summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
Diffstat (limited to 'share')
-rw-r--r--share/Makefile80
-rw-r--r--share/Makefile.inc6
-rw-r--r--share/colldef/Makefile112
-rw-r--r--share/colldef/README6
-rw-r--r--share/colldef/be_BY.CP1131.src41
-rw-r--r--share/colldef/be_BY.CP1251.src37
-rw-r--r--share/colldef/be_BY.ISO8859-5.src39
-rw-r--r--share/colldef/bg_BG.CP1251.src43
-rw-r--r--share/colldef/ca_ES.ISO8859-1.src38
-rw-r--r--share/colldef/ca_ES.ISO8859-15.src38
-rw-r--r--share/colldef/cs_CZ.ISO8859-2.src52
-rw-r--r--share/colldef/de_DE.ISO8859-1.src39
-rw-r--r--share/colldef/de_DE.ISO8859-15.src39
-rw-r--r--share/colldef/el_GR.ISO8859-7.src34
-rw-r--r--share/colldef/en_DK.example3073
-rw-r--r--share/colldef/es_ES.ISO8859-1.src38
-rw-r--r--share/colldef/es_ES.ISO8859-15.src38
-rw-r--r--share/colldef/et_EE.ISO8859-15.src62
-rw-r--r--share/colldef/hi_IN.ISCII-DEV.src25
-rw-r--r--share/colldef/hy_AM.ARMSCII-8.src31
-rw-r--r--share/colldef/is_IS.ISO8859-1.src38
-rw-r--r--share/colldef/is_IS.ISO8859-15.src38
-rw-r--r--share/colldef/kk_KZ.PT154.src41
-rw-r--r--share/colldef/la_LN.ISO8859-1.src38
-rw-r--r--share/colldef/la_LN.ISO8859-15.src38
-rw-r--r--share/colldef/la_LN.ISO8859-2.src36
-rw-r--r--share/colldef/la_LN.ISO8859-4.src36
-rw-r--r--share/colldef/la_LN.US-ASCII.src6
-rw-r--r--share/colldef/lt_LT.ISO8859-13.src37
-rw-r--r--share/colldef/lt_LT.ISO8859-4.src36
-rw-r--r--share/colldef/map.ARMSCII-8144
-rw-r--r--share/colldef/map.CP1131175
-rw-r--r--share/colldef/map.CP1251257
-rw-r--r--share/colldef/map.CP866175
-rw-r--r--share/colldef/map.ISCII-DEV164
-rw-r--r--share/colldef/map.ISO8859-1174
-rw-r--r--share/colldef/map.ISO8859-13175
-rw-r--r--share/colldef/map.ISO8859-15174
-rw-r--r--share/colldef/map.ISO8859-2174
-rw-r--r--share/colldef/map.ISO8859-4175
-rw-r--r--share/colldef/map.ISO8859-5175
-rw-r--r--share/colldef/map.ISO8859-7175
-rw-r--r--share/colldef/map.ISO8859-9175
-rw-r--r--share/colldef/map.KOI8-R175
-rw-r--r--share/colldef/map.KOI8-U175
-rw-r--r--share/colldef/map.PT154258
-rw-r--r--share/colldef/no_NO.ISO8859-1.src42
-rw-r--r--share/colldef/no_NO.ISO8859-15.src42
-rw-r--r--share/colldef/pl_PL.ISO8859-2.src37
-rw-r--r--share/colldef/ru_RU.CP1251.src43
-rw-r--r--share/colldef/ru_RU.CP866.src40
-rw-r--r--share/colldef/ru_RU.ISO8859-5.src39
-rw-r--r--share/colldef/ru_RU.KOI8-R.src39
-rw-r--r--share/colldef/sl_SI.ISO8859-2.src39
-rw-r--r--share/colldef/sr_YU.ISO8859-5.src38
-rw-r--r--share/colldef/sv_SE.ISO8859-1.src40
-rw-r--r--share/colldef/sv_SE.ISO8859-15.src40
-rw-r--r--share/colldef/tr_TR.ISO8859-9.src36
-rw-r--r--share/colldef/uk_UA.CP1251.src42
-rw-r--r--share/colldef/uk_UA.ISO8859-5.src37
-rw-r--r--share/colldef/uk_UA.KOI8-U.src39
-rw-r--r--share/dict/Makefile11
-rw-r--r--share/dict/README39
-rw-r--r--share/dict/freebsd283
-rw-r--r--share/dict/propernames1308
-rw-r--r--share/dict/web2235882
-rw-r--r--share/dict/web2a76205
-rw-r--r--share/doc/IPv6/IMPLEMENTATION2392
-rw-r--r--share/doc/IPv6/Makefile7
-rw-r--r--share/doc/Makefile16
-rw-r--r--share/doc/bind9/Makefile26
-rw-r--r--share/doc/legal/Makefile7
-rw-r--r--share/doc/legal/intel_ipw/Makefile7
-rw-r--r--share/doc/legal/intel_iwi/Makefile7
-rw-r--r--share/doc/legal/intel_wpi/Makefile8
-rw-r--r--share/doc/papers/Makefile19
-rw-r--r--share/doc/papers/beyond4.3/Makefile9
-rw-r--r--share/doc/papers/beyond4.3/beyond43.ms519
-rw-r--r--share/doc/papers/bufbio/Makefile14
-rw-r--r--share/doc/papers/bufbio/bio.ms830
-rw-r--r--share/doc/papers/bufbio/bufsize.eps479
-rw-r--r--share/doc/papers/contents/Makefile8
-rw-r--r--share/doc/papers/contents/contents.ms218
-rw-r--r--share/doc/papers/devfs/Makefile9
-rw-r--r--share/doc/papers/devfs/paper.me1277
-rw-r--r--share/doc/papers/diskperf/Makefile11
-rw-r--r--share/doc/papers/diskperf/abs.ms176
-rw-r--r--share/doc/papers/diskperf/appendix.ms102
-rw-r--r--share/doc/papers/diskperf/conclusions.ms128
-rw-r--r--share/doc/papers/diskperf/equip.ms177
-rw-r--r--share/doc/papers/diskperf/methodology.ms111
-rw-r--r--share/doc/papers/diskperf/motivation.ms95
-rw-r--r--share/doc/papers/diskperf/results.ms337
-rw-r--r--share/doc/papers/diskperf/tests.ms109
-rw-r--r--share/doc/papers/fsinterface/Makefile9
-rw-r--r--share/doc/papers/fsinterface/abstract.ms73
-rw-r--r--share/doc/papers/fsinterface/fsinterface.ms1176
-rw-r--r--share/doc/papers/fsinterface/slides.t318
-rw-r--r--share/doc/papers/hwpmc/Makefile8
-rw-r--r--share/doc/papers/hwpmc/hwpmc.ms34
-rw-r--r--share/doc/papers/jail/Makefile14
-rw-r--r--share/doc/papers/jail/future.ms104
-rw-r--r--share/doc/papers/jail/implementation.ms126
-rw-r--r--share/doc/papers/jail/jail01.eps234
-rw-r--r--share/doc/papers/jail/jail01.fig86
-rw-r--r--share/doc/papers/jail/mgt.ms218
-rw-r--r--share/doc/papers/jail/paper.ms438
-rw-r--r--share/doc/papers/kernmalloc/Makefile18
-rw-r--r--share/doc/papers/kernmalloc/alloc.fig115
-rw-r--r--share/doc/papers/kernmalloc/appendix.t137
-rw-r--r--share/doc/papers/kernmalloc/kernmalloc.t653
-rw-r--r--share/doc/papers/kernmalloc/spell.ok57
-rw-r--r--share/doc/papers/kernmalloc/usage.tbl75
-rw-r--r--share/doc/papers/kerntune/0.t129
-rw-r--r--share/doc/papers/kerntune/1.t49
-rw-r--r--share/doc/papers/kerntune/2.t234
-rw-r--r--share/doc/papers/kerntune/3.t290
-rw-r--r--share/doc/papers/kerntune/4.t99
-rw-r--r--share/doc/papers/kerntune/Makefile14
-rw-r--r--share/doc/papers/kerntune/fig2.pic57
-rw-r--r--share/doc/papers/malloc/Makefile10
-rw-r--r--share/doc/papers/malloc/abs.ms35
-rw-r--r--share/doc/papers/malloc/alternatives.ms45
-rw-r--r--share/doc/papers/malloc/conclusion.ms48
-rw-r--r--share/doc/papers/malloc/implementation.ms225
-rw-r--r--share/doc/papers/malloc/intro.ms74
-rw-r--r--share/doc/papers/malloc/kernel.ms56
-rw-r--r--share/doc/papers/malloc/malloc.ms72
-rw-r--r--share/doc/papers/malloc/performance.ms113
-rw-r--r--share/doc/papers/malloc/problems.ms54
-rw-r--r--share/doc/papers/newvm/0.t86
-rw-r--r--share/doc/papers/newvm/1.t378
-rw-r--r--share/doc/papers/newvm/Makefile9
-rw-r--r--share/doc/papers/newvm/a.t240
-rw-r--r--share/doc/papers/newvm/spell.ok56
-rw-r--r--share/doc/papers/relengr/0.t92
-rw-r--r--share/doc/papers/relengr/1.t69
-rw-r--r--share/doc/papers/relengr/2.t146
-rw-r--r--share/doc/papers/relengr/3.t390
-rw-r--r--share/doc/papers/relengr/Makefile15
-rw-r--r--share/doc/papers/relengr/ref.bib26
-rw-r--r--share/doc/papers/relengr/spell.ok15
-rw-r--r--share/doc/papers/sysperf/0.t247
-rw-r--r--share/doc/papers/sysperf/1.t81
-rw-r--r--share/doc/papers/sysperf/2.t258
-rw-r--r--share/doc/papers/sysperf/3.t694
-rw-r--r--share/doc/papers/sysperf/4.t776
-rw-r--r--share/doc/papers/sysperf/5.t287
-rw-r--r--share/doc/papers/sysperf/6.t70
-rw-r--r--share/doc/papers/sysperf/7.t164
-rw-r--r--share/doc/papers/sysperf/Makefile19
-rw-r--r--share/doc/papers/sysperf/a1.t668
-rw-r--r--share/doc/papers/sysperf/a2.t117
-rw-r--r--share/doc/papers/timecounter/Makefile20
-rw-r--r--share/doc/papers/timecounter/fig1.eps227
-rw-r--r--share/doc/papers/timecounter/fig2.eps150
-rw-r--r--share/doc/papers/timecounter/fig3.eps126
-rw-r--r--share/doc/papers/timecounter/fig4.eps259
-rw-r--r--share/doc/papers/timecounter/fig5.eps211
-rw-r--r--share/doc/papers/timecounter/gps.ps1488
-rw-r--r--share/doc/papers/timecounter/intr.ps1501
-rw-r--r--share/doc/papers/timecounter/timecounter.ms1076
-rw-r--r--share/doc/papers/timecounter/tmac.usenix953
-rw-r--r--share/doc/psd/01.cacm/Makefile16
-rw-r--r--share/doc/psd/01.cacm/p.mac31
-rw-r--r--share/doc/psd/01.cacm/p1567
-rw-r--r--share/doc/psd/01.cacm/p2448
-rw-r--r--share/doc/psd/01.cacm/p3190
-rw-r--r--share/doc/psd/01.cacm/p4524
-rw-r--r--share/doc/psd/01.cacm/p5235
-rw-r--r--share/doc/psd/01.cacm/p672
-rw-r--r--share/doc/psd/01.cacm/ref.bib113
-rw-r--r--share/doc/psd/02.implement/Makefile17
-rw-r--r--share/doc/psd/02.implement/fig1.pic100
-rw-r--r--share/doc/psd/02.implement/fig2.pic110
-rw-r--r--share/doc/psd/02.implement/implement1282
-rw-r--r--share/doc/psd/02.implement/ref.bib54
-rw-r--r--share/doc/psd/03.iosys/Makefile8
-rw-r--r--share/doc/psd/03.iosys/iosys1086
-rw-r--r--share/doc/psd/04.uprog/Makefile8
-rw-r--r--share/doc/psd/04.uprog/p.mac71
-rw-r--r--share/doc/psd/04.uprog/p082
-rw-r--r--share/doc/psd/04.uprog/p188
-rw-r--r--share/doc/psd/04.uprog/p2275
-rw-r--r--share/doc/psd/04.uprog/p3469
-rw-r--r--share/doc/psd/04.uprog/p4600
-rw-r--r--share/doc/psd/04.uprog/p5577
-rw-r--r--share/doc/psd/04.uprog/p6361
-rw-r--r--share/doc/psd/04.uprog/p862
-rw-r--r--share/doc/psd/04.uprog/p9680
-rw-r--r--share/doc/psd/05.sysman/0.t292
-rw-r--r--share/doc/psd/05.sysman/1.0.t56
-rw-r--r--share/doc/psd/05.sysman/1.1.t216
-rw-r--r--share/doc/psd/05.sysman/1.2.t273
-rw-r--r--share/doc/psd/05.sysman/1.3.t254
-rw-r--r--share/doc/psd/05.sysman/1.4.t137
-rw-r--r--share/doc/psd/05.sysman/1.5.t225
-rw-r--r--share/doc/psd/05.sysman/1.6.t135
-rw-r--r--share/doc/psd/05.sysman/1.7.t100
-rw-r--r--share/doc/psd/05.sysman/2.0.t83
-rw-r--r--share/doc/psd/05.sysman/2.1.t138
-rw-r--r--share/doc/psd/05.sysman/2.2.t470
-rw-r--r--share/doc/psd/05.sysman/2.3.t413
-rw-r--r--share/doc/psd/05.sysman/2.4.t174
-rw-r--r--share/doc/psd/05.sysman/2.5.t39
-rw-r--r--share/doc/psd/05.sysman/Makefile10
-rw-r--r--share/doc/psd/05.sysman/a.t235
-rw-r--r--share/doc/psd/05.sysman/spell.ok332
-rw-r--r--share/doc/psd/06.Clang/Clang.ms4575
-rw-r--r--share/doc/psd/06.Clang/Makefile9
-rw-r--r--share/doc/psd/12.make/Makefile9
-rw-r--r--share/doc/psd/13.rcs/Makefile6
-rw-r--r--share/doc/psd/13.rcs/Makefile.inc5
-rw-r--r--share/doc/psd/13.rcs/rcs/Makefile7
-rw-r--r--share/doc/psd/13.rcs/rcs_func/Makefile6
-rw-r--r--share/doc/psd/15.yacc/Makefile16
-rw-r--r--share/doc/psd/15.yacc/ref.bib71
-rw-r--r--share/doc/psd/15.yacc/ss..94
-rw-r--r--share/doc/psd/15.yacc/ss0238
-rw-r--r--share/doc/psd/15.yacc/ss1175
-rw-r--r--share/doc/psd/15.yacc/ss2190
-rw-r--r--share/doc/psd/15.yacc/ss3141
-rw-r--r--share/doc/psd/15.yacc/ss4367
-rw-r--r--share/doc/psd/15.yacc/ss5339
-rw-r--r--share/doc/psd/15.yacc/ss6183
-rw-r--r--share/doc/psd/15.yacc/ss7161
-rw-r--r--share/doc/psd/15.yacc/ss8130
-rw-r--r--share/doc/psd/15.yacc/ss9206
-rw-r--r--share/doc/psd/15.yacc/ssA221
-rw-r--r--share/doc/psd/15.yacc/ssB63
-rw-r--r--share/doc/psd/15.yacc/ssa150
-rw-r--r--share/doc/psd/15.yacc/ssb147
-rw-r--r--share/doc/psd/15.yacc/ssc347
-rw-r--r--share/doc/psd/15.yacc/ssd76
-rw-r--r--share/doc/psd/16.lex/Makefile9
-rw-r--r--share/doc/psd/16.lex/lex.ms2345
-rw-r--r--share/doc/psd/17.m4/Makefile8
-rw-r--r--share/doc/psd/17.m4/m4.ms973
-rw-r--r--share/doc/psd/18.gprof/Makefile15
-rw-r--r--share/doc/psd/20.ipctut/Makefile14
-rw-r--r--share/doc/psd/20.ipctut/dgramread.c83
-rw-r--r--share/doc/psd/20.ipctut/dgramsend.c80
-rw-r--r--share/doc/psd/20.ipctut/fig2.pic77
-rw-r--r--share/doc/psd/20.ipctut/fig2.xfig100
-rw-r--r--share/doc/psd/20.ipctut/fig3.pic69
-rw-r--r--share/doc/psd/20.ipctut/fig3.xfig100
-rw-r--r--share/doc/psd/20.ipctut/fig8.pic79
-rw-r--r--share/doc/psd/20.ipctut/fig8.xfig116
-rw-r--r--share/doc/psd/20.ipctut/pipe.c74
-rw-r--r--share/doc/psd/20.ipctut/socketpair.c77
-rw-r--r--share/doc/psd/20.ipctut/strchkread.c106
-rw-r--r--share/doc/psd/20.ipctut/streamread.c102
-rw-r--r--share/doc/psd/20.ipctut/streamwrite.c81
-rw-r--r--share/doc/psd/20.ipctut/tutor.me939
-rw-r--r--share/doc/psd/20.ipctut/udgramread.c80
-rw-r--r--share/doc/psd/20.ipctut/udgramsend.c68
-rw-r--r--share/doc/psd/20.ipctut/ustreamread.c96
-rw-r--r--share/doc/psd/20.ipctut/ustreamwrite.c71
-rw-r--r--share/doc/psd/21.ipc/0.t93
-rw-r--r--share/doc/psd/21.ipc/1.t106
-rw-r--r--share/doc/psd/21.ipc/2.t714
-rw-r--r--share/doc/psd/21.ipc/3.t411
-rw-r--r--share/doc/psd/21.ipc/4.t515
-rw-r--r--share/doc/psd/21.ipc/5.t1668
-rw-r--r--share/doc/psd/21.ipc/Makefile9
-rw-r--r--share/doc/psd/21.ipc/spell.ok347
-rw-r--r--share/doc/psd/22.rpcgen/Makefile9
-rw-r--r--share/doc/psd/23.rpc/Makefile10
-rw-r--r--share/doc/psd/24.xdr/Makefile9
-rw-r--r--share/doc/psd/25.xdrrfc/Makefile9
-rw-r--r--share/doc/psd/26.rpcrfc/Makefile9
-rw-r--r--share/doc/psd/27.nfsrpc/Makefile9
-rw-r--r--share/doc/psd/28.cvs/Makefile10
-rw-r--r--share/doc/psd/Makefile41
-rw-r--r--share/doc/psd/contents/Makefile8
-rw-r--r--share/doc/psd/contents/contents.ms289
-rw-r--r--share/doc/psd/title/Makefile7
-rw-r--r--share/doc/psd/title/Title132
-rw-r--r--share/doc/smm/01.setup/0.t133
-rw-r--r--share/doc/smm/01.setup/1.t172
-rw-r--r--share/doc/smm/01.setup/2.t1659
-rw-r--r--share/doc/smm/01.setup/3.t1996
-rw-r--r--share/doc/smm/01.setup/4.t713
-rw-r--r--share/doc/smm/01.setup/5.t586
-rw-r--r--share/doc/smm/01.setup/6.t663
-rw-r--r--share/doc/smm/01.setup/Makefile9
-rw-r--r--share/doc/smm/01.setup/spell.ok618
-rw-r--r--share/doc/smm/01.setup/stubs6
-rw-r--r--share/doc/smm/02.config/Makefile10
-rw-r--r--share/doc/smm/03.fsck/Makefile9
-rw-r--r--share/doc/smm/04.quotas/Makefile8
-rw-r--r--share/doc/smm/04.quotas/quotas.ms318
-rw-r--r--share/doc/smm/05.fastfs/0.t159
-rw-r--r--share/doc/smm/05.fastfs/1.t112
-rw-r--r--share/doc/smm/05.fastfs/2.t143
-rw-r--r--share/doc/smm/05.fastfs/3.t598
-rw-r--r--share/doc/smm/05.fastfs/4.t252
-rw-r--r--share/doc/smm/05.fastfs/5.t293
-rw-r--r--share/doc/smm/05.fastfs/6.t159
-rw-r--r--share/doc/smm/05.fastfs/Makefile10
-rw-r--r--share/doc/smm/06.nfs/0.t75
-rw-r--r--share/doc/smm/06.nfs/1.t555
-rw-r--r--share/doc/smm/06.nfs/2.t532
-rw-r--r--share/doc/smm/06.nfs/Makefile8
-rw-r--r--share/doc/smm/06.nfs/ref.t123
-rw-r--r--share/doc/smm/08.sendmailop/Makefile11
-rw-r--r--share/doc/smm/11.timedop/Makefile9
-rw-r--r--share/doc/smm/12.timed/Makefile12
-rw-r--r--share/doc/smm/18.net/0.t184
-rw-r--r--share/doc/smm/18.net/1.t66
-rw-r--r--share/doc/smm/18.net/2.t85
-rw-r--r--share/doc/smm/18.net/3.t59
-rw-r--r--share/doc/smm/18.net/4.t67
-rw-r--r--share/doc/smm/18.net/5.t184
-rw-r--r--share/doc/smm/18.net/6.t664
-rw-r--r--share/doc/smm/18.net/7.t258
-rw-r--r--share/doc/smm/18.net/8.t166
-rw-r--r--share/doc/smm/18.net/9.t124
-rw-r--r--share/doc/smm/18.net/Makefile8
-rw-r--r--share/doc/smm/18.net/a.t219
-rw-r--r--share/doc/smm/18.net/b.t145
-rw-r--r--share/doc/smm/18.net/c.t151
-rw-r--r--share/doc/smm/18.net/d.t73
-rw-r--r--share/doc/smm/18.net/e.t129
-rw-r--r--share/doc/smm/18.net/f.t117
-rw-r--r--share/doc/smm/18.net/spell.ok307
-rw-r--r--share/doc/smm/Makefile33
-rw-r--r--share/doc/smm/contents/Makefile8
-rw-r--r--share/doc/smm/contents/contents.ms195
-rw-r--r--share/doc/smm/title/Makefile7
-rw-r--r--share/doc/smm/title/Title146
-rw-r--r--share/doc/usd/04.csh/Makefile10
-rw-r--r--share/doc/usd/07.mail/Makefile11
-rw-r--r--share/doc/usd/10.exref/Makefile6
-rw-r--r--share/doc/usd/10.exref/Makefile.inc5
-rw-r--r--share/doc/usd/10.exref/exref/Makefile5
-rw-r--r--share/doc/usd/10.exref/summary/Makefile7
-rw-r--r--share/doc/usd/11.vitut/Makefile18
-rw-r--r--share/doc/usd/12.vi/Makefile6
-rw-r--r--share/doc/usd/12.vi/Makefile.inc5
-rw-r--r--share/doc/usd/12.vi/summary/Makefile7
-rw-r--r--share/doc/usd/12.vi/vi/Makefile6
-rw-r--r--share/doc/usd/12.vi/viapwh/Makefile6
-rw-r--r--share/doc/usd/13.viref/Makefile35
-rw-r--r--share/doc/usd/18.msdiffs/Makefile8
-rw-r--r--share/doc/usd/18.msdiffs/ms.diffs288
-rw-r--r--share/doc/usd/19.memacros/Makefile18
-rw-r--r--share/doc/usd/20.meref/Makefile18
-rw-r--r--share/doc/usd/21.troff/Makefile8
-rw-r--r--share/doc/usd/21.troff/m.mac288
-rw-r--r--share/doc/usd/21.troff/m0290
-rw-r--r--share/doc/usd/21.troff/m0a607
-rw-r--r--share/doc/usd/21.troff/m1746
-rw-r--r--share/doc/usd/21.troff/m2400
-rw-r--r--share/doc/usd/21.troff/m3521
-rw-r--r--share/doc/usd/21.troff/m4416
-rw-r--r--share/doc/usd/21.troff/m5462
-rw-r--r--share/doc/usd/21.troff/table1129
-rw-r--r--share/doc/usd/21.troff/table2253
-rw-r--r--share/doc/usd/22.trofftut/Makefile45
-rw-r--r--share/doc/usd/22.trofftut/tt.mac111
-rw-r--r--share/doc/usd/22.trofftut/tt00122
-rw-r--r--share/doc/usd/22.trofftut/tt01223
-rw-r--r--share/doc/usd/22.trofftut/tt02244
-rw-r--r--share/doc/usd/22.trofftut/tt03240
-rw-r--r--share/doc/usd/22.trofftut/tt04189
-rw-r--r--share/doc/usd/22.trofftut/tt05130
-rw-r--r--share/doc/usd/22.trofftut/tt06351
-rw-r--r--share/doc/usd/22.trofftut/tt07124
-rw-r--r--share/doc/usd/22.trofftut/tt08199
-rw-r--r--share/doc/usd/22.trofftut/tt09322
-rw-r--r--share/doc/usd/22.trofftut/tt10256
-rw-r--r--share/doc/usd/22.trofftut/tt11233
-rw-r--r--share/doc/usd/22.trofftut/tt12164
-rw-r--r--share/doc/usd/22.trofftut/tt1399
-rw-r--r--share/doc/usd/22.trofftut/tt14155
-rw-r--r--share/doc/usd/22.trofftut/ttack100
-rw-r--r--share/doc/usd/22.trofftut/ttcharset135
-rw-r--r--share/doc/usd/22.trofftut/ttindex200
-rw-r--r--share/doc/usd/Makefile21
-rw-r--r--share/doc/usd/contents/Makefile8
-rw-r--r--share/doc/usd/contents/contents.ms312
-rw-r--r--share/doc/usd/title/Makefile7
-rw-r--r--share/doc/usd/title/Title121
-rw-r--r--share/examples/BSD_daemon/FreeBSD.pfa32
-rw-r--r--share/examples/BSD_daemon/README76
-rw-r--r--share/examples/BSD_daemon/beastie.eps1507
-rw-r--r--share/examples/BSD_daemon/beastie.fig269
-rw-r--r--share/examples/BSD_daemon/eps.patch36
-rw-r--r--share/examples/BSD_daemon/poster.sh65
-rw-r--r--share/examples/FreeBSD_version/FreeBSD_version.c21
-rw-r--r--share/examples/FreeBSD_version/Makefile8
-rw-r--r--share/examples/FreeBSD_version/README4
-rw-r--r--share/examples/IPv6/USAGE529
-rw-r--r--share/examples/Makefile253
-rw-r--r--share/examples/autofs/driver/Makefile18
-rw-r--r--share/examples/autofs/driver/autodriver.c538
-rw-r--r--share/examples/autofs/driver/autotab7
-rw-r--r--share/examples/bootforth/README35
-rw-r--r--share/examples/bootforth/boot.4th22
-rw-r--r--share/examples/bootforth/frames.4th112
-rw-r--r--share/examples/bootforth/loader.rc34
-rw-r--r--share/examples/bootforth/menu.4th99
-rw-r--r--share/examples/bootforth/menuconf.4th110
-rw-r--r--share/examples/bootforth/screen.4th36
-rw-r--r--share/examples/cvsup/README37
-rw-r--r--share/examples/cvsup/cvs-supfile207
-rw-r--r--share/examples/cvsup/doc-supfile67
-rw-r--r--share/examples/cvsup/gnats-supfile63
-rw-r--r--share/examples/cvsup/ports-supfile137
-rw-r--r--share/examples/cvsup/refuse33
-rw-r--r--share/examples/cvsup/refuse.README65
-rw-r--r--share/examples/cvsup/stable-supfile115
-rw-r--r--share/examples/cvsup/standard-supfile94
-rw-r--r--share/examples/cvsup/www-supfile61
-rw-r--r--share/examples/diskless/ME52
-rw-r--r--share/examples/diskless/README.BOOTP172
-rw-r--r--share/examples/diskless/README.TEMPLATING301
-rwxr-xr-xshare/examples/diskless/clone_root138
-rw-r--r--share/examples/drivers/README43
-rwxr-xr-xshare/examples/drivers/make_device_driver.sh1015
-rw-r--r--share/examples/drivers/make_pseudo_driver.sh443
-rw-r--r--share/examples/etc/README.examples75
-rw-r--r--share/examples/etc/bsd-style-copyright27
-rw-r--r--share/examples/etc/make.conf272
-rw-r--r--share/examples/find_interface/Makefile6
-rw-r--r--share/examples/find_interface/README9
-rw-r--r--share/examples/find_interface/find_interface.c111
-rw-r--r--share/examples/hwpmc/README8
-rw-r--r--share/examples/ibcs2/README3
-rw-r--r--share/examples/ibcs2/hello.uu677
-rw-r--r--share/examples/ipfilter/Makefile33
-rw-r--r--share/examples/ipfilter/README15
-rw-r--r--share/examples/ipfilter/example.1462
-rw-r--r--share/examples/ipfilter/examples.txt515
-rw-r--r--share/examples/ipfilter/firewall.136
-rw-r--r--share/examples/ipfilter/firewall.270
-rw-r--r--share/examples/ipfilter/ipf-howto.txt3168
-rw-r--r--share/examples/ipfilter/ipf.conf.permissive30
-rw-r--r--share/examples/ipfilter/ipf.conf.restrictive77
-rw-r--r--share/examples/ipfilter/ipf.conf.sample19
-rw-r--r--share/examples/ipfilter/ipnat.conf.sample3
-rw-r--r--share/examples/ipfilter/rules.txt182
-rwxr-xr-xshare/examples/ipfw/change_rules.sh153
-rw-r--r--share/examples/kld/Makefile72
-rw-r--r--share/examples/kld/cdev/Makefile7
-rw-r--r--share/examples/kld/cdev/README131
-rw-r--r--share/examples/kld/cdev/module/Makefile7
-rw-r--r--share/examples/kld/cdev/module/cdev.c182
-rw-r--r--share/examples/kld/cdev/module/cdev.h81
-rw-r--r--share/examples/kld/cdev/module/cdevmod.c139
-rw-r--r--share/examples/kld/cdev/test/Makefile94
-rw-r--r--share/examples/kld/cdev/test/testcdev.c123
-rw-r--r--share/examples/kld/dyn_sysctl/Makefile6
-rw-r--r--share/examples/kld/dyn_sysctl/README8
-rw-r--r--share/examples/kld/dyn_sysctl/dyn_sysctl.c168
-rw-r--r--share/examples/kld/firmware/Makefile5
-rw-r--r--share/examples/kld/firmware/README18
-rw-r--r--share/examples/kld/firmware/fwconsumer/Makefile6
-rw-r--r--share/examples/kld/firmware/fwconsumer/fw_consumer.c78
-rw-r--r--share/examples/kld/firmware/fwimage/Makefile6
-rw-r--r--share/examples/kld/firmware/fwimage/firmware.imgbin0 -> 537 bytes
-rw-r--r--share/examples/kld/syscall/Makefile7
-rw-r--r--share/examples/kld/syscall/module/Makefile7
-rw-r--r--share/examples/kld/syscall/module/syscall.c87
-rw-r--r--share/examples/kld/syscall/test/Makefile7
-rw-r--r--share/examples/kld/syscall/test/call.c54
-rw-r--r--share/examples/libvgl/Makefile8
-rw-r--r--share/examples/libvgl/demo.c123
-rw-r--r--share/examples/mdoc/POSIX-copyright36
-rw-r--r--share/examples/mdoc/deshallify.sh76
-rw-r--r--share/examples/mdoc/example.1155
-rw-r--r--share/examples/mdoc/example.3335
-rw-r--r--share/examples/mdoc/example.4127
-rw-r--r--share/examples/mdoc/example.9343
-rw-r--r--share/examples/netgraph/ether.bridge170
-rw-r--r--share/examples/netgraph/frame_relay46
-rw-r--r--share/examples/netgraph/ngctl173
-rw-r--r--share/examples/netgraph/raw16
-rw-r--r--share/examples/netgraph/udp.tunnel53
-rw-r--r--share/examples/nwclient/dot.nwfsrc78
-rw-r--r--share/examples/nwclient/nwfs.sh.sample34
-rw-r--r--share/examples/perfmon/Makefile8
-rw-r--r--share/examples/perfmon/README25
-rw-r--r--share/examples/perfmon/perfmon.c195
-rw-r--r--share/examples/pf/Makefile12
-rw-r--r--share/examples/pf/ackpri31
-rw-r--r--share/examples/pf/faq-example151
-rw-r--r--share/examples/pf/faq-example289
-rw-r--r--share/examples/pf/faq-example3117
-rw-r--r--share/examples/pf/pf.conf34
-rw-r--r--share/examples/pf/queue121
-rw-r--r--share/examples/pf/queue229
-rw-r--r--share/examples/pf/queue316
-rw-r--r--share/examples/pf/queue420
-rw-r--r--share/examples/pf/spamd8
-rw-r--r--share/examples/portal/README65
-rw-r--r--share/examples/portal/portal.conf3
-rw-r--r--share/examples/ppi/Makefile8
-rw-r--r--share/examples/ppi/ppilcd.c438
-rwxr-xr-xshare/examples/ppp/chap-auth97
-rwxr-xr-xshare/examples/ppp/login-auth74
-rw-r--r--share/examples/ppp/ppp.conf.sample789
-rw-r--r--share/examples/ppp/ppp.conf.span-isp194
-rw-r--r--share/examples/ppp/ppp.conf.span-isp.working107
-rw-r--r--share/examples/ppp/ppp.linkdown.sample34
-rw-r--r--share/examples/ppp/ppp.linkdown.span-isp17
-rw-r--r--share/examples/ppp/ppp.linkdown.span-isp.working17
-rw-r--r--share/examples/ppp/ppp.linkup.sample49
-rw-r--r--share/examples/ppp/ppp.linkup.span-isp17
-rw-r--r--share/examples/ppp/ppp.linkup.span-isp.working17
-rw-r--r--share/examples/ppp/ppp.secret.sample41
-rw-r--r--share/examples/ppp/ppp.secret.span-isp6
-rw-r--r--share/examples/ppp/ppp.secret.span-isp.working9
-rw-r--r--share/examples/pppd/auth-down.sample7
-rw-r--r--share/examples/pppd/auth-up.sample7
-rw-r--r--share/examples/pppd/chap-secrets.sample17
-rw-r--r--share/examples/pppd/chat.sh.sample33
-rw-r--r--share/examples/pppd/ip-down.sample7
-rw-r--r--share/examples/pppd/ip-up.sample8
-rw-r--r--share/examples/pppd/options.sample16
-rw-r--r--share/examples/pppd/pap-secrets.sample17
-rw-r--r--share/examples/pppd/ppp.deny.sample27
-rw-r--r--share/examples/pppd/ppp.shells.sample14
-rw-r--r--share/examples/printing/README7
-rw-r--r--share/examples/printing/diablo-if-net7
-rw-r--r--share/examples/printing/hpdf59
-rw-r--r--share/examples/printing/hpif11
-rw-r--r--share/examples/printing/hpof8
-rw-r--r--share/examples/printing/hprf8
-rw-r--r--share/examples/printing/hpvf10
-rw-r--r--share/examples/printing/if-simple9
-rw-r--r--share/examples/printing/if-simpleX10
-rw-r--r--share/examples/printing/ifhp32
-rw-r--r--share/examples/printing/make-ps-header79
-rw-r--r--share/examples/printing/netprint24
-rw-r--r--share/examples/printing/psdf8
-rw-r--r--share/examples/printing/psdfX31
-rw-r--r--share/examples/printing/psif23
-rw-r--r--share/examples/printing/pstf6
-rw-r--r--share/examples/printing/pstfX6
-rw-r--r--share/examples/scsi_target/Makefile10
-rw-r--r--share/examples/scsi_target/scsi_cmds.c813
-rw-r--r--share/examples/scsi_target/scsi_target.8158
-rw-r--r--share/examples/scsi_target/scsi_target.c1001
-rw-r--r--share/examples/scsi_target/scsi_target.h129
-rw-r--r--share/examples/ses/Makefile38
-rw-r--r--share/examples/ses/Makefile.inc42
-rw-r--r--share/examples/ses/getencstat/Makefile41
-rw-r--r--share/examples/ses/getencstat/getencstat.083
-rw-r--r--share/examples/ses/sesd/Makefile41
-rw-r--r--share/examples/ses/sesd/sesd.085
-rw-r--r--share/examples/ses/setencstat/Makefile41
-rw-r--r--share/examples/ses/setencstat/setencstat.073
-rw-r--r--share/examples/ses/setobjstat/Makefile41
-rw-r--r--share/examples/ses/setobjstat/setobjstat.070
-rw-r--r--share/examples/ses/srcs/chpmon.c128
-rw-r--r--share/examples/ses/srcs/eltsub.c167
-rw-r--r--share/examples/ses/srcs/getencstat.c155
-rw-r--r--share/examples/ses/srcs/getnobj.c66
-rw-r--r--share/examples/ses/srcs/getobjmap.c87
-rw-r--r--share/examples/ses/srcs/getobjstat.c76
-rw-r--r--share/examples/ses/srcs/inienc.c61
-rw-r--r--share/examples/ses/srcs/sesd.c165
-rw-r--r--share/examples/ses/srcs/setencstat.c68
-rw-r--r--share/examples/ses/srcs/setobjstat.c83
-rwxr-xr-xshare/examples/slattach/unit-command.sh18
-rw-r--r--share/examples/sliplogin/slip.hosts16
-rw-r--r--share/examples/sliplogin/slip.login18
-rw-r--r--share/examples/sliplogin/slip.logout14
-rw-r--r--share/examples/sliplogin/slip.slparms12
-rw-r--r--share/examples/smbfs/Makefile11
-rw-r--r--share/examples/smbfs/print/Makefile9
-rwxr-xr-xshare/examples/startslip/sldown.sh3
-rwxr-xr-xshare/examples/startslip/slip.sh5
-rwxr-xr-xshare/examples/startslip/slup.sh16
-rw-r--r--share/examples/sunrpc/Makefile25
-rw-r--r--share/examples/sunrpc/dir/Makefile26
-rw-r--r--share/examples/sunrpc/dir/dir.x37
-rw-r--r--share/examples/sunrpc/dir/dir_proc.c55
-rw-r--r--share/examples/sunrpc/dir/rls.c81
-rw-r--r--share/examples/sunrpc/msg/Makefile36
-rw-r--r--share/examples/sunrpc/msg/msg.x9
-rw-r--r--share/examples/sunrpc/msg/msg_proc.c30
-rw-r--r--share/examples/sunrpc/msg/printmsg.c45
-rw-r--r--share/examples/sunrpc/msg/rprintmsg.c74
-rw-r--r--share/examples/sunrpc/sort/Makefile36
-rw-r--r--share/examples/sunrpc/sort/rsort.c43
-rw-r--r--share/examples/sunrpc/sort/sort.x19
-rw-r--r--share/examples/sunrpc/sort/sort_proc.c27
-rw-r--r--share/examples/witness/lockgraphs.sh24
-rw-r--r--share/info/Makefile22
-rw-r--r--share/info/dir-tmpl16
-rw-r--r--share/man/Makefile18
-rw-r--r--share/man/man1/Makefile95
-rw-r--r--share/man/man1/builtin.1329
-rw-r--r--share/man/man1/intro.184
-rw-r--r--share/man/man3/Makefile272
-rw-r--r--share/man/man3/assert.394
-rw-r--r--share/man/man3/bitstring.3190
-rw-r--r--share/man/man3/end.383
-rw-r--r--share/man/man3/fpgetround.3179
-rw-r--r--share/man/man3/intro.3168
-rw-r--r--share/man/man3/makedev.390
-rw-r--r--share/man/man3/pthread.3548
-rw-r--r--share/man/man3/pthread_atfork.3117
-rw-r--r--share/man/man3/pthread_attr.3238
-rw-r--r--share/man/man3/pthread_attr_get_np.3116
-rw-r--r--share/man/man3/pthread_attr_setcreatesuspend_np.372
-rw-r--r--share/man/man3/pthread_barrier_destroy.3158
-rw-r--r--share/man/man3/pthread_barrierattr.3148
-rw-r--r--share/man/man3/pthread_cancel.381
-rw-r--r--share/man/man3/pthread_cleanup_pop.366
-rw-r--r--share/man/man3/pthread_cleanup_push.368
-rw-r--r--share/man/man3/pthread_cond_broadcast.372
-rw-r--r--share/man/man3/pthread_cond_destroy.376
-rw-r--r--share/man/man3/pthread_cond_init.383
-rw-r--r--share/man/man3/pthread_cond_signal.372
-rw-r--r--share/man/man3/pthread_cond_timedwait.395
-rw-r--r--share/man/man3/pthread_cond_wait.389
-rw-r--r--share/man/man3/pthread_condattr.388
-rw-r--r--share/man/man3/pthread_create.3129
-rw-r--r--share/man/man3/pthread_detach.391
-rw-r--r--share/man/man3/pthread_equal.369
-rw-r--r--share/man/man3/pthread_exit.3106
-rw-r--r--share/man/man3/pthread_getconcurrency.3115
-rw-r--r--share/man/man3/pthread_getspecific.385
-rw-r--r--share/man/man3/pthread_join.3106
-rw-r--r--share/man/man3/pthread_key_create.3109
-rw-r--r--share/man/man3/pthread_key_delete.3100
-rw-r--r--share/man/man3/pthread_kill.377
-rw-r--r--share/man/man3/pthread_main_np.360
-rw-r--r--share/man/man3/pthread_multi_np.366
-rw-r--r--share/man/man3/pthread_mutex_destroy.374
-rw-r--r--share/man/man3/pthread_mutex_init.378
-rw-r--r--share/man/man3/pthread_mutex_lock.376
-rw-r--r--share/man/man3/pthread_mutex_timedlock.3103
-rw-r--r--share/man/man3/pthread_mutex_trylock.377
-rw-r--r--share/man/man3/pthread_mutex_unlock.376
-rw-r--r--share/man/man3/pthread_mutexattr.3187
-rw-r--r--share/man/man3/pthread_mutexattr_getkind_np.381
-rw-r--r--share/man/man3/pthread_once.3107
-rw-r--r--share/man/man3/pthread_resume_all_np.351
-rw-r--r--share/man/man3/pthread_resume_np.372
-rw-r--r--share/man/man3/pthread_rwlock_destroy.383
-rw-r--r--share/man/man3/pthread_rwlock_init.3102
-rw-r--r--share/man/man3/pthread_rwlock_rdlock.3127
-rw-r--r--share/man/man3/pthread_rwlock_timedrdlock.3118
-rw-r--r--share/man/man3/pthread_rwlock_timedwrlock.3108
-rw-r--r--share/man/man3/pthread_rwlock_unlock.382
-rw-r--r--share/man/man3/pthread_rwlock_wrlock.3106
-rw-r--r--share/man/man3/pthread_rwlockattr_destroy.372
-rw-r--r--share/man/man3/pthread_rwlockattr_getpshared.386
-rw-r--r--share/man/man3/pthread_rwlockattr_init.371
-rw-r--r--share/man/man3/pthread_rwlockattr_setpshared.394
-rw-r--r--share/man/man3/pthread_schedparam.3100
-rw-r--r--share/man/man3/pthread_self.362
-rw-r--r--share/man/man3/pthread_set_name_np.355
-rw-r--r--share/man/man3/pthread_setspecific.398
-rw-r--r--share/man/man3/pthread_sigmask.398
-rw-r--r--share/man/man3/pthread_spin_init.3138
-rw-r--r--share/man/man3/pthread_spin_lock.3138
-rw-r--r--share/man/man3/pthread_suspend_all_np.353
-rw-r--r--share/man/man3/pthread_suspend_np.370
-rw-r--r--share/man/man3/pthread_switch_add_np.387
-rw-r--r--share/man/man3/pthread_testcancel.3210
-rw-r--r--share/man/man3/pthread_yield.330
-rw-r--r--share/man/man3/queue.31005
-rw-r--r--share/man/man3/siginfo.3309
-rw-r--r--share/man/man3/stdarg.3232
-rw-r--r--share/man/man3/sysexits.3144
-rw-r--r--share/man/man3/tgmath.3153
-rw-r--r--share/man/man3/timeradd.3119
-rw-r--r--share/man/man3/tree.3502
-rw-r--r--share/man/man4/Makefile623
-rw-r--r--share/man/man4/aac.4322
-rw-r--r--share/man/man4/acpi.4602
-rw-r--r--share/man/man4/acpi_aiboost.4102
-rw-r--r--share/man/man4/acpi_asus.4186
-rw-r--r--share/man/man4/acpi_dock.462
-rw-r--r--share/man/man4/acpi_fujitsu.4175
-rw-r--r--share/man/man4/acpi_ibm.4461
-rw-r--r--share/man/man4/acpi_panasonic.4178
-rw-r--r--share/man/man4/acpi_sony.473
-rw-r--r--share/man/man4/acpi_thermal.4149
-rw-r--r--share/man/man4/acpi_toshiba.4128
-rw-r--r--share/man/man4/acpi_video.489
-rw-r--r--share/man/man4/adv.4246
-rw-r--r--share/man/man4/adw.4104
-rw-r--r--share/man/man4/ae.4153
-rw-r--r--share/man/man4/age.4187
-rw-r--r--share/man/man4/agp.4177
-rw-r--r--share/man/man4/aha.4136
-rw-r--r--share/man/man4/ahb.492
-rw-r--r--share/man/man4/ahc.4447
-rw-r--r--share/man/man4/ahd.4180
-rw-r--r--share/man/man4/aio.468
-rw-r--r--share/man/man4/ale.4162
-rw-r--r--share/man/man4/altq.4179
-rw-r--r--share/man/man4/amd.478
-rw-r--r--share/man/man4/amdsmb.454
-rw-r--r--share/man/man4/amr.4241
-rw-r--r--share/man/man4/an.4144
-rw-r--r--share/man/man4/arcmsr.4136
-rw-r--r--share/man/man4/asmc.4156
-rw-r--r--share/man/man4/asr.4115
-rw-r--r--share/man/man4/ata.4239
-rw-r--r--share/man/man4/atapicam.4120
-rw-r--r--share/man/man4/ataraid.4148
-rw-r--r--share/man/man4/ath.4294
-rw-r--r--share/man/man4/ath_hal.4134
-rw-r--r--share/man/man4/atkbd.4231
-rw-r--r--share/man/man4/atkbdc.4119
-rw-r--r--share/man/man4/audit.4146
-rw-r--r--share/man/man4/auditpipe.4256
-rw-r--r--share/man/man4/aue.4207
-rw-r--r--share/man/man4/axe.4213
-rw-r--r--share/man/man4/bce.4334
-rw-r--r--share/man/man4/bfe.4109
-rw-r--r--share/man/man4/bge.4258
-rw-r--r--share/man/man4/bktr.4266
-rw-r--r--share/man/man4/blackhole.484
-rw-r--r--share/man/man4/bpf.41009
-rw-r--r--share/man/man4/bt.4205
-rw-r--r--share/man/man4/cardbus.459
-rw-r--r--share/man/man4/carp.4266
-rw-r--r--share/man/man4/ccd.4287
-rw-r--r--share/man/man4/cd.4520
-rw-r--r--share/man/man4/cdce.4155
-rw-r--r--share/man/man4/ch.4353
-rw-r--r--share/man/man4/ciss.4163
-rw-r--r--share/man/man4/cm.4173
-rw-r--r--share/man/man4/cmx.4120
-rw-r--r--share/man/man4/coda.482
-rw-r--r--share/man/man4/coretemp.474
-rw-r--r--share/man/man4/cpuctl.4152
-rw-r--r--share/man/man4/cpufreq.4306
-rw-r--r--share/man/man4/crypto.4124
-rw-r--r--share/man/man4/cue.4113
-rw-r--r--share/man/man4/cxgb.4136
-rw-r--r--share/man/man4/cy.4262
-rw-r--r--share/man/man4/da.4216
-rw-r--r--share/man/man4/dc.4449
-rw-r--r--share/man/man4/dcons.4125
-rw-r--r--share/man/man4/dcons_crom.461
-rw-r--r--share/man/man4/ddb.41455
-rw-r--r--share/man/man4/de.4151
-rw-r--r--share/man/man4/devctl.4128
-rw-r--r--share/man/man4/digi.4382
-rw-r--r--share/man/man4/disc.480
-rw-r--r--share/man/man4/divert.4192
-rw-r--r--share/man/man4/dpt.4115
-rw-r--r--share/man/man4/dummynet.479
-rw-r--r--share/man/man4/ed.4422
-rw-r--r--share/man/man4/edsc.4111
-rw-r--r--share/man/man4/ef.4111
-rw-r--r--share/man/man4/ehci.491
-rw-r--r--share/man/man4/em.4268
-rw-r--r--share/man/man4/en.478
-rw-r--r--share/man/man4/enc.4133
-rw-r--r--share/man/man4/esp.4182
-rw-r--r--share/man/man4/et.4180
-rw-r--r--share/man/man4/exca.440
-rw-r--r--share/man/man4/faith.4134
-rw-r--r--share/man/man4/fatm.4115
-rw-r--r--share/man/man4/fd.4105
-rw-r--r--share/man/man4/fdc.4344
-rw-r--r--share/man/man4/firewire.4119
-rw-r--r--share/man/man4/fla.459
-rw-r--r--share/man/man4/fpa.458
-rw-r--r--share/man/man4/fwe.496
-rw-r--r--share/man/man4/fwip.495
-rw-r--r--share/man/man4/fwohci.4159
-rw-r--r--share/man/man4/fxp.4184
-rw-r--r--share/man/man4/gbde.4304
-rw-r--r--share/man/man4/gdb.4603
-rw-r--r--share/man/man4/gem.4141
-rw-r--r--share/man/man4/geom.4454
-rw-r--r--share/man/man4/geom_fox.4214
-rw-r--r--share/man/man4/geom_linux_lvm.488
-rw-r--r--share/man/man4/geom_uzip.4106
-rw-r--r--share/man/man4/gif.4258
-rw-r--r--share/man/man4/gre.4347
-rw-r--r--share/man/man4/harp.466
-rw-r--r--share/man/man4/hatm.4282
-rw-r--r--share/man/man4/hfa.4139
-rw-r--r--share/man/man4/hifn.4142
-rw-r--r--share/man/man4/hme.4149
-rw-r--r--share/man/man4/hptiop.4103
-rw-r--r--share/man/man4/hptmv.4101
-rw-r--r--share/man/man4/hptrr.4128
-rw-r--r--share/man/man4/hwpmc.4833
-rw-r--r--share/man/man4/ichsmb.457
-rw-r--r--share/man/man4/ichwd.490
-rw-r--r--share/man/man4/icmp.4254
-rw-r--r--share/man/man4/icmp6.4265
-rw-r--r--share/man/man4/ida.484
-rw-r--r--share/man/man4/idt.460
-rw-r--r--share/man/man4/ieee80211.4246
-rw-r--r--share/man/man4/if_bridge.4442
-rw-r--r--share/man/man4/ifmib.4196
-rw-r--r--share/man/man4/igb.4196
-rw-r--r--share/man/man4/iic.4182
-rw-r--r--share/man/man4/iicbb.458
-rw-r--r--share/man/man4/iicbus.4118
-rw-r--r--share/man/man4/iicsmb.456
-rw-r--r--share/man/man4/iir.477
-rw-r--r--share/man/man4/inet.4297
-rw-r--r--share/man/man4/inet6.4531
-rw-r--r--share/man/man4/intpm.463
-rw-r--r--share/man/man4/intro.4178
-rw-r--r--share/man/man4/io.469
-rw-r--r--share/man/man4/ip.4688
-rw-r--r--share/man/man4/ip6.4699
-rw-r--r--share/man/man4/ipfirewall.497
-rw-r--r--share/man/man4/ipmi.4201
-rw-r--r--share/man/man4/ips.4196
-rw-r--r--share/man/man4/ipsec.4411
-rw-r--r--share/man/man4/ipw.4156
-rw-r--r--share/man/man4/iscsi_initiator.4105
-rw-r--r--share/man/man4/isp.4240
-rw-r--r--share/man/man4/ispfw.459
-rw-r--r--share/man/man4/iwi.4161
-rw-r--r--share/man/man4/iwn.4161
-rw-r--r--share/man/man4/ixgb.4125
-rw-r--r--share/man/man4/ixgbe.4125
-rw-r--r--share/man/man4/jme.4164
-rw-r--r--share/man/man4/joy.4120
-rw-r--r--share/man/man4/k8temp.471
-rw-r--r--share/man/man4/kbdmux.456
-rw-r--r--share/man/man4/keyboard.4171
-rw-r--r--share/man/man4/kld.4175
-rw-r--r--share/man/man4/ktr.4200
-rw-r--r--share/man/man4/kue.4142
-rw-r--r--share/man/man4/lagg.4177
-rw-r--r--share/man/man4/le.4476
-rw-r--r--share/man/man4/led.4194
-rw-r--r--share/man/man4/lge.4157
-rw-r--r--share/man/man4/linux.4140
-rw-r--r--share/man/man4/lmc.4766
-rw-r--r--share/man/man4/lo.481
-rw-r--r--share/man/man4/lp.4245
-rw-r--r--share/man/man4/lpbb.480
-rw-r--r--share/man/man4/lpt.498
-rw-r--r--share/man/man4/mac.4254
-rw-r--r--share/man/man4/mac_biba.4237
-rw-r--r--share/man/man4/mac_bsdextended.4149
-rw-r--r--share/man/man4/mac_ifoff.4133
-rw-r--r--share/man/man4/mac_lomac.4222
-rw-r--r--share/man/man4/mac_mls.4252
-rw-r--r--share/man/man4/mac_none.4113
-rw-r--r--share/man/man4/mac_partition.4133
-rw-r--r--share/man/man4/mac_portacl.4218
-rw-r--r--share/man/man4/mac_seeotheruids.4131
-rw-r--r--share/man/man4/mac_stub.4116
-rw-r--r--share/man/man4/mac_test.4117
-rw-r--r--share/man/man4/malo.4124
-rw-r--r--share/man/man4/man4.arm/Makefile10
-rw-r--r--share/man/man4/man4.arm/mge.4160
-rw-r--r--share/man/man4/man4.arm/npe.4163
-rw-r--r--share/man/man4/man4.i386/CPU_ELAN.4158
-rw-r--r--share/man/man4/man4.i386/Makefile51
-rw-r--r--share/man/man4/man4.i386/aic.484
-rw-r--r--share/man/man4/man4.i386/alpm.462
-rw-r--r--share/man/man4/man4.i386/amdpm.472
-rw-r--r--share/man/man4/man4.i386/apm.4158
-rw-r--r--share/man/man4/man4.i386/ar.4118
-rw-r--r--share/man/man4/man4.i386/ce.4111
-rw-r--r--share/man/man4/man4.i386/cp.4113
-rw-r--r--share/man/man4/man4.i386/cs.4152
-rw-r--r--share/man/man4/man4.i386/ct.4162
-rw-r--r--share/man/man4/man4.i386/ctau.4119
-rw-r--r--share/man/man4/man4.i386/cx.4139
-rw-r--r--share/man/man4/man4.i386/dpms.458
-rw-r--r--share/man/man4/man4.i386/ep.4218
-rw-r--r--share/man/man4/man4.i386/ex.4119
-rw-r--r--share/man/man4/man4.i386/fe.4318
-rw-r--r--share/man/man4/man4.i386/glxsb.497
-rw-r--r--share/man/man4/man4.i386/ie.4143
-rw-r--r--share/man/man4/man4.i386/longrun.467
-rw-r--r--share/man/man4/man4.i386/mcd.4169
-rw-r--r--share/man/man4/man4.i386/mse.4386
-rw-r--r--share/man/man4/man4.i386/npx.4111
-rw-r--r--share/man/man4/man4.i386/padlock.497
-rw-r--r--share/man/man4/man4.i386/pae.4127
-rw-r--r--share/man/man4/man4.i386/pbio.4187
-rw-r--r--share/man/man4/man4.i386/pcf.472
-rw-r--r--share/man/man4/man4.i386/perfmon.4213
-rw-r--r--share/man/man4/man4.i386/pnp.490
-rw-r--r--share/man/man4/man4.i386/pnpbios.485
-rw-r--r--share/man/man4/man4.i386/ray.4419
-rw-r--r--share/man/man4/man4.i386/sbni.4132
-rw-r--r--share/man/man4/man4.i386/scd.474
-rw-r--r--share/man/man4/man4.i386/smapi.4153
-rw-r--r--share/man/man4/man4.i386/snc.4142
-rw-r--r--share/man/man4/man4.i386/sr.4164
-rw-r--r--share/man/man4/man4.i386/streams.485
-rw-r--r--share/man/man4/man4.i386/svr4.4225
-rw-r--r--share/man/man4/man4.i386/viapm.472
-rw-r--r--share/man/man4/man4.i386/vpd.490
-rw-r--r--share/man/man4/man4.i386/vx.4140
-rw-r--r--share/man/man4/man4.i386/wl.4191
-rw-r--r--share/man/man4/man4.powerpc/Makefile9
-rw-r--r--share/man/man4/man4.powerpc/bm.489
-rw-r--r--share/man/man4/man4.powerpc/pmu.4114
-rw-r--r--share/man/man4/man4.powerpc/powermac_nvram.470
-rw-r--r--share/man/man4/man4.sparc64/Makefile22
-rw-r--r--share/man/man4/man4.sparc64/auxio.480
-rw-r--r--share/man/man4/man4.sparc64/central.460
-rw-r--r--share/man/man4/man4.sparc64/clkbrd.488
-rw-r--r--share/man/man4/man4.sparc64/creator.488
-rw-r--r--share/man/man4/man4.sparc64/ebus.4122
-rw-r--r--share/man/man4/man4.sparc64/eeprom.4130
-rw-r--r--share/man/man4/man4.sparc64/fhc.482
-rw-r--r--share/man/man4/man4.sparc64/machfb.4180
-rw-r--r--share/man/man4/man4.sparc64/ofw_console.4126
-rw-r--r--share/man/man4/man4.sparc64/openfirm.4300
-rw-r--r--share/man/man4/man4.sparc64/openprom.4240
-rw-r--r--share/man/man4/man4.sparc64/rtc.488
-rw-r--r--share/man/man4/man4.sparc64/sbus.486
-rw-r--r--share/man/man4/man4.sparc64/snd_audiocs.488
-rw-r--r--share/man/man4/md.4114
-rw-r--r--share/man/man4/mem.4211
-rw-r--r--share/man/man4/meteor.4874
-rw-r--r--share/man/man4/mfi.4118
-rw-r--r--share/man/man4/miibus.4175
-rw-r--r--share/man/man4/mlx.4256
-rw-r--r--share/man/man4/mly.4272
-rw-r--r--share/man/man4/mmc.460
-rw-r--r--share/man/man4/mmcsd.448
-rw-r--r--share/man/man4/mn.455
-rw-r--r--share/man/man4/mouse.4403
-rw-r--r--share/man/man4/mpt.4183
-rw-r--r--share/man/man4/msk.4249
-rw-r--r--share/man/man4/mtio.4316
-rw-r--r--share/man/man4/multicast.41006
-rw-r--r--share/man/man4/mxge.4186
-rw-r--r--share/man/man4/my.490
-rw-r--r--share/man/man4/natm.4101
-rw-r--r--share/man/man4/natmip.4248
-rw-r--r--share/man/man4/ncr.491
-rw-r--r--share/man/man4/ncv.4133
-rw-r--r--share/man/man4/ndis.4151
-rw-r--r--share/man/man4/netgraph.41480
-rw-r--r--share/man/man4/netintro.4418
-rw-r--r--share/man/man4/nfe.4202
-rw-r--r--share/man/man4/nfsmb.454
-rw-r--r--share/man/man4/ng_UI.494
-rw-r--r--share/man/man4/ng_async.4174
-rw-r--r--share/man/man4/ng_atm.4416
-rw-r--r--share/man/man4/ng_atmllc.496
-rw-r--r--share/man/man4/ng_bluetooth.4112
-rw-r--r--share/man/man4/ng_bpf.4198
-rw-r--r--share/man/man4/ng_bridge.4207
-rw-r--r--share/man/man4/ng_bt3c.4129
-rw-r--r--share/man/man4/ng_btsocket.4354
-rw-r--r--share/man/man4/ng_car.4214
-rw-r--r--share/man/man4/ng_ccatm.4324
-rw-r--r--share/man/man4/ng_cisco.4185
-rw-r--r--share/man/man4/ng_deflate.4158
-rw-r--r--share/man/man4/ng_device.496
-rw-r--r--share/man/man4/ng_echo.473
-rw-r--r--share/man/man4/ng_eiface.4122
-rw-r--r--share/man/man4/ng_etf.4155
-rw-r--r--share/man/man4/ng_ether.4242
-rw-r--r--share/man/man4/ng_ether_echo.477
-rw-r--r--share/man/man4/ng_fec.4109
-rw-r--r--share/man/man4/ng_frame_relay.4100
-rw-r--r--share/man/man4/ng_gif.4127
-rw-r--r--share/man/man4/ng_gif_demux.4107
-rw-r--r--share/man/man4/ng_h4.4123
-rw-r--r--share/man/man4/ng_hci.4387
-rw-r--r--share/man/man4/ng_hole.491
-rw-r--r--share/man/man4/ng_hub.466
-rw-r--r--share/man/man4/ng_iface.4172
-rw-r--r--share/man/man4/ng_ip_input.4102
-rw-r--r--share/man/man4/ng_ipfw.4127
-rw-r--r--share/man/man4/ng_ksocket.4236
-rw-r--r--share/man/man4/ng_l2cap.4423
-rw-r--r--share/man/man4/ng_l2tp.4330
-rw-r--r--share/man/man4/ng_lmi.4139
-rw-r--r--share/man/man4/ng_mppc.4194
-rw-r--r--share/man/man4/ng_nat.4325
-rw-r--r--share/man/man4/ng_netflow.4304
-rw-r--r--share/man/man4/ng_one2many.4273
-rw-r--r--share/man/man4/ng_ppp.4460
-rw-r--r--share/man/man4/ng_pppoe.4508
-rw-r--r--share/man/man4/ng_pptpgre.4178
-rw-r--r--share/man/man4/ng_pred1.4145
-rw-r--r--share/man/man4/ng_rfc1490.4142
-rw-r--r--share/man/man4/ng_socket.4189
-rw-r--r--share/man/man4/ng_source.4349
-rw-r--r--share/man/man4/ng_split.488
-rw-r--r--share/man/man4/ng_sppp.4172
-rw-r--r--share/man/man4/ng_sscfu.4161
-rw-r--r--share/man/man4/ng_sscop.4403
-rw-r--r--share/man/man4/ng_tag.4338
-rw-r--r--share/man/man4/ng_tcpmss.4125
-rw-r--r--share/man/man4/ng_tee.4135
-rw-r--r--share/man/man4/ng_tty.4130
-rw-r--r--share/man/man4/ng_ubt.4123
-rw-r--r--share/man/man4/ng_uni.4420
-rw-r--r--share/man/man4/ng_vjc.4239
-rw-r--r--share/man/man4/ng_vlan.4145
-rw-r--r--share/man/man4/ngatmbase.4134
-rw-r--r--share/man/man4/nge.4230
-rw-r--r--share/man/man4/nmdm.485
-rw-r--r--share/man/man4/nsp.498
-rw-r--r--share/man/man4/null.460
-rw-r--r--share/man/man4/nve.4140
-rw-r--r--share/man/man4/nxge.497
-rw-r--r--share/man/man4/ohci.480
-rw-r--r--share/man/man4/orm.447
-rw-r--r--share/man/man4/pass.4119
-rw-r--r--share/man/man4/patm.4192
-rw-r--r--share/man/man4/pccard.478
-rw-r--r--share/man/man4/pccbb.4181
-rw-r--r--share/man/man4/pci.4344
-rw-r--r--share/man/man4/pcib.449
-rw-r--r--share/man/man4/pcic.4103
-rw-r--r--share/man/man4/pcm.4445
-rw-r--r--share/man/man4/pcn.4193
-rw-r--r--share/man/man4/pim.4201
-rw-r--r--share/man/man4/polling.4220
-rw-r--r--share/man/man4/ppbus.4366
-rw-r--r--share/man/man4/ppc.4136
-rw-r--r--share/man/man4/ppi.4107
-rw-r--r--share/man/man4/ppp.484
-rw-r--r--share/man/man4/psm.4877
-rw-r--r--share/man/man4/pst.476
-rw-r--r--share/man/man4/pt.492
-rw-r--r--share/man/man4/pts.4175
-rw-r--r--share/man/man4/pty.489
-rw-r--r--share/man/man4/puc.462
-rw-r--r--share/man/man4/ral.4253
-rw-r--r--share/man/man4/random.4327
-rw-r--r--share/man/man4/rc.4125
-rw-r--r--share/man/man4/re.4245
-rw-r--r--share/man/man4/rl.4305
-rw-r--r--share/man/man4/rndtest.472
-rw-r--r--share/man/man4/route.4331
-rw-r--r--share/man/man4/rp.4195
-rw-r--r--share/man/man4/rue.4154
-rw-r--r--share/man/man4/rum.4182
-rw-r--r--share/man/man4/sa.4247
-rw-r--r--share/man/man4/safe.4129
-rw-r--r--share/man/man4/sbp.497
-rw-r--r--share/man/man4/sbp_targ.490
-rw-r--r--share/man/man4/scc.475
-rw-r--r--share/man/man4/sched_4bsd.474
-rw-r--r--share/man/man4/sched_ule.473
-rw-r--r--share/man/man4/screen.4242
-rw-r--r--share/man/man4/scsi.4340
-rw-r--r--share/man/man4/sctp.4425
-rw-r--r--share/man/man4/sdhci.452
-rw-r--r--share/man/man4/sem.481
-rw-r--r--share/man/man4/ses.4135
-rw-r--r--share/man/man4/sf.4211
-rw-r--r--share/man/man4/si.4181
-rw-r--r--share/man/man4/sio.4414
-rw-r--r--share/man/man4/sis.4211
-rw-r--r--share/man/man4/sk.4265
-rw-r--r--share/man/man4/sl.482
-rw-r--r--share/man/man4/smb.4202
-rw-r--r--share/man/man4/smbus.480
-rw-r--r--share/man/man4/smp.4109
-rw-r--r--share/man/man4/sn.4109
-rw-r--r--share/man/man4/snd_ad1816.481
-rw-r--r--share/man/man4/snd_als4000.470
-rw-r--r--share/man/man4/snd_atiixp.4100
-rw-r--r--share/man/man4/snd_cmi.476
-rw-r--r--share/man/man4/snd_cs4281.470
-rw-r--r--share/man/man4/snd_csa.498
-rw-r--r--share/man/man4/snd_ds1.472
-rw-r--r--share/man/man4/snd_emu10k1.482
-rw-r--r--share/man/man4/snd_emu10kx.4298
-rw-r--r--share/man/man4/snd_envy24.482
-rw-r--r--share/man/man4/snd_envy24ht.4105
-rw-r--r--share/man/man4/snd_es137x.4117
-rw-r--r--share/man/man4/snd_ess.472
-rw-r--r--share/man/man4/snd_fm801.478
-rw-r--r--share/man/man4/snd_gusc.497
-rw-r--r--share/man/man4/snd_hda.4612
-rw-r--r--share/man/man4/snd_ich.4105
-rw-r--r--share/man/man4/snd_maestro.478
-rw-r--r--share/man/man4/snd_maestro3.494
-rw-r--r--share/man/man4/snd_mss.4116
-rw-r--r--share/man/man4/snd_neomagic.474
-rw-r--r--share/man/man4/snd_sbc.4132
-rw-r--r--share/man/man4/snd_solo.466
-rw-r--r--share/man/man4/snd_spicds.489
-rw-r--r--share/man/man4/snd_t4dwave.477
-rw-r--r--share/man/man4/snd_uaudio.4108
-rw-r--r--share/man/man4/snd_via8233.4105
-rw-r--r--share/man/man4/snd_via82c686.471
-rw-r--r--share/man/man4/snd_vibes.471
-rw-r--r--share/man/man4/snp.499
-rw-r--r--share/man/man4/spic.461
-rw-r--r--share/man/man4/spkr.4249
-rw-r--r--share/man/man4/splash.4257
-rw-r--r--share/man/man4/sppp.4240
-rw-r--r--share/man/man4/ste.4188
-rw-r--r--share/man/man4/stf.4267
-rw-r--r--share/man/man4/stg.4110
-rw-r--r--share/man/man4/stge.4230
-rw-r--r--share/man/man4/sym.4384
-rw-r--r--share/man/man4/syncache.4215
-rw-r--r--share/man/man4/syncer.492
-rw-r--r--share/man/man4/syscons.4562
-rw-r--r--share/man/man4/sysmouse.4478
-rw-r--r--share/man/man4/tap.4321
-rw-r--r--share/man/man4/targ.4155
-rw-r--r--share/man/man4/tcp.4599
-rw-r--r--share/man/man4/tdfx.493
-rw-r--r--share/man/man4/termios.41579
-rw-r--r--share/man/man4/textdump.4172
-rw-r--r--share/man/man4/ti.4338
-rw-r--r--share/man/man4/tl.4187
-rw-r--r--share/man/man4/trm.4107
-rw-r--r--share/man/man4/tty.4427
-rw-r--r--share/man/man4/tun.4313
-rwxr-xr-xshare/man/man4/twa.4135
-rw-r--r--share/man/man4/twe.4278
-rw-r--r--share/man/man4/tx.4121
-rw-r--r--share/man/man4/txp.4150
-rw-r--r--share/man/man4/u3g.4124
-rw-r--r--share/man/man4/uark.484
-rw-r--r--share/man/man4/uart.4185
-rw-r--r--share/man/man4/ubsa.4115
-rw-r--r--share/man/man4/ubsec.4125
-rw-r--r--share/man/man4/ubser.467
-rw-r--r--share/man/man4/ubtbcmfw.4108
-rw-r--r--share/man/man4/uchcom.494
-rw-r--r--share/man/man4/ucom.4112
-rw-r--r--share/man/man4/ucycom.485
-rw-r--r--share/man/man4/udav.4101
-rw-r--r--share/man/man4/udbp.4127
-rw-r--r--share/man/man4/udp.4170
-rw-r--r--share/man/man4/ufm.485
-rw-r--r--share/man/man4/ufoma.4140
-rw-r--r--share/man/man4/uftdi.4102
-rw-r--r--share/man/man4/ugen.4328
-rw-r--r--share/man/man4/uhci.470
-rw-r--r--share/man/man4/uhid.4154
-rw-r--r--share/man/man4/uipaq.497
-rw-r--r--share/man/man4/ukbd.4174
-rw-r--r--share/man/man4/ulpt.4117
-rw-r--r--share/man/man4/umass.4258
-rw-r--r--share/man/man4/umct.4100
-rw-r--r--share/man/man4/umodem.4119
-rw-r--r--share/man/man4/ums.4116
-rw-r--r--share/man/man4/unix.4275
-rw-r--r--share/man/man4/upgt.4223
-rw-r--r--share/man/man4/uplcom.4129
-rw-r--r--share/man/man4/ural.4162
-rw-r--r--share/man/man4/urio.4136
-rw-r--r--share/man/man4/usb.4440
-rw-r--r--share/man/man4/usb2_bluetooth.465
-rw-r--r--share/man/man4/usb2_controller.465
-rw-r--r--share/man/man4/usb2_core.4630
-rw-r--r--share/man/man4/usb2_ethernet.465
-rw-r--r--share/man/man4/usb2_image.465
-rw-r--r--share/man/man4/usb2_input.466
-rw-r--r--share/man/man4/usb2_misc.466
-rw-r--r--share/man/man4/usb2_ndis.466
-rw-r--r--share/man/man4/usb2_quirk.464
-rw-r--r--share/man/man4/usb2_serial.466
-rw-r--r--share/man/man4/usb2_sound.465
-rw-r--r--share/man/man4/usb2_storage.465
-rw-r--r--share/man/man4/usb2_template.484
-rw-r--r--share/man/man4/usb2_wlan.465
-rw-r--r--share/man/man4/uscanner.4164
-rw-r--r--share/man/man4/uslcom.497
-rw-r--r--share/man/man4/utopia.4196
-rw-r--r--share/man/man4/uvisor.4148
-rw-r--r--share/man/man4/uvscom.4101
-rw-r--r--share/man/man4/vga.4185
-rw-r--r--share/man/man4/vge.4210
-rw-r--r--share/man/man4/vinum.41175
-rw-r--r--share/man/man4/vkbd.4153
-rw-r--r--share/man/man4/vlan.4210
-rw-r--r--share/man/man4/vpo.4105
-rw-r--r--share/man/man4/vr.4217
-rw-r--r--share/man/man4/watchdog.4146
-rw-r--r--share/man/man4/wb.4198
-rw-r--r--share/man/man4/wi.4396
-rw-r--r--share/man/man4/witness.4144
-rw-r--r--share/man/man4/wlan.4204
-rw-r--r--share/man/man4/wlan_acl.457
-rw-r--r--share/man/man4/wlan_amrr.459
-rw-r--r--share/man/man4/wlan_ccmp.466
-rw-r--r--share/man/man4/wlan_tkip.466
-rw-r--r--share/man/man4/wlan_wep.463
-rw-r--r--share/man/man4/wlan_xauth.461
-rw-r--r--share/man/man4/wpi.4145
-rw-r--r--share/man/man4/xe.4168
-rw-r--r--share/man/man4/xl.4272
-rw-r--r--share/man/man4/xpt.4108
-rw-r--r--share/man/man4/zero.457
-rw-r--r--share/man/man4/zyd.4186
-rw-r--r--share/man/man5/Makefile91
-rw-r--r--share/man/man5/a.out.5460
-rw-r--r--share/man/man5/acct.5131
-rw-r--r--share/man/man5/ar.5234
-rw-r--r--share/man/man5/bluetooth.device.conf.5186
-rw-r--r--share/man/man5/bluetooth.hosts.563
-rw-r--r--share/man/man5/bluetooth.protocols.562
-rw-r--r--share/man/man5/boot.config.5103
-rw-r--r--share/man/man5/core.5110
-rw-r--r--share/man/man5/devfs.5102
-rw-r--r--share/man/man5/devfs.conf.5140
-rw-r--r--share/man/man5/devfs.rules.5117
-rw-r--r--share/man/man5/device.hints.5168
-rw-r--r--share/man/man5/dir.5160
-rw-r--r--share/man/man5/disktab.5144
-rw-r--r--share/man/man5/elf.51321
-rw-r--r--share/man/man5/ethers.5102
-rw-r--r--share/man/man5/eui64.5110
-rw-r--r--share/man/man5/ext2fs.583
-rw-r--r--share/man/man5/fbtab.547
-rw-r--r--share/man/man5/fdescfs.5120
-rw-r--r--share/man/man5/forward.597
-rw-r--r--share/man/man5/freebsd-update.conf.5186
-rw-r--r--share/man/man5/fs.5450
-rw-r--r--share/man/man5/fstab.5322
-rw-r--r--share/man/man5/group.5164
-rw-r--r--share/man/man5/hesiod.conf.580
-rw-r--r--share/man/man5/hosts.5116
-rw-r--r--share/man/man5/hosts.equiv.5149
-rw-r--r--share/man/man5/hosts.lpd.562
-rw-r--r--share/man/man5/intro.555
-rw-r--r--share/man/man5/libmap.conf.5163
-rw-r--r--share/man/man5/link.5596
-rw-r--r--share/man/man5/linprocfs.598
-rw-r--r--share/man/man5/linsysfs.599
-rw-r--r--share/man/man5/mailer.conf.5144
-rw-r--r--share/man/man5/make.conf.5744
-rw-r--r--share/man/man5/moduli.5159
-rw-r--r--share/man/man5/motd.543
-rw-r--r--share/man/man5/mqueuefs.5124
-rw-r--r--share/man/man5/msdosfs.569
-rw-r--r--share/man/man5/networks.589
-rw-r--r--share/man/man5/nsmb.conf.5142
-rw-r--r--share/man/man5/nsswitch.conf.5384
-rw-r--r--share/man/man5/nullfs.575
-rw-r--r--share/man/man5/passwd.5452
-rw-r--r--share/man/man5/pbm.588
-rw-r--r--share/man/man5/periodic.conf.5777
-rw-r--r--share/man/man5/phones.582
-rw-r--r--share/man/man5/portsnap.conf.5143
-rw-r--r--share/man/man5/procfs.5268
-rw-r--r--share/man/man5/protocols.580
-rw-r--r--share/man/man5/quota.user.5131
-rw-r--r--share/man/man5/rc.conf.54053
-rw-r--r--share/man/man5/regdomain.548
-rw-r--r--share/man/man5/reiserfs.584
-rw-r--r--share/man/man5/remote.5214
-rw-r--r--share/man/man5/resolver.5223
-rw-r--r--share/man/man5/services.593
-rw-r--r--share/man/man5/shells.566
-rw-r--r--share/man/man5/src.conf.5832
-rw-r--r--share/man/man5/stab.5221
-rw-r--r--share/man/man5/style.Makefile.5276
-rw-r--r--share/man/man5/sysctl.conf.584
-rw-r--r--share/man/man5/tmpfs.5111
-rw-r--r--share/man/man5/utmp.5267
-rw-r--r--share/man/man5/xfs.5108
-rw-r--r--share/man/man6/Makefile5
-rw-r--r--share/man/man6/intro.662
-rw-r--r--share/man/man7/Makefile30
-rw-r--r--share/man/man7/ascii.7117
-rw-r--r--share/man/man7/bsd.snmpmod.mk.7117
-rw-r--r--share/man/man7/build.7424
-rw-r--r--share/man/man7/clocks.7178
-rw-r--r--share/man/man7/development.7698
-rw-r--r--share/man/man7/environ.7271
-rw-r--r--share/man/man7/ffs.7226
-rw-r--r--share/man/man7/firewall.7443
-rw-r--r--share/man/man7/hier.7839
-rw-r--r--share/man/man7/hostname.794
-rw-r--r--share/man/man7/intro.747
-rw-r--r--share/man/man7/maclabel.798
-rw-r--r--share/man/man7/mailaddr.7168
-rw-r--r--share/man/man7/operator.766
-rw-r--r--share/man/man7/ports.7540
-rw-r--r--share/man/man7/release.7540
-rw-r--r--share/man/man7/sdoc.7242
-rw-r--r--share/man/man7/security.71006
-rw-r--r--share/man/man7/sprog.7180
-rw-r--r--share/man/man7/stdint.7136
-rw-r--r--share/man/man7/tuning.7982
-rw-r--r--share/man/man8/MAKEDEV.846
-rw-r--r--share/man/man8/Makefile31
-rw-r--r--share/man/man8/adding_user.8117
-rw-r--r--share/man/man8/crash.8220
-rw-r--r--share/man/man8/diskless.8481
-rw-r--r--share/man/man8/intro.895
-rw-r--r--share/man/man8/nanobsd.8328
-rw-r--r--share/man/man8/picobsd.8645
-rw-r--r--share/man/man8/rc.8556
-rw-r--r--share/man/man8/rc.sendmail.8263
-rw-r--r--share/man/man8/rc.subr.8926
-rw-r--r--share/man/man8/rescue.8184
-rw-r--r--share/man/man8/sticky.882
-rw-r--r--share/man/man8/yp.8566
-rw-r--r--share/man/man9/BUF_ISLOCKED.968
-rw-r--r--share/man/man9/BUF_LOCK.975
-rw-r--r--share/man/man9/BUF_LOCKFREE.963
-rw-r--r--share/man/man9/BUF_LOCKINIT.962
-rw-r--r--share/man/man9/BUF_RECURSED.964
-rw-r--r--share/man/man9/BUF_TIMELOCK.983
-rw-r--r--share/man/man9/BUF_UNLOCK.964
-rw-r--r--share/man/man9/BUS_ADD_CHILD.974
-rw-r--r--share/man/man9/BUS_CONFIG_INTR.9106
-rw-r--r--share/man/man9/BUS_PRINT_CHILD.964
-rw-r--r--share/man/man9/BUS_READ_IVAR.963
-rw-r--r--share/man/man9/BUS_SETUP_INTR.9221
-rw-r--r--share/man/man9/CTASSERT.970
-rw-r--r--share/man/man9/DB_COMMAND.9113
-rw-r--r--share/man/man9/DECLARE_GEOM_CLASS.9179
-rw-r--r--share/man/man9/DECLARE_MODULE.9112
-rw-r--r--share/man/man9/DELAY.947
-rw-r--r--share/man/man9/DEVICE_ATTACH.971
-rw-r--r--share/man/man9/DEVICE_DETACH.965
-rw-r--r--share/man/man9/DEVICE_IDENTIFY.994
-rw-r--r--share/man/man9/DEVICE_PROBE.9138
-rw-r--r--share/man/man9/DEVICE_SHUTDOWN.957
-rw-r--r--share/man/man9/DEV_MODULE.9105
-rw-r--r--share/man/man9/DRIVER_MODULE.9110
-rw-r--r--share/man/man9/EVENTHANDLER.9248
-rw-r--r--share/man/man9/KASSERT.987
-rw-r--r--share/man/man9/LOCK_PROFILING.9203
-rw-r--r--share/man/man9/MD5.979
-rw-r--r--share/man/man9/MODULE_DEPEND.980
-rw-r--r--share/man/man9/MODULE_VERSION.959
-rw-r--r--share/man/man9/Makefile1309
-rw-r--r--share/man/man9/SYSCALL_MODULE.984
-rw-r--r--share/man/man9/VFS.960
-rw-r--r--share/man/man9/VFS_CHECKEXP.988
-rw-r--r--share/man/man9/VFS_FHTOVP.983
-rw-r--r--share/man/man9/VFS_LOCK_GIANT.993
-rw-r--r--share/man/man9/VFS_MOUNT.986
-rw-r--r--share/man/man9/VFS_QUOTACTL.953
-rw-r--r--share/man/man9/VFS_ROOT.969
-rw-r--r--share/man/man9/VFS_SET.9116
-rw-r--r--share/man/man9/VFS_STATFS.9118
-rw-r--r--share/man/man9/VFS_SYNC.983
-rw-r--r--share/man/man9/VFS_UNMOUNT.970
-rw-r--r--share/man/man9/VFS_VGET.983
-rw-r--r--share/man/man9/VOP_ACCESS.9119
-rw-r--r--share/man/man9/VOP_ACLCHECK.9102
-rw-r--r--share/man/man9/VOP_ADVLOCK.988
-rw-r--r--share/man/man9/VOP_ATTRIB.9164
-rw-r--r--share/man/man9/VOP_BWRITE.956
-rw-r--r--share/man/man9/VOP_CREATE.9161
-rw-r--r--share/man/man9/VOP_FSYNC.9148
-rw-r--r--share/man/man9/VOP_GETACL.996
-rw-r--r--share/man/man9/VOP_GETEXTATTR.9133
-rw-r--r--share/man/man9/VOP_GETPAGES.9162
-rw-r--r--share/man/man9/VOP_GETVOBJECT.9113
-rw-r--r--share/man/man9/VOP_INACTIVE.9113
-rw-r--r--share/man/man9/VOP_IOCTL.984
-rw-r--r--share/man/man9/VOP_LEASE.961
-rw-r--r--share/man/man9/VOP_LINK.9114
-rw-r--r--share/man/man9/VOP_LISTEXTATTR.9136
-rw-r--r--share/man/man9/VOP_LOCK.9189
-rw-r--r--share/man/man9/VOP_LOOKUP.9449
-rw-r--r--share/man/man9/VOP_OPENCLOSE.9114
-rw-r--r--share/man/man9/VOP_PATHCONF.988
-rw-r--r--share/man/man9/VOP_PRINT.954
-rw-r--r--share/man/man9/VOP_RDWR.9239
-rw-r--r--share/man/man9/VOP_READDIR.9174
-rw-r--r--share/man/man9/VOP_READLINK.982
-rw-r--r--share/man/man9/VOP_REALLOCBLKS.959
-rw-r--r--share/man/man9/VOP_REMOVE.998
-rw-r--r--share/man/man9/VOP_RENAME.9295
-rw-r--r--share/man/man9/VOP_REVOKE.970
-rw-r--r--share/man/man9/VOP_SETACL.9105
-rw-r--r--share/man/man9/VOP_SETEXTATTR.9119
-rw-r--r--share/man/man9/VOP_STRATEGY.964
-rw-r--r--share/man/man9/VOP_VPTOCNP.9110
-rw-r--r--share/man/man9/VOP_VPTOFH.960
-rw-r--r--share/man/man9/accept_filter.9152
-rw-r--r--share/man/man9/accf_data.978
-rw-r--r--share/man/man9/accf_dns.979
-rw-r--r--share/man/man9/accf_http.998
-rw-r--r--share/man/man9/acl.9208
-rw-r--r--share/man/man9/alloc_unr.9100
-rw-r--r--share/man/man9/alq.9256
-rw-r--r--share/man/man9/altq.9604
-rw-r--r--share/man/man9/atomic.9357
-rw-r--r--share/man/man9/bios.9182
-rw-r--r--share/man/man9/boot.9100
-rw-r--r--share/man/man9/bpf.9279
-rw-r--r--share/man/man9/buf.9150
-rw-r--r--share/man/man9/bus_activate_resource.993
-rw-r--r--share/man/man9/bus_alloc_resource.9182
-rw-r--r--share/man/man9/bus_child_present.987
-rw-r--r--share/man/man9/bus_dma.9993
-rw-r--r--share/man/man9/bus_generic_attach.958
-rw-r--r--share/man/man9/bus_generic_detach.959
-rw-r--r--share/man/man9/bus_generic_print_child.965
-rw-r--r--share/man/man9/bus_generic_read_ivar.957
-rw-r--r--share/man/man9/bus_generic_shutdown.959
-rw-r--r--share/man/man9/bus_release_resource.9106
-rw-r--r--share/man/man9/bus_set_resource.996
-rw-r--r--share/man/man9/bus_space.91718
-rw-r--r--share/man/man9/byteorder.9169
-rw-r--r--share/man/man9/cd.9126
-rw-r--r--share/man/man9/condvar.9233
-rw-r--r--share/man/man9/config_intrhook.9105
-rw-r--r--share/man/man9/contigmalloc.9132
-rw-r--r--share/man/man9/copy.9145
-rw-r--r--share/man/man9/cr_cansee.992
-rw-r--r--share/man/man9/cr_seeothergids.982
-rw-r--r--share/man/man9/cr_seeotheruids.982
-rw-r--r--share/man/man9/critical_enter.974
-rw-r--r--share/man/man9/crypto.9665
-rw-r--r--share/man/man9/dev_clone.974
-rw-r--r--share/man/man9/devclass.969
-rw-r--r--share/man/man9/devclass_add_driver.958
-rw-r--r--share/man/man9/devclass_find.956
-rw-r--r--share/man/man9/devclass_get_count.947
-rw-r--r--share/man/man9/devclass_get_device.952
-rw-r--r--share/man/man9/devclass_get_devices.960
-rw-r--r--share/man/man9/devclass_get_drivers.960
-rw-r--r--share/man/man9/devclass_get_maxunit.953
-rw-r--r--share/man/man9/devclass_get_name.949
-rw-r--r--share/man/man9/devclass_get_softc.952
-rw-r--r--share/man/man9/devfs_set_cdevpriv.9121
-rw-r--r--share/man/man9/device.9104
-rw-r--r--share/man/man9/device_add_child.9125
-rw-r--r--share/man/man9/device_delete_child.956
-rw-r--r--share/man/man9/device_enable.963
-rw-r--r--share/man/man9/device_find_child.962
-rw-r--r--share/man/man9/device_get_children.962
-rw-r--r--share/man/man9/device_get_devclass.952
-rw-r--r--share/man/man9/device_get_driver.952
-rw-r--r--share/man/man9/device_get_ivars.964
-rw-r--r--share/man/man9/device_get_name.956
-rw-r--r--share/man/man9/device_get_parent.950
-rw-r--r--share/man/man9/device_get_softc.969
-rw-r--r--share/man/man9/device_get_state.999
-rw-r--r--share/man/man9/device_get_sysctl.958
-rw-r--r--share/man/man9/device_get_unit.948
-rw-r--r--share/man/man9/device_printf.958
-rw-r--r--share/man/man9/device_probe_and_attach.961
-rw-r--r--share/man/man9/device_quiet.966
-rw-r--r--share/man/man9/device_set_desc.963
-rw-r--r--share/man/man9/device_set_driver.953
-rw-r--r--share/man/man9/device_set_flags.956
-rw-r--r--share/man/man9/devstat.9455
-rw-r--r--share/man/man9/devtoname.957
-rw-r--r--share/man/man9/disk.9193
-rw-r--r--share/man/man9/domain.9228
-rw-r--r--share/man/man9/driver.9114
-rw-r--r--share/man/man9/extattr.996
-rw-r--r--share/man/man9/fetch.989
-rw-r--r--share/man/man9/firmware.9270
-rw-r--r--share/man/man9/g_access.9165
-rw-r--r--share/man/man9/g_attach.9141
-rw-r--r--share/man/man9/g_bio.9277
-rw-r--r--share/man/man9/g_consumer.9137
-rw-r--r--share/man/man9/g_data.9122
-rw-r--r--share/man/man9/g_event.9189
-rw-r--r--share/man/man9/g_geom.9206
-rw-r--r--share/man/man9/g_provider.9145
-rw-r--r--share/man/man9/g_provider_by_name.977
-rw-r--r--share/man/man9/g_wither_geom.986
-rw-r--r--share/man/man9/get_cyclecount.999
-rw-r--r--share/man/man9/getnewvnode.969
-rw-r--r--share/man/man9/groupmember.960
-rw-r--r--share/man/man9/hash.9161
-rw-r--r--share/man/man9/hashinit.9176
-rw-r--r--share/man/man9/hexdump.994
-rw-r--r--share/man/man9/ieee80211.9260
-rw-r--r--share/man/man9/ieee80211_crypto.9102
-rw-r--r--share/man/man9/ieee80211_input.9113
-rw-r--r--share/man/man9/ieee80211_ioctl.992
-rw-r--r--share/man/man9/ieee80211_node.9293
-rw-r--r--share/man/man9/ieee80211_output.9151
-rw-r--r--share/man/man9/ieee80211_proto.975
-rw-r--r--share/man/man9/ieee80211_radiotap.9235
-rw-r--r--share/man/man9/ifnet.91363
-rw-r--r--share/man/man9/inittodr.9123
-rw-r--r--share/man/man9/insmntque.994
-rw-r--r--share/man/man9/intro.9109
-rw-r--r--share/man/man9/ithread.9362
-rw-r--r--share/man/man9/kernacc.990
-rw-r--r--share/man/man9/kernel_mount.9212
-rw-r--r--share/man/man9/kobj.9144
-rw-r--r--share/man/man9/kproc.9373
-rw-r--r--share/man/man9/kqueue.9375
-rw-r--r--share/man/man9/kthread.9339
-rw-r--r--share/man/man9/ktr.9162
-rw-r--r--share/man/man9/lock.9404
-rw-r--r--share/man/man9/locking.9372
-rw-r--r--share/man/man9/mac.9246
-rw-r--r--share/man/man9/make_dev.9291
-rw-r--r--share/man/man9/malloc.9290
-rw-r--r--share/man/man9/mbchain.9222
-rw-r--r--share/man/man9/mbpool.9264
-rw-r--r--share/man/man9/mbuf.91185
-rw-r--r--share/man/man9/mbuf_tags.9286
-rw-r--r--share/man/man9/mdchain.9211
-rw-r--r--share/man/man9/memguard.9112
-rw-r--r--share/man/man9/mi_switch.9165
-rw-r--r--share/man/man9/microseq.9493
-rw-r--r--share/man/man9/microtime.9121
-rw-r--r--share/man/man9/microuptime.9108
-rw-r--r--share/man/man9/module.9121
-rw-r--r--share/man/man9/mtx_pool.9184
-rw-r--r--share/man/man9/mutex.9525
-rw-r--r--share/man/man9/namei.9350
-rw-r--r--share/man/man9/p_candebug.9138
-rw-r--r--share/man/man9/p_cansee.993
-rw-r--r--share/man/man9/panic.970
-rw-r--r--share/man/man9/pbuf.9132
-rw-r--r--share/man/man9/pci.9279
-rw-r--r--share/man/man9/pfil.9216
-rw-r--r--share/man/man9/pfind.988
-rw-r--r--share/man/man9/pgfind.965
-rw-r--r--share/man/man9/physio.9138
-rw-r--r--share/man/man9/pmap.9130
-rw-r--r--share/man/man9/pmap_activate.951
-rw-r--r--share/man/man9/pmap_change_wiring.968
-rw-r--r--share/man/man9/pmap_clear_modify.963
-rw-r--r--share/man/man9/pmap_copy.984
-rw-r--r--share/man/man9/pmap_enter.968
-rw-r--r--share/man/man9/pmap_extract.995
-rw-r--r--share/man/man9/pmap_growkernel.951
-rw-r--r--share/man/man9/pmap_init.965
-rw-r--r--share/man/man9/pmap_is_modified.971
-rw-r--r--share/man/man9/pmap_is_prefaultable.957
-rw-r--r--share/man/man9/pmap_map.980
-rw-r--r--share/man/man9/pmap_mincore.974
-rw-r--r--share/man/man9/pmap_object_init_pt.973
-rw-r--r--share/man/man9/pmap_page_exists_quick.966
-rw-r--r--share/man/man9/pmap_page_init.951
-rw-r--r--share/man/man9/pmap_page_protect.967
-rw-r--r--share/man/man9/pmap_pinit.967
-rw-r--r--share/man/man9/pmap_qenter.979
-rw-r--r--share/man/man9/pmap_release.958
-rw-r--r--share/man/man9/pmap_remove.984
-rw-r--r--share/man/man9/pmap_resident_count.974
-rw-r--r--share/man/man9/pmap_zero_page.972
-rw-r--r--share/man/man9/printf.9175
-rw-r--r--share/man/man9/prison_check.963
-rw-r--r--share/man/man9/priv.9122
-rw-r--r--share/man/man9/pseudofs.970
-rw-r--r--share/man/man9/psignal.9148
-rw-r--r--share/man/man9/random.9156
-rw-r--r--share/man/man9/random_harvest.9112
-rw-r--r--share/man/man9/redzone.9123
-rw-r--r--share/man/man9/resettodr.962
-rw-r--r--share/man/man9/resource_int_value.979
-rw-r--r--share/man/man9/rijndael.9135
-rw-r--r--share/man/man9/rman.9353
-rw-r--r--share/man/man9/rmlock.9212
-rw-r--r--share/man/man9/rtalloc.9240
-rw-r--r--share/man/man9/rtentry.9252
-rw-r--r--share/man/man9/runqueue.9137
-rw-r--r--share/man/man9/rwlock.9313
-rw-r--r--share/man/man9/sbuf.9380
-rw-r--r--share/man/man9/scheduler.9276
-rw-r--r--share/man/man9/securelevel_gt.971
-rw-r--r--share/man/man9/selrecord.9109
-rw-r--r--share/man/man9/sema.9132
-rw-r--r--share/man/man9/sf_buf.9142
-rw-r--r--share/man/man9/signal.9446
-rw-r--r--share/man/man9/sleep.9326
-rw-r--r--share/man/man9/sleepqueue.9376
-rw-r--r--share/man/man9/socket.9338
-rw-r--r--share/man/man9/spl.9228
-rw-r--r--share/man/man9/stack.9140
-rw-r--r--share/man/man9/store.989
-rw-r--r--share/man/man9/style.9855
-rw-r--r--share/man/man9/swi.9228
-rw-r--r--share/man/man9/sx.9328
-rw-r--r--share/man/man9/sysctl.9307
-rw-r--r--share/man/man9/sysctl_add_oid.9530
-rw-r--r--share/man/man9/sysctl_ctx_init.9247
-rw-r--r--share/man/man9/taskqueue.9317
-rw-r--r--share/man/man9/thread_exit.963
-rw-r--r--share/man/man9/time.9115
-rw-r--r--share/man/man9/timeout.9570
-rw-r--r--share/man/man9/tvtohz.958
-rw-r--r--share/man/man9/ucred.9204
-rw-r--r--share/man/man9/uidinfo.9109
-rw-r--r--share/man/man9/uio.9185
-rw-r--r--share/man/man9/usbdi.91253
-rw-r--r--share/man/man9/utopia.9353
-rw-r--r--share/man/man9/vaccess.9127
-rw-r--r--share/man/man9/vaccess_acl_posix1e.9128
-rw-r--r--share/man/man9/vcount.973
-rw-r--r--share/man/man9/vflush.982
-rw-r--r--share/man/man9/vfs_busy.990
-rw-r--r--share/man/man9/vfs_getnewfsid.977
-rw-r--r--share/man/man9/vfs_getopt.9198
-rw-r--r--share/man/man9/vfs_getvfs.977
-rw-r--r--share/man/man9/vfs_mount.9136
-rw-r--r--share/man/man9/vfs_mountedfrom.955
-rw-r--r--share/man/man9/vfs_rootmountalloc.966
-rw-r--r--share/man/man9/vfs_suser.972
-rw-r--r--share/man/man9/vfs_timestamp.963
-rw-r--r--share/man/man9/vfs_unbusy.964
-rw-r--r--share/man/man9/vfs_unmountall.947
-rw-r--r--share/man/man9/vfsconf.9151
-rw-r--r--share/man/man9/vget.971
-rw-r--r--share/man/man9/vgone.971
-rw-r--r--share/man/man9/vhold.983
-rw-r--r--share/man/man9/vinvalbuf.9119
-rw-r--r--share/man/man9/vm_fault_prefault.972
-rw-r--r--share/man/man9/vm_map.9351
-rw-r--r--share/man/man9/vm_map_check_protection.970
-rw-r--r--share/man/man9/vm_map_clean.985
-rw-r--r--share/man/man9/vm_map_create.966
-rw-r--r--share/man/man9/vm_map_delete.968
-rw-r--r--share/man/man9/vm_map_entry_resize_free.9244
-rw-r--r--share/man/man9/vm_map_find.9127
-rw-r--r--share/man/man9/vm_map_findspace.978
-rw-r--r--share/man/man9/vm_map_inherit.985
-rw-r--r--share/man/man9/vm_map_init.959
-rw-r--r--share/man/man9/vm_map_insert.996
-rw-r--r--share/man/man9/vm_map_lock.9119
-rw-r--r--share/man/man9/vm_map_lookup.988
-rw-r--r--share/man/man9/vm_map_madvise.977
-rw-r--r--share/man/man9/vm_map_max.966
-rw-r--r--share/man/man9/vm_map_protect.993
-rw-r--r--share/man/man9/vm_map_remove.969
-rw-r--r--share/man/man9/vm_map_simplify_entry.961
-rw-r--r--share/man/man9/vm_map_stack.9132
-rw-r--r--share/man/man9/vm_map_submap.995
-rw-r--r--share/man/man9/vm_map_wire.9114
-rw-r--r--share/man/man9/vm_page_alloc.9107
-rw-r--r--share/man/man9/vm_page_bits.9167
-rw-r--r--share/man/man9/vm_page_cache.951
-rw-r--r--share/man/man9/vm_page_copy.957
-rw-r--r--share/man/man9/vm_page_deactivate.950
-rw-r--r--share/man/man9/vm_page_dontneed.959
-rw-r--r--share/man/man9/vm_page_flag.961
-rw-r--r--share/man/man9/vm_page_free.998
-rw-r--r--share/man/man9/vm_page_grab.970
-rw-r--r--share/man/man9/vm_page_hold.975
-rw-r--r--share/man/man9/vm_page_insert.996
-rw-r--r--share/man/man9/vm_page_io.965
-rw-r--r--share/man/man9/vm_page_lookup.963
-rw-r--r--share/man/man9/vm_page_protect.975
-rw-r--r--share/man/man9/vm_page_rename.972
-rw-r--r--share/man/man9/vm_page_sleep_busy.968
-rw-r--r--share/man/man9/vm_page_wakeup.975
-rw-r--r--share/man/man9/vm_page_wire.967
-rw-r--r--share/man/man9/vm_page_zero_fill.953
-rw-r--r--share/man/man9/vm_set_page_size.962
-rw-r--r--share/man/man9/vn_fullpath.9125
-rw-r--r--share/man/man9/vn_isdisk.973
-rw-r--r--share/man/man9/vnode.9167
-rw-r--r--share/man/man9/vput.963
-rw-r--r--share/man/man9/vref.968
-rw-r--r--share/man/man9/vrefcnt.953
-rw-r--r--share/man/man9/vrele.965
-rw-r--r--share/man/man9/vslock.998
-rw-r--r--share/man/man9/watchdog.981
-rw-r--r--share/man/man9/zero_copy.9168
-rw-r--r--share/man/man9/zone.9214
-rw-r--r--share/me/Makefile29
-rw-r--r--share/me/acm.me87
-rw-r--r--share/me/chars.me94
-rw-r--r--share/me/deltext.me53
-rw-r--r--share/me/eqn.me112
-rw-r--r--share/me/float.me100
-rw-r--r--share/me/footnote.me118
-rw-r--r--share/me/index.me109
-rw-r--r--share/me/letterhead.me100
-rw-r--r--share/me/local.me43
-rw-r--r--share/me/null.me39
-rw-r--r--share/me/orig_me.7318
-rw-r--r--share/me/refer.me129
-rw-r--r--share/me/revisions230
-rw-r--r--share/me/sh.me142
-rw-r--r--share/me/strip.sed44
-rw-r--r--share/me/summary.external238
-rw-r--r--share/me/tbl.me143
-rw-r--r--share/me/test/test.accent7
-rw-r--r--share/me/test/test.umlaut39
-rw-r--r--share/me/thesis.me53
-rw-r--r--share/me/tmac.orig_me1192
-rw-r--r--share/misc/Makefile14
-rw-r--r--share/misc/ascii50
-rw-r--r--share/misc/birthtoken14
-rw-r--r--share/misc/bsd-family-tree553
-rw-r--r--share/misc/committers-doc.dot127
-rw-r--r--share/misc/committers-ports.dot320
-rw-r--r--share/misc/committers-src.dot420
-rw-r--r--share/misc/eqnchar90
-rw-r--r--share/misc/flowers48
-rw-r--r--share/misc/init.ee3
-rw-r--r--share/misc/iso3166520
-rw-r--r--share/misc/iso639473
-rw-r--r--share/misc/latin140
-rw-r--r--share/misc/man.template8
-rw-r--r--share/misc/mdoc.template35
-rw-r--r--share/misc/operator19
-rw-r--r--share/misc/organization.dot120
-rw-r--r--share/misc/pci_vendors9713
-rw-r--r--share/misc/scsi_modes358
-rw-r--r--share/misc/usb_hid_usages1730
-rw-r--r--share/mk/Makefile17
-rw-r--r--share/mk/bsd.README361
-rw-r--r--share/mk/bsd.compat.mk41
-rw-r--r--share/mk/bsd.cpu.mk222
-rw-r--r--share/mk/bsd.dep.mk198
-rw-r--r--share/mk/bsd.doc.mk196
-rw-r--r--share/mk/bsd.endian.mk14
-rw-r--r--share/mk/bsd.files.mk69
-rw-r--r--share/mk/bsd.incs.mk84
-rw-r--r--share/mk/bsd.info.mk199
-rw-r--r--share/mk/bsd.init.mk15
-rw-r--r--share/mk/bsd.kmod.mk17
-rw-r--r--share/mk/bsd.lib.mk393
-rw-r--r--share/mk/bsd.libnames.mk162
-rw-r--r--share/mk/bsd.links.mk31
-rw-r--r--share/mk/bsd.man.mk250
-rw-r--r--share/mk/bsd.nls.mk74
-rw-r--r--share/mk/bsd.obj.mk133
-rw-r--r--share/mk/bsd.own.mk538
-rw-r--r--share/mk/bsd.pkg.mk48
-rw-r--r--share/mk/bsd.port.mk11
-rw-r--r--share/mk/bsd.port.options.mk8
-rw-r--r--share/mk/bsd.port.post.mk7
-rw-r--r--share/mk/bsd.port.pre.mk7
-rw-r--r--share/mk/bsd.port.subdir.mk6
-rw-r--r--share/mk/bsd.prog.mk229
-rw-r--r--share/mk/bsd.snmpmod.mk27
-rw-r--r--share/mk/bsd.subdir.mk95
-rw-r--r--share/mk/bsd.symver.mk47
-rw-r--r--share/mk/bsd.sys.mk85
-rw-r--r--share/mk/sys.mk357
-rw-r--r--share/mk/version_gen.awk249
-rw-r--r--share/mklocale/Makefile97
-rw-r--r--share/mklocale/README.locale_name9
-rw-r--r--share/mklocale/UTF-8.src2400
-rw-r--r--share/mklocale/am_ET.UTF-8.src44
-rw-r--r--share/mklocale/be_BY.CP1131.src65
-rw-r--r--share/mklocale/bg_BG.CP1251.src88
-rw-r--r--share/mklocale/el_GR.ISO8859-7.src45
-rw-r--r--share/mklocale/hi_IN.ISCII-DEV.src35
-rw-r--r--share/mklocale/hy_AM.ARMSCII-8.src200
-rw-r--r--share/mklocale/ja_JP.SJIS.src290
-rw-r--r--share/mklocale/ja_JP.eucJP.src245
-rw-r--r--share/mklocale/kk_KZ.PT154.src105
-rw-r--r--share/mklocale/ko_KR.CP949.src188
-rw-r--r--share/mklocale/ko_KR.eucKR.src166
-rw-r--r--share/mklocale/la_LN.ISO8859-1.src40
-rw-r--r--share/mklocale/la_LN.ISO8859-15.src48
-rw-r--r--share/mklocale/la_LN.ISO8859-2.src78
-rw-r--r--share/mklocale/la_LN.ISO8859-4.src78
-rw-r--r--share/mklocale/la_LN.US-ASCII.src29
-rw-r--r--share/mklocale/lt_LT.ISO8859-13.src49
-rw-r--r--share/mklocale/ru_RU.CP866.src56
-rw-r--r--share/mklocale/ru_RU.ISO8859-5.src46
-rw-r--r--share/mklocale/ru_RU.KOI8-R.src40
-rw-r--r--share/mklocale/tr_TR.ISO8859-9.src48
-rw-r--r--share/mklocale/uk_UA.KOI8-U.src56
-rw-r--r--share/mklocale/zh_CN.GB18030.src7100
-rw-r--r--share/mklocale/zh_CN.GB2312.src243
-rw-r--r--share/mklocale/zh_CN.GBK.src328
-rw-r--r--share/mklocale/zh_CN.eucCN.src255
-rw-r--r--share/mklocale/zh_HK.Big5HKSCS.src257
-rw-r--r--share/mklocale/zh_TW.Big5.src308
-rw-r--r--share/monetdef/Makefile131
-rw-r--r--share/monetdef/af_ZA.ISO8859-1.src36
-rw-r--r--share/monetdef/am_ET.UTF-8.src36
-rw-r--r--share/monetdef/be_BY.CP1131.src35
-rw-r--r--share/monetdef/be_BY.CP1251.src35
-rw-r--r--share/monetdef/be_BY.ISO8859-5.src35
-rw-r--r--share/monetdef/be_BY.UTF-8.src35
-rw-r--r--share/monetdef/bg_BG.CP1251.src36
-rw-r--r--share/monetdef/bg_BG.UTF-8.src36
-rw-r--r--share/monetdef/ca_ES.ISO8859-1.src36
-rw-r--r--share/monetdef/cs_CZ.ISO8859-2.src36
-rw-r--r--share/monetdef/cs_CZ.UTF-8.src36
-rw-r--r--share/monetdef/da_DK.ISO8859-1.src36
-rw-r--r--share/monetdef/de_AT.ISO8859-1.src36
-rw-r--r--share/monetdef/de_CH.ISO8859-1.src36
-rw-r--r--share/monetdef/de_DE.ISO8859-1.src36
-rw-r--r--share/monetdef/el_GR.ISO8859-7.src36
-rw-r--r--share/monetdef/en_AU.ISO8859-1.src48
-rw-r--r--share/monetdef/en_CA.ISO8859-1.src36
-rw-r--r--share/monetdef/en_GB.ISO8859-1.src36
-rw-r--r--share/monetdef/en_GB.UTF-8.src36
-rw-r--r--share/monetdef/en_IE.UTF-8.src36
-rw-r--r--share/monetdef/en_NZ.ISO8859-1.src36
-rw-r--r--share/monetdef/en_US.ISO8859-1.src36
-rw-r--r--share/monetdef/es_ES.ISO8859-1.src36
-rw-r--r--share/monetdef/et_EE.ISO8859-15.src36
-rw-r--r--share/monetdef/fi_FI.ISO8859-1.src36
-rw-r--r--share/monetdef/fr_BE.ISO8859-1.src36
-rw-r--r--share/monetdef/fr_CA.ISO8859-1.src36
-rw-r--r--share/monetdef/fr_FR.ISO8859-1.src36
-rw-r--r--share/monetdef/he_IL.UTF-8.src36
-rw-r--r--share/monetdef/hi_IN.ISCII-DEV.src36
-rw-r--r--share/monetdef/hr_HR.ISO8859-2.src36
-rw-r--r--share/monetdef/hu_HU.ISO8859-2.src36
-rw-r--r--share/monetdef/hy_AM.ARMSCII-8.src39
-rw-r--r--share/monetdef/hy_AM.UTF-8.src39
-rw-r--r--share/monetdef/is_IS.ISO8859-1.src36
-rw-r--r--share/monetdef/it_IT.ISO8859-1.src36
-rw-r--r--share/monetdef/ja_JP.UTF-8.src36
-rw-r--r--share/monetdef/ja_JP.eucJP.src36
-rw-r--r--share/monetdef/kk_KZ.PT154.src36
-rw-r--r--share/monetdef/kk_KZ.UTF-8.src36
-rw-r--r--share/monetdef/ko_KR.UTF-8.src36
-rw-r--r--share/monetdef/ko_KR.eucKR.src36
-rw-r--r--share/monetdef/lt_LT.ISO8859-13.src36
-rw-r--r--share/monetdef/mn_MN.UTF-8.src36
-rw-r--r--share/monetdef/nl_BE.ISO8859-1.src36
-rw-r--r--share/monetdef/nl_NL.ISO8859-1.src36
-rw-r--r--share/monetdef/no_NO.ISO8859-1.src36
-rw-r--r--share/monetdef/pl_PL.ISO8859-2.src36
-rw-r--r--share/monetdef/pl_PL.UTF-8.src36
-rw-r--r--share/monetdef/pt_BR.ISO8859-1.src36
-rw-r--r--share/monetdef/pt_PT.ISO8859-1.src36
-rw-r--r--share/monetdef/ro_RO.ISO8859-2.src36
-rw-r--r--share/monetdef/ru_RU.CP1251.src36
-rw-r--r--share/monetdef/ru_RU.CP866.src36
-rw-r--r--share/monetdef/ru_RU.ISO8859-5.src36
-rw-r--r--share/monetdef/ru_RU.KOI8-R.src36
-rw-r--r--share/monetdef/ru_RU.UTF-8.src36
-rw-r--r--share/monetdef/sk_SK.ISO8859-2.src38
-rw-r--r--share/monetdef/sl_SI.ISO8859-2.src36
-rw-r--r--share/monetdef/sr_YU.ISO8859-2.src36
-rw-r--r--share/monetdef/sr_YU.ISO8859-5.src36
-rw-r--r--share/monetdef/sr_YU.UTF-8.src36
-rw-r--r--share/monetdef/sv_SE.ISO8859-1.src36
-rw-r--r--share/monetdef/tr_TR.ISO8859-9.src36
-rw-r--r--share/monetdef/uk_UA.CP1251.src36
-rw-r--r--share/monetdef/uk_UA.ISO8859-5.src36
-rw-r--r--share/monetdef/uk_UA.KOI8-U.src36
-rw-r--r--share/monetdef/uk_UA.UTF-8.src36
-rw-r--r--share/monetdef/zh_CN.GB18030.src36
-rw-r--r--share/monetdef/zh_CN.GB2312.src36
-rw-r--r--share/monetdef/zh_CN.UTF-8.src36
-rw-r--r--share/monetdef/zh_CN.eucCN.src36
-rw-r--r--share/monetdef/zh_HK.UTF-8.src36
-rw-r--r--share/monetdef/zh_TW.Big5.src36
-rw-r--r--share/msgdef/Makefile140
-rw-r--r--share/msgdef/af_ZA.ISO8859-1.src10
-rw-r--r--share/msgdef/am_ET.UTF-8.src14
-rw-r--r--share/msgdef/be_BY.CP1131.src13
-rw-r--r--share/msgdef/be_BY.CP1251.src13
-rw-r--r--share/msgdef/be_BY.ISO8859-5.src13
-rw-r--r--share/msgdef/be_BY.UTF-8.src13
-rw-r--r--share/msgdef/bg_BG.CP1251.src14
-rw-r--r--share/msgdef/bg_BG.UTF-8.src14
-rw-r--r--share/msgdef/ca_ES.ISO8859-1.src10
-rw-r--r--share/msgdef/cs_CZ.ISO8859-2.src14
-rw-r--r--share/msgdef/da_DK.ISO8859-1.src10
-rw-r--r--share/msgdef/de_DE.ISO8859-1.src10
-rw-r--r--share/msgdef/el_GR.ISO8859-7.src14
-rw-r--r--share/msgdef/el_GR.UTF-8.src14
-rw-r--r--share/msgdef/en_CA.ISO8859-1.src10
-rw-r--r--share/msgdef/en_GB.ISO8859-1.src10
-rw-r--r--share/msgdef/en_US.ISO8859-1.src10
-rw-r--r--share/msgdef/es_ES.ISO8859-1.src10
-rw-r--r--share/msgdef/et_EE.ISO8859-15.src10
-rw-r--r--share/msgdef/eu_ES.ISO8859-1.src14
-rw-r--r--share/msgdef/fi_FI.ISO8859-1.src10
-rw-r--r--share/msgdef/fr_BE.ISO8859-1.src10
-rw-r--r--share/msgdef/fr_CH.ISO8859-1.src10
-rw-r--r--share/msgdef/fr_FR.ISO8859-1.src10
-rw-r--r--share/msgdef/he_IL.UTF-8.src10
-rw-r--r--share/msgdef/hi_IN.ISCII-DEV.src10
-rw-r--r--share/msgdef/hr_HR.ISO8859-2.src10
-rw-r--r--share/msgdef/hu_HU.ISO8859-2.src14
-rw-r--r--share/msgdef/hy_AM.ARMSCII-8.src17
-rw-r--r--share/msgdef/hy_AM.UTF-8.src17
-rw-r--r--share/msgdef/is_IS.ISO8859-1.src10
-rw-r--r--share/msgdef/it_IT.ISO8859-1.src10
-rw-r--r--share/msgdef/ja_JP.SJIS.src13
-rw-r--r--share/msgdef/ja_JP.UTF-8.src10
-rw-r--r--share/msgdef/ja_JP.eucJP.src10
-rw-r--r--share/msgdef/kk_KZ.PT154.src14
-rw-r--r--share/msgdef/kk_KZ.UTF-8.src14
-rw-r--r--share/msgdef/ko_KR.UTF-8.src14
-rw-r--r--share/msgdef/ko_KR.eucKR.src14
-rw-r--r--share/msgdef/lt_LT.ISO8859-13.src14
-rw-r--r--share/msgdef/mn_MN.UTF-8.src14
-rw-r--r--share/msgdef/nl_NL.ISO8859-1.src10
-rw-r--r--share/msgdef/no_NO.ISO8859-1.src10
-rw-r--r--share/msgdef/pl_PL.ISO8859-2.src14
-rw-r--r--share/msgdef/pt_PT.ISO8859-1.src10
-rw-r--r--share/msgdef/ro_RO.ISO8859-2.src10
-rw-r--r--share/msgdef/ru_RU.CP1251.src14
-rw-r--r--share/msgdef/ru_RU.CP866.src14
-rw-r--r--share/msgdef/ru_RU.ISO8859-5.src14
-rw-r--r--share/msgdef/ru_RU.KOI8-R.src14
-rw-r--r--share/msgdef/ru_RU.UTF-8.src14
-rw-r--r--share/msgdef/sl_SI.ISO8859-2.src10
-rw-r--r--share/msgdef/sr_YU.ISO8859-2.src10
-rw-r--r--share/msgdef/sr_YU.ISO8859-5.src14
-rw-r--r--share/msgdef/sr_YU.UTF-8.src14
-rw-r--r--share/msgdef/sv_SE.ISO8859-1.src10
-rw-r--r--share/msgdef/tr_TR.ISO8859-9.src11
-rw-r--r--share/msgdef/uk_UA.CP1251.src14
-rw-r--r--share/msgdef/uk_UA.ISO8859-5.src14
-rw-r--r--share/msgdef/uk_UA.KOI8-U.src14
-rw-r--r--share/msgdef/uk_UA.UTF-8.src14
-rw-r--r--share/msgdef/zh_CN.GB18030.src14
-rw-r--r--share/msgdef/zh_CN.GB2312.src14
-rw-r--r--share/msgdef/zh_CN.UTF-8.src14
-rw-r--r--share/msgdef/zh_CN.eucCN.src14
-rw-r--r--share/msgdef/zh_TW.Big5.src14
-rw-r--r--share/msgdef/zh_TW.UTF-8.src14
-rw-r--r--share/numericdef/Makefile129
-rw-r--r--share/numericdef/af_ZA.ISO8859-1.src12
-rw-r--r--share/numericdef/am_ET.UTF-8.src12
-rw-r--r--share/numericdef/be_BY.CP1251.src11
-rw-r--r--share/numericdef/bg_BG.CP1251.src12
-rw-r--r--share/numericdef/ca_ES.ISO8859-1.src12
-rw-r--r--share/numericdef/cs_CZ.ISO8859-2.src12
-rw-r--r--share/numericdef/da_DK.ISO8859-1.src12
-rw-r--r--share/numericdef/de_DE.ISO8859-1.src12
-rw-r--r--share/numericdef/el_GR.ISO8859-7.src12
-rw-r--r--share/numericdef/en_US.ISO8859-1.src12
-rw-r--r--share/numericdef/es_ES.ISO8859-1.src12
-rw-r--r--share/numericdef/et_EE.ISO8859-15.src12
-rw-r--r--share/numericdef/eu_ES.ISO8859-1.src12
-rw-r--r--share/numericdef/fi_FI.ISO8859-1.src12
-rw-r--r--share/numericdef/fr_BE.ISO8859-1.src12
-rw-r--r--share/numericdef/fr_FR.ISO8859-1.src12
-rw-r--r--share/numericdef/hi_IN.ISCII-DEV.src12
-rw-r--r--share/numericdef/hr_HR.ISO8859-2.src12
-rw-r--r--share/numericdef/hu_HU.ISO8859-2.src12
-rw-r--r--share/numericdef/hy_AM.ARMSCII-8.src15
-rw-r--r--share/numericdef/is_IS.ISO8859-1.src12
-rw-r--r--share/numericdef/it_IT.ISO8859-1.src12
-rw-r--r--share/numericdef/ja_JP.eucJP.src12
-rw-r--r--share/numericdef/kk_KZ.PT154.src12
-rw-r--r--share/numericdef/ko_KR.eucKR.src12
-rw-r--r--share/numericdef/lt_LT.ISO8859-13.src12
-rw-r--r--share/numericdef/mn_MN.UTF-8.src12
-rw-r--r--share/numericdef/nl_NL.ISO8859-1.src12
-rw-r--r--share/numericdef/no_NO.ISO8859-1.src12
-rw-r--r--share/numericdef/pl_PL.ISO8859-2.src12
-rw-r--r--share/numericdef/pt_BR.ISO8859-1.src12
-rw-r--r--share/numericdef/pt_PT.ISO8859-1.src12
-rw-r--r--share/numericdef/ro_RO.ISO8859-2.src12
-rw-r--r--share/numericdef/ru_RU.KOI8-R.src12
-rw-r--r--share/numericdef/sk_SK.ISO8859-2.src14
-rw-r--r--share/numericdef/sl_SI.ISO8859-2.src12
-rw-r--r--share/numericdef/sr_YU.ISO8859-2.src12
-rw-r--r--share/numericdef/sr_YU.ISO8859-5.src12
-rw-r--r--share/numericdef/sv_SE.ISO8859-1.src12
-rw-r--r--share/numericdef/tr_TR.ISO8859-9.src12
-rw-r--r--share/numericdef/uk_UA.KOI8-U.src12
-rw-r--r--share/numericdef/zh_CN.eucCN.src12
-rw-r--r--share/security/Makefile8
-rw-r--r--share/security/lomac-policy.contexts29
-rw-r--r--share/sendmail/Makefile34
-rw-r--r--share/skel/Makefile14
-rw-r--r--share/skel/dot.cshrc34
-rw-r--r--share/skel/dot.login8
-rw-r--r--share/skel/dot.login_conf7
-rw-r--r--share/skel/dot.mail_aliases13
-rw-r--r--share/skel/dot.mailrc17
-rw-r--r--share/skel/dot.profile24
-rw-r--r--share/skel/dot.rhosts9
-rw-r--r--share/skel/dot.shrc47
-rw-r--r--share/snmp/Makefile5
-rw-r--r--share/snmp/mibs/FREEBSD-MIB.txt79
-rw-r--r--share/snmp/mibs/Makefile7
-rw-r--r--share/syscons/Makefile5
-rw-r--r--share/syscons/fonts/INDEX.fonts420
-rw-r--r--share/syscons/fonts/Makefile37
-rw-r--r--share/syscons/fonts/armscii8-8x14.fnt84
-rw-r--r--share/syscons/fonts/armscii8-8x16.fnt96
-rw-r--r--share/syscons/fonts/armscii8-8x8.fnt50
-rw-r--r--share/syscons/fonts/cp1251-8x14.fnt84
-rw-r--r--share/syscons/fonts/cp1251-8x16.fnt96
-rw-r--r--share/syscons/fonts/cp1251-8x8.fnt50
-rw-r--r--share/syscons/fonts/cp437-8x14.fnt83
-rw-r--r--share/syscons/fonts/cp437-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp437-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp437-thin-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp437-thin-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp850-8x14.fnt83
-rw-r--r--share/syscons/fonts/cp850-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp850-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp850-thin-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp850-thin-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp865-8x14.fnt83
-rw-r--r--share/syscons/fonts/cp865-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp865-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp865-thin-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp865-thin-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp866-8x14.fnt83
-rw-r--r--share/syscons/fonts/cp866-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp866-8x8.fnt49
-rw-r--r--share/syscons/fonts/cp866b-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp866c-8x16.fnt95
-rw-r--r--share/syscons/fonts/cp866u-8x14.fnt84
-rw-r--r--share/syscons/fonts/cp866u-8x16.fnt96
-rw-r--r--share/syscons/fonts/cp866u-8x8.fnt50
-rw-r--r--share/syscons/fonts/haik8-8x14.fnt84
-rw-r--r--share/syscons/fonts/haik8-8x16.fnt96
-rw-r--r--share/syscons/fonts/haik8-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso-thin-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso02-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso02-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso02-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso04-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso04-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso04-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso04-vga9-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso04-vga9-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso04-vga9-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso04-vga9-wide-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso04-wide-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso05-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso05-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso05-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso07-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso07-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso07-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso08-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso08-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso08-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso09-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso15-8x14.fnt84
-rw-r--r--share/syscons/fonts/iso15-8x16.fnt96
-rw-r--r--share/syscons/fonts/iso15-8x8.fnt50
-rw-r--r--share/syscons/fonts/iso15-thin-8x16.fnt96
-rw-r--r--share/syscons/fonts/koi8-r-8x14.fnt84
-rw-r--r--share/syscons/fonts/koi8-r-8x16.fnt96
-rw-r--r--share/syscons/fonts/koi8-r-8x8.fnt50
-rw-r--r--share/syscons/fonts/koi8-rb-8x16.fnt96
-rw-r--r--share/syscons/fonts/koi8-rc-8x16.fnt96
-rw-r--r--share/syscons/fonts/koi8-u-8x14.fnt84
-rw-r--r--share/syscons/fonts/koi8-u-8x16.fnt96
-rw-r--r--share/syscons/fonts/koi8-u-8x8.fnt50
-rw-r--r--share/syscons/fonts/swiss-1131-8x16.fnt96
-rw-r--r--share/syscons/fonts/swiss-1251-8x16.fnt96
-rw-r--r--share/syscons/fonts/swiss-8x16.fnt95
-rw-r--r--share/syscons/fonts/swiss-8x8.fnt49
-rw-r--r--share/syscons/keymaps/INDEX.keymaps451
-rw-r--r--share/syscons/keymaps/Makefile52
-rw-r--r--share/syscons/keymaps/be.iso.acc.kbd139
-rw-r--r--share/syscons/keymaps/be.iso.kbd114
-rw-r--r--share/syscons/keymaps/bg.bds.ctrlcaps.kbd245
-rw-r--r--share/syscons/keymaps/bg.phonetic.ctrlcaps.kbd260
-rw-r--r--share/syscons/keymaps/br275.cp850.kbd132
-rw-r--r--share/syscons/keymaps/br275.iso.acc.kbd157
-rw-r--r--share/syscons/keymaps/br275.iso.kbd132
-rw-r--r--share/syscons/keymaps/by.cp1131.kbd224
-rw-r--r--share/syscons/keymaps/by.cp1251.kbd224
-rw-r--r--share/syscons/keymaps/by.iso5.kbd224
-rw-r--r--share/syscons/keymaps/ce.iso2.kbd237
-rw-r--r--share/syscons/keymaps/colemak.iso15.acc.kbd149
-rw-r--r--share/syscons/keymaps/cs.latin2.qwertz.kbd286
-rw-r--r--share/syscons/keymaps/cz.iso2.kbd319
-rw-r--r--share/syscons/keymaps/danish.cp865.kbd114
-rw-r--r--share/syscons/keymaps/danish.iso.kbd114
-rw-r--r--share/syscons/keymaps/dutch.iso.acc.kbd138
-rw-r--r--share/syscons/keymaps/eee_nordic.kbd131
-rw-r--r--share/syscons/keymaps/el.iso07.kbd288
-rw-r--r--share/syscons/keymaps/estonian.cp850.kbd114
-rw-r--r--share/syscons/keymaps/estonian.iso.kbd114
-rw-r--r--share/syscons/keymaps/estonian.iso15.kbd114
-rw-r--r--share/syscons/keymaps/finnish.cp850.kbd114
-rw-r--r--share/syscons/keymaps/finnish.iso.kbd114
-rw-r--r--share/syscons/keymaps/fr.dvorak.acc.kbd149
-rw-r--r--share/syscons/keymaps/fr.dvorak.kbd122
-rw-r--r--share/syscons/keymaps/fr.iso.acc.kbd139
-rw-r--r--share/syscons/keymaps/fr.iso.kbd114
-rw-r--r--share/syscons/keymaps/fr.macbook.acc.kbd139
-rw-r--r--share/syscons/keymaps/fr_CA.iso.acc.kbd145
-rw-r--r--share/syscons/keymaps/german.cp850.kbd114
-rw-r--r--share/syscons/keymaps/german.iso.acc.kbd139
-rw-r--r--share/syscons/keymaps/german.iso.kbd114
-rw-r--r--share/syscons/keymaps/gr.elot.acc.kbd281
-rw-r--r--share/syscons/keymaps/gr.us101.acc.kbd281
-rw-r--r--share/syscons/keymaps/hr.iso.kbd116
-rw-r--r--share/syscons/keymaps/hu.iso2.101keys.kbd293
-rw-r--r--share/syscons/keymaps/hu.iso2.102keys.kbd142
-rw-r--r--share/syscons/keymaps/hy.armscii-8.kbd247
-rw-r--r--share/syscons/keymaps/icelandic.iso.acc.kbd139
-rw-r--r--share/syscons/keymaps/icelandic.iso.kbd114
-rw-r--r--share/syscons/keymaps/it.iso.kbd172
-rw-r--r--share/syscons/keymaps/iw.iso8.kbd114
-rw-r--r--share/syscons/keymaps/jp.106.kbd118
-rw-r--r--share/syscons/keymaps/jp.106x.kbd120
-rw-r--r--share/syscons/keymaps/jp.pc98.iso.kbd134
-rw-r--r--share/syscons/keymaps/jp.pc98.kbd134
-rw-r--r--share/syscons/keymaps/kk.pt154.io.kbd244
-rw-r--r--share/syscons/keymaps/kk.pt154.kst.kbd244
-rw-r--r--share/syscons/keymaps/latinamerican.iso.acc.kbd139
-rw-r--r--share/syscons/keymaps/latinamerican.kbd114
-rw-r--r--share/syscons/keymaps/lt.iso4.kbd242
-rw-r--r--share/syscons/keymaps/norwegian.dvorak.kbd114
-rw-r--r--share/syscons/keymaps/norwegian.iso.kbd114
-rw-r--r--share/syscons/keymaps/pl_PL.ISO8859-2.kbd116
-rw-r--r--share/syscons/keymaps/pt.iso.acc.kbd141
-rw-r--r--share/syscons/keymaps/pt.iso.kbd116
-rw-r--r--share/syscons/keymaps/ru.cp866.kbd243
-rw-r--r--share/syscons/keymaps/ru.iso5.kbd243
-rw-r--r--share/syscons/keymaps/ru.koi8-r.kbd242
-rw-r--r--share/syscons/keymaps/ru.koi8-r.shift.kbd242
-rw-r--r--share/syscons/keymaps/ru.koi8-r.win.kbd242
-rw-r--r--share/syscons/keymaps/si.iso.kbd116
-rw-r--r--share/syscons/keymaps/sk.iso2.kbd358
-rw-r--r--share/syscons/keymaps/spanish.iso.acc.kbd139
-rw-r--r--share/syscons/keymaps/spanish.iso.kbd114
-rw-r--r--share/syscons/keymaps/spanish.iso15.acc.kbd139
-rw-r--r--share/syscons/keymaps/swedish.cp850.kbd114
-rw-r--r--share/syscons/keymaps/swedish.iso.kbd114
-rw-r--r--share/syscons/keymaps/swissfrench.cp850.kbd118
-rw-r--r--share/syscons/keymaps/swissfrench.iso.acc.kbd133
-rw-r--r--share/syscons/keymaps/swissfrench.iso.kbd117
-rw-r--r--share/syscons/keymaps/swissgerman.cp850.kbd118
-rw-r--r--share/syscons/keymaps/swissgerman.iso.acc.kbd133
-rw-r--r--share/syscons/keymaps/swissgerman.iso.kbd117
-rw-r--r--share/syscons/keymaps/tr.iso9.q.kbd129
-rw-r--r--share/syscons/keymaps/ua.iso5.kbd243
-rw-r--r--share/syscons/keymaps/ua.koi8-u.kbd242
-rw-r--r--share/syscons/keymaps/ua.koi8-u.shift.alt.kbd254
-rw-r--r--share/syscons/keymaps/uk.cp850-ctrl.kbd114
-rw-r--r--share/syscons/keymaps/uk.cp850.kbd114
-rw-r--r--share/syscons/keymaps/uk.iso-ctrl.kbd114
-rw-r--r--share/syscons/keymaps/uk.iso.kbd114
-rw-r--r--share/syscons/keymaps/us.dvorak.kbd123
-rw-r--r--share/syscons/keymaps/us.dvorakl.kbd116
-rw-r--r--share/syscons/keymaps/us.dvorakr.kbd116
-rw-r--r--share/syscons/keymaps/us.dvorakx.kbd121
-rw-r--r--share/syscons/keymaps/us.emacs.kbd111
-rw-r--r--share/syscons/keymaps/us.iso.acc.kbd139
-rw-r--r--share/syscons/keymaps/us.iso.kbd114
-rw-r--r--share/syscons/keymaps/us.pc-ctrl.kbd114
-rw-r--r--share/syscons/keymaps/us.unix.kbd114
-rw-r--r--share/syscons/scrnmaps/Makefile26
-rw-r--r--share/syscons/scrnmaps/armscii8-2haik863
-rw-r--r--share/syscons/scrnmaps/iso-8859-1_to_cp43761
-rw-r--r--share/syscons/scrnmaps/iso-8859-4_for_vga967
-rw-r--r--share/syscons/scrnmaps/iso-8859-7_to_cp43738
-rw-r--r--share/syscons/scrnmaps/koi8-r2cp86662
-rw-r--r--share/syscons/scrnmaps/koi8-u2cp866u64
-rw-r--r--share/syscons/scrnmaps/mkscrfil.c52
-rw-r--r--share/syscons/scrnmaps/us-ascii_to_cp43738
-rw-r--r--share/tabset/3101.uu6
-rw-r--r--share/tabset/9837.uu7
-rw-r--r--share/tabset/Makefile16
-rw-r--r--share/tabset/aa.uu6
-rw-r--r--share/tabset/aed512.uu17
-rw-r--r--share/tabset/beehive.uu7
-rw-r--r--share/tabset/diablo.uu5
-rw-r--r--share/tabset/dtc382.uu7
-rw-r--r--share/tabset/hp700-wy.uu6
-rw-r--r--share/tabset/ibm3101.uu6
-rw-r--r--share/tabset/std.uu6
-rw-r--r--share/tabset/stdcrt.uu6
-rw-r--r--share/tabset/tandem653.uu6
-rw-r--r--share/tabset/teleray.uu5
-rw-r--r--share/tabset/vt100-w.uu7
-rw-r--r--share/tabset/vt100.uu6
-rw-r--r--share/tabset/wyse-adds.uu9
-rw-r--r--share/tabset/xerox1720.uu7
-rw-r--r--share/tabset/xerox1730-lm.uu8
-rw-r--r--share/tabset/xerox1730.uu8
-rw-r--r--share/tabset/zenith29.uu6
-rw-r--r--share/termcap/Makefile32
-rw-r--r--share/termcap/README55
-rw-r--r--share/termcap/reorder62
-rw-r--r--share/termcap/tck91
-rw-r--r--share/termcap/termcap.52145
-rw-r--r--share/termcap/termcap.src4576
-rw-r--r--share/timedef/Makefile153
-rw-r--r--share/timedef/am_ET.UTF-8.src102
-rw-r--r--share/timedef/be_BY.CP1131.src100
-rw-r--r--share/timedef/be_BY.CP1251.src100
-rw-r--r--share/timedef/be_BY.ISO8859-5.src100
-rw-r--r--share/timedef/be_BY.UTF-8.src100
-rw-r--r--share/timedef/bg_BG.CP1251.src101
-rw-r--r--share/timedef/bg_BG.UTF-8.src101
-rw-r--r--share/timedef/ca_ES.ISO8859-1.src102
-rw-r--r--share/timedef/ca_ES.UTF-8.src102
-rw-r--r--share/timedef/cs_CZ.ISO8859-2.src105
-rw-r--r--share/timedef/cs_CZ.UTF-8.src105
-rw-r--r--share/timedef/da_DK.ISO8859-1.src102
-rw-r--r--share/timedef/da_DK.UTF-8.src102
-rw-r--r--share/timedef/de_AT.ISO8859-1.src102
-rw-r--r--share/timedef/de_AT.UTF-8.src102
-rw-r--r--share/timedef/de_DE.ISO8859-1.src102
-rw-r--r--share/timedef/de_DE.UTF-8.src102
-rw-r--r--share/timedef/el_GR.ISO8859-7.src102
-rw-r--r--share/timedef/el_GR.UTF-8.src102
-rw-r--r--share/timedef/en_GB.ISO8859-1.src102
-rw-r--r--share/timedef/en_US.ISO8859-1.src102
-rw-r--r--share/timedef/es_ES.ISO8859-1.src102
-rw-r--r--share/timedef/es_ES.UTF-8.src102
-rw-r--r--share/timedef/et_EE.ISO8859-15.src102
-rw-r--r--share/timedef/et_EE.UTF-8.src102
-rw-r--r--share/timedef/eu_ES.ISO8859-1.src102
-rw-r--r--share/timedef/fi_FI.ISO8859-1.src101
-rw-r--r--share/timedef/fi_FI.UTF-8.src101
-rw-r--r--share/timedef/fr_FR.ISO8859-1.src102
-rw-r--r--share/timedef/fr_FR.UTF-8.src102
-rw-r--r--share/timedef/he_IL.UTF-8.src101
-rw-r--r--share/timedef/hi_IN.ISCII-DEV.src103
-rw-r--r--share/timedef/hr_HR.ISO8859-2.src102
-rw-r--r--share/timedef/hr_HR.UTF-8.src102
-rw-r--r--share/timedef/hu_HU.ISO8859-2.src101
-rw-r--r--share/timedef/hu_HU.UTF-8.src101
-rw-r--r--share/timedef/hy_AM.ARMSCII-8.src105
-rw-r--r--share/timedef/hy_AM.UTF-8.src105
-rw-r--r--share/timedef/is_IS.ISO8859-1.src102
-rw-r--r--share/timedef/is_IS.UTF-8.src102
-rw-r--r--share/timedef/it_IT.ISO8859-1.src102
-rw-r--r--share/timedef/it_IT.UTF-8.src102
-rw-r--r--share/timedef/ja_JP.SJIS.src106
-rw-r--r--share/timedef/ja_JP.UTF-8.src105
-rw-r--r--share/timedef/ja_JP.eucJP.src105
-rw-r--r--share/timedef/kk_KZ.PT154.src102
-rw-r--r--share/timedef/kk_KZ.UTF-8.src102
-rw-r--r--share/timedef/ko_KR.UTF-8.src108
-rw-r--r--share/timedef/ko_KR.eucKR.src108
-rw-r--r--share/timedef/la_LN.ISO8859-1.src104
-rw-r--r--share/timedef/lt_LT.ISO8859-13.src101
-rw-r--r--share/timedef/lt_LT.ISO8859-4.src101
-rw-r--r--share/timedef/lt_LT.UTF-8.src101
-rw-r--r--share/timedef/mn_MN.UTF-8.src102
-rw-r--r--share/timedef/nb_NO.ISO8859-1.src102
-rw-r--r--share/timedef/nb_NO.UTF-8.src102
-rw-r--r--share/timedef/nl_NL.ISO8859-1.src101
-rw-r--r--share/timedef/nn_NO.ISO8859-1.src102
-rw-r--r--share/timedef/nn_NO.UTF-8.src102
-rw-r--r--share/timedef/pl_PL.ISO8859-2.src99
-rw-r--r--share/timedef/pl_PL.UTF-8.src99
-rw-r--r--share/timedef/pt_BR.ISO8859-1.src103
-rw-r--r--share/timedef/pt_BR.UTF-8.src103
-rw-r--r--share/timedef/pt_PT.ISO8859-1.src103
-rw-r--r--share/timedef/pt_PT.UTF-8.src103
-rw-r--r--share/timedef/ro_RO.ISO8859-2.src102
-rw-r--r--share/timedef/ro_RO.UTF-8.src102
-rw-r--r--share/timedef/ru_RU.CP1251.src102
-rw-r--r--share/timedef/ru_RU.CP866.src102
-rw-r--r--share/timedef/ru_RU.ISO8859-5.src102
-rw-r--r--share/timedef/ru_RU.KOI8-R.src102
-rw-r--r--share/timedef/ru_RU.UTF-8.src102
-rw-r--r--share/timedef/sk_SK.ISO8859-2.src105
-rw-r--r--share/timedef/sk_SK.UTF-8.src105
-rw-r--r--share/timedef/sl_SI.ISO8859-2.src102
-rw-r--r--share/timedef/sl_SI.UTF-8.src102
-rw-r--r--share/timedef/sr_YU.ISO8859-2.src102
-rw-r--r--share/timedef/sr_YU.ISO8859-5.src102
-rw-r--r--share/timedef/sr_YU.UTF-8.src102
-rw-r--r--share/timedef/sv_SE.ISO8859-1.src101
-rw-r--r--share/timedef/sv_SE.UTF-8.src101
-rw-r--r--share/timedef/tr_TR.ISO8859-9.src104
-rw-r--r--share/timedef/tr_TR.UTF-8.src104
-rw-r--r--share/timedef/uk_UA.CP1251.src102
-rw-r--r--share/timedef/uk_UA.ISO8859-5.src102
-rw-r--r--share/timedef/uk_UA.KOI8-U.src102
-rw-r--r--share/timedef/uk_UA.UTF-8.src102
-rw-r--r--share/timedef/zh_CN.GB18030.src102
-rw-r--r--share/timedef/zh_CN.GB2312.src102
-rw-r--r--share/timedef/zh_CN.UTF-8.src102
-rw-r--r--share/timedef/zh_CN.eucCN.src102
-rw-r--r--share/timedef/zh_TW.Big5.src101
-rw-r--r--share/timedef/zh_TW.UTF-8.src101
-rw-r--r--share/zoneinfo/Makefile57
-rw-r--r--share/zoneinfo/africa840
-rw-r--r--share/zoneinfo/antarctica327
-rw-r--r--share/zoneinfo/asia2043
-rw-r--r--share/zoneinfo/australasia1454
-rw-r--r--share/zoneinfo/backward112
-rw-r--r--share/zoneinfo/etcetera80
-rw-r--r--share/zoneinfo/europe2594
-rw-r--r--share/zoneinfo/factory8
-rw-r--r--share/zoneinfo/leapseconds92
-rw-r--r--share/zoneinfo/northamerica2651
-rw-r--r--share/zoneinfo/pacificnew26
-rw-r--r--share/zoneinfo/southamerica1428
-rw-r--r--share/zoneinfo/systemv36
-rwxr-xr-xshare/zoneinfo/yearistype.sh40
-rw-r--r--share/zoneinfo/zone.tab425
2288 files changed, 706157 insertions, 0 deletions
diff --git a/share/Makefile b/share/Makefile
new file mode 100644
index 0000000..308693c
--- /dev/null
+++ b/share/Makefile
@@ -0,0 +1,80 @@
+# @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+# Do not include `info' in the SUBDIR list, it is handled separately.
+
+SUBDIR= ${_colldef} \
+ ${_dict} \
+ ${_doc} \
+ ${_examples} \
+ ${_man} \
+ ${_me} \
+ misc \
+ ${_mk} \
+ ${_mklocale} \
+ ${_monetdef} \
+ ${_msgdef} \
+ ${_numericdef} \
+ ${_sendmail} \
+ skel \
+ ${_snmp} \
+ ${_syscons} \
+ tabset \
+ termcap \
+ ${_timedef} \
+ ${_zoneinfo}
+
+# NB: keep these sorted by MK_* knobs
+
+.if ${MK_BSNMP} != "no"
+_snmp= snmp
+.endif
+
+.if ${MK_DICT} != "no"
+_dict= dict
+.endif
+
+.if ${MK_EXAMPLES} != "no"
+_examples= examples
+.endif
+
+.if ${MK_GROFF} != "no"
+_me= me
+.endif
+
+.if ${MK_LOCALES} != "no"
+_colldef = colldef
+_mklocale = mklocale
+_monetdef = monetdef
+_msgdef = msgdef
+_numericdef = numericdef
+_timedef = timedef
+.endif
+
+.if ${MK_MAKE} != "no"
+_mk= mk
+.endif
+
+.if ${MK_MAN} != "no"
+_man= man
+.endif
+
+.if ${MK_SENDMAIL} != "no"
+_sendmail= sendmail
+.endif
+
+.if ${MK_SHAREDOCS} != "no"
+_doc= doc
+.endif
+
+.if ${MK_SYSCONS} != "no"
+_syscons= syscons
+.endif
+
+.if ${MK_ZONEINFO} != "no"
+_zoneinfo= zoneinfo
+.endif
+
+.include <bsd.subdir.mk>
diff --git a/share/Makefile.inc b/share/Makefile.inc
new file mode 100644
index 0000000..dbe7ccf
--- /dev/null
+++ b/share/Makefile.inc
@@ -0,0 +1,6 @@
+# @(#)Makefile.inc 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+BINDIR?= ${SHAREDIR}
+BINOWN= ${SHAREOWN}
+BINGRP= ${SHAREGRP}
diff --git a/share/colldef/Makefile b/share/colldef/Makefile
new file mode 100644
index 0000000..be21dfc
--- /dev/null
+++ b/share/colldef/Makefile
@@ -0,0 +1,112 @@
+# $FreeBSD$
+
+LOCALES= bg_BG.CP1251 \
+ be_BY.CP1131 \
+ be_BY.CP1251 \
+ be_BY.ISO8859-5 \
+ ca_ES.ISO8859-1 \
+ ca_ES.ISO8859-15 \
+ cs_CZ.ISO8859-2 \
+ de_DE.ISO8859-1 \
+ de_DE.ISO8859-15 \
+ el_GR.ISO8859-7 \
+ es_ES.ISO8859-1 \
+ es_ES.ISO8859-15 \
+ et_EE.ISO8859-15 \
+ hi_IN.ISCII-DEV \
+ hy_AM.ARMSCII-8 \
+ is_IS.ISO8859-1 \
+ is_IS.ISO8859-15 \
+ kk_KZ.PT154 \
+ la_LN.ISO8859-1 \
+ la_LN.ISO8859-15 \
+ la_LN.ISO8859-2 \
+ la_LN.ISO8859-4 \
+ la_LN.US-ASCII \
+ no_NO.ISO8859-1 \
+ no_NO.ISO8859-15 \
+ lt_LT.ISO8859-4 \
+ lt_LT.ISO8859-13 \
+ pl_PL.ISO8859-2 \
+ ru_RU.CP1251 \
+ ru_RU.CP866 \
+ ru_RU.ISO8859-5 \
+ ru_RU.KOI8-R \
+ sl_SI.ISO8859-2 \
+ sr_YU.ISO8859-5 \
+ sv_SE.ISO8859-1 \
+ sv_SE.ISO8859-15 \
+ tr_TR.ISO8859-9 \
+ uk_UA.CP1251 \
+ uk_UA.ISO8859-5 \
+ uk_UA.KOI8-U
+
+LOCALEDIR= /usr/share/locale
+
+.SUFFIXES: .src .out
+
+.src.out:
+ colldef -I ${.CURDIR} -o ${.TARGET} ${.IMPSRC}
+
+FILES= ${LOCALES:S/$/.out/}
+FILESNAME= LC_COLLATE
+
+.for locale in ${LOCALES}
+FILESDIR_${locale}.out= ${LOCALEDIR}/${locale}
+.if exists(${.CURDIR}/map.${locale:E})
+${locale}.out: map.${locale:E}
+.endif
+.endfor
+
+CLEANFILES= ${FILES}
+
+ENCODINGS= Big5 Big5HKSCS CP949 eucCN eucJP eucKR GB18030 GB2312 GBK \
+ ISO8859-1 ISO8859-2 ISO8859-15 SJIS US-ASCII UTF-8
+
+ISO8859-1_Big5= is_IS:zh_TW
+ISO8859-1_ISO8859-1= ${ISO8859-15_ISO8859-15} pt_PT:pt_BR
+
+LATIN1LINKS= af_ZA da_DK en_AU en_CA en_GB en_NZ en_US eu_ES fi_FI \
+ fr_BE fr_CA fr_CH fr_FR it_CH it_IT nl_BE nl_NL pt_PT
+ISO8859-15_ISO8859-15= \
+ de_DE:de_AT de_DE:de_CH \
+ no_NO:nb_NO no_NO:nn_NO \
+ ${LATIN1LINKS:C/^/la_LN:/}
+
+LATIN2LINKS= hr_HR hu_HU ro_RO sr_YU
+ISO8859-2_ISO8859-2= ${LATIN2LINKS:C/^/la_LN:/} cs_CZ:sk_SK
+
+US-ASCII_Big5HKSCS= la_LN:zh_HK
+US-ASCII_CP949= la_LN:ko_KR
+US-ASCII_eucCN= la_LN:zh_CN
+US-ASCII_eucJP= la_LN:ja_JP
+US-ASCII_eucKR= la_LN:ko_KR
+US-ASCII_GB18030= la_LN:zh_CN
+US-ASCII_GB2312= la_LN:zh_CN
+US-ASCII_GBK= la_LN:zh_CN
+US-ASCII_SJIS= la_LN:ja_JP
+
+ASCIILINKS= en_AU en_CA en_GB en_NZ en_US
+US-ASCII_US-ASCII= ${ASCIILINKS:C/^/la_LN:/}
+
+UTF8LINKS= af_ZA am_ET be_BY bg_BG ca_ES cs_CZ da_DK de_AT de_CH \
+ de_DE el_GR en_AU en_CA en_GB en_IE en_NZ en_US es_ES \
+ et_EE eu_ES fi_FI fr_BE \
+ fr_CA fr_CH fr_FR he_IL hr_HR hu_HU hy_AM is_IS it_CH it_IT \
+ ja_JP kk_KZ ko_KR lt_LT mn_MN \
+ nb_NO nl_BE nl_NL nn_NO no_NO pl_PL pt_BR pt_PT \
+ ro_RO ru_RU sk_SK sl_SI sr_YU sv_SE tr_TR uk_UA zh_CN zh_HK \
+ zh_TW
+US-ASCII_UTF-8= ${UTF8LINKS:C/^/la_LN:/}
+
+SYMLINKS=
+.for enc1 in ${ENCODINGS}
+.for enc2 in ${ENCODINGS}
+.for lang_terr in ${${enc1}_${enc2}}
+SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+.endfor
+.endfor
+.endfor
+
+.include <bsd.prog.mk>
diff --git a/share/colldef/README b/share/colldef/README
new file mode 100644
index 0000000..7e8e804
--- /dev/null
+++ b/share/colldef/README
@@ -0,0 +1,6 @@
+$FreeBSD$
+
+WARNING: For the compatibility sake try to keep collating table backward
+compatible with ASCII, i.e. add other symbols to the existent ASCII order.
+
+For mnemonic names see ftp://std.dkuug.dk/i18n/charmaps/
diff --git a/share/colldef/be_BY.CP1131.src b/share/colldef/be_BY.CP1131.src
new file mode 100644
index 0000000..ed9f3cb
--- /dev/null
+++ b/share/colldef/be_BY.CP1131.src
@@ -0,0 +1,41 @@
+# $FreeBSD$
+charmap map.CP1131
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;\,;-;.;/;\
+# digits
+ 0;1;2;3;...;9;\
+#
+ :;\;;\<;=;>;?;<At>;\
+# uppercase
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
+ <II>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;(<U=>,<V%>);<F=>;<H=>;<C=>;<C%>;<S%>;\
+ <Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# lowercase
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
+ <ii>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;(<u=>,<v%>);<f=>;<h=>;<c=>;<c%>;<s%>;\
+ <y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;|;\};~;<DT>;\
+#
+ <IE>;<YI>;<G3>;\
+ \
+ <ie>;<yi>;<g3>;<I=>;<i=>;<Sc>;<sc>;<=">;<='>;\
+ \
+ <.M>;<Cu>;<NS>;<Sb>;\
+ \
+ <.S>;<:S>;<?S>;<vv>;<vl>;<vL>;<Vl>;<Dl>;\
+ <dL>;<VL>;<VV>;<LD>;<UL>;<Ul>;<uL>;<dl>;\
+ <ur>;<uh>;<dh>;<vr>;<hh>;<vh>;<vR>;<Vr>;\
+ <UR>;<DR>;<UH>;<DH>;<VR>;<HH>;<VH>;<uH>;\
+ <Uh>;<dH>;<Dh>;<Ur>;<uR>;<dR>;<Dr>;<Vh>;\
+ <vH>;<ul>;<dr>;<FB>;<LB>;<lB>;<RB>;<TB>
diff --git a/share/colldef/be_BY.CP1251.src b/share/colldef/be_BY.CP1251.src
new file mode 100644
index 0000000..aae4c7d
--- /dev/null
+++ b/share/colldef/be_BY.CP1251.src
@@ -0,0 +1,37 @@
+# $FreeBSD$
+charmap map.CP1251
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;\,;-;.;/;\
+# digits
+ 0;1;2;3;...;9;\
+#
+ :;\;;\<;=;>;?;<At>;\
+# uppercase
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
+ <II>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;(<U=>,<V%>);<F=>;<H=>;<C=>;<C%>;<S%>;\
+ <Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# lowercase
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
+ <ii>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;(<u=>,<v%>);<f=>;<h=>;<c=>;<c%>;<s%>;\
+ <y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;|;\};~;<DT>;\
+#
+ <D%>;<G%>;<.9>;<g%>;<:9>;<.3>;</->;</=>;\
+ <Eu>;<%0>;<LJ>;<<1>;<NJ>;<KJ>;<Ts>;<DZ>;\
+ <d%>;<'6>;<'9>;<"6>;<"9>;<sb>;<-N>;<-M>;\
+ <FB>;<TM>;<lj>;</>1>;<nj>;<kj>;<ts>;<dz>;\
+ <NS>;<J%>;<Cu>;<G3>;<BB>;<SE>;\
+ <Co>;<IE>;<<<>;<NO>;<-->;<Rg>;<YI>;\
+ <DG>;<+->;<g3>;<My>;<PI>;<.M>;\
+ <N0>;<ie>;</>/>>;<j%>;<DS>;<ds>;<yi>;<I=>;<i=>;<Sc>;<sc>;<=">;<='>
diff --git a/share/colldef/be_BY.ISO8859-5.src b/share/colldef/be_BY.ISO8859-5.src
new file mode 100644
index 0000000..bd1e08b
--- /dev/null
+++ b/share/colldef/be_BY.ISO8859-5.src
@@ -0,0 +1,39 @@
+# $FreeBSD$
+charmap map.ISO8859-5
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;\,;-;.;/;\
+# digits
+ 0;1;2;3;...;9;\
+#
+ :;\;;\<;=;>;?;<At>;\
+# uppercase
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
+ <II>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;(<U=>,<V%>);<F=>;<H=>;<C=>;<C%>;<S%>;\
+ <Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# lowercase
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
+ <ii>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;(<u=>,<v%>);<f=>;<h=>;<c=>;<c%>;<s%>;\
+ <y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;|;\};~;<DT>;\
+#
+ <D%>;<G%>;<g%>;\
+ <LJ>;<NJ>;<KJ>;<Ts>;<DZ>;\
+ <d%>;\
+ <lj>;<nj>;<kj>;<ts>;<dz>;\
+ <NS>;<J%>;<SE>;\
+ <IE>;<-->;<YI>;\
+ \
+ <N0>;<ie>;<j%>;<DS>;<ds>;<yi>;<I=>;<i=>;<Sc>;<sc>;<=">;<='>;\
+ <PA>;<HO>;<BH>;<NH>;<IN>;<NL>;<SA>;<ES>;<HS>;<HJ>;<VS>;<PD>;<PU>;<RI>;<S2>;<S3>;\
+ <DC>;<P1>;<P2>;<TS>;<CC>;<MW>;<SG>;<EG>;<SS>;<GC>;<SC>;<CI>;<ST>;<OC>;<PM>;<AC>
diff --git a/share/colldef/bg_BG.CP1251.src b/share/colldef/bg_BG.CP1251.src
new file mode 100644
index 0000000..6c3ed8f
--- /dev/null
+++ b/share/colldef/bg_BG.CP1251.src
@@ -0,0 +1,43 @@
+# CP1251 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.CP1251
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<"6>;<"9>;<<<>;</>/>>;\
+ <Nb>;<Eu>;<Cu>;<DO>;\
+ %;&;';<'6>;<'9>;\(;\);*;+;<+->;\,;<-->;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# uppercase
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<Z%>;<Z=>;\
+ <I=>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;<U=>;<F=>;<H=>;<C=>;<C%>;<S%>;<Sc>;\
+ <=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# lowercase
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<z%>;<z=>;\
+ <i=>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;<u=>;<f=>;<h=>;<c=>;<c%>;<s%>;<sc>;\
+ <='>;<y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;\
+ <-N>;<-M>;<.9>;<:9>;</->;</=>;<.3>;<%0>;<<1>;</>1>;\
+ <N0>;<TM>;<sb>;<FB>;<DT>;\
+#
+ <D%>;<G%>;<g%>;\
+ <LJ>;<NJ>;<KJ>;<Ts>;<DZ>;\
+ <d%>;\
+ <lj>;<nj>;<kj>;<ts>;<dz>;\
+ <V%>;<v%>;<J%>;<G3>;\
+ <IO>;<IE>;<YI>;\
+ <II>;<ii>;<g3>;\
+ <io>;<ie>;<j%>;<DS>;<ds>;<yi>
diff --git a/share/colldef/ca_ES.ISO8859-1.src b/share/colldef/ca_ES.ISO8859-1.src
new file mode 100644
index 0000000..138ff84
--- /dev/null
+++ b/share/colldef/ca_ES.ISO8859-1.src
@@ -0,0 +1,38 @@
+# Espan~ol (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-1
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
+ P;Q;R;{RR,Rr};S;T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>);Z;\
+ <D->;<TH>;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
+ p;q;r;rr;s;t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);z;\
+ <d->;<th>;<ss>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/ca_ES.ISO8859-15.src b/share/colldef/ca_ES.ISO8859-15.src
new file mode 100644
index 0000000..7aa54f6
--- /dev/null
+++ b/share/colldef/ca_ES.ISO8859-15.src
@@ -0,0 +1,38 @@
+# Espan~ol (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-15
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
+ P;Q;R;{RR,Rr};(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
+ <D->;<TH>;\
+#
+ [;\\;];^;_;<'m>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
+ p;q;r;rr;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);(z,<z<>);\
+ <d->;<th>;<ss>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/cs_CZ.ISO8859-2.src b/share/colldef/cs_CZ.ISO8859-2.src
new file mode 100644
index 0000000..2a7c798
--- /dev/null
+++ b/share/colldef/cs_CZ.ISO8859-2.src
@@ -0,0 +1,52 @@
+# Latin2 (for Czech; partially according to CSN 97 6030)
+# by Rudolf Cejka <cejkar@dcse.fee.vutbr.cz>
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-2
+substitute <ss> with "ss"
+order \
+# spaces
+ <SP>;<NS>;\
+# capital and small
+ (A,a,<A'>,<a'>,<A/>>,<a/>>,<A(>,<a(>,<A:>,<a:>,<A;>,<a;>);\
+ (B,b);\
+ (C,c,<C'>,<c'>,<C,>,<c,>);\
+ (<C<>,<c<>);\
+ (D,d,<D<>,<d<>,<D//>,<d//>);\
+ (E,e,<E'>,<e'>,<E<>,<e<>,<E:>,<e:>,<E;>,<e;>);\
+ (F,f);\
+ (G,g);\
+ (H,h);\
+ (CH,Ch,ch);\
+ (I,i,<I'>,<i'>,<I/>>,<i/>>);\
+ (J,j);\
+ (K,k);\
+ (L,l,<L'>,<l'>,<L<>,<l<>,<L//>,<l//>);\
+ (M,m);\
+ (N,n,<N'>,<n'>,<N<>,<n<>);\
+ (O,o,<O'>,<o'>,<O/>>,<o/>>,<O:>,<o:>,<O">,<o">);\
+ (P,p);\
+ (Q,q);\
+ (R,r,<R'>,<r'>);\
+ (<R<>,<r<>);\
+ (S,s,<S'>,<s'>,<S,>,<s,>);\
+ (<S<>,<s<>);\
+ (T,t,<T<>,<t<>,<T,>,<t,>);\
+ (U,u,<U'>,<u'>,<U0>,<u0>,<U:>,<u:>,<U">,<u">);\
+ (V,v);\
+ (W,w);\
+ (X,x);\
+ (Y,y,<Y'>,<y'>);\
+ (Z,z,<Z.>,<z.>,<Z'>,<z'>);\
+ (<Z<>,<z<>);\
+# digits
+ 0;...;9;\
+# symbols
+ .;\,;\;;?;!;:;';`;\";\
+ <-->;-;|;/;\\;\(;\);[;];\<;>;\{;\};\
+ &;<SE>;%;<DO>;<At>;\
+ _;=;^;<-:>;+;<*X>;*;<Nb>;~;<DG>;<Cu>;\
+ <'.>;<''>;<'<>;<'(>;<':>;<'">;<',>;<';>;\
+# controls
+ <NU>;...;<US>;<DT>;<PA>;...;<AC>
diff --git a/share/colldef/de_DE.ISO8859-1.src b/share/colldef/de_DE.ISO8859-1.src
new file mode 100644
index 0000000..888623f
--- /dev/null
+++ b/share/colldef/de_DE.ISO8859-1.src
@@ -0,0 +1,39 @@
+# German/ISO 8859-1 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-1
+substitute <ss> with "ss"
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
+ P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>);Z;\
+ <D->;<TH>;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
+ p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);z;\
+ <d->;<th>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/de_DE.ISO8859-15.src b/share/colldef/de_DE.ISO8859-15.src
new file mode 100644
index 0000000..4bb6bbc
--- /dev/null
+++ b/share/colldef/de_DE.ISO8859-15.src
@@ -0,0 +1,39 @@
+# German/ISO 8859-1 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-15
+substitute <ss> with "ss"
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
+ P;...;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
+ <D->;<TH>;\
+#
+ [;\\;];^;_;<'m>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
+ p;...;r;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);(z,<z<>);\
+ <d->;<th>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/el_GR.ISO8859-7.src b/share/colldef/el_GR.ISO8859-7.src
new file mode 100644
index 0000000..11f52e3
--- /dev/null
+++ b/share/colldef/el_GR.ISO8859-7.src
@@ -0,0 +1,34 @@
+# $FreeBSD$
+#
+# Greek/ISO 8859-7 (backward compatible with ASCII)
+#
+charmap map.ISO8859-7
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;\";<<<>;</>/>>;<Nb>;<DO>;<Pd>;%;&;\
+ ';\(;\);*;+;<+->;\,;<-->;-;.;/;\
+# digits
+ (0,<12>);1;(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<Co>;<At>;\
+# capital
+ A;...;Z;\
+ (<A%>,<A*>);<B*>;<G*>;<D*>;(<E%>,<E*>);<Z*>;(<Y%>,\
+ <Y*>);<H*>;(<J*>,<I%>,<I*>);<K*>;<L*>;<M*>;<N*>;\
+ <C*>;(<O%>,<O*>);<P*>;<R*>;<S*>;<T*>;(<V*>,<U%>,\
+ <U*>);<F*>;<X*>;<Q*>;(<W%>,<W*>);\
+# small
+ a;...;z;\
+ (<a%>,<a*>);<b*>;<g*>;<d*>;(<e%>,<e*>);<z*>;(<y%>,\
+ <y*>);<h*>;(<i3>,<j*>,<i%>,<i*>);<k*>;<l*>;<m*>;\
+ <n*>;<c*>;(<o%>,<o*>);<p*>;<r*>;<s*>;<*s>;<t*>;\
+ (<u3>,<v*>,<u%>,<u*>);<f*>;<x*>;<q*>;(<w%>,<w*>);\
+#
+ [;\\;];<':>;_;<''>;`;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<DT>;\
+# remains
+ <'/>>;<9'>;<'9>;<IE>;<DS>;<NJ>;<V%>;<-M>;<'%>;\
+ <v=>;<dz>
diff --git a/share/colldef/en_DK.example b/share/colldef/en_DK.example
new file mode 100644
index 0000000..c6777d2
--- /dev/null
+++ b/share/colldef/en_DK.example
@@ -0,0 +1,3073 @@
+escape_char /
+comment_char %
+
+% English language locale for Denmark
+%
+% Written according to POSIX.2
+% ISO/IEC 9945-2:1993 specifications
+%
+% Source: Danish Standards Association
+% Address: Baunegaardsvej 73,
+% DK-2900 Hellerup, Danmark
+% Contact: Keld Simonsen
+% Email: Keld.Simonsen@dkuug.dk
+% Tel: +45 - 39770101
+% Fax: +45 - 39770202
+% Language: en
+% Territory: DK
+% Revision: 3.3
+% Date: 1994-03-22
+% Application: general
+% Users: general
+% Repertoiremap: mnemonic.ds
+% Charset: ISO_8859-1:1987
+% Distribution and use is free, also for
+% commercial purposes.
+
+LC_COLLATE
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <A><a>
+% and Spanish <C><h> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward/
+ ;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<NS> <NS>;<NS>;<NS>;IGNORE
+<SP> IGNORE;IGNORE;IGNORE;<SP>
+<HT> IGNORE;IGNORE;IGNORE;<HT>
+<VT> IGNORE;IGNORE;IGNORE;<VT>
+<CR> IGNORE;IGNORE;IGNORE;<CR>
+<LF> IGNORE;IGNORE;IGNORE;<LF>
+<FF> IGNORE;IGNORE;IGNORE;<FF>
+<_> IGNORE;IGNORE;IGNORE;<_>
+<'m> IGNORE;IGNORE;IGNORE;<'m>
+<--> IGNORE;IGNORE;IGNORE;<-->
+<-> IGNORE;IGNORE;IGNORE;<->
+<,> IGNORE;IGNORE;IGNORE;<,>
+<;> IGNORE;IGNORE;IGNORE;<;>
+<:> IGNORE;IGNORE;IGNORE;<:>
+<!> IGNORE;IGNORE;IGNORE;<!>
+<!I> IGNORE;IGNORE;IGNORE;<!I>
+<?> IGNORE;IGNORE;IGNORE;<?>
+<?I> IGNORE;IGNORE;IGNORE;<?I>
+<//> IGNORE;IGNORE;IGNORE;<//>
+<.> IGNORE;IGNORE;IGNORE;<.>
+<''> IGNORE;IGNORE;IGNORE;<''>
+<'!> IGNORE;IGNORE;IGNORE;<'!>
+<'/>> IGNORE;IGNORE;IGNORE;<'/>>
+<':> IGNORE;IGNORE;IGNORE;<':>
+<'?> IGNORE;IGNORE;IGNORE;<'?>
+<.M> IGNORE;IGNORE;IGNORE;<.M>
+<',> IGNORE;IGNORE;IGNORE;<',>
+<'> IGNORE;IGNORE;IGNORE;<'>
+<'6> IGNORE;IGNORE;IGNORE;<'6>
+<'9> IGNORE;IGNORE;IGNORE;<'9>
+<"> IGNORE;IGNORE;IGNORE;<">
+<"6> IGNORE;IGNORE;IGNORE;<"6>
+<"9> IGNORE;IGNORE;IGNORE;<"9>
+<<<> IGNORE;IGNORE;IGNORE;<<<>
+</>/>> IGNORE;IGNORE;IGNORE;</>/>>
+<(> IGNORE;IGNORE;IGNORE;<(>
+<(S> IGNORE;IGNORE;IGNORE;<(S>
+<)> IGNORE;IGNORE;IGNORE;<)>
+<)S> IGNORE;IGNORE;IGNORE;<)S>
+<<(> IGNORE;IGNORE;IGNORE;<<(>
+<)/>> IGNORE;IGNORE;IGNORE;<)/>>
+<(!> IGNORE;IGNORE;IGNORE;<(!>
+<!)> IGNORE;IGNORE;IGNORE;<!)>
+<SE> IGNORE;IGNORE;IGNORE;<SE>
+<PI> IGNORE;IGNORE;IGNORE;<PI>
+<Co> IGNORE;IGNORE;IGNORE;<Co>
+<Rg> IGNORE;IGNORE;IGNORE;<Rg>
+<At> IGNORE;IGNORE;IGNORE;<At>
+<Cu> IGNORE;IGNORE;IGNORE;<Cu>
+<Ct> IGNORE;IGNORE;IGNORE;<Ct>
+<DO> IGNORE;IGNORE;IGNORE;<DO>
+<Pd> IGNORE;IGNORE;IGNORE;<Pd>
+<Ye> IGNORE;IGNORE;IGNORE;<Ye>
+<*> IGNORE;IGNORE;IGNORE;<*>
+<////> IGNORE;IGNORE;IGNORE;<////>
+<&> IGNORE;IGNORE;IGNORE;<&>
+<Nb> IGNORE;IGNORE;IGNORE;<Nb>
+<%> IGNORE;IGNORE;IGNORE;<%>
+<-S> IGNORE;IGNORE;IGNORE;<-S>
+<+> IGNORE;IGNORE;IGNORE;<+>
+<+S> IGNORE;IGNORE;IGNORE;<+S>
+<+-> IGNORE;IGNORE;IGNORE;<+->
+<-:> IGNORE;IGNORE;IGNORE;<-:>
+<*X> IGNORE;IGNORE;IGNORE;<*X>
+<!=> IGNORE;IGNORE;IGNORE;<!=>
+<<> IGNORE;IGNORE;IGNORE;<<>
+<=<> IGNORE;IGNORE;IGNORE;<=<>
+<=> IGNORE;IGNORE;IGNORE;<=>
+</>=> IGNORE;IGNORE;IGNORE;</>=>
+</>> IGNORE;IGNORE;IGNORE;</>>
+<NO> IGNORE;IGNORE;IGNORE;<NO>
+<!!> IGNORE;IGNORE;IGNORE;<!!>
+<BB> IGNORE;IGNORE;IGNORE;<BB>
+<DG> IGNORE;IGNORE;IGNORE;<DG>
+<My> IGNORE;IGNORE;IGNORE;<My>
+<'<> IGNORE;IGNORE;IGNORE;<'<>
+<'(> IGNORE;IGNORE;IGNORE;<'(>
+<'.> IGNORE;IGNORE;IGNORE;<'.>
+<'0> IGNORE;IGNORE;IGNORE;<'0>
+<';> IGNORE;IGNORE;IGNORE;<';>
+<1?> IGNORE;IGNORE;IGNORE;<1?>
+<'"> IGNORE;IGNORE;IGNORE;<'">
+<'G> IGNORE;IGNORE;IGNORE;<'G>
+<,G> IGNORE;IGNORE;IGNORE;<,G>
+<j3> IGNORE;IGNORE;IGNORE;<j3>
+<?%> IGNORE;IGNORE;IGNORE;<?%>
+<'*> IGNORE;IGNORE;IGNORE;<'*>
+<'%> IGNORE;IGNORE;IGNORE;<'%>
+<.*> IGNORE;IGNORE;IGNORE;<.*>
+<b3> IGNORE;IGNORE;IGNORE;<b3>
+<,,> IGNORE;IGNORE;IGNORE;<,,>
+<?*> IGNORE;IGNORE;IGNORE;<?*>
+<?:> IGNORE;IGNORE;IGNORE;<?:>
+<,!> IGNORE;IGNORE;IGNORE;<,!>
+<,'> IGNORE;IGNORE;IGNORE;<,'>
+<?,> IGNORE;IGNORE;IGNORE;<?,>
+<;!> IGNORE;IGNORE;IGNORE;<;!>
+<;'> IGNORE;IGNORE;IGNORE;<;'>
+<?;> IGNORE;IGNORE;IGNORE;<?;>
+<!:> IGNORE;IGNORE;IGNORE;<!:>
+<!*> IGNORE;IGNORE;IGNORE;<!*>
+<;;> IGNORE;IGNORE;IGNORE;<;;>
+<1N> IGNORE;IGNORE;IGNORE;<1N>
+<1M> IGNORE;IGNORE;IGNORE;<1M>
+<3M> IGNORE;IGNORE;IGNORE;<3M>
+<4M> IGNORE;IGNORE;IGNORE;<4M>
+<6M> IGNORE;IGNORE;IGNORE;<6M>
+<LR> IGNORE;IGNORE;IGNORE;<LR>
+<RL> IGNORE;IGNORE;IGNORE;<RL>
+<1T> IGNORE;IGNORE;IGNORE;<1T>
+<1H> IGNORE;IGNORE;IGNORE;<1H>
+<-1> IGNORE;IGNORE;IGNORE;<-1>
+<-N> IGNORE;IGNORE;IGNORE;<-N>
+<-M> IGNORE;IGNORE;IGNORE;<-M>
+<-3> IGNORE;IGNORE;IGNORE;<-3>
+<!2> IGNORE;IGNORE;IGNORE;<!2>
+<=2> IGNORE;IGNORE;IGNORE;<=2>
+<.9> IGNORE;IGNORE;IGNORE;<.9>
+<9'> IGNORE;IGNORE;IGNORE;<9'>
+<:9> IGNORE;IGNORE;IGNORE;<:9>
+<9"> IGNORE;IGNORE;IGNORE;<9">
+<//-> IGNORE;IGNORE;IGNORE;<//->
+<//=> IGNORE;IGNORE;IGNORE;<//=>
+<Sb> IGNORE;IGNORE;IGNORE;<Sb>
+<..> IGNORE;IGNORE;IGNORE;<..>
+<.3> IGNORE;IGNORE;IGNORE;<.3>
+<%0> IGNORE;IGNORE;IGNORE;<%0>
+<1'> IGNORE;IGNORE;IGNORE;<1'>
+<2'> IGNORE;IGNORE;IGNORE;<2'>
+<3'> IGNORE;IGNORE;IGNORE;<3'>
+<1"> IGNORE;IGNORE;IGNORE;<1">
+<2"> IGNORE;IGNORE;IGNORE;<2">
+<3"> IGNORE;IGNORE;IGNORE;<3">
+<Ca> IGNORE;IGNORE;IGNORE;<Ca>
+<<1> IGNORE;IGNORE;IGNORE;<<1>
+</>1> IGNORE;IGNORE;IGNORE;</>1>
+<:X> IGNORE;IGNORE;IGNORE;<:X>
+<!*2> IGNORE;IGNORE;IGNORE;<!*2>
+<'-> IGNORE;IGNORE;IGNORE;<'->
+<=S> IGNORE;IGNORE;IGNORE;<=S>
+<0s> IGNORE;IGNORE;IGNORE;<0s>
+<1s> IGNORE;IGNORE;IGNORE;<1s>
+<2s> IGNORE;IGNORE;IGNORE;<2s>
+<3s> IGNORE;IGNORE;IGNORE;<3s>
+<4s> IGNORE;IGNORE;IGNORE;<4s>
+<5s> IGNORE;IGNORE;IGNORE;<5s>
+<6s> IGNORE;IGNORE;IGNORE;<6s>
+<7s> IGNORE;IGNORE;IGNORE;<7s>
+<8s> IGNORE;IGNORE;IGNORE;<8s>
+<9s> IGNORE;IGNORE;IGNORE;<9s>
+<+s> IGNORE;IGNORE;IGNORE;<+s>
+<-s> IGNORE;IGNORE;IGNORE;<-s>
+<=s> IGNORE;IGNORE;IGNORE;<=s>
+<(s> IGNORE;IGNORE;IGNORE;<(s>
+<)s> IGNORE;IGNORE;IGNORE;<)s>
+<Ff> IGNORE;IGNORE;IGNORE;<Ff>
+<Li> IGNORE;IGNORE;IGNORE;<Li>
+<Pt> IGNORE;IGNORE;IGNORE;<Pt>
+<W=> IGNORE;IGNORE;IGNORE;<W=>
+<oC> IGNORE;IGNORE;IGNORE;<oC>
+<co> IGNORE;IGNORE;IGNORE;<co>
+<oF> IGNORE;IGNORE;IGNORE;<oF>
+<N0> IGNORE;IGNORE;IGNORE;<N0>
+<PO> IGNORE;IGNORE;IGNORE;<PO>
+<Rx> IGNORE;IGNORE;IGNORE;<Rx>
+<SM> IGNORE;IGNORE;IGNORE;<SM>
+<TM> IGNORE;IGNORE;IGNORE;<TM>
+<Om> IGNORE;IGNORE;IGNORE;<Om>
+<AO> IGNORE;IGNORE;IGNORE;<AO>
+<13> IGNORE;IGNORE;IGNORE;<13>
+<23> IGNORE;IGNORE;IGNORE;<23>
+<15> IGNORE;IGNORE;IGNORE;<15>
+<25> IGNORE;IGNORE;IGNORE;<25>
+<35> IGNORE;IGNORE;IGNORE;<35>
+<45> IGNORE;IGNORE;IGNORE;<45>
+<16> IGNORE;IGNORE;IGNORE;<16>
+<56> IGNORE;IGNORE;IGNORE;<56>
+<1R> IGNORE;IGNORE;IGNORE;<1R>
+<2R> IGNORE;IGNORE;IGNORE;<2R>
+<3R> IGNORE;IGNORE;IGNORE;<3R>
+<4R> IGNORE;IGNORE;IGNORE;<4R>
+<5R> IGNORE;IGNORE;IGNORE;<5R>
+<6R> IGNORE;IGNORE;IGNORE;<6R>
+<7R> IGNORE;IGNORE;IGNORE;<7R>
+<8R> IGNORE;IGNORE;IGNORE;<8R>
+<9R> IGNORE;IGNORE;IGNORE;<9R>
+<aR> IGNORE;IGNORE;IGNORE;<aR>
+<bR> IGNORE;IGNORE;IGNORE;<bR>
+<cR> IGNORE;IGNORE;IGNORE;<cR>
+<50R> IGNORE;IGNORE;IGNORE;<50R>
+<100R> IGNORE;IGNORE;IGNORE;<100R>
+<500R> IGNORE;IGNORE;IGNORE;<500R>
+<1000R> IGNORE;IGNORE;IGNORE;<1000R>
+<1r> IGNORE;IGNORE;IGNORE;<1r>
+<2r> IGNORE;IGNORE;IGNORE;<2r>
+<3r> IGNORE;IGNORE;IGNORE;<3r>
+<4r> IGNORE;IGNORE;IGNORE;<4r>
+<5r> IGNORE;IGNORE;IGNORE;<5r>
+<6r> IGNORE;IGNORE;IGNORE;<6r>
+<7r> IGNORE;IGNORE;IGNORE;<7r>
+<8r> IGNORE;IGNORE;IGNORE;<8r>
+<9r> IGNORE;IGNORE;IGNORE;<9r>
+<ar> IGNORE;IGNORE;IGNORE;<ar>
+<br> IGNORE;IGNORE;IGNORE;<br>
+<cr> IGNORE;IGNORE;IGNORE;<cr>
+<50r> IGNORE;IGNORE;IGNORE;<50r>
+<100r> IGNORE;IGNORE;IGNORE;<100r>
+<500r> IGNORE;IGNORE;IGNORE;<500r>
+<1000r> IGNORE;IGNORE;IGNORE;<1000r>
+<1000RCD> IGNORE;IGNORE;IGNORE;<1000RCD>
+<5000R> IGNORE;IGNORE;IGNORE;<5000R>
+<10000R> IGNORE;IGNORE;IGNORE;<10000R>
+<-!> IGNORE;IGNORE;IGNORE;<-!>
+<-v> IGNORE;IGNORE;IGNORE;<-v>
+<</>> IGNORE;IGNORE;IGNORE;<</>>
+<UD> IGNORE;IGNORE;IGNORE;<UD>
+<<!!> IGNORE;IGNORE;IGNORE;<<!!>
+</////>> IGNORE;IGNORE;IGNORE;</////>>
+<!!/>> IGNORE;IGNORE;IGNORE;<!!/>>
+<<////> IGNORE;IGNORE;IGNORE;<<////>
+<UD-> IGNORE;IGNORE;IGNORE;<UD->
+</>V> IGNORE;IGNORE;IGNORE;</>V>
+<<=> IGNORE;IGNORE;IGNORE;<<=>
+<=/>> IGNORE;IGNORE;IGNORE;<=/>>
+<==> IGNORE;IGNORE;IGNORE;<==>
+<FA> IGNORE;IGNORE;IGNORE;<FA>
+<dP> IGNORE;IGNORE;IGNORE;<dP>
+<TE> IGNORE;IGNORE;IGNORE;<TE>
+<//0> IGNORE;IGNORE;IGNORE;<//0>
+<DE> IGNORE;IGNORE;IGNORE;<DE>
+<NB> IGNORE;IGNORE;IGNORE;<NB>
+<(-> IGNORE;IGNORE;IGNORE;<(->
+<-)> IGNORE;IGNORE;IGNORE;<-)>
+<*P> IGNORE;IGNORE;IGNORE;<*P>
+<+Z> IGNORE;IGNORE;IGNORE;<+Z>
+<-2> IGNORE;IGNORE;IGNORE;<-2>
+<-+> IGNORE;IGNORE;IGNORE;<-+>
+<.+> IGNORE;IGNORE;IGNORE;<.+>
+<//f> IGNORE;IGNORE;IGNORE;<//f>
+<*-> IGNORE;IGNORE;IGNORE;<*->
+<Ob> IGNORE;IGNORE;IGNORE;<Ob>
+<sb> IGNORE;IGNORE;IGNORE;<sb>
+<RT> IGNORE;IGNORE;IGNORE;<RT>
+<0(> IGNORE;IGNORE;IGNORE;<0(>
+<00> IGNORE;IGNORE;IGNORE;<00>
+<-L> IGNORE;IGNORE;IGNORE;<-L>
+<-V> IGNORE;IGNORE;IGNORE;<-V>
+<PP> IGNORE;IGNORE;IGNORE;<PP>
+<AN> IGNORE;IGNORE;IGNORE;<AN>
+<OR> IGNORE;IGNORE;IGNORE;<OR>
+<(U> IGNORE;IGNORE;IGNORE;<(U>
+<)U> IGNORE;IGNORE;IGNORE;<)U>
+<In> IGNORE;IGNORE;IGNORE;<In>
+<DI> IGNORE;IGNORE;IGNORE;<DI>
+<Io> IGNORE;IGNORE;IGNORE;<Io>
+<.:> IGNORE;IGNORE;IGNORE;<.:>
+<:.> IGNORE;IGNORE;IGNORE;<:.>
+<:R> IGNORE;IGNORE;IGNORE;<:R>
+<::> IGNORE;IGNORE;IGNORE;<::>
+<?1> IGNORE;IGNORE;IGNORE;<?1>
+<CG> IGNORE;IGNORE;IGNORE;<CG>
+<?-> IGNORE;IGNORE;IGNORE;<?->
+<?=> IGNORE;IGNORE;IGNORE;<?=>
+<?2> IGNORE;IGNORE;IGNORE;<?2>
+<=?> IGNORE;IGNORE;IGNORE;<=?>
+<HI> IGNORE;IGNORE;IGNORE;<HI>
+<=3> IGNORE;IGNORE;IGNORE;<=3>
+<<*> IGNORE;IGNORE;IGNORE;<<*>
+<*/>> IGNORE;IGNORE;IGNORE;<*/>>
+<!<> IGNORE;IGNORE;IGNORE;<!<>
+<!/>> IGNORE;IGNORE;IGNORE;<!/>>
+<(C> IGNORE;IGNORE;IGNORE;<(C>
+<)C> IGNORE;IGNORE;IGNORE;<)C>
+<(_> IGNORE;IGNORE;IGNORE;<(_>
+<)_> IGNORE;IGNORE;IGNORE;<)_>
+<0.> IGNORE;IGNORE;IGNORE;<0.>
+<02> IGNORE;IGNORE;IGNORE;<02>
+<-T> IGNORE;IGNORE;IGNORE;<-T>
+<.P> IGNORE;IGNORE;IGNORE;<.P>
+<:3> IGNORE;IGNORE;IGNORE;<:3>
+<Eh> IGNORE;IGNORE;IGNORE;<Eh>
+<<7> IGNORE;IGNORE;IGNORE;<<7>
+</>7> IGNORE;IGNORE;IGNORE;</>7>
+<7<> IGNORE;IGNORE;IGNORE;<7<>
+<7/>> IGNORE;IGNORE;IGNORE;<7/>>
+<NI> IGNORE;IGNORE;IGNORE;<NI>
+<(A> IGNORE;IGNORE;IGNORE;<(A>
+<TR> IGNORE;IGNORE;IGNORE;<TR>
+<Iu> IGNORE;IGNORE;IGNORE;<Iu>
+<Il> IGNORE;IGNORE;IGNORE;<Il>
+<Vs> IGNORE;IGNORE;IGNORE;<Vs>
+<1h> IGNORE;IGNORE;IGNORE;<1h>
+<3h> IGNORE;IGNORE;IGNORE;<3h>
+<2h> IGNORE;IGNORE;IGNORE;<2h>
+<4h> IGNORE;IGNORE;IGNORE;<4h>
+<1j> IGNORE;IGNORE;IGNORE;<1j>
+<2j> IGNORE;IGNORE;IGNORE;<2j>
+<3j> IGNORE;IGNORE;IGNORE;<3j>
+<4j> IGNORE;IGNORE;IGNORE;<4j>
+<1-o> IGNORE;IGNORE;IGNORE;<1-o>
+<2-o> IGNORE;IGNORE;IGNORE;<2-o>
+<3-o> IGNORE;IGNORE;IGNORE;<3-o>
+<4-o> IGNORE;IGNORE;IGNORE;<4-o>
+<5-o> IGNORE;IGNORE;IGNORE;<5-o>
+<6-o> IGNORE;IGNORE;IGNORE;<6-o>
+<7-o> IGNORE;IGNORE;IGNORE;<7-o>
+<8-o> IGNORE;IGNORE;IGNORE;<8-o>
+<9-o> IGNORE;IGNORE;IGNORE;<9-o>
+<10-o> IGNORE;IGNORE;IGNORE;<10-o>
+<11-o> IGNORE;IGNORE;IGNORE;<11-o>
+<12-o> IGNORE;IGNORE;IGNORE;<12-o>
+<13-o> IGNORE;IGNORE;IGNORE;<13-o>
+<14-o> IGNORE;IGNORE;IGNORE;<14-o>
+<15-o> IGNORE;IGNORE;IGNORE;<15-o>
+<16-o> IGNORE;IGNORE;IGNORE;<16-o>
+<17-o> IGNORE;IGNORE;IGNORE;<17-o>
+<18-o> IGNORE;IGNORE;IGNORE;<18-o>
+<19-o> IGNORE;IGNORE;IGNORE;<19-o>
+<20-o> IGNORE;IGNORE;IGNORE;<20-o>
+<(1)> IGNORE;IGNORE;IGNORE;<(1)>
+<(2)> IGNORE;IGNORE;IGNORE;<(2)>
+<(3)> IGNORE;IGNORE;IGNORE;<(3)>
+<(4)> IGNORE;IGNORE;IGNORE;<(4)>
+<(5)> IGNORE;IGNORE;IGNORE;<(5)>
+<(6)> IGNORE;IGNORE;IGNORE;<(6)>
+<(7)> IGNORE;IGNORE;IGNORE;<(7)>
+<(8)> IGNORE;IGNORE;IGNORE;<(8)>
+<(9)> IGNORE;IGNORE;IGNORE;<(9)>
+<(10)> IGNORE;IGNORE;IGNORE;<(10)>
+<(11)> IGNORE;IGNORE;IGNORE;<(11)>
+<(12)> IGNORE;IGNORE;IGNORE;<(12)>
+<(13)> IGNORE;IGNORE;IGNORE;<(13)>
+<(14)> IGNORE;IGNORE;IGNORE;<(14)>
+<(15)> IGNORE;IGNORE;IGNORE;<(15)>
+<(16)> IGNORE;IGNORE;IGNORE;<(16)>
+<(17)> IGNORE;IGNORE;IGNORE;<(17)>
+<(18)> IGNORE;IGNORE;IGNORE;<(18)>
+<(19)> IGNORE;IGNORE;IGNORE;<(19)>
+<(20)> IGNORE;IGNORE;IGNORE;<(20)>
+<1.> IGNORE;IGNORE;IGNORE;<1.>
+<2.> IGNORE;IGNORE;IGNORE;<2.>
+<3.> IGNORE;IGNORE;IGNORE;<3.>
+<4.> IGNORE;IGNORE;IGNORE;<4.>
+<5.> IGNORE;IGNORE;IGNORE;<5.>
+<6.> IGNORE;IGNORE;IGNORE;<6.>
+<7.> IGNORE;IGNORE;IGNORE;<7.>
+<8.> IGNORE;IGNORE;IGNORE;<8.>
+<9.> IGNORE;IGNORE;IGNORE;<9.>
+<10.> IGNORE;IGNORE;IGNORE;<10.>
+<11.> IGNORE;IGNORE;IGNORE;<11.>
+<12.> IGNORE;IGNORE;IGNORE;<12.>
+<13.> IGNORE;IGNORE;IGNORE;<13.>
+<14.> IGNORE;IGNORE;IGNORE;<14.>
+<15.> IGNORE;IGNORE;IGNORE;<15.>
+<16.> IGNORE;IGNORE;IGNORE;<16.>
+<17.> IGNORE;IGNORE;IGNORE;<17.>
+<18.> IGNORE;IGNORE;IGNORE;<18.>
+<19.> IGNORE;IGNORE;IGNORE;<19.>
+<20.> IGNORE;IGNORE;IGNORE;<20.>
+<0-o> IGNORE;IGNORE;IGNORE;<0-o>
+<hh> IGNORE;IGNORE;IGNORE;<hh>
+<HH> IGNORE;IGNORE;IGNORE;<HH>
+<vv> IGNORE;IGNORE;IGNORE;<vv>
+<VV> IGNORE;IGNORE;IGNORE;<VV>
+<3-> IGNORE;IGNORE;IGNORE;<3->
+<3_> IGNORE;IGNORE;IGNORE;<3_>
+<3!> IGNORE;IGNORE;IGNORE;<3!>
+<3//> IGNORE;IGNORE;IGNORE;<3//>
+<4-> IGNORE;IGNORE;IGNORE;<4->
+<4_> IGNORE;IGNORE;IGNORE;<4_>
+<4!> IGNORE;IGNORE;IGNORE;<4!>
+<4//> IGNORE;IGNORE;IGNORE;<4//>
+<dr> IGNORE;IGNORE;IGNORE;<dr>
+<dR> IGNORE;IGNORE;IGNORE;<dR>
+<Dr> IGNORE;IGNORE;IGNORE;<Dr>
+<DR> IGNORE;IGNORE;IGNORE;<DR>
+<dl> IGNORE;IGNORE;IGNORE;<dl>
+<dL> IGNORE;IGNORE;IGNORE;<dL>
+<Dl> IGNORE;IGNORE;IGNORE;<Dl>
+<LD> IGNORE;IGNORE;IGNORE;<LD>
+<ur> IGNORE;IGNORE;IGNORE;<ur>
+<uR> IGNORE;IGNORE;IGNORE;<uR>
+<Ur> IGNORE;IGNORE;IGNORE;<Ur>
+<UR> IGNORE;IGNORE;IGNORE;<UR>
+<ul> IGNORE;IGNORE;IGNORE;<ul>
+<uL> IGNORE;IGNORE;IGNORE;<uL>
+<Ul> IGNORE;IGNORE;IGNORE;<Ul>
+<UL> IGNORE;IGNORE;IGNORE;<UL>
+<vr> IGNORE;IGNORE;IGNORE;<vr>
+<vR> IGNORE;IGNORE;IGNORE;<vR>
+<Udr> IGNORE;IGNORE;IGNORE;<Udr>
+<uDr> IGNORE;IGNORE;IGNORE;<uDr>
+<Vr> IGNORE;IGNORE;IGNORE;<Vr>
+<UdR> IGNORE;IGNORE;IGNORE;<UdR>
+<uDR> IGNORE;IGNORE;IGNORE;<uDR>
+<VR> IGNORE;IGNORE;IGNORE;<VR>
+<vl> IGNORE;IGNORE;IGNORE;<vl>
+<vL> IGNORE;IGNORE;IGNORE;<vL>
+<Udl> IGNORE;IGNORE;IGNORE;<Udl>
+<uDl> IGNORE;IGNORE;IGNORE;<uDl>
+<Vl> IGNORE;IGNORE;IGNORE;<Vl>
+<UdL> IGNORE;IGNORE;IGNORE;<UdL>
+<uDL> IGNORE;IGNORE;IGNORE;<uDL>
+<VL> IGNORE;IGNORE;IGNORE;<VL>
+<dh> IGNORE;IGNORE;IGNORE;<dh>
+<dLr> IGNORE;IGNORE;IGNORE;<dLr>
+<dlR> IGNORE;IGNORE;IGNORE;<dlR>
+<dH> IGNORE;IGNORE;IGNORE;<dH>
+<Dh> IGNORE;IGNORE;IGNORE;<Dh>
+<DLr> IGNORE;IGNORE;IGNORE;<DLr>
+<DlR> IGNORE;IGNORE;IGNORE;<DlR>
+<DH> IGNORE;IGNORE;IGNORE;<DH>
+<uh> IGNORE;IGNORE;IGNORE;<uh>
+<uLr> IGNORE;IGNORE;IGNORE;<uLr>
+<ulR> IGNORE;IGNORE;IGNORE;<ulR>
+<uH> IGNORE;IGNORE;IGNORE;<uH>
+<Uh> IGNORE;IGNORE;IGNORE;<Uh>
+<ULr> IGNORE;IGNORE;IGNORE;<ULr>
+<UlR> IGNORE;IGNORE;IGNORE;<UlR>
+<UH> IGNORE;IGNORE;IGNORE;<UH>
+<vh> IGNORE;IGNORE;IGNORE;<vh>
+<vLr> IGNORE;IGNORE;IGNORE;<vLr>
+<vlR> IGNORE;IGNORE;IGNORE;<vlR>
+<vH> IGNORE;IGNORE;IGNORE;<vH>
+<Udh> IGNORE;IGNORE;IGNORE;<Udh>
+<uDh> IGNORE;IGNORE;IGNORE;<uDh>
+<Vh> IGNORE;IGNORE;IGNORE;<Vh>
+<UdLr> IGNORE;IGNORE;IGNORE;<UdLr>
+<UdlR> IGNORE;IGNORE;IGNORE;<UdlR>
+<uDLr> IGNORE;IGNORE;IGNORE;<uDLr>
+<uDlR> IGNORE;IGNORE;IGNORE;<uDlR>
+<UdH> IGNORE;IGNORE;IGNORE;<UdH>
+<uDH> IGNORE;IGNORE;IGNORE;<uDH>
+<VLr> IGNORE;IGNORE;IGNORE;<VLr>
+<VlR> IGNORE;IGNORE;IGNORE;<VlR>
+<VH> IGNORE;IGNORE;IGNORE;<VH>
+<FD> IGNORE;IGNORE;IGNORE;<FD>
+<BD> IGNORE;IGNORE;IGNORE;<BD>
+<TB> IGNORE;IGNORE;IGNORE;<TB>
+<LB> IGNORE;IGNORE;IGNORE;<LB>
+<FB> IGNORE;IGNORE;IGNORE;<FB>
+<lB> IGNORE;IGNORE;IGNORE;<lB>
+<RB> IGNORE;IGNORE;IGNORE;<RB>
+<.S> IGNORE;IGNORE;IGNORE;<.S>
+<:S> IGNORE;IGNORE;IGNORE;<:S>
+<?S> IGNORE;IGNORE;IGNORE;<?S>
+<fS> IGNORE;IGNORE;IGNORE;<fS>
+<OS> IGNORE;IGNORE;IGNORE;<OS>
+<RO> IGNORE;IGNORE;IGNORE;<RO>
+<Rr> IGNORE;IGNORE;IGNORE;<Rr>
+<RF> IGNORE;IGNORE;IGNORE;<RF>
+<RY> IGNORE;IGNORE;IGNORE;<RY>
+<RH> IGNORE;IGNORE;IGNORE;<RH>
+<RZ> IGNORE;IGNORE;IGNORE;<RZ>
+<RK> IGNORE;IGNORE;IGNORE;<RK>
+<RX> IGNORE;IGNORE;IGNORE;<RX>
+<sB> IGNORE;IGNORE;IGNORE;<sB>
+<SR> IGNORE;IGNORE;IGNORE;<SR>
+<Or> IGNORE;IGNORE;IGNORE;<Or>
+<UT> IGNORE;IGNORE;IGNORE;<UT>
+<uT> IGNORE;IGNORE;IGNORE;<uT>
+<Tr> IGNORE;IGNORE;IGNORE;<Tr>
+<PR> IGNORE;IGNORE;IGNORE;<PR>
+<Dt> IGNORE;IGNORE;IGNORE;<Dt>
+<dT> IGNORE;IGNORE;IGNORE;<dT>
+<Tl> IGNORE;IGNORE;IGNORE;<Tl>
+<PL> IGNORE;IGNORE;IGNORE;<PL>
+<Db> IGNORE;IGNORE;IGNORE;<Db>
+<Dw> IGNORE;IGNORE;IGNORE;<Dw>
+<LZ> IGNORE;IGNORE;IGNORE;<LZ>
+<0m> IGNORE;IGNORE;IGNORE;<0m>
+<0o> IGNORE;IGNORE;IGNORE;<0o>
+<0M> IGNORE;IGNORE;IGNORE;<0M>
+<0L> IGNORE;IGNORE;IGNORE;<0L>
+<0R> IGNORE;IGNORE;IGNORE;<0R>
+<Sn> IGNORE;IGNORE;IGNORE;<Sn>
+<Ic> IGNORE;IGNORE;IGNORE;<Ic>
+<Fd> IGNORE;IGNORE;IGNORE;<Fd>
+<Bd> IGNORE;IGNORE;IGNORE;<Bd>
+<Ci> IGNORE;IGNORE;IGNORE;<Ci>
+<*2> IGNORE;IGNORE;IGNORE;<*2>
+<*1> IGNORE;IGNORE;IGNORE;<*1>
+<TEL> IGNORE;IGNORE;IGNORE;<TEL>
+<tel> IGNORE;IGNORE;IGNORE;<tel>
+<<H> IGNORE;IGNORE;IGNORE;<<H>
+</>H> IGNORE;IGNORE;IGNORE;</>H>
+<0u> IGNORE;IGNORE;IGNORE;<0u>
+<0U> IGNORE;IGNORE;IGNORE;<0U>
+<SU> IGNORE;IGNORE;IGNORE;<SU>
+<Fm> IGNORE;IGNORE;IGNORE;<Fm>
+<Ml> IGNORE;IGNORE;IGNORE;<Ml>
+<cS> IGNORE;IGNORE;IGNORE;<cS>
+<cH> IGNORE;IGNORE;IGNORE;<cH>
+<cD> IGNORE;IGNORE;IGNORE;<cD>
+<cC> IGNORE;IGNORE;IGNORE;<cC>
+<cS-> IGNORE;IGNORE;IGNORE;<cS->
+<cH-> IGNORE;IGNORE;IGNORE;<cH->
+<cD-> IGNORE;IGNORE;IGNORE;<cD->
+<cC-> IGNORE;IGNORE;IGNORE;<cC->
+<Md> IGNORE;IGNORE;IGNORE;<Md>
+<M8> IGNORE;IGNORE;IGNORE;<M8>
+<M2> IGNORE;IGNORE;IGNORE;<M2>
+<M16> IGNORE;IGNORE;IGNORE;<M16>
+<Mb> IGNORE;IGNORE;IGNORE;<Mb>
+<Mx> IGNORE;IGNORE;IGNORE;<Mx>
+<MX> IGNORE;IGNORE;IGNORE;<MX>
+<OK> IGNORE;IGNORE;IGNORE;<OK>
+<XX> IGNORE;IGNORE;IGNORE;<XX>
+<-X> IGNORE;IGNORE;IGNORE;<-X>
+<IS> IGNORE;IGNORE;IGNORE;<IS>
+<,_> IGNORE;IGNORE;IGNORE;<,_>
+<._> IGNORE;IGNORE;IGNORE;<._>
+<+"> IGNORE;IGNORE;IGNORE;<+">
+<JIS> IGNORE;IGNORE;IGNORE;<JIS>
+<*_> IGNORE;IGNORE;IGNORE;<*_>
+<;_> IGNORE;IGNORE;IGNORE;<;_>
+<0_> IGNORE;IGNORE;IGNORE;<0_>
+<<+> IGNORE;IGNORE;IGNORE;<<+>
+</>+> IGNORE;IGNORE;IGNORE;</>+>
+<<'> IGNORE;IGNORE;IGNORE;<<'>
+</>'> IGNORE;IGNORE;IGNORE;</>'>
+<<"> IGNORE;IGNORE;IGNORE;<<">
+</>"> IGNORE;IGNORE;IGNORE;</>">
+<("> IGNORE;IGNORE;IGNORE;<(">
+<)"> IGNORE;IGNORE;IGNORE;<)">
+<=T> IGNORE;IGNORE;IGNORE;<=T>
+<=_> IGNORE;IGNORE;IGNORE;<=_>
+<('> IGNORE;IGNORE;IGNORE;<('>
+<)'> IGNORE;IGNORE;IGNORE;<)'>
+<(I> IGNORE;IGNORE;IGNORE;<(I>
+<)I> IGNORE;IGNORE;IGNORE;<)I>
+<-?> IGNORE;IGNORE;IGNORE;<-?>
+<=T:)> IGNORE;IGNORE;IGNORE;<=T:)>
+<"5> IGNORE;IGNORE;IGNORE;<"5>
+<05> IGNORE;IGNORE;IGNORE;<05>
+<*5> IGNORE;IGNORE;IGNORE;<*5>
+<+5> IGNORE;IGNORE;IGNORE;<+5>
+<.6> IGNORE;IGNORE;IGNORE;<.6>
+<-6> IGNORE;IGNORE;IGNORE;<-6>
+<*6> IGNORE;IGNORE;IGNORE;<*6>
+<+6> IGNORE;IGNORE;IGNORE;<+6>
+<(JU)> IGNORE;IGNORE;IGNORE;<(JU)>
+<1c> IGNORE;IGNORE;IGNORE;<1c>
+<2c> IGNORE;IGNORE;IGNORE;<2c>
+<3c> IGNORE;IGNORE;IGNORE;<3c>
+<4c> IGNORE;IGNORE;IGNORE;<4c>
+<5c> IGNORE;IGNORE;IGNORE;<5c>
+<6c> IGNORE;IGNORE;IGNORE;<6c>
+<7c> IGNORE;IGNORE;IGNORE;<7c>
+<8c> IGNORE;IGNORE;IGNORE;<8c>
+<9c> IGNORE;IGNORE;IGNORE;<9c>
+<10c> IGNORE;IGNORE;IGNORE;<10c>
+<KSC> IGNORE;IGNORE;IGNORE;<KSC>
+<am> IGNORE;IGNORE;IGNORE;<am>
+<pm> IGNORE;IGNORE;IGNORE;<pm>
+<NU> IGNORE;IGNORE;IGNORE;<NU>
+<SH> IGNORE;IGNORE;IGNORE;<SH>
+<SX> IGNORE;IGNORE;IGNORE;<SX>
+<EX> IGNORE;IGNORE;IGNORE;<EX>
+<ET> IGNORE;IGNORE;IGNORE;<ET>
+<EQ> IGNORE;IGNORE;IGNORE;<EQ>
+<AK> IGNORE;IGNORE;IGNORE;<AK>
+<BL> IGNORE;IGNORE;IGNORE;<BL>
+<BS> IGNORE;IGNORE;IGNORE;<BS>
+<SO> IGNORE;IGNORE;IGNORE;<SO>
+<SI> IGNORE;IGNORE;IGNORE;<SI>
+<DL> IGNORE;IGNORE;IGNORE;<DL>
+<D1> IGNORE;IGNORE;IGNORE;<D1>
+<D2> IGNORE;IGNORE;IGNORE;<D2>
+<D3> IGNORE;IGNORE;IGNORE;<D3>
+<D4> IGNORE;IGNORE;IGNORE;<D4>
+<NK> IGNORE;IGNORE;IGNORE;<NK>
+<SY> IGNORE;IGNORE;IGNORE;<SY>
+<EB> IGNORE;IGNORE;IGNORE;<EB>
+<CN> IGNORE;IGNORE;IGNORE;<CN>
+<EM> IGNORE;IGNORE;IGNORE;<EM>
+<SB> IGNORE;IGNORE;IGNORE;<SB>
+<EC> IGNORE;IGNORE;IGNORE;<EC>
+<FS> IGNORE;IGNORE;IGNORE;<FS>
+<GS> IGNORE;IGNORE;IGNORE;<GS>
+<RS> IGNORE;IGNORE;IGNORE;<RS>
+<US> IGNORE;IGNORE;IGNORE;<US>
+<DT> IGNORE;IGNORE;IGNORE;<DT>
+<PA> IGNORE;IGNORE;IGNORE;<PA>
+<HO> IGNORE;IGNORE;IGNORE;<HO>
+<BH> IGNORE;IGNORE;IGNORE;<BH>
+<NH> IGNORE;IGNORE;IGNORE;<NH>
+<IN> IGNORE;IGNORE;IGNORE;<IN>
+<NL> IGNORE;IGNORE;IGNORE;<NL>
+<SA> IGNORE;IGNORE;IGNORE;<SA>
+<ES> IGNORE;IGNORE;IGNORE;<ES>
+<HS> IGNORE;IGNORE;IGNORE;<HS>
+<HJ> IGNORE;IGNORE;IGNORE;<HJ>
+<VS> IGNORE;IGNORE;IGNORE;<VS>
+<PD> IGNORE;IGNORE;IGNORE;<PD>
+<PU> IGNORE;IGNORE;IGNORE;<PU>
+<RI> IGNORE;IGNORE;IGNORE;<RI>
+<S2> IGNORE;IGNORE;IGNORE;<S2>
+<S3> IGNORE;IGNORE;IGNORE;<S3>
+<DC> IGNORE;IGNORE;IGNORE;<DC>
+<P1> IGNORE;IGNORE;IGNORE;<P1>
+<P2> IGNORE;IGNORE;IGNORE;<P2>
+<TS> IGNORE;IGNORE;IGNORE;<TS>
+<CC> IGNORE;IGNORE;IGNORE;<CC>
+<MW> IGNORE;IGNORE;IGNORE;<MW>
+<SG> IGNORE;IGNORE;IGNORE;<SG>
+<EG> IGNORE;IGNORE;IGNORE;<EG>
+<SS> IGNORE;IGNORE;IGNORE;<SS>
+<GC> IGNORE;IGNORE;IGNORE;<GC>
+<SC> IGNORE;IGNORE;IGNORE;<SC>
+<CI> IGNORE;IGNORE;IGNORE;<CI>
+<ST> IGNORE;IGNORE;IGNORE;<ST>
+<OC> IGNORE;IGNORE;IGNORE;<OC>
+<PM> IGNORE;IGNORE;IGNORE;<PM>
+<AC> IGNORE;IGNORE;IGNORE;<AC>
+<"3> IGNORE;IGNORE;IGNORE;<"3>
+<"1> IGNORE;IGNORE;IGNORE;<"1>
+<"!> IGNORE;IGNORE;IGNORE;<"!>
+<"'> IGNORE;IGNORE;IGNORE;<"'>
+<"/>> IGNORE;IGNORE;IGNORE;<"/>>
+<"?> IGNORE;IGNORE;IGNORE;<"?>
+<"-> IGNORE;IGNORE;IGNORE;<"->
+<"(> IGNORE;IGNORE;IGNORE;<"(>
+<".> IGNORE;IGNORE;IGNORE;<".>
+<":> IGNORE;IGNORE;IGNORE;<":>
+<"0> IGNORE;IGNORE;IGNORE;<"0>
+<",> IGNORE;IGNORE;IGNORE;<",>
+<"_> IGNORE;IGNORE;IGNORE;<"_>
+<""> IGNORE;IGNORE;IGNORE;<"">
+<";> IGNORE;IGNORE;IGNORE;<";>
+<"<> IGNORE;IGNORE;IGNORE;<"<>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<"//> IGNORE;IGNORE;IGNORE;<"//>
+<"p> IGNORE;IGNORE;IGNORE;<"p>
+<"d> IGNORE;IGNORE;IGNORE;<"d>
+<"i> IGNORE;IGNORE;IGNORE;<"i>
+<+_> IGNORE;IGNORE;IGNORE;<+_>
+<Tel> IGNORE;IGNORE;IGNORE;<Tel>
+<UA> IGNORE;IGNORE;IGNORE;<UA>
+<UB> IGNORE;IGNORE;IGNORE;<UB>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<0> <0>;<0>;IGNORE;IGNORE
+<0S> <0>;<0S>;IGNORE;IGNORE
+<18> <0>;<18>;IGNORE;IGNORE
+<14> <0>;<14>;IGNORE;IGNORE
+<38> <0>;<38>;IGNORE;IGNORE
+<12> <0>;<12>;IGNORE;IGNORE
+<58> <0>;<58>;IGNORE;IGNORE
+<34> <0>;<34>;IGNORE;IGNORE
+<78> <0>;<78>;IGNORE;IGNORE
+<1> <1>;<1>;IGNORE;IGNORE
+<2> <2>;<2>;IGNORE;IGNORE
+<3> <3>;<3>;IGNORE;IGNORE
+<4> <4>;<4>;IGNORE;IGNORE
+<5> <5>;<5>;IGNORE;IGNORE
+<6> <6>;<6>;IGNORE;IGNORE
+<7> <7>;<7>;IGNORE;IGNORE
+<8> <8>;<8>;IGNORE;IGNORE
+<9> <9>;<9>;IGNORE;IGNORE
+<1S> <1>;<1S>;IGNORE;IGNORE
+<2S> <2>;<2S>;IGNORE;IGNORE
+<3S> <3>;<3S>;IGNORE;IGNORE
+<4S> <4>;<4S>;IGNORE;IGNORE
+<5S> <5>;<5S>;IGNORE;IGNORE
+<6S> <6>;<6S>;IGNORE;IGNORE
+<7S> <7>;<7S>;IGNORE;IGNORE
+<8S> <8>;<8S>;IGNORE;IGNORE
+<9S> <9>;<9S>;IGNORE;IGNORE
+<A> <A>;<NONE>;<CAPITAL>;IGNORE
+<a> <A>;<NONE>;<SMALL>;IGNORE
+<-a> <A>;<NONE>;<-a>;IGNORE
+<A'> <A>;<ACUTE>;<CAPITAL>;IGNORE
+<a'> <A>;<ACUTE>;<SMALL>;IGNORE
+<A!> <A>;<GRAVE>;<CAPITAL>;IGNORE
+<a!> <A>;<GRAVE>;<SMALL>;IGNORE
+<A!!> <A>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<a!!> <A>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<A(> <A>;<BREVE>;<CAPITAL>;IGNORE
+<a(> <A>;<BREVE>;<SMALL>;IGNORE
+<A('> <A>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<a('> <A>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<A(!> <A>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<a(!> <A>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<A(2> <A>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<a(2> <A>;<BREVE+HOOK>;<SMALL>;IGNORE
+<A(?> <A>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<a(?> <A>;<BREVE+TILDE>;<SMALL>;IGNORE
+<A(-.> <A>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<a(-.> <A>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<A)> <A>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<a)> <A>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<A/>> <A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<a/>> <A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<A/>'> <A>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<a/>'> <A>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<A/>!> <A>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<a/>!> <A>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<A/>2> <A>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<a/>2> <A>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<A/>?> <A>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<a/>?> <A>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<A/>-.> <A>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<a/>-.> <A>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<A<> <A>;<CARON>;<CAPITAL>;IGNORE
+<a<> <A>;<CARON>;<SMALL>;IGNORE
+<AA> <A>;<RING>;<CAPITAL>;IGNORE
+<aa> <A>;<RING>;<SMALL>;IGNORE
+<AA'> <A>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<aa'> <A>;<RING+ACUTE>;<SMALL>;IGNORE
+<A-0> <A>;<RING-BELOW>;<CAPITAL>;IGNORE
+<a-0> <A>;<RING-BELOW>;<SMALL>;IGNORE
+<A:> <A>;<DIAERESIS>;<CAPITAL>;IGNORE
+<a:> <A>;<DIAERESIS>;<SMALL>;IGNORE
+<A1> <A>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<a1> <A>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<A2> <A>;<HOOK>;<CAPITAL>;IGNORE
+<a2> <A>;<HOOK>;<SMALL>;IGNORE
+<A?> <A>;<TILDE>;<CAPITAL>;IGNORE
+<a?> <A>;<TILDE>;<SMALL>;IGNORE
+<A-.> <A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<a-.> <A>;<DOT-BELOW>;<SMALL>;IGNORE
+<A;> <A>;<OGONEK>;<CAPITAL>;IGNORE
+<a;> <A>;<OGONEK>;<SMALL>;IGNORE
+<A-> <A>;<MACRON>;<CAPITAL>;IGNORE
+<a-> <A>;<MACRON>;<SMALL>;IGNORE
+<A7> <A>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<a7> <A>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<AE> "<A><E>";"<AE><AE>";"<CAPITAL><CAPITAL>";IGNORE
+<ae> "<A><E>";"<AE><AE>";"<SMALL><SMALL>";IGNORE
+<AE'> "<A><E>";"<AE'><AE'>";"<CAPITAL><CAPITAL>";IGNORE
+<ae'> "<A><E>";"<AE'><AE'>";"<SMALL><SMALL>";IGNORE
+<A3> "<A><E>";"<A3><A3>";"<CAPITAL><CAPITAL>";IGNORE
+<a3> "<A><E>";"<A3><A3>";"<SMALL><SMALL>";IGNORE
+<B> <B>;<NONE>;<CAPITAL>;IGNORE
+<b> <B>;<NONE>;<SMALL>;IGNORE
+<B.> <B>;<DOT>;<CAPITAL>;IGNORE
+<b.> <B>;<DOT>;<SMALL>;IGNORE
+<B-.> <B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<b-.> <B>;<DOT-BELOW>;<SMALL>;IGNORE
+<B_> <B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<b_> <B>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<C> <C>;<NONE>;<CAPITAL>;IGNORE
+<c> <C>;<NONE>;<SMALL>;IGNORE
+<C'> <C>;<ACUTE>;<CAPITAL>;IGNORE
+<c'> <C>;<ACUTE>;<SMALL>;IGNORE
+<C/>> <C>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<c/>> <C>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<C<> <C>;<CARON>;<CAPITAL>;IGNORE
+<c<> <C>;<CARON>;<SMALL>;IGNORE
+<C2> <C>;<HOOK>;<CAPITAL>;IGNORE
+<c2> <C>;<HOOK>;<SMALL>;IGNORE
+<C.> <C>;<DOT>;<CAPITAL>;IGNORE
+<c.> <C>;<DOT>;<SMALL>;IGNORE
+<C,> <C>;<CEDILLA>;<CAPITAL>;IGNORE
+<c,> <C>;<CEDILLA>;<SMALL>;IGNORE
+<C,'> <C>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<c,'> <C>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<D> <D>;<NONE>;<CAPITAL>;IGNORE
+<d> <D>;<NONE>;<SMALL>;IGNORE
+<D<> <D>;<CARON>;<CAPITAL>;IGNORE
+<d<> <D>;<CARON>;<SMALL>;IGNORE
+<D.> <D>;<DOT>;<CAPITAL>;IGNORE
+<d.> <D>;<DOT>;<SMALL>;IGNORE
+<D-.> <D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<d-.> <D>;<DOT-BELOW>;<SMALL>;IGNORE
+<D//> <D>;<STROKE>;<CAPITAL>;IGNORE
+<d//> <D>;<STROKE>;<SMALL>;IGNORE
+<D,> <D>;<CEDILLA>;<CAPITAL>;IGNORE
+<d,> <D>;<CEDILLA>;<SMALL>;IGNORE
+<D-/>> <D>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<d-/>> <D>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<D_> <D>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<d_> <D>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<E> <E>;<NONE>;<CAPITAL>;IGNORE
+<e> <E>;<NONE>;<SMALL>;IGNORE
+<E'> <E>;<ACUTE>;<CAPITAL>;IGNORE
+<e'> <E>;<ACUTE>;<SMALL>;IGNORE
+<E!> <E>;<GRAVE>;<CAPITAL>;IGNORE
+<e!> <E>;<GRAVE>;<SMALL>;IGNORE
+<E!!> <E>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<e!!> <E>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<E(> <E>;<BREVE>;<CAPITAL>;IGNORE
+<e(> <E>;<BREVE>;<SMALL>;IGNORE
+<E)> <E>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<e)> <E>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<E/>> <E>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<e/>> <E>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<E/>'> <E>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<e/>'> <E>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<E/>!> <E>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<e/>!> <E>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<E/>2> <E>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<e/>2> <E>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<E/>?> <E>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<e/>?> <E>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<E/>-.> <E>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<e/>-.> <E>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<E<> <E>;<CARON>;<CAPITAL>;IGNORE
+<e<> <E>;<CARON>;<SMALL>;IGNORE
+<E:> <E>;<DIAERESIS>;<CAPITAL>;IGNORE
+<e:> <E>;<DIAERESIS>;<SMALL>;IGNORE
+<E2> <E>;<HOOK>;<CAPITAL>;IGNORE
+<e2> <E>;<HOOK>;<SMALL>;IGNORE
+<E?> <E>;<TILDE>;<CAPITAL>;IGNORE
+<e?> <E>;<TILDE>;<SMALL>;IGNORE
+<E-?> <E>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<e-?> <E>;<TILDE-BELOW>;<SMALL>;IGNORE
+<E.> <E>;<DOT>;<CAPITAL>;IGNORE
+<e.> <E>;<DOT>;<SMALL>;IGNORE
+<E-.> <E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<e-.> <E>;<DOT-BELOW>;<SMALL>;IGNORE
+<E,(> <E>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<e,(> <E>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<E;> <E>;<OGONEK>;<CAPITAL>;IGNORE
+<e;> <E>;<OGONEK>;<SMALL>;IGNORE
+<E-> <E>;<MACRON>;<CAPITAL>;IGNORE
+<e-> <E>;<MACRON>;<SMALL>;IGNORE
+<E-'> <E>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<e-'> <E>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<E-!> <E>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<e-!> <E>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<E-/>> <E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<e-/>> <E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<F> <F>;<NONE>;<CAPITAL>;IGNORE
+<f> <F>;<NONE>;<SMALL>;IGNORE
+<F2> <F>;<HOOK>;<CAPITAL>;IGNORE
+<f2> <F>;<HOOK>;<SMALL>;IGNORE
+<F.> <F>;<DOT>;<CAPITAL>;IGNORE
+<f.> <F>;<DOT>;<SMALL>;IGNORE
+<f8>
+<ff> "<F><F>";"<NONE><NONE>";"<ff><ff>";IGNORE
+<fi> "<F><I>";"<NONE><NONE>";"<fi><fi>";IGNORE
+<fl> "<F><L>";"<NONE><NONE>";"<fl><fl>";IGNORE
+<ffi> "<F><F><I>";"<NONE><NONE><NONE>";"<ffi><ffi><ffi>";IGNORE
+<ffl> "<F><F><L>";"<NONE><NONE><NONE>";"<ffl><ffl><ffl>";IGNORE
+<ft> "<F><T>";"<NONE><NONE>";"<ft><ft>";IGNORE
+<G> <G>;<NONE>;<CAPITAL>;IGNORE
+<g> <G>;<NONE>;<SMALL>;IGNORE
+<G'> <G>;<ACUTE>;<CAPITAL>;IGNORE
+<g'> <G>;<ACUTE>;<SMALL>;IGNORE
+<G(> <G>;<BREVE>;<CAPITAL>;IGNORE
+<g(> <G>;<BREVE>;<SMALL>;IGNORE
+<G/>> <G>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<g/>> <G>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<G<> <G>;<CARON>;<CAPITAL>;IGNORE
+<g<> <G>;<CARON>;<SMALL>;IGNORE
+<G.> <G>;<DOT>;<CAPITAL>;IGNORE
+<g.> <G>;<DOT>;<SMALL>;IGNORE
+<G//> <G>;<STROKE>;<CAPITAL>;IGNORE
+<g//> <G>;<STROKE>;<SMALL>;IGNORE
+<G,> <G>;<CEDILLA>;<CAPITAL>;IGNORE
+<g,> <G>;<CEDILLA>;<SMALL>;IGNORE
+<G-> <G>;<MACRON>;<CAPITAL>;IGNORE
+<g-> <G>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<H> <H>;<NONE>;<CAPITAL>;IGNORE
+<h> <H>;<NONE>;<SMALL>;IGNORE
+<H-(> <H>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<h-(> <H>;<BREVE-BELOW>;<SMALL>;IGNORE
+<H/>> <H>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<h/>> <H>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<H:> <H>;<DIAERESIS>;<CAPITAL>;IGNORE
+<h:> <H>;<DIAERESIS>;<SMALL>;IGNORE
+<H.> <H>;<DOT>;<CAPITAL>;IGNORE
+<h.> <H>;<DOT>;<SMALL>;IGNORE
+<H-.> <H>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<h-.> <H>;<DOT-BELOW>;<SMALL>;IGNORE
+<H//> <H>;<STROKE>;<CAPITAL>;IGNORE
+<h//> <H>;<STROKE>;<SMALL>;IGNORE
+<H,> <H>;<CEDILLA>;<CAPITAL>;IGNORE
+<h,> <H>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<I> <I>;<NONE>;<CAPITAL>;IGNORE
+<i> <I>;<NONE>;<SMALL>;IGNORE
+<I'> <I>;<ACUTE>;<CAPITAL>;IGNORE
+<i'> <I>;<ACUTE>;<SMALL>;IGNORE
+<I!> <I>;<GRAVE>;<CAPITAL>;IGNORE
+<i!> <I>;<GRAVE>;<SMALL>;IGNORE
+<I!!> <I>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<i!!> <I>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<I(> <I>;<BREVE>;<CAPITAL>;IGNORE
+<i(> <I>;<BREVE>;<SMALL>;IGNORE
+<I)> <I>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<i)> <I>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<I/>> <I>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<i/>> <I>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<I<> <I>;<CARON>;<CAPITAL>;IGNORE
+<i<> <I>;<CARON>;<SMALL>;IGNORE
+<I:> <I>;<DIAERESIS>;<CAPITAL>;IGNORE
+<i:> <I>;<DIAERESIS>;<SMALL>;IGNORE
+<I:'> <I>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<i:'> <I>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<I2> <I>;<HOOK>;<CAPITAL>;IGNORE
+<i2> <I>;<HOOK>;<SMALL>;IGNORE
+<I?> <I>;<TILDE>;<CAPITAL>;IGNORE
+<i?> <I>;<TILDE>;<SMALL>;IGNORE
+<I-?> <I>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<i-?> <I>;<TILDE-BELOW>;<SMALL>;IGNORE
+<I.> <I>;<DOT>;<CAPITAL>;IGNORE
+<i.> <I>;<DOT>;<SMALL>;IGNORE
+<I-.> <I>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<i-.> <I>;<DOT-BELOW>;<SMALL>;IGNORE
+<I;> <I>;<OGONEK>;<CAPITAL>;IGNORE
+<i;> <I>;<OGONEK>;<SMALL>;IGNORE
+<I-> <I>;<MACRON>;<CAPITAL>;IGNORE
+<i-> <I>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<IJ> "<I><J>";"<IJ><IJ>";"<CAPITAL><CAPITAL>";IGNORE
+<ij> "<I><J>";"<IJ><IJ>";"<SMALL><SMALL>";IGNORE
+<J> <J>;<NONE>;<CAPITAL>;IGNORE
+<j> <J>;<NONE>;<SMALL>;IGNORE
+<J/>> <J>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<j/>> <J>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<K> <K>;<NONE>;<CAPITAL>;IGNORE
+<k> <K>;<NONE>;<SMALL>;IGNORE
+<K'> <K>;<ACUTE>;<CAPITAL>;IGNORE
+<k'> <K>;<ACUTE>;<SMALL>;IGNORE
+<K<> <K>;<CARON>;<CAPITAL>;IGNORE
+<k<> <K>;<CARON>;<SMALL>;IGNORE
+<K2> <K>;<HOOK>;<CAPITAL>;IGNORE
+<k2> <K>;<HOOK>;<SMALL>;IGNORE
+<K-.> <K>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<k-.> <K>;<DOT-BELOW>;<SMALL>;IGNORE
+<K,> <K>;<CEDILLA>;<CAPITAL>;IGNORE
+<k,> <K>;<CEDILLA>;<SMALL>;IGNORE
+<K_> <K>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<k_> <K>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<kk> <K>;<kk>;<SMALL>;IGNORE
+<L> <L>;<NONE>;<CAPITAL>;IGNORE
+<l> <L>;<NONE>;<SMALL>;IGNORE
+<L'> <L>;<ACUTE>;<CAPITAL>;IGNORE
+<l'> <L>;<ACUTE>;<SMALL>;IGNORE
+<L<> <L>;<CARON>;<CAPITAL>;IGNORE
+<l<> <L>;<CARON>;<SMALL>;IGNORE
+<L.> <L>;<DOT>;<CAPITAL>;IGNORE
+<l.> <L>;<DOT>;<SMALL>;IGNORE
+<L-.> <L>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<l-.> <L>;<DOT-BELOW>;<SMALL>;IGNORE
+<L//> <L>;<STROKE>;<CAPITAL>;IGNORE
+<l//> <L>;<STROKE>;<SMALL>;IGNORE
+<L,> <L>;<CEDILLA>;<CAPITAL>;IGNORE
+<l,> <L>;<CEDILLA>;<SMALL>;IGNORE
+<L--.> <L>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<l--.> <L>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<L-/>> <L>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<l-/>> <L>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<L_> <L>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<l_> <L>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<M> <M>;<NONE>;<CAPITAL>;IGNORE
+<m> <M>;<NONE>;<SMALL>;IGNORE
+<M'> <M>;<ACUTE>;<CAPITAL>;IGNORE
+<m'> <M>;<ACUTE>;<SMALL>;IGNORE
+<M.> <M>;<DOT>;<CAPITAL>;IGNORE
+<m.> <M>;<DOT>;<SMALL>;IGNORE
+<M-.> <M>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<m-.> <M>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<N> <N>;<NONE>;<CAPITAL>;IGNORE
+<n> <N>;<NONE>;<SMALL>;IGNORE
+<N'> <N>;<ACUTE>;<CAPITAL>;IGNORE
+<n'> <N>;<ACUTE>;<SMALL>;IGNORE
+<N<> <N>;<CARON>;<CAPITAL>;IGNORE
+<n<> <N>;<CARON>;<SMALL>;IGNORE
+<N?> <N>;<TILDE>;<CAPITAL>;IGNORE
+<n?> <N>;<TILDE>;<SMALL>;IGNORE
+<N.> <N>;<DOT>;<CAPITAL>;IGNORE
+<n.> <N>;<DOT>;<SMALL>;IGNORE
+<N-.> <N>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<n-.> <N>;<DOT-BELOW>;<SMALL>;IGNORE
+<N,> <N>;<CEDILLA>;<CAPITAL>;IGNORE
+<n,> <N>;<CEDILLA>;<SMALL>;IGNORE
+<N-/>> <N>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<n-/>> <N>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<N_> <N>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<n_> <N>;<LINE-BELOW>;<SMALL>;IGNORE
+<'n> <N>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<NG> "<N><G>";"<NG><NG>";"<CAPITAL><CAPITAL>";IGNORE
+<ng> "<N><G>";"<NG><NG>";"<SMALL><SMALL>";IGNORE
+<O> <O>;<NONE>;<CAPITAL>;IGNORE
+<o> <O>;<NONE>;<SMALL>;IGNORE
+<-o> <O>;<NONE>;<-o>;IGNORE
+<O'> <O>;<ACUTE>;<CAPITAL>;IGNORE
+<o'> <O>;<ACUTE>;<SMALL>;IGNORE
+<O!> <O>;<GRAVE>;<CAPITAL>;IGNORE
+<o!> <O>;<GRAVE>;<SMALL>;IGNORE
+<O!!> <O>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<o!!> <O>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<O(> <O>;<BREVE>;<CAPITAL>;IGNORE
+<o(> <O>;<BREVE>;<SMALL>;IGNORE
+<O)> <O>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<o)> <O>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<O/>> <O>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<o/>> <O>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<O/>'> <O>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<o/>'> <O>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<O/>!> <O>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<o/>!> <O>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<O/>2> <O>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<o/>2> <O>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<O/>?> <O>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<o/>?> <O>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<O/>-.> <O>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<o/>-.> <O>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<O<> <O>;<CARON>;<CAPITAL>;IGNORE
+<o<> <O>;<CARON>;<SMALL>;IGNORE
+<O:> <O>;<DIAERESIS>;<CAPITAL>;IGNORE
+<o:> <O>;<DIAERESIS>;<SMALL>;IGNORE
+<O"> <O>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<o"> <O>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<O2> <O>;<HOOK>;<CAPITAL>;IGNORE
+<o2> <O>;<HOOK>;<SMALL>;IGNORE
+<O?> <O>;<TILDE>;<CAPITAL>;IGNORE
+<o?> <O>;<TILDE>;<SMALL>;IGNORE
+<O?'> <O>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<o?'> <O>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<O?:> <O>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<o?:> <O>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<O-.> <O>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<o-.> <O>;<DOT-BELOW>;<SMALL>;IGNORE
+<O//> <O>;<STROKE>;<CAPITAL>;IGNORE
+<o//> <O>;<STROKE>;<SMALL>;IGNORE
+<O//'> <O>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<o//'> <O>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<O;> <O>;<OGONEK>;<CAPITAL>;IGNORE
+<o;> <O>;<OGONEK>;<SMALL>;IGNORE
+<O1> <O>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<o1> <O>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<O-> <O>;<MACRON>;<CAPITAL>;IGNORE
+<o-> <O>;<MACRON>;<SMALL>;IGNORE
+<O-'> <O>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<o-'> <O>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<O-!> <O>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<o-!> <O>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<O9> <O>;<HORN>;<CAPITAL>;IGNORE
+<o9> <O>;<HORN>;<SMALL>;IGNORE
+<O9'> <O>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<o9'> <O>;<HORN+ACUTE>;<SMALL>;IGNORE
+<O9!> <O>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<o9!> <O>;<HORN+GRAVE>;<SMALL>;IGNORE
+<O92> <O>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<o92> <O>;<HORN+HOOK>;<SMALL>;IGNORE
+<O9?> <O>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<o9?> <O>;<HORN+TILDE>;<SMALL>;IGNORE
+<O9-.> <O>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<o9-.> <O>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<OE> "<O><E>";"<OE><OE>";"<CAPITAL><CAPITAL>";IGNORE
+<oe> "<O><E>";"<OE><OE>";"<SMALL><SMALL>";IGNORE
+<P> <P>;<NONE>;<CAPITAL>;IGNORE
+<p> <P>;<NONE>;<SMALL>;IGNORE
+<P'> <P>;<ACUTE>;<CAPITAL>;IGNORE
+<p'> <P>;<ACUTE>;<SMALL>;IGNORE
+<P.> <P>;<DOT>;<CAPITAL>;IGNORE
+<p.> <P>;<DOT>;<SMALL>;IGNORE
+<p8>
+<Q> <Q>;<NONE>;<CAPITAL>;IGNORE
+<q> <Q>;<NONE>;<SMALL>;IGNORE
+<q8>
+<R> <R>;<NONE>;<CAPITAL>;IGNORE
+<r> <R>;<NONE>;<SMALL>;IGNORE
+<R'> <R>;<ACUTE>;<CAPITAL>;IGNORE
+<r'> <R>;<ACUTE>;<SMALL>;IGNORE
+<R!!> <R>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<r!!> <R>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<R)> <R>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<r)> <R>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<R<> <R>;<CARON>;<CAPITAL>;IGNORE
+<r<> <R>;<CARON>;<SMALL>;IGNORE
+<R.> <R>;<DOT>;<CAPITAL>;IGNORE
+<r.> <R>;<DOT>;<SMALL>;IGNORE
+<R-.> <R>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<r-.> <R>;<DOT-BELOW>;<SMALL>;IGNORE
+<R,> <R>;<CEDILLA>;<CAPITAL>;IGNORE
+<r,> <R>;<CEDILLA>;<SMALL>;IGNORE
+<R--.> <R>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<r--.> <R>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<R_> <R>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<r_> <R>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<S> <S>;<NONE>;<CAPITAL>;IGNORE
+<s> <S>;<NONE>;<SMALL>;IGNORE
+<st> "<S><T>";"<NONE><NONE>";"<st><st>";IGNORE
+<S'> <S>;<ACUTE>;<CAPITAL>;IGNORE
+<s'> <S>;<ACUTE>;<SMALL>;IGNORE
+<S'.> <S>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<s'.> <S>;<ACUTE+DOT>;<SMALL>;IGNORE
+<S/>> <S>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<s/>> <S>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<S<> <S>;<CARON>;<CAPITAL>;IGNORE
+<s<> <S>;<CARON>;<SMALL>;IGNORE
+<S<.> <S>;<CARON+DOT>;<CAPITAL>;IGNORE
+<s<.> <S>;<CARON+DOT>;<SMALL>;IGNORE
+<S.> <S>;<DOT>;<CAPITAL>;IGNORE
+<s.> <S>;<DOT>;<SMALL>;IGNORE
+<S-.> <S>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<s-.> <S>;<DOT-BELOW>;<SMALL>;IGNORE
+<S.-.> <S>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<s.-.> <S>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<S,> <S>;<CEDILLA>;<CAPITAL>;IGNORE
+<s,> <S>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<s1> <S>;<s1>;<SMALL>;IGNORE
+<ss> "<S><S>";"<NONE><NONE>";"<SMALL><ss>";IGNORE
+<T> <T>;<NONE>;<CAPITAL>;IGNORE
+<t> <T>;<NONE>;<SMALL>;IGNORE
+<T<> <T>;<CARON>;<CAPITAL>;IGNORE
+<t<> <T>;<CARON>;<SMALL>;IGNORE
+<T.> <T>;<DOT>;<CAPITAL>;IGNORE
+<t.> <T>;<DOT>;<SMALL>;IGNORE
+<T-.> <T>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<t-.> <T>;<DOT-BELOW>;<SMALL>;IGNORE
+<T//> <T>;<STROKE>;<CAPITAL>;IGNORE
+<t//> <T>;<STROKE>;<SMALL>;IGNORE
+<T,> <T>;<CEDILLA>;<CAPITAL>;IGNORE
+<t,> <T>;<CEDILLA>;<SMALL>;IGNORE
+<T-/>> <T>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<t-/>> <T>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<T_> <T>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<t_> <T>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<TH> "<T><H>";"<TH><TH>";"<CAPITAL><CAPITAL>";IGNORE
+<th> "<T><H>";"<TH><TH>";"<SMALL><SMALL>";IGNORE
+<U> <U>;<NONE>;<CAPITAL>;IGNORE
+<u> <U>;<NONE>;<SMALL>;IGNORE
+<U'> <U>;<ACUTE>;<CAPITAL>;IGNORE
+<u'> <U>;<ACUTE>;<SMALL>;IGNORE
+<U!> <U>;<GRAVE>;<CAPITAL>;IGNORE
+<u!> <U>;<GRAVE>;<SMALL>;IGNORE
+<U!!> <U>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<u!!> <U>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U(> <U>;<BREVE>;<CAPITAL>;IGNORE
+<u(> <U>;<BREVE>;<SMALL>;IGNORE
+<U)> <U>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<u)> <U>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U/>> <U>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<u/>> <U>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U<> <U>;<CARON>;<CAPITAL>;IGNORE
+<u<> <U>;<CARON>;<SMALL>;IGNORE
+<U0> <U>;<RING>;<CAPITAL>;IGNORE
+<u0> <U>;<RING>;<SMALL>;IGNORE
+<U:> <U>;<DIAERESIS>;<CAPITAL>;IGNORE
+<u:> <U>;<DIAERESIS>;<SMALL>;IGNORE
+<U:-> <U>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<u:-> <U>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U:'> <U>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<u:'> <U>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U:!> <U>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<u:!> <U>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U:<> <U>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<u:<> <U>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U"> <U>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<u"> <U>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U2> <U>;<HOOK>;<CAPITAL>;IGNORE
+<u2> <U>;<HOOK>;<SMALL>;IGNORE
+<U?> <U>;<TILDE>;<CAPITAL>;IGNORE
+<u?> <U>;<TILDE>;<SMALL>;IGNORE
+<U?'> <U>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<u?'> <U>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U-?> <U>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<u-?> <U>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U-.> <U>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<u-.> <U>;<DOT-BELOW>;<SMALL>;IGNORE
+<U;> <U>;<OGONEK>;<CAPITAL>;IGNORE
+<u;> <U>;<OGONEK>;<SMALL>;IGNORE
+<U-> <U>;<MACRON>;<CAPITAL>;IGNORE
+<u-> <U>;<MACRON>;<SMALL>;IGNORE
+<U-:> <U>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<u-:> <U>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U--:> <U>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<u--:> <U>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U-/>> <U>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<u-/>> <U>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U9> <U>;<HORN>;<CAPITAL>;IGNORE
+<u9> <U>;<HORN>;<SMALL>;IGNORE
+<U9'> <U>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<u9'> <U>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U9!> <U>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<u9!> <U>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U92> <U>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<u92> <U>;<HORN+HOOK>;<SMALL>;IGNORE
+<U9?> <U>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<u9?> <U>;<HORN+TILDE>;<SMALL>;IGNORE
+<U9-.> <U>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<u9-.> <U>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<V> <V>;<NONE>;<CAPITAL>;IGNORE
+<v> <V>;<NONE>;<SMALL>;IGNORE
+<V?> <V>;<TILDE>;<CAPITAL>;IGNORE
+<v?> <V>;<TILDE>;<SMALL>;IGNORE
+<V-.> <V>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<v-.> <V>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<W> <W>;<NONE>;<CAPITAL>;IGNORE
+<w> <W>;<NONE>;<SMALL>;IGNORE
+<W'> <W>;<ACUTE>;<CAPITAL>;IGNORE
+<w'> <W>;<ACUTE>;<SMALL>;IGNORE
+<W!> <W>;<GRAVE>;<CAPITAL>;IGNORE
+<w!> <W>;<GRAVE>;<SMALL>;IGNORE
+<W/>> <W>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<w/>> <W>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<W:> <W>;<DIAERESIS>;<CAPITAL>;IGNORE
+<w:> <W>;<DIAERESIS>;<SMALL>;IGNORE
+<W.> <W>;<DOT>;<CAPITAL>;IGNORE
+<w.> <W>;<DOT>;<SMALL>;IGNORE
+<W-.> <W>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<w-.> <W>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<X> <X>;<NONE>;<CAPITAL>;IGNORE
+<x> <X>;<NONE>;<SMALL>;IGNORE
+<X:> <X>;<DIAERESIS>;<CAPITAL>;IGNORE
+<x:> <X>;<DIAERESIS>;<SMALL>;IGNORE
+<X.> <X>;<DOT>;<CAPITAL>;IGNORE
+<x.> <X>;<DOT>;<SMALL>;IGNORE
+<x8>
+<Y> <Y>;<NONE>;<CAPITAL>;IGNORE
+<y> <Y>;<NONE>;<SMALL>;IGNORE
+<Y'> <Y>;<ACUTE>;<CAPITAL>;IGNORE
+<y'> <Y>;<ACUTE>;<SMALL>;IGNORE
+<Y!> <Y>;<GRAVE>;<CAPITAL>;IGNORE
+<y!> <Y>;<GRAVE>;<SMALL>;IGNORE
+<Y/>> <Y>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<y/>> <Y>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<Y:> <Y>;<DIAERESIS>;<CAPITAL>;IGNORE
+<y:> <Y>;<DIAERESIS>;<SMALL>;IGNORE
+<Y2> <Y>;<HOOK>;<CAPITAL>;IGNORE
+<y2> <Y>;<HOOK>;<SMALL>;IGNORE
+<Y?> <Y>;<TILDE>;<CAPITAL>;IGNORE
+<y?> <Y>;<TILDE>;<SMALL>;IGNORE
+<Y.> <Y>;<DOT>;<CAPITAL>;IGNORE
+<y.> <Y>;<DOT>;<SMALL>;IGNORE
+<Y-.> <Y>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<y-.> <Y>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<Z> <Z>;<NONE>;<CAPITAL>;IGNORE
+<z> <Z>;<NONE>;<SMALL>;IGNORE
+<Z'> <Z>;<ACUTE>;<CAPITAL>;IGNORE
+<z'> <Z>;<ACUTE>;<SMALL>;IGNORE
+<Z/>> <Z>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<z/>> <Z>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<Z<> <Z>;<CARON>;<CAPITAL>;IGNORE
+<z<> <Z>;<CARON>;<SMALL>;IGNORE
+<Z.> <Z>;<DOT>;<CAPITAL>;IGNORE
+<z.> <Z>;<DOT>;<SMALL>;IGNORE
+<Z-.> <Z>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<z-.> <Z>;<DOT-BELOW>;<SMALL>;IGNORE
+<Z//> <Z>;<STROKE>;<CAPITAL>;IGNORE
+<z//> <Z>;<STROKE>;<SMALL>;IGNORE
+<Z_> <Z>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<z_> <Z>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<A*> <A*>;<CAPITAL>;<GREEK>;IGNORE
+<A%> <A*>;<CAPITAL>;<TONOS>;IGNORE
+<a*> <A*>;<SMALL>;<GREEK>;IGNORE
+<a%> <A*>;<SMALL>;<TONOS>;IGNORE
+<B*> <B*>;<CAPITAL>;<GREEK>;IGNORE
+<b*> <B*>;<SMALL>;<GREEK>;IGNORE
+<G*> <G*>;<CAPITAL>;<GREEK>;IGNORE
+<g*> <G*>;<SMALL>;<GREEK>;IGNORE
+<D*> <D*>;<CAPITAL>;<GREEK>;IGNORE
+<d*> <D*>;<SMALL>;<GREEK>;IGNORE
+<E*> <E*>;<CAPITAL>;<GREEK>;IGNORE
+<E%> <E*>;<CAPITAL>;<TONOS>;IGNORE
+<e*> <E*>;<SMALL>;<GREEK>;IGNORE
+<e%> <E*>;<SMALL>;<TONOS>;IGNORE
+<Z*> <Z*>;<CAPITAL>;<GREEK>;IGNORE
+<z*> <Z*>;<SMALL>;<GREEK>;IGNORE
+<Y*> <Y*>;<CAPITAL>;<GREEK>;IGNORE
+<Y%> <Y*>;<CAPITAL>;<TONOS>;IGNORE
+<y*> <Y*>;<SMALL>;<GREEK>;IGNORE
+<y%> <Y*>;<SMALL>;<TONOS>;IGNORE
+<H*> <H*>;<CAPITAL>;<GREEK>;IGNORE
+<h*> <H*>;<SMALL>;<GREEK>;IGNORE
+<I*> <I*>;<CAPITAL>;<GREEK>;IGNORE
+<I%> <I*>;<CAPITAL>;<TONOS>;IGNORE
+<J*> <I*>;<CAPITAL>;<DIALYTICA>;IGNORE
+<i*> <I*>;<SMALL>;<GREEK>;IGNORE
+<i%> <I*>;<SMALL>;<TONOS>;IGNORE
+<j*> <I*>;<SMALL>;<DIALYTICA>;IGNORE
+<i3> <I*>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<K*> <K*>;<CAPITAL>;<GREEK>;IGNORE
+<k*> <K*>;<SMALL>;<GREEK>;IGNORE
+<L*> <L*>;<CAPITAL>;<GREEK>;IGNORE
+<l*> <L*>;<SMALL>;<GREEK>;IGNORE
+<M*> <M*>;<CAPITAL>;<GREEK>;IGNORE
+<m*> <M*>;<SMALL>;<GREEK>;IGNORE
+<N*> <N*>;<CAPITAL>;<GREEK>;IGNORE
+<n*> <N*>;<SMALL>;<GREEK>;IGNORE
+<C*> <C*>;<CAPITAL>;<GREEK>;IGNORE
+<c*> <C*>;<SMALL>;<GREEK>;IGNORE
+<O*> <O*>;<CAPITAL>;<GREEK>;IGNORE
+<O%> <O*>;<CAPITAL>;<TONOS>;IGNORE
+<o*> <O*>;<SMALL>;<GREEK>;IGNORE
+<o%> <O*>;<SMALL>;<TONOS>;IGNORE
+<P*> <P*>;<CAPITAL>;<GREEK>;IGNORE
+<p*> <P*>;<SMALL>;<GREEK>;IGNORE
+<R*> <R*>;<CAPITAL>;<GREEK>;IGNORE
+<r*> <R*>;<SMALL>;<GREEK>;IGNORE
+<S*> <S*>;<CAPITAL>;<GREEK>;IGNORE
+<s*> <S*>;<SMALL>;<GREEK>;IGNORE
+<*s> <S*>;<SMALL>;<*s>;IGNORE
+<T*> <T*>;<CAPITAL>;<GREEK>;IGNORE
+<t*> <T*>;<SMALL>;<GREEK>;IGNORE
+<U*> <U*>;<CAPITAL>;<GREEK>;IGNORE
+<U%> <U*>;<CAPITAL>;<TONOS>;IGNORE
+<V*> <U*>;<CAPITAL>;<DIALYTICA>;IGNORE
+<u*> <U*>;<SMALL>;<GREEK>;IGNORE
+<u%> <U*>;<SMALL>;<TONOS>;IGNORE
+<v*> <U*>;<SMALL>;<DIALYTICA>;IGNORE
+<u3> <U*>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<F*> <F*>;<CAPITAL>;<GREEK>;IGNORE
+<f*> <F*>;<SMALL>;<GREEK>;IGNORE
+<X*> <X*>;<CAPITAL>;<GREEK>;IGNORE
+<x*> <X*>;<SMALL>;<GREEK>;IGNORE
+<Q*> <Q*>;<CAPITAL>;<GREEK>;IGNORE
+<q*> <Q*>;<SMALL>;<GREEK>;IGNORE
+<W*> <W*>;<CAPITAL>;<GREEK>;IGNORE
+<W%> <W*>;<CAPITAL>;<TONOS>;IGNORE
+<w*> <W*>;<SMALL>;<GREEK>;IGNORE
+<w%> <W*>;<SMALL>;<TONOS>;IGNORE
+<A=> <A=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<a=> <A=>;<CYRILLIC>;<SMALL>;IGNORE
+<B=> <B=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<b=> <B=>;<CYRILLIC>;<SMALL>;IGNORE
+<V=> <V=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<v=> <V=>;<CYRILLIC>;<SMALL>;IGNORE
+<G=> <G=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<g=> <G=>;<CYRILLIC>;<SMALL>;IGNORE
+<G%> <G%>;<CYRILLIC>;<CAPITAL>;IGNORE
+<g%> <G%>;<CYRILLIC>;<SMALL>;IGNORE
+<G3> <G3>;<CYRILLIC>;<CAPITAL>;IGNORE
+<g3> <G3>;<CYRILLIC>;<SMALL>;IGNORE
+<D=> <D=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<d=> <D=>;<CYRILLIC>;<SMALL>;IGNORE
+<D%> <D%>;<CYRILLIC>;<CAPITAL>;IGNORE
+<d%> <D%>;<CYRILLIC>;<SMALL>;IGNORE
+<E=> <E=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<e=> <E=>;<CYRILLIC>;<SMALL>;IGNORE
+<IO> <IO>;<CYRILLIC>;<CAPITAL>;IGNORE
+<io> <IO>;<CYRILLIC>;<SMALL>;IGNORE
+<IE> <IE>;<CYRILLIC>;<CAPITAL>;IGNORE
+<ie> <IE>;<CYRILLIC>;<SMALL>;IGNORE
+<Z%> <Z%>;<CYRILLIC>;<CAPITAL>;IGNORE
+<z%> <Z%>;<CYRILLIC>;<SMALL>;IGNORE
+<Z=> <Z=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<z=> <Z=>;<CYRILLIC>;<SMALL>;IGNORE
+<I=> <I=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<i=> <I=>;<CYRILLIC>;<SMALL>;IGNORE
+<II> <II>;<CYRILLIC>;<CAPITAL>;IGNORE
+<ii> <II>;<CYRILLIC>;<SMALL>;IGNORE
+<YI> <YI>;<CYRILLIC>;<CAPITAL>;IGNORE
+<yi> <YI>;<CYRILLIC>;<SMALL>;IGNORE
+<J%> <J%>;<CYRILLIC>;<CAPITAL>;IGNORE
+<j%> <J%>;<CYRILLIC>;<SMALL>;IGNORE
+<J=> <J=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<j=> <J=>;<CYRILLIC>;<SMALL>;IGNORE
+<K=> <K=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<k=> <K=>;<CYRILLIC>;<SMALL>;IGNORE
+<KJ> <KJ>;<CYRILLIC>;<CAPITAL>;IGNORE
+<kj> <KJ>;<CYRILLIC>;<SMALL>;IGNORE
+<L=> <L=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<l=> <L=>;<CYRILLIC>;<SMALL>;IGNORE
+<LJ> <LJ>;<CYRILLIC>;<CAPITAL>;IGNORE
+<lj> <LJ>;<CYRILLIC>;<SMALL>;IGNORE
+<M=> <M=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<m=> <M=>;<CYRILLIC>;<SMALL>;IGNORE
+<N=> <N=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<n=> <N=>;<CYRILLIC>;<SMALL>;IGNORE
+<NJ> <NJ>;<CYRILLIC>;<CAPITAL>;IGNORE
+<nj> <NJ>;<CYRILLIC>;<SMALL>;IGNORE
+<O=> <O=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<o=> <O=>;<CYRILLIC>;<SMALL>;IGNORE
+<P=> <P=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<p=> <P=>;<CYRILLIC>;<SMALL>;IGNORE
+<R=> <R=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<r=> <R=>;<CYRILLIC>;<SMALL>;IGNORE
+<S=> <S=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<s=> <S=>;<CYRILLIC>;<SMALL>;IGNORE
+<T=> <T=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<t=> <T=>;<CYRILLIC>;<SMALL>;IGNORE
+<Ts> <Ts>;<CYRILLIC>;<CAPITAL>;IGNORE
+<ts> <Ts>;<CYRILLIC>;<SMALL>;IGNORE
+<U=> <U=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<u=> <U=>;<CYRILLIC>;<SMALL>;IGNORE
+<V%> <V%>;<CYRILLIC>;<CAPITAL>;IGNORE
+<v%> <V%>;<CYRILLIC>;<SMALL>;IGNORE
+<F=> <F=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<f=> <F=>;<CYRILLIC>;<SMALL>;IGNORE
+<H=> <H=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<h=> <H=>;<CYRILLIC>;<SMALL>;IGNORE
+<C=> <C=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<c=> <C=>;<CYRILLIC>;<SMALL>;IGNORE
+<DS> <DS>;<CYRILLIC>;<CAPITAL>;IGNORE
+<ds> <DS>;<CYRILLIC>;<SMALL>;IGNORE
+<C%> <C%>;<CYRILLIC>;<CAPITAL>;IGNORE
+<c%> <C%>;<CYRILLIC>;<SMALL>;IGNORE
+<DZ> <DZ>;<CYRILLIC>;<CAPITAL>;IGNORE
+<dz> <DZ>;<CYRILLIC>;<SMALL>;IGNORE
+<S%> <S%>;<CYRILLIC>;<CAPITAL>;IGNORE
+<s%> <S%>;<CYRILLIC>;<SMALL>;IGNORE
+<Sc> <Sc>;<CYRILLIC>;<CAPITAL>;IGNORE
+<sc> <Sc>;<CYRILLIC>;<SMALL>;IGNORE
+<='> <='>;<CYRILLIC>;<SMALL>;IGNORE
+<="> <='>;<CYRILLIC>;<CAPITAL>;IGNORE
+<Y=> <Y=>;<CYRILLIC>;<CAPITAL>;IGNORE
+<y=> <Y=>;<CYRILLIC>;<SMALL>;IGNORE
+<%'> <%'>;<CYRILLIC>;<SMALL>;IGNORE
+<%"> <%'>;<CYRILLIC>;<CAPITAL>;IGNORE
+<JE> <JE>;<CYRILLIC>;<CAPITAL>;IGNORE
+<je> <JE>;<CYRILLIC>;<SMALL>;IGNORE
+<JU> <JU>;<CYRILLIC>;<CAPITAL>;IGNORE
+<ju> <JU>;<CYRILLIC>;<SMALL>;IGNORE
+<JA> <JA>;<CYRILLIC>;<CAPITAL>;IGNORE
+<ja> <JA>;<CYRILLIC>;<SMALL>;IGNORE
+<Y3> <Y3>;<CYRILLIC>;<CAPITAL>;IGNORE
+<y3> <Y3>;<CYRILLIC>;<SMALL>;IGNORE
+<O3> <O3>;<CYRILLIC>;<CAPITAL>;IGNORE
+<o3> <O3>;<CYRILLIC>;<SMALL>;IGNORE
+<F3> <F3>;<CYRILLIC>;<CAPITAL>;IGNORE
+<f3> <F3>;<CYRILLIC>;<SMALL>;IGNORE
+<V3> <V3>;<CYRILLIC>;<CAPITAL>;IGNORE
+<v3> <V3>;<CYRILLIC>;<SMALL>;IGNORE
+<C3> <C3>;<CYRILLIC>;<CAPITAL>;IGNORE
+<c3> <C3>;<CYRILLIC>;<SMALL>;IGNORE
+<A+> <A+>;IGNORE;IGNORE;IGNORE
+<B+> <B+>;IGNORE;IGNORE;IGNORE
+<G+> <G+>;IGNORE;IGNORE;IGNORE
+<D+> <D+>;IGNORE;IGNORE;IGNORE
+<H+> <H+>;IGNORE;IGNORE;IGNORE
+<W+> <W+>;IGNORE;IGNORE;IGNORE
+<Z+> <Z+>;IGNORE;IGNORE;IGNORE
+<X+> <X+>;IGNORE;IGNORE;IGNORE
+<Tj> <Tj>;IGNORE;IGNORE;IGNORE
+<J+> <J+>;IGNORE;IGNORE;IGNORE
+<K%> <K%>;IGNORE;IGNORE;IGNORE
+<K+> <K+>;IGNORE;IGNORE;IGNORE
+<L+> <L+>;IGNORE;IGNORE;IGNORE
+<M%> <M%>;IGNORE;IGNORE;IGNORE
+<M+> <M+>;IGNORE;IGNORE;IGNORE
+<N%> <N%>;IGNORE;IGNORE;IGNORE
+<N+> <N+>;IGNORE;IGNORE;IGNORE
+<S+> <S+>;IGNORE;IGNORE;IGNORE
+<E+> <E+>;IGNORE;IGNORE;IGNORE
+<P%> <P%>;IGNORE;IGNORE;IGNORE
+<P+> <P+>;IGNORE;IGNORE;IGNORE
+<Zj> <Zj>;IGNORE;IGNORE;IGNORE
+<ZJ> <ZJ>;IGNORE;IGNORE;IGNORE
+<Q+> <Q+>;IGNORE;IGNORE;IGNORE
+<R+> <R+>;IGNORE;IGNORE;IGNORE
+<Sh> <Sh>;IGNORE;IGNORE;IGNORE
+<T+> <T+>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<,+> IGNORE;IGNORE;IGNORE;<,+>
+<;+> IGNORE;IGNORE;IGNORE;<;+>
+<?+> IGNORE;IGNORE;IGNORE;<?+>
+<++> IGNORE;IGNORE;IGNORE;<++>
+
+<H'> <H'>;<H'>;IGNORE;IGNORE
+<aM> <aM>;<aM>;IGNORE;IGNORE
+<aM.> <aM>;<aM.>;IGNORE;IGNORE
+<aH> <H'>;<aH>;IGNORE;IGNORE
+<aH.> <H'>;<aH.>;IGNORE;IGNORE
+<wH> <H'>;<wH>;IGNORE;IGNORE
+<ah> <H'>;<ah>;IGNORE;IGNORE
+<ah.> <H'>;<ah.>;IGNORE;IGNORE
+<yH> <H'>;<yH>;IGNORE;IGNORE
+<aS> <aS>;<aS>;IGNORE;IGNORE
+<a+> <a+>;<a+>;IGNORE;IGNORE
+<a+-> <a+>;<a+->;IGNORE;IGNORE
+<a+.> <a+>;<a+.>;IGNORE;IGNORE
+<a+:> <a+>;<a+:>;IGNORE;IGNORE
+<b+> <b+>;<b+>;IGNORE;IGNORE
+<b+-> <b+>;<b+->;IGNORE;IGNORE
+<b+.> <b+>;<b+.>;IGNORE;IGNORE
+<b+,> <b+>;<b+,>;IGNORE;IGNORE
+<b+;> <b+>;<b+;>;IGNORE;IGNORE
+<p+> <p+>;<p+>;IGNORE;IGNORE
+<v+> <v+>;<v+>;IGNORE;IGNORE
+<tm> <tm>;<tm>;IGNORE;IGNORE
+<tm-> <tm>;<tm->;IGNORE;IGNORE
+<tm.> <tm>;<tm.>;IGNORE;IGNORE
+<t+> <tm>;<t+>;IGNORE;IGNORE
+<t+-> <tm>;<t+->;IGNORE;IGNORE
+<t+.> <tm>;<t+.>;IGNORE;IGNORE
+<t+,> <tm>;<t+,>;IGNORE;IGNORE
+<t+;> <tm>;<t+;>;IGNORE;IGNORE
+<tk> <tk>;<tk>;IGNORE;IGNORE
+<tk-> <tk>;<tk->;IGNORE;IGNORE
+<tk.> <tk>;<tk.>;IGNORE;IGNORE
+<tk,> <tk>;<tk,>;IGNORE;IGNORE
+<tk;> <tk>;<tk;>;IGNORE;IGNORE
+<g+> <g+>;<g+>;IGNORE;IGNORE
+<g+-> <g+>;<g+->;IGNORE;IGNORE
+<g+.> <g+>;<g+.>;IGNORE;IGNORE
+<g+,> <g+>;<g+,>;IGNORE;IGNORE
+<g+;> <g+>;<g+;>;IGNORE;IGNORE
+<hk> <hk>;<hk>;IGNORE;IGNORE
+<hk-> <hk>;<hk->;IGNORE;IGNORE
+<hk.> <hk>;<hk.>;IGNORE;IGNORE
+<hk,> <hk>;<hk,>;IGNORE;IGNORE
+<hk;> <hk>;<hk;>;IGNORE;IGNORE
+<x+> <x+>;<x+>;IGNORE;IGNORE
+<x+-> <x+>;<x+->;IGNORE;IGNORE
+<x+.> <x+>;<x+.>;IGNORE;IGNORE
+<x+,> <x+>;<x+,>;IGNORE;IGNORE
+<x+;> <x+>;<x+;>;IGNORE;IGNORE
+<d+> <d+>;<d+>;IGNORE;IGNORE
+<d+-> <d+>;<d+->;IGNORE;IGNORE
+<d+.> <d+>;<d+.>;IGNORE;IGNORE
+<dk> <dk>;<dk>;IGNORE;IGNORE
+<dk-> <dk>;<dk->;IGNORE;IGNORE
+<dk.> <dk>;<dk.>;IGNORE;IGNORE
+<r+> <r+>;<r+>;IGNORE;IGNORE
+<r+-> <r+>;<r+->;IGNORE;IGNORE
+<r+.> <r+>;<r+.>;IGNORE;IGNORE
+<z+> <z+>;<z+>;IGNORE;IGNORE
+<z+-> <z+>;<z+->;IGNORE;IGNORE
+<z+.> <z+>;<z+.>;IGNORE;IGNORE
+<s+> <s+>;<s+>;IGNORE;IGNORE
+<s+-> <s+>;<s+->;IGNORE;IGNORE
+<s+.> <s+>;<s+.>;IGNORE;IGNORE
+<s+,> <s+>;<s+,>;IGNORE;IGNORE
+<s+;> <s+>;<s+;>;IGNORE;IGNORE
+<sn> <sn>;<sn>;IGNORE;IGNORE
+<sn-> <sn>;<sn->;IGNORE;IGNORE
+<sn.> <sn>;<sn.>;IGNORE;IGNORE
+<sn,> <sn>;<sn,>;IGNORE;IGNORE
+<sn;> <sn>;<sn;>;IGNORE;IGNORE
+<c+> <c+>;<c+>;IGNORE;IGNORE
+<c+-> <c+>;<c+->;IGNORE;IGNORE
+<c+.> <c+>;<c+.>;IGNORE;IGNORE
+<c+,> <c+>;<c+,>;IGNORE;IGNORE
+<c+;> <c+>;<c+;>;IGNORE;IGNORE
+<dd> <dd>;<dd>;IGNORE;IGNORE
+<dd-> <dd>;<dd->;IGNORE;IGNORE
+<dd.> <dd>;<dd.>;IGNORE;IGNORE
+<dd,> <dd>;<dd,>;IGNORE;IGNORE
+<dd;> <dd>;<dd;>;IGNORE;IGNORE
+<tj> <tj>;<tj>;IGNORE;IGNORE
+<tj-> <tj>;<tj->;IGNORE;IGNORE
+<tj.> <tj>;<tj.>;IGNORE;IGNORE
+<tj,> <tj>;<tj,>;IGNORE;IGNORE
+<tj;> <tj>;<tj;>;IGNORE;IGNORE
+<zH> <zH>;<zH>;IGNORE;IGNORE
+<zH-> <zH>;<zH->;IGNORE;IGNORE
+<zH.> <zH>;<zH.>;IGNORE;IGNORE
+<zH,> <zH>;<zH,>;IGNORE;IGNORE
+<zH;> <zH>;<zH;>;IGNORE;IGNORE
+<e+> <e+>;<e+>;IGNORE;IGNORE
+<e+-> <e+>;<e+->;IGNORE;IGNORE
+<e+.> <e+>;<e+.>;IGNORE;IGNORE
+<e+,> <e+>;<e+,>;IGNORE;IGNORE
+<e+;> <e+>;<e+;>;IGNORE;IGNORE
+<i+> <i+>;<i+>;IGNORE;IGNORE
+<i+-> <i+>;<i+->;IGNORE;IGNORE
+<i+.> <i+>;<i+.>;IGNORE;IGNORE
+<i+,> <i+>;<i+,>;IGNORE;IGNORE
+<i+;> <i+>;<i+;>;IGNORE;IGNORE
+<f+> <f+>;<f+>;IGNORE;IGNORE
+<f+-> <f+>;<f+->;IGNORE;IGNORE
+<f+.> <f+>;<f+.>;IGNORE;IGNORE
+<f+,> <f+>;<f+,>;IGNORE;IGNORE
+<f+;> <f+>;<f+;>;IGNORE;IGNORE
+<q+> <q+>;<q+>;IGNORE;IGNORE
+<q+-> <q+>;<q+->;IGNORE;IGNORE
+<q+.> <q+>;<q+.>;IGNORE;IGNORE
+<q+,> <q+>;<q+,>;IGNORE;IGNORE
+<q+;> <q+>;<q+;>;IGNORE;IGNORE
+<k+> <k+>;<k+>;IGNORE;IGNORE
+<k+-> <k+>;<k+->;IGNORE;IGNORE
+<k+.> <k+>;<k+.>;IGNORE;IGNORE
+<k+,> <k+>;<k+,>;IGNORE;IGNORE
+<k+;> <k+>;<k+;>;IGNORE;IGNORE
+<l+> <l+>;<l+>;IGNORE;IGNORE
+<l+-> <l+>;<l+->;IGNORE;IGNORE
+<l+.> <l+>;<l+.>;IGNORE;IGNORE
+<l+,> <l+>;<l+,>;IGNORE;IGNORE
+<l+;> <l+>;<l+;>;IGNORE;IGNORE
+<m+> <m+>;<m+>;IGNORE;IGNORE
+<m+-> <m+>;<m+->;IGNORE;IGNORE
+<m+.> <m+>;<m+.>;IGNORE;IGNORE
+<m+,> <m+>;<m+,>;IGNORE;IGNORE
+<m+;> <m+>;<m+;>;IGNORE;IGNORE
+<n+> <n+>;<n+>;IGNORE;IGNORE
+<n+-> <n+>;<n+->;IGNORE;IGNORE
+<n+.> <n+>;<n+.>;IGNORE;IGNORE
+<n+,> <n+>;<n+,>;IGNORE;IGNORE
+<n+;> <n+>;<n+;>;IGNORE;IGNORE
+<h+> <h+>;<h+>;IGNORE;IGNORE
+<h+-> <h+>;<h+->;IGNORE;IGNORE
+<h+.> <h+>;<h+.>;IGNORE;IGNORE
+<h+,> <h+>;<h+,>;IGNORE;IGNORE
+<h+;> <h+>;<h+;>;IGNORE;IGNORE
+<w+> <w+>;<w+>;IGNORE;IGNORE
+<w+-> <w+>;<w+->;IGNORE;IGNORE
+<w+.> <w+>;<w+.>;IGNORE;IGNORE
+<j+> <j+>;<j+>;IGNORE;IGNORE
+<j+-> <j+>;<j+->;IGNORE;IGNORE
+<j+.> <j+>;<j+.>;IGNORE;IGNORE
+<y+> <y+>;<y+>;IGNORE;IGNORE
+<y+-> <y+>;<y+->;IGNORE;IGNORE
+<y+.> <y+>;<y+.>;IGNORE;IGNORE
+<y+,> <y+>;<y+,>;IGNORE;IGNORE
+<y+;> <y+>;<y+;>;IGNORE;IGNORE
+
+<:+> IGNORE;IGNORE;<:+>;IGNORE
+<"+> IGNORE;IGNORE;<"+>;IGNORE
+<=+> IGNORE;IGNORE;<=+>;IGNORE
+<//+> IGNORE;IGNORE;<//+>;IGNORE
+<'+> IGNORE;IGNORE;<'+>;IGNORE
+<1+> IGNORE;IGNORE;<1+>;IGNORE
+<3+> IGNORE;IGNORE;<3+>;IGNORE
+<3+;> IGNORE;IGNORE;<3+;>;IGNORE
+<0+> IGNORE;IGNORE;<0+>;IGNORE
+
+<0a> <0>;<0a>;IGNORE;IGNORE
+<1a> <1>;<1a>;IGNORE;IGNORE
+<2a> <2>;<2a>;IGNORE;IGNORE
+<3a> <3>;<3a>;IGNORE;IGNORE
+<4a> <4>;<4a>;IGNORE;IGNORE
+<5a> <5>;<5a>;IGNORE;IGNORE
+<6a> <6>;<6a>;IGNORE;IGNORE
+<7a> <7>;<7a>;IGNORE;IGNORE
+<8a> <8>;<8a>;IGNORE;IGNORE
+<9a> <9>;<9a>;IGNORE;IGNORE
+
+<lM-> <l+><aM>;<l+><aM>;<lM-><lM->;IGNORE
+<lM.> <l+><aM>;<l+><aM.>;<lM.><lM.>;IGNORE
+<lH-> <l+><aH>;<l+><aH>;<lH-><lH->;IGNORE
+<lH.> <l+><aH>;<l+><aH.>;<lH.><lH.>;IGNORE
+<lh-> <l+><ah>;<l+><ah>;<lh-><lh->;IGNORE
+<lh.> <l+><ah>;<l+><ah.>;<lh.><lh.>;IGNORE
+<la-> <l+><a+>;<l+><a+->;<la-><la->;IGNORE
+<la.> <l+><a+>;<l+><a+.>;<la.><la.>;IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<a6> <a6>;<a6>;IGNORE;IGNORE
+<A5> <a6>;<A5>;IGNORE;IGNORE
+<A6> <a6>;<A6>;IGNORE;IGNORE
+<a5> <a6>;<a5>;IGNORE;IGNORE
+<i6> <i6>;<i6>;IGNORE;IGNORE
+<I5> <i6>;<I5>;IGNORE;IGNORE
+<I6> <i6>;<I6>;IGNORE;IGNORE
+<i5> <i6>;<i5>;IGNORE;IGNORE
+<u6> <u6>;<u6>;IGNORE;IGNORE
+<U5> <u6>;<U5>;IGNORE;IGNORE
+<U6> <u6>;<U6>;IGNORE;IGNORE
+<u5> <u6>;<u5>;IGNORE;IGNORE
+<Vu> <u6>;<Vu>;IGNORE;IGNORE
+<e6> <e6>;<e6>;IGNORE;IGNORE
+<E5> <e6>;<E5>;IGNORE;IGNORE
+<E6> <e6>;<E6>;IGNORE;IGNORE
+<e5> <e6>;<e5>;IGNORE;IGNORE
+<o6> <o6>;<o6>;IGNORE;IGNORE
+<O5> <o6>;<O5>;IGNORE;IGNORE
+<O6> <o6>;<O6>;IGNORE;IGNORE
+<o5> <o6>;<o5>;IGNORE;IGNORE
+<KA> <KA>;<KA>;IGNORE;IGNORE
+<Ka> <KA>;<Ka>;IGNORE;IGNORE
+<ka> <KA>;<ka>;IGNORE;IGNORE
+<Ga> <KA>;<Ga>;IGNORE;IGNORE
+<ga> <KA>;<ga>;IGNORE;IGNORE
+<Ki> <Ki>;<Ki>;IGNORE;IGNORE
+<ki> <Ki>;<ki>;IGNORE;IGNORE
+<Gi> <Ki>;<Gi>;IGNORE;IGNORE
+<gi> <Ki>;<gi>;IGNORE;IGNORE
+<Ku> <Ku>;<Ku>;IGNORE;IGNORE
+<ku> <Ku>;<ku>;IGNORE;IGNORE
+<Gu> <Ku>;<Gu>;IGNORE;IGNORE
+<gu> <Ku>;<gu>;IGNORE;IGNORE
+<KE> <KE>;<KE>;IGNORE;IGNORE
+<Ke> <KE>;<Ke>;IGNORE;IGNORE
+<ke> <KE>;<ke>;IGNORE;IGNORE
+<Ge> <KE>;<Ge>;IGNORE;IGNORE
+<ge> <KE>;<ge>;IGNORE;IGNORE
+<Ko> <Ko>;<Ko>;IGNORE;IGNORE
+<ko> <Ko>;<ko>;IGNORE;IGNORE
+<Go> <Ko>;<Go>;IGNORE;IGNORE
+<go> <Ko>;<go>;IGNORE;IGNORE
+<Sa> <Sa>;<Sa>;IGNORE;IGNORE
+<sa> <Sa>;<sa>;IGNORE;IGNORE
+<Za> <Sa>;<Za>;IGNORE;IGNORE
+<za> <Sa>;<za>;IGNORE;IGNORE
+<Si> <Si>;<Si>;IGNORE;IGNORE
+<si> <Si>;<si>;IGNORE;IGNORE
+<Zi> <Si>;<Zi>;IGNORE;IGNORE
+<zi> <Si>;<zi>;IGNORE;IGNORE
+<Su> <Su>;<Su>;IGNORE;IGNORE
+<su> <Su>;<su>;IGNORE;IGNORE
+<Zu> <Su>;<Zu>;IGNORE;IGNORE
+<zu> <Su>;<zu>;IGNORE;IGNORE
+<Se> <Se>;<Se>;IGNORE;IGNORE
+<se> <Se>;<se>;IGNORE;IGNORE
+<Ze> <Se>;<Ze>;IGNORE;IGNORE
+<ze> <Se>;<ze>;IGNORE;IGNORE
+<So> <So>;<So>;IGNORE;IGNORE
+<so> <So>;<so>;IGNORE;IGNORE
+<Zo> <So>;<Zo>;IGNORE;IGNORE
+<zo> <So>;<zo>;IGNORE;IGNORE
+<Ta> <Ta>;<Ta>;IGNORE;IGNORE
+<ta> <Ta>;<ta>;IGNORE;IGNORE
+<Da> <Ta>;<Da>;IGNORE;IGNORE
+<da> <Ta>;<da>;IGNORE;IGNORE
+<Ti> <Ti>;<Ti>;IGNORE;IGNORE
+<ti> <Ti>;<ti>;IGNORE;IGNORE
+<Di> <Ti>;<Di>;IGNORE;IGNORE
+<di> <Ti>;<di>;IGNORE;IGNORE
+<TU> <TU>;<TU>;IGNORE;IGNORE
+<tU> <TU>;<tU>;IGNORE;IGNORE
+<Tu> <TU>;<Tu>;IGNORE;IGNORE
+<tu> <TU>;<tu>;IGNORE;IGNORE
+<Du> <TU>;<Du>;IGNORE;IGNORE
+<du> <TU>;<du>;IGNORE;IGNORE
+<Te> <Te>;<Te>;IGNORE;IGNORE
+<te> <Te>;<te>;IGNORE;IGNORE
+<De> <Te>;<De>;IGNORE;IGNORE
+<de> <Te>;<de>;IGNORE;IGNORE
+<To> <To>;<To>;IGNORE;IGNORE
+<to> <To>;<to>;IGNORE;IGNORE
+<Do> <To>;<Do>;IGNORE;IGNORE
+<do> <To>;<do>;IGNORE;IGNORE
+<Na> <Na>;<Na>;IGNORE;IGNORE
+<na> <Na>;<na>;IGNORE;IGNORE
+<Ni> <Ni>;<Ni>;IGNORE;IGNORE
+<ni> <Ni>;<ni>;IGNORE;IGNORE
+<Nu> <Nu>;<Nu>;IGNORE;IGNORE
+<nu> <Nu>;<nu>;IGNORE;IGNORE
+<Ne> <Ne>;<Ne>;IGNORE;IGNORE
+<ne> <Ne>;<ne>;IGNORE;IGNORE
+<No> <No>;<No>;IGNORE;IGNORE
+<no> <No>;<no>;IGNORE;IGNORE
+<Ha> <Ha>;<Ha>;IGNORE;IGNORE
+<ha> <Ha>;<ha>;IGNORE;IGNORE
+<Ba> <Ha>;<Ba>;IGNORE;IGNORE
+<ba> <Ha>;<ba>;IGNORE;IGNORE
+<Pa> <Ha>;<Pa>;IGNORE;IGNORE
+<pa> <Ha>;<pa>;IGNORE;IGNORE
+<Hi> <Hi>;<Hi>;IGNORE;IGNORE
+<hi> <Hi>;<hi>;IGNORE;IGNORE
+<Bi> <Hi>;<Bi>;IGNORE;IGNORE
+<bi> <Hi>;<bi>;IGNORE;IGNORE
+<Pi> <Hi>;<Pi>;IGNORE;IGNORE
+<pi> <Hi>;<pi>;IGNORE;IGNORE
+<Hu> <Hu>;<Hu>;IGNORE;IGNORE
+<hu> <Hu>;<hu>;IGNORE;IGNORE
+<Bu> <Hu>;<Bu>;IGNORE;IGNORE
+<bu> <Hu>;<bu>;IGNORE;IGNORE
+<Pu> <Hu>;<Pu>;IGNORE;IGNORE
+<pu> <Hu>;<pu>;IGNORE;IGNORE
+<He> <He>;<He>;IGNORE;IGNORE
+<he> <He>;<he>;IGNORE;IGNORE
+<Be> <He>;<Be>;IGNORE;IGNORE
+<be> <He>;<be>;IGNORE;IGNORE
+<Pe> <He>;<Pe>;IGNORE;IGNORE
+<pe> <He>;<pe>;IGNORE;IGNORE
+<Ho> <Ho>;<Ho>;IGNORE;IGNORE
+<ho> <Ho>;<ho>;IGNORE;IGNORE
+<Bo> <Ho>;<Bo>;IGNORE;IGNORE
+<bo> <Ho>;<bo>;IGNORE;IGNORE
+<Po> <Ho>;<Po>;IGNORE;IGNORE
+<po> <Ho>;<po>;IGNORE;IGNORE
+<Ma> <Ma>;<Ma>;IGNORE;IGNORE
+<ma> <Ma>;<ma>;IGNORE;IGNORE
+<Mi> <Mi>;<Mi>;IGNORE;IGNORE
+<mi> <Mi>;<mi>;IGNORE;IGNORE
+<Mu> <Mu>;<Mu>;IGNORE;IGNORE
+<mu> <Mu>;<mu>;IGNORE;IGNORE
+<Me> <Me>;<Me>;IGNORE;IGNORE
+<me> <Me>;<me>;IGNORE;IGNORE
+<Mo> <Mo>;<Mo>;IGNORE;IGNORE
+<mo> <Mo>;<mo>;IGNORE;IGNORE
+<YA> <YA>;<YA>;IGNORE;IGNORE
+<yA> <YA>;<yA>;IGNORE;IGNORE
+<Ya> <YA>;<Ya>;IGNORE;IGNORE
+<ya> <YA>;<ya>;IGNORE;IGNORE
+<YU> <YU>;<YU>;IGNORE;IGNORE
+<yU> <YU>;<yU>;IGNORE;IGNORE
+<Yu> <YU>;<Yu>;IGNORE;IGNORE
+<yu> <YU>;<yu>;IGNORE;IGNORE
+<YO> <YO>;<YO>;IGNORE;IGNORE
+<yO> <YO>;<yO>;IGNORE;IGNORE
+<Yo> <YO>;<Yo>;IGNORE;IGNORE
+<yo> <YO>;<yo>;IGNORE;IGNORE
+<Ra> <Ra>;<Ra>;IGNORE;IGNORE
+<ra> <Ra>;<ra>;IGNORE;IGNORE
+<Ri> <Ri>;<Ri>;IGNORE;IGNORE
+<ri> <Ri>;<ri>;IGNORE;IGNORE
+<Ru> <Ru>;<Ru>;IGNORE;IGNORE
+<ru> <Ru>;<ru>;IGNORE;IGNORE
+<Re> <Re>;<Re>;IGNORE;IGNORE
+<re> <Re>;<re>;IGNORE;IGNORE
+<Ro> <Ro>;<Ro>;IGNORE;IGNORE
+<ro> <Ro>;<ro>;IGNORE;IGNORE
+<WA> <WA>;<WA>;IGNORE;IGNORE
+<wA> <WA>;<wA>;IGNORE;IGNORE
+<Wa> <WA>;<Wa>;IGNORE;IGNORE
+<wa> <WA>;<wa>;IGNORE;IGNORE
+<Wi> <Wi>;<Wi>;IGNORE;IGNORE
+<wi> <Wi>;<wi>;IGNORE;IGNORE
+<We> <We>;<We>;IGNORE;IGNORE
+<we> <We>;<we>;IGNORE;IGNORE
+<Wo> <Wo>;<Wo>;IGNORE;IGNORE
+<wo> <Wo>;<wo>;IGNORE;IGNORE
+<N6> <N6>;<N6>;IGNORE;IGNORE
+<n5> <N6>;<n5>;IGNORE;IGNORE
+
+order_end
+
+END LC_COLLATE
+
+LC_CTYPE
+
+digit <0>;<1>;<2>;<3>;<4>;/
+ <5>;<6>;<7>;<8>;<9>
+
+xdigit <0>;<1>;<2>;<3>;<4>;/
+ <5>;<6>;<7>;<8>;<9>;/
+ <A>;<B>;<C>;<D>;<E>;<F>;/
+ <a>;<b>;<c>;<d>;<e>;<f>
+
+blank <SP>;<HT>;<NS>
+
+space <SP>;<LF>;<VT>;<FF>;/
+ <CR>;<HT>;<NS>
+
+upper <A>;<B>;<C>;<D>;<E>;<F>;<G>;/
+ <H>;<I>;<J>;<K>;<L>;<M>;<N>;/
+ <O>;<P>;<Q>;<R>;<S>;<T>;<U>;/
+ <V>;<W>;<X>;<Y>;<Z>;<A!>;<A'>;/
+ <A/>>;<A?>;<A:>;<AA>;<AE>;<C,>;/
+ <E!>;<E'>;<E/>>;<E:>;<I!>;<I'>;/
+ <I/>>;<I:>;<D->;<N?>;<O!>;<O'>;/
+ <O/>>;<O?>;<O:>;<O//>;<U!>;/
+ <U'>;<U/>>;<U:>;<Y'>;<TH>;<A->;/
+ <A(>;<A;>;<C'>;<C/>>;<C.>;<C<>;/
+ <D<>;<D//>;<E->;<E(>;<E.>;<E;>;/
+ <E<>;<G/>>;<G(>;<G.>;<G,>;/
+ <H/>>;<H//>;<I?>;<I->;<I(>;/
+ <I;>;<I.>;<IJ>;<J/>>;<K,>;<L'>;/
+ <L,>;<L<>;<L.>;<L//>;<N'>;<N,>;/
+ <N<>;<NG>;<O->;<O(>;<O">;<OE>;/
+ <R'>;<R,>;<R<>;<S'>;<S/>>;<S,>;/
+ <S<>;<T,>;<T<>;<T//>;<U?>;<U->;/
+ <U(>;<U0>;<U">;<U;>;<W/>>;/
+ <Y/>>;<Y:>;<Z'>;<Z.>;<Z<>;<C2>;/
+ <F2>;<K2>;<O9>;<OI>;<U9>;<Z//>;/
+ <ED>;<A<>;<I<>;<O<>;<U<>;<U:->;/
+ <U:'>;<U:<>;<U:!>;<A1>;<A7>;/
+ <A3>;<G//>;<G<>;<K<>;<O;>;<O1>;/
+ <EZ>;<G'>;<AA'>;<AE'>;<O//'>;/
+ <A!!>;<A)>;<E!!>;<E)>;<I!!>;/
+ <I)>;<O!!>;<O)>;<R!!>;<R)>;/
+ <U!!>;<U)>;<A%>;<E%>;<Y%>;<I%>;/
+ <O%>;<U%>;<W%>;<A*>;<B*>;<G*>;/
+ <D*>;<E*>;<Z*>;<Y*>;<H*>;<I*>;/
+ <K*>;<L*>;<M*>;<N*>;<C*>;<O*>;/
+ <P*>;<R*>;<S*>;<T*>;<U*>;<F*>;/
+ <X*>;<Q*>;<W*>;<J*>;<V*>;<IO>;/
+ <D%>;<G%>;<IE>;<DS>;<II>;<YI>;/
+ <J%>;<LJ>;<NJ>;<Ts>;<KJ>;<V%>;/
+ <DZ>;<A=>;<B=>;<V=>;<G=>;<D=>;/
+ <E=>;<Z%>;<Z=>;<I=>;<J=>;<K=>;/
+ <L=>;<M=>;<N=>;<O=>;<P=>;<R=>;/
+ <S=>;<T=>;<U=>;<F=>;<H=>;<C=>;/
+ <C%>;<S%>;<Sc>;<=">;<Y=>;<%">;/
+ <JE>;<JU>;<JA>;<Y3>;<O3>;<F3>;/
+ <V3>;<C3>;<G3>;<A-0>;<B.>;/
+ <B-.>;<B_>;<C,'>;<D.>;<D-.>;/
+ <D_>;<D,>;<D-/>>;<E-!>;<E-'>;/
+ <E-/>>;<E-?>;<E,(>;<F.>;<G->;/
+ <H.>;<H-.>;<H:>;<H,>;<H-(>;/
+ <I-?>;<I:'>;<K'>;<K-.>;<K_>;/
+ <L-.>;<L--.>;<L_>;<L-/>>;<M'>;/
+ <M.>;<M-.>;<N.>;<N-.>;<N_>;/
+ <N-/>>;<O?'>;<O?:>;<O-!>;<O-'>;/
+ <P'>;<P.>;<R.>;<R-.>;<R--.>;/
+ <R_>;<S.>;<S-.>;<S'.>;<S<.>;/
+ <S.-.>;<T.>;<T-.>;<T_>;<T-/>>;/
+ <U--:>;<U-?>;<U-/>>;<U?'>;/
+ <U-:>;<V?>;<V-.>;<W!>;<W'>;/
+ <W:>;<W.>;<W-.>;<X.>;<X:>;<Y.>;/
+ <Z/>>;<Z-.>;<Z_>;<A-.>;<A2>;/
+ <A/>'>;<A/>!>;<A/>2>;<A/>?>;/
+ <A/>-.>;<A('>;<A(!>;<A(2>;/
+ <A(?>;<A(-.>;<E-.>;<E2>;<E?>;/
+ <E/>'>;<E/>!>;<E/>2>;<E/>?>;/
+ <E/>-.>;<I2>;<I-.>;<O-.>;<O2>;/
+ <O/>'>;<O/>!>;<O/>2>;<O/>?>;/
+ <O/>-.>;<O9'>;<O9!>;<O92>;/
+ <O9?>;<O9-.>;<U-.>;<U2>;<U9'>;/
+ <U9!>;<U92>;<U9?>;<U9-.>;<Y!>;/
+ <Y-.>;<Y2>;<Y?>;<A-o>;<B-o>;/
+ <C-o>;<D-o>;<E-o>;<F-o>;<G-o>;/
+ <H-o>;<I-o>;<J-o>;<K-o>;<L-o>;/
+ <M-o>;<N-o>;<O-o>;<P-o>;<Q-o>;/
+ <R-o>;<S-o>;<T-o>;<U-o>;<V-o>;/
+ <W-o>;<X-o>;<Y-o>;<Z-o>
+
+lower <a>;<b>;<c>;<d>;<e>;<f>;<g>;/
+ <h>;<i>;<j>;<k>;<l>;<m>;<n>;/
+ <o>;<p>;<q>;<r>;<s>;<t>;<u>;/
+ <v>;<w>;<x>;<y>;<z>;<ss>;<a!>;/
+ <a'>;<a/>>;<a?>;<a:>;<aa>;<ae>;/
+ <c,>;<e!>;<e'>;<e/>>;<e:>;<i!>;/
+ <i'>;<i/>>;<i:>;<d->;<n?>;<o!>;/
+ <o'>;<o/>>;<o?>;<o:>;<o//>;/
+ <u!>;<u'>;<u/>>;<u:>;<y'>;<th>;/
+ <y:>;<a->;<a(>;<a;>;<c'>;<c/>>;/
+ <c.>;<c<>;<d<>;<d//>;<e->;<e(>;/
+ <e.>;<e;>;<e<>;<g/>>;<g(>;<g.>;/
+ <g,>;<h/>>;<h//>;<i?>;<i->;/
+ <i(>;<i;>;<i.>;<ij>;<j/>>;<k,>;/
+ <kk>;<l'>;<l,>;<l<>;<l.>;<l//>;/
+ <n'>;<n,>;<n<>;<'n>;<ng>;<o->;/
+ <o(>;<o">;<oe>;<r'>;<r,>;<r<>;/
+ <s'>;<s/>>;<s,>;<s<>;<t,>;<t<>;/
+ <t//>;<u?>;<u->;<u(>;<u0>;<u">;/
+ <u;>;<w/>>;<y/>>;<z'>;<z.>;/
+ <z<>;<s1>;<c2>;<f2>;<k2>;<o9>;/
+ <oi>;<u9>;<z//>;<a<>;<i<>;<o<>;/
+ <u<>;<u:->;<u:'>;<u:<>;<u:!>;/
+ <a1>;<a7>;<a3>;<g//>;<g<>;<k<>;/
+ <o;>;<o1>;<ez>;<g'>;<aa'>;/
+ <ae'>;<o//'>;<a!!>;<a)>;<e!!>;/
+ <e)>;<i!!>;<i)>;<o!!>;<o)>;/
+ <r!!>;<r)>;<u!!>;<u)>;<ed>;/
+ <i3>;<a%>;<e%>;<y%>;<i%>;<u3>;/
+ <a*>;<b*>;<g*>;<d*>;<e*>;<z*>;/
+ <y*>;<h*>;<i*>;<k*>;<l*>;<m*>;/
+ <n*>;<c*>;<o*>;<p*>;<r*>;<*s>;/
+ <s*>;<t*>;<u*>;<f*>;<x*>;<q*>;/
+ <w*>;<j*>;<v*>;<o%>;<u%>;<w%>;/
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;/
+ <z%>;<z=>;<i=>;<j=>;<k=>;<l=>;/
+ <m=>;<n=>;<o=>;<p=>;<r=>;<s=>;/
+ <t=>;<u=>;<f=>;<h=>;<c=>;<c%>;/
+ <s%>;<sc>;<='>;<y=>;<%'>;<je>;/
+ <ju>;<ja>;<io>;<d%>;<g%>;<ie>;/
+ <ds>;<ii>;<yi>;<j%>;<lj>;<nj>;/
+ <ts>;<kj>;<v%>;<dz>;<y3>;<o3>;/
+ <f3>;<v3>;<c3>;<g3>;<a-0>;<b.>;/
+ <b-.>;<b_>;<c,'>;<d.>;<d-.>;/
+ <d_>;<d,>;<d-/>>;<e-!>;<e-'>;/
+ <e-/>>;<e-?>;<e,(>;<f.>;<g->;/
+ <h.>;<h-.>;<h:>;<h,>;<h-(>;/
+ <i-?>;<i:'>;<k'>;<k-.>;<k_>;/
+ <l-.>;<l--.>;<l_>;<l-/>>;<m'>;/
+ <m.>;<m-.>;<n.>;<n-.>;<n_>;/
+ <n-/>>;<o?'>;<o?:>;<o-!>;<o-'>;/
+ <p'>;<p.>;<r.>;<r-.>;<r--.>;/
+ <r_>;<s.>;<s-.>;<s'.>;<s<.>;/
+ <s.-.>;<t.>;<t-.>;<t_>;<t-/>>;/
+ <u--:>;<u-?>;<u-/>>;<u?'>;/
+ <u-:>;<v?>;<v-.>;<w!>;<w'>;/
+ <w:>;<w.>;<w-.>;<x.>;<x:>;<y.>;/
+ <z/>>;<z-.>;<z_>;<a-.>;<a2>;/
+ <a/>'>;<a/>!>;<a/>2>;<a/>?>;/
+ <a/>-.>;<a('>;<a(!>;<a(2>;/
+ <a(?>;<a(-.>;<e-.>;<e2>;<e?>;/
+ <e/>'>;<e/>!>;<e/>2>;<e/>?>;/
+ <e/>-.>;<i2>;<i-.>;<o-.>;<o2>;/
+ <o/>'>;<o/>!>;<o/>2>;<o/>?>;/
+ <o/>-.>;<o9'>;<o9!>;<o92>;/
+ <o9?>;<o9-.>;<u-.>;<u2>;<u9'>;/
+ <u9!>;<u92>;<u9?>;<u9-.>;<y!>;/
+ <y-.>;<y2>;<y?>;<nS>;<(a)>;/
+ <(b)>;<(c)>;<(d)>;<(e)>;<(f)>;/
+ <(g)>;<(h)>;<(i)>;<(j)>;<(k)>;/
+ <(l)>;<(m)>;<(n)>;<(o)>;<(p)>;/
+ <(q)>;<(r)>;<(s)>;<(t)>;<(u)>;/
+ <(v)>;<(w)>;<(x)>;<(y)>;<(z)>;/
+ <a-o>;<b-o>;<c-o>;<d-o>;<e-o>;/
+ <f-o>;<g-o>;<h-o>;<i-o>;<j-o>;/
+ <k-o>;<l-o>;<m-o>;<n-o>;<o-o>;/
+ <p-o>;<q-o>;<r-o>;<s-o>;<t-o>;/
+ <u-o>;<v-o>;<w-o>;<x-o>;<y-o>;/
+ <z-o>;<ff>;<fi>;<fl>;<ffi>;/
+ <ffl>;<ft>;<st>
+
+alpha <A>;<B>;<C>;<D>;<E>;<F>;<G>;/
+ <H>;<I>;<J>;<K>;<L>;<M>;<N>;/
+ <O>;<P>;<Q>;<R>;<S>;<T>;<U>;/
+ <V>;<W>;<X>;<Y>;<Z>;<a>;<b>;/
+ <c>;<d>;<e>;<f>;<g>;<h>;<i>;/
+ <j>;<k>;<l>;<m>;<n>;<o>;<p>;/
+ <q>;<r>;<s>;<t>;<u>;<v>;<w>;/
+ <x>;<y>;<z>;<-->;<A!>;<A'>;/
+ <A/>>;<A?>;<A:>;<AA>;<AE>;<C,>;/
+ <E!>;<E'>;<E/>>;<E:>;<I!>;<I'>;/
+ <I/>>;<I:>;<D->;<N?>;<O!>;<O'>;/
+ <O/>>;<O?>;<O:>;<O//>;<U!>;/
+ <U'>;<U/>>;<U:>;<Y'>;<TH>;<ss>;/
+ <a!>;<a'>;<a/>>;<a?>;<a:>;<aa>;/
+ <ae>;<c,>;<e!>;<e'>;<e/>>;<e:>;/
+ <i!>;<i'>;<i/>>;<i:>;<d->;<n?>;/
+ <o!>;<o'>;<o/>>;<o?>;<o:>;/
+ <o//>;<u!>;<u'>;<u/>>;<u:>;/
+ <y'>;<th>;<y:>;<A->;<a->;<A(>;/
+ <a(>;<A;>;<a;>;<C'>;<c'>;<C/>>;/
+ <c/>>;<C.>;<c.>;<C<>;<c<>;<D<>;/
+ <d<>;<D//>;<d//>;<E->;<e->;/
+ <E(>;<e(>;<E.>;<e.>;<E;>;<e;>;/
+ <E<>;<e<>;<G/>>;<g/>>;<G(>;/
+ <g(>;<G.>;<g.>;<G,>;<g,>;<H/>>;/
+ <h/>>;<H//>;<h//>;<I?>;<i?>;/
+ <I->;<i->;<I(>;<i(>;<I;>;<i;>;/
+ <I.>;<i.>;<IJ>;<ij>;<J/>>;/
+ <j/>>;<K,>;<k,>;<kk>;<L'>;<l'>;/
+ <L,>;<l,>;<L<>;<l<>;<L.>;<l.>;/
+ <L//>;<l//>;<N'>;<n'>;<N,>;/
+ <n,>;<N<>;<n<>;<'n>;<NG>;<ng>;/
+ <O->;<o->;<O(>;<o(>;<O">;<o">;/
+ <OE>;<oe>;<R'>;<r'>;<R,>;<r,>;/
+ <R<>;<r<>;<S'>;<s'>;<S/>>;/
+ <s/>>;<S,>;<s,>;<S<>;<s<>;<T,>;/
+ <t,>;<T<>;<t<>;<T//>;<t//>;/
+ <U?>;<u?>;<U->;<u->;<U(>;<u(>;/
+ <U0>;<u0>;<U">;<u">;<U;>;<u;>;/
+ <W/>>;<w/>>;<Y/>>;<y/>>;<Y:>;/
+ <Z'>;<z'>;<Z.>;<z.>;<Z<>;<z<>;/
+ <s1>;<C2>;<c2>;<F2>;<f2>;<K2>;/
+ <k2>;<O9>;<o9>;<OI>;<oi>;<yr>;/
+ <U9>;<u9>;<Z//>;<z//>;<ED>;/
+ <A<>;<a<>;<I<>;<i<>;<O<>;<o<>;/
+ <U<>;<u<>;<U:->;<u:->;<U:'>;/
+ <u:'>;<U:<>;<u:<>;<U:!>;<u:!>;/
+ <A1>;<a1>;<A7>;<a7>;<A3>;<a3>;/
+ <G//>;<g//>;<G<>;<g<>;<K<>;/
+ <k<>;<O;>;<o;>;<O1>;<o1>;<EZ>;/
+ <ez>;<G'>;<g'>;<AA'>;<aa'>;/
+ <AE'>;<ae'>;<O//'>;<o//'>;/
+ <A!!>;<a!!>;<A)>;<a)>;<E!!>;/
+ <e!!>;<E)>;<e)>;<I!!>;<i!!>;/
+ <I)>;<i)>;<O!!>;<o!!>;<O)>;/
+ <o)>;<R!!>;<r!!>;<R)>;<r)>;/
+ <U!!>;<u!!>;<U)>;<u)>;<ed>;/
+ <;S>;<1/>>;<1!>;<A%>;<E%>;<Y%>;/
+ <I%>;<O%>;<U%>;<W%>;<i3>;<A*>;/
+ <B*>;<G*>;<D*>;<E*>;<Z*>;<Y*>;/
+ <H*>;<I*>;<K*>;<L*>;<M*>;<N*>;/
+ <C*>;<O*>;<P*>;<R*>;<S*>;<T*>;/
+ <U*>;<F*>;<X*>;<Q*>;<W*>;<J*>;/
+ <V*>;<a%>;<e%>;<y%>;<i%>;<u3>;/
+ <a*>;<b*>;<g*>;<d*>;<e*>;<z*>;/
+ <y*>;<h*>;<i*>;<k*>;<l*>;<m*>;/
+ <n*>;<c*>;<o*>;<p*>;<r*>;<*s>;/
+ <s*>;<t*>;<u*>;<f*>;<x*>;<q*>;/
+ <w*>;<j*>;<v*>;<o%>;<u%>;<w%>;/
+ <IO>;<D%>;<G%>;<IE>;<DS>;<II>;/
+ <YI>;<J%>;<LJ>;<NJ>;<Ts>;<KJ>;/
+ <V%>;<DZ>;<A=>;<B=>;<V=>;<G=>;/
+ <D=>;<E=>;<Z%>;<Z=>;<I=>;<J=>;/
+ <K=>;<L=>;<M=>;<N=>;<O=>;<P=>;/
+ <R=>;<S=>;<T=>;<U=>;<F=>;<H=>;/
+ <C=>;<C%>;<S%>;<Sc>;<=">;<Y=>;/
+ <%">;<JE>;<JU>;<JA>;<a=>;<b=>;/
+ <v=>;<g=>;<d=>;<e=>;<z%>;<z=>;/
+ <i=>;<j=>;<k=>;<l=>;<m=>;<n=>;/
+ <o=>;<p=>;<r=>;<s=>;<t=>;<u=>;/
+ <f=>;<h=>;<c=>;<c%>;<s%>;<sc>;/
+ <='>;<y=>;<%'>;<je>;<ju>;<ja>;/
+ <io>;<d%>;<g%>;<ie>;<ds>;<ii>;/
+ <yi>;<j%>;<lj>;<nj>;<ts>;<kj>;/
+ <v%>;<dz>;<Y3>;<y3>;<O3>;<o3>;/
+ <F3>;<f3>;<V3>;<v3>;<C3>;<c3>;/
+ <G3>;<g3>;<A+>;<B+>;<G+>;<D+>;/
+ <H+>;<W+>;<Z+>;<X+>;<Tj>;<J+>;/
+ <K%>;<K+>;<L+>;<M%>;<M+>;<N%>;/
+ <N+>;<S+>;<E+>;<P%>;<P+>;<Zj>;/
+ <ZJ>;<Q+>;<R+>;<Sh>;<T+>;<H'>;/
+ <aM>;<aH>;<wH>;<ah>;<yH>;<a+>;/
+ <b+>;<tm>;<t+>;<tk>;<g+>;<hk>;/
+ <x+>;<d+>;<dk>;<r+>;<z+>;<s+>;/
+ <sn>;<c+>;<dd>;<tj>;<zH>;<e+>;/
+ <i+>;<f+>;<q+>;<k+>;<l+>;<m+>;/
+ <n+>;<h+>;<w+>;<j+>;<y+>;<aS>;/
+ <p+>;<hH>;<tc>;<zj>;<v+>;<gf>;/
+ <A-0>;<a-0>;<B.>;<b.>;<B-.>;/
+ <b-.>;<B_>;<b_>;<C,'>;<c,'>;/
+ <D.>;<d.>;<D-.>;<d-.>;<D_>;/
+ <d_>;<D,>;<d,>;<D-/>>;<d-/>>;/
+ <E-!>;<e-!>;<E-'>;<e-'>;<E-/>>;/
+ <e-/>>;<E-?>;<e-?>;<E,(>;<e,(>;/
+ <F.>;<f.>;<G->;<g->;<H.>;<h.>;/
+ <H-.>;<h-.>;<H:>;<h:>;<H,>;/
+ <h,>;<H-(>;<h-(>;<I-?>;<i-?>;/
+ <I:'>;<i:'>;<K'>;<k'>;<K-.>;/
+ <k-.>;<K_>;<k_>;<L-.>;<l-.>;/
+ <L--.>;<l--.>;<L_>;<l_>;<L-/>>;/
+ <l-/>>;<M'>;<m'>;<M.>;<m.>;/
+ <M-.>;<m-.>;<N.>;<n.>;<N-.>;/
+ <n-.>;<N_>;<n_>;<N-/>>;<n-/>>;/
+ <O?'>;<o?'>;<O?:>;<o?:>;<O-!>;/
+ <o-!>;<O-'>;<o-'>;<P'>;<p'>;/
+ <P.>;<p.>;<R.>;<r.>;<R-.>;/
+ <r-.>;<R--.>;<r--.>;<R_>;<r_>;/
+ <S.>;<s.>;<S-.>;<s-.>;<S'.>;/
+ <s'.>;<S<.>;<s<.>;<S.-.>;/
+ <s.-.>;<T.>;<t.>;<T-.>;<t-.>;/
+ <T_>;<t_>;<T-/>>;<t-/>>;<U--:>;/
+ <u--:>;<U-?>;<u-?>;<U-/>>;/
+ <u-/>>;<U?'>;<u?'>;<U-:>;<u-:>;/
+ <V?>;<v?>;<V-.>;<v-.>;<W!>;/
+ <w!>;<W'>;<w'>;<W:>;<w:>;<W.>;/
+ <w.>;<W-.>;<w-.>;<X.>;<x.>;/
+ <X:>;<x:>;<Y.>;<y.>;<Z/>>;/
+ <z/>>;<Z-.>;<z-.>;<Z_>;<z_>;/
+ <A-.>;<a-.>;<A2>;<a2>;<A/>'>;/
+ <a/>'>;<A/>!>;<a/>!>;<A/>2>;/
+ <a/>2>;<A/>?>;<a/>?>;<A/>-.>;/
+ <a/>-.>;<A('>;<a('>;<A(!>;/
+ <a(!>;<A(2>;<a(2>;<A(?>;<a(?>;/
+ <A(-.>;<a(-.>;<E-.>;<e-.>;<E2>;/
+ <e2>;<E?>;<e?>;<E/>'>;<e/>'>;/
+ <E/>!>;<e/>!>;<E/>2>;<e/>2>;/
+ <E/>?>;<e/>?>;<E/>-.>;<e/>-.>;/
+ <I2>;<i2>;<I-.>;<i-.>;<O-.>;/
+ <o-.>;<O2>;<o2>;<O/>'>;<o/>'>;/
+ <O/>!>;<o/>!>;<O/>2>;<o/>2>;/
+ <O/>?>;<o/>?>;<O/>-.>;<o/>-.>;/
+ <O9'>;<o9'>;<O9!>;<o9!>;<O92>;/
+ <o92>;<O9?>;<o9?>;<O9-.>;/
+ <o9-.>;<U-.>;<u-.>;<U2>;<u2>;/
+ <U9'>;<u9'>;<U9!>;<u9!>;<U92>;/
+ <u92>;<U9?>;<u9?>;<U9-.>;/
+ <u9-.>;<Y!>;<y!>;<Y-.>;<y-.>;/
+ <Y2>;<y2>;<Y?>;<y?>;<nS>;<(a)>;/
+ <(b)>;<(c)>;<(d)>;<(e)>;<(f)>;/
+ <(g)>;<(h)>;<(i)>;<(j)>;<(k)>;/
+ <(l)>;<(m)>;<(n)>;<(o)>;<(p)>;/
+ <(q)>;<(r)>;<(s)>;<(t)>;<(u)>;/
+ <(v)>;<(w)>;<(x)>;<(y)>;<(z)>;/
+ <A-o>;<B-o>;<C-o>;<D-o>;<E-o>;/
+ <F-o>;<G-o>;<H-o>;<I-o>;<J-o>;/
+ <K-o>;<L-o>;<M-o>;<N-o>;<O-o>;/
+ <P-o>;<Q-o>;<R-o>;<S-o>;<T-o>;/
+ <U-o>;<V-o>;<W-o>;<X-o>;<Y-o>;/
+ <Z-o>;<a-o>;<b-o>;<c-o>;<d-o>;/
+ <e-o>;<f-o>;<g-o>;<h-o>;<i-o>;/
+ <j-o>;<k-o>;<l-o>;<m-o>;<n-o>;/
+ <o-o>;<p-o>;<q-o>;<r-o>;<s-o>;/
+ <t-o>;<u-o>;<v-o>;<w-o>;<x-o>;/
+ <y-o>;<z-o>;<A5>;<a5>;<I5>;/
+ <i5>;<U5>;<u5>;<E5>;<e5>;<O5>;/
+ <o5>;<ka>;<ga>;<ki>;<gi>;<ku>;/
+ <gu>;<ke>;<ge>;<ko>;<go>;<sa>;/
+ <za>;<si>;<zi>;<su>;<zu>;<se>;/
+ <ze>;<so>;<zo>;<ta>;<da>;<ti>;/
+ <di>;<tU>;<tu>;<du>;<te>;<de>;/
+ <to>;<do>;<na>;<ni>;<nu>;<ne>;/
+ <no>;<ha>;<ba>;<pa>;<hi>;<bi>;/
+ <pi>;<hu>;<bu>;<pu>;<he>;<be>;/
+ <pe>;<ho>;<bo>;<po>;<ma>;<mi>;/
+ <mu>;<me>;<mo>;<yA>;<ya>;<yU>;/
+ <yu>;<yO>;<yo>;<ra>;<ri>;<ru>;/
+ <re>;<ro>;<wA>;<wa>;<wi>;<we>;/
+ <wo>;<n5>;<vu>;<a6>;<A6>;<i6>;/
+ <I6>;<u6>;<U6>;<e6>;<E6>;<o6>;/
+ <O6>;<Ka>;<Ga>;<Ki>;<Gi>;<Ku>;/
+ <Gu>;<Ke>;<Ge>;<Ko>;<Go>;<Sa>;/
+ <Za>;<Si>;<Zi>;<Su>;<Zu>;<Se>;/
+ <Ze>;<So>;<Zo>;<Ta>;<Da>;<Ti>;/
+ <Di>;<TU>;<Tu>;<Du>;<Te>;<De>;/
+ <To>;<Do>;<Na>;<Ni>;<Nu>;<Ne>;/
+ <No>;<Ha>;<Ba>;<Pa>;<Hi>;<Bi>;/
+ <Pi>;<Hu>;<Bu>;<Pu>;<He>;<Be>;/
+ <Pe>;<Ho>;<Bo>;<Po>;<Ma>;<Mi>;/
+ <Mu>;<Me>;<Mo>;<YA>;<Ya>;<YU>;/
+ <Yu>;<YO>;<Yo>;<Ra>;<Ri>;<Ru>;/
+ <Re>;<Ro>;<WA>;<Wa>;<Wi>;<We>;/
+ <Wo>;<N6>;<Vu>;<KA>;<KE>;<Va>;/
+ <Vi>;<Ve>;<Vo>;<ff>;<fi>;<fl>;/
+ <ffi>;<ffl>;<ft>;<st>;<aM.>;/
+ <aH.>;<ah.>;<a+->;<a+.>;<b+->;/
+ <b+.>;<b+,>;<b+;>;<tm->;<tm.>;/
+ <t+->;<t+.>;<t+,>;<t+;>;<tk->;/
+ <tk.>;<tk,>;<tk;>;<g+->;<g+.>;/
+ <g+,>;<g+;>;<hk->;<hk.>;<hk,>;/
+ <hk;>;<x+->;<x+.>;<x+,>;<x+;>;/
+ <d+->;<d+.>;<dk->;<dk.>;<r+->;/
+ <r+.>;<z+->;<z+.>;<s+->;<s+.>;/
+ <s+,>;<s+;>;<sn->;<sn.>;<sn,>;/
+ <sn;>;<c+->;<c+.>;<c+,>;<c+;>;/
+ <dd->;<dd.>;<dd,>;<dd;>;<tj->;/
+ <tj.>;<tj,>;<tj;>;<zH->;<zH.>;/
+ <zH,>;<zH;>;<e+->;<e+.>;<e+,>;/
+ <e+;>;<i+->;<i+.>;<i+,>;<i+;>;/
+ <f+->;<f+.>;<f+,>;<f+;>;<q+->;/
+ <q+.>;<q+,>;<q+;>;<k+->;<k+.>;/
+ <k+,>;<k+;>;<l+->;<l+.>;<l+,>;/
+ <l+;>;<m+->;<m+.>;<m+,>;<m+;>;/
+ <n+->;<n+.>;<n+,>;<n+;>;<h+->;/
+ <h+.>;<h+,>;<h+;>;<w+->;<w+.>;/
+ <j+->;<j+.>;<y+->;<y+.>;<y+,>;/
+ <y+;>;<lM->;<lM.>;<lH->;<lH.>;/
+ <lh->;<lh.>;<la->;<la.>;<a+:>
+
+cntrl <NU>;<SH>;<SX>;<EX>;<ET>;<EQ>;/
+ <AK>;<BL>;<BS>;<HT>;<LF>;<VT>;/
+ <FF>;<CR>;<SO>;<SI>;<DL>;<D1>;/
+ <D2>;<D3>;<D4>;<NK>;<SY>;<EB>;/
+ <CN>;<EM>;<SB>;<EC>;<FS>;<GS>;/
+ <RS>;<US>;<DT>;<PA>;<HO>;<BH>;/
+ <NH>;<IN>;<NL>;<SA>;<ES>;<HS>;/
+ <HJ>;<VS>;<PD>;<PU>;<RI>;<S2>;/
+ <S3>;<DC>;<P1>;<P2>;<TS>;<CC>;/
+ <MW>;<SG>;<EG>;<SS>;<GC>;<SC>;/
+ <CI>;<ST>;<OC>;<PM>;<AC>
+
+punct <!>;<">;<Nb>;<DO>;<%>;<&>;<'>;/
+ <(>;<)>;<*>;<+>;<,>;<->;<.>;/
+ <//>;<:>;<;>;<<>;<=>;</>>;<?>;/
+ <At>;<<(>;<////>;<)/>>;<'/>>;/
+ <_>;<'!>;<(!>;<!!>;<!)>;<'?>;/
+ <!I>;<Ct>;<Pd>;<Cu>;<Ye>;<BB>;/
+ <SE>;<':>;<Co>;<-a>;<<<>;<NO>;/
+ <Rg>;<'m>;<DG>;<+->;<2S>;<3S>;/
+ <''>;<My>;<PI>;<.M>;<',>;<1S>;/
+ <-o>;</>/>>;<14>;<12>;<34>;/
+ <?I>;<*X>;<-:>;<'<>;<'(>;<'.>;/
+ <'0>;<';>;<1?>;<'">;<'G>;<,G>;/
+ <j3>;<?%>;<'*>;<'%>;<.*>;<b3>;/
+ <,+>;<;+>;<?+>;<++>;<:+>;<"+>;/
+ <=+>;<//+>;<'+>;<1+>;<3+>;<0+>;/
+ <0a>;<1a>;<2a>;<3a>;<4a>;<5a>;/
+ <6a>;<7a>;<8a>;<9a>;<,,>;<?*>;/
+ <?:>;<,!>;<,'>;<?,>;<;!>;<;'>;/
+ <?;>;<!:>;<!*>;<;;>;<1N>;<1M>;/
+ <3M>;<4M>;<6M>;<LR>;<RL>;<1T>;/
+ <1H>;<-1>;<-N>;<-M>;<-3>;<!2>;/
+ <=2>;<'6>;<'9>;<.9>;<9'>;<"6>;/
+ <"9>;<:9>;<9">;<//->;<//=>;/
+ <Sb>;<..>;<.3>;<%0>;<1'>;<2'>;/
+ <3'>;<1">;<2">;<3">;<Ca>;<<1>;/
+ </>1>;<:X>;<!*2>;<'->;<0S>;/
+ <4S>;<5S>;<6S>;<7S>;<8S>;<9S>;/
+ <+S>;<-S>;<=S>;<(S>;<)S>;<0s>;/
+ <1s>;<2s>;<3s>;<4s>;<5s>;<6s>;/
+ <7s>;<8s>;<9s>;<+s>;<-s>;<=s>;/
+ <(s>;<)s>;<Ff>;<Li>;<Pt>;<W=>;/
+ <oC>;<co>;<oF>;<N0>;<PO>;<Rx>;/
+ <SM>;<TM>;<Om>;<AO>;<13>;<23>;/
+ <15>;<25>;<35>;<45>;<16>;<56>;/
+ <18>;<38>;<58>;<78>;<1R>;<2R>;/
+ <3R>;<4R>;<5R>;<6R>;<7R>;<8R>;/
+ <9R>;<aR>;<bR>;<cR>;<50R>;/
+ <100R>;<500R>;<1000R>;<1r>;/
+ <2r>;<3r>;<4r>;<5r>;<6r>;<7r>;/
+ <8r>;<9r>;<ar>;<br>;<cr>;<50r>;/
+ <100r>;<500r>;<1000r>;/
+ <1000RCD>;<5000R>;<10000R>;/
+ <<->;<-!>;<-/>>;<-v>;<</>>;/
+ <UD>;<<!!>;</////>>;<!!/>>;/
+ <<////>;<UD->;</>V>;<<=>;<=/>>;/
+ <==>;<FA>;<dP>;<TE>;<//0>;<DE>;/
+ <NB>;<(->;<-)>;<*P>;<+Z>;<-2>;/
+ <-+>;<.+>;<//f>;<*->;<Ob>;<sb>;/
+ <RT>;<0(>;<00>;<-L>;<-V>;<PP>;/
+ <AN>;<OR>;<(U>;<)U>;<In>;<DI>;/
+ <Io>;<.:>;<:.>;<:R>;<::>;<?1>;/
+ <CG>;<?->;<?=>;<?2>;<=?>;<HI>;/
+ <!=>;<=3>;<=<>;</>=>;<<*>;/
+ <*/>>;<!<>;<!/>>;<(C>;<)C>;/
+ <(_>;<)_>;<0.>;<02>;<-T>;<.P>;/
+ <:3>;<Eh>;<<7>;</>7>;<7<>;/
+ <7/>>;<NI>;<(A>;<TR>;<Iu>;<Il>;/
+ <<//>;<///>>;<Vs>;<1h>;<3h>;/
+ <2h>;<4h>;<1j>;<2j>;<3j>;<4j>;/
+ <1-o>;<2-o>;<3-o>;<4-o>;<5-o>;/
+ <6-o>;<7-o>;<8-o>;<9-o>;<10-o>;/
+ <11-o>;<12-o>;<13-o>;<14-o>;/
+ <15-o>;<16-o>;<17-o>;<18-o>;/
+ <19-o>;<20-o>;<(1)>;<(2)>;/
+ <(3)>;<(4)>;<(5)>;<(6)>;<(7)>;/
+ <(8)>;<(9)>;<(10)>;<(11)>;/
+ <(12)>;<(13)>;<(14)>;<(15)>;/
+ <(16)>;<(17)>;<(18)>;<(19)>;/
+ <(20)>;<1.>;<2.>;<3.>;<4.>;/
+ <5.>;<6.>;<7.>;<8.>;<9.>;<10.>;/
+ <11.>;<12.>;<13.>;<14.>;<15.>;/
+ <16.>;<17.>;<18.>;<19.>;<20.>;/
+ <0-o>;<hh>;<HH>;<vv>;<VV>;<3->;/
+ <3_>;<3!>;<3//>;<4->;<4_>;<4!>;/
+ <4//>;<dr>;<dR>;<Dr>;<DR>;<dl>;/
+ <dL>;<Dl>;<LD>;<ur>;<uR>;<Ur>;/
+ <UR>;<ul>;<uL>;<Ul>;<UL>;<vr>;/
+ <vR>;<Udr>;<uDr>;<Vr>;<UdR>;/
+ <uDR>;<VR>;<vl>;<vL>;<Udl>;/
+ <uDl>;<Vl>;<UdL>;<uDL>;<VL>;/
+ <dh>;<dLr>;<dlR>;<dH>;<Dh>;/
+ <DLr>;<DlR>;<DH>;<uh>;<uLr>;/
+ <ulR>;<uH>;<Uh>;<ULr>;<UlR>;/
+ <UH>;<vh>;<vLr>;<vlR>;<vH>;/
+ <Udh>;<uDh>;<Vh>;<UdLr>;<UdlR>;/
+ <uDLr>;<uDlR>;<UdH>;<uDH>;/
+ <VLr>;<VlR>;<VH>;<FD>;<BD>;/
+ <TB>;<LB>;<FB>;<lB>;<RB>;<.S>;/
+ <:S>;<?S>;<fS>;<OS>;<RO>;<Rr>;/
+ <RF>;<RY>;<RH>;<RZ>;<RK>;<RX>;/
+ <sB>;<SR>;<Or>;<UT>;<uT>;<Tr>;/
+ <PR>;<Dt>;<dT>;<Tl>;<PL>;<Db>;/
+ <Dw>;<LZ>;<0m>;<0o>;<0M>;<0L>;/
+ <0R>;<Sn>;<Ic>;<Fd>;<Bd>;<Ci>;/
+ <*2>;<*1>;<TEL>;<tel>;<<H>;/
+ </>H>;<0u>;<0U>;<SU>;<Fm>;<Ml>;/
+ <cS>;<cH>;<cD>;<cC>;<cS->;/
+ <cH->;<cD->;<cC->;<Md>;<M8>;/
+ <M2>;<M16>;<Mb>;<Mx>;<MX>;<OK>;/
+ <XX>;<-X>;<IS>;<,_>;<._>;<+">;/
+ <JIS>;<*_>;<;_>;<0_>;<<+>;/
+ </>+>;<<'>;</>'>;<<">;</>">;/
+ <(">;<)">;<=T>;<=_>;<('>;<)'>;/
+ <(I>;<)I>;<-?>;<=T:)>;<"5>;/
+ <05>;<*5>;<+5>;<.6>;<-6>;<*6>;/
+ <+6>;<(JU)>;<1c>;<2c>;<3c>;/
+ <4c>;<5c>;<6c>;<7c>;<8c>;<9c>;/
+ <10c>;<KSC>;<am>;<pm>;<3+;>;/
+ <"3>;<"1>;<"!>;<"'>;<"/>>;<"?>;/
+ <"->;<"(>;<".>;<":>;<"0>;<",>;/
+ <"_>;<"">;<";>;<"<>;<"=>;<"//>;/
+ <"p>;<"d>;<"i>;<+_>;<Tel>;<UA>;/
+ <UB>
+
+tolower (<A>,<a>);(<A!>,<a!>);/
+ (<A!!>,<a!!>);(<A'>,<a'>);/
+ (<A(>,<a(>);(<A(!>,<a(!>);/
+ (<A('>,<a('>);(<A(-.>,<a(-.>);/
+ (<A(2>,<a(2>);(<A(?>,<a(?>);/
+ (<A)>,<a)>);(<A->,<a->);/
+ (<A-.>,<a-.>);(<A-0>,<a-0>);/
+ (<A-o>,<a-o>);(<A1>,<a1>);/
+ (<A2>,<a2>);(<A3>,<a3>);/
+ (<A7>,<a7>);(<A:>,<a:>);/
+ (<A;>,<a;>);(<A<>,<a<>);/
+ (<A/>>,<a/>>);(<A/>!>,<a/>!>);/
+ (<A/>'>,<a/>'>);/
+ (<A/>-.>,<a/>-.>);/
+ (<A/>2>,<a/>2>);/
+ (<A/>?>,<a/>?>);(<A?>,<a?>);/
+ (<AA>,<aa>);(<AA'>,<aa'>);/
+ (<AE>,<ae>);(<AE'>,<ae'>);/
+ (<B>,<b>);(<B-.>,<b-.>);/
+ (<B-o>,<b-o>);(<B.>,<b.>);/
+ (<B_>,<b_>);(<C>,<c>);/
+ (<C'>,<c'>);(<C,>,<c,>);/
+ (<C,'>,<c,'>);(<C-o>,<c-o>);/
+ (<C.>,<c.>);(<C2>,<c2>);/
+ (<C<>,<c<>);(<C/>>,<c/>>);/
+ (<D>,<d>);(<D,>,<d,>);/
+ (<D->,<d->);(<D-.>,<d-.>);/
+ (<D-/>>,<d-/>>);(<D-o>,<d-o>);/
+ (<D.>,<d.>);(<D//>,<d//>);/
+ (<D<>,<d<>);(<D_>,<d_>);/
+ (<E>,<e>);(<E!>,<e!>);/
+ (<E!!>,<e!!>);(<E'>,<e'>);/
+ (<E(>,<e(>);(<E)>,<e)>);/
+ (<E,(>,<e,(>);(<E->,<e->);/
+ (<E-!>,<e-!>);(<E-'>,<e-'>);/
+ (<E-.>,<e-.>);(<E-/>>,<e-/>>);/
+ (<E-?>,<e-?>);(<E-o>,<e-o>);/
+ (<E.>,<e.>);(<E2>,<e2>);/
+ (<E:>,<e:>);(<E;>,<e;>);/
+ (<E<>,<e<>);(<E/>>,<e/>>);/
+ (<E/>!>,<e/>!>);/
+ (<E/>'>,<e/>'>);/
+ (<E/>-.>,<e/>-.>);/
+ (<E/>2>,<e/>2>);/
+ (<E/>?>,<e/>?>);(<E?>,<e?>);/
+ (<ED>,<ed>);(<EZ>,<ez>);/
+ (<F>,<f>);(<F-o>,<f-o>);/
+ (<F.>,<f.>);(<F2>,<f2>);/
+ (<G>,<g>);(<G'>,<g'>);/
+ (<G(>,<g(>);(<G,>,<g,>);/
+ (<G->,<g->);(<G-o>,<g-o>);/
+ (<G.>,<g.>);(<G//>,<g//>);/
+ (<G<>,<g<>);(<G/>>,<g/>>);/
+ (<H>,<h>);(<H,>,<h,>);/
+ (<H-(>,<h-(>);(<H-.>,<h-.>);/
+ (<H-o>,<h-o>);(<H.>,<h.>);/
+ (<H//>,<h//>);(<H:>,<h:>);/
+ (<H/>>,<h/>>);(<I>,<i>);/
+ (<I!>,<i!>);(<I!!>,<i!!>);/
+ (<I'>,<i'>);(<I(>,<i(>);/
+ (<I)>,<i)>);(<I->,<i->);/
+ (<I-.>,<i-.>);(<I-?>,<i-?>);/
+ (<I-o>,<i-o>);(<I.>,<i.>);/
+ (<I2>,<i2>);(<I:>,<i:>);/
+ (<I:'>,<i:'>);(<I;>,<i;>);/
+ (<I<>,<i<>);(<I/>>,<i/>>);/
+ (<I?>,<i?>);(<IJ>,<ij>);/
+ (<J>,<j>);(<J-o>,<j-o>);/
+ (<J/>>,<j/>>);(<K>,<k>);/
+ (<K'>,<k'>);(<K,>,<k,>);/
+ (<K-.>,<k-.>);(<K-o>,<k-o>);/
+ (<K2>,<k2>);(<K<>,<k<>);/
+ (<K_>,<k_>);(<L>,<l>);/
+ (<L'>,<l'>);(<L,>,<l,>);/
+ (<L--.>,<l--.>);(<L-.>,<l-.>);/
+ (<L-/>>,<l-/>>);(<L-o>,<l-o>);/
+ (<L.>,<l.>);(<L//>,<l//>);/
+ (<L<>,<l<>);(<L_>,<l_>);/
+ (<M>,<m>);(<M'>,<m'>);/
+ (<M-.>,<m-.>);(<M-o>,<m-o>);/
+ (<M.>,<m.>);(<N>,<n>);/
+ (<N'>,<n'>);(<N,>,<n,>);/
+ (<N-.>,<n-.>);(<N-/>>,<n-/>>);/
+ (<N-o>,<n-o>);(<N.>,<n.>);/
+ (<N<>,<n<>);(<N?>,<n?>);/
+ (<NG>,<ng>);(<N_>,<n_>);/
+ (<O>,<o>);(<O!>,<o!>);/
+ (<O!!>,<o!!>);(<O">,<o">);/
+ (<O'>,<o'>);(<O(>,<o(>);/
+ (<O)>,<o)>);(<O->,<o->);/
+ (<O-!>,<o-!>);(<O-'>,<o-'>);/
+ (<O-.>,<o-.>);(<O-o>,<o-o>);/
+ (<O//>,<o//>);(<O1>,<o1>);/
+ (<O2>,<o2>);(<O9>,<o9>);/
+ (<O9!>,<o9!>);(<O9'>,<o9'>);/
+ (<O9-.>,<o9-.>);(<O92>,<o92>);/
+ (<O9?>,<o9?>);(<O:>,<o:>);/
+ (<O;>,<o;>);(<O<>,<o<>);/
+ (<O/>>,<o/>>);(<O/>!>,<o/>!>);/
+ (<O/>'>,<o/>'>);/
+ (<O/>-.>,<o/>-.>);/
+ (<O/>2>,<o/>2>);/
+ (<O/>?>,<o/>?>);(<O?>,<o?>);/
+ (<O?'>,<o?'>);(<O?:>,<o?:>);/
+ (<OE>,<oe>);(<OI>,<oi>);/
+ (<P>,<p>);(<P'>,<p'>);/
+ (<P-o>,<p-o>);(<P.>,<p.>);/
+ (<Q>,<q>);(<Q-o>,<q-o>);/
+ (<R>,<r>);(<R!!>,<r!!>);/
+ (<R'>,<r'>);(<R)>,<r)>);/
+ (<R,>,<r,>);(<R--.>,<r--.>);/
+ (<R-.>,<r-.>);(<R-o>,<r-o>);/
+ (<R.>,<r.>);(<R<>,<r<>);/
+ (<R_>,<r_>);(<S>,<s>);/
+ (<S'>,<s'>);(<S'.>,<s'.>);/
+ (<S,>,<s,>);(<S-.>,<s-.>);/
+ (<S-o>,<s-o>);(<S.>,<s.>);/
+ (<S.-.>,<s.-.>);(<S<>,<s<>);/
+ (<S<.>,<s<.>);(<S/>>,<s/>>);/
+ (<T>,<t>);(<T,>,<t,>);/
+ (<T-.>,<t-.>);(<T-/>>,<t-/>>);/
+ (<T-o>,<t-o>);(<T.>,<t.>);/
+ (<T//>,<t//>);(<T<>,<t<>);/
+ (<TH>,<th>);(<T_>,<t_>);/
+ (<U>,<u>);(<U!>,<u!>);/
+ (<U!!>,<u!!>);(<U">,<u">);/
+ (<U'>,<u'>);(<U(>,<u(>);/
+ (<U)>,<u)>);(<U->,<u->);/
+ (<U--:>,<u--:>);(<U-.>,<u-.>);/
+ (<U-:>,<u-:>);(<U-/>>,<u-/>>);/
+ (<U-?>,<u-?>);(<U-o>,<u-o>);/
+ (<U0>,<u0>);(<U2>,<u2>);/
+ (<U9>,<u9>);(<U9!>,<u9!>);/
+ (<U9'>,<u9'>);(<U9-.>,<u9-.>);/
+ (<U92>,<u92>);(<U9?>,<u9?>);/
+ (<U:>,<u:>);(<U:!>,<u:!>);/
+ (<U:'>,<u:'>);(<U:->,<u:->);/
+ (<U:<>,<u:<>);(<U;>,<u;>);/
+ (<U<>,<u<>);(<U/>>,<u/>>);/
+ (<U?>,<u?>);(<U?'>,<u?'>);/
+ (<V>,<v>);(<V-.>,<v-.>);/
+ (<V-o>,<v-o>);(<V?>,<v?>);/
+ (<W>,<w>);(<W!>,<w!>);/
+ (<W'>,<w'>);(<W-.>,<w-.>);/
+ (<W-o>,<w-o>);(<W.>,<w.>);/
+ (<W:>,<w:>);(<W/>>,<w/>>);/
+ (<X>,<x>);(<X-o>,<x-o>);/
+ (<X.>,<x.>);(<X:>,<x:>);/
+ (<Y>,<y>);(<Y!>,<y!>);/
+ (<Y'>,<y'>);(<Y-.>,<y-.>);/
+ (<Y-o>,<y-o>);(<Y.>,<y.>);/
+ (<Y2>,<y2>);(<Y/>>,<y/>>);/
+ (<Y?>,<y?>);(<Z>,<z>);/
+ (<Z'>,<z'>);(<Z-.>,<z-.>);/
+ (<Z-o>,<z-o>);(<Z.>,<z.>);/
+ (<Z//>,<z//>);(<Z<>,<z<>);/
+ (<Z/>>,<z/>>);(<Z_>,<z_>);/
+ (<A%>,<a%>);(<A*>,<a*>);/
+ (<B*>,<b*>);(<C*>,<c*>);/
+ (<D*>,<d*>);(<E%>,<e%>);/
+ (<E*>,<e*>);(<F*>,<f*>);/
+ (<G*>,<g*>);(<H*>,<h*>);/
+ (<I%>,<i%>);(<I*>,<i*>);/
+ (<J*>,<j*>);(<K*>,<k*>);/
+ (<L*>,<l*>);(<M*>,<m*>);/
+ (<N*>,<n*>);(<O%>,<o%>);/
+ (<O*>,<o*>);(<P*>,<p*>);/
+ (<Q*>,<q*>);(<R*>,<r*>);/
+ (<S*>,<s*>);(<T*>,<t*>);/
+ (<U%>,<u%>);(<U*>,<u*>);/
+ (<V*>,<v*>);(<W%>,<w%>);/
+ (<W*>,<w*>);(<X*>,<x*>);/
+ (<Y%>,<y%>);(<Y*>,<y*>);/
+ (<Z*>,<z*>);(<%">,<%'>);/
+ (<=">,<='>);(<A=>,<a=>);/
+ (<B=>,<b=>);(<C%>,<c%>);/
+ (<C3>,<c3>);(<C=>,<c=>);/
+ (<D%>,<d%>);(<D=>,<d=>);/
+ (<DS>,<ds>);(<DZ>,<dz>);/
+ (<E=>,<e=>);(<F3>,<f3>);/
+ (<F=>,<f=>);(<G%>,<g%>);/
+ (<G3>,<g3>);(<G=>,<g=>);/
+ (<H=>,<h=>);(<I=>,<i=>);/
+ (<IE>,<ie>);(<II>,<ii>);/
+ (<IO>,<io>);(<J%>,<j%>);/
+ (<J=>,<j=>);(<JA>,<ja>);/
+ (<JE>,<je>);(<JU>,<ju>);/
+ (<K=>,<k=>);(<KJ>,<kj>);/
+ (<L=>,<l=>);(<LJ>,<lj>);/
+ (<M=>,<m=>);(<N=>,<n=>);/
+ (<NJ>,<nj>);(<O3>,<o3>);/
+ (<O=>,<o=>);(<P=>,<p=>);/
+ (<R=>,<r=>);(<S%>,<s%>);/
+ (<S=>,<s=>);(<Sc>,<sc>);/
+ (<T=>,<t=>);(<Ts>,<ts>);/
+ (<U=>,<u=>);(<V3>,<v3>);/
+ (<V=>,<v=>);(<Y3>,<y3>);/
+ (<Y=>,<y=>);(<YI>,<yi>);/
+ (<Z%>,<z%>);(<Z=>,<z=>)
+
+toupper (<a>,<A>);(<a!>,<A!>);/
+ (<a!!>,<A!!>);(<a'>,<A'>);/
+ (<a(>,<A(>);(<a(!>,<A(!>);/
+ (<a('>,<A('>);(<a(-.>,<A(-.>);/
+ (<a(2>,<A(2>);(<a(?>,<A(?>);/
+ (<a)>,<A)>);(<a->,<A->);/
+ (<a-.>,<A-.>);(<a-0>,<A-0>);/
+ (<a-o>,<A-o>);(<a1>,<A1>);/
+ (<a2>,<A2>);(<a3>,<A3>);/
+ (<a7>,<A7>);(<a:>,<A:>);/
+ (<a;>,<A;>);(<a<>,<A<>);/
+ (<a/>>,<A/>>);(<a/>!>,<A/>!>);/
+ (<a/>'>,<A/>'>);/
+ (<a/>-.>,<A/>-.>);/
+ (<a/>2>,<A/>2>);/
+ (<a/>?>,<A/>?>);(<a?>,<A?>);/
+ (<aa>,<AA>);(<aa'>,<AA'>);/
+ (<ae>,<AE>);(<ae'>,<AE'>);/
+ (<b>,<B>);(<b-.>,<B-.>);/
+ (<b-o>,<B-o>);(<b.>,<B.>);/
+ (<b_>,<B_>);(<c>,<C>);/
+ (<c'>,<C'>);(<c,>,<C,>);/
+ (<c,'>,<C,'>);(<c-o>,<C-o>);/
+ (<c.>,<C.>);(<c2>,<C2>);/
+ (<c<>,<C<>);(<c/>>,<C/>>);/
+ (<d>,<D>);(<d,>,<D,>);/
+ (<d->,<D->);(<d-.>,<D-.>);/
+ (<d-/>>,<D-/>>);(<d-o>,<D-o>);/
+ (<d.>,<D.>);(<d//>,<D//>);/
+ (<d<>,<D<>);(<d_>,<D_>);/
+ (<e>,<E>);(<e!>,<E!>);/
+ (<e!!>,<E!!>);(<e'>,<E'>);/
+ (<e(>,<E(>);(<e)>,<E)>);/
+ (<e,(>,<E,(>);(<e->,<E->);/
+ (<e-!>,<E-!>);(<e-'>,<E-'>);/
+ (<e-.>,<E-.>);(<e-/>>,<E-/>>);/
+ (<e-?>,<E-?>);(<e-o>,<E-o>);/
+ (<e.>,<E.>);(<e2>,<E2>);/
+ (<e:>,<E:>);(<e;>,<E;>);/
+ (<e<>,<E<>);(<e/>>,<E/>>);/
+ (<e/>!>,<E/>!>);/
+ (<e/>'>,<E/>'>);/
+ (<e/>-.>,<E/>-.>);/
+ (<e/>2>,<E/>2>);/
+ (<e/>?>,<E/>?>);(<e?>,<E?>);/
+ (<ed>,<ED>);(<ez>,<EZ>);/
+ (<f>,<F>);(<f-o>,<F-o>);/
+ (<f.>,<F.>);(<f2>,<F2>);/
+ (<g>,<G>);(<g'>,<G'>);/
+ (<g(>,<G(>);(<g,>,<G,>);/
+ (<g->,<G->);(<g-o>,<G-o>);/
+ (<g.>,<G.>);(<g//>,<G//>);/
+ (<g<>,<G<>);(<g/>>,<G/>>);/
+ (<h>,<H>);(<h,>,<H,>);/
+ (<h-(>,<H-(>);(<h-.>,<H-.>);/
+ (<h-o>,<H-o>);(<h.>,<H.>);/
+ (<h//>,<H//>);(<h:>,<H:>);/
+ (<h/>>,<H/>>);(<i>,<I>);/
+ (<i!>,<I!>);(<i!!>,<I!!>);/
+ (<i'>,<I'>);(<i(>,<I(>);/
+ (<i)>,<I)>);(<i->,<I->);/
+ (<i-.>,<I-.>);(<i-?>,<I-?>);/
+ (<i-o>,<I-o>);(<i.>,<I.>);/
+ (<i2>,<I2>);(<i:>,<I:>);/
+ (<i:'>,<I:'>);(<i;>,<I;>);/
+ (<i<>,<I<>);(<i/>>,<I/>>);/
+ (<i?>,<I?>);(<ij>,<IJ>);/
+ (<j>,<J>);(<j-o>,<J-o>);/
+ (<j/>>,<J/>>);(<k>,<K>);/
+ (<k'>,<K'>);(<k,>,<K,>);/
+ (<k-.>,<K-.>);(<k-o>,<K-o>);/
+ (<k2>,<K2>);(<k<>,<K<>);/
+ (<k_>,<K_>);(<l>,<L>);/
+ (<l'>,<L'>);(<l,>,<L,>);/
+ (<l--.>,<L--.>);(<l-.>,<L-.>);/
+ (<l-/>>,<L-/>>);(<l-o>,<L-o>);/
+ (<l.>,<L.>);(<l//>,<L//>);/
+ (<l<>,<L<>);(<l_>,<L_>);/
+ (<m>,<M>);(<m'>,<M'>);/
+ (<m-.>,<M-.>);(<m-o>,<M-o>);/
+ (<m.>,<M.>);(<n>,<N>);/
+ (<n'>,<N'>);(<n,>,<N,>);/
+ (<n-.>,<N-.>);(<n-/>>,<N-/>>);/
+ (<n-o>,<N-o>);(<n.>,<N.>);/
+ (<n<>,<N<>);(<n?>,<N?>);/
+ (<ng>,<NG>);(<n_>,<N_>);/
+ (<o>,<O>);(<o!>,<O!>);/
+ (<o!!>,<O!!>);(<o">,<O">);/
+ (<o'>,<O'>);(<o(>,<O(>);/
+ (<o)>,<O)>);(<o->,<O->);/
+ (<o-!>,<O-!>);(<o-'>,<O-'>);/
+ (<o-.>,<O-.>);(<o-o>,<O-o>);/
+ (<o//>,<O//>);(<o1>,<O1>);/
+ (<o2>,<O2>);(<o9>,<O9>);/
+ (<o9!>,<O9!>);(<o9'>,<O9'>);/
+ (<o9-.>,<O9-.>);(<o92>,<O92>);/
+ (<o9?>,<O9?>);(<o:>,<O:>);/
+ (<o;>,<O;>);(<o<>,<O<>);/
+ (<o/>>,<O/>>);(<o/>!>,<O/>!>);/
+ (<o/>'>,<O/>'>);/
+ (<o/>-.>,<O/>-.>);/
+ (<o/>2>,<O/>2>);/
+ (<o/>?>,<O/>?>);(<o?>,<O?>);/
+ (<o?'>,<O?'>);(<o?:>,<O?:>);/
+ (<oe>,<OE>);(<oi>,<OI>);/
+ (<p>,<P>);(<p'>,<P'>);/
+ (<p-o>,<P-o>);(<p.>,<P.>);/
+ (<q>,<Q>);(<q-o>,<Q-o>);/
+ (<r>,<R>);(<r!!>,<R!!>);/
+ (<r'>,<R'>);(<r)>,<R)>);/
+ (<r,>,<R,>);(<r--.>,<R--.>);/
+ (<r-.>,<R-.>);(<r-o>,<R-o>);/
+ (<r.>,<R.>);(<r<>,<R<>);/
+ (<r_>,<R_>);(<s>,<S>);/
+ (<s'>,<S'>);(<s'.>,<S'.>);/
+ (<s,>,<S,>);(<s-.>,<S-.>);/
+ (<s-o>,<S-o>);(<s.>,<S.>);/
+ (<s.-.>,<S.-.>);(<s<>,<S<>);/
+ (<s<.>,<S<.>);(<s/>>,<S/>>);/
+ (<t>,<T>);(<t,>,<T,>);/
+ (<t-.>,<T-.>);(<t-/>>,<T-/>>);/
+ (<t-o>,<T-o>);(<t.>,<T.>);/
+ (<t//>,<T//>);(<t<>,<T<>);/
+ (<th>,<TH>);(<t_>,<T_>);/
+ (<u>,<U>);(<u!>,<U!>);/
+ (<u!!>,<U!!>);(<u">,<U">);/
+ (<u'>,<U'>);(<u(>,<U(>);/
+ (<u)>,<U)>);(<u->,<U->);/
+ (<u--:>,<U--:>);(<u-.>,<U-.>);/
+ (<u-:>,<U-:>);(<u-/>>,<U-/>>);/
+ (<u-?>,<U-?>);(<u-o>,<U-o>);/
+ (<u0>,<U0>);(<u2>,<U2>);/
+ (<u9>,<U9>);(<u9!>,<U9!>);/
+ (<u9'>,<U9'>);(<u9-.>,<U9-.>);/
+ (<u92>,<U92>);(<u9?>,<U9?>);/
+ (<u:>,<U:>);(<u:!>,<U:!>);/
+ (<u:'>,<U:'>);(<u:->,<U:->);/
+ (<u:<>,<U:<>);(<u;>,<U;>);/
+ (<u<>,<U<>);(<u/>>,<U/>>);/
+ (<u?>,<U?>);(<u?'>,<U?'>);/
+ (<v>,<V>);(<v-.>,<V-.>);/
+ (<v-o>,<V-o>);(<v?>,<V?>);/
+ (<w>,<W>);(<w!>,<W!>);/
+ (<w'>,<W'>);(<w-.>,<W-.>);/
+ (<w-o>,<W-o>);(<w.>,<W.>);/
+ (<w:>,<W:>);(<w/>>,<W/>>);/
+ (<x>,<X>);(<x-o>,<X-o>);/
+ (<x.>,<X.>);(<x:>,<X:>);/
+ (<y>,<Y>);(<y!>,<Y!>);/
+ (<y'>,<Y'>);(<y-.>,<Y-.>);/
+ (<y-o>,<Y-o>);(<y.>,<Y.>);/
+ (<y2>,<Y2>);(<y/>>,<Y/>>);/
+ (<y?>,<Y?>);(<z>,<Z>);/
+ (<z'>,<Z'>);(<z-.>,<Z-.>);/
+ (<z-o>,<Z-o>);(<z.>,<Z.>);/
+ (<z//>,<Z//>);(<z<>,<Z<>);/
+ (<z/>>,<Z/>>);(<z_>,<Z_>);/
+ (<a%>,<A%>);(<a*>,<A*>);/
+ (<b*>,<B*>);(<c*>,<C*>);/
+ (<d*>,<D*>);(<e%>,<E%>);/
+ (<e*>,<E*>);(<f*>,<F*>);/
+ (<g*>,<G*>);(<h*>,<H*>);/
+ (<i%>,<I%>);(<i*>,<I*>);/
+ (<j*>,<J*>);(<k*>,<K*>);/
+ (<l*>,<L*>);(<m*>,<M*>);/
+ (<n*>,<N*>);(<o%>,<O%>);/
+ (<o*>,<O*>);(<p*>,<P*>);/
+ (<q*>,<Q*>);(<r*>,<R*>);/
+ (<s*>,<S*>);(<t*>,<T*>);/
+ (<u%>,<U%>);(<u*>,<U*>);/
+ (<v*>,<V*>);(<w%>,<W%>);/
+ (<w*>,<W*>);(<x*>,<X*>);/
+ (<y%>,<Y%>);(<y*>,<Y*>);/
+ (<z*>,<Z*>);(<%'>,<%">);/
+ (<='>,<=">);(<a=>,<A=>);/
+ (<b=>,<B=>);(<c%>,<C%>);/
+ (<c3>,<C3>);(<c=>,<C=>);/
+ (<d%>,<D%>);(<d=>,<D=>);/
+ (<ds>,<DS>);(<dz>,<DZ>);/
+ (<e=>,<E=>);(<f3>,<F3>);/
+ (<f=>,<F=>);(<g%>,<G%>);/
+ (<g3>,<G3>);(<g=>,<G=>);/
+ (<h=>,<H=>);(<i=>,<I=>);/
+ (<ie>,<IE>);(<ii>,<II>);/
+ (<io>,<IO>);(<j%>,<J%>);/
+ (<j=>,<J=>);(<ja>,<JA>);/
+ (<je>,<JE>);(<ju>,<JU>);/
+ (<k=>,<K=>);(<kj>,<KJ>);/
+ (<l=>,<L=>);(<lj>,<LJ>);/
+ (<m=>,<M=>);(<n=>,<N=>);/
+ (<nj>,<NJ>);(<o3>,<O3>);/
+ (<o=>,<O=>);(<p=>,<P=>);/
+ (<r=>,<R=>);(<s%>,<S%>);/
+ (<s=>,<S=>);(<sc>,<Sc>);/
+ (<t=>,<T=>);(<ts>,<Ts>);/
+ (<u=>,<U=>);(<v3>,<V3>);/
+ (<v=>,<V=>);(<y3>,<Y3>);/
+ (<y=>,<Y=>);(<yi>,<YI>);/
+ (<z%>,<Z%>);(<z=>,<Z=>);/
+ (<*s>,<S*>)
+
+END LC_CTYPE
+
+LC_MONETARY
+int_curr_symbol "<D><K><K><SP>"
+currency_symbol "<Cu>"
+mon_decimal_point "<,>"
+mon_thousands_sep "<.>"
+mon_grouping 3;3
+positive_sign ""
+negative_sign "<->"
+int_frac_digits 2
+frac_digits 2
+p_cs_precedes 1
+p_sep_by_space 0
+n_cs_precedes 1
+n_sep_by_space 0
+p_sign_posn 1
+n_sign_posn 1
+END LC_MONETARY
+
+LC_NUMERIC
+decimal_point "<,>"
+thousands_sep "<.>"
+grouping 3;3
+END LC_NUMERIC
+
+LC_TIME
+abday "<S><u><n>";"<M><o><n>";/
+ "<T><u><e>";"<W><e><d>";/
+ "<T><h><u>";"<F><r><i>";/
+ "<S><a><t>"
+day "<S><u><n><d><a><y>";/
+ "<M><o><n><d><a><y>";/
+ "<T><u><e><s><d><a><y>";/
+ "<W><e><d><n><e><s><d><a><y>";/
+ "<T><h><u><r><s><d><a><y>";/
+ "<F><r><i><d><a><y>";/
+ "<S><a><t><u><r><d><a><y>"
+abmon "<J><a><n>";"<F><e><b>";/
+ "<M><a><r>";"<A><p><r>";/
+ "<M><a><y>";"<J><u><n>";/
+ "<J><u><l>";"<A><u><g>";/
+ "<S><e><p>";"<O><c><t>";/
+ "<N><o><v>";"<D><e><c>"
+mon "<J><a><n><u><a><r><y>";/
+ "<F><e><b><r><u><a><r><y>";/
+ "<M><a><r><c><h>";/
+ "<A><p><r><i><l>";/
+ "<M><a><y>";/
+ "<J><u><n><e>";/
+ "<J><u><l><y>";/
+ "<A><u><g><u><s><t>";/
+ "<S><e><p><t><e><m><b><e><r>";/
+ "<O><c><t><o><b><e><r>";/
+ "<N><o><v><e><m><b><e><r>";/
+ "<D><e><c><e><m><b><e><r>"
+% date formats following ISO 8601-1988
+d_t_fmt "<%><Y><-><%><m><-><%><d><T><%><T><SP><%><Z>"
+d_fmt "<%><Y><-><%><m><-><%><d>"
+t_fmt "<%><T>"
+am_pm "";""
+t_fmt_ampm ""
+END LC_TIME
+
+LC_MESSAGES
+yesexpr "<<(><1><J><j><s><S><y><Y><o><O><)/>><.><*>"
+noexpr "<<(><0><n><N><)/>><.><*>"
+END LC_MESSAGES
diff --git a/share/colldef/es_ES.ISO8859-1.src b/share/colldef/es_ES.ISO8859-1.src
new file mode 100644
index 0000000..138ff84
--- /dev/null
+++ b/share/colldef/es_ES.ISO8859-1.src
@@ -0,0 +1,38 @@
+# Espan~ol (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-1
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
+ P;Q;R;{RR,Rr};S;T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>);Z;\
+ <D->;<TH>;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
+ p;q;r;rr;s;t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);z;\
+ <d->;<th>;<ss>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/es_ES.ISO8859-15.src b/share/colldef/es_ES.ISO8859-15.src
new file mode 100644
index 0000000..7aa54f6
--- /dev/null
+++ b/share/colldef/es_ES.ISO8859-15.src
@@ -0,0 +1,38 @@
+# Espan~ol (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-15
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);{CH,Ch};D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;K;L;{LL,Ll};M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
+ P;Q;R;{RR,Rr};(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
+ <D->;<TH>;\
+#
+ [;\\;];^;_;<'m>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);ch;d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;k;l;ll;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
+ p;q;r;rr;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);(z,<z<>);\
+ <d->;<th>;<ss>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/et_EE.ISO8859-15.src b/share/colldef/et_EE.ISO8859-15.src
new file mode 100644
index 0000000..e05a90a
--- /dev/null
+++ b/share/colldef/et_EE.ISO8859-15.src
@@ -0,0 +1,62 @@
+# $FreeBSD$
+# latin1 (backward compatible with ASCII)
+#
+#
+charmap map.ISO8859-15
+substitute <ss> with "ss"
+order \
+# controls
+ <NU>;...;<US>;<DT>;<PA>;...;<AC>;\
+# spaces
+ <SP>;<NS>;\
+#
+ _;-;<-->;\,;\;;:;!;<!I>;?;<?I>;/;.;\
+# accents
+ `;^;~;<.M>;<'m>;\
+# paired brackets
+ ';\";<<<>;</>/>>;\(;[;\{;\};];\);\
+# typography
+ <SE>;<PI>;<Co>;<Rg>;<At>;<Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+# math and logic
+ *;\\;&;<Nb>;%;+;<+->;<*X>;<-:>;\<;=;>;|;<NO>;\
+# measurement
+ <DG>;<My>;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+# small and capital
+ (a,A,<a'>,<A'>,<a!>,<A!>,<A/>>,<a/>>,<aa>,<AA>,<a?>,<A?>,<ae>,<AE>);\
+ <-a>;\
+ (b,B);\
+ (c,C,<c,>,<C,>);\
+ (d,D,<d->,<D->);\
+ (e,E,<e'>,<E'>,<e!>,<E!>,<e/>>,<E/>>,<E:>,<e:>);\
+ (f,F);\
+ (g,G);\
+ (h,H);\
+ (i,I,<i'>,<I'>,<i!>,<I!>,<i/>>,<I/>>,<i:>,<I:>);\
+ (j,J);\
+ (k,K);\
+ (l,L);\
+ (m,M);\
+ (n,N,<n?>,<N?>);\
+ (o,O,<o'>,<O'>,<o!>,<O!>,<o/>>,<O/>>,<o//>,<O//>);\
+ <-o>;\
+ (<oe>,<OE>);\
+ (p,P);\
+ (q,Q);\
+ (r,R);\
+ (s,S);\
+ (<s<>,<S<>);\
+ (z,Z);\
+ (<z<>,<Z<>);\
+ (t,T);\
+ (u,U,<u'>,<U'>,<u!>,<U!>,<u/>>,<U/>>);\
+ (v,V);\
+ (w,W);\
+ (<o?>,<O?>);\
+ (<a:>,<A:>);\
+ (<o:>,<O:>);\
+ (<u:>,<U:>);\
+ (x,X);\
+ (y,Y,<y'>,<Y'>,<y:>,<Y:>);\
+ (<th>,<TH>)
diff --git a/share/colldef/hi_IN.ISCII-DEV.src b/share/colldef/hi_IN.ISCII-DEV.src
new file mode 100644
index 0000000..fcd8b21
--- /dev/null
+++ b/share/colldef/hi_IN.ISCII-DEV.src
@@ -0,0 +1,25 @@
+# ISCII-DEV
+#
+# $FreeBSD$
+#
+
+charmap map.ISCII-DEV
+order \
+# controls
+ <NU>;...;<US>;\
+ <NS>;<SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;\,;-;.;/;:;...;@;[;...;`;\{;...;<AC>; \
+ <Vowel-modifier-Chandrabindu>;...;<Vowel-modifier-Visarg>; \
+ <Consonant-invisible>;...;<Full-Stop-Viram>; \
+# digits
+ 0;...;9; \
+ <Digit-0>;...;<Digit-9>; \
+# capital
+ A;...;Z; \
+# small
+ a;...;z; \
+# Everything else
+ <Vowel-A>;...;<Consonant-HA>; \
+# unused etc
+ ë;...;ð;û;...;ÿ
+
diff --git a/share/colldef/hy_AM.ARMSCII-8.src b/share/colldef/hy_AM.ARMSCII-8.src
new file mode 100644
index 0000000..8fa1ed0
--- /dev/null
+++ b/share/colldef/hy_AM.ARMSCII-8.src
@@ -0,0 +1,31 @@
+# $FreeBSD$
+#
+# LC_COLLATE source for Armenian/ARMSCII-8 (backward compatible with ASCII)
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+charmap map.ARMSCII-8
+substitute <armew> with "»õ"
+order \
+# controls
+ <armeternity>;<NU>;...;<US>;\x80;...;\xA0;\
+#
+ <SP>;(!,<armexclam>,<armaccent>);(\",<armquotleft>,<armquotright>);<Nb>;\
+ <DO>;<armemdash>;\
+ %;&;(',<armapostrophe>);(\(,<armparenleft>);(\),<armparenright>);*;+;\
+ (\,,<armcomma>);(-,<armendash>);<armyentamna>;<armellipsis>;(.,<armfullstop>);/;\
+# digits
+ 0;...;9;\
+#
+ (:,<armdot>);<armsep>;\;;\<;=;>;(?,<armquestion>);<At>;\
+# capital
+ A;...;Z;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+# remaining punktuation etc
+ \{;|;\};~;<DT>;\
+# Armenian
+ <Armayb>;...;<armfe>;\
+# and the rest
+ \xff
diff --git a/share/colldef/is_IS.ISO8859-1.src b/share/colldef/is_IS.ISO8859-1.src
new file mode 100644
index 0000000..68a96c7
--- /dev/null
+++ b/share/colldef/is_IS.ISO8859-1.src
@@ -0,0 +1,38 @@
+# icelandic (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-1
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>);\
+ B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O?>,<O//>);\
+ P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>);Z;\
+ <TH>;<AE>;<O:>;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>);\
+ b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o?>,<o//>);\
+ p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);z;\
+ <th>;<ae>;<o:>;<ss>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/is_IS.ISO8859-15.src b/share/colldef/is_IS.ISO8859-15.src
new file mode 100644
index 0000000..0fcbe63
--- /dev/null
+++ b/share/colldef/is_IS.ISO8859-15.src
@@ -0,0 +1,38 @@
+# icelandic (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-15
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>);\
+ B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O?>,<O//>,<OE>);\
+ P;...;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
+ <TH>;<AE>;<O:>;\
+#
+ [;\\;];^;_;<'m>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>);\
+ b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o?>,<o//>,<oe>);\
+ p;...;r;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);(z,<z<>);\
+ <th>;<ae>;<o:>;<ss>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/kk_KZ.PT154.src b/share/colldef/kk_KZ.PT154.src
new file mode 100644
index 0000000..a9cde3e
--- /dev/null
+++ b/share/colldef/kk_KZ.PT154.src
@@ -0,0 +1,41 @@
+# $FreeBSD$
+# PT154 (backward compatible with ASCII)
+#
+# Birsh T <birsh@mail.kz>, 2003-12-12
+#
+charmap map.PT154
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<"6>;<"9>;<<<>;</>/>>;\
+ <Nb>;<DO>;\
+ %;&;';<'6>;<'9>;\(;\);*;+;\,;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# uppercase
+ A;...;Z;\
+ <A=>;<HW>;<B=>;<V=>;<G=>;<G->;<D=>;\
+ <X%>;<E=>;<IO>;<Z%>;<Z.>;<Z=>;\
+ <I=>;<I'>;<II>;<J=>;<J%>;<K=>;<K%>;<K!>;<BK>;<L=>;\
+ <M=>;<N=>;<N%>;<O=>;<O->;<P=>;<R=>;\
+ <S=>;<DS>;<T=>;<U=>;<V%>;<U'>;<Y">;\
+ <Y->;<F=>;<H=>;<H%>;<HH>;<C=>;<C%>;<C.>;<C!>;<S%>;<Sc>;\
+ <=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# lowercase
+ a;...;z;\
+ <a=>;<hw>;<b=>;<v=>;<g=>;<g->;<d=>;\
+ <x%>;<e=>;<io>;<z%>;<z.>;<z=>;\
+ <i=>;<i'>;<ii>;<j=>;<j%>;<k=>;<k%>;<k!>;<bk>;<l=>;\
+ <m=>;<n=>;<n%>;<o=>;<o->;<p=>;<r=>;\
+ <s=>;<ds>;<t=>;<u=>;<v%>;<u'>;<y">;\
+ <y->;<f=>;<h=>;<h%>;<hh>;<c=>;<c%>;<c.>;<c!>;<s%>;<sc>;\
+ <='>;<y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;\
+ <-N>;<-M>;<:9>;<.3>;\
+ <N0>;<sb>;<DT>
diff --git a/share/colldef/la_LN.ISO8859-1.src b/share/colldef/la_LN.ISO8859-1.src
new file mode 100644
index 0000000..89e1abb
--- /dev/null
+++ b/share/colldef/la_LN.ISO8859-1.src
@@ -0,0 +1,38 @@
+# latin1 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-1
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
+ P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>);Z;\
+ <D->;<TH>;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
+ p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);z;\
+ <d->;<th>;<ss>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/la_LN.ISO8859-15.src b/share/colldef/la_LN.ISO8859-15.src
new file mode 100644
index 0000000..40d0bf4
--- /dev/null
+++ b/share/colldef/la_LN.ISO8859-15.src
@@ -0,0 +1,38 @@
+# latin1 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-15
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>,<OE>);\
+ P;...;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);\
+ <D->;<TH>;\
+#
+ [;\\;];^;_;<'m>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);d;(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>,<oe>);\
+ p;...;r;(s,<s<>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);(z,<z<>);\
+ <d->;<th>;<ss>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/la_LN.ISO8859-2.src b/share/colldef/la_LN.ISO8859-2.src
new file mode 100644
index 0000000..6672d87
--- /dev/null
+++ b/share/colldef/la_LN.ISO8859-2.src
@@ -0,0 +1,36 @@
+# latin2 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-2
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;\";<Nb>;\
+ <Cu>;<DO>;\
+ %;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<At>;\
+# capital
+ (A,<A'>,<A/>>,<A:>,<A;>,<A(>);\
+ B;(C,<C,>,<C'>,<C<>);(D,<D<>,<D//>);(E,<E'>,<E:>,<E;>,<E<>);\
+ F;G;H;(I,<I'>,<I/>>);\
+ J;K;(L,<L//>,<L<>,<L'>);M;(N,<N'>,<N<>);(O,<O'>,<O/>>,<O:>,<O">);\
+ P;Q;(R,<R'>,<R<>);(S,<S'>,<S<>,<S,>);(T,<T<>,<T,>);\
+ (U,<U'>,<U:>,<U0>,<U">);\
+ V;W;X;(Y,<Y'>);(Z,<Z'>,<Z<>,<Z.>);\
+#
+ [;\\;];^;<':>;<'">;<'<>;<'(>;_;<''>;`;\
+# small
+ (a,<a'>,<a/>>,<a:>,<a;>,<a(>);\
+ b;(c,<c,>,<c'>,<c<>);(d,<d<>,<d//>);(e,<e'>,<e:>,<e;>,<e<>);\
+ f;g;h;(i,<i'>,<i/>>);\
+ j;k;(l,<l//>,<l<>,<l'>);m;(n,<n'>,<n<>);(o,<o'>,<o/>>,<o:>,<o">);\
+ p;q;(r,<r'>,<r<>);(s,<s'>,<s<>,<s,>,<ss>);(t,<t<>,<t,>);\
+ (u,<u'>,<u:>,<u0>,<u">);\
+ v;w;x;(y,<y'>);(z,<z'>,<z<>,<z.>);\
+#
+ \{;|;\};~;<DG>;<DT>
diff --git a/share/colldef/la_LN.ISO8859-4.src b/share/colldef/la_LN.ISO8859-4.src
new file mode 100644
index 0000000..5b8417d
--- /dev/null
+++ b/share/colldef/la_LN.ISO8859-4.src
@@ -0,0 +1,36 @@
+# latin4 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-4
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;\";<Nb>;\
+ <Cu>;<DO>;\
+ %;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<At>;\
+# capital
+ (A,<A'>,<A/>>,<AA>,<A:>,<A;>,<A?>,<A->,<AE>);\
+ B;(C,<C<>);(D,<D//>);(E,<E'>,<E:>,<E.>,<E;>,<E->);\
+ F;(G,<G,>);H;(I,<I'>,<I/>>,<I?>,<I;>,<I->);\
+ J;(K,<K,>);(L,<L,>);M;(N,<N,>);<NG>;(O,<O/>>,<O:>,<O?>,<O//>,<O->);\
+ P;Q;(R,<R,>);(S,<S<>);(T,<T//>);\
+ (U,<U'>,<U/>>,<U:>,<U;>,<U?>,<U->);\
+ V;W;X;Y;(Z,<Z<>);\
+#
+ [;\\;];^;<':>;<'<>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a/>>,<aa>,<a:>,<a?>,<a;>,<a->,<ae>);\
+ b;(c,<c<>);(d,<d//>);(e,<e'>,<e:>,<e.>,<e;>,<e->);\
+ f;(g,<g,>);h;(i,<i'>,<i/>>,<i?>,<i;>,<i->);\
+ j;(k,<k,>);<kk>;(l,<l,>);m;(n,<n,>);<ng>;(o,<o/>>,<o:>,<o?>,<o//>,<o->);\
+ p;q;(r,<r,>);(s,<s<>,<ss>);(t,<t//>);\
+ (u,<u'>,<u/>>,<u:>,<u;>,<u?>,<u->);\
+ v;w;x;y;(z,<z<>);\
+#
+ \{;|;\};~;<DG>;<DT>
diff --git a/share/colldef/la_LN.US-ASCII.src b/share/colldef/la_LN.US-ASCII.src
new file mode 100644
index 0000000..df3c340
--- /dev/null
+++ b/share/colldef/la_LN.US-ASCII.src
@@ -0,0 +1,6 @@
+# ASCII
+#
+# $FreeBSD$
+#
+order \
+ \x00;...;\xff
diff --git a/share/colldef/lt_LT.ISO8859-13.src b/share/colldef/lt_LT.ISO8859-13.src
new file mode 100644
index 0000000..811db89
--- /dev/null
+++ b/share/colldef/lt_LT.ISO8859-13.src
@@ -0,0 +1,37 @@
+# Lithuanian (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-13
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;\";<"">;<Nb>;\
+ <Cu>;<DO>;<Ct>;<Pd>;\
+ %;&;';\(;\);*;+;<-:>;<*X>;<.M>;\,;<,,>;<``>;<-->;<+->;-;.;<'.>;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;<<<>;</>/>>;?;<NO>;<SE>;<At>;\
+# capital
+ (A,<AA>,<A:>,<A;>,<A->,<AE>);\
+ B;(C,<C<>,<C'>);D;(E,<E'>,<E;>,<E->,<E.>);\
+ F;(G,<G,>);H;(I,<I;>,<I->);Y;\
+ J;(K,<K,>);(L,<L,>,<L//>);M;(N,<N'>,<N,>);(O,<O'>,<O:>,<O?>,<O//>,<O->);\
+ P;Q;(R,<R,>);(S,<S'>,<S<>);T;\
+ (U,<U:>,<U;>,<U->);\
+ V;W;X;(Z,<Z'>,<Z.>,<Z<>);\
+#
+ [;\\;];^;_;`;\
+# small
+ (a,<aa>,<a:>,<a;>,<a->,<ae>);\
+ b;(c,<c<>,<c'>);d;(e,<e'>,<e;>,<e->,<e.>);\
+ f;(g,<g,>);h;(i,<i;>,<i->);y;\
+ j;(k,<k,>);(l,<l,>,<l//>);m;(n,<n'>,<n,>);(o,<o'>,<o:>,<o?>,<o//>,<o->);\
+ p;q;(r,<r,>);(s,<s'>,<s<>,<ss>);t;\
+ (u,<u:>,<u;>,<u->);\
+ v;w;x;(z,<z'>,<z.>,<z<>);\
+#
+ \{;|;<BB>;\};~;<DG>;<DT>;<Co>;<Rg>;<My>;<PI>;<1S>;<2S>;<3S>;\
+ <14>;<12>;<34>
diff --git a/share/colldef/lt_LT.ISO8859-4.src b/share/colldef/lt_LT.ISO8859-4.src
new file mode 100644
index 0000000..961ce6e
--- /dev/null
+++ b/share/colldef/lt_LT.ISO8859-4.src
@@ -0,0 +1,36 @@
+# Lithuanian (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-4
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;\";<Nb>;\
+ <Cu>;<DO>;\
+ %;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<At>;\
+# capital
+ (A,<A'>,<A/>>,<AA>,<A:>,<A;>,<A?>,<A->,<AE>);\
+ B;(C,<C<>);(D,<D//>);(E,<E'>,<E:>,<E;>,<E->,<E.>);\
+ F;(G,<G,>);H;(I,<I'>,<I/>>,<I?>,<I;>,<I->);Y;\
+ J;(K,<K,>);(L,<L,>);M;(N,<N,>);<NG>;(O,<O/>>,<O:>,<O?>,<O//>,<O->);\
+ P;Q;(R,<R,>);(S,<S<>);(T,<T//>);\
+ (U,<U'>,<U/>>,<U:>,<U;>,<U?>,<U->);\
+ V;W;X;(Z,<Z<>);\
+#
+ [;\\;];^;<':>;<'<>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a/>>,<aa>,<a:>,<a?>,<a;>,<a->,<ae>);\
+ b;(c,<c<>);(d,<d//>);(e,<e'>,<e:>,<e;>,<e->,<e.>);\
+ f;(g,<g,>);h;(i,<i'>,<i/>>,<i?>,<i;>,<i->);y;\
+ j;(k,<k,>);<kk>;(l,<l,>);m;(n,<n,>);<ng>;(o,<o/>>,<o:>,<o?>,<o//>,<o->);\
+ p;q;(r,<r,>);(s,<s<>,<ss>);(t,<t//>);\
+ (u,<u'>,<u/>>,<u:>,<u;>,<u?>,<u->);\
+ v;w;x;(z,<z<>);\
+#
+ \{;|;\};~;<DG>;<DT>
diff --git a/share/colldef/map.ARMSCII-8 b/share/colldef/map.ARMSCII-8
new file mode 100644
index 0000000..b9dc826
--- /dev/null
+++ b/share/colldef/map.ARMSCII-8
@@ -0,0 +1,144 @@
+# $FreeBSD$
+#
+# map.ARMSCII-8 defined by Vahe Khachikyan <vahe@khachikyan.de>
+#
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+armeternity \xA1
+armew \xA2
+armfullstop \xA3
+armparenright \xA4
+armparenleft \xA5
+armquotright \xA6
+armquotleft \xA7
+armemdash \xA8
+armdot \xA9
+armsep \xAA
+armcomma \xAB
+armendash \xAC
+armyentamna \xAD
+armellipsis \xAE
+armexclam \xAF
+armaccent \xB0
+armquestion \xB1
+Armayb \xB2
+armayb \xB3
+Armben \xB4
+armben \xB5
+Armgim \xB6
+armgim \xB7
+Armda \xB8
+armda \xB9
+Armyech \xBA
+armyech \xBB
+Armza \xBC
+armza \xBD
+Arme \xBE
+arme \xBF
+Armat \xC0
+armat \xC1
+Armto \xC2
+armto \xC3
+Armzhe \xC4
+armzhe \xC5
+Armini \xC6
+armini \xC7
+Armlyun \xC8
+armlyun \xC9
+Armkhe \xCA
+armkhe \xCB
+Armtsa \xCC
+armtsa \xCD
+Armken \xCE
+armken \xCF
+Armho \xD0
+armho \xD1
+Armdza \xD2
+armdza \xD3
+Armghat \xD4
+armghat \xD5
+Armtche \xD6
+armtche \xD7
+Armmen \xD8
+armmen \xD9
+Armhi \xDA
+armhi \xDB
+Armnu \xDC
+armnu \xDD
+Armsha \xDE
+armsha \xDF
+Armvo \xE0
+armvo \xE1
+Armcha \xE2
+armcha \xE3
+Armpe \xE4
+armpe \xE5
+Armje \xE6
+armje \xE7
+Armra \xE8
+armra \xE9
+Armse \xEA
+armse \xEB
+Armvev \xEC
+armvev \xED
+Armtyun \xEE
+armtyun \xEF
+Armre \xF0
+armre \xF1
+Armtso \xF2
+armtso \xF3
+Armvyun \xF4
+armvyun \xF5
+Armpyur \xF6
+armpyur \xF7
+Armke \xF8
+armke \xF9
+Armo \xFA
+armo \xFB
+Armfe \xFC
+armfe \xFD
+armapostrophe \xFE
diff --git a/share/colldef/map.CP1131 b/share/colldef/map.CP1131
new file mode 100644
index 0000000..1f49cdc
--- /dev/null
+++ b/share/colldef/map.CP1131
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+A= \x80
+B= \x81
+V= \x82
+G= \x83
+D= \x84
+E= \x85
+Z% \x86
+Z= \x87
+I= \x88
+J= \x89
+K= \x8a
+L= \x8b
+M= \x8c
+N= \x8d
+O= \x8e
+P= \x8f
+R= \x90
+S= \x91
+T= \x92
+U= \x93
+F= \x94
+H= \x95
+C= \x96
+C% \x97
+S% \x98
+Sc \x99
+=" \x9a
+Y= \x9b
+%" \x9c
+JE \x9d
+JU \x9e
+JA \x9f
+a= \xa0
+b= \xa1
+v= \xa2
+g= \xa3
+d= \xa4
+e= \xa5
+z% \xa6
+z= \xa7
+i= \xa8
+j= \xa9
+k= \xaa
+l= \xab
+m= \xac
+n= \xad
+o= \xae
+p= \xaf
+.S \xb0
+:S \xb1
+?S \xb2
+vv \xb3
+vl \xb4
+vL \xb5
+Vl \xb6
+Dl \xb7
+dL \xb8
+VL \xb9
+VV \xba
+LD \xbb
+UL \xbc
+Ul \xbd
+uL \xbe
+dl \xbf
+ur \xc0
+uh \xc1
+dh \xc2
+vr \xc3
+hh \xc4
+vh \xc5
+vR \xc6
+Vr \xc7
+UR \xc8
+DR \xc9
+UH \xca
+DH \xcb
+VR \xcc
+HH \xcd
+VH \xce
+uH \xcf
+Uh \xd0
+dH \xd1
+Dh \xd2
+Ur \xd3
+uR \xd4
+dR \xd5
+Dr \xd6
+Vh \xd7
+vH \xd8
+ul \xd9
+dr \xda
+FB \xdb
+LB \xdc
+lB \xdd
+RB \xde
+TB \xdf
+r= \xe0
+s= \xe1
+t= \xe2
+u= \xe3
+f= \xe4
+h= \xe5
+c= \xe6
+c% \xe7
+s% \xe8
+sc \xe9
+=' \xea
+y= \xeb
+%' \xec
+je \xed
+ju \xee
+ja \xef
+IO \xf0
+io \xf1
+IE \xf2
+ie \xf3
+YI \xf4
+yi \xf5
+V% \xf6
+v% \xf7
+II \xf8
+ii \xf9
+.M \xfa
+Cu \xfb
+G3 \xfc
+g3 \xfd
+Sb \xfe
+NS \xff
diff --git a/share/colldef/map.CP1251 b/share/colldef/map.CP1251
new file mode 100644
index 0000000..dac8eb7
--- /dev/null
+++ b/share/colldef/map.CP1251
@@ -0,0 +1,257 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+! \x21
+" \x22
+Nb \x23
+DO \x24
+% \x25
+& \x26
+' \x27
+( \x28
+) \x29
+* \x2a
++ \x2b
+, \x2c
+- \x2d
+. \x2e
+/ \x2f
+0 \x30
+1 \x31
+2 \x32
+3 \x33
+4 \x34
+5 \x35
+6 \x36
+7 \x37
+8 \x38
+9 \x39
+: \x3a
+; \x3b
+< \x3c
+= \x3d
+> \x3e
+? \x3f
+At \x40
+A \x41
+B \x42
+C \x43
+D \x44
+E \x45
+F \x46
+G \x47
+H \x48
+I \x49
+J \x4a
+K \x4b
+L \x4c
+M \x4d
+N \x4e
+O \x4f
+P \x50
+Q \x51
+R \x52
+S \x53
+T \x54
+U \x55
+V \x56
+W \x57
+X \x58
+Y \x59
+Z \x5a
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+_ \x5f
+'! \x60
+a \x61
+b \x62
+c \x63
+d \x64
+e \x65
+f \x66
+g \x67
+h \x68
+i \x69
+j \x6a
+k \x6b
+l \x6c
+m \x6d
+n \x6e
+o \x6f
+p \x70
+q \x71
+r \x72
+s \x73
+t \x74
+u \x75
+v \x76
+w \x77
+x \x78
+y \x79
+z \x7a
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+D% \x80
+G% \x81
+.9 \x82
+g% \x83
+:9 \x84
+.3 \x85
+/- \x86
+/= \x87
+Eu \x88
+%0 \x89
+LJ \x8a
+<1 \x8b
+NJ \x8c
+KJ \x8d
+Ts \x8e
+DZ \x8f
+d% \x90
+'6 \x91
+'9 \x92
+"6 \x93
+"9 \x94
+sb \x95
+-N \x96
+-M \x97
+FB \x98
+TM \x99
+lj \x9a
+>1 \x9b
+nj \x9c
+kj \x9d
+ts \x9e
+dz \x9f
+NS \xa0
+V% \xa1
+v% \xa2
+J% \xa3
+Cu \xa4
+G3 \xa5
+BB \xa6
+SE \xa7
+IO \xa8
+Co \xa9
+IE \xaa
+<< \xab
+NO \xac
+-- \xad
+Rg \xae
+YI \xaf
+DG \xb0
++- \xb1
+II \xb2
+ii \xb3
+g3 \xb4
+My \xb5
+PI \xb6
+.M \xb7
+io \xb8
+N0 \xb9
+ie \xba
+>> \xbb
+j% \xbc
+DS \xbd
+ds \xbe
+yi \xbf
+A= \xc0
+B= \xc1
+V= \xc2
+G= \xc3
+D= \xc4
+E= \xc5
+Z% \xc6
+Z= \xc7
+I= \xc8
+J= \xc9
+K= \xca
+L= \xcb
+M= \xcc
+N= \xcd
+O= \xce
+P= \xcf
+R= \xd0
+S= \xd1
+T= \xd2
+U= \xd3
+F= \xd4
+H= \xd5
+C= \xd6
+C% \xd7
+S% \xd8
+Sc \xd9
+=" \xda
+Y= \xdb
+%" \xdc
+JE \xdd
+JU \xde
+JA \xdf
+a= \xe0
+b= \xe1
+v= \xe2
+g= \xe3
+d= \xe4
+e= \xe5
+z% \xe6
+z= \xe7
+i= \xe8
+j= \xe9
+k= \xea
+l= \xeb
+m= \xec
+n= \xed
+o= \xee
+p= \xef
+r= \xf0
+s= \xf1
+t= \xf2
+u= \xf3
+f= \xf4
+h= \xf5
+c= \xf6
+c% \xf7
+s% \xf8
+sc \xf9
+=' \xfa
+y= \xfb
+%' \xfc
+je \xfd
+ju \xfe
+ja \xff
diff --git a/share/colldef/map.CP866 b/share/colldef/map.CP866
new file mode 100644
index 0000000..16f09b4
--- /dev/null
+++ b/share/colldef/map.CP866
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+A= \x80
+B= \x81
+V= \x82
+G= \x83
+D= \x84
+E= \x85
+Z% \x86
+Z= \x87
+I= \x88
+J= \x89
+K= \x8a
+L= \x8b
+M= \x8c
+N= \x8d
+O= \x8e
+P= \x8f
+R= \x90
+S= \x91
+T= \x92
+U= \x93
+F= \x94
+H= \x95
+C= \x96
+C% \x97
+S% \x98
+Sc \x99
+=" \x9a
+Y= \x9b
+%" \x9c
+JE \x9d
+JU \x9e
+JA \x9f
+a= \xa0
+b= \xa1
+v= \xa2
+g= \xa3
+d= \xa4
+e= \xa5
+z% \xa6
+z= \xa7
+i= \xa8
+j= \xa9
+k= \xaa
+l= \xab
+m= \xac
+n= \xad
+o= \xae
+p= \xaf
+.S \xb0
+:S \xb1
+?S \xb2
+vv \xb3
+vl \xb4
+vL \xb5
+Vl \xb6
+Dl \xb7
+dL \xb8
+VL \xb9
+VV \xba
+LD \xbb
+UL \xbc
+Ul \xbd
+uL \xbe
+dl \xbf
+ur \xc0
+uh \xc1
+dh \xc2
+vr \xc3
+hh \xc4
+vh \xc5
+vR \xc6
+Vr \xc7
+UR \xc8
+DR \xc9
+UH \xca
+DH \xcb
+VR \xcc
+HH \xcd
+VH \xce
+uH \xcf
+Uh \xd0
+dH \xd1
+Dh \xd2
+Ur \xd3
+uR \xd4
+dR \xd5
+Dr \xd6
+Vh \xd7
+vH \xd8
+ul \xd9
+dr \xda
+FB \xdb
+LB \xdc
+lB \xdd
+RB \xde
+TB \xdf
+r= \xe0
+s= \xe1
+t= \xe2
+u= \xe3
+f= \xe4
+h= \xe5
+c= \xe6
+c% \xe7
+s% \xe8
+sc \xe9
+=' \xea
+y= \xeb
+%' \xec
+je \xed
+ju \xee
+ja \xef
+IO \xf0
+io \xf1
+IE \xf2
+ie \xf3
+YI \xf4
+yi \xf5
+V% \xf6
+v% \xf7
+DG \xf8
+Sb \xf9
+.M \xfa
+RT \xfb
+N0 \xfc
+Cu \xfd
+fS \xfe
+NS \xff
diff --git a/share/colldef/map.ISCII-DEV b/share/colldef/map.ISCII-DEV
new file mode 100644
index 0000000..93ef156
--- /dev/null
+++ b/share/colldef/map.ISCII-DEV
@@ -0,0 +1,164 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+Vowel-modifier-Chandrabindu ¡
+Vowel-modifier-Anuswar ¢
+Vowel-modifier-Visarg £
+Vowel-A ¤
+Vowel-AA ¥
+Vowel-I ¦
+Vowel-II §
+Vowel-U ¨
+Vowel-UU ©
+Vowel-RI ª
+Vowel-E «
+Vowel-EY ¬
+Vowel-AI ­
+Vowel-AYE ®
+Vowel-O ¯
+Vowel-OW °
+Vowel-AU ±
+Vowel-AWE ²
+Consonant-KA ³
+Consonant-KHA ´
+Consonant-GA µ
+Consonant-GHA ¶
+Consonant-NGA ·
+Consonant-CHA ¸
+Consonant-CHHA ¹
+Consonant-JA º
+Consonant-JHA »
+Consonant-JNA ¼
+Consonant-Hard-TA ½
+Consonant-Hard-THA ¾
+Consonant-Hard-DA ¿
+Consonant-Hard-DHA À
+Consonant-Hard-NA Á
+Consonant-Soft-TA Â
+Consonant-Soft-THA Ã
+Consonant-Soft-DA Ä
+Consonant-Soft-DHA Å
+Consonant-Soft-NA Æ
+Consonant-NA-Tamil Ç
+Consonant-PA È
+Consonant-PHA É
+Consonant-BA Ê
+Consonant-BHA Ë
+Consonant-MA Ì
+Consonant-YA Í
+Consonant-JYA Î
+Consonant-RA Ï
+Consonant-Hard-RA Ð
+Consonant-LA Ñ
+Consonant-Hard-LA Ò
+Consonant-ZHA-Tamil Ó
+Consonant-VA Ô
+Consonant-SHA Õ
+Consonant-Hard-SHA Ö
+Consonant-SA ×
+Consonant-HA Ø
+Consonant-invisible Ù
+Vowel-sign-AA Ú
+Vowel-sign-I Û
+Vowel-sign-II Ü
+Vowel-sign-U Ý
+Vowel-sign-UU Þ
+Vowel-sign-RI ß
+Vowel-sign-E à
+Vowel-sign-EY á
+Vowel-sign-AI â
+Vowel-sign-AYE ã
+Vowel-sign-O ä
+Vowel-sign-OW å
+Vowel-sign-AU æ
+Vowel-sign-AWE ç
+Vowel-omission-sign è
+Diacritic-sign-Nukta é
+Full-Stop-Viram ê
+Digit-0 ñ
+Digit-1 ò
+Digit-2 ó
+Digit-3 ô
+Digit-4 õ
+Digit-5 ö
+Digit-6 ÷
+Digit-7 ø
+Digit-8 ù
+Digit-9 ú
diff --git a/share/colldef/map.ISO8859-1 b/share/colldef/map.ISO8859-1
new file mode 100644
index 0000000..ee5a557
--- /dev/null
+++ b/share/colldef/map.ISO8859-1
@@ -0,0 +1,174 @@
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+!I \xa1
+Ct \xa2
+Pd \xa3
+Cu \xa4
+Ye \xa5
+BB \xa6
+SE \xa7
+': \xa8
+Co \xa9
+-a \xaa
+<< \xab
+NO \xac
+-- \xad
+Rg \xae
+'m \xaf
+DG \xb0
++- \xb1
+2S \xb2
+3S \xb3
+'' \xb4
+My \xb5
+PI \xb6
+.M \xb7
+', \xb8
+1S \xb9
+-o \xba
+>> \xbb
+14 \xbc
+12 \xbd
+34 \xbe
+?I \xbf
+A! \xc0
+A' \xc1
+A> \xc2
+A? \xc3
+A: \xc4
+AA \xc5
+AE \xc6
+C, \xc7
+E! \xc8
+E' \xc9
+E> \xca
+E: \xcb
+I! \xcc
+I' \xcd
+I> \xce
+I: \xcf
+D- \xd0
+N? \xd1
+O! \xd2
+O' \xd3
+O> \xd4
+O? \xd5
+O: \xd6
+*X \xd7
+O/ \xd8
+U! \xd9
+U' \xda
+U> \xdb
+U: \xdc
+Y' \xdd
+TH \xde
+ss \xdf
+a! \xe0
+a' \xe1
+a> \xe2
+a? \xe3
+a: \xe4
+aa \xe5
+ae \xe6
+c, \xe7
+e! \xe8
+e' \xe9
+e> \xea
+e: \xeb
+i! \xec
+i' \xed
+i> \xee
+i: \xef
+d- \xf0
+n? \xf1
+o! \xf2
+o' \xf3
+o> \xf4
+o? \xf5
+o: \xf6
+-: \xf7
+o/ \xf8
+u! \xf9
+u' \xfa
+u> \xfb
+u: \xfc
+y' \xfd
+th \xfe
+y: \xff
diff --git a/share/colldef/map.ISO8859-13 b/share/colldef/map.ISO8859-13
new file mode 100644
index 0000000..8cb2afe
--- /dev/null
+++ b/share/colldef/map.ISO8859-13
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+"" \xa1
+Ct \xa2
+Pd \xa3
+Cu \xa4
+,, \xa5
+BB \xa6
+SE \xa7
+O/ \xa8
+Co \xa9
+R, \xaa
+<< \xab
+NO \xac
+-- \xad
+Rg \xae
+AE \xaf
+DG \xb0
++- \xb1
+2S \xb2
+3S \xb3
+`` \xb4
+My \xb5
+PI \xb6
+.M \xb7
+o/ \xb8
+1S \xb9
+r, \xba
+>> \xbb
+14 \xbc
+12 \xbd
+34 \xbe
+ae \xbf
+A; \xc0
+I; \xc1
+A- \xc2
+C' \xc3
+A: \xc4
+AA \xc5
+E; \xc6
+E- \xc7
+C< \xc8
+E' \xc9
+Z' \xca
+E. \xcb
+G, \xcc
+K, \xcd
+I- \xce
+L, \xcf
+S< \xd0
+N' \xd1
+N, \xd2
+O' \xd3
+O- \xd4
+O? \xd5
+O: \xd6
+*X \xd7
+U; \xd8
+L/ \xd9
+S' \xda
+U- \xdb
+U: \xdc
+Z. \xdd
+Z< \xde
+ss \xdf
+a; \xe0
+i; \xe1
+a- \xe2
+c' \xe3
+a: \xe4
+aa \xe5
+e; \xe6
+e- \xe7
+c< \xe8
+e' \xe9
+z' \xea
+e. \xeb
+g, \xec
+k, \xed
+i- \xee
+l, \xef
+s< \xf0
+n' \xf1
+n, \xf2
+o' \xf3
+o- \xf4
+o? \xf5
+o: \xf6
+-: \xf7
+u; \xf8
+l/ \xf9
+s' \xfa
+u- \xfb
+u: \xfc
+z. \xfd
+z< \xfe
+'. \xff
diff --git a/share/colldef/map.ISO8859-15 b/share/colldef/map.ISO8859-15
new file mode 100644
index 0000000..041dd5a
--- /dev/null
+++ b/share/colldef/map.ISO8859-15
@@ -0,0 +1,174 @@
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+!I \xa1
+Ct \xa2
+Pd \xa3
+Eu \xa4
+Ye \xa5
+S< \xa6
+SE \xa7
+s< \xa8
+Co \xa9
+-a \xaa
+<< \xab
+NO \xac
+-- \xad
+Rg \xae
+'m \xaf
+DG \xb0
++- \xb1
+2S \xb2
+3S \xb3
+Z< \xb4
+My \xb5
+PI \xb6
+.M \xb7
+z< \xb8
+1S \xb9
+-o \xba
+>> \xbb
+OE \xbc
+oe \xbd
+Y: \xbe
+?I \xbf
+A! \xc0
+A' \xc1
+A> \xc2
+A? \xc3
+A: \xc4
+AA \xc5
+AE \xc6
+C, \xc7
+E! \xc8
+E' \xc9
+E> \xca
+E: \xcb
+I! \xcc
+I' \xcd
+I> \xce
+I: \xcf
+D- \xd0
+N? \xd1
+O! \xd2
+O' \xd3
+O> \xd4
+O? \xd5
+O: \xd6
+*X \xd7
+O/ \xd8
+U! \xd9
+U' \xda
+U> \xdb
+U: \xdc
+Y' \xdd
+TH \xde
+ss \xdf
+a! \xe0
+a' \xe1
+a> \xe2
+a? \xe3
+a: \xe4
+aa \xe5
+ae \xe6
+c, \xe7
+e! \xe8
+e' \xe9
+e> \xea
+e: \xeb
+i! \xec
+i' \xed
+i> \xee
+i: \xef
+d- \xf0
+n? \xf1
+o! \xf2
+o' \xf3
+o> \xf4
+o? \xf5
+o: \xf6
+-: \xf7
+o/ \xf8
+u! \xf9
+u' \xfa
+u> \xfb
+u: \xfc
+y' \xfd
+th \xfe
+y: \xff
diff --git a/share/colldef/map.ISO8859-2 b/share/colldef/map.ISO8859-2
new file mode 100644
index 0000000..75f2013
--- /dev/null
+++ b/share/colldef/map.ISO8859-2
@@ -0,0 +1,174 @@
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+A; \xa1
+'( \xa2
+L/ \xa3
+Cu \xa4
+L< \xa5
+S' \xa6
+SE \xa7
+': \xa8
+S< \xa9
+S, \xaa
+T< \xab
+Z' \xac
+-- \xad
+Z< \xae
+Z. \xaf
+DG \xb0
+a; \xb1
+'; \xb2
+l/ \xb3
+'' \xb4
+l< \xb5
+s' \xb6
+'< \xb7
+', \xb8
+s< \xb9
+s, \xba
+t< \xbb
+z' \xbc
+'" \xbd
+z< \xbe
+z. \xbf
+R' \xc0
+A' \xc1
+A> \xc2
+A( \xc3
+A: \xc4
+L' \xc5
+C' \xc6
+C, \xc7
+C< \xc8
+E' \xc9
+E; \xca
+E: \xcb
+E< \xcc
+I' \xcd
+I> \xce
+D< \xcf
+D/ \xd0
+N' \xd1
+N< \xd2
+O' \xd3
+O> \xd4
+O" \xd5
+O: \xd6
+*X \xd7
+R< \xd8
+U0 \xd9
+U' \xda
+U" \xdb
+U: \xdc
+Y' \xdd
+T, \xde
+ss \xdf
+r' \xe0
+a' \xe1
+a> \xe2
+a( \xe3
+a: \xe4
+l' \xe5
+c' \xe6
+c, \xe7
+c< \xe8
+e' \xe9
+e; \xea
+e: \xeb
+e< \xec
+i' \xed
+i> \xee
+d< \xef
+d/ \xf0
+n' \xf1
+n< \xf2
+o' \xf3
+o> \xf4
+o" \xf5
+o: \xf6
+-: \xf7
+r< \xf8
+u0 \xf9
+u' \xfa
+u" \xfb
+u: \xfc
+y' \xfd
+t, \xfe
+'. \xff
diff --git a/share/colldef/map.ISO8859-4 b/share/colldef/map.ISO8859-4
new file mode 100644
index 0000000..8bbeb57
--- /dev/null
+++ b/share/colldef/map.ISO8859-4
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+A; \xa1
+kk \xa2
+R, \xa3
+Cu \xa4
+I? \xa5
+L, \xa6
+SE \xa7
+': \xa8
+S< \xa9
+E- \xaa
+G, \xab
+T/ \xac
+-- \xad
+Z< \xae
+'m \xaf
+DG \xb0
+a; \xb1
+'; \xb2
+r, \xb3
+'' \xb4
+i? \xb5
+l, \xb6
+'< \xb7
+', \xb8
+s< \xb9
+e- \xba
+g, \xbb
+t/ \xbc
+NG \xbd
+z< \xbe
+ng \xbf
+A- \xc0
+A' \xc1
+A> \xc2
+A? \xc3
+A: \xc4
+AA \xc5
+AE \xc6
+I; \xc7
+C< \xc8
+E' \xc9
+E; \xca
+E: \xcb
+E. \xcc
+I' \xcd
+I> \xce
+I- \xcf
+D/ \xd0
+N, \xd1
+O- \xd2
+K, \xd3
+O> \xd4
+O? \xd5
+O: \xd6
+*X \xd7
+O/ \xd8
+U; \xd9
+U' \xda
+U> \xdb
+U: \xdc
+U? \xdd
+U- \xde
+ss \xdf
+a- \xe0
+a' \xe1
+a> \xe2
+a? \xe3
+a: \xe4
+aa \xe5
+ae \xe6
+i; \xe7
+c< \xe8
+e' \xe9
+e; \xea
+e: \xeb
+e. \xec
+i' \xed
+i> \xee
+i- \xef
+d/ \xf0
+n, \xf1
+o- \xf2
+k, \xf3
+o> \xf4
+o? \xf5
+o: \xf6
+-: \xf7
+o/ \xf8
+u; \xf9
+u' \xfa
+u> \xfb
+u: \xfc
+u? \xfd
+u- \xfe
+'. \xff
diff --git a/share/colldef/map.ISO8859-5 b/share/colldef/map.ISO8859-5
new file mode 100644
index 0000000..230b559
--- /dev/null
+++ b/share/colldef/map.ISO8859-5
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+IO \xa1
+D% \xa2
+G% \xa3
+IE \xa4
+DS \xa5
+II \xa6
+YI \xa7
+J% \xa8
+LJ \xa9
+NJ \xaa
+Ts \xab
+KJ \xac
+-- \xad
+V% \xae
+DZ \xaf
+A= \xb0
+B= \xb1
+V= \xb2
+G= \xb3
+D= \xb4
+E= \xb5
+Z% \xb6
+Z= \xb7
+I= \xb8
+J= \xb9
+K= \xba
+L= \xbb
+M= \xbc
+N= \xbd
+O= \xbe
+P= \xbf
+R= \xc0
+S= \xc1
+T= \xc2
+U= \xc3
+F= \xc4
+H= \xc5
+C= \xc6
+C% \xc7
+S% \xc8
+Sc \xc9
+=" \xca
+Y= \xcb
+%" \xcc
+JE \xcd
+JU \xce
+JA \xcf
+a= \xd0
+b= \xd1
+v= \xd2
+g= \xd3
+d= \xd4
+e= \xd5
+z% \xd6
+z= \xd7
+i= \xd8
+j= \xd9
+k= \xda
+l= \xdb
+m= \xdc
+n= \xdd
+o= \xde
+p= \xdf
+r= \xe0
+s= \xe1
+t= \xe2
+u= \xe3
+f= \xe4
+h= \xe5
+c= \xe6
+c% \xe7
+s% \xe8
+sc \xe9
+=' \xea
+y= \xeb
+%' \xec
+je \xed
+ju \xee
+ja \xef
+N0 \xf0
+io \xf1
+d% \xf2
+g% \xf3
+ie \xf4
+ds \xf5
+ii \xf6
+yi \xf7
+j% \xf8
+lj \xf9
+nj \xfa
+ts \xfb
+kj \xfc
+SE \xfd
+v% \xfe
+dz \xff
diff --git a/share/colldef/map.ISO8859-7 b/share/colldef/map.ISO8859-7
new file mode 100644
index 0000000..b45066a
--- /dev/null
+++ b/share/colldef/map.ISO8859-7
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+9' \xa1
+'9 \xa2
+Pd \xa3
+IE \xa4
+DS \xa5
+BB \xa6
+SE \xa7
+': \xa8
+Co \xa9
+NJ \xaa
+<< \xab
+NO \xac
+-- \xad
+V% \xae
+-M \xaf
+DG \xb0
++- \xb1
+2S \xb2
+3S \xb3
+'' \xb4
+'% \xb5
+A% \xb6
+.M \xb7
+E% \xb8
+Y% \xb9
+I% \xba
+>> \xbb
+O% \xbc
+12 \xbd
+U% \xbe
+W% \xbf
+i3 \xc0
+A* \xc1
+B* \xc2
+G* \xc3
+D* \xc4
+E* \xc5
+Z* \xc6
+Y* \xc7
+H* \xc8
+I* \xc9
+K* \xca
+L* \xcb
+M* \xcc
+N* \xcd
+C* \xce
+O* \xcf
+P* \xd0
+R* \xd1
+v= \xd2
+S* \xd3
+T* \xd4
+U* \xd5
+F* \xd6
+X* \xd7
+Q* \xd8
+W* \xd9
+J* \xda
+V* \xdb
+a% \xdc
+e% \xdd
+y% \xde
+i% \xdf
+u3 \xe0
+a* \xe1
+b* \xe2
+g* \xe3
+d* \xe4
+e* \xe5
+z* \xe6
+y* \xe7
+h* \xe8
+i* \xe9
+k* \xea
+l* \xeb
+m* \xec
+n* \xed
+c* \xee
+o* \xef
+p* \xf0
+r* \xf1
+*s \xf2
+s* \xf3
+t* \xf4
+u* \xf5
+f* \xf6
+x* \xf7
+q* \xf8
+w* \xf9
+j* \xfa
+v* \xfb
+o% \xfc
+u% \xfd
+w% \xfe
+dz \xff
diff --git a/share/colldef/map.ISO8859-9 b/share/colldef/map.ISO8859-9
new file mode 100644
index 0000000..6d97103
--- /dev/null
+++ b/share/colldef/map.ISO8859-9
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+PA \x80
+HO \x81
+BH \x82
+NH \x83
+IN \x84
+NL \x85
+SA \x86
+ES \x87
+HS \x88
+HJ \x89
+VS \x8a
+PD \x8b
+PU \x8c
+RI \x8d
+S2 \x8e
+S3 \x8f
+DC \x90
+P1 \x91
+P2 \x92
+TS \x93
+CC \x94
+MW \x95
+SG \x96
+EG \x97
+SS \x98
+GC \x99
+SC \x9a
+CI \x9b
+ST \x9c
+OC \x9d
+PM \x9e
+AC \x9f
+NS \xa0
+!I \xa1
+Ct \xa2
+Pd \xa3
+Cu \xa4
+Ye \xa5
+BB \xa6
+SE \xa7
+': \xa8
+Co \xa9
+-a \xaa
+<< \xab
+NO \xac
+-- \xad
+Rg \xae
+'m \xaf
+DG \xb0
++- \xb1
+2S \xb2
+3S \xb3
+'' \xb4
+My \xb5
+PI \xb6
+.M \xb7
+', \xb8
+1S \xb9
+-o \xba
+>> \xbb
+14 \xbc
+12 \xbd
+34 \xbe
+?I \xbf
+A! \xc0
+A' \xc1
+A> \xc2
+A? \xc3
+A: \xc4
+AA \xc5
+AE \xc6
+C, \xc7
+E! \xc8
+E' \xc9
+E> \xca
+E: \xcb
+I! \xcc
+I' \xcd
+I> \xce
+I: \xcf
+G( \xd0
+N? \xd1
+O! \xd2
+O' \xd3
+O> \xd4
+O? \xd5
+O: \xd6
+*X \xd7
+O/ \xd8
+U! \xd9
+U' \xda
+U> \xdb
+U: \xdc
+I. \xdd
+S, \xde
+ss \xdf
+a! \xe0
+a' \xe1
+a> \xe2
+a? \xe3
+a: \xe4
+aa \xe5
+ae \xe6
+c, \xe7
+e! \xe8
+e' \xe9
+e; \xea
+e: \xeb
+e. \xec
+i' \xed
+i> \xee
+i- \xef
+g( \xf0
+n? \xf1
+o! \xf2
+o' \xf3
+o> \xf4
+o? \xf5
+o: \xf6
+-: \xf7
+o/ \xf8
+u! \xf9
+u' \xfa
+u> \xfb
+u: \xfc
+i. \xfd
+s, \xfe
+y: \xff
diff --git a/share/colldef/map.KOI8-R b/share/colldef/map.KOI8-R
new file mode 100644
index 0000000..62dd2f45
--- /dev/null
+++ b/share/colldef/map.KOI8-R
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+hh \x80
+vv \x81
+dr \x82
+dl \x83
+ur \x84
+ul \x85
+vr \x86
+vl \x87
+dh \x88
+uh \x89
+vh \x8a
+TB \x8b
+LB \x8c
+FB \x8d
+lB \x8e
+RB \x8f
+.S \x90
+:S \x91
+?S \x92
+Iu \x93
+fS \x94
+Sb \x95
+RT \x96
+?2 \x97
+=< \x98
+>= \x99
+NS \x9a
+Il \x9b
+DG \x9c
+2S \x9d
+.M \x9e
+-: \x9f
+HH \xa0
+VV \xa1
+dR \xa2
+io \xa3
+Dr \xa4
+DR \xa5
+dL \xa6
+Dl \xa7
+LD \xa8
+uR \xa9
+Ur \xaa
+UR \xab
+uL \xac
+Ul \xad
+UL \xae
+vR \xaf
+Vr \xb0
+VR \xb1
+vL \xb2
+IO \xb3
+Vl \xb4
+VL \xb5
+dH \xb6
+Dh \xb7
+DH \xb8
+uH \xb9
+Uh \xba
+UH \xbb
+vH \xbc
+Vh \xbd
+VH \xbe
+Co \xbf
+ju \xc0
+a= \xc1
+b= \xc2
+c= \xc3
+d= \xc4
+e= \xc5
+f= \xc6
+g= \xc7
+h= \xc8
+i= \xc9
+j= \xca
+k= \xcb
+l= \xcc
+m= \xcd
+n= \xce
+o= \xcf
+p= \xd0
+ja \xd1
+r= \xd2
+s= \xd3
+t= \xd4
+u= \xd5
+z% \xd6
+v= \xd7
+%' \xd8
+y= \xd9
+z= \xda
+s% \xdb
+je \xdc
+sc \xdd
+c% \xde
+=' \xdf
+JU \xe0
+A= \xe1
+B= \xe2
+C= \xe3
+D= \xe4
+E= \xe5
+F= \xe6
+G= \xe7
+H= \xe8
+I= \xe9
+J= \xea
+K= \xeb
+L= \xec
+M= \xed
+N= \xee
+O= \xef
+P= \xf0
+JA \xf1
+R= \xf2
+S= \xf3
+T= \xf4
+U= \xf5
+Z% \xf6
+V= \xf7
+%" \xf8
+Y= \xf9
+Z= \xfa
+S% \xfb
+JE \xfc
+Sc \xfd
+C% \xfe
+=" \xff
diff --git a/share/colldef/map.KOI8-U b/share/colldef/map.KOI8-U
new file mode 100644
index 0000000..fd6a6e3
--- /dev/null
+++ b/share/colldef/map.KOI8-U
@@ -0,0 +1,175 @@
+# $FreeBSD$
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+Nb \x23
+DO \x24
+At \x40
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+'! \x60
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+hh \x80
+vv \x81
+dr \x82
+dl \x83
+ur \x84
+ul \x85
+vr \x86
+vl \x87
+dh \x88
+uh \x89
+vh \x8a
+TB \x8b
+LB \x8c
+FB \x8d
+lB \x8e
+RB \x8f
+.S \x90
+:S \x91
+?S \x92
+Iu \x93
+fS \x94
+Sb \x95
+RT \x96
+?2 \x97
+=< \x98
+>= \x99
+NS \x9a
+Il \x9b
+DG \x9c
+2S \x9d
+.M \x9e
+-: \x9f
+HH \xa0
+VV \xa1
+dR \xa2
+io \xa3
+ie \xa4
+DR \xa5
+ii \xa6
+yi \xa7
+LD \xa8
+uR \xa9
+Ur \xaa
+UR \xab
+uL \xac
+g3 \xad
+UL \xae
+vR \xaf
+Vr \xb0
+VR \xb1
+vL \xb2
+IO \xb3
+IE \xb4
+VL \xb5
+II \xb6
+YI \xb7
+DH \xb8
+uH \xb9
+Uh \xba
+UH \xbb
+vH \xbc
+G3 \xbd
+VH \xbe
+Co \xbf
+ju \xc0
+a= \xc1
+b= \xc2
+c= \xc3
+d= \xc4
+e= \xc5
+f= \xc6
+g= \xc7
+h= \xc8
+i= \xc9
+j= \xca
+k= \xcb
+l= \xcc
+m= \xcd
+n= \xce
+o= \xcf
+p= \xd0
+ja \xd1
+r= \xd2
+s= \xd3
+t= \xd4
+u= \xd5
+z% \xd6
+v= \xd7
+%' \xd8
+y= \xd9
+z= \xda
+s% \xdb
+je \xdc
+sc \xdd
+c% \xde
+=' \xdf
+JU \xe0
+A= \xe1
+B= \xe2
+C= \xe3
+D= \xe4
+E= \xe5
+F= \xe6
+G= \xe7
+H= \xe8
+I= \xe9
+J= \xea
+K= \xeb
+L= \xec
+M= \xed
+N= \xee
+O= \xef
+P= \xf0
+JA \xf1
+R= \xf2
+S= \xf3
+T= \xf4
+U= \xf5
+Z% \xf6
+V= \xf7
+%" \xf8
+Y= \xf9
+Z= \xfa
+S% \xfb
+JE \xfc
+Sc \xfd
+C% \xfe
+=" \xff
diff --git a/share/colldef/map.PT154 b/share/colldef/map.PT154
new file mode 100644
index 0000000..79b2fb3
--- /dev/null
+++ b/share/colldef/map.PT154
@@ -0,0 +1,258 @@
+# $FreeBSD$
+# Birsh T <birsh@mail.kz>, 2003-12-12
+NU \x00
+SH \x01
+SX \x02
+EX \x03
+ET \x04
+EQ \x05
+AK \x06
+BL \x07
+BS \x08
+HT \x09
+LF \x0a
+VT \x0b
+FF \x0c
+CR \x0d
+SO \x0e
+SI \x0f
+DL \x10
+D1 \x11
+D2 \x12
+D3 \x13
+D4 \x14
+NK \x15
+SY \x16
+EB \x17
+CN \x18
+EM \x19
+SB \x1a
+EC \x1b
+FS \x1c
+GS \x1d
+RS \x1e
+US \x1f
+SP \x20
+! \x21
+" \x22
+Nb \x23
+DO \x24
+% \x25
+& \x26
+' \x27
+( \x28
+) \x29
+* \x2a
++ \x2b
+, \x2c
+- \x2d
+. \x2e
+/ \x2f
+0 \x30
+1 \x31
+2 \x32
+3 \x33
+4 \x34
+5 \x35
+6 \x36
+7 \x37
+8 \x38
+9 \x39
+: \x3a
+; \x3b
+< \x3c
+= \x3d
+> \x3e
+? \x3f
+At \x40
+A \x41
+B \x42
+C \x43
+D \x44
+E \x45
+F \x46
+G \x47
+H \x48
+I \x49
+J \x4a
+K \x4b
+L \x4c
+M \x4d
+N \x4e
+O \x4f
+P \x50
+Q \x51
+R \x52
+S \x53
+T \x54
+U \x55
+V \x56
+W \x57
+X \x58
+Y \x59
+Z \x5a
+<( \x5b
+// \x5c
+)> \x5d
+'> \x5e
+_ \x5f
+'! \x60
+a \x61
+b \x62
+c \x63
+d \x64
+e \x65
+f \x66
+g \x67
+h \x68
+i \x69
+j \x6a
+k \x6b
+l \x6c
+m \x6d
+n \x6e
+o \x6f
+p \x70
+q \x71
+r \x72
+s \x73
+t \x74
+u \x75
+v \x76
+w \x77
+x \x78
+y \x79
+z \x7a
+(! \x7b
+!! \x7c
+!) \x7d
+'? \x7e
+DT \x7f
+Z. \x80
+G- \x81
+U' \x82
+g- \x83
+:9 \x84
+.3 \x85
+C. \x86
+Y" \x87
+H% \x88
+y" \x89
+BK \x8a
+I' \x8b
+N% \x8c
+K% \x8d
+HH \x8e
+C! \x8f
+z. \x90
+'6 \x91
+'9 \x92
+"6 \x93
+"9 \x94
+sb \x95
+-N \x96
+-M \x97
+h% \x98
+c. \x99
+bk \x9a
+i' \x9b
+n% \x9c
+k% \x9d
+hh \x9e
+c! \x9f
+NS \xa0
+V% \xa1
+v% \xa2
+J% \xa3
+O- \xa4
+X% \xa5
+Y- \xa6
+SE \xa7
+IO \xa8
+Co \xa9
+HW \xaa
+<< \xab
+NO \xac
+u' \xad
+Rg \xae
+K! \xaf
+DG \xb0
+y- \xb1
+II \xb2
+ii \xb3
+x% \xb4
+o- \xb5
+PI \xb6
+.M \xb7
+io \xb8
+N0 \xb9
+hw \xba
+>> \xbb
+j% \xbc
+DS \xbd
+ds \xbe
+k! \xbf
+A= \xc0
+B= \xc1
+V= \xc2
+G= \xc3
+D= \xc4
+E= \xc5
+Z% \xc6
+Z= \xc7
+I= \xc8
+J= \xc9
+K= \xca
+L= \xcb
+M= \xcc
+N= \xcd
+O= \xce
+P= \xcf
+R= \xd0
+S= \xd1
+T= \xd2
+U= \xd3
+F= \xd4
+H= \xd5
+C= \xd6
+C% \xd7
+S% \xd8
+Sc \xd9
+=" \xda
+Y= \xdb
+%" \xdc
+JE \xdd
+JU \xde
+JA \xdf
+a= \xe0
+b= \xe1
+v= \xe2
+g= \xe3
+d= \xe4
+e= \xe5
+z% \xe6
+z= \xe7
+i= \xe8
+j= \xe9
+k= \xea
+l= \xeb
+m= \xec
+n= \xed
+o= \xee
+p= \xef
+r= \xf0
+s= \xf1
+t= \xf2
+u= \xf3
+f= \xf4
+h= \xf5
+c= \xf6
+c% \xf7
+s% \xf8
+sc \xf9
+=' \xfa
+y= \xfb
+%' \xfc
+je \xfd
+ju \xfe
+ja \xff
diff --git a/share/colldef/no_NO.ISO8859-1.src b/share/colldef/no_NO.ISO8859-1.src
new file mode 100644
index 0000000..fe615a2
--- /dev/null
+++ b/share/colldef/no_NO.ISO8859-1.src
@@ -0,0 +1,42 @@
+# Norwegian/ISO 8859-1 (backward compatible with ASCII)
+#
+# (Based on the Swedish sv_SE.ISO_8859-1)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-1
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<A?>);\
+ B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O?>,<O/>>);\
+ P;...;T;(U,<U'>,<U!>,<U/>>);\
+ V;W;X;(Y,<Y'>,<U:>);Z;\
+ <TH>;\
+ (<AE>,<A:>);(<O//>,<O:>);<AA>;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<a?>);\
+ b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o?>,<o/>>);\
+ p;...;t;(u,<u'>,<u!>,<u/>>);\
+ v;w;x;(y,<y'>,<y:>,<u:>);z;\
+ <th>;\
+ (<ae>,<a:>);(<o//>,<o:>);<aa>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<ss>;<-o>
diff --git a/share/colldef/no_NO.ISO8859-15.src b/share/colldef/no_NO.ISO8859-15.src
new file mode 100644
index 0000000..3d5e1e8
--- /dev/null
+++ b/share/colldef/no_NO.ISO8859-15.src
@@ -0,0 +1,42 @@
+# Norwegian/ISO 8859-15 (backward compatible with ASCII)
+#
+# (Based on the Swedish sv_SE.ISO_8859-15)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-15
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<A?>);\
+ B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O?>,<O/>>,<OE>);\
+ P;Q;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>);\
+ V;W;X;(Y,<Y'>,<Y:>,<U:>);(Z,<Z<>);\
+ <TH>;\
+ (<AE>,<A:>);(<O//>,<O:>);<AA>;\
+#
+ [;\\;];^;_;<'m>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<a?>);\
+ b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o?>,<o/>>,<oe>);\
+ p;q;r;(s,<s<>,<ss>);t;(u,<u'>,<u!>,<u/>>);\
+ v;w;x;(y,<y'>,<y:>,<u:>);(z,<z<>);\
+ <th>;\
+ (<ae>,<a:>);(<o//>,<o:>);<aa>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/pl_PL.ISO8859-2.src b/share/colldef/pl_PL.ISO8859-2.src
new file mode 100644
index 0000000..6518d72
--- /dev/null
+++ b/share/colldef/pl_PL.ISO8859-2.src
@@ -0,0 +1,37 @@
+# Latin2 (for Polish) by Michal Pasternak <michal@pasternak.w.lub.pl>
+# with much help from Adam Liberacki and Jan Srzednicki
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-2
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;\";<Nb>;\
+ <Cu>;<DO>;\
+ %;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<At>;\
+# capital
+ (A,<A'>,<A/>>,<A:>,<A(>);\
+ <A;>;B;(C,<C,>,<C<>);<C'>;(D,<D<>,<D//>);(E,<E'>,<E:>,<E<>);<E;>;\
+ F;G;H;(I,<I'>,<I/>>);\
+ J;K;(L,<L<>,<L'>);<L//>;M;(N,<N<>);<N'>;(O,<O/>>,<O:>,<O">);<O'>;\
+ P;Q;(R,<R'>,<R<>);(S,<S<>,<S,>);<S'>;(T,<T<>,<T,>);\
+ (U,<U'>,<U:>,<U0>,<U">);\
+ V;W;X;(Y,<Y'>);(Z,<Z<>);<Z'>;<Z.>;\
+#
+ [;\\;];^;<':>;<'">;<'<>;<'(>;_;<''>;`;\
+# small
+ (a,<a'>,<a/>>,<a:>,<a(>);<a;>;\
+ b;(c,<c,>,<c<>);<c'>;(d,<d<>,<d//>);(e,<e'>,<e:>,<e<>);<e;>;\
+ f;g;h;(i,<i'>,<i/>>);\
+ j;k;(l,<l<>,<l'>);<l//>;m;(n,<n<>);<n'>;(o,<o/>>,<o:>,<o">);<o'>;\
+ p;q;(r,<r'>,<r<>);(s,<s<>,<s,>,<ss>);<s'>;(t,<t<>,<t,>);\
+ (u,<u'>,<u:>,<u0>,<u">);\
+ v;w;x;(y,<y'>);(z,<z<>);<z'>;<z.>;\
+#
+ \{;|;\};~;<DG>;<DT>
diff --git a/share/colldef/ru_RU.CP1251.src b/share/colldef/ru_RU.CP1251.src
new file mode 100644
index 0000000..06e0641
--- /dev/null
+++ b/share/colldef/ru_RU.CP1251.src
@@ -0,0 +1,43 @@
+# CP1251 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.CP1251
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<"6>;<"9>;<<<>;</>/>>;\
+ <Nb>;<Eu>;<Cu>;<DO>;\
+ %;&;';<'6>;<'9>;\(;\);*;+;<+->;\,;<-->;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
+ <I=>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;<U=>;<F=>;<H=>;<C=>;<C%>;<S%>;<Sc>;\
+ <=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
+ <i=>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;<u=>;<f=>;<h=>;<c=>;<c%>;<s%>;<sc>;\
+ <='>;<y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;\
+ <-N>;<-M>;<.9>;<:9>;</->;</=>;<.3>;<%0>;<<1>;</>1>;\
+ <N0>;<TM>;<sb>;<FB>;<DT>;\
+#
+ <D%>;<G%>;<g%>;\
+ <LJ>;<NJ>;<KJ>;<Ts>;<DZ>;\
+ <d%>;\
+ <lj>;<nj>;<kj>;<ts>;<dz>;\
+ <V%>;<v%>;<J%>;<G3>;\
+ <IE>;<YI>;\
+ <II>;<ii>;<g3>;\
+ <ie>;<j%>;<DS>;<ds>;<yi>
diff --git a/share/colldef/ru_RU.CP866.src b/share/colldef/ru_RU.CP866.src
new file mode 100644
index 0000000..425cb30
--- /dev/null
+++ b/share/colldef/ru_RU.CP866.src
@@ -0,0 +1,40 @@
+# CP866 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.CP866
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<Nb>;<Cu>;<DO>;\
+ %;&;';\(;\);*;+;\,;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
+ <I=>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;<U=>;<F=>;<H=>;<C=>;<C%>;<S%>;<Sc>;\
+ <=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
+ <i=>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;<u=>;<f=>;<h=>;<c=>;<c%>;<s%>;<sc>;\
+ <='>;<y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;|;\};~;<.M>;<DG>;<Sb>;<N0>;<RT>;\
+#
+ <hh>;<HH>;<vv>;<VV>;<dr>;<dR>;<Dr>;<DR>;\
+ <dl>;<dL>;<Dl>;<LD>;<ur>;<uR>;<Ur>;<UR>;\
+ <ul>;<uL>;<Ul>;<UL>;<vr>;<vR>;<Vr>;<VR>;\
+ <vl>;<vL>;<Vl>;<VL>;<dh>;<dH>;<Dh>;<DH>;\
+ <uh>;<uH>;<Uh>;<UH>;<vh>;<vH>;<Vh>;<VH>;\
+ <TB>;<LB>;<FB>;<lB>;<RB>;<.S>;<:S>;<?S>;<fS>;<DT>;\
+#
+ <IE>;<ie>;<YI>;<yi>;<V%>;<v%>
diff --git a/share/colldef/ru_RU.ISO8859-5.src b/share/colldef/ru_RU.ISO8859-5.src
new file mode 100644
index 0000000..2fd9f5a
--- /dev/null
+++ b/share/colldef/ru_RU.ISO8859-5.src
@@ -0,0 +1,39 @@
+# Russian part of ISO8859-5 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-5
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;\,;<-->;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
+ <I=>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;<U=>;<F=>;<H=>;<C=>;<C%>;<S%>;<Sc>;\
+ <=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
+ <i=>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;<u=>;<f=>;<h=>;<c=>;<c%>;<s%>;<sc>;\
+ <='>;<y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;|;\};~;<N0>;<DT>;\
+#
+ <PA>;<HO>;<BH>;<NH>;<IN>;<NL>;\
+ <SA>;<ES>;<HS>;<HJ>;<VS>;<PD>;<PU>;<RI>;<S2>;\
+ <S3>;<DC>;<P1>;<P2>;<TS>;<CC>;<MW>;<SG>;<EG>;\
+ <SS>;<GC>;<SC>;<CI>;<ST>;<OC>;<PM>;<AC>;<D%>;\
+ <G%>;<IE>;<DS>;<II>;<YI>;<J%>;<LJ>;<NJ>;<Ts>;\
+ <KJ>;<V%>;<DZ>;<d%>;<g%>;<ie>;<ds>;\
+ <ii>;<yi>;<j%>;<lj>;<nj>;<ts>;<kj>;<SE>;<v%>;<dz>
diff --git a/share/colldef/ru_RU.KOI8-R.src b/share/colldef/ru_RU.KOI8-R.src
new file mode 100644
index 0000000..f7c69d2
--- /dev/null
+++ b/share/colldef/ru_RU.KOI8-R.src
@@ -0,0 +1,39 @@
+# koi8-r (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.KOI8-R
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;<-:>;\,;-;.;/;\
+# digits
+ 0;1;(2,<2S>);3;...;9;\
+#
+ :;\;;\<;<=<>;=;</>=>;>;?;<Co>;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IO>;<Z%>;<Z=>;\
+ <I=>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;<U=>;<F=>;<H=>;<C=>;<C%>;<S%>;<Sc>;\
+ <=">;<Y=>;<%">;<JE>;<JU>;<JA>;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<io>;<z%>;<z=>;\
+ <i=>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;<u=>;<f=>;<h=>;<c=>;<c%>;<s%>;<sc>;\
+ <='>;<y=>;<%'>;<je>;<ju>;<ja>;\
+#
+ \{;|;\};~;<.M>;<DG>;\
+#
+ <Sb>;<RT>;<?2>;<Iu>;<Il>;\
+ <hh>;<HH>;<vv>;<VV>;<dr>;<dR>;<Dr>;<DR>;\
+ <dl>;<dL>;<Dl>;<LD>;<ur>;<uR>;<Ur>;<UR>;\
+ <ul>;<uL>;<Ul>;<UL>;<vr>;<vR>;<Vr>;<VR>;\
+ <vl>;<vL>;<Vl>;<VL>;<dh>;<dH>;<Dh>;<DH>;\
+ <uh>;<uH>;<Uh>;<UH>;<vh>;<vH>;<Vh>;<VH>;\
+ <TB>;<LB>;<FB>;<lB>;<RB>;<.S>;<:S>;<?S>;<fS>;<DT>
diff --git a/share/colldef/sl_SI.ISO8859-2.src b/share/colldef/sl_SI.ISO8859-2.src
new file mode 100644
index 0000000..db5db89
--- /dev/null
+++ b/share/colldef/sl_SI.ISO8859-2.src
@@ -0,0 +1,39 @@
+#
+# Slovenian collation sequence
+# 2003-03-20 simon.zekar@literal.si
+#
+# $FreeBSD$
+#
+
+charmap map.ISO8859-2
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;\";<Nb>;\
+ <Cu>;<DO>;\
+ %;&;<',>;<';>;';\(;\);*;+;<-:>;<*X>;\,;<-->;-;.;<'.>;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<At>;\
+# capital
+ (A,<A'>,<A/>>,<A:>,<A;>,<A(>);\
+ B;(C,<C,>);<C<>;<C'>;(D,<D<>);<D//>;(E,<E'>,<E:>,<E;>,<E<>);\
+ F;G;H;(I,<I'>,<I/>>);\
+ J;K;(L,<L//>,<L<>,<L'>);M;(N,<N'>,<N<>);(O,<O'>,<O/>>,<O:>,<O">);\
+ P;Q;(R,<R'>,<R<>);(S,<S'>,<S,>);<S<>;(T,<T<>,<T,>);\
+ (U,<U'>,<U:>,<U0>,<U">);\
+ V;W;X;(Y,<Y'>);(Z,<Z'>,<Z.>);<Z<>;\
+#
+ [;\\;];^;<':>;<'">;<'<>;<'(>;_;<''>;`;\
+# small
+ (a,<a'>,<a/>>,<a:>,<a;>,<a(>);\
+ b;(c,<c,>);<c<>;<c'>;(d,<d<>);<d//>;(e,<e'>,<e:>,<e;>,<e<>);\
+ f;g;h;(i,<i'>,<i/>>);\
+ j;k;(l,<l//>,<l<>,<l'>);m;(n,<n'>,<n<>);(o,<o'>,<o/>>,<o:>,<o">);\
+ p;q;(r,<r'>,<r<>);(s,<s'>,<s,>,<ss>);<s<>;(t,<t<>,<t,>);\
+ (u,<u'>,<u:>,<u0>,<u">);\
+ v;w;x;(y,<y'>);(z,<z'>,<z.>);<z<>;\
+#
+ \{;|;\};~;<DG>;<DT>
diff --git a/share/colldef/sr_YU.ISO8859-5.src b/share/colldef/sr_YU.ISO8859-5.src
new file mode 100644
index 0000000..ce2f4d2
--- /dev/null
+++ b/share/colldef/sr_YU.ISO8859-5.src
@@ -0,0 +1,38 @@
+# Serbian part of ISO8859-5 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-5
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;\,;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<D%>;<E=>;<Z%>;<Z=>;\
+ <I=>;<J%>;<K=>;<L=>;<LJ>;<M=>;<N=>;<NJ>;<O=>;\
+ <P=>;<R=>;<S=>;<T=>;<Ts>;<U=>;<F=>;<H=>;<C=>;\
+ <C%>;<DZ>;<S%>;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<d%>;<e=>;<z%>;<z=>;\
+ <i=>;<j%>;<k=>;<l=>;<lj>;<m=>;<n=>;<nj>;<o=>;\
+ <p=>;<r=>;<s=>;<t=>;<ts>;<u=>;<f=>;<h=>;<c=>;\
+ <c%>;<dz>;<s%>;\
+#
+ \{;\|;\};\~;<DT>;<PA>;<HO>;<BH>;<NH>;<IN>;<NL>;\
+ <SA>;<ES>;<HS>;<HJ>;<VS>;<PD>;<PU>;<RI>;<S2>;<S3>;\
+ <DC>;<P1>;<P2>;<TS>;<CC>;<MW>;<SG>;<EG>;<SS>;<GC>;\
+ <SC>;<CI>;<ST>;<OC>;<PM>;<AC>;<IO>;<G%>;<IE>;<DS>;\
+ <II>;<YI>;<KJ>;<-->;<V%>;<J=>;<Sc>;<=">;<Y=>;<%">;\
+ <JE>;<JU>;<JA>;<j=>;<sc>;<='>;<y=>;<%'>;<je>;<ju>;\
+ <ja>;<N0>;<io>;<g%>;<ie>;<ds>;<ii>;<yi>;<kj>;<SE>;\
+ <v%>
diff --git a/share/colldef/sv_SE.ISO8859-1.src b/share/colldef/sv_SE.ISO8859-1.src
new file mode 100644
index 0000000..13e4e4c
--- /dev/null
+++ b/share/colldef/sv_SE.ISO8859-1.src
@@ -0,0 +1,40 @@
+# Swedish/ISO 8859-1 (backward compatible with ASCII)
+#
+# (Based on the German de_DE.ISO_8859-1)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-1
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<A?>);\
+ B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O?>,<O/>>);\
+ P;...;T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>);Z;<AA>;(<A:>,<AE>);(<O:>,<O//>);\
+ <TH>;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<a?>);\
+ b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o?>,<o/>>);\
+ p;...;t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);z;<aa>;(<a:>,<ae>);(<o:>,<o//>);\
+ <th>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<ss>;<-o>
diff --git a/share/colldef/sv_SE.ISO8859-15.src b/share/colldef/sv_SE.ISO8859-15.src
new file mode 100644
index 0000000..f6d17e9
--- /dev/null
+++ b/share/colldef/sv_SE.ISO8859-15.src
@@ -0,0 +1,40 @@
+# Swedish/DIS 8859-15 (backward compatible with ASCII)
+#
+# (Based on the German de_DE.ISO_8859-15)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-15
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Eu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ 0;(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<A?>);\
+ B;(C,<C,>);(D,<D->);(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;H;(I,<I'>,<I!>,<I/>>,<I:>);\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O?>,<O/>>,<OE>);\
+ P;Q;R;(S,<S<>);T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;(Y,<Y'>,<Y:>);(Z,<Z<>);<AA>;(<A:>,<AE>);(<O:>,<O//>);\
+ <TH>;\
+#
+ [;\\;];^;_;<'m>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<a?>);\
+ b;(c,<c,>);(d,<d->);(e,<e'>,<e!>,<e/>>,<e:>);\
+ f;g;h;(i,<i'>,<i!>,<i/>>,<i:>);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o?>,<o/>>,<oe>);\
+ p;q;r;(s,<s<>,<ss>);t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y'>,<y:>);(z,<z<>);<aa>;(<a:>,<ae>);(<o:>,<o//>);\
+ <th>;\
+#
+ \{;<NO>;|;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/tr_TR.ISO8859-9.src b/share/colldef/tr_TR.ISO8859-9.src
new file mode 100644
index 0000000..89db7b5
--- /dev/null
+++ b/share/colldef/tr_TR.ISO8859-9.src
@@ -0,0 +1,36 @@
+# latin5 (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-9
+order \
+# controls
+ <NU>;...;<US>;<PA>;...;<AC>;\
+#
+ <NS>;<SP>;!;<!I>;\";<<<>;</>/>>;<Nb>;\
+ <Cu>;<Ct>;<DO>;<Pd>;<Ye>;\
+ %;&;<',>;';\(;\);*;+;<+->;<-:>;<*X>;\,;<-->;-;.;/;\
+# digits
+ (0,<14>,<12>,<34>);(1,<1S>);(2,<2S>);(3,<3S>);4;...;9;\
+#
+ :;\;;\<;=;>;?;<?I>;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ (A,<A'>,<A!>,<A/>>,<AA>,<A:>,<A?>,<AE>);\
+ B;(C,<C,>);D;(E,<E'>,<E!>,<E/>>,<E:>);\
+ F;G;<G(>;H;(I,<I'>,<I!>,<I/>>,<I:>);<I.>;\
+ J;...;M;(N,<N?>);(O,<O'>,<O!>,<O/>>,<O:>,<O?>,<O//>);\
+ P;...;S;<S,>;T;(U,<U'>,<U!>,<U/>>,<U:>);\
+ V;W;X;Y;Z;\
+#
+ [;\\;];^;<':>;_;<'m>;<''>;`;\
+# small
+ (a,<a'>,<a!>,<a/>>,<aa>,<a:>,<a?>,<ae>);\
+ b;(c,<c,>);d;(e,<e'>,<e!>,<e;>,<e:>);\
+ f;g;<g(>;h;<i.>;(i,<i'>,<e.>,<i/>>,<i->);\
+ j;...;m;(n,<n?>);(o,<o'>,<o!>,<o/>>,<o:>,<o?>,<o//>);\
+ p;...;s;<s,>;<ss>;t;(u,<u'>,<u!>,<u/>>,<u:>);\
+ v;w;x;(y,<y:>);z;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;<DT>;\
+# remains
+ <-a>;<-o>
diff --git a/share/colldef/uk_UA.CP1251.src b/share/colldef/uk_UA.CP1251.src
new file mode 100644
index 0000000..6bf3454
--- /dev/null
+++ b/share/colldef/uk_UA.CP1251.src
@@ -0,0 +1,42 @@
+# CP1251 (for Ukrainian)
+#
+# $FreeBSD$
+#
+charmap map.CP1251
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<"6>;<"9>;<<<>;</>/>>;\
+ <Nb>;<Eu>;<Cu>;<DO>;\
+ %;&;';<'6>;<'9>;\(;\);*;+;<+->;\,;<-->;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<SE>;<PI>;<Co>;<Rg>;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<G3>;<D=>;<E=>;<IE>;<Z%>;\
+ <Z=>;<I=>;<II>;<YI>;<J=>;<K=>;<L=>;<M=>;<N=>;\
+ <O=>;<P=>;<R=>;<S=>;<T=>;<U=>;<F=>;<H=>;<C=>;\
+ <C%>;<S%>;<Sc>;<JU>;<JA>;<%">;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<g3>;<d=>;<e=>;<ie>;<z%>;\
+ <z=>;<i=>;<ii>;<yi>;<j=>;<k=>;<l=>;<m=>;<n=>;\
+ <o=>;<p=>;<r=>;<s=>;<t=>;<u=>;<f=>;<h=>;<c=>;\
+ <c%>;<s%>;<sc>;<ju>;<ja>;<%'>;\
+#
+ \{;<NO>;|;<BB>;\};~;<.M>;<DG>;<My>;\
+ <-N>;<-M>;<.9>;<:9>;</->;</=>;<.3>;<%0>;<<1>;</>1>;\
+ <N0>;<TM>;<sb>;<FB>;<DT>;\
+#
+ <D%>;<G%>;<g%>;\
+ <LJ>;<NJ>;<KJ>;<Ts>;<DZ>;\
+ <d%>;\
+ <lj>;<nj>;<kj>;<ts>;<dz>;\
+ <V%>;<v%>;<J%>;\
+ <j%>;<DS>;<ds>;\
+ <IO>;<io>;<Y=>;<y=>;<=">;<='>;<JE>;<je>
diff --git a/share/colldef/uk_UA.ISO8859-5.src b/share/colldef/uk_UA.ISO8859-5.src
new file mode 100644
index 0000000..4024e2d
--- /dev/null
+++ b/share/colldef/uk_UA.ISO8859-5.src
@@ -0,0 +1,37 @@
+# Ukrainian part of ISO8859-5 with russian letters (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.ISO8859-5
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;\,;-;.;/;\
+# digits
+ 0;...;9;\
+#
+ :;\;;\<;=;>;?;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<D=>;<E=>;<IE>;<IO>;<Z%>;\
+ <Z=>;<I=>;<II>;<YI>;<J=>;<K=>;<L=>;<M=>;<N=>;\
+ <O=>;<P=>;<R=>;<S=>;<T=>;<U=>;<F=>;<H=>;<C=>;\
+ <C%>;<S%>;<Sc>;<=">;<Y=>;<JE>;<JU>;<JA>;<%">;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<d=>;<e=>;<ie>;<io>;<z%>;\
+ <z=>;<i=>;<ii>;<yi>;<j=>;<k=>;<l=>;<m=>;<n=>;\
+ <o=>;<p=>;<r=>;<s=>;<t=>;<u=>;<f=>;<h=>;<c=>;\
+ <c%>;<s%>;<sc>;<='>;<y=>;<je>;<ju>;<ja>;<%'>;\
+#
+ \{;|;\};~;<DT>;<PA>;<HO>;<BH>;<NH>;<IN>;<NL>;\
+ <SA>;<ES>;<HS>;<HJ>;<VS>;<PD>;<PU>;<RI>;<S2>;\
+ <S3>;<DC>;<P1>;<P2>;<TS>;<CC>;<MW>;<SG>;<EG>;\
+ <SS>;<GC>;<SC>;<CI>;<ST>;<OC>;<PM>;<AC>;<D%>;\
+ <G%>;<DS>;<J%>;<LJ>;<NJ>;<Ts>;<KJ>;<-->;<V%>;\
+ <DZ>;<N0>;<d%>;<g%>;<ds>;<j%>;<lj>;\
+ <nj>;<ts>;<kj>;<SE>;<v%>;<dz>
diff --git a/share/colldef/uk_UA.KOI8-U.src b/share/colldef/uk_UA.KOI8-U.src
new file mode 100644
index 0000000..bb31d23
--- /dev/null
+++ b/share/colldef/uk_UA.KOI8-U.src
@@ -0,0 +1,39 @@
+# koi8-u (backward compatible with ASCII)
+#
+# $FreeBSD$
+#
+charmap map.KOI8-U
+order \
+# controls
+ <NU>;...;<US>;\
+#
+ <NS>;<SP>;!;\";<Nb>;<DO>;\
+ %;&;';\(;\);*;+;<-:>;\,;-;.;/;\
+# digits
+ 0;1;(2,<2S>);3;...;9;\
+#
+ :;\;;\<;<=<>;=;</>=>;>;?;<Co>;<At>;\
+# capital
+ A;...;Z;\
+ <A=>;<B=>;<V=>;<G=>;<G3>;<D=>;<E=>;<IE>;<IO>;<Z%>;<Z=>;\
+ <I=>;<II>;<YI>;<J=>;<K=>;<L=>;<M=>;<N=>;<O=>;<P=>;<R=>;\
+ <S=>;<T=>;<U=>;<F=>;<H=>;<C=>;<C%>;<S%>;<Sc>;\
+ <=">;<Y=>;<JE>;<JU>;<JA>;<%">;\
+#
+ [;\\;];^;_;`;\
+# small
+ a;...;z;\
+ <a=>;<b=>;<v=>;<g=>;<g3>;<d=>;<e=>;<ie>;<io>;<z%>;<z=>;\
+ <i=>;<ii>;<yi>;<j=>;<k=>;<l=>;<m=>;<n=>;<o=>;<p=>;<r=>;\
+ <s=>;<t=>;<u=>;<f=>;<h=>;<c=>;<c%>;<s%>;<sc>;\
+ <='>;<y=>;<je>;<ju>;<ja>;<%'>;\
+#
+ \{;|;\};~;<.M>;<DG>;\
+#
+ <Sb>;<RT>;<?2>;<Iu>;<Il>;\
+ <hh>;<HH>;<vv>;<VV>;<dr>;<dR>;<DR>;\
+ <dl>;<LD>;<ur>;<uR>;<Ur>;<UR>;\
+ <ul>;<uL>;<UL>;<vr>;<vR>;<Vr>;<VR>;\
+ <vl>;<vL>;<VL>;<dh>;<DH>;\
+ <uh>;<uH>;<Uh>;<UH>;<vh>;<vH>;<VH>;\
+ <TB>;<LB>;<FB>;<lB>;<RB>;<.S>;<:S>;<?S>;<fS>;<DT>
diff --git a/share/dict/Makefile b/share/dict/Makefile
new file mode 100644
index 0000000..d9e455d
--- /dev/null
+++ b/share/dict/Makefile
@@ -0,0 +1,11 @@
+# @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+NO_OBJ=
+
+# XXX MISSING: connectives words
+FILES= README propernames web2 web2a freebsd
+FILESDIR= ${BINDIR}/dict
+SYMLINKS= web2 ${FILESDIR}/words
+
+.include <bsd.prog.mk>
diff --git a/share/dict/README b/share/dict/README
new file mode 100644
index 0000000..1a51c20
--- /dev/null
+++ b/share/dict/README
@@ -0,0 +1,39 @@
+# @(#)README 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+WEB ---- (introduction provided by jaw@riacs) -------------------------
+
+Welcome to web2 (Webster's Second International) all 234,936 words worth.
+The 1934 copyright has lapsed, according to the supplier. The
+supplemental 'web2a' list contains hyphenated terms as well as assorted
+noun and adverbial phrases. The wordlist makes a dandy 'grep' victim.
+
+ -- James A. Woods {ihnp4,hplabs}!ames!jaw (or jaw@riacs)
+
+Dictionaries for other languages, e.g. Afrikaans, American, Aussie,
+Chinese, Croatian, Czech, Danish, Dutch, Esperanto, Finnish, French,
+German, Hindi, Hungarian, Italian, Japanese, Latin, Norwegian, Polish,
+Russian, Spanish, Swahili, Swedish, Yiddish, are available
+at ftp://ftp.ox.ac.uk/pub/wordlists.
+
+Country names are stored in the file /usr/share/misc/iso3166.
+
+
+FreeBSD Maintenance Notes ---------------------------------------------
+
+Note that FreeBSD is not maintaining a historical document, we're
+maintaining a list of current [American] English spellings.
+
+A few words have been removed because their spellings have depreciated.
+This list of words includes:
+ corelation (and its derivatives) "correlation" is the preferred spelling
+ freen typographical error in original file
+ freend archaic spelling no longer in use;
+ masks common typo in modern text
+
+--
+
+A list of technical terms has been added in the file 'freebsd'. This
+word list contains FreeBSD/Unix lexicon that is used by the system
+documentation. It makes a great ispell(1) personal dictionary to
+supplement the standard English language dictionary.
diff --git a/share/dict/freebsd b/share/dict/freebsd
new file mode 100644
index 0000000..66f57a5
--- /dev/null
+++ b/share/dict/freebsd
@@ -0,0 +1,283 @@
+$FreeBSD$
+ABI
+ACL
+ACPI
+ADSL
+AGP
+AMD
+API
+APIC
+ATAPI
+ATX
+AVI
+AXP
+AfterStep
+AlphaBIOS
+Appletalk
+Athlon
+BIBA
+BOFs
+BOOTP
+BSDCon
+BSDi
+Barnes
+BeOS
+Bluetooth
+Border's
+Broadcom
+CDROM
+CDROMs
+CDs
+CERT
+CPAN
+CTM
+CVS
+CVSROOT
+CVSup
+Celeron
+Chern
+CompUSA
+Compaq
+DEVBUF
+DNS
+DTD
+DVD
+DVI
+Dilbert
+DocBook
+EIDE
+EISA
+Ensoniq
+Ermilov
+Estonia
+EtherExpress
+Euro
+FDDI
+FireWire
+FreeBSD
+FreeBSD's
+FreshPorts
+Fry's
+GCC
+GEOM
+GDBE
+GPL
+Ghostscript
+Greenman
+HTT
+Haynes
+Hotmail
+Hubbard
+IBCS
+ICMP
+IPsec
+IPX
+IRC
+IRQ
+ISA
+ISBN
+ISDN
+ISP
+Iomega
+Itanium
+JDK
+JRE
+JSP
+JVM
+JadeTeX
+KDE
+KLD
+KOffice
+KSE
+Kennaway
+Kerberos
+Kerneltrap
+Kuriyama
+LAN
+LDAP
+LGPL
+LLC
+LOMAC
+LPD
+LPR
+Leffler
+Lehey
+LinuxDoc
+MBR
+MBone
+MFC
+MIPS
+MP
+MPEG
+MTA
+MUA
+Macromedia
+Mallett
+Maplesoft
+MathWorks
+Mathematica
+Matrox
+McKusick
+Mozilla
+MySQL
+NAI
+NDIS
+NIC
+NIS
+NNTP
+NSS
+NSSwitch
+NT
+NTFS
+NTP
+Nasdaq
+NetBIOS
+NetBSD
+Newbus
+Newsflash
+Nokia
+Novell
+OPIE
+OSF
+OSnews
+OpenBSD
+OpenGL
+OpenOffice
+OpenSSH
+OpenSSL
+PAE
+PCI
+PDF
+PID
+PLIP
+PPC
+PPPoE
+PR
+PXE
+Perl
+Photoshop
+PicoBSD
+PnP
+PostScript
+Postgres
+PowerPC
+QIC
+Qt
+Quicktime
+RSA
+RealPlayer
+RedHat
+Romania
+SCO
+SDRAM
+SGI
+SMB
+SMP
+SNMP
+SSH
+SSL
+SQL
+SVR
+Shumway
+Siemens
+Slackware
+Slovenia
+SoftUpdates
+Sony
+SoundBlaster
+StarOffice
+Stokely
+StrongArm
+SunOS
+Sutter
+Sybase
+TRB
+Tcl
+ThinkPad
+Tk
+TrueType
+TrustedBSD
+UFS
+UID
+USB
+UTC
+UTP
+UltraSPARC
+Ukraine
+VESA
+VFS
+VLB
+VM
+VPN
+Valentino
+Vaschetto
+Vidrine
+Vinum
+WAV
+WEP
+WordPerfect
+XDM
+XFree
+XMMS
+XTerm
+Xeon
+ZDNet
+advisories
+awk
+benchmarked
+bytecode
+cleartext
+committers
+contrib
+devfs
+dialup
+diff
+diffs
+downtime
+draconian
+eBay
+eBones
+excerpting
+framebuffer
+httpd
+iXsystems
+infrastructural
+init
+installathon
+ipfw
+journaling
+libc
+majordomo
+malloc
+microuptime
+misc
+mislabeling
+multithreading
+netgraph
+netmask
+newbies
+passphrase
+patchkit
+plaintext
+playlist
+screenshot
+screenshots
+sed
+sgml
+shareware
+snprintf
+sprintf
+standalone
+strcpy
+strncpy
+struct
+sysinstall
+teTeX
+telecommuting
+toolchain
+tradeshow
+undesirables
+vnode
+webmaster
+website
+Wemm
diff --git a/share/dict/propernames b/share/dict/propernames
new file mode 100644
index 0000000..9aa20fc
--- /dev/null
+++ b/share/dict/propernames
@@ -0,0 +1,1308 @@
+Aaron
+Adam
+Adlai
+Adrian
+Agatha
+Ahmed
+Ahmet
+Aimee
+Al
+Alain
+Alan
+Alastair
+Albert
+Alberto
+Alejandro
+Alex
+Alexander
+Alexis
+Alf
+Alfred
+Alison
+Allan
+Allen
+Alvin
+Amanda
+Amarth
+Amedeo
+Ami
+Amigo
+Amir
+Amos
+Amy
+Anatole
+Anatoly
+Anderson
+Andre
+Andrea
+Andreas
+Andrew
+Andries
+Andy
+Angela
+Angus
+Anita
+Ann
+Anna
+Annard
+Anne
+Annie
+Anthony
+Anton
+Antonella
+Antonio
+Antony
+Archie
+Ariel
+Arlene
+Arne
+Arnold
+Art
+Arthur
+Audrey
+Avery
+Axel
+Barbara
+Barbra
+Barney
+Barrett
+Barrio
+Barry
+Bart
+Barton
+Bea
+Beckie
+Becky
+Belinda
+Ben
+Benjamin
+Benson
+Bernard
+Bernie
+Bert
+Bertrand
+Beth
+Betsy
+Betty
+Beverly
+Bill
+Billie
+Billy
+Bjorne
+Blaine
+Blair
+Blake
+Blayne
+Bob
+Bobbie
+Bobby
+Bonnie
+Boyce
+Boyd
+Brad
+Bradford
+Bradley
+Brandi
+Brandon
+Brandy
+Brenda
+Brendan
+Brender
+Brent
+Bret
+Brett
+Brian
+Briggs
+Brodie
+Brooke
+Bruce
+Bruno
+Bryan
+Bryce
+Bucky
+Bud
+Butler
+Byron
+Caleb
+Calvin
+Carisa
+Carl
+Carlo
+Carlos
+Carol
+Carole
+Caroline
+Carolyn
+Carsten
+Carter
+Cary
+Case
+Casey
+Casper
+Catherine
+Cathrin
+Cathryn
+Cathy
+Cecilia
+Celeste
+Celia
+Charleen
+Charlene
+Charles
+Charley
+Charlie
+Chet
+Chip
+Chris
+Christian
+Christie
+Christina
+Christofer
+Christophe
+Christopher
+Chuck
+Cindie
+Cindy
+Claire
+Clara
+Clare
+Clarence
+Clarissa
+Clark
+Claude
+Claudia
+Claudio
+Clay
+Clayton
+Clem
+Cliff
+Clifford
+Clyde
+Cole
+Coleen
+Colin
+Collin
+Connie
+Conrad
+Corey
+Cory
+Courtney
+Craig
+Cris
+Cristi
+Cristina
+Cristopher
+Curt
+Curtis
+Cynthia
+Cyrus
+Dale
+Dalton
+Damon
+Damone
+Dan
+Dana
+Dani
+Daniel
+Daniele
+Danielle
+Dannie
+Danny
+Darci
+Daren
+Darin
+Darrell
+Darren
+Darryl
+Daryl
+Dave
+David
+Dawn
+Dawson
+Dean
+Deb
+Debbie
+Debi
+Deborah
+Deirdre
+Del
+Delbert
+Denis
+Dennis
+Derek
+Devon
+Dewey
+Diana
+Diane
+Dick
+Dieter
+Dimetry
+Dimitry
+Dion
+Dirk
+Dominic
+Dominick
+Don
+Donal
+Donald
+Donn
+Donna
+Donne
+Donnie
+Donovan
+Dori
+Dorian
+Dorothy
+Dory
+Doug
+Douglas
+Doyle
+Drew
+Duane
+Duke
+Duncan
+Dustin
+Dwayne
+Dwight
+Dylan
+Earl
+Earle
+Earnie
+Ed
+Eddie
+Eddy
+Edgar
+Edith
+Edmond
+Edmund
+Eduardo
+Edward
+Edwin
+Eileen
+Elaine
+Eli
+Elias
+Elijah
+Eliot
+Elisabeth
+Elizabeth
+Ellen
+Elliot
+Elliott
+Elric
+Elsa
+Elvis
+Elwood
+Emil
+Emily
+Emma
+Emmett
+Eric
+Erick
+Erik
+Ernest
+Ernie
+Ernst
+Erwin
+Ethan
+Eugene
+Eva
+Evan
+Evelyn
+Everett
+Farouk
+Fay
+Felix
+Fletcher
+Floria
+Florian
+Floyd
+Frances
+Francis
+Francisco
+Francois
+Frank
+Franklin
+Fred
+Frederic
+Frederick
+Fritz
+Gabriel
+Gail
+Gale
+Galen
+Gary
+Gene
+Geoff
+Geoffrey
+George
+Gerald
+Gerard
+Gideon
+Gigi
+Gil
+Giles
+Gill
+Gilles
+Ginny
+Giovanni
+Glen
+Glenn
+Glynn
+Gordon
+Grace
+Graeme
+Graham
+Grant
+Granville
+Greg
+Gregg
+Gregge
+Gregor
+Gregory
+Gretchen
+Griff
+Guido
+Guillermo
+Gunnar
+Gunter
+Guy
+Gypsy
+Hal
+Hamilton
+Hank
+Hans
+Harmon
+Harold
+Harris
+Harry
+Hartmann
+Harv
+Harvey
+Hazel
+Heather
+Hector
+Heidi
+Hein
+Heinrich
+Heinz
+Helen
+Helge
+Henry
+Herb
+Herbert
+Herman
+Herve
+Hienz
+Hilda
+Hillary
+Hillel
+Himawan
+Hirofumi
+Hirotoshi
+Hiroyuki
+Hitoshi
+Hohn
+Holly
+Hon
+Honzo
+Horst
+Hotta
+Howard
+Hsi
+Hsuan
+Huashi
+Hubert
+Huey
+Hugh
+Hughes
+Hui
+Hume
+Hunter
+Hurf
+Hwa
+Hy
+Ian
+Ilya
+Ima
+Indra
+Ira
+Irfan
+Irvin
+Irving
+Irwin
+Isaac
+Isabelle
+Isidore
+Israel
+Izchak
+Izumi
+Izzy
+Jack
+Jackye
+Jacob
+Jacobson
+Jacques
+Jagath
+Jaime
+Jakob
+James
+Jamie
+Jan
+Jane
+Janet
+Janice
+Janos
+Jared
+Jarl
+Jarmo
+Jarvis
+Jason
+Jay
+Jayant
+Jayesh
+Jean
+Jean-Christophe
+Jean-Pierre
+Jeanette
+Jeanne
+Jeannette
+Jeannie
+Jeany
+Jef
+Jeff
+Jeffery
+Jeffie
+Jeffrey
+Jelske
+Jem
+Jenine
+Jennie
+Jennifer
+Jerald
+Jeremy
+Jerome
+Jerrie
+Jerry
+Jesper
+Jess
+Jesse
+Jesus
+Ji
+Jianyun
+Jill
+Jim
+Jimmy
+Jin
+Jinchao
+Jingbai
+Jinny
+Jiri
+Jisheng
+Jitendra
+Joachim
+Joanne
+Jochen
+Jock
+Joe
+Joel
+Johan
+Johann
+John
+Johnathan
+Johnnie
+Johnny
+Jon
+Jonathan
+Jones
+Jong
+Joni
+Joon
+Jordan
+Jorge
+Jos
+Jose
+Joseph
+Josh
+Joshua
+Josip
+Joubert
+Joyce
+Juan
+Judge
+Judith
+Judy
+Juergen
+Juha
+Julia
+Julian
+Juliane
+Julianto
+Julie
+Juliet
+Julius
+Jun
+June
+Jurevis
+Juri
+Jussi
+Justin
+Jwahar
+Kaj
+Kamel
+Kamiya
+Kanthan
+Karen
+Kari
+Karl
+Kate
+Kathleen
+Kathryn
+Kathy
+Kay
+Kayvan
+Kazuhiro
+Kee
+Kees
+Keith
+Kelly
+Kelvin
+Kemal
+Ken
+Kenn
+Kenneth
+Kent
+Kenton
+Kerri
+Kerry
+Kevan
+Kevin
+Kevyn
+Kieran
+Kiki
+Kikki
+Kim
+Kimberly
+Kimmo
+Kinch
+King
+Kirk
+Kirsten
+Kit
+Kitty
+Klaudia
+Klaus
+Knapper
+Knudsen
+Knut
+Knute
+Kolkka
+Konrad
+Konstantinos
+Kory
+Kris
+Kristen
+Kristi
+Kristian
+Kristin
+Kriton
+Krzysztof
+Kuldip
+Kurt
+Kusum
+Kyle
+Kylo
+Kyu
+Kyung
+Lana
+Lance
+Lanny
+Lar
+Larry
+Lars
+Laura
+Laurel
+Laurence
+Laurent
+Laurianne
+Laurie
+Lawrence
+Lea
+Leads
+Lee
+Leif
+Leigh
+Leila
+Leith
+Len
+Lenny
+Lenora
+Leo
+Leon
+Leonard
+Leora
+Les
+Leslie
+Lester
+Leung
+Lewis
+Lex
+Liber
+Lievaart
+Lila
+Lin
+Linda
+Linder
+Lindsay
+Lindsey
+Linley
+Lisa
+List
+Liyuan
+Liz
+Liza
+Lloyd
+Lois
+Lonhyn
+Lord
+Loren
+Lorenzo
+Lori
+Lorien
+Lorraine
+Lou
+Louie
+Louiqa
+Louis
+Louise
+Loukas
+Lowell
+Loyd
+Luc
+Lucifer
+Lucius
+Lui
+Luis
+Lukas
+Luke
+Lum
+Lyndon
+Lynn
+Lynne
+Lynnette
+Maarten
+Mac
+Magnus
+Mah
+Mahesh
+Mahmoud
+Major
+Malaclypse
+Malcolm
+Malloy
+Malus
+Manavendra
+Manjeri
+Mann
+Manny
+Manolis
+Manuel
+Mara
+Marc
+Marcel
+Marci
+Marcia
+Marco
+Marcos
+Marek
+Margaret
+Margie
+Margot
+Marguerite
+Maria
+Marian
+Marie
+Marilyn
+Mario
+Marion
+Mariou
+Mark
+Markus
+Marla
+Marlena
+Marnix
+Marsh
+Marsha
+Marshall
+Martha
+Martin
+Marty
+Martyn
+Marvin
+Mary
+Masanao
+Masanobu
+Mason
+Mat
+Mats
+Matt
+Matthew
+Matthias
+Matthieu
+Matti
+Maureen
+Maurice
+Max
+Mayo
+Mechael
+Meehan
+Meeks
+Mehrdad
+Melinda
+Merat
+Merril
+Merton
+Metin
+Micah
+Michael
+Micheal
+Michel
+Michelle
+Michiel
+Mick
+Mickey
+Micky
+Miek
+Mikael
+Mike
+Mikey
+Miki
+Miles
+Milner
+Milo
+Miltos
+Miriam
+Miriamne
+Mitch
+Mitchell
+Moe
+Mohammad
+Molly
+Mongo
+Monica
+Monty
+Moore
+Moran
+Morgan
+Morris
+Morton
+Moses
+Mosur
+Mott
+Murat
+Murph
+Murray
+Murthy
+Mwa
+Myrick
+Myron
+Mysore
+Nadeem
+Naim
+Nancy
+Nanda
+Naomi
+Naoto
+Naren
+Narendra
+Naresh
+Nate
+Nathan
+Nathaniel
+Natraj
+Neal
+Ned
+Neil
+Nelken
+Neville
+Nguyen
+Nhan
+Niall
+Nichael
+Nicholas
+Nici
+Nick
+Nicolas
+Nicolette
+Nicolo
+Niels
+Nigel
+Nikolai
+Nils
+Ning
+Ninja
+No
+Noam
+Noemi
+Nora
+Norbert
+Norm
+Norma
+Norman
+Nou
+Novo
+Novorolsky
+Ofer
+Olaf
+Old
+Ole
+Oleg
+Oliver
+Olivier
+Olof
+Olson
+Omar
+Orville
+Oscar
+Oskar
+Owen
+Ozan
+Pablo
+Page
+Pam
+Pamela
+Panacea
+Pandora
+Panos
+Pantelis
+Panzer
+Paola
+Part
+Pascal
+Pat
+Patrice
+Patricia
+Patricio
+Patrick
+Patty
+Paul
+Paula
+Pedro
+Peggy
+Penny
+Per
+Perry
+Pete
+Peter
+Petr
+Phil
+Philip
+Philippe
+Phill
+Phillip
+Phiroze
+Pia
+Piercarlo
+Pierce
+Pierette
+Pierre
+Piet
+Piete
+Pieter
+Pilar
+Pilot
+Pim
+Ping
+Piotr
+Pitawas
+Plastic
+Po
+Polly
+Pontus
+Pradeep
+Prakash
+Pratap
+Pratapwant
+Pratt
+Pravin
+Presley
+Pria
+Price
+Raanan
+Rabin
+Radek
+Rafael
+Rafik
+Raghu
+Ragnar
+Rahul
+Raif
+Rainer
+Raj
+Raja
+Rajarshi
+Rajeev
+Rajendra
+Rajesh
+Rajiv
+Rakhal
+Ralf
+Ralph
+Ram
+Ramadoss
+Raman
+Ramanan
+Ramesh
+Ramiro
+Ramneek
+Ramon
+Ramsey
+Rand
+Randal
+Randall
+Randell
+Randolph
+Randy
+Ranjit
+Raphael
+Rathnakumar
+Raul
+Ravi
+Ravindran
+Ravindranath
+Ray
+Rayan
+Raymond
+Real
+Rebecca
+Rees
+Reid
+Reiner
+Reinhard
+Renu
+Revised
+Rex
+Rhonda
+Ric
+Ricardo
+Rich
+Richard
+Rick
+Ricky
+Rik
+Ritalynne
+Ritchey
+Ro
+Rob
+Robbin
+Robert
+Roberta
+Roberto
+Robin
+Rod
+Rodent
+Roderick
+Rodger
+Rodney
+Roger
+Rogue
+Roland
+Rolf
+Rolfe
+Romain
+Roman
+Ron
+Ronald
+Ronni
+Root
+Ross
+Roxana
+Roxane
+Roxanne
+Roxie
+Roy
+Rudolf
+Rudolph
+Rudy
+Rupert
+Russ
+Russell
+Rusty
+Ruth
+Saad
+Sabrina
+Saify
+Saiid
+Sal
+Sally
+Sam
+Samir
+Samuel
+Sanand
+Sanche
+Sandeep
+Sandip
+Sandra
+Sandy
+Sanford
+Sangho
+Sanity
+Sanjay
+Sanjeev
+Sanjib
+Santa
+Saqib
+Sarah
+Sassan
+Saul
+Saumya
+Scot
+Scott
+Sean
+Sedat
+Sedovic
+Seenu
+Sehyo
+Sekar
+Serdar
+Sergeant
+Sergei
+Sergio
+Sergiu
+Seth
+Seymour
+Shadow
+Shahid
+Shai
+Shakil
+Shamim
+Shane
+Shankar
+Shannon
+Sharada
+Sharan
+Shari
+Sharon
+Shatter
+Shaw
+Shawn
+Shean
+Sheila
+Shel
+Sherman
+Sherri
+Shirley
+Sho
+Shutoku
+Shuvra
+Shyam
+Sid
+Sidney
+Siegurd
+Sigurd
+Simon
+Siping
+Sir
+Sjaak
+Sjouke
+Skeeter
+Skef
+Skip
+Slartibartfast
+Socorrito
+Sofia
+Sofoklis
+Son
+Sonja
+Sonny
+Soohong
+Sorrel
+Space
+Spass
+Spencer
+Spike
+Spock
+Spudboy
+Spy
+Spyros
+Sri
+Sridhar
+Sridharan
+Srikanth
+Srinivas
+Srinivasan
+Sriram
+Srivatsan
+Ssi
+Stacey
+Stacy
+Stagger
+Stan
+Stanislaw
+Stanley
+Stanly
+Starbuck
+Steen
+Stefan
+Stephan
+Stephanie
+Stephe
+Stephen
+Stevan
+Steve
+Steven
+Stewart
+Straka
+Stu
+Stuart
+Subra
+Sue
+Sugih
+Sumitro
+Sundar
+Sundaresan
+Sunil
+Suresh
+Surya
+Susan
+Susanne
+Susumu
+Suu
+Suwandi
+Suyog
+Suzan
+Suzanne
+Svante
+Swamy
+Syd
+Syed
+Sylvan
+Syun
+Tad
+Tahsin
+Tai
+Tait
+Takao
+Takayuki
+Takeuchi
+Tal
+Tammy
+Tanaka
+Tandy
+Tanya
+Tao
+Tareq
+Tarmi
+Taurus
+Ted
+Teresa
+Teri
+Teriann
+Terrance
+Terrence
+Terri
+Terry
+Teruyuki
+Thad
+Tharen
+The
+Theo
+Theodore
+Thierry
+Think
+Thomas
+Those
+Thuan
+Ti
+Tiefenthal
+Tigger
+Tim
+Timo
+Timothy
+Tobias
+Toby
+Todd
+Toerless
+Toft
+Tolerant
+Tollefsen
+Tom
+Tomas
+Tommy
+Tony
+Tor
+Torsten
+Toufic
+Tovah
+Tracey
+Tracy
+Tran
+Travis
+Trent
+Trevor
+Trey
+Triantaphyllos
+Tricia
+Troy
+Trying
+Tuan
+Tuna
+Turkeer
+Tyler
+Uri
+Urs
+Vadim
+Val
+Valentin
+Valeria
+Valerie
+Van
+Vance
+Varda
+Vassos
+Vaughn
+Venkata
+Vern
+Vernon
+Vic
+Vice
+Vick
+Vicki
+Vickie
+Vicky
+Victor
+Victoria
+Vidhyanath
+Vijay
+Vilhelm
+Vince
+Vincent
+Vincenzo
+Vinod
+Vishal
+Vistlik
+Vivek
+Vladimir
+Vladislav
+Wade
+Walt
+Walter
+Warren
+Wayne
+Wendell
+Wendi
+Wendy
+Werner
+Wes
+Will
+William
+Willie
+Wilmer
+Wilson
+Win
+Winnie
+Winston
+Wolf
+Wolfgang
+Woody
+Yvonne
diff --git a/share/dict/web2 b/share/dict/web2
new file mode 100644
index 0000000..c25589d
--- /dev/null
+++ b/share/dict/web2
@@ -0,0 +1,235882 @@
+A
+a
+aa
+aal
+aalii
+aam
+Aani
+aardvark
+aardwolf
+Aaron
+Aaronic
+Aaronical
+Aaronite
+Aaronitic
+Aaru
+Ab
+aba
+Ababdeh
+Ababua
+abac
+abaca
+abacate
+abacay
+abacinate
+abacination
+abaciscus
+abacist
+aback
+abactinal
+abactinally
+abaction
+abactor
+abaculus
+abacus
+Abadite
+abaff
+abaft
+abaisance
+abaiser
+abaissed
+abalienate
+abalienation
+abalone
+Abama
+abampere
+abandon
+abandonable
+abandoned
+abandonedly
+abandonee
+abandoner
+abandonment
+Abanic
+Abantes
+abaptiston
+Abarambo
+Abaris
+abarthrosis
+abarticular
+abarticulation
+abas
+abase
+abased
+abasedly
+abasedness
+abasement
+abaser
+Abasgi
+abash
+abashed
+abashedly
+abashedness
+abashless
+abashlessly
+abashment
+abasia
+abasic
+abask
+Abassin
+abastardize
+abatable
+abate
+abatement
+abater
+abatis
+abatised
+abaton
+abator
+abattoir
+Abatua
+abature
+abave
+abaxial
+abaxile
+abaze
+abb
+Abba
+abbacomes
+abbacy
+Abbadide
+abbas
+abbasi
+abbassi
+Abbasside
+abbatial
+abbatical
+abbess
+abbey
+abbeystede
+Abbie
+abbot
+abbotcy
+abbotnullius
+abbotship
+abbreviate
+abbreviately
+abbreviation
+abbreviator
+abbreviatory
+abbreviature
+Abby
+abcoulomb
+abdal
+abdat
+Abderian
+Abderite
+abdest
+abdicable
+abdicant
+abdicate
+abdication
+abdicative
+abdicator
+Abdiel
+abditive
+abditory
+abdomen
+abdominal
+Abdominales
+abdominalian
+abdominally
+abdominoanterior
+abdominocardiac
+abdominocentesis
+abdominocystic
+abdominogenital
+abdominohysterectomy
+abdominohysterotomy
+abdominoposterior
+abdominoscope
+abdominoscopy
+abdominothoracic
+abdominous
+abdominovaginal
+abdominovesical
+abduce
+abducens
+abducent
+abduct
+abduction
+abductor
+Abe
+abeam
+abear
+abearance
+abecedarian
+abecedarium
+abecedary
+abed
+abeigh
+Abel
+abele
+Abelia
+Abelian
+Abelicea
+Abelite
+abelite
+Abelmoschus
+abelmosk
+Abelonian
+abeltree
+Abencerrages
+abenteric
+abepithymia
+Aberdeen
+aberdevine
+Aberdonian
+Aberia
+aberrance
+aberrancy
+aberrant
+aberrate
+aberration
+aberrational
+aberrator
+aberrometer
+aberroscope
+aberuncator
+abet
+abetment
+abettal
+abettor
+abevacuation
+abey
+abeyance
+abeyancy
+abeyant
+abfarad
+abhenry
+abhiseka
+abhominable
+abhor
+abhorrence
+abhorrency
+abhorrent
+abhorrently
+abhorrer
+abhorrible
+abhorring
+Abhorson
+abidal
+abidance
+abide
+abider
+abidi
+abiding
+abidingly
+abidingness
+Abie
+Abies
+abietate
+abietene
+abietic
+abietin
+Abietineae
+abietineous
+abietinic
+Abiezer
+Abigail
+abigail
+abigailship
+abigeat
+abigeus
+abilao
+ability
+abilla
+abilo
+abintestate
+abiogenesis
+abiogenesist
+abiogenetic
+abiogenetical
+abiogenetically
+abiogenist
+abiogenous
+abiogeny
+abiological
+abiologically
+abiology
+abiosis
+abiotic
+abiotrophic
+abiotrophy
+Abipon
+abir
+abirritant
+abirritate
+abirritation
+abirritative
+abiston
+Abitibi
+abiuret
+abject
+abjectedness
+abjection
+abjective
+abjectly
+abjectness
+abjoint
+abjudge
+abjudicate
+abjudication
+abjunction
+abjunctive
+abjuration
+abjuratory
+abjure
+abjurement
+abjurer
+abkar
+abkari
+Abkhas
+Abkhasian
+ablach
+ablactate
+ablactation
+ablare
+ablastemic
+ablastous
+ablate
+ablation
+ablatitious
+ablatival
+ablative
+ablator
+ablaut
+ablaze
+able
+ableeze
+ablegate
+ableness
+ablepharia
+ablepharon
+ablepharous
+Ablepharus
+ablepsia
+ableptical
+ableptically
+abler
+ablest
+ablewhackets
+ablins
+abloom
+ablow
+ablude
+abluent
+ablush
+ablution
+ablutionary
+abluvion
+ably
+abmho
+Abnaki
+abnegate
+abnegation
+abnegative
+abnegator
+Abner
+abnerval
+abnet
+abneural
+abnormal
+abnormalism
+abnormalist
+abnormality
+abnormalize
+abnormally
+abnormalness
+abnormity
+abnormous
+abnumerable
+Abo
+aboard
+Abobra
+abode
+abodement
+abody
+abohm
+aboil
+abolish
+abolisher
+abolishment
+abolition
+abolitionary
+abolitionism
+abolitionist
+abolitionize
+abolla
+aboma
+abomasum
+abomasus
+abominable
+abominableness
+abominably
+abominate
+abomination
+abominator
+abomine
+Abongo
+aboon
+aborad
+aboral
+aborally
+abord
+aboriginal
+aboriginality
+aboriginally
+aboriginary
+aborigine
+abort
+aborted
+aborticide
+abortient
+abortifacient
+abortin
+abortion
+abortional
+abortionist
+abortive
+abortively
+abortiveness
+abortus
+abouchement
+abound
+abounder
+abounding
+aboundingly
+about
+abouts
+above
+aboveboard
+abovedeck
+aboveground
+aboveproof
+abovestairs
+abox
+abracadabra
+abrachia
+abradant
+abrade
+abrader
+Abraham
+Abrahamic
+Abrahamidae
+Abrahamite
+Abrahamitic
+abraid
+Abram
+Abramis
+abranchial
+abranchialism
+abranchian
+Abranchiata
+abranchiate
+abranchious
+abrasax
+abrase
+abrash
+abrasiometer
+abrasion
+abrasive
+abrastol
+abraum
+abraxas
+abreact
+abreaction
+abreast
+abrenounce
+abret
+abrico
+abridge
+abridgeable
+abridged
+abridgedly
+abridger
+abridgment
+abrim
+abrin
+abristle
+abroach
+abroad
+Abrocoma
+abrocome
+abrogable
+abrogate
+abrogation
+abrogative
+abrogator
+Abroma
+Abronia
+abrook
+abrotanum
+abrotine
+abrupt
+abruptedly
+abruption
+abruptly
+abruptness
+Abrus
+Absalom
+absampere
+Absaroka
+absarokite
+abscess
+abscessed
+abscession
+abscessroot
+abscind
+abscise
+abscision
+absciss
+abscissa
+abscissae
+abscisse
+abscission
+absconce
+abscond
+absconded
+abscondedly
+abscondence
+absconder
+absconsa
+abscoulomb
+absence
+absent
+absentation
+absentee
+absenteeism
+absenteeship
+absenter
+absently
+absentment
+absentmindedly
+absentness
+absfarad
+abshenry
+Absi
+absinthe
+absinthial
+absinthian
+absinthiate
+absinthic
+absinthin
+absinthine
+absinthism
+absinthismic
+absinthium
+absinthol
+absit
+absmho
+absohm
+absolute
+absolutely
+absoluteness
+absolution
+absolutism
+absolutist
+absolutistic
+absolutistically
+absolutive
+absolutization
+absolutize
+absolutory
+absolvable
+absolvatory
+absolve
+absolvent
+absolver
+absolvitor
+absolvitory
+absonant
+absonous
+absorb
+absorbability
+absorbable
+absorbed
+absorbedly
+absorbedness
+absorbefacient
+absorbency
+absorbent
+absorber
+absorbing
+absorbingly
+absorbition
+absorpt
+absorptance
+absorptiometer
+absorptiometric
+absorption
+absorptive
+absorptively
+absorptiveness
+absorptivity
+absquatulate
+abstain
+abstainer
+abstainment
+abstemious
+abstemiously
+abstemiousness
+abstention
+abstentionist
+abstentious
+absterge
+abstergent
+abstersion
+abstersive
+abstersiveness
+abstinence
+abstinency
+abstinent
+abstinential
+abstinently
+abstract
+abstracted
+abstractedly
+abstractedness
+abstracter
+abstraction
+abstractional
+abstractionism
+abstractionist
+abstractitious
+abstractive
+abstractively
+abstractiveness
+abstractly
+abstractness
+abstractor
+abstrahent
+abstricted
+abstriction
+abstruse
+abstrusely
+abstruseness
+abstrusion
+abstrusity
+absume
+absumption
+absurd
+absurdity
+absurdly
+absurdness
+absvolt
+Absyrtus
+abterminal
+abthain
+abthainrie
+abthainry
+abthanage
+Abu
+abu
+abucco
+abulia
+abulic
+abulomania
+abuna
+abundance
+abundancy
+abundant
+Abundantia
+abundantly
+abura
+aburabozu
+aburban
+aburst
+aburton
+abusable
+abuse
+abusedly
+abusee
+abuseful
+abusefully
+abusefulness
+abuser
+abusion
+abusious
+abusive
+abusively
+abusiveness
+abut
+Abuta
+Abutilon
+abutment
+abuttal
+abutter
+abutting
+abuzz
+abvolt
+abwab
+aby
+abysm
+abysmal
+abysmally
+abyss
+abyssal
+Abyssinian
+abyssobenthonic
+abyssolith
+abyssopelagic
+acacatechin
+acacatechol
+acacetin
+Acacia
+Acacian
+acaciin
+acacin
+academe
+academial
+academian
+Academic
+academic
+academical
+academically
+academicals
+academician
+academicism
+academism
+academist
+academite
+academization
+academize
+Academus
+academy
+Acadia
+acadialite
+Acadian
+Acadie
+Acaena
+acajou
+acaleph
+Acalepha
+Acalephae
+acalephan
+acalephoid
+acalycal
+acalycine
+acalycinous
+acalyculate
+Acalypha
+Acalypterae
+Acalyptrata
+Acalyptratae
+acalyptrate
+Acamar
+acampsia
+acana
+acanaceous
+acanonical
+acanth
+acantha
+Acanthaceae
+acanthaceous
+acanthad
+Acantharia
+Acanthia
+acanthial
+acanthin
+acanthine
+acanthion
+acanthite
+acanthocarpous
+Acanthocephala
+acanthocephalan
+Acanthocephali
+acanthocephalous
+Acanthocereus
+acanthocladous
+Acanthodea
+acanthodean
+Acanthodei
+Acanthodes
+acanthodian
+Acanthodidae
+Acanthodii
+Acanthodini
+acanthoid
+Acantholimon
+acanthological
+acanthology
+acantholysis
+acanthoma
+Acanthomeridae
+acanthon
+Acanthopanax
+Acanthophis
+acanthophorous
+acanthopod
+acanthopodous
+acanthopomatous
+acanthopore
+acanthopteran
+Acanthopteri
+acanthopterous
+acanthopterygian
+Acanthopterygii
+acanthosis
+acanthous
+Acanthuridae
+Acanthurus
+acanthus
+acapnia
+acapnial
+acapsular
+acapu
+acapulco
+acara
+Acarapis
+acardia
+acardiac
+acari
+acarian
+acariasis
+acaricidal
+acaricide
+acarid
+Acarida
+Acaridea
+acaridean
+acaridomatium
+acariform
+Acarina
+acarine
+acarinosis
+acarocecidium
+acarodermatitis
+acaroid
+acarol
+acarologist
+acarology
+acarophilous
+acarophobia
+acarotoxic
+acarpelous
+acarpous
+Acarus
+Acastus
+acatalectic
+acatalepsia
+acatalepsy
+acataleptic
+acatallactic
+acatamathesia
+acataphasia
+acataposis
+acatastasia
+acatastatic
+acate
+acategorical
+acatery
+acatharsia
+acatharsy
+acatholic
+acaudal
+acaudate
+acaulescent
+acauline
+acaulose
+acaulous
+acca
+accede
+accedence
+acceder
+accelerable
+accelerando
+accelerant
+accelerate
+accelerated
+acceleratedly
+acceleration
+accelerative
+accelerator
+acceleratory
+accelerograph
+accelerometer
+accend
+accendibility
+accendible
+accension
+accensor
+accent
+accentless
+accentor
+accentuable
+accentual
+accentuality
+accentually
+accentuate
+accentuation
+accentuator
+accentus
+accept
+acceptability
+acceptable
+acceptableness
+acceptably
+acceptance
+acceptancy
+acceptant
+acceptation
+accepted
+acceptedly
+accepter
+acceptilate
+acceptilation
+acception
+acceptive
+acceptor
+acceptress
+accerse
+accersition
+accersitor
+access
+accessarily
+accessariness
+accessary
+accessaryship
+accessibility
+accessible
+accessibly
+accession
+accessional
+accessioner
+accessive
+accessively
+accessless
+accessorial
+accessorily
+accessoriness
+accessorius
+accessory
+accidence
+accidency
+accident
+accidental
+accidentalism
+accidentalist
+accidentality
+accidentally
+accidentalness
+accidented
+accidential
+accidentiality
+accidently
+accidia
+accidie
+accinge
+accipient
+Accipiter
+accipitral
+accipitrary
+Accipitres
+accipitrine
+accismus
+accite
+acclaim
+acclaimable
+acclaimer
+acclamation
+acclamator
+acclamatory
+acclimatable
+acclimatation
+acclimate
+acclimatement
+acclimation
+acclimatizable
+acclimatization
+acclimatize
+acclimatizer
+acclimature
+acclinal
+acclinate
+acclivitous
+acclivity
+acclivous
+accloy
+accoast
+accoil
+accolade
+accoladed
+accolated
+accolent
+accolle
+accombination
+accommodable
+accommodableness
+accommodate
+accommodately
+accommodateness
+accommodating
+accommodatingly
+accommodation
+accommodational
+accommodative
+accommodativeness
+accommodator
+accompanier
+accompaniment
+accompanimental
+accompanist
+accompany
+accompanyist
+accompletive
+accomplice
+accompliceship
+accomplicity
+accomplish
+accomplishable
+accomplished
+accomplisher
+accomplishment
+accomplisht
+accompt
+accord
+accordable
+accordance
+accordancy
+accordant
+accordantly
+accorder
+according
+accordingly
+accordion
+accordionist
+accorporate
+accorporation
+accost
+accostable
+accosted
+accouche
+accouchement
+accoucheur
+accoucheuse
+account
+accountability
+accountable
+accountableness
+accountably
+accountancy
+accountant
+accountantship
+accounting
+accountment
+accouple
+accouplement
+accouter
+accouterment
+accoy
+accredit
+accreditate
+accreditation
+accredited
+accreditment
+accrementitial
+accrementition
+accresce
+accrescence
+accrescent
+accretal
+accrete
+accretion
+accretionary
+accretive
+accroach
+accroides
+accrual
+accrue
+accruement
+accruer
+accubation
+accubitum
+accubitus
+accultural
+acculturate
+acculturation
+acculturize
+accumbency
+accumbent
+accumber
+accumulable
+accumulate
+accumulation
+accumulativ
+accumulative
+accumulatively
+accumulativeness
+accumulator
+accuracy
+accurate
+accurately
+accurateness
+accurse
+accursed
+accursedly
+accursedness
+accusable
+accusably
+accusal
+accusant
+accusation
+accusatival
+accusative
+accusatively
+accusatorial
+accusatorially
+accusatory
+accusatrix
+accuse
+accused
+accuser
+accusingly
+accusive
+accustom
+accustomed
+accustomedly
+accustomedness
+ace
+aceacenaphthene
+aceanthrene
+aceanthrenequinone
+acecaffine
+aceconitic
+acedia
+acediamine
+acediast
+acedy
+Aceldama
+Acemetae
+Acemetic
+acenaphthene
+acenaphthenyl
+acenaphthylene
+acentric
+acentrous
+aceologic
+aceology
+acephal
+Acephala
+acephalan
+Acephali
+acephalia
+Acephalina
+acephaline
+acephalism
+acephalist
+Acephalite
+acephalocyst
+acephalous
+acephalus
+Acer
+Aceraceae
+aceraceous
+Acerae
+Acerata
+acerate
+Acerates
+acerathere
+Aceratherium
+aceratosis
+acerb
+Acerbas
+acerbate
+acerbic
+acerbity
+acerdol
+acerin
+acerose
+acerous
+acerra
+acertannin
+acervate
+acervately
+acervation
+acervative
+acervose
+acervuline
+acervulus
+acescence
+acescency
+acescent
+aceship
+acesodyne
+Acestes
+acetabular
+Acetabularia
+acetabuliferous
+acetabuliform
+acetabulous
+acetabulum
+acetacetic
+acetal
+acetaldehydase
+acetaldehyde
+acetaldehydrase
+acetalization
+acetalize
+acetamide
+acetamidin
+acetamidine
+acetamido
+acetaminol
+acetanilid
+acetanilide
+acetanion
+acetaniside
+acetanisidide
+acetannin
+acetarious
+acetarsone
+acetate
+acetated
+acetation
+acetbromamide
+acetenyl
+acethydrazide
+acetic
+acetification
+acetifier
+acetify
+acetimeter
+acetimetry
+acetin
+acetize
+acetmethylanilide
+acetnaphthalide
+acetoacetanilide
+acetoacetate
+acetoacetic
+acetoamidophenol
+acetoarsenite
+Acetobacter
+acetobenzoic
+acetobromanilide
+acetochloral
+acetocinnamene
+acetoin
+acetol
+acetolysis
+acetolytic
+acetometer
+acetometrical
+acetometrically
+acetometry
+acetomorphine
+acetonaphthone
+acetonate
+acetonation
+acetone
+acetonemia
+acetonemic
+acetonic
+acetonitrile
+acetonization
+acetonize
+acetonuria
+acetonurometer
+acetonyl
+acetonylacetone
+acetonylidene
+acetophenetide
+acetophenin
+acetophenine
+acetophenone
+acetopiperone
+acetopyrin
+acetosalicylic
+acetose
+acetosity
+acetosoluble
+acetothienone
+acetotoluide
+acetotoluidine
+acetous
+acetoveratrone
+acetoxime
+acetoxyl
+acetoxyphthalide
+acetphenetid
+acetphenetidin
+acetract
+acettoluide
+acetum
+aceturic
+acetyl
+acetylacetonates
+acetylacetone
+acetylamine
+acetylate
+acetylation
+acetylator
+acetylbenzene
+acetylbenzoate
+acetylbenzoic
+acetylbiuret
+acetylcarbazole
+acetylcellulose
+acetylcholine
+acetylcyanide
+acetylenation
+acetylene
+acetylenediurein
+acetylenic
+acetylenyl
+acetylfluoride
+acetylglycine
+acetylhydrazine
+acetylic
+acetylide
+acetyliodide
+acetylizable
+acetylization
+acetylize
+acetylizer
+acetylmethylcarbinol
+acetylperoxide
+acetylphenol
+acetylphenylhydrazine
+acetylrosaniline
+acetylsalicylate
+acetylsalol
+acetyltannin
+acetylthymol
+acetyltropeine
+acetylurea
+ach
+Achaean
+Achaemenian
+Achaemenid
+Achaemenidae
+Achaemenidian
+Achaenodon
+Achaeta
+achaetous
+achage
+Achagua
+Achakzai
+achalasia
+Achamoth
+Achango
+achar
+Achariaceae
+Achariaceous
+achate
+Achates
+Achatina
+Achatinella
+Achatinidae
+ache
+acheilia
+acheilous
+acheiria
+acheirous
+acheirus
+Achen
+achene
+achenial
+achenium
+achenocarp
+achenodium
+acher
+Achernar
+Acheronian
+Acherontic
+Acherontical
+achete
+Achetidae
+Acheulean
+acheweed
+achievable
+achieve
+achievement
+achiever
+achigan
+achilary
+achill
+Achillea
+Achillean
+Achilleid
+achilleine
+Achillize
+achillobursitis
+achillodynia
+achime
+Achimenes
+Achinese
+aching
+achingly
+achira
+Achitophel
+achlamydate
+Achlamydeae
+achlamydeous
+achlorhydria
+achlorophyllous
+achloropsia
+Achmetha
+acholia
+acholic
+Acholoe
+acholous
+acholuria
+acholuric
+Achomawi
+achondrite
+achondritic
+achondroplasia
+achondroplastic
+achor
+achordal
+Achordata
+achordate
+Achorion
+Achras
+achree
+achroacyte
+Achroanthes
+achrodextrin
+achrodextrinase
+achroglobin
+achroiocythaemia
+achroiocythemia
+achroite
+achroma
+achromacyte
+achromasia
+achromat
+achromate
+Achromatiaceae
+achromatic
+achromatically
+achromaticity
+achromatin
+achromatinic
+achromatism
+Achromatium
+achromatizable
+achromatization
+achromatize
+achromatocyte
+achromatolysis
+achromatope
+achromatophile
+achromatopia
+achromatopsia
+achromatopsy
+achromatosis
+achromatous
+achromaturia
+achromia
+achromic
+Achromobacter
+Achromobacterieae
+achromoderma
+achromophilous
+achromotrichia
+achromous
+achronical
+achroodextrin
+achroodextrinase
+achroous
+achropsia
+achtehalber
+achtel
+achtelthaler
+Achuas
+achy
+achylia
+achylous
+achymia
+achymous
+Achyranthes
+Achyrodes
+acichloride
+acicula
+acicular
+acicularly
+aciculate
+aciculated
+aciculum
+acid
+Acidanthera
+Acidaspis
+acidemia
+acider
+acidic
+acidiferous
+acidifiable
+acidifiant
+acidific
+acidification
+acidifier
+acidify
+acidimeter
+acidimetric
+acidimetrical
+acidimetrically
+acidimetry
+acidite
+acidity
+acidize
+acidly
+acidness
+acidoid
+acidology
+acidometer
+acidometry
+acidophile
+acidophilic
+acidophilous
+acidoproteolytic
+acidosis
+acidosteophyte
+acidotic
+acidproof
+acidulate
+acidulent
+acidulous
+aciduric
+acidyl
+acier
+acierage
+Acieral
+acierate
+acieration
+aciform
+aciliate
+aciliated
+Acilius
+acinaceous
+acinaces
+acinacifolious
+acinaciform
+acinar
+acinarious
+acinary
+Acineta
+Acinetae
+acinetan
+Acinetaria
+acinetarian
+acinetic
+acinetiform
+Acinetina
+acinetinan
+acinic
+aciniform
+acinose
+acinotubular
+acinous
+acinus
+Acipenser
+Acipenseres
+acipenserid
+Acipenseridae
+acipenserine
+acipenseroid
+Acipenseroidei
+Acis
+aciurgy
+acker
+ackey
+ackman
+acknow
+acknowledge
+acknowledgeable
+acknowledged
+acknowledgedly
+acknowledger
+aclastic
+acle
+acleidian
+acleistous
+Aclemon
+aclidian
+aclinal
+aclinic
+acloud
+aclys
+Acmaea
+Acmaeidae
+acmatic
+acme
+acmesthesia
+acmic
+Acmispon
+acmite
+acne
+acneform
+acneiform
+acnemia
+Acnida
+acnodal
+acnode
+Acocanthera
+acocantherin
+acock
+acockbill
+acocotl
+Acoela
+Acoelomata
+acoelomate
+acoelomatous
+Acoelomi
+acoelomous
+acoelous
+Acoemetae
+Acoemeti
+Acoemetic
+acoin
+acoine
+Acolapissa
+acold
+Acolhua
+Acolhuan
+acologic
+acology
+acolous
+acoluthic
+acolyte
+acolythate
+Acoma
+acoma
+acomia
+acomous
+aconative
+acondylose
+acondylous
+acone
+aconic
+aconin
+aconine
+aconital
+aconite
+aconitia
+aconitic
+aconitin
+aconitine
+Aconitum
+Acontias
+acontium
+Acontius
+aconuresis
+acopic
+acopon
+acopyrin
+acopyrine
+acor
+acorea
+acoria
+acorn
+acorned
+Acorus
+acosmic
+acosmism
+acosmist
+acosmistic
+acotyledon
+acotyledonous
+acouasm
+acouchi
+acouchy
+acoumeter
+acoumetry
+acouometer
+acouophonia
+acoupa
+acousmata
+acousmatic
+acoustic
+acoustical
+acoustically
+acoustician
+acousticolateral
+Acousticon
+acoustics
+acquaint
+acquaintance
+acquaintanceship
+acquaintancy
+acquaintant
+acquainted
+acquaintedness
+acquest
+acquiesce
+acquiescement
+acquiescence
+acquiescency
+acquiescent
+acquiescently
+acquiescer
+acquiescingly
+acquirability
+acquirable
+acquire
+acquired
+acquirement
+acquirenda
+acquirer
+acquisible
+acquisite
+acquisited
+acquisition
+acquisitive
+acquisitively
+acquisitiveness
+acquisitor
+acquisitum
+acquist
+acquit
+acquitment
+acquittal
+acquittance
+acquitter
+Acrab
+acracy
+acraein
+Acraeinae
+acraldehyde
+Acrania
+acranial
+acraniate
+acrasia
+Acrasiaceae
+Acrasiales
+Acrasida
+Acrasieae
+Acraspeda
+acraspedote
+acratia
+acraturesis
+acrawl
+acraze
+acre
+acreable
+acreage
+acreak
+acream
+acred
+Acredula
+acreman
+acrestaff
+acrid
+acridan
+acridian
+acridic
+Acrididae
+Acridiidae
+acridine
+acridinic
+acridinium
+acridity
+Acridium
+acridly
+acridness
+acridone
+acridonium
+acridophagus
+acridyl
+acriflavin
+acriflavine
+acrimonious
+acrimoniously
+acrimoniousness
+acrimony
+acrindoline
+acrinyl
+acrisia
+Acrisius
+Acrita
+acritan
+acrite
+acritical
+acritol
+Acroa
+acroaesthesia
+acroama
+acroamatic
+acroamatics
+acroanesthesia
+acroarthritis
+acroasphyxia
+acroataxia
+acroatic
+acrobacy
+acrobat
+Acrobates
+acrobatholithic
+acrobatic
+acrobatical
+acrobatically
+acrobatics
+acrobatism
+acroblast
+acrobryous
+acrobystitis
+Acrocarpi
+acrocarpous
+acrocephalia
+acrocephalic
+acrocephalous
+acrocephaly
+Acrocera
+Acroceratidae
+Acroceraunian
+Acroceridae
+Acrochordidae
+Acrochordinae
+acrochordon
+Acroclinium
+Acrocomia
+acroconidium
+acrocontracture
+acrocoracoid
+acrocyanosis
+acrocyst
+acrodactylum
+acrodermatitis
+acrodont
+acrodontism
+acrodrome
+acrodromous
+Acrodus
+acrodynia
+acroesthesia
+acrogamous
+acrogamy
+acrogen
+acrogenic
+acrogenous
+acrogenously
+acrography
+Acrogynae
+acrogynae
+acrogynous
+acrolein
+acrolith
+acrolithan
+acrolithic
+acrologic
+acrologically
+acrologism
+acrologue
+acrology
+acromania
+acromastitis
+acromegalia
+acromegalic
+acromegaly
+acromelalgia
+acrometer
+acromial
+acromicria
+acromioclavicular
+acromiocoracoid
+acromiodeltoid
+acromiohumeral
+acromiohyoid
+acromion
+acromioscapular
+acromiosternal
+acromiothoracic
+acromonogrammatic
+acromphalus
+Acromyodi
+acromyodian
+acromyodic
+acromyodous
+acromyotonia
+acromyotonus
+acron
+acronarcotic
+acroneurosis
+acronical
+acronically
+acronyc
+acronych
+Acronycta
+acronyctous
+acronym
+acronymic
+acronymize
+acronymous
+acronyx
+acrook
+acroparalysis
+acroparesthesia
+acropathology
+acropathy
+acropetal
+acropetally
+acrophobia
+acrophonetic
+acrophonic
+acrophony
+acropodium
+acropoleis
+acropolis
+acropolitan
+Acropora
+acrorhagus
+acrorrheuma
+acrosarc
+acrosarcum
+acroscleriasis
+acroscleroderma
+acroscopic
+acrose
+acrosome
+acrosphacelus
+acrospire
+acrospore
+acrosporous
+across
+acrostic
+acrostical
+acrostically
+acrostichal
+Acrosticheae
+acrostichic
+acrostichoid
+Acrostichum
+acrosticism
+acrostolion
+acrostolium
+acrotarsial
+acrotarsium
+acroteleutic
+acroterial
+acroteric
+acroterium
+Acrothoracica
+acrotic
+acrotism
+acrotomous
+Acrotreta
+Acrotretidae
+acrotrophic
+acrotrophoneurosis
+Acrux
+Acrydium
+acryl
+acrylaldehyde
+acrylate
+acrylic
+acrylonitrile
+acrylyl
+act
+acta
+actability
+actable
+Actaea
+Actaeaceae
+Actaeon
+Actaeonidae
+Actiad
+Actian
+actification
+actifier
+actify
+actin
+actinal
+actinally
+actinautographic
+actinautography
+actine
+actinenchyma
+acting
+Actinia
+actinian
+Actiniaria
+actiniarian
+actinic
+actinically
+Actinidia
+Actinidiaceae
+actiniferous
+actiniform
+actinine
+actiniochrome
+actiniohematin
+Actiniomorpha
+actinism
+Actinistia
+actinium
+actinobacillosis
+Actinobacillus
+actinoblast
+actinobranch
+actinobranchia
+actinocarp
+actinocarpic
+actinocarpous
+actinochemistry
+actinocrinid
+Actinocrinidae
+actinocrinite
+Actinocrinus
+actinocutitis
+actinodermatitis
+actinodielectric
+actinodrome
+actinodromous
+actinoelectric
+actinoelectrically
+actinoelectricity
+actinogonidiate
+actinogram
+actinograph
+actinography
+actinoid
+Actinoida
+Actinoidea
+actinolite
+actinolitic
+actinologous
+actinologue
+actinology
+actinomere
+actinomeric
+actinometer
+actinometric
+actinometrical
+actinometry
+actinomorphic
+actinomorphous
+actinomorphy
+Actinomyces
+Actinomycetaceae
+Actinomycetales
+actinomycete
+actinomycetous
+actinomycin
+actinomycoma
+actinomycosis
+actinomycotic
+Actinomyxidia
+Actinomyxidiida
+actinon
+Actinonema
+actinoneuritis
+actinophone
+actinophonic
+actinophore
+actinophorous
+actinophryan
+Actinophrys
+Actinopoda
+actinopraxis
+actinopteran
+Actinopteri
+actinopterous
+actinopterygian
+Actinopterygii
+actinopterygious
+actinoscopy
+actinosoma
+actinosome
+Actinosphaerium
+actinost
+actinostereoscopy
+actinostomal
+actinostome
+actinotherapeutic
+actinotherapeutics
+actinotherapy
+actinotoxemia
+actinotrichium
+actinotrocha
+actinouranium
+Actinozoa
+actinozoal
+actinozoan
+actinozoon
+actinula
+action
+actionable
+actionably
+actional
+actionary
+actioner
+actionize
+actionless
+Actipylea
+Actium
+activable
+activate
+activation
+activator
+active
+actively
+activeness
+activin
+activism
+activist
+activital
+activity
+activize
+actless
+actomyosin
+acton
+actor
+actorship
+actress
+Acts
+actu
+actual
+actualism
+actualist
+actualistic
+actuality
+actualization
+actualize
+actually
+actualness
+actuarial
+actuarially
+actuarian
+actuary
+actuaryship
+actuation
+actuator
+acture
+acturience
+actutate
+acuaesthesia
+Acuan
+acuate
+acuation
+Acubens
+acuclosure
+acuductor
+acuesthesia
+acuity
+aculea
+Aculeata
+aculeate
+aculeated
+aculeiform
+aculeolate
+aculeolus
+aculeus
+acumen
+acuminate
+acumination
+acuminose
+acuminous
+acuminulate
+acupress
+acupressure
+acupunctuate
+acupunctuation
+acupuncturation
+acupuncturator
+acupuncture
+acurative
+acushla
+acutangular
+acutate
+acute
+acutely
+acutenaculum
+acuteness
+acutiator
+acutifoliate
+Acutilinguae
+acutilingual
+acutilobate
+acutiplantar
+acutish
+acutograve
+acutonodose
+acutorsion
+acyanoblepsia
+acyanopsia
+acyclic
+acyesis
+acyetic
+acyl
+acylamido
+acylamidobenzene
+acylamino
+acylate
+acylation
+acylogen
+acyloin
+acyloxy
+acyloxymethane
+acyrological
+acyrology
+acystia
+ad
+Ada
+adactyl
+adactylia
+adactylism
+adactylous
+Adad
+adad
+adage
+adagial
+adagietto
+adagio
+Adai
+Adaize
+Adam
+adamant
+adamantean
+adamantine
+adamantinoma
+adamantoblast
+adamantoblastoma
+adamantoid
+adamantoma
+adamas
+Adamastor
+adambulacral
+adamellite
+Adamhood
+Adamic
+Adamical
+Adamically
+adamine
+Adamite
+adamite
+Adamitic
+Adamitical
+Adamitism
+Adamsia
+adamsite
+adance
+adangle
+Adansonia
+Adapa
+adapid
+Adapis
+adapt
+adaptability
+adaptable
+adaptation
+adaptational
+adaptationally
+adaptative
+adaptedness
+adapter
+adaption
+adaptional
+adaptionism
+adaptitude
+adaptive
+adaptively
+adaptiveness
+adaptometer
+adaptor
+adaptorial
+Adar
+adarme
+adat
+adati
+adatom
+adaunt
+adaw
+adawe
+adawlut
+adawn
+adaxial
+aday
+adays
+adazzle
+adcraft
+add
+Adda
+adda
+addability
+addable
+addax
+addebted
+added
+addedly
+addend
+addenda
+addendum
+adder
+adderbolt
+adderfish
+adderspit
+adderwort
+addibility
+addible
+addicent
+addict
+addicted
+addictedness
+addiction
+Addie
+addiment
+Addisonian
+Addisoniana
+additament
+additamentary
+addition
+additional
+additionally
+additionary
+additionist
+addititious
+additive
+additively
+additivity
+additory
+addle
+addlebrain
+addlebrained
+addlehead
+addleheaded
+addleheadedly
+addleheadedness
+addlement
+addleness
+addlepate
+addlepated
+addlepatedness
+addleplot
+addlings
+addlins
+addorsed
+address
+addressee
+addresser
+addressful
+Addressograph
+addressor
+addrest
+Addu
+adduce
+adducent
+adducer
+adducible
+adduct
+adduction
+adductive
+adductor
+Addy
+Ade
+ade
+adead
+adeem
+adeep
+Adela
+Adelaide
+Adelarthra
+Adelarthrosomata
+adelarthrosomatous
+Adelbert
+Adelea
+Adeleidae
+Adelges
+Adelia
+Adelina
+Adeline
+adeling
+adelite
+Adeliza
+adelocerous
+Adelochorda
+adelocodonic
+adelomorphic
+adelomorphous
+adelopod
+Adelops
+Adelphi
+Adelphian
+adelphogamy
+Adelphoi
+adelpholite
+adelphophagy
+ademonist
+adempted
+ademption
+adenalgia
+adenalgy
+Adenanthera
+adenase
+adenasthenia
+adendric
+adendritic
+adenectomy
+adenectopia
+adenectopic
+adenemphractic
+adenemphraxis
+adenia
+adeniform
+adenine
+adenitis
+adenization
+adenoacanthoma
+adenoblast
+adenocancroid
+adenocarcinoma
+adenocarcinomatous
+adenocele
+adenocellulitis
+adenochondroma
+adenochondrosarcoma
+adenochrome
+adenocyst
+adenocystoma
+adenocystomatous
+adenodermia
+adenodiastasis
+adenodynia
+adenofibroma
+adenofibrosis
+adenogenesis
+adenogenous
+adenographer
+adenographic
+adenographical
+adenography
+adenohypersthenia
+adenoid
+adenoidal
+adenoidism
+adenoliomyofibroma
+adenolipoma
+adenolipomatosis
+adenologaditis
+adenological
+adenology
+adenolymphocele
+adenolymphoma
+adenoma
+adenomalacia
+adenomatome
+adenomatous
+adenomeningeal
+adenometritis
+adenomycosis
+adenomyofibroma
+adenomyoma
+adenomyxoma
+adenomyxosarcoma
+adenoncus
+adenoneural
+adenoneure
+adenopathy
+adenopharyngeal
+adenopharyngitis
+adenophlegmon
+Adenophora
+adenophore
+adenophorous
+adenophthalmia
+adenophyllous
+adenophyma
+adenopodous
+adenosarcoma
+adenosclerosis
+adenose
+adenosine
+adenosis
+adenostemonous
+Adenostoma
+adenotome
+adenotomic
+adenotomy
+adenotyphoid
+adenotyphus
+adenyl
+adenylic
+Adeodatus
+Adeona
+Adephaga
+adephagan
+adephagia
+adephagous
+adept
+adeptness
+adeptship
+adequacy
+adequate
+adequately
+adequateness
+adequation
+adequative
+adermia
+adermin
+Adessenarian
+adet
+adevism
+adfected
+adfix
+adfluxion
+adglutinate
+Adhafera
+adhaka
+adhamant
+Adhara
+adharma
+adhere
+adherence
+adherency
+adherent
+adherently
+adherer
+adherescence
+adherescent
+adhesion
+adhesional
+adhesive
+adhesively
+adhesivemeter
+adhesiveness
+adhibit
+adhibition
+adiabatic
+adiabatically
+adiabolist
+adiactinic
+adiadochokinesis
+adiagnostic
+adiantiform
+Adiantum
+adiaphon
+adiaphonon
+adiaphoral
+adiaphoresis
+adiaphoretic
+adiaphorism
+adiaphorist
+adiaphoristic
+adiaphorite
+adiaphoron
+adiaphorous
+adiate
+adiathermal
+adiathermancy
+adiathermanous
+adiathermic
+adiathetic
+adiation
+Adib
+Adicea
+adicity
+Adiel
+adieu
+adieux
+Adigei
+Adighe
+Adigranth
+adigranth
+Adin
+Adinida
+adinidan
+adinole
+adion
+adipate
+adipescent
+adipic
+adipinic
+adipocele
+adipocellulose
+adipocere
+adipoceriform
+adipocerous
+adipocyte
+adipofibroma
+adipogenic
+adipogenous
+adipoid
+adipolysis
+adipolytic
+adipoma
+adipomatous
+adipometer
+adipopexia
+adipopexis
+adipose
+adiposeness
+adiposis
+adiposity
+adiposogenital
+adiposuria
+adipous
+adipsia
+adipsic
+adipsous
+adipsy
+adipyl
+Adirondack
+adit
+adital
+aditus
+adjacency
+adjacent
+adjacently
+adjag
+adject
+adjection
+adjectional
+adjectival
+adjectivally
+adjective
+adjectively
+adjectivism
+adjectivitis
+adjiger
+adjoin
+adjoined
+adjoinedly
+adjoining
+adjoint
+adjourn
+adjournal
+adjournment
+adjudge
+adjudgeable
+adjudger
+adjudgment
+adjudicate
+adjudication
+adjudicative
+adjudicator
+adjudicature
+adjunct
+adjunction
+adjunctive
+adjunctively
+adjunctly
+adjuration
+adjuratory
+adjure
+adjurer
+adjust
+adjustable
+adjustably
+adjustage
+adjustation
+adjuster
+adjustive
+adjustment
+adjutage
+adjutancy
+adjutant
+adjutantship
+adjutorious
+adjutory
+adjutrice
+adjuvant
+Adlai
+adlay
+adless
+adlet
+Adlumia
+adlumidine
+adlumine
+adman
+admarginate
+admaxillary
+admeasure
+admeasurement
+admeasurer
+admedial
+admedian
+admensuration
+admi
+adminicle
+adminicula
+adminicular
+adminiculary
+adminiculate
+adminiculation
+adminiculum
+administer
+administerd
+administerial
+administrable
+administrant
+administrate
+administration
+administrational
+administrative
+administratively
+administrator
+administratorship
+administratress
+administratrices
+administratrix
+admirability
+admirable
+admirableness
+admirably
+admiral
+admiralship
+admiralty
+admiration
+admirative
+admirator
+admire
+admired
+admiredly
+admirer
+admiring
+admiringly
+admissibility
+admissible
+admissibleness
+admissibly
+admission
+admissive
+admissory
+admit
+admittable
+admittance
+admitted
+admittedly
+admittee
+admitter
+admittible
+admix
+admixtion
+admixture
+admonish
+admonisher
+admonishingly
+admonishment
+admonition
+admonitioner
+admonitionist
+admonitive
+admonitively
+admonitor
+admonitorial
+admonitorily
+admonitory
+admonitrix
+admortization
+adnascence
+adnascent
+adnate
+adnation
+adnephrine
+adnerval
+adneural
+adnex
+adnexal
+adnexed
+adnexitis
+adnexopexy
+adnominal
+adnominally
+adnomination
+adnoun
+ado
+adobe
+adolesce
+adolescence
+adolescency
+adolescent
+adolescently
+Adolph
+Adolphus
+Adonai
+Adonean
+Adonia
+Adoniad
+Adonian
+Adonic
+adonidin
+adonin
+Adoniram
+Adonis
+adonite
+adonitol
+adonize
+adoperate
+adoperation
+adopt
+adoptability
+adoptable
+adoptant
+adoptative
+adopted
+adoptedly
+adoptee
+adopter
+adoptian
+adoptianism
+adoptianist
+adoption
+adoptional
+adoptionism
+adoptionist
+adoptious
+adoptive
+adoptively
+adorability
+adorable
+adorableness
+adorably
+adoral
+adorally
+adorant
+Adorantes
+adoration
+adoratory
+adore
+adorer
+Adoretus
+adoringly
+adorn
+adorner
+adorningly
+adornment
+adosculation
+adossed
+adoulie
+adown
+Adoxa
+Adoxaceae
+adoxaceous
+adoxography
+adoxy
+adoze
+adpao
+adpress
+adpromission
+adradial
+adradially
+adradius
+Adramelech
+Adrammelech
+adread
+adream
+adreamed
+adreamt
+adrectal
+adrenal
+adrenalectomize
+adrenalectomy
+Adrenalin
+adrenaline
+adrenalize
+adrenalone
+adrenergic
+adrenin
+adrenine
+adrenochrome
+adrenocortical
+adrenocorticotropic
+adrenolysis
+adrenolytic
+adrenotropic
+Adrian
+Adriana
+Adriatic
+Adrienne
+adrift
+adrip
+adroit
+adroitly
+adroitness
+adroop
+adrop
+adrostral
+adrowse
+adrue
+adry
+adsbud
+adscendent
+adscititious
+adscititiously
+adscript
+adscripted
+adscription
+adscriptitious
+adscriptitius
+adscriptive
+adsessor
+adsheart
+adsignification
+adsignify
+adsmith
+adsmithing
+adsorb
+adsorbable
+adsorbate
+adsorbent
+adsorption
+adsorptive
+adstipulate
+adstipulation
+adstipulator
+adterminal
+adtevac
+adular
+adularescence
+adularia
+adulate
+adulation
+adulator
+adulatory
+adulatress
+Adullam
+Adullamite
+adult
+adulter
+adulterant
+adulterate
+adulterately
+adulterateness
+adulteration
+adulterator
+adulterer
+adulteress
+adulterine
+adulterize
+adulterous
+adulterously
+adultery
+adulthood
+adulticidal
+adulticide
+adultness
+adultoid
+adumbral
+adumbrant
+adumbrate
+adumbration
+adumbrative
+adumbratively
+adunc
+aduncate
+aduncated
+aduncity
+aduncous
+adusk
+adust
+adustion
+adustiosis
+Advaita
+advance
+advanceable
+advanced
+advancedness
+advancement
+advancer
+advancing
+advancingly
+advancive
+advantage
+advantageous
+advantageously
+advantageousness
+advection
+advectitious
+advective
+advehent
+advene
+advenience
+advenient
+Advent
+advential
+Adventism
+Adventist
+adventitia
+adventitious
+adventitiously
+adventitiousness
+adventive
+adventual
+adventure
+adventureful
+adventurement
+adventurer
+adventureship
+adventuresome
+adventuresomely
+adventuresomeness
+adventuress
+adventurish
+adventurous
+adventurously
+adventurousness
+adverb
+adverbial
+adverbiality
+adverbialize
+adverbially
+adverbiation
+adversant
+adversaria
+adversarious
+adversary
+adversative
+adversatively
+adverse
+adversely
+adverseness
+adversifoliate
+adversifolious
+adversity
+advert
+advertence
+advertency
+advertent
+advertently
+advertisable
+advertise
+advertisee
+advertisement
+advertiser
+advertising
+advice
+adviceful
+advisability
+advisable
+advisableness
+advisably
+advisal
+advisatory
+advise
+advised
+advisedly
+advisedness
+advisee
+advisement
+adviser
+advisership
+advisive
+advisiveness
+advisor
+advisorily
+advisory
+advocacy
+advocate
+advocateship
+advocatess
+advocation
+advocator
+advocatory
+advocatress
+advocatrice
+advocatrix
+advolution
+advowee
+advowson
+ady
+adynamia
+adynamic
+adynamy
+adyta
+adyton
+adytum
+adz
+adze
+adzer
+adzooks
+ae
+Aeacides
+Aeacus
+Aeaean
+Aechmophorus
+aecial
+Aecidiaceae
+aecidial
+aecidioform
+Aecidiomycetes
+aecidiospore
+aecidiostage
+aecidium
+aeciospore
+aeciostage
+aecioteliospore
+aeciotelium
+aecium
+aedeagus
+Aedes
+aedicula
+aedile
+aedileship
+aedilian
+aedilic
+aedilitian
+aedility
+aedoeagus
+aefald
+aefaldness
+aefaldy
+aefauld
+aegagropila
+aegagropile
+aegagrus
+Aegean
+aegerian
+aegeriid
+Aegeriidae
+Aegialitis
+aegicrania
+Aegina
+Aeginetan
+Aeginetic
+Aegipan
+aegirine
+aegirinolite
+aegirite
+aegis
+Aegisthus
+Aegithalos
+Aegithognathae
+aegithognathism
+aegithognathous
+Aegle
+Aegopodium
+aegrotant
+aegyptilla
+aegyrite
+aeluroid
+Aeluroidea
+aelurophobe
+aelurophobia
+aeluropodous
+aenach
+aenean
+aeneolithic
+aeneous
+aenigmatite
+aeolharmonica
+Aeolia
+Aeolian
+Aeolic
+Aeolicism
+aeolid
+Aeolidae
+Aeolididae
+aeolina
+aeoline
+aeolipile
+Aeolis
+Aeolism
+Aeolist
+aeolistic
+aeolodicon
+aeolodion
+aeolomelodicon
+aeolopantalon
+aeolotropic
+aeolotropism
+aeolotropy
+aeolsklavier
+aeon
+aeonial
+aeonian
+aeonist
+Aepyceros
+Aepyornis
+Aepyornithidae
+Aepyornithiformes
+Aequi
+Aequian
+Aequiculi
+Aequipalpia
+aequoreal
+aer
+aerage
+aerarian
+aerarium
+aerate
+aeration
+aerator
+aerenchyma
+aerenterectasia
+aerial
+aerialist
+aeriality
+aerially
+aerialness
+aeric
+aerical
+Aerides
+aerie
+aeried
+aerifaction
+aeriferous
+aerification
+aeriform
+aerify
+aero
+Aerobacter
+aerobate
+aerobatic
+aerobatics
+aerobe
+aerobian
+aerobic
+aerobically
+aerobiologic
+aerobiological
+aerobiologically
+aerobiologist
+aerobiology
+aerobion
+aerobiont
+aerobioscope
+aerobiosis
+aerobiotic
+aerobiotically
+aerobious
+aerobium
+aeroboat
+Aerobranchia
+aerobranchiate
+aerobus
+aerocamera
+aerocartograph
+Aerocharidae
+aerocolpos
+aerocraft
+aerocurve
+aerocyst
+aerodermectasia
+aerodone
+aerodonetic
+aerodonetics
+aerodrome
+aerodromics
+aerodynamic
+aerodynamical
+aerodynamicist
+aerodynamics
+aerodyne
+aeroembolism
+aeroenterectasia
+aerofoil
+aerogel
+aerogen
+aerogenes
+aerogenesis
+aerogenic
+aerogenically
+aerogenous
+aerogeologist
+aerogeology
+aerognosy
+aerogram
+aerograph
+aerographer
+aerographic
+aerographical
+aerographics
+aerography
+aerogun
+aerohydrodynamic
+aerohydropathy
+aerohydroplane
+aerohydrotherapy
+aerohydrous
+aeroides
+aerolite
+aerolith
+aerolithology
+aerolitic
+aerolitics
+aerologic
+aerological
+aerologist
+aerology
+aeromaechanic
+aeromancer
+aeromancy
+aeromantic
+aeromarine
+aeromechanical
+aeromechanics
+aerometeorograph
+aerometer
+aerometric
+aerometry
+aeromotor
+aeronat
+aeronaut
+aeronautic
+aeronautical
+aeronautically
+aeronautics
+aeronautism
+aeronef
+aeroneurosis
+aeropathy
+Aerope
+aeroperitoneum
+aeroperitonia
+aerophagia
+aerophagist
+aerophagy
+aerophane
+aerophilatelic
+aerophilatelist
+aerophilately
+aerophile
+aerophilic
+aerophilous
+aerophobia
+aerophobic
+aerophone
+aerophor
+aerophore
+aerophotography
+aerophysical
+aerophysics
+aerophyte
+aeroplane
+aeroplaner
+aeroplanist
+aeropleustic
+aeroporotomy
+aeroscepsis
+aeroscepsy
+aeroscope
+aeroscopic
+aeroscopically
+aeroscopy
+aerose
+aerosiderite
+aerosiderolite
+Aerosol
+aerosol
+aerosphere
+aerosporin
+aerostat
+aerostatic
+aerostatical
+aerostatics
+aerostation
+aerosteam
+aerotactic
+aerotaxis
+aerotechnical
+aerotherapeutics
+aerotherapy
+aerotonometer
+aerotonometric
+aerotonometry
+aerotropic
+aerotropism
+aeroyacht
+aeruginous
+aerugo
+aery
+aes
+Aeschylean
+Aeschynanthus
+Aeschynomene
+aeschynomenous
+Aesculaceae
+aesculaceous
+Aesculapian
+Aesculapius
+Aesculus
+Aesopian
+Aesopic
+aesthete
+aesthetic
+aesthetical
+aesthetically
+aesthetician
+aestheticism
+aestheticist
+aestheticize
+aesthetics
+aesthiology
+aesthophysiology
+Aestii
+aethalioid
+aethalium
+aetheogam
+aetheogamic
+aetheogamous
+aethered
+Aethionema
+aethogen
+aethrioscope
+Aethusa
+Aetian
+aetiogenic
+aetiotropic
+aetiotropically
+Aetobatidae
+Aetobatus
+Aetolian
+Aetomorphae
+aetosaur
+aetosaurian
+Aetosaurus
+aevia
+aface
+afaint
+Afar
+afar
+afara
+afear
+afeard
+afeared
+afebrile
+Afenil
+afernan
+afetal
+affa
+affability
+affable
+affableness
+affably
+affabrous
+affair
+affaite
+affect
+affectable
+affectate
+affectation
+affectationist
+affected
+affectedly
+affectedness
+affecter
+affectibility
+affectible
+affecting
+affectingly
+affection
+affectional
+affectionally
+affectionate
+affectionately
+affectionateness
+affectioned
+affectious
+affective
+affectively
+affectivity
+affeer
+affeerer
+affeerment
+affeir
+affenpinscher
+affenspalte
+afferent
+affettuoso
+affiance
+affiancer
+affiant
+affidation
+affidavit
+affidavy
+affiliable
+affiliate
+affiliation
+affinal
+affination
+affine
+affined
+affinely
+affinitative
+affinitatively
+affinite
+affinition
+affinitive
+affinity
+affirm
+affirmable
+affirmably
+affirmance
+affirmant
+affirmation
+affirmative
+affirmatively
+affirmatory
+affirmer
+affirmingly
+affix
+affixal
+affixation
+affixer
+affixion
+affixture
+afflation
+afflatus
+afflict
+afflicted
+afflictedness
+afflicter
+afflicting
+afflictingly
+affliction
+afflictionless
+afflictive
+afflictively
+affluence
+affluent
+affluently
+affluentness
+afflux
+affluxion
+afforce
+afforcement
+afford
+affordable
+afforest
+afforestable
+afforestation
+afforestment
+afformative
+affranchise
+affranchisement
+affray
+affrayer
+affreight
+affreighter
+affreightment
+affricate
+affricated
+affrication
+affricative
+affright
+affrighted
+affrightedly
+affrighter
+affrightful
+affrightfully
+affrightingly
+affrightment
+affront
+affronte
+affronted
+affrontedly
+affrontedness
+affronter
+affronting
+affrontingly
+affrontingness
+affrontive
+affrontiveness
+affrontment
+affuse
+affusion
+affy
+Afghan
+afghani
+afield
+Afifi
+afikomen
+afire
+aflagellar
+aflame
+aflare
+aflat
+aflaunt
+aflicker
+aflight
+afloat
+aflow
+aflower
+afluking
+aflush
+aflutter
+afoam
+afoot
+afore
+aforehand
+aforenamed
+aforesaid
+aforethought
+aforetime
+aforetimes
+afortiori
+afoul
+afraid
+afraidness
+Aframerican
+Afrasia
+Afrasian
+afreet
+afresh
+afret
+Afric
+African
+Africana
+Africanism
+Africanist
+Africanization
+Africanize
+Africanoid
+Africanthropus
+Afridi
+Afrikaans
+Afrikander
+Afrikanderdom
+Afrikanderism
+Afrikaner
+Afrogaea
+Afrogaean
+afront
+afrown
+Afshah
+Afshar
+aft
+aftaba
+after
+afteract
+afterage
+afterattack
+afterband
+afterbeat
+afterbirth
+afterblow
+afterbody
+afterbrain
+afterbreach
+afterbreast
+afterburner
+afterburning
+aftercare
+aftercareer
+aftercast
+aftercataract
+aftercause
+afterchance
+afterchrome
+afterchurch
+afterclap
+afterclause
+aftercome
+aftercomer
+aftercoming
+aftercooler
+aftercost
+aftercourse
+aftercrop
+aftercure
+afterdamp
+afterdate
+afterdays
+afterdeck
+afterdinner
+afterdrain
+afterdrops
+aftereffect
+afterend
+aftereye
+afterfall
+afterfame
+afterfeed
+afterfermentation
+afterform
+afterfriend
+afterfruits
+afterfuture
+aftergame
+aftergas
+afterglide
+afterglow
+aftergo
+aftergood
+aftergrass
+aftergrave
+aftergrief
+aftergrind
+aftergrowth
+afterguard
+afterguns
+afterhand
+afterharm
+afterhatch
+afterhelp
+afterhend
+afterhold
+afterhope
+afterhours
+afterimage
+afterimpression
+afterings
+afterking
+afterknowledge
+afterlife
+afterlifetime
+afterlight
+afterloss
+afterlove
+aftermark
+aftermarriage
+aftermass
+aftermast
+aftermath
+aftermatter
+aftermeal
+aftermilk
+aftermost
+afternight
+afternoon
+afternoons
+afternose
+afternote
+afteroar
+afterpain
+afterpart
+afterpast
+afterpeak
+afterpiece
+afterplanting
+afterplay
+afterpressure
+afterproof
+afterrake
+afterreckoning
+afterrider
+afterripening
+afterroll
+afterschool
+aftersend
+aftersensation
+aftershaft
+aftershafted
+aftershine
+aftership
+aftershock
+aftersong
+aftersound
+afterspeech
+afterspring
+afterstain
+afterstate
+afterstorm
+afterstrain
+afterstretch
+afterstudy
+afterswarm
+afterswarming
+afterswell
+aftertan
+aftertask
+aftertaste
+afterthinker
+afterthought
+afterthoughted
+afterthrift
+aftertime
+aftertimes
+aftertouch
+aftertreatment
+aftertrial
+afterturn
+aftervision
+afterwale
+afterwar
+afterward
+afterwards
+afterwash
+afterwhile
+afterwisdom
+afterwise
+afterwit
+afterwitted
+afterwork
+afterworking
+afterworld
+afterwrath
+afterwrist
+aftmost
+Aftonian
+aftosa
+aftward
+aftwards
+afunction
+afunctional
+afwillite
+Afzelia
+aga
+agabanee
+agacante
+agacella
+Agaces
+Agade
+Agag
+again
+against
+againstand
+agal
+agalactia
+agalactic
+agalactous
+agalawood
+agalaxia
+agalaxy
+Agalena
+Agalenidae
+Agalinis
+agalite
+agalloch
+agallochum
+agallop
+agalma
+agalmatolite
+agalwood
+Agama
+agama
+Agamae
+Agamemnon
+agamete
+agami
+agamian
+agamic
+agamically
+agamid
+Agamidae
+agamobium
+agamogenesis
+agamogenetic
+agamogenetically
+agamogony
+agamoid
+agamont
+agamospore
+agamous
+agamy
+aganglionic
+Aganice
+Aganippe
+Agao
+Agaonidae
+Agapanthus
+agape
+Agapemone
+Agapemonian
+Agapemonist
+Agapemonite
+agapetae
+agapeti
+agapetid
+Agapetidae
+Agapornis
+agar
+agaric
+agaricaceae
+agaricaceous
+Agaricales
+agaricic
+agariciform
+agaricin
+agaricine
+agaricoid
+Agaricus
+Agaristidae
+agarita
+Agarum
+agarwal
+agasp
+Agastache
+Agastreae
+agastric
+agastroneuria
+agate
+agateware
+Agatha
+Agathaea
+Agathaumas
+agathin
+Agathis
+agathism
+agathist
+agathodaemon
+agathodaemonic
+agathokakological
+agathology
+Agathosma
+agatiferous
+agatiform
+agatine
+agatize
+agatoid
+agaty
+Agau
+Agave
+agavose
+Agawam
+Agaz
+agaze
+agazed
+Agdistis
+age
+aged
+agedly
+agedness
+agee
+Agelacrinites
+Agelacrinitidae
+Agelaius
+Agelaus
+ageless
+agelessness
+agelong
+agen
+Agena
+agency
+agenda
+agendum
+agenesia
+agenesic
+agenesis
+agennetic
+agent
+agentess
+agential
+agentival
+agentive
+agentry
+agentship
+ageometrical
+ager
+Ageratum
+ageusia
+ageusic
+ageustia
+agger
+aggerate
+aggeration
+aggerose
+Aggie
+agglomerant
+agglomerate
+agglomerated
+agglomeratic
+agglomeration
+agglomerative
+agglomerator
+agglutinability
+agglutinable
+agglutinant
+agglutinate
+agglutination
+agglutinationist
+agglutinative
+agglutinator
+agglutinin
+agglutinize
+agglutinogen
+agglutinogenic
+agglutinoid
+agglutinoscope
+agglutogenic
+aggradation
+aggradational
+aggrade
+aggrandizable
+aggrandize
+aggrandizement
+aggrandizer
+aggrate
+aggravate
+aggravating
+aggravatingly
+aggravation
+aggravative
+aggravator
+aggregable
+aggregant
+Aggregata
+Aggregatae
+aggregate
+aggregately
+aggregateness
+aggregation
+aggregative
+aggregator
+aggregatory
+aggress
+aggressin
+aggression
+aggressionist
+aggressive
+aggressively
+aggressiveness
+aggressor
+aggrievance
+aggrieve
+aggrieved
+aggrievedly
+aggrievedness
+aggrievement
+aggroup
+aggroupment
+aggry
+aggur
+agha
+Aghan
+aghanee
+aghast
+aghastness
+Aghlabite
+Aghorapanthi
+Aghori
+Agialid
+Agib
+Agiel
+agilawood
+agile
+agilely
+agileness
+agility
+agillawood
+aging
+agio
+agiotage
+agist
+agistator
+agistment
+agistor
+agitable
+agitant
+agitate
+agitatedly
+agitation
+agitational
+agitationist
+agitative
+agitator
+agitatorial
+agitatrix
+agitprop
+Agkistrodon
+agla
+Aglaia
+aglance
+Aglaonema
+Aglaos
+aglaozonia
+aglare
+Aglaspis
+Aglauros
+agleaf
+agleam
+aglet
+aglethead
+agley
+aglimmer
+aglint
+Aglipayan
+Aglipayano
+aglitter
+aglobulia
+Aglossa
+aglossal
+aglossate
+aglossia
+aglow
+aglucon
+aglutition
+aglycosuric
+Aglypha
+aglyphodont
+Aglyphodonta
+Aglyphodontia
+aglyphous
+agmatine
+agmatology
+agminate
+agminated
+agnail
+agname
+agnamed
+agnate
+Agnatha
+agnathia
+agnathic
+Agnathostomata
+agnathostomatous
+agnathous
+agnatic
+agnatically
+agnation
+agnel
+Agnes
+agnification
+agnize
+Agnoetae
+Agnoete
+Agnoetism
+agnoiology
+Agnoite
+agnomen
+agnomical
+agnominal
+agnomination
+agnosia
+agnosis
+agnostic
+agnostically
+agnosticism
+Agnostus
+agnosy
+Agnotozoic
+agnus
+ago
+agog
+agoge
+agogic
+agogics
+agoho
+agoing
+agomensin
+agomphiasis
+agomphious
+agomphosis
+agon
+agonal
+agone
+agoniada
+agoniadin
+agoniatite
+Agoniatites
+agonic
+agonied
+agonist
+Agonista
+agonistarch
+agonistic
+agonistically
+agonistics
+agonium
+agonize
+agonizedly
+agonizer
+agonizingly
+Agonostomus
+agonothete
+agonothetic
+agony
+agora
+agoranome
+agoraphobia
+agouara
+agouta
+agouti
+agpaite
+agpaitic
+Agra
+agraffee
+agrah
+agral
+agrammatical
+agrammatism
+Agrania
+agranulocyte
+agranulocytosis
+agranuloplastic
+Agrapha
+agraphia
+agraphic
+agrarian
+agrarianism
+agrarianize
+agrarianly
+Agrauleum
+agre
+agree
+agreeability
+agreeable
+agreeableness
+agreeably
+agreed
+agreeing
+agreeingly
+agreement
+agreer
+agregation
+agrege
+agrestal
+agrestial
+agrestian
+agrestic
+agria
+agricere
+agricole
+agricolist
+agricolite
+agricolous
+agricultor
+agricultural
+agriculturalist
+agriculturally
+agriculture
+agriculturer
+agriculturist
+Agrilus
+Agrimonia
+agrimony
+agrimotor
+agrin
+Agriochoeridae
+Agriochoerus
+agriological
+agriologist
+agriology
+Agrionia
+agrionid
+Agrionidae
+Agriotes
+Agriotypidae
+Agriotypus
+agrise
+agrito
+agroan
+agrobiologic
+agrobiological
+agrobiologically
+agrobiologist
+agrobiology
+agrogeological
+agrogeologically
+agrogeology
+agrologic
+agrological
+agrologically
+agrology
+agrom
+Agromyza
+agromyzid
+Agromyzidae
+agronome
+agronomial
+agronomic
+agronomical
+agronomics
+agronomist
+agronomy
+agroof
+agrope
+Agropyron
+Agrostemma
+agrosteral
+Agrostis
+agrostographer
+agrostographic
+agrostographical
+agrostography
+agrostologic
+agrostological
+agrostologist
+agrostology
+agrotechny
+Agrotis
+aground
+agrufe
+agruif
+agrypnia
+agrypnotic
+agsam
+agua
+aguacate
+Aguacateca
+aguavina
+Agudist
+ague
+aguelike
+agueproof
+agueweed
+aguey
+aguilarite
+aguilawood
+aguinaldo
+aguirage
+aguish
+aguishly
+aguishness
+agunah
+agush
+agust
+agy
+Agyieus
+agynarious
+agynary
+agynous
+agyrate
+agyria
+Ah
+ah
+aha
+ahaaina
+ahankara
+Ahantchuyuk
+ahartalav
+ahaunch
+ahead
+aheap
+ahem
+Ahepatokla
+Ahet
+ahey
+ahimsa
+ahind
+ahint
+Ahir
+ahluwalia
+ahmadi
+Ahmadiya
+Ahmed
+Ahmet
+Ahnfeltia
+aho
+Ahom
+ahong
+ahorse
+ahorseback
+Ahousaht
+ahoy
+Ahrendahronon
+Ahriman
+Ahrimanian
+ahsan
+Aht
+Ahtena
+ahu
+ahuatle
+ahuehuete
+ahull
+ahum
+ahungered
+ahungry
+ahunt
+ahura
+ahush
+ahwal
+ahypnia
+ai
+Aias
+Aiawong
+aichmophobia
+aid
+aidable
+aidance
+aidant
+aide
+Aidenn
+aider
+Aides
+aidful
+aidless
+aiel
+aigialosaur
+Aigialosauridae
+Aigialosaurus
+aiglet
+aigremore
+aigrette
+aiguille
+aiguillesque
+aiguillette
+aiguilletted
+aikinite
+ail
+ailantery
+ailanthic
+Ailanthus
+ailantine
+ailanto
+aile
+Aileen
+aileron
+ailette
+Ailie
+ailing
+aillt
+ailment
+ailsyte
+Ailuridae
+ailuro
+ailuroid
+Ailuroidea
+Ailuropoda
+Ailuropus
+Ailurus
+ailweed
+aim
+Aimak
+aimara
+Aimee
+aimer
+aimful
+aimfully
+aiming
+aimless
+aimlessly
+aimlessness
+Aimore
+aimworthiness
+ainaleh
+ainhum
+ainoi
+ainsell
+aint
+Ainu
+aion
+aionial
+air
+Aira
+airable
+airampo
+airan
+airbound
+airbrained
+airbrush
+aircraft
+aircraftman
+aircraftsman
+aircraftswoman
+aircraftwoman
+aircrew
+aircrewman
+airdock
+airdrome
+airdrop
+aire
+Airedale
+airedale
+airer
+airfield
+airfoil
+airframe
+airfreight
+airfreighter
+airgraphics
+airhead
+airiferous
+airified
+airily
+airiness
+airing
+airish
+airless
+airlift
+airlike
+airliner
+airmail
+airman
+airmanship
+airmark
+airmarker
+airmonger
+airohydrogen
+airometer
+airpark
+airphobia
+airplane
+airplanist
+airport
+airproof
+airscape
+airscrew
+airship
+airsick
+airsickness
+airstrip
+airt
+airtight
+airtightly
+airtightness
+airward
+airwards
+airway
+airwayman
+airwoman
+airworthiness
+airworthy
+airy
+aischrolatreia
+aiseweed
+aisle
+aisled
+aisleless
+aisling
+Aissaoua
+Aissor
+aisteoir
+Aistopoda
+Aistopodes
+ait
+aitch
+aitchbone
+aitchless
+aitchpiece
+aitesis
+aithochroi
+aition
+aitiotropic
+Aitkenite
+Aitutakian
+aiwan
+Aix
+aizle
+Aizoaceae
+aizoaceous
+Aizoon
+Ajaja
+ajaja
+ajangle
+ajar
+ajari
+Ajatasatru
+ajava
+ajhar
+ajivika
+ajog
+ajoint
+ajowan
+Ajuga
+ajutment
+ak
+Aka
+aka
+Akal
+akala
+Akali
+akalimba
+akamatsu
+Akamnik
+Akan
+Akanekunik
+Akania
+Akaniaceae
+akaroa
+akasa
+Akawai
+akazga
+akazgine
+akcheh
+ake
+akeake
+akebi
+Akebia
+akee
+akeki
+akeley
+akenobeite
+akepiro
+akerite
+akey
+Akha
+Akhissar
+Akhlame
+Akhmimic
+akhoond
+akhrot
+akhyana
+akia
+Akim
+akimbo
+akin
+akindle
+akinesia
+akinesic
+akinesis
+akinete
+akinetic
+Akiskemikinik
+Akiyenik
+Akka
+Akkad
+Akkadian
+Akkadist
+akmudar
+akmuddar
+aknee
+ako
+akoasm
+akoasma
+akoluthia
+akonge
+Akontae
+Akoulalion
+akov
+akpek
+Akra
+akra
+Akrabattine
+akroasis
+akrochordite
+akroterion
+Aktistetae
+Aktistete
+Aktivismus
+Aktivist
+aku
+akuammine
+akule
+akund
+Akwapim
+Al
+al
+ala
+Alabama
+Alabaman
+Alabamian
+alabamide
+alabamine
+alabandite
+alabarch
+alabaster
+alabastos
+alabastrian
+alabastrine
+alabastrites
+alabastron
+alabastrum
+alacha
+alack
+alackaday
+alacreatine
+alacreatinine
+alacrify
+alacritous
+alacrity
+Alactaga
+alada
+Aladdin
+Aladdinize
+Aladfar
+Aladinist
+alaihi
+Alain
+alaite
+Alaki
+Alala
+alala
+alalite
+alalonga
+alalunga
+alalus
+Alamanni
+Alamannian
+Alamannic
+alameda
+alamo
+alamodality
+alamonti
+alamosite
+alamoth
+Alan
+alan
+aland
+Alangiaceae
+alangin
+alangine
+Alangium
+alani
+alanine
+alannah
+Alans
+alantic
+alantin
+alantol
+alantolactone
+alantolic
+alanyl
+alar
+Alarbus
+alares
+Alaria
+Alaric
+alarm
+alarmable
+alarmed
+alarmedly
+alarming
+alarmingly
+alarmism
+alarmist
+Alarodian
+alarum
+alary
+alas
+Alascan
+Alaska
+alaskaite
+Alaskan
+alaskite
+Alastair
+Alaster
+alastrim
+alate
+alated
+alatern
+alaternus
+alation
+Alauda
+Alaudidae
+alaudine
+Alaunian
+Alawi
+Alb
+alb
+alba
+albacore
+albahaca
+Albainn
+Alban
+alban
+Albanenses
+Albanensian
+Albania
+Albanian
+albanite
+Albany
+albarco
+albardine
+albarello
+albarium
+albaspidin
+albata
+Albatros
+albatross
+albe
+albedo
+albedograph
+albee
+albeit
+Alberene
+Albert
+Alberta
+albertin
+Albertina
+Albertine
+Albertinian
+Albertist
+albertite
+Alberto
+albertustaler
+albertype
+albescence
+albescent
+albespine
+albetad
+Albi
+Albian
+albicans
+albicant
+albication
+albiculi
+albification
+albificative
+albiflorous
+albify
+Albigenses
+Albigensian
+Albigensianism
+Albin
+albinal
+albiness
+albinic
+albinism
+albinistic
+albino
+albinoism
+albinotic
+albinuria
+Albion
+Albireo
+albite
+albitic
+albitite
+albitization
+albitophyre
+Albizzia
+albocarbon
+albocinereous
+Albococcus
+albocracy
+Alboin
+albolite
+albolith
+albopannin
+albopruinose
+alboranite
+Albrecht
+Albright
+albronze
+Albruna
+Albuca
+Albuginaceae
+albuginea
+albugineous
+albuginitis
+albugo
+album
+albumean
+albumen
+albumenization
+albumenize
+albumenizer
+albumimeter
+albumin
+albuminate
+albuminaturia
+albuminiferous
+albuminiform
+albuminimeter
+albuminimetry
+albuminiparous
+albuminization
+albuminize
+albuminocholia
+albuminofibrin
+albuminogenous
+albuminoid
+albuminoidal
+albuminolysis
+albuminometer
+albuminometry
+albuminone
+albuminorrhea
+albuminoscope
+albuminose
+albuminosis
+albuminous
+albuminousness
+albuminuria
+albuminuric
+albumoid
+albumoscope
+albumose
+albumosuria
+alburn
+alburnous
+alburnum
+albus
+albutannin
+Albyn
+Alca
+Alcaaba
+Alcae
+Alcaic
+alcaide
+alcalde
+alcaldeship
+alcaldia
+Alcaligenes
+alcalizate
+Alcalzar
+alcamine
+alcanna
+Alcantara
+Alcantarines
+alcarraza
+alcatras
+alcazar
+Alcedines
+Alcedinidae
+Alcedininae
+Alcedo
+alcelaphine
+Alcelaphus
+Alces
+alchemic
+alchemical
+alchemically
+Alchemilla
+alchemist
+alchemistic
+alchemistical
+alchemistry
+alchemize
+alchemy
+alchera
+alcheringa
+alchimy
+alchitran
+alchochoden
+Alchornea
+alchymy
+Alcibiadean
+Alcicornium
+Alcidae
+alcidine
+alcine
+Alcippe
+alclad
+alco
+alcoate
+alcogel
+alcogene
+alcohate
+alcohol
+alcoholate
+alcoholature
+alcoholdom
+alcoholemia
+alcoholic
+alcoholically
+alcoholicity
+alcoholimeter
+alcoholism
+alcoholist
+alcoholizable
+alcoholization
+alcoholize
+alcoholmeter
+alcoholmetric
+alcoholomania
+alcoholometer
+alcoholometric
+alcoholometrical
+alcoholometry
+alcoholophilia
+alcoholuria
+alcoholysis
+alcoholytic
+Alcor
+Alcoran
+Alcoranic
+Alcoranist
+alcornoco
+alcornoque
+alcosol
+Alcotate
+alcove
+alcovinometer
+Alcuinian
+alcyon
+Alcyonacea
+alcyonacean
+Alcyonaria
+alcyonarian
+Alcyone
+Alcyones
+Alcyoniaceae
+alcyonic
+alcyoniform
+Alcyonium
+alcyonoid
+aldamine
+aldane
+aldazin
+aldazine
+aldeament
+Aldebaran
+aldebaranium
+aldehol
+aldehydase
+aldehyde
+aldehydic
+aldehydine
+aldehydrol
+alder
+Alderamin
+alderman
+aldermanate
+aldermancy
+aldermaness
+aldermanic
+aldermanical
+aldermanity
+aldermanlike
+aldermanly
+aldermanry
+aldermanship
+aldern
+Alderney
+alderwoman
+Aldhafara
+Aldhafera
+aldim
+aldime
+aldimine
+Aldine
+aldine
+aldoheptose
+aldohexose
+aldoketene
+aldol
+aldolization
+aldolize
+aldononose
+aldopentose
+aldose
+aldoside
+aldoxime
+Aldrovanda
+Aldus
+ale
+Alea
+aleak
+aleatory
+alebench
+aleberry
+Alebion
+alec
+alecithal
+alecize
+Aleck
+aleconner
+alecost
+Alectoria
+alectoria
+Alectorides
+alectoridine
+alectorioid
+Alectoris
+alectoromachy
+alectoromancy
+Alectoromorphae
+alectoromorphous
+Alectoropodes
+alectoropodous
+Alectrion
+Alectrionidae
+alectryomachy
+alectryomancy
+Alectryon
+alecup
+alee
+alef
+alefnull
+aleft
+alefzero
+alegar
+alehoof
+alehouse
+Alejandro
+alem
+alemana
+Alemanni
+Alemannian
+Alemannic
+Alemannish
+alembic
+alembicate
+alembroth
+Alemite
+alemite
+alemmal
+alemonger
+alen
+Alencon
+Aleochara
+aleph
+alephs
+alephzero
+alepidote
+alepole
+alepot
+Aleppine
+Aleppo
+alerce
+alerse
+alert
+alertly
+alertness
+alesan
+alestake
+aletap
+aletaster
+Alethea
+alethiology
+alethopteis
+alethopteroid
+alethoscope
+aletocyte
+Aletris
+alette
+aleukemic
+Aleurites
+aleuritic
+Aleurobius
+Aleurodes
+Aleurodidae
+aleuromancy
+aleurometer
+aleuronat
+aleurone
+aleuronic
+aleuroscope
+Aleut
+Aleutian
+Aleutic
+aleutite
+alevin
+alewife
+Alex
+Alexander
+alexanders
+Alexandra
+Alexandreid
+Alexandrian
+Alexandrianism
+Alexandrina
+Alexandrine
+alexandrite
+Alexas
+Alexia
+alexia
+Alexian
+alexic
+alexin
+alexinic
+alexipharmacon
+alexipharmacum
+alexipharmic
+alexipharmical
+alexipyretic
+Alexis
+alexiteric
+alexiterical
+Alexius
+aleyard
+Aleyrodes
+aleyrodid
+Aleyrodidae
+Alf
+alf
+alfa
+alfaje
+alfalfa
+alfaqui
+alfaquin
+alfenide
+alfet
+alfilaria
+alfileria
+alfilerilla
+alfilerillo
+alfiona
+Alfirk
+alfonsin
+alfonso
+alforja
+Alfred
+Alfreda
+alfresco
+alfridaric
+alfridary
+Alfur
+Alfurese
+Alfuro
+alga
+algae
+algaecide
+algaeological
+algaeologist
+algaeology
+algaesthesia
+algaesthesis
+algal
+algalia
+Algaroth
+algarroba
+algarrobilla
+algarrobin
+Algarsife
+Algarsyf
+algate
+Algebar
+algebra
+algebraic
+algebraical
+algebraically
+algebraist
+algebraization
+algebraize
+Algedi
+algedo
+algedonic
+algedonics
+algefacient
+Algenib
+Algerian
+Algerine
+algerine
+Algernon
+algesia
+algesic
+algesis
+algesthesis
+algetic
+Algic
+algic
+algid
+algidity
+algidness
+Algieba
+algific
+algin
+alginate
+algine
+alginic
+alginuresis
+algiomuscular
+algist
+algivorous
+algocyan
+algodoncillo
+algodonite
+algoesthesiometer
+algogenic
+algoid
+Algol
+algolagnia
+algolagnic
+algolagnist
+algolagny
+algological
+algologist
+algology
+Algoman
+algometer
+algometric
+algometrical
+algometrically
+algometry
+Algomian
+Algomic
+Algonkian
+Algonquian
+Algonquin
+algophilia
+algophilist
+algophobia
+algor
+Algorab
+Algores
+algorism
+algorismic
+algorist
+algoristic
+algorithm
+algorithmic
+algosis
+algous
+algovite
+algraphic
+algraphy
+alguazil
+algum
+Algy
+Alhagi
+Alhambra
+Alhambraic
+Alhambresque
+Alhena
+alhenna
+alias
+Alibamu
+alibangbang
+alibi
+alibility
+alible
+Alicant
+Alice
+alichel
+Alichino
+Alicia
+Alick
+alicoche
+alictisal
+alicyclic
+Alida
+alidade
+Alids
+alien
+alienability
+alienable
+alienage
+alienate
+alienation
+alienator
+aliency
+alienee
+aliener
+alienicola
+alienigenate
+alienism
+alienist
+alienize
+alienor
+alienship
+aliethmoid
+aliethmoidal
+alif
+aliferous
+aliform
+aligerous
+alight
+align
+aligner
+alignment
+aligreek
+aliipoe
+alike
+alikeness
+alikewise
+Alikuluf
+Alikulufan
+alilonghi
+alima
+aliment
+alimental
+alimentally
+alimentariness
+alimentary
+alimentation
+alimentative
+alimentatively
+alimentativeness
+alimenter
+alimentic
+alimentive
+alimentiveness
+alimentotherapy
+alimentum
+alimonied
+alimony
+alin
+alinasal
+Aline
+alineation
+alintatao
+aliofar
+Alioth
+alipata
+aliped
+aliphatic
+alipterion
+aliptes
+aliptic
+aliquant
+aliquot
+aliseptal
+alish
+alisier
+Alisma
+Alismaceae
+alismaceous
+alismad
+alismal
+Alismales
+Alismataceae
+alismoid
+aliso
+Alison
+alison
+alisonite
+alisp
+alisphenoid
+alisphenoidal
+alist
+Alister
+alit
+alite
+alitrunk
+aliturgic
+aliturgical
+aliunde
+alive
+aliveness
+alivincular
+Alix
+aliyah
+alizarate
+alizari
+alizarin
+aljoba
+alk
+alkahest
+alkahestic
+alkahestica
+alkahestical
+Alkaid
+alkalamide
+alkalemia
+alkalescence
+alkalescency
+alkalescent
+alkali
+alkalic
+alkaliferous
+alkalifiable
+alkalify
+alkaligen
+alkaligenous
+alkalimeter
+alkalimetric
+alkalimetrical
+alkalimetrically
+alkalimetry
+alkaline
+alkalinity
+alkalinization
+alkalinize
+alkalinuria
+alkalizable
+alkalizate
+alkalization
+alkalize
+alkalizer
+alkaloid
+alkaloidal
+alkalometry
+alkalosis
+alkalous
+Alkalurops
+alkamin
+alkamine
+alkane
+alkanet
+Alkanna
+alkannin
+Alkaphrah
+alkapton
+alkaptonuria
+alkaptonuric
+alkargen
+alkarsin
+alkekengi
+alkene
+alkenna
+alkenyl
+alkermes
+Alkes
+alkide
+alkine
+alkool
+Alkoran
+Alkoranic
+alkoxide
+alkoxy
+alkoxyl
+alky
+alkyd
+alkyl
+alkylamine
+alkylate
+alkylation
+alkylene
+alkylic
+alkylidene
+alkylize
+alkylogen
+alkyloxy
+alkyne
+all
+allabuta
+allactite
+allaeanthus
+allagite
+allagophyllous
+allagostemonous
+Allah
+allalinite
+Allamanda
+allamotti
+Allan
+allan
+allanite
+allanitic
+allantiasis
+allantochorion
+allantoic
+allantoid
+allantoidal
+Allantoidea
+allantoidean
+allantoidian
+allantoin
+allantoinase
+allantoinuria
+allantois
+allantoxaidin
+allanturic
+Allasch
+allassotonic
+allative
+allatrate
+allay
+allayer
+allayment
+allbone
+Alle
+allecret
+allectory
+allegate
+allegation
+allegator
+allege
+allegeable
+allegedly
+allegement
+alleger
+Alleghenian
+Allegheny
+allegiance
+allegiancy
+allegiant
+allegoric
+allegorical
+allegorically
+allegoricalness
+allegorism
+allegorist
+allegorister
+allegoristic
+allegorization
+allegorize
+allegorizer
+allegory
+allegretto
+allegro
+allele
+allelic
+allelism
+allelocatalytic
+allelomorph
+allelomorphic
+allelomorphism
+allelotropic
+allelotropism
+allelotropy
+alleluia
+alleluiatic
+allemand
+allemande
+allemontite
+Allen
+allenarly
+allene
+Allentiac
+Allentiacan
+aller
+allergen
+allergenic
+allergia
+allergic
+allergin
+allergist
+allergy
+allerion
+allesthesia
+alleviate
+alleviatingly
+alleviation
+alleviative
+alleviator
+alleviatory
+alley
+alleyed
+alleyite
+alleyway
+allgood
+Allhallow
+Allhallowtide
+allheal
+alliable
+alliably
+Alliaceae
+alliaceous
+alliance
+alliancer
+Alliaria
+allicampane
+allice
+allicholly
+alliciency
+allicient
+Allie
+allied
+Allies
+allies
+alligate
+alligator
+alligatored
+allineate
+allineation
+Allionia
+Allioniaceae
+allision
+alliteral
+alliterate
+alliteration
+alliterational
+alliterationist
+alliterative
+alliteratively
+alliterativeness
+alliterator
+Allium
+allivalite
+allmouth
+allness
+Allobroges
+allocable
+allocaffeine
+allocatable
+allocate
+allocatee
+allocation
+allocator
+allochetia
+allochetite
+allochezia
+allochiral
+allochirally
+allochiria
+allochlorophyll
+allochroic
+allochroite
+allochromatic
+allochroous
+allochthonous
+allocinnamic
+alloclase
+alloclasite
+allocochick
+allocrotonic
+allocryptic
+allocute
+allocution
+allocutive
+allocyanine
+allodelphite
+allodesmism
+alloeosis
+alloeostropha
+alloeotic
+alloerotic
+alloerotism
+allogamous
+allogamy
+allogene
+allogeneity
+allogeneous
+allogenic
+allogenically
+allograph
+alloiogenesis
+alloisomer
+alloisomeric
+alloisomerism
+allokinesis
+allokinetic
+allokurtic
+allomerism
+allomerous
+allometric
+allometry
+allomorph
+allomorphic
+allomorphism
+allomorphite
+allomucic
+allonomous
+allonym
+allonymous
+allopalladium
+allopath
+allopathetic
+allopathetically
+allopathic
+allopathically
+allopathist
+allopathy
+allopatric
+allopatrically
+allopatry
+allopelagic
+allophanamide
+allophanates
+allophane
+allophanic
+allophone
+allophyle
+allophylian
+allophylic
+Allophylus
+allophytoid
+alloplasm
+alloplasmatic
+alloplasmic
+alloplast
+alloplastic
+alloplasty
+alloploidy
+allopolyploid
+allopsychic
+alloquial
+alloquialism
+alloquy
+allorhythmia
+allorrhyhmia
+allorrhythmic
+allosaur
+Allosaurus
+allose
+allosematic
+allosome
+allosyndesis
+allosyndetic
+allot
+allotee
+allotelluric
+allotheism
+Allotheria
+allothigene
+allothigenetic
+allothigenetically
+allothigenic
+allothigenous
+allothimorph
+allothimorphic
+allothogenic
+allothogenous
+allotment
+allotriodontia
+Allotriognathi
+allotriomorphic
+allotriophagia
+allotriophagy
+allotriuria
+allotrope
+allotrophic
+allotropic
+allotropical
+allotropically
+allotropicity
+allotropism
+allotropize
+allotropous
+allotropy
+allotrylic
+allottable
+allottee
+allotter
+allotype
+allotypical
+allover
+allow
+allowable
+allowableness
+allowably
+allowance
+allowedly
+allower
+alloxan
+alloxanate
+alloxanic
+alloxantin
+alloxuraemia
+alloxuremia
+alloxuric
+alloxyproteic
+alloy
+alloyage
+allozooid
+allseed
+allspice
+allthing
+allthorn
+alltud
+allude
+allure
+allurement
+allurer
+alluring
+alluringly
+alluringness
+allusion
+allusive
+allusively
+allusiveness
+alluvia
+alluvial
+alluviate
+alluviation
+alluvion
+alluvious
+alluvium
+allwhere
+allwhither
+allwork
+Allworthy
+Ally
+ally
+allyl
+allylamine
+allylate
+allylation
+allylene
+allylic
+allylthiourea
+Alma
+alma
+Almach
+almaciga
+almacigo
+almadia
+almadie
+almagest
+almagra
+Almain
+Alman
+almanac
+almandine
+almandite
+alme
+almeidina
+almemar
+Almerian
+almeriite
+Almida
+almightily
+almightiness
+almighty
+almique
+Almira
+almirah
+almochoden
+Almohad
+Almohade
+Almohades
+almoign
+Almon
+almon
+almond
+almondy
+almoner
+almonership
+almonry
+Almoravid
+Almoravide
+Almoravides
+almost
+almous
+alms
+almsdeed
+almsfolk
+almsful
+almsgiver
+almsgiving
+almshouse
+almsman
+almswoman
+almucantar
+almuce
+almud
+almude
+almug
+Almuredin
+almuten
+aln
+alnage
+alnager
+alnagership
+Alnaschar
+Alnascharism
+alnein
+alnico
+Alnilam
+alniresinol
+Alnitak
+Alnitham
+alniviridol
+alnoite
+alnuin
+Alnus
+alo
+Aloadae
+Alocasia
+alochia
+alod
+alodial
+alodialism
+alodialist
+alodiality
+alodially
+alodian
+alodiary
+alodification
+alodium
+alody
+aloe
+aloed
+aloelike
+aloemodin
+aloeroot
+aloesol
+aloeswood
+aloetic
+aloetical
+aloewood
+aloft
+alogia
+Alogian
+alogical
+alogically
+alogism
+alogy
+aloid
+aloin
+Alois
+aloisiite
+aloma
+alomancy
+alone
+aloneness
+along
+alongshore
+alongshoreman
+alongside
+alongst
+Alonso
+Alonsoa
+Alonzo
+aloof
+aloofly
+aloofness
+aloose
+alop
+alopecia
+Alopecias
+alopecist
+alopecoid
+Alopecurus
+alopeke
+Alopias
+Alopiidae
+Alosa
+alose
+Alouatta
+alouatte
+aloud
+alow
+alowe
+Aloxite
+Aloysia
+Aloysius
+alp
+alpaca
+alpasotes
+Alpax
+alpeen
+Alpen
+alpenglow
+alpenhorn
+alpenstock
+alpenstocker
+alpestral
+alpestrian
+alpestrine
+alpha
+alphabet
+alphabetarian
+alphabetic
+alphabetical
+alphabetically
+alphabetics
+alphabetiform
+alphabetism
+alphabetist
+alphabetization
+alphabetize
+alphabetizer
+Alphard
+alphatoluic
+Alphean
+Alphecca
+alphenic
+Alpheratz
+alphitomancy
+alphitomorphous
+alphol
+Alphonist
+Alphonse
+Alphonsine
+Alphonsism
+Alphonso
+alphorn
+alphos
+alphosis
+alphyl
+Alpian
+Alpid
+alpieu
+alpigene
+Alpine
+alpine
+alpinely
+alpinery
+alpinesque
+Alpinia
+Alpiniaceae
+Alpinism
+Alpinist
+alpist
+Alpujarra
+alqueire
+alquier
+alquifou
+alraun
+alreadiness
+already
+alright
+alrighty
+alroot
+alruna
+Alsatia
+Alsatian
+alsbachite
+Alshain
+Alsinaceae
+alsinaceous
+Alsine
+also
+alsoon
+Alsophila
+Alstonia
+alstonidine
+alstonine
+alstonite
+Alstroemeria
+alsweill
+alt
+Altaian
+Altaic
+Altaid
+Altair
+altaite
+Altamira
+altar
+altarage
+altared
+altarist
+altarlet
+altarpiece
+altarwise
+altazimuth
+alter
+alterability
+alterable
+alterableness
+alterably
+alterant
+alterate
+alteration
+alterative
+altercate
+altercation
+altercative
+alteregoism
+alteregoistic
+alterer
+alterity
+altern
+alternacy
+alternance
+alternant
+Alternanthera
+Alternaria
+alternariose
+alternate
+alternately
+alternateness
+alternating
+alternatingly
+alternation
+alternationist
+alternative
+alternatively
+alternativeness
+alternativity
+alternator
+alterne
+alternifoliate
+alternipetalous
+alternipinnate
+alternisepalous
+alternize
+alterocentric
+Althaea
+althaein
+Althea
+althea
+althein
+altheine
+althionic
+altho
+althorn
+although
+Altica
+Alticamelus
+altigraph
+altilik
+altiloquence
+altiloquent
+altimeter
+altimetrical
+altimetrically
+altimetry
+altin
+altincar
+Altingiaceae
+altingiaceous
+altininck
+altiplano
+altiscope
+altisonant
+altisonous
+altissimo
+altitude
+altitudinal
+altitudinarian
+alto
+altogether
+altogetherness
+altometer
+altoun
+altrices
+altricial
+altropathy
+altrose
+altruism
+altruist
+altruistic
+altruistically
+altschin
+altun
+Aluco
+Aluconidae
+Aluconinae
+aludel
+Aludra
+alula
+alular
+alulet
+Alulim
+alum
+alumbloom
+Alumel
+alumic
+alumiferous
+alumina
+aluminaphone
+aluminate
+alumine
+aluminic
+aluminide
+aluminiferous
+aluminiform
+aluminish
+aluminite
+aluminium
+aluminize
+aluminoferric
+aluminographic
+aluminography
+aluminose
+aluminosilicate
+aluminosis
+aluminosity
+aluminothermic
+aluminothermics
+aluminothermy
+aluminotype
+aluminous
+aluminum
+aluminyl
+alumish
+alumite
+alumium
+alumna
+alumnae
+alumnal
+alumni
+alumniate
+Alumnol
+alumnus
+alumohydrocalcite
+alumroot
+Alundum
+aluniferous
+alunite
+alunogen
+alupag
+Alur
+alure
+alurgite
+alushtite
+aluta
+alutaceous
+Alvah
+Alvan
+alvar
+alvearium
+alveary
+alveloz
+alveola
+alveolar
+alveolariform
+alveolary
+alveolate
+alveolated
+alveolation
+alveole
+alveolectomy
+alveoli
+alveoliform
+alveolite
+Alveolites
+alveolitis
+alveoloclasia
+alveolocondylean
+alveolodental
+alveololabial
+alveololingual
+alveolonasal
+alveolosubnasal
+alveolotomy
+alveolus
+alveus
+alviducous
+Alvin
+Alvina
+alvine
+Alvissmal
+alvite
+alvus
+alway
+always
+aly
+Alya
+alycompaine
+alymphia
+alymphopotent
+alypin
+alysson
+Alyssum
+alytarch
+Alytes
+am
+ama
+amaas
+Amabel
+amability
+amacratic
+amacrinal
+amacrine
+amadavat
+amadelphous
+Amadi
+Amadis
+amadou
+Amaethon
+Amafingo
+amaga
+amah
+Amahuaca
+amain
+amaister
+amakebe
+Amakosa
+amala
+amalaita
+amalaka
+Amalfian
+Amalfitan
+amalgam
+amalgamable
+amalgamate
+amalgamation
+amalgamationist
+amalgamative
+amalgamatize
+amalgamator
+amalgamist
+amalgamization
+amalgamize
+Amalings
+Amalrician
+amaltas
+amamau
+Amampondo
+Amanda
+amandin
+Amandus
+amang
+amani
+amania
+Amanist
+Amanita
+amanitin
+amanitine
+Amanitopsis
+amanori
+amanous
+amantillo
+amanuenses
+amanuensis
+amapa
+Amapondo
+amar
+Amara
+Amarantaceae
+amarantaceous
+amaranth
+Amaranthaceae
+amaranthaceous
+amaranthine
+amaranthoid
+Amaranthus
+amarantite
+Amarantus
+amarelle
+amarevole
+amargoso
+amarillo
+amarin
+amarine
+amaritude
+amarity
+amaroid
+amaroidal
+Amarth
+amarthritis
+amaryllid
+Amaryllidaceae
+amaryllidaceous
+amaryllideous
+Amaryllis
+amasesis
+amass
+amassable
+amasser
+amassment
+Amasta
+amasthenic
+amastia
+amasty
+Amatembu
+amaterialistic
+amateur
+amateurish
+amateurishly
+amateurishness
+amateurism
+amateurship
+Amati
+amative
+amatively
+amativeness
+amatol
+amatorial
+amatorially
+amatorian
+amatorious
+amatory
+amatrice
+amatungula
+amaurosis
+amaurotic
+amaze
+amazed
+amazedly
+amazedness
+amazeful
+amazement
+amazia
+Amazilia
+amazing
+amazingly
+Amazon
+Amazona
+Amazonian
+Amazonism
+amazonite
+Amazulu
+amba
+ambage
+ambagiosity
+ambagious
+ambagiously
+ambagiousness
+ambagitory
+ambalam
+amban
+ambar
+ambaree
+ambarella
+ambary
+ambash
+ambassade
+Ambassadeur
+ambassador
+ambassadorial
+ambassadorially
+ambassadorship
+ambassadress
+ambassage
+ambassy
+ambatch
+ambatoarinite
+ambay
+ambeer
+amber
+amberfish
+ambergris
+amberiferous
+amberite
+amberoid
+amberous
+ambery
+ambicolorate
+ambicoloration
+ambidexter
+ambidexterity
+ambidextral
+ambidextrous
+ambidextrously
+ambidextrousness
+ambience
+ambiency
+ambiens
+ambient
+ambier
+ambigenous
+ambiguity
+ambiguous
+ambiguously
+ambiguousness
+ambilateral
+ambilateralaterally
+ambilaterality
+ambilevous
+ambilian
+ambilogy
+ambiopia
+ambiparous
+ambisinister
+ambisinistrous
+ambisporangiate
+ambisyllabic
+ambit
+ambital
+ambitendency
+ambition
+ambitionist
+ambitionless
+ambitionlessly
+ambitious
+ambitiously
+ambitiousness
+ambitty
+ambitus
+ambivalence
+ambivalency
+ambivalent
+ambivert
+amble
+ambler
+ambling
+amblingly
+amblotic
+amblyacousia
+amblyaphia
+Amblycephalidae
+Amblycephalus
+amblychromatic
+Amblydactyla
+amblygeusia
+amblygon
+amblygonal
+amblygonite
+amblyocarpous
+Amblyomma
+amblyope
+amblyopia
+amblyopic
+Amblyopsidae
+Amblyopsis
+amblyoscope
+amblypod
+Amblypoda
+amblypodous
+Amblyrhynchus
+amblystegite
+Amblystoma
+ambo
+amboceptoid
+amboceptor
+Ambocoelia
+Amboina
+Amboinese
+ambomalleal
+ambon
+ambonite
+Ambonnay
+ambos
+ambosexous
+ambosexual
+ambrain
+ambrein
+ambrette
+Ambrica
+ambrite
+ambroid
+ambrology
+Ambrose
+ambrose
+ambrosia
+ambrosiac
+Ambrosiaceae
+ambrosiaceous
+ambrosial
+ambrosially
+Ambrosian
+ambrosian
+ambrosiate
+ambrosin
+ambrosine
+Ambrosio
+ambrosterol
+ambrotype
+ambry
+ambsace
+ambulacral
+ambulacriform
+ambulacrum
+ambulance
+ambulancer
+ambulant
+ambulate
+ambulatio
+ambulation
+ambulative
+ambulator
+Ambulatoria
+ambulatorial
+ambulatorium
+ambulatory
+ambuling
+ambulomancy
+amburbial
+ambury
+ambuscade
+ambuscader
+ambush
+ambusher
+ambushment
+Ambystoma
+Ambystomidae
+amchoor
+ame
+amebiform
+Amedeo
+ameed
+ameen
+Ameiuridae
+Ameiurus
+Ameiva
+Amelanchier
+amelcorn
+Amelia
+amelia
+amelification
+ameliorable
+ameliorableness
+ameliorant
+ameliorate
+amelioration
+ameliorativ
+ameliorative
+ameliorator
+amellus
+ameloblast
+ameloblastic
+amelu
+amelus
+Amen
+amen
+amenability
+amenable
+amenableness
+amenably
+amend
+amendable
+amendableness
+amendatory
+amende
+amender
+amendment
+amends
+amene
+amenia
+Amenism
+Amenite
+amenity
+amenorrhea
+amenorrheal
+amenorrheic
+amenorrhoea
+ament
+amentaceous
+amental
+amentia
+Amentiferae
+amentiferous
+amentiform
+amentulum
+amentum
+amerce
+amerceable
+amercement
+amercer
+amerciament
+America
+American
+Americana
+Americanese
+Americanism
+Americanist
+Americanistic
+Americanitis
+Americanization
+Americanize
+Americanizer
+Americanly
+Americanoid
+Americaward
+Americawards
+americium
+Americomania
+Americophobe
+Amerimnon
+Amerind
+Amerindian
+Amerindic
+amerism
+ameristic
+amesite
+Ametabola
+ametabole
+ametabolia
+ametabolian
+ametabolic
+ametabolism
+ametabolous
+ametaboly
+ametallous
+amethodical
+amethodically
+amethyst
+amethystine
+ametoecious
+ametria
+ametrometer
+ametrope
+ametropia
+ametropic
+ametrous
+Amex
+amgarn
+amhar
+amherstite
+amhran
+Ami
+ami
+Amia
+amiability
+amiable
+amiableness
+amiably
+amianth
+amianthiform
+amianthine
+Amianthium
+amianthoid
+amianthoidal
+amianthus
+amic
+amicability
+amicable
+amicableness
+amicably
+amical
+amice
+amiced
+amicicide
+amicrobic
+amicron
+amicronucleate
+amid
+amidase
+amidate
+amidation
+amide
+amidic
+amidid
+amidide
+amidin
+amidine
+Amidism
+Amidist
+amido
+amidoacetal
+amidoacetic
+amidoacetophenone
+amidoaldehyde
+amidoazo
+amidoazobenzene
+amidoazobenzol
+amidocaffeine
+amidocapric
+amidofluorid
+amidofluoride
+amidogen
+amidoguaiacol
+amidohexose
+amidoketone
+amidol
+amidomyelin
+amidon
+amidophenol
+amidophosphoric
+amidoplast
+amidoplastid
+amidopyrine
+amidosuccinamic
+amidosulphonal
+amidothiazole
+amidoxime
+amidoxy
+amidoxyl
+amidrazone
+amidship
+amidships
+amidst
+amidstream
+amidulin
+Amigo
+Amiidae
+amil
+Amiles
+Amiloun
+amimia
+amimide
+amin
+aminate
+amination
+amine
+amini
+aminic
+aminity
+aminization
+aminize
+amino
+aminoacetal
+aminoacetanilide
+aminoacetic
+aminoacetone
+aminoacetophenetidine
+aminoacetophenone
+aminoacidemia
+aminoaciduria
+aminoanthraquinone
+aminoazobenzene
+aminobarbituric
+aminobenzaldehyde
+aminobenzamide
+aminobenzene
+aminobenzoic
+aminocaproic
+aminodiphenyl
+aminoethionic
+aminoformic
+aminogen
+aminoglutaric
+aminoguanidine
+aminoid
+aminoketone
+aminolipin
+aminolysis
+aminolytic
+aminomalonic
+aminomyelin
+aminophenol
+aminoplast
+aminoplastic
+aminopropionic
+aminopurine
+aminopyrine
+aminoquinoline
+aminosis
+aminosuccinamic
+aminosulphonic
+aminothiophen
+aminovaleric
+aminoxylol
+Aminta
+Amintor
+Amioidei
+Amir
+amir
+Amiranha
+amiray
+amirship
+Amish
+Amishgo
+amiss
+amissibility
+amissible
+amissness
+Amita
+Amitabha
+amitosis
+amitotic
+amitotically
+amity
+amixia
+Amizilis
+amla
+amli
+amlikar
+amlong
+Amma
+amma
+amman
+Ammanite
+ammelide
+ammelin
+ammeline
+ammer
+ammeter
+Ammi
+Ammiaceae
+ammiaceous
+ammine
+amminochloride
+amminolysis
+amminolytic
+ammiolite
+ammo
+Ammobium
+ammochaeta
+ammochryse
+ammocoete
+ammocoetes
+ammocoetid
+Ammocoetidae
+ammocoetiform
+ammocoetoid
+Ammodytes
+Ammodytidae
+ammodytoid
+ammonal
+ammonate
+ammonation
+Ammonea
+ammonia
+ammoniacal
+ammoniacum
+ammoniate
+ammoniation
+ammonic
+ammonical
+ammoniemia
+ammonification
+ammonifier
+ammonify
+ammoniojarosite
+ammonion
+ammonionitrate
+Ammonite
+ammonite
+Ammonites
+Ammonitess
+ammonitic
+ammoniticone
+ammonitiferous
+Ammonitish
+ammonitoid
+Ammonitoidea
+ammonium
+ammoniuria
+ammonization
+ammono
+ammonobasic
+ammonocarbonic
+ammonocarbonous
+ammonoid
+Ammonoidea
+ammonoidean
+ammonolysis
+ammonolytic
+ammonolyze
+Ammophila
+ammophilous
+ammoresinol
+ammotherapy
+ammu
+ammunition
+amnemonic
+amnesia
+amnesic
+amnestic
+amnesty
+amnia
+amniac
+amniatic
+amnic
+Amnigenia
+amnioallantoic
+amniocentesis
+amniochorial
+amnioclepsis
+amniomancy
+amnion
+Amnionata
+amnionate
+amnionic
+amniorrhea
+Amniota
+amniote
+amniotic
+amniotitis
+amniotome
+amober
+amobyr
+amoeba
+amoebae
+Amoebaea
+amoebaean
+amoebaeum
+amoebalike
+amoeban
+amoebian
+amoebiasis
+amoebic
+amoebicide
+amoebid
+Amoebida
+Amoebidae
+amoebiform
+Amoebobacter
+Amoebobacterieae
+amoebocyte
+Amoebogeniae
+amoeboid
+amoeboidism
+amoebous
+amoebula
+amok
+amoke
+amole
+amolilla
+amomal
+Amomales
+Amomis
+amomum
+among
+amongst
+amontillado
+amor
+amorado
+amoraic
+amoraim
+amoral
+amoralism
+amoralist
+amorality
+amoralize
+Amores
+amoret
+amoretto
+Amoreuxia
+amorism
+amorist
+amoristic
+Amorite
+Amoritic
+Amoritish
+amorosity
+amoroso
+amorous
+amorously
+amorousness
+Amorpha
+amorphia
+amorphic
+amorphinism
+amorphism
+Amorphophallus
+amorphophyte
+amorphotae
+amorphous
+amorphously
+amorphousness
+amorphus
+amorphy
+amort
+amortisseur
+amortizable
+amortization
+amortize
+amortizement
+Amorua
+Amos
+Amoskeag
+amotion
+amotus
+amount
+amour
+amourette
+amovability
+amovable
+amove
+Amoy
+Amoyan
+Amoyese
+ampalaya
+ampalea
+ampangabeite
+ampasimenite
+Ampelidaceae
+ampelidaceous
+Ampelidae
+ampelideous
+Ampelis
+ampelite
+ampelitic
+ampelographist
+ampelography
+ampelopsidin
+ampelopsin
+Ampelopsis
+Ampelosicyos
+ampelotherapy
+amper
+amperage
+ampere
+amperemeter
+Amperian
+amperometer
+ampersand
+ampery
+amphanthium
+ampheclexis
+ampherotokous
+ampherotoky
+amphetamine
+amphiarthrodial
+amphiarthrosis
+amphiaster
+amphibalus
+Amphibia
+amphibial
+amphibian
+amphibichnite
+amphibiety
+amphibiological
+amphibiology
+amphibion
+amphibiotic
+Amphibiotica
+amphibious
+amphibiously
+amphibiousness
+amphibium
+amphiblastic
+amphiblastula
+amphiblestritis
+Amphibola
+amphibole
+amphibolia
+amphibolic
+amphiboliferous
+amphiboline
+amphibolite
+amphibolitic
+amphibological
+amphibologically
+amphibologism
+amphibology
+amphibolous
+amphiboly
+amphibrach
+amphibrachic
+amphibryous
+Amphicarpa
+Amphicarpaea
+amphicarpic
+amphicarpium
+amphicarpogenous
+amphicarpous
+amphicentric
+amphichroic
+amphichrom
+amphichromatic
+amphichrome
+amphicoelian
+amphicoelous
+Amphicondyla
+amphicondylous
+amphicrania
+amphicreatinine
+amphicribral
+amphictyon
+amphictyonian
+amphictyonic
+amphictyony
+Amphicyon
+Amphicyonidae
+amphicyrtic
+amphicyrtous
+amphicytula
+amphid
+amphide
+amphidesmous
+amphidetic
+amphidiarthrosis
+amphidiploid
+amphidiploidy
+amphidisc
+Amphidiscophora
+amphidiscophoran
+amphierotic
+amphierotism
+Amphigaea
+amphigam
+Amphigamae
+amphigamous
+amphigastrium
+amphigastrula
+amphigean
+amphigen
+amphigene
+amphigenesis
+amphigenetic
+amphigenous
+amphigenously
+amphigonic
+amphigonium
+amphigonous
+amphigony
+amphigoric
+amphigory
+amphigouri
+amphikaryon
+amphilogism
+amphilogy
+amphimacer
+amphimictic
+amphimictical
+amphimictically
+amphimixis
+amphimorula
+Amphinesian
+Amphineura
+amphineurous
+amphinucleus
+Amphion
+Amphionic
+Amphioxi
+Amphioxidae
+Amphioxides
+Amphioxididae
+amphioxus
+amphipeptone
+amphiphloic
+amphiplatyan
+Amphipleura
+amphiploid
+amphiploidy
+amphipneust
+Amphipneusta
+amphipneustic
+Amphipnous
+amphipod
+Amphipoda
+amphipodal
+amphipodan
+amphipodiform
+amphipodous
+amphiprostylar
+amphiprostyle
+amphiprotic
+amphipyrenin
+Amphirhina
+amphirhinal
+amphirhine
+amphisarca
+amphisbaena
+amphisbaenian
+amphisbaenic
+Amphisbaenidae
+amphisbaenoid
+amphisbaenous
+amphiscians
+amphiscii
+Amphisile
+Amphisilidae
+amphispermous
+amphisporangiate
+amphispore
+Amphistoma
+amphistomatic
+amphistome
+amphistomoid
+amphistomous
+Amphistomum
+amphistylar
+amphistylic
+amphistyly
+amphitene
+amphitheater
+amphitheatered
+amphitheatral
+amphitheatric
+amphitheatrical
+amphitheatrically
+amphithecial
+amphithecium
+amphithect
+amphithyron
+amphitokal
+amphitokous
+amphitoky
+amphitriaene
+amphitrichous
+Amphitrite
+amphitropal
+amphitropous
+Amphitruo
+Amphitryon
+Amphiuma
+Amphiumidae
+amphivasal
+amphivorous
+Amphizoidae
+amphodarch
+amphodelite
+amphodiplopia
+amphogenous
+ampholyte
+amphopeptone
+amphophil
+amphophile
+amphophilic
+amphophilous
+amphora
+amphoral
+amphore
+amphorette
+amphoric
+amphoricity
+amphoriloquy
+amphorophony
+amphorous
+amphoteric
+Amphrysian
+ample
+amplectant
+ampleness
+amplexation
+amplexicaudate
+amplexicaul
+amplexicauline
+amplexifoliate
+amplexus
+ampliate
+ampliation
+ampliative
+amplicative
+amplidyne
+amplification
+amplificative
+amplificator
+amplificatory
+amplifier
+amplify
+amplitude
+amply
+ampollosity
+ampongue
+ampoule
+ampul
+ampulla
+ampullaceous
+ampullar
+Ampullaria
+Ampullariidae
+ampullary
+ampullate
+ampullated
+ampulliform
+ampullitis
+ampullula
+amputate
+amputation
+amputational
+amputative
+amputator
+amputee
+ampyx
+amra
+amreeta
+amrita
+Amritsar
+amsath
+amsel
+Amsonia
+Amsterdamer
+amt
+amtman
+Amuchco
+amuck
+Amueixa
+amuguis
+amula
+amulet
+amuletic
+amulla
+amunam
+amurca
+amurcosity
+amurcous
+Amurru
+amusable
+amuse
+amused
+amusedly
+amusee
+amusement
+amuser
+amusette
+Amusgo
+amusia
+amusing
+amusingly
+amusingness
+amusive
+amusively
+amusiveness
+amutter
+amuyon
+amuyong
+amuze
+amvis
+Amy
+amy
+Amyclaean
+Amyclas
+amyelencephalia
+amyelencephalic
+amyelencephalous
+amyelia
+amyelic
+amyelinic
+amyelonic
+amyelous
+amygdal
+amygdala
+Amygdalaceae
+amygdalaceous
+amygdalase
+amygdalate
+amygdalectomy
+amygdalic
+amygdaliferous
+amygdaliform
+amygdalin
+amygdaline
+amygdalinic
+amygdalitis
+amygdaloid
+amygdaloidal
+amygdalolith
+amygdaloncus
+amygdalopathy
+amygdalothripsis
+amygdalotome
+amygdalotomy
+Amygdalus
+amygdonitrile
+amygdophenin
+amygdule
+amyl
+amylaceous
+amylamine
+amylan
+amylase
+amylate
+amylemia
+amylene
+amylenol
+amylic
+amylidene
+amyliferous
+amylin
+amylo
+amylocellulose
+amyloclastic
+amylocoagulase
+amylodextrin
+amylodyspepsia
+amylogen
+amylogenesis
+amylogenic
+amylohydrolysis
+amylohydrolytic
+amyloid
+amyloidal
+amyloidosis
+amyloleucite
+amylolysis
+amylolytic
+amylom
+amylometer
+amylon
+amylopectin
+amylophagia
+amylophosphate
+amylophosphoric
+amyloplast
+amyloplastic
+amyloplastid
+amylopsin
+amylose
+amylosis
+amylosynthesis
+amylum
+amyluria
+Amynodon
+amynodont
+amyosthenia
+amyosthenic
+amyotaxia
+amyotonia
+amyotrophia
+amyotrophic
+amyotrophy
+amyous
+Amyraldism
+Amyraldist
+Amyridaceae
+amyrin
+Amyris
+amyrol
+amyroot
+Amytal
+amyxorrhea
+amyxorrhoea
+an
+Ana
+ana
+Anabaena
+Anabantidae
+Anabaptism
+Anabaptist
+Anabaptistic
+Anabaptistical
+Anabaptistically
+Anabaptistry
+anabaptize
+Anabas
+anabasine
+anabasis
+anabasse
+anabata
+anabathmos
+anabatic
+anaberoga
+anabibazon
+anabiosis
+anabiotic
+Anablepidae
+Anableps
+anabo
+anabohitsite
+anabolic
+anabolin
+anabolism
+anabolite
+anabolize
+anabong
+anabranch
+anabrosis
+anabrotic
+anacahuita
+anacahuite
+anacalypsis
+anacampsis
+anacamptic
+anacamptically
+anacamptics
+anacamptometer
+anacanth
+anacanthine
+Anacanthini
+anacanthous
+anacara
+anacard
+Anacardiaceae
+anacardiaceous
+anacardic
+Anacardium
+anacatadidymus
+anacatharsis
+anacathartic
+anacephalaeosis
+anacephalize
+Anaces
+Anacharis
+anachorism
+anachromasis
+anachronic
+anachronical
+anachronically
+anachronism
+anachronismatical
+anachronist
+anachronistic
+anachronistical
+anachronistically
+anachronize
+anachronous
+anachronously
+anachueta
+anacid
+anacidity
+anaclasis
+anaclastic
+anaclastics
+Anaclete
+anacleticum
+anaclinal
+anaclisis
+anaclitic
+anacoenosis
+anacoluthia
+anacoluthic
+anacoluthically
+anacoluthon
+anaconda
+Anacreon
+Anacreontic
+Anacreontically
+anacrisis
+Anacrogynae
+anacrogynae
+anacrogynous
+anacromyodian
+anacrotic
+anacrotism
+anacrusis
+anacrustic
+anacrustically
+anaculture
+anacusia
+anacusic
+anacusis
+Anacyclus
+anadem
+anadenia
+anadicrotic
+anadicrotism
+anadidymus
+anadiplosis
+anadipsia
+anadipsic
+anadrom
+anadromous
+Anadyomene
+anaematosis
+anaemia
+anaemic
+anaeretic
+anaerobation
+anaerobe
+anaerobia
+anaerobian
+anaerobic
+anaerobically
+anaerobies
+anaerobion
+anaerobiont
+anaerobiosis
+anaerobiotic
+anaerobiotically
+anaerobious
+anaerobism
+anaerobium
+anaerophyte
+anaeroplastic
+anaeroplasty
+anaesthesia
+anaesthesiant
+anaesthetically
+anaesthetizer
+anaetiological
+anagalactic
+Anagallis
+anagap
+anagenesis
+anagenetic
+anagep
+anagignoskomena
+anaglyph
+anaglyphic
+anaglyphical
+anaglyphics
+anaglyphoscope
+anaglyphy
+anaglyptic
+anaglyptical
+anaglyptics
+anaglyptograph
+anaglyptographic
+anaglyptography
+anaglypton
+anagnorisis
+anagnost
+anagoge
+anagogic
+anagogical
+anagogically
+anagogics
+anagogy
+anagram
+anagrammatic
+anagrammatical
+anagrammatically
+anagrammatism
+anagrammatist
+anagrammatize
+anagrams
+anagraph
+anagua
+anagyrin
+anagyrine
+Anagyris
+anahau
+Anahita
+Anaitis
+Anakes
+anakinesis
+anakinetic
+anakinetomer
+anakinetomeric
+anakoluthia
+anakrousis
+anaktoron
+anal
+analabos
+analav
+analcime
+analcimite
+analcite
+analcitite
+analecta
+analectic
+analects
+analemma
+analemmatic
+analepsis
+analepsy
+analeptic
+analeptical
+analgen
+analgesia
+analgesic
+Analgesidae
+analgesis
+analgesist
+analgetic
+analgia
+analgic
+analgize
+analkalinity
+anallagmatic
+anallantoic
+Anallantoidea
+anallantoidean
+anallergic
+anally
+analogic
+analogical
+analogically
+analogicalness
+analogion
+analogism
+analogist
+analogistic
+analogize
+analogon
+analogous
+analogously
+analogousness
+analogue
+analogy
+analphabet
+analphabete
+analphabetic
+analphabetical
+analphabetism
+analysability
+analysable
+analysand
+analysation
+analyse
+analyser
+analyses
+analysis
+analyst
+analytic
+analytical
+analytically
+analytics
+analyzability
+analyzable
+analyzation
+analyze
+analyzer
+Anam
+anam
+anama
+anamesite
+anametadromous
+Anamirta
+anamirtin
+Anamite
+anamite
+anammonid
+anammonide
+anamnesis
+anamnestic
+anamnestically
+Anamnia
+Anamniata
+Anamnionata
+anamnionic
+Anamniota
+anamniote
+anamniotic
+anamorphic
+anamorphism
+anamorphoscope
+anamorphose
+anamorphosis
+anamorphote
+anamorphous
+anan
+anana
+ananaplas
+ananaples
+ananas
+ananda
+anandrarious
+anandria
+anandrous
+ananepionic
+anangioid
+anangular
+Ananias
+Ananism
+Ananite
+anankastic
+Anansi
+Ananta
+anantherate
+anantherous
+ananthous
+ananym
+anapaest
+anapaestic
+anapaestical
+anapaestically
+anapaganize
+anapaite
+anapanapa
+anapeiratic
+anaphalantiasis
+Anaphalis
+anaphase
+Anaphe
+anaphia
+anaphora
+anaphoral
+anaphoria
+anaphoric
+anaphorical
+anaphrodisia
+anaphrodisiac
+anaphroditic
+anaphroditous
+anaphylactic
+anaphylactin
+anaphylactogen
+anaphylactogenic
+anaphylactoid
+anaphylatoxin
+anaphylaxis
+anaphyte
+anaplasia
+anaplasis
+anaplasm
+Anaplasma
+anaplasmosis
+anaplastic
+anaplasty
+anaplerosis
+anaplerotic
+anapnea
+anapneic
+anapnoeic
+anapnograph
+anapnoic
+anapnometer
+anapodeictic
+anapophysial
+anapophysis
+anapsid
+Anapsida
+anapsidan
+Anapterygota
+anapterygote
+anapterygotism
+anapterygotous
+Anaptomorphidae
+Anaptomorphus
+anaptotic
+anaptychus
+anaptyctic
+anaptyctical
+anaptyxis
+anaqua
+anarcestean
+Anarcestes
+anarch
+anarchal
+anarchial
+anarchic
+anarchical
+anarchically
+anarchism
+anarchist
+anarchistic
+anarchize
+anarchoindividualist
+anarchosocialist
+anarchosyndicalism
+anarchosyndicalist
+anarchy
+anarcotin
+anareta
+anaretic
+anaretical
+anargyros
+anarthria
+anarthric
+anarthropod
+Anarthropoda
+anarthropodous
+anarthrosis
+anarthrous
+anarthrously
+anarthrousness
+anartismos
+anarya
+Anaryan
+Anas
+Anasa
+anasarca
+anasarcous
+Anasazi
+anaschistic
+anaseismic
+Anasitch
+anaspadias
+anaspalin
+Anaspida
+Anaspidacea
+Anaspides
+anastalsis
+anastaltic
+Anastasia
+Anastasian
+anastasimon
+anastasimos
+anastasis
+Anastasius
+anastate
+anastatic
+Anastatica
+Anastatus
+anastigmat
+anastigmatic
+anastomose
+anastomosis
+anastomotic
+Anastomus
+anastrophe
+Anastrophia
+Anat
+anatase
+anatexis
+anathema
+anathematic
+anathematical
+anathematically
+anathematism
+anathematization
+anathematize
+anathematizer
+anatheme
+anathemize
+Anatherum
+Anatidae
+anatifa
+Anatifae
+anatifer
+anatiferous
+Anatinacea
+Anatinae
+anatine
+anatocism
+Anatole
+Anatolian
+Anatolic
+Anatoly
+anatomic
+anatomical
+anatomically
+anatomicobiological
+anatomicochirurgical
+anatomicomedical
+anatomicopathologic
+anatomicopathological
+anatomicophysiologic
+anatomicophysiological
+anatomicosurgical
+anatomism
+anatomist
+anatomization
+anatomize
+anatomizer
+anatomopathologic
+anatomopathological
+anatomy
+anatopism
+anatox
+anatoxin
+anatreptic
+anatripsis
+anatripsology
+anatriptic
+anatron
+anatropal
+anatropia
+anatropous
+Anatum
+anaudia
+anaunter
+anaunters
+Anax
+Anaxagorean
+Anaxagorize
+anaxial
+Anaximandrian
+anaxon
+anaxone
+Anaxonia
+anay
+anazoturia
+anba
+anbury
+Ancerata
+ancestor
+ancestorial
+ancestorially
+ancestral
+ancestrally
+ancestress
+ancestrial
+ancestrian
+ancestry
+Ancha
+Anchat
+Anchietea
+anchietin
+anchietine
+anchieutectic
+anchimonomineral
+Anchisaurus
+Anchises
+Anchistea
+Anchistopoda
+anchithere
+anchitherioid
+anchor
+anchorable
+anchorage
+anchorate
+anchored
+anchorer
+anchoress
+anchoret
+anchoretic
+anchoretical
+anchoretish
+anchoretism
+anchorhold
+anchorite
+anchoritess
+anchoritic
+anchoritical
+anchoritish
+anchoritism
+anchorless
+anchorlike
+anchorwise
+anchovy
+Anchtherium
+Anchusa
+anchusin
+anchusine
+anchylose
+anchylosis
+ancience
+anciency
+ancient
+ancientism
+anciently
+ancientness
+ancientry
+ancienty
+ancile
+ancilla
+ancillary
+ancipital
+ancipitous
+Ancistrocladaceae
+ancistrocladaceous
+Ancistrocladus
+ancistroid
+ancon
+Ancona
+anconad
+anconagra
+anconal
+ancone
+anconeal
+anconeous
+anconeus
+anconitis
+anconoid
+ancony
+ancora
+ancoral
+Ancyloceras
+Ancylocladus
+Ancylodactyla
+ancylopod
+Ancylopoda
+Ancylostoma
+ancylostome
+ancylostomiasis
+Ancylostomum
+Ancylus
+Ancyrean
+Ancyrene
+and
+anda
+andabatarian
+Andalusian
+andalusite
+Andaman
+Andamanese
+andante
+andantino
+Andaqui
+Andaquian
+Andarko
+Andaste
+Ande
+Andean
+Anderson
+Andesic
+andesine
+andesinite
+andesite
+andesitic
+Andevo
+Andhra
+Andi
+Andian
+Andine
+Andira
+andirin
+andirine
+andiroba
+andiron
+Andoke
+andorite
+Andorobo
+Andorran
+andouillet
+andradite
+andranatomy
+andrarchy
+Andre
+Andrea
+Andreaea
+Andreaeaceae
+Andreaeales
+Andreas
+Andrena
+andrenid
+Andrenidae
+Andrew
+andrewsite
+Andria
+Andriana
+Andrias
+andric
+Andries
+androcentric
+androcephalous
+androcephalum
+androclinium
+Androclus
+androconium
+androcracy
+androcratic
+androcyte
+androdioecious
+androdioecism
+androdynamous
+androecial
+androecium
+androgametangium
+androgametophore
+androgen
+androgenesis
+androgenetic
+androgenic
+androgenous
+androginous
+androgone
+androgonia
+androgonial
+androgonidium
+androgonium
+Andrographis
+andrographolide
+androgynal
+androgynary
+androgyne
+androgyneity
+androgynia
+androgynism
+androgynous
+androgynus
+androgyny
+android
+androidal
+androkinin
+androl
+androlepsia
+androlepsy
+Andromache
+andromania
+Andromaque
+Andromeda
+Andromede
+andromedotoxin
+andromonoecious
+andromonoecism
+andromorphous
+andron
+Andronicus
+andronitis
+andropetalar
+andropetalous
+androphagous
+androphobia
+androphonomania
+androphore
+androphorous
+androphorum
+androphyll
+Andropogon
+Androsace
+Androscoggin
+androseme
+androsin
+androsphinx
+androsporangium
+androspore
+androsterone
+androtauric
+androtomy
+Andy
+anear
+aneath
+anecdota
+anecdotage
+anecdotal
+anecdotalism
+anecdote
+anecdotic
+anecdotical
+anecdotically
+anecdotist
+anele
+anelectric
+anelectrode
+anelectrotonic
+anelectrotonus
+anelytrous
+anematosis
+Anemia
+anemia
+anemic
+anemobiagraph
+anemochord
+anemoclastic
+anemogram
+anemograph
+anemographic
+anemographically
+anemography
+anemological
+anemology
+anemometer
+anemometric
+anemometrical
+anemometrically
+anemometrograph
+anemometrographic
+anemometrographically
+anemometry
+anemonal
+anemone
+Anemonella
+anemonin
+anemonol
+anemony
+anemopathy
+anemophile
+anemophilous
+anemophily
+Anemopsis
+anemoscope
+anemosis
+anemotaxis
+anemotropic
+anemotropism
+anencephalia
+anencephalic
+anencephalotrophia
+anencephalous
+anencephalus
+anencephaly
+anend
+anenergia
+anenst
+anent
+anenterous
+anepia
+anepigraphic
+anepigraphous
+anepiploic
+anepithymia
+anerethisia
+aneretic
+anergia
+anergic
+anergy
+anerly
+aneroid
+aneroidograph
+anerotic
+anerythroplasia
+anerythroplastic
+anes
+anesis
+anesthesia
+anesthesiant
+anesthesimeter
+anesthesiologist
+anesthesiology
+anesthesis
+anesthetic
+anesthetically
+anesthetist
+anesthetization
+anesthetize
+anesthetizer
+anesthyl
+anethole
+Anethum
+anetiological
+aneuploid
+aneuploidy
+aneuria
+aneuric
+aneurilemmic
+aneurin
+aneurism
+aneurismally
+aneurysm
+aneurysmal
+aneurysmally
+aneurysmatic
+anew
+Anezeh
+anfractuose
+anfractuosity
+anfractuous
+anfractuousness
+anfracture
+Angami
+Angara
+angaralite
+angaria
+angary
+Angdistis
+angekok
+angel
+Angela
+angelate
+angeldom
+Angeleno
+angelet
+angeleyes
+angelfish
+angelhood
+angelic
+Angelica
+angelica
+Angelical
+angelical
+angelically
+angelicalness
+Angelican
+angelicic
+angelicize
+angelico
+angelin
+Angelina
+angeline
+angelique
+angelize
+angellike
+Angelo
+angelocracy
+angelographer
+angelolater
+angelolatry
+angelologic
+angelological
+angelology
+angelomachy
+Angelonia
+angelophany
+angelot
+angelship
+Angelus
+anger
+angerly
+Angerona
+Angeronalia
+Angers
+Angetenar
+Angevin
+angeyok
+angiasthenia
+angico
+Angie
+angiectasis
+angiectopia
+angiemphraxis
+angiitis
+angild
+angili
+angina
+anginal
+anginiform
+anginoid
+anginose
+anginous
+angioasthenia
+angioataxia
+angioblast
+angioblastic
+angiocarditis
+angiocarp
+angiocarpian
+angiocarpic
+angiocarpous
+angiocavernous
+angiocholecystitis
+angiocholitis
+angiochondroma
+angioclast
+angiocyst
+angiodermatitis
+angiodiascopy
+angioelephantiasis
+angiofibroma
+angiogenesis
+angiogenic
+angiogeny
+angioglioma
+angiograph
+angiography
+angiohyalinosis
+angiohydrotomy
+angiohypertonia
+angiohypotonia
+angioid
+angiokeratoma
+angiokinesis
+angiokinetic
+angioleucitis
+angiolipoma
+angiolith
+angiology
+angiolymphitis
+angiolymphoma
+angioma
+angiomalacia
+angiomatosis
+angiomatous
+angiomegaly
+angiometer
+angiomyocardiac
+angiomyoma
+angiomyosarcoma
+angioneoplasm
+angioneurosis
+angioneurotic
+angionoma
+angionosis
+angioparalysis
+angioparalytic
+angioparesis
+angiopathy
+angiophorous
+angioplany
+angioplasty
+angioplerosis
+angiopoietic
+angiopressure
+angiorrhagia
+angiorrhaphy
+angiorrhea
+angiorrhexis
+angiosarcoma
+angiosclerosis
+angiosclerotic
+angioscope
+angiosis
+angiospasm
+angiospastic
+angiosperm
+Angiospermae
+angiospermal
+angiospermatous
+angiospermic
+angiospermous
+angiosporous
+angiostegnosis
+angiostenosis
+angiosteosis
+angiostomize
+angiostomy
+angiostrophy
+angiosymphysis
+angiotasis
+angiotelectasia
+angiothlipsis
+angiotome
+angiotomy
+angiotonic
+angiotonin
+angiotribe
+angiotripsy
+angiotrophic
+Angka
+anglaise
+angle
+angleberry
+angled
+anglehook
+anglepod
+angler
+Angles
+anglesite
+anglesmith
+angletouch
+angletwitch
+anglewing
+anglewise
+angleworm
+Anglian
+Anglic
+Anglican
+Anglicanism
+Anglicanize
+Anglicanly
+Anglicanum
+Anglicism
+Anglicist
+Anglicization
+anglicization
+Anglicize
+anglicize
+Anglification
+Anglify
+anglimaniac
+angling
+Anglish
+Anglist
+Anglistics
+Anglogaea
+Anglogaean
+angloid
+Angloman
+Anglomane
+Anglomania
+Anglomaniac
+Anglophile
+Anglophobe
+Anglophobia
+Anglophobiac
+Anglophobic
+Anglophobist
+ango
+Angola
+angolar
+Angolese
+angor
+Angora
+angostura
+Angouleme
+Angoumian
+Angraecum
+angrily
+angriness
+angrite
+angry
+angst
+angster
+Angstrom
+angstrom
+anguid
+Anguidae
+anguiform
+Anguilla
+Anguillaria
+Anguillidae
+anguilliform
+anguilloid
+Anguillula
+Anguillulidae
+Anguimorpha
+anguine
+anguineal
+anguineous
+Anguinidae
+anguiped
+Anguis
+anguis
+anguish
+anguished
+anguishful
+anguishous
+anguishously
+angula
+angular
+angulare
+angularity
+angularization
+angularize
+angularly
+angularness
+angulate
+angulated
+angulately
+angulateness
+angulation
+angulatogibbous
+angulatosinuous
+anguliferous
+angulinerved
+Anguloa
+angulodentate
+angulometer
+angulosity
+angulosplenial
+angulous
+anguria
+Angus
+angusticlave
+angustifoliate
+angustifolious
+angustirostrate
+angustisellate
+angustiseptal
+angustiseptate
+angwantibo
+anhalamine
+anhaline
+anhalonine
+Anhalonium
+anhalouidine
+anhang
+Anhanga
+anharmonic
+anhedonia
+anhedral
+anhedron
+anhelation
+anhelous
+anhematosis
+anhemolytic
+anhidrosis
+anhidrotic
+anhima
+Anhimae
+Anhimidae
+anhinga
+anhistic
+anhistous
+anhungered
+anhungry
+anhydrate
+anhydration
+anhydremia
+anhydremic
+anhydric
+anhydride
+anhydridization
+anhydridize
+anhydrite
+anhydrization
+anhydrize
+anhydroglocose
+anhydromyelia
+anhydrous
+anhydroxime
+anhysteretic
+ani
+Aniba
+Anice
+aniconic
+aniconism
+anicular
+anicut
+anidian
+anidiomatic
+anidiomatical
+anidrosis
+Aniellidae
+aniente
+anigh
+anight
+anights
+anil
+anilao
+anilau
+anile
+anileness
+anilic
+anilid
+anilide
+anilidic
+anilidoxime
+aniline
+anilinism
+anilinophile
+anilinophilous
+anility
+anilla
+anilopyrin
+anilopyrine
+anima
+animability
+animable
+animableness
+animadversion
+animadversional
+animadversive
+animadversiveness
+animadvert
+animadverter
+animal
+animalcula
+animalculae
+animalcular
+animalcule
+animalculine
+animalculism
+animalculist
+animalculous
+animalculum
+animalhood
+Animalia
+animalian
+animalic
+animalier
+animalish
+animalism
+animalist
+animalistic
+animality
+Animalivora
+animalivore
+animalivorous
+animalization
+animalize
+animally
+animastic
+animastical
+animate
+animated
+animatedly
+animately
+animateness
+animater
+animating
+animatingly
+animation
+animatism
+animatistic
+animative
+animatograph
+animator
+anime
+animi
+Animikean
+animikite
+animism
+animist
+animistic
+animize
+animosity
+animotheism
+animous
+animus
+anion
+anionic
+aniridia
+anis
+anisal
+anisalcohol
+anisaldehyde
+anisaldoxime
+anisamide
+anisandrous
+anisanilide
+anisate
+anischuria
+anise
+aniseed
+aniseikonia
+aniseikonic
+aniselike
+aniseroot
+anisette
+anisic
+anisidin
+anisidine
+anisil
+anisilic
+anisobranchiate
+anisocarpic
+anisocarpous
+anisocercal
+anisochromatic
+anisochromia
+anisocoria
+anisocotyledonous
+anisocotyly
+anisocratic
+anisocycle
+anisocytosis
+anisodactyl
+Anisodactyla
+Anisodactyli
+anisodactylic
+anisodactylous
+anisodont
+anisogamete
+anisogamous
+anisogamy
+anisogenous
+anisogeny
+anisognathism
+anisognathous
+anisogynous
+anisoin
+anisole
+anisoleucocytosis
+Anisomeles
+anisomelia
+anisomelus
+anisomeric
+anisomerous
+anisometric
+anisometrope
+anisometropia
+anisometropic
+anisomyarian
+Anisomyodi
+anisomyodian
+anisomyodous
+anisopetalous
+anisophyllous
+anisophylly
+anisopia
+anisopleural
+anisopleurous
+anisopod
+Anisopoda
+anisopodal
+anisopodous
+anisopogonous
+Anisoptera
+anisopterous
+anisosepalous
+anisospore
+anisostaminous
+anisostemonous
+anisosthenic
+anisostichous
+Anisostichus
+anisostomous
+anisotonic
+anisotropal
+anisotrope
+anisotropic
+anisotropical
+anisotropically
+anisotropism
+anisotropous
+anisotropy
+anisoyl
+anisum
+anisuria
+anisyl
+anisylidene
+Anita
+anither
+anitrogenous
+anjan
+Anjou
+ankaramite
+ankaratrite
+ankee
+anker
+ankerite
+ankh
+ankle
+anklebone
+anklejack
+anklet
+anklong
+Ankoli
+Ankou
+ankus
+ankusha
+ankylenteron
+ankyloblepharon
+ankylocheilia
+ankylodactylia
+ankylodontia
+ankyloglossia
+ankylomele
+ankylomerism
+ankylophobia
+ankylopodia
+ankylopoietic
+ankyloproctia
+ankylorrhinia
+Ankylosaurus
+ankylose
+ankylosis
+ankylostoma
+ankylotia
+ankylotic
+ankylotome
+ankylotomy
+ankylurethria
+ankyroid
+anlace
+anlaut
+Ann
+ann
+Anna
+anna
+Annabel
+annabergite
+annal
+annale
+annaline
+annalism
+annalist
+annalistic
+annalize
+annals
+Annam
+Annamese
+Annamite
+Annamitic
+Annapurna
+Annard
+annat
+annates
+annatto
+Anne
+anneal
+annealer
+annectent
+annection
+annelid
+Annelida
+annelidan
+Annelides
+annelidian
+annelidous
+annelism
+Annellata
+anneloid
+annerodite
+Anneslia
+annet
+Annette
+annex
+annexa
+annexable
+annexal
+annexation
+annexational
+annexationist
+annexer
+annexion
+annexionist
+annexitis
+annexive
+annexment
+annexure
+annidalin
+Annie
+Anniellidae
+annihilability
+annihilable
+annihilate
+annihilation
+annihilationism
+annihilationist
+annihilative
+annihilator
+annihilatory
+Annist
+annite
+anniversarily
+anniversariness
+anniversary
+anniverse
+annodated
+Annona
+annona
+Annonaceae
+annonaceous
+annotate
+annotater
+annotation
+annotative
+annotator
+annotatory
+annotine
+annotinous
+announce
+announceable
+announcement
+announcer
+annoy
+annoyance
+annoyancer
+annoyer
+annoyful
+annoying
+annoyingly
+annoyingness
+annoyment
+annual
+annualist
+annualize
+annually
+annuary
+annueler
+annuent
+annuitant
+annuity
+annul
+annular
+Annularia
+annularity
+annularly
+annulary
+Annulata
+annulate
+annulated
+annulation
+annulet
+annulettee
+annulism
+annullable
+annullate
+annullation
+annuller
+annulment
+annuloid
+Annuloida
+Annulosa
+annulosan
+annulose
+annulus
+annunciable
+annunciate
+annunciation
+annunciative
+annunciator
+annunciatory
+anoa
+Anobiidae
+anocarpous
+anociassociation
+anococcygeal
+anodal
+anode
+anodendron
+anodic
+anodically
+anodize
+Anodon
+Anodonta
+anodontia
+anodos
+anodyne
+anodynia
+anodynic
+anodynous
+anoegenetic
+anoesia
+anoesis
+anoestrous
+anoestrum
+anoestrus
+anoetic
+anogenic
+anogenital
+Anogra
+anoil
+anoine
+anoint
+anointer
+anointment
+anole
+anoli
+anolian
+Anolis
+Anolympiad
+anolyte
+Anomala
+anomaliflorous
+anomaliped
+anomalism
+anomalist
+anomalistic
+anomalistical
+anomalistically
+anomalocephalus
+anomaloflorous
+Anomalogonatae
+anomalogonatous
+Anomalon
+anomalonomy
+Anomalopteryx
+anomaloscope
+anomalotrophy
+anomalous
+anomalously
+anomalousness
+anomalure
+Anomaluridae
+Anomalurus
+anomaly
+Anomatheca
+Anomia
+Anomiacea
+Anomiidae
+anomite
+anomocarpous
+anomodont
+Anomodontia
+Anomoean
+Anomoeanism
+anomophyllous
+anomorhomboid
+anomorhomboidal
+anomphalous
+Anomura
+anomural
+anomuran
+anomurous
+anomy
+anon
+anonang
+anoncillo
+anonol
+anonychia
+anonym
+anonyma
+anonymity
+anonymous
+anonymously
+anonymousness
+anonymuncule
+anoopsia
+anoperineal
+anophele
+Anopheles
+Anophelinae
+anopheline
+anophoria
+anophthalmia
+anophthalmos
+Anophthalmus
+anophyte
+anopia
+anopisthographic
+Anopla
+Anoplanthus
+anoplocephalic
+anoplonemertean
+Anoplonemertini
+anoplothere
+Anoplotheriidae
+anoplotherioid
+Anoplotherium
+anoplotheroid
+Anoplura
+anopluriform
+anopsia
+anopubic
+anorak
+anorchia
+anorchism
+anorchous
+anorchus
+anorectal
+anorectic
+anorectous
+anorexia
+anorexy
+anorgana
+anorganic
+anorganism
+anorganology
+anormal
+anormality
+anorogenic
+anorth
+anorthic
+anorthite
+anorthitic
+anorthitite
+anorthoclase
+anorthographic
+anorthographical
+anorthographically
+anorthography
+anorthophyre
+anorthopia
+anorthoscope
+anorthose
+anorthosite
+anoscope
+anoscopy
+Anosia
+anosmatic
+anosmia
+anosmic
+anosphrasia
+anosphresia
+anospinal
+anostosis
+Anostraca
+anoterite
+another
+anotherkins
+anotia
+anotropia
+anotta
+anotto
+anotus
+anounou
+Anous
+anovesical
+anoxemia
+anoxemic
+anoxia
+anoxic
+anoxidative
+anoxybiosis
+anoxybiotic
+anoxyscope
+ansa
+ansar
+ansarian
+Ansarie
+ansate
+ansation
+Anseis
+Ansel
+Anselm
+Anselmian
+Anser
+anserated
+Anseres
+Anseriformes
+Anserinae
+anserine
+anserous
+anspessade
+ansu
+ansulate
+answer
+answerability
+answerable
+answerableness
+answerably
+answerer
+answeringly
+answerless
+answerlessly
+ant
+Anta
+anta
+antacid
+antacrid
+antadiform
+Antaean
+Antaeus
+antagonism
+antagonist
+antagonistic
+antagonistical
+antagonistically
+antagonization
+antagonize
+antagonizer
+antagony
+Antaimerina
+Antaios
+Antaiva
+antal
+antalgesic
+antalgol
+antalkali
+antalkaline
+antambulacral
+antanacathartic
+antanaclasis
+Antanandro
+antanemic
+antapex
+antaphrodisiac
+antaphroditic
+antapocha
+antapodosis
+antapology
+antapoplectic
+Antar
+Antara
+antarchism
+antarchist
+antarchistic
+antarchistical
+antarchy
+Antarctalia
+Antarctalian
+antarctic
+Antarctica
+antarctica
+antarctical
+antarctically
+Antarctogaea
+Antarctogaean
+Antares
+antarthritic
+antasphyctic
+antasthenic
+antasthmatic
+antatrophic
+antdom
+ante
+anteact
+anteal
+anteambulate
+anteambulation
+anteater
+antebaptismal
+antebath
+antebrachial
+antebrachium
+antebridal
+antecabinet
+antecaecal
+antecardium
+antecavern
+antecedaneous
+antecedaneously
+antecede
+antecedence
+antecedency
+antecedent
+antecedental
+antecedently
+antecessor
+antechamber
+antechapel
+Antechinomys
+antechoir
+antechurch
+anteclassical
+antecloset
+antecolic
+antecommunion
+anteconsonantal
+antecornu
+antecourt
+antecoxal
+antecubital
+antecurvature
+antedate
+antedawn
+antediluvial
+antediluvially
+antediluvian
+Antedon
+antedonin
+antedorsal
+antefebrile
+antefix
+antefixal
+anteflected
+anteflexed
+anteflexion
+antefurca
+antefurcal
+antefuture
+antegarden
+antegrade
+antehall
+antehistoric
+antehuman
+antehypophysis
+anteinitial
+antejentacular
+antejudiciary
+antejuramentum
+antelabium
+antelegal
+antelocation
+antelope
+antelopian
+antelucan
+antelude
+anteluminary
+antemarginal
+antemarital
+antemedial
+antemeridian
+antemetallic
+antemetic
+antemillennial
+antemingent
+antemortal
+antemundane
+antemural
+antenarial
+antenatal
+antenatalitial
+antenati
+antenave
+antenna
+antennae
+antennal
+Antennaria
+antennariid
+Antennariidae
+Antennarius
+antennary
+Antennata
+antennate
+antenniferous
+antenniform
+antennula
+antennular
+antennulary
+antennule
+antenodal
+antenoon
+Antenor
+antenumber
+anteoccupation
+anteocular
+anteopercle
+anteoperculum
+anteorbital
+antepagmenta
+antepagments
+antepalatal
+antepaschal
+antepast
+antepatriarchal
+antepectoral
+antepectus
+antependium
+antepenult
+antepenultima
+antepenultimate
+antephialtic
+antepileptic
+antepirrhema
+anteporch
+anteportico
+anteposition
+anteposthumous
+anteprandial
+antepredicament
+antepredicamental
+antepreterit
+antepretonic
+anteprohibition
+anteprostate
+anteprostatic
+antepyretic
+antequalm
+antereformation
+antereformational
+anteresurrection
+anterethic
+anterevolutional
+anterevolutionary
+anteriad
+anterior
+anteriority
+anteriorly
+anteriorness
+anteroclusion
+anterodorsal
+anteroexternal
+anterofixation
+anteroflexion
+anterofrontal
+anterograde
+anteroinferior
+anterointerior
+anterointernal
+anterolateral
+anterolaterally
+anteromedial
+anteromedian
+anteroom
+anteroparietal
+anteroposterior
+anteroposteriorly
+anteropygal
+anterospinal
+anterosuperior
+anteroventral
+anteroventrally
+antes
+antescript
+antesignanus
+antespring
+antestature
+antesternal
+antesternum
+antesunrise
+antesuperior
+antetemple
+antetype
+Anteva
+antevenient
+anteversion
+antevert
+antevocalic
+antewar
+anthecological
+anthecologist
+anthecology
+Antheia
+anthela
+anthelion
+anthelmintic
+anthem
+anthema
+anthemene
+anthemia
+Anthemideae
+anthemion
+Anthemis
+anthemwise
+anthemy
+anther
+Antheraea
+antheral
+Anthericum
+antherid
+antheridial
+antheridiophore
+antheridium
+antheriferous
+antheriform
+antherless
+antherogenous
+antheroid
+antherozoid
+antherozoidal
+antherozooid
+antherozooidal
+anthesis
+Anthesteria
+Anthesteriac
+anthesterin
+Anthesterion
+anthesterol
+antheximeter
+Anthicidae
+Anthidium
+anthill
+Anthinae
+anthine
+anthobiology
+anthocarp
+anthocarpous
+anthocephalous
+Anthoceros
+Anthocerotaceae
+Anthocerotales
+anthocerote
+anthochlor
+anthochlorine
+anthoclinium
+anthocyan
+anthocyanidin
+anthocyanin
+anthodium
+anthoecological
+anthoecologist
+anthoecology
+anthogenesis
+anthogenetic
+anthogenous
+anthography
+anthoid
+anthokyan
+antholite
+anthological
+anthologically
+anthologion
+anthologist
+anthologize
+anthology
+antholysis
+Antholyza
+anthomania
+anthomaniac
+Anthomedusae
+anthomedusan
+Anthomyia
+anthomyiid
+Anthomyiidae
+Anthonin
+Anthonomus
+Anthony
+anthood
+anthophagous
+Anthophila
+anthophile
+anthophilian
+anthophilous
+anthophobia
+Anthophora
+anthophore
+Anthophoridae
+anthophorous
+anthophyllite
+anthophyllitic
+Anthophyta
+anthophyte
+anthorine
+anthosiderite
+Anthospermum
+anthotaxis
+anthotaxy
+anthotropic
+anthotropism
+anthoxanthin
+Anthoxanthum
+Anthozoa
+anthozoan
+anthozoic
+anthozooid
+anthozoon
+anthracemia
+anthracene
+anthraceniferous
+anthrachrysone
+anthracia
+anthracic
+anthraciferous
+anthracin
+anthracite
+anthracitic
+anthracitiferous
+anthracitious
+anthracitism
+anthracitization
+anthracnose
+anthracnosis
+anthracocide
+anthracoid
+anthracolithic
+anthracomancy
+Anthracomarti
+anthracomartian
+Anthracomartus
+anthracometer
+anthracometric
+anthraconecrosis
+anthraconite
+Anthracosaurus
+anthracosis
+anthracothere
+Anthracotheriidae
+Anthracotherium
+anthracotic
+anthracyl
+anthradiol
+anthradiquinone
+anthraflavic
+anthragallol
+anthrahydroquinone
+anthramine
+anthranil
+anthranilate
+anthranilic
+anthranol
+anthranone
+anthranoyl
+anthranyl
+anthraphenone
+anthrapurpurin
+anthrapyridine
+anthraquinol
+anthraquinone
+anthraquinonyl
+anthrarufin
+anthratetrol
+anthrathiophene
+anthratriol
+anthrax
+anthraxolite
+anthraxylon
+Anthrenus
+anthribid
+Anthribidae
+Anthriscus
+anthrohopobiological
+anthroic
+anthrol
+anthrone
+anthropic
+anthropical
+Anthropidae
+anthropobiologist
+anthropobiology
+anthropocentric
+anthropocentrism
+anthropoclimatologist
+anthropoclimatology
+anthropocosmic
+anthropodeoxycholic
+Anthropodus
+anthropogenesis
+anthropogenetic
+anthropogenic
+anthropogenist
+anthropogenous
+anthropogeny
+anthropogeographer
+anthropogeographical
+anthropogeography
+anthropoglot
+anthropogony
+anthropography
+anthropoid
+anthropoidal
+Anthropoidea
+anthropoidean
+anthropolater
+anthropolatric
+anthropolatry
+anthropolite
+anthropolithic
+anthropolitic
+anthropological
+anthropologically
+anthropologist
+anthropology
+anthropomancy
+anthropomantic
+anthropomantist
+anthropometer
+anthropometric
+anthropometrical
+anthropometrically
+anthropometrist
+anthropometry
+anthropomorph
+Anthropomorpha
+anthropomorphic
+anthropomorphical
+anthropomorphically
+Anthropomorphidae
+anthropomorphism
+anthropomorphist
+anthropomorphite
+anthropomorphitic
+anthropomorphitical
+anthropomorphitism
+anthropomorphization
+anthropomorphize
+anthropomorphological
+anthropomorphologically
+anthropomorphology
+anthropomorphosis
+anthropomorphotheist
+anthropomorphous
+anthropomorphously
+anthroponomical
+anthroponomics
+anthroponomist
+anthroponomy
+anthropopathia
+anthropopathic
+anthropopathically
+anthropopathism
+anthropopathite
+anthropopathy
+anthropophagi
+anthropophagic
+anthropophagical
+anthropophaginian
+anthropophagism
+anthropophagist
+anthropophagistic
+anthropophagite
+anthropophagize
+anthropophagous
+anthropophagously
+anthropophagy
+anthropophilous
+anthropophobia
+anthropophuism
+anthropophuistic
+anthropophysiography
+anthropophysite
+Anthropopithecus
+anthropopsychic
+anthropopsychism
+Anthropos
+anthroposcopy
+anthroposociologist
+anthroposociology
+anthroposomatology
+anthroposophical
+anthroposophist
+anthroposophy
+anthropoteleoclogy
+anthropoteleological
+anthropotheism
+anthropotomical
+anthropotomist
+anthropotomy
+anthropotoxin
+Anthropozoic
+anthropurgic
+anthroropolith
+anthroxan
+anthroxanic
+anthryl
+anthrylene
+Anthurium
+Anthus
+Anthyllis
+anthypophora
+anthypophoretic
+Anti
+anti
+antiabolitionist
+antiabrasion
+antiabrin
+antiabsolutist
+antiacid
+antiadiaphorist
+antiaditis
+antiadministration
+antiae
+antiaesthetic
+antiager
+antiagglutinating
+antiagglutinin
+antiaggression
+antiaggressionist
+antiaggressive
+antiaircraft
+antialbumid
+antialbumin
+antialbumose
+antialcoholic
+antialcoholism
+antialcoholist
+antialdoxime
+antialexin
+antialien
+antiamboceptor
+antiamusement
+antiamylase
+antianaphylactogen
+antianaphylaxis
+antianarchic
+antianarchist
+antiangular
+antiannexation
+antiannexationist
+antianopheline
+antianthrax
+antianthropocentric
+antianthropomorphism
+antiantibody
+antiantidote
+antiantienzyme
+antiantitoxin
+antiaphrodisiac
+antiaphthic
+antiapoplectic
+antiapostle
+antiaquatic
+antiar
+Antiarcha
+Antiarchi
+antiarin
+Antiaris
+antiaristocrat
+antiarthritic
+antiascetic
+antiasthmatic
+antiastronomical
+antiatheism
+antiatheist
+antiatonement
+antiattrition
+antiautolysin
+antibacchic
+antibacchius
+antibacterial
+antibacteriolytic
+antiballooner
+antibalm
+antibank
+antibasilican
+antibenzaldoxime
+antiberiberin
+antibibliolatry
+antibigotry
+antibilious
+antibiont
+antibiosis
+antibiotic
+antibishop
+antiblastic
+antiblennorrhagic
+antiblock
+antiblue
+antibody
+antiboxing
+antibreakage
+antibridal
+antibromic
+antibubonic
+Antiburgher
+antic
+anticachectic
+antical
+anticalcimine
+anticalculous
+anticalligraphic
+anticancer
+anticapital
+anticapitalism
+anticapitalist
+anticardiac
+anticardium
+anticarious
+anticarnivorous
+anticaste
+anticatalase
+anticatalyst
+anticatalytic
+anticatalyzer
+anticatarrhal
+anticathexis
+anticathode
+anticaustic
+anticensorship
+anticentralization
+anticephalalgic
+anticeremonial
+anticeremonialism
+anticeremonialist
+anticheater
+antichlor
+antichlorine
+antichloristic
+antichlorotic
+anticholagogue
+anticholinergic
+antichoromanic
+antichorus
+antichresis
+antichretic
+antichrist
+antichristian
+antichristianity
+antichristianly
+antichrome
+antichronical
+antichronically
+antichthon
+antichurch
+antichurchian
+antichymosin
+anticipant
+anticipatable
+anticipate
+anticipation
+anticipative
+anticipatively
+anticipator
+anticipatorily
+anticipatory
+anticivic
+anticivism
+anticize
+anticker
+anticlactic
+anticlassical
+anticlassicist
+Anticlea
+anticlergy
+anticlerical
+anticlericalism
+anticlimactic
+anticlimax
+anticlinal
+anticline
+anticlinorium
+anticlockwise
+anticlogging
+anticly
+anticnemion
+anticness
+anticoagulant
+anticoagulating
+anticoagulative
+anticoagulin
+anticogitative
+anticolic
+anticombination
+anticomet
+anticomment
+anticommercial
+anticommunist
+anticomplement
+anticomplementary
+anticomplex
+anticonceptionist
+anticonductor
+anticonfederationist
+anticonformist
+anticonscience
+anticonscription
+anticonscriptive
+anticonstitutional
+anticonstitutionalist
+anticonstitutionally
+anticontagion
+anticontagionist
+anticontagious
+anticonventional
+anticonventionalism
+anticonvulsive
+anticor
+anticorn
+anticorrosion
+anticorrosive
+anticorset
+anticosine
+anticosmetic
+anticouncil
+anticourt
+anticourtier
+anticous
+anticovenanter
+anticovenanting
+anticreation
+anticreative
+anticreator
+anticreep
+anticreeper
+anticreeping
+anticrepuscular
+anticrepuscule
+anticrisis
+anticritic
+anticritique
+anticrochet
+anticrotalic
+anticryptic
+anticum
+anticyclic
+anticyclone
+anticyclonic
+anticyclonically
+anticynic
+anticytolysin
+anticytotoxin
+antidactyl
+antidancing
+antidecalogue
+antideflation
+antidemocrat
+antidemocratic
+antidemocratical
+antidemoniac
+antidetonant
+antidetonating
+antidiabetic
+antidiastase
+Antidicomarian
+Antidicomarianite
+antidictionary
+antidiffuser
+antidinic
+antidiphtheria
+antidiphtheric
+antidiphtherin
+antidiphtheritic
+antidisciplinarian
+antidivine
+antidivorce
+antidogmatic
+antidomestic
+antidominican
+Antidorcas
+antidoron
+antidotal
+antidotally
+antidotary
+antidote
+antidotical
+antidotically
+antidotism
+antidraft
+antidrag
+antidromal
+antidromic
+antidromically
+antidromous
+antidromy
+antidrug
+antiduke
+antidumping
+antidynamic
+antidynastic
+antidyscratic
+antidysenteric
+antidysuric
+antiecclesiastic
+antiecclesiastical
+antiedemic
+antieducation
+antieducational
+antiegotism
+antiejaculation
+antiemetic
+antiemperor
+antiempirical
+antiendotoxin
+antiendowment
+antienergistic
+antienthusiastic
+antienzyme
+antienzymic
+antiepicenter
+antiepileptic
+antiepiscopal
+antiepiscopist
+antiepithelial
+antierosion
+antierysipelas
+Antietam
+antiethnic
+antieugenic
+antievangelical
+antievolution
+antievolutionist
+antiexpansionist
+antiexporting
+antiextreme
+antieyestrain
+antiface
+antifaction
+antifame
+antifanatic
+antifat
+antifatigue
+antifebrile
+antifederal
+antifederalism
+antifederalist
+antifelon
+antifelony
+antifeminism
+antifeminist
+antiferment
+antifermentative
+antifertilizer
+antifeudal
+antifeudalism
+antifibrinolysin
+antifibrinolysis
+antifideism
+antifire
+antiflash
+antiflattering
+antiflatulent
+antiflux
+antifoam
+antifoaming
+antifogmatic
+antiforeign
+antiforeignism
+antiformin
+antifouler
+antifouling
+antifowl
+antifreeze
+antifreezing
+antifriction
+antifrictional
+antifrost
+antifundamentalist
+antifungin
+antigalactagogue
+antigalactic
+antigambling
+antiganting
+antigen
+antigenic
+antigenicity
+antighostism
+antigigmanic
+antiglare
+antiglyoxalase
+antigod
+Antigone
+antigonococcic
+Antigonon
+antigonorrheic
+Antigonus
+antigorite
+antigovernment
+antigraft
+antigrammatical
+antigraph
+antigravitate
+antigravitational
+antigropelos
+antigrowth
+Antiguan
+antiguggler
+antigyrous
+antihalation
+antiharmonist
+antihectic
+antihelix
+antihelminthic
+antihemagglutinin
+antihemisphere
+antihemoglobin
+antihemolysin
+antihemolytic
+antihemorrhagic
+antihemorrheidal
+antihero
+antiheroic
+antiheroism
+antiheterolysin
+antihidrotic
+antihierarchical
+antihierarchist
+antihistamine
+antihistaminic
+antiholiday
+antihormone
+antihuff
+antihum
+antihuman
+antihumbuggist
+antihunting
+antihydrophobic
+antihydropic
+antihydropin
+antihygienic
+antihylist
+antihypnotic
+antihypochondriac
+antihypophora
+antihysteric
+Antikamnia
+antikathode
+antikenotoxin
+antiketogen
+antiketogenesis
+antiketogenic
+antikinase
+antiking
+antiknock
+antilabor
+antilaborist
+antilacrosse
+antilacrosser
+antilactase
+antilapsarian
+antileague
+antilegalist
+antilegomena
+antilemic
+antilens
+antilepsis
+antileptic
+antilethargic
+antileveling
+Antilia
+antiliberal
+antilibration
+antilift
+antilipase
+antilipoid
+antiliquor
+antilithic
+antiliturgical
+antiliturgist
+Antillean
+antilobium
+Antilocapra
+Antilocapridae
+Antilochus
+antiloemic
+antilogarithm
+antilogic
+antilogical
+antilogism
+antilogous
+antilogy
+antiloimic
+Antilope
+Antilopinae
+antilottery
+antiluetin
+antilynching
+antilysin
+antilysis
+antilyssic
+antilytic
+antimacassar
+antimachine
+antimachinery
+antimagistratical
+antimalaria
+antimalarial
+antimallein
+antimaniac
+antimaniacal
+Antimarian
+antimark
+antimartyr
+antimask
+antimasker
+Antimason
+Antimasonic
+Antimasonry
+antimasque
+antimasquer
+antimasquerade
+antimaterialist
+antimaterialistic
+antimatrimonial
+antimatrimonialist
+antimedical
+antimedieval
+antimelancholic
+antimellin
+antimeningococcic
+antimension
+antimensium
+antimephitic
+antimere
+antimerger
+antimeric
+Antimerina
+antimerism
+antimeristem
+antimetabole
+antimetathesis
+antimetathetic
+antimeter
+antimethod
+antimetrical
+antimetropia
+antimetropic
+antimiasmatic
+antimicrobic
+antimilitarism
+antimilitarist
+antimilitary
+antiministerial
+antiministerialist
+antiminsion
+antimiscegenation
+antimission
+antimissionary
+antimissioner
+antimixing
+antimnemonic
+antimodel
+antimodern
+antimonarchial
+antimonarchic
+antimonarchical
+antimonarchically
+antimonarchicalness
+antimonarchist
+antimonate
+antimonial
+antimoniate
+antimoniated
+antimonic
+antimonid
+antimonide
+antimoniferous
+antimonious
+antimonite
+antimonium
+antimoniuret
+antimoniureted
+antimoniuretted
+antimonopolist
+antimonopoly
+antimonsoon
+antimony
+antimonyl
+antimoral
+antimoralism
+antimoralist
+antimosquito
+antimusical
+antimycotic
+antimythic
+antimythical
+antinarcotic
+antinarrative
+antinational
+antinationalist
+antinationalistic
+antinatural
+antinegro
+antinegroism
+antineologian
+antinephritic
+antinepotic
+antineuralgic
+antineuritic
+antineurotoxin
+antineutral
+antinial
+antinicotine
+antinion
+antinode
+antinoise
+antinome
+antinomian
+antinomianism
+antinomic
+antinomical
+antinomist
+antinomy
+antinormal
+antinosarian
+Antinous
+Antiochene
+Antiochian
+Antiochianism
+antiodont
+antiodontalgic
+Antiope
+antiopelmous
+antiophthalmic
+antiopium
+antiopiumist
+antiopiumite
+antioptimist
+antioptionist
+antiorgastic
+antiorthodox
+antioxidant
+antioxidase
+antioxidizer
+antioxidizing
+antioxygen
+antioxygenation
+antioxygenator
+antioxygenic
+antipacifist
+antipapacy
+antipapal
+antipapalist
+antipapism
+antipapist
+antipapistical
+antiparabema
+antiparagraphe
+antiparagraphic
+antiparallel
+antiparallelogram
+antiparalytic
+antiparalytical
+antiparasitic
+antiparastatitis
+antiparliament
+antiparliamental
+antiparliamentarist
+antiparliamentary
+antipart
+Antipasch
+Antipascha
+antipass
+antipastic
+Antipatharia
+antipatharian
+antipathetic
+antipathetical
+antipathetically
+antipatheticalness
+antipathic
+Antipathida
+antipathist
+antipathize
+antipathogen
+antipathy
+antipatriarch
+antipatriarchal
+antipatriot
+antipatriotic
+antipatriotism
+antipedal
+Antipedobaptism
+Antipedobaptist
+antipeduncular
+antipellagric
+antipepsin
+antipeptone
+antiperiodic
+antiperistalsis
+antiperistaltic
+antiperistasis
+antiperistatic
+antiperistatical
+antiperistatically
+antipersonnel
+antiperthite
+antipestilential
+antipetalous
+antipewism
+antiphagocytic
+antipharisaic
+antipharmic
+antiphase
+antiphilosophic
+antiphilosophical
+antiphlogistian
+antiphlogistic
+antiphon
+antiphonal
+antiphonally
+antiphonary
+antiphoner
+antiphonetic
+antiphonic
+antiphonical
+antiphonically
+antiphonon
+antiphony
+antiphrasis
+antiphrastic
+antiphrastical
+antiphrastically
+antiphthisic
+antiphthisical
+antiphylloxeric
+antiphysic
+antiphysical
+antiphysician
+antiplague
+antiplanet
+antiplastic
+antiplatelet
+antipleion
+antiplenist
+antiplethoric
+antipleuritic
+antiplurality
+antipneumococcic
+antipodagric
+antipodagron
+antipodal
+antipode
+antipodean
+antipodes
+antipodic
+antipodism
+antipodist
+antipoetic
+antipoints
+antipolar
+antipole
+antipolemist
+antipolitical
+antipollution
+antipolo
+antipolygamy
+antipolyneuritic
+antipool
+antipooling
+antipope
+antipopery
+antipopular
+antipopulationist
+antiportable
+antiposition
+antipoverty
+antipragmatic
+antipragmatist
+antiprecipitin
+antipredeterminant
+antiprelate
+antiprelatic
+antiprelatist
+antipreparedness
+antiprestidigitation
+antipriest
+antipriestcraft
+antiprime
+antiprimer
+antipriming
+antiprinciple
+antiprism
+antiproductionist
+antiprofiteering
+antiprohibition
+antiprohibitionist
+antiprojectivity
+antiprophet
+antiprostate
+antiprostatic
+antiprotease
+antiproteolysis
+antiprotozoal
+antiprudential
+antipruritic
+antipsalmist
+antipsoric
+antiptosis
+antipudic
+antipuritan
+antiputrefaction
+antiputrefactive
+antiputrescent
+antiputrid
+antipyic
+antipyonin
+antipyresis
+antipyretic
+Antipyrine
+antipyrotic
+antipyryl
+antiqua
+antiquarian
+antiquarianism
+antiquarianize
+antiquarianly
+antiquarism
+antiquartan
+antiquary
+antiquate
+antiquated
+antiquatedness
+antiquation
+antique
+antiquely
+antiqueness
+antiquer
+antiquing
+antiquist
+antiquitarian
+antiquity
+antirabic
+antirabies
+antiracemate
+antiracer
+antirachitic
+antirachitically
+antiracing
+antiradiating
+antiradiation
+antiradical
+antirailwayist
+antirational
+antirationalism
+antirationalist
+antirationalistic
+antirattler
+antireactive
+antirealism
+antirealistic
+antirebating
+antirecruiting
+antired
+antireducer
+antireform
+antireformer
+antireforming
+antireformist
+antireligion
+antireligious
+antiremonstrant
+antirennet
+antirennin
+antirent
+antirenter
+antirentism
+antirepublican
+antireservationist
+antirestoration
+antireticular
+antirevisionist
+antirevolutionary
+antirevolutionist
+antirheumatic
+antiricin
+antirickets
+antiritual
+antiritualistic
+antirobin
+antiromance
+antiromantic
+antiromanticism
+antiroyal
+antiroyalist
+Antirrhinum
+antirumor
+antirun
+antirust
+antisacerdotal
+antisacerdotalist
+antisaloon
+antisalooner
+antisavage
+antiscabious
+antiscale
+antischolastic
+antischool
+antiscians
+antiscientific
+antiscion
+antiscolic
+antiscorbutic
+antiscorbutical
+antiscrofulous
+antiseismic
+antiselene
+antisensitizer
+antisensuous
+antisensuousness
+antisepalous
+antisepsin
+antisepsis
+antiseptic
+antiseptical
+antiseptically
+antisepticism
+antisepticist
+antisepticize
+antiseption
+antiseptize
+antiserum
+antishipping
+Antisi
+antisialagogue
+antisialic
+antisiccative
+antisideric
+antisilverite
+antisimoniacal
+antisine
+antisiphon
+antisiphonal
+antiskeptical
+antiskid
+antiskidding
+antislavery
+antislaveryism
+antislickens
+antislip
+antismoking
+antisnapper
+antisocial
+antisocialist
+antisocialistic
+antisocialistically
+antisociality
+antisolar
+antisophist
+antisoporific
+antispace
+antispadix
+antispasis
+antispasmodic
+antispast
+antispastic
+antispectroscopic
+antispermotoxin
+antispiritual
+antispirochetic
+antisplasher
+antisplenetic
+antisplitting
+antispreader
+antispreading
+antisquama
+antisquatting
+antistadholder
+antistadholderian
+antistalling
+antistaphylococcic
+antistate
+antistatism
+antistatist
+antisteapsin
+antisterility
+antistes
+antistimulant
+antistock
+antistreptococcal
+antistreptococcic
+antistreptococcin
+antistreptococcus
+antistrike
+antistrophal
+antistrophe
+antistrophic
+antistrophically
+antistrophize
+antistrophon
+antistrumatic
+antistrumous
+antisubmarine
+antisubstance
+antisudoral
+antisudorific
+antisuffrage
+antisuffragist
+antisun
+antisupernaturalism
+antisupernaturalist
+antisurplician
+antisymmetrical
+antisyndicalism
+antisyndicalist
+antisynod
+antisyphilitic
+antitabetic
+antitabloid
+antitangent
+antitank
+antitarnish
+antitartaric
+antitax
+antiteetotalism
+antitegula
+antitemperance
+antitetanic
+antitetanolysin
+antithalian
+antitheft
+antitheism
+antitheist
+antitheistic
+antitheistical
+antitheistically
+antithenar
+antitheologian
+antitheological
+antithermic
+antithermin
+antitheses
+antithesis
+antithesism
+antithesize
+antithet
+antithetic
+antithetical
+antithetically
+antithetics
+antithrombic
+antithrombin
+antitintinnabularian
+antitobacco
+antitobacconal
+antitobacconist
+antitonic
+antitorpedo
+antitoxic
+antitoxin
+antitrade
+antitrades
+antitraditional
+antitragal
+antitragic
+antitragicus
+antitragus
+antitrismus
+antitrochanter
+antitropal
+antitrope
+antitropic
+antitropical
+antitropous
+antitropy
+antitrust
+antitrypsin
+antitryptic
+antituberculin
+antituberculosis
+antituberculotic
+antituberculous
+antiturnpikeism
+antitwilight
+antitypal
+antitype
+antityphoid
+antitypic
+antitypical
+antitypically
+antitypy
+antityrosinase
+antiunion
+antiunionist
+antiuratic
+antiurease
+antiusurious
+antiutilitarian
+antivaccination
+antivaccinationist
+antivaccinator
+antivaccinist
+antivariolous
+antivenefic
+antivenereal
+antivenin
+antivenom
+antivenomous
+antivermicular
+antivibrating
+antivibrator
+antivibratory
+antivice
+antiviral
+antivirus
+antivitalist
+antivitalistic
+antivitamin
+antivivisection
+antivivisectionist
+antivolition
+antiwar
+antiwarlike
+antiwaste
+antiwedge
+antiweed
+antiwit
+antixerophthalmic
+antizealot
+antizymic
+antizymotic
+antler
+antlered
+antlerite
+antlerless
+antlia
+antliate
+Antlid
+antling
+antluetic
+antodontalgic
+antoeci
+antoecian
+antoecians
+Antoinette
+Anton
+Antonella
+Antonia
+Antonina
+antoninianus
+Antonio
+antonomasia
+antonomastic
+antonomastical
+antonomastically
+antonomasy
+Antony
+antonym
+antonymous
+antonymy
+antorbital
+antproof
+antra
+antral
+antralgia
+antre
+antrectomy
+antrin
+antritis
+antrocele
+antronasal
+antrophore
+antrophose
+antrorse
+antrorsely
+antroscope
+antroscopy
+Antrostomus
+antrotome
+antrotomy
+antrotympanic
+antrotympanitis
+antrum
+antrustion
+antrustionship
+antship
+Antu
+antu
+Antum
+Antwerp
+antwise
+anubing
+Anubis
+anucleate
+anukabiet
+Anukit
+anuloma
+Anura
+anuran
+anuresis
+anuretic
+anuria
+anuric
+anurous
+anury
+anus
+anusim
+anusvara
+anutraminosa
+anvasser
+anvil
+anvilsmith
+anxietude
+anxiety
+anxious
+anxiously
+anxiousness
+any
+anybody
+Anychia
+anyhow
+anyone
+anyplace
+Anystidae
+anything
+anythingarian
+anythingarianism
+anyway
+anyways
+anywhen
+anywhere
+anywhereness
+anywheres
+anywhy
+anywise
+anywither
+Anzac
+Anzanian
+Ao
+aogiri
+Aoife
+aonach
+Aonian
+aorist
+aoristic
+aoristically
+aorta
+aortal
+aortarctia
+aortectasia
+aortectasis
+aortic
+aorticorenal
+aortism
+aortitis
+aortoclasia
+aortoclasis
+aortolith
+aortomalacia
+aortomalaxis
+aortopathy
+aortoptosia
+aortoptosis
+aortorrhaphy
+aortosclerosis
+aortostenosis
+aortotomy
+aosmic
+Aotea
+Aotearoa
+Aotes
+Aotus
+aoudad
+Aouellimiden
+Aoul
+apa
+apabhramsa
+apace
+Apache
+apache
+Apachette
+apachism
+apachite
+apadana
+apagoge
+apagogic
+apagogical
+apagogically
+apaid
+Apalachee
+apalit
+Apama
+apandry
+Apanteles
+Apantesis
+apanthropia
+apanthropy
+apar
+Aparai
+aparaphysate
+aparejo
+Apargia
+aparithmesis
+apart
+apartheid
+aparthrosis
+apartment
+apartmental
+apartness
+apasote
+apastron
+apatan
+Apatela
+apatetic
+apathetic
+apathetical
+apathetically
+apathic
+apathism
+apathist
+apathistical
+apathogenic
+Apathus
+apathy
+apatite
+Apatornis
+Apatosaurus
+Apaturia
+Apayao
+ape
+apeak
+apectomy
+apedom
+apehood
+apeiron
+apelet
+apelike
+apeling
+apellous
+Apemantus
+Apennine
+apenteric
+apepsia
+apepsinia
+apepsy
+apeptic
+aper
+aperch
+aperea
+aperient
+aperiodic
+aperiodically
+aperiodicity
+aperispermic
+aperistalsis
+aperitive
+apert
+apertly
+apertness
+apertometer
+apertural
+aperture
+apertured
+Aperu
+apery
+apesthesia
+apesthetic
+apesthetize
+Apetalae
+apetaloid
+apetalose
+apetalous
+apetalousness
+apetaly
+apex
+apexed
+aphaeresis
+aphaeretic
+aphagia
+aphakia
+aphakial
+aphakic
+Aphanapteryx
+Aphanes
+aphanesite
+Aphaniptera
+aphanipterous
+aphanite
+aphanitic
+aphanitism
+Aphanomyces
+aphanophyre
+aphanozygous
+Apharsathacites
+aphasia
+aphasiac
+aphasic
+Aphelandra
+Aphelenchus
+aphelian
+Aphelinus
+aphelion
+apheliotropic
+apheliotropically
+apheliotropism
+Aphelops
+aphemia
+aphemic
+aphengescope
+aphengoscope
+aphenoscope
+apheresis
+apheretic
+aphesis
+apheta
+aphetic
+aphetically
+aphetism
+aphetize
+aphicidal
+aphicide
+aphid
+aphides
+aphidian
+aphidicide
+aphidicolous
+aphidid
+Aphididae
+Aphidiinae
+aphidious
+Aphidius
+aphidivorous
+aphidolysin
+aphidophagous
+aphidozer
+aphilanthropy
+Aphis
+aphlaston
+aphlebia
+aphlogistic
+aphnology
+aphodal
+aphodian
+Aphodius
+aphodus
+aphonia
+aphonic
+aphonous
+aphony
+aphoria
+aphorism
+aphorismatic
+aphorismer
+aphorismic
+aphorismical
+aphorismos
+aphorist
+aphoristic
+aphoristically
+aphorize
+aphorizer
+Aphoruridae
+aphotic
+aphototactic
+aphototaxis
+aphototropic
+aphototropism
+Aphra
+aphrasia
+aphrite
+aphrizite
+aphrodisia
+aphrodisiac
+aphrodisiacal
+aphrodisian
+Aphrodision
+Aphrodistic
+Aphrodite
+Aphroditeum
+aphroditic
+Aphroditidae
+aphroditous
+aphrolite
+aphronia
+aphrosiderite
+aphtha
+Aphthartodocetae
+Aphthartodocetic
+Aphthartodocetism
+aphthic
+aphthitalite
+aphthoid
+aphthong
+aphthongal
+aphthongia
+aphthous
+aphydrotropic
+aphydrotropism
+aphyllose
+aphyllous
+aphylly
+aphyric
+Apiaca
+Apiaceae
+apiaceous
+Apiales
+apian
+apiarian
+apiarist
+apiary
+apiator
+apicad
+apical
+apically
+apices
+Apician
+apicifixed
+apicilar
+apicillary
+apicitis
+apickaback
+apicoectomy
+apicolysis
+apicula
+apicular
+apiculate
+apiculated
+apiculation
+apicultural
+apiculture
+apiculturist
+apiculus
+Apidae
+apiece
+apieces
+apigenin
+apii
+apiin
+apikoros
+apilary
+Apina
+Apinae
+Apinage
+apinch
+aping
+apinoid
+apio
+Apioceridae
+apioid
+apioidal
+apiole
+apiolin
+apiologist
+apiology
+apionol
+Apios
+apiose
+Apiosoma
+apiphobia
+Apis
+apish
+apishamore
+apishly
+apishness
+apism
+apitong
+apitpat
+Apium
+apivorous
+apjohnite
+aplacental
+Aplacentalia
+Aplacentaria
+Aplacophora
+aplacophoran
+aplacophorous
+aplanat
+aplanatic
+aplanatically
+aplanatism
+Aplanobacter
+aplanogamete
+aplanospore
+aplasia
+aplastic
+Aplectrum
+aplenty
+aplite
+aplitic
+aplobasalt
+aplodiorite
+Aplodontia
+Aplodontiidae
+aplomb
+aplome
+Aplopappus
+aploperistomatous
+aplostemonous
+aplotaxene
+aplotomy
+Apluda
+aplustre
+Aplysia
+apnea
+apneal
+apneic
+apneumatic
+apneumatosis
+Apneumona
+apneumonous
+apneustic
+apoaconitine
+apoatropine
+apobiotic
+apoblast
+apocaffeine
+apocalypse
+apocalypst
+apocalypt
+apocalyptic
+apocalyptical
+apocalyptically
+apocalypticism
+apocalyptism
+apocalyptist
+apocamphoric
+apocarp
+apocarpous
+apocarpy
+apocatastasis
+apocatastatic
+apocatharsis
+apocenter
+apocentric
+apocentricity
+apocha
+apocholic
+apochromat
+apochromatic
+apochromatism
+apocinchonine
+apocodeine
+apocopate
+apocopated
+apocopation
+apocope
+apocopic
+apocrenic
+apocrisiary
+Apocrita
+apocrustic
+apocryph
+Apocrypha
+apocryphal
+apocryphalist
+apocryphally
+apocryphalness
+apocryphate
+apocryphon
+Apocynaceae
+apocynaceous
+apocyneous
+Apocynum
+apod
+Apoda
+apodal
+apodan
+apodeipnon
+apodeixis
+apodema
+apodemal
+apodematal
+apodeme
+Apodes
+Apodia
+apodia
+apodictic
+apodictical
+apodictically
+apodictive
+Apodidae
+apodixis
+apodosis
+apodous
+apodyterium
+apoembryony
+apofenchene
+apogaeic
+apogalacteum
+apogamic
+apogamically
+apogamous
+apogamously
+apogamy
+apogeal
+apogean
+apogee
+apogeic
+apogenous
+apogeny
+apogeotropic
+apogeotropically
+apogeotropism
+Apogon
+Apogonidae
+apograph
+apographal
+apoharmine
+apohyal
+Apoidea
+apoise
+apojove
+apokrea
+apokreos
+apolar
+apolarity
+apolaustic
+apolegamic
+Apolista
+Apolistan
+Apollinarian
+Apollinarianism
+Apolline
+Apollo
+Apollonia
+Apollonian
+Apollonic
+apollonicon
+Apollonistic
+Apolloship
+Apollyon
+apologal
+apologete
+apologetic
+apologetical
+apologetically
+apologetics
+apologia
+apologist
+apologize
+apologizer
+apologue
+apology
+apolousis
+Apolysin
+apolysis
+apolytikion
+apomecometer
+apomecometry
+apometabolic
+apometabolism
+apometabolous
+apometaboly
+apomictic
+apomictical
+apomixis
+apomorphia
+apomorphine
+aponeurology
+aponeurorrhaphy
+aponeurosis
+aponeurositis
+aponeurotic
+aponeurotome
+aponeurotomy
+aponia
+aponic
+Aponogeton
+Aponogetonaceae
+aponogetonaceous
+apoop
+apopenptic
+apopetalous
+apophantic
+apophasis
+apophatic
+Apophis
+apophlegmatic
+apophonia
+apophony
+apophorometer
+apophthegm
+apophthegmatist
+apophyge
+apophylactic
+apophylaxis
+apophyllite
+apophyllous
+apophysary
+apophysate
+apophyseal
+apophysis
+apophysitis
+apoplasmodial
+apoplastogamous
+apoplectic
+apoplectical
+apoplectically
+apoplectiform
+apoplectoid
+apoplex
+apoplexy
+apopyle
+apoquinamine
+apoquinine
+aporetic
+aporetical
+aporhyolite
+aporia
+Aporobranchia
+aporobranchian
+Aporobranchiata
+Aporocactus
+Aporosa
+aporose
+aporphin
+aporphine
+Aporrhaidae
+Aporrhais
+aporrhaoid
+aporrhegma
+aport
+aportoise
+aposafranine
+aposaturn
+aposaturnium
+aposematic
+aposematically
+aposepalous
+aposia
+aposiopesis
+aposiopetic
+apositia
+apositic
+aposoro
+aposporogony
+aposporous
+apospory
+apostasis
+apostasy
+apostate
+apostatic
+apostatical
+apostatically
+apostatism
+apostatize
+apostaxis
+apostemate
+apostematic
+apostemation
+apostematous
+aposteme
+aposteriori
+aposthia
+apostil
+apostle
+apostlehood
+apostleship
+apostolate
+apostoless
+apostoli
+Apostolian
+Apostolic
+apostolic
+apostolical
+apostolically
+apostolicalness
+Apostolici
+apostolicism
+apostolicity
+apostolize
+Apostolos
+apostrophal
+apostrophation
+apostrophe
+apostrophic
+apostrophied
+apostrophize
+apostrophus
+Apotactic
+Apotactici
+apotelesm
+apotelesmatic
+apotelesmatical
+apothecal
+apothecary
+apothecaryship
+apothece
+apothecial
+apothecium
+apothegm
+apothegmatic
+apothegmatical
+apothegmatically
+apothegmatist
+apothegmatize
+apothem
+apotheose
+apotheoses
+apotheosis
+apotheosize
+apothesine
+apothesis
+apotome
+apotracheal
+apotropaic
+apotropaion
+apotropaism
+apotropous
+apoturmeric
+apotype
+apotypic
+apout
+apoxesis
+Apoxyomenos
+apozem
+apozema
+apozemical
+apozymase
+Appalachia
+Appalachian
+appall
+appalling
+appallingly
+appallment
+appalment
+appanage
+appanagist
+apparatus
+apparel
+apparelment
+apparence
+apparency
+apparent
+apparently
+apparentness
+apparition
+apparitional
+apparitor
+appassionata
+appassionato
+appay
+appeal
+appealability
+appealable
+appealer
+appealing
+appealingly
+appealingness
+appear
+appearance
+appearanced
+appearer
+appeasable
+appeasableness
+appeasably
+appease
+appeasement
+appeaser
+appeasing
+appeasingly
+appeasive
+appellability
+appellable
+appellancy
+appellant
+appellate
+appellation
+appellational
+appellative
+appellatived
+appellatively
+appellativeness
+appellatory
+appellee
+appellor
+append
+appendage
+appendaged
+appendalgia
+appendance
+appendancy
+appendant
+appendectomy
+appendical
+appendicalgia
+appendice
+appendicectasis
+appendicectomy
+appendices
+appendicial
+appendicious
+appendicitis
+appendicle
+appendicocaecostomy
+appendicostomy
+appendicular
+Appendicularia
+appendicularian
+Appendiculariidae
+Appendiculata
+appendiculate
+appendiculated
+appenditious
+appendix
+appendorontgenography
+appendotome
+appentice
+apperceive
+apperception
+apperceptionism
+apperceptionist
+apperceptionistic
+apperceptive
+apperceptively
+appercipient
+appersonation
+appertain
+appertainment
+appertinent
+appet
+appete
+appetence
+appetency
+appetent
+appetently
+appetibility
+appetible
+appetibleness
+appetite
+appetition
+appetitional
+appetitious
+appetitive
+appetize
+appetizement
+appetizer
+appetizingly
+appinite
+Appius
+applanate
+applanation
+applaud
+applaudable
+applaudably
+applauder
+applaudingly
+applause
+applausive
+applausively
+apple
+appleberry
+appleblossom
+applecart
+appledrane
+applegrower
+applejack
+applejohn
+applemonger
+applenut
+appleringy
+appleroot
+applesauce
+applewife
+applewoman
+appliable
+appliableness
+appliably
+appliance
+appliant
+applicability
+applicable
+applicableness
+applicably
+applicancy
+applicant
+applicate
+application
+applicative
+applicatively
+applicator
+applicatorily
+applicatory
+applied
+appliedly
+applier
+applique
+applosion
+applosive
+applot
+applotment
+apply
+applyingly
+applyment
+appoggiatura
+appoint
+appointable
+appointe
+appointee
+appointer
+appointive
+appointment
+appointor
+Appomatox
+Appomattoc
+apport
+apportion
+apportionable
+apportioner
+apportionment
+apposability
+apposable
+appose
+apposer
+apposiopestic
+apposite
+appositely
+appositeness
+apposition
+appositional
+appositionally
+appositive
+appositively
+appraisable
+appraisal
+appraise
+appraisement
+appraiser
+appraising
+appraisingly
+appraisive
+appreciable
+appreciably
+appreciant
+appreciate
+appreciatingly
+appreciation
+appreciational
+appreciativ
+appreciative
+appreciatively
+appreciativeness
+appreciator
+appreciatorily
+appreciatory
+appredicate
+apprehend
+apprehender
+apprehendingly
+apprehensibility
+apprehensible
+apprehensibly
+apprehension
+apprehensive
+apprehensively
+apprehensiveness
+apprend
+apprense
+apprentice
+apprenticehood
+apprenticement
+apprenticeship
+appressed
+appressor
+appressorial
+appressorium
+appreteur
+apprise
+apprize
+apprizement
+apprizer
+approach
+approachability
+approachabl
+approachable
+approachableness
+approacher
+approaching
+approachless
+approachment
+approbate
+approbation
+approbative
+approbativeness
+approbator
+approbatory
+approof
+appropinquate
+appropinquation
+appropinquity
+appropre
+appropriable
+appropriate
+appropriately
+appropriateness
+appropriation
+appropriative
+appropriativeness
+appropriator
+approvable
+approvableness
+approval
+approvance
+approve
+approvedly
+approvedness
+approvement
+approver
+approvingly
+approximal
+approximate
+approximately
+approximation
+approximative
+approximatively
+approximativeness
+approximator
+appulse
+appulsion
+appulsive
+appulsively
+appurtenance
+appurtenant
+apractic
+apraxia
+apraxic
+apricate
+aprication
+aprickle
+apricot
+April
+Aprilesque
+Apriline
+Aprilis
+apriori
+apriorism
+apriorist
+aprioristic
+apriority
+Aprocta
+aproctia
+aproctous
+apron
+aproneer
+apronful
+apronless
+apronlike
+apropos
+aprosexia
+aprosopia
+aprosopous
+aproterodont
+apse
+apselaphesia
+apselaphesis
+apsidal
+apsidally
+apsides
+apsidiole
+apsis
+apsychia
+apsychical
+apt
+Aptal
+Aptenodytes
+Aptera
+apteral
+apteran
+apterial
+apterium
+apteroid
+apterous
+Apteryges
+apterygial
+Apterygidae
+Apterygiformes
+Apterygogenea
+Apterygota
+apterygote
+apterygotous
+Apteryx
+Aptian
+Aptiana
+aptitude
+aptitudinal
+aptitudinally
+aptly
+aptness
+aptote
+aptotic
+aptyalia
+aptyalism
+aptychus
+Apulian
+apulmonic
+apulse
+apurpose
+Apus
+apyonin
+apyrene
+apyretic
+apyrexia
+apyrexial
+apyrexy
+apyrotype
+apyrous
+aqua
+aquabelle
+aquabib
+aquacade
+aquacultural
+aquaculture
+aquaemanale
+aquafortist
+aquage
+aquagreen
+aquamarine
+aquameter
+aquaplane
+aquapuncture
+aquarelle
+aquarellist
+aquaria
+aquarial
+Aquarian
+aquarian
+Aquarid
+Aquarii
+aquariist
+aquarium
+Aquarius
+aquarter
+aquascutum
+aquatic
+aquatical
+aquatically
+aquatile
+aquatint
+aquatinta
+aquatinter
+aquation
+aquativeness
+aquatone
+aquavalent
+aquavit
+aqueduct
+aqueoglacial
+aqueoigneous
+aqueomercurial
+aqueous
+aqueously
+aqueousness
+aquicolous
+aquicultural
+aquiculture
+aquiculturist
+aquifer
+aquiferous
+Aquifoliaceae
+aquifoliaceous
+aquiform
+Aquila
+Aquilaria
+aquilawood
+aquilege
+Aquilegia
+Aquilian
+Aquilid
+aquiline
+aquilino
+aquincubital
+aquincubitalism
+Aquinist
+aquintocubital
+aquintocubitalism
+aquiparous
+Aquitanian
+aquiver
+aquo
+aquocapsulitis
+aquocarbonic
+aquocellolitis
+aquopentamminecobaltic
+aquose
+aquosity
+aquotization
+aquotize
+ar
+ara
+Arab
+araba
+araban
+arabana
+Arabella
+arabesque
+arabesquely
+arabesquerie
+Arabian
+Arabianize
+Arabic
+Arabicism
+Arabicize
+Arabidopsis
+arability
+arabin
+arabinic
+arabinose
+arabinosic
+Arabis
+Arabism
+Arabist
+arabit
+arabitol
+arabiyeh
+Arabize
+arable
+Arabophil
+Araby
+araca
+Aracana
+aracanga
+aracari
+Araceae
+araceous
+arachic
+arachidonic
+arachin
+Arachis
+arachnactis
+Arachne
+arachnean
+arachnid
+Arachnida
+arachnidan
+arachnidial
+arachnidism
+arachnidium
+arachnism
+Arachnites
+arachnitis
+arachnoid
+arachnoidal
+Arachnoidea
+arachnoidea
+arachnoidean
+arachnoiditis
+arachnological
+arachnologist
+arachnology
+Arachnomorphae
+arachnophagous
+arachnopia
+arad
+Aradidae
+arado
+araeostyle
+araeosystyle
+Aragallus
+Aragonese
+Aragonian
+aragonite
+araguato
+arain
+Arains
+Arakanese
+arakawaite
+arake
+Arales
+Aralia
+Araliaceae
+araliaceous
+araliad
+Araliaephyllum
+aralie
+Araliophyllum
+aralkyl
+aralkylated
+Aramaean
+Aramaic
+Aramaicize
+Aramaism
+aramayoite
+Aramidae
+aramina
+Araminta
+Aramis
+Aramitess
+Aramu
+Aramus
+Aranea
+Araneae
+araneid
+Araneida
+araneidan
+araneiform
+Araneiformes
+Araneiformia
+aranein
+Araneina
+Araneoidea
+araneologist
+araneology
+araneous
+aranga
+arango
+Aranyaka
+aranzada
+arapahite
+Arapaho
+arapaima
+araphorostic
+arapunga
+Araquaju
+arar
+Arara
+arara
+araracanga
+ararao
+ararauna
+arariba
+araroba
+arati
+aration
+aratory
+Araua
+Arauan
+Araucan
+Araucanian
+Araucano
+Araucaria
+Araucariaceae
+araucarian
+Araucarioxylon
+Araujia
+Arauna
+Arawa
+Arawak
+Arawakan
+Arawakian
+arba
+Arbacia
+arbacin
+arbalest
+arbalester
+arbalestre
+arbalestrier
+arbalist
+arbalister
+arbalo
+Arbela
+arbiter
+arbitrable
+arbitrager
+arbitragist
+arbitral
+arbitrament
+arbitrarily
+arbitrariness
+arbitrary
+arbitrate
+arbitration
+arbitrational
+arbitrationist
+arbitrative
+arbitrator
+arbitratorship
+arbitratrix
+arbitrement
+arbitrer
+arbitress
+arboloco
+arbor
+arboraceous
+arboral
+arborary
+arborator
+arboreal
+arboreally
+arborean
+arbored
+arboreous
+arborescence
+arborescent
+arborescently
+arboresque
+arboret
+arboreta
+arboretum
+arborical
+arboricole
+arboricoline
+arboricolous
+arboricultural
+arboriculture
+arboriculturist
+arboriform
+arborist
+arborization
+arborize
+arboroid
+arborolatry
+arborous
+arborvitae
+arborway
+arbuscle
+arbuscula
+arbuscular
+arbuscule
+arbusterol
+arbustum
+arbutase
+arbute
+arbutean
+arbutin
+arbutinase
+arbutus
+arc
+arca
+Arcacea
+arcade
+Arcadia
+Arcadian
+arcadian
+Arcadianism
+Arcadianly
+Arcadic
+Arcady
+arcana
+arcanal
+arcane
+arcanite
+arcanum
+arcate
+arcature
+Arcella
+Arceuthobium
+arch
+archabomination
+archae
+archaecraniate
+Archaeoceti
+Archaeocyathidae
+Archaeocyathus
+archaeogeology
+archaeographic
+archaeographical
+archaeography
+archaeolatry
+archaeolith
+archaeolithic
+archaeologer
+archaeologian
+archaeologic
+archaeological
+archaeologically
+archaeologist
+archaeology
+Archaeopithecus
+Archaeopteris
+Archaeopterygiformes
+Archaeopteryx
+Archaeornis
+Archaeornithes
+archaeostoma
+Archaeostomata
+archaeostomatous
+archagitator
+archaic
+archaical
+archaically
+archaicism
+archaism
+archaist
+archaistic
+archaize
+archaizer
+archangel
+archangelic
+Archangelica
+archangelical
+archangelship
+archantagonist
+archantiquary
+archapostate
+archapostle
+archarchitect
+archarios
+archartist
+archband
+archbeacon
+archbeadle
+archbishop
+archbishopess
+archbishopric
+archbishopry
+archbotcher
+archboutefeu
+archbuffoon
+archbuilder
+archchampion
+archchaplain
+archcharlatan
+archcheater
+archchemic
+archchief
+archchronicler
+archcity
+archconfraternity
+archconsoler
+archconspirator
+archcorrupter
+archcorsair
+archcount
+archcozener
+archcriminal
+archcritic
+archcrown
+archcupbearer
+archdapifer
+archdapifership
+archdeacon
+archdeaconate
+archdeaconess
+archdeaconry
+archdeaconship
+archdean
+archdeanery
+archdeceiver
+archdefender
+archdemon
+archdepredator
+archdespot
+archdetective
+archdevil
+archdiocesan
+archdiocese
+archdiplomatist
+archdissembler
+archdisturber
+archdivine
+archdogmatist
+archdolt
+archdruid
+archducal
+archduchess
+archduchy
+archduke
+archdukedom
+arche
+archeal
+Archean
+archearl
+archebiosis
+archecclesiastic
+archecentric
+arched
+archegone
+archegonial
+Archegoniata
+Archegoniatae
+archegoniate
+archegoniophore
+archegonium
+archegony
+Archegosaurus
+archeion
+Archelaus
+Archelenis
+archelogy
+Archelon
+archemperor
+Archencephala
+archencephalic
+archenemy
+archengineer
+archenteric
+archenteron
+archeocyte
+Archeozoic
+Archer
+archer
+archeress
+archerfish
+archership
+archery
+arches
+archespore
+archesporial
+archesporium
+archetypal
+archetypally
+archetype
+archetypic
+archetypical
+archetypically
+archetypist
+archeunuch
+archeus
+archexorcist
+archfelon
+archfiend
+archfire
+archflamen
+archflatterer
+archfoe
+archfool
+archform
+archfounder
+archfriend
+archgenethliac
+archgod
+archgomeral
+archgovernor
+archgunner
+archhead
+archheart
+archheresy
+archheretic
+archhost
+archhouse
+archhumbug
+archhypocrisy
+archhypocrite
+Archiannelida
+archiater
+Archibald
+archibenthal
+archibenthic
+archibenthos
+archiblast
+archiblastic
+archiblastoma
+archiblastula
+Archibuteo
+archicantor
+archicarp
+archicerebrum
+Archichlamydeae
+archichlamydeous
+archicleistogamous
+archicleistogamy
+archicoele
+archicontinent
+archicyte
+archicytula
+Archidamus
+Archidiaceae
+archidiaconal
+archidiaconate
+archididascalian
+archididascalos
+Archidiskodon
+Archidium
+archidome
+Archie
+archiepiscopacy
+archiepiscopal
+archiepiscopally
+archiepiscopate
+archiereus
+archigaster
+archigastrula
+archigenesis
+archigonic
+archigonocyte
+archigony
+archiheretical
+archikaryon
+archil
+archilithic
+Archilochian
+archilowe
+archimage
+Archimago
+archimagus
+archimandrite
+Archimedean
+Archimedes
+archimime
+archimorphic
+archimorula
+archimperial
+archimperialism
+archimperialist
+archimperialistic
+archimpressionist
+Archimycetes
+archineuron
+archinfamy
+archinformer
+arching
+archipallial
+archipallium
+archipelagian
+archipelagic
+archipelago
+archipin
+archiplasm
+archiplasmic
+Archiplata
+archiprelatical
+archipresbyter
+archipterygial
+archipterygium
+archisperm
+Archispermae
+archisphere
+archispore
+archistome
+archisupreme
+archisymbolical
+architect
+architective
+architectonic
+Architectonica
+architectonically
+architectonics
+architectress
+architectural
+architecturalist
+architecturally
+architecture
+architecturesque
+Architeuthis
+architis
+architraval
+architrave
+architraved
+architypographer
+archival
+archive
+archivist
+archivolt
+archizoic
+archjockey
+archking
+archknave
+archleader
+archlecher
+archleveler
+archlexicographer
+archliar
+archlute
+archly
+archmachine
+archmagician
+archmagirist
+archmarshal
+archmediocrity
+archmessenger
+archmilitarist
+archmime
+archminister
+archmock
+archmocker
+archmockery
+archmonarch
+archmonarchist
+archmonarchy
+archmugwump
+archmurderer
+archmystagogue
+archness
+archocele
+archocystosyrinx
+archology
+archon
+archonship
+archont
+archontate
+Archontia
+archontic
+archoplasm
+archoplasmic
+archoptoma
+archoptosis
+archorrhagia
+archorrhea
+archostegnosis
+archostenosis
+archosyrinx
+archoverseer
+archpall
+archpapist
+archpastor
+archpatriarch
+archpatron
+archphilosopher
+archphylarch
+archpiece
+archpilferer
+archpillar
+archpirate
+archplagiarist
+archplagiary
+archplayer
+archplotter
+archplunderer
+archplutocrat
+archpoet
+archpolitician
+archpontiff
+archpractice
+archprelate
+archprelatic
+archprelatical
+archpresbyter
+archpresbyterate
+archpresbytery
+archpretender
+archpriest
+archpriesthood
+archpriestship
+archprimate
+archprince
+archprophet
+archprotopope
+archprototype
+archpublican
+archpuritan
+archradical
+archrascal
+archreactionary
+archrebel
+archregent
+archrepresentative
+archrobber
+archrogue
+archruler
+archsacrificator
+archsacrificer
+archsaint
+archsatrap
+archscoundrel
+archseducer
+archsee
+archsewer
+archshepherd
+archsin
+archsnob
+archspirit
+archspy
+archsteward
+archswindler
+archsynagogue
+archtempter
+archthief
+archtraitor
+archtreasurer
+archtreasurership
+archturncoat
+archtyrant
+archurger
+archvagabond
+archvampire
+archvestryman
+archvillain
+archvillainy
+archvisitor
+archwag
+archway
+archwench
+archwise
+archworker
+archworkmaster
+Archy
+archy
+Arcidae
+Arcifera
+arciferous
+arcifinious
+arciform
+arcing
+Arcite
+arcked
+arcking
+arcocentrous
+arcocentrum
+arcograph
+Arcos
+Arctalia
+Arctalian
+Arctamerican
+arctation
+Arctia
+arctian
+arctic
+arctically
+arctician
+arcticize
+arcticward
+arcticwards
+arctiid
+Arctiidae
+Arctisca
+Arctium
+Arctocephalus
+Arctogaea
+Arctogaeal
+Arctogaean
+arctoid
+Arctoidea
+arctoidean
+Arctomys
+Arctos
+Arctosis
+Arctostaphylos
+Arcturia
+Arcturus
+arcual
+arcuale
+arcuate
+arcuated
+arcuately
+arcuation
+arcubalist
+arcubalister
+arcula
+arculite
+ardassine
+Ardea
+Ardeae
+ardeb
+Ardeidae
+Ardelia
+ardella
+ardency
+ardennite
+ardent
+ardently
+ardentness
+Ardhamagadhi
+Ardhanari
+ardish
+Ardisia
+Ardisiaceae
+ardoise
+ardor
+ardri
+ardu
+arduinite
+arduous
+arduously
+arduousness
+ardurous
+are
+area
+areach
+aread
+areal
+areality
+Arean
+arear
+areasoner
+areaway
+Areca
+Arecaceae
+arecaceous
+arecaidin
+arecaidine
+arecain
+arecaine
+Arecales
+arecolidin
+arecolidine
+arecolin
+arecoline
+Arecuna
+ared
+areek
+areel
+arefact
+arefaction
+aregenerative
+aregeneratory
+areito
+arena
+arenaceous
+arenae
+Arenaria
+arenariae
+arenarious
+arenation
+arend
+arendalite
+areng
+Arenga
+Arenicola
+arenicole
+arenicolite
+arenicolous
+Arenig
+arenilitic
+arenoid
+arenose
+arenosity
+arent
+areocentric
+areographer
+areographic
+areographical
+areographically
+areography
+areola
+areolar
+areolate
+areolated
+areolation
+areole
+areolet
+areologic
+areological
+areologically
+areologist
+areology
+areometer
+areometric
+areometrical
+areometry
+Areopagist
+Areopagite
+Areopagitic
+Areopagitica
+Areopagus
+areotectonics
+areroscope
+aretaics
+arete
+Arethusa
+Arethuse
+Aretinian
+arfvedsonite
+argal
+argala
+argali
+argans
+Argante
+Argas
+argasid
+Argasidae
+Argean
+argeers
+argel
+Argemone
+argemony
+argenol
+argent
+argental
+argentamid
+argentamide
+argentamin
+argentamine
+argentate
+argentation
+argenteous
+argenter
+argenteum
+argentic
+argenticyanide
+argentide
+argentiferous
+Argentina
+Argentine
+argentine
+Argentinean
+Argentinian
+Argentinidae
+argentinitrate
+Argentinize
+Argentino
+argention
+argentite
+argentojarosite
+argentol
+argentometric
+argentometrically
+argentometry
+argenton
+argentoproteinum
+argentose
+argentous
+argentum
+Argestes
+arghan
+arghel
+arghool
+Argid
+argil
+argillaceous
+argilliferous
+argillite
+argillitic
+argilloarenaceous
+argillocalcareous
+argillocalcite
+argilloferruginous
+argilloid
+argillomagnesian
+argillous
+arginine
+argininephosphoric
+Argiope
+Argiopidae
+Argiopoidea
+Argive
+Argo
+argo
+Argoan
+argol
+argolet
+Argolian
+Argolic
+Argolid
+argon
+Argonaut
+Argonauta
+Argonautic
+Argonne
+argosy
+argot
+argotic
+Argovian
+arguable
+argue
+arguer
+argufier
+argufy
+Argulus
+argument
+argumental
+argumentation
+argumentatious
+argumentative
+argumentatively
+argumentativeness
+argumentator
+argumentatory
+Argus
+argusfish
+Argusianus
+Arguslike
+argute
+argutely
+arguteness
+Argyle
+Argyll
+Argynnis
+argyranthemous
+argyranthous
+Argyraspides
+argyria
+argyric
+argyrite
+argyrocephalous
+argyrodite
+Argyrol
+Argyroneta
+Argyropelecus
+argyrose
+argyrosis
+Argyrosomus
+argyrythrose
+arhar
+arhat
+arhatship
+Arhauaco
+arhythmic
+aria
+Ariadne
+Arian
+Ariana
+Arianism
+Arianistic
+Arianistical
+Arianize
+Arianizer
+Arianrhod
+aribine
+Arician
+aricine
+arid
+Arided
+aridge
+aridian
+aridity
+aridly
+aridness
+ariegite
+Ariel
+ariel
+arienzo
+Aries
+arietation
+Arietid
+arietinous
+arietta
+aright
+arightly
+arigue
+Ariidae
+Arikara
+aril
+ariled
+arillary
+arillate
+arillated
+arilliform
+arillode
+arillodium
+arilloid
+arillus
+Arimasp
+Arimaspian
+Arimathaean
+Ariocarpus
+Arioi
+Arioian
+Arion
+ariose
+arioso
+ariot
+aripple
+Arisaema
+arisard
+arise
+arisen
+arist
+arista
+Aristarch
+Aristarchian
+aristarchy
+aristate
+Aristeas
+Aristida
+Aristides
+Aristippus
+aristocracy
+aristocrat
+aristocratic
+aristocratical
+aristocratically
+aristocraticalness
+aristocraticism
+aristocraticness
+aristocratism
+aristodemocracy
+aristodemocratical
+aristogenesis
+aristogenetic
+aristogenic
+aristogenics
+Aristol
+Aristolochia
+Aristolochiaceae
+aristolochiaceous
+Aristolochiales
+aristolochin
+aristolochine
+aristological
+aristologist
+aristology
+aristomonarchy
+Aristophanic
+aristorepublicanism
+Aristotelian
+Aristotelianism
+Aristotelic
+Aristotelism
+aristotype
+aristulate
+arite
+arithmetic
+arithmetical
+arithmetically
+arithmetician
+arithmetization
+arithmetize
+arithmic
+arithmocracy
+arithmocratic
+arithmogram
+arithmograph
+arithmography
+arithmomania
+arithmometer
+Arius
+Arivaipa
+Arizona
+Arizonan
+Arizonian
+arizonite
+arjun
+ark
+Arkab
+Arkansan
+Arkansas
+Arkansawyer
+arkansite
+Arkite
+arkite
+arkose
+arkosic
+arksutite
+Arlene
+Arleng
+arles
+Arline
+arm
+armada
+armadilla
+Armadillididae
+Armadillidium
+armadillo
+Armado
+Armageddon
+Armageddonist
+armagnac
+armament
+armamentarium
+armamentary
+armangite
+armariolum
+armarium
+Armata
+Armatoles
+Armatoli
+armature
+armbone
+armchair
+armchaired
+armed
+armeniaceous
+Armenian
+Armenic
+Armenize
+Armenoid
+armer
+Armeria
+Armeriaceae
+armet
+armful
+armgaunt
+armhole
+armhoop
+Armida
+armied
+armiferous
+armiger
+armigeral
+armigerous
+armil
+armilla
+Armillaria
+armillary
+armillate
+armillated
+arming
+Arminian
+Arminianism
+Arminianize
+Arminianizer
+armipotence
+armipotent
+armisonant
+armisonous
+armistice
+armless
+armlet
+armload
+armoire
+armonica
+armor
+Armoracia
+armored
+armorer
+armorial
+Armoric
+Armorican
+Armorician
+armoried
+armorist
+armorproof
+armorwise
+armory
+Armouchiquois
+armozeen
+armpiece
+armpit
+armplate
+armrack
+armrest
+arms
+armscye
+armure
+army
+arn
+arna
+Arnaut
+arnberry
+Arne
+Arneb
+Arnebia
+arnee
+arni
+arnica
+Arnold
+Arnoldist
+Arnoseris
+arnotta
+arnotto
+Arnusian
+arnut
+Aro
+aroar
+aroast
+arock
+aroeira
+aroid
+aroideous
+Aroides
+aroint
+arolium
+arolla
+aroma
+aromacity
+aromadendrin
+aromatic
+aromatically
+aromaticness
+aromatite
+aromatites
+aromatization
+aromatize
+aromatizer
+aromatophor
+aromatophore
+Aronia
+aroon
+Aroras
+Arosaguntacook
+arose
+around
+arousal
+arouse
+arousement
+arouser
+arow
+aroxyl
+arpeggiando
+arpeggiated
+arpeggiation
+arpeggio
+arpeggioed
+arpen
+arpent
+arquerite
+arquifoux
+arracach
+arracacha
+Arracacia
+arrack
+arrah
+arraign
+arraigner
+arraignment
+arrame
+arrange
+arrangeable
+arrangement
+arranger
+arrant
+arrantly
+Arras
+arras
+arrased
+arrasene
+arrastra
+arrastre
+arratel
+arrau
+array
+arrayal
+arrayer
+arrayment
+arrear
+arrearage
+arrect
+arrector
+arrendation
+arrenotokous
+arrenotoky
+arrent
+arrentable
+arrentation
+arreptitious
+arrest
+arrestable
+arrestation
+arrestee
+arrester
+arresting
+arrestingly
+arrestive
+arrestment
+arrestor
+Arretine
+arrhenal
+Arrhenatherum
+arrhenoid
+arrhenotokous
+arrhenotoky
+arrhinia
+arrhizal
+arrhizous
+arrhythmia
+arrhythmic
+arrhythmical
+arrhythmically
+arrhythmous
+arrhythmy
+arriage
+arriba
+arride
+arridge
+arrie
+arriere
+Arriet
+arrimby
+arris
+arrish
+arrisways
+arriswise
+arrival
+arrive
+arriver
+arroba
+arrogance
+arrogancy
+arrogant
+arrogantly
+arrogantness
+arrogate
+arrogatingly
+arrogation
+arrogative
+arrogator
+arrojadite
+arrope
+arrosive
+arrow
+arrowbush
+arrowed
+arrowhead
+arrowheaded
+arrowleaf
+arrowless
+arrowlet
+arrowlike
+arrowplate
+arrowroot
+arrowsmith
+arrowstone
+arrowweed
+arrowwood
+arrowworm
+arrowy
+arroyo
+Arruague
+Arry
+Arryish
+Arsacid
+Arsacidan
+arsanilic
+arse
+arsedine
+arsenal
+arsenate
+arsenation
+arseneted
+arsenetted
+arsenfast
+arsenferratose
+arsenhemol
+arseniasis
+arseniate
+arsenic
+arsenical
+arsenicalism
+arsenicate
+arsenicism
+arsenicize
+arsenicophagy
+arsenide
+arseniferous
+arsenillo
+arseniopleite
+arseniosiderite
+arsenious
+arsenism
+arsenite
+arsenium
+arseniuret
+arseniureted
+arsenization
+arseno
+arsenobenzene
+arsenobenzol
+arsenobismite
+arsenoferratin
+arsenofuran
+arsenohemol
+arsenolite
+arsenophagy
+arsenophen
+arsenophenol
+arsenophenylglycin
+arsenopyrite
+arsenostyracol
+arsenotherapy
+arsenotungstates
+arsenotungstic
+arsenous
+arsenoxide
+arsenyl
+arses
+arsesmart
+arsheen
+arshin
+arshine
+arsine
+arsinic
+arsino
+Arsinoitherium
+arsis
+arsle
+arsmetrik
+arsmetrike
+arsnicker
+arsoite
+arson
+arsonate
+arsonation
+arsonic
+arsonist
+arsonite
+arsonium
+arsono
+arsonvalization
+arsphenamine
+arsyl
+arsylene
+Art
+art
+artaba
+artabe
+artal
+Artamidae
+Artamus
+artar
+artarine
+artcraft
+artefact
+artel
+Artemas
+Artemia
+Artemis
+Artemisia
+artemisic
+artemisin
+Artemision
+Artemisium
+arteriagra
+arterial
+arterialization
+arterialize
+arterially
+arteriarctia
+arteriasis
+arteriectasia
+arteriectasis
+arteriectopia
+arterin
+arterioarctia
+arteriocapillary
+arteriococcygeal
+arteriodialysis
+arteriodiastasis
+arteriofibrosis
+arteriogenesis
+arteriogram
+arteriograph
+arteriography
+arteriole
+arteriolith
+arteriology
+arteriolosclerosis
+arteriomalacia
+arteriometer
+arteriomotor
+arterionecrosis
+arteriopalmus
+arteriopathy
+arteriophlebotomy
+arterioplania
+arterioplasty
+arteriopressor
+arteriorenal
+arteriorrhagia
+arteriorrhaphy
+arteriorrhexis
+arteriosclerosis
+arteriosclerotic
+arteriospasm
+arteriostenosis
+arteriostosis
+arteriostrepsis
+arteriosympathectomy
+arteriotome
+arteriotomy
+arteriotrepsis
+arterious
+arteriovenous
+arterioversion
+arterioverter
+arteritis
+artery
+Artesian
+artesian
+artful
+artfully
+artfulness
+Artgum
+artha
+arthel
+arthemis
+arthragra
+arthral
+arthralgia
+arthralgic
+arthrectomy
+arthredema
+arthrempyesis
+arthresthesia
+arthritic
+arthritical
+arthriticine
+arthritis
+arthritism
+arthrobacterium
+arthrobranch
+arthrobranchia
+arthrocace
+arthrocarcinoma
+arthrocele
+arthrochondritis
+arthroclasia
+arthrocleisis
+arthroclisis
+arthroderm
+arthrodesis
+arthrodia
+arthrodial
+arthrodic
+Arthrodira
+arthrodiran
+arthrodire
+arthrodirous
+Arthrodonteae
+arthrodynia
+arthrodynic
+arthroempyema
+arthroempyesis
+arthroendoscopy
+Arthrogastra
+arthrogastran
+arthrogenous
+arthrography
+arthrogryposis
+arthrolite
+arthrolith
+arthrolithiasis
+arthrology
+arthromeningitis
+arthromere
+arthromeric
+arthrometer
+arthrometry
+arthroncus
+arthroneuralgia
+arthropathic
+arthropathology
+arthropathy
+arthrophlogosis
+arthrophyma
+arthroplastic
+arthroplasty
+arthropleura
+arthropleure
+arthropod
+Arthropoda
+arthropodal
+arthropodan
+arthropodous
+Arthropomata
+arthropomatous
+arthropterous
+arthropyosis
+arthrorheumatism
+arthrorrhagia
+arthrosclerosis
+arthrosia
+arthrosis
+arthrospore
+arthrosporic
+arthrosporous
+arthrosteitis
+arthrosterigma
+arthrostome
+arthrostomy
+Arthrostraca
+arthrosynovitis
+arthrosyrinx
+arthrotome
+arthrotomy
+arthrotrauma
+arthrotropic
+arthrotyphoid
+arthrous
+arthroxerosis
+Arthrozoa
+arthrozoan
+arthrozoic
+Arthur
+Arthurian
+Arthuriana
+artiad
+artichoke
+article
+articled
+articulability
+articulable
+articulacy
+articulant
+articular
+articulare
+articularly
+articulary
+Articulata
+articulate
+articulated
+articulately
+articulateness
+articulation
+articulationist
+articulative
+articulator
+articulatory
+articulite
+articulus
+Artie
+artifact
+artifactitious
+artifice
+artificer
+artificership
+artificial
+artificialism
+artificiality
+artificialize
+artificially
+artificialness
+artiller
+artillerist
+artillery
+artilleryman
+artilleryship
+artiness
+artinite
+Artinskian
+artiodactyl
+Artiodactyla
+artiodactylous
+artiphyllous
+artisan
+artisanship
+artist
+artistdom
+artiste
+artistic
+artistical
+artistically
+artistry
+artless
+artlessly
+artlessness
+artlet
+artlike
+Artocarpaceae
+artocarpad
+artocarpeous
+artocarpous
+Artocarpus
+artolater
+artophagous
+artophorion
+artotype
+artotypy
+Artotyrite
+artware
+arty
+aru
+Aruac
+arui
+aruke
+Arulo
+Arum
+arumin
+Aruncus
+arundiferous
+arundinaceous
+Arundinaria
+arundineous
+Arundo
+Arunta
+arupa
+arusa
+arusha
+arustle
+arval
+arvel
+Arverni
+Arvicola
+arvicole
+Arvicolinae
+arvicoline
+arvicolous
+arviculture
+arx
+ary
+Arya
+Aryan
+Aryanism
+Aryanization
+Aryanize
+aryballoid
+aryballus
+aryepiglottic
+aryl
+arylamine
+arylamino
+arylate
+arytenoid
+arytenoidal
+arzan
+Arzava
+Arzawa
+arzrunite
+arzun
+As
+as
+Asa
+asaddle
+asafetida
+Asahel
+asak
+asale
+asana
+Asaph
+asaphia
+Asaphic
+asaphid
+Asaphidae
+Asaphus
+asaprol
+asarabacca
+Asaraceae
+Asarh
+asarite
+asaron
+asarone
+asarotum
+Asarum
+asbest
+asbestic
+asbestiform
+asbestine
+asbestinize
+asbestoid
+asbestoidal
+asbestos
+asbestosis
+asbestous
+asbestus
+asbolin
+asbolite
+Ascabart
+Ascalabota
+ascan
+Ascanian
+Ascanius
+ascare
+ascariasis
+ascaricidal
+ascaricide
+ascarid
+Ascaridae
+ascarides
+Ascaridia
+ascaridiasis
+ascaridole
+Ascaris
+ascaron
+Ascella
+ascellus
+ascend
+ascendable
+ascendance
+ascendancy
+ascendant
+ascendence
+ascendency
+ascendent
+ascender
+ascendible
+ascending
+ascendingly
+ascension
+ascensional
+ascensionist
+Ascensiontide
+ascensive
+ascent
+ascertain
+ascertainable
+ascertainableness
+ascertainably
+ascertainer
+ascertainment
+ascescency
+ascescent
+ascetic
+ascetical
+ascetically
+asceticism
+Ascetta
+aschaffite
+ascham
+aschistic
+asci
+ascian
+Ascidia
+Ascidiacea
+Ascidiae
+ascidian
+ascidiate
+ascidicolous
+ascidiferous
+ascidiform
+ascidioid
+Ascidioida
+Ascidioidea
+Ascidiozoa
+ascidiozooid
+ascidium
+asciferous
+ascigerous
+ascii
+ascites
+ascitic
+ascitical
+ascititious
+asclent
+Asclepiad
+asclepiad
+Asclepiadaceae
+asclepiadaceous
+Asclepiadae
+Asclepiadean
+asclepiadeous
+Asclepiadic
+Asclepian
+Asclepias
+asclepidin
+asclepidoid
+Asclepieion
+asclepin
+Asclepius
+ascocarp
+ascocarpous
+Ascochyta
+ascogenous
+ascogone
+ascogonial
+ascogonidium
+ascogonium
+ascolichen
+Ascolichenes
+ascoma
+ascomycetal
+ascomycete
+Ascomycetes
+ascomycetous
+ascon
+Ascones
+ascophore
+ascophorous
+Ascophyllum
+ascorbic
+ascospore
+ascosporic
+ascosporous
+Ascot
+ascot
+Ascothoracica
+ascribable
+ascribe
+ascript
+ascription
+ascriptitii
+ascriptitious
+ascriptitius
+ascry
+ascula
+Ascupart
+ascus
+ascyphous
+Ascyrum
+asdic
+ase
+asearch
+asecretory
+aseethe
+aseismatic
+aseismic
+aseismicity
+aseity
+aselgeia
+asellate
+Aselli
+Asellidae
+Aselline
+Asellus
+asem
+asemasia
+asemia
+asepsis
+aseptate
+aseptic
+aseptically
+asepticism
+asepticize
+aseptify
+aseptol
+aseptolin
+asexual
+asexuality
+asexualization
+asexualize
+asexually
+asfetida
+ash
+Asha
+ashake
+ashame
+ashamed
+ashamedly
+ashamedness
+ashamnu
+Ashangos
+Ashantee
+Ashanti
+Asharasi
+ashberry
+ashcake
+ashen
+Asher
+asherah
+Asherites
+ashery
+ashes
+ashet
+ashily
+ashimmer
+ashine
+ashiness
+ashipboard
+Ashir
+ashiver
+Ashkenazic
+Ashkenazim
+ashkoko
+ashlar
+ashlared
+ashlaring
+ashless
+ashling
+Ashluslay
+ashman
+Ashmolean
+Ashochimi
+ashore
+ashpan
+ashpit
+ashplant
+ashraf
+ashrafi
+ashthroat
+Ashur
+ashur
+ashweed
+ashwort
+ashy
+asialia
+Asian
+Asianic
+Asianism
+Asiarch
+Asiarchate
+Asiatic
+Asiatical
+Asiatically
+Asiatican
+Asiaticism
+Asiaticization
+Asiaticize
+Asiatize
+aside
+asidehand
+asideness
+asiderite
+asideu
+asiento
+asilid
+Asilidae
+Asilus
+asimen
+Asimina
+asimmer
+asinego
+asinine
+asininely
+asininity
+asiphonate
+asiphonogama
+asitia
+ask
+askable
+askance
+askant
+askar
+askari
+asker
+askew
+askingly
+askip
+asklent
+Asklepios
+askos
+Askr
+aslant
+aslantwise
+aslaver
+asleep
+aslop
+aslope
+aslumber
+asmack
+asmalte
+asmear
+asmile
+asmoke
+asmolder
+asniffle
+asnort
+asoak
+asocial
+asok
+asoka
+asomatophyte
+asomatous
+asonant
+asonia
+asop
+asor
+asouth
+asp
+aspace
+aspalathus
+Aspalax
+asparagic
+asparagine
+asparaginic
+asparaginous
+asparagus
+asparagyl
+asparkle
+aspartate
+aspartic
+aspartyl
+Aspasia
+Aspatia
+aspect
+aspectable
+aspectant
+aspection
+aspectual
+aspen
+asper
+asperate
+asperation
+aspergation
+asperge
+asperger
+Asperges
+aspergil
+aspergill
+Aspergillaceae
+Aspergillales
+aspergilliform
+aspergillin
+aspergillosis
+aspergillum
+aspergillus
+Asperifoliae
+asperifoliate
+asperifolious
+asperite
+asperity
+aspermatic
+aspermatism
+aspermatous
+aspermia
+aspermic
+aspermous
+asperous
+asperously
+asperse
+aspersed
+asperser
+aspersion
+aspersive
+aspersively
+aspersor
+aspersorium
+aspersory
+Asperugo
+Asperula
+asperuloside
+asperulous
+asphalt
+asphaltene
+asphalter
+asphaltic
+asphaltite
+asphaltum
+aspheterism
+aspheterize
+asphodel
+Asphodelaceae
+Asphodeline
+Asphodelus
+asphyctic
+asphyctous
+asphyxia
+asphyxial
+asphyxiant
+asphyxiate
+asphyxiation
+asphyxiative
+asphyxiator
+asphyxied
+asphyxy
+aspic
+aspiculate
+aspiculous
+aspidate
+aspidiaria
+aspidinol
+Aspidiotus
+Aspidiske
+Aspidistra
+aspidium
+Aspidobranchia
+Aspidobranchiata
+aspidobranchiate
+Aspidocephali
+Aspidochirota
+Aspidoganoidei
+aspidomancy
+Aspidosperma
+aspidospermine
+aspirant
+aspirata
+aspirate
+aspiration
+aspirator
+aspiratory
+aspire
+aspirer
+aspirin
+aspiring
+aspiringly
+aspiringness
+aspish
+asplanchnic
+Asplenieae
+asplenioid
+Asplenium
+asporogenic
+asporogenous
+asporous
+asport
+asportation
+asporulate
+aspout
+asprawl
+aspread
+Aspredinidae
+Aspredo
+aspring
+asprout
+asquare
+asquat
+asqueal
+asquint
+asquirm
+ass
+assacu
+assagai
+assai
+assail
+assailable
+assailableness
+assailant
+assailer
+assailment
+Assam
+Assamese
+Assamites
+assapan
+assapanic
+assarion
+assart
+assary
+assassin
+assassinate
+assassination
+assassinative
+assassinator
+assassinatress
+assassinist
+assate
+assation
+assault
+assaultable
+assaulter
+assaut
+assay
+assayable
+assayer
+assaying
+assbaa
+asse
+assecuration
+assecurator
+assedation
+assegai
+asself
+assemblable
+assemblage
+assemble
+assembler
+assembly
+assemblyman
+assent
+assentaneous
+assentation
+assentatious
+assentator
+assentatorily
+assentatory
+assented
+assenter
+assentient
+assenting
+assentingly
+assentive
+assentiveness
+assentor
+assert
+assertable
+assertative
+asserter
+assertible
+assertion
+assertional
+assertive
+assertively
+assertiveness
+assertor
+assertorial
+assertorially
+assertoric
+assertorical
+assertorically
+assertorily
+assertory
+assertress
+assertrix
+assertum
+assess
+assessable
+assessably
+assessed
+assessee
+assession
+assessionary
+assessment
+assessor
+assessorial
+assessorship
+assessory
+asset
+assets
+assever
+asseverate
+asseveratingly
+asseveration
+asseverative
+asseveratively
+asseveratory
+asshead
+assi
+assibilate
+assibilation
+Assidean
+assident
+assidual
+assidually
+assiduity
+assiduous
+assiduously
+assiduousness
+assientist
+assiento
+assify
+assign
+assignability
+assignable
+assignably
+assignat
+assignation
+assigned
+assignee
+assigneeship
+assigner
+assignment
+assignor
+assilag
+assimilability
+assimilable
+assimilate
+assimilation
+assimilationist
+assimilative
+assimilativeness
+assimilator
+assimilatory
+Assiniboin
+assis
+Assisan
+assise
+assish
+assishly
+assishness
+assist
+assistance
+assistant
+assistanted
+assistantship
+assistency
+assister
+assistful
+assistive
+assistless
+assistor
+assize
+assizement
+assizer
+assizes
+asslike
+assman
+Assmannshauser
+assmanship
+associability
+associable
+associableness
+associate
+associated
+associatedness
+associateship
+association
+associational
+associationalism
+associationalist
+associationism
+associationist
+associationistic
+associative
+associatively
+associativeness
+associator
+associatory
+assoil
+assoilment
+assoilzie
+assonance
+assonanced
+assonant
+assonantal
+assonantic
+assonate
+Assonia
+assort
+assortative
+assorted
+assortedness
+assorter
+assortive
+assortment
+assuade
+assuage
+assuagement
+assuager
+assuasive
+assubjugate
+assuetude
+assumable
+assumably
+assume
+assumed
+assumedly
+assumer
+assuming
+assumingly
+assumingness
+assumpsit
+assumption
+Assumptionist
+assumptious
+assumptiousness
+assumptive
+assumptively
+assurable
+assurance
+assurant
+assure
+assured
+assuredly
+assuredness
+assurer
+assurge
+assurgency
+assurgent
+assuring
+assuringly
+assyntite
+Assyrian
+Assyrianize
+Assyriological
+Assyriologist
+Assyriologue
+Assyriology
+Assyroid
+assythment
+ast
+asta
+Astacidae
+Astacus
+Astakiwi
+astalk
+astarboard
+astare
+astart
+Astarte
+Astartian
+Astartidae
+astasia
+astatic
+astatically
+astaticism
+astatine
+astatize
+astatizer
+astay
+asteam
+asteatosis
+asteep
+asteer
+asteism
+astelic
+astely
+aster
+Asteraceae
+asteraceous
+Asterales
+Asterella
+astereognosis
+asteria
+asterial
+Asterias
+asteriated
+Asteriidae
+asterikos
+asterin
+Asterina
+Asterinidae
+asterioid
+Asterion
+asterion
+Asterionella
+asterisk
+asterism
+asterismal
+astern
+asternal
+Asternata
+asternia
+Asterochiton
+asteroid
+asteroidal
+Asteroidea
+asteroidean
+Asterolepidae
+Asterolepis
+Asterope
+asterophyllite
+Asterophyllites
+Asterospondyli
+asterospondylic
+asterospondylous
+Asteroxylaceae
+Asteroxylon
+Asterozoa
+asterwort
+asthenia
+asthenic
+asthenical
+asthenobiosis
+asthenobiotic
+asthenolith
+asthenology
+asthenopia
+asthenopic
+asthenosphere
+astheny
+asthma
+asthmatic
+asthmatical
+asthmatically
+asthmatoid
+asthmogenic
+asthore
+asthorin
+Astian
+astichous
+astigmatic
+astigmatical
+astigmatically
+astigmatism
+astigmatizer
+astigmatometer
+astigmatoscope
+astigmatoscopy
+astigmia
+astigmism
+astigmometer
+astigmometry
+Astilbe
+astilbe
+astint
+astipulate
+astir
+astite
+astomatal
+astomatous
+astomia
+astomous
+astonied
+astonish
+astonishedly
+astonisher
+astonishing
+astonishingly
+astonishingness
+astonishment
+astony
+astoop
+astor
+astound
+astoundable
+astounding
+astoundingly
+astoundment
+Astrachan
+astraddle
+Astraea
+Astraean
+astraean
+astraeid
+Astraeidae
+astraeiform
+astragal
+astragalar
+astragalectomy
+astragali
+astragalocalcaneal
+astragalocentral
+astragalomancy
+astragalonavicular
+astragaloscaphoid
+astragalotibial
+Astragalus
+astragalus
+astrain
+astrakanite
+astrakhan
+astral
+astrally
+astrand
+Astrantia
+astraphobia
+astrapophobia
+astray
+astream
+astrer
+astrict
+astriction
+astrictive
+astrictively
+astrictiveness
+Astrid
+astride
+astrier
+astriferous
+astrild
+astringe
+astringency
+astringent
+astringently
+astringer
+astroalchemist
+astroblast
+Astrocaryum
+astrochemist
+astrochemistry
+astrochronological
+astrocyte
+astrocytoma
+astrocytomata
+astrodiagnosis
+astrodome
+astrofel
+astrogeny
+astroglia
+astrognosy
+astrogonic
+astrogony
+astrograph
+astrographic
+astrography
+astroid
+astroite
+astrolabe
+astrolabical
+astrolater
+astrolatry
+astrolithology
+astrologaster
+astrologer
+astrologian
+astrologic
+astrological
+astrologically
+astrologistic
+astrologize
+astrologous
+astrology
+astromancer
+astromancy
+astromantic
+astrometeorological
+astrometeorologist
+astrometeorology
+astrometer
+astrometrical
+astrometry
+astronaut
+astronautics
+astronomer
+astronomic
+astronomical
+astronomically
+astronomics
+astronomize
+astronomy
+Astropecten
+Astropectinidae
+astrophil
+astrophobia
+astrophotographic
+astrophotography
+astrophotometer
+astrophotometrical
+astrophotometry
+astrophyllite
+astrophysical
+astrophysicist
+astrophysics
+Astrophyton
+astroscope
+Astroscopus
+astroscopy
+astrospectral
+astrospectroscopic
+astrosphere
+astrotheology
+astrut
+astucious
+astuciously
+astucity
+Astur
+Asturian
+astute
+astutely
+astuteness
+astylar
+Astylospongia
+Astylosternus
+asudden
+asunder
+Asuri
+aswail
+aswarm
+asway
+asweat
+aswell
+aswim
+aswing
+aswirl
+aswoon
+aswooned
+asyla
+asyllabia
+asyllabic
+asyllabical
+asylum
+asymbiotic
+asymbolia
+asymbolic
+asymbolical
+asymmetric
+asymmetrical
+asymmetrically
+Asymmetron
+asymmetry
+asymptomatic
+asymptote
+asymptotic
+asymptotical
+asymptotically
+asynapsis
+asynaptic
+asynartete
+asynartetic
+asynchronism
+asynchronous
+asyndesis
+asyndetic
+asyndetically
+asyndeton
+asynergia
+asynergy
+asyngamic
+asyngamy
+asyntactic
+asyntrophy
+asystole
+asystolic
+asystolism
+asyzygetic
+at
+Ata
+atabal
+atabeg
+atabek
+Atabrine
+Atacaman
+Atacamenan
+Atacamenian
+Atacameno
+atacamite
+atactic
+atactiform
+Ataentsic
+atafter
+Ataigal
+Ataiyal
+Atalan
+ataman
+atamasco
+Atamosco
+atangle
+atap
+ataraxia
+ataraxy
+atatschite
+ataunt
+atavi
+atavic
+atavism
+atavist
+atavistic
+atavistically
+atavus
+ataxaphasia
+ataxia
+ataxiagram
+ataxiagraph
+ataxiameter
+ataxiaphasia
+ataxic
+ataxinomic
+ataxite
+ataxonomic
+ataxophemia
+ataxy
+atazir
+atbash
+atchison
+ate
+Ateba
+atebrin
+atechnic
+atechnical
+atechny
+ateeter
+atef
+atelectasis
+atelectatic
+ateleological
+Ateles
+atelestite
+atelets
+atelier
+ateliosis
+Atellan
+atelo
+atelocardia
+atelocephalous
+ateloglossia
+atelognathia
+atelomitic
+atelomyelia
+atelopodia
+ateloprosopia
+atelorachidia
+atelostomia
+atemporal
+Aten
+Atenism
+Atenist
+Aterian
+ates
+Atestine
+ateuchi
+ateuchus
+Atfalati
+Athabasca
+Athabascan
+athalamous
+athalline
+Athamantid
+athanasia
+Athanasian
+Athanasianism
+Athanasianist
+athanasy
+athanor
+Athapascan
+athar
+Atharvan
+Athecae
+Athecata
+athecate
+atheism
+atheist
+atheistic
+atheistical
+atheistically
+atheisticalness
+atheize
+atheizer
+athelia
+atheling
+athematic
+Athenaea
+athenaeum
+athenee
+Athenian
+Athenianly
+athenor
+Athens
+atheological
+atheologically
+atheology
+atheous
+Athericera
+athericeran
+athericerous
+atherine
+Atherinidae
+Atheriogaea
+Atheriogaean
+Atheris
+athermancy
+athermanous
+athermic
+athermous
+atheroma
+atheromasia
+atheromata
+atheromatosis
+atheromatous
+atherosclerosis
+Atherosperma
+Atherurus
+athetesis
+athetize
+athetoid
+athetosic
+athetosis
+athing
+athirst
+athlete
+athletehood
+athletic
+athletical
+athletically
+athleticism
+athletics
+athletism
+athletocracy
+athlothete
+athlothetes
+athodyd
+athort
+athrepsia
+athreptic
+athrill
+athrive
+athrob
+athrocyte
+athrocytosis
+athrogenic
+athrong
+athrough
+athwart
+athwarthawse
+athwartship
+athwartships
+athwartwise
+athymia
+athymic
+athymy
+athyreosis
+athyria
+athyrid
+Athyridae
+Athyris
+Athyrium
+athyroid
+athyroidism
+athyrosis
+Ati
+Atik
+Atikokania
+atilt
+atimon
+atinga
+atingle
+atinkle
+atip
+atis
+Atka
+Atlanta
+atlantad
+atlantal
+Atlantean
+atlantes
+Atlantic
+atlantic
+Atlantica
+Atlantid
+Atlantides
+atlantite
+atlantoaxial
+atlantodidymus
+atlantomastoid
+atlantoodontoid
+Atlantosaurus
+Atlas
+atlas
+Atlaslike
+atlatl
+atle
+atlee
+atloaxoid
+atloid
+atloidean
+atloidoaxoid
+atma
+atman
+atmiatrics
+atmiatry
+atmid
+atmidalbumin
+atmidometer
+atmidometry
+atmo
+atmocausis
+atmocautery
+atmoclastic
+atmogenic
+atmograph
+atmologic
+atmological
+atmologist
+atmology
+atmolysis
+atmolyzation
+atmolyze
+atmolyzer
+atmometer
+atmometric
+atmometry
+atmos
+atmosphere
+atmosphereful
+atmosphereless
+atmospheric
+atmospherical
+atmospherically
+atmospherics
+atmospherology
+atmostea
+atmosteal
+atmosteon
+Atnah
+atocha
+atocia
+atokal
+atoke
+atokous
+atoll
+atom
+atomatic
+atomechanics
+atomerg
+atomic
+atomical
+atomically
+atomician
+atomicism
+atomicity
+atomics
+atomiferous
+atomism
+atomist
+atomistic
+atomistical
+atomistically
+atomistics
+atomity
+atomization
+atomize
+atomizer
+atomology
+atomy
+atonable
+atonal
+atonalism
+atonalistic
+atonality
+atonally
+atone
+atonement
+atoneness
+atoner
+atonia
+atonic
+atonicity
+atoningly
+atony
+atop
+Atophan
+atophan
+atopic
+atopite
+atopy
+Atorai
+Atossa
+atour
+atoxic
+Atoxyl
+atoxyl
+atrabilarian
+atrabilarious
+atrabiliar
+atrabiliarious
+atrabiliary
+atrabilious
+atrabiliousness
+atracheate
+Atractaspis
+Atragene
+atragene
+atrail
+atrament
+atramental
+atramentary
+atramentous
+atraumatic
+Atrebates
+Atremata
+atrematous
+atremble
+atrepsy
+atreptic
+atresia
+atresic
+atresy
+atretic
+atria
+atrial
+atrichia
+atrichosis
+atrichous
+atrickle
+Atridean
+atrienses
+atriensis
+atriocoelomic
+atrioporal
+atriopore
+atrioventricular
+atrip
+Atriplex
+atrium
+atrocha
+atrochal
+atrochous
+atrocious
+atrociously
+atrociousness
+atrocity
+atrolactic
+Atropa
+atropaceous
+atropal
+atropamine
+atrophia
+atrophiated
+atrophic
+atrophied
+atrophoderma
+atrophy
+atropia
+atropic
+Atropidae
+atropine
+atropinism
+atropinization
+atropinize
+atropism
+atropous
+atrorubent
+atrosanguineous
+atroscine
+atrous
+atry
+Atrypa
+Atta
+atta
+Attacapan
+attacco
+attach
+attachable
+attachableness
+attache
+attached
+attachedly
+attacher
+attacheship
+attachment
+attack
+attackable
+attacker
+attacolite
+Attacus
+attacus
+attagen
+attaghan
+attain
+attainability
+attainable
+attainableness
+attainder
+attainer
+attainment
+attaint
+attaintment
+attainture
+Attalea
+attaleh
+Attalid
+attar
+attargul
+attask
+attemper
+attemperament
+attemperance
+attemperate
+attemperately
+attemperation
+attemperator
+attempt
+attemptability
+attemptable
+attempter
+attemptless
+attend
+attendance
+attendancy
+attendant
+attendantly
+attender
+attendingly
+attendment
+attendress
+attensity
+attent
+attention
+attentional
+attentive
+attentively
+attentiveness
+attently
+attenuable
+attenuant
+attenuate
+attenuation
+attenuative
+attenuator
+atter
+attercop
+attercrop
+atterminal
+attermine
+atterminement
+attern
+attery
+attest
+attestable
+attestant
+attestation
+attestative
+attestator
+attester
+attestive
+Attic
+attic
+Attical
+Atticism
+atticism
+Atticist
+Atticize
+atticize
+atticomastoid
+attid
+Attidae
+attinge
+attingence
+attingency
+attingent
+attire
+attired
+attirement
+attirer
+attitude
+attitudinal
+attitudinarian
+attitudinarianism
+attitudinize
+attitudinizer
+Attiwendaronk
+attorn
+attorney
+attorneydom
+attorneyism
+attorneyship
+attornment
+attract
+attractability
+attractable
+attractableness
+attractant
+attracter
+attractile
+attractingly
+attraction
+attractionally
+attractive
+attractively
+attractiveness
+attractivity
+attractor
+attrahent
+attrap
+attributable
+attributal
+attribute
+attributer
+attribution
+attributive
+attributively
+attributiveness
+attrist
+attrite
+attrited
+attriteness
+attrition
+attritive
+attritus
+attune
+attunely
+attunement
+Atuami
+atule
+atumble
+atune
+atwain
+atweel
+atween
+atwin
+atwirl
+atwist
+atwitch
+atwitter
+atwixt
+atwo
+atypic
+atypical
+atypically
+atypy
+auantic
+aube
+aubepine
+Aubrey
+Aubrietia
+aubrietia
+aubrite
+auburn
+aubusson
+Auca
+auca
+Aucan
+Aucaner
+Aucanian
+Auchenia
+auchenia
+auchenium
+auchlet
+auction
+auctionary
+auctioneer
+auctorial
+Aucuba
+aucuba
+aucupate
+audacious
+audaciously
+audaciousness
+audacity
+Audaean
+Audian
+Audibertia
+audibility
+audible
+audibleness
+audibly
+audience
+audiencier
+audient
+audile
+audio
+audiogenic
+audiogram
+audiologist
+audiology
+audiometer
+audiometric
+audiometry
+Audion
+audion
+audiophile
+audiphone
+audit
+audition
+auditive
+auditor
+auditoria
+auditorial
+auditorially
+auditorily
+auditorium
+auditorship
+auditory
+auditress
+auditual
+audivise
+audiviser
+audivision
+Audrey
+Audubonistic
+Aueto
+auganite
+auge
+Augean
+augelite
+augen
+augend
+auger
+augerer
+augh
+aught
+aughtlins
+augite
+augitic
+augitite
+augitophyre
+augment
+augmentable
+augmentation
+augmentationer
+augmentative
+augmentatively
+augmented
+augmentedly
+augmenter
+augmentive
+augur
+augural
+augurate
+augurial
+augurous
+augurship
+augury
+August
+august
+Augusta
+augustal
+Augustan
+Augusti
+Augustin
+Augustinian
+Augustinianism
+Augustinism
+augustly
+augustness
+Augustus
+auh
+auhuhu
+Auk
+auk
+auklet
+aula
+aulacocarpous
+Aulacodus
+Aulacomniaceae
+Aulacomnium
+aulae
+aularian
+auld
+auldfarrantlike
+auletai
+aulete
+auletes
+auletic
+auletrides
+auletris
+aulic
+aulicism
+auloi
+aulophyte
+aulos
+Aulostoma
+Aulostomatidae
+Aulostomi
+aulostomid
+Aulostomidae
+Aulostomus
+aulu
+aum
+aumaga
+aumail
+aumbry
+aumery
+aumil
+aumildar
+aumous
+aumrie
+auncel
+aune
+Aunjetitz
+aunt
+aunthood
+auntie
+auntish
+auntlike
+auntly
+auntsary
+auntship
+aupaka
+aura
+aurae
+aural
+aurally
+auramine
+Aurantiaceae
+aurantiaceous
+Aurantium
+aurantium
+aurar
+aurate
+aurated
+aureate
+aureately
+aureateness
+aureation
+aureity
+Aurelia
+aurelia
+aurelian
+Aurelius
+Aureocasidium
+aureola
+aureole
+aureolin
+aureoline
+aureomycin
+aureous
+aureously
+auresca
+aureus
+auribromide
+auric
+aurichalcite
+aurichalcum
+aurichloride
+aurichlorohydric
+auricle
+auricled
+auricomous
+Auricula
+auricula
+auriculae
+auricular
+auriculare
+auriculares
+Auricularia
+auricularia
+Auriculariaceae
+auriculariae
+Auriculariales
+auricularian
+auricularis
+auricularly
+auriculate
+auriculated
+auriculately
+Auriculidae
+auriculocranial
+auriculoparietal
+auriculotemporal
+auriculoventricular
+auriculovertical
+auricyanhydric
+auricyanic
+auricyanide
+auride
+auriferous
+aurific
+aurification
+auriform
+aurify
+Auriga
+aurigal
+aurigation
+aurigerous
+Aurigid
+Aurignacian
+aurilave
+aurin
+aurinasal
+auriphone
+auriphrygia
+auriphrygiate
+auripuncture
+aurir
+auriscalp
+auriscalpia
+auriscalpium
+auriscope
+auriscopy
+aurist
+aurite
+aurivorous
+auroauric
+aurobromide
+aurochloride
+aurochs
+aurocyanide
+aurodiamine
+auronal
+aurophobia
+aurophore
+aurora
+aurorae
+auroral
+aurorally
+aurore
+aurorean
+Aurorian
+aurorium
+aurotellurite
+aurothiosulphate
+aurothiosulphuric
+aurous
+aurrescu
+aurulent
+aurum
+aurure
+auryl
+Aus
+auscult
+auscultascope
+auscultate
+auscultation
+auscultative
+auscultator
+auscultatory
+Auscultoscope
+auscultoscope
+Aushar
+auslaut
+auslaute
+Ausones
+Ausonian
+auspex
+auspicate
+auspice
+auspices
+auspicial
+auspicious
+auspiciously
+auspiciousness
+auspicy
+Aussie
+Austafrican
+austenite
+austenitic
+Auster
+austere
+austerely
+austereness
+austerity
+Austerlitz
+Austin
+Austral
+austral
+Australasian
+australene
+Australia
+Australian
+Australianism
+Australianize
+Australic
+Australioid
+australite
+Australoid
+Australopithecinae
+australopithecine
+Australopithecus
+Australorp
+Austrasian
+Austrian
+Austrianize
+Austric
+austrium
+Austroasiatic
+Austrogaea
+Austrogaean
+austromancy
+Austronesian
+Austrophil
+Austrophile
+Austrophilism
+Austroriparian
+ausu
+ausubo
+autacoid
+autacoidal
+autallotriomorphic
+autantitypy
+autarch
+autarchic
+autarchical
+Autarchoglossa
+autarchy
+autarkic
+autarkical
+autarkist
+autarky
+aute
+autechoscope
+autecious
+auteciously
+auteciousness
+autecism
+autecologic
+autecological
+autecologically
+autecologist
+autecology
+autecy
+autem
+authentic
+authentical
+authentically
+authenticalness
+authenticate
+authentication
+authenticator
+authenticity
+authenticly
+authenticness
+authigene
+authigenetic
+authigenic
+authigenous
+author
+authorcraft
+authoress
+authorhood
+authorial
+authorially
+authorish
+authorism
+authoritarian
+authoritarianism
+authoritative
+authoritatively
+authoritativeness
+authority
+authorizable
+authorization
+authorize
+authorized
+authorizer
+authorless
+authorling
+authorly
+authorship
+authotype
+autism
+autist
+autistic
+auto
+autoabstract
+autoactivation
+autoactive
+autoaddress
+autoagglutinating
+autoagglutination
+autoagglutinin
+autoalarm
+autoalkylation
+autoallogamous
+autoallogamy
+autoanalysis
+autoanalytic
+autoantibody
+autoanticomplement
+autoantitoxin
+autoasphyxiation
+autoaspiration
+autoassimilation
+autobahn
+autobasidia
+Autobasidiomycetes
+autobasidiomycetous
+autobasidium
+Autobasisii
+autobiographal
+autobiographer
+autobiographic
+autobiographical
+autobiographically
+autobiographist
+autobiography
+autobiology
+autoblast
+autoboat
+autoboating
+autobolide
+autobus
+autocab
+autocade
+autocall
+autocamp
+autocamper
+autocamping
+autocar
+autocarist
+autocarpian
+autocarpic
+autocarpous
+autocatalepsy
+autocatalysis
+autocatalytic
+autocatalytically
+autocatalyze
+autocatheterism
+autocephalia
+autocephality
+autocephalous
+autocephaly
+autoceptive
+autochemical
+autocholecystectomy
+autochrome
+autochromy
+autochronograph
+autochthon
+autochthonal
+autochthonic
+autochthonism
+autochthonous
+autochthonously
+autochthonousness
+autochthony
+autocide
+autocinesis
+autoclasis
+autoclastic
+autoclave
+autocoenobium
+autocoherer
+autocoid
+autocollimation
+autocollimator
+autocolony
+autocombustible
+autocombustion
+autocomplexes
+autocondensation
+autoconduction
+autoconvection
+autoconverter
+autocopist
+autocoprophagous
+autocorrosion
+autocracy
+autocrat
+autocratic
+autocratical
+autocratically
+autocrator
+autocratoric
+autocratorical
+autocratrix
+autocratship
+autocremation
+autocriticism
+autocystoplasty
+autocytolysis
+autocytolytic
+autodecomposition
+autodepolymerization
+autodermic
+autodestruction
+autodetector
+autodiagnosis
+autodiagnostic
+autodiagrammatic
+autodidact
+autodidactic
+autodifferentiation
+autodiffusion
+autodigestion
+autodigestive
+autodrainage
+autodrome
+autodynamic
+autodyne
+autoecholalia
+autoecic
+autoecious
+autoeciously
+autoeciousness
+autoecism
+autoecous
+autoecy
+autoeducation
+autoeducative
+autoelectrolysis
+autoelectrolytic
+autoelectronic
+autoelevation
+autoepigraph
+autoepilation
+autoerotic
+autoerotically
+autoeroticism
+autoerotism
+autoexcitation
+autofecundation
+autofermentation
+autoformation
+autofrettage
+autogamic
+autogamous
+autogamy
+autogauge
+autogeneal
+autogenesis
+autogenetic
+autogenetically
+autogenic
+autogenous
+autogenously
+autogeny
+Autogiro
+autogiro
+autognosis
+autognostic
+autograft
+autografting
+autogram
+autograph
+autographal
+autographer
+autographic
+autographical
+autographically
+autographism
+autographist
+autographometer
+autography
+autogravure
+Autoharp
+autoharp
+autoheader
+autohemic
+autohemolysin
+autohemolysis
+autohemolytic
+autohemorrhage
+autohemotherapy
+autoheterodyne
+autoheterosis
+autohexaploid
+autohybridization
+autohypnosis
+autohypnotic
+autohypnotism
+autohypnotization
+autoicous
+autoignition
+autoimmunity
+autoimmunization
+autoinduction
+autoinductive
+autoinfection
+autoinfusion
+autoinhibited
+autoinoculable
+autoinoculation
+autointellectual
+autointoxicant
+autointoxication
+autoirrigation
+autoist
+autojigger
+autojuggernaut
+autokinesis
+autokinetic
+autokrator
+autolaryngoscope
+autolaryngoscopic
+autolaryngoscopy
+autolater
+autolatry
+autolavage
+autolesion
+autolimnetic
+autolith
+autoloading
+autological
+autologist
+autologous
+autology
+autoluminescence
+autoluminescent
+autolysate
+autolysin
+autolysis
+autolytic
+Autolytus
+autolyzate
+autolyze
+automa
+automacy
+automanual
+automat
+automata
+automatic
+automatical
+automatically
+automaticity
+automatin
+automatism
+automatist
+automatization
+automatize
+automatograph
+automaton
+automatonlike
+automatous
+automechanical
+automelon
+autometamorphosis
+autometric
+autometry
+automobile
+automobilism
+automobilist
+automobilistic
+automobility
+automolite
+automonstration
+automorph
+automorphic
+automorphically
+automorphism
+automotive
+automotor
+automower
+automysophobia
+autonegation
+autonephrectomy
+autonephrotoxin
+autoneurotoxin
+autonitridation
+autonoetic
+autonomasy
+autonomic
+autonomical
+autonomically
+autonomist
+autonomize
+autonomous
+autonomously
+autonomy
+autonym
+autoparasitism
+autopathic
+autopathography
+autopathy
+autopelagic
+autopepsia
+autophagi
+autophagia
+autophagous
+autophagy
+autophobia
+autophoby
+autophon
+autophone
+autophonoscope
+autophonous
+autophony
+autophotoelectric
+autophotograph
+autophotometry
+autophthalmoscope
+autophyllogeny
+autophyte
+autophytic
+autophytically
+autophytograph
+autophytography
+autopilot
+autoplagiarism
+autoplasmotherapy
+autoplast
+autoplastic
+autoplasty
+autopneumatic
+autopoint
+autopoisonous
+autopolar
+autopolo
+autopoloist
+autopolyploid
+autopore
+autoportrait
+autoportraiture
+autopositive
+autopotent
+autoprogressive
+autoproteolysis
+autoprothesis
+autopsic
+autopsical
+autopsy
+autopsychic
+autopsychoanalysis
+autopsychology
+autopsychorhythmia
+autopsychosis
+autoptic
+autoptical
+autoptically
+autopticity
+autopyotherapy
+autoracemization
+autoradiograph
+autoradiographic
+autoradiography
+autoreduction
+autoregenerator
+autoregulation
+autoreinfusion
+autoretardation
+autorhythmic
+autorhythmus
+autoriser
+autorotation
+autorrhaphy
+Autosauri
+Autosauria
+autoschediasm
+autoschediastic
+autoschediastical
+autoschediastically
+autoschediaze
+autoscience
+autoscope
+autoscopic
+autoscopy
+autosender
+autosensitization
+autosensitized
+autosepticemia
+autoserotherapy
+autoserum
+autosexing
+autosight
+autosign
+autosite
+autositic
+autoskeleton
+autosled
+autoslip
+autosomal
+autosomatognosis
+autosomatognostic
+autosome
+autosoteric
+autosoterism
+autospore
+autosporic
+autospray
+autostability
+autostage
+autostandardization
+autostarter
+autostethoscope
+autostylic
+autostylism
+autostyly
+autosuggestibility
+autosuggestible
+autosuggestion
+autosuggestionist
+autosuggestive
+autosuppression
+autosymbiontic
+autosymbolic
+autosymbolical
+autosymbolically
+autosymnoia
+Autosyn
+autosyndesis
+autotelegraph
+autotelic
+autotetraploid
+autotetraploidy
+autothaumaturgist
+autotheater
+autotheism
+autotheist
+autotherapeutic
+autotherapy
+autothermy
+autotomic
+autotomize
+autotomous
+autotomy
+autotoxaemia
+autotoxic
+autotoxication
+autotoxicity
+autotoxicosis
+autotoxin
+autotoxis
+autotractor
+autotransformer
+autotransfusion
+autotransplant
+autotransplantation
+autotrepanation
+autotriploid
+autotriploidy
+autotroph
+autotrophic
+autotrophy
+autotropic
+autotropically
+autotropism
+autotruck
+autotuberculin
+autoturning
+autotype
+autotyphization
+autotypic
+autotypography
+autotypy
+autourine
+autovaccination
+autovaccine
+autovalet
+autovalve
+autovivisection
+autoxeny
+autoxidation
+autoxidator
+autoxidizability
+autoxidizable
+autoxidize
+autoxidizer
+autozooid
+autrefois
+autumn
+autumnal
+autumnally
+autumnian
+autumnity
+Autunian
+autunite
+auxamylase
+auxanogram
+auxanology
+auxanometer
+auxesis
+auxetic
+auxetical
+auxetically
+auxiliar
+auxiliarly
+auxiliary
+auxiliate
+auxiliation
+auxiliator
+auxiliatory
+auxilium
+auximone
+auxin
+auxinic
+auxinically
+auxoaction
+auxoamylase
+auxoblast
+auxobody
+auxocardia
+auxochrome
+auxochromic
+auxochromism
+auxochromous
+auxocyte
+auxoflore
+auxofluor
+auxograph
+auxographic
+auxohormone
+auxology
+auxometer
+auxospore
+auxosubstance
+auxotonic
+auxotox
+ava
+avadana
+avadavat
+avadhuta
+avahi
+avail
+availability
+available
+availableness
+availably
+availingly
+availment
+aval
+avalanche
+avalent
+avalvular
+Avanguardisti
+avania
+avanious
+Avanti
+avanturine
+Avar
+Avaradrano
+avaremotemo
+Avarian
+avarice
+avaricious
+avariciously
+avariciousness
+Avarish
+Avars
+avascular
+avast
+avaunt
+Ave
+ave
+avellan
+avellane
+avellaneous
+avellano
+avelonge
+aveloz
+Avena
+avenaceous
+avenage
+avenalin
+avener
+avenge
+avengeful
+avengement
+avenger
+avengeress
+avenging
+avengingly
+avenin
+avenolith
+avenous
+avens
+aventail
+Aventine
+aventurine
+avenue
+aver
+avera
+average
+averagely
+averager
+averah
+averil
+averin
+averment
+Avernal
+Avernus
+averrable
+averral
+Averrhoa
+Averroism
+Averroist
+Averroistic
+averruncate
+averruncation
+averruncator
+aversant
+aversation
+averse
+aversely
+averseness
+aversion
+aversive
+avert
+avertable
+averted
+avertedly
+averter
+avertible
+Avertin
+Avery
+Aves
+Avesta
+Avestan
+avian
+avianization
+avianize
+aviarist
+aviary
+aviate
+aviatic
+aviation
+aviator
+aviatorial
+aviatoriality
+aviatory
+aviatress
+aviatrices
+aviatrix
+Avicennia
+Avicenniaceae
+Avicennism
+avichi
+avicide
+avick
+avicolous
+Avicula
+avicular
+Avicularia
+avicularia
+avicularian
+Aviculariidae
+Avicularimorphae
+avicularium
+Aviculidae
+aviculture
+aviculturist
+avid
+avidious
+avidiously
+avidity
+avidly
+avidous
+avidya
+avifauna
+avifaunal
+avigate
+avigation
+avigator
+Avignonese
+avijja
+Avikom
+avine
+aviolite
+avirulence
+avirulent
+Avis
+aviso
+avital
+avitaminosis
+avitaminotic
+avitic
+avives
+avizandum
+avo
+avocado
+avocate
+avocation
+avocative
+avocatory
+avocet
+avodire
+avogadrite
+avoid
+avoidable
+avoidably
+avoidance
+avoider
+avoidless
+avoidment
+avoirdupois
+avolate
+avolation
+avolitional
+avondbloem
+avouch
+avouchable
+avoucher
+avouchment
+avourneen
+avow
+avowable
+avowableness
+avowably
+avowal
+avowance
+avowant
+avowed
+avowedly
+avowedness
+avower
+avowry
+avoyer
+avoyership
+Avshar
+avulse
+avulsion
+avuncular
+avunculate
+aw
+awa
+Awabakal
+awabi
+Awadhi
+awaft
+awag
+await
+awaiter
+Awaitlala
+awakable
+awake
+awaken
+awakenable
+awakener
+awakening
+awakeningly
+awakenment
+awald
+awalim
+awalt
+Awan
+awane
+awanting
+awapuhi
+award
+awardable
+awarder
+awardment
+aware
+awaredom
+awareness
+awaruite
+awash
+awaste
+awat
+awatch
+awater
+awave
+away
+awayness
+awber
+awd
+awe
+awearied
+aweary
+aweather
+aweband
+awedness
+awee
+aweek
+aweel
+aweigh
+Awellimiden
+awesome
+awesomely
+awesomeness
+awest
+aweto
+awfu
+awful
+awfully
+awfulness
+awheel
+awheft
+awhet
+awhile
+awhir
+awhirl
+awide
+awiggle
+awikiwiki
+awin
+awing
+awink
+awiwi
+awkward
+awkwardish
+awkwardly
+awkwardness
+awl
+awless
+awlessness
+awlwort
+awmous
+awn
+awned
+awner
+awning
+awninged
+awnless
+awnlike
+awny
+awoke
+Awol
+awork
+awreck
+awrist
+awrong
+awry
+Awshar
+ax
+axal
+axbreaker
+axe
+axed
+Axel
+axenic
+axes
+axfetch
+axhammer
+axhammered
+axhead
+axial
+axiality
+axially
+axiate
+axiation
+Axifera
+axiform
+axifugal
+axil
+axile
+axilemma
+axilemmata
+axilla
+axillae
+axillant
+axillar
+axillary
+axine
+axinite
+axinomancy
+axiolite
+axiolitic
+axiological
+axiologically
+axiologist
+axiology
+axiom
+axiomatic
+axiomatical
+axiomatically
+axiomatization
+axiomatize
+axion
+axiopisty
+Axis
+axis
+axised
+axisymmetric
+axisymmetrical
+axite
+axle
+axled
+axlesmith
+axletree
+axmaker
+axmaking
+axman
+axmanship
+axmaster
+Axminster
+axodendrite
+axofugal
+axogamy
+axoid
+axoidean
+axolemma
+axolotl
+axolysis
+axometer
+axometric
+axometry
+axon
+axonal
+axoneure
+axoneuron
+Axonia
+Axonolipa
+axonolipous
+axonometric
+axonometry
+Axonophora
+axonophorous
+Axonopus
+axonost
+axopetal
+axophyte
+axoplasm
+axopodia
+axopodium
+axospermous
+axostyle
+axseed
+axstone
+axtree
+Axumite
+axunge
+axweed
+axwise
+axwort
+Ay
+ay
+ayacahuite
+ayah
+Ayahuca
+Aydendron
+aye
+ayegreen
+ayelp
+ayenbite
+ayin
+Aylesbury
+ayless
+aylet
+ayllu
+Aymara
+Aymaran
+Aymoro
+ayond
+ayont
+ayous
+Ayrshire
+Aythya
+ayu
+Ayubite
+Ayyubid
+azadrachta
+azafrin
+Azalea
+azalea
+Azande
+azarole
+azedarach
+azelaic
+azelate
+Azelfafage
+azeotrope
+azeotropic
+azeotropism
+azeotropy
+Azerbaijanese
+Azerbaijani
+Azerbaijanian
+Azha
+azide
+aziethane
+Azilian
+azilut
+Azimech
+azimene
+azimethylene
+azimide
+azimine
+azimino
+aziminobenzene
+azimuth
+azimuthal
+azimuthally
+azine
+aziola
+azlactone
+azo
+azobacter
+azobenzene
+azobenzil
+azobenzoic
+azobenzol
+azoblack
+azoch
+azocochineal
+azocoralline
+azocorinth
+azocyanide
+azocyclic
+azodicarboxylic
+azodiphenyl
+azodisulphonic
+azoeosin
+azoerythrin
+azofication
+azofier
+azoflavine
+azoformamide
+azoformic
+azofy
+azogallein
+azogreen
+azogrenadine
+azohumic
+azoic
+azoimide
+azoisobutyronitrile
+azole
+azolitmin
+Azolla
+azomethine
+azon
+azonal
+azonaphthalene
+azonic
+azonium
+azoospermia
+azoparaffin
+azophen
+azophenetole
+azophenine
+azophenol
+azophenyl
+azophenylene
+azophosphin
+azophosphore
+azoprotein
+Azorian
+azorite
+azorubine
+azosulphine
+azosulphonic
+azotate
+azote
+azoted
+azotemia
+azotenesis
+azotetrazole
+azoth
+azothionium
+azotic
+azotine
+azotite
+azotize
+Azotobacter
+Azotobacterieae
+azotoluene
+azotometer
+azotorrhoea
+azotous
+azoturia
+azovernine
+azox
+azoxazole
+azoxime
+azoxine
+azoxonium
+azoxy
+azoxyanisole
+azoxybenzene
+azoxybenzoic
+azoxynaphthalene
+azoxyphenetole
+azoxytoluidine
+Aztec
+Azteca
+azteca
+Aztecan
+azthionium
+azulene
+azulite
+azulmic
+azumbre
+azure
+azurean
+azured
+azureous
+azurine
+azurite
+azurmalachite
+azurous
+azury
+Azygobranchia
+Azygobranchiata
+azygobranchiate
+azygomatous
+azygos
+azygosperm
+azygospore
+azygous
+azyme
+azymite
+azymous
+B
+b
+ba
+baa
+baahling
+Baal
+baal
+Baalath
+Baalish
+Baalism
+Baalist
+Baalite
+Baalitical
+Baalize
+Baalshem
+baar
+Bab
+baba
+babacoote
+babai
+babasco
+babassu
+babaylan
+Babbie
+Babbitt
+babbitt
+babbitter
+Babbittess
+Babbittian
+Babbittism
+Babbittry
+babblative
+babble
+babblement
+babbler
+babblesome
+babbling
+babblingly
+babblish
+babblishly
+babbly
+babby
+Babcock
+babe
+babehood
+Babel
+Babeldom
+babelet
+Babelic
+babelike
+Babelish
+Babelism
+Babelize
+babery
+babeship
+Babesia
+babesiasis
+Babhan
+Babi
+Babiana
+babiche
+babied
+Babiism
+babillard
+Babine
+babingtonite
+babirusa
+babish
+babished
+babishly
+babishness
+Babism
+Babist
+Babite
+bablah
+babloh
+baboen
+Babongo
+baboo
+baboodom
+babooism
+baboon
+baboonery
+baboonish
+baboonroot
+baboot
+babouche
+Babouvism
+Babouvist
+babroot
+Babs
+babu
+Babua
+babudom
+babuina
+babuism
+babul
+Babuma
+Babungera
+babushka
+baby
+babydom
+babyfied
+babyhood
+babyhouse
+babyish
+babyishly
+babyishness
+babyism
+babylike
+Babylon
+Babylonian
+Babylonic
+Babylonish
+Babylonism
+Babylonite
+Babylonize
+babyolatry
+babyship
+bac
+bacaba
+bacach
+bacalao
+bacao
+bacbakiri
+bacca
+baccaceous
+baccae
+baccalaurean
+baccalaureate
+baccara
+baccarat
+baccate
+baccated
+Bacchae
+bacchanal
+Bacchanalia
+bacchanalian
+bacchanalianism
+bacchanalianly
+bacchanalism
+bacchanalization
+bacchanalize
+bacchant
+bacchante
+bacchantes
+bacchantic
+bacchar
+baccharis
+baccharoid
+baccheion
+bacchiac
+bacchian
+Bacchic
+bacchic
+Bacchical
+Bacchides
+bacchii
+bacchius
+Bacchus
+Bacchuslike
+bacciferous
+bacciform
+baccivorous
+bach
+Bacharach
+bache
+bachel
+bachelor
+bachelordom
+bachelorhood
+bachelorism
+bachelorize
+bachelorlike
+bachelorly
+bachelorship
+bachelorwise
+bachelry
+Bachichi
+Bacillaceae
+bacillar
+Bacillariaceae
+bacillariaceous
+Bacillariales
+Bacillarieae
+Bacillariophyta
+bacillary
+bacillemia
+bacilli
+bacillian
+bacillicidal
+bacillicide
+bacillicidic
+bacilliculture
+bacilliform
+bacilligenic
+bacilliparous
+bacillite
+bacillogenic
+bacillogenous
+bacillophobia
+bacillosis
+bacilluria
+bacillus
+Bacis
+bacitracin
+back
+backache
+backaching
+backachy
+backage
+backband
+backbearing
+backbencher
+backbite
+backbiter
+backbitingly
+backblow
+backboard
+backbone
+backboned
+backboneless
+backbonelessness
+backbrand
+backbreaker
+backbreaking
+backcap
+backcast
+backchain
+backchat
+backcourt
+backcross
+backdoor
+backdown
+backdrop
+backed
+backen
+backer
+backet
+backfall
+backfatter
+backfield
+backfill
+backfiller
+backfilling
+backfire
+backfiring
+backflap
+backflash
+backflow
+backfold
+backframe
+backfriend
+backfurrow
+backgame
+backgammon
+background
+backhand
+backhanded
+backhandedly
+backhandedness
+backhander
+backhatch
+backheel
+backhooker
+backhouse
+backie
+backiebird
+backing
+backjaw
+backjoint
+backlands
+backlash
+backlashing
+backless
+backlet
+backlings
+backlog
+backlotter
+backmost
+backpedal
+backpiece
+backplate
+backrope
+backrun
+backsaw
+backscraper
+backset
+backsetting
+backsettler
+backshift
+backside
+backsight
+backslap
+backslapper
+backslapping
+backslide
+backslider
+backslidingness
+backspace
+backspacer
+backspang
+backspier
+backspierer
+backspin
+backspread
+backspringing
+backstaff
+backstage
+backstamp
+backstay
+backster
+backstick
+backstitch
+backstone
+backstop
+backstrap
+backstretch
+backstring
+backstrip
+backstroke
+backstromite
+backswept
+backswing
+backsword
+backswording
+backswordman
+backswordsman
+backtack
+backtender
+backtenter
+backtrack
+backtracker
+backtrick
+backup
+backveld
+backvelder
+backwall
+backward
+backwardation
+backwardly
+backwardness
+backwards
+backwash
+backwasher
+backwashing
+backwater
+backwatered
+backway
+backwood
+backwoods
+backwoodsiness
+backwoodsman
+backwoodsy
+backword
+backworm
+backwort
+backyarder
+baclin
+bacon
+baconer
+Baconian
+Baconianism
+Baconic
+Baconism
+Baconist
+baconize
+baconweed
+bacony
+Bacopa
+bacteremia
+bacteria
+Bacteriaceae
+bacteriaceous
+bacterial
+bacterially
+bacterian
+bacteric
+bactericholia
+bactericidal
+bactericide
+bactericidin
+bacterid
+bacteriemia
+bacteriform
+bacterin
+bacterioagglutinin
+bacterioblast
+bacteriocyte
+bacteriodiagnosis
+bacteriofluorescin
+bacteriogenic
+bacteriogenous
+bacteriohemolysin
+bacterioid
+bacterioidal
+bacteriologic
+bacteriological
+bacteriologically
+bacteriologist
+bacteriology
+bacteriolysin
+bacteriolysis
+bacteriolytic
+bacteriolyze
+bacteriopathology
+bacteriophage
+bacteriophagia
+bacteriophagic
+bacteriophagous
+bacteriophagy
+bacteriophobia
+bacterioprecipitin
+bacterioprotein
+bacteriopsonic
+bacteriopsonin
+bacteriopurpurin
+bacterioscopic
+bacterioscopical
+bacterioscopically
+bacterioscopist
+bacterioscopy
+bacteriosis
+bacteriosolvent
+bacteriostasis
+bacteriostat
+bacteriostatic
+bacteriotherapeutic
+bacteriotherapy
+bacteriotoxic
+bacteriotoxin
+bacteriotropic
+bacteriotropin
+bacteriotrypsin
+bacterious
+bacteritic
+bacterium
+bacteriuria
+bacterization
+bacterize
+bacteroid
+bacteroidal
+Bacteroideae
+Bacteroides
+Bactrian
+Bactris
+Bactrites
+bactriticone
+bactritoid
+bacula
+bacule
+baculi
+baculiferous
+baculiform
+baculine
+baculite
+Baculites
+baculitic
+baculiticone
+baculoid
+baculum
+baculus
+bacury
+bad
+Badaga
+badan
+Badarian
+badarrah
+Badawi
+baddeleyite
+badderlocks
+baddish
+baddishly
+baddishness
+baddock
+bade
+badenite
+badge
+badgeless
+badgeman
+badger
+badgerbrush
+badgerer
+badgeringly
+badgerlike
+badgerly
+badgerweed
+badiaga
+badian
+badigeon
+badinage
+badious
+badland
+badlands
+badly
+badminton
+badness
+Badon
+Baduhenna
+bae
+Baedeker
+Baedekerian
+Baeria
+baetuli
+baetulus
+baetyl
+baetylic
+baetylus
+baetzner
+bafaro
+baff
+baffeta
+baffle
+bafflement
+baffler
+baffling
+bafflingly
+bafflingness
+baffy
+baft
+bafta
+Bafyot
+bag
+baga
+Baganda
+bagani
+bagasse
+bagataway
+bagatelle
+bagatine
+bagattini
+bagattino
+Bagaudae
+Bagdad
+Bagdi
+bagel
+bagful
+baggage
+baggageman
+baggagemaster
+baggager
+baggala
+bagganet
+Baggara
+bagged
+bagger
+baggie
+baggily
+bagginess
+bagging
+baggit
+baggy
+Bagheli
+baghouse
+Baginda
+Bagirmi
+bagleaves
+baglike
+bagmaker
+bagmaking
+bagman
+bagnio
+bagnut
+bago
+Bagobo
+bagonet
+bagpipe
+bagpiper
+bagpipes
+bagplant
+bagrationite
+bagre
+bagreef
+bagroom
+baguette
+bagwig
+bagwigged
+bagworm
+bagwyn
+bah
+Bahai
+Bahaism
+Bahaist
+Baham
+Bahama
+Bahamian
+bahan
+bahar
+Bahaullah
+bahawder
+bahay
+bahera
+bahiaite
+Bahima
+bahisti
+Bahmani
+Bahmanid
+bahnung
+baho
+bahoe
+bahoo
+baht
+Bahuma
+bahur
+bahut
+Bahutu
+bahuvrihi
+Baianism
+baidarka
+Baidya
+Baiera
+baiginet
+baignet
+baikalite
+baikerinite
+baikerite
+baikie
+bail
+bailable
+bailage
+bailee
+bailer
+bailey
+bailie
+bailiery
+bailieship
+bailiff
+bailiffry
+bailiffship
+bailiwick
+bailliage
+baillone
+Baillonella
+bailment
+bailor
+bailpiece
+bailsman
+bailwood
+bain
+bainie
+Baining
+baioc
+baiocchi
+baiocco
+bairagi
+Bairam
+bairn
+bairnie
+bairnish
+bairnishness
+bairnliness
+bairnly
+bairnteam
+bairntime
+bairnwort
+Bais
+Baisakh
+baister
+bait
+baiter
+baith
+baittle
+baitylos
+baize
+bajada
+bajan
+Bajardo
+bajarigar
+Bajau
+Bajocian
+bajra
+bajree
+bajri
+bajury
+baka
+Bakairi
+bakal
+Bakalai
+Bakalei
+Bakatan
+bake
+bakeboard
+baked
+bakehouse
+Bakelite
+bakelite
+bakelize
+baken
+bakeoven
+bakepan
+baker
+bakerdom
+bakeress
+bakerite
+bakerless
+bakerly
+bakership
+bakery
+bakeshop
+bakestone
+Bakhtiari
+bakie
+baking
+bakingly
+bakli
+Bakongo
+Bakshaish
+baksheesh
+baktun
+Baku
+baku
+Bakuba
+bakula
+Bakunda
+Bakuninism
+Bakuninist
+bakupari
+Bakutu
+Bakwiri
+Bal
+bal
+Bala
+Balaam
+Balaamite
+Balaamitical
+balachong
+balaclava
+baladine
+Balaena
+Balaenicipites
+balaenid
+Balaenidae
+balaenoid
+Balaenoidea
+balaenoidean
+Balaenoptera
+Balaenopteridae
+balafo
+balagan
+balaghat
+balai
+Balaic
+Balak
+Balaklava
+balalaika
+Balan
+balance
+balanceable
+balanced
+balancedness
+balancelle
+balanceman
+balancement
+balancer
+balancewise
+balancing
+balander
+balandra
+balandrana
+balaneutics
+balangay
+balanic
+balanid
+Balanidae
+balaniferous
+balanism
+balanite
+Balanites
+balanitis
+balanoblennorrhea
+balanocele
+Balanoglossida
+Balanoglossus
+balanoid
+Balanophora
+Balanophoraceae
+balanophoraceous
+balanophore
+balanophorin
+balanoplasty
+balanoposthitis
+balanopreputial
+Balanops
+Balanopsidaceae
+Balanopsidales
+balanorrhagia
+Balanta
+Balante
+balantidial
+balantidiasis
+balantidic
+balantidiosis
+Balantidium
+Balanus
+Balao
+balao
+Balarama
+balas
+balata
+balatong
+balatron
+balatronic
+balausta
+balaustine
+balaustre
+Balawa
+Balawu
+balboa
+balbriggan
+balbutiate
+balbutient
+balbuties
+balconet
+balconied
+balcony
+bald
+baldachin
+baldachined
+baldachini
+baldachino
+baldberry
+baldcrown
+balden
+balder
+balderdash
+baldhead
+baldicoot
+Baldie
+baldish
+baldling
+baldly
+baldmoney
+baldness
+baldpate
+baldrib
+baldric
+baldricked
+baldricwise
+balductum
+Baldwin
+baldy
+bale
+Balearian
+Balearic
+Balearica
+baleen
+balefire
+baleful
+balefully
+balefulness
+balei
+baleise
+baleless
+baler
+balete
+Bali
+bali
+balibago
+Balija
+Balilla
+baline
+Balinese
+balinger
+balinghasay
+balisaur
+balistarius
+Balistes
+balistid
+Balistidae
+balistraria
+balita
+balk
+Balkan
+Balkanic
+Balkanization
+Balkanize
+Balkar
+balker
+balkingly
+Balkis
+balky
+ball
+ballad
+ballade
+balladeer
+ballader
+balladeroyal
+balladic
+balladical
+balladier
+balladism
+balladist
+balladize
+balladlike
+balladling
+balladmonger
+balladmongering
+balladry
+balladwise
+ballahoo
+ballam
+ballan
+ballant
+ballast
+ballastage
+ballaster
+ballasting
+ballata
+ballate
+ballatoon
+balldom
+balled
+baller
+ballerina
+ballet
+balletic
+balletomane
+Ballhausplatz
+balli
+ballist
+ballista
+ballistae
+ballistic
+ballistically
+ballistician
+ballistics
+Ballistite
+ballistocardiograph
+ballium
+ballmine
+ballogan
+ballonet
+balloon
+balloonation
+ballooner
+balloonery
+balloonet
+balloonfish
+balloonflower
+balloonful
+ballooning
+balloonish
+balloonist
+balloonlike
+ballot
+Ballota
+ballotade
+ballotage
+balloter
+balloting
+ballotist
+ballottement
+ballow
+Ballplatz
+ballplayer
+ballproof
+ballroom
+ballstock
+ballup
+ballweed
+bally
+ballyhack
+ballyhoo
+ballyhooer
+ballywack
+ballywrack
+balm
+balmacaan
+Balmarcodes
+Balmawhapple
+balmily
+balminess
+balmlike
+balmony
+Balmoral
+balmy
+balneal
+balneary
+balneation
+balneatory
+balneographer
+balneography
+balneologic
+balneological
+balneologist
+balneology
+balneophysiology
+balneotechnics
+balneotherapeutics
+balneotherapia
+balneotherapy
+Balnibarbi
+Baloch
+Baloghia
+Balolo
+balonea
+baloney
+baloo
+Balopticon
+Balor
+Baloskion
+Baloskionaceae
+balow
+balsa
+balsam
+balsamation
+Balsamea
+Balsameaceae
+balsameaceous
+balsamer
+balsamic
+balsamical
+balsamically
+balsamiferous
+balsamina
+Balsaminaceae
+balsaminaceous
+balsamine
+balsamitic
+balsamiticness
+balsamize
+balsamo
+Balsamodendron
+Balsamorrhiza
+balsamous
+balsamroot
+balsamum
+balsamweed
+balsamy
+Balt
+baltei
+balter
+balteus
+Balthasar
+Balti
+Baltic
+Baltimore
+Baltimorean
+baltimorite
+Baltis
+balu
+Baluba
+Baluch
+Baluchi
+Baluchistan
+baluchithere
+baluchitheria
+Baluchitherium
+baluchitherium
+Baluga
+Balunda
+balushai
+baluster
+balustered
+balustrade
+balustraded
+balustrading
+balut
+balwarra
+balza
+Balzacian
+balzarine
+bam
+Bamalip
+Bamangwato
+bamban
+Bambara
+bambini
+bambino
+bambocciade
+bamboo
+bamboozle
+bamboozlement
+bamboozler
+Bambos
+bamboula
+Bambuba
+Bambusa
+Bambuseae
+Bambute
+bamoth
+Ban
+ban
+Bana
+banaba
+banago
+banak
+banakite
+banal
+banality
+banally
+banana
+Bananaland
+Bananalander
+Banande
+bananist
+bananivorous
+banat
+Banate
+banatite
+banausic
+Banba
+Banbury
+banc
+banca
+bancal
+banchi
+banco
+bancus
+band
+Banda
+banda
+bandage
+bandager
+bandagist
+bandaite
+bandaka
+bandala
+bandalore
+bandanna
+bandannaed
+bandar
+bandarlog
+bandbox
+bandboxical
+bandboxy
+bandcase
+bandcutter
+bande
+bandeau
+banded
+bandelet
+bander
+Banderma
+banderole
+bandersnatch
+bandfish
+bandhava
+bandhook
+Bandhor
+bandhu
+bandi
+bandicoot
+bandicoy
+bandie
+bandikai
+bandiness
+banding
+bandit
+banditism
+banditry
+banditti
+bandle
+bandless
+bandlessly
+bandlessness
+bandlet
+bandman
+bandmaster
+bando
+bandog
+bandoleer
+bandoleered
+bandoline
+bandonion
+Bandor
+bandore
+bandrol
+bandsman
+bandstand
+bandster
+bandstring
+Bandusia
+Bandusian
+bandwork
+bandy
+bandyball
+bandyman
+bane
+baneberry
+baneful
+banefully
+banefulness
+banewort
+Banff
+bang
+banga
+Bangala
+bangalay
+bangalow
+Bangash
+bangboard
+bange
+banger
+banghy
+Bangia
+Bangiaceae
+bangiaceous
+Bangiales
+banging
+bangkok
+bangle
+bangled
+bangling
+bangster
+bangtail
+Bangwaketsi
+bani
+banian
+banig
+banilad
+banish
+banisher
+banishment
+banister
+Baniva
+baniwa
+baniya
+banjo
+banjoist
+banjore
+banjorine
+banjuke
+bank
+bankable
+Bankalachi
+bankbook
+banked
+banker
+bankera
+bankerdom
+bankeress
+banket
+bankfull
+banking
+bankman
+bankrider
+bankrupt
+bankruptcy
+bankruptism
+bankruptlike
+bankruptly
+bankruptship
+bankrupture
+bankshall
+Banksia
+Banksian
+bankside
+banksman
+bankweed
+banky
+banner
+bannered
+bannerer
+banneret
+bannerfish
+bannerless
+bannerlike
+bannerman
+bannerol
+bannerwise
+bannet
+banning
+bannister
+Bannock
+bannock
+Bannockburn
+banns
+bannut
+banovina
+banquet
+banqueteer
+banqueteering
+banqueter
+banquette
+bansalague
+banshee
+banstickle
+bant
+Bantam
+bantam
+bantamize
+bantamweight
+bantay
+bantayan
+banteng
+banter
+banterer
+banteringly
+bantery
+Bantingism
+bantingize
+bantling
+Bantoid
+Bantu
+banty
+banuyo
+banxring
+banya
+Banyai
+banyan
+Banyoro
+Banyuls
+banzai
+baobab
+bap
+Baphia
+Baphomet
+Baphometic
+Baptanodon
+Baptisia
+baptisin
+baptism
+baptismal
+baptismally
+Baptist
+baptistery
+baptistic
+baptizable
+baptize
+baptizee
+baptizement
+baptizer
+Baptornis
+bar
+bara
+barabara
+barabora
+Barabra
+Baraca
+barad
+baragnosis
+baragouin
+baragouinish
+Baraithas
+barajillo
+Baralipton
+Baramika
+barandos
+barangay
+barasingha
+barathea
+barathra
+barathrum
+barauna
+barb
+Barbacoa
+Barbacoan
+barbacou
+Barbadian
+Barbados
+barbal
+barbaloin
+Barbara
+barbaralalia
+Barbarea
+barbaresque
+Barbarian
+barbarian
+barbarianism
+barbarianize
+barbaric
+barbarical
+barbarically
+barbarious
+barbariousness
+barbarism
+barbarity
+barbarization
+barbarize
+barbarous
+barbarously
+barbarousness
+Barbary
+barbary
+barbas
+barbasco
+barbastel
+barbate
+barbated
+barbatimao
+barbe
+barbecue
+barbed
+barbeiro
+barbel
+barbellate
+barbellula
+barbellulate
+barber
+barberess
+barberfish
+barberish
+barberry
+barbershop
+barbet
+barbette
+Barbeyaceae
+barbican
+barbicel
+barbigerous
+barbion
+barbital
+barbitalism
+barbiton
+barbitone
+barbitos
+barbiturate
+barbituric
+barbless
+barblet
+barbone
+barbotine
+Barbra
+barbudo
+Barbula
+barbulate
+barbule
+barbulyie
+barbwire
+Barcan
+barcarole
+barcella
+barcelona
+Barcoo
+bard
+bardane
+bardash
+bardcraft
+bardel
+Bardesanism
+Bardesanist
+Bardesanite
+bardess
+bardic
+bardie
+bardiglio
+bardily
+bardiness
+barding
+bardish
+bardism
+bardlet
+bardlike
+bardling
+bardo
+Bardolater
+Bardolatry
+Bardolph
+Bardolphian
+bardship
+Bardulph
+bardy
+Bare
+bare
+bareback
+barebacked
+bareboat
+barebone
+bareboned
+bareca
+barefaced
+barefacedly
+barefacedness
+barefit
+barefoot
+barefooted
+barehanded
+barehead
+bareheaded
+bareheadedness
+barelegged
+barely
+barenecked
+bareness
+barer
+baresark
+baresma
+baretta
+barff
+barfish
+barfly
+barful
+bargain
+bargainee
+bargainer
+bargainor
+bargainwise
+bargander
+barge
+bargeboard
+bargee
+bargeer
+bargeese
+bargehouse
+bargelike
+bargeload
+bargeman
+bargemaster
+barger
+bargh
+bargham
+barghest
+bargoose
+Bari
+bari
+baria
+baric
+barid
+barie
+barile
+barilla
+baring
+baris
+barish
+barit
+barite
+baritone
+barium
+bark
+barkbound
+barkcutter
+barkeeper
+barken
+barkentine
+barker
+barkery
+barkevikite
+barkevikitic
+barkey
+barkhan
+barking
+barkingly
+Barkinji
+barkle
+barkless
+barklyite
+barkometer
+barkpeel
+barkpeeler
+barkpeeling
+barksome
+barky
+barlafumble
+barlafummil
+barless
+barley
+barleybird
+barleybreak
+barleycorn
+barleyhood
+barleymow
+barleysick
+barling
+barlock
+barlow
+barm
+barmaid
+barman
+barmaster
+barmbrack
+barmcloth
+Barmecidal
+Barmecide
+barmkin
+barmote
+barmskin
+barmy
+barmybrained
+barn
+Barnabas
+Barnabite
+Barnaby
+barnacle
+Barnard
+barnard
+barnbrack
+Barnburner
+Barney
+barney
+barnful
+barnhardtite
+barnman
+barnstorm
+barnstormer
+barnstorming
+Barnumism
+Barnumize
+barny
+barnyard
+Baroco
+barocyclonometer
+barodynamic
+barodynamics
+barognosis
+barogram
+barograph
+barographic
+baroi
+barolo
+barology
+Barolong
+barometer
+barometric
+barometrical
+barometrically
+barometrograph
+barometrography
+barometry
+barometz
+baromotor
+baron
+baronage
+baroness
+baronet
+baronetage
+baronetcy
+baronethood
+baronetical
+baronetship
+barong
+Baronga
+baronial
+baronize
+baronry
+baronship
+barony
+Baroque
+baroque
+baroscope
+baroscopic
+baroscopical
+Barosma
+barosmin
+barotactic
+barotaxis
+barotaxy
+barothermograph
+barothermohygrograph
+baroto
+Barotse
+barouche
+barouchet
+Barouni
+baroxyton
+barpost
+barquantine
+barra
+barrabkie
+barrable
+barrabora
+barracan
+barrack
+barracker
+barraclade
+barracoon
+barracouta
+barracuda
+barrad
+barragan
+barrage
+barragon
+barramunda
+barramundi
+barranca
+barrandite
+barras
+barrator
+barratrous
+barratrously
+barratry
+barred
+barrel
+barrelage
+barreled
+barreler
+barrelet
+barrelful
+barrelhead
+barrelmaker
+barrelmaking
+barrelwise
+barren
+barrenly
+barrenness
+barrenwort
+barrer
+barret
+Barrett
+barrette
+barretter
+barricade
+barricader
+barricado
+barrico
+barrier
+barriguda
+barrigudo
+barrikin
+barriness
+barring
+Barrington
+Barringtonia
+Barrio
+barrio
+barrister
+barristerial
+barristership
+barristress
+barroom
+barrow
+barrowful
+Barrowist
+barrowman
+barrulee
+barrulet
+barrulety
+barruly
+Barry
+barry
+Barsac
+barse
+barsom
+Bart
+bartender
+bartending
+barter
+barterer
+barth
+barthite
+bartholinitis
+Bartholomean
+Bartholomew
+Bartholomewtide
+Bartholomite
+bartizan
+bartizaned
+Bartlemy
+Bartlett
+Barton
+barton
+Bartonella
+Bartonia
+Bartram
+Bartramia
+Bartramiaceae
+Bartramian
+Bartsia
+baru
+Baruch
+Barundi
+baruria
+barvel
+barwal
+barway
+barways
+barwise
+barwood
+barycenter
+barycentric
+barye
+baryecoia
+baryglossia
+barylalia
+barylite
+baryphonia
+baryphonic
+baryphony
+barysilite
+barysphere
+baryta
+barytes
+barythymia
+barytic
+barytine
+barytocalcite
+barytocelestine
+barytocelestite
+baryton
+barytone
+barytophyllite
+barytostrontianite
+barytosulphate
+bas
+basal
+basale
+basalia
+basally
+basalt
+basaltes
+basaltic
+basaltiform
+basaltine
+basaltoid
+basanite
+basaree
+Bascology
+bascule
+base
+baseball
+baseballdom
+baseballer
+baseboard
+baseborn
+basebred
+based
+basehearted
+baseheartedness
+baselard
+baseless
+baselessly
+baselessness
+baselike
+baseliner
+Basella
+Basellaceae
+basellaceous
+basely
+baseman
+basement
+basementward
+baseness
+basenji
+bases
+bash
+bashaw
+bashawdom
+bashawism
+bashawship
+bashful
+bashfully
+bashfulness
+Bashilange
+Bashkir
+bashlyk
+Bashmuric
+basial
+basialveolar
+basiarachnitis
+basiarachnoiditis
+basiate
+basiation
+Basibracteolate
+basibranchial
+basibranchiate
+basibregmatic
+basic
+basically
+basichromatic
+basichromatin
+basichromatinic
+basichromiole
+basicity
+basicranial
+basicytoparaplastin
+basidia
+basidial
+basidigital
+basidigitale
+basidiogenetic
+basidiolichen
+Basidiolichenes
+basidiomycete
+Basidiomycetes
+basidiomycetous
+basidiophore
+basidiospore
+basidiosporous
+basidium
+basidorsal
+basifacial
+basification
+basifier
+basifixed
+basifugal
+basify
+basigamous
+basigamy
+basigenic
+basigenous
+basiglandular
+basigynium
+basihyal
+basihyoid
+Basil
+basil
+basilar
+Basilarchia
+basilary
+basilateral
+basilemma
+basileus
+Basilian
+basilic
+Basilica
+basilica
+Basilicae
+basilical
+basilican
+basilicate
+basilicon
+Basilics
+Basilidian
+Basilidianism
+basilinna
+basiliscan
+basiliscine
+Basiliscus
+basilisk
+basilissa
+Basilosauridae
+Basilosaurus
+basilweed
+basilysis
+basilyst
+basimesostasis
+basin
+basinasal
+basinasial
+basined
+basinerved
+basinet
+basinlike
+basioccipital
+basion
+basiophitic
+basiophthalmite
+basiophthalmous
+basiotribe
+basiotripsy
+basiparachromatin
+basiparaplastin
+basipetal
+basiphobia
+basipodite
+basipoditic
+basipterygial
+basipterygium
+basipterygoid
+basiradial
+basirhinal
+basirostral
+basis
+basiscopic
+basisphenoid
+basisphenoidal
+basitemporal
+basiventral
+basivertebral
+bask
+basker
+Baskerville
+basket
+basketball
+basketballer
+basketful
+basketing
+basketmaker
+basketmaking
+basketry
+basketware
+basketwoman
+basketwood
+basketwork
+basketworm
+Baskish
+Baskonize
+Basoche
+Basoga
+basoid
+Basoko
+Basommatophora
+basommatophorous
+bason
+Basongo
+basophile
+basophilia
+basophilic
+basophilous
+basophobia
+basos
+basote
+Basque
+basque
+basqued
+basquine
+bass
+Bassa
+Bassalia
+Bassalian
+bassan
+bassanello
+bassanite
+bassara
+bassarid
+Bassaris
+Bassariscus
+bassarisk
+basset
+bassetite
+bassetta
+Bassia
+bassie
+bassine
+bassinet
+bassist
+bassness
+basso
+bassoon
+bassoonist
+bassorin
+bassus
+basswood
+Bast
+bast
+basta
+Bastaard
+Bastard
+bastard
+bastardism
+bastardization
+bastardize
+bastardliness
+bastardly
+bastardy
+baste
+basten
+baster
+bastide
+bastille
+bastinade
+bastinado
+basting
+bastion
+bastionary
+bastioned
+bastionet
+bastite
+bastnasite
+basto
+baston
+basurale
+Basuto
+Bat
+bat
+bataan
+batad
+Batak
+batakan
+bataleur
+Batan
+batara
+batata
+Batatas
+batatilla
+Batavi
+Batavian
+batch
+batcher
+bate
+batea
+bateau
+bateaux
+bated
+Batekes
+batel
+bateman
+batement
+bater
+Batetela
+batfish
+batfowl
+batfowler
+batfowling
+Bath
+bath
+Bathala
+bathe
+batheable
+bather
+bathetic
+bathflower
+bathhouse
+bathic
+bathing
+bathless
+bathman
+bathmic
+bathmism
+bathmotropic
+bathmotropism
+bathochromatic
+bathochromatism
+bathochrome
+bathochromic
+bathochromy
+bathoflore
+bathofloric
+batholite
+batholith
+batholithic
+batholitic
+bathometer
+Bathonian
+bathophobia
+bathorse
+bathos
+bathrobe
+bathroom
+bathroomed
+bathroot
+bathtub
+bathukolpian
+bathukolpic
+bathvillite
+bathwort
+bathyal
+bathyanesthesia
+bathybian
+bathybic
+bathybius
+bathycentesis
+bathychrome
+bathycolpian
+bathycolpic
+bathycurrent
+bathyesthesia
+bathygraphic
+bathyhyperesthesia
+bathyhypesthesia
+bathylimnetic
+bathylite
+bathylith
+bathylithic
+bathylitic
+bathymeter
+bathymetric
+bathymetrical
+bathymetrically
+bathymetry
+bathyorographical
+bathypelagic
+bathyplankton
+bathyseism
+bathysmal
+bathysophic
+bathysophical
+bathysphere
+bathythermograph
+Batidaceae
+batidaceous
+batik
+batiker
+batikulin
+batikuling
+bating
+batino
+Batis
+batiste
+batitinan
+batlan
+batlike
+batling
+batlon
+batman
+Batocrinidae
+Batocrinus
+Batodendron
+batoid
+Batoidei
+Batoka
+baton
+Batonga
+batonistic
+batonne
+batophobia
+Batrachia
+batrachian
+batrachiate
+Batrachidae
+Batrachium
+batrachoid
+Batrachoididae
+batrachophagous
+Batrachophidia
+batrachophobia
+batrachoplasty
+Batrachospermum
+bats
+batsman
+batsmanship
+batster
+batswing
+batt
+Batta
+batta
+battailous
+Battak
+Battakhin
+battalia
+battalion
+battarism
+battarismus
+battel
+batteler
+batten
+battener
+battening
+batter
+batterable
+battercake
+batterdock
+battered
+batterer
+batterfang
+batteried
+batterman
+battery
+batteryman
+battik
+batting
+battish
+battle
+battled
+battledore
+battlefield
+battleful
+battleground
+battlement
+battlemented
+battleplane
+battler
+battleship
+battlesome
+battlestead
+battlewagon
+battleward
+battlewise
+battological
+battologist
+battologize
+battology
+battue
+batty
+batukite
+batule
+Batussi
+Batwa
+batwing
+batyphone
+batz
+batzen
+bauble
+baublery
+baubling
+Baubo
+bauch
+bauchle
+bauckie
+bauckiebird
+baud
+baudekin
+baudrons
+Bauera
+Bauhinia
+baul
+bauleah
+Baume
+baumhauerite
+baun
+bauno
+Baure
+bauson
+bausond
+bauta
+bauxite
+bauxitite
+Bavarian
+bavaroy
+bavary
+bavenite
+baviaantje
+Bavian
+bavian
+baviere
+bavin
+Bavius
+bavoso
+baw
+bawarchi
+bawbee
+bawcock
+bawd
+bawdily
+bawdiness
+bawdry
+bawdship
+bawdyhouse
+bawl
+bawler
+bawley
+bawn
+Bawra
+bawtie
+baxter
+Baxterian
+Baxterianism
+baxtone
+bay
+Baya
+baya
+bayadere
+bayal
+bayamo
+Bayard
+bayard
+bayardly
+bayberry
+baybolt
+baybush
+baycuru
+bayed
+bayeta
+baygall
+bayhead
+bayish
+bayldonite
+baylet
+baylike
+bayman
+bayness
+Bayogoula
+bayok
+bayonet
+bayoneted
+bayoneteer
+bayou
+baywood
+bazaar
+baze
+Bazigar
+bazoo
+bazooka
+bazzite
+bdellid
+Bdellidae
+bdellium
+bdelloid
+Bdelloida
+Bdellostoma
+Bdellostomatidae
+Bdellostomidae
+bdellotomy
+Bdelloura
+Bdellouridae
+be
+Bea
+beach
+beachcomb
+beachcomber
+beachcombing
+beached
+beachhead
+beachlamar
+beachless
+beachman
+beachmaster
+beachward
+beachy
+beacon
+beaconage
+beaconless
+beaconwise
+bead
+beaded
+beader
+beadflush
+beadhouse
+beadily
+beadiness
+beading
+beadle
+beadledom
+beadlehood
+beadleism
+beadlery
+beadleship
+beadlet
+beadlike
+beadman
+beadroll
+beadrow
+beadsman
+beadswoman
+beadwork
+beady
+Beagle
+beagle
+beagling
+beak
+beaked
+beaker
+beakerful
+beakerman
+beakermen
+beakful
+beakhead
+beakiron
+beaklike
+beaky
+beal
+beala
+bealing
+beallach
+bealtared
+Bealtine
+Bealtuinn
+beam
+beamage
+beambird
+beamed
+beamer
+beamfilling
+beamful
+beamhouse
+beamily
+beaminess
+beaming
+beamingly
+beamish
+beamless
+beamlet
+beamlike
+beamman
+beamsman
+beamster
+beamwork
+beamy
+bean
+beanbag
+beanbags
+beancod
+beanery
+beanfeast
+beanfeaster
+beanfield
+beanie
+beano
+beansetter
+beanshooter
+beanstalk
+beant
+beanweed
+beany
+beaproned
+bear
+bearable
+bearableness
+bearably
+bearance
+bearbaiter
+bearbaiting
+bearbane
+bearberry
+bearbind
+bearbine
+bearcoot
+beard
+bearded
+bearder
+beardie
+bearding
+beardless
+beardlessness
+beardom
+beardtongue
+beardy
+bearer
+bearess
+bearfoot
+bearherd
+bearhide
+bearhound
+bearing
+bearish
+bearishly
+bearishness
+bearlet
+bearlike
+bearm
+bearship
+bearskin
+beartongue
+bearward
+bearwood
+bearwort
+beast
+beastbane
+beastdom
+beasthood
+beastie
+beastily
+beastish
+beastishness
+beastlike
+beastlily
+beastliness
+beastling
+beastlings
+beastly
+beastman
+beastship
+beat
+Beata
+beata
+beatable
+beatae
+beatee
+beaten
+beater
+beaterman
+beath
+beatific
+beatifical
+beatifically
+beatificate
+beatification
+beatify
+beatinest
+beating
+beatitude
+Beatrice
+Beatrix
+beatster
+beatus
+beau
+Beauclerc
+beaufin
+Beaufort
+beauish
+beauism
+Beaujolais
+Beaumontia
+Beaune
+beaupere
+beauseant
+beauship
+beauteous
+beauteously
+beauteousness
+beauti
+beautician
+beautied
+beautification
+beautifier
+beautiful
+beautifully
+beautifulness
+beautify
+beautihood
+beauty
+beautydom
+beautyship
+beaux
+beaver
+Beaverboard
+beaverboard
+beavered
+beaverette
+beaverish
+beaverism
+beaverite
+beaverize
+Beaverkill
+beaverkin
+beaverlike
+beaverpelt
+beaverroot
+beaverteen
+beaverwood
+beavery
+beback
+bebait
+beballed
+bebang
+bebannered
+bebar
+bebaron
+bebaste
+bebat
+bebathe
+bebatter
+bebay
+bebeast
+bebed
+bebeerine
+bebeeru
+bebelted
+bebilya
+bebite
+bebization
+beblain
+beblear
+bebled
+bebless
+beblister
+beblood
+bebloom
+beblotch
+beblubber
+bebog
+bebop
+beboss
+bebotch
+bebothered
+bebouldered
+bebrave
+bebreech
+bebrine
+bebrother
+bebrush
+bebump
+bebusy
+bebuttoned
+becall
+becalm
+becalmment
+becap
+becard
+becarpet
+becarve
+becassocked
+becater
+because
+beccafico
+becense
+bechained
+bechalk
+bechance
+becharm
+bechase
+bechatter
+bechauffeur
+becheck
+becher
+bechern
+bechignoned
+bechirp
+Bechtler
+Bechuana
+becircled
+becivet
+Beck
+beck
+beckelite
+becker
+becket
+Beckie
+beckiron
+beckon
+beckoner
+beckoning
+beckoningly
+Becky
+beclad
+beclamor
+beclamour
+beclang
+beclart
+beclasp
+beclatter
+beclaw
+becloak
+beclog
+beclothe
+becloud
+beclout
+beclown
+becluster
+becobweb
+becoiffed
+becollier
+becolme
+becolor
+becombed
+become
+becomes
+becoming
+becomingly
+becomingness
+becomma
+becompass
+becompliment
+becoom
+becoresh
+becost
+becousined
+becovet
+becoward
+becquerelite
+becram
+becramp
+becrampon
+becrawl
+becreep
+becrime
+becrimson
+becrinolined
+becripple
+becroak
+becross
+becrowd
+becrown
+becrush
+becrust
+becry
+becudgel
+becuffed
+becuiba
+becumber
+becuna
+becurl
+becurry
+becurse
+becurtained
+becushioned
+becut
+bed
+bedabble
+bedad
+bedaggered
+bedamn
+bedamp
+bedangled
+bedare
+bedark
+bedarken
+bedash
+bedaub
+bedawn
+beday
+bedaze
+bedazement
+bedazzle
+bedazzlement
+bedazzling
+bedazzlingly
+bedboard
+bedbug
+bedcap
+bedcase
+bedchair
+bedchamber
+bedclothes
+bedcord
+bedcover
+bedded
+bedder
+bedding
+bedead
+bedeaf
+bedeafen
+bedebt
+bedeck
+bedecorate
+bedeguar
+bedel
+beden
+bedene
+bedesman
+bedevil
+bedevilment
+bedew
+bedewer
+bedewoman
+bedfast
+bedfellow
+bedfellowship
+bedflower
+bedfoot
+Bedford
+bedframe
+bedgery
+bedgoer
+bedgown
+bediademed
+bediamonded
+bediaper
+bedight
+bedikah
+bedim
+bedimple
+bedin
+bedip
+bedirt
+bedirter
+bedirty
+bedismal
+bedizen
+bedizenment
+bedkey
+bedlam
+bedlamer
+Bedlamic
+bedlamism
+bedlamite
+bedlamitish
+bedlamize
+bedlar
+bedless
+bedlids
+bedmaker
+bedmaking
+bedman
+bedmate
+bedoctor
+bedog
+bedolt
+bedot
+bedote
+Bedouin
+Bedouinism
+bedouse
+bedown
+bedoyo
+bedpan
+bedplate
+bedpost
+bedquilt
+bedrabble
+bedraggle
+bedragglement
+bedrail
+bedral
+bedrape
+bedravel
+bedrench
+bedress
+bedribble
+bedrid
+bedridden
+bedriddenness
+bedrift
+bedright
+bedrip
+bedrivel
+bedrizzle
+bedrock
+bedroll
+bedroom
+bedrop
+bedrown
+bedrowse
+bedrug
+bedscrew
+bedsick
+bedside
+bedsite
+bedsock
+bedsore
+bedspread
+bedspring
+bedstaff
+bedstand
+bedstaves
+bedstead
+bedstock
+bedstraw
+bedstring
+bedtick
+bedticking
+bedtime
+bedub
+beduchess
+beduck
+beduke
+bedull
+bedumb
+bedunce
+bedunch
+bedung
+bedur
+bedusk
+bedust
+bedwarf
+bedway
+bedways
+bedwell
+bedye
+Bee
+bee
+beearn
+beebread
+beech
+beechdrops
+beechen
+beechnut
+beechwood
+beechwoods
+beechy
+beedged
+beedom
+beef
+beefeater
+beefer
+beefhead
+beefheaded
+beefily
+beefin
+beefiness
+beefish
+beefishness
+beefless
+beeflower
+beefsteak
+beeftongue
+beefwood
+beefy
+beegerite
+beehead
+beeheaded
+beeherd
+beehive
+beehouse
+beeish
+beeishness
+beek
+beekeeper
+beekeeping
+beekite
+Beekmantown
+beelbow
+beelike
+beeline
+beelol
+Beelzebub
+Beelzebubian
+Beelzebul
+beeman
+beemaster
+been
+beennut
+beer
+beerage
+beerbachite
+beerbibber
+beerhouse
+beerily
+beeriness
+beerish
+beerishly
+beermaker
+beermaking
+beermonger
+beerocracy
+Beerothite
+beerpull
+beery
+bees
+beest
+beestings
+beeswax
+beeswing
+beeswinged
+beet
+beeth
+Beethovenian
+Beethovenish
+Beethovian
+beetle
+beetled
+beetlehead
+beetleheaded
+beetler
+beetlestock
+beetlestone
+beetleweed
+beetmister
+beetrave
+beetroot
+beetrooty
+beety
+beeve
+beevish
+beeware
+beeway
+beeweed
+beewise
+beewort
+befall
+befame
+befamilied
+befamine
+befan
+befancy
+befanned
+befathered
+befavor
+befavour
+befeather
+beferned
+befetished
+befetter
+befezzed
+befiddle
+befilch
+befile
+befilleted
+befilmed
+befilth
+befinger
+befire
+befist
+befit
+befitting
+befittingly
+befittingness
+beflag
+beflannel
+beflap
+beflatter
+beflea
+befleck
+beflounce
+beflour
+beflout
+beflower
+beflum
+befluster
+befoam
+befog
+befool
+befoolment
+befop
+before
+beforehand
+beforeness
+beforested
+beforetime
+beforetimes
+befortune
+befoul
+befouler
+befoulment
+befountained
+befraught
+befreckle
+befreeze
+befreight
+befret
+befriend
+befriender
+befriendment
+befrill
+befringe
+befriz
+befrocked
+befrogged
+befrounce
+befrumple
+befuddle
+befuddlement
+befuddler
+befume
+befurbelowed
+befurred
+beg
+begabled
+begad
+begall
+begani
+begar
+begari
+begarlanded
+begarnish
+begartered
+begash
+begat
+begaud
+begaudy
+begay
+begaze
+begeck
+begem
+beget
+begettal
+begetter
+beggable
+beggar
+beggardom
+beggarer
+beggaress
+beggarhood
+beggarism
+beggarlike
+beggarliness
+beggarly
+beggarman
+beggarweed
+beggarwise
+beggarwoman
+beggary
+Beggiatoa
+Beggiatoaceae
+beggiatoaceous
+begging
+beggingly
+beggingwise
+Beghard
+begift
+begiggle
+begild
+begin
+beginger
+beginner
+beginning
+begird
+begirdle
+beglad
+beglamour
+beglare
+beglerbeg
+beglerbeglic
+beglerbegluc
+beglerbegship
+beglerbey
+beglic
+beglide
+beglitter
+beglobed
+begloom
+begloze
+begluc
+beglue
+begnaw
+bego
+begob
+begobs
+begoggled
+begohm
+begone
+begonia
+Begoniaceae
+begoniaceous
+Begoniales
+begorra
+begorry
+begotten
+begottenness
+begoud
+begowk
+begowned
+begrace
+begrain
+begrave
+begray
+begrease
+begreen
+begrett
+begrim
+begrime
+begrimer
+begroan
+begrown
+begrudge
+begrudgingly
+begruntle
+begrutch
+begrutten
+beguard
+beguess
+beguile
+beguileful
+beguilement
+beguiler
+beguiling
+beguilingly
+Beguin
+Beguine
+beguine
+begulf
+begum
+begun
+begunk
+begut
+behale
+behalf
+behallow
+behammer
+behap
+behatted
+behave
+behavior
+behavioral
+behaviored
+behaviorism
+behaviorist
+behavioristic
+behavioristically
+behead
+beheadal
+beheader
+beheadlined
+behear
+behears
+behearse
+behedge
+beheld
+behelp
+behemoth
+behen
+behenate
+behenic
+behest
+behind
+behinder
+behindhand
+behindsight
+behint
+behn
+behold
+beholdable
+beholden
+beholder
+beholding
+beholdingness
+behoney
+behoof
+behooped
+behoot
+behoove
+behooveful
+behoovefully
+behoovefulness
+behooves
+behooving
+behoovingly
+behorn
+behorror
+behowl
+behung
+behusband
+behymn
+behypocrite
+beice
+Beid
+beige
+being
+beingless
+beingness
+beinked
+beira
+beisa
+Beja
+bejabers
+bejade
+bejan
+bejant
+bejaundice
+bejazz
+bejel
+bejewel
+bejezebel
+bejig
+bejuggle
+bejumble
+bekah
+bekerchief
+bekick
+bekilted
+beking
+bekinkinite
+bekiss
+bekko
+beknave
+beknight
+beknit
+beknived
+beknotted
+beknottedly
+beknottedness
+beknow
+beknown
+Bel
+bel
+bela
+belabor
+belaced
+beladle
+belady
+belage
+belah
+Belait
+Belaites
+belam
+Belamcanda
+belanda
+belar
+belard
+belash
+belate
+belated
+belatedly
+belatedness
+belatticed
+belaud
+belauder
+belavendered
+belay
+belayer
+belch
+belcher
+beld
+beldam
+beldamship
+belderroot
+belduque
+beleaf
+beleaguer
+beleaguerer
+beleaguerment
+beleap
+beleave
+belecture
+beledgered
+belee
+belemnid
+belemnite
+Belemnites
+belemnitic
+Belemnitidae
+belemnoid
+Belemnoidea
+beletter
+belfried
+belfry
+belga
+Belgae
+Belgian
+Belgic
+Belgophile
+Belgrade
+Belgravia
+Belgravian
+Belial
+Belialic
+Belialist
+belibel
+belick
+belie
+belief
+beliefful
+belieffulness
+beliefless
+belier
+believability
+believable
+believableness
+believe
+believer
+believing
+believingly
+belight
+beliked
+Belili
+belimousined
+Belinda
+Belinuridae
+Belinurus
+belion
+beliquor
+Belis
+belite
+belitter
+belittle
+belittlement
+belittler
+belive
+bell
+Bella
+Bellabella
+Bellacoola
+belladonna
+bellarmine
+Bellatrix
+bellbind
+bellbird
+bellbottle
+bellboy
+belle
+belled
+belledom
+Belleek
+bellehood
+belleric
+Bellerophon
+Bellerophontidae
+belletrist
+belletristic
+bellflower
+bellhanger
+bellhanging
+bellhop
+bellhouse
+bellicism
+bellicose
+bellicosely
+bellicoseness
+bellicosity
+bellied
+belliferous
+belligerence
+belligerency
+belligerent
+belligerently
+belling
+bellipotent
+Bellis
+bellite
+bellmaker
+bellmaking
+bellman
+bellmanship
+bellmaster
+bellmouth
+bellmouthed
+Bellona
+Bellonian
+bellonion
+bellote
+Bellovaci
+bellow
+bellower
+bellows
+bellowsful
+bellowslike
+bellowsmaker
+bellowsmaking
+bellowsman
+bellpull
+belltail
+belltopper
+belltopperdom
+bellware
+bellwaver
+bellweed
+bellwether
+bellwind
+bellwine
+bellwood
+bellwort
+belly
+bellyache
+bellyband
+bellyer
+bellyfish
+bellyflaught
+bellyful
+bellying
+bellyland
+bellylike
+bellyman
+bellypiece
+bellypinch
+beloam
+beloeilite
+beloid
+belomancy
+Belone
+belonesite
+belong
+belonger
+belonging
+belonid
+Belonidae
+belonite
+belonoid
+belonosphaerite
+belord
+Belostoma
+Belostomatidae
+Belostomidae
+belout
+belove
+beloved
+below
+belowstairs
+belozenged
+Belshazzar
+Belshazzaresque
+belsire
+belt
+Beltane
+belted
+Beltene
+belter
+Beltian
+beltie
+beltine
+belting
+Beltir
+Beltis
+beltmaker
+beltmaking
+beltman
+belton
+beltwise
+Beluchi
+Belucki
+beluga
+belugite
+belute
+belve
+belvedere
+Belverdian
+bely
+belying
+belyingly
+belzebuth
+bema
+bemad
+bemadam
+bemaddening
+bemail
+bemaim
+bemajesty
+beman
+bemangle
+bemantle
+bemar
+bemartyr
+bemask
+bemaster
+bemat
+bemata
+bemaul
+bemazed
+Bemba
+Bembecidae
+Bembex
+bemeal
+bemean
+bemedaled
+bemedalled
+bementite
+bemercy
+bemingle
+beminstrel
+bemire
+bemirement
+bemirror
+bemirrorment
+bemist
+bemistress
+bemitered
+bemitred
+bemix
+bemoan
+bemoanable
+bemoaner
+bemoaning
+bemoaningly
+bemoat
+bemock
+bemoil
+bemoisten
+bemole
+bemolt
+bemonster
+bemoon
+bemotto
+bemoult
+bemouth
+bemuck
+bemud
+bemuddle
+bemuddlement
+bemuddy
+bemuffle
+bemurmur
+bemuse
+bemused
+bemusedly
+bemusement
+bemusk
+bemuslined
+bemuzzle
+Ben
+ben
+bena
+benab
+Benacus
+bename
+benami
+benamidar
+benasty
+benben
+bench
+benchboard
+bencher
+benchership
+benchfellow
+benchful
+benching
+benchland
+benchlet
+benchman
+benchwork
+benchy
+bencite
+bend
+benda
+bendability
+bendable
+bended
+bender
+bending
+bendingly
+bendlet
+bendsome
+bendwise
+bendy
+bene
+beneaped
+beneath
+beneception
+beneceptive
+beneceptor
+benedicite
+Benedict
+benedict
+Benedicta
+Benedictine
+Benedictinism
+benediction
+benedictional
+benedictionary
+benedictive
+benedictively
+benedictory
+Benedictus
+benedight
+benefaction
+benefactive
+benefactor
+benefactorship
+benefactory
+benefactress
+benefic
+benefice
+beneficed
+beneficeless
+beneficence
+beneficent
+beneficential
+beneficently
+beneficial
+beneficially
+beneficialness
+beneficiary
+beneficiaryship
+beneficiate
+beneficiation
+benefit
+benefiter
+beneighbored
+Benelux
+benempt
+benempted
+beneplacito
+benet
+Benetnasch
+benettle
+Beneventan
+Beneventana
+benevolence
+benevolent
+benevolently
+benevolentness
+benevolist
+beng
+Bengal
+Bengalese
+Bengali
+Bengalic
+bengaline
+Bengola
+Beni
+beni
+benight
+benighted
+benightedness
+benighten
+benighter
+benightmare
+benightment
+benign
+benignancy
+benignant
+benignantly
+benignity
+benignly
+Benin
+Benincasa
+benison
+benitoite
+benj
+Benjamin
+benjamin
+benjaminite
+Benjamite
+Benjy
+benjy
+Benkulen
+benmost
+benn
+benne
+bennel
+Bennet
+bennet
+Bennettitaceae
+bennettitaceous
+Bennettitales
+Bennettites
+bennetweed
+Benny
+benny
+beno
+benorth
+benote
+bensel
+bensh
+benshea
+benshee
+benshi
+Benson
+bent
+bentang
+benthal
+Benthamic
+Benthamism
+Benthamite
+benthic
+benthon
+benthonic
+benthos
+Bentincks
+bentiness
+benting
+Benton
+bentonite
+bentstar
+bentwood
+benty
+Benu
+benumb
+benumbed
+benumbedness
+benumbing
+benumbingly
+benumbment
+benward
+benweed
+benzacridine
+benzal
+benzalacetone
+benzalacetophenone
+benzalaniline
+benzalazine
+benzalcohol
+benzalcyanhydrin
+benzaldehyde
+benzaldiphenyl
+benzaldoxime
+benzalethylamine
+benzalhydrazine
+benzalphenylhydrazone
+benzalphthalide
+benzamide
+benzamido
+benzamine
+benzaminic
+benzamino
+benzanalgen
+benzanilide
+benzanthrone
+benzantialdoxime
+benzazide
+benzazimide
+benzazine
+benzazole
+benzbitriazole
+benzdiazine
+benzdifuran
+benzdioxazine
+benzdioxdiazine
+benzdioxtriazine
+Benzedrine
+benzein
+benzene
+benzenediazonium
+benzenoid
+benzenyl
+benzhydrol
+benzhydroxamic
+benzidine
+benzidino
+benzil
+benzilic
+benzimidazole
+benziminazole
+benzinduline
+benzine
+benzo
+benzoate
+benzoated
+benzoazurine
+benzobis
+benzocaine
+benzocoumaran
+benzodiazine
+benzodiazole
+benzoflavine
+benzofluorene
+benzofulvene
+benzofuran
+benzofuroquinoxaline
+benzofuryl
+benzoglycolic
+benzoglyoxaline
+benzohydrol
+benzoic
+benzoid
+benzoin
+benzoinated
+benzoiodohydrin
+benzol
+benzolate
+benzole
+benzolize
+benzomorpholine
+benzonaphthol
+benzonitrile
+benzonitrol
+benzoperoxide
+benzophenanthrazine
+benzophenanthroline
+benzophenazine
+benzophenol
+benzophenone
+benzophenothiazine
+benzophenoxazine
+benzophloroglucinol
+benzophosphinic
+benzophthalazine
+benzopinacone
+benzopyran
+benzopyranyl
+benzopyrazolone
+benzopyrylium
+benzoquinoline
+benzoquinone
+benzoquinoxaline
+benzosulphimide
+benzotetrazine
+benzotetrazole
+benzothiazine
+benzothiazole
+benzothiazoline
+benzothiodiazole
+benzothiofuran
+benzothiophene
+benzothiopyran
+benzotoluide
+benzotriazine
+benzotriazole
+benzotrichloride
+benzotrifuran
+benzoxate
+benzoxy
+benzoxyacetic
+benzoxycamphor
+benzoxyphenanthrene
+benzoyl
+benzoylate
+benzoylation
+benzoylformic
+benzoylglycine
+benzpinacone
+benzthiophen
+benztrioxazine
+benzyl
+benzylamine
+benzylic
+benzylidene
+benzylpenicillin
+beode
+Beothuk
+Beothukan
+Beowulf
+bepaid
+Bepaint
+bepale
+bepaper
+beparch
+beparody
+beparse
+bepart
+bepaste
+bepastured
+bepat
+bepatched
+bepaw
+bepearl
+bepelt
+bepen
+bepepper
+beperiwigged
+bepester
+bepewed
+bephilter
+bephrase
+bepicture
+bepiece
+bepierce
+bepile
+bepill
+bepillared
+bepimple
+bepinch
+bepistoled
+bepity
+beplague
+beplaided
+beplaster
+beplumed
+bepommel
+bepowder
+bepraise
+bepraisement
+bepraiser
+beprank
+bepray
+bepreach
+bepress
+bepretty
+bepride
+beprose
+bepuddle
+bepuff
+bepun
+bepurple
+bepuzzle
+bepuzzlement
+bequalm
+bequeath
+bequeathable
+bequeathal
+bequeather
+bequeathment
+bequest
+bequirtle
+bequote
+ber
+berain
+berairou
+berakah
+berake
+berakoth
+berapt
+berascal
+berat
+berate
+berattle
+beraunite
+beray
+berbamine
+Berber
+Berberi
+Berberian
+berberid
+Berberidaceae
+berberidaceous
+berberine
+Berberis
+berberry
+Berchemia
+Berchta
+berdache
+bere
+Berean
+bereason
+bereave
+bereavement
+bereaven
+bereaver
+bereft
+berend
+Berengaria
+Berengarian
+Berengarianism
+berengelite
+Berenice
+Bereshith
+beresite
+beret
+berewick
+berg
+bergalith
+Bergama
+Bergamask
+bergamiol
+Bergamo
+Bergamot
+bergamot
+bergander
+bergaptene
+berger
+berghaan
+berginization
+berginize
+berglet
+bergschrund
+Bergsonian
+Bergsonism
+bergut
+bergy
+bergylt
+berhyme
+Beri
+beribanded
+beribboned
+beriberi
+beriberic
+beride
+berigora
+beringed
+beringite
+beringleted
+berinse
+berith
+Berkeleian
+Berkeleianism
+Berkeleyism
+Berkeleyite
+berkelium
+berkovets
+berkowitz
+Berkshire
+berley
+berlin
+berline
+Berliner
+berlinite
+Berlinize
+berm
+Bermuda
+Bermudian
+bermudite
+Bern
+Bernard
+Bernardina
+Bernardine
+berne
+Bernese
+Bernice
+Bernicia
+bernicle
+Bernie
+Berninesque
+Bernoullian
+berobed
+Beroe
+Beroida
+Beroidae
+beroll
+Berossos
+berouged
+beround
+berrendo
+berret
+berri
+berried
+berrier
+berrigan
+berrugate
+berry
+berrybush
+berryless
+berrylike
+berrypicker
+berrypicking
+berseem
+berserk
+berserker
+Bersiamite
+Bersil
+Bert
+Bertat
+Berteroa
+berth
+Bertha
+berthage
+berthed
+berther
+berthierite
+berthing
+Berthold
+Bertholletia
+Bertie
+Bertolonia
+Bertram
+bertram
+Bertrand
+bertrandite
+bertrum
+beruffed
+beruffled
+berust
+bervie
+berycid
+Berycidae
+beryciform
+berycine
+berycoid
+Berycoidea
+berycoidean
+Berycoidei
+Berycomorphi
+beryl
+berylate
+beryllia
+berylline
+berylliosis
+beryllium
+berylloid
+beryllonate
+beryllonite
+beryllosis
+Berytidae
+Beryx
+berzelianite
+berzeliite
+bes
+besa
+besagne
+besaiel
+besaint
+besan
+besanctify
+besauce
+bescab
+bescarf
+bescatter
+bescent
+bescorch
+bescorn
+bescoundrel
+bescour
+bescourge
+bescramble
+bescrape
+bescratch
+bescrawl
+bescreen
+bescribble
+bescurf
+bescurvy
+bescutcheon
+beseam
+besee
+beseech
+beseecher
+beseeching
+beseechingly
+beseechingness
+beseechment
+beseem
+beseeming
+beseemingly
+beseemingness
+beseemliness
+beseemly
+beseen
+beset
+besetment
+besetter
+besetting
+beshackle
+beshade
+beshadow
+beshag
+beshake
+beshame
+beshawled
+beshear
+beshell
+beshield
+beshine
+beshiver
+beshlik
+beshod
+beshout
+beshow
+beshower
+beshrew
+beshriek
+beshrivel
+beshroud
+besiclometer
+beside
+besides
+besiege
+besieged
+besiegement
+besieger
+besieging
+besiegingly
+besigh
+besilver
+besin
+besing
+besiren
+besit
+beslab
+beslap
+beslash
+beslave
+beslaver
+besleeve
+beslime
+beslimer
+beslings
+beslipper
+beslobber
+beslow
+beslubber
+beslur
+beslushed
+besmear
+besmearer
+besmell
+besmile
+besmirch
+besmircher
+besmirchment
+besmoke
+besmooth
+besmother
+besmouch
+besmudge
+besmut
+besmutch
+besnare
+besneer
+besnivel
+besnow
+besnuff
+besodden
+besogne
+besognier
+besoil
+besom
+besomer
+besonnet
+besoot
+besoothe
+besoothement
+besot
+besotment
+besotted
+besottedly
+besottedness
+besotting
+besottingly
+besought
+besoul
+besour
+bespangle
+bespate
+bespatter
+bespatterer
+bespatterment
+bespawl
+bespeak
+bespeakable
+bespeaker
+bespecked
+bespeckle
+bespecklement
+bespectacled
+besped
+bespeech
+bespeed
+bespell
+bespelled
+bespend
+bespete
+bespew
+bespice
+bespill
+bespin
+bespirit
+bespit
+besplash
+besplatter
+besplit
+bespoke
+bespoken
+bespot
+bespottedness
+bespouse
+bespout
+bespray
+bespread
+besprent
+besprinkle
+besprinkler
+bespurred
+besputter
+bespy
+besqueeze
+besquib
+besra
+Bess
+Bessarabian
+Besselian
+Bessemer
+bessemer
+Bessemerize
+bessemerize
+Bessera
+Bessi
+Bessie
+Bessy
+best
+bestab
+bestain
+bestamp
+bestar
+bestare
+bestarve
+bestatued
+bestay
+bestayed
+bestead
+besteer
+bestench
+bester
+bestial
+bestialism
+bestialist
+bestiality
+bestialize
+bestially
+bestiarian
+bestiarianism
+bestiary
+bestick
+bestill
+bestink
+bestir
+bestness
+bestock
+bestore
+bestorm
+bestove
+bestow
+bestowable
+bestowage
+bestowal
+bestower
+bestowing
+bestowment
+bestraddle
+bestrapped
+bestraught
+bestraw
+bestreak
+bestream
+bestrew
+bestrewment
+bestride
+bestripe
+bestrode
+bestubbled
+bestuck
+bestud
+besugar
+besuit
+besully
+beswarm
+besweatered
+besweeten
+beswelter
+beswim
+beswinge
+beswitch
+bet
+Beta
+beta
+betacism
+betacismus
+betafite
+betag
+betail
+betailor
+betaine
+betainogen
+betalk
+betallow
+betangle
+betanglement
+betask
+betassel
+betatron
+betattered
+betaxed
+betear
+beteela
+beteem
+betel
+Betelgeuse
+Beth
+beth
+bethabara
+bethankit
+bethel
+Bethesda
+bethflower
+bethink
+Bethlehem
+Bethlehemite
+bethought
+bethrall
+bethreaten
+bethroot
+Bethuel
+bethumb
+bethump
+bethunder
+bethwack
+Bethylidae
+betide
+betimber
+betimes
+betinge
+betipple
+betire
+betis
+betitle
+betocsin
+betoil
+betoken
+betokener
+betone
+betongue
+Betonica
+betony
+betorcin
+betorcinol
+betoss
+betowel
+betowered
+Betoya
+Betoyan
+betrace
+betrail
+betrample
+betrap
+betravel
+betray
+betrayal
+betrayer
+betrayment
+betread
+betrend
+betrim
+betrinket
+betroth
+betrothal
+betrothed
+betrothment
+betrough
+betrousered
+betrumpet
+betrunk
+Betsey
+Betsileos
+Betsimisaraka
+betso
+Betsy
+Betta
+betted
+better
+betterer
+bettergates
+bettering
+betterly
+betterment
+bettermost
+betterness
+betters
+Bettina
+Bettine
+betting
+bettong
+bettonga
+Bettongia
+bettor
+Betty
+betty
+betuckered
+Betula
+Betulaceae
+betulaceous
+betulin
+betulinamaric
+betulinic
+betulinol
+Betulites
+beturbaned
+betusked
+betutor
+betutored
+betwattled
+between
+betweenbrain
+betweenity
+betweenmaid
+betweenness
+betweenwhiles
+betwine
+betwit
+betwixen
+betwixt
+beudantite
+Beulah
+beuniformed
+bevatron
+beveil
+bevel
+beveled
+beveler
+bevelled
+bevelment
+bevenom
+bever
+beverage
+Beverly
+beverse
+bevesseled
+bevesselled
+beveto
+bevillain
+bevined
+bevoiled
+bevomit
+bevue
+bevy
+bewail
+bewailable
+bewailer
+bewailing
+bewailingly
+bewailment
+bewaitered
+bewall
+beware
+bewash
+bewaste
+bewater
+beweary
+beweep
+beweeper
+bewelcome
+bewelter
+bewept
+bewest
+bewet
+bewhig
+bewhiskered
+bewhisper
+bewhistle
+bewhite
+bewhiten
+bewidow
+bewig
+bewigged
+bewilder
+bewildered
+bewilderedly
+bewilderedness
+bewildering
+bewilderingly
+bewilderment
+bewimple
+bewinged
+bewinter
+bewired
+bewitch
+bewitchedness
+bewitcher
+bewitchery
+bewitchful
+bewitching
+bewitchingly
+bewitchingness
+bewitchment
+bewith
+bewizard
+bework
+beworm
+beworn
+beworry
+beworship
+bewrap
+bewrathed
+bewray
+bewrayer
+bewrayingly
+bewrayment
+bewreath
+bewreck
+bewrite
+bey
+beydom
+beylic
+beylical
+beyond
+beyrichite
+beyship
+Bezaleel
+Bezaleelian
+bezant
+bezantee
+bezanty
+bezel
+bezesteen
+bezetta
+bezique
+bezoar
+bezoardic
+bezonian
+Bezpopovets
+bezzi
+bezzle
+bezzo
+bhabar
+Bhadon
+Bhaga
+bhagavat
+bhagavata
+bhaiachari
+bhaiyachara
+bhakta
+bhakti
+bhalu
+bhandar
+bhandari
+bhang
+bhangi
+Bhar
+bhara
+bharal
+Bharata
+bhat
+bhava
+Bhavani
+bheesty
+bhikku
+bhikshu
+Bhil
+Bhili
+Bhima
+Bhojpuri
+bhoosa
+Bhotia
+Bhotiya
+Bhowani
+bhoy
+Bhumij
+bhungi
+bhungini
+bhut
+Bhutanese
+Bhutani
+bhutatathata
+Bhutia
+biabo
+biacetyl
+biacetylene
+biacid
+biacromial
+biacuminate
+biacuru
+bialate
+biallyl
+bialveolar
+Bianca
+Bianchi
+bianchite
+bianco
+biangular
+biangulate
+biangulated
+biangulous
+bianisidine
+biannual
+biannually
+biannulate
+biarchy
+biarcuate
+biarcuated
+biarticular
+biarticulate
+biarticulated
+bias
+biasness
+biasteric
+biaswise
+biatomic
+biauricular
+biauriculate
+biaxal
+biaxial
+biaxiality
+biaxially
+biaxillary
+bib
+bibacious
+bibacity
+bibasic
+bibation
+bibb
+bibber
+bibble
+bibbler
+bibbons
+bibcock
+bibenzyl
+bibi
+Bibio
+bibionid
+Bibionidae
+bibiri
+bibitory
+Bible
+bibless
+Biblic
+Biblical
+Biblicality
+Biblically
+Biblicism
+Biblicist
+Biblicistic
+Biblicolegal
+Biblicoliterary
+Biblicopsychological
+biblioclasm
+biblioclast
+bibliofilm
+bibliogenesis
+bibliognost
+bibliognostic
+bibliogony
+bibliograph
+bibliographer
+bibliographic
+bibliographical
+bibliographically
+bibliographize
+bibliography
+biblioklept
+bibliokleptomania
+bibliokleptomaniac
+bibliolater
+bibliolatrous
+bibliolatry
+bibliological
+bibliologist
+bibliology
+bibliomancy
+bibliomane
+bibliomania
+bibliomaniac
+bibliomaniacal
+bibliomanian
+bibliomanianism
+bibliomanism
+bibliomanist
+bibliopegic
+bibliopegist
+bibliopegistic
+bibliopegy
+bibliophage
+bibliophagic
+bibliophagist
+bibliophagous
+bibliophile
+bibliophilic
+bibliophilism
+bibliophilist
+bibliophilistic
+bibliophily
+bibliophobia
+bibliopolar
+bibliopole
+bibliopolery
+bibliopolic
+bibliopolical
+bibliopolically
+bibliopolism
+bibliopolist
+bibliopolistic
+bibliopoly
+bibliosoph
+bibliotaph
+bibliotaphic
+bibliothec
+bibliotheca
+bibliothecal
+bibliothecarial
+bibliothecarian
+bibliothecary
+bibliotherapeutic
+bibliotherapist
+bibliotherapy
+bibliothetic
+bibliotic
+bibliotics
+bibliotist
+Biblism
+Biblist
+biblus
+biborate
+bibracteate
+bibracteolate
+bibulosity
+bibulous
+bibulously
+bibulousness
+Bibulus
+bicalcarate
+bicameral
+bicameralism
+bicamerist
+bicapitate
+bicapsular
+bicarbonate
+bicarbureted
+bicarinate
+bicarpellary
+bicarpellate
+bicaudal
+bicaudate
+Bice
+bice
+bicellular
+bicentenary
+bicentennial
+bicephalic
+bicephalous
+biceps
+bicetyl
+bichir
+bichloride
+bichord
+bichromate
+bichromatic
+bichromatize
+bichrome
+bichromic
+bichy
+biciliate
+biciliated
+bicipital
+bicipitous
+bicircular
+bicirrose
+bick
+bicker
+bickerer
+bickern
+biclavate
+biclinium
+bicollateral
+bicollaterality
+bicolligate
+bicolor
+bicolored
+bicolorous
+biconcave
+biconcavity
+bicondylar
+bicone
+biconic
+biconical
+biconically
+biconjugate
+biconsonantal
+biconvex
+bicorn
+bicornate
+bicorne
+bicorned
+bicornous
+bicornuate
+bicornuous
+bicornute
+bicorporal
+bicorporate
+bicorporeal
+bicostate
+bicrenate
+bicrescentic
+bicrofarad
+bicron
+bicrural
+bicursal
+bicuspid
+bicuspidate
+bicyanide
+bicycle
+bicycler
+bicyclic
+bicyclism
+bicyclist
+bicyclo
+bicycloheptane
+bicylindrical
+bid
+bidactyl
+bidactyle
+bidactylous
+bidar
+bidarka
+bidcock
+biddable
+biddableness
+biddably
+biddance
+Biddelian
+bidder
+bidding
+Biddulphia
+Biddulphiaceae
+Biddy
+biddy
+bide
+Bidens
+bident
+bidental
+bidentate
+bidented
+bidential
+bidenticulate
+bider
+bidet
+bidigitate
+bidimensional
+biding
+bidirectional
+bidiurnal
+Bidpai
+bidri
+biduous
+bieberite
+Biedermeier
+bield
+bieldy
+bielectrolysis
+bielenite
+Bielid
+Bielorouss
+bien
+bienly
+bienness
+biennia
+biennial
+biennially
+biennium
+bier
+bierbalk
+biethnic
+bietle
+bifacial
+bifanged
+bifara
+bifarious
+bifariously
+bifer
+biferous
+biff
+biffin
+bifid
+bifidate
+bifidated
+bifidity
+bifidly
+bifilar
+bifilarly
+bifistular
+biflabellate
+biflagellate
+biflecnode
+biflected
+biflex
+biflorate
+biflorous
+bifluoride
+bifocal
+bifoil
+bifold
+bifolia
+bifoliate
+bifoliolate
+bifolium
+biforked
+biform
+biformed
+biformity
+biforous
+bifront
+bifrontal
+bifronted
+bifurcal
+bifurcate
+bifurcated
+bifurcately
+bifurcation
+big
+biga
+bigamic
+bigamist
+bigamistic
+bigamize
+bigamous
+bigamously
+bigamy
+bigarade
+bigaroon
+bigarreau
+bigbloom
+bigemina
+bigeminal
+bigeminate
+bigeminated
+bigeminum
+bigener
+bigeneric
+bigential
+bigeye
+bigg
+biggah
+biggen
+bigger
+biggest
+biggin
+biggish
+biggonet
+bigha
+bighead
+bighearted
+bigheartedness
+bighorn
+bight
+biglandular
+biglenoid
+biglot
+bigmouth
+bigmouthed
+bigness
+Bignonia
+Bignoniaceae
+bignoniaceous
+bignoniad
+bignou
+bigoniac
+bigonial
+bigot
+bigoted
+bigotedly
+bigotish
+bigotry
+bigotty
+bigroot
+bigthatch
+biguanide
+biguttate
+biguttulate
+bigwig
+bigwigged
+bigwiggedness
+bigwiggery
+bigwiggism
+Bihai
+Biham
+bihamate
+Bihari
+biharmonic
+bihourly
+bihydrazine
+bija
+bijasal
+bijou
+bijouterie
+bijoux
+bijugate
+bijugular
+bike
+bikh
+bikhaconitine
+bikini
+Bikol
+Bikram
+Bikukulla
+Bilaan
+bilabe
+bilabial
+bilabiate
+bilalo
+bilamellar
+bilamellate
+bilamellated
+bilaminar
+bilaminate
+bilaminated
+bilander
+bilateral
+bilateralism
+bilaterality
+bilaterally
+bilateralness
+Bilati
+bilberry
+bilbie
+bilbo
+bilboquet
+bilby
+bilch
+bilcock
+bildar
+bilders
+bile
+bilestone
+bilge
+bilgy
+Bilharzia
+bilharzial
+bilharziasis
+bilharzic
+bilharziosis
+bilianic
+biliary
+biliate
+biliation
+bilic
+bilicyanin
+bilifaction
+biliferous
+bilification
+bilifuscin
+bilify
+bilihumin
+bilimbi
+bilimbing
+biliment
+Bilin
+bilinear
+bilineate
+bilingual
+bilingualism
+bilingually
+bilinguar
+bilinguist
+bilinigrin
+bilinite
+bilio
+bilious
+biliously
+biliousness
+biliprasin
+bilipurpurin
+bilipyrrhin
+bilirubin
+bilirubinemia
+bilirubinic
+bilirubinuria
+biliteral
+biliteralism
+bilith
+bilithon
+biliverdic
+biliverdin
+bilixanthin
+bilk
+bilker
+Bill
+bill
+billa
+billable
+billabong
+billback
+billbeetle
+Billbergia
+billboard
+billbroking
+billbug
+billed
+biller
+billet
+billeter
+billethead
+billeting
+billetwood
+billety
+billfish
+billfold
+billhead
+billheading
+billholder
+billhook
+billian
+billiard
+billiardist
+billiardly
+billiards
+Billie
+Billiken
+billikin
+billing
+billingsgate
+billion
+billionaire
+billionism
+billionth
+billitonite
+Billjim
+billman
+billon
+billot
+billow
+billowiness
+billowy
+billposter
+billposting
+billsticker
+billsticking
+Billy
+billy
+billyboy
+billycan
+billycock
+billyer
+billyhood
+billywix
+bilo
+bilobated
+bilobe
+bilobed
+bilobiate
+bilobular
+bilocation
+bilocellate
+bilocular
+biloculate
+Biloculina
+biloculine
+bilophodont
+Biloxi
+bilsh
+Bilskirnir
+bilsted
+biltong
+biltongue
+Bim
+bimaculate
+bimaculated
+bimalar
+Bimana
+bimanal
+bimane
+bimanous
+bimanual
+bimanually
+bimarginate
+bimarine
+bimastic
+bimastism
+bimastoid
+bimasty
+bimaxillary
+bimbil
+Bimbisara
+bimeby
+bimensal
+bimester
+bimestrial
+bimetalic
+bimetallism
+bimetallist
+bimetallistic
+bimillenary
+bimillennium
+bimillionaire
+Bimini
+Bimmeler
+bimodal
+bimodality
+bimolecular
+bimonthly
+bimotored
+bimotors
+bimucronate
+bimuscular
+bin
+binal
+binaphthyl
+binarium
+binary
+binate
+binately
+bination
+binational
+binaural
+binauricular
+binbashi
+bind
+binder
+bindery
+bindheimite
+binding
+bindingly
+bindingness
+bindle
+bindlet
+bindoree
+bindweb
+bindweed
+bindwith
+bindwood
+bine
+binervate
+bineweed
+bing
+binge
+bingey
+binghi
+bingle
+bingo
+bingy
+binh
+Bini
+biniodide
+Binitarian
+Binitarianism
+bink
+binman
+binna
+binnacle
+binning
+binnite
+binnogue
+bino
+binocle
+binocular
+binocularity
+binocularly
+binoculate
+binodal
+binode
+binodose
+binodous
+binomenclature
+binomial
+binomialism
+binomially
+binominal
+binominated
+binominous
+binormal
+binotic
+binotonous
+binous
+binoxalate
+binoxide
+bint
+bintangor
+binturong
+binuclear
+binucleate
+binucleated
+binucleolate
+binukau
+Binzuru
+biobibliographical
+biobibliography
+bioblast
+bioblastic
+biocatalyst
+biocellate
+biocentric
+biochemic
+biochemical
+biochemically
+biochemics
+biochemist
+biochemistry
+biochemy
+biochore
+bioclimatic
+bioclimatology
+biocoenose
+biocoenosis
+biocoenotic
+biocycle
+biod
+biodynamic
+biodynamical
+biodynamics
+biodyne
+bioecologic
+bioecological
+bioecologically
+bioecologist
+bioecology
+biogen
+biogenase
+biogenesis
+biogenesist
+biogenetic
+biogenetical
+biogenetically
+biogenetics
+biogenous
+biogeny
+biogeochemistry
+biogeographic
+biogeographical
+biogeographically
+biogeography
+biognosis
+biograph
+biographee
+biographer
+biographic
+biographical
+biographically
+biographist
+biographize
+biography
+bioherm
+biokinetics
+biolinguistics
+biolith
+biologese
+biologic
+biological
+biologically
+biologicohumanistic
+biologism
+biologist
+biologize
+biology
+bioluminescence
+bioluminescent
+biolysis
+biolytic
+biomagnetic
+biomagnetism
+biomathematics
+biome
+biomechanical
+biomechanics
+biometeorology
+biometer
+biometric
+biometrical
+biometrically
+biometrician
+biometricist
+biometrics
+biometry
+biomicroscopy
+bion
+bionergy
+bionomic
+bionomical
+bionomically
+bionomics
+bionomist
+bionomy
+biophagism
+biophagous
+biophagy
+biophilous
+biophore
+biophotophone
+biophysical
+biophysicochemical
+biophysics
+biophysiography
+biophysiological
+biophysiologist
+biophysiology
+biophyte
+bioplasm
+bioplasmic
+bioplast
+bioplastic
+bioprecipitation
+biopsic
+biopsy
+biopsychic
+biopsychical
+biopsychological
+biopsychologist
+biopsychology
+biopyribole
+bioral
+biorbital
+biordinal
+bioreaction
+biorgan
+bios
+bioscope
+bioscopic
+bioscopy
+biose
+biosis
+biosocial
+biosociological
+biosphere
+biostatic
+biostatical
+biostatics
+biostatistics
+biosterin
+biosterol
+biostratigraphy
+biosynthesis
+biosynthetic
+biosystematic
+biosystematics
+biosystematist
+biosystematy
+Biota
+biota
+biotaxy
+biotechnics
+biotic
+biotical
+biotics
+biotin
+biotite
+biotitic
+biotome
+biotomy
+biotope
+biotype
+biotypic
+biovular
+biovulate
+bioxalate
+bioxide
+bipack
+bipaleolate
+Bipaliidae
+Bipalium
+bipalmate
+biparasitic
+biparental
+biparietal
+biparous
+biparted
+bipartible
+bipartient
+bipartile
+bipartisan
+bipartisanship
+bipartite
+bipartitely
+bipartition
+biparty
+bipaschal
+bipectinate
+bipectinated
+biped
+bipedal
+bipedality
+bipedism
+bipeltate
+bipennate
+bipennated
+bipenniform
+biperforate
+bipersonal
+bipetalous
+biphase
+biphasic
+biphenol
+biphenyl
+biphenylene
+bipinnaria
+bipinnate
+bipinnated
+bipinnately
+bipinnatifid
+bipinnatiparted
+bipinnatipartite
+bipinnatisect
+bipinnatisected
+biplanal
+biplanar
+biplane
+biplicate
+biplicity
+biplosion
+biplosive
+bipod
+bipolar
+bipolarity
+bipolarize
+Bipont
+Bipontine
+biporose
+biporous
+biprism
+biprong
+bipunctal
+bipunctate
+bipunctual
+bipupillate
+bipyramid
+bipyramidal
+bipyridine
+bipyridyl
+biquadrantal
+biquadrate
+biquadratic
+biquarterly
+biquartz
+biquintile
+biracial
+biracialism
+biradial
+biradiate
+biradiated
+biramous
+birational
+birch
+birchbark
+birchen
+birching
+birchman
+birchwood
+bird
+birdbander
+birdbanding
+birdbath
+birdberry
+birdcall
+birdcatcher
+birdcatching
+birdclapper
+birdcraft
+birddom
+birdeen
+birder
+birdglue
+birdhood
+birdhouse
+birdie
+birdikin
+birding
+birdland
+birdless
+birdlet
+birdlike
+birdlime
+birdling
+birdlore
+birdman
+birdmouthed
+birdnest
+birdnester
+birdseed
+birdstone
+birdweed
+birdwise
+birdwoman
+birdy
+birectangular
+birefracting
+birefraction
+birefractive
+birefringence
+birefringent
+bireme
+biretta
+Birgus
+biri
+biriba
+birimose
+birk
+birken
+Birkenhead
+Birkenia
+Birkeniidae
+birkie
+birkremite
+birl
+birle
+birler
+birlie
+birlieman
+birlinn
+birma
+Birmingham
+Birminghamize
+birn
+birny
+Biron
+birostrate
+birostrated
+birotation
+birotatory
+birr
+birse
+birsle
+birsy
+birth
+birthbed
+birthday
+birthland
+birthless
+birthmark
+birthmate
+birthnight
+birthplace
+birthright
+birthroot
+birthstone
+birthstool
+birthwort
+birthy
+bis
+bisabol
+bisaccate
+bisacromial
+bisalt
+Bisaltae
+bisantler
+bisaxillary
+bisbeeite
+biscacha
+Biscanism
+Biscayan
+Biscayanism
+biscayen
+Biscayner
+bischofite
+biscotin
+biscuit
+biscuiting
+biscuitlike
+biscuitmaker
+biscuitmaking
+biscuitroot
+biscuitry
+bisdiapason
+bisdimethylamino
+bisect
+bisection
+bisectional
+bisectionally
+bisector
+bisectrices
+bisectrix
+bisegment
+biseptate
+biserial
+biserially
+biseriate
+biseriately
+biserrate
+bisetose
+bisetous
+bisexed
+bisext
+bisexual
+bisexualism
+bisexuality
+bisexually
+bisexuous
+bisglyoxaline
+Bishareen
+Bishari
+Bisharin
+bishop
+bishopdom
+bishopess
+bishopful
+bishophood
+bishopless
+bishoplet
+bishoplike
+bishopling
+bishopric
+bishopship
+bishopweed
+bisiliac
+bisilicate
+bisiliquous
+bisimine
+bisinuate
+bisinuation
+bisischiadic
+bisischiatic
+Bisley
+bislings
+bismar
+Bismarck
+Bismarckian
+Bismarckianism
+bismarine
+bismerpund
+bismillah
+bismite
+Bismosol
+bismuth
+bismuthal
+bismuthate
+bismuthic
+bismuthide
+bismuthiferous
+bismuthine
+bismuthinite
+bismuthite
+bismuthous
+bismuthyl
+bismutite
+bismutoplagionite
+bismutosmaltite
+bismutosphaerite
+bisnaga
+bison
+bisonant
+bisontine
+bisphenoid
+bispinose
+bispinous
+bispore
+bisporous
+bisque
+bisquette
+bissext
+bissextile
+bisson
+bistate
+bistephanic
+bister
+bistered
+bistetrazole
+bisti
+bistipular
+bistipulate
+bistipuled
+bistort
+Bistorta
+bistournage
+bistoury
+bistratal
+bistratose
+bistriate
+bistriazole
+bistro
+bisubstituted
+bisubstitution
+bisulcate
+bisulfid
+bisulphate
+bisulphide
+bisulphite
+bisyllabic
+bisyllabism
+bisymmetric
+bisymmetrical
+bisymmetrically
+bisymmetry
+bit
+bitable
+bitangent
+bitangential
+bitanhol
+bitartrate
+bitbrace
+bitch
+bite
+bitemporal
+bitentaculate
+biter
+biternate
+biternately
+bitesheep
+bitewing
+bitheism
+Bithynian
+biti
+biting
+bitingly
+bitingness
+Bitis
+bitless
+bito
+bitolyl
+bitonality
+bitreadle
+bitripartite
+bitripinnatifid
+bitriseptate
+bitrochanteric
+bitstock
+bitstone
+bitt
+bitted
+bitten
+bitter
+bitterbark
+bitterblain
+bitterbloom
+bitterbur
+bitterbush
+bitterful
+bitterhead
+bitterhearted
+bitterheartedness
+bittering
+bitterish
+bitterishness
+bitterless
+bitterling
+bitterly
+bittern
+bitterness
+bitternut
+bitterroot
+bitters
+bittersweet
+bitterweed
+bitterwood
+bitterworm
+bitterwort
+bitthead
+bittie
+Bittium
+bittock
+bitty
+bitubercular
+bituberculate
+bituberculated
+Bitulithic
+bitulithic
+bitume
+bitumed
+bitumen
+bituminate
+bituminiferous
+bituminization
+bituminize
+bituminoid
+bituminous
+bitwise
+bityite
+bitypic
+biune
+biunial
+biunity
+biunivocal
+biurate
+biurea
+biuret
+bivalence
+bivalency
+bivalent
+bivalve
+bivalved
+Bivalvia
+bivalvian
+bivalvous
+bivalvular
+bivariant
+bivariate
+bivascular
+bivaulted
+bivector
+biventer
+biventral
+biverbal
+bivinyl
+bivious
+bivittate
+bivocal
+bivocalized
+bivoltine
+bivoluminous
+bivouac
+biwa
+biweekly
+biwinter
+Bixa
+Bixaceae
+bixaceous
+bixbyite
+bixin
+biyearly
+biz
+bizardite
+bizarre
+bizarrely
+bizarreness
+Bizen
+bizet
+bizonal
+bizone
+Bizonia
+bizygomatic
+bizz
+Bjorne
+blab
+blabber
+blabberer
+blachong
+black
+blackacre
+blackamoor
+blackback
+blackball
+blackballer
+blackband
+Blackbeard
+blackbelly
+blackberry
+blackbine
+blackbird
+blackbirder
+blackbirding
+blackboard
+blackboy
+blackbreast
+blackbush
+blackbutt
+blackcap
+blackcoat
+blackcock
+blackdamp
+blacken
+blackener
+blackening
+blacker
+blacketeer
+blackey
+blackeyes
+blackface
+Blackfeet
+blackfellow
+blackfellows
+blackfin
+blackfire
+blackfish
+blackfisher
+blackfishing
+Blackfoot
+blackfoot
+Blackfriars
+blackguard
+blackguardism
+blackguardize
+blackguardly
+blackguardry
+Blackhander
+blackhead
+blackheads
+blackheart
+blackhearted
+blackheartedness
+blackie
+blacking
+blackish
+blackishly
+blackishness
+blackit
+blackjack
+blackland
+blackleg
+blackleggery
+blacklegism
+blacklegs
+blackly
+blackmail
+blackmailer
+blackneb
+blackneck
+blackness
+blacknob
+blackout
+blackpoll
+blackroot
+blackseed
+blackshirted
+blacksmith
+blacksmithing
+blackstick
+blackstrap
+blacktail
+blackthorn
+blacktongue
+blacktree
+blackwash
+blackwasher
+blackwater
+blackwood
+blackwork
+blackwort
+blacky
+blad
+bladder
+bladderet
+bladderless
+bladderlike
+bladdernose
+bladdernut
+bladderpod
+bladderseed
+bladderweed
+bladderwort
+bladdery
+blade
+bladebone
+bladed
+bladelet
+bladelike
+blader
+bladesmith
+bladewise
+blading
+bladish
+blady
+bladygrass
+blae
+blaeberry
+blaeness
+blaewort
+blaff
+blaffert
+blaflum
+blah
+blahlaut
+blain
+Blaine
+Blair
+blair
+blairmorite
+Blake
+blake
+blakeberyed
+blamable
+blamableness
+blamably
+blame
+blamed
+blameful
+blamefully
+blamefulness
+blameless
+blamelessly
+blamelessness
+blamer
+blameworthiness
+blameworthy
+blaming
+blamingly
+blan
+blanc
+blanca
+blancard
+Blanch
+blanch
+blancher
+blanching
+blanchingly
+blancmange
+blancmanger
+blanco
+bland
+blanda
+Blandfordia
+blandiloquence
+blandiloquious
+blandiloquous
+blandish
+blandisher
+blandishing
+blandishingly
+blandishment
+blandly
+blandness
+blank
+blankard
+blankbook
+blanked
+blankeel
+blanket
+blanketed
+blanketeer
+blanketflower
+blanketing
+blanketless
+blanketmaker
+blanketmaking
+blanketry
+blanketweed
+blankety
+blanking
+blankish
+Blankit
+blankite
+blankly
+blankness
+blanky
+blanque
+blanquillo
+blare
+Blarina
+blarney
+blarneyer
+blarnid
+blarny
+blart
+blas
+blase
+blash
+blashy
+Blasia
+blaspheme
+blasphemer
+blasphemous
+blasphemously
+blasphemousness
+blasphemy
+blast
+blasted
+blastema
+blastemal
+blastematic
+blastemic
+blaster
+blastful
+blasthole
+blastid
+blastie
+blasting
+blastment
+blastocarpous
+blastocheme
+blastochyle
+blastocoele
+blastocolla
+blastocyst
+blastocyte
+blastoderm
+blastodermatic
+blastodermic
+blastodisk
+blastogenesis
+blastogenetic
+blastogenic
+blastogeny
+blastogranitic
+blastoid
+Blastoidea
+blastoma
+blastomata
+blastomere
+blastomeric
+Blastomyces
+blastomycete
+Blastomycetes
+blastomycetic
+blastomycetous
+blastomycosis
+blastomycotic
+blastoneuropore
+Blastophaga
+blastophitic
+blastophoral
+blastophore
+blastophoric
+blastophthoria
+blastophthoric
+blastophyllum
+blastoporal
+blastopore
+blastoporic
+blastoporphyritic
+blastosphere
+blastospheric
+blastostylar
+blastostyle
+blastozooid
+blastplate
+blastula
+blastulae
+blastular
+blastulation
+blastule
+blasty
+blat
+blatancy
+blatant
+blatantly
+blate
+blately
+blateness
+blather
+blatherer
+blatherskite
+blathery
+blatjang
+Blatta
+blatta
+Blattariae
+blatter
+blatterer
+blatti
+blattid
+Blattidae
+blattiform
+Blattodea
+blattoid
+Blattoidea
+blaubok
+Blaugas
+blauwbok
+blaver
+blaw
+blawort
+blay
+Blayne
+blaze
+blazer
+blazing
+blazingly
+blazon
+blazoner
+blazoning
+blazonment
+blazonry
+blazy
+bleaberry
+bleach
+bleachability
+bleachable
+bleached
+bleacher
+bleacherite
+bleacherman
+bleachery
+bleachfield
+bleachground
+bleachhouse
+bleaching
+bleachman
+bleachworks
+bleachyard
+bleak
+bleakish
+bleakly
+bleakness
+bleaky
+blear
+bleared
+blearedness
+bleareye
+bleariness
+blearness
+bleary
+bleat
+bleater
+bleating
+bleatingly
+bleaty
+bleb
+blebby
+blechnoid
+Blechnum
+bleck
+blee
+bleed
+bleeder
+bleeding
+bleekbok
+bleery
+bleeze
+bleezy
+blellum
+blemish
+blemisher
+blemishment
+Blemmyes
+blench
+blencher
+blenching
+blenchingly
+blencorn
+blend
+blendcorn
+blende
+blended
+blender
+blending
+blendor
+blendure
+blendwater
+blennadenitis
+blennemesis
+blennenteria
+blennenteritis
+blenniid
+Blenniidae
+blenniiform
+Blenniiformes
+blennioid
+Blennioidea
+blennocele
+blennocystitis
+blennoemesis
+blennogenic
+blennogenous
+blennoid
+blennoma
+blennometritis
+blennophlogisma
+blennophlogosis
+blennophthalmia
+blennoptysis
+blennorrhagia
+blennorrhagic
+blennorrhea
+blennorrheal
+blennorrhinia
+blennosis
+blennostasis
+blennostatic
+blennothorax
+blennotorrhea
+blennuria
+blenny
+blennymenitis
+blent
+bleo
+blephara
+blepharadenitis
+blepharal
+blepharanthracosis
+blepharedema
+blepharelcosis
+blepharemphysema
+Blephariglottis
+blepharism
+blepharitic
+blepharitis
+blepharoadenitis
+blepharoadenoma
+blepharoatheroma
+blepharoblennorrhea
+blepharocarcinoma
+Blepharocera
+Blepharoceridae
+blepharochalasis
+blepharochromidrosis
+blepharoclonus
+blepharocoloboma
+blepharoconjunctivitis
+blepharodiastasis
+blepharodyschroia
+blepharohematidrosis
+blepharolithiasis
+blepharomelasma
+blepharoncosis
+blepharoncus
+blepharophimosis
+blepharophryplasty
+blepharophthalmia
+blepharophyma
+blepharoplast
+blepharoplastic
+blepharoplasty
+blepharoplegia
+blepharoptosis
+blepharopyorrhea
+blepharorrhaphy
+blepharospasm
+blepharospath
+blepharosphincterectomy
+blepharostat
+blepharostenosis
+blepharosymphysis
+blepharosyndesmitis
+blepharosynechia
+blepharotomy
+blepharydatis
+Blephillia
+blesbok
+blesbuck
+bless
+blessed
+blessedly
+blessedness
+blesser
+blessing
+blessingly
+blest
+blet
+bletheration
+Bletia
+Bletilla
+blewits
+blibe
+blick
+blickey
+Blighia
+blight
+blightbird
+blighted
+blighter
+blighting
+blightingly
+blighty
+blimbing
+blimp
+blimy
+blind
+blindage
+blindball
+blinded
+blindedly
+blinder
+blindeyes
+blindfast
+blindfish
+blindfold
+blindfolded
+blindfoldedness
+blindfolder
+blindfoldly
+blinding
+blindingly
+blindish
+blindless
+blindling
+blindly
+blindness
+blindstory
+blindweed
+blindworm
+blink
+blinkard
+blinked
+blinker
+blinkered
+blinking
+blinkingly
+blinks
+blinky
+blinter
+blintze
+blip
+bliss
+blissful
+blissfully
+blissfulness
+blissless
+blissom
+blister
+blistered
+blistering
+blisteringly
+blisterweed
+blisterwort
+blistery
+blite
+blithe
+blithebread
+blitheful
+blithefully
+blithehearted
+blithelike
+blithely
+blithemeat
+blithen
+blitheness
+blither
+blithering
+blithesome
+blithesomely
+blithesomeness
+blitter
+Blitum
+blitz
+blitzbuggy
+blitzkrieg
+blizz
+blizzard
+blizzardly
+blizzardous
+blizzardy
+blo
+bloat
+bloated
+bloatedness
+bloater
+bloating
+blob
+blobbed
+blobber
+blobby
+bloc
+block
+blockade
+blockader
+blockage
+blockbuster
+blocked
+blocker
+blockhead
+blockheaded
+blockheadedly
+blockheadedness
+blockheadish
+blockheadishness
+blockheadism
+blockholer
+blockhouse
+blockiness
+blocking
+blockish
+blockishly
+blockishness
+blocklayer
+blocklike
+blockmaker
+blockmaking
+blockman
+blockpate
+blockship
+blocky
+blodite
+bloke
+blolly
+blomstrandine
+blonde
+blondeness
+blondine
+blood
+bloodalley
+bloodalp
+bloodbeat
+bloodberry
+bloodbird
+bloodcurdler
+bloodcurdling
+blooddrop
+blooddrops
+blooded
+bloodfin
+bloodflower
+bloodguilt
+bloodguiltiness
+bloodguiltless
+bloodguilty
+bloodhound
+bloodied
+bloodily
+bloodiness
+bloodleaf
+bloodless
+bloodlessly
+bloodlessness
+bloodletter
+bloodletting
+bloodline
+bloodmobile
+bloodmonger
+bloodnoun
+bloodripe
+bloodripeness
+bloodroot
+bloodshed
+bloodshedder
+bloodshedding
+bloodshot
+bloodshotten
+bloodspiller
+bloodspilling
+bloodstain
+bloodstained
+bloodstainedness
+bloodstanch
+bloodstock
+bloodstone
+bloodstroke
+bloodsuck
+bloodsucker
+bloodsucking
+bloodthirst
+bloodthirster
+bloodthirstily
+bloodthirstiness
+bloodthirsting
+bloodthirsty
+bloodweed
+bloodwite
+bloodwood
+bloodworm
+bloodwort
+bloodworthy
+bloody
+bloodybones
+blooey
+bloom
+bloomage
+bloomer
+Bloomeria
+bloomerism
+bloomers
+bloomery
+bloomfell
+blooming
+bloomingly
+bloomingness
+bloomkin
+bloomless
+Bloomsburian
+Bloomsbury
+bloomy
+bloop
+blooper
+blooping
+blore
+blosmy
+blossom
+blossombill
+blossomed
+blossomhead
+blossomless
+blossomry
+blossomtime
+blossomy
+blot
+blotch
+blotched
+blotchy
+blotless
+blotter
+blottesque
+blottesquely
+blotting
+blottingly
+blotto
+blotty
+bloubiskop
+blouse
+bloused
+blousing
+blout
+blow
+blowback
+blowball
+blowcock
+blowdown
+blowen
+blower
+blowfish
+blowfly
+blowgun
+blowhard
+blowhole
+blowiness
+blowing
+blowings
+blowiron
+blowlamp
+blowline
+blown
+blowoff
+blowout
+blowpipe
+blowpoint
+blowproof
+blowspray
+blowth
+blowtorch
+blowtube
+blowup
+blowy
+blowze
+blowzed
+blowzing
+blowzy
+blub
+blubber
+blubberer
+blubbering
+blubberingly
+blubberman
+blubberous
+blubbery
+blucher
+bludgeon
+bludgeoned
+bludgeoneer
+bludgeoner
+blue
+blueback
+bluebead
+Bluebeard
+bluebeard
+Bluebeardism
+bluebell
+bluebelled
+blueberry
+bluebill
+bluebird
+blueblaw
+bluebonnet
+bluebook
+bluebottle
+bluebreast
+bluebuck
+bluebush
+bluebutton
+bluecap
+bluecoat
+bluecup
+bluefish
+bluegill
+bluegown
+bluegrass
+bluehearted
+bluehearts
+blueing
+bluejack
+bluejacket
+bluejoint
+blueleg
+bluelegs
+bluely
+blueness
+bluenose
+Bluenoser
+blueprint
+blueprinter
+bluer
+blues
+bluesides
+bluestem
+bluestocking
+bluestockingish
+bluestockingism
+bluestone
+bluestoner
+bluet
+bluethroat
+bluetongue
+bluetop
+blueweed
+bluewing
+bluewood
+bluey
+bluff
+bluffable
+bluffer
+bluffly
+bluffness
+bluffy
+bluggy
+bluing
+bluish
+bluishness
+bluism
+Blumea
+blunder
+blunderbuss
+blunderer
+blunderful
+blunderhead
+blunderheaded
+blunderheadedness
+blundering
+blunderingly
+blundersome
+blunge
+blunger
+blunk
+blunker
+blunks
+blunnen
+blunt
+blunter
+blunthead
+blunthearted
+bluntie
+bluntish
+bluntly
+bluntness
+blup
+blur
+blurb
+blurbist
+blurred
+blurredness
+blurrer
+blurry
+blurt
+blush
+blusher
+blushful
+blushfully
+blushfulness
+blushiness
+blushing
+blushingly
+blushless
+blushwort
+blushy
+bluster
+blusteration
+blusterer
+blustering
+blusteringly
+blusterous
+blusterously
+blustery
+blype
+bo
+boa
+Boaedon
+boagane
+Boanbura
+Boanerges
+boanergism
+boar
+boarcite
+board
+boardable
+boarder
+boarding
+boardinghouse
+boardlike
+boardly
+boardman
+boardwalk
+boardy
+boarfish
+boarhound
+boarish
+boarishly
+boarishness
+boarship
+boarskin
+boarspear
+boarstaff
+boarwood
+boast
+boaster
+boastful
+boastfully
+boastfulness
+boasting
+boastive
+boastless
+boat
+boatable
+boatage
+boatbill
+boatbuilder
+boatbuilding
+boater
+boatfalls
+boatful
+boathead
+boatheader
+boathouse
+boatie
+boating
+boatkeeper
+boatless
+boatlike
+boatlip
+boatload
+boatloader
+boatloading
+boatly
+boatman
+boatmanship
+boatmaster
+boatowner
+boatsetter
+boatshop
+boatside
+boatsman
+boatswain
+boattail
+boatward
+boatwise
+boatwoman
+boatwright
+Bob
+bob
+boba
+bobac
+Bobadil
+Bobadilian
+Bobadilish
+Bobadilism
+bobbed
+bobber
+bobbery
+Bobbie
+bobbin
+bobbiner
+bobbinet
+bobbing
+Bobbinite
+bobbinwork
+bobbish
+bobbishly
+bobble
+Bobby
+bobby
+bobcat
+bobcoat
+bobeche
+bobfly
+bobierrite
+bobization
+bobjerom
+bobo
+bobolink
+bobotie
+bobsled
+bobsleigh
+bobstay
+bobtail
+bobtailed
+bobwhite
+bobwood
+bocaccio
+bocal
+bocardo
+bocasine
+bocca
+boccale
+boccarella
+boccaro
+bocce
+Bocconia
+boce
+bocedization
+Boche
+bocher
+Bochism
+bock
+bockerel
+bockeret
+bocking
+bocoy
+bod
+bodach
+bodacious
+bodaciously
+bode
+bodeful
+bodega
+bodement
+boden
+bodenbenderite
+boder
+bodewash
+bodge
+bodger
+bodgery
+bodhi
+bodhisattva
+bodice
+bodiced
+bodicemaker
+bodicemaking
+bodied
+bodier
+bodieron
+bodikin
+bodiless
+bodilessness
+bodiliness
+bodily
+bodiment
+boding
+bodingly
+bodkin
+bodkinwise
+bodle
+Bodleian
+Bodo
+bodock
+Bodoni
+body
+bodybending
+bodybuilder
+bodyguard
+bodyhood
+bodyless
+bodymaker
+bodymaking
+bodyplate
+bodywise
+bodywood
+bodywork
+Boebera
+Boedromion
+Boehmenism
+Boehmenist
+Boehmenite
+Boehmeria
+boeotarch
+Boeotian
+Boeotic
+Boer
+Boerdom
+Boerhavia
+Boethian
+Boethusian
+bog
+boga
+bogan
+bogard
+bogart
+bogberry
+bogey
+bogeyman
+boggart
+boggin
+bogginess
+boggish
+boggle
+bogglebo
+boggler
+boggy
+boghole
+bogie
+bogieman
+bogier
+Bogijiab
+bogland
+boglander
+bogle
+bogledom
+boglet
+bogman
+bogmire
+Bogo
+bogo
+Bogomil
+Bogomile
+Bogomilian
+bogong
+Bogota
+bogsucker
+bogtrot
+bogtrotter
+bogtrotting
+bogue
+bogum
+bogus
+bogusness
+bogway
+bogwood
+bogwort
+bogy
+bogydom
+bogyism
+bogyland
+Bohairic
+bohawn
+bohea
+Bohemia
+Bohemian
+Bohemianism
+bohemium
+bohereen
+bohireen
+boho
+bohor
+bohunk
+boid
+Boidae
+Boii
+Boiko
+boil
+boilable
+boildown
+boiled
+boiler
+boilerful
+boilerhouse
+boilerless
+boilermaker
+boilermaking
+boilerman
+boilersmith
+boilerworks
+boilery
+boiling
+boilinglike
+boilingly
+boilover
+boily
+Bois
+boist
+boisterous
+boisterously
+boisterousness
+bojite
+bojo
+bokadam
+bokard
+bokark
+boke
+Bokhara
+Bokharan
+bokom
+bola
+Bolag
+bolar
+Bolboxalis
+bold
+bolden
+Bolderian
+boldhearted
+boldine
+boldly
+boldness
+boldo
+Boldu
+bole
+bolection
+bolectioned
+boled
+boleite
+Bolelia
+bolelike
+bolero
+Boletaceae
+boletaceous
+bolete
+Boletus
+boleweed
+bolewort
+bolide
+bolimba
+bolis
+bolivar
+bolivarite
+bolivia
+Bolivian
+boliviano
+bolk
+boll
+Bollandist
+bollard
+bolled
+boller
+bolling
+bollock
+bollworm
+bolly
+Bolo
+bolo
+Bologna
+Bolognan
+Bolognese
+bolograph
+bolographic
+bolographically
+bolography
+Boloism
+boloman
+bolometer
+bolometric
+boloney
+boloroot
+Bolshevik
+Bolsheviki
+Bolshevikian
+Bolshevism
+Bolshevist
+Bolshevistic
+Bolshevistically
+Bolshevize
+Bolshie
+bolson
+bolster
+bolsterer
+bolsterwork
+bolt
+boltage
+boltant
+boltcutter
+boltel
+bolter
+bolthead
+boltheader
+boltheading
+bolthole
+bolti
+bolting
+boltless
+boltlike
+boltmaker
+boltmaking
+Boltonia
+boltonite
+boltrope
+boltsmith
+boltstrake
+boltuprightness
+boltwork
+bolus
+Bolyaian
+bom
+boma
+Bomarea
+bomb
+bombable
+Bombacaceae
+bombacaceous
+bombard
+bombarde
+bombardelle
+bombarder
+bombardier
+bombardment
+bombardon
+bombast
+bombaster
+bombastic
+bombastically
+bombastry
+Bombax
+Bombay
+bombazet
+bombazine
+bombed
+bomber
+bombiccite
+Bombidae
+bombilate
+bombilation
+Bombinae
+bombinate
+bombination
+bombo
+bombola
+bombonne
+bombous
+bombproof
+bombshell
+bombsight
+Bombus
+bombycid
+Bombycidae
+bombyciform
+Bombycilla
+Bombycillidae
+Bombycina
+bombycine
+Bombyliidae
+Bombyx
+Bon
+bon
+bonaci
+bonagh
+bonaght
+bonair
+bonairly
+bonairness
+bonally
+bonang
+bonanza
+Bonapartean
+Bonapartism
+Bonapartist
+Bonasa
+bonasus
+bonaventure
+Bonaveria
+bonavist
+Bonbo
+bonbon
+bonce
+bond
+bondage
+bondager
+bondar
+bonded
+Bondelswarts
+bonder
+bonderman
+bondfolk
+bondholder
+bondholding
+bonding
+bondless
+bondman
+bondmanship
+bondsman
+bondstone
+bondswoman
+bonduc
+bondwoman
+bone
+boneache
+bonebinder
+boneblack
+bonebreaker
+boned
+bonedog
+bonefish
+boneflower
+bonehead
+boneheaded
+boneless
+bonelessly
+bonelessness
+bonelet
+bonelike
+Bonellia
+boner
+boneset
+bonesetter
+bonesetting
+boneshaker
+boneshaw
+bonetail
+bonewood
+bonework
+bonewort
+Boney
+bonfire
+bong
+Bongo
+bongo
+bonhomie
+Boni
+boniata
+Boniface
+bonification
+boniform
+bonify
+boniness
+boninite
+bonitarian
+bonitary
+bonito
+bonk
+bonnaz
+bonnet
+bonneted
+bonneter
+bonnethead
+bonnetless
+bonnetlike
+bonnetman
+bonnibel
+Bonnie
+bonnily
+bonniness
+Bonny
+bonny
+bonnyclabber
+bonnyish
+bonnyvis
+Bononian
+bonsai
+bonspiel
+bontebok
+bontebuck
+bontequagga
+Bontok
+bonus
+bonxie
+bony
+bonyfish
+bonze
+bonzer
+bonzery
+bonzian
+boo
+boob
+boobery
+boobily
+boobook
+booby
+boobyalla
+boobyish
+boobyism
+bood
+boodie
+boodle
+boodledom
+boodleism
+boodleize
+boodler
+boody
+boof
+booger
+boogiewoogie
+boohoo
+boojum
+book
+bookable
+bookbinder
+bookbindery
+bookbinding
+bookboard
+bookcase
+bookcraft
+bookdealer
+bookdom
+booked
+booker
+bookery
+bookfold
+bookful
+bookholder
+bookhood
+bookie
+bookiness
+booking
+bookish
+bookishly
+bookishness
+bookism
+bookkeeper
+bookkeeping
+bookland
+bookless
+booklet
+booklike
+bookling
+booklore
+booklover
+bookmaker
+bookmaking
+Bookman
+bookman
+bookmark
+bookmarker
+bookmate
+bookmobile
+bookmonger
+bookplate
+bookpress
+bookrack
+bookrest
+bookroom
+bookseller
+booksellerish
+booksellerism
+bookselling
+bookshelf
+bookshop
+bookstack
+bookstall
+bookstand
+bookstore
+bookward
+bookwards
+bookways
+bookwise
+bookwork
+bookworm
+bookwright
+booky
+bool
+Boolian
+booly
+boolya
+boom
+boomable
+boomage
+boomah
+boomboat
+boomdas
+boomer
+boomerang
+booming
+boomingly
+boomless
+boomlet
+boomorah
+boomslang
+boomslange
+boomster
+boomy
+boon
+boondock
+boondocks
+boondoggle
+boondoggler
+Boone
+boonfellow
+boongary
+boonk
+boonless
+Boophilus
+boopis
+boor
+boorish
+boorishly
+boorishness
+boort
+boose
+boost
+booster
+boosterism
+boosy
+boot
+bootblack
+bootboy
+booted
+bootee
+booter
+bootery
+Bootes
+bootful
+booth
+boother
+Boothian
+boothite
+bootholder
+boothose
+Bootid
+bootied
+bootikin
+booting
+bootjack
+bootlace
+bootleg
+bootlegger
+bootlegging
+bootless
+bootlessly
+bootlessness
+bootlick
+bootlicker
+bootmaker
+bootmaking
+boots
+bootstrap
+booty
+bootyless
+booze
+boozed
+boozer
+boozily
+booziness
+boozy
+bop
+bopeep
+boppist
+bopyrid
+Bopyridae
+bopyridian
+Bopyrus
+bor
+bora
+borable
+borachio
+boracic
+boraciferous
+boracous
+borage
+Boraginaceae
+boraginaceous
+Borago
+Borak
+borak
+boral
+Boran
+Borana
+Borani
+borasca
+borasque
+Borassus
+borate
+borax
+Borboridae
+Borborus
+borborygmic
+borborygmus
+bord
+bordage
+bordar
+bordarius
+Bordeaux
+bordel
+bordello
+border
+bordered
+borderer
+Borderies
+bordering
+borderism
+borderland
+borderlander
+borderless
+borderline
+bordermark
+Borderside
+bordroom
+bordure
+bordured
+bore
+boreable
+boread
+Boreades
+boreal
+borealis
+borean
+Boreas
+borecole
+boredom
+boree
+boreen
+boregat
+borehole
+Boreiad
+boreism
+borele
+borer
+boresome
+Boreus
+borg
+borgh
+borghalpenny
+Borghese
+borh
+boric
+borickite
+boride
+borine
+boring
+boringly
+boringness
+Borinqueno
+Boris
+borish
+borism
+bority
+borize
+borlase
+born
+borne
+Bornean
+Borneo
+borneol
+borning
+bornite
+bornitic
+bornyl
+Boro
+boro
+Borocaine
+borocalcite
+borocarbide
+borocitrate
+borofluohydric
+borofluoric
+borofluoride
+borofluorin
+boroglycerate
+boroglyceride
+boroglycerine
+borolanite
+boron
+boronatrocalcite
+Boronia
+boronic
+borophenol
+borophenylic
+Bororo
+Bororoan
+borosalicylate
+borosalicylic
+borosilicate
+borosilicic
+borotungstate
+borotungstic
+borough
+boroughlet
+boroughmaster
+boroughmonger
+boroughmongering
+boroughmongery
+boroughship
+borowolframic
+borracha
+borrel
+Borrelia
+Borrelomycetaceae
+Borreria
+Borrichia
+Borromean
+Borrovian
+borrow
+borrowable
+borrower
+borrowing
+borsch
+borscht
+borsholder
+borsht
+borstall
+bort
+bortsch
+borty
+bortz
+Boruca
+Borussian
+borwort
+boryl
+Borzicactus
+borzoi
+Bos
+Bosc
+boscage
+bosch
+boschbok
+Boschneger
+boschvark
+boschveld
+bose
+Boselaphus
+boser
+bosh
+Boshas
+bosher
+Bosjesman
+bosjesman
+bosk
+bosker
+bosket
+boskiness
+bosky
+bosn
+Bosniac
+Bosniak
+Bosnian
+Bosnisch
+bosom
+bosomed
+bosomer
+bosomy
+Bosporan
+Bosporanic
+Bosporian
+bosporus
+boss
+bossage
+bossdom
+bossed
+bosselated
+bosselation
+bosser
+bosset
+bossiness
+bossing
+bossism
+bosslet
+bossship
+bossy
+bostangi
+bostanji
+bosthoon
+Boston
+boston
+Bostonese
+Bostonian
+bostonite
+bostrychid
+Bostrychidae
+bostrychoid
+bostrychoidal
+bostryx
+bosun
+Boswellia
+Boswellian
+Boswelliana
+Boswellism
+Boswellize
+bot
+bota
+botanic
+botanical
+botanically
+botanist
+botanize
+botanizer
+botanomancy
+botanophile
+botanophilist
+botany
+botargo
+Botaurinae
+Botaurus
+botch
+botched
+botchedly
+botcher
+botcherly
+botchery
+botchily
+botchiness
+botchka
+botchy
+bote
+Botein
+botella
+boterol
+botfly
+both
+bother
+botheration
+botherer
+botherheaded
+botherment
+bothersome
+bothlike
+Bothnian
+Bothnic
+bothrenchyma
+Bothriocephalus
+Bothriocidaris
+Bothriolepis
+bothrium
+Bothrodendron
+bothropic
+Bothrops
+bothros
+bothsided
+bothsidedness
+bothway
+bothy
+Botocudo
+botonee
+botong
+Botrychium
+Botrydium
+Botryllidae
+Botryllus
+botryogen
+botryoid
+botryoidal
+botryoidally
+botryolite
+Botryomyces
+botryomycoma
+botryomycosis
+botryomycotic
+Botryopteriaceae
+botryopterid
+Botryopteris
+botryose
+botryotherapy
+Botrytis
+bott
+bottekin
+Botticellian
+bottine
+bottle
+bottlebird
+bottled
+bottleflower
+bottleful
+bottlehead
+bottleholder
+bottlelike
+bottlemaker
+bottlemaking
+bottleman
+bottleneck
+bottlenest
+bottlenose
+bottler
+bottling
+bottom
+bottomchrome
+bottomed
+bottomer
+bottoming
+bottomless
+bottomlessly
+bottomlessness
+bottommost
+bottomry
+bottstick
+botuliform
+botulin
+botulinum
+botulism
+botulismus
+bouchal
+bouchaleen
+boucharde
+bouche
+boucher
+boucherism
+boucherize
+bouchette
+boud
+boudoir
+bouffancy
+bouffant
+Bougainvillaea
+Bougainvillea
+Bougainvillia
+Bougainvilliidae
+bougar
+bouge
+bouget
+bough
+boughed
+boughless
+boughpot
+bought
+boughten
+boughy
+bougie
+bouillabaisse
+bouillon
+bouk
+boukit
+boulangerite
+Boulangism
+Boulangist
+boulder
+boulderhead
+bouldering
+bouldery
+boule
+boulevard
+boulevardize
+boultel
+boulter
+boulterer
+boun
+bounce
+bounceable
+bounceably
+bouncer
+bouncing
+bouncingly
+bound
+boundable
+boundary
+bounded
+boundedly
+boundedness
+bounden
+bounder
+bounding
+boundingly
+boundless
+boundlessly
+boundlessness
+boundly
+boundness
+bounteous
+bounteously
+bounteousness
+bountied
+bountiful
+bountifully
+bountifulness
+bountith
+bountree
+bounty
+bountyless
+bouquet
+bourasque
+Bourbon
+bourbon
+Bourbonesque
+Bourbonian
+Bourbonism
+Bourbonist
+bourbonize
+bourd
+bourder
+bourdon
+bourette
+bourg
+bourgeois
+bourgeoise
+bourgeoisie
+bourgeoisitic
+Bourignian
+Bourignianism
+Bourignianist
+Bourignonism
+Bourignonist
+bourn
+bournless
+bournonite
+bourock
+Bourout
+bourse
+bourtree
+bouse
+bouser
+Boussingaultia
+boussingaultite
+boustrophedon
+boustrophedonic
+bousy
+bout
+boutade
+Bouteloua
+bouto
+boutonniere
+boutylka
+Bouvardia
+bouw
+bovarism
+bovarysm
+bovate
+bovenland
+bovicide
+boviculture
+bovid
+Bovidae
+boviform
+bovine
+bovinely
+bovinity
+Bovista
+bovoid
+bovovaccination
+bovovaccine
+bow
+bowable
+bowback
+bowbells
+bowbent
+bowboy
+Bowdichia
+bowdlerism
+bowdlerization
+bowdlerize
+bowed
+bowedness
+bowel
+boweled
+bowelless
+bowellike
+bowels
+bowenite
+bower
+bowerbird
+bowerlet
+bowermaiden
+bowermay
+bowerwoman
+Bowery
+bowery
+Boweryish
+bowet
+bowfin
+bowgrace
+bowhead
+bowie
+bowieful
+bowing
+bowingly
+bowk
+bowkail
+bowker
+bowknot
+bowl
+bowla
+bowleg
+bowlegged
+bowleggedness
+bowler
+bowless
+bowlful
+bowlike
+bowline
+bowling
+bowllike
+bowlmaker
+bowls
+bowly
+bowmaker
+bowmaking
+bowman
+bowpin
+bowralite
+bowshot
+bowsprit
+bowstave
+bowstring
+bowstringed
+bowwoman
+bowwood
+bowwort
+bowwow
+bowyer
+boxberry
+boxboard
+boxbush
+boxcar
+boxen
+Boxer
+boxer
+Boxerism
+boxfish
+boxful
+boxhaul
+boxhead
+boxing
+boxkeeper
+boxlike
+boxmaker
+boxmaking
+boxman
+boxthorn
+boxty
+boxwallah
+boxwood
+boxwork
+boxy
+boy
+boyang
+boyar
+boyard
+boyardism
+boyardom
+boyarism
+Boyce
+boycott
+boycottage
+boycotter
+boycottism
+Boyd
+boydom
+boyer
+boyhood
+boyish
+boyishly
+boyishness
+boyism
+boyla
+boylike
+boyology
+boysenberry
+boyship
+boza
+bozal
+bozo
+bozze
+bra
+brab
+brabagious
+brabant
+Brabanter
+Brabantine
+brabble
+brabblement
+brabbler
+brabblingly
+Brabejum
+braca
+braccate
+braccia
+bracciale
+braccianite
+braccio
+brace
+braced
+bracelet
+braceleted
+bracer
+bracero
+braces
+brach
+Brachelytra
+brachelytrous
+bracherer
+brachering
+brachet
+brachial
+brachialgia
+brachialis
+Brachiata
+brachiate
+brachiation
+brachiator
+brachiferous
+brachigerous
+Brachinus
+brachiocephalic
+brachiocrural
+brachiocubital
+brachiocyllosis
+brachiofacial
+brachiofaciolingual
+brachioganoid
+Brachioganoidei
+brachiolaria
+brachiolarian
+brachiopod
+Brachiopoda
+brachiopode
+brachiopodist
+brachiopodous
+brachioradial
+brachioradialis
+brachiorrhachidian
+brachiorrheuma
+brachiosaur
+Brachiosaurus
+brachiostrophosis
+brachiotomy
+brachistocephali
+brachistocephalic
+brachistocephalous
+brachistocephaly
+brachistochrone
+brachistochronic
+brachistochronous
+brachium
+brachtmema
+brachyaxis
+brachycardia
+brachycatalectic
+brachycephal
+brachycephalic
+brachycephalism
+brachycephalization
+brachycephalize
+brachycephalous
+brachycephaly
+Brachycera
+brachyceral
+brachyceric
+brachycerous
+brachychronic
+brachycnemic
+Brachycome
+brachycranial
+brachydactyl
+brachydactylic
+brachydactylism
+brachydactylous
+brachydactyly
+brachydiagonal
+brachydodrome
+brachydodromous
+brachydomal
+brachydomatic
+brachydome
+brachydont
+brachydontism
+brachyfacial
+brachyglossal
+brachygnathia
+brachygnathism
+brachygnathous
+brachygrapher
+brachygraphic
+brachygraphical
+brachygraphy
+brachyhieric
+brachylogy
+brachymetropia
+brachymetropic
+Brachyoura
+brachyphalangia
+Brachyphyllum
+brachypinacoid
+brachypinacoidal
+brachypleural
+brachypnea
+brachypodine
+brachypodous
+brachyprism
+brachyprosopic
+brachypterous
+brachypyramid
+brachyrrhinia
+brachysclereid
+brachyskelic
+brachysm
+brachystaphylic
+Brachystegia
+brachystochrone
+Brachystomata
+brachystomatous
+brachystomous
+brachytic
+brachytypous
+Brachyura
+brachyural
+brachyuran
+brachyuranic
+brachyure
+brachyurous
+Brachyurus
+bracing
+bracingly
+bracingness
+brack
+brackebuschite
+bracken
+brackened
+bracker
+bracket
+bracketing
+bracketwise
+brackish
+brackishness
+brackmard
+bracky
+Bracon
+braconid
+Braconidae
+bract
+bractea
+bracteal
+bracteate
+bracted
+bracteiform
+bracteolate
+bracteole
+bracteose
+bractless
+bractlet
+Brad
+brad
+bradawl
+Bradbury
+Bradburya
+bradenhead
+Bradford
+Bradley
+bradmaker
+Bradshaw
+bradsot
+bradyacousia
+bradycardia
+bradycauma
+bradycinesia
+bradycrotic
+bradydactylia
+bradyesthesia
+bradyglossia
+bradykinesia
+bradykinetic
+bradylalia
+bradylexia
+bradylogia
+bradynosus
+bradypepsia
+bradypeptic
+bradyphagia
+bradyphasia
+bradyphemia
+bradyphrasia
+bradyphrenia
+bradypnea
+bradypnoea
+bradypod
+bradypode
+Bradypodidae
+bradypodoid
+Bradypus
+bradyseism
+bradyseismal
+bradyseismic
+bradyseismical
+bradyseismism
+bradyspermatism
+bradysphygmia
+bradystalsis
+bradyteleocinesia
+bradyteleokinesis
+bradytocia
+bradytrophic
+bradyuria
+brae
+braeface
+braehead
+braeman
+braeside
+brag
+braggardism
+braggart
+braggartism
+braggartly
+braggartry
+braggat
+bragger
+braggery
+bragget
+bragging
+braggingly
+braggish
+braggishly
+Bragi
+bragite
+bragless
+braguette
+Brahm
+Brahma
+brahmachari
+Brahmahood
+Brahmaic
+Brahman
+Brahmana
+Brahmanaspati
+Brahmanda
+Brahmaness
+Brahmanhood
+Brahmani
+Brahmanic
+Brahmanical
+Brahmanism
+Brahmanist
+Brahmanistic
+Brahmanize
+Brahmany
+Brahmi
+Brahmic
+Brahmin
+Brahminic
+Brahminism
+Brahmoism
+Brahmsian
+Brahmsite
+Brahui
+braid
+braided
+braider
+braiding
+Braidism
+Braidist
+brail
+Braille
+Braillist
+brain
+brainache
+braincap
+braincraft
+brainer
+brainfag
+brainge
+braininess
+brainless
+brainlessly
+brainlessness
+brainlike
+brainpan
+brains
+brainsick
+brainsickly
+brainsickness
+brainstone
+brainward
+brainwash
+brainwasher
+brainwashing
+brainwater
+brainwood
+brainwork
+brainworker
+brainy
+braird
+braireau
+brairo
+braise
+brake
+brakeage
+brakehand
+brakehead
+brakeless
+brakeload
+brakemaker
+brakemaking
+brakeman
+braker
+brakeroot
+brakesman
+brakie
+braky
+Bram
+Bramantesque
+Bramantip
+bramble
+brambleberry
+bramblebush
+brambled
+brambling
+brambly
+brambrack
+Bramia
+bran
+brancard
+branch
+branchage
+branched
+Branchellion
+brancher
+branchery
+branchful
+branchi
+branchia
+branchiae
+branchial
+Branchiata
+branchiate
+branchicolous
+branchiferous
+branchiform
+branchihyal
+branchiness
+branching
+Branchiobdella
+branchiocardiac
+branchiogenous
+branchiomere
+branchiomeric
+branchiomerism
+branchiopallial
+branchiopod
+Branchiopoda
+branchiopodan
+branchiopodous
+Branchiopulmonata
+branchiopulmonate
+branchiosaur
+Branchiosauria
+branchiosaurian
+Branchiosaurus
+branchiostegal
+Branchiostegidae
+branchiostegite
+branchiostegous
+Branchiostoma
+branchiostomid
+Branchiostomidae
+Branchipodidae
+Branchipus
+branchireme
+Branchiura
+branchiurous
+branchless
+branchlet
+branchlike
+branchling
+branchman
+branchstand
+branchway
+branchy
+brand
+branded
+Brandenburg
+Brandenburger
+brander
+brandering
+Brandi
+brandied
+brandify
+brandise
+brandish
+brandisher
+brandisite
+brandless
+brandling
+Brandon
+brandreth
+Brandy
+brandy
+brandyball
+brandyman
+brandywine
+brangle
+brangled
+branglement
+brangler
+brangling
+branial
+brank
+brankie
+brankursine
+branle
+branner
+brannerite
+branny
+bransle
+bransolder
+brant
+Branta
+brantail
+brantness
+Brasenia
+brash
+brashiness
+brashness
+brashy
+brasiletto
+brasque
+brass
+brassage
+brassard
+brassart
+Brassavola
+brassbound
+brassbounder
+brasse
+brasser
+brasset
+Brassia
+brassic
+Brassica
+Brassicaceae
+brassicaceous
+brassidic
+brassie
+brassiere
+brassily
+brassiness
+brassish
+brasslike
+brassware
+brasswork
+brassworker
+brassworks
+brassy
+brassylic
+brat
+bratling
+bratstvo
+brattach
+brattice
+bratticer
+bratticing
+brattie
+brattish
+brattishing
+brattle
+brauna
+Brauneberger
+Brauneria
+braunite
+Brauronia
+Brauronian
+Brava
+bravade
+bravado
+bravadoism
+brave
+bravehearted
+bravely
+braveness
+braver
+bravery
+braving
+bravish
+bravo
+bravoite
+bravura
+bravuraish
+braw
+brawl
+brawler
+brawling
+brawlingly
+brawlsome
+brawly
+brawlys
+brawn
+brawned
+brawnedness
+brawner
+brawnily
+brawniness
+brawny
+braws
+braxy
+bray
+brayer
+brayera
+brayerin
+braystone
+braza
+braze
+brazen
+brazenface
+brazenfaced
+brazenfacedly
+brazenly
+brazenness
+brazer
+brazera
+brazier
+braziery
+brazil
+brazilein
+brazilette
+Brazilian
+brazilin
+brazilite
+brazilwood
+breach
+breacher
+breachful
+breachy
+bread
+breadbasket
+breadberry
+breadboard
+breadbox
+breadearner
+breadearning
+breaden
+breadfruit
+breadless
+breadlessness
+breadmaker
+breadmaking
+breadman
+breadnut
+breadroot
+breadseller
+breadstuff
+breadth
+breadthen
+breadthless
+breadthriders
+breadthways
+breadthwise
+breadwinner
+breadwinning
+breaghe
+break
+breakable
+breakableness
+breakably
+breakage
+breakaway
+breakax
+breakback
+breakbones
+breakdown
+breaker
+breakerman
+breakfast
+breakfaster
+breakfastless
+breaking
+breakless
+breakneck
+breakoff
+breakout
+breakover
+breakshugh
+breakstone
+breakthrough
+breakup
+breakwater
+breakwind
+bream
+breards
+breast
+breastband
+breastbeam
+breastbone
+breasted
+breaster
+breastfeeding
+breastful
+breastheight
+breasthook
+breastie
+breasting
+breastless
+breastmark
+breastpiece
+breastpin
+breastplate
+breastplow
+breastrail
+breastrope
+breastsummer
+breastweed
+breastwise
+breastwood
+breastwork
+breath
+breathable
+breathableness
+breathe
+breathed
+breather
+breathful
+breathiness
+breathing
+breathingly
+breathless
+breathlessly
+breathlessness
+breathseller
+breathy
+breba
+breccia
+breccial
+brecciated
+brecciation
+brecham
+Brechites
+breck
+brecken
+bred
+bredbergite
+brede
+bredi
+bree
+breech
+breechblock
+breechcloth
+breechclout
+breeched
+breeches
+breechesflower
+breechesless
+breeching
+breechless
+breechloader
+breed
+breedable
+breedbate
+breeder
+breediness
+breeding
+breedy
+breek
+breekless
+breekums
+breeze
+breezeful
+breezeless
+breezelike
+breezeway
+breezily
+breeziness
+breezy
+bregma
+bregmata
+bregmate
+bregmatic
+brehon
+brehonship
+brei
+breislakite
+breithauptite
+brekkle
+brelaw
+breloque
+breme
+bremely
+bremeness
+Bremia
+bremsstrahlung
+Brenda
+Brendan
+Brender
+brennage
+Brent
+brent
+Brenthis
+brephic
+Brescian
+Bret
+bret
+bretelle
+bretesse
+breth
+brethren
+Breton
+Bretonian
+Bretschneideraceae
+Brett
+brett
+brettice
+Bretwalda
+Bretwaldadom
+Bretwaldaship
+breunnerite
+breva
+breve
+brevet
+brevetcy
+breviary
+breviate
+breviature
+brevicaudate
+brevicipitid
+Brevicipitidae
+breviconic
+brevier
+brevifoliate
+breviger
+brevilingual
+breviloquence
+breviloquent
+breviped
+brevipen
+brevipennate
+breviradiate
+brevirostral
+brevirostrate
+Brevirostrines
+brevit
+brevity
+brew
+brewage
+brewer
+brewership
+brewery
+brewhouse
+brewing
+brewis
+brewmaster
+brewst
+brewster
+brewsterite
+brey
+Brian
+briar
+briarberry
+Briard
+Briarean
+Briareus
+briarroot
+bribe
+bribee
+bribegiver
+bribegiving
+bribemonger
+briber
+bribery
+bribetaker
+bribetaking
+bribeworthy
+Bribri
+brichen
+brichette
+brick
+brickbat
+brickcroft
+brickel
+bricken
+brickfield
+brickfielder
+brickhood
+bricking
+brickish
+brickkiln
+bricklayer
+bricklaying
+brickle
+brickleness
+bricklike
+brickliner
+bricklining
+brickly
+brickmaker
+brickmaking
+brickmason
+brickset
+bricksetter
+bricktimber
+brickwise
+brickwork
+bricky
+brickyard
+bricole
+bridal
+bridale
+bridaler
+bridally
+Bride
+bride
+bridebed
+bridebowl
+bridecake
+bridechamber
+bridecup
+bridegod
+bridegroom
+bridegroomship
+bridehead
+bridehood
+brideknot
+bridelace
+brideless
+bridelike
+bridely
+bridemaid
+bridemaiden
+bridemaidship
+brideship
+bridesmaid
+bridesmaiding
+bridesman
+bridestake
+bridewain
+brideweed
+bridewell
+bridewort
+bridge
+bridgeable
+bridgeboard
+bridgebote
+bridgebuilder
+bridgebuilding
+bridged
+bridgehead
+bridgekeeper
+bridgeless
+bridgelike
+bridgemaker
+bridgemaking
+bridgeman
+bridgemaster
+bridgepot
+Bridger
+bridger
+Bridget
+bridgetree
+bridgeward
+bridgewards
+bridgeway
+bridgework
+bridging
+bridle
+bridled
+bridleless
+bridleman
+bridler
+bridling
+bridoon
+brief
+briefing
+briefless
+brieflessly
+brieflessness
+briefly
+briefness
+briefs
+brier
+brierberry
+briered
+brierroot
+brierwood
+briery
+brieve
+brig
+brigade
+brigadier
+brigadiership
+brigalow
+brigand
+brigandage
+brigander
+brigandine
+brigandish
+brigandishly
+brigandism
+Brigantes
+Brigantia
+brigantine
+brigatry
+brigbote
+brigetty
+Briggs
+Briggsian
+Brighella
+Brighid
+bright
+brighten
+brightener
+brightening
+Brighteyes
+brighteyes
+brightish
+brightly
+brightness
+brightsmith
+brightsome
+brightsomeness
+brightwork
+Brigid
+Brigittine
+brill
+brilliance
+brilliancy
+brilliandeer
+brilliant
+brilliantine
+brilliantly
+brilliantness
+brilliantwise
+brilliolette
+brillolette
+brills
+brim
+brimborion
+brimborium
+brimful
+brimfully
+brimfulness
+briming
+brimless
+brimmed
+brimmer
+brimming
+brimmingly
+brimstone
+brimstonewort
+brimstony
+brin
+brindlish
+brine
+brinehouse
+brineless
+brineman
+briner
+bring
+bringal
+bringall
+bringer
+brininess
+brinish
+brinishness
+brinjal
+brinjarry
+brink
+brinkless
+briny
+brioche
+briolette
+brique
+briquette
+brisk
+brisken
+brisket
+briskish
+briskly
+briskness
+brisling
+brisque
+briss
+Brissotin
+Brissotine
+bristle
+bristlebird
+bristlecone
+bristled
+bristleless
+bristlelike
+bristler
+bristletail
+bristlewort
+bristliness
+bristly
+Bristol
+brisure
+brit
+Britain
+Britannia
+Britannian
+Britannic
+Britannically
+britchka
+brith
+brither
+Briticism
+British
+Britisher
+Britishhood
+Britishism
+Britishly
+Britishness
+Briton
+Britoness
+britska
+Brittany
+britten
+brittle
+brittlebush
+brittlely
+brittleness
+brittlestem
+brittlewood
+brittlewort
+brittling
+Briza
+brizz
+broach
+broacher
+broad
+broadacre
+broadax
+broadbill
+Broadbrim
+broadbrim
+broadcast
+broadcaster
+broadcloth
+broaden
+broadhead
+broadhearted
+broadhorn
+broadish
+broadleaf
+broadloom
+broadly
+broadmouth
+broadness
+broadpiece
+broadshare
+broadsheet
+broadside
+broadspread
+broadsword
+broadtail
+broadthroat
+Broadway
+broadway
+Broadwayite
+broadways
+broadwife
+broadwise
+brob
+Brobdingnag
+Brobdingnagian
+brocade
+brocaded
+brocard
+brocardic
+brocatel
+brocatello
+broccoli
+broch
+brochan
+brochant
+brochantite
+broche
+brochette
+brochidodromous
+brocho
+brochure
+brock
+brockage
+brocked
+brocket
+brockle
+brod
+brodder
+brodeglass
+brodequin
+broderer
+Brodiaea
+Brodie
+brog
+brogan
+brogger
+broggerite
+broggle
+brogue
+brogueful
+brogueneer
+broguer
+broguery
+broguish
+broider
+broiderer
+broideress
+broidery
+broigne
+broil
+broiler
+broiling
+broilingly
+brokage
+broke
+broken
+brokenhearted
+brokenheartedly
+brokenheartedness
+brokenly
+brokenness
+broker
+brokerage
+brokeress
+brokership
+broking
+brolga
+broll
+brolly
+broma
+bromacetanilide
+bromacetate
+bromacetic
+bromacetone
+bromal
+bromalbumin
+bromamide
+bromargyrite
+bromate
+bromaurate
+bromauric
+brombenzamide
+brombenzene
+brombenzyl
+bromcamphor
+bromcresol
+brome
+bromeigon
+Bromeikon
+bromeikon
+Bromelia
+Bromeliaceae
+bromeliaceous
+bromeliad
+bromelin
+bromellite
+bromethyl
+bromethylene
+bromgelatin
+bromhidrosis
+bromhydrate
+bromhydric
+Bromian
+bromic
+bromide
+bromidic
+bromidically
+bromidrosis
+brominate
+bromination
+bromindigo
+bromine
+brominism
+brominize
+bromiodide
+Bromios
+bromism
+bromite
+Bromius
+bromization
+bromize
+bromizer
+bromlite
+bromoacetone
+bromoaurate
+bromoauric
+bromobenzene
+bromobenzyl
+bromocamphor
+bromochlorophenol
+bromocresol
+bromocyanidation
+bromocyanide
+bromocyanogen
+bromoethylene
+bromoform
+bromogelatin
+bromohydrate
+bromohydrin
+bromoil
+bromoiodide
+bromoiodism
+bromoiodized
+bromoketone
+bromol
+bromomania
+bromomenorrhea
+bromomethane
+bromometric
+bromometrical
+bromometrically
+bromometry
+bromonaphthalene
+bromophenol
+bromopicrin
+bromopnea
+bromoprotein
+bromothymol
+bromous
+bromphenol
+brompicrin
+bromthymol
+bromuret
+Bromus
+bromvogel
+bromyrite
+bronc
+bronchadenitis
+bronchi
+bronchia
+bronchial
+bronchially
+bronchiarctia
+bronchiectasis
+bronchiectatic
+bronchiloquy
+bronchiocele
+bronchiocrisis
+bronchiogenic
+bronchiolar
+bronchiole
+bronchioli
+bronchiolitis
+bronchiolus
+bronchiospasm
+bronchiostenosis
+bronchitic
+bronchitis
+bronchium
+bronchoadenitis
+bronchoalveolar
+bronchoaspergillosis
+bronchoblennorrhea
+bronchocavernous
+bronchocele
+bronchocephalitis
+bronchoconstriction
+bronchoconstrictor
+bronchodilatation
+bronchodilator
+bronchoegophony
+bronchoesophagoscopy
+bronchogenic
+bronchohemorrhagia
+broncholemmitis
+broncholith
+broncholithiasis
+bronchomotor
+bronchomucormycosis
+bronchomycosis
+bronchopathy
+bronchophonic
+bronchophony
+bronchophthisis
+bronchoplasty
+bronchoplegia
+bronchopleurisy
+bronchopneumonia
+bronchopneumonic
+bronchopulmonary
+bronchorrhagia
+bronchorrhaphy
+bronchorrhea
+bronchoscope
+bronchoscopic
+bronchoscopist
+bronchoscopy
+bronchospasm
+bronchostenosis
+bronchostomy
+bronchotetany
+bronchotome
+bronchotomist
+bronchotomy
+bronchotracheal
+bronchotyphoid
+bronchotyphus
+bronchovesicular
+bronchus
+bronco
+broncobuster
+brongniardite
+bronk
+Bronteana
+bronteon
+brontephobia
+Brontesque
+bronteum
+brontide
+brontogram
+brontograph
+brontolite
+brontology
+brontometer
+brontophobia
+Brontops
+Brontosaurus
+brontoscopy
+Brontotherium
+Brontozoum
+Bronx
+bronze
+bronzed
+bronzelike
+bronzen
+bronzer
+bronzesmith
+bronzewing
+bronzify
+bronzine
+bronzing
+bronzite
+bronzitite
+bronzy
+broo
+brooch
+brood
+brooder
+broodiness
+brooding
+broodingly
+broodless
+broodlet
+broodling
+broody
+brook
+brookable
+Brooke
+brooked
+brookflower
+brookie
+brookite
+brookless
+brooklet
+brooklike
+brooklime
+Brooklynite
+brookside
+brookweed
+brooky
+brool
+broom
+broombush
+broomcorn
+broomer
+broommaker
+broommaking
+broomrape
+broomroot
+broomshank
+broomstaff
+broomstick
+broomstraw
+broomtail
+broomweed
+broomwood
+broomwort
+broomy
+broon
+broose
+broozled
+brose
+Brosimum
+brosot
+brosy
+brot
+brotan
+brotany
+broth
+brothel
+brotheler
+brothellike
+brothelry
+brother
+brotherhood
+brotherless
+brotherlike
+brotherliness
+brotherly
+brothership
+Brotherton
+brotherwort
+brothy
+brotocrystal
+Brotula
+brotulid
+Brotulidae
+brotuliform
+brough
+brougham
+brought
+Broussonetia
+brow
+browache
+Browallia
+browallia
+browband
+browbeat
+browbeater
+browbound
+browden
+browed
+browis
+browless
+browman
+brown
+brownback
+browner
+Brownian
+brownie
+browniness
+browning
+Browningesque
+brownish
+Brownism
+Brownist
+Brownistic
+Brownistical
+brownly
+brownness
+brownout
+brownstone
+browntail
+browntop
+brownweed
+brownwort
+browny
+browpiece
+browpost
+browse
+browser
+browsick
+browsing
+browst
+bruang
+Bruce
+Brucella
+brucellosis
+Bruchidae
+Bruchus
+brucia
+brucina
+brucine
+brucite
+bruckle
+bruckled
+bruckleness
+Bructeri
+brugh
+brugnatellite
+bruin
+bruise
+bruiser
+bruisewort
+bruising
+bruit
+bruiter
+bruke
+Brule
+brulee
+brulyie
+brulyiement
+brumal
+Brumalia
+brumby
+brume
+Brummagem
+brummagem
+brumous
+brumstane
+brumstone
+brunch
+Brunella
+Brunellia
+Brunelliaceae
+brunelliaceous
+brunet
+brunetness
+brunette
+brunetteness
+Brunfelsia
+brunissure
+Brunistic
+brunneous
+Brunnichia
+Bruno
+Brunonia
+Brunoniaceae
+Brunonian
+Brunonism
+Brunswick
+brunswick
+brunt
+bruscus
+brush
+brushable
+brushball
+brushbird
+brushbush
+brushed
+brusher
+brushes
+brushet
+brushful
+brushiness
+brushing
+brushite
+brushland
+brushless
+brushlessness
+brushlet
+brushlike
+brushmaker
+brushmaking
+brushman
+brushoff
+brushproof
+brushwood
+brushwork
+brushy
+brusque
+brusquely
+brusqueness
+Brussels
+brustle
+brut
+Bruta
+brutage
+brutal
+brutalism
+brutalist
+brutalitarian
+brutality
+brutalization
+brutalize
+brutally
+brute
+brutedom
+brutelike
+brutely
+bruteness
+brutification
+brutify
+bruting
+brutish
+brutishly
+brutishness
+brutism
+brutter
+Brutus
+bruzz
+Bryaceae
+bryaceous
+Bryales
+Bryan
+Bryanism
+Bryanite
+Bryanthus
+Bryce
+bryogenin
+bryological
+bryologist
+bryology
+Bryonia
+bryonidin
+bryonin
+bryony
+Bryophyllum
+Bryophyta
+bryophyte
+bryophytic
+Bryozoa
+bryozoan
+bryozoon
+bryozoum
+Brython
+Brythonic
+Bryum
+Bu
+bu
+bual
+buaze
+bub
+buba
+bubal
+bubaline
+Bubalis
+bubalis
+Bubastid
+Bubastite
+bubble
+bubbleless
+bubblement
+bubbler
+bubbling
+bubblingly
+bubblish
+bubbly
+bubby
+bubbybush
+Bube
+bubinga
+Bubo
+bubo
+buboed
+bubonalgia
+bubonic
+Bubonidae
+bubonocele
+bubukle
+bucare
+bucca
+buccal
+buccally
+buccan
+buccaneer
+buccaneerish
+buccate
+Buccellarius
+buccina
+buccinal
+buccinator
+buccinatory
+Buccinidae
+bucciniform
+buccinoid
+Buccinum
+Bucco
+buccobranchial
+buccocervical
+buccogingival
+buccolabial
+buccolingual
+bucconasal
+Bucconidae
+Bucconinae
+buccopharyngeal
+buccula
+Bucculatrix
+bucentaur
+Bucephala
+Bucephalus
+Buceros
+Bucerotes
+Bucerotidae
+Bucerotinae
+Buchanan
+Buchanite
+buchite
+Buchloe
+Buchmanism
+Buchmanite
+Buchnera
+buchnerite
+buchonite
+buchu
+buck
+buckaroo
+buckberry
+buckboard
+buckbrush
+buckbush
+bucked
+buckeen
+bucker
+bucket
+bucketer
+bucketful
+bucketing
+bucketmaker
+bucketmaking
+bucketman
+buckety
+buckeye
+buckhorn
+buckhound
+buckie
+bucking
+buckish
+buckishly
+buckishness
+buckjump
+buckjumper
+bucklandite
+buckle
+buckled
+buckleless
+buckler
+Buckleya
+buckling
+bucklum
+bucko
+buckplate
+buckpot
+buckra
+buckram
+bucksaw
+buckshee
+buckshot
+buckskin
+buckskinned
+buckstall
+buckstay
+buckstone
+bucktail
+buckthorn
+bucktooth
+buckwagon
+buckwash
+buckwasher
+buckwashing
+buckwheat
+buckwheater
+buckwheatlike
+Bucky
+bucky
+bucoliast
+bucolic
+bucolical
+bucolically
+bucolicism
+Bucorvinae
+Bucorvus
+bucrane
+bucranium
+Bud
+bud
+buda
+buddage
+budder
+Buddh
+Buddha
+Buddhahood
+Buddhaship
+buddhi
+Buddhic
+Buddhism
+Buddhist
+Buddhistic
+Buddhistical
+Buddhology
+budding
+buddle
+Buddleia
+buddleman
+buddler
+buddy
+budge
+budger
+budgeree
+budgereegah
+budgerigar
+budgerow
+budget
+budgetary
+budgeteer
+budgeter
+budgetful
+Budh
+budless
+budlet
+budlike
+budmash
+Budorcas
+budtime
+Budukha
+Buduma
+budwood
+budworm
+budzat
+Buettneria
+Buettneriaceae
+bufagin
+buff
+buffable
+buffalo
+buffaloback
+buffball
+buffcoat
+buffed
+buffer
+buffet
+buffeter
+buffing
+buffle
+bufflehead
+bufflehorn
+buffont
+buffoon
+buffoonery
+buffoonesque
+buffoonish
+buffoonism
+buffware
+buffy
+bufidin
+bufo
+Bufonidae
+bufonite
+bufotalin
+bug
+bugaboo
+bugan
+bugbane
+bugbear
+bugbeardom
+bugbearish
+bugbite
+bugdom
+bugfish
+bugger
+buggery
+bugginess
+buggy
+buggyman
+bughead
+bughouse
+Bugi
+Buginese
+Buginvillaea
+bugle
+bugled
+bugler
+buglet
+bugleweed
+buglewort
+bugloss
+bugologist
+bugology
+bugproof
+bugre
+bugseed
+bugweed
+bugwort
+buhl
+buhr
+buhrstone
+build
+buildable
+builder
+building
+buildingless
+buildress
+buildup
+built
+buirdly
+buisson
+buist
+Bukat
+Bukeyef
+bukh
+Bukidnon
+bukshi
+bulak
+Bulanda
+bulb
+bulbaceous
+bulbar
+bulbed
+bulbiferous
+bulbiform
+bulbil
+Bulbilis
+bulbilla
+bulbless
+bulblet
+bulblike
+bulbocapnin
+bulbocapnine
+bulbocavernosus
+bulbocavernous
+Bulbochaete
+Bulbocodium
+bulbomedullary
+bulbomembranous
+bulbonuclear
+Bulbophyllum
+bulborectal
+bulbose
+bulbospinal
+bulbotuber
+bulbous
+bulbul
+bulbule
+bulby
+bulchin
+Bulgar
+Bulgari
+Bulgarian
+Bulgaric
+Bulgarophil
+bulge
+bulger
+bulginess
+bulgy
+bulimia
+bulimiac
+bulimic
+bulimiform
+bulimoid
+Bulimulidae
+Bulimus
+bulimy
+bulk
+bulked
+bulker
+bulkhead
+bulkheaded
+bulkily
+bulkiness
+bulkish
+bulky
+bull
+bulla
+bullace
+bullamacow
+bullan
+bullary
+bullate
+bullated
+bullation
+bullback
+bullbaiting
+bullbat
+bullbeggar
+bullberry
+bullbird
+bullboat
+bullcart
+bullcomber
+bulldog
+bulldogged
+bulldoggedness
+bulldoggy
+bulldogism
+bulldoze
+bulldozer
+buller
+bullet
+bulleted
+bullethead
+bulletheaded
+bulletheadedness
+bulletin
+bulletless
+bulletlike
+bulletmaker
+bulletmaking
+bulletproof
+bulletwood
+bullety
+bullfeast
+bullfight
+bullfighter
+bullfighting
+bullfinch
+bullfist
+bullflower
+bullfoot
+bullfrog
+bullhead
+bullheaded
+bullheadedly
+bullheadedness
+bullhide
+bullhoof
+bullhorn
+Bullidae
+bulliform
+bullimong
+bulling
+bullion
+bullionism
+bullionist
+bullionless
+bullish
+bullishly
+bullishness
+bullism
+bullit
+bullneck
+bullnose
+bullnut
+bullock
+bullocker
+Bullockite
+bullockman
+bullocky
+Bullom
+bullous
+bullpates
+bullpoll
+bullpout
+bullskin
+bullsticker
+bullsucker
+bullswool
+bulltoad
+bullule
+bullweed
+bullwhack
+bullwhacker
+bullwhip
+bullwort
+bully
+bullyable
+bullydom
+bullyhuff
+bullying
+bullyism
+bullyrag
+bullyragger
+bullyragging
+bullyrook
+bulrush
+bulrushlike
+bulrushy
+bulse
+bult
+bulter
+bultey
+bultong
+bultow
+bulwand
+bulwark
+bum
+bumbailiff
+bumbailiffship
+bumbarge
+bumbaste
+bumbaze
+bumbee
+bumbershoot
+bumble
+bumblebee
+bumbleberry
+Bumbledom
+bumblefoot
+bumblekite
+bumblepuppy
+bumbler
+bumbo
+bumboat
+bumboatman
+bumboatwoman
+bumclock
+Bumelia
+bumicky
+bummalo
+bummaree
+bummed
+bummer
+bummerish
+bummie
+bumming
+bummler
+bummock
+bump
+bumpee
+bumper
+bumperette
+bumpily
+bumpiness
+bumping
+bumpingly
+bumpkin
+bumpkinet
+bumpkinish
+bumpkinly
+bumpology
+bumptious
+bumptiously
+bumptiousness
+bumpy
+bumtrap
+bumwood
+bun
+Buna
+buna
+buncal
+bunce
+bunch
+bunchberry
+buncher
+bunchflower
+bunchily
+bunchiness
+bunchy
+buncombe
+bund
+Bunda
+Bundahish
+Bundeli
+bunder
+Bundestag
+bundle
+bundler
+bundlerooted
+bundlet
+bundobust
+bundook
+Bundu
+bundweed
+bundy
+bunemost
+bung
+Bunga
+bungaloid
+bungalow
+bungarum
+Bungarus
+bungee
+bungerly
+bungey
+bungfu
+bungfull
+bunghole
+bungle
+bungler
+bunglesome
+bungling
+bunglingly
+bungmaker
+bungo
+bungwall
+bungy
+Buninahua
+bunion
+bunk
+bunker
+bunkerman
+bunkery
+bunkhouse
+bunkie
+bunkload
+bunko
+bunkum
+bunnell
+bunny
+bunnymouth
+bunodont
+Bunodonta
+bunolophodont
+Bunomastodontidae
+bunoselenodont
+bunsenite
+bunt
+buntal
+bunted
+Bunter
+bunter
+bunting
+buntline
+bunton
+bunty
+bunya
+bunyah
+bunyip
+Bunyoro
+buoy
+buoyage
+buoyance
+buoyancy
+buoyant
+buoyantly
+buoyantness
+Buphaga
+buphthalmia
+buphthalmic
+Buphthalmum
+bupleurol
+Bupleurum
+buplever
+buprestid
+Buprestidae
+buprestidan
+Buprestis
+bur
+buran
+burao
+Burbank
+burbank
+burbankian
+Burbankism
+burbark
+Burberry
+burble
+burbler
+burbly
+burbot
+burbush
+burd
+burdalone
+burden
+burdener
+burdenless
+burdenous
+burdensome
+burdensomely
+burdensomeness
+burdie
+Burdigalian
+burdock
+burdon
+bure
+bureau
+bureaucracy
+bureaucrat
+bureaucratic
+bureaucratical
+bureaucratically
+bureaucratism
+bureaucratist
+bureaucratization
+bureaucratize
+bureaux
+burel
+burele
+buret
+burette
+burfish
+burg
+burgage
+burgality
+burgall
+burgee
+burgensic
+burgeon
+burgess
+burgessdom
+burggrave
+burgh
+burghal
+burghalpenny
+burghbote
+burghemot
+burgher
+burgherage
+burgherdom
+burgheress
+burgherhood
+burghermaster
+burghership
+burghmaster
+burghmoot
+burglar
+burglarious
+burglariously
+burglarize
+burglarproof
+burglary
+burgle
+burgomaster
+burgomastership
+burgonet
+burgoo
+burgoyne
+burgrave
+burgraviate
+burgul
+Burgundian
+Burgundy
+burgus
+burgware
+burhead
+Burhinidae
+Burhinus
+Buri
+buri
+burial
+burian
+Buriat
+buried
+burier
+burin
+burinist
+burion
+buriti
+burka
+burke
+burker
+burkundaz
+burl
+burlap
+burled
+burler
+burlesque
+burlesquely
+burlesquer
+burlet
+burletta
+Burley
+burlily
+burliness
+Burlington
+burly
+Burman
+Burmannia
+Burmanniaceae
+burmanniaceous
+Burmese
+burmite
+burn
+burnable
+burnbeat
+burned
+burner
+burnet
+burnetize
+burnfire
+burnie
+burniebee
+burning
+burningly
+burnish
+burnishable
+burnisher
+burnishing
+burnishment
+burnoose
+burnoosed
+burnous
+burnout
+burnover
+Burnsian
+burnside
+burnsides
+burnt
+burntweed
+burnut
+burnwood
+burny
+buro
+burp
+burr
+burrah
+burrawang
+burred
+burrel
+burrer
+burrgrailer
+burring
+burrish
+burrito
+burrknot
+burro
+burrobrush
+burrow
+burroweed
+burrower
+burrowstown
+burry
+bursa
+bursal
+bursar
+bursarial
+bursarship
+bursary
+bursate
+bursattee
+bursautee
+burse
+burseed
+Bursera
+Burseraceae
+Burseraceous
+bursicle
+bursiculate
+bursiform
+bursitis
+burst
+burster
+burstwort
+burt
+burthenman
+burton
+burtonization
+burtonize
+burucha
+Burushaski
+Burut
+burweed
+bury
+burying
+bus
+Busaos
+busby
+buscarl
+buscarle
+bush
+bushbeater
+bushbuck
+bushcraft
+bushed
+bushel
+busheler
+bushelful
+bushelman
+bushelwoman
+busher
+bushfighter
+bushfighting
+bushful
+bushhammer
+bushi
+bushily
+bushiness
+bushing
+bushland
+bushless
+bushlet
+bushlike
+bushmaker
+bushmaking
+Bushman
+bushmanship
+bushmaster
+bushment
+Bushongo
+bushranger
+bushranging
+bushrope
+bushveld
+bushwa
+bushwhack
+bushwhacker
+bushwhacking
+bushwife
+bushwoman
+bushwood
+bushy
+busied
+busily
+busine
+business
+businesslike
+businesslikeness
+businessman
+businesswoman
+busk
+busked
+busker
+busket
+buskin
+buskined
+buskle
+busky
+busman
+buss
+busser
+bussock
+bussu
+bust
+bustard
+busted
+bustee
+buster
+busthead
+bustic
+busticate
+bustle
+bustled
+bustler
+bustling
+bustlingly
+busy
+busybodied
+busybody
+busybodyish
+busybodyism
+busybodyness
+Busycon
+busyhead
+busying
+busyish
+busyness
+busywork
+but
+butadiene
+butadiyne
+butanal
+butane
+butanoic
+butanol
+butanolid
+butanolide
+butanone
+butch
+butcher
+butcherbird
+butcherdom
+butcherer
+butcheress
+butchering
+butcherless
+butcherliness
+butcherly
+butcherous
+butchery
+Bute
+Butea
+butein
+butene
+butenyl
+Buteo
+buteonine
+butic
+butine
+Butler
+butler
+butlerage
+butlerdom
+butleress
+butlerism
+butlerlike
+butlership
+butlery
+butment
+Butomaceae
+butomaceous
+Butomus
+butoxy
+butoxyl
+Butsu
+butt
+butte
+butter
+butteraceous
+butterback
+butterball
+butterbill
+butterbird
+butterbox
+butterbump
+butterbur
+butterbush
+buttercup
+buttered
+butterfat
+butterfingered
+butterfingers
+butterfish
+butterflower
+butterfly
+butterflylike
+butterhead
+butterine
+butteriness
+butteris
+butterjags
+butterless
+butterlike
+buttermaker
+buttermaking
+butterman
+buttermilk
+buttermonger
+buttermouth
+butternose
+butternut
+butterroot
+butterscotch
+butterweed
+butterwife
+butterwoman
+butterworker
+butterwort
+butterwright
+buttery
+butteryfingered
+buttgenbachite
+butting
+buttinsky
+buttle
+buttock
+buttocked
+buttocker
+button
+buttonball
+buttonbur
+buttonbush
+buttoned
+buttoner
+buttonhold
+buttonholder
+buttonhole
+buttonholer
+buttonhook
+buttonless
+buttonlike
+buttonmold
+buttons
+buttonweed
+buttonwood
+buttony
+buttress
+buttressless
+buttresslike
+buttstock
+buttwoman
+buttwood
+butty
+buttyman
+butyl
+butylamine
+butylation
+butylene
+butylic
+Butyn
+butyne
+butyr
+butyraceous
+butyral
+butyraldehyde
+butyrate
+butyric
+butyrically
+butyrin
+butyrinase
+butyrochloral
+butyrolactone
+butyrometer
+butyrometric
+butyrone
+butyrous
+butyrousness
+butyryl
+Buxaceae
+buxaceous
+Buxbaumia
+Buxbaumiaceae
+buxerry
+buxom
+buxomly
+buxomness
+Buxus
+buy
+buyable
+buyer
+Buyides
+buzane
+buzylene
+buzz
+buzzard
+buzzardlike
+buzzardly
+buzzer
+buzzerphone
+buzzgloak
+buzzies
+buzzing
+buzzingly
+buzzle
+buzzwig
+buzzy
+by
+Byblidaceae
+Byblis
+bycoket
+bye
+byee
+byegaein
+byeman
+byepath
+byerite
+byerlite
+byestreet
+byeworker
+byeworkman
+bygane
+byganging
+bygo
+bygoing
+bygone
+byhand
+bylaw
+bylawman
+byname
+bynedestin
+Bynin
+byon
+byordinar
+byordinary
+byous
+byously
+bypass
+bypasser
+bypast
+bypath
+byplay
+byre
+byreman
+byrewards
+byrewoman
+byrlaw
+byrlawman
+byrnie
+byroad
+Byron
+Byronesque
+Byronian
+Byroniana
+Byronic
+Byronically
+Byronics
+Byronish
+Byronism
+Byronist
+Byronite
+Byronize
+byrrus
+Byrsonima
+byrthynsak
+Bysacki
+bysen
+bysmalith
+byspell
+byssaceous
+byssal
+byssiferous
+byssin
+byssine
+byssinosis
+byssogenous
+byssoid
+byssolite
+byssus
+bystander
+bystreet
+byth
+bytime
+bytownite
+bytownitite
+bywalk
+bywalker
+byway
+bywoner
+byword
+bywork
+Byzantian
+Byzantine
+Byzantinesque
+Byzantinism
+Byzantinize
+C
+c
+ca
+caam
+caama
+caaming
+caapeba
+caatinga
+cab
+caba
+cabaan
+caback
+cabaho
+cabal
+cabala
+cabalassou
+cabaletta
+cabalic
+cabalism
+cabalist
+cabalistic
+cabalistical
+cabalistically
+caballer
+caballine
+caban
+cabana
+cabaret
+cabas
+cabasset
+cabassou
+cabbage
+cabbagehead
+cabbagewood
+cabbagy
+cabber
+cabble
+cabbler
+cabby
+cabda
+cabdriver
+cabdriving
+cabellerote
+caber
+cabernet
+cabestro
+cabezon
+cabilliau
+cabin
+Cabinda
+cabinet
+cabinetmaker
+cabinetmaking
+cabinetry
+cabinetwork
+cabinetworker
+cabinetworking
+cabio
+Cabirean
+Cabiri
+Cabiria
+Cabirian
+Cabiric
+Cabiritic
+cable
+cabled
+cablegram
+cableless
+cablelike
+cableman
+cabler
+cablet
+cableway
+cabling
+cabman
+cabob
+caboceer
+cabochon
+cabocle
+Cabomba
+Cabombaceae
+caboodle
+cabook
+caboose
+caboshed
+cabot
+cabotage
+cabree
+cabrerite
+cabreuva
+cabrilla
+cabriole
+cabriolet
+cabrit
+cabstand
+cabureiba
+cabuya
+Caca
+Cacajao
+Cacalia
+cacam
+Cacan
+Cacana
+cacanthrax
+cacao
+Cacara
+Cacatua
+Cacatuidae
+Cacatuinae
+Caccabis
+cacesthesia
+cacesthesis
+cachalot
+cachaza
+cache
+cachectic
+cachemia
+cachemic
+cachet
+cachexia
+cachexic
+cachexy
+cachibou
+cachinnate
+cachinnation
+cachinnator
+cachinnatory
+cacholong
+cachou
+cachrys
+cachucha
+cachunde
+Cacicus
+cacidrosis
+caciocavallo
+cacique
+caciqueship
+caciquism
+cack
+cackerel
+cackle
+cackler
+cacocholia
+cacochroia
+cacochylia
+cacochymia
+cacochymic
+cacochymical
+cacochymy
+cacocnemia
+cacodaemoniac
+cacodaemonial
+cacodaemonic
+cacodemon
+cacodemonia
+cacodemoniac
+cacodemonial
+cacodemonic
+cacodemonize
+cacodemonomania
+cacodontia
+cacodorous
+cacodoxian
+cacodoxical
+cacodoxy
+cacodyl
+cacodylate
+cacodylic
+cacoeconomy
+cacoepist
+cacoepistic
+cacoepy
+cacoethes
+cacoethic
+cacogalactia
+cacogastric
+cacogenesis
+cacogenic
+cacogenics
+cacogeusia
+cacoglossia
+cacographer
+cacographic
+cacographical
+cacography
+cacology
+cacomagician
+cacomelia
+cacomistle
+cacomixl
+cacomixle
+cacomorphia
+cacomorphosis
+caconychia
+caconym
+caconymic
+cacoon
+cacopathy
+cacopharyngia
+cacophonia
+cacophonic
+cacophonical
+cacophonically
+cacophonist
+cacophonize
+cacophonous
+cacophonously
+cacophony
+cacophthalmia
+cacoplasia
+cacoplastic
+cacoproctia
+cacorhythmic
+cacorrhachis
+cacorrhinia
+cacosmia
+cacospermia
+cacosplanchnia
+cacostomia
+cacothansia
+cacotheline
+cacothesis
+cacothymia
+cacotrichia
+cacotrophia
+cacotrophic
+cacotrophy
+cacotype
+cacoxene
+cacoxenite
+cacozeal
+cacozealous
+cacozyme
+Cactaceae
+cactaceous
+Cactales
+cacti
+cactiform
+cactoid
+Cactus
+cacuminal
+cacuminate
+cacumination
+cacuminous
+cacur
+cad
+cadalene
+cadamba
+cadastral
+cadastration
+cadastre
+cadaver
+cadaveric
+cadaverine
+cadaverize
+cadaverous
+cadaverously
+cadaverousness
+cadbait
+cadbit
+cadbote
+caddice
+caddiced
+Caddie
+caddie
+caddis
+caddised
+caddish
+caddishly
+caddishness
+caddle
+Caddo
+Caddoan
+caddow
+caddy
+cade
+cadelle
+cadence
+cadenced
+cadency
+cadent
+cadential
+cadenza
+cader
+caderas
+Cadet
+cadet
+cadetcy
+cadetship
+cadette
+cadew
+cadge
+cadger
+cadgily
+cadginess
+cadgy
+cadi
+cadilesker
+cadinene
+cadism
+cadiueio
+cadjan
+cadlock
+Cadmean
+cadmia
+cadmic
+cadmide
+cadmiferous
+cadmium
+cadmiumize
+Cadmopone
+Cadmus
+cados
+cadrans
+cadre
+cadua
+caduac
+caduca
+caducary
+caducean
+caduceus
+caduciary
+caducibranch
+Caducibranchiata
+caducibranchiate
+caducicorn
+caducity
+caducous
+cadus
+Cadwal
+Cadwallader
+cadweed
+caeca
+caecal
+caecally
+caecectomy
+caeciform
+Caecilia
+Caeciliae
+caecilian
+Caeciliidae
+caecitis
+caecocolic
+caecostomy
+caecotomy
+caecum
+Caedmonian
+Caedmonic
+Caelian
+caelometer
+Caelum
+Caelus
+Caenogaea
+Caenogaean
+Caenolestes
+caenostylic
+caenostyly
+caeoma
+caeremoniarius
+Caerphilly
+Caesalpinia
+Caesalpiniaceae
+caesalpiniaceous
+Caesar
+Caesardom
+Caesarean
+Caesareanize
+Caesarian
+Caesarism
+Caesarist
+Caesarize
+caesaropapacy
+caesaropapism
+caesaropopism
+Caesarotomy
+Caesarship
+caesious
+caesura
+caesural
+caesuric
+cafeneh
+cafenet
+cafeteria
+caffa
+caffeate
+caffeic
+caffeina
+caffeine
+caffeinic
+caffeinism
+caffeism
+caffeol
+caffeone
+caffetannic
+caffetannin
+caffiso
+caffle
+caffoline
+caffoy
+cafh
+cafiz
+caftan
+caftaned
+cag
+Cagayan
+cage
+caged
+cageful
+cageless
+cagelike
+cageling
+cageman
+cager
+cagester
+cagework
+cagey
+caggy
+cagily
+cagit
+cagmag
+Cagn
+Cahenslyism
+Cahill
+cahincic
+Cahita
+cahiz
+Cahnite
+Cahokia
+cahoot
+cahot
+cahow
+Cahuapana
+Cahuilla
+caickle
+caid
+cailcedra
+cailleach
+caimacam
+caimakam
+caiman
+caimitillo
+caimito
+Cain
+cain
+Caingang
+Caingua
+Cainian
+Cainish
+Cainism
+Cainite
+Cainitic
+caique
+caiquejee
+Cairba
+caird
+Cairene
+cairn
+cairned
+cairngorm
+cairngorum
+cairny
+Cairo
+caisson
+caissoned
+Caitanyas
+Caite
+caitiff
+Cajan
+Cajanus
+cajeput
+cajole
+cajolement
+cajoler
+cajolery
+cajoling
+cajolingly
+cajuela
+Cajun
+cajun
+cajuput
+cajuputene
+cajuputol
+Cakavci
+Cakchikel
+cake
+cakebox
+cakebread
+cakehouse
+cakemaker
+cakemaking
+caker
+cakette
+cakewalk
+cakewalker
+cakey
+Cakile
+caky
+cal
+calaba
+Calabar
+Calabari
+calabash
+calabaza
+calabazilla
+calaber
+calaboose
+calabrasella
+Calabrese
+calabrese
+Calabrian
+calade
+Caladium
+calais
+calalu
+Calamagrostis
+calamanco
+calamansi
+Calamariaceae
+calamariaceous
+Calamariales
+calamarian
+calamarioid
+calamaroid
+calamary
+calambac
+calambour
+calamiferous
+calamiform
+calaminary
+calamine
+calamint
+Calamintha
+calamistral
+calamistrum
+calamite
+calamitean
+Calamites
+calamitoid
+calamitous
+calamitously
+calamitousness
+calamity
+Calamodendron
+calamondin
+Calamopitys
+Calamospermae
+Calamostachys
+calamus
+calander
+Calandra
+calandria
+Calandridae
+Calandrinae
+Calandrinia
+calangay
+calantas
+Calanthe
+calapite
+Calappa
+Calappidae
+Calas
+calascione
+calash
+Calathea
+calathian
+calathidium
+calathiform
+calathiscus
+calathus
+Calatrava
+calaverite
+calbroben
+calcaneal
+calcaneoastragalar
+calcaneoastragaloid
+calcaneocuboid
+calcaneofibular
+calcaneonavicular
+calcaneoplantar
+calcaneoscaphoid
+calcaneotibial
+calcaneum
+calcaneus
+calcar
+calcarate
+Calcarea
+calcareoargillaceous
+calcareobituminous
+calcareocorneous
+calcareosiliceous
+calcareosulphurous
+calcareous
+calcareously
+calcareousness
+calcariferous
+calcariform
+calcarine
+calced
+calceiform
+calcemia
+Calceolaria
+calceolate
+Calchaqui
+Calchaquian
+calcic
+calciclase
+calcicole
+calcicolous
+calcicosis
+calciferol
+Calciferous
+calciferous
+calcific
+calcification
+calcified
+calciform
+calcifugal
+calcifuge
+calcifugous
+calcify
+calcigenous
+calcigerous
+calcimeter
+calcimine
+calciminer
+calcinable
+calcination
+calcinatory
+calcine
+calcined
+calciner
+calcinize
+calciobiotite
+calciocarnotite
+calcioferrite
+calcioscheelite
+calciovolborthite
+calcipexy
+calciphile
+calciphilia
+calciphilous
+calciphobe
+calciphobous
+calciphyre
+calciprivic
+calcisponge
+Calcispongiae
+calcite
+calcitestaceous
+calcitic
+calcitrant
+calcitrate
+calcitreation
+calcium
+calcivorous
+calcographer
+calcographic
+calcography
+calcrete
+calculability
+calculable
+Calculagraph
+calculary
+calculate
+calculated
+calculatedly
+calculating
+calculatingly
+calculation
+calculational
+calculative
+calculator
+calculatory
+calculi
+calculiform
+calculist
+calculous
+calculus
+Calcydon
+calden
+caldron
+calean
+Caleb
+Caledonia
+Caledonian
+caledonite
+calefacient
+calefaction
+calefactive
+calefactor
+calefactory
+calelectric
+calelectrical
+calelectricity
+Calemes
+calendal
+calendar
+calendarer
+calendarial
+calendarian
+calendaric
+calender
+calenderer
+calendric
+calendrical
+calendry
+calends
+Calendula
+calendulin
+calentural
+calenture
+calenturist
+calepin
+calescence
+calescent
+calf
+calfbound
+calfhood
+calfish
+calfkill
+calfless
+calflike
+calfling
+calfskin
+Caliban
+Calibanism
+caliber
+calibered
+calibogus
+calibrate
+calibration
+calibrator
+calibre
+Caliburn
+Caliburno
+calicate
+calices
+caliciform
+calicle
+calico
+calicoback
+calicoed
+calicular
+caliculate
+Calicut
+calid
+calidity
+caliduct
+California
+Californian
+californite
+californium
+caliga
+caligated
+caliginous
+caliginously
+caligo
+Calimeris
+Calinago
+calinda
+calinut
+caliological
+caliologist
+caliology
+calipash
+calipee
+caliper
+caliperer
+calipers
+caliph
+caliphal
+caliphate
+caliphship
+Calista
+calistheneum
+calisthenic
+calisthenical
+calisthenics
+Calite
+caliver
+calix
+Calixtin
+Calixtus
+calk
+calkage
+calker
+calkin
+calking
+call
+Calla
+callable
+callainite
+callant
+callboy
+caller
+callet
+calli
+Callianassa
+Callianassidae
+Calliandra
+Callicarpa
+Callicebus
+callid
+callidity
+callidness
+calligraph
+calligrapha
+calligrapher
+calligraphic
+calligraphical
+calligraphically
+calligraphist
+calligraphy
+calling
+Callionymidae
+Callionymus
+Calliope
+calliophone
+Calliopsis
+calliper
+calliperer
+Calliphora
+calliphorid
+Calliphoridae
+calliphorine
+callipygian
+callipygous
+Callirrhoe
+Callisaurus
+callisection
+callisteia
+Callistemon
+Callistephus
+Callithrix
+callithump
+callithumpian
+Callitrichaceae
+callitrichaceous
+Callitriche
+Callitrichidae
+Callitris
+callitype
+callo
+Callorhynchidae
+Callorhynchus
+callosal
+callose
+callosity
+callosomarginal
+callosum
+callous
+callously
+callousness
+Callovian
+callow
+callower
+callowman
+callowness
+Calluna
+callus
+Callynteria
+calm
+calmant
+calmative
+calmer
+calmierer
+calmingly
+calmly
+calmness
+calmy
+Calocarpum
+Calochortaceae
+Calochortus
+calodemon
+calography
+calomba
+calomel
+calomorphic
+Calonectria
+Calonyction
+calool
+Calophyllum
+Calopogon
+calor
+calorescence
+calorescent
+caloric
+caloricity
+calorie
+calorifacient
+calorific
+calorifical
+calorifically
+calorification
+calorifics
+calorifier
+calorify
+calorigenic
+calorimeter
+calorimetric
+calorimetrical
+calorimetrically
+calorimetry
+calorimotor
+caloris
+calorisator
+calorist
+Calorite
+calorize
+calorizer
+Calosoma
+Calotermes
+calotermitid
+Calotermitidae
+Calothrix
+calotte
+calotype
+calotypic
+calotypist
+caloyer
+calp
+calpac
+calpack
+calpacked
+calpulli
+Caltha
+caltrap
+caltrop
+calumba
+calumet
+calumniate
+calumniation
+calumniative
+calumniator
+calumniatory
+calumnious
+calumniously
+calumniousness
+calumny
+Calusa
+calutron
+Calvados
+calvaria
+calvarium
+Calvary
+Calvatia
+calve
+calved
+calver
+calves
+Calvin
+Calvinian
+Calvinism
+Calvinist
+Calvinistic
+Calvinistical
+Calvinistically
+Calvinize
+calvish
+calvities
+calvity
+calvous
+calx
+calycanth
+Calycanthaceae
+calycanthaceous
+calycanthemous
+calycanthemy
+calycanthine
+Calycanthus
+calycate
+Calyceraceae
+calyceraceous
+calyces
+calyciferous
+calycifloral
+calyciflorate
+calyciflorous
+calyciform
+calycinal
+calycine
+calycle
+calycled
+Calycocarpum
+calycoid
+calycoideous
+Calycophora
+Calycophorae
+calycophoran
+Calycozoa
+calycozoan
+calycozoic
+calycozoon
+calycular
+calyculate
+calyculated
+calycule
+calyculus
+Calydon
+Calydonian
+Calymene
+calymma
+calyphyomy
+calypsist
+Calypso
+calypso
+calypsonian
+calypter
+Calypterae
+Calyptoblastea
+calyptoblastic
+Calyptorhynchus
+calyptra
+Calyptraea
+Calyptranthes
+Calyptrata
+Calyptratae
+calyptrate
+calyptriform
+calyptrimorphous
+calyptro
+calyptrogen
+Calyptrogyne
+Calystegia
+calyx
+cam
+camaca
+Camacan
+camagon
+camail
+camailed
+Camaldolensian
+Camaldolese
+Camaldolesian
+Camaldolite
+Camaldule
+Camaldulian
+camalote
+caman
+camansi
+camara
+camaraderie
+Camarasaurus
+camarilla
+camass
+Camassia
+camata
+camatina
+Camaxtli
+camb
+Camball
+Cambalo
+Cambarus
+cambaye
+camber
+Cambeva
+cambial
+cambiform
+cambiogenetic
+cambism
+cambist
+cambistry
+cambium
+Cambodian
+cambogia
+cambrel
+cambresine
+Cambrian
+Cambric
+cambricleaf
+cambuca
+Cambuscan
+Cambyuskan
+Came
+came
+cameist
+camel
+camelback
+cameleer
+Camelid
+Camelidae
+Camelina
+cameline
+camelish
+camelishness
+camelkeeper
+Camellia
+Camelliaceae
+camellike
+camellin
+Camellus
+camelman
+cameloid
+Cameloidea
+camelopard
+Camelopardalis
+Camelopardid
+Camelopardidae
+Camelopardus
+camelry
+Camelus
+Camembert
+Camenae
+Camenes
+cameo
+cameograph
+cameography
+camera
+cameral
+cameralism
+cameralist
+cameralistic
+cameralistics
+cameraman
+Camerata
+camerate
+camerated
+cameration
+camerier
+Camerina
+Camerinidae
+camerist
+camerlingo
+Cameronian
+Camestres
+camilla
+camillus
+camion
+camisado
+Camisard
+camise
+camisia
+camisole
+camlet
+camleteen
+Cammarum
+cammed
+cammock
+cammocky
+camomile
+camoodi
+camoodie
+Camorra
+Camorrism
+Camorrist
+Camorrista
+camouflage
+camouflager
+camp
+Campa
+campagna
+campagnol
+campaign
+campaigner
+campana
+campane
+campanero
+Campanian
+campaniform
+campanile
+campaniliform
+campanilla
+campanini
+campanist
+campanistic
+campanologer
+campanological
+campanologically
+campanologist
+campanology
+Campanula
+Campanulaceae
+campanulaceous
+Campanulales
+campanular
+Campanularia
+Campanulariae
+campanularian
+Campanularidae
+Campanulatae
+campanulate
+campanulated
+campanulous
+Campaspe
+Campbellism
+Campbellite
+campbellite
+campcraft
+Campe
+Campephagidae
+campephagine
+Campephilus
+camper
+campestral
+campfight
+campfire
+campground
+camphane
+camphanic
+camphanone
+camphanyl
+camphene
+camphine
+camphire
+campho
+camphocarboxylic
+camphoid
+camphol
+campholic
+campholide
+campholytic
+camphor
+camphoraceous
+camphorate
+camphoric
+camphorize
+camphorone
+camphoronic
+camphoroyl
+camphorphorone
+camphorwood
+camphory
+camphoryl
+camphylene
+Campignian
+campimeter
+campimetrical
+campimetry
+Campine
+campion
+cample
+campmaster
+campo
+Campodea
+campodeid
+Campodeidae
+campodeiform
+campodeoid
+campody
+Camponotus
+campoo
+camporee
+campshed
+campshedding
+campsheeting
+campshot
+campstool
+camptodrome
+camptonite
+Camptosorus
+campulitropal
+campulitropous
+campus
+campward
+campylite
+campylodrome
+campylometer
+Campyloneuron
+campylospermous
+campylotropal
+campylotropous
+camshach
+camshachle
+camshaft
+camstane
+camstone
+camuning
+camus
+camused
+camwood
+can
+Cana
+Canaan
+Canaanite
+Canaanitess
+Canaanitic
+Canaanitish
+canaba
+Canacee
+Canada
+canada
+Canadian
+Canadianism
+Canadianization
+Canadianize
+canadine
+canadite
+canadol
+canaigre
+canaille
+canajong
+canal
+canalage
+canalboat
+canalicular
+canaliculate
+canaliculated
+canaliculation
+canaliculi
+canaliculization
+canaliculus
+canaliferous
+canaliform
+canalization
+canalize
+canaller
+canalling
+canalman
+canalside
+Canamary
+canamo
+Cananaean
+Cananga
+Canangium
+canape
+canapina
+canard
+Canari
+canari
+Canarian
+canarin
+Canariote
+Canarium
+Canarsee
+canary
+canasta
+canaster
+canaut
+Canavali
+Canavalia
+canavalin
+Canberra
+cancan
+cancel
+cancelable
+cancelation
+canceleer
+canceler
+cancellarian
+cancellate
+cancellated
+cancellation
+cancelli
+cancellous
+cancellus
+cancelment
+cancer
+cancerate
+canceration
+cancerdrops
+cancered
+cancerigenic
+cancerism
+cancerophobe
+cancerophobia
+cancerous
+cancerously
+cancerousness
+cancerroot
+cancerweed
+cancerwort
+canch
+canchalagua
+Canchi
+Cancri
+Cancrid
+cancriform
+cancrinite
+cancrisocial
+cancrivorous
+cancrizans
+cancroid
+cancrophagous
+cancrum
+cand
+Candace
+candareen
+candela
+candelabra
+candelabrum
+candelilla
+candent
+candescence
+candescent
+candescently
+candid
+candidacy
+candidate
+candidateship
+candidature
+candidly
+candidness
+candied
+candier
+candify
+Candiot
+candiru
+candle
+candleball
+candlebeam
+candleberry
+candlebomb
+candlebox
+candlefish
+candleholder
+candlelight
+candlelighted
+candlelighter
+candlelighting
+candlelit
+candlemaker
+candlemaking
+Candlemas
+candlenut
+candlepin
+candler
+candlerent
+candleshine
+candleshrift
+candlestand
+candlestick
+candlesticked
+candlestickward
+candlewaster
+candlewasting
+candlewick
+candlewood
+candlewright
+candock
+Candollea
+Candolleaceae
+candolleaceous
+candor
+candroy
+candy
+candymaker
+candymaking
+candys
+candystick
+candytuft
+candyweed
+cane
+canebrake
+canel
+canelike
+canella
+Canellaceae
+canellaceous
+Canelo
+canelo
+caneology
+canephor
+canephore
+canephoros
+canephroi
+caner
+canescence
+canescent
+canette
+canewise
+canework
+Canfield
+canfieldite
+canful
+cangan
+cangia
+cangle
+cangler
+cangue
+canhoop
+Canichana
+Canichanan
+canicola
+Canicula
+canicular
+canicule
+canid
+Canidae
+Canidia
+canille
+caninal
+canine
+caniniform
+caninity
+caninus
+canioned
+canions
+Canis
+Canisiana
+canistel
+canister
+canities
+canjac
+cank
+canker
+cankerberry
+cankerbird
+cankereat
+cankered
+cankeredly
+cankeredness
+cankerflower
+cankerous
+cankerroot
+cankerweed
+cankerworm
+cankerwort
+cankery
+canmaker
+canmaking
+canman
+Canna
+canna
+cannabic
+Cannabinaceae
+cannabinaceous
+cannabine
+cannabinol
+Cannabis
+cannabism
+Cannaceae
+cannaceous
+cannach
+canned
+cannel
+cannelated
+cannelure
+cannelured
+cannequin
+canner
+cannery
+cannet
+cannibal
+cannibalean
+cannibalic
+cannibalish
+cannibalism
+cannibalistic
+cannibalistically
+cannibality
+cannibalization
+cannibalize
+cannibally
+cannikin
+cannily
+canniness
+canning
+cannon
+cannonade
+cannoned
+cannoneer
+cannoneering
+Cannonism
+cannonproof
+cannonry
+cannot
+Cannstatt
+cannula
+cannular
+cannulate
+cannulated
+canny
+canoe
+canoeing
+Canoeiro
+canoeist
+canoeload
+canoeman
+canoewood
+canon
+canoncito
+canoness
+canonic
+canonical
+canonically
+canonicalness
+canonicals
+canonicate
+canonicity
+canonics
+canonist
+canonistic
+canonistical
+canonizant
+canonization
+canonize
+canonizer
+canonlike
+canonry
+canonship
+canoodle
+canoodler
+Canopic
+canopic
+Canopus
+canopy
+canorous
+canorously
+canorousness
+Canossa
+canroy
+canroyer
+canso
+cant
+Cantab
+cantabank
+cantabile
+Cantabri
+Cantabrian
+Cantabrigian
+Cantabrize
+cantala
+cantalite
+cantaloupe
+cantankerous
+cantankerously
+cantankerousness
+cantar
+cantara
+cantaro
+cantata
+Cantate
+cantation
+cantative
+cantatory
+cantboard
+canted
+canteen
+cantefable
+canter
+Canterburian
+Canterburianism
+Canterbury
+canterer
+canthal
+Cantharellus
+Cantharidae
+cantharidal
+cantharidate
+cantharides
+cantharidian
+cantharidin
+cantharidism
+cantharidize
+cantharis
+cantharophilous
+cantharus
+canthectomy
+canthitis
+cantholysis
+canthoplasty
+canthorrhaphy
+canthotomy
+canthus
+cantic
+canticle
+cantico
+cantilena
+cantilene
+cantilever
+cantilevered
+cantillate
+cantillation
+cantily
+cantina
+cantiness
+canting
+cantingly
+cantingness
+cantion
+cantish
+cantle
+cantlet
+canto
+Canton
+canton
+cantonal
+cantonalism
+cantoned
+cantoner
+Cantonese
+cantonment
+cantoon
+cantor
+cantoral
+Cantorian
+cantoris
+cantorous
+cantorship
+cantred
+cantref
+cantrip
+cantus
+cantwise
+canty
+Canuck
+canun
+canvas
+canvasback
+canvasman
+canvass
+canvassy
+cany
+canyon
+canzon
+canzonet
+caoba
+Caodaism
+Caodaist
+caoutchouc
+caoutchoucin
+cap
+capability
+capable
+capableness
+capably
+capacious
+capaciously
+capaciousness
+capacitance
+capacitate
+capacitation
+capacitative
+capacitativly
+capacitive
+capacitor
+capacity
+capanna
+capanne
+caparison
+capax
+capcase
+Cape
+cape
+caped
+capel
+capelet
+capelin
+capeline
+Capella
+capellet
+caper
+caperbush
+capercaillie
+capercally
+capercut
+caperer
+capering
+caperingly
+Capernaism
+Capernaite
+Capernaitic
+Capernaitical
+Capernaitically
+Capernaitish
+capernoited
+capernoitie
+capernoity
+capersome
+caperwort
+capes
+capeskin
+Capetian
+Capetonian
+capeweed
+capewise
+capful
+Caph
+caph
+caphar
+caphite
+Caphtor
+Caphtorim
+capias
+capicha
+capillaceous
+capillaire
+capillament
+capillarectasia
+capillarily
+capillarimeter
+capillariness
+capillariomotor
+capillarity
+capillary
+capillation
+capilliculture
+capilliform
+capillitial
+capillitium
+capillose
+capistrate
+capital
+capitaldom
+capitaled
+capitalism
+capitalist
+capitalistic
+capitalistically
+capitalizable
+capitalization
+capitalize
+capitally
+capitalness
+capitan
+capitate
+capitated
+capitatim
+capitation
+capitative
+capitatum
+capitellar
+capitellate
+capitelliform
+capitellum
+Capito
+Capitol
+Capitolian
+Capitoline
+Capitolium
+Capitonidae
+Capitoninae
+capitoul
+capitoulate
+capitulant
+capitular
+capitularly
+capitulary
+capitulate
+capitulation
+capitulator
+capitulatory
+capituliform
+capitulum
+capivi
+capkin
+capless
+caplin
+capmaker
+capmaking
+capman
+capmint
+Capnodium
+Capnoides
+capnomancy
+capocchia
+capomo
+capon
+caponier
+caponize
+caponizer
+caporal
+capot
+capote
+cappadine
+Cappadocian
+Capparidaceae
+capparidaceous
+Capparis
+capped
+cappelenite
+capper
+cappie
+capping
+capple
+cappy
+Capra
+caprate
+Caprella
+Caprellidae
+caprelline
+capreol
+capreolar
+capreolary
+capreolate
+capreoline
+Capreolus
+Capri
+capric
+capriccetto
+capricci
+capriccio
+caprice
+capricious
+capriciously
+capriciousness
+Capricorn
+Capricornid
+Capricornus
+caprid
+caprificate
+caprification
+caprificator
+caprifig
+Caprifoliaceae
+caprifoliaceous
+Caprifolium
+caprifolium
+capriform
+caprigenous
+Caprimulgi
+Caprimulgidae
+Caprimulgiformes
+caprimulgine
+Caprimulgus
+caprin
+caprine
+caprinic
+Capriola
+capriole
+Capriote
+capriped
+capripede
+caprizant
+caproate
+caproic
+caproin
+Capromys
+caprone
+capronic
+capronyl
+caproyl
+capryl
+caprylate
+caprylene
+caprylic
+caprylin
+caprylone
+caprylyl
+capsa
+capsaicin
+Capsella
+capsheaf
+capshore
+Capsian
+capsicin
+Capsicum
+capsicum
+capsid
+Capsidae
+capsizal
+capsize
+capstan
+capstone
+capsula
+capsulae
+capsular
+capsulate
+capsulated
+capsulation
+capsule
+capsulectomy
+capsuler
+capsuliferous
+capsuliform
+capsuligerous
+capsulitis
+capsulociliary
+capsulogenous
+capsulolenticular
+capsulopupillary
+capsulorrhaphy
+capsulotome
+capsulotomy
+capsumin
+captaculum
+captain
+captaincy
+captainess
+captainly
+captainry
+captainship
+captance
+captation
+caption
+captious
+captiously
+captiousness
+captivate
+captivately
+captivating
+captivatingly
+captivation
+captivative
+captivator
+captivatrix
+captive
+captivity
+captor
+captress
+capturable
+capture
+capturer
+Capuan
+capuche
+capuched
+Capuchin
+capuchin
+capucine
+capulet
+capulin
+capybara
+Caquetio
+car
+Cara
+carabao
+carabeen
+carabid
+Carabidae
+carabidan
+carabideous
+carabidoid
+carabin
+carabineer
+Carabini
+caraboid
+Carabus
+carabus
+caracal
+caracara
+caracol
+caracole
+caracoler
+caracoli
+caracolite
+caracoller
+caracore
+caract
+Caractacus
+caracter
+Caradoc
+carafe
+Caragana
+Caraguata
+caraguata
+Caraho
+caraibe
+Caraipa
+caraipi
+Caraja
+Carajas
+carajura
+caramba
+carambola
+carambole
+caramel
+caramelan
+caramelen
+caramelin
+caramelization
+caramelize
+caramoussal
+carancha
+caranda
+Carandas
+caranday
+carane
+Caranga
+carangid
+Carangidae
+carangoid
+Carangus
+caranna
+Caranx
+Carapa
+carapace
+carapaced
+Carapache
+Carapacho
+carapacic
+carapato
+carapax
+Carapidae
+carapine
+carapo
+Carapus
+Carara
+carat
+caratch
+caraunda
+caravan
+caravaneer
+caravanist
+caravanner
+caravansary
+caravanserai
+caravanserial
+caravel
+caraway
+Carayan
+carbacidometer
+carbamate
+carbamic
+carbamide
+carbamido
+carbamine
+carbamino
+carbamyl
+carbanil
+carbanilic
+carbanilide
+carbarn
+carbasus
+carbazic
+carbazide
+carbazine
+carbazole
+carbazylic
+carbeen
+carbene
+carberry
+carbethoxy
+carbethoxyl
+carbide
+carbimide
+carbine
+carbinol
+carbinyl
+carbo
+carboazotine
+carbocinchomeronic
+carbodiimide
+carbodynamite
+carbogelatin
+carbohemoglobin
+carbohydrase
+carbohydrate
+carbohydraturia
+carbohydrazide
+carbohydride
+carbohydrogen
+carbolate
+carbolated
+carbolfuchsin
+carbolic
+carbolineate
+Carbolineum
+carbolize
+Carboloy
+carboluria
+carbolxylol
+carbomethene
+carbomethoxy
+carbomethoxyl
+carbon
+carbona
+carbonaceous
+carbonade
+carbonado
+Carbonari
+Carbonarism
+Carbonarist
+carbonatation
+carbonate
+carbonation
+carbonatization
+carbonator
+carbonemia
+carbonero
+carbonic
+carbonide
+Carboniferous
+carboniferous
+carbonification
+carbonify
+carbonigenous
+carbonimeter
+carbonimide
+carbonite
+carbonitride
+carbonium
+carbonizable
+carbonization
+carbonize
+carbonizer
+carbonless
+Carbonnieux
+carbonometer
+carbonometry
+carbonous
+carbonuria
+carbonyl
+carbonylene
+carbonylic
+carbophilous
+carbora
+Carborundum
+carborundum
+carbosilicate
+carbostyril
+carboxide
+carboxy
+Carboxydomonas
+carboxyhemoglobin
+carboxyl
+carboxylase
+carboxylate
+carboxylation
+carboxylic
+carboy
+carboyed
+carbro
+carbromal
+carbuilder
+carbuncle
+carbuncled
+carbuncular
+carbungi
+carburant
+carburate
+carburation
+carburator
+carbure
+carburet
+carburetant
+carburetor
+carburization
+carburize
+carburizer
+carburometer
+carbyl
+carbylamine
+carcajou
+carcake
+carcanet
+carcaneted
+carcass
+Carcavelhos
+carceag
+carcel
+carceral
+carcerate
+carceration
+Carcharhinus
+Carcharias
+carchariid
+Carchariidae
+carcharioid
+Carcharodon
+carcharodont
+carcinemia
+carcinogen
+carcinogenesis
+carcinogenic
+carcinoid
+carcinological
+carcinologist
+carcinology
+carcinolysin
+carcinolytic
+carcinoma
+carcinomata
+carcinomatoid
+carcinomatosis
+carcinomatous
+carcinomorphic
+carcinophagous
+carcinopolypus
+carcinosarcoma
+carcinosarcomata
+Carcinoscorpius
+carcinosis
+carcoon
+card
+cardaissin
+Cardamine
+cardamom
+Cardanic
+cardboard
+cardcase
+cardecu
+carded
+cardel
+carder
+cardholder
+cardia
+cardiac
+cardiacal
+Cardiacea
+cardiacean
+cardiagra
+cardiagram
+cardiagraph
+cardiagraphy
+cardial
+cardialgia
+cardialgy
+cardiameter
+cardiamorphia
+cardianesthesia
+cardianeuria
+cardiant
+cardiaplegia
+cardiarctia
+cardiasthenia
+cardiasthma
+cardiataxia
+cardiatomy
+cardiatrophia
+cardiauxe
+Cardiazol
+cardicentesis
+cardiectasis
+cardiectomize
+cardiectomy
+cardielcosis
+cardiemphraxia
+cardiform
+Cardigan
+cardigan
+Cardiidae
+cardin
+cardinal
+cardinalate
+cardinalic
+Cardinalis
+cardinalism
+cardinalist
+cardinalitial
+cardinalitian
+cardinally
+cardinalship
+cardines
+carding
+cardioaccelerator
+cardioarterial
+cardioblast
+cardiocarpum
+cardiocele
+cardiocentesis
+cardiocirrhosis
+cardioclasia
+cardioclasis
+cardiodilator
+cardiodynamics
+cardiodynia
+cardiodysesthesia
+cardiodysneuria
+cardiogenesis
+cardiogenic
+cardiogram
+cardiograph
+cardiographic
+cardiography
+cardiohepatic
+cardioid
+cardiokinetic
+cardiolith
+cardiological
+cardiologist
+cardiology
+cardiolysis
+cardiomalacia
+cardiomegaly
+cardiomelanosis
+cardiometer
+cardiometric
+cardiometry
+cardiomotility
+cardiomyoliposis
+cardiomyomalacia
+cardioncus
+cardionecrosis
+cardionephric
+cardioneural
+cardioneurosis
+cardionosus
+cardioparplasis
+cardiopathic
+cardiopathy
+cardiopericarditis
+cardiophobe
+cardiophobia
+cardiophrenia
+cardioplasty
+cardioplegia
+cardiopneumatic
+cardiopneumograph
+cardioptosis
+cardiopulmonary
+cardiopuncture
+cardiopyloric
+cardiorenal
+cardiorespiratory
+cardiorrhaphy
+cardiorrheuma
+cardiorrhexis
+cardioschisis
+cardiosclerosis
+cardioscope
+cardiospasm
+Cardiospermum
+cardiosphygmogram
+cardiosphygmograph
+cardiosymphysis
+cardiotherapy
+cardiotomy
+cardiotonic
+cardiotoxic
+cardiotrophia
+cardiotrophotherapy
+cardiovascular
+cardiovisceral
+cardipaludism
+cardipericarditis
+cardisophistical
+carditic
+carditis
+Cardium
+cardlike
+cardmaker
+cardmaking
+cardo
+cardol
+cardon
+cardona
+cardoncillo
+cardooer
+cardoon
+cardophagus
+cardplayer
+cardroom
+cardsharp
+cardsharping
+cardstock
+Carduaceae
+carduaceous
+Carduelis
+Carduus
+care
+carecloth
+careen
+careenage
+careener
+career
+careerer
+careering
+careeringly
+careerist
+carefree
+careful
+carefully
+carefulness
+careless
+carelessly
+carelessness
+carene
+carer
+caress
+caressant
+caresser
+caressing
+caressingly
+caressive
+caressively
+carest
+caret
+caretaker
+caretaking
+Caretta
+Carettochelydidae
+careworn
+Carex
+carfare
+carfax
+carfuffle
+carful
+carga
+cargo
+cargoose
+carhop
+carhouse
+cariacine
+Cariacus
+cariama
+Cariamae
+Carian
+Carib
+Caribal
+Cariban
+Caribbean
+Caribbee
+Caribi
+Caribisi
+caribou
+Carica
+Caricaceae
+caricaceous
+caricatura
+caricaturable
+caricatural
+caricature
+caricaturist
+caricetum
+caricographer
+caricography
+caricologist
+caricology
+caricous
+carid
+Carida
+Caridea
+caridean
+caridoid
+Caridomorpha
+caries
+Carijona
+carillon
+carillonneur
+carina
+carinal
+Carinaria
+Carinatae
+carinate
+carinated
+carination
+Cariniana
+cariniform
+Carinthian
+cariole
+carioling
+cariosity
+carious
+cariousness
+Caripuna
+Cariri
+Caririan
+Carisa
+Carissa
+caritative
+caritive
+Cariyo
+cark
+carking
+carkingly
+carkled
+Carl
+carl
+carless
+carlet
+carlie
+carlin
+Carlina
+carline
+carling
+carlings
+carlish
+carlishness
+Carlisle
+Carlism
+Carlist
+Carlo
+carload
+carloading
+carloadings
+Carlos
+carlot
+Carlovingian
+carls
+Carludovica
+Carlylean
+Carlyleian
+Carlylese
+Carlylesque
+Carlylian
+Carlylism
+carmagnole
+carmalum
+Carman
+carman
+Carmanians
+Carmel
+Carmela
+carmele
+Carmelite
+Carmelitess
+carmeloite
+Carmen
+carminative
+Carmine
+carmine
+carminette
+carminic
+carminite
+carminophilous
+carmoisin
+carmot
+Carnacian
+carnage
+carnaged
+carnal
+carnalism
+carnalite
+carnality
+carnalize
+carnallite
+carnally
+carnalness
+carnaptious
+Carnaria
+carnassial
+carnate
+carnation
+carnationed
+carnationist
+carnauba
+carnaubic
+carnaubyl
+Carnegie
+Carnegiea
+carnelian
+carneol
+carneole
+carneous
+carney
+carnic
+carniferous
+carniferrin
+carnifex
+carnification
+carnifices
+carnificial
+carniform
+carnify
+Carniolan
+carnival
+carnivaler
+carnivalesque
+Carnivora
+carnivoracity
+carnivoral
+carnivore
+carnivorism
+carnivorous
+carnivorously
+carnivorousness
+carnose
+carnosine
+carnosity
+carnotite
+carnous
+Caro
+caroa
+carob
+caroba
+caroche
+Caroid
+Carol
+carol
+Carolan
+Carole
+Carolean
+caroler
+caroli
+carolin
+Carolina
+Caroline
+caroline
+Caroling
+Carolingian
+Carolinian
+carolus
+Carolyn
+carom
+carombolette
+carone
+caronic
+caroome
+caroon
+carotene
+carotenoid
+carotic
+carotid
+carotidal
+carotidean
+carotin
+carotinemia
+carotinoid
+caroubier
+carousal
+carouse
+carouser
+carousing
+carousingly
+carp
+carpaine
+carpal
+carpale
+carpalia
+Carpathian
+carpel
+carpellary
+carpellate
+carpent
+carpenter
+Carpenteria
+carpentering
+carpentership
+carpentry
+carper
+carpet
+carpetbag
+carpetbagger
+carpetbaggery
+carpetbaggism
+carpetbagism
+carpetbeater
+carpeting
+carpetlayer
+carpetless
+carpetmaker
+carpetmaking
+carpetmonger
+carpetweb
+carpetweed
+carpetwork
+carpetwoven
+Carphiophiops
+carpholite
+Carphophis
+carphosiderite
+carpid
+carpidium
+carpincho
+carping
+carpingly
+carpintero
+Carpinus
+Carpiodes
+carpitis
+carpium
+carpocace
+Carpocapsa
+carpocarpal
+carpocephala
+carpocephalum
+carpocerite
+carpocervical
+Carpocratian
+Carpodacus
+Carpodetus
+carpogam
+carpogamy
+carpogenic
+carpogenous
+carpogone
+carpogonial
+carpogonium
+Carpoidea
+carpolite
+carpolith
+carpological
+carpologically
+carpologist
+carpology
+carpomania
+carpometacarpal
+carpometacarpus
+carpopedal
+Carpophaga
+carpophagous
+carpophalangeal
+carpophore
+carpophyll
+carpophyte
+carpopodite
+carpopoditic
+carpoptosia
+carpoptosis
+carport
+carpos
+carposperm
+carposporangia
+carposporangial
+carposporangium
+carpospore
+carposporic
+carposporous
+carpostome
+carpus
+carquaise
+carr
+carrack
+carrageen
+carrageenin
+Carrara
+Carraran
+carrel
+carriable
+carriage
+carriageable
+carriageful
+carriageless
+carriagesmith
+carriageway
+Carrick
+carrick
+Carrie
+carried
+carrier
+carrion
+carritch
+carritches
+carriwitchet
+Carrizo
+carrizo
+carroch
+carrollite
+carronade
+carrot
+carrotage
+carroter
+carrotiness
+carrottop
+carrotweed
+carrotwood
+carroty
+carrousel
+carrow
+Carry
+carry
+carryall
+carrying
+carrytale
+carse
+carshop
+carsick
+carsmith
+Carsten
+cart
+cartable
+cartaceous
+cartage
+cartboot
+cartbote
+carte
+cartel
+cartelism
+cartelist
+cartelization
+cartelize
+Carter
+carter
+Cartesian
+Cartesianism
+cartful
+Carthaginian
+carthame
+carthamic
+carthamin
+Carthamus
+Carthusian
+Cartier
+cartilage
+cartilaginean
+Cartilaginei
+cartilagineous
+Cartilagines
+cartilaginification
+cartilaginoid
+cartilaginous
+cartisane
+Cartist
+cartload
+cartmaker
+cartmaking
+cartman
+cartobibliography
+cartogram
+cartograph
+cartographer
+cartographic
+cartographical
+cartographically
+cartography
+cartomancy
+carton
+cartonnage
+cartoon
+cartoonist
+cartouche
+cartridge
+cartsale
+cartulary
+cartway
+cartwright
+cartwrighting
+carty
+carua
+carucage
+carucal
+carucate
+carucated
+Carum
+caruncle
+caruncula
+carunculae
+caruncular
+carunculate
+carunculated
+carunculous
+carvacrol
+carvacryl
+carval
+carve
+carvel
+carven
+carvene
+carver
+carvership
+carvestrene
+carving
+carvoepra
+carvol
+carvomenthene
+carvone
+carvyl
+carwitchet
+Cary
+Carya
+caryatic
+caryatid
+caryatidal
+caryatidean
+caryatidic
+caryl
+Caryocar
+Caryocaraceae
+caryocaraceous
+Caryophyllaceae
+caryophyllaceous
+caryophyllene
+caryophylleous
+caryophyllin
+caryophyllous
+Caryophyllus
+caryopilite
+caryopses
+caryopsides
+caryopsis
+Caryopteris
+Caryota
+casaba
+casabe
+casal
+casalty
+Casamarca
+Casanovanic
+Casasia
+casate
+casaun
+casava
+casave
+casavi
+casbah
+cascabel
+cascade
+Cascadia
+Cascadian
+cascadite
+cascado
+cascalho
+cascalote
+cascara
+cascarilla
+cascaron
+casco
+cascol
+Case
+case
+Casearia
+casease
+caseate
+caseation
+casebook
+casebox
+cased
+caseful
+casefy
+caseharden
+caseic
+casein
+caseinate
+caseinogen
+casekeeper
+Casel
+caseless
+caselessly
+casemaker
+casemaking
+casemate
+casemated
+casement
+casemented
+caseolysis
+caseose
+caseous
+caser
+casern
+caseum
+caseweed
+casewood
+casework
+caseworker
+caseworm
+Casey
+cash
+casha
+cashable
+cashableness
+cashaw
+cashbook
+cashbox
+cashboy
+cashcuttee
+cashel
+cashew
+cashgirl
+Cashibo
+cashier
+cashierer
+cashierment
+cashkeeper
+cashment
+Cashmere
+cashmere
+cashmerette
+Cashmirian
+Casimir
+Casimiroa
+casing
+casino
+casiri
+cask
+casket
+casking
+casklike
+Caslon
+Caspar
+Casparian
+Casper
+Caspian
+casque
+casqued
+casquet
+casquetel
+casquette
+cass
+cassabanana
+cassabully
+cassady
+Cassandra
+cassareep
+cassation
+casse
+Cassegrain
+Cassegrainian
+casselty
+cassena
+casserole
+Cassia
+cassia
+Cassiaceae
+Cassian
+cassican
+Cassicus
+Cassida
+cassideous
+cassidid
+Cassididae
+Cassidinae
+cassidony
+Cassidulina
+cassiduloid
+Cassiduloidea
+Cassie
+cassie
+Cassiepeia
+cassimere
+cassina
+cassine
+Cassinese
+cassinette
+Cassinian
+cassino
+cassinoid
+cassioberry
+Cassiope
+Cassiopeia
+Cassiopeian
+Cassiopeid
+cassiopeium
+Cassis
+cassis
+cassiterite
+Cassius
+cassock
+cassolette
+casson
+cassonade
+cassoon
+cassowary
+cassumunar
+Cassytha
+Cassythaceae
+cast
+castable
+castagnole
+Castalia
+Castalian
+Castalides
+Castalio
+Castanea
+castanean
+castaneous
+castanet
+Castanopsis
+Castanospermum
+castaway
+caste
+casteless
+castelet
+castellan
+castellano
+castellanship
+castellany
+castellar
+castellate
+castellated
+castellation
+caster
+casterless
+casthouse
+castice
+castigable
+castigate
+castigation
+castigative
+castigator
+castigatory
+Castilian
+Castilla
+Castilleja
+Castilloa
+casting
+castle
+castled
+castlelike
+castlet
+castlewards
+castlewise
+castling
+castock
+castoff
+Castor
+castor
+Castores
+castoreum
+castorial
+Castoridae
+castorin
+castorite
+castorized
+Castoroides
+castory
+castra
+castral
+castrametation
+castrate
+castrater
+castration
+castrator
+castrensial
+castrensian
+castrum
+castuli
+casual
+casualism
+casualist
+casuality
+casually
+casualness
+casualty
+Casuariidae
+Casuariiformes
+Casuarina
+Casuarinaceae
+casuarinaceous
+Casuarinales
+Casuarius
+casuary
+casuist
+casuistess
+casuistic
+casuistical
+casuistically
+casuistry
+casula
+caswellite
+Casziel
+Cat
+cat
+catabaptist
+catabases
+catabasis
+catabatic
+catabibazon
+catabiotic
+catabolic
+catabolically
+catabolin
+catabolism
+catabolite
+catabolize
+catacaustic
+catachreses
+catachresis
+catachrestic
+catachrestical
+catachrestically
+catachthonian
+cataclasm
+cataclasmic
+cataclastic
+cataclinal
+cataclysm
+cataclysmal
+cataclysmatic
+cataclysmatist
+cataclysmic
+cataclysmically
+cataclysmist
+catacomb
+catacorolla
+catacoustics
+catacromyodian
+catacrotic
+catacrotism
+catacumbal
+catadicrotic
+catadicrotism
+catadioptric
+catadioptrical
+catadioptrics
+catadromous
+catafalco
+catafalque
+catagenesis
+catagenetic
+catagmatic
+Cataian
+catakinesis
+catakinetic
+catakinetomer
+catakinomeric
+Catalan
+Catalanganes
+Catalanist
+catalase
+Catalaunian
+catalecta
+catalectic
+catalecticant
+catalepsis
+catalepsy
+cataleptic
+cataleptiform
+cataleptize
+cataleptoid
+catalexis
+catalina
+catalineta
+catalinite
+catallactic
+catallactically
+catallactics
+catallum
+catalogia
+catalogic
+catalogical
+catalogist
+catalogistic
+catalogue
+cataloguer
+cataloguish
+cataloguist
+cataloguize
+Catalonian
+catalowne
+Catalpa
+catalpa
+catalufa
+catalyses
+catalysis
+catalyst
+catalyte
+catalytic
+catalytical
+catalytically
+catalyzator
+catalyze
+catalyzer
+catamaran
+Catamarcan
+Catamarenan
+catamenia
+catamenial
+catamite
+catamited
+catamiting
+catamount
+catamountain
+catan
+Catananche
+catapan
+catapasm
+catapetalous
+cataphasia
+cataphatic
+cataphora
+cataphoresis
+cataphoretic
+cataphoria
+cataphoric
+cataphract
+Cataphracta
+Cataphracti
+cataphrenia
+cataphrenic
+Cataphrygian
+cataphrygianism
+cataphyll
+cataphylla
+cataphyllary
+cataphyllum
+cataphysical
+cataplasia
+cataplasis
+cataplasm
+catapleiite
+cataplexy
+catapult
+catapultic
+catapultier
+cataract
+cataractal
+cataracted
+cataractine
+cataractous
+cataractwise
+cataria
+catarinite
+catarrh
+catarrhal
+catarrhally
+catarrhed
+Catarrhina
+catarrhine
+catarrhinian
+catarrhous
+catasarka
+Catasetum
+catasta
+catastaltic
+catastasis
+catastate
+catastatic
+catasterism
+catastrophal
+catastrophe
+catastrophic
+catastrophical
+catastrophically
+catastrophism
+catastrophist
+catathymic
+catatonia
+catatoniac
+catatonic
+catawampous
+catawampously
+catawamptious
+catawamptiously
+catawampus
+Catawba
+catberry
+catbird
+catboat
+catcall
+catch
+catchable
+catchall
+catchcry
+catcher
+catchfly
+catchiness
+catching
+catchingly
+catchingness
+catchland
+catchment
+catchpenny
+catchplate
+catchpole
+catchpolery
+catchpoleship
+catchpoll
+catchpollery
+catchup
+catchwater
+catchweed
+catchweight
+catchword
+catchwork
+catchy
+catclaw
+catdom
+cate
+catechesis
+catechetic
+catechetical
+catechetically
+catechin
+catechism
+catechismal
+catechist
+catechistic
+catechistical
+catechistically
+catechizable
+catechization
+catechize
+catechizer
+catechol
+catechu
+catechumen
+catechumenal
+catechumenate
+catechumenical
+catechumenically
+catechumenism
+catechumenship
+catechutannic
+categorem
+categorematic
+categorematical
+categorematically
+categorial
+categoric
+categorical
+categorically
+categoricalness
+categorist
+categorization
+categorize
+category
+catelectrotonic
+catelectrotonus
+catella
+catena
+catenae
+catenarian
+catenary
+catenate
+catenated
+catenation
+catenoid
+catenulate
+catepuce
+cater
+cateran
+catercap
+catercorner
+caterer
+caterership
+cateress
+caterpillar
+caterpillared
+caterpillarlike
+caterva
+caterwaul
+caterwauler
+caterwauling
+Catesbaea
+cateye
+catface
+catfaced
+catfacing
+catfall
+catfish
+catfoot
+catfooted
+catgut
+Catha
+Cathari
+Catharina
+Catharine
+Catharism
+Catharist
+Catharistic
+catharization
+catharize
+catharpin
+catharping
+Cathars
+catharsis
+Cathartae
+Cathartes
+cathartic
+cathartical
+cathartically
+catharticalness
+Cathartidae
+Cathartides
+Cathartolinum
+Cathay
+Cathayan
+cathead
+cathect
+cathectic
+cathection
+cathedra
+cathedral
+cathedraled
+cathedralesque
+cathedralic
+cathedrallike
+cathedralwise
+cathedratic
+cathedratica
+cathedratical
+cathedratically
+cathedraticum
+cathepsin
+Catherine
+catheter
+catheterism
+catheterization
+catheterize
+catheti
+cathetometer
+cathetometric
+cathetus
+cathexion
+cathexis
+cathidine
+cathin
+cathine
+cathinine
+cathion
+cathisma
+cathodal
+cathode
+cathodic
+cathodical
+cathodically
+cathodofluorescence
+cathodograph
+cathodography
+cathodoluminescence
+cathograph
+cathography
+cathole
+catholic
+catholical
+catholically
+catholicalness
+catholicate
+catholicism
+catholicist
+catholicity
+catholicize
+catholicizer
+catholicly
+catholicness
+catholicon
+catholicos
+catholicus
+catholyte
+cathood
+cathop
+Cathrin
+cathro
+Cathryn
+Cathy
+Catilinarian
+cation
+cationic
+cativo
+catjang
+catkin
+catkinate
+catlap
+catlike
+catlin
+catling
+catlinite
+catmalison
+catmint
+catnip
+catoblepas
+Catocala
+catocalid
+catocathartic
+catoctin
+Catodon
+catodont
+catogene
+catogenic
+Catoism
+Catonian
+Catonic
+Catonically
+Catonism
+catoptric
+catoptrical
+catoptrically
+catoptrics
+catoptrite
+catoptromancy
+catoptromantic
+Catoquina
+catostomid
+Catostomidae
+catostomoid
+Catostomus
+catpiece
+catpipe
+catproof
+Catskill
+catskin
+catstep
+catstick
+catstitch
+catstitcher
+catstone
+catsup
+cattabu
+cattail
+cattalo
+cattery
+Catti
+cattily
+cattimandoo
+cattiness
+catting
+cattish
+cattishly
+cattishness
+cattle
+cattlebush
+cattlegate
+cattleless
+cattleman
+Cattleya
+cattleya
+cattleyak
+Catty
+catty
+cattyman
+Catullian
+catvine
+catwalk
+catwise
+catwood
+catwort
+caubeen
+cauboge
+Caucasian
+Caucasic
+Caucasoid
+cauch
+cauchillo
+caucho
+caucus
+cauda
+caudad
+caudae
+caudal
+caudally
+caudalward
+Caudata
+caudata
+caudate
+caudated
+caudation
+caudatolenticular
+caudatory
+caudatum
+caudex
+caudices
+caudicle
+caudiform
+caudillism
+caudle
+caudocephalad
+caudodorsal
+caudofemoral
+caudolateral
+caudotibial
+caudotibialis
+Caughnawaga
+caught
+cauk
+caul
+cauld
+cauldrife
+cauldrifeness
+Caulerpa
+Caulerpaceae
+caulerpaceous
+caules
+caulescent
+caulicle
+caulicole
+caulicolous
+caulicule
+cauliculus
+cauliferous
+cauliflorous
+cauliflory
+cauliflower
+cauliform
+cauligenous
+caulinar
+caulinary
+cauline
+caulis
+Caulite
+caulivorous
+caulocarpic
+caulocarpous
+caulome
+caulomer
+caulomic
+caulophylline
+Caulophyllum
+Caulopteris
+caulopteris
+caulosarc
+caulotaxis
+caulotaxy
+caulote
+caum
+cauma
+caumatic
+caunch
+Caunos
+Caunus
+caup
+caupo
+caupones
+Cauqui
+caurale
+Caurus
+causability
+causable
+causal
+causalgia
+causality
+causally
+causate
+causation
+causational
+causationism
+causationist
+causative
+causatively
+causativeness
+causativity
+cause
+causeful
+causeless
+causelessly
+causelessness
+causer
+causerie
+causeway
+causewayman
+causey
+causidical
+causing
+causingness
+causse
+causson
+caustic
+caustical
+caustically
+causticiser
+causticism
+causticity
+causticization
+causticize
+causticizer
+causticly
+causticness
+caustification
+caustify
+Causus
+cautel
+cautelous
+cautelously
+cautelousness
+cauter
+cauterant
+cauterization
+cauterize
+cautery
+caution
+cautionary
+cautioner
+cautionry
+cautious
+cautiously
+cautiousness
+cautivo
+cava
+cavae
+caval
+cavalcade
+cavalero
+cavalier
+cavalierish
+cavalierishness
+cavalierism
+cavalierly
+cavalierness
+cavaliero
+cavaliership
+cavalla
+cavalry
+cavalryman
+cavascope
+cavate
+cavatina
+cave
+caveat
+caveator
+cavekeeper
+cavel
+cavelet
+cavelike
+cavendish
+cavern
+cavernal
+caverned
+cavernicolous
+cavernitis
+cavernlike
+cavernoma
+cavernous
+cavernously
+cavernulous
+cavesson
+cavetto
+Cavia
+caviar
+cavicorn
+Cavicornia
+Cavidae
+cavie
+cavil
+caviler
+caviling
+cavilingly
+cavilingness
+cavillation
+Cavina
+caving
+cavings
+cavish
+cavitary
+cavitate
+cavitation
+cavitied
+cavity
+caviya
+cavort
+cavus
+cavy
+caw
+cawk
+cawky
+cawney
+cawquaw
+caxiri
+caxon
+Caxton
+Caxtonian
+cay
+Cayapa
+Cayapo
+Cayenne
+cayenne
+cayenned
+Cayleyan
+cayman
+Cayubaba
+Cayubaban
+Cayuga
+Cayugan
+Cayuse
+Cayuvava
+caza
+cazimi
+Ccoya
+ce
+Ceanothus
+cearin
+cease
+ceaseless
+ceaselessly
+ceaselessness
+ceasmic
+Cebalrai
+Cebatha
+cebell
+cebian
+cebid
+Cebidae
+cebil
+cebine
+ceboid
+cebollite
+cebur
+Cebus
+cecidiologist
+cecidiology
+cecidium
+cecidogenous
+cecidologist
+cecidology
+cecidomyian
+cecidomyiid
+Cecidomyiidae
+cecidomyiidous
+Cecil
+Cecile
+Cecilia
+cecilite
+cecils
+Cecily
+cecity
+cecograph
+Cecomorphae
+cecomorphic
+cecostomy
+Cecropia
+Cecrops
+cecutiency
+cedar
+cedarbird
+cedared
+cedarn
+cedarware
+cedarwood
+cedary
+cede
+cedent
+ceder
+cedilla
+cedrat
+cedrate
+cedre
+Cedrela
+cedrene
+Cedric
+cedrin
+cedrine
+cedriret
+cedrium
+cedrol
+cedron
+Cedrus
+cedry
+cedula
+cee
+Ceiba
+ceibo
+ceil
+ceile
+ceiler
+ceilidh
+ceiling
+ceilinged
+ceilingward
+ceilingwards
+ceilometer
+Celadon
+celadon
+celadonite
+Celaeno
+celandine
+Celanese
+Celarent
+Celastraceae
+celastraceous
+Celastrus
+celation
+celative
+celature
+Celebesian
+celebrant
+celebrate
+celebrated
+celebratedness
+celebrater
+celebration
+celebrative
+celebrator
+celebratory
+celebrity
+celemin
+celemines
+celeomorph
+Celeomorphae
+celeomorphic
+celeriac
+celerity
+celery
+celesta
+Celeste
+celeste
+celestial
+celestiality
+celestialize
+celestially
+celestialness
+celestina
+Celestine
+celestine
+Celestinian
+celestite
+celestitude
+Celia
+celiac
+celiadelphus
+celiagra
+celialgia
+celibacy
+celibatarian
+celibate
+celibatic
+celibatist
+celibatory
+celidographer
+celidography
+celiectasia
+celiectomy
+celiemia
+celiitis
+celiocele
+celiocentesis
+celiocolpotomy
+celiocyesis
+celiodynia
+celioelytrotomy
+celioenterotomy
+celiogastrotomy
+celiohysterotomy
+celiolymph
+celiomyalgia
+celiomyodynia
+celiomyomectomy
+celiomyomotomy
+celiomyositis
+celioncus
+celioparacentesis
+celiopyosis
+celiorrhaphy
+celiorrhea
+celiosalpingectomy
+celiosalpingotomy
+celioschisis
+celioscope
+celioscopy
+celiotomy
+celite
+cell
+cella
+cellae
+cellar
+cellarage
+cellarer
+cellaress
+cellaret
+cellaring
+cellarless
+cellarman
+cellarous
+cellarway
+cellarwoman
+cellated
+celled
+Cellepora
+cellepore
+Cellfalcicula
+celliferous
+celliform
+cellifugal
+cellipetal
+cellist
+Cellite
+cello
+cellobiose
+celloid
+celloidin
+celloist
+cellophane
+cellose
+Cellucotton
+cellular
+cellularity
+cellularly
+cellulase
+cellulate
+cellulated
+cellulation
+cellule
+cellulicidal
+celluliferous
+cellulifugal
+cellulifugally
+cellulin
+cellulipetal
+cellulipetally
+cellulitis
+cellulocutaneous
+cellulofibrous
+Celluloid
+celluloid
+celluloided
+Cellulomonadeae
+Cellulomonas
+cellulose
+cellulosic
+cellulosity
+cellulotoxic
+cellulous
+Cellvibrio
+Celosia
+Celotex
+celotomy
+Celsia
+celsian
+Celsius
+Celt
+celt
+Celtdom
+Celtiberi
+Celtiberian
+Celtic
+Celtically
+Celticism
+Celticist
+Celticize
+Celtidaceae
+celtiform
+Celtillyrians
+Celtis
+Celtish
+Celtism
+Celtist
+celtium
+Celtization
+Celtologist
+Celtologue
+Celtomaniac
+Celtophil
+Celtophobe
+Celtophobia
+celtuce
+cembalist
+cembalo
+cement
+cemental
+cementation
+cementatory
+cementer
+cementification
+cementin
+cementite
+cementitious
+cementless
+cementmaker
+cementmaking
+cementoblast
+cementoma
+cementum
+cemeterial
+cemetery
+cenacle
+cenaculum
+cenanthous
+cenanthy
+cencerro
+Cenchrus
+cendre
+cenobian
+cenobite
+cenobitic
+cenobitical
+cenobitically
+cenobitism
+cenobium
+cenoby
+cenogenesis
+cenogenetic
+cenogenetically
+cenogonous
+Cenomanian
+cenosite
+cenosity
+cenospecies
+cenospecific
+cenospecifically
+cenotaph
+cenotaphic
+cenotaphy
+Cenozoic
+cenozoology
+cense
+censer
+censerless
+censive
+censor
+censorable
+censorate
+censorial
+censorious
+censoriously
+censoriousness
+censorship
+censual
+censurability
+censurable
+censurableness
+censurably
+censure
+censureless
+censurer
+censureship
+census
+cent
+centage
+cental
+centare
+centaur
+centaurdom
+Centaurea
+centauress
+centauri
+centaurial
+centaurian
+centauric
+Centaurid
+Centauridium
+Centaurium
+centauromachia
+centauromachy
+Centaurus
+centaurus
+centaury
+centavo
+centena
+centenar
+centenarian
+centenarianism
+centenary
+centenier
+centenionalis
+centennial
+centennially
+center
+centerable
+centerboard
+centered
+centerer
+centering
+centerless
+centermost
+centerpiece
+centervelic
+centerward
+centerwise
+centesimal
+centesimally
+centesimate
+centesimation
+centesimi
+centesimo
+centesis
+Centetes
+centetid
+Centetidae
+centgener
+centiar
+centiare
+centibar
+centifolious
+centigrade
+centigram
+centile
+centiliter
+centillion
+centillionth
+Centiloquy
+centime
+centimeter
+centimo
+centimolar
+centinormal
+centipedal
+centipede
+centiplume
+centipoise
+centistere
+centistoke
+centner
+cento
+centonical
+centonism
+centrad
+central
+centrale
+Centrales
+centralism
+centralist
+centralistic
+centrality
+centralization
+centralize
+centralizer
+centrally
+centralness
+centranth
+Centranthus
+centrarchid
+Centrarchidae
+centrarchoid
+Centraxonia
+centraxonial
+Centrechinoida
+centric
+Centricae
+centrical
+centricality
+centrically
+centricalness
+centricipital
+centriciput
+centricity
+centriffed
+centrifugal
+centrifugalization
+centrifugalize
+centrifugaller
+centrifugally
+centrifugate
+centrifugation
+centrifuge
+centrifugence
+centriole
+centripetal
+centripetalism
+centripetally
+centripetence
+centripetency
+centriscid
+Centriscidae
+centrisciform
+centriscoid
+Centriscus
+centrist
+centroacinar
+centrobaric
+centrobarical
+centroclinal
+centrode
+centrodesmose
+centrodesmus
+centrodorsal
+centrodorsally
+centroid
+centroidal
+centrolecithal
+Centrolepidaceae
+centrolepidaceous
+centrolinead
+centrolineal
+centromere
+centronucleus
+centroplasm
+Centropomidae
+Centropomus
+Centrosema
+centrosome
+centrosomic
+Centrosoyus
+Centrospermae
+centrosphere
+centrosymmetric
+centrosymmetry
+Centrotus
+centrum
+centry
+centum
+centumvir
+centumviral
+centumvirate
+Centunculus
+centuple
+centuplicate
+centuplication
+centuply
+centuria
+centurial
+centuriate
+centuriation
+centuriator
+centuried
+centurion
+century
+ceorl
+ceorlish
+cep
+cepa
+cepaceous
+cepe
+cephaeline
+Cephaelis
+Cephalacanthidae
+Cephalacanthus
+cephalad
+cephalagra
+cephalalgia
+cephalalgic
+cephalalgy
+cephalanthium
+cephalanthous
+Cephalanthus
+Cephalaspis
+Cephalata
+cephalate
+cephaldemae
+cephalemia
+cephaletron
+Cephaleuros
+cephalhematoma
+cephalhydrocele
+cephalic
+cephalin
+Cephalina
+cephaline
+cephalism
+cephalitis
+cephalization
+cephaloauricular
+Cephalobranchiata
+cephalobranchiate
+cephalocathartic
+cephalocaudal
+cephalocele
+cephalocentesis
+cephalocercal
+Cephalocereus
+cephalochord
+Cephalochorda
+cephalochordal
+Cephalochordata
+cephalochordate
+cephaloclasia
+cephaloclast
+cephalocone
+cephaloconic
+cephalocyst
+cephalodiscid
+Cephalodiscida
+Cephalodiscus
+cephalodymia
+cephalodymus
+cephalodynia
+cephalofacial
+cephalogenesis
+cephalogram
+cephalograph
+cephalohumeral
+cephalohumeralis
+cephaloid
+cephalology
+cephalomancy
+cephalomant
+cephalomelus
+cephalomenia
+cephalomeningitis
+cephalomere
+cephalometer
+cephalometric
+cephalometry
+cephalomotor
+cephalomyitis
+cephalon
+cephalonasal
+cephalopagus
+cephalopathy
+cephalopharyngeal
+cephalophine
+cephalophorous
+Cephalophus
+cephalophyma
+cephaloplegia
+cephaloplegic
+cephalopod
+Cephalopoda
+cephalopodan
+cephalopodic
+cephalopodous
+Cephalopterus
+cephalorachidian
+cephalorhachidian
+cephalosome
+cephalospinal
+Cephalosporium
+cephalostyle
+Cephalotaceae
+cephalotaceous
+Cephalotaxus
+cephalotheca
+cephalothecal
+cephalothoracic
+cephalothoracopagus
+cephalothorax
+cephalotome
+cephalotomy
+cephalotractor
+cephalotribe
+cephalotripsy
+cephalotrocha
+Cephalotus
+cephalous
+Cephas
+Cepheid
+cephid
+Cephidae
+Cephus
+Cepolidae
+ceps
+ceptor
+cequi
+ceraceous
+cerago
+ceral
+ceramal
+cerambycid
+Cerambycidae
+Ceramiaceae
+ceramiaceous
+ceramic
+ceramicite
+ceramics
+ceramidium
+ceramist
+Ceramium
+ceramographic
+ceramography
+cerargyrite
+ceras
+cerasein
+cerasin
+cerastes
+Cerastium
+Cerasus
+cerata
+cerate
+ceratectomy
+cerated
+ceratiasis
+ceratiid
+Ceratiidae
+ceratioid
+ceration
+ceratite
+Ceratites
+ceratitic
+Ceratitidae
+Ceratitis
+ceratitoid
+Ceratitoidea
+Ceratium
+Ceratobatrachinae
+ceratoblast
+ceratobranchial
+ceratocricoid
+Ceratodidae
+Ceratodontidae
+Ceratodus
+ceratofibrous
+ceratoglossal
+ceratoglossus
+ceratohyal
+ceratohyoid
+ceratoid
+ceratomandibular
+ceratomania
+Ceratonia
+Ceratophrys
+Ceratophyllaceae
+ceratophyllaceous
+Ceratophyllum
+Ceratophyta
+ceratophyte
+Ceratops
+Ceratopsia
+ceratopsian
+ceratopsid
+Ceratopsidae
+Ceratopteridaceae
+ceratopteridaceous
+Ceratopteris
+ceratorhine
+Ceratosa
+Ceratosaurus
+Ceratospongiae
+ceratospongian
+Ceratostomataceae
+Ceratostomella
+ceratotheca
+ceratothecal
+Ceratozamia
+ceraunia
+ceraunics
+ceraunogram
+ceraunograph
+ceraunomancy
+ceraunophone
+ceraunoscope
+ceraunoscopy
+Cerberean
+Cerberic
+Cerberus
+cercal
+cercaria
+cercarial
+cercarian
+cercariform
+cercelee
+cerci
+Cercidiphyllaceae
+Cercis
+Cercocebus
+Cercolabes
+Cercolabidae
+cercomonad
+Cercomonadidae
+Cercomonas
+cercopid
+Cercopidae
+cercopithecid
+Cercopithecidae
+cercopithecoid
+Cercopithecus
+cercopod
+Cercospora
+Cercosporella
+cercus
+Cerdonian
+cere
+cereal
+cerealian
+cerealin
+cerealism
+cerealist
+cerealose
+cerebella
+cerebellar
+cerebellifugal
+cerebellipetal
+cerebellocortex
+cerebellopontile
+cerebellopontine
+cerebellorubral
+cerebellospinal
+cerebellum
+cerebra
+cerebral
+cerebralgia
+cerebralism
+cerebralist
+cerebralization
+cerebralize
+cerebrally
+cerebrasthenia
+cerebrasthenic
+cerebrate
+cerebration
+cerebrational
+Cerebratulus
+cerebric
+cerebricity
+cerebriform
+cerebriformly
+cerebrifugal
+cerebrin
+cerebripetal
+cerebritis
+cerebrize
+cerebrocardiac
+cerebrogalactose
+cerebroganglion
+cerebroganglionic
+cerebroid
+cerebrology
+cerebroma
+cerebromalacia
+cerebromedullary
+cerebromeningeal
+cerebromeningitis
+cerebrometer
+cerebron
+cerebronic
+cerebroparietal
+cerebropathy
+cerebropedal
+cerebrophysiology
+cerebropontile
+cerebropsychosis
+cerebrorachidian
+cerebrosclerosis
+cerebroscope
+cerebroscopy
+cerebrose
+cerebrosensorial
+cerebroside
+cerebrosis
+cerebrospinal
+cerebrospinant
+cerebrosuria
+cerebrotomy
+cerebrotonia
+cerebrotonic
+cerebrovisceral
+cerebrum
+cerecloth
+cered
+cereless
+cerement
+ceremonial
+ceremonialism
+ceremonialist
+ceremonialize
+ceremonially
+ceremonious
+ceremoniously
+ceremoniousness
+ceremony
+cereous
+cerer
+ceresin
+Cereus
+cerevis
+ceria
+Cerialia
+cerianthid
+Cerianthidae
+cerianthoid
+Cerianthus
+ceric
+ceride
+ceriferous
+cerigerous
+cerillo
+ceriman
+cerin
+cerine
+Cerinthe
+Cerinthian
+Ceriomyces
+Cerion
+Cerionidae
+ceriops
+Ceriornis
+cerise
+cerite
+Cerithiidae
+cerithioid
+Cerithium
+cerium
+cermet
+cern
+cerniture
+cernuous
+cero
+cerograph
+cerographic
+cerographist
+cerography
+ceroline
+cerolite
+ceroma
+ceromancy
+cerophilous
+ceroplast
+ceroplastic
+ceroplastics
+ceroplasty
+cerotate
+cerote
+cerotene
+cerotic
+cerotin
+cerotype
+cerous
+ceroxyle
+Ceroxylon
+cerrero
+cerrial
+cerris
+certain
+certainly
+certainty
+Certhia
+Certhiidae
+certie
+certifiable
+certifiableness
+certifiably
+certificate
+certification
+certificative
+certificator
+certificatory
+certified
+certifier
+certify
+certiorari
+certiorate
+certioration
+certis
+certitude
+certosina
+certosino
+certy
+cerule
+cerulean
+cerulein
+ceruleite
+ceruleolactite
+ceruleous
+cerulescent
+ceruleum
+cerulignol
+cerulignone
+cerumen
+ceruminal
+ceruminiferous
+ceruminous
+cerumniparous
+ceruse
+cerussite
+Cervantist
+cervantite
+cervical
+Cervicapra
+cervicaprine
+cervicectomy
+cervicicardiac
+cervicide
+cerviciplex
+cervicispinal
+cervicitis
+cervicoauricular
+cervicoaxillary
+cervicobasilar
+cervicobrachial
+cervicobregmatic
+cervicobuccal
+cervicodorsal
+cervicodynia
+cervicofacial
+cervicohumeral
+cervicolabial
+cervicolingual
+cervicolumbar
+cervicomuscular
+cerviconasal
+cervicorn
+cervicoscapular
+cervicothoracic
+cervicovaginal
+cervicovesical
+cervid
+Cervidae
+Cervinae
+cervine
+cervisia
+cervisial
+cervix
+cervoid
+cervuline
+Cervulus
+Cervus
+ceryl
+Cerynean
+Cesare
+cesarevitch
+cesarolite
+cesious
+cesium
+cespititous
+cespitose
+cespitosely
+cespitulose
+cess
+cessantly
+cessation
+cessative
+cessavit
+cesser
+cession
+cessionaire
+cessionary
+cessor
+cesspipe
+cesspit
+cesspool
+cest
+Cestida
+Cestidae
+Cestoda
+Cestodaria
+cestode
+cestoid
+Cestoidea
+cestoidean
+Cestracion
+cestraciont
+Cestraciontes
+Cestraciontidae
+Cestrian
+Cestrum
+cestrum
+cestus
+Cetacea
+cetacean
+cetaceous
+cetaceum
+cetane
+Cete
+cetene
+ceterach
+ceti
+cetic
+ceticide
+Cetid
+cetin
+Cetiosauria
+cetiosaurian
+Cetiosaurus
+cetological
+cetologist
+cetology
+Cetomorpha
+cetomorphic
+Cetonia
+cetonian
+Cetoniides
+Cetoniinae
+cetorhinid
+Cetorhinidae
+cetorhinoid
+Cetorhinus
+cetotolite
+Cetraria
+cetraric
+cetrarin
+Cetus
+cetyl
+cetylene
+cetylic
+cevadilla
+cevadilline
+cevadine
+Cevennian
+Cevenol
+Cevenole
+cevine
+cevitamic
+ceylanite
+Ceylon
+Ceylonese
+ceylonite
+ceyssatite
+Ceyx
+Cezannesque
+cha
+chaa
+chab
+chabasie
+chabazite
+Chablis
+chabot
+chabouk
+chabuk
+chabutra
+Chac
+chacate
+chachalaca
+Chachapuya
+chack
+Chackchiuma
+chacker
+chackle
+chackler
+chacma
+Chaco
+chacona
+chacte
+chad
+chadacryst
+Chaenactis
+Chaenolobus
+Chaenomeles
+chaeta
+Chaetangiaceae
+Chaetangium
+Chaetetes
+Chaetetidae
+Chaetifera
+chaetiferous
+Chaetites
+Chaetitidae
+Chaetochloa
+Chaetodon
+chaetodont
+chaetodontid
+Chaetodontidae
+chaetognath
+Chaetognatha
+chaetognathan
+chaetognathous
+Chaetophora
+Chaetophoraceae
+chaetophoraceous
+Chaetophorales
+chaetophorous
+chaetopod
+Chaetopoda
+chaetopodan
+chaetopodous
+chaetopterin
+Chaetopterus
+chaetosema
+Chaetosoma
+Chaetosomatidae
+Chaetosomidae
+chaetotactic
+chaetotaxy
+Chaetura
+chafe
+chafer
+chafery
+chafewax
+chafeweed
+chaff
+chaffcutter
+chaffer
+chafferer
+chaffinch
+chaffiness
+chaffing
+chaffingly
+chaffless
+chafflike
+chaffman
+chaffseed
+chaffwax
+chaffweed
+chaffy
+chaft
+chafted
+Chaga
+chagan
+Chagga
+chagrin
+chaguar
+chagul
+chahar
+chai
+Chailletiaceae
+chain
+chainage
+chained
+chainer
+chainette
+chainless
+chainlet
+chainmaker
+chainmaking
+chainman
+chainon
+chainsmith
+chainwale
+chainwork
+chair
+chairer
+chairless
+chairmaker
+chairmaking
+chairman
+chairmanship
+chairmender
+chairmending
+chairwarmer
+chairwoman
+chais
+chaise
+chaiseless
+Chait
+chaitya
+chaja
+chaka
+chakar
+chakari
+Chakavski
+chakazi
+chakdar
+chakobu
+chakra
+chakram
+chakravartin
+chaksi
+chal
+chalaco
+chalana
+chalastic
+Chalastogastra
+chalaza
+chalazal
+chalaze
+chalazian
+chalaziferous
+chalazion
+chalazogam
+chalazogamic
+chalazogamy
+chalazoidite
+chalcanthite
+Chalcedonian
+chalcedonic
+chalcedonous
+chalcedony
+chalcedonyx
+chalchuite
+chalcid
+Chalcidian
+Chalcidic
+chalcidicum
+chalcidid
+Chalcididae
+chalcidiform
+chalcidoid
+Chalcidoidea
+Chalcioecus
+Chalcis
+chalcites
+chalcocite
+chalcograph
+chalcographer
+chalcographic
+chalcographical
+chalcographist
+chalcography
+chalcolite
+chalcolithic
+chalcomancy
+chalcomenite
+chalcon
+chalcone
+chalcophanite
+chalcophyllite
+chalcopyrite
+chalcosiderite
+chalcosine
+chalcostibite
+chalcotrichite
+chalcotript
+chalcus
+Chaldaei
+Chaldaic
+Chaldaical
+Chaldaism
+Chaldean
+Chaldee
+chalder
+chaldron
+chalet
+chalice
+chaliced
+chalicosis
+chalicothere
+chalicotheriid
+Chalicotheriidae
+chalicotherioid
+Chalicotherium
+Chalina
+Chalinidae
+chalinine
+Chalinitis
+chalk
+chalkcutter
+chalker
+chalkiness
+chalklike
+chalkography
+chalkosideric
+chalkstone
+chalkstony
+chalkworker
+chalky
+challah
+challenge
+challengeable
+challengee
+challengeful
+challenger
+challengingly
+challie
+challis
+challote
+chalmer
+chalon
+chalone
+Chalons
+chalque
+chalta
+Chalukya
+Chalukyan
+chalumeau
+chalutz
+chalutzim
+Chalybean
+chalybeate
+chalybeous
+Chalybes
+chalybite
+Cham
+cham
+Chama
+Chamacea
+Chamacoco
+Chamaebatia
+Chamaecistus
+chamaecranial
+Chamaecrista
+Chamaecyparis
+Chamaedaphne
+Chamaeleo
+Chamaeleon
+Chamaeleontidae
+Chamaelirium
+Chamaenerion
+Chamaepericlymenum
+chamaeprosopic
+Chamaerops
+chamaerrhine
+Chamaesaura
+Chamaesiphon
+Chamaesiphonaceae
+Chamaesiphonaceous
+Chamaesiphonales
+Chamaesyce
+chamal
+Chamar
+chamar
+chamber
+chamberdeacon
+chambered
+chamberer
+chambering
+chamberlain
+chamberlainry
+chamberlainship
+chamberlet
+chamberleted
+chamberletted
+chambermaid
+Chambertin
+chamberwoman
+Chambioa
+chambray
+chambrel
+chambul
+chamecephalic
+chamecephalous
+chamecephalus
+chamecephaly
+chameleon
+chameleonic
+chameleonize
+chameleonlike
+chamfer
+chamferer
+chamfron
+Chamian
+Chamicuro
+Chamidae
+chamisal
+chamiso
+Chamite
+chamite
+Chamkanni
+chamma
+chamois
+Chamoisette
+chamoisite
+chamoline
+Chamomilla
+Chamorro
+Chamos
+champ
+Champa
+champac
+champaca
+champacol
+champagne
+champagneless
+champagnize
+champaign
+champain
+champaka
+champer
+champertor
+champertous
+champerty
+champignon
+champion
+championess
+championize
+championless
+championlike
+championship
+Champlain
+Champlainic
+champleve
+champy
+Chanabal
+Chanca
+chance
+chanceful
+chancefully
+chancefulness
+chancel
+chanceled
+chanceless
+chancellery
+chancellor
+chancellorate
+chancelloress
+chancellorism
+chancellorship
+chancer
+chancery
+chancewise
+chanche
+chanchito
+chanco
+chancre
+chancriform
+chancroid
+chancroidal
+chancrous
+chancy
+chandala
+chandam
+chandelier
+Chandi
+chandi
+chandler
+chandleress
+chandlering
+chandlery
+chandoo
+chandu
+chandul
+Chane
+chanfrin
+Chang
+chang
+changa
+changar
+change
+changeability
+changeable
+changeableness
+changeably
+changedale
+changedness
+changeful
+changefully
+changefulness
+changeless
+changelessly
+changelessness
+changeling
+changement
+changer
+Changoan
+Changos
+Changuina
+Changuinan
+Chanidae
+chank
+chankings
+channel
+channelbill
+channeled
+channeler
+channeling
+channelization
+channelize
+channelled
+channeller
+channelling
+channelwards
+channer
+chanson
+chansonnette
+chanst
+chant
+chantable
+chanter
+chanterelle
+chantership
+chantey
+chanteyman
+chanticleer
+chanting
+chantingly
+chantlate
+chantress
+chantry
+chao
+chaogenous
+chaology
+chaos
+chaotic
+chaotical
+chaotically
+chaoticness
+Chaouia
+chap
+Chapacura
+Chapacuran
+chapah
+Chapanec
+chaparral
+chaparro
+chapatty
+chapbook
+chape
+chapeau
+chapeaux
+chaped
+chapel
+chapeless
+chapelet
+chapelgoer
+chapelgoing
+chapellage
+chapellany
+chapelman
+chapelmaster
+chapelry
+chapelward
+chaperno
+chaperon
+chaperonage
+chaperone
+chaperonless
+chapfallen
+chapin
+chapiter
+chapitral
+chaplain
+chaplaincy
+chaplainry
+chaplainship
+chapless
+chaplet
+chapleted
+chapman
+chapmanship
+chapournet
+chapournetted
+chappaul
+chapped
+chapper
+chappie
+chappin
+chapping
+chappow
+chappy
+chaps
+chapt
+chaptalization
+chaptalize
+chapter
+chapteral
+chapterful
+chapwoman
+char
+Chara
+charabanc
+charabancer
+charac
+Characeae
+characeous
+characetum
+characin
+characine
+characinid
+Characinidae
+characinoid
+character
+characterful
+characterial
+characterical
+characterism
+characterist
+characteristic
+characteristical
+characteristically
+characteristicalness
+characteristicness
+characterizable
+characterization
+characterize
+characterizer
+characterless
+characterlessness
+characterological
+characterologist
+characterology
+charactery
+charade
+Charadrii
+Charadriidae
+charadriiform
+Charadriiformes
+charadrine
+charadrioid
+Charadriomorphae
+Charadrius
+Charales
+charas
+charbon
+Charca
+charcoal
+charcoaly
+charcutier
+chard
+chardock
+chare
+charer
+charet
+charette
+charge
+chargeability
+chargeable
+chargeableness
+chargeably
+chargee
+chargeless
+chargeling
+chargeman
+charger
+chargeship
+charging
+Charicleia
+charier
+charily
+chariness
+chariot
+charioted
+chariotee
+charioteer
+charioteership
+chariotlike
+chariotman
+chariotry
+chariotway
+charism
+charisma
+charismatic
+Charissa
+charisticary
+charitable
+charitableness
+charitably
+Charites
+charity
+charityless
+charivari
+chark
+charka
+charkha
+charkhana
+charlady
+charlatan
+charlatanic
+charlatanical
+charlatanically
+charlatanish
+charlatanism
+charlatanistic
+charlatanry
+charlatanship
+Charleen
+Charlene
+Charles
+Charleston
+Charley
+Charlie
+charlock
+Charlotte
+charm
+charmedly
+charmel
+charmer
+charmful
+charmfully
+charmfulness
+charming
+charmingly
+charmingness
+charmless
+charmlessly
+charmwise
+charnel
+charnockite
+Charon
+Charonian
+Charonic
+Charontas
+Charophyta
+charpit
+charpoy
+charqued
+charqui
+charr
+Charruan
+Charruas
+charry
+charshaf
+charsingha
+chart
+chartaceous
+charter
+charterable
+charterage
+chartered
+charterer
+charterhouse
+Charterist
+charterless
+chartermaster
+charthouse
+charting
+Chartism
+Chartist
+chartist
+chartless
+chartographist
+chartology
+chartometer
+chartophylax
+chartreuse
+Chartreux
+chartroom
+chartula
+chartulary
+charuk
+charwoman
+chary
+Charybdian
+Charybdis
+chasable
+chase
+chaseable
+chaser
+Chasidim
+chasing
+chasm
+chasma
+chasmal
+chasmed
+chasmic
+chasmogamic
+chasmogamous
+chasmogamy
+chasmophyte
+chasmy
+chasse
+Chasselas
+chassepot
+chasseur
+chassignite
+chassis
+Chastacosta
+chaste
+chastely
+chasten
+chastener
+chasteness
+chasteningly
+chastenment
+chasteweed
+chastisable
+chastise
+chastisement
+chastiser
+chastity
+chasuble
+chasubled
+chat
+chataka
+Chateau
+chateau
+chateaux
+chatelain
+chatelaine
+chatelainry
+chatellany
+chathamite
+chati
+Chatillon
+Chatino
+Chatot
+chatoyance
+chatoyancy
+chatoyant
+chatsome
+chatta
+chattable
+Chattanooga
+Chattanoogan
+chattation
+chattel
+chattelhood
+chattelism
+chattelization
+chattelize
+chattelship
+chatter
+chatteration
+chatterbag
+chatterbox
+chatterer
+chattering
+chatteringly
+chattermag
+chattermagging
+Chattertonian
+chattery
+Chatti
+chattily
+chattiness
+chatting
+chattingly
+chatty
+chatwood
+Chaucerian
+Chauceriana
+Chaucerianism
+Chaucerism
+Chauchat
+chaudron
+chauffer
+chauffeur
+chauffeurship
+Chaui
+chauk
+chaukidari
+Chauliodes
+chaulmoogra
+chaulmoograte
+chaulmoogric
+Chauna
+chaus
+chausseemeile
+Chautauqua
+Chautauquan
+chaute
+chauth
+chauvinism
+chauvinist
+chauvinistic
+chauvinistically
+Chavante
+Chavantean
+chavender
+chavibetol
+chavicin
+chavicine
+chavicol
+chavish
+chaw
+chawan
+chawbacon
+chawer
+Chawia
+chawk
+chawl
+chawstick
+chay
+chaya
+chayaroot
+Chayma
+Chayota
+chayote
+chayroot
+chazan
+Chazy
+che
+cheap
+cheapen
+cheapener
+cheapery
+cheaping
+cheapish
+cheaply
+cheapness
+Cheapside
+cheat
+cheatable
+cheatableness
+cheatee
+cheater
+cheatery
+cheating
+cheatingly
+cheatrie
+Chebacco
+chebec
+chebel
+chebog
+chebule
+chebulinic
+Chechehet
+Chechen
+check
+checkable
+checkage
+checkbird
+checkbite
+checkbook
+checked
+checker
+checkerbelly
+checkerberry
+checkerbloom
+checkerboard
+checkerbreast
+checkered
+checkerist
+checkers
+checkerwise
+checkerwork
+checkhook
+checkless
+checkman
+checkmate
+checkoff
+checkrack
+checkrein
+checkroll
+checkroom
+checkrope
+checkrow
+checkrowed
+checkrower
+checkstone
+checkstrap
+checkstring
+checkup
+checkweigher
+checkwork
+checky
+cheddaring
+cheddite
+cheder
+chedlock
+chee
+cheecha
+cheechako
+cheek
+cheekbone
+cheeker
+cheekily
+cheekiness
+cheekish
+cheekless
+cheekpiece
+cheeky
+cheep
+cheeper
+cheepily
+cheepiness
+cheepy
+cheer
+cheered
+cheerer
+cheerful
+cheerfulize
+cheerfully
+cheerfulness
+cheerfulsome
+cheerily
+cheeriness
+cheering
+cheeringly
+cheerio
+cheerleader
+cheerless
+cheerlessly
+cheerlessness
+cheerly
+cheery
+cheese
+cheeseboard
+cheesebox
+cheeseburger
+cheesecake
+cheesecloth
+cheesecurd
+cheesecutter
+cheeseflower
+cheeselip
+cheesemonger
+cheesemongering
+cheesemongerly
+cheesemongery
+cheeseparer
+cheeseparing
+cheeser
+cheesery
+cheesewood
+cheesiness
+cheesy
+cheet
+cheetah
+cheeter
+cheetie
+chef
+Chefrinia
+chegoe
+chegre
+Chehalis
+Cheilanthes
+cheilitis
+Cheilodipteridae
+Cheilodipterus
+Cheilostomata
+cheilostomatous
+cheir
+cheiragra
+Cheiranthus
+Cheirogaleus
+Cheiroglossa
+cheirognomy
+cheirography
+cheirolin
+cheirology
+cheiromancy
+cheiromegaly
+cheiropatagium
+cheiropodist
+cheiropody
+cheiropompholyx
+Cheiroptera
+cheiropterygium
+cheirosophy
+cheirospasm
+Cheirotherium
+Cheka
+chekan
+cheke
+cheki
+Chekist
+chekmak
+chela
+chelaship
+chelate
+chelation
+chelem
+chelerythrine
+chelicer
+chelicera
+cheliceral
+chelicerate
+chelicere
+chelide
+chelidon
+chelidonate
+chelidonian
+chelidonic
+chelidonine
+Chelidonium
+Chelidosaurus
+Cheliferidea
+cheliferous
+cheliform
+chelingo
+cheliped
+Chellean
+chello
+Chelodina
+chelodine
+chelone
+Chelonia
+chelonian
+chelonid
+Chelonidae
+cheloniid
+Cheloniidae
+chelonin
+chelophore
+chelp
+Cheltenham
+Chelura
+Chelydidae
+Chelydra
+Chelydridae
+chelydroid
+chelys
+Chemakuan
+chemasthenia
+chemawinite
+Chemehuevi
+chemesthesis
+chemiatric
+chemiatrist
+chemiatry
+chemic
+chemical
+chemicalization
+chemicalize
+chemically
+chemicker
+chemicoastrological
+chemicobiologic
+chemicobiology
+chemicocautery
+chemicodynamic
+chemicoengineering
+chemicoluminescence
+chemicomechanical
+chemicomineralogical
+chemicopharmaceutical
+chemicophysical
+chemicophysics
+chemicophysiological
+chemicovital
+chemigraph
+chemigraphic
+chemigraphy
+chemiloon
+chemiluminescence
+chemiotactic
+chemiotaxic
+chemiotaxis
+chemiotropic
+chemiotropism
+chemiphotic
+chemis
+chemise
+chemisette
+chemism
+chemisorb
+chemisorption
+chemist
+chemistry
+chemitype
+chemitypy
+chemoceptor
+chemokinesis
+chemokinetic
+chemolysis
+chemolytic
+chemolyze
+chemoreception
+chemoreceptor
+chemoreflex
+chemoresistance
+chemoserotherapy
+chemosis
+chemosmosis
+chemosmotic
+chemosynthesis
+chemosynthetic
+chemotactic
+chemotactically
+chemotaxis
+chemotaxy
+chemotherapeutic
+chemotherapeutics
+chemotherapist
+chemotherapy
+chemotic
+chemotropic
+chemotropically
+chemotropism
+Chemung
+chemurgic
+chemurgical
+chemurgy
+Chen
+chena
+chende
+chenevixite
+Cheney
+cheng
+chenica
+chenille
+cheniller
+chenopod
+Chenopodiaceae
+chenopodiaceous
+Chenopodiales
+Chenopodium
+cheoplastic
+chepster
+cheque
+Chequers
+Chera
+chercock
+cherem
+Cheremiss
+Cheremissian
+cherimoya
+cherish
+cherishable
+cherisher
+cherishing
+cherishingly
+cherishment
+Cherkess
+Cherkesser
+Chermes
+Chermidae
+Chermish
+Chernomorish
+chernozem
+Cherokee
+cheroot
+cherried
+cherry
+cherryblossom
+cherrylike
+chersonese
+Chersydridae
+chert
+cherte
+cherty
+cherub
+cherubic
+cherubical
+cherubically
+cherubim
+cherubimic
+cherubimical
+cherubin
+Cherusci
+Chervante
+chervil
+chervonets
+Chesapeake
+Cheshire
+cheson
+chess
+chessboard
+chessdom
+chessel
+chesser
+chessist
+chessman
+chessmen
+chesstree
+chessylite
+chest
+Chester
+chester
+chesterfield
+Chesterfieldian
+chesterlite
+chestful
+chestily
+chestiness
+chestnut
+chestnutty
+chesty
+Chet
+cheth
+chettik
+chetty
+chetverik
+chetvert
+chevage
+cheval
+chevalier
+chevaline
+chevance
+cheve
+cheven
+chevener
+chevesaile
+chevin
+Cheviot
+chevisance
+chevise
+chevon
+chevrette
+chevron
+chevrone
+chevronel
+chevronelly
+chevronwise
+chevrony
+chevrotain
+chevy
+chew
+chewbark
+chewer
+chewink
+chewstick
+chewy
+Cheyenne
+cheyney
+chhatri
+chi
+chia
+Chiam
+Chian
+Chianti
+Chiapanec
+Chiapanecan
+chiaroscurist
+chiaroscuro
+chiasm
+chiasma
+chiasmal
+chiasmatype
+chiasmatypy
+chiasmic
+Chiasmodon
+chiasmodontid
+Chiasmodontidae
+chiasmus
+chiastic
+chiastolite
+chiastoneural
+chiastoneurous
+chiastoneury
+chiaus
+Chibcha
+Chibchan
+chibinite
+chibouk
+chibrit
+chic
+chicane
+chicaner
+chicanery
+chicaric
+chicayote
+Chicha
+chichi
+chichicaste
+Chichimec
+chichimecan
+chichipate
+chichipe
+chichituna
+chick
+chickabiddy
+chickadee
+Chickahominy
+Chickamauga
+chickaree
+Chickasaw
+chickasaw
+chickell
+chicken
+chickenberry
+chickenbill
+chickenbreasted
+chickenhearted
+chickenheartedly
+chickenheartedness
+chickenhood
+chickenweed
+chickenwort
+chicker
+chickhood
+chickling
+chickstone
+chickweed
+chickwit
+chicky
+chicle
+chicness
+Chico
+chico
+Chicomecoatl
+chicory
+chicot
+chicote
+chicqued
+chicquer
+chicquest
+chicquing
+chid
+chidden
+chide
+chider
+chiding
+chidingly
+chidingness
+chidra
+chief
+chiefdom
+chiefery
+chiefess
+chiefest
+chiefish
+chiefless
+chiefling
+chiefly
+chiefship
+chieftain
+chieftaincy
+chieftainess
+chieftainry
+chieftainship
+chieftess
+chield
+Chien
+chien
+chiffer
+chiffon
+chiffonade
+chiffonier
+chiffony
+chifforobe
+chigetai
+chiggak
+chigger
+chiggerweed
+chignon
+chignoned
+chigoe
+chih
+chihfu
+Chihuahua
+chikara
+chil
+chilacavote
+chilalgia
+chilarium
+chilblain
+Chilcat
+child
+childbearing
+childbed
+childbirth
+childcrowing
+childe
+childed
+Childermas
+childhood
+childing
+childish
+childishly
+childishness
+childkind
+childless
+childlessness
+childlike
+childlikeness
+childly
+childness
+childrenite
+childridden
+childship
+childward
+chile
+Chilean
+Chileanization
+Chileanize
+chilectropion
+chilenite
+chili
+chiliad
+chiliadal
+chiliadic
+chiliagon
+chiliahedron
+chiliarch
+chiliarchia
+chiliarchy
+chiliasm
+chiliast
+chiliastic
+chilicote
+chilicothe
+chilidium
+Chilina
+Chilinidae
+chiliomb
+Chilion
+chilitis
+Chilkat
+chill
+chilla
+chillagite
+chilled
+chiller
+chillily
+chilliness
+chilling
+chillingly
+chillish
+Chilliwack
+chillness
+chillo
+chillroom
+chillsome
+chillum
+chillumchee
+chilly
+chilognath
+Chilognatha
+chilognathan
+chilognathous
+chilogrammo
+chiloma
+Chilomastix
+chiloncus
+chiloplasty
+chilopod
+Chilopoda
+chilopodan
+chilopodous
+Chilopsis
+Chilostoma
+Chilostomata
+chilostomatous
+chilostome
+chilotomy
+Chiltern
+chilver
+chimaera
+chimaerid
+Chimaeridae
+chimaeroid
+Chimaeroidei
+Chimakuan
+Chimakum
+Chimalakwe
+Chimalapa
+Chimane
+chimango
+Chimaphila
+Chimarikan
+Chimariko
+chimble
+chime
+chimer
+chimera
+chimeric
+chimerical
+chimerically
+chimericalness
+chimesmaster
+chiminage
+Chimmesyan
+chimney
+chimneyhead
+chimneyless
+chimneyman
+Chimonanthus
+chimopeelagic
+chimpanzee
+Chimu
+Chin
+chin
+china
+chinaberry
+chinalike
+Chinaman
+chinamania
+chinamaniac
+chinampa
+chinanta
+Chinantecan
+Chinantecs
+chinaphthol
+chinar
+chinaroot
+Chinatown
+chinaware
+chinawoman
+chinband
+chinch
+chincha
+Chinchasuyu
+chinchayote
+chinche
+chincherinchee
+chinchilla
+chinching
+chincloth
+chincough
+chine
+chined
+Chinee
+Chinese
+Chinesery
+ching
+chingma
+Chingpaw
+Chinhwan
+chinik
+chinin
+Chink
+chink
+chinkara
+chinker
+chinkerinchee
+chinking
+chinkle
+chinks
+chinky
+chinless
+chinnam
+chinned
+chinny
+chino
+chinoa
+chinol
+Chinook
+Chinookan
+chinotoxine
+chinotti
+chinpiece
+chinquapin
+chinse
+chint
+chintz
+chinwood
+Chiococca
+chiococcine
+Chiogenes
+chiolite
+chionablepsia
+Chionanthus
+Chionaspis
+Chionididae
+Chionis
+Chionodoxa
+Chiot
+chiotilla
+Chip
+chip
+chipchap
+chipchop
+Chipewyan
+chiplet
+chipling
+chipmunk
+chippable
+chippage
+chipped
+Chippendale
+chipper
+chipping
+chippy
+chips
+chipwood
+Chiquitan
+Chiquito
+chiragra
+chiral
+chiralgia
+chirality
+chirapsia
+chirarthritis
+chirata
+Chiriana
+Chiricahua
+Chiriguano
+chirimen
+Chirino
+chirinola
+chiripa
+chirivita
+chirk
+chirm
+chiro
+chirocosmetics
+chirogale
+chirognomic
+chirognomically
+chirognomist
+chirognomy
+chirognostic
+chirograph
+chirographary
+chirographer
+chirographic
+chirographical
+chirography
+chirogymnast
+chirological
+chirologically
+chirologist
+chirology
+chiromance
+chiromancer
+chiromancist
+chiromancy
+chiromant
+chiromantic
+chiromantical
+Chiromantis
+chiromegaly
+chirometer
+Chiromyidae
+Chiromys
+Chiron
+chironomic
+chironomid
+Chironomidae
+Chironomus
+chironomy
+chironym
+chiropatagium
+chiroplasty
+chiropod
+chiropodial
+chiropodic
+chiropodical
+chiropodist
+chiropodistry
+chiropodous
+chiropody
+chiropompholyx
+chiropractic
+chiropractor
+chiropraxis
+chiropter
+Chiroptera
+chiropteran
+chiropterite
+chiropterophilous
+chiropterous
+chiropterygian
+chiropterygious
+chiropterygium
+chirosophist
+chirospasm
+Chirotes
+chirotherian
+Chirotherium
+chirothesia
+chirotonsor
+chirotonsory
+chirotony
+chirotype
+chirp
+chirper
+chirpily
+chirpiness
+chirping
+chirpingly
+chirpling
+chirpy
+chirr
+chirrup
+chirruper
+chirrupy
+chirurgeon
+chirurgery
+Chisedec
+chisel
+chiseled
+chiseler
+chisellike
+chiselly
+chiselmouth
+chit
+Chita
+chitak
+chital
+chitchat
+chitchatty
+Chitimacha
+Chitimachan
+chitin
+chitinization
+chitinized
+chitinocalcareous
+chitinogenous
+chitinoid
+chitinous
+chiton
+chitosamine
+chitosan
+chitose
+chitra
+Chitrali
+chittamwood
+chitter
+chitterling
+chitty
+chivalresque
+chivalric
+chivalrous
+chivalrously
+chivalrousness
+chivalry
+chive
+chivey
+chiviatite
+Chiwere
+chkalik
+chladnite
+chlamyd
+chlamydate
+chlamydeous
+Chlamydobacteriaceae
+chlamydobacteriaceous
+Chlamydobacteriales
+Chlamydomonadaceae
+Chlamydomonadidae
+Chlamydomonas
+Chlamydosaurus
+Chlamydoselachidae
+Chlamydoselachus
+chlamydospore
+Chlamydozoa
+chlamydozoan
+chlamyphore
+Chlamyphorus
+chlamys
+Chleuh
+chloanthite
+chloasma
+Chloe
+chlor
+chloracetate
+chloragogen
+chloral
+chloralformamide
+chloralide
+chloralism
+chloralization
+chloralize
+chloralose
+chloralum
+chloramide
+chloramine
+chloramphenicol
+chloranemia
+chloranemic
+chloranhydride
+chloranil
+Chloranthaceae
+chloranthaceous
+Chloranthus
+chloranthy
+chlorapatite
+chlorastrolite
+chlorate
+chlorazide
+chlorcosane
+chlordan
+chlordane
+chlore
+Chlorella
+Chlorellaceae
+chlorellaceous
+chloremia
+chlorenchyma
+chlorhydrate
+chlorhydric
+chloric
+chloridate
+chloridation
+chloride
+Chloridella
+Chloridellidae
+chlorider
+chloridize
+chlorimeter
+chlorimetric
+chlorimetry
+chlorinate
+chlorination
+chlorinator
+chlorine
+chlorinize
+chlorinous
+chloriodide
+Chlorion
+Chlorioninae
+chlorite
+chloritic
+chloritization
+chloritize
+chloritoid
+chlorize
+chlormethane
+chlormethylic
+chloroacetate
+chloroacetic
+chloroacetone
+chloroacetophenone
+chloroamide
+chloroamine
+chloroanaemia
+chloroanemia
+chloroaurate
+chloroauric
+chloroaurite
+chlorobenzene
+chlorobromide
+chlorocalcite
+chlorocarbonate
+chlorochromates
+chlorochromic
+chlorochrous
+Chlorococcaceae
+Chlorococcales
+Chlorococcum
+Chlorococcus
+chlorocresol
+chlorocruorin
+chlorodize
+chloroform
+chloroformate
+chloroformic
+chloroformism
+chloroformist
+chloroformization
+chloroformize
+chlorogenic
+chlorogenine
+chlorohydrin
+chlorohydrocarbon
+chloroiodide
+chloroleucite
+chloroma
+chloromelanite
+chlorometer
+chloromethane
+chlorometric
+chlorometry
+Chloromycetin
+chloronitrate
+chloropal
+chloropalladates
+chloropalladic
+chlorophane
+chlorophenol
+chlorophoenicite
+Chlorophora
+Chlorophyceae
+chlorophyceous
+chlorophyl
+chlorophyll
+chlorophyllaceous
+chlorophyllan
+chlorophyllase
+chlorophyllian
+chlorophyllide
+chlorophylliferous
+chlorophylligenous
+chlorophylligerous
+chlorophyllin
+chlorophyllite
+chlorophylloid
+chlorophyllose
+chlorophyllous
+chloropia
+chloropicrin
+chloroplast
+chloroplastic
+chloroplastid
+chloroplatinate
+chloroplatinic
+chloroplatinite
+chloroplatinous
+chloroprene
+chloropsia
+chloroquine
+chlorosilicate
+chlorosis
+chlorospinel
+chlorosulphonic
+chlorotic
+chlorous
+chlorozincate
+chlorsalol
+chloryl
+Chnuphis
+cho
+choachyte
+choana
+choanate
+Choanephora
+choanocytal
+choanocyte
+Choanoflagellata
+choanoflagellate
+Choanoflagellida
+Choanoflagellidae
+choanoid
+choanophorous
+choanosomal
+choanosome
+choate
+choaty
+chob
+choca
+chocard
+Chocho
+chocho
+chock
+chockablock
+chocker
+chockler
+chockman
+Choco
+Chocoan
+chocolate
+Choctaw
+choel
+choenix
+Choeropsis
+Choes
+choffer
+choga
+chogak
+chogset
+Choiak
+choice
+choiceful
+choiceless
+choicelessness
+choicely
+choiceness
+choicy
+choil
+choiler
+choir
+choirboy
+choirlike
+choirman
+choirmaster
+choirwise
+Choisya
+chokage
+choke
+chokeberry
+chokebore
+chokecherry
+chokedamp
+choker
+chokered
+chokerman
+chokestrap
+chokeweed
+chokidar
+choking
+chokingly
+chokra
+choky
+Chol
+chol
+Chola
+chola
+cholagogic
+cholagogue
+cholalic
+cholane
+cholangioitis
+cholangitis
+cholanic
+cholanthrene
+cholate
+chold
+choleate
+cholecyanine
+cholecyst
+cholecystalgia
+cholecystectasia
+cholecystectomy
+cholecystenterorrhaphy
+cholecystenterostomy
+cholecystgastrostomy
+cholecystic
+cholecystitis
+cholecystnephrostomy
+cholecystocolostomy
+cholecystocolotomy
+cholecystoduodenostomy
+cholecystogastrostomy
+cholecystogram
+cholecystography
+cholecystoileostomy
+cholecystojejunostomy
+cholecystokinin
+cholecystolithiasis
+cholecystolithotripsy
+cholecystonephrostomy
+cholecystopexy
+cholecystorrhaphy
+cholecystostomy
+cholecystotomy
+choledoch
+choledochal
+choledochectomy
+choledochitis
+choledochoduodenostomy
+choledochoenterostomy
+choledocholithiasis
+choledocholithotomy
+choledocholithotripsy
+choledochoplasty
+choledochorrhaphy
+choledochostomy
+choledochotomy
+cholehematin
+choleic
+choleine
+choleinic
+cholelith
+cholelithiasis
+cholelithic
+cholelithotomy
+cholelithotripsy
+cholelithotrity
+cholemia
+choleokinase
+cholepoietic
+choler
+cholera
+choleraic
+choleric
+cholericly
+cholericness
+choleriform
+cholerigenous
+cholerine
+choleroid
+choleromania
+cholerophobia
+cholerrhagia
+cholestane
+cholestanol
+cholesteatoma
+cholesteatomatous
+cholestene
+cholesterate
+cholesteremia
+cholesteric
+cholesterin
+cholesterinemia
+cholesterinic
+cholesterinuria
+cholesterol
+cholesterolemia
+cholesteroluria
+cholesterosis
+cholesteryl
+choletelin
+choletherapy
+choleuria
+choli
+choliamb
+choliambic
+choliambist
+cholic
+choline
+cholinergic
+cholinesterase
+cholinic
+cholla
+choller
+Cholo
+cholochrome
+cholocyanine
+Choloepus
+chologenetic
+choloidic
+choloidinic
+chololith
+chololithic
+Cholonan
+Cholones
+cholophein
+cholorrhea
+choloscopy
+cholterheaded
+cholum
+choluria
+Choluteca
+chomp
+chondral
+chondralgia
+chondrarsenite
+chondre
+chondrectomy
+chondrenchyma
+chondric
+chondrification
+chondrify
+chondrigen
+chondrigenous
+Chondrilla
+chondrin
+chondrinous
+chondriocont
+chondriome
+chondriomere
+chondriomite
+chondriosomal
+chondriosome
+chondriosphere
+chondrite
+chondritic
+chondritis
+chondroadenoma
+chondroalbuminoid
+chondroangioma
+chondroarthritis
+chondroblast
+chondroblastoma
+chondrocarcinoma
+chondrocele
+chondroclasis
+chondroclast
+chondrocoracoid
+chondrocostal
+chondrocranial
+chondrocranium
+chondrocyte
+chondrodite
+chondroditic
+chondrodynia
+chondrodystrophia
+chondrodystrophy
+chondroendothelioma
+chondroepiphysis
+chondrofetal
+chondrofibroma
+chondrofibromatous
+Chondroganoidei
+chondrogen
+chondrogenesis
+chondrogenetic
+chondrogenous
+chondrogeny
+chondroglossal
+chondroglossus
+chondrography
+chondroid
+chondroitic
+chondroitin
+chondrolipoma
+chondrology
+chondroma
+chondromalacia
+chondromatous
+chondromucoid
+Chondromyces
+chondromyoma
+chondromyxoma
+chondromyxosarcoma
+chondropharyngeal
+chondropharyngeus
+chondrophore
+chondrophyte
+chondroplast
+chondroplastic
+chondroplasty
+chondroprotein
+chondropterygian
+Chondropterygii
+chondropterygious
+chondrosamine
+chondrosarcoma
+chondrosarcomatous
+chondroseptum
+chondrosin
+chondrosis
+chondroskeleton
+chondrostean
+Chondrostei
+chondrosteoma
+chondrosteous
+chondrosternal
+chondrotome
+chondrotomy
+chondroxiphoid
+chondrule
+chondrus
+chonolith
+chonta
+Chontal
+Chontalan
+Chontaquiro
+chontawood
+choop
+choosable
+choosableness
+choose
+chooser
+choosing
+choosingly
+choosy
+chop
+chopa
+chopboat
+chopfallen
+chophouse
+chopin
+chopine
+choplogic
+chopped
+chopper
+choppered
+chopping
+choppy
+chopstick
+Chopunnish
+Chora
+choragic
+choragion
+choragium
+choragus
+choragy
+Chorai
+choral
+choralcelo
+choraleon
+choralist
+chorally
+Chorasmian
+chord
+chorda
+Chordaceae
+chordacentrous
+chordacentrum
+chordaceous
+chordal
+chordally
+chordamesoderm
+Chordata
+chordate
+chorded
+Chordeiles
+chorditis
+chordoid
+chordomesoderm
+chordotomy
+chordotonal
+chore
+chorea
+choreal
+choreatic
+choree
+choregic
+choregus
+choregy
+choreic
+choreiform
+choreograph
+choreographer
+choreographic
+choreographical
+choreography
+choreoid
+choreomania
+chorepiscopal
+chorepiscopus
+choreus
+choreutic
+chorial
+choriamb
+choriambic
+choriambize
+choriambus
+choric
+chorine
+chorioadenoma
+chorioallantoic
+chorioallantoid
+chorioallantois
+choriocapillaris
+choriocapillary
+choriocarcinoma
+choriocele
+chorioepithelioma
+chorioid
+chorioidal
+chorioiditis
+chorioidocyclitis
+chorioidoiritis
+chorioidoretinitis
+chorioma
+chorion
+chorionepithelioma
+chorionic
+Chorioptes
+chorioptic
+chorioretinal
+chorioretinitis
+Choripetalae
+choripetalous
+choriphyllous
+chorisepalous
+chorisis
+chorism
+chorist
+choristate
+chorister
+choristership
+choristic
+choristoblastoma
+choristoma
+choristry
+chorization
+chorizont
+chorizontal
+chorizontes
+chorizontic
+chorizontist
+chorogi
+chorograph
+chorographer
+chorographic
+chorographical
+chorographically
+chorography
+choroid
+choroidal
+choroidea
+choroiditis
+choroidocyclitis
+choroidoiritis
+choroidoretinitis
+chorological
+chorologist
+chorology
+choromania
+choromanic
+chorometry
+chorook
+Chorotega
+Choroti
+chort
+chorten
+Chorti
+chortle
+chortler
+chortosterol
+chorus
+choruser
+choruslike
+Chorwat
+choryos
+chose
+chosen
+chott
+Chou
+Chouan
+Chouanize
+chouette
+chough
+chouka
+choultry
+choup
+chouquette
+chous
+chouse
+chouser
+chousingha
+chow
+Chowanoc
+chowchow
+chowder
+chowderhead
+chowderheaded
+chowk
+chowry
+choya
+choyroot
+Chozar
+chrematheism
+chrematist
+chrematistic
+chrematistics
+chreotechnics
+chresmology
+chrestomathic
+chrestomathics
+chrestomathy
+chria
+chrimsel
+Chris
+chrism
+chrisma
+chrismal
+chrismary
+chrismatine
+chrismation
+chrismatite
+chrismatize
+chrismatory
+chrismon
+chrisom
+chrisomloosing
+chrisroot
+Chrissie
+Christ
+Christabel
+Christadelphian
+Christadelphianism
+christcross
+Christdom
+Christed
+christen
+Christendie
+Christendom
+christened
+christener
+christening
+Christenmas
+Christhood
+Christiad
+Christian
+Christiana
+Christiania
+Christianiadeal
+Christianism
+christianite
+Christianity
+Christianization
+Christianize
+Christianizer
+Christianlike
+Christianly
+Christianness
+Christianogentilism
+Christianography
+Christianomastix
+Christianopaganism
+Christicide
+Christie
+Christiform
+Christina
+Christine
+Christless
+Christlessness
+Christlike
+Christlikeness
+Christliness
+Christly
+Christmas
+Christmasberry
+Christmasing
+Christmastide
+Christmasy
+Christocentric
+Christofer
+Christogram
+Christolatry
+Christological
+Christologist
+Christology
+Christophany
+Christophe
+Christopher
+Christos
+chroatol
+Chrobat
+chroma
+chromaffin
+chromaffinic
+chromammine
+chromaphil
+chromaphore
+chromascope
+chromate
+chromatic
+chromatical
+chromatically
+chromatician
+chromaticism
+chromaticity
+chromatics
+chromatid
+chromatin
+chromatinic
+Chromatioideae
+chromatism
+chromatist
+Chromatium
+chromatize
+chromatocyte
+chromatodysopia
+chromatogenous
+chromatogram
+chromatograph
+chromatographic
+chromatography
+chromatoid
+chromatology
+chromatolysis
+chromatolytic
+chromatometer
+chromatone
+chromatopathia
+chromatopathic
+chromatopathy
+chromatophil
+chromatophile
+chromatophilia
+chromatophilic
+chromatophilous
+chromatophobia
+chromatophore
+chromatophoric
+chromatophorous
+chromatoplasm
+chromatopsia
+chromatoptometer
+chromatoptometry
+chromatoscope
+chromatoscopy
+chromatosis
+chromatosphere
+chromatospheric
+chromatrope
+chromaturia
+chromatype
+chromazurine
+chromdiagnosis
+chrome
+chromene
+chromesthesia
+chromic
+chromicize
+chromid
+Chromidae
+Chromides
+chromidial
+Chromididae
+chromidiogamy
+chromidiosome
+chromidium
+chromidrosis
+chromiferous
+chromiole
+chromism
+chromite
+chromitite
+chromium
+chromo
+Chromobacterieae
+Chromobacterium
+chromoblast
+chromocenter
+chromocentral
+chromochalcographic
+chromochalcography
+chromocollograph
+chromocollographic
+chromocollography
+chromocollotype
+chromocollotypy
+chromocratic
+chromocyte
+chromocytometer
+chromodermatosis
+chromodiascope
+chromogen
+chromogene
+chromogenesis
+chromogenetic
+chromogenic
+chromogenous
+chromogram
+chromograph
+chromoisomer
+chromoisomeric
+chromoisomerism
+chromoleucite
+chromolipoid
+chromolith
+chromolithic
+chromolithograph
+chromolithographer
+chromolithographic
+chromolithography
+chromolysis
+chromomere
+chromometer
+chromone
+chromonema
+chromoparous
+chromophage
+chromophane
+chromophile
+chromophilic
+chromophilous
+chromophobic
+chromophore
+chromophoric
+chromophorous
+chromophotograph
+chromophotographic
+chromophotography
+chromophotolithograph
+chromophyll
+chromoplasm
+chromoplasmic
+chromoplast
+chromoplastid
+chromoprotein
+chromopsia
+chromoptometer
+chromoptometrical
+chromosantonin
+chromoscope
+chromoscopic
+chromoscopy
+chromosomal
+chromosome
+chromosphere
+chromospheric
+chromotherapist
+chromotherapy
+chromotrope
+chromotropic
+chromotropism
+chromotropy
+chromotype
+chromotypic
+chromotypographic
+chromotypography
+chromotypy
+chromous
+chromoxylograph
+chromoxylography
+chromule
+chromy
+chromyl
+chronal
+chronanagram
+chronaxia
+chronaxie
+chronaxy
+chronic
+chronical
+chronically
+chronicity
+chronicle
+chronicler
+chronicon
+chronisotherm
+chronist
+chronobarometer
+chronocinematography
+chronocrator
+chronocyclegraph
+chronodeik
+chronogeneous
+chronogenesis
+chronogenetic
+chronogram
+chronogrammatic
+chronogrammatical
+chronogrammatically
+chronogrammatist
+chronogrammic
+chronograph
+chronographer
+chronographic
+chronographical
+chronographically
+chronography
+chronoisothermal
+chronologer
+chronologic
+chronological
+chronologically
+chronologist
+chronologize
+chronology
+chronomancy
+chronomantic
+chronometer
+chronometric
+chronometrical
+chronometrically
+chronometry
+chrononomy
+chronopher
+chronophotograph
+chronophotographic
+chronophotography
+Chronos
+chronoscope
+chronoscopic
+chronoscopically
+chronoscopy
+chronosemic
+chronostichon
+chronothermal
+chronothermometer
+chronotropic
+chronotropism
+Chroococcaceae
+chroococcaceous
+Chroococcales
+chroococcoid
+Chroococcus
+Chrosperma
+chrotta
+chrysal
+chrysalid
+chrysalidal
+chrysalides
+chrysalidian
+chrysaline
+chrysalis
+chrysaloid
+chrysamine
+chrysammic
+chrysamminic
+Chrysamphora
+chrysaniline
+chrysanisic
+chrysanthemin
+chrysanthemum
+chrysanthous
+Chrysaor
+chrysarobin
+chrysatropic
+chrysazin
+chrysazol
+chryselectrum
+chryselephantine
+Chrysemys
+chrysene
+chrysenic
+chrysid
+Chrysidella
+chrysidid
+Chrysididae
+chrysin
+Chrysippus
+Chrysis
+chrysoaristocracy
+Chrysobalanaceae
+Chrysobalanus
+chrysoberyl
+chrysobull
+chrysocarpous
+chrysochlore
+Chrysochloridae
+Chrysochloris
+chrysochlorous
+chrysochrous
+chrysocolla
+chrysocracy
+chrysoeriol
+chrysogen
+chrysograph
+chrysographer
+chrysography
+chrysohermidin
+chrysoidine
+chrysolite
+chrysolitic
+chrysology
+Chrysolophus
+chrysomelid
+Chrysomelidae
+chrysomonad
+Chrysomonadales
+Chrysomonadina
+chrysomonadine
+Chrysomyia
+Chrysopa
+chrysopal
+chrysopee
+chrysophan
+chrysophanic
+Chrysophanus
+chrysophenine
+chrysophilist
+chrysophilite
+Chrysophlyctis
+chrysophyll
+Chrysophyllum
+chrysopid
+Chrysopidae
+chrysopoeia
+chrysopoetic
+chrysopoetics
+chrysoprase
+Chrysops
+Chrysopsis
+chrysorin
+chrysosperm
+Chrysosplenium
+Chrysothamnus
+Chrysothrix
+chrysotile
+Chrysotis
+chrystocrene
+chthonian
+chthonic
+chthonophagia
+chthonophagy
+chub
+chubbed
+chubbedness
+chubbily
+chubbiness
+chubby
+Chuchona
+Chuck
+chuck
+chucker
+chuckhole
+chuckies
+chucking
+chuckingly
+chuckle
+chucklehead
+chuckleheaded
+chuckler
+chucklingly
+chuckrum
+chuckstone
+chuckwalla
+chucky
+Chud
+chuddar
+Chude
+Chudic
+Chueta
+chufa
+chuff
+chuffy
+chug
+chugger
+chuhra
+Chuje
+chukar
+Chukchi
+chukker
+chukor
+chulan
+chullpa
+chum
+Chumashan
+Chumawi
+chummage
+chummer
+chummery
+chummily
+chummy
+chump
+chumpaka
+chumpish
+chumpishness
+Chumpivilca
+chumpy
+chumship
+Chumulu
+Chun
+chun
+chunari
+Chuncho
+chunga
+chunk
+chunkhead
+chunkily
+chunkiness
+chunky
+chunner
+chunnia
+chunter
+chupak
+chupon
+chuprassie
+chuprassy
+church
+churchanity
+churchcraft
+churchdom
+churchful
+churchgoer
+churchgoing
+churchgrith
+churchianity
+churchified
+churchiness
+churching
+churchish
+churchism
+churchite
+churchless
+churchlet
+churchlike
+churchliness
+churchly
+churchman
+churchmanly
+churchmanship
+churchmaster
+churchscot
+churchward
+churchwarden
+churchwardenism
+churchwardenize
+churchwardenship
+churchwards
+churchway
+churchwise
+churchwoman
+churchy
+churchyard
+churel
+churinga
+churl
+churled
+churlhood
+churlish
+churlishly
+churlishness
+churly
+churm
+churn
+churnability
+churnful
+churning
+churnmilk
+churnstaff
+Churoya
+Churoyan
+churr
+Churrigueresque
+churruck
+churrus
+churrworm
+chut
+chute
+chuter
+chutney
+Chuvash
+Chwana
+chyack
+chyak
+chylaceous
+chylangioma
+chylaqueous
+chyle
+chylemia
+chylidrosis
+chylifaction
+chylifactive
+chylifactory
+chyliferous
+chylific
+chylification
+chylificatory
+chyliform
+chylify
+chylocaulous
+chylocauly
+chylocele
+chylocyst
+chyloid
+chylomicron
+chylopericardium
+chylophyllous
+chylophylly
+chylopoiesis
+chylopoietic
+chylosis
+chylothorax
+chylous
+chyluria
+chymaqueous
+chymase
+chyme
+chymia
+chymic
+chymiferous
+chymification
+chymify
+chymosin
+chymosinogen
+chymotrypsin
+chymotrypsinogen
+chymous
+chypre
+chytra
+chytrid
+Chytridiaceae
+chytridiaceous
+chytridial
+Chytridiales
+chytridiose
+chytridiosis
+Chytridium
+Chytroi
+cibarial
+cibarian
+cibarious
+cibation
+cibol
+Cibola
+Cibolan
+Ciboney
+cibophobia
+ciborium
+cibory
+ciboule
+cicad
+cicada
+Cicadellidae
+cicadid
+Cicadidae
+cicala
+cicatrice
+cicatrices
+cicatricial
+cicatricle
+cicatricose
+cicatricula
+cicatricule
+cicatrisive
+cicatrix
+cicatrizant
+cicatrizate
+cicatrization
+cicatrize
+cicatrizer
+cicatrose
+Cicely
+cicely
+cicer
+ciceronage
+cicerone
+ciceroni
+Ciceronian
+Ciceronianism
+Ciceronianize
+Ciceronic
+Ciceronically
+ciceronism
+ciceronize
+cichlid
+Cichlidae
+cichloid
+cichoraceous
+Cichoriaceae
+cichoriaceous
+Cichorium
+Cicindela
+cicindelid
+cicindelidae
+cicisbeism
+ciclatoun
+Ciconia
+Ciconiae
+ciconian
+ciconiid
+Ciconiidae
+ciconiiform
+Ciconiiformes
+ciconine
+ciconioid
+Cicuta
+cicutoxin
+Cid
+cidarid
+Cidaridae
+cidaris
+Cidaroida
+cider
+ciderish
+ciderist
+ciderkin
+cig
+cigala
+cigar
+cigaresque
+cigarette
+cigarfish
+cigarillo
+cigarito
+cigarless
+cigua
+ciguatera
+cilectomy
+cilia
+ciliary
+Ciliata
+ciliate
+ciliated
+ciliately
+ciliation
+cilice
+Cilician
+cilicious
+Cilicism
+ciliella
+ciliferous
+ciliform
+ciliiferous
+ciliiform
+Cilioflagellata
+cilioflagellate
+ciliograde
+ciliolate
+ciliolum
+Ciliophora
+cilioretinal
+cilioscleral
+ciliospinal
+ciliotomy
+cilium
+cillosis
+cimbia
+Cimbri
+Cimbrian
+Cimbric
+cimelia
+cimex
+cimicid
+Cimicidae
+cimicide
+cimiciform
+Cimicifuga
+cimicifugin
+cimicoid
+ciminite
+cimline
+Cimmeria
+Cimmerian
+Cimmerianism
+cimolite
+cinch
+cincher
+cincholoipon
+cincholoiponic
+cinchomeronic
+Cinchona
+Cinchonaceae
+cinchonaceous
+cinchonamine
+cinchonate
+cinchonia
+cinchonic
+cinchonicine
+cinchonidia
+cinchonidine
+cinchonine
+cinchoninic
+cinchonism
+cinchonization
+cinchonize
+cinchonology
+cinchophen
+cinchotine
+cinchotoxine
+cincinnal
+Cincinnati
+Cincinnatia
+Cincinnatian
+cincinnus
+Cinclidae
+Cinclidotus
+cinclis
+Cinclus
+cinct
+cincture
+cinder
+Cinderella
+cinderlike
+cinderman
+cinderous
+cindery
+Cindie
+Cindy
+cine
+cinecamera
+cinefilm
+cinel
+cinema
+Cinemascope
+cinematic
+cinematical
+cinematically
+cinematize
+cinematograph
+cinematographer
+cinematographic
+cinematographical
+cinematographically
+cinematographist
+cinematography
+cinemelodrama
+cinemize
+cinemograph
+cinenchyma
+cinenchymatous
+cinene
+cinenegative
+cineole
+cineolic
+cinephone
+cinephotomicrography
+cineplastics
+cineplasty
+cineraceous
+Cinerama
+Cineraria
+cinerarium
+cinerary
+cineration
+cinerator
+cinerea
+cinereal
+cinereous
+cineritious
+cinevariety
+cingle
+cingular
+cingulate
+cingulated
+cingulum
+cinnabar
+cinnabaric
+cinnabarine
+cinnamal
+cinnamaldehyde
+cinnamate
+cinnamein
+cinnamene
+cinnamenyl
+cinnamic
+Cinnamodendron
+cinnamol
+cinnamomic
+Cinnamomum
+cinnamon
+cinnamoned
+cinnamonic
+cinnamonlike
+cinnamonroot
+cinnamonwood
+cinnamyl
+cinnamylidene
+cinnoline
+cinnyl
+cinquain
+cinque
+cinquecentism
+cinquecentist
+cinquecento
+cinquefoil
+cinquefoiled
+cinquepace
+cinter
+Cinura
+cinuran
+cinurous
+cion
+cionectomy
+cionitis
+cionocranial
+cionocranian
+cionoptosis
+cionorrhaphia
+cionotome
+cionotomy
+Cipango
+cipher
+cipherable
+cipherdom
+cipherer
+cipherhood
+cipo
+cipolin
+cippus
+circa
+Circaea
+Circaeaceae
+Circaetus
+Circassian
+Circassic
+Circe
+Circean
+Circensian
+circinal
+circinate
+circinately
+circination
+Circinus
+circiter
+circle
+circled
+circler
+circlet
+circlewise
+circling
+circovarian
+circuit
+circuitable
+circuital
+circuiteer
+circuiter
+circuition
+circuitman
+circuitor
+circuitous
+circuitously
+circuitousness
+circuity
+circulable
+circulant
+circular
+circularism
+circularity
+circularization
+circularize
+circularizer
+circularly
+circularness
+circularwise
+circulate
+circulation
+circulative
+circulator
+circulatory
+circumagitate
+circumagitation
+circumambages
+circumambagious
+circumambience
+circumambiency
+circumambient
+circumambulate
+circumambulation
+circumambulator
+circumambulatory
+circumanal
+circumantarctic
+circumarctic
+circumarticular
+circumaviate
+circumaviation
+circumaviator
+circumaxial
+circumaxile
+circumaxillary
+circumbasal
+circumbendibus
+circumboreal
+circumbuccal
+circumbulbar
+circumcallosal
+Circumcellion
+circumcenter
+circumcentral
+circumcinct
+circumcincture
+circumcircle
+circumcise
+circumciser
+circumcision
+circumclude
+circumclusion
+circumcolumnar
+circumcone
+circumconic
+circumcorneal
+circumcrescence
+circumcrescent
+circumdenudation
+circumdiction
+circumduce
+circumduct
+circumduction
+circumesophagal
+circumesophageal
+circumference
+circumferential
+circumferentially
+circumferentor
+circumflant
+circumflect
+circumflex
+circumflexion
+circumfluence
+circumfluent
+circumfluous
+circumforaneous
+circumfulgent
+circumfuse
+circumfusile
+circumfusion
+circumgenital
+circumgyrate
+circumgyration
+circumgyratory
+circumhorizontal
+circumincession
+circuminsession
+circuminsular
+circumintestinal
+circumitineration
+circumjacence
+circumjacency
+circumjacent
+circumlental
+circumlitio
+circumlittoral
+circumlocute
+circumlocution
+circumlocutional
+circumlocutionary
+circumlocutionist
+circumlocutory
+circummeridian
+circummeridional
+circummigration
+circummundane
+circummure
+circumnatant
+circumnavigable
+circumnavigate
+circumnavigation
+circumnavigator
+circumnavigatory
+circumneutral
+circumnuclear
+circumnutate
+circumnutation
+circumnutatory
+circumocular
+circumoesophagal
+circumoral
+circumorbital
+circumpacific
+circumpallial
+circumparallelogram
+circumpentagon
+circumplicate
+circumplication
+circumpolar
+circumpolygon
+circumpose
+circumposition
+circumradius
+circumrenal
+circumrotate
+circumrotation
+circumrotatory
+circumsail
+circumscissile
+circumscribable
+circumscribe
+circumscribed
+circumscriber
+circumscript
+circumscription
+circumscriptive
+circumscriptively
+circumscriptly
+circumsinous
+circumspangle
+circumspatial
+circumspect
+circumspection
+circumspective
+circumspectively
+circumspectly
+circumspectness
+circumspheral
+circumstance
+circumstanced
+circumstantiability
+circumstantiable
+circumstantial
+circumstantiality
+circumstantially
+circumstantialness
+circumstantiate
+circumstantiation
+circumtabular
+circumterraneous
+circumterrestrial
+circumtonsillar
+circumtropical
+circumumbilical
+circumundulate
+circumundulation
+circumvallate
+circumvallation
+circumvascular
+circumvent
+circumventer
+circumvention
+circumventive
+circumventor
+circumviate
+circumvolant
+circumvolute
+circumvolution
+circumvolutory
+circumvolve
+circumzenithal
+circus
+circusy
+cirque
+cirrate
+cirrated
+Cirratulidae
+Cirratulus
+Cirrhopetalum
+cirrhosed
+cirrhosis
+cirrhotic
+cirrhous
+cirri
+cirribranch
+cirriferous
+cirriform
+cirrigerous
+cirrigrade
+cirriped
+Cirripedia
+cirripedial
+cirrolite
+cirropodous
+cirrose
+Cirrostomi
+cirrous
+cirrus
+cirsectomy
+Cirsium
+cirsocele
+cirsoid
+cirsomphalos
+cirsophthalmia
+cirsotome
+cirsotomy
+ciruela
+cirurgian
+Cisalpine
+cisalpine
+Cisalpinism
+cisandine
+cisatlantic
+cisco
+cise
+cisele
+cisgangetic
+cisjurane
+cisleithan
+cismarine
+Cismontane
+cismontane
+Cismontanism
+cisoceanic
+cispadane
+cisplatine
+cispontine
+cisrhenane
+Cissampelos
+cissing
+cissoid
+cissoidal
+Cissus
+cist
+cista
+Cistaceae
+cistaceous
+cistae
+cisted
+Cistercian
+Cistercianism
+cistern
+cisterna
+cisternal
+cistic
+cistophoric
+cistophorus
+Cistudo
+Cistus
+cistvaen
+cit
+citable
+citadel
+citation
+citator
+citatory
+cite
+citee
+Citellus
+citer
+citess
+cithara
+Citharexylum
+citharist
+citharista
+citharoedi
+citharoedic
+citharoedus
+cither
+citied
+citification
+citified
+citify
+Citigradae
+citigrade
+citizen
+citizendom
+citizeness
+citizenhood
+citizenish
+citizenism
+citizenize
+citizenly
+citizenry
+citizenship
+citole
+citraconate
+citraconic
+citral
+citramide
+citramontane
+citrange
+citrangeade
+citrate
+citrated
+citrean
+citrene
+citreous
+citric
+citriculture
+citriculturist
+citril
+citrin
+citrination
+citrine
+citrinin
+citrinous
+citrometer
+Citromyces
+citron
+citronade
+citronella
+citronellal
+citronelle
+citronellic
+citronellol
+citronin
+citronwood
+Citropsis
+citropten
+citrous
+citrullin
+Citrullus
+Citrus
+citrus
+citrylidene
+cittern
+citua
+city
+citycism
+citydom
+cityfolk
+cityful
+cityish
+cityless
+cityness
+cityscape
+cityward
+citywards
+cive
+civet
+civetlike
+civetone
+civic
+civically
+civicism
+civics
+civil
+civilian
+civility
+civilizable
+civilization
+civilizational
+civilizatory
+civilize
+civilized
+civilizedness
+civilizee
+civilizer
+civilly
+civilness
+civism
+Civitan
+civvy
+cixiid
+Cixiidae
+Cixo
+clabber
+clabbery
+clachan
+clack
+Clackama
+clackdish
+clacker
+clacket
+clackety
+clad
+cladanthous
+cladautoicous
+cladding
+cladine
+cladocarpous
+Cladocera
+cladoceran
+cladocerous
+cladode
+cladodial
+cladodont
+cladodontid
+Cladodontidae
+Cladodus
+cladogenous
+Cladonia
+Cladoniaceae
+cladoniaceous
+cladonioid
+Cladophora
+Cladophoraceae
+cladophoraceous
+Cladophorales
+cladophyll
+cladophyllum
+cladoptosis
+cladose
+Cladoselache
+Cladoselachea
+cladoselachian
+Cladoselachidae
+cladosiphonic
+Cladosporium
+Cladothrix
+Cladrastis
+cladus
+clag
+claggum
+claggy
+Claiborne
+Claibornian
+claim
+claimable
+claimant
+claimer
+claimless
+clairaudience
+clairaudient
+clairaudiently
+clairce
+Claire
+clairecole
+clairecolle
+clairschach
+clairschacher
+clairsentience
+clairsentient
+clairvoyance
+clairvoyancy
+clairvoyant
+clairvoyantly
+claith
+claithes
+claiver
+Clallam
+clam
+clamant
+clamantly
+clamative
+Clamatores
+clamatorial
+clamatory
+clamb
+clambake
+clamber
+clamberer
+clamcracker
+clame
+clamer
+clammed
+clammer
+clammily
+clamminess
+clamming
+clammish
+clammy
+clammyweed
+clamor
+clamorer
+clamorist
+clamorous
+clamorously
+clamorousness
+clamorsome
+clamp
+clamper
+clamshell
+clamworm
+clan
+clancular
+clancularly
+clandestine
+clandestinely
+clandestineness
+clandestinity
+clanfellow
+clang
+clangful
+clangingly
+clangor
+clangorous
+clangorously
+Clangula
+clanjamfray
+clanjamfrey
+clanjamfrie
+clanjamphrey
+clank
+clankety
+clanking
+clankingly
+clankingness
+clankless
+clanless
+clanned
+clanning
+clannishly
+clannishness
+clansfolk
+clanship
+clansman
+clansmanship
+clanswoman
+Claosaurus
+clap
+clapboard
+clapbread
+clapmatch
+clapnet
+clapped
+clapper
+clapperclaw
+clapperclawer
+clapperdudgeon
+clappermaclaw
+clapping
+clapt
+claptrap
+clapwort
+claque
+claquer
+Clara
+clarabella
+clarain
+Clare
+Clarence
+Clarenceux
+Clarenceuxship
+Clarencieux
+clarendon
+claret
+Claretian
+Claribel
+claribella
+Clarice
+clarifiant
+clarification
+clarifier
+clarify
+clarigation
+clarin
+Clarinda
+clarinet
+clarinetist
+clarinettist
+clarion
+clarionet
+Clarissa
+Clarisse
+Clarist
+clarity
+Clark
+clark
+clarkeite
+Clarkia
+claro
+Claromontane
+clarshech
+clart
+clarty
+clary
+clash
+clasher
+clashingly
+clashy
+clasmatocyte
+clasmatosis
+clasp
+clasper
+clasping
+claspt
+class
+classable
+classbook
+classed
+classer
+classes
+classfellow
+classic
+classical
+classicalism
+classicalist
+classicality
+classicalize
+classically
+classicalness
+classicism
+classicist
+classicistic
+classicize
+classicolatry
+classifiable
+classific
+classifically
+classification
+classificational
+classificator
+classificatory
+classified
+classifier
+classis
+classism
+classman
+classmanship
+classmate
+classroom
+classwise
+classwork
+classy
+clastic
+clat
+clatch
+Clathraceae
+clathraceous
+Clathraria
+clathrarian
+clathrate
+Clathrina
+Clathrinidae
+clathroid
+clathrose
+clathrulate
+Clathrus
+Clatsop
+clatter
+clatterer
+clatteringly
+clattertrap
+clattery
+clatty
+Claude
+claudent
+claudetite
+Claudia
+Claudian
+claudicant
+claudicate
+claudication
+Claudio
+Claudius
+claught
+clausal
+clause
+Clausilia
+Clausiliidae
+clausthalite
+claustra
+claustral
+claustration
+claustrophobia
+claustrum
+clausula
+clausular
+clausule
+clausure
+claut
+clava
+clavacin
+claval
+Clavaria
+Clavariaceae
+clavariaceous
+clavate
+clavated
+clavately
+clavation
+clave
+clavecin
+clavecinist
+clavel
+clavelization
+clavelize
+clavellate
+clavellated
+claver
+clavial
+claviature
+clavicembalo
+Claviceps
+clavichord
+clavichordist
+clavicithern
+clavicle
+clavicorn
+clavicornate
+Clavicornes
+Clavicornia
+clavicotomy
+clavicular
+clavicularium
+claviculate
+claviculus
+clavicylinder
+clavicymbal
+clavicytherium
+clavier
+clavierist
+claviform
+claviger
+clavigerous
+claviharp
+clavilux
+claviol
+clavipectoral
+clavis
+clavodeltoid
+clavodeltoideus
+clavola
+clavolae
+clavolet
+clavus
+clavy
+claw
+clawed
+clawer
+clawk
+clawker
+clawless
+Clay
+clay
+claybank
+claybrained
+clayen
+clayer
+clayey
+clayiness
+clayish
+claylike
+clayman
+claymore
+Clayoquot
+claypan
+Clayton
+Claytonia
+clayware
+clayweed
+cleach
+clead
+cleaded
+cleading
+cleam
+cleamer
+clean
+cleanable
+cleaner
+cleanhanded
+cleanhandedness
+cleanhearted
+cleaning
+cleanish
+cleanlily
+cleanliness
+cleanly
+cleanness
+cleanout
+cleansable
+cleanse
+cleanser
+cleansing
+cleanskins
+cleanup
+clear
+clearable
+clearage
+clearance
+clearcole
+clearedness
+clearer
+clearheaded
+clearheadedly
+clearheadedness
+clearhearted
+clearing
+clearinghouse
+clearish
+clearly
+clearness
+clearskins
+clearstarch
+clearweed
+clearwing
+cleat
+cleavability
+cleavable
+cleavage
+cleave
+cleaveful
+cleavelandite
+cleaver
+cleavers
+cleaverwort
+cleaving
+cleavingly
+cleche
+cleck
+cled
+cledge
+cledgy
+cledonism
+clee
+cleek
+cleeked
+cleeky
+clef
+cleft
+clefted
+cleg
+cleidagra
+cleidarthritis
+cleidocostal
+cleidocranial
+cleidohyoid
+cleidomancy
+cleidomastoid
+cleidorrhexis
+cleidoscapular
+cleidosternal
+cleidotomy
+cleidotripsy
+cleistocarp
+cleistocarpous
+cleistogamic
+cleistogamically
+cleistogamous
+cleistogamously
+cleistogamy
+cleistogene
+cleistogenous
+cleistogeny
+cleistothecium
+Cleistothecopsis
+cleithral
+cleithrum
+Clem
+clem
+Clematis
+clematite
+Clemclemalats
+clemence
+clemency
+Clement
+clement
+Clementina
+Clementine
+clemently
+clench
+cleoid
+Cleome
+Cleopatra
+clep
+Clepsine
+clepsydra
+cleptobiosis
+cleptobiotic
+clerestoried
+clerestory
+clergy
+clergyable
+clergylike
+clergyman
+clergywoman
+cleric
+clerical
+clericalism
+clericalist
+clericality
+clericalize
+clerically
+clericate
+clericature
+clericism
+clericity
+clerid
+Cleridae
+clerihew
+clerisy
+clerk
+clerkage
+clerkdom
+clerkery
+clerkess
+clerkhood
+clerking
+clerkish
+clerkless
+clerklike
+clerkliness
+clerkly
+clerkship
+Clerodendron
+cleromancy
+cleronomy
+cleruch
+cleruchial
+cleruchic
+cleruchy
+Clerus
+cletch
+Clethra
+Clethraceae
+clethraceous
+cleuch
+cleve
+cleveite
+clever
+cleverality
+cleverish
+cleverishly
+cleverly
+cleverness
+clevis
+clew
+cliack
+clianthus
+cliche
+click
+clicker
+clicket
+clickless
+clicky
+Clidastes
+cliency
+client
+clientage
+cliental
+cliented
+clientelage
+clientele
+clientless
+clientry
+clientship
+Cliff
+cliff
+cliffed
+cliffless
+clifflet
+clifflike
+Clifford
+cliffside
+cliffsman
+cliffweed
+cliffy
+clift
+Cliftonia
+cliftonite
+clifty
+clima
+Climaciaceae
+climaciaceous
+Climacium
+climacteric
+climacterical
+climacterically
+climactic
+climactical
+climactically
+climacus
+climata
+climatal
+climate
+climath
+climatic
+climatical
+climatically
+Climatius
+climatize
+climatographical
+climatography
+climatologic
+climatological
+climatologically
+climatologist
+climatology
+climatometer
+climatotherapeutics
+climatotherapy
+climature
+climax
+climb
+climbable
+climber
+climbing
+clime
+climograph
+clinal
+clinamen
+clinamina
+clinandria
+clinandrium
+clinanthia
+clinanthium
+clinch
+clincher
+clinchingly
+clinchingness
+cline
+cling
+clinger
+clingfish
+clinging
+clingingly
+clingingness
+clingstone
+clingy
+clinia
+clinic
+clinical
+clinically
+clinician
+clinicist
+clinicopathological
+clinium
+clink
+clinker
+clinkerer
+clinkery
+clinking
+clinkstone
+clinkum
+clinoaxis
+clinocephalic
+clinocephalism
+clinocephalous
+clinocephalus
+clinocephaly
+clinochlore
+clinoclase
+clinoclasite
+clinodiagonal
+clinodomatic
+clinodome
+clinograph
+clinographic
+clinohedral
+clinohedrite
+clinohumite
+clinoid
+clinologic
+clinology
+clinometer
+clinometric
+clinometrical
+clinometry
+clinopinacoid
+clinopinacoidal
+Clinopodium
+clinoprism
+clinopyramid
+clinopyroxene
+clinorhombic
+clinospore
+clinostat
+clinquant
+clint
+clinting
+Clinton
+Clintonia
+clintonite
+clinty
+Clio
+Cliona
+Clione
+clip
+clipei
+clipeus
+clippable
+clipped
+clipper
+clipperman
+clipping
+clips
+clipse
+clipsheet
+clipsome
+clipt
+clique
+cliquedom
+cliqueless
+cliquish
+cliquishly
+cliquishness
+cliquism
+cliquy
+cliseometer
+clisere
+clishmaclaver
+Clisiocampa
+Clistogastra
+clit
+clitch
+clite
+clitella
+clitellar
+clitelliferous
+clitelline
+clitellum
+clitellus
+clites
+clithe
+clithral
+clithridiate
+clitia
+clition
+Clitocybe
+Clitoria
+clitoridauxe
+clitoridean
+clitoridectomy
+clitoriditis
+clitoridotomy
+clitoris
+clitorism
+clitoritis
+clitter
+clitterclatter
+clival
+clive
+clivers
+Clivia
+clivis
+clivus
+cloaca
+cloacal
+cloacaline
+cloacean
+cloacinal
+cloacinean
+cloacitis
+cloak
+cloakage
+cloaked
+cloakedly
+cloaking
+cloakless
+cloaklet
+cloakmaker
+cloakmaking
+cloakroom
+cloakwise
+cloam
+cloamen
+cloamer
+clobber
+clobberer
+clochan
+cloche
+clocher
+clochette
+clock
+clockbird
+clockcase
+clocked
+clocker
+clockface
+clockhouse
+clockkeeper
+clockless
+clocklike
+clockmaker
+clockmaking
+clockmutch
+clockroom
+clocksmith
+clockwise
+clockwork
+clod
+clodbreaker
+clodder
+cloddily
+cloddiness
+cloddish
+cloddishly
+cloddishness
+cloddy
+clodhead
+clodhopper
+clodhopping
+clodlet
+clodpate
+clodpated
+clodpoll
+cloff
+clog
+clogdogdo
+clogger
+cloggily
+clogginess
+cloggy
+cloghad
+cloglike
+clogmaker
+clogmaking
+clogwood
+clogwyn
+cloiochoanitic
+cloisonless
+cloisonne
+cloister
+cloisteral
+cloistered
+cloisterer
+cloisterless
+cloisterlike
+cloisterliness
+cloisterly
+cloisterwise
+cloistral
+cloistress
+cloit
+clomb
+clomben
+clonal
+clone
+clonic
+clonicity
+clonicotonic
+clonism
+clonorchiasis
+Clonorchis
+Clonothrix
+clonus
+cloof
+cloop
+cloot
+clootie
+clop
+cloragen
+clorargyrite
+cloriodid
+closable
+close
+closecross
+closed
+closefisted
+closefistedly
+closefistedness
+closehanded
+closehearted
+closely
+closemouth
+closemouthed
+closen
+closeness
+closer
+closestool
+closet
+closewing
+closh
+closish
+closter
+Closterium
+clostridial
+Clostridium
+closure
+clot
+clotbur
+clote
+cloth
+clothbound
+clothe
+clothes
+clothesbag
+clothesbasket
+clothesbrush
+clotheshorse
+clothesline
+clothesman
+clothesmonger
+clothespin
+clothespress
+clothesyard
+clothier
+clothify
+Clothilda
+clothing
+clothmaker
+clothmaking
+Clotho
+clothworker
+clothy
+clottage
+clottedness
+clotter
+clotty
+cloture
+clotweed
+cloud
+cloudage
+cloudberry
+cloudburst
+cloudcap
+clouded
+cloudful
+cloudily
+cloudiness
+clouding
+cloudland
+cloudless
+cloudlessly
+cloudlessness
+cloudlet
+cloudlike
+cloudling
+cloudology
+cloudscape
+cloudship
+cloudward
+cloudwards
+cloudy
+clough
+clour
+clout
+clouted
+clouter
+clouterly
+clouty
+clove
+cloven
+clovene
+clover
+clovered
+cloverlay
+cloverleaf
+cloveroot
+cloverroot
+clovery
+clow
+clown
+clownade
+clownage
+clownery
+clownheal
+clownish
+clownishly
+clownishness
+clownship
+clowring
+cloy
+cloyedness
+cloyer
+cloying
+cloyingly
+cloyingness
+cloyless
+cloysome
+club
+clubbability
+clubbable
+clubbed
+clubber
+clubbily
+clubbing
+clubbish
+clubbism
+clubbist
+clubby
+clubdom
+clubfellow
+clubfisted
+clubfoot
+clubfooted
+clubhand
+clubhaul
+clubhouse
+clubionid
+Clubionidae
+clubland
+clubman
+clubmate
+clubmobile
+clubmonger
+clubridden
+clubroom
+clubroot
+clubstart
+clubster
+clubweed
+clubwoman
+clubwood
+cluck
+clue
+cluff
+clump
+clumpish
+clumproot
+clumpy
+clumse
+clumsily
+clumsiness
+clumsy
+clunch
+clung
+Cluniac
+Cluniacensian
+Clunisian
+Clunist
+clunk
+clupanodonic
+Clupea
+clupeid
+Clupeidae
+clupeiform
+clupeine
+Clupeodei
+clupeoid
+cluricaune
+Clusia
+Clusiaceae
+clusiaceous
+cluster
+clusterberry
+clustered
+clusterfist
+clustering
+clusteringly
+clustery
+clutch
+clutchman
+cluther
+clutter
+clutterer
+clutterment
+cluttery
+cly
+Clyde
+Clydesdale
+Clydeside
+Clydesider
+clyer
+clyfaker
+clyfaking
+Clymenia
+clype
+clypeal
+Clypeaster
+Clypeastridea
+Clypeastrina
+clypeastroid
+Clypeastroida
+Clypeastroidea
+clypeate
+clypeiform
+clypeolar
+clypeolate
+clypeole
+clypeus
+clysis
+clysma
+clysmian
+clysmic
+clyster
+clysterize
+Clytemnestra
+cnemapophysis
+cnemial
+cnemidium
+Cnemidophorus
+cnemis
+Cneoraceae
+cneoraceous
+Cneorum
+cnicin
+Cnicus
+cnida
+Cnidaria
+cnidarian
+Cnidian
+cnidoblast
+cnidocell
+cnidocil
+cnidocyst
+cnidophore
+cnidophorous
+cnidopod
+cnidosac
+Cnidoscolus
+cnidosis
+coabode
+coabound
+coabsume
+coacceptor
+coacervate
+coacervation
+coach
+coachability
+coachable
+coachbuilder
+coachbuilding
+coachee
+coacher
+coachfellow
+coachful
+coaching
+coachlet
+coachmaker
+coachmaking
+coachman
+coachmanship
+coachmaster
+coachsmith
+coachsmithing
+coachway
+coachwhip
+coachwise
+coachwoman
+coachwork
+coachwright
+coachy
+coact
+coaction
+coactive
+coactively
+coactivity
+coactor
+coadamite
+coadapt
+coadaptation
+coadequate
+coadjacence
+coadjacency
+coadjacent
+coadjacently
+coadjudicator
+coadjust
+coadjustment
+coadjutant
+coadjutator
+coadjute
+coadjutement
+coadjutive
+coadjutor
+coadjutorship
+coadjutress
+coadjutrix
+coadjuvancy
+coadjuvant
+coadjuvate
+coadminister
+coadministration
+coadministrator
+coadministratrix
+coadmiration
+coadmire
+coadmit
+coadnate
+coadore
+coadsorbent
+coadunate
+coadunation
+coadunative
+coadunatively
+coadunite
+coadventure
+coadventurer
+coadvice
+coaffirmation
+coafforest
+coaged
+coagency
+coagent
+coaggregate
+coaggregated
+coaggregation
+coagitate
+coagitator
+coagment
+coagonize
+coagriculturist
+coagula
+coagulability
+coagulable
+coagulant
+coagulase
+coagulate
+coagulation
+coagulative
+coagulator
+coagulatory
+coagulin
+coagulometer
+coagulose
+coagulum
+Coahuiltecan
+coaid
+coaita
+coak
+coakum
+coal
+coalbag
+coalbagger
+coalbin
+coalbox
+coaldealer
+coaler
+coalesce
+coalescence
+coalescency
+coalescent
+coalfish
+coalfitter
+coalhole
+coalification
+coalify
+Coalite
+coalition
+coalitional
+coalitioner
+coalitionist
+coalize
+coalizer
+coalless
+coalmonger
+coalmouse
+coalpit
+coalrake
+coalsack
+coalternate
+coalternation
+coalternative
+coaltitude
+coaly
+coalyard
+coambassador
+coambulant
+coamiable
+coaming
+Coan
+coanimate
+coannex
+coannihilate
+coapostate
+coapparition
+coappear
+coappearance
+coapprehend
+coapprentice
+coappriser
+coapprover
+coapt
+coaptate
+coaptation
+coaration
+coarb
+coarbiter
+coarbitrator
+coarctate
+coarctation
+coardent
+coarrange
+coarrangement
+coarse
+coarsely
+coarsen
+coarseness
+coarsish
+coascend
+coassert
+coasserter
+coassession
+coassessor
+coassignee
+coassist
+coassistance
+coassistant
+coassume
+coast
+coastal
+coastally
+coaster
+Coastguard
+coastguardman
+coasting
+coastland
+coastman
+coastside
+coastwaiter
+coastward
+coastwards
+coastways
+coastwise
+coat
+coated
+coatee
+coater
+coati
+coatie
+coatimondie
+coatimundi
+coating
+coatless
+coatroom
+coattail
+coattailed
+coattend
+coattest
+coattestation
+coattestator
+coaudience
+coauditor
+coaugment
+coauthor
+coauthority
+coauthorship
+coawareness
+coax
+coaxal
+coaxation
+coaxer
+coaxial
+coaxially
+coaxing
+coaxingly
+coaxy
+cob
+cobaea
+cobalt
+cobaltammine
+cobaltic
+cobalticyanic
+cobalticyanides
+cobaltiferous
+cobaltinitrite
+cobaltite
+cobaltocyanic
+cobaltocyanide
+cobaltous
+cobang
+cobbed
+cobber
+cobberer
+cobbing
+cobble
+cobbler
+cobblerfish
+cobblerism
+cobblerless
+cobblership
+cobblery
+cobblestone
+cobbling
+cobbly
+cobbra
+cobby
+cobcab
+Cobdenism
+Cobdenite
+cobego
+cobelief
+cobeliever
+cobelligerent
+cobenignity
+coberger
+cobewail
+cobhead
+cobia
+cobiron
+cobishop
+Cobitidae
+Cobitis
+coble
+cobleman
+Coblentzian
+Cobleskill
+cobless
+cobloaf
+cobnut
+cobola
+coboundless
+cobourg
+cobra
+cobreathe
+cobridgehead
+cobriform
+cobrother
+cobstone
+coburg
+coburgess
+coburgher
+coburghership
+Cobus
+cobweb
+cobwebbery
+cobwebbing
+cobwebby
+cobwork
+coca
+cocaceous
+cocaine
+cocainism
+cocainist
+cocainization
+cocainize
+cocainomania
+cocainomaniac
+Cocama
+Cocamama
+cocamine
+Cocanucos
+cocarboxylase
+cocash
+cocashweed
+cocause
+cocautioner
+Coccaceae
+coccagee
+coccal
+Cocceian
+Cocceianism
+coccerin
+cocci
+coccid
+Coccidae
+coccidia
+coccidial
+coccidian
+Coccidiidea
+coccidioidal
+Coccidioides
+Coccidiomorpha
+coccidiosis
+coccidium
+coccidology
+cocciferous
+cocciform
+coccigenic
+coccinella
+coccinellid
+Coccinellidae
+coccionella
+cocco
+coccobacillus
+coccochromatic
+Coccogonales
+coccogone
+Coccogoneae
+coccogonium
+coccoid
+coccolite
+coccolith
+coccolithophorid
+Coccolithophoridae
+Coccoloba
+Coccolobis
+Coccomyces
+coccosphere
+coccostean
+coccosteid
+Coccosteidae
+Coccosteus
+Coccothraustes
+coccothraustine
+Coccothrinax
+coccous
+coccule
+cocculiferous
+Cocculus
+cocculus
+coccus
+coccydynia
+coccygalgia
+coccygeal
+coccygean
+coccygectomy
+coccygerector
+coccyges
+coccygeus
+coccygine
+coccygodynia
+coccygomorph
+Coccygomorphae
+coccygomorphic
+coccygotomy
+coccyodynia
+coccyx
+Coccyzus
+cocentric
+cochairman
+cochal
+cochief
+Cochin
+cochineal
+cochlea
+cochlear
+cochleare
+Cochlearia
+cochlearifoliate
+cochleariform
+cochleate
+cochleated
+cochleiform
+cochleitis
+cochleous
+cochlidiid
+Cochlidiidae
+cochliodont
+Cochliodontidae
+Cochliodus
+Cochlospermaceae
+cochlospermaceous
+Cochlospermum
+Cochranea
+cochurchwarden
+cocillana
+cocircular
+cocircularity
+cocitizen
+cocitizenship
+cock
+cockade
+cockaded
+Cockaigne
+cockal
+cockalorum
+cockamaroo
+cockarouse
+cockateel
+cockatoo
+cockatrice
+cockawee
+cockbell
+cockbill
+cockbird
+cockboat
+cockbrain
+cockchafer
+cockcrow
+cockcrower
+cockcrowing
+cocked
+Cocker
+cocker
+cockerel
+cockermeg
+cockernony
+cocket
+cockeye
+cockeyed
+cockfight
+cockfighting
+cockhead
+cockhorse
+cockieleekie
+cockily
+cockiness
+cocking
+cockish
+cockle
+cockleboat
+cocklebur
+cockled
+cockler
+cockleshell
+cocklet
+cocklewife
+cocklight
+cockling
+cockloft
+cockly
+cockmaster
+cockmatch
+cockmate
+cockneian
+cockneity
+cockney
+cockneybred
+cockneydom
+cockneyese
+cockneyess
+cockneyfication
+cockneyfy
+cockneyish
+cockneyishly
+cockneyism
+cockneyize
+cockneyland
+cockneyship
+cockpit
+cockroach
+cockscomb
+cockscombed
+cocksfoot
+cockshead
+cockshot
+cockshut
+cockshy
+cockshying
+cockspur
+cockstone
+cocksure
+cocksuredom
+cocksureism
+cocksurely
+cocksureness
+cocksurety
+cocktail
+cockthrowing
+cockup
+cockweed
+cocky
+Cocle
+coco
+cocoa
+cocoach
+cocobolo
+Coconino
+coconnection
+coconqueror
+coconscious
+coconsciously
+coconsciousness
+coconsecrator
+coconspirator
+coconstituent
+cocontractor
+Coconucan
+Coconuco
+coconut
+cocoon
+cocoonery
+cocorico
+cocoroot
+Cocos
+cocotte
+cocovenantor
+cocowood
+cocowort
+cocozelle
+cocreate
+cocreator
+cocreatorship
+cocreditor
+cocrucify
+coctile
+coction
+coctoantigen
+coctoprecipitin
+cocuisa
+cocullo
+cocurator
+cocurrent
+cocuswood
+cocuyo
+Cocytean
+Cocytus
+cod
+coda
+codamine
+codbank
+codder
+codding
+coddle
+coddler
+code
+codebtor
+codeclination
+codecree
+codefendant
+codeine
+codeless
+codelight
+codelinquency
+codelinquent
+codenization
+codeposit
+coder
+coderive
+codescendant
+codespairer
+codex
+codfish
+codfisher
+codfishery
+codger
+codhead
+codheaded
+Codiaceae
+codiaceous
+Codiaeum
+Codiales
+codical
+codices
+codicil
+codicilic
+codicillary
+codictatorship
+codification
+codifier
+codify
+codilla
+codille
+codiniac
+codirectional
+codirector
+codiscoverer
+codisjunct
+codist
+Codium
+codivine
+codling
+codman
+codo
+codol
+codomestication
+codominant
+codon
+codpiece
+codpitchings
+Codrus
+codshead
+codworm
+coe
+coecal
+coecum
+coed
+coeditor
+coeditorship
+coeducate
+coeducation
+coeducational
+coeducationalism
+coeducationalize
+coeducationally
+coeffect
+coefficacy
+coefficient
+coefficiently
+coeffluent
+coeffluential
+coelacanth
+coelacanthid
+Coelacanthidae
+coelacanthine
+Coelacanthini
+coelacanthoid
+coelacanthous
+coelanaglyphic
+coelar
+coelarium
+Coelastraceae
+coelastraceous
+Coelastrum
+Coelata
+coelder
+coeldership
+Coelebogyne
+coelect
+coelection
+coelector
+coelectron
+coelelminth
+Coelelminthes
+coelelminthic
+Coelentera
+Coelenterata
+coelenterate
+coelenteric
+coelenteron
+coelestine
+coelevate
+coelho
+coelia
+coeliac
+coelialgia
+coelian
+Coelicolae
+Coelicolist
+coeligenous
+coelin
+coeline
+coeliomyalgia
+coeliorrhea
+coeliorrhoea
+coelioscopy
+coeliotomy
+coeloblastic
+coeloblastula
+Coelococcus
+coelodont
+coelogastrula
+Coeloglossum
+Coelogyne
+coelom
+coeloma
+Coelomata
+coelomate
+coelomatic
+coelomatous
+coelomesoblast
+coelomic
+Coelomocoela
+coelomopore
+coelonavigation
+coelongated
+coeloplanula
+coelosperm
+coelospermous
+coelostat
+coelozoic
+coemanate
+coembedded
+coembody
+coembrace
+coeminency
+coemperor
+coemploy
+coemployee
+coemployment
+coempt
+coemption
+coemptional
+coemptionator
+coemptive
+coemptor
+coenact
+coenactor
+coenaculous
+coenamor
+coenamorment
+coenamourment
+coenanthium
+coendear
+Coendidae
+Coendou
+coendure
+coenenchym
+coenenchyma
+coenenchymal
+coenenchymatous
+coenenchyme
+coenesthesia
+coenesthesis
+coenflame
+coengage
+coengager
+coenjoy
+coenobe
+coenobiar
+coenobic
+coenobioid
+coenobium
+coenoblast
+coenoblastic
+coenocentrum
+coenocyte
+coenocytic
+coenodioecism
+coenoecial
+coenoecic
+coenoecium
+coenogamete
+coenomonoecism
+coenosarc
+coenosarcal
+coenosarcous
+coenosite
+coenospecies
+coenospecific
+coenospecifically
+coenosteal
+coenosteum
+coenotrope
+coenotype
+coenotypic
+coenthrone
+coenurus
+coenzyme
+coequal
+coequality
+coequalize
+coequally
+coequalness
+coequate
+coequated
+coequation
+coerce
+coercement
+coercer
+coercibility
+coercible
+coercibleness
+coercibly
+coercion
+coercionary
+coercionist
+coercitive
+coercive
+coercively
+coerciveness
+coercivity
+Coerebidae
+coeruleolactite
+coessential
+coessentiality
+coessentially
+coessentialness
+coestablishment
+coestate
+coetaneity
+coetaneous
+coetaneously
+coetaneousness
+coeternal
+coeternally
+coeternity
+coetus
+coeval
+coevality
+coevally
+coexchangeable
+coexclusive
+coexecutant
+coexecutor
+coexecutrix
+coexert
+coexertion
+coexist
+coexistence
+coexistency
+coexistent
+coexpand
+coexpanded
+coexperiencer
+coexpire
+coexplosion
+coextend
+coextension
+coextensive
+coextensively
+coextensiveness
+coextent
+cofactor
+Cofane
+cofaster
+cofather
+cofathership
+cofeature
+cofeoffee
+coferment
+cofermentation
+coff
+Coffea
+coffee
+coffeebush
+coffeecake
+coffeegrower
+coffeegrowing
+coffeehouse
+coffeeleaf
+coffeepot
+coffeeroom
+coffeetime
+coffeeweed
+coffeewood
+coffer
+cofferdam
+cofferer
+cofferfish
+coffering
+cofferlike
+cofferwork
+coffin
+coffinless
+coffinmaker
+coffinmaking
+coffle
+coffret
+cofighter
+coforeknown
+coformulator
+cofounder
+cofoundress
+cofreighter
+coft
+cofunction
+cog
+cogence
+cogency
+cogener
+cogeneric
+cogent
+cogently
+cogged
+cogger
+coggie
+cogging
+coggle
+coggledy
+cogglety
+coggly
+coghle
+cogitability
+cogitable
+cogitabund
+cogitabundity
+cogitabundly
+cogitabundous
+cogitant
+cogitantly
+cogitate
+cogitatingly
+cogitation
+cogitative
+cogitatively
+cogitativeness
+cogitativity
+cogitator
+coglorify
+coglorious
+cogman
+cognac
+cognate
+cognateness
+cognatic
+cognatical
+cognation
+cognisable
+cognisance
+cognition
+cognitional
+cognitive
+cognitively
+cognitum
+cognizability
+cognizable
+cognizableness
+cognizably
+cognizance
+cognizant
+cognize
+cognizee
+cognizer
+cognizor
+cognomen
+cognominal
+cognominate
+cognomination
+cognosce
+cognoscent
+cognoscibility
+cognoscible
+cognoscitive
+cognoscitively
+cogon
+cogonal
+cogovernment
+cogovernor
+cogracious
+cograil
+cogrediency
+cogredient
+cogroad
+Cogswellia
+coguarantor
+coguardian
+cogue
+cogway
+cogwheel
+cogwood
+cohabit
+cohabitancy
+cohabitant
+cohabitation
+coharmonious
+coharmoniously
+coharmonize
+coheartedness
+coheir
+coheiress
+coheirship
+cohelper
+cohelpership
+Cohen
+cohenite
+coherald
+cohere
+coherence
+coherency
+coherent
+coherently
+coherer
+coheretic
+coheritage
+coheritor
+cohesibility
+cohesible
+cohesion
+cohesive
+cohesively
+cohesiveness
+cohibit
+cohibition
+cohibitive
+cohibitor
+coho
+cohoba
+cohobate
+cohobation
+cohobator
+cohol
+cohort
+cohortation
+cohortative
+cohosh
+cohune
+cohusband
+coidentity
+coif
+coifed
+coiffure
+coign
+coigue
+coil
+coiled
+coiler
+coiling
+coilsmith
+coimmense
+coimplicant
+coimplicate
+coimplore
+coin
+coinable
+coinage
+coincide
+coincidence
+coincidency
+coincident
+coincidental
+coincidentally
+coincidently
+coincider
+coinclination
+coincline
+coinclude
+coincorporate
+coindicant
+coindicate
+coindication
+coindwelling
+coiner
+coinfeftment
+coinfer
+coinfinite
+coinfinity
+coinhabit
+coinhabitant
+coinhabitor
+coinhere
+coinherence
+coinherent
+coinheritance
+coinheritor
+coining
+coinitial
+coinmaker
+coinmaking
+coinmate
+coinspire
+coinstantaneity
+coinstantaneous
+coinstantaneously
+coinstantaneousness
+coinsurance
+coinsure
+cointense
+cointension
+cointensity
+cointer
+cointerest
+cointersecting
+cointise
+Cointreau
+coinventor
+coinvolve
+coiny
+coir
+coislander
+coistrel
+coistril
+coital
+coition
+coiture
+coitus
+Coix
+cojudge
+cojuror
+cojusticiar
+coke
+cokelike
+cokeman
+coker
+cokernut
+cokery
+coking
+coky
+col
+Cola
+cola
+colaborer
+Colada
+colalgia
+Colan
+colander
+colane
+colarin
+colate
+colation
+colatitude
+colatorium
+colature
+colauxe
+colback
+colberter
+colbertine
+Colbertism
+colcannon
+Colchian
+Colchicaceae
+colchicine
+Colchicum
+Colchis
+colchyte
+Colcine
+colcothar
+cold
+colder
+coldfinch
+coldhearted
+coldheartedly
+coldheartedness
+coldish
+coldly
+coldness
+coldproof
+coldslaw
+Cole
+cole
+coleader
+colecannon
+colectomy
+Coleen
+colegatee
+colegislator
+colemanite
+colemouse
+Coleochaetaceae
+coleochaetaceous
+Coleochaete
+Coleophora
+Coleophoridae
+coleopter
+Coleoptera
+coleopteral
+coleopteran
+coleopterist
+coleopteroid
+coleopterological
+coleopterology
+coleopteron
+coleopterous
+coleoptile
+coleoptilum
+coleorhiza
+Coleosporiaceae
+Coleosporium
+coleplant
+coleseed
+coleslaw
+colessee
+colessor
+coletit
+coleur
+Coleus
+colewort
+coli
+Colias
+colibacillosis
+colibacterin
+colibri
+colic
+colical
+colichemarde
+colicky
+colicolitis
+colicroot
+colicweed
+colicwort
+colicystitis
+colicystopyelitis
+coliform
+Coliidae
+Coliiformes
+colilysin
+Colima
+colima
+Colin
+colin
+colinear
+colinephritis
+coling
+Colinus
+coliplication
+colipuncture
+colipyelitis
+colipyuria
+colisepsis
+Coliseum
+coliseum
+colitic
+colitis
+colitoxemia
+coliuria
+Colius
+colk
+coll
+Colla
+collaborate
+collaboration
+collaborationism
+collaborationist
+collaborative
+collaboratively
+collaborator
+collage
+collagen
+collagenic
+collagenous
+collapse
+collapsibility
+collapsible
+collar
+collarband
+collarbird
+collarbone
+collard
+collare
+collared
+collaret
+collarino
+collarless
+collarman
+collatable
+collate
+collatee
+collateral
+collaterality
+collaterally
+collateralness
+collation
+collationer
+collatitious
+collative
+collator
+collatress
+collaud
+collaudation
+colleague
+colleagueship
+collect
+collectability
+collectable
+collectanea
+collectarium
+collected
+collectedly
+collectedness
+collectibility
+collectible
+collection
+collectional
+collectioner
+collective
+collectively
+collectiveness
+collectivism
+collectivist
+collectivistic
+collectivistically
+collectivity
+collectivization
+collectivize
+collector
+collectorate
+collectorship
+collectress
+colleen
+collegatary
+college
+colleger
+collegial
+collegialism
+collegiality
+collegian
+collegianer
+Collegiant
+collegiate
+collegiately
+collegiateness
+collegiation
+collegium
+Collembola
+collembolan
+collembole
+collembolic
+collembolous
+collenchyma
+collenchymatic
+collenchymatous
+collenchyme
+collencytal
+collencyte
+Colleri
+Colleries
+Collery
+collery
+collet
+colleter
+colleterial
+colleterium
+Colletes
+Colletia
+colletic
+Colletidae
+colletin
+Colletotrichum
+colletside
+colley
+collibert
+colliculate
+colliculus
+collide
+collidine
+collie
+collied
+collier
+colliery
+collieshangie
+colliform
+colligate
+colligation
+colligative
+colligible
+collimate
+collimation
+collimator
+Collin
+collin
+collinal
+colline
+collinear
+collinearity
+collinearly
+collineate
+collineation
+colling
+collingly
+collingual
+Collins
+collins
+Collinsia
+collinsite
+Collinsonia
+colliquate
+colliquation
+colliquative
+colliquativeness
+collision
+collisional
+collisive
+colloblast
+collobrierite
+collocal
+Collocalia
+collocate
+collocation
+collocationable
+collocative
+collocatory
+collochemistry
+collochromate
+collock
+collocution
+collocutor
+collocutory
+collodiochloride
+collodion
+collodionization
+collodionize
+collodiotype
+collodium
+collogue
+colloid
+colloidal
+colloidality
+colloidize
+colloidochemical
+Collomia
+collop
+colloped
+collophanite
+collophore
+colloque
+colloquia
+colloquial
+colloquialism
+colloquialist
+colloquiality
+colloquialize
+colloquially
+colloquialness
+colloquist
+colloquium
+colloquize
+colloquy
+collothun
+collotype
+collotypic
+collotypy
+colloxylin
+colluctation
+collude
+colluder
+collum
+collumelliaceous
+collusion
+collusive
+collusively
+collusiveness
+collutorium
+collutory
+colluvial
+colluvies
+colly
+collyba
+Collybia
+Collyridian
+collyrite
+collyrium
+collywest
+collyweston
+collywobbles
+colmar
+colobin
+colobium
+coloboma
+Colobus
+Colocasia
+colocentesis
+Colocephali
+colocephalous
+coloclysis
+colocola
+colocolic
+colocynth
+colocynthin
+colodyspepsia
+coloenteritis
+cologarithm
+Cologne
+cololite
+Colombian
+colombier
+colombin
+Colombina
+colometric
+colometrically
+colometry
+colon
+colonalgia
+colonate
+colonel
+colonelcy
+colonelship
+colongitude
+colonial
+colonialism
+colonialist
+colonialize
+colonially
+colonialness
+colonic
+colonist
+colonitis
+colonizability
+colonizable
+colonization
+colonizationist
+colonize
+colonizer
+colonnade
+colonnaded
+colonnette
+colonopathy
+colonopexy
+colonoscope
+colonoscopy
+colony
+colopexia
+colopexotomy
+colopexy
+colophane
+colophany
+colophene
+colophenic
+colophon
+colophonate
+Colophonian
+colophonic
+colophonist
+colophonite
+colophonium
+colophony
+coloplication
+coloproctitis
+coloptosis
+colopuncture
+coloquintid
+coloquintida
+color
+colorability
+colorable
+colorableness
+colorably
+Coloradan
+Colorado
+colorado
+coloradoite
+colorant
+colorate
+coloration
+colorational
+colorationally
+colorative
+coloratura
+colorature
+colorcast
+colorectitis
+colorectostomy
+colored
+colorer
+colorfast
+colorful
+colorfully
+colorfulness
+colorific
+colorifics
+colorimeter
+colorimetric
+colorimetrical
+colorimetrically
+colorimetrics
+colorimetrist
+colorimetry
+colorin
+coloring
+colorist
+coloristic
+colorization
+colorize
+colorless
+colorlessly
+colorlessness
+colormaker
+colormaking
+colorman
+colorrhaphy
+colors
+colortype
+Colorum
+colory
+coloss
+colossal
+colossality
+colossally
+colossean
+Colosseum
+colossi
+Colossian
+Colossochelys
+colossus
+Colossuswise
+colostomy
+colostral
+colostration
+colostric
+colostrous
+colostrum
+colotomy
+colotyphoid
+colove
+colp
+colpenchyma
+colpeo
+colpeurynter
+colpeurysis
+colpindach
+colpitis
+colpocele
+colpocystocele
+colpohyperplasia
+colpohysterotomy
+colpoperineoplasty
+colpoperineorrhaphy
+colpoplastic
+colpoplasty
+colpoptosis
+colporrhagia
+colporrhaphy
+colporrhea
+colporrhexis
+colport
+colportage
+colporter
+colporteur
+colposcope
+colposcopy
+colpotomy
+colpus
+Colt
+colt
+colter
+colthood
+coltish
+coltishly
+coltishness
+coltpixie
+coltpixy
+coltsfoot
+coltskin
+Coluber
+colubrid
+Colubridae
+colubriform
+Colubriformes
+Colubriformia
+Colubrina
+Colubrinae
+colubrine
+colubroid
+colugo
+Columba
+columbaceous
+Columbae
+Columban
+Columbanian
+columbarium
+columbary
+columbate
+columbeion
+Columbella
+Columbia
+columbiad
+Columbian
+columbic
+Columbid
+Columbidae
+columbier
+columbiferous
+Columbiformes
+columbin
+Columbine
+columbine
+columbite
+columbium
+columbo
+columboid
+columbotantalate
+columbotitanate
+columella
+columellar
+columellate
+Columellia
+Columelliaceae
+columelliform
+column
+columnal
+columnar
+columnarian
+columnarity
+columnated
+columned
+columner
+columniation
+columniferous
+columniform
+columning
+columnist
+columnization
+columnwise
+colunar
+colure
+Colutea
+Colville
+coly
+Colymbidae
+colymbiform
+colymbion
+Colymbriformes
+Colymbus
+colyone
+colyonic
+colytic
+colyum
+colyumist
+colza
+coma
+comacine
+comagistracy
+comagmatic
+comaker
+comal
+comamie
+Coman
+Comanche
+Comanchean
+Comandra
+comanic
+comart
+Comarum
+comate
+comatose
+comatosely
+comatoseness
+comatosity
+comatous
+comatula
+comatulid
+comb
+combaron
+combat
+combatable
+combatant
+combater
+combative
+combatively
+combativeness
+combativity
+combed
+comber
+combfish
+combflower
+combinable
+combinableness
+combinant
+combinantive
+combinate
+combination
+combinational
+combinative
+combinator
+combinatorial
+combinatory
+combine
+combined
+combinedly
+combinedness
+combinement
+combiner
+combing
+combining
+comble
+combless
+comblessness
+combmaker
+combmaking
+comboloio
+comboy
+Combretaceae
+combretaceous
+Combretum
+combure
+comburendo
+comburent
+comburgess
+comburimeter
+comburimetry
+comburivorous
+combust
+combustibility
+combustible
+combustibleness
+combustibly
+combustion
+combustive
+combustor
+combwise
+combwright
+comby
+come
+comeback
+Comecrudo
+comedial
+comedian
+comediant
+comedic
+comedical
+comedienne
+comedietta
+comedist
+comedo
+comedown
+comedy
+comelily
+comeliness
+comeling
+comely
+comendite
+comenic
+comephorous
+comer
+comes
+comestible
+comet
+cometarium
+cometary
+comether
+cometic
+cometical
+cometlike
+cometographer
+cometographical
+cometography
+cometoid
+cometology
+cometwise
+comeuppance
+comfit
+comfiture
+comfort
+comfortable
+comfortableness
+comfortably
+comforter
+comfortful
+comforting
+comfortingly
+comfortless
+comfortlessly
+comfortlessness
+comfortress
+comfortroot
+comfrey
+comfy
+Comiakin
+comic
+comical
+comicality
+comically
+comicalness
+comicocratic
+comicocynical
+comicodidactic
+comicography
+comicoprosaic
+comicotragedy
+comicotragic
+comicotragical
+comicry
+Comid
+comiferous
+Cominform
+coming
+comingle
+comino
+Comintern
+comism
+comital
+comitant
+comitatensian
+comitative
+comitatus
+comitia
+comitial
+Comitium
+comitragedy
+comity
+comma
+command
+commandable
+commandant
+commandedness
+commandeer
+commander
+commandership
+commandery
+commanding
+commandingly
+commandingness
+commandless
+commandment
+commando
+commandoman
+commandress
+commassation
+commassee
+commatic
+commation
+commatism
+commeasurable
+commeasure
+commeddle
+Commelina
+Commelinaceae
+commelinaceous
+commemorable
+commemorate
+commemoration
+commemorational
+commemorative
+commemoratively
+commemorativeness
+commemorator
+commemoratory
+commemorize
+commence
+commenceable
+commencement
+commencer
+commend
+commendable
+commendableness
+commendably
+commendador
+commendam
+commendatary
+commendation
+commendator
+commendatory
+commender
+commendingly
+commendment
+commensal
+commensalism
+commensalist
+commensalistic
+commensality
+commensally
+commensurability
+commensurable
+commensurableness
+commensurably
+commensurate
+commensurately
+commensurateness
+commensuration
+comment
+commentarial
+commentarialism
+commentary
+commentate
+commentation
+commentator
+commentatorial
+commentatorially
+commentatorship
+commenter
+commerce
+commerceless
+commercer
+commerciable
+commercial
+commercialism
+commercialist
+commercialistic
+commerciality
+commercialization
+commercialize
+commercially
+commercium
+commerge
+commie
+comminate
+commination
+comminative
+comminator
+comminatory
+commingle
+comminglement
+commingler
+comminister
+comminuate
+comminute
+comminution
+comminutor
+Commiphora
+commiserable
+commiserate
+commiseratingly
+commiseration
+commiserative
+commiseratively
+commiserator
+commissar
+commissarial
+commissariat
+commissary
+commissaryship
+commission
+commissionaire
+commissional
+commissionate
+commissioner
+commissionership
+commissionship
+commissive
+commissively
+commissural
+commissure
+commissurotomy
+commit
+commitment
+committable
+committal
+committee
+committeeism
+committeeman
+committeeship
+committeewoman
+committent
+committer
+committible
+committor
+commix
+commixt
+commixtion
+commixture
+commodatary
+commodate
+commodation
+commodatum
+commode
+commodious
+commodiously
+commodiousness
+commoditable
+commodity
+commodore
+common
+commonable
+commonage
+commonality
+commonalty
+commoner
+commonership
+commoney
+commonish
+commonition
+commonize
+commonly
+commonness
+commonplace
+commonplaceism
+commonplacely
+commonplaceness
+commonplacer
+commons
+commonsensible
+commonsensibly
+commonsensical
+commonsensically
+commonty
+commonweal
+commonwealth
+commonwealthism
+commorancy
+commorant
+commorient
+commorth
+commot
+commotion
+commotional
+commotive
+commove
+communa
+communal
+communalism
+communalist
+communalistic
+communality
+communalization
+communalize
+communalizer
+communally
+communard
+commune
+communer
+communicability
+communicable
+communicableness
+communicably
+communicant
+communicate
+communicatee
+communicating
+communication
+communicative
+communicatively
+communicativeness
+communicator
+communicatory
+communion
+communionist
+communique
+communism
+communist
+communistery
+communistic
+communistically
+communital
+communitarian
+communitary
+communitive
+communitorium
+community
+communization
+communize
+commutability
+commutable
+commutableness
+commutant
+commutate
+commutation
+commutative
+commutatively
+commutator
+commute
+commuter
+commuting
+commutual
+commutuality
+Comnenian
+comoid
+comolecule
+comortgagee
+comose
+comourn
+comourner
+comournful
+comous
+Comox
+compact
+compacted
+compactedly
+compactedness
+compacter
+compactible
+compaction
+compactly
+compactness
+compactor
+compacture
+compages
+compaginate
+compagination
+companator
+companion
+companionability
+companionable
+companionableness
+companionably
+companionage
+companionate
+companionize
+companionless
+companionship
+companionway
+company
+comparability
+comparable
+comparableness
+comparably
+comparascope
+comparate
+comparatival
+comparative
+comparatively
+comparativeness
+comparativist
+comparator
+compare
+comparer
+comparison
+comparition
+comparograph
+compart
+compartition
+compartment
+compartmental
+compartmentalization
+compartmentalize
+compartmentally
+compartmentize
+compass
+compassable
+compasser
+compasses
+compassing
+compassion
+compassionable
+compassionate
+compassionately
+compassionateness
+compassionless
+compassive
+compassivity
+compassless
+compaternity
+compatibility
+compatible
+compatibleness
+compatibly
+compatriot
+compatriotic
+compatriotism
+compear
+compearance
+compearant
+compeer
+compel
+compellable
+compellably
+compellation
+compellative
+compellent
+compeller
+compelling
+compellingly
+compend
+compendency
+compendent
+compendia
+compendiary
+compendiate
+compendious
+compendiously
+compendiousness
+compendium
+compenetrate
+compenetration
+compensable
+compensate
+compensating
+compensatingly
+compensation
+compensational
+compensative
+compensativeness
+compensator
+compensatory
+compense
+compenser
+compesce
+compete
+competence
+competency
+competent
+competently
+competentness
+competition
+competitioner
+competitive
+competitively
+competitiveness
+competitor
+competitorship
+competitory
+competitress
+competitrix
+compilation
+compilator
+compilatory
+compile
+compilement
+compiler
+compital
+Compitalia
+compitum
+complacence
+complacency
+complacent
+complacential
+complacentially
+complacently
+complain
+complainable
+complainant
+complainer
+complainingly
+complainingness
+complaint
+complaintive
+complaintiveness
+complaisance
+complaisant
+complaisantly
+complaisantness
+complanar
+complanate
+complanation
+complect
+complected
+complement
+complemental
+complementally
+complementalness
+complementariness
+complementarism
+complementary
+complementation
+complementative
+complementer
+complementoid
+complete
+completedness
+completely
+completement
+completeness
+completer
+completion
+completive
+completively
+completory
+complex
+complexedness
+complexification
+complexify
+complexion
+complexionably
+complexional
+complexionally
+complexioned
+complexionist
+complexionless
+complexity
+complexively
+complexly
+complexness
+complexus
+compliable
+compliableness
+compliably
+compliance
+compliancy
+compliant
+compliantly
+complicacy
+complicant
+complicate
+complicated
+complicatedly
+complicatedness
+complication
+complicative
+complice
+complicitous
+complicity
+complier
+compliment
+complimentable
+complimental
+complimentally
+complimentalness
+complimentarily
+complimentariness
+complimentary
+complimentation
+complimentative
+complimenter
+complimentingly
+complin
+complot
+complotter
+Complutensian
+compluvium
+comply
+compo
+compoer
+compole
+compone
+componed
+componency
+componendo
+component
+componental
+componented
+compony
+comport
+comportment
+compos
+compose
+composed
+composedly
+composedness
+composer
+composita
+Compositae
+composite
+compositely
+compositeness
+composition
+compositional
+compositionally
+compositive
+compositively
+compositor
+compositorial
+compositous
+composograph
+compossibility
+compossible
+compost
+composture
+composure
+compotation
+compotationship
+compotator
+compotatory
+compote
+compotor
+compound
+compoundable
+compoundedness
+compounder
+compounding
+compoundness
+comprachico
+comprador
+comprecation
+compreg
+compregnate
+comprehend
+comprehender
+comprehendible
+comprehendingly
+comprehense
+comprehensibility
+comprehensible
+comprehensibleness
+comprehensibly
+comprehension
+comprehensive
+comprehensively
+comprehensiveness
+comprehensor
+compresbyter
+compresbyterial
+compresence
+compresent
+compress
+compressed
+compressedly
+compressibility
+compressible
+compressibleness
+compressingly
+compression
+compressional
+compressive
+compressively
+compressometer
+compressor
+compressure
+comprest
+compriest
+comprisable
+comprisal
+comprise
+comprised
+compromise
+compromiser
+compromising
+compromisingly
+compromissary
+compromission
+compromissorial
+compromit
+compromitment
+comprovincial
+Compsilura
+Compsoa
+Compsognathus
+Compsothlypidae
+compter
+Comptometer
+Comptonia
+comptroller
+comptrollership
+compulsative
+compulsatively
+compulsatorily
+compulsatory
+compulsed
+compulsion
+compulsitor
+compulsive
+compulsively
+compulsiveness
+compulsorily
+compulsoriness
+compulsory
+compunction
+compunctionary
+compunctionless
+compunctious
+compunctiously
+compunctive
+compurgation
+compurgator
+compurgatorial
+compurgatory
+compursion
+computability
+computable
+computably
+computation
+computational
+computative
+computativeness
+compute
+computer
+computist
+computus
+comrade
+comradely
+comradery
+comradeship
+Comsomol
+comstockery
+Comtian
+Comtism
+Comtist
+comurmurer
+Comus
+con
+conacaste
+conacre
+conal
+conalbumin
+conamed
+Conant
+conarial
+conarium
+conation
+conational
+conationalistic
+conative
+conatus
+conaxial
+concamerate
+concamerated
+concameration
+concanavalin
+concaptive
+concassation
+concatenary
+concatenate
+concatenation
+concatenator
+concausal
+concause
+concavation
+concave
+concavely
+concaveness
+concaver
+concavity
+conceal
+concealable
+concealed
+concealedly
+concealedness
+concealer
+concealment
+concede
+conceded
+concededly
+conceder
+conceit
+conceited
+conceitedly
+conceitedness
+conceitless
+conceity
+conceivability
+conceivable
+conceivableness
+conceivably
+conceive
+conceiver
+concelebrate
+concelebration
+concent
+concenter
+concentive
+concentralization
+concentrate
+concentrated
+concentration
+concentrative
+concentrativeness
+concentrator
+concentric
+concentrically
+concentricity
+concentual
+concentus
+concept
+conceptacle
+conceptacular
+conceptaculum
+conception
+conceptional
+conceptionist
+conceptism
+conceptive
+conceptiveness
+conceptual
+conceptualism
+conceptualist
+conceptualistic
+conceptuality
+conceptualization
+conceptualize
+conceptually
+conceptus
+concern
+concerned
+concernedly
+concernedness
+concerning
+concerningly
+concerningness
+concernment
+concert
+concerted
+concertedly
+concertgoer
+concertina
+concertinist
+concertist
+concertize
+concertizer
+concertmaster
+concertmeister
+concertment
+concerto
+concertstuck
+concessible
+concession
+concessionaire
+concessional
+concessionary
+concessioner
+concessionist
+concessive
+concessively
+concessiveness
+concessor
+concettism
+concettist
+conch
+concha
+conchal
+conchate
+conche
+conched
+concher
+Conchifera
+conchiferous
+conchiform
+conchinine
+conchiolin
+conchitic
+conchitis
+Conchobor
+conchoid
+conchoidal
+conchoidally
+conchological
+conchologically
+conchologist
+conchologize
+conchology
+conchometer
+conchometry
+Conchostraca
+conchotome
+Conchubar
+Conchucu
+conchuela
+conchy
+conchyliated
+conchyliferous
+conchylium
+concierge
+concile
+conciliable
+conciliabule
+conciliabulum
+conciliar
+conciliate
+conciliating
+conciliatingly
+conciliation
+conciliationist
+conciliative
+conciliator
+conciliatorily
+conciliatoriness
+conciliatory
+concilium
+concinnity
+concinnous
+concionator
+concipiency
+concipient
+concise
+concisely
+conciseness
+concision
+conclamant
+conclamation
+conclave
+conclavist
+concludable
+conclude
+concluder
+concluding
+concludingly
+conclusion
+conclusional
+conclusionally
+conclusive
+conclusively
+conclusiveness
+conclusory
+concoagulate
+concoagulation
+concoct
+concocter
+concoction
+concoctive
+concoctor
+concolor
+concolorous
+concomitance
+concomitancy
+concomitant
+concomitantly
+conconscious
+Concord
+concord
+concordal
+concordance
+concordancer
+concordant
+concordantial
+concordantly
+concordat
+concordatory
+concorder
+concordial
+concordist
+concordity
+concorporate
+Concorrezanes
+concourse
+concreate
+concremation
+concrement
+concresce
+concrescence
+concrescible
+concrescive
+concrete
+concretely
+concreteness
+concreter
+concretion
+concretional
+concretionary
+concretism
+concretive
+concretively
+concretize
+concretor
+concubinage
+concubinal
+concubinarian
+concubinary
+concubinate
+concubine
+concubinehood
+concubitancy
+concubitant
+concubitous
+concubitus
+concupiscence
+concupiscent
+concupiscible
+concupiscibleness
+concupy
+concur
+concurrence
+concurrency
+concurrent
+concurrently
+concurrentness
+concurring
+concurringly
+concursion
+concurso
+concursus
+concuss
+concussant
+concussion
+concussional
+concussive
+concutient
+concyclic
+concyclically
+cond
+Condalia
+condemn
+condemnable
+condemnably
+condemnate
+condemnation
+condemnatory
+condemned
+condemner
+condemning
+condemningly
+condensability
+condensable
+condensance
+condensary
+condensate
+condensation
+condensational
+condensative
+condensator
+condense
+condensed
+condensedly
+condensedness
+condenser
+condensery
+condensity
+condescend
+condescendence
+condescendent
+condescender
+condescending
+condescendingly
+condescendingness
+condescension
+condescensive
+condescensively
+condescensiveness
+condiction
+condictious
+condiddle
+condiddlement
+condign
+condigness
+condignity
+condignly
+condiment
+condimental
+condimentary
+condisciple
+condistillation
+condite
+condition
+conditional
+conditionalism
+conditionalist
+conditionality
+conditionalize
+conditionally
+conditionate
+conditioned
+conditioner
+condivision
+condolatory
+condole
+condolement
+condolence
+condolent
+condoler
+condoling
+condolingly
+condominate
+condominium
+condonable
+condonance
+condonation
+condonative
+condone
+condonement
+condoner
+condor
+conduce
+conducer
+conducing
+conducingly
+conducive
+conduciveness
+conduct
+conductance
+conductibility
+conductible
+conductility
+conductimeter
+conductio
+conduction
+conductional
+conductitious
+conductive
+conductively
+conductivity
+conductometer
+conductometric
+conductor
+conductorial
+conductorless
+conductorship
+conductory
+conductress
+conductus
+conduit
+conduplicate
+conduplicated
+conduplication
+condurangin
+condurango
+condylar
+condylarth
+Condylarthra
+condylarthrosis
+condylarthrous
+condyle
+condylectomy
+condylion
+condyloid
+condyloma
+condylomatous
+condylome
+condylopod
+Condylopoda
+condylopodous
+condylos
+condylotomy
+Condylura
+condylure
+cone
+coned
+coneen
+coneflower
+conehead
+coneighboring
+coneine
+conelet
+conemaker
+conemaking
+Conemaugh
+conenose
+conepate
+coner
+cones
+conessine
+Conestoga
+confab
+confabular
+confabulate
+confabulation
+confabulator
+confabulatory
+confact
+confarreate
+confarreation
+confated
+confect
+confection
+confectionary
+confectioner
+confectionery
+Confed
+confederacy
+confederal
+confederalist
+confederate
+confederater
+confederatio
+confederation
+confederationist
+confederatism
+confederative
+confederatize
+confederator
+confelicity
+conferee
+conference
+conferential
+conferment
+conferrable
+conferral
+conferrer
+conferruminate
+conferted
+Conferva
+Confervaceae
+confervaceous
+conferval
+Confervales
+confervoid
+Confervoideae
+confervous
+confess
+confessable
+confessant
+confessarius
+confessary
+confessedly
+confesser
+confessing
+confessingly
+confession
+confessional
+confessionalian
+confessionalism
+confessionalist
+confessionary
+confessionist
+confessor
+confessorship
+confessory
+confidant
+confide
+confidence
+confidency
+confident
+confidential
+confidentiality
+confidentially
+confidentialness
+confidentiary
+confidently
+confidentness
+confider
+confiding
+confidingly
+confidingness
+configural
+configurate
+configuration
+configurational
+configurationally
+configurationism
+configurationist
+configurative
+configure
+confinable
+confine
+confineable
+confined
+confinedly
+confinedness
+confineless
+confinement
+confiner
+confining
+confinity
+confirm
+confirmable
+confirmand
+confirmation
+confirmative
+confirmatively
+confirmatorily
+confirmatory
+confirmed
+confirmedly
+confirmedness
+confirmee
+confirmer
+confirming
+confirmingly
+confirmity
+confirmment
+confirmor
+confiscable
+confiscatable
+confiscate
+confiscation
+confiscator
+confiscatory
+confitent
+confiteor
+confiture
+confix
+conflagrant
+conflagrate
+conflagration
+conflagrative
+conflagrator
+conflagratory
+conflate
+conflated
+conflation
+conflict
+conflicting
+conflictingly
+confliction
+conflictive
+conflictory
+conflow
+confluence
+confluent
+confluently
+conflux
+confluxibility
+confluxible
+confluxibleness
+confocal
+conform
+conformability
+conformable
+conformableness
+conformably
+conformal
+conformance
+conformant
+conformate
+conformation
+conformator
+conformer
+conformist
+conformity
+confound
+confoundable
+confounded
+confoundedly
+confoundedness
+confounder
+confounding
+confoundingly
+confrater
+confraternal
+confraternity
+confraternization
+confrere
+confriar
+confrication
+confront
+confrontal
+confrontation
+confronte
+confronter
+confrontment
+Confucian
+Confucianism
+Confucianist
+confusability
+confusable
+confusably
+confuse
+confused
+confusedly
+confusedness
+confusingly
+confusion
+confusional
+confusticate
+confustication
+confutable
+confutation
+confutative
+confutator
+confute
+confuter
+conga
+congeable
+congeal
+congealability
+congealable
+congealableness
+congealedness
+congealer
+congealment
+congee
+congelation
+congelative
+congelifraction
+congeliturbate
+congeliturbation
+congener
+congeneracy
+congeneric
+congenerical
+congenerous
+congenerousness
+congenetic
+congenial
+congeniality
+congenialize
+congenially
+congenialness
+congenital
+congenitally
+congenitalness
+conger
+congeree
+congest
+congested
+congestible
+congestion
+congestive
+congiary
+congius
+conglobate
+conglobately
+conglobation
+conglobe
+conglobulate
+conglomerate
+conglomeratic
+conglomeration
+conglutin
+conglutinant
+conglutinate
+conglutination
+conglutinative
+Congo
+Congoese
+Congolese
+Congoleum
+congou
+congratulable
+congratulant
+congratulate
+congratulation
+congratulational
+congratulator
+congratulatory
+congredient
+congreet
+congregable
+congreganist
+congregant
+congregate
+congregation
+congregational
+congregationalism
+Congregationalist
+congregationalize
+congregationally
+Congregationer
+congregationist
+congregative
+congregativeness
+congregator
+Congreso
+congress
+congresser
+congressional
+congressionalist
+congressionally
+congressionist
+congressist
+congressive
+congressman
+Congresso
+congresswoman
+Congreve
+Congridae
+congroid
+congruence
+congruency
+congruent
+congruential
+congruently
+congruism
+congruist
+congruistic
+congruity
+congruous
+congruously
+congruousness
+conhydrine
+Coniacian
+conic
+conical
+conicality
+conically
+conicalness
+coniceine
+conichalcite
+conicine
+conicity
+conicle
+conicoid
+conicopoly
+conics
+Conidae
+conidia
+conidial
+conidian
+conidiiferous
+conidioid
+conidiophore
+conidiophorous
+conidiospore
+conidium
+conifer
+Coniferae
+coniferin
+coniferophyte
+coniferous
+conification
+coniform
+Conilurus
+conima
+conimene
+conin
+conine
+Coniogramme
+Coniophora
+Coniopterygidae
+Conioselinum
+coniosis
+Coniothyrium
+coniroster
+conirostral
+Conirostres
+Conium
+conject
+conjective
+conjecturable
+conjecturably
+conjectural
+conjecturalist
+conjecturality
+conjecturally
+conjecture
+conjecturer
+conjobble
+conjoin
+conjoined
+conjoinedly
+conjoiner
+conjoint
+conjointly
+conjointment
+conjointness
+conjubilant
+conjugable
+conjugacy
+conjugal
+Conjugales
+conjugality
+conjugally
+conjugant
+conjugata
+Conjugatae
+conjugate
+conjugated
+conjugately
+conjugateness
+conjugation
+conjugational
+conjugationally
+conjugative
+conjugator
+conjugial
+conjugium
+conjunct
+conjunction
+conjunctional
+conjunctionally
+conjunctiva
+conjunctival
+conjunctive
+conjunctively
+conjunctiveness
+conjunctivitis
+conjunctly
+conjunctur
+conjunctural
+conjuncture
+conjuration
+conjurator
+conjure
+conjurement
+conjurer
+conjurership
+conjuror
+conjury
+conk
+conkanee
+conker
+conkers
+conky
+conn
+connach
+Connaraceae
+connaraceous
+connarite
+Connarus
+connascency
+connascent
+connatal
+connate
+connately
+connateness
+connation
+connatural
+connaturality
+connaturalize
+connaturally
+connaturalness
+connature
+connaught
+connect
+connectable
+connectant
+connected
+connectedly
+connectedness
+connectible
+connection
+connectional
+connectival
+connective
+connectively
+connectivity
+connector
+connellite
+conner
+connex
+connexion
+connexionalism
+connexity
+connexive
+connexivum
+connexus
+Connie
+conning
+conniption
+connivance
+connivancy
+connivant
+connivantly
+connive
+connivent
+conniver
+Connochaetes
+connoissance
+connoisseur
+connoisseurship
+connotation
+connotative
+connotatively
+connote
+connotive
+connotively
+connubial
+connubiality
+connubially
+connubiate
+connubium
+connumerate
+connumeration
+Conocarpus
+Conocephalum
+Conocephalus
+conoclinium
+conocuneus
+conodont
+conoid
+conoidal
+conoidally
+conoidic
+conoidical
+conoidically
+Conolophus
+conominee
+cononintelligent
+Conopholis
+conopid
+Conopidae
+conoplain
+conopodium
+Conopophaga
+Conopophagidae
+Conor
+Conorhinus
+conormal
+conoscope
+conourish
+Conoy
+conphaseolin
+conplane
+conquedle
+conquer
+conquerable
+conquerableness
+conqueress
+conquering
+conqueringly
+conquerment
+conqueror
+conquest
+conquian
+conquinamine
+conquinine
+conquistador
+Conrad
+conrector
+conrectorship
+conred
+Conringia
+consanguine
+consanguineal
+consanguinean
+consanguineous
+consanguineously
+consanguinity
+conscience
+conscienceless
+consciencelessly
+consciencelessness
+consciencewise
+conscient
+conscientious
+conscientiously
+conscientiousness
+conscionable
+conscionableness
+conscionably
+conscious
+consciously
+consciousness
+conscribe
+conscript
+conscription
+conscriptional
+conscriptionist
+conscriptive
+consecrate
+consecrated
+consecratedness
+consecrater
+consecration
+consecrative
+consecrator
+consecratory
+consectary
+consecute
+consecution
+consecutive
+consecutively
+consecutiveness
+consecutives
+consenescence
+consenescency
+consension
+consensual
+consensually
+consensus
+consent
+consentable
+consentaneity
+consentaneous
+consentaneously
+consentaneousness
+consentant
+consenter
+consentful
+consentfully
+consentience
+consentient
+consentiently
+consenting
+consentingly
+consentingness
+consentive
+consentively
+consentment
+consequence
+consequency
+consequent
+consequential
+consequentiality
+consequentially
+consequentialness
+consequently
+consertal
+conservable
+conservacy
+conservancy
+conservant
+conservate
+conservation
+conservational
+conservationist
+conservatism
+conservatist
+conservative
+conservatively
+conservativeness
+conservatize
+conservatoire
+conservator
+conservatorio
+conservatorium
+conservatorship
+conservatory
+conservatrix
+conserve
+conserver
+consider
+considerability
+considerable
+considerableness
+considerably
+considerance
+considerate
+considerately
+considerateness
+consideration
+considerative
+consideratively
+considerativeness
+considerator
+considered
+considerer
+considering
+consideringly
+consign
+consignable
+consignatary
+consignation
+consignatory
+consignee
+consigneeship
+consigner
+consignificant
+consignificate
+consignification
+consignificative
+consignificator
+consignify
+consignment
+consignor
+consiliary
+consilience
+consilient
+consimilar
+consimilarity
+consimilate
+consist
+consistence
+consistency
+consistent
+consistently
+consistorial
+consistorian
+consistory
+consociate
+consociation
+consociational
+consociationism
+consociative
+consocies
+consol
+consolable
+consolableness
+consolably
+Consolamentum
+consolation
+Consolato
+consolatorily
+consolatoriness
+consolatory
+consolatrix
+console
+consolement
+consoler
+consolidant
+consolidate
+consolidated
+consolidation
+consolidationist
+consolidative
+consolidator
+consoling
+consolingly
+consolute
+consomme
+consonance
+consonancy
+consonant
+consonantal
+consonantic
+consonantism
+consonantize
+consonantly
+consonantness
+consonate
+consonous
+consort
+consortable
+consorter
+consortial
+consortion
+consortism
+consortium
+consortship
+consound
+conspecies
+conspecific
+conspectus
+consperse
+conspersion
+conspicuity
+conspicuous
+conspicuously
+conspicuousness
+conspiracy
+conspirant
+conspiration
+conspirative
+conspirator
+conspiratorial
+conspiratorially
+conspiratory
+conspiratress
+conspire
+conspirer
+conspiring
+conspiringly
+conspue
+constable
+constablery
+constableship
+constabless
+constablewick
+constabular
+constabulary
+Constance
+constancy
+constant
+constantan
+Constantine
+Constantinian
+Constantinopolitan
+constantly
+constantness
+constat
+constatation
+constate
+constatory
+constellate
+constellation
+constellatory
+consternate
+consternation
+constipate
+constipation
+constituency
+constituent
+constituently
+constitute
+constituter
+constitution
+constitutional
+constitutionalism
+constitutionalist
+constitutionality
+constitutionalization
+constitutionalize
+constitutionally
+constitutionary
+constitutioner
+constitutionist
+constitutive
+constitutively
+constitutiveness
+constitutor
+constrain
+constrainable
+constrained
+constrainedly
+constrainedness
+constrainer
+constraining
+constrainingly
+constrainment
+constraint
+constrict
+constricted
+constriction
+constrictive
+constrictor
+constringe
+constringency
+constringent
+construability
+construable
+construct
+constructer
+constructible
+construction
+constructional
+constructionally
+constructionism
+constructionist
+constructive
+constructively
+constructiveness
+constructivism
+constructivist
+constructor
+constructorship
+constructure
+construe
+construer
+constuprate
+constupration
+consubsist
+consubsistency
+consubstantial
+consubstantialism
+consubstantialist
+consubstantiality
+consubstantially
+consubstantiate
+consubstantiation
+consubstantiationist
+consubstantive
+consuete
+consuetitude
+consuetude
+consuetudinal
+consuetudinary
+consul
+consulage
+consular
+consularity
+consulary
+consulate
+consulship
+consult
+consultable
+consultant
+consultary
+consultation
+consultative
+consultatory
+consultee
+consulter
+consulting
+consultive
+consultively
+consultor
+consultory
+consumable
+consume
+consumedly
+consumeless
+consumer
+consuming
+consumingly
+consumingness
+consummate
+consummately
+consummation
+consummative
+consummatively
+consummativeness
+consummator
+consummatory
+consumpt
+consumpted
+consumptible
+consumption
+consumptional
+consumptive
+consumptively
+consumptiveness
+consumptivity
+consute
+contabescence
+contabescent
+contact
+contactor
+contactual
+contactually
+contagion
+contagioned
+contagionist
+contagiosity
+contagious
+contagiously
+contagiousness
+contagium
+contain
+containable
+container
+containment
+contakion
+contaminable
+contaminant
+contaminate
+contamination
+contaminative
+contaminator
+contaminous
+contangential
+contango
+conte
+contect
+contection
+contemn
+contemner
+contemnible
+contemnibly
+contemning
+contemningly
+contemnor
+contemper
+contemperate
+contemperature
+contemplable
+contemplamen
+contemplant
+contemplate
+contemplatingly
+contemplation
+contemplatist
+contemplative
+contemplatively
+contemplativeness
+contemplator
+contemplature
+contemporanean
+contemporaneity
+contemporaneous
+contemporaneously
+contemporaneousness
+contemporarily
+contemporariness
+contemporary
+contemporize
+contempt
+contemptful
+contemptibility
+contemptible
+contemptibleness
+contemptibly
+contemptuous
+contemptuously
+contemptuousness
+contendent
+contender
+contending
+contendingly
+contendress
+content
+contentable
+contented
+contentedly
+contentedness
+contentful
+contention
+contentional
+contentious
+contentiously
+contentiousness
+contentless
+contently
+contentment
+contentness
+contents
+conter
+conterminal
+conterminant
+contermine
+conterminous
+conterminously
+conterminousness
+contest
+contestable
+contestableness
+contestably
+contestant
+contestation
+contestee
+contester
+contestingly
+contestless
+context
+contextive
+contextual
+contextually
+contextural
+contexture
+contextured
+conticent
+contignation
+contiguity
+contiguous
+contiguously
+contiguousness
+continence
+continency
+continent
+continental
+Continentaler
+continentalism
+continentalist
+continentality
+Continentalize
+continentally
+continently
+contingence
+contingency
+contingent
+contingential
+contingentialness
+contingently
+contingentness
+continuable
+continual
+continuality
+continually
+continualness
+continuance
+continuancy
+continuando
+continuant
+continuantly
+continuate
+continuately
+continuateness
+continuation
+continuative
+continuatively
+continuativeness
+continuator
+continue
+continued
+continuedly
+continuedness
+continuer
+continuingly
+continuist
+continuity
+continuous
+continuously
+continuousness
+continuum
+contise
+contline
+conto
+contorniate
+contorsive
+contort
+Contortae
+contorted
+contortedly
+contortedness
+contortion
+contortional
+contortionate
+contortioned
+contortionist
+contortionistic
+contortive
+contour
+contourne
+contra
+contraband
+contrabandage
+contrabandery
+contrabandism
+contrabandist
+contrabandista
+contrabass
+contrabassist
+contrabasso
+contracapitalist
+contraception
+contraceptionist
+contraceptive
+contracivil
+contraclockwise
+contract
+contractable
+contractant
+contractation
+contracted
+contractedly
+contractedness
+contractee
+contracter
+contractibility
+contractible
+contractibleness
+contractibly
+contractile
+contractility
+contraction
+contractional
+contractionist
+contractive
+contractively
+contractiveness
+contractor
+contractual
+contractually
+contracture
+contractured
+contradebt
+contradict
+contradictable
+contradictedness
+contradicter
+contradiction
+contradictional
+contradictious
+contradictiously
+contradictiousness
+contradictive
+contradictively
+contradictiveness
+contradictor
+contradictorily
+contradictoriness
+contradictory
+contradiscriminate
+contradistinct
+contradistinction
+contradistinctive
+contradistinctively
+contradistinctly
+contradistinguish
+contradivide
+contrafacture
+contrafagotto
+contrafissura
+contraflexure
+contraflow
+contrafocal
+contragredience
+contragredient
+contrahent
+contrail
+contraindicate
+contraindication
+contraindicative
+contralateral
+contralto
+contramarque
+contranatural
+contrantiscion
+contraoctave
+contraparallelogram
+contraplex
+contrapolarization
+contrapone
+contraponend
+Contraposaune
+contrapose
+contraposit
+contraposita
+contraposition
+contrapositive
+contraprogressist
+contraprop
+contraproposal
+contraption
+contraptious
+contrapuntal
+contrapuntalist
+contrapuntally
+contrapuntist
+contrapunto
+contrarational
+contraregular
+contraregularity
+contraremonstrance
+contraremonstrant
+contrarevolutionary
+contrariant
+contrariantly
+contrariety
+contrarily
+contrariness
+contrarious
+contrariously
+contrariousness
+contrariwise
+contrarotation
+contrary
+contrascriptural
+contrast
+contrastable
+contrastably
+contrastedly
+contrastimulant
+contrastimulation
+contrastimulus
+contrastingly
+contrastive
+contrastively
+contrastment
+contrasty
+contrasuggestible
+contratabular
+contrate
+contratempo
+contratenor
+contravalence
+contravallation
+contravariant
+contravene
+contravener
+contravention
+contraversion
+contravindicate
+contravindication
+contrawise
+contrayerva
+contrectation
+contreface
+contrefort
+contretemps
+contributable
+contribute
+contribution
+contributional
+contributive
+contributively
+contributiveness
+contributor
+contributorial
+contributorship
+contributory
+contrite
+contritely
+contriteness
+contrition
+contriturate
+contrivance
+contrivancy
+contrive
+contrivement
+contriver
+control
+controllability
+controllable
+controllableness
+controllably
+controller
+controllership
+controlless
+controllingly
+controlment
+controversial
+controversialism
+controversialist
+controversialize
+controversially
+controversion
+controversional
+controversionalism
+controversionalist
+controversy
+controvert
+controverter
+controvertible
+controvertibly
+controvertist
+contubernal
+contubernial
+contubernium
+contumacious
+contumaciously
+contumaciousness
+contumacity
+contumacy
+contumelious
+contumeliously
+contumeliousness
+contumely
+contund
+conturbation
+contuse
+contusion
+contusioned
+contusive
+conubium
+Conularia
+conumerary
+conumerous
+conundrum
+conundrumize
+conurbation
+conure
+Conuropsis
+Conurus
+conus
+conusable
+conusance
+conusant
+conusee
+conusor
+conutrition
+conuzee
+conuzor
+convalesce
+convalescence
+convalescency
+convalescent
+convalescently
+convallamarin
+Convallaria
+Convallariaceae
+convallariaceous
+convallarin
+convect
+convection
+convectional
+convective
+convectively
+convector
+convenable
+convenably
+convene
+convenee
+convener
+convenership
+convenience
+conveniency
+convenient
+conveniently
+convenientness
+convent
+conventical
+conventically
+conventicle
+conventicler
+conventicular
+convention
+conventional
+conventionalism
+conventionalist
+conventionality
+conventionalization
+conventionalize
+conventionally
+conventionary
+conventioner
+conventionism
+conventionist
+conventionize
+conventual
+conventually
+converge
+convergement
+convergence
+convergency
+convergent
+convergescence
+converging
+conversable
+conversableness
+conversably
+conversance
+conversancy
+conversant
+conversantly
+conversation
+conversationable
+conversational
+conversationalist
+conversationally
+conversationism
+conversationist
+conversationize
+conversative
+converse
+conversely
+converser
+conversibility
+conversible
+conversion
+conversional
+conversionism
+conversionist
+conversive
+convert
+converted
+convertend
+converter
+convertibility
+convertible
+convertibleness
+convertibly
+converting
+convertingness
+convertise
+convertism
+convertite
+convertive
+convertor
+conveth
+convex
+convexed
+convexedly
+convexedness
+convexity
+convexly
+convexness
+convey
+conveyable
+conveyal
+conveyance
+conveyancer
+conveyancing
+conveyer
+convict
+convictable
+conviction
+convictional
+convictism
+convictive
+convictively
+convictiveness
+convictment
+convictor
+convince
+convinced
+convincedly
+convincedness
+convincement
+convincer
+convincibility
+convincible
+convincing
+convincingly
+convincingness
+convival
+convive
+convivial
+convivialist
+conviviality
+convivialize
+convivially
+convocant
+convocate
+convocation
+convocational
+convocationally
+convocationist
+convocative
+convocator
+convoke
+convoker
+Convoluta
+convolute
+convoluted
+convolutely
+convolution
+convolutional
+convolutionary
+convolutive
+convolve
+convolvement
+Convolvulaceae
+convolvulaceous
+convolvulad
+convolvuli
+convolvulic
+convolvulin
+convolvulinic
+convolvulinolic
+Convolvulus
+convoy
+convulsant
+convulse
+convulsedly
+convulsibility
+convulsible
+convulsion
+convulsional
+convulsionary
+convulsionism
+convulsionist
+convulsive
+convulsively
+convulsiveness
+cony
+conycatcher
+conyrine
+coo
+cooba
+coodle
+cooee
+cooer
+coof
+Coohee
+cooing
+cooingly
+cooja
+cook
+cookable
+cookbook
+cookdom
+cookee
+cookeite
+cooker
+cookery
+cookhouse
+cooking
+cookish
+cookishly
+cookless
+cookmaid
+cookout
+cookroom
+cookshack
+cookshop
+cookstove
+cooky
+cool
+coolant
+coolen
+cooler
+coolerman
+coolheaded
+coolheadedly
+coolheadedness
+coolhouse
+coolibah
+coolie
+cooling
+coolingly
+coolingness
+coolish
+coolly
+coolness
+coolth
+coolung
+coolweed
+coolwort
+cooly
+coom
+coomb
+coomy
+coon
+cooncan
+coonily
+cooniness
+coonroot
+coonskin
+coontail
+coontie
+coony
+coop
+cooper
+cooperage
+Cooperia
+coopering
+coopery
+cooree
+Coorg
+coorie
+cooruptibly
+Coos
+cooser
+coost
+Coosuc
+coot
+cooter
+cootfoot
+coothay
+cootie
+cop
+copa
+copable
+copacetic
+copaene
+copaiba
+copaibic
+Copaifera
+Copaiva
+copaivic
+copaiye
+copal
+copalche
+copalcocote
+copaliferous
+copalite
+copalm
+coparallel
+coparcenary
+coparcener
+coparceny
+coparent
+copart
+copartaker
+copartner
+copartnership
+copartnery
+coparty
+copassionate
+copastor
+copastorate
+copatain
+copatentee
+copatriot
+copatron
+copatroness
+cope
+Copehan
+copei
+Copelata
+Copelatae
+copelate
+copellidine
+copeman
+copemate
+copen
+copending
+copenetrate
+Copeognatha
+copepod
+Copepoda
+copepodan
+copepodous
+coper
+coperception
+coperiodic
+Copernican
+Copernicanism
+Copernicia
+coperta
+copesman
+copesmate
+copestone
+copetitioner
+cophasal
+Cophetua
+cophosis
+copiability
+copiable
+copiapite
+copied
+copier
+copilot
+coping
+copiopia
+copiopsia
+copiosity
+copious
+copiously
+copiousness
+copis
+copist
+copita
+coplaintiff
+coplanar
+coplanarity
+copleased
+coplotter
+coploughing
+coplowing
+copolar
+copolymer
+copolymerization
+copolymerize
+coppaelite
+copped
+copper
+copperas
+copperbottom
+copperer
+copperhead
+copperheadism
+coppering
+copperish
+copperization
+copperize
+copperleaf
+coppernose
+coppernosed
+copperplate
+copperproof
+coppersidesman
+copperskin
+coppersmith
+coppersmithing
+copperware
+copperwing
+copperworks
+coppery
+copperytailed
+coppet
+coppice
+coppiced
+coppicing
+coppin
+copping
+copple
+copplecrown
+coppled
+coppy
+copr
+copra
+coprecipitate
+coprecipitation
+copremia
+copremic
+copresbyter
+copresence
+copresent
+Coprides
+Coprinae
+coprincipal
+coprincipate
+Coprinus
+coprisoner
+coprodaeum
+coproduce
+coproducer
+coprojector
+coprolagnia
+coprolagnist
+coprolalia
+coprolaliac
+coprolite
+coprolith
+coprolitic
+coprology
+copromisor
+copromoter
+coprophagan
+coprophagia
+coprophagist
+coprophagous
+coprophagy
+coprophilia
+coprophiliac
+coprophilic
+coprophilism
+coprophilous
+coprophyte
+coproprietor
+coproprietorship
+coprose
+Coprosma
+coprostasis
+coprosterol
+coprozoic
+copse
+copsewood
+copsewooded
+copsing
+copsy
+Copt
+copter
+Coptic
+Coptis
+copula
+copulable
+copular
+copularium
+copulate
+copulation
+copulative
+copulatively
+copulatory
+copunctal
+copurchaser
+copus
+copy
+copybook
+copycat
+copygraph
+copygraphed
+copyhold
+copyholder
+copyholding
+copyism
+copyist
+copyman
+copyreader
+copyright
+copyrightable
+copyrighter
+copywise
+coque
+coquecigrue
+coquelicot
+coqueluche
+coquet
+coquetoon
+coquetry
+coquette
+coquettish
+coquettishly
+coquettishness
+coquicken
+coquilla
+Coquille
+coquille
+coquimbite
+coquina
+coquita
+Coquitlam
+coquito
+cor
+Cora
+cora
+Corabeca
+Corabecan
+corach
+Coraciae
+coracial
+Coracias
+Coracii
+Coraciidae
+coraciiform
+Coraciiformes
+coracine
+coracle
+coracler
+coracoacromial
+coracobrachial
+coracobrachialis
+coracoclavicular
+coracocostal
+coracohumeral
+coracohyoid
+coracoid
+coracoidal
+coracomandibular
+coracomorph
+Coracomorphae
+coracomorphic
+coracopectoral
+coracoprocoracoid
+coracoradialis
+coracoscapular
+coracovertebral
+coradical
+coradicate
+corah
+coraise
+coral
+coralberry
+coralbush
+coraled
+coralflower
+coralist
+corallet
+Corallian
+corallic
+Corallidae
+corallidomous
+coralliferous
+coralliform
+Coralligena
+coralligenous
+coralligerous
+corallike
+Corallina
+Corallinaceae
+corallinaceous
+coralline
+corallite
+Corallium
+coralloid
+coralloidal
+Corallorhiza
+corallum
+Corallus
+coralroot
+coralwort
+coram
+Corambis
+coranto
+corban
+corbeau
+corbeil
+corbel
+corbeling
+corbicula
+corbiculate
+corbiculum
+corbie
+corbiestep
+corbovinum
+corbula
+corcass
+Corchorus
+corcir
+corcopali
+Corcyraean
+cord
+cordage
+Cordaitaceae
+cordaitaceous
+cordaitalean
+Cordaitales
+cordaitean
+Cordaites
+cordant
+cordate
+cordately
+cordax
+Cordeau
+corded
+cordel
+Cordelia
+Cordelier
+cordeliere
+cordelle
+corder
+Cordery
+cordewane
+Cordia
+cordial
+cordiality
+cordialize
+cordially
+cordialness
+cordiceps
+cordicole
+cordierite
+cordies
+cordiform
+cordigeri
+cordillera
+cordilleran
+cordiner
+cording
+cordite
+corditis
+cordleaf
+cordmaker
+cordoba
+cordon
+cordonnet
+Cordovan
+Cordula
+corduroy
+corduroyed
+cordwain
+cordwainer
+cordwainery
+cordwood
+cordy
+Cordyceps
+cordyl
+Cordylanthus
+Cordyline
+core
+corebel
+coreceiver
+coreciprocal
+corectome
+corectomy
+corector
+cored
+coredeem
+coredeemer
+coredemptress
+coreductase
+Coree
+coreflexed
+coregence
+coregency
+coregent
+coregnancy
+coregnant
+coregonid
+Coregonidae
+coregonine
+coregonoid
+Coregonus
+coreid
+Coreidae
+coreign
+coreigner
+corejoice
+coreless
+coreligionist
+corella
+corelysis
+Corema
+coremaker
+coremaking
+coremium
+coremorphosis
+corenounce
+coreometer
+Coreopsis
+coreplastic
+coreplasty
+corer
+coresidence
+coresidual
+coresign
+coresonant
+coresort
+corespect
+corespondency
+corespondent
+coretomy
+coreveler
+coreveller
+corevolve
+Corey
+corf
+Corfiote
+Corflambo
+corge
+corgi
+coriaceous
+corial
+coriamyrtin
+coriander
+coriandrol
+Coriandrum
+Coriaria
+Coriariaceae
+coriariaceous
+coriin
+Corimelaena
+Corimelaenidae
+Corin
+corindon
+Corineus
+coring
+Corinna
+corinne
+Corinth
+Corinthian
+Corinthianesque
+Corinthianism
+Corinthianize
+Coriolanus
+coriparian
+corium
+Corixa
+Corixidae
+cork
+corkage
+corkboard
+corke
+corked
+corker
+corkiness
+corking
+corkish
+corkite
+corkmaker
+corkmaking
+corkscrew
+corkscrewy
+corkwing
+corkwood
+corky
+corm
+Cormac
+cormel
+cormidium
+cormoid
+Cormophyta
+cormophyte
+cormophytic
+cormorant
+cormous
+cormus
+corn
+Cornaceae
+cornaceous
+cornage
+cornbell
+cornberry
+cornbin
+cornbinks
+cornbird
+cornbole
+cornbottle
+cornbrash
+corncake
+corncob
+corncracker
+corncrib
+corncrusher
+corndodger
+cornea
+corneagen
+corneal
+cornein
+corneitis
+cornel
+Cornelia
+cornelian
+Cornelius
+cornemuse
+corneocalcareous
+corneosclerotic
+corneosiliceous
+corneous
+corner
+cornerbind
+cornered
+cornerer
+cornerpiece
+cornerstone
+cornerways
+cornerwise
+cornet
+cornetcy
+cornettino
+cornettist
+corneule
+corneum
+cornfield
+cornfloor
+cornflower
+corngrower
+cornhouse
+cornhusk
+cornhusker
+cornhusking
+cornic
+cornice
+cornicle
+corniculate
+corniculer
+corniculum
+Corniferous
+cornific
+cornification
+cornified
+corniform
+cornigerous
+cornin
+corning
+corniplume
+Cornish
+Cornishman
+cornland
+cornless
+cornloft
+cornmaster
+cornmonger
+cornopean
+cornpipe
+cornrick
+cornroot
+cornstalk
+cornstarch
+cornstook
+cornu
+cornual
+cornuate
+cornuated
+cornubianite
+cornucopia
+Cornucopiae
+cornucopian
+cornucopiate
+cornule
+cornulite
+Cornulites
+cornupete
+Cornus
+cornute
+cornuted
+cornutine
+cornuto
+cornwallis
+cornwallite
+corny
+coroa
+Coroado
+corocleisis
+corodiary
+corodiastasis
+corodiastole
+corody
+corol
+corolla
+corollaceous
+corollarial
+corollarially
+corollary
+corollate
+corollated
+corolliferous
+corolliform
+corollike
+corolline
+corollitic
+corometer
+corona
+coronach
+coronad
+coronadite
+coronae
+coronagraph
+coronagraphic
+coronal
+coronale
+coronaled
+coronally
+coronamen
+coronary
+coronate
+coronated
+coronation
+coronatorial
+coroner
+coronership
+coronet
+coroneted
+coronetted
+coronetty
+coroniform
+Coronilla
+coronillin
+coronion
+coronitis
+coronium
+coronize
+coronobasilar
+coronofacial
+coronofrontal
+coronoid
+Coronopus
+coronule
+coroparelcysis
+coroplast
+coroplasta
+coroplastic
+Coropo
+coroscopy
+corotomy
+corozo
+corp
+corpora
+corporal
+corporalism
+corporality
+corporally
+corporalship
+corporas
+corporate
+corporately
+corporateness
+corporation
+corporational
+corporationer
+corporationism
+corporative
+corporator
+corporature
+corporeal
+corporealist
+corporeality
+corporealization
+corporealize
+corporeally
+corporealness
+corporeals
+corporeity
+corporeous
+corporification
+corporify
+corporosity
+corposant
+corps
+corpsbruder
+corpse
+corpsman
+corpulence
+corpulency
+corpulent
+corpulently
+corpulentness
+corpus
+corpuscle
+corpuscular
+corpuscularian
+corpuscularity
+corpusculated
+corpuscule
+corpusculous
+corpusculum
+corrade
+corradial
+corradiate
+corradiation
+corral
+corrasion
+corrasive
+Correa
+correal
+correality
+correct
+correctable
+correctant
+corrected
+correctedness
+correctible
+correcting
+correctingly
+correction
+correctional
+correctionalist
+correctioner
+correctitude
+corrective
+correctively
+correctiveness
+correctly
+correctness
+corrector
+correctorship
+correctress
+correctrice
+corregidor
+correlatable
+correlate
+correlated
+correlation
+correlational
+correlative
+correlatively
+correlativeness
+correlativism
+correlativity
+correligionist
+corrente
+correption
+corresol
+correspond
+correspondence
+correspondency
+correspondent
+correspondential
+correspondentially
+correspondently
+correspondentship
+corresponder
+corresponding
+correspondingly
+corresponsion
+corresponsive
+corresponsively
+corridor
+corridored
+corrie
+Corriedale
+corrige
+corrigenda
+corrigendum
+corrigent
+corrigibility
+corrigible
+corrigibleness
+corrigibly
+Corrigiola
+Corrigiolaceae
+corrival
+corrivality
+corrivalry
+corrivalship
+corrivate
+corrivation
+corrobboree
+corroborant
+corroborate
+corroboration
+corroborative
+corroboratively
+corroborator
+corroboratorily
+corroboratory
+corroboree
+corrode
+corrodent
+Corrodentia
+corroder
+corrodiary
+corrodibility
+corrodible
+corrodier
+corroding
+corrosibility
+corrosible
+corrosibleness
+corrosion
+corrosional
+corrosive
+corrosively
+corrosiveness
+corrosivity
+corrugate
+corrugated
+corrugation
+corrugator
+corrupt
+corrupted
+corruptedly
+corruptedness
+corrupter
+corruptful
+corruptibility
+corruptible
+corruptibleness
+corrupting
+corruptingly
+corruption
+corruptionist
+corruptive
+corruptively
+corruptly
+corruptness
+corruptor
+corruptress
+corsac
+corsage
+corsaint
+corsair
+corse
+corselet
+corsepresent
+corsesque
+corset
+corseting
+corsetless
+corsetry
+Corsican
+corsie
+corsite
+corta
+Cortaderia
+cortege
+Cortes
+cortex
+cortez
+cortical
+cortically
+corticate
+corticated
+corticating
+cortication
+cortices
+corticiferous
+corticiform
+corticifugal
+corticifugally
+corticipetal
+corticipetally
+Corticium
+corticoafferent
+corticoefferent
+corticoline
+corticopeduncular
+corticose
+corticospinal
+corticosterone
+corticostriate
+corticous
+cortin
+cortina
+cortinarious
+Cortinarius
+cortinate
+cortisone
+cortlandtite
+Corton
+coruco
+coruler
+Coruminacan
+corundophilite
+corundum
+corupay
+coruscant
+coruscate
+coruscation
+corver
+corvette
+corvetto
+Corvidae
+corviform
+corvillosum
+corvina
+Corvinae
+corvine
+corvoid
+Corvus
+Cory
+Corybant
+Corybantian
+corybantiasm
+Corybantic
+corybantic
+Corybantine
+corybantish
+corybulbin
+corybulbine
+corycavamine
+corycavidin
+corycavidine
+corycavine
+Corycia
+Corycian
+corydalin
+corydaline
+Corydalis
+corydine
+Corydon
+coryl
+Corylaceae
+corylaceous
+corylin
+Corylopsis
+Corylus
+corymb
+corymbed
+corymbiate
+corymbiated
+corymbiferous
+corymbiform
+corymbose
+corymbous
+corynebacterial
+Corynebacterium
+Coryneum
+corynine
+Corynocarpaceae
+corynocarpaceous
+Corynocarpus
+Corypha
+Coryphaena
+coryphaenid
+Coryphaenidae
+coryphaenoid
+Coryphaenoididae
+coryphaeus
+coryphee
+coryphene
+Coryphodon
+coryphodont
+coryphylly
+corytuberine
+coryza
+cos
+cosalite
+cosaque
+cosavior
+coscet
+Coscinodiscaceae
+Coscinodiscus
+coscinomancy
+coscoroba
+coseasonal
+coseat
+cosec
+cosecant
+cosech
+cosectarian
+cosectional
+cosegment
+coseism
+coseismal
+coseismic
+cosenator
+cosentiency
+cosentient
+coservant
+cosession
+coset
+cosettler
+cosh
+cosharer
+cosheath
+cosher
+cosherer
+coshering
+coshery
+cosignatory
+cosigner
+cosignitary
+cosily
+cosinage
+cosine
+cosiness
+cosingular
+cosinusoid
+Cosmati
+cosmecology
+cosmesis
+cosmetic
+cosmetical
+cosmetically
+cosmetician
+cosmetiste
+cosmetological
+cosmetologist
+cosmetology
+cosmic
+cosmical
+cosmicality
+cosmically
+cosmism
+cosmist
+cosmocracy
+cosmocrat
+cosmocratic
+cosmogenesis
+cosmogenetic
+cosmogenic
+cosmogeny
+cosmogonal
+cosmogoner
+cosmogonic
+cosmogonical
+cosmogonist
+cosmogonize
+cosmogony
+cosmographer
+cosmographic
+cosmographical
+cosmographically
+cosmographist
+cosmography
+cosmolabe
+cosmolatry
+cosmologic
+cosmological
+cosmologically
+cosmologist
+cosmology
+cosmometry
+cosmopathic
+cosmoplastic
+cosmopoietic
+cosmopolicy
+cosmopolis
+cosmopolitan
+cosmopolitanism
+cosmopolitanization
+cosmopolitanize
+cosmopolitanly
+cosmopolite
+cosmopolitic
+cosmopolitical
+cosmopolitics
+cosmopolitism
+cosmorama
+cosmoramic
+cosmorganic
+cosmos
+cosmoscope
+cosmosophy
+cosmosphere
+cosmotellurian
+cosmotheism
+cosmotheist
+cosmotheistic
+cosmothetic
+cosmotron
+cosmozoan
+cosmozoic
+cosmozoism
+cosonant
+cosounding
+cosovereign
+cosovereignty
+cospecies
+cospecific
+cosphered
+cosplendor
+cosplendour
+coss
+Cossack
+Cossaean
+cossas
+cosse
+cosset
+cossette
+cossid
+Cossidae
+cossnent
+cossyrite
+cost
+costa
+Costaea
+costal
+costalgia
+costally
+costander
+Costanoan
+costar
+costard
+Costata
+costate
+costated
+costean
+costeaning
+costectomy
+costellate
+coster
+costerdom
+costermonger
+costicartilage
+costicartilaginous
+costicervical
+costiferous
+costiform
+costing
+costipulator
+costispinal
+costive
+costively
+costiveness
+costless
+costlessness
+costliness
+costly
+costmary
+costoabdominal
+costoapical
+costocentral
+costochondral
+costoclavicular
+costocolic
+costocoracoid
+costodiaphragmatic
+costogenic
+costoinferior
+costophrenic
+costopleural
+costopneumopexy
+costopulmonary
+costoscapular
+costosternal
+costosuperior
+costothoracic
+costotome
+costotomy
+costotrachelian
+costotransversal
+costotransverse
+costovertebral
+costoxiphoid
+costraight
+costrel
+costula
+costulation
+costume
+costumer
+costumery
+costumic
+costumier
+costumiere
+costuming
+costumist
+costusroot
+cosubject
+cosubordinate
+cosuffer
+cosufferer
+cosuggestion
+cosuitor
+cosurety
+cosustain
+coswearer
+cosy
+cosymmedian
+cot
+cotangent
+cotangential
+cotarius
+cotarnine
+cotch
+cote
+coteful
+coteline
+coteller
+cotemporane
+cotemporanean
+cotemporaneous
+cotemporaneously
+cotemporary
+cotenancy
+cotenant
+cotenure
+coterell
+coterie
+coterminous
+Cotesian
+coth
+cothamore
+cothe
+cotheorist
+cothish
+cothon
+cothurn
+cothurnal
+cothurnate
+cothurned
+cothurnian
+cothurnus
+cothy
+cotidal
+cotillage
+cotillion
+Cotinga
+cotingid
+Cotingidae
+cotingoid
+Cotinus
+cotise
+cotitular
+cotland
+cotman
+coto
+cotoin
+Cotonam
+Cotoneaster
+cotonier
+cotorment
+cotoro
+cotorture
+Cotoxo
+cotquean
+cotraitor
+cotransfuse
+cotranslator
+cotranspire
+cotransubstantiate
+cotrine
+cotripper
+cotrustee
+cotset
+cotsetla
+cotsetle
+cotta
+cottabus
+cottage
+cottaged
+cottager
+cottagers
+cottagey
+cotte
+cotted
+cotter
+cotterel
+cotterite
+cotterway
+cottid
+Cottidae
+cottier
+cottierism
+cottiform
+cottoid
+cotton
+cottonade
+cottonbush
+cottonee
+cottoneer
+cottoner
+Cottonian
+cottonization
+cottonize
+cottonless
+cottonmouth
+cottonocracy
+Cottonopolis
+cottonseed
+cottontail
+cottontop
+cottonweed
+cottonwood
+cottony
+Cottus
+cotty
+cotuit
+cotula
+cotunnite
+Coturnix
+cotutor
+cotwin
+cotwinned
+cotwist
+cotyla
+cotylar
+cotyledon
+cotyledonal
+cotyledonar
+cotyledonary
+cotyledonous
+cotyliform
+cotyligerous
+cotyliscus
+cotyloid
+Cotylophora
+cotylophorous
+cotylopubic
+cotylosacral
+cotylosaur
+Cotylosauria
+cotylosaurian
+cotype
+Cotys
+Cotyttia
+couac
+coucal
+couch
+couchancy
+couchant
+couched
+couchee
+coucher
+couching
+couchmaker
+couchmaking
+couchmate
+couchy
+coude
+coudee
+coue
+Coueism
+cougar
+cough
+cougher
+coughroot
+coughweed
+coughwort
+cougnar
+coul
+could
+couldron
+coulee
+coulisse
+coulomb
+coulometer
+coulterneb
+coulure
+couma
+coumalic
+coumalin
+coumara
+coumaran
+coumarate
+coumaric
+coumarilic
+coumarin
+coumarinic
+coumarone
+coumarou
+Coumarouna
+council
+councilist
+councilman
+councilmanic
+councilor
+councilorship
+councilwoman
+counderstand
+counite
+couniversal
+counsel
+counselable
+counselee
+counselful
+counselor
+counselorship
+count
+countable
+countableness
+countably
+countdom
+countenance
+countenancer
+counter
+counterabut
+counteraccusation
+counteracquittance
+counteract
+counteractant
+counteracter
+counteracting
+counteractingly
+counteraction
+counteractive
+counteractively
+counteractivity
+counteractor
+counteraddress
+counteradvance
+counteradvantage
+counteradvice
+counteradvise
+counteraffirm
+counteraffirmation
+counteragency
+counteragent
+counteragitate
+counteragitation
+counteralliance
+counterambush
+counterannouncement
+counteranswer
+counterappeal
+counterappellant
+counterapproach
+counterapse
+counterarch
+counterargue
+counterargument
+counterartillery
+counterassertion
+counterassociation
+counterassurance
+counterattack
+counterattestation
+counterattired
+counterattraction
+counterattractive
+counterattractively
+counteraverment
+counteravouch
+counteravouchment
+counterbalance
+counterbarrage
+counterbase
+counterbattery
+counterbeating
+counterbend
+counterbewitch
+counterbid
+counterblast
+counterblow
+counterbond
+counterborder
+counterbore
+counterboycott
+counterbrace
+counterbranch
+counterbrand
+counterbreastwork
+counterbuff
+counterbuilding
+countercampaign
+countercarte
+countercause
+counterchange
+counterchanged
+countercharge
+countercharm
+countercheck
+countercheer
+counterclaim
+counterclaimant
+counterclockwise
+countercolored
+countercommand
+countercompetition
+countercomplaint
+countercompony
+countercondemnation
+counterconquest
+counterconversion
+countercouchant
+countercoupe
+countercourant
+countercraft
+countercriticism
+countercross
+countercry
+countercurrent
+countercurrently
+countercurrentwise
+counterdance
+counterdash
+counterdecision
+counterdeclaration
+counterdecree
+counterdefender
+counterdemand
+counterdemonstration
+counterdeputation
+counterdesire
+counterdevelopment
+counterdifficulty
+counterdigged
+counterdike
+counterdiscipline
+counterdisengage
+counterdisengagement
+counterdistinction
+counterdistinguish
+counterdoctrine
+counterdogmatism
+counterdraft
+counterdrain
+counterdrive
+counterearth
+counterefficiency
+countereffort
+counterembattled
+counterembowed
+counterenamel
+counterend
+counterenergy
+counterengagement
+counterengine
+counterenthusiasm
+counterentry
+counterequivalent
+counterermine
+counterespionage
+counterestablishment
+counterevidence
+counterexaggeration
+counterexcitement
+counterexcommunication
+counterexercise
+counterexplanation
+counterexposition
+counterexpostulation
+counterextend
+counterextension
+counterfact
+counterfallacy
+counterfaller
+counterfeit
+counterfeiter
+counterfeitly
+counterfeitment
+counterfeitness
+counterferment
+counterfessed
+counterfire
+counterfix
+counterflange
+counterflashing
+counterflight
+counterflory
+counterflow
+counterflux
+counterfoil
+counterforce
+counterformula
+counterfort
+counterfugue
+countergabble
+countergabion
+countergambit
+countergarrison
+countergauge
+countergauger
+countergift
+countergirded
+counterglow
+counterguard
+counterhaft
+counterhammering
+counterhypothesis
+counteridea
+counterideal
+counterimagination
+counterimitate
+counterimitation
+counterimpulse
+counterindentation
+counterindented
+counterindicate
+counterindication
+counterinfluence
+counterinsult
+counterintelligence
+counterinterest
+counterinterpretation
+counterintrigue
+counterinvective
+counterirritant
+counterirritate
+counterirritation
+counterjudging
+counterjumper
+counterlath
+counterlathing
+counterlatration
+counterlaw
+counterleague
+counterlegislation
+counterlife
+counterlocking
+counterlode
+counterlove
+counterly
+countermachination
+counterman
+countermand
+countermandable
+countermaneuver
+countermanifesto
+countermarch
+countermark
+countermarriage
+countermeasure
+countermeet
+countermessage
+countermigration
+countermine
+countermission
+countermotion
+countermount
+countermove
+countermovement
+countermure
+countermutiny
+counternaiant
+counternarrative
+counternatural
+counternecromancy
+counternoise
+counternotice
+counterobjection
+counterobligation
+counteroffensive
+counteroffer
+counteropening
+counteropponent
+counteropposite
+counterorator
+counterorder
+counterorganization
+counterpaled
+counterpaly
+counterpane
+counterpaned
+counterparadox
+counterparallel
+counterparole
+counterparry
+counterpart
+counterpassant
+counterpassion
+counterpenalty
+counterpendent
+counterpetition
+counterpicture
+counterpillar
+counterplan
+counterplay
+counterplayer
+counterplea
+counterplead
+counterpleading
+counterplease
+counterplot
+counterpoint
+counterpointe
+counterpointed
+counterpoise
+counterpoison
+counterpole
+counterponderate
+counterpose
+counterposition
+counterposting
+counterpotence
+counterpotency
+counterpotent
+counterpractice
+counterpray
+counterpreach
+counterpreparation
+counterpressure
+counterprick
+counterprinciple
+counterprocess
+counterproject
+counterpronunciamento
+counterproof
+counterpropaganda
+counterpropagandize
+counterprophet
+counterproposal
+counterproposition
+counterprotection
+counterprotest
+counterprove
+counterpull
+counterpunch
+counterpuncture
+counterpush
+counterquartered
+counterquarterly
+counterquery
+counterquestion
+counterquip
+counterradiation
+counterraid
+counterraising
+counterrampant
+counterrate
+counterreaction
+counterreason
+counterreckoning
+counterrecoil
+counterreconnaissance
+counterrefer
+counterreflected
+counterreform
+counterreformation
+counterreligion
+counterremonstrant
+counterreply
+counterreprisal
+counterresolution
+counterrestoration
+counterretreat
+counterrevolution
+counterrevolutionary
+counterrevolutionist
+counterrevolutionize
+counterriposte
+counterroll
+counterround
+counterruin
+countersale
+countersalient
+counterscale
+counterscalloped
+counterscarp
+counterscoff
+countersconce
+counterscrutiny
+countersea
+counterseal
+countersecure
+countersecurity
+counterselection
+countersense
+counterservice
+countershade
+countershaft
+countershafting
+countershear
+countershine
+countershout
+counterside
+countersiege
+countersign
+countersignal
+countersignature
+countersink
+countersleight
+counterslope
+countersmile
+countersnarl
+counterspying
+counterstain
+counterstamp
+counterstand
+counterstatant
+counterstatement
+counterstatute
+counterstep
+counterstimulate
+counterstimulation
+counterstimulus
+counterstock
+counterstratagem
+counterstream
+counterstrike
+counterstroke
+counterstruggle
+countersubject
+countersuggestion
+countersuit
+countersun
+countersunk
+countersurprise
+counterswing
+countersworn
+countersympathy
+countersynod
+countertack
+countertail
+countertally
+countertaste
+countertechnicality
+countertendency
+countertenor
+counterterm
+counterterror
+countertheme
+countertheory
+counterthought
+counterthreat
+counterthrust
+counterthwarting
+countertierce
+countertime
+countertouch
+countertraction
+countertrades
+countertransference
+countertranslation
+countertraverse
+countertreason
+countertree
+countertrench
+countertrespass
+countertrippant
+countertripping
+countertruth
+countertug
+counterturn
+counterturned
+countertype
+countervail
+countervair
+countervairy
+countervallation
+countervaunt
+countervene
+countervengeance
+countervenom
+countervibration
+counterview
+countervindication
+countervolition
+countervolley
+countervote
+counterwager
+counterwall
+counterwarmth
+counterwave
+counterweigh
+counterweight
+counterweighted
+counterwheel
+counterwill
+counterwilling
+counterwind
+counterwitness
+counterword
+counterwork
+counterworker
+counterwrite
+countess
+countfish
+counting
+countinghouse
+countless
+countor
+countrified
+countrifiedness
+country
+countryfolk
+countryman
+countrypeople
+countryseat
+countryside
+countryward
+countrywoman
+countship
+county
+coup
+coupage
+coupe
+couped
+coupee
+coupelet
+couper
+couple
+coupled
+couplement
+coupler
+coupleress
+couplet
+coupleteer
+coupling
+coupon
+couponed
+couponless
+coupstick
+coupure
+courage
+courageous
+courageously
+courageousness
+courager
+courant
+courante
+courap
+couratari
+courb
+courbache
+courbaril
+courbash
+courge
+courida
+courier
+couril
+courlan
+Cours
+course
+coursed
+courser
+coursing
+court
+courtbred
+courtcraft
+courteous
+courteously
+courteousness
+courtepy
+courter
+courtesan
+courtesanry
+courtesanship
+courtesy
+courtezanry
+courtezanship
+courthouse
+courtier
+courtierism
+courtierly
+courtiership
+courtin
+courtless
+courtlet
+courtlike
+courtliness
+courtling
+courtly
+courtman
+Courtney
+courtroom
+courtship
+courtyard
+courtzilite
+couscous
+couscousou
+couseranite
+cousin
+cousinage
+cousiness
+cousinhood
+cousinly
+cousinry
+cousinship
+cousiny
+coussinet
+coustumier
+coutel
+coutelle
+couter
+Coutet
+couth
+couthie
+couthily
+couthiness
+couthless
+coutil
+coutumier
+couvade
+couxia
+covado
+covalence
+covalent
+Covarecan
+Covarecas
+covariable
+covariance
+covariant
+covariation
+covassal
+cove
+coved
+covelline
+covellite
+covenant
+covenantal
+covenanted
+covenantee
+Covenanter
+covenanter
+covenanting
+covenantor
+covent
+coventrate
+coventrize
+Coventry
+cover
+coverage
+coveralls
+coverchief
+covercle
+covered
+coverer
+covering
+coverless
+coverlet
+coverlid
+coversed
+coverside
+coversine
+coverslut
+covert
+covertical
+covertly
+covertness
+coverture
+covet
+covetable
+coveter
+coveting
+covetingly
+covetiveness
+covetous
+covetously
+covetousness
+covey
+covibrate
+covibration
+covid
+Coviello
+covillager
+Covillea
+covin
+coving
+covinous
+covinously
+covisit
+covisitor
+covite
+covolume
+covotary
+cow
+cowal
+Cowan
+coward
+cowardice
+cowardliness
+cowardly
+cowardness
+cowardy
+cowbane
+cowbell
+cowberry
+cowbind
+cowbird
+cowboy
+cowcatcher
+cowdie
+coween
+cower
+cowfish
+cowgate
+cowgram
+cowhage
+cowheart
+cowhearted
+cowheel
+cowherb
+cowherd
+cowhide
+cowhiding
+cowhorn
+Cowichan
+cowish
+cowitch
+cowkeeper
+cowl
+cowle
+cowled
+cowleech
+cowleeching
+cowlick
+cowlicks
+cowlike
+cowling
+Cowlitz
+cowlstaff
+cowman
+cowpath
+cowpea
+cowpen
+Cowperian
+cowperitis
+cowpock
+cowpox
+cowpuncher
+cowquake
+cowrie
+cowroid
+cowshed
+cowskin
+cowslip
+cowslipped
+cowsucker
+cowtail
+cowthwort
+cowtongue
+cowweed
+cowwheat
+cowy
+cowyard
+cox
+coxa
+coxal
+coxalgia
+coxalgic
+coxankylometer
+coxarthritis
+coxarthrocace
+coxarthropathy
+coxbones
+coxcomb
+coxcombess
+coxcombhood
+coxcombic
+coxcombical
+coxcombicality
+coxcombically
+coxcombity
+coxcombry
+coxcomby
+coxcomical
+coxcomically
+coxite
+coxitis
+coxocerite
+coxoceritic
+coxodynia
+coxofemoral
+coxopodite
+coxswain
+coxy
+coy
+coyan
+coydog
+coyish
+coyishness
+coyly
+coyness
+coynye
+coyo
+coyol
+coyote
+Coyotero
+coyotillo
+coyoting
+coypu
+coyure
+coz
+coze
+cozen
+cozenage
+cozener
+cozening
+cozeningly
+cozier
+cozily
+coziness
+cozy
+crab
+crabbed
+crabbedly
+crabbedness
+crabber
+crabbery
+crabbing
+crabby
+crabcatcher
+crabeater
+craber
+crabhole
+crablet
+crablike
+crabman
+crabmill
+crabsidle
+crabstick
+crabweed
+crabwise
+crabwood
+Cracca
+Cracidae
+Cracinae
+crack
+crackable
+crackajack
+crackbrain
+crackbrained
+crackbrainedness
+crackdown
+cracked
+crackedness
+cracker
+crackerberry
+crackerjack
+crackers
+crackhemp
+crackiness
+cracking
+crackjaw
+crackle
+crackled
+crackless
+crackleware
+crackling
+crackly
+crackmans
+cracknel
+crackpot
+crackskull
+cracksman
+cracky
+cracovienne
+craddy
+cradge
+cradle
+cradleboard
+cradlechild
+cradlefellow
+cradleland
+cradlelike
+cradlemaker
+cradlemaking
+cradleman
+cradlemate
+cradler
+cradleside
+cradlesong
+cradletime
+cradling
+Cradock
+craft
+craftily
+craftiness
+craftless
+craftsman
+craftsmanship
+craftsmaster
+craftswoman
+craftwork
+craftworker
+crafty
+crag
+craggan
+cragged
+craggedness
+craggily
+cragginess
+craggy
+craglike
+cragsman
+cragwork
+craichy
+Craig
+craigmontite
+crain
+craisey
+craizey
+crajuru
+crake
+crakefeet
+crakow
+cram
+cramasie
+crambambulee
+crambambuli
+Crambe
+crambe
+cramberry
+crambid
+Crambidae
+Crambinae
+cramble
+crambly
+crambo
+Crambus
+crammer
+cramp
+cramped
+crampedness
+cramper
+crampet
+crampfish
+cramping
+crampingly
+crampon
+cramponnee
+crampy
+cran
+cranage
+cranberry
+crance
+crandall
+crandallite
+crane
+cranelike
+craneman
+craner
+cranesman
+craneway
+craney
+Crania
+crania
+craniacromial
+craniad
+cranial
+cranially
+cranian
+Craniata
+craniate
+cranic
+craniectomy
+craniocele
+craniocerebral
+cranioclasis
+cranioclasm
+cranioclast
+cranioclasty
+craniodidymus
+craniofacial
+craniognomic
+craniognomy
+craniognosy
+craniograph
+craniographer
+craniography
+craniological
+craniologically
+craniologist
+craniology
+craniomalacia
+craniomaxillary
+craniometer
+craniometric
+craniometrical
+craniometrically
+craniometrist
+craniometry
+craniopagus
+craniopathic
+craniopathy
+craniopharyngeal
+craniophore
+cranioplasty
+craniopuncture
+craniorhachischisis
+craniosacral
+cranioschisis
+cranioscopical
+cranioscopist
+cranioscopy
+craniospinal
+craniostenosis
+craniostosis
+Craniota
+craniotabes
+craniotome
+craniotomy
+craniotopography
+craniotympanic
+craniovertebral
+cranium
+crank
+crankbird
+crankcase
+cranked
+cranker
+crankery
+crankily
+crankiness
+crankle
+crankless
+crankly
+crankman
+crankous
+crankpin
+crankshaft
+crankum
+cranky
+crannage
+crannied
+crannock
+crannog
+crannoger
+cranny
+cranreuch
+crantara
+crants
+crap
+crapaud
+crapaudine
+crape
+crapefish
+crapehanger
+crapelike
+crappie
+crappin
+crapple
+crappo
+craps
+crapshooter
+crapulate
+crapulence
+crapulent
+crapulous
+crapulously
+crapulousness
+crapy
+craquelure
+crare
+crash
+crasher
+crasis
+craspedal
+craspedodromous
+craspedon
+Craspedota
+craspedotal
+craspedote
+crass
+crassamentum
+crassier
+crassilingual
+Crassina
+crassitude
+crassly
+crassness
+Crassula
+Crassulaceae
+crassulaceous
+Crataegus
+Crataeva
+cratch
+cratchens
+cratches
+crate
+crateful
+cratemaker
+cratemaking
+crateman
+crater
+crateral
+cratered
+Craterellus
+Craterid
+crateriform
+crateris
+craterkin
+craterless
+craterlet
+craterlike
+craterous
+craticular
+Cratinean
+cratometer
+cratometric
+cratometry
+craunch
+craunching
+craunchingly
+cravat
+crave
+craven
+Cravenette
+cravenette
+cravenhearted
+cravenly
+cravenness
+craver
+craving
+cravingly
+cravingness
+cravo
+craw
+crawberry
+crawdad
+crawfish
+crawfoot
+crawful
+crawl
+crawler
+crawlerize
+crawley
+crawleyroot
+crawling
+crawlingly
+crawlsome
+crawly
+crawm
+crawtae
+Crawthumper
+Crax
+crayer
+crayfish
+crayon
+crayonist
+crayonstone
+craze
+crazed
+crazedly
+crazedness
+crazily
+craziness
+crazingmill
+crazy
+crazycat
+crazyweed
+crea
+creagh
+creaght
+creak
+creaker
+creakily
+creakiness
+creakingly
+creaky
+cream
+creambush
+creamcake
+creamcup
+creamer
+creamery
+creameryman
+creamfruit
+creamily
+creaminess
+creamless
+creamlike
+creammaker
+creammaking
+creamometer
+creamsacs
+creamware
+creamy
+creance
+creancer
+creant
+crease
+creaseless
+creaser
+creashaks
+creasing
+creasy
+creat
+creatable
+create
+createdness
+creatic
+creatine
+creatinephosphoric
+creatinine
+creatininemia
+creatinuria
+creation
+creational
+creationary
+creationism
+creationist
+creationistic
+creative
+creatively
+creativeness
+creativity
+creatophagous
+creator
+creatorhood
+creatorrhea
+creatorship
+creatotoxism
+creatress
+creatrix
+creatural
+creature
+creaturehood
+creatureless
+creatureliness
+creatureling
+creaturely
+creatureship
+creaturize
+crebricostate
+crebrisulcate
+crebrity
+crebrous
+creche
+creddock
+credence
+credencive
+credenciveness
+credenda
+credensive
+credensiveness
+credent
+credential
+credently
+credenza
+credibility
+credible
+credibleness
+credibly
+credit
+creditability
+creditable
+creditableness
+creditably
+creditive
+creditless
+creditor
+creditorship
+creditress
+creditrix
+crednerite
+Credo
+credulity
+credulous
+credulously
+credulousness
+Cree
+cree
+creed
+creedal
+creedalism
+creedalist
+creeded
+creedist
+creedite
+creedless
+creedlessness
+creedmore
+creedsman
+Creek
+creek
+creeker
+creekfish
+creekside
+creekstuff
+creeky
+creel
+creeler
+creem
+creen
+creep
+creepage
+creeper
+creepered
+creeperless
+creephole
+creepie
+creepiness
+creeping
+creepingly
+creepmouse
+creepmousy
+creepy
+creese
+creesh
+creeshie
+creeshy
+creirgist
+cremaster
+cremasterial
+cremasteric
+cremate
+cremation
+cremationism
+cremationist
+cremator
+crematorial
+crematorium
+crematory
+crembalum
+cremnophobia
+cremocarp
+cremometer
+cremone
+cremor
+cremorne
+cremule
+crena
+crenate
+crenated
+crenately
+crenation
+crenature
+crenel
+crenelate
+crenelated
+crenelation
+crenele
+creneled
+crenelet
+crenellate
+crenellation
+crenic
+crenitic
+crenology
+crenotherapy
+Crenothrix
+crenula
+crenulate
+crenulated
+crenulation
+creodont
+Creodonta
+creole
+creoleize
+creolian
+Creolin
+creolism
+creolization
+creolize
+creophagia
+creophagism
+creophagist
+creophagous
+creophagy
+creosol
+creosote
+creosoter
+creosotic
+crepance
+crepe
+crepehanger
+Crepidula
+crepine
+crepiness
+Crepis
+crepitaculum
+crepitant
+crepitate
+crepitation
+crepitous
+crepitus
+crepon
+crept
+crepuscle
+crepuscular
+crepuscule
+crepusculine
+crepusculum
+crepy
+cresamine
+crescendo
+crescent
+crescentade
+crescentader
+Crescentia
+crescentic
+crescentiform
+crescentlike
+crescentoid
+crescentwise
+crescive
+crescograph
+crescographic
+cresegol
+cresol
+cresolin
+cresorcinol
+cresotate
+cresotic
+cresotinic
+cresoxide
+cresoxy
+cresphontes
+cress
+cressed
+cresselle
+cresset
+Cressida
+cresson
+cressweed
+cresswort
+cressy
+crest
+crested
+crestfallen
+crestfallenly
+crestfallenness
+cresting
+crestless
+crestline
+crestmoreite
+cresyl
+cresylate
+cresylene
+cresylic
+cresylite
+creta
+Cretaceous
+cretaceous
+cretaceously
+Cretacic
+Cretan
+Crete
+cretefaction
+Cretic
+cretic
+cretification
+cretify
+cretin
+cretinic
+cretinism
+cretinization
+cretinize
+cretinoid
+cretinous
+cretion
+cretionary
+Cretism
+cretonne
+crevalle
+crevasse
+crevice
+creviced
+crew
+crewel
+crewelist
+crewellery
+crewelwork
+crewer
+crewless
+crewman
+Crex
+crib
+cribbage
+cribber
+cribbing
+cribble
+cribellum
+cribo
+cribral
+cribrate
+cribrately
+cribration
+cribriform
+cribrose
+cribwork
+cric
+Cricetidae
+cricetine
+Cricetus
+crick
+cricket
+cricketer
+cricketing
+crickety
+crickey
+crickle
+cricoarytenoid
+cricoid
+cricopharyngeal
+cricothyreoid
+cricothyreotomy
+cricothyroid
+cricothyroidean
+cricotomy
+cricotracheotomy
+Cricotus
+cried
+crier
+criey
+crig
+crile
+crime
+Crimean
+crimeful
+crimeless
+crimelessness
+crimeproof
+criminal
+criminaldom
+criminalese
+criminalism
+criminalist
+criminalistic
+criminalistician
+criminalistics
+criminality
+criminally
+criminalness
+criminaloid
+criminate
+crimination
+criminative
+criminator
+criminatory
+crimine
+criminogenesis
+criminogenic
+criminologic
+criminological
+criminologist
+criminology
+criminosis
+criminous
+criminously
+criminousness
+crimogenic
+crimp
+crimpage
+crimper
+crimping
+crimple
+crimpness
+crimpy
+crimson
+crimsonly
+crimsonness
+crimsony
+crin
+crinal
+crinanite
+crinated
+crinatory
+crine
+crined
+crinet
+cringe
+cringeling
+cringer
+cringing
+cringingly
+cringingness
+cringle
+crinicultural
+criniculture
+criniferous
+Criniger
+crinigerous
+criniparous
+crinite
+crinitory
+crinivorous
+crink
+crinkle
+crinkleroot
+crinkly
+crinoid
+crinoidal
+Crinoidea
+crinoidean
+crinoline
+crinose
+crinosity
+crinula
+Crinum
+criobolium
+criocephalus
+Crioceras
+crioceratite
+crioceratitic
+Crioceris
+criophore
+Criophoros
+criosphinx
+cripes
+crippingly
+cripple
+crippledom
+crippleness
+crippler
+crippling
+cripply
+Cris
+crises
+crisic
+crisis
+crisp
+crispate
+crispated
+crispation
+crispature
+crisped
+crisper
+crispily
+Crispin
+crispine
+crispiness
+crisping
+crisply
+crispness
+crispy
+criss
+crissal
+crisscross
+crissum
+crista
+cristate
+Cristatella
+Cristi
+cristiform
+Cristina
+Cristineaux
+Cristino
+Cristispira
+Cristivomer
+cristobalite
+Cristopher
+critch
+criteria
+criteriology
+criterion
+criterional
+criterium
+crith
+Crithidia
+crithmene
+crithomancy
+critic
+critical
+criticality
+critically
+criticalness
+criticaster
+criticasterism
+criticastry
+criticisable
+criticism
+criticist
+criticizable
+criticize
+criticizer
+criticizingly
+critickin
+criticship
+criticule
+critique
+critling
+crizzle
+cro
+croak
+Croaker
+croaker
+croakily
+croakiness
+croaky
+Croat
+Croatan
+Croatian
+croc
+Crocanthemum
+crocard
+croceic
+crocein
+croceine
+croceous
+crocetin
+croche
+crochet
+crocheter
+crocheting
+croci
+crocidolite
+Crocidura
+crocin
+crock
+crocker
+crockery
+crockeryware
+crocket
+crocketed
+crocky
+crocodile
+Crocodilia
+crocodilian
+Crocodilidae
+crocodiline
+crocodilite
+crocodiloid
+Crocodilus
+Crocodylidae
+Crocodylus
+crocoisite
+crocoite
+croconate
+croconic
+Crocosmia
+Crocus
+crocus
+crocused
+croft
+crofter
+crofterization
+crofterize
+crofting
+croftland
+croisette
+croissante
+Crokinole
+Crom
+cromaltite
+crome
+Cromer
+Cromerian
+cromfordite
+cromlech
+cromorna
+cromorne
+Cromwell
+Cromwellian
+Cronartium
+crone
+croneberry
+cronet
+Cronian
+cronish
+cronk
+cronkness
+cronstedtite
+crony
+crood
+croodle
+crook
+crookback
+crookbacked
+crookbill
+crookbilled
+crooked
+crookedly
+crookedness
+crooken
+crookesite
+crookfingered
+crookheaded
+crookkneed
+crookle
+crooklegged
+crookneck
+crooknecked
+crooknosed
+crookshouldered
+crooksided
+crooksterned
+crooktoothed
+crool
+Croomia
+croon
+crooner
+crooning
+crooningly
+crop
+crophead
+cropland
+cropman
+croppa
+cropper
+croppie
+cropplecrown
+croppy
+cropshin
+cropsick
+cropsickness
+cropweed
+croquet
+croquette
+crore
+crosa
+Crosby
+crosier
+crosiered
+crosnes
+cross
+crossability
+crossable
+crossarm
+crossband
+crossbar
+crossbeak
+crossbeam
+crossbelt
+crossbill
+crossbolt
+crossbolted
+crossbones
+crossbow
+crossbowman
+crossbred
+crossbreed
+crosscurrent
+crosscurrented
+crosscut
+crosscutter
+crosscutting
+crosse
+crossed
+crosser
+crossette
+crossfall
+crossfish
+crossflow
+crossflower
+crossfoot
+crosshackle
+crosshand
+crosshatch
+crosshaul
+crosshauling
+crosshead
+crossing
+crossite
+crossjack
+crosslegs
+crosslet
+crossleted
+crosslight
+crosslighted
+crossline
+crossly
+crossness
+crossopodia
+crossopterygian
+Crossopterygii
+Crossosoma
+Crossosomataceae
+crossosomataceous
+crossover
+crosspatch
+crosspath
+crosspiece
+crosspoint
+crossrail
+crossroad
+crossroads
+crossrow
+crossruff
+crosstail
+crosstie
+crosstied
+crosstoes
+crosstrack
+crosstree
+crosswalk
+crossway
+crossways
+crossweb
+crossweed
+crosswise
+crossword
+crosswort
+crostarie
+crotal
+Crotalaria
+crotalic
+Crotalidae
+crotaliform
+Crotalinae
+crotaline
+crotalism
+crotalo
+crotaloid
+crotalum
+Crotalus
+crotaphic
+crotaphion
+crotaphite
+crotaphitic
+Crotaphytus
+crotch
+crotched
+crotchet
+crotcheteer
+crotchetiness
+crotchety
+crotchy
+crotin
+Croton
+crotonaldehyde
+crotonate
+crotonic
+crotonization
+crotonyl
+crotonylene
+Crotophaga
+crottels
+crottle
+crotyl
+crouch
+crouchant
+crouched
+croucher
+crouching
+crouchingly
+crounotherapy
+croup
+croupade
+croupal
+croupe
+crouperbush
+croupier
+croupily
+croupiness
+croupous
+croupy
+crouse
+crousely
+crout
+croute
+crouton
+crow
+crowbait
+crowbar
+crowberry
+crowbill
+crowd
+crowded
+crowdedly
+crowdedness
+crowder
+crowdweed
+crowdy
+crower
+crowflower
+crowfoot
+crowfooted
+crowhop
+crowing
+crowingly
+crowkeeper
+crowl
+crown
+crownbeard
+crowned
+crowner
+crownless
+crownlet
+crownling
+crownmaker
+crownwork
+crownwort
+crowshay
+crowstep
+crowstepped
+crowstick
+crowstone
+crowtoe
+croy
+croyden
+croydon
+croze
+crozer
+crozzle
+crozzly
+crubeen
+cruce
+cruces
+crucethouse
+cruche
+crucial
+cruciality
+crucially
+crucian
+Crucianella
+cruciate
+cruciately
+cruciation
+crucible
+Crucibulum
+crucifer
+Cruciferae
+cruciferous
+crucificial
+crucified
+crucifier
+crucifix
+crucifixion
+cruciform
+cruciformity
+cruciformly
+crucify
+crucigerous
+crucilly
+crucily
+cruck
+crude
+crudely
+crudeness
+crudity
+crudwort
+cruel
+cruelhearted
+cruelize
+cruelly
+cruelness
+cruels
+cruelty
+cruent
+cruentation
+cruet
+cruety
+cruise
+cruiser
+cruisken
+cruive
+cruller
+crum
+crumb
+crumbable
+crumbcloth
+crumber
+crumble
+crumblement
+crumblet
+crumbliness
+crumblingness
+crumblings
+crumbly
+crumby
+crumen
+crumenal
+crumlet
+crummie
+crummier
+crummiest
+crummock
+crummy
+crump
+crumper
+crumpet
+crumple
+crumpled
+crumpler
+crumpling
+crumply
+crumpy
+crunch
+crunchable
+crunchiness
+crunching
+crunchingly
+crunchingness
+crunchweed
+crunchy
+crunk
+crunkle
+crunodal
+crunode
+crunt
+cruor
+crupper
+crural
+crureus
+crurogenital
+cruroinguinal
+crurotarsal
+crus
+crusade
+crusader
+crusado
+Crusca
+cruse
+crush
+crushability
+crushable
+crushed
+crusher
+crushing
+crushingly
+crusie
+crusily
+crust
+crusta
+Crustacea
+crustaceal
+crustacean
+crustaceological
+crustaceologist
+crustaceology
+crustaceous
+crustade
+crustal
+crustalogical
+crustalogist
+crustalogy
+crustate
+crustated
+crustation
+crusted
+crustedly
+cruster
+crustific
+crustification
+crustily
+crustiness
+crustless
+crustose
+crustosis
+crusty
+crutch
+crutched
+crutcher
+crutching
+crutchlike
+cruth
+crutter
+crux
+cruzeiro
+cry
+cryable
+cryaesthesia
+cryalgesia
+cryanesthesia
+crybaby
+cryesthesia
+crying
+cryingly
+crymodynia
+crymotherapy
+cryoconite
+cryogen
+cryogenic
+cryogenics
+cryogeny
+cryohydrate
+cryohydric
+cryolite
+cryometer
+cryophile
+cryophilic
+cryophoric
+cryophorus
+cryophyllite
+cryophyte
+cryoplankton
+cryoscope
+cryoscopic
+cryoscopy
+cryosel
+cryostase
+cryostat
+crypt
+crypta
+cryptal
+cryptamnesia
+cryptamnesic
+cryptanalysis
+cryptanalyst
+cryptarch
+cryptarchy
+crypted
+Crypteronia
+Crypteroniaceae
+cryptesthesia
+cryptesthetic
+cryptic
+cryptical
+cryptically
+cryptoagnostic
+cryptobatholithic
+cryptobranch
+Cryptobranchia
+Cryptobranchiata
+cryptobranchiate
+Cryptobranchidae
+Cryptobranchus
+cryptocarp
+cryptocarpic
+cryptocarpous
+Cryptocarya
+Cryptocephala
+cryptocephalous
+Cryptocerata
+cryptocerous
+cryptoclastic
+Cryptocleidus
+cryptococci
+cryptococcic
+Cryptococcus
+cryptococcus
+cryptocommercial
+cryptocrystalline
+cryptocrystallization
+cryptodeist
+Cryptodira
+cryptodiran
+cryptodire
+cryptodirous
+cryptodouble
+cryptodynamic
+cryptogam
+Cryptogamia
+cryptogamian
+cryptogamic
+cryptogamical
+cryptogamist
+cryptogamous
+cryptogamy
+cryptogenetic
+cryptogenic
+cryptogenous
+Cryptoglaux
+cryptoglioma
+cryptogram
+Cryptogramma
+cryptogrammatic
+cryptogrammatical
+cryptogrammatist
+cryptogrammic
+cryptograph
+cryptographal
+cryptographer
+cryptographic
+cryptographical
+cryptographically
+cryptographist
+cryptography
+cryptoheresy
+cryptoheretic
+cryptoinflationist
+cryptolite
+cryptologist
+cryptology
+cryptolunatic
+cryptomere
+Cryptomeria
+cryptomerous
+cryptomnesia
+cryptomnesic
+cryptomonad
+Cryptomonadales
+Cryptomonadina
+cryptonema
+Cryptonemiales
+cryptoneurous
+cryptonym
+cryptonymous
+cryptopapist
+cryptoperthite
+Cryptophagidae
+cryptophthalmos
+Cryptophyceae
+cryptophyte
+cryptopine
+cryptoporticus
+Cryptoprocta
+cryptoproselyte
+cryptoproselytism
+cryptopyic
+cryptopyrrole
+cryptorchid
+cryptorchidism
+cryptorchis
+Cryptorhynchus
+cryptorrhesis
+cryptorrhetic
+cryptoscope
+cryptoscopy
+cryptosplenetic
+Cryptostegia
+cryptostoma
+Cryptostomata
+cryptostomate
+cryptostome
+Cryptotaenia
+cryptous
+cryptovalence
+cryptovalency
+cryptozonate
+Cryptozonia
+cryptozygosity
+cryptozygous
+Crypturi
+Crypturidae
+crystal
+crystallic
+crystalliferous
+crystalliform
+crystalligerous
+crystallin
+crystalline
+crystallinity
+crystallite
+crystallitic
+crystallitis
+crystallizability
+crystallizable
+crystallization
+crystallize
+crystallized
+crystallizer
+crystalloblastic
+crystallochemical
+crystallochemistry
+crystallogenesis
+crystallogenetic
+crystallogenic
+crystallogenical
+crystallogeny
+crystallogram
+crystallographer
+crystallographic
+crystallographical
+crystallographically
+crystallography
+crystalloid
+crystalloidal
+crystallology
+crystalloluminescence
+crystallomagnetic
+crystallomancy
+crystallometric
+crystallometry
+crystallophyllian
+crystallose
+crystallurgy
+crystalwort
+crystic
+crystograph
+crystoleum
+Crystolon
+crystosphene
+csardas
+Ctenacanthus
+ctene
+ctenidial
+ctenidium
+cteniform
+Ctenocephalus
+ctenocyst
+ctenodactyl
+Ctenodipterini
+ctenodont
+Ctenodontidae
+Ctenodus
+ctenoid
+ctenoidean
+Ctenoidei
+ctenoidian
+ctenolium
+Ctenophora
+ctenophoral
+ctenophoran
+ctenophore
+ctenophoric
+ctenophorous
+Ctenoplana
+Ctenostomata
+ctenostomatous
+ctenostome
+ctetology
+cuadra
+Cuailnge
+cuapinole
+cuarenta
+cuarta
+cuarteron
+cuartilla
+cuartillo
+cub
+Cuba
+cubage
+Cuban
+cubangle
+cubanite
+Cubanize
+cubatory
+cubature
+cubbing
+cubbish
+cubbishly
+cubbishness
+cubby
+cubbyhole
+cubbyhouse
+cubbyyew
+cubdom
+cube
+cubeb
+cubelet
+Cubelium
+cuber
+cubhood
+cubi
+cubic
+cubica
+cubical
+cubically
+cubicalness
+cubicity
+cubicle
+cubicly
+cubicone
+cubicontravariant
+cubicovariant
+cubicular
+cubiculum
+cubiform
+cubism
+cubist
+cubit
+cubital
+cubitale
+cubited
+cubitiere
+cubito
+cubitocarpal
+cubitocutaneous
+cubitodigital
+cubitometacarpal
+cubitopalmar
+cubitoplantar
+cubitoradial
+cubitus
+cubmaster
+cubocalcaneal
+cuboctahedron
+cubocube
+cubocuneiform
+cubododecahedral
+cuboid
+cuboidal
+cuboides
+cubomancy
+Cubomedusae
+cubomedusan
+cubometatarsal
+cubonavicular
+Cuchan
+Cuchulainn
+cuck
+cuckhold
+cuckold
+cuckoldom
+cuckoldry
+cuckoldy
+cuckoo
+cuckooflower
+cuckoomaid
+cuckoopint
+cuckoopintle
+cuckstool
+cucoline
+Cucujid
+Cucujidae
+Cucujus
+Cuculi
+Cuculidae
+cuculiform
+Cuculiformes
+cuculine
+cuculla
+cucullaris
+cucullate
+cucullately
+cuculliform
+cucullus
+cuculoid
+Cuculus
+Cucumaria
+Cucumariidae
+cucumber
+cucumiform
+Cucumis
+cucurbit
+Cucurbita
+Cucurbitaceae
+cucurbitaceous
+cucurbite
+cucurbitine
+cud
+cudava
+cudbear
+cudden
+cuddle
+cuddleable
+cuddlesome
+cuddly
+Cuddy
+cuddy
+cuddyhole
+cudgel
+cudgeler
+cudgerie
+cudweed
+cue
+cueball
+cueca
+cueist
+cueman
+cuemanship
+cuerda
+cuesta
+Cueva
+cuff
+cuffer
+cuffin
+cuffy
+cuffyism
+cuggermugger
+cuichunchulli
+cuinage
+cuir
+cuirass
+cuirassed
+cuirassier
+cuisinary
+cuisine
+cuissard
+cuissart
+cuisse
+cuissen
+cuisten
+Cuitlateco
+cuittikin
+Cujam
+cuke
+Culavamsa
+culbut
+Culdee
+culebra
+culet
+culeus
+Culex
+culgee
+culicid
+Culicidae
+culicidal
+culicide
+culiciform
+culicifugal
+culicifuge
+Culicinae
+culicine
+Culicoides
+culilawan
+culinarily
+culinary
+cull
+culla
+cullage
+Cullen
+culler
+cullet
+culling
+cullion
+cullis
+cully
+culm
+culmen
+culmicolous
+culmiferous
+culmigenous
+culminal
+culminant
+culminate
+culmination
+culmy
+culotte
+culottes
+culottic
+culottism
+culpa
+culpability
+culpable
+culpableness
+culpably
+culpatory
+culpose
+culprit
+cult
+cultch
+cultellation
+cultellus
+culteranismo
+cultic
+cultigen
+cultirostral
+Cultirostres
+cultish
+cultism
+cultismo
+cultist
+cultivability
+cultivable
+cultivably
+cultivar
+cultivatability
+cultivatable
+cultivate
+cultivated
+cultivation
+cultivator
+cultrate
+cultrated
+cultriform
+cultrirostral
+Cultrirostres
+cultual
+culturable
+cultural
+culturally
+culture
+cultured
+culturine
+culturist
+culturization
+culturize
+culturological
+culturologically
+culturologist
+culturology
+cultus
+culver
+culverfoot
+culverhouse
+culverin
+culverineer
+culverkey
+culvert
+culvertage
+culverwort
+cum
+Cumacea
+cumacean
+cumaceous
+Cumaean
+cumal
+cumaldehyde
+Cumanagoto
+cumaphyte
+cumaphytic
+cumaphytism
+Cumar
+cumay
+cumbent
+cumber
+cumberer
+cumberlandite
+cumberless
+cumberment
+cumbersome
+cumbersomely
+cumbersomeness
+cumberworld
+cumbha
+cumbly
+cumbraite
+cumbrance
+cumbre
+Cumbrian
+cumbrous
+cumbrously
+cumbrousness
+cumbu
+cumene
+cumengite
+cumenyl
+cumflutter
+cumhal
+cumic
+cumidin
+cumidine
+cumin
+cuminal
+cuminic
+cuminoin
+cuminol
+cuminole
+cuminseed
+cuminyl
+cummer
+cummerbund
+cummin
+cummingtonite
+cumol
+cump
+cumshaw
+cumulant
+cumular
+cumulate
+cumulately
+cumulation
+cumulatist
+cumulative
+cumulatively
+cumulativeness
+cumuli
+cumuliform
+cumulite
+cumulophyric
+cumulose
+cumulous
+cumulus
+cumyl
+Cuna
+cunabular
+Cunan
+Cunarder
+Cunas
+cunctation
+cunctatious
+cunctative
+cunctator
+cunctatorship
+cunctatury
+cunctipotent
+cundeamor
+cuneal
+cuneate
+cuneately
+cuneatic
+cuneator
+cuneiform
+cuneiformist
+cuneocuboid
+cuneonavicular
+cuneoscaphoid
+cunette
+cuneus
+cungeboi
+cunicular
+cuniculus
+cunila
+cunjah
+cunjer
+cunjevoi
+cunner
+cunnilinctus
+cunnilingus
+cunning
+Cunninghamia
+cunningly
+cunningness
+Cunonia
+Cunoniaceae
+cunoniaceous
+cunye
+Cunza
+Cuon
+cuorin
+cup
+Cupania
+cupay
+cupbearer
+cupboard
+cupcake
+cupel
+cupeler
+cupellation
+cupflower
+cupful
+Cuphea
+cuphead
+cupholder
+Cupid
+cupidinous
+cupidity
+cupidon
+cupidone
+cupless
+cupmaker
+cupmaking
+cupman
+cupmate
+cupola
+cupolaman
+cupolar
+cupolated
+cupped
+cupper
+cupping
+cuppy
+cuprammonia
+cuprammonium
+cupreine
+cuprene
+cupreous
+Cupressaceae
+cupressineous
+Cupressinoxylon
+Cupressus
+cupric
+cupride
+cupriferous
+cuprite
+cuproammonium
+cuprobismutite
+cuprocyanide
+cuprodescloizite
+cuproid
+cuproiodargyrite
+cupromanganese
+cupronickel
+cuproplumbite
+cuproscheelite
+cuprose
+cuprosilicon
+cuprotungstite
+cuprous
+cuprum
+cupseed
+cupstone
+cupula
+cupulate
+cupule
+Cupuliferae
+cupuliferous
+cupuliform
+cur
+curability
+curable
+curableness
+curably
+curacao
+curacy
+curare
+curarine
+curarization
+curarize
+curassow
+curatage
+curate
+curatel
+curateship
+curatess
+curatial
+curatic
+curation
+curative
+curatively
+curativeness
+curatize
+curatolatry
+curator
+curatorial
+curatorium
+curatorship
+curatory
+curatrix
+Curavecan
+curb
+curbable
+curber
+curbing
+curbless
+curblike
+curbstone
+curbstoner
+curby
+curcas
+curch
+curcuddoch
+Curculio
+curculionid
+Curculionidae
+curculionist
+Curcuma
+curcumin
+curd
+curdiness
+curdle
+curdler
+curdly
+curdwort
+curdy
+cure
+cureless
+curelessly
+curemaster
+curer
+curettage
+curette
+curettement
+curfew
+curial
+curialism
+curialist
+curialistic
+curiality
+curiate
+Curiatii
+curiboca
+curie
+curiescopy
+curietherapy
+curin
+curine
+curing
+curio
+curiologic
+curiologically
+curiologics
+curiology
+curiomaniac
+curiosa
+curiosity
+curioso
+curious
+curiously
+curiousness
+curite
+Curitis
+curium
+curl
+curled
+curledly
+curledness
+curler
+curlew
+curlewberry
+curlicue
+curliewurly
+curlike
+curlily
+curliness
+curling
+curlingly
+curlpaper
+curly
+curlycue
+curlyhead
+curlylocks
+curmudgeon
+curmudgeonery
+curmudgeonish
+curmudgeonly
+curmurring
+curn
+curney
+curnock
+curple
+curr
+currach
+currack
+curragh
+currant
+curratow
+currawang
+currency
+current
+currently
+currentness
+currentwise
+curricle
+curricula
+curricular
+curricularization
+curricularize
+curriculum
+curried
+currier
+curriery
+currish
+currishly
+currishness
+curry
+currycomb
+curryfavel
+Cursa
+cursal
+curse
+cursed
+cursedly
+cursedness
+curser
+curship
+cursitor
+cursive
+cursively
+cursiveness
+cursor
+cursorary
+Cursores
+Cursoria
+cursorial
+Cursoriidae
+cursorily
+cursoriness
+cursorious
+Cursorius
+cursory
+curst
+curstful
+curstfully
+curstly
+curstness
+cursus
+Curt
+curt
+curtail
+curtailed
+curtailedly
+curtailer
+curtailment
+curtain
+curtaining
+curtainless
+curtainwise
+curtal
+Curtana
+curtate
+curtation
+curtesy
+curtilage
+Curtis
+Curtise
+curtly
+curtness
+curtsy
+curua
+curuba
+Curucaneca
+Curucanecan
+curucucu
+curule
+Curuminaca
+Curuminacan
+Curupira
+cururo
+curvaceous
+curvaceousness
+curvacious
+curvant
+curvate
+curvation
+curvature
+curve
+curved
+curvedly
+curvedness
+curver
+curvesome
+curvesomeness
+curvet
+curvicaudate
+curvicostate
+curvidentate
+curvifoliate
+curviform
+curvilineal
+curvilinear
+curvilinearity
+curvilinearly
+curvimeter
+curvinervate
+curvinerved
+curvirostral
+Curvirostres
+curviserial
+curvital
+curvity
+curvograph
+curvometer
+curvous
+curvulate
+curvy
+curwhibble
+curwillet
+cuscohygrine
+cusconine
+Cuscus
+cuscus
+Cuscuta
+Cuscutaceae
+cuscutaceous
+cusec
+cuselite
+cush
+cushag
+cushat
+cushaw
+cushewbird
+cushion
+cushioned
+cushionflower
+cushionless
+cushionlike
+cushiony
+Cushite
+Cushitic
+cushlamochree
+cushy
+cusie
+cusinero
+cusk
+cusp
+cuspal
+cusparidine
+cusparine
+cuspate
+cusped
+cuspid
+cuspidal
+cuspidate
+cuspidation
+cuspidine
+cuspidor
+cuspule
+cuss
+cussed
+cussedly
+cussedness
+cusser
+cusso
+custard
+custerite
+custodee
+custodes
+custodial
+custodiam
+custodian
+custodianship
+custodier
+custody
+custom
+customable
+customarily
+customariness
+customary
+customer
+customhouse
+customs
+custumal
+cut
+cutaneal
+cutaneous
+cutaneously
+cutaway
+cutback
+cutch
+cutcher
+cutcherry
+cute
+cutely
+cuteness
+Cuterebra
+Cuthbert
+cutheal
+cuticle
+cuticolor
+cuticula
+cuticular
+cuticularization
+cuticularize
+cuticulate
+cutidure
+cutie
+cutification
+cutigeral
+cutin
+cutinization
+cutinize
+cutireaction
+cutis
+cutisector
+Cutiterebra
+cutitis
+cutization
+cutlass
+cutler
+cutleress
+Cutleria
+Cutleriaceae
+cutleriaceous
+Cutleriales
+cutlery
+cutlet
+cutling
+cutlips
+cutocellulose
+cutoff
+cutout
+cutover
+cutpurse
+cuttable
+cuttage
+cuttail
+cuttanee
+cutted
+cutter
+cutterhead
+cutterman
+cutthroat
+cutting
+cuttingly
+cuttingness
+cuttle
+cuttlebone
+cuttlefish
+cuttler
+cuttoo
+cutty
+cuttyhunk
+cutup
+cutwater
+cutweed
+cutwork
+cutworm
+cuvette
+Cuvierian
+cuvy
+cuya
+Cuzceno
+cwierc
+cwm
+cyamelide
+Cyamus
+cyan
+cyanacetic
+cyanamide
+cyananthrol
+Cyanastraceae
+Cyanastrum
+cyanate
+cyanaurate
+cyanauric
+cyanbenzyl
+cyancarbonic
+Cyanea
+cyanean
+cyanemia
+cyaneous
+cyanephidrosis
+cyanformate
+cyanformic
+cyanhidrosis
+cyanhydrate
+cyanhydric
+cyanhydrin
+cyanic
+cyanicide
+cyanidation
+cyanide
+cyanidin
+cyanidine
+cyanidrosis
+cyanimide
+cyanin
+cyanine
+cyanite
+cyanize
+cyanmethemoglobin
+cyanoacetate
+cyanoacetic
+cyanoaurate
+cyanoauric
+cyanobenzene
+cyanocarbonic
+cyanochlorous
+cyanochroia
+cyanochroic
+Cyanocitta
+cyanocrystallin
+cyanoderma
+cyanogen
+cyanogenesis
+cyanogenetic
+cyanogenic
+cyanoguanidine
+cyanohermidin
+cyanohydrin
+cyanol
+cyanole
+cyanomaclurin
+cyanometer
+cyanomethaemoglobin
+cyanomethemoglobin
+cyanometric
+cyanometry
+cyanopathic
+cyanopathy
+cyanophile
+cyanophilous
+cyanophoric
+cyanophose
+Cyanophyceae
+cyanophycean
+cyanophyceous
+cyanophycin
+cyanopia
+cyanoplastid
+cyanoplatinite
+cyanoplatinous
+cyanopsia
+cyanose
+cyanosed
+cyanosis
+Cyanospiza
+cyanotic
+cyanotrichite
+cyanotype
+cyanuramide
+cyanurate
+cyanuret
+cyanuric
+cyanurine
+cyanus
+cyaphenine
+cyath
+Cyathaspis
+Cyathea
+Cyatheaceae
+cyatheaceous
+cyathiform
+cyathium
+cyathoid
+cyatholith
+Cyathophyllidae
+cyathophylline
+cyathophylloid
+Cyathophyllum
+cyathos
+cyathozooid
+cyathus
+cybernetic
+cyberneticist
+cybernetics
+Cybister
+cycad
+Cycadaceae
+cycadaceous
+Cycadales
+cycadean
+cycadeoid
+Cycadeoidea
+cycadeous
+cycadiform
+cycadlike
+cycadofilicale
+Cycadofilicales
+Cycadofilices
+cycadofilicinean
+Cycadophyta
+Cycas
+Cycladic
+cyclamen
+cyclamin
+cyclamine
+cyclammonium
+cyclane
+Cyclanthaceae
+cyclanthaceous
+Cyclanthales
+Cyclanthus
+cyclar
+cyclarthrodial
+cyclarthrsis
+cyclas
+cycle
+cyclecar
+cycledom
+cyclene
+cycler
+cyclesmith
+Cycliae
+cyclian
+cyclic
+cyclical
+cyclically
+cyclicism
+cyclide
+cycling
+cyclism
+cyclist
+cyclistic
+cyclitic
+cyclitis
+cyclization
+cyclize
+cycloalkane
+Cyclobothra
+cyclobutane
+cyclocoelic
+cyclocoelous
+Cycloconium
+cyclodiolefin
+cycloganoid
+Cycloganoidei
+cyclogram
+cyclograph
+cyclographer
+cycloheptane
+cycloheptanone
+cyclohexane
+cyclohexanol
+cyclohexanone
+cyclohexene
+cyclohexyl
+cycloid
+cycloidal
+cycloidally
+cycloidean
+Cycloidei
+cycloidian
+cycloidotrope
+cyclolith
+Cycloloma
+cyclomania
+cyclometer
+cyclometric
+cyclometrical
+cyclometry
+Cyclomyaria
+cyclomyarian
+cyclonal
+cyclone
+cyclonic
+cyclonical
+cyclonically
+cyclonist
+cyclonite
+cyclonologist
+cyclonology
+cyclonometer
+cyclonoscope
+cycloolefin
+cycloparaffin
+cyclope
+Cyclopean
+cyclopean
+cyclopedia
+cyclopedic
+cyclopedical
+cyclopedically
+cyclopedist
+cyclopentadiene
+cyclopentane
+cyclopentanone
+cyclopentene
+Cyclopes
+cyclopes
+cyclophoria
+cyclophoric
+Cyclophorus
+cyclophrenia
+cyclopia
+Cyclopic
+cyclopism
+cyclopite
+cycloplegia
+cycloplegic
+cyclopoid
+cyclopropane
+Cyclops
+Cyclopteridae
+cyclopteroid
+cyclopterous
+cyclopy
+cyclorama
+cycloramic
+Cyclorrhapha
+cyclorrhaphous
+cycloscope
+cyclose
+cyclosis
+cyclospermous
+Cyclospondyli
+cyclospondylic
+cyclospondylous
+Cyclosporales
+Cyclosporeae
+Cyclosporinae
+cyclosporous
+Cyclostoma
+Cyclostomata
+cyclostomate
+Cyclostomatidae
+cyclostomatous
+cyclostome
+Cyclostomes
+Cyclostomi
+Cyclostomidae
+cyclostomous
+cyclostrophic
+cyclostyle
+Cyclotella
+cyclothem
+cyclothure
+cyclothurine
+Cyclothurus
+cyclothyme
+cyclothymia
+cyclothymiac
+cyclothymic
+cyclotome
+cyclotomic
+cyclotomy
+Cyclotosaurus
+cyclotron
+cyclovertebral
+cyclus
+Cydippe
+cydippian
+cydippid
+Cydippida
+Cydonia
+Cydonian
+cydonium
+cyesiology
+cyesis
+cygneous
+cygnet
+Cygnid
+Cygninae
+cygnine
+Cygnus
+cyke
+cylinder
+cylindered
+cylinderer
+cylinderlike
+cylindraceous
+cylindrarthrosis
+Cylindrella
+cylindrelloid
+cylindrenchyma
+cylindric
+cylindrical
+cylindricality
+cylindrically
+cylindricalness
+cylindricity
+cylindricule
+cylindriform
+cylindrite
+cylindrocellular
+cylindrocephalic
+cylindroconical
+cylindroconoidal
+cylindrocylindric
+cylindrodendrite
+cylindrograph
+cylindroid
+cylindroidal
+cylindroma
+cylindromatous
+cylindrometric
+cylindroogival
+Cylindrophis
+Cylindrosporium
+cylindruria
+cylix
+Cyllenian
+Cyllenius
+cyllosis
+cyma
+cymagraph
+cymaphen
+cymaphyte
+cymaphytic
+cymaphytism
+cymar
+cymation
+cymatium
+cymba
+cymbaeform
+cymbal
+Cymbalaria
+cymbaleer
+cymbaler
+cymbaline
+cymbalist
+cymballike
+cymbalo
+cymbalon
+cymbate
+Cymbella
+cymbiform
+Cymbium
+cymbling
+cymbocephalic
+cymbocephalous
+cymbocephaly
+Cymbopogon
+cyme
+cymelet
+cymene
+cymiferous
+cymling
+Cymodoceaceae
+cymogene
+cymograph
+cymographic
+cymoid
+Cymoidium
+cymometer
+cymophane
+cymophanous
+cymophenol
+cymoscope
+cymose
+cymosely
+cymotrichous
+cymotrichy
+cymous
+Cymraeg
+Cymric
+Cymry
+cymule
+cymulose
+cynanche
+Cynanchum
+cynanthropy
+Cynara
+cynaraceous
+cynarctomachy
+cynareous
+cynaroid
+cynebot
+cynegetic
+cynegetics
+cynegild
+cynhyena
+Cynias
+cyniatria
+cyniatrics
+cynic
+cynical
+cynically
+cynicalness
+cynicism
+cynicist
+cynipid
+Cynipidae
+cynipidous
+cynipoid
+Cynipoidea
+Cynips
+cynism
+cynocephalic
+cynocephalous
+cynocephalus
+cynoclept
+Cynocrambaceae
+cynocrambaceous
+Cynocrambe
+Cynodon
+cynodont
+Cynodontia
+Cynogale
+cynogenealogist
+cynogenealogy
+Cynoglossum
+Cynognathus
+cynography
+cynoid
+Cynoidea
+cynology
+Cynomoriaceae
+cynomoriaceous
+Cynomorium
+Cynomorpha
+cynomorphic
+cynomorphous
+Cynomys
+cynophile
+cynophilic
+cynophilist
+cynophobe
+cynophobia
+Cynopithecidae
+cynopithecoid
+cynopodous
+cynorrhodon
+Cynosarges
+Cynoscion
+Cynosura
+cynosural
+cynosure
+Cynosurus
+cynotherapy
+Cynoxylon
+Cynthia
+Cynthian
+Cynthiidae
+Cynthius
+cyp
+Cyperaceae
+cyperaceous
+Cyperus
+cyphella
+cyphellate
+Cyphomandra
+cyphonautes
+cyphonism
+Cypraea
+cypraeid
+Cypraeidae
+cypraeiform
+cypraeoid
+cypre
+cypres
+cypress
+cypressed
+cypressroot
+Cypria
+Cyprian
+Cyprididae
+Cypridina
+Cypridinidae
+cypridinoid
+Cyprina
+cyprine
+cyprinid
+Cyprinidae
+cypriniform
+cyprinine
+cyprinodont
+Cyprinodontes
+Cyprinodontidae
+cyprinodontoid
+cyprinoid
+Cyprinoidea
+cyprinoidean
+Cyprinus
+Cypriote
+Cypripedium
+Cypris
+cypsela
+Cypseli
+Cypselid
+Cypselidae
+cypseliform
+Cypseliformes
+cypseline
+cypseloid
+cypselomorph
+Cypselomorphae
+cypselomorphic
+cypselous
+Cypselus
+cyptozoic
+Cyrano
+Cyrenaic
+Cyrenaicism
+Cyrenian
+Cyril
+Cyrilla
+Cyrillaceae
+cyrillaceous
+Cyrillian
+Cyrillianism
+Cyrillic
+cyriologic
+cyriological
+Cyrtandraceae
+Cyrtidae
+cyrtoceracone
+Cyrtoceras
+cyrtoceratite
+cyrtoceratitic
+cyrtograph
+cyrtolite
+cyrtometer
+Cyrtomium
+cyrtopia
+cyrtosis
+Cyrus
+cyrus
+cyst
+cystadenoma
+cystadenosarcoma
+cystal
+cystalgia
+cystamine
+cystaster
+cystatrophia
+cystatrophy
+cystectasia
+cystectasy
+cystectomy
+cysted
+cysteine
+cysteinic
+cystelcosis
+cystenchyma
+cystenchymatous
+cystencyte
+cysterethism
+cystic
+cysticarpic
+cysticarpium
+cysticercoid
+cysticercoidal
+cysticercosis
+cysticercus
+cysticolous
+cystid
+Cystidea
+cystidean
+cystidicolous
+cystidium
+cystiferous
+cystiform
+cystigerous
+Cystignathidae
+cystignathine
+cystine
+cystinuria
+cystirrhea
+cystis
+cystitis
+cystitome
+cystoadenoma
+cystocarcinoma
+cystocarp
+cystocarpic
+cystocele
+cystocolostomy
+cystocyte
+cystodynia
+cystoelytroplasty
+cystoenterocele
+cystoepiplocele
+cystoepithelioma
+cystofibroma
+Cystoflagellata
+cystoflagellate
+cystogenesis
+cystogenous
+cystogram
+cystoid
+Cystoidea
+cystoidean
+cystolith
+cystolithectomy
+cystolithiasis
+cystolithic
+cystoma
+cystomatous
+cystomorphous
+cystomyoma
+cystomyxoma
+Cystonectae
+cystonectous
+cystonephrosis
+cystoneuralgia
+cystoparalysis
+Cystophora
+cystophore
+cystophotography
+cystophthisis
+cystoplasty
+cystoplegia
+cystoproctostomy
+Cystopteris
+cystoptosis
+Cystopus
+cystopyelitis
+cystopyelography
+cystopyelonephritis
+cystoradiography
+cystorrhagia
+cystorrhaphy
+cystorrhea
+cystosarcoma
+cystoschisis
+cystoscope
+cystoscopic
+cystoscopy
+cystose
+cystospasm
+cystospastic
+cystospore
+cystostomy
+cystosyrinx
+cystotome
+cystotomy
+cystotrachelotomy
+cystoureteritis
+cystourethritis
+cystous
+cytase
+cytasic
+Cytherea
+Cytherean
+Cytherella
+Cytherellidae
+Cytinaceae
+cytinaceous
+Cytinus
+cytioderm
+cytisine
+Cytisus
+cytitis
+cytoblast
+cytoblastema
+cytoblastemal
+cytoblastematous
+cytoblastemic
+cytoblastemous
+cytochemistry
+cytochrome
+cytochylema
+cytocide
+cytoclasis
+cytoclastic
+cytococcus
+cytocyst
+cytode
+cytodendrite
+cytoderm
+cytodiagnosis
+cytodieresis
+cytodieretic
+cytogamy
+cytogene
+cytogenesis
+cytogenetic
+cytogenetical
+cytogenetically
+cytogeneticist
+cytogenetics
+cytogenic
+cytogenous
+cytogeny
+cytoglobin
+cytohyaloplasm
+cytoid
+cytokinesis
+cytolist
+cytologic
+cytological
+cytologically
+cytologist
+cytology
+cytolymph
+cytolysin
+cytolysis
+cytolytic
+cytoma
+cytomere
+cytometer
+cytomicrosome
+cytomitome
+cytomorphosis
+cyton
+cytoparaplastin
+cytopathologic
+cytopathological
+cytopathologically
+cytopathology
+Cytophaga
+cytophagous
+cytophagy
+cytopharynx
+cytophil
+cytophysics
+cytophysiology
+cytoplasm
+cytoplasmic
+cytoplast
+cytoplastic
+cytoproct
+cytopyge
+cytoreticulum
+cytoryctes
+cytosine
+cytosome
+Cytospora
+Cytosporina
+cytost
+cytostomal
+cytostome
+cytostroma
+cytostromatic
+cytotactic
+cytotaxis
+cytotoxic
+cytotoxin
+cytotrophoblast
+cytotrophy
+cytotropic
+cytotropism
+cytozoic
+cytozoon
+cytozymase
+cytozyme
+cytula
+Cyzicene
+cyzicene
+czar
+czardas
+czardom
+czarevitch
+czarevna
+czarian
+czaric
+czarina
+czarinian
+czarish
+czarism
+czarist
+czaristic
+czaritza
+czarowitch
+czarowitz
+czarship
+Czech
+Czechic
+Czechish
+Czechization
+Czechoslovak
+Czechoslovakian
+D
+d
+da
+daalder
+dab
+dabb
+dabba
+dabber
+dabble
+dabbler
+dabbling
+dabblingly
+dabblingness
+dabby
+dabchick
+Dabih
+Dabitis
+dablet
+daboia
+daboya
+dabster
+dace
+Dacelo
+Daceloninae
+dacelonine
+dachshound
+dachshund
+Dacian
+dacite
+dacitic
+dacker
+dacoit
+dacoitage
+dacoity
+dacryadenalgia
+dacryadenitis
+dacryagogue
+dacrycystalgia
+Dacrydium
+dacryelcosis
+dacryoadenalgia
+dacryoadenitis
+dacryoblenorrhea
+dacryocele
+dacryocyst
+dacryocystalgia
+dacryocystitis
+dacryocystoblennorrhea
+dacryocystocele
+dacryocystoptosis
+dacryocystorhinostomy
+dacryocystosyringotomy
+dacryocystotome
+dacryocystotomy
+dacryohelcosis
+dacryohemorrhea
+dacryolite
+dacryolith
+dacryolithiasis
+dacryoma
+dacryon
+dacryops
+dacryopyorrhea
+dacryopyosis
+dacryosolenitis
+dacryostenosis
+dacryosyrinx
+dacryuria
+Dactyl
+dactyl
+dactylar
+dactylate
+dactylic
+dactylically
+dactylioglyph
+dactylioglyphic
+dactylioglyphist
+dactylioglyphtic
+dactylioglyphy
+dactyliographer
+dactyliographic
+dactyliography
+dactyliology
+dactyliomancy
+dactylion
+dactyliotheca
+Dactylis
+dactylist
+dactylitic
+dactylitis
+dactylogram
+dactylograph
+dactylographic
+dactylography
+dactyloid
+dactylology
+dactylomegaly
+dactylonomy
+dactylopatagium
+Dactylopius
+dactylopodite
+dactylopore
+Dactylopteridae
+Dactylopterus
+dactylorhiza
+dactyloscopic
+dactyloscopy
+dactylose
+dactylosternal
+dactylosymphysis
+dactylotheca
+dactylous
+dactylozooid
+dactylus
+Dacus
+dacyorrhea
+dad
+Dada
+dada
+Dadaism
+Dadaist
+dadap
+Dadayag
+dadder
+daddle
+daddock
+daddocky
+daddy
+daddynut
+dade
+dadenhudd
+dado
+Dadoxylon
+Dadu
+daduchus
+Dadupanthi
+dae
+Daedal
+daedal
+Daedalea
+Daedalean
+Daedalian
+Daedalic
+Daedalidae
+Daedalist
+daedaloid
+Daedalus
+daemon
+Daemonelix
+daemonic
+daemonurgist
+daemonurgy
+daemony
+daer
+daff
+daffery
+daffing
+daffish
+daffle
+daffodil
+daffodilly
+daffy
+daffydowndilly
+Dafla
+daft
+daftberry
+daftlike
+daftly
+daftness
+dag
+dagaba
+dagame
+dagassa
+Dagbamba
+Dagbane
+dagesh
+Dagestan
+dagga
+dagger
+daggerbush
+daggered
+daggerlike
+daggerproof
+daggers
+daggle
+daggletail
+daggletailed
+daggly
+daggy
+daghesh
+daglock
+Dagmar
+Dago
+dagoba
+Dagomba
+dags
+Daguerrean
+daguerreotype
+daguerreotyper
+daguerreotypic
+daguerreotypist
+daguerreotypy
+dah
+dahabeah
+Dahlia
+Dahoman
+Dahomeyan
+dahoon
+Daibutsu
+daidle
+daidly
+Daijo
+daiker
+daikon
+Dail
+Dailamite
+dailiness
+daily
+daimen
+daimiate
+daimio
+daimon
+daimonic
+daimonion
+daimonistic
+daimonology
+dain
+daincha
+dainteth
+daintify
+daintihood
+daintily
+daintiness
+daintith
+dainty
+Daira
+daira
+dairi
+dairy
+dairying
+dairymaid
+dairyman
+dairywoman
+dais
+daisied
+daisy
+daisybush
+daitya
+daiva
+dak
+daker
+Dakhini
+dakir
+Dakota
+daktylon
+daktylos
+dal
+dalar
+Dalarnian
+Dalbergia
+Dalcassian
+Dale
+dale
+Dalea
+Dalecarlian
+daleman
+daler
+dalesfolk
+dalesman
+dalespeople
+daleswoman
+daleth
+dali
+Dalibarda
+dalk
+dallack
+dalle
+dalles
+dalliance
+dallier
+dally
+dallying
+dallyingly
+Dalmania
+Dalmanites
+Dalmatian
+Dalmatic
+dalmatic
+Dalradian
+dalt
+dalteen
+Dalton
+dalton
+Daltonian
+Daltonic
+Daltonism
+Daltonist
+dam
+dama
+damage
+damageability
+damageable
+damageableness
+damageably
+damagement
+damager
+damages
+damagingly
+daman
+Damara
+Damascene
+damascene
+damascened
+damascener
+damascenine
+Damascus
+damask
+damaskeen
+damasse
+damassin
+Damayanti
+dambonitol
+dambose
+dambrod
+dame
+damenization
+damewort
+Damgalnunna
+Damia
+damiana
+Damianist
+damie
+damier
+damine
+damkjernite
+damlike
+dammar
+Dammara
+damme
+dammer
+dammish
+damn
+damnability
+damnable
+damnableness
+damnably
+damnation
+damnatory
+damned
+damner
+damnification
+damnify
+Damnii
+damning
+damningly
+damningness
+damnonians
+Damnonii
+damnous
+damnously
+Damoclean
+Damocles
+Damoetas
+damoiseau
+Damon
+Damone
+damonico
+damourite
+damp
+dampang
+damped
+dampen
+dampener
+damper
+damping
+dampish
+dampishly
+dampishness
+damply
+dampness
+dampproof
+dampproofer
+dampproofing
+dampy
+damsel
+damselfish
+damselhood
+damson
+Dan
+dan
+Dana
+Danaan
+Danagla
+Danai
+Danaid
+danaid
+Danaidae
+danaide
+Danaidean
+Danainae
+danaine
+Danais
+danaite
+Danakil
+danalite
+danburite
+dancalite
+dance
+dancer
+danceress
+dancery
+dancette
+dancing
+dancingly
+dand
+danda
+dandelion
+dander
+dandiacal
+dandiacally
+dandically
+dandification
+dandify
+dandilly
+dandily
+dandiprat
+dandizette
+dandle
+dandler
+dandling
+dandlingly
+dandruff
+dandruffy
+dandy
+dandydom
+dandyish
+dandyism
+dandyize
+dandyling
+Dane
+Daneball
+Daneflower
+Danegeld
+Danelaw
+Daneweed
+Danewort
+dang
+danger
+dangerful
+dangerfully
+dangerless
+dangerous
+dangerously
+dangerousness
+dangersome
+dangle
+dangleberry
+danglement
+dangler
+danglin
+dangling
+danglingly
+Dani
+Danian
+Danic
+danicism
+Daniel
+Daniele
+Danielic
+Danielle
+Daniglacial
+danio
+Danish
+Danism
+Danite
+Danization
+Danize
+dank
+Dankali
+dankish
+dankishness
+dankly
+dankness
+danli
+Dannebrog
+dannemorite
+danner
+Dannie
+dannock
+Danny
+danoranja
+dansant
+danseuse
+danta
+Dantean
+Dantesque
+Danthonia
+Dantist
+Dantology
+Dantomania
+danton
+Dantonesque
+Dantonist
+Dantophilist
+Dantophily
+Danube
+Danubian
+Danuri
+Danzig
+Danziger
+dao
+daoine
+dap
+Dapedium
+Dapedius
+Daphnaceae
+Daphne
+Daphnean
+Daphnephoria
+daphnetin
+Daphnia
+daphnin
+daphnioid
+Daphnis
+daphnoid
+dapicho
+dapico
+dapifer
+dapper
+dapperling
+dapperly
+dapperness
+dapple
+dappled
+dar
+darabukka
+darac
+daraf
+Darapti
+darat
+darbha
+darby
+Darbyism
+Darbyite
+Darci
+Dard
+Dardan
+dardanarius
+Dardani
+dardanium
+dardaol
+Dardic
+Dardistan
+dare
+dareall
+daredevil
+daredevilism
+daredevilry
+daredeviltry
+dareful
+Daren
+darer
+Dares
+daresay
+darg
+dargah
+darger
+Darghin
+Dargo
+dargsman
+dargue
+dari
+daribah
+daric
+Darien
+Darii
+Darin
+daring
+daringly
+daringness
+dariole
+Darius
+Darjeeling
+dark
+darken
+darkener
+darkening
+darkful
+darkhearted
+darkheartedness
+darkish
+darkishness
+darkle
+darkling
+darklings
+darkly
+darkmans
+darkness
+darkroom
+darkskin
+darksome
+darksomeness
+darky
+darling
+darlingly
+darlingness
+Darlingtonia
+darn
+darnation
+darned
+darnel
+darner
+darnex
+darning
+daroga
+daroo
+darr
+darrein
+Darrell
+Darren
+Darryl
+darshana
+Darsonval
+Darsonvalism
+darst
+dart
+Dartagnan
+dartars
+dartboard
+darter
+darting
+dartingly
+dartingness
+dartle
+dartlike
+dartman
+Dartmoor
+dartoic
+dartoid
+dartos
+dartre
+dartrose
+dartrous
+darts
+dartsman
+Darwinian
+Darwinical
+Darwinically
+Darwinism
+Darwinist
+Darwinistic
+Darwinite
+Darwinize
+Daryl
+darzee
+das
+Daschagga
+dash
+dashboard
+dashed
+dashedly
+dashee
+dasheen
+dasher
+dashing
+dashingly
+dashmaker
+Dashnak
+Dashnakist
+Dashnaktzutiun
+dashplate
+dashpot
+dashwheel
+dashy
+dasi
+Dasiphora
+dasnt
+dassie
+dassy
+dastard
+dastardize
+dastardliness
+dastardly
+dastur
+dasturi
+Dasya
+Dasyatidae
+Dasyatis
+Dasycladaceae
+dasycladaceous
+Dasylirion
+dasymeter
+dasypaedal
+dasypaedes
+dasypaedic
+Dasypeltis
+dasyphyllous
+Dasypodidae
+dasypodoid
+Dasyprocta
+Dasyproctidae
+dasyproctine
+Dasypus
+Dasystephana
+dasyure
+Dasyuridae
+dasyurine
+dasyuroid
+Dasyurus
+Dasyus
+data
+datable
+datableness
+datably
+dataria
+datary
+datch
+datcha
+date
+dateless
+datemark
+dater
+datil
+dating
+dation
+Datisca
+Datiscaceae
+datiscaceous
+datiscetin
+datiscin
+datiscoside
+Datisi
+Datism
+datival
+dative
+datively
+dativogerundial
+datolite
+datolitic
+dattock
+datum
+Datura
+daturic
+daturism
+daub
+daube
+Daubentonia
+Daubentoniidae
+dauber
+daubery
+daubing
+daubingly
+daubreeite
+daubreelite
+daubster
+dauby
+Daucus
+daud
+daughter
+daughterhood
+daughterkin
+daughterless
+daughterlike
+daughterliness
+daughterling
+daughterly
+daughtership
+Daulias
+daunch
+dauncy
+Daunii
+daunt
+daunter
+daunting
+dauntingly
+dauntingness
+dauntless
+dauntlessly
+dauntlessness
+daunton
+dauphin
+dauphine
+dauphiness
+Daur
+Dauri
+daut
+dautie
+dauw
+davach
+Davallia
+Dave
+daven
+davenport
+daver
+daverdy
+David
+Davidian
+Davidic
+Davidical
+Davidist
+davidsonite
+Daviesia
+daviesite
+davit
+davoch
+Davy
+davy
+davyne
+daw
+dawdle
+dawdler
+dawdling
+dawdlingly
+dawdy
+dawish
+dawkin
+Dawn
+dawn
+dawning
+dawnlight
+dawnlike
+dawnstreak
+dawnward
+dawny
+Dawson
+Dawsonia
+Dawsoniaceae
+dawsoniaceous
+dawsonite
+dawtet
+dawtit
+dawut
+day
+dayabhaga
+Dayakker
+dayal
+daybeam
+dayberry
+dayblush
+daybook
+daybreak
+daydawn
+daydream
+daydreamer
+daydreamy
+daydrudge
+dayflower
+dayfly
+daygoing
+dayless
+daylight
+daylit
+daylong
+dayman
+daymare
+daymark
+dayroom
+days
+dayshine
+daysman
+dayspring
+daystar
+daystreak
+daytale
+daytide
+daytime
+daytimes
+dayward
+daywork
+dayworker
+daywrit
+Daza
+daze
+dazed
+dazedly
+dazedness
+dazement
+dazingly
+dazy
+dazzle
+dazzlement
+dazzler
+dazzlingly
+de
+deacetylate
+deacetylation
+deacidification
+deacidify
+deacon
+deaconal
+deaconate
+deaconess
+deaconhood
+deaconize
+deaconry
+deaconship
+deactivate
+deactivation
+dead
+deadbeat
+deadborn
+deadcenter
+deaden
+deadener
+deadening
+deader
+deadeye
+deadfall
+deadhead
+deadheadism
+deadhearted
+deadheartedly
+deadheartedness
+deadhouse
+deading
+deadish
+deadishly
+deadishness
+deadlatch
+deadlight
+deadlily
+deadline
+deadliness
+deadlock
+deadly
+deadman
+deadmelt
+deadness
+deadpan
+deadpay
+deadtongue
+deadwood
+deadwort
+deaerate
+deaeration
+deaerator
+deaf
+deafen
+deafening
+deafeningly
+deafforest
+deafforestation
+deafish
+deafly
+deafness
+deair
+deal
+dealable
+dealate
+dealated
+dealation
+dealbate
+dealbation
+dealbuminize
+dealcoholist
+dealcoholization
+dealcoholize
+dealer
+dealerdom
+dealership
+dealfish
+dealing
+dealkalize
+dealkylate
+dealkylation
+dealt
+deambulation
+deambulatory
+deamidase
+deamidate
+deamidation
+deamidization
+deamidize
+deaminase
+deaminate
+deamination
+deaminization
+deaminize
+deammonation
+Dean
+dean
+deanathematize
+deaner
+deanery
+deaness
+deanimalize
+deanship
+deanthropomorphic
+deanthropomorphism
+deanthropomorphization
+deanthropomorphize
+deappetizing
+deaquation
+dear
+dearborn
+dearie
+dearly
+dearness
+dearomatize
+dearsenicate
+dearsenicator
+dearsenicize
+dearth
+dearthfu
+dearticulation
+dearworth
+dearworthily
+dearworthiness
+deary
+deash
+deasil
+deaspirate
+deaspiration
+deassimilation
+death
+deathbed
+deathblow
+deathday
+deathful
+deathfully
+deathfulness
+deathify
+deathin
+deathiness
+deathless
+deathlessly
+deathlessness
+deathlike
+deathliness
+deathling
+deathly
+deathroot
+deathshot
+deathsman
+deathtrap
+deathward
+deathwards
+deathwatch
+deathweed
+deathworm
+deathy
+deave
+deavely
+Deb
+deb
+debacle
+debadge
+debamboozle
+debar
+debarbarization
+debarbarize
+debark
+debarkation
+debarkment
+debarment
+debarrance
+debarrass
+debarration
+debase
+debasedness
+debasement
+debaser
+debasingly
+debatable
+debate
+debateful
+debatefully
+debatement
+debater
+debating
+debatingly
+debauch
+debauched
+debauchedly
+debauchedness
+debauchee
+debaucher
+debauchery
+debauchment
+Debbie
+Debby
+debby
+debeige
+debellate
+debellation
+debellator
+deben
+debenture
+debentured
+debenzolize
+Debi
+debile
+debilissima
+debilitant
+debilitate
+debilitated
+debilitation
+debilitative
+debility
+debind
+debit
+debiteuse
+debituminization
+debituminize
+deblaterate
+deblateration
+deboistly
+deboistness
+debonair
+debonaire
+debonairity
+debonairly
+debonairness
+debonnaire
+Deborah
+debord
+debordment
+debosh
+deboshed
+debouch
+debouchment
+debride
+debrief
+debris
+debrominate
+debromination
+debruise
+debt
+debtee
+debtful
+debtless
+debtor
+debtorship
+debullition
+debunk
+debunker
+debunkment
+debus
+Debussyan
+Debussyanize
+debut
+debutant
+debutante
+decachord
+decad
+decadactylous
+decadal
+decadally
+decadarch
+decadarchy
+decadary
+decadation
+decade
+decadence
+decadency
+decadent
+decadentism
+decadently
+decadescent
+decadianome
+decadic
+decadist
+decadrachm
+decadrachma
+decaesarize
+decaffeinate
+decaffeinize
+decafid
+decagon
+decagonal
+decagram
+decagramme
+decahedral
+decahedron
+decahydrate
+decahydrated
+decahydronaphthalene
+Decaisnea
+decal
+decalcification
+decalcifier
+decalcify
+decalcomania
+decalcomaniac
+decalescence
+decalescent
+Decalin
+decaliter
+decalitre
+decalobate
+Decalogist
+Decalogue
+decalvant
+decalvation
+decameral
+Decameron
+Decameronic
+decamerous
+decameter
+decametre
+decamp
+decampment
+decan
+decanal
+decanally
+decanate
+decane
+decangular
+decani
+decanically
+decannulation
+decanonization
+decanonize
+decant
+decantate
+decantation
+decanter
+decantherous
+decap
+decapetalous
+decaphyllous
+decapitable
+decapitalization
+decapitalize
+decapitate
+decapitation
+decapitator
+decapod
+Decapoda
+decapodal
+decapodan
+decapodiform
+decapodous
+decapper
+decapsulate
+decapsulation
+decarbonate
+decarbonator
+decarbonization
+decarbonize
+decarbonized
+decarbonizer
+decarboxylate
+decarboxylation
+decarboxylization
+decarboxylize
+decarburation
+decarburization
+decarburize
+decarch
+decarchy
+decardinalize
+decare
+decarhinus
+decarnate
+decarnated
+decart
+decasemic
+decasepalous
+decaspermal
+decaspermous
+decast
+decastellate
+decastere
+decastich
+decastyle
+decasualization
+decasualize
+decasyllabic
+decasyllable
+decasyllabon
+decate
+decathlon
+decatholicize
+decatize
+decatizer
+decatoic
+decator
+decatyl
+decaudate
+decaudation
+decay
+decayable
+decayed
+decayedness
+decayer
+decayless
+decease
+deceased
+decedent
+deceit
+deceitful
+deceitfully
+deceitfulness
+deceivability
+deceivable
+deceivableness
+deceivably
+deceive
+deceiver
+deceiving
+deceivingly
+decelerate
+deceleration
+decelerator
+decelerometer
+December
+Decemberish
+Decemberly
+Decembrist
+decemcostate
+decemdentate
+decemfid
+decemflorous
+decemfoliate
+decemfoliolate
+decemjugate
+decemlocular
+decempartite
+decempeda
+decempedal
+decempedate
+decempennate
+decemplex
+decemplicate
+decempunctate
+decemstriate
+decemuiri
+decemvir
+decemviral
+decemvirate
+decemvirship
+decenary
+decence
+decency
+decene
+decennal
+decennary
+decennia
+decenniad
+decennial
+decennially
+decennium
+decennoval
+decent
+decenter
+decently
+decentness
+decentralism
+decentralist
+decentralization
+decentralize
+decentration
+decentre
+decenyl
+decephalization
+deceptibility
+deceptible
+deception
+deceptious
+deceptiously
+deceptitious
+deceptive
+deceptively
+deceptiveness
+deceptivity
+decerebrate
+decerebration
+decerebrize
+decern
+decerniture
+decernment
+decess
+decession
+dechemicalization
+dechemicalize
+dechenite
+Dechlog
+dechlore
+dechlorination
+dechoralize
+dechristianization
+dechristianize
+Decian
+deciare
+deciatine
+decibel
+deciceronize
+decidable
+decide
+decided
+decidedly
+decidedness
+decider
+decidingly
+decidua
+decidual
+deciduary
+Deciduata
+deciduate
+deciduitis
+deciduoma
+deciduous
+deciduously
+deciduousness
+decigram
+decigramme
+decil
+decile
+deciliter
+decillion
+decillionth
+decima
+decimal
+decimalism
+decimalist
+decimalization
+decimalize
+decimally
+decimate
+decimation
+decimator
+decimestrial
+decimeter
+decimolar
+decimole
+decimosexto
+Decimus
+decinormal
+decipher
+decipherability
+decipherable
+decipherably
+decipherer
+decipherment
+decipium
+decipolar
+decision
+decisional
+decisive
+decisively
+decisiveness
+decistere
+decitizenize
+Decius
+decivilization
+decivilize
+deck
+decke
+decked
+deckel
+decker
+deckhead
+deckhouse
+deckie
+decking
+deckle
+deckload
+deckswabber
+declaim
+declaimant
+declaimer
+declamation
+declamatoriness
+declamatory
+declarable
+declarant
+declaration
+declarative
+declaratively
+declarator
+declaratorily
+declaratory
+declare
+declared
+declaredly
+declaredness
+declarer
+declass
+declassicize
+declassify
+declension
+declensional
+declensionally
+declericalize
+declimatize
+declinable
+declinal
+declinate
+declination
+declinational
+declinatory
+declinature
+decline
+declined
+declinedness
+decliner
+declinograph
+declinometer
+declivate
+declive
+declivitous
+declivity
+declivous
+declutch
+decoagulate
+decoagulation
+decoat
+decocainize
+decoct
+decoctible
+decoction
+decoctive
+decoctum
+decode
+Decodon
+decohere
+decoherence
+decoherer
+decohesion
+decoic
+decoke
+decollate
+decollated
+decollation
+decollator
+decolletage
+decollete
+decolor
+decolorant
+decolorate
+decoloration
+decolorimeter
+decolorization
+decolorize
+decolorizer
+decolour
+decommission
+decompensate
+decompensation
+decomplex
+decomponible
+decomposability
+decomposable
+decompose
+decomposed
+decomposer
+decomposite
+decomposition
+decomposure
+decompound
+decompoundable
+decompoundly
+decompress
+decompressing
+decompression
+decompressive
+deconcatenate
+deconcentrate
+deconcentration
+deconcentrator
+decongestive
+deconsecrate
+deconsecration
+deconsider
+deconsideration
+decontaminate
+decontamination
+decontrol
+deconventionalize
+decopperization
+decopperize
+decorability
+decorable
+decorably
+decorament
+decorate
+decorated
+decoration
+decorationist
+decorative
+decoratively
+decorativeness
+decorator
+decoratory
+decorist
+decorous
+decorously
+decorousness
+decorrugative
+decorticate
+decortication
+decorticator
+decorticosis
+decorum
+decostate
+decoy
+decoyer
+decoyman
+decrassify
+decream
+decrease
+decreaseless
+decreasing
+decreasingly
+decreation
+decreative
+decree
+decreeable
+decreement
+decreer
+decreet
+decrement
+decrementless
+decremeter
+decrepit
+decrepitate
+decrepitation
+decrepitly
+decrepitness
+decrepitude
+decrescence
+decrescendo
+decrescent
+decretal
+decretalist
+decrete
+decretist
+decretive
+decretively
+decretorial
+decretorily
+decretory
+decretum
+decrew
+decrial
+decried
+decrier
+decrown
+decrudescence
+decrustation
+decry
+decrystallization
+decubital
+decubitus
+decultivate
+deculturate
+decuman
+decumana
+decumanus
+Decumaria
+decumary
+decumbence
+decumbency
+decumbent
+decumbently
+decumbiture
+decuple
+decuplet
+decuria
+decurion
+decurionate
+decurrence
+decurrency
+decurrent
+decurrently
+decurring
+decursion
+decursive
+decursively
+decurtate
+decurvation
+decurvature
+decurve
+decury
+decus
+decussate
+decussated
+decussately
+decussation
+decussis
+decussorium
+decyl
+decylene
+decylenic
+decylic
+decyne
+Dedan
+Dedanim
+Dedanite
+dedecorate
+dedecoration
+dedecorous
+dedendum
+dedentition
+dedicant
+dedicate
+dedicatee
+dedication
+dedicational
+dedicative
+dedicator
+dedicatorial
+dedicatorily
+dedicatory
+dedicature
+dedifferentiate
+dedifferentiation
+dedimus
+deditician
+dediticiancy
+dedition
+dedo
+dedoggerelize
+dedogmatize
+dedolation
+deduce
+deducement
+deducibility
+deducible
+deducibleness
+deducibly
+deducive
+deduct
+deductible
+deduction
+deductive
+deductively
+deductory
+deduplication
+dee
+deed
+deedbox
+deedeed
+deedful
+deedfully
+deedily
+deediness
+deedless
+deedy
+deem
+deemer
+deemie
+deemster
+deemstership
+deep
+deepen
+deepener
+deepening
+deepeningly
+Deepfreeze
+deeping
+deepish
+deeplier
+deeply
+deepmost
+deepmouthed
+deepness
+deepsome
+deepwater
+deepwaterman
+deer
+deerberry
+deerdog
+deerdrive
+deerfood
+deerhair
+deerherd
+deerhorn
+deerhound
+deerlet
+deermeat
+deerskin
+deerstalker
+deerstalking
+deerstand
+deerstealer
+deertongue
+deerweed
+deerwood
+deeryard
+deevey
+deevilick
+deface
+defaceable
+defacement
+defacer
+defacing
+defacingly
+defalcate
+defalcation
+defalcator
+defalk
+defamation
+defamatory
+defame
+defamed
+defamer
+defamingly
+defassa
+defat
+default
+defaultant
+defaulter
+defaultless
+defaulture
+defeasance
+defeasanced
+defease
+defeasibility
+defeasible
+defeasibleness
+defeat
+defeater
+defeatism
+defeatist
+defeatment
+defeature
+defecant
+defecate
+defecation
+defecator
+defect
+defectibility
+defectible
+defection
+defectionist
+defectious
+defective
+defectively
+defectiveness
+defectless
+defectology
+defector
+defectoscope
+defedation
+defeminize
+defence
+defend
+defendable
+defendant
+defender
+defendress
+defenestration
+defensative
+defense
+defenseless
+defenselessly
+defenselessness
+defensibility
+defensible
+defensibleness
+defensibly
+defension
+defensive
+defensively
+defensiveness
+defensor
+defensorship
+defensory
+defer
+deferable
+deference
+deferent
+deferentectomy
+deferential
+deferentiality
+deferentially
+deferentitis
+deferment
+deferrable
+deferral
+deferred
+deferrer
+deferrization
+deferrize
+defervesce
+defervescence
+defervescent
+defeudalize
+defiable
+defial
+defiance
+defiant
+defiantly
+defiantness
+defiber
+defibrinate
+defibrination
+defibrinize
+deficience
+deficiency
+deficient
+deficiently
+deficit
+defier
+defiguration
+defilade
+defile
+defiled
+defiledness
+defilement
+defiler
+defiliation
+defiling
+defilingly
+definability
+definable
+definably
+define
+defined
+definedly
+definement
+definer
+definiendum
+definiens
+definite
+definitely
+definiteness
+definition
+definitional
+definitiones
+definitive
+definitively
+definitiveness
+definitization
+definitize
+definitor
+definitude
+deflagrability
+deflagrable
+deflagrate
+deflagration
+deflagrator
+deflate
+deflation
+deflationary
+deflationist
+deflator
+deflect
+deflectable
+deflected
+deflection
+deflectionization
+deflectionize
+deflective
+deflectometer
+deflector
+deflesh
+deflex
+deflexibility
+deflexible
+deflexion
+deflexure
+deflocculant
+deflocculate
+deflocculation
+deflocculator
+deflorate
+defloration
+deflorescence
+deflower
+deflowerer
+defluent
+defluous
+defluvium
+defluxion
+defoedation
+defog
+defoliage
+defoliate
+defoliated
+defoliation
+defoliator
+deforce
+deforcement
+deforceor
+deforcer
+deforciant
+deforest
+deforestation
+deforester
+deform
+deformability
+deformable
+deformalize
+deformation
+deformational
+deformative
+deformed
+deformedly
+deformedness
+deformer
+deformeter
+deformism
+deformity
+defortify
+defoul
+defraud
+defraudation
+defrauder
+defraudment
+defray
+defrayable
+defrayal
+defrayer
+defrayment
+defreeze
+defrication
+defrock
+defrost
+defroster
+deft
+defterdar
+deftly
+deftness
+defunct
+defunction
+defunctionalization
+defunctionalize
+defunctness
+defuse
+defusion
+defy
+defyingly
+deg
+deganglionate
+degarnish
+degas
+degasification
+degasifier
+degasify
+degasser
+degauss
+degelatinize
+degelation
+degeneracy
+degeneralize
+degenerate
+degenerately
+degenerateness
+degeneration
+degenerationist
+degenerative
+degenerescence
+degenerescent
+degentilize
+degerm
+degerminate
+degerminator
+degged
+degger
+deglaciation
+deglaze
+deglutinate
+deglutination
+deglutition
+deglutitious
+deglutitive
+deglutitory
+deglycerin
+deglycerine
+degorge
+degradable
+degradand
+degradation
+degradational
+degradative
+degrade
+degraded
+degradedly
+degradedness
+degradement
+degrader
+degrading
+degradingly
+degradingness
+degraduate
+degraduation
+degrain
+degrease
+degreaser
+degree
+degreeless
+degreewise
+degression
+degressive
+degressively
+degu
+Deguelia
+deguelin
+degum
+degummer
+degust
+degustation
+dehair
+dehairer
+Dehaites
+deheathenize
+dehematize
+dehepatize
+Dehgan
+dehisce
+dehiscence
+dehiscent
+dehistoricize
+Dehkan
+dehnstufe
+dehonestate
+dehonestation
+dehorn
+dehorner
+dehors
+dehort
+dehortation
+dehortative
+dehortatory
+dehorter
+dehull
+dehumanization
+dehumanize
+dehumidification
+dehumidifier
+dehumidify
+dehusk
+Dehwar
+dehydrant
+dehydrase
+dehydrate
+dehydration
+dehydrator
+dehydroascorbic
+dehydrocorydaline
+dehydrofreezing
+dehydrogenase
+dehydrogenate
+dehydrogenation
+dehydrogenization
+dehydrogenize
+dehydromucic
+dehydrosparteine
+dehypnotize
+deice
+deicer
+deicidal
+deicide
+deictic
+deictical
+deictically
+deidealize
+Deidesheimer
+deific
+deifical
+deification
+deificatory
+deifier
+deiform
+deiformity
+deify
+deign
+Deimos
+deincrustant
+deindividualization
+deindividualize
+deindividuate
+deindustrialization
+deindustrialize
+deink
+Deino
+Deinocephalia
+Deinoceras
+Deinodon
+Deinodontidae
+deinos
+Deinosauria
+Deinotherium
+deinsularize
+deintellectualization
+deintellectualize
+deionize
+Deipara
+deiparous
+Deiphobus
+deipnodiplomatic
+deipnophobia
+deipnosophism
+deipnosophist
+deipnosophistic
+deipotent
+Deirdre
+deiseal
+deisidaimonia
+deism
+deist
+deistic
+deistical
+deistically
+deisticalness
+deity
+deityship
+deject
+dejecta
+dejected
+dejectedly
+dejectedness
+dejectile
+dejection
+dejectly
+dejectory
+dejecture
+dejerate
+dejeration
+dejerator
+dejeune
+dejeuner
+dejunkerize
+Dekabrist
+dekaparsec
+dekapode
+dekko
+dekle
+deknight
+Del
+delabialization
+delabialize
+delacrimation
+delactation
+delaine
+delaminate
+delamination
+delapse
+delapsion
+delate
+delater
+delatinization
+delatinize
+delation
+delator
+delatorian
+Delaware
+Delawarean
+delawn
+delay
+delayable
+delayage
+delayer
+delayful
+delaying
+delayingly
+Delbert
+dele
+delead
+delectability
+delectable
+delectableness
+delectably
+delectate
+delectation
+delectus
+delegable
+delegacy
+delegalize
+delegant
+delegate
+delegatee
+delegateship
+delegation
+delegative
+delegator
+delegatory
+delenda
+Delesseria
+Delesseriaceae
+delesseriaceous
+delete
+deleterious
+deleteriously
+deleteriousness
+deletion
+deletive
+deletory
+delf
+delft
+delftware
+Delhi
+Delia
+Delian
+deliberalization
+deliberalize
+deliberant
+deliberate
+deliberately
+deliberateness
+deliberation
+deliberative
+deliberatively
+deliberativeness
+deliberator
+delible
+delicacy
+delicate
+delicately
+delicateness
+delicatesse
+delicatessen
+delicense
+Delichon
+delicioso
+Delicious
+delicious
+deliciously
+deliciousness
+delict
+delictum
+deligated
+deligation
+delight
+delightable
+delighted
+delightedly
+delightedness
+delighter
+delightful
+delightfully
+delightfulness
+delighting
+delightingly
+delightless
+delightsome
+delightsomely
+delightsomeness
+delignate
+delignification
+Delilah
+delime
+delimit
+delimitate
+delimitation
+delimitative
+delimiter
+delimitize
+delineable
+delineament
+delineate
+delineation
+delineative
+delineator
+delineatory
+delineature
+delinquence
+delinquency
+delinquent
+delinquently
+delint
+delinter
+deliquesce
+deliquescence
+deliquescent
+deliquium
+deliracy
+delirament
+deliration
+deliriant
+delirifacient
+delirious
+deliriously
+deliriousness
+delirium
+delitescence
+delitescency
+delitescent
+deliver
+deliverable
+deliverance
+deliverer
+deliveress
+deliveror
+delivery
+deliveryman
+dell
+Della
+dellenite
+Delobranchiata
+delocalization
+delocalize
+delomorphic
+delomorphous
+deloul
+delouse
+delphacid
+Delphacidae
+Delphian
+Delphin
+Delphinapterus
+delphine
+delphinic
+Delphinid
+Delphinidae
+delphinin
+delphinine
+delphinite
+Delphinium
+Delphinius
+delphinoid
+Delphinoidea
+delphinoidine
+Delphinus
+delphocurarine
+Delsarte
+Delsartean
+Delsartian
+Delta
+delta
+deltafication
+deltaic
+deltal
+deltarium
+deltation
+delthyrial
+delthyrium
+deltic
+deltidial
+deltidium
+deltiology
+deltohedron
+deltoid
+deltoidal
+delubrum
+deludable
+delude
+deluder
+deludher
+deluding
+deludingly
+deluge
+deluminize
+delundung
+delusion
+delusional
+delusionist
+delusive
+delusively
+delusiveness
+delusory
+deluster
+deluxe
+delve
+delver
+demagnetizable
+demagnetization
+demagnetize
+demagnetizer
+demagog
+demagogic
+demagogical
+demagogically
+demagogism
+demagogue
+demagoguery
+demagogy
+demal
+demand
+demandable
+demandant
+demander
+demanding
+demandingly
+demanganization
+demanganize
+demantoid
+demarcate
+demarcation
+demarcator
+demarch
+demarchy
+demargarinate
+demark
+demarkation
+demast
+dematerialization
+dematerialize
+Dematiaceae
+dematiaceous
+deme
+demean
+demeanor
+demegoric
+demency
+dement
+dementate
+dementation
+demented
+dementedly
+dementedness
+dementholize
+dementia
+demephitize
+demerit
+demeritorious
+demeritoriously
+Demerol
+demersal
+demersed
+demersion
+demesman
+demesmerize
+demesne
+demesnial
+demetallize
+demethylate
+demethylation
+Demetrian
+demetricize
+demi
+demiadult
+demiangel
+demiassignation
+demiatheism
+demiatheist
+demibarrel
+demibastion
+demibastioned
+demibath
+demibeast
+demibelt
+demibob
+demibombard
+demibrassart
+demibrigade
+demibrute
+demibuckram
+demicadence
+demicannon
+demicanon
+demicanton
+demicaponier
+demichamfron
+demicircle
+demicircular
+demicivilized
+demicolumn
+demicoronal
+demicritic
+demicuirass
+demiculverin
+demicylinder
+demicylindrical
+demidandiprat
+demideify
+demideity
+demidevil
+demidigested
+demidistance
+demiditone
+demidoctor
+demidog
+demidolmen
+demidome
+demieagle
+demifarthing
+demifigure
+demiflouncing
+demifusion
+demigardebras
+demigauntlet
+demigentleman
+demiglobe
+demigod
+demigoddess
+demigoddessship
+demigorge
+demigriffin
+demigroat
+demihag
+demihearse
+demiheavenly
+demihigh
+demihogshead
+demihorse
+demihuman
+demijambe
+demijohn
+demikindred
+demiking
+demilance
+demilancer
+demilawyer
+demilegato
+demilion
+demilitarization
+demilitarize
+demiliterate
+demilune
+demiluster
+demilustre
+demiman
+demimark
+demimentoniere
+demimetope
+demimillionaire
+demimondaine
+demimonde
+demimonk
+deminatured
+demineralization
+demineralize
+deminude
+deminudity
+demioctagonal
+demioctangular
+demiofficial
+demiorbit
+demiourgoi
+demiowl
+demiox
+demipagan
+demiparallel
+demipauldron
+demipectinate
+demipesade
+demipike
+demipillar
+demipique
+demiplacate
+demiplate
+demipomada
+demipremise
+demipremiss
+demipriest
+demipronation
+demipuppet
+demiquaver
+demiracle
+demiram
+demirelief
+demirep
+demirevetment
+demirhumb
+demirilievo
+demirobe
+demisability
+demisable
+demisacrilege
+demisang
+demisangue
+demisavage
+demise
+demiseason
+demisecond
+demisemiquaver
+demisemitone
+demisheath
+demishirt
+demisovereign
+demisphere
+demiss
+demission
+demissionary
+demissly
+demissness
+demissory
+demisuit
+demit
+demitasse
+demitint
+demitoilet
+demitone
+demitrain
+demitranslucence
+demitube
+demiturned
+demiurge
+demiurgeous
+demiurgic
+demiurgical
+demiurgically
+demiurgism
+demivambrace
+demivirgin
+demivoice
+demivol
+demivolt
+demivotary
+demiwivern
+demiwolf
+demnition
+demob
+demobilization
+demobilize
+democracy
+democrat
+democratian
+democratic
+democratical
+democratically
+democratifiable
+democratism
+democratist
+democratization
+democratize
+demodectic
+demoded
+Demodex
+Demodicidae
+Demodocus
+demodulation
+demodulator
+demogenic
+Demogorgon
+demographer
+demographic
+demographical
+demographically
+demographist
+demography
+demoid
+demoiselle
+demolish
+demolisher
+demolishment
+demolition
+demolitionary
+demolitionist
+demological
+demology
+Demon
+demon
+demonastery
+demoness
+demonetization
+demonetize
+demoniac
+demoniacal
+demoniacally
+demoniacism
+demonial
+demonian
+demonianism
+demoniast
+demonic
+demonical
+demonifuge
+demonish
+demonism
+demonist
+demonize
+demonkind
+demonland
+demonlike
+demonocracy
+demonograph
+demonographer
+demonography
+demonolater
+demonolatrous
+demonolatrously
+demonolatry
+demonologer
+demonologic
+demonological
+demonologically
+demonologist
+demonology
+demonomancy
+demonophobia
+demonry
+demonship
+demonstrability
+demonstrable
+demonstrableness
+demonstrably
+demonstrant
+demonstratable
+demonstrate
+demonstratedly
+demonstrater
+demonstration
+demonstrational
+demonstrationist
+demonstrative
+demonstratively
+demonstrativeness
+demonstrator
+demonstratorship
+demonstratory
+demophil
+demophilism
+demophobe
+Demophon
+Demophoon
+demoralization
+demoralize
+demoralizer
+demorphinization
+demorphism
+demos
+Demospongiae
+Demosthenean
+Demosthenic
+demote
+demotic
+demotics
+demotion
+demotist
+demount
+demountability
+demountable
+dempster
+demulce
+demulcent
+demulsibility
+demulsify
+demulsion
+demure
+demurely
+demureness
+demurity
+demurrable
+demurrage
+demurral
+demurrant
+demurrer
+demurring
+demurringly
+demutization
+demy
+demyship
+den
+denarcotization
+denarcotize
+denarius
+denaro
+denary
+denat
+denationalization
+denationalize
+denaturalization
+denaturalize
+denaturant
+denaturate
+denaturation
+denature
+denaturization
+denaturize
+denaturizer
+denazify
+denda
+dendrachate
+dendral
+Dendraspis
+dendraxon
+dendric
+dendriform
+dendrite
+Dendrites
+dendritic
+dendritical
+dendritically
+dendritiform
+Dendrium
+Dendrobates
+Dendrobatinae
+dendrobe
+Dendrobium
+Dendrocalamus
+Dendroceratina
+dendroceratine
+Dendrochirota
+dendrochronological
+dendrochronologist
+dendrochronology
+dendroclastic
+Dendrocoela
+dendrocoelan
+dendrocoele
+dendrocoelous
+Dendrocolaptidae
+dendrocolaptine
+Dendroctonus
+Dendrocygna
+dendrodont
+Dendrodus
+Dendroeca
+Dendrogaea
+Dendrogaean
+dendrograph
+dendrography
+Dendrohyrax
+Dendroica
+dendroid
+dendroidal
+Dendroidea
+Dendrolagus
+dendrolatry
+Dendrolene
+dendrolite
+dendrologic
+dendrological
+dendrologist
+dendrologous
+dendrology
+Dendromecon
+dendrometer
+dendron
+dendrophil
+dendrophile
+dendrophilous
+Dendropogon
+Dene
+dene
+Deneb
+Denebola
+denegate
+denegation
+denehole
+denervate
+denervation
+deneutralization
+dengue
+deniable
+denial
+denicotinize
+denier
+denierage
+denierer
+denigrate
+denigration
+denigrator
+denim
+Denis
+denitrate
+denitration
+denitrator
+denitrificant
+denitrification
+denitrificator
+denitrifier
+denitrify
+denitrize
+denization
+denizen
+denizenation
+denizenize
+denizenship
+Denmark
+dennet
+Dennis
+Dennstaedtia
+denominable
+denominate
+denomination
+denominational
+denominationalism
+denominationalist
+denominationalize
+denominationally
+denominative
+denominatively
+denominator
+denotable
+denotation
+denotative
+denotatively
+denotativeness
+denotatum
+denote
+denotement
+denotive
+denouement
+denounce
+denouncement
+denouncer
+dense
+densely
+densen
+denseness
+denshare
+densher
+denshire
+densification
+densifier
+densify
+densimeter
+densimetric
+densimetrically
+densimetry
+densitometer
+density
+dent
+dentagra
+dental
+dentale
+dentalgia
+Dentaliidae
+dentalism
+dentality
+Dentalium
+dentalization
+dentalize
+dentally
+dentaphone
+Dentaria
+dentary
+dentata
+dentate
+dentated
+dentately
+dentation
+dentatoangulate
+dentatocillitate
+dentatocostate
+dentatocrenate
+dentatoserrate
+dentatosetaceous
+dentatosinuate
+dentel
+dentelated
+dentelle
+dentelure
+denter
+dentex
+dentical
+denticate
+Denticeti
+denticle
+denticular
+denticulate
+denticulately
+denticulation
+denticule
+dentiferous
+dentification
+dentiform
+dentifrice
+dentigerous
+dentil
+dentilabial
+dentilated
+dentilation
+dentile
+dentilingual
+dentiloquist
+dentiloquy
+dentimeter
+dentin
+dentinal
+dentinalgia
+dentinasal
+dentine
+dentinitis
+dentinoblast
+dentinocemental
+dentinoid
+dentinoma
+dentiparous
+dentiphone
+dentiroster
+dentirostral
+dentirostrate
+Dentirostres
+dentiscalp
+dentist
+dentistic
+dentistical
+dentistry
+dentition
+dentoid
+dentolabial
+dentolingual
+dentonasal
+dentosurgical
+dentural
+denture
+denty
+denucleate
+denudant
+denudate
+denudation
+denudative
+denude
+denuder
+denumerable
+denumerably
+denumeral
+denumerant
+denumerantive
+denumeration
+denumerative
+denunciable
+denunciant
+denunciate
+denunciation
+denunciative
+denunciatively
+denunciator
+denunciatory
+denutrition
+deny
+denyingly
+deobstruct
+deobstruent
+deoccidentalize
+deoculate
+deodand
+deodara
+deodorant
+deodorization
+deodorize
+deodorizer
+deontological
+deontologist
+deontology
+deoperculate
+deoppilant
+deoppilate
+deoppilation
+deoppilative
+deordination
+deorganization
+deorganize
+deorientalize
+deorsumvergence
+deorsumversion
+deorusumduction
+deossification
+deossify
+deota
+deoxidant
+deoxidate
+deoxidation
+deoxidative
+deoxidator
+deoxidization
+deoxidize
+deoxidizer
+deoxygenate
+deoxygenation
+deoxygenization
+deozonization
+deozonize
+deozonizer
+depa
+depaganize
+depaint
+depancreatization
+depancreatize
+depark
+deparliament
+depart
+departed
+departer
+departisanize
+departition
+department
+departmental
+departmentalism
+departmentalization
+departmentalize
+departmentally
+departmentization
+departmentize
+departure
+depas
+depascent
+depass
+depasturable
+depasturage
+depasturation
+depasture
+depatriate
+depauperate
+depauperation
+depauperization
+depauperize
+depencil
+depend
+dependability
+dependable
+dependableness
+dependably
+dependence
+dependency
+dependent
+dependently
+depender
+depending
+dependingly
+depeople
+deperdite
+deperditely
+deperition
+depersonalization
+depersonalize
+depersonize
+depetalize
+depeter
+depetticoat
+dephase
+dephilosophize
+dephlegmate
+dephlegmation
+dephlegmatize
+dephlegmator
+dephlegmatory
+dephlegmedness
+dephlogisticate
+dephlogisticated
+dephlogistication
+dephosphorization
+dephosphorize
+dephysicalization
+dephysicalize
+depickle
+depict
+depicter
+depiction
+depictive
+depicture
+depiedmontize
+depigment
+depigmentate
+depigmentation
+depigmentize
+depilate
+depilation
+depilator
+depilatory
+depilitant
+depilous
+deplaceable
+deplane
+deplasmolysis
+deplaster
+deplenish
+deplete
+deplethoric
+depletion
+depletive
+depletory
+deploitation
+deplorability
+deplorable
+deplorableness
+deplorably
+deploration
+deplore
+deplored
+deploredly
+deploredness
+deplorer
+deploringly
+deploy
+deployment
+deplumate
+deplumated
+deplumation
+deplume
+deplump
+depoetize
+depoh
+depolarization
+depolarize
+depolarizer
+depolish
+depolishing
+depolymerization
+depolymerize
+depone
+deponent
+depopularize
+depopulate
+depopulation
+depopulative
+depopulator
+deport
+deportable
+deportation
+deportee
+deporter
+deportment
+deposable
+deposal
+depose
+deposer
+deposit
+depositary
+depositation
+depositee
+deposition
+depositional
+depositive
+depositor
+depository
+depositum
+depositure
+depot
+depotentiate
+depotentiation
+depravation
+deprave
+depraved
+depravedly
+depravedness
+depraver
+depravingly
+depravity
+deprecable
+deprecate
+deprecatingly
+deprecation
+deprecative
+deprecator
+deprecatorily
+deprecatoriness
+deprecatory
+depreciable
+depreciant
+depreciate
+depreciatingly
+depreciation
+depreciative
+depreciatively
+depreciator
+depreciatoriness
+depreciatory
+depredate
+depredation
+depredationist
+depredator
+depredatory
+depress
+depressant
+depressed
+depressibility
+depressible
+depressing
+depressingly
+depressingness
+depression
+depressive
+depressively
+depressiveness
+depressomotor
+depressor
+depreter
+deprint
+depriorize
+deprivable
+deprival
+deprivate
+deprivation
+deprivative
+deprive
+deprivement
+depriver
+deprovincialize
+depside
+depth
+depthen
+depthing
+depthless
+depthometer
+depthwise
+depullulation
+depurant
+depurate
+depuration
+depurative
+depurator
+depuratory
+depursement
+deputable
+deputation
+deputational
+deputationist
+deputationize
+deputative
+deputatively
+deputator
+depute
+deputize
+deputy
+deputyship
+dequeen
+derabbinize
+deracialize
+deracinate
+deracination
+deradelphus
+deradenitis
+deradenoncus
+derah
+deraign
+derail
+derailer
+derailment
+derange
+derangeable
+deranged
+derangement
+deranger
+derat
+derate
+derater
+derationalization
+derationalize
+deratization
+deray
+Derbend
+Derby
+derby
+derbylite
+dere
+deregister
+deregulationize
+dereism
+dereistic
+dereistically
+Derek
+derelict
+dereliction
+derelictly
+derelictness
+dereligion
+dereligionize
+derencephalocele
+derencephalus
+deresinate
+deresinize
+deric
+deride
+derider
+deridingly
+Deringa
+Deripia
+derisible
+derision
+derisive
+derisively
+derisiveness
+derisory
+derivability
+derivable
+derivably
+derival
+derivant
+derivate
+derivately
+derivation
+derivational
+derivationally
+derivationist
+derivatist
+derivative
+derivatively
+derivativeness
+derive
+derived
+derivedly
+derivedness
+deriver
+derm
+derma
+Dermacentor
+dermad
+dermahemia
+dermal
+dermalgia
+dermalith
+dermamyiasis
+dermanaplasty
+dermapostasis
+Dermaptera
+dermapteran
+dermapterous
+dermaskeleton
+dermasurgery
+dermatagra
+dermatalgia
+dermataneuria
+dermatatrophia
+dermatauxe
+dermathemia
+dermatic
+dermatine
+dermatitis
+Dermatobia
+dermatocele
+dermatocellulitis
+dermatoconiosis
+Dermatocoptes
+dermatocoptic
+dermatocyst
+dermatodynia
+dermatogen
+dermatoglyphics
+dermatograph
+dermatographia
+dermatography
+dermatoheteroplasty
+dermatoid
+dermatological
+dermatologist
+dermatology
+dermatolysis
+dermatoma
+dermatome
+dermatomere
+dermatomic
+dermatomuscular
+dermatomyces
+dermatomycosis
+dermatomyoma
+dermatoneural
+dermatoneurology
+dermatoneurosis
+dermatonosus
+dermatopathia
+dermatopathic
+dermatopathology
+dermatopathophobia
+Dermatophagus
+dermatophobia
+dermatophone
+dermatophony
+dermatophyte
+dermatophytic
+dermatophytosis
+dermatoplasm
+dermatoplast
+dermatoplastic
+dermatoplasty
+dermatopnagic
+dermatopsy
+Dermatoptera
+dermatoptic
+dermatorrhagia
+dermatorrhea
+dermatorrhoea
+dermatosclerosis
+dermatoscopy
+dermatosis
+dermatoskeleton
+dermatotherapy
+dermatotome
+dermatotomy
+dermatotropic
+dermatoxerasia
+dermatozoon
+dermatozoonosis
+dermatrophia
+dermatrophy
+dermenchysis
+Dermestes
+dermestid
+Dermestidae
+dermestoid
+dermic
+dermis
+dermitis
+dermoblast
+Dermobranchia
+dermobranchiata
+dermobranchiate
+Dermochelys
+dermochrome
+dermococcus
+dermogastric
+dermographia
+dermographic
+dermographism
+dermography
+dermohemal
+dermohemia
+dermohumeral
+dermoid
+dermoidal
+dermoidectomy
+dermol
+dermolysis
+dermomuscular
+dermomycosis
+dermoneural
+dermoneurosis
+dermonosology
+dermoosseous
+dermoossification
+dermopathic
+dermopathy
+dermophlebitis
+dermophobe
+dermophyte
+dermophytic
+dermoplasty
+Dermoptera
+dermopteran
+dermopterous
+dermoreaction
+Dermorhynchi
+dermorhynchous
+dermosclerite
+dermoskeletal
+dermoskeleton
+dermostenosis
+dermostosis
+dermosynovitis
+dermotropic
+dermovaccine
+dermutation
+dern
+dernier
+derodidymus
+derogate
+derogately
+derogation
+derogative
+derogatively
+derogator
+derogatorily
+derogatoriness
+derogatory
+Derotrema
+Derotremata
+derotremate
+derotrematous
+derotreme
+derout
+Derrick
+derrick
+derricking
+derrickman
+derride
+derries
+derringer
+Derris
+derry
+dertrotheca
+dertrum
+deruinate
+deruralize
+derust
+dervish
+dervishhood
+dervishism
+dervishlike
+desaccharification
+desacralization
+desacralize
+desalt
+desamidization
+desand
+desaturate
+desaturation
+desaurin
+descale
+descant
+descanter
+descantist
+descend
+descendable
+descendance
+descendant
+descendence
+descendent
+descendental
+descendentalism
+descendentalist
+descendentalistic
+descender
+descendibility
+descendible
+descending
+descendingly
+descension
+descensional
+descensionist
+descensive
+descent
+Deschampsia
+descloizite
+descort
+describability
+describable
+describably
+describe
+describer
+descrier
+descript
+description
+descriptionist
+descriptionless
+descriptive
+descriptively
+descriptiveness
+descriptory
+descrive
+descry
+deseasonalize
+desecrate
+desecrater
+desecration
+desectionalize
+deseed
+desegmentation
+desegmented
+desensitization
+desensitize
+desensitizer
+desentimentalize
+deseret
+desert
+deserted
+desertedly
+desertedness
+deserter
+desertful
+desertfully
+desertic
+deserticolous
+desertion
+desertism
+desertless
+desertlessly
+desertlike
+desertness
+desertress
+desertrice
+desertward
+deserve
+deserved
+deservedly
+deservedness
+deserveless
+deserver
+deserving
+deservingly
+deservingness
+desex
+desexualization
+desexualize
+deshabille
+desi
+desiccant
+desiccate
+desiccation
+desiccative
+desiccator
+desiccatory
+desiderant
+desiderata
+desiderate
+desideration
+desiderative
+desideratum
+desight
+desightment
+design
+designable
+designate
+designation
+designative
+designator
+designatory
+designatum
+designed
+designedly
+designedness
+designee
+designer
+designful
+designfully
+designfulness
+designing
+designingly
+designless
+designlessly
+designlessness
+desilicate
+desilicification
+desilicify
+desiliconization
+desiliconize
+desilver
+desilverization
+desilverize
+desilverizer
+desinence
+desinent
+desiodothyroxine
+desipience
+desipiency
+desipient
+desirability
+desirable
+desirableness
+desirably
+desire
+desired
+desiredly
+desiredness
+desireful
+desirefulness
+desireless
+desirer
+desiringly
+desirous
+desirously
+desirousness
+desist
+desistance
+desistive
+desition
+desize
+desk
+desklike
+deslime
+desma
+desmachymatous
+desmachyme
+desmacyte
+desman
+Desmanthus
+Desmarestia
+Desmarestiaceae
+desmarestiaceous
+Desmatippus
+desmectasia
+desmepithelium
+desmic
+desmid
+Desmidiaceae
+desmidiaceous
+Desmidiales
+desmidiologist
+desmidiology
+desmine
+desmitis
+desmocyte
+desmocytoma
+Desmodactyli
+Desmodium
+desmodont
+Desmodontidae
+Desmodus
+desmodynia
+desmogen
+desmogenous
+Desmognathae
+desmognathism
+desmognathous
+desmography
+desmohemoblast
+desmoid
+desmology
+desmoma
+Desmomyaria
+desmon
+Desmoncus
+desmoneoplasm
+desmonosology
+desmopathologist
+desmopathology
+desmopathy
+desmopelmous
+desmopexia
+desmopyknosis
+desmorrhexis
+Desmoscolecidae
+Desmoscolex
+desmosis
+desmosite
+Desmothoraca
+desmotomy
+desmotrope
+desmotropic
+desmotropism
+desocialization
+desocialize
+desolate
+desolately
+desolateness
+desolater
+desolating
+desolatingly
+desolation
+desolative
+desonation
+desophisticate
+desophistication
+desorption
+desoxalate
+desoxyanisoin
+desoxybenzoin
+desoxycinchonine
+desoxycorticosterone
+desoxymorphine
+desoxyribonucleic
+despair
+despairer
+despairful
+despairfully
+despairfulness
+despairing
+despairingly
+despairingness
+despecialization
+despecialize
+despecificate
+despecification
+despect
+desperacy
+desperado
+desperadoism
+desperate
+desperately
+desperateness
+desperation
+despicability
+despicable
+despicableness
+despicably
+despiritualization
+despiritualize
+despisable
+despisableness
+despisal
+despise
+despisedness
+despisement
+despiser
+despisingly
+despite
+despiteful
+despitefully
+despitefulness
+despiteous
+despiteously
+despoil
+despoiler
+despoilment
+despoliation
+despond
+despondence
+despondency
+despondent
+despondently
+desponder
+desponding
+despondingly
+despot
+despotat
+Despotes
+despotic
+despotically
+despoticalness
+despoticly
+despotism
+despotist
+despotize
+despumate
+despumation
+desquamate
+desquamation
+desquamative
+desquamatory
+dess
+dessa
+dessert
+dessertspoon
+dessertspoonful
+dessiatine
+dessil
+destabilize
+destain
+destandardize
+desterilization
+desterilize
+destinate
+destination
+destine
+destinezite
+destinism
+destinist
+destiny
+destitute
+destitutely
+destituteness
+destitution
+destour
+destress
+destrier
+destroy
+destroyable
+destroyer
+destroyingly
+destructibility
+destructible
+destructibleness
+destruction
+destructional
+destructionism
+destructionist
+destructive
+destructively
+destructiveness
+destructivism
+destructivity
+destructor
+destructuralize
+desubstantiate
+desucration
+desuete
+desuetude
+desugar
+desugarize
+Desulfovibrio
+desulphur
+desulphurate
+desulphuration
+desulphurization
+desulphurize
+desulphurizer
+desultor
+desultorily
+desultoriness
+desultorious
+desultory
+desuperheater
+desyatin
+desyl
+desynapsis
+desynaptic
+desynonymization
+desynonymize
+detach
+detachability
+detachable
+detachableness
+detachably
+detached
+detachedly
+detachedness
+detacher
+detachment
+detail
+detailed
+detailedly
+detailedness
+detailer
+detailism
+detailist
+detain
+detainable
+detainal
+detainer
+detainingly
+detainment
+detar
+detassel
+detax
+detect
+detectability
+detectable
+detectably
+detectaphone
+detecter
+detectible
+detection
+detective
+detectivism
+detector
+detenant
+detent
+detention
+detentive
+deter
+deterge
+detergence
+detergency
+detergent
+detergible
+deteriorate
+deterioration
+deteriorationist
+deteriorative
+deteriorator
+deteriorism
+deteriority
+determent
+determinability
+determinable
+determinableness
+determinably
+determinacy
+determinant
+determinantal
+determinate
+determinately
+determinateness
+determination
+determinative
+determinatively
+determinativeness
+determinator
+determine
+determined
+determinedly
+determinedness
+determiner
+determinism
+determinist
+deterministic
+determinoid
+deterrence
+deterrent
+detersion
+detersive
+detersively
+detersiveness
+detest
+detestability
+detestable
+detestableness
+detestably
+detestation
+detester
+dethronable
+dethrone
+dethronement
+dethroner
+dethyroidism
+detin
+detinet
+detinue
+detonable
+detonate
+detonation
+detonative
+detonator
+detorsion
+detour
+detoxicant
+detoxicate
+detoxication
+detoxicator
+detoxification
+detoxify
+detract
+detracter
+detractingly
+detraction
+detractive
+detractively
+detractiveness
+detractor
+detractory
+detractress
+detrain
+detrainment
+detribalization
+detribalize
+detriment
+detrimental
+detrimentality
+detrimentally
+detrimentalness
+detrital
+detrited
+detrition
+detritus
+Detroiter
+detrude
+detruncate
+detruncation
+detrusion
+detrusive
+detrusor
+detubation
+detumescence
+detune
+detur
+deuce
+deuced
+deucedly
+deul
+deurbanize
+deutencephalic
+deutencephalon
+deuteragonist
+deuteranomal
+deuteranomalous
+deuteranope
+deuteranopia
+deuteranopic
+deuteric
+deuteride
+deuterium
+deuteroalbumose
+deuterocanonical
+deuterocasease
+deuterocone
+deuteroconid
+deuterodome
+deuteroelastose
+deuterofibrinose
+deuterogamist
+deuterogamy
+deuterogelatose
+deuterogenic
+deuteroglobulose
+deuteromorphic
+Deuteromycetes
+deuteromyosinose
+deuteron
+Deuteronomic
+Deuteronomical
+Deuteronomist
+Deuteronomistic
+Deuteronomy
+deuteropathic
+deuteropathy
+deuteroplasm
+deuteroprism
+deuteroproteose
+deuteroscopic
+deuteroscopy
+deuterostoma
+Deuterostomata
+deuterostomatous
+deuterotokous
+deuterotoky
+deuterotype
+deuterovitellose
+deuterozooid
+deutobromide
+deutocarbonate
+deutochloride
+deutomala
+deutomalal
+deutomalar
+deutomerite
+deuton
+deutonephron
+deutonymph
+deutonymphal
+deutoplasm
+deutoplasmic
+deutoplastic
+deutoscolex
+deutoxide
+Deutzia
+dev
+deva
+devachan
+devadasi
+devall
+devaloka
+devalorize
+devaluate
+devaluation
+devalue
+devance
+devaporate
+devaporation
+devast
+devastate
+devastating
+devastatingly
+devastation
+devastative
+devastator
+devastavit
+devaster
+devata
+develin
+develop
+developability
+developable
+developedness
+developer
+developist
+development
+developmental
+developmentalist
+developmentally
+developmentarian
+developmentary
+developmentist
+developoid
+devertebrated
+devest
+deviability
+deviable
+deviancy
+deviant
+deviate
+deviation
+deviationism
+deviationist
+deviative
+deviator
+deviatory
+device
+deviceful
+devicefully
+devicefulness
+devil
+devilbird
+devildom
+deviled
+deviler
+deviless
+devilet
+devilfish
+devilhood
+deviling
+devilish
+devilishly
+devilishness
+devilism
+devilize
+devilkin
+devillike
+devilman
+devilment
+devilmonger
+devilry
+devilship
+deviltry
+devilward
+devilwise
+devilwood
+devily
+devious
+deviously
+deviousness
+devirginate
+devirgination
+devirginator
+devirilize
+devisable
+devisal
+deviscerate
+devisceration
+devise
+devisee
+deviser
+devisor
+devitalization
+devitalize
+devitalized
+devitaminize
+devitrification
+devitrify
+devocalization
+devocalize
+devoice
+devoid
+devoir
+devolatilize
+devolute
+devolution
+devolutionary
+devolutionist
+devolve
+devolvement
+Devon
+Devonian
+Devonic
+devonite
+devonport
+devonshire
+devorative
+devote
+devoted
+devotedly
+devotedness
+devotee
+devoteeism
+devotement
+devoter
+devotion
+devotional
+devotionalism
+devotionalist
+devotionality
+devotionally
+devotionalness
+devotionate
+devotionist
+devour
+devourable
+devourer
+devouress
+devouring
+devouringly
+devouringness
+devourment
+devout
+devoutless
+devoutlessly
+devoutlessness
+devoutly
+devoutness
+devow
+devulcanization
+devulcanize
+devulgarize
+devvel
+dew
+dewan
+dewanee
+dewanship
+dewater
+dewaterer
+dewax
+dewbeam
+dewberry
+dewclaw
+dewclawed
+dewcup
+dewdamp
+dewdrop
+dewdropper
+dewer
+Dewey
+deweylite
+dewfall
+dewflower
+dewily
+dewiness
+dewlap
+dewlapped
+dewless
+dewlight
+dewlike
+dewool
+deworm
+dewret
+dewtry
+dewworm
+dewy
+dexiocardia
+dexiotrope
+dexiotropic
+dexiotropism
+dexiotropous
+Dexter
+dexter
+dexterical
+dexterity
+dexterous
+dexterously
+dexterousness
+dextrad
+dextral
+dextrality
+dextrally
+dextran
+dextraural
+dextrin
+dextrinase
+dextrinate
+dextrinize
+dextrinous
+dextro
+dextroaural
+dextrocardia
+dextrocardial
+dextrocerebral
+dextrocular
+dextrocularity
+dextroduction
+dextroglucose
+dextrogyrate
+dextrogyration
+dextrogyratory
+dextrogyrous
+dextrolactic
+dextrolimonene
+dextropinene
+dextrorotary
+dextrorotatary
+dextrorotation
+dextrorsal
+dextrorse
+dextrorsely
+dextrosazone
+dextrose
+dextrosinistral
+dextrosinistrally
+dextrosuria
+dextrotartaric
+dextrotropic
+dextrotropous
+dextrous
+dextrously
+dextrousness
+dextroversion
+dey
+deyhouse
+deyship
+deywoman
+Dezaley
+dezinc
+dezincation
+dezincification
+dezincify
+dezymotize
+dha
+dhabb
+dhai
+dhak
+dhamnoo
+dhan
+dhangar
+dhanuk
+dhanush
+Dhanvantari
+dharana
+dharani
+dharma
+dharmakaya
+dharmashastra
+dharmasmriti
+dharmasutra
+dharmsala
+dharna
+dhaura
+dhauri
+dhava
+dhaw
+Dheneb
+dheri
+dhobi
+dhole
+dhoni
+dhoon
+dhoti
+dhoul
+dhow
+Dhritarashtra
+dhu
+dhunchee
+dhunchi
+Dhundia
+dhurra
+dhyal
+dhyana
+di
+diabase
+diabasic
+diabetes
+diabetic
+diabetogenic
+diabetogenous
+diabetometer
+diablerie
+diabolarch
+diabolarchy
+diabolatry
+diabolepsy
+diaboleptic
+diabolic
+diabolical
+diabolically
+diabolicalness
+diabolification
+diabolify
+diabolism
+diabolist
+diabolization
+diabolize
+diabological
+diabology
+diabolology
+diabrosis
+diabrotic
+Diabrotica
+diacanthous
+diacaustic
+diacetamide
+diacetate
+diacetic
+diacetin
+diacetine
+diacetonuria
+diaceturia
+diacetyl
+diacetylene
+diachoretic
+diachronic
+diachylon
+diachylum
+diacid
+diacipiperazine
+diaclase
+diaclasis
+diaclastic
+diacle
+diaclinal
+diacodion
+diacoele
+diacoelia
+diaconal
+diaconate
+diaconia
+diaconicon
+diaconicum
+diacope
+diacranterian
+diacranteric
+diacrisis
+diacritic
+diacritical
+diacritically
+Diacromyodi
+diacromyodian
+diact
+diactin
+diactinal
+diactinic
+diactinism
+Diadelphia
+diadelphian
+diadelphic
+diadelphous
+diadem
+Diadema
+Diadematoida
+diaderm
+diadermic
+diadoche
+Diadochi
+Diadochian
+diadochite
+diadochokinesia
+diadochokinetic
+diadromous
+diadumenus
+diaene
+diaereses
+diaeresis
+diaeretic
+diaetetae
+diagenesis
+diagenetic
+diageotropic
+diageotropism
+diaglyph
+diaglyphic
+diagnosable
+diagnose
+diagnoseable
+diagnoses
+diagnosis
+diagnostic
+diagnostically
+diagnosticate
+diagnostication
+diagnostician
+diagnostics
+diagometer
+diagonal
+diagonality
+diagonalize
+diagonally
+diagonalwise
+diagonic
+diagram
+diagrammatic
+diagrammatical
+diagrammatician
+diagrammatize
+diagrammeter
+diagrammitically
+diagraph
+diagraphic
+diagraphical
+diagraphics
+diagredium
+diagrydium
+Diaguitas
+Diaguite
+diaheliotropic
+diaheliotropically
+diaheliotropism
+diakinesis
+dial
+dialcohol
+dialdehyde
+dialect
+dialectal
+dialectalize
+dialectally
+dialectic
+dialectical
+dialectically
+dialectician
+dialecticism
+dialecticize
+dialectics
+dialectologer
+dialectological
+dialectologist
+dialectology
+dialector
+dialer
+dialin
+dialing
+dialist
+Dialister
+dialkyl
+dialkylamine
+diallage
+diallagic
+diallagite
+diallagoid
+diallel
+diallelon
+diallelus
+diallyl
+dialogic
+dialogical
+dialogically
+dialogism
+dialogist
+dialogistic
+dialogistical
+dialogistically
+dialogite
+dialogize
+dialogue
+dialoguer
+Dialonian
+dialuric
+dialycarpous
+Dialypetalae
+dialypetalous
+dialyphyllous
+dialysepalous
+dialysis
+dialystaminous
+dialystelic
+dialystely
+dialytic
+dialytically
+dialyzability
+dialyzable
+dialyzate
+dialyzation
+dialyzator
+dialyze
+dialyzer
+diamagnet
+diamagnetic
+diamagnetically
+diamagnetism
+diamantiferous
+diamantine
+diamantoid
+diamb
+diambic
+diamesogamous
+diameter
+diametral
+diametrally
+diametric
+diametrical
+diametrically
+diamicton
+diamide
+diamidogen
+diamine
+diaminogen
+diaminogene
+diammine
+diamminobromide
+diamminonitrate
+diammonium
+diamond
+diamondback
+diamonded
+diamondiferous
+diamondize
+diamondlike
+diamondwise
+diamondwork
+diamorphine
+diamylose
+Dian
+dian
+Diana
+Diancecht
+diander
+Diandria
+diandrian
+diandrous
+Diane
+dianetics
+Dianil
+dianilid
+dianilide
+dianisidin
+dianisidine
+dianite
+dianodal
+dianoetic
+dianoetical
+dianoetically
+Dianthaceae
+Dianthera
+Dianthus
+diapalma
+diapase
+diapasm
+diapason
+diapasonal
+diapause
+diapedesis
+diapedetic
+Diapensia
+Diapensiaceae
+diapensiaceous
+diapente
+diaper
+diapering
+diaphane
+diaphaneity
+diaphanie
+diaphanometer
+diaphanometric
+diaphanometry
+diaphanoscope
+diaphanoscopy
+diaphanotype
+diaphanous
+diaphanously
+diaphanousness
+diaphany
+diaphone
+diaphonia
+diaphonic
+diaphonical
+diaphony
+diaphoresis
+diaphoretic
+diaphoretical
+diaphorite
+diaphote
+diaphototropic
+diaphototropism
+diaphragm
+diaphragmal
+diaphragmatic
+diaphragmatically
+diaphtherin
+diaphysial
+diaphysis
+diaplasma
+diaplex
+diaplexal
+diaplexus
+diapnoic
+diapnotic
+diapophysial
+diapophysis
+Diaporthe
+diapositive
+diapsid
+Diapsida
+diapsidan
+diapyesis
+diapyetic
+diarch
+diarchial
+diarchic
+diarchy
+diarhemia
+diarial
+diarian
+diarist
+diaristic
+diarize
+diarrhea
+diarrheal
+diarrheic
+diarrhetic
+diarsenide
+diarthric
+diarthrodial
+diarthrosis
+diarticular
+diary
+diaschisis
+diaschisma
+diaschistic
+Diascia
+diascope
+diascopy
+diascord
+diascordium
+diaskeuasis
+diaskeuast
+Diaspidinae
+diaspidine
+Diaspinae
+diaspine
+diaspirin
+Diaspora
+diaspore
+diastaltic
+diastase
+diastasic
+diastasimetry
+diastasis
+diastataxic
+diastataxy
+diastatic
+diastatically
+diastem
+diastema
+diastematic
+diastematomyelia
+diaster
+diastole
+diastolic
+diastomatic
+diastral
+diastrophe
+diastrophic
+diastrophism
+diastrophy
+diasynthesis
+diasyrm
+diatessaron
+diathermacy
+diathermal
+diathermancy
+diathermaneity
+diathermanous
+diathermic
+diathermize
+diathermometer
+diathermotherapy
+diathermous
+diathermy
+diathesic
+diathesis
+diathetic
+diatom
+Diatoma
+Diatomaceae
+diatomacean
+diatomaceoid
+diatomaceous
+Diatomales
+Diatomeae
+diatomean
+diatomic
+diatomicity
+diatomiferous
+diatomin
+diatomist
+diatomite
+diatomous
+diatonic
+diatonical
+diatonically
+diatonous
+diatoric
+diatreme
+diatribe
+diatribist
+diatropic
+diatropism
+Diatryma
+Diatrymiformes
+Diau
+diaulic
+diaulos
+diaxial
+diaxon
+diazenithal
+diazeuctic
+diazeuxis
+diazide
+diazine
+diazoamine
+diazoamino
+diazoaminobenzene
+diazoanhydride
+diazoate
+diazobenzene
+diazohydroxide
+diazoic
+diazoimide
+diazoimido
+diazole
+diazoma
+diazomethane
+diazonium
+diazotate
+diazotic
+diazotizability
+diazotizable
+diazotization
+diazotize
+diazotype
+dib
+dibase
+dibasic
+dibasicity
+dibatag
+Dibatis
+dibber
+dibble
+dibbler
+dibbuk
+dibenzophenazine
+dibenzopyrrole
+dibenzoyl
+dibenzyl
+dibhole
+diblastula
+diborate
+Dibothriocephalus
+dibrach
+dibranch
+Dibranchia
+Dibranchiata
+dibranchiate
+dibranchious
+dibrom
+dibromid
+dibromide
+dibromoacetaldehyde
+dibromobenzene
+dibs
+dibstone
+dibutyrate
+dibutyrin
+dicacodyl
+Dicaeidae
+dicaeology
+dicalcic
+dicalcium
+dicarbonate
+dicarbonic
+dicarboxylate
+dicarboxylic
+dicarpellary
+dicaryon
+dicaryophase
+dicaryophyte
+dicaryotic
+dicast
+dicastery
+dicastic
+dicatalectic
+dicatalexis
+Diccon
+dice
+diceboard
+dicebox
+dicecup
+dicellate
+diceman
+Dicentra
+dicentrine
+dicephalism
+dicephalous
+dicephalus
+diceplay
+dicer
+Diceras
+Diceratidae
+dicerion
+dicerous
+dicetyl
+dich
+Dichapetalaceae
+Dichapetalum
+dichas
+dichasial
+dichasium
+dichastic
+Dichelyma
+dichlamydeous
+dichloramine
+dichlorhydrin
+dichloride
+dichloroacetic
+dichlorohydrin
+dichloromethane
+dichocarpism
+dichocarpous
+dichogamous
+dichogamy
+Dichondra
+Dichondraceae
+dichopodial
+dichoptic
+dichord
+dichoree
+Dichorisandra
+dichotic
+dichotomal
+dichotomic
+dichotomically
+dichotomist
+dichotomistic
+dichotomization
+dichotomize
+dichotomous
+dichotomously
+dichotomy
+dichroic
+dichroiscope
+dichroism
+dichroite
+dichroitic
+dichromasy
+dichromat
+dichromate
+dichromatic
+dichromatism
+dichromic
+dichromism
+dichronous
+dichrooscope
+dichroous
+dichroscope
+dichroscopic
+Dichter
+dicing
+Dick
+dick
+dickcissel
+dickens
+Dickensian
+Dickensiana
+dicker
+dickey
+dickeybird
+dickinsonite
+Dicksonia
+dicky
+Diclidantheraceae
+diclinic
+diclinism
+diclinous
+Diclytra
+dicoccous
+dicodeine
+dicoelious
+dicolic
+dicolon
+dicondylian
+dicot
+dicotyl
+dicotyledon
+dicotyledonary
+Dicotyledones
+dicotyledonous
+Dicotyles
+Dicotylidae
+dicotylous
+dicoumarin
+Dicranaceae
+dicranaceous
+dicranoid
+dicranterian
+Dicranum
+Dicrostonyx
+dicrotal
+dicrotic
+dicrotism
+dicrotous
+Dicruridae
+dicta
+Dictaen
+Dictamnus
+Dictaphone
+dictate
+dictatingly
+dictation
+dictational
+dictative
+dictator
+dictatorial
+dictatorialism
+dictatorially
+dictatorialness
+dictatorship
+dictatory
+dictatress
+dictatrix
+dictature
+dictic
+diction
+dictionary
+Dictograph
+dictum
+dictynid
+Dictynidae
+Dictyoceratina
+dictyoceratine
+dictyodromous
+dictyogen
+dictyogenous
+Dictyograptus
+dictyoid
+Dictyonema
+Dictyonina
+dictyonine
+Dictyophora
+dictyopteran
+Dictyopteris
+Dictyosiphon
+Dictyosiphonaceae
+dictyosiphonaceous
+dictyosome
+dictyostele
+dictyostelic
+Dictyota
+Dictyotaceae
+dictyotaceous
+Dictyotales
+dictyotic
+Dictyoxylon
+dicyanide
+dicyanine
+dicyanodiamide
+dicyanogen
+dicycle
+dicyclic
+Dicyclica
+dicyclist
+Dicyema
+Dicyemata
+dicyemid
+Dicyemida
+Dicyemidae
+Dicynodon
+dicynodont
+Dicynodontia
+Dicynodontidae
+did
+Didache
+Didachist
+didactic
+didactical
+didacticality
+didactically
+didactician
+didacticism
+didacticity
+didactics
+didactive
+didactyl
+didactylism
+didactylous
+didapper
+didascalar
+didascaliae
+didascalic
+didascalos
+didascaly
+didder
+diddle
+diddler
+diddy
+didelph
+Didelphia
+didelphian
+didelphic
+didelphid
+Didelphidae
+didelphine
+Didelphis
+didelphoid
+didelphous
+Didelphyidae
+didepsid
+didepside
+Dididae
+didie
+didine
+Didinium
+didle
+didna
+didnt
+Dido
+didodecahedral
+didodecahedron
+didrachma
+didrachmal
+didromy
+didst
+diductor
+Didunculidae
+Didunculinae
+Didunculus
+Didus
+didym
+didymate
+didymia
+didymitis
+didymium
+didymoid
+didymolite
+didymous
+didymus
+Didynamia
+didynamian
+didynamic
+didynamous
+didynamy
+die
+dieb
+dieback
+diectasis
+diedral
+diedric
+Dieffenbachia
+Diego
+Diegueno
+diehard
+dielectric
+dielectrically
+dielike
+Dielytra
+diem
+diemaker
+diemaking
+diencephalic
+diencephalon
+diene
+dier
+Dieri
+Diervilla
+diesel
+dieselization
+dieselize
+diesinker
+diesinking
+diesis
+diestock
+diet
+dietal
+dietarian
+dietary
+Dieter
+dieter
+dietetic
+dietetically
+dietetics
+dietetist
+diethanolamine
+diethyl
+diethylamine
+diethylenediamine
+diethylstilbestrol
+dietic
+dietician
+dietics
+dietine
+dietist
+dietitian
+dietotherapeutics
+dietotherapy
+dietotoxic
+dietotoxicity
+dietrichite
+dietzeite
+diewise
+Dieyerie
+diezeugmenon
+Difda
+diferrion
+diffame
+diffarreation
+differ
+difference
+differencingly
+different
+differentia
+differentiable
+differential
+differentialize
+differentially
+differentiant
+differentiate
+differentiation
+differentiator
+differently
+differentness
+differingly
+difficile
+difficileness
+difficult
+difficultly
+difficultness
+difficulty
+diffidation
+diffide
+diffidence
+diffident
+diffidently
+diffidentness
+diffinity
+diffluence
+diffluent
+Difflugia
+difform
+difformed
+difformity
+diffract
+diffraction
+diffractive
+diffractively
+diffractiveness
+diffractometer
+diffrangibility
+diffrangible
+diffugient
+diffusate
+diffuse
+diffused
+diffusedly
+diffusely
+diffuseness
+diffuser
+diffusibility
+diffusible
+diffusibleness
+diffusibly
+diffusimeter
+diffusiometer
+diffusion
+diffusionism
+diffusionist
+diffusive
+diffusively
+diffusiveness
+diffusivity
+diffusor
+diformin
+dig
+digallate
+digallic
+digametic
+digamist
+digamma
+digammated
+digammic
+digamous
+digamy
+digastric
+Digenea
+digeneous
+digenesis
+digenetic
+Digenetica
+digenic
+digenous
+digeny
+digerent
+digest
+digestant
+digested
+digestedly
+digestedness
+digester
+digestibility
+digestible
+digestibleness
+digestibly
+digestion
+digestional
+digestive
+digestively
+digestiveness
+digestment
+diggable
+digger
+digging
+diggings
+dight
+dighter
+digit
+digital
+digitalein
+digitalin
+digitalis
+digitalism
+digitalization
+digitalize
+digitally
+Digitaria
+digitate
+digitated
+digitately
+digitation
+digitiform
+Digitigrada
+digitigrade
+digitigradism
+digitinervate
+digitinerved
+digitipinnate
+digitize
+digitizer
+digitogenin
+digitonin
+digitoplantar
+digitorium
+digitoxin
+digitoxose
+digitule
+digitus
+digladiate
+digladiation
+digladiator
+diglossia
+diglot
+diglottic
+diglottism
+diglottist
+diglucoside
+diglyceride
+diglyph
+diglyphic
+digmeat
+dignification
+dignified
+dignifiedly
+dignifiedness
+dignify
+dignitarial
+dignitarian
+dignitary
+dignity
+digoneutic
+digoneutism
+digonoporous
+digonous
+Digor
+digram
+digraph
+digraphic
+digredience
+digrediency
+digredient
+digress
+digressingly
+digression
+digressional
+digressionary
+digressive
+digressively
+digressiveness
+digressory
+digs
+diguanide
+Digynia
+digynian
+digynous
+dihalide
+dihalo
+dihalogen
+dihedral
+dihedron
+dihexagonal
+dihexahedral
+dihexahedron
+dihybrid
+dihybridism
+dihydrate
+dihydrated
+dihydrazone
+dihydric
+dihydride
+dihydrite
+dihydrocupreine
+dihydrocuprin
+dihydrogen
+dihydrol
+dihydronaphthalene
+dihydronicotine
+dihydrotachysterol
+dihydroxy
+dihydroxysuccinic
+dihydroxytoluene
+dihysteria
+diiamb
+diiambus
+diiodide
+diiodo
+diiodoform
+diipenates
+Diipolia
+diisatogen
+dijudicate
+dijudication
+dika
+dikage
+dikamali
+dikaryon
+dikaryophase
+dikaryophasic
+dikaryophyte
+dikaryophytic
+dikaryotic
+Dike
+dike
+dikegrave
+dikelocephalid
+Dikelocephalus
+diker
+dikereeve
+dikeside
+diketo
+diketone
+dikkop
+diktyonite
+dilacerate
+dilaceration
+dilambdodont
+dilamination
+Dilantin
+dilapidate
+dilapidated
+dilapidation
+dilapidator
+dilatability
+dilatable
+dilatableness
+dilatably
+dilatancy
+dilatant
+dilatate
+dilatation
+dilatative
+dilatator
+dilatatory
+dilate
+dilated
+dilatedly
+dilatedness
+dilater
+dilatingly
+dilation
+dilative
+dilatometer
+dilatometric
+dilatometry
+dilator
+dilatorily
+dilatoriness
+dilatory
+dildo
+dilection
+Dilemi
+Dilemite
+dilemma
+dilemmatic
+dilemmatical
+dilemmatically
+dilettant
+dilettante
+dilettanteish
+dilettanteism
+dilettanteship
+dilettanti
+dilettantish
+dilettantism
+dilettantist
+diligence
+diligency
+diligent
+diligentia
+diligently
+diligentness
+dilker
+dill
+Dillenia
+Dilleniaceae
+dilleniaceous
+dilleniad
+dilli
+dillier
+dilligrout
+dilling
+dillseed
+dillue
+dilluer
+dillweed
+dilly
+dillydallier
+dillydally
+dillyman
+dilo
+dilogy
+diluent
+dilute
+diluted
+dilutedly
+dilutedness
+dilutee
+dilutely
+diluteness
+dilutent
+diluter
+dilution
+dilutive
+dilutor
+diluvia
+diluvial
+diluvialist
+diluvian
+diluvianism
+diluvion
+diluvium
+dim
+dimagnesic
+dimanganion
+dimanganous
+Dimaris
+dimastigate
+Dimatis
+dimber
+dimberdamber
+dimble
+dime
+dimensible
+dimension
+dimensional
+dimensionality
+dimensionally
+dimensioned
+dimensionless
+dimensive
+dimer
+Dimera
+dimeran
+dimercuric
+dimercurion
+dimercury
+dimeric
+dimeride
+dimerism
+dimerization
+dimerlie
+dimerous
+dimetallic
+dimeter
+dimethoxy
+dimethyl
+dimethylamine
+dimethylamino
+dimethylaniline
+dimethylbenzene
+dimetria
+dimetric
+Dimetry
+dimication
+dimidiate
+dimidiation
+diminish
+diminishable
+diminishableness
+diminisher
+diminishingly
+diminishment
+diminuendo
+diminutal
+diminute
+diminution
+diminutival
+diminutive
+diminutively
+diminutiveness
+diminutivize
+dimiss
+dimission
+dimissorial
+dimissory
+dimit
+Dimitry
+Dimittis
+dimity
+dimly
+dimmed
+dimmedness
+dimmer
+dimmest
+dimmet
+dimmish
+Dimna
+dimness
+dimolecular
+dimoric
+dimorph
+dimorphic
+dimorphism
+Dimorphotheca
+dimorphous
+dimple
+dimplement
+dimply
+dimps
+dimpsy
+Dimyaria
+dimyarian
+dimyaric
+din
+Dinah
+dinamode
+Dinantian
+dinaphthyl
+dinar
+Dinaric
+Dinarzade
+dinder
+dindle
+Dindymene
+Dindymus
+dine
+diner
+dinergate
+dineric
+dinero
+dinette
+dineuric
+ding
+dingar
+dingbat
+dingdong
+dinge
+dingee
+dinghee
+dinghy
+dingily
+dinginess
+dingle
+dingleberry
+dinglebird
+dingledangle
+dingly
+dingmaul
+dingo
+dingus
+Dingwall
+dingy
+dinheiro
+dinic
+dinical
+Dinichthys
+dining
+dinitrate
+dinitril
+dinitrile
+dinitro
+dinitrobenzene
+dinitrocellulose
+dinitrophenol
+dinitrotoluene
+dink
+Dinka
+dinkey
+dinkum
+dinky
+dinmont
+dinner
+dinnerless
+dinnerly
+dinnertime
+dinnerware
+dinnery
+Dinobryon
+Dinoceras
+Dinocerata
+dinoceratan
+dinoceratid
+Dinoceratidae
+Dinoflagellata
+Dinoflagellatae
+dinoflagellate
+Dinoflagellida
+dinomic
+Dinomys
+Dinophilea
+Dinophilus
+Dinophyceae
+Dinornis
+Dinornithes
+dinornithic
+dinornithid
+Dinornithidae
+Dinornithiformes
+dinornithine
+dinornithoid
+dinosaur
+Dinosauria
+dinosaurian
+dinothere
+Dinotheres
+dinotherian
+Dinotheriidae
+Dinotherium
+dinsome
+dint
+dintless
+dinus
+diobely
+diobol
+diocesan
+diocese
+Diocletian
+dioctahedral
+Dioctophyme
+diode
+Diodia
+Diodon
+diodont
+Diodontidae
+Dioecia
+dioecian
+dioeciodimorphous
+dioeciopolygamous
+dioecious
+dioeciously
+dioeciousness
+dioecism
+dioecy
+dioestrous
+dioestrum
+dioestrus
+Diogenean
+Diogenic
+diogenite
+dioicous
+diol
+diolefin
+diolefinic
+Diomedea
+Diomedeidae
+Dion
+Dionaea
+Dionaeaceae
+Dione
+dionise
+dionym
+dionymal
+Dionysia
+Dionysiac
+Dionysiacal
+Dionysiacally
+Dioon
+Diophantine
+Diopsidae
+diopside
+Diopsis
+dioptase
+diopter
+Dioptidae
+dioptograph
+dioptometer
+dioptometry
+dioptoscopy
+dioptra
+dioptral
+dioptrate
+dioptric
+dioptrical
+dioptrically
+dioptrics
+dioptrometer
+dioptrometry
+dioptroscopy
+dioptry
+diorama
+dioramic
+diordinal
+diorite
+dioritic
+diorthosis
+diorthotic
+Dioscorea
+Dioscoreaceae
+dioscoreaceous
+dioscorein
+dioscorine
+Dioscuri
+Dioscurian
+diose
+Diosma
+diosmin
+diosmose
+diosmosis
+diosmotic
+diosphenol
+Diospyraceae
+diospyraceous
+Diospyros
+diota
+diotic
+Diotocardia
+diovular
+dioxane
+dioxide
+dioxime
+dioxindole
+dioxy
+dip
+Dipala
+diparentum
+dipartite
+dipartition
+dipaschal
+dipentene
+dipeptid
+dipeptide
+dipetalous
+dipetto
+diphase
+diphaser
+diphasic
+diphead
+diphenol
+diphenyl
+diphenylamine
+diphenylchloroarsine
+diphenylene
+diphenylenimide
+diphenylguanidine
+diphenylmethane
+diphenylquinomethane
+diphenylthiourea
+diphosgene
+diphosphate
+diphosphide
+diphosphoric
+diphosphothiamine
+diphrelatic
+diphtheria
+diphtherial
+diphtherian
+diphtheric
+diphtheritic
+diphtheritically
+diphtheritis
+diphtheroid
+diphtheroidal
+diphtherotoxin
+diphthong
+diphthongal
+diphthongalize
+diphthongally
+diphthongation
+diphthongic
+diphthongization
+diphthongize
+diphycercal
+diphycercy
+Diphyes
+diphygenic
+diphyletic
+Diphylla
+Diphylleia
+Diphyllobothrium
+diphyllous
+diphyodont
+diphyozooid
+Diphysite
+Diphysitism
+diphyzooid
+dipicrate
+dipicrylamin
+dipicrylamine
+Diplacanthidae
+Diplacanthus
+diplacusis
+Dipladenia
+diplanar
+diplanetic
+diplanetism
+diplantidian
+diplarthrism
+diplarthrous
+diplasiasmus
+diplasic
+diplasion
+diplegia
+dipleidoscope
+dipleura
+dipleural
+dipleurogenesis
+dipleurogenetic
+diplex
+diplobacillus
+diplobacterium
+diploblastic
+diplocardia
+diplocardiac
+Diplocarpon
+diplocaulescent
+diplocephalous
+diplocephalus
+diplocephaly
+diplochlamydeous
+diplococcal
+diplococcemia
+diplococcic
+diplococcoid
+diplococcus
+diploconical
+diplocoria
+Diplodia
+Diplodocus
+Diplodus
+diploe
+diploetic
+diplogangliate
+diplogenesis
+diplogenetic
+diplogenic
+Diploglossata
+diploglossate
+diplograph
+diplographic
+diplographical
+diplography
+diplohedral
+diplohedron
+diploic
+diploid
+diploidic
+diploidion
+diploidy
+diplois
+diplokaryon
+diploma
+diplomacy
+diplomat
+diplomate
+diplomatic
+diplomatical
+diplomatically
+diplomatics
+diplomatism
+diplomatist
+diplomatize
+diplomatology
+diplomyelia
+diplonema
+diplonephridia
+diploneural
+diplont
+diploperistomic
+diplophase
+diplophyte
+diplopia
+diplopic
+diploplacula
+diploplacular
+diploplaculate
+diplopod
+Diplopoda
+diplopodic
+Diploptera
+diplopterous
+Diplopteryga
+diplopy
+diplosis
+diplosome
+diplosphenal
+diplosphene
+Diplospondyli
+diplospondylic
+diplospondylism
+diplostemonous
+diplostemony
+diplostichous
+Diplotaxis
+diplotegia
+diplotene
+Diplozoon
+diplumbic
+Dipneumona
+Dipneumones
+dipneumonous
+dipneustal
+Dipneusti
+dipnoan
+Dipnoi
+dipnoid
+dipnoous
+dipode
+dipodic
+Dipodidae
+Dipodomyinae
+Dipodomys
+dipody
+dipolar
+dipolarization
+dipolarize
+dipole
+diporpa
+dipotassic
+dipotassium
+dipped
+dipper
+dipperful
+dipping
+diprimary
+diprismatic
+dipropargyl
+dipropyl
+Diprotodon
+diprotodont
+Diprotodontia
+Dipsacaceae
+dipsacaceous
+Dipsaceae
+dipsaceous
+Dipsacus
+Dipsadinae
+dipsas
+dipsetic
+dipsey
+dipsomania
+dipsomaniac
+dipsomaniacal
+Dipsosaurus
+dipsosis
+dipter
+Diptera
+Dipteraceae
+dipteraceous
+dipterad
+dipteral
+dipteran
+dipterist
+dipterocarp
+Dipterocarpaceae
+dipterocarpaceous
+dipterocarpous
+Dipterocarpus
+dipterocecidium
+dipterological
+dipterologist
+dipterology
+dipteron
+dipteros
+dipterous
+Dipteryx
+diptote
+diptych
+Dipus
+dipware
+dipygus
+dipylon
+dipyre
+dipyrenous
+dipyridyl
+Dirca
+Dircaean
+dird
+dirdum
+dire
+direct
+directable
+directed
+directer
+direction
+directional
+directionally
+directionless
+directitude
+directive
+directively
+directiveness
+directivity
+directly
+directness
+Directoire
+director
+directoral
+directorate
+directorial
+directorially
+directorship
+directory
+directress
+directrices
+directrix
+direful
+direfully
+direfulness
+direly
+dirempt
+diremption
+direness
+direption
+dirge
+dirgeful
+dirgelike
+dirgeman
+dirgler
+dirhem
+Dirian
+Dirichletian
+dirigent
+dirigibility
+dirigible
+dirigomotor
+diriment
+Dirk
+dirk
+dirl
+dirndl
+dirt
+dirtbird
+dirtboard
+dirten
+dirtily
+dirtiness
+dirtplate
+dirty
+dis
+Disa
+disability
+disable
+disabled
+disablement
+disabusal
+disabuse
+disacceptance
+disaccharide
+disaccharose
+disaccommodate
+disaccommodation
+disaccord
+disaccordance
+disaccordant
+disaccustom
+disaccustomed
+disaccustomedness
+disacidify
+disacknowledge
+disacknowledgement
+disacquaint
+disacquaintance
+disadjust
+disadorn
+disadvance
+disadvantage
+disadvantageous
+disadvantageously
+disadvantageousness
+disadventure
+disadventurous
+disadvise
+disaffect
+disaffectation
+disaffected
+disaffectedly
+disaffectedness
+disaffection
+disaffectionate
+disaffiliate
+disaffiliation
+disaffirm
+disaffirmance
+disaffirmation
+disaffirmative
+disafforest
+disafforestation
+disafforestment
+disagglomeration
+disaggregate
+disaggregation
+disaggregative
+disagio
+disagree
+disagreeability
+disagreeable
+disagreeableness
+disagreeably
+disagreed
+disagreement
+disagreer
+disalicylide
+disalign
+disalignment
+disalike
+disallow
+disallowable
+disallowableness
+disallowance
+disally
+disamenity
+Disamis
+disanagrammatize
+disanalogous
+disangularize
+disanimal
+disanimate
+disanimation
+disannex
+disannexation
+disannul
+disannuller
+disannulment
+disanoint
+disanswerable
+disapostle
+disapparel
+disappear
+disappearance
+disappearer
+disappearing
+disappoint
+disappointed
+disappointedly
+disappointer
+disappointing
+disappointingly
+disappointingness
+disappointment
+disappreciate
+disappreciation
+disapprobation
+disapprobative
+disapprobatory
+disappropriate
+disappropriation
+disapprovable
+disapproval
+disapprove
+disapprover
+disapprovingly
+disaproned
+disarchbishop
+disarm
+disarmament
+disarmature
+disarmed
+disarmer
+disarming
+disarmingly
+disarrange
+disarrangement
+disarray
+disarticulate
+disarticulation
+disarticulator
+disasinate
+disasinize
+disassemble
+disassembly
+disassimilate
+disassimilation
+disassimilative
+disassociate
+disassociation
+disaster
+disastimeter
+disastrous
+disastrously
+disastrousness
+disattaint
+disattire
+disattune
+disauthenticate
+disauthorize
+disavow
+disavowable
+disavowal
+disavowedly
+disavower
+disavowment
+disawa
+disazo
+disbalance
+disbalancement
+disband
+disbandment
+disbar
+disbark
+disbarment
+disbelief
+disbelieve
+disbeliever
+disbelieving
+disbelievingly
+disbench
+disbenchment
+disbloom
+disbody
+disbosom
+disbowel
+disbrain
+disbranch
+disbud
+disbudder
+disburden
+disburdenment
+disbursable
+disburse
+disbursement
+disburser
+disburthen
+disbury
+disbutton
+disc
+discage
+discal
+discalceate
+discalced
+discanonization
+discanonize
+discanter
+discantus
+discapacitate
+discard
+discardable
+discarder
+discardment
+discarnate
+discarnation
+discase
+discastle
+discept
+disceptation
+disceptator
+discern
+discerner
+discernible
+discernibleness
+discernibly
+discerning
+discerningly
+discernment
+discerp
+discerpibility
+discerpible
+discerpibleness
+discerptibility
+discerptible
+discerptibleness
+discerption
+discharacter
+discharge
+dischargeable
+dischargee
+discharger
+discharging
+discharity
+discharm
+dischase
+Disciflorae
+discifloral
+disciform
+discigerous
+Discina
+discinct
+discinoid
+disciple
+disciplelike
+discipleship
+disciplinability
+disciplinable
+disciplinableness
+disciplinal
+disciplinant
+disciplinarian
+disciplinarianism
+disciplinarily
+disciplinary
+disciplinative
+disciplinatory
+discipline
+discipliner
+discipular
+discircumspection
+discission
+discitis
+disclaim
+disclaimant
+disclaimer
+disclamation
+disclamatory
+disclass
+disclassify
+disclike
+disclimax
+discloister
+disclose
+disclosed
+discloser
+disclosive
+disclosure
+discloud
+discoach
+discoactine
+discoblastic
+discoblastula
+discobolus
+discocarp
+discocarpium
+discocarpous
+discocephalous
+discodactyl
+discodactylous
+discogastrula
+discoglossid
+Discoglossidae
+discoglossoid
+discographical
+discography
+discohexaster
+discoid
+discoidal
+Discoidea
+Discoideae
+discolichen
+discolith
+discolor
+discolorate
+discoloration
+discolored
+discoloredness
+discolorization
+discolorment
+discolourization
+Discomedusae
+discomedusan
+discomedusoid
+discomfit
+discomfiter
+discomfiture
+discomfort
+discomfortable
+discomfortableness
+discomforting
+discomfortingly
+discommend
+discommendable
+discommendableness
+discommendably
+discommendation
+discommender
+discommode
+discommodious
+discommodiously
+discommodiousness
+discommodity
+discommon
+discommons
+discommunity
+discomorula
+discompliance
+discompose
+discomposed
+discomposedly
+discomposedness
+discomposing
+discomposingly
+discomposure
+discomycete
+Discomycetes
+discomycetous
+Disconanthae
+disconanthous
+disconcert
+disconcerted
+disconcertedly
+disconcertedness
+disconcerting
+disconcertingly
+disconcertingness
+disconcertion
+disconcertment
+disconcord
+disconduce
+disconducive
+Disconectae
+disconform
+disconformable
+disconformity
+discongruity
+disconjure
+disconnect
+disconnected
+disconnectedly
+disconnectedness
+disconnecter
+disconnection
+disconnective
+disconnectiveness
+disconnector
+disconsider
+disconsideration
+disconsolate
+disconsolately
+disconsolateness
+disconsolation
+disconsonancy
+disconsonant
+discontent
+discontented
+discontentedly
+discontentedness
+discontentful
+discontenting
+discontentive
+discontentment
+discontiguity
+discontiguous
+discontiguousness
+discontinuable
+discontinuance
+discontinuation
+discontinue
+discontinuee
+discontinuer
+discontinuity
+discontinuor
+discontinuous
+discontinuously
+discontinuousness
+disconula
+disconvenience
+disconvenient
+disconventicle
+discophile
+Discophora
+discophoran
+discophore
+discophorous
+discoplacenta
+discoplacental
+Discoplacentalia
+discoplacentalian
+discoplasm
+discopodous
+discord
+discordance
+discordancy
+discordant
+discordantly
+discordantness
+discordful
+Discordia
+discording
+discorporate
+discorrespondency
+discorrespondent
+discount
+discountable
+discountenance
+discountenancer
+discounter
+discouple
+discourage
+discourageable
+discouragement
+discourager
+discouraging
+discouragingly
+discouragingness
+discourse
+discourseless
+discourser
+discoursive
+discoursively
+discoursiveness
+discourteous
+discourteously
+discourteousness
+discourtesy
+discous
+discovenant
+discover
+discoverability
+discoverable
+discoverably
+discovered
+discoverer
+discovert
+discoverture
+discovery
+discreate
+discreation
+discredence
+discredit
+discreditability
+discreditable
+discreet
+discreetly
+discreetness
+discrepance
+discrepancy
+discrepant
+discrepantly
+discrepate
+discrepation
+discrested
+discrete
+discretely
+discreteness
+discretion
+discretional
+discretionally
+discretionarily
+discretionary
+discretive
+discretively
+discretiveness
+discriminability
+discriminable
+discriminal
+discriminant
+discriminantal
+discriminate
+discriminately
+discriminateness
+discriminating
+discriminatingly
+discrimination
+discriminational
+discriminative
+discriminatively
+discriminator
+discriminatory
+discrown
+disculpate
+disculpation
+disculpatory
+discumber
+discursative
+discursativeness
+discursify
+discursion
+discursive
+discursively
+discursiveness
+discursory
+discursus
+discurtain
+discus
+discuss
+discussable
+discussant
+discusser
+discussible
+discussion
+discussional
+discussionism
+discussionist
+discussive
+discussment
+discutable
+discutient
+disdain
+disdainable
+disdainer
+disdainful
+disdainfully
+disdainfulness
+disdainly
+disdeceive
+disdenominationalize
+disdiaclast
+disdiaclastic
+disdiapason
+disdiazo
+disdiplomatize
+disdodecahedroid
+disdub
+disease
+diseased
+diseasedly
+diseasedness
+diseaseful
+diseasefulness
+disecondary
+disedge
+disedification
+disedify
+diseducate
+diselder
+diselectrification
+diselectrify
+diselenide
+disematism
+disembargo
+disembark
+disembarkation
+disembarkment
+disembarrass
+disembarrassment
+disembattle
+disembed
+disembellish
+disembitter
+disembocation
+disembodiment
+disembody
+disembogue
+disemboguement
+disembosom
+disembowel
+disembowelment
+disembower
+disembroil
+disemburden
+diseme
+disemic
+disemplane
+disemploy
+disemployment
+disempower
+disenable
+disenablement
+disenact
+disenactment
+disenamor
+disenamour
+disenchain
+disenchant
+disenchanter
+disenchantingly
+disenchantment
+disenchantress
+disencharm
+disenclose
+disencumber
+disencumberment
+disencumbrance
+disendow
+disendower
+disendowment
+disenfranchise
+disenfranchisement
+disengage
+disengaged
+disengagedness
+disengagement
+disengirdle
+disenjoy
+disenjoyment
+disenmesh
+disennoble
+disennui
+disenshroud
+disenslave
+disensoul
+disensure
+disentail
+disentailment
+disentangle
+disentanglement
+disentangler
+disenthral
+disenthrall
+disenthrallment
+disenthralment
+disenthrone
+disenthronement
+disentitle
+disentomb
+disentombment
+disentrain
+disentrainment
+disentrammel
+disentrance
+disentrancement
+disentwine
+disenvelop
+disepalous
+disequalize
+disequalizer
+disequilibrate
+disequilibration
+disequilibrium
+disestablish
+disestablisher
+disestablishment
+disestablishmentarian
+disesteem
+disesteemer
+disestimation
+disexcommunicate
+disfaith
+disfame
+disfashion
+disfavor
+disfavorer
+disfeature
+disfeaturement
+disfellowship
+disfen
+disfiguration
+disfigurative
+disfigure
+disfigurement
+disfigurer
+disfiguringly
+disflesh
+disfoliage
+disforest
+disforestation
+disfranchise
+disfranchisement
+disfranchiser
+disfrequent
+disfriar
+disfrock
+disfurnish
+disfurnishment
+disgarland
+disgarnish
+disgarrison
+disgavel
+disgeneric
+disgenius
+disgig
+disglorify
+disglut
+disgood
+disgorge
+disgorgement
+disgorger
+disgospel
+disgown
+disgrace
+disgraceful
+disgracefully
+disgracefulness
+disgracement
+disgracer
+disgracious
+disgradation
+disgrade
+disgregate
+disgregation
+disgruntle
+disgruntlement
+disguisable
+disguisal
+disguise
+disguised
+disguisedly
+disguisedness
+disguiseless
+disguisement
+disguiser
+disguising
+disgulf
+disgust
+disgusted
+disgustedly
+disgustedness
+disguster
+disgustful
+disgustfully
+disgustfulness
+disgusting
+disgustingly
+disgustingness
+dish
+dishabilitate
+dishabilitation
+dishabille
+dishabituate
+dishallow
+dishallucination
+disharmonic
+disharmonical
+disharmonious
+disharmonism
+disharmonize
+disharmony
+dishboard
+dishcloth
+dishclout
+disheart
+dishearten
+disheartener
+disheartening
+dishearteningly
+disheartenment
+disheaven
+dished
+dishellenize
+dishelm
+disher
+disherent
+disherison
+disherit
+disheritment
+dishevel
+disheveled
+dishevelment
+dishexecontahedroid
+dishful
+Dishley
+dishlike
+dishling
+dishmaker
+dishmaking
+dishmonger
+dishome
+dishonest
+dishonestly
+dishonor
+dishonorable
+dishonorableness
+dishonorably
+dishonorary
+dishonorer
+dishorn
+dishorner
+dishorse
+dishouse
+dishpan
+dishpanful
+dishrag
+dishumanize
+dishwasher
+dishwashing
+dishwashings
+dishwater
+dishwatery
+dishwiper
+dishwiping
+disidentify
+disilane
+disilicane
+disilicate
+disilicic
+disilicid
+disilicide
+disillude
+disilluminate
+disillusion
+disillusionist
+disillusionize
+disillusionizer
+disillusionment
+disillusive
+disimagine
+disimbitter
+disimitate
+disimitation
+disimmure
+disimpark
+disimpassioned
+disimprison
+disimprisonment
+disimprove
+disimprovement
+disincarcerate
+disincarceration
+disincarnate
+disincarnation
+disinclination
+disincline
+disincorporate
+disincorporation
+disincrust
+disincrustant
+disincrustion
+disindividualize
+disinfect
+disinfectant
+disinfecter
+disinfection
+disinfective
+disinfector
+disinfest
+disinfestation
+disinfeudation
+disinflame
+disinflate
+disinflation
+disingenuity
+disingenuous
+disingenuously
+disingenuousness
+disinherison
+disinherit
+disinheritable
+disinheritance
+disinhume
+disinsulation
+disinsure
+disintegrable
+disintegrant
+disintegrate
+disintegration
+disintegrationist
+disintegrative
+disintegrator
+disintegratory
+disintegrity
+disintegrous
+disintensify
+disinter
+disinterest
+disinterested
+disinterestedly
+disinterestedness
+disinteresting
+disinterment
+disintertwine
+disintrench
+disintricate
+disinvagination
+disinvest
+disinvestiture
+disinvigorate
+disinvite
+disinvolve
+disjasked
+disject
+disjection
+disjoin
+disjoinable
+disjoint
+disjointed
+disjointedly
+disjointedness
+disjointly
+disjointure
+disjunct
+disjunction
+disjunctive
+disjunctively
+disjunctor
+disjuncture
+disjune
+disk
+diskelion
+diskless
+disklike
+dislaurel
+disleaf
+dislegitimate
+dislevelment
+dislicense
+dislikable
+dislike
+dislikelihood
+disliker
+disliking
+dislimn
+dislink
+dislip
+disload
+dislocability
+dislocable
+dislocate
+dislocated
+dislocatedly
+dislocatedness
+dislocation
+dislocator
+dislocatory
+dislodge
+dislodgeable
+dislodgement
+dislove
+disloyal
+disloyalist
+disloyally
+disloyalty
+disluster
+dismain
+dismal
+dismality
+dismalize
+dismally
+dismalness
+disman
+dismantle
+dismantlement
+dismantler
+dismarble
+dismark
+dismarket
+dismask
+dismast
+dismastment
+dismay
+dismayable
+dismayed
+dismayedness
+dismayful
+dismayfully
+dismayingly
+disme
+dismember
+dismembered
+dismemberer
+dismemberment
+dismembrate
+dismembrator
+disminion
+disminister
+dismiss
+dismissable
+dismissal
+dismissible
+dismissingly
+dismission
+dismissive
+dismissory
+dismoded
+dismount
+dismountable
+dismutation
+disna
+disnaturalization
+disnaturalize
+disnature
+disnest
+disnew
+disniche
+disnosed
+disnumber
+disobedience
+disobedient
+disobediently
+disobey
+disobeyal
+disobeyer
+disobligation
+disoblige
+disobliger
+disobliging
+disobligingly
+disobligingness
+disoccupation
+disoccupy
+disodic
+disodium
+disomatic
+disomatous
+disomic
+disomus
+disoperculate
+disorb
+disorchard
+disordained
+disorder
+disordered
+disorderedly
+disorderedness
+disorderer
+disorderliness
+disorderly
+disordinated
+disordination
+disorganic
+disorganization
+disorganize
+disorganizer
+disorient
+disorientate
+disorientation
+disown
+disownable
+disownment
+disoxygenate
+disoxygenation
+disozonize
+dispapalize
+disparage
+disparageable
+disparagement
+disparager
+disparaging
+disparagingly
+disparate
+disparately
+disparateness
+disparation
+disparity
+dispark
+dispart
+dispartment
+dispassionate
+dispassionately
+dispassionateness
+dispassioned
+dispatch
+dispatcher
+dispatchful
+dispatriated
+dispauper
+dispauperize
+dispeace
+dispeaceful
+dispel
+dispeller
+dispend
+dispender
+dispendious
+dispendiously
+dispenditure
+dispensability
+dispensable
+dispensableness
+dispensary
+dispensate
+dispensation
+dispensational
+dispensative
+dispensatively
+dispensator
+dispensatorily
+dispensatory
+dispensatress
+dispensatrix
+dispense
+dispenser
+dispensingly
+dispeople
+dispeoplement
+dispeopler
+dispergate
+dispergation
+dispergator
+dispericraniate
+disperiwig
+dispermic
+dispermous
+dispermy
+dispersal
+dispersant
+disperse
+dispersed
+dispersedly
+dispersedness
+dispersement
+disperser
+dispersibility
+dispersible
+dispersion
+dispersity
+dispersive
+dispersively
+dispersiveness
+dispersoid
+dispersoidological
+dispersoidology
+dispersonalize
+dispersonate
+dispersonification
+dispersonify
+dispetal
+disphenoid
+dispiece
+dispireme
+dispirit
+dispirited
+dispiritedly
+dispiritedness
+dispiritingly
+dispiritment
+dispiteous
+dispiteously
+dispiteousness
+displace
+displaceability
+displaceable
+displacement
+displacency
+displacer
+displant
+display
+displayable
+displayed
+displayer
+displease
+displeased
+displeasedly
+displeaser
+displeasing
+displeasingly
+displeasingness
+displeasurable
+displeasurably
+displeasure
+displeasurement
+displenish
+displicency
+displume
+displuviate
+dispondaic
+dispondee
+dispone
+disponee
+disponent
+disponer
+dispope
+dispopularize
+disporous
+disport
+disportive
+disportment
+Disporum
+disposability
+disposable
+disposableness
+disposal
+dispose
+disposed
+disposedly
+disposedness
+disposer
+disposingly
+disposition
+dispositional
+dispositioned
+dispositive
+dispositively
+dispossess
+dispossession
+dispossessor
+dispossessory
+dispost
+disposure
+dispowder
+dispractice
+dispraise
+dispraiser
+dispraisingly
+dispread
+dispreader
+disprejudice
+disprepare
+disprince
+disprison
+disprivacied
+disprivilege
+disprize
+disprobabilization
+disprobabilize
+disprobative
+dispromise
+disproof
+disproportion
+disproportionable
+disproportionableness
+disproportionably
+disproportional
+disproportionality
+disproportionally
+disproportionalness
+disproportionate
+disproportionately
+disproportionateness
+disproportionation
+disprovable
+disproval
+disprove
+disprovement
+disproven
+disprover
+dispulp
+dispunct
+dispunishable
+dispunitive
+disputability
+disputable
+disputableness
+disputably
+disputant
+disputation
+disputatious
+disputatiously
+disputatiousness
+disputative
+disputatively
+disputativeness
+disputator
+dispute
+disputeless
+disputer
+disqualification
+disqualify
+disquantity
+disquiet
+disquieted
+disquietedly
+disquietedness
+disquieten
+disquieter
+disquieting
+disquietingly
+disquietly
+disquietness
+disquietude
+disquiparancy
+disquiparant
+disquiparation
+disquisite
+disquisition
+disquisitional
+disquisitionary
+disquisitive
+disquisitively
+disquisitor
+disquisitorial
+disquisitory
+disquixote
+disrank
+disrate
+disrealize
+disrecommendation
+disregard
+disregardable
+disregardance
+disregardant
+disregarder
+disregardful
+disregardfully
+disregardfulness
+disrelated
+disrelation
+disrelish
+disrelishable
+disremember
+disrepair
+disreputability
+disreputable
+disreputableness
+disreputably
+disreputation
+disrepute
+disrespect
+disrespecter
+disrespectful
+disrespectfully
+disrespectfulness
+disrestore
+disring
+disrobe
+disrobement
+disrober
+disroof
+disroost
+disroot
+disrudder
+disrump
+disrupt
+disruptability
+disruptable
+disrupter
+disruption
+disruptionist
+disruptive
+disruptively
+disruptiveness
+disruptment
+disruptor
+disrupture
+diss
+dissatisfaction
+dissatisfactoriness
+dissatisfactory
+dissatisfied
+dissatisfiedly
+dissatisfiedness
+dissatisfy
+dissaturate
+disscepter
+disseat
+dissect
+dissected
+dissectible
+dissecting
+dissection
+dissectional
+dissective
+dissector
+disseize
+disseizee
+disseizin
+disseizor
+disseizoress
+disselboom
+dissemblance
+dissemble
+dissembler
+dissemblingly
+dissembly
+dissemilative
+disseminate
+dissemination
+disseminative
+disseminator
+disseminule
+dissension
+dissensualize
+dissent
+dissentaneous
+dissentaneousness
+dissenter
+dissenterism
+dissentience
+dissentiency
+dissentient
+dissenting
+dissentingly
+dissentious
+dissentiously
+dissentism
+dissentment
+dissepiment
+dissepimental
+dissert
+dissertate
+dissertation
+dissertational
+dissertationist
+dissertative
+dissertator
+disserve
+disservice
+disserviceable
+disserviceableness
+disserviceably
+dissettlement
+dissever
+disseverance
+disseverment
+disshadow
+dissheathe
+disshroud
+dissidence
+dissident
+dissidently
+dissight
+dissightly
+dissiliency
+dissilient
+dissimilar
+dissimilarity
+dissimilarly
+dissimilars
+dissimilate
+dissimilation
+dissimilatory
+dissimile
+dissimilitude
+dissimulate
+dissimulation
+dissimulative
+dissimulator
+dissimule
+dissimuler
+dissipable
+dissipate
+dissipated
+dissipatedly
+dissipatedness
+dissipater
+dissipation
+dissipative
+dissipativity
+dissipator
+dissociability
+dissociable
+dissociableness
+dissocial
+dissociality
+dissocialize
+dissociant
+dissociate
+dissociation
+dissociative
+dissoconch
+dissogeny
+dissogony
+dissolubility
+dissoluble
+dissolubleness
+dissolute
+dissolutely
+dissoluteness
+dissolution
+dissolutional
+dissolutionism
+dissolutionist
+dissolutive
+dissolvable
+dissolvableness
+dissolve
+dissolveability
+dissolvent
+dissolver
+dissolving
+dissolvingly
+dissonance
+dissonancy
+dissonant
+dissonantly
+dissonous
+dissoul
+dissuade
+dissuader
+dissuasion
+dissuasive
+dissuasively
+dissuasiveness
+dissuasory
+dissuit
+dissuitable
+dissuited
+dissyllabic
+dissyllabification
+dissyllabify
+dissyllabism
+dissyllabize
+dissyllable
+dissymmetric
+dissymmetrical
+dissymmetrically
+dissymmetry
+dissympathize
+dissympathy
+distad
+distaff
+distain
+distal
+distale
+distally
+distalwards
+distance
+distanceless
+distancy
+distannic
+distant
+distantly
+distantness
+distaste
+distasted
+distasteful
+distastefully
+distastefulness
+distater
+distemonous
+distemper
+distemperature
+distempered
+distemperedly
+distemperedness
+distemperer
+distenant
+distend
+distendedly
+distender
+distensibility
+distensible
+distensive
+distent
+distention
+disthene
+disthrall
+disthrone
+distich
+Distichlis
+distichous
+distichously
+distill
+distillable
+distillage
+distilland
+distillate
+distillation
+distillatory
+distilled
+distiller
+distillery
+distilling
+distillmint
+distinct
+distinctify
+distinction
+distinctional
+distinctionless
+distinctive
+distinctively
+distinctiveness
+distinctly
+distinctness
+distingue
+distinguish
+distinguishability
+distinguishable
+distinguishableness
+distinguishably
+distinguished
+distinguishedly
+distinguisher
+distinguishing
+distinguishingly
+distinguishment
+distoclusion
+Distoma
+Distomatidae
+distomatosis
+distomatous
+distome
+distomian
+distomiasis
+Distomidae
+Distomum
+distort
+distorted
+distortedly
+distortedness
+distorter
+distortion
+distortional
+distortionist
+distortionless
+distortive
+distract
+distracted
+distractedly
+distractedness
+distracter
+distractibility
+distractible
+distractingly
+distraction
+distractive
+distractively
+distrain
+distrainable
+distrainee
+distrainer
+distrainment
+distrainor
+distraint
+distrait
+distraite
+distraught
+distress
+distressed
+distressedly
+distressedness
+distressful
+distressfully
+distressfulness
+distressing
+distressingly
+distributable
+distributary
+distribute
+distributed
+distributedly
+distributee
+distributer
+distribution
+distributional
+distributionist
+distributival
+distributive
+distributively
+distributiveness
+distributor
+distributress
+district
+distrouser
+distrust
+distruster
+distrustful
+distrustfully
+distrustfulness
+distrustingly
+distune
+disturb
+disturbance
+disturbative
+disturbed
+disturbedly
+disturber
+disturbing
+disturbingly
+disturn
+disturnpike
+disubstituted
+disubstitution
+disulfonic
+disulfuric
+disulphate
+disulphide
+disulphonate
+disulphone
+disulphonic
+disulphoxide
+disulphuret
+disulphuric
+disuniform
+disuniformity
+disunify
+disunion
+disunionism
+disunionist
+disunite
+disuniter
+disunity
+disusage
+disusance
+disuse
+disutility
+disutilize
+disvaluation
+disvalue
+disvertebrate
+disvisage
+disvoice
+disvulnerability
+diswarren
+diswench
+diswood
+disworth
+disyllabic
+disyllable
+disyoke
+dit
+dita
+dital
+ditch
+ditchbank
+ditchbur
+ditchdigger
+ditchdown
+ditcher
+ditchless
+ditchside
+ditchwater
+dite
+diter
+diterpene
+ditertiary
+ditetragonal
+dithalous
+dithecal
+ditheism
+ditheist
+ditheistic
+ditheistical
+dithematic
+dither
+dithery
+dithiobenzoic
+dithioglycol
+dithioic
+dithion
+dithionate
+dithionic
+dithionite
+dithionous
+dithymol
+dithyramb
+dithyrambic
+dithyrambically
+Dithyrambos
+Dithyrambus
+ditokous
+ditolyl
+ditone
+ditrematous
+ditremid
+Ditremidae
+ditrichotomous
+ditriglyph
+ditriglyphic
+ditrigonal
+ditrigonally
+Ditrocha
+ditrochean
+ditrochee
+ditrochous
+ditroite
+dittamy
+dittander
+dittany
+dittay
+dittied
+ditto
+dittogram
+dittograph
+dittographic
+dittography
+dittology
+ditty
+diumvirate
+diuranate
+diureide
+diuresis
+diuretic
+diuretically
+diureticalness
+Diurna
+diurnal
+diurnally
+diurnalness
+diurnation
+diurne
+diurnule
+diuturnal
+diuturnity
+div
+diva
+divagate
+divagation
+divalence
+divalent
+divan
+divariant
+divaricate
+divaricately
+divaricating
+divaricatingly
+divarication
+divaricator
+divata
+dive
+divekeeper
+divel
+divellent
+divellicate
+diver
+diverge
+divergement
+divergence
+divergency
+divergent
+divergently
+diverging
+divergingly
+divers
+diverse
+diversely
+diverseness
+diversicolored
+diversifiability
+diversifiable
+diversification
+diversified
+diversifier
+diversiflorate
+diversiflorous
+diversifoliate
+diversifolious
+diversiform
+diversify
+diversion
+diversional
+diversionary
+diversipedate
+diversisporous
+diversity
+diversly
+diversory
+divert
+divertedly
+diverter
+divertibility
+divertible
+diverticle
+diverticular
+diverticulate
+diverticulitis
+diverticulosis
+diverticulum
+diverting
+divertingly
+divertingness
+divertisement
+divertive
+divertor
+divest
+divestible
+divestitive
+divestiture
+divestment
+divesture
+dividable
+dividableness
+divide
+divided
+dividedly
+dividedness
+dividend
+divider
+dividing
+dividingly
+dividual
+dividualism
+dividually
+dividuity
+dividuous
+divinable
+divinail
+divination
+divinator
+divinatory
+divine
+divinely
+divineness
+diviner
+divineress
+diving
+divinify
+divining
+diviningly
+divinity
+divinityship
+divinization
+divinize
+divinyl
+divisibility
+divisible
+divisibleness
+divisibly
+division
+divisional
+divisionally
+divisionary
+divisionism
+divisionist
+divisionistic
+divisive
+divisively
+divisiveness
+divisor
+divisorial
+divisory
+divisural
+divorce
+divorceable
+divorcee
+divorcement
+divorcer
+divorcible
+divorcive
+divot
+divoto
+divulgate
+divulgater
+divulgation
+divulgatory
+divulge
+divulgement
+divulgence
+divulger
+divulse
+divulsion
+divulsive
+divulsor
+divus
+Divvers
+divvy
+diwata
+dixenite
+Dixie
+dixie
+Dixiecrat
+dixit
+dixy
+dizain
+dizen
+dizenment
+dizoic
+dizygotic
+dizzard
+dizzily
+dizziness
+dizzy
+Djagatay
+djasakid
+djave
+djehad
+djerib
+djersa
+Djuka
+do
+doab
+doable
+doarium
+doat
+doated
+doater
+doating
+doatish
+Dob
+dob
+dobbed
+dobber
+dobbin
+dobbing
+dobby
+dobe
+dobla
+doblon
+dobra
+dobrao
+dobson
+doby
+doc
+docent
+docentship
+Docetae
+Docetic
+Docetically
+Docetism
+Docetist
+Docetistic
+Docetize
+dochmiac
+dochmiacal
+dochmiasis
+dochmius
+docibility
+docible
+docibleness
+docile
+docilely
+docility
+docimasia
+docimastic
+docimastical
+docimasy
+docimology
+docity
+dock
+dockage
+docken
+docker
+docket
+dockhead
+dockhouse
+dockization
+dockize
+dockland
+dockmackie
+dockman
+dockmaster
+dockside
+dockyard
+dockyardman
+docmac
+Docoglossa
+docoglossan
+docoglossate
+docosane
+doctor
+doctoral
+doctorally
+doctorate
+doctorbird
+doctordom
+doctoress
+doctorfish
+doctorhood
+doctorial
+doctorially
+doctorization
+doctorize
+doctorless
+doctorlike
+doctorly
+doctorship
+doctress
+doctrinaire
+doctrinairism
+doctrinal
+doctrinalism
+doctrinalist
+doctrinality
+doctrinally
+doctrinarian
+doctrinarianism
+doctrinarily
+doctrinarity
+doctrinary
+doctrinate
+doctrine
+doctrinism
+doctrinist
+doctrinization
+doctrinize
+doctrix
+document
+documental
+documentalist
+documentarily
+documentary
+documentation
+documentize
+dod
+dodd
+doddart
+dodded
+dodder
+doddered
+dodderer
+doddering
+doddery
+doddie
+dodding
+doddle
+doddy
+doddypoll
+Dode
+dodecade
+dodecadrachm
+dodecafid
+dodecagon
+dodecagonal
+dodecahedral
+dodecahedric
+dodecahedron
+dodecahydrate
+dodecahydrated
+dodecamerous
+dodecane
+Dodecanesian
+dodecanoic
+dodecant
+dodecapartite
+dodecapetalous
+dodecarch
+dodecarchy
+dodecasemic
+dodecastyle
+dodecastylos
+dodecasyllabic
+dodecasyllable
+dodecatemory
+Dodecatheon
+dodecatoic
+dodecatyl
+dodecatylic
+dodecuplet
+dodecyl
+dodecylene
+dodecylic
+dodge
+dodgeful
+dodger
+dodgery
+dodgily
+dodginess
+dodgy
+dodkin
+dodlet
+dodman
+dodo
+dodoism
+Dodona
+Dodonaea
+Dodonaeaceae
+Dodonaean
+Dodonean
+Dodonian
+dodrans
+doe
+doebird
+Doedicurus
+Doeg
+doeglic
+doegling
+doer
+does
+doeskin
+doesnt
+doest
+doff
+doffer
+doftberry
+dog
+dogal
+dogate
+dogbane
+Dogberry
+dogberry
+Dogberrydom
+Dogberryism
+dogbite
+dogblow
+dogboat
+dogbolt
+dogbush
+dogcart
+dogcatcher
+dogdom
+doge
+dogedom
+dogeless
+dogeship
+dogface
+dogfall
+dogfight
+dogfish
+dogfoot
+dogged
+doggedly
+doggedness
+dogger
+doggerel
+doggereler
+doggerelism
+doggerelist
+doggerelize
+doggerelizer
+doggery
+doggess
+doggish
+doggishly
+doggishness
+doggo
+doggone
+doggoned
+doggrel
+doggrelize
+doggy
+doghead
+doghearted
+doghole
+doghood
+doghouse
+dogie
+dogless
+doglike
+dogly
+dogma
+dogman
+dogmata
+dogmatic
+dogmatical
+dogmatically
+dogmaticalness
+dogmatician
+dogmatics
+dogmatism
+dogmatist
+dogmatization
+dogmatize
+dogmatizer
+dogmouth
+dogplate
+dogproof
+Dogra
+Dogrib
+dogs
+dogship
+dogshore
+dogskin
+dogsleep
+dogstone
+dogtail
+dogtie
+dogtooth
+dogtoothing
+dogtrick
+dogtrot
+dogvane
+dogwatch
+dogwood
+dogy
+doigt
+doiled
+doily
+doina
+doing
+doings
+doit
+doited
+doitkin
+doitrified
+doke
+Doketic
+Doketism
+dokhma
+dokimastic
+Dokmarok
+Doko
+Dol
+dola
+dolabra
+dolabrate
+dolabriform
+dolcan
+dolcian
+dolciano
+dolcino
+doldrum
+doldrums
+dole
+dolefish
+doleful
+dolefully
+dolefulness
+dolefuls
+dolent
+dolently
+dolerite
+doleritic
+dolerophanite
+dolesman
+dolesome
+dolesomely
+dolesomeness
+doless
+doli
+dolia
+dolichoblond
+dolichocephal
+dolichocephali
+dolichocephalic
+dolichocephalism
+dolichocephalize
+dolichocephalous
+dolichocephaly
+dolichocercic
+dolichocnemic
+dolichocranial
+dolichofacial
+Dolichoglossus
+dolichohieric
+Dolicholus
+dolichopellic
+dolichopodous
+dolichoprosopic
+Dolichopsyllidae
+Dolichos
+dolichos
+dolichosaur
+Dolichosauri
+Dolichosauria
+Dolichosaurus
+Dolichosoma
+dolichostylous
+dolichotmema
+dolichuric
+dolichurus
+Doliidae
+dolina
+doline
+dolioform
+Doliolidae
+Doliolum
+dolium
+doll
+dollar
+dollarbird
+dollardee
+dollardom
+dollarfish
+dollarleaf
+dollbeer
+dolldom
+dollface
+dollfish
+dollhood
+dollhouse
+dollier
+dolliness
+dollish
+dollishly
+dollishness
+dollmaker
+dollmaking
+dollop
+dollship
+dolly
+dollyman
+dollyway
+dolman
+dolmen
+dolmenic
+Dolomedes
+dolomite
+dolomitic
+dolomitization
+dolomitize
+dolomization
+dolomize
+dolor
+Dolores
+doloriferous
+dolorific
+dolorifuge
+dolorous
+dolorously
+dolorousness
+dolose
+dolous
+Dolph
+dolphin
+dolphinlike
+Dolphus
+dolt
+dolthead
+doltish
+doltishly
+doltishness
+dom
+domain
+domainal
+domal
+domanial
+domatium
+domatophobia
+domba
+Dombeya
+Domdaniel
+dome
+domelike
+doment
+domer
+domesday
+domestic
+domesticable
+domesticality
+domestically
+domesticate
+domestication
+domesticative
+domesticator
+domesticity
+domesticize
+domett
+domeykite
+domic
+domical
+domically
+Domicella
+domicile
+domicilement
+domiciliar
+domiciliary
+domiciliate
+domiciliation
+dominance
+dominancy
+dominant
+dominantly
+dominate
+dominated
+dominatingly
+domination
+dominative
+dominator
+domine
+domineer
+domineerer
+domineering
+domineeringly
+domineeringness
+dominial
+Dominic
+dominical
+dominicale
+Dominican
+Dominick
+dominie
+dominion
+dominionism
+dominionist
+Dominique
+dominium
+domino
+dominus
+domitable
+domite
+Domitian
+domitic
+domn
+domnei
+domoid
+dompt
+domy
+Don
+don
+donable
+Donacidae
+donaciform
+Donal
+Donald
+Donar
+donary
+donatary
+donate
+donated
+donatee
+Donatiaceae
+donation
+Donatism
+Donatist
+Donatistic
+Donatistical
+donative
+donatively
+donator
+donatory
+donatress
+donax
+doncella
+Dondia
+done
+donee
+Donet
+doney
+dong
+donga
+Dongola
+Dongolese
+dongon
+Donia
+donjon
+donkey
+donkeyback
+donkeyish
+donkeyism
+donkeyman
+donkeywork
+Donmeh
+Donn
+Donna
+donna
+Donne
+donnered
+donnert
+Donnie
+donnish
+donnishness
+donnism
+donnot
+donor
+donorship
+donought
+Donovan
+donship
+donsie
+dont
+donum
+doob
+doocot
+doodab
+doodad
+Doodia
+doodle
+doodlebug
+doodler
+doodlesack
+doohickey
+doohickus
+doohinkey
+doohinkus
+dooja
+dook
+dooket
+dookit
+dool
+doolee
+dooley
+dooli
+doolie
+dooly
+doom
+doomage
+doombook
+doomer
+doomful
+dooms
+doomsday
+doomsman
+doomstead
+doon
+door
+doorba
+doorbell
+doorboy
+doorbrand
+doorcase
+doorcheek
+doored
+doorframe
+doorhead
+doorjamb
+doorkeeper
+doorknob
+doorless
+doorlike
+doormaid
+doormaker
+doormaking
+doorman
+doornail
+doorplate
+doorpost
+doorsill
+doorstead
+doorstep
+doorstone
+doorstop
+doorward
+doorway
+doorweed
+doorwise
+dooryard
+dop
+dopa
+dopamelanin
+dopaoxidase
+dopatta
+dope
+dopebook
+doper
+dopester
+dopey
+doppelkummel
+Dopper
+dopper
+doppia
+Doppler
+dopplerite
+Dor
+dor
+Dora
+dorab
+dorad
+Doradidae
+dorado
+doraphobia
+Dorask
+Doraskean
+dorbeetle
+Dorcas
+dorcastry
+Dorcatherium
+Dorcopsis
+doree
+dorestane
+dorhawk
+Dori
+doria
+Dorian
+Doric
+Dorical
+Doricism
+Doricize
+Dorididae
+Dorine
+Doris
+Dorism
+Dorize
+dorje
+Dorking
+dorlach
+dorlot
+dorm
+dormancy
+dormant
+dormer
+dormered
+dormie
+dormient
+dormilona
+dormition
+dormitive
+dormitory
+dormouse
+dormy
+dorn
+dorneck
+dornic
+dornick
+dornock
+Dorobo
+Doronicum
+Dorosoma
+Dorothea
+Dorothy
+dorp
+dorsabdominal
+dorsabdominally
+dorsad
+dorsal
+dorsale
+dorsalgia
+dorsalis
+dorsally
+dorsalmost
+dorsalward
+dorsalwards
+dorsel
+dorser
+dorsibranch
+Dorsibranchiata
+dorsibranchiate
+dorsicollar
+dorsicolumn
+dorsicommissure
+dorsicornu
+dorsiduct
+dorsiferous
+dorsifixed
+dorsiflex
+dorsiflexion
+dorsiflexor
+dorsigrade
+dorsilateral
+dorsilumbar
+dorsimedian
+dorsimesal
+dorsimeson
+dorsiparous
+dorsispinal
+dorsiventral
+dorsiventrality
+dorsiventrally
+dorsoabdominal
+dorsoanterior
+dorsoapical
+Dorsobranchiata
+dorsocaudad
+dorsocaudal
+dorsocentral
+dorsocephalad
+dorsocephalic
+dorsocervical
+dorsocervically
+dorsodynia
+dorsoepitrochlear
+dorsointercostal
+dorsointestinal
+dorsolateral
+dorsolumbar
+dorsomedial
+dorsomedian
+dorsomesal
+dorsonasal
+dorsonuchal
+dorsopleural
+dorsoposteriad
+dorsoposterior
+dorsoradial
+dorsosacral
+dorsoscapular
+dorsosternal
+dorsothoracic
+dorsoventrad
+dorsoventral
+dorsoventrally
+Dorstenia
+dorsulum
+dorsum
+dorsumbonal
+dorter
+dortiness
+dortiship
+dorts
+dorty
+doruck
+Dory
+dory
+Doryanthes
+Dorylinae
+doryphorus
+dos
+dosa
+dosadh
+dosage
+dose
+doser
+dosimeter
+dosimetric
+dosimetrician
+dosimetrist
+dosimetry
+Dosinia
+dosiology
+dosis
+Dositheans
+dosology
+doss
+dossal
+dossel
+dosser
+dosseret
+dossier
+dossil
+dossman
+Dot
+dot
+dotage
+dotal
+dotard
+dotardism
+dotardly
+dotardy
+dotate
+dotation
+dotchin
+dote
+doted
+doter
+Dothideacea
+dothideaceous
+Dothideales
+Dothidella
+dothienenteritis
+Dothiorella
+dotiness
+doting
+dotingly
+dotingness
+dotish
+dotishness
+dotkin
+dotless
+dotlike
+Doto
+Dotonidae
+dotriacontane
+dotted
+dotter
+dotterel
+dottily
+dottiness
+dotting
+dottle
+dottler
+Dottore
+Dotty
+dotty
+doty
+douar
+double
+doubled
+doubledamn
+doubleganger
+doublegear
+doublehanded
+doublehandedly
+doublehandedness
+doublehatching
+doublehearted
+doubleheartedness
+doublehorned
+doubleleaf
+doublelunged
+doubleness
+doubler
+doublet
+doubleted
+doubleton
+doubletone
+doubletree
+doublets
+doubling
+doubloon
+doubly
+doubt
+doubtable
+doubtably
+doubtedly
+doubter
+doubtful
+doubtfully
+doubtfulness
+doubting
+doubtingly
+doubtingness
+doubtless
+doubtlessly
+doubtlessness
+doubtmonger
+doubtous
+doubtsome
+douc
+douce
+doucely
+douceness
+doucet
+douche
+doucin
+doucine
+doudle
+Doug
+dough
+doughbird
+doughboy
+doughface
+doughfaceism
+doughfoot
+doughhead
+doughiness
+doughlike
+doughmaker
+doughmaking
+doughman
+doughnut
+dought
+doughtily
+doughtiness
+doughty
+doughy
+Douglas
+doulocracy
+doum
+doundake
+doup
+douping
+dour
+dourine
+dourly
+dourness
+douse
+douser
+dout
+douter
+doutous
+douzepers
+douzieme
+dove
+dovecot
+doveflower
+dovefoot
+dovehouse
+dovekey
+dovekie
+dovelet
+dovelike
+doveling
+dover
+dovetail
+dovetailed
+dovetailer
+dovetailwise
+doveweed
+dovewood
+dovish
+Dovyalis
+dow
+dowable
+dowager
+dowagerism
+dowcet
+dowd
+dowdily
+dowdiness
+dowdy
+dowdyish
+dowdyism
+dowed
+dowel
+dower
+doweral
+doweress
+dowerless
+dowery
+dowf
+dowie
+Dowieism
+Dowieite
+dowily
+dowiness
+dowitch
+dowitcher
+dowl
+dowlas
+dowless
+down
+downbear
+downbeard
+downbeat
+downby
+downcast
+downcastly
+downcastness
+downcome
+downcomer
+downcoming
+downcry
+downcurved
+downcut
+downdale
+downdraft
+downer
+downface
+downfall
+downfallen
+downfalling
+downfeed
+downflow
+downfold
+downfolded
+downgate
+downgone
+downgrade
+downgrowth
+downhanging
+downhaul
+downheaded
+downhearted
+downheartedly
+downheartedness
+downhill
+downily
+downiness
+Downing
+Downingia
+downland
+downless
+downlie
+downlier
+downligging
+downlike
+downline
+downlooked
+downlooker
+downlying
+downmost
+downness
+downpour
+downpouring
+downright
+downrightly
+downrightness
+downrush
+downrushing
+downset
+downshare
+downshore
+downside
+downsinking
+downsitting
+downsliding
+downslip
+downslope
+downsman
+downspout
+downstage
+downstairs
+downstate
+downstater
+downstream
+downstreet
+downstroke
+downswing
+downtake
+downthrow
+downthrown
+downthrust
+Downton
+downtown
+downtrampling
+downtreading
+downtrend
+downtrodden
+downtroddenness
+downturn
+downward
+downwardly
+downwardness
+downway
+downweed
+downweigh
+downweight
+downweighted
+downwind
+downwith
+downy
+dowp
+dowry
+dowsabel
+dowse
+dowser
+dowset
+doxa
+Doxantha
+doxastic
+doxasticon
+doxographer
+doxographical
+doxography
+doxological
+doxologically
+doxologize
+doxology
+doxy
+Doyle
+doze
+dozed
+dozen
+dozener
+dozenth
+dozer
+dozily
+doziness
+dozy
+dozzled
+drab
+Draba
+drabbet
+drabbish
+drabble
+drabbler
+drabbletail
+drabbletailed
+drabby
+drably
+drabness
+Dracaena
+Dracaenaceae
+drachm
+drachma
+drachmae
+drachmai
+drachmal
+dracma
+Draco
+Dracocephalum
+Draconian
+Draconianism
+Draconic
+draconic
+Draconically
+Draconid
+Draconis
+Draconism
+draconites
+draconitic
+dracontian
+dracontiasis
+dracontic
+dracontine
+dracontites
+Dracontium
+dracunculus
+draegerman
+draff
+draffman
+draffy
+draft
+draftage
+draftee
+drafter
+draftily
+draftiness
+drafting
+draftman
+draftmanship
+draftproof
+draftsman
+draftsmanship
+draftswoman
+draftswomanship
+draftwoman
+drafty
+drag
+dragade
+dragbar
+dragbolt
+dragged
+dragger
+draggily
+dragginess
+dragging
+draggingly
+draggle
+draggletail
+draggletailed
+draggletailedly
+draggletailedness
+draggly
+draggy
+draghound
+dragline
+dragman
+dragnet
+drago
+dragoman
+dragomanate
+dragomanic
+dragomanish
+dragon
+dragonesque
+dragoness
+dragonet
+dragonfish
+dragonfly
+dragonhead
+dragonhood
+dragonish
+dragonism
+dragonize
+dragonkind
+dragonlike
+dragonnade
+dragonroot
+dragontail
+dragonwort
+dragoon
+dragoonable
+dragoonade
+dragoonage
+dragooner
+dragrope
+dragsaw
+dragsawing
+dragsman
+dragstaff
+drail
+drain
+drainable
+drainage
+drainboard
+draine
+drained
+drainer
+drainerman
+drainless
+drainman
+drainpipe
+draintile
+draisine
+drake
+drakestone
+drakonite
+dram
+drama
+dramalogue
+Dramamine
+dramatic
+dramatical
+dramatically
+dramaticism
+dramatics
+dramaticule
+dramatism
+dramatist
+dramatizable
+dramatization
+dramatize
+dramatizer
+dramaturge
+dramaturgic
+dramaturgical
+dramaturgist
+dramaturgy
+dramm
+drammage
+dramme
+drammed
+drammer
+dramming
+drammock
+dramseller
+dramshop
+drang
+drank
+drant
+drapable
+Draparnaldia
+drape
+drapeable
+draper
+draperess
+draperied
+drapery
+drapetomania
+drapping
+drassid
+Drassidae
+drastic
+drastically
+drat
+dratchell
+drate
+dratted
+dratting
+draught
+draughtboard
+draughthouse
+draughtman
+draughtmanship
+draughts
+draughtsman
+draughtsmanship
+draughtswoman
+draughtswomanship
+Dravida
+Dravidian
+Dravidic
+dravya
+draw
+drawable
+drawarm
+drawback
+drawbar
+drawbeam
+drawbench
+drawboard
+drawbolt
+drawbore
+drawboy
+drawbridge
+Drawcansir
+drawcut
+drawdown
+drawee
+drawer
+drawers
+drawfile
+drawfiling
+drawgate
+drawgear
+drawglove
+drawhead
+drawhorse
+drawing
+drawk
+drawknife
+drawknot
+drawl
+drawlatch
+drawler
+drawling
+drawlingly
+drawlingness
+drawlink
+drawloom
+drawly
+drawn
+drawnet
+drawoff
+drawout
+drawplate
+drawpoint
+drawrod
+drawshave
+drawsheet
+drawspan
+drawspring
+drawstop
+drawstring
+drawtongs
+drawtube
+dray
+drayage
+drayman
+drazel
+dread
+dreadable
+dreader
+dreadful
+dreadfully
+dreadfulness
+dreadingly
+dreadless
+dreadlessly
+dreadlessness
+dreadly
+dreadness
+dreadnought
+dream
+dreamage
+dreamer
+dreamery
+dreamful
+dreamfully
+dreamfulness
+dreamhole
+dreamily
+dreaminess
+dreamingly
+dreamish
+dreamland
+dreamless
+dreamlessly
+dreamlessness
+dreamlet
+dreamlike
+dreamlit
+dreamlore
+dreamsily
+dreamsiness
+dreamsy
+dreamt
+dreamtide
+dreamwhile
+dreamwise
+dreamworld
+dreamy
+drear
+drearfully
+drearily
+dreariment
+dreariness
+drearisome
+drearly
+drearness
+dreary
+dredge
+dredgeful
+dredger
+dredging
+dree
+dreep
+dreepiness
+dreepy
+dreg
+dreggily
+dregginess
+dreggish
+dreggy
+dregless
+dregs
+dreiling
+Dreissensia
+dreissiger
+drench
+drencher
+drenching
+drenchingly
+dreng
+drengage
+Drepanaspis
+Drepanidae
+Drepanididae
+drepaniform
+Drepanis
+drepanium
+drepanoid
+Dreparnaudia
+dress
+dressage
+dressed
+dresser
+dressership
+dressily
+dressiness
+dressing
+dressline
+dressmaker
+dressmakership
+dressmakery
+dressmaking
+dressy
+drest
+Drew
+drew
+drewite
+Dreyfusism
+Dreyfusist
+drias
+drib
+dribble
+dribblement
+dribbler
+driblet
+driddle
+dried
+drier
+drierman
+driest
+drift
+driftage
+driftbolt
+drifter
+drifting
+driftingly
+driftland
+driftless
+driftlessness
+driftlet
+driftman
+driftpiece
+driftpin
+driftway
+driftweed
+driftwind
+driftwood
+drifty
+drightin
+drill
+driller
+drillet
+drilling
+drillman
+drillmaster
+drillstock
+Drimys
+dringle
+drink
+drinkability
+drinkable
+drinkableness
+drinkably
+drinker
+drinking
+drinkless
+drinkproof
+drinn
+drip
+dripper
+dripping
+dripple
+dripproof
+drippy
+dripstick
+dripstone
+drisheen
+drisk
+drivable
+drivage
+drive
+driveaway
+driveboat
+drivebolt
+drivehead
+drivel
+driveler
+drivelingly
+driven
+drivepipe
+driver
+driverless
+drivership
+drivescrew
+driveway
+drivewell
+driving
+drivingly
+drizzle
+drizzly
+drochuil
+droddum
+drofland
+drogh
+drogher
+drogherman
+drogue
+droit
+droitsman
+droitural
+droiturel
+Drokpa
+droll
+drollery
+drollingly
+drollish
+drollishness
+drollist
+drollness
+drolly
+Dromaeognathae
+dromaeognathism
+dromaeognathous
+Dromaeus
+drome
+dromedarian
+dromedarist
+dromedary
+drometer
+Dromiacea
+dromic
+Dromiceiidae
+Dromiceius
+Dromicia
+dromograph
+dromomania
+dromometer
+dromond
+Dromornis
+dromos
+dromotropic
+drona
+dronage
+drone
+dronepipe
+droner
+drongo
+droningly
+dronish
+dronishly
+dronishness
+dronkgrass
+drony
+drool
+droop
+drooper
+drooping
+droopingly
+droopingness
+droopt
+droopy
+drop
+dropberry
+dropcloth
+dropflower
+drophead
+droplet
+droplight
+droplike
+dropling
+dropman
+dropout
+dropper
+dropping
+droppingly
+droppy
+dropseed
+dropsical
+dropsically
+dropsicalness
+dropsied
+dropsy
+dropsywort
+dropt
+dropwise
+dropworm
+dropwort
+Droschken
+Drosera
+Droseraceae
+droseraceous
+droshky
+drosky
+drosograph
+drosometer
+Drosophila
+Drosophilidae
+Drosophyllum
+dross
+drossel
+drosser
+drossiness
+drossless
+drossy
+drostdy
+droud
+drought
+droughtiness
+droughty
+drouk
+drove
+drover
+drovy
+drow
+drown
+drowner
+drowningly
+drowse
+drowsily
+drowsiness
+drowsy
+drub
+drubber
+drubbing
+drubbly
+drucken
+drudge
+drudger
+drudgery
+drudgingly
+drudgism
+druery
+drug
+drugeteria
+drugger
+druggery
+drugget
+druggeting
+druggist
+druggister
+druggy
+drugless
+drugman
+drugshop
+drugstore
+druid
+druidess
+druidic
+druidical
+druidism
+druidry
+druith
+Drukpa
+drum
+drumbeat
+drumble
+drumbledore
+drumbler
+drumfire
+drumfish
+drumhead
+drumheads
+drumlike
+drumlin
+drumline
+drumlinoid
+drumloid
+drumloidal
+drumly
+drummer
+drumming
+drummy
+drumskin
+drumstick
+drumwood
+drung
+drungar
+drunk
+drunkard
+drunken
+drunkenly
+drunkenness
+drunkensome
+drunkenwise
+drunkery
+Drupa
+Drupaceae
+drupaceous
+drupal
+drupe
+drupel
+drupelet
+drupeole
+drupetum
+drupiferous
+Druse
+druse
+Drusean
+Drusedom
+drusy
+druxiness
+druxy
+dry
+dryad
+dryadetum
+dryadic
+dryas
+dryasdust
+drybeard
+drybrained
+drycoal
+Drydenian
+Drydenism
+dryfoot
+drygoodsman
+dryhouse
+drying
+dryish
+dryly
+Drynaria
+dryness
+Dryobalanops
+Dryope
+Dryopes
+Dryophyllum
+Dryopians
+dryopithecid
+Dryopithecinae
+dryopithecine
+Dryopithecus
+Dryops
+Dryopteris
+dryopteroid
+drysalter
+drysaltery
+dryster
+dryth
+dryworker
+Dschubba
+duad
+duadic
+dual
+Duala
+duali
+dualin
+dualism
+dualist
+dualistic
+dualistically
+duality
+dualization
+dualize
+dually
+Dualmutef
+dualogue
+Duane
+duarch
+duarchy
+dub
+dubash
+dubb
+dubba
+dubbah
+dubbeltje
+dubber
+dubbing
+dubby
+Dubhe
+Dubhgall
+dubiety
+dubiocrystalline
+dubiosity
+dubious
+dubiously
+dubiousness
+dubitable
+dubitably
+dubitancy
+dubitant
+dubitate
+dubitatingly
+dubitation
+dubitative
+dubitatively
+Duboisia
+duboisin
+duboisine
+Dubonnet
+dubs
+ducal
+ducally
+ducamara
+ducape
+ducat
+ducato
+ducatoon
+ducdame
+duces
+Duchesnea
+Duchess
+duchess
+duchesse
+duchesslike
+duchy
+duck
+duckbill
+duckblind
+duckboard
+duckboat
+ducker
+duckery
+duckfoot
+duckhearted
+duckhood
+duckhouse
+duckhunting
+duckie
+ducking
+duckling
+ducklingship
+duckmeat
+duckpin
+duckpond
+duckstone
+duckweed
+duckwife
+duckwing
+Duco
+duct
+ducted
+ductibility
+ductible
+ductile
+ductilely
+ductileness
+ductilimeter
+ductility
+ductilize
+duction
+ductless
+ductor
+ductule
+Ducula
+Duculinae
+dud
+dudaim
+dudder
+duddery
+duddies
+dude
+dudeen
+dudgeon
+dudine
+dudish
+dudishness
+dudism
+dudler
+dudley
+Dudleya
+dudleyite
+dudman
+due
+duel
+dueler
+dueling
+duelist
+duelistic
+duello
+dueness
+duenna
+duennadom
+duennaship
+duer
+Duessa
+duet
+duettist
+duff
+duffadar
+duffel
+duffer
+dufferdom
+duffing
+dufoil
+dufrenite
+dufrenoysite
+dufter
+dufterdar
+duftery
+dug
+dugal
+dugdug
+duggler
+dugong
+Dugongidae
+dugout
+dugway
+duhat
+Duhr
+duiker
+duikerbok
+duim
+Duit
+duit
+dujan
+Duke
+duke
+dukedom
+dukeling
+dukely
+dukery
+dukeship
+dukhn
+dukker
+dukkeripen
+Dulanganes
+Dulat
+dulbert
+dulcet
+dulcetly
+dulcetness
+dulcian
+dulciana
+dulcification
+dulcifluous
+dulcify
+dulcigenic
+dulcimer
+Dulcin
+Dulcinea
+Dulcinist
+dulcitol
+dulcitude
+dulcose
+duledge
+duler
+dulia
+dull
+dullard
+dullardism
+dullardness
+dullbrained
+duller
+dullery
+dullhead
+dullhearted
+dullification
+dullify
+dullish
+dullity
+dullness
+dullpate
+dullsome
+dully
+dulosis
+dulotic
+dulse
+dulseman
+dult
+dultie
+dulwilly
+duly
+dum
+duma
+dumaist
+dumb
+dumba
+dumbbell
+dumbbeller
+dumbcow
+dumbfounder
+dumbfounderment
+dumbhead
+dumbledore
+dumbly
+dumbness
+dumdum
+dumetose
+dumfound
+dumfounder
+dumfounderment
+dummel
+dummered
+dumminess
+dummy
+dummyism
+dummyweed
+Dumontia
+Dumontiaceae
+dumontite
+dumortierite
+dumose
+dumosity
+dump
+dumpage
+dumpcart
+dumper
+dumpily
+dumpiness
+dumping
+dumpish
+dumpishly
+dumpishness
+dumple
+dumpling
+dumpoke
+dumpy
+dumsola
+dun
+dunair
+dunal
+dunbird
+Duncan
+dunce
+duncedom
+duncehood
+duncery
+dunch
+Dunciad
+duncical
+duncify
+duncish
+duncishly
+duncishness
+dundasite
+dunder
+dunderhead
+dunderheaded
+dunderheadedness
+dunderpate
+dune
+dunelike
+dunfish
+dung
+Dungan
+dungannonite
+dungaree
+dungbeck
+dungbird
+dungbred
+dungeon
+dungeoner
+dungeonlike
+dunger
+dunghill
+dunghilly
+dungol
+dungon
+dungy
+dungyard
+dunite
+dunk
+dunkadoo
+Dunkard
+Dunker
+dunker
+Dunkirk
+Dunkirker
+Dunlap
+dunlin
+Dunlop
+dunnage
+dunne
+dunner
+dunness
+dunnish
+dunnite
+dunnock
+dunny
+dunpickle
+Duns
+dunst
+dunstable
+dunt
+duntle
+duny
+dunziekte
+duo
+duocosane
+duodecahedral
+duodecahedron
+duodecane
+duodecennial
+duodecillion
+duodecimal
+duodecimality
+duodecimally
+duodecimfid
+duodecimo
+duodecimole
+duodecuple
+duodena
+duodenal
+duodenary
+duodenate
+duodenation
+duodene
+duodenectomy
+duodenitis
+duodenocholangitis
+duodenocholecystostomy
+duodenocholedochotomy
+duodenocystostomy
+duodenoenterostomy
+duodenogram
+duodenojejunal
+duodenojejunostomy
+duodenopancreatectomy
+duodenoscopy
+duodenostomy
+duodenotomy
+duodenum
+duodrama
+duograph
+duogravure
+duole
+duoliteral
+duologue
+duomachy
+duopod
+duopolistic
+duopoly
+duopsonistic
+duopsony
+duosecant
+duotone
+duotriacontane
+duotype
+dup
+dupability
+dupable
+dupe
+dupedom
+duper
+dupery
+dupion
+dupla
+duplation
+duple
+duplet
+duplex
+duplexity
+duplicability
+duplicable
+duplicand
+duplicate
+duplication
+duplicative
+duplicator
+duplicature
+duplicia
+duplicident
+Duplicidentata
+duplicidentate
+duplicipennate
+duplicitas
+duplicity
+duplification
+duplify
+duplone
+dupondius
+duppy
+dura
+durability
+durable
+durableness
+durably
+durain
+dural
+Duralumin
+duramatral
+duramen
+durance
+Durandarte
+durangite
+Durango
+Durani
+durant
+Duranta
+duraplasty
+duraquara
+duraspinalis
+duration
+durational
+durationless
+durative
+durax
+durbachite
+Durban
+durbar
+durdenite
+dure
+durene
+durenol
+duress
+duressor
+durgan
+Durham
+durian
+duridine
+Durindana
+during
+duringly
+Durio
+durity
+durmast
+durn
+duro
+Duroc
+durometer
+duroquinone
+durra
+durrie
+durrin
+durry
+durst
+durukuli
+durwaun
+duryl
+Duryodhana
+Durzada
+dusack
+duscle
+dush
+dusio
+dusk
+dusken
+duskily
+duskiness
+duskingtide
+duskish
+duskishly
+duskishness
+duskly
+duskness
+dusky
+dust
+dustbin
+dustbox
+dustcloth
+dustee
+duster
+dusterman
+dustfall
+dustily
+Dustin
+dustiness
+dusting
+dustless
+dustlessness
+dustman
+dustpan
+dustproof
+dustuck
+dustwoman
+dusty
+dustyfoot
+Dusun
+Dutch
+dutch
+Dutcher
+Dutchify
+Dutchman
+Dutchy
+duteous
+duteously
+duteousness
+dutiability
+dutiable
+dutied
+dutiful
+dutifully
+dutifulness
+dutra
+duty
+dutymonger
+duumvir
+duumviral
+duumvirate
+duvet
+duvetyn
+dux
+duyker
+dvaita
+dvandva
+dwale
+dwalm
+Dwamish
+dwang
+dwarf
+dwarfish
+dwarfishly
+dwarfishness
+dwarfism
+dwarfling
+dwarfness
+dwarfy
+dwayberry
+Dwayne
+dwell
+dwelled
+dweller
+dwelling
+dwelt
+Dwight
+dwindle
+dwindlement
+dwine
+Dwyka
+dyad
+dyadic
+Dyak
+dyakisdodecahedron
+Dyakish
+dyarchic
+dyarchical
+dyarchy
+Dyas
+Dyassic
+dyaster
+Dyaus
+dyce
+dye
+dyeable
+dyehouse
+dyeing
+dyeleaves
+dyemaker
+dyemaking
+dyer
+dyester
+dyestuff
+dyeware
+dyeweed
+dyewood
+dygogram
+dying
+dyingly
+dyingness
+dyke
+dykehopper
+dyker
+dykereeve
+Dylan
+dynagraph
+dynameter
+dynametric
+dynametrical
+dynamic
+dynamical
+dynamically
+dynamics
+dynamis
+dynamism
+dynamist
+dynamistic
+dynamitard
+dynamite
+dynamiter
+dynamitic
+dynamitical
+dynamitically
+dynamiting
+dynamitish
+dynamitism
+dynamitist
+dynamization
+dynamize
+dynamo
+dynamoelectric
+dynamoelectrical
+dynamogenesis
+dynamogenic
+dynamogenous
+dynamogenously
+dynamogeny
+dynamometamorphic
+dynamometamorphism
+dynamometamorphosed
+dynamometer
+dynamometric
+dynamometrical
+dynamometry
+dynamomorphic
+dynamoneure
+dynamophone
+dynamostatic
+dynamotor
+dynast
+Dynastes
+dynastical
+dynastically
+dynasticism
+dynastid
+dynastidan
+Dynastides
+Dynastinae
+dynasty
+dynatron
+dyne
+dyophone
+Dyophysite
+Dyophysitic
+Dyophysitical
+Dyophysitism
+dyotheism
+Dyothelete
+Dyotheletian
+Dyotheletic
+Dyotheletical
+Dyotheletism
+Dyothelism
+dyphone
+dysacousia
+dysacousis
+dysanalyte
+dysaphia
+dysarthria
+dysarthric
+dysarthrosis
+dysbulia
+dysbulic
+dyschiria
+dyschroa
+dyschroia
+dyschromatopsia
+dyschromatoptic
+dyschronous
+dyscrasia
+dyscrasial
+dyscrasic
+dyscrasite
+dyscratic
+dyscrystalline
+dysenteric
+dysenterical
+dysentery
+dysepulotic
+dysepulotical
+dyserethisia
+dysergasia
+dysergia
+dysesthesia
+dysesthetic
+dysfunction
+dysgenesic
+dysgenesis
+dysgenetic
+dysgenic
+dysgenical
+dysgenics
+dysgeogenous
+dysgnosia
+dysgraphia
+dysidrosis
+dyskeratosis
+dyskinesia
+dyskinetic
+dyslalia
+dyslexia
+dyslogia
+dyslogistic
+dyslogistically
+dyslogy
+dysluite
+dyslysin
+dysmenorrhea
+dysmenorrheal
+dysmerism
+dysmeristic
+dysmerogenesis
+dysmerogenetic
+dysmeromorph
+dysmeromorphic
+dysmetria
+dysmnesia
+dysmorphism
+dysmorphophobia
+dysneuria
+dysnomy
+dysodile
+dysodontiasis
+dysorexia
+dysorexy
+dysoxidation
+dysoxidizable
+dysoxidize
+dyspathetic
+dyspathy
+dyspepsia
+dyspepsy
+dyspeptic
+dyspeptical
+dyspeptically
+dysphagia
+dysphagic
+dysphasia
+dysphasic
+dysphemia
+dysphonia
+dysphonic
+dysphoria
+dysphoric
+dysphotic
+dysphrasia
+dysphrenia
+dyspituitarism
+dysplasia
+dysplastic
+dyspnea
+dyspneal
+dyspneic
+dyspnoic
+dysprosia
+dysprosium
+dysraphia
+dyssnite
+Dyssodia
+dysspermatism
+dyssynergia
+dyssystole
+dystaxia
+dystectic
+dysteleological
+dysteleologist
+dysteleology
+dysthyroidism
+dystocia
+dystocial
+dystome
+dystomic
+dystomous
+dystrophia
+dystrophic
+dystrophy
+dysuria
+dysuric
+dysyntribite
+dytiscid
+Dytiscidae
+Dytiscus
+dzeren
+Dzungar
+E
+e
+ea
+each
+eachwhere
+eager
+eagerly
+eagerness
+eagle
+eaglelike
+eagless
+eaglestone
+eaglet
+eaglewood
+eagre
+ean
+ear
+earache
+earbob
+earcap
+earcockle
+eardrop
+eardropper
+eardrum
+eared
+earflower
+earful
+earhole
+earing
+earjewel
+Earl
+earl
+earlap
+earldom
+Earle
+earless
+earlet
+earlike
+earliness
+earlish
+earlock
+earlship
+early
+earmark
+earn
+earner
+earnest
+earnestly
+earnestness
+earnful
+Earnie
+earning
+earnings
+earphone
+earpick
+earpiece
+earplug
+earreach
+earring
+earringed
+earscrew
+earshot
+earsore
+earsplitting
+eartab
+earth
+earthboard
+earthborn
+earthbred
+earthdrake
+earthed
+earthen
+earthenhearted
+earthenware
+earthfall
+earthfast
+earthgall
+earthgrubber
+earthian
+earthiness
+earthkin
+earthless
+earthlight
+earthlike
+earthliness
+earthling
+earthly
+earthmaker
+earthmaking
+earthnut
+earthpea
+earthquake
+earthquaked
+earthquaken
+earthquaking
+Earthshaker
+earthshine
+earthshock
+earthslide
+earthsmoke
+earthstar
+earthtongue
+earthwall
+earthward
+earthwards
+earthwork
+earthworm
+earthy
+earwax
+earwig
+earwigginess
+earwiggy
+earwitness
+earworm
+earwort
+ease
+easeful
+easefully
+easefulness
+easel
+easeless
+easement
+easer
+easier
+easiest
+easily
+easiness
+easing
+east
+eastabout
+eastbound
+Easter
+easter
+easterling
+easterly
+Eastern
+eastern
+easterner
+Easternism
+Easternly
+easternmost
+Eastertide
+easting
+Eastlake
+eastland
+eastmost
+Eastre
+eastward
+eastwardly
+easy
+easygoing
+easygoingness
+eat
+eatability
+eatable
+eatableness
+eatage
+Eatanswill
+eatberry
+eaten
+eater
+eatery
+eating
+eats
+eave
+eaved
+eavedrop
+eaver
+eaves
+eavesdrop
+eavesdropper
+eavesdropping
+ebb
+ebbman
+Eben
+Ebenaceae
+ebenaceous
+Ebenales
+ebeneous
+Ebenezer
+Eberthella
+Ebionism
+Ebionite
+Ebionitic
+Ebionitism
+Ebionize
+Eboe
+eboe
+ebon
+ebonist
+ebonite
+ebonize
+ebony
+ebracteate
+ebracteolate
+ebriate
+ebriety
+ebriosity
+ebrious
+ebriously
+ebullate
+ebullience
+ebulliency
+ebullient
+ebulliently
+ebulliometer
+ebullioscope
+ebullioscopic
+ebullioscopy
+ebullition
+ebullitive
+ebulus
+eburated
+eburine
+Eburna
+eburnated
+eburnation
+eburnean
+eburneoid
+eburneous
+eburnian
+eburnification
+ecad
+ecalcarate
+ecanda
+ecardinal
+Ecardines
+ecarinate
+ecarte
+Ecaudata
+ecaudate
+Ecballium
+ecbatic
+ecblastesis
+ecbole
+ecbolic
+Ecca
+eccaleobion
+eccentrate
+eccentric
+eccentrical
+eccentrically
+eccentricity
+eccentring
+eccentrometer
+ecchondroma
+ecchondrosis
+ecchondrotome
+ecchymoma
+ecchymose
+ecchymosis
+ecclesia
+ecclesial
+ecclesiarch
+ecclesiarchy
+ecclesiast
+Ecclesiastes
+ecclesiastic
+ecclesiastical
+ecclesiastically
+ecclesiasticism
+ecclesiasticize
+ecclesiastics
+Ecclesiasticus
+ecclesiastry
+ecclesioclastic
+ecclesiography
+ecclesiolater
+ecclesiolatry
+ecclesiologic
+ecclesiological
+ecclesiologically
+ecclesiologist
+ecclesiology
+ecclesiophobia
+eccoprotic
+eccoproticophoric
+eccrinology
+eccrisis
+eccritic
+eccyclema
+eccyesis
+ecdemic
+ecdemite
+ecderon
+ecderonic
+ecdysiast
+ecdysis
+ecesic
+ecesis
+ecgonine
+eche
+echea
+echelette
+echelon
+echelonment
+Echeloot
+Echeneidae
+echeneidid
+Echeneididae
+echeneidoid
+Echeneis
+Echeveria
+echidna
+Echidnidae
+Echimys
+Echinacea
+echinal
+echinate
+echinid
+Echinidea
+echinital
+echinite
+Echinocactus
+Echinocaris
+Echinocereus
+Echinochloa
+echinochrome
+echinococcus
+Echinoderes
+Echinoderidae
+echinoderm
+Echinoderma
+echinodermal
+Echinodermata
+echinodermatous
+echinodermic
+Echinodorus
+echinoid
+Echinoidea
+echinologist
+echinology
+Echinomys
+Echinopanax
+Echinops
+echinopsine
+Echinorhinidae
+Echinorhinus
+Echinorhynchus
+Echinospermum
+Echinosphaerites
+Echinosphaeritidae
+Echinostoma
+Echinostomatidae
+echinostome
+echinostomiasis
+Echinozoa
+echinulate
+echinulated
+echinulation
+echinuliform
+echinus
+Echis
+echitamine
+Echites
+Echium
+echiurid
+Echiurida
+echiuroid
+Echiuroidea
+Echiurus
+echo
+echoer
+echoic
+echoingly
+echoism
+echoist
+echoize
+echolalia
+echolalic
+echoless
+echometer
+echopractic
+echopraxia
+echowise
+Echuca
+eciliate
+Eciton
+ecize
+Eckehart
+ecklein
+eclair
+eclampsia
+eclamptic
+eclat
+eclectic
+eclectical
+eclectically
+eclecticism
+eclecticize
+Eclectics
+eclectism
+eclectist
+eclegm
+eclegma
+eclipsable
+eclipsareon
+eclipsation
+eclipse
+eclipser
+eclipsis
+ecliptic
+ecliptical
+ecliptically
+eclogite
+eclogue
+eclosion
+ecmnesia
+ecoid
+ecole
+ecologic
+ecological
+ecologically
+ecologist
+ecology
+econometer
+econometric
+econometrician
+econometrics
+economic
+economical
+economically
+economics
+economism
+economist
+Economite
+economization
+economize
+economizer
+economy
+ecophene
+ecophobia
+ecorticate
+ecospecies
+ecospecific
+ecospecifically
+ecostate
+ecosystem
+ecotonal
+ecotone
+ecotype
+ecotypic
+ecotypically
+ecphonesis
+ecphorable
+ecphore
+ecphoria
+ecphorization
+ecphorize
+ecphrasis
+ecrasite
+ecru
+ecrustaceous
+ecstasis
+ecstasize
+ecstasy
+ecstatic
+ecstatica
+ecstatical
+ecstatically
+ecstaticize
+ecstrophy
+ectad
+ectadenia
+ectal
+ectally
+ectasia
+ectasis
+ectatic
+ectene
+ectental
+ectepicondylar
+ectethmoid
+ectethmoidal
+Ecthesis
+ecthetically
+ecthlipsis
+ecthyma
+ectiris
+ectobatic
+ectoblast
+ectoblastic
+ectobronchium
+ectocardia
+Ectocarpaceae
+ectocarpaceous
+Ectocarpales
+ectocarpic
+ectocarpous
+Ectocarpus
+ectocinerea
+ectocinereal
+ectocoelic
+ectocondylar
+ectocondyle
+ectocondyloid
+ectocornea
+ectocranial
+ectocuneiform
+ectocuniform
+ectocyst
+ectodactylism
+ectoderm
+ectodermal
+ectodermic
+ectodermoidal
+ectodermosis
+ectodynamomorphic
+ectoentad
+ectoenzyme
+ectoethmoid
+ectogenesis
+ectogenic
+ectogenous
+ectoglia
+Ectognatha
+ectolecithal
+ectoloph
+ectomere
+ectomeric
+ectomesoblast
+ectomorph
+ectomorphic
+ectomorphy
+ectonephridium
+ectoparasite
+ectoparasitic
+Ectoparasitica
+ectopatagium
+ectophloic
+ectophyte
+ectophytic
+ectopia
+ectopic
+Ectopistes
+ectoplacenta
+ectoplasm
+ectoplasmatic
+ectoplasmic
+ectoplastic
+ectoplasy
+Ectoprocta
+ectoproctan
+ectoproctous
+ectopterygoid
+ectopy
+ectoretina
+ectorganism
+ectorhinal
+ectosarc
+ectosarcous
+ectoskeleton
+ectosomal
+ectosome
+ectosphenoid
+ectosphenotic
+ectosphere
+ectosteal
+ectosteally
+ectostosis
+ectotheca
+ectotoxin
+Ectotrophi
+ectotrophic
+ectozoa
+ectozoan
+ectozoic
+ectozoon
+ectrodactylia
+ectrodactylism
+ectrodactyly
+ectrogenic
+ectrogeny
+ectromelia
+ectromelian
+ectromelic
+ectromelus
+ectropion
+ectropium
+ectropometer
+ectrosyndactyly
+ectypal
+ectype
+ectypography
+Ecuadoran
+Ecuadorian
+ecuelling
+ecumenic
+ecumenical
+ecumenicalism
+ecumenicality
+ecumenically
+ecumenicity
+ecyphellate
+eczema
+eczematization
+eczematoid
+eczematosis
+eczematous
+Ed
+edacious
+edaciously
+edaciousness
+edacity
+Edana
+edaphic
+edaphology
+edaphon
+Edaphosauria
+Edaphosaurus
+Edda
+Eddaic
+edder
+Eddic
+Eddie
+eddish
+eddo
+Eddy
+eddy
+eddyroot
+edea
+edeagra
+edeitis
+edelweiss
+edema
+edematous
+edemic
+Eden
+Edenic
+edenite
+Edenization
+Edenize
+edental
+edentalous
+Edentata
+edentate
+edentulate
+edentulous
+edeodynia
+edeology
+edeomania
+edeoscopy
+edeotomy
+Edessan
+edestan
+edestin
+Edestosaurus
+Edgar
+edge
+edgebone
+edged
+edgeless
+edgemaker
+edgemaking
+edgeman
+edger
+edgerman
+edgeshot
+edgestone
+edgeways
+edgeweed
+edgewise
+edginess
+edging
+edgingly
+edgrew
+edgy
+edh
+edibility
+edible
+edibleness
+edict
+edictal
+edictally
+edicule
+edificable
+edification
+edificator
+edificatory
+edifice
+edificial
+edifier
+edify
+edifying
+edifyingly
+edifyingness
+edingtonite
+edit
+edital
+Edith
+edition
+editor
+editorial
+editorialize
+editorially
+editorship
+editress
+Ediya
+Edmond
+Edmund
+Edna
+Edo
+Edomite
+Edomitish
+Edoni
+Edriasteroidea
+Edrioasteroid
+Edrioasteroidea
+Edriophthalma
+edriophthalmatous
+edriophthalmian
+edriophthalmic
+edriophthalmous
+Eduardo
+Educabilia
+educabilian
+educability
+educable
+educand
+educatable
+educate
+educated
+educatee
+education
+educationable
+educational
+educationalism
+educationalist
+educationally
+educationary
+educationist
+educative
+educator
+educatory
+educatress
+educe
+educement
+educible
+educive
+educt
+eduction
+eductive
+eductor
+edulcorate
+edulcoration
+edulcorative
+edulcorator
+Eduskunta
+Edward
+Edwardean
+Edwardeanism
+Edwardian
+Edwardine
+Edwardsia
+Edwardsiidae
+Edwin
+Edwina
+eegrass
+eel
+eelboat
+eelbob
+eelbobber
+eelcake
+eelcatcher
+eeler
+eelery
+eelfare
+eelfish
+eelgrass
+eellike
+eelpot
+eelpout
+eelshop
+eelskin
+eelspear
+eelware
+eelworm
+eely
+eer
+eerie
+eerily
+eeriness
+eerisome
+effable
+efface
+effaceable
+effacement
+effacer
+effect
+effecter
+effectful
+effectible
+effective
+effectively
+effectiveness
+effectivity
+effectless
+effector
+effects
+effectual
+effectuality
+effectualize
+effectually
+effectualness
+effectuate
+effectuation
+effeminacy
+effeminate
+effeminately
+effeminateness
+effemination
+effeminatize
+effeminization
+effeminize
+effendi
+efferent
+effervesce
+effervescence
+effervescency
+effervescent
+effervescible
+effervescingly
+effervescive
+effete
+effeteness
+effetman
+efficacious
+efficaciously
+efficaciousness
+efficacity
+efficacy
+efficience
+efficiency
+efficient
+efficiently
+Effie
+effigial
+effigiate
+effigiation
+effigurate
+effiguration
+effigy
+efflate
+efflation
+effloresce
+efflorescence
+efflorescency
+efflorescent
+efflower
+effluence
+effluency
+effluent
+effluvia
+effluvial
+effluviate
+effluviography
+effluvious
+effluvium
+efflux
+effluxion
+effodient
+Effodientia
+efform
+efformation
+efformative
+effort
+effortful
+effortless
+effortlessly
+effossion
+effraction
+effranchise
+effranchisement
+effrontery
+effulge
+effulgence
+effulgent
+effulgently
+effund
+effuse
+effusiometer
+effusion
+effusive
+effusively
+effusiveness
+Efik
+eflagelliferous
+efoliolate
+efoliose
+efoveolate
+eft
+eftest
+eftsoons
+egad
+egalitarian
+egalitarianism
+egality
+Egba
+Egbert
+Egbo
+egence
+egeran
+Egeria
+egest
+egesta
+egestion
+egestive
+egg
+eggberry
+eggcup
+eggcupful
+eggeater
+egger
+eggfish
+eggfruit
+egghead
+egghot
+egging
+eggler
+eggless
+egglike
+eggnog
+eggplant
+eggshell
+eggy
+egilops
+egipto
+Eglamore
+eglandular
+eglandulose
+eglantine
+eglatere
+eglestonite
+egma
+ego
+egocentric
+egocentricity
+egocentrism
+Egocerus
+egohood
+egoism
+egoist
+egoistic
+egoistical
+egoistically
+egoity
+egoize
+egoizer
+egol
+egolatrous
+egomania
+egomaniac
+egomaniacal
+egomism
+egophonic
+egophony
+egosyntonic
+egotheism
+egotism
+egotist
+egotistic
+egotistical
+egotistically
+egotize
+egregious
+egregiously
+egregiousness
+egress
+egression
+egressive
+egressor
+egret
+Egretta
+egrimony
+egueiite
+egurgitate
+eguttulate
+Egypt
+Egyptian
+Egyptianism
+Egyptianization
+Egyptianize
+Egyptize
+Egyptologer
+Egyptologic
+Egyptological
+Egyptologist
+Egyptology
+eh
+Ehatisaht
+eheu
+ehlite
+Ehretia
+Ehretiaceae
+ehrwaldite
+ehuawa
+eichbergite
+Eichhornia
+eichwaldite
+eicosane
+eident
+eidently
+eider
+eidetic
+eidograph
+eidolic
+eidolism
+eidology
+eidolology
+eidolon
+eidoptometry
+eidouranion
+eigenfunction
+eigenvalue
+eight
+eighteen
+eighteenfold
+eighteenmo
+eighteenth
+eighteenthly
+eightfoil
+eightfold
+eighth
+eighthly
+eightieth
+eightling
+eightpenny
+eightscore
+eightsman
+eightsome
+eighty
+eightyfold
+eigne
+Eikonogen
+eikonology
+Eileen
+Eimak
+eimer
+Eimeria
+einkorn
+Einsteinian
+Eireannach
+Eirene
+eiresione
+eisegesis
+eisegetical
+eisodic
+eisteddfod
+eisteddfodic
+eisteddfodism
+either
+ejaculate
+ejaculation
+ejaculative
+ejaculator
+ejaculatory
+Ejam
+eject
+ejecta
+ejectable
+ejection
+ejective
+ejectively
+ejectivity
+ejectment
+ejector
+ejicient
+ejoo
+ekaboron
+ekacaesium
+ekaha
+ekamanganese
+ekasilicon
+ekatantalum
+eke
+ekebergite
+eker
+ekerite
+eking
+ekka
+Ekoi
+ekphore
+Ekron
+Ekronite
+ektene
+ektenes
+ektodynamorphic
+el
+elaborate
+elaborately
+elaborateness
+elaboration
+elaborative
+elaborator
+elaboratory
+elabrate
+Elachista
+Elachistaceae
+elachistaceous
+Elaeagnaceae
+elaeagnaceous
+Elaeagnus
+Elaeis
+elaeoblast
+elaeoblastic
+Elaeocarpaceae
+elaeocarpaceous
+Elaeocarpus
+Elaeococca
+Elaeodendron
+elaeodochon
+elaeomargaric
+elaeometer
+elaeoptene
+elaeosaccharum
+elaeothesium
+elaidate
+elaidic
+elaidin
+elaidinic
+elain
+Elaine
+elaine
+elaioleucite
+elaioplast
+elaiosome
+Elamite
+Elamitic
+Elamitish
+elance
+eland
+elanet
+Elanus
+Elaphe
+Elaphebolion
+elaphine
+Elaphodus
+Elaphoglossum
+Elaphomyces
+Elaphomycetaceae
+Elaphrium
+elaphure
+elaphurine
+Elaphurus
+elapid
+Elapidae
+Elapinae
+elapine
+elapoid
+Elaps
+elapse
+Elapsoidea
+elasmobranch
+elasmobranchian
+elasmobranchiate
+Elasmobranchii
+elasmosaur
+Elasmosaurus
+elasmothere
+Elasmotherium
+elastance
+elastic
+elastica
+elastically
+elastician
+elasticin
+elasticity
+elasticize
+elasticizer
+elasticness
+elastin
+elastivity
+elastomer
+elastomeric
+elastometer
+elastometry
+elastose
+elatcha
+elate
+elated
+elatedly
+elatedness
+elater
+elaterid
+Elateridae
+elaterin
+elaterite
+elaterium
+elateroid
+Elatha
+Elatinaceae
+elatinaceous
+Elatine
+elation
+elative
+elator
+elatrometer
+elb
+Elbert
+Elberta
+elbow
+elbowboard
+elbowbush
+elbowchair
+elbowed
+elbower
+elbowpiece
+elbowroom
+elbowy
+elcaja
+elchee
+eld
+elder
+elderberry
+elderbrotherhood
+elderbrotherish
+elderbrotherly
+elderbush
+elderhood
+elderliness
+elderly
+elderman
+eldership
+eldersisterly
+elderwoman
+elderwood
+elderwort
+eldest
+eldin
+elding
+Eldred
+eldress
+eldritch
+Elean
+Eleanor
+Eleatic
+Eleaticism
+Eleazar
+elecampane
+elect
+electable
+electee
+electicism
+election
+electionary
+electioneer
+electioneerer
+elective
+electively
+electiveness
+electivism
+electivity
+electly
+elector
+electoral
+electorally
+electorate
+electorial
+electorship
+Electra
+electragist
+electragy
+electralize
+electrepeter
+electress
+electret
+electric
+electrical
+electricalize
+electrically
+electricalness
+electrician
+electricity
+electricize
+electrics
+electriferous
+electrifiable
+electrification
+electrifier
+electrify
+electrion
+electrionic
+electrizable
+electrization
+electrize
+electrizer
+electro
+electroacoustic
+electroaffinity
+electroamalgamation
+electroanalysis
+electroanalytic
+electroanalytical
+electroanesthesia
+electroballistic
+electroballistics
+electrobath
+electrobiological
+electrobiologist
+electrobiology
+electrobioscopy
+electroblasting
+electrobrasser
+electrobus
+electrocapillarity
+electrocapillary
+electrocardiogram
+electrocardiograph
+electrocardiographic
+electrocardiography
+electrocatalysis
+electrocatalytic
+electrocataphoresis
+electrocataphoretic
+electrocauterization
+electrocautery
+electroceramic
+electrochemical
+electrochemically
+electrochemist
+electrochemistry
+electrochronograph
+electrochronographic
+electrochronometer
+electrochronometric
+electrocoagulation
+electrocoating
+electrocolloidal
+electrocontractility
+electrocorticogram
+electroculture
+electrocute
+electrocution
+electrocutional
+electrocutioner
+electrocystoscope
+electrode
+electrodeless
+electrodentistry
+electrodeposit
+electrodepositable
+electrodeposition
+electrodepositor
+electrodesiccate
+electrodesiccation
+electrodiagnosis
+electrodialysis
+electrodialyze
+electrodialyzer
+electrodiplomatic
+electrodispersive
+electrodissolution
+electrodynamic
+electrodynamical
+electrodynamics
+electrodynamism
+electrodynamometer
+electroencephalogram
+electroencephalograph
+electroencephalography
+electroendosmose
+electroendosmosis
+electroendosmotic
+electroengrave
+electroengraving
+electroergometer
+electroetching
+electroethereal
+electroextraction
+electroform
+electroforming
+electrofuse
+electrofused
+electrofusion
+electrogalvanic
+electrogalvanize
+electrogenesis
+electrogenetic
+electrogild
+electrogilding
+electrogilt
+electrograph
+electrographic
+electrographite
+electrography
+electroharmonic
+electrohemostasis
+electrohomeopathy
+electrohorticulture
+electrohydraulic
+electroimpulse
+electroindustrial
+electroionic
+electroirrigation
+electrokinematics
+electrokinetic
+electrokinetics
+electrolier
+electrolithotrity
+electrologic
+electrological
+electrologist
+electrology
+electroluminescence
+electroluminescent
+electrolysis
+electrolyte
+electrolytic
+electrolytical
+electrolytically
+electrolyzability
+electrolyzable
+electrolyzation
+electrolyze
+electrolyzer
+electromagnet
+electromagnetic
+electromagnetical
+electromagnetically
+electromagnetics
+electromagnetism
+electromagnetist
+electromassage
+electromechanical
+electromechanics
+electromedical
+electromer
+electromeric
+electromerism
+electrometallurgical
+electrometallurgist
+electrometallurgy
+electrometer
+electrometric
+electrometrical
+electrometrically
+electrometry
+electromobile
+electromobilism
+electromotion
+electromotive
+electromotivity
+electromotograph
+electromotor
+electromuscular
+electromyographic
+electron
+electronarcosis
+electronegative
+electronervous
+electronic
+electronics
+electronographic
+electrooptic
+electrooptical
+electrooptically
+electrooptics
+electroosmosis
+electroosmotic
+electroosmotically
+electrootiatrics
+electropathic
+electropathology
+electropathy
+electropercussive
+electrophobia
+electrophone
+electrophore
+electrophoresis
+electrophoretic
+electrophoric
+Electrophoridae
+electrophorus
+electrophotometer
+electrophotometry
+electrophototherapy
+electrophrenic
+electrophysics
+electrophysiological
+electrophysiologist
+electrophysiology
+electropism
+electroplate
+electroplater
+electroplating
+electroplax
+electropneumatic
+electropneumatically
+electropoion
+electropolar
+electropositive
+electropotential
+electropower
+electropsychrometer
+electropult
+electropuncturation
+electropuncture
+electropuncturing
+electropyrometer
+electroreceptive
+electroreduction
+electrorefine
+electroscission
+electroscope
+electroscopic
+electrosherardizing
+electroshock
+electrosmosis
+electrostatic
+electrostatical
+electrostatically
+electrostatics
+electrosteel
+electrostenolysis
+electrostenolytic
+electrostereotype
+electrostriction
+electrosurgery
+electrosurgical
+electrosynthesis
+electrosynthetic
+electrosynthetically
+electrotactic
+electrotautomerism
+electrotaxis
+electrotechnic
+electrotechnical
+electrotechnician
+electrotechnics
+electrotechnology
+electrotelegraphic
+electrotelegraphy
+electrotelethermometer
+electrotellurograph
+electrotest
+electrothanasia
+electrothanatosis
+electrotherapeutic
+electrotherapeutical
+electrotherapeutics
+electrotherapeutist
+electrotherapist
+electrotherapy
+electrothermal
+electrothermancy
+electrothermic
+electrothermics
+electrothermometer
+electrothermostat
+electrothermostatic
+electrothermotic
+electrotitration
+electrotonic
+electrotonicity
+electrotonize
+electrotonus
+electrotrephine
+electrotropic
+electrotropism
+electrotype
+electrotyper
+electrotypic
+electrotyping
+electrotypist
+electrotypy
+electrovalence
+electrovalency
+electrovection
+electroviscous
+electrovital
+electrowin
+electrum
+electuary
+eleemosynarily
+eleemosynariness
+eleemosynary
+elegance
+elegancy
+elegant
+elegantly
+elegiac
+elegiacal
+elegiambic
+elegiambus
+elegiast
+elegist
+elegit
+elegize
+elegy
+eleidin
+element
+elemental
+elementalism
+elementalist
+elementalistic
+elementalistically
+elementality
+elementalize
+elementally
+elementarily
+elementariness
+elementary
+elementoid
+elemi
+elemicin
+elemin
+elench
+elenchi
+elenchic
+elenchical
+elenchically
+elenchize
+elenchtic
+elenchtical
+elenctic
+elenge
+eleoblast
+Eleocharis
+eleolite
+eleomargaric
+eleometer
+eleonorite
+eleoptene
+eleostearate
+eleostearic
+elephant
+elephanta
+elephantiac
+elephantiasic
+elephantiasis
+elephantic
+elephanticide
+Elephantidae
+elephantine
+elephantlike
+elephantoid
+elephantoidal
+Elephantopus
+elephantous
+elephantry
+Elephas
+Elettaria
+Eleusine
+Eleusinia
+Eleusinian
+Eleusinion
+Eleut
+eleutherarch
+Eleutheri
+Eleutheria
+Eleutherian
+Eleutherios
+eleutherism
+eleutherodactyl
+Eleutherodactyli
+Eleutherodactylus
+eleutheromania
+eleutheromaniac
+eleutheromorph
+eleutheropetalous
+eleutherophyllous
+eleutherosepalous
+Eleutherozoa
+eleutherozoan
+elevate
+elevated
+elevatedly
+elevatedness
+elevating
+elevatingly
+elevation
+elevational
+elevator
+elevatory
+eleven
+elevener
+elevenfold
+eleventh
+eleventhly
+elevon
+elf
+elfenfolk
+elfhood
+elfic
+elfin
+elfinwood
+elfish
+elfishly
+elfishness
+elfkin
+elfland
+elflike
+elflock
+elfship
+elfwife
+elfwort
+Eli
+Elia
+Elian
+Elianic
+Elias
+eliasite
+elicit
+elicitable
+elicitate
+elicitation
+elicitor
+elicitory
+elide
+elidible
+eligibility
+eligible
+eligibleness
+eligibly
+Elihu
+Elijah
+eliminable
+eliminand
+eliminant
+eliminate
+elimination
+eliminative
+eliminator
+eliminatory
+Elinor
+Elinvar
+Eliot
+Eliphalet
+eliquate
+eliquation
+Elisabeth
+Elisha
+Elishah
+elision
+elisor
+Elissa
+elite
+elixir
+Eliza
+Elizabeth
+Elizabethan
+Elizabethanism
+Elizabethanize
+elk
+Elkanah
+Elkdom
+Elkesaite
+elkhorn
+elkhound
+Elkoshite
+elkslip
+Elkuma
+elkwood
+ell
+Ella
+ellachick
+ellagate
+ellagic
+ellagitannin
+Ellasar
+elle
+elleck
+Ellen
+ellenyard
+Ellerian
+ellfish
+Ellice
+Ellick
+Elliot
+Elliott
+ellipse
+ellipses
+ellipsis
+ellipsograph
+ellipsoid
+ellipsoidal
+ellipsone
+ellipsonic
+elliptic
+elliptical
+elliptically
+ellipticalness
+ellipticity
+elliptograph
+elliptoid
+ellops
+ellwand
+elm
+Elmer
+elmy
+Eloah
+elocular
+elocute
+elocution
+elocutionary
+elocutioner
+elocutionist
+elocutionize
+elod
+Elodea
+Elodeaceae
+Elodes
+eloge
+elogium
+Elohim
+Elohimic
+Elohism
+Elohist
+Elohistic
+eloign
+eloigner
+eloignment
+Eloise
+Elon
+elongate
+elongated
+elongation
+elongative
+Elonite
+elope
+elopement
+eloper
+Elopidae
+elops
+eloquence
+eloquent
+eloquential
+eloquently
+eloquentness
+Elotherium
+elotillo
+elpasolite
+elpidite
+Elric
+els
+Elsa
+else
+elsehow
+elsewards
+elseways
+elsewhen
+elsewhere
+elsewheres
+elsewhither
+elsewise
+Elsholtzia
+elsin
+elt
+eluate
+elucidate
+elucidation
+elucidative
+elucidator
+elucidatory
+elucubrate
+elucubration
+elude
+eluder
+elusion
+elusive
+elusively
+elusiveness
+elusoriness
+elusory
+elute
+elution
+elutor
+elutriate
+elutriation
+elutriator
+eluvial
+eluviate
+eluviation
+eluvium
+elvan
+elvanite
+elvanitic
+elver
+elves
+elvet
+Elvira
+Elvis
+elvish
+elvishly
+Elwood
+elydoric
+Elymi
+Elymus
+Elysee
+Elysia
+elysia
+Elysian
+Elysiidae
+Elysium
+elytral
+elytriferous
+elytriform
+elytrigerous
+elytrin
+elytrocele
+elytroclasia
+elytroid
+elytron
+elytroplastic
+elytropolypus
+elytroposis
+elytrorhagia
+elytrorrhagia
+elytrorrhaphy
+elytrostenosis
+elytrotomy
+elytrous
+elytrum
+Elzevir
+Elzevirian
+Em
+em
+emaciate
+emaciation
+emajagua
+emanant
+emanate
+emanation
+emanational
+emanationism
+emanationist
+emanatism
+emanatist
+emanatistic
+emanativ
+emanative
+emanatively
+emanator
+emanatory
+emancipate
+emancipation
+emancipationist
+emancipatist
+emancipative
+emancipator
+emancipatory
+emancipatress
+emancipist
+emandibulate
+emanium
+emarcid
+emarginate
+emarginately
+emargination
+Emarginula
+emasculate
+emasculation
+emasculative
+emasculator
+emasculatory
+Embadomonas
+emball
+emballonurid
+Emballonuridae
+emballonurine
+embalm
+embalmer
+embalmment
+embank
+embankment
+embannered
+embar
+embargo
+embargoist
+embark
+embarkation
+embarkment
+embarras
+embarrass
+embarrassed
+embarrassedly
+embarrassing
+embarrassingly
+embarrassment
+embarrel
+embassage
+embassy
+embastioned
+embathe
+embatholithic
+embattle
+embattled
+embattlement
+embay
+embayment
+Embden
+embed
+embedment
+embeggar
+Embelia
+embelic
+embellish
+embellisher
+embellishment
+ember
+embergoose
+Emberiza
+emberizidae
+Emberizinae
+emberizine
+embezzle
+embezzlement
+embezzler
+Embiidae
+Embiidina
+embind
+Embiodea
+Embioptera
+embiotocid
+Embiotocidae
+embiotocoid
+embira
+embitter
+embitterer
+embitterment
+emblaze
+emblazer
+emblazon
+emblazoner
+emblazonment
+emblazonry
+emblem
+emblema
+emblematic
+emblematical
+emblematically
+emblematicalness
+emblematicize
+emblematist
+emblematize
+emblematology
+emblement
+emblemist
+emblemize
+emblemology
+emblic
+emblossom
+embodier
+embodiment
+embody
+embog
+emboitement
+embolden
+emboldener
+embole
+embolectomy
+embolemia
+embolic
+emboliform
+embolism
+embolismic
+embolismus
+embolite
+embolium
+embolize
+embolo
+embololalia
+Embolomeri
+embolomerism
+embolomerous
+embolomycotic
+embolum
+embolus
+emboly
+emborder
+emboscata
+embosom
+emboss
+embossage
+embosser
+embossing
+embossman
+embossment
+embosture
+embottle
+embouchure
+embound
+embow
+embowed
+embowel
+emboweler
+embowelment
+embower
+embowerment
+embowment
+embox
+embrace
+embraceable
+embraceably
+embracement
+embraceor
+embracer
+embracery
+embracing
+embracingly
+embracingness
+embracive
+embrail
+embranchment
+embrangle
+embranglement
+embrasure
+embreathe
+embreathement
+Embrica
+embright
+embrittle
+embrittlement
+embroaden
+embrocate
+embrocation
+embroider
+embroiderer
+embroideress
+embroidery
+embroil
+embroiler
+embroilment
+embronze
+embrown
+embryectomy
+embryo
+embryocardia
+embryoctonic
+embryoctony
+embryoferous
+embryogenesis
+embryogenetic
+embryogenic
+embryogeny
+embryogony
+embryographer
+embryographic
+embryography
+embryoid
+embryoism
+embryologic
+embryological
+embryologically
+embryologist
+embryology
+embryoma
+embryon
+embryonal
+embryonary
+embryonate
+embryonated
+embryonic
+embryonically
+embryoniferous
+embryoniform
+embryony
+embryopathology
+embryophagous
+embryophore
+Embryophyta
+embryophyte
+embryoplastic
+embryoscope
+embryoscopic
+embryotega
+embryotic
+embryotome
+embryotomy
+embryotrophic
+embryotrophy
+embryous
+embryulcia
+embryulcus
+embubble
+embuia
+embus
+embusk
+embuskin
+emcee
+eme
+emeer
+emeership
+Emeline
+emend
+emendable
+emendandum
+emendate
+emendation
+emendator
+emendatory
+emender
+emerald
+emeraldine
+emeraude
+emerge
+emergence
+emergency
+emergent
+emergently
+emergentness
+Emerita
+emerited
+emeritus
+emerize
+emerse
+emersed
+emersion
+Emersonian
+Emersonianism
+Emery
+emery
+Emesa
+Emesidae
+emesis
+emetatrophia
+emetic
+emetically
+emetine
+emetocathartic
+emetology
+emetomorphine
+emgalla
+emication
+emiction
+emictory
+emigrant
+emigrate
+emigration
+emigrational
+emigrationist
+emigrative
+emigrator
+emigratory
+emigree
+Emil
+Emilia
+Emily
+Emim
+eminence
+eminency
+eminent
+eminently
+emir
+emirate
+emirship
+emissarium
+emissary
+emissaryship
+emissile
+emission
+emissive
+emissivity
+emit
+emittent
+emitter
+Emm
+Emma
+emma
+Emmanuel
+emmarble
+emmarvel
+emmenagogic
+emmenagogue
+emmenic
+emmeniopathy
+emmenology
+emmensite
+Emmental
+emmer
+emmergoose
+emmet
+emmetrope
+emmetropia
+emmetropic
+emmetropism
+emmetropy
+Emmett
+emodin
+emollescence
+emolliate
+emollient
+emoloa
+emolument
+emolumental
+emolumentary
+emote
+emotion
+emotionable
+emotional
+emotionalism
+emotionalist
+emotionality
+emotionalization
+emotionalize
+emotionally
+emotioned
+emotionist
+emotionize
+emotionless
+emotionlessness
+emotive
+emotively
+emotiveness
+emotivity
+empacket
+empaistic
+empall
+empanel
+empanelment
+empanoply
+empaper
+emparadise
+emparchment
+empark
+empasm
+empathic
+empathically
+empathize
+empathy
+Empedoclean
+empeirema
+Empeo
+emperor
+emperorship
+empery
+Empetraceae
+empetraceous
+Empetrum
+emphases
+emphasis
+emphasize
+emphatic
+emphatical
+emphatically
+emphaticalness
+emphlysis
+emphractic
+emphraxis
+emphysema
+emphysematous
+emphyteusis
+emphyteuta
+emphyteutic
+empicture
+Empididae
+Empidonax
+empiecement
+Empire
+empire
+empirema
+empiric
+empirical
+empiricalness
+empiricism
+empiricist
+empirics
+empiriocritcism
+empiriocritical
+empiriological
+empirism
+empiristic
+emplace
+emplacement
+emplane
+emplastic
+emplastration
+emplastrum
+emplectite
+empleomania
+employ
+employability
+employable
+employed
+employee
+employer
+employless
+employment
+emplume
+empocket
+empodium
+empoison
+empoisonment
+emporetic
+emporeutic
+emporia
+emporial
+emporium
+empower
+empowerment
+empress
+emprise
+emprosthotonic
+emprosthotonos
+emprosthotonus
+empt
+emptier
+emptily
+emptiness
+emptings
+emptins
+emption
+emptional
+emptor
+empty
+emptyhearted
+emptysis
+empurple
+Empusa
+empyema
+empyemic
+empyesis
+empyocele
+empyreal
+empyrean
+empyreuma
+empyreumatic
+empyreumatical
+empyreumatize
+empyromancy
+emu
+emulable
+emulant
+emulate
+emulation
+emulative
+emulatively
+emulator
+emulatory
+emulatress
+emulgence
+emulgent
+emulous
+emulously
+emulousness
+emulsibility
+emulsible
+emulsifiability
+emulsifiable
+emulsification
+emulsifier
+emulsify
+emulsin
+emulsion
+emulsionize
+emulsive
+emulsoid
+emulsor
+emunctory
+emundation
+emyd
+Emydea
+emydian
+Emydidae
+Emydinae
+Emydosauria
+emydosaurian
+Emys
+en
+enable
+enablement
+enabler
+enact
+enactable
+enaction
+enactive
+enactment
+enactor
+enactory
+enaena
+enage
+Enajim
+enalid
+Enaliornis
+enaliosaur
+Enaliosauria
+enaliosaurian
+enallachrome
+enallage
+enaluron
+enam
+enamber
+enambush
+enamdar
+enamel
+enameler
+enameling
+enamelist
+enamelless
+enamellist
+enameloma
+enamelware
+enamor
+enamorato
+enamored
+enamoredness
+enamorment
+enamourment
+enanguish
+enanthem
+enanthema
+enanthematous
+enanthesis
+enantiobiosis
+enantioblastic
+enantioblastous
+enantiomer
+enantiomeride
+enantiomorph
+enantiomorphic
+enantiomorphism
+enantiomorphous
+enantiomorphously
+enantiomorphy
+enantiopathia
+enantiopathic
+enantiopathy
+enantiosis
+enantiotropic
+enantiotropy
+enantobiosis
+enapt
+enarbor
+enarbour
+enarch
+enarched
+enargite
+enarm
+enarme
+enarthrodia
+enarthrodial
+enarthrosis
+enate
+enatic
+enation
+enbrave
+encaenia
+encage
+encake
+encalendar
+encallow
+encamp
+encampment
+encanker
+encanthis
+encapsulate
+encapsulation
+encapsule
+encarditis
+encarnadine
+encarnalize
+encarpium
+encarpus
+encase
+encasement
+encash
+encashable
+encashment
+encasserole
+encastage
+encatarrhaphy
+encauma
+encaustes
+encaustic
+encaustically
+encave
+encefalon
+Encelia
+encell
+encenter
+encephala
+encephalalgia
+Encephalartos
+encephalasthenia
+encephalic
+encephalin
+encephalitic
+encephalitis
+encephalocele
+encephalocoele
+encephalodialysis
+encephalogram
+encephalograph
+encephalography
+encephaloid
+encephalolith
+encephalology
+encephaloma
+encephalomalacia
+encephalomalacosis
+encephalomalaxis
+encephalomeningitis
+encephalomeningocele
+encephalomere
+encephalomeric
+encephalometer
+encephalometric
+encephalomyelitis
+encephalomyelopathy
+encephalon
+encephalonarcosis
+encephalopathia
+encephalopathic
+encephalopathy
+encephalophyma
+encephalopsychesis
+encephalopyosis
+encephalorrhagia
+encephalosclerosis
+encephaloscope
+encephaloscopy
+encephalosepsis
+encephalospinal
+encephalothlipsis
+encephalotome
+encephalotomy
+encephalous
+enchain
+enchainment
+enchair
+enchalice
+enchannel
+enchant
+enchanter
+enchanting
+enchantingly
+enchantingness
+enchantment
+enchantress
+encharge
+encharnel
+enchase
+enchaser
+enchasten
+Enchelycephali
+enchequer
+enchest
+enchilada
+enchiridion
+Enchodontid
+Enchodontidae
+Enchodontoid
+Enchodus
+enchondroma
+enchondromatous
+enchondrosis
+enchorial
+enchurch
+enchylema
+enchylematous
+enchymatous
+enchytrae
+enchytraeid
+Enchytraeidae
+Enchytraeus
+encina
+encinal
+encincture
+encinder
+encinillo
+encipher
+encircle
+encirclement
+encircler
+encist
+encitadel
+enclaret
+enclasp
+enclave
+enclavement
+enclisis
+enclitic
+enclitical
+enclitically
+encloak
+encloister
+enclose
+encloser
+enclosure
+enclothe
+encloud
+encoach
+encode
+encoffin
+encoignure
+encoil
+encolden
+encollar
+encolor
+encolpion
+encolumn
+encomendero
+encomia
+encomiast
+encomiastic
+encomiastical
+encomiastically
+encomic
+encomienda
+encomiologic
+encomium
+encommon
+encompass
+encompasser
+encompassment
+encoop
+encorbelment
+encore
+encoronal
+encoronate
+encoronet
+encounter
+encounterable
+encounterer
+encourage
+encouragement
+encourager
+encouraging
+encouragingly
+encowl
+encraal
+encradle
+encranial
+encratic
+Encratism
+Encratite
+encraty
+encreel
+encrimson
+encrinal
+encrinic
+Encrinidae
+encrinidae
+encrinital
+encrinite
+encrinitic
+encrinitical
+encrinoid
+Encrinoidea
+Encrinus
+encrisp
+encroach
+encroacher
+encroachingly
+encroachment
+encrotchet
+encrown
+encrownment
+encrust
+encrustment
+encrypt
+encryption
+encuirassed
+encumber
+encumberer
+encumberingly
+encumberment
+encumbrance
+encumbrancer
+encup
+encurl
+encurtain
+encushion
+encyclic
+encyclical
+encyclopedia
+encyclopediac
+encyclopediacal
+encyclopedial
+encyclopedian
+encyclopediast
+encyclopedic
+encyclopedically
+encyclopedism
+encyclopedist
+encyclopedize
+encyrtid
+Encyrtidae
+encyst
+encystation
+encystment
+end
+endable
+endamage
+endamageable
+endamagement
+endamask
+endameba
+endamebic
+Endamoeba
+endamoebiasis
+endamoebic
+Endamoebidae
+endanger
+endangerer
+endangerment
+endangium
+endaortic
+endaortitis
+endarch
+endarchy
+endarterial
+endarteritis
+endarterium
+endaspidean
+endaze
+endboard
+endbrain
+endear
+endearance
+endeared
+endearedly
+endearedness
+endearing
+endearingly
+endearingness
+endearment
+endeavor
+endeavorer
+ended
+endeictic
+endellionite
+endemial
+endemic
+endemically
+endemicity
+endemiological
+endemiology
+endemism
+endenizen
+ender
+endere
+endermatic
+endermic
+endermically
+enderon
+enderonic
+endevil
+endew
+endgate
+endiadem
+endiaper
+ending
+endite
+endive
+endless
+endlessly
+endlessness
+endlichite
+endlong
+endmatcher
+endmost
+endoabdominal
+endoangiitis
+endoaortitis
+endoappendicitis
+endoarteritis
+endoauscultation
+endobatholithic
+endobiotic
+endoblast
+endoblastic
+endobronchial
+endobronchially
+endobronchitis
+endocannibalism
+endocardiac
+endocardial
+endocarditic
+endocarditis
+endocardium
+endocarp
+endocarpal
+endocarpic
+endocarpoid
+endocellular
+endocentric
+Endoceras
+Endoceratidae
+endoceratite
+endoceratitic
+endocervical
+endocervicitis
+endochondral
+endochorion
+endochorionic
+endochrome
+endochylous
+endoclinal
+endocline
+endocoelar
+endocoele
+endocoeliac
+endocolitis
+endocolpitis
+endocondensation
+endocone
+endoconidium
+endocorpuscular
+endocortex
+endocranial
+endocranium
+endocrinal
+endocrine
+endocrinic
+endocrinism
+endocrinological
+endocrinologist
+endocrinology
+endocrinopathic
+endocrinopathy
+endocrinotherapy
+endocrinous
+endocritic
+endocycle
+endocyclic
+endocyemate
+endocyst
+endocystitis
+endoderm
+endodermal
+endodermic
+endodermis
+endodontia
+endodontic
+endodontist
+endodynamomorphic
+endoenteritis
+endoenzyme
+endoesophagitis
+endofaradism
+endogalvanism
+endogamic
+endogamous
+endogamy
+endogastric
+endogastrically
+endogastritis
+endogen
+Endogenae
+endogenesis
+endogenetic
+endogenic
+endogenous
+endogenously
+endogeny
+endoglobular
+endognath
+endognathal
+endognathion
+endogonidium
+endointoxication
+endokaryogamy
+endolabyrinthitis
+endolaryngeal
+endolemma
+endolumbar
+endolymph
+endolymphangial
+endolymphatic
+endolymphic
+endolysin
+endomastoiditis
+endome
+endomesoderm
+endometrial
+endometritis
+endometrium
+endometry
+endomitosis
+endomitotic
+endomixis
+endomorph
+endomorphic
+endomorphism
+endomorphy
+Endomyces
+Endomycetaceae
+endomysial
+endomysium
+endoneurial
+endoneurium
+endonuclear
+endonucleolus
+endoparasite
+endoparasitic
+Endoparasitica
+endopathic
+endopelvic
+endopericarditis
+endoperidial
+endoperidium
+endoperitonitis
+endophagous
+endophagy
+endophasia
+endophasic
+endophlebitis
+endophragm
+endophragmal
+Endophyllaceae
+endophyllous
+Endophyllum
+endophytal
+endophyte
+endophytic
+endophytically
+endophytous
+endoplasm
+endoplasma
+endoplasmic
+endoplast
+endoplastron
+endoplastular
+endoplastule
+endopleura
+endopleural
+endopleurite
+endopleuritic
+endopod
+endopodite
+endopoditic
+endoproct
+Endoprocta
+endoproctous
+endopsychic
+Endopterygota
+endopterygote
+endopterygotic
+endopterygotism
+endopterygotous
+endorachis
+endoral
+endore
+endorhinitis
+endorsable
+endorsation
+endorse
+endorsed
+endorsee
+endorsement
+endorser
+endorsingly
+endosalpingitis
+endosarc
+endosarcode
+endosarcous
+endosclerite
+endoscope
+endoscopic
+endoscopy
+endosecretory
+endosepsis
+endosiphon
+endosiphonal
+endosiphonate
+endosiphuncle
+endoskeletal
+endoskeleton
+endosmometer
+endosmometric
+endosmosic
+endosmosis
+endosmotic
+endosmotically
+endosome
+endosperm
+endospermic
+endospore
+endosporium
+endosporous
+endoss
+endosteal
+endosteally
+endosteitis
+endosteoma
+endosternite
+endosternum
+endosteum
+endostitis
+endostoma
+endostome
+endostosis
+endostracal
+endostracum
+endostylar
+endostyle
+endostylic
+endotheca
+endothecal
+endothecate
+endothecial
+endothecium
+endothelia
+endothelial
+endothelioblastoma
+endotheliocyte
+endothelioid
+endotheliolysin
+endotheliolytic
+endothelioma
+endotheliomyoma
+endotheliomyxoma
+endotheliotoxin
+endothelium
+endothermal
+endothermic
+endothermous
+endothermy
+Endothia
+endothoracic
+endothorax
+Endothrix
+endothys
+endotoxic
+endotoxin
+endotoxoid
+endotracheitis
+endotrachelitis
+Endotrophi
+endotrophic
+endotys
+endovaccination
+endovasculitis
+endovenous
+endow
+endower
+endowment
+endozoa
+endpiece
+Endromididae
+Endromis
+endue
+enduement
+endungeon
+endura
+endurability
+endurable
+endurableness
+endurably
+endurance
+endurant
+endure
+endurer
+enduring
+enduringly
+enduringness
+endways
+endwise
+endyma
+endymal
+Endymion
+endysis
+Eneas
+eneclann
+enema
+enemy
+enemylike
+enemyship
+enepidermic
+energeia
+energesis
+energetic
+energetical
+energetically
+energeticalness
+energeticist
+energetics
+energetistic
+energic
+energical
+energid
+energism
+energist
+energize
+energizer
+energumen
+energumenon
+energy
+enervate
+enervation
+enervative
+enervator
+eneuch
+eneugh
+enface
+enfacement
+enfamous
+enfasten
+enfatico
+enfeature
+enfeeble
+enfeeblement
+enfeebler
+enfelon
+enfeoff
+enfeoffment
+enfester
+enfetter
+enfever
+enfigure
+enfilade
+enfilading
+enfile
+enfiled
+enflagellate
+enflagellation
+enflesh
+enfleurage
+enflower
+enfoil
+enfold
+enfolden
+enfolder
+enfoldment
+enfonced
+enforce
+enforceability
+enforceable
+enforced
+enforcedly
+enforcement
+enforcer
+enforcibility
+enforcible
+enforcingly
+enfork
+enfoul
+enframe
+enframement
+enfranchisable
+enfranchise
+enfranchisement
+enfranchiser
+enfree
+enfrenzy
+enfuddle
+enfurrow
+engage
+engaged
+engagedly
+engagedness
+engagement
+engager
+engaging
+engagingly
+engagingness
+engaol
+engarb
+engarble
+engarland
+engarment
+engarrison
+engastrimyth
+engastrimythic
+engaud
+engaze
+Engelmannia
+engem
+engender
+engenderer
+engenderment
+engerminate
+enghosted
+engild
+engine
+engineer
+engineering
+engineership
+enginehouse
+engineless
+enginelike
+engineman
+enginery
+enginous
+engird
+engirdle
+engirt
+engjateigur
+englacial
+englacially
+englad
+engladden
+Englander
+Engler
+Englerophoenix
+Englifier
+Englify
+English
+Englishable
+Englisher
+Englishhood
+Englishism
+Englishize
+Englishly
+Englishman
+Englishness
+Englishry
+Englishwoman
+englobe
+englobement
+engloom
+englory
+englut
+englyn
+engnessang
+engobe
+engold
+engolden
+engore
+engorge
+engorgement
+engouled
+engrace
+engraff
+engraft
+engraftation
+engrafter
+engraftment
+engrail
+engrailed
+engrailment
+engrain
+engrained
+engrainedly
+engrainer
+engram
+engramma
+engrammatic
+engrammic
+engrandize
+engrandizement
+engraphia
+engraphic
+engraphically
+engraphy
+engrapple
+engrasp
+Engraulidae
+Engraulis
+engrave
+engraved
+engravement
+engraver
+engraving
+engreen
+engrieve
+engroove
+engross
+engrossed
+engrossedly
+engrosser
+engrossing
+engrossingly
+engrossingness
+engrossment
+enguard
+engulf
+engulfment
+engyscope
+engysseismology
+Engystomatidae
+enhallow
+enhalo
+enhamper
+enhance
+enhanced
+enhancement
+enhancer
+enhancive
+enharmonic
+enharmonical
+enharmonically
+enhat
+enhaunt
+enhearse
+enheart
+enhearten
+enhedge
+enhelm
+enhemospore
+enherit
+enheritage
+enheritance
+enhorror
+enhunger
+enhusk
+Enhydra
+Enhydrinae
+Enhydris
+enhydrite
+enhydritic
+enhydros
+enhydrous
+enhypostasia
+enhypostasis
+enhypostatic
+enhypostatize
+eniac
+Enicuridae
+Enid
+Enif
+enigma
+enigmatic
+enigmatical
+enigmatically
+enigmaticalness
+enigmatist
+enigmatization
+enigmatize
+enigmatographer
+enigmatography
+enigmatology
+enisle
+enjail
+enjamb
+enjambed
+enjambment
+enjelly
+enjeopard
+enjeopardy
+enjewel
+enjoin
+enjoinder
+enjoiner
+enjoinment
+enjoy
+enjoyable
+enjoyableness
+enjoyably
+enjoyer
+enjoying
+enjoyingly
+enjoyment
+enkerchief
+enkernel
+Enki
+Enkidu
+enkindle
+enkindler
+enkraal
+enlace
+enlacement
+enlard
+enlarge
+enlargeable
+enlargeableness
+enlarged
+enlargedly
+enlargedness
+enlargement
+enlarger
+enlarging
+enlargingly
+enlaurel
+enleaf
+enleague
+enlevement
+enlief
+enlife
+enlight
+enlighten
+enlightened
+enlightenedly
+enlightenedness
+enlightener
+enlightening
+enlighteningly
+enlightenment
+enlink
+enlinkment
+enlist
+enlisted
+enlister
+enlistment
+enliven
+enlivener
+enlivening
+enliveningly
+enlivenment
+enlock
+enlodge
+enlodgement
+enmarble
+enmask
+enmass
+enmesh
+enmeshment
+enmist
+enmity
+enmoss
+enmuffle
+enneacontahedral
+enneacontahedron
+ennead
+enneadianome
+enneadic
+enneagon
+enneagynous
+enneahedral
+enneahedria
+enneahedron
+enneapetalous
+enneaphyllous
+enneasemic
+enneasepalous
+enneaspermous
+enneastyle
+enneastylos
+enneasyllabic
+enneateric
+enneatic
+enneatical
+ennerve
+enniche
+ennoble
+ennoblement
+ennobler
+ennobling
+ennoblingly
+ennoic
+ennomic
+ennui
+Enoch
+Enochic
+enocyte
+enodal
+enodally
+enoil
+enol
+enolate
+enolic
+enolizable
+enolization
+enolize
+enomania
+enomaniac
+enomotarch
+enomoty
+enophthalmos
+enophthalmus
+Enopla
+enoplan
+enoptromancy
+enorganic
+enorm
+enormity
+enormous
+enormously
+enormousness
+Enos
+enostosis
+enough
+enounce
+enouncement
+enow
+enphytotic
+enplane
+enquicken
+enquire
+enquirer
+enquiry
+enrace
+enrage
+enraged
+enragedly
+enragement
+enrange
+enrank
+enrapt
+enrapture
+enrapturer
+enravish
+enravishingly
+enravishment
+enray
+enregiment
+enregister
+enregistration
+enregistry
+enrib
+enrich
+enricher
+enriching
+enrichingly
+enrichment
+enring
+enrive
+enrobe
+enrobement
+enrober
+enrockment
+enrol
+enroll
+enrolled
+enrollee
+enroller
+enrollment
+enrolment
+enroot
+enrough
+enruin
+enrut
+ens
+ensaffron
+ensaint
+ensample
+ensand
+ensandal
+ensanguine
+ensate
+enscene
+ensconce
+enscroll
+ensculpture
+ense
+enseam
+enseat
+enseem
+ensellure
+ensemble
+ensepulcher
+ensepulchre
+enseraph
+enserf
+ensete
+enshade
+enshadow
+enshawl
+ensheathe
+enshell
+enshelter
+enshield
+enshrine
+enshrinement
+enshroud
+Ensiferi
+ensiform
+ensign
+ensigncy
+ensignhood
+ensignment
+ensignry
+ensignship
+ensilage
+ensilate
+ensilation
+ensile
+ensilist
+ensilver
+ensisternum
+ensky
+enslave
+enslavedness
+enslavement
+enslaver
+ensmall
+ensnare
+ensnarement
+ensnarer
+ensnaring
+ensnaringly
+ensnarl
+ensnow
+ensorcelize
+ensorcell
+ensoul
+enspell
+ensphere
+enspirit
+enstamp
+enstar
+enstate
+enstatite
+enstatitic
+enstatolite
+ensteel
+enstool
+enstore
+enstrengthen
+ensuable
+ensuance
+ensuant
+ensue
+ensuer
+ensuingly
+ensulphur
+ensure
+ensurer
+enswathe
+enswathement
+ensweep
+entablature
+entablatured
+entablement
+entach
+entad
+Entada
+entail
+entailable
+entailer
+entailment
+ental
+entame
+Entamoeba
+entamoebiasis
+entamoebic
+entangle
+entangled
+entangledly
+entangledness
+entanglement
+entangler
+entangling
+entanglingly
+entapophysial
+entapophysis
+entarthrotic
+entasia
+entasis
+entelam
+entelechy
+entellus
+Entelodon
+entelodont
+entempest
+entemple
+entente
+Ententophil
+entepicondylar
+enter
+enterable
+enteraden
+enteradenographic
+enteradenography
+enteradenological
+enteradenology
+enteral
+enteralgia
+enterate
+enterauxe
+enterclose
+enterectomy
+enterer
+entergogenic
+enteria
+enteric
+entericoid
+entering
+enteritidis
+enteritis
+entermete
+enteroanastomosis
+enterobiliary
+enterocele
+enterocentesis
+enterochirurgia
+enterochlorophyll
+enterocholecystostomy
+enterocinesia
+enterocinetic
+enterocleisis
+enteroclisis
+enteroclysis
+Enterocoela
+enterocoele
+enterocoelic
+enterocoelous
+enterocolitis
+enterocolostomy
+enterocrinin
+enterocyst
+enterocystoma
+enterodynia
+enteroepiplocele
+enterogastritis
+enterogastrone
+enterogenous
+enterogram
+enterograph
+enterography
+enterohelcosis
+enterohemorrhage
+enterohepatitis
+enterohydrocele
+enteroid
+enterointestinal
+enteroischiocele
+enterokinase
+enterokinesia
+enterokinetic
+enterolith
+enterolithiasis
+Enterolobium
+enterology
+enteromegalia
+enteromegaly
+enteromere
+enteromesenteric
+Enteromorpha
+enteromycosis
+enteromyiasis
+enteron
+enteroneuritis
+enteroparalysis
+enteroparesis
+enteropathy
+enteropexia
+enteropexy
+enterophthisis
+enteroplasty
+enteroplegia
+enteropneust
+Enteropneusta
+enteropneustan
+enteroptosis
+enteroptotic
+enterorrhagia
+enterorrhaphy
+enterorrhea
+enteroscope
+enterosepsis
+enterospasm
+enterostasis
+enterostenosis
+enterostomy
+enterosyphilis
+enterotome
+enterotomy
+enterotoxemia
+enterotoxication
+enterozoa
+enterozoan
+enterozoic
+enterprise
+enterpriseless
+enterpriser
+enterprising
+enterprisingly
+enterritoriality
+entertain
+entertainable
+entertainer
+entertaining
+entertainingly
+entertainingness
+entertainment
+enthalpy
+entheal
+enthelmintha
+enthelminthes
+enthelminthic
+enthetic
+enthral
+enthraldom
+enthrall
+enthralldom
+enthraller
+enthralling
+enthrallingly
+enthrallment
+enthralment
+enthrone
+enthronement
+enthronization
+enthronize
+enthuse
+enthusiasm
+enthusiast
+enthusiastic
+enthusiastical
+enthusiastically
+enthusiastly
+enthymematic
+enthymematical
+enthymeme
+entia
+entice
+enticeable
+enticeful
+enticement
+enticer
+enticing
+enticingly
+enticingness
+entifical
+entification
+entify
+entincture
+entire
+entirely
+entireness
+entirety
+entiris
+entitative
+entitatively
+entitle
+entitlement
+entity
+entoblast
+entoblastic
+entobranchiate
+entobronchium
+entocalcaneal
+entocarotid
+entocele
+entocnemial
+entocoele
+entocoelic
+entocondylar
+entocondyle
+entocondyloid
+entocone
+entoconid
+entocornea
+entocranial
+entocuneiform
+entocuniform
+entocyemate
+entocyst
+entoderm
+entodermal
+entodermic
+entogastric
+entogenous
+entoglossal
+entohyal
+entoil
+entoilment
+Entoloma
+entomb
+entombment
+entomere
+entomeric
+entomic
+entomical
+entomion
+entomogenous
+entomoid
+entomologic
+entomological
+entomologically
+entomologist
+entomologize
+entomology
+Entomophaga
+entomophagan
+entomophagous
+Entomophila
+entomophilous
+entomophily
+Entomophthora
+Entomophthoraceae
+entomophthoraceous
+Entomophthorales
+entomophthorous
+entomophytous
+Entomosporium
+Entomostraca
+entomostracan
+entomostracous
+entomotaxy
+entomotomist
+entomotomy
+entone
+entonement
+entoolitic
+entoparasite
+entoparasitic
+entoperipheral
+entophytal
+entophyte
+entophytic
+entophytically
+entophytous
+entopic
+entopical
+entoplasm
+entoplastic
+entoplastral
+entoplastron
+entopopliteal
+Entoprocta
+entoproctous
+entopterygoid
+entoptic
+entoptical
+entoptically
+entoptics
+entoptoscope
+entoptoscopic
+entoptoscopy
+entoretina
+entorganism
+entosarc
+entosclerite
+entosphenal
+entosphenoid
+entosphere
+entosternal
+entosternite
+entosternum
+entothorax
+entotic
+Entotrophi
+entotympanic
+entourage
+entozoa
+entozoal
+entozoan
+entozoarian
+entozoic
+entozoological
+entozoologically
+entozoologist
+entozoology
+entozoon
+entracte
+entrail
+entrails
+entrain
+entrainer
+entrainment
+entrammel
+entrance
+entrancedly
+entrancement
+entranceway
+entrancing
+entrancingly
+entrant
+entrap
+entrapment
+entrapper
+entrappingly
+entreasure
+entreat
+entreating
+entreatingly
+entreatment
+entreaty
+entree
+entremets
+entrench
+entrenchment
+entrepas
+entrepot
+entrepreneur
+entrepreneurial
+entrepreneurship
+entresol
+entrochite
+entrochus
+entropion
+entropionize
+entropium
+entropy
+entrough
+entrust
+entrustment
+entry
+entryman
+entryway
+enturret
+entwine
+entwinement
+entwist
+Entyloma
+enucleate
+enucleation
+enucleator
+Enukki
+enumerable
+enumerate
+enumeration
+enumerative
+enumerator
+enunciability
+enunciable
+enunciate
+enunciation
+enunciative
+enunciatively
+enunciator
+enunciatory
+enure
+enuresis
+enuretic
+enurny
+envapor
+envapour
+envassal
+envassalage
+envault
+enveil
+envelop
+envelope
+enveloper
+envelopment
+envenom
+envenomation
+enverdure
+envermeil
+enviable
+enviableness
+enviably
+envied
+envier
+envineyard
+envious
+enviously
+enviousness
+environ
+environage
+environal
+environic
+environment
+environmental
+environmentalism
+environmentalist
+environmentally
+environs
+envisage
+envisagement
+envision
+envolume
+envoy
+envoyship
+envy
+envying
+envyingly
+enwallow
+enwiden
+enwind
+enwisen
+enwoman
+enwomb
+enwood
+enworthed
+enwound
+enwrap
+enwrapment
+enwreathe
+enwrite
+enwrought
+enzone
+enzootic
+enzooty
+enzym
+enzymatic
+enzyme
+enzymic
+enzymically
+enzymologist
+enzymology
+enzymolysis
+enzymolytic
+enzymosis
+enzymotic
+eoan
+Eoanthropus
+Eocarboniferous
+Eocene
+Eodevonian
+Eogaea
+Eogaean
+Eoghanacht
+Eohippus
+eolation
+eolith
+eolithic
+Eomecon
+eon
+eonism
+Eopalaeozoic
+Eopaleozoic
+eophyte
+eophytic
+eophyton
+eorhyolite
+eosate
+Eosaurus
+eoside
+eosin
+eosinate
+eosinic
+eosinoblast
+eosinophile
+eosinophilia
+eosinophilic
+eosinophilous
+eosphorite
+Eozoic
+eozoon
+eozoonal
+epacmaic
+epacme
+epacrid
+Epacridaceae
+epacridaceous
+Epacris
+epact
+epactal
+epagoge
+epagogic
+epagomenae
+epagomenal
+epagomenic
+epagomenous
+epaleaceous
+epalpate
+epanadiplosis
+Epanagoge
+epanalepsis
+epanaleptic
+epanaphora
+epanaphoral
+epanastrophe
+epanisognathism
+epanisognathous
+epanodos
+epanody
+Epanorthidae
+epanorthosis
+epanorthotic
+epanthous
+epapillate
+epappose
+eparch
+eparchate
+Eparchean
+eparchial
+eparchy
+eparcuale
+eparterial
+epaule
+epaulement
+epaulet
+epauleted
+epauletted
+epauliere
+epaxial
+epaxially
+epedaphic
+epee
+epeeist
+Epeira
+epeiric
+epeirid
+Epeiridae
+epeirogenesis
+epeirogenetic
+epeirogenic
+epeirogeny
+epeisodion
+epembryonic
+epencephal
+epencephalic
+epencephalon
+ependyma
+ependymal
+ependyme
+ependymitis
+ependymoma
+ependytes
+epenthesis
+epenthesize
+epenthetic
+epephragmal
+epepophysial
+epepophysis
+epergne
+eperotesis
+Eperua
+epexegesis
+epexegetic
+epexegetical
+epexegetically
+epha
+ephah
+epharmonic
+epharmony
+ephebe
+ephebeion
+ephebeum
+ephebic
+ephebos
+ephebus
+ephectic
+Ephedra
+Ephedraceae
+ephedrine
+ephelcystic
+ephelis
+Ephemera
+ephemera
+ephemerae
+ephemeral
+ephemerality
+ephemerally
+ephemeralness
+ephemeran
+ephemerid
+Ephemerida
+Ephemeridae
+ephemerides
+ephemeris
+ephemerist
+ephemeromorph
+ephemeromorphic
+ephemeron
+Ephemeroptera
+ephemerous
+Ephesian
+Ephesine
+ephetae
+ephete
+ephetic
+ephialtes
+ephidrosis
+ephippial
+ephippium
+ephod
+ephor
+ephoral
+ephoralty
+ephorate
+ephoric
+ephorship
+ephorus
+ephphatha
+Ephraim
+Ephraimite
+Ephraimitic
+Ephraimitish
+Ephraitic
+Ephrathite
+Ephthalite
+Ephthianura
+ephthianure
+Ephydra
+ephydriad
+ephydrid
+Ephydridae
+ephymnium
+ephyra
+ephyrula
+epibasal
+Epibaterium
+epibatholithic
+epibenthic
+epibenthos
+epiblast
+epiblastema
+epiblastic
+epiblema
+epibole
+epibolic
+epibolism
+epiboly
+epiboulangerite
+epibranchial
+epic
+epical
+epically
+epicalyx
+epicanthic
+epicanthus
+epicardia
+epicardiac
+epicardial
+epicardium
+epicarid
+epicaridan
+Epicaridea
+Epicarides
+epicarp
+Epicauta
+epicede
+epicedial
+epicedian
+epicedium
+epicele
+epicene
+epicenism
+epicenity
+epicenter
+epicentral
+epicentrum
+Epiceratodus
+epicerebral
+epicheirema
+epichil
+epichile
+epichilium
+epichindrotic
+epichirema
+epichondrosis
+epichordal
+epichorial
+epichoric
+epichorion
+epichoristic
+Epichristian
+epicism
+epicist
+epiclastic
+epicleidian
+epicleidium
+epiclesis
+epiclidal
+epiclinal
+epicly
+epicnemial
+Epicoela
+epicoelar
+epicoele
+epicoelia
+epicoeliac
+epicoelian
+epicoeloma
+epicoelous
+epicolic
+epicondylar
+epicondyle
+epicondylian
+epicondylic
+epicontinental
+epicoracohumeral
+epicoracoid
+epicoracoidal
+epicormic
+epicorolline
+epicortical
+epicostal
+epicotyl
+epicotyleal
+epicotyledonary
+epicranial
+epicranium
+epicranius
+Epicrates
+epicrisis
+epicritic
+epicrystalline
+Epictetian
+epicure
+Epicurean
+Epicureanism
+epicurish
+epicurishly
+Epicurism
+Epicurize
+epicycle
+epicyclic
+epicyclical
+epicycloid
+epicycloidal
+epicyemate
+epicyesis
+epicystotomy
+epicyte
+epideictic
+epideictical
+epideistic
+epidemic
+epidemical
+epidemically
+epidemicalness
+epidemicity
+epidemiographist
+epidemiography
+epidemiological
+epidemiologist
+epidemiology
+epidemy
+epidendral
+epidendric
+Epidendron
+Epidendrum
+epiderm
+epiderma
+epidermal
+epidermatic
+epidermatoid
+epidermatous
+epidermic
+epidermical
+epidermically
+epidermidalization
+epidermis
+epidermization
+epidermoid
+epidermoidal
+epidermolysis
+epidermomycosis
+Epidermophyton
+epidermophytosis
+epidermose
+epidermous
+epidesmine
+epidialogue
+epidiascope
+epidiascopic
+epidictic
+epidictical
+epididymal
+epididymectomy
+epididymis
+epididymite
+epididymitis
+epididymodeferentectomy
+epididymodeferential
+epididymovasostomy
+epidiorite
+epidiorthosis
+epidosite
+epidote
+epidotic
+epidotiferous
+epidotization
+epidural
+epidymides
+epifascial
+epifocal
+epifolliculitis
+Epigaea
+epigamic
+epigaster
+epigastraeum
+epigastral
+epigastrial
+epigastric
+epigastrical
+epigastriocele
+epigastrium
+epigastrocele
+epigeal
+epigean
+epigeic
+epigene
+epigenesis
+epigenesist
+epigenetic
+epigenetically
+epigenic
+epigenist
+epigenous
+epigeous
+epiglottal
+epiglottic
+epiglottidean
+epiglottiditis
+epiglottis
+epiglottitis
+epignathous
+epigonal
+epigonation
+epigone
+Epigoni
+epigonic
+Epigonichthyidae
+Epigonichthys
+epigonium
+epigonos
+epigonous
+Epigonus
+epigram
+epigrammatic
+epigrammatical
+epigrammatically
+epigrammatism
+epigrammatist
+epigrammatize
+epigrammatizer
+epigraph
+epigrapher
+epigraphic
+epigraphical
+epigraphically
+epigraphist
+epigraphy
+epiguanine
+epigyne
+epigynous
+epigynum
+epigyny
+Epihippus
+epihyal
+epihydric
+epihydrinic
+epikeia
+epiklesis
+Epikouros
+epilabrum
+Epilachna
+Epilachnides
+epilamellar
+epilaryngeal
+epilate
+epilation
+epilatory
+epilegomenon
+epilemma
+epilemmal
+epilepsy
+epileptic
+epileptically
+epileptiform
+epileptogenic
+epileptogenous
+epileptoid
+epileptologist
+epileptology
+epilimnion
+epilobe
+Epilobiaceae
+Epilobium
+epilogation
+epilogic
+epilogical
+epilogist
+epilogistic
+epilogize
+epilogue
+Epimachinae
+epimacus
+epimandibular
+epimanikia
+Epimedium
+Epimenidean
+epimer
+epimeral
+epimere
+epimeric
+epimeride
+epimerite
+epimeritic
+epimeron
+epimerum
+epimorphic
+epimorphosis
+epimysium
+epimyth
+epinaos
+epinastic
+epinastically
+epinasty
+epineolithic
+Epinephelidae
+Epinephelus
+epinephrine
+epinette
+epineural
+epineurial
+epineurium
+epinglette
+epinicial
+epinician
+epinicion
+epinine
+epiopticon
+epiotic
+Epipactis
+epipaleolithic
+epiparasite
+epiparodos
+epipastic
+epiperipheral
+epipetalous
+epiphanous
+Epiphany
+epipharyngeal
+epipharynx
+Epiphegus
+epiphenomenal
+epiphenomenalism
+epiphenomenalist
+epiphenomenon
+epiphloedal
+epiphloedic
+epiphloeum
+epiphonema
+epiphora
+epiphragm
+epiphylline
+epiphyllous
+Epiphyllum
+epiphysary
+epiphyseal
+epiphyseolysis
+epiphysial
+epiphysis
+epiphysitis
+epiphytal
+epiphyte
+epiphytic
+epiphytical
+epiphytically
+epiphytism
+epiphytology
+epiphytotic
+epiphytous
+epipial
+epiplankton
+epiplanktonic
+epiplasm
+epiplasmic
+epiplastral
+epiplastron
+epiplectic
+epipleura
+epipleural
+epiplexis
+epiploce
+epiplocele
+epiploic
+epiploitis
+epiploon
+epiplopexy
+epipodial
+epipodiale
+epipodite
+epipoditic
+epipodium
+epipolic
+epipolism
+epipolize
+epiprecoracoid
+Epipsychidion
+epipteric
+epipterous
+epipterygoid
+epipubic
+epipubis
+epirhizous
+epirogenic
+epirogeny
+Epirote
+Epirotic
+epirotulian
+epirrhema
+epirrhematic
+epirrheme
+episarcine
+episcenium
+episclera
+episcleral
+episcleritis
+episcopable
+episcopacy
+Episcopal
+episcopal
+episcopalian
+Episcopalianism
+Episcopalianize
+episcopalism
+episcopality
+Episcopally
+episcopally
+episcopate
+episcopature
+episcope
+episcopicide
+episcopization
+episcopize
+episcopolatry
+episcotister
+episematic
+episepalous
+episiocele
+episiohematoma
+episioplasty
+episiorrhagia
+episiorrhaphy
+episiostenosis
+episiotomy
+episkeletal
+episkotister
+episodal
+episode
+episodial
+episodic
+episodical
+episodically
+epispadiac
+epispadias
+epispastic
+episperm
+epispermic
+epispinal
+episplenitis
+episporangium
+epispore
+episporium
+epistapedial
+epistasis
+epistatic
+epistaxis
+epistemic
+epistemolog
+epistemological
+epistemologically
+epistemologist
+epistemology
+epistemonic
+epistemonical
+epistemophilia
+epistemophiliac
+epistemophilic
+episternal
+episternalia
+episternite
+episternum
+epistilbite
+epistlar
+epistle
+epistler
+epistolarian
+epistolarily
+epistolary
+epistolatory
+epistoler
+epistolet
+epistolic
+epistolical
+epistolist
+epistolizable
+epistolization
+epistolize
+epistolizer
+epistolographer
+epistolographic
+epistolographist
+epistolography
+epistoma
+epistomal
+epistome
+epistomian
+epistroma
+epistrophe
+epistropheal
+epistropheus
+epistrophic
+epistrophy
+epistylar
+epistyle
+Epistylis
+episyllogism
+episynaloephe
+episynthetic
+episyntheton
+epitactic
+epitaph
+epitapher
+epitaphial
+epitaphian
+epitaphic
+epitaphical
+epitaphist
+epitaphize
+epitaphless
+epitasis
+epitela
+epitendineum
+epitenon
+epithalamia
+epithalamial
+epithalamiast
+epithalamic
+epithalamion
+epithalamium
+epithalamize
+epithalamus
+epithalamy
+epithalline
+epitheca
+epithecal
+epithecate
+epithecium
+epithelia
+epithelial
+epithelioblastoma
+epithelioceptor
+epitheliogenetic
+epithelioglandular
+epithelioid
+epitheliolysin
+epitheliolysis
+epitheliolytic
+epithelioma
+epitheliomatous
+epitheliomuscular
+epitheliosis
+epitheliotoxin
+epithelium
+epithelization
+epithelize
+epitheloid
+epithem
+epithesis
+epithet
+epithetic
+epithetical
+epithetically
+epithetician
+epithetize
+epitheton
+epithumetic
+epithyme
+epithymetic
+epithymetical
+epitimesis
+epitoke
+epitomator
+epitomatory
+epitome
+epitomic
+epitomical
+epitomically
+epitomist
+epitomization
+epitomize
+epitomizer
+epitonic
+Epitoniidae
+epitonion
+Epitonium
+epitoxoid
+epitrachelion
+epitrichial
+epitrichium
+epitrite
+epitritic
+epitrochlea
+epitrochlear
+epitrochoid
+epitrochoidal
+epitrope
+epitrophic
+epitrophy
+epituberculosis
+epituberculous
+epitympanic
+epitympanum
+epityphlitis
+epityphlon
+epiural
+epivalve
+epixylous
+epizeuxis
+Epizoa
+epizoa
+epizoal
+epizoan
+epizoarian
+epizoic
+epizoicide
+epizoon
+epizootic
+epizootiology
+epoch
+epocha
+epochal
+epochally
+epochism
+epochist
+epode
+epodic
+epollicate
+Epomophorus
+eponychium
+eponym
+eponymic
+eponymism
+eponymist
+eponymize
+eponymous
+eponymus
+eponymy
+epoophoron
+epopee
+epopoean
+epopoeia
+epopoeist
+epopt
+epoptes
+epoptic
+epoptist
+epornitic
+epornitically
+epos
+Eppie
+Eppy
+Eproboscidea
+epruinose
+epsilon
+Epsom
+epsomite
+Eptatretidae
+Eptatretus
+epulary
+epulation
+epulis
+epulo
+epuloid
+epulosis
+epulotic
+epupillate
+epural
+epurate
+epuration
+epyllion
+equability
+equable
+equableness
+equably
+equaeval
+equal
+equalable
+equaling
+equalist
+equalitarian
+equalitarianism
+equality
+equalization
+equalize
+equalizer
+equalizing
+equalling
+equally
+equalness
+equangular
+equanimity
+equanimous
+equanimously
+equanimousness
+equant
+equatable
+equate
+equation
+equational
+equationally
+equationism
+equationist
+equator
+equatorial
+equatorially
+equatorward
+equatorwards
+equerry
+equerryship
+equestrial
+equestrian
+equestrianism
+equestrianize
+equestrianship
+equestrienne
+equianchorate
+equiangle
+equiangular
+equiangularity
+equianharmonic
+equiarticulate
+equiatomic
+equiaxed
+equiaxial
+equibalance
+equibiradiate
+equicellular
+equichangeable
+equicohesive
+equiconvex
+equicostate
+equicrural
+equicurve
+equid
+equidense
+equidensity
+equidiagonal
+equidifferent
+equidimensional
+equidistance
+equidistant
+equidistantial
+equidistantly
+equidistribution
+equidiurnal
+equidivision
+equidominant
+equidurable
+equielliptical
+equiexcellency
+equiform
+equiformal
+equiformity
+equiglacial
+equigranular
+equijacent
+equilateral
+equilaterally
+equilibrant
+equilibrate
+equilibration
+equilibrative
+equilibrator
+equilibratory
+equilibria
+equilibrial
+equilibriate
+equilibrio
+equilibrious
+equilibrist
+equilibristat
+equilibristic
+equilibrity
+equilibrium
+equilibrize
+equilobate
+equilobed
+equilocation
+equilucent
+equimodal
+equimolar
+equimolecular
+equimomental
+equimultiple
+equinate
+equine
+equinecessary
+equinely
+equinia
+equinity
+equinoctial
+equinoctially
+equinovarus
+equinox
+equinumerally
+equinus
+equiomnipotent
+equip
+equipaga
+equipage
+equiparant
+equiparate
+equiparation
+equipartile
+equipartisan
+equipartition
+equiped
+equipedal
+equiperiodic
+equipluve
+equipment
+equipoise
+equipollence
+equipollency
+equipollent
+equipollently
+equipollentness
+equiponderance
+equiponderancy
+equiponderant
+equiponderate
+equiponderation
+equipostile
+equipotent
+equipotential
+equipotentiality
+equipper
+equiprobabilism
+equiprobabilist
+equiprobability
+equiproducing
+equiproportional
+equiproportionality
+equiradial
+equiradiate
+equiradical
+equirotal
+equisegmented
+Equisetaceae
+equisetaceous
+Equisetales
+equisetic
+Equisetum
+equisided
+equisignal
+equisized
+equison
+equisonance
+equisonant
+equispaced
+equispatial
+equisufficiency
+equisurface
+equitable
+equitableness
+equitably
+equitangential
+equitant
+equitation
+equitative
+equitemporal
+equitemporaneous
+equites
+equitist
+equitriangular
+equity
+equivalence
+equivalenced
+equivalency
+equivalent
+equivalently
+equivaliant
+equivalue
+equivaluer
+equivalve
+equivalved
+equivalvular
+equivelocity
+equivocacy
+equivocal
+equivocality
+equivocally
+equivocalness
+equivocate
+equivocatingly
+equivocation
+equivocator
+equivocatory
+equivoluminal
+equivoque
+equivorous
+equivote
+equoid
+equoidean
+equuleus
+Equus
+er
+era
+erade
+eradiate
+eradiation
+eradicable
+eradicant
+eradicate
+eradication
+eradicative
+eradicator
+eradicatory
+eradiculose
+Eragrostis
+eral
+eranist
+Eranthemum
+Eranthis
+erasable
+erase
+erased
+erasement
+eraser
+erasion
+Erasmian
+Erasmus
+Erastian
+Erastianism
+Erastianize
+Erastus
+erasure
+Erava
+erbia
+erbium
+erd
+erdvark
+ere
+Erechtheum
+Erechtheus
+Erechtites
+erect
+erectable
+erecter
+erectile
+erectility
+erecting
+erection
+erective
+erectly
+erectness
+erectopatent
+erector
+erelong
+eremacausis
+Eremian
+eremic
+eremital
+eremite
+eremiteship
+eremitic
+eremitical
+eremitish
+eremitism
+Eremochaeta
+eremochaetous
+eremology
+eremophyte
+Eremopteris
+Eremurus
+erenach
+erenow
+erepsin
+erept
+ereptase
+ereptic
+ereption
+erethic
+erethisia
+erethism
+erethismic
+erethistic
+erethitic
+Erethizon
+Erethizontidae
+Eretrian
+erewhile
+erewhiles
+erg
+ergal
+ergamine
+Ergane
+ergasia
+ergasterion
+ergastic
+ergastoplasm
+ergastoplasmic
+ergastulum
+ergatandromorph
+ergatandromorphic
+ergatandrous
+ergatandry
+ergates
+ergatocracy
+ergatocrat
+ergatogyne
+ergatogynous
+ergatogyny
+ergatoid
+ergatomorph
+ergatomorphic
+ergatomorphism
+ergmeter
+ergodic
+ergogram
+ergograph
+ergographic
+ergoism
+ergology
+ergomaniac
+ergometer
+ergometric
+ergometrine
+ergon
+ergonovine
+ergophile
+ergophobia
+ergophobiac
+ergoplasm
+ergostat
+ergosterin
+ergosterol
+ergot
+ergotamine
+ergotaminine
+ergoted
+ergothioneine
+ergotic
+ergotin
+ergotinine
+ergotism
+ergotist
+ergotization
+ergotize
+ergotoxin
+ergotoxine
+ergusia
+eria
+Erian
+Erianthus
+Eric
+eric
+Erica
+Ericaceae
+ericaceous
+ericad
+erical
+Ericales
+ericetal
+ericeticolous
+ericetum
+erichthus
+erichtoid
+ericineous
+ericius
+Erick
+ericoid
+ericolin
+ericophyte
+Eridanid
+Erie
+Erigenia
+Erigeron
+erigible
+Eriglossa
+eriglossate
+Erik
+erika
+erikite
+Erinaceidae
+erinaceous
+Erinaceus
+erineum
+erinite
+Erinize
+erinose
+Eriobotrya
+Eriocaulaceae
+eriocaulaceous
+Eriocaulon
+Eriocomi
+Eriodendron
+Eriodictyon
+erioglaucine
+Eriogonum
+eriometer
+erionite
+Eriophorum
+Eriophyes
+Eriophyidae
+eriophyllous
+Eriosoma
+Eriphyle
+Eristalis
+eristic
+eristical
+eristically
+Erithacus
+Eritrean
+erizo
+erlking
+Erma
+Ermanaric
+Ermani
+Ermanrich
+ermelin
+ermine
+ermined
+erminee
+ermines
+erminites
+erminois
+erne
+Ernest
+Ernestine
+Ernie
+Ernst
+erode
+eroded
+erodent
+erodible
+Erodium
+erogeneity
+erogenesis
+erogenetic
+erogenic
+erogenous
+erogeny
+Eros
+eros
+erose
+erosely
+erosible
+erosion
+erosional
+erosionist
+erosive
+erostrate
+eroteme
+erotesis
+erotetic
+erotic
+erotica
+erotical
+erotically
+eroticism
+eroticize
+eroticomania
+erotism
+erotogenesis
+erotogenetic
+erotogenic
+erotogenicity
+erotomania
+erotomaniac
+erotopath
+erotopathic
+erotopathy
+Erotylidae
+Erpetoichthys
+erpetologist
+err
+errability
+errable
+errableness
+errabund
+errancy
+errand
+errant
+Errantia
+errantly
+errantness
+errantry
+errata
+erratic
+erratical
+erratically
+erraticalness
+erraticism
+erraticness
+erratum
+errhine
+erring
+erringly
+errite
+erroneous
+erroneously
+erroneousness
+error
+errorful
+errorist
+errorless
+ers
+Ersar
+ersatz
+Erse
+Ertebolle
+erth
+erthen
+erthling
+erthly
+erubescence
+erubescent
+erubescite
+eruc
+Eruca
+eruca
+erucic
+eruciform
+erucin
+erucivorous
+eruct
+eructance
+eructation
+eructative
+eruction
+erudit
+erudite
+eruditely
+eruditeness
+eruditical
+erudition
+eruditional
+eruditionist
+erugate
+erugation
+erugatory
+erumpent
+erupt
+eruption
+eruptional
+eruptive
+eruptively
+eruptiveness
+eruptivity
+ervenholder
+Ervipiame
+Ervum
+Erwin
+Erwinia
+eryhtrism
+Erymanthian
+Eryngium
+eryngo
+Eryon
+Eryops
+Erysibe
+Erysimum
+erysipelas
+erysipelatoid
+erysipelatous
+erysipeloid
+Erysipelothrix
+erysipelous
+Erysiphaceae
+Erysiphe
+Erythea
+erythema
+erythematic
+erythematous
+erythemic
+Erythraea
+Erythraean
+Erythraeidae
+erythrasma
+erythrean
+erythremia
+erythremomelalgia
+erythrene
+erythrin
+Erythrina
+erythrine
+Erythrinidae
+Erythrinus
+erythrismal
+erythristic
+erythrite
+erythritic
+erythritol
+erythroblast
+erythroblastic
+erythroblastosis
+erythrocarpous
+erythrocatalysis
+Erythrochaete
+erythrochroic
+erythrochroism
+erythroclasis
+erythroclastic
+erythrocyte
+erythrocytic
+erythrocytoblast
+erythrocytolysin
+erythrocytolysis
+erythrocytolytic
+erythrocytometer
+erythrocytorrhexis
+erythrocytoschisis
+erythrocytosis
+erythrodegenerative
+erythrodermia
+erythrodextrin
+erythrogenesis
+erythrogenic
+erythroglucin
+erythrogonium
+erythroid
+erythrol
+erythrolein
+erythrolitmin
+erythrolysin
+erythrolysis
+erythrolytic
+erythromelalgia
+erythron
+erythroneocytosis
+Erythronium
+erythronium
+erythropenia
+erythrophage
+erythrophagous
+erythrophilous
+erythrophleine
+erythrophobia
+erythrophore
+erythrophyll
+erythrophyllin
+erythropia
+erythroplastid
+erythropoiesis
+erythropoietic
+erythropsia
+erythropsin
+erythrorrhexis
+erythroscope
+erythrose
+erythrosiderite
+erythrosin
+erythrosinophile
+erythrosis
+Erythroxylaceae
+erythroxylaceous
+erythroxyline
+Erythroxylon
+Erythroxylum
+erythrozincite
+erythrozyme
+erythrulose
+Eryx
+es
+esca
+escadrille
+escalade
+escalader
+escalado
+escalan
+escalate
+Escalator
+escalator
+escalin
+Escallonia
+Escalloniaceae
+escalloniaceous
+escalop
+escaloped
+escambio
+escambron
+escapable
+escapade
+escapage
+escape
+escapee
+escapeful
+escapeless
+escapement
+escaper
+escapingly
+escapism
+escapist
+escarbuncle
+escargatoire
+escarole
+escarp
+escarpment
+eschalot
+eschar
+eschara
+escharine
+escharoid
+escharotic
+eschatocol
+eschatological
+eschatologist
+eschatology
+escheat
+escheatable
+escheatage
+escheatment
+escheator
+escheatorship
+Escherichia
+eschew
+eschewal
+eschewance
+eschewer
+Eschscholtzia
+eschynite
+esclavage
+escoba
+escobadura
+escobilla
+escobita
+escolar
+esconson
+escopette
+Escorial
+escort
+escortage
+escortee
+escortment
+escribe
+escritoire
+escritorial
+escrol
+escropulo
+escrow
+escruage
+escudo
+Esculapian
+esculent
+esculetin
+esculin
+escutcheon
+escutcheoned
+escutellate
+esdragol
+Esdras
+Esebrias
+esemplastic
+esemplasy
+eseptate
+esere
+eserine
+esexual
+eshin
+esiphonal
+esker
+Eskimauan
+Eskimo
+Eskimoic
+Eskimoid
+Eskimoized
+Eskualdun
+Eskuara
+Esmeralda
+Esmeraldan
+esmeraldite
+esne
+esoanhydride
+esocataphoria
+Esocidae
+esociform
+esocyclic
+esodic
+esoenteritis
+esoethmoiditis
+esogastritis
+esonarthex
+esoneural
+esophagal
+esophagalgia
+esophageal
+esophagean
+esophagectasia
+esophagectomy
+esophagi
+esophagism
+esophagismus
+esophagitis
+esophago
+esophagocele
+esophagodynia
+esophagogastroscopy
+esophagogastrostomy
+esophagomalacia
+esophagometer
+esophagomycosis
+esophagopathy
+esophagoplasty
+esophagoplegia
+esophagoplication
+esophagoptosis
+esophagorrhagia
+esophagoscope
+esophagoscopy
+esophagospasm
+esophagostenosis
+esophagostomy
+esophagotome
+esophagotomy
+esophagus
+esophoria
+esophoric
+Esopus
+esoteric
+esoterica
+esoterical
+esoterically
+esotericism
+esotericist
+esoterics
+esoterism
+esoterist
+esoterize
+esotery
+esothyropexy
+esotrope
+esotropia
+esotropic
+Esox
+espacement
+espadon
+espalier
+espantoon
+esparcet
+esparsette
+esparto
+espathate
+espave
+especial
+especially
+especialness
+esperance
+Esperantic
+Esperantidist
+Esperantido
+Esperantism
+Esperantist
+Esperanto
+espial
+espichellite
+espier
+espinal
+espingole
+espinillo
+espino
+espionage
+esplanade
+esplees
+esponton
+espousal
+espouse
+espousement
+espouser
+Espriella
+espringal
+espundia
+espy
+esquamate
+esquamulose
+Esquiline
+esquire
+esquirearchy
+esquiredom
+esquireship
+ess
+essang
+essay
+essayer
+essayette
+essayical
+essayish
+essayism
+essayist
+essayistic
+essayistical
+essaylet
+essed
+Essedones
+Esselen
+Esselenian
+essence
+essency
+Essene
+Essenian
+Essenianism
+Essenic
+Essenical
+Essenis
+Essenism
+Essenize
+essentia
+essential
+essentialism
+essentialist
+essentiality
+essentialize
+essentially
+essentialness
+essenwood
+Essex
+essexite
+Essie
+essling
+essoin
+essoinee
+essoiner
+essoinment
+essonite
+essorant
+establish
+establishable
+established
+establisher
+establishment
+establishmentarian
+establishmentarianism
+establishmentism
+estacade
+estadal
+estadio
+estado
+estafette
+estafetted
+estamene
+estamp
+estampage
+estampede
+estampedero
+estate
+estatesman
+esteem
+esteemable
+esteemer
+Estella
+ester
+esterase
+esterellite
+esteriferous
+esterification
+esterify
+esterization
+esterize
+esterlin
+esterling
+estevin
+Esth
+Esthacyte
+esthematology
+Esther
+Estheria
+estherian
+Estheriidae
+esthesia
+esthesio
+esthesioblast
+esthesiogen
+esthesiogenic
+esthesiogeny
+esthesiography
+esthesiology
+esthesiometer
+esthesiometric
+esthesiometry
+esthesioneurosis
+esthesiophysiology
+esthesis
+esthetology
+esthetophore
+esthiomene
+estimable
+estimableness
+estimably
+estimate
+estimatingly
+estimation
+estimative
+estimator
+estipulate
+estivage
+estival
+estivate
+estivation
+estivator
+estmark
+estoc
+estoile
+Estonian
+estop
+estoppage
+estoppel
+Estotiland
+estovers
+estrade
+estradiol
+estradiot
+estragole
+estrange
+estrangedness
+estrangement
+estranger
+estrapade
+estray
+estre
+estreat
+estrepe
+estrepement
+estriate
+estriche
+estrin
+estriol
+estrogen
+estrogenic
+estrone
+estrous
+estrual
+estruate
+estruation
+estuarial
+estuarine
+estuary
+estufa
+estuous
+estus
+esugarization
+esurience
+esurient
+esuriently
+eta
+etaballi
+etacism
+etacist
+etalon
+Etamin
+etamine
+etch
+Etchareottine
+etcher
+Etchimin
+etching
+Eteoclus
+Eteocretes
+Eteocreton
+eternal
+eternalism
+eternalist
+eternalization
+eternalize
+eternally
+eternalness
+eternity
+eternization
+eternize
+etesian
+ethal
+ethaldehyde
+Ethan
+ethanal
+ethanamide
+ethane
+ethanedial
+ethanediol
+ethanedithiol
+ethanethial
+ethanethiol
+Ethanim
+ethanol
+ethanolamine
+ethanolysis
+ethanoyl
+Ethel
+ethel
+ethene
+Etheneldeli
+ethenic
+ethenoid
+ethenoidal
+ethenol
+ethenyl
+Etheostoma
+Etheostomidae
+Etheostominae
+etheostomoid
+ether
+etherate
+ethereal
+etherealism
+ethereality
+etherealization
+etherealize
+ethereally
+etherealness
+etherean
+ethered
+ethereous
+Etheria
+etheric
+etherification
+etheriform
+etherify
+Etheriidae
+etherin
+etherion
+etherism
+etherization
+etherize
+etherizer
+etherolate
+etherous
+ethic
+ethical
+ethicalism
+ethicality
+ethically
+ethicalness
+ethician
+ethicism
+ethicist
+ethicize
+ethicoaesthetic
+ethicophysical
+ethicopolitical
+ethicoreligious
+ethicosocial
+ethics
+ethid
+ethide
+ethidene
+ethine
+ethiodide
+ethionic
+Ethiop
+Ethiopia
+Ethiopian
+Ethiopic
+ethiops
+ethmofrontal
+ethmoid
+ethmoidal
+ethmoiditis
+ethmolachrymal
+ethmolith
+ethmomaxillary
+ethmonasal
+ethmopalatal
+ethmopalatine
+ethmophysal
+ethmopresphenoidal
+ethmosphenoid
+ethmosphenoidal
+ethmoturbinal
+ethmoturbinate
+ethmovomer
+ethmovomerine
+ethmyphitis
+ethnal
+ethnarch
+ethnarchy
+ethnic
+ethnical
+ethnically
+ethnicism
+ethnicist
+ethnicize
+ethnicon
+ethnize
+ethnobiological
+ethnobiology
+ethnobotanic
+ethnobotanical
+ethnobotanist
+ethnobotany
+ethnocentric
+ethnocentrism
+ethnocracy
+ethnodicy
+ethnoflora
+ethnogenic
+ethnogeny
+ethnogeographer
+ethnogeographic
+ethnogeographical
+ethnogeographically
+ethnogeography
+ethnographer
+ethnographic
+ethnographical
+ethnographically
+ethnographist
+ethnography
+ethnologer
+ethnologic
+ethnological
+ethnologically
+ethnologist
+ethnology
+ethnomaniac
+ethnopsychic
+ethnopsychological
+ethnopsychology
+ethnos
+ethnotechnics
+ethnotechnography
+ethnozoological
+ethnozoology
+ethography
+etholide
+ethologic
+ethological
+ethology
+ethonomic
+ethonomics
+ethopoeia
+ethos
+ethoxide
+ethoxycaffeine
+ethoxyl
+ethrog
+ethyl
+ethylamide
+ethylamine
+ethylate
+ethylation
+ethylene
+ethylenediamine
+ethylenic
+ethylenimine
+ethylenoid
+ethylhydrocupreine
+ethylic
+ethylidene
+ethylidyne
+ethylin
+ethylmorphine
+ethylsulphuric
+ethyne
+ethynyl
+etiogenic
+etiolate
+etiolation
+etiolin
+etiolize
+etiological
+etiologically
+etiologist
+etiologue
+etiology
+etiophyllin
+etioporphyrin
+etiotropic
+etiotropically
+etiquette
+etiquettical
+etna
+Etnean
+Etonian
+Etrurian
+Etruscan
+Etruscologist
+Etruscology
+Etta
+Ettarre
+ettle
+etua
+etude
+etui
+etym
+etymic
+etymography
+etymologer
+etymologic
+etymological
+etymologically
+etymologicon
+etymologist
+etymologization
+etymologize
+etymology
+etymon
+etymonic
+etypic
+etypical
+etypically
+eu
+Euahlayi
+euangiotic
+Euascomycetes
+euaster
+Eubacteriales
+eubacterium
+Eubasidii
+Euboean
+Euboic
+Eubranchipus
+eucaine
+eucairite
+eucalypt
+eucalypteol
+eucalyptian
+eucalyptic
+eucalyptography
+eucalyptol
+eucalyptole
+Eucalyptus
+eucalyptus
+Eucarida
+eucatropine
+eucephalous
+Eucharis
+Eucharist
+eucharistial
+eucharistic
+eucharistical
+Eucharistically
+eucharistically
+eucharistize
+Eucharitidae
+Euchite
+Euchlaena
+euchlorhydria
+euchloric
+euchlorine
+Euchlorophyceae
+euchological
+euchologion
+euchology
+Euchorda
+euchre
+euchred
+euchroic
+euchroite
+euchromatic
+euchromatin
+euchrome
+euchromosome
+euchrone
+Eucirripedia
+euclase
+Euclea
+Eucleidae
+Euclid
+Euclidean
+Euclideanism
+Eucnemidae
+eucolite
+Eucommia
+Eucommiaceae
+eucone
+euconic
+Euconjugatae
+Eucopepoda
+Eucosia
+eucosmid
+Eucosmidae
+eucrasia
+eucrasite
+eucrasy
+eucrite
+Eucryphia
+Eucryphiaceae
+eucryphiaceous
+eucryptite
+eucrystalline
+euctical
+eucyclic
+eudaemon
+eudaemonia
+eudaemonic
+eudaemonical
+eudaemonics
+eudaemonism
+eudaemonist
+eudaemonistic
+eudaemonistical
+eudaemonistically
+eudaemonize
+eudaemony
+eudaimonia
+eudaimonism
+eudaimonist
+Eudemian
+Eudendrium
+Eudeve
+eudiagnostic
+eudialyte
+eudiaphoresis
+eudidymite
+eudiometer
+eudiometric
+eudiometrical
+eudiometrically
+eudiometry
+eudipleural
+Eudist
+Eudora
+Eudorina
+Eudoxian
+Eudromias
+Eudyptes
+Euergetes
+euge
+Eugene
+eugenesic
+eugenesis
+eugenetic
+Eugenia
+eugenic
+eugenical
+eugenically
+eugenicist
+eugenics
+Eugenie
+eugenism
+eugenist
+eugenol
+eugenolate
+eugeny
+Euglandina
+Euglena
+Euglenaceae
+Euglenales
+Euglenida
+Euglenidae
+Euglenineae
+euglenoid
+Euglenoidina
+euglobulin
+eugranitic
+Eugregarinida
+Eugubine
+Eugubium
+euharmonic
+euhedral
+euhemerism
+euhemerist
+euhemeristic
+euhemeristically
+euhemerize
+euhyostylic
+euhyostyly
+euktolite
+eulachon
+Eulalia
+eulalia
+eulamellibranch
+Eulamellibranchia
+Eulamellibranchiata
+Eulima
+Eulimidae
+eulogia
+eulogic
+eulogical
+eulogically
+eulogious
+eulogism
+eulogist
+eulogistic
+eulogistical
+eulogistically
+eulogium
+eulogization
+eulogize
+eulogizer
+eulogy
+eulysite
+eulytine
+eulytite
+Eumenes
+eumenid
+Eumenidae
+Eumenidean
+Eumenides
+eumenorrhea
+eumerism
+eumeristic
+eumerogenesis
+eumerogenetic
+eumeromorph
+eumeromorphic
+eumitosis
+eumitotic
+eumoiriety
+eumoirous
+Eumolpides
+Eumolpus
+eumorphous
+eumycete
+Eumycetes
+eumycetic
+Eunectes
+Eunice
+eunicid
+Eunicidae
+Eunomia
+Eunomian
+Eunomianism
+eunomy
+eunuch
+eunuchal
+eunuchism
+eunuchize
+eunuchoid
+eunuchoidism
+eunuchry
+euomphalid
+Euomphalus
+euonym
+euonymin
+euonymous
+Euonymus
+euonymy
+Euornithes
+euornithic
+Euorthoptera
+euosmite
+euouae
+eupad
+Eupanorthidae
+Eupanorthus
+eupathy
+eupatoriaceous
+eupatorin
+Eupatorium
+eupatory
+eupatrid
+eupatridae
+eupepsia
+eupepsy
+eupeptic
+eupepticism
+eupepticity
+Euphausia
+Euphausiacea
+euphausiid
+Euphausiidae
+Euphemia
+euphemian
+euphemious
+euphemiously
+euphemism
+euphemist
+euphemistic
+euphemistical
+euphemistically
+euphemize
+euphemizer
+euphemous
+euphemy
+euphon
+euphone
+euphonetic
+euphonetics
+euphonia
+euphonic
+euphonical
+euphonically
+euphonicalness
+euphonious
+euphoniously
+euphoniousness
+euphonism
+euphonium
+euphonize
+euphonon
+euphonous
+euphony
+euphonym
+Euphorbia
+Euphorbiaceae
+euphorbiaceous
+euphorbium
+euphoria
+euphoric
+euphory
+Euphrasia
+euphrasy
+Euphratean
+euphroe
+Euphrosyne
+Euphues
+euphuism
+euphuist
+euphuistic
+euphuistical
+euphuistically
+euphuize
+Euphyllopoda
+eupione
+eupittonic
+euplastic
+Euplectella
+Euplexoptera
+Euplocomi
+Euploeinae
+euploid
+euploidy
+eupnea
+Eupolidean
+Eupolyzoa
+eupolyzoan
+Eupomatia
+Eupomatiaceae
+eupractic
+eupraxia
+Euprepia
+Euproctis
+eupsychics
+Euptelea
+Eupterotidae
+eupyrchroite
+eupyrene
+eupyrion
+Eurafric
+Eurafrican
+Euraquilo
+Eurasian
+Eurasianism
+Eurasiatic
+eureka
+eurhodine
+eurhodol
+Eurindic
+Euripidean
+euripus
+eurite
+Euroaquilo
+eurobin
+Euroclydon
+Europa
+Europasian
+European
+Europeanism
+Europeanization
+Europeanize
+Europeanly
+Europeward
+europium
+Europocentric
+Eurus
+Euryalae
+Euryale
+Euryaleae
+euryalean
+Euryalida
+euryalidan
+Euryalus
+eurybathic
+eurybenthic
+eurycephalic
+eurycephalous
+Eurycerotidae
+Euryclea
+Eurydice
+Eurygaea
+Eurygaean
+eurygnathic
+eurygnathism
+eurygnathous
+euryhaline
+Eurylaimi
+Eurylaimidae
+eurylaimoid
+Eurylaimus
+Eurymus
+euryon
+Eurypelma
+Eurypharyngidae
+Eurypharynx
+euryprognathous
+euryprosopic
+eurypterid
+Eurypterida
+eurypteroid
+Eurypteroidea
+Eurypterus
+Eurypyga
+Eurypygae
+Eurypygidae
+eurypylous
+euryscope
+Eurystheus
+eurystomatous
+eurythermal
+eurythermic
+eurythmic
+eurythmical
+eurythmics
+eurythmy
+eurytomid
+Eurytomidae
+Eurytus
+euryzygous
+Euscaro
+Eusebian
+Euselachii
+Euskaldun
+Euskara
+Euskarian
+Euskaric
+Euskera
+eusol
+Euspongia
+eusporangiate
+Eustace
+Eustachian
+eustachium
+Eustathian
+eustatic
+Eusthenopteron
+eustomatous
+eustyle
+Eusuchia
+eusuchian
+eusynchite
+Eutaenia
+eutannin
+eutaxic
+eutaxite
+eutaxitic
+eutaxy
+eutechnic
+eutechnics
+eutectic
+eutectoid
+Euterpe
+Euterpean
+eutexia
+Euthamia
+euthanasia
+euthanasy
+euthenics
+euthenist
+Eutheria
+eutherian
+euthermic
+Euthycomi
+euthycomic
+Euthyneura
+euthyneural
+euthyneurous
+euthytatic
+euthytropic
+eutomous
+eutony
+Eutopia
+Eutopian
+eutrophic
+eutrophy
+eutropic
+eutropous
+Eutychian
+Eutychianism
+euxanthate
+euxanthic
+euxanthone
+euxenite
+Euxine
+Eva
+evacuant
+evacuate
+evacuation
+evacuative
+evacuator
+evacue
+evacuee
+evadable
+evade
+evader
+evadingly
+Evadne
+evagation
+evaginable
+evaginate
+evagination
+evaluable
+evaluate
+evaluation
+evaluative
+evalue
+Evan
+evanesce
+evanescence
+evanescency
+evanescent
+evanescently
+evanescible
+evangel
+evangelary
+evangelian
+evangeliarium
+evangeliary
+evangelical
+evangelicalism
+evangelicality
+evangelically
+evangelicalness
+evangelican
+evangelicism
+evangelicity
+Evangeline
+evangelion
+evangelism
+evangelist
+evangelistarion
+evangelistarium
+evangelistary
+evangelistic
+evangelistically
+evangelistics
+evangelistship
+evangelium
+evangelization
+evangelize
+evangelizer
+Evaniidae
+evanish
+evanishment
+evanition
+evansite
+evaporability
+evaporable
+evaporate
+evaporation
+evaporative
+evaporativity
+evaporator
+evaporimeter
+evaporize
+evaporometer
+evase
+evasible
+evasion
+evasional
+evasive
+evasively
+evasiveness
+Eve
+eve
+Evea
+evechurr
+evection
+evectional
+Evehood
+evejar
+Eveless
+evelight
+Evelina
+Eveline
+evelong
+Evelyn
+even
+evenblush
+evendown
+evener
+evenfall
+evenforth
+evenglow
+evenhanded
+evenhandedly
+evenhandedness
+evening
+evenlight
+evenlong
+evenly
+evenmete
+evenminded
+evenmindedness
+evenness
+evens
+evensong
+event
+eventful
+eventfully
+eventfulness
+eventide
+eventime
+eventless
+eventlessly
+eventlessness
+eventognath
+Eventognathi
+eventognathous
+eventration
+eventual
+eventuality
+eventualize
+eventually
+eventuate
+eventuation
+evenwise
+evenworthy
+eveque
+ever
+Everard
+everbearer
+everbearing
+everbloomer
+everblooming
+everduring
+Everett
+everglade
+evergreen
+evergreenery
+evergreenite
+everlasting
+everlastingly
+everlastingness
+everliving
+evermore
+Evernia
+evernioid
+eversible
+eversion
+eversive
+eversporting
+evert
+evertebral
+Evertebrata
+evertebrate
+evertile
+evertor
+everwhich
+everwho
+every
+everybody
+everyday
+everydayness
+everyhow
+everylike
+Everyman
+everyman
+everyness
+everyone
+everything
+everywhen
+everywhence
+everywhere
+everywhereness
+everywheres
+everywhither
+evestar
+evetide
+eveweed
+evict
+eviction
+evictor
+evidence
+evidencive
+evident
+evidential
+evidentially
+evidentiary
+evidently
+evidentness
+evil
+evildoer
+evilhearted
+evilly
+evilmouthed
+evilness
+evilproof
+evilsayer
+evilspeaker
+evilspeaking
+evilwishing
+evince
+evincement
+evincible
+evincibly
+evincingly
+evincive
+evirate
+eviration
+eviscerate
+evisceration
+evisite
+evitable
+evitate
+evitation
+evittate
+evocable
+evocate
+evocation
+evocative
+evocatively
+evocator
+evocatory
+evocatrix
+Evodia
+evoe
+evoke
+evoker
+evolute
+evolution
+evolutional
+evolutionally
+evolutionary
+evolutionism
+evolutionist
+evolutionize
+evolutive
+evolutoid
+evolvable
+evolve
+evolvement
+evolvent
+evolver
+Evonymus
+evovae
+evulgate
+evulgation
+evulse
+evulsion
+evzone
+ewder
+Ewe
+ewe
+ewelease
+ewer
+ewerer
+ewery
+ewry
+ex
+exacerbate
+exacerbation
+exacerbescence
+exacerbescent
+exact
+exactable
+exacter
+exacting
+exactingly
+exactingness
+exaction
+exactitude
+exactive
+exactiveness
+exactly
+exactment
+exactness
+exactor
+exactress
+exadversum
+exaggerate
+exaggerated
+exaggeratedly
+exaggerating
+exaggeratingly
+exaggeration
+exaggerative
+exaggeratively
+exaggerativeness
+exaggerator
+exaggeratory
+exagitate
+exagitation
+exairesis
+exalate
+exalbuminose
+exalbuminous
+exallotriote
+exalt
+exaltation
+exaltative
+exalted
+exaltedly
+exaltedness
+exalter
+exam
+examen
+examinability
+examinable
+examinant
+examinate
+examination
+examinational
+examinationism
+examinationist
+examinative
+examinator
+examinatorial
+examinatory
+examine
+examinee
+examiner
+examinership
+examining
+examiningly
+example
+exampleless
+exampleship
+exanimate
+exanimation
+exanthem
+exanthema
+exanthematic
+exanthematous
+exappendiculate
+exarate
+exaration
+exarch
+exarchal
+exarchate
+exarchateship
+Exarchic
+Exarchist
+exarchist
+exarchy
+exareolate
+exarillate
+exaristate
+exarteritis
+exarticulate
+exarticulation
+exasperate
+exasperated
+exasperatedly
+exasperater
+exasperating
+exasperatingly
+exasperation
+exasperative
+exaspidean
+Exaudi
+exaugurate
+exauguration
+excalate
+excalation
+excalcarate
+excalceate
+excalceation
+Excalibur
+excamb
+excamber
+excambion
+excandescence
+excandescency
+excandescent
+excantation
+excarnate
+excarnation
+excathedral
+excaudate
+excavate
+excavation
+excavationist
+excavator
+excavatorial
+excavatory
+excave
+excecate
+excecation
+excedent
+exceed
+exceeder
+exceeding
+exceedingly
+exceedingness
+excel
+excelente
+excellence
+excellency
+excellent
+excellently
+excelsin
+Excelsior
+excelsior
+excelsitude
+excentral
+excentric
+excentrical
+excentricity
+except
+exceptant
+excepting
+exception
+exceptionable
+exceptionableness
+exceptionably
+exceptional
+exceptionality
+exceptionally
+exceptionalness
+exceptionary
+exceptionless
+exceptious
+exceptiousness
+exceptive
+exceptively
+exceptiveness
+exceptor
+excerebration
+excerpt
+excerptible
+excerption
+excerptive
+excerptor
+excess
+excessive
+excessively
+excessiveness
+excessman
+exchange
+exchangeability
+exchangeable
+exchangeably
+exchanger
+Exchangite
+Exchequer
+exchequer
+excide
+excipient
+exciple
+Excipulaceae
+excipular
+excipule
+excipuliform
+excipulum
+excircle
+excisable
+excise
+exciseman
+excisemanship
+excision
+excisor
+excitability
+excitable
+excitableness
+excitancy
+excitant
+excitation
+excitative
+excitator
+excitatory
+excite
+excited
+excitedly
+excitedness
+excitement
+exciter
+exciting
+excitingly
+excitive
+excitoglandular
+excitometabolic
+excitomotion
+excitomotor
+excitomotory
+excitomuscular
+excitonutrient
+excitor
+excitory
+excitosecretory
+excitovascular
+exclaim
+exclaimer
+exclaiming
+exclaimingly
+exclamation
+exclamational
+exclamative
+exclamatively
+exclamatorily
+exclamatory
+exclave
+exclosure
+excludable
+exclude
+excluder
+excluding
+excludingly
+exclusion
+exclusionary
+exclusioner
+exclusionism
+exclusionist
+exclusive
+exclusively
+exclusiveness
+exclusivism
+exclusivist
+exclusivity
+exclusory
+Excoecaria
+excogitable
+excogitate
+excogitation
+excogitative
+excogitator
+excommunicable
+excommunicant
+excommunicate
+excommunication
+excommunicative
+excommunicator
+excommunicatory
+exconjugant
+excoriable
+excoriate
+excoriation
+excoriator
+excorticate
+excortication
+excrement
+excremental
+excrementary
+excrementitial
+excrementitious
+excrementitiously
+excrementitiousness
+excrementive
+excresce
+excrescence
+excrescency
+excrescent
+excrescential
+excreta
+excretal
+excrete
+excreter
+excretes
+excretion
+excretionary
+excretitious
+excretive
+excretory
+excriminate
+excruciable
+excruciate
+excruciating
+excruciatingly
+excruciation
+excruciator
+excubant
+excudate
+exculpable
+exculpate
+exculpation
+exculpative
+exculpatorily
+exculpatory
+excurrent
+excurse
+excursion
+excursional
+excursionary
+excursioner
+excursionism
+excursionist
+excursionize
+excursive
+excursively
+excursiveness
+excursory
+excursus
+excurvate
+excurvated
+excurvation
+excurvature
+excurved
+excusability
+excusable
+excusableness
+excusably
+excusal
+excusative
+excusator
+excusatory
+excuse
+excuseful
+excusefully
+excuseless
+excuser
+excusing
+excusingly
+excusive
+excuss
+excyst
+excystation
+excysted
+excystment
+exdelicto
+exdie
+exeat
+execrable
+execrableness
+execrably
+execrate
+execration
+execrative
+execratively
+execrator
+execratory
+executable
+executancy
+executant
+execute
+executed
+executer
+execution
+executional
+executioneering
+executioner
+executioneress
+executionist
+executive
+executively
+executiveness
+executiveship
+executor
+executorial
+executorship
+executory
+executress
+executrices
+executrix
+executrixship
+executry
+exedent
+exedra
+exegeses
+exegesis
+exegesist
+exegete
+exegetic
+exegetical
+exegetically
+exegetics
+exegetist
+exemplar
+exemplaric
+exemplarily
+exemplariness
+exemplarism
+exemplarity
+exemplary
+exemplifiable
+exemplification
+exemplificational
+exemplificative
+exemplificator
+exemplifier
+exemplify
+exempt
+exemptible
+exemptile
+exemption
+exemptionist
+exemptive
+exencephalia
+exencephalic
+exencephalous
+exencephalus
+exendospermic
+exendospermous
+exenterate
+exenteration
+exequatur
+exequial
+exequy
+exercisable
+exercise
+exerciser
+exercitant
+exercitation
+exercitor
+exercitorial
+exercitorian
+exeresis
+exergual
+exergue
+exert
+exertion
+exertionless
+exertive
+exes
+exeunt
+exfiguration
+exfigure
+exfiltration
+exflagellate
+exflagellation
+exflect
+exfodiate
+exfodiation
+exfoliate
+exfoliation
+exfoliative
+exfoliatory
+exgorgitation
+exhalable
+exhalant
+exhalation
+exhalatory
+exhale
+exhaust
+exhausted
+exhaustedly
+exhaustedness
+exhauster
+exhaustibility
+exhaustible
+exhausting
+exhaustingly
+exhaustion
+exhaustive
+exhaustively
+exhaustiveness
+exhaustless
+exhaustlessly
+exhaustlessness
+exheredate
+exheredation
+exhibit
+exhibitable
+exhibitant
+exhibiter
+exhibition
+exhibitional
+exhibitioner
+exhibitionism
+exhibitionist
+exhibitionistic
+exhibitionize
+exhibitive
+exhibitively
+exhibitor
+exhibitorial
+exhibitorship
+exhibitory
+exhilarant
+exhilarate
+exhilarating
+exhilaratingly
+exhilaration
+exhilarative
+exhilarator
+exhilaratory
+exhort
+exhortation
+exhortative
+exhortatively
+exhortator
+exhortatory
+exhorter
+exhortingly
+exhumate
+exhumation
+exhumator
+exhumatory
+exhume
+exhumer
+exigence
+exigency
+exigent
+exigenter
+exigently
+exigible
+exiguity
+exiguous
+exiguously
+exiguousness
+exilarch
+exilarchate
+exile
+exiledom
+exilement
+exiler
+exilian
+exilic
+exility
+eximious
+eximiously
+eximiousness
+exinanite
+exinanition
+exindusiate
+exinguinal
+exist
+existability
+existence
+existent
+existential
+existentialism
+existentialist
+existentialistic
+existentialize
+existentially
+existently
+exister
+existibility
+existible
+existlessness
+exit
+exite
+exition
+exitus
+exlex
+exmeridian
+Exmoor
+exoarteritis
+Exoascaceae
+exoascaceous
+Exoascales
+Exoascus
+Exobasidiaceae
+Exobasidiales
+Exobasidium
+exocannibalism
+exocardia
+exocardiac
+exocardial
+exocarp
+exocataphoria
+exoccipital
+exocentric
+Exochorda
+exochorion
+exoclinal
+exocline
+exocoelar
+exocoele
+exocoelic
+exocoelom
+Exocoetidae
+Exocoetus
+exocolitis
+exocone
+exocrine
+exoculate
+exoculation
+exocyclic
+Exocyclica
+Exocycloida
+exode
+exoderm
+exodermis
+exodic
+exodist
+exodontia
+exodontist
+exodos
+exodromic
+exodromy
+exodus
+exody
+exoenzyme
+exoenzymic
+exoerythrocytic
+exogamic
+exogamous
+exogamy
+exogastric
+exogastrically
+exogastritis
+exogen
+Exogenae
+exogenetic
+exogenic
+exogenous
+exogenously
+exogeny
+exognathion
+exognathite
+Exogonium
+Exogyra
+exolemma
+exometritis
+exomion
+exomis
+exomologesis
+exomorphic
+exomorphism
+exomphalos
+exomphalous
+exomphalus
+Exon
+exon
+exonarthex
+exoner
+exonerate
+exoneration
+exonerative
+exonerator
+exoneural
+Exonian
+exonship
+exopathic
+exoperidium
+exophagous
+exophagy
+exophasia
+exophasic
+exophoria
+exophoric
+exophthalmic
+exophthalmos
+exoplasm
+exopod
+exopodite
+exopoditic
+Exopterygota
+exopterygotic
+exopterygotism
+exopterygotous
+exorability
+exorable
+exorableness
+exorbital
+exorbitance
+exorbitancy
+exorbitant
+exorbitantly
+exorbitate
+exorbitation
+exorcisation
+exorcise
+exorcisement
+exorciser
+exorcism
+exorcismal
+exorcisory
+exorcist
+exorcistic
+exorcistical
+exordia
+exordial
+exordium
+exordize
+exorganic
+exorhason
+exormia
+exornation
+exosepsis
+exoskeletal
+exoskeleton
+exosmic
+exosmose
+exosmosis
+exosmotic
+exosperm
+exosporal
+exospore
+exosporium
+exosporous
+Exostema
+exostome
+exostosed
+exostosis
+exostotic
+exostra
+exostracism
+exostracize
+exoteric
+exoterical
+exoterically
+exotericism
+exoterics
+exotheca
+exothecal
+exothecate
+exothecium
+exothermal
+exothermic
+exothermous
+exotic
+exotically
+exoticalness
+exoticism
+exoticist
+exoticity
+exoticness
+exotism
+exotospore
+exotoxic
+exotoxin
+exotropia
+exotropic
+exotropism
+expalpate
+expand
+expanded
+expandedly
+expandedness
+expander
+expanding
+expandingly
+expanse
+expansibility
+expansible
+expansibleness
+expansibly
+expansile
+expansion
+expansional
+expansionary
+expansionism
+expansionist
+expansive
+expansively
+expansiveness
+expansivity
+expansometer
+expansure
+expatiate
+expatiater
+expatiatingly
+expatiation
+expatiative
+expatiator
+expatiatory
+expatriate
+expatriation
+expect
+expectable
+expectance
+expectancy
+expectant
+expectantly
+expectation
+expectative
+expectedly
+expecter
+expectingly
+expective
+expectorant
+expectorate
+expectoration
+expectorative
+expectorator
+expede
+expediate
+expedience
+expediency
+expedient
+expediential
+expedientially
+expedientist
+expediently
+expeditate
+expeditation
+expedite
+expedited
+expeditely
+expediteness
+expediter
+expedition
+expeditionary
+expeditionist
+expeditious
+expeditiously
+expeditiousness
+expel
+expellable
+expellant
+expellee
+expeller
+expend
+expendability
+expendable
+expender
+expendible
+expenditor
+expenditrix
+expenditure
+expense
+expenseful
+expensefully
+expensefulness
+expenseless
+expensilation
+expensive
+expensively
+expensiveness
+expenthesis
+expergefacient
+expergefaction
+experience
+experienceable
+experienced
+experienceless
+experiencer
+experiencible
+experient
+experiential
+experientialism
+experientialist
+experientially
+experiment
+experimental
+experimentalism
+experimentalist
+experimentalize
+experimentally
+experimentarian
+experimentation
+experimentative
+experimentator
+experimented
+experimentee
+experimenter
+experimentist
+experimentize
+experimently
+expert
+expertism
+expertize
+expertly
+expertness
+expertship
+expiable
+expiate
+expiation
+expiational
+expiatist
+expiative
+expiator
+expiatoriness
+expiatory
+expilate
+expilation
+expilator
+expirable
+expirant
+expirate
+expiration
+expirator
+expiratory
+expire
+expiree
+expirer
+expiring
+expiringly
+expiry
+expiscate
+expiscation
+expiscator
+expiscatory
+explain
+explainable
+explainer
+explaining
+explainingly
+explanate
+explanation
+explanative
+explanatively
+explanator
+explanatorily
+explanatoriness
+explanatory
+explant
+explantation
+explement
+explemental
+expletive
+expletively
+expletiveness
+expletory
+explicable
+explicableness
+explicate
+explication
+explicative
+explicatively
+explicator
+explicatory
+explicit
+explicitly
+explicitness
+explodable
+explode
+exploded
+explodent
+exploder
+exploit
+exploitable
+exploitage
+exploitation
+exploitationist
+exploitative
+exploiter
+exploitive
+exploiture
+explorable
+exploration
+explorational
+explorative
+exploratively
+explorativeness
+explorator
+exploratory
+explore
+explorement
+explorer
+exploring
+exploringly
+explosibility
+explosible
+explosion
+explosionist
+explosive
+explosively
+explosiveness
+expone
+exponence
+exponency
+exponent
+exponential
+exponentially
+exponentiation
+exponible
+export
+exportability
+exportable
+exportation
+exporter
+exposal
+expose
+exposed
+exposedness
+exposer
+exposit
+exposition
+expositional
+expositionary
+expositive
+expositively
+expositor
+expositorial
+expositorially
+expositorily
+expositoriness
+expository
+expositress
+expostulate
+expostulating
+expostulatingly
+expostulation
+expostulative
+expostulatively
+expostulator
+expostulatory
+exposure
+expound
+expoundable
+expounder
+express
+expressable
+expressage
+expressed
+expresser
+expressibility
+expressible
+expressibly
+expression
+expressionable
+expressional
+expressionful
+expressionism
+expressionist
+expressionistic
+expressionless
+expressionlessly
+expressionlessness
+expressive
+expressively
+expressiveness
+expressivism
+expressivity
+expressless
+expressly
+expressman
+expressness
+expressway
+exprimable
+exprobrate
+exprobration
+exprobratory
+expromission
+expromissor
+expropriable
+expropriate
+expropriation
+expropriator
+expugn
+expugnable
+expuition
+expulsatory
+expulse
+expulser
+expulsion
+expulsionist
+expulsive
+expulsory
+expunction
+expunge
+expungeable
+expungement
+expunger
+expurgate
+expurgation
+expurgative
+expurgator
+expurgatorial
+expurgatory
+expurge
+exquisite
+exquisitely
+exquisiteness
+exquisitism
+exquisitively
+exradio
+exradius
+exrupeal
+exsanguinate
+exsanguination
+exsanguine
+exsanguineous
+exsanguinity
+exsanguinous
+exsanguious
+exscind
+exscissor
+exscriptural
+exsculptate
+exscutellate
+exsect
+exsectile
+exsection
+exsector
+exsequatur
+exsert
+exserted
+exsertile
+exsertion
+exship
+exsibilate
+exsibilation
+exsiccant
+exsiccatae
+exsiccate
+exsiccation
+exsiccative
+exsiccator
+exsiliency
+exsomatic
+exspuition
+exsputory
+exstipulate
+exstrophy
+exsuccous
+exsuction
+exsufflate
+exsufflation
+exsufflicate
+exsurge
+exsurgent
+extant
+extemporal
+extemporally
+extemporalness
+extemporaneity
+extemporaneous
+extemporaneously
+extemporaneousness
+extemporarily
+extemporariness
+extemporary
+extempore
+extemporization
+extemporize
+extemporizer
+extend
+extended
+extendedly
+extendedness
+extender
+extendibility
+extendible
+extending
+extense
+extensibility
+extensible
+extensibleness
+extensile
+extensimeter
+extension
+extensional
+extensionist
+extensity
+extensive
+extensively
+extensiveness
+extensometer
+extensor
+extensory
+extensum
+extent
+extenuate
+extenuating
+extenuatingly
+extenuation
+extenuative
+extenuator
+extenuatory
+exter
+exterior
+exteriorate
+exterioration
+exteriority
+exteriorization
+exteriorize
+exteriorly
+exteriorness
+exterminable
+exterminate
+extermination
+exterminative
+exterminator
+exterminatory
+exterminatress
+exterminatrix
+exterminist
+extern
+external
+externalism
+externalist
+externalistic
+externality
+externalization
+externalize
+externally
+externals
+externate
+externation
+externe
+externity
+externization
+externize
+externomedian
+externum
+exteroceptist
+exteroceptive
+exteroceptor
+exterraneous
+exterrestrial
+exterritorial
+exterritoriality
+exterritorialize
+exterritorially
+extima
+extinct
+extinction
+extinctionist
+extinctive
+extinctor
+extine
+extinguish
+extinguishable
+extinguishant
+extinguished
+extinguisher
+extinguishment
+extipulate
+extirpate
+extirpation
+extirpationist
+extirpative
+extirpator
+extirpatory
+extispex
+extispicious
+extispicy
+extogenous
+extol
+extoll
+extollation
+extoller
+extollingly
+extollment
+extolment
+extoolitic
+extorsive
+extorsively
+extort
+extorter
+extortion
+extortionary
+extortionate
+extortionately
+extortioner
+extortionist
+extortive
+extra
+extrabold
+extrabranchial
+extrabronchial
+extrabuccal
+extrabulbar
+extrabureau
+extraburghal
+extracalendar
+extracalicular
+extracanonical
+extracapsular
+extracardial
+extracarpal
+extracathedral
+extracellular
+extracellularly
+extracerebral
+extracivic
+extracivically
+extraclassroom
+extraclaustral
+extracloacal
+extracollegiate
+extracolumella
+extraconscious
+extraconstellated
+extraconstitutional
+extracorporeal
+extracorpuscular
+extracosmic
+extracosmical
+extracostal
+extracranial
+extract
+extractable
+extractant
+extracted
+extractible
+extractiform
+extraction
+extractive
+extractor
+extractorship
+extracultural
+extracurial
+extracurricular
+extracurriculum
+extracutaneous
+extracystic
+extradecretal
+extradialectal
+extraditable
+extradite
+extradition
+extradomestic
+extrados
+extradosed
+extradotal
+extraduction
+extradural
+extraembryonic
+extraenteric
+extraepiphyseal
+extraequilibrium
+extraessential
+extraessentially
+extrafascicular
+extrafloral
+extrafocal
+extrafoliaceous
+extraforaneous
+extraformal
+extragalactic
+extragastric
+extrait
+extrajudicial
+extrajudicially
+extralateral
+extralite
+extrality
+extramarginal
+extramatrical
+extramedullary
+extramental
+extrameridian
+extrameridional
+extrametaphysical
+extrametrical
+extrametropolitan
+extramodal
+extramolecular
+extramorainal
+extramorainic
+extramoral
+extramoralist
+extramundane
+extramural
+extramurally
+extramusical
+extranational
+extranatural
+extranean
+extraneity
+extraneous
+extraneously
+extraneousness
+extranidal
+extranormal
+extranuclear
+extraocular
+extraofficial
+extraoral
+extraorbital
+extraorbitally
+extraordinarily
+extraordinariness
+extraordinary
+extraorganismal
+extraovate
+extraovular
+extraparenchymal
+extraparental
+extraparietal
+extraparliamentary
+extraparochial
+extraparochially
+extrapatriarchal
+extrapelvic
+extraperineal
+extraperiodic
+extraperiosteal
+extraperitoneal
+extraphenomenal
+extraphysical
+extraphysiological
+extrapituitary
+extraplacental
+extraplanetary
+extrapleural
+extrapoetical
+extrapolar
+extrapolate
+extrapolation
+extrapolative
+extrapolator
+extrapopular
+extraprofessional
+extraprostatic
+extraprovincial
+extrapulmonary
+extrapyramidal
+extraquiz
+extrared
+extraregarding
+extraregular
+extraregularly
+extrarenal
+extraretinal
+extrarhythmical
+extrasacerdotal
+extrascholastic
+extraschool
+extrascientific
+extrascriptural
+extrascripturality
+extrasensible
+extrasensory
+extrasensuous
+extraserous
+extrasocial
+extrasolar
+extrasomatic
+extraspectral
+extraspherical
+extraspinal
+extrastapedial
+extrastate
+extrasterile
+extrastomachal
+extrasyllabic
+extrasyllogistic
+extrasyphilitic
+extrasystole
+extrasystolic
+extratabular
+extratarsal
+extratellurian
+extratelluric
+extratemporal
+extratension
+extratensive
+extraterrene
+extraterrestrial
+extraterritorial
+extraterritoriality
+extraterritorially
+extrathecal
+extratheistic
+extrathermodynamic
+extrathoracic
+extratorrid
+extratracheal
+extratribal
+extratropical
+extratubal
+extratympanic
+extrauterine
+extravagance
+extravagancy
+extravagant
+Extravagantes
+extravagantly
+extravagantness
+extravaganza
+extravagate
+extravaginal
+extravasate
+extravasation
+extravascular
+extraventricular
+extraversion
+extravert
+extravillar
+extraviolet
+extravisceral
+extrazodiacal
+extreme
+extremeless
+extremely
+extremeness
+extremism
+extremist
+extremistic
+extremital
+extremity
+extricable
+extricably
+extricate
+extricated
+extrication
+extrinsic
+extrinsical
+extrinsicality
+extrinsically
+extrinsicalness
+extrinsicate
+extrinsication
+extroitive
+extropical
+extrorsal
+extrorse
+extrorsely
+extrospect
+extrospection
+extrospective
+extroversion
+extroversive
+extrovert
+extrovertish
+extrude
+extruder
+extruding
+extrusile
+extrusion
+extrusive
+extrusory
+extubate
+extubation
+extumescence
+extund
+extusion
+exuberance
+exuberancy
+exuberant
+exuberantly
+exuberantness
+exuberate
+exuberation
+exudate
+exudation
+exudative
+exude
+exudence
+exulcerate
+exulceration
+exulcerative
+exulceratory
+exult
+exultance
+exultancy
+exultant
+exultantly
+exultation
+exultet
+exultingly
+exululate
+exumbral
+exumbrella
+exumbrellar
+exundance
+exundancy
+exundate
+exundation
+exuviability
+exuviable
+exuviae
+exuvial
+exuviate
+exuviation
+exzodiacal
+ey
+eyah
+eyalet
+eyas
+eye
+eyeball
+eyebalm
+eyebar
+eyebeam
+eyeberry
+eyeblink
+eyebolt
+eyebree
+eyebridled
+eyebright
+eyebrow
+eyecup
+eyed
+eyedness
+eyedot
+eyedrop
+eyeflap
+eyeful
+eyeglance
+eyeglass
+eyehole
+Eyeish
+eyelash
+eyeless
+eyelessness
+eyelet
+eyeleteer
+eyeletter
+eyelid
+eyelight
+eyelike
+eyeline
+eyemark
+eyen
+eyepiece
+eyepit
+eyepoint
+eyer
+eyereach
+eyeroot
+eyesalve
+eyeseed
+eyeservant
+eyeserver
+eyeservice
+eyeshade
+eyeshield
+eyeshot
+eyesight
+eyesome
+eyesore
+eyespot
+eyestalk
+eyestone
+eyestrain
+eyestring
+eyetooth
+eyewaiter
+eyewash
+eyewater
+eyewear
+eyewink
+eyewinker
+eyewitness
+eyewort
+eyey
+eying
+eyn
+eyne
+eyot
+eyoty
+eyra
+eyre
+eyrie
+eyrir
+ezba
+Ezekiel
+Ezra
+F
+f
+fa
+Faba
+Fabaceae
+fabaceous
+fabella
+fabes
+Fabian
+Fabianism
+Fabianist
+fabiform
+fable
+fabled
+fabledom
+fableist
+fableland
+fablemaker
+fablemonger
+fablemongering
+fabler
+fabliau
+fabling
+Fabraea
+fabric
+fabricant
+fabricate
+fabrication
+fabricative
+fabricator
+fabricatress
+Fabrikoid
+fabrikoid
+Fabronia
+Fabroniaceae
+fabular
+fabulist
+fabulosity
+fabulous
+fabulously
+fabulousness
+faburden
+facadal
+facade
+face
+faceable
+facebread
+facecloth
+faced
+faceless
+facellite
+facemaker
+facemaking
+faceman
+facemark
+facepiece
+faceplate
+facer
+facet
+facete
+faceted
+facetely
+faceteness
+facetiae
+facetiation
+facetious
+facetiously
+facetiousness
+facewise
+facework
+facia
+facial
+facially
+faciation
+faciend
+facient
+facies
+facile
+facilely
+facileness
+facilitate
+facilitation
+facilitative
+facilitator
+facility
+facing
+facingly
+facinorous
+facinorousness
+faciobrachial
+faciocervical
+faciolingual
+facioplegia
+facioscapulohumeral
+fack
+fackeltanz
+fackings
+fackins
+facks
+facsimile
+facsimilist
+facsimilize
+fact
+factable
+factabling
+factful
+Factice
+facticide
+faction
+factional
+factionalism
+factionary
+factioneer
+factionist
+factionistism
+factious
+factiously
+factiousness
+factish
+factitial
+factitious
+factitiously
+factitive
+factitively
+factitude
+factive
+factor
+factorability
+factorable
+factorage
+factordom
+factoress
+factorial
+factorially
+factorist
+factorization
+factorize
+factorship
+factory
+factoryship
+factotum
+factrix
+factual
+factuality
+factually
+factualness
+factum
+facture
+facty
+facula
+facular
+faculous
+facultate
+facultative
+facultatively
+facultied
+facultize
+faculty
+facund
+facy
+fad
+fadable
+faddiness
+faddish
+faddishness
+faddism
+faddist
+faddle
+faddy
+fade
+fadeaway
+faded
+fadedly
+fadedness
+fadeless
+faden
+fader
+fadge
+fading
+fadingly
+fadingness
+fadmonger
+fadmongering
+fadmongery
+fadridden
+fady
+fae
+faerie
+Faeroe
+faery
+faeryland
+faff
+faffle
+faffy
+fag
+Fagaceae
+fagaceous
+fagald
+Fagales
+Fagara
+fage
+Fagelia
+fager
+fagger
+faggery
+fagging
+faggingly
+fagine
+fagopyrism
+fagopyrismus
+Fagopyrum
+fagot
+fagoter
+fagoting
+fagottino
+fagottist
+fagoty
+Fagus
+faham
+fahlerz
+fahlore
+fahlunite
+Fahrenheit
+faience
+fail
+failing
+failingly
+failingness
+faille
+failure
+fain
+fainaigue
+fainaiguer
+faineance
+faineancy
+faineant
+faineantism
+fainly
+fainness
+fains
+faint
+fainter
+faintful
+faintheart
+fainthearted
+faintheartedly
+faintheartedness
+fainting
+faintingly
+faintish
+faintishness
+faintly
+faintness
+faints
+fainty
+faipule
+fair
+fairer
+fairfieldite
+fairgoer
+fairgoing
+fairgrass
+fairground
+fairily
+fairing
+fairish
+fairishly
+fairkeeper
+fairlike
+fairling
+fairly
+fairm
+fairness
+fairstead
+fairtime
+fairwater
+fairway
+fairy
+fairydom
+fairyfolk
+fairyhood
+fairyish
+fairyism
+fairyland
+fairylike
+fairyologist
+fairyology
+fairyship
+faith
+faithbreach
+faithbreaker
+faithful
+faithfully
+faithfulness
+faithless
+faithlessly
+faithlessness
+faithwise
+faithworthiness
+faithworthy
+faitour
+fake
+fakement
+faker
+fakery
+fakiness
+fakir
+fakirism
+Fakofo
+faky
+falanaka
+Falange
+Falangism
+Falangist
+Falasha
+falbala
+falcade
+Falcata
+falcate
+falcated
+falcation
+falcer
+falces
+falchion
+falcial
+Falcidian
+falciform
+Falcinellus
+falciparum
+Falco
+falcon
+falconbill
+falconelle
+falconer
+Falcones
+falconet
+Falconidae
+Falconiformes
+Falconinae
+falconine
+falconlike
+falconoid
+falconry
+falcopern
+falcula
+falcular
+falculate
+Falcunculus
+faldage
+falderal
+faldfee
+faldstool
+Falerian
+Falernian
+Falerno
+Faliscan
+Falisci
+Falkland
+fall
+fallace
+fallacious
+fallaciously
+fallaciousness
+fallacy
+fallage
+fallation
+fallaway
+fallback
+fallectomy
+fallen
+fallenness
+faller
+fallfish
+fallibility
+fallible
+fallibleness
+fallibly
+falling
+Fallopian
+fallostomy
+fallotomy
+fallow
+fallowist
+fallowness
+falltime
+fallway
+fally
+falsary
+false
+falsehearted
+falseheartedly
+falseheartedness
+falsehood
+falsely
+falsen
+falseness
+falser
+falsettist
+falsetto
+falsework
+falsidical
+falsie
+falsifiable
+falsificate
+falsification
+falsificator
+falsifier
+falsify
+falsism
+Falstaffian
+faltboat
+faltche
+falter
+falterer
+faltering
+falteringly
+Falunian
+Faluns
+falutin
+falx
+fam
+Fama
+famatinite
+famble
+fame
+fameflower
+fameful
+fameless
+famelessly
+famelessness
+Fameuse
+fameworthy
+familia
+familial
+familiar
+familiarism
+familiarity
+familiarization
+familiarize
+familiarizer
+familiarizingly
+familiarly
+familiarness
+familism
+familist
+familistery
+familistic
+familistical
+family
+familyish
+famine
+famish
+famishment
+famous
+famously
+famousness
+famulary
+famulus
+Fan
+fan
+fana
+fanal
+fanam
+fanatic
+fanatical
+fanatically
+fanaticalness
+fanaticism
+fanaticize
+fanback
+fanbearer
+fanciable
+fancical
+fancied
+fancier
+fanciful
+fancifully
+fancifulness
+fancify
+fanciless
+fancy
+fancymonger
+fancysick
+fancywork
+fand
+fandangle
+fandango
+fandom
+fanega
+fanegada
+fanfarade
+Fanfare
+fanfare
+fanfaron
+fanfaronade
+fanfaronading
+fanflower
+fanfoot
+fang
+fanged
+fangle
+fangled
+fanglement
+fangless
+fanglet
+fanglomerate
+fangot
+fangy
+fanhouse
+faniente
+fanion
+fanioned
+fanlight
+fanlike
+fanmaker
+fanmaking
+fanman
+fannel
+fanner
+Fannia
+fannier
+fanning
+Fanny
+fanon
+fant
+fantail
+fantasia
+fantasie
+fantasied
+fantasist
+fantasque
+fantassin
+fantast
+fantastic
+fantastical
+fantasticality
+fantastically
+fantasticalness
+fantasticate
+fantastication
+fantasticism
+fantasticly
+fantasticness
+fantastico
+fantastry
+fantasy
+Fanti
+fantigue
+fantoccini
+fantocine
+fantod
+fantoddish
+Fanwe
+fanweed
+fanwise
+fanwork
+fanwort
+fanwright
+Fany
+faon
+Fapesmo
+far
+farad
+faradaic
+faraday
+faradic
+faradism
+faradization
+faradize
+faradizer
+faradmeter
+faradocontractility
+faradomuscular
+faradonervous
+faradopalpation
+farandole
+farasula
+faraway
+farawayness
+farce
+farcelike
+farcer
+farcetta
+farcial
+farcialize
+farcical
+farcicality
+farcically
+farcicalness
+farcied
+farcify
+farcing
+farcinoma
+farcist
+farctate
+farcy
+farde
+fardel
+fardelet
+fardh
+fardo
+fare
+farer
+farewell
+farfara
+farfel
+farfetched
+farfetchedness
+Farfugium
+fargoing
+fargood
+farina
+farinaceous
+farinaceously
+faring
+farinometer
+farinose
+farinosely
+farinulent
+Farish
+farish
+farkleberry
+farl
+farleu
+farm
+farmable
+farmage
+farmer
+farmeress
+farmerette
+farmerlike
+farmership
+farmery
+farmhold
+farmhouse
+farmhousey
+farming
+farmost
+farmplace
+farmstead
+farmsteading
+farmtown
+farmy
+farmyard
+farmyardy
+farnesol
+farness
+Farnovian
+faro
+Faroeish
+Faroese
+farolito
+Farouk
+farraginous
+farrago
+farrand
+farrandly
+farrantly
+farreate
+farreation
+farrier
+farrierlike
+farriery
+farrisite
+farrow
+farruca
+farsalah
+farse
+farseeing
+farseeingness
+farseer
+farset
+Farsi
+farsighted
+farsightedly
+farsightedness
+farther
+farthermost
+farthest
+farthing
+farthingale
+farthingless
+farweltered
+fasces
+fascet
+fascia
+fascial
+fasciate
+fasciated
+fasciately
+fasciation
+fascicle
+fascicled
+fascicular
+fascicularly
+fasciculate
+fasciculated
+fasciculately
+fasciculation
+fascicule
+fasciculus
+fascinate
+fascinated
+fascinatedly
+fascinating
+fascinatingly
+fascination
+fascinative
+fascinator
+fascinatress
+fascine
+fascinery
+Fascio
+fasciodesis
+fasciola
+fasciolar
+Fasciolaria
+Fasciolariidae
+fasciole
+fasciolet
+fascioliasis
+Fasciolidae
+fascioloid
+fascioplasty
+fasciotomy
+fascis
+fascism
+fascist
+Fascista
+Fascisti
+fascisticization
+fascisticize
+fascistization
+fascistize
+fash
+fasher
+fashery
+fashion
+fashionability
+fashionable
+fashionableness
+fashionably
+fashioned
+fashioner
+fashionist
+fashionize
+fashionless
+fashionmonger
+fashionmonging
+fashious
+fashiousness
+fasibitikite
+fasinite
+fass
+fassalite
+fast
+fasten
+fastener
+fastening
+faster
+fastgoing
+fasthold
+fastidiosity
+fastidious
+fastidiously
+fastidiousness
+fastidium
+fastigate
+fastigated
+fastigiate
+fastigium
+fasting
+fastingly
+fastish
+fastland
+fastness
+fastuous
+fastuously
+fastuousness
+fastus
+fat
+Fatagaga
+fatal
+fatalism
+fatalist
+fatalistic
+fatalistically
+fatality
+fatalize
+fatally
+fatalness
+fatbird
+fatbrained
+fate
+fated
+fateful
+fatefully
+fatefulness
+fatelike
+fathead
+fatheaded
+fatheadedness
+fathearted
+father
+fathercraft
+fathered
+fatherhood
+fatherland
+fatherlandish
+fatherless
+fatherlessness
+fatherlike
+fatherliness
+fatherling
+fatherly
+fathership
+fathmur
+fathom
+fathomable
+fathomage
+fathomer
+Fathometer
+fathomless
+fathomlessly
+fathomlessness
+fatidic
+fatidical
+fatidically
+fatiferous
+fatigability
+fatigable
+fatigableness
+fatigue
+fatigueless
+fatiguesome
+fatiguing
+fatiguingly
+fatiha
+fatil
+fatiloquent
+Fatima
+Fatimid
+fatiscence
+fatiscent
+fatless
+fatling
+fatly
+fatness
+fatsia
+fattable
+fatten
+fattenable
+fattener
+fatter
+fattily
+fattiness
+fattish
+fattishness
+fattrels
+fatty
+fatuism
+fatuitous
+fatuitousness
+fatuity
+fatuoid
+fatuous
+fatuously
+fatuousness
+fatwood
+faucal
+faucalize
+fauces
+faucet
+fauchard
+faucial
+faucitis
+faucre
+faugh
+faujasite
+fauld
+Faulkland
+fault
+faultage
+faulter
+faultfind
+faultfinder
+faultfinding
+faultful
+faultfully
+faultily
+faultiness
+faulting
+faultless
+faultlessly
+faultlessness
+faultsman
+faulty
+faun
+Fauna
+faunal
+faunally
+faunated
+faunish
+faunist
+faunistic
+faunistical
+faunistically
+faunlike
+faunological
+faunology
+faunule
+fause
+faussebraie
+faussebrayed
+faust
+Faustian
+fauterer
+fautor
+fautorship
+fauve
+Fauvism
+Fauvist
+favaginous
+favella
+favellidium
+favelloid
+Faventine
+faveolate
+faveolus
+faviform
+favilla
+favillous
+favism
+favissa
+favn
+favonian
+Favonius
+favor
+favorable
+favorableness
+favorably
+favored
+favoredly
+favoredness
+favorer
+favoress
+favoring
+favoringly
+favorite
+favoritism
+favorless
+favose
+favosely
+favosite
+Favosites
+Favositidae
+favositoid
+favous
+favus
+fawn
+fawner
+fawnery
+fawning
+fawningly
+fawningness
+fawnlike
+fawnskin
+fawny
+Fay
+fay
+Fayal
+fayalite
+Fayettism
+fayles
+Fayumic
+faze
+fazenda
+fe
+feaberry
+feague
+feak
+feal
+fealty
+fear
+fearable
+feared
+fearedly
+fearedness
+fearer
+fearful
+fearfully
+fearfulness
+fearingly
+fearless
+fearlessly
+fearlessness
+fearnought
+fearsome
+fearsomely
+fearsomeness
+feasance
+feasibility
+feasible
+feasibleness
+feasibly
+feasor
+feast
+feasten
+feaster
+feastful
+feastfully
+feastless
+feat
+feather
+featherback
+featherbed
+featherbedding
+featherbird
+featherbone
+featherbrain
+featherbrained
+featherdom
+feathered
+featheredge
+featheredged
+featherer
+featherfew
+featherfoil
+featherhead
+featherheaded
+featheriness
+feathering
+featherleaf
+featherless
+featherlessness
+featherlet
+featherlike
+featherman
+feathermonger
+featherpate
+featherpated
+featherstitch
+featherstitching
+feathertop
+featherway
+featherweed
+featherweight
+featherwing
+featherwise
+featherwood
+featherwork
+featherworker
+feathery
+featliness
+featly
+featness
+featous
+featural
+featurally
+feature
+featured
+featureful
+featureless
+featureliness
+featurely
+featy
+feaze
+feazings
+febricant
+febricide
+febricity
+febricula
+febrifacient
+febriferous
+febrific
+febrifugal
+febrifuge
+febrile
+febrility
+Febronian
+Febronianism
+Februarius
+February
+februation
+fecal
+fecalith
+fecaloid
+feces
+Fechnerian
+feck
+feckful
+feckfully
+feckless
+fecklessly
+fecklessness
+feckly
+fecula
+feculence
+feculency
+feculent
+fecund
+fecundate
+fecundation
+fecundative
+fecundator
+fecundatory
+fecundify
+fecundity
+fecundize
+fed
+feddan
+federacy
+Federal
+federal
+federalism
+federalist
+federalization
+federalize
+federally
+federalness
+federate
+federation
+federationist
+federatist
+federative
+federatively
+federator
+Fedia
+Fedora
+fee
+feeable
+feeble
+feeblebrained
+feeblehearted
+feebleheartedly
+feebleheartedness
+feebleness
+feebling
+feeblish
+feebly
+feed
+feedable
+feedback
+feedbin
+feedboard
+feedbox
+feeder
+feedhead
+feeding
+feedman
+feedsman
+feedstuff
+feedway
+feedy
+feel
+feelable
+feeler
+feeless
+feeling
+feelingful
+feelingless
+feelinglessly
+feelingly
+feelingness
+feer
+feere
+feering
+feetage
+feetless
+feeze
+fefnicute
+fegary
+Fegatella
+Fehmic
+fei
+feif
+feigher
+feign
+feigned
+feignedly
+feignedness
+feigner
+feigning
+feigningly
+Feijoa
+feil
+feint
+feis
+feist
+feisty
+Felapton
+feldsher
+feldspar
+feldsparphyre
+feldspathic
+feldspathization
+feldspathoid
+Felichthys
+felicide
+felicific
+felicitate
+felicitation
+felicitator
+felicitous
+felicitously
+felicitousness
+felicity
+felid
+Felidae
+feliform
+Felinae
+feline
+felinely
+felineness
+felinity
+felinophile
+felinophobe
+Felis
+Felix
+fell
+fellable
+fellage
+fellah
+fellaheen
+fellahin
+Fellani
+Fellata
+Fellatah
+fellatio
+fellation
+fellen
+feller
+fellic
+felliducous
+fellifluous
+felling
+fellingbird
+fellinic
+fellmonger
+fellmongering
+fellmongery
+fellness
+felloe
+fellow
+fellowcraft
+fellowess
+fellowheirship
+fellowless
+fellowlike
+fellowship
+fellside
+fellsman
+felly
+feloid
+felon
+feloness
+felonious
+feloniously
+feloniousness
+felonry
+felonsetter
+felonsetting
+felonweed
+felonwood
+felonwort
+felony
+fels
+felsite
+felsitic
+felsobanyite
+felsophyre
+felsophyric
+felsosphaerite
+felstone
+felt
+felted
+felter
+felting
+feltlike
+feltmaker
+feltmaking
+feltmonger
+feltness
+feltwork
+feltwort
+felty
+feltyfare
+felucca
+Felup
+felwort
+female
+femalely
+femaleness
+femality
+femalize
+Feme
+feme
+femerell
+femic
+femicide
+feminacy
+feminal
+feminality
+feminate
+femineity
+feminie
+feminility
+feminin
+feminine
+femininely
+feminineness
+femininism
+femininity
+feminism
+feminist
+feministic
+feministics
+feminity
+feminization
+feminize
+feminologist
+feminology
+feminophobe
+femora
+femoral
+femorocaudal
+femorocele
+femorococcygeal
+femorofibular
+femoropopliteal
+femororotulian
+femorotibial
+femur
+fen
+fenbank
+fenberry
+fence
+fenceful
+fenceless
+fencelessness
+fencelet
+fenceplay
+fencer
+fenceress
+fenchene
+fenchone
+fenchyl
+fencible
+fencing
+fend
+fendable
+fender
+fendering
+fenderless
+fendillate
+fendillation
+fendy
+feneration
+fenestella
+Fenestellidae
+fenestra
+fenestral
+fenestrate
+fenestrated
+fenestration
+fenestrato
+fenestrule
+Fenian
+Fenianism
+fenite
+fenks
+fenland
+fenlander
+fenman
+fennec
+fennel
+fennelflower
+fennig
+fennish
+Fennoman
+fenny
+fenouillet
+Fenrir
+fensive
+fent
+fenter
+fenugreek
+Fenzelia
+feod
+feodal
+feodality
+feodary
+feodatory
+feoff
+feoffee
+feoffeeship
+feoffment
+feoffor
+feower
+feracious
+feracity
+Ferae
+Ferahan
+feral
+feralin
+Feramorz
+ferash
+ferberite
+Ferdiad
+ferdwit
+feretory
+feretrum
+ferfathmur
+ferfet
+ferganite
+Fergus
+fergusite
+Ferguson
+fergusonite
+feria
+ferial
+feridgi
+ferie
+ferine
+ferinely
+ferineness
+Feringi
+Ferio
+Ferison
+ferity
+ferk
+ferling
+ferly
+fermail
+Fermatian
+ferme
+ferment
+fermentability
+fermentable
+fermentarian
+fermentation
+fermentative
+fermentatively
+fermentativeness
+fermentatory
+fermenter
+fermentescible
+fermentitious
+fermentive
+fermentology
+fermentor
+fermentum
+fermerer
+fermery
+fermila
+fermorite
+fern
+fernandinite
+Fernando
+fernbird
+fernbrake
+ferned
+fernery
+ferngale
+ferngrower
+fernland
+fernleaf
+fernless
+fernlike
+fernshaw
+fernsick
+ferntickle
+ferntickled
+fernwort
+ferny
+Ferocactus
+ferocious
+ferociously
+ferociousness
+ferocity
+feroher
+Feronia
+ferrado
+ferrament
+Ferrara
+Ferrarese
+ferrate
+ferrated
+ferrateen
+ferratin
+ferrean
+ferreous
+ferret
+ferreter
+ferreting
+ferretto
+ferrety
+ferri
+ferriage
+ferric
+ferrichloride
+ferricyanate
+ferricyanhydric
+ferricyanic
+ferricyanide
+ferricyanogen
+ferrier
+ferriferous
+ferrihydrocyanic
+ferriprussiate
+ferriprussic
+ferrite
+ferritization
+ferritungstite
+ferrivorous
+ferroalloy
+ferroaluminum
+ferroboron
+ferrocalcite
+ferrocerium
+ferrochrome
+ferrochromium
+ferroconcrete
+ferroconcretor
+ferrocyanate
+ferrocyanhydric
+ferrocyanic
+ferrocyanide
+ferrocyanogen
+ferroglass
+ferrogoslarite
+ferrohydrocyanic
+ferroinclave
+ferromagnesian
+ferromagnetic
+ferromagnetism
+ferromanganese
+ferromolybdenum
+ferronatrite
+ferronickel
+ferrophosphorus
+ferroprint
+ferroprussiate
+ferroprussic
+ferrosilicon
+ferrotitanium
+ferrotungsten
+ferrotype
+ferrotyper
+ferrous
+ferrovanadium
+ferrozirconium
+ferruginate
+ferrugination
+ferruginean
+ferruginous
+ferrule
+ferruler
+ferrum
+ferruminate
+ferrumination
+ferry
+ferryboat
+ferryhouse
+ferryman
+ferryway
+ferthumlungur
+Fertil
+fertile
+fertilely
+fertileness
+fertility
+fertilizable
+fertilization
+fertilizational
+fertilize
+fertilizer
+feru
+ferula
+ferulaceous
+ferule
+ferulic
+fervanite
+fervency
+fervent
+fervently
+ferventness
+fervescence
+fervescent
+fervid
+fervidity
+fervidly
+fervidness
+Fervidor
+fervor
+fervorless
+Fesapo
+Fescennine
+fescenninity
+fescue
+fess
+fessely
+fesswise
+fest
+festal
+festally
+Feste
+fester
+festerment
+festilogy
+festinance
+festinate
+festinately
+festination
+festine
+Festino
+festival
+festivally
+festive
+festively
+festiveness
+festivity
+festivous
+festology
+festoon
+festoonery
+festoony
+festuca
+festucine
+fet
+fetal
+fetalism
+fetalization
+fetation
+fetch
+fetched
+fetcher
+fetching
+fetchingly
+feteless
+feterita
+fetial
+fetiales
+fetichmonger
+feticidal
+feticide
+fetid
+fetidity
+fetidly
+fetidness
+fetiferous
+fetiparous
+fetish
+fetisheer
+fetishic
+fetishism
+fetishist
+fetishistic
+fetishization
+fetishize
+fetishmonger
+fetishry
+fetlock
+fetlocked
+fetlow
+fetography
+fetometry
+fetoplacental
+fetor
+fetter
+fetterbush
+fetterer
+fetterless
+fetterlock
+fetticus
+fettle
+fettler
+fettling
+fetus
+feu
+feuage
+feuar
+feucht
+feud
+feudal
+feudalism
+feudalist
+feudalistic
+feudality
+feudalizable
+feudalization
+feudalize
+feudally
+feudatorial
+feudatory
+feudee
+feudist
+feudovassalism
+feued
+Feuillants
+feuille
+feuilletonism
+feuilletonist
+feuilletonistic
+feulamort
+fever
+feverberry
+feverbush
+fevercup
+feveret
+feverfew
+fevergum
+feverish
+feverishly
+feverishness
+feverless
+feverlike
+feverous
+feverously
+feverroot
+fevertrap
+fevertwig
+fevertwitch
+feverweed
+feverwort
+few
+fewness
+fewsome
+fewter
+fewterer
+fewtrils
+fey
+feyness
+fez
+Fezzan
+fezzed
+Fezziwig
+fezzy
+fi
+fiacre
+fiance
+fiancee
+fianchetto
+Fianna
+fiar
+fiard
+fiasco
+fiat
+fiatconfirmatio
+fib
+fibber
+fibbery
+fibdom
+Fiber
+fiber
+fiberboard
+fibered
+Fiberglas
+fiberize
+fiberizer
+fiberless
+fiberware
+fibration
+fibreless
+fibreware
+fibriform
+fibril
+fibrilla
+fibrillar
+fibrillary
+fibrillate
+fibrillated
+fibrillation
+fibrilled
+fibrilliferous
+fibrilliform
+fibrillose
+fibrillous
+fibrin
+fibrinate
+fibrination
+fibrine
+fibrinemia
+fibrinoalbuminous
+fibrinocellular
+fibrinogen
+fibrinogenetic
+fibrinogenic
+fibrinogenous
+fibrinolysin
+fibrinolysis
+fibrinolytic
+fibrinoplastic
+fibrinoplastin
+fibrinopurulent
+fibrinose
+fibrinosis
+fibrinous
+fibrinuria
+fibroadenia
+fibroadenoma
+fibroadipose
+fibroangioma
+fibroareolar
+fibroblast
+fibroblastic
+fibrobronchitis
+fibrocalcareous
+fibrocarcinoma
+fibrocartilage
+fibrocartilaginous
+fibrocaseose
+fibrocaseous
+fibrocellular
+fibrochondritis
+fibrochondroma
+fibrochondrosteal
+fibrocrystalline
+fibrocyst
+fibrocystic
+fibrocystoma
+fibrocyte
+fibroelastic
+fibroenchondroma
+fibrofatty
+fibroferrite
+fibroglia
+fibroglioma
+fibrohemorrhagic
+fibroid
+fibroin
+fibrointestinal
+fibroligamentous
+fibrolipoma
+fibrolipomatous
+fibrolite
+fibrolitic
+fibroma
+fibromata
+fibromatoid
+fibromatosis
+fibromatous
+fibromembrane
+fibromembranous
+fibromucous
+fibromuscular
+fibromyectomy
+fibromyitis
+fibromyoma
+fibromyomatous
+fibromyomectomy
+fibromyositis
+fibromyotomy
+fibromyxoma
+fibromyxosarcoma
+fibroneuroma
+fibronuclear
+fibronucleated
+fibropapilloma
+fibropericarditis
+fibroplastic
+fibropolypus
+fibropsammoma
+fibropurulent
+fibroreticulate
+fibrosarcoma
+fibrose
+fibroserous
+fibrosis
+fibrositis
+Fibrospongiae
+fibrotic
+fibrotuberculosis
+fibrous
+fibrously
+fibrousness
+fibrovasal
+fibrovascular
+fibry
+fibster
+fibula
+fibulae
+fibular
+fibulare
+fibulocalcaneal
+Ficaria
+ficary
+fice
+ficelle
+fiche
+Fichtean
+Fichteanism
+fichtelite
+fichu
+ficiform
+fickle
+ficklehearted
+fickleness
+ficklety
+ficklewise
+fickly
+fico
+ficoid
+Ficoidaceae
+Ficoideae
+ficoides
+fictation
+fictile
+fictileness
+fictility
+fiction
+fictional
+fictionalize
+fictionally
+fictionary
+fictioneer
+fictioner
+fictionist
+fictionistic
+fictionization
+fictionize
+fictionmonger
+fictious
+fictitious
+fictitiously
+fictitiousness
+fictive
+fictively
+Ficula
+Ficus
+fid
+Fidac
+fidalgo
+fidate
+fidation
+fiddle
+fiddleback
+fiddlebrained
+fiddlecome
+fiddledeedee
+fiddlefaced
+fiddlehead
+fiddleheaded
+fiddler
+fiddlerfish
+fiddlery
+fiddlestick
+fiddlestring
+fiddlewood
+fiddley
+fiddling
+fide
+fideicommiss
+fideicommissary
+fideicommission
+fideicommissioner
+fideicommissor
+fideicommissum
+fideism
+fideist
+fidejussion
+fidejussionary
+fidejussor
+fidejussory
+Fidele
+Fidelia
+Fidelio
+fidelity
+fidepromission
+fidepromissor
+Fides
+Fidessa
+fidfad
+fidge
+fidget
+fidgeter
+fidgetily
+fidgetiness
+fidgeting
+fidgetingly
+fidgety
+Fidia
+fidicinal
+fidicinales
+fidicula
+Fido
+fiducia
+fiducial
+fiducially
+fiduciarily
+fiduciary
+fiducinales
+fie
+fiedlerite
+fiefdom
+field
+fieldball
+fieldbird
+fielded
+fielder
+fieldfare
+fieldish
+fieldman
+fieldpiece
+fieldsman
+fieldward
+fieldwards
+fieldwork
+fieldworker
+fieldwort
+fieldy
+fiend
+fiendful
+fiendfully
+fiendhead
+fiendish
+fiendishly
+fiendishness
+fiendism
+fiendlike
+fiendliness
+fiendly
+fiendship
+fient
+Fierabras
+Fierasfer
+fierasferid
+Fierasferidae
+fierasferoid
+fierce
+fiercehearted
+fiercely
+fiercen
+fierceness
+fierding
+fierily
+fieriness
+fiery
+fiesta
+fieulamort
+Fife
+fife
+fifer
+fifie
+fifish
+fifo
+fifteen
+fifteener
+fifteenfold
+fifteenth
+fifteenthly
+fifth
+fifthly
+fiftieth
+fifty
+fiftyfold
+fig
+figaro
+figbird
+figeater
+figent
+figged
+figgery
+figging
+figgle
+figgy
+fight
+fightable
+fighter
+fighteress
+fighting
+fightingly
+fightwite
+Figitidae
+figless
+figlike
+figment
+figmental
+figpecker
+figshell
+figulate
+figulated
+figuline
+figurability
+figurable
+figural
+figurant
+figurante
+figurate
+figurately
+figuration
+figurative
+figuratively
+figurativeness
+figure
+figured
+figuredly
+figurehead
+figureheadless
+figureheadship
+figureless
+figurer
+figuresome
+figurette
+figurial
+figurine
+figurism
+figurist
+figurize
+figury
+figworm
+figwort
+Fiji
+Fijian
+fike
+fikie
+filace
+filaceous
+filacer
+Filago
+filament
+filamentar
+filamentary
+filamented
+filamentiferous
+filamentoid
+filamentose
+filamentous
+filamentule
+filander
+filanders
+filao
+filar
+Filaria
+filaria
+filarial
+filarian
+filariasis
+filaricidal
+filariform
+filariid
+Filariidae
+filarious
+filasse
+filate
+filator
+filature
+filbert
+filch
+filcher
+filchery
+filching
+filchingly
+file
+filefish
+filelike
+filemaker
+filemaking
+filemot
+filer
+filesmith
+filet
+filial
+filiality
+filially
+filialness
+filiate
+filiation
+filibeg
+filibranch
+Filibranchia
+filibranchiate
+filibuster
+filibusterer
+filibusterism
+filibusterous
+filical
+Filicales
+filicauline
+Filices
+filicic
+filicidal
+filicide
+filiciform
+filicin
+Filicineae
+filicinean
+filicite
+Filicites
+filicologist
+filicology
+Filicornia
+filiety
+filiferous
+filiform
+filiformed
+Filigera
+filigerous
+filigree
+filing
+filings
+filionymic
+filiopietistic
+filioque
+Filipendula
+filipendulous
+Filipina
+Filipiniana
+Filipinization
+Filipinize
+Filipino
+filippo
+filipuncture
+filite
+Filix
+fill
+fillable
+filled
+fillemot
+filler
+fillercap
+fillet
+filleter
+filleting
+filletlike
+filletster
+filleul
+filling
+fillingly
+fillingness
+fillip
+fillipeen
+fillister
+fillmass
+fillock
+fillowite
+filly
+film
+filmable
+filmdom
+filmet
+filmgoer
+filmgoing
+filmic
+filmiform
+filmily
+filminess
+filmish
+filmist
+filmize
+filmland
+filmlike
+filmogen
+filmslide
+filmstrip
+filmy
+filo
+filoplumaceous
+filoplume
+filopodium
+Filosa
+filose
+filoselle
+fils
+filter
+filterability
+filterable
+filterableness
+filterer
+filtering
+filterman
+filth
+filthify
+filthily
+filthiness
+filthless
+filthy
+filtrability
+filtrable
+filtratable
+filtrate
+filtration
+fimble
+fimbria
+fimbrial
+fimbriate
+fimbriated
+fimbriation
+fimbriatum
+fimbricate
+fimbricated
+fimbrilla
+fimbrillate
+fimbrilliferous
+fimbrillose
+fimbriodentate
+Fimbristylis
+fimetarious
+fimicolous
+Fin
+fin
+finable
+finableness
+finagle
+finagler
+final
+finale
+finalism
+finalist
+finality
+finalize
+finally
+finance
+financial
+financialist
+financially
+financier
+financiery
+financist
+finback
+finch
+finchbacked
+finched
+finchery
+find
+findability
+findable
+findal
+finder
+findfault
+finding
+findjan
+fine
+fineable
+finebent
+fineish
+fineleaf
+fineless
+finely
+finement
+fineness
+finer
+finery
+finespun
+finesse
+finesser
+finestill
+finestiller
+finetop
+finfish
+finfoot
+Fingal
+Fingall
+Fingallian
+fingent
+finger
+fingerable
+fingerberry
+fingerbreadth
+fingered
+fingerer
+fingerfish
+fingerflower
+fingerhold
+fingerhook
+fingering
+fingerleaf
+fingerless
+fingerlet
+fingerlike
+fingerling
+fingernail
+fingerparted
+fingerprint
+fingerprinting
+fingerroot
+fingersmith
+fingerspin
+fingerstall
+fingerstone
+fingertip
+fingerwise
+fingerwork
+fingery
+fingrigo
+Fingu
+finial
+finialed
+finical
+finicality
+finically
+finicalness
+finicism
+finick
+finickily
+finickiness
+finicking
+finickingly
+finickingness
+finific
+finify
+Finiglacial
+finikin
+finiking
+fining
+finis
+finish
+finishable
+finished
+finisher
+finishing
+finite
+finitely
+finiteness
+finitesimal
+finitive
+finitude
+finity
+finjan
+fink
+finkel
+finland
+Finlander
+finless
+finlet
+finlike
+Finmark
+Finn
+finnac
+finned
+finner
+finnesko
+Finnic
+Finnicize
+finnip
+Finnish
+finny
+finochio
+Fionnuala
+fiord
+fiorded
+Fioretti
+fiorin
+fiorite
+Fiot
+fip
+fipenny
+fipple
+fique
+fir
+Firbolg
+firca
+fire
+fireable
+firearm
+firearmed
+fireback
+fireball
+firebird
+fireblende
+fireboard
+fireboat
+firebolt
+firebolted
+firebote
+firebox
+fireboy
+firebrand
+firebrat
+firebreak
+firebrick
+firebug
+fireburn
+firecoat
+firecracker
+firecrest
+fired
+firedamp
+firedog
+firedrake
+firefall
+firefang
+firefanged
+fireflaught
+fireflirt
+fireflower
+firefly
+fireguard
+firehouse
+fireless
+firelight
+firelike
+fireling
+firelit
+firelock
+fireman
+firemanship
+firemaster
+fireplace
+fireplug
+firepower
+fireproof
+fireproofing
+fireproofness
+firer
+fireroom
+firesafe
+firesafeness
+firesafety
+fireshaft
+fireshine
+fireside
+firesider
+firesideship
+firespout
+firestone
+firestopping
+firetail
+firetop
+firetrap
+firewarden
+firewater
+fireweed
+firewood
+firework
+fireworkless
+fireworky
+fireworm
+firing
+firk
+firker
+firkin
+firlot
+firm
+firmament
+firmamental
+firman
+firmance
+firmer
+firmhearted
+firmisternal
+Firmisternia
+firmisternial
+firmisternous
+firmly
+firmness
+firn
+Firnismalerei
+Firoloida
+firring
+firry
+first
+firstcomer
+firsthand
+firstling
+firstly
+firstness
+firstship
+firth
+fisc
+fiscal
+fiscalify
+fiscalism
+fiscalization
+fiscalize
+fiscally
+fischerite
+fise
+fisetin
+fish
+fishable
+fishback
+fishbed
+fishberry
+fishbolt
+fishbone
+fisheater
+fished
+fisher
+fisherboat
+fisherboy
+fisheress
+fisherfolk
+fishergirl
+fisherman
+fisherpeople
+fisherwoman
+fishery
+fishet
+fisheye
+fishfall
+fishful
+fishgarth
+fishgig
+fishhood
+fishhook
+fishhooks
+fishhouse
+fishify
+fishily
+fishiness
+fishing
+fishingly
+fishless
+fishlet
+fishlike
+fishline
+fishling
+fishman
+fishmonger
+fishmouth
+fishplate
+fishpond
+fishpool
+fishpot
+fishpotter
+fishpound
+fishskin
+fishtail
+fishway
+fishweed
+fishweir
+fishwife
+fishwoman
+fishwood
+fishworker
+fishworks
+fishworm
+fishy
+fishyard
+fisnoga
+fissate
+fissicostate
+fissidactyl
+Fissidens
+Fissidentaceae
+fissidentaceous
+fissile
+fissileness
+fissilingual
+Fissilinguia
+fissility
+fission
+fissionable
+fissipalmate
+fissipalmation
+fissiparation
+fissiparism
+fissiparity
+fissiparous
+fissiparously
+fissiparousness
+fissiped
+Fissipeda
+fissipedal
+fissipedate
+Fissipedia
+fissipedial
+Fissipes
+fissirostral
+fissirostrate
+Fissirostres
+fissive
+fissural
+fissuration
+fissure
+fissureless
+Fissurella
+Fissurellidae
+fissuriform
+fissury
+fist
+fisted
+fister
+fistful
+fistiana
+fistic
+fistical
+fisticuff
+fisticuffer
+fisticuffery
+fistify
+fistiness
+fisting
+fistlike
+fistmele
+fistnote
+fistuca
+fistula
+Fistulana
+fistular
+Fistularia
+Fistulariidae
+fistularioid
+fistulate
+fistulated
+fistulatome
+fistulatous
+fistule
+fistuliform
+Fistulina
+fistulize
+fistulose
+fistulous
+fistwise
+fisty
+fit
+fitch
+fitched
+fitchee
+fitcher
+fitchery
+fitchet
+fitchew
+fitful
+fitfully
+fitfulness
+fitly
+fitment
+fitness
+fitout
+fitroot
+fittable
+fittage
+fitted
+fittedness
+fitten
+fitter
+fitters
+fittily
+fittiness
+fitting
+fittingly
+fittingness
+Fittonia
+fitty
+fittyfied
+fittyways
+fittywise
+fitweed
+Fitzclarence
+Fitzroy
+Fitzroya
+Fiuman
+five
+fivebar
+fivefold
+fivefoldness
+fiveling
+fivepence
+fivepenny
+fivepins
+fiver
+fives
+fivescore
+fivesome
+fivestones
+fix
+fixable
+fixage
+fixate
+fixatif
+fixation
+fixative
+fixator
+fixature
+fixed
+fixedly
+fixedness
+fixer
+fixidity
+fixing
+fixity
+fixture
+fixtureless
+fixure
+fizelyite
+fizgig
+fizz
+fizzer
+fizzle
+fizzy
+fjarding
+fjeld
+fjerding
+Fjorgyn
+flabbergast
+flabbergastation
+flabbily
+flabbiness
+flabby
+flabellarium
+flabellate
+flabellation
+flabellifoliate
+flabelliform
+flabellinerved
+flabellum
+flabrum
+flaccid
+flaccidity
+flaccidly
+flaccidness
+flacherie
+Flacian
+Flacianism
+Flacianist
+flack
+flacked
+flacker
+flacket
+Flacourtia
+Flacourtiaceae
+flacourtiaceous
+flaff
+flaffer
+flag
+flagboat
+flagellant
+flagellantism
+flagellar
+Flagellaria
+Flagellariaceae
+flagellariaceous
+Flagellata
+Flagellatae
+flagellate
+flagellated
+flagellation
+flagellative
+flagellator
+flagellatory
+flagelliferous
+flagelliform
+flagellist
+flagellosis
+flagellula
+flagellum
+flageolet
+flagfall
+flagger
+flaggery
+flaggily
+flagginess
+flagging
+flaggingly
+flaggish
+flaggy
+flagitate
+flagitation
+flagitious
+flagitiously
+flagitiousness
+flagleaf
+flagless
+flaglet
+flaglike
+flagmaker
+flagmaking
+flagman
+flagon
+flagonet
+flagonless
+flagpole
+flagrance
+flagrancy
+flagrant
+flagrantly
+flagrantness
+flagroot
+flagship
+flagstaff
+flagstick
+flagstone
+flagworm
+flail
+flaillike
+flair
+flaith
+flaithship
+flajolotite
+flak
+flakage
+flake
+flakeless
+flakelet
+flaker
+flakily
+flakiness
+flaky
+flam
+Flamandization
+Flamandize
+flamant
+flamb
+flambeau
+flambeaux
+flamberg
+flamboyance
+flamboyancy
+flamboyant
+flamboyantism
+flamboyantize
+flamboyantly
+flamboyer
+flame
+flamed
+flameflower
+flameless
+flamelet
+flamelike
+flamen
+flamenco
+flamenship
+flameproof
+flamer
+flamfew
+flamineous
+flaming
+Flamingant
+flamingly
+flamingo
+Flaminian
+flaminica
+flaminical
+flammability
+flammable
+flammeous
+flammiferous
+flammulated
+flammulation
+flammule
+flamy
+flan
+flancard
+flanch
+flanched
+flanconade
+flandan
+flandowser
+flane
+flange
+flangeless
+flanger
+flangeway
+flank
+flankard
+flanked
+flanker
+flanking
+flankwise
+flanky
+flannel
+flannelbush
+flanneled
+flannelette
+flannelflower
+flannelleaf
+flannelly
+flannelmouth
+flannelmouthed
+flannels
+flanque
+flap
+flapcake
+flapdock
+flapdoodle
+flapdragon
+flapjack
+flapmouthed
+flapper
+flapperdom
+flapperhood
+flapperish
+flapperism
+flare
+flareback
+flareboard
+flareless
+flaring
+flaringly
+flary
+flaser
+flash
+flashboard
+flasher
+flashet
+flashily
+flashiness
+flashing
+flashingly
+flashlight
+flashlike
+flashly
+flashness
+flashover
+flashpan
+flashproof
+flashtester
+flashy
+flask
+flasker
+flasket
+flasklet
+flasque
+flat
+flatboat
+flatbottom
+flatcap
+flatcar
+flatdom
+flated
+flatfish
+flatfoot
+flathat
+flathead
+flatiron
+flatland
+flatlet
+flatling
+flatly
+flatman
+flatness
+flatnose
+flatten
+flattener
+flattening
+flatter
+flatterable
+flattercap
+flatterdock
+flatterer
+flattering
+flatteringly
+flatteringness
+flattery
+flattie
+flatting
+flattish
+flattop
+flatulence
+flatulency
+flatulent
+flatulently
+flatulentness
+flatus
+flatware
+flatway
+flatways
+flatweed
+flatwise
+flatwoods
+flatwork
+flatworm
+Flaubertian
+flaught
+flaughter
+flaunt
+flaunter
+flauntily
+flauntiness
+flaunting
+flauntingly
+flaunty
+flautino
+flautist
+flavanilin
+flavaniline
+flavanthrene
+flavanthrone
+flavedo
+Flaveria
+flavescence
+flavescent
+Flavia
+Flavian
+flavic
+flavicant
+flavid
+flavin
+flavine
+Flavius
+flavo
+Flavobacterium
+flavone
+flavoprotein
+flavopurpurin
+flavor
+flavored
+flavorer
+flavorful
+flavoring
+flavorless
+flavorous
+flavorsome
+flavory
+flavour
+flaw
+flawed
+flawflower
+flawful
+flawless
+flawlessly
+flawlessness
+flawn
+flawy
+flax
+flaxboard
+flaxbush
+flaxdrop
+flaxen
+flaxlike
+flaxman
+flaxseed
+flaxtail
+flaxweed
+flaxwench
+flaxwife
+flaxwoman
+flaxwort
+flaxy
+flay
+flayer
+flayflint
+flea
+fleabane
+fleabite
+fleadock
+fleam
+fleaseed
+fleaweed
+fleawood
+fleawort
+fleay
+flebile
+fleche
+flechette
+fleck
+flecken
+flecker
+fleckiness
+fleckled
+fleckless
+flecklessly
+flecky
+flecnodal
+flecnode
+flection
+flectional
+flectionless
+flector
+fled
+fledge
+fledgeless
+fledgling
+fledgy
+flee
+fleece
+fleeceable
+fleeced
+fleeceflower
+fleeceless
+fleecelike
+fleecer
+fleech
+fleechment
+fleecily
+fleeciness
+fleecy
+fleer
+fleerer
+fleering
+fleeringly
+fleet
+fleeter
+fleetful
+fleeting
+fleetingly
+fleetingness
+fleetings
+fleetly
+fleetness
+fleetwing
+Flem
+Fleming
+Flemish
+flemish
+flench
+flense
+flenser
+flerry
+flesh
+fleshbrush
+fleshed
+fleshen
+flesher
+fleshful
+fleshhood
+fleshhook
+fleshiness
+fleshing
+fleshings
+fleshless
+fleshlike
+fleshlily
+fleshliness
+fleshly
+fleshment
+fleshmonger
+fleshpot
+fleshy
+flet
+Fleta
+fletch
+Fletcher
+fletcher
+Fletcherism
+Fletcherite
+Fletcherize
+flether
+fleuret
+fleurettee
+fleuronnee
+fleury
+flew
+flewed
+flewit
+flews
+flex
+flexanimous
+flexed
+flexibility
+flexible
+flexibleness
+flexibly
+flexile
+flexility
+flexion
+flexionless
+flexor
+flexuose
+flexuosity
+flexuous
+flexuously
+flexuousness
+flexural
+flexure
+flexured
+fley
+fleyedly
+fleyedness
+fleyland
+fleysome
+flibbertigibbet
+flicflac
+flick
+flicker
+flickering
+flickeringly
+flickerproof
+flickertail
+flickery
+flicky
+flidder
+flier
+fligger
+flight
+flighted
+flighter
+flightful
+flightily
+flightiness
+flighting
+flightless
+flightshot
+flighty
+flimflam
+flimflammer
+flimflammery
+flimmer
+flimp
+flimsily
+flimsiness
+flimsy
+flinch
+flincher
+flinching
+flinchingly
+flinder
+Flindersia
+flindosa
+flindosy
+fling
+flinger
+flingy
+flinkite
+flint
+flinter
+flinthearted
+flintify
+flintily
+flintiness
+flintless
+flintlike
+flintlock
+flintwood
+flintwork
+flintworker
+flinty
+flioma
+flip
+flipe
+flipjack
+flippancy
+flippant
+flippantly
+flippantness
+flipper
+flipperling
+flippery
+flirt
+flirtable
+flirtation
+flirtational
+flirtationless
+flirtatious
+flirtatiously
+flirtatiousness
+flirter
+flirtigig
+flirting
+flirtingly
+flirtish
+flirtishness
+flirtling
+flirty
+flisk
+flisky
+flit
+flitch
+flitchen
+flite
+flitfold
+fliting
+flitter
+flitterbat
+flittermouse
+flittern
+flitting
+flittingly
+flitwite
+flivver
+flix
+flixweed
+Flo
+float
+floatability
+floatable
+floatage
+floatation
+floatative
+floatboard
+floater
+floatiness
+floating
+floatingly
+floative
+floatless
+floatmaker
+floatman
+floatplane
+floatsman
+floatstone
+floaty
+flob
+flobby
+floc
+floccillation
+floccipend
+floccose
+floccosely
+flocculable
+flocculant
+floccular
+flocculate
+flocculation
+flocculator
+floccule
+flocculence
+flocculency
+flocculent
+flocculently
+flocculose
+flocculus
+floccus
+flock
+flocker
+flocking
+flockless
+flocklike
+flockman
+flockmaster
+flockowner
+flockwise
+flocky
+flocoon
+flodge
+floe
+floeberg
+Floerkea
+floey
+flog
+floggable
+flogger
+flogging
+floggingly
+flogmaster
+flogster
+flokite
+flong
+flood
+floodable
+floodage
+floodboard
+floodcock
+flooded
+flooder
+floodgate
+flooding
+floodless
+floodlet
+floodlight
+floodlighting
+floodlike
+floodmark
+floodometer
+floodproof
+floodtime
+floodwater
+floodway
+floodwood
+floody
+floor
+floorage
+floorcloth
+floorer
+floorhead
+flooring
+floorless
+floorman
+floorwalker
+floorward
+floorway
+floorwise
+floozy
+flop
+flophouse
+flopover
+flopper
+floppers
+floppily
+floppiness
+floppy
+flopwing
+Flora
+flora
+floral
+Floralia
+floralize
+florally
+floramor
+floran
+florate
+floreal
+floreate
+Florence
+florence
+florent
+Florentine
+Florentinism
+florentium
+flores
+florescence
+florescent
+floressence
+floret
+floreted
+floretum
+Floria
+Florian
+floriate
+floriated
+floriation
+florican
+floricin
+floricultural
+floriculturally
+floriculture
+floriculturist
+florid
+Florida
+Floridan
+Florideae
+floridean
+florideous
+Floridian
+floridity
+floridly
+floridness
+floriferous
+floriferously
+floriferousness
+florification
+floriform
+florigen
+florigenic
+florigraphy
+florikan
+floriken
+florilegium
+florimania
+florimanist
+florin
+Florinda
+floriparous
+floripondio
+floriscope
+Florissant
+florist
+floristic
+floristically
+floristics
+floristry
+florisugent
+florivorous
+floroon
+floroscope
+florula
+florulent
+flory
+floscular
+Floscularia
+floscularian
+Flosculariidae
+floscule
+flosculose
+flosculous
+flosh
+floss
+flosser
+flossflower
+Flossie
+flossification
+flossing
+flossy
+flot
+flota
+flotage
+flotant
+flotation
+flotative
+flotilla
+flotorial
+flotsam
+flounce
+flouncey
+flouncing
+flounder
+floundering
+flounderingly
+flour
+flourish
+flourishable
+flourisher
+flourishing
+flourishingly
+flourishment
+flourishy
+flourlike
+floury
+flouse
+flout
+flouter
+flouting
+floutingly
+flow
+flowable
+flowage
+flower
+flowerage
+flowered
+flowerer
+floweret
+flowerful
+flowerily
+floweriness
+flowering
+flowerist
+flowerless
+flowerlessness
+flowerlet
+flowerlike
+flowerpecker
+flowerpot
+flowerwork
+flowery
+flowing
+flowingly
+flowingness
+flowmanostat
+flowmeter
+flown
+flowoff
+Floyd
+flu
+fluate
+fluavil
+flub
+flubdub
+flubdubbery
+flucan
+fluctiferous
+fluctigerous
+fluctisonant
+fluctisonous
+fluctuability
+fluctuable
+fluctuant
+fluctuate
+fluctuation
+fluctuosity
+fluctuous
+flue
+flued
+flueless
+fluellen
+fluellite
+flueman
+fluency
+fluent
+fluently
+fluentness
+fluer
+fluework
+fluey
+fluff
+fluffer
+fluffily
+fluffiness
+fluffy
+Flugelhorn
+flugelman
+fluible
+fluid
+fluidacetextract
+fluidal
+fluidally
+fluidextract
+fluidglycerate
+fluidible
+fluidic
+fluidification
+fluidifier
+fluidify
+fluidimeter
+fluidism
+fluidist
+fluidity
+fluidization
+fluidize
+fluidly
+fluidness
+fluidram
+fluigram
+fluitant
+fluke
+fluked
+flukeless
+flukeworm
+flukewort
+flukily
+flukiness
+fluking
+fluky
+flumdiddle
+flume
+flumerin
+fluminose
+flummadiddle
+flummer
+flummery
+flummox
+flummydiddle
+flump
+flung
+flunk
+flunker
+flunkeydom
+flunkeyhood
+flunkeyish
+flunkeyize
+flunky
+flunkydom
+flunkyhood
+flunkyish
+flunkyism
+flunkyistic
+flunkyite
+flunkyize
+fluoaluminate
+fluoaluminic
+fluoarsenate
+fluoborate
+fluoboric
+fluoborid
+fluoboride
+fluoborite
+fluobromide
+fluocarbonate
+fluocerine
+fluocerite
+fluochloride
+fluohydric
+fluophosphate
+fluor
+fluoran
+fluoranthene
+fluorapatite
+fluorate
+fluorbenzene
+fluorene
+fluorenyl
+fluoresage
+fluoresce
+fluorescein
+fluorescence
+fluorescent
+fluorescigenic
+fluorescigenous
+fluorescin
+fluorhydric
+fluoric
+fluoridate
+fluoridation
+fluoride
+fluoridization
+fluoridize
+fluorimeter
+fluorinate
+fluorination
+fluorindine
+fluorine
+fluorite
+fluormeter
+fluorobenzene
+fluoroborate
+fluoroform
+fluoroformol
+fluorogen
+fluorogenic
+fluorography
+fluoroid
+fluorometer
+fluoroscope
+fluoroscopic
+fluoroscopy
+fluorosis
+fluorotype
+fluorspar
+fluoryl
+fluosilicate
+fluosilicic
+fluotantalate
+fluotantalic
+fluotitanate
+fluotitanic
+fluozirconic
+flurn
+flurr
+flurried
+flurriedly
+flurriment
+flurry
+flush
+flushboard
+flusher
+flusherman
+flushgate
+flushing
+flushingly
+flushness
+flushy
+flusk
+flusker
+fluster
+flusterate
+flusteration
+flusterer
+flusterment
+flustery
+Flustra
+flustrine
+flustroid
+flustrum
+flute
+flutebird
+fluted
+flutelike
+flutemouth
+fluter
+flutework
+Flutidae
+flutina
+fluting
+flutist
+flutter
+flutterable
+flutteration
+flutterer
+fluttering
+flutteringly
+flutterless
+flutterment
+fluttersome
+fluttery
+fluty
+fluvial
+fluvialist
+fluviatic
+fluviatile
+fluvicoline
+fluvioglacial
+fluviograph
+fluviolacustrine
+fluviology
+fluviomarine
+fluviometer
+fluviose
+fluvioterrestrial
+fluviovolcanic
+flux
+fluxation
+fluxer
+fluxibility
+fluxible
+fluxibleness
+fluxibly
+fluxile
+fluxility
+fluxion
+fluxional
+fluxionally
+fluxionary
+fluxionist
+fluxmeter
+fluxroot
+fluxweed
+fly
+flyable
+flyaway
+flyback
+flyball
+flybane
+flybelt
+flyblow
+flyblown
+flyboat
+flyboy
+flycatcher
+flyeater
+flyer
+flyflap
+flyflapper
+flyflower
+flying
+flyingly
+flyleaf
+flyless
+flyman
+flyness
+flypaper
+flype
+flyproof
+Flysch
+flyspeck
+flytail
+flytier
+flytrap
+flyway
+flyweight
+flywheel
+flywinch
+flywort
+Fo
+foal
+foalfoot
+foalhood
+foaly
+foam
+foambow
+foamer
+foamflower
+foamily
+foaminess
+foaming
+foamingly
+foamless
+foamlike
+foamy
+fob
+focal
+focalization
+focalize
+focally
+focaloid
+foci
+focimeter
+focimetry
+focoids
+focometer
+focometry
+focsle
+focus
+focusable
+focuser
+focusless
+fod
+fodda
+fodder
+fodderer
+foddering
+fodderless
+foder
+fodge
+fodgel
+fodient
+Fodientia
+foe
+foehn
+foehnlike
+foeish
+foeless
+foelike
+foeman
+foemanship
+Foeniculum
+foenngreek
+foeship
+foetalization
+fog
+fogbound
+fogbow
+fogdog
+fogdom
+fogeater
+fogey
+fogfruit
+foggage
+fogged
+fogger
+foggily
+fogginess
+foggish
+foggy
+foghorn
+fogle
+fogless
+fogman
+fogo
+fogon
+fogou
+fogproof
+fogram
+fogramite
+fogramity
+fogscoffer
+fogus
+fogy
+fogydom
+fogyish
+fogyism
+fohat
+foible
+foil
+foilable
+foiler
+foiling
+foilsman
+foining
+foiningly
+Foism
+foison
+foisonless
+Foist
+foist
+foister
+foistiness
+foisty
+foiter
+Fokker
+fold
+foldable
+foldage
+foldboat
+foldcourse
+folded
+foldedly
+folden
+folder
+folding
+foldless
+foldskirt
+foldure
+foldwards
+foldy
+fole
+folgerite
+folia
+foliaceous
+foliaceousness
+foliage
+foliaged
+foliageous
+folial
+foliar
+foliary
+foliate
+foliated
+foliation
+foliature
+folie
+foliicolous
+foliiferous
+foliiform
+folio
+foliobranch
+foliobranchiate
+foliocellosis
+foliolate
+foliole
+folioliferous
+foliolose
+foliose
+foliosity
+foliot
+folious
+foliously
+folium
+folk
+folkcraft
+folkfree
+folkland
+folklore
+folkloric
+folklorish
+folklorism
+folklorist
+folkloristic
+folkmoot
+folkmooter
+folkmot
+folkmote
+folkmoter
+folkright
+folksiness
+folksy
+Folkvang
+Folkvangr
+folkway
+folky
+folles
+folletage
+follicle
+follicular
+folliculate
+folliculated
+follicule
+folliculin
+Folliculina
+folliculitis
+folliculose
+folliculosis
+folliculous
+folliful
+follis
+follow
+followable
+follower
+followership
+following
+followingly
+folly
+follyproof
+Fomalhaut
+foment
+fomentation
+fomenter
+fomes
+fomites
+Fon
+fondak
+fondant
+fondish
+fondle
+fondler
+fondlesome
+fondlike
+fondling
+fondlingly
+fondly
+fondness
+fondu
+fondue
+fonduk
+fonly
+fonnish
+fono
+fons
+font
+Fontainea
+fontal
+fontally
+fontanel
+fontange
+fonted
+fontful
+fonticulus
+fontinal
+Fontinalaceae
+fontinalaceous
+Fontinalis
+fontlet
+foo
+Foochow
+Foochowese
+food
+fooder
+foodful
+foodless
+foodlessness
+foodstuff
+foody
+foofaraw
+fool
+fooldom
+foolery
+fooless
+foolfish
+foolhardihood
+foolhardily
+foolhardiness
+foolhardiship
+foolhardy
+fooling
+foolish
+foolishly
+foolishness
+foollike
+foolocracy
+foolproof
+foolproofness
+foolscap
+foolship
+fooner
+fooster
+foosterer
+foot
+footage
+footback
+football
+footballer
+footballist
+footband
+footblower
+footboard
+footboy
+footbreadth
+footbridge
+footcloth
+footed
+footeite
+footer
+footfall
+footfarer
+footfault
+footfolk
+footful
+footganger
+footgear
+footgeld
+foothalt
+foothill
+foothold
+foothook
+foothot
+footing
+footingly
+footings
+footle
+footler
+footless
+footlicker
+footlight
+footlights
+footling
+footlining
+footlock
+footmaker
+footman
+footmanhood
+footmanry
+footmanship
+footmark
+footnote
+footnoted
+footpace
+footpad
+footpaddery
+footpath
+footpick
+footplate
+footprint
+footrail
+footrest
+footrill
+footroom
+footrope
+foots
+footscald
+footslog
+footslogger
+footsore
+footsoreness
+footstalk
+footstall
+footstep
+footstick
+footstock
+footstone
+footstool
+footwalk
+footwall
+footway
+footwear
+footwork
+footworn
+footy
+fooyoung
+foozle
+foozler
+fop
+fopling
+foppery
+foppish
+foppishly
+foppishness
+foppy
+fopship
+For
+for
+fora
+forage
+foragement
+forager
+foralite
+foramen
+foraminated
+foramination
+foraminifer
+Foraminifera
+foraminiferal
+foraminiferan
+foraminiferous
+foraminose
+foraminous
+foraminulate
+foraminule
+foraminulose
+foraminulous
+forane
+foraneen
+foraneous
+forasmuch
+foray
+forayer
+forb
+forbade
+forbar
+forbathe
+forbear
+forbearable
+forbearance
+forbearant
+forbearantly
+forbearer
+forbearing
+forbearingly
+forbearingness
+forbesite
+forbid
+forbiddable
+forbiddal
+forbiddance
+forbidden
+forbiddenly
+forbiddenness
+forbidder
+forbidding
+forbiddingly
+forbiddingness
+forbit
+forbled
+forblow
+forbore
+forborne
+forbow
+forby
+force
+forceable
+forced
+forcedly
+forcedness
+forceful
+forcefully
+forcefulness
+forceless
+forcemeat
+forcement
+forceps
+forcepslike
+forcer
+forchase
+forche
+forcibility
+forcible
+forcibleness
+forcibly
+forcing
+forcingly
+forcipate
+forcipated
+forcipes
+forcipiform
+forcipressure
+Forcipulata
+forcipulate
+forcleave
+forconceit
+ford
+fordable
+fordableness
+fordays
+Fordicidia
+fording
+fordless
+fordo
+fordone
+fordwine
+fordy
+fore
+foreaccounting
+foreaccustom
+foreacquaint
+foreact
+foreadapt
+foreadmonish
+foreadvertise
+foreadvice
+foreadvise
+foreallege
+foreallot
+foreannounce
+foreannouncement
+foreanswer
+foreappoint
+foreappointment
+forearm
+foreassign
+foreassurance
+forebackwardly
+forebay
+forebear
+forebemoan
+forebemoaned
+forebespeak
+forebitt
+forebitten
+forebitter
+forebless
+foreboard
+forebode
+forebodement
+foreboder
+foreboding
+forebodingly
+forebodingness
+forebody
+foreboot
+forebowels
+forebowline
+forebrace
+forebrain
+forebreast
+forebridge
+foreburton
+forebush
+forecar
+forecarriage
+forecast
+forecaster
+forecasting
+forecastingly
+forecastle
+forecastlehead
+forecastleman
+forecatching
+forecatharping
+forechamber
+forechase
+forechoice
+forechoose
+forechurch
+forecited
+foreclaw
+foreclosable
+foreclose
+foreclosure
+forecome
+forecomingness
+forecommend
+foreconceive
+foreconclude
+forecondemn
+foreconscious
+foreconsent
+foreconsider
+forecontrive
+forecool
+forecooler
+forecounsel
+forecount
+forecourse
+forecourt
+forecover
+forecovert
+foredate
+foredawn
+foreday
+foredeck
+foredeclare
+foredecree
+foredeep
+foredefeated
+foredefine
+foredenounce
+foredescribe
+foredeserved
+foredesign
+foredesignment
+foredesk
+foredestine
+foredestiny
+foredetermination
+foredetermine
+foredevised
+foredevote
+forediscern
+foredispose
+foredivine
+foredone
+foredoom
+foredoomer
+foredoor
+foreface
+forefather
+forefatherly
+forefault
+forefeel
+forefeeling
+forefeelingly
+forefelt
+forefield
+forefigure
+forefin
+forefinger
+forefit
+foreflank
+foreflap
+foreflipper
+forefoot
+forefront
+foregallery
+foregame
+foreganger
+foregate
+foregift
+foregirth
+foreglance
+foregleam
+foreglimpse
+foreglow
+forego
+foregoer
+foregoing
+foregone
+foregoneness
+foreground
+foreguess
+foreguidance
+forehalf
+forehall
+forehammer
+forehand
+forehanded
+forehandedness
+forehandsel
+forehard
+forehatch
+forehatchway
+forehead
+foreheaded
+forehear
+forehearth
+foreheater
+forehill
+forehinting
+forehold
+forehood
+forehoof
+forehook
+foreign
+foreigneering
+foreigner
+foreignership
+foreignism
+foreignization
+foreignize
+foreignly
+foreignness
+foreimagination
+foreimagine
+foreimpressed
+foreimpression
+foreinclined
+foreinstruct
+foreintend
+foreiron
+forejudge
+forejudgment
+forekeel
+foreking
+foreknee
+foreknow
+foreknowable
+foreknower
+foreknowing
+foreknowingly
+foreknowledge
+forel
+forelady
+foreland
+forelay
+foreleech
+foreleg
+forelimb
+forelive
+forellenstein
+forelock
+forelook
+foreloop
+forelooper
+foreloper
+foremade
+foreman
+foremanship
+foremarch
+foremark
+foremartyr
+foremast
+foremasthand
+foremastman
+foremean
+foremeant
+foremelt
+foremention
+forementioned
+foremessenger
+foremilk
+foremisgiving
+foremistress
+foremost
+foremostly
+foremother
+forename
+forenamed
+forenews
+forenight
+forenoon
+forenote
+forenoted
+forenotice
+forenotion
+forensal
+forensic
+forensical
+forensicality
+forensically
+foreordain
+foreordainment
+foreorder
+foreordinate
+foreordination
+foreorlop
+forepad
+forepale
+foreparents
+forepart
+forepassed
+forepast
+forepaw
+forepayment
+forepeak
+foreperiod
+forepiece
+foreplace
+foreplan
+foreplanting
+forepole
+foreporch
+forepossessed
+forepost
+forepredicament
+forepreparation
+foreprepare
+forepretended
+foreproduct
+foreproffer
+forepromise
+forepromised
+foreprovided
+foreprovision
+forepurpose
+forequarter
+forequoted
+foreran
+forerank
+forereach
+forereaching
+foreread
+forereading
+forerecited
+forereckon
+forerehearsed
+foreremembered
+forereport
+forerequest
+forerevelation
+forerib
+forerigging
+foreright
+foreroom
+foreroyal
+forerun
+forerunner
+forerunnership
+forerunnings
+foresaddle
+foresaid
+foresail
+foresay
+forescene
+forescent
+foreschool
+foreschooling
+forescript
+foreseason
+foreseat
+foresee
+foreseeability
+foreseeable
+foreseeingly
+foreseer
+foreseize
+foresend
+foresense
+foresentence
+foreset
+foresettle
+foresettled
+foreshadow
+foreshadower
+foreshaft
+foreshank
+foreshape
+foresheet
+foreshift
+foreship
+foreshock
+foreshoe
+foreshop
+foreshore
+foreshorten
+foreshortening
+foreshot
+foreshoulder
+foreshow
+foreshower
+foreshroud
+foreside
+foresight
+foresighted
+foresightedness
+foresightful
+foresightless
+foresign
+foresignify
+foresin
+foresing
+foresinger
+foreskin
+foreskirt
+foresleeve
+foresound
+forespeak
+forespecified
+forespeed
+forespencer
+forest
+forestaff
+forestage
+forestair
+forestal
+forestall
+forestaller
+forestallment
+forestarling
+forestate
+forestation
+forestay
+forestaysail
+forestcraft
+forested
+foresteep
+forestem
+forestep
+forester
+forestership
+forestful
+forestial
+Forestian
+forestick
+Forestiera
+forestine
+forestish
+forestless
+forestlike
+forestology
+forestral
+forestress
+forestry
+forestside
+forestudy
+forestwards
+foresty
+foresummer
+foresummon
+foresweat
+foretack
+foretackle
+foretalk
+foretalking
+foretaste
+foretaster
+foretell
+foretellable
+foreteller
+forethink
+forethinker
+forethought
+forethoughted
+forethoughtful
+forethoughtfully
+forethoughtfulness
+forethoughtless
+forethrift
+foretime
+foretimed
+foretoken
+foretold
+foretop
+foretopman
+foretrace
+foretrysail
+foreturn
+foretype
+foretypified
+foreuse
+foreutter
+forevalue
+forever
+forevermore
+foreview
+forevision
+forevouch
+forevouched
+forevow
+forewarm
+forewarmer
+forewarn
+forewarner
+forewarning
+forewarningly
+forewaters
+foreween
+foreweep
+foreweigh
+forewing
+forewinning
+forewisdom
+forewish
+forewoman
+forewonted
+foreword
+foreworld
+foreworn
+forewritten
+forewrought
+foreyard
+foreyear
+forfairn
+forfar
+forfare
+forfars
+forfault
+forfaulture
+forfeit
+forfeiter
+forfeits
+forfeiture
+forfend
+forficate
+forficated
+forfication
+forficiform
+Forficula
+forficulate
+Forficulidae
+forfouchten
+forfoughen
+forfoughten
+forgainst
+forgather
+forge
+forgeability
+forgeable
+forged
+forgedly
+forgeful
+forgeman
+forger
+forgery
+forget
+forgetful
+forgetfully
+forgetfulness
+forgetive
+forgetness
+forgettable
+forgetter
+forgetting
+forgettingly
+forgie
+forging
+forgivable
+forgivableness
+forgivably
+forgive
+forgiveless
+forgiveness
+forgiver
+forgiving
+forgivingly
+forgivingness
+forgo
+forgoer
+forgot
+forgotten
+forgottenness
+forgrow
+forgrown
+forhoo
+forhooy
+forhow
+forinsec
+forint
+forisfamiliate
+forisfamiliation
+forjesket
+forjudge
+forjudger
+fork
+forkable
+forkbeard
+forked
+forkedly
+forkedness
+forker
+forkful
+forkhead
+forkiness
+forkless
+forklike
+forkman
+forksmith
+forktail
+forkwise
+forky
+forleft
+forlet
+forlorn
+forlornity
+forlornly
+forlornness
+form
+formability
+formable
+formably
+formagen
+formagenic
+formal
+formalazine
+formaldehyde
+formaldehydesulphoxylate
+formaldehydesulphoxylic
+formaldoxime
+formalesque
+Formalin
+formalism
+formalist
+formalistic
+formalith
+formality
+formalization
+formalize
+formalizer
+formally
+formalness
+formamide
+formamidine
+formamido
+formamidoxime
+formanilide
+formant
+format
+formate
+formation
+formational
+formative
+formatively
+formativeness
+formature
+formazyl
+forme
+formed
+formedon
+formee
+formel
+formene
+formenic
+former
+formeret
+formerly
+formerness
+formful
+formiate
+formic
+Formica
+formican
+Formicariae
+formicarian
+Formicariidae
+formicarioid
+formicarium
+formicaroid
+formicary
+formicate
+formication
+formicative
+formicicide
+formicid
+Formicidae
+formicide
+Formicina
+Formicinae
+formicine
+Formicivora
+formicivorous
+Formicoidea
+formidability
+formidable
+formidableness
+formidably
+formin
+forminate
+forming
+formless
+formlessly
+formlessness
+Formol
+formolite
+formonitrile
+Formosan
+formose
+formoxime
+formula
+formulable
+formulae
+formulaic
+formular
+formularism
+formularist
+formularistic
+formularization
+formularize
+formulary
+formulate
+formulation
+formulator
+formulatory
+formule
+formulism
+formulist
+formulistic
+formulization
+formulize
+formulizer
+formwork
+formy
+formyl
+formylal
+formylate
+formylation
+fornacic
+Fornax
+fornaxid
+fornenst
+fornent
+fornical
+fornicate
+fornicated
+fornication
+fornicator
+fornicatress
+fornicatrix
+forniciform
+forninst
+fornix
+forpet
+forpine
+forpit
+forprise
+forrad
+forrard
+forride
+forrit
+forritsome
+forrue
+forsake
+forsaken
+forsakenly
+forsakenness
+forsaker
+forset
+forslow
+forsooth
+forspeak
+forspend
+forspread
+Forst
+forsterite
+forswear
+forswearer
+forsworn
+forswornness
+Forsythia
+fort
+fortalice
+forte
+fortescue
+fortescure
+forth
+forthbring
+forthbringer
+forthcome
+forthcomer
+forthcoming
+forthcomingness
+forthcut
+forthfare
+forthfigured
+forthgaze
+forthgo
+forthgoing
+forthink
+forthputting
+forthright
+forthrightly
+forthrightness
+forthrights
+forthtell
+forthteller
+forthwith
+forthy
+forties
+fortieth
+fortifiable
+fortification
+fortifier
+fortify
+fortifying
+fortifyingly
+fortin
+fortis
+fortissimo
+fortitude
+fortitudinous
+fortlet
+fortnight
+fortnightly
+fortravail
+fortread
+fortress
+fortuitism
+fortuitist
+fortuitous
+fortuitously
+fortuitousness
+fortuity
+fortunate
+fortunately
+fortunateness
+fortune
+fortuned
+fortuneless
+Fortunella
+fortunetell
+fortuneteller
+fortunetelling
+fortunite
+forty
+fortyfold
+forum
+forumize
+forwander
+forward
+forwardal
+forwardation
+forwarder
+forwarding
+forwardly
+forwardness
+forwards
+forwean
+forweend
+forwent
+forwoden
+forworden
+fosh
+fosie
+Fosite
+fossa
+fossage
+fossane
+fossarian
+fosse
+fossed
+fossette
+fossick
+fossicker
+fossiform
+fossil
+fossilage
+fossilated
+fossilation
+fossildom
+fossiled
+fossiliferous
+fossilification
+fossilify
+fossilism
+fossilist
+fossilizable
+fossilization
+fossilize
+fossillike
+fossilogist
+fossilogy
+fossilological
+fossilologist
+fossilology
+fossor
+Fossores
+Fossoria
+fossorial
+fossorious
+fossula
+fossulate
+fossule
+fossulet
+fostell
+Foster
+foster
+fosterable
+fosterage
+fosterer
+fosterhood
+fostering
+fosteringly
+fosterite
+fosterland
+fosterling
+fostership
+fostress
+fot
+fotch
+fother
+Fothergilla
+fotmal
+fotui
+fou
+foud
+foudroyant
+fouette
+fougade
+fougasse
+fought
+foughten
+foughty
+foujdar
+foujdary
+foul
+foulage
+foulard
+fouler
+fouling
+foulish
+foully
+foulmouthed
+foulmouthedly
+foulmouthedness
+foulness
+foulsome
+foumart
+foun
+found
+foundation
+foundational
+foundationally
+foundationary
+foundationed
+foundationer
+foundationless
+foundationlessness
+founder
+founderous
+foundership
+foundery
+founding
+foundling
+foundress
+foundry
+foundryman
+fount
+fountain
+fountained
+fountaineer
+fountainhead
+fountainless
+fountainlet
+fountainous
+fountainously
+fountainwise
+fountful
+Fouquieria
+Fouquieriaceae
+fouquieriaceous
+four
+fourble
+fourche
+fourchee
+fourcher
+fourchette
+fourchite
+fourer
+fourflusher
+fourfold
+Fourierian
+Fourierism
+Fourierist
+Fourieristic
+Fourierite
+fourling
+fourpence
+fourpenny
+fourpounder
+fourre
+fourrier
+fourscore
+foursome
+foursquare
+foursquarely
+foursquareness
+fourstrand
+fourteen
+fourteener
+fourteenfold
+fourteenth
+fourteenthly
+fourth
+fourther
+fourthly
+foussa
+foute
+fouter
+fouth
+fovea
+foveal
+foveate
+foveated
+foveation
+foveiform
+foveola
+foveolarious
+foveolate
+foveolated
+foveole
+foveolet
+fow
+fowk
+fowl
+fowler
+fowlerite
+fowlery
+fowlfoot
+fowling
+fox
+foxbane
+foxberry
+foxchop
+foxer
+foxery
+foxfeet
+foxfinger
+foxfish
+foxglove
+foxhole
+foxhound
+foxily
+foxiness
+foxing
+foxish
+foxlike
+foxproof
+foxship
+foxskin
+foxtail
+foxtailed
+foxtongue
+foxwood
+foxy
+foy
+foyaite
+foyaitic
+foyboat
+foyer
+foziness
+fozy
+fra
+frab
+frabbit
+frabjous
+frabjously
+frabous
+fracas
+fracedinous
+frache
+frack
+fractable
+fractabling
+fracted
+Fracticipita
+fractile
+fraction
+fractional
+fractionalism
+fractionalize
+fractionally
+fractionary
+fractionate
+fractionating
+fractionation
+fractionator
+fractionization
+fractionize
+fractionlet
+fractious
+fractiously
+fractiousness
+fractocumulus
+fractonimbus
+fractostratus
+fractuosity
+fracturable
+fractural
+fracture
+fractureproof
+frae
+Fragaria
+fraghan
+Fragilaria
+Fragilariaceae
+fragile
+fragilely
+fragileness
+fragility
+fragment
+fragmental
+fragmentally
+fragmentarily
+fragmentariness
+fragmentary
+fragmentation
+fragmented
+fragmentist
+fragmentitious
+fragmentize
+fragrance
+fragrancy
+fragrant
+fragrantly
+fragrantness
+fraid
+fraik
+frail
+frailejon
+frailish
+frailly
+frailness
+frailty
+fraise
+fraiser
+Fram
+framable
+framableness
+frambesia
+frame
+framea
+frameable
+frameableness
+framed
+frameless
+framer
+framesmith
+framework
+framing
+frammit
+frampler
+frampold
+franc
+Frances
+franchisal
+franchise
+franchisement
+franchiser
+Francic
+Francis
+francisc
+francisca
+Franciscan
+Franciscanism
+Francisco
+francium
+Francize
+franco
+Francois
+francolin
+francolite
+Francomania
+Franconian
+Francophile
+Francophilism
+Francophobe
+Francophobia
+frangent
+Frangi
+frangibility
+frangible
+frangibleness
+frangipane
+frangipani
+frangula
+Frangulaceae
+frangulic
+frangulin
+frangulinic
+Frank
+frank
+frankability
+frankable
+frankalmoign
+Frankenia
+Frankeniaceae
+frankeniaceous
+Frankenstein
+franker
+frankfurter
+frankhearted
+frankheartedly
+frankheartedness
+Frankify
+frankincense
+frankincensed
+franking
+Frankish
+Frankist
+franklandite
+Franklin
+franklin
+Franklinia
+Franklinian
+Frankliniana
+Franklinic
+Franklinism
+Franklinist
+franklinite
+Franklinization
+frankly
+frankmarriage
+frankness
+frankpledge
+frantic
+frantically
+franticly
+franticness
+franzy
+frap
+frappe
+frapping
+frasco
+frase
+Frasera
+frasier
+frass
+frat
+fratch
+fratched
+fratcheous
+fratcher
+fratchety
+fratchy
+frater
+Fratercula
+fraternal
+fraternalism
+fraternalist
+fraternality
+fraternally
+fraternate
+fraternation
+fraternism
+fraternity
+fraternization
+fraternize
+fraternizer
+fratery
+Fraticelli
+Fraticellian
+fratority
+Fratricelli
+fratricidal
+fratricide
+fratry
+fraud
+fraudful
+fraudfully
+fraudless
+fraudlessly
+fraudlessness
+fraudproof
+fraudulence
+fraudulency
+fraudulent
+fraudulently
+fraudulentness
+fraughan
+fraught
+frawn
+fraxetin
+fraxin
+fraxinella
+Fraxinus
+fray
+frayed
+frayedly
+frayedness
+fraying
+frayn
+frayproof
+fraze
+frazer
+frazil
+frazzle
+frazzling
+freak
+freakdom
+freakery
+freakful
+freakily
+freakiness
+freakish
+freakishly
+freakishness
+freaky
+fream
+freath
+freck
+frecken
+freckened
+frecket
+freckle
+freckled
+freckledness
+freckleproof
+freckling
+frecklish
+freckly
+Fred
+Freddie
+Freddy
+Frederic
+Frederica
+Frederick
+frederik
+fredricite
+free
+freeboard
+freeboot
+freebooter
+freebootery
+freebooting
+freeborn
+Freechurchism
+freed
+freedman
+freedom
+freedwoman
+freehand
+freehanded
+freehandedly
+freehandedness
+freehearted
+freeheartedly
+freeheartedness
+freehold
+freeholder
+freeholdership
+freeholding
+freeing
+freeish
+Freekirker
+freelage
+freeloving
+freelovism
+freely
+freeman
+freemanship
+freemartin
+freemason
+freemasonic
+freemasonical
+freemasonism
+freemasonry
+freeness
+freer
+Freesia
+freesilverism
+freesilverite
+freestanding
+freestone
+freet
+freethinker
+freethinking
+freetrader
+freety
+freeward
+freeway
+freewheel
+freewheeler
+freewheeling
+freewill
+freewoman
+freezable
+freeze
+freezer
+freezing
+freezingly
+Fregata
+Fregatae
+Fregatidae
+freibergite
+freieslebenite
+freight
+freightage
+freighter
+freightless
+freightment
+freir
+freit
+freity
+fremd
+fremdly
+fremdness
+fremescence
+fremescent
+fremitus
+Fremontia
+Fremontodendron
+frenal
+Frenatae
+frenate
+French
+frenched
+Frenchification
+frenchification
+Frenchify
+frenchify
+Frenchily
+Frenchiness
+frenching
+Frenchism
+Frenchize
+Frenchless
+Frenchly
+Frenchman
+Frenchness
+Frenchwise
+Frenchwoman
+Frenchy
+frenetic
+frenetical
+frenetically
+Frenghi
+frenular
+frenulum
+frenum
+frenzelite
+frenzied
+frenziedly
+frenzy
+Freon
+frequence
+frequency
+frequent
+frequentable
+frequentage
+frequentation
+frequentative
+frequenter
+frequently
+frequentness
+frescade
+fresco
+frescoer
+frescoist
+fresh
+freshen
+freshener
+freshet
+freshhearted
+freshish
+freshly
+freshman
+freshmanhood
+freshmanic
+freshmanship
+freshness
+freshwoman
+Fresison
+fresnel
+fresno
+fret
+fretful
+fretfully
+fretfulness
+fretless
+fretsome
+frett
+frettage
+frettation
+frette
+fretted
+fretter
+fretting
+frettingly
+fretty
+fretum
+fretways
+fretwise
+fretwork
+fretworked
+Freudian
+Freudianism
+Freudism
+Freudist
+Freya
+freyalite
+Freycinetia
+Freyja
+Freyr
+friability
+friable
+friableness
+friand
+friandise
+friar
+friarbird
+friarhood
+friarling
+friarly
+friary
+frib
+fribble
+fribbleism
+fribbler
+fribblery
+fribbling
+fribblish
+fribby
+fricandeau
+fricandel
+fricassee
+frication
+fricative
+fricatrice
+friction
+frictionable
+frictional
+frictionally
+frictionize
+frictionless
+frictionlessly
+frictionproof
+Friday
+Fridila
+fridstool
+fried
+Frieda
+friedcake
+friedelite
+friedrichsdor
+friend
+friended
+friendless
+friendlessness
+friendlike
+friendlily
+friendliness
+friendliwise
+friendly
+friendship
+frier
+frieseite
+Friesian
+Friesic
+Friesish
+frieze
+friezer
+friezy
+frig
+frigate
+frigatoon
+friggle
+fright
+frightable
+frighten
+frightenable
+frightened
+frightenedly
+frightenedness
+frightener
+frightening
+frighteningly
+frighter
+frightful
+frightfully
+frightfulness
+frightless
+frightment
+frighty
+frigid
+Frigidaire
+frigidarium
+frigidity
+frigidly
+frigidness
+frigiferous
+frigolabile
+frigoric
+frigorific
+frigorifical
+frigorify
+frigorimeter
+frigostable
+frigotherapy
+Frija
+frijol
+frijolillo
+frijolito
+frike
+frill
+frillback
+frilled
+friller
+frillery
+frillily
+frilliness
+frilling
+frilly
+frim
+Frimaire
+fringe
+fringed
+fringeflower
+fringeless
+fringelet
+fringent
+fringepod
+Fringetail
+Fringilla
+fringillaceous
+Fringillidae
+fringilliform
+Fringilliformes
+fringilline
+fringilloid
+fringing
+fringy
+fripperer
+frippery
+frisca
+Frisesomorum
+frisette
+Frisian
+Frisii
+frisk
+frisker
+frisket
+friskful
+friskily
+friskiness
+frisking
+friskingly
+frisky
+frisolee
+frison
+frist
+frisure
+frit
+frith
+frithborh
+frithbot
+frithles
+frithsoken
+frithstool
+frithwork
+Fritillaria
+fritillary
+fritt
+fritter
+fritterer
+Fritz
+Friulian
+frivol
+frivoler
+frivolism
+frivolist
+frivolity
+frivolize
+frivolous
+frivolously
+frivolousness
+frixion
+friz
+frize
+frizer
+frizz
+frizzer
+frizzily
+frizziness
+frizzing
+frizzle
+frizzler
+frizzly
+frizzy
+fro
+frock
+frocking
+frockless
+frocklike
+frockmaker
+froe
+Froebelian
+Froebelism
+Froebelist
+frog
+frogbit
+frogeater
+frogeye
+frogface
+frogfish
+frogflower
+frogfoot
+frogged
+froggery
+frogginess
+frogging
+froggish
+froggy
+froghood
+froghopper
+frogland
+frogleaf
+frogleg
+froglet
+froglike
+frogling
+frogman
+frogmouth
+frognose
+frogskin
+frogstool
+frogtongue
+frogwort
+froise
+frolic
+frolicful
+frolicker
+frolicky
+frolicly
+frolicness
+frolicsome
+frolicsomely
+frolicsomeness
+from
+fromward
+fromwards
+frond
+frondage
+fronded
+frondent
+frondesce
+frondescence
+frondescent
+frondiferous
+frondiform
+frondigerous
+frondivorous
+frondlet
+frondose
+frondosely
+frondous
+front
+frontad
+frontage
+frontager
+frontal
+frontalis
+frontality
+frontally
+frontbencher
+fronted
+fronter
+frontier
+frontierlike
+frontierman
+frontiersman
+Frontignan
+fronting
+frontingly
+Frontirostria
+frontispiece
+frontless
+frontlessly
+frontlessness
+frontlet
+frontoauricular
+frontoethmoid
+frontogenesis
+frontolysis
+frontomallar
+frontomaxillary
+frontomental
+frontonasal
+frontooccipital
+frontoorbital
+frontoparietal
+frontopontine
+frontosphenoidal
+frontosquamosal
+frontotemporal
+frontozygomatic
+frontpiece
+frontsman
+frontstall
+frontward
+frontways
+frontwise
+froom
+frore
+frory
+frosh
+frost
+frostation
+frostbird
+frostbite
+frostbow
+frosted
+froster
+frostfish
+frostflower
+frostily
+frostiness
+frosting
+frostless
+frostlike
+frostproof
+frostproofing
+frostroot
+frostweed
+frostwork
+frostwort
+frosty
+frot
+froth
+frother
+Frothi
+frothily
+frothiness
+frothing
+frothless
+frothsome
+frothy
+frotton
+froufrou
+frough
+froughy
+frounce
+frounceless
+frow
+froward
+frowardly
+frowardness
+frower
+frowl
+frown
+frowner
+frownful
+frowning
+frowningly
+frownless
+frowny
+frowst
+frowstily
+frowstiness
+frowsty
+frowy
+frowze
+frowzily
+frowziness
+frowzled
+frowzly
+frowzy
+froze
+frozen
+frozenhearted
+frozenly
+frozenness
+fruchtschiefer
+fructed
+fructescence
+fructescent
+fructicultural
+fructiculture
+Fructidor
+fructiferous
+fructiferously
+fructification
+fructificative
+fructifier
+fructiform
+fructify
+fructiparous
+fructivorous
+fructose
+fructoside
+fructuary
+fructuosity
+fructuous
+fructuously
+fructuousness
+frugal
+frugalism
+frugalist
+frugality
+frugally
+frugalness
+fruggan
+Frugivora
+frugivorous
+fruit
+fruitade
+fruitage
+fruitarian
+fruitarianism
+fruitcake
+fruited
+fruiter
+fruiterer
+fruiteress
+fruitery
+fruitful
+fruitfullness
+fruitfully
+fruitgrower
+fruitgrowing
+fruitiness
+fruiting
+fruition
+fruitist
+fruitive
+fruitless
+fruitlessly
+fruitlessness
+fruitlet
+fruitling
+fruitstalk
+fruittime
+fruitwise
+fruitwoman
+fruitwood
+fruitworm
+fruity
+frumentaceous
+frumentarious
+frumentation
+frumenty
+frump
+frumpery
+frumpily
+frumpiness
+frumpish
+frumpishly
+frumpishness
+frumple
+frumpy
+frush
+frustrate
+frustrately
+frustrater
+frustration
+frustrative
+frustratory
+frustule
+frustulent
+frustulose
+frustum
+frutescence
+frutescent
+fruticetum
+fruticose
+fruticous
+fruticulose
+frutify
+fry
+fryer
+fu
+fub
+fubby
+fubsy
+Fucaceae
+fucaceous
+Fucales
+fucate
+fucation
+fucatious
+Fuchsia
+Fuchsian
+fuchsin
+fuchsine
+fuchsinophil
+fuchsinophilous
+fuchsite
+fuchsone
+fuci
+fucinita
+fuciphagous
+fucoid
+fucoidal
+Fucoideae
+fucosan
+fucose
+fucous
+fucoxanthin
+fucus
+fud
+fuddle
+fuddler
+fuder
+fudge
+fudger
+fudgy
+Fuegian
+fuel
+fueler
+fuelizer
+fuerte
+fuff
+fuffy
+fugacious
+fugaciously
+fugaciousness
+fugacity
+fugal
+fugally
+fuggy
+fugient
+fugitate
+fugitation
+fugitive
+fugitively
+fugitiveness
+fugitivism
+fugitivity
+fugle
+fugleman
+fuglemanship
+fugler
+fugu
+fugue
+fuguist
+fuidhir
+fuirdays
+Fuirena
+fuji
+Fulah
+fulciform
+fulcral
+fulcrate
+fulcrum
+fulcrumage
+fulfill
+fulfiller
+fulfillment
+Fulfulde
+fulgent
+fulgently
+fulgentness
+fulgid
+fulgide
+fulgidity
+fulgor
+Fulgora
+fulgorid
+Fulgoridae
+Fulgoroidea
+fulgorous
+Fulgur
+fulgural
+fulgurant
+fulgurantly
+fulgurata
+fulgurate
+fulgurating
+fulguration
+fulgurator
+fulgurite
+fulgurous
+fulham
+Fulica
+Fulicinae
+fulicine
+fuliginosity
+fuliginous
+fuliginously
+fuliginousness
+Fuligula
+Fuligulinae
+fuliguline
+fulk
+full
+fullam
+fullback
+fuller
+fullering
+fullery
+fullface
+fullhearted
+fulling
+fullish
+fullmouth
+fullmouthed
+fullmouthedly
+fullness
+fullom
+Fullonian
+fully
+fulmar
+Fulmarus
+fulmicotton
+fulminancy
+fulminant
+fulminate
+fulminating
+fulmination
+fulminator
+fulminatory
+fulmine
+fulmineous
+fulminic
+fulminous
+fulminurate
+fulminuric
+fulsome
+fulsomely
+fulsomeness
+fulth
+Fultz
+Fulup
+fulvene
+fulvescent
+fulvid
+fulvidness
+fulvous
+fulwa
+fulyie
+fulzie
+fum
+fumacious
+fumado
+fumage
+fumagine
+Fumago
+fumarate
+Fumaria
+Fumariaceae
+fumariaceous
+fumaric
+fumarine
+fumarium
+fumaroid
+fumaroidal
+fumarole
+fumarolic
+fumaryl
+fumatorium
+fumatory
+fumble
+fumbler
+fumbling
+fume
+fumeless
+fumer
+fumeroot
+fumet
+fumette
+fumewort
+fumiduct
+fumiferous
+fumigant
+fumigate
+fumigation
+fumigator
+fumigatorium
+fumigatory
+fumily
+fuminess
+fuming
+fumingly
+fumistery
+fumitory
+fumose
+fumosity
+fumous
+fumously
+fumy
+fun
+funambulate
+funambulation
+funambulator
+funambulatory
+funambulic
+funambulism
+funambulist
+funambulo
+Funaria
+Funariaceae
+funariaceous
+function
+functional
+functionalism
+functionalist
+functionality
+functionalize
+functionally
+functionarism
+functionary
+functionate
+functionation
+functionize
+functionless
+fund
+fundable
+fundal
+fundament
+fundamental
+fundamentalism
+fundamentalist
+fundamentality
+fundamentally
+fundamentalness
+fundatorial
+fundatrix
+funded
+funder
+fundholder
+fundi
+fundic
+fundiform
+funditor
+fundless
+fundmonger
+fundmongering
+funds
+Fundulinae
+funduline
+Fundulus
+fundungi
+fundus
+funebrial
+funeral
+funeralize
+funerary
+funereal
+funereally
+funest
+fungaceous
+fungal
+Fungales
+fungate
+fungation
+fungi
+Fungia
+fungian
+fungibility
+fungible
+fungic
+fungicidal
+fungicide
+fungicolous
+fungiferous
+fungiform
+fungilliform
+fungin
+fungistatic
+fungivorous
+fungo
+fungoid
+fungoidal
+fungological
+fungologist
+fungology
+fungose
+fungosity
+fungous
+fungus
+fungused
+funguslike
+fungusy
+funicle
+funicular
+funiculate
+funicule
+funiculitis
+funiculus
+funiform
+funipendulous
+funis
+Funje
+funk
+funker
+Funkia
+funkiness
+funky
+funmaker
+funmaking
+funnel
+funneled
+funnelform
+funnellike
+funnelwise
+funnily
+funniment
+funniness
+funny
+funnyman
+funori
+funt
+Funtumia
+Fur
+fur
+furacious
+furaciousness
+furacity
+fural
+furaldehyde
+furan
+furanoid
+furazan
+furazane
+furbelow
+furbish
+furbishable
+furbisher
+furbishment
+furca
+furcal
+furcate
+furcately
+furcation
+Furcellaria
+furcellate
+furciferine
+furciferous
+furciform
+Furcraea
+furcula
+furcular
+furculum
+furdel
+Furfooz
+furfur
+furfuraceous
+furfuraceously
+furfural
+furfuralcohol
+furfuraldehyde
+furfuramide
+furfuran
+furfuration
+furfurine
+furfuroid
+furfurole
+furfurous
+furfuryl
+furfurylidene
+furiant
+furibund
+furied
+Furies
+furify
+furil
+furilic
+furiosa
+furiosity
+furioso
+furious
+furiously
+furiousness
+furison
+furl
+furlable
+Furlan
+furler
+furless
+furlong
+furlough
+furnace
+furnacelike
+furnaceman
+furnacer
+furnacite
+furnage
+Furnariidae
+Furnariides
+Furnarius
+furner
+furnish
+furnishable
+furnished
+furnisher
+furnishing
+furnishment
+furniture
+furnitureless
+furodiazole
+furoic
+furoid
+furoin
+furole
+furomethyl
+furomonazole
+furor
+furore
+furphy
+furred
+furrier
+furriered
+furriery
+furrily
+furriness
+furring
+furrow
+furrower
+furrowless
+furrowlike
+furrowy
+furry
+furstone
+further
+furtherance
+furtherer
+furtherest
+furtherly
+furthermore
+furthermost
+furthersome
+furthest
+furtive
+furtively
+furtiveness
+Furud
+furuncle
+furuncular
+furunculoid
+furunculosis
+furunculous
+fury
+furyl
+furze
+furzechat
+furzed
+furzeling
+furzery
+furzetop
+furzy
+fusain
+fusarial
+fusariose
+fusariosis
+Fusarium
+fusarole
+fusate
+fusc
+fuscescent
+fuscin
+fuscohyaline
+fuscous
+fuse
+fuseboard
+fused
+fusee
+fuselage
+fuseplug
+fusht
+fusibility
+fusible
+fusibleness
+fusibly
+Fusicladium
+Fusicoccum
+fusiform
+Fusiformis
+fusil
+fusilier
+fusillade
+fusilly
+fusinist
+fusion
+fusional
+fusionism
+fusionist
+fusionless
+fusoid
+fuss
+fusser
+fussification
+fussify
+fussily
+fussiness
+fussock
+fussy
+fust
+fustanella
+fustee
+fusteric
+fustet
+fustian
+fustianish
+fustianist
+fustianize
+fustic
+fustigate
+fustigation
+fustigator
+fustigatory
+fustilugs
+fustily
+fustin
+fustiness
+fustle
+fusty
+Fusulina
+fusuma
+fusure
+Fusus
+fut
+futchel
+fute
+futhorc
+futile
+futilely
+futileness
+futilitarian
+futilitarianism
+futility
+futilize
+futtermassel
+futtock
+futural
+future
+futureless
+futureness
+futuric
+futurism
+futurist
+futuristic
+futurition
+futurity
+futurize
+futwa
+fuye
+fuze
+fuzz
+fuzzball
+fuzzily
+fuzziness
+fuzzy
+fyke
+fylfot
+fyrd
+G
+g
+Ga
+ga
+gab
+gabardine
+gabbard
+gabber
+gabble
+gabblement
+gabbler
+gabbro
+gabbroic
+gabbroid
+gabbroitic
+gabby
+Gabe
+gabelle
+gabelled
+gabelleman
+gabeller
+gaberdine
+gaberlunzie
+gabgab
+gabi
+gabion
+gabionade
+gabionage
+gabioned
+gablatores
+gable
+gableboard
+gablelike
+gablet
+gablewise
+gablock
+Gaboon
+Gabriel
+Gabriella
+Gabrielrache
+Gabunese
+gaby
+Gad
+gad
+Gadaba
+gadabout
+Gadarene
+Gadaria
+gadbee
+gadbush
+Gaddang
+gadded
+gadder
+Gaddi
+gaddi
+gadding
+gaddingly
+gaddish
+gaddishness
+gade
+gadfly
+gadge
+gadger
+gadget
+gadid
+Gadidae
+gadinine
+Gaditan
+gadling
+gadman
+gadoid
+Gadoidea
+gadolinia
+gadolinic
+gadolinite
+gadolinium
+gadroon
+gadroonage
+Gadsbodikins
+Gadsbud
+Gadslid
+gadsman
+Gadswoons
+gaduin
+Gadus
+gadwall
+Gadzooks
+Gael
+Gaeldom
+Gaelic
+Gaelicism
+Gaelicist
+Gaelicization
+Gaelicize
+Gaeltacht
+gaen
+Gaertnerian
+gaet
+Gaetulan
+Gaetuli
+Gaetulian
+gaff
+gaffe
+gaffer
+Gaffkya
+gaffle
+gaffsman
+gag
+gagate
+gage
+gageable
+gagee
+gageite
+gagelike
+gager
+gagership
+gagger
+gaggery
+gaggle
+gaggler
+gagman
+gagor
+gagroot
+gagtooth
+gahnite
+Gahrwali
+Gaia
+gaiassa
+Gaidropsaridae
+gaiety
+Gail
+Gaillardia
+gaily
+gain
+gainable
+gainage
+gainbirth
+gaincall
+gaincome
+gaine
+gainer
+gainful
+gainfully
+gainfulness
+gaining
+gainless
+gainlessness
+gainliness
+gainly
+gains
+gainsay
+gainsayer
+gainset
+gainsome
+gainspeaker
+gainspeaking
+gainst
+gainstrive
+gainturn
+gaintwist
+gainyield
+gair
+gairfish
+gaisling
+gait
+gaited
+gaiter
+gaiterless
+gaiting
+gaize
+gaj
+gal
+gala
+Galacaceae
+galactagogue
+galactagoguic
+galactan
+galactase
+galactemia
+galacthidrosis
+Galactia
+galactic
+galactidrosis
+galactite
+galactocele
+galactodendron
+galactodensimeter
+galactogenetic
+galactohemia
+galactoid
+galactolipide
+galactolipin
+galactolysis
+galactolytic
+galactoma
+galactometer
+galactometry
+galactonic
+galactopathy
+galactophagist
+galactophagous
+galactophlebitis
+galactophlysis
+galactophore
+galactophoritis
+galactophorous
+galactophthysis
+galactophygous
+galactopoiesis
+galactopoietic
+galactopyra
+galactorrhea
+galactorrhoea
+galactoscope
+galactose
+galactoside
+galactosis
+galactostasis
+galactosuria
+galactotherapy
+galactotrophy
+galacturia
+galagala
+Galaginae
+Galago
+galah
+galanas
+galanga
+galangin
+galant
+Galanthus
+galantine
+galany
+galapago
+Galatae
+galatea
+Galatian
+Galatic
+galatotrophic
+Galax
+galaxian
+Galaxias
+Galaxiidae
+galaxy
+galban
+galbanum
+Galbula
+Galbulae
+Galbulidae
+Galbulinae
+galbulus
+Galcha
+Galchic
+Gale
+gale
+galea
+galeage
+galeate
+galeated
+galee
+galeeny
+Galega
+galegine
+Galei
+galeid
+Galeidae
+galeiform
+galempung
+Galen
+galena
+Galenian
+Galenic
+galenic
+Galenical
+galenical
+Galenism
+Galenist
+galenite
+galenobismutite
+galenoid
+Galeodes
+Galeodidae
+galeoid
+Galeopithecus
+Galeopsis
+Galeorchis
+Galeorhinidae
+Galeorhinus
+galeproof
+galera
+galericulate
+galerum
+galerus
+Galesaurus
+galet
+Galeus
+galewort
+galey
+Galga
+galgal
+Galgulidae
+gali
+Galibi
+Galician
+Galictis
+Galidia
+Galidictis
+Galik
+Galilean
+galilee
+galimatias
+galingale
+Galinsoga
+galiongee
+galiot
+galipidine
+galipine
+galipoidin
+galipoidine
+galipoipin
+galipot
+Galium
+gall
+Galla
+galla
+gallacetophenone
+gallah
+gallanilide
+gallant
+gallantize
+gallantly
+gallantness
+gallantry
+gallate
+gallature
+gallberry
+gallbush
+galleass
+galled
+Gallegan
+gallein
+galleon
+galler
+Galleria
+gallerian
+galleried
+Galleriidae
+gallery
+gallerylike
+gallet
+galley
+galleylike
+galleyman
+galleyworm
+gallflower
+gallfly
+Galli
+galliambic
+galliambus
+Gallian
+galliard
+galliardise
+galliardly
+galliardness
+Gallic
+gallic
+Gallican
+Gallicanism
+Gallicism
+Gallicization
+Gallicize
+Gallicizer
+gallicola
+Gallicolae
+gallicole
+gallicolous
+galliferous
+Gallification
+gallification
+galliform
+Galliformes
+Gallify
+galligaskin
+gallimaufry
+Gallinaceae
+gallinacean
+Gallinacei
+gallinaceous
+Gallinae
+Gallinago
+gallinazo
+galline
+galling
+gallingly
+gallingness
+gallinipper
+Gallinula
+gallinule
+Gallinulinae
+gallinuline
+gallipot
+Gallirallus
+gallisin
+gallium
+gallivant
+gallivanter
+gallivat
+gallivorous
+galliwasp
+gallnut
+gallocyanin
+gallocyanine
+galloflavine
+galloglass
+Galloman
+Gallomania
+Gallomaniac
+gallon
+gallonage
+galloner
+galloon
+gallooned
+gallop
+gallopade
+galloper
+Galloperdix
+Gallophile
+Gallophilism
+Gallophobe
+Gallophobia
+galloping
+galloptious
+gallotannate
+gallotannic
+gallotannin
+gallous
+Gallovidian
+Galloway
+galloway
+gallowglass
+gallows
+gallowsmaker
+gallowsness
+gallowsward
+gallstone
+Gallus
+galluses
+gallweed
+gallwort
+gally
+gallybagger
+gallybeggar
+gallycrow
+Galoisian
+galoot
+galop
+galore
+galosh
+galp
+galravage
+galravitch
+galt
+Galtonia
+Galtonian
+galuchat
+galumph
+galumptious
+Galusha
+galuth
+galvanic
+galvanical
+galvanically
+galvanism
+galvanist
+galvanization
+galvanize
+galvanized
+galvanizer
+galvanocauterization
+galvanocautery
+galvanocontractility
+galvanofaradization
+galvanoglyph
+galvanoglyphy
+galvanograph
+galvanographic
+galvanography
+galvanologist
+galvanology
+galvanolysis
+galvanomagnet
+galvanomagnetic
+galvanomagnetism
+galvanometer
+galvanometric
+galvanometrical
+galvanometrically
+galvanometry
+galvanoplastic
+galvanoplastical
+galvanoplastically
+galvanoplastics
+galvanoplasty
+galvanopsychic
+galvanopuncture
+galvanoscope
+galvanoscopic
+galvanoscopy
+galvanosurgery
+galvanotactic
+galvanotaxis
+galvanotherapy
+galvanothermometer
+galvanothermy
+galvanotonic
+galvanotropic
+galvanotropism
+galvayne
+galvayning
+Galways
+Galwegian
+galyac
+galyak
+galziekte
+gam
+gamahe
+Gamaliel
+gamashes
+gamasid
+Gamasidae
+Gamasoidea
+gamb
+gamba
+gambade
+gambado
+gambang
+gambeer
+gambeson
+gambet
+gambette
+gambia
+gambier
+gambist
+gambit
+gamble
+gambler
+gamblesome
+gamblesomeness
+gambling
+gambodic
+gamboge
+gambogian
+gambogic
+gamboised
+gambol
+gambrel
+gambreled
+gambroon
+Gambusia
+gamdeboo
+game
+gamebag
+gameball
+gamecock
+gamecraft
+gameful
+gamekeeper
+gamekeeping
+gamelang
+gameless
+gamelike
+Gamelion
+gamelotte
+gamely
+gamene
+gameness
+gamesome
+gamesomely
+gamesomeness
+gamester
+gamestress
+gametal
+gametange
+gametangium
+gamete
+gametic
+gametically
+gametocyst
+gametocyte
+gametogenesis
+gametogenic
+gametogenous
+gametogeny
+gametogonium
+gametogony
+gametoid
+gametophagia
+gametophore
+gametophyll
+gametophyte
+gametophytic
+gamic
+gamily
+gamin
+gaminesque
+gaminess
+gaming
+gaminish
+gamma
+gammacism
+gammacismus
+gammadion
+gammarid
+Gammaridae
+gammarine
+gammaroid
+Gammarus
+gammation
+gammelost
+gammer
+gammerel
+gammerstang
+Gammexane
+gammick
+gammock
+gammon
+gammoner
+gammoning
+gammy
+gamobium
+gamodesmic
+gamodesmy
+gamogenesis
+gamogenetic
+gamogenetical
+gamogenetically
+gamogony
+Gamolepis
+gamomania
+gamont
+Gamopetalae
+gamopetalous
+gamophagia
+gamophagy
+gamophyllous
+gamori
+gamosepalous
+gamostele
+gamostelic
+gamostely
+gamotropic
+gamotropism
+gamp
+gamphrel
+gamut
+gamy
+gan
+ganam
+ganancial
+Ganapati
+ganch
+Ganda
+gander
+ganderess
+gandergoose
+gandermooner
+ganderteeth
+Gandhara
+Gandharva
+Gandhiism
+Gandhism
+Gandhist
+gandul
+gandum
+gandurah
+gane
+ganef
+gang
+Ganga
+ganga
+Gangamopteris
+gangan
+gangava
+gangboard
+gangdom
+gange
+ganger
+Gangetic
+ganggang
+ganging
+gangism
+gangland
+ganglander
+ganglia
+gangliac
+ganglial
+gangliar
+gangliasthenia
+gangliate
+gangliated
+gangliectomy
+gangliform
+gangliitis
+gangling
+ganglioblast
+gangliocyte
+ganglioform
+ganglioid
+ganglioma
+ganglion
+ganglionary
+ganglionate
+ganglionectomy
+ganglioneural
+ganglioneure
+ganglioneuroma
+ganglioneuron
+ganglionic
+ganglionitis
+ganglionless
+ganglioplexus
+gangly
+gangman
+gangmaster
+gangplank
+gangrel
+gangrene
+gangrenescent
+gangrenous
+gangsman
+gangster
+gangsterism
+gangtide
+gangue
+Ganguela
+gangway
+gangwayman
+ganister
+ganja
+ganner
+gannet
+Ganocephala
+ganocephalan
+ganocephalous
+ganodont
+Ganodonta
+Ganodus
+ganoid
+ganoidal
+ganoidean
+Ganoidei
+ganoidian
+ganoin
+ganomalite
+ganophyllite
+ganosis
+Ganowanian
+gansel
+gansey
+gansy
+gant
+ganta
+gantang
+gantlet
+gantline
+ganton
+gantries
+gantry
+gantryman
+gantsl
+Ganymede
+Ganymedes
+ganza
+ganzie
+gaol
+gaolbird
+gaoler
+Gaon
+Gaonate
+Gaonic
+gap
+Gapa
+gapa
+gape
+gaper
+gapes
+gapeseed
+gapeworm
+gaping
+gapingly
+gapingstock
+gapo
+gappy
+gapy
+gar
+gara
+garabato
+garad
+garage
+garageman
+Garamond
+garance
+garancine
+garapata
+garava
+garavance
+garawi
+garb
+garbage
+garbardine
+garbel
+garbell
+garbill
+garble
+garbleable
+garbler
+garbless
+garbling
+garboard
+garboil
+garbure
+garce
+Garcinia
+gardant
+gardeen
+garden
+gardenable
+gardencraft
+gardened
+gardener
+gardenership
+gardenesque
+gardenful
+gardenhood
+Gardenia
+gardenin
+gardening
+gardenize
+gardenless
+gardenlike
+gardenly
+gardenmaker
+gardenmaking
+gardenwards
+gardenwise
+gardeny
+garderobe
+gardevin
+gardy
+gardyloo
+gare
+garefowl
+gareh
+garetta
+garewaite
+garfish
+garganey
+Gargantua
+Gargantuan
+garget
+gargety
+gargle
+gargol
+gargoyle
+gargoyled
+gargoyley
+gargoylish
+gargoylishly
+gargoylism
+Garhwali
+garial
+gariba
+garibaldi
+Garibaldian
+garish
+garishly
+garishness
+garland
+garlandage
+garlandless
+garlandlike
+garlandry
+garlandwise
+garle
+garlic
+garlicky
+garliclike
+garlicmonger
+garlicwort
+garment
+garmentless
+garmentmaker
+garmenture
+garmentworker
+garn
+garnel
+garner
+garnerage
+garnet
+garnetberry
+garneter
+garnetiferous
+garnets
+garnett
+garnetter
+garnetwork
+garnetz
+garnice
+garniec
+garnierite
+garnish
+garnishable
+garnished
+garnishee
+garnisheement
+garnisher
+garnishment
+garnishry
+garniture
+Garo
+garoo
+garookuh
+garrafa
+garran
+Garret
+garret
+garreted
+garreteer
+garretmaster
+garrison
+Garrisonian
+Garrisonism
+garrot
+garrote
+garroter
+Garrulinae
+garruline
+garrulity
+garrulous
+garrulously
+garrulousness
+Garrulus
+garrupa
+Garrya
+Garryaceae
+garse
+Garshuni
+garsil
+garston
+garten
+garter
+gartered
+gartering
+garterless
+garth
+garthman
+Garuda
+garum
+garvanzo
+garvey
+garvock
+Gary
+gas
+Gasan
+gasbag
+gascoigny
+Gascon
+gasconade
+gasconader
+Gasconism
+gascromh
+gaseity
+gaselier
+gaseosity
+gaseous
+gaseousness
+gasfiring
+gash
+gashes
+gashful
+gashliness
+gashly
+gasholder
+gashouse
+gashy
+gasifiable
+gasification
+gasifier
+gasiform
+gasify
+gasket
+gaskin
+gasking
+gaskins
+gasless
+gaslight
+gaslighted
+gaslighting
+gaslit
+gaslock
+gasmaker
+gasman
+gasogenic
+gasoliery
+gasoline
+gasolineless
+gasoliner
+gasometer
+gasometric
+gasometrical
+gasometry
+gasp
+Gaspar
+gasparillo
+gasper
+gaspereau
+gaspergou
+gaspiness
+gasping
+gaspingly
+gasproof
+gaspy
+gasser
+Gasserian
+gassiness
+gassing
+gassy
+gast
+gastaldite
+gastaldo
+gaster
+gasteralgia
+Gasterolichenes
+gasteromycete
+Gasteromycetes
+gasteromycetous
+Gasterophilus
+gasteropod
+Gasteropoda
+gasterosteid
+Gasterosteidae
+gasterosteiform
+gasterosteoid
+Gasterosteus
+gasterotheca
+gasterothecal
+Gasterotricha
+gasterotrichan
+gasterozooid
+gastight
+gastightness
+Gastornis
+Gastornithidae
+gastradenitis
+gastraea
+gastraead
+Gastraeadae
+gastraeal
+gastraeum
+gastral
+gastralgia
+gastralgic
+gastralgy
+gastraneuria
+gastrasthenia
+gastratrophia
+gastrectasia
+gastrectasis
+gastrectomy
+gastrelcosis
+gastric
+gastricism
+gastrilegous
+gastriloquial
+gastriloquism
+gastriloquist
+gastriloquous
+gastriloquy
+gastrin
+gastritic
+gastritis
+gastroadenitis
+gastroadynamic
+gastroalbuminorrhea
+gastroanastomosis
+gastroarthritis
+gastroatonia
+gastroatrophia
+gastroblennorrhea
+gastrocatarrhal
+gastrocele
+gastrocentrous
+Gastrochaena
+Gastrochaenidae
+gastrocnemial
+gastrocnemian
+gastrocnemius
+gastrocoel
+gastrocolic
+gastrocoloptosis
+gastrocolostomy
+gastrocolotomy
+gastrocolpotomy
+gastrocystic
+gastrocystis
+gastrodialysis
+gastrodiaphanoscopy
+gastrodidymus
+gastrodisk
+gastroduodenal
+gastroduodenitis
+gastroduodenoscopy
+gastroduodenotomy
+gastrodynia
+gastroelytrotomy
+gastroenteralgia
+gastroenteric
+gastroenteritic
+gastroenteritis
+gastroenteroanastomosis
+gastroenterocolitis
+gastroenterocolostomy
+gastroenterological
+gastroenterologist
+gastroenterology
+gastroenteroptosis
+gastroenterostomy
+gastroenterotomy
+gastroepiploic
+gastroesophageal
+gastroesophagostomy
+gastrogastrotomy
+gastrogenital
+gastrograph
+gastrohelcosis
+gastrohepatic
+gastrohepatitis
+gastrohydrorrhea
+gastrohyperneuria
+gastrohypertonic
+gastrohysterectomy
+gastrohysteropexy
+gastrohysterorrhaphy
+gastrohysterotomy
+gastroid
+gastrointestinal
+gastrojejunal
+gastrojejunostomy
+gastrolater
+gastrolatrous
+gastrolienal
+gastrolith
+Gastrolobium
+gastrologer
+gastrological
+gastrologist
+gastrology
+gastrolysis
+gastrolytic
+gastromalacia
+gastromancy
+gastromelus
+gastromenia
+gastromyces
+gastromycosis
+gastromyxorrhea
+gastronephritis
+gastronome
+gastronomer
+gastronomic
+gastronomical
+gastronomically
+gastronomist
+gastronomy
+gastronosus
+gastropancreatic
+gastropancreatitis
+gastroparalysis
+gastroparesis
+gastroparietal
+gastropathic
+gastropathy
+gastroperiodynia
+gastropexy
+gastrophile
+gastrophilism
+gastrophilist
+gastrophilite
+Gastrophilus
+gastrophrenic
+gastrophthisis
+gastroplasty
+gastroplenic
+gastropleuritis
+gastroplication
+gastropneumatic
+gastropneumonic
+gastropod
+Gastropoda
+gastropodan
+gastropodous
+gastropore
+gastroptosia
+gastroptosis
+gastropulmonary
+gastropulmonic
+gastropyloric
+gastrorrhagia
+gastrorrhaphy
+gastrorrhea
+gastroschisis
+gastroscope
+gastroscopic
+gastroscopy
+gastrosoph
+gastrosopher
+gastrosophy
+gastrospasm
+gastrosplenic
+gastrostaxis
+gastrostegal
+gastrostege
+gastrostenosis
+gastrostomize
+Gastrostomus
+gastrostomy
+gastrosuccorrhea
+gastrotheca
+gastrothecal
+gastrotome
+gastrotomic
+gastrotomy
+Gastrotricha
+gastrotrichan
+gastrotubotomy
+gastrotympanites
+gastrovascular
+gastroxynsis
+gastrozooid
+gastrula
+gastrular
+gastrulate
+gastrulation
+gasworker
+gasworks
+gat
+gata
+gatch
+gatchwork
+gate
+gateado
+gateage
+gated
+gatehouse
+gatekeeper
+gateless
+gatelike
+gatemaker
+gateman
+gatepost
+gater
+gatetender
+gateward
+gatewards
+gateway
+gatewayman
+gatewise
+gatewoman
+gateworks
+gatewright
+Gatha
+gather
+gatherable
+gatherer
+gathering
+Gathic
+gating
+gator
+gatter
+gatteridge
+gau
+gaub
+gauby
+gauche
+gauchely
+gaucheness
+gaucherie
+Gaucho
+gaud
+gaudery
+Gaudete
+gaudful
+gaudily
+gaudiness
+gaudless
+gaudsman
+gaudy
+gaufer
+gauffer
+gauffered
+gauffre
+gaufre
+gaufrette
+gauge
+gaugeable
+gauger
+gaugership
+gauging
+Gaul
+gaulding
+gauleiter
+Gaulic
+gaulin
+Gaulish
+Gaullism
+Gaullist
+Gault
+gault
+gaulter
+gaultherase
+Gaultheria
+gaultherin
+gaum
+gaumish
+gaumless
+gaumlike
+gaumy
+gaun
+gaunt
+gaunted
+gauntlet
+gauntleted
+gauntly
+gauntness
+gauntry
+gaunty
+gaup
+gaupus
+gaur
+Gaura
+Gaurian
+gaus
+gauss
+gaussage
+gaussbergite
+Gaussian
+gauster
+gausterer
+gaut
+gauteite
+gauze
+gauzelike
+gauzewing
+gauzily
+gauziness
+gauzy
+gavall
+gave
+gavel
+gaveler
+gavelkind
+gavelkinder
+gavelman
+gavelock
+Gavia
+Gaviae
+gavial
+Gavialis
+gavialoid
+Gaviiformes
+gavotte
+gavyuti
+gaw
+gawby
+gawcie
+gawk
+gawkhammer
+gawkihood
+gawkily
+gawkiness
+gawkish
+gawkishly
+gawkishness
+gawky
+gawm
+gawn
+gawney
+gawsie
+gay
+gayal
+gayatri
+gaybine
+gaycat
+gaydiang
+gayish
+Gaylussacia
+gaylussite
+gayment
+gayness
+Gaypoo
+gaysome
+gaywings
+gayyou
+gaz
+gazabo
+gazangabin
+Gazania
+gaze
+gazebo
+gazee
+gazehound
+gazel
+gazeless
+Gazella
+gazelle
+gazelline
+gazement
+gazer
+gazettal
+gazette
+gazetteer
+gazetteerage
+gazetteerish
+gazetteership
+gazi
+gazing
+gazingly
+gazingstock
+gazogene
+gazon
+gazophylacium
+gazy
+gazzetta
+Ge
+ge
+Geadephaga
+geadephagous
+geal
+gean
+geanticlinal
+geanticline
+gear
+gearbox
+geared
+gearing
+gearksutite
+gearless
+gearman
+gearset
+gearshift
+gearwheel
+gease
+geason
+Geaster
+Geat
+geat
+Geatas
+gebang
+gebanga
+gebbie
+gebur
+Gecarcinidae
+Gecarcinus
+geck
+gecko
+geckoid
+geckotian
+geckotid
+Geckotidae
+geckotoid
+Ged
+ged
+gedackt
+gedanite
+gedder
+gedeckt
+gedecktwork
+Gederathite
+Gederite
+gedrite
+Gee
+gee
+geebong
+geebung
+Geechee
+geejee
+geek
+geelbec
+geeldikkop
+geelhout
+geepound
+geerah
+geest
+geet
+Geez
+geezer
+Gegenschein
+gegg
+geggee
+gegger
+geggery
+Geheimrat
+Gehenna
+gehlenite
+Geikia
+geikielite
+gein
+geira
+Geisenheimer
+geisha
+geison
+geisotherm
+geisothermal
+Geissoloma
+Geissolomataceae
+Geissolomataceous
+Geissorhiza
+geissospermin
+geissospermine
+geitjie
+geitonogamous
+geitonogamy
+Gekko
+Gekkones
+gekkonid
+Gekkonidae
+gekkonoid
+Gekkota
+gel
+gelable
+gelada
+gelandejump
+gelandelaufer
+gelandesprung
+Gelasian
+Gelasimus
+gelastic
+Gelastocoridae
+gelatification
+gelatigenous
+gelatin
+gelatinate
+gelatination
+gelatined
+gelatiniferous
+gelatiniform
+gelatinify
+gelatinigerous
+gelatinity
+gelatinizability
+gelatinizable
+gelatinization
+gelatinize
+gelatinizer
+gelatinobromide
+gelatinochloride
+gelatinoid
+gelatinotype
+gelatinous
+gelatinously
+gelatinousness
+gelation
+gelatose
+geld
+geldability
+geldable
+geldant
+gelder
+gelding
+Gelechia
+gelechiid
+Gelechiidae
+Gelfomino
+gelid
+Gelidiaceae
+gelidity
+Gelidium
+gelidly
+gelidness
+gelignite
+gelilah
+gelinotte
+gell
+Gellert
+gelly
+gelogenic
+gelong
+geloscopy
+gelose
+gelosin
+gelotherapy
+gelotometer
+gelotoscopy
+gelototherapy
+gelsemic
+gelsemine
+gelseminic
+gelseminine
+Gelsemium
+gelt
+gem
+Gemara
+Gemaric
+Gemarist
+gematria
+gematrical
+gemauve
+gemel
+gemeled
+gemellione
+gemellus
+geminate
+geminated
+geminately
+gemination
+geminative
+Gemini
+Geminid
+geminiflorous
+geminiform
+geminous
+Gemitores
+gemitorial
+gemless
+gemlike
+Gemma
+gemma
+gemmaceous
+gemmae
+gemmate
+gemmation
+gemmative
+gemmeous
+gemmer
+gemmiferous
+gemmiferousness
+gemmification
+gemmiform
+gemmily
+gemminess
+Gemmingia
+gemmipara
+gemmipares
+gemmiparity
+gemmiparous
+gemmiparously
+gemmoid
+gemmology
+gemmula
+gemmulation
+gemmule
+gemmuliferous
+gemmy
+gemot
+gemsbok
+gemsbuck
+gemshorn
+gemul
+gemuti
+gemwork
+gen
+gena
+genal
+genapp
+genapper
+genarch
+genarcha
+genarchaship
+genarchship
+gendarme
+gendarmery
+gender
+genderer
+genderless
+Gene
+gene
+genealogic
+genealogical
+genealogically
+genealogist
+genealogize
+genealogizer
+genealogy
+genear
+geneat
+genecologic
+genecological
+genecologically
+genecologist
+genecology
+geneki
+genep
+genera
+generability
+generable
+generableness
+general
+generalate
+generalcy
+generale
+generalia
+Generalidad
+generalific
+generalism
+generalissima
+generalissimo
+generalist
+generalistic
+generality
+generalizable
+generalization
+generalize
+generalized
+generalizer
+generall
+generally
+generalness
+generalship
+generalty
+generant
+generate
+generating
+generation
+generational
+generationism
+generative
+generatively
+generativeness
+generator
+generatrix
+generic
+generical
+generically
+genericalness
+generification
+generosity
+generous
+generously
+generousness
+Genesee
+geneserine
+Genesiac
+Genesiacal
+genesial
+genesic
+genesiology
+genesis
+Genesitic
+genesiurgic
+genet
+genethliac
+genethliacal
+genethliacally
+genethliacon
+genethliacs
+genethlialogic
+genethlialogical
+genethlialogy
+genethlic
+genetic
+genetical
+genetically
+geneticism
+geneticist
+genetics
+genetmoil
+genetous
+Genetrix
+genetrix
+Genetta
+Geneura
+Geneva
+geneva
+Genevan
+Genevese
+Genevieve
+Genevois
+genevoise
+genial
+geniality
+genialize
+genially
+genialness
+genian
+genic
+genicular
+geniculate
+geniculated
+geniculately
+geniculation
+geniculum
+genie
+genii
+genin
+genioglossal
+genioglossi
+genioglossus
+geniohyoglossal
+geniohyoglossus
+geniohyoid
+geniolatry
+genion
+genioplasty
+genip
+Genipa
+genipa
+genipap
+genipapada
+genisaro
+Genista
+genista
+genistein
+genital
+genitalia
+genitals
+genitival
+genitivally
+genitive
+genitocrural
+genitofemoral
+genitor
+genitorial
+genitory
+genitourinary
+geniture
+genius
+genizah
+genizero
+Genny
+Genoa
+genoblast
+genoblastic
+genocidal
+genocide
+Genoese
+genoese
+genom
+genome
+genomic
+genonema
+genos
+genotype
+genotypic
+genotypical
+genotypically
+Genoveva
+genovino
+genre
+genro
+gens
+genson
+gent
+genteel
+genteelish
+genteelism
+genteelize
+genteelly
+genteelness
+gentes
+genthite
+gentian
+Gentiana
+Gentianaceae
+gentianaceous
+Gentianales
+gentianella
+gentianic
+gentianin
+gentianose
+gentianwort
+gentile
+gentiledom
+gentilesse
+gentilic
+gentilism
+gentilitial
+gentilitian
+gentilitious
+gentility
+gentilization
+gentilize
+gentiobiose
+gentiopicrin
+gentisein
+gentisic
+gentisin
+gentle
+gentlefolk
+gentlehearted
+gentleheartedly
+gentleheartedness
+gentlehood
+gentleman
+gentlemanhood
+gentlemanism
+gentlemanize
+gentlemanlike
+gentlemanlikeness
+gentlemanliness
+gentlemanly
+gentlemanship
+gentlemens
+gentlemouthed
+gentleness
+gentlepeople
+gentleship
+gentlewoman
+gentlewomanhood
+gentlewomanish
+gentlewomanlike
+gentlewomanliness
+gentlewomanly
+gently
+gentman
+Gentoo
+gentrice
+gentry
+genty
+genu
+genua
+genual
+genuclast
+genuflect
+genuflection
+genuflector
+genuflectory
+genuflex
+genuflexuous
+genuine
+genuinely
+genuineness
+genus
+genyantrum
+Genyophrynidae
+genyoplasty
+genys
+geo
+geoaesthesia
+geoagronomic
+geobiologic
+geobiology
+geobiont
+geobios
+geoblast
+geobotanic
+geobotanical
+geobotanist
+geobotany
+geocarpic
+geocentric
+geocentrical
+geocentrically
+geocentricism
+geocerite
+geochemical
+geochemist
+geochemistry
+geochronic
+geochronology
+geochrony
+Geococcyx
+geocoronium
+geocratic
+geocronite
+geocyclic
+geodaesia
+geodal
+geode
+geodesic
+geodesical
+geodesist
+geodesy
+geodete
+geodetic
+geodetical
+geodetically
+geodetician
+geodetics
+geodiatropism
+geodic
+geodiferous
+geodist
+geoduck
+geodynamic
+geodynamical
+geodynamics
+geoethnic
+Geoff
+Geoffrey
+geoffroyin
+geoffroyine
+geoform
+geogenesis
+geogenetic
+geogenic
+geogenous
+geogeny
+Geoglossaceae
+Geoglossum
+geoglyphic
+geognosis
+geognosist
+geognost
+geognostic
+geognostical
+geognostically
+geognosy
+geogonic
+geogonical
+geogony
+geographer
+geographic
+geographical
+geographically
+geographics
+geographism
+geographize
+geography
+geohydrologist
+geohydrology
+geoid
+geoidal
+geoisotherm
+geolatry
+geologer
+geologian
+geologic
+geological
+geologically
+geologician
+geologist
+geologize
+geology
+geomagnetic
+geomagnetician
+geomagnetics
+geomagnetist
+geomalic
+geomalism
+geomaly
+geomance
+geomancer
+geomancy
+geomant
+geomantic
+geomantical
+geomantically
+geometer
+geometric
+geometrical
+geometrically
+geometrician
+geometricize
+geometrid
+Geometridae
+geometriform
+Geometrina
+geometrine
+geometrize
+geometroid
+Geometroidea
+geometry
+geomoroi
+geomorphic
+geomorphist
+geomorphogenic
+geomorphogenist
+geomorphogeny
+geomorphological
+geomorphology
+geomorphy
+geomyid
+Geomyidae
+Geomys
+Geon
+geonavigation
+geonegative
+Geonic
+Geonim
+Geonoma
+geonoma
+geonyctinastic
+geonyctitropic
+geoparallelotropic
+geophagia
+geophagism
+geophagist
+geophagous
+geophagy
+Geophila
+geophilid
+Geophilidae
+geophilous
+Geophilus
+Geophone
+geophone
+geophysical
+geophysicist
+geophysics
+geophyte
+geophytic
+geoplagiotropism
+Geoplana
+Geoplanidae
+geopolar
+geopolitic
+geopolitical
+geopolitically
+geopolitician
+geopolitics
+Geopolitik
+geoponic
+geoponical
+geoponics
+geopony
+geopositive
+Geoprumnon
+georama
+Geordie
+George
+Georgemas
+Georgette
+Georgia
+georgiadesite
+Georgian
+Georgiana
+georgic
+Georgie
+geoscopic
+geoscopy
+geoselenic
+geosid
+geoside
+geosphere
+Geospiza
+geostatic
+geostatics
+geostrategic
+geostrategist
+geostrategy
+geostrophic
+geosynclinal
+geosyncline
+geotactic
+geotactically
+geotaxis
+geotaxy
+geotechnic
+geotechnics
+geotectology
+geotectonic
+geotectonics
+Geoteuthis
+geotherm
+geothermal
+geothermic
+geothermometer
+Geothlypis
+geotic
+geotical
+geotilla
+geotonic
+geotonus
+geotropic
+geotropically
+geotropism
+geotropy
+geoty
+Gepeoo
+Gephyrea
+gephyrean
+gephyrocercal
+gephyrocercy
+Gepidae
+ger
+gerah
+Gerald
+Geraldine
+Geraniaceae
+geraniaceous
+geranial
+Geraniales
+geranic
+geraniol
+Geranium
+geranium
+geranomorph
+Geranomorphae
+geranomorphic
+geranyl
+Gerard
+gerardia
+Gerasene
+gerastian
+gerate
+gerated
+geratic
+geratologic
+geratologous
+geratology
+geraty
+gerb
+gerbe
+Gerbera
+Gerberia
+gerbil
+Gerbillinae
+Gerbillus
+gercrow
+gereagle
+gerefa
+gerenda
+gerendum
+gerent
+gerenuk
+gerfalcon
+gerhardtite
+geriatric
+geriatrician
+geriatrics
+gerim
+gerip
+germ
+germal
+German
+german
+germander
+germane
+germanely
+germaneness
+Germanesque
+Germanhood
+Germania
+Germanic
+germanic
+Germanical
+Germanically
+Germanics
+Germanification
+Germanify
+germanious
+Germanish
+Germanism
+Germanist
+Germanistic
+germanite
+Germanity
+germanity
+germanium
+Germanization
+germanization
+Germanize
+germanize
+Germanizer
+Germanly
+Germanness
+Germanocentric
+Germanomania
+Germanomaniac
+Germanophile
+Germanophilist
+Germanophobe
+Germanophobia
+Germanophobic
+Germanophobist
+germanous
+Germantown
+germanyl
+germarium
+germen
+germfree
+germicidal
+germicide
+germifuge
+germigenous
+germin
+germina
+germinability
+germinable
+Germinal
+germinal
+germinally
+germinance
+germinancy
+germinant
+germinate
+germination
+germinative
+germinatively
+germinator
+germing
+germinogony
+germiparity
+germless
+germlike
+germling
+germon
+germproof
+germule
+germy
+gernitz
+gerocomia
+gerocomical
+gerocomy
+geromorphism
+Geronomite
+geront
+gerontal
+gerontes
+gerontic
+gerontine
+gerontism
+geronto
+gerontocracy
+gerontocrat
+gerontocratic
+gerontogeous
+gerontology
+gerontophilia
+gerontoxon
+Gerres
+gerrhosaurid
+Gerrhosauridae
+Gerridae
+gerrymander
+gerrymanderer
+gers
+gersdorffite
+Gershom
+Gershon
+Gershonite
+gersum
+Gertie
+Gertrude
+gerund
+gerundial
+gerundially
+gerundival
+gerundive
+gerundively
+gerusia
+Gervais
+gervao
+Gervas
+Gervase
+Gerygone
+gerygone
+Geryonia
+geryonid
+Geryonidae
+Geryoniidae
+Ges
+Gesan
+Geshurites
+gesith
+gesithcund
+gesithcundman
+Gesnera
+Gesneraceae
+gesneraceous
+Gesneria
+gesneria
+Gesneriaceae
+gesneriaceous
+Gesnerian
+gesning
+gessamine
+gesso
+gest
+Gestalt
+gestalter
+gestaltist
+gestant
+Gestapo
+gestate
+gestation
+gestational
+gestative
+gestatorial
+gestatorium
+gestatory
+geste
+gested
+gesten
+gestening
+gestic
+gestical
+gesticulacious
+gesticulant
+gesticular
+gesticularious
+gesticulate
+gesticulation
+gesticulative
+gesticulatively
+gesticulator
+gesticulatory
+gestion
+gestning
+gestural
+gesture
+gestureless
+gesturer
+get
+geta
+Getae
+getah
+getaway
+gether
+Gethsemane
+gethsemane
+Gethsemanic
+gethsemanic
+Getic
+getling
+getpenny
+Getsul
+gettable
+getter
+getting
+getup
+Geullah
+Geum
+geum
+gewgaw
+gewgawed
+gewgawish
+gewgawry
+gewgawy
+gey
+geyan
+geyerite
+geyser
+geyseral
+geyseric
+geyserine
+geyserish
+geyserite
+gez
+ghafir
+ghaist
+ghalva
+Ghan
+gharial
+gharnao
+gharry
+Ghassanid
+ghastily
+ghastlily
+ghastliness
+ghastly
+ghat
+ghatti
+ghatwal
+ghatwazi
+ghazi
+ghazism
+Ghaznevid
+Gheber
+ghebeta
+Ghedda
+ghee
+Gheg
+Ghegish
+gheleem
+Ghent
+gherkin
+ghetchoo
+ghetti
+ghetto
+ghettoization
+ghettoize
+Ghibelline
+Ghibellinism
+Ghilzai
+Ghiordes
+ghizite
+ghoom
+ghost
+ghostcraft
+ghostdom
+ghoster
+ghostess
+ghostfish
+ghostflower
+ghosthood
+ghostified
+ghostily
+ghostish
+ghostism
+ghostland
+ghostless
+ghostlet
+ghostlify
+ghostlike
+ghostlily
+ghostliness
+ghostly
+ghostmonger
+ghostology
+ghostship
+ghostweed
+ghostwrite
+ghosty
+ghoul
+ghoulery
+ghoulish
+ghoulishly
+ghoulishness
+ghrush
+ghurry
+Ghuz
+Gi
+Giansar
+giant
+giantesque
+giantess
+gianthood
+giantish
+giantism
+giantize
+giantkind
+giantlike
+giantly
+giantry
+giantship
+Giardia
+giardia
+giardiasis
+giarra
+giarre
+Gib
+gib
+gibaro
+gibbals
+gibbed
+gibber
+Gibberella
+gibbergunyah
+gibberish
+gibberose
+gibberosity
+gibbet
+gibbetwise
+Gibbi
+gibblegabble
+gibblegabbler
+gibbles
+gibbon
+gibbose
+gibbosity
+gibbous
+gibbously
+gibbousness
+gibbsite
+gibbus
+gibby
+gibe
+gibel
+gibelite
+Gibeonite
+giber
+gibing
+gibingly
+gibleh
+giblet
+giblets
+Gibraltar
+Gibson
+gibstaff
+gibus
+gid
+giddap
+giddea
+giddify
+giddily
+giddiness
+giddy
+giddyberry
+giddybrain
+giddyhead
+giddyish
+Gideon
+Gideonite
+gidgee
+gie
+gied
+gien
+Gienah
+gieseckite
+gif
+giffgaff
+Gifola
+gift
+gifted
+giftedly
+giftedness
+giftie
+giftless
+giftling
+giftware
+gig
+gigantean
+gigantesque
+gigantic
+gigantical
+gigantically
+giganticidal
+giganticide
+giganticness
+gigantism
+gigantize
+gigantoblast
+gigantocyte
+gigantolite
+gigantological
+gigantology
+gigantomachy
+Gigantopithecus
+Gigantosaurus
+Gigantostraca
+gigantostracan
+gigantostracous
+Gigartina
+Gigartinaceae
+gigartinaceous
+Gigartinales
+gigback
+gigelira
+gigeria
+gigerium
+gigful
+gigger
+giggish
+giggit
+giggle
+giggledom
+gigglement
+giggler
+gigglesome
+giggling
+gigglingly
+gigglish
+giggly
+Gigi
+giglet
+gigliato
+giglot
+gigman
+gigmaness
+gigmanhood
+gigmania
+gigmanic
+gigmanically
+gigmanism
+gigmanity
+gignate
+gignitive
+gigolo
+gigot
+gigsman
+gigster
+gigtree
+gigunu
+Gil
+Gila
+Gilaki
+Gilbert
+gilbert
+gilbertage
+Gilbertese
+Gilbertian
+Gilbertianism
+gilbertite
+gild
+gildable
+gilded
+gilden
+gilder
+gilding
+Gileadite
+Gileno
+Giles
+gilguy
+Gilia
+gilia
+Giliak
+gilim
+Gill
+gill
+gillaroo
+gillbird
+gilled
+Gillenia
+giller
+Gilles
+gillflirt
+gillhooter
+Gillian
+gillie
+gilliflirt
+gilling
+gilliver
+gillotage
+gillotype
+gillstoup
+gilly
+gillyflower
+gillygaupus
+gilo
+gilpy
+gilravage
+gilravager
+gilse
+gilsonite
+gilt
+giltcup
+gilthead
+gilttail
+gim
+gimbal
+gimbaled
+gimbaljawed
+gimberjawed
+gimble
+gimcrack
+gimcrackery
+gimcrackiness
+gimcracky
+gimel
+Gimirrai
+gimlet
+gimleteyed
+gimlety
+gimmal
+gimmer
+gimmerpet
+gimmick
+gimp
+gimped
+gimper
+gimping
+gin
+ging
+ginger
+gingerade
+gingerberry
+gingerbread
+gingerbready
+gingerin
+gingerleaf
+gingerline
+gingerliness
+gingerly
+gingerness
+gingernut
+gingerol
+gingerous
+gingerroot
+gingersnap
+gingerspice
+gingerwork
+gingerwort
+gingery
+gingham
+ginghamed
+gingili
+gingiva
+gingivae
+gingival
+gingivalgia
+gingivectomy
+gingivitis
+gingivoglossitis
+gingivolabial
+ginglyform
+ginglymoarthrodia
+ginglymoarthrodial
+Ginglymodi
+ginglymodian
+ginglymoid
+ginglymoidal
+Ginglymostoma
+ginglymostomoid
+ginglymus
+ginglyni
+ginhouse
+gink
+Ginkgo
+ginkgo
+Ginkgoaceae
+ginkgoaceous
+Ginkgoales
+ginned
+ginner
+ginners
+ginnery
+ginney
+ginning
+ginnle
+Ginny
+ginny
+ginseng
+ginward
+gio
+giobertite
+giornata
+giornatate
+Giottesque
+Giovanni
+gip
+gipon
+gipper
+Gippy
+gipser
+gipsire
+gipsyweed
+Giraffa
+giraffe
+giraffesque
+Giraffidae
+giraffine
+giraffoid
+girandola
+girandole
+girasol
+girasole
+girba
+gird
+girder
+girderage
+girderless
+girding
+girdingly
+girdle
+girdlecake
+girdlelike
+girdler
+girdlestead
+girdling
+girdlingly
+Girella
+Girellidae
+Girgashite
+Girgasite
+girl
+girleen
+girlery
+girlfully
+girlhood
+girlie
+girliness
+girling
+girlish
+girlishly
+girlishness
+girlism
+girllike
+girly
+girn
+girny
+giro
+giroflore
+Girondin
+Girondism
+Girondist
+girouette
+girouettism
+girr
+girse
+girsh
+girsle
+girt
+girth
+girtline
+gisarme
+gish
+gisla
+gisler
+gismondine
+gismondite
+gist
+git
+gitaligenin
+gitalin
+Gitanemuck
+gith
+Gitksan
+gitonin
+gitoxigenin
+gitoxin
+gittern
+Gittite
+gittith
+Giuseppe
+giustina
+give
+giveable
+giveaway
+given
+givenness
+giver
+givey
+giving
+gizz
+gizzard
+gizzen
+gizzern
+glabella
+glabellae
+glabellar
+glabellous
+glabellum
+glabrate
+glabrescent
+glabrous
+glace
+glaceed
+glaceing
+glaciable
+glacial
+glacialism
+glacialist
+glacialize
+glacially
+glaciaria
+glaciarium
+glaciate
+glaciation
+glacier
+glaciered
+glacieret
+glacierist
+glacification
+glacioaqueous
+glaciolacustrine
+glaciological
+glaciologist
+glaciology
+glaciomarine
+glaciometer
+glacionatant
+glacis
+glack
+glad
+gladden
+gladdener
+gladdon
+gladdy
+glade
+gladelike
+gladeye
+gladful
+gladfully
+gladfulness
+gladhearted
+gladiate
+gladiator
+gladiatorial
+gladiatorism
+gladiatorship
+gladiatrix
+gladify
+gladii
+gladiola
+gladiolar
+gladiole
+gladioli
+gladiolus
+gladius
+gladkaite
+gladless
+gladly
+gladness
+gladsome
+gladsomely
+gladsomeness
+Gladstone
+Gladstonian
+Gladstonianism
+glady
+Gladys
+glaga
+Glagol
+Glagolic
+Glagolitic
+Glagolitsa
+glaieul
+glaik
+glaiket
+glaiketness
+glair
+glaireous
+glairiness
+glairy
+glaister
+glaive
+glaived
+glaked
+glaky
+glam
+glamberry
+glamorize
+glamorous
+glamorously
+glamour
+glamoury
+glance
+glancer
+glancing
+glancingly
+gland
+glandaceous
+glandarious
+glandered
+glanderous
+glanders
+glandes
+glandiferous
+glandiform
+glandless
+glandlike
+glandular
+glandularly
+glandule
+glanduliferous
+glanduliform
+glanduligerous
+glandulose
+glandulosity
+glandulous
+glandulousness
+Glaniostomi
+glans
+glar
+glare
+glareless
+Glareola
+glareole
+Glareolidae
+glareous
+glareproof
+glareworm
+glarily
+glariness
+glaring
+glaringly
+glaringness
+glarry
+glary
+Glaserian
+glaserite
+glashan
+glass
+glassen
+glasser
+glasses
+glassfish
+glassful
+glasshouse
+glassie
+glassily
+glassine
+glassiness
+Glassite
+glassless
+glasslike
+glassmaker
+glassmaking
+glassman
+glassophone
+glassrope
+glassteel
+glassware
+glassweed
+glasswork
+glassworker
+glassworking
+glassworks
+glasswort
+glassy
+Glaswegian
+Glathsheim
+Glathsheimr
+glauberite
+glaucescence
+glaucescent
+Glaucidium
+glaucin
+glaucine
+Glaucionetta
+Glaucium
+glaucochroite
+glaucodot
+glaucolite
+glaucoma
+glaucomatous
+Glaucomys
+Glauconia
+glauconiferous
+Glauconiidae
+glauconite
+glauconitic
+glauconitization
+glaucophane
+glaucophanite
+glaucophanization
+glaucophanize
+glaucophyllous
+Glaucopis
+glaucosuria
+glaucous
+glaucously
+Glauke
+glaum
+glaumrie
+glaur
+glaury
+Glaux
+glaver
+glaze
+glazed
+glazen
+glazer
+glazework
+glazier
+glaziery
+glazily
+glaziness
+glazing
+glazy
+gleam
+gleamily
+gleaminess
+gleaming
+gleamingly
+gleamless
+gleamy
+glean
+gleanable
+gleaner
+gleaning
+gleary
+gleba
+glebal
+glebe
+glebeless
+glebous
+Glecoma
+glede
+Gleditsia
+gledy
+glee
+gleed
+gleeful
+gleefully
+gleefulness
+gleeishly
+gleek
+gleemaiden
+gleeman
+gleesome
+gleesomely
+gleesomeness
+gleet
+gleety
+gleewoman
+gleg
+glegly
+glegness
+Glen
+glen
+Glengarry
+Glenn
+glenohumeral
+glenoid
+glenoidal
+glent
+glessite
+gleyde
+glia
+gliadin
+glial
+glib
+glibbery
+glibly
+glibness
+glidder
+gliddery
+glide
+glideless
+glideness
+glider
+gliderport
+glidewort
+gliding
+glidingly
+gliff
+gliffing
+glime
+glimmer
+glimmering
+glimmeringly
+glimmerite
+glimmerous
+glimmery
+glimpse
+glimpser
+glink
+glint
+glioma
+gliomatous
+gliosa
+gliosis
+Glires
+Gliridae
+gliriform
+Gliriformia
+glirine
+Glis
+glisk
+glisky
+glissade
+glissader
+glissando
+glissette
+glisten
+glistening
+glisteningly
+glister
+glisteringly
+Glitnir
+glitter
+glitterance
+glittering
+glitteringly
+glittersome
+glittery
+gloam
+gloaming
+gloat
+gloater
+gloating
+gloatingly
+global
+globally
+globate
+globated
+globe
+globed
+globefish
+globeflower
+globeholder
+globelet
+Globicephala
+globiferous
+Globigerina
+globigerine
+Globigerinidae
+globin
+Globiocephalus
+globoid
+globose
+globosely
+globoseness
+globosite
+globosity
+globosphaerite
+globous
+globously
+globousness
+globular
+Globularia
+Globulariaceae
+globulariaceous
+globularity
+globularly
+globularness
+globule
+globulet
+globulicidal
+globulicide
+globuliferous
+globuliform
+globulimeter
+globulin
+globulinuria
+globulite
+globulitic
+globuloid
+globulolysis
+globulose
+globulous
+globulousness
+globulysis
+globy
+glochid
+glochideous
+glochidia
+glochidial
+glochidian
+glochidiate
+glochidium
+glochis
+glockenspiel
+gloea
+gloeal
+Gloeocapsa
+gloeocapsoid
+gloeosporiose
+Gloeosporium
+Gloiopeltis
+Gloiosiphonia
+Gloiosiphoniaceae
+glom
+glome
+glomerate
+glomeration
+Glomerella
+glomeroporphyritic
+glomerular
+glomerulate
+glomerule
+glomerulitis
+glomerulonephritis
+glomerulose
+glomerulus
+glommox
+glomus
+glonoin
+glonoine
+gloom
+gloomful
+gloomfully
+gloomily
+gloominess
+glooming
+gloomingly
+gloomless
+gloomth
+gloomy
+glop
+gloppen
+glor
+glore
+Gloria
+Gloriana
+gloriation
+gloriette
+glorifiable
+glorification
+glorifier
+glorify
+gloriole
+Gloriosa
+gloriosity
+glorious
+gloriously
+gloriousness
+glory
+gloryful
+glorying
+gloryingly
+gloryless
+gloss
+glossa
+glossagra
+glossal
+glossalgia
+glossalgy
+glossanthrax
+glossarial
+glossarially
+glossarian
+glossarist
+glossarize
+glossary
+Glossata
+glossate
+glossator
+glossatorial
+glossectomy
+glossed
+glosser
+glossic
+glossily
+Glossina
+glossiness
+glossing
+glossingly
+Glossiphonia
+Glossiphonidae
+glossist
+glossitic
+glossitis
+glossless
+glossmeter
+glossocarcinoma
+glossocele
+glossocoma
+glossocomon
+glossodynamometer
+glossodynia
+glossoepiglottic
+glossoepiglottidean
+glossograph
+glossographer
+glossographical
+glossography
+glossohyal
+glossoid
+glossokinesthetic
+glossolabial
+glossolabiolaryngeal
+glossolabiopharyngeal
+glossolalia
+glossolalist
+glossolaly
+glossolaryngeal
+glossological
+glossologist
+glossology
+glossolysis
+glossoncus
+glossopalatine
+glossopalatinus
+glossopathy
+glossopetra
+Glossophaga
+glossophagine
+glossopharyngeal
+glossopharyngeus
+Glossophora
+glossophorous
+glossophytia
+glossoplasty
+glossoplegia
+glossopode
+glossopodium
+Glossopteris
+glossoptosis
+glossopyrosis
+glossorrhaphy
+glossoscopia
+glossoscopy
+glossospasm
+glossosteresis
+Glossotherium
+glossotomy
+glossotype
+glossy
+glost
+glottal
+glottalite
+glottalize
+glottic
+glottid
+glottidean
+glottis
+glottiscope
+glottogonic
+glottogonist
+glottogony
+glottologic
+glottological
+glottologist
+glottology
+Gloucester
+glout
+glove
+gloveless
+glovelike
+glovemaker
+glovemaking
+glover
+gloveress
+glovey
+gloving
+glow
+glower
+glowerer
+glowering
+gloweringly
+glowfly
+glowing
+glowingly
+glowworm
+Gloxinia
+gloy
+gloze
+glozing
+glozingly
+glub
+glucase
+glucemia
+glucid
+glucide
+glucidic
+glucina
+glucine
+glucinic
+glucinium
+glucinum
+gluck
+glucofrangulin
+glucokinin
+glucolipid
+glucolipide
+glucolipin
+glucolipine
+glucolysis
+glucosaemia
+glucosamine
+glucosan
+glucosane
+glucosazone
+glucose
+glucosemia
+glucosic
+glucosid
+glucosidal
+glucosidase
+glucoside
+glucosidic
+glucosidically
+glucosin
+glucosine
+glucosone
+glucosuria
+glucuronic
+glue
+glued
+gluemaker
+gluemaking
+gluepot
+gluer
+gluey
+glueyness
+glug
+gluish
+gluishness
+glum
+gluma
+Glumaceae
+glumaceous
+glumal
+Glumales
+glume
+glumiferous
+Glumiflorae
+glumly
+glummy
+glumness
+glumose
+glumosity
+glump
+glumpily
+glumpiness
+glumpish
+glumpy
+glunch
+Gluneamie
+glusid
+gluside
+glut
+glutamic
+glutamine
+glutaminic
+glutaric
+glutathione
+glutch
+gluteal
+glutelin
+gluten
+glutenin
+glutenous
+gluteofemoral
+gluteoinguinal
+gluteoperineal
+gluteus
+glutin
+glutinate
+glutination
+glutinative
+glutinize
+glutinose
+glutinosity
+glutinous
+glutinously
+glutinousness
+glutition
+glutoid
+glutose
+glutter
+gluttery
+glutting
+gluttingly
+glutton
+gluttoness
+gluttonish
+gluttonism
+gluttonize
+gluttonous
+gluttonously
+gluttonousness
+gluttony
+glyceraldehyde
+glycerate
+Glyceria
+glyceric
+glyceride
+glycerin
+glycerinate
+glycerination
+glycerine
+glycerinize
+glycerite
+glycerize
+glycerizin
+glycerizine
+glycerogel
+glycerogelatin
+glycerol
+glycerolate
+glycerole
+glycerolize
+glycerophosphate
+glycerophosphoric
+glycerose
+glyceroxide
+glyceryl
+glycid
+glycide
+glycidic
+glycidol
+Glycine
+glycine
+glycinin
+glycocholate
+glycocholic
+glycocin
+glycocoll
+glycogelatin
+glycogen
+glycogenesis
+glycogenetic
+glycogenic
+glycogenize
+glycogenolysis
+glycogenous
+glycogeny
+glycohaemia
+glycohemia
+glycol
+glycolaldehyde
+glycolate
+glycolic
+glycolide
+glycolipid
+glycolipide
+glycolipin
+glycolipine
+glycoluric
+glycoluril
+glycolyl
+glycolylurea
+glycolysis
+glycolytic
+glycolytically
+Glyconian
+Glyconic
+glyconic
+glyconin
+glycoproteid
+glycoprotein
+glycosaemia
+glycose
+glycosemia
+glycosin
+glycosine
+glycosuria
+glycosuric
+glycuresis
+glycuronic
+glycyl
+glycyphyllin
+Glycyrrhiza
+glycyrrhizin
+Glynn
+glyoxal
+glyoxalase
+glyoxalic
+glyoxalin
+glyoxaline
+glyoxim
+glyoxime
+glyoxyl
+glyoxylic
+glyph
+glyphic
+glyphograph
+glyphographer
+glyphographic
+glyphography
+glyptic
+glyptical
+glyptician
+Glyptodon
+glyptodont
+Glyptodontidae
+glyptodontoid
+glyptograph
+glyptographer
+glyptographic
+glyptography
+glyptolith
+glyptological
+glyptologist
+glyptology
+glyptotheca
+Glyptotherium
+glyster
+Gmelina
+gmelinite
+gnabble
+Gnaeus
+gnaphalioid
+Gnaphalium
+gnar
+gnarl
+gnarled
+gnarliness
+gnarly
+gnash
+gnashingly
+gnat
+gnatcatcher
+gnatflower
+gnathal
+gnathalgia
+gnathic
+gnathidium
+gnathion
+gnathism
+gnathite
+gnathitis
+Gnatho
+gnathobase
+gnathobasic
+Gnathobdellae
+Gnathobdellida
+gnathometer
+gnathonic
+gnathonical
+gnathonically
+gnathonism
+gnathonize
+gnathophorous
+gnathoplasty
+gnathopod
+Gnathopoda
+gnathopodite
+gnathopodous
+gnathostegite
+Gnathostoma
+Gnathostomata
+gnathostomatous
+gnathostome
+Gnathostomi
+gnathostomous
+gnathotheca
+gnatling
+gnatproof
+gnatsnap
+gnatsnapper
+gnatter
+gnatty
+gnatworm
+gnaw
+gnawable
+gnawer
+gnawing
+gnawingly
+gnawn
+gneiss
+gneissic
+gneissitic
+gneissoid
+gneissose
+gneissy
+Gnetaceae
+gnetaceous
+Gnetales
+Gnetum
+gnocchetti
+gnome
+gnomed
+gnomesque
+gnomic
+gnomical
+gnomically
+gnomide
+gnomish
+gnomist
+gnomologic
+gnomological
+gnomologist
+gnomology
+gnomon
+Gnomonia
+Gnomoniaceae
+gnomonic
+gnomonical
+gnomonics
+gnomonological
+gnomonologically
+gnomonology
+gnosiological
+gnosiology
+gnosis
+Gnostic
+gnostic
+gnostical
+gnostically
+Gnosticism
+gnosticity
+gnosticize
+gnosticizer
+gnostology
+gnu
+go
+goa
+goad
+goadsman
+goadster
+goaf
+Goajiro
+goal
+Goala
+goalage
+goalee
+goalie
+goalkeeper
+goalkeeping
+goalless
+goalmouth
+Goan
+Goanese
+goanna
+Goasila
+goat
+goatbeard
+goatbrush
+goatbush
+goatee
+goateed
+goatfish
+goatherd
+goatherdess
+goatish
+goatishly
+goatishness
+goatland
+goatlike
+goatling
+goatly
+goatroot
+goatsbane
+goatsbeard
+goatsfoot
+goatskin
+goatstone
+goatsucker
+goatweed
+goaty
+goave
+gob
+goback
+goban
+gobang
+gobbe
+gobber
+gobbet
+gobbin
+gobbing
+gobble
+gobbledygook
+gobbler
+gobby
+Gobelin
+gobelin
+gobernadora
+gobi
+Gobia
+Gobian
+gobiesocid
+Gobiesocidae
+gobiesociform
+Gobiesox
+gobiid
+Gobiidae
+gobiiform
+Gobiiformes
+Gobinism
+Gobinist
+Gobio
+gobioid
+Gobioidea
+Gobioidei
+goblet
+gobleted
+gobletful
+goblin
+gobline
+goblinesque
+goblinish
+goblinism
+goblinize
+goblinry
+gobmouthed
+gobo
+gobonated
+gobony
+gobstick
+goburra
+goby
+gobylike
+gocart
+Goclenian
+God
+god
+godchild
+Goddam
+Goddard
+goddard
+goddaughter
+godded
+goddess
+goddesshood
+goddessship
+goddikin
+goddize
+gode
+godet
+Godetia
+godfather
+godfatherhood
+godfathership
+Godforsaken
+Godfrey
+Godful
+godhead
+godhood
+Godiva
+godkin
+godless
+godlessly
+godlessness
+godlet
+godlike
+godlikeness
+godlily
+godliness
+godling
+godly
+godmaker
+godmaking
+godmamma
+godmother
+godmotherhood
+godmothership
+godown
+godpapa
+godparent
+Godsake
+godsend
+godship
+godson
+godsonship
+Godspeed
+Godward
+Godwin
+Godwinian
+godwit
+goeduck
+goel
+goelism
+Goemagot
+Goemot
+goer
+goes
+Goetae
+Goethian
+goetia
+goetic
+goetical
+goety
+goff
+goffer
+goffered
+gofferer
+goffering
+goffle
+gog
+gogga
+goggan
+goggle
+goggled
+goggler
+gogglers
+goggly
+goglet
+Gogo
+gogo
+Gohila
+goi
+goiabada
+Goidel
+Goidelic
+going
+goitcho
+goiter
+goitered
+goitral
+goitrogen
+goitrogenic
+goitrous
+Gokuraku
+gol
+gola
+golach
+goladar
+golandaas
+golandause
+Golaseccan
+Golconda
+Gold
+gold
+goldbeater
+goldbeating
+Goldbird
+goldbrick
+goldbricker
+goldbug
+goldcrest
+goldcup
+golden
+goldenback
+goldeneye
+goldenfleece
+goldenhair
+goldenknop
+goldenlocks
+goldenly
+Goldenmouth
+goldenmouthed
+goldenness
+goldenpert
+goldenrod
+goldenseal
+goldentop
+goldenwing
+golder
+goldfielder
+goldfinch
+goldfinny
+goldfish
+goldflower
+goldhammer
+goldhead
+Goldi
+Goldic
+goldie
+goldilocks
+goldin
+goldish
+goldless
+goldlike
+Goldonian
+goldseed
+goldsinny
+goldsmith
+goldsmithery
+goldsmithing
+goldspink
+goldstone
+goldtail
+goldtit
+goldwater
+goldweed
+goldwork
+goldworker
+Goldy
+goldy
+golee
+golem
+golf
+golfdom
+golfer
+Golgi
+Golgotha
+goli
+goliard
+goliardery
+goliardic
+Goliath
+goliath
+goliathize
+golkakra
+Goll
+golland
+gollar
+golliwogg
+golly
+Golo
+goloe
+golpe
+Goma
+gomari
+Gomarian
+Gomarist
+Gomarite
+gomart
+gomashta
+gomavel
+gombay
+gombeen
+gombeenism
+gombroon
+Gomeisa
+gomer
+gomeral
+gomlah
+gommelin
+Gomontia
+Gomorrhean
+Gomphocarpus
+gomphodont
+Gompholobium
+gomphosis
+Gomphrena
+gomuti
+gon
+Gona
+gonad
+gonadal
+gonadial
+gonadic
+gonadotropic
+gonadotropin
+gonaduct
+gonagra
+gonakie
+gonal
+gonalgia
+gonangial
+gonangium
+gonapod
+gonapophysal
+gonapophysial
+gonapophysis
+gonarthritis
+Gond
+gondang
+Gondi
+gondite
+gondola
+gondolet
+gondolier
+gone
+goneness
+goneoclinic
+gonepoiesis
+gonepoietic
+goner
+Goneril
+gonesome
+gonfalcon
+gonfalonier
+gonfalonierate
+gonfaloniership
+gonfanon
+gong
+gongman
+Gongoresque
+Gongorism
+Gongorist
+gongoristic
+gonia
+goniac
+gonial
+goniale
+Goniaster
+goniatite
+Goniatites
+goniatitic
+goniatitid
+Goniatitidae
+goniatitoid
+gonid
+gonidangium
+gonidia
+gonidial
+gonidic
+gonidiferous
+gonidiogenous
+gonidioid
+gonidiophore
+gonidiose
+gonidiospore
+gonidium
+gonimic
+gonimium
+gonimolobe
+gonimous
+goniocraniometry
+Goniodoridae
+Goniodorididae
+Goniodoris
+goniometer
+goniometric
+goniometrical
+goniometrically
+goniometry
+gonion
+Goniopholidae
+Goniopholis
+goniostat
+goniotropous
+gonitis
+Gonium
+gonium
+gonnardite
+gonne
+gonoblast
+gonoblastic
+gonoblastidial
+gonoblastidium
+gonocalycine
+gonocalyx
+gonocheme
+gonochorism
+gonochorismal
+gonochorismus
+gonochoristic
+gonococcal
+gonococcic
+gonococcoid
+gonococcus
+gonocoel
+gonocyte
+gonoecium
+Gonolobus
+gonomere
+gonomery
+gonophore
+gonophoric
+gonophorous
+gonoplasm
+gonopoietic
+gonorrhea
+gonorrheal
+gonorrheic
+gonosomal
+gonosome
+gonosphere
+gonostyle
+gonotheca
+gonothecal
+gonotokont
+gonotome
+gonotype
+gonozooid
+gony
+gonyalgia
+gonydeal
+gonydial
+gonyocele
+gonyoncus
+gonys
+Gonystylaceae
+gonystylaceous
+Gonystylus
+gonytheca
+Gonzalo
+goo
+goober
+good
+Goodenia
+Goodeniaceae
+goodeniaceous
+Goodenoviaceae
+goodhearted
+goodheartedly
+goodheartedness
+gooding
+goodish
+goodishness
+goodlihead
+goodlike
+goodliness
+goodly
+goodman
+goodmanship
+goodness
+goods
+goodsome
+goodwife
+goodwill
+goodwillit
+goodwilly
+goody
+goodyear
+Goodyera
+goodyish
+goodyism
+goodyness
+goodyship
+goof
+goofer
+goofily
+goofiness
+goofy
+googly
+googol
+googolplex
+googul
+gook
+gool
+goolah
+gools
+gooma
+goon
+goondie
+goonie
+Goop
+goosander
+goose
+goosebeak
+gooseberry
+goosebill
+goosebird
+goosebone
+gooseboy
+goosecap
+goosefish
+gooseflower
+goosefoot
+goosegirl
+goosegog
+gooseherd
+goosehouse
+gooselike
+goosemouth
+gooseneck
+goosenecked
+gooserumped
+goosery
+goosetongue
+gooseweed
+goosewing
+goosewinged
+goosish
+goosishly
+goosishness
+goosy
+gopher
+gopherberry
+gopherroot
+gopherwood
+gopura
+Gor
+gor
+gora
+goracco
+goral
+goran
+gorb
+gorbal
+gorbellied
+gorbelly
+gorbet
+gorble
+gorblimy
+gorce
+gorcock
+gorcrow
+Gordiacea
+gordiacean
+gordiaceous
+Gordian
+Gordiidae
+Gordioidea
+Gordius
+gordolobo
+Gordon
+Gordonia
+gordunite
+Gordyaean
+gore
+gorer
+gorevan
+gorfly
+gorge
+gorgeable
+gorged
+gorgedly
+gorgelet
+gorgeous
+gorgeously
+gorgeousness
+gorger
+gorgerin
+gorget
+gorgeted
+gorglin
+Gorgon
+Gorgonacea
+gorgonacean
+gorgonaceous
+gorgonesque
+gorgoneum
+Gorgonia
+Gorgoniacea
+gorgoniacean
+gorgoniaceous
+Gorgonian
+gorgonian
+gorgonin
+gorgonize
+gorgonlike
+Gorgonzola
+Gorgosaurus
+gorhen
+goric
+gorilla
+gorillaship
+gorillian
+gorilline
+gorilloid
+gorily
+goriness
+goring
+Gorkhali
+Gorkiesque
+gorlin
+gorlois
+gormandize
+gormandizer
+gormaw
+gormed
+gorra
+gorraf
+gorry
+gorse
+gorsebird
+gorsechat
+gorsedd
+gorsehatch
+gorsy
+Gortonian
+Gortonite
+gory
+gos
+gosain
+goschen
+gosh
+goshawk
+Goshen
+goshenite
+goslarite
+goslet
+gosling
+gosmore
+gospel
+gospeler
+gospelist
+gospelize
+gospellike
+gospelly
+gospelmonger
+gospelwards
+Gosplan
+gospodar
+gosport
+gossamer
+gossamered
+gossamery
+gossampine
+gossan
+gossaniferous
+gossard
+gossip
+gossipdom
+gossipee
+gossiper
+gossiphood
+gossipiness
+gossiping
+gossipingly
+gossipmonger
+gossipred
+gossipry
+gossipy
+gossoon
+gossy
+gossypine
+Gossypium
+gossypol
+gossypose
+got
+gotch
+gote
+Goth
+Gotha
+Gotham
+Gothamite
+Gothic
+Gothically
+Gothicism
+Gothicist
+Gothicity
+Gothicize
+Gothicizer
+Gothicness
+Gothish
+Gothism
+gothite
+Gothlander
+Gothonic
+Gotiglacial
+gotra
+gotraja
+gotten
+Gottfried
+Gottlieb
+gouaree
+Gouda
+Goudy
+gouge
+gouger
+goujon
+goulash
+goumi
+goup
+Goura
+gourami
+gourd
+gourde
+gourdful
+gourdhead
+gourdiness
+gourdlike
+gourdworm
+gourdy
+Gourinae
+gourmand
+gourmander
+gourmanderie
+gourmandism
+gourmet
+gourmetism
+gourounut
+goustrous
+gousty
+gout
+goutify
+goutily
+goutiness
+goutish
+goutte
+goutweed
+goutwort
+gouty
+gove
+govern
+governability
+governable
+governableness
+governably
+governail
+governance
+governess
+governessdom
+governesshood
+governessy
+governing
+governingly
+government
+governmental
+governmentalism
+governmentalist
+governmentalize
+governmentally
+governmentish
+governor
+governorate
+governorship
+gowan
+gowdnie
+gowf
+gowfer
+gowiddie
+gowk
+gowked
+gowkedly
+gowkedness
+gowkit
+gowl
+gown
+gownlet
+gownsman
+gowpen
+goy
+Goyana
+goyazite
+Goyetian
+goyim
+goyin
+goyle
+gozell
+gozzard
+gra
+Graafian
+grab
+grabbable
+grabber
+grabble
+grabbler
+grabbling
+grabbots
+graben
+grabhook
+grabouche
+Grace
+grace
+graceful
+gracefully
+gracefulness
+graceless
+gracelessly
+gracelessness
+gracelike
+gracer
+Gracilaria
+gracilariid
+Gracilariidae
+gracile
+gracileness
+gracilescent
+gracilis
+gracility
+graciosity
+gracioso
+gracious
+graciously
+graciousness
+grackle
+Graculus
+grad
+gradable
+gradal
+gradate
+gradation
+gradational
+gradationally
+gradationately
+gradative
+gradatively
+gradatory
+graddan
+grade
+graded
+gradefinder
+gradely
+grader
+Gradgrind
+gradgrind
+Gradgrindian
+Gradgrindish
+Gradgrindism
+gradient
+gradienter
+Gradientia
+gradin
+gradine
+grading
+gradiometer
+gradiometric
+gradometer
+gradual
+gradualism
+gradualist
+gradualistic
+graduality
+gradually
+gradualness
+graduand
+graduate
+graduated
+graduateship
+graduatical
+graduating
+graduation
+graduator
+gradus
+Graeae
+Graeculus
+Graeme
+graff
+graffage
+graffer
+Graffias
+graffito
+grafship
+graft
+graftage
+graftdom
+grafted
+grafter
+grafting
+graftonite
+graftproof
+Graham
+graham
+grahamite
+Graian
+grail
+grailer
+grailing
+grain
+grainage
+grained
+grainedness
+grainer
+grainering
+grainery
+grainfield
+graininess
+graining
+grainland
+grainless
+grainman
+grainsick
+grainsickness
+grainsman
+grainways
+grainy
+graip
+graisse
+graith
+Grallae
+Grallatores
+grallatorial
+grallatory
+grallic
+Grallina
+gralline
+gralloch
+gram
+grama
+gramarye
+gramashes
+grame
+gramenite
+gramicidin
+Graminaceae
+graminaceous
+Gramineae
+gramineal
+gramineous
+gramineousness
+graminicolous
+graminiferous
+graminifolious
+graminiform
+graminin
+graminivore
+graminivorous
+graminological
+graminology
+graminous
+grammalogue
+grammar
+grammarian
+grammarianism
+grammarless
+grammatic
+grammatical
+grammatically
+grammaticalness
+grammaticaster
+grammaticism
+grammaticize
+grammatics
+grammatist
+grammatistical
+grammatite
+grammatolator
+grammatolatry
+Grammatophyllum
+gramme
+Grammontine
+gramoches
+Gramophone
+gramophone
+gramophonic
+gramophonical
+gramophonically
+gramophonist
+gramp
+grampa
+grampus
+granada
+granadilla
+granadillo
+Granadine
+granage
+granary
+granate
+granatum
+granch
+grand
+grandam
+grandame
+grandaunt
+grandchild
+granddad
+granddaddy
+granddaughter
+granddaughterly
+grandee
+grandeeism
+grandeeship
+grandesque
+grandeur
+grandeval
+grandfather
+grandfatherhood
+grandfatherish
+grandfatherless
+grandfatherly
+grandfathership
+grandfer
+grandfilial
+grandiloquence
+grandiloquent
+grandiloquently
+grandiloquous
+grandiose
+grandiosely
+grandiosity
+grandisonant
+Grandisonian
+Grandisonianism
+grandisonous
+grandly
+grandma
+grandmaternal
+Grandmontine
+grandmother
+grandmotherhood
+grandmotherism
+grandmotherliness
+grandmotherly
+grandnephew
+grandness
+grandniece
+grandpa
+grandparent
+grandparentage
+grandparental
+grandpaternal
+grandsire
+grandson
+grandsonship
+grandstand
+grandstander
+granduncle
+grane
+grange
+granger
+grangerism
+grangerite
+grangerization
+grangerize
+grangerizer
+Grangousier
+graniform
+granilla
+granite
+granitelike
+graniteware
+granitic
+granitical
+graniticoline
+granitiferous
+granitification
+granitiform
+granitite
+granitization
+granitize
+granitoid
+granivore
+granivorous
+granjeno
+grank
+grannom
+granny
+grannybush
+grano
+granoblastic
+granodiorite
+granogabbro
+granolite
+granolith
+granolithic
+granomerite
+granophyre
+granophyric
+granose
+granospherite
+Grant
+grant
+grantable
+grantedly
+grantee
+granter
+Granth
+Grantha
+Grantia
+Grantiidae
+grantor
+granula
+granular
+granularity
+granularly
+granulary
+granulate
+granulated
+granulater
+granulation
+granulative
+granulator
+granule
+granulet
+granuliferous
+granuliform
+granulite
+granulitic
+granulitis
+granulitization
+granulitize
+granulize
+granuloadipose
+granulocyte
+granuloma
+granulomatous
+granulometric
+granulosa
+granulose
+granulous
+Granville
+granza
+granzita
+grape
+graped
+grapeflower
+grapefruit
+grapeful
+grapeless
+grapelet
+grapelike
+grapenuts
+graperoot
+grapery
+grapeshot
+grapeskin
+grapestalk
+grapestone
+grapevine
+grapewise
+grapewort
+graph
+graphalloy
+graphic
+graphical
+graphically
+graphicalness
+graphicly
+graphicness
+graphics
+Graphidiaceae
+Graphiola
+graphiological
+graphiologist
+graphiology
+Graphis
+graphite
+graphiter
+graphitic
+graphitization
+graphitize
+graphitoid
+graphitoidal
+Graphium
+graphologic
+graphological
+graphologist
+graphology
+graphomania
+graphomaniac
+graphometer
+graphometric
+graphometrical
+graphometry
+graphomotor
+Graphophone
+graphophone
+graphophonic
+graphorrhea
+graphoscope
+graphospasm
+graphostatic
+graphostatical
+graphostatics
+graphotype
+graphotypic
+graphy
+graping
+grapnel
+grappa
+grapple
+grappler
+grappling
+Grapsidae
+grapsoid
+Grapsus
+Grapta
+graptolite
+Graptolitha
+Graptolithida
+Graptolithina
+graptolitic
+Graptolitoidea
+Graptoloidea
+graptomancy
+grapy
+grasp
+graspable
+grasper
+grasping
+graspingly
+graspingness
+graspless
+grass
+grassant
+grassation
+grassbird
+grasschat
+grasscut
+grasscutter
+grassed
+grasser
+grasset
+grassflat
+grassflower
+grasshop
+grasshopper
+grasshopperdom
+grasshopperish
+grasshouse
+grassiness
+grassing
+grassland
+grassless
+grasslike
+grassman
+grassnut
+grassplot
+grassquit
+grasswards
+grassweed
+grasswidowhood
+grasswork
+grassworm
+grassy
+grat
+grate
+grateful
+gratefully
+gratefulness
+grateless
+grateman
+grater
+gratewise
+grather
+Gratia
+Gratiano
+graticulate
+graticulation
+graticule
+gratification
+gratified
+gratifiedly
+gratifier
+gratify
+gratifying
+gratifyingly
+gratility
+gratillity
+gratinate
+grating
+Gratiola
+gratiolin
+gratiosolin
+gratis
+gratitude
+gratten
+grattoir
+gratuitant
+gratuitous
+gratuitously
+gratuitousness
+gratuity
+gratulant
+gratulate
+gratulation
+gratulatorily
+gratulatory
+graupel
+gravamen
+gravamina
+grave
+graveclod
+gravecloth
+graveclothes
+graved
+gravedigger
+gravegarth
+gravel
+graveless
+gravelike
+graveling
+gravelish
+gravelliness
+gravelly
+gravelroot
+gravelstone
+gravelweed
+gravely
+gravemaker
+gravemaking
+graveman
+gravemaster
+graven
+graveness
+Gravenstein
+graveolence
+graveolency
+graveolent
+graver
+Graves
+graveship
+graveside
+gravestead
+gravestone
+graveward
+gravewards
+graveyard
+gravic
+gravicembalo
+gravid
+gravidity
+gravidly
+gravidness
+Gravigrada
+gravigrade
+gravimeter
+gravimetric
+gravimetrical
+gravimetrically
+gravimetry
+graving
+gravitate
+gravitater
+gravitation
+gravitational
+gravitationally
+gravitative
+gravitometer
+gravity
+gravure
+gravy
+grawls
+gray
+grayback
+graybeard
+graycoat
+grayfish
+grayfly
+grayhead
+grayish
+graylag
+grayling
+grayly
+graymalkin
+graymill
+grayness
+graypate
+graywacke
+grayware
+graywether
+grazable
+graze
+grazeable
+grazer
+grazier
+grazierdom
+graziery
+grazing
+grazingly
+grease
+greasebush
+greasehorn
+greaseless
+greaselessness
+greaseproof
+greaseproofness
+greaser
+greasewood
+greasily
+greasiness
+greasy
+great
+greatcoat
+greatcoated
+greaten
+greater
+greathead
+greatheart
+greathearted
+greatheartedness
+greatish
+greatly
+greatmouthed
+greatness
+greave
+greaved
+greaves
+grebe
+Grebo
+grece
+Grecian
+Grecianize
+Grecism
+Grecize
+Grecomania
+Grecomaniac
+Grecophil
+gree
+greed
+greedily
+greediness
+greedless
+greedsome
+greedy
+greedygut
+greedyguts
+Greek
+Greekdom
+Greekery
+Greekess
+Greekish
+Greekism
+Greekist
+Greekize
+Greekless
+Greekling
+green
+greenable
+greenage
+greenalite
+greenback
+Greenbacker
+Greenbackism
+greenbark
+greenbone
+greenbrier
+Greencloth
+greencoat
+greener
+greenery
+greeney
+greenfinch
+greenfish
+greengage
+greengill
+greengrocer
+greengrocery
+greenhead
+greenheaded
+greenheart
+greenhearted
+greenhew
+greenhide
+greenhood
+greenhorn
+greenhornism
+greenhouse
+greening
+greenish
+greenishness
+greenkeeper
+greenkeeping
+Greenland
+Greenlander
+Greenlandic
+Greenlandish
+greenlandite
+Greenlandman
+greenleek
+greenless
+greenlet
+greenling
+greenly
+greenness
+greenockite
+greenovite
+greenroom
+greensand
+greensauce
+greenshank
+greensick
+greensickness
+greenside
+greenstone
+greenstuff
+greensward
+greenswarded
+greentail
+greenth
+greenuk
+greenweed
+Greenwich
+greenwing
+greenwithe
+greenwood
+greenwort
+greeny
+greenyard
+greet
+greeter
+greeting
+greetingless
+greetingly
+greffier
+greffotome
+Greg
+gregal
+gregale
+gregaloid
+gregarian
+gregarianism
+Gregarina
+Gregarinae
+Gregarinaria
+gregarine
+Gregarinida
+gregarinidal
+gregariniform
+Gregarinina
+Gregarinoidea
+gregarinosis
+gregarinous
+gregarious
+gregariously
+gregariousness
+gregaritic
+grege
+Gregg
+Gregge
+greggle
+grego
+Gregor
+Gregorian
+Gregorianist
+Gregorianize
+Gregorianizer
+Gregory
+greige
+grein
+greisen
+gremial
+gremlin
+grenade
+Grenadian
+grenadier
+grenadierial
+grenadierly
+grenadiership
+grenadin
+grenadine
+Grendel
+Grenelle
+Gressoria
+gressorial
+gressorious
+Greta
+Gretchen
+Gretel
+greund
+Grevillea
+grew
+grewhound
+Grewia
+grey
+greyhound
+Greyiaceae
+greyly
+greyness
+gribble
+grice
+grid
+griddle
+griddlecake
+griddler
+gride
+gridelin
+gridiron
+griece
+grieced
+grief
+griefful
+grieffully
+griefless
+grieflessness
+grieshoch
+grievance
+grieve
+grieved
+grievedly
+griever
+grieveship
+grieving
+grievingly
+grievous
+grievously
+grievousness
+Griff
+griff
+griffade
+griffado
+griffaun
+griffe
+griffin
+griffinage
+griffinesque
+griffinhood
+griffinish
+griffinism
+Griffith
+griffithite
+Griffon
+griffon
+griffonage
+griffonne
+grift
+grifter
+grig
+griggles
+grignet
+grigri
+grihastha
+grihyasutra
+grike
+grill
+grillade
+grillage
+grille
+grilled
+griller
+grillroom
+grillwork
+grilse
+grim
+grimace
+grimacer
+grimacier
+grimacing
+grimacingly
+grimalkin
+grime
+grimful
+grimgribber
+grimily
+griminess
+grimliness
+grimly
+grimme
+Grimmia
+Grimmiaceae
+grimmiaceous
+grimmish
+grimness
+grimp
+grimy
+grin
+grinagog
+grinch
+grind
+grindable
+Grindelia
+grinder
+grinderman
+grindery
+grinding
+grindingly
+grindle
+grindstone
+gringo
+gringolee
+gringophobia
+Grinnellia
+grinner
+grinning
+grinningly
+grinny
+grintern
+grip
+gripe
+gripeful
+griper
+gripgrass
+griphite
+Griphosaurus
+griping
+gripingly
+gripless
+gripman
+gripment
+grippal
+grippe
+gripper
+grippiness
+gripping
+grippingly
+grippingness
+gripple
+grippleness
+grippotoxin
+grippy
+gripsack
+gripy
+Griqua
+griquaite
+Griqualander
+gris
+grisaille
+grisard
+Griselda
+griseous
+grisette
+grisettish
+grisgris
+griskin
+grisliness
+grisly
+Grison
+grison
+grisounite
+grisoutine
+Grissel
+grissens
+grissons
+grist
+gristbite
+grister
+Gristhorbia
+gristle
+gristliness
+gristly
+gristmill
+gristmiller
+gristmilling
+gristy
+grit
+grith
+grithbreach
+grithman
+gritless
+gritrock
+grits
+gritstone
+gritten
+gritter
+grittily
+grittiness
+grittle
+gritty
+grivet
+grivna
+Grizel
+Grizzel
+grizzle
+grizzled
+grizzler
+grizzly
+grizzlyman
+groan
+groaner
+groanful
+groaning
+groaningly
+groat
+groats
+groatsworth
+grobian
+grobianism
+grocer
+grocerdom
+groceress
+grocerly
+grocerwise
+grocery
+groceryman
+Groenendael
+groff
+grog
+groggery
+groggily
+grogginess
+groggy
+grogram
+grogshop
+groin
+groined
+groinery
+groining
+Grolier
+Grolieresque
+gromatic
+gromatics
+Gromia
+grommet
+gromwell
+groom
+groomer
+groomish
+groomishly
+groomlet
+groomling
+groomsman
+groomy
+groop
+groose
+groot
+grooty
+groove
+grooveless
+groovelike
+groover
+grooverhead
+grooviness
+grooving
+groovy
+grope
+groper
+groping
+gropingly
+gropple
+grorudite
+gros
+grosbeak
+groschen
+groser
+groset
+grosgrain
+grosgrained
+gross
+grossart
+grossen
+grosser
+grossification
+grossify
+grossly
+grossness
+grosso
+grossulaceous
+grossular
+Grossularia
+grossularia
+Grossulariaceae
+grossulariaceous
+grossularious
+grossularite
+grosz
+groszy
+grot
+grotesque
+grotesquely
+grotesqueness
+grotesquerie
+grothine
+grothite
+Grotian
+Grotianism
+grottesco
+grotto
+grottoed
+grottolike
+grottowork
+grouch
+grouchily
+grouchiness
+grouchingly
+grouchy
+grouf
+grough
+ground
+groundable
+groundably
+groundage
+groundberry
+groundbird
+grounded
+groundedly
+groundedness
+groundenell
+grounder
+groundflower
+grounding
+groundless
+groundlessly
+groundlessness
+groundliness
+groundling
+groundly
+groundman
+groundmass
+groundneedle
+groundnut
+groundplot
+grounds
+groundsel
+groundsill
+groundsman
+groundward
+groundwood
+groundwork
+groundy
+group
+groupage
+groupageness
+grouped
+grouper
+grouping
+groupist
+grouplet
+groupment
+groupwise
+grouse
+grouseberry
+grouseless
+grouser
+grouseward
+grousewards
+grousy
+grout
+grouter
+grouthead
+grouts
+grouty
+grouze
+grove
+groved
+grovel
+groveler
+groveless
+groveling
+grovelingly
+grovelings
+grovy
+grow
+growable
+growan
+growed
+grower
+growing
+growingly
+growingupness
+growl
+growler
+growlery
+growling
+growlingly
+growly
+grown
+grownup
+growse
+growsome
+growth
+growthful
+growthiness
+growthless
+growthy
+grozart
+grozet
+grr
+grub
+grubbed
+grubber
+grubbery
+grubbily
+grubbiness
+grubby
+grubhood
+grubless
+grubroot
+grubs
+grubstake
+grubstaker
+Grubstreet
+grubstreet
+grubworm
+grudge
+grudgeful
+grudgefully
+grudgekin
+grudgeless
+grudger
+grudgery
+grudging
+grudgingly
+grudgingness
+grudgment
+grue
+gruel
+grueler
+grueling
+gruelly
+Grues
+gruesome
+gruesomely
+gruesomeness
+gruff
+gruffily
+gruffiness
+gruffish
+gruffly
+gruffness
+gruffs
+gruffy
+grufted
+grugru
+Gruidae
+gruiform
+Gruiformes
+gruine
+Gruis
+grum
+grumble
+grumbler
+grumblesome
+Grumbletonian
+grumbling
+grumblingly
+grumbly
+grume
+Grumium
+grumly
+grummel
+grummels
+grummet
+grummeter
+grumness
+grumose
+grumous
+grumousness
+grump
+grumph
+grumphie
+grumphy
+grumpily
+grumpiness
+grumpish
+grumpy
+grun
+Grundified
+Grundlov
+grundy
+Grundyism
+Grundyist
+Grundyite
+grunerite
+gruneritization
+grunion
+grunt
+grunter
+Grunth
+grunting
+gruntingly
+gruntle
+gruntled
+gruntling
+Grus
+grush
+grushie
+Grusian
+Grusinian
+gruss
+grutch
+grutten
+gryde
+grylli
+gryllid
+Gryllidae
+gryllos
+Gryllotalpa
+Gryllus
+gryllus
+grypanian
+Gryphaea
+Gryphosaurus
+gryposis
+Grypotherium
+grysbok
+guaba
+guacacoa
+guachamaca
+guacharo
+guachipilin
+Guacho
+Guacico
+guacimo
+guacin
+guaco
+guaconize
+Guadagnini
+guadalcazarite
+Guaharibo
+Guahiban
+Guahibo
+Guahivo
+guaiac
+guaiacol
+guaiacolize
+guaiaconic
+guaiacum
+guaiaretic
+guaiasanol
+guaiol
+guaka
+Gualaca
+guama
+guan
+Guana
+guana
+guanabana
+guanabano
+guanaco
+guanajuatite
+guanamine
+guanase
+guanay
+Guanche
+guaneide
+guango
+guanidine
+guanidopropionic
+guaniferous
+guanine
+guanize
+guano
+guanophore
+guanosine
+guanyl
+guanylic
+guao
+guapena
+guapilla
+guapinol
+Guaque
+guar
+guara
+guarabu
+guaracha
+guaraguao
+guarana
+Guarani
+guarani
+Guaranian
+guaranine
+guarantee
+guaranteeship
+guarantor
+guarantorship
+guaranty
+guarapucu
+Guaraunan
+Guarauno
+guard
+guardable
+guardant
+guarded
+guardedly
+guardedness
+guardeen
+guarder
+guardfish
+guardful
+guardfully
+guardhouse
+guardian
+guardiancy
+guardianess
+guardianless
+guardianly
+guardianship
+guarding
+guardingly
+guardless
+guardlike
+guardo
+guardrail
+guardroom
+guardship
+guardsman
+guardstone
+Guarea
+guariba
+guarinite
+guarneri
+Guarnerius
+Guarnieri
+Guarrau
+guarri
+Guaruan
+guasa
+Guastalline
+guatambu
+Guatemalan
+Guatemaltecan
+guativere
+Guato
+Guatoan
+Guatusan
+Guatuso
+Guauaenok
+guava
+guavaberry
+guavina
+guayaba
+guayabi
+guayabo
+guayacan
+Guayaqui
+Guaycuru
+Guaycuruan
+Guaymie
+guayroto
+guayule
+guaza
+Guazuma
+gubbertush
+Gubbin
+gubbo
+gubernacula
+gubernacular
+gubernaculum
+gubernative
+gubernator
+gubernatorial
+gubernatrix
+guberniya
+gucki
+gud
+gudame
+guddle
+gude
+gudebrother
+gudefather
+gudemother
+gudesake
+gudesakes
+gudesire
+gudewife
+gudge
+gudgeon
+gudget
+gudok
+gue
+guebucu
+guejarite
+Guelph
+Guelphic
+Guelphish
+Guelphism
+guemal
+guenepe
+guenon
+guepard
+guerdon
+guerdonable
+guerdoner
+guerdonless
+guereza
+Guerickian
+Guerinet
+Guernsey
+guernsey
+guernseyed
+guerrilla
+guerrillaism
+guerrillaship
+Guesdism
+Guesdist
+guess
+guessable
+guesser
+guessing
+guessingly
+guesswork
+guessworker
+guest
+guestchamber
+guesten
+guester
+guesthouse
+guesting
+guestive
+guestless
+Guestling
+guestling
+guestmaster
+guestship
+guestwise
+Guetar
+Guetare
+gufa
+guff
+guffaw
+guffer
+guffin
+guffy
+gugal
+guggle
+gugglet
+guglet
+guglia
+guglio
+gugu
+Guha
+Guhayna
+guhr
+Guiana
+Guianan
+Guianese
+guib
+guiba
+guidable
+guidage
+guidance
+guide
+guideboard
+guidebook
+guidebookish
+guidecraft
+guideless
+guideline
+guidepost
+guider
+guideress
+guidership
+guideship
+guideway
+guidman
+Guido
+guidon
+Guidonian
+guidwilly
+guige
+Guignardia
+guignol
+guijo
+Guilandina
+guild
+guilder
+guildhall
+guildic
+guildry
+guildship
+guildsman
+guile
+guileful
+guilefully
+guilefulness
+guileless
+guilelessly
+guilelessness
+guilery
+guillemet
+guillemot
+Guillermo
+guillevat
+guilloche
+guillochee
+guillotinade
+guillotine
+guillotinement
+guillotiner
+guillotinism
+guillotinist
+guilt
+guiltily
+guiltiness
+guiltless
+guiltlessly
+guiltlessness
+guiltsick
+guilty
+guily
+guimbard
+guimpe
+Guinea
+guinea
+Guineaman
+Guinean
+Guinevere
+guipure
+Guisard
+guisard
+guise
+guiser
+Guisian
+guising
+guitar
+guitarfish
+guitarist
+guitermanite
+guitguit
+Guittonian
+Gujar
+Gujarati
+Gujrati
+gul
+gula
+gulae
+gulaman
+gulancha
+Gulanganes
+gular
+gularis
+gulch
+gulden
+guldengroschen
+gule
+gules
+Gulf
+gulf
+gulflike
+gulfside
+gulfwards
+gulfweed
+gulfy
+gulgul
+gulinula
+gulinulae
+gulinular
+gulix
+gull
+Gullah
+gullery
+gullet
+gulleting
+gullibility
+gullible
+gullibly
+gullion
+gullish
+gullishly
+gullishness
+gully
+gullyhole
+Gulo
+gulonic
+gulose
+gulosity
+gulp
+gulper
+gulpin
+gulping
+gulpingly
+gulpy
+gulravage
+gulsach
+Gum
+gum
+gumbo
+gumboil
+gumbotil
+gumby
+gumchewer
+gumdigger
+gumdigging
+gumdrop
+gumfield
+gumflower
+gumihan
+gumless
+gumlike
+gumly
+gumma
+gummage
+gummaker
+gummaking
+gummata
+gummatous
+gummed
+gummer
+gummiferous
+gumminess
+gumming
+gummite
+gummose
+gummosis
+gummosity
+gummous
+gummy
+gump
+gumphion
+gumption
+gumptionless
+gumptious
+gumpus
+gumshoe
+gumweed
+gumwood
+gun
+guna
+gunate
+gunation
+gunbearer
+gunboat
+gunbright
+gunbuilder
+guncotton
+gundi
+gundy
+gunebo
+gunfire
+gunflint
+gunge
+gunhouse
+Gunite
+gunite
+gunj
+gunk
+gunl
+gunless
+gunlock
+gunmaker
+gunmaking
+gunman
+gunmanship
+gunnage
+Gunnar
+gunne
+gunnel
+gunner
+Gunnera
+Gunneraceae
+gunneress
+gunnership
+gunnery
+gunnies
+gunning
+gunnung
+gunny
+gunocracy
+gunong
+gunpaper
+gunplay
+gunpowder
+gunpowderous
+gunpowdery
+gunpower
+gunrack
+gunreach
+gunrunner
+gunrunning
+gunsel
+gunshop
+gunshot
+gunsman
+gunsmith
+gunsmithery
+gunsmithing
+gunster
+gunstick
+gunstock
+gunstocker
+gunstocking
+gunstone
+Gunter
+gunter
+Gunther
+gunwale
+gunyah
+gunyang
+gunyeh
+Gunz
+Gunzian
+gup
+guppy
+guptavidya
+gur
+Guran
+gurdfish
+gurdle
+gurdwara
+gurge
+gurgeon
+gurgeons
+gurges
+gurgitation
+gurgle
+gurglet
+gurgling
+gurglingly
+gurgly
+gurgoyle
+gurgulation
+Gurian
+Guric
+Gurish
+Gurjara
+gurjun
+gurk
+Gurkha
+gurl
+gurly
+Gurmukhi
+gurnard
+gurnet
+gurnetty
+Gurneyite
+gurniad
+gurr
+gurrah
+gurry
+gurt
+guru
+guruship
+Gus
+gush
+gusher
+gushet
+gushily
+gushiness
+gushing
+gushingly
+gushingness
+gushy
+gusla
+gusle
+guss
+gusset
+Gussie
+gussie
+gust
+gustable
+gustation
+gustative
+gustativeness
+gustatory
+Gustavus
+gustful
+gustfully
+gustfulness
+gustily
+gustiness
+gustless
+gusto
+gustoish
+Gustus
+gusty
+gut
+Guti
+Gutium
+gutless
+gutlike
+gutling
+Gutnic
+Gutnish
+gutt
+gutta
+guttable
+guttate
+guttated
+guttatim
+guttation
+gutte
+gutter
+Guttera
+gutterblood
+guttering
+gutterlike
+gutterling
+gutterman
+guttersnipe
+guttersnipish
+gutterspout
+gutterwise
+guttery
+gutti
+guttide
+guttie
+Guttiferae
+guttiferal
+Guttiferales
+guttiferous
+guttiform
+guttiness
+guttle
+guttler
+guttula
+guttulae
+guttular
+guttulate
+guttule
+guttural
+gutturalism
+gutturality
+gutturalization
+gutturalize
+gutturally
+gutturalness
+gutturize
+gutturonasal
+gutturopalatal
+gutturopalatine
+gutturotetany
+guttus
+gutty
+gutweed
+gutwise
+gutwort
+guvacine
+guvacoline
+Guy
+guy
+Guyandot
+guydom
+guyer
+guytrash
+guz
+guze
+Guzmania
+guzmania
+Guzul
+guzzle
+guzzledom
+guzzler
+gwag
+gweduc
+gweed
+gweeon
+gwely
+Gwen
+Gwendolen
+gwine
+gwyniad
+Gyarung
+gyascutus
+Gyges
+Gygis
+gyle
+gym
+gymel
+gymkhana
+Gymnadenia
+Gymnadeniopsis
+Gymnanthes
+gymnanthous
+Gymnarchidae
+Gymnarchus
+gymnasia
+gymnasial
+gymnasiarch
+gymnasiarchy
+gymnasiast
+gymnasic
+gymnasium
+gymnast
+gymnastic
+gymnastically
+gymnastics
+gymnemic
+gymnetrous
+gymnic
+gymnical
+gymnics
+gymnite
+Gymnoblastea
+gymnoblastic
+Gymnocalycium
+gymnocarpic
+gymnocarpous
+Gymnocerata
+gymnoceratous
+gymnocidium
+Gymnocladus
+Gymnoconia
+Gymnoderinae
+Gymnodiniaceae
+gymnodiniaceous
+Gymnodiniidae
+Gymnodinium
+gymnodont
+Gymnodontes
+gymnogen
+gymnogenous
+Gymnoglossa
+gymnoglossate
+gymnogynous
+Gymnogyps
+Gymnolaema
+Gymnolaemata
+gymnolaematous
+Gymnonoti
+Gymnopaedes
+gymnopaedic
+gymnophiona
+gymnoplast
+Gymnorhina
+gymnorhinal
+Gymnorhininae
+gymnosoph
+gymnosophist
+gymnosophy
+gymnosperm
+Gymnospermae
+gymnospermal
+gymnospermic
+gymnospermism
+Gymnospermous
+gymnospermy
+Gymnosporangium
+gymnospore
+gymnosporous
+Gymnostomata
+Gymnostomina
+gymnostomous
+Gymnothorax
+gymnotid
+Gymnotidae
+Gymnotoka
+gymnotokous
+Gymnotus
+Gymnura
+gymnure
+Gymnurinae
+gymnurine
+gympie
+gyn
+gynaecea
+gynaeceum
+gynaecocoenic
+gynander
+gynandrarchic
+gynandrarchy
+Gynandria
+gynandria
+gynandrian
+gynandrism
+gynandroid
+gynandromorph
+gynandromorphic
+gynandromorphism
+gynandromorphous
+gynandromorphy
+gynandrophore
+gynandrosporous
+gynandrous
+gynandry
+gynantherous
+gynarchic
+gynarchy
+gyne
+gynecic
+gynecidal
+gynecide
+gynecocentric
+gynecocracy
+gynecocrat
+gynecocratic
+gynecocratical
+gynecoid
+gynecolatry
+gynecologic
+gynecological
+gynecologist
+gynecology
+gynecomania
+gynecomastia
+gynecomastism
+gynecomasty
+gynecomazia
+gynecomorphous
+gyneconitis
+gynecopathic
+gynecopathy
+gynecophore
+gynecophoric
+gynecophorous
+gynecotelic
+gynecratic
+gyneocracy
+gyneolater
+gyneolatry
+gynephobia
+Gynerium
+gynethusia
+gyniatrics
+gyniatry
+gynic
+gynics
+gynobase
+gynobaseous
+gynobasic
+gynocardia
+gynocardic
+gynocracy
+gynocratic
+gynodioecious
+gynodioeciously
+gynodioecism
+gynoecia
+gynoecium
+gynogenesis
+gynomonecious
+gynomonoeciously
+gynomonoecism
+gynophagite
+gynophore
+gynophoric
+gynosporangium
+gynospore
+gynostegia
+gynostegium
+gynostemium
+Gynura
+gyp
+Gypaetus
+gype
+gypper
+Gyppo
+Gyps
+gyps
+gypseian
+gypseous
+gypsiferous
+gypsine
+gypsiologist
+gypsite
+gypsography
+gypsologist
+gypsology
+Gypsophila
+gypsophila
+gypsophilous
+gypsophily
+gypsoplast
+gypsous
+gypster
+gypsum
+Gypsy
+gypsy
+gypsydom
+gypsyesque
+gypsyfy
+gypsyhead
+gypsyhood
+gypsyish
+gypsyism
+gypsylike
+gypsyry
+gypsyweed
+gypsywise
+gypsywort
+Gyracanthus
+gyral
+gyrally
+gyrant
+gyrate
+gyration
+gyrational
+gyrator
+gyratory
+gyre
+Gyrencephala
+gyrencephalate
+gyrencephalic
+gyrencephalous
+gyrene
+gyrfalcon
+gyri
+gyric
+gyrinid
+Gyrinidae
+Gyrinus
+gyro
+gyrocar
+gyroceracone
+gyroceran
+Gyroceras
+gyrochrome
+gyrocompass
+Gyrodactylidae
+Gyrodactylus
+gyrogonite
+gyrograph
+gyroidal
+gyroidally
+gyrolite
+gyrolith
+gyroma
+gyromagnetic
+gyromancy
+gyromele
+gyrometer
+Gyromitra
+gyron
+gyronny
+Gyrophora
+Gyrophoraceae
+Gyrophoraceous
+gyrophoric
+gyropigeon
+gyroplane
+gyroscope
+gyroscopic
+gyroscopically
+gyroscopics
+gyrose
+gyrostabilizer
+Gyrostachys
+gyrostat
+gyrostatic
+gyrostatically
+gyrostatics
+Gyrotheca
+gyrous
+gyrovagi
+gyrovagues
+gyrowheel
+gyrus
+gyte
+gytling
+gyve
+H
+h
+ha
+haab
+haaf
+Habab
+habanera
+Habbe
+habble
+habdalah
+Habe
+habeas
+habena
+habenal
+habenar
+Habenaria
+habendum
+habenula
+habenular
+haberdash
+haberdasher
+haberdasheress
+haberdashery
+haberdine
+habergeon
+habilable
+habilatory
+habile
+habiliment
+habilimentation
+habilimented
+habilitate
+habilitation
+habilitator
+hability
+habille
+Habiri
+Habiru
+habit
+habitability
+habitable
+habitableness
+habitably
+habitacle
+habitacule
+habitally
+habitan
+habitance
+habitancy
+habitant
+habitat
+habitate
+habitation
+habitational
+habitative
+habited
+habitual
+habituality
+habitualize
+habitually
+habitualness
+habituate
+habituation
+habitude
+habitudinal
+habitue
+habitus
+habnab
+haboob
+Habronema
+habronemiasis
+habronemic
+habu
+habutai
+habutaye
+hache
+Hachiman
+hachure
+hacienda
+hack
+hackamatak
+hackamore
+hackbarrow
+hackberry
+hackbolt
+hackbush
+hackbut
+hackbuteer
+hacked
+hackee
+hacker
+hackery
+hackin
+hacking
+hackingly
+hackle
+hackleback
+hackler
+hacklog
+hackly
+hackmack
+hackman
+hackmatack
+hackney
+hackneyed
+hackneyer
+hackneyism
+hackneyman
+hacksaw
+hacksilber
+hackster
+hackthorn
+hacktree
+hackwood
+hacky
+had
+Hadassah
+hadbot
+hadden
+haddie
+haddo
+haddock
+haddocker
+hade
+Hadean
+Hadendoa
+Hadendowa
+hadentomoid
+Hadentomoidea
+Hades
+Hadhramautian
+hading
+Hadith
+hadj
+Hadjemi
+hadji
+hadland
+Hadramautian
+hadrome
+Hadromerina
+hadromycosis
+hadrosaur
+Hadrosaurus
+haec
+haecceity
+Haeckelian
+Haeckelism
+haem
+Haemamoeba
+Haemanthus
+Haemaphysalis
+haemaspectroscope
+haematherm
+haemathermal
+haemathermous
+haematinon
+haematinum
+haematite
+Haematobranchia
+haematobranchiate
+Haematocrya
+haematocryal
+Haematophilina
+haematophiline
+Haematopus
+haematorrhachis
+haematosepsis
+Haematotherma
+haematothermal
+haematoxylic
+haematoxylin
+Haematoxylon
+haemoconcentration
+haemodilution
+Haemodoraceae
+haemodoraceous
+haemoglobin
+haemogram
+Haemogregarina
+Haemogregarinidae
+haemonchiasis
+haemonchosis
+Haemonchus
+haemony
+haemophile
+Haemoproteus
+haemorrhage
+haemorrhagia
+haemorrhagic
+haemorrhoid
+haemorrhoidal
+haemosporid
+Haemosporidia
+haemosporidian
+Haemosporidium
+Haemulidae
+haemuloid
+haeremai
+haet
+haff
+haffet
+haffkinize
+haffle
+Hafgan
+hafiz
+hafnium
+hafnyl
+haft
+hafter
+hag
+Haganah
+Hagarite
+hagberry
+hagboat
+hagborn
+hagbush
+hagdon
+hageen
+Hagenia
+hagfish
+haggada
+haggaday
+haggadic
+haggadical
+haggadist
+haggadistic
+haggard
+haggardly
+haggardness
+hagged
+hagger
+haggis
+haggish
+haggishly
+haggishness
+haggister
+haggle
+haggler
+haggly
+haggy
+hagi
+hagia
+hagiarchy
+hagiocracy
+Hagiographa
+hagiographal
+hagiographer
+hagiographic
+hagiographical
+hagiographist
+hagiography
+hagiolater
+hagiolatrous
+hagiolatry
+hagiologic
+hagiological
+hagiologist
+hagiology
+hagiophobia
+hagioscope
+hagioscopic
+haglet
+haglike
+haglin
+hagride
+hagrope
+hagseed
+hagship
+hagstone
+hagtaper
+hagweed
+hagworm
+hah
+Hahnemannian
+Hahnemannism
+Haiathalah
+Haida
+Haidan
+Haidee
+haidingerite
+Haiduk
+haik
+haikai
+haikal
+Haikh
+haikwan
+hail
+hailer
+hailproof
+hailse
+hailshot
+hailstone
+hailstorm
+hailweed
+haily
+Haimavati
+hain
+Hainai
+Hainan
+Hainanese
+hainberry
+haine
+hair
+hairband
+hairbeard
+hairbird
+hairbrain
+hairbreadth
+hairbrush
+haircloth
+haircut
+haircutter
+haircutting
+hairdo
+hairdress
+hairdresser
+hairdressing
+haire
+haired
+hairen
+hairhoof
+hairhound
+hairif
+hairiness
+hairlace
+hairless
+hairlessness
+hairlet
+hairline
+hairlock
+hairmeal
+hairmonger
+hairpin
+hairsplitter
+hairsplitting
+hairspring
+hairstone
+hairstreak
+hairtail
+hairup
+hairweed
+hairwood
+hairwork
+hairworm
+hairy
+Haisla
+Haithal
+Haitian
+haje
+hajib
+hajilij
+hak
+hakam
+hakdar
+hake
+Hakea
+hakeem
+hakenkreuz
+Hakenkreuzler
+hakim
+Hakka
+hako
+haku
+Hal
+hala
+halakah
+halakic
+halakist
+halakistic
+halal
+halalcor
+halation
+Halawi
+halazone
+halberd
+halberdier
+halberdman
+halberdsman
+halbert
+halch
+halcyon
+halcyonian
+halcyonic
+Halcyonidae
+Halcyoninae
+halcyonine
+Haldanite
+hale
+halebi
+Halecomorphi
+haleness
+Halenia
+haler
+halerz
+Halesia
+halesome
+half
+halfback
+halfbeak
+halfer
+halfheaded
+halfhearted
+halfheartedly
+halfheartedness
+halfling
+halfman
+halfness
+halfpace
+halfpaced
+halfpenny
+halfpennyworth
+halfway
+halfwise
+Haliaeetus
+halibios
+halibiotic
+halibiu
+halibut
+halibuter
+Halicarnassean
+Halicarnassian
+Halichondriae
+halichondrine
+halichondroid
+Halicore
+Halicoridae
+halide
+halidom
+halieutic
+halieutically
+halieutics
+Haligonian
+Halimeda
+halimous
+halinous
+haliographer
+haliography
+Haliotidae
+Haliotis
+haliotoid
+haliplankton
+haliplid
+Haliplidae
+Haliserites
+halisteresis
+halisteretic
+halite
+Halitheriidae
+Halitherium
+halitosis
+halituosity
+halituous
+halitus
+hall
+hallabaloo
+hallage
+hallah
+hallan
+hallanshaker
+hallebardier
+hallecret
+halleflinta
+halleflintoid
+hallel
+hallelujah
+hallelujatic
+hallex
+Halleyan
+halliblash
+halling
+hallman
+hallmark
+hallmarked
+hallmarker
+hallmoot
+halloo
+Hallopididae
+hallopodous
+Hallopus
+hallow
+Hallowday
+hallowed
+hallowedly
+hallowedness
+Halloween
+hallower
+Hallowmas
+Hallowtide
+halloysite
+Hallstatt
+Hallstattian
+hallucal
+hallucinate
+hallucination
+hallucinational
+hallucinative
+hallucinator
+hallucinatory
+hallucined
+hallucinosis
+hallux
+hallway
+halma
+halmalille
+halmawise
+halo
+Haloa
+Halobates
+halobios
+halobiotic
+halochromism
+halochromy
+Halocynthiidae
+haloesque
+halogen
+halogenate
+halogenation
+halogenoid
+halogenous
+Halogeton
+halohydrin
+haloid
+halolike
+halolimnic
+halomancy
+halometer
+halomorphic
+halophile
+halophilism
+halophilous
+halophyte
+halophytic
+halophytism
+Halopsyche
+Halopsychidae
+Haloragidaceae
+haloragidaceous
+Halosauridae
+Halosaurus
+haloscope
+Halosphaera
+halotrichite
+haloxene
+hals
+halse
+halsen
+halsfang
+halt
+halter
+halterbreak
+halteres
+Halteridium
+halterproof
+Haltica
+halting
+haltingly
+haltingness
+haltless
+halucket
+halukkah
+halurgist
+halurgy
+halutz
+halvaner
+halvans
+halve
+halved
+halvelings
+halver
+halves
+halyard
+Halysites
+ham
+hamacratic
+Hamadan
+hamadryad
+Hamal
+hamal
+hamald
+Hamamelidaceae
+hamamelidaceous
+Hamamelidanthemum
+hamamelidin
+Hamamelidoxylon
+hamamelin
+Hamamelis
+Hamamelites
+hamartiologist
+hamartiology
+hamartite
+hamate
+hamated
+Hamathite
+hamatum
+hambergite
+hamble
+hambroline
+hamburger
+hame
+hameil
+hamel
+Hamelia
+hamesucken
+hamewith
+hamfat
+hamfatter
+hami
+Hamidian
+Hamidieh
+hamiform
+Hamilton
+Hamiltonian
+Hamiltonianism
+Hamiltonism
+hamingja
+hamirostrate
+Hamital
+Hamite
+Hamites
+Hamitic
+Hamiticized
+Hamitism
+Hamitoid
+hamlah
+hamlet
+hamleted
+hamleteer
+hamletization
+hamletize
+hamlinite
+hammada
+hammam
+hammer
+hammerable
+hammerbird
+hammercloth
+hammerdress
+hammerer
+hammerfish
+hammerhead
+hammerheaded
+hammering
+hammeringly
+hammerkop
+hammerless
+hammerlike
+hammerman
+hammersmith
+hammerstone
+hammertoe
+hammerwise
+hammerwork
+hammerwort
+hammochrysos
+hammock
+hammy
+hamose
+hamous
+hamper
+hamperedly
+hamperedness
+hamperer
+hamperman
+Hampshire
+hamrongite
+hamsa
+hamshackle
+hamster
+hamstring
+hamular
+hamulate
+hamule
+Hamulites
+hamulose
+hamulus
+hamus
+hamza
+han
+Hanafi
+Hanafite
+hanaper
+hanaster
+Hanbalite
+hanbury
+hance
+hanced
+hanch
+hancockite
+hand
+handbag
+handball
+handballer
+handbank
+handbanker
+handbarrow
+handbill
+handblow
+handbolt
+handbook
+handbow
+handbreadth
+handcar
+handcart
+handclap
+handclasp
+handcloth
+handcraft
+handcraftman
+handcraftsman
+handcuff
+handed
+handedness
+Handelian
+hander
+handersome
+handfast
+handfasting
+handfastly
+handfastness
+handflower
+handful
+handgrasp
+handgravure
+handgrip
+handgriping
+handgun
+handhaving
+handhold
+handhole
+handicap
+handicapped
+handicapper
+handicraft
+handicraftship
+handicraftsman
+handicraftsmanship
+handicraftswoman
+handicuff
+handily
+handiness
+handistroke
+handiwork
+handkercher
+handkerchief
+handkerchiefful
+handlaid
+handle
+handleable
+handled
+handleless
+handler
+handless
+handlike
+handling
+handmade
+handmaid
+handmaiden
+handmaidenly
+handout
+handpost
+handprint
+handrail
+handrailing
+handreader
+handreading
+handsale
+handsaw
+handsbreadth
+handscrape
+handsel
+handseller
+handset
+handshake
+handshaker
+handshaking
+handsmooth
+handsome
+handsomeish
+handsomely
+handsomeness
+handspade
+handspike
+handspoke
+handspring
+handstaff
+handstand
+handstone
+handstroke
+handwear
+handwheel
+handwhile
+handwork
+handworkman
+handwrist
+handwrite
+handwriting
+handy
+handyblow
+handybook
+handygrip
+hangability
+hangable
+hangalai
+hangar
+hangbird
+hangby
+hangdog
+hange
+hangee
+hanger
+hangfire
+hangie
+hanging
+hangingly
+hangkang
+hangle
+hangman
+hangmanship
+hangment
+hangnail
+hangnest
+hangout
+hangul
+hangwoman
+hangworm
+hangworthy
+hanif
+hanifism
+hanifite
+hanifiya
+Hank
+hank
+hanker
+hankerer
+hankering
+hankeringly
+hankie
+hankle
+hanksite
+hanky
+hanna
+hannayite
+Hannibal
+Hannibalian
+Hannibalic
+Hano
+Hanoverian
+Hanoverianize
+Hanoverize
+Hans
+hansa
+Hansard
+Hansardization
+Hansardize
+Hanse
+hanse
+Hanseatic
+hansel
+hansgrave
+hansom
+hant
+hantle
+Hanukkah
+Hanuman
+hao
+haole
+haoma
+haori
+hap
+Hapale
+Hapalidae
+hapalote
+Hapalotis
+hapaxanthous
+haphazard
+haphazardly
+haphazardness
+haphtarah
+Hapi
+hapless
+haplessly
+haplessness
+haplite
+haplocaulescent
+haplochlamydeous
+Haplodoci
+Haplodon
+haplodont
+haplodonty
+haplography
+haploid
+haploidic
+haploidy
+haplolaly
+haplologic
+haplology
+haploma
+Haplomi
+haplomid
+haplomous
+haplont
+haploperistomic
+haploperistomous
+haplopetalous
+haplophase
+haplophyte
+haploscope
+haploscopic
+haplosis
+haplostemonous
+haplotype
+haply
+happen
+happening
+happenstance
+happier
+happiest
+happify
+happiless
+happily
+happiness
+happing
+happy
+hapten
+haptene
+haptenic
+haptere
+hapteron
+haptic
+haptics
+haptometer
+haptophor
+haptophoric
+haptophorous
+haptotropic
+haptotropically
+haptotropism
+hapu
+hapuku
+haqueton
+harakeke
+harangue
+harangueful
+haranguer
+Hararese
+Harari
+harass
+harassable
+harassedly
+harasser
+harassingly
+harassment
+haratch
+Haratin
+Haraya
+Harb
+harbergage
+harbi
+harbinge
+harbinger
+harbingership
+harbingery
+harbor
+harborage
+harborer
+harborless
+harborous
+harborside
+harborward
+hard
+hardanger
+hardback
+hardbake
+hardbeam
+hardberry
+harden
+hardenable
+Hardenbergia
+hardener
+hardening
+hardenite
+harder
+Harderian
+hardfern
+hardfist
+hardfisted
+hardfistedness
+hardhack
+hardhanded
+hardhandedness
+hardhead
+hardheaded
+hardheadedly
+hardheadedness
+hardhearted
+hardheartedly
+hardheartedness
+hardihood
+hardily
+hardim
+hardiment
+hardiness
+hardish
+hardishrew
+hardly
+hardmouth
+hardmouthed
+hardness
+hardock
+hardpan
+hardship
+hardstand
+hardstanding
+hardtack
+hardtail
+hardware
+hardwareman
+Hardwickia
+hardwood
+hardy
+hardystonite
+hare
+harebell
+harebottle
+harebrain
+harebrained
+harebrainedly
+harebrainedness
+harebur
+harefoot
+harefooted
+harehearted
+harehound
+Harelda
+harelike
+harelip
+harelipped
+harem
+haremism
+haremlik
+harengiform
+harfang
+haricot
+harigalds
+hariolate
+hariolation
+hariolize
+harish
+hark
+harka
+harl
+Harleian
+Harlemese
+Harlemite
+harlequin
+harlequina
+harlequinade
+harlequinery
+harlequinesque
+harlequinic
+harlequinism
+harlequinize
+harling
+harlock
+harlot
+harlotry
+harm
+Harmachis
+harmal
+harmala
+harmaline
+harman
+harmattan
+harmel
+harmer
+harmful
+harmfully
+harmfulness
+harmine
+harminic
+harmless
+harmlessly
+harmlessness
+Harmon
+harmonia
+harmoniacal
+harmonial
+harmonic
+harmonica
+harmonical
+harmonically
+harmonicalness
+harmonichord
+harmonici
+harmonicism
+harmonicon
+harmonics
+harmonious
+harmoniously
+harmoniousness
+harmoniphon
+harmoniphone
+harmonist
+harmonistic
+harmonistically
+Harmonite
+harmonium
+harmonizable
+harmonization
+harmonize
+harmonizer
+harmonogram
+harmonograph
+harmonometer
+harmony
+harmost
+harmotome
+harmotomic
+harmproof
+harn
+harness
+harnesser
+harnessry
+harnpan
+Harold
+harp
+Harpa
+harpago
+harpagon
+Harpagornis
+Harpalides
+Harpalinae
+Harpalus
+harper
+harperess
+Harpidae
+harpier
+harpings
+harpist
+harpless
+harplike
+Harpocrates
+harpoon
+harpooner
+Harporhynchus
+harpress
+harpsichord
+harpsichordist
+harpula
+Harpullia
+harpwaytuning
+harpwise
+Harpy
+Harpyia
+harpylike
+harquebus
+harquebusade
+harquebusier
+harr
+harrateen
+harridan
+harrier
+Harris
+Harrisia
+harrisite
+Harrovian
+harrow
+harrower
+harrowing
+harrowingly
+harrowingness
+harrowment
+Harry
+harry
+harsh
+harshen
+harshish
+harshly
+harshness
+harshweed
+harstigite
+hart
+hartal
+hartberry
+hartebeest
+hartin
+hartite
+Hartleian
+Hartleyan
+Hartmann
+Hartmannia
+Hartogia
+hartshorn
+hartstongue
+harttite
+Hartungen
+haruspex
+haruspical
+haruspicate
+haruspication
+haruspice
+haruspices
+haruspicy
+Harv
+Harvard
+Harvardian
+Harvardize
+Harveian
+harvest
+harvestbug
+harvester
+harvestless
+harvestman
+harvestry
+harvesttime
+Harvey
+Harveyize
+harzburgite
+hasan
+hasenpfeffer
+hash
+hashab
+hasher
+Hashimite
+hashish
+Hashiya
+hashy
+Hasidean
+Hasidic
+Hasidim
+Hasidism
+Hasinai
+hask
+Haskalah
+haskness
+hasky
+haslet
+haslock
+Hasmonaean
+hasp
+hassar
+hassel
+hassle
+hassock
+hassocky
+hasta
+hastate
+hastately
+hastati
+hastatolanceolate
+hastatosagittate
+haste
+hasteful
+hastefully
+hasteless
+hastelessness
+hasten
+hastener
+hasteproof
+haster
+hastilude
+hastily
+hastiness
+hastings
+hastingsite
+hastish
+hastler
+hasty
+hat
+hatable
+hatband
+hatbox
+hatbrim
+hatbrush
+hatch
+hatchability
+hatchable
+hatchel
+hatcheler
+hatcher
+hatchery
+hatcheryman
+hatchet
+hatchetback
+hatchetfish
+hatchetlike
+hatchetman
+hatchettine
+hatchettolite
+hatchety
+hatchgate
+hatching
+hatchling
+hatchman
+hatchment
+hatchminder
+hatchway
+hatchwayman
+hate
+hateable
+hateful
+hatefully
+hatefulness
+hateless
+hatelessness
+hater
+hatful
+hath
+hatherlite
+hathi
+Hathor
+Hathoric
+Hati
+Hatikvah
+hatless
+hatlessness
+hatlike
+hatmaker
+hatmaking
+hatpin
+hatrack
+hatrail
+hatred
+hatress
+hatstand
+hatt
+hatted
+Hattemist
+hatter
+Hatteria
+hattery
+Hatti
+Hattic
+Hattie
+hatting
+Hattism
+Hattize
+hattock
+Hatty
+hatty
+hau
+hauberget
+hauberk
+hauchecornite
+hauerite
+haugh
+haughland
+haught
+haughtily
+haughtiness
+haughtly
+haughtness
+haughtonite
+haughty
+haul
+haulabout
+haulage
+haulageway
+haulback
+hauld
+hauler
+haulier
+haulm
+haulmy
+haulster
+haunch
+haunched
+hauncher
+haunching
+haunchless
+haunchy
+haunt
+haunter
+hauntingly
+haunty
+Hauranitic
+hauriant
+haurient
+Hausa
+hause
+hausen
+hausmannite
+hausse
+Haussmannization
+Haussmannize
+haustellate
+haustellated
+haustellous
+haustellum
+haustement
+haustorial
+haustorium
+haustral
+haustrum
+hautboy
+hautboyist
+hauteur
+hauynite
+hauynophyre
+havage
+Havaiki
+Havaikian
+Havana
+Havanese
+have
+haveable
+haveage
+havel
+haveless
+havelock
+haven
+havenage
+havener
+havenership
+havenet
+havenful
+havenless
+havent
+havenward
+haver
+havercake
+haverel
+haverer
+havergrass
+havermeal
+havers
+haversack
+Haversian
+haversine
+havier
+havildar
+havingness
+havoc
+havocker
+haw
+Hawaiian
+hawaiite
+hawbuck
+hawcubite
+hawer
+hawfinch
+Hawiya
+hawk
+hawkbill
+hawkbit
+hawked
+hawker
+hawkery
+Hawkeye
+hawkie
+hawking
+hawkish
+hawklike
+hawknut
+hawkweed
+hawkwise
+hawky
+hawm
+hawok
+Haworthia
+hawse
+hawsehole
+hawseman
+hawsepiece
+hawsepipe
+hawser
+hawserwise
+hawthorn
+hawthorned
+hawthorny
+hay
+haya
+hayband
+haybird
+haybote
+haycap
+haycart
+haycock
+haydenite
+hayey
+hayfield
+hayfork
+haygrower
+haylift
+hayloft
+haymaker
+haymaking
+haymarket
+haymow
+hayrack
+hayrake
+hayraker
+hayrick
+hayseed
+haysel
+haystack
+haysuck
+haytime
+hayward
+hayweed
+haywire
+hayz
+Hazara
+hazard
+hazardable
+hazarder
+hazardful
+hazardize
+hazardless
+hazardous
+hazardously
+hazardousness
+hazardry
+haze
+Hazel
+hazel
+hazeled
+hazeless
+hazelly
+hazelnut
+hazelwood
+hazelwort
+hazen
+hazer
+hazily
+haziness
+hazing
+hazle
+haznadar
+hazy
+hazzan
+he
+head
+headache
+headachy
+headband
+headbander
+headboard
+headborough
+headcap
+headchair
+headcheese
+headchute
+headcloth
+headdress
+headed
+headender
+header
+headfirst
+headforemost
+headframe
+headful
+headgear
+headily
+headiness
+heading
+headkerchief
+headland
+headledge
+headless
+headlessness
+headlight
+headlighting
+headlike
+headline
+headliner
+headlock
+headlong
+headlongly
+headlongs
+headlongwise
+headman
+headmark
+headmaster
+headmasterly
+headmastership
+headmistress
+headmistressship
+headmold
+headmost
+headnote
+headpenny
+headphone
+headpiece
+headplate
+headpost
+headquarter
+headquarters
+headrace
+headrail
+headreach
+headrent
+headrest
+headright
+headring
+headroom
+headrope
+headsail
+headset
+headshake
+headship
+headsill
+headskin
+headsman
+headspring
+headstall
+headstand
+headstick
+headstock
+headstone
+headstream
+headstrong
+headstrongly
+headstrongness
+headwaiter
+headwall
+headward
+headwark
+headwater
+headway
+headwear
+headwork
+headworker
+headworking
+heady
+heaf
+heal
+healable
+heald
+healder
+healer
+healful
+healing
+healingly
+healless
+healsome
+healsomeness
+health
+healthcraft
+healthful
+healthfully
+healthfulness
+healthguard
+healthily
+healthiness
+healthless
+healthlessness
+healthsome
+healthsomely
+healthsomeness
+healthward
+healthy
+heap
+heaper
+heaps
+heapstead
+heapy
+hear
+hearable
+hearer
+hearing
+hearingless
+hearken
+hearkener
+hearsay
+hearse
+hearsecloth
+hearselike
+hearst
+heart
+heartache
+heartaching
+heartbeat
+heartbird
+heartblood
+heartbreak
+heartbreaker
+heartbreaking
+heartbreakingly
+heartbroken
+heartbrokenly
+heartbrokenness
+heartburn
+heartburning
+heartdeep
+heartease
+hearted
+heartedly
+heartedness
+hearten
+heartener
+heartening
+hearteningly
+heartfelt
+heartful
+heartfully
+heartfulness
+heartgrief
+hearth
+hearthless
+hearthman
+hearthpenny
+hearthrug
+hearthstead
+hearthstone
+hearthward
+hearthwarming
+heartikin
+heartily
+heartiness
+hearting
+heartland
+heartleaf
+heartless
+heartlessly
+heartlessness
+heartlet
+heartling
+heartly
+heartnut
+heartpea
+heartquake
+heartroot
+hearts
+heartscald
+heartsease
+heartseed
+heartsette
+heartsick
+heartsickening
+heartsickness
+heartsome
+heartsomely
+heartsomeness
+heartsore
+heartstring
+heartthrob
+heartward
+heartwater
+heartweed
+heartwise
+heartwood
+heartwort
+hearty
+heat
+heatable
+heatdrop
+heatedly
+heater
+heaterman
+heatful
+heath
+heathberry
+heathbird
+heathen
+heathendom
+heatheness
+heathenesse
+heathenhood
+heathenish
+heathenishly
+heathenishness
+heathenism
+heathenize
+heathenness
+heathenry
+heathenship
+Heather
+heather
+heathered
+heatheriness
+heathery
+heathless
+heathlike
+heathwort
+heathy
+heating
+heatingly
+heatless
+heatlike
+heatmaker
+heatmaking
+heatproof
+heatronic
+heatsman
+heatstroke
+heaume
+heaumer
+heautarit
+heautomorphism
+Heautontimorumenos
+heautophany
+heave
+heaveless
+heaven
+Heavenese
+heavenful
+heavenhood
+heavenish
+heavenishly
+heavenize
+heavenless
+heavenlike
+heavenliness
+heavenly
+heavens
+heavenward
+heavenwardly
+heavenwardness
+heavenwards
+heaver
+heavies
+heavily
+heaviness
+heaving
+heavisome
+heavity
+heavy
+heavyback
+heavyhanded
+heavyhandedness
+heavyheaded
+heavyhearted
+heavyheartedness
+heavyweight
+hebamic
+hebdomad
+hebdomadal
+hebdomadally
+hebdomadary
+hebdomader
+hebdomarian
+hebdomary
+hebeanthous
+hebecarpous
+hebecladous
+hebegynous
+hebenon
+hebeosteotomy
+hebepetalous
+hebephrenia
+hebephrenic
+hebetate
+hebetation
+hebetative
+hebete
+hebetic
+hebetomy
+hebetude
+hebetudinous
+Hebraean
+Hebraic
+Hebraica
+Hebraical
+Hebraically
+Hebraicize
+Hebraism
+Hebraist
+Hebraistic
+Hebraistical
+Hebraistically
+Hebraization
+Hebraize
+Hebraizer
+Hebrew
+Hebrewdom
+Hebrewess
+Hebrewism
+Hebrician
+Hebridean
+Hebronite
+hebronite
+hecastotheism
+Hecate
+Hecatean
+Hecatic
+Hecatine
+hecatomb
+Hecatombaeon
+hecatomped
+hecatompedon
+hecatonstylon
+hecatontarchy
+hecatontome
+hecatophyllous
+hech
+Hechtia
+heck
+heckelphone
+Heckerism
+heckimal
+heckle
+heckler
+hectare
+hecte
+hectic
+hectical
+hectically
+hecticly
+hecticness
+hectocotyl
+hectocotyle
+hectocotyliferous
+hectocotylization
+hectocotylize
+hectocotylus
+hectogram
+hectograph
+hectographic
+hectography
+hectoliter
+hectometer
+Hector
+hector
+Hectorean
+Hectorian
+hectoringly
+hectorism
+hectorly
+hectorship
+hectostere
+hectowatt
+heddle
+heddlemaker
+heddler
+hedebo
+hedenbergite
+Hedeoma
+heder
+Hedera
+hederaceous
+hederaceously
+hederated
+hederic
+hederiferous
+hederiform
+hederigerent
+hederin
+hederose
+hedge
+hedgeberry
+hedgeborn
+hedgebote
+hedgebreaker
+hedgehog
+hedgehoggy
+hedgehop
+hedgehopper
+hedgeless
+hedgemaker
+hedgemaking
+hedger
+hedgerow
+hedgesmith
+hedgeweed
+hedgewise
+hedgewood
+hedging
+hedgingly
+hedgy
+hedonic
+hedonical
+hedonically
+hedonics
+hedonism
+hedonist
+hedonistic
+hedonistically
+hedonology
+hedriophthalmous
+hedrocele
+hedrumite
+Hedychium
+hedyphane
+Hedysarum
+heed
+heeder
+heedful
+heedfully
+heedfulness
+heedily
+heediness
+heedless
+heedlessly
+heedlessness
+heedy
+heehaw
+heel
+heelball
+heelband
+heelcap
+heeled
+heeler
+heelgrip
+heelless
+heelmaker
+heelmaking
+heelpath
+heelpiece
+heelplate
+heelpost
+heelprint
+heelstrap
+heeltap
+heeltree
+heemraad
+heer
+heeze
+heezie
+heezy
+heft
+hefter
+heftily
+heftiness
+hefty
+hegari
+Hegelian
+Hegelianism
+Hegelianize
+Hegelizer
+hegemon
+hegemonic
+hegemonical
+hegemonist
+hegemonizer
+hegemony
+hegira
+hegumen
+hegumene
+Hehe
+hei
+heiau
+Heidi
+heifer
+heiferhood
+heigh
+heighday
+height
+heighten
+heightener
+heii
+Heikum
+Heiltsuk
+heimin
+Hein
+Heinesque
+Heinie
+heinous
+heinously
+heinousness
+Heinrich
+heintzite
+Heinz
+heir
+heirdom
+heiress
+heiressdom
+heiresshood
+heirless
+heirloom
+heirship
+heirskip
+heitiki
+Hejazi
+Hejazian
+hekteus
+helbeh
+helcoid
+helcology
+helcoplasty
+helcosis
+helcotic
+heldentenor
+helder
+Helderbergian
+hele
+Helen
+Helena
+helenin
+helenioid
+Helenium
+Helenus
+helepole
+Helge
+heliacal
+heliacally
+Heliaea
+heliaean
+Heliamphora
+Heliand
+helianthaceous
+Helianthemum
+helianthic
+helianthin
+Helianthium
+Helianthoidea
+Helianthoidean
+Helianthus
+heliast
+heliastic
+heliazophyte
+helical
+helically
+heliced
+helices
+helichryse
+helichrysum
+Helicidae
+heliciform
+helicin
+Helicina
+helicine
+Helicinidae
+helicitic
+helicline
+helicograph
+helicogyrate
+helicogyre
+helicoid
+helicoidal
+helicoidally
+helicometry
+helicon
+Heliconia
+Heliconian
+Heliconiidae
+Heliconiinae
+heliconist
+Heliconius
+helicoprotein
+helicopter
+helicorubin
+helicotrema
+Helicteres
+helictite
+helide
+Heligmus
+heling
+helio
+heliocentric
+heliocentrical
+heliocentrically
+heliocentricism
+heliocentricity
+heliochrome
+heliochromic
+heliochromoscope
+heliochromotype
+heliochromy
+helioculture
+heliodon
+heliodor
+helioelectric
+helioengraving
+heliofugal
+Heliogabalize
+Heliogabalus
+heliogram
+heliograph
+heliographer
+heliographic
+heliographical
+heliographically
+heliography
+heliogravure
+helioid
+heliolater
+heliolatrous
+heliolatry
+heliolite
+Heliolites
+heliolithic
+Heliolitidae
+heliologist
+heliology
+heliometer
+heliometric
+heliometrical
+heliometrically
+heliometry
+heliomicrometer
+Helion
+heliophilia
+heliophiliac
+heliophilous
+heliophobe
+heliophobia
+heliophobic
+heliophobous
+heliophotography
+heliophyllite
+heliophyte
+Heliopora
+Helioporidae
+Heliopsis
+heliopticon
+Heliornis
+Heliornithes
+Heliornithidae
+Helios
+helioscope
+helioscopic
+helioscopy
+heliosis
+heliostat
+heliostatic
+heliotactic
+heliotaxis
+heliotherapy
+heliothermometer
+Heliothis
+heliotrope
+heliotroper
+Heliotropiaceae
+heliotropian
+heliotropic
+heliotropical
+heliotropically
+heliotropine
+heliotropism
+Heliotropium
+heliotropy
+heliotype
+heliotypic
+heliotypically
+heliotypography
+heliotypy
+Heliozoa
+heliozoan
+heliozoic
+heliport
+Helipterum
+helispheric
+helispherical
+helium
+helix
+helizitic
+hell
+Helladian
+Helladic
+Helladotherium
+hellandite
+hellanodic
+hellbender
+hellborn
+hellbox
+hellbred
+hellbroth
+hellcat
+helldog
+helleboraceous
+helleboraster
+hellebore
+helleborein
+helleboric
+helleborin
+Helleborine
+helleborism
+Helleborus
+Hellelt
+Hellen
+Hellene
+Hellenian
+Hellenic
+Hellenically
+Hellenicism
+Hellenism
+Hellenist
+Hellenistic
+Hellenistical
+Hellenistically
+Hellenisticism
+Hellenization
+Hellenize
+Hellenizer
+Hellenocentric
+Hellenophile
+heller
+helleri
+Hellespont
+Hellespontine
+hellgrammite
+hellhag
+hellhole
+hellhound
+hellicat
+hellier
+hellion
+hellish
+hellishly
+hellishness
+hellkite
+hellness
+hello
+hellroot
+hellship
+helluo
+hellward
+hellweed
+helly
+helm
+helmage
+helmed
+helmet
+helmeted
+helmetlike
+helmetmaker
+helmetmaking
+Helmholtzian
+helminth
+helminthagogic
+helminthagogue
+Helminthes
+helminthiasis
+helminthic
+helminthism
+helminthite
+Helminthocladiaceae
+helminthoid
+helminthologic
+helminthological
+helminthologist
+helminthology
+helminthosporiose
+Helminthosporium
+helminthosporoid
+helminthous
+helmless
+helmsman
+helmsmanship
+helobious
+heloderm
+Heloderma
+Helodermatidae
+helodermatoid
+helodermatous
+helodes
+heloe
+heloma
+Helonias
+helonin
+helosis
+Helot
+helotage
+helotism
+helotize
+helotomy
+helotry
+help
+helpable
+helper
+helpful
+helpfully
+helpfulness
+helping
+helpingly
+helpless
+helplessly
+helplessness
+helply
+helpmate
+helpmeet
+helpsome
+helpworthy
+helsingkite
+helve
+helvell
+Helvella
+Helvellaceae
+helvellaceous
+Helvellales
+helvellic
+helver
+Helvetia
+Helvetian
+Helvetic
+Helvetii
+Helvidian
+helvite
+hem
+hemabarometer
+hemachate
+hemachrome
+hemachrosis
+hemacite
+hemad
+hemadrometer
+hemadrometry
+hemadromograph
+hemadromometer
+hemadynameter
+hemadynamic
+hemadynamics
+hemadynamometer
+hemafibrite
+hemagglutinate
+hemagglutination
+hemagglutinative
+hemagglutinin
+hemagogic
+hemagogue
+hemal
+hemalbumen
+hemamoeba
+hemangioma
+hemangiomatosis
+hemangiosarcoma
+hemaphein
+hemapod
+hemapodous
+hemapoiesis
+hemapoietic
+hemapophyseal
+hemapophysial
+hemapophysis
+hemarthrosis
+hemase
+hemaspectroscope
+hemastatics
+hematachometer
+hematachometry
+hematal
+hematein
+hematemesis
+hematemetic
+hematencephalon
+hematherapy
+hematherm
+hemathermal
+hemathermous
+hemathidrosis
+hematic
+hematid
+hematidrosis
+hematimeter
+hematin
+hematinic
+hematinometer
+hematinometric
+hematinuria
+hematite
+hematitic
+hematobic
+hematobious
+hematobium
+hematoblast
+hematobranchiate
+hematocatharsis
+hematocathartic
+hematocele
+hematochezia
+hematochrome
+hematochyluria
+hematoclasia
+hematoclasis
+hematocolpus
+hematocrit
+hematocryal
+hematocrystallin
+hematocyanin
+hematocyst
+hematocystis
+hematocyte
+hematocytoblast
+hematocytogenesis
+hematocytometer
+hematocytotripsis
+hematocytozoon
+hematocyturia
+hematodynamics
+hematodynamometer
+hematodystrophy
+hematogen
+hematogenesis
+hematogenetic
+hematogenic
+hematogenous
+hematoglobulin
+hematography
+hematohidrosis
+hematoid
+hematoidin
+hematolin
+hematolite
+hematological
+hematologist
+hematology
+hematolymphangioma
+hematolysis
+hematolytic
+hematoma
+hematomancy
+hematometer
+hematometra
+hematometry
+hematomphalocele
+hematomyelia
+hematomyelitis
+hematonephrosis
+hematonic
+hematopathology
+hematopericardium
+hematopexis
+hematophobia
+hematophyte
+hematoplast
+hematoplastic
+hematopoiesis
+hematopoietic
+hematoporphyrin
+hematoporphyrinuria
+hematorrhachis
+hematorrhea
+hematosalpinx
+hematoscope
+hematoscopy
+hematose
+hematosepsis
+hematosin
+hematosis
+hematospectrophotometer
+hematospectroscope
+hematospermatocele
+hematospermia
+hematostibiite
+hematotherapy
+hematothermal
+hematothorax
+hematoxic
+hematozoal
+hematozoan
+hematozoic
+hematozoon
+hematozymosis
+hematozymotic
+hematuresis
+hematuria
+hematuric
+hemautogram
+hemautograph
+hemautographic
+hemautography
+heme
+hemellitene
+hemellitic
+hemelytral
+hemelytron
+hemen
+hemera
+hemeralope
+hemeralopia
+hemeralopic
+Hemerobaptism
+Hemerobaptist
+Hemerobian
+Hemerobiid
+Hemerobiidae
+Hemerobius
+Hemerocallis
+hemerologium
+hemerology
+hemerythrin
+hemiablepsia
+hemiacetal
+hemiachromatopsia
+hemiageusia
+hemiageustia
+hemialbumin
+hemialbumose
+hemialbumosuria
+hemialgia
+hemiamaurosis
+hemiamb
+hemiamblyopia
+hemiamyosthenia
+hemianacusia
+hemianalgesia
+hemianatropous
+hemianesthesia
+hemianopia
+hemianopic
+hemianopsia
+hemianoptic
+hemianosmia
+hemiapraxia
+Hemiascales
+Hemiasci
+Hemiascomycetes
+hemiasynergia
+hemiataxia
+hemiataxy
+hemiathetosis
+hemiatrophy
+hemiazygous
+Hemibasidiales
+Hemibasidii
+Hemibasidiomycetes
+hemibasidium
+hemibathybian
+hemibenthic
+hemibenthonic
+hemibranch
+hemibranchiate
+Hemibranchii
+hemic
+hemicanities
+hemicardia
+hemicardiac
+hemicarp
+hemicatalepsy
+hemicataleptic
+hemicellulose
+hemicentrum
+hemicephalous
+hemicerebrum
+Hemichorda
+hemichordate
+hemichorea
+hemichromatopsia
+hemicircle
+hemicircular
+hemiclastic
+hemicollin
+hemicrane
+hemicrania
+hemicranic
+hemicrany
+hemicrystalline
+hemicycle
+hemicyclic
+hemicyclium
+hemicylindrical
+hemidactylous
+Hemidactylus
+hemidemisemiquaver
+hemidiapente
+hemidiaphoresis
+hemiditone
+hemidomatic
+hemidome
+hemidrachm
+hemidysergia
+hemidysesthesia
+hemidystrophy
+hemiekton
+hemielliptic
+hemiepilepsy
+hemifacial
+hemiform
+Hemigale
+Hemigalus
+Hemiganus
+hemigastrectomy
+hemigeusia
+hemiglossal
+hemiglossitis
+hemiglyph
+hemignathous
+hemihdry
+hemihedral
+hemihedrally
+hemihedric
+hemihedrism
+hemihedron
+hemiholohedral
+hemihydrate
+hemihydrated
+hemihydrosis
+hemihypalgesia
+hemihyperesthesia
+hemihyperidrosis
+hemihypertonia
+hemihypertrophy
+hemihypesthesia
+hemihypoesthesia
+hemihypotonia
+hemikaryon
+hemikaryotic
+hemilaminectomy
+hemilaryngectomy
+Hemileia
+hemilethargy
+hemiligulate
+hemilingual
+hemimellitene
+hemimellitic
+hemimelus
+Hemimeridae
+Hemimerus
+Hemimetabola
+hemimetabole
+hemimetabolic
+hemimetabolism
+hemimetabolous
+hemimetaboly
+hemimetamorphic
+hemimetamorphosis
+hemimetamorphous
+hemimorph
+hemimorphic
+hemimorphism
+hemimorphite
+hemimorphy
+Hemimyaria
+hemin
+hemina
+hemine
+heminee
+hemineurasthenia
+hemiobol
+hemiolia
+hemiolic
+hemionus
+hemiope
+hemiopia
+hemiopic
+hemiorthotype
+hemiparalysis
+hemiparanesthesia
+hemiparaplegia
+hemiparasite
+hemiparasitic
+hemiparasitism
+hemiparesis
+hemiparesthesia
+hemiparetic
+hemipenis
+hemipeptone
+hemiphrase
+hemipic
+hemipinnate
+hemiplane
+hemiplankton
+hemiplegia
+hemiplegic
+hemiplegy
+hemipodan
+hemipode
+Hemipodii
+Hemipodius
+hemiprism
+hemiprismatic
+hemiprotein
+hemipter
+Hemiptera
+hemipteral
+hemipteran
+hemipteroid
+hemipterological
+hemipterology
+hemipteron
+hemipterous
+hemipyramid
+hemiquinonoid
+hemiramph
+Hemiramphidae
+Hemiramphinae
+hemiramphine
+Hemiramphus
+hemisaprophyte
+hemisaprophytic
+hemiscotosis
+hemisect
+hemisection
+hemispasm
+hemispheral
+hemisphere
+hemisphered
+hemispherical
+hemispherically
+hemispheroid
+hemispheroidal
+hemispherule
+hemistater
+hemistich
+hemistichal
+hemistrumectomy
+hemisymmetrical
+hemisymmetry
+hemisystole
+hemiterata
+hemiteratic
+hemiteratics
+hemiteria
+hemiterpene
+hemitery
+hemithyroidectomy
+hemitone
+hemitremor
+hemitrichous
+hemitriglyph
+hemitropal
+hemitrope
+hemitropic
+hemitropism
+hemitropous
+hemitropy
+hemitype
+hemitypic
+hemivagotony
+heml
+hemlock
+hemmel
+hemmer
+hemoalkalimeter
+hemoblast
+hemochromatosis
+hemochrome
+hemochromogen
+hemochromometer
+hemochromometry
+hemoclasia
+hemoclasis
+hemoclastic
+hemocoel
+hemocoele
+hemocoelic
+hemocoelom
+hemoconcentration
+hemoconia
+hemoconiosis
+hemocry
+hemocrystallin
+hemoculture
+hemocyanin
+hemocyte
+hemocytoblast
+hemocytogenesis
+hemocytolysis
+hemocytometer
+hemocytotripsis
+hemocytozoon
+hemocyturia
+hemodiagnosis
+hemodilution
+hemodrometer
+hemodrometry
+hemodromograph
+hemodromometer
+hemodynameter
+hemodynamic
+hemodynamics
+hemodystrophy
+hemoerythrin
+hemoflagellate
+hemofuscin
+hemogastric
+hemogenesis
+hemogenetic
+hemogenic
+hemogenous
+hemoglobic
+hemoglobin
+hemoglobinemia
+hemoglobiniferous
+hemoglobinocholia
+hemoglobinometer
+hemoglobinophilic
+hemoglobinous
+hemoglobinuria
+hemoglobinuric
+hemoglobulin
+hemogram
+hemogregarine
+hemoid
+hemokonia
+hemokoniosis
+hemol
+hemoleucocyte
+hemoleucocytic
+hemologist
+hemology
+hemolymph
+hemolymphatic
+hemolysin
+hemolysis
+hemolytic
+hemolyze
+hemomanometer
+hemometer
+hemometry
+hemonephrosis
+hemopathology
+hemopathy
+hemopericardium
+hemoperitoneum
+hemopexis
+hemophage
+hemophagia
+hemophagocyte
+hemophagocytosis
+hemophagous
+hemophagy
+hemophile
+Hemophileae
+hemophilia
+hemophiliac
+hemophilic
+Hemophilus
+hemophobia
+hemophthalmia
+hemophthisis
+hemopiezometer
+hemoplasmodium
+hemoplastic
+hemopneumothorax
+hemopod
+hemopoiesis
+hemopoietic
+hemoproctia
+hemoptoe
+hemoptysis
+hemopyrrole
+hemorrhage
+hemorrhagic
+hemorrhagin
+hemorrhea
+hemorrhodin
+hemorrhoid
+hemorrhoidal
+hemorrhoidectomy
+hemosalpinx
+hemoscope
+hemoscopy
+hemosiderin
+hemosiderosis
+hemospasia
+hemospastic
+hemospermia
+hemosporid
+hemosporidian
+hemostasia
+hemostasis
+hemostat
+hemostatic
+hemotachometer
+hemotherapeutics
+hemotherapy
+hemothorax
+hemotoxic
+hemotoxin
+hemotrophe
+hemotropic
+hemozoon
+hemp
+hempbush
+hempen
+hemplike
+hempseed
+hempstring
+hempweed
+hempwort
+hempy
+hemstitch
+hemstitcher
+hen
+henad
+henbane
+henbill
+henbit
+hence
+henceforth
+henceforward
+henceforwards
+henchboy
+henchman
+henchmanship
+hencoop
+hencote
+hend
+hendecacolic
+hendecagon
+hendecagonal
+hendecahedron
+hendecane
+hendecasemic
+hendecasyllabic
+hendecasyllable
+hendecatoic
+hendecoic
+hendecyl
+hendiadys
+hendly
+hendness
+heneicosane
+henequen
+henfish
+henhearted
+henhouse
+henhussy
+henism
+henlike
+henmoldy
+henna
+Hennebique
+hennery
+hennin
+hennish
+henny
+henogeny
+henotheism
+henotheist
+henotheistic
+henotic
+henpeck
+henpen
+Henrician
+Henrietta
+henroost
+Henry
+henry
+hent
+Hentenian
+henter
+hentriacontane
+henware
+henwife
+henwise
+henwoodite
+henyard
+heortological
+heortologion
+heortology
+hep
+hepar
+heparin
+heparinize
+hepatalgia
+hepatatrophia
+hepatatrophy
+hepatauxe
+hepatectomy
+hepatic
+Hepatica
+hepatica
+Hepaticae
+hepatical
+hepaticoduodenostomy
+hepaticoenterostomy
+hepaticogastrostomy
+hepaticologist
+hepaticology
+hepaticopulmonary
+hepaticostomy
+hepaticotomy
+hepatite
+hepatitis
+hepatization
+hepatize
+hepatocele
+hepatocirrhosis
+hepatocolic
+hepatocystic
+hepatoduodenal
+hepatoduodenostomy
+hepatodynia
+hepatodysentery
+hepatoenteric
+hepatoflavin
+hepatogastric
+hepatogenic
+hepatogenous
+hepatography
+hepatoid
+hepatolenticular
+hepatolith
+hepatolithiasis
+hepatolithic
+hepatological
+hepatologist
+hepatology
+hepatolysis
+hepatolytic
+hepatoma
+hepatomalacia
+hepatomegalia
+hepatomegaly
+hepatomelanosis
+hepatonephric
+hepatopathy
+hepatoperitonitis
+hepatopexia
+hepatopexy
+hepatophlebitis
+hepatophlebotomy
+hepatophyma
+hepatopneumonic
+hepatoportal
+hepatoptosia
+hepatoptosis
+hepatopulmonary
+hepatorenal
+hepatorrhagia
+hepatorrhaphy
+hepatorrhea
+hepatorrhexis
+hepatorrhoea
+hepatoscopy
+hepatostomy
+hepatotherapy
+hepatotomy
+hepatotoxemia
+hepatoumbilical
+hepcat
+Hephaesteum
+Hephaestian
+Hephaestic
+Hephaestus
+hephthemimer
+hephthemimeral
+hepialid
+Hepialidae
+Hepialus
+heppen
+hepper
+heptacapsular
+heptace
+heptachord
+heptachronous
+heptacolic
+heptacosane
+heptad
+heptadecane
+heptadecyl
+heptaglot
+heptagon
+heptagonal
+heptagynous
+heptahedral
+heptahedrical
+heptahedron
+heptahexahedral
+heptahydrate
+heptahydrated
+heptahydric
+heptahydroxy
+heptal
+heptameride
+Heptameron
+heptamerous
+heptameter
+heptamethylene
+heptametrical
+heptanaphthene
+Heptanchus
+heptandrous
+heptane
+Heptanesian
+heptangular
+heptanoic
+heptanone
+heptapetalous
+heptaphyllous
+heptaploid
+heptaploidy
+heptapodic
+heptapody
+heptarch
+heptarchal
+heptarchic
+heptarchical
+heptarchist
+heptarchy
+heptasemic
+heptasepalous
+heptaspermous
+heptastich
+heptastrophic
+heptastylar
+heptastyle
+heptasulphide
+heptasyllabic
+Heptateuch
+heptatomic
+heptatonic
+Heptatrema
+heptavalent
+heptene
+hepteris
+heptine
+heptite
+heptitol
+heptoic
+heptorite
+heptose
+heptoxide
+Heptranchias
+heptyl
+heptylene
+heptylic
+heptyne
+her
+Heraclean
+Heracleidan
+Heracleonite
+Heracleopolitan
+Heracleopolite
+Heracleum
+Heraclid
+Heraclidae
+Heraclidan
+Heraclitean
+Heracliteanism
+Heraclitic
+Heraclitical
+Heraclitism
+Herakles
+herald
+heraldess
+heraldic
+heraldical
+heraldically
+heraldist
+heraldize
+heraldress
+heraldry
+heraldship
+herapathite
+Herat
+Herb
+herb
+herbaceous
+herbaceously
+herbage
+herbaged
+herbager
+herbagious
+herbal
+herbalism
+herbalist
+herbalize
+herbane
+herbaria
+herbarial
+herbarian
+herbarism
+herbarist
+herbarium
+herbarize
+Herbartian
+Herbartianism
+herbary
+Herbert
+herbescent
+herbicidal
+herbicide
+herbicolous
+herbiferous
+herbish
+herbist
+Herbivora
+herbivore
+herbivority
+herbivorous
+herbless
+herblet
+herblike
+herbman
+herborist
+herborization
+herborize
+herborizer
+herbose
+herbosity
+herbous
+herbwife
+herbwoman
+herby
+hercogamous
+hercogamy
+Herculanean
+Herculanensian
+Herculanian
+Herculean
+Hercules
+Herculid
+Hercynian
+hercynite
+herd
+herdbook
+herdboy
+herder
+herderite
+herdic
+herding
+herdship
+herdsman
+herdswoman
+herdwick
+here
+hereabout
+hereadays
+hereafter
+hereafterward
+hereamong
+hereat
+hereaway
+hereaways
+herebefore
+hereby
+heredipetous
+heredipety
+hereditability
+hereditable
+hereditably
+hereditament
+hereditarian
+hereditarianism
+hereditarily
+hereditariness
+hereditarist
+hereditary
+hereditation
+hereditative
+hereditism
+hereditist
+hereditivity
+heredity
+heredium
+heredofamilial
+heredolues
+heredoluetic
+heredosyphilis
+heredosyphilitic
+heredosyphilogy
+heredotuberculosis
+Hereford
+herefrom
+heregeld
+herein
+hereinabove
+hereinafter
+hereinbefore
+hereinto
+herem
+hereness
+hereniging
+hereof
+hereon
+hereright
+Herero
+heresiarch
+heresimach
+heresiographer
+heresiography
+heresiologer
+heresiologist
+heresiology
+heresy
+heresyphobia
+heresyproof
+heretic
+heretical
+heretically
+hereticalness
+hereticate
+heretication
+hereticator
+hereticide
+hereticize
+hereto
+heretoch
+heretofore
+heretoforetime
+heretoga
+heretrix
+hereunder
+hereunto
+hereupon
+hereward
+herewith
+herewithal
+herile
+heriot
+heriotable
+herisson
+heritability
+heritable
+heritably
+heritage
+heritance
+Heritiera
+heritor
+heritress
+heritrix
+herl
+herling
+herma
+hermaean
+hermaic
+Herman
+hermaphrodite
+hermaphroditic
+hermaphroditical
+hermaphroditically
+hermaphroditish
+hermaphroditism
+hermaphroditize
+Hermaphroditus
+hermeneut
+hermeneutic
+hermeneutical
+hermeneutically
+hermeneutics
+hermeneutist
+Hermes
+Hermesian
+Hermesianism
+Hermetic
+hermetic
+hermetical
+hermetically
+hermeticism
+Hermetics
+Hermetism
+Hermetist
+hermidin
+Herminone
+Hermione
+Hermit
+hermit
+hermitage
+hermitary
+hermitess
+hermitic
+hermitical
+hermitically
+hermitish
+hermitism
+hermitize
+hermitry
+hermitship
+Hermo
+hermodact
+hermodactyl
+Hermogenian
+hermoglyphic
+hermoglyphist
+hermokopid
+hern
+Hernandia
+Hernandiaceae
+hernandiaceous
+hernanesell
+hernani
+hernant
+herne
+hernia
+hernial
+Herniaria
+herniarin
+herniary
+herniate
+herniated
+herniation
+hernioenterotomy
+hernioid
+herniology
+herniopuncture
+herniorrhaphy
+herniotome
+herniotomist
+herniotomy
+hero
+heroarchy
+Herodian
+herodian
+Herodianic
+Herodii
+Herodiones
+herodionine
+heroess
+herohead
+herohood
+heroic
+heroical
+heroically
+heroicalness
+heroicity
+heroicly
+heroicness
+heroicomic
+heroicomical
+heroid
+Heroides
+heroify
+Heroin
+heroin
+heroine
+heroineship
+heroinism
+heroinize
+heroism
+heroistic
+heroization
+heroize
+herolike
+heromonger
+heron
+heroner
+heronite
+heronry
+heroogony
+heroologist
+heroology
+Herophile
+Herophilist
+heroship
+herotheism
+herpes
+Herpestes
+Herpestinae
+herpestine
+herpetic
+herpetiform
+herpetism
+herpetography
+herpetoid
+herpetologic
+herpetological
+herpetologically
+herpetologist
+herpetology
+herpetomonad
+Herpetomonas
+herpetophobia
+herpetotomist
+herpetotomy
+herpolhode
+Herpotrichia
+herrengrundite
+Herrenvolk
+herring
+herringbone
+herringer
+Herrnhuter
+hers
+Herschelian
+herschelite
+herse
+hersed
+herself
+hership
+hersir
+hertz
+hertzian
+Heruli
+Herulian
+Hervati
+Herve
+Herzegovinian
+Hesiodic
+Hesione
+Hesionidae
+hesitance
+hesitancy
+hesitant
+hesitantly
+hesitate
+hesitater
+hesitating
+hesitatingly
+hesitatingness
+hesitation
+hesitative
+hesitatively
+hesitatory
+Hesper
+Hespera
+Hesperia
+Hesperian
+Hesperic
+Hesperid
+hesperid
+hesperidate
+hesperidene
+hesperideous
+Hesperides
+Hesperidian
+hesperidin
+hesperidium
+hesperiid
+Hesperiidae
+hesperinon
+Hesperis
+hesperitin
+Hesperornis
+Hesperornithes
+hesperornithid
+Hesperornithiformes
+hesperornithoid
+Hesperus
+Hessian
+hessite
+hessonite
+hest
+Hester
+hestern
+hesternal
+Hesther
+hesthogenous
+Hesychasm
+Hesychast
+hesychastic
+het
+hetaera
+hetaeria
+hetaeric
+hetaerism
+Hetaerist
+hetaerist
+hetaeristic
+hetaerocracy
+hetaerolite
+hetaery
+heteradenia
+heteradenic
+heterakid
+Heterakis
+Heteralocha
+heterandrous
+heterandry
+heteratomic
+heterauxesis
+heteraxial
+heteric
+heterically
+hetericism
+hetericist
+heterism
+heterization
+heterize
+hetero
+heteroagglutinin
+heteroalbumose
+heteroauxin
+heteroblastic
+heteroblastically
+heteroblasty
+heterocarpism
+heterocarpous
+Heterocarpus
+heterocaseose
+heterocellular
+heterocentric
+heterocephalous
+Heterocera
+heterocerc
+heterocercal
+heterocercality
+heterocercy
+heterocerous
+heterochiral
+heterochlamydeous
+Heterochloridales
+heterochromatic
+heterochromatin
+heterochromatism
+heterochromatization
+heterochromatized
+heterochrome
+heterochromia
+heterochromic
+heterochromosome
+heterochromous
+heterochromy
+heterochronic
+heterochronism
+heterochronistic
+heterochronous
+heterochrony
+heterochrosis
+heterochthon
+heterochthonous
+heterocline
+heteroclinous
+heteroclital
+heteroclite
+heteroclitica
+heteroclitous
+Heterocoela
+heterocoelous
+Heterocotylea
+heterocycle
+heterocyclic
+heterocyst
+heterocystous
+heterodactyl
+Heterodactylae
+heterodactylous
+Heterodera
+Heterodon
+heterodont
+Heterodonta
+Heterodontidae
+heterodontism
+heterodontoid
+Heterodontus
+heterodox
+heterodoxal
+heterodoxical
+heterodoxly
+heterodoxness
+heterodoxy
+heterodromous
+heterodromy
+heterodyne
+heteroecious
+heteroeciously
+heteroeciousness
+heteroecism
+heteroecismal
+heteroecy
+heteroepic
+heteroepy
+heteroerotic
+heteroerotism
+heterofermentative
+heterofertilization
+heterogalactic
+heterogamete
+heterogametic
+heterogametism
+heterogamety
+heterogamic
+heterogamous
+heterogamy
+heterogangliate
+heterogen
+heterogene
+heterogeneal
+heterogenean
+heterogeneity
+heterogeneous
+heterogeneously
+heterogeneousness
+heterogenesis
+heterogenetic
+heterogenic
+heterogenicity
+heterogenist
+heterogenous
+heterogeny
+heteroglobulose
+heterognath
+Heterognathi
+heterogone
+heterogonism
+heterogonous
+heterogonously
+heterogony
+heterograft
+heterographic
+heterographical
+heterography
+Heterogyna
+heterogynal
+heterogynous
+heteroicous
+heteroimmune
+heteroinfection
+heteroinoculable
+heteroinoculation
+heterointoxication
+heterokaryon
+heterokaryosis
+heterokaryotic
+heterokinesis
+heterokinetic
+Heterokontae
+heterokontan
+heterolalia
+heterolateral
+heterolecithal
+heterolith
+heterolobous
+heterologic
+heterological
+heterologically
+heterologous
+heterology
+heterolysin
+heterolysis
+heterolytic
+heteromallous
+heteromastigate
+heteromastigote
+Heteromeles
+Heteromera
+heteromeral
+Heteromeran
+Heteromeri
+heteromeric
+heteromerous
+Heterometabola
+heterometabole
+heterometabolic
+heterometabolism
+heterometabolous
+heterometaboly
+heterometric
+Heteromi
+Heteromita
+Heteromorpha
+Heteromorphae
+heteromorphic
+heteromorphism
+heteromorphite
+heteromorphosis
+heteromorphous
+heteromorphy
+Heteromya
+Heteromyaria
+heteromyarian
+Heteromyidae
+Heteromys
+heteronereid
+heteronereis
+Heteroneura
+heteronomous
+heteronomously
+heteronomy
+heteronuclear
+heteronym
+heteronymic
+heteronymous
+heteronymously
+heteronymy
+heteroousia
+Heteroousian
+heteroousian
+Heteroousiast
+heteroousious
+heteropathic
+heteropathy
+heteropelmous
+heteropetalous
+Heterophaga
+Heterophagi
+heterophagous
+heterophasia
+heterophemism
+heterophemist
+heterophemistic
+heterophemize
+heterophemy
+heterophile
+heterophoria
+heterophoric
+heterophylesis
+heterophyletic
+heterophyllous
+heterophylly
+heterophyly
+heterophyte
+heterophytic
+Heteropia
+Heteropidae
+heteroplasia
+heteroplasm
+heteroplastic
+heteroplasty
+heteroploid
+heteroploidy
+heteropod
+Heteropoda
+heteropodal
+heteropodous
+heteropolar
+heteropolarity
+heteropoly
+heteroproteide
+heteroproteose
+heteropter
+Heteroptera
+heteropterous
+heteroptics
+heteropycnosis
+Heterorhachis
+heteroscope
+heteroscopy
+heterosexual
+heterosexuality
+heteroside
+Heterosiphonales
+heterosis
+Heterosomata
+Heterosomati
+heterosomatous
+heterosome
+Heterosomi
+heterosomous
+Heterosporeae
+heterosporic
+Heterosporium
+heterosporous
+heterospory
+heterostatic
+heterostemonous
+Heterostraca
+heterostracan
+Heterostraci
+heterostrophic
+heterostrophous
+heterostrophy
+heterostyled
+heterostylism
+heterostylous
+heterostyly
+heterosuggestion
+heterosyllabic
+heterotactic
+heterotactous
+heterotaxia
+heterotaxic
+heterotaxis
+heterotaxy
+heterotelic
+heterothallic
+heterothallism
+heterothermal
+heterothermic
+heterotic
+heterotopia
+heterotopic
+heterotopism
+heterotopous
+heterotopy
+heterotransplant
+heterotransplantation
+heterotrich
+Heterotricha
+Heterotrichales
+Heterotrichida
+heterotrichosis
+heterotrichous
+heterotropal
+heterotroph
+heterotrophic
+heterotrophy
+heterotropia
+heterotropic
+heterotropous
+heterotype
+heterotypic
+heterotypical
+heteroxanthine
+heteroxenous
+heterozetesis
+heterozygosis
+heterozygosity
+heterozygote
+heterozygotic
+heterozygous
+heterozygousness
+hething
+hetman
+hetmanate
+hetmanship
+hetter
+hetterly
+Hettie
+Hetty
+heuau
+Heuchera
+heugh
+heulandite
+heumite
+heuretic
+heuristic
+heuristically
+Hevea
+hevi
+hew
+hewable
+hewel
+hewer
+hewettite
+hewhall
+hewn
+hewt
+hex
+hexa
+hexabasic
+Hexabiblos
+hexabiose
+hexabromide
+hexacanth
+hexacanthous
+hexacapsular
+hexacarbon
+hexace
+hexachloride
+hexachlorocyclohexane
+hexachloroethane
+hexachord
+hexachronous
+hexacid
+hexacolic
+Hexacoralla
+hexacorallan
+Hexacorallia
+hexacosane
+hexacosihedroid
+hexact
+hexactinal
+hexactine
+hexactinellid
+Hexactinellida
+hexactinellidan
+hexactinelline
+hexactinian
+hexacyclic
+hexad
+hexadactyle
+hexadactylic
+hexadactylism
+hexadactylous
+hexadactyly
+hexadecahedroid
+hexadecane
+hexadecanoic
+hexadecene
+hexadecyl
+hexadic
+hexadiene
+hexadiyne
+hexafoil
+hexaglot
+hexagon
+hexagonal
+hexagonally
+hexagonial
+hexagonical
+hexagonous
+hexagram
+Hexagrammidae
+hexagrammoid
+Hexagrammos
+hexagyn
+Hexagynia
+hexagynian
+hexagynous
+hexahedral
+hexahedron
+hexahydrate
+hexahydrated
+hexahydric
+hexahydride
+hexahydrite
+hexahydrobenzene
+hexahydroxy
+hexakisoctahedron
+hexakistetrahedron
+hexameral
+hexameric
+hexamerism
+hexameron
+hexamerous
+hexameter
+hexamethylenamine
+hexamethylene
+hexamethylenetetramine
+hexametral
+hexametric
+hexametrical
+hexametrist
+hexametrize
+hexametrographer
+Hexamita
+hexamitiasis
+hexammine
+hexammino
+hexanaphthene
+Hexanchidae
+Hexanchus
+Hexandria
+hexandric
+hexandrous
+hexandry
+hexane
+hexanedione
+hexangular
+hexangularly
+hexanitrate
+hexanitrodiphenylamine
+hexapartite
+hexaped
+hexapetaloid
+hexapetaloideous
+hexapetalous
+hexaphyllous
+hexapla
+hexaplar
+hexaplarian
+hexaplaric
+hexaploid
+hexaploidy
+hexapod
+Hexapoda
+hexapodal
+hexapodan
+hexapodous
+hexapody
+hexapterous
+hexaradial
+hexarch
+hexarchy
+hexaseme
+hexasemic
+hexasepalous
+hexaspermous
+hexastemonous
+hexaster
+hexastich
+hexastichic
+hexastichon
+hexastichous
+hexastichy
+hexastigm
+hexastylar
+hexastyle
+hexastylos
+hexasulphide
+hexasyllabic
+hexatetrahedron
+Hexateuch
+Hexateuchal
+hexathlon
+hexatomic
+hexatriacontane
+hexatriose
+hexavalent
+hexecontane
+hexenbesen
+hexene
+hexer
+hexerei
+hexeris
+hexestrol
+hexicological
+hexicology
+hexine
+hexiological
+hexiology
+hexis
+hexitol
+hexoctahedral
+hexoctahedron
+hexode
+hexoestrol
+hexogen
+hexoic
+hexokinase
+hexone
+hexonic
+hexosamine
+hexosaminic
+hexosan
+hexose
+hexosediphosphoric
+hexosemonophosphoric
+hexosephosphatase
+hexosephosphoric
+hexoylene
+hexpartite
+hexyl
+hexylene
+hexylic
+hexylresorcinol
+hexyne
+hey
+heyday
+Hezron
+Hezronites
+hi
+hia
+Hianakoto
+hiant
+hiatal
+hiate
+hiation
+hiatus
+Hibbertia
+hibbin
+hibernacle
+hibernacular
+hibernaculum
+hibernal
+hibernate
+hibernation
+hibernator
+Hibernia
+Hibernian
+Hibernianism
+Hibernic
+Hibernical
+Hibernically
+Hibernicism
+Hibernicize
+Hibernization
+Hibernize
+Hibernologist
+Hibernology
+Hibiscus
+Hibito
+Hibitos
+Hibunci
+hic
+hicatee
+hiccup
+hick
+hickey
+hickory
+Hicksite
+hickwall
+Hicoria
+hidable
+hidage
+hidalgism
+hidalgo
+hidalgoism
+hidated
+hidation
+Hidatsa
+hidden
+hiddenite
+hiddenly
+hiddenmost
+hiddenness
+hide
+hideaway
+hidebind
+hidebound
+hideboundness
+hided
+hideland
+hideless
+hideling
+hideosity
+hideous
+hideously
+hideousness
+hider
+hidling
+hidlings
+hidradenitis
+hidrocystoma
+hidromancy
+hidropoiesis
+hidrosis
+hidrotic
+hie
+hieder
+hielaman
+hield
+hielmite
+hiemal
+hiemation
+Hienz
+Hieracian
+Hieracium
+hieracosphinx
+hierapicra
+hierarch
+hierarchal
+hierarchic
+hierarchical
+hierarchically
+hierarchism
+hierarchist
+hierarchize
+hierarchy
+hieratic
+hieratical
+hieratically
+hieraticism
+hieratite
+Hierochloe
+hierocracy
+hierocratic
+hierocratical
+hierodule
+hierodulic
+Hierofalco
+hierogamy
+hieroglyph
+hieroglypher
+hieroglyphic
+hieroglyphical
+hieroglyphically
+hieroglyphist
+hieroglyphize
+hieroglyphology
+hieroglyphy
+hierogram
+hierogrammat
+hierogrammate
+hierogrammateus
+hierogrammatic
+hierogrammatical
+hierogrammatist
+hierograph
+hierographer
+hierographic
+hierographical
+hierography
+hierolatry
+hierologic
+hierological
+hierologist
+hierology
+hieromachy
+hieromancy
+hieromnemon
+hieromonach
+hieron
+Hieronymic
+Hieronymite
+hieropathic
+hierophancy
+hierophant
+hierophantes
+hierophantic
+hierophantically
+hierophanticly
+hieros
+hieroscopy
+Hierosolymitan
+Hierosolymite
+hierurgical
+hierurgy
+hifalutin
+higdon
+higgaion
+higginsite
+higgle
+higglehaggle
+higgler
+higglery
+high
+highball
+highbelia
+highbinder
+highborn
+highboy
+highbred
+higher
+highermost
+highest
+highfalutin
+highfaluting
+highfalutinism
+highflying
+highhanded
+highhandedly
+highhandedness
+highhearted
+highheartedly
+highheartedness
+highish
+highjack
+highjacker
+highland
+highlander
+highlandish
+Highlandman
+Highlandry
+highlight
+highliving
+highly
+highman
+highmoor
+highmost
+highness
+highroad
+hight
+hightoby
+hightop
+highway
+highwayman
+higuero
+hijack
+hike
+hiker
+Hilaria
+hilarious
+hilariously
+hilariousness
+hilarity
+Hilary
+Hilarymas
+Hilarytide
+hilasmic
+hilch
+Hilda
+Hildebrand
+Hildebrandian
+Hildebrandic
+Hildebrandine
+Hildebrandism
+Hildebrandist
+Hildebrandslied
+Hildegarde
+hilding
+hiliferous
+hill
+Hillary
+hillberry
+hillbilly
+hillculture
+hillebrandite
+Hillel
+hiller
+hillet
+Hillhousia
+hilliness
+hillman
+hillock
+hillocked
+hillocky
+hillsale
+hillsalesman
+hillside
+hillsman
+hilltop
+hilltrot
+hillward
+hillwoman
+hilly
+hilsa
+hilt
+hiltless
+hilum
+hilus
+him
+Hima
+Himalaya
+Himalayan
+Himantopus
+himation
+Himawan
+himp
+himself
+himward
+himwards
+Himyaric
+Himyarite
+Himyaritic
+hin
+hinau
+Hinayana
+hinch
+hind
+hindberry
+hindbrain
+hindcast
+hinddeck
+hinder
+hinderance
+hinderer
+hinderest
+hinderful
+hinderfully
+hinderingly
+hinderlands
+hinderlings
+hinderlins
+hinderly
+hinderment
+hindermost
+hindersome
+hindhand
+hindhead
+Hindi
+hindmost
+hindquarter
+hindrance
+hindsaddle
+hindsight
+Hindu
+Hinduism
+Hinduize
+Hindustani
+hindward
+hing
+hinge
+hingecorner
+hingeflower
+hingeless
+hingelike
+hinger
+hingeways
+hingle
+hinney
+hinnible
+Hinnites
+hinny
+hinoid
+hinoideous
+hinoki
+hinsdalite
+hint
+hintedly
+hinter
+hinterland
+hintingly
+hintproof
+hintzeite
+Hiodon
+hiodont
+Hiodontidae
+hiortdahlite
+hip
+hipbone
+hipe
+hiper
+hiphalt
+hipless
+hipmold
+Hippa
+hippalectryon
+hipparch
+Hipparion
+Hippeastrum
+hipped
+Hippelates
+hippen
+Hippia
+hippian
+hippiater
+hippiatric
+hippiatrical
+hippiatrics
+hippiatrist
+hippiatry
+hippic
+Hippidae
+Hippidion
+Hippidium
+hipping
+hippish
+hipple
+hippo
+Hippobosca
+hippoboscid
+Hippoboscidae
+hippocamp
+hippocampal
+hippocampi
+hippocampine
+hippocampus
+Hippocastanaceae
+hippocastanaceous
+hippocaust
+hippocentaur
+hippocentauric
+hippocerf
+hippocoprosterol
+hippocras
+Hippocratea
+Hippocrateaceae
+hippocrateaceous
+Hippocratian
+Hippocratic
+Hippocratical
+Hippocratism
+Hippocrene
+Hippocrenian
+hippocrepian
+hippocrepiform
+Hippodamia
+hippodamous
+hippodrome
+hippodromic
+hippodromist
+hippogastronomy
+Hippoglosinae
+Hippoglossidae
+Hippoglossus
+hippogriff
+hippogriffin
+hippoid
+hippolite
+hippolith
+hippological
+hippologist
+hippology
+Hippolytan
+Hippolyte
+Hippolytidae
+Hippolytus
+hippomachy
+hippomancy
+hippomanes
+Hippomedon
+hippomelanin
+Hippomenes
+hippometer
+hippometric
+hippometry
+Hipponactean
+hipponosological
+hipponosology
+hippopathological
+hippopathology
+hippophagi
+hippophagism
+hippophagist
+hippophagistical
+hippophagous
+hippophagy
+hippophile
+hippophobia
+hippopod
+hippopotami
+hippopotamian
+hippopotamic
+Hippopotamidae
+hippopotamine
+hippopotamoid
+hippopotamus
+Hipposelinum
+hippotigrine
+Hippotigris
+hippotomical
+hippotomist
+hippotomy
+hippotragine
+Hippotragus
+hippurate
+hippuric
+hippurid
+Hippuridaceae
+Hippuris
+hippurite
+Hippurites
+hippuritic
+Hippuritidae
+hippuritoid
+hippus
+hippy
+hipshot
+hipwort
+hirable
+hiragana
+Hiram
+Hiramite
+hircarra
+hircine
+hircinous
+hircocerf
+hircocervus
+hircosity
+hire
+hired
+hireless
+hireling
+hireman
+Hiren
+hirer
+hirmologion
+hirmos
+Hirneola
+hiro
+Hirofumi
+hirondelle
+Hirotoshi
+Hiroyuki
+hirple
+hirrient
+hirse
+hirsel
+hirsle
+hirsute
+hirsuteness
+hirsuties
+hirsutism
+hirsutulous
+Hirtella
+hirtellous
+Hirudin
+hirudine
+Hirudinea
+hirudinean
+hirudiniculture
+Hirudinidae
+hirudinize
+hirudinoid
+Hirudo
+hirundine
+Hirundinidae
+hirundinous
+Hirundo
+his
+hish
+hisingerite
+hisn
+Hispa
+Hispania
+Hispanic
+Hispanicism
+Hispanicize
+hispanidad
+Hispaniolate
+Hispaniolize
+Hispanist
+Hispanize
+Hispanophile
+Hispanophobe
+hispid
+hispidity
+hispidulate
+hispidulous
+Hispinae
+hiss
+hisser
+hissing
+hissingly
+hissproof
+hist
+histaminase
+histamine
+histaminic
+histidine
+histie
+histiocyte
+histiocytic
+histioid
+histiology
+Histiophoridae
+Histiophorus
+histoblast
+histochemic
+histochemical
+histochemistry
+histoclastic
+histocyte
+histodiagnosis
+histodialysis
+histodialytic
+histogen
+histogenesis
+histogenetic
+histogenetically
+histogenic
+histogenous
+histogeny
+histogram
+histographer
+histographic
+histographical
+histography
+histoid
+histologic
+histological
+histologically
+histologist
+histology
+histolysis
+histolytic
+histometabasis
+histomorphological
+histomorphologically
+histomorphology
+histon
+histonal
+histone
+histonomy
+histopathologic
+histopathological
+histopathologist
+histopathology
+histophyly
+histophysiological
+histophysiology
+Histoplasma
+histoplasmin
+histoplasmosis
+historial
+historian
+historiated
+historic
+historical
+historically
+historicalness
+historician
+historicism
+historicity
+historicize
+historicocabbalistical
+historicocritical
+historicocultural
+historicodogmatic
+historicogeographical
+historicophilosophica
+historicophysical
+historicopolitical
+historicoprophetic
+historicoreligious
+historics
+historicus
+historied
+historier
+historiette
+historify
+historiograph
+historiographer
+historiographership
+historiographic
+historiographical
+historiographically
+historiography
+historiological
+historiology
+historiometric
+historiometry
+historionomer
+historious
+historism
+historize
+history
+histotherapist
+histotherapy
+histotome
+histotomy
+histotrophic
+histotrophy
+histotropic
+histozoic
+histozyme
+histrio
+Histriobdella
+Histriomastix
+histrion
+histrionic
+histrionical
+histrionically
+histrionicism
+histrionism
+hit
+hitch
+hitcher
+hitchhike
+hitchhiker
+hitchily
+hitchiness
+Hitchiti
+hitchproof
+hitchy
+hithe
+hither
+hithermost
+hitherto
+hitherward
+Hitlerism
+Hitlerite
+hitless
+Hitoshi
+hittable
+hitter
+Hittite
+Hittitics
+Hittitology
+Hittology
+hive
+hiveless
+hiver
+hives
+hiveward
+Hivite
+hizz
+Hler
+Hlidhskjalf
+Hlithskjalf
+Hlorrithi
+Ho
+ho
+hoar
+hoard
+hoarder
+hoarding
+hoardward
+hoarfrost
+hoarhead
+hoarheaded
+hoarhound
+hoarily
+hoariness
+hoarish
+hoarness
+hoarse
+hoarsely
+hoarsen
+hoarseness
+hoarstone
+hoarwort
+hoary
+hoaryheaded
+hoast
+hoastman
+hoatzin
+hoax
+hoaxee
+hoaxer
+hoaxproof
+hob
+hobber
+Hobbesian
+hobbet
+Hobbian
+hobbil
+Hobbism
+Hobbist
+Hobbistical
+hobble
+hobblebush
+hobbledehoy
+hobbledehoydom
+hobbledehoyhood
+hobbledehoyish
+hobbledehoyishness
+hobbledehoyism
+hobbledygee
+hobbler
+hobbling
+hobblingly
+hobbly
+hobby
+hobbyhorse
+hobbyhorsical
+hobbyhorsically
+hobbyism
+hobbyist
+hobbyless
+hobgoblin
+hoblike
+hobnail
+hobnailed
+hobnailer
+hobnob
+hobo
+hoboism
+Hobomoco
+hobthrush
+hocco
+Hochelaga
+Hochheimer
+hock
+Hockday
+hockelty
+hocker
+hocket
+hockey
+hockshin
+Hocktide
+hocky
+hocus
+hod
+hodden
+hodder
+hoddle
+hoddy
+hodening
+hodful
+hodgepodge
+Hodgkin
+hodgkinsonite
+hodiernal
+hodman
+hodmandod
+hodograph
+hodometer
+hodometrical
+hoe
+hoecake
+hoedown
+hoeful
+hoer
+hoernesite
+Hoffmannist
+Hoffmannite
+hog
+hoga
+hogan
+Hogarthian
+hogback
+hogbush
+hogfish
+hogframe
+hogged
+hogger
+hoggerel
+hoggery
+hogget
+hoggie
+hoggin
+hoggish
+hoggishly
+hoggishness
+hoggism
+hoggy
+hogherd
+hoghide
+hoghood
+hoglike
+hogling
+hogmace
+hogmanay
+Hogni
+hognose
+hognut
+hogpen
+hogreeve
+hogrophyte
+hogshead
+hogship
+hogshouther
+hogskin
+hogsty
+hogward
+hogwash
+hogweed
+hogwort
+hogyard
+Hohe
+Hohenzollern
+Hohenzollernism
+Hohn
+Hohokam
+hoi
+hoick
+hoin
+hoise
+hoist
+hoistaway
+hoister
+hoisting
+hoistman
+hoistway
+hoit
+hoju
+Hokan
+hokey
+hokeypokey
+hokum
+holagogue
+holarctic
+holard
+holarthritic
+holarthritis
+holaspidean
+holcad
+holcodont
+Holconoti
+Holcus
+hold
+holdable
+holdall
+holdback
+holden
+holdenite
+holder
+holdership
+holdfast
+holdfastness
+holding
+holdingly
+holdout
+holdover
+holdsman
+holdup
+hole
+holeable
+Holectypina
+holectypoid
+holeless
+holeman
+holeproof
+holer
+holethnic
+holethnos
+holewort
+holey
+holia
+holiday
+holidayer
+holidayism
+holidaymaker
+holidaymaking
+holily
+holiness
+holing
+holinight
+holism
+holistic
+holistically
+holl
+holla
+hollaite
+Holland
+hollandaise
+Hollander
+Hollandish
+hollandite
+Hollands
+Hollantide
+holler
+hollin
+holliper
+hollo
+hollock
+hollong
+hollow
+hollower
+hollowfaced
+hollowfoot
+hollowhearted
+hollowheartedness
+hollowly
+hollowness
+holluschick
+Holly
+holly
+hollyhock
+Hollywood
+Hollywooder
+Hollywoodize
+holm
+holmberry
+holmgang
+holmia
+holmic
+holmium
+holmos
+holobaptist
+holobenthic
+holoblastic
+holoblastically
+holobranch
+holocaine
+holocarpic
+holocarpous
+holocaust
+holocaustal
+holocaustic
+Holocene
+holocentrid
+Holocentridae
+holocentroid
+Holocentrus
+Holocephala
+holocephalan
+Holocephali
+holocephalian
+holocephalous
+Holochoanites
+holochoanitic
+holochoanoid
+Holochoanoida
+holochoanoidal
+holochordate
+holochroal
+holoclastic
+holocrine
+holocryptic
+holocrystalline
+holodactylic
+holodedron
+Holodiscus
+hologamous
+hologamy
+hologastrula
+hologastrular
+Holognatha
+holognathous
+hologonidium
+holograph
+holographic
+holographical
+holohedral
+holohedric
+holohedrism
+holohemihedral
+holohyaline
+holomastigote
+Holometabola
+holometabole
+holometabolian
+holometabolic
+holometabolism
+holometabolous
+holometaboly
+holometer
+holomorph
+holomorphic
+holomorphism
+holomorphosis
+holomorphy
+Holomyaria
+holomyarian
+Holomyarii
+holoparasite
+holoparasitic
+Holophane
+holophane
+holophotal
+holophote
+holophotometer
+holophrase
+holophrasis
+holophrasm
+holophrastic
+holophyte
+holophytic
+holoplankton
+holoplanktonic
+holoplexia
+holopneustic
+holoproteide
+holoptic
+holoptychian
+holoptychiid
+Holoptychiidae
+Holoptychius
+holoquinoid
+holoquinoidal
+holoquinonic
+holoquinonoid
+holorhinal
+holosaprophyte
+holosaprophytic
+holosericeous
+holoside
+holosiderite
+Holosiphona
+holosiphonate
+Holosomata
+holosomatous
+holospondaic
+holostean
+Holostei
+holosteous
+holosteric
+Holosteum
+Holostomata
+holostomate
+holostomatous
+holostome
+holostomous
+holostylic
+holosymmetric
+holosymmetrical
+holosymmetry
+holosystematic
+holosystolic
+holothecal
+holothoracic
+Holothuria
+holothurian
+Holothuridea
+holothurioid
+Holothurioidea
+holotonia
+holotonic
+holotony
+holotrich
+Holotricha
+holotrichal
+Holotrichida
+holotrichous
+holotype
+holour
+holozoic
+Holstein
+holster
+holstered
+holt
+holy
+holyday
+holyokeite
+holystone
+holytide
+homage
+homageable
+homager
+Homalocenchrus
+homalogonatous
+homalographic
+homaloid
+homaloidal
+Homalonotus
+Homalopsinae
+Homaloptera
+Homalopterous
+homalosternal
+Homalosternii
+Homam
+Homaridae
+homarine
+homaroid
+Homarus
+homatomic
+homaxial
+homaxonial
+homaxonic
+Homburg
+home
+homebody
+homeborn
+homebound
+homebred
+homecomer
+homecraft
+homecroft
+homecrofter
+homecrofting
+homefarer
+homefelt
+homegoer
+homekeeper
+homekeeping
+homeland
+homelander
+homeless
+homelessly
+homelessness
+homelet
+homelike
+homelikeness
+homelily
+homeliness
+homeling
+homely
+homelyn
+homemade
+homemaker
+homemaking
+homeoblastic
+homeochromatic
+homeochromatism
+homeochronous
+homeocrystalline
+homeogenic
+homeogenous
+homeoid
+homeoidal
+homeoidality
+homeokinesis
+homeokinetic
+homeomerous
+homeomorph
+homeomorphic
+homeomorphism
+homeomorphous
+homeomorphy
+homeopath
+homeopathic
+homeopathically
+homeopathician
+homeopathicity
+homeopathist
+homeopathy
+homeophony
+homeoplasia
+homeoplastic
+homeoplasy
+homeopolar
+homeosis
+homeostasis
+homeostatic
+homeotic
+homeotransplant
+homeotransplantation
+homeotype
+homeotypic
+homeotypical
+homeowner
+homeozoic
+Homer
+homer
+Homerian
+Homeric
+Homerical
+Homerically
+Homerid
+Homeridae
+Homeridian
+Homerist
+Homerologist
+Homerology
+Homeromastix
+homeseeker
+homesick
+homesickly
+homesickness
+homesite
+homesome
+homespun
+homestall
+homestead
+homesteader
+homester
+homestretch
+homeward
+homewardly
+homework
+homeworker
+homewort
+homey
+homeyness
+homicidal
+homicidally
+homicide
+homicidious
+homiculture
+homilete
+homiletic
+homiletical
+homiletically
+homiletics
+homiliarium
+homiliary
+homilist
+homilite
+homilize
+homily
+hominal
+hominess
+Hominian
+hominid
+Hominidae
+hominiform
+hominify
+hominine
+hominisection
+hominivorous
+hominoid
+hominy
+homish
+homishness
+homo
+homoanisaldehyde
+homoanisic
+homoarecoline
+homobaric
+homoblastic
+homoblasty
+homocarpous
+homocategoric
+homocentric
+homocentrical
+homocentrically
+homocerc
+homocercal
+homocercality
+homocercy
+homocerebrin
+homochiral
+homochlamydeous
+homochromatic
+homochromatism
+homochrome
+homochromic
+homochromosome
+homochromous
+homochromy
+homochronous
+homoclinal
+homocline
+Homocoela
+homocoelous
+homocreosol
+homocyclic
+homodermic
+homodermy
+homodont
+homodontism
+homodox
+homodoxian
+homodromal
+homodrome
+homodromous
+homodromy
+homodynamic
+homodynamous
+homodynamy
+homodyne
+Homoean
+Homoeanism
+homoecious
+homoeoarchy
+homoeoblastic
+homoeochromatic
+homoeochronous
+homoeocrystalline
+homoeogenic
+homoeogenous
+homoeography
+homoeokinesis
+homoeomerae
+Homoeomeri
+homoeomeria
+homoeomerian
+homoeomerianism
+homoeomeric
+homoeomerical
+homoeomerous
+homoeomery
+homoeomorph
+homoeomorphic
+homoeomorphism
+homoeomorphous
+homoeomorphy
+homoeopath
+homoeopathic
+homoeopathically
+homoeopathician
+homoeopathicity
+homoeopathist
+homoeopathy
+homoeophony
+homoeophyllous
+homoeoplasia
+homoeoplastic
+homoeoplasy
+homoeopolar
+homoeosis
+homoeotel
+homoeoteleutic
+homoeoteleuton
+homoeotic
+homoeotopy
+homoeotype
+homoeotypic
+homoeotypical
+homoeozoic
+homoerotic
+homoerotism
+homofermentative
+homogametic
+homogamic
+homogamous
+homogamy
+homogangliate
+homogen
+homogenate
+homogene
+homogeneal
+homogenealness
+homogeneate
+homogeneity
+homogeneization
+homogeneize
+homogeneous
+homogeneously
+homogeneousness
+homogenesis
+homogenetic
+homogenetical
+homogenic
+homogenization
+homogenize
+homogenizer
+homogenous
+homogentisic
+homogeny
+homoglot
+homogone
+homogonous
+homogonously
+homogony
+homograft
+homograph
+homographic
+homography
+homohedral
+homoiotherm
+homoiothermal
+homoiothermic
+homoiothermism
+homoiothermous
+homoiousia
+Homoiousian
+homoiousian
+Homoiousianism
+homoiousious
+homolateral
+homolecithal
+homolegalis
+homologate
+homologation
+homologic
+homological
+homologically
+homologist
+homologize
+homologizer
+homologon
+homologoumena
+homologous
+homolographic
+homolography
+homologue
+homology
+homolosine
+homolysin
+homolysis
+homomallous
+homomeral
+homomerous
+homometrical
+homometrically
+homomorph
+Homomorpha
+homomorphic
+homomorphism
+homomorphosis
+homomorphous
+homomorphy
+Homoneura
+homonomous
+homonomy
+homonuclear
+homonym
+homonymic
+homonymous
+homonymously
+homonymy
+homoousia
+Homoousian
+Homoousianism
+Homoousianist
+Homoousiast
+Homoousion
+homoousious
+homopathy
+homoperiodic
+homopetalous
+homophene
+homophenous
+homophone
+homophonic
+homophonous
+homophony
+homophthalic
+homophylic
+homophyllous
+homophyly
+homopiperonyl
+homoplasis
+homoplasmic
+homoplasmy
+homoplast
+homoplastic
+homoplasy
+homopolar
+homopolarity
+homopolic
+homopter
+Homoptera
+homopteran
+homopteron
+homopterous
+Homorelaps
+homorganic
+homoseismal
+homosexual
+homosexualism
+homosexualist
+homosexuality
+homosporous
+homospory
+Homosteus
+homostyled
+homostylic
+homostylism
+homostylous
+homostyly
+homosystemic
+homotactic
+homotatic
+homotaxeous
+homotaxia
+homotaxial
+homotaxially
+homotaxic
+homotaxis
+homotaxy
+homothallic
+homothallism
+homothetic
+homothety
+homotonic
+homotonous
+homotonously
+homotony
+homotopic
+homotransplant
+homotransplantation
+homotropal
+homotropous
+homotypal
+homotype
+homotypic
+homotypical
+homotypy
+homovanillic
+homovanillin
+homoveratric
+homoveratrole
+homozygosis
+homozygosity
+homozygote
+homozygous
+homozygousness
+homrai
+homuncle
+homuncular
+homunculus
+homy
+Hon
+honda
+hondo
+Honduran
+Honduranean
+Honduranian
+Hondurean
+Hondurian
+hone
+honest
+honestly
+honestness
+honestone
+honesty
+honewort
+honey
+honeybee
+honeyberry
+honeybind
+honeyblob
+honeybloom
+honeycomb
+honeycombed
+honeydew
+honeydewed
+honeydrop
+honeyed
+honeyedly
+honeyedness
+honeyfall
+honeyflower
+honeyfogle
+honeyful
+honeyhearted
+honeyless
+honeylike
+honeylipped
+honeymoon
+honeymooner
+honeymoonlight
+honeymoonshine
+honeymoonstruck
+honeymoony
+honeymouthed
+honeypod
+honeypot
+honeystone
+honeysuck
+honeysucker
+honeysuckle
+honeysuckled
+honeysweet
+honeyware
+Honeywood
+honeywood
+honeywort
+hong
+honied
+honily
+honk
+honker
+honor
+Honora
+honorability
+honorable
+honorableness
+honorableship
+honorably
+honorance
+honoraria
+honorarily
+honorarium
+honorary
+honoree
+honorer
+honoress
+honorific
+honorifically
+honorless
+honorous
+honorsman
+honorworthy
+hontish
+hontous
+Honzo
+hooch
+hoochinoo
+hood
+hoodcap
+hooded
+hoodedness
+hoodful
+hoodie
+hoodless
+hoodlike
+hoodlum
+hoodlumish
+hoodlumism
+hoodlumize
+hoodman
+hoodmold
+hoodoo
+hoodsheaf
+hoodshy
+hoodshyness
+hoodwink
+hoodwinkable
+hoodwinker
+hoodwise
+hoodwort
+hooey
+hoof
+hoofbeat
+hoofbound
+hoofed
+hoofer
+hoofiness
+hoofish
+hoofless
+hooflet
+hooflike
+hoofmark
+hoofprint
+hoofrot
+hoofs
+hoofworm
+hoofy
+hook
+hookah
+hookaroon
+hooked
+hookedness
+hookedwise
+hooker
+Hookera
+hookerman
+hookers
+hookheal
+hookish
+hookless
+hooklet
+hooklike
+hookmaker
+hookmaking
+hookman
+hooknose
+hooksmith
+hooktip
+hookum
+hookup
+hookweed
+hookwise
+hookworm
+hookwormer
+hookwormy
+hooky
+hooligan
+hooliganism
+hooliganize
+hoolock
+hooly
+hoon
+hoonoomaun
+hoop
+hooped
+hooper
+hooping
+hoopla
+hoople
+hoopless
+hooplike
+hoopmaker
+hoopman
+hoopoe
+hoopstick
+hoopwood
+hoose
+hoosegow
+hoosh
+Hoosier
+Hoosierdom
+Hoosierese
+Hoosierize
+hoot
+hootay
+hooter
+hootingly
+hoove
+hooven
+Hooverism
+Hooverize
+hoovey
+hop
+hopbine
+hopbush
+Hopcalite
+hopcrease
+hope
+hoped
+hopeful
+hopefully
+hopefulness
+hopeite
+hopeless
+hopelessly
+hopelessness
+hoper
+Hopi
+hopi
+hopingly
+Hopkinsian
+Hopkinsianism
+Hopkinsonian
+hoplite
+hoplitic
+hoplitodromos
+Hoplocephalus
+hoplology
+hoplomachic
+hoplomachist
+hoplomachos
+hoplomachy
+Hoplonemertea
+hoplonemertean
+hoplonemertine
+Hoplonemertini
+hopoff
+hopped
+hopper
+hopperburn
+hopperdozer
+hopperette
+hoppergrass
+hopperings
+hopperman
+hoppers
+hoppestere
+hoppet
+hoppingly
+hoppity
+hopple
+hoppy
+hopscotch
+hopscotcher
+hoptoad
+hopvine
+hopyard
+hora
+horal
+horary
+Horatian
+Horatio
+Horatius
+horbachite
+hordarian
+hordary
+horde
+hordeaceous
+hordeiform
+hordein
+hordenine
+Hordeum
+horehound
+Horim
+horismology
+horizometer
+horizon
+horizonless
+horizontal
+horizontalism
+horizontality
+horizontalization
+horizontalize
+horizontally
+horizontalness
+horizontic
+horizontical
+horizontically
+horizonward
+horme
+hormic
+hormigo
+hormion
+hormist
+hormogon
+Hormogonales
+Hormogoneae
+Hormogoneales
+hormogonium
+hormogonous
+hormonal
+hormone
+hormonic
+hormonize
+hormonogenesis
+hormonogenic
+hormonology
+hormonopoiesis
+hormonopoietic
+hormos
+horn
+hornbeam
+hornbill
+hornblende
+hornblendic
+hornblendite
+hornblendophyre
+hornblower
+hornbook
+horned
+hornedness
+horner
+hornerah
+hornet
+hornety
+hornfair
+hornfels
+hornfish
+hornful
+horngeld
+Hornie
+hornify
+hornily
+horniness
+horning
+hornish
+hornist
+hornito
+hornless
+hornlessness
+hornlet
+hornlike
+hornotine
+hornpipe
+hornplant
+hornsman
+hornstay
+hornstone
+hornswoggle
+horntail
+hornthumb
+horntip
+hornwood
+hornwork
+hornworm
+hornwort
+horny
+hornyhanded
+hornyhead
+horograph
+horographer
+horography
+horokaka
+horologe
+horologer
+horologic
+horological
+horologically
+horologiography
+horologist
+horologium
+horologue
+horology
+horometrical
+horometry
+Horonite
+horopito
+horopter
+horopteric
+horoptery
+horoscopal
+horoscope
+horoscoper
+horoscopic
+horoscopical
+horoscopist
+horoscopy
+Horouta
+horrendous
+horrendously
+horrent
+horrescent
+horreum
+horribility
+horrible
+horribleness
+horribly
+horrid
+horridity
+horridly
+horridness
+horrific
+horrifically
+horrification
+horrify
+horripilant
+horripilate
+horripilation
+horrisonant
+horror
+horrorful
+horrorish
+horrorist
+horrorize
+horrormonger
+horrormongering
+horrorous
+horrorsome
+horse
+horseback
+horsebacker
+horseboy
+horsebreaker
+horsecar
+horsecloth
+horsecraft
+horsedom
+horsefair
+horsefettler
+horsefight
+horsefish
+horseflesh
+horsefly
+horsefoot
+horsegate
+horsehair
+horsehaired
+horsehead
+horseherd
+horsehide
+horsehood
+horsehoof
+horsejockey
+horsekeeper
+horselaugh
+horselaugher
+horselaughter
+horseleech
+horseless
+horselike
+horseload
+horseman
+horsemanship
+horsemastership
+horsemint
+horsemonger
+horseplay
+horseplayful
+horsepond
+horsepower
+horsepox
+horser
+horseshoe
+horseshoer
+horsetail
+horsetongue
+Horsetown
+horsetree
+horseway
+horseweed
+horsewhip
+horsewhipper
+horsewoman
+horsewomanship
+horsewood
+horsfordite
+horsify
+horsily
+horsiness
+horsing
+Horst
+horst
+horsy
+horsyism
+hortation
+hortative
+hortatively
+hortator
+hortatorily
+hortatory
+Hortense
+Hortensia
+hortensial
+Hortensian
+hortensian
+horticultural
+horticulturally
+horticulture
+horticulturist
+hortite
+hortonolite
+hortulan
+Horvatian
+hory
+Hosackia
+hosanna
+hose
+hosed
+hosel
+hoseless
+hoselike
+hoseman
+hosier
+hosiery
+hosiomartyr
+hospice
+hospitable
+hospitableness
+hospitably
+hospitage
+hospital
+hospitalary
+hospitaler
+hospitalism
+hospitality
+hospitalization
+hospitalize
+hospitant
+hospitate
+hospitation
+hospitator
+hospitious
+hospitium
+hospitize
+hospodar
+hospodariat
+hospodariate
+host
+Hosta
+hostage
+hostager
+hostageship
+hostel
+hosteler
+hostelry
+hoster
+hostess
+hostie
+hostile
+hostilely
+hostileness
+hostility
+hostilize
+hosting
+hostler
+hostlership
+hostlerwife
+hostless
+hostly
+hostry
+hostship
+hot
+hotbed
+hotblood
+hotbox
+hotbrained
+hotch
+hotchpot
+hotchpotch
+hotchpotchly
+hotel
+hoteldom
+hotelhood
+hotelier
+hotelization
+hotelize
+hotelkeeper
+hotelless
+hotelward
+hotfoot
+hothead
+hotheaded
+hotheadedly
+hotheadedness
+hothearted
+hotheartedly
+hotheartedness
+hothouse
+hoti
+hotly
+hotmouthed
+hotness
+hotspur
+hotspurred
+Hotta
+Hottentot
+Hottentotese
+Hottentotic
+Hottentotish
+Hottentotism
+hotter
+hottery
+hottish
+Hottonia
+houbara
+Houdan
+hough
+houghband
+hougher
+houghite
+houghmagandy
+Houghton
+hounce
+hound
+hounder
+houndfish
+hounding
+houndish
+houndlike
+houndman
+houndsbane
+houndsberry
+houndshark
+houndy
+houppelande
+hour
+hourful
+hourglass
+houri
+hourless
+hourly
+housage
+housal
+Housatonic
+house
+houseball
+houseboat
+houseboating
+housebote
+housebound
+houseboy
+housebreak
+housebreaker
+housebreaking
+housebroke
+housebroken
+housebug
+housebuilder
+housebuilding
+housecarl
+housecoat
+housecraft
+housefast
+housefather
+housefly
+houseful
+housefurnishings
+household
+householder
+householdership
+householding
+householdry
+housekeep
+housekeeper
+housekeeperlike
+housekeeperly
+housekeeping
+housel
+houseleek
+houseless
+houselessness
+houselet
+houseline
+houseling
+housemaid
+housemaidenly
+housemaiding
+housemaidy
+houseman
+housemaster
+housemastership
+housemate
+housemating
+houseminder
+housemistress
+housemother
+housemotherly
+houseowner
+houser
+houseridden
+houseroom
+housesmith
+housetop
+houseward
+housewares
+housewarm
+housewarmer
+housewarming
+housewear
+housewife
+housewifeliness
+housewifely
+housewifery
+housewifeship
+housewifish
+housewive
+housework
+housewright
+housing
+Houstonia
+housty
+housy
+houtou
+houvari
+Hova
+hove
+hovedance
+hovel
+hoveler
+hoven
+Hovenia
+hover
+hoverer
+hovering
+hoveringly
+hoverly
+how
+howadji
+Howard
+howardite
+howbeit
+howdah
+howder
+howdie
+howdy
+howe
+Howea
+howel
+however
+howff
+howish
+howitzer
+howk
+howkit
+howl
+howler
+howlet
+howling
+howlingly
+howlite
+howso
+howsoever
+howsomever
+hox
+hoy
+Hoya
+hoyden
+hoydenhood
+hoydenish
+hoydenism
+hoyle
+hoyman
+Hrimfaxi
+Hrothgar
+Hsi
+Hsuan
+Hu
+huaca
+huaco
+huajillo
+huamuchil
+huantajayite
+huaracho
+Huari
+huarizo
+Huashi
+Huastec
+Huastecan
+Huave
+Huavean
+hub
+hubb
+hubba
+hubber
+Hubbite
+hubble
+hubbly
+hubbub
+hubbuboo
+hubby
+Hubert
+hubmaker
+hubmaking
+hubnerite
+hubristic
+hubshi
+huccatoon
+huchen
+Huchnom
+hucho
+huck
+huckaback
+huckle
+huckleback
+hucklebacked
+huckleberry
+hucklebone
+huckmuck
+huckster
+hucksterage
+hucksterer
+hucksteress
+hucksterize
+huckstery
+hud
+huddle
+huddledom
+huddlement
+huddler
+huddling
+huddlingly
+huddock
+huddroun
+huddup
+Hudibras
+Hudibrastic
+Hudibrastically
+Hudsonia
+Hudsonian
+hudsonite
+hue
+hued
+hueful
+hueless
+huelessness
+huer
+Huey
+huff
+huffier
+huffily
+huffiness
+huffingly
+huffish
+huffishly
+huffishness
+huffle
+huffler
+huffy
+hug
+huge
+Hugelia
+hugelite
+hugely
+hugeness
+hugeous
+hugeously
+hugeousness
+huggable
+hugger
+huggermugger
+huggermuggery
+Huggin
+hugging
+huggingly
+huggle
+Hugh
+Hughes
+Hughoc
+Hugo
+Hugoesque
+hugsome
+Huguenot
+Huguenotic
+Huguenotism
+huh
+Hui
+huia
+huipil
+huisache
+huiscoyol
+huitain
+Huk
+Hukbalahap
+huke
+hula
+Huldah
+huldee
+hulk
+hulkage
+hulking
+hulky
+hull
+hullabaloo
+huller
+hullock
+hulloo
+hulotheism
+Hulsean
+hulsite
+hulster
+hulu
+hulver
+hulverhead
+hulverheaded
+hum
+Huma
+human
+humane
+humanely
+humaneness
+humanhood
+humanics
+humanification
+humaniform
+humaniformian
+humanify
+humanish
+humanism
+humanist
+humanistic
+humanistical
+humanistically
+humanitarian
+humanitarianism
+humanitarianist
+humanitarianize
+humanitary
+humanitian
+humanity
+humanitymonger
+humanization
+humanize
+humanizer
+humankind
+humanlike
+humanly
+humanness
+humanoid
+humate
+humble
+humblebee
+humblehearted
+humblemouthed
+humbleness
+humbler
+humblie
+humblingly
+humbly
+humbo
+humboldtilite
+humboldtine
+humboldtite
+humbug
+humbugability
+humbugable
+humbugger
+humbuggery
+humbuggism
+humbuzz
+humdinger
+humdrum
+humdrumminess
+humdrummish
+humdrummishness
+humdudgeon
+Hume
+Humean
+humect
+humectant
+humectate
+humectation
+humective
+humeral
+humeri
+humeroabdominal
+humerocubital
+humerodigital
+humerodorsal
+humerometacarpal
+humeroradial
+humeroscapular
+humeroulnar
+humerus
+humet
+humetty
+humhum
+humic
+humicubation
+humid
+humidate
+humidification
+humidifier
+humidify
+humidistat
+humidity
+humidityproof
+humidly
+humidness
+humidor
+humific
+humification
+humifuse
+humify
+humiliant
+humiliate
+humiliating
+humiliatingly
+humiliation
+humiliative
+humiliator
+humiliatory
+humilific
+humilitude
+humility
+humin
+Humiria
+Humiriaceae
+Humiriaceous
+Humism
+Humist
+humistratous
+humite
+humlie
+hummel
+hummeler
+hummer
+hummie
+humming
+hummingbird
+hummock
+hummocky
+humor
+humoral
+humoralism
+humoralist
+humoralistic
+humoresque
+humoresquely
+humorful
+humorific
+humorism
+humorist
+humoristic
+humoristical
+humorize
+humorless
+humorlessness
+humorology
+humorous
+humorously
+humorousness
+humorproof
+humorsome
+humorsomely
+humorsomeness
+humourful
+humous
+hump
+humpback
+humpbacked
+humped
+humph
+Humphrey
+humpiness
+humpless
+humpty
+humpy
+humstrum
+humulene
+humulone
+Humulus
+humus
+humuslike
+Hun
+Hunanese
+hunch
+Hunchakist
+hunchback
+hunchbacked
+hunchet
+hunchy
+hundi
+hundred
+hundredal
+hundredary
+hundreder
+hundredfold
+hundredman
+hundredpenny
+hundredth
+hundredweight
+hundredwork
+hung
+Hungaria
+Hungarian
+hungarite
+hunger
+hungerer
+hungeringly
+hungerless
+hungerly
+hungerproof
+hungerweed
+hungrify
+hungrily
+hungriness
+hungry
+hunh
+hunk
+Hunker
+hunker
+Hunkerism
+hunkerous
+hunkerousness
+hunkers
+hunkies
+Hunkpapa
+hunks
+hunky
+Hunlike
+Hunnian
+Hunnic
+Hunnican
+Hunnish
+Hunnishness
+hunt
+huntable
+huntedly
+Hunter
+Hunterian
+hunterlike
+huntilite
+hunting
+huntress
+huntsman
+huntsmanship
+huntswoman
+Hunyak
+hup
+Hupa
+hupaithric
+Hura
+hura
+hurcheon
+hurdies
+hurdis
+hurdle
+hurdleman
+hurdler
+hurdlewise
+hurds
+hure
+hureaulite
+hureek
+Hurf
+hurgila
+hurkle
+hurl
+hurlbarrow
+hurled
+hurler
+hurley
+hurleyhouse
+hurling
+hurlock
+hurly
+Huron
+huron
+Huronian
+hurr
+hurrah
+Hurri
+Hurrian
+hurricane
+hurricanize
+hurricano
+hurried
+hurriedly
+hurriedness
+hurrier
+hurrisome
+hurrock
+hurroo
+hurroosh
+hurry
+hurryingly
+hurryproof
+hursinghar
+hurst
+hurt
+hurtable
+hurted
+hurter
+hurtful
+hurtfully
+hurtfulness
+hurting
+hurtingest
+hurtle
+hurtleberry
+hurtless
+hurtlessly
+hurtlessness
+hurtlingly
+hurtsome
+hurty
+husband
+husbandable
+husbandage
+husbander
+husbandfield
+husbandhood
+husbandland
+husbandless
+husbandlike
+husbandliness
+husbandly
+husbandman
+husbandress
+husbandry
+husbandship
+huse
+hush
+hushable
+hushaby
+hushcloth
+hushedly
+husheen
+hushel
+husher
+hushful
+hushfully
+hushing
+hushingly
+hushion
+husho
+husk
+huskanaw
+husked
+huskened
+husker
+huskershredder
+huskily
+huskiness
+husking
+huskroot
+huskwort
+Husky
+husky
+huso
+huspil
+huss
+hussar
+Hussite
+Hussitism
+hussy
+hussydom
+hussyness
+husting
+hustle
+hustlecap
+hustlement
+hustler
+hut
+hutch
+hutcher
+hutchet
+Hutchinsonian
+Hutchinsonianism
+hutchinsonite
+Huterian
+huthold
+hutholder
+hutia
+hutkeeper
+hutlet
+hutment
+Hutsulian
+Hutterites
+Huttonian
+Huttonianism
+huttoning
+huttonweed
+hutukhtu
+huvelyk
+Huxleian
+Huygenian
+huzoor
+Huzvaresh
+huzz
+huzza
+huzzard
+Hwa
+Hy
+hyacinth
+Hyacinthia
+hyacinthian
+hyacinthine
+Hyacinthus
+Hyades
+hyaena
+Hyaenanche
+Hyaenarctos
+Hyaenidae
+Hyaenodon
+hyaenodont
+hyaenodontoid
+Hyakume
+hyalescence
+hyalescent
+hyaline
+hyalinization
+hyalinize
+hyalinocrystalline
+hyalinosis
+hyalite
+hyalitis
+hyaloandesite
+hyalobasalt
+hyalocrystalline
+hyalodacite
+hyalogen
+hyalograph
+hyalographer
+hyalography
+hyaloid
+hyaloiditis
+hyaloliparite
+hyalolith
+hyalomelan
+hyalomucoid
+Hyalonema
+hyalophagia
+hyalophane
+hyalophyre
+hyalopilitic
+hyaloplasm
+hyaloplasma
+hyaloplasmic
+hyalopsite
+hyalopterous
+hyalosiderite
+Hyalospongia
+hyalotekite
+hyalotype
+hyaluronic
+hyaluronidase
+Hybanthus
+Hybla
+Hyblaea
+Hyblaean
+Hyblan
+hybodont
+Hybodus
+hybosis
+hybrid
+hybridal
+hybridation
+hybridism
+hybridist
+hybridity
+hybridizable
+hybridization
+hybridize
+hybridizer
+hybridous
+hydantoate
+hydantoic
+hydantoin
+hydathode
+hydatid
+hydatidiform
+hydatidinous
+hydatidocele
+hydatiform
+hydatigenous
+Hydatina
+hydatogenesis
+hydatogenic
+hydatogenous
+hydatoid
+hydatomorphic
+hydatomorphism
+hydatopneumatic
+hydatopneumatolytic
+hydatopyrogenic
+hydatoscopy
+Hydnaceae
+hydnaceous
+hydnocarpate
+hydnocarpic
+Hydnocarpus
+hydnoid
+Hydnora
+Hydnoraceae
+hydnoraceous
+Hydnum
+Hydra
+hydracetin
+Hydrachna
+hydrachnid
+Hydrachnidae
+hydracid
+hydracoral
+hydracrylate
+hydracrylic
+Hydractinia
+hydractinian
+Hydradephaga
+hydradephagan
+hydradephagous
+hydragogue
+hydragogy
+hydramine
+hydramnion
+hydramnios
+Hydrangea
+Hydrangeaceae
+hydrangeaceous
+hydrant
+hydranth
+hydrarch
+hydrargillite
+hydrargyrate
+hydrargyria
+hydrargyriasis
+hydrargyric
+hydrargyrism
+hydrargyrosis
+hydrargyrum
+hydrarthrosis
+hydrarthrus
+hydrastine
+Hydrastis
+hydrate
+hydrated
+hydration
+hydrator
+hydratropic
+hydraucone
+hydraulic
+hydraulically
+hydraulician
+hydraulicity
+hydraulicked
+hydraulicon
+hydraulics
+hydraulist
+hydraulus
+hydrazide
+hydrazidine
+hydrazimethylene
+hydrazine
+hydrazino
+hydrazo
+hydrazoate
+hydrazobenzene
+hydrazoic
+hydrazone
+hydrazyl
+hydremia
+hydremic
+hydrencephalocele
+hydrencephaloid
+hydrencephalus
+hydria
+hydriatric
+hydriatrist
+hydriatry
+hydric
+hydrically
+Hydrid
+hydride
+hydriform
+hydrindene
+hydriodate
+hydriodic
+hydriodide
+hydriotaphia
+Hydriote
+hydro
+hydroa
+hydroadipsia
+hydroaeric
+hydroalcoholic
+hydroaromatic
+hydroatmospheric
+hydroaviation
+hydrobarometer
+Hydrobates
+Hydrobatidae
+hydrobenzoin
+hydrobilirubin
+hydrobiological
+hydrobiologist
+hydrobiology
+hydrobiosis
+hydrobiplane
+hydrobomb
+hydroboracite
+hydroborofluoric
+hydrobranchiate
+hydrobromate
+hydrobromic
+hydrobromide
+hydrocarbide
+hydrocarbon
+hydrocarbonaceous
+hydrocarbonate
+hydrocarbonic
+hydrocarbonous
+hydrocarbostyril
+hydrocardia
+Hydrocaryaceae
+hydrocaryaceous
+hydrocatalysis
+hydrocauline
+hydrocaulus
+hydrocele
+hydrocellulose
+hydrocephalic
+hydrocephalocele
+hydrocephaloid
+hydrocephalous
+hydrocephalus
+hydrocephaly
+hydroceramic
+hydrocerussite
+Hydrocharidaceae
+hydrocharidaceous
+Hydrocharis
+Hydrocharitaceae
+hydrocharitaceous
+Hydrochelidon
+hydrochemical
+hydrochemistry
+hydrochlorate
+hydrochlorauric
+hydrochloric
+hydrochloride
+hydrochlorplatinic
+hydrochlorplatinous
+Hydrochoerus
+hydrocholecystis
+hydrocinchonine
+hydrocinnamic
+hydrocirsocele
+hydrocladium
+hydroclastic
+Hydrocleis
+hydroclimate
+hydrocobalticyanic
+hydrocoele
+hydrocollidine
+hydroconion
+Hydrocorallia
+Hydrocorallinae
+hydrocoralline
+Hydrocores
+Hydrocorisae
+hydrocorisan
+hydrocotarnine
+Hydrocotyle
+hydrocoumaric
+hydrocupreine
+hydrocyanate
+hydrocyanic
+hydrocyanide
+hydrocycle
+hydrocyclic
+hydrocyclist
+Hydrocyon
+hydrocyst
+hydrocystic
+Hydrodamalidae
+Hydrodamalis
+Hydrodictyaceae
+Hydrodictyon
+hydrodrome
+Hydrodromica
+hydrodromican
+hydrodynamic
+hydrodynamical
+hydrodynamics
+hydrodynamometer
+hydroeconomics
+hydroelectric
+hydroelectricity
+hydroelectrization
+hydroergotinine
+hydroextract
+hydroextractor
+hydroferricyanic
+hydroferrocyanate
+hydroferrocyanic
+hydrofluate
+hydrofluoboric
+hydrofluoric
+hydrofluorid
+hydrofluoride
+hydrofluosilicate
+hydrofluosilicic
+hydrofluozirconic
+hydrofoil
+hydroforming
+hydrofranklinite
+hydrofuge
+hydrogalvanic
+hydrogel
+hydrogen
+hydrogenase
+hydrogenate
+hydrogenation
+hydrogenator
+hydrogenic
+hydrogenide
+hydrogenium
+hydrogenization
+hydrogenize
+hydrogenolysis
+Hydrogenomonas
+hydrogenous
+hydrogeological
+hydrogeology
+hydroglider
+hydrognosy
+hydrogode
+hydrograph
+hydrographer
+hydrographic
+hydrographical
+hydrographically
+hydrography
+hydrogymnastics
+hydrohalide
+hydrohematite
+hydrohemothorax
+hydroid
+Hydroida
+Hydroidea
+hydroidean
+hydroiodic
+hydrokinetic
+hydrokinetical
+hydrokinetics
+hydrol
+hydrolase
+hydrolatry
+Hydrolea
+Hydroleaceae
+hydrolize
+hydrologic
+hydrological
+hydrologically
+hydrologist
+hydrology
+hydrolysis
+hydrolyst
+hydrolyte
+hydrolytic
+hydrolyzable
+hydrolyzate
+hydrolyzation
+hydrolyze
+hydromagnesite
+hydromancer
+hydromancy
+hydromania
+hydromaniac
+hydromantic
+hydromantical
+hydromantically
+hydrome
+hydromechanical
+hydromechanics
+hydromedusa
+Hydromedusae
+hydromedusan
+hydromedusoid
+hydromel
+hydromeningitis
+hydromeningocele
+hydrometallurgical
+hydrometallurgically
+hydrometallurgy
+hydrometamorphism
+hydrometeor
+hydrometeorological
+hydrometeorology
+hydrometer
+hydrometra
+hydrometric
+hydrometrical
+hydrometrid
+Hydrometridae
+hydrometry
+hydromica
+hydromicaceous
+hydromonoplane
+hydromorph
+hydromorphic
+hydromorphous
+hydromorphy
+hydromotor
+hydromyelia
+hydromyelocele
+hydromyoma
+Hydromys
+hydrone
+hydronegative
+hydronephelite
+hydronephrosis
+hydronephrotic
+hydronitric
+hydronitroprussic
+hydronitrous
+hydronium
+hydroparacoumaric
+Hydroparastatae
+hydropath
+hydropathic
+hydropathical
+hydropathist
+hydropathy
+hydropericarditis
+hydropericardium
+hydroperiod
+hydroperitoneum
+hydroperitonitis
+hydroperoxide
+hydrophane
+hydrophanous
+hydrophid
+Hydrophidae
+hydrophil
+hydrophile
+hydrophilic
+hydrophilid
+Hydrophilidae
+hydrophilism
+hydrophilite
+hydrophiloid
+hydrophilous
+hydrophily
+Hydrophinae
+Hydrophis
+hydrophobe
+hydrophobia
+hydrophobic
+hydrophobical
+hydrophobist
+hydrophobophobia
+hydrophobous
+hydrophoby
+hydrophoid
+hydrophone
+Hydrophora
+hydrophoran
+hydrophore
+hydrophoria
+hydrophorous
+hydrophthalmia
+hydrophthalmos
+hydrophthalmus
+hydrophylacium
+hydrophyll
+Hydrophyllaceae
+hydrophyllaceous
+hydrophylliaceous
+hydrophyllium
+Hydrophyllum
+hydrophysometra
+hydrophyte
+hydrophytic
+hydrophytism
+hydrophyton
+hydrophytous
+hydropic
+hydropical
+hydropically
+hydropigenous
+hydroplane
+hydroplanula
+hydroplatinocyanic
+hydroplutonic
+hydropneumatic
+hydropneumatosis
+hydropneumopericardium
+hydropneumothorax
+hydropolyp
+hydroponic
+hydroponicist
+hydroponics
+hydroponist
+hydropositive
+hydropot
+Hydropotes
+hydropropulsion
+hydrops
+hydropsy
+Hydropterideae
+hydroptic
+hydropult
+hydropultic
+hydroquinine
+hydroquinol
+hydroquinoline
+hydroquinone
+hydrorachis
+hydrorhiza
+hydrorhizal
+hydrorrhachis
+hydrorrhachitis
+hydrorrhea
+hydrorrhoea
+hydrorubber
+hydrosalpinx
+hydrosalt
+hydrosarcocele
+hydroscope
+hydroscopic
+hydroscopical
+hydroscopicity
+hydroscopist
+hydroselenic
+hydroselenide
+hydroselenuret
+hydroseparation
+hydrosilicate
+hydrosilicon
+hydrosol
+hydrosomal
+hydrosomatous
+hydrosome
+hydrosorbic
+hydrosphere
+hydrospire
+hydrospiric
+hydrostat
+hydrostatic
+hydrostatical
+hydrostatically
+hydrostatician
+hydrostatics
+hydrostome
+hydrosulphate
+hydrosulphide
+hydrosulphite
+hydrosulphocyanic
+hydrosulphurated
+hydrosulphuret
+hydrosulphureted
+hydrosulphuric
+hydrosulphurous
+hydrosulphuryl
+hydrotachymeter
+hydrotactic
+hydrotalcite
+hydrotasimeter
+hydrotaxis
+hydrotechnic
+hydrotechnical
+hydrotechnologist
+hydrotechny
+hydroterpene
+hydrotheca
+hydrothecal
+hydrotherapeutic
+hydrotherapeutics
+hydrotherapy
+hydrothermal
+hydrothoracic
+hydrothorax
+hydrotic
+hydrotical
+hydrotimeter
+hydrotimetric
+hydrotimetry
+hydrotomy
+hydrotropic
+hydrotropism
+hydroturbine
+hydrotype
+hydrous
+hydrovane
+hydroxamic
+hydroxamino
+hydroxide
+hydroximic
+hydroxy
+hydroxyacetic
+hydroxyanthraquinone
+hydroxybutyricacid
+hydroxyketone
+hydroxyl
+hydroxylactone
+hydroxylamine
+hydroxylate
+hydroxylation
+hydroxylic
+hydroxylization
+hydroxylize
+hydrozincite
+Hydrozoa
+hydrozoal
+hydrozoan
+hydrozoic
+hydrozoon
+hydrula
+Hydruntine
+Hydrurus
+Hydrus
+hydurilate
+hydurilic
+hyena
+hyenadog
+hyenanchin
+hyenic
+hyeniform
+hyenine
+hyenoid
+hyetal
+hyetograph
+hyetographic
+hyetographical
+hyetographically
+hyetography
+hyetological
+hyetology
+hyetometer
+hyetometrograph
+Hygeia
+Hygeian
+hygeiolatry
+hygeist
+hygeistic
+hygeology
+hygiantic
+hygiantics
+hygiastic
+hygiastics
+hygieist
+hygienal
+hygiene
+hygienic
+hygienical
+hygienically
+hygienics
+hygienist
+hygienization
+hygienize
+hygiologist
+hygiology
+hygric
+hygrine
+hygroblepharic
+hygrodeik
+hygroexpansivity
+hygrograph
+hygrology
+hygroma
+hygromatous
+hygrometer
+hygrometric
+hygrometrical
+hygrometrically
+hygrometry
+hygrophaneity
+hygrophanous
+hygrophilous
+hygrophobia
+hygrophthalmic
+hygrophyte
+hygrophytic
+hygroplasm
+hygroplasma
+hygroscope
+hygroscopic
+hygroscopical
+hygroscopically
+hygroscopicity
+hygroscopy
+hygrostat
+hygrostatics
+hygrostomia
+hygrothermal
+hygrothermograph
+hying
+hyke
+Hyla
+hylactic
+hylactism
+hylarchic
+hylarchical
+hyle
+hyleg
+hylegiacal
+hylic
+hylicism
+hylicist
+Hylidae
+hylism
+hylist
+Hyllus
+Hylobates
+hylobatian
+hylobatic
+hylobatine
+Hylocereus
+Hylocichla
+Hylocomium
+Hylodes
+hylogenesis
+hylogeny
+hyloid
+hylology
+hylomorphic
+hylomorphical
+hylomorphism
+hylomorphist
+hylomorphous
+Hylomys
+hylopathism
+hylopathist
+hylopathy
+hylophagous
+hylotheism
+hylotheist
+hylotheistic
+hylotheistical
+hylotomous
+hylozoic
+hylozoism
+hylozoist
+hylozoistic
+hylozoistically
+hymen
+Hymenaea
+Hymenaeus
+Hymenaic
+hymenal
+hymeneal
+hymeneally
+hymeneals
+hymenean
+hymenial
+hymenic
+hymenicolar
+hymeniferous
+hymeniophore
+hymenium
+Hymenocallis
+Hymenochaete
+Hymenogaster
+Hymenogastraceae
+hymenogeny
+hymenoid
+Hymenolepis
+hymenomycetal
+hymenomycete
+Hymenomycetes
+hymenomycetoid
+hymenomycetous
+hymenophore
+hymenophorum
+Hymenophyllaceae
+hymenophyllaceous
+Hymenophyllites
+Hymenophyllum
+hymenopter
+Hymenoptera
+hymenopteran
+hymenopterist
+hymenopterological
+hymenopterologist
+hymenopterology
+hymenopteron
+hymenopterous
+hymenotomy
+Hymettian
+Hymettic
+hymn
+hymnal
+hymnarium
+hymnary
+hymnbook
+hymner
+hymnic
+hymnist
+hymnless
+hymnlike
+hymnode
+hymnodical
+hymnodist
+hymnody
+hymnographer
+hymnography
+hymnologic
+hymnological
+hymnologically
+hymnologist
+hymnology
+hymnwise
+hynde
+hyne
+hyobranchial
+hyocholalic
+hyocholic
+hyoepiglottic
+hyoepiglottidean
+hyoglossal
+hyoglossus
+hyoglycocholic
+hyoid
+hyoidal
+hyoidan
+hyoideal
+hyoidean
+hyoides
+Hyolithes
+hyolithid
+Hyolithidae
+hyolithoid
+hyomandibula
+hyomandibular
+hyomental
+hyoplastral
+hyoplastron
+hyoscapular
+hyoscine
+hyoscyamine
+Hyoscyamus
+hyosternal
+hyosternum
+hyostylic
+hyostyly
+hyothere
+Hyotherium
+hyothyreoid
+hyothyroid
+hyp
+hypabyssal
+hypaethral
+hypaethron
+hypaethros
+hypaethrum
+hypalgesia
+hypalgia
+hypalgic
+hypallactic
+hypallage
+hypanthial
+hypanthium
+hypantrum
+Hypapante
+hypapophysial
+hypapophysis
+hyparterial
+hypaspist
+hypate
+hypaton
+hypautomorphic
+hypaxial
+Hypenantron
+hyper
+hyperabelian
+hyperabsorption
+hyperaccurate
+hyperacid
+hyperacidaminuria
+hyperacidity
+hyperacoustics
+hyperaction
+hyperactive
+hyperactivity
+hyperacuity
+hyperacusia
+hyperacusis
+hyperacute
+hyperacuteness
+hyperadenosis
+hyperadiposis
+hyperadiposity
+hyperadrenalemia
+hyperaeolism
+hyperalbuminosis
+hyperalgebra
+hyperalgesia
+hyperalgesic
+hyperalgesis
+hyperalgetic
+hyperalimentation
+hyperalkalinity
+hyperaltruism
+hyperaminoacidemia
+hyperanabolic
+hyperanarchy
+hyperangelical
+hyperaphia
+hyperaphic
+hyperapophyseal
+hyperapophysial
+hyperapophysis
+hyperarchaeological
+hyperarchepiscopal
+hyperazotemia
+hyperbarbarous
+hyperbatic
+hyperbatically
+hyperbaton
+hyperbola
+hyperbolaeon
+hyperbole
+hyperbolic
+hyperbolically
+hyperbolicly
+hyperbolism
+hyperbolize
+hyperboloid
+hyperboloidal
+hyperboreal
+Hyperborean
+hyperborean
+hyperbrachycephal
+hyperbrachycephalic
+hyperbrachycephaly
+hyperbrachycranial
+hyperbrachyskelic
+hyperbranchia
+hyperbrutal
+hyperbulia
+hypercalcemia
+hypercarbamidemia
+hypercarbureted
+hypercarburetted
+hypercarnal
+hypercatalectic
+hypercatalexis
+hypercatharsis
+hypercathartic
+hypercathexis
+hypercenosis
+hyperchamaerrhine
+hyperchlorhydria
+hyperchloric
+hypercholesterinemia
+hypercholesterolemia
+hypercholia
+hypercivilization
+hypercivilized
+hyperclassical
+hyperclimax
+hypercoagulability
+hypercoagulable
+hypercomplex
+hypercomposite
+hyperconcentration
+hypercone
+hyperconfident
+hyperconformist
+hyperconscientious
+hyperconscientiousness
+hyperconscious
+hyperconsciousness
+hyperconservatism
+hyperconstitutional
+hypercoracoid
+hypercorrect
+hypercorrection
+hypercorrectness
+hypercosmic
+hypercreaturely
+hypercritic
+hypercritical
+hypercritically
+hypercriticism
+hypercriticize
+hypercryalgesia
+hypercube
+hypercyanotic
+hypercycle
+hypercylinder
+hyperdactyl
+hyperdactylia
+hyperdactyly
+hyperdeify
+hyperdelicacy
+hyperdelicate
+hyperdemocracy
+hyperdemocratic
+hyperdeterminant
+hyperdiabolical
+hyperdialectism
+hyperdiapason
+hyperdiapente
+hyperdiastole
+hyperdiatessaron
+hyperdiazeuxis
+hyperdicrotic
+hyperdicrotism
+hyperdicrotous
+hyperdimensional
+hyperdimensionality
+hyperdissyllable
+hyperdistention
+hyperditone
+hyperdivision
+hyperdolichocephal
+hyperdolichocephalic
+hyperdolichocephaly
+hyperdolichocranial
+hyperdoricism
+hyperdulia
+hyperdulic
+hyperdulical
+hyperelegant
+hyperelliptic
+hyperemesis
+hyperemetic
+hyperemia
+hyperemic
+hyperemotivity
+hyperemphasize
+hyperenthusiasm
+hypereosinophilia
+hyperephidrosis
+hyperequatorial
+hypererethism
+hyperessence
+hyperesthesia
+hyperesthetic
+hyperethical
+hypereuryprosopic
+hypereutectic
+hypereutectoid
+hyperexaltation
+hyperexcitability
+hyperexcitable
+hyperexcitement
+hyperexcursive
+hyperexophoria
+hyperextend
+hyperextension
+hyperfastidious
+hyperfederalist
+hyperfine
+hyperflexion
+hyperfocal
+hyperfunction
+hyperfunctional
+hyperfunctioning
+hypergalactia
+hypergamous
+hypergamy
+hypergenesis
+hypergenetic
+hypergeometric
+hypergeometrical
+hypergeometry
+hypergeusia
+hypergeustia
+hyperglycemia
+hyperglycemic
+hyperglycorrhachia
+hyperglycosuria
+hypergoddess
+hypergol
+hypergolic
+Hypergon
+hypergrammatical
+hyperhedonia
+hyperhemoglobinemia
+hyperhilarious
+hyperhypocrisy
+Hypericaceae
+hypericaceous
+Hypericales
+hypericin
+hypericism
+Hypericum
+hypericum
+hyperidealistic
+hyperideation
+hyperimmune
+hyperimmunity
+hyperimmunization
+hyperimmunize
+hyperingenuity
+hyperinosis
+hyperinotic
+hyperinsulinization
+hyperinsulinize
+hyperintellectual
+hyperintelligence
+hyperinvolution
+hyperirritability
+hyperirritable
+hyperisotonic
+hyperite
+hyperkeratosis
+hyperkinesia
+hyperkinesis
+hyperkinetic
+hyperlactation
+hyperleptoprosopic
+hyperleucocytosis
+hyperlipemia
+hyperlipoidemia
+hyperlithuria
+hyperlogical
+hyperlustrous
+hypermagical
+hypermakroskelic
+hypermedication
+hypermenorrhea
+hypermetabolism
+hypermetamorphic
+hypermetamorphism
+hypermetamorphosis
+hypermetamorphotic
+hypermetaphorical
+hypermetaphysical
+hypermetaplasia
+hypermeter
+hypermetric
+hypermetrical
+hypermetron
+hypermetrope
+hypermetropia
+hypermetropic
+hypermetropical
+hypermetropy
+hypermiraculous
+hypermixolydian
+hypermnesia
+hypermnesic
+hypermnesis
+hypermnestic
+hypermodest
+hypermonosyllable
+hypermoral
+hypermorph
+hypermorphism
+hypermorphosis
+hypermotile
+hypermotility
+hypermyotonia
+hypermyotrophy
+hypermyriorama
+hypermystical
+hypernatural
+hypernephroma
+hyperneuria
+hyperneurotic
+hypernic
+hypernitrogenous
+hypernomian
+hypernomic
+hypernormal
+hypernote
+hypernutrition
+Hyperoartia
+hyperoartian
+hyperobtrusive
+hyperodontogeny
+Hyperoodon
+hyperoon
+hyperope
+hyperopia
+hyperopic
+hyperorganic
+hyperorthognathic
+hyperorthognathous
+hyperorthognathy
+hyperosmia
+hyperosmic
+hyperostosis
+hyperostotic
+hyperothodox
+hyperothodoxy
+Hyperotreta
+hyperotretan
+Hyperotreti
+hyperotretous
+hyperoxidation
+hyperoxide
+hyperoxygenate
+hyperoxygenation
+hyperoxygenize
+hyperpanegyric
+hyperparasite
+hyperparasitic
+hyperparasitism
+hyperparasitize
+hyperparoxysm
+hyperpathetic
+hyperpatriotic
+hyperpencil
+hyperpepsinia
+hyperper
+hyperperistalsis
+hyperperistaltic
+hyperpersonal
+hyperphalangeal
+hyperphalangism
+hyperpharyngeal
+hyperphenomena
+hyperphoria
+hyperphoric
+hyperphosphorescence
+hyperphysical
+hyperphysically
+hyperphysics
+hyperpiesia
+hyperpiesis
+hyperpietic
+hyperpietist
+hyperpigmentation
+hyperpigmented
+hyperpinealism
+hyperpituitarism
+hyperplagiarism
+hyperplane
+hyperplasia
+hyperplasic
+hyperplastic
+hyperplatyrrhine
+hyperploid
+hyperploidy
+hyperpnea
+hyperpnoea
+hyperpolysyllabic
+hyperpredator
+hyperprism
+hyperproduction
+hyperprognathous
+hyperprophetical
+hyperprosexia
+hyperpulmonary
+hyperpure
+hyperpurist
+hyperpyramid
+hyperpyretic
+hyperpyrexia
+hyperpyrexial
+hyperquadric
+hyperrational
+hyperreactive
+hyperrealize
+hyperresonance
+hyperresonant
+hyperreverential
+hyperrhythmical
+hyperridiculous
+hyperritualism
+hypersacerdotal
+hypersaintly
+hypersalivation
+hypersceptical
+hyperscholastic
+hyperscrupulosity
+hypersecretion
+hypersensibility
+hypersensitive
+hypersensitiveness
+hypersensitivity
+hypersensitization
+hypersensitize
+hypersensual
+hypersensualism
+hypersensuous
+hypersentimental
+hypersolid
+hypersomnia
+hypersonic
+hypersophisticated
+hyperspace
+hyperspatial
+hyperspeculative
+hypersphere
+hyperspherical
+hyperspiritualizing
+hypersplenia
+hypersplenism
+hypersthene
+hypersthenia
+hypersthenic
+hypersthenite
+hyperstoic
+hyperstrophic
+hypersubtlety
+hypersuggestibility
+hypersuperlative
+hypersurface
+hypersusceptibility
+hypersusceptible
+hypersystole
+hypersystolic
+hypertechnical
+hypertelic
+hypertely
+hypertense
+hypertensin
+hypertension
+hypertensive
+hyperterrestrial
+hypertetrahedron
+hyperthermal
+hyperthermalgesia
+hyperthermesthesia
+hyperthermia
+hyperthermic
+hyperthermy
+hyperthesis
+hyperthetic
+hyperthetical
+hyperthyreosis
+hyperthyroid
+hyperthyroidism
+hyperthyroidization
+hyperthyroidize
+hypertonia
+hypertonic
+hypertonicity
+hypertonus
+hypertorrid
+hypertoxic
+hypertoxicity
+hypertragical
+hypertragically
+hypertranscendent
+hypertrichosis
+hypertridimensional
+hypertrophic
+hypertrophied
+hypertrophous
+hypertrophy
+hypertropia
+hypertropical
+hypertype
+hypertypic
+hypertypical
+hyperurbanism
+hyperuresis
+hypervascular
+hypervascularity
+hypervenosity
+hyperventilate
+hyperventilation
+hypervigilant
+hyperviscosity
+hypervitalization
+hypervitalize
+hypervitaminosis
+hypervolume
+hyperwrought
+hypesthesia
+hypesthesic
+hypethral
+hypha
+Hyphaene
+hyphaeresis
+hyphal
+hyphedonia
+hyphema
+hyphen
+hyphenate
+hyphenated
+hyphenation
+hyphenic
+hyphenism
+hyphenization
+hyphenize
+hypho
+hyphodrome
+Hyphomycetales
+hyphomycete
+Hyphomycetes
+hyphomycetic
+hyphomycetous
+hyphomycosis
+hypidiomorphic
+hypidiomorphically
+hypinosis
+hypinotic
+Hypnaceae
+hypnaceous
+hypnagogic
+hypnesthesis
+hypnesthetic
+hypnoanalysis
+hypnobate
+hypnocyst
+hypnody
+hypnoetic
+hypnogenesis
+hypnogenetic
+hypnoid
+hypnoidal
+hypnoidization
+hypnoidize
+hypnologic
+hypnological
+hypnologist
+hypnology
+hypnone
+hypnophobia
+hypnophobic
+hypnophoby
+hypnopompic
+Hypnos
+hypnoses
+hypnosis
+hypnosperm
+hypnosporangium
+hypnospore
+hypnosporic
+hypnotherapy
+hypnotic
+hypnotically
+hypnotism
+hypnotist
+hypnotistic
+hypnotizability
+hypnotizable
+hypnotization
+hypnotize
+hypnotizer
+hypnotoid
+hypnotoxin
+Hypnum
+hypo
+hypoacid
+hypoacidity
+hypoactive
+hypoactivity
+hypoadenia
+hypoadrenia
+hypoaeolian
+hypoalimentation
+hypoalkaline
+hypoalkalinity
+hypoaminoacidemia
+hypoantimonate
+hypoazoturia
+hypobasal
+hypobatholithic
+hypobenthonic
+hypobenthos
+hypoblast
+hypoblastic
+hypobole
+hypobranchial
+hypobranchiate
+hypobromite
+hypobromous
+hypobulia
+hypobulic
+hypocalcemia
+hypocarp
+hypocarpium
+hypocarpogean
+hypocatharsis
+hypocathartic
+hypocathexis
+hypocaust
+hypocentrum
+hypocephalus
+Hypochaeris
+hypochil
+hypochilium
+hypochlorhydria
+hypochlorhydric
+hypochloric
+hypochlorite
+hypochlorous
+hypochloruria
+Hypochnaceae
+hypochnose
+Hypochnus
+hypochondria
+hypochondriac
+hypochondriacal
+hypochondriacally
+hypochondriacism
+hypochondrial
+hypochondriasis
+hypochondriast
+hypochondrium
+hypochondry
+hypochordal
+hypochromia
+hypochrosis
+hypochylia
+hypocist
+hypocleidian
+hypocleidium
+hypocoelom
+hypocondylar
+hypocone
+hypoconid
+hypoconule
+hypoconulid
+hypocoracoid
+hypocorism
+hypocoristic
+hypocoristical
+hypocoristically
+hypocotyl
+hypocotyleal
+hypocotyledonary
+hypocotyledonous
+hypocotylous
+hypocrater
+hypocrateriform
+hypocraterimorphous
+Hypocreaceae
+hypocreaceous
+Hypocreales
+hypocrisis
+hypocrisy
+hypocrital
+hypocrite
+hypocritic
+hypocritical
+hypocritically
+hypocrize
+hypocrystalline
+hypocycloid
+hypocycloidal
+hypocystotomy
+hypocytosis
+hypodactylum
+hypoderm
+hypoderma
+hypodermal
+hypodermatic
+hypodermatically
+hypodermatoclysis
+hypodermatomy
+Hypodermella
+hypodermic
+hypodermically
+hypodermis
+hypodermoclysis
+hypodermosis
+hypodermous
+hypodiapason
+hypodiapente
+hypodiastole
+hypodiatessaron
+hypodiazeuxis
+hypodicrotic
+hypodicrotous
+hypoditone
+hypodorian
+hypodynamia
+hypodynamic
+hypoeliminator
+hypoendocrinism
+hypoeosinophilia
+hypoeutectic
+hypoeutectoid
+hypofunction
+hypogastric
+hypogastrium
+hypogastrocele
+hypogeal
+hypogean
+hypogee
+hypogeic
+hypogeiody
+hypogene
+hypogenesis
+hypogenetic
+hypogenic
+hypogenous
+hypogeocarpous
+hypogeous
+hypogeum
+hypogeusia
+hypoglobulia
+hypoglossal
+hypoglossitis
+hypoglossus
+hypoglottis
+hypoglycemia
+hypoglycemic
+hypognathism
+hypognathous
+hypogonation
+hypogynic
+hypogynium
+hypogynous
+hypogyny
+hypohalous
+hypohemia
+hypohidrosis
+Hypohippus
+hypohyal
+hypohyaline
+hypoid
+hypoiodite
+hypoiodous
+hypoionian
+hypoischium
+hypoisotonic
+hypokeimenometry
+hypokinesia
+hypokinesis
+hypokinetic
+hypokoristikon
+hypolemniscus
+hypoleptically
+hypoleucocytosis
+hypolimnion
+hypolocrian
+hypolydian
+hypomania
+hypomanic
+hypomelancholia
+hypomeral
+hypomere
+hypomeron
+hypometropia
+hypomixolydian
+hypomnematic
+hypomnesis
+hypomochlion
+hypomorph
+hypomotility
+hypomyotonia
+hyponastic
+hyponastically
+hyponasty
+hyponeuria
+hyponitric
+hyponitrite
+hyponitrous
+hyponoetic
+hyponoia
+hyponome
+hyponomic
+hyponychial
+hyponychium
+hyponym
+hyponymic
+hyponymous
+Hypoparia
+hypopepsia
+hypopepsinia
+hypopepsy
+hypopetalous
+hypopetaly
+hypophalangism
+hypophamin
+hypophamine
+hypophare
+hypopharyngeal
+hypopharynx
+hypophloeodal
+hypophloeodic
+hypophloeous
+hypophonic
+hypophonous
+hypophora
+hypophoria
+hypophosphate
+hypophosphite
+hypophosphoric
+hypophosphorous
+hypophrenia
+hypophrenic
+hypophrenosis
+hypophrygian
+hypophyge
+hypophyll
+hypophyllium
+hypophyllous
+hypophyllum
+hypophyse
+hypophyseal
+hypophysectomize
+hypophysectomy
+hypophyseoprivic
+hypophyseoprivous
+hypophysial
+hypophysical
+hypophysics
+hypophysis
+hypopial
+hypopinealism
+hypopituitarism
+Hypopitys
+hypoplankton
+hypoplanktonic
+hypoplasia
+hypoplastic
+hypoplastral
+hypoplastron
+hypoplasty
+hypoplasy
+hypoploid
+hypoploidy
+hypopodium
+hypopraxia
+hypoprosexia
+hypopselaphesia
+hypopteral
+hypopteron
+hypoptilar
+hypoptilum
+hypoptosis
+hypoptyalism
+hypopus
+hypopygial
+hypopygidium
+hypopygium
+hypopyon
+hyporadial
+hyporadiolus
+hyporadius
+hyporchema
+hyporchematic
+hyporcheme
+hyporchesis
+hyporhachidian
+hyporhachis
+hyporhined
+hyporit
+hyporrhythmic
+hyposcenium
+hyposcleral
+hyposcope
+hyposecretion
+hyposensitization
+hyposensitize
+hyposkeletal
+hyposmia
+hypospadiac
+hypospadias
+hyposphene
+hypospray
+hypostase
+hypostasis
+hypostasization
+hypostasize
+hypostasy
+hypostatic
+hypostatical
+hypostatically
+hypostatization
+hypostatize
+hyposternal
+hyposternum
+hyposthenia
+hyposthenic
+hyposthenuria
+hypostigma
+hypostilbite
+hypostoma
+Hypostomata
+hypostomatic
+hypostomatous
+hypostome
+hypostomial
+Hypostomides
+hypostomous
+hypostrophe
+hypostyle
+hypostypsis
+hypostyptic
+hyposulphite
+hyposulphurous
+hyposuprarenalism
+hyposyllogistic
+hyposynaphe
+hyposynergia
+hyposystole
+hypotactic
+hypotarsal
+hypotarsus
+hypotaxia
+hypotaxic
+hypotaxis
+hypotension
+hypotensive
+hypotensor
+hypotenusal
+hypotenuse
+hypothalamic
+hypothalamus
+hypothalline
+hypothallus
+hypothec
+hypotheca
+hypothecal
+hypothecary
+hypothecate
+hypothecation
+hypothecative
+hypothecator
+hypothecatory
+hypothecial
+hypothecium
+hypothenal
+hypothenar
+Hypotheria
+hypothermal
+hypothermia
+hypothermic
+hypothermy
+hypotheses
+hypothesis
+hypothesist
+hypothesize
+hypothesizer
+hypothetic
+hypothetical
+hypothetically
+hypothetics
+hypothetist
+hypothetize
+hypothetizer
+hypothyreosis
+hypothyroid
+hypothyroidism
+hypotonia
+hypotonic
+hypotonicity
+hypotonus
+hypotony
+hypotoxic
+hypotoxicity
+hypotrachelium
+Hypotremata
+hypotrich
+Hypotricha
+Hypotrichida
+hypotrichosis
+hypotrichous
+hypotrochanteric
+hypotrochoid
+hypotrochoidal
+hypotrophic
+hypotrophy
+hypotympanic
+hypotypic
+hypotypical
+hypotyposis
+hypovalve
+hypovanadate
+hypovanadic
+hypovanadious
+hypovanadous
+hypovitaminosis
+hypoxanthic
+hypoxanthine
+Hypoxis
+Hypoxylon
+hypozeugma
+hypozeuxis
+Hypozoa
+hypozoan
+hypozoic
+hyppish
+hypsibrachycephalic
+hypsibrachycephalism
+hypsibrachycephaly
+hypsicephalic
+hypsicephaly
+hypsidolichocephalic
+hypsidolichocephalism
+hypsidolichocephaly
+hypsiliform
+hypsiloid
+Hypsilophodon
+hypsilophodont
+hypsilophodontid
+Hypsilophodontidae
+hypsilophodontoid
+Hypsiprymninae
+Hypsiprymnodontinae
+Hypsiprymnus
+Hypsistarian
+hypsistenocephalic
+hypsistenocephalism
+hypsistenocephaly
+hypsobathymetric
+hypsocephalous
+hypsochrome
+hypsochromic
+hypsochromy
+hypsodont
+hypsodontism
+hypsodonty
+hypsographic
+hypsographical
+hypsography
+hypsoisotherm
+hypsometer
+hypsometric
+hypsometrical
+hypsometrically
+hypsometrist
+hypsometry
+hypsophobia
+hypsophonous
+hypsophyll
+hypsophyllar
+hypsophyllary
+hypsophyllous
+hypsophyllum
+hypsothermometer
+hypural
+hyraces
+hyraceum
+Hyrachyus
+hyracid
+Hyracidae
+hyraciform
+Hyracina
+Hyracodon
+hyracodont
+hyracodontid
+Hyracodontidae
+hyracodontoid
+hyracoid
+Hyracoidea
+hyracoidean
+hyracothere
+hyracotherian
+Hyracotheriinae
+Hyracotherium
+hyrax
+Hyrcan
+Hyrcanian
+hyson
+hyssop
+Hyssopus
+hystazarin
+hysteralgia
+hysteralgic
+hysteranthous
+hysterectomy
+hysterelcosis
+hysteresial
+hysteresis
+hysteretic
+hysteretically
+hysteria
+hysteriac
+Hysteriales
+hysteric
+hysterical
+hysterically
+hystericky
+hysterics
+hysteriform
+hysterioid
+Hysterocarpus
+hysterocatalepsy
+hysterocele
+hysterocleisis
+hysterocrystalline
+hysterocystic
+hysterodynia
+hysterogen
+hysterogenetic
+hysterogenic
+hysterogenous
+hysterogeny
+hysteroid
+hysterolaparotomy
+hysterolith
+hysterolithiasis
+hysterology
+hysterolysis
+hysteromania
+hysterometer
+hysterometry
+hysteromorphous
+hysteromyoma
+hysteromyomectomy
+hysteron
+hysteroneurasthenia
+hysteropathy
+hysteropexia
+hysteropexy
+hysterophore
+Hysterophyta
+hysterophytal
+hysterophyte
+hysteroproterize
+hysteroptosia
+hysteroptosis
+hysterorrhaphy
+hysterorrhexis
+hysteroscope
+hysterosis
+hysterotome
+hysterotomy
+hysterotraumatism
+hystriciasis
+hystricid
+Hystricidae
+Hystricinae
+hystricine
+hystricism
+hystricismus
+hystricoid
+hystricomorph
+Hystricomorpha
+hystricomorphic
+hystricomorphous
+Hystrix
+I
+i
+Iacchic
+Iacchos
+Iacchus
+Iachimo
+iamatology
+iamb
+Iambe
+iambelegus
+iambi
+iambic
+iambically
+iambist
+iambize
+iambographer
+iambus
+Ian
+Ianthina
+ianthine
+ianthinite
+Ianus
+iao
+Iapetus
+Iapyges
+Iapygian
+Iapygii
+iatraliptic
+iatraliptics
+iatric
+iatrical
+iatrochemic
+iatrochemical
+iatrochemist
+iatrochemistry
+iatrological
+iatrology
+iatromathematical
+iatromathematician
+iatromathematics
+iatromechanical
+iatromechanist
+iatrophysical
+iatrophysicist
+iatrophysics
+iatrotechnics
+iba
+Ibad
+Ibadite
+Iban
+Ibanag
+Iberes
+Iberi
+Iberia
+Iberian
+Iberic
+Iberis
+Iberism
+iberite
+ibex
+ibices
+ibid
+Ibididae
+Ibidinae
+ibidine
+Ibidium
+Ibilao
+ibis
+ibisbill
+Ibo
+ibolium
+ibota
+Ibsenian
+Ibsenic
+Ibsenish
+Ibsenism
+Ibsenite
+Ibycter
+Ibycus
+Icacinaceae
+icacinaceous
+icaco
+Icacorea
+Icaria
+Icarian
+Icarianism
+Icarus
+ice
+iceberg
+iceblink
+iceboat
+icebone
+icebound
+icebox
+icebreaker
+icecap
+icecraft
+iced
+icefall
+icefish
+icehouse
+Iceland
+iceland
+Icelander
+Icelandian
+Icelandic
+iceleaf
+iceless
+Icelidae
+icelike
+iceman
+Iceni
+icequake
+iceroot
+Icerya
+icework
+ich
+Ichneumia
+ichneumon
+ichneumoned
+Ichneumones
+ichneumonid
+Ichneumonidae
+ichneumonidan
+Ichneumonides
+ichneumoniform
+ichneumonized
+ichneumonoid
+Ichneumonoidea
+ichneumonology
+ichneumous
+ichneutic
+ichnite
+ichnographic
+ichnographical
+ichnographically
+ichnography
+ichnolite
+ichnolithology
+ichnolitic
+ichnological
+ichnology
+ichnomancy
+icho
+ichoglan
+ichor
+ichorous
+ichorrhea
+ichorrhemia
+ichthulin
+ichthulinic
+ichthus
+ichthyal
+ichthyic
+ichthyism
+ichthyismus
+ichthyization
+ichthyized
+ichthyobatrachian
+Ichthyocephali
+ichthyocephalous
+ichthyocol
+ichthyocolla
+ichthyocoprolite
+Ichthyodea
+Ichthyodectidae
+ichthyodian
+ichthyodont
+ichthyodorulite
+ichthyofauna
+ichthyoform
+ichthyographer
+ichthyographia
+ichthyographic
+ichthyography
+ichthyoid
+ichthyoidal
+Ichthyoidea
+Ichthyol
+ichthyolatrous
+ichthyolatry
+ichthyolite
+ichthyolitic
+ichthyologic
+ichthyological
+ichthyologically
+ichthyologist
+ichthyology
+ichthyomancy
+ichthyomantic
+Ichthyomorpha
+ichthyomorphic
+ichthyomorphous
+ichthyonomy
+ichthyopaleontology
+ichthyophagan
+ichthyophagi
+ichthyophagian
+ichthyophagist
+ichthyophagize
+ichthyophagous
+ichthyophagy
+ichthyophile
+ichthyophobia
+ichthyophthalmite
+ichthyophthiriasis
+ichthyopolism
+ichthyopolist
+ichthyopsid
+Ichthyopsida
+ichthyopsidan
+Ichthyopterygia
+ichthyopterygian
+ichthyopterygium
+Ichthyornis
+Ichthyornithes
+ichthyornithic
+Ichthyornithidae
+Ichthyornithiformes
+ichthyornithoid
+ichthyosaur
+Ichthyosauria
+ichthyosaurian
+ichthyosaurid
+Ichthyosauridae
+ichthyosauroid
+Ichthyosaurus
+ichthyosis
+ichthyosism
+ichthyotic
+Ichthyotomi
+ichthyotomist
+ichthyotomous
+ichthyotomy
+ichthyotoxin
+ichthyotoxism
+ichthytaxidermy
+ichu
+icica
+icicle
+icicled
+icily
+iciness
+icing
+icon
+Iconian
+iconic
+iconical
+iconism
+iconoclasm
+iconoclast
+iconoclastic
+iconoclastically
+iconoclasticism
+iconodule
+iconodulic
+iconodulist
+iconoduly
+iconograph
+iconographer
+iconographic
+iconographical
+iconographist
+iconography
+iconolater
+iconolatrous
+iconolatry
+iconological
+iconologist
+iconology
+iconomachal
+iconomachist
+iconomachy
+iconomania
+iconomatic
+iconomatically
+iconomaticism
+iconomatography
+iconometer
+iconometric
+iconometrical
+iconometrically
+iconometry
+iconophile
+iconophilism
+iconophilist
+iconophily
+iconoplast
+iconoscope
+iconostas
+iconostasion
+iconostasis
+iconotype
+icosahedral
+Icosandria
+icosasemic
+icosian
+icositetrahedron
+icosteid
+Icosteidae
+icosteine
+Icosteus
+icotype
+icteric
+icterical
+Icteridae
+icterine
+icteritious
+icterode
+icterogenetic
+icterogenic
+icterogenous
+icterohematuria
+icteroid
+icterus
+ictic
+Ictonyx
+ictuate
+ictus
+icy
+id
+Ida
+Idaean
+Idaho
+Idahoan
+Idaic
+idalia
+Idalian
+idant
+iddat
+Iddio
+ide
+idea
+ideaed
+ideaful
+ideagenous
+ideal
+idealess
+idealism
+idealist
+idealistic
+idealistical
+idealistically
+ideality
+idealization
+idealize
+idealizer
+idealless
+ideally
+idealness
+ideamonger
+Idean
+ideate
+ideation
+ideational
+ideationally
+ideative
+ideist
+idempotent
+identic
+identical
+identicalism
+identically
+identicalness
+identifiable
+identifiableness
+identification
+identifier
+identify
+identism
+identity
+ideogenetic
+ideogenical
+ideogenous
+ideogeny
+ideoglyph
+ideogram
+ideogrammic
+ideograph
+ideographic
+ideographical
+ideographically
+ideography
+ideolatry
+ideologic
+ideological
+ideologically
+ideologist
+ideologize
+ideologue
+ideology
+ideomotion
+ideomotor
+ideophone
+ideophonetics
+ideophonous
+ideoplastia
+ideoplastic
+ideoplastics
+ideoplasty
+ideopraxist
+ides
+idgah
+idiasm
+idic
+idiobiology
+idioblast
+idioblastic
+idiochromatic
+idiochromatin
+idiochromosome
+idiocrasis
+idiocrasy
+idiocratic
+idiocratical
+idiocy
+idiocyclophanous
+idioelectric
+idioelectrical
+Idiogastra
+idiogenesis
+idiogenetic
+idiogenous
+idioglossia
+idioglottic
+idiograph
+idiographic
+idiographical
+idiohypnotism
+idiolalia
+idiolatry
+idiologism
+idiolysin
+idiom
+idiomatic
+idiomatical
+idiomatically
+idiomaticalness
+idiomelon
+idiometer
+idiomography
+idiomology
+idiomorphic
+idiomorphically
+idiomorphism
+idiomorphous
+idiomuscular
+idiopathetic
+idiopathic
+idiopathical
+idiopathically
+idiopathy
+idiophanism
+idiophanous
+idiophonic
+idioplasm
+idioplasmatic
+idioplasmic
+idiopsychological
+idiopsychology
+idioreflex
+idiorepulsive
+idioretinal
+idiorrhythmic
+Idiosepiidae
+Idiosepion
+idiosome
+idiospasm
+idiospastic
+idiostatic
+idiosyncrasy
+idiosyncratic
+idiosyncratical
+idiosyncratically
+idiot
+idiotcy
+idiothalamous
+idiothermous
+idiothermy
+idiotic
+idiotical
+idiotically
+idioticalness
+idioticon
+idiotish
+idiotism
+idiotize
+idiotropian
+idiotry
+idiotype
+idiotypic
+Idism
+Idist
+Idistic
+idite
+iditol
+idle
+idleful
+idleheaded
+idlehood
+idleman
+idlement
+idleness
+idler
+idleset
+idleship
+idlety
+idlish
+idly
+Ido
+idocrase
+Idoism
+Idoist
+Idoistic
+idol
+idola
+idolaster
+idolater
+idolatress
+idolatric
+idolatrize
+idolatrizer
+idolatrous
+idolatrously
+idolatrousness
+idolatry
+idolify
+idolism
+idolist
+idolistic
+idolization
+idolize
+idolizer
+idoloclast
+idoloclastic
+idolodulia
+idolographical
+idololatrical
+idololatry
+idolomancy
+idolomania
+idolothyte
+idolothytic
+idolous
+idolum
+Idomeneus
+idoneal
+idoneity
+idoneous
+idoneousness
+idorgan
+idosaccharic
+idose
+Idotea
+Idoteidae
+Idothea
+Idotheidae
+idrialin
+idrialine
+idrialite
+Idrisid
+Idrisite
+idryl
+Idumaean
+idyl
+idyler
+idylism
+idylist
+idylize
+idyllian
+idyllic
+idyllical
+idyllically
+idyllicism
+ie
+Ierne
+if
+ife
+iffy
+Ifugao
+Igara
+Igbira
+Igdyr
+igelstromite
+igloo
+Iglulirmiut
+ignatia
+Ignatian
+Ignatianist
+Ignatius
+ignavia
+igneoaqueous
+igneous
+ignescent
+ignicolist
+igniferous
+igniferousness
+igniform
+ignifuge
+ignify
+ignigenous
+ignipotent
+ignipuncture
+ignitability
+ignite
+igniter
+ignitibility
+ignitible
+ignition
+ignitive
+ignitor
+ignitron
+ignivomous
+ignivomousness
+ignobility
+ignoble
+ignobleness
+ignoblesse
+ignobly
+ignominious
+ignominiously
+ignominiousness
+ignominy
+ignorable
+ignoramus
+ignorance
+ignorant
+Ignorantine
+ignorantism
+ignorantist
+ignorantly
+ignorantness
+ignoration
+ignore
+ignorement
+ignorer
+ignote
+Igorot
+iguana
+Iguania
+iguanian
+iguanid
+Iguanidae
+iguaniform
+Iguanodon
+iguanodont
+Iguanodontia
+Iguanodontidae
+iguanodontoid
+Iguanodontoidea
+iguanoid
+Iguvine
+ihi
+Ihlat
+ihleite
+ihram
+iiwi
+ijma
+Ijo
+ijolite
+Ijore
+ijussite
+ikat
+Ike
+ikey
+ikeyness
+Ikhwan
+ikona
+ikra
+Ila
+ileac
+ileectomy
+ileitis
+ileocaecal
+ileocaecum
+ileocolic
+ileocolitis
+ileocolostomy
+ileocolotomy
+ileon
+ileosigmoidostomy
+ileostomy
+ileotomy
+ilesite
+ileum
+ileus
+ilex
+ilia
+Iliac
+iliac
+iliacus
+Iliad
+Iliadic
+Iliadist
+Iliadize
+iliahi
+ilial
+Ilian
+iliau
+Ilicaceae
+ilicaceous
+ilicic
+ilicin
+ilima
+iliocaudal
+iliocaudalis
+iliococcygeal
+iliococcygeus
+iliococcygian
+iliocostal
+iliocostalis
+iliodorsal
+iliofemoral
+iliohypogastric
+ilioinguinal
+ilioischiac
+ilioischiatic
+iliolumbar
+iliopectineal
+iliopelvic
+ilioperoneal
+iliopsoas
+iliopsoatic
+iliopubic
+iliosacral
+iliosciatic
+ilioscrotal
+iliospinal
+iliotibial
+iliotrochanteric
+Ilissus
+ilium
+ilk
+ilka
+ilkane
+ill
+illaborate
+illachrymable
+illachrymableness
+Illaenus
+Illano
+Illanun
+illapsable
+illapse
+illapsive
+illaqueate
+illaqueation
+illation
+illative
+illatively
+illaudable
+illaudably
+illaudation
+illaudatory
+Illecebraceae
+illecebrous
+illeck
+illegal
+illegality
+illegalize
+illegally
+illegalness
+illegibility
+illegible
+illegibleness
+illegibly
+illegitimacy
+illegitimate
+illegitimately
+illegitimateness
+illegitimation
+illegitimatize
+illeism
+illeist
+illess
+illfare
+illguide
+illiberal
+illiberalism
+illiberality
+illiberalize
+illiberally
+illiberalness
+illicit
+illicitly
+illicitness
+Illicium
+illimitability
+illimitable
+illimitableness
+illimitably
+illimitate
+illimitation
+illimited
+illimitedly
+illimitedness
+illinition
+illinium
+Illinoian
+Illinois
+Illinoisan
+Illinoisian
+Illipe
+illipene
+illiquation
+illiquid
+illiquidity
+illiquidly
+illish
+illision
+illiteracy
+illiteral
+illiterate
+illiterately
+illiterateness
+illiterature
+illium
+illness
+illocal
+illocality
+illocally
+illogic
+illogical
+illogicality
+illogically
+illogicalness
+illogician
+illogicity
+Illoricata
+illoricate
+illoricated
+illoyal
+illoyalty
+illth
+illucidate
+illucidation
+illucidative
+illude
+illudedly
+illuder
+illume
+illumer
+illuminability
+illuminable
+illuminance
+illuminant
+illuminate
+illuminated
+illuminati
+illuminating
+illuminatingly
+illumination
+illuminational
+illuminatism
+illuminatist
+illuminative
+illuminato
+illuminator
+illuminatory
+illuminatus
+illumine
+illuminee
+illuminer
+Illuminism
+illuminist
+Illuministic
+Illuminize
+illuminometer
+illuminous
+illupi
+illure
+illurement
+illusible
+illusion
+illusionable
+illusional
+illusionary
+illusioned
+illusionism
+illusionist
+illusionistic
+illusive
+illusively
+illusiveness
+illusor
+illusorily
+illusoriness
+illusory
+illustrable
+illustratable
+illustrate
+illustration
+illustrational
+illustrative
+illustratively
+illustrator
+illustratory
+illustratress
+illustre
+illustricity
+illustrious
+illustriously
+illustriousness
+illutate
+illutation
+illuvial
+illuviate
+illuviation
+illy
+Illyrian
+Illyric
+ilmenite
+ilmenitite
+ilmenorutile
+Ilocano
+Ilokano
+Iloko
+Ilongot
+ilot
+Ilpirra
+ilvaite
+Ilya
+Ilysanthes
+Ilysia
+Ilysiidae
+ilysioid
+Ima
+image
+imageable
+imageless
+imager
+imagerial
+imagerially
+imagery
+imaginability
+imaginable
+imaginableness
+imaginably
+imaginal
+imaginant
+imaginarily
+imaginariness
+imaginary
+imaginate
+imagination
+imaginational
+imaginationalism
+imaginative
+imaginatively
+imaginativeness
+imaginator
+imagine
+imaginer
+imagines
+imaginist
+imaginous
+imagism
+imagist
+imagistic
+imago
+imam
+imamah
+imamate
+imambarah
+imamic
+imamship
+Imantophyllum
+imaret
+imbalance
+imban
+imband
+imbannered
+imbarge
+imbark
+imbarn
+imbased
+imbastardize
+imbat
+imbauba
+imbe
+imbecile
+imbecilely
+imbecilic
+imbecilitate
+imbecility
+imbed
+imbellious
+imber
+imbibe
+imbiber
+imbibition
+imbibitional
+imbibitory
+imbirussu
+imbitter
+imbitterment
+imbolish
+imbondo
+imbonity
+imbordure
+imborsation
+imbosom
+imbower
+imbreathe
+imbreviate
+imbrex
+imbricate
+imbricated
+imbricately
+imbrication
+imbricative
+imbroglio
+imbrue
+imbruement
+imbrute
+imbrutement
+imbue
+imbuement
+imburse
+imbursement
+Imer
+Imerina
+Imeritian
+imi
+imidazole
+imidazolyl
+imide
+imidic
+imidogen
+iminazole
+imine
+imino
+iminohydrin
+imitability
+imitable
+imitableness
+imitancy
+imitant
+imitate
+imitatee
+imitation
+imitational
+imitationist
+imitative
+imitatively
+imitativeness
+imitator
+imitatorship
+imitatress
+imitatrix
+immaculacy
+immaculance
+immaculate
+immaculately
+immaculateness
+immalleable
+immanacle
+immanation
+immane
+immanely
+immanence
+immanency
+immaneness
+immanent
+immanental
+immanentism
+immanentist
+immanently
+Immanes
+immanifest
+immanifestness
+immanity
+immantle
+Immanuel
+immarble
+immarcescible
+immarcescibly
+immarcibleness
+immarginate
+immask
+immatchable
+immaterial
+immaterialism
+immaterialist
+immateriality
+immaterialize
+immaterially
+immaterialness
+immaterials
+immateriate
+immatriculate
+immatriculation
+immature
+immatured
+immaturely
+immatureness
+immaturity
+immeability
+immeasurability
+immeasurable
+immeasurableness
+immeasurably
+immeasured
+immechanical
+immechanically
+immediacy
+immedial
+immediate
+immediately
+immediateness
+immediatism
+immediatist
+immedicable
+immedicableness
+immedicably
+immelodious
+immember
+immemorable
+immemorial
+immemorially
+immense
+immensely
+immenseness
+immensity
+immensive
+immensurability
+immensurable
+immensurableness
+immensurate
+immerd
+immerge
+immergence
+immergent
+immerit
+immerited
+immeritorious
+immeritoriously
+immeritous
+immerse
+immersement
+immersible
+immersion
+immersionism
+immersionist
+immersive
+immethodic
+immethodical
+immethodically
+immethodicalness
+immethodize
+immetrical
+immetrically
+immetricalness
+immew
+immi
+immigrant
+immigrate
+immigration
+immigrator
+immigratory
+imminence
+imminency
+imminent
+imminently
+imminentness
+immingle
+imminution
+immiscibility
+immiscible
+immiscibly
+immission
+immit
+immitigability
+immitigable
+immitigably
+immix
+immixable
+immixture
+immobile
+immobility
+immobilization
+immobilize
+immoderacy
+immoderate
+immoderately
+immoderateness
+immoderation
+immodest
+immodestly
+immodesty
+immodulated
+immolate
+immolation
+immolator
+immoment
+immomentous
+immonastered
+immoral
+immoralism
+immoralist
+immorality
+immoralize
+immorally
+immorigerous
+immorigerousness
+immortability
+immortable
+immortal
+immortalism
+immortalist
+immortality
+immortalizable
+immortalization
+immortalize
+immortalizer
+immortally
+immortalness
+immortalship
+immortelle
+immortification
+immortified
+immotile
+immotioned
+immotive
+immound
+immovability
+immovable
+immovableness
+immovably
+immund
+immundity
+immune
+immunist
+immunity
+immunization
+immunize
+immunochemistry
+immunogen
+immunogenetic
+immunogenetics
+immunogenic
+immunogenically
+immunogenicity
+immunologic
+immunological
+immunologically
+immunologist
+immunology
+immunoreaction
+immunotoxin
+immuration
+immure
+immurement
+immusical
+immusically
+immutability
+immutable
+immutableness
+immutably
+immutation
+immute
+immutilate
+immutual
+Imogen
+Imolinda
+imonium
+imp
+impacability
+impacable
+impack
+impackment
+impact
+impacted
+impaction
+impactionize
+impactment
+impactual
+impages
+impaint
+impair
+impairable
+impairer
+impairment
+impala
+impalace
+impalatable
+impale
+impalement
+impaler
+impall
+impalm
+impalpability
+impalpable
+impalpably
+impalsy
+impaludism
+impanate
+impanation
+impanator
+impane
+impanel
+impanelment
+impapase
+impapyrate
+impar
+imparadise
+imparalleled
+imparasitic
+impardonable
+impardonably
+imparidigitate
+imparipinnate
+imparisyllabic
+imparity
+impark
+imparkation
+imparl
+imparlance
+imparsonee
+impart
+impartable
+impartance
+impartation
+imparter
+impartial
+impartialism
+impartialist
+impartiality
+impartially
+impartialness
+impartibilibly
+impartibility
+impartible
+impartibly
+imparticipable
+impartite
+impartive
+impartivity
+impartment
+impassability
+impassable
+impassableness
+impassably
+impasse
+impassibilibly
+impassibility
+impassible
+impassibleness
+impassion
+impassionable
+impassionate
+impassionately
+impassioned
+impassionedly
+impassionedness
+impassionment
+impassive
+impassively
+impassiveness
+impassivity
+impastation
+impaste
+impasto
+impasture
+impaternate
+impatible
+impatience
+impatiency
+Impatiens
+impatient
+Impatientaceae
+impatientaceous
+impatiently
+impatientness
+impatronize
+impave
+impavid
+impavidity
+impavidly
+impawn
+impayable
+impeach
+impeachability
+impeachable
+impeacher
+impeachment
+impearl
+impeccability
+impeccable
+impeccably
+impeccance
+impeccancy
+impeccant
+impectinate
+impecuniary
+impecuniosity
+impecunious
+impecuniously
+impecuniousness
+impedance
+impede
+impeder
+impedibility
+impedible
+impedient
+impediment
+impedimenta
+impedimental
+impedimentary
+impeding
+impedingly
+impedite
+impedition
+impeditive
+impedometer
+impeevish
+impel
+impellent
+impeller
+impen
+impend
+impendence
+impendency
+impendent
+impending
+impenetrability
+impenetrable
+impenetrableness
+impenetrably
+impenetrate
+impenetration
+impenetrative
+impenitence
+impenitent
+impenitently
+impenitentness
+impenitible
+impenitibleness
+impennate
+Impennes
+impent
+imperance
+imperant
+Imperata
+imperate
+imperation
+imperatival
+imperative
+imperatively
+imperativeness
+imperator
+imperatorial
+imperatorially
+imperatorian
+imperatorious
+imperatorship
+imperatory
+imperatrix
+imperceivable
+imperceivableness
+imperceivably
+imperceived
+imperceiverant
+imperceptibility
+imperceptible
+imperceptibleness
+imperceptibly
+imperception
+imperceptive
+imperceptiveness
+imperceptivity
+impercipience
+impercipient
+imperence
+imperent
+imperfect
+imperfected
+imperfectibility
+imperfectible
+imperfection
+imperfectious
+imperfective
+imperfectly
+imperfectness
+imperforable
+Imperforata
+imperforate
+imperforated
+imperforation
+imperformable
+imperia
+imperial
+imperialin
+imperialine
+imperialism
+imperialist
+imperialistic
+imperialistically
+imperiality
+imperialization
+imperialize
+imperially
+imperialness
+imperialty
+imperil
+imperilment
+imperious
+imperiously
+imperiousness
+imperish
+imperishability
+imperishable
+imperishableness
+imperishably
+imperite
+imperium
+impermanence
+impermanency
+impermanent
+impermanently
+impermeability
+impermeabilization
+impermeabilize
+impermeable
+impermeableness
+impermeably
+impermeated
+impermeator
+impermissible
+impermutable
+imperscriptible
+imperscrutable
+impersonable
+impersonal
+impersonality
+impersonalization
+impersonalize
+impersonally
+impersonate
+impersonation
+impersonative
+impersonator
+impersonatress
+impersonatrix
+impersonification
+impersonify
+impersonization
+impersonize
+imperspicuity
+imperspicuous
+imperspirability
+imperspirable
+impersuadable
+impersuadableness
+impersuasibility
+impersuasible
+impersuasibleness
+impersuasibly
+impertinacy
+impertinence
+impertinency
+impertinent
+impertinently
+impertinentness
+impertransible
+imperturbability
+imperturbable
+imperturbableness
+imperturbably
+imperturbation
+imperturbed
+imperverse
+impervertible
+impervestigable
+imperviability
+imperviable
+imperviableness
+impervial
+impervious
+imperviously
+imperviousness
+impest
+impestation
+impester
+impeticos
+impetiginous
+impetigo
+impetition
+impetrate
+impetration
+impetrative
+impetrator
+impetratory
+impetre
+impetulant
+impetulantly
+impetuosity
+impetuous
+impetuously
+impetuousness
+impetus
+Impeyan
+imphee
+impi
+impicture
+impierceable
+impiety
+impignorate
+impignoration
+impinge
+impingement
+impingence
+impingent
+impinger
+impinguate
+impious
+impiously
+impiousness
+impish
+impishly
+impishness
+impiteous
+impitiably
+implacability
+implacable
+implacableness
+implacably
+implacement
+implacental
+Implacentalia
+implacentate
+implant
+implantation
+implanter
+implastic
+implasticity
+implate
+implausibility
+implausible
+implausibleness
+implausibly
+impleach
+implead
+impleadable
+impleader
+impledge
+implement
+implemental
+implementation
+implementiferous
+implete
+impletion
+impletive
+implex
+impliable
+implial
+implicant
+implicate
+implicately
+implicateness
+implication
+implicational
+implicative
+implicatively
+implicatory
+implicit
+implicitly
+implicitness
+impliedly
+impliedness
+impling
+implode
+implodent
+implorable
+imploration
+implorator
+imploratory
+implore
+implorer
+imploring
+imploringly
+imploringness
+implosion
+implosive
+implosively
+implume
+implumed
+implunge
+impluvium
+imply
+impocket
+impofo
+impoison
+impoisoner
+impolarizable
+impolicy
+impolished
+impolite
+impolitely
+impoliteness
+impolitic
+impolitical
+impolitically
+impoliticalness
+impoliticly
+impoliticness
+impollute
+imponderabilia
+imponderability
+imponderable
+imponderableness
+imponderably
+imponderous
+impone
+imponent
+impoor
+impopular
+impopularly
+imporosity
+imporous
+import
+importability
+importable
+importableness
+importably
+importance
+importancy
+important
+importantly
+importation
+importer
+importless
+importment
+importraiture
+importray
+importunacy
+importunance
+importunate
+importunately
+importunateness
+importunator
+importune
+importunely
+importunement
+importuner
+importunity
+imposable
+imposableness
+imposal
+impose
+imposement
+imposer
+imposing
+imposingly
+imposingness
+imposition
+impositional
+impositive
+impossibilification
+impossibilism
+impossibilist
+impossibilitate
+impossibility
+impossible
+impossibleness
+impossibly
+impost
+imposter
+imposterous
+impostor
+impostorism
+impostorship
+impostress
+impostrix
+impostrous
+impostumate
+impostumation
+impostume
+imposture
+imposturism
+imposturous
+imposure
+impot
+impotable
+impotence
+impotency
+impotent
+impotently
+impotentness
+impound
+impoundable
+impoundage
+impounder
+impoundment
+impoverish
+impoverisher
+impoverishment
+impracticability
+impracticable
+impracticableness
+impracticably
+impractical
+impracticality
+impracticalness
+imprecant
+imprecate
+imprecation
+imprecator
+imprecatorily
+imprecatory
+imprecise
+imprecisely
+imprecision
+impredicability
+impredicable
+impreg
+impregn
+impregnability
+impregnable
+impregnableness
+impregnably
+impregnant
+impregnate
+impregnation
+impregnative
+impregnator
+impregnatory
+imprejudice
+impremeditate
+impreparation
+impresa
+impresario
+imprescience
+imprescribable
+imprescriptibility
+imprescriptible
+imprescriptibly
+imprese
+impress
+impressable
+impressedly
+impresser
+impressibility
+impressible
+impressibleness
+impressibly
+impression
+impressionability
+impressionable
+impressionableness
+impressionably
+impressional
+impressionalist
+impressionality
+impressionally
+impressionary
+impressionism
+impressionist
+impressionistic
+impressionistically
+impressionless
+impressive
+impressively
+impressiveness
+impressment
+impressor
+impressure
+imprest
+imprestable
+impreventability
+impreventable
+imprevisibility
+imprevisible
+imprevision
+imprimatur
+imprime
+imprimitive
+imprimitivity
+imprint
+imprinter
+imprison
+imprisonable
+imprisoner
+imprisonment
+improbability
+improbabilize
+improbable
+improbableness
+improbably
+improbation
+improbative
+improbatory
+improbity
+improcreant
+improcurability
+improcurable
+improducible
+improficience
+improficiency
+improgressive
+improgressively
+improgressiveness
+improlificical
+impromptitude
+impromptu
+impromptuary
+impromptuist
+improof
+improper
+improperation
+improperly
+improperness
+impropriate
+impropriation
+impropriator
+impropriatrix
+impropriety
+improvability
+improvable
+improvableness
+improvably
+improve
+improvement
+improver
+improvership
+improvidence
+improvident
+improvidentially
+improvidently
+improving
+improvingly
+improvisate
+improvisation
+improvisational
+improvisator
+improvisatorial
+improvisatorially
+improvisatorize
+improvisatory
+improvise
+improvisedly
+improviser
+improvision
+improviso
+improvisor
+imprudence
+imprudency
+imprudent
+imprudential
+imprudently
+imprudentness
+impship
+impuberal
+impuberate
+impuberty
+impubic
+impudence
+impudency
+impudent
+impudently
+impudentness
+impudicity
+impugn
+impugnability
+impugnable
+impugnation
+impugner
+impugnment
+impuissance
+impuissant
+impulse
+impulsion
+impulsive
+impulsively
+impulsiveness
+impulsivity
+impulsory
+impunctate
+impunctual
+impunctuality
+impunely
+impunible
+impunibly
+impunity
+impure
+impurely
+impureness
+impuritan
+impuritanism
+impurity
+imputability
+imputable
+imputableness
+imputably
+imputation
+imputative
+imputatively
+imputativeness
+impute
+imputedly
+imputer
+imputrescence
+imputrescibility
+imputrescible
+imputrid
+impy
+imshi
+imsonic
+imu
+in
+inability
+inabordable
+inabstinence
+inaccentuated
+inaccentuation
+inacceptable
+inaccessibility
+inaccessible
+inaccessibleness
+inaccessibly
+inaccordance
+inaccordancy
+inaccordant
+inaccordantly
+inaccuracy
+inaccurate
+inaccurately
+inaccurateness
+inachid
+Inachidae
+inachoid
+Inachus
+inacquaintance
+inacquiescent
+inactinic
+inaction
+inactionist
+inactivate
+inactivation
+inactive
+inactively
+inactiveness
+inactivity
+inactuate
+inactuation
+inadaptability
+inadaptable
+inadaptation
+inadaptive
+inadept
+inadequacy
+inadequate
+inadequately
+inadequateness
+inadequation
+inadequative
+inadequatively
+inadherent
+inadhesion
+inadhesive
+inadjustability
+inadjustable
+inadmissibility
+inadmissible
+inadmissibly
+inadventurous
+inadvertence
+inadvertency
+inadvertent
+inadvertently
+inadvisability
+inadvisable
+inadvisableness
+inadvisedly
+inaesthetic
+inaffability
+inaffable
+inaffectation
+inagglutinability
+inagglutinable
+inaggressive
+inagile
+inaidable
+inaja
+inalacrity
+inalienability
+inalienable
+inalienableness
+inalienably
+inalimental
+inalterability
+inalterable
+inalterableness
+inalterably
+inamissibility
+inamissible
+inamissibleness
+inamorata
+inamorate
+inamoration
+inamorato
+inamovability
+inamovable
+inane
+inanely
+inanga
+inangulate
+inanimadvertence
+inanimate
+inanimated
+inanimately
+inanimateness
+inanimation
+inanition
+inanity
+inantherate
+inapathy
+inapostate
+inapparent
+inappealable
+inappeasable
+inappellability
+inappellable
+inappendiculate
+inapperceptible
+inappertinent
+inappetence
+inappetency
+inappetent
+inappetible
+inapplicability
+inapplicable
+inapplicableness
+inapplicably
+inapplication
+inapposite
+inappositely
+inappositeness
+inappreciable
+inappreciably
+inappreciation
+inappreciative
+inappreciatively
+inappreciativeness
+inapprehensible
+inapprehension
+inapprehensive
+inapprehensiveness
+inapproachability
+inapproachable
+inapproachably
+inappropriable
+inappropriableness
+inappropriate
+inappropriately
+inappropriateness
+inapt
+inaptitude
+inaptly
+inaptness
+inaqueous
+inarable
+inarch
+inarculum
+inarguable
+inarguably
+inarm
+inarticulacy
+Inarticulata
+inarticulate
+inarticulated
+inarticulately
+inarticulateness
+inarticulation
+inartificial
+inartificiality
+inartificially
+inartificialness
+inartistic
+inartistical
+inartisticality
+inartistically
+inasmuch
+inassimilable
+inassimilation
+inassuageable
+inattackable
+inattention
+inattentive
+inattentively
+inattentiveness
+inaudibility
+inaudible
+inaudibleness
+inaudibly
+inaugur
+inaugural
+inaugurate
+inauguration
+inaugurative
+inaugurator
+inauguratory
+inaugurer
+inaurate
+inauration
+inauspicious
+inauspiciously
+inauspiciousness
+inauthentic
+inauthenticity
+inauthoritative
+inauthoritativeness
+inaxon
+inbe
+inbeaming
+inbearing
+inbeing
+inbending
+inbent
+inbirth
+inblow
+inblowing
+inblown
+inboard
+inbond
+inborn
+inbound
+inbread
+inbreak
+inbreaking
+inbreathe
+inbreather
+inbred
+inbreed
+inbring
+inbringer
+inbuilt
+inburning
+inburnt
+inburst
+inby
+Inca
+Incaic
+incalculability
+incalculable
+incalculableness
+incalculably
+incalescence
+incalescency
+incalescent
+incaliculate
+incalver
+incalving
+incameration
+Incan
+incandent
+incandesce
+incandescence
+incandescency
+incandescent
+incandescently
+incanous
+incantation
+incantational
+incantator
+incantatory
+incanton
+incapability
+incapable
+incapableness
+incapably
+incapacious
+incapaciousness
+incapacitate
+incapacitation
+incapacity
+incapsulate
+incapsulation
+incaptivate
+incarcerate
+incarceration
+incarcerator
+incardinate
+incardination
+Incarial
+incarmined
+incarn
+incarnadine
+incarnant
+incarnate
+incarnation
+incarnational
+incarnationist
+incarnative
+Incarvillea
+incase
+incasement
+incast
+incatenate
+incatenation
+incaution
+incautious
+incautiously
+incautiousness
+incavate
+incavated
+incavation
+incavern
+incedingly
+incelebrity
+incendiarism
+incendiary
+incendivity
+incensation
+incense
+incenseless
+incensement
+incensory
+incensurable
+incensurably
+incenter
+incentive
+incentively
+incentor
+incept
+inception
+inceptive
+inceptively
+inceptor
+inceration
+incertitude
+incessable
+incessably
+incessancy
+incessant
+incessantly
+incessantness
+incest
+incestuous
+incestuously
+incestuousness
+inch
+inched
+inchmeal
+inchoacy
+inchoant
+inchoate
+inchoately
+inchoateness
+inchoation
+inchoative
+inchpin
+inchworm
+incide
+incidence
+incident
+incidental
+incidentalist
+incidentally
+incidentalness
+incidentless
+incidently
+incinerable
+incinerate
+incineration
+incinerator
+incipience
+incipient
+incipiently
+incircumscription
+incircumspect
+incircumspection
+incircumspectly
+incircumspectness
+incisal
+incise
+incisely
+incisiform
+incision
+incisive
+incisively
+incisiveness
+incisor
+incisorial
+incisory
+incisure
+incitability
+incitable
+incitant
+incitation
+incite
+incitement
+inciter
+incitingly
+incitive
+incitress
+incivic
+incivility
+incivilization
+incivism
+inclemency
+inclement
+inclemently
+inclementness
+inclinable
+inclinableness
+inclination
+inclinational
+inclinator
+inclinatorily
+inclinatorium
+inclinatory
+incline
+incliner
+inclinograph
+inclinometer
+inclip
+inclose
+inclosure
+includable
+include
+included
+includedness
+includer
+inclusa
+incluse
+inclusion
+inclusionist
+inclusive
+inclusively
+inclusiveness
+inclusory
+incoagulable
+incoalescence
+incoercible
+incog
+incogent
+incogitability
+incogitable
+incogitancy
+incogitant
+incogitantly
+incogitative
+incognita
+incognitive
+incognito
+incognizability
+incognizable
+incognizance
+incognizant
+incognoscent
+incognoscibility
+incognoscible
+incoherence
+incoherency
+incoherent
+incoherentific
+incoherently
+incoherentness
+incohering
+incohesion
+incohesive
+incoincidence
+incoincident
+incombustibility
+incombustible
+incombustibleness
+incombustibly
+incombustion
+income
+incomeless
+incomer
+incoming
+incommensurability
+incommensurable
+incommensurableness
+incommensurably
+incommensurate
+incommensurately
+incommensurateness
+incommiscibility
+incommiscible
+incommodate
+incommodation
+incommode
+incommodement
+incommodious
+incommodiously
+incommodiousness
+incommodity
+incommunicability
+incommunicable
+incommunicableness
+incommunicably
+incommunicado
+incommunicative
+incommunicatively
+incommunicativeness
+incommutability
+incommutable
+incommutableness
+incommutably
+incompact
+incompactly
+incompactness
+incomparability
+incomparable
+incomparableness
+incomparably
+incompassionate
+incompassionately
+incompassionateness
+incompatibility
+incompatible
+incompatibleness
+incompatibly
+incompendious
+incompensated
+incompensation
+incompetence
+incompetency
+incompetent
+incompetently
+incompetentness
+incompletability
+incompletable
+incompletableness
+incomplete
+incompleted
+incompletely
+incompleteness
+incompletion
+incomplex
+incompliance
+incompliancy
+incompliant
+incompliantly
+incomplicate
+incomplying
+incomposed
+incomposedly
+incomposedness
+incomposite
+incompossibility
+incompossible
+incomprehended
+incomprehending
+incomprehendingly
+incomprehensibility
+incomprehensible
+incomprehensibleness
+incomprehensibly
+incomprehension
+incomprehensive
+incomprehensively
+incomprehensiveness
+incompressibility
+incompressible
+incompressibleness
+incompressibly
+incomputable
+inconcealable
+inconceivability
+inconceivable
+inconceivableness
+inconceivably
+inconcinnate
+inconcinnately
+inconcinnity
+inconcinnous
+inconcludent
+inconcluding
+inconclusion
+inconclusive
+inconclusively
+inconclusiveness
+inconcrete
+inconcurrent
+inconcurring
+incondensability
+incondensable
+incondensibility
+incondensible
+incondite
+inconditionate
+inconditioned
+inconducive
+inconfirm
+inconformable
+inconformably
+inconformity
+inconfused
+inconfusedly
+inconfusion
+inconfutable
+inconfutably
+incongealable
+incongealableness
+incongenerous
+incongenial
+incongeniality
+inconglomerate
+incongruence
+incongruent
+incongruently
+incongruity
+incongruous
+incongruously
+incongruousness
+inconjoinable
+inconnected
+inconnectedness
+inconnu
+inconscience
+inconscient
+inconsciently
+inconscious
+inconsciously
+inconsecutive
+inconsecutively
+inconsecutiveness
+inconsequence
+inconsequent
+inconsequential
+inconsequentiality
+inconsequentially
+inconsequently
+inconsequentness
+inconsiderable
+inconsiderableness
+inconsiderably
+inconsiderate
+inconsiderately
+inconsiderateness
+inconsideration
+inconsidered
+inconsistence
+inconsistency
+inconsistent
+inconsistently
+inconsistentness
+inconsolability
+inconsolable
+inconsolableness
+inconsolably
+inconsolate
+inconsolately
+inconsonance
+inconsonant
+inconsonantly
+inconspicuous
+inconspicuously
+inconspicuousness
+inconstancy
+inconstant
+inconstantly
+inconstantness
+inconstruable
+inconsultable
+inconsumable
+inconsumably
+inconsumed
+incontaminable
+incontaminate
+incontaminateness
+incontemptible
+incontestability
+incontestable
+incontestableness
+incontestably
+incontinence
+incontinency
+incontinent
+incontinently
+incontinuity
+incontinuous
+incontracted
+incontractile
+incontraction
+incontrollable
+incontrollably
+incontrolled
+incontrovertibility
+incontrovertible
+incontrovertibleness
+incontrovertibly
+inconvenience
+inconveniency
+inconvenient
+inconveniently
+inconvenientness
+inconversable
+inconversant
+inconversibility
+inconvertibility
+inconvertible
+inconvertibleness
+inconvertibly
+inconvinced
+inconvincedly
+inconvincibility
+inconvincible
+inconvincibly
+incopresentability
+incopresentable
+incoronate
+incoronated
+incoronation
+incorporable
+incorporate
+incorporated
+incorporatedness
+incorporation
+incorporative
+incorporator
+incorporeal
+incorporealism
+incorporealist
+incorporeality
+incorporealize
+incorporeally
+incorporeity
+incorporeous
+incorpse
+incorrect
+incorrection
+incorrectly
+incorrectness
+incorrespondence
+incorrespondency
+incorrespondent
+incorresponding
+incorrigibility
+incorrigible
+incorrigibleness
+incorrigibly
+incorrodable
+incorrodible
+incorrosive
+incorrupt
+incorrupted
+incorruptibility
+Incorruptible
+incorruptible
+incorruptibleness
+incorruptibly
+incorruption
+incorruptly
+incorruptness
+incourteous
+incourteously
+incrash
+incrassate
+incrassated
+incrassation
+incrassative
+increasable
+increasableness
+increase
+increasedly
+increaseful
+increasement
+increaser
+increasing
+increasingly
+increate
+increately
+increative
+incredibility
+incredible
+incredibleness
+incredibly
+increditable
+incredited
+incredulity
+incredulous
+incredulously
+incredulousness
+increep
+incremate
+incremation
+increment
+incremental
+incrementation
+increpate
+increpation
+increscence
+increscent
+increst
+incretion
+incretionary
+incretory
+incriminate
+incrimination
+incriminator
+incriminatory
+incross
+incrossbred
+incrossing
+incrotchet
+incruent
+incruental
+incruentous
+incrust
+incrustant
+Incrustata
+incrustate
+incrustation
+incrustator
+incrustive
+incrustment
+incrystal
+incrystallizable
+incubate
+incubation
+incubational
+incubative
+incubator
+incubatorium
+incubatory
+incubi
+incubous
+incubus
+incudal
+incudate
+incudectomy
+incudes
+incudomalleal
+incudostapedial
+inculcate
+inculcation
+inculcative
+inculcator
+inculcatory
+inculpability
+inculpable
+inculpableness
+inculpably
+inculpate
+inculpation
+inculpative
+inculpatory
+incult
+incultivation
+inculture
+incumbence
+incumbency
+incumbent
+incumbentess
+incumbently
+incumber
+incumberment
+incumbrance
+incumbrancer
+incunable
+incunabula
+incunabular
+incunabulist
+incunabulum
+incuneation
+incur
+incurability
+incurable
+incurableness
+incurably
+incuriosity
+incurious
+incuriously
+incuriousness
+incurrable
+incurrence
+incurrent
+incurse
+incursion
+incursionist
+incursive
+incurvate
+incurvation
+incurvature
+incurve
+incus
+incuse
+incut
+incutting
+Ind
+indaba
+indaconitine
+indagate
+indagation
+indagative
+indagator
+indagatory
+indamine
+indan
+indane
+Indanthrene
+indanthrene
+indart
+indazin
+indazine
+indazol
+indazole
+inde
+indebt
+indebted
+indebtedness
+indebtment
+indecence
+indecency
+indecent
+indecently
+indecentness
+Indecidua
+indeciduate
+indeciduous
+indecipherability
+indecipherable
+indecipherableness
+indecipherably
+indecision
+indecisive
+indecisively
+indecisiveness
+indeclinable
+indeclinableness
+indeclinably
+indecomponible
+indecomposable
+indecomposableness
+indecorous
+indecorously
+indecorousness
+indecorum
+indeed
+indeedy
+indefaceable
+indefatigability
+indefatigable
+indefatigableness
+indefatigably
+indefeasibility
+indefeasible
+indefeasibleness
+indefeasibly
+indefeatable
+indefectibility
+indefectible
+indefectibly
+indefective
+indefensibility
+indefensible
+indefensibleness
+indefensibly
+indefensive
+indeficiency
+indeficient
+indeficiently
+indefinable
+indefinableness
+indefinably
+indefinite
+indefinitely
+indefiniteness
+indefinitive
+indefinitively
+indefinitiveness
+indefinitude
+indefinity
+indeflectible
+indefluent
+indeformable
+indehiscence
+indehiscent
+indelectable
+indelegability
+indelegable
+indeliberate
+indeliberately
+indeliberateness
+indeliberation
+indelibility
+indelible
+indelibleness
+indelibly
+indelicacy
+indelicate
+indelicately
+indelicateness
+indemnification
+indemnificator
+indemnificatory
+indemnifier
+indemnify
+indemnitee
+indemnitor
+indemnity
+indemnization
+indemoniate
+indemonstrability
+indemonstrable
+indemonstrableness
+indemonstrably
+indene
+indent
+indentation
+indented
+indentedly
+indentee
+indenter
+indention
+indentment
+indentor
+indenture
+indentured
+indentureship
+indentwise
+independable
+independence
+independency
+independent
+independentism
+independently
+Independista
+indeposable
+indeprehensible
+indeprivability
+indeprivable
+inderivative
+indescribability
+indescribable
+indescribableness
+indescribably
+indescript
+indescriptive
+indesert
+indesignate
+indesirable
+indestructibility
+indestructible
+indestructibleness
+indestructibly
+indetectable
+indeterminable
+indeterminableness
+indeterminably
+indeterminacy
+indeterminate
+indeterminately
+indeterminateness
+indetermination
+indeterminative
+indetermined
+indeterminism
+indeterminist
+indeterministic
+indevirginate
+indevoted
+indevotion
+indevotional
+indevout
+indevoutly
+indevoutness
+index
+indexed
+indexer
+indexical
+indexically
+indexing
+indexless
+indexlessness
+indexterity
+India
+indiadem
+Indiaman
+Indian
+Indiana
+indianaite
+Indianan
+Indianeer
+Indianesque
+Indianhood
+Indianian
+Indianism
+Indianist
+indianite
+indianization
+indianize
+Indic
+indic
+indicable
+indican
+indicant
+indicanuria
+indicate
+indication
+indicative
+indicatively
+indicator
+Indicatoridae
+Indicatorinae
+indicatory
+indicatrix
+indices
+indicia
+indicial
+indicible
+indicium
+indicolite
+indict
+indictable
+indictably
+indictee
+indicter
+indiction
+indictional
+indictive
+indictment
+indictor
+Indies
+indiferous
+indifference
+indifferency
+indifferent
+indifferential
+indifferentism
+indifferentist
+indifferentistic
+indifferently
+indigena
+indigenal
+indigenate
+indigence
+indigency
+indigene
+indigeneity
+Indigenismo
+indigenist
+indigenity
+indigenous
+indigenously
+indigenousness
+indigent
+indigently
+indigested
+indigestedness
+indigestibility
+indigestible
+indigestibleness
+indigestibly
+indigestion
+indigestive
+indigitamenta
+indigitate
+indigitation
+indign
+indignance
+indignancy
+indignant
+indignantly
+indignation
+indignatory
+indignify
+indignity
+indignly
+indigo
+indigoberry
+Indigofera
+indigoferous
+indigoid
+indigotic
+indigotin
+indigotindisulphonic
+indiguria
+indimensible
+indimensional
+indiminishable
+indimple
+indirect
+indirected
+indirection
+indirectly
+indirectness
+indirubin
+indiscernibility
+indiscernible
+indiscernibleness
+indiscernibly
+indiscerptibility
+indiscerptible
+indiscerptibleness
+indiscerptibly
+indisciplinable
+indiscipline
+indisciplined
+indiscoverable
+indiscoverably
+indiscovered
+indiscreet
+indiscreetly
+indiscreetness
+indiscrete
+indiscretely
+indiscretion
+indiscretionary
+indiscriminate
+indiscriminated
+indiscriminately
+indiscriminateness
+indiscriminating
+indiscriminatingly
+indiscrimination
+indiscriminative
+indiscriminatively
+indiscriminatory
+indiscussable
+indiscussible
+indispellable
+indispensability
+indispensable
+indispensableness
+indispensably
+indispose
+indisposed
+indisposedness
+indisposition
+indisputability
+indisputable
+indisputableness
+indisputably
+indissipable
+indissociable
+indissolubility
+indissoluble
+indissolubleness
+indissolubly
+indissolute
+indissolvability
+indissolvable
+indissolvableness
+indissolvably
+indissuadable
+indissuadably
+indistinct
+indistinction
+indistinctive
+indistinctively
+indistinctiveness
+indistinctly
+indistinctness
+indistinguishability
+indistinguishable
+indistinguishableness
+indistinguishably
+indistinguished
+indistortable
+indistributable
+indisturbable
+indisturbance
+indisturbed
+indite
+inditement
+inditer
+indium
+indivertible
+indivertibly
+individable
+individua
+individual
+individualism
+individualist
+individualistic
+individualistically
+individuality
+individualization
+individualize
+individualizer
+individualizingly
+individually
+individuate
+individuation
+individuative
+individuator
+individuity
+individuum
+indivinable
+indivisibility
+indivisible
+indivisibleness
+indivisibly
+indivision
+indocibility
+indocible
+indocibleness
+indocile
+indocility
+indoctrinate
+indoctrination
+indoctrinator
+indoctrine
+indoctrinization
+indoctrinize
+Indogaea
+Indogaean
+indogen
+indogenide
+indole
+indolence
+indolent
+indolently
+indoles
+indoline
+Indologian
+Indologist
+Indologue
+Indology
+indoloid
+indolyl
+indomitability
+indomitable
+indomitableness
+indomitably
+Indone
+Indonesian
+indoor
+indoors
+indophenin
+indophenol
+Indophile
+Indophilism
+Indophilist
+indorsation
+indorse
+indoxyl
+indoxylic
+indoxylsulphuric
+Indra
+indraft
+indraught
+indrawal
+indrawing
+indrawn
+indri
+Indris
+indubious
+indubiously
+indubitable
+indubitableness
+indubitably
+indubitatively
+induce
+induced
+inducedly
+inducement
+inducer
+induciae
+inducible
+inducive
+induct
+inductance
+inductee
+inducteous
+inductile
+inductility
+induction
+inductional
+inductionally
+inductionless
+inductive
+inductively
+inductiveness
+inductivity
+inductometer
+inductophone
+inductor
+inductorium
+inductory
+inductoscope
+indue
+induement
+indulge
+indulgeable
+indulgement
+indulgence
+indulgenced
+indulgency
+indulgent
+indulgential
+indulgentially
+indulgently
+indulgentness
+indulger
+indulging
+indulgingly
+induline
+indult
+indulto
+indument
+indumentum
+induna
+induplicate
+induplication
+induplicative
+indurable
+indurate
+induration
+indurative
+indurite
+Indus
+indusial
+indusiate
+indusiated
+indusiform
+indusioid
+indusium
+industrial
+industrialism
+industrialist
+industrialization
+industrialize
+industrially
+industrialness
+industrious
+industriously
+industriousness
+industrochemical
+industry
+induviae
+induvial
+induviate
+indwell
+indweller
+indy
+indyl
+indylic
+inearth
+inebriacy
+inebriant
+inebriate
+inebriation
+inebriative
+inebriety
+inebrious
+ineconomic
+ineconomy
+inedibility
+inedible
+inedited
+Ineducabilia
+ineducabilian
+ineducability
+ineducable
+ineducation
+ineffability
+ineffable
+ineffableness
+ineffably
+ineffaceability
+ineffaceable
+ineffaceably
+ineffectible
+ineffectibly
+ineffective
+ineffectively
+ineffectiveness
+ineffectual
+ineffectuality
+ineffectually
+ineffectualness
+ineffervescence
+ineffervescent
+ineffervescibility
+ineffervescible
+inefficacious
+inefficaciously
+inefficaciousness
+inefficacity
+inefficacy
+inefficience
+inefficiency
+inefficient
+inefficiently
+ineffulgent
+inelaborate
+inelaborated
+inelaborately
+inelastic
+inelasticate
+inelasticity
+inelegance
+inelegancy
+inelegant
+inelegantly
+ineligibility
+ineligible
+ineligibleness
+ineligibly
+ineliminable
+ineloquence
+ineloquent
+ineloquently
+ineluctability
+ineluctable
+ineluctably
+ineludible
+ineludibly
+inembryonate
+inemendable
+inemotivity
+inemulous
+inenarrable
+inenergetic
+inenubilable
+inenucleable
+inept
+ineptitude
+ineptly
+ineptness
+inequable
+inequal
+inequalitarian
+inequality
+inequally
+inequalness
+inequation
+inequiaxial
+inequicostate
+inequidistant
+inequigranular
+inequilateral
+inequilibrium
+inequilobate
+inequilobed
+inequipotential
+inequipotentiality
+inequitable
+inequitableness
+inequitably
+inequity
+inequivalent
+inequivalve
+inequivalvular
+ineradicable
+ineradicableness
+ineradicably
+inerasable
+inerasableness
+inerasably
+inerasible
+Ineri
+inerm
+Inermes
+Inermi
+Inermia
+inermous
+inerrability
+inerrable
+inerrableness
+inerrably
+inerrancy
+inerrant
+inerrantly
+inerratic
+inerring
+inerringly
+inerroneous
+inert
+inertance
+inertia
+inertial
+inertion
+inertly
+inertness
+inerubescent
+inerudite
+ineruditely
+inerudition
+inescapable
+inescapableness
+inescapably
+inesculent
+inescutcheon
+inesite
+inessential
+inessentiality
+inestimability
+inestimable
+inestimableness
+inestimably
+inestivation
+inethical
+ineunt
+ineuphonious
+inevadible
+inevadibly
+inevaporable
+inevasible
+inevidence
+inevident
+inevitability
+inevitable
+inevitableness
+inevitably
+inexact
+inexacting
+inexactitude
+inexactly
+inexactness
+inexcellence
+inexcitability
+inexcitable
+inexclusive
+inexclusively
+inexcommunicable
+inexcusability
+inexcusable
+inexcusableness
+inexcusably
+inexecutable
+inexecution
+inexertion
+inexhausted
+inexhaustedly
+inexhaustibility
+inexhaustible
+inexhaustibleness
+inexhaustibly
+inexhaustive
+inexhaustively
+inexigible
+inexist
+inexistence
+inexistency
+inexistent
+inexorability
+inexorable
+inexorableness
+inexorably
+inexpansible
+inexpansive
+inexpectancy
+inexpectant
+inexpectation
+inexpected
+inexpectedly
+inexpectedness
+inexpedience
+inexpediency
+inexpedient
+inexpediently
+inexpensive
+inexpensively
+inexpensiveness
+inexperience
+inexperienced
+inexpert
+inexpertly
+inexpertness
+inexpiable
+inexpiableness
+inexpiably
+inexpiate
+inexplainable
+inexplicability
+inexplicable
+inexplicableness
+inexplicables
+inexplicably
+inexplicit
+inexplicitly
+inexplicitness
+inexplorable
+inexplosive
+inexportable
+inexposable
+inexposure
+inexpress
+inexpressibility
+inexpressible
+inexpressibleness
+inexpressibles
+inexpressibly
+inexpressive
+inexpressively
+inexpressiveness
+inexpugnability
+inexpugnable
+inexpugnableness
+inexpugnably
+inexpungeable
+inexpungible
+inextant
+inextended
+inextensibility
+inextensible
+inextensile
+inextension
+inextensional
+inextensive
+inexterminable
+inextinct
+inextinguishable
+inextinguishably
+inextirpable
+inextirpableness
+inextricability
+inextricable
+inextricableness
+inextricably
+Inez
+inface
+infall
+infallibilism
+infallibilist
+infallibility
+infallible
+infallibleness
+infallibly
+infalling
+infalsificable
+infame
+infamiliar
+infamiliarity
+infamize
+infamonize
+infamous
+infamously
+infamousness
+infamy
+infancy
+infand
+infandous
+infang
+infanglement
+infangthief
+infant
+infanta
+infantado
+infante
+infanthood
+infanticidal
+infanticide
+infantile
+infantilism
+infantility
+infantine
+infantlike
+infantry
+infantryman
+infarct
+infarctate
+infarcted
+infarction
+infare
+infatuate
+infatuatedly
+infatuation
+infatuator
+infaust
+infeasibility
+infeasible
+infeasibleness
+infect
+infectant
+infected
+infectedness
+infecter
+infectible
+infection
+infectionist
+infectious
+infectiously
+infectiousness
+infective
+infectiveness
+infectivity
+infector
+infectress
+infectuous
+infecund
+infecundity
+infeed
+infeft
+infeftment
+infelicific
+infelicitous
+infelicitously
+infelicitousness
+infelicity
+infelonious
+infelt
+infeminine
+infer
+inferable
+inference
+inferent
+inferential
+inferentialism
+inferentialist
+inferentially
+inferior
+inferiorism
+inferiority
+inferiorize
+inferiorly
+infern
+infernal
+infernalism
+infernality
+infernalize
+infernally
+infernalry
+infernalship
+inferno
+inferoanterior
+inferobranchiate
+inferofrontal
+inferolateral
+inferomedian
+inferoposterior
+inferrer
+inferribility
+inferrible
+inferringly
+infertile
+infertilely
+infertileness
+infertility
+infest
+infestant
+infestation
+infester
+infestive
+infestivity
+infestment
+infeudation
+infibulate
+infibulation
+inficete
+infidel
+infidelic
+infidelical
+infidelism
+infidelistic
+infidelity
+infidelize
+infidelly
+infield
+infielder
+infieldsman
+infighter
+infighting
+infill
+infilling
+infilm
+infilter
+infiltrate
+infiltration
+infiltrative
+infinitant
+infinitarily
+infinitary
+infinitate
+infinitation
+infinite
+infinitely
+infiniteness
+infinitesimal
+infinitesimalism
+infinitesimality
+infinitesimally
+infinitesimalness
+infiniteth
+infinitieth
+infinitival
+infinitivally
+infinitive
+infinitively
+infinitize
+infinitude
+infinituple
+infinity
+infirm
+infirmarer
+infirmaress
+infirmarian
+infirmary
+infirmate
+infirmation
+infirmative
+infirmity
+infirmly
+infirmness
+infissile
+infit
+infitter
+infix
+infixion
+inflame
+inflamed
+inflamedly
+inflamedness
+inflamer
+inflaming
+inflamingly
+inflammability
+inflammable
+inflammableness
+inflammably
+inflammation
+inflammative
+inflammatorily
+inflammatory
+inflatable
+inflate
+inflated
+inflatedly
+inflatedness
+inflater
+inflatile
+inflatingly
+inflation
+inflationary
+inflationism
+inflationist
+inflative
+inflatus
+inflect
+inflected
+inflectedness
+inflection
+inflectional
+inflectionally
+inflectionless
+inflective
+inflector
+inflex
+inflexed
+inflexibility
+inflexible
+inflexibleness
+inflexibly
+inflexive
+inflict
+inflictable
+inflicter
+infliction
+inflictive
+inflood
+inflorescence
+inflorescent
+inflow
+inflowering
+influence
+influenceable
+influencer
+influencive
+influent
+influential
+influentiality
+influentially
+influenza
+influenzal
+influenzic
+influx
+influxable
+influxible
+influxibly
+influxion
+influxionism
+infold
+infolder
+infolding
+infoldment
+infoliate
+inform
+informable
+informal
+informality
+informalize
+informally
+informant
+information
+informational
+informative
+informatively
+informatory
+informed
+informedly
+informer
+informidable
+informingly
+informity
+infortiate
+infortitude
+infortunate
+infortunately
+infortunateness
+infortune
+infra
+infrabasal
+infrabestial
+infrabranchial
+infrabuccal
+infracanthal
+infracaudal
+infracelestial
+infracentral
+infracephalic
+infraclavicle
+infraclavicular
+infraclusion
+infraconscious
+infracortical
+infracostal
+infracostalis
+infracotyloid
+infract
+infractible
+infraction
+infractor
+infradentary
+infradiaphragmatic
+infragenual
+infraglacial
+infraglenoid
+infraglottic
+infragrant
+infragular
+infrahuman
+infrahyoid
+infralabial
+infralapsarian
+infralapsarianism
+infralinear
+infralittoral
+inframammary
+inframammillary
+inframandibular
+inframarginal
+inframaxillary
+inframedian
+inframercurial
+inframercurian
+inframolecular
+inframontane
+inframundane
+infranatural
+infranaturalism
+infrangibility
+infrangible
+infrangibleness
+infrangibly
+infranodal
+infranuclear
+infraoccipital
+infraocclusion
+infraocular
+infraoral
+infraorbital
+infraordinary
+infrapapillary
+infrapatellar
+infraperipherial
+infrapose
+infraposition
+infraprotein
+infrapubian
+infraradular
+infrared
+infrarenal
+infrarenally
+infrarimal
+infrascapular
+infrascapularis
+infrascientific
+infraspinal
+infraspinate
+infraspinatus
+infraspinous
+infrastapedial
+infrasternal
+infrastigmatal
+infrastipular
+infrastructure
+infrasutral
+infratemporal
+infraterrene
+infraterritorial
+infrathoracic
+infratonsillar
+infratracheal
+infratrochanteric
+infratrochlear
+infratubal
+infraturbinal
+infravaginal
+infraventral
+infrequency
+infrequent
+infrequently
+infrigidate
+infrigidation
+infrigidative
+infringe
+infringement
+infringer
+infringible
+infructiferous
+infructuose
+infructuosity
+infructuous
+infructuously
+infrugal
+infrustrable
+infrustrably
+infula
+infumate
+infumated
+infumation
+infundibular
+Infundibulata
+infundibulate
+infundibuliform
+infundibulum
+infuriate
+infuriately
+infuriatingly
+infuriation
+infuscate
+infuscation
+infuse
+infusedly
+infuser
+infusibility
+infusible
+infusibleness
+infusile
+infusion
+infusionism
+infusionist
+infusive
+Infusoria
+infusorial
+infusorian
+infusoriform
+infusorioid
+infusorium
+infusory
+Ing
+ing
+Inga
+Ingaevones
+Ingaevonic
+ingallantry
+ingate
+ingather
+ingatherer
+ingathering
+ingeldable
+ingeminate
+ingemination
+ingenerability
+ingenerable
+ingenerably
+ingenerate
+ingenerately
+ingeneration
+ingenerative
+ingeniosity
+ingenious
+ingeniously
+ingeniousness
+ingenit
+ingenue
+ingenuity
+ingenuous
+ingenuously
+ingenuousness
+Inger
+ingerminate
+ingest
+ingesta
+ingestible
+ingestion
+ingestive
+Inghamite
+Inghilois
+ingiver
+ingiving
+ingle
+inglenook
+ingleside
+inglobate
+inglobe
+inglorious
+ingloriously
+ingloriousness
+inglutition
+ingluvial
+ingluvies
+ingluviitis
+ingoing
+Ingomar
+ingot
+ingotman
+ingraft
+ingrain
+ingrained
+ingrainedly
+ingrainedness
+Ingram
+ingrammaticism
+ingrandize
+ingrate
+ingrateful
+ingratefully
+ingratefulness
+ingrately
+ingratiate
+ingratiating
+ingratiatingly
+ingratiation
+ingratiatory
+ingratitude
+ingravescent
+ingravidate
+ingravidation
+ingredient
+ingress
+ingression
+ingressive
+ingressiveness
+ingross
+ingrow
+ingrown
+ingrownness
+ingrowth
+inguen
+inguinal
+inguinoabdominal
+inguinocrural
+inguinocutaneous
+inguinodynia
+inguinolabial
+inguinoscrotal
+Inguklimiut
+ingulf
+ingulfment
+ingurgitate
+ingurgitation
+Ingush
+inhabit
+inhabitability
+inhabitable
+inhabitancy
+inhabitant
+inhabitation
+inhabitative
+inhabitativeness
+inhabited
+inhabitedness
+inhabiter
+inhabitiveness
+inhabitress
+inhalant
+inhalation
+inhalator
+inhale
+inhalement
+inhalent
+inhaler
+inharmonic
+inharmonical
+inharmonious
+inharmoniously
+inharmoniousness
+inharmony
+inhaul
+inhauler
+inhaust
+inhaustion
+inhearse
+inheaven
+inhere
+inherence
+inherency
+inherent
+inherently
+inherit
+inheritability
+inheritable
+inheritableness
+inheritably
+inheritage
+inheritance
+inheritor
+inheritress
+inheritrice
+inheritrix
+inhesion
+inhiate
+inhibit
+inhibitable
+inhibiter
+inhibition
+inhibitionist
+inhibitive
+inhibitor
+inhibitory
+inhomogeneity
+inhomogeneous
+inhomogeneously
+inhospitable
+inhospitableness
+inhospitably
+inhospitality
+inhuman
+inhumane
+inhumanely
+inhumanism
+inhumanity
+inhumanize
+inhumanly
+inhumanness
+inhumate
+inhumation
+inhumationist
+inhume
+inhumer
+inhumorous
+inhumorously
+Inia
+inial
+inidoneity
+inidoneous
+Inigo
+inimicable
+inimical
+inimicality
+inimically
+inimicalness
+inimitability
+inimitable
+inimitableness
+inimitably
+iniome
+Iniomi
+iniomous
+inion
+iniquitable
+iniquitably
+iniquitous
+iniquitously
+iniquitousness
+iniquity
+inirritability
+inirritable
+inirritant
+inirritative
+inissuable
+initial
+initialer
+initialist
+initialize
+initially
+initiant
+initiary
+initiate
+initiation
+initiative
+initiatively
+initiator
+initiatorily
+initiatory
+initiatress
+initiatrix
+initis
+initive
+inject
+injectable
+injection
+injector
+injelly
+injudicial
+injudicially
+injudicious
+injudiciously
+injudiciousness
+Injun
+injunct
+injunction
+injunctive
+injunctively
+injurable
+injure
+injured
+injuredly
+injuredness
+injurer
+injurious
+injuriously
+injuriousness
+injury
+injustice
+ink
+inkberry
+inkbush
+inken
+inker
+Inkerman
+inket
+inkfish
+inkholder
+inkhorn
+inkhornism
+inkhornist
+inkhornize
+inkhornizer
+inkindle
+inkiness
+inkish
+inkle
+inkless
+inklike
+inkling
+inkmaker
+inkmaking
+inknot
+inkosi
+inkpot
+Inkra
+inkroot
+inks
+inkshed
+inkslinger
+inkslinging
+inkstain
+inkstand
+inkstandish
+inkstone
+inkweed
+inkwell
+inkwood
+inkwriter
+inky
+inlagation
+inlaid
+inlaik
+inlake
+inland
+inlander
+inlandish
+inlaut
+inlaw
+inlawry
+inlay
+inlayer
+inlaying
+inleague
+inleak
+inleakage
+inlet
+inlier
+inlook
+inlooker
+inly
+inlying
+inmate
+inmeats
+inmixture
+inmost
+inn
+innascibility
+innascible
+innate
+innately
+innateness
+innatism
+innative
+innatural
+innaturality
+innaturally
+inneity
+inner
+innerly
+innermore
+innermost
+innermostly
+innerness
+innervate
+innervation
+innervational
+innerve
+inness
+innest
+innet
+innholder
+inning
+inninmorite
+Innisfail
+innkeeper
+innless
+innocence
+innocency
+innocent
+innocently
+innocentness
+innocuity
+innocuous
+innocuously
+innocuousness
+innominable
+innominables
+innominata
+innominate
+innominatum
+innovant
+innovate
+innovation
+innovational
+innovationist
+innovative
+innovator
+innovatory
+innoxious
+innoxiously
+innoxiousness
+innuendo
+Innuit
+innumerability
+innumerable
+innumerableness
+innumerably
+innumerous
+innutrient
+innutrition
+innutritious
+innutritive
+innyard
+Ino
+inobedience
+inobedient
+inobediently
+inoblast
+inobnoxious
+inobscurable
+inobservable
+inobservance
+inobservancy
+inobservant
+inobservantly
+inobservantness
+inobservation
+inobtainable
+inobtrusive
+inobtrusively
+inobtrusiveness
+inobvious
+Inocarpus
+inoccupation
+Inoceramus
+inochondritis
+inochondroma
+inoculability
+inoculable
+inoculant
+inocular
+inoculate
+inoculation
+inoculative
+inoculator
+inoculum
+inocystoma
+inocyte
+Inodes
+inodorous
+inodorously
+inodorousness
+inoepithelioma
+inoffending
+inoffensive
+inoffensively
+inoffensiveness
+inofficial
+inofficially
+inofficiosity
+inofficious
+inofficiously
+inofficiousness
+inogen
+inogenesis
+inogenic
+inogenous
+inoglia
+inohymenitic
+inolith
+inoma
+inominous
+inomyoma
+inomyositis
+inomyxoma
+inone
+inoneuroma
+inoperable
+inoperative
+inoperativeness
+inopercular
+Inoperculata
+inoperculate
+inopinable
+inopinate
+inopinately
+inopine
+inopportune
+inopportunely
+inopportuneness
+inopportunism
+inopportunist
+inopportunity
+inoppressive
+inoppugnable
+inopulent
+inorb
+inorderly
+inordinacy
+inordinary
+inordinate
+inordinately
+inordinateness
+inorganic
+inorganical
+inorganically
+inorganizable
+inorganization
+inorganized
+inoriginate
+inornate
+inosclerosis
+inoscopy
+inosculate
+inosculation
+inosic
+inosin
+inosinic
+inosite
+inositol
+inostensible
+inostensibly
+inotropic
+inower
+inoxidability
+inoxidable
+inoxidizable
+inoxidize
+inparabola
+inpardonable
+inpatient
+inpayment
+inpensioner
+inphase
+inpolygon
+inpolyhedron
+inport
+inpour
+inpush
+input
+inquaintance
+inquartation
+inquest
+inquestual
+inquiet
+inquietation
+inquietly
+inquietness
+inquietude
+Inquilinae
+inquiline
+inquilinism
+inquilinity
+inquilinous
+inquinate
+inquination
+inquirable
+inquirant
+inquiration
+inquire
+inquirendo
+inquirent
+inquirer
+inquiring
+inquiringly
+inquiry
+inquisite
+inquisition
+inquisitional
+inquisitionist
+inquisitive
+inquisitively
+inquisitiveness
+inquisitor
+inquisitorial
+inquisitorially
+inquisitorialness
+inquisitorious
+inquisitorship
+inquisitory
+inquisitress
+inquisitrix
+inquisiturient
+inradius
+inreality
+inrigged
+inrigger
+inrighted
+inring
+inro
+inroad
+inroader
+inroll
+inrooted
+inrub
+inrun
+inrunning
+inruption
+inrush
+insack
+insagacity
+insalivate
+insalivation
+insalubrious
+insalubrity
+insalutary
+insalvability
+insalvable
+insane
+insanely
+insaneness
+insanify
+insanitariness
+insanitary
+insanitation
+insanity
+insapiency
+insapient
+insatiability
+insatiable
+insatiableness
+insatiably
+insatiate
+insatiated
+insatiately
+insatiateness
+insatiety
+insatisfaction
+insatisfactorily
+insaturable
+inscenation
+inscibile
+inscience
+inscient
+inscribable
+inscribableness
+inscribe
+inscriber
+inscript
+inscriptible
+inscription
+inscriptional
+inscriptioned
+inscriptionist
+inscriptionless
+inscriptive
+inscriptively
+inscriptured
+inscroll
+inscrutability
+inscrutable
+inscrutableness
+inscrutables
+inscrutably
+insculp
+insculpture
+insea
+inseam
+insect
+Insecta
+insectan
+insectarium
+insectary
+insectean
+insected
+insecticidal
+insecticide
+insectiferous
+insectiform
+insectifuge
+insectile
+insectine
+insection
+insectival
+Insectivora
+insectivore
+insectivorous
+insectlike
+insectmonger
+insectologer
+insectologist
+insectology
+insectproof
+insecure
+insecurely
+insecureness
+insecurity
+insee
+inseer
+inselberg
+inseminate
+insemination
+insenescible
+insensate
+insensately
+insensateness
+insense
+insensibility
+insensibilization
+insensibilize
+insensibilizer
+insensible
+insensibleness
+insensibly
+insensitive
+insensitiveness
+insensitivity
+insensuous
+insentience
+insentiency
+insentient
+inseparability
+inseparable
+inseparableness
+inseparably
+inseparate
+inseparately
+insequent
+insert
+insertable
+inserted
+inserter
+insertion
+insertional
+insertive
+inserviceable
+insessor
+Insessores
+insessorial
+inset
+insetter
+inseverable
+inseverably
+inshave
+insheathe
+inshell
+inshining
+inship
+inshoe
+inshoot
+inshore
+inside
+insider
+insidiosity
+insidious
+insidiously
+insidiousness
+insight
+insightful
+insigne
+insignia
+insignificance
+insignificancy
+insignificant
+insignificantly
+insimplicity
+insincere
+insincerely
+insincerity
+insinking
+insinuant
+insinuate
+insinuating
+insinuatingly
+insinuation
+insinuative
+insinuatively
+insinuativeness
+insinuator
+insinuatory
+insinuendo
+insipid
+insipidity
+insipidly
+insipidness
+insipience
+insipient
+insipiently
+insist
+insistence
+insistency
+insistent
+insistently
+insister
+insistingly
+insistive
+insititious
+insnare
+insnarement
+insnarer
+insobriety
+insociability
+insociable
+insociableness
+insociably
+insocial
+insocially
+insofar
+insolate
+insolation
+insole
+insolence
+insolency
+insolent
+insolently
+insolentness
+insolid
+insolidity
+insolubility
+insoluble
+insolubleness
+insolubly
+insolvability
+insolvable
+insolvably
+insolvence
+insolvency
+insolvent
+insomnia
+insomniac
+insomnious
+insomnolence
+insomnolency
+insomnolent
+insomuch
+insonorous
+insooth
+insorb
+insorbent
+insouciance
+insouciant
+insouciantly
+insoul
+inspan
+inspeak
+inspect
+inspectability
+inspectable
+inspectingly
+inspection
+inspectional
+inspectioneer
+inspective
+inspector
+inspectoral
+inspectorate
+inspectorial
+inspectorship
+inspectress
+inspectrix
+inspheration
+insphere
+inspirability
+inspirable
+inspirant
+inspiration
+inspirational
+inspirationalism
+inspirationally
+inspirationist
+inspirative
+inspirator
+inspiratory
+inspiratrix
+inspire
+inspired
+inspiredly
+inspirer
+inspiring
+inspiringly
+inspirit
+inspiriter
+inspiriting
+inspiritingly
+inspiritment
+inspirometer
+inspissant
+inspissate
+inspissation
+inspissator
+inspissosis
+inspoke
+inspoken
+inspreith
+instability
+instable
+install
+installant
+installation
+installer
+installment
+instance
+instancy
+instanding
+instant
+instantaneity
+instantaneous
+instantaneously
+instantaneousness
+instanter
+instantial
+instantly
+instantness
+instar
+instate
+instatement
+instaurate
+instauration
+instaurator
+instead
+instealing
+insteam
+insteep
+instellation
+instep
+instigant
+instigate
+instigatingly
+instigation
+instigative
+instigator
+instigatrix
+instill
+instillation
+instillator
+instillatory
+instiller
+instillment
+instinct
+instinctive
+instinctively
+instinctivist
+instinctivity
+instinctual
+instipulate
+institor
+institorial
+institorian
+institory
+institute
+instituter
+institution
+institutional
+institutionalism
+institutionalist
+institutionality
+institutionalization
+institutionalize
+institutionally
+institutionary
+institutionize
+institutive
+institutively
+institutor
+institutress
+institutrix
+instonement
+instratified
+instreaming
+instrengthen
+instressed
+instroke
+instruct
+instructed
+instructedly
+instructedness
+instructer
+instructible
+instruction
+instructional
+instructionary
+instructive
+instructively
+instructiveness
+instructor
+instructorship
+instructress
+instrument
+instrumental
+instrumentalism
+instrumentalist
+instrumentality
+instrumentalize
+instrumentally
+instrumentary
+instrumentate
+instrumentation
+instrumentative
+instrumentist
+instrumentman
+insuavity
+insubduable
+insubjection
+insubmergible
+insubmersible
+insubmission
+insubmissive
+insubordinate
+insubordinately
+insubordinateness
+insubordination
+insubstantial
+insubstantiality
+insubstantiate
+insubstantiation
+insubvertible
+insuccess
+insuccessful
+insucken
+insuetude
+insufferable
+insufferableness
+insufferably
+insufficience
+insufficiency
+insufficient
+insufficiently
+insufflate
+insufflation
+insufflator
+insula
+insulance
+insulant
+insular
+insularism
+insularity
+insularize
+insularly
+insulary
+insulate
+insulated
+insulating
+insulation
+insulator
+insulin
+insulize
+insulse
+insulsity
+insult
+insultable
+insultant
+insultation
+insulter
+insulting
+insultingly
+insultproof
+insunk
+insuperability
+insuperable
+insuperableness
+insuperably
+insupportable
+insupportableness
+insupportably
+insupposable
+insuppressible
+insuppressibly
+insuppressive
+insurability
+insurable
+insurance
+insurant
+insure
+insured
+insurer
+insurge
+insurgence
+insurgency
+insurgent
+insurgentism
+insurgescence
+insurmountability
+insurmountable
+insurmountableness
+insurmountably
+insurpassable
+insurrect
+insurrection
+insurrectional
+insurrectionally
+insurrectionary
+insurrectionism
+insurrectionist
+insurrectionize
+insurrectory
+insusceptibility
+insusceptible
+insusceptibly
+insusceptive
+inswamp
+inswarming
+insweeping
+inswell
+inswept
+inswing
+inswinger
+intabulate
+intact
+intactile
+intactly
+intactness
+intagliated
+intagliation
+intaglio
+intagliotype
+intake
+intaker
+intangibility
+intangible
+intangibleness
+intangibly
+intarissable
+intarsia
+intarsiate
+intarsist
+intastable
+intaxable
+intechnicality
+integer
+integrability
+integrable
+integral
+integrality
+integralization
+integralize
+integrally
+integrand
+integrant
+integraph
+integrate
+integration
+integrative
+integrator
+integrifolious
+integrious
+integriously
+integripalliate
+integrity
+integrodifferential
+integropallial
+Integropallialia
+Integropalliata
+integropalliate
+integument
+integumental
+integumentary
+integumentation
+inteind
+intellect
+intellectation
+intellected
+intellectible
+intellection
+intellective
+intellectively
+intellectual
+intellectualism
+intellectualist
+intellectualistic
+intellectualistically
+intellectuality
+intellectualization
+intellectualize
+intellectualizer
+intellectually
+intellectualness
+intelligence
+intelligenced
+intelligencer
+intelligency
+intelligent
+intelligential
+intelligently
+intelligentsia
+intelligibility
+intelligible
+intelligibleness
+intelligibly
+intelligize
+intemerate
+intemerately
+intemerateness
+intemeration
+intemperable
+intemperably
+intemperament
+intemperance
+intemperate
+intemperately
+intemperateness
+intemperature
+intempestive
+intempestively
+intempestivity
+intemporal
+intemporally
+intenability
+intenable
+intenancy
+intend
+intendance
+intendancy
+intendant
+intendantism
+intendantship
+intended
+intendedly
+intendedness
+intendence
+intender
+intendible
+intending
+intendingly
+intendit
+intendment
+intenerate
+inteneration
+intenible
+intensate
+intensation
+intensative
+intense
+intensely
+intenseness
+intensification
+intensifier
+intensify
+intension
+intensional
+intensionally
+intensitive
+intensity
+intensive
+intensively
+intensiveness
+intent
+intention
+intentional
+intentionalism
+intentionality
+intentionally
+intentioned
+intentionless
+intentive
+intentively
+intentiveness
+intently
+intentness
+inter
+interabsorption
+interacademic
+interaccessory
+interaccuse
+interacinar
+interacinous
+interact
+interaction
+interactional
+interactionism
+interactionist
+interactive
+interactivity
+interadaptation
+interadditive
+interadventual
+interaffiliation
+interagency
+interagent
+interagglutinate
+interagglutination
+interagree
+interagreement
+interalar
+interallied
+interally
+interalveolar
+interambulacral
+interambulacrum
+interamnian
+interangular
+interanimate
+interannular
+interantagonism
+interantennal
+interantennary
+interapophyseal
+interapplication
+interarboration
+interarch
+interarcualis
+interarmy
+interarticular
+interartistic
+interarytenoid
+interassociation
+interassure
+interasteroidal
+interastral
+interatomic
+interatrial
+interattrition
+interaulic
+interaural
+interauricular
+interavailability
+interavailable
+interaxal
+interaxial
+interaxillary
+interaxis
+interbalance
+interbanded
+interbank
+interbedded
+interbelligerent
+interblend
+interbody
+interbonding
+interborough
+interbourse
+interbrachial
+interbrain
+interbranch
+interbranchial
+interbreath
+interbreed
+interbrigade
+interbring
+interbronchial
+intercadence
+intercadent
+intercalare
+intercalarily
+intercalarium
+intercalary
+intercalate
+intercalation
+intercalative
+intercalatory
+intercale
+intercalm
+intercanal
+intercanalicular
+intercapillary
+intercardinal
+intercarotid
+intercarpal
+intercarpellary
+intercarrier
+intercartilaginous
+intercaste
+intercatenated
+intercausative
+intercavernous
+intercede
+interceder
+intercellular
+intercensal
+intercentral
+intercentrum
+intercept
+intercepter
+intercepting
+interception
+interceptive
+interceptor
+interceptress
+intercerebral
+intercession
+intercessional
+intercessionary
+intercessionment
+intercessive
+intercessor
+intercessorial
+intercessory
+interchaff
+interchange
+interchangeability
+interchangeable
+interchangeableness
+interchangeably
+interchanger
+interchapter
+intercharge
+interchase
+intercheck
+interchoke
+interchondral
+interchurch
+Intercidona
+interciliary
+intercilium
+intercircle
+intercirculate
+intercirculation
+intercision
+intercitizenship
+intercity
+intercivic
+intercivilization
+interclash
+interclasp
+interclass
+interclavicle
+interclavicular
+interclerical
+intercloud
+interclub
+intercoastal
+intercoccygeal
+intercoccygean
+intercohesion
+intercollege
+intercollegian
+intercollegiate
+intercolline
+intercolonial
+intercolonially
+intercolonization
+intercolumn
+intercolumnal
+intercolumnar
+intercolumniation
+intercom
+intercombat
+intercombination
+intercombine
+intercome
+intercommission
+intercommon
+intercommonable
+intercommonage
+intercommoner
+intercommunal
+intercommune
+intercommuner
+intercommunicability
+intercommunicable
+intercommunicate
+intercommunication
+intercommunicative
+intercommunicator
+intercommunion
+intercommunity
+intercompany
+intercomparable
+intercompare
+intercomparison
+intercomplexity
+intercomplimentary
+interconal
+interconciliary
+intercondenser
+intercondylar
+intercondylic
+intercondyloid
+interconfessional
+interconfound
+interconnect
+interconnection
+intercontinental
+intercontorted
+intercontradiction
+intercontradictory
+interconversion
+interconvertibility
+interconvertible
+interconvertibly
+intercooler
+intercooling
+intercoracoid
+intercorporate
+intercorpuscular
+intercorrelate
+intercorrelation
+intercortical
+intercosmic
+intercosmically
+intercostal
+intercostally
+intercostobrachial
+intercostohumeral
+intercotylar
+intercounty
+intercourse
+intercoxal
+intercranial
+intercreate
+intercrescence
+intercrinal
+intercrop
+intercross
+intercrural
+intercrust
+intercrystalline
+intercrystallization
+intercrystallize
+intercultural
+interculture
+intercurl
+intercurrence
+intercurrent
+intercurrently
+intercursation
+intercuspidal
+intercutaneous
+intercystic
+interdash
+interdebate
+interdenominational
+interdental
+interdentally
+interdentil
+interdepartmental
+interdepartmentally
+interdepend
+interdependable
+interdependence
+interdependency
+interdependent
+interdependently
+interderivative
+interdespise
+interdestructive
+interdestructiveness
+interdetermination
+interdetermine
+interdevour
+interdict
+interdiction
+interdictive
+interdictor
+interdictory
+interdictum
+interdifferentiation
+interdiffuse
+interdiffusion
+interdiffusive
+interdiffusiveness
+interdigital
+interdigitate
+interdigitation
+interdine
+interdiscal
+interdispensation
+interdistinguish
+interdistrict
+interdivision
+interdome
+interdorsal
+interdrink
+intereat
+interelectrode
+interelectrodic
+interempire
+interenjoy
+interentangle
+interentanglement
+interepidemic
+interepimeral
+interepithelial
+interequinoctial
+interessee
+interest
+interested
+interestedly
+interestedness
+interester
+interesting
+interestingly
+interestingness
+interestless
+interestuarine
+interface
+interfacial
+interfactional
+interfamily
+interfascicular
+interfault
+interfector
+interfederation
+interfemoral
+interfenestral
+interfenestration
+interferant
+interfere
+interference
+interferent
+interferential
+interferer
+interfering
+interferingly
+interferingness
+interferometer
+interferometry
+interferric
+interfertile
+interfertility
+interfibrillar
+interfibrillary
+interfibrous
+interfilamentar
+interfilamentary
+interfilamentous
+interfilar
+interfiltrate
+interfinger
+interflange
+interflashing
+interflow
+interfluence
+interfluent
+interfluminal
+interfluous
+interfluve
+interfluvial
+interflux
+interfold
+interfoliaceous
+interfoliar
+interfoliate
+interfollicular
+interforce
+interfraternal
+interfraternity
+interfret
+interfretted
+interfriction
+interfrontal
+interfruitful
+interfulgent
+interfuse
+interfusion
+interganglionic
+intergenerant
+intergenerating
+intergeneration
+intergential
+intergesture
+intergilt
+interglacial
+interglandular
+interglobular
+interglyph
+intergossip
+intergovernmental
+intergradation
+intergrade
+intergradient
+intergraft
+intergranular
+intergrapple
+intergrave
+intergroupal
+intergrow
+intergrown
+intergrowth
+intergular
+intergyral
+interhabitation
+interhemal
+interhemispheric
+interhostile
+interhuman
+interhyal
+interhybridize
+interim
+interimist
+interimistic
+interimistical
+interimistically
+interimperial
+interincorporation
+interindependence
+interindicate
+interindividual
+interinfluence
+interinhibition
+interinhibitive
+interinsert
+interinsular
+interinsurance
+interinsurer
+interinvolve
+interionic
+interior
+interiority
+interiorize
+interiorly
+interiorness
+interirrigation
+interisland
+interjacence
+interjacency
+interjacent
+interjaculate
+interjaculatory
+interjangle
+interjealousy
+interject
+interjection
+interjectional
+interjectionalize
+interjectionally
+interjectionary
+interjectionize
+interjectiveness
+interjector
+interjectorily
+interjectory
+interjectural
+interjoin
+interjoist
+interjudgment
+interjunction
+interkinesis
+interkinetic
+interknit
+interknot
+interknow
+interknowledge
+interlaboratory
+interlace
+interlaced
+interlacedly
+interlacement
+interlacery
+interlacustrine
+interlaid
+interlake
+interlamellar
+interlamellation
+interlaminar
+interlaminate
+interlamination
+interlanguage
+interlap
+interlapse
+interlard
+interlardation
+interlardment
+interlatitudinal
+interlaudation
+interlay
+interleaf
+interleague
+interleave
+interleaver
+interlibel
+interlibrary
+interlie
+interligamentary
+interligamentous
+interlight
+interlimitation
+interline
+interlineal
+interlineally
+interlinear
+interlinearily
+interlinearly
+interlineary
+interlineate
+interlineation
+interlinement
+interliner
+Interlingua
+interlingual
+interlinguist
+interlinguistic
+interlining
+interlink
+interloan
+interlobar
+interlobate
+interlobular
+interlocal
+interlocally
+interlocate
+interlocation
+interlock
+interlocker
+interlocular
+interloculus
+interlocution
+interlocutive
+interlocutor
+interlocutorily
+interlocutory
+interlocutress
+interlocutrice
+interlocutrix
+interloop
+interlope
+interloper
+interlot
+interlucation
+interlucent
+interlude
+interluder
+interludial
+interlunar
+interlunation
+interlying
+intermalleolar
+intermammary
+intermammillary
+intermandibular
+intermanorial
+intermarginal
+intermarine
+intermarriage
+intermarriageable
+intermarry
+intermason
+intermastoid
+intermat
+intermatch
+intermaxilla
+intermaxillar
+intermaxillary
+intermaze
+intermeasurable
+intermeasure
+intermeddle
+intermeddlement
+intermeddler
+intermeddlesome
+intermeddlesomeness
+intermeddling
+intermeddlingly
+intermediacy
+intermediae
+intermedial
+intermediary
+intermediate
+intermediately
+intermediateness
+intermediation
+intermediator
+intermediatory
+intermedium
+intermedius
+intermeet
+intermelt
+intermembral
+intermembranous
+intermeningeal
+intermenstrual
+intermenstruum
+interment
+intermental
+intermention
+intermercurial
+intermesenterial
+intermesenteric
+intermesh
+intermessage
+intermessenger
+intermetacarpal
+intermetallic
+intermetameric
+intermetatarsal
+intermew
+intermewed
+intermewer
+intermezzo
+intermigration
+interminability
+interminable
+interminableness
+interminably
+interminant
+interminate
+intermine
+intermingle
+intermingledom
+interminglement
+interminister
+interministerial
+interministerium
+intermission
+intermissive
+intermit
+intermitted
+intermittedly
+intermittence
+intermittency
+intermittent
+intermittently
+intermitter
+intermitting
+intermittingly
+intermix
+intermixedly
+intermixtly
+intermixture
+intermobility
+intermodification
+intermodillion
+intermodulation
+intermolar
+intermolecular
+intermomentary
+intermontane
+intermorainic
+intermotion
+intermountain
+intermundane
+intermundial
+intermundian
+intermundium
+intermunicipal
+intermunicipality
+intermural
+intermuscular
+intermutation
+intermutual
+intermutually
+intermutule
+intern
+internal
+internality
+internalization
+internalize
+internally
+internalness
+internals
+internarial
+internasal
+internation
+international
+internationalism
+internationalist
+internationality
+internationalization
+internationalize
+internationally
+interneciary
+internecinal
+internecine
+internecion
+internecive
+internee
+internetted
+interneural
+interneuronic
+internidal
+internist
+internment
+internobasal
+internodal
+internode
+internodial
+internodian
+internodium
+internodular
+internship
+internuclear
+internuncial
+internunciary
+internunciatory
+internuncio
+internuncioship
+internuncius
+internuptial
+interobjective
+interoceanic
+interoceptive
+interoceptor
+interocular
+interoffice
+interolivary
+interopercle
+interopercular
+interoperculum
+interoptic
+interorbital
+interorbitally
+interoscillate
+interosculant
+interosculate
+interosculation
+interosseal
+interosseous
+interownership
+interpage
+interpalatine
+interpalpebral
+interpapillary
+interparenchymal
+interparental
+interparenthetical
+interparenthetically
+interparietal
+interparietale
+interparliament
+interparliamentary
+interparoxysmal
+interparty
+interpause
+interpave
+interpeal
+interpectoral
+interpeduncular
+interpel
+interpellant
+interpellate
+interpellation
+interpellator
+interpenetrable
+interpenetrant
+interpenetrate
+interpenetration
+interpenetrative
+interpenetratively
+interpermeate
+interpersonal
+interpervade
+interpetaloid
+interpetiolar
+interpetiolary
+interphalangeal
+interphase
+interphone
+interpiece
+interpilaster
+interpilastering
+interplacental
+interplait
+interplanetary
+interplant
+interplanting
+interplay
+interplea
+interplead
+interpleader
+interpledge
+interpleural
+interplical
+interplicate
+interplication
+interplight
+interpoint
+interpolable
+interpolar
+interpolary
+interpolate
+interpolater
+interpolation
+interpolative
+interpolatively
+interpolator
+interpole
+interpolitical
+interpolity
+interpollinate
+interpolymer
+interpone
+interportal
+interposable
+interposal
+interpose
+interposer
+interposing
+interposingly
+interposition
+interposure
+interpour
+interprater
+interpressure
+interpret
+interpretability
+interpretable
+interpretableness
+interpretably
+interpretament
+interpretation
+interpretational
+interpretative
+interpretatively
+interpreter
+interpretership
+interpretive
+interpretively
+interpretorial
+interpretress
+interprismatic
+interproduce
+interprofessional
+interproglottidal
+interproportional
+interprotoplasmic
+interprovincial
+interproximal
+interproximate
+interpterygoid
+interpubic
+interpulmonary
+interpunct
+interpunction
+interpunctuate
+interpunctuation
+interpupillary
+interquarrel
+interquarter
+interrace
+interracial
+interracialism
+interradial
+interradially
+interradiate
+interradiation
+interradium
+interradius
+interrailway
+interramal
+interramicorn
+interramification
+interreceive
+interreflection
+interregal
+interregimental
+interregional
+interregna
+interregnal
+interregnum
+interreign
+interrelate
+interrelated
+interrelatedly
+interrelatedness
+interrelation
+interrelationship
+interreligious
+interrenal
+interrenalism
+interrepellent
+interrepulsion
+interrer
+interresponsibility
+interresponsible
+interreticular
+interreticulation
+interrex
+interrhyme
+interright
+interriven
+interroad
+interrogability
+interrogable
+interrogant
+interrogate
+interrogatedness
+interrogatee
+interrogatingly
+interrogation
+interrogational
+interrogative
+interrogatively
+interrogator
+interrogatorily
+interrogatory
+interrogatrix
+interrogee
+interroom
+interrule
+interrun
+interrupt
+interrupted
+interruptedly
+interruptedness
+interrupter
+interruptible
+interrupting
+interruptingly
+interruption
+interruptive
+interruptively
+interruptor
+interruptory
+intersale
+intersalute
+interscapilium
+interscapular
+interscapulum
+interscene
+interscholastic
+interschool
+interscience
+interscribe
+interscription
+interseaboard
+interseamed
+intersect
+intersectant
+intersection
+intersectional
+intersegmental
+interseminal
+intersentimental
+interseptal
+intersertal
+intersesamoid
+intersession
+intersessional
+interset
+intersex
+intersexual
+intersexualism
+intersexuality
+intershade
+intershifting
+intershock
+intershoot
+intershop
+intersidereal
+intersituate
+intersocial
+intersocietal
+intersociety
+intersole
+intersolubility
+intersoluble
+intersomnial
+intersomnious
+intersonant
+intersow
+interspace
+interspatial
+interspatially
+interspeaker
+interspecial
+interspecific
+interspersal
+intersperse
+interspersedly
+interspersion
+interspheral
+intersphere
+interspicular
+interspinal
+interspinalis
+interspinous
+interspiral
+interspiration
+intersporal
+intersprinkle
+intersqueeze
+interstadial
+interstage
+interstaminal
+interstapedial
+interstate
+interstation
+interstellar
+interstellary
+intersterile
+intersterility
+intersternal
+interstice
+intersticed
+interstimulate
+interstimulation
+interstitial
+interstitially
+interstitious
+interstratification
+interstratify
+interstreak
+interstream
+interstreet
+interstrial
+interstriation
+interstrive
+intersubjective
+intersubsistence
+intersubstitution
+intersuperciliary
+intersusceptation
+intersystem
+intersystematical
+intertalk
+intertangle
+intertanglement
+intertarsal
+interteam
+intertentacular
+intertergal
+interterminal
+interterritorial
+intertessellation
+intertexture
+interthing
+interthreaded
+interthronging
+intertidal
+intertie
+intertill
+intertillage
+intertinge
+intertissued
+intertone
+intertongue
+intertonic
+intertouch
+intertown
+intertrabecular
+intertrace
+intertrade
+intertrading
+intertraffic
+intertragian
+intertransformability
+intertransformable
+intertransmissible
+intertransmission
+intertranspicuous
+intertransversal
+intertransversalis
+intertransversary
+intertransverse
+intertrappean
+intertribal
+intertriginous
+intertriglyph
+intertrigo
+intertrinitarian
+intertrochanteric
+intertropic
+intertropical
+intertropics
+intertrude
+intertuberal
+intertubercular
+intertubular
+intertwin
+intertwine
+intertwinement
+intertwining
+intertwiningly
+intertwist
+intertwistingly
+Intertype
+interungular
+interungulate
+interunion
+interuniversity
+interurban
+interureteric
+intervaginal
+interval
+intervale
+intervalley
+intervallic
+intervallum
+intervalvular
+intervarietal
+intervary
+intervascular
+intervein
+interveinal
+intervenant
+intervene
+intervener
+intervenience
+interveniency
+intervenient
+intervenium
+intervention
+interventional
+interventionism
+interventionist
+interventive
+interventor
+interventral
+interventralia
+interventricular
+intervenular
+interverbal
+interversion
+intervert
+intervertebra
+intervertebral
+intervertebrally
+intervesicular
+interview
+interviewable
+interviewee
+interviewer
+intervillous
+intervisibility
+intervisible
+intervisit
+intervisitation
+intervital
+intervocal
+intervocalic
+intervolute
+intervolution
+intervolve
+interwar
+interweave
+interweavement
+interweaver
+interweaving
+interweavingly
+interwed
+interweld
+interwhiff
+interwhile
+interwhistle
+interwind
+interwish
+interword
+interwork
+interworks
+interworld
+interworry
+interwound
+interwove
+interwoven
+interwovenly
+interwrap
+interwreathe
+interwrought
+interxylary
+interzonal
+interzone
+interzooecial
+interzygapophysial
+intestable
+intestacy
+intestate
+intestation
+intestinal
+intestinally
+intestine
+intestineness
+intestiniform
+intestinovesical
+intext
+intextine
+intexture
+inthrall
+inthrallment
+inthrong
+inthronistic
+inthronization
+inthronize
+inthrow
+inthrust
+intil
+intima
+intimacy
+intimal
+intimate
+intimately
+intimateness
+intimater
+intimation
+intimidate
+intimidation
+intimidator
+intimidatory
+intimidity
+intimity
+intinction
+intine
+intitule
+into
+intoed
+intolerability
+intolerable
+intolerableness
+intolerably
+intolerance
+intolerancy
+intolerant
+intolerantly
+intolerantness
+intolerated
+intolerating
+intoleration
+intonable
+intonate
+intonation
+intonator
+intone
+intonement
+intoner
+intoothed
+intorsion
+intort
+intortillage
+intown
+intoxation
+intoxicable
+intoxicant
+intoxicate
+intoxicated
+intoxicatedly
+intoxicatedness
+intoxicating
+intoxicatingly
+intoxication
+intoxicative
+intoxicator
+intrabiontic
+intrabranchial
+intrabred
+intrabronchial
+intrabuccal
+intracalicular
+intracanalicular
+intracanonical
+intracapsular
+intracardiac
+intracardial
+intracarpal
+intracarpellary
+intracartilaginous
+intracellular
+intracellularly
+intracephalic
+intracerebellar
+intracerebral
+intracerebrally
+intracervical
+intrachordal
+intracistern
+intracity
+intraclitelline
+intracloacal
+intracoastal
+intracoelomic
+intracolic
+intracollegiate
+intracommunication
+intracompany
+intracontinental
+intracorporeal
+intracorpuscular
+intracortical
+intracosmic
+intracosmical
+intracosmically
+intracostal
+intracranial
+intracranially
+intractability
+intractable
+intractableness
+intractably
+intractile
+intracutaneous
+intracystic
+intrada
+intradepartmental
+intradermal
+intradermally
+intradermic
+intradermically
+intradermo
+intradistrict
+intradivisional
+intrados
+intraduodenal
+intradural
+intraecclesiastical
+intraepiphyseal
+intraepithelial
+intrafactory
+intrafascicular
+intrafissural
+intrafistular
+intrafoliaceous
+intraformational
+intrafusal
+intragastric
+intragemmal
+intraglacial
+intraglandular
+intraglobular
+intragroup
+intragroupal
+intragyral
+intrahepatic
+intrahyoid
+intraimperial
+intrait
+intrajugular
+intralamellar
+intralaryngeal
+intralaryngeally
+intraleukocytic
+intraligamentary
+intraligamentous
+intralingual
+intralobar
+intralobular
+intralocular
+intralogical
+intralumbar
+intramammary
+intramarginal
+intramastoid
+intramatrical
+intramatrically
+intramedullary
+intramembranous
+intrameningeal
+intramental
+intrametropolitan
+intramolecular
+intramontane
+intramorainic
+intramundane
+intramural
+intramuralism
+intramuscular
+intramuscularly
+intramyocardial
+intranarial
+intranasal
+intranatal
+intranational
+intraneous
+intraneural
+intranidal
+intranquil
+intranquillity
+intranscalency
+intranscalent
+intransferable
+intransformable
+intransfusible
+intransgressible
+intransient
+intransigency
+intransigent
+intransigentism
+intransigentist
+intransigently
+intransitable
+intransitive
+intransitively
+intransitiveness
+intransitivity
+intranslatable
+intransmissible
+intransmutability
+intransmutable
+intransparency
+intransparent
+intrant
+intranuclear
+intraoctave
+intraocular
+intraoral
+intraorbital
+intraorganization
+intraossal
+intraosseous
+intraosteal
+intraovarian
+intrapair
+intraparenchymatous
+intraparietal
+intraparochial
+intraparty
+intrapelvic
+intrapericardiac
+intrapericardial
+intraperineal
+intraperiosteal
+intraperitoneal
+intraperitoneally
+intrapetiolar
+intraphilosophic
+intrapial
+intraplacental
+intraplant
+intrapleural
+intrapolar
+intrapontine
+intraprostatic
+intraprotoplasmic
+intrapsychic
+intrapsychical
+intrapsychically
+intrapulmonary
+intrapyretic
+intrarachidian
+intrarectal
+intrarelation
+intrarenal
+intraretinal
+intrarhachidian
+intraschool
+intrascrotal
+intrasegmental
+intraselection
+intrasellar
+intraseminal
+intraseptal
+intraserous
+intrashop
+intraspecific
+intraspinal
+intrastate
+intrastromal
+intrasusception
+intrasynovial
+intratarsal
+intratelluric
+intraterritorial
+intratesticular
+intrathecal
+intrathoracic
+intrathyroid
+intratomic
+intratonsillar
+intratrabecular
+intratracheal
+intratracheally
+intratropical
+intratubal
+intratubular
+intratympanic
+intravaginal
+intravalvular
+intravasation
+intravascular
+intravenous
+intravenously
+intraventricular
+intraverbal
+intraversable
+intravertebral
+intravertebrally
+intravesical
+intravital
+intravitelline
+intravitreous
+intraxylary
+intreat
+intrench
+intrenchant
+intrencher
+intrenchment
+intrepid
+intrepidity
+intrepidly
+intrepidness
+intricacy
+intricate
+intricately
+intricateness
+intrication
+intrigant
+intrigue
+intrigueproof
+intriguer
+intriguery
+intriguess
+intriguing
+intriguingly
+intrine
+intrinse
+intrinsic
+intrinsical
+intrinsicality
+intrinsically
+intrinsicalness
+introactive
+introceptive
+introconversion
+introconvertibility
+introconvertible
+introdden
+introduce
+introducee
+introducement
+introducer
+introducible
+introduction
+introductive
+introductively
+introductor
+introductorily
+introductoriness
+introductory
+introductress
+introflex
+introflexion
+introgression
+introgressive
+introinflection
+introit
+introitus
+introject
+introjection
+introjective
+intromissibility
+intromissible
+intromission
+intromissive
+intromit
+intromittence
+intromittent
+intromitter
+intropression
+intropulsive
+introreception
+introrsal
+introrse
+introrsely
+introsensible
+introsentient
+introspect
+introspectable
+introspection
+introspectional
+introspectionism
+introspectionist
+introspective
+introspectively
+introspectiveness
+introspectivism
+introspectivist
+introspector
+introsuction
+introsuscept
+introsusception
+introthoracic
+introtraction
+introvenient
+introverse
+introversibility
+introversible
+introversion
+introversive
+introversively
+introvert
+introverted
+introvertive
+introvision
+introvolution
+intrudance
+intrude
+intruder
+intruding
+intrudingly
+intrudress
+intruse
+intrusion
+intrusional
+intrusionism
+intrusionist
+intrusive
+intrusively
+intrusiveness
+intrust
+intubate
+intubation
+intubationist
+intubator
+intube
+intue
+intuent
+intuicity
+intuit
+intuitable
+intuition
+intuitional
+intuitionalism
+intuitionalist
+intuitionally
+intuitionism
+intuitionist
+intuitionistic
+intuitionless
+intuitive
+intuitively
+intuitiveness
+intuitivism
+intuitivist
+intumesce
+intumescence
+intumescent
+inturbidate
+inturn
+inturned
+inturning
+intussuscept
+intussusception
+intussusceptive
+intwist
+inula
+inulaceous
+inulase
+inulin
+inuloid
+inumbrate
+inumbration
+inunct
+inunction
+inunctum
+inunctuosity
+inunctuous
+inundable
+inundant
+inundate
+inundation
+inundator
+inundatory
+inunderstandable
+inurbane
+inurbanely
+inurbaneness
+inurbanity
+inure
+inured
+inuredness
+inurement
+inurn
+inusitate
+inusitateness
+inusitation
+inustion
+inutile
+inutilely
+inutility
+inutilized
+inutterable
+invaccinate
+invaccination
+invadable
+invade
+invader
+invaginable
+invaginate
+invagination
+invalescence
+invalid
+invalidate
+invalidation
+invalidator
+invalidcy
+invalidhood
+invalidish
+invalidism
+invalidity
+invalidly
+invalidness
+invalidship
+invalorous
+invaluable
+invaluableness
+invaluably
+invalued
+Invar
+invariability
+invariable
+invariableness
+invariably
+invariance
+invariancy
+invariant
+invariantive
+invariantively
+invariantly
+invaried
+invasion
+invasionist
+invasive
+invecked
+invected
+invection
+invective
+invectively
+invectiveness
+invectivist
+invector
+inveigh
+inveigher
+inveigle
+inveiglement
+inveigler
+inveil
+invein
+invendibility
+invendible
+invendibleness
+invenient
+invent
+inventable
+inventary
+inventer
+inventful
+inventibility
+inventible
+inventibleness
+invention
+inventional
+inventionless
+inventive
+inventively
+inventiveness
+inventor
+inventoriable
+inventorial
+inventorially
+inventory
+inventress
+inventurous
+inveracious
+inveracity
+inverisimilitude
+inverity
+inverminate
+invermination
+invernacular
+Inverness
+inversable
+inversatile
+inverse
+inversed
+inversedly
+inversely
+inversion
+inversionist
+inversive
+invert
+invertase
+invertebracy
+invertebral
+Invertebrata
+invertebrate
+invertebrated
+inverted
+invertedly
+invertend
+inverter
+invertibility
+invertible
+invertile
+invertin
+invertive
+invertor
+invest
+investable
+investible
+investigable
+investigatable
+investigate
+investigating
+investigatingly
+investigation
+investigational
+investigative
+investigator
+investigatorial
+investigatory
+investitive
+investitor
+investiture
+investment
+investor
+inveteracy
+inveterate
+inveterately
+inveterateness
+inviability
+invictive
+invidious
+invidiously
+invidiousness
+invigilance
+invigilancy
+invigilation
+invigilator
+invigor
+invigorant
+invigorate
+invigorating
+invigoratingly
+invigoratingness
+invigoration
+invigorative
+invigoratively
+invigorator
+invinate
+invination
+invincibility
+invincible
+invincibleness
+invincibly
+inviolability
+inviolable
+inviolableness
+inviolably
+inviolacy
+inviolate
+inviolated
+inviolately
+inviolateness
+invirile
+invirility
+invirtuate
+inviscate
+inviscation
+inviscid
+inviscidity
+invised
+invisibility
+invisible
+invisibleness
+invisibly
+invitable
+invital
+invitant
+invitation
+invitational
+invitatory
+invite
+invitee
+invitement
+inviter
+invitiate
+inviting
+invitingly
+invitingness
+invitress
+invitrifiable
+invivid
+invocable
+invocant
+invocate
+invocation
+invocative
+invocator
+invocatory
+invoice
+invoke
+invoker
+involatile
+involatility
+involucel
+involucellate
+involucellated
+involucral
+involucrate
+involucre
+involucred
+involucriform
+involucrum
+involuntarily
+involuntariness
+involuntary
+involute
+involuted
+involutedly
+involutely
+involution
+involutional
+involutionary
+involutorial
+involutory
+involve
+involved
+involvedly
+involvedness
+involvement
+involvent
+involver
+invulnerability
+invulnerable
+invulnerableness
+invulnerably
+invultuation
+inwale
+inwall
+inwandering
+inward
+inwardly
+inwardness
+inwards
+inweave
+inwedged
+inweed
+inweight
+inwick
+inwind
+inwit
+inwith
+inwood
+inwork
+inworn
+inwound
+inwoven
+inwrap
+inwrapment
+inwreathe
+inwrit
+inwrought
+inyoite
+inyoke
+Io
+io
+Iodamoeba
+iodate
+iodation
+iodhydrate
+iodhydric
+iodhydrin
+iodic
+iodide
+iodiferous
+iodinate
+iodination
+iodine
+iodinium
+iodinophil
+iodinophilic
+iodinophilous
+iodism
+iodite
+iodization
+iodize
+iodizer
+iodo
+iodobehenate
+iodobenzene
+iodobromite
+iodocasein
+iodochloride
+iodochromate
+iodocresol
+iododerma
+iodoethane
+iodoform
+iodogallicin
+iodohydrate
+iodohydric
+iodohydrin
+iodol
+iodomercurate
+iodomercuriate
+iodomethane
+iodometric
+iodometrical
+iodometry
+iodonium
+iodopsin
+iodoso
+iodosobenzene
+iodospongin
+iodotannic
+iodotherapy
+iodothyrin
+iodous
+iodoxy
+iodoxybenzene
+iodyrite
+iolite
+ion
+Ione
+Ioni
+Ionian
+Ionic
+ionic
+Ionicism
+Ionicization
+Ionicize
+Ionidium
+Ionism
+Ionist
+ionium
+ionizable
+Ionization
+ionization
+Ionize
+ionize
+ionizer
+ionogen
+ionogenic
+ionone
+Ionornis
+ionosphere
+ionospheric
+Ionoxalis
+iontophoresis
+Ioskeha
+iota
+iotacism
+iotacismus
+iotacist
+iotization
+iotize
+Iowa
+Iowan
+Ipalnemohuani
+ipecac
+ipecacuanha
+ipecacuanhic
+Iphimedia
+Iphis
+ipid
+Ipidae
+ipil
+ipomea
+Ipomoea
+ipomoein
+ipseand
+ipsedixitish
+ipsedixitism
+ipsedixitist
+ipseity
+ipsilateral
+Ira
+iracund
+iracundity
+iracundulous
+irade
+Iran
+Irani
+Iranian
+Iranic
+Iranism
+Iranist
+Iranize
+Iraq
+Iraqi
+Iraqian
+irascent
+irascibility
+irascible
+irascibleness
+irascibly
+irate
+irately
+ire
+ireful
+irefully
+irefulness
+Irelander
+ireless
+Irena
+irenarch
+Irene
+irene
+irenic
+irenical
+irenically
+irenicism
+irenicist
+irenicon
+irenics
+irenicum
+Iresine
+Irfan
+Irgun
+Irgunist
+irian
+Iriartea
+Iriarteaceae
+Iricism
+Iricize
+irid
+Iridaceae
+iridaceous
+iridadenosis
+iridal
+iridalgia
+iridate
+iridauxesis
+iridectome
+iridectomize
+iridectomy
+iridectropium
+iridemia
+iridencleisis
+iridentropium
+irideous
+irideremia
+irides
+iridesce
+iridescence
+iridescency
+iridescent
+iridescently
+iridial
+iridian
+iridiate
+iridic
+iridical
+iridin
+iridine
+iridiocyte
+iridiophore
+iridioplatinum
+iridious
+iridite
+iridium
+iridization
+iridize
+iridoavulsion
+iridocapsulitis
+iridocele
+iridoceratitic
+iridochoroiditis
+iridocoloboma
+iridoconstrictor
+iridocyclitis
+iridocyte
+iridodesis
+iridodiagnosis
+iridodialysis
+iridodonesis
+iridokinesia
+iridomalacia
+iridomotor
+Iridomyrmex
+iridoncus
+iridoparalysis
+iridophore
+iridoplegia
+iridoptosis
+iridopupillary
+iridorhexis
+iridosclerotomy
+iridosmine
+iridosmium
+iridotasis
+iridotome
+iridotomy
+iris
+irisated
+irisation
+iriscope
+irised
+Irish
+Irisher
+Irishian
+Irishism
+Irishize
+Irishly
+Irishman
+Irishness
+Irishry
+Irishwoman
+Irishy
+irisin
+irislike
+irisroot
+iritic
+iritis
+irk
+irksome
+irksomely
+irksomeness
+Irma
+Iroha
+irok
+iroko
+iron
+ironback
+ironbark
+ironbound
+ironbush
+ironclad
+irone
+ironer
+ironfisted
+ironflower
+ironhanded
+ironhandedly
+ironhandedness
+ironhard
+ironhead
+ironheaded
+ironhearted
+ironheartedly
+ironheartedness
+ironical
+ironically
+ironicalness
+ironice
+ironish
+ironism
+ironist
+ironize
+ironless
+ironlike
+ironly
+ironmaker
+ironmaking
+ironman
+ironmaster
+ironmonger
+ironmongering
+ironmongery
+ironness
+ironshod
+ironshot
+ironside
+ironsided
+ironsides
+ironsmith
+ironstone
+ironware
+ironweed
+ironwood
+ironwork
+ironworked
+ironworker
+ironworking
+ironworks
+ironwort
+irony
+Iroquoian
+Iroquois
+Irpex
+irradiance
+irradiancy
+irradiant
+irradiate
+irradiated
+irradiatingly
+irradiation
+irradiative
+irradiator
+irradicable
+irradicate
+irrarefiable
+irrationability
+irrationable
+irrationably
+irrational
+irrationalism
+irrationalist
+irrationalistic
+irrationality
+irrationalize
+irrationally
+irrationalness
+irreality
+irrealizable
+irrebuttable
+irreceptive
+irreceptivity
+irreciprocal
+irreciprocity
+irreclaimability
+irreclaimable
+irreclaimableness
+irreclaimably
+irreclaimed
+irrecognition
+irrecognizability
+irrecognizable
+irrecognizably
+irrecognizant
+irrecollection
+irreconcilability
+irreconcilable
+irreconcilableness
+irreconcilably
+irreconcile
+irreconcilement
+irreconciliability
+irreconciliable
+irreconciliableness
+irreconciliably
+irreconciliation
+irrecordable
+irrecoverable
+irrecoverableness
+irrecoverably
+irrecusable
+irrecusably
+irredeemability
+irredeemable
+irredeemableness
+irredeemably
+irredeemed
+irredenta
+irredential
+Irredentism
+Irredentist
+irredressibility
+irredressible
+irredressibly
+irreducibility
+irreducible
+irreducibleness
+irreducibly
+irreductibility
+irreductible
+irreduction
+irreferable
+irreflection
+irreflective
+irreflectively
+irreflectiveness
+irreflexive
+irreformability
+irreformable
+irrefragability
+irrefragable
+irrefragableness
+irrefragably
+irrefrangibility
+irrefrangible
+irrefrangibleness
+irrefrangibly
+irrefusable
+irrefutability
+irrefutable
+irrefutableness
+irrefutably
+irregardless
+irregeneracy
+irregenerate
+irregeneration
+irregular
+irregularism
+irregularist
+irregularity
+irregularize
+irregularly
+irregularness
+irregulate
+irregulated
+irregulation
+irrelate
+irrelated
+irrelation
+irrelative
+irrelatively
+irrelativeness
+irrelevance
+irrelevancy
+irrelevant
+irrelevantly
+irreliability
+irrelievable
+irreligion
+irreligionism
+irreligionist
+irreligionize
+irreligiosity
+irreligious
+irreligiously
+irreligiousness
+irreluctant
+irremeable
+irremeably
+irremediable
+irremediableness
+irremediably
+irrememberable
+irremissibility
+irremissible
+irremissibleness
+irremissibly
+irremission
+irremissive
+irremovability
+irremovable
+irremovableness
+irremovably
+irremunerable
+irrenderable
+irrenewable
+irrenunciable
+irrepair
+irrepairable
+irreparability
+irreparable
+irreparableness
+irreparably
+irrepassable
+irrepealability
+irrepealable
+irrepealableness
+irrepealably
+irrepentance
+irrepentant
+irrepentantly
+irreplaceable
+irreplaceably
+irrepleviable
+irreplevisable
+irreportable
+irreprehensible
+irreprehensibleness
+irreprehensibly
+irrepresentable
+irrepresentableness
+irrepressibility
+irrepressible
+irrepressibleness
+irrepressibly
+irrepressive
+irreproachability
+irreproachable
+irreproachableness
+irreproachably
+irreproducible
+irreproductive
+irreprovable
+irreprovableness
+irreprovably
+irreptitious
+irrepublican
+irresilient
+irresistance
+irresistibility
+irresistible
+irresistibleness
+irresistibly
+irresoluble
+irresolubleness
+irresolute
+irresolutely
+irresoluteness
+irresolution
+irresolvability
+irresolvable
+irresolvableness
+irresolved
+irresolvedly
+irresonance
+irresonant
+irrespectability
+irrespectable
+irrespectful
+irrespective
+irrespectively
+irrespirable
+irrespondence
+irresponsibility
+irresponsible
+irresponsibleness
+irresponsibly
+irresponsive
+irresponsiveness
+irrestrainable
+irrestrainably
+irrestrictive
+irresultive
+irresuscitable
+irresuscitably
+irretention
+irretentive
+irretentiveness
+irreticence
+irreticent
+irretraceable
+irretraceably
+irretractable
+irretractile
+irretrievability
+irretrievable
+irretrievableness
+irretrievably
+irrevealable
+irrevealably
+irreverence
+irreverend
+irreverendly
+irreverent
+irreverential
+irreverentialism
+irreverentially
+irreverently
+irreversibility
+irreversible
+irreversibleness
+irreversibly
+irrevertible
+irreviewable
+irrevisable
+irrevocability
+irrevocable
+irrevocableness
+irrevocably
+irrevoluble
+irrigable
+irrigably
+irrigant
+irrigate
+irrigation
+irrigational
+irrigationist
+irrigative
+irrigator
+irrigatorial
+irrigatory
+irriguous
+irriguousness
+irrision
+irrisor
+Irrisoridae
+irrisory
+irritability
+irritable
+irritableness
+irritably
+irritament
+irritancy
+irritant
+irritate
+irritatedly
+irritating
+irritatingly
+irritation
+irritative
+irritativeness
+irritator
+irritatory
+Irritila
+irritomotile
+irritomotility
+irrorate
+irrotational
+irrotationally
+irrubrical
+irrupt
+irruptible
+irruption
+irruptive
+irruptively
+Irvin
+Irving
+Irvingesque
+Irvingiana
+Irvingism
+Irvingite
+Irwin
+is
+Isaac
+Isabel
+isabelina
+isabelita
+Isabella
+Isabelle
+Isabelline
+isabnormal
+isaconitine
+isacoustic
+isadelphous
+Isadora
+isagoge
+isagogic
+isagogical
+isagogically
+isagogics
+isagon
+Isaiah
+Isaian
+isallobar
+isallotherm
+isamine
+Isander
+isandrous
+isanemone
+isanomal
+isanomalous
+isanthous
+isapostolic
+Isaria
+isarioid
+isatate
+isatic
+isatide
+isatin
+isatinic
+Isatis
+isatogen
+isatogenic
+Isaurian
+Isawa
+isazoxy
+isba
+Iscariot
+Iscariotic
+Iscariotical
+Iscariotism
+ischemia
+ischemic
+ischiac
+ischiadic
+ischiadicus
+ischial
+ischialgia
+ischialgic
+ischiatic
+ischidrosis
+ischioanal
+ischiobulbar
+ischiocapsular
+ischiocaudal
+ischiocavernosus
+ischiocavernous
+ischiocele
+ischiocerite
+ischiococcygeal
+ischiofemoral
+ischiofibular
+ischioiliac
+ischioneuralgia
+ischioperineal
+ischiopodite
+ischiopubic
+ischiopubis
+ischiorectal
+ischiorrhogic
+ischiosacral
+ischiotibial
+ischiovaginal
+ischiovertebral
+ischium
+ischocholia
+ischuretic
+ischuria
+ischury
+Ischyodus
+Isegrim
+isenergic
+isentropic
+isepiptesial
+isepiptesis
+iserine
+iserite
+isethionate
+isethionic
+Iseum
+Isfahan
+Ishmael
+Ishmaelite
+Ishmaelitic
+Ishmaelitish
+Ishmaelitism
+ishpingo
+ishshakku
+Isiac
+Isiacal
+Isidae
+isidiiferous
+isidioid
+isidiophorous
+isidiose
+isidium
+isidoid
+Isidore
+Isidorian
+Isidoric
+Isinai
+isindazole
+isinglass
+Isis
+Islam
+Islamic
+Islamism
+Islamist
+Islamistic
+Islamite
+Islamitic
+Islamitish
+Islamization
+Islamize
+island
+islander
+islandhood
+islandic
+islandish
+islandless
+islandlike
+islandman
+islandress
+islandry
+islandy
+islay
+isle
+isleless
+islesman
+islet
+Isleta
+isleted
+isleward
+islot
+ism
+Ismaelism
+Ismaelite
+Ismaelitic
+Ismaelitical
+Ismaelitish
+Ismaili
+Ismailian
+Ismailite
+ismal
+ismatic
+ismatical
+ismaticalness
+ismdom
+ismy
+Isnardia
+iso
+isoabnormal
+isoagglutination
+isoagglutinative
+isoagglutinin
+isoagglutinogen
+isoalantolactone
+isoallyl
+isoamarine
+isoamide
+isoamyl
+isoamylamine
+isoamylene
+isoamylethyl
+isoamylidene
+isoantibody
+isoantigen
+isoapiole
+isoasparagine
+isoaurore
+isobar
+isobarbaloin
+isobarbituric
+isobare
+isobaric
+isobarism
+isobarometric
+isobase
+isobath
+isobathic
+isobathytherm
+isobathythermal
+isobathythermic
+isobenzofuran
+isobilateral
+isobilianic
+isobiogenetic
+isoborneol
+isobornyl
+isobront
+isobronton
+isobutane
+isobutyl
+isobutylene
+isobutyraldehyde
+isobutyrate
+isobutyric
+isobutyryl
+isocamphor
+isocamphoric
+isocaproic
+isocarbostyril
+Isocardia
+Isocardiidae
+isocarpic
+isocarpous
+isocellular
+isocephalic
+isocephalism
+isocephalous
+isocephaly
+isocercal
+isocercy
+isochasm
+isochasmic
+isocheim
+isocheimal
+isocheimenal
+isocheimic
+isocheimonal
+isochlor
+isochlorophyll
+isochlorophyllin
+isocholanic
+isocholesterin
+isocholesterol
+isochor
+isochoric
+isochromatic
+isochronal
+isochronally
+isochrone
+isochronic
+isochronical
+isochronism
+isochronize
+isochronon
+isochronous
+isochronously
+isochroous
+isocinchomeronic
+isocinchonine
+isocitric
+isoclasite
+isoclimatic
+isoclinal
+isocline
+isoclinic
+isocodeine
+isocola
+isocolic
+isocolon
+isocoria
+isocorybulbin
+isocorybulbine
+isocorydine
+isocoumarin
+isocracy
+isocrat
+isocratic
+isocreosol
+isocrotonic
+isocrymal
+isocryme
+isocrymic
+isocyanate
+isocyanic
+isocyanide
+isocyanine
+isocyano
+isocyanogen
+isocyanurate
+isocyanuric
+isocyclic
+isocymene
+isocytic
+isodactylism
+isodactylous
+isodiabatic
+isodialuric
+isodiametric
+isodiametrical
+isodiazo
+isodiazotate
+isodimorphic
+isodimorphism
+isodimorphous
+isodomic
+isodomous
+isodomum
+isodont
+isodontous
+isodrome
+isodulcite
+isodurene
+isodynamia
+isodynamic
+isodynamical
+isoelectric
+isoelectrically
+isoelectronic
+isoelemicin
+isoemodin
+isoenergetic
+isoerucic
+Isoetaceae
+Isoetales
+Isoetes
+isoeugenol
+isoflavone
+isoflor
+isogamete
+isogametic
+isogametism
+isogamic
+isogamous
+isogamy
+isogen
+isogenesis
+isogenetic
+isogenic
+isogenotype
+isogenotypic
+isogenous
+isogeny
+isogeotherm
+isogeothermal
+isogeothermic
+isogloss
+isoglossal
+isognathism
+isognathous
+isogon
+isogonal
+isogonality
+isogonally
+isogonic
+isogoniostat
+isogonism
+isograft
+isogram
+isograph
+isographic
+isographical
+isographically
+isography
+isogynous
+isohaline
+isohalsine
+isohel
+isohemopyrrole
+isoheptane
+isohesperidin
+isohexyl
+isohydric
+isohydrocyanic
+isohydrosorbic
+isohyet
+isohyetal
+isoimmune
+isoimmunity
+isoimmunization
+isoimmunize
+isoindazole
+isoindigotin
+isoindole
+isoionone
+isokeraunic
+isokeraunographic
+isokeraunophonic
+Isokontae
+isokontan
+isokurtic
+isolability
+isolable
+isolapachol
+isolate
+isolated
+isolatedly
+isolating
+isolation
+isolationism
+isolationist
+isolative
+Isolde
+isolecithal
+isoleucine
+isolichenin
+isolinolenic
+isologous
+isologue
+isology
+Isoloma
+isolysin
+isolysis
+isomagnetic
+isomaltose
+isomastigate
+isomelamine
+isomenthone
+isomer
+Isomera
+isomere
+isomeric
+isomerical
+isomerically
+isomeride
+isomerism
+isomerization
+isomerize
+isomeromorphism
+isomerous
+isomery
+isometric
+isometrical
+isometrically
+isometrograph
+isometropia
+isometry
+isomorph
+isomorphic
+isomorphism
+isomorphous
+Isomyaria
+isomyarian
+isoneph
+isonephelic
+isonergic
+isonicotinic
+isonitramine
+isonitrile
+isonitroso
+isonomic
+isonomous
+isonomy
+isonuclear
+isonym
+isonymic
+isonymy
+isooleic
+isoosmosis
+isopachous
+isopag
+isoparaffin
+isopectic
+isopelletierin
+isopelletierine
+isopentane
+isoperimeter
+isoperimetric
+isoperimetrical
+isoperimetry
+isopetalous
+isophanal
+isophane
+isophasal
+isophene
+isophenomenal
+isophoria
+isophorone
+isophthalic
+isophthalyl
+isophyllous
+isophylly
+isopicramic
+isopiestic
+isopiestically
+isopilocarpine
+isoplere
+isopleth
+Isopleura
+isopleural
+isopleuran
+isopleurous
+isopod
+Isopoda
+isopodan
+isopodiform
+isopodimorphous
+isopodous
+isopogonous
+isopolite
+isopolitical
+isopolity
+isopoly
+isoprene
+isopropenyl
+isopropyl
+isopropylacetic
+isopropylamine
+isopsephic
+isopsephism
+Isoptera
+isopterous
+isoptic
+isopulegone
+isopurpurin
+isopycnic
+isopyre
+isopyromucic
+isopyrrole
+isoquercitrin
+isoquinine
+isoquinoline
+isorcinol
+isorhamnose
+isorhodeose
+isorithm
+isorosindone
+isorrhythmic
+isorropic
+isosaccharic
+isosaccharin
+isoscele
+isosceles
+isoscope
+isoseismal
+isoseismic
+isoseismical
+isoseist
+isoserine
+isosmotic
+Isospondyli
+isospondylous
+isospore
+isosporic
+isosporous
+isospory
+isostasist
+isostasy
+isostatic
+isostatical
+isostatically
+isostemonous
+isostemony
+isostere
+isosteric
+isosterism
+isostrychnine
+isosuccinic
+isosulphide
+isosulphocyanate
+isosulphocyanic
+isosultam
+isotac
+isoteles
+isotely
+isotheral
+isothere
+isotherm
+isothermal
+isothermally
+isothermic
+isothermical
+isothermobath
+isothermobathic
+isothermous
+isotherombrose
+isothiocyanates
+isothiocyanic
+isothiocyano
+isothujone
+isotimal
+isotome
+isotomous
+isotonia
+isotonic
+isotonicity
+isotony
+isotope
+isotopic
+isotopism
+isotopy
+isotrehalose
+Isotria
+isotrimorphic
+isotrimorphism
+isotrimorphous
+isotron
+isotrope
+isotropic
+isotropism
+isotropous
+isotropy
+isotype
+isotypic
+isotypical
+isovalerate
+isovalerianate
+isovalerianic
+isovaleric
+isovalerone
+isovaline
+isovanillic
+isovoluminal
+isoxanthine
+isoxazine
+isoxazole
+isoxime
+isoxylene
+isoyohimbine
+isozooid
+ispaghul
+ispravnik
+Israel
+Israeli
+Israelite
+Israeliteship
+Israelitic
+Israelitish
+Israelitism
+Israelitize
+issanguila
+Issedoi
+Issedones
+issei
+issite
+issuable
+issuably
+issuance
+issuant
+issue
+issueless
+issuer
+issuing
+ist
+isthmi
+Isthmia
+isthmial
+isthmian
+isthmiate
+isthmic
+isthmoid
+isthmus
+istiophorid
+Istiophoridae
+Istiophorus
+istle
+istoke
+Istrian
+Istvaeones
+isuret
+isuretine
+Isuridae
+isuroid
+Isurus
+Iswara
+it
+Ita
+itabirite
+itacism
+itacist
+itacistic
+itacolumite
+itaconate
+itaconic
+Itala
+Itali
+Italian
+Italianate
+Italianately
+Italianation
+Italianesque
+Italianish
+Italianism
+Italianist
+Italianity
+Italianization
+Italianize
+Italianizer
+Italianly
+Italic
+Italical
+Italically
+Italican
+Italicanist
+Italici
+Italicism
+italicization
+italicize
+italics
+Italiote
+italite
+Italomania
+Italon
+Italophile
+itamalate
+itamalic
+itatartaric
+itatartrate
+Itaves
+itch
+itchiness
+itching
+itchingly
+itchless
+itchproof
+itchreed
+itchweed
+itchy
+itcze
+Itea
+Iteaceae
+Itelmes
+item
+iteming
+itemization
+itemize
+itemizer
+itemy
+Iten
+Itenean
+iter
+iterable
+iterance
+iterancy
+iterant
+iterate
+iteration
+iterative
+iteratively
+iterativeness
+Ithaca
+Ithacan
+Ithacensian
+ithagine
+Ithaginis
+ither
+Ithiel
+ithomiid
+Ithomiidae
+Ithomiinae
+ithyphallic
+Ithyphallus
+ithyphyllous
+itineracy
+itinerancy
+itinerant
+itinerantly
+itinerarian
+Itinerarium
+itinerary
+itinerate
+itineration
+itmo
+Ito
+Itoism
+Itoist
+Itoland
+Itonama
+Itonaman
+Itonia
+itonidid
+Itonididae
+itoubou
+its
+itself
+Ituraean
+iturite
+Itylus
+Itys
+Itza
+itzebu
+iva
+Ivan
+ivied
+ivin
+ivoried
+ivorine
+ivoriness
+ivorist
+ivory
+ivorylike
+ivorytype
+ivorywood
+ivy
+ivybells
+ivyberry
+ivyflower
+ivylike
+ivyweed
+ivywood
+ivywort
+iwa
+iwaiwa
+iwis
+Ixia
+Ixiaceae
+Ixiama
+Ixil
+Ixion
+Ixionian
+Ixodes
+ixodian
+ixodic
+ixodid
+Ixodidae
+Ixora
+iyo
+Izar
+izar
+izard
+Izcateco
+Izchak
+Izdubar
+izle
+izote
+iztle
+Izumi
+izzard
+Izzy
+J
+j
+Jaalin
+jab
+Jabarite
+jabbed
+jabber
+jabberer
+jabbering
+jabberingly
+jabberment
+Jabberwock
+jabberwockian
+Jabberwocky
+jabbing
+jabbingly
+jabble
+jabers
+jabia
+jabiru
+jaborandi
+jaborine
+jabot
+jaboticaba
+jabul
+jacal
+Jacaltec
+Jacalteca
+jacamar
+Jacamaralcyon
+jacameropine
+Jacamerops
+jacami
+jacamin
+Jacana
+jacana
+Jacanidae
+Jacaranda
+jacare
+jacate
+jacchus
+jacent
+jacinth
+jacinthe
+Jack
+jack
+jackal
+jackanapes
+jackanapish
+jackaroo
+jackass
+jackassery
+jackassification
+jackassism
+jackassness
+jackbird
+jackbox
+jackboy
+jackdaw
+jackeen
+jacker
+jacket
+jacketed
+jacketing
+jacketless
+jacketwise
+jackety
+jackfish
+jackhammer
+jackknife
+jackleg
+jackman
+jacko
+jackpudding
+jackpuddinghood
+jackrod
+jacksaw
+jackscrew
+jackshaft
+jackshay
+jacksnipe
+Jackson
+Jacksonia
+Jacksonian
+Jacksonite
+jackstay
+jackstone
+jackstraw
+jacktan
+jackweed
+jackwood
+Jacky
+Jackye
+Jacob
+jacobaea
+jacobaean
+Jacobean
+Jacobian
+Jacobic
+Jacobin
+Jacobinia
+Jacobinic
+Jacobinical
+Jacobinically
+Jacobinism
+Jacobinization
+Jacobinize
+Jacobite
+Jacobitely
+Jacobitiana
+Jacobitic
+Jacobitical
+Jacobitically
+Jacobitish
+Jacobitishly
+Jacobitism
+jacobsite
+Jacobson
+jacobus
+jacoby
+jaconet
+Jacqueminot
+Jacques
+jactance
+jactancy
+jactant
+jactation
+jactitate
+jactitation
+jacu
+jacuaru
+jaculate
+jaculation
+jaculative
+jaculator
+jaculatorial
+jaculatory
+jaculiferous
+Jacunda
+jacutinga
+jadder
+jade
+jaded
+jadedly
+jadedness
+jadeite
+jadery
+jadesheen
+jadeship
+jadestone
+jadish
+jadishly
+jadishness
+jady
+jaeger
+jag
+Jaga
+Jagannath
+Jagannatha
+jagat
+Jagatai
+Jagataic
+Jagath
+jager
+jagged
+jaggedly
+jaggedness
+jagger
+jaggery
+jaggy
+jagir
+jagirdar
+jagla
+jagless
+jagong
+jagrata
+jagua
+jaguar
+jaguarete
+Jahve
+Jahvist
+Jahvistic
+jail
+jailage
+jailbird
+jaildom
+jailer
+jaileress
+jailering
+jailership
+jailhouse
+jailish
+jailkeeper
+jaillike
+jailmate
+jailward
+jailyard
+Jaime
+Jain
+Jaina
+Jainism
+Jainist
+Jaipuri
+jajman
+Jake
+jake
+jakes
+jako
+Jakob
+Jakun
+Jalalaean
+jalap
+jalapa
+jalapin
+jalkar
+jalloped
+jalopy
+jalouse
+jalousie
+jalousied
+jalpaite
+Jam
+jam
+jama
+Jamaica
+Jamaican
+jaman
+jamb
+jambalaya
+jambeau
+jambo
+jambolan
+jambone
+jambool
+jamboree
+Jambos
+jambosa
+jambstone
+jamdani
+James
+Jamesian
+Jamesina
+jamesonite
+jami
+Jamie
+jamlike
+jammedness
+jammer
+jammy
+Jamnia
+jampan
+jampani
+jamrosade
+jamwood
+Jan
+janapa
+janapan
+Jane
+jane
+Janet
+jangada
+Janghey
+jangkar
+jangle
+jangler
+jangly
+Janice
+janiceps
+Janiculan
+Janiculum
+Janiform
+janissary
+janitor
+janitorial
+janitorship
+janitress
+janitrix
+Janizarian
+Janizary
+jank
+janker
+jann
+jannock
+Janos
+Jansenism
+Jansenist
+Jansenistic
+Jansenistical
+Jansenize
+Janthina
+Janthinidae
+jantu
+janua
+Januarius
+January
+Janus
+Januslike
+jaob
+Jap
+jap
+japaconine
+japaconitine
+Japan
+japan
+Japanee
+Japanese
+Japanesque
+Japanesquely
+Japanesquery
+Japanesy
+Japanicize
+Japanism
+Japanization
+Japanize
+japanned
+Japanner
+japanner
+japannery
+Japannish
+Japanolatry
+Japanologist
+Japanology
+Japanophile
+Japanophobe
+Japanophobia
+jape
+japer
+japery
+Japetus
+Japheth
+Japhetic
+Japhetide
+Japhetite
+japing
+japingly
+japish
+japishly
+japishness
+Japonic
+japonica
+Japonically
+Japonicize
+Japonism
+Japonize
+Japonizer
+Japygidae
+japygoid
+Japyx
+Jaqueline
+Jaquesian
+jaquima
+jar
+jara
+jaragua
+jararaca
+jararacussu
+jarbird
+jarble
+jarbot
+jardiniere
+Jared
+jarfly
+jarful
+jarg
+jargon
+jargonal
+jargoneer
+jargonelle
+jargoner
+jargonesque
+jargonic
+jargonish
+jargonist
+jargonistic
+jargonium
+jargonization
+jargonize
+jarkman
+Jarl
+jarl
+jarldom
+jarless
+jarlship
+Jarmo
+jarnut
+jarool
+jarosite
+jarra
+jarrah
+jarring
+jarringly
+jarringness
+jarry
+jarvey
+Jarvis
+jasey
+jaseyed
+Jasione
+Jasminaceae
+jasmine
+jasmined
+jasminewood
+Jasminum
+jasmone
+Jason
+jaspachate
+jaspagate
+Jasper
+jasper
+jasperated
+jaspered
+jasperize
+jasperoid
+jaspery
+jaspidean
+jaspideous
+jaspilite
+jaspis
+jaspoid
+jasponyx
+jaspopal
+jass
+jassid
+Jassidae
+jassoid
+Jat
+jatamansi
+Jateorhiza
+jateorhizine
+jatha
+jati
+Jatki
+Jatni
+jato
+Jatropha
+jatrophic
+jatrorrhizine
+Jatulian
+jaudie
+jauk
+jaun
+jaunce
+jaunder
+jaundice
+jaundiceroot
+jaunt
+jauntie
+jauntily
+jauntiness
+jauntingly
+jaunty
+jaup
+Java
+Javahai
+javali
+Javan
+Javanee
+Javanese
+javelin
+javelina
+javeline
+javelineer
+javer
+Javitero
+jaw
+jawab
+jawbation
+jawbone
+jawbreaker
+jawbreaking
+jawbreakingly
+jawed
+jawfall
+jawfallen
+jawfish
+jawfoot
+jawfooted
+jawless
+jawsmith
+jawy
+Jay
+jay
+Jayant
+Jayesh
+jayhawk
+jayhawker
+jaypie
+jaywalk
+jaywalker
+jazerant
+Jazyges
+jazz
+jazzer
+jazzily
+jazziness
+jazzy
+jealous
+jealously
+jealousness
+jealousy
+Jeames
+Jean
+jean
+Jean-Christophe
+Jean-Pierre
+Jeanette
+Jeanie
+Jeanne
+Jeannette
+Jeannie
+Jeanpaulia
+jeans
+Jeany
+Jebus
+Jebusi
+Jebusite
+Jebusitic
+Jebusitical
+Jebusitish
+jecoral
+jecorin
+jecorize
+jed
+jedcock
+jedding
+jeddock
+jeel
+jeep
+jeer
+jeerer
+jeering
+jeeringly
+jeerproof
+jeery
+jeewhillijers
+jeewhillikens
+Jef
+Jeff
+jeff
+jefferisite
+Jeffersonia
+Jeffersonian
+Jeffersonianism
+jeffersonite
+Jeffery
+Jeffie
+Jeffrey
+Jehovah
+Jehovic
+Jehovism
+Jehovist
+Jehovistic
+jehu
+jehup
+jejunal
+jejunator
+jejune
+jejunely
+jejuneness
+jejunitis
+jejunity
+jejunoduodenal
+jejunoileitis
+jejunostomy
+jejunotomy
+jejunum
+jelab
+jelerang
+jelick
+jell
+jellica
+jellico
+jellied
+jelliedness
+jellification
+jellify
+jellily
+jelloid
+jelly
+jellydom
+jellyfish
+jellyleaf
+jellylike
+Jelske
+jelutong
+Jem
+jemadar
+Jemez
+Jemima
+jemmily
+jemminess
+Jemmy
+jemmy
+Jenine
+jenkin
+jenna
+jennerization
+jennerize
+jennet
+jenneting
+Jennie
+jennier
+Jennifer
+Jenny
+jenny
+Jenson
+jentacular
+jeofail
+jeopard
+jeoparder
+jeopardize
+jeopardous
+jeopardously
+jeopardousness
+jeopardy
+jequirity
+Jerahmeel
+Jerahmeelites
+Jerald
+jerboa
+jereed
+jeremejevite
+jeremiad
+Jeremiah
+Jeremian
+Jeremianic
+Jeremias
+Jeremy
+jerez
+jerib
+jerk
+jerker
+jerkily
+jerkin
+jerkined
+jerkiness
+jerkingly
+jerkish
+jerksome
+jerkwater
+jerky
+jerl
+jerm
+jermonal
+Jeroboam
+Jerome
+Jeromian
+Jeronymite
+jerque
+jerquer
+Jerrie
+Jerry
+jerry
+jerryism
+Jersey
+jersey
+Jerseyan
+jerseyed
+Jerseyite
+Jerseyman
+jert
+Jerusalem
+jervia
+jervina
+jervine
+Jesper
+Jess
+jess
+jessakeed
+jessamine
+jessamy
+jessant
+Jesse
+Jessean
+jessed
+Jessica
+Jessie
+jessur
+jest
+jestbook
+jestee
+jester
+jestful
+jesting
+jestingly
+jestingstock
+jestmonger
+jestproof
+jestwise
+jestword
+Jesu
+Jesuate
+Jesuit
+Jesuited
+Jesuitess
+Jesuitic
+Jesuitical
+Jesuitically
+Jesuitish
+Jesuitism
+Jesuitist
+Jesuitize
+Jesuitocracy
+Jesuitry
+Jesus
+jet
+jetbead
+jete
+Jethro
+Jethronian
+jetsam
+jettage
+jetted
+jetter
+jettied
+jettiness
+jettingly
+jettison
+jetton
+jetty
+jettyhead
+jettywise
+jetware
+Jew
+jewbird
+jewbush
+Jewdom
+jewel
+jeweler
+jewelhouse
+jeweling
+jewelless
+jewellike
+jewelry
+jewelsmith
+jewelweed
+jewely
+Jewess
+jewfish
+Jewhood
+Jewish
+Jewishly
+Jewishness
+Jewism
+Jewless
+Jewlike
+Jewling
+Jewry
+Jewship
+Jewstone
+Jewy
+jezail
+Jezebel
+Jezebelian
+Jezebelish
+jezekite
+jeziah
+Jezreelite
+jharal
+jheel
+jhool
+jhow
+Jhuria
+Ji
+Jianyun
+jib
+jibbah
+jibber
+jibbings
+jibby
+jibe
+jibhead
+jibi
+jibman
+jiboa
+jibstay
+jicama
+Jicaque
+Jicaquean
+jicara
+Jicarilla
+jiff
+jiffle
+jiffy
+jig
+jigamaree
+jigger
+jiggerer
+jiggerman
+jiggers
+jigget
+jiggety
+jigginess
+jiggish
+jiggle
+jiggly
+jiggumbob
+jiggy
+jiglike
+jigman
+jihad
+jikungu
+Jill
+jillet
+jillflirt
+jilt
+jiltee
+jilter
+jiltish
+Jim
+jimbang
+jimberjaw
+jimberjawed
+jimjam
+Jimmy
+jimmy
+jimp
+jimply
+jimpness
+jimpricute
+jimsedge
+Jin
+jina
+jincamas
+Jincan
+Jinchao
+jing
+jingal
+Jingbai
+jingbang
+jingle
+jingled
+jinglejangle
+jingler
+jinglet
+jingling
+jinglingly
+jingly
+jingo
+jingodom
+jingoish
+jingoism
+jingoist
+jingoistic
+jinja
+jinjili
+jink
+jinker
+jinket
+jinkle
+jinks
+jinn
+jinnestan
+jinni
+jinniwink
+jinniyeh
+Jinny
+jinny
+jinriki
+jinrikiman
+jinrikisha
+jinshang
+jinx
+jipijapa
+jipper
+jiqui
+jirble
+jirga
+Jiri
+jirkinet
+Jisheng
+Jitendra
+jiti
+jitneur
+jitneuse
+jitney
+jitneyman
+jitro
+jitter
+jitterbug
+jitters
+jittery
+jiva
+Jivaran
+Jivaro
+Jivaroan
+jive
+jixie
+Jo
+jo
+Joachim
+Joachimite
+Joan
+Joanna
+Joanne
+Joannite
+joaquinite
+Job
+job
+jobade
+jobarbe
+jobation
+jobber
+jobbernowl
+jobbernowlism
+jobbery
+jobbet
+jobbing
+jobbish
+jobble
+jobholder
+jobless
+joblessness
+jobman
+jobmaster
+jobmistress
+jobmonger
+jobo
+jobsmith
+Jocasta
+Jocelin
+Joceline
+Jocelyn
+joch
+Jochen
+Jock
+jock
+jocker
+jockey
+jockeydom
+jockeyish
+jockeyism
+jockeylike
+jockeyship
+jocko
+jockteleg
+jocoque
+jocose
+jocosely
+jocoseness
+jocoseriosity
+jocoserious
+jocosity
+jocote
+jocu
+jocular
+jocularity
+jocularly
+jocularness
+joculator
+jocum
+jocuma
+jocund
+jocundity
+jocundly
+jocundness
+jodel
+jodelr
+jodhpurs
+Jodo
+Joe
+joe
+joebush
+Joel
+joewood
+Joey
+joey
+jog
+jogger
+joggle
+joggler
+jogglety
+jogglework
+joggly
+jogtrottism
+Johan
+Johann
+Johanna
+Johannean
+Johannes
+johannes
+Johannine
+Johannisberger
+Johannist
+Johannite
+johannite
+John
+Johnadreams
+Johnathan
+Johnian
+johnin
+Johnnie
+Johnny
+johnnycake
+johnnydom
+Johnsmas
+Johnsonese
+Johnsonian
+Johnsoniana
+Johnsonianism
+Johnsonianly
+Johnsonism
+johnstrupite
+join
+joinable
+joinant
+joinder
+joiner
+joinery
+joining
+joiningly
+joint
+jointage
+jointed
+jointedly
+jointedness
+jointer
+jointing
+jointist
+jointless
+jointly
+jointress
+jointure
+jointureless
+jointuress
+jointweed
+jointworm
+jointy
+joist
+joisting
+joistless
+jojoba
+joke
+jokeless
+jokelet
+jokeproof
+joker
+jokesmith
+jokesome
+jokesomeness
+jokester
+jokingly
+jokish
+jokist
+jokul
+joky
+joll
+jolleyman
+jollier
+jollification
+jollify
+jollily
+jolliness
+jollity
+jollop
+jolloped
+jolly
+jollytail
+Joloano
+jolt
+jolter
+jolterhead
+jolterheaded
+jolterheadedness
+jolthead
+joltiness
+jolting
+joltingly
+joltless
+joltproof
+jolty
+Jon
+Jonah
+Jonahesque
+Jonahism
+Jonas
+Jonathan
+Jonathanization
+Jones
+Jonesian
+Jong
+jonglery
+jongleur
+Joni
+jonque
+jonquil
+jonquille
+Jonsonian
+Jonval
+jonvalization
+jonvalize
+jookerie
+joola
+joom
+Joon
+Jophiel
+Jordan
+jordan
+Jordanian
+jordanite
+joree
+Jorge
+Jorist
+jorum
+Jos
+Jose
+josefite
+joseite
+Joseph
+Josepha
+Josephine
+Josephinism
+josephinite
+Josephism
+Josephite
+Josh
+josh
+josher
+joshi
+Joshua
+Josiah
+josie
+Josip
+joskin
+joss
+jossakeed
+josser
+jostle
+jostlement
+jostler
+jot
+jota
+jotation
+jotisi
+Jotnian
+jotter
+jotting
+jotty
+joubarb
+Joubert
+joug
+jough
+jouk
+joukerypawkery
+joule
+joulean
+joulemeter
+jounce
+journal
+journalese
+journalish
+journalism
+journalist
+journalistic
+journalistically
+journalization
+journalize
+journalizer
+journey
+journeycake
+journeyer
+journeying
+journeyman
+journeywoman
+journeywork
+journeyworker
+jours
+joust
+jouster
+Jova
+Jove
+Jovial
+jovial
+jovialist
+jovialistic
+joviality
+jovialize
+jovially
+jovialness
+jovialty
+Jovian
+Jovianly
+Jovicentric
+Jovicentrical
+Jovicentrically
+jovilabe
+Joviniamish
+Jovinian
+Jovinianist
+Jovite
+jow
+jowar
+jowari
+jowel
+jower
+jowery
+jowl
+jowler
+jowlish
+jowlop
+jowly
+jowpy
+jowser
+jowter
+joy
+joyance
+joyancy
+joyant
+Joyce
+joyful
+joyfully
+joyfulness
+joyhop
+joyleaf
+joyless
+joylessly
+joylessness
+joylet
+joyous
+joyously
+joyousness
+joyproof
+joysome
+joyweed
+Jozy
+Ju
+Juan
+Juang
+juba
+jubate
+jubbah
+jubbe
+jube
+juberous
+jubilance
+jubilancy
+jubilant
+jubilantly
+jubilarian
+jubilate
+jubilatio
+jubilation
+jubilatory
+jubilean
+jubilee
+jubilist
+jubilization
+jubilize
+jubilus
+juck
+juckies
+Jucuna
+jucundity
+jud
+Judaeomancy
+Judaeophile
+Judaeophilism
+Judaeophobe
+Judaeophobia
+Judah
+Judahite
+Judaic
+Judaica
+Judaical
+Judaically
+Judaism
+Judaist
+Judaistic
+Judaistically
+Judaization
+Judaize
+Judaizer
+Judas
+Judaslike
+judcock
+Jude
+Judean
+judex
+Judge
+judge
+judgeable
+judgelike
+judger
+judgeship
+judgingly
+judgmatic
+judgmatical
+judgmatically
+judgment
+Judica
+judicable
+judicate
+judication
+judicative
+judicator
+judicatorial
+judicatory
+judicature
+judices
+judiciable
+judicial
+judiciality
+judicialize
+judicially
+judicialness
+judiciarily
+judiciary
+judicious
+judiciously
+judiciousness
+Judith
+judo
+Judophobism
+Judy
+Juergen
+jufti
+jug
+Juga
+jugal
+jugale
+Jugatae
+jugate
+jugated
+jugation
+juger
+jugerum
+jugful
+jugger
+Juggernaut
+juggernaut
+Juggernautish
+juggins
+juggle
+jugglement
+juggler
+jugglery
+juggling
+jugglingly
+Juglandaceae
+juglandaceous
+Juglandales
+juglandin
+Juglans
+juglone
+jugular
+Jugulares
+jugulary
+jugulate
+jugulum
+jugum
+Jugurthine
+Juha
+juice
+juiceful
+juiceless
+juicily
+juiciness
+juicy
+jujitsu
+juju
+jujube
+jujuism
+jujuist
+juke
+jukebox
+Jule
+julep
+Jules
+Juletta
+Julia
+Julian
+Juliana
+Juliane
+Julianist
+Julianto
+julid
+Julidae
+julidan
+Julie
+Julien
+julienite
+julienne
+Juliet
+Julietta
+julio
+Julius
+juloid
+Juloidea
+juloidian
+julole
+julolidin
+julolidine
+julolin
+juloline
+Julus
+July
+Julyflower
+Jumada
+Jumana
+jumart
+jumba
+jumble
+jumblement
+jumbler
+jumblingly
+jumbly
+jumbo
+jumboesque
+jumboism
+jumbuck
+jumby
+jumelle
+jument
+jumentous
+jumfru
+jumillite
+jumma
+jump
+jumpable
+jumper
+jumperism
+jumpiness
+jumpingly
+jumpness
+jumprock
+jumpseed
+jumpsome
+jumpy
+Jun
+Juncaceae
+juncaceous
+Juncaginaceae
+juncaginaceous
+juncagineous
+junciform
+juncite
+Junco
+Juncoides
+juncous
+junction
+junctional
+junctive
+juncture
+Juncus
+June
+june
+Juneberry
+Junebud
+junectomy
+Juneflower
+Jungermannia
+Jungermanniaceae
+jungermanniaceous
+Jungermanniales
+jungle
+jungled
+jungleside
+junglewards
+junglewood
+jungli
+jungly
+juniata
+junior
+juniorate
+juniority
+juniorship
+juniper
+Juniperaceae
+Juniperus
+Junius
+junk
+junkboard
+Junker
+junker
+Junkerdom
+junkerdom
+junkerish
+Junkerism
+junkerism
+junket
+junketer
+junketing
+junking
+junkman
+Juno
+Junoesque
+Junonia
+Junonian
+junt
+junta
+junto
+jupati
+jupe
+Jupiter
+jupon
+Jur
+Jura
+jural
+jurally
+jurament
+juramentado
+juramental
+juramentally
+juramentum
+Jurane
+jurant
+jurara
+Jurassic
+jurat
+juration
+jurative
+jurator
+juratorial
+juratory
+jure
+jurel
+Jurevis
+Juri
+juridic
+juridical
+juridically
+juring
+jurisconsult
+jurisdiction
+jurisdictional
+jurisdictionalism
+jurisdictionally
+jurisdictive
+jurisprudence
+jurisprudent
+jurisprudential
+jurisprudentialist
+jurisprudentially
+jurist
+juristic
+juristical
+juristically
+juror
+jurupaite
+jury
+juryless
+juryman
+jurywoman
+jusquaboutisme
+jusquaboutist
+jussel
+Jussi
+Jussiaea
+Jussiaean
+Jussieuan
+jussion
+jussive
+jussory
+just
+justen
+justice
+justicehood
+justiceless
+justicelike
+justicer
+justiceship
+justiceweed
+Justicia
+justiciability
+justiciable
+justicial
+justiciar
+justiciarship
+justiciary
+justiciaryship
+justicies
+justifiability
+justifiable
+justifiableness
+justifiably
+justification
+justificative
+justificator
+justificatory
+justifier
+justify
+justifying
+justifyingly
+Justin
+Justina
+Justine
+Justinian
+Justinianian
+Justinianist
+justly
+justment
+justness
+justo
+Justus
+jut
+Jute
+jute
+Jutic
+Jutish
+jutka
+Jutlander
+Jutlandish
+jutting
+juttingly
+jutty
+Juturna
+Juvavian
+juvenal
+Juvenalian
+juvenate
+juvenescence
+juvenescent
+juvenile
+juvenilely
+juvenileness
+juvenilify
+juvenilism
+juvenility
+juvenilize
+Juventas
+juventude
+Juverna
+juvia
+juvite
+juxtalittoral
+juxtamarine
+juxtapose
+juxtaposit
+juxtaposition
+juxtapositional
+juxtapositive
+juxtapyloric
+juxtaspinal
+juxtaterrestrial
+juxtatropical
+Juyas
+Juza
+Jwahar
+Jynginae
+jyngine
+Jynx
+jynx
+K
+k
+ka
+Kababish
+Kabaka
+kabaragoya
+Kabard
+Kabardian
+kabaya
+Kabbeljaws
+kabel
+kaberu
+kabiet
+Kabirpanthi
+Kabistan
+Kabonga
+kabuki
+Kabuli
+Kabyle
+Kachari
+Kachin
+kachin
+Kadaga
+Kadarite
+kadaya
+Kadayan
+Kaddish
+kadein
+kadikane
+kadischi
+Kadmi
+kados
+Kadu
+kaempferol
+Kaf
+Kafa
+kaferita
+Kaffir
+kaffir
+kaffiyeh
+Kaffraria
+Kaffrarian
+Kafir
+kafir
+Kafiri
+kafirin
+kafiz
+Kafka
+Kafkaesque
+kafta
+kago
+kagu
+kaha
+kahar
+kahau
+kahikatea
+kahili
+kahu
+kahuna
+kai
+Kaibab
+Kaibartha
+kaid
+kaik
+kaikara
+kaikawaka
+kail
+kailyard
+kailyarder
+kailyardism
+Kaimo
+Kainah
+kainga
+kainite
+kainsi
+kainyn
+kairine
+kairoline
+kaiser
+kaiserdom
+kaiserism
+kaisership
+kaitaka
+Kaithi
+kaiwhiria
+kaiwi
+Kaj
+Kajar
+kajawah
+kajugaru
+kaka
+Kakan
+kakapo
+kakar
+kakarali
+kakariki
+Kakatoe
+Kakatoidae
+kakawahie
+kaki
+kakidrosis
+kakistocracy
+kakkak
+kakke
+kakortokite
+kala
+kaladana
+kalamalo
+kalamansanai
+Kalamian
+Kalanchoe
+Kalandariyah
+Kalang
+Kalapooian
+kalashnikov
+kalasie
+Kaldani
+kale
+kaleidophon
+kaleidophone
+kaleidoscope
+kaleidoscopic
+kaleidoscopical
+kaleidoscopically
+Kalekah
+kalema
+Kalendae
+kalends
+kalewife
+kaleyard
+kali
+kalian
+Kaliana
+kaliborite
+kalidium
+kaliform
+kaligenous
+Kalinga
+kalinite
+kaliophilite
+kalipaya
+Kalispel
+kalium
+kallah
+kallege
+kallilite
+Kallima
+kallitype
+Kalmarian
+Kalmia
+Kalmuck
+kalo
+kalogeros
+kalokagathia
+kalon
+kalong
+kalpis
+kalsomine
+kalsominer
+kalumpang
+kalumpit
+Kalwar
+kalymmaukion
+kalymmocyte
+kamachile
+kamacite
+kamahi
+kamala
+kamaloka
+kamansi
+kamao
+Kamares
+kamarezite
+kamarupa
+kamarupic
+kamas
+Kamasin
+Kamass
+kamassi
+Kamba
+kambal
+kamboh
+Kamchadal
+Kamchatkan
+kame
+kameeldoorn
+kameelthorn
+Kamel
+kamelaukion
+kamerad
+kamias
+kamichi
+kamik
+kamikaze
+Kamiya
+kammalan
+kammererite
+kamperite
+kampong
+kamptomorph
+kan
+kana
+kanae
+kanagi
+Kanaka
+kanap
+kanara
+Kanarese
+kanari
+kanat
+Kanauji
+Kanawari
+Kanawha
+kanchil
+kande
+Kandelia
+kandol
+kaneh
+kanephore
+kanephoros
+Kaneshite
+Kanesian
+kang
+kanga
+kangani
+kangaroo
+kangarooer
+Kangli
+Kanji
+Kankanai
+kankie
+kannume
+kanoon
+Kanred
+kans
+Kansa
+Kansan
+kantele
+kanteletar
+kanten
+Kanthan
+Kantian
+Kantianism
+Kantism
+Kantist
+Kanuri
+Kanwar
+kaoliang
+kaolin
+kaolinate
+kaolinic
+kaolinite
+kaolinization
+kaolinize
+kapa
+kapai
+kapeika
+kapok
+kapp
+kappa
+kappe
+kappland
+kapur
+kaput
+Karabagh
+karagan
+Karaism
+Karaite
+Karaitism
+karaka
+Karakatchan
+Karakul
+karakul
+Karamojo
+karamu
+karaoke
+Karatas
+karate
+Karaya
+karaya
+karbi
+karch
+kareao
+kareeta
+Karel
+karela
+Karelian
+Karen
+Karharbari
+Kari
+karite
+Karl
+Karling
+Karluk
+karma
+Karmathian
+karmic
+karmouth
+karo
+kaross
+karou
+karree
+karri
+Karroo
+karroo
+karrusel
+karsha
+Karshuni
+Karst
+karst
+karstenite
+karstic
+kartel
+Karthli
+kartometer
+kartos
+Kartvel
+Kartvelian
+karwar
+Karwinskia
+karyaster
+karyenchyma
+karyochrome
+karyochylema
+karyogamic
+karyogamy
+karyokinesis
+karyokinetic
+karyologic
+karyological
+karyologically
+karyology
+karyolymph
+Karyolysidae
+karyolysis
+Karyolysus
+karyolytic
+karyomere
+karyomerite
+karyomicrosome
+karyomitoic
+karyomitome
+karyomiton
+karyomitosis
+karyomitotic
+karyon
+karyoplasm
+karyoplasma
+karyoplasmatic
+karyoplasmic
+karyopyknosis
+karyorrhexis
+karyoschisis
+karyosome
+karyotin
+karyotype
+kasa
+kasbah
+kasbeke
+kascamiol
+Kasha
+Kashan
+kasher
+kashga
+kashi
+kashima
+Kashmiri
+Kashmirian
+Kashoubish
+kashruth
+Kashube
+Kashubian
+Kashyapa
+kasida
+Kasikumuk
+Kaska
+Kaskaskia
+kasm
+kasolite
+kassabah
+Kassak
+Kassite
+kassu
+kastura
+Kasubian
+kat
+Katabanian
+katabasis
+katabatic
+katabella
+katabolic
+katabolically
+katabolism
+katabolite
+katabolize
+katabothron
+katachromasis
+katacrotic
+katacrotism
+katagenesis
+katagenetic
+katakana
+katakinesis
+katakinetic
+katakinetomer
+katakinetomeric
+katakiribori
+katalase
+katalysis
+katalyst
+katalytic
+katalyze
+katamorphism
+kataphoresis
+kataphoretic
+kataphoric
+kataphrenia
+kataplasia
+kataplectic
+kataplexy
+katar
+katastate
+katastatic
+katathermometer
+katatonia
+katatonic
+katatype
+katchung
+katcina
+Kate
+kath
+Katha
+katha
+kathal
+Katharina
+Katharine
+katharometer
+katharsis
+kathartic
+kathemoglobin
+kathenotheism
+Kathleen
+kathodic
+Kathopanishad
+Kathryn
+Kathy
+Katie
+Katik
+Katinka
+katipo
+Katipunan
+Katipuneros
+katmon
+katogle
+Katrine
+Katrinka
+katsup
+Katsuwonidae
+katuka
+Katukina
+katun
+katurai
+Katy
+katydid
+Kauravas
+kauri
+kava
+kavaic
+kavass
+Kavi
+Kaw
+kawaka
+Kawchodinne
+kawika
+Kay
+kay
+kayak
+kayaker
+Kayan
+Kayasth
+Kayastha
+kayles
+kayo
+Kayvan
+Kazak
+kazi
+kazoo
+Kazuhiro
+kea
+keach
+keacorn
+Keatsian
+keawe
+keb
+kebab
+kebbie
+kebbuck
+kechel
+keck
+keckle
+keckling
+kecksy
+kecky
+ked
+Kedar
+Kedarite
+keddah
+kedge
+kedger
+kedgeree
+kedlock
+Kedushshah
+Kee
+keech
+keek
+keeker
+keel
+keelage
+keelbill
+keelblock
+keelboat
+keelboatman
+keeled
+keeler
+keelfat
+keelhale
+keelhaul
+keelie
+keeling
+keelivine
+keelless
+keelman
+keelrake
+keelson
+keen
+keena
+keened
+keener
+keenly
+keenness
+keep
+keepable
+keeper
+keeperess
+keepering
+keeperless
+keepership
+keeping
+keepsake
+keepsaky
+keepworthy
+keerogue
+Kees
+keeshond
+keest
+keet
+keeve
+Keewatin
+kef
+keffel
+kefir
+kefiric
+Kefti
+Keftian
+Keftiu
+keg
+kegler
+kehaya
+kehillah
+kehoeite
+Keid
+keilhauite
+keita
+Keith
+keitloa
+Kekchi
+kekotene
+kekuna
+kelchin
+keld
+Kele
+kele
+kelebe
+kelectome
+keleh
+kelek
+kelep
+Kelima
+kelk
+kell
+kella
+kellion
+kellupweed
+Kelly
+kelly
+keloid
+keloidal
+kelp
+kelper
+kelpfish
+kelpie
+kelpware
+kelpwort
+kelpy
+kelt
+kelter
+Keltoi
+kelty
+Kelvin
+kelvin
+kelyphite
+Kemal
+Kemalism
+Kemalist
+kemb
+kemp
+kemperyman
+kempite
+kemple
+kempster
+kempt
+kempy
+Ken
+ken
+kenaf
+Kenai
+kenareh
+kench
+kend
+kendir
+kendyr
+Kenelm
+Kenipsim
+kenlore
+kenmark
+Kenn
+Kennebec
+kennebecker
+kennebunker
+Kennedya
+kennel
+kennelly
+kennelman
+kenner
+Kenneth
+kenning
+kenningwort
+kenno
+keno
+kenogenesis
+kenogenetic
+kenogenetically
+kenogeny
+kenosis
+kenotic
+kenoticism
+kenoticist
+kenotism
+kenotist
+kenotoxin
+kenotron
+Kenseikai
+kensington
+Kensitite
+kenspac
+kenspeck
+kenspeckle
+Kent
+kent
+kentallenite
+Kentia
+Kenticism
+Kentish
+Kentishman
+kentledge
+Kenton
+kentrogon
+kentrolite
+Kentuckian
+Kentucky
+kenyte
+kep
+kepi
+Keplerian
+kept
+Ker
+keracele
+keralite
+kerana
+keraphyllocele
+keraphyllous
+kerasin
+kerasine
+kerat
+keratalgia
+keratectasia
+keratectomy
+Keraterpeton
+keratin
+keratinization
+keratinize
+keratinoid
+keratinose
+keratinous
+keratitis
+keratoangioma
+keratocele
+keratocentesis
+keratoconjunctivitis
+keratoconus
+keratocricoid
+keratode
+keratodermia
+keratogenic
+keratogenous
+keratoglobus
+keratoglossus
+keratohelcosis
+keratohyal
+keratoid
+Keratoidea
+keratoiritis
+Keratol
+keratoleukoma
+keratolysis
+keratolytic
+keratoma
+keratomalacia
+keratome
+keratometer
+keratometry
+keratomycosis
+keratoncus
+keratonosus
+keratonyxis
+keratophyre
+keratoplastic
+keratoplasty
+keratorrhexis
+keratoscope
+keratoscopy
+keratose
+keratosis
+keratotome
+keratotomy
+keratto
+keraulophon
+keraulophone
+Keraunia
+keraunion
+keraunograph
+keraunographic
+keraunography
+keraunophone
+keraunophonic
+keraunoscopia
+keraunoscopy
+kerbstone
+kerchief
+kerchiefed
+kerchoo
+kerchug
+kerchunk
+kerectomy
+kerel
+Keres
+Keresan
+Kerewa
+kerf
+kerflap
+kerflop
+kerflummox
+Kerite
+Kermanji
+Kermanshah
+kermes
+kermesic
+kermesite
+kermis
+kern
+kernel
+kerneled
+kernelless
+kernelly
+kerner
+kernetty
+kernish
+kernite
+kernos
+kerogen
+kerosene
+kerplunk
+Kerri
+Kerria
+kerrie
+kerrikerri
+kerril
+kerrite
+Kerry
+kerry
+kersantite
+kersey
+kerseymere
+kerslam
+kerslosh
+kersmash
+kerugma
+kerwham
+kerygma
+kerygmatic
+kerykeion
+kerystic
+kerystics
+Keryx
+kesslerman
+kestrel
+ket
+keta
+ketal
+ketapang
+ketazine
+ketch
+ketchcraft
+ketchup
+ketembilla
+keten
+ketene
+ketimide
+ketimine
+ketipate
+ketipic
+keto
+ketogen
+ketogenesis
+ketogenic
+ketoheptose
+ketohexose
+ketoketene
+ketol
+ketole
+ketolysis
+ketolytic
+ketone
+ketonemia
+ketonic
+ketonimid
+ketonimide
+ketonimin
+ketonimine
+ketonization
+ketonize
+ketonuria
+ketose
+ketoside
+ketosis
+ketosuccinic
+ketoxime
+kette
+ketting
+kettle
+kettlecase
+kettledrum
+kettledrummer
+kettleful
+kettlemaker
+kettlemaking
+kettler
+ketty
+Ketu
+ketuba
+ketupa
+ketyl
+keup
+Keuper
+keurboom
+kevalin
+Kevan
+kevel
+kevelhead
+Kevin
+kevutzah
+Kevyn
+Keweenawan
+keweenawite
+kewpie
+kex
+kexy
+key
+keyage
+keyboard
+keyed
+keyhole
+keyless
+keylet
+keylock
+Keynesian
+Keynesianism
+keynote
+keynoter
+keyseater
+keyserlick
+keysmith
+keystone
+keystoned
+Keystoner
+keyway
+Kha
+khaddar
+khadi
+khagiarite
+khahoon
+khaiki
+khair
+khaja
+khajur
+khakanship
+khaki
+khakied
+Khaldian
+khalifa
+Khalifat
+Khalkha
+khalsa
+Khami
+khamsin
+Khamti
+khan
+khanate
+khanda
+khandait
+khanjar
+khanjee
+khankah
+khansamah
+khanum
+khar
+kharaj
+Kharia
+Kharijite
+Kharoshthi
+kharouba
+kharroubah
+Khartoumer
+kharua
+Kharwar
+Khasa
+Khasi
+khass
+khat
+khatib
+khatri
+Khatti
+Khattish
+Khaya
+Khazar
+Khazarian
+khediva
+khedival
+khedivate
+khedive
+khediviah
+khedivial
+khediviate
+khepesh
+Kherwari
+Kherwarian
+khet
+Khevzur
+khidmatgar
+Khila
+khilat
+khir
+khirka
+Khitan
+Khivan
+Khlysti
+Khmer
+Khoja
+khoja
+khoka
+Khokani
+Khond
+Khorassan
+khot
+Khotan
+Khotana
+Khowar
+khu
+Khuai
+khubber
+khula
+khuskhus
+Khussak
+khutbah
+khutuktu
+Khuzi
+khvat
+Khwarazmian
+kiack
+kiaki
+kialee
+kiang
+Kiangan
+kiaugh
+kibber
+kibble
+kibbler
+kibblerman
+kibe
+kibei
+kibitka
+kibitz
+kibitzer
+kiblah
+kibosh
+kiby
+kick
+kickable
+Kickapoo
+kickback
+kickee
+kicker
+kicking
+kickish
+kickless
+kickoff
+kickout
+kickseys
+kickshaw
+kickup
+Kidder
+kidder
+Kidderminster
+kiddier
+kiddish
+kiddush
+kiddushin
+kiddy
+kidhood
+kidlet
+kidling
+kidnap
+kidnapee
+kidnaper
+kidney
+kidneyroot
+kidneywort
+Kids
+kidskin
+kidsman
+kiefekil
+Kieffer
+kiekie
+kiel
+kier
+Kieran
+kieselguhr
+kieserite
+kiestless
+kieye
+Kiho
+kikar
+Kikatsik
+kikawaeo
+kike
+Kiki
+kiki
+Kikki
+Kikongo
+kiku
+kikuel
+kikumon
+Kikuyu
+kil
+kiladja
+kilah
+kilampere
+kilan
+kilbrickenite
+kildee
+kilderkin
+kileh
+kilerg
+kiley
+Kilhamite
+kilhig
+kiliare
+kilim
+kill
+killable
+killadar
+Killarney
+killas
+killcalf
+killcrop
+killcu
+killdeer
+killeekillee
+killeen
+killer
+killick
+killifish
+killing
+killingly
+killingness
+killinite
+killogie
+killweed
+killwort
+killy
+Kilmarnock
+kiln
+kilneye
+kilnhole
+kilnman
+kilnrib
+kilo
+kiloampere
+kilobar
+kilocalorie
+kilocycle
+kilodyne
+kilogauss
+kilogram
+kilojoule
+kiloliter
+kilolumen
+kilometer
+kilometrage
+kilometric
+kilometrical
+kiloparsec
+kilostere
+kiloton
+kilovar
+kilovolt
+kilowatt
+kilp
+kilt
+kilter
+kiltie
+kilting
+Kiluba
+Kim
+kim
+kimbang
+kimberlin
+kimberlite
+Kimberly
+Kimbundu
+Kimeridgian
+kimigayo
+Kimmo
+kimnel
+kimono
+kimonoed
+kin
+kina
+kinaesthesia
+kinaesthesis
+kinah
+kinase
+kinbote
+Kinch
+kinch
+kinchin
+kinchinmort
+kincob
+kind
+kindergarten
+kindergartener
+kindergartening
+kindergartner
+Kinderhook
+kindheart
+kindhearted
+kindheartedly
+kindheartedness
+kindle
+kindler
+kindlesome
+kindlily
+kindliness
+kindling
+kindly
+kindness
+kindred
+kindredless
+kindredly
+kindredness
+kindredship
+kinematic
+kinematical
+kinematically
+kinematics
+kinematograph
+kinemometer
+kineplasty
+kinepox
+kinesalgia
+kinescope
+kinesiatric
+kinesiatrics
+kinesic
+kinesics
+kinesimeter
+kinesiologic
+kinesiological
+kinesiology
+kinesiometer
+kinesis
+kinesitherapy
+kinesodic
+kinesthesia
+kinesthesis
+kinesthetic
+kinetic
+kinetical
+kinetically
+kinetics
+kinetochore
+kinetogenesis
+kinetogenetic
+kinetogenetically
+kinetogenic
+kinetogram
+kinetograph
+kinetographer
+kinetographic
+kinetography
+kinetomer
+kinetomeric
+kinetonema
+kinetonucleus
+kinetophone
+kinetophonograph
+kinetoplast
+kinetoscope
+kinetoscopic
+King
+king
+kingbird
+kingbolt
+kingcob
+kingcraft
+kingcup
+kingdom
+kingdomed
+kingdomful
+kingdomless
+kingdomship
+kingfish
+kingfisher
+kinghead
+kinghood
+kinghunter
+kingless
+kinglessness
+kinglet
+kinglihood
+kinglike
+kinglily
+kingliness
+kingling
+kingly
+kingmaker
+kingmaking
+kingpiece
+kingpin
+kingrow
+kingship
+kingsman
+Kingu
+kingweed
+kingwood
+Kinipetu
+kink
+kinkable
+kinkaider
+kinkajou
+kinkcough
+kinkhab
+kinkhost
+kinkily
+kinkiness
+kinkle
+kinkled
+kinkly
+kinksbush
+kinky
+kinless
+kinnikinnick
+kino
+kinofluous
+kinology
+kinoplasm
+kinoplasmic
+Kinorhyncha
+kinospore
+Kinosternidae
+Kinosternon
+kinotannic
+kinsfolk
+kinship
+kinsman
+kinsmanly
+kinsmanship
+kinspeople
+kinswoman
+kintar
+Kintyre
+kioea
+Kioko
+kiosk
+kiotome
+Kiowa
+Kiowan
+Kioway
+kip
+kipage
+Kipchak
+kipe
+Kiplingese
+Kiplingism
+kippeen
+kipper
+kipperer
+kippy
+kipsey
+kipskin
+Kiranti
+Kirghiz
+Kirghizean
+kiri
+Kirillitsa
+kirimon
+Kirk
+kirk
+kirker
+kirkify
+kirking
+kirkinhead
+kirklike
+kirkman
+kirktown
+kirkward
+kirkyard
+Kirman
+kirmew
+kirn
+kirombo
+kirsch
+Kirsten
+Kirsty
+kirtle
+kirtled
+Kirundi
+kirve
+kirver
+kischen
+kish
+Kishambala
+kishen
+kishon
+kishy
+kiskatom
+Kislev
+kismet
+kismetic
+kisra
+kiss
+kissability
+kissable
+kissableness
+kissage
+kissar
+kisser
+kissing
+kissingly
+kissproof
+kisswise
+kissy
+kist
+kistful
+kiswa
+Kiswahili
+Kit
+kit
+kitab
+kitabis
+Kitalpha
+Kitamat
+Kitan
+kitar
+kitcat
+kitchen
+kitchendom
+kitchener
+kitchenette
+kitchenful
+kitchenless
+kitchenmaid
+kitchenman
+kitchenry
+kitchenward
+kitchenwards
+kitchenware
+kitchenwife
+kitcheny
+kite
+kiteflier
+kiteflying
+kith
+kithe
+kithless
+kitish
+Kitkahaxki
+Kitkehahki
+kitling
+Kitlope
+Kittatinny
+kittel
+kitten
+kittendom
+kittenhearted
+kittenhood
+kittenish
+kittenishly
+kittenishness
+kittenless
+kittenship
+kitter
+kittereen
+kitthoge
+kittiwake
+kittle
+kittlepins
+kittles
+kittlish
+kittly
+kittock
+kittul
+Kitty
+kitty
+kittysol
+Kitunahan
+kiva
+kiver
+kivikivi
+kivu
+Kiwai
+Kiwanian
+Kiwanis
+kiwi
+kiwikiwi
+kiyas
+kiyi
+Kizil
+Kizilbash
+Kjeldahl
+kjeldahlization
+kjeldahlize
+klafter
+klaftern
+klam
+Klamath
+Klan
+Klanism
+Klansman
+Klanswoman
+klaprotholite
+Klaskino
+Klaudia
+Klaus
+klavern
+Klaxon
+klaxon
+Klebsiella
+kleeneboc
+Kleinian
+Kleistian
+klendusic
+klendusity
+klendusive
+klepht
+klephtic
+klephtism
+kleptic
+kleptistic
+kleptomania
+kleptomaniac
+kleptomanist
+kleptophobia
+klicket
+Klikitat
+Kling
+Klingsor
+klip
+klipbok
+klipdachs
+klipdas
+klipfish
+klippe
+klippen
+klipspringer
+klister
+klockmannite
+klom
+Klondike
+Klondiker
+klootchman
+klop
+klops
+klosh
+Kluxer
+klystron
+kmet
+knab
+knabble
+knack
+knackebrod
+knacker
+knackery
+knacky
+knag
+knagged
+knaggy
+knap
+knapbottle
+knape
+knappan
+Knapper
+knapper
+knappish
+knappishly
+knapsack
+knapsacked
+knapsacking
+knapweed
+knar
+knark
+knarred
+knarry
+Knautia
+knave
+knavery
+knaveship
+knavess
+knavish
+knavishly
+knavishness
+knawel
+knead
+kneadability
+kneadable
+kneader
+kneading
+kneadingly
+knebelite
+knee
+kneebrush
+kneecap
+kneed
+kneehole
+kneel
+kneeler
+kneelet
+kneeling
+kneelingly
+kneepad
+kneepan
+kneepiece
+kneestone
+Kneiffia
+Kneippism
+knell
+knelt
+Knesset
+knet
+knew
+knez
+knezi
+kniaz
+kniazi
+knick
+knicker
+Knickerbocker
+knickerbockered
+knickerbockers
+knickered
+knickers
+knickknack
+knickknackatory
+knickknacked
+knickknackery
+knickknacket
+knickknackish
+knickknacky
+knickpoint
+knife
+knifeboard
+knifeful
+knifeless
+knifelike
+knifeman
+knifeproof
+knifer
+knifesmith
+knifeway
+knight
+knightage
+knightess
+knighthead
+knighthood
+Knightia
+knightless
+knightlihood
+knightlike
+knightliness
+knightling
+knightly
+knightship
+knightswort
+Kniphofia
+Knisteneaux
+knit
+knitback
+knitch
+knitted
+knitter
+knitting
+knittle
+knitwear
+knitweed
+knitwork
+knived
+knivey
+knob
+knobbed
+knobber
+knobbiness
+knobble
+knobbler
+knobbly
+knobby
+knobkerrie
+knoblike
+knobstick
+knobstone
+knobular
+knobweed
+knobwood
+knock
+knockabout
+knockdown
+knockemdown
+knocker
+knocking
+knockless
+knockoff
+knockout
+knockstone
+knockup
+knoll
+knoller
+knolly
+knop
+knopite
+knopped
+knopper
+knoppy
+knopweed
+knorhaan
+Knorria
+knosp
+knosped
+Knossian
+knot
+knotberry
+knotgrass
+knothole
+knothorn
+knotless
+knotlike
+knotroot
+knotted
+knotter
+knottily
+knottiness
+knotting
+knotty
+knotweed
+knotwork
+knotwort
+knout
+know
+knowability
+knowable
+knowableness
+knowe
+knower
+knowing
+knowingly
+knowingness
+knowledge
+knowledgeable
+knowledgeableness
+knowledgeably
+knowledged
+knowledgeless
+knowledgement
+knowledging
+known
+knowperts
+Knoxian
+Knoxville
+knoxvillite
+knub
+knubbly
+knubby
+knublet
+knuckle
+knucklebone
+knuckled
+knuckler
+knuckling
+knuckly
+knuclesome
+Knudsen
+knur
+knurl
+knurled
+knurling
+knurly
+Knut
+knut
+Knute
+knutty
+knyaz
+knyazi
+Ko
+ko
+koa
+koae
+koala
+koali
+Koasati
+kob
+koban
+kobellite
+kobi
+kobird
+kobold
+kobong
+kobu
+Kobus
+Koch
+Kochab
+Kochia
+kochliarion
+koda
+Kodagu
+Kodak
+kodak
+kodaker
+kodakist
+kodakry
+Kodashim
+kodro
+kodurite
+Koeberlinia
+Koeberliniaceae
+koeberliniaceous
+koechlinite
+Koeksotenok
+koel
+Koellia
+Koelreuteria
+koenenite
+Koeri
+koff
+koft
+koftgar
+koftgari
+koggelmannetje
+Kogia
+Kohathite
+Koheleth
+kohemp
+Kohen
+Kohistani
+Kohl
+kohl
+Kohlan
+kohlrabi
+kohua
+koi
+Koiari
+Koibal
+koil
+koila
+koilanaglyphic
+koilon
+koimesis
+Koine
+koine
+koinon
+koinonia
+Koipato
+Koitapu
+kojang
+Kojiki
+kokako
+kokam
+kokan
+kokerboom
+kokil
+kokio
+koklas
+koklass
+Koko
+koko
+kokoon
+Kokoona
+kokoromiko
+kokowai
+kokra
+koksaghyz
+koku
+kokum
+kokumin
+kokumingun
+Kol
+kola
+kolach
+Kolarian
+Koldaji
+kolea
+koleroga
+kolhoz
+Koli
+kolinski
+kolinsky
+Kolis
+kolkhos
+kolkhoz
+Kolkka
+kollast
+kollaster
+koller
+kollergang
+kolo
+kolobion
+kolobus
+kolokolo
+kolsun
+koltunna
+koltunnor
+Koluschan
+Kolush
+Komati
+komatik
+kombu
+Kome
+Komi
+kominuter
+kommetje
+kommos
+komondor
+kompeni
+Komsomol
+kon
+kona
+konak
+Konariot
+Konde
+Kongo
+Kongoese
+Kongolese
+kongoni
+kongsbergite
+kongu
+Konia
+Koniaga
+Koniga
+konimeter
+koninckite
+konini
+koniology
+koniscope
+konjak
+Konkani
+Konomihu
+Konrad
+konstantin
+Konstantinos
+kontakion
+Konyak
+kooka
+kookaburra
+kookeree
+kookery
+kookri
+koolah
+kooletah
+kooliman
+koolokamba
+Koolooly
+koombar
+koomkie
+Koorg
+kootcha
+Kootenay
+kop
+Kopagmiut
+kopeck
+koph
+kopi
+koppa
+koppen
+koppite
+Koprino
+kor
+Kora
+kora
+koradji
+Korah
+Korahite
+Korahitic
+korait
+korakan
+Koran
+Korana
+Koranic
+Koranist
+korari
+Kore
+kore
+Korean
+korec
+koreci
+Koreish
+Koreishite
+korero
+Koreshan
+Koreshanity
+kori
+korimako
+korin
+Kornephorus
+kornerupine
+kornskeppa
+kornskeppur
+korntonde
+korntonder
+korntunna
+korntunnur
+Koroa
+koromika
+koromiko
+korona
+korova
+korrel
+korrigum
+korumburra
+koruna
+Korwa
+Kory
+Koryak
+korymboi
+korymbos
+korzec
+kos
+Kosalan
+Koschei
+kosher
+Kosimo
+kosin
+kosmokrator
+Koso
+kosong
+kosotoxin
+Kossaean
+Kossean
+Kosteletzkya
+koswite
+Kota
+kotal
+Kotar
+koto
+Kotoko
+kotschubeite
+kottigite
+kotuku
+kotukutuku
+kotwal
+kotwalee
+kotyle
+kotylos
+kou
+koulan
+Koungmiut
+kouza
+kovil
+Kowagmiut
+kowhai
+kowtow
+koyan
+kozo
+Kpuesi
+Kra
+kra
+kraal
+kraft
+Krag
+kragerite
+krageroite
+krait
+kraken
+krakowiak
+kral
+Krama
+krama
+Krameria
+Krameriaceae
+krameriaceous
+kran
+krantzite
+Krapina
+kras
+krasis
+kratogen
+kratogenic
+Kraunhia
+kraurite
+kraurosis
+kraurotic
+krausen
+krausite
+kraut
+kreis
+Kreistag
+kreistle
+kreittonite
+krelos
+kremersite
+kremlin
+krems
+kreng
+krennerite
+Krepi
+kreplech
+kreutzer
+kriegspiel
+krieker
+Krigia
+krimmer
+krina
+Kriophoros
+Kris
+Krishna
+Krishnaism
+Krishnaist
+Krishnaite
+Krishnaitic
+Kristen
+Kristi
+Kristian
+Kristin
+Kristinaux
+krisuvigite
+kritarchy
+Krithia
+Kriton
+kritrima
+krobyloi
+krobylos
+krocket
+krohnkite
+krome
+kromeski
+kromogram
+kromskop
+krona
+krone
+kronen
+kroner
+Kronion
+kronor
+kronur
+Kroo
+kroon
+krosa
+krouchka
+kroushka
+Kru
+Krugerism
+Krugerite
+Kruman
+krummhorn
+kryokonite
+krypsis
+kryptic
+krypticism
+kryptocyanine
+kryptol
+kryptomere
+krypton
+Krzysztof
+Kshatriya
+Kshatriyahood
+Kua
+Kuan
+kuan
+Kuar
+Kuba
+kuba
+Kubachi
+Kubanka
+kubba
+Kubera
+kubuklion
+Kuchean
+kuchen
+kudize
+kudos
+Kudrun
+kudu
+kudzu
+Kuehneola
+kuei
+Kufic
+kuge
+kugel
+Kuhnia
+Kui
+kuichua
+Kuki
+kukoline
+kukri
+kuku
+kukui
+Kukulcan
+kukupa
+Kukuruku
+kula
+kulack
+Kulah
+kulah
+kulaite
+kulak
+kulakism
+Kulanapan
+kulang
+Kuldip
+Kuli
+kulimit
+kulkarni
+kullaite
+Kullani
+kulm
+kulmet
+Kulturkampf
+Kulturkreis
+Kuman
+kumbi
+kumhar
+kumiss
+kummel
+Kumni
+kumquat
+kumrah
+Kumyk
+kunai
+Kunbi
+Kundry
+Kuneste
+kung
+kunk
+kunkur
+Kunmiut
+kunzite
+Kuomintang
+kupfernickel
+kupfferite
+kuphar
+kupper
+Kuranko
+kurbash
+kurchicine
+kurchine
+Kurd
+Kurdish
+Kurdistan
+kurgan
+Kuri
+Kurilian
+Kurku
+kurmburra
+Kurmi
+Kuroshio
+kurrajong
+Kurt
+kurtosis
+Kuruba
+Kurukh
+kuruma
+kurumaya
+Kurumba
+kurung
+kurus
+kurvey
+kurveyor
+kusa
+kusam
+Kusan
+kusha
+Kushshu
+kusimansel
+kuskite
+kuskos
+kuskus
+Kuskwogmiut
+Kustenau
+kusti
+Kusum
+kusum
+kutcha
+Kutchin
+Kutenai
+kuttab
+kuttar
+kuttaur
+kuvasz
+Kuvera
+kvass
+kvint
+kvinter
+Kwakiutl
+kwamme
+kwan
+Kwannon
+Kwapa
+kwarta
+kwarterka
+kwazoku
+kyack
+kyah
+kyar
+kyat
+kyaung
+Kybele
+Kyklopes
+Kyklops
+kyl
+Kyle
+kyle
+kylite
+kylix
+Kylo
+kymation
+kymatology
+kymbalon
+kymogram
+kymograph
+kymographic
+kynurenic
+kynurine
+kyphoscoliosis
+kyphoscoliotic
+Kyphosidae
+kyphosis
+kyphotic
+Kyrie
+kyrine
+kyschtymite
+kyte
+Kyu
+Kyung
+Kyurin
+Kyurinish
+L
+l
+la
+laager
+laang
+lab
+Laban
+labara
+labarum
+labba
+labber
+labdacism
+labdacismus
+labdanum
+labefact
+labefactation
+labefaction
+labefy
+label
+labeler
+labella
+labellate
+labeller
+labelloid
+labellum
+labia
+labial
+labialism
+labialismus
+labiality
+labialization
+labialize
+labially
+Labiatae
+labiate
+labiated
+labidophorous
+Labidura
+Labiduridae
+labiella
+labile
+lability
+labilization
+labilize
+labioalveolar
+labiocervical
+labiodental
+labioglossal
+labioglossolaryngeal
+labioglossopharyngeal
+labiograph
+labioguttural
+labiolingual
+labiomancy
+labiomental
+labionasal
+labiopalatal
+labiopalatalize
+labiopalatine
+labiopharyngeal
+labioplasty
+labiose
+labiotenaculum
+labiovelar
+labioversion
+labis
+labium
+lablab
+labor
+laborability
+laborable
+laborage
+laborant
+laboratorial
+laboratorian
+laboratory
+labordom
+labored
+laboredly
+laboredness
+laborer
+laboress
+laborhood
+laboring
+laboringly
+laborious
+laboriously
+laboriousness
+laborism
+laborist
+laborite
+laborless
+laborous
+laborously
+laborousness
+laborsaving
+laborsome
+laborsomely
+laborsomeness
+Laboulbenia
+Laboulbeniaceae
+laboulbeniaceous
+Laboulbeniales
+labour
+labra
+Labrador
+Labradorean
+labradorite
+labradoritic
+labral
+labret
+labretifery
+Labridae
+labroid
+Labroidea
+labrosaurid
+labrosauroid
+Labrosaurus
+labrose
+labrum
+Labrus
+labrusca
+labrys
+Laburnum
+labyrinth
+labyrinthal
+labyrinthally
+labyrinthian
+labyrinthibranch
+labyrinthibranchiate
+Labyrinthibranchii
+labyrinthic
+labyrinthical
+labyrinthically
+Labyrinthici
+labyrinthiform
+labyrinthine
+labyrinthitis
+Labyrinthodon
+labyrinthodont
+Labyrinthodonta
+labyrinthodontian
+labyrinthodontid
+labyrinthodontoid
+Labyrinthula
+Labyrinthulidae
+lac
+lacca
+laccaic
+laccainic
+laccase
+laccol
+laccolith
+laccolithic
+laccolitic
+lace
+lacebark
+laced
+Lacedaemonian
+laceflower
+laceleaf
+laceless
+lacelike
+lacemaker
+lacemaking
+laceman
+lacepiece
+lacepod
+lacer
+lacerability
+lacerable
+lacerant
+lacerate
+lacerated
+lacerately
+laceration
+lacerative
+Lacerta
+Lacertae
+lacertian
+Lacertid
+Lacertidae
+lacertiform
+Lacertilia
+lacertilian
+lacertiloid
+lacertine
+lacertoid
+lacertose
+lacery
+lacet
+lacewing
+lacewoman
+lacewood
+lacework
+laceworker
+laceybark
+lache
+Lachenalia
+laches
+Lachesis
+Lachnanthes
+Lachnosterna
+lachryma
+lachrymae
+lachrymaeform
+lachrymal
+lachrymally
+lachrymalness
+lachrymary
+lachrymation
+lachrymator
+lachrymatory
+lachrymiform
+lachrymist
+lachrymogenic
+lachrymonasal
+lachrymosal
+lachrymose
+lachrymosely
+lachrymosity
+lachrymous
+lachsa
+lacily
+Lacinaria
+laciness
+lacing
+lacinia
+laciniate
+laciniated
+laciniation
+laciniform
+laciniola
+laciniolate
+laciniose
+lacinula
+lacinulate
+lacinulose
+lacis
+lack
+lackadaisical
+lackadaisicality
+lackadaisically
+lackadaisicalness
+lackadaisy
+lackaday
+lacker
+lackey
+lackeydom
+lackeyed
+lackeyism
+lackeyship
+lackland
+lackluster
+lacklusterness
+lacklustrous
+lacksense
+lackwit
+lackwittedly
+lackwittedness
+lacmoid
+lacmus
+Laconian
+Laconic
+laconic
+laconica
+laconically
+laconicalness
+laconicism
+laconicum
+laconism
+laconize
+laconizer
+Lacosomatidae
+lacquer
+lacquerer
+lacquering
+lacquerist
+lacroixite
+lacrosse
+lacrosser
+lacrym
+lactagogue
+lactalbumin
+lactam
+lactamide
+lactant
+lactarene
+lactarious
+lactarium
+Lactarius
+lactary
+lactase
+lactate
+lactation
+lactational
+lacteal
+lactean
+lactenin
+lacteous
+lactesce
+lactescence
+lactescency
+lactescent
+lactic
+lacticinia
+lactid
+lactide
+lactiferous
+lactiferousness
+lactific
+lactifical
+lactification
+lactiflorous
+lactifluous
+lactiform
+lactifuge
+lactify
+lactigenic
+lactigenous
+lactigerous
+lactim
+lactimide
+lactinate
+lactivorous
+lacto
+lactobacilli
+Lactobacillus
+lactobacillus
+lactobutyrometer
+lactocele
+lactochrome
+lactocitrate
+lactodensimeter
+lactoflavin
+lactoglobulin
+lactoid
+lactol
+lactometer
+lactone
+lactonic
+lactonization
+lactonize
+lactophosphate
+lactoproteid
+lactoprotein
+lactoscope
+lactose
+lactoside
+lactosuria
+lactothermometer
+lactotoxin
+lactovegetarian
+Lactuca
+lactucarium
+lactucerin
+lactucin
+lactucol
+lactucon
+lactyl
+lacuna
+lacunae
+lacunal
+lacunar
+lacunaria
+lacunary
+lacune
+lacunose
+lacunosity
+lacunule
+lacunulose
+lacuscular
+lacustral
+lacustrian
+lacustrine
+lacwork
+lacy
+lad
+Ladakhi
+ladakin
+ladanigerous
+ladanum
+ladder
+laddered
+laddering
+ladderlike
+ladderway
+ladderwise
+laddery
+laddess
+laddie
+laddikie
+laddish
+laddock
+lade
+lademan
+laden
+lader
+ladhood
+ladies
+ladify
+Ladik
+Ladin
+lading
+Ladino
+ladkin
+ladle
+ladleful
+ladler
+ladlewood
+ladrone
+ladronism
+ladronize
+lady
+ladybird
+ladybug
+ladyclock
+ladydom
+ladyfinger
+ladyfish
+ladyfly
+ladyfy
+ladyhood
+ladyish
+ladyism
+ladykin
+ladykind
+ladyless
+ladylike
+ladylikely
+ladylikeness
+ladyling
+ladylintywhite
+ladylove
+ladyly
+ladyship
+Ladytide
+Laelia
+laemodipod
+Laemodipoda
+laemodipodan
+laemodipodiform
+laemodipodous
+laemoparalysis
+laemostenosis
+laeotropic
+laeotropism
+Laestrygones
+laet
+laeti
+laetic
+Laevigrada
+laevoduction
+laevogyrate
+laevogyre
+laevogyrous
+laevolactic
+laevorotation
+laevorotatory
+laevotartaric
+laevoversion
+lafayette
+Lafite
+lag
+lagan
+lagarto
+lagen
+lagena
+Lagenaria
+lagend
+lageniform
+lager
+Lagerstroemia
+Lagetta
+lagetto
+laggar
+laggard
+laggardism
+laggardly
+laggardness
+lagged
+laggen
+lagger
+laggin
+lagging
+laglast
+lagna
+lagniappe
+lagomorph
+Lagomorpha
+lagomorphic
+lagomorphous
+Lagomyidae
+lagonite
+lagoon
+lagoonal
+lagoonside
+lagophthalmos
+lagopode
+lagopodous
+lagopous
+Lagopus
+Lagorchestes
+lagostoma
+Lagostomus
+Lagothrix
+Lagrangian
+Lagthing
+Lagting
+Laguncularia
+Lagunero
+Lagurus
+lagwort
+Lahnda
+Lahontan
+Lahuli
+Lai
+lai
+Laibach
+laic
+laical
+laicality
+laically
+laich
+laicism
+laicity
+laicization
+laicize
+laicizer
+laid
+laigh
+lain
+laine
+laiose
+lair
+lairage
+laird
+lairdess
+lairdie
+lairdly
+lairdocracy
+lairdship
+lairless
+lairman
+lairstone
+lairy
+laitance
+laity
+Lak
+lak
+lakarpite
+lakatoi
+lake
+lakeland
+lakelander
+lakeless
+lakelet
+lakelike
+lakemanship
+laker
+lakeside
+lakeward
+lakeweed
+lakie
+laking
+lakish
+lakishness
+lakism
+lakist
+Lakota
+Lakshmi
+laky
+lalang
+lall
+Lallan
+Lalland
+lallation
+lalling
+lalo
+laloneurosis
+lalopathy
+lalophobia
+laloplegia
+lam
+lama
+lamaic
+Lamaism
+Lamaist
+Lamaistic
+Lamaite
+Lamanism
+Lamanite
+Lamano
+lamantin
+lamany
+Lamarckia
+Lamarckian
+Lamarckianism
+Lamarckism
+lamasary
+lamasery
+lamastery
+lamb
+Lamba
+lamba
+Lambadi
+lambale
+lambaste
+lambda
+lambdacism
+lambdoid
+lambdoidal
+lambeau
+lambency
+lambent
+lambently
+lamber
+Lambert
+lambert
+lambhood
+lambie
+lambiness
+lambish
+lambkill
+lambkin
+Lamblia
+lambliasis
+lamblike
+lambling
+lambly
+lamboys
+lambrequin
+lambsdown
+lambskin
+lambsuccory
+lamby
+lame
+lamedh
+lameduck
+lamel
+lamella
+lamellar
+Lamellaria
+Lamellariidae
+lamellarly
+lamellary
+lamellate
+lamellated
+lamellately
+lamellation
+lamellibranch
+Lamellibranchia
+Lamellibranchiata
+lamellibranchiate
+lamellicorn
+lamellicornate
+Lamellicornes
+Lamellicornia
+lamellicornous
+lamelliferous
+lamelliform
+lamellirostral
+lamellirostrate
+Lamellirostres
+lamelloid
+lamellose
+lamellosity
+lamellule
+lamely
+lameness
+lament
+lamentable
+lamentableness
+lamentably
+lamentation
+lamentational
+lamentatory
+lamented
+lamentedly
+lamenter
+lamentful
+lamenting
+lamentingly
+lamentive
+lamentory
+lamester
+lamestery
+lameter
+lametta
+lamia
+Lamiaceae
+lamiaceous
+lamiger
+lamiid
+Lamiidae
+Lamiides
+Lamiinae
+lamin
+lamina
+laminability
+laminable
+laminae
+laminar
+Laminaria
+Laminariaceae
+laminariaceous
+Laminariales
+laminarian
+laminarin
+laminarioid
+laminarite
+laminary
+laminate
+laminated
+lamination
+laminboard
+laminectomy
+laminiferous
+laminiform
+laminiplantar
+laminiplantation
+laminitis
+laminose
+laminous
+lamish
+Lamista
+lamiter
+Lamium
+Lammas
+lammas
+Lammastide
+lammer
+lammergeier
+lammock
+lammy
+Lamna
+lamnectomy
+lamnid
+Lamnidae
+lamnoid
+lamp
+lampad
+lampadary
+lampadedromy
+lampadephore
+lampadephoria
+lampadite
+lampas
+lampatia
+lampblack
+lamper
+lampern
+lampers
+lampflower
+lampfly
+lampful
+lamphole
+lamping
+lampion
+lampist
+lampistry
+lampless
+lamplet
+lamplight
+lamplighted
+lamplighter
+lamplit
+lampmaker
+lampmaking
+lampman
+Lampong
+lampoon
+lampooner
+lampoonery
+lampoonist
+lamppost
+lamprey
+Lampridae
+lamprophony
+lamprophyre
+lamprophyric
+lamprotype
+Lampsilis
+Lampsilus
+lampstand
+lampwick
+lampyrid
+Lampyridae
+lampyrine
+Lampyris
+Lamus
+Lamut
+lamziekte
+lan
+Lana
+lanameter
+Lanao
+Lanarkia
+lanarkite
+lanas
+lanate
+lanated
+lanaz
+Lancaster
+Lancasterian
+Lancastrian
+Lance
+lance
+lanced
+lancegay
+lancelet
+lancelike
+lancely
+lanceman
+lanceolar
+lanceolate
+lanceolated
+lanceolately
+lanceolation
+lancepesade
+lancepod
+lanceproof
+lancer
+lances
+lancet
+lanceted
+lanceteer
+lancewood
+lancha
+lanciers
+lanciferous
+lanciform
+lancinate
+lancination
+land
+landamman
+landau
+landaulet
+landaulette
+landblink
+landbook
+landdrost
+landed
+lander
+landesite
+landfall
+landfast
+landflood
+landgafol
+landgravate
+landgrave
+landgraveship
+landgravess
+landgraviate
+landgravine
+landholder
+landholdership
+landholding
+landimere
+landing
+landlady
+landladydom
+landladyhood
+landladyish
+landladyship
+landless
+landlessness
+landlike
+landline
+landlock
+landlocked
+landlook
+landlooker
+landloper
+landlord
+landlordism
+landlordly
+landlordry
+landlordship
+landlouper
+landlouping
+landlubber
+landlubberish
+landlubberly
+landlubbing
+landman
+landmark
+Landmarker
+landmil
+landmonger
+landocracy
+landocrat
+Landolphia
+landolphia
+landowner
+landownership
+landowning
+landplane
+landraker
+landreeve
+landright
+landsale
+landscape
+landscapist
+landshard
+landship
+landsick
+landside
+landskip
+landslide
+landslip
+Landsmaal
+landsman
+landspout
+landspringy
+Landsting
+landstorm
+Landsturm
+Landuman
+landwaiter
+landward
+landwash
+landways
+Landwehr
+landwhin
+landwire
+landwrack
+lane
+lanete
+laneway
+laney
+langaha
+langarai
+langbanite
+langbeinite
+langca
+Langhian
+langi
+langite
+langlauf
+langlaufer
+langle
+Lango
+Langobard
+Langobardic
+langoon
+langooty
+langrage
+langsat
+Langsdorffia
+langsettle
+Langshan
+langspiel
+langsyne
+language
+languaged
+languageless
+langued
+Languedocian
+languescent
+languet
+languid
+languidly
+languidness
+languish
+languisher
+languishing
+languishingly
+languishment
+languor
+languorous
+languorously
+langur
+laniariform
+laniary
+laniate
+laniferous
+lanific
+laniflorous
+laniform
+lanigerous
+Laniidae
+laniiform
+Laniinae
+lanioid
+lanista
+Lanital
+Lanius
+lank
+lanket
+lankily
+lankiness
+lankish
+lankly
+lankness
+lanky
+lanner
+lanneret
+Lanny
+lanolin
+lanose
+lanosity
+lansat
+lansdowne
+lanseh
+lansfordite
+lansknecht
+lanson
+lansquenet
+lant
+lantaca
+Lantana
+lanterloo
+lantern
+lanternflower
+lanternist
+lanternleaf
+lanternman
+lanthana
+lanthanide
+lanthanite
+Lanthanotidae
+Lanthanotus
+lanthanum
+lanthopine
+lantum
+lanuginose
+lanuginous
+lanuginousness
+lanugo
+lanum
+Lanuvian
+lanx
+lanyard
+Lao
+Laodicean
+Laodiceanism
+Laotian
+lap
+lapacho
+lapachol
+lapactic
+Lapageria
+laparectomy
+laparocele
+laparocholecystotomy
+laparocolectomy
+laparocolostomy
+laparocolotomy
+laparocolpohysterotomy
+laparocolpotomy
+laparocystectomy
+laparocystotomy
+laparoelytrotomy
+laparoenterostomy
+laparoenterotomy
+laparogastroscopy
+laparogastrotomy
+laparohepatotomy
+laparohysterectomy
+laparohysteropexy
+laparohysterotomy
+laparoileotomy
+laparomyitis
+laparomyomectomy
+laparomyomotomy
+laparonephrectomy
+laparonephrotomy
+laparorrhaphy
+laparosalpingectomy
+laparosalpingotomy
+laparoscopy
+laparosplenectomy
+laparosplenotomy
+laparostict
+Laparosticti
+laparothoracoscopy
+laparotome
+laparotomist
+laparotomize
+laparotomy
+laparotrachelotomy
+lapboard
+lapcock
+Lapeirousia
+lapel
+lapeler
+lapelled
+lapful
+lapicide
+lapidarian
+lapidarist
+lapidary
+lapidate
+lapidation
+lapidator
+lapideon
+lapideous
+lapidescent
+lapidicolous
+lapidific
+lapidification
+lapidify
+lapidist
+lapidity
+lapidose
+lapilliform
+lapillo
+lapillus
+Lapith
+Lapithae
+Lapithaean
+Laplacian
+Lapland
+Laplander
+Laplandian
+Laplandic
+Laplandish
+lapon
+Laportea
+Lapp
+Lappa
+lappaceous
+lappage
+lapped
+lapper
+lappet
+lappeted
+Lappic
+lapping
+Lappish
+Lapponese
+Lapponian
+Lappula
+lapsability
+lapsable
+Lapsana
+lapsation
+lapse
+lapsed
+lapser
+lapsi
+lapsing
+lapsingly
+lapstone
+lapstreak
+lapstreaked
+lapstreaker
+Laputa
+Laputan
+laputically
+lapwing
+lapwork
+laquear
+laquearian
+laqueus
+Lar
+lar
+Laralia
+Laramide
+Laramie
+larboard
+larbolins
+larbowlines
+larcener
+larcenic
+larcenish
+larcenist
+larcenous
+larcenously
+larceny
+larch
+larchen
+lard
+lardacein
+lardaceous
+larder
+larderellite
+larderer
+larderful
+larderlike
+lardiform
+lardite
+Lardizabalaceae
+lardizabalaceous
+lardon
+lardworm
+lardy
+lareabell
+Larentiidae
+large
+largebrained
+largehanded
+largehearted
+largeheartedness
+largely
+largemouth
+largemouthed
+largen
+largeness
+largess
+larghetto
+largifical
+largish
+largition
+largitional
+largo
+Lari
+lari
+Laria
+lariat
+larick
+larid
+Laridae
+laridine
+larigo
+larigot
+lariid
+Lariidae
+larin
+Larinae
+larine
+larithmics
+Larix
+larixin
+lark
+larker
+larkiness
+larking
+larkingly
+larkish
+larkishness
+larklike
+larkling
+larksome
+larkspur
+larky
+larmier
+larmoyant
+Larnaudian
+larnax
+laroid
+larrigan
+larrikin
+larrikinalian
+larrikiness
+larrikinism
+larriman
+larrup
+Larry
+larry
+Lars
+larsenite
+Larunda
+Larus
+larva
+Larvacea
+larvae
+larval
+Larvalia
+larvarium
+larvate
+larve
+larvicidal
+larvicide
+larvicolous
+larviform
+larvigerous
+larvikite
+larviparous
+larviposit
+larviposition
+larvivorous
+larvule
+laryngal
+laryngalgia
+laryngeal
+laryngeally
+laryngean
+laryngeating
+laryngectomy
+laryngemphraxis
+laryngendoscope
+larynges
+laryngic
+laryngismal
+laryngismus
+laryngitic
+laryngitis
+laryngocele
+laryngocentesis
+laryngofission
+laryngofissure
+laryngograph
+laryngography
+laryngological
+laryngologist
+laryngology
+laryngometry
+laryngoparalysis
+laryngopathy
+laryngopharyngeal
+laryngopharyngitis
+laryngophony
+laryngophthisis
+laryngoplasty
+laryngoplegia
+laryngorrhagia
+laryngorrhea
+laryngoscleroma
+laryngoscope
+laryngoscopic
+laryngoscopical
+laryngoscopist
+laryngoscopy
+laryngospasm
+laryngostasis
+laryngostenosis
+laryngostomy
+laryngostroboscope
+laryngotome
+laryngotomy
+laryngotracheal
+laryngotracheitis
+laryngotracheoscopy
+laryngotracheotomy
+laryngotyphoid
+laryngovestibulitis
+larynx
+las
+lasa
+lasarwort
+lascar
+lascivious
+lasciviously
+lasciviousness
+laser
+Laserpitium
+laserwort
+lash
+lasher
+lashingly
+lashless
+lashlite
+Lasi
+lasianthous
+Lasiocampa
+lasiocampid
+Lasiocampidae
+Lasiocampoidea
+lasiocarpous
+Lasius
+lask
+lasket
+Laspeyresia
+laspring
+lasque
+lass
+lasset
+lassie
+lassiehood
+lassieish
+lassitude
+lasslorn
+lasso
+lassock
+lassoer
+last
+lastage
+laster
+lasting
+lastingly
+lastingness
+lastly
+lastness
+lastre
+lastspring
+lasty
+lat
+lata
+latah
+Latakia
+Latania
+Latax
+latch
+latcher
+latchet
+latching
+latchkey
+latchless
+latchman
+latchstring
+late
+latebra
+latebricole
+latecomer
+latecoming
+lated
+lateen
+lateener
+lately
+laten
+latence
+latency
+lateness
+latensification
+latent
+latentize
+latently
+latentness
+later
+latera
+laterad
+lateral
+lateralis
+laterality
+lateralization
+lateralize
+laterally
+Lateran
+latericumbent
+lateriflexion
+laterifloral
+lateriflorous
+laterifolious
+Laterigradae
+laterigrade
+laterinerved
+laterite
+lateritic
+lateritious
+lateriversion
+laterization
+lateroabdominal
+lateroanterior
+laterocaudal
+laterocervical
+laterodeviation
+laterodorsal
+lateroduction
+lateroflexion
+lateromarginal
+lateronuchal
+lateroposition
+lateroposterior
+lateropulsion
+laterostigmatal
+laterostigmatic
+laterotemporal
+laterotorsion
+lateroventral
+lateroversion
+latescence
+latescent
+latesome
+latest
+latewhile
+latex
+latexosis
+lath
+lathe
+lathee
+latheman
+lathen
+lather
+latherability
+latherable
+lathereeve
+latherer
+latherin
+latheron
+latherwort
+lathery
+lathesman
+lathhouse
+lathing
+Lathraea
+lathwork
+lathy
+lathyric
+lathyrism
+Lathyrus
+Latian
+latibulize
+latices
+laticiferous
+laticlave
+laticostate
+latidentate
+latifundian
+latifundium
+latigo
+Latimeria
+Latin
+Latinate
+Latiner
+Latinesque
+Latinian
+Latinic
+Latiniform
+Latinism
+latinism
+Latinist
+Latinistic
+Latinistical
+Latinitaster
+Latinity
+Latinization
+Latinize
+Latinizer
+Latinless
+Latinus
+lation
+latipennate
+latiplantar
+latirostral
+Latirostres
+latirostrous
+Latirus
+latisept
+latiseptal
+latiseptate
+latish
+latisternal
+latitancy
+latitant
+latitat
+latite
+latitude
+latitudinal
+latitudinally
+latitudinarian
+latitudinarianisn
+latitudinary
+latitudinous
+latomy
+Latona
+Latonian
+Latooka
+latrant
+latration
+latreutic
+latria
+Latrididae
+latrine
+Latris
+latro
+latrobe
+latrobite
+latrocinium
+Latrodectus
+latron
+latten
+lattener
+latter
+latterkin
+latterly
+lattermath
+lattermost
+latterness
+lattice
+latticed
+latticewise
+latticework
+latticing
+latticinio
+Latuka
+latus
+Latvian
+lauan
+laubanite
+laud
+laudability
+laudable
+laudableness
+laudably
+laudanidine
+laudanin
+laudanine
+laudanosine
+laudanum
+laudation
+laudative
+laudator
+laudatorily
+laudatory
+lauder
+Laudian
+Laudianism
+laudification
+Laudism
+Laudist
+laudist
+laugh
+laughable
+laughableness
+laughably
+laughee
+laugher
+laughful
+laughing
+laughingly
+laughingstock
+laughsome
+laughter
+laughterful
+laughterless
+laughworthy
+laughy
+lauia
+laumonite
+laumontite
+laun
+launce
+launch
+launcher
+launchful
+launchways
+laund
+launder
+launderability
+launderable
+launderer
+laundry
+laundrymaid
+laundryman
+laundryowner
+laundrywoman
+laur
+Laura
+laura
+Lauraceae
+lauraceous
+lauraldehyde
+laurate
+laurdalite
+laureate
+laureated
+laureateship
+laureation
+Laurel
+laurel
+laureled
+laurellike
+laurelship
+laurelwood
+Laurence
+Laurencia
+Laurent
+Laurentian
+Laurentide
+laureole
+Laurianne
+lauric
+Laurie
+laurin
+laurinoxylon
+laurionite
+laurite
+Laurocerasus
+laurone
+laurotetanine
+Laurus
+laurustine
+laurustinus
+laurvikite
+lauryl
+lautarite
+lautitious
+lava
+lavable
+lavabo
+lavacre
+lavage
+lavaliere
+lavalike
+Lavandula
+lavanga
+lavant
+lavaret
+Lavatera
+lavatic
+lavation
+lavational
+lavatorial
+lavatory
+lave
+laveer
+Lavehr
+lavement
+lavender
+lavenite
+laver
+Laverania
+laverock
+laverwort
+lavialite
+lavic
+Lavinia
+lavish
+lavisher
+lavishing
+lavishingly
+lavishly
+lavishment
+lavishness
+lavolta
+lavrovite
+law
+lawbook
+lawbreaker
+lawbreaking
+lawcraft
+lawful
+lawfully
+lawfulness
+lawgiver
+lawgiving
+lawing
+lawish
+lawk
+lawlants
+lawless
+lawlessly
+lawlessness
+lawlike
+lawmaker
+lawmaking
+lawman
+lawmonger
+lawn
+lawned
+lawner
+lawnlet
+lawnlike
+lawny
+lawproof
+Lawrence
+lawrencite
+Lawrie
+lawrightman
+Lawson
+Lawsoneve
+Lawsonia
+lawsonite
+lawsuit
+lawsuiting
+lawter
+Lawton
+lawyer
+lawyeress
+lawyerism
+lawyerlike
+lawyerling
+lawyerly
+lawyership
+lawyery
+lawzy
+lax
+laxate
+laxation
+laxative
+laxatively
+laxativeness
+laxiflorous
+laxifoliate
+laxifolious
+laxism
+laxist
+laxity
+laxly
+laxness
+lay
+layaway
+layback
+layboy
+layer
+layerage
+layered
+layery
+layette
+Layia
+laying
+layland
+layman
+laymanship
+layne
+layoff
+layout
+layover
+layship
+laystall
+laystow
+laywoman
+Laz
+lazar
+lazaret
+lazaretto
+Lazarist
+lazarlike
+lazarly
+lazarole
+Lazarus
+laze
+lazily
+laziness
+lazule
+lazuli
+lazuline
+lazulite
+lazulitic
+lazurite
+lazy
+lazybird
+lazybones
+lazyboots
+lazyhood
+lazyish
+lazylegs
+lazyship
+lazzarone
+lazzaroni
+Lea
+lea
+leach
+leacher
+leachman
+leachy
+Lead
+lead
+leadable
+leadableness
+leadage
+leadback
+leaded
+leaden
+leadenhearted
+leadenheartedness
+leadenly
+leadenness
+leadenpated
+leader
+leaderess
+leaderette
+leaderless
+leadership
+leadhillite
+leadin
+leadiness
+leading
+leadingly
+leadless
+leadman
+leadoff
+leadout
+leadproof
+Leads
+leadsman
+leadstone
+leadway
+leadwood
+leadwork
+leadwort
+leady
+leaf
+leafage
+leafboy
+leafcup
+leafdom
+leafed
+leafen
+leafer
+leafery
+leafgirl
+leafit
+leafless
+leaflessness
+leaflet
+leafleteer
+leaflike
+leafstalk
+leafwork
+leafy
+league
+leaguelong
+leaguer
+Leah
+leak
+leakage
+leakance
+leaker
+leakiness
+leakless
+leakproof
+leaky
+leal
+lealand
+leally
+lealness
+lealty
+leam
+leamer
+lean
+Leander
+leaner
+leaning
+leanish
+leanly
+leanness
+leant
+leap
+leapable
+leaper
+leapfrog
+leapfrogger
+leapfrogging
+leaping
+leapingly
+leapt
+Lear
+lear
+Learchus
+learn
+learnable
+learned
+learnedly
+learnedness
+learner
+learnership
+learning
+learnt
+Learoyd
+leasable
+lease
+leasehold
+leaseholder
+leaseholding
+leaseless
+leasemonger
+leaser
+leash
+leashless
+leasing
+leasow
+least
+leastways
+leastwise
+leat
+leath
+leather
+leatherback
+leatherbark
+leatherboard
+leatherbush
+leathercoat
+leathercraft
+leatherer
+Leatherette
+leatherfish
+leatherflower
+leatherhead
+leatherine
+leatheriness
+leathering
+leatherize
+leatherjacket
+leatherleaf
+leatherlike
+leathermaker
+leathermaking
+leathern
+leatherneck
+Leatheroid
+leatherroot
+leatherside
+Leatherstocking
+leatherware
+leatherwing
+leatherwood
+leatherwork
+leatherworker
+leatherworking
+leathery
+leathwake
+leatman
+leave
+leaved
+leaveless
+leavelooker
+leaven
+leavening
+leavenish
+leavenless
+leavenous
+leaver
+leaverwood
+leaves
+leaving
+leavy
+leawill
+leban
+Lebanese
+lebbek
+lebensraum
+Lebistes
+lebrancho
+lecama
+lecaniid
+Lecaniinae
+lecanine
+Lecanium
+lecanomancer
+lecanomancy
+lecanomantic
+Lecanora
+Lecanoraceae
+lecanoraceous
+lecanorine
+lecanoroid
+lecanoscopic
+lecanoscopy
+lech
+Lechea
+lecher
+lecherous
+lecherously
+lecherousness
+lechery
+lechriodont
+Lechriodonta
+lechuguilla
+lechwe
+Lecidea
+Lecideaceae
+lecideaceous
+lecideiform
+lecideine
+lecidioid
+lecithal
+lecithalbumin
+lecithality
+lecithin
+lecithinase
+lecithoblast
+lecithoprotein
+leck
+lecker
+lecontite
+lecotropal
+lectern
+lection
+lectionary
+lectisternium
+lector
+lectorate
+lectorial
+lectorship
+lectotype
+lectress
+lectrice
+lectual
+lecture
+lecturee
+lectureproof
+lecturer
+lectureship
+lecturess
+lecturette
+lecyth
+lecythid
+Lecythidaceae
+lecythidaceous
+Lecythis
+lecythoid
+lecythus
+led
+Leda
+lede
+leden
+lederite
+ledge
+ledged
+ledgeless
+ledger
+ledgerdom
+ledging
+ledgment
+ledgy
+Ledidae
+ledol
+Ledum
+Lee
+lee
+leeangle
+leeboard
+leech
+leecheater
+leecher
+leechery
+leeches
+leechkin
+leechlike
+leechwort
+leed
+leefang
+leeftail
+leek
+leekish
+leeky
+leep
+leepit
+leer
+leerily
+leeringly
+leerish
+leerness
+leeroway
+Leersia
+leery
+lees
+leet
+leetman
+leewan
+leeward
+leewardly
+leewardmost
+leewardness
+leeway
+leewill
+left
+leftish
+leftism
+leftist
+leftments
+leftmost
+leftness
+leftover
+leftward
+leftwardly
+leftwards
+leg
+legacy
+legal
+legalese
+legalism
+legalist
+legalistic
+legalistically
+legality
+legalization
+legalize
+legally
+legalness
+legantine
+legatary
+legate
+legatee
+legateship
+legatine
+legation
+legationary
+legative
+legato
+legator
+legatorial
+legend
+legenda
+legendarian
+legendary
+legendic
+legendist
+legendless
+Legendrian
+legendry
+leger
+legerdemain
+legerdemainist
+legerity
+leges
+legged
+legger
+legginess
+legging
+legginged
+leggy
+leghorn
+legibility
+legible
+legibleness
+legibly
+legific
+legion
+legionary
+legioned
+legioner
+legionnaire
+legionry
+legislate
+legislation
+legislational
+legislativ
+legislative
+legislatively
+legislator
+legislatorial
+legislatorially
+legislatorship
+legislatress
+legislature
+legist
+legit
+legitim
+legitimacy
+legitimate
+legitimately
+legitimateness
+legitimation
+legitimatist
+legitimatize
+legitimism
+legitimist
+legitimistic
+legitimity
+legitimization
+legitimize
+leglen
+legless
+leglessness
+leglet
+leglike
+legman
+legoa
+legpiece
+legpull
+legpuller
+legpulling
+legrope
+legua
+leguan
+Leguatia
+leguleian
+leguleious
+legume
+legumelin
+legumen
+legumin
+leguminiform
+Leguminosae
+leguminose
+leguminous
+Lehi
+lehr
+lehrbachite
+lehrman
+lehua
+lei
+Leibnitzian
+Leibnitzianism
+Leicester
+Leif
+Leigh
+leighton
+Leila
+leimtype
+leiocephalous
+leiocome
+leiodermatous
+leiodermia
+leiomyofibroma
+leiomyoma
+leiomyomatous
+leiomyosarcoma
+leiophyllous
+Leiophyllum
+Leiothrix
+Leiotrichan
+Leiotriches
+Leiotrichi
+Leiotrichidae
+Leiotrichinae
+leiotrichine
+leiotrichous
+leiotrichy
+leiotropic
+Leipoa
+Leishmania
+leishmaniasis
+Leisten
+leister
+leisterer
+leisurable
+leisurably
+leisure
+leisured
+leisureful
+leisureless
+leisureliness
+leisurely
+leisureness
+Leith
+leitmotiv
+Leitneria
+Leitneriaceae
+leitneriaceous
+Leitneriales
+lek
+lekach
+lekane
+lekha
+Lelia
+Lemaireocereus
+leman
+Lemanea
+Lemaneaceae
+lemel
+lemma
+lemmata
+lemming
+lemmitis
+lemmoblastic
+lemmocyte
+Lemmus
+Lemna
+Lemnaceae
+lemnaceous
+lemnad
+Lemnian
+lemniscate
+lemniscatic
+lemniscus
+lemography
+lemology
+lemon
+lemonade
+Lemonias
+Lemoniidae
+Lemoniinae
+lemonish
+lemonlike
+lemonweed
+lemonwood
+lemony
+Lemosi
+Lemovices
+lempira
+Lemuel
+lemur
+lemures
+Lemuria
+Lemurian
+lemurian
+lemurid
+Lemuridae
+lemuriform
+Lemurinae
+lemurine
+lemuroid
+Lemuroidea
+Len
+Lena
+lenad
+Lenaea
+Lenaean
+Lenaeum
+Lenaeus
+Lenape
+lenard
+Lenca
+Lencan
+lench
+lend
+lendable
+lendee
+lender
+Lendu
+lene
+length
+lengthen
+lengthener
+lengther
+lengthful
+lengthily
+lengthiness
+lengthsman
+lengthsome
+lengthsomeness
+lengthways
+lengthwise
+lengthy
+lenience
+leniency
+lenient
+leniently
+lenify
+Leninism
+Leninist
+Leninite
+lenis
+lenitic
+lenitive
+lenitively
+lenitiveness
+lenitude
+lenity
+lennilite
+Lennoaceae
+lennoaceous
+lennow
+Lenny
+leno
+Lenora
+lens
+lensed
+lensless
+lenslike
+Lent
+lent
+Lenten
+Lententide
+lenth
+lenthways
+Lentibulariaceae
+lentibulariaceous
+lenticel
+lenticellate
+lenticle
+lenticonus
+lenticula
+lenticular
+lenticulare
+lenticularis
+lenticularly
+lenticulate
+lenticulated
+lenticule
+lenticulostriate
+lenticulothalamic
+lentiform
+lentigerous
+lentiginous
+lentigo
+lentil
+Lentilla
+lentisc
+lentiscine
+lentisco
+lentiscus
+lentisk
+lentitude
+lentitudinous
+lento
+lentoid
+lentor
+lentous
+lenvoi
+lenvoy
+Lenzites
+Leo
+Leon
+Leonard
+Leonardesque
+Leonato
+leoncito
+Leonese
+leonhardite
+Leonid
+Leonine
+leonine
+leoninely
+leonines
+Leonis
+Leonist
+leonite
+Leonnoys
+Leonora
+Leonotis
+leontiasis
+Leontocebus
+leontocephalous
+Leontodon
+Leontopodium
+Leonurus
+leopard
+leoparde
+leopardess
+leopardine
+leopardite
+leopardwood
+Leopold
+Leopoldinia
+leopoldite
+Leora
+leotard
+lepa
+Lepadidae
+lepadoid
+Lepanto
+lepargylic
+Lepargyraea
+Lepas
+Lepcha
+leper
+leperdom
+lepered
+lepidene
+lepidine
+Lepidium
+lepidoblastic
+Lepidodendraceae
+lepidodendraceous
+lepidodendrid
+lepidodendroid
+Lepidodendron
+lepidoid
+Lepidoidei
+lepidolite
+lepidomelane
+Lepidophloios
+lepidophyllous
+Lepidophyllum
+lepidophyte
+lepidophytic
+lepidoporphyrin
+lepidopter
+Lepidoptera
+lepidopteral
+lepidopteran
+lepidopterid
+lepidopterist
+lepidopterological
+lepidopterologist
+lepidopterology
+lepidopteron
+lepidopterous
+Lepidosauria
+lepidosaurian
+Lepidosiren
+Lepidosirenidae
+lepidosirenoid
+lepidosis
+Lepidosperma
+Lepidospermae
+Lepidosphes
+Lepidostei
+lepidosteoid
+Lepidosteus
+Lepidostrobus
+lepidote
+Lepidotes
+lepidotic
+Lepidotus
+Lepidurus
+Lepilemur
+Lepiota
+Lepisma
+Lepismatidae
+Lepismidae
+lepismoid
+Lepisosteidae
+Lepisosteus
+lepocyte
+Lepomis
+leporid
+Leporidae
+leporide
+leporiform
+leporine
+Leporis
+Lepospondyli
+lepospondylous
+Leposternidae
+Leposternon
+lepothrix
+lepra
+Lepralia
+lepralian
+leprechaun
+lepric
+leproid
+leprologic
+leprologist
+leprology
+leproma
+lepromatous
+leprosarium
+leprose
+leprosery
+leprosied
+leprosis
+leprosity
+leprosy
+leprous
+leprously
+leprousness
+Leptamnium
+Leptandra
+leptandrin
+leptid
+Leptidae
+leptiform
+Leptilon
+leptinolite
+Leptinotarsa
+leptite
+Leptocardia
+leptocardian
+Leptocardii
+leptocentric
+leptocephalan
+leptocephali
+leptocephalia
+leptocephalic
+leptocephalid
+Leptocephalidae
+leptocephaloid
+leptocephalous
+Leptocephalus
+leptocephalus
+leptocephaly
+leptocercal
+leptochlorite
+leptochroa
+leptochrous
+leptoclase
+leptodactyl
+Leptodactylidae
+leptodactylous
+Leptodactylus
+leptodermatous
+leptodermous
+Leptodora
+Leptodoridae
+Leptogenesis
+leptokurtic
+Leptolepidae
+Leptolepis
+Leptolinae
+leptomatic
+leptome
+Leptomedusae
+leptomedusan
+leptomeningeal
+leptomeninges
+leptomeningitis
+leptomeninx
+leptometer
+leptomonad
+Leptomonas
+Lepton
+lepton
+leptonecrosis
+leptonema
+leptopellic
+Leptophis
+leptophyllous
+leptoprosope
+leptoprosopic
+leptoprosopous
+leptoprosopy
+Leptoptilus
+Leptorchis
+leptorrhin
+leptorrhine
+leptorrhinian
+leptorrhinism
+leptosome
+leptosperm
+Leptospermum
+Leptosphaeria
+Leptospira
+leptospirosis
+leptosporangiate
+Leptostraca
+leptostracan
+leptostracous
+Leptostromataceae
+Leptosyne
+leptotene
+Leptothrix
+Leptotrichia
+Leptotyphlopidae
+Leptotyphlops
+leptus
+leptynite
+Lepus
+Ler
+Lernaea
+Lernaeacea
+Lernaean
+Lernaeidae
+lernaeiform
+lernaeoid
+Lernaeoides
+lerot
+lerp
+lerret
+Lerwa
+Les
+Lesath
+Lesbia
+Lesbian
+Lesbianism
+lesche
+Lesgh
+lesion
+lesional
+lesiy
+Leskea
+Leskeaceae
+leskeaceous
+Lesleya
+Leslie
+Lespedeza
+Lesquerella
+less
+lessee
+lesseeship
+lessen
+lessener
+lesser
+lessive
+lessn
+lessness
+lesson
+lessor
+lest
+Lester
+lestiwarite
+lestobiosis
+lestobiotic
+Lestodon
+Lestosaurus
+lestrad
+Lestrigon
+Lestrigonian
+let
+letch
+letchy
+letdown
+lete
+lethal
+lethality
+lethalize
+lethally
+lethargic
+lethargical
+lethargically
+lethargicalness
+lethargize
+lethargus
+lethargy
+Lethe
+Lethean
+lethiferous
+Lethocerus
+lethologica
+Letitia
+Leto
+letoff
+Lett
+lettable
+letten
+letter
+lettered
+letterer
+letteret
+lettergram
+letterhead
+letterin
+lettering
+letterleaf
+letterless
+letterpress
+letterspace
+letterweight
+letterwood
+Lettic
+Lettice
+Lettish
+lettrin
+lettsomite
+lettuce
+Letty
+letup
+leu
+Leucadendron
+Leucadian
+leucaemia
+leucaemic
+Leucaena
+leucaethiop
+leucaethiopic
+leucaniline
+leucanthous
+leucaugite
+leucaurin
+leucemia
+leucemic
+Leucetta
+leuch
+leuchaemia
+leuchemia
+leuchtenbergite
+Leucichthys
+Leucifer
+Leuciferidae
+leucine
+Leucippus
+leucism
+leucite
+leucitic
+leucitis
+leucitite
+leucitohedron
+leucitoid
+Leuckartia
+Leuckartiidae
+leuco
+leucobasalt
+leucoblast
+leucoblastic
+Leucobryaceae
+Leucobryum
+leucocarpous
+leucochalcite
+leucocholic
+leucocholy
+leucochroic
+leucocidic
+leucocidin
+leucocism
+leucocrate
+leucocratic
+Leucocrinum
+leucocyan
+leucocytal
+leucocyte
+leucocythemia
+leucocythemic
+leucocytic
+leucocytoblast
+leucocytogenesis
+leucocytoid
+leucocytology
+leucocytolysin
+leucocytolysis
+leucocytolytic
+leucocytometer
+leucocytopenia
+leucocytopenic
+leucocytoplania
+leucocytopoiesis
+leucocytosis
+leucocytotherapy
+leucocytotic
+Leucocytozoon
+leucoderma
+leucodermatous
+leucodermic
+leucoencephalitis
+leucogenic
+leucoid
+leucoindigo
+leucoindigotin
+Leucojaceae
+Leucojum
+leucolytic
+leucoma
+leucomaine
+leucomatous
+leucomelanic
+leucomelanous
+leucon
+Leuconostoc
+leucopenia
+leucopenic
+leucophane
+leucophanite
+leucophoenicite
+leucophore
+leucophyllous
+leucophyre
+leucoplakia
+leucoplakial
+leucoplast
+leucoplastid
+leucopoiesis
+leucopoietic
+leucopyrite
+leucoquinizarin
+leucorrhea
+leucorrheal
+leucoryx
+leucosis
+Leucosolenia
+Leucosoleniidae
+leucospermous
+leucosphenite
+leucosphere
+leucospheric
+leucostasis
+Leucosticte
+leucosyenite
+leucotactic
+Leucothea
+Leucothoe
+leucotic
+leucotome
+leucotomy
+leucotoxic
+leucous
+leucoxene
+leucyl
+leud
+leuk
+leukemia
+leukemic
+leukocidic
+leukocidin
+leukosis
+leukotic
+leuma
+Leung
+lev
+Levana
+levance
+Levant
+levant
+Levanter
+levanter
+Levantine
+levator
+levee
+level
+leveler
+levelheaded
+levelheadedly
+levelheadedness
+leveling
+levelish
+levelism
+levelly
+levelman
+levelness
+lever
+leverage
+leverer
+leveret
+leverman
+levers
+leverwood
+Levi
+leviable
+leviathan
+levier
+levigable
+levigate
+levigation
+levigator
+levin
+levining
+levir
+levirate
+leviratical
+leviration
+Levis
+Levisticum
+levitant
+levitate
+levitation
+levitational
+levitative
+levitator
+Levite
+Levitical
+Leviticalism
+Leviticality
+Levitically
+Leviticalness
+Leviticism
+Leviticus
+Levitism
+levity
+levo
+levoduction
+levogyrate
+levogyre
+levogyrous
+levolactic
+levolimonene
+levorotation
+levorotatory
+levotartaric
+levoversion
+levulic
+levulin
+levulinic
+levulose
+levulosuria
+levy
+levyist
+levynite
+Lew
+lew
+Lewanna
+lewd
+lewdly
+lewdness
+Lewie
+Lewis
+lewis
+Lewisia
+Lewisian
+lewisite
+lewisson
+lewth
+Lex
+lexia
+lexical
+lexicalic
+lexicality
+lexicographer
+lexicographian
+lexicographic
+lexicographical
+lexicographically
+lexicographist
+lexicography
+lexicologic
+lexicological
+lexicologist
+lexicology
+lexicon
+lexiconist
+lexiconize
+lexigraphic
+lexigraphical
+lexigraphically
+lexigraphy
+lexiphanic
+lexiphanicism
+ley
+leyland
+leysing
+Lezghian
+lherzite
+lherzolite
+Lhota
+li
+liability
+liable
+liableness
+liaison
+liana
+liang
+liar
+liard
+Lias
+Liassic
+Liatris
+libament
+libaniferous
+libanophorous
+libanotophorous
+libant
+libate
+libation
+libationary
+libationer
+libatory
+libber
+libbet
+libbra
+Libby
+libel
+libelant
+libelee
+libeler
+libelist
+libellary
+libellate
+Libellula
+libellulid
+Libellulidae
+libelluloid
+libelous
+libelously
+Liber
+liber
+liberal
+Liberalia
+liberalism
+liberalist
+liberalistic
+liberality
+liberalization
+liberalize
+liberalizer
+liberally
+liberalness
+liberate
+liberation
+liberationism
+liberationist
+liberative
+liberator
+liberatory
+liberatress
+Liberia
+Liberian
+liberomotor
+libertarian
+libertarianism
+Libertas
+liberticidal
+liberticide
+libertinage
+libertine
+libertinism
+liberty
+libertyless
+libethenite
+libidibi
+libidinal
+libidinally
+libidinosity
+libidinous
+libidinously
+libidinousness
+libido
+Libitina
+libken
+Libocedrus
+Libra
+libra
+libral
+librarian
+librarianess
+librarianship
+librarious
+librarius
+library
+libraryless
+librate
+libration
+libratory
+libretti
+librettist
+libretto
+Librid
+libriform
+libroplast
+Libyan
+Libytheidae
+Libytheinae
+Licania
+licareol
+licca
+licensable
+license
+licensed
+licensee
+licenseless
+licenser
+licensor
+licensure
+licentiate
+licentiateship
+licentiation
+licentious
+licentiously
+licentiousness
+lich
+licham
+lichanos
+lichen
+lichenaceous
+lichened
+Lichenes
+licheniasis
+lichenic
+lichenicolous
+licheniform
+lichenin
+lichenism
+lichenist
+lichenivorous
+lichenization
+lichenize
+lichenlike
+lichenographer
+lichenographic
+lichenographical
+lichenographist
+lichenography
+lichenoid
+lichenologic
+lichenological
+lichenologist
+lichenology
+Lichenopora
+Lichenoporidae
+lichenose
+licheny
+lichi
+Lichnophora
+Lichnophoridae
+Licinian
+licit
+licitation
+licitly
+licitness
+lick
+licker
+lickerish
+lickerishly
+lickerishness
+licking
+lickpenny
+lickspit
+lickspittle
+lickspittling
+licorice
+licorn
+licorne
+lictor
+lictorian
+Licuala
+lid
+Lida
+lidded
+lidder
+Lide
+lidflower
+lidgate
+lidless
+lie
+liebenerite
+Liebfraumilch
+liebigite
+lied
+lief
+liege
+liegedom
+liegeful
+liegefully
+liegeless
+liegely
+liegeman
+lieger
+lien
+lienal
+lienculus
+lienee
+lienic
+lienitis
+lienocele
+lienogastric
+lienointestinal
+lienomalacia
+lienomedullary
+lienomyelogenous
+lienopancreatic
+lienor
+lienorenal
+lienotoxin
+lienteria
+lienteric
+lientery
+lieproof
+lieprooflier
+lieproofliest
+lier
+lierne
+lierre
+liesh
+liespfund
+lieu
+lieue
+lieutenancy
+lieutenant
+lieutenantry
+lieutenantship
+Lievaart
+lieve
+lievrite
+Lif
+life
+lifeblood
+lifeboat
+lifeboatman
+lifeday
+lifedrop
+lifeful
+lifefully
+lifefulness
+lifeguard
+lifehold
+lifeholder
+lifeless
+lifelessly
+lifelessness
+lifelet
+lifelike
+lifelikeness
+lifeline
+lifelong
+lifer
+liferent
+liferenter
+liferentrix
+liferoot
+lifesaver
+lifesaving
+lifesome
+lifesomely
+lifesomeness
+lifespring
+lifetime
+lifeward
+lifework
+lifey
+lifo
+lift
+liftable
+lifter
+lifting
+liftless
+liftman
+ligable
+ligament
+ligamental
+ligamentary
+ligamentous
+ligamentously
+ligamentum
+ligas
+ligate
+ligation
+ligator
+ligature
+ligeance
+ligger
+light
+lightable
+lightboat
+lightbrained
+lighten
+lightener
+lightening
+lighter
+lighterage
+lighterful
+lighterman
+lightface
+lightful
+lightfulness
+lighthead
+lightheaded
+lightheadedly
+lightheadedness
+lighthearted
+lightheartedly
+lightheartedness
+lighthouse
+lighthouseman
+lighting
+lightish
+lightkeeper
+lightless
+lightlessness
+lightly
+lightman
+lightmanship
+lightmouthed
+lightness
+lightning
+lightninglike
+lightningproof
+lightproof
+lightroom
+lightscot
+lightship
+lightsman
+lightsome
+lightsomely
+lightsomeness
+lighttight
+lightwards
+lightweight
+lightwood
+lightwort
+lignaloes
+lignatile
+ligne
+ligneous
+lignescent
+lignicole
+lignicoline
+lignicolous
+ligniferous
+lignification
+ligniform
+lignify
+lignin
+ligninsulphonate
+ligniperdous
+lignite
+lignitic
+lignitiferous
+lignitize
+lignivorous
+lignocellulose
+lignoceric
+lignography
+lignone
+lignose
+lignosity
+lignosulphite
+lignosulphonate
+lignum
+ligroine
+ligula
+ligular
+Ligularia
+ligulate
+ligulated
+ligule
+Liguliflorae
+liguliflorous
+liguliform
+ligulin
+liguloid
+Liguorian
+ligure
+Ligurian
+ligurite
+ligurition
+Ligusticum
+ligustrin
+Ligustrum
+Ligyda
+Ligydidae
+Lihyanite
+liin
+lija
+likability
+likable
+likableness
+like
+likelihead
+likelihood
+likeliness
+likely
+liken
+likeness
+liker
+likesome
+likeways
+likewise
+likin
+liking
+liknon
+Lila
+lilac
+lilaceous
+lilacin
+lilacky
+lilacthroat
+lilactide
+Lilaeopsis
+lile
+Liliaceae
+liliaceous
+Liliales
+Lilian
+lilied
+liliform
+Liliiflorae
+Lilith
+Lilium
+lill
+lillianite
+lillibullero
+Lilliput
+Lilliputian
+Lilliputianize
+lilt
+liltingly
+liltingness
+lily
+lilyfy
+lilyhanded
+lilylike
+lilywood
+lilywort
+lim
+Lima
+Limacea
+limacel
+limaceous
+Limacidae
+limaciform
+Limacina
+limacine
+limacinid
+Limacinidae
+limacoid
+limacon
+limaille
+liman
+limation
+Limawood
+Limax
+limb
+limbal
+limbat
+limbate
+limbation
+limbeck
+limbed
+limber
+limberham
+limberly
+limberness
+limbers
+limbic
+limbie
+limbiferous
+limbless
+limbmeal
+limbo
+limboinfantum
+limbous
+Limbu
+Limburger
+limburgite
+limbus
+limby
+lime
+limeade
+Limean
+limeberry
+limebush
+limehouse
+limekiln
+limeless
+limelight
+limelighter
+limelike
+limeman
+limen
+limequat
+limer
+Limerick
+limes
+limestone
+limetta
+limettin
+limewash
+limewater
+limewort
+limey
+Limicolae
+limicoline
+limicolous
+Limidae
+liminal
+liminary
+liminess
+liming
+limit
+limitable
+limitableness
+limital
+limitarian
+limitary
+limitate
+limitation
+limitative
+limitatively
+limited
+limitedly
+limitedness
+limiter
+limiting
+limitive
+limitless
+limitlessly
+limitlessness
+limitrophe
+limivorous
+limma
+limmer
+limmock
+limmu
+limn
+limnanth
+Limnanthaceae
+limnanthaceous
+Limnanthemum
+Limnanthes
+limner
+limnery
+limnetic
+Limnetis
+limniad
+limnimeter
+limnimetric
+limnite
+limnobiologic
+limnobiological
+limnobiologically
+limnobiology
+limnobios
+Limnobium
+Limnocnida
+limnograph
+limnologic
+limnological
+limnologically
+limnologist
+limnology
+limnometer
+limnophile
+limnophilid
+Limnophilidae
+limnophilous
+limnoplankton
+Limnorchis
+Limnoria
+Limnoriidae
+limnorioid
+Limodorum
+limoid
+limonene
+limoniad
+limonin
+limonite
+limonitic
+limonitization
+limonium
+Limosa
+limose
+Limosella
+Limosi
+limous
+limousine
+limp
+limper
+limpet
+limphault
+limpid
+limpidity
+limpidly
+limpidness
+limpily
+limpin
+limpiness
+limping
+limpingly
+limpingness
+limpish
+limpkin
+limply
+limpness
+limpsy
+limpwort
+limpy
+limsy
+limu
+limulid
+Limulidae
+limuloid
+Limuloidea
+Limulus
+limurite
+limy
+Lin
+lin
+Lina
+lina
+linable
+Linaceae
+linaceous
+linaga
+linage
+linaloa
+linalol
+linalool
+linamarin
+Linanthus
+Linaria
+linarite
+linch
+linchbolt
+linchet
+linchpin
+linchpinned
+lincloth
+Lincoln
+Lincolnian
+Lincolniana
+Lincolnlike
+linctus
+Linda
+lindackerite
+lindane
+linden
+Linder
+linder
+Lindera
+Lindleyan
+lindo
+lindoite
+Lindsay
+Lindsey
+line
+linea
+lineage
+lineaged
+lineal
+lineality
+lineally
+lineament
+lineamental
+lineamentation
+lineameter
+linear
+linearifolius
+linearity
+linearization
+linearize
+linearly
+lineate
+lineated
+lineation
+lineature
+linecut
+lined
+lineiform
+lineless
+linelet
+lineman
+linen
+Linene
+linenette
+linenize
+linenizer
+linenman
+lineocircular
+lineograph
+lineolate
+lineolated
+liner
+linesman
+Linet
+linewalker
+linework
+ling
+linga
+Lingayat
+lingberry
+lingbird
+linge
+lingel
+lingenberry
+linger
+lingerer
+lingerie
+lingo
+lingonberry
+Lingoum
+lingtow
+lingtowman
+lingua
+linguacious
+linguaciousness
+linguadental
+linguaeform
+lingual
+linguale
+linguality
+lingualize
+lingually
+linguanasal
+Linguata
+Linguatula
+Linguatulida
+Linguatulina
+linguatuline
+linguatuloid
+linguet
+linguidental
+linguiform
+linguipotence
+linguist
+linguister
+linguistic
+linguistical
+linguistically
+linguistician
+linguistics
+linguistry
+lingula
+lingulate
+lingulated
+Lingulella
+lingulid
+Lingulidae
+linguliferous
+linguliform
+linguloid
+linguodental
+linguodistal
+linguogingival
+linguopalatal
+linguopapillitis
+linguoversion
+lingwort
+lingy
+linha
+linhay
+linie
+liniment
+linin
+lininess
+lining
+linitis
+liniya
+linja
+linje
+link
+linkable
+linkage
+linkboy
+linked
+linkedness
+linker
+linking
+linkman
+links
+linksmith
+linkwork
+linky
+Linley
+linn
+Linnaea
+Linnaean
+Linnaeanism
+linnaeite
+Linne
+linnet
+lino
+linolate
+linoleic
+linolein
+linolenate
+linolenic
+linolenin
+linoleum
+linolic
+linolin
+linometer
+linon
+Linopteris
+Linos
+Linotype
+linotype
+linotyper
+linotypist
+linous
+linoxin
+linoxyn
+linpin
+Linsang
+linseed
+linsey
+linstock
+lint
+lintel
+linteled
+linteling
+linten
+linter
+lintern
+lintie
+lintless
+lintonite
+lintseed
+lintwhite
+linty
+Linum
+Linus
+linwood
+liny
+Linyphia
+Linyphiidae
+liodermia
+liomyofibroma
+liomyoma
+lion
+lioncel
+Lionel
+lionel
+lionesque
+lioness
+lionet
+lionheart
+lionhearted
+lionheartedness
+lionhood
+lionism
+lionizable
+lionization
+lionize
+lionizer
+lionlike
+lionly
+lionproof
+lionship
+Liothrix
+Liotrichi
+Liotrichidae
+liotrichine
+lip
+lipa
+lipacidemia
+lipaciduria
+Lipan
+Liparian
+liparian
+liparid
+Liparidae
+Liparididae
+Liparis
+liparite
+liparocele
+liparoid
+liparomphalus
+liparous
+lipase
+lipectomy
+lipemia
+Lipeurus
+lipide
+lipin
+lipless
+liplet
+liplike
+lipoblast
+lipoblastoma
+Lipobranchia
+lipocaic
+lipocardiac
+lipocele
+lipoceratous
+lipocere
+lipochondroma
+lipochrome
+lipochromogen
+lipoclasis
+lipoclastic
+lipocyte
+lipodystrophia
+lipodystrophy
+lipoferous
+lipofibroma
+lipogenesis
+lipogenetic
+lipogenic
+lipogenous
+lipogram
+lipogrammatic
+lipogrammatism
+lipogrammatist
+lipography
+lipohemia
+lipoid
+lipoidal
+lipoidemia
+lipoidic
+lipolysis
+lipolytic
+lipoma
+lipomata
+lipomatosis
+lipomatous
+lipometabolic
+lipometabolism
+lipomorph
+lipomyoma
+lipomyxoma
+lipopexia
+lipophagic
+lipophore
+lipopod
+Lipopoda
+lipoprotein
+liposarcoma
+liposis
+liposome
+lipostomy
+lipothymial
+lipothymic
+lipothymy
+lipotrophic
+lipotrophy
+lipotropic
+lipotropy
+lipotype
+Lipotyphla
+lipovaccine
+lipoxenous
+lipoxeny
+lipped
+lippen
+lipper
+lipperings
+Lippia
+lippiness
+lipping
+lippitude
+lippitudo
+lippy
+lipsanographer
+lipsanotheca
+lipstick
+lipuria
+lipwork
+liquable
+liquamen
+liquate
+liquation
+liquefacient
+liquefaction
+liquefactive
+liquefiable
+liquefier
+liquefy
+liquesce
+liquescence
+liquescency
+liquescent
+liqueur
+liquid
+liquidable
+Liquidambar
+liquidamber
+liquidate
+liquidation
+liquidator
+liquidatorship
+liquidity
+liquidize
+liquidizer
+liquidless
+liquidly
+liquidness
+liquidogenic
+liquidogenous
+liquidy
+liquiform
+liquor
+liquorer
+liquorish
+liquorishly
+liquorishness
+liquorist
+liquorless
+lira
+lirate
+liration
+lire
+lirella
+lirellate
+lirelliform
+lirelline
+lirellous
+Liriodendron
+liripipe
+liroconite
+lis
+Lisa
+Lisbon
+Lise
+lisere
+Lisette
+lish
+lisk
+Lisle
+lisle
+lisp
+lisper
+lispingly
+lispund
+liss
+Lissamphibia
+lissamphibian
+Lissencephala
+lissencephalic
+lissencephalous
+Lissoflagellata
+lissoflagellate
+lissom
+lissome
+lissomely
+lissomeness
+lissotrichan
+Lissotriches
+lissotrichous
+lissotrichy
+List
+list
+listable
+listed
+listedness
+listel
+listen
+listener
+listening
+lister
+Listera
+listerellosis
+Listeria
+Listerian
+Listerine
+Listerism
+Listerize
+listing
+listless
+listlessly
+listlessness
+listred
+listwork
+Lisuarte
+lit
+litaneutical
+litany
+litanywise
+litas
+litation
+litch
+litchi
+lite
+liter
+literacy
+literaily
+literal
+literalism
+literalist
+literalistic
+literality
+literalization
+literalize
+literalizer
+literally
+literalminded
+literalmindedness
+literalness
+literarian
+literariness
+literary
+literaryism
+literate
+literati
+literation
+literatist
+literato
+literator
+literature
+literatus
+literose
+literosity
+lith
+lithagogue
+lithangiuria
+lithanthrax
+litharge
+lithe
+lithectasy
+lithectomy
+lithely
+lithemia
+lithemic
+litheness
+lithesome
+lithesomeness
+lithi
+lithia
+lithiasis
+lithiastic
+lithiate
+lithic
+lithifaction
+lithification
+lithify
+lithite
+lithium
+litho
+lithobiid
+Lithobiidae
+lithobioid
+Lithobius
+Lithocarpus
+lithocenosis
+lithochemistry
+lithochromatic
+lithochromatics
+lithochromatographic
+lithochromatography
+lithochromography
+lithochromy
+lithoclase
+lithoclast
+lithoclastic
+lithoclasty
+lithoculture
+lithocyst
+lithocystotomy
+Lithodes
+lithodesma
+lithodialysis
+lithodid
+Lithodidae
+lithodomous
+Lithodomus
+lithofracteur
+lithofractor
+lithogenesis
+lithogenetic
+lithogenous
+lithogeny
+lithoglyph
+lithoglypher
+lithoglyphic
+lithoglyptic
+lithoglyptics
+lithograph
+lithographer
+lithographic
+lithographical
+lithographically
+lithographize
+lithography
+lithogravure
+lithoid
+lithoidite
+litholabe
+litholapaxy
+litholatrous
+litholatry
+lithologic
+lithological
+lithologically
+lithologist
+lithology
+litholysis
+litholyte
+litholytic
+lithomancy
+lithomarge
+lithometer
+lithonephria
+lithonephritis
+lithonephrotomy
+lithontriptic
+lithontriptist
+lithontriptor
+lithopedion
+lithopedium
+lithophagous
+lithophane
+lithophanic
+lithophany
+lithophilous
+lithophone
+lithophotography
+lithophotogravure
+lithophthisis
+lithophyl
+lithophyllous
+lithophysa
+lithophysal
+lithophyte
+lithophytic
+lithophytous
+lithopone
+lithoprint
+lithoscope
+lithosian
+lithosiid
+Lithosiidae
+Lithosiinae
+lithosis
+lithosol
+lithosperm
+lithospermon
+lithospermous
+Lithospermum
+lithosphere
+lithotint
+lithotome
+lithotomic
+lithotomical
+lithotomist
+lithotomize
+lithotomous
+lithotomy
+lithotony
+lithotresis
+lithotripsy
+lithotriptor
+lithotrite
+lithotritic
+lithotritist
+lithotrity
+lithotype
+lithotypic
+lithotypy
+lithous
+lithoxyl
+lithsman
+Lithuanian
+Lithuanic
+lithuresis
+lithuria
+lithy
+liticontestation
+litigable
+litigant
+litigate
+litigation
+litigationist
+litigator
+litigatory
+litigiosity
+litigious
+litigiously
+litigiousness
+Litiopa
+litiscontest
+litiscontestation
+litiscontestational
+litmus
+Litopterna
+Litorina
+Litorinidae
+litorinoid
+litotes
+litra
+Litsea
+litster
+litten
+litter
+litterateur
+litterer
+littermate
+littery
+little
+littleleaf
+littleneck
+littleness
+littlewale
+littling
+littlish
+littoral
+Littorella
+littress
+lituiform
+lituite
+Lituites
+Lituitidae
+Lituola
+lituoline
+lituoloid
+liturate
+liturgical
+liturgically
+liturgician
+liturgics
+liturgiological
+liturgiologist
+liturgiology
+liturgism
+liturgist
+liturgistic
+liturgistical
+liturgize
+liturgy
+litus
+lituus
+Litvak
+Lityerses
+litz
+Liukiu
+Liv
+livability
+livable
+livableness
+live
+liveborn
+lived
+livedo
+livelihood
+livelily
+liveliness
+livelong
+lively
+liven
+liveness
+liver
+liverance
+liverberry
+livered
+liverhearted
+liverheartedness
+liveried
+liverish
+liverishness
+liverleaf
+liverless
+Liverpudlian
+liverwort
+liverwurst
+livery
+liverydom
+liveryless
+liveryman
+livestock
+Livian
+livid
+lividity
+lividly
+lividness
+livier
+living
+livingless
+livingly
+livingness
+livingstoneite
+Livish
+Livistona
+Livonian
+livor
+livre
+liwan
+lixive
+lixivial
+lixiviate
+lixiviation
+lixiviator
+lixivious
+lixivium
+Liyuan
+Liz
+Liza
+lizard
+lizardtail
+Lizzie
+llama
+Llanberisslate
+Llandeilo
+Llandovery
+llano
+llautu
+Lleu
+Llew
+Lloyd
+Lludd
+llyn
+Lo
+lo
+Loa
+loa
+loach
+load
+loadage
+loaded
+loaden
+loader
+loading
+loadless
+loadpenny
+loadsome
+loadstone
+loaf
+loafer
+loaferdom
+loaferish
+loafing
+loafingly
+loaflet
+loaghtan
+loam
+loamily
+loaminess
+loaming
+loamless
+Loammi
+loamy
+loan
+loanable
+loaner
+loanin
+loanmonger
+loanword
+Loasa
+Loasaceae
+loasaceous
+loath
+loathe
+loather
+loathful
+loathfully
+loathfulness
+loathing
+loathingly
+loathliness
+loathly
+loathness
+loathsome
+loathsomely
+loathsomeness
+Loatuko
+loave
+lob
+Lobachevskian
+lobal
+Lobale
+lobar
+Lobaria
+Lobata
+Lobatae
+lobate
+lobated
+lobately
+lobation
+lobber
+lobbish
+lobby
+lobbyer
+lobbyism
+lobbyist
+lobbyman
+lobcock
+lobe
+lobectomy
+lobed
+lobefoot
+lobefooted
+lobeless
+lobelet
+Lobelia
+Lobeliaceae
+lobeliaceous
+lobelin
+lobeline
+lobellated
+lobfig
+lobiform
+lobigerous
+lobing
+lobiped
+loblolly
+lobo
+lobola
+lobopodium
+Lobosa
+lobose
+lobotomy
+lobscourse
+lobscouse
+lobscouser
+lobster
+lobstering
+lobsterish
+lobsterlike
+lobsterproof
+lobtail
+lobular
+Lobularia
+lobularly
+lobulate
+lobulated
+lobulation
+lobule
+lobulette
+lobulose
+lobulous
+lobworm
+loca
+locable
+local
+locale
+localism
+localist
+localistic
+locality
+localizable
+localization
+localize
+localizer
+locally
+localness
+locanda
+Locarnist
+Locarnite
+Locarnize
+Locarno
+locate
+location
+locational
+locative
+locator
+locellate
+locellus
+loch
+lochage
+lochan
+lochetic
+lochia
+lochial
+lochiocolpos
+lochiocyte
+lochiometra
+lochiometritis
+lochiopyra
+lochiorrhagia
+lochiorrhea
+lochioschesis
+Lochlin
+lochometritis
+lochoperitonitis
+lochopyra
+lochus
+lochy
+loci
+lociation
+lock
+lockable
+lockage
+Lockatong
+lockbox
+locked
+locker
+lockerman
+locket
+lockful
+lockhole
+Lockian
+Lockianism
+locking
+lockjaw
+lockless
+locklet
+lockmaker
+lockmaking
+lockman
+lockout
+lockpin
+Lockport
+lockram
+locksman
+locksmith
+locksmithery
+locksmithing
+lockspit
+lockup
+lockwork
+locky
+loco
+locodescriptive
+locofoco
+Locofocoism
+locoism
+locomobile
+locomobility
+locomote
+locomotility
+locomotion
+locomotive
+locomotively
+locomotiveman
+locomotiveness
+locomotivity
+locomotor
+locomotory
+locomutation
+locoweed
+Locrian
+Locrine
+loculament
+loculamentose
+loculamentous
+locular
+loculate
+loculated
+loculation
+locule
+loculicidal
+loculicidally
+loculose
+loculus
+locum
+locus
+locust
+locusta
+locustal
+locustberry
+locustelle
+locustid
+Locustidae
+locusting
+locustlike
+locution
+locutor
+locutorship
+locutory
+lod
+Loddigesia
+lode
+lodemanage
+lodesman
+lodestar
+lodestone
+lodestuff
+lodge
+lodgeable
+lodged
+lodgeful
+lodgeman
+lodgepole
+lodger
+lodgerdom
+lodging
+lodginghouse
+lodgings
+lodgment
+Lodha
+lodicule
+Lodoicea
+Lodowic
+Lodowick
+Lodur
+Loegria
+loess
+loessal
+loessial
+loessic
+loessland
+loessoid
+lof
+lofstelle
+loft
+lofter
+loftily
+loftiness
+lofting
+loftless
+loftman
+loftsman
+lofty
+log
+loganberry
+Logania
+Loganiaceae
+loganiaceous
+loganin
+logaoedic
+logarithm
+logarithmal
+logarithmetic
+logarithmetical
+logarithmetically
+logarithmic
+logarithmical
+logarithmically
+logarithmomancy
+logbook
+logcock
+loge
+logeion
+logeum
+loggat
+logged
+logger
+loggerhead
+loggerheaded
+loggia
+loggin
+logging
+loggish
+loghead
+logheaded
+logia
+logic
+logical
+logicalist
+logicality
+logicalization
+logicalize
+logically
+logicalness
+logicaster
+logician
+logicism
+logicist
+logicity
+logicize
+logicless
+logie
+login
+logion
+logistic
+logistical
+logistician
+logistics
+logium
+loglet
+loglike
+logman
+logocracy
+logodaedaly
+logogogue
+logogram
+logogrammatic
+logograph
+logographer
+logographic
+logographical
+logographically
+logography
+logogriph
+logogriphic
+logoi
+logolatry
+logology
+logomach
+logomacher
+logomachic
+logomachical
+logomachist
+logomachize
+logomachy
+logomancy
+logomania
+logomaniac
+logometer
+logometric
+logometrical
+logometrically
+logopedia
+logopedics
+logorrhea
+logos
+logothete
+logotype
+logotypy
+Logres
+Logria
+Logris
+logroll
+logroller
+logrolling
+logway
+logwise
+logwood
+logwork
+logy
+lohan
+Lohana
+Lohar
+lohoch
+loimic
+loimography
+loimology
+loin
+loincloth
+loined
+loir
+Lois
+Loiseleuria
+loiter
+loiterer
+loiteringly
+loiteringness
+loka
+lokao
+lokaose
+lokapala
+loke
+loket
+lokiec
+Lokindra
+Lokman
+Lola
+Loliginidae
+Loligo
+Lolium
+loll
+Lollard
+Lollardian
+Lollardism
+Lollardist
+Lollardize
+Lollardlike
+Lollardry
+Lollardy
+loller
+lollingite
+lollingly
+lollipop
+lollop
+lollopy
+lolly
+Lolo
+loma
+lomastome
+lomatine
+lomatinous
+Lomatium
+Lombard
+lombard
+Lombardeer
+Lombardesque
+Lombardian
+Lombardic
+lomboy
+Lombrosian
+loment
+lomentaceous
+Lomentaria
+lomentariaceous
+lomentum
+lomita
+lommock
+Lonchocarpus
+Lonchopteridae
+Londinensian
+Londoner
+Londonese
+Londonesque
+Londonian
+Londonish
+Londonism
+Londonization
+Londonize
+Londony
+Londres
+lone
+lonelihood
+lonelily
+loneliness
+lonely
+loneness
+lonesome
+lonesomely
+lonesomeness
+long
+longa
+longan
+longanimity
+longanimous
+Longaville
+longbeak
+longbeard
+longboat
+longbow
+longcloth
+longe
+longear
+longer
+longeval
+longevity
+longevous
+longfelt
+longfin
+longful
+longhair
+longhand
+longhead
+longheaded
+longheadedly
+longheadedness
+longhorn
+longicaudal
+longicaudate
+longicone
+longicorn
+Longicornia
+longilateral
+longilingual
+longiloquence
+longimanous
+longimetric
+longimetry
+longing
+longingly
+longingness
+Longinian
+longinquity
+longipennate
+longipennine
+longirostral
+longirostrate
+longirostrine
+Longirostrines
+longisection
+longish
+longitude
+longitudinal
+longitudinally
+longjaw
+longleaf
+longlegs
+longly
+longmouthed
+longness
+Longobard
+Longobardi
+Longobardian
+Longobardic
+longs
+longshanks
+longshore
+longshoreman
+longsome
+longsomely
+longsomeness
+longspun
+longspur
+longtail
+longue
+longulite
+longway
+longways
+longwise
+longwool
+longwork
+longwort
+Lonhyn
+Lonicera
+Lonk
+lonquhard
+lontar
+loo
+looby
+lood
+loof
+loofah
+loofie
+loofness
+look
+looker
+looking
+lookout
+lookum
+loom
+loomer
+loomery
+looming
+loon
+loonery
+looney
+loony
+loop
+looper
+loopful
+loophole
+looping
+loopist
+looplet
+looplike
+loopy
+loose
+loosely
+loosemouthed
+loosen
+loosener
+looseness
+looser
+loosestrife
+loosing
+loosish
+loot
+lootable
+looten
+looter
+lootie
+lootiewallah
+lootsman
+lop
+lope
+loper
+Lopezia
+lophiid
+Lophiidae
+lophine
+Lophiodon
+lophiodont
+Lophiodontidae
+lophiodontoid
+Lophiola
+Lophiomyidae
+Lophiomyinae
+Lophiomys
+lophiostomate
+lophiostomous
+lophobranch
+lophobranchiate
+Lophobranchii
+lophocalthrops
+lophocercal
+Lophocome
+Lophocomi
+Lophodermium
+lophodont
+Lophophora
+lophophoral
+lophophore
+Lophophorinae
+lophophorine
+Lophophorus
+lophophytosis
+Lophopoda
+Lophornis
+Lophortyx
+lophosteon
+lophotriaene
+lophotrichic
+lophotrichous
+Lophura
+lopolith
+loppard
+lopper
+loppet
+lopping
+loppy
+lopseed
+lopsided
+lopsidedly
+lopsidedness
+lopstick
+loquacious
+loquaciously
+loquaciousness
+loquacity
+loquat
+loquence
+loquent
+loquently
+Lora
+lora
+loral
+loran
+lorandite
+loranskite
+Loranthaceae
+loranthaceous
+Loranthus
+lorarius
+lorate
+lorcha
+Lord
+lord
+lording
+lordkin
+lordless
+lordlet
+lordlike
+lordlily
+lordliness
+lordling
+lordly
+lordolatry
+lordosis
+lordotic
+lordship
+lordwood
+lordy
+lore
+loreal
+lored
+loreless
+Loren
+Lorenzan
+lorenzenite
+Lorenzo
+Lorettine
+lorettoite
+lorgnette
+Lori
+lori
+loric
+lorica
+loricarian
+Loricariidae
+loricarioid
+Loricata
+loricate
+Loricati
+lorication
+loricoid
+Lorien
+lorikeet
+lorilet
+lorimer
+loriot
+loris
+Lorius
+lormery
+lorn
+lornness
+loro
+Lorraine
+Lorrainer
+Lorrainese
+lorriker
+lorry
+lors
+lorum
+lory
+losable
+losableness
+lose
+losel
+loselism
+losenger
+loser
+losh
+losing
+loss
+lossenite
+lossless
+lossproof
+lost
+lostling
+lostness
+Lot
+lot
+Lota
+lota
+lotase
+lote
+lotebush
+Lotharingian
+lotic
+lotiform
+lotion
+lotment
+Lotophagi
+lotophagous
+lotophagously
+lotrite
+lots
+Lotta
+Lotte
+lotter
+lottery
+Lottie
+lotto
+Lotuko
+lotus
+lotusin
+lotuslike
+Lou
+louch
+louchettes
+loud
+louden
+loudering
+loudish
+loudly
+loudmouthed
+loudness
+louey
+lough
+lougheen
+Louie
+Louiqa
+Louis
+Louisa
+Louise
+Louisiana
+Louisianian
+louisine
+louk
+Loukas
+loukoum
+loulu
+lounder
+lounderer
+lounge
+lounger
+lounging
+loungingly
+loungy
+Loup
+loup
+loupe
+lour
+lourdy
+louse
+louseberry
+lousewort
+lousily
+lousiness
+louster
+lousy
+lout
+louter
+louther
+loutish
+loutishly
+loutishness
+loutrophoros
+louty
+louvar
+louver
+louvered
+louvering
+louverwork
+Louvre
+lovability
+lovable
+lovableness
+lovably
+lovage
+love
+lovebird
+loveflower
+loveful
+lovelass
+loveless
+lovelessly
+lovelessness
+lovelihead
+lovelily
+loveliness
+loveling
+lovelock
+lovelorn
+lovelornness
+lovely
+loveman
+lovemate
+lovemonger
+loveproof
+lover
+loverdom
+lovered
+loverhood
+lovering
+loverless
+loverliness
+loverly
+lovership
+loverwise
+lovesick
+lovesickness
+lovesome
+lovesomely
+lovesomeness
+loveworth
+loveworthy
+loving
+lovingly
+lovingness
+low
+lowa
+lowan
+lowbell
+lowborn
+lowboy
+lowbred
+lowdah
+lowder
+loweite
+Lowell
+lower
+lowerable
+lowerclassman
+lowerer
+lowering
+loweringly
+loweringness
+lowermost
+lowery
+lowigite
+lowish
+lowishly
+lowishness
+lowland
+lowlander
+lowlily
+lowliness
+lowly
+lowmen
+lowmost
+lown
+lowness
+lownly
+lowth
+Lowville
+lowwood
+lowy
+lox
+loxia
+loxic
+Loxiinae
+loxoclase
+loxocosm
+loxodograph
+Loxodon
+loxodont
+Loxodonta
+loxodontous
+loxodrome
+loxodromic
+loxodromical
+loxodromically
+loxodromics
+loxodromism
+Loxolophodon
+loxolophodont
+Loxomma
+loxophthalmus
+Loxosoma
+Loxosomidae
+loxotic
+loxotomy
+loy
+loyal
+loyalism
+loyalist
+loyalize
+loyally
+loyalness
+loyalty
+Loyd
+Loyolism
+Loyolite
+lozenge
+lozenged
+lozenger
+lozengeways
+lozengewise
+lozengy
+Lu
+Luba
+lubber
+lubbercock
+Lubberland
+lubberlike
+lubberliness
+lubberly
+lube
+lubra
+lubric
+lubricant
+lubricate
+lubrication
+lubricational
+lubricative
+lubricator
+lubricatory
+lubricious
+lubricity
+lubricous
+lubrifaction
+lubrification
+lubrify
+lubritorian
+lubritorium
+Luc
+Lucan
+Lucania
+lucanid
+Lucanidae
+Lucanus
+lucarne
+Lucayan
+lucban
+Lucchese
+luce
+lucence
+lucency
+lucent
+Lucentio
+lucently
+Luceres
+lucern
+lucernal
+Lucernaria
+lucernarian
+Lucernariidae
+lucerne
+lucet
+Luchuan
+Lucia
+Lucian
+Luciana
+lucible
+lucid
+lucida
+lucidity
+lucidly
+lucidness
+lucifee
+Lucifer
+luciferase
+Luciferian
+Luciferidae
+luciferin
+luciferoid
+luciferous
+luciferously
+luciferousness
+lucific
+luciform
+lucifugal
+lucifugous
+lucigen
+Lucile
+Lucilia
+lucimeter
+Lucina
+Lucinacea
+Lucinda
+Lucinidae
+lucinoid
+Lucite
+Lucius
+lucivee
+luck
+lucken
+luckful
+luckie
+luckily
+luckiness
+luckless
+lucklessly
+lucklessness
+Lucknow
+lucky
+lucration
+lucrative
+lucratively
+lucrativeness
+lucre
+Lucrece
+Lucretia
+Lucretian
+Lucretius
+lucriferous
+lucriferousness
+lucrific
+lucrify
+Lucrine
+luctation
+luctiferous
+luctiferousness
+lucubrate
+lucubration
+lucubrator
+lucubratory
+lucule
+luculent
+luculently
+Lucullan
+lucullite
+Lucuma
+lucumia
+Lucumo
+lucumony
+Lucy
+lucy
+ludden
+Luddism
+Luddite
+Ludditism
+ludefisk
+Ludgate
+Ludgathian
+Ludgatian
+Ludian
+ludibrious
+ludibry
+ludicropathetic
+ludicroserious
+ludicrosity
+ludicrosplenetic
+ludicrous
+ludicrously
+ludicrousness
+ludification
+ludlamite
+Ludlovian
+Ludlow
+ludo
+Ludolphian
+Ludwig
+ludwigite
+lue
+Luella
+lues
+luetic
+luetically
+lufberry
+lufbery
+luff
+Luffa
+Lug
+lug
+Luganda
+luge
+luger
+luggage
+luggageless
+luggar
+lugged
+lugger
+luggie
+Luggnagg
+lugmark
+Lugnas
+lugsail
+lugsome
+lugubriosity
+lugubrious
+lugubriously
+lugubriousness
+lugworm
+luhinga
+Lui
+Luian
+Luigi
+luigino
+Luis
+Luiseno
+Luite
+lujaurite
+Lukas
+Luke
+luke
+lukely
+lukeness
+lukewarm
+lukewarmish
+lukewarmly
+lukewarmness
+lukewarmth
+Lula
+lulab
+lull
+lullaby
+luller
+Lullian
+lulliloo
+lullingly
+Lulu
+lulu
+Lum
+lum
+lumachel
+lumbaginous
+lumbago
+lumbang
+lumbar
+lumbarization
+lumbayao
+lumber
+lumberdar
+lumberdom
+lumberer
+lumbering
+lumberingly
+lumberingness
+lumberjack
+lumberless
+lumberly
+lumberman
+lumbersome
+lumberyard
+lumbocolostomy
+lumbocolotomy
+lumbocostal
+lumbodorsal
+lumbodynia
+lumbosacral
+lumbovertebral
+lumbrical
+lumbricalis
+Lumbricidae
+lumbriciform
+lumbricine
+lumbricoid
+lumbricosis
+Lumbricus
+lumbrous
+lumen
+luminaire
+Luminal
+luminal
+luminance
+luminant
+luminarious
+luminarism
+luminarist
+luminary
+luminate
+lumination
+luminative
+luminator
+lumine
+luminesce
+luminescence
+luminescent
+luminiferous
+luminificent
+luminism
+luminist
+luminologist
+luminometer
+luminosity
+luminous
+luminously
+luminousness
+lummox
+lummy
+lump
+lumper
+lumpet
+lumpfish
+lumpily
+lumpiness
+lumping
+lumpingly
+lumpish
+lumpishly
+lumpishness
+lumpkin
+lumpman
+lumpsucker
+lumpy
+luna
+lunacy
+lunambulism
+lunar
+lunare
+Lunaria
+lunarian
+lunarist
+lunarium
+lunary
+lunate
+lunatellus
+lunately
+lunatic
+lunatically
+lunation
+lunatize
+lunatum
+lunch
+luncheon
+luncheoner
+luncheonette
+luncheonless
+luncher
+lunchroom
+Lunda
+Lundinarium
+lundress
+lundyfoot
+lune
+Lunel
+lunes
+lunette
+lung
+lunge
+lunged
+lungeous
+lunger
+lungfish
+lungflower
+lungful
+lungi
+lungie
+lungis
+lungless
+lungmotor
+lungsick
+lungworm
+lungwort
+lungy
+lunicurrent
+luniform
+lunisolar
+lunistice
+lunistitial
+lunitidal
+Lunka
+lunkhead
+lunn
+lunoid
+lunt
+lunula
+lunular
+Lunularia
+lunulate
+lunulated
+lunule
+lunulet
+lunulite
+Lunulites
+Luo
+lupanarian
+lupanine
+lupe
+lupeol
+lupeose
+Lupercal
+Lupercalia
+Lupercalian
+Luperci
+lupetidine
+lupicide
+Lupid
+lupiform
+lupinaster
+lupine
+lupinin
+lupinine
+lupinosis
+lupinous
+Lupinus
+lupis
+lupoid
+lupous
+lupulic
+lupulin
+lupuline
+lupulinic
+lupulinous
+lupulinum
+lupulus
+lupus
+lupuserythematosus
+Lur
+lura
+lural
+lurch
+lurcher
+lurchingfully
+lurchingly
+lurchline
+lurdan
+lurdanism
+lure
+lureful
+lurement
+lurer
+luresome
+lurg
+lurgworm
+Luri
+lurid
+luridity
+luridly
+luridness
+luringly
+lurk
+lurker
+lurkingly
+lurkingness
+lurky
+lurrier
+lurry
+Lusatian
+Luscinia
+luscious
+lusciously
+lusciousness
+lush
+Lushai
+lushburg
+Lushei
+lusher
+lushly
+lushness
+lushy
+Lusiad
+Lusian
+Lusitania
+Lusitanian
+lusk
+lusky
+lusory
+lust
+luster
+lusterer
+lusterless
+lusterware
+lustful
+lustfully
+lustfulness
+lustihead
+lustily
+lustiness
+lustless
+lustra
+lustral
+lustrant
+lustrate
+lustration
+lustrative
+lustratory
+lustreless
+lustrical
+lustrification
+lustrify
+lustrine
+lustring
+lustrous
+lustrously
+lustrousness
+lustrum
+lusty
+lut
+lutaceous
+lutanist
+lutany
+Lutao
+lutation
+Lutayo
+lute
+luteal
+lutecia
+lutecium
+lutein
+luteinization
+luteinize
+lutelet
+lutemaker
+lutemaking
+luteo
+luteocobaltic
+luteofulvous
+luteofuscescent
+luteofuscous
+luteolin
+luteolous
+luteoma
+luteorufescent
+luteous
+luteovirescent
+luter
+lutescent
+lutestring
+Lutetia
+Lutetian
+lutetium
+luteway
+lutfisk
+Luther
+Lutheran
+Lutheranic
+Lutheranism
+Lutheranize
+Lutheranizer
+Lutherism
+Lutherist
+luthern
+luthier
+lutianid
+Lutianidae
+lutianoid
+Lutianus
+lutidine
+lutidinic
+luting
+lutist
+Lutjanidae
+Lutjanus
+lutose
+Lutra
+Lutraria
+Lutreola
+lutrin
+Lutrinae
+lutrine
+lutulence
+lutulent
+Luvaridae
+Luvian
+Luvish
+Luwian
+lux
+luxate
+luxation
+luxe
+Luxemburger
+Luxemburgian
+luxulianite
+luxuriance
+luxuriancy
+luxuriant
+luxuriantly
+luxuriantness
+luxuriate
+luxuriation
+luxurious
+luxuriously
+luxuriousness
+luxurist
+luxury
+luxus
+Luzula
+Lwo
+ly
+lyam
+lyard
+Lyas
+Lycaena
+lycaenid
+Lycaenidae
+lycanthrope
+lycanthropia
+lycanthropic
+lycanthropist
+lycanthropize
+lycanthropous
+lycanthropy
+lyceal
+lyceum
+Lychnic
+Lychnis
+lychnomancy
+lychnoscope
+lychnoscopic
+Lycian
+lycid
+Lycidae
+Lycium
+Lycodes
+Lycodidae
+lycodoid
+lycopene
+Lycoperdaceae
+lycoperdaceous
+Lycoperdales
+lycoperdoid
+Lycoperdon
+lycoperdon
+Lycopersicon
+lycopin
+lycopod
+lycopode
+Lycopodiaceae
+lycopodiaceous
+Lycopodiales
+Lycopodium
+Lycopsida
+Lycopsis
+Lycopus
+lycorine
+Lycosa
+lycosid
+Lycosidae
+lyctid
+Lyctidae
+Lyctus
+Lycus
+lyddite
+Lydia
+Lydian
+lydite
+lye
+Lyencephala
+lyencephalous
+lyery
+lygaeid
+Lygaeidae
+Lygeum
+Lygodium
+Lygosoma
+lying
+lyingly
+Lymantria
+lymantriid
+Lymantriidae
+lymhpangiophlebitis
+Lymnaea
+lymnaean
+lymnaeid
+Lymnaeidae
+lymph
+lymphad
+lymphadenectasia
+lymphadenectasis
+lymphadenia
+lymphadenitis
+lymphadenoid
+lymphadenoma
+lymphadenopathy
+lymphadenosis
+lymphaemia
+lymphagogue
+lymphangeitis
+lymphangial
+lymphangiectasis
+lymphangiectatic
+lymphangiectodes
+lymphangiitis
+lymphangioendothelioma
+lymphangiofibroma
+lymphangiology
+lymphangioma
+lymphangiomatous
+lymphangioplasty
+lymphangiosarcoma
+lymphangiotomy
+lymphangitic
+lymphangitis
+lymphatic
+lymphatical
+lymphation
+lymphatism
+lymphatitis
+lymphatolysin
+lymphatolysis
+lymphatolytic
+lymphectasia
+lymphedema
+lymphemia
+lymphenteritis
+lymphoblast
+lymphoblastic
+lymphoblastoma
+lymphoblastosis
+lymphocele
+lymphocyst
+lymphocystosis
+lymphocyte
+lymphocythemia
+lymphocytic
+lymphocytoma
+lymphocytomatosis
+lymphocytosis
+lymphocytotic
+lymphocytotoxin
+lymphodermia
+lymphoduct
+lymphogenic
+lymphogenous
+lymphoglandula
+lymphogranuloma
+lymphoid
+lymphoidectomy
+lymphology
+lymphoma
+lymphomatosis
+lymphomatous
+lymphomonocyte
+lymphomyxoma
+lymphopathy
+lymphopenia
+lymphopenial
+lymphopoiesis
+lymphopoietic
+lymphoprotease
+lymphorrhage
+lymphorrhagia
+lymphorrhagic
+lymphorrhea
+lymphosarcoma
+lymphosarcomatosis
+lymphosarcomatous
+lymphosporidiosis
+lymphostasis
+lymphotaxis
+lymphotome
+lymphotomy
+lymphotoxemia
+lymphotoxin
+lymphotrophic
+lymphotrophy
+lymphous
+lymphuria
+lymphy
+lyncean
+Lynceus
+lynch
+lynchable
+lyncher
+Lyncid
+lyncine
+Lyndon
+Lynette
+Lyngbyaceae
+Lyngbyeae
+Lynn
+Lynne
+Lynnette
+lynnhaven
+lynx
+Lyomeri
+lyomerous
+Lyon
+Lyonese
+Lyonetia
+lyonetiid
+Lyonetiidae
+Lyonnais
+lyonnaise
+Lyonnesse
+lyophile
+lyophilization
+lyophilize
+lyophobe
+Lyopoma
+Lyopomata
+lyopomatous
+lyotrope
+lypemania
+Lyperosia
+lypothymia
+lyra
+Lyraid
+lyrate
+lyrated
+lyrately
+lyraway
+lyre
+lyrebird
+lyreflower
+lyreman
+lyretail
+lyric
+lyrical
+lyrically
+lyricalness
+lyrichord
+lyricism
+lyricist
+lyricize
+Lyrid
+lyriform
+lyrism
+lyrist
+Lyrurus
+lys
+Lysander
+lysate
+lyse
+Lysenkoism
+lysidine
+lysigenic
+lysigenous
+lysigenously
+Lysiloma
+Lysimachia
+Lysimachus
+lysimeter
+lysin
+lysine
+lysis
+Lysistrata
+lysogen
+lysogenesis
+lysogenetic
+lysogenic
+lysozyme
+lyssa
+lyssic
+lyssophobia
+lyterian
+Lythraceae
+lythraceous
+Lythrum
+lytic
+lytta
+lyxose
+M
+m
+Ma
+ma
+maam
+maamselle
+Maarten
+Mab
+Maba
+Mabel
+Mabellona
+mabi
+Mabinogion
+mabolo
+Mac
+mac
+macaasim
+macabre
+macabresque
+Macaca
+macaco
+Macacus
+macadam
+Macadamia
+macadamite
+macadamization
+macadamize
+macadamizer
+Macaglia
+macan
+macana
+Macanese
+macao
+macaque
+Macaranga
+Macarani
+Macareus
+macarism
+macarize
+macaroni
+macaronic
+macaronical
+macaronically
+macaronicism
+macaronism
+macaroon
+Macartney
+Macassar
+Macassarese
+macaw
+Macbeth
+Maccabaeus
+Maccabean
+Maccabees
+maccaboy
+macco
+maccoboy
+Macduff
+mace
+macedoine
+Macedon
+Macedonian
+Macedonic
+macehead
+maceman
+macer
+macerate
+macerater
+maceration
+Macflecknoe
+machairodont
+Machairodontidae
+Machairodontinae
+Machairodus
+machan
+machar
+machete
+Machetes
+machi
+Machiavel
+Machiavellian
+Machiavellianism
+Machiavellianly
+Machiavellic
+Machiavellism
+machiavellist
+Machiavellistic
+machicolate
+machicolation
+machicoulis
+Machicui
+machila
+Machilidae
+Machilis
+machin
+machinability
+machinable
+machinal
+machinate
+machination
+machinator
+machine
+machineful
+machineless
+machinelike
+machinely
+machineman
+machinemonger
+machiner
+machinery
+machinification
+machinify
+machinism
+machinist
+machinization
+machinize
+machinoclast
+machinofacture
+machinotechnique
+machinule
+Machogo
+machopolyp
+machree
+macies
+Macigno
+macilence
+macilency
+macilent
+mack
+mackenboy
+mackerel
+mackereler
+mackereling
+Mackinaw
+mackins
+mackintosh
+mackintoshite
+mackle
+macklike
+macle
+Macleaya
+macled
+Maclura
+Maclurea
+maclurin
+Macmillanite
+maco
+Macon
+maconite
+Macracanthorhynchus
+macracanthrorhynchiasis
+macradenous
+macrame
+macrander
+macrandrous
+macrauchene
+Macrauchenia
+macraucheniid
+Macraucheniidae
+macraucheniiform
+macrauchenioid
+macrencephalic
+macrencephalous
+macro
+macroanalysis
+macroanalyst
+macroanalytical
+macrobacterium
+macrobian
+macrobiosis
+macrobiote
+macrobiotic
+macrobiotics
+Macrobiotus
+macroblast
+macrobrachia
+macrocarpous
+Macrocentrinae
+Macrocentrus
+macrocephalia
+macrocephalic
+macrocephalism
+macrocephalous
+macrocephalus
+macrocephaly
+macrochaeta
+macrocheilia
+Macrochelys
+macrochemical
+macrochemically
+macrochemistry
+Macrochira
+macrochiran
+Macrochires
+macrochiria
+Macrochiroptera
+macrochiropteran
+macrocladous
+macroclimate
+macroclimatic
+macrococcus
+macrocoly
+macroconidial
+macroconidium
+macroconjugant
+macrocornea
+macrocosm
+macrocosmic
+macrocosmical
+macrocosmology
+macrocosmos
+macrocrystalline
+macrocyst
+Macrocystis
+macrocyte
+macrocythemia
+macrocytic
+macrocytosis
+macrodactyl
+macrodactylia
+macrodactylic
+macrodactylism
+macrodactylous
+macrodactyly
+macrodiagonal
+macrodomatic
+macrodome
+macrodont
+macrodontia
+macrodontism
+macroelement
+macroergate
+macroevolution
+macrofarad
+macrogamete
+macrogametocyte
+macrogamy
+macrogastria
+macroglossate
+macroglossia
+macrognathic
+macrognathism
+macrognathous
+macrogonidium
+macrograph
+macrographic
+macrography
+macrolepidoptera
+macrolepidopterous
+macrology
+macromandibular
+macromania
+macromastia
+macromazia
+macromelia
+macromeral
+macromere
+macromeric
+macromerite
+macromeritic
+macromesentery
+macrometer
+macromethod
+macromolecule
+macromyelon
+macromyelonal
+macron
+macronuclear
+macronucleus
+macronutrient
+macropetalous
+macrophage
+macrophagocyte
+macrophagus
+Macrophoma
+macrophotograph
+macrophotography
+macrophyllous
+macrophysics
+macropia
+macropinacoid
+macropinacoidal
+macroplankton
+macroplasia
+macroplastia
+macropleural
+macropodia
+Macropodidae
+Macropodinae
+macropodine
+macropodous
+macroprism
+macroprosopia
+macropsia
+macropteran
+macropterous
+Macropus
+Macropygia
+macropyramid
+macroreaction
+Macrorhamphosidae
+Macrorhamphosus
+macrorhinia
+Macrorhinus
+macroscelia
+Macroscelides
+macroscian
+macroscopic
+macroscopical
+macroscopically
+macroseism
+macroseismic
+macroseismograph
+macrosepalous
+macroseptum
+macrosmatic
+macrosomatia
+macrosomatous
+macrosomia
+macrosplanchnic
+macrosporange
+macrosporangium
+macrospore
+macrosporic
+Macrosporium
+macrosporophore
+macrosporophyl
+macrosporophyll
+Macrostachya
+macrostomatous
+macrostomia
+macrostructural
+macrostructure
+macrostylospore
+macrostylous
+macrosymbiont
+macrothere
+Macrotheriidae
+macrotherioid
+Macrotherium
+macrotherm
+macrotia
+macrotin
+Macrotolagus
+macrotome
+macrotone
+macrotous
+macrourid
+Macrouridae
+Macrourus
+Macrozamia
+macrozoogonidium
+macrozoospore
+Macrura
+macrural
+macruran
+macruroid
+macrurous
+mactation
+Mactra
+Mactridae
+mactroid
+macuca
+macula
+macular
+maculate
+maculated
+maculation
+macule
+maculicole
+maculicolous
+maculiferous
+maculocerebral
+maculopapular
+maculose
+Macusi
+macuta
+mad
+Madagascan
+Madagascar
+Madagascarian
+Madagass
+madam
+madame
+madapollam
+madarosis
+madarotic
+madbrain
+madbrained
+madcap
+madden
+maddening
+maddeningly
+maddeningness
+madder
+madderish
+madderwort
+madding
+maddingly
+maddish
+maddle
+made
+Madecase
+madefaction
+madefy
+Madegassy
+Madeira
+Madeiran
+Madeline
+madeline
+Madelon
+madescent
+Madge
+madhouse
+madhuca
+Madhva
+Madi
+Madia
+madid
+madidans
+Madiga
+madisterium
+madling
+madly
+madman
+madnep
+madness
+mado
+Madoc
+Madonna
+Madonnahood
+Madonnaish
+Madonnalike
+madoqua
+Madotheca
+madrague
+Madras
+madrasah
+Madrasi
+madreperl
+Madrepora
+Madreporacea
+madreporacean
+Madreporaria
+madreporarian
+madrepore
+madreporian
+madreporic
+madreporiform
+madreporite
+madreporitic
+Madrid
+madrier
+madrigal
+madrigaler
+madrigaletto
+madrigalian
+madrigalist
+Madrilene
+Madrilenian
+madrona
+madship
+madstone
+Madurese
+maduro
+madweed
+madwoman
+madwort
+mae
+Maeandra
+Maeandrina
+maeandrine
+maeandriniform
+maeandrinoid
+maeandroid
+Maecenas
+Maecenasship
+maegbote
+Maelstrom
+Maemacterion
+maenad
+maenadic
+maenadism
+maenaite
+Maenalus
+Maenidae
+Maeonian
+Maeonides
+maestri
+maestro
+maffia
+maffick
+mafficker
+maffle
+mafflin
+mafic
+mafoo
+mafura
+mag
+Maga
+Magadhi
+magadis
+magadize
+Magahi
+Magalensia
+magani
+magas
+magazinable
+magazinage
+magazine
+magazinelet
+magaziner
+magazinette
+magazinish
+magazinism
+magazinist
+magaziny
+Magdalen
+Magdalene
+Magdalenian
+mage
+Magellan
+Magellanian
+Magellanic
+magenta
+magged
+Maggie
+maggle
+maggot
+maggotiness
+maggotpie
+maggoty
+Maggy
+Magh
+Maghi
+Maghrib
+Maghribi
+Magi
+magi
+Magian
+Magianism
+magic
+magical
+magicalize
+magically
+magicdom
+magician
+magicianship
+magicked
+magicking
+Magindanao
+magiric
+magirics
+magirist
+magiristic
+magirological
+magirologist
+magirology
+Magism
+magister
+magisterial
+magisteriality
+magisterially
+magisterialness
+magistery
+magistracy
+magistral
+magistrality
+magistrally
+magistrand
+magistrant
+magistrate
+magistrateship
+magistratic
+magistratical
+magistratically
+magistrative
+magistrature
+Maglemose
+Maglemosean
+Maglemosian
+magma
+magmatic
+magnanimity
+magnanimous
+magnanimously
+magnanimousness
+magnascope
+magnascopic
+magnate
+magnecrystallic
+magnelectric
+magneoptic
+magnes
+magnesia
+magnesial
+magnesian
+magnesic
+magnesioferrite
+magnesite
+magnesium
+magnet
+magneta
+magnetic
+magnetical
+magnetically
+magneticalness
+magnetician
+magnetics
+magnetiferous
+magnetification
+magnetify
+magnetimeter
+magnetism
+magnetist
+magnetite
+magnetitic
+magnetizability
+magnetizable
+magnetization
+magnetize
+magnetizer
+magneto
+magnetobell
+magnetochemical
+magnetochemistry
+magnetod
+magnetodynamo
+magnetoelectric
+magnetoelectrical
+magnetoelectricity
+magnetogenerator
+magnetogram
+magnetograph
+magnetographic
+magnetoid
+magnetomachine
+magnetometer
+magnetometric
+magnetometrical
+magnetometrically
+magnetometry
+magnetomotive
+magnetomotor
+magneton
+magnetooptic
+magnetooptical
+magnetooptics
+magnetophone
+magnetophonograph
+magnetoplumbite
+magnetoprinter
+magnetoscope
+magnetostriction
+magnetotelegraph
+magnetotelephone
+magnetotherapy
+magnetotransmitter
+magnetron
+magnicaudate
+magnicaudatous
+magnifiable
+magnific
+magnifical
+magnifically
+Magnificat
+magnification
+magnificative
+magnifice
+magnificence
+magnificent
+magnificently
+magnificentness
+magnifico
+magnifier
+magnify
+magniloquence
+magniloquent
+magniloquently
+magniloquy
+magnipotence
+magnipotent
+magnirostrate
+magnisonant
+magnitude
+magnitudinous
+magnochromite
+magnoferrite
+Magnolia
+magnolia
+Magnoliaceae
+magnoliaceous
+magnum
+Magnus
+Magog
+magot
+magpie
+magpied
+magpieish
+magsman
+maguari
+maguey
+Magyar
+Magyaran
+Magyarism
+Magyarization
+Magyarize
+Mah
+maha
+mahaleb
+mahalla
+mahant
+mahar
+maharaja
+maharajrana
+maharana
+maharanee
+maharani
+maharao
+Maharashtri
+maharawal
+maharawat
+mahatma
+mahatmaism
+Mahayana
+Mahayanism
+Mahayanist
+Mahayanistic
+Mahdi
+Mahdian
+Mahdiship
+Mahdism
+Mahdist
+Mahesh
+Mahi
+Mahican
+mahmal
+Mahmoud
+mahmudi
+mahoe
+mahoganize
+mahogany
+mahoitre
+maholi
+maholtine
+Mahomet
+Mahometry
+mahone
+Mahonia
+Mahori
+Mahound
+mahout
+Mahra
+Mahran
+Mahri
+mahseer
+mahua
+mahuang
+Maia
+Maiacca
+Maianthemum
+maid
+Maida
+maidan
+maiden
+maidenhair
+maidenhead
+maidenhood
+maidenish
+maidenism
+maidenlike
+maidenliness
+maidenly
+maidenship
+maidenweed
+maidhood
+Maidie
+maidish
+maidism
+maidkin
+maidlike
+maidling
+maidservant
+Maidu
+maidy
+maiefic
+maieutic
+maieutical
+maieutics
+maigre
+maiid
+Maiidae
+mail
+mailable
+mailbag
+mailbox
+mailclad
+mailed
+mailer
+mailguard
+mailie
+maillechort
+mailless
+mailman
+mailplane
+maim
+maimed
+maimedly
+maimedness
+maimer
+maimon
+Maimonidean
+Maimonist
+main
+Mainan
+Maine
+mainferre
+mainlander
+mainly
+mainmast
+mainmortable
+mainour
+mainpast
+mainpernable
+mainpernor
+mainpin
+mainport
+mainpost
+mainprise
+mains
+mainsail
+mainsheet
+mainspring
+mainstay
+Mainstreeter
+Mainstreetism
+maint
+maintain
+maintainable
+maintainableness
+maintainer
+maintainment
+maintainor
+maintenance
+Maintenon
+maintop
+maintopman
+maioid
+Maioidea
+maioidean
+Maioli
+Maiongkong
+Maipure
+mairatour
+maire
+maisonette
+Maithili
+maitlandite
+Maitreya
+Maius
+maize
+maizebird
+maizenic
+maizer
+Maja
+Majagga
+majagua
+Majesta
+majestic
+majestical
+majestically
+majesticalness
+majesticness
+majestious
+majesty
+majestyship
+Majlis
+majo
+majolica
+majolist
+majoon
+Major
+major
+majorate
+majoration
+Majorcan
+majorette
+Majorism
+Majorist
+Majoristic
+majority
+majorize
+majorship
+majuscular
+majuscule
+makable
+Makah
+Makaraka
+Makari
+Makassar
+make
+makebate
+makedom
+makefast
+maker
+makeress
+makership
+makeshift
+makeshiftiness
+makeshiftness
+makeshifty
+makeweight
+makhzan
+maki
+makimono
+making
+makluk
+mako
+Makonde
+makroskelic
+Maku
+Makua
+makuk
+mal
+mala
+malaanonang
+Malabar
+Malabarese
+malabathrum
+malacanthid
+Malacanthidae
+malacanthine
+Malacanthus
+Malacca
+Malaccan
+malaccident
+Malaceae
+malaceous
+malachite
+malacia
+Malaclemys
+Malaclypse
+Malacobdella
+Malacocotylea
+malacoderm
+Malacodermatidae
+malacodermatous
+Malacodermidae
+malacodermous
+malacoid
+malacolite
+malacological
+malacologist
+malacology
+malacon
+malacophilous
+malacophonous
+malacophyllous
+malacopod
+Malacopoda
+malacopodous
+malacopterygian
+Malacopterygii
+malacopterygious
+Malacoscolices
+Malacoscolicine
+Malacosoma
+Malacostraca
+malacostracan
+malacostracology
+malacostracous
+malactic
+maladaptation
+maladdress
+maladive
+maladjust
+maladjusted
+maladjustive
+maladjustment
+maladminister
+maladministration
+maladministrator
+maladroit
+maladroitly
+maladroitness
+maladventure
+malady
+Malaga
+Malagasy
+Malagigi
+malagma
+malaguena
+malahack
+malaise
+malakin
+malalignment
+malambo
+malandered
+malanders
+malandrous
+malanga
+malapaho
+malapert
+malapertly
+malapertness
+malapi
+malapplication
+malappointment
+malappropriate
+malappropriation
+malaprop
+malapropian
+malapropish
+malapropism
+malapropoism
+malapropos
+Malapterurus
+malar
+malaria
+malarial
+malariaproof
+malarin
+malarioid
+malariologist
+malariology
+malarious
+malarkey
+malaroma
+malarrangement
+malasapsap
+malassimilation
+malassociation
+malate
+malati
+malattress
+malax
+malaxable
+malaxage
+malaxate
+malaxation
+malaxator
+malaxerman
+Malaxis
+Malay
+Malayalam
+Malayalim
+Malayan
+Malayic
+Malayize
+Malayoid
+Malaysian
+malbehavior
+malbrouck
+malchite
+Malchus
+Malcolm
+malconceived
+malconduct
+malconformation
+malconstruction
+malcontent
+malcontented
+malcontentedly
+malcontentedness
+malcontentism
+malcontently
+malcontentment
+malconvenance
+malcreated
+malcultivation
+maldeveloped
+maldevelopment
+maldigestion
+maldirection
+maldistribution
+Maldivian
+maldonite
+malduck
+Male
+male
+malease
+maleate
+Malebolge
+Malebolgian
+Malebolgic
+Malebranchism
+Malecite
+maledicent
+maledict
+malediction
+maledictive
+maledictory
+maleducation
+malefaction
+malefactor
+malefactory
+malefactress
+malefical
+malefically
+maleficence
+maleficent
+maleficial
+maleficiate
+maleficiation
+maleic
+maleinoid
+malella
+Malemute
+maleness
+malengine
+maleo
+maleruption
+Malesherbia
+Malesherbiaceae
+malesherbiaceous
+malevolence
+malevolency
+malevolent
+malevolently
+malexecution
+malfeasance
+malfeasant
+malfed
+malformation
+malformed
+malfortune
+malfunction
+malgovernment
+malgrace
+malguzar
+malguzari
+malhonest
+malhygiene
+mali
+malic
+malice
+maliceful
+maliceproof
+malicho
+malicious
+maliciously
+maliciousness
+malicorium
+malidentification
+maliferous
+maliform
+malign
+malignance
+malignancy
+malignant
+malignantly
+malignation
+maligner
+malignify
+malignity
+malignly
+malignment
+malik
+malikadna
+malikala
+malikana
+Maliki
+Malikite
+maline
+malines
+malinfluence
+malinger
+malingerer
+malingery
+Malinois
+malinowskite
+malinstitution
+malinstruction
+malintent
+malism
+malison
+malist
+malistic
+malkin
+Malkite
+mall
+malladrite
+mallangong
+mallard
+mallardite
+malleability
+malleabilization
+malleable
+malleableize
+malleableized
+malleableness
+malleablize
+malleal
+mallear
+malleate
+malleation
+mallee
+Malleifera
+malleiferous
+malleiform
+mallein
+malleinization
+malleinize
+mallemaroking
+mallemuck
+malleoincudal
+malleolable
+malleolar
+malleolus
+mallet
+malleus
+Malling
+Mallophaga
+mallophagan
+mallophagous
+malloseismic
+Mallotus
+mallow
+mallowwort
+Malloy
+mallum
+mallus
+malm
+Malmaison
+malmignatte
+malmsey
+malmstone
+malmy
+malnourished
+malnourishment
+malnutrite
+malnutrition
+malo
+malobservance
+malobservation
+maloccluded
+malocclusion
+malodor
+malodorant
+malodorous
+malodorously
+malodorousness
+malojilla
+malonate
+malonic
+malonyl
+malonylurea
+Malope
+maloperation
+malorganization
+malorganized
+malouah
+malpais
+Malpighia
+Malpighiaceae
+malpighiaceous
+Malpighian
+malplaced
+malpoise
+malposed
+malposition
+malpractice
+malpractioner
+malpraxis
+malpresentation
+malproportion
+malproportioned
+malpropriety
+malpublication
+malreasoning
+malrotation
+malshapen
+malt
+maltable
+maltase
+malter
+Maltese
+maltha
+Malthe
+malthouse
+Malthusian
+Malthusianism
+Malthusiast
+maltiness
+malting
+maltman
+Malto
+maltobiose
+maltodextrin
+maltodextrine
+maltolte
+maltose
+maltreat
+maltreatment
+maltreator
+maltster
+malturned
+maltworm
+malty
+malunion
+Malurinae
+malurine
+Malurus
+Malus
+Malva
+Malvaceae
+malvaceous
+Malvales
+malvasia
+malvasian
+Malvastrum
+malversation
+malverse
+malvoisie
+malvolition
+Mam
+mamba
+mambo
+mameliere
+mamelonation
+mameluco
+Mameluke
+Mamercus
+Mamers
+Mamertine
+Mamie
+Mamilius
+mamlatdar
+mamma
+mammal
+mammalgia
+Mammalia
+mammalian
+mammaliferous
+mammality
+mammalogical
+mammalogist
+mammalogy
+mammary
+mammate
+Mammea
+mammectomy
+mammee
+mammer
+Mammifera
+mammiferous
+mammiform
+mammilla
+mammillaplasty
+mammillar
+Mammillaria
+mammillary
+mammillate
+mammillated
+mammillation
+mammilliform
+mammilloid
+mammitis
+mammock
+mammogen
+mammogenic
+mammogenically
+mammon
+mammondom
+mammoniacal
+mammonish
+mammonism
+mammonist
+mammonistic
+mammonite
+mammonitish
+mammonization
+mammonize
+mammonolatry
+Mammonteus
+mammoth
+mammothrept
+mammula
+mammular
+Mammut
+Mammutidae
+mammy
+mamo
+man
+mana
+Manabozho
+manacle
+Manacus
+manage
+manageability
+manageable
+manageableness
+manageably
+managee
+manageless
+management
+managemental
+manager
+managerdom
+manageress
+managerial
+managerially
+managership
+managery
+manaism
+manakin
+manal
+manas
+Manasquan
+manatee
+Manatidae
+manatine
+manatoid
+Manatus
+manavel
+manavelins
+Manavendra
+manbird
+manbot
+manche
+Manchester
+Manchesterdom
+Manchesterism
+Manchesterist
+Manchestrian
+manchet
+manchineel
+Manchu
+Manchurian
+mancinism
+mancipable
+mancipant
+mancipate
+mancipation
+mancipative
+mancipatory
+mancipee
+mancipium
+manciple
+mancipleship
+mancipular
+mancono
+Mancunian
+mancus
+mand
+Mandaean
+Mandaeism
+Mandaic
+Mandaite
+mandala
+Mandalay
+mandament
+mandamus
+Mandan
+mandant
+mandarah
+mandarin
+mandarinate
+mandarindom
+mandariness
+mandarinic
+mandarinism
+mandarinize
+mandarinship
+mandatary
+mandate
+mandatee
+mandation
+mandative
+mandator
+mandatorily
+mandatory
+mandatum
+Mande
+mandelate
+mandelic
+mandible
+mandibula
+mandibular
+mandibulary
+Mandibulata
+mandibulate
+mandibulated
+mandibuliform
+mandibulohyoid
+mandibulomaxillary
+mandibulopharyngeal
+mandibulosuspensorial
+mandil
+mandilion
+Mandingan
+Mandingo
+mandola
+mandolin
+mandolinist
+mandolute
+mandom
+mandora
+mandore
+mandra
+mandragora
+mandrake
+mandrel
+mandriarch
+mandrill
+mandrin
+mandruka
+mandua
+manducable
+manducate
+manducation
+manducatory
+mandyas
+mane
+maned
+manege
+manei
+maneless
+manent
+manerial
+manes
+manesheet
+maness
+Manetti
+Manettia
+maneuver
+maneuverability
+maneuverable
+maneuverer
+maneuvrability
+maneuvrable
+maney
+Manfred
+Manfreda
+manful
+manfully
+manfulness
+mang
+manga
+mangabeira
+mangabey
+mangal
+manganapatite
+manganate
+manganblende
+manganbrucite
+manganeisen
+manganese
+manganesian
+manganetic
+manganhedenbergite
+manganic
+manganiferous
+manganite
+manganium
+manganize
+Manganja
+manganocalcite
+manganocolumbite
+manganophyllite
+manganosiderite
+manganosite
+manganostibiite
+manganotantalite
+manganous
+manganpectolite
+Mangar
+Mangbattu
+mange
+mangeao
+mangel
+mangelin
+manger
+mangerite
+mangi
+Mangifera
+mangily
+manginess
+mangle
+mangleman
+mangler
+mangling
+manglingly
+mango
+mangona
+mangonel
+mangonism
+mangonization
+mangonize
+mangosteen
+mangrass
+mangrate
+mangrove
+Mangue
+mangue
+mangy
+Mangyan
+manhandle
+Manhattan
+Manhattanite
+Manhattanize
+manhead
+manhole
+manhood
+mani
+mania
+maniable
+maniac
+maniacal
+maniacally
+manic
+Manicaria
+manicate
+Manichaean
+Manichaeanism
+Manichaeanize
+Manichaeism
+Manichaeist
+Manichee
+manichord
+manicole
+manicure
+manicurist
+manid
+Manidae
+manienie
+manifest
+manifestable
+manifestant
+manifestation
+manifestational
+manifestationist
+manifestative
+manifestatively
+manifested
+manifestedness
+manifester
+manifestive
+manifestly
+manifestness
+manifesto
+manifold
+manifolder
+manifoldly
+manifoldness
+manifoldwise
+maniform
+manify
+Manihot
+manikin
+manikinism
+Manila
+manila
+manilla
+manille
+manioc
+maniple
+manipulable
+manipular
+manipulatable
+manipulate
+manipulation
+manipulative
+manipulatively
+manipulator
+manipulatory
+Manipuri
+Manis
+manism
+manist
+manistic
+manito
+Manitoban
+manitrunk
+maniu
+Manius
+Maniva
+manjak
+Manjeri
+mank
+mankeeper
+mankin
+mankind
+manless
+manlessly
+manlessness
+manlet
+manlihood
+manlike
+manlikely
+manlikeness
+manlily
+manliness
+manling
+manly
+Mann
+manna
+mannan
+mannequin
+manner
+mannerable
+mannered
+mannerhood
+mannering
+mannerism
+mannerist
+manneristic
+manneristical
+manneristically
+mannerize
+mannerless
+mannerlessness
+mannerliness
+mannerly
+manners
+mannersome
+manness
+Mannheimar
+mannide
+mannie
+manniferous
+mannify
+mannikinism
+manning
+mannish
+mannishly
+mannishness
+mannite
+mannitic
+mannitol
+mannitose
+mannoheptite
+mannoheptitol
+mannoheptose
+mannoketoheptose
+mannonic
+mannosan
+mannose
+Manny
+manny
+mano
+Manobo
+manoc
+manograph
+Manolis
+manometer
+manometric
+manometrical
+manometry
+manomin
+manor
+manorial
+manorialism
+manorialize
+manorship
+manoscope
+manostat
+manostatic
+manque
+manred
+manrent
+manroot
+manrope
+Mans
+mansard
+mansarded
+manscape
+manse
+manservant
+manship
+mansion
+mansional
+mansionary
+mansioned
+mansioneer
+mansionry
+manslaughter
+manslaughterer
+manslaughtering
+manslaughterous
+manslayer
+manslaying
+manso
+mansonry
+manstealer
+manstealing
+manstopper
+manstopping
+mansuete
+mansuetely
+mansuetude
+mant
+manta
+mantal
+manteau
+mantel
+mantelet
+manteline
+mantelletta
+mantellone
+mantelpiece
+mantelshelf
+manteltree
+manter
+mantes
+mantevil
+mantic
+manticism
+manticore
+mantid
+Mantidae
+mantilla
+Mantinean
+mantis
+Mantisia
+Mantispa
+mantispid
+Mantispidae
+mantissa
+mantistic
+mantle
+mantled
+mantlet
+mantling
+Manto
+manto
+Mantodea
+mantoid
+Mantoidea
+mantologist
+mantology
+mantra
+mantrap
+mantua
+mantuamaker
+mantuamaking
+Mantuan
+Mantzu
+manual
+manualii
+manualism
+manualist
+manualiter
+manually
+manuao
+manubrial
+manubriated
+manubrium
+manucaption
+manucaptor
+manucapture
+manucode
+Manucodia
+manucodiata
+manuduce
+manuduction
+manuductor
+manuductory
+Manuel
+manufactory
+manufacturable
+manufactural
+manufacture
+manufacturer
+manufacturess
+manuka
+manul
+manuma
+manumea
+manumisable
+manumission
+manumissive
+manumit
+manumitter
+manumotive
+manurable
+manurage
+manurance
+manure
+manureless
+manurer
+manurial
+manurially
+manus
+manuscript
+manuscriptal
+manuscription
+manuscriptural
+manusina
+manustupration
+manutagi
+Manvantara
+manward
+manwards
+manway
+manweed
+manwise
+Manx
+Manxman
+Manxwoman
+many
+manyberry
+Manyema
+manyfold
+manyness
+manyplies
+manyroot
+manyways
+manywhere
+manywise
+manzana
+manzanilla
+manzanillo
+manzanita
+Manzas
+manzil
+mao
+maomao
+Maori
+Maoridom
+Maoriland
+Maorilander
+map
+mapach
+mapau
+maphrian
+mapland
+maple
+maplebush
+mapo
+mappable
+mapper
+Mappila
+mappist
+mappy
+Mapuche
+mapwise
+maquahuitl
+maquette
+maqui
+Maquiritare
+maquis
+Mar
+mar
+Mara
+marabotin
+marabou
+Marabout
+marabuto
+maraca
+Maracaibo
+maracan
+maracock
+marae
+Maragato
+marajuana
+marakapas
+maral
+maranatha
+marang
+Maranha
+Maranham
+Maranhao
+Maranta
+Marantaceae
+marantaceous
+marantic
+marara
+mararie
+marasca
+maraschino
+marasmic
+Marasmius
+marasmoid
+marasmous
+marasmus
+Maratha
+Marathi
+marathon
+marathoner
+Marathonian
+Maratism
+Maratist
+Marattia
+Marattiaceae
+marattiaceous
+Marattiales
+maraud
+marauder
+maravedi
+Maravi
+marbelize
+marble
+marbled
+marblehead
+marbleheader
+marblehearted
+marbleization
+marbleize
+marbleizer
+marblelike
+marbleness
+marbler
+marbles
+marblewood
+marbling
+marblish
+marbly
+marbrinus
+Marc
+marc
+Marcan
+marcantant
+marcasite
+marcasitic
+marcasitical
+Marcel
+marcel
+marceline
+Marcella
+marcella
+marceller
+Marcellian
+Marcellianism
+marcello
+marcescence
+marcescent
+Marcgravia
+Marcgraviaceae
+marcgraviaceous
+March
+march
+Marchantia
+Marchantiaceae
+marchantiaceous
+Marchantiales
+marcher
+marchetto
+marchioness
+marchite
+marchland
+marchman
+Marchmont
+marchpane
+Marci
+Marcia
+marcid
+Marcionism
+Marcionist
+Marcionite
+Marcionitic
+Marcionitish
+Marcionitism
+Marcite
+Marco
+marco
+Marcobrunner
+Marcomanni
+Marconi
+marconi
+marconigram
+marconigraph
+marconigraphy
+marcor
+Marcos
+Marcosian
+marcottage
+mardy
+mare
+mareblob
+Mareca
+marechal
+Marehan
+Marek
+marekanite
+maremma
+maremmatic
+maremmese
+marengo
+marennin
+Mareotic
+Mareotid
+Marfik
+marfire
+margarate
+Margarelon
+Margaret
+margaric
+margarin
+margarine
+margarita
+margaritaceous
+margarite
+margaritiferous
+margaritomancy
+Margarodes
+margarodid
+Margarodinae
+margarodite
+Margaropus
+margarosanite
+margay
+marge
+margeline
+margent
+Margery
+Margie
+margin
+marginal
+marginalia
+marginality
+marginalize
+marginally
+marginate
+marginated
+margination
+margined
+Marginella
+Marginellidae
+marginelliform
+marginiform
+margining
+marginirostral
+marginoplasty
+margosa
+Margot
+margravate
+margrave
+margravely
+margravial
+margraviate
+margravine
+Marguerite
+marguerite
+marhala
+Marheshvan
+Mari
+Maria
+maria
+marialite
+Mariamman
+Marian
+Mariana
+Marianic
+Marianne
+Marianolatrist
+Marianolatry
+maricolous
+marid
+Marie
+mariengroschen
+marigenous
+marigold
+marigram
+marigraph
+marigraphic
+marijuana
+marikina
+Marilla
+Marilyn
+marimba
+marimonda
+marina
+marinade
+marinate
+marinated
+marine
+mariner
+marinheiro
+marinist
+marinorama
+Mario
+mariola
+Mariolater
+Mariolatrous
+Mariolatry
+Mariology
+Marion
+marionette
+Mariou
+Mariposan
+mariposite
+maris
+marish
+marishness
+Marist
+maritage
+marital
+maritality
+maritally
+mariticidal
+mariticide
+Maritime
+maritime
+maritorious
+mariupolite
+marjoram
+Marjorie
+Mark
+mark
+marka
+Markab
+markdown
+Markeb
+marked
+markedly
+markedness
+marker
+market
+marketability
+marketable
+marketableness
+marketably
+marketeer
+marketer
+marketing
+marketman
+marketstead
+marketwise
+markfieldite
+Markgenossenschaft
+markhor
+marking
+markka
+markless
+markman
+markmoot
+Marko
+markshot
+marksman
+marksmanly
+marksmanship
+markswoman
+markup
+Markus
+markweed
+markworthy
+marl
+Marla
+marlaceous
+marlberry
+marled
+Marlena
+marler
+marli
+marlin
+marline
+marlinespike
+marlite
+marlitic
+marllike
+marlock
+Marlovian
+Marlowesque
+Marlowish
+Marlowism
+marlpit
+marly
+marm
+marmalade
+marmalady
+Marmar
+marmarization
+marmarize
+marmarosis
+marmatite
+marmelos
+marmennill
+marmit
+marmite
+marmolite
+marmoraceous
+marmorate
+marmorated
+marmoration
+marmoreal
+marmoreally
+marmorean
+marmoric
+Marmosa
+marmose
+marmoset
+marmot
+Marmota
+Marnix
+maro
+marocain
+marok
+Maronian
+Maronist
+Maronite
+maroon
+marooner
+maroquin
+Marpessa
+marplot
+marplotry
+marque
+marquee
+Marquesan
+marquess
+marquetry
+marquis
+marquisal
+marquisate
+marquisdom
+marquise
+marquisette
+marquisina
+marquisotte
+marquisship
+marquito
+marranism
+marranize
+marrano
+marree
+Marrella
+marrer
+marriable
+marriage
+marriageability
+marriageable
+marriageableness
+marriageproof
+married
+marrier
+marron
+marrot
+marrow
+marrowbone
+marrowed
+marrowfat
+marrowish
+marrowless
+marrowlike
+marrowsky
+marrowskyer
+marrowy
+Marrubium
+Marrucinian
+marry
+marryer
+marrying
+marrymuffe
+Mars
+Marsala
+Marsdenia
+marseilles
+Marsh
+marsh
+Marsha
+marshal
+marshalate
+marshalcy
+marshaler
+marshaless
+Marshall
+marshalman
+marshalment
+Marshalsea
+marshalship
+marshberry
+marshbuck
+marshfire
+marshflower
+marshiness
+marshite
+marshland
+marshlander
+marshlike
+marshlocks
+marshman
+marshwort
+marshy
+Marsi
+Marsian
+Marsilea
+Marsileaceae
+marsileaceous
+Marsilia
+Marsiliaceae
+marsipobranch
+Marsipobranchia
+Marsipobranchiata
+marsipobranchiate
+Marsipobranchii
+marsoon
+Marspiter
+Marssonia
+Marssonina
+marsupial
+Marsupialia
+marsupialian
+marsupialization
+marsupialize
+marsupian
+Marsupiata
+marsupiate
+marsupium
+Mart
+mart
+martagon
+martel
+marteline
+martellate
+martellato
+marten
+martensite
+martensitic
+Martes
+martext
+Martha
+martial
+martialism
+Martialist
+martiality
+martialization
+martialize
+martially
+martialness
+Martian
+Martin
+martin
+martinet
+martineta
+martinetish
+martinetishness
+martinetism
+martinetship
+Martinez
+martingale
+martinico
+Martinism
+Martinist
+Martinmas
+martinoe
+martite
+Martius
+martlet
+Martu
+Marty
+Martyn
+Martynia
+Martyniaceae
+martyniaceous
+martyr
+martyrdom
+martyress
+martyrium
+martyrization
+martyrize
+martyrizer
+martyrlike
+martyrly
+martyrolatry
+martyrologic
+martyrological
+martyrologist
+martyrologistic
+martyrologium
+martyrology
+martyrship
+martyry
+maru
+marvel
+marvelment
+marvelous
+marvelously
+marvelousness
+marvelry
+marver
+Marvin
+Marwari
+Marxian
+Marxianism
+Marxism
+Marxist
+Mary
+mary
+marybud
+Maryland
+Marylander
+Marylandian
+Marymass
+marysole
+marzipan
+mas
+masa
+Masai
+Masanao
+Masanobu
+masaridid
+Masarididae
+Masaridinae
+Masaris
+mascagnine
+mascagnite
+mascally
+mascara
+mascaron
+mascled
+mascleless
+mascot
+mascotism
+mascotry
+Mascouten
+mascularity
+masculate
+masculation
+masculine
+masculinely
+masculineness
+masculinism
+masculinist
+masculinity
+masculinization
+masculinize
+masculist
+masculofeminine
+masculonucleus
+masculy
+masdeu
+Masdevallia
+mash
+masha
+mashal
+mashallah
+mashelton
+masher
+mashie
+mashing
+mashman
+Mashona
+Mashpee
+mashru
+mashy
+masjid
+mask
+masked
+Maskegon
+maskelynite
+masker
+maskette
+maskflower
+Maskins
+masklike
+Maskoi
+maskoid
+maslin
+masochism
+masochist
+masochistic
+Mason
+mason
+masoned
+masoner
+masonic
+Masonite
+masonite
+masonry
+masonwork
+masooka
+masoola
+Masora
+Masorete
+Masoreth
+Masoretic
+Maspiter
+masque
+masquer
+masquerade
+masquerader
+Mass
+mass
+massa
+massacre
+massacrer
+massage
+massager
+massageuse
+massagist
+Massalia
+Massalian
+massaranduba
+massasauga
+masse
+massebah
+massecuite
+massedly
+massedness
+Massekhoth
+massel
+masser
+masseter
+masseteric
+masseur
+masseuse
+massicot
+massier
+massiest
+massif
+Massilia
+Massilian
+massily
+massiness
+massive
+massively
+massiveness
+massivity
+masskanne
+massless
+masslike
+Massmonger
+massotherapy
+massoy
+massula
+massy
+mast
+mastaba
+mastadenitis
+mastadenoma
+mastage
+mastalgia
+mastatrophia
+mastatrophy
+mastauxe
+mastax
+mastectomy
+masted
+master
+masterable
+masterate
+masterdom
+masterer
+masterful
+masterfully
+masterfulness
+masterhood
+masterless
+masterlessness
+masterlike
+masterlily
+masterliness
+masterling
+masterly
+masterman
+mastermind
+masterous
+masterpiece
+masterproof
+mastership
+masterwork
+masterwort
+mastery
+mastful
+masthead
+masthelcosis
+mastic
+masticability
+masticable
+masticate
+mastication
+masticator
+masticatory
+mastiche
+masticic
+Masticura
+masticurous
+mastiff
+Mastigamoeba
+mastigate
+mastigium
+mastigobranchia
+mastigobranchial
+Mastigophora
+mastigophoran
+mastigophoric
+mastigophorous
+mastigopod
+Mastigopoda
+mastigopodous
+mastigote
+mastigure
+masting
+mastitis
+mastless
+mastlike
+mastman
+mastocarcinoma
+mastoccipital
+mastochondroma
+mastochondrosis
+mastodon
+mastodonsaurian
+Mastodonsaurus
+mastodont
+mastodontic
+Mastodontidae
+mastodontine
+mastodontoid
+mastodynia
+mastoid
+mastoidal
+mastoidale
+mastoideal
+mastoidean
+mastoidectomy
+mastoideocentesis
+mastoideosquamous
+mastoiditis
+mastoidohumeral
+mastoidohumeralis
+mastoidotomy
+mastological
+mastologist
+mastology
+mastomenia
+mastoncus
+mastooccipital
+mastoparietal
+mastopathy
+mastopexy
+mastoplastia
+mastorrhagia
+mastoscirrhus
+mastosquamose
+mastotomy
+mastotympanic
+masturbate
+masturbation
+masturbational
+masturbator
+masturbatory
+mastwood
+masty
+masu
+Masulipatam
+masurium
+Mat
+mat
+Matabele
+Matacan
+matachin
+matachina
+mataco
+matadero
+matador
+mataeological
+mataeologue
+mataeology
+Matagalpa
+Matagalpan
+matagory
+matagouri
+matai
+matajuelo
+matalan
+matamata
+matamoro
+matanza
+matapan
+matapi
+Matar
+matara
+Matatua
+Matawan
+matax
+matboard
+match
+matchable
+matchableness
+matchably
+matchboard
+matchboarding
+matchbook
+matchbox
+matchcloth
+matchcoat
+matcher
+matching
+matchless
+matchlessly
+matchlessness
+matchlock
+matchmaker
+matchmaking
+matchmark
+Matchotic
+matchsafe
+matchstick
+matchwood
+matchy
+mate
+mategriffon
+matehood
+mateless
+matelessness
+matelote
+mately
+mater
+materfamilias
+material
+materialism
+materialist
+materialistic
+materialistical
+materialistically
+materiality
+materialization
+materialize
+materializee
+materializer
+materially
+materialman
+materialness
+materiate
+materiation
+materiel
+maternal
+maternality
+maternalize
+maternally
+maternalness
+maternity
+maternology
+mateship
+matey
+matezite
+matfelon
+matgrass
+math
+mathematic
+mathematical
+mathematically
+mathematicals
+mathematician
+mathematicize
+mathematics
+mathematize
+mathemeg
+mathes
+mathesis
+mathetic
+Mathurin
+matico
+matildite
+matin
+matinal
+matinee
+mating
+matins
+matipo
+matka
+matless
+matlockite
+matlow
+matmaker
+matmaking
+matra
+matral
+Matralia
+matranee
+matrass
+matreed
+matriarch
+matriarchal
+matriarchalism
+matriarchate
+matriarchic
+matriarchist
+matriarchy
+matric
+matrical
+Matricaria
+matrices
+matricidal
+matricide
+matricula
+matriculable
+matriculant
+matricular
+matriculate
+matriculation
+matriculator
+matriculatory
+Matrigan
+matriheritage
+matriherital
+matrilineal
+matrilineally
+matrilinear
+matrilinearism
+matriliny
+matrilocal
+matrimonial
+matrimonially
+matrimonious
+matrimoniously
+matrimony
+matriotism
+matripotestal
+matris
+matrix
+matroclinic
+matroclinous
+matrocliny
+matron
+matronage
+matronal
+Matronalia
+matronhood
+matronism
+matronize
+matronlike
+matronliness
+matronly
+matronship
+matronymic
+matross
+Mats
+matsu
+matsuri
+Matt
+matta
+mattamore
+Mattapony
+mattaro
+mattboard
+matte
+matted
+mattedly
+mattedness
+matter
+matterate
+matterative
+matterful
+matterfulness
+matterless
+mattery
+Matteuccia
+Matthaean
+Matthew
+Matthias
+Matthieu
+Matthiola
+Matti
+matti
+matting
+mattock
+mattoid
+mattoir
+mattress
+mattulla
+Matty
+maturable
+maturate
+maturation
+maturative
+mature
+maturely
+maturement
+matureness
+maturer
+maturescence
+maturescent
+maturing
+maturish
+maturity
+matutinal
+matutinally
+matutinary
+matutine
+matutinely
+matweed
+maty
+matzo
+matzoon
+matzos
+matzoth
+mau
+maucherite
+Maud
+maud
+maudle
+maudlin
+maudlinism
+maudlinize
+maudlinly
+maudlinwort
+mauger
+maugh
+Maugis
+maul
+Maulawiyah
+mauler
+mauley
+mauling
+maulstick
+Maumee
+maumet
+maumetry
+Maun
+maun
+maund
+maunder
+maunderer
+maundful
+maundy
+maunge
+Maurandia
+Maureen
+Mauretanian
+Mauri
+Maurice
+Maurist
+Mauritia
+Mauritian
+Mauser
+mausolea
+mausoleal
+mausolean
+mausoleum
+mauther
+mauve
+mauveine
+mauvette
+mauvine
+maux
+maverick
+mavis
+Mavortian
+mavournin
+mavrodaphne
+maw
+mawbound
+mawk
+mawkish
+mawkishly
+mawkishness
+mawky
+mawp
+Max
+maxilla
+maxillar
+maxillary
+maxilliferous
+maxilliform
+maxilliped
+maxillipedary
+maxillodental
+maxillofacial
+maxillojugal
+maxillolabial
+maxillomandibular
+maxillopalatal
+maxillopalatine
+maxillopharyngeal
+maxillopremaxillary
+maxilloturbinal
+maxillozygomatic
+maxim
+maxima
+maximal
+Maximalism
+Maximalist
+maximally
+maximate
+maximation
+maximed
+maximist
+maximistic
+maximite
+maximization
+maximize
+maximizer
+Maximon
+maximum
+maximus
+maxixe
+maxwell
+May
+may
+Maya
+maya
+Mayaca
+Mayacaceae
+mayacaceous
+Mayan
+Mayance
+Mayathan
+maybe
+Maybird
+Maybloom
+maybush
+Maycock
+maycock
+Mayda
+mayday
+Mayer
+Mayey
+Mayeye
+Mayfair
+mayfish
+Mayflower
+Mayfowl
+mayhap
+mayhappen
+mayhem
+Maying
+Maylike
+maynt
+Mayo
+Mayologist
+mayonnaise
+mayor
+mayoral
+mayoralty
+mayoress
+mayorship
+Mayoruna
+Maypole
+Maypoling
+maypop
+maysin
+mayten
+Maytenus
+Maythorn
+Maytide
+Maytime
+mayweed
+Maywings
+Maywort
+maza
+mazalgia
+Mazama
+mazame
+Mazanderani
+mazapilite
+mazard
+mazarine
+Mazatec
+Mazateco
+Mazda
+Mazdaism
+Mazdaist
+Mazdakean
+Mazdakite
+Mazdean
+maze
+mazed
+mazedly
+mazedness
+mazeful
+mazement
+mazer
+Mazhabi
+mazic
+mazily
+maziness
+mazocacothesis
+mazodynia
+mazolysis
+mazolytic
+mazopathia
+mazopathic
+mazopexy
+Mazovian
+mazuca
+mazuma
+Mazur
+Mazurian
+mazurka
+mazut
+mazy
+mazzard
+Mazzinian
+Mazzinianism
+Mazzinist
+mbalolo
+Mbaya
+mbori
+Mbuba
+Mbunda
+Mcintosh
+Mckay
+Mdewakanton
+me
+meable
+meaching
+mead
+meader
+meadow
+meadowbur
+meadowed
+meadower
+meadowing
+meadowink
+meadowland
+meadowless
+meadowsweet
+meadowwort
+meadowy
+meadsman
+meager
+meagerly
+meagerness
+meagre
+meak
+meal
+mealable
+mealberry
+mealer
+mealies
+mealily
+mealiness
+mealless
+mealman
+mealmonger
+mealmouth
+mealmouthed
+mealproof
+mealtime
+mealy
+mealymouth
+mealymouthed
+mealymouthedly
+mealymouthedness
+mealywing
+mean
+meander
+meanderingly
+meandrine
+meandriniform
+meandrite
+meandrous
+meaned
+meaner
+meaning
+meaningful
+meaningfully
+meaningless
+meaninglessly
+meaninglessness
+meaningly
+meaningness
+meanish
+meanly
+meanness
+meant
+Meantes
+meantone
+meanwhile
+mease
+measle
+measled
+measledness
+measles
+measlesproof
+measly
+measondue
+measurability
+measurable
+measurableness
+measurably
+measuration
+measure
+measured
+measuredly
+measuredness
+measureless
+measurelessly
+measurelessness
+measurely
+measurement
+measurer
+measuring
+meat
+meatal
+meatbird
+meatcutter
+meated
+meathook
+meatily
+meatiness
+meatless
+meatman
+meatometer
+meatorrhaphy
+meatoscope
+meatoscopy
+meatotome
+meatotomy
+meatus
+meatworks
+meaty
+Mebsuta
+Mecaptera
+mecate
+Mecca
+Meccan
+Meccano
+Meccawee
+Mechael
+mechanal
+mechanality
+mechanalize
+mechanic
+mechanical
+mechanicalism
+mechanicalist
+mechanicality
+mechanicalization
+mechanicalize
+mechanically
+mechanicalness
+mechanician
+mechanicochemical
+mechanicocorpuscular
+mechanicointellectual
+mechanicotherapy
+mechanics
+mechanism
+mechanist
+mechanistic
+mechanistically
+mechanization
+mechanize
+mechanizer
+mechanolater
+mechanology
+mechanomorphic
+mechanomorphism
+mechanotherapeutic
+mechanotherapeutics
+mechanotherapist
+mechanotherapy
+Mechir
+Mechitaristican
+Mechlin
+mechoacan
+meckelectomy
+Meckelian
+Mecklenburgian
+mecodont
+Mecodonta
+mecometer
+mecometry
+mecon
+meconic
+meconidium
+meconin
+meconioid
+meconium
+meconology
+meconophagism
+meconophagist
+Mecoptera
+mecopteran
+mecopteron
+mecopterous
+medal
+medaled
+medalet
+medalist
+medalize
+medallary
+medallic
+medallically
+medallion
+medallionist
+meddle
+meddlecome
+meddlement
+meddler
+meddlesome
+meddlesomely
+meddlesomeness
+meddling
+meddlingly
+Mede
+Medellin
+Medeola
+Media
+media
+mediacid
+mediacy
+mediad
+mediaevalize
+mediaevally
+medial
+medialization
+medialize
+medialkaline
+medially
+Median
+median
+medianic
+medianimic
+medianimity
+medianism
+medianity
+medianly
+mediant
+mediastinal
+mediastine
+mediastinitis
+mediastinotomy
+mediastinum
+mediate
+mediately
+mediateness
+mediating
+mediatingly
+mediation
+mediative
+mediatization
+mediatize
+mediator
+mediatorial
+mediatorialism
+mediatorially
+mediatorship
+mediatory
+mediatress
+mediatrice
+mediatrix
+Medic
+medic
+medicable
+Medicago
+medical
+medically
+medicament
+medicamental
+medicamentally
+medicamentary
+medicamentation
+medicamentous
+medicaster
+medicate
+medication
+medicative
+medicator
+medicatory
+Medicean
+Medici
+medicinable
+medicinableness
+medicinal
+medicinally
+medicinalness
+medicine
+medicinelike
+medicinemonger
+mediciner
+medico
+medicobotanical
+medicochirurgic
+medicochirurgical
+medicodental
+medicolegal
+medicolegally
+medicomania
+medicomechanic
+medicomechanical
+medicomoral
+medicophysical
+medicopsychological
+medicopsychology
+medicostatistic
+medicosurgical
+medicotopographic
+medicozoologic
+mediety
+Medieval
+medieval
+medievalism
+medievalist
+medievalistic
+medievalize
+medievally
+medifixed
+mediglacial
+medimn
+medimno
+medimnos
+medimnus
+Medina
+Medinilla
+medino
+medio
+medioanterior
+mediocarpal
+medioccipital
+mediocre
+mediocrist
+mediocrity
+mediocubital
+mediodepressed
+mediodigital
+mediodorsal
+mediodorsally
+mediofrontal
+mediolateral
+mediopalatal
+mediopalatine
+mediopassive
+mediopectoral
+medioperforate
+mediopontine
+medioposterior
+mediosilicic
+mediostapedial
+mediotarsal
+medioventral
+medisance
+medisect
+medisection
+Medish
+Medism
+meditant
+meditate
+meditating
+meditatingly
+meditation
+meditationist
+meditatist
+meditative
+meditatively
+meditativeness
+meditator
+mediterranean
+Mediterraneanism
+Mediterraneanization
+Mediterraneanize
+mediterraneous
+medithorax
+Meditrinalia
+meditullium
+medium
+mediumism
+mediumistic
+mediumization
+mediumize
+mediumship
+medius
+Medize
+Medizer
+medjidie
+medlar
+medley
+Medoc
+medregal
+medrick
+medrinaque
+medulla
+medullar
+medullary
+medullate
+medullated
+medullation
+medullispinal
+medullitis
+medullization
+medullose
+Medusa
+Medusaean
+medusal
+medusalike
+medusan
+medusiferous
+medusiform
+medusoid
+meebos
+meece
+meed
+meedless
+Meehan
+meek
+meeken
+meekhearted
+meekheartedness
+meekling
+meekly
+meekness
+Meekoceras
+Meeks
+meered
+meerkat
+meerschaum
+meese
+meet
+meetable
+meeten
+meeter
+meeterly
+meethelp
+meethelper
+meeting
+meetinger
+meetinghouse
+meetly
+meetness
+Meg
+megabar
+megacephalia
+megacephalic
+megacephaly
+megacerine
+Megaceros
+megacerotine
+Megachile
+megachilid
+Megachilidae
+Megachiroptera
+megachiropteran
+megachiropterous
+megacolon
+megacosm
+megacoulomb
+megacycle
+megadont
+Megadrili
+megadynamics
+megadyne
+Megaera
+megaerg
+megafarad
+megafog
+megagamete
+megagametophyte
+megajoule
+megakaryocyte
+Megalactractus
+Megaladapis
+Megalaema
+Megalaemidae
+Megalania
+megaleme
+Megalensian
+megalerg
+Megalesia
+Megalesian
+megalesthete
+megalethoscope
+Megalichthyidae
+Megalichthys
+megalith
+megalithic
+Megalobatrachus
+megaloblast
+megaloblastic
+megalocardia
+megalocarpous
+megalocephalia
+megalocephalic
+megalocephalous
+megalocephaly
+Megaloceros
+megalochirous
+megalocornea
+megalocyte
+megalocytosis
+megalodactylia
+megalodactylism
+megalodactylous
+Megalodon
+megalodont
+megalodontia
+Megalodontidae
+megaloenteron
+megalogastria
+megaloglossia
+megalograph
+megalography
+megalohepatia
+megalokaryocyte
+megalomania
+megalomaniac
+megalomaniacal
+megalomelia
+Megalonychidae
+Megalonyx
+megalopa
+megalopenis
+megalophonic
+megalophonous
+megalophthalmus
+megalopia
+megalopic
+Megalopidae
+Megalopinae
+megalopine
+megaloplastocyte
+megalopolis
+megalopolitan
+megalopolitanism
+megalopore
+megalops
+megalopsia
+Megaloptera
+Megalopyge
+Megalopygidae
+Megalornis
+Megalornithidae
+megalosaur
+megalosaurian
+Megalosauridae
+megalosauroid
+Megalosaurus
+megaloscope
+megaloscopy
+megalosphere
+megalospheric
+megalosplenia
+megalosyndactyly
+megaloureter
+Megaluridae
+Megamastictora
+megamastictoral
+megamere
+megameter
+megampere
+Meganeura
+Meganthropus
+meganucleus
+megaparsec
+megaphone
+megaphonic
+megaphotographic
+megaphotography
+megaphyllous
+Megaphyton
+megapod
+megapode
+Megapodidae
+Megapodiidae
+Megapodius
+megaprosopous
+Megaptera
+Megapterinae
+megapterine
+Megarensian
+Megarhinus
+Megarhyssa
+Megarian
+Megarianism
+Megaric
+megaron
+megasclere
+megascleric
+megasclerous
+megasclerum
+megascope
+megascopic
+megascopical
+megascopically
+megaseism
+megaseismic
+megaseme
+Megasoma
+megasporange
+megasporangium
+megaspore
+megasporic
+megasporophyll
+megasynthetic
+megathere
+megatherian
+Megatheriidae
+megatherine
+megatherioid
+Megatherium
+megatherm
+megathermic
+megatheroid
+megaton
+megatype
+megatypy
+megavolt
+megawatt
+megaweber
+megazooid
+megazoospore
+megerg
+Meggy
+megilp
+megmho
+megohm
+megohmit
+megohmmeter
+megophthalmus
+megotalc
+Megrel
+Megrez
+megrim
+megrimish
+mehalla
+mehari
+meharist
+Mehelya
+mehmandar
+Mehrdad
+mehtar
+mehtarship
+Meibomia
+Meibomian
+meile
+mein
+meinie
+meio
+meiobar
+meionite
+meiophylly
+meiosis
+meiotaxy
+meiotic
+Meissa
+Meistersinger
+meith
+Meithei
+meizoseismal
+meizoseismic
+mejorana
+Mekbuda
+Mekhitarist
+mekometer
+mel
+mela
+melaconite
+melada
+meladiorite
+melagabbro
+melagra
+melagranite
+Melaleuca
+melalgia
+melam
+melamed
+melamine
+melampodium
+Melampsora
+Melampsoraceae
+Melampus
+melampyritol
+Melampyrum
+melanagogal
+melanagogue
+melancholia
+melancholiac
+melancholic
+melancholically
+melancholily
+melancholiness
+melancholious
+melancholiously
+melancholiousness
+melancholish
+melancholist
+melancholize
+melancholomaniac
+melancholy
+melancholyish
+Melanchthonian
+Melanconiaceae
+melanconiaceous
+Melanconiales
+Melanconium
+melanemia
+melanemic
+Melanesian
+melange
+melanger
+melangeur
+Melania
+melanian
+melanic
+melaniferous
+Melaniidae
+melanilin
+melaniline
+melanin
+Melanippe
+Melanippus
+melanism
+melanistic
+melanite
+melanitic
+melanize
+melano
+melanoblast
+melanocarcinoma
+melanocerite
+Melanochroi
+Melanochroid
+melanochroite
+melanochroous
+melanocomous
+melanocrate
+melanocratic
+melanocyte
+Melanodendron
+melanoderma
+melanodermia
+melanodermic
+Melanogaster
+melanogen
+Melanoi
+melanoid
+melanoidin
+melanoma
+melanopathia
+melanopathy
+melanophore
+melanoplakia
+Melanoplus
+melanorrhagia
+melanorrhea
+Melanorrhoea
+melanosarcoma
+melanosarcomatosis
+melanoscope
+melanose
+melanosed
+melanosis
+melanosity
+melanospermous
+melanotekite
+melanotic
+melanotrichous
+melanous
+melanterite
+Melanthaceae
+melanthaceous
+Melanthium
+melanure
+melanuresis
+melanuria
+melanuric
+melaphyre
+Melas
+melasma
+melasmic
+melassigenic
+Melastoma
+Melastomaceae
+melastomaceous
+melastomad
+melatope
+melaxuma
+Melburnian
+Melcarth
+melch
+Melchite
+Melchora
+meld
+melder
+meldometer
+meldrop
+mele
+Meleager
+Meleagridae
+Meleagrina
+Meleagrinae
+meleagrine
+Meleagris
+melebiose
+melee
+melena
+melene
+melenic
+Meles
+Meletian
+Meletski
+melezitase
+melezitose
+Melia
+Meliaceae
+meliaceous
+Meliadus
+Melian
+Melianthaceae
+melianthaceous
+Melianthus
+meliatin
+melibiose
+melic
+Melica
+Melicent
+melicera
+meliceric
+meliceris
+melicerous
+Melicerta
+Melicertidae
+melichrous
+melicitose
+Melicocca
+melicraton
+melilite
+melilitite
+melilot
+Melilotus
+Melinae
+Melinda
+meline
+Melinis
+melinite
+Meliola
+meliorability
+meliorable
+meliorant
+meliorate
+meliorater
+melioration
+meliorative
+meliorator
+meliorism
+meliorist
+melioristic
+meliority
+meliphagan
+Meliphagidae
+meliphagidan
+meliphagous
+meliphanite
+Melipona
+Meliponinae
+meliponine
+melisma
+melismatic
+melismatics
+Melissa
+melissyl
+melissylic
+Melitaea
+melitemia
+melithemia
+melitis
+melitose
+melitriose
+melittologist
+melittology
+melituria
+melituric
+mell
+mellaginous
+mellate
+mellay
+melleous
+meller
+Mellifera
+melliferous
+mellificate
+mellification
+mellifluence
+mellifluent
+mellifluently
+mellifluous
+mellifluously
+mellifluousness
+mellimide
+mellisonant
+mellisugent
+mellit
+mellitate
+mellite
+mellitic
+Mellivora
+Mellivorinae
+mellivorous
+mellon
+mellonides
+mellophone
+mellow
+mellowly
+mellowness
+mellowy
+mellsman
+Melocactus
+melocoton
+melodeon
+melodia
+melodial
+melodially
+melodic
+melodica
+melodically
+melodicon
+melodics
+melodiograph
+melodion
+melodious
+melodiously
+melodiousness
+melodism
+melodist
+melodize
+melodizer
+melodram
+melodrama
+melodramatic
+melodramatical
+melodramatically
+melodramaticism
+melodramatics
+melodramatist
+melodramatize
+melodrame
+melody
+melodyless
+meloe
+melogram
+Melogrammataceae
+melograph
+melographic
+meloid
+Meloidae
+melologue
+Melolontha
+Melolonthidae
+melolonthidan
+Melolonthides
+Melolonthinae
+melolonthine
+melomane
+melomania
+melomaniac
+melomanic
+melon
+meloncus
+Melonechinus
+melongena
+melongrower
+melonist
+melonite
+Melonites
+melonlike
+melonmonger
+melonry
+melophone
+melophonic
+melophonist
+melopiano
+meloplast
+meloplastic
+meloplasty
+melopoeia
+melopoeic
+melos
+melosa
+Melospiza
+Melothria
+melotragedy
+melotragic
+melotrope
+melt
+meltability
+meltable
+meltage
+melted
+meltedness
+melteigite
+melter
+melters
+melting
+meltingly
+meltingness
+melton
+Meltonian
+Melungeon
+Melursus
+mem
+member
+membered
+memberless
+membership
+membracid
+Membracidae
+membracine
+membral
+membrally
+membrana
+membranaceous
+membranaceously
+membranate
+membrane
+membraned
+membraneless
+membranelike
+membranelle
+membraneous
+membraniferous
+membraniform
+membranin
+Membranipora
+Membraniporidae
+membranocalcareous
+membranocartilaginous
+membranocoriaceous
+membranocorneous
+membranogenic
+membranoid
+membranology
+membranonervous
+membranosis
+membranous
+membranously
+membranula
+membranule
+membretto
+memento
+meminna
+Memnon
+Memnonian
+Memnonium
+memo
+memoir
+memoirism
+memoirist
+memorabilia
+memorability
+memorable
+memorableness
+memorably
+memoranda
+memorandist
+memorandize
+memorandum
+memorative
+memoria
+memorial
+memorialist
+memorialization
+memorialize
+memorializer
+memorially
+memoried
+memorious
+memorist
+memorizable
+memorization
+memorize
+memorizer
+memory
+memoryless
+Memphian
+Memphite
+men
+menaccanite
+menaccanitic
+menace
+menaceable
+menaceful
+menacement
+menacer
+menacing
+menacingly
+menacme
+menadione
+menage
+menagerie
+menagerist
+menald
+Menangkabau
+menarche
+Menaspis
+mend
+mendable
+mendacious
+mendaciously
+mendaciousness
+mendacity
+Mendaite
+Mende
+mendee
+Mendelian
+Mendelianism
+Mendelianist
+Mendelism
+Mendelist
+Mendelize
+Mendelssohnian
+Mendelssohnic
+mendelyeevite
+mender
+Mendi
+mendicancy
+mendicant
+mendicate
+mendication
+mendicity
+mending
+mendipite
+mendole
+mendozite
+mends
+meneghinite
+menfolk
+Menfra
+meng
+Mengwe
+menhaden
+menhir
+menial
+menialism
+meniality
+menially
+Menic
+menilite
+meningeal
+meninges
+meningic
+meningina
+meningism
+meningitic
+meningitis
+meningocele
+meningocephalitis
+meningocerebritis
+meningococcal
+meningococcemia
+meningococcic
+meningococcus
+meningocortical
+meningoencephalitis
+meningoencephalocele
+meningomalacia
+meningomyclitic
+meningomyelitis
+meningomyelocele
+meningomyelorrhaphy
+meningorachidian
+meningoradicular
+meningorhachidian
+meningorrhagia
+meningorrhea
+meningorrhoea
+meningosis
+meningospinal
+meningotyphoid
+meninting
+meninx
+meniscal
+meniscate
+menisciform
+meniscitis
+meniscoid
+meniscoidal
+Meniscotheriidae
+Meniscotherium
+meniscus
+menisperm
+Menispermaceae
+menispermaceous
+menispermine
+Menispermum
+Menkalinan
+Menkar
+Menkib
+menkind
+mennom
+Mennonist
+Mennonite
+Menobranchidae
+Menobranchus
+menognath
+menognathous
+menologium
+menology
+menometastasis
+Menominee
+menopausal
+menopause
+menopausic
+menophania
+menoplania
+Menopoma
+Menorah
+Menorhyncha
+menorhynchous
+menorrhagia
+menorrhagic
+menorrhagy
+menorrhea
+menorrheic
+menorrhoea
+menorrhoeic
+menoschesis
+menoschetic
+menosepsis
+menostasia
+menostasis
+menostatic
+menostaxis
+Menotyphla
+menotyphlic
+menoxenia
+mensa
+mensal
+mensalize
+mense
+menseful
+menseless
+menses
+Menshevik
+Menshevism
+Menshevist
+mensk
+menstrual
+menstruant
+menstruate
+menstruation
+menstruous
+menstruousness
+menstruum
+mensual
+mensurability
+mensurable
+mensurableness
+mensurably
+mensural
+mensuralist
+mensurate
+mensuration
+mensurational
+mensurative
+Ment
+mentagra
+mental
+mentalis
+mentalism
+mentalist
+mentalistic
+mentality
+mentalization
+mentalize
+mentally
+mentary
+mentation
+Mentha
+Menthaceae
+menthaceous
+menthadiene
+menthane
+menthene
+menthenol
+menthenone
+menthol
+mentholated
+menthone
+menthyl
+menticide
+menticultural
+menticulture
+mentiferous
+mentiform
+mentigerous
+mentimeter
+mentimutation
+mention
+mentionability
+mentionable
+mentionless
+mentoanterior
+mentobregmatic
+mentocondylial
+mentohyoid
+mentolabial
+mentomeckelian
+mentonniere
+mentoposterior
+mentor
+mentorial
+mentorism
+mentorship
+mentum
+Mentzelia
+menu
+Menura
+Menurae
+Menuridae
+meny
+Menyanthaceae
+Menyanthaceous
+Menyanthes
+menyie
+menzie
+Menziesia
+Meo
+Mephisto
+Mephistophelean
+Mephistopheleanly
+Mephistopheles
+Mephistophelic
+Mephistophelistic
+mephitic
+mephitical
+Mephitinae
+mephitine
+mephitis
+mephitism
+Mer
+Merak
+meralgia
+meraline
+Merat
+Meratia
+merbaby
+mercal
+mercantile
+mercantilely
+mercantilism
+mercantilist
+mercantilistic
+mercantility
+mercaptal
+mercaptan
+mercaptides
+mercaptids
+mercapto
+mercaptol
+mercaptole
+Mercator
+Mercatorial
+mercatorial
+Mercedarian
+Mercedes
+Mercedinus
+Mercedonius
+mercenarily
+mercenariness
+mercenary
+mercer
+merceress
+mercerization
+mercerize
+mercerizer
+mercership
+mercery
+merch
+merchandisable
+merchandise
+merchandiser
+merchant
+merchantable
+merchantableness
+merchanter
+merchanthood
+merchantish
+merchantlike
+merchantly
+merchantman
+merchantry
+merchantship
+merchet
+Mercian
+merciful
+mercifully
+mercifulness
+merciless
+mercilessly
+mercilessness
+merciment
+mercurate
+mercuration
+Mercurean
+mercurial
+Mercurialis
+mercurialism
+mercuriality
+mercurialization
+mercurialize
+mercurially
+mercurialness
+mercuriamines
+mercuriammonium
+Mercurian
+mercuriate
+mercuric
+mercuride
+mercurification
+mercurify
+Mercurius
+mercurization
+mercurize
+Mercurochrome
+mercurophen
+mercurous
+Mercury
+mercy
+mercyproof
+merdivorous
+mere
+Meredithian
+merel
+merely
+merenchyma
+merenchymatous
+meresman
+merestone
+meretricious
+meretriciously
+meretriciousness
+meretrix
+merfold
+merfolk
+merganser
+merge
+mergence
+merger
+mergh
+Merginae
+Mergulus
+Mergus
+meriah
+mericarp
+merice
+Merida
+meridian
+Meridion
+Meridionaceae
+Meridional
+meridional
+meridionality
+meridionally
+meril
+meringue
+meringued
+Merino
+Meriones
+meriquinoid
+meriquinoidal
+meriquinone
+meriquinonic
+meriquinonoid
+merism
+merismatic
+merismoid
+merist
+meristele
+meristelic
+meristem
+meristematic
+meristematically
+meristic
+meristically
+meristogenous
+merit
+meritable
+merited
+meritedly
+meriter
+meritful
+meritless
+meritmonger
+meritmongering
+meritmongery
+meritorious
+meritoriously
+meritoriousness
+merk
+merkhet
+merkin
+merl
+merle
+merlette
+merlin
+merlon
+Merlucciidae
+Merluccius
+mermaid
+mermaiden
+merman
+Mermis
+mermithaner
+mermithergate
+Mermithidae
+mermithization
+mermithized
+mermithogyne
+Mermnad
+Mermnadae
+mermother
+mero
+meroblastic
+meroblastically
+merocele
+merocelic
+merocerite
+meroceritic
+merocrystalline
+merocyte
+Merodach
+merogamy
+merogastrula
+merogenesis
+merogenetic
+merogenic
+merognathite
+merogonic
+merogony
+merohedral
+merohedric
+merohedrism
+meroistic
+Meroitic
+meromorphic
+Meromyaria
+meromyarian
+merop
+Merope
+Meropes
+meropia
+Meropidae
+meropidan
+meroplankton
+meroplanktonic
+meropodite
+meropoditic
+Merops
+merorganization
+merorganize
+meros
+merosomal
+Merosomata
+merosomatous
+merosome
+merosthenic
+Merostomata
+merostomatous
+merostome
+merostomous
+merosymmetrical
+merosymmetry
+merosystematic
+merotomize
+merotomy
+merotropism
+merotropy
+Merovingian
+meroxene
+Merozoa
+merozoite
+merpeople
+merribauks
+merribush
+Merril
+merriless
+merrily
+merriment
+merriness
+merrow
+merry
+merrymake
+merrymaker
+merrymaking
+merryman
+merrymeeting
+merrythought
+merrytrotter
+merrywing
+merse
+Mertensia
+Merton
+Merula
+meruline
+merulioid
+Merulius
+merveileux
+merwinite
+merwoman
+Merychippus
+merycism
+merycismus
+Merycoidodon
+Merycoidodontidae
+Merycopotamidae
+Merycopotamus
+Mes
+mesa
+mesabite
+mesaconate
+mesaconic
+mesad
+Mesadenia
+mesadenia
+mesail
+mesal
+mesalike
+mesally
+mesameboid
+mesange
+mesaortitis
+mesaraic
+mesaraical
+mesarch
+mesarteritic
+mesarteritis
+Mesartim
+mesaticephal
+mesaticephali
+mesaticephalic
+mesaticephalism
+mesaticephalous
+mesaticephaly
+mesatipellic
+mesatipelvic
+mesatiskelic
+mesaxonic
+mescal
+Mescalero
+mescaline
+mescalism
+mesdames
+mese
+mesectoderm
+mesem
+Mesembryanthemaceae
+Mesembryanthemum
+mesembryo
+mesembryonic
+mesencephalic
+mesencephalon
+mesenchyma
+mesenchymal
+mesenchymatal
+mesenchymatic
+mesenchymatous
+mesenchyme
+mesendoderm
+mesenna
+mesenterial
+mesenteric
+mesenterical
+mesenterically
+mesenteriform
+mesenteriolum
+mesenteritic
+mesenteritis
+mesenteron
+mesenteronic
+mesentery
+mesentoderm
+mesepimeral
+mesepimeron
+mesepisternal
+mesepisternum
+mesepithelial
+mesepithelium
+mesethmoid
+mesethmoidal
+mesh
+Meshech
+meshed
+meshrabiyeh
+meshwork
+meshy
+mesiad
+mesial
+mesially
+mesian
+mesic
+mesically
+mesilla
+mesiobuccal
+mesiocervical
+mesioclusion
+mesiodistal
+mesiodistally
+mesiogingival
+mesioincisal
+mesiolabial
+mesiolingual
+mesion
+mesioocclusal
+mesiopulpal
+mesioversion
+Mesitae
+Mesites
+Mesitidae
+mesitite
+mesityl
+mesitylene
+mesitylenic
+mesmerian
+mesmeric
+mesmerical
+mesmerically
+mesmerism
+mesmerist
+mesmerite
+mesmerizability
+mesmerizable
+mesmerization
+mesmerize
+mesmerizee
+mesmerizer
+mesmeromania
+mesmeromaniac
+mesnality
+mesnalty
+mesne
+meso
+mesoappendicitis
+mesoappendix
+mesoarial
+mesoarium
+mesobar
+mesobenthos
+mesoblast
+mesoblastema
+mesoblastemic
+mesoblastic
+mesobranchial
+mesobregmate
+mesocaecal
+mesocaecum
+mesocardia
+mesocardium
+mesocarp
+mesocentrous
+mesocephal
+mesocephalic
+mesocephalism
+mesocephalon
+mesocephalous
+mesocephaly
+mesochilium
+mesochondrium
+mesochroic
+mesocoele
+mesocoelian
+mesocoelic
+mesocolic
+mesocolon
+mesocoracoid
+mesocranial
+mesocratic
+mesocuneiform
+mesode
+mesoderm
+mesodermal
+mesodermic
+Mesodesma
+Mesodesmatidae
+Mesodesmidae
+Mesodevonian
+Mesodevonic
+mesodic
+mesodisilicic
+mesodont
+Mesoenatides
+mesofurca
+mesofurcal
+mesogaster
+mesogastral
+mesogastric
+mesogastrium
+mesogloea
+mesogloeal
+mesognathic
+mesognathion
+mesognathism
+mesognathous
+mesognathy
+mesogyrate
+mesohepar
+Mesohippus
+mesokurtic
+mesolabe
+mesole
+mesolecithal
+mesolimnion
+mesolite
+mesolithic
+mesologic
+mesological
+mesology
+mesomere
+mesomeric
+mesomerism
+mesometral
+mesometric
+mesometrium
+mesomorph
+mesomorphic
+mesomorphous
+mesomorphy
+Mesomyodi
+mesomyodian
+mesomyodous
+meson
+mesonasal
+Mesonemertini
+mesonephric
+mesonephridium
+mesonephritic
+mesonephros
+mesonic
+mesonotal
+mesonotum
+Mesonychidae
+Mesonyx
+mesoparapteral
+mesoparapteron
+mesopectus
+mesoperiodic
+mesopetalum
+mesophile
+mesophilic
+mesophilous
+mesophragm
+mesophragma
+mesophragmal
+mesophryon
+mesophyll
+mesophyllous
+mesophyllum
+mesophyte
+mesophytic
+mesophytism
+mesopic
+mesoplankton
+mesoplanktonic
+mesoplast
+mesoplastic
+mesoplastral
+mesoplastron
+mesopleural
+mesopleuron
+Mesoplodon
+mesoplodont
+mesopodial
+mesopodiale
+mesopodium
+mesopotamia
+Mesopotamian
+mesopotamic
+mesoprescutal
+mesoprescutum
+mesoprosopic
+mesopterygial
+mesopterygium
+mesopterygoid
+mesorchial
+mesorchium
+Mesore
+mesorectal
+mesorectum
+Mesoreodon
+mesorrhin
+mesorrhinal
+mesorrhinian
+mesorrhinism
+mesorrhinium
+mesorrhiny
+mesosalpinx
+mesosaur
+Mesosauria
+Mesosaurus
+mesoscapula
+mesoscapular
+mesoscutal
+mesoscutellar
+mesoscutellum
+mesoscutum
+mesoseismal
+mesoseme
+mesosiderite
+mesosigmoid
+mesoskelic
+mesosoma
+mesosomatic
+mesosome
+mesosperm
+mesospore
+mesosporic
+mesosporium
+mesostasis
+mesosternal
+mesosternebra
+mesosternebral
+mesosternum
+mesostethium
+Mesostoma
+Mesostomatidae
+mesostomid
+mesostyle
+mesostylous
+Mesosuchia
+mesosuchian
+Mesotaeniaceae
+Mesotaeniales
+mesotarsal
+mesotartaric
+Mesothelae
+mesothelial
+mesothelium
+mesotherm
+mesothermal
+mesothesis
+mesothet
+mesothetic
+mesothetical
+mesothoracic
+mesothoracotheca
+mesothorax
+mesothorium
+mesotonic
+mesotroch
+mesotrocha
+mesotrochal
+mesotrochous
+mesotron
+mesotropic
+mesotympanic
+mesotype
+mesovarian
+mesovarium
+mesoventral
+mesoventrally
+mesoxalate
+mesoxalic
+mesoxalyl
+Mesozoa
+mesozoan
+Mesozoic
+mespil
+Mespilus
+Mespot
+mesquite
+Mesropian
+mess
+message
+messagery
+Messalian
+messaline
+messan
+Messapian
+messe
+messelite
+messenger
+messengership
+messer
+messet
+Messiah
+Messiahship
+Messianic
+Messianically
+messianically
+Messianism
+Messianist
+Messianize
+Messias
+messieurs
+messily
+messin
+Messines
+Messinese
+messiness
+messing
+messman
+messmate
+messor
+messroom
+messrs
+messtin
+messuage
+messy
+mestee
+mester
+mestiza
+mestizo
+mestome
+Mesua
+Mesvinian
+mesymnion
+met
+meta
+metabasis
+metabasite
+metabatic
+metabiological
+metabiology
+metabiosis
+metabiotic
+metabiotically
+metabismuthic
+metabisulphite
+metabletic
+Metabola
+metabola
+metabole
+Metabolia
+metabolian
+metabolic
+metabolism
+metabolite
+metabolizable
+metabolize
+metabolon
+metabolous
+metaboly
+metaborate
+metaboric
+metabranchial
+metabrushite
+metabular
+metacarpal
+metacarpale
+metacarpophalangeal
+metacarpus
+metacenter
+metacentral
+metacentric
+metacentricity
+metachemic
+metachemistry
+Metachlamydeae
+metachlamydeous
+metachromasis
+metachromatic
+metachromatin
+metachromatinic
+metachromatism
+metachrome
+metachronism
+metachrosis
+metacinnabarite
+metacism
+metacismus
+metaclase
+metacneme
+metacoele
+metacoelia
+metaconal
+metacone
+metaconid
+metaconule
+metacoracoid
+metacrasis
+metacresol
+metacromial
+metacromion
+metacryst
+metacyclic
+metacymene
+metad
+metadiabase
+metadiazine
+metadiorite
+metadiscoidal
+metadromous
+metafluidal
+metaformaldehyde
+metafulminuric
+metagalactic
+metagalaxy
+metagaster
+metagastric
+metagastrula
+metage
+Metageitnion
+metagelatin
+metagenesis
+metagenetic
+metagenetically
+metagenic
+metageometer
+metageometrical
+metageometry
+metagnath
+metagnathism
+metagnathous
+metagnomy
+metagnostic
+metagnosticism
+metagram
+metagrammatism
+metagrammatize
+metagraphic
+metagraphy
+metahewettite
+metahydroxide
+metaigneous
+metainfective
+metakinesis
+metakinetic
+metal
+metalammonium
+metalanguage
+metalbumin
+metalcraft
+metaldehyde
+metalepsis
+metaleptic
+metaleptical
+metaleptically
+metaler
+metaline
+metalined
+metaling
+metalinguistic
+metalinguistics
+metalism
+metalist
+metalization
+metalize
+metallary
+metalleity
+metallic
+metallical
+metallically
+metallicity
+metallicize
+metallicly
+metallics
+metallide
+metallifacture
+metalliferous
+metallification
+metalliform
+metallify
+metallik
+metalline
+metallism
+metallization
+metallize
+metallochrome
+metallochromy
+metallogenetic
+metallogenic
+metallogeny
+metallograph
+metallographer
+metallographic
+metallographical
+metallographist
+metallography
+metalloid
+metalloidal
+metallometer
+metallophone
+metalloplastic
+metallorganic
+metallotherapeutic
+metallotherapy
+metallurgic
+metallurgical
+metallurgically
+metallurgist
+metallurgy
+metalmonger
+metalogic
+metalogical
+metaloph
+metalorganic
+metaloscope
+metaloscopy
+metaluminate
+metaluminic
+metalware
+metalwork
+metalworker
+metalworking
+metalworks
+metamathematical
+metamathematics
+metamer
+metameral
+metamere
+metameric
+metamerically
+metameride
+metamerism
+metamerization
+metamerized
+metamerous
+metamery
+metamorphic
+metamorphism
+metamorphize
+metamorphopsia
+metamorphopsy
+metamorphosable
+metamorphose
+metamorphoser
+metamorphoses
+metamorphosian
+metamorphosic
+metamorphosical
+metamorphosis
+metamorphostical
+metamorphotic
+metamorphous
+metamorphy
+Metamynodon
+metanalysis
+metanauplius
+Metanemertini
+metanephric
+metanephritic
+metanephron
+metanephros
+metanepionic
+metanilic
+metanitroaniline
+metanomen
+metanotal
+metanotum
+metantimonate
+metantimonic
+metantimonious
+metantimonite
+metantimonous
+metanym
+metaorganism
+metaparapteral
+metaparapteron
+metapectic
+metapectus
+metapepsis
+metapeptone
+metaperiodic
+metaphase
+metaphenomenal
+metaphenomenon
+metaphenylene
+metaphenylenediamin
+metaphenylenediamine
+metaphloem
+metaphonical
+metaphonize
+metaphony
+metaphor
+metaphoric
+metaphorical
+metaphorically
+metaphoricalness
+metaphorist
+metaphorize
+metaphosphate
+metaphosphoric
+metaphosphorous
+metaphragm
+metaphragmal
+metaphrase
+metaphrasis
+metaphrast
+metaphrastic
+metaphrastical
+metaphrastically
+metaphyseal
+metaphysic
+metaphysical
+metaphysically
+metaphysician
+metaphysicianism
+metaphysicist
+metaphysicize
+metaphysicous
+metaphysics
+metaphysis
+metaphyte
+metaphytic
+metaphyton
+metaplasia
+metaplasis
+metaplasm
+metaplasmic
+metaplast
+metaplastic
+metapleural
+metapleure
+metapleuron
+metaplumbate
+metaplumbic
+metapneumonic
+metapneustic
+metapodial
+metapodiale
+metapodium
+metapolitic
+metapolitical
+metapolitician
+metapolitics
+metapophyseal
+metapophysial
+metapophysis
+metapore
+metapostscutellar
+metapostscutellum
+metaprescutal
+metaprescutum
+metaprotein
+metapsychic
+metapsychical
+metapsychics
+metapsychism
+metapsychist
+metapsychological
+metapsychology
+metapsychosis
+metapterygial
+metapterygium
+metapterygoid
+metarabic
+metarhyolite
+metarossite
+metarsenic
+metarsenious
+metarsenite
+metasaccharinic
+metascutal
+metascutellar
+metascutellum
+metascutum
+metasedimentary
+metasilicate
+metasilicic
+metasoma
+metasomal
+metasomasis
+metasomatic
+metasomatism
+metasomatosis
+metasome
+metasperm
+Metaspermae
+metaspermic
+metaspermous
+metastability
+metastable
+metastannate
+metastannic
+metastasis
+metastasize
+metastatic
+metastatical
+metastatically
+metasternal
+metasternum
+metasthenic
+metastibnite
+metastigmate
+metastoma
+metastome
+metastrophe
+metastrophic
+metastyle
+metatantalic
+metatarsal
+metatarsale
+metatarse
+metatarsophalangeal
+metatarsus
+metatatic
+metatatically
+metataxic
+metate
+metathalamus
+metatheology
+Metatheria
+metatherian
+metatheses
+metathesis
+metathetic
+metathetical
+metathetically
+metathoracic
+metathorax
+metatitanate
+metatitanic
+metatoluic
+metatoluidine
+metatracheal
+metatrophic
+metatungstic
+metatype
+metatypic
+Metaurus
+metavanadate
+metavanadic
+metavauxite
+metavoltine
+metaxenia
+metaxite
+metaxylem
+metaxylene
+metayer
+Metazoa
+metazoal
+metazoan
+metazoea
+metazoic
+metazoon
+mete
+metel
+metempiric
+metempirical
+metempirically
+metempiricism
+metempiricist
+metempirics
+metempsychic
+metempsychosal
+metempsychose
+metempsychoses
+metempsychosical
+metempsychosis
+metempsychosize
+metemptosis
+metencephalic
+metencephalon
+metensarcosis
+metensomatosis
+metenteron
+metenteronic
+meteogram
+meteograph
+meteor
+meteorgraph
+meteoric
+meteorical
+meteorically
+meteorism
+meteorist
+meteoristic
+meteorital
+meteorite
+meteoritic
+meteoritics
+meteorization
+meteorize
+meteorlike
+meteorogram
+meteorograph
+meteorographic
+meteorography
+meteoroid
+meteoroidal
+meteorolite
+meteorolitic
+meteorologic
+meteorological
+meteorologically
+meteorologist
+meteorology
+meteorometer
+meteoroscope
+meteoroscopy
+meteorous
+metepencephalic
+metepencephalon
+metepimeral
+metepimeron
+metepisternal
+metepisternum
+meter
+meterage
+metergram
+meterless
+meterman
+metership
+metestick
+metewand
+meteyard
+methacrylate
+methacrylic
+methadone
+methanal
+methanate
+methane
+methanoic
+methanolysis
+methanometer
+metheglin
+methemoglobin
+methemoglobinemia
+methemoglobinuria
+methenamine
+methene
+methenyl
+mether
+methid
+methide
+methine
+methinks
+methiodide
+methionic
+methionine
+methobromide
+method
+methodaster
+methodeutic
+methodic
+methodical
+methodically
+methodicalness
+methodics
+methodism
+Methodist
+methodist
+Methodistic
+Methodistically
+Methodisty
+methodization
+Methodize
+methodize
+methodizer
+methodless
+methodological
+methodologically
+methodologist
+methodology
+Methody
+methought
+methoxide
+methoxychlor
+methoxyl
+methronic
+Methuselah
+methyl
+methylacetanilide
+methylal
+methylamine
+methylaniline
+methylanthracene
+methylate
+methylation
+methylator
+methylcholanthrene
+methylene
+methylenimine
+methylenitan
+methylethylacetic
+methylglycine
+methylglycocoll
+methylglyoxal
+methylic
+methylmalonic
+methylnaphthalene
+methylol
+methylolurea
+methylosis
+methylotic
+methylpentose
+methylpentoses
+methylpropane
+methylsulfanol
+metic
+meticulosity
+meticulous
+meticulously
+meticulousness
+metier
+Metin
+metis
+Metoac
+metochous
+metochy
+metoestrous
+metoestrum
+Metol
+metonym
+metonymic
+metonymical
+metonymically
+metonymous
+metonymously
+metonymy
+metope
+Metopias
+metopic
+metopion
+metopism
+Metopoceros
+metopomancy
+metopon
+metoposcopic
+metoposcopical
+metoposcopist
+metoposcopy
+metosteal
+metosteon
+metoxazine
+metoxenous
+metoxeny
+metra
+metralgia
+metranate
+metranemia
+metratonia
+Metrazol
+metrectasia
+metrectatic
+metrectomy
+metrectopia
+metrectopic
+metrectopy
+metreless
+metreship
+metreta
+metrete
+metretes
+metria
+metric
+metrical
+metrically
+metrician
+metricism
+metricist
+metricize
+metrics
+Metridium
+metrification
+metrifier
+metrify
+metriocephalic
+metrist
+metritis
+metrocampsis
+metrocarat
+metrocarcinoma
+metrocele
+metroclyst
+metrocolpocele
+metrocracy
+metrocratic
+metrocystosis
+metrodynia
+metrofibroma
+metrological
+metrologist
+metrologue
+metrology
+metrolymphangitis
+metromalacia
+metromalacoma
+metromalacosis
+metromania
+metromaniac
+metromaniacal
+metrometer
+metroneuria
+metronome
+metronomic
+metronomical
+metronomically
+metronymic
+metronymy
+metroparalysis
+metropathia
+metropathic
+metropathy
+metroperitonitis
+metrophlebitis
+metrophotography
+metropole
+metropolis
+metropolitan
+metropolitanate
+metropolitancy
+metropolitanism
+metropolitanize
+metropolitanship
+metropolite
+metropolitic
+metropolitical
+metropolitically
+metroptosia
+metroptosis
+metroradioscope
+metrorrhagia
+metrorrhagic
+metrorrhea
+metrorrhexis
+metrorthosis
+metrosalpingitis
+metrosalpinx
+metroscirrhus
+metroscope
+metroscopy
+Metrosideros
+metrostaxis
+metrostenosis
+metrosteresis
+metrostyle
+metrosynizesis
+metrotherapist
+metrotherapy
+metrotome
+metrotomy
+Metroxylon
+mettar
+mettle
+mettled
+mettlesome
+mettlesomely
+mettlesomeness
+metusia
+metze
+Meum
+meuse
+meute
+Mev
+mew
+meward
+mewer
+mewl
+mewler
+Mexica
+Mexican
+Mexicanize
+Mexitl
+Mexitli
+meyerhofferite
+mezcal
+Mezentian
+Mezentism
+Mezentius
+mezereon
+mezereum
+mezuzah
+mezzanine
+mezzo
+mezzograph
+mezzotint
+mezzotinter
+mezzotinto
+mho
+mhometer
+mi
+Miami
+miamia
+mian
+Miao
+Miaotse
+Miaotze
+miaow
+miaower
+Miaplacidus
+miargyrite
+miarolitic
+mias
+miaskite
+miasm
+miasma
+miasmal
+miasmata
+miasmatic
+miasmatical
+miasmatically
+miasmatize
+miasmatology
+miasmatous
+miasmic
+miasmology
+miasmous
+Miastor
+miaul
+miauler
+mib
+mica
+micaceous
+micacious
+micacite
+Micah
+micasization
+micasize
+micate
+mication
+Micawberish
+Micawberism
+mice
+micellar
+micelle
+Michabo
+Michabou
+Michael
+Michaelites
+Michaelmas
+Michaelmastide
+miche
+Micheal
+Michel
+Michelangelesque
+Michelangelism
+Michelia
+Michelle
+micher
+Michiel
+Michigamea
+Michigan
+michigan
+Michigander
+Michiganite
+miching
+Michoacan
+Michoacano
+micht
+Mick
+mick
+Mickey
+mickle
+Micky
+Micmac
+mico
+miconcave
+Miconia
+micramock
+Micrampelis
+micranatomy
+micrander
+micrandrous
+micraner
+micranthropos
+Micraster
+micrencephalia
+micrencephalic
+micrencephalous
+micrencephalus
+micrencephaly
+micrergate
+micresthete
+micrify
+micro
+microammeter
+microampere
+microanalysis
+microanalyst
+microanalytical
+microangstrom
+microapparatus
+microbal
+microbalance
+microbar
+microbarograph
+microbattery
+microbe
+microbeless
+microbeproof
+microbial
+microbian
+microbic
+microbicidal
+microbicide
+microbiologic
+microbiological
+microbiologically
+microbiologist
+microbiology
+microbion
+microbiosis
+microbiota
+microbiotic
+microbious
+microbism
+microbium
+microblast
+microblepharia
+microblepharism
+microblephary
+microbrachia
+microbrachius
+microburet
+microburette
+microburner
+microcaltrop
+microcardia
+microcardius
+microcarpous
+Microcebus
+microcellular
+microcentrosome
+microcentrum
+microcephal
+microcephalia
+microcephalic
+microcephalism
+microcephalous
+microcephalus
+microcephaly
+microceratous
+microchaeta
+microcharacter
+microcheilia
+microcheiria
+microchemic
+microchemical
+microchemically
+microchemistry
+microchiria
+Microchiroptera
+microchiropteran
+microchiropterous
+microchromosome
+microchronometer
+microcinema
+microcinematograph
+microcinematographic
+microcinematography
+Microcitrus
+microclastic
+microclimate
+microclimatic
+microclimatologic
+microclimatological
+microclimatology
+microcline
+microcnemia
+microcoat
+micrococcal
+Micrococceae
+Micrococcus
+microcoleoptera
+microcolon
+microcolorimeter
+microcolorimetric
+microcolorimetrically
+microcolorimetry
+microcolumnar
+microcombustion
+microconidial
+microconidium
+microconjugant
+Microconodon
+microconstituent
+microcopy
+microcoria
+microcosm
+microcosmal
+microcosmian
+microcosmic
+microcosmical
+microcosmography
+microcosmology
+microcosmos
+microcosmus
+microcoulomb
+microcranous
+microcrith
+microcryptocrystalline
+microcrystal
+microcrystalline
+microcrystallogeny
+microcrystallography
+microcrystalloscopy
+microcurie
+Microcyprini
+microcyst
+microcyte
+microcythemia
+microcytosis
+microdactylia
+microdactylism
+microdactylous
+microdentism
+microdentous
+microdetection
+microdetector
+microdetermination
+microdiactine
+microdissection
+microdistillation
+microdont
+microdontism
+microdontous
+microdose
+microdrawing
+Microdrili
+microdrive
+microelectrode
+microelectrolysis
+microelectroscope
+microelement
+microerg
+microestimation
+microeutaxitic
+microevolution
+microexamination
+microfarad
+microfauna
+microfelsite
+microfelsitic
+microfilaria
+microfilm
+microflora
+microfluidal
+microfoliation
+microfossil
+microfungus
+microfurnace
+Microgadus
+microgalvanometer
+microgamete
+microgametocyte
+microgametophyte
+microgamy
+Microgaster
+microgastria
+Microgastrinae
+microgastrine
+microgeological
+microgeologist
+microgeology
+microgilbert
+microglia
+microglossia
+micrognathia
+micrognathic
+micrognathous
+microgonidial
+microgonidium
+microgram
+microgramme
+microgranite
+microgranitic
+microgranitoid
+microgranular
+microgranulitic
+micrograph
+micrographer
+micrographic
+micrographical
+micrographically
+micrographist
+micrography
+micrograver
+microgravimetric
+microgroove
+microgyne
+microgyria
+microhenry
+microhepatia
+microhistochemical
+microhistology
+microhm
+microhmmeter
+Microhymenoptera
+microhymenopteron
+microinjection
+microjoule
+microlepidopter
+microlepidoptera
+microlepidopteran
+microlepidopterist
+microlepidopteron
+microlepidopterous
+microleukoblast
+microlevel
+microlite
+microliter
+microlith
+microlithic
+microlitic
+micrologic
+micrological
+micrologically
+micrologist
+micrologue
+micrology
+microlux
+micromania
+micromaniac
+micromanipulation
+micromanipulator
+micromanometer
+Micromastictora
+micromazia
+micromeasurement
+micromechanics
+micromelia
+micromelic
+micromelus
+micromembrane
+micromeral
+micromere
+Micromeria
+micromeric
+micromerism
+micromeritic
+micromeritics
+micromesentery
+micrometallographer
+micrometallography
+micrometallurgy
+micrometer
+micromethod
+micrometrical
+micrometrically
+micrometry
+micromicrofarad
+micromicron
+micromil
+micromillimeter
+micromineralogical
+micromineralogy
+micromorph
+micromotion
+micromotoscope
+micromyelia
+micromyeloblast
+micron
+Micronesian
+micronization
+micronize
+micronometer
+micronuclear
+micronucleus
+micronutrient
+microorganic
+microorganism
+microorganismal
+micropaleontology
+micropantograph
+microparasite
+microparasitic
+micropathological
+micropathologist
+micropathology
+micropegmatite
+micropegmatitic
+micropenis
+microperthite
+microperthitic
+micropetalous
+micropetrography
+micropetrologist
+micropetrology
+microphage
+microphagocyte
+microphagous
+microphagy
+microphakia
+microphallus
+microphone
+microphonic
+microphonics
+microphonograph
+microphot
+microphotograph
+microphotographic
+microphotography
+microphotometer
+microphotoscope
+microphthalmia
+microphthalmic
+microphthalmos
+microphthalmus
+microphyllous
+microphysical
+microphysics
+microphysiography
+microphytal
+microphyte
+microphytic
+microphytology
+micropia
+micropin
+micropipette
+microplakite
+microplankton
+microplastocyte
+microplastometer
+micropodal
+Micropodi
+micropodia
+Micropodidae
+Micropodiformes
+micropoecilitic
+micropoicilitic
+micropoikilitic
+micropolariscope
+micropolarization
+micropore
+microporosity
+microporous
+microporphyritic
+microprint
+microprojector
+micropsia
+micropsy
+micropterism
+micropterous
+Micropterus
+micropterygid
+Micropterygidae
+micropterygious
+Micropterygoidea
+Micropteryx
+Micropus
+micropylar
+micropyle
+micropyrometer
+microradiometer
+microreaction
+microrefractometer
+microrhabdus
+microrheometer
+microrheometric
+microrheometrical
+Microrhopias
+Microsauria
+microsaurian
+microsclere
+microsclerous
+microsclerum
+microscopal
+microscope
+microscopial
+microscopic
+microscopical
+microscopically
+microscopics
+Microscopid
+microscopist
+Microscopium
+microscopize
+microscopy
+microsecond
+microsection
+microseism
+microseismic
+microseismical
+microseismograph
+microseismology
+microseismometer
+microseismometrograph
+microseismometry
+microseme
+microseptum
+microsmatic
+microsmatism
+microsoma
+microsomatous
+microsome
+microsomia
+microsommite
+Microsorex
+microspecies
+microspectroscope
+microspectroscopic
+microspectroscopy
+Microspermae
+microspermous
+Microsphaera
+microsphaeric
+microsphere
+microspheric
+microspherulitic
+microsplanchnic
+microsplenia
+microsplenic
+microsporange
+microsporangium
+microspore
+microsporiasis
+microsporic
+Microsporidia
+microsporidian
+Microsporon
+microsporophore
+microsporophyll
+microsporosis
+microsporous
+Microsporum
+microstat
+microsthene
+Microsthenes
+microsthenic
+microstomatous
+microstome
+microstomia
+microstomous
+microstructural
+microstructure
+Microstylis
+microstylospore
+microstylous
+microsublimation
+microtasimeter
+microtechnic
+microtechnique
+microtelephone
+microtelephonic
+Microthelyphonida
+microtheos
+microtherm
+microthermic
+microthorax
+Microthyriaceae
+microtia
+Microtinae
+microtine
+microtitration
+microtome
+microtomic
+microtomical
+microtomist
+microtomy
+microtone
+Microtus
+microtypal
+microtype
+microtypical
+microvolt
+microvolume
+microvolumetric
+microwatt
+microwave
+microweber
+microzoa
+microzoal
+microzoan
+microzoaria
+microzoarian
+microzoary
+microzoic
+microzone
+microzooid
+microzoology
+microzoon
+microzoospore
+microzyma
+microzyme
+microzymian
+micrurgic
+micrurgical
+micrurgist
+micrurgy
+Micrurus
+miction
+micturate
+micturition
+mid
+midafternoon
+midautumn
+midaxillary
+midbrain
+midday
+midden
+middenstead
+middle
+middlebreaker
+middlebuster
+middleman
+middlemanism
+middlemanship
+middlemost
+middler
+middlesplitter
+middlewards
+middleway
+middleweight
+middlewoman
+middling
+middlingish
+middlingly
+middlingness
+middlings
+middorsal
+middy
+mide
+Mider
+midevening
+midewiwin
+midfacial
+midforenoon
+midfrontal
+midge
+midget
+midgety
+midgy
+midheaven
+Midianite
+Midianitish
+Mididae
+midiron
+midland
+Midlander
+Midlandize
+midlandward
+midlatitude
+midleg
+midlenting
+midmain
+midmandibular
+midmonth
+midmonthly
+midmorn
+midmorning
+midmost
+midnight
+midnightly
+midnoon
+midparent
+midparentage
+midparental
+midpit
+midrange
+midrash
+midrashic
+midrib
+midribbed
+midriff
+mids
+midseason
+midsentence
+midship
+midshipman
+midshipmanship
+midshipmite
+midships
+midspace
+midst
+midstory
+midstout
+midstream
+midstreet
+midstroke
+midstyled
+midsummer
+midsummerish
+midsummery
+midtap
+midvein
+midverse
+midward
+midwatch
+midway
+midweek
+midweekly
+Midwest
+Midwestern
+Midwesterner
+midwestward
+midwife
+midwifery
+midwinter
+midwinterly
+midwintry
+midwise
+midyear
+Miek
+mien
+miersite
+Miescherian
+miff
+miffiness
+miffy
+mig
+might
+mightily
+mightiness
+mightless
+mightnt
+mighty
+mightyhearted
+mightyship
+miglio
+migmatite
+migniardise
+mignon
+mignonette
+mignonne
+mignonness
+Migonitis
+migraine
+migrainoid
+migrainous
+migrant
+migrate
+migration
+migrational
+migrationist
+migrative
+migrator
+migratorial
+migratory
+Miguel
+miharaite
+mihrab
+mijakite
+mijl
+mikado
+mikadoate
+mikadoism
+Mikael
+Mikania
+Mikasuki
+Mike
+mike
+Mikey
+Miki
+mikie
+Mikir
+Mil
+mil
+mila
+milady
+milammeter
+Milan
+Milanese
+Milanion
+milarite
+milch
+milcher
+milchy
+mild
+milden
+milder
+mildew
+mildewer
+mildewy
+mildhearted
+mildheartedness
+mildish
+mildly
+mildness
+Mildred
+mile
+mileage
+Miledh
+milepost
+miler
+Miles
+Milesian
+milesima
+Milesius
+milestone
+mileway
+milfoil
+milha
+miliaceous
+miliarensis
+miliaria
+miliarium
+miliary
+Milicent
+milieu
+Miliola
+milioliform
+milioline
+miliolite
+miliolitic
+militancy
+militant
+militantly
+militantness
+militarily
+militariness
+militarism
+militarist
+militaristic
+militaristically
+militarization
+militarize
+military
+militaryism
+militaryment
+militaster
+militate
+militation
+militia
+militiaman
+militiate
+milium
+milk
+milkbush
+milken
+milker
+milkeress
+milkfish
+milkgrass
+milkhouse
+milkily
+milkiness
+milking
+milkless
+milklike
+milkmaid
+milkman
+milkness
+milkshed
+milkshop
+milksick
+milksop
+milksopism
+milksoppery
+milksopping
+milksoppish
+milksoppy
+milkstone
+milkweed
+milkwood
+milkwort
+milky
+mill
+Milla
+milla
+millable
+millage
+millboard
+millclapper
+millcourse
+milldam
+mille
+milled
+millefiori
+milleflorous
+millefoliate
+millenarian
+millenarianism
+millenarist
+millenary
+millennia
+millennial
+millennialism
+millennialist
+millennially
+millennian
+millenniarism
+millenniary
+millennium
+millepede
+Millepora
+millepore
+milleporiform
+milleporine
+milleporite
+milleporous
+millepunctate
+miller
+milleress
+millering
+Millerism
+Millerite
+millerite
+millerole
+millesimal
+millesimally
+millet
+Millettia
+millfeed
+millful
+millhouse
+milliad
+milliammeter
+milliamp
+milliampere
+milliamperemeter
+milliangstrom
+milliard
+milliardaire
+milliare
+milliarium
+milliary
+millibar
+millicron
+millicurie
+Millie
+millieme
+milliequivalent
+millifarad
+millifold
+milliform
+milligal
+milligrade
+milligram
+milligramage
+millihenry
+millilambert
+millile
+milliliter
+millilux
+millimeter
+millimicron
+millimolar
+millimole
+millincost
+milline
+milliner
+millinerial
+millinering
+millinery
+milling
+Millingtonia
+millinormal
+millinormality
+millioctave
+millioersted
+million
+millionaire
+millionairedom
+millionairess
+millionairish
+millionairism
+millionary
+millioned
+millioner
+millionfold
+millionism
+millionist
+millionize
+millionocracy
+millions
+millionth
+milliphot
+millipoise
+millisecond
+millistere
+Millite
+millithrum
+millivolt
+millivoltmeter
+millman
+millocracy
+millocrat
+millocratism
+millosevichite
+millowner
+millpond
+millpool
+millpost
+millrace
+millrynd
+millsite
+millstock
+millstone
+millstream
+milltail
+millward
+millwork
+millworker
+millwright
+millwrighting
+Milly
+Milner
+milner
+Milo
+milo
+milord
+milpa
+milreis
+milsey
+milsie
+milt
+milter
+miltlike
+Miltonia
+Miltonian
+Miltonic
+Miltonically
+Miltonism
+Miltonist
+Miltonize
+Miltos
+miltsick
+miltwaste
+milty
+Milvago
+Milvinae
+milvine
+milvinous
+Milvus
+milzbrand
+mim
+mima
+mimbar
+mimble
+Mimbreno
+Mime
+mime
+mimeo
+mimeograph
+mimeographic
+mimeographically
+mimeographist
+mimer
+mimesis
+mimester
+mimetene
+mimetesite
+mimetic
+mimetical
+mimetically
+mimetism
+mimetite
+Mimi
+mimiambi
+mimiambic
+mimiambics
+mimic
+mimical
+mimically
+mimicism
+mimicker
+mimicry
+Mimidae
+Miminae
+mimine
+miminypiminy
+mimly
+mimmation
+mimmest
+mimmock
+mimmocking
+mimmocky
+mimmood
+mimmoud
+mimmouthed
+mimmouthedness
+mimodrama
+mimographer
+mimography
+mimologist
+Mimosa
+Mimosaceae
+mimosaceous
+mimosis
+mimosite
+mimotype
+mimotypic
+mimp
+Mimpei
+mimsey
+Mimulus
+Mimus
+Mimusops
+min
+Mina
+mina
+minable
+minacious
+minaciously
+minaciousness
+minacity
+Minaean
+Minahassa
+Minahassan
+Minahassian
+minar
+minaret
+minareted
+minargent
+minasragrite
+minatorial
+minatorially
+minatorily
+minatory
+minaway
+mince
+mincemeat
+mincer
+minchery
+minchiate
+mincing
+mincingly
+mincingness
+Mincopi
+Mincopie
+mind
+minded
+Mindel
+Mindelian
+minder
+Mindererus
+mindful
+mindfully
+mindfulness
+minding
+mindless
+mindlessly
+mindlessness
+mindsight
+mine
+mineowner
+miner
+mineragraphic
+mineragraphy
+mineraiogic
+mineral
+mineralizable
+mineralization
+mineralize
+mineralizer
+mineralogical
+mineralogically
+mineralogist
+mineralogize
+mineralogy
+Minerva
+minerval
+Minervan
+Minervic
+minery
+mines
+minette
+mineworker
+Ming
+ming
+minge
+mingelen
+mingle
+mingleable
+mingledly
+minglement
+mingler
+minglingly
+Mingo
+Mingrelian
+minguetite
+mingwort
+mingy
+minhag
+minhah
+miniaceous
+miniate
+miniator
+miniature
+miniaturist
+minibus
+minicam
+minicamera
+Miniconjou
+minienize
+minification
+minify
+minikin
+minikinly
+minim
+minima
+minimacid
+minimal
+minimalism
+Minimalist
+minimalkaline
+minimally
+minimetric
+minimifidian
+minimifidianism
+minimism
+minimistic
+Minimite
+minimitude
+minimization
+minimize
+minimizer
+minimum
+minimus
+minimuscular
+mining
+minion
+minionette
+minionism
+minionly
+minionship
+minish
+minisher
+minishment
+minister
+ministeriable
+ministerial
+ministerialism
+ministerialist
+ministeriality
+ministerially
+ministerialness
+ministerium
+ministership
+ministrable
+ministrant
+ministration
+ministrative
+ministrator
+ministrer
+ministress
+ministry
+ministryship
+minitant
+Minitari
+minium
+miniver
+minivet
+mink
+minkery
+minkish
+Minkopi
+Minnehaha
+minnesinger
+minnesong
+Minnesotan
+Minnetaree
+Minnie
+minnie
+minniebush
+minning
+minnow
+minny
+mino
+Minoan
+minoize
+minometer
+minor
+minorage
+minorate
+minoration
+Minorca
+Minorcan
+Minoress
+minoress
+Minorist
+Minorite
+minority
+minorship
+Minos
+minot
+Minotaur
+Minseito
+minsitive
+minster
+minsteryard
+minstrel
+minstreless
+minstrelship
+minstrelsy
+mint
+mintage
+Mintaka
+mintbush
+minter
+mintmaker
+mintmaking
+mintman
+mintmaster
+minty
+minuend
+minuet
+minuetic
+minuetish
+minus
+minuscular
+minuscule
+minutary
+minutation
+minute
+minutely
+minuteman
+minuteness
+minuter
+minuthesis
+minutia
+minutiae
+minutial
+minutiose
+minutiously
+minutissimic
+minverite
+minx
+minxish
+minxishly
+minxishness
+minxship
+miny
+Minyadidae
+Minyae
+Minyan
+minyan
+Minyas
+miocardia
+Miocene
+Miocenic
+Miohippus
+miolithic
+mioplasmia
+miothermic
+miqra
+miquelet
+mir
+Mira
+Mirabel
+Mirabell
+mirabiliary
+Mirabilis
+mirabilite
+Mirac
+Mirach
+mirach
+miracidial
+miracidium
+miracle
+miraclemonger
+miraclemongering
+miraclist
+miraculist
+miraculize
+miraculosity
+miraculous
+miraculously
+miraculousness
+mirador
+mirage
+miragy
+Mirak
+Miramolin
+Mirana
+Miranda
+mirandous
+Miranha
+Miranhan
+mirate
+mirbane
+mird
+mirdaha
+mire
+mirepoix
+Mirfak
+Miriam
+Miriamne
+mirid
+Miridae
+mirific
+miriness
+mirish
+mirk
+mirkiness
+mirksome
+mirliton
+Miro
+miro
+Mirounga
+mirror
+mirrored
+mirrorize
+mirrorlike
+mirrorscope
+mirrory
+mirth
+mirthful
+mirthfully
+mirthfulness
+mirthless
+mirthlessly
+mirthlessness
+mirthsome
+mirthsomeness
+miry
+miryachit
+mirza
+misaccent
+misaccentuation
+misachievement
+misacknowledge
+misact
+misadapt
+misadaptation
+misadd
+misaddress
+misadjust
+misadmeasurement
+misadministration
+misadvantage
+misadventure
+misadventurer
+misadventurous
+misadventurously
+misadvertence
+misadvice
+misadvise
+misadvised
+misadvisedly
+misadvisedness
+misaffected
+misaffection
+misaffirm
+misagent
+misaim
+misalienate
+misalignment
+misallegation
+misallege
+misalliance
+misallotment
+misallowance
+misally
+misalphabetize
+misalter
+misanalyze
+misandry
+misanswer
+misanthrope
+misanthropia
+misanthropic
+misanthropical
+misanthropically
+misanthropism
+misanthropist
+misanthropize
+misanthropy
+misapparel
+misappear
+misappearance
+misappellation
+misapplication
+misapplier
+misapply
+misappoint
+misappointment
+misappraise
+misappraisement
+misappreciate
+misappreciation
+misappreciative
+misapprehend
+misapprehendingly
+misapprehensible
+misapprehension
+misapprehensive
+misapprehensively
+misapprehensiveness
+misappropriate
+misappropriately
+misappropriation
+misarchism
+misarchist
+misarrange
+misarrangement
+misarray
+misascribe
+misascription
+misasperse
+misassay
+misassent
+misassert
+misassign
+misassociate
+misassociation
+misatone
+misattend
+misattribute
+misattribution
+misaunter
+misauthorization
+misauthorize
+misaward
+misbandage
+misbaptize
+misbecome
+misbecoming
+misbecomingly
+misbecomingness
+misbefitting
+misbeget
+misbegin
+misbegotten
+misbehave
+misbehavior
+misbeholden
+misbelief
+misbelieve
+misbeliever
+misbelievingly
+misbelove
+misbeseem
+misbestow
+misbestowal
+misbetide
+misbias
+misbill
+misbind
+misbirth
+misbode
+misborn
+misbrand
+misbuild
+misbusy
+miscalculate
+miscalculation
+miscalculator
+miscall
+miscaller
+miscanonize
+miscarriage
+miscarriageable
+miscarry
+miscast
+miscasualty
+misceability
+miscegenate
+miscegenation
+miscegenationist
+miscegenator
+miscegenetic
+miscegine
+miscellanarian
+miscellanea
+miscellaneity
+miscellaneous
+miscellaneously
+miscellaneousness
+miscellanist
+miscellany
+mischallenge
+mischance
+mischanceful
+mischancy
+mischaracterization
+mischaracterize
+mischarge
+mischief
+mischiefful
+mischieve
+mischievous
+mischievously
+mischievousness
+mischio
+mischoice
+mischoose
+mischristen
+miscibility
+miscible
+miscipher
+misclaim
+misclaiming
+misclass
+misclassification
+misclassify
+miscognizant
+miscoin
+miscoinage
+miscollocation
+miscolor
+miscoloration
+miscommand
+miscommit
+miscommunicate
+miscompare
+miscomplacence
+miscomplain
+miscomplaint
+miscompose
+miscomprehend
+miscomprehension
+miscomputation
+miscompute
+misconceive
+misconceiver
+misconception
+misconclusion
+miscondition
+misconduct
+misconfer
+misconfidence
+misconfident
+misconfiguration
+misconjecture
+misconjugate
+misconjugation
+misconjunction
+misconsecrate
+misconsequence
+misconstitutional
+misconstruable
+misconstruct
+misconstruction
+misconstructive
+misconstrue
+misconstruer
+miscontinuance
+misconvenient
+misconvey
+miscook
+miscookery
+miscorrect
+miscorrection
+miscounsel
+miscount
+miscovet
+miscreancy
+miscreant
+miscreate
+miscreation
+miscreative
+miscreator
+miscredited
+miscredulity
+miscreed
+miscript
+miscrop
+miscue
+miscultivated
+misculture
+miscurvature
+miscut
+misdate
+misdateful
+misdaub
+misdeal
+misdealer
+misdecide
+misdecision
+misdeclaration
+misdeclare
+misdeed
+misdeem
+misdeemful
+misdefine
+misdeformed
+misdeliver
+misdelivery
+misdemean
+misdemeanant
+misdemeanist
+misdemeanor
+misdentition
+misderivation
+misderive
+misdescribe
+misdescriber
+misdescription
+misdescriptive
+misdesire
+misdetermine
+misdevise
+misdevoted
+misdevotion
+misdiet
+misdirect
+misdirection
+misdispose
+misdisposition
+misdistinguish
+misdistribute
+misdistribution
+misdivide
+misdivision
+misdo
+misdoer
+misdoing
+misdoubt
+misdower
+misdraw
+misdread
+misdrive
+mise
+misease
+misecclesiastic
+misedit
+miseducate
+miseducation
+miseducative
+miseffect
+misemphasis
+misemphasize
+misemploy
+misemployment
+misencourage
+misendeavor
+misenforce
+misengrave
+misenite
+misenjoy
+misenroll
+misentitle
+misenunciation
+Misenus
+miser
+miserabilism
+miserabilist
+miserabilistic
+miserability
+miserable
+miserableness
+miserably
+miserdom
+miserected
+Miserere
+miserhood
+misericord
+Misericordia
+miserism
+miserliness
+miserly
+misery
+misesteem
+misestimate
+misestimation
+misexample
+misexecute
+misexecution
+misexpectation
+misexpend
+misexpenditure
+misexplain
+misexplanation
+misexplication
+misexposition
+misexpound
+misexpress
+misexpression
+misexpressive
+misfaith
+misfare
+misfashion
+misfather
+misfault
+misfeasance
+misfeasor
+misfeature
+misfield
+misfigure
+misfile
+misfire
+misfit
+misfond
+misform
+misformation
+misfortunate
+misfortunately
+misfortune
+misfortuned
+misfortuner
+misframe
+misgauge
+misgesture
+misgive
+misgiving
+misgivingly
+misgo
+misgotten
+misgovern
+misgovernance
+misgovernment
+misgovernor
+misgracious
+misgraft
+misgrave
+misground
+misgrow
+misgrown
+misgrowth
+misguess
+misguggle
+misguidance
+misguide
+misguided
+misguidedly
+misguidedness
+misguider
+misguiding
+misguidingly
+mishandle
+mishap
+mishappen
+Mishikhwutmetunne
+mishmash
+mishmee
+Mishmi
+Mishnah
+Mishnaic
+Mishnic
+Mishnical
+Mishongnovi
+misidentification
+misidentify
+Misima
+misimagination
+misimagine
+misimpression
+misimprove
+misimprovement
+misimputation
+misimpute
+misincensed
+misincite
+misinclination
+misincline
+misinfer
+misinference
+misinflame
+misinform
+misinformant
+misinformation
+misinformer
+misingenuity
+misinspired
+misinstruct
+misinstruction
+misinstructive
+misintelligence
+misintelligible
+misintend
+misintention
+misinter
+misinterment
+misinterpret
+misinterpretable
+misinterpretation
+misinterpreter
+misintimation
+misjoin
+misjoinder
+misjudge
+misjudgement
+misjudger
+misjudgingly
+misjudgment
+miskeep
+misken
+miskenning
+miskill
+miskindle
+misknow
+misknowledge
+misky
+mislabel
+mislabor
+mislanguage
+mislay
+mislayer
+mislead
+misleadable
+misleader
+misleading
+misleadingly
+misleadingness
+mislear
+misleared
+mislearn
+misled
+mislest
+mislight
+mislike
+misliken
+mislikeness
+misliker
+mislikingly
+mislippen
+mislive
+mislocate
+mislocation
+mislodge
+mismade
+mismake
+mismanage
+mismanageable
+mismanagement
+mismanager
+mismarriage
+mismarry
+mismatch
+mismatchment
+mismate
+mismeasure
+mismeasurement
+mismenstruation
+misminded
+mismingle
+mismotion
+mismove
+misname
+misnarrate
+misnatured
+misnavigation
+Misniac
+misnomed
+misnomer
+misnumber
+misnurture
+misnutrition
+misobedience
+misobey
+misobservance
+misobserve
+misocapnic
+misocapnist
+misocatholic
+misoccupy
+misogallic
+misogamic
+misogamist
+misogamy
+misogyne
+misogynic
+misogynical
+misogynism
+misogynist
+misogynistic
+misogynistical
+misogynous
+misogyny
+misohellene
+misologist
+misology
+misomath
+misoneism
+misoneist
+misoneistic
+misopaterist
+misopedia
+misopedism
+misopedist
+misopinion
+misopolemical
+misorder
+misordination
+misorganization
+misorganize
+misoscopist
+misosophist
+misosophy
+misotheism
+misotheist
+misotheistic
+misotramontanism
+misotyranny
+misoxene
+misoxeny
+mispage
+mispagination
+mispaint
+misparse
+mispart
+mispassion
+mispatch
+mispay
+misperceive
+misperception
+misperform
+misperformance
+mispersuade
+misperuse
+misphrase
+mispick
+mispickel
+misplace
+misplacement
+misplant
+misplay
+misplead
+mispleading
+misplease
+mispoint
+mispoise
+mispolicy
+misposition
+mispossessed
+mispractice
+mispraise
+misprejudiced
+misprincipled
+misprint
+misprisal
+misprision
+misprize
+misprizer
+misproceeding
+misproduce
+misprofess
+misprofessor
+mispronounce
+mispronouncement
+mispronunciation
+misproportion
+misproposal
+mispropose
+misproud
+misprovide
+misprovidence
+misprovoke
+mispunctuate
+mispunctuation
+mispurchase
+mispursuit
+misput
+misqualify
+misquality
+misquotation
+misquote
+misquoter
+misraise
+misrate
+misread
+misreader
+misrealize
+misreason
+misreceive
+misrecital
+misrecite
+misreckon
+misrecognition
+misrecognize
+misrecollect
+misrefer
+misreference
+misreflect
+misreform
+misregulate
+misrehearsal
+misrehearse
+misrelate
+misrelation
+misreliance
+misremember
+misremembrance
+misrender
+misrepeat
+misreport
+misreporter
+misreposed
+misrepresent
+misrepresentation
+misrepresentative
+misrepresenter
+misreprint
+misrepute
+misresemblance
+misresolved
+misresult
+misreward
+misrhyme
+misrhymer
+misrule
+miss
+missable
+missal
+missay
+missayer
+misseem
+missel
+missemblance
+missentence
+misserve
+misservice
+misset
+misshape
+misshapen
+misshapenly
+misshapenness
+misshood
+missible
+missile
+missileproof
+missiness
+missing
+missingly
+mission
+missional
+missionarize
+missionary
+missionaryship
+missioner
+missionize
+missionizer
+missis
+Missisauga
+missish
+missishness
+Mississippi
+Mississippian
+missive
+missmark
+missment
+Missouri
+Missourian
+Missourianism
+missourite
+misspeak
+misspeech
+misspell
+misspelling
+misspend
+misspender
+misstate
+misstatement
+misstater
+misstay
+misstep
+missuade
+missuggestion
+missummation
+missuppose
+missy
+missyish
+missyllabication
+missyllabify
+mist
+mistakable
+mistakableness
+mistakably
+mistake
+mistakeful
+mistaken
+mistakenly
+mistakenness
+mistakeproof
+mistaker
+mistaking
+mistakingly
+mistassini
+mistaught
+mistbow
+misteach
+misteacher
+misted
+mistell
+mistempered
+mistend
+mistendency
+Mister
+mister
+misterm
+mistetch
+mistfall
+mistflower
+mistful
+misthink
+misthought
+misthread
+misthrift
+misthrive
+misthrow
+mistic
+mistide
+mistify
+mistigris
+mistily
+mistime
+mistiness
+mistitle
+mistle
+mistless
+mistletoe
+mistone
+mistonusk
+mistook
+mistouch
+mistradition
+mistrain
+mistral
+mistranscribe
+mistranscript
+mistranscription
+mistranslate
+mistranslation
+mistreat
+mistreatment
+mistress
+mistressdom
+mistresshood
+mistressless
+mistressly
+mistrial
+mistrist
+mistrust
+mistruster
+mistrustful
+mistrustfully
+mistrustfulness
+mistrusting
+mistrustingly
+mistrustless
+mistry
+mistryst
+misturn
+mistutor
+misty
+mistyish
+misunderstand
+misunderstandable
+misunderstander
+misunderstanding
+misunderstandingly
+misunderstood
+misunderstoodness
+misura
+misusage
+misuse
+misuseful
+misusement
+misuser
+misusurped
+misvaluation
+misvalue
+misventure
+misventurous
+misvouch
+miswed
+miswisdom
+miswish
+misword
+misworship
+misworshiper
+misworshipper
+miswrite
+misyoke
+miszealous
+Mitakshara
+Mitanni
+Mitannian
+Mitannish
+mitapsis
+Mitch
+mitchboard
+Mitchell
+Mitchella
+mite
+Mitella
+miteproof
+miter
+mitered
+miterer
+miterflower
+miterwort
+Mithra
+Mithraea
+Mithraeum
+Mithraic
+Mithraicism
+Mithraicist
+Mithraicize
+Mithraism
+Mithraist
+Mithraistic
+Mithraitic
+Mithraize
+Mithras
+Mithratic
+Mithriac
+mithridate
+Mithridatic
+mithridatic
+mithridatism
+mithridatize
+miticidal
+miticide
+mitigable
+mitigant
+mitigate
+mitigatedly
+mitigation
+mitigative
+mitigator
+mitigatory
+mitis
+mitochondria
+mitochondrial
+mitogenetic
+mitome
+mitosis
+mitosome
+mitotic
+mitotically
+Mitra
+mitra
+mitrailleuse
+mitral
+mitrate
+mitre
+mitrer
+Mitridae
+mitriform
+Mitsukurina
+Mitsukurinidae
+mitsumata
+mitt
+mittelhand
+Mittelmeer
+mitten
+mittened
+mittimus
+mitty
+Mitu
+Mitua
+mity
+miurus
+mix
+mixable
+mixableness
+mixblood
+Mixe
+mixed
+mixedly
+mixedness
+mixen
+mixer
+mixeress
+mixhill
+mixible
+mixite
+mixobarbaric
+mixochromosome
+Mixodectes
+Mixodectidae
+mixolydian
+mixoploid
+mixoploidy
+Mixosaurus
+mixotrophic
+Mixtec
+Mixtecan
+mixtiform
+mixtilineal
+mixtilion
+mixtion
+mixture
+mixy
+Mizar
+mizmaze
+Mizpah
+Mizraim
+mizzen
+mizzenmast
+mizzenmastman
+mizzentopman
+mizzle
+mizzler
+mizzly
+mizzonite
+mizzy
+mlechchha
+mneme
+mnemic
+Mnemiopsis
+mnemonic
+mnemonical
+mnemonicalist
+mnemonically
+mnemonicon
+mnemonics
+mnemonism
+mnemonist
+mnemonization
+mnemonize
+Mnemosyne
+mnemotechnic
+mnemotechnical
+mnemotechnics
+mnemotechnist
+mnemotechny
+mnesic
+mnestic
+Mnevis
+Mniaceae
+mniaceous
+mnioid
+Mniotiltidae
+Mnium
+Mo
+mo
+Moabite
+Moabitess
+Moabitic
+Moabitish
+moan
+moanful
+moanfully
+moanification
+moaning
+moaningly
+moanless
+Moaria
+Moarian
+moat
+Moattalite
+mob
+mobable
+mobbable
+mobber
+mobbish
+mobbishly
+mobbishness
+mobbism
+mobbist
+mobby
+mobcap
+mobed
+mobile
+Mobilian
+mobilianer
+mobiliary
+mobility
+mobilizable
+mobilization
+mobilize
+mobilometer
+moble
+moblike
+mobocracy
+mobocrat
+mobocratic
+mobocratical
+mobolatry
+mobproof
+mobship
+mobsman
+mobster
+Mobula
+Mobulidae
+moccasin
+Mocha
+mocha
+Mochica
+mochras
+mock
+mockable
+mockado
+mockbird
+mocker
+mockernut
+mockery
+mockful
+mockfully
+mockground
+mockingbird
+mockingstock
+mocmain
+Mocoa
+Mocoan
+mocomoco
+mocuck
+Mod
+modal
+modalism
+modalist
+modalistic
+modality
+modalize
+modally
+mode
+model
+modeler
+modeless
+modelessness
+modeling
+modelist
+modeller
+modelmaker
+modelmaking
+modena
+Modenese
+moderant
+moderantism
+moderantist
+moderate
+moderately
+moderateness
+moderation
+moderationist
+moderatism
+moderatist
+moderato
+moderator
+moderatorship
+moderatrix
+Modern
+modern
+moderner
+modernicide
+modernish
+modernism
+modernist
+modernistic
+modernity
+modernizable
+modernization
+modernize
+modernizer
+modernly
+modernness
+modest
+modestly
+modestness
+modesty
+modiation
+modicity
+modicum
+modifiability
+modifiable
+modifiableness
+modifiably
+modificability
+modificable
+modification
+modificationist
+modificative
+modificator
+modificatory
+modifier
+modify
+modillion
+modiolar
+Modiolus
+modiolus
+modish
+modishly
+modishness
+modist
+modiste
+modistry
+modius
+Modoc
+Modred
+modulability
+modulant
+modular
+modulate
+modulation
+modulative
+modulator
+modulatory
+module
+Modulidae
+modulo
+modulus
+modumite
+Moe
+Moed
+Moehringia
+moellon
+moerithere
+moeritherian
+Moeritheriidae
+Moeritherium
+mofette
+moff
+mofussil
+mofussilite
+mog
+mogador
+mogadore
+mogdad
+moggan
+moggy
+Moghan
+mogigraphia
+mogigraphic
+mogigraphy
+mogilalia
+mogilalism
+mogiphonia
+mogitocia
+mogo
+mogographia
+Mogollon
+Mograbi
+Mogrebbin
+moguey
+Mogul
+mogulship
+Moguntine
+moha
+mohabat
+mohair
+Mohammad
+Mohammedan
+Mohammedanism
+Mohammedanization
+Mohammedanize
+Mohammedism
+Mohammedist
+Mohammedization
+Mohammedize
+mohar
+Mohave
+Mohawk
+Mohawkian
+mohawkite
+Mohegan
+mohel
+Mohican
+Mohineyam
+mohnseed
+moho
+Mohock
+Mohockism
+mohr
+Mohrodendron
+mohur
+Moi
+moider
+moidore
+moieter
+moiety
+moil
+moiler
+moiles
+moiley
+moiling
+moilingly
+moilsome
+moineau
+Moingwena
+moio
+Moira
+moire
+moirette
+moise
+Moism
+moissanite
+moist
+moisten
+moistener
+moistful
+moistify
+moistish
+moistishness
+moistless
+moistly
+moistness
+moisture
+moistureless
+moistureproof
+moisty
+moit
+moity
+mojarra
+Mojo
+mojo
+mokaddam
+moke
+moki
+mokihana
+moko
+moksha
+mokum
+moky
+Mola
+mola
+molal
+Molala
+molality
+molar
+molariform
+molarimeter
+molarity
+molary
+Molasse
+molasses
+molassied
+molassy
+molave
+mold
+moldability
+moldable
+moldableness
+Moldavian
+moldavite
+moldboard
+molder
+moldery
+moldiness
+molding
+moldmade
+moldproof
+moldwarp
+moldy
+Mole
+mole
+molecast
+molecula
+molecular
+molecularist
+molecularity
+molecularly
+molecule
+molehead
+moleheap
+molehill
+molehillish
+molehilly
+moleism
+molelike
+molendinar
+molendinary
+molengraaffite
+moleproof
+moler
+moleskin
+molest
+molestation
+molester
+molestful
+molestfully
+Molge
+Molgula
+Molidae
+molimen
+moliminous
+molinary
+moline
+Molinia
+Molinism
+Molinist
+Molinistic
+molka
+Moll
+molland
+Mollberg
+molle
+mollescence
+mollescent
+molleton
+mollichop
+mollicrush
+mollie
+mollienisia
+mollient
+molliently
+mollifiable
+mollification
+mollifiedly
+mollifier
+mollify
+mollifying
+mollifyingly
+mollifyingness
+molligrant
+molligrubs
+mollipilose
+Mollisiaceae
+mollisiose
+mollities
+mollitious
+mollitude
+Molluginaceae
+Mollugo
+Mollusca
+molluscan
+molluscivorous
+molluscoid
+Molluscoida
+molluscoidal
+molluscoidan
+Molluscoidea
+molluscoidean
+molluscous
+molluscousness
+molluscum
+mollusk
+Molly
+molly
+mollycoddle
+mollycoddler
+mollycoddling
+mollycosset
+mollycot
+mollyhawk
+molman
+Moloch
+Molochize
+Molochship
+moloid
+moloker
+molompi
+molosse
+Molossian
+molossic
+Molossidae
+molossine
+molossoid
+molossus
+Molothrus
+molpe
+molrooken
+molt
+molten
+moltenly
+molter
+Molucca
+Moluccan
+Moluccella
+Moluche
+moly
+molybdate
+molybdena
+molybdenic
+molybdeniferous
+molybdenite
+molybdenous
+molybdenum
+molybdic
+molybdite
+molybdocardialgia
+molybdocolic
+molybdodyspepsia
+molybdomancy
+molybdomenite
+molybdonosus
+molybdoparesis
+molybdophyllite
+molybdosis
+molybdous
+molysite
+mombin
+momble
+Mombottu
+mome
+moment
+momenta
+momental
+momentally
+momentaneall
+momentaneity
+momentaneous
+momentaneously
+momentaneousness
+momentarily
+momentariness
+momentary
+momently
+momentous
+momentously
+momentousness
+momentum
+momiology
+momism
+momme
+mommet
+mommy
+momo
+Momordica
+Momotidae
+Momotinae
+Momotus
+Momus
+Mon
+mon
+mona
+Monacan
+monacanthid
+Monacanthidae
+monacanthine
+monacanthous
+Monacha
+monachal
+monachate
+Monachi
+monachism
+monachist
+monachization
+monachize
+monactin
+monactine
+monactinellid
+monactinellidan
+monad
+monadelph
+Monadelphia
+monadelphian
+monadelphous
+monadic
+monadical
+monadically
+monadiform
+monadigerous
+Monadina
+monadism
+monadistic
+monadnock
+monadology
+monaene
+monal
+monamniotic
+Monanday
+monander
+Monandria
+monandrian
+monandric
+monandrous
+monandry
+monanthous
+monapsal
+monarch
+monarchal
+monarchally
+monarchess
+monarchial
+monarchian
+monarchianism
+monarchianist
+monarchianistic
+monarchic
+monarchical
+monarchically
+monarchism
+monarchist
+monarchistic
+monarchize
+monarchizer
+monarchlike
+monarchomachic
+monarchomachist
+monarchy
+Monarda
+Monardella
+monarthritis
+monarticular
+monas
+Monasa
+Monascidiae
+monascidian
+monase
+monaster
+monasterial
+monasterially
+monastery
+monastic
+monastical
+monastically
+monasticism
+monasticize
+monatomic
+monatomicity
+monatomism
+monaulos
+monaural
+monaxial
+monaxile
+monaxon
+monaxonial
+monaxonic
+Monaxonida
+monazine
+monazite
+Monbuttu
+monchiquite
+Monday
+Mondayish
+Mondayishness
+Mondayland
+mone
+Monegasque
+Monel
+monel
+monembryary
+monembryonic
+monembryony
+monepic
+monepiscopacy
+monepiscopal
+moner
+Monera
+moneral
+moneran
+monergic
+monergism
+monergist
+monergistic
+moneric
+moneron
+Monerozoa
+monerozoan
+monerozoic
+monerula
+Moneses
+monesia
+monetarily
+monetary
+monetite
+monetization
+monetize
+money
+moneyage
+moneybag
+moneybags
+moneyed
+moneyer
+moneyflower
+moneygrub
+moneygrubber
+moneygrubbing
+moneylender
+moneylending
+moneyless
+moneymonger
+moneymongering
+moneysaving
+moneywise
+moneywort
+mong
+mongcorn
+monger
+mongering
+mongery
+Monghol
+Mongholian
+Mongibel
+mongler
+Mongo
+Mongol
+Mongolian
+Mongolianism
+Mongolic
+Mongolioid
+Mongolish
+Mongolism
+Mongolization
+Mongolize
+Mongoloid
+mongoose
+Mongoyo
+mongrel
+mongreldom
+mongrelish
+mongrelism
+mongrelity
+mongrelization
+mongrelize
+mongrelly
+mongrelness
+mongst
+monheimite
+monial
+Monias
+Monica
+moniker
+monilated
+monilethrix
+Monilia
+Moniliaceae
+moniliaceous
+Moniliales
+monilicorn
+moniliform
+moniliformly
+monilioid
+moniment
+Monimia
+Monimiaceae
+monimiaceous
+monimolite
+monimostylic
+monism
+monist
+monistic
+monistical
+monistically
+monition
+monitive
+monitor
+monitorial
+monitorially
+monitorish
+monitorship
+monitory
+monitress
+monitrix
+monk
+monkbird
+monkcraft
+monkdom
+monkery
+monkess
+monkey
+monkeyboard
+monkeyface
+monkeyfy
+monkeyhood
+monkeyish
+monkeyishly
+monkeyishness
+monkeylike
+monkeynut
+monkeypod
+monkeypot
+monkeyry
+monkeyshine
+monkeytail
+monkfish
+monkflower
+monkhood
+monkish
+monkishly
+monkishness
+monkism
+monklike
+monkliness
+monkly
+monkmonger
+monkship
+monkshood
+Monmouth
+monmouthite
+monny
+Mono
+mono
+monoacetate
+monoacetin
+monoacid
+monoacidic
+monoamide
+monoamine
+monoamino
+monoammonium
+monoazo
+monobacillary
+monobase
+monobasic
+monobasicity
+monoblastic
+monoblepsia
+monoblepsis
+monobloc
+monobranchiate
+monobromacetone
+monobromated
+monobromide
+monobrominated
+monobromination
+monobromized
+monobromoacetanilide
+monobromoacetone
+monobutyrin
+monocalcium
+monocarbide
+monocarbonate
+monocarbonic
+monocarboxylic
+monocardian
+monocarp
+monocarpal
+monocarpellary
+monocarpian
+monocarpic
+monocarpous
+monocellular
+monocentric
+monocentrid
+Monocentridae
+Monocentris
+monocentroid
+monocephalous
+monocercous
+monoceros
+monocerous
+monochasial
+monochasium
+Monochlamydeae
+monochlamydeous
+monochlor
+monochloracetic
+monochloranthracene
+monochlorbenzene
+monochloride
+monochlorinated
+monochlorination
+monochloro
+monochloroacetic
+monochlorobenzene
+monochloromethane
+monochoanitic
+monochord
+monochordist
+monochordize
+monochroic
+monochromasy
+monochromat
+monochromate
+monochromatic
+monochromatically
+monochromatism
+monochromator
+monochrome
+monochromic
+monochromical
+monochromically
+monochromist
+monochromous
+monochromy
+monochronic
+monochronous
+monociliated
+monocle
+monocled
+monocleid
+monoclinal
+monoclinally
+monocline
+monoclinian
+monoclinic
+monoclinism
+monoclinometric
+monoclinous
+Monoclonius
+Monocoelia
+monocoelian
+monocoelic
+Monocondyla
+monocondylar
+monocondylian
+monocondylic
+monocondylous
+monocormic
+monocot
+monocotyledon
+Monocotyledones
+monocotyledonous
+monocracy
+monocrat
+monocratic
+monocrotic
+monocrotism
+monocular
+monocularity
+monocularly
+monoculate
+monocule
+monoculist
+monoculous
+monocultural
+monoculture
+monoculus
+monocyanogen
+monocycle
+monocyclic
+Monocyclica
+monocystic
+Monocystidae
+Monocystidea
+Monocystis
+monocyte
+monocytic
+monocytopoiesis
+monodactyl
+monodactylate
+monodactyle
+monodactylism
+monodactylous
+monodactyly
+monodelph
+Monodelphia
+monodelphian
+monodelphic
+monodelphous
+monodermic
+monodic
+monodically
+monodimetric
+monodist
+monodize
+monodomous
+Monodon
+monodont
+Monodonta
+monodontal
+monodram
+monodrama
+monodramatic
+monodramatist
+monodromic
+monodromy
+monody
+monodynamic
+monodynamism
+Monoecia
+monoecian
+monoecious
+monoeciously
+monoeciousness
+monoecism
+monoeidic
+monoestrous
+monoethanolamine
+monoethylamine
+monofilament
+monofilm
+monoflagellate
+monoformin
+monogamian
+monogamic
+monogamist
+monogamistic
+monogamous
+monogamously
+monogamousness
+monogamy
+monoganglionic
+monogastric
+monogene
+Monogenea
+monogeneity
+monogeneous
+monogenesis
+monogenesist
+monogenesy
+monogenetic
+Monogenetica
+monogenic
+monogenism
+monogenist
+monogenistic
+monogenous
+monogeny
+monoglot
+monoglycerid
+monoglyceride
+monogoneutic
+monogonoporic
+monogonoporous
+monogony
+monogram
+monogrammatic
+monogrammatical
+monogrammed
+monogrammic
+monograph
+monographer
+monographic
+monographical
+monographically
+monographist
+monography
+monograptid
+Monograptidae
+Monograptus
+monogynic
+monogynious
+monogynist
+monogynoecial
+monogynous
+monogyny
+monohybrid
+monohydrate
+monohydrated
+monohydric
+monohydrogen
+monohydroxy
+monoicous
+monoid
+monoketone
+monolater
+monolatrist
+monolatrous
+monolatry
+monolayer
+monoline
+monolingual
+monolinguist
+monoliteral
+monolith
+monolithal
+monolithic
+monolobular
+monolocular
+monologian
+monologic
+monological
+monologist
+monologize
+monologue
+monologuist
+monology
+monomachist
+monomachy
+monomania
+monomaniac
+monomaniacal
+monomastigate
+monomeniscous
+monomer
+monomeric
+monomerous
+monometallic
+monometallism
+monometallist
+monometer
+monomethyl
+monomethylated
+monomethylic
+monometric
+monometrical
+monomial
+monomict
+monomineral
+monomineralic
+monomolecular
+monomolybdate
+Monomorium
+monomorphic
+monomorphism
+monomorphous
+Monomya
+Monomyaria
+monomyarian
+mononaphthalene
+mononch
+Mononchus
+mononeural
+Monongahela
+mononitrate
+mononitrated
+mononitration
+mononitride
+mononitrobenzene
+mononomial
+mononomian
+monont
+mononuclear
+mononucleated
+mononucleosis
+mononychous
+mononym
+mononymic
+mononymization
+mononymize
+mononymy
+monoousian
+monoousious
+monoparental
+monoparesis
+monoparesthesia
+monopathic
+monopathy
+monopectinate
+monopersonal
+monopersulfuric
+monopersulphuric
+Monopetalae
+monopetalous
+monophagism
+monophagous
+monophagy
+monophase
+monophasia
+monophasic
+monophobia
+monophone
+monophonic
+monophonous
+monophony
+monophotal
+monophote
+monophthalmic
+monophthalmus
+monophthong
+monophthongal
+monophthongization
+monophthongize
+monophyletic
+monophyleticism
+monophylite
+monophyllous
+monophyodont
+monophyodontism
+Monophysite
+Monophysitic
+Monophysitical
+Monophysitism
+monopitch
+monoplacula
+monoplacular
+monoplaculate
+monoplane
+monoplanist
+monoplasmatic
+monoplast
+monoplastic
+monoplegia
+monoplegic
+Monopneumoa
+monopneumonian
+monopneumonous
+monopode
+monopodial
+monopodially
+monopodic
+monopodium
+monopodous
+monopody
+monopolar
+monopolaric
+monopolarity
+monopole
+monopolism
+monopolist
+monopolistic
+monopolistically
+monopolitical
+monopolizable
+monopolization
+monopolize
+monopolizer
+monopolous
+monopoly
+monopolylogist
+monopolylogue
+monopotassium
+monoprionid
+monoprionidian
+monopsonistic
+monopsony
+monopsychism
+monopteral
+Monopteridae
+monopteroid
+monopteron
+monopteros
+monopterous
+monoptic
+monoptical
+monoptote
+monoptotic
+Monopylaea
+Monopylaria
+monopylean
+monopyrenous
+monorail
+monorailroad
+monorailway
+monorchid
+monorchidism
+monorchis
+monorchism
+monorganic
+Monorhina
+monorhinal
+monorhine
+monorhyme
+monorhymed
+monorhythmic
+monosaccharide
+monosaccharose
+monoschemic
+monoscope
+monose
+monosemic
+monosepalous
+monoservice
+monosilane
+monosilicate
+monosilicic
+monosiphonic
+monosiphonous
+monosodium
+monosomatic
+monosomatous
+monosome
+monosomic
+monosperm
+monospermal
+monospermic
+monospermous
+monospermy
+monospherical
+monospondylic
+monosporangium
+monospore
+monospored
+monosporiferous
+monosporous
+monostele
+monostelic
+monostelous
+monostely
+monostich
+monostichous
+Monostomata
+Monostomatidae
+monostomatous
+monostome
+Monostomidae
+monostomous
+Monostomum
+monostromatic
+monostrophe
+monostrophic
+monostrophics
+monostylous
+monosubstituted
+monosubstitution
+monosulfone
+monosulfonic
+monosulphide
+monosulphone
+monosulphonic
+monosyllabic
+monosyllabical
+monosyllabically
+monosyllabism
+monosyllabize
+monosyllable
+monosymmetric
+monosymmetrical
+monosymmetrically
+monosymmetry
+monosynthetic
+monotelephone
+monotelephonic
+monotellurite
+Monothalama
+monothalamian
+monothalamous
+monothecal
+monotheism
+monotheist
+monotheistic
+monotheistical
+monotheistically
+Monothelete
+Monotheletian
+Monotheletic
+Monotheletism
+monothelious
+Monothelism
+Monothelitic
+Monothelitism
+monothetic
+monotic
+monotint
+Monotocardia
+monotocardiac
+monotocardian
+monotocous
+monotomous
+monotone
+monotonic
+monotonical
+monotonically
+monotonist
+monotonize
+monotonous
+monotonously
+monotonousness
+monotony
+monotremal
+Monotremata
+monotremate
+monotrematous
+monotreme
+monotremous
+monotrichous
+monotriglyph
+monotriglyphic
+Monotrocha
+monotrochal
+monotrochian
+monotrochous
+Monotropa
+Monotropaceae
+monotropaceous
+monotrophic
+monotropic
+Monotropsis
+monotropy
+monotypal
+monotype
+monotypic
+monotypical
+monotypous
+monoureide
+monovalence
+monovalency
+monovalent
+monovariant
+monoverticillate
+monovoltine
+monovular
+monoxenous
+monoxide
+monoxime
+monoxyle
+monoxylic
+monoxylon
+monoxylous
+Monozoa
+monozoan
+monozoic
+monozygotic
+Monroeism
+Monroeist
+monrolite
+monseigneur
+monsieur
+monsieurship
+monsignor
+monsignorial
+Monsoni
+monsoon
+monsoonal
+monsoonish
+monsoonishly
+monster
+Monstera
+monsterhood
+monsterlike
+monstership
+monstrance
+monstrate
+monstration
+monstrator
+monstricide
+monstriferous
+monstrification
+monstrify
+monstrosity
+monstrous
+monstrously
+monstrousness
+Mont
+montage
+Montagnac
+Montagnais
+Montana
+montana
+Montanan
+montane
+montanic
+montanin
+Montanism
+Montanist
+Montanistic
+Montanistical
+montanite
+Montanize
+montant
+Montargis
+Montauk
+montbretia
+monte
+montebrasite
+monteith
+montem
+Montenegrin
+Montepulciano
+Monterey
+Montes
+Montesco
+Montesinos
+Montessorian
+Montessorianism
+Montezuma
+montgolfier
+month
+monthly
+monthon
+Montia
+monticellite
+monticle
+monticoline
+monticulate
+monticule
+Monticulipora
+Monticuliporidae
+monticuliporidean
+monticuliporoid
+monticulose
+monticulous
+monticulus
+montiform
+montigeneous
+montilla
+montjoy
+montmartrite
+Montmorency
+montmorilonite
+monton
+Montrachet
+montroydite
+Montu
+monture
+Monty
+Monumbo
+monument
+monumental
+monumentalism
+monumentality
+monumentalization
+monumentalize
+monumentally
+monumentary
+monumentless
+monumentlike
+monzodiorite
+monzogabbro
+monzonite
+monzonitic
+moo
+Mooachaht
+mooch
+moocha
+moocher
+moochulka
+mood
+mooder
+moodily
+moodiness
+moodish
+moodishly
+moodishness
+moodle
+moody
+mooing
+mool
+moolet
+moolings
+mools
+moolum
+moon
+moonack
+moonbeam
+moonbill
+moonblink
+mooncalf
+mooncreeper
+moondown
+moondrop
+mooned
+mooner
+moonery
+mooneye
+moonface
+moonfaced
+moonfall
+moonfish
+moonflower
+moonglade
+moonglow
+moonhead
+moonily
+mooniness
+mooning
+moonish
+moonite
+moonja
+moonjah
+moonless
+moonlet
+moonlight
+moonlighted
+moonlighter
+moonlighting
+moonlighty
+moonlike
+moonlikeness
+moonlit
+moonlitten
+moonman
+moonpath
+moonpenny
+moonproof
+moonraker
+moonraking
+moonrise
+moonsail
+moonscape
+moonseed
+moonset
+moonshade
+moonshine
+moonshiner
+moonshining
+moonshiny
+moonsick
+moonsickness
+moonstone
+moontide
+moonwalker
+moonwalking
+moonward
+moonwards
+moonway
+moonwort
+moony
+moop
+Moor
+moor
+moorage
+moorball
+moorband
+moorberry
+moorbird
+moorburn
+moorburner
+moorburning
+Moore
+moorflower
+moorfowl
+mooring
+Moorish
+moorish
+moorishly
+moorishness
+moorland
+moorlander
+Moorman
+moorman
+moorn
+moorpan
+moors
+Moorship
+moorsman
+moorstone
+moortetter
+moorup
+moorwort
+moory
+moosa
+moose
+mooseberry
+moosebird
+moosebush
+moosecall
+mooseflower
+moosehood
+moosemise
+moosetongue
+moosewob
+moosewood
+moosey
+moost
+moot
+mootable
+mooter
+mooth
+mooting
+mootman
+mootstead
+mootworthy
+mop
+Mopan
+mopane
+mopboard
+mope
+moper
+moph
+mophead
+mopheaded
+moping
+mopingly
+mopish
+mopishly
+mopishness
+mopla
+mopper
+moppet
+moppy
+mopstick
+mopsy
+mopus
+Moquelumnan
+moquette
+Moqui
+mor
+mora
+Moraceae
+moraceous
+Moraea
+morainal
+moraine
+morainic
+moral
+morale
+moralism
+moralist
+moralistic
+moralistically
+morality
+moralization
+moralize
+moralizer
+moralizingly
+moralless
+morally
+moralness
+morals
+Moran
+morass
+morassic
+morassweed
+morassy
+morat
+morate
+moration
+moratoria
+moratorium
+moratory
+Moravian
+Moravianism
+Moravianized
+Moravid
+moravite
+moray
+morbid
+morbidity
+morbidize
+morbidly
+morbidness
+morbiferal
+morbiferous
+morbific
+morbifical
+morbifically
+morbify
+morbility
+morbillary
+morbilli
+morbilliform
+morbillous
+morcellate
+morcellated
+morcellation
+Morchella
+Morcote
+mordacious
+mordaciously
+mordacity
+mordancy
+mordant
+mordantly
+Mordella
+mordellid
+Mordellidae
+mordelloid
+mordenite
+mordent
+mordicate
+mordication
+mordicative
+mordore
+Mordv
+Mordva
+Mordvin
+Mordvinian
+more
+moreen
+morefold
+moreish
+morel
+morella
+morello
+morencite
+moreness
+morenita
+morenosite
+Moreote
+moreover
+morepork
+mores
+Moresque
+morfrey
+morg
+morga
+Morgan
+morgan
+Morgana
+morganatic
+morganatical
+morganatically
+morganic
+morganite
+morganize
+morgay
+morgen
+morgengift
+morgenstern
+morglay
+morgue
+moribund
+moribundity
+moribundly
+moric
+moriche
+moriform
+morigerate
+morigeration
+morigerous
+morigerously
+morigerousness
+morillon
+morin
+Morinaceae
+Morinda
+morindin
+morindone
+morinel
+Moringa
+Moringaceae
+moringaceous
+moringad
+Moringua
+moringuid
+Moringuidae
+moringuoid
+morion
+Moriori
+Moriscan
+Morisco
+Morisonian
+Morisonianism
+morkin
+morlop
+mormaor
+mormaordom
+mormaorship
+mormo
+Mormon
+mormon
+Mormondom
+Mormoness
+Mormonism
+Mormonist
+Mormonite
+Mormonweed
+Mormoops
+mormyr
+mormyre
+mormyrian
+mormyrid
+Mormyridae
+mormyroid
+Mormyrus
+morn
+morne
+morned
+morning
+morningless
+morningly
+mornings
+morningtide
+morningward
+mornless
+mornlike
+morntime
+mornward
+Moro
+moro
+moroc
+Moroccan
+Morocco
+morocco
+morocota
+morological
+morologically
+morologist
+morology
+moromancy
+moron
+moroncy
+morong
+moronic
+Moronidae
+moronism
+moronity
+moronry
+Moropus
+morosaurian
+morosauroid
+Morosaurus
+morose
+morosely
+moroseness
+morosis
+morosity
+moroxite
+morph
+morphallaxis
+morphea
+Morphean
+morpheme
+morphemic
+morphemics
+morphetic
+Morpheus
+morphew
+morphia
+morphiate
+morphic
+morphically
+morphinate
+morphine
+morphinic
+morphinism
+morphinist
+morphinization
+morphinize
+morphinomania
+morphinomaniac
+morphiomania
+morphiomaniac
+Morpho
+morphogenesis
+morphogenetic
+morphogenic
+morphogeny
+morphographer
+morphographic
+morphographical
+morphographist
+morphography
+morpholine
+morphologic
+morphological
+morphologically
+morphologist
+morphology
+morphometrical
+morphometry
+morphon
+morphonomic
+morphonomy
+morphophonemic
+morphophonemically
+morphophonemics
+morphophyly
+morphoplasm
+morphoplasmic
+morphosis
+morphotic
+morphotropic
+morphotropism
+morphotropy
+morphous
+Morrenian
+Morrhua
+morrhuate
+morrhuine
+morricer
+Morris
+morris
+Morrisean
+morrow
+morrowing
+morrowless
+morrowmass
+morrowspeech
+morrowtide
+morsal
+Morse
+morse
+morsel
+morselization
+morselize
+morsing
+morsure
+mort
+mortacious
+mortal
+mortalism
+mortalist
+mortality
+mortalize
+mortally
+mortalness
+mortalwise
+mortar
+mortarboard
+mortarize
+mortarless
+mortarlike
+mortarware
+mortary
+mortbell
+mortcloth
+mortersheen
+mortgage
+mortgageable
+mortgagee
+mortgagor
+morth
+morthwyrtha
+mortician
+mortier
+mortiferous
+mortiferously
+mortiferousness
+mortific
+mortification
+mortified
+mortifiedly
+mortifiedness
+mortifier
+mortify
+mortifying
+mortifyingly
+Mortimer
+mortise
+mortiser
+mortling
+mortmain
+mortmainer
+Morton
+mortuarian
+mortuary
+mortuous
+morula
+morular
+morulation
+morule
+moruloid
+Morus
+morvin
+morwong
+Mosaic
+mosaic
+Mosaical
+mosaical
+mosaically
+mosaicism
+mosaicist
+Mosaicity
+Mosaism
+Mosaist
+mosaist
+mosandrite
+mosasaur
+Mosasauri
+Mosasauria
+mosasaurian
+mosasaurid
+Mosasauridae
+mosasauroid
+Mosasaurus
+Mosatenan
+moschate
+moschatel
+moschatelline
+Moschi
+Moschidae
+moschiferous
+Moschinae
+moschine
+Moschus
+Moscow
+Mose
+Moselle
+Moses
+mosesite
+Mosetena
+mosette
+mosey
+Mosgu
+moskeneer
+mosker
+Moslem
+Moslemah
+Moslemic
+Moslemin
+Moslemism
+Moslemite
+Moslemize
+moslings
+mosque
+mosquelet
+mosquish
+mosquital
+Mosquito
+mosquito
+mosquitobill
+mosquitocidal
+mosquitocide
+mosquitoey
+mosquitoish
+mosquitoproof
+moss
+mossback
+mossberry
+mossbunker
+mossed
+mosser
+mossery
+mossful
+mosshead
+Mossi
+mossiness
+mossless
+mosslike
+mosstrooper
+mosstroopery
+mosstrooping
+mosswort
+mossy
+mossyback
+most
+moste
+Mosting
+mostlike
+mostlings
+mostly
+mostness
+Mosul
+Mosur
+mot
+Motacilla
+motacillid
+Motacillidae
+Motacillinae
+motacilline
+motatorious
+motatory
+Motazilite
+mote
+moted
+motel
+moteless
+moter
+motet
+motettist
+motey
+moth
+mothed
+mother
+motherdom
+mothered
+motherer
+mothergate
+motherhood
+motheriness
+mothering
+motherkin
+motherland
+motherless
+motherlessness
+motherlike
+motherliness
+motherling
+motherly
+mothership
+mothersome
+motherward
+motherwise
+motherwort
+mothery
+mothless
+mothlike
+mothproof
+mothworm
+mothy
+motif
+motific
+motile
+motility
+motion
+motionable
+motional
+motionless
+motionlessly
+motionlessness
+motitation
+motivate
+motivation
+motivational
+motive
+motiveless
+motivelessly
+motivelessness
+motiveness
+motivity
+motley
+motleyness
+motmot
+motofacient
+motograph
+motographic
+motomagnetic
+motoneuron
+motophone
+motor
+motorable
+motorboat
+motorboatman
+motorbus
+motorcab
+motorcade
+motorcar
+motorcycle
+motorcyclist
+motordom
+motordrome
+motored
+motorial
+motoric
+motoring
+motorism
+motorist
+motorium
+motorization
+motorize
+motorless
+motorman
+motorneer
+motorphobe
+motorphobia
+motorphobiac
+motorway
+motory
+Motozintlec
+Motozintleca
+motricity
+Mott
+mott
+motte
+mottle
+mottled
+mottledness
+mottlement
+mottler
+mottling
+motto
+mottoed
+mottoless
+mottolike
+mottramite
+motyka
+mou
+moucharaby
+mouchardism
+mouche
+mouchrabieh
+moud
+moudie
+moudieman
+moudy
+mouflon
+Mougeotia
+Mougeotiaceae
+mouillation
+mouille
+mouillure
+moujik
+moul
+mould
+moulded
+moule
+moulin
+moulinage
+moulinet
+moulleen
+moulrush
+mouls
+moulter
+mouly
+mound
+moundiness
+moundlet
+moundwork
+moundy
+mount
+mountable
+mountably
+mountain
+mountained
+mountaineer
+mountainet
+mountainette
+mountainless
+mountainlike
+mountainous
+mountainously
+mountainousness
+mountainside
+mountaintop
+mountainward
+mountainwards
+mountainy
+mountant
+mountebank
+mountebankery
+mountebankish
+mountebankism
+mountebankly
+mounted
+mounter
+Mountie
+mounting
+mountingly
+mountlet
+mounture
+moup
+mourn
+mourner
+mourneress
+mournful
+mournfully
+mournfulness
+mourning
+mourningly
+mournival
+mournsome
+mouse
+mousebane
+mousebird
+mousefish
+mousehawk
+mousehole
+mousehound
+Mouseion
+mousekin
+mouselet
+mouselike
+mouseproof
+mouser
+mousery
+mouseship
+mousetail
+mousetrap
+mouseweb
+mousey
+mousily
+mousiness
+mousing
+mousingly
+mousle
+mousmee
+Mousoni
+mousquetaire
+mousse
+Mousterian
+moustoc
+mousy
+mout
+moutan
+mouth
+mouthable
+mouthbreeder
+mouthed
+mouther
+mouthful
+mouthily
+mouthiness
+mouthing
+mouthingly
+mouthishly
+mouthless
+mouthlike
+mouthpiece
+mouthroot
+mouthwash
+mouthwise
+mouthy
+mouton
+moutonnee
+mouzah
+mouzouna
+movability
+movable
+movableness
+movably
+movant
+move
+moveability
+moveableness
+moveably
+moveless
+movelessly
+movelessness
+movement
+mover
+movie
+moviedom
+movieize
+movieland
+moving
+movingly
+movingness
+mow
+mowable
+mowana
+mowburn
+mowburnt
+mowch
+mowcht
+mower
+mowha
+mowie
+mowing
+mowland
+mown
+mowra
+mowrah
+mowse
+mowstead
+mowt
+mowth
+moxa
+moxieberry
+Moxo
+moy
+moyen
+moyenless
+moyenne
+moyite
+moyle
+moyo
+Mozambican
+mozambique
+Mozarab
+Mozarabian
+Mozarabic
+Mozartean
+mozemize
+mozing
+mozzetta
+Mpangwe
+Mpondo
+mpret
+Mr
+Mrs
+Mru
+mu
+muang
+mubarat
+mucago
+mucaro
+mucedin
+mucedinaceous
+mucedine
+mucedinous
+much
+muchfold
+muchly
+muchness
+mucic
+mucid
+mucidness
+muciferous
+mucific
+muciform
+mucigen
+mucigenous
+mucilage
+mucilaginous
+mucilaginously
+mucilaginousness
+mucin
+mucinogen
+mucinoid
+mucinous
+muciparous
+mucivore
+mucivorous
+muck
+muckender
+Mucker
+mucker
+muckerish
+muckerism
+mucket
+muckiness
+muckite
+muckle
+muckluck
+muckman
+muckment
+muckmidden
+muckna
+muckrake
+muckraker
+mucksweat
+mucksy
+muckthrift
+muckweed
+muckworm
+mucky
+mucluc
+mucocele
+mucocellulose
+mucocellulosic
+mucocutaneous
+mucodermal
+mucofibrous
+mucoflocculent
+mucoid
+mucomembranous
+muconic
+mucoprotein
+mucopurulent
+mucopus
+mucor
+Mucoraceae
+mucoraceous
+Mucorales
+mucorine
+mucorioid
+mucormycosis
+mucorrhea
+mucosa
+mucosal
+mucosanguineous
+mucose
+mucoserous
+mucosity
+mucosocalcareous
+mucosogranular
+mucosopurulent
+mucososaccharine
+mucous
+mucousness
+mucro
+mucronate
+mucronately
+mucronation
+mucrones
+mucroniferous
+mucroniform
+mucronulate
+mucronulatous
+muculent
+Mucuna
+mucus
+mucusin
+mud
+mudar
+mudbank
+mudcap
+mudd
+mudde
+mudden
+muddify
+muddily
+muddiness
+mudding
+muddish
+muddle
+muddlebrained
+muddledom
+muddlehead
+muddleheaded
+muddleheadedness
+muddlement
+muddleproof
+muddler
+muddlesome
+muddlingly
+muddy
+muddybrained
+muddybreast
+muddyheaded
+mudee
+Mudejar
+mudfish
+mudflow
+mudguard
+mudhead
+mudhole
+mudhopper
+mudir
+mudiria
+mudland
+mudlark
+mudlarker
+mudless
+mudproof
+mudra
+mudsill
+mudskipper
+mudslinger
+mudslinging
+mudspate
+mudstain
+mudstone
+mudsucker
+mudtrack
+mudweed
+mudwort
+Muehlenbeckia
+muermo
+muezzin
+muff
+muffed
+muffet
+muffetee
+muffin
+muffineer
+muffish
+muffishness
+muffle
+muffled
+muffleman
+muffler
+mufflin
+muffy
+mufti
+mufty
+mug
+muga
+mugearite
+mugful
+mugg
+mugger
+mugget
+muggily
+mugginess
+muggins
+muggish
+muggles
+Muggletonian
+Muggletonianism
+muggy
+mughouse
+mugience
+mugiency
+mugient
+Mugil
+Mugilidae
+mugiliform
+mugiloid
+mugweed
+mugwort
+mugwump
+mugwumpery
+mugwumpian
+mugwumpism
+muhammadi
+Muharram
+Muhlenbergia
+muid
+Muilla
+muir
+muirburn
+muircock
+muirfowl
+muishond
+muist
+mujtahid
+Mukden
+mukluk
+Mukri
+muktar
+muktatma
+mukti
+mulaprakriti
+mulatta
+mulatto
+mulattoism
+mulattress
+mulberry
+mulch
+mulcher
+Mulciber
+Mulcibirian
+mulct
+mulctable
+mulctary
+mulctation
+mulctative
+mulctatory
+mulctuary
+mulder
+mule
+muleback
+mulefoot
+mulefooted
+muleman
+muleta
+muleteer
+muletress
+muletta
+mulewort
+muley
+mulga
+muliebral
+muliebria
+muliebrile
+muliebrity
+muliebrous
+mulier
+mulierine
+mulierose
+mulierosity
+mulish
+mulishly
+mulishness
+mulism
+mulita
+mulk
+mull
+mulla
+mullah
+mullar
+mullein
+mullenize
+muller
+Mullerian
+mullet
+mulletry
+mullets
+mulley
+mullid
+Mullidae
+mulligan
+mulligatawny
+mulligrubs
+mullion
+mullite
+mullock
+mullocker
+mullocky
+mulloid
+mulloway
+mulmul
+mulse
+mulsify
+mult
+multangular
+multangularly
+multangularness
+multangulous
+multangulum
+Multani
+multanimous
+multarticulate
+multeity
+multiangular
+multiareolate
+multiarticular
+multiarticulate
+multiarticulated
+multiaxial
+multiblade
+multibladed
+multibranched
+multibranchiate
+multibreak
+multicamerate
+multicapitate
+multicapsular
+multicarinate
+multicarinated
+multicellular
+multicentral
+multicentric
+multicharge
+multichord
+multichrome
+multiciliate
+multiciliated
+multicipital
+multicircuit
+multicoccous
+multicoil
+multicolor
+multicolored
+multicolorous
+multicomponent
+multiconductor
+multiconstant
+multicore
+multicorneal
+multicostate
+multicourse
+multicrystalline
+multicuspid
+multicuspidate
+multicycle
+multicylinder
+multicylindered
+multidentate
+multidenticulate
+multidenticulated
+multidigitate
+multidimensional
+multidirectional
+multidisperse
+multiengine
+multiengined
+multiexhaust
+multifaced
+multifaceted
+multifactorial
+multifamilial
+multifarious
+multifariously
+multifariousness
+multiferous
+multifetation
+multifibered
+multifid
+multifidly
+multifidous
+multifidus
+multifilament
+multifistular
+multiflagellate
+multiflagellated
+multiflash
+multiflorous
+multiflow
+multiflue
+multifocal
+multifoil
+multifoiled
+multifold
+multifoliate
+multifoliolate
+multiform
+multiformed
+multiformity
+multifurcate
+multiganglionic
+multigap
+multigranulate
+multigranulated
+Multigraph
+multigraph
+multigrapher
+multiguttulate
+multigyrate
+multihead
+multihearth
+multihued
+multijet
+multijugate
+multijugous
+multilaciniate
+multilamellar
+multilamellate
+multilamellous
+multilaminar
+multilaminate
+multilaminated
+multilateral
+multilaterally
+multilighted
+multilineal
+multilinear
+multilingual
+multilinguist
+multilirate
+multiliteral
+multilobar
+multilobate
+multilobe
+multilobed
+multilobular
+multilobulate
+multilobulated
+multilocation
+multilocular
+multiloculate
+multiloculated
+multiloquence
+multiloquent
+multiloquious
+multiloquous
+multiloquy
+multimacular
+multimammate
+multimarble
+multimascular
+multimedial
+multimetalic
+multimetallism
+multimetallist
+multimillion
+multimillionaire
+multimodal
+multimodality
+multimolecular
+multimotor
+multimotored
+multinational
+multinervate
+multinervose
+multinodal
+multinodate
+multinodous
+multinodular
+multinomial
+multinominal
+multinominous
+multinuclear
+multinucleate
+multinucleated
+multinucleolar
+multinucleolate
+multinucleolated
+multiovular
+multiovulate
+multipara
+multiparient
+multiparity
+multiparous
+multipartisan
+multipartite
+multiped
+multiperforate
+multiperforated
+multipersonal
+multiphase
+multiphaser
+multiphotography
+multipinnate
+multiplane
+multiple
+multiplepoinding
+multiplet
+multiplex
+multipliable
+multipliableness
+multiplicability
+multiplicable
+multiplicand
+multiplicate
+multiplication
+multiplicational
+multiplicative
+multiplicatively
+multiplicator
+multiplicity
+multiplier
+multiply
+multiplying
+multipointed
+multipolar
+multipole
+multiported
+multipotent
+multipresence
+multipresent
+multiradial
+multiradiate
+multiradiated
+multiradicate
+multiradicular
+multiramified
+multiramose
+multiramous
+multirate
+multireflex
+multirooted
+multirotation
+multirotatory
+multisaccate
+multisacculate
+multisacculated
+multiscience
+multiseated
+multisect
+multisector
+multisegmental
+multisegmentate
+multisegmented
+multisensual
+multiseptate
+multiserial
+multiserially
+multiseriate
+multishot
+multisiliquous
+multisonous
+multispeed
+multispermous
+multispicular
+multispiculate
+multispindle
+multispinous
+multispiral
+multispired
+multistage
+multistaminate
+multistoried
+multistory
+multistratified
+multistratous
+multistriate
+multisulcate
+multisulcated
+multisyllabic
+multisyllability
+multisyllable
+multitarian
+multitentaculate
+multitheism
+multithreaded
+multititular
+multitoed
+multitoned
+multitube
+Multituberculata
+multituberculate
+multituberculated
+multituberculism
+multituberculy
+multitubular
+multitude
+multitudinal
+multitudinary
+multitudinism
+multitudinist
+multitudinistic
+multitudinosity
+multitudinous
+multitudinously
+multitudinousness
+multiturn
+multivagant
+multivalence
+multivalency
+multivalent
+multivalve
+multivalved
+multivalvular
+multivane
+multivariant
+multivarious
+multiversant
+multiverse
+multivibrator
+multivincular
+multivious
+multivocal
+multivocalness
+multivoiced
+multivolent
+multivoltine
+multivolumed
+multivorous
+multocular
+multum
+multungulate
+multure
+multurer
+mum
+mumble
+mumblebee
+mumblement
+mumbler
+mumbling
+mumblingly
+mummer
+mummery
+mummichog
+mummick
+mummied
+mummification
+mummiform
+mummify
+mumming
+mummy
+mummydom
+mummyhood
+mummylike
+mumness
+mump
+mumper
+mumphead
+mumpish
+mumpishly
+mumpishness
+mumps
+mumpsimus
+mumruffin
+mun
+Munandi
+Muncerian
+munch
+Munchausenism
+Munchausenize
+muncheel
+muncher
+munchet
+mund
+Munda
+mundane
+mundanely
+mundaneness
+mundanism
+mundanity
+Mundari
+mundatory
+mundic
+mundificant
+mundification
+mundifier
+mundify
+mundil
+mundivagant
+mundle
+mung
+munga
+munge
+mungey
+mungo
+mungofa
+munguba
+mungy
+Munia
+Munich
+Munichism
+municipal
+municipalism
+municipalist
+municipality
+municipalization
+municipalize
+municipalizer
+municipally
+municipium
+munific
+munificence
+munificency
+munificent
+munificently
+munificentness
+muniment
+munition
+munitionary
+munitioneer
+munitioner
+munitions
+munity
+munj
+munjeet
+munjistin
+munnion
+Munnopsidae
+Munnopsis
+Munsee
+munshi
+munt
+Muntiacus
+muntin
+Muntingia
+muntjac
+Munychia
+Munychian
+Munychion
+Muong
+Muphrid
+Mura
+mura
+Muradiyah
+Muraena
+Muraenidae
+muraenoid
+murage
+mural
+muraled
+muralist
+murally
+Muran
+Muranese
+murasakite
+Murat
+Muratorian
+murchy
+murder
+murderer
+murderess
+murdering
+murderingly
+murderish
+murderment
+murderous
+murderously
+murderousness
+murdrum
+mure
+murenger
+murex
+murexan
+murexide
+murga
+murgavi
+murgeon
+muriate
+muriated
+muriatic
+muricate
+muricid
+Muricidae
+muriciform
+muricine
+muricoid
+muriculate
+murid
+Muridae
+muridism
+Muriel
+muriform
+muriformly
+Murillo
+Murinae
+murine
+murinus
+muriti
+murium
+murk
+murkily
+murkiness
+murkish
+murkly
+murkness
+murksome
+murky
+murlin
+murly
+Murmi
+murmur
+murmuration
+murmurator
+murmurer
+murmuring
+murmuringly
+murmurish
+murmurless
+murmurlessly
+murmurous
+murmurously
+muromontite
+Murph
+murphy
+murra
+murrain
+Murray
+Murraya
+murre
+murrelet
+murrey
+murrhine
+murrina
+murrnong
+murshid
+Murthy
+murumuru
+Murut
+muruxi
+murva
+murza
+Murzim
+Mus
+Musa
+Musaceae
+musaceous
+Musaeus
+musal
+Musales
+Musalmani
+musang
+musar
+Musca
+muscade
+muscadel
+muscadine
+Muscadinia
+muscardine
+Muscardinidae
+Muscardinus
+Muscari
+muscariform
+muscarine
+muscat
+muscatel
+muscatorium
+Musci
+Muscicapa
+Muscicapidae
+muscicapine
+muscicide
+muscicole
+muscicoline
+muscicolous
+muscid
+Muscidae
+musciform
+Muscinae
+muscle
+muscled
+muscleless
+musclelike
+muscling
+muscly
+Muscogee
+muscoid
+Muscoidea
+muscologic
+muscological
+muscologist
+muscology
+muscone
+muscose
+muscoseness
+muscosity
+muscot
+muscovadite
+muscovado
+Muscovi
+Muscovite
+muscovite
+Muscovitic
+muscovitization
+muscovitize
+muscovy
+muscular
+muscularity
+muscularize
+muscularly
+musculation
+musculature
+muscule
+musculin
+musculoarterial
+musculocellular
+musculocutaneous
+musculodermic
+musculoelastic
+musculofibrous
+musculointestinal
+musculoligamentous
+musculomembranous
+musculopallial
+musculophrenic
+musculospinal
+musculospiral
+musculotegumentary
+musculotendinous
+Muse
+muse
+mused
+museful
+musefully
+museist
+museless
+muselike
+museographist
+museography
+museologist
+museology
+muser
+musery
+musette
+museum
+museumize
+Musgu
+mush
+musha
+mushaa
+Mushabbihite
+mushed
+musher
+mushhead
+mushheaded
+mushheadedness
+mushily
+mushiness
+mushla
+mushmelon
+mushrebiyeh
+mushroom
+mushroomer
+mushroomic
+mushroomlike
+mushroomy
+mushru
+mushy
+music
+musical
+musicale
+musicality
+musicalization
+musicalize
+musically
+musicalness
+musicate
+musician
+musiciana
+musicianer
+musicianly
+musicianship
+musicker
+musicless
+musiclike
+musicmonger
+musico
+musicoartistic
+musicodramatic
+musicofanatic
+musicographer
+musicography
+musicological
+musicologist
+musicologue
+musicology
+musicomania
+musicomechanical
+musicophilosophical
+musicophobia
+musicophysical
+musicopoetic
+musicotherapy
+musicproof
+musie
+musily
+musimon
+musing
+musingly
+musk
+muskat
+muskeg
+muskeggy
+muskellunge
+musket
+musketade
+musketeer
+musketlike
+musketoon
+musketproof
+musketry
+muskflower
+Muskhogean
+muskie
+muskiness
+muskish
+musklike
+muskmelon
+Muskogee
+muskrat
+muskroot
+Muskwaki
+muskwood
+musky
+muslin
+muslined
+muslinet
+musnud
+Musophaga
+Musophagi
+Musophagidae
+musophagine
+musquash
+musquashroot
+musquashweed
+musquaspen
+musquaw
+musrol
+muss
+mussable
+mussably
+Mussaenda
+mussal
+mussalchee
+mussel
+musseled
+musseler
+mussily
+mussiness
+mussitate
+mussitation
+mussuk
+Mussulman
+Mussulmanic
+Mussulmanish
+Mussulmanism
+Mussulwoman
+mussurana
+mussy
+must
+mustache
+mustached
+mustachial
+mustachio
+mustachioed
+mustafina
+Mustahfiz
+mustang
+mustanger
+mustard
+mustarder
+mustee
+Mustela
+mustelid
+Mustelidae
+musteline
+mustelinous
+musteloid
+Mustelus
+muster
+musterable
+musterdevillers
+musterer
+mustermaster
+mustify
+mustily
+mustiness
+mustnt
+musty
+muta
+Mutabilia
+mutability
+mutable
+mutableness
+mutably
+mutafacient
+mutage
+mutagenic
+mutant
+mutarotate
+mutarotation
+mutase
+mutate
+mutation
+mutational
+mutationally
+mutationism
+mutationist
+mutative
+mutatory
+mutawalli
+Mutazala
+mutch
+mute
+mutedly
+mutely
+muteness
+Muter
+mutesarif
+mutescence
+mutessarifat
+muth
+muthmannite
+muthmassel
+mutic
+muticous
+mutilate
+mutilation
+mutilative
+mutilator
+mutilatory
+Mutilla
+mutillid
+Mutillidae
+mutilous
+mutineer
+mutinous
+mutinously
+mutinousness
+mutiny
+Mutisia
+Mutisiaceae
+mutism
+mutist
+mutistic
+mutive
+mutivity
+mutoscope
+mutoscopic
+mutsje
+mutsuddy
+mutt
+mutter
+mutterer
+muttering
+mutteringly
+mutton
+muttonbird
+muttonchop
+muttonfish
+muttonhead
+muttonheaded
+muttonhood
+muttonmonger
+muttonwood
+muttony
+mutual
+mutualism
+mutualist
+mutualistic
+mutuality
+mutualization
+mutualize
+mutually
+mutualness
+mutuary
+mutuatitious
+mutulary
+mutule
+mutuum
+mux
+Muysca
+muyusa
+muzhik
+Muzo
+muzz
+muzzily
+muzziness
+muzzle
+muzzler
+muzzlewood
+muzzy
+Mwa
+my
+Mya
+Myacea
+myal
+myalgia
+myalgic
+myalism
+myall
+Myaria
+myarian
+myasthenia
+myasthenic
+myatonia
+myatonic
+myatony
+myatrophy
+mycele
+mycelia
+mycelial
+mycelian
+mycelioid
+mycelium
+myceloid
+Mycenaean
+Mycetes
+mycetism
+mycetocyte
+mycetogenesis
+mycetogenetic
+mycetogenic
+mycetogenous
+mycetoid
+mycetological
+mycetology
+mycetoma
+mycetomatous
+Mycetophagidae
+mycetophagous
+mycetophilid
+Mycetophilidae
+mycetous
+Mycetozoa
+mycetozoan
+mycetozoon
+Mycobacteria
+Mycobacteriaceae
+Mycobacterium
+mycocecidium
+mycocyte
+mycoderm
+mycoderma
+mycodermatoid
+mycodermatous
+mycodermic
+mycodermitis
+mycodesmoid
+mycodomatium
+mycogastritis
+Mycogone
+mycohaemia
+mycohemia
+mycoid
+mycologic
+mycological
+mycologically
+mycologist
+mycologize
+mycology
+mycomycete
+Mycomycetes
+mycomycetous
+mycomyringitis
+mycophagist
+mycophagous
+mycophagy
+mycophyte
+Mycoplana
+mycoplasm
+mycoplasmic
+mycoprotein
+mycorhiza
+mycorhizal
+mycorrhizal
+mycose
+mycosin
+mycosis
+mycosozin
+Mycosphaerella
+Mycosphaerellaceae
+mycosterol
+mycosymbiosis
+mycotic
+mycotrophic
+Mycteria
+mycteric
+mycterism
+Myctodera
+myctophid
+Myctophidae
+Myctophum
+Mydaidae
+mydaleine
+mydatoxine
+Mydaus
+mydine
+mydriasine
+mydriasis
+mydriatic
+mydriatine
+myectomize
+myectomy
+myectopia
+myectopy
+myelalgia
+myelapoplexy
+myelasthenia
+myelatrophy
+myelauxe
+myelemia
+myelencephalic
+myelencephalon
+myelencephalous
+myelic
+myelin
+myelinate
+myelinated
+myelination
+myelinic
+myelinization
+myelinogenesis
+myelinogenetic
+myelinogeny
+myelitic
+myelitis
+myeloblast
+myeloblastic
+myelobrachium
+myelocele
+myelocerebellar
+myelocoele
+myelocyst
+myelocystic
+myelocystocele
+myelocyte
+myelocythaemia
+myelocythemia
+myelocytic
+myelocytosis
+myelodiastasis
+myeloencephalitis
+myeloganglitis
+myelogenesis
+myelogenetic
+myelogenous
+myelogonium
+myeloic
+myeloid
+myelolymphangioma
+myelolymphocyte
+myeloma
+myelomalacia
+myelomatoid
+myelomatosis
+myelomenia
+myelomeningitis
+myelomeningocele
+myelomere
+myelon
+myelonal
+myeloneuritis
+myelonic
+myeloparalysis
+myelopathic
+myelopathy
+myelopetal
+myelophthisis
+myeloplast
+myeloplastic
+myeloplax
+myeloplegia
+myelopoiesis
+myelopoietic
+myelorrhagia
+myelorrhaphy
+myelosarcoma
+myelosclerosis
+myelospasm
+myelospongium
+myelosyphilis
+myelosyphilosis
+myelosyringosis
+myelotherapy
+Myelozoa
+myelozoan
+myentasis
+myenteric
+myenteron
+myesthesia
+mygale
+mygalid
+mygaloid
+Myiarchus
+myiasis
+myiferous
+myiodesopsia
+myiosis
+myitis
+mykiss
+myliobatid
+Myliobatidae
+myliobatine
+myliobatoid
+Mylodon
+mylodont
+Mylodontidae
+mylohyoid
+mylohyoidean
+mylonite
+mylonitic
+Mymar
+mymarid
+Mymaridae
+myna
+Mynheer
+mynpacht
+mynpachtbrief
+myoalbumin
+myoalbumose
+myoatrophy
+myoblast
+myoblastic
+myocardiac
+myocardial
+myocardiogram
+myocardiograph
+myocarditic
+myocarditis
+myocardium
+myocele
+myocellulitis
+myoclonic
+myoclonus
+myocoele
+myocoelom
+myocolpitis
+myocomma
+myocyte
+myodegeneration
+Myodes
+myodiastasis
+myodynamia
+myodynamic
+myodynamics
+myodynamiometer
+myodynamometer
+myoedema
+myoelectric
+myoendocarditis
+myoepicardial
+myoepithelial
+myofibril
+myofibroma
+myogen
+myogenesis
+myogenetic
+myogenic
+myogenous
+myoglobin
+myoglobulin
+myogram
+myograph
+myographer
+myographic
+myographical
+myographist
+myography
+myohematin
+myoid
+myoidema
+myokinesis
+myolemma
+myolipoma
+myoliposis
+myologic
+myological
+myologist
+myology
+myolysis
+myoma
+myomalacia
+myomancy
+myomantic
+myomatous
+myomectomy
+myomelanosis
+myomere
+myometritis
+myometrium
+myomohysterectomy
+myomorph
+Myomorpha
+myomorphic
+myomotomy
+myoneme
+myoneural
+myoneuralgia
+myoneurasthenia
+myoneure
+myoneuroma
+myoneurosis
+myonosus
+myopachynsis
+myoparalysis
+myoparesis
+myopathia
+myopathic
+myopathy
+myope
+myoperitonitis
+myophan
+myophore
+myophorous
+myophysical
+myophysics
+myopia
+myopic
+myopical
+myopically
+myoplasm
+myoplastic
+myoplasty
+myopolar
+Myoporaceae
+myoporaceous
+myoporad
+Myoporum
+myoproteid
+myoprotein
+myoproteose
+myops
+myopy
+myorrhaphy
+myorrhexis
+myosalpingitis
+myosarcoma
+myosarcomatous
+myosclerosis
+myoscope
+myoseptum
+myosin
+myosinogen
+myosinose
+myosis
+myositic
+myositis
+myosote
+Myosotis
+myospasm
+myospasmia
+Myosurus
+myosuture
+myosynizesis
+myotacismus
+Myotalpa
+Myotalpinae
+myotasis
+myotenotomy
+myothermic
+myotic
+myotome
+myotomic
+myotomy
+myotonia
+myotonic
+myotonus
+myotony
+myotrophy
+myowun
+Myoxidae
+myoxine
+Myoxus
+Myra
+myrabalanus
+myrabolam
+myrcene
+Myrcia
+myrcia
+myriacanthous
+myriacoulomb
+myriad
+myriaded
+myriadfold
+myriadly
+myriadth
+myriagram
+myriagramme
+myrialiter
+myrialitre
+myriameter
+myriametre
+Myrianida
+myriapod
+Myriapoda
+myriapodan
+myriapodous
+myriarch
+myriarchy
+myriare
+Myrica
+myrica
+Myricaceae
+myricaceous
+Myricales
+myricetin
+myricin
+Myrick
+myricyl
+myricylic
+Myrientomata
+myringa
+myringectomy
+myringitis
+myringodectomy
+myringodermatitis
+myringomycosis
+myringoplasty
+myringotome
+myringotomy
+myriological
+myriologist
+myriologue
+myriophyllite
+myriophyllous
+Myriophyllum
+Myriopoda
+myriopodous
+myriorama
+myrioscope
+myriosporous
+myriotheism
+Myriotrichia
+Myriotrichiaceae
+myriotrichiaceous
+myristate
+myristic
+Myristica
+myristica
+Myristicaceae
+myristicaceous
+Myristicivora
+myristicivorous
+myristin
+myristone
+Myrmecia
+Myrmecobiinae
+myrmecobine
+Myrmecobius
+myrmecochorous
+myrmecochory
+myrmecoid
+myrmecoidy
+myrmecological
+myrmecologist
+myrmecology
+Myrmecophaga
+Myrmecophagidae
+myrmecophagine
+myrmecophagoid
+myrmecophagous
+myrmecophile
+myrmecophilism
+myrmecophilous
+myrmecophily
+myrmecophobic
+myrmecophyte
+myrmecophytic
+myrmekite
+Myrmeleon
+Myrmeleonidae
+Myrmeleontidae
+Myrmica
+myrmicid
+Myrmicidae
+myrmicine
+myrmicoid
+Myrmidon
+Myrmidonian
+myrmotherine
+myrobalan
+Myron
+myron
+myronate
+myronic
+myrosin
+myrosinase
+Myrothamnaceae
+myrothamnaceous
+Myrothamnus
+Myroxylon
+myrrh
+myrrhed
+myrrhic
+myrrhine
+Myrrhis
+myrrhol
+myrrhophore
+myrrhy
+Myrsinaceae
+myrsinaceous
+myrsinad
+Myrsiphyllum
+Myrtaceae
+myrtaceous
+myrtal
+Myrtales
+myrtiform
+Myrtilus
+myrtle
+myrtleberry
+myrtlelike
+myrtol
+Myrtus
+mysel
+myself
+mysell
+Mysian
+mysid
+Mysidacea
+Mysidae
+mysidean
+Mysis
+mysogynism
+mysoid
+mysophobia
+Mysore
+mysosophist
+mysost
+myst
+mystacial
+Mystacocete
+Mystacoceti
+mystagogic
+mystagogical
+mystagogically
+mystagogue
+mystagogy
+mystax
+mysterial
+mysteriarch
+mysteriosophic
+mysteriosophy
+mysterious
+mysteriously
+mysteriousness
+mysterize
+mystery
+mystes
+mystic
+mystical
+mysticality
+mystically
+mysticalness
+Mysticete
+mysticete
+Mysticeti
+mysticetous
+mysticism
+mysticity
+mysticize
+mysticly
+mystific
+mystifically
+mystification
+mystificator
+mystificatory
+mystifiedly
+mystifier
+mystify
+mystifyingly
+mytacism
+myth
+mythical
+mythicalism
+mythicality
+mythically
+mythicalness
+mythicism
+mythicist
+mythicize
+mythicizer
+mythification
+mythify
+mythism
+mythist
+mythize
+mythland
+mythmaker
+mythmaking
+mythoclast
+mythoclastic
+mythogenesis
+mythogonic
+mythogony
+mythographer
+mythographist
+mythography
+mythogreen
+mythoheroic
+mythohistoric
+mythologema
+mythologer
+mythological
+mythologically
+mythologist
+mythologize
+mythologizer
+mythologue
+mythology
+mythomania
+mythomaniac
+mythometer
+mythonomy
+mythopastoral
+mythopoeic
+mythopoeism
+mythopoeist
+mythopoem
+mythopoesis
+mythopoesy
+mythopoet
+mythopoetic
+mythopoetize
+mythopoetry
+mythos
+mythus
+Mytilacea
+mytilacean
+mytilaceous
+Mytiliaspis
+mytilid
+Mytilidae
+mytiliform
+mytiloid
+mytilotoxine
+Mytilus
+myxa
+myxadenitis
+myxadenoma
+myxaemia
+myxamoeba
+myxangitis
+myxasthenia
+myxedema
+myxedematoid
+myxedematous
+myxedemic
+myxemia
+Myxine
+Myxinidae
+myxinoid
+Myxinoidei
+myxo
+Myxobacteria
+Myxobacteriaceae
+myxobacteriaceous
+Myxobacteriales
+myxoblastoma
+myxochondroma
+myxochondrosarcoma
+Myxococcus
+myxocystoma
+myxocyte
+myxoenchondroma
+myxofibroma
+myxofibrosarcoma
+myxoflagellate
+myxogaster
+Myxogasteres
+Myxogastrales
+Myxogastres
+myxogastric
+myxogastrous
+myxoglioma
+myxoid
+myxoinoma
+myxolipoma
+myxoma
+myxomatosis
+myxomatous
+Myxomycetales
+myxomycete
+Myxomycetes
+myxomycetous
+myxomyoma
+myxoneuroma
+myxopapilloma
+Myxophyceae
+myxophycean
+Myxophyta
+myxopod
+Myxopoda
+myxopodan
+myxopodium
+myxopodous
+myxopoiesis
+myxorrhea
+myxosarcoma
+Myxospongiae
+myxospongian
+Myxospongida
+myxospore
+Myxosporidia
+myxosporidian
+Myxosporidiida
+Myxosporium
+myxosporous
+Myxothallophyta
+myxotheca
+Myzodendraceae
+myzodendraceous
+Myzodendron
+Myzomyia
+myzont
+Myzontes
+Myzostoma
+Myzostomata
+myzostomatous
+myzostome
+myzostomid
+Myzostomida
+Myzostomidae
+myzostomidan
+myzostomous
+N
+n
+na
+naa
+naam
+Naaman
+Naassenes
+nab
+nabak
+Nabal
+Nabalism
+Nabalite
+Nabalitic
+Nabaloi
+Nabalus
+Nabataean
+Nabatean
+Nabathaean
+Nabathean
+Nabathite
+nabber
+Nabby
+nabk
+nabla
+nable
+nabob
+nabobery
+nabobess
+nabobical
+nabobish
+nabobishly
+nabobism
+nabobry
+nabobship
+Nabothian
+nabs
+Nabu
+nacarat
+nacarine
+nace
+nacelle
+nach
+nachani
+Nachitoch
+Nachitoches
+Nachschlag
+Nacionalista
+nacket
+nacre
+nacred
+nacreous
+nacrine
+nacrite
+nacrous
+nacry
+nadder
+Nadeem
+nadir
+nadiral
+nadorite
+nae
+naebody
+naegate
+naegates
+nael
+Naemorhedinae
+naemorhedine
+Naemorhedus
+naether
+naething
+nag
+Naga
+naga
+nagaika
+nagana
+nagara
+Nagari
+nagatelite
+nagger
+naggin
+nagging
+naggingly
+naggingness
+naggish
+naggle
+naggly
+naggy
+naght
+nagkassar
+nagmaal
+nagman
+nagnag
+nagnail
+nagor
+nagsman
+nagster
+nagual
+nagualism
+nagualist
+nagyagite
+Nahanarvali
+Nahane
+Nahani
+Naharvali
+Nahor
+Nahua
+Nahuan
+Nahuatl
+Nahuatlac
+Nahuatlan
+Nahuatleca
+Nahuatlecan
+Nahum
+naiad
+Naiadaceae
+naiadaceous
+Naiadales
+Naiades
+naiant
+Naias
+naid
+naif
+naifly
+naig
+naigie
+naik
+nail
+nailbin
+nailbrush
+nailer
+naileress
+nailery
+nailhead
+nailing
+nailless
+naillike
+nailprint
+nailproof
+nailrod
+nailshop
+nailsick
+nailsmith
+nailwort
+naily
+Naim
+nain
+nainsel
+nainsook
+naio
+naipkin
+Nair
+nairy
+nais
+naish
+naissance
+naissant
+naither
+naive
+naively
+naiveness
+naivete
+naivety
+Naja
+nak
+nake
+naked
+nakedish
+nakedize
+nakedly
+nakedness
+nakedweed
+nakedwood
+naker
+nakhlite
+nakhod
+nakhoda
+Nakir
+nako
+Nakomgilisala
+nakong
+nakoo
+Nakula
+Nalita
+nallah
+nam
+Nama
+namability
+namable
+Namaqua
+namaqua
+Namaquan
+namaycush
+namaz
+namazlik
+Nambe
+namda
+name
+nameability
+nameable
+nameboard
+nameless
+namelessly
+namelessness
+nameling
+namely
+namer
+namesake
+naming
+nammad
+Nan
+nan
+Nana
+nana
+Nanaimo
+nanawood
+Nance
+Nancy
+nancy
+Nanda
+Nandi
+nandi
+Nandina
+nandine
+nandow
+nandu
+nane
+nanes
+nanga
+nanism
+nanization
+nankeen
+Nankin
+nankin
+Nanking
+Nankingese
+nannander
+nannandrium
+nannandrous
+Nannette
+nannoplankton
+Nanny
+nanny
+nannyberry
+nannybush
+nanocephalia
+nanocephalic
+nanocephalism
+nanocephalous
+nanocephalus
+nanocephaly
+nanoid
+nanomelia
+nanomelous
+nanomelus
+nanosoma
+nanosomia
+nanosomus
+nanpie
+nant
+Nanticoke
+nantle
+nantokite
+Nantz
+naological
+naology
+naometry
+Naomi
+Naos
+naos
+Naosaurus
+Naoto
+nap
+napa
+Napaea
+Napaean
+napal
+napalm
+nape
+napead
+napecrest
+napellus
+naperer
+napery
+naphtha
+naphthacene
+naphthalate
+naphthalene
+naphthaleneacetic
+naphthalenesulphonic
+naphthalenic
+naphthalenoid
+naphthalic
+naphthalidine
+naphthalin
+naphthaline
+naphthalization
+naphthalize
+naphthalol
+naphthamine
+naphthanthracene
+naphthene
+naphthenic
+naphthinduline
+naphthionate
+naphtho
+naphthoic
+naphthol
+naphtholate
+naphtholize
+naphtholsulphonate
+naphtholsulphonic
+naphthoquinone
+naphthoresorcinol
+naphthosalol
+naphthous
+naphthoxide
+naphthyl
+naphthylamine
+naphthylaminesulphonic
+naphthylene
+naphthylic
+naphtol
+Napierian
+napiform
+napkin
+napkining
+napless
+naplessness
+Napoleon
+napoleon
+Napoleonana
+Napoleonic
+Napoleonically
+Napoleonism
+Napoleonist
+Napoleonistic
+napoleonite
+Napoleonize
+napoo
+nappe
+napped
+napper
+nappiness
+napping
+nappishness
+nappy
+naprapath
+naprapathy
+napron
+napthionic
+napu
+nar
+Narcaciontes
+Narcaciontidae
+narceine
+narcism
+Narciss
+Narcissan
+narcissi
+Narcissine
+narcissism
+narcissist
+narcissistic
+Narcissus
+narcist
+narcistic
+narcoanalysis
+narcoanesthesia
+Narcobatidae
+Narcobatoidea
+Narcobatus
+narcohypnia
+narcohypnosis
+narcolepsy
+narcoleptic
+narcoma
+narcomania
+narcomaniac
+narcomaniacal
+narcomatous
+Narcomedusae
+narcomedusan
+narcose
+narcosis
+narcostimulant
+narcosynthesis
+narcotherapy
+narcotia
+narcotic
+narcotical
+narcotically
+narcoticalness
+narcoticism
+narcoticness
+narcotina
+narcotine
+narcotinic
+narcotism
+narcotist
+narcotization
+narcotize
+narcous
+nard
+nardine
+nardoo
+Nardus
+Naren
+Narendra
+nares
+Naresh
+narghile
+nargil
+narial
+naric
+narica
+naricorn
+nariform
+narine
+naringenin
+naringin
+nark
+narky
+narr
+narra
+Narraganset
+narras
+narratable
+narrate
+narrater
+narration
+narrational
+narrative
+narratively
+narrator
+narratory
+narratress
+narratrix
+narrawood
+narrow
+narrower
+narrowhearted
+narrowheartedness
+narrowingness
+narrowish
+narrowly
+narrowness
+narrowy
+narsarsukite
+narsinga
+narthecal
+Narthecium
+narthex
+narwhal
+narwhalian
+nary
+nasab
+nasal
+Nasalis
+nasalis
+nasalism
+nasality
+nasalization
+nasalize
+nasally
+nasalward
+nasalwards
+nasard
+Nascan
+Nascapi
+nascence
+nascency
+nascent
+nasch
+naseberry
+nasethmoid
+nash
+nashgab
+nashgob
+Nashim
+Nashira
+Nashua
+nasi
+nasial
+nasicorn
+Nasicornia
+nasicornous
+Nasiei
+nasiform
+nasilabial
+nasillate
+nasillation
+nasioalveolar
+nasiobregmatic
+nasioinial
+nasiomental
+nasion
+nasitis
+Naskhi
+nasoalveola
+nasoantral
+nasobasilar
+nasobronchial
+nasobuccal
+nasoccipital
+nasociliary
+nasoethmoidal
+nasofrontal
+nasolabial
+nasolachrymal
+nasological
+nasologist
+nasology
+nasomalar
+nasomaxillary
+nasonite
+nasoorbital
+nasopalatal
+nasopalatine
+nasopharyngeal
+nasopharyngitis
+nasopharynx
+nasoprognathic
+nasoprognathism
+nasorostral
+nasoscope
+nasoseptal
+nasosinuitis
+nasosinusitis
+nasosubnasal
+nasoturbinal
+nasrol
+Nassa
+Nassau
+Nassellaria
+nassellarian
+Nassidae
+nassology
+nast
+nastaliq
+nastic
+nastika
+nastily
+nastiness
+nasturtion
+nasturtium
+nasty
+Nasua
+nasus
+nasute
+nasuteness
+nasutiform
+nasutus
+nat
+natability
+nataka
+Natal
+natal
+Natalia
+Natalian
+Natalie
+natality
+nataloin
+natals
+natant
+natantly
+Nataraja
+natation
+natational
+natator
+natatorial
+natatorious
+natatorium
+natatory
+natch
+natchbone
+Natchez
+Natchezan
+Natchitoches
+natchnee
+Nate
+nates
+Nathan
+Nathanael
+Nathaniel
+nathe
+nather
+nathless
+Natica
+Naticidae
+naticiform
+naticine
+Natick
+naticoid
+natiform
+natimortality
+nation
+national
+nationalism
+nationalist
+nationalistic
+nationalistically
+nationality
+nationalization
+nationalize
+nationalizer
+nationally
+nationalness
+nationalty
+nationhood
+nationless
+nationwide
+native
+natively
+nativeness
+nativism
+nativist
+nativistic
+nativity
+natr
+Natraj
+Natricinae
+natricine
+natrium
+Natrix
+natrochalcite
+natrojarosite
+natrolite
+natron
+Natt
+natter
+nattered
+natteredness
+natterjack
+nattily
+nattiness
+nattle
+natty
+natuary
+natural
+naturalesque
+naturalism
+naturalist
+naturalistic
+naturalistically
+naturality
+naturalization
+naturalize
+naturalizer
+naturally
+naturalness
+nature
+naturecraft
+naturelike
+naturing
+naturism
+naturist
+naturistic
+naturistically
+naturize
+naturopath
+naturopathic
+naturopathist
+naturopathy
+naucrar
+naucrary
+naufragous
+nauger
+naught
+naughtily
+naughtiness
+naughty
+naujaite
+naumachia
+naumachy
+naumannite
+Naumburgia
+naumk
+naumkeag
+naumkeager
+naunt
+nauntle
+naupathia
+nauplial
+naupliiform
+nauplioid
+nauplius
+nauropometer
+nauscopy
+nausea
+nauseant
+nauseaproof
+nauseate
+nauseatingly
+nauseation
+nauseous
+nauseously
+nauseousness
+Nauset
+naut
+nautch
+nauther
+nautic
+nautical
+nauticality
+nautically
+nautics
+nautiform
+Nautilacea
+nautilacean
+nautilicone
+nautiliform
+nautilite
+nautiloid
+Nautiloidea
+nautiloidean
+nautilus
+Navaho
+Navajo
+naval
+navalese
+navalism
+navalist
+navalistic
+navalistically
+navally
+navar
+navarch
+navarchy
+Navarrese
+Navarrian
+nave
+navel
+naveled
+navellike
+navelwort
+navet
+navette
+navew
+navicella
+navicert
+navicula
+Naviculaceae
+naviculaeform
+navicular
+naviculare
+naviculoid
+naviform
+navigability
+navigable
+navigableness
+navigably
+navigant
+navigate
+navigation
+navigational
+navigator
+navigerous
+navipendular
+navipendulum
+navite
+navvy
+navy
+naw
+nawab
+nawabship
+nawt
+nay
+Nayar
+Nayarit
+Nayarita
+nayaur
+naysay
+naysayer
+nayward
+nayword
+Nazarate
+Nazarean
+Nazarene
+Nazarenism
+Nazarite
+Nazariteship
+Nazaritic
+Nazaritish
+Nazaritism
+naze
+Nazerini
+Nazi
+Nazify
+Naziism
+nazim
+nazir
+Nazirate
+Nazirite
+Naziritic
+Nazism
+ne
+nea
+Neal
+neal
+neallotype
+Neanderthal
+Neanderthaler
+Neanderthaloid
+neanic
+neanthropic
+neap
+neaped
+Neapolitan
+nearable
+nearabout
+nearabouts
+nearaivays
+nearaway
+nearby
+Nearctic
+Nearctica
+nearest
+nearish
+nearly
+nearmost
+nearness
+nearsighted
+nearsightedly
+nearsightedness
+nearthrosis
+neat
+neaten
+neath
+neatherd
+neatherdess
+neathmost
+neatify
+neatly
+neatness
+neb
+neback
+Nebaioth
+Nebalia
+Nebaliacea
+nebalian
+Nebaliidae
+nebalioid
+nebbed
+nebbuck
+nebbuk
+nebby
+nebel
+nebelist
+nebenkern
+Nebiim
+Nebraskan
+nebris
+nebula
+nebulae
+nebular
+nebularization
+nebularize
+nebulated
+nebulation
+nebule
+nebulescent
+nebuliferous
+nebulite
+nebulium
+nebulization
+nebulize
+nebulizer
+nebulose
+nebulosity
+nebulous
+nebulously
+nebulousness
+Necator
+necessar
+necessarian
+necessarianism
+necessarily
+necessariness
+necessary
+necessism
+necessist
+necessitarian
+necessitarianism
+necessitate
+necessitatedly
+necessitatingly
+necessitation
+necessitative
+necessitous
+necessitously
+necessitousness
+necessitude
+necessity
+neck
+neckar
+neckatee
+neckband
+neckcloth
+necked
+necker
+neckercher
+neckerchief
+neckful
+neckguard
+necking
+neckinger
+necklace
+necklaced
+necklaceweed
+neckless
+necklet
+necklike
+neckline
+neckmold
+neckpiece
+neckstock
+necktie
+necktieless
+neckward
+neckwear
+neckweed
+neckyoke
+necrectomy
+necremia
+necrobacillary
+necrobacillosis
+necrobiosis
+necrobiotic
+necrogenic
+necrogenous
+necrographer
+necrolatry
+necrologic
+necrological
+necrologically
+necrologist
+necrologue
+necrology
+necromancer
+necromancing
+necromancy
+necromantic
+necromantically
+necromorphous
+necronite
+necropathy
+Necrophaga
+necrophagan
+necrophagous
+necrophile
+necrophilia
+necrophilic
+necrophilism
+necrophilistic
+necrophilous
+necrophily
+necrophobia
+necrophobic
+Necrophorus
+necropoleis
+necropoles
+necropolis
+necropolitan
+necropsy
+necroscopic
+necroscopical
+necroscopy
+necrose
+necrosis
+necrotic
+necrotization
+necrotize
+necrotomic
+necrotomist
+necrotomy
+necrotype
+necrotypic
+Nectandra
+nectar
+nectareal
+nectarean
+nectared
+nectareous
+nectareously
+nectareousness
+nectarial
+nectarian
+nectaried
+nectariferous
+nectarine
+Nectarinia
+Nectariniidae
+nectarious
+nectarium
+nectarivorous
+nectarize
+nectarlike
+nectarous
+nectary
+nectiferous
+nectocalycine
+nectocalyx
+Nectonema
+nectophore
+nectopod
+Nectria
+nectriaceous
+Nectrioidaceae
+Necturidae
+Necturus
+Ned
+nedder
+neddy
+Nederlands
+nee
+neebor
+neebour
+need
+needer
+needfire
+needful
+needfully
+needfulness
+needgates
+needham
+needily
+neediness
+needing
+needle
+needlebill
+needlebook
+needlebush
+needlecase
+needled
+needlefish
+needleful
+needlelike
+needlemaker
+needlemaking
+needleman
+needlemonger
+needleproof
+needler
+needles
+needless
+needlessly
+needlessness
+needlestone
+needlewoman
+needlewood
+needlework
+needleworked
+needleworker
+needling
+needly
+needments
+needs
+needsome
+needy
+neeger
+neeld
+neele
+neelghan
+neem
+neencephalic
+neencephalon
+Neengatu
+neep
+neepour
+neer
+neese
+neet
+neetup
+neeze
+nef
+nefandous
+nefandousness
+nefarious
+nefariously
+nefariousness
+nefast
+neffy
+neftgil
+negate
+negatedness
+negation
+negationalist
+negationist
+negative
+negatively
+negativeness
+negativer
+negativism
+negativist
+negativistic
+negativity
+negator
+negatory
+negatron
+neger
+neginoth
+neglect
+neglectable
+neglectedly
+neglectedness
+neglecter
+neglectful
+neglectfully
+neglectfulness
+neglectingly
+neglection
+neglective
+neglectively
+neglector
+neglectproof
+negligee
+negligence
+negligency
+negligent
+negligently
+negligibility
+negligible
+negligibleness
+negligibly
+negotiability
+negotiable
+negotiant
+negotiate
+negotiation
+negotiator
+negotiatory
+negotiatress
+negotiatrix
+Negress
+negrillo
+negrine
+Negritian
+Negritic
+Negritize
+Negrito
+Negritoid
+Negro
+negro
+negrodom
+Negrofy
+negrohead
+negrohood
+Negroid
+Negroidal
+negroish
+Negroism
+Negroization
+Negroize
+negrolike
+Negroloid
+Negrophil
+Negrophile
+Negrophilism
+Negrophilist
+Negrophobe
+Negrophobia
+Negrophobiac
+Negrophobist
+Negrotic
+Negundo
+Negus
+negus
+Nehantic
+Nehemiah
+nehiloth
+nei
+neif
+neigh
+neighbor
+neighbored
+neighborer
+neighboress
+neighborhood
+neighboring
+neighborless
+neighborlike
+neighborliness
+neighborly
+neighborship
+neighborstained
+neighbourless
+neighbourlike
+neighbourship
+neigher
+Neil
+Neillia
+neiper
+Neisseria
+Neisserieae
+neist
+neither
+Nejd
+Nejdi
+Nekkar
+nekton
+nektonic
+Nelken
+Nell
+Nellie
+Nelly
+nelson
+nelsonite
+nelumbian
+Nelumbium
+Nelumbo
+Nelumbonaceae
+nema
+nemaline
+Nemalion
+Nemalionaceae
+Nemalionales
+nemalite
+Nemastomaceae
+Nematelmia
+nematelminth
+Nematelminthes
+nemathece
+nemathecial
+nemathecium
+Nemathelmia
+nemathelminth
+Nemathelminthes
+nematic
+nematoblast
+nematoblastic
+Nematocera
+nematoceran
+nematocerous
+nematocide
+nematocyst
+nematocystic
+Nematoda
+nematode
+nematodiasis
+nematogene
+nematogenic
+nematogenous
+nematognath
+Nematognathi
+nematognathous
+nematogone
+nematogonous
+nematoid
+Nematoidea
+nematoidean
+nematologist
+nematology
+Nematomorpha
+nematophyton
+Nematospora
+nematozooid
+Nembutal
+Nemean
+Nemertea
+nemertean
+Nemertina
+nemertine
+Nemertinea
+nemertinean
+Nemertini
+nemertoid
+nemeses
+Nemesia
+nemesic
+Nemesis
+Nemichthyidae
+Nemichthys
+Nemocera
+nemoceran
+nemocerous
+Nemopanthus
+Nemophila
+nemophilist
+nemophilous
+nemophily
+nemoral
+Nemorensian
+nemoricole
+Nengahiba
+nenta
+nenuphar
+neo
+neoacademic
+neoanthropic
+Neoarctic
+neoarsphenamine
+Neobalaena
+Neobeckia
+neoblastic
+neobotanist
+neobotany
+Neocene
+Neoceratodus
+neocerotic
+neoclassic
+neoclassicism
+neoclassicist
+Neocomian
+neocosmic
+neocracy
+neocriticism
+neocyanine
+neocyte
+neocytosis
+neodamode
+neodidymium
+neodymium
+Neofabraea
+neofetal
+neofetus
+Neofiber
+neoformation
+neoformative
+Neogaea
+Neogaean
+neogamous
+neogamy
+Neogene
+neogenesis
+neogenetic
+Neognathae
+neognathic
+neognathous
+neogrammarian
+neogrammatical
+neographic
+neohexane
+Neohipparion
+neoholmia
+neoholmium
+neoimpressionism
+neoimpressionist
+neolalia
+neolater
+neolatry
+neolith
+neolithic
+neologian
+neologianism
+neologic
+neological
+neologically
+neologism
+neologist
+neologistic
+neologistical
+neologization
+neologize
+neology
+neomedievalism
+neomenia
+neomenian
+Neomeniidae
+neomiracle
+neomodal
+neomorph
+Neomorpha
+neomorphic
+neomorphism
+Neomylodon
+neon
+neonatal
+neonate
+neonatus
+neonomian
+neonomianism
+neontology
+neonychium
+neopagan
+neopaganism
+neopaganize
+Neopaleozoic
+neopallial
+neopallium
+neoparaffin
+neophilism
+neophilological
+neophilologist
+neophobia
+neophobic
+neophrastic
+Neophron
+neophyte
+neophytic
+neophytish
+neophytism
+Neopieris
+neoplasia
+neoplasm
+neoplasma
+neoplasmata
+neoplastic
+neoplasticism
+neoplasty
+Neoplatonic
+Neoplatonician
+Neoplatonism
+Neoplatonist
+neoprene
+neorama
+neorealism
+Neornithes
+neornithic
+Neosalvarsan
+Neosorex
+Neosporidia
+neossin
+neossology
+neossoptile
+neostriatum
+neostyle
+neoteinia
+neoteinic
+neotenia
+neotenic
+neoteny
+neoteric
+neoterically
+neoterism
+neoterist
+neoteristic
+neoterize
+neothalamus
+Neotoma
+Neotragus
+Neotremata
+Neotropic
+Neotropical
+neotype
+neovitalism
+neovolcanic
+Neowashingtonia
+neoytterbium
+neoza
+Neozoic
+Nep
+nep
+Nepa
+Nepal
+Nepalese
+Nepali
+Nepenthaceae
+nepenthaceous
+nepenthe
+nepenthean
+Nepenthes
+nepenthes
+neper
+Neperian
+Nepeta
+nephalism
+nephalist
+Nephele
+nephele
+nepheligenous
+nepheline
+nephelinic
+nephelinite
+nephelinitic
+nephelinitoid
+nephelite
+Nephelium
+nephelognosy
+nepheloid
+nephelometer
+nephelometric
+nephelometrical
+nephelometrically
+nephelometry
+nephelorometer
+nepheloscope
+nephesh
+nephew
+nephewship
+Nephila
+Nephilinae
+Nephite
+nephogram
+nephograph
+nephological
+nephologist
+nephology
+nephoscope
+nephradenoma
+nephralgia
+nephralgic
+nephrapostasis
+nephratonia
+nephrauxe
+nephrectasia
+nephrectasis
+nephrectomize
+nephrectomy
+nephrelcosis
+nephremia
+nephremphraxis
+nephria
+nephric
+nephridia
+nephridial
+nephridiopore
+nephridium
+nephrism
+nephrite
+nephritic
+nephritical
+nephritis
+nephroabdominal
+nephrocardiac
+nephrocele
+nephrocoele
+nephrocolic
+nephrocolopexy
+nephrocoloptosis
+nephrocystitis
+nephrocystosis
+nephrocyte
+nephrodinic
+Nephrodium
+nephroerysipelas
+nephrogastric
+nephrogenetic
+nephrogenic
+nephrogenous
+nephrogonaduct
+nephrohydrosis
+nephrohypertrophy
+nephroid
+Nephrolepis
+nephrolith
+nephrolithic
+nephrolithotomy
+nephrologist
+nephrology
+nephrolysin
+nephrolysis
+nephrolytic
+nephromalacia
+nephromegaly
+nephromere
+nephron
+nephroncus
+nephroparalysis
+nephropathic
+nephropathy
+nephropexy
+nephrophthisis
+nephropore
+Nephrops
+Nephropsidae
+nephroptosia
+nephroptosis
+nephropyelitis
+nephropyeloplasty
+nephropyosis
+nephrorrhagia
+nephrorrhaphy
+nephros
+nephrosclerosis
+nephrosis
+nephrostoma
+nephrostome
+nephrostomial
+nephrostomous
+nephrostomy
+nephrotome
+nephrotomize
+nephrotomy
+nephrotoxic
+nephrotoxicity
+nephrotoxin
+nephrotuberculosis
+nephrotyphoid
+nephrotyphus
+nephrozymosis
+Nepidae
+nepionic
+nepman
+nepotal
+nepote
+nepotic
+nepotious
+nepotism
+nepotist
+nepotistical
+nepouite
+Neptune
+Neptunean
+Neptunian
+neptunism
+neptunist
+neptunium
+Nereid
+Nereidae
+nereidiform
+Nereidiformia
+Nereis
+nereite
+Nereocystis
+Neri
+Nerine
+nerine
+Nerita
+neritic
+Neritidae
+Neritina
+neritoid
+Nerium
+Neroic
+Neronian
+Neronic
+Neronize
+nerterology
+Nerthridae
+Nerthrus
+nerval
+nervate
+nervation
+nervature
+nerve
+nerveless
+nervelessly
+nervelessness
+nervelet
+nerveproof
+nerver
+nerveroot
+nervid
+nerviduct
+Nervii
+nervily
+nervimotion
+nervimotor
+nervimuscular
+nervine
+nerviness
+nerving
+nervish
+nervism
+nervomuscular
+nervosanguineous
+nervose
+nervosism
+nervosity
+nervous
+nervously
+nervousness
+nervular
+nervule
+nervulet
+nervulose
+nervuration
+nervure
+nervy
+nescience
+nescient
+nese
+nesh
+neshly
+neshness
+Nesiot
+nesiote
+Neskhi
+Neslia
+Nesogaea
+Nesogaean
+Nesokia
+Nesonetta
+Nesotragus
+Nespelim
+nesquehonite
+ness
+nesslerization
+Nesslerize
+nesslerize
+nest
+nestable
+nestage
+nester
+nestful
+nestiatria
+nestitherapy
+nestle
+nestler
+nestlike
+nestling
+Nestor
+Nestorian
+Nestorianism
+Nestorianize
+Nestorianizer
+nestorine
+nesty
+Net
+net
+netball
+netbraider
+netbush
+netcha
+Netchilik
+nete
+neter
+netful
+neth
+netheist
+nether
+Netherlander
+Netherlandian
+Netherlandic
+Netherlandish
+nethermore
+nethermost
+netherstock
+netherstone
+netherward
+netherwards
+Nethinim
+neti
+netleaf
+netlike
+netmaker
+netmaking
+netman
+netmonger
+netop
+netsman
+netsuke
+nettable
+Nettapus
+netted
+netter
+Nettie
+netting
+Nettion
+nettle
+nettlebed
+nettlebird
+nettlefire
+nettlefish
+nettlefoot
+nettlelike
+nettlemonger
+nettler
+nettlesome
+nettlewort
+nettling
+nettly
+Netty
+netty
+netwise
+network
+Neudeckian
+neugroschen
+neuma
+neumatic
+neumatize
+neume
+neumic
+neurad
+neuradynamia
+neural
+neurale
+neuralgia
+neuralgiac
+neuralgic
+neuralgiform
+neuralgy
+neuralist
+neurapophyseal
+neurapophysial
+neurapophysis
+neurarthropathy
+neurasthenia
+neurasthenic
+neurasthenical
+neurasthenically
+neurataxia
+neurataxy
+neuration
+neuratrophia
+neuratrophic
+neuratrophy
+neuraxial
+neuraxis
+neuraxon
+neuraxone
+neurectasia
+neurectasis
+neurectasy
+neurectome
+neurectomic
+neurectomy
+neurectopia
+neurectopy
+neurenteric
+neurepithelium
+neurergic
+neurexairesis
+neurhypnology
+neurhypnotist
+neuriatry
+neuric
+neurilema
+neurilematic
+neurilemma
+neurilemmal
+neurilemmatic
+neurilemmatous
+neurilemmitis
+neurility
+neurin
+neurine
+neurinoma
+neurism
+neurite
+neuritic
+neuritis
+neuroanatomical
+neuroanatomy
+neurobiotactic
+neurobiotaxis
+neuroblast
+neuroblastic
+neuroblastoma
+neurocanal
+neurocardiac
+neurocele
+neurocentral
+neurocentrum
+neurochemistry
+neurochitin
+neurochondrite
+neurochord
+neurochorioretinitis
+neurocirculatory
+neurocity
+neuroclonic
+neurocoele
+neurocoelian
+neurocyte
+neurocytoma
+neurodegenerative
+neurodendrite
+neurodendron
+neurodermatitis
+neurodermatosis
+neurodermitis
+neurodiagnosis
+neurodynamic
+neurodynia
+neuroepidermal
+neuroepithelial
+neuroepithelium
+neurofibril
+neurofibrilla
+neurofibrillae
+neurofibrillar
+neurofibroma
+neurofibromatosis
+neurofil
+neuroganglion
+neurogastralgia
+neurogastric
+neurogenesis
+neurogenetic
+neurogenic
+neurogenous
+neuroglandular
+neuroglia
+neurogliac
+neuroglial
+neurogliar
+neuroglic
+neuroglioma
+neurogliosis
+neurogram
+neurogrammic
+neurographic
+neurography
+neurohistology
+neurohumor
+neurohumoral
+neurohypnology
+neurohypnotic
+neurohypnotism
+neurohypophysis
+neuroid
+neurokeratin
+neurokyme
+neurological
+neurologist
+neurologize
+neurology
+neurolymph
+neurolysis
+neurolytic
+neuroma
+neuromalacia
+neuromalakia
+neuromast
+neuromastic
+neuromatosis
+neuromatous
+neuromere
+neuromerism
+neuromerous
+neuromimesis
+neuromimetic
+neuromotor
+neuromuscular
+neuromusculature
+neuromyelitis
+neuromyic
+neuron
+neuronal
+neurone
+neuronic
+neuronism
+neuronist
+neuronophagia
+neuronophagy
+neuronym
+neuronymy
+neuroparalysis
+neuroparalytic
+neuropath
+neuropathic
+neuropathical
+neuropathically
+neuropathist
+neuropathological
+neuropathologist
+neuropathology
+neuropathy
+Neurope
+neurophagy
+neurophil
+neurophile
+neurophilic
+neurophysiological
+neurophysiology
+neuropile
+neuroplasm
+neuroplasmic
+neuroplasty
+neuroplexus
+neuropodial
+neuropodium
+neuropodous
+neuropore
+neuropsychiatric
+neuropsychiatrist
+neuropsychiatry
+neuropsychic
+neuropsychological
+neuropsychologist
+neuropsychology
+neuropsychopathic
+neuropsychopathy
+neuropsychosis
+neuropter
+Neuroptera
+neuropteran
+Neuropteris
+neuropterist
+neuropteroid
+Neuropteroidea
+neuropterological
+neuropterology
+neuropteron
+neuropterous
+neuroretinitis
+neurorrhaphy
+Neurorthoptera
+neurorthopteran
+neurorthopterous
+neurosal
+neurosarcoma
+neurosclerosis
+neuroses
+neurosis
+neuroskeletal
+neuroskeleton
+neurosome
+neurospasm
+neurospongium
+neurosthenia
+neurosurgeon
+neurosurgery
+neurosurgical
+neurosuture
+neurosynapse
+neurosyphilis
+neurotendinous
+neurotension
+neurotherapeutics
+neurotherapist
+neurotherapy
+neurothlipsis
+neurotic
+neurotically
+neuroticism
+neuroticize
+neurotization
+neurotome
+neurotomical
+neurotomist
+neurotomize
+neurotomy
+neurotonic
+neurotoxia
+neurotoxic
+neurotoxin
+neurotripsy
+neurotrophic
+neurotrophy
+neurotropic
+neurotropism
+neurovaccination
+neurovaccine
+neurovascular
+neurovisceral
+neurula
+neurypnological
+neurypnologist
+neurypnology
+Neustrian
+neuter
+neuterdom
+neuterlike
+neuterly
+neuterness
+neutral
+neutralism
+neutralist
+neutrality
+neutralization
+neutralize
+neutralizer
+neutrally
+neutralness
+neutrino
+neutroceptive
+neutroceptor
+neutroclusion
+Neutrodyne
+neutrologistic
+neutron
+neutropassive
+neutrophile
+neutrophilia
+neutrophilic
+neutrophilous
+Nevada
+Nevadan
+nevadite
+neve
+nevel
+never
+neverland
+nevermore
+nevertheless
+Neville
+nevo
+nevoid
+Nevome
+nevoy
+nevus
+nevyanskite
+new
+Newar
+Newari
+newberyite
+newcal
+Newcastle
+newcome
+newcomer
+newel
+newelty
+newfangle
+newfangled
+newfangledism
+newfangledly
+newfangledness
+newfanglement
+Newfoundland
+Newfoundlander
+Newichawanoc
+newing
+newings
+newish
+newlandite
+newly
+newlywed
+Newmanism
+Newmanite
+Newmanize
+newmarket
+newness
+Newport
+news
+newsbill
+newsboard
+newsboat
+newsboy
+newscast
+newscaster
+newscasting
+newsful
+newsiness
+newsless
+newslessness
+newsletter
+newsman
+newsmonger
+newsmongering
+newsmongery
+newspaper
+newspaperdom
+newspaperese
+newspaperish
+newspaperized
+newspaperman
+newspaperwoman
+newspapery
+newsprint
+newsreader
+newsreel
+newsroom
+newssheet
+newsstand
+newsteller
+newsworthiness
+newsworthy
+newsy
+newt
+newtake
+newton
+Newtonian
+Newtonianism
+Newtonic
+Newtonist
+newtonite
+nexal
+next
+nextly
+nextness
+nexum
+nexus
+neyanda
+ngai
+ngaio
+ngapi
+Ngoko
+Nguyen
+Nhan
+Nheengatu
+ni
+niacin
+Niagara
+Niagaran
+Niall
+Niantic
+Nias
+Niasese
+niata
+nib
+nibbana
+nibbed
+nibber
+nibble
+nibbler
+nibblingly
+nibby
+niblick
+niblike
+nibong
+nibs
+nibsome
+Nicaean
+Nicaragua
+Nicaraguan
+Nicarao
+niccolic
+niccoliferous
+niccolite
+niccolous
+Nice
+nice
+niceish
+niceling
+nicely
+Nicene
+niceness
+Nicenian
+Nicenist
+nicesome
+nicetish
+nicety
+Nichael
+niche
+nichelino
+nicher
+Nicholas
+Nici
+Nick
+nick
+nickel
+nickelage
+nickelic
+nickeliferous
+nickeline
+nickeling
+nickelization
+nickelize
+nickellike
+nickelodeon
+nickelous
+nickeltype
+nicker
+nickerpecker
+nickey
+Nickie
+Nickieben
+nicking
+nickle
+nickname
+nicknameable
+nicknamee
+nicknameless
+nicknamer
+Nickneven
+nickstick
+nicky
+Nicobar
+Nicobarese
+Nicodemite
+Nicodemus
+Nicol
+Nicolaitan
+Nicolaitanism
+Nicolas
+nicolayite
+Nicolette
+Nicolo
+nicolo
+Nicomachean
+nicotia
+nicotian
+Nicotiana
+nicotianin
+nicotic
+nicotinamide
+nicotine
+nicotinean
+nicotined
+nicotineless
+nicotinian
+nicotinic
+nicotinism
+nicotinize
+nicotism
+nicotize
+nictate
+nictation
+nictitant
+nictitate
+nictitation
+nid
+nidal
+nidamental
+nidana
+nidation
+nidatory
+niddering
+niddick
+niddle
+nide
+nidge
+nidget
+nidgety
+nidi
+nidicolous
+nidificant
+nidificate
+nidification
+nidificational
+nidifugous
+nidify
+niding
+nidologist
+nidology
+nidor
+nidorosity
+nidorous
+nidorulent
+nidulant
+Nidularia
+Nidulariaceae
+nidulariaceous
+Nidulariales
+nidulate
+nidulation
+nidulus
+nidus
+niece
+nieceless
+nieceship
+niellated
+nielled
+niellist
+niello
+Niels
+niepa
+Nierembergia
+Niersteiner
+Nietzschean
+Nietzscheanism
+Nietzscheism
+nieve
+nieveta
+nievling
+nife
+nifesima
+niffer
+nific
+nifle
+nifling
+nifty
+nig
+Nigel
+Nigella
+Nigerian
+niggard
+niggardize
+niggardliness
+niggardling
+niggardly
+niggardness
+nigger
+niggerdom
+niggerfish
+niggergoose
+niggerhead
+niggerish
+niggerism
+niggerling
+niggertoe
+niggerweed
+niggery
+niggle
+niggler
+niggling
+nigglingly
+niggly
+nigh
+nighly
+nighness
+night
+nightcap
+nightcapped
+nightcaps
+nightchurr
+nightdress
+nighted
+nightfall
+nightfish
+nightflit
+nightfowl
+nightgown
+nighthawk
+nightie
+nightingale
+nightingalize
+nightjar
+nightless
+nightlessness
+nightlike
+nightlong
+nightly
+nightman
+nightmare
+nightmarish
+nightmarishly
+nightmary
+nights
+nightshade
+nightshine
+nightshirt
+nightstock
+nightstool
+nighttide
+nighttime
+nightwalker
+nightwalking
+nightward
+nightwards
+nightwear
+nightwork
+nightworker
+nignay
+nignye
+nigori
+nigranilin
+nigraniline
+nigre
+nigrescence
+nigrescent
+nigresceous
+nigrescite
+nigrification
+nigrified
+nigrify
+nigrine
+Nigritian
+nigrities
+nigritude
+nigritudinous
+nigrosine
+nigrous
+nigua
+Nihal
+nihilianism
+nihilianistic
+nihilification
+nihilify
+nihilism
+nihilist
+nihilistic
+nihilitic
+nihility
+nikau
+Nikeno
+nikethamide
+Nikko
+niklesite
+Nikolai
+nil
+Nile
+nilgai
+Nilometer
+Nilometric
+Niloscope
+Nilot
+Nilotic
+Nilous
+nilpotent
+Nils
+nim
+nimb
+nimbated
+nimbed
+nimbi
+nimbiferous
+nimbification
+nimble
+nimblebrained
+nimbleness
+nimbly
+nimbose
+nimbosity
+nimbus
+nimbused
+nimiety
+niminy
+nimious
+Nimkish
+nimmer
+Nimrod
+Nimrodian
+Nimrodic
+Nimrodical
+Nimrodize
+nimshi
+Nina
+nincom
+nincompoop
+nincompoopery
+nincompoophood
+nincompoopish
+nine
+ninebark
+ninefold
+nineholes
+ninepegs
+ninepence
+ninepenny
+ninepin
+ninepins
+ninescore
+nineted
+nineteen
+nineteenfold
+nineteenth
+nineteenthly
+ninetieth
+ninety
+ninetyfold
+ninetyish
+ninetyknot
+Ninevite
+Ninevitical
+Ninevitish
+Ning
+Ningpo
+Ninja
+ninny
+ninnyhammer
+ninnyish
+ninnyism
+ninnyship
+ninnywatch
+Ninon
+ninon
+Ninox
+ninth
+ninthly
+nintu
+ninut
+niobate
+Niobe
+Niobean
+niobic
+Niobid
+Niobite
+niobite
+niobium
+niobous
+niog
+niota
+Nip
+nip
+nipa
+nipcheese
+niphablepsia
+niphotyphlosis
+Nipissing
+Nipmuc
+nipper
+nipperkin
+nippers
+nippily
+nippiness
+nipping
+nippingly
+nippitate
+nipple
+nippleless
+nipplewort
+Nipponese
+Nipponism
+nipponium
+Nipponize
+nippy
+nipter
+Niquiran
+nirles
+nirmanakaya
+nirvana
+nirvanic
+Nisaean
+Nisan
+nisei
+Nishada
+nishiki
+nisnas
+nispero
+Nisqualli
+nisse
+nisus
+nit
+nitch
+nitchevo
+Nitella
+nitency
+nitently
+niter
+niterbush
+nitered
+nither
+nithing
+nitid
+nitidous
+nitidulid
+Nitidulidae
+nito
+niton
+nitramine
+nitramino
+nitranilic
+nitraniline
+nitrate
+nitratine
+nitration
+nitrator
+Nitrian
+nitriary
+nitric
+nitridation
+nitride
+nitriding
+nitridization
+nitridize
+nitrifaction
+nitriferous
+nitrifiable
+nitrification
+nitrifier
+nitrify
+nitrile
+Nitriot
+nitrite
+nitro
+nitroalizarin
+nitroamine
+nitroaniline
+Nitrobacter
+nitrobacteria
+Nitrobacteriaceae
+Nitrobacterieae
+nitrobarite
+nitrobenzene
+nitrobenzol
+nitrobenzole
+nitrocalcite
+nitrocellulose
+nitrocellulosic
+nitrochloroform
+nitrocotton
+nitroform
+nitrogelatin
+nitrogen
+nitrogenate
+nitrogenation
+nitrogenic
+nitrogenization
+nitrogenize
+nitrogenous
+nitroglycerin
+nitrohydrochloric
+nitrolamine
+nitrolic
+nitrolime
+nitromagnesite
+nitrometer
+nitrometric
+nitromuriate
+nitromuriatic
+nitronaphthalene
+nitroparaffin
+nitrophenol
+nitrophilous
+nitrophyte
+nitrophytic
+nitroprussiate
+nitroprussic
+nitroprusside
+nitrosamine
+nitrosate
+nitrosification
+nitrosify
+nitrosite
+nitrosobacteria
+nitrosochloride
+Nitrosococcus
+Nitrosomonas
+nitrososulphuric
+nitrostarch
+nitrosulphate
+nitrosulphonic
+nitrosulphuric
+nitrosyl
+nitrosylsulphuric
+nitrotoluene
+nitrous
+nitroxyl
+nitryl
+nitter
+nitty
+nitwit
+Nitzschia
+Nitzschiaceae
+Niuan
+Niue
+nival
+nivation
+nivellate
+nivellation
+nivellator
+nivellization
+nivenite
+niveous
+nivicolous
+nivosity
+nix
+nixie
+niyoga
+Nizam
+nizam
+nizamate
+nizamut
+nizy
+njave
+No
+no
+noa
+Noachian
+Noachic
+Noachical
+Noachite
+Noah
+Noahic
+Noam
+nob
+nobber
+nobbily
+nobble
+nobbler
+nobbut
+nobby
+nobiliary
+nobilify
+nobilitate
+nobilitation
+nobility
+noble
+noblehearted
+nobleheartedly
+nobleheartedness
+nobleman
+noblemanly
+nobleness
+noblesse
+noblewoman
+nobley
+nobly
+nobody
+nobodyness
+nobs
+nocake
+Nocardia
+nocardiosis
+nocent
+nocerite
+nociassociation
+nociceptive
+nociceptor
+nociperception
+nociperceptive
+nock
+nocket
+nocktat
+noctambulant
+noctambulation
+noctambule
+noctambulism
+noctambulist
+noctambulistic
+noctambulous
+Nocten
+noctidial
+noctidiurnal
+noctiferous
+noctiflorous
+Noctilio
+Noctilionidae
+Noctiluca
+noctiluca
+noctilucal
+noctilucan
+noctilucence
+noctilucent
+Noctilucidae
+noctilucin
+noctilucine
+noctilucous
+noctiluminous
+noctipotent
+noctivagant
+noctivagation
+noctivagous
+noctograph
+noctovision
+Noctuae
+noctuid
+Noctuidae
+noctuiform
+noctule
+nocturia
+nocturn
+nocturnal
+nocturnally
+nocturne
+nocuity
+nocuous
+nocuously
+nocuousness
+nod
+nodal
+nodality
+nodated
+nodder
+nodding
+noddingly
+noddle
+noddy
+node
+noded
+nodi
+nodiak
+nodical
+nodicorn
+nodiferous
+nodiflorous
+nodiform
+Nodosaria
+nodosarian
+nodosariform
+nodosarine
+nodose
+nodosity
+nodous
+nodular
+nodulate
+nodulated
+nodulation
+nodule
+noduled
+nodulize
+nodulose
+nodulous
+nodulus
+nodus
+noegenesis
+noegenetic
+Noel
+noel
+noematachograph
+noematachometer
+noematachometic
+Noemi
+Noetic
+noetic
+noetics
+nog
+nogada
+Nogai
+nogal
+noggen
+noggin
+nogging
+noghead
+nogheaded
+nohow
+Nohuntsik
+noibwood
+noil
+noilage
+noiler
+noily
+noint
+nointment
+noir
+noise
+noiseful
+noisefully
+noiseless
+noiselessly
+noiselessness
+noisemaker
+noisemaking
+noiseproof
+noisette
+noisily
+noisiness
+noisome
+noisomely
+noisomeness
+noisy
+nokta
+Nolascan
+nolition
+Noll
+noll
+nolle
+nolleity
+nollepros
+nolo
+noma
+nomad
+nomadian
+nomadic
+nomadical
+nomadically
+Nomadidae
+nomadism
+nomadization
+nomadize
+nomancy
+nomarch
+nomarchy
+Nomarthra
+nomarthral
+nombril
+nome
+Nomeidae
+nomenclate
+nomenclative
+nomenclator
+nomenclatorial
+nomenclatorship
+nomenclatory
+nomenclatural
+nomenclature
+nomenclaturist
+Nomeus
+nomial
+nomic
+nomina
+nominable
+nominal
+nominalism
+nominalist
+nominalistic
+nominality
+nominally
+nominate
+nominated
+nominately
+nomination
+nominatival
+nominative
+nominatively
+nominator
+nominatrix
+nominature
+nominee
+nomineeism
+nominy
+nomism
+nomisma
+nomismata
+nomistic
+nomocanon
+nomocracy
+nomogenist
+nomogenous
+nomogeny
+nomogram
+nomograph
+nomographer
+nomographic
+nomographical
+nomographically
+nomography
+nomological
+nomologist
+nomology
+nomopelmous
+nomophylax
+nomophyllous
+nomos
+nomotheism
+nomothete
+nomothetes
+nomothetic
+nomothetical
+non
+Nona
+nonabandonment
+nonabdication
+nonabiding
+nonability
+nonabjuration
+nonabjurer
+nonabolition
+nonabridgment
+nonabsentation
+nonabsolute
+nonabsolution
+nonabsorbable
+nonabsorbent
+nonabsorptive
+nonabstainer
+nonabstaining
+nonabstemious
+nonabstention
+nonabstract
+nonacademic
+nonacceding
+nonacceleration
+nonaccent
+nonacceptance
+nonacceptant
+nonacceptation
+nonaccess
+nonaccession
+nonaccessory
+nonaccidental
+nonaccompaniment
+nonaccompanying
+nonaccomplishment
+nonaccredited
+nonaccretion
+nonachievement
+nonacid
+nonacknowledgment
+nonacosane
+nonacoustic
+nonacquaintance
+nonacquiescence
+nonacquiescent
+nonacquisitive
+nonacquittal
+nonact
+nonactinic
+nonaction
+nonactionable
+nonactive
+nonactuality
+nonaculeate
+nonacute
+nonadditive
+nonadecane
+nonadherence
+nonadherent
+nonadhesion
+nonadhesive
+nonadjacent
+nonadjectival
+nonadjournment
+nonadjustable
+nonadjustive
+nonadjustment
+nonadministrative
+nonadmiring
+nonadmission
+nonadmitted
+nonadoption
+Nonadorantes
+nonadornment
+nonadult
+nonadvancement
+nonadvantageous
+nonadventitious
+nonadventurous
+nonadverbial
+nonadvertence
+nonadvertency
+nonadvocate
+nonaerating
+nonaerobiotic
+nonaesthetic
+nonaffection
+nonaffiliated
+nonaffirmation
+nonage
+nonagenarian
+nonagency
+nonagent
+nonagesimal
+nonagglutinative
+nonagglutinator
+nonaggression
+nonaggressive
+nonagon
+nonagrarian
+nonagreement
+nonagricultural
+nonahydrate
+nonaid
+nonair
+nonalarmist
+nonalcohol
+nonalcoholic
+nonalgebraic
+nonalienating
+nonalienation
+nonalignment
+nonalkaloidal
+nonallegation
+nonallegorical
+nonalliterated
+nonalliterative
+nonallotment
+nonalluvial
+nonalphabetic
+nonaltruistic
+nonaluminous
+nonamalgamable
+nonamendable
+nonamino
+nonamotion
+nonamphibious
+nonamputation
+nonanalogy
+nonanalytical
+nonanalyzable
+nonanalyzed
+nonanaphoric
+nonanaphthene
+nonanatomical
+nonancestral
+nonane
+nonanesthetized
+nonangelic
+nonangling
+nonanimal
+nonannexation
+nonannouncement
+nonannuitant
+nonannulment
+nonanoic
+nonanonymity
+nonanswer
+nonantagonistic
+nonanticipative
+nonantigenic
+nonapologetic
+nonapostatizing
+nonapostolic
+nonapparent
+nonappealable
+nonappearance
+nonappearer
+nonappearing
+nonappellate
+nonappendicular
+nonapplication
+nonapply
+nonappointment
+nonapportionable
+nonapposable
+nonappraisal
+nonappreciation
+nonapprehension
+nonappropriation
+nonapproval
+nonaqueous
+nonarbitrable
+nonarcing
+nonargentiferous
+nonaristocratic
+nonarithmetical
+nonarmament
+nonarmigerous
+nonaromatic
+nonarraignment
+nonarrival
+nonarsenical
+nonarterial
+nonartesian
+nonarticulated
+nonarticulation
+nonartistic
+nonary
+nonascendancy
+nonascertainable
+nonascertaining
+nonascetic
+nonascription
+nonaseptic
+nonaspersion
+nonasphalt
+nonaspirate
+nonaspiring
+nonassault
+nonassent
+nonassentation
+nonassented
+nonassenting
+nonassertion
+nonassertive
+nonassessable
+nonassessment
+nonassignable
+nonassignment
+nonassimilable
+nonassimilating
+nonassimilation
+nonassistance
+nonassistive
+nonassociable
+nonassortment
+nonassurance
+nonasthmatic
+nonastronomical
+nonathletic
+nonatmospheric
+nonatonement
+nonattached
+nonattachment
+nonattainment
+nonattendance
+nonattendant
+nonattention
+nonattestation
+nonattribution
+nonattributive
+nonaugmentative
+nonauricular
+nonauriferous
+nonauthentication
+nonauthoritative
+nonautomatic
+nonautomotive
+nonavoidance
+nonaxiomatic
+nonazotized
+nonbachelor
+nonbacterial
+nonbailable
+nonballoting
+nonbanishment
+nonbankable
+nonbarbarous
+nonbaronial
+nonbase
+nonbasement
+nonbasic
+nonbasing
+nonbathing
+nonbearded
+nonbearing
+nonbeing
+nonbeliever
+nonbelieving
+nonbelligerent
+nonbending
+nonbenevolent
+nonbetrayal
+nonbeverage
+nonbilabiate
+nonbilious
+nonbinomial
+nonbiological
+nonbitter
+nonbituminous
+nonblack
+nonblameless
+nonbleeding
+nonblended
+nonblockaded
+nonblocking
+nonblooded
+nonblooming
+nonbodily
+nonbookish
+nonborrower
+nonbotanical
+nonbourgeois
+nonbranded
+nonbreakable
+nonbreeder
+nonbreeding
+nonbroodiness
+nonbroody
+nonbrowsing
+nonbudding
+nonbulbous
+nonbulkhead
+nonbureaucratic
+nonburgage
+nonburgess
+nonburnable
+nonburning
+nonbursting
+nonbusiness
+nonbuying
+noncabinet
+noncaffeine
+noncaking
+Noncalcarea
+noncalcareous
+noncalcified
+noncallability
+noncallable
+noncancellable
+noncannibalistic
+noncanonical
+noncanonization
+noncanvassing
+noncapillarity
+noncapillary
+noncapital
+noncapitalist
+noncapitalistic
+noncapitulation
+noncapsizable
+noncapture
+noncarbonate
+noncareer
+noncarnivorous
+noncarrier
+noncartelized
+noncaste
+noncastigation
+noncataloguer
+noncatarrhal
+noncatechizable
+noncategorical
+noncathedral
+noncatholicity
+noncausality
+noncausation
+nonce
+noncelebration
+noncelestial
+noncellular
+noncellulosic
+noncensored
+noncensorious
+noncensus
+noncentral
+noncereal
+noncerebral
+nonceremonial
+noncertain
+noncertainty
+noncertified
+nonchafing
+nonchalance
+nonchalant
+nonchalantly
+nonchalantness
+nonchalky
+nonchallenger
+nonchampion
+nonchangeable
+nonchanging
+noncharacteristic
+nonchargeable
+nonchastisement
+nonchastity
+nonchemical
+nonchemist
+nonchivalrous
+nonchokable
+nonchokebore
+nonchronological
+nonchurch
+nonchurched
+nonchurchgoer
+nonciliate
+noncircuit
+noncircuital
+noncircular
+noncirculation
+noncitation
+noncitizen
+noncivilized
+nonclaim
+nonclaimable
+nonclassable
+nonclassical
+nonclassifiable
+nonclassification
+nonclastic
+nonclearance
+noncleistogamic
+nonclergyable
+nonclerical
+nonclimbable
+nonclinical
+nonclose
+nonclosure
+nonclotting
+noncoagulability
+noncoagulable
+noncoagulation
+noncoalescing
+noncock
+noncoercion
+noncoercive
+noncognate
+noncognition
+noncognitive
+noncognizable
+noncognizance
+noncoherent
+noncohesion
+noncohesive
+noncoinage
+noncoincidence
+noncoincident
+noncoincidental
+noncoking
+noncollaboration
+noncollaborative
+noncollapsible
+noncollectable
+noncollection
+noncollegiate
+noncollinear
+noncolloid
+noncollusion
+noncollusive
+noncolonial
+noncoloring
+noncom
+noncombat
+noncombatant
+noncombination
+noncombining
+noncombustible
+noncombustion
+noncome
+noncoming
+noncommemoration
+noncommencement
+noncommendable
+noncommensurable
+noncommercial
+noncommissioned
+noncommittal
+noncommittalism
+noncommittally
+noncommittalness
+noncommonable
+noncommorancy
+noncommunal
+noncommunicable
+noncommunicant
+noncommunicating
+noncommunication
+noncommunion
+noncommunist
+noncommunistic
+noncommutative
+noncompearance
+noncompensating
+noncompensation
+noncompetency
+noncompetent
+noncompeting
+noncompetitive
+noncompetitively
+noncomplaisance
+noncompletion
+noncompliance
+noncomplicity
+noncomplying
+noncomposite
+noncompoundable
+noncompounder
+noncomprehension
+noncompressible
+noncompression
+noncompulsion
+noncomputation
+noncon
+nonconcealment
+nonconceiving
+nonconcentration
+nonconception
+nonconcern
+nonconcession
+nonconciliating
+nonconcludency
+nonconcludent
+nonconcluding
+nonconclusion
+nonconcordant
+nonconcur
+nonconcurrence
+nonconcurrency
+nonconcurrent
+noncondensable
+noncondensation
+noncondensible
+noncondensing
+noncondimental
+nonconditioned
+noncondonation
+nonconducive
+nonconductibility
+nonconductible
+nonconducting
+nonconduction
+nonconductive
+nonconductor
+nonconfederate
+nonconferrable
+nonconfession
+nonconficient
+nonconfident
+nonconfidential
+nonconfinement
+nonconfirmation
+nonconfirmative
+nonconfiscable
+nonconfiscation
+nonconfitent
+nonconflicting
+nonconform
+nonconformable
+nonconformably
+nonconformance
+nonconformer
+nonconforming
+nonconformism
+nonconformist
+nonconformistical
+nonconformistically
+nonconformitant
+nonconformity
+nonconfutation
+noncongealing
+noncongenital
+noncongestion
+noncongratulatory
+noncongruent
+nonconjectural
+nonconjugal
+nonconjugate
+nonconjunction
+nonconnection
+nonconnective
+nonconnivance
+nonconnotative
+nonconnubial
+nonconscientious
+nonconscious
+nonconscription
+nonconsecration
+nonconsecutive
+nonconsent
+nonconsenting
+nonconsequence
+nonconsequent
+nonconservation
+nonconservative
+nonconserving
+nonconsideration
+nonconsignment
+nonconsistorial
+nonconsoling
+nonconsonant
+nonconsorting
+nonconspirator
+nonconspiring
+nonconstituent
+nonconstitutional
+nonconstraint
+nonconstruable
+nonconstruction
+nonconstructive
+nonconsular
+nonconsultative
+nonconsumable
+nonconsumption
+noncontact
+noncontagion
+noncontagionist
+noncontagious
+noncontagiousness
+noncontamination
+noncontemplative
+noncontending
+noncontent
+noncontention
+noncontentious
+noncontentiously
+nonconterminous
+noncontiguity
+noncontiguous
+noncontinental
+noncontingent
+noncontinuance
+noncontinuation
+noncontinuous
+noncontraband
+noncontraction
+noncontradiction
+noncontradictory
+noncontributing
+noncontribution
+noncontributor
+noncontributory
+noncontrivance
+noncontrolled
+noncontrolling
+noncontroversial
+nonconvective
+nonconvenable
+nonconventional
+nonconvergent
+nonconversable
+nonconversant
+nonconversational
+nonconversion
+nonconvertible
+nonconveyance
+nonconviction
+nonconvivial
+noncoplanar
+noncopying
+noncoring
+noncorporate
+noncorporeality
+noncorpuscular
+noncorrection
+noncorrective
+noncorrelation
+noncorrespondence
+noncorrespondent
+noncorresponding
+noncorroboration
+noncorroborative
+noncorrodible
+noncorroding
+noncorrosive
+noncorruption
+noncortical
+noncosmic
+noncosmopolitism
+noncostraight
+noncottager
+noncotyledonous
+noncounty
+noncranking
+noncreation
+noncreative
+noncredence
+noncredent
+noncredibility
+noncredible
+noncreditor
+noncreeping
+noncrenate
+noncretaceous
+noncriminal
+noncriminality
+noncrinoid
+noncritical
+noncrucial
+noncruciform
+noncrusading
+noncrushability
+noncrushable
+noncrustaceous
+noncrystalline
+noncrystallizable
+noncrystallized
+noncrystallizing
+nonculmination
+nonculpable
+noncultivated
+noncultivation
+nonculture
+noncumulative
+noncurantist
+noncurling
+noncurrency
+noncurrent
+noncursive
+noncurtailment
+noncuspidate
+noncustomary
+noncutting
+noncyclic
+noncyclical
+nonda
+nondamageable
+nondamnation
+nondancer
+nondangerous
+nondatival
+nondealer
+nondebtor
+nondecadence
+nondecadent
+nondecalcified
+nondecane
+nondecasyllabic
+nondecatoic
+nondecaying
+nondeceivable
+nondeception
+nondeceptive
+Nondeciduata
+nondeciduate
+nondeciduous
+nondecision
+nondeclarant
+nondeclaration
+nondeclarer
+nondecomposition
+nondecoration
+nondedication
+nondeduction
+nondefalcation
+nondefamatory
+nondefaulting
+nondefection
+nondefendant
+nondefense
+nondefensive
+nondeference
+nondeferential
+nondefiance
+nondefilement
+nondefining
+nondefinition
+nondefinitive
+nondeforestation
+nondegenerate
+nondegeneration
+nondegerming
+nondegradation
+nondegreased
+nondehiscent
+nondeist
+nondelegable
+nondelegate
+nondelegation
+nondeleterious
+nondeliberate
+nondeliberation
+nondelineation
+nondeliquescent
+nondelirious
+nondeliverance
+nondelivery
+nondemand
+nondemise
+nondemobilization
+nondemocratic
+nondemonstration
+nondendroid
+nondenial
+nondenominational
+nondenominationalism
+nondense
+nondenumerable
+nondenunciation
+nondepartmental
+nondeparture
+nondependence
+nondependent
+nondepletion
+nondeportation
+nondeported
+nondeposition
+nondepositor
+nondepravity
+nondepreciating
+nondepressed
+nondepression
+nondeprivable
+nonderivable
+nonderivative
+nonderogatory
+nondescript
+nondesecration
+nondesignate
+nondesigned
+nondesire
+nondesirous
+nondesisting
+nondespotic
+nondesquamative
+nondestructive
+nondesulphurized
+nondetachable
+nondetailed
+nondetention
+nondetermination
+nondeterminist
+nondeterrent
+nondetest
+nondetonating
+nondetrimental
+nondevelopable
+nondevelopment
+nondeviation
+nondevotional
+nondexterous
+nondiabetic
+nondiabolic
+nondiagnosis
+nondiagonal
+nondiagrammatic
+nondialectal
+nondialectical
+nondialyzing
+nondiametral
+nondiastatic
+nondiathermanous
+nondiazotizable
+nondichogamous
+nondichogamy
+nondichotomous
+nondictation
+nondictatorial
+nondictionary
+nondidactic
+nondieting
+nondifferentation
+nondifferentiable
+nondiffractive
+nondiffusing
+nondigestion
+nondilatable
+nondilution
+nondiocesan
+nondiphtheritic
+nondiphthongal
+nondiplomatic
+nondipterous
+nondirection
+nondirectional
+nondisagreement
+nondisappearing
+nondisarmament
+nondisbursed
+nondiscernment
+nondischarging
+nondisciplinary
+nondisclaim
+nondisclosure
+nondiscontinuance
+nondiscordant
+nondiscountable
+nondiscovery
+nondiscretionary
+nondiscrimination
+nondiscriminatory
+nondiscussion
+nondisestablishment
+nondisfigurement
+nondisfranchised
+nondisingenuous
+nondisintegration
+nondisinterested
+nondisjunct
+nondisjunction
+nondisjunctional
+nondisjunctive
+nondismemberment
+nondismissal
+nondisparaging
+nondisparate
+nondispensation
+nondispersal
+nondispersion
+nondisposal
+nondisqualifying
+nondissenting
+nondissolution
+nondistant
+nondistinctive
+nondistortion
+nondistribution
+nondistributive
+nondisturbance
+nondivergence
+nondivergent
+nondiversification
+nondivinity
+nondivisible
+nondivisiblity
+nondivision
+nondivisional
+nondivorce
+nondo
+nondoctrinal
+nondocumentary
+nondogmatic
+nondoing
+nondomestic
+nondomesticated
+nondominant
+nondonation
+nondramatic
+nondrinking
+nondropsical
+nondrying
+nonduality
+nondumping
+nonduplication
+nondutiable
+nondynastic
+nondyspeptic
+none
+nonearning
+noneastern
+noneatable
+nonecclesiastical
+nonechoic
+noneclectic
+noneclipsing
+nonecompense
+noneconomic
+nonedible
+noneditor
+noneditorial
+noneducable
+noneducation
+noneducational
+noneffective
+noneffervescent
+noneffete
+nonefficacious
+nonefficacy
+nonefficiency
+nonefficient
+noneffusion
+nonego
+nonegoistical
+nonejection
+nonelastic
+nonelasticity
+nonelect
+nonelection
+nonelective
+nonelector
+nonelectric
+nonelectrical
+nonelectrification
+nonelectrified
+nonelectrized
+nonelectrocution
+nonelectrolyte
+noneleemosynary
+nonelemental
+nonelementary
+nonelimination
+nonelopement
+nonemanating
+nonemancipation
+nonembarkation
+nonembellishment
+nonembezzlement
+nonembryonic
+nonemendation
+nonemergent
+nonemigration
+nonemission
+nonemotional
+nonemphatic
+nonemphatical
+nonempirical
+nonemploying
+nonemployment
+nonemulative
+nonenactment
+nonenclosure
+nonencroachment
+nonencyclopedic
+nonendemic
+nonendorsement
+nonenduring
+nonene
+nonenemy
+nonenergic
+nonenforceability
+nonenforceable
+nonenforcement
+nonengagement
+nonengineering
+nonenrolled
+nonent
+nonentailed
+nonenteric
+nonentertainment
+nonentitative
+nonentitive
+nonentitize
+nonentity
+nonentityism
+nonentomological
+nonentrant
+nonentres
+nonentry
+nonenumerated
+nonenunciation
+nonenvious
+nonenzymic
+nonephemeral
+nonepic
+nonepicurean
+nonepileptic
+nonepiscopal
+nonepiscopalian
+nonepithelial
+nonepochal
+nonequal
+nonequation
+nonequatorial
+nonequestrian
+nonequilateral
+nonequilibrium
+nonequivalent
+nonequivocating
+nonerasure
+nonerecting
+nonerection
+nonerotic
+nonerroneous
+nonerudite
+noneruption
+nones
+nonescape
+nonespionage
+nonespousal
+nonessential
+nonesthetic
+nonesuch
+nonet
+noneternal
+noneternity
+nonetheless
+nonethereal
+nonethical
+nonethnological
+nonethyl
+noneugenic
+noneuphonious
+nonevacuation
+nonevanescent
+nonevangelical
+nonevaporation
+nonevasion
+nonevasive
+noneviction
+nonevident
+nonevidential
+nonevil
+nonevolutionary
+nonevolutionist
+nonevolving
+nonexaction
+nonexaggeration
+nonexamination
+nonexcavation
+nonexcepted
+nonexcerptible
+nonexcessive
+nonexchangeability
+nonexchangeable
+nonexciting
+nonexclamatory
+nonexclusion
+nonexclusive
+nonexcommunicable
+nonexculpation
+nonexcusable
+nonexecution
+nonexecutive
+nonexemplary
+nonexemplificatior
+nonexempt
+nonexercise
+nonexertion
+nonexhibition
+nonexistence
+nonexistent
+nonexistential
+nonexisting
+nonexoneration
+nonexotic
+nonexpansion
+nonexpansive
+nonexpansively
+nonexpectation
+nonexpendable
+nonexperience
+nonexperienced
+nonexperimental
+nonexpert
+nonexpiation
+nonexpiry
+nonexploitation
+nonexplosive
+nonexportable
+nonexportation
+nonexposure
+nonexpulsion
+nonextant
+nonextempore
+nonextended
+nonextensile
+nonextension
+nonextensional
+nonextensive
+nonextenuatory
+nonexteriority
+nonextermination
+nonexternal
+nonexternality
+nonextinction
+nonextortion
+nonextracted
+nonextraction
+nonextraditable
+nonextradition
+nonextraneous
+nonextreme
+nonextrication
+nonextrinsic
+nonexuding
+nonexultation
+nonfabulous
+nonfacetious
+nonfacial
+nonfacility
+nonfacing
+nonfact
+nonfactious
+nonfactory
+nonfactual
+nonfacultative
+nonfaculty
+nonfaddist
+nonfading
+nonfailure
+nonfalse
+nonfamily
+nonfamous
+nonfanatical
+nonfanciful
+nonfarm
+nonfastidious
+nonfat
+nonfatal
+nonfatalistic
+nonfatty
+nonfavorite
+nonfeasance
+nonfeasor
+nonfeatured
+nonfebrile
+nonfederal
+nonfederated
+nonfeldspathic
+nonfelonious
+nonfelony
+nonfenestrated
+nonfermentability
+nonfermentable
+nonfermentation
+nonfermentative
+nonferrous
+nonfertile
+nonfertility
+nonfestive
+nonfeudal
+nonfibrous
+nonfiction
+nonfictional
+nonfiduciary
+nonfighter
+nonfigurative
+nonfilamentous
+nonfimbriate
+nonfinancial
+nonfinding
+nonfinishing
+nonfinite
+nonfireproof
+nonfiscal
+nonfisherman
+nonfissile
+nonfixation
+nonflaky
+nonflammable
+nonfloatation
+nonfloating
+nonfloriferous
+nonflowering
+nonflowing
+nonfluctuating
+nonfluid
+nonfluorescent
+nonflying
+nonfocal
+nonfood
+nonforeclosure
+nonforeign
+nonforeknowledge
+nonforest
+nonforested
+nonforfeitable
+nonforfeiting
+nonforfeiture
+nonform
+nonformal
+nonformation
+nonformulation
+nonfortification
+nonfortuitous
+nonfossiliferous
+nonfouling
+nonfrat
+nonfraternity
+nonfrauder
+nonfraudulent
+nonfreedom
+nonfreeman
+nonfreezable
+nonfreeze
+nonfreezing
+nonfricative
+nonfriction
+nonfrosted
+nonfruition
+nonfrustration
+nonfulfillment
+nonfunctional
+nonfundable
+nonfundamental
+nonfungible
+nonfuroid
+nonfusion
+nonfuturition
+nonfuturity
+nongalactic
+nongalvanized
+nonganglionic
+nongas
+nongaseous
+nongassy
+nongelatinizing
+nongelatinous
+nongenealogical
+nongenerative
+nongenetic
+nongentile
+nongeographical
+nongeological
+nongeometrical
+nongermination
+nongerundial
+nongildsman
+nongipsy
+nonglacial
+nonglandered
+nonglandular
+nonglare
+nonglucose
+nonglucosidal
+nonglucosidic
+nongod
+nongold
+nongolfer
+nongospel
+nongovernmental
+nongraduate
+nongraduated
+nongraduation
+nongrain
+nongranular
+nongraphitic
+nongrass
+nongratuitous
+nongravitation
+nongravity
+nongray
+nongreasy
+nongreen
+nongregarious
+nongremial
+nongrey
+nongrooming
+nonguarantee
+nonguard
+nonguttural
+nongymnast
+nongypsy
+nonhabitable
+nonhabitual
+nonhalation
+nonhallucination
+nonhandicap
+nonhardenable
+nonharmonic
+nonharmonious
+nonhazardous
+nonheading
+nonhearer
+nonheathen
+nonhedonistic
+nonhepatic
+nonhereditarily
+nonhereditary
+nonheritable
+nonheritor
+nonhero
+nonhieratic
+nonhistoric
+nonhistorical
+nonhomaloidal
+nonhomogeneity
+nonhomogeneous
+nonhomogenous
+nonhostile
+nonhouseholder
+nonhousekeeping
+nonhuman
+nonhumanist
+nonhumorous
+nonhumus
+nonhunting
+nonhydrogenous
+nonhydrolyzable
+nonhygrometric
+nonhygroscopic
+nonhypostatic
+nonic
+noniconoclastic
+nonideal
+nonidealist
+nonidentical
+nonidentity
+nonidiomatic
+nonidolatrous
+nonidyllic
+nonignitible
+nonignominious
+nonignorant
+nonillion
+nonillionth
+nonillumination
+nonillustration
+nonimaginary
+nonimbricating
+nonimitative
+nonimmateriality
+nonimmersion
+nonimmigrant
+nonimmigration
+nonimmune
+nonimmunity
+nonimmunized
+nonimpact
+nonimpairment
+nonimpartment
+nonimpatience
+nonimpeachment
+nonimperative
+nonimperial
+nonimplement
+nonimportation
+nonimporting
+nonimposition
+nonimpregnated
+nonimpressionist
+nonimprovement
+nonimputation
+nonincandescent
+nonincarnated
+nonincitement
+noninclination
+noninclusion
+noninclusive
+nonincrease
+nonincreasing
+nonincrusting
+nonindependent
+nonindictable
+nonindictment
+nonindividual
+nonindividualistic
+noninductive
+noninductively
+noninductivity
+nonindurated
+nonindustrial
+noninfallibilist
+noninfallible
+noninfantry
+noninfected
+noninfection
+noninfectious
+noninfinite
+noninfinitely
+noninflammability
+noninflammable
+noninflammatory
+noninflectional
+noninfluence
+noninformative
+noninfraction
+noninhabitant
+noninheritable
+noninherited
+noninitial
+noninjurious
+noninjury
+noninoculation
+noninquiring
+noninsect
+noninsertion
+noninstitution
+noninstruction
+noninstructional
+noninstructress
+noninstrumental
+noninsurance
+nonintegrable
+nonintegrity
+nonintellectual
+nonintelligence
+nonintelligent
+nonintent
+nonintention
+noninterchangeability
+noninterchangeable
+nonintercourse
+noninterference
+noninterferer
+noninterfering
+nonintermittent
+noninternational
+noninterpolation
+noninterposition
+noninterrupted
+nonintersecting
+nonintersector
+nonintervention
+noninterventionalist
+noninterventionist
+nonintoxicant
+nonintoxicating
+nonintrospective
+nonintrospectively
+nonintrusion
+nonintrusionism
+nonintrusionist
+nonintuitive
+noninverted
+noninvidious
+noninvincibility
+noniodized
+nonion
+nonionized
+nonionizing
+nonirate
+nonirradiated
+nonirrational
+nonirreparable
+nonirrevocable
+nonirrigable
+nonirrigated
+nonirrigating
+nonirrigation
+nonirritable
+nonirritant
+nonirritating
+nonisobaric
+nonisotropic
+nonissuable
+nonius
+nonjoinder
+nonjudicial
+nonjurable
+nonjurant
+nonjuress
+nonjuring
+nonjurist
+nonjuristic
+nonjuror
+nonjurorism
+nonjury
+nonjurying
+nonknowledge
+nonkosher
+nonlabeling
+nonlactescent
+nonlaminated
+nonlanguage
+nonlaying
+nonleaded
+nonleaking
+nonlegal
+nonlegato
+nonlegume
+nonlepidopterous
+nonleprous
+nonlevel
+nonlevulose
+nonliability
+nonliable
+nonliberation
+nonlicensed
+nonlicentiate
+nonlicet
+nonlicking
+nonlife
+nonlimitation
+nonlimiting
+nonlinear
+nonlipoidal
+nonliquefying
+nonliquid
+nonliquidating
+nonliquidation
+nonlister
+nonlisting
+nonliterary
+nonlitigious
+nonliturgical
+nonliving
+nonlixiviated
+nonlocal
+nonlocalized
+nonlogical
+nonlosable
+nonloser
+nonlover
+nonloving
+nonloxodromic
+nonluminescent
+nonluminosity
+nonluminous
+nonluster
+nonlustrous
+nonly
+nonmagnetic
+nonmagnetizable
+nonmaintenance
+nonmajority
+nonmalarious
+nonmalicious
+nonmalignant
+nonmalleable
+nonmammalian
+nonmandatory
+nonmanifest
+nonmanifestation
+nonmanila
+nonmannite
+nonmanual
+nonmanufacture
+nonmanufactured
+nonmanufacturing
+nonmarine
+nonmarital
+nonmaritime
+nonmarket
+nonmarriage
+nonmarriageable
+nonmarrying
+nonmartial
+nonmastery
+nonmaterial
+nonmaterialistic
+nonmateriality
+nonmaternal
+nonmathematical
+nonmathematician
+nonmatrimonial
+nonmatter
+nonmechanical
+nonmechanistic
+nonmedical
+nonmedicinal
+nonmedullated
+nonmelodious
+nonmember
+nonmembership
+nonmenial
+nonmental
+nonmercantile
+nonmetal
+nonmetallic
+nonmetalliferous
+nonmetallurgical
+nonmetamorphic
+nonmetaphysical
+nonmeteoric
+nonmeteorological
+nonmetric
+nonmetrical
+nonmetropolitan
+nonmicrobic
+nonmicroscopical
+nonmigratory
+nonmilitant
+nonmilitary
+nonmillionaire
+nonmimetic
+nonmineral
+nonmineralogical
+nonminimal
+nonministerial
+nonministration
+nonmiraculous
+nonmischievous
+nonmiscible
+nonmissionary
+nonmobile
+nonmodal
+nonmodern
+nonmolar
+nonmolecular
+nonmomentary
+nonmonarchical
+nonmonarchist
+nonmonastic
+nonmonist
+nonmonogamous
+nonmonotheistic
+nonmorainic
+nonmoral
+nonmorality
+nonmortal
+nonmotile
+nonmotoring
+nonmotorist
+nonmountainous
+nonmucilaginous
+nonmucous
+nonmulched
+nonmultiple
+nonmunicipal
+nonmuscular
+nonmusical
+nonmussable
+nonmutationally
+nonmutative
+nonmutual
+nonmystical
+nonmythical
+nonmythological
+nonnant
+nonnarcotic
+nonnasal
+nonnat
+nonnational
+nonnative
+nonnatural
+nonnaturalism
+nonnaturalistic
+nonnaturality
+nonnaturalness
+nonnautical
+nonnaval
+nonnavigable
+nonnavigation
+nonnebular
+nonnecessary
+nonnecessity
+nonnegligible
+nonnegotiable
+nonnegotiation
+nonnephritic
+nonnervous
+nonnescience
+nonnescient
+nonneutral
+nonneutrality
+nonnitrogenized
+nonnitrogenous
+nonnoble
+nonnomination
+nonnotification
+nonnotional
+nonnucleated
+nonnumeral
+nonnutrient
+nonnutritious
+nonnutritive
+nonobedience
+nonobedient
+nonobjection
+nonobjective
+nonobligatory
+nonobservable
+nonobservance
+nonobservant
+nonobservation
+nonobstetrical
+nonobstructive
+nonobvious
+nonoccidental
+nonocculting
+nonoccupant
+nonoccupation
+nonoccupational
+nonoccurrence
+nonodorous
+nonoecumenic
+nonoffender
+nonoffensive
+nonofficeholding
+nonofficial
+nonofficially
+nonofficinal
+nonoic
+nonoily
+nonolfactory
+nonomad
+nononerous
+nonopacity
+nonopening
+nonoperating
+nonoperative
+nonopposition
+nonoppressive
+nonoptical
+nonoptimistic
+nonoptional
+nonorchestral
+nonordination
+nonorganic
+nonorganization
+nonoriental
+nonoriginal
+nonornamental
+nonorthodox
+nonorthographical
+nonoscine
+nonostentation
+nonoutlawry
+nonoutrage
+nonoverhead
+nonoverlapping
+nonowner
+nonoxidating
+nonoxidizable
+nonoxidizing
+nonoxygenated
+nonoxygenous
+nonpacific
+nonpacification
+nonpacifist
+nonpagan
+nonpaid
+nonpainter
+nonpalatal
+nonpapal
+nonpapist
+nonpar
+nonparallel
+nonparalytic
+nonparasitic
+nonparasitism
+nonpareil
+nonparent
+nonparental
+nonpariello
+nonparishioner
+nonparliamentary
+nonparlor
+nonparochial
+nonparous
+nonpartial
+nonpartiality
+nonparticipant
+nonparticipating
+nonparticipation
+nonpartisan
+nonpartisanship
+nonpartner
+nonparty
+nonpassenger
+nonpasserine
+nonpastoral
+nonpatentable
+nonpatented
+nonpaternal
+nonpathogenic
+nonpause
+nonpaying
+nonpayment
+nonpeak
+nonpeaked
+nonpearlitic
+nonpecuniary
+nonpedestrian
+nonpedigree
+nonpelagic
+nonpeltast
+nonpenal
+nonpenalized
+nonpending
+nonpensionable
+nonpensioner
+nonperception
+nonperceptual
+nonperfection
+nonperforated
+nonperforating
+nonperformance
+nonperformer
+nonperforming
+nonperiodic
+nonperiodical
+nonperishable
+nonperishing
+nonperjury
+nonpermanent
+nonpermeability
+nonpermeable
+nonpermissible
+nonpermission
+nonperpendicular
+nonperpetual
+nonperpetuity
+nonpersecution
+nonperseverance
+nonpersistence
+nonpersistent
+nonperson
+nonpersonal
+nonpersonification
+nonpertinent
+nonperversive
+nonphagocytic
+nonpharmaceutical
+nonphenolic
+nonphenomenal
+nonphilanthropic
+nonphilological
+nonphilosophical
+nonphilosophy
+nonphonetic
+nonphosphatic
+nonphosphorized
+nonphotobiotic
+nonphysical
+nonphysiological
+nonpickable
+nonpigmented
+nonplacental
+nonplacet
+nonplanar
+nonplane
+nonplanetary
+nonplantowning
+nonplastic
+nonplate
+nonplausible
+nonpleading
+nonplus
+nonplusation
+nonplushed
+nonplutocratic
+nonpoet
+nonpoetic
+nonpoisonous
+nonpolar
+nonpolarizable
+nonpolarizing
+nonpolitical
+nonponderosity
+nonponderous
+nonpopery
+nonpopular
+nonpopularity
+nonporous
+nonporphyritic
+nonport
+nonportability
+nonportable
+nonportrayal
+nonpositive
+nonpossession
+nonposthumous
+nonpostponement
+nonpotential
+nonpower
+nonpractical
+nonpractice
+nonpraedial
+nonpreaching
+nonprecious
+nonprecipitation
+nonpredatory
+nonpredestination
+nonpredicative
+nonpredictable
+nonpreference
+nonpreferential
+nonpreformed
+nonpregnant
+nonprehensile
+nonprejudicial
+nonprelatical
+nonpremium
+nonpreparation
+nonprepayment
+nonprepositional
+nonpresbyter
+nonprescribed
+nonprescriptive
+nonpresence
+nonpresentation
+nonpreservation
+nonpresidential
+nonpress
+nonpressure
+nonprevalence
+nonprevalent
+nonpriestly
+nonprimitive
+nonprincipiate
+nonprincipled
+nonprobable
+nonprocreation
+nonprocurement
+nonproducer
+nonproducing
+nonproduction
+nonproductive
+nonproductively
+nonproductiveness
+nonprofane
+nonprofessed
+nonprofession
+nonprofessional
+nonprofessionalism
+nonprofessorial
+nonproficience
+nonproficiency
+nonproficient
+nonprofit
+nonprofiteering
+nonprognostication
+nonprogressive
+nonprohibitable
+nonprohibition
+nonprohibitive
+nonprojection
+nonprojective
+nonprojectively
+nonproletarian
+nonproliferous
+nonprolific
+nonprolongation
+nonpromiscuous
+nonpromissory
+nonpromotion
+nonpromulgation
+nonpronunciation
+nonpropagandistic
+nonpropagation
+nonprophetic
+nonpropitiation
+nonproportional
+nonproprietary
+nonproprietor
+nonprorogation
+nonproscriptive
+nonprosecution
+nonprospect
+nonprotection
+nonprotective
+nonproteid
+nonprotein
+nonprotestation
+nonprotractile
+nonprotractility
+nonproven
+nonprovided
+nonprovidential
+nonprovocation
+nonpsychic
+nonpsychological
+nonpublic
+nonpublication
+nonpublicity
+nonpueblo
+nonpulmonary
+nonpulsating
+nonpumpable
+nonpunctual
+nonpunctuation
+nonpuncturable
+nonpunishable
+nonpunishing
+nonpunishment
+nonpurchase
+nonpurchaser
+nonpurgative
+nonpurification
+nonpurposive
+nonpursuit
+nonpurulent
+nonpurveyance
+nonputrescent
+nonputrescible
+nonputting
+nonpyogenic
+nonpyritiferous
+nonqualification
+nonquality
+nonquota
+nonracial
+nonradiable
+nonradiating
+nonradical
+nonrailroader
+nonranging
+nonratability
+nonratable
+nonrated
+nonratifying
+nonrational
+nonrationalist
+nonrationalized
+nonrayed
+nonreaction
+nonreactive
+nonreactor
+nonreader
+nonreading
+nonrealistic
+nonreality
+nonrealization
+nonreasonable
+nonreasoner
+nonrebel
+nonrebellious
+nonreceipt
+nonreceiving
+nonrecent
+nonreception
+nonrecess
+nonrecipient
+nonreciprocal
+nonreciprocating
+nonreciprocity
+nonrecital
+nonreclamation
+nonrecluse
+nonrecognition
+nonrecognized
+nonrecoil
+nonrecollection
+nonrecommendation
+nonreconciliation
+nonrecourse
+nonrecoverable
+nonrecovery
+nonrectangular
+nonrectified
+nonrecuperation
+nonrecurrent
+nonrecurring
+nonredemption
+nonredressing
+nonreducing
+nonreference
+nonrefillable
+nonreflector
+nonreformation
+nonrefraction
+nonrefrigerant
+nonrefueling
+nonrefutation
+nonregardance
+nonregarding
+nonregenerating
+nonregenerative
+nonregent
+nonregimented
+nonregistered
+nonregistrability
+nonregistrable
+nonregistration
+nonregression
+nonregulation
+nonrehabilitation
+nonreigning
+nonreimbursement
+nonreinforcement
+nonreinstatement
+nonrejection
+nonrejoinder
+nonrelapsed
+nonrelation
+nonrelative
+nonrelaxation
+nonrelease
+nonreliance
+nonreligion
+nonreligious
+nonreligiousness
+nonrelinquishment
+nonremanie
+nonremedy
+nonremembrance
+nonremission
+nonremonstrance
+nonremuneration
+nonremunerative
+nonrendition
+nonrenewable
+nonrenewal
+nonrenouncing
+nonrenunciation
+nonrepair
+nonreparation
+nonrepayable
+nonrepealing
+nonrepeat
+nonrepeater
+nonrepentance
+nonrepetition
+nonreplacement
+nonreplicate
+nonreportable
+nonreprehensible
+nonrepresentation
+nonrepresentational
+nonrepresentationalism
+nonrepresentative
+nonrepression
+nonreprisal
+nonreproduction
+nonreproductive
+nonrepublican
+nonrepudiation
+nonrequirement
+nonrequisition
+nonrequital
+nonrescue
+nonresemblance
+nonreservation
+nonreserve
+nonresidence
+nonresidency
+nonresident
+nonresidental
+nonresidenter
+nonresidential
+nonresidentiary
+nonresidentor
+nonresidual
+nonresignation
+nonresinifiable
+nonresistance
+nonresistant
+nonresisting
+nonresistive
+nonresolvability
+nonresolvable
+nonresonant
+nonrespectable
+nonrespirable
+nonresponsibility
+nonrestitution
+nonrestraint
+nonrestricted
+nonrestriction
+nonrestrictive
+nonresumption
+nonresurrection
+nonresuscitation
+nonretaliation
+nonretention
+nonretentive
+nonreticence
+nonretinal
+nonretirement
+nonretiring
+nonretraceable
+nonretractation
+nonretractile
+nonretraction
+nonretrenchment
+nonretroactive
+nonreturn
+nonreturnable
+nonrevaluation
+nonrevealing
+nonrevelation
+nonrevenge
+nonrevenue
+nonreverse
+nonreversed
+nonreversible
+nonreversing
+nonreversion
+nonrevertible
+nonreviewable
+nonrevision
+nonrevival
+nonrevocation
+nonrevolting
+nonrevolutionary
+nonrevolving
+nonrhetorical
+nonrhymed
+nonrhyming
+nonrhythmic
+nonriding
+nonrigid
+nonrioter
+nonriparian
+nonritualistic
+nonrival
+nonromantic
+nonrotatable
+nonrotating
+nonrotative
+nonround
+nonroutine
+nonroyal
+nonroyalist
+nonrubber
+nonruminant
+Nonruminantia
+nonrun
+nonrupture
+nonrural
+nonrustable
+nonsabbatic
+nonsaccharine
+nonsacerdotal
+nonsacramental
+nonsacred
+nonsacrifice
+nonsacrificial
+nonsailor
+nonsalable
+nonsalaried
+nonsale
+nonsaline
+nonsalutary
+nonsalutation
+nonsalvation
+nonsanctification
+nonsanction
+nonsanctity
+nonsane
+nonsanguine
+nonsanity
+nonsaponifiable
+nonsatisfaction
+nonsaturated
+nonsaturation
+nonsaving
+nonsawing
+nonscalding
+nonscaling
+nonscandalous
+nonschematized
+nonschismatic
+nonscholastic
+nonscience
+nonscientific
+nonscientist
+nonscoring
+nonscraping
+nonscriptural
+nonscripturalist
+nonscrutiny
+nonseasonal
+nonsecession
+nonseclusion
+nonsecrecy
+nonsecret
+nonsecretarial
+nonsecretion
+nonsecretive
+nonsecretory
+nonsectarian
+nonsectional
+nonsectorial
+nonsecular
+nonsecurity
+nonsedentary
+nonseditious
+nonsegmented
+nonsegregation
+nonseizure
+nonselected
+nonselection
+nonselective
+nonself
+nonselfregarding
+nonselling
+nonsenatorial
+nonsense
+nonsensible
+nonsensical
+nonsensicality
+nonsensically
+nonsensicalness
+nonsensification
+nonsensify
+nonsensitive
+nonsensitiveness
+nonsensitized
+nonsensorial
+nonsensuous
+nonsentence
+nonsentient
+nonseparation
+nonseptate
+nonseptic
+nonsequacious
+nonsequaciousness
+nonsequestration
+nonserial
+nonserif
+nonserious
+nonserous
+nonserviential
+nonservile
+nonsetter
+nonsetting
+nonsettlement
+nonsexual
+nonsexually
+nonshaft
+nonsharing
+nonshatter
+nonshedder
+nonshipper
+nonshipping
+nonshredding
+nonshrinkable
+nonshrinking
+nonsiccative
+nonsidereal
+nonsignatory
+nonsignature
+nonsignificance
+nonsignificant
+nonsignification
+nonsignificative
+nonsilicated
+nonsiliceous
+nonsilver
+nonsimplification
+nonsine
+nonsinging
+nonsingular
+nonsinkable
+nonsinusoidal
+nonsiphonage
+nonsister
+nonsitter
+nonsitting
+nonskeptical
+nonskid
+nonskidding
+nonskipping
+nonslaveholding
+nonslip
+nonslippery
+nonslipping
+nonsludging
+nonsmoker
+nonsmoking
+nonsmutting
+nonsocial
+nonsocialist
+nonsocialistic
+nonsociety
+nonsociological
+nonsolar
+nonsoldier
+nonsolicitation
+nonsolid
+nonsolidified
+nonsolution
+nonsolvency
+nonsolvent
+nonsonant
+nonsovereign
+nonspalling
+nonsparing
+nonsparking
+nonspeaker
+nonspeaking
+nonspecial
+nonspecialist
+nonspecialized
+nonspecie
+nonspecific
+nonspecification
+nonspecificity
+nonspecified
+nonspectacular
+nonspectral
+nonspeculation
+nonspeculative
+nonspherical
+nonspill
+nonspillable
+nonspinning
+nonspinose
+nonspiny
+nonspiral
+nonspirit
+nonspiritual
+nonspirituous
+nonspontaneous
+nonspored
+nonsporeformer
+nonsporeforming
+nonsporting
+nonspottable
+nonsprouting
+nonstainable
+nonstaining
+nonstampable
+nonstandard
+nonstandardized
+nonstanzaic
+nonstaple
+nonstarch
+nonstarter
+nonstarting
+nonstatement
+nonstatic
+nonstationary
+nonstatistical
+nonstatutory
+nonstellar
+nonsticky
+nonstimulant
+nonstipulation
+nonstock
+nonstooping
+nonstop
+nonstrategic
+nonstress
+nonstretchable
+nonstretchy
+nonstriated
+nonstriker
+nonstriking
+nonstriped
+nonstructural
+nonstudent
+nonstudious
+nonstylized
+nonsubject
+nonsubjective
+nonsubmission
+nonsubmissive
+nonsubordination
+nonsubscriber
+nonsubscribing
+nonsubscription
+nonsubsiding
+nonsubsidy
+nonsubsistence
+nonsubstantial
+nonsubstantialism
+nonsubstantialist
+nonsubstantiality
+nonsubstantiation
+nonsubstantive
+nonsubstitution
+nonsubtraction
+nonsuccess
+nonsuccessful
+nonsuccession
+nonsuccessive
+nonsuccour
+nonsuction
+nonsuctorial
+nonsufferance
+nonsuffrage
+nonsugar
+nonsuggestion
+nonsuit
+nonsulphurous
+nonsummons
+nonsupplication
+nonsupport
+nonsupporter
+nonsupporting
+nonsuppositional
+nonsuppressed
+nonsuppression
+nonsuppurative
+nonsurface
+nonsurgical
+nonsurrender
+nonsurvival
+nonsurvivor
+nonsuspect
+nonsustaining
+nonsustenance
+nonswearer
+nonswearing
+nonsweating
+nonswimmer
+nonswimming
+nonsyllabic
+nonsyllabicness
+nonsyllogistic
+nonsyllogizing
+nonsymbiotic
+nonsymbiotically
+nonsymbolic
+nonsymmetrical
+nonsympathetic
+nonsympathizer
+nonsympathy
+nonsymphonic
+nonsymptomatic
+nonsynchronous
+nonsyndicate
+nonsynodic
+nonsynonymous
+nonsyntactic
+nonsyntactical
+nonsynthesized
+nonsyntonic
+nonsystematic
+nontabular
+nontactical
+nontan
+nontangential
+nontannic
+nontannin
+nontariff
+nontarnishable
+nontarnishing
+nontautomeric
+nontautomerizable
+nontax
+nontaxability
+nontaxable
+nontaxonomic
+nonteachable
+nonteacher
+nonteaching
+nontechnical
+nontechnological
+nonteetotaler
+nontelegraphic
+nonteleological
+nontelephonic
+nontemporal
+nontemporizing
+nontenant
+nontenure
+nontenurial
+nonterm
+nonterminating
+nonterrestrial
+nonterritorial
+nonterritoriality
+nontestamentary
+nontextual
+nontheatrical
+nontheistic
+nonthematic
+nontheological
+nontheosophical
+nontherapeutic
+nonthinker
+nonthinking
+nonthoracic
+nonthoroughfare
+nonthreaded
+nontidal
+nontillable
+nontimbered
+nontitaniferous
+nontitular
+nontolerated
+nontopographical
+nontourist
+nontoxic
+nontraction
+nontrade
+nontrader
+nontrading
+nontraditional
+nontragic
+nontrailing
+nontransferability
+nontransferable
+nontransgression
+nontransient
+nontransitional
+nontranslocation
+nontransmission
+nontransparency
+nontransparent
+nontransportation
+nontransposing
+nontransposition
+nontraveler
+nontraveling
+nontreasonable
+nontreated
+nontreatment
+nontreaty
+nontrespass
+nontrial
+nontribal
+nontribesman
+nontributary
+nontrier
+nontrigonometrical
+nontronite
+nontropical
+nontrunked
+nontruth
+nontuberculous
+nontuned
+nonturbinated
+nontutorial
+nontyphoidal
+nontypical
+nontypicalness
+nontypographical
+nontyrannical
+nonubiquitous
+nonulcerous
+nonultrafilterable
+nonumbilical
+nonumbilicate
+nonumbrellaed
+nonunanimous
+nonuncial
+nonundergraduate
+nonunderstandable
+nonunderstanding
+nonunderstandingly
+nonunderstood
+nonundulatory
+nonuniform
+nonuniformist
+nonuniformitarian
+nonuniformity
+nonuniformly
+nonunion
+nonunionism
+nonunionist
+nonunique
+nonunison
+nonunited
+nonuniversal
+nonuniversity
+nonupholstered
+nonuple
+nonuplet
+nonupright
+nonurban
+nonurgent
+nonusage
+nonuse
+nonuser
+nonusing
+nonusurping
+nonuterine
+nonutile
+nonutilitarian
+nonutility
+nonutilized
+nonutterance
+nonvacant
+nonvaccination
+nonvacuous
+nonvaginal
+nonvalent
+nonvalidity
+nonvaluation
+nonvalve
+nonvanishing
+nonvariable
+nonvariant
+nonvariation
+nonvascular
+nonvassal
+nonvegetative
+nonvenereal
+nonvenomous
+nonvenous
+nonventilation
+nonverbal
+nonverdict
+nonverminous
+nonvernacular
+nonvertebral
+nonvertical
+nonvertically
+nonvesicular
+nonvesting
+nonvesture
+nonveteran
+nonveterinary
+nonviable
+nonvibratile
+nonvibration
+nonvibrator
+nonvibratory
+nonvicarious
+nonvictory
+nonvillager
+nonvillainous
+nonvindication
+nonvinous
+nonvintage
+nonviolation
+nonviolence
+nonvirginal
+nonvirile
+nonvirtue
+nonvirtuous
+nonvirulent
+nonviruliferous
+nonvisaed
+nonvisceral
+nonviscid
+nonviscous
+nonvisional
+nonvisitation
+nonvisiting
+nonvisual
+nonvisualized
+nonvital
+nonvitreous
+nonvitrified
+nonviviparous
+nonvocal
+nonvocalic
+nonvocational
+nonvolant
+nonvolatile
+nonvolatilized
+nonvolcanic
+nonvolition
+nonvoluntary
+nonvortical
+nonvortically
+nonvoter
+nonvoting
+nonvulcanizable
+nonvulvar
+nonwalking
+nonwar
+nonwasting
+nonwatertight
+nonweakness
+nonwestern
+nonwetted
+nonwhite
+nonwinged
+nonwoody
+nonworker
+nonworking
+nonworship
+nonwrinkleable
+nonya
+nonyielding
+nonyl
+nonylene
+nonylenic
+nonylic
+nonzealous
+nonzero
+nonzodiacal
+nonzonal
+nonzonate
+nonzoological
+noodle
+noodledom
+noodleism
+nook
+nooked
+nookery
+nooking
+nooklet
+nooklike
+nooky
+noological
+noologist
+noology
+noometry
+noon
+noonday
+noonflower
+nooning
+noonlight
+noonlit
+noonstead
+noontide
+noontime
+noonwards
+noop
+nooscopic
+noose
+nooser
+Nootka
+nopal
+Nopalea
+nopalry
+nope
+nopinene
+nor
+Nora
+Norah
+norard
+norate
+noration
+norbergite
+Norbert
+Norbertine
+norcamphane
+nordcaper
+nordenskioldine
+Nordic
+Nordicism
+Nordicist
+Nordicity
+Nordicization
+Nordicize
+nordmarkite
+noreast
+noreaster
+norelin
+Norfolk
+Norfolkian
+norgine
+nori
+noria
+Noric
+norie
+norimon
+norite
+norland
+norlander
+norlandism
+norleucine
+Norm
+norm
+Norma
+norma
+normal
+normalcy
+normalism
+normalist
+normality
+normalization
+normalize
+normalizer
+normally
+normalness
+Norman
+Normanesque
+Normanish
+Normanism
+Normanist
+Normanization
+Normanize
+Normanizer
+Normanly
+Normannic
+normated
+normative
+normatively
+normativeness
+normless
+normoblast
+normoblastic
+normocyte
+normocytic
+normotensive
+Norn
+Norna
+nornicotine
+nornorwest
+noropianic
+norpinic
+Norridgewock
+Norroway
+Norroy
+Norse
+norsel
+Norseland
+norseler
+Norseman
+Norsk
+north
+northbound
+northeast
+northeaster
+northeasterly
+northeastern
+northeasternmost
+northeastward
+northeastwardly
+northeastwards
+norther
+northerliness
+northerly
+northern
+northerner
+northernize
+northernly
+northernmost
+northernness
+northest
+northfieldite
+northing
+northland
+northlander
+northlight
+Northman
+northmost
+northness
+Northumber
+Northumbrian
+northupite
+northward
+northwardly
+northwards
+northwest
+northwester
+northwesterly
+northwestern
+northwestward
+northwestwardly
+northwestwards
+Norumbega
+norward
+norwards
+Norway
+Norwegian
+norwest
+norwester
+norwestward
+Nosairi
+Nosairian
+nosarian
+nose
+nosean
+noseanite
+noseband
+nosebanded
+nosebleed
+nosebone
+noseburn
+nosed
+nosegay
+nosegaylike
+noseherb
+nosehole
+noseless
+noselessly
+noselessness
+noselike
+noselite
+Nosema
+Nosematidae
+nosepiece
+nosepinch
+noser
+nosesmart
+nosethirl
+nosetiology
+nosewards
+nosewheel
+nosewise
+nosey
+nosine
+nosing
+nosism
+nosocomial
+nosocomium
+nosogenesis
+nosogenetic
+nosogenic
+nosogeny
+nosogeography
+nosographer
+nosographic
+nosographical
+nosographically
+nosography
+nosohaemia
+nosohemia
+nosological
+nosologically
+nosologist
+nosology
+nosomania
+nosomycosis
+nosonomy
+nosophobia
+nosophyte
+nosopoetic
+nosopoietic
+nosotaxy
+nosotrophy
+nostalgia
+nostalgic
+nostalgically
+nostalgy
+nostic
+Nostoc
+Nostocaceae
+nostocaceous
+nostochine
+nostologic
+nostology
+nostomania
+Nostradamus
+nostrificate
+nostrification
+nostril
+nostriled
+nostrility
+nostrilsome
+nostrum
+nostrummonger
+nostrummongership
+nostrummongery
+Nosu
+nosy
+not
+notabilia
+notability
+notable
+notableness
+notably
+notacanthid
+Notacanthidae
+notacanthoid
+notacanthous
+Notacanthus
+notaeal
+notaeum
+notal
+notalgia
+notalgic
+Notalia
+notan
+notandum
+notanencephalia
+notarial
+notarially
+notariate
+notarikon
+notarize
+notary
+notaryship
+notate
+notation
+notational
+notative
+notator
+notch
+notchboard
+notched
+notchel
+notcher
+notchful
+notching
+notchweed
+notchwing
+notchy
+note
+notebook
+notecase
+noted
+notedly
+notedness
+notehead
+noteholder
+notekin
+Notelaea
+noteless
+notelessly
+notelessness
+notelet
+notencephalocele
+notencephalus
+noter
+notewise
+noteworthily
+noteworthiness
+noteworthy
+notharctid
+Notharctidae
+Notharctus
+nother
+nothing
+nothingarian
+nothingarianism
+nothingism
+nothingist
+nothingize
+nothingless
+nothingly
+nothingness
+nothingology
+Nothofagus
+Notholaena
+nothosaur
+Nothosauri
+nothosaurian
+Nothosauridae
+Nothosaurus
+nothous
+notice
+noticeability
+noticeable
+noticeably
+noticer
+Notidani
+notidanian
+notidanid
+Notidanidae
+notidanidan
+notidanoid
+Notidanus
+notifiable
+notification
+notified
+notifier
+notify
+notifyee
+notion
+notionable
+notional
+notionalist
+notionality
+notionally
+notionalness
+notionary
+notionate
+notioned
+notionist
+notionless
+Notiosorex
+notitia
+Notkerian
+notocentrous
+notocentrum
+notochord
+notochordal
+notodontian
+notodontid
+Notodontidae
+notodontoid
+Notogaea
+Notogaeal
+Notogaean
+Notogaeic
+notommatid
+Notommatidae
+Notonecta
+notonectal
+notonectid
+Notonectidae
+notopodial
+notopodium
+notopterid
+Notopteridae
+notopteroid
+Notopterus
+notorhizal
+Notorhynchus
+notoriety
+notorious
+notoriously
+notoriousness
+Notornis
+Notoryctes
+Notostraca
+Nototherium
+Nototrema
+nototribe
+notour
+notourly
+Notropis
+notself
+Nottoway
+notum
+Notungulata
+notungulate
+Notus
+notwithstanding
+Nou
+nougat
+nougatine
+nought
+noumeaite
+noumeite
+noumenal
+noumenalism
+noumenalist
+noumenality
+noumenalize
+noumenally
+noumenism
+noumenon
+noun
+nounal
+nounally
+nounize
+nounless
+noup
+nourice
+nourish
+nourishable
+nourisher
+nourishing
+nourishingly
+nourishment
+nouriture
+nous
+nouther
+nova
+novaculite
+novalia
+Novanglian
+Novanglican
+novantique
+novarsenobenzene
+novate
+Novatian
+Novatianism
+Novatianist
+novation
+novative
+novator
+novatory
+novatrix
+novcic
+novel
+novelcraft
+noveldom
+novelese
+novelesque
+novelet
+novelette
+noveletter
+novelettish
+novelettist
+noveletty
+novelish
+novelism
+novelist
+novelistic
+novelistically
+novelization
+novelize
+novella
+novelless
+novellike
+novelly
+novelmongering
+novelness
+novelry
+novelty
+novelwright
+novem
+novemarticulate
+November
+Novemberish
+novemcostate
+novemdigitate
+novemfid
+novemlobate
+novemnervate
+novemperfoliate
+novena
+novenary
+novendial
+novene
+novennial
+novercal
+Novial
+novice
+novicehood
+novicelike
+noviceship
+noviciate
+novilunar
+novitial
+novitiate
+novitiateship
+novitiation
+novity
+Novo
+Novocain
+novodamus
+Novorolsky
+now
+nowaday
+nowadays
+nowanights
+noway
+noways
+nowed
+nowel
+nowhat
+nowhen
+nowhence
+nowhere
+nowhereness
+nowheres
+nowhit
+nowhither
+nowise
+nowness
+Nowroze
+nowt
+nowy
+noxa
+noxal
+noxally
+noxious
+noxiously
+noxiousness
+noy
+noyade
+noyau
+Nozi
+nozzle
+nozzler
+nth
+nu
+nuance
+nub
+Nuba
+nubbin
+nubble
+nubbling
+nubbly
+nubby
+nubecula
+nubia
+Nubian
+nubiferous
+nubiform
+nubigenous
+nubilate
+nubilation
+nubile
+nubility
+nubilous
+Nubilum
+nucal
+nucament
+nucamentaceous
+nucellar
+nucellus
+nucha
+nuchal
+nuchalgia
+nuciculture
+nuciferous
+nuciform
+nucin
+nucivorous
+nucleal
+nuclear
+nucleary
+nuclease
+nucleate
+nucleation
+nucleator
+nuclei
+nucleiferous
+nucleiform
+nuclein
+nucleinase
+nucleoalbumin
+nucleoalbuminuria
+nucleofugal
+nucleohistone
+nucleohyaloplasm
+nucleohyaloplasma
+nucleoid
+nucleoidioplasma
+nucleolar
+nucleolated
+nucleole
+nucleoli
+nucleolinus
+nucleolocentrosome
+nucleoloid
+nucleolus
+nucleolysis
+nucleomicrosome
+nucleon
+nucleone
+nucleonics
+nucleopetal
+nucleoplasm
+nucleoplasmatic
+nucleoplasmic
+nucleoprotein
+nucleoside
+nucleotide
+nucleus
+nuclide
+nuclidic
+Nucula
+Nuculacea
+nuculanium
+nucule
+nuculid
+Nuculidae
+nuculiform
+nuculoid
+Nuda
+nudate
+nudation
+Nudd
+nuddle
+nude
+nudely
+nudeness
+Nudens
+nudge
+nudger
+nudibranch
+Nudibranchia
+nudibranchian
+nudibranchiate
+nudicaudate
+nudicaul
+nudifier
+nudiflorous
+nudiped
+nudish
+nudism
+nudist
+nuditarian
+nudity
+nugacious
+nugaciousness
+nugacity
+nugator
+nugatoriness
+nugatory
+nuggar
+nugget
+nuggety
+nugify
+nugilogue
+Nugumiut
+nuisance
+nuisancer
+nuke
+Nukuhivan
+nul
+null
+nullable
+nullah
+nullibicity
+nullibility
+nullibiquitous
+nullibist
+nullification
+nullificationist
+nullificator
+nullifidian
+nullifier
+nullify
+nullipara
+nulliparity
+nulliparous
+nullipennate
+Nullipennes
+nulliplex
+nullipore
+nulliporous
+nullism
+nullisome
+nullisomic
+nullity
+nulliverse
+nullo
+Numa
+Numantine
+numb
+number
+numberable
+numberer
+numberful
+numberless
+numberous
+numbersome
+numbfish
+numbing
+numbingly
+numble
+numbles
+numbly
+numbness
+numda
+numdah
+numen
+Numenius
+numerable
+numerableness
+numerably
+numeral
+numerant
+numerary
+numerate
+numeration
+numerative
+numerator
+numerical
+numerically
+numericalness
+numerist
+numero
+numerology
+numerose
+numerosity
+numerous
+numerously
+numerousness
+Numida
+Numidae
+Numidian
+Numididae
+Numidinae
+numinism
+numinous
+numinously
+numismatic
+numismatical
+numismatically
+numismatician
+numismatics
+numismatist
+numismatography
+numismatologist
+numismatology
+nummary
+nummi
+nummiform
+nummular
+Nummularia
+nummulary
+nummulated
+nummulation
+nummuline
+Nummulinidae
+nummulite
+Nummulites
+nummulitic
+Nummulitidae
+nummulitoid
+nummuloidal
+nummus
+numskull
+numskulled
+numskulledness
+numskullery
+numskullism
+numud
+nun
+nunatak
+nunbird
+nunch
+nuncheon
+nunciate
+nunciative
+nunciatory
+nunciature
+nuncio
+nuncioship
+nuncle
+nuncupate
+nuncupation
+nuncupative
+nuncupatively
+nundinal
+nundination
+nundine
+nunhood
+Nunki
+nunky
+nunlet
+nunlike
+nunnari
+nunnated
+nunnation
+nunnery
+nunni
+nunnify
+nunnish
+nunnishness
+nunship
+Nupe
+Nuphar
+nuptial
+nuptiality
+nuptialize
+nuptially
+nuptials
+nuque
+nuraghe
+nurhag
+nurly
+nursable
+nurse
+nursedom
+nursegirl
+nursehound
+nursekeeper
+nursekin
+nurselet
+nurselike
+nursemaid
+nurser
+nursery
+nurserydom
+nurseryful
+nurserymaid
+nurseryman
+nursetender
+nursing
+nursingly
+nursle
+nursling
+nursy
+nurturable
+nurtural
+nurture
+nurtureless
+nurturer
+nurtureship
+Nusairis
+Nusakan
+nusfiah
+nut
+nutant
+nutarian
+nutate
+nutation
+nutational
+nutbreaker
+nutcake
+nutcrack
+nutcracker
+nutcrackers
+nutcrackery
+nutgall
+nuthatch
+nuthook
+nutjobber
+nutlet
+nutlike
+nutmeg
+nutmegged
+nutmeggy
+nutpecker
+nutpick
+nutramin
+nutria
+nutrice
+nutricial
+nutricism
+nutrient
+nutrify
+nutriment
+nutrimental
+nutritial
+nutrition
+nutritional
+nutritionally
+nutritionist
+nutritious
+nutritiously
+nutritiousness
+nutritive
+nutritively
+nutritiveness
+nutritory
+nutseed
+nutshell
+Nuttallia
+nuttalliasis
+nuttalliosis
+nutted
+nutter
+nuttery
+nuttily
+nuttiness
+nutting
+nuttish
+nuttishness
+nutty
+nuzzer
+nuzzerana
+nuzzle
+Nyamwezi
+Nyanja
+nyanza
+Nyaya
+nychthemer
+nychthemeral
+nychthemeron
+Nyctaginaceae
+nyctaginaceous
+Nyctaginia
+nyctalope
+nyctalopia
+nyctalopic
+nyctalopy
+Nyctanthes
+Nyctea
+Nyctereutes
+nycteribiid
+Nycteribiidae
+Nycteridae
+nycterine
+Nycteris
+Nycticorax
+Nyctimene
+nyctinastic
+nyctinasty
+nyctipelagic
+Nyctipithecinae
+nyctipithecine
+Nyctipithecus
+nyctitropic
+nyctitropism
+nyctophobia
+nycturia
+Nydia
+nye
+nylast
+nylon
+nymil
+nymph
+nympha
+nymphae
+Nymphaea
+Nymphaeaceae
+nymphaeaceous
+nymphaeum
+nymphal
+nymphalid
+Nymphalidae
+Nymphalinae
+nymphaline
+nympheal
+nymphean
+nymphet
+nymphic
+nymphical
+nymphid
+nymphine
+Nymphipara
+nymphiparous
+nymphish
+nymphitis
+nymphlike
+nymphlin
+nymphly
+Nymphoides
+nympholepsia
+nympholepsy
+nympholept
+nympholeptic
+nymphomania
+nymphomaniac
+nymphomaniacal
+Nymphonacea
+nymphosis
+nymphotomy
+nymphwise
+Nyoro
+Nyroca
+Nyssa
+Nyssaceae
+nystagmic
+nystagmus
+nyxis
+O
+o
+oadal
+oaf
+oafdom
+oafish
+oafishly
+oafishness
+oak
+oakberry
+Oakboy
+oaken
+oakenshaw
+Oakesia
+oaklet
+oaklike
+oakling
+oaktongue
+oakum
+oakweb
+oakwood
+oaky
+oam
+Oannes
+oar
+oarage
+oarcock
+oared
+oarfish
+oarhole
+oarial
+oarialgia
+oaric
+oariocele
+oariopathic
+oariopathy
+oariotomy
+oaritic
+oaritis
+oarium
+oarless
+oarlike
+oarlock
+oarlop
+oarman
+oarsman
+oarsmanship
+oarswoman
+oarweed
+oary
+oasal
+oasean
+oases
+oasis
+oasitic
+oast
+oasthouse
+oat
+oatbin
+oatcake
+oatear
+oaten
+oatenmeal
+oatfowl
+oath
+oathay
+oathed
+oathful
+oathlet
+oathworthy
+oatland
+oatlike
+oatmeal
+oatseed
+oaty
+Obadiah
+obambulate
+obambulation
+obambulatory
+oban
+Obbenite
+obbligato
+obclavate
+obclude
+obcompressed
+obconical
+obcordate
+obcordiform
+obcuneate
+obdeltoid
+obdiplostemonous
+obdiplostemony
+obdormition
+obduction
+obduracy
+obdurate
+obdurately
+obdurateness
+obduration
+obe
+obeah
+obeahism
+obeche
+obedience
+obediency
+obedient
+obediential
+obedientially
+obedientialness
+obedientiar
+obedientiary
+obediently
+obeisance
+obeisant
+obeisantly
+obeism
+obelia
+obeliac
+obelial
+obelion
+obeliscal
+obeliscar
+obelisk
+obeliskoid
+obelism
+obelize
+obelus
+Oberon
+obese
+obesely
+obeseness
+obesity
+obex
+obey
+obeyable
+obeyer
+obeyingly
+obfuscable
+obfuscate
+obfuscation
+obfuscator
+obfuscity
+obfuscous
+obi
+Obidicut
+obispo
+obit
+obitual
+obituarian
+obituarily
+obituarist
+obituarize
+obituary
+object
+objectable
+objectation
+objectative
+objectee
+objecthood
+objectification
+objectify
+objection
+objectionability
+objectionable
+objectionableness
+objectionably
+objectional
+objectioner
+objectionist
+objectival
+objectivate
+objectivation
+objective
+objectively
+objectiveness
+objectivism
+objectivist
+objectivistic
+objectivity
+objectivize
+objectization
+objectize
+objectless
+objectlessly
+objectlessness
+objector
+objicient
+objuration
+objure
+objurgate
+objurgation
+objurgative
+objurgatively
+objurgator
+objurgatorily
+objurgatory
+objurgatrix
+oblanceolate
+oblate
+oblately
+oblateness
+oblation
+oblational
+oblationary
+oblatory
+oblectate
+oblectation
+obley
+obligable
+obligancy
+obligant
+obligate
+obligation
+obligational
+obligative
+obligativeness
+obligator
+obligatorily
+obligatoriness
+obligatory
+obligatum
+oblige
+obliged
+obligedly
+obligedness
+obligee
+obligement
+obliger
+obliging
+obligingly
+obligingness
+obligistic
+obligor
+obliquangular
+obliquate
+obliquation
+oblique
+obliquely
+obliqueness
+obliquitous
+obliquity
+obliquus
+obliterable
+obliterate
+obliteration
+obliterative
+obliterator
+oblivescence
+oblivial
+obliviality
+oblivion
+oblivionate
+oblivionist
+oblivionize
+oblivious
+obliviously
+obliviousness
+obliviscence
+obliviscible
+oblocutor
+oblong
+oblongatal
+oblongated
+oblongish
+oblongitude
+oblongitudinal
+oblongly
+oblongness
+obloquial
+obloquious
+obloquy
+obmutescence
+obmutescent
+obnebulate
+obnounce
+obnoxiety
+obnoxious
+obnoxiously
+obnoxiousness
+obnubilate
+obnubilation
+obnunciation
+oboe
+oboist
+obol
+Obolaria
+obolary
+obole
+obolet
+obolus
+obomegoid
+Obongo
+oboval
+obovate
+obovoid
+obpyramidal
+obpyriform
+Obrazil
+obreption
+obreptitious
+obreptitiously
+obrogate
+obrogation
+obrotund
+obscene
+obscenely
+obsceneness
+obscenity
+obscurancy
+obscurant
+obscurantic
+obscurantism
+obscurantist
+obscuration
+obscurative
+obscure
+obscuredly
+obscurely
+obscurement
+obscureness
+obscurer
+obscurism
+obscurist
+obscurity
+obsecrate
+obsecration
+obsecrationary
+obsecratory
+obsede
+obsequence
+obsequent
+obsequial
+obsequience
+obsequiosity
+obsequious
+obsequiously
+obsequiousness
+obsequity
+obsequium
+obsequy
+observability
+observable
+observableness
+observably
+observance
+observancy
+observandum
+observant
+Observantine
+Observantist
+observantly
+observantness
+observation
+observational
+observationalism
+observationally
+observative
+observatorial
+observatory
+observe
+observedly
+observer
+observership
+observing
+observingly
+obsess
+obsessingly
+obsession
+obsessional
+obsessionist
+obsessive
+obsessor
+obsidian
+obsidianite
+obsidional
+obsidionary
+obsidious
+obsignate
+obsignation
+obsignatory
+obsolesce
+obsolescence
+obsolescent
+obsolescently
+obsolete
+obsoletely
+obsoleteness
+obsoletion
+obsoletism
+obstacle
+obstetric
+obstetrical
+obstetrically
+obstetricate
+obstetrication
+obstetrician
+obstetrics
+obstetricy
+obstetrist
+obstetrix
+obstinacious
+obstinacy
+obstinance
+obstinate
+obstinately
+obstinateness
+obstination
+obstinative
+obstipation
+obstreperate
+obstreperosity
+obstreperous
+obstreperously
+obstreperousness
+obstriction
+obstringe
+obstruct
+obstructant
+obstructedly
+obstructer
+obstructingly
+obstruction
+obstructionism
+obstructionist
+obstructive
+obstructively
+obstructiveness
+obstructivism
+obstructivity
+obstructor
+obstruent
+obstupefy
+obtain
+obtainable
+obtainal
+obtainance
+obtainer
+obtainment
+obtect
+obtected
+obtemper
+obtemperate
+obtenebrate
+obtenebration
+obtention
+obtest
+obtestation
+obtriangular
+obtrude
+obtruder
+obtruncate
+obtruncation
+obtruncator
+obtrusion
+obtrusionist
+obtrusive
+obtrusively
+obtrusiveness
+obtund
+obtundent
+obtunder
+obtundity
+obturate
+obturation
+obturator
+obturatory
+obturbinate
+obtusangular
+obtuse
+obtusely
+obtuseness
+obtusifid
+obtusifolious
+obtusilingual
+obtusilobous
+obtusion
+obtusipennate
+obtusirostrate
+obtusish
+obtusity
+obumbrant
+obumbrate
+obumbration
+obvallate
+obvelation
+obvention
+obverse
+obversely
+obversion
+obvert
+obvertend
+obviable
+obviate
+obviation
+obviative
+obviator
+obvious
+obviously
+obviousness
+obvolute
+obvoluted
+obvolution
+obvolutive
+obvolve
+obvolvent
+ocarina
+Occamism
+Occamist
+Occamistic
+Occamite
+occamy
+occasion
+occasionable
+occasional
+occasionalism
+occasionalist
+occasionalistic
+occasionality
+occasionally
+occasionalness
+occasionary
+occasioner
+occasionless
+occasive
+occident
+occidental
+Occidentalism
+Occidentalist
+occidentality
+Occidentalization
+Occidentalize
+occidentally
+occiduous
+occipital
+occipitalis
+occipitally
+occipitoanterior
+occipitoatlantal
+occipitoatloid
+occipitoaxial
+occipitoaxoid
+occipitobasilar
+occipitobregmatic
+occipitocalcarine
+occipitocervical
+occipitofacial
+occipitofrontal
+occipitofrontalis
+occipitohyoid
+occipitoiliac
+occipitomastoid
+occipitomental
+occipitonasal
+occipitonuchal
+occipitootic
+occipitoparietal
+occipitoposterior
+occipitoscapular
+occipitosphenoid
+occipitosphenoidal
+occipitotemporal
+occipitothalamic
+occiput
+occitone
+occlude
+occludent
+occlusal
+occluse
+occlusion
+occlusive
+occlusiveness
+occlusocervical
+occlusocervically
+occlusogingival
+occlusometer
+occlusor
+occult
+occultate
+occultation
+occulter
+occulting
+occultism
+occultist
+occultly
+occultness
+occupable
+occupance
+occupancy
+occupant
+occupation
+occupational
+occupationalist
+occupationally
+occupationless
+occupative
+occupiable
+occupier
+occupy
+occur
+occurrence
+occurrent
+occursive
+ocean
+oceaned
+oceanet
+oceanful
+Oceanian
+oceanic
+Oceanican
+oceanity
+oceanographer
+oceanographic
+oceanographical
+oceanographically
+oceanographist
+oceanography
+oceanology
+oceanophyte
+oceanside
+oceanward
+oceanwards
+oceanways
+oceanwise
+ocellar
+ocellary
+ocellate
+ocellated
+ocellation
+ocelli
+ocellicyst
+ocellicystic
+ocelliferous
+ocelliform
+ocelligerous
+ocellus
+oceloid
+ocelot
+och
+ochava
+ochavo
+ocher
+ocherish
+ocherous
+ochery
+ochidore
+ochlesis
+ochlesitic
+ochletic
+ochlocracy
+ochlocrat
+ochlocratic
+ochlocratical
+ochlocratically
+ochlophobia
+ochlophobist
+Ochna
+Ochnaceae
+ochnaceous
+ochone
+Ochotona
+Ochotonidae
+Ochozoma
+ochraceous
+Ochrana
+ochrea
+ochreate
+ochreous
+ochro
+ochrocarpous
+ochroid
+ochroleucous
+ochrolite
+Ochroma
+ochronosis
+ochronosus
+ochronotic
+ochrous
+ocht
+Ocimum
+ock
+oclock
+Ocneria
+ocote
+Ocotea
+ocotillo
+ocque
+ocracy
+ocrea
+ocreaceous
+Ocreatae
+ocreate
+ocreated
+octachloride
+octachord
+octachordal
+octachronous
+Octacnemus
+octacolic
+octactinal
+octactine
+Octactiniae
+octactinian
+octad
+octadecahydrate
+octadecane
+octadecanoic
+octadecyl
+octadic
+octadrachm
+octaemeron
+octaeteric
+octaeterid
+octagon
+octagonal
+octagonally
+octahedral
+octahedric
+octahedrical
+octahedrite
+octahedroid
+octahedron
+octahedrous
+octahydrate
+octahydrated
+octakishexahedron
+octamerism
+octamerous
+octameter
+octan
+octanaphthene
+Octandria
+octandrian
+octandrious
+octane
+octangle
+octangular
+octangularness
+Octans
+octant
+octantal
+octapla
+octaploid
+octaploidic
+octaploidy
+octapodic
+octapody
+octarch
+octarchy
+octarius
+octarticulate
+octary
+octasemic
+octastich
+octastichon
+octastrophic
+octastyle
+octastylos
+octateuch
+octaval
+octavalent
+octavarium
+octave
+Octavia
+Octavian
+octavic
+octavina
+Octavius
+octavo
+octenary
+octene
+octennial
+octennially
+octet
+octic
+octillion
+octillionth
+octine
+octingentenary
+octoad
+octoalloy
+octoate
+octobass
+October
+octobrachiate
+Octobrist
+octocentenary
+octocentennial
+octochord
+Octocoralla
+octocorallan
+Octocorallia
+octocoralline
+octocotyloid
+octodactyl
+octodactyle
+octodactylous
+octodecimal
+octodecimo
+octodentate
+octodianome
+Octodon
+octodont
+Octodontidae
+Octodontinae
+octoechos
+octofid
+octofoil
+octofoiled
+octogamy
+octogenarian
+octogenarianism
+octogenary
+octogild
+octoglot
+Octogynia
+octogynian
+octogynious
+octogynous
+octoic
+octoid
+octolateral
+octolocular
+octomeral
+octomerous
+octometer
+octonal
+octonare
+octonarian
+octonarius
+octonary
+octonematous
+octonion
+octonocular
+octoon
+octopartite
+octopean
+octoped
+octopede
+octopetalous
+octophthalmous
+octophyllous
+octopi
+octopine
+octoploid
+octoploidic
+octoploidy
+octopod
+Octopoda
+octopodan
+octopodes
+octopodous
+octopolar
+octopus
+octoradial
+octoradiate
+octoradiated
+octoreme
+octoroon
+octose
+octosepalous
+octospermous
+octospore
+octosporous
+octostichous
+octosyllabic
+octosyllable
+octovalent
+octoyl
+octroi
+octroy
+octuor
+octuple
+octuplet
+octuplex
+octuplicate
+octuplication
+octuply
+octyl
+octylene
+octyne
+ocuby
+ocular
+ocularist
+ocularly
+oculary
+oculate
+oculated
+oculauditory
+oculiferous
+oculiform
+oculigerous
+Oculina
+oculinid
+Oculinidae
+oculinoid
+oculist
+oculistic
+oculocephalic
+oculofacial
+oculofrontal
+oculomotor
+oculomotory
+oculonasal
+oculopalpebral
+oculopupillary
+oculospinal
+oculozygomatic
+oculus
+ocydrome
+ocydromine
+Ocydromus
+Ocypete
+Ocypoda
+ocypodan
+Ocypode
+ocypodian
+Ocypodidae
+ocypodoid
+Ocyroe
+Ocyroidae
+Od
+od
+oda
+Odacidae
+odacoid
+odal
+odalborn
+odalisk
+odalisque
+odaller
+odalman
+odalwoman
+Odax
+odd
+oddish
+oddity
+oddlegs
+oddly
+oddman
+oddment
+oddments
+oddness
+Odds
+odds
+Oddsbud
+oddsman
+ode
+odel
+odelet
+Odelsthing
+Odelsting
+odeon
+odeum
+odic
+odically
+Odin
+Odinian
+Odinic
+Odinism
+Odinist
+odinite
+Odinitic
+odiometer
+odious
+odiously
+odiousness
+odist
+odium
+odiumproof
+Odobenidae
+Odobenus
+Odocoileus
+odograph
+odology
+odometer
+odometrical
+odometry
+Odonata
+odontagra
+odontalgia
+odontalgic
+Odontaspidae
+Odontaspididae
+Odontaspis
+odontatrophia
+odontatrophy
+odontexesis
+odontiasis
+odontic
+odontist
+odontitis
+odontoblast
+odontoblastic
+odontocele
+Odontocete
+odontocete
+Odontoceti
+odontocetous
+odontochirurgic
+odontoclasis
+odontoclast
+odontodynia
+odontogen
+odontogenesis
+odontogenic
+odontogeny
+Odontoglossae
+odontoglossal
+odontoglossate
+Odontoglossum
+Odontognathae
+odontognathic
+odontognathous
+odontograph
+odontographic
+odontography
+odontohyperesthesia
+odontoid
+Odontolcae
+odontolcate
+odontolcous
+odontolite
+odontolith
+odontological
+odontologist
+odontology
+odontoloxia
+odontoma
+odontomous
+odontonecrosis
+odontoneuralgia
+odontonosology
+odontopathy
+odontophoral
+odontophore
+Odontophoridae
+Odontophorinae
+odontophorine
+odontophorous
+Odontophorus
+odontoplast
+odontoplerosis
+Odontopteris
+Odontopteryx
+odontorhynchous
+Odontormae
+Odontornithes
+odontornithic
+odontorrhagia
+odontorthosis
+odontoschism
+odontoscope
+odontosis
+odontostomatous
+odontostomous
+Odontosyllis
+odontotechny
+odontotherapia
+odontotherapy
+odontotomy
+Odontotormae
+odontotripsis
+odontotrypy
+odoom
+odophone
+odor
+odorant
+odorate
+odorator
+odored
+odorful
+odoriferant
+odoriferosity
+odoriferous
+odoriferously
+odoriferousness
+odorific
+odorimeter
+odorimetry
+odoriphore
+odorivector
+odorize
+odorless
+odorometer
+odorosity
+odorous
+odorously
+odorousness
+odorproof
+Odostemon
+Ods
+odso
+odum
+odyl
+odylic
+odylism
+odylist
+odylization
+odylize
+Odynerus
+Odyssean
+Odyssey
+Odz
+Odzookers
+Odzooks
+oe
+Oecanthus
+oecist
+oecodomic
+oecodomical
+oecoparasite
+oecoparasitism
+oecophobia
+oecumenian
+oecumenic
+oecumenical
+oecumenicalism
+oecumenicity
+oecus
+oedemerid
+Oedemeridae
+oedicnemine
+Oedicnemus
+Oedipal
+Oedipean
+Oedipus
+Oedogoniaceae
+oedogoniaceous
+Oedogoniales
+Oedogonium
+oenanthaldehyde
+oenanthate
+Oenanthe
+oenanthic
+oenanthol
+oenanthole
+oenanthyl
+oenanthylate
+oenanthylic
+oenin
+Oenocarpus
+oenochoe
+oenocyte
+oenocytic
+oenolin
+oenological
+oenologist
+oenology
+oenomancy
+Oenomaus
+oenomel
+oenometer
+oenophilist
+oenophobist
+oenopoetic
+Oenothera
+Oenotheraceae
+oenotheraceous
+Oenotrian
+oer
+oersted
+oes
+oesophageal
+oesophagi
+oesophagismus
+oesophagostomiasis
+Oesophagostomum
+oesophagus
+oestradiol
+Oestrelata
+oestrian
+oestriasis
+oestrid
+Oestridae
+oestrin
+oestriol
+oestroid
+oestrous
+oestrual
+oestruate
+oestruation
+oestrum
+oestrus
+of
+Ofer
+off
+offal
+offaling
+offbeat
+offcast
+offcome
+offcut
+offend
+offendable
+offendant
+offended
+offendedly
+offendedness
+offender
+offendible
+offendress
+offense
+offenseful
+offenseless
+offenselessly
+offenseproof
+offensible
+offensive
+offensively
+offensiveness
+offer
+offerable
+offeree
+offerer
+offering
+offeror
+offertorial
+offertory
+offgoing
+offgrade
+offhand
+offhanded
+offhandedly
+offhandedness
+office
+officeholder
+officeless
+officer
+officerage
+officeress
+officerhood
+officerial
+officerism
+officerless
+officership
+official
+officialdom
+officialese
+officialism
+officiality
+officialization
+officialize
+officially
+officialty
+officiant
+officiary
+officiate
+officiation
+officiator
+officinal
+officinally
+officious
+officiously
+officiousness
+offing
+offish
+offishly
+offishness
+offlet
+offlook
+offprint
+offsaddle
+offscape
+offscour
+offscourer
+offscouring
+offscum
+offset
+offshoot
+offshore
+offsider
+offspring
+offtake
+offtype
+offuscate
+offuscation
+offward
+offwards
+oflete
+Ofo
+oft
+often
+oftenness
+oftens
+oftentime
+oftentimes
+ofter
+oftest
+oftly
+oftness
+ofttime
+ofttimes
+oftwhiles
+Og
+ogaire
+Ogallala
+ogam
+ogamic
+Ogboni
+Ogcocephalidae
+Ogcocephalus
+ogdoad
+ogdoas
+ogee
+ogeed
+ogganition
+ogham
+oghamic
+Oghuz
+ogival
+ogive
+ogived
+Oglala
+ogle
+ogler
+ogmic
+Ogor
+Ogpu
+ogre
+ogreish
+ogreishly
+ogreism
+ogress
+ogrish
+ogrism
+ogtiern
+ogum
+Ogygia
+Ogygian
+oh
+ohelo
+ohia
+Ohio
+Ohioan
+ohm
+ohmage
+ohmic
+ohmmeter
+oho
+ohoy
+oidioid
+oidiomycosis
+oidiomycotic
+Oidium
+oii
+oikology
+oikoplast
+oil
+oilberry
+oilbird
+oilcan
+oilcloth
+oilcoat
+oilcup
+oildom
+oiled
+oiler
+oilery
+oilfish
+oilhole
+oilily
+oiliness
+oilless
+oillessness
+oillet
+oillike
+oilman
+oilmonger
+oilmongery
+oilometer
+oilpaper
+oilproof
+oilproofing
+oilseed
+oilskin
+oilskinned
+oilstock
+oilstone
+oilstove
+oiltight
+oiltightness
+oilway
+oily
+oilyish
+oime
+oinochoe
+oinology
+oinomancy
+oinomania
+oinomel
+oint
+ointment
+Oireachtas
+oisin
+oisivity
+oitava
+oiticica
+Ojibwa
+Ojibway
+Ok
+oka
+okapi
+Okapia
+okee
+okenite
+oket
+oki
+okia
+Okie
+Okinagan
+Oklafalaya
+Oklahannali
+Oklahoma
+Oklahoman
+okoniosis
+okonite
+okra
+okrug
+okshoofd
+okthabah
+Okuari
+okupukupu
+Olacaceae
+olacaceous
+Olaf
+olam
+olamic
+Olax
+Olcha
+Olchi
+Old
+old
+olden
+Oldenburg
+older
+oldermost
+oldfangled
+oldfangledness
+Oldfieldia
+Oldhamia
+oldhamite
+oldhearted
+oldish
+oldland
+oldness
+oldster
+oldwife
+Ole
+Olea
+Oleaceae
+oleaceous
+Oleacina
+Oleacinidae
+oleaginous
+oleaginousness
+oleana
+oleander
+oleandrin
+Olearia
+olease
+oleaster
+oleate
+olecranal
+olecranarthritis
+olecranial
+olecranian
+olecranoid
+olecranon
+olefiant
+olefin
+olefine
+olefinic
+Oleg
+oleic
+oleiferous
+olein
+olena
+olenellidian
+Olenellus
+olenid
+Olenidae
+olenidian
+olent
+Olenus
+oleo
+oleocalcareous
+oleocellosis
+oleocyst
+oleoduct
+oleograph
+oleographer
+oleographic
+oleography
+oleomargaric
+oleomargarine
+oleometer
+oleoptene
+oleorefractometer
+oleoresin
+oleoresinous
+oleosaccharum
+oleose
+oleosity
+oleostearate
+oleostearin
+oleothorax
+oleous
+Oleraceae
+oleraceous
+olericultural
+olericulturally
+olericulture
+Oleron
+Olethreutes
+olethreutid
+Olethreutidae
+olfact
+olfactible
+olfaction
+olfactive
+olfactology
+olfactometer
+olfactometric
+olfactometry
+olfactor
+olfactorily
+olfactory
+olfacty
+Olga
+oliban
+olibanum
+olid
+oligacanthous
+oligaemia
+oligandrous
+oliganthous
+oligarch
+oligarchal
+oligarchic
+oligarchical
+oligarchically
+oligarchism
+oligarchist
+oligarchize
+oligarchy
+oligemia
+oligidria
+oligist
+oligistic
+oligistical
+oligocarpous
+Oligocene
+Oligochaeta
+oligochaete
+oligochaetous
+oligochete
+oligocholia
+oligochrome
+oligochromemia
+oligochronometer
+oligochylia
+oligoclase
+oligoclasite
+oligocystic
+oligocythemia
+oligocythemic
+oligodactylia
+oligodendroglia
+oligodendroglioma
+oligodipsia
+oligodontous
+oligodynamic
+oligogalactia
+oligohemia
+oligohydramnios
+oligolactia
+oligomenorrhea
+oligomerous
+oligomery
+oligometochia
+oligometochic
+Oligomyodae
+oligomyodian
+oligomyoid
+Oligonephria
+oligonephric
+oligonephrous
+oligonite
+oligopepsia
+oligopetalous
+oligophagous
+oligophosphaturia
+oligophrenia
+oligophrenic
+oligophyllous
+oligoplasmia
+oligopnea
+oligopolistic
+oligopoly
+oligoprothesy
+oligoprothetic
+oligopsonistic
+oligopsony
+oligopsychia
+oligopyrene
+oligorhizous
+oligosepalous
+oligosialia
+oligosideric
+oligosiderite
+oligosite
+oligospermia
+oligospermous
+oligostemonous
+oligosyllabic
+oligosyllable
+oligosynthetic
+oligotokous
+oligotrichia
+oligotrophic
+oligotrophy
+oligotropic
+oliguresis
+oliguretic
+oliguria
+Olinia
+Oliniaceae
+oliniaceous
+olio
+oliphant
+oliprance
+olitory
+Oliva
+oliva
+olivaceous
+olivary
+Olive
+olive
+Olivean
+olived
+Olivella
+oliveness
+olivenite
+Oliver
+Oliverian
+oliverman
+oliversmith
+olivescent
+olivet
+Olivetan
+Olivette
+olivewood
+Olivia
+Olividae
+Olivier
+oliviferous
+oliviform
+olivil
+olivile
+olivilin
+olivine
+olivinefels
+olivinic
+olivinite
+olivinitic
+olla
+ollamh
+ollapod
+ollenite
+Ollie
+ollock
+olm
+Olneya
+Olof
+ological
+ologist
+ologistic
+ology
+olomao
+olona
+Olonets
+Olonetsian
+Olonetsish
+Olor
+oloroso
+olpe
+Olpidiaster
+Olpidium
+Olson
+oltonde
+oltunna
+olycook
+olykoek
+Olympia
+Olympiad
+Olympiadic
+Olympian
+Olympianism
+Olympianize
+Olympianly
+Olympianwise
+Olympic
+Olympicly
+Olympicness
+Olympieion
+Olympionic
+Olympus
+Olynthiac
+Olynthian
+Olynthus
+om
+omadhaun
+omagra
+Omagua
+Omaha
+omalgia
+Oman
+Omani
+omao
+Omar
+omarthritis
+omasitis
+omasum
+omber
+ombrette
+ombrifuge
+ombrograph
+ombrological
+ombrology
+ombrometer
+ombrophile
+ombrophilic
+ombrophilous
+ombrophily
+ombrophobe
+ombrophobous
+ombrophoby
+ombrophyte
+ombudsman
+ombudsmanship
+omega
+omegoid
+omelet
+omelette
+omen
+omened
+omenology
+omental
+omentectomy
+omentitis
+omentocele
+omentofixation
+omentopexy
+omentoplasty
+omentorrhaphy
+omentosplenopexy
+omentotomy
+omentulum
+omentum
+omer
+omicron
+omina
+ominous
+ominously
+ominousness
+omissible
+omission
+omissive
+omissively
+omit
+omitis
+omittable
+omitter
+omlah
+Ommastrephes
+Ommastrephidae
+ommateal
+ommateum
+ommatidial
+ommatidium
+ommatophore
+ommatophorous
+Ommiad
+Ommiades
+omneity
+omniactive
+omniactuality
+omniana
+omniarch
+omnibenevolence
+omnibenevolent
+omnibus
+omnibusman
+omnicausality
+omnicompetence
+omnicompetent
+omnicorporeal
+omnicredulity
+omnicredulous
+omnidenominational
+omnierudite
+omniessence
+omnifacial
+omnifarious
+omnifariously
+omnifariousness
+omniferous
+omnific
+omnificent
+omnifidel
+omniform
+omniformal
+omniformity
+omnify
+omnigenous
+omnigerent
+omnigraph
+omnihuman
+omnihumanity
+omnilegent
+omnilingual
+omniloquent
+omnilucent
+omnimental
+omnimeter
+omnimode
+omnimodous
+omninescience
+omninescient
+omniparent
+omniparient
+omniparity
+omniparous
+omnipatient
+omnipercipience
+omnipercipiency
+omnipercipient
+omniperfect
+omnipotence
+omnipotency
+omnipotent
+omnipotentiality
+omnipotently
+omnipregnant
+omnipresence
+omnipresent
+omnipresently
+omniprevalence
+omniprevalent
+omniproduction
+omniprudent
+omnirange
+omniregency
+omnirepresentative
+omnirepresentativeness
+omnirevealing
+omniscience
+omnisciency
+omniscient
+omnisciently
+omniscope
+omniscribent
+omniscriptive
+omnisentience
+omnisentient
+omnisignificance
+omnisignificant
+omnispective
+omnist
+omnisufficiency
+omnisufficient
+omnitemporal
+omnitenent
+omnitolerant
+omnitonal
+omnitonality
+omnitonic
+omnitude
+omnium
+omnivagant
+omnivalence
+omnivalent
+omnivalous
+omnivarious
+omnividence
+omnivident
+omnivision
+omnivolent
+Omnivora
+omnivoracious
+omnivoracity
+omnivorant
+omnivore
+omnivorous
+omnivorously
+omnivorousness
+omodynia
+omohyoid
+omoideum
+omophagia
+omophagist
+omophagous
+omophagy
+omophorion
+omoplate
+omoplatoscopy
+omostegite
+omosternal
+omosternum
+omphacine
+omphacite
+omphalectomy
+omphalic
+omphalism
+omphalitis
+omphalocele
+omphalode
+omphalodium
+omphalogenous
+omphaloid
+omphaloma
+omphalomesaraic
+omphalomesenteric
+omphaloncus
+omphalopagus
+omphalophlebitis
+omphalopsychic
+omphalopsychite
+omphalorrhagia
+omphalorrhea
+omphalorrhexis
+omphalos
+omphalosite
+omphaloskepsis
+omphalospinous
+omphalotomy
+omphalotripsy
+omphalus
+on
+Ona
+ona
+onager
+Onagra
+onagra
+Onagraceae
+onagraceous
+Onan
+onanism
+onanist
+onanistic
+onca
+once
+oncetta
+Onchidiidae
+Onchidium
+Onchocerca
+onchocerciasis
+onchocercosis
+oncia
+Oncidium
+oncin
+oncograph
+oncography
+oncologic
+oncological
+oncology
+oncome
+oncometer
+oncometric
+oncometry
+oncoming
+Oncorhynchus
+oncosimeter
+oncosis
+oncosphere
+oncost
+oncostman
+oncotomy
+ondagram
+ondagraph
+ondameter
+ondascope
+ondatra
+ondine
+ondogram
+ondograph
+ondometer
+ondoscope
+ondy
+one
+oneanother
+oneberry
+onefold
+onefoldness
+onegite
+onehearted
+onehow
+Oneida
+oneiric
+oneirocrit
+oneirocritic
+oneirocritical
+oneirocritically
+oneirocriticism
+oneirocritics
+oneirodynia
+oneirologist
+oneirology
+oneiromancer
+oneiromancy
+oneiroscopic
+oneiroscopist
+oneiroscopy
+oneirotic
+oneism
+onement
+oneness
+oner
+onerary
+onerative
+onerosity
+onerous
+onerously
+onerousness
+onery
+oneself
+onesigned
+onetime
+onewhere
+oneyer
+onfall
+onflemed
+onflow
+onflowing
+ongaro
+ongoing
+onhanger
+onicolo
+oniomania
+oniomaniac
+onion
+onionet
+onionized
+onionlike
+onionpeel
+onionskin
+oniony
+onirotic
+Oniscidae
+onisciform
+oniscoid
+Oniscoidea
+oniscoidean
+Oniscus
+onium
+onkilonite
+onkos
+onlay
+onlepy
+onliest
+onliness
+onlook
+onlooker
+onlooking
+only
+onmarch
+Onmun
+Onobrychis
+onocentaur
+Onoclea
+onofrite
+Onohippidium
+onolatry
+onomancy
+onomantia
+onomastic
+onomasticon
+onomatologist
+onomatology
+onomatomania
+onomatope
+onomatoplasm
+onomatopoeia
+onomatopoeial
+onomatopoeian
+onomatopoeic
+onomatopoeical
+onomatopoeically
+onomatopoesis
+onomatopoesy
+onomatopoetic
+onomatopoetically
+onomatopy
+onomatous
+onomomancy
+Onondaga
+Onondagan
+Ononis
+Onopordon
+Onosmodium
+onrush
+onrushing
+ons
+onset
+onsetter
+onshore
+onside
+onsight
+onslaught
+onstand
+onstanding
+onstead
+onsweep
+onsweeping
+ontal
+Ontarian
+Ontaric
+onto
+ontocycle
+ontocyclic
+ontogenal
+ontogenesis
+ontogenetic
+ontogenetical
+ontogenetically
+ontogenic
+ontogenically
+ontogenist
+ontogeny
+ontography
+ontologic
+ontological
+ontologically
+ontologism
+ontologist
+ontologistic
+ontologize
+ontology
+ontosophy
+onus
+onwaiting
+onward
+onwardly
+onwardness
+onwards
+onycha
+onychatrophia
+onychauxis
+onychia
+onychin
+onychitis
+onychium
+onychogryposis
+onychoid
+onycholysis
+onychomalacia
+onychomancy
+onychomycosis
+onychonosus
+onychopathic
+onychopathology
+onychopathy
+onychophagist
+onychophagy
+Onychophora
+onychophoran
+onychophorous
+onychophyma
+onychoptosis
+onychorrhexis
+onychoschizia
+onychosis
+onychotrophy
+onym
+onymal
+onymancy
+onymatic
+onymity
+onymize
+onymous
+onymy
+onyx
+onyxis
+onyxitis
+onza
+ooangium
+ooblast
+ooblastic
+oocyesis
+oocyst
+Oocystaceae
+oocystaceous
+oocystic
+Oocystis
+oocyte
+oodles
+ooecial
+ooecium
+oofbird
+ooftish
+oofy
+oogamete
+oogamous
+oogamy
+oogenesis
+oogenetic
+oogeny
+ooglea
+oogone
+oogonial
+oogoniophore
+oogonium
+oograph
+ooid
+ooidal
+ookinesis
+ookinete
+ookinetic
+oolak
+oolemma
+oolite
+oolitic
+oolly
+oologic
+oological
+oologically
+oologist
+oologize
+oology
+oolong
+oomancy
+oomantia
+oometer
+oometric
+oometry
+oomycete
+Oomycetes
+oomycetous
+oons
+oont
+oopak
+oophoralgia
+oophorauxe
+oophore
+oophorectomy
+oophoreocele
+oophorhysterectomy
+oophoric
+oophoridium
+oophoritis
+oophoroepilepsy
+oophoroma
+oophoromalacia
+oophoromania
+oophoron
+oophoropexy
+oophororrhaphy
+oophorosalpingectomy
+oophorostomy
+oophorotomy
+oophyte
+oophytic
+ooplasm
+ooplasmic
+ooplast
+oopod
+oopodal
+ooporphyrin
+oorali
+oord
+ooscope
+ooscopy
+oosperm
+oosphere
+oosporange
+oosporangium
+oospore
+Oosporeae
+oosporic
+oosporiferous
+oosporous
+oostegite
+oostegitic
+ootheca
+oothecal
+ootid
+ootocoid
+Ootocoidea
+ootocoidean
+ootocous
+ootype
+ooze
+oozily
+ooziness
+oozooid
+oozy
+opacate
+opacification
+opacifier
+opacify
+opacite
+opacity
+opacous
+opacousness
+opah
+opal
+opaled
+opalesce
+opalescence
+opalescent
+opalesque
+Opalina
+opaline
+opalinid
+Opalinidae
+opalinine
+opalish
+opalize
+opaloid
+opaque
+opaquely
+opaqueness
+Opata
+opdalite
+ope
+Opegrapha
+opeidoscope
+opelet
+open
+openable
+openband
+openbeak
+openbill
+opencast
+opener
+openhanded
+openhandedly
+openhandedness
+openhead
+openhearted
+openheartedly
+openheartedness
+opening
+openly
+openmouthed
+openmouthedly
+openmouthedness
+openness
+openside
+openwork
+opera
+operability
+operabily
+operable
+operae
+operagoer
+operalogue
+operameter
+operance
+operancy
+operand
+operant
+operatable
+operate
+operatee
+operatic
+operatical
+operatically
+operating
+operation
+operational
+operationalism
+operationalist
+operationism
+operationist
+operative
+operatively
+operativeness
+operativity
+operatize
+operator
+operatory
+operatrix
+opercle
+opercled
+opercula
+opercular
+Operculata
+operculate
+operculated
+operculiferous
+operculiform
+operculigenous
+operculigerous
+operculum
+operetta
+operette
+operettist
+operose
+operosely
+operoseness
+operosity
+Ophelia
+ophelimity
+Ophian
+ophiasis
+ophic
+ophicalcite
+Ophicephalidae
+ophicephaloid
+Ophicephalus
+Ophichthyidae
+ophichthyoid
+ophicleide
+ophicleidean
+ophicleidist
+Ophidia
+ophidian
+Ophidiidae
+Ophidiobatrachia
+ophidioid
+Ophidion
+ophidiophobia
+ophidious
+ophidologist
+ophidology
+Ophiobatrachia
+Ophiobolus
+Ophioglossaceae
+ophioglossaceous
+Ophioglossales
+Ophioglossum
+ophiography
+ophioid
+ophiolater
+ophiolatrous
+ophiolatry
+ophiolite
+ophiolitic
+ophiologic
+ophiological
+ophiologist
+ophiology
+ophiomancy
+ophiomorph
+Ophiomorpha
+ophiomorphic
+ophiomorphous
+Ophion
+ophionid
+Ophioninae
+ophionine
+ophiophagous
+ophiophilism
+ophiophilist
+ophiophobe
+ophiophobia
+ophiophoby
+ophiopluteus
+Ophiosaurus
+ophiostaphyle
+ophiouride
+Ophis
+Ophisaurus
+Ophism
+Ophite
+ophite
+Ophitic
+ophitic
+Ophitism
+Ophiuchid
+Ophiuchus
+ophiuran
+ophiurid
+Ophiurida
+ophiuroid
+Ophiuroidea
+ophiuroidean
+ophryon
+Ophrys
+ophthalaiater
+ophthalmagra
+ophthalmalgia
+ophthalmalgic
+ophthalmatrophia
+ophthalmectomy
+ophthalmencephalon
+ophthalmetrical
+ophthalmia
+ophthalmiac
+ophthalmiatrics
+ophthalmic
+ophthalmious
+ophthalmist
+ophthalmite
+ophthalmitic
+ophthalmitis
+ophthalmoblennorrhea
+ophthalmocarcinoma
+ophthalmocele
+ophthalmocopia
+ophthalmodiagnosis
+ophthalmodiastimeter
+ophthalmodynamometer
+ophthalmodynia
+ophthalmography
+ophthalmoleucoscope
+ophthalmolith
+ophthalmologic
+ophthalmological
+ophthalmologist
+ophthalmology
+ophthalmomalacia
+ophthalmometer
+ophthalmometric
+ophthalmometry
+ophthalmomycosis
+ophthalmomyositis
+ophthalmomyotomy
+ophthalmoneuritis
+ophthalmopathy
+ophthalmophlebotomy
+ophthalmophore
+ophthalmophorous
+ophthalmophthisis
+ophthalmoplasty
+ophthalmoplegia
+ophthalmoplegic
+ophthalmopod
+ophthalmoptosis
+ophthalmorrhagia
+ophthalmorrhea
+ophthalmorrhexis
+Ophthalmosaurus
+ophthalmoscope
+ophthalmoscopic
+ophthalmoscopical
+ophthalmoscopist
+ophthalmoscopy
+ophthalmostasis
+ophthalmostat
+ophthalmostatometer
+ophthalmothermometer
+ophthalmotomy
+ophthalmotonometer
+ophthalmotonometry
+ophthalmotrope
+ophthalmotropometer
+ophthalmy
+opianic
+opianyl
+opiate
+opiateproof
+opiatic
+Opiconsivia
+opificer
+opiism
+Opilia
+Opiliaceae
+opiliaceous
+Opiliones
+Opilionina
+opilionine
+Opilonea
+Opimian
+opinability
+opinable
+opinably
+opinant
+opination
+opinative
+opinatively
+opinator
+opine
+opiner
+opiniaster
+opiniastre
+opiniastrety
+opiniastrous
+opiniater
+opiniative
+opiniatively
+opiniativeness
+opiniatreness
+opiniatrety
+opinion
+opinionable
+opinionaire
+opinional
+opinionate
+opinionated
+opinionatedly
+opinionatedness
+opinionately
+opinionative
+opinionatively
+opinionativeness
+opinioned
+opinionedness
+opinionist
+opiomania
+opiomaniac
+opiophagism
+opiophagy
+opiparous
+opisometer
+opisthenar
+opisthion
+opisthobranch
+Opisthobranchia
+opisthobranchiate
+Opisthocoelia
+opisthocoelian
+opisthocoelous
+opisthocome
+Opisthocomi
+Opisthocomidae
+opisthocomine
+opisthocomous
+opisthodetic
+opisthodome
+opisthodomos
+opisthodomus
+opisthodont
+opisthogastric
+Opisthoglossa
+opisthoglossal
+opisthoglossate
+opisthoglyph
+Opisthoglypha
+opisthoglyphic
+opisthoglyphous
+Opisthognathidae
+opisthognathism
+opisthognathous
+opisthograph
+opisthographal
+opisthographic
+opisthographical
+opisthography
+opisthogyrate
+opisthogyrous
+Opisthoparia
+opisthoparian
+opisthophagic
+opisthoporeia
+opisthorchiasis
+Opisthorchis
+opisthosomal
+Opisthothelae
+opisthotic
+opisthotonic
+opisthotonoid
+opisthotonos
+opisthotonus
+opium
+opiumism
+opobalsam
+opodeldoc
+opodidymus
+opodymus
+opopanax
+Oporto
+opossum
+opotherapy
+Oppian
+oppidan
+oppilate
+oppilation
+oppilative
+opponency
+opponent
+opportune
+opportuneless
+opportunely
+opportuneness
+opportunism
+opportunist
+opportunistic
+opportunistically
+opportunity
+opposability
+opposable
+oppose
+opposed
+opposeless
+opposer
+opposing
+opposingly
+opposit
+opposite
+oppositely
+oppositeness
+oppositiflorous
+oppositifolious
+opposition
+oppositional
+oppositionary
+oppositionism
+oppositionist
+oppositionless
+oppositious
+oppositipetalous
+oppositipinnate
+oppositipolar
+oppositisepalous
+oppositive
+oppositively
+oppositiveness
+opposure
+oppress
+oppressed
+oppressible
+oppression
+oppressionist
+oppressive
+oppressively
+oppressiveness
+oppressor
+opprobriate
+opprobrious
+opprobriously
+opprobriousness
+opprobrium
+opprobry
+oppugn
+oppugnacy
+oppugnance
+oppugnancy
+oppugnant
+oppugnate
+oppugnation
+oppugner
+opsigamy
+opsimath
+opsimathy
+opsiometer
+opsisform
+opsistype
+opsonic
+opsoniferous
+opsonification
+opsonify
+opsonin
+opsonist
+opsonium
+opsonization
+opsonize
+opsonogen
+opsonoid
+opsonology
+opsonometry
+opsonophilia
+opsonophilic
+opsonophoric
+opsonotherapy
+opsy
+opt
+optable
+optableness
+optably
+optant
+optate
+optation
+optative
+optatively
+opthalmophorium
+opthalmoplegy
+opthalmothermometer
+optic
+optical
+optically
+optician
+opticist
+opticity
+opticochemical
+opticociliary
+opticon
+opticopapillary
+opticopupillary
+optics
+optigraph
+optimacy
+optimal
+optimate
+optimates
+optime
+optimism
+optimist
+optimistic
+optimistical
+optimistically
+optimity
+optimization
+optimize
+optimum
+option
+optional
+optionality
+optionalize
+optionally
+optionary
+optionee
+optionor
+optive
+optoblast
+optogram
+optography
+optological
+optologist
+optology
+optomeninx
+optometer
+optometrical
+optometrist
+optometry
+optophone
+optotechnics
+optotype
+Opulaster
+opulence
+opulency
+opulent
+opulently
+opulus
+Opuntia
+Opuntiaceae
+Opuntiales
+opuntioid
+opus
+opuscular
+opuscule
+opusculum
+oquassa
+or
+ora
+orabassu
+orach
+oracle
+oracular
+oracularity
+oracularly
+oracularness
+oraculate
+oraculous
+oraculously
+oraculousness
+oraculum
+orad
+orage
+oragious
+Orakzai
+oral
+oraler
+oralism
+oralist
+orality
+oralization
+oralize
+orally
+oralogist
+oralogy
+Orang
+orang
+orange
+orangeade
+orangebird
+Orangeism
+Orangeist
+orangeleaf
+Orangeman
+orangeman
+oranger
+orangeroot
+orangery
+orangewoman
+orangewood
+orangey
+orangism
+orangist
+orangite
+orangize
+orangutan
+orant
+Oraon
+orarian
+orarion
+orarium
+orary
+orate
+oration
+orational
+orationer
+orator
+oratorial
+oratorially
+Oratorian
+oratorian
+Oratorianism
+Oratorianize
+oratoric
+oratorical
+oratorically
+oratorio
+oratorize
+oratorlike
+oratorship
+oratory
+oratress
+oratrix
+orb
+orbed
+orbic
+orbical
+Orbicella
+orbicle
+orbicular
+orbicularis
+orbicularity
+orbicularly
+orbicularness
+orbiculate
+orbiculated
+orbiculately
+orbiculation
+orbiculatocordate
+orbiculatoelliptical
+Orbiculoidea
+orbific
+Orbilian
+Orbilius
+orbit
+orbital
+orbitale
+orbitar
+orbitary
+orbite
+orbitelar
+Orbitelariae
+orbitelarian
+orbitele
+orbitelous
+orbitofrontal
+Orbitoides
+Orbitolina
+orbitolite
+Orbitolites
+orbitomalar
+orbitomaxillary
+orbitonasal
+orbitopalpebral
+orbitosphenoid
+orbitosphenoidal
+orbitostat
+orbitotomy
+orbitozygomatic
+orbless
+orblet
+Orbulina
+orby
+orc
+Orca
+Orcadian
+orcanet
+orcein
+orchamus
+orchard
+orcharding
+orchardist
+orchardman
+orchat
+orchel
+orchella
+orchesis
+orchesography
+orchester
+Orchestia
+orchestian
+orchestic
+orchestiid
+Orchestiidae
+orchestra
+orchestral
+orchestraless
+orchestrally
+orchestrate
+orchestrater
+orchestration
+orchestrator
+orchestre
+orchestric
+orchestrina
+orchestrion
+orchialgia
+orchic
+orchichorea
+orchid
+Orchidaceae
+orchidacean
+orchidaceous
+Orchidales
+orchidalgia
+orchidectomy
+orchideous
+orchideously
+orchidist
+orchiditis
+orchidocele
+orchidocelioplasty
+orchidologist
+orchidology
+orchidomania
+orchidopexy
+orchidoplasty
+orchidoptosis
+orchidorrhaphy
+orchidotherapy
+orchidotomy
+orchiectomy
+orchiencephaloma
+orchiepididymitis
+orchil
+orchilla
+orchilytic
+orchiocatabasis
+orchiocele
+orchiodynia
+orchiomyeloma
+orchioncus
+orchioneuralgia
+orchiopexy
+orchioplasty
+orchiorrhaphy
+orchioscheocele
+orchioscirrhus
+orchiotomy
+Orchis
+orchitic
+orchitis
+orchotomy
+orcin
+orcinol
+Orcinus
+ordain
+ordainable
+ordainer
+ordainment
+ordanchite
+ordeal
+order
+orderable
+ordered
+orderedness
+orderer
+orderless
+orderliness
+orderly
+ordinable
+ordinal
+ordinally
+ordinance
+ordinand
+ordinant
+ordinar
+ordinarily
+ordinariness
+ordinarius
+ordinary
+ordinaryship
+ordinate
+ordinately
+ordination
+ordinative
+ordinatomaculate
+ordinator
+ordinee
+ordines
+ordnance
+ordonnance
+ordonnant
+ordosite
+Ordovian
+Ordovices
+Ordovician
+ordu
+ordure
+ordurous
+ore
+oread
+Oreamnos
+Oreas
+orecchion
+orectic
+orective
+oreillet
+orellin
+oreman
+orenda
+orendite
+Oreocarya
+Oreodon
+oreodont
+Oreodontidae
+oreodontine
+oreodontoid
+Oreodoxa
+Oreophasinae
+oreophasine
+Oreophasis
+Oreortyx
+oreotragine
+Oreotragus
+Oreotrochilus
+Orestean
+Oresteia
+oreweed
+orewood
+orexis
+orf
+orfgild
+organ
+organal
+organbird
+organdy
+organella
+organelle
+organer
+organette
+organic
+organical
+organically
+organicalness
+organicism
+organicismal
+organicist
+organicistic
+organicity
+organific
+organing
+organism
+organismal
+organismic
+organist
+organistic
+organistrum
+organistship
+organity
+organizability
+organizable
+organization
+organizational
+organizationally
+organizationist
+organizatory
+organize
+organized
+organizer
+organless
+organoantimony
+organoarsenic
+organobismuth
+organoboron
+organochordium
+organogel
+organogen
+organogenesis
+organogenetic
+organogenic
+organogenist
+organogeny
+organogold
+organographic
+organographical
+organographist
+organography
+organoid
+organoiron
+organolead
+organoleptic
+organolithium
+organologic
+organological
+organologist
+organology
+organomagnesium
+organomercury
+organometallic
+organon
+organonomic
+organonomy
+organonym
+organonymal
+organonymic
+organonymy
+organopathy
+organophil
+organophile
+organophilic
+organophone
+organophonic
+organophyly
+organoplastic
+organoscopy
+organosilicon
+organosilver
+organosodium
+organosol
+organotherapy
+organotin
+organotrophic
+organotropic
+organotropically
+organotropism
+organotropy
+organozinc
+organry
+organule
+organum
+organzine
+orgasm
+orgasmic
+orgastic
+orgeat
+orgia
+orgiac
+orgiacs
+orgiasm
+orgiast
+orgiastic
+orgiastical
+orgic
+orgue
+orguinette
+orgulous
+orgulously
+orgy
+orgyia
+Orias
+Oribatidae
+oribi
+orichalceous
+orichalch
+orichalcum
+oriconic
+oricycle
+oriel
+oriency
+orient
+Oriental
+oriental
+Orientalia
+orientalism
+orientalist
+orientality
+orientalization
+orientalize
+orientally
+Orientalogy
+orientate
+orientation
+orientative
+orientator
+orientite
+orientization
+orientize
+oriently
+orientness
+orifacial
+orifice
+orificial
+oriflamb
+oriflamme
+oriform
+origan
+origanized
+Origanum
+Origenian
+Origenic
+Origenical
+Origenism
+Origenist
+Origenistic
+Origenize
+origin
+originable
+original
+originalist
+originality
+originally
+originalness
+originant
+originarily
+originary
+originate
+origination
+originative
+originatively
+originator
+originatress
+originist
+orignal
+orihon
+orihyperbola
+orillion
+orillon
+orinasal
+orinasality
+oriole
+Oriolidae
+Oriolus
+Orion
+Oriskanian
+orismologic
+orismological
+orismology
+orison
+orisphere
+oristic
+Oriya
+Orkhon
+Orkneyan
+Orlando
+orle
+orlean
+Orleanism
+Orleanist
+Orleanistic
+Orleans
+orlet
+orleways
+orlewise
+orlo
+orlop
+Ormazd
+ormer
+ormolu
+Ormond
+orna
+ornament
+ornamental
+ornamentalism
+ornamentalist
+ornamentality
+ornamentalize
+ornamentally
+ornamentary
+ornamentation
+ornamenter
+ornamentist
+ornate
+ornately
+ornateness
+ornation
+ornature
+orneriness
+ornery
+ornis
+orniscopic
+orniscopist
+orniscopy
+ornithic
+ornithichnite
+ornithine
+Ornithischia
+ornithischian
+ornithivorous
+ornithobiographical
+ornithobiography
+ornithocephalic
+Ornithocephalidae
+ornithocephalous
+Ornithocephalus
+ornithocoprolite
+ornithocopros
+ornithodelph
+Ornithodelphia
+ornithodelphian
+ornithodelphic
+ornithodelphous
+Ornithodoros
+Ornithogaea
+Ornithogaean
+Ornithogalum
+ornithogeographic
+ornithogeographical
+ornithography
+ornithoid
+Ornitholestes
+ornitholite
+ornitholitic
+ornithologic
+ornithological
+ornithologically
+ornithologist
+ornithology
+ornithomancy
+ornithomantia
+ornithomantic
+ornithomantist
+Ornithomimidae
+Ornithomimus
+ornithomorph
+ornithomorphic
+ornithomyzous
+ornithon
+Ornithopappi
+ornithophile
+ornithophilist
+ornithophilite
+ornithophilous
+ornithophily
+ornithopod
+Ornithopoda
+ornithopter
+Ornithoptera
+Ornithopteris
+Ornithorhynchidae
+ornithorhynchous
+Ornithorhynchus
+ornithosaur
+Ornithosauria
+ornithosaurian
+Ornithoscelida
+ornithoscelidan
+ornithoscopic
+ornithoscopist
+ornithoscopy
+ornithosis
+ornithotomical
+ornithotomist
+ornithotomy
+ornithotrophy
+Ornithurae
+ornithuric
+ornithurous
+ornoite
+oroanal
+Orobanchaceae
+orobanchaceous
+Orobanche
+orobancheous
+orobathymetric
+Orobatoidea
+Orochon
+orocratic
+orodiagnosis
+orogen
+orogenesis
+orogenesy
+orogenetic
+orogenic
+orogeny
+orograph
+orographic
+orographical
+orographically
+orography
+oroheliograph
+Orohippus
+orohydrographic
+orohydrographical
+orohydrography
+oroide
+orolingual
+orological
+orologist
+orology
+orometer
+orometric
+orometry
+Oromo
+oronasal
+oronoco
+Orontium
+oropharyngeal
+oropharynx
+orotherapy
+Orotinan
+orotund
+orotundity
+orphan
+orphancy
+orphandom
+orphange
+orphanhood
+orphanism
+orphanize
+orphanry
+orphanship
+orpharion
+Orphean
+Orpheist
+orpheon
+orpheonist
+orpheum
+Orpheus
+Orphic
+Orphical
+Orphically
+Orphicism
+Orphism
+Orphize
+orphrey
+orphreyed
+orpiment
+orpine
+Orpington
+orrery
+orrhoid
+orrhology
+orrhotherapy
+orris
+orrisroot
+orseille
+orseilline
+orsel
+orselle
+orseller
+orsellic
+orsellinate
+orsellinic
+Orson
+ort
+ortalid
+Ortalidae
+ortalidian
+Ortalis
+ortet
+Orthagoriscus
+orthal
+orthantimonic
+Ortheris
+orthian
+orthic
+orthicon
+orthid
+Orthidae
+Orthis
+orthite
+orthitic
+ortho
+orthoarsenite
+orthoaxis
+orthobenzoquinone
+orthobiosis
+orthoborate
+orthobrachycephalic
+orthocarbonic
+orthocarpous
+Orthocarpus
+orthocenter
+orthocentric
+orthocephalic
+orthocephalous
+orthocephaly
+orthoceracone
+Orthoceran
+Orthoceras
+Orthoceratidae
+orthoceratite
+orthoceratitic
+orthoceratoid
+orthochlorite
+orthochromatic
+orthochromatize
+orthoclase
+orthoclasite
+orthoclastic
+orthocoumaric
+orthocresol
+orthocymene
+orthodiaene
+orthodiagonal
+orthodiagram
+orthodiagraph
+orthodiagraphic
+orthodiagraphy
+orthodiazin
+orthodiazine
+orthodolichocephalic
+orthodomatic
+orthodome
+orthodontia
+orthodontic
+orthodontics
+orthodontist
+orthodox
+orthodoxal
+orthodoxality
+orthodoxally
+orthodoxian
+orthodoxical
+orthodoxically
+orthodoxism
+orthodoxist
+orthodoxly
+orthodoxness
+orthodoxy
+orthodromic
+orthodromics
+orthodromy
+orthoepic
+orthoepical
+orthoepically
+orthoepist
+orthoepistic
+orthoepy
+orthoformic
+orthogamous
+orthogamy
+orthogenesis
+orthogenetic
+orthogenic
+orthognathic
+orthognathism
+orthognathous
+orthognathus
+orthognathy
+orthogneiss
+orthogonal
+orthogonality
+orthogonally
+orthogonial
+orthograde
+orthogranite
+orthograph
+orthographer
+orthographic
+orthographical
+orthographically
+orthographist
+orthographize
+orthography
+orthohydrogen
+orthologer
+orthologian
+orthological
+orthology
+orthometopic
+orthometric
+orthometry
+Orthonectida
+orthonitroaniline
+orthopath
+orthopathic
+orthopathically
+orthopathy
+orthopedia
+orthopedic
+orthopedical
+orthopedically
+orthopedics
+orthopedist
+orthopedy
+orthophenylene
+orthophonic
+orthophony
+orthophoria
+orthophoric
+orthophosphate
+orthophosphoric
+orthophyre
+orthophyric
+orthopinacoid
+orthopinacoidal
+orthoplastic
+orthoplasy
+orthoplumbate
+orthopnea
+orthopneic
+orthopod
+Orthopoda
+orthopraxis
+orthopraxy
+orthoprism
+orthopsychiatric
+orthopsychiatrical
+orthopsychiatrist
+orthopsychiatry
+orthopter
+Orthoptera
+orthopteral
+orthopteran
+orthopterist
+orthopteroid
+Orthopteroidea
+orthopterological
+orthopterologist
+orthopterology
+orthopteron
+orthopterous
+orthoptic
+orthopyramid
+orthopyroxene
+orthoquinone
+orthorhombic
+Orthorrhapha
+orthorrhaphous
+orthorrhaphy
+orthoscope
+orthoscopic
+orthose
+orthosemidin
+orthosemidine
+orthosilicate
+orthosilicic
+orthosis
+orthosite
+orthosomatic
+orthospermous
+orthostatic
+orthostichous
+orthostichy
+orthostyle
+orthosubstituted
+orthosymmetric
+orthosymmetrical
+orthosymmetrically
+orthosymmetry
+orthotactic
+orthotectic
+orthotic
+orthotolidin
+orthotolidine
+orthotoluic
+orthotoluidin
+orthotoluidine
+orthotomic
+orthotomous
+orthotone
+orthotonesis
+orthotonic
+orthotonus
+orthotropal
+orthotropic
+orthotropism
+orthotropous
+orthotropy
+orthotype
+orthotypous
+orthovanadate
+orthovanadic
+orthoveratraldehyde
+orthoveratric
+orthoxazin
+orthoxazine
+orthoxylene
+orthron
+ortiga
+ortive
+Ortol
+ortolan
+Ortrud
+ortstein
+ortygan
+Ortygian
+Ortyginae
+ortygine
+Ortyx
+Orunchun
+orvietan
+orvietite
+Orvieto
+Orville
+ory
+Orycteropodidae
+Orycteropus
+oryctics
+oryctognostic
+oryctognostical
+oryctognostically
+oryctognosy
+Oryctolagus
+oryssid
+Oryssidae
+Oryssus
+Oryx
+Oryza
+oryzenin
+oryzivorous
+Oryzomys
+Oryzopsis
+Oryzorictes
+Oryzorictinae
+Os
+os
+Osage
+osamin
+osamine
+osazone
+Osc
+Oscan
+Oscar
+Oscarella
+Oscarellidae
+oscella
+oscheal
+oscheitis
+oscheocarcinoma
+oscheocele
+oscheolith
+oscheoma
+oscheoncus
+oscheoplasty
+Oschophoria
+oscillance
+oscillancy
+oscillant
+Oscillaria
+Oscillariaceae
+oscillariaceous
+oscillate
+oscillating
+oscillation
+oscillative
+oscillatively
+oscillator
+Oscillatoria
+Oscillatoriaceae
+oscillatoriaceous
+oscillatorian
+oscillatory
+oscillogram
+oscillograph
+oscillographic
+oscillography
+oscillometer
+oscillometric
+oscillometry
+oscilloscope
+oscin
+oscine
+Oscines
+oscinian
+Oscinidae
+oscinine
+Oscinis
+oscitance
+oscitancy
+oscitant
+oscitantly
+oscitate
+oscitation
+oscnode
+osculable
+osculant
+oscular
+oscularity
+osculate
+osculation
+osculatory
+osculatrix
+oscule
+osculiferous
+osculum
+oscurrantist
+ose
+osela
+oshac
+Osiandrian
+oside
+osier
+osiered
+osierlike
+osiery
+Osirian
+Osiride
+Osiridean
+Osirification
+Osirify
+Osiris
+Osirism
+Oskar
+Osmanie
+Osmanli
+Osmanthus
+osmate
+osmatic
+osmatism
+osmazomatic
+osmazomatous
+osmazome
+Osmeridae
+Osmerus
+osmesis
+osmeterium
+osmetic
+osmic
+osmidrosis
+osmin
+osmina
+osmious
+osmiridium
+osmium
+osmodysphoria
+osmogene
+osmograph
+osmolagnia
+osmology
+osmometer
+osmometric
+osmometry
+Osmond
+osmondite
+osmophore
+osmoregulation
+Osmorhiza
+osmoscope
+osmose
+osmosis
+osmotactic
+osmotaxis
+osmotherapy
+osmotic
+osmotically
+osmous
+osmund
+Osmunda
+Osmundaceae
+osmundaceous
+osmundine
+Osnaburg
+Osnappar
+osoberry
+osone
+osophy
+osotriazine
+osotriazole
+osphradial
+osphradium
+osphresiolagnia
+osphresiologic
+osphresiologist
+osphresiology
+osphresiometer
+osphresiometry
+osphresiophilia
+osphresis
+osphretic
+Osphromenidae
+osphyalgia
+osphyalgic
+osphyarthritis
+osphyitis
+osphyocele
+osphyomelitis
+osprey
+ossal
+ossarium
+ossature
+osse
+ossein
+osselet
+ossements
+osseoalbuminoid
+osseoaponeurotic
+osseocartilaginous
+osseofibrous
+osseomucoid
+osseous
+osseously
+Osset
+Ossetian
+Ossetic
+Ossetine
+Ossetish
+Ossian
+Ossianesque
+Ossianic
+Ossianism
+Ossianize
+ossicle
+ossicular
+ossiculate
+ossicule
+ossiculectomy
+ossiculotomy
+ossiculum
+ossiferous
+ossific
+ossification
+ossified
+ossifier
+ossifluence
+ossifluent
+ossiform
+ossifrage
+ossifrangent
+ossify
+ossivorous
+ossuarium
+ossuary
+ossypite
+ostalgia
+Ostara
+ostariophysan
+Ostariophyseae
+Ostariophysi
+ostariophysial
+ostariophysous
+ostarthritis
+osteal
+ostealgia
+osteanabrosis
+osteanagenesis
+ostearthritis
+ostearthrotomy
+ostectomy
+osteectomy
+osteectopia
+osteectopy
+Osteichthyes
+ostein
+osteitic
+osteitis
+ostemia
+ostempyesis
+ostensibility
+ostensible
+ostensibly
+ostension
+ostensive
+ostensively
+ostensorium
+ostensory
+ostent
+ostentate
+ostentation
+ostentatious
+ostentatiously
+ostentatiousness
+ostentive
+ostentous
+osteoaneurysm
+osteoarthritis
+osteoarthropathy
+osteoarthrotomy
+osteoblast
+osteoblastic
+osteoblastoma
+osteocachetic
+osteocarcinoma
+osteocartilaginous
+osteocele
+osteocephaloma
+osteochondritis
+osteochondrofibroma
+osteochondroma
+osteochondromatous
+osteochondropathy
+osteochondrophyte
+osteochondrosarcoma
+osteochondrous
+osteoclasia
+osteoclasis
+osteoclast
+osteoclastic
+osteoclasty
+osteocolla
+osteocomma
+osteocranium
+osteocystoma
+osteodentin
+osteodentinal
+osteodentine
+osteoderm
+osteodermal
+osteodermatous
+osteodermia
+osteodermis
+osteodiastasis
+osteodynia
+osteodystrophy
+osteoencephaloma
+osteoenchondroma
+osteoepiphysis
+osteofibroma
+osteofibrous
+osteogangrene
+osteogen
+osteogenesis
+osteogenetic
+osteogenic
+osteogenist
+osteogenous
+osteogeny
+osteoglossid
+Osteoglossidae
+osteoglossoid
+Osteoglossum
+osteographer
+osteography
+osteohalisteresis
+osteoid
+Osteolepidae
+Osteolepis
+osteolite
+osteologer
+osteologic
+osteological
+osteologically
+osteologist
+osteology
+osteolysis
+osteolytic
+osteoma
+osteomalacia
+osteomalacial
+osteomalacic
+osteomancy
+osteomanty
+osteomatoid
+osteomere
+osteometric
+osteometrical
+osteometry
+osteomyelitis
+osteoncus
+osteonecrosis
+osteoneuralgia
+osteopaedion
+osteopath
+osteopathic
+osteopathically
+osteopathist
+osteopathy
+osteopedion
+osteoperiosteal
+osteoperiostitis
+osteopetrosis
+osteophage
+osteophagia
+osteophlebitis
+osteophone
+osteophony
+osteophore
+osteophyma
+osteophyte
+osteophytic
+osteoplaque
+osteoplast
+osteoplastic
+osteoplasty
+osteoporosis
+osteoporotic
+osteorrhaphy
+osteosarcoma
+osteosarcomatous
+osteosclerosis
+osteoscope
+osteosis
+osteosteatoma
+osteostixis
+osteostomatous
+osteostomous
+osteostracan
+Osteostraci
+osteosuture
+osteosynovitis
+osteosynthesis
+osteothrombosis
+osteotome
+osteotomist
+osteotomy
+osteotribe
+osteotrite
+osteotrophic
+osteotrophy
+Ostertagia
+ostial
+ostiary
+ostiate
+Ostic
+ostiolar
+ostiolate
+ostiole
+ostitis
+ostium
+ostleress
+Ostmannic
+ostmark
+Ostmen
+ostosis
+Ostracea
+ostracean
+ostraceous
+Ostraciidae
+ostracine
+ostracioid
+Ostracion
+ostracism
+ostracizable
+ostracization
+ostracize
+ostracizer
+ostracod
+Ostracoda
+ostracode
+ostracoderm
+Ostracodermi
+ostracodous
+ostracoid
+Ostracoidea
+ostracon
+ostracophore
+Ostracophori
+ostracophorous
+ostracum
+Ostraeacea
+ostraite
+Ostrea
+ostreaceous
+ostreger
+ostreicultural
+ostreiculture
+ostreiculturist
+Ostreidae
+ostreiform
+ostreodynamometer
+ostreoid
+ostreophage
+ostreophagist
+ostreophagous
+ostrich
+ostrichlike
+Ostrogoth
+Ostrogothian
+Ostrogothic
+Ostrya
+Ostyak
+Oswald
+Oswegan
+otacoustic
+otacousticon
+Otaheitan
+otalgia
+otalgic
+otalgy
+Otaria
+otarian
+Otariidae
+Otariinae
+otariine
+otarine
+otarioid
+otary
+otate
+otectomy
+otelcosis
+Otello
+Othake
+othelcosis
+Othello
+othematoma
+othemorrhea
+otheoscope
+other
+otherdom
+otherest
+othergates
+otherguess
+otherhow
+otherism
+otherist
+otherness
+othersome
+othertime
+otherwards
+otherwhence
+otherwhere
+otherwhereness
+otherwheres
+otherwhile
+otherwhiles
+otherwhither
+otherwise
+otherwiseness
+otherworld
+otherworldliness
+otherworldly
+otherworldness
+Othin
+Othinism
+othmany
+Othonna
+othygroma
+otiant
+otiatric
+otiatrics
+otiatry
+otic
+oticodinia
+Otidae
+Otides
+Otididae
+otidiform
+otidine
+Otidiphaps
+otidium
+otiorhynchid
+Otiorhynchidae
+Otiorhynchinae
+otiose
+otiosely
+otioseness
+otiosity
+Otis
+otitic
+otitis
+otkon
+Oto
+otoantritis
+otoblennorrhea
+otocariasis
+otocephalic
+otocephaly
+otocerebritis
+otocleisis
+otoconial
+otoconite
+otoconium
+otocrane
+otocranial
+otocranic
+otocranium
+Otocyon
+otocyst
+otocystic
+otodynia
+otodynic
+otoencephalitis
+otogenic
+otogenous
+otographical
+otography
+Otogyps
+otohemineurasthenia
+otolaryngologic
+otolaryngologist
+otolaryngology
+otolite
+otolith
+Otolithidae
+Otolithus
+otolitic
+otological
+otologist
+otology
+Otomaco
+otomassage
+Otomi
+Otomian
+Otomitlan
+otomucormycosis
+otomyces
+otomycosis
+otonecrectomy
+otoneuralgia
+otoneurasthenia
+otopathic
+otopathy
+otopharyngeal
+otophone
+otopiesis
+otoplastic
+otoplasty
+otopolypus
+otopyorrhea
+otopyosis
+otorhinolaryngologic
+otorhinolaryngologist
+otorhinolaryngology
+otorrhagia
+otorrhea
+otorrhoea
+otosalpinx
+otosclerosis
+otoscope
+otoscopic
+otoscopy
+otosis
+otosphenal
+otosteal
+otosteon
+ototomy
+Otozoum
+ottajanite
+ottar
+ottavarima
+Ottawa
+otter
+otterer
+otterhound
+ottinger
+ottingkar
+Otto
+otto
+Ottoman
+Ottomanean
+Ottomanic
+Ottomanism
+Ottomanization
+Ottomanize
+Ottomanlike
+Ottomite
+ottrelife
+Ottweilian
+Otuquian
+oturia
+Otus
+Otyak
+ouabain
+ouabaio
+ouabe
+ouachitite
+ouakari
+ouananiche
+oubliette
+ouch
+Oudemian
+oudenarde
+Oudenodon
+oudenodont
+ouenite
+ouf
+ough
+ought
+oughtness
+oughtnt
+Ouija
+ouistiti
+oukia
+oulap
+ounce
+ounds
+ouphe
+ouphish
+our
+Ouranos
+ourie
+ouroub
+Ourouparia
+ours
+ourself
+ourselves
+oust
+ouster
+out
+outact
+outadmiral
+Outagami
+outage
+outambush
+outarde
+outargue
+outask
+outawe
+outbabble
+outback
+outbacker
+outbake
+outbalance
+outban
+outbanter
+outbar
+outbargain
+outbark
+outbawl
+outbeam
+outbear
+outbearing
+outbeg
+outbeggar
+outbelch
+outbellow
+outbent
+outbetter
+outbid
+outbidder
+outbirth
+outblacken
+outblaze
+outbleat
+outbleed
+outbless
+outbloom
+outblossom
+outblot
+outblow
+outblowing
+outblown
+outbluff
+outblunder
+outblush
+outbluster
+outboard
+outboast
+outbolting
+outbond
+outbook
+outborn
+outborough
+outbound
+outboundaries
+outbounds
+outbow
+outbowed
+outbowl
+outbox
+outbrag
+outbranch
+outbranching
+outbrave
+outbray
+outbrazen
+outbreak
+outbreaker
+outbreaking
+outbreath
+outbreathe
+outbreather
+outbred
+outbreed
+outbreeding
+outbribe
+outbridge
+outbring
+outbrother
+outbud
+outbuild
+outbuilding
+outbulge
+outbulk
+outbully
+outburn
+outburst
+outbustle
+outbuy
+outbuzz
+outby
+outcant
+outcaper
+outcarol
+outcarry
+outcase
+outcast
+outcaste
+outcasting
+outcastness
+outcavil
+outchamber
+outcharm
+outchase
+outchatter
+outcheat
+outchide
+outcity
+outclamor
+outclass
+outclerk
+outclimb
+outcome
+outcomer
+outcoming
+outcompass
+outcomplete
+outcompliment
+outcorner
+outcountry
+outcourt
+outcrawl
+outcricket
+outcrier
+outcrop
+outcropper
+outcross
+outcrossing
+outcrow
+outcrowd
+outcry
+outcull
+outcure
+outcurse
+outcurve
+outcut
+outdaciousness
+outdance
+outdare
+outdate
+outdated
+outdazzle
+outdevil
+outdispatch
+outdistance
+outdistrict
+outdo
+outdodge
+outdoer
+outdoor
+outdoorness
+outdoors
+outdoorsman
+outdraft
+outdragon
+outdraw
+outdream
+outdress
+outdrink
+outdrive
+outdure
+outdwell
+outdweller
+outdwelling
+outeat
+outecho
+outed
+outedge
+outen
+outer
+outerly
+outermost
+outerness
+outerwear
+outeye
+outeyed
+outfable
+outface
+outfall
+outfame
+outfangthief
+outfast
+outfawn
+outfeast
+outfeat
+outfeeding
+outfence
+outferret
+outfiction
+outfield
+outfielder
+outfieldsman
+outfight
+outfighter
+outfighting
+outfigure
+outfish
+outfit
+outfitter
+outflame
+outflank
+outflanker
+outflanking
+outflare
+outflash
+outflatter
+outfling
+outfloat
+outflourish
+outflow
+outflue
+outflung
+outflunky
+outflush
+outflux
+outfly
+outfold
+outfool
+outfoot
+outform
+outfort
+outfreeman
+outfront
+outfroth
+outfrown
+outgabble
+outgain
+outgallop
+outgamble
+outgame
+outgang
+outgarment
+outgarth
+outgas
+outgate
+outgauge
+outgaze
+outgeneral
+outgive
+outgiving
+outglad
+outglare
+outgleam
+outglitter
+outgloom
+outglow
+outgnaw
+outgo
+outgoer
+outgoing
+outgoingness
+outgone
+outgreen
+outgrin
+outground
+outgrow
+outgrowing
+outgrowth
+outguard
+outguess
+outgun
+outgush
+outhammer
+outhasten
+outhaul
+outhauler
+outhear
+outheart
+outhector
+outheel
+outher
+outhire
+outhiss
+outhit
+outhold
+outhorror
+outhouse
+outhousing
+outhowl
+outhue
+outhumor
+outhunt
+outhurl
+outhut
+outhymn
+outhyperbolize
+outimage
+outing
+outinvent
+outish
+outissue
+outjazz
+outjest
+outjet
+outjetting
+outjinx
+outjockey
+outjourney
+outjuggle
+outjump
+outjut
+outkeeper
+outkick
+outkill
+outking
+outkiss
+outkitchen
+outknave
+outknee
+outlabor
+outlaid
+outlance
+outland
+outlander
+outlandish
+outlandishlike
+outlandishly
+outlandishness
+outlash
+outlast
+outlaugh
+outlaunch
+outlaw
+outlawry
+outlay
+outlean
+outleap
+outlearn
+outlegend
+outlength
+outlengthen
+outler
+outlet
+outlie
+outlier
+outlighten
+outlimb
+outlimn
+outline
+outlinear
+outlined
+outlineless
+outliner
+outlinger
+outlip
+outlipped
+outlive
+outliver
+outlodging
+outlook
+outlooker
+outlord
+outlove
+outlung
+outluster
+outly
+outlying
+outmagic
+outmalaprop
+outman
+outmaneuver
+outmantle
+outmarch
+outmarriage
+outmarry
+outmaster
+outmatch
+outmate
+outmeasure
+outmerchant
+outmiracle
+outmode
+outmoded
+outmost
+outmount
+outmouth
+outmove
+outname
+outness
+outnight
+outnoise
+outnook
+outnumber
+outoffice
+outoven
+outpace
+outpage
+outpaint
+outparagon
+outparamour
+outparish
+outpart
+outpass
+outpassion
+outpath
+outpatient
+outpay
+outpayment
+outpeal
+outpeep
+outpeer
+outpension
+outpensioner
+outpeople
+outperform
+outpick
+outpicket
+outpipe
+outpitch
+outpity
+outplace
+outplan
+outplay
+outplayed
+outplease
+outplod
+outplot
+outpocketing
+outpoint
+outpoise
+outpoison
+outpoll
+outpomp
+outpop
+outpopulate
+outporch
+outport
+outporter
+outportion
+outpost
+outpouching
+outpour
+outpourer
+outpouring
+outpractice
+outpraise
+outpray
+outpreach
+outpreen
+outprice
+outprodigy
+outproduce
+outpromise
+outpry
+outpull
+outpupil
+outpurl
+outpurse
+outpush
+output
+outputter
+outquaff
+outquarters
+outqueen
+outquestion
+outquibble
+outquote
+outrace
+outrage
+outrageous
+outrageously
+outrageousness
+outrageproof
+outrager
+outraging
+outrail
+outrance
+outrange
+outrank
+outrant
+outrap
+outrate
+outraught
+outrave
+outray
+outre
+outreach
+outread
+outreason
+outreckon
+outredden
+outrede
+outreign
+outrelief
+outremer
+outreness
+outrhyme
+outrick
+outride
+outrider
+outriding
+outrig
+outrigger
+outriggered
+outriggerless
+outrigging
+outright
+outrightly
+outrightness
+outring
+outrival
+outroar
+outrogue
+outroll
+outromance
+outrooper
+outroot
+outrove
+outrow
+outroyal
+outrun
+outrunner
+outrush
+outsail
+outsaint
+outsally
+outsatisfy
+outsavor
+outsay
+outscent
+outscold
+outscore
+outscorn
+outscour
+outscouring
+outscream
+outsea
+outseam
+outsearch
+outsee
+outseek
+outsell
+outsentry
+outsert
+outservant
+outset
+outsetting
+outsettlement
+outsettler
+outshadow
+outshake
+outshame
+outshape
+outsharp
+outsharpen
+outsheathe
+outshift
+outshine
+outshiner
+outshoot
+outshot
+outshoulder
+outshout
+outshove
+outshow
+outshower
+outshriek
+outshrill
+outshut
+outside
+outsided
+outsidedness
+outsideness
+outsider
+outsift
+outsigh
+outsight
+outsin
+outsing
+outsit
+outsize
+outsized
+outskill
+outskip
+outskirmish
+outskirmisher
+outskirt
+outskirter
+outslander
+outslang
+outsleep
+outslide
+outslink
+outsmart
+outsmell
+outsmile
+outsnatch
+outsnore
+outsoar
+outsole
+outsoler
+outsonnet
+outsophisticate
+outsound
+outspan
+outsparkle
+outspeak
+outspeaker
+outspeech
+outspeed
+outspell
+outspend
+outspent
+outspill
+outspin
+outspirit
+outspit
+outsplendor
+outspoken
+outspokenly
+outspokenness
+outsport
+outspout
+outspread
+outspring
+outsprint
+outspue
+outspurn
+outspurt
+outstagger
+outstair
+outstand
+outstander
+outstanding
+outstandingly
+outstandingness
+outstare
+outstart
+outstarter
+outstartle
+outstate
+outstation
+outstatistic
+outstature
+outstay
+outsteal
+outsteam
+outstep
+outsting
+outstink
+outstood
+outstorm
+outstrain
+outstream
+outstreet
+outstretch
+outstretcher
+outstride
+outstrike
+outstrip
+outstrive
+outstroke
+outstrut
+outstudent
+outstudy
+outstunt
+outsubtle
+outsuck
+outsucken
+outsuffer
+outsuitor
+outsulk
+outsum
+outsuperstition
+outswagger
+outswarm
+outswear
+outsweep
+outsweeping
+outsweeten
+outswell
+outswift
+outswim
+outswindle
+outswing
+outswirl
+outtaken
+outtalent
+outtalk
+outtask
+outtaste
+outtear
+outtease
+outtell
+outthieve
+outthink
+outthreaten
+outthrob
+outthrough
+outthrow
+outthrust
+outthruster
+outthunder
+outthwack
+outtinkle
+outtire
+outtoil
+outtongue
+outtop
+outtower
+outtrade
+outtrail
+outtravel
+outtrick
+outtrot
+outtrump
+outturn
+outturned
+outtyrannize
+outusure
+outvalue
+outvanish
+outvaunt
+outvelvet
+outvenom
+outvictor
+outvie
+outvier
+outvigil
+outvillage
+outvillain
+outvociferate
+outvoice
+outvote
+outvoter
+outvoyage
+outwait
+outwake
+outwale
+outwalk
+outwall
+outwallop
+outwander
+outwar
+outwarble
+outward
+outwardly
+outwardmost
+outwardness
+outwards
+outwash
+outwaste
+outwatch
+outwater
+outwave
+outwealth
+outweapon
+outwear
+outweary
+outweave
+outweed
+outweep
+outweigh
+outweight
+outwell
+outwent
+outwhirl
+outwick
+outwile
+outwill
+outwind
+outwindow
+outwing
+outwish
+outwit
+outwith
+outwittal
+outwitter
+outwoe
+outwoman
+outwood
+outword
+outwore
+outwork
+outworker
+outworld
+outworn
+outworth
+outwrangle
+outwrench
+outwrest
+outwrestle
+outwriggle
+outwring
+outwrite
+outwrought
+outyard
+outyell
+outyelp
+outyield
+outzany
+ouzel
+Ova
+ova
+Ovaherero
+oval
+ovalbumin
+ovalescent
+ovaliform
+ovalish
+ovalization
+ovalize
+ovally
+ovalness
+ovaloid
+ovalwise
+Ovambo
+Ovampo
+Ovangangela
+ovant
+ovarial
+ovarian
+ovarin
+ovarioabdominal
+ovariocele
+ovariocentesis
+ovariocyesis
+ovariodysneuria
+ovariohysterectomy
+ovariole
+ovariolumbar
+ovariorrhexis
+ovariosalpingectomy
+ovariosteresis
+ovariostomy
+ovariotomist
+ovariotomize
+ovariotomy
+ovariotubal
+ovarious
+ovaritis
+ovarium
+ovary
+ovate
+ovateconical
+ovated
+ovately
+ovation
+ovational
+ovationary
+ovatoacuminate
+ovatoconical
+ovatocordate
+ovatocylindraceous
+ovatodeltoid
+ovatoellipsoidal
+ovatoglobose
+ovatolanceolate
+ovatooblong
+ovatoorbicular
+ovatopyriform
+ovatoquadrangular
+ovatorotundate
+ovatoserrate
+ovatotriangular
+oven
+ovenbird
+ovenful
+ovenlike
+ovenly
+ovenman
+ovenpeel
+ovenstone
+ovenware
+ovenwise
+over
+overability
+overable
+overabound
+overabsorb
+overabstain
+overabstemious
+overabstemiousness
+overabundance
+overabundant
+overabundantly
+overabuse
+overaccentuate
+overaccumulate
+overaccumulation
+overaccuracy
+overaccurate
+overaccurately
+overact
+overaction
+overactive
+overactiveness
+overactivity
+overacute
+overaddiction
+overadvance
+overadvice
+overaffect
+overaffirmation
+overafflict
+overaffliction
+overage
+overageness
+overaggravate
+overaggravation
+overagitate
+overagonize
+overall
+overalled
+overalls
+overambitioned
+overambitious
+overambling
+overanalyze
+overangelic
+overannotate
+overanswer
+overanxiety
+overanxious
+overanxiously
+overappareled
+overappraisal
+overappraise
+overapprehended
+overapprehension
+overapprehensive
+overapt
+overarch
+overargue
+overarm
+overartificial
+overartificiality
+overassail
+overassert
+overassertion
+overassertive
+overassertively
+overassertiveness
+overassess
+overassessment
+overassumption
+overattached
+overattachment
+overattention
+overattentive
+overattentively
+overawe
+overawful
+overawn
+overawning
+overbake
+overbalance
+overballast
+overbalm
+overbanded
+overbandy
+overbank
+overbanked
+overbark
+overbarren
+overbarrenness
+overbase
+overbaseness
+overbashful
+overbashfully
+overbashfulness
+overbattle
+overbear
+overbearance
+overbearer
+overbearing
+overbearingly
+overbearingness
+overbeat
+overbeating
+overbeetling
+overbelief
+overbend
+overbepatched
+overberg
+overbet
+overbias
+overbid
+overbig
+overbigness
+overbillow
+overbit
+overbite
+overbitten
+overbitter
+overbitterly
+overbitterness
+overblack
+overblame
+overblaze
+overbleach
+overblessed
+overblessedness
+overblind
+overblindly
+overblithe
+overbloom
+overblouse
+overblow
+overblowing
+overblown
+overboard
+overboast
+overboastful
+overbodice
+overboding
+overbody
+overboil
+overbold
+overboldly
+overboldness
+overbook
+overbookish
+overbooming
+overborne
+overborrow
+overbought
+overbound
+overbounteous
+overbounteously
+overbounteousness
+overbow
+overbowed
+overbowl
+overbrace
+overbragging
+overbrained
+overbranch
+overbrave
+overbravely
+overbravery
+overbray
+overbreak
+overbreathe
+overbred
+overbreed
+overbribe
+overbridge
+overbright
+overbrightly
+overbrightness
+overbrilliancy
+overbrilliant
+overbrilliantly
+overbrim
+overbrimmingly
+overbroaden
+overbroil
+overbrood
+overbrow
+overbrown
+overbrowse
+overbrush
+overbrutal
+overbrutality
+overbrutalize
+overbrutally
+overbubbling
+overbuild
+overbuilt
+overbulk
+overbulky
+overbumptious
+overburden
+overburdeningly
+overburdensome
+overburn
+overburned
+overburningly
+overburnt
+overburst
+overburthen
+overbusily
+overbusiness
+overbusy
+overbuy
+overby
+overcall
+overcanny
+overcanopy
+overcap
+overcapable
+overcapably
+overcapacity
+overcape
+overcapitalization
+overcapitalize
+overcaptious
+overcaptiously
+overcaptiousness
+overcard
+overcare
+overcareful
+overcarefully
+overcareless
+overcarelessly
+overcarelessness
+overcaring
+overcarking
+overcarry
+overcast
+overcasting
+overcasual
+overcasually
+overcatch
+overcaution
+overcautious
+overcautiously
+overcautiousness
+overcentralization
+overcentralize
+overcertification
+overcertify
+overchafe
+overchannel
+overchant
+overcharge
+overchargement
+overcharger
+overcharitable
+overcharitably
+overcharity
+overchase
+overcheap
+overcheaply
+overcheapness
+overcheck
+overcherish
+overchidden
+overchief
+overchildish
+overchildishness
+overchill
+overchlorinate
+overchoke
+overchrome
+overchurch
+overcirculate
+overcircumspect
+overcircumspection
+overcivil
+overcivility
+overcivilization
+overcivilize
+overclaim
+overclamor
+overclasp
+overclean
+overcleanly
+overcleanness
+overcleave
+overclever
+overcleverness
+overclimb
+overcloak
+overclog
+overclose
+overclosely
+overcloseness
+overclothe
+overclothes
+overcloud
+overcloy
+overcluster
+overcoached
+overcoat
+overcoated
+overcoating
+overcoil
+overcold
+overcoldly
+overcollar
+overcolor
+overcomable
+overcome
+overcomer
+overcomingly
+overcommand
+overcommend
+overcommon
+overcommonly
+overcommonness
+overcompensate
+overcompensation
+overcompensatory
+overcompetition
+overcompetitive
+overcomplacency
+overcomplacent
+overcomplacently
+overcomplete
+overcomplex
+overcomplexity
+overcompliant
+overcompound
+overconcentrate
+overconcentration
+overconcern
+overconcerned
+overcondensation
+overcondense
+overconfidence
+overconfident
+overconfidently
+overconfute
+overconquer
+overconscientious
+overconscious
+overconsciously
+overconsciousness
+overconservatism
+overconservative
+overconservatively
+overconsiderate
+overconsiderately
+overconsideration
+overconsume
+overconsumption
+overcontented
+overcontentedly
+overcontentment
+overcontract
+overcontraction
+overcontribute
+overcontribution
+overcook
+overcool
+overcoolly
+overcopious
+overcopiously
+overcopiousness
+overcorned
+overcorrect
+overcorrection
+overcorrupt
+overcorruption
+overcorruptly
+overcostly
+overcount
+overcourteous
+overcourtesy
+overcover
+overcovetous
+overcovetousness
+overcow
+overcoy
+overcoyness
+overcram
+overcredit
+overcredulity
+overcredulous
+overcredulously
+overcreed
+overcreep
+overcritical
+overcritically
+overcriticalness
+overcriticism
+overcriticize
+overcrop
+overcross
+overcrow
+overcrowd
+overcrowded
+overcrowdedly
+overcrowdedness
+overcrown
+overcrust
+overcry
+overcull
+overcultivate
+overcultivation
+overculture
+overcultured
+overcumber
+overcunning
+overcunningly
+overcunningness
+overcup
+overcured
+overcurious
+overcuriously
+overcuriousness
+overcurl
+overcurrency
+overcurrent
+overcurtain
+overcustom
+overcut
+overcutter
+overcutting
+overdaintily
+overdaintiness
+overdainty
+overdamn
+overdance
+overdangle
+overdare
+overdaringly
+overdarken
+overdash
+overdazed
+overdazzle
+overdeal
+overdear
+overdearly
+overdearness
+overdeck
+overdecorate
+overdecoration
+overdecorative
+overdeeming
+overdeep
+overdeepen
+overdeeply
+overdeliberate
+overdeliberation
+overdelicacy
+overdelicate
+overdelicately
+overdelicious
+overdeliciously
+overdelighted
+overdelightedly
+overdemand
+overdemocracy
+overdepress
+overdepressive
+overdescant
+overdesire
+overdesirous
+overdesirousness
+overdestructive
+overdestructively
+overdestructiveness
+overdetermination
+overdetermined
+overdevelop
+overdevelopment
+overdevoted
+overdevotedly
+overdevotion
+overdiffuse
+overdiffusely
+overdiffuseness
+overdigest
+overdignified
+overdignifiedly
+overdignifiedness
+overdignify
+overdignity
+overdiligence
+overdiligent
+overdiligently
+overdilute
+overdilution
+overdischarge
+overdiscipline
+overdiscount
+overdiscourage
+overdiscouragement
+overdistance
+overdistant
+overdistantly
+overdistantness
+overdistempered
+overdistention
+overdiverse
+overdiversely
+overdiversification
+overdiversify
+overdiversity
+overdo
+overdoctrinize
+overdoer
+overdogmatic
+overdogmatically
+overdogmatism
+overdome
+overdominate
+overdone
+overdoor
+overdosage
+overdose
+overdoubt
+overdoze
+overdraft
+overdrain
+overdrainage
+overdramatic
+overdramatically
+overdrape
+overdrapery
+overdraw
+overdrawer
+overdream
+overdrench
+overdress
+overdrifted
+overdrink
+overdrip
+overdrive
+overdriven
+overdroop
+overdrowsed
+overdry
+overdubbed
+overdue
+overdunged
+overdure
+overdust
+overdye
+overeager
+overeagerly
+overeagerness
+overearnest
+overearnestly
+overearnestness
+overeasily
+overeasiness
+overeasy
+overeat
+overeaten
+overedge
+overedit
+overeducate
+overeducated
+overeducation
+overeducative
+overeffort
+overegg
+overelaborate
+overelaborately
+overelaboration
+overelate
+overelegance
+overelegancy
+overelegant
+overelegantly
+overelliptical
+overembellish
+overembellishment
+overembroider
+overemotional
+overemotionality
+overemotionalize
+overemphasis
+overemphasize
+overemphatic
+overemphatically
+overemphaticness
+overempired
+overemptiness
+overempty
+overenter
+overenthusiasm
+overenthusiastic
+overentreat
+overentry
+overequal
+overestimate
+overestimation
+overexcelling
+overexcitability
+overexcitable
+overexcitably
+overexcite
+overexcitement
+overexercise
+overexert
+overexerted
+overexertedly
+overexertedness
+overexertion
+overexpand
+overexpansion
+overexpansive
+overexpect
+overexpectant
+overexpectantly
+overexpenditure
+overexpert
+overexplain
+overexplanation
+overexpose
+overexposure
+overexpress
+overexquisite
+overexquisitely
+overextend
+overextension
+overextensive
+overextreme
+overexuberant
+overeye
+overeyebrowed
+overface
+overfacile
+overfacilely
+overfacility
+overfactious
+overfactiousness
+overfag
+overfagged
+overfaint
+overfaith
+overfaithful
+overfaithfully
+overfall
+overfamed
+overfamiliar
+overfamiliarity
+overfamiliarly
+overfamous
+overfanciful
+overfancy
+overfar
+overfast
+overfastidious
+overfastidiously
+overfastidiousness
+overfasting
+overfat
+overfatigue
+overfatten
+overfavor
+overfavorable
+overfavorably
+overfear
+overfearful
+overfearfully
+overfearfulness
+overfeast
+overfeatured
+overfed
+overfee
+overfeed
+overfeel
+overfellowlike
+overfellowly
+overfelon
+overfeminine
+overfeminize
+overfertile
+overfertility
+overfestoon
+overfew
+overfierce
+overfierceness
+overfile
+overfill
+overfilm
+overfine
+overfinished
+overfish
+overfit
+overfix
+overflatten
+overfleece
+overfleshed
+overflexion
+overfling
+overfloat
+overflog
+overflood
+overflorid
+overfloridness
+overflourish
+overflow
+overflowable
+overflower
+overflowing
+overflowingly
+overflowingness
+overflown
+overfluency
+overfluent
+overfluently
+overflush
+overflutter
+overfly
+overfold
+overfond
+overfondle
+overfondly
+overfondness
+overfoolish
+overfoolishly
+overfoolishness
+overfoot
+overforce
+overforged
+overformed
+overforward
+overforwardly
+overforwardness
+overfought
+overfoul
+overfoully
+overfrail
+overfrailty
+overfranchised
+overfrank
+overfrankly
+overfrankness
+overfraught
+overfree
+overfreedom
+overfreely
+overfreight
+overfrequency
+overfrequent
+overfrequently
+overfret
+overfrieze
+overfrighted
+overfrighten
+overfroth
+overfrown
+overfrozen
+overfruited
+overfruitful
+overfull
+overfullness
+overfunctioning
+overfurnish
+overgaiter
+overgalled
+overgamble
+overgang
+overgarment
+overgarrison
+overgaze
+overgeneral
+overgeneralize
+overgenerally
+overgenerosity
+overgenerous
+overgenerously
+overgenial
+overgeniality
+overgentle
+overgently
+overget
+overgifted
+overgild
+overgilted
+overgird
+overgirded
+overgirdle
+overglad
+overgladly
+overglance
+overglass
+overglaze
+overglide
+overglint
+overgloom
+overgloominess
+overgloomy
+overglorious
+overgloss
+overglut
+overgo
+overgoad
+overgod
+overgodliness
+overgodly
+overgood
+overgorge
+overgovern
+overgovernment
+overgown
+overgrace
+overgracious
+overgrade
+overgrain
+overgrainer
+overgrasping
+overgrateful
+overgratefully
+overgratification
+overgratify
+overgratitude
+overgraze
+overgreasiness
+overgreasy
+overgreat
+overgreatly
+overgreatness
+overgreed
+overgreedily
+overgreediness
+overgreedy
+overgrieve
+overgrievous
+overgrind
+overgross
+overgrossly
+overgrossness
+overground
+overgrow
+overgrown
+overgrowth
+overguilty
+overgun
+overhair
+overhalf
+overhand
+overhanded
+overhandicap
+overhandle
+overhang
+overhappy
+overharass
+overhard
+overharden
+overhardness
+overhardy
+overharsh
+overharshly
+overharshness
+overhaste
+overhasten
+overhastily
+overhastiness
+overhasty
+overhate
+overhatted
+overhaughty
+overhaul
+overhauler
+overhead
+overheadiness
+overheadman
+overheady
+overheap
+overhear
+overhearer
+overheartily
+overhearty
+overheat
+overheatedly
+overheave
+overheaviness
+overheavy
+overheight
+overheighten
+overheinous
+overheld
+overhelp
+overhelpful
+overhigh
+overhighly
+overhill
+overhit
+overholiness
+overhollow
+overholy
+overhomeliness
+overhomely
+overhonest
+overhonestly
+overhonesty
+overhonor
+overhorse
+overhot
+overhotly
+overhour
+overhouse
+overhover
+overhuge
+overhuman
+overhumanity
+overhumanize
+overhung
+overhunt
+overhurl
+overhurriedly
+overhurry
+overhusk
+overhysterical
+overidealism
+overidealistic
+overidle
+overidly
+overillustrate
+overillustration
+overimaginative
+overimaginativeness
+overimitate
+overimitation
+overimitative
+overimitatively
+overimport
+overimportation
+overimpress
+overimpressible
+overinclinable
+overinclination
+overinclined
+overincrust
+overincurious
+overindividualism
+overindividualistic
+overindulge
+overindulgence
+overindulgent
+overindulgently
+overindustrialization
+overindustrialize
+overinflate
+overinflation
+overinflative
+overinfluence
+overinfluential
+overinform
+overink
+overinsist
+overinsistence
+overinsistent
+overinsistently
+overinsolence
+overinsolent
+overinsolently
+overinstruct
+overinstruction
+overinsurance
+overinsure
+overintellectual
+overintellectuality
+overintense
+overintensely
+overintensification
+overintensity
+overinterest
+overinterested
+overinterestedness
+overinventoried
+overinvest
+overinvestment
+overiodize
+overirrigate
+overirrigation
+overissue
+overitching
+overjacket
+overjade
+overjaded
+overjawed
+overjealous
+overjealously
+overjealousness
+overjob
+overjocular
+overjoy
+overjoyful
+overjoyfully
+overjoyous
+overjudge
+overjudging
+overjudgment
+overjudicious
+overjump
+overjust
+overjutting
+overkeen
+overkeenness
+overkeep
+overkick
+overkind
+overkindly
+overkindness
+overking
+overknavery
+overknee
+overknow
+overknowing
+overlabor
+overlace
+overlactation
+overlade
+overlaid
+overlain
+overland
+Overlander
+overlander
+overlanguaged
+overlap
+overlard
+overlarge
+overlargely
+overlargeness
+overlascivious
+overlast
+overlate
+overlaudation
+overlaudatory
+overlaugh
+overlaunch
+overlave
+overlavish
+overlavishly
+overlax
+overlaxative
+overlaxly
+overlaxness
+overlay
+overlayer
+overlead
+overleaf
+overlean
+overleap
+overlearn
+overlearned
+overlearnedly
+overlearnedness
+overleather
+overleave
+overleaven
+overleer
+overleg
+overlegislation
+overleisured
+overlength
+overlettered
+overlewd
+overlewdly
+overlewdness
+overliberal
+overliberality
+overliberally
+overlicentious
+overlick
+overlie
+overlier
+overlift
+overlight
+overlighted
+overlightheaded
+overlightly
+overlightsome
+overliking
+overline
+overling
+overlinger
+overlinked
+overlip
+overlipping
+overlisted
+overlisten
+overliterary
+overlittle
+overlive
+overliveliness
+overlively
+overliver
+overload
+overloath
+overlock
+overlocker
+overlofty
+overlogical
+overlogically
+overlong
+overlook
+overlooker
+overloose
+overlord
+overlordship
+overloud
+overloup
+overlove
+overlover
+overlow
+overlowness
+overloyal
+overloyally
+overloyalty
+overlubricatio
+overluscious
+overlush
+overlustiness
+overlusty
+overluxuriance
+overluxuriant
+overluxurious
+overly
+overlying
+overmagnify
+overmagnitude
+overmajority
+overmalapert
+overman
+overmantel
+overmantle
+overmany
+overmarch
+overmark
+overmarking
+overmarl
+overmask
+overmast
+overmaster
+overmasterful
+overmasterfully
+overmasterfulness
+overmastering
+overmasteringly
+overmatch
+overmatter
+overmature
+overmaturity
+overmean
+overmeanly
+overmeanness
+overmeasure
+overmeddle
+overmeek
+overmeekly
+overmeekness
+overmellow
+overmellowness
+overmelodied
+overmelt
+overmerciful
+overmercifulness
+overmerit
+overmerrily
+overmerry
+overmettled
+overmickle
+overmighty
+overmild
+overmill
+overminute
+overminutely
+overminuteness
+overmix
+overmoccasin
+overmodest
+overmodestly
+overmodesty
+overmodulation
+overmoist
+overmoisten
+overmoisture
+overmortgage
+overmoss
+overmost
+overmotor
+overmount
+overmounts
+overmourn
+overmournful
+overmournfully
+overmuch
+overmuchness
+overmultiplication
+overmultiply
+overmultitude
+overname
+overnarrow
+overnarrowly
+overnationalization
+overnear
+overneat
+overneatness
+overneglect
+overnegligence
+overnegligent
+overnervous
+overnervously
+overnervousness
+overnet
+overnew
+overnice
+overnicely
+overniceness
+overnicety
+overnigh
+overnight
+overnimble
+overnipping
+overnoise
+overnotable
+overnourish
+overnoveled
+overnumber
+overnumerous
+overnumerousness
+overnurse
+overobedience
+overobedient
+overobediently
+overobese
+overobjectify
+overoblige
+overobsequious
+overobsequiously
+overobsequiousness
+overoffend
+overoffensive
+overofficered
+overofficious
+overorder
+overornamented
+overpained
+overpainful
+overpainfully
+overpainfulness
+overpaint
+overpamper
+overpart
+overparted
+overpartial
+overpartiality
+overpartially
+overparticular
+overparticularly
+overpass
+overpassionate
+overpassionately
+overpassionateness
+overpast
+overpatient
+overpatriotic
+overpay
+overpayment
+overpeer
+overpending
+overpensive
+overpensiveness
+overpeople
+overpepper
+overperemptory
+overpersuade
+overpersuasion
+overpert
+overpessimism
+overpessimistic
+overpet
+overphysic
+overpick
+overpicture
+overpinching
+overpitch
+overpitched
+overpiteous
+overplace
+overplaced
+overplacement
+overplain
+overplant
+overplausible
+overplay
+overplease
+overplenitude
+overplenteous
+overplenteously
+overplentiful
+overplenty
+overplot
+overplow
+overplumb
+overplume
+overplump
+overplumpness
+overplus
+overply
+overpointed
+overpoise
+overpole
+overpolemical
+overpolish
+overpolitic
+overponderous
+overpopular
+overpopularity
+overpopularly
+overpopulate
+overpopulation
+overpopulous
+overpopulousness
+overpositive
+overpossess
+overpot
+overpotent
+overpotential
+overpour
+overpower
+overpowerful
+overpowering
+overpoweringly
+overpoweringness
+overpraise
+overpray
+overpreach
+overprecise
+overpreciseness
+overpreface
+overpregnant
+overpreoccupation
+overpreoccupy
+overpress
+overpressure
+overpresumption
+overpresumptuous
+overprice
+overprick
+overprint
+overprize
+overprizer
+overprocrastination
+overproduce
+overproduction
+overproductive
+overproficient
+overprolific
+overprolix
+overprominence
+overprominent
+overprominently
+overpromise
+overprompt
+overpromptly
+overpromptness
+overprone
+overproneness
+overpronounced
+overproof
+overproportion
+overproportionate
+overproportionated
+overproportionately
+overproportioned
+overprosperity
+overprosperous
+overprotect
+overprotract
+overprotraction
+overproud
+overproudly
+overprove
+overprovender
+overprovide
+overprovident
+overprovidently
+overprovision
+overprovocation
+overprovoke
+overprune
+overpublic
+overpublicity
+overpuff
+overpuissant
+overpunish
+overpunishment
+overpurchase
+overquantity
+overquarter
+overquell
+overquick
+overquickly
+overquiet
+overquietly
+overquietness
+overrace
+overrack
+overrake
+overrange
+overrank
+overrankness
+overrapture
+overrapturize
+overrash
+overrashly
+overrashness
+overrate
+overrational
+overrationalize
+overravish
+overreach
+overreacher
+overreaching
+overreachingly
+overreachingness
+overread
+overreader
+overreadily
+overreadiness
+overready
+overrealism
+overrealistic
+overreckon
+overrecord
+overrefine
+overrefined
+overrefinement
+overreflection
+overreflective
+overregister
+overregistration
+overregular
+overregularity
+overregularly
+overregulate
+overregulation
+overrelax
+overreliance
+overreliant
+overreligion
+overreligious
+overremiss
+overremissly
+overremissness
+overrennet
+overrent
+overreplete
+overrepletion
+overrepresent
+overrepresentation
+overrepresentative
+overreserved
+overresolute
+overresolutely
+overrestore
+overrestrain
+overretention
+overreward
+overrich
+overriches
+overrichness
+override
+overrife
+overrigged
+overright
+overrighteous
+overrighteously
+overrighteousness
+overrigid
+overrigidity
+overrigidly
+overrigorous
+overrigorously
+overrim
+overriot
+overripe
+overripely
+overripen
+overripeness
+overrise
+overroast
+overroll
+overroof
+overrooted
+overrough
+overroughly
+overroughness
+overroyal
+overrude
+overrudely
+overrudeness
+overruff
+overrule
+overruler
+overruling
+overrulingly
+overrun
+overrunner
+overrunning
+overrunningly
+overrush
+overrusset
+overrust
+oversad
+oversadly
+oversadness
+oversaid
+oversail
+oversale
+oversaliva
+oversalt
+oversalty
+oversand
+oversanded
+oversanguine
+oversanguinely
+oversapless
+oversated
+oversatisfy
+oversaturate
+oversaturation
+oversauce
+oversauciness
+oversaucy
+oversave
+overscare
+overscatter
+overscented
+oversceptical
+overscepticism
+overscore
+overscour
+overscratch
+overscrawl
+overscream
+overscribble
+overscrub
+overscruple
+overscrupulosity
+overscrupulous
+overscrupulously
+overscrupulousness
+overscurf
+overscutched
+oversea
+overseal
+overseam
+overseamer
+oversearch
+overseas
+overseason
+overseasoned
+overseated
+oversecure
+oversecurely
+oversecurity
+oversee
+overseed
+overseen
+overseer
+overseerism
+overseership
+overseethe
+oversell
+oversend
+oversensible
+oversensibly
+oversensitive
+oversensitively
+oversensitiveness
+oversententious
+oversentimental
+oversentimentalism
+oversentimentalize
+oversentimentally
+overserious
+overseriously
+overseriousness
+overservice
+overservile
+overservility
+overset
+oversetter
+oversettle
+oversettled
+oversevere
+overseverely
+overseverity
+oversew
+overshade
+overshadow
+overshadower
+overshadowing
+overshadowingly
+overshadowment
+overshake
+oversharp
+oversharpness
+overshave
+oversheet
+overshelving
+overshepherd
+overshine
+overshirt
+overshoe
+overshoot
+overshort
+overshorten
+overshortly
+overshot
+overshoulder
+overshowered
+overshrink
+overshroud
+oversick
+overside
+oversight
+oversilence
+oversilent
+oversilver
+oversimple
+oversimplicity
+oversimplification
+oversimplify
+oversimply
+oversize
+oversized
+overskim
+overskip
+overskipper
+overskirt
+overslack
+overslander
+overslaugh
+overslavish
+overslavishly
+oversleep
+oversleeve
+overslide
+overslight
+overslip
+overslope
+overslow
+overslowly
+overslowness
+overslur
+oversmall
+oversman
+oversmite
+oversmitten
+oversmoke
+oversmooth
+oversmoothly
+oversmoothness
+oversnow
+oversoak
+oversoar
+oversock
+oversoft
+oversoftly
+oversoftness
+oversold
+oversolemn
+oversolemnity
+oversolemnly
+oversolicitous
+oversolicitously
+oversolicitousness
+oversoon
+oversoothing
+oversophisticated
+oversophistication
+oversorrow
+oversorrowed
+oversot
+oversoul
+oversound
+oversour
+oversourly
+oversourness
+oversow
+overspacious
+overspaciousness
+overspan
+overspangled
+oversparing
+oversparingly
+oversparingness
+oversparred
+overspatter
+overspeak
+overspecialization
+overspecialize
+overspeculate
+overspeculation
+overspeculative
+overspeech
+overspeed
+overspeedily
+overspeedy
+overspend
+overspill
+overspin
+oversplash
+overspread
+overspring
+oversprinkle
+oversprung
+overspun
+oversqueak
+oversqueamish
+oversqueamishness
+overstaff
+overstaid
+overstain
+overstale
+overstalled
+overstand
+overstaring
+overstate
+overstately
+overstatement
+overstay
+overstayal
+oversteadfast
+oversteadfastness
+oversteady
+overstep
+overstiff
+overstiffness
+overstifle
+overstimulate
+overstimulation
+overstimulative
+overstir
+overstitch
+overstock
+overstoop
+overstoping
+overstore
+overstory
+overstout
+overstoutly
+overstowage
+overstowed
+overstrain
+overstrait
+overstraiten
+overstraitly
+overstraitness
+overstream
+overstrength
+overstress
+overstretch
+overstrew
+overstrict
+overstrictly
+overstrictness
+overstride
+overstrident
+overstridently
+overstrike
+overstring
+overstriving
+overstrong
+overstrongly
+overstrung
+overstud
+overstudied
+overstudious
+overstudiously
+overstudiousness
+overstudy
+overstuff
+oversublime
+oversubscribe
+oversubscriber
+oversubscription
+oversubtile
+oversubtle
+oversubtlety
+oversubtly
+oversufficiency
+oversufficient
+oversufficiently
+oversuperstitious
+oversupply
+oversure
+oversurety
+oversurge
+oversurviving
+oversusceptibility
+oversusceptible
+oversuspicious
+oversuspiciously
+overswarm
+overswarth
+oversway
+oversweated
+oversweep
+oversweet
+oversweeten
+oversweetly
+oversweetness
+overswell
+overswift
+overswim
+overswimmer
+overswing
+overswinging
+overswirling
+oversystematic
+oversystematically
+oversystematize
+overt
+overtakable
+overtake
+overtaker
+overtalk
+overtalkative
+overtalkativeness
+overtalker
+overtame
+overtamely
+overtameness
+overtapped
+overtare
+overtariff
+overtarry
+overtart
+overtask
+overtax
+overtaxation
+overteach
+overtechnical
+overtechnicality
+overtedious
+overtediously
+overteem
+overtell
+overtempt
+overtenacious
+overtender
+overtenderly
+overtenderness
+overtense
+overtensely
+overtenseness
+overtension
+overterrible
+overtest
+overthick
+overthin
+overthink
+overthought
+overthoughtful
+overthriftily
+overthriftiness
+overthrifty
+overthrong
+overthrow
+overthrowable
+overthrowal
+overthrower
+overthrust
+overthwart
+overthwartly
+overthwartness
+overthwartways
+overthwartwise
+overtide
+overtight
+overtightly
+overtill
+overtimbered
+overtime
+overtimer
+overtimorous
+overtimorously
+overtimorousness
+overtinseled
+overtint
+overtip
+overtipple
+overtire
+overtiredness
+overtitle
+overtly
+overtness
+overtoe
+overtoil
+overtoise
+overtone
+overtongued
+overtop
+overtopple
+overtorture
+overtower
+overtrace
+overtrack
+overtrade
+overtrader
+overtrailed
+overtrain
+overtrample
+overtravel
+overtread
+overtreatment
+overtrick
+overtrim
+overtrouble
+overtrue
+overtrump
+overtrust
+overtrustful
+overtruthful
+overtruthfully
+overtumble
+overture
+overturn
+overturnable
+overturner
+overtutor
+overtwine
+overtwist
+overtype
+overuberous
+overunionized
+overunsuitable
+overurbanization
+overurge
+overuse
+overusual
+overusually
+overvaliant
+overvaluable
+overvaluation
+overvalue
+overvariety
+overvault
+overvehemence
+overvehement
+overveil
+overventilate
+overventilation
+overventuresome
+overventurous
+overview
+overvoltage
+overvote
+overwade
+overwages
+overwake
+overwalk
+overwander
+overward
+overwash
+overwasted
+overwatch
+overwatcher
+overwater
+overwave
+overway
+overwealth
+overwealthy
+overweaponed
+overwear
+overweary
+overweather
+overweave
+overweb
+overween
+overweener
+overweening
+overweeningly
+overweeningness
+overweep
+overweigh
+overweight
+overweightage
+overwell
+overwelt
+overwet
+overwetness
+overwheel
+overwhelm
+overwhelmer
+overwhelming
+overwhelmingly
+overwhelmingness
+overwhipped
+overwhirl
+overwhisper
+overwide
+overwild
+overwilily
+overwilling
+overwillingly
+overwily
+overwin
+overwind
+overwing
+overwinter
+overwiped
+overwisdom
+overwise
+overwisely
+overwithered
+overwoman
+overwomanize
+overwomanly
+overwood
+overwooded
+overwoody
+overword
+overwork
+overworld
+overworn
+overworry
+overworship
+overwound
+overwove
+overwoven
+overwrap
+overwrest
+overwrested
+overwrestle
+overwrite
+overwroth
+overwrought
+overyear
+overyoung
+overyouthful
+overzeal
+overzealous
+overzealously
+overzealousness
+ovest
+ovey
+Ovibos
+Ovibovinae
+ovibovine
+ovicapsular
+ovicapsule
+ovicell
+ovicellular
+ovicidal
+ovicide
+ovicular
+oviculated
+oviculum
+ovicyst
+ovicystic
+Ovidae
+Ovidian
+oviducal
+oviduct
+oviductal
+oviferous
+ovification
+oviform
+ovigenesis
+ovigenetic
+ovigenic
+ovigenous
+ovigerm
+ovigerous
+ovile
+Ovillus
+Ovinae
+ovine
+ovinia
+ovipara
+oviparal
+oviparity
+oviparous
+oviparously
+oviparousness
+oviposit
+oviposition
+ovipositor
+Ovis
+ovisac
+oviscapt
+ovism
+ovispermary
+ovispermiduct
+ovist
+ovistic
+ovivorous
+ovocyte
+ovoelliptic
+ovoflavin
+ovogenesis
+ovogenetic
+ovogenous
+ovogonium
+ovoid
+ovoidal
+ovolemma
+ovolo
+ovological
+ovologist
+ovology
+ovolytic
+ovomucoid
+ovoplasm
+ovoplasmic
+ovopyriform
+ovorhomboid
+ovorhomboidal
+ovotesticular
+ovotestis
+ovovitellin
+Ovovivipara
+ovoviviparism
+ovoviviparity
+ovoviviparous
+ovoviviparously
+ovoviviparousness
+Ovula
+ovular
+ovularian
+ovulary
+ovulate
+ovulation
+ovule
+ovuliferous
+ovuligerous
+ovulist
+ovum
+ow
+owd
+owe
+owelty
+Owen
+Owenia
+Owenian
+Owenism
+Owenist
+Owenite
+Owenize
+ower
+owerance
+owerby
+owercome
+owergang
+owerloup
+owertaen
+owerword
+owght
+owing
+owk
+owl
+owldom
+owler
+owlery
+owlet
+Owlglass
+owlhead
+owling
+owlish
+owlishly
+owlishness
+owlism
+owllight
+owllike
+Owlspiegle
+owly
+own
+owner
+ownerless
+ownership
+ownhood
+ownness
+ownself
+ownwayish
+owregane
+owrehip
+owrelay
+owse
+owsen
+owser
+owtchah
+owyheeite
+ox
+oxacid
+oxadiazole
+oxalacetic
+oxalaldehyde
+oxalamid
+oxalamide
+oxalan
+oxalate
+oxaldehyde
+oxalemia
+oxalic
+Oxalidaceae
+oxalidaceous
+Oxalis
+oxalite
+oxalodiacetic
+oxalonitril
+oxalonitrile
+oxaluramid
+oxaluramide
+oxalurate
+oxaluria
+oxaluric
+oxalyl
+oxalylurea
+oxamate
+oxamethane
+oxamic
+oxamid
+oxamide
+oxamidine
+oxammite
+oxan
+oxanate
+oxane
+oxanic
+oxanilate
+oxanilic
+oxanilide
+oxazine
+oxazole
+oxbane
+oxberry
+oxbird
+oxbiter
+oxblood
+oxbow
+oxboy
+oxbrake
+oxcart
+oxcheek
+oxdiacetic
+oxdiazole
+oxea
+oxeate
+oxen
+oxeote
+oxer
+oxetone
+oxeye
+oxfly
+Oxford
+Oxfordian
+Oxfordism
+Oxfordist
+oxgang
+oxgoad
+oxharrow
+oxhead
+oxheal
+oxheart
+oxhide
+oxhoft
+oxhorn
+oxhouse
+oxhuvud
+oxidability
+oxidable
+oxidant
+oxidase
+oxidate
+oxidation
+oxidational
+oxidative
+oxidator
+oxide
+oxidic
+oxidimetric
+oxidimetry
+oxidizability
+oxidizable
+oxidization
+oxidize
+oxidizement
+oxidizer
+oxidizing
+oxidoreductase
+oxidoreduction
+oxidulated
+oximate
+oximation
+oxime
+oxland
+oxlike
+oxlip
+oxman
+oxmanship
+oxoindoline
+Oxonian
+oxonic
+oxonium
+Oxonolatry
+oxozone
+oxozonide
+oxpecker
+oxphony
+oxreim
+oxshoe
+oxskin
+oxtail
+oxter
+oxtongue
+oxwort
+oxy
+oxyacanthine
+oxyacanthous
+oxyacetylene
+oxyacid
+Oxyaena
+Oxyaenidae
+oxyaldehyde
+oxyamine
+oxyanthracene
+oxyanthraquinone
+oxyaphia
+oxyaster
+oxybaphon
+Oxybaphus
+oxybenzaldehyde
+oxybenzene
+oxybenzoic
+oxybenzyl
+oxyberberine
+oxyblepsia
+oxybromide
+oxybutyria
+oxybutyric
+oxycalcium
+oxycalorimeter
+oxycamphor
+oxycaproic
+oxycarbonate
+oxycellulose
+oxycephalic
+oxycephalism
+oxycephalous
+oxycephaly
+oxychlorate
+oxychloric
+oxychloride
+oxycholesterol
+oxychromatic
+oxychromatin
+oxychromatinic
+oxycinnamic
+oxycobaltammine
+Oxycoccus
+oxycopaivic
+oxycoumarin
+oxycrate
+oxycyanide
+oxydactyl
+Oxydendrum
+oxydiact
+oxyesthesia
+oxyether
+oxyethyl
+oxyfatty
+oxyfluoride
+oxygas
+oxygen
+oxygenant
+oxygenate
+oxygenation
+oxygenator
+oxygenerator
+oxygenic
+oxygenicity
+oxygenium
+oxygenizable
+oxygenize
+oxygenizement
+oxygenizer
+oxygenous
+oxygeusia
+oxygnathous
+oxyhalide
+oxyhaloid
+oxyhematin
+oxyhemocyanin
+oxyhemoglobin
+oxyhexactine
+oxyhexaster
+oxyhydrate
+oxyhydric
+oxyhydrogen
+oxyiodide
+oxyketone
+oxyl
+Oxylabracidae
+Oxylabrax
+oxyluciferin
+oxyluminescence
+oxyluminescent
+oxymandelic
+oxymel
+oxymethylene
+oxymoron
+oxymuriate
+oxymuriatic
+oxynaphthoic
+oxynaphtoquinone
+oxynarcotine
+oxyneurin
+oxyneurine
+oxynitrate
+oxyntic
+oxyophitic
+oxyopia
+Oxyopidae
+oxyosphresia
+oxypetalous
+oxyphenol
+oxyphenyl
+oxyphile
+oxyphilic
+oxyphilous
+oxyphonia
+oxyphosphate
+oxyphthalic
+oxyphyllous
+oxyphyte
+oxypicric
+Oxypolis
+oxyproline
+oxypropionic
+oxypurine
+oxypycnos
+oxyquinaseptol
+oxyquinoline
+oxyquinone
+oxyrhine
+oxyrhinous
+oxyrhynch
+oxyrhynchous
+oxyrhynchus
+Oxyrrhyncha
+oxyrrhynchid
+oxysalicylic
+oxysalt
+oxystearic
+Oxystomata
+oxystomatous
+oxystome
+oxysulphate
+oxysulphide
+oxyterpene
+oxytocia
+oxytocic
+oxytocin
+oxytocous
+oxytoluene
+oxytoluic
+oxytone
+oxytonesis
+oxytonical
+oxytonize
+Oxytricha
+Oxytropis
+oxytylotate
+oxytylote
+oxyuriasis
+oxyuricide
+Oxyuridae
+oxyurous
+oxywelding
+Oyana
+oyapock
+oyer
+oyster
+oysterage
+oysterbird
+oystered
+oysterer
+oysterfish
+oystergreen
+oysterhood
+oysterhouse
+oystering
+oysterish
+oysterishness
+oysterlike
+oysterling
+oysterman
+oysterous
+oysterroot
+oysterseed
+oystershell
+oysterwife
+oysterwoman
+Ozan
+Ozark
+ozarkite
+ozena
+Ozias
+ozobrome
+ozocerite
+ozokerit
+ozokerite
+ozonate
+ozonation
+ozonator
+ozone
+ozoned
+ozonic
+ozonide
+ozoniferous
+ozonification
+ozonify
+Ozonium
+ozonization
+ozonize
+ozonizer
+ozonometer
+ozonometry
+ozonoscope
+ozonoscopic
+ozonous
+ozophen
+ozophene
+ozostomia
+ozotype
+P
+p
+pa
+paal
+paar
+paauw
+Paba
+pabble
+Pablo
+pablo
+pabouch
+pabular
+pabulary
+pabulation
+pabulatory
+pabulous
+pabulum
+pac
+paca
+pacable
+Pacaguara
+pacate
+pacation
+pacative
+pacay
+pacaya
+Paccanarist
+Pacchionian
+Pace
+pace
+paceboard
+paced
+pacemaker
+pacemaking
+pacer
+pachak
+pachisi
+pachnolite
+pachometer
+Pachomian
+Pachons
+Pacht
+pachyacria
+pachyaemia
+pachyblepharon
+pachycarpous
+pachycephal
+pachycephalia
+pachycephalic
+pachycephalous
+pachycephaly
+pachychilia
+pachycholia
+pachychymia
+pachycladous
+pachydactyl
+pachydactylous
+pachydactyly
+pachyderm
+pachyderma
+pachydermal
+Pachydermata
+pachydermatocele
+pachydermatoid
+pachydermatosis
+pachydermatous
+pachydermatously
+pachydermia
+pachydermial
+pachydermic
+pachydermoid
+pachydermous
+pachyemia
+pachyglossal
+pachyglossate
+pachyglossia
+pachyglossous
+pachyhaemia
+pachyhaemic
+pachyhaemous
+pachyhematous
+pachyhemia
+pachyhymenia
+pachyhymenic
+Pachylophus
+pachylosis
+Pachyma
+pachymenia
+pachymenic
+pachymeningitic
+pachymeningitis
+pachymeninx
+pachymeter
+pachynathous
+pachynema
+pachynsis
+pachyntic
+pachyodont
+pachyotia
+pachyotous
+pachyperitonitis
+pachyphyllous
+pachypleuritic
+pachypod
+pachypodous
+pachypterous
+Pachyrhizus
+pachyrhynchous
+pachysalpingitis
+Pachysandra
+pachysaurian
+pachysomia
+pachysomous
+pachystichous
+Pachystima
+pachytene
+pachytrichous
+Pachytylus
+pachyvaginitis
+pacifiable
+pacific
+pacifical
+pacifically
+pacificate
+pacification
+pacificator
+pacificatory
+pacificism
+pacificist
+pacificity
+pacifier
+pacifism
+pacifist
+pacifistic
+pacifistically
+pacify
+pacifyingly
+Pacinian
+pack
+packable
+package
+packbuilder
+packcloth
+packer
+packery
+packet
+packhouse
+packless
+packly
+packmaker
+packmaking
+packman
+packmanship
+packness
+packsack
+packsaddle
+packstaff
+packthread
+packwall
+packwaller
+packware
+packway
+paco
+Pacolet
+pacouryuva
+pact
+paction
+pactional
+pactionally
+Pactolian
+Pactolus
+pad
+padcloth
+Padda
+padder
+padding
+paddle
+paddlecock
+paddled
+paddlefish
+paddlelike
+paddler
+paddlewood
+paddling
+paddock
+paddockride
+paddockstone
+paddockstool
+Paddy
+paddy
+paddybird
+Paddyism
+paddymelon
+Paddywack
+paddywatch
+Paddywhack
+paddywhack
+padella
+padfoot
+padge
+Padina
+padishah
+padle
+padlike
+padlock
+padmasana
+padmelon
+padnag
+padpiece
+Padraic
+Padraig
+padre
+padroadist
+padroado
+padronism
+padstone
+padtree
+Paduan
+Paduanism
+paduasoy
+Padus
+paean
+paeanism
+paeanize
+paedarchy
+paedatrophia
+paedatrophy
+paediatry
+paedogenesis
+paedogenetic
+paedometer
+paedometrical
+paedomorphic
+paedomorphism
+paedonymic
+paedonymy
+paedopsychologist
+paedotribe
+paedotrophic
+paedotrophist
+paedotrophy
+paegel
+paegle
+Paelignian
+paenula
+paeon
+Paeonia
+Paeoniaceae
+Paeonian
+paeonic
+paetrick
+paga
+pagan
+Paganalia
+Paganalian
+pagandom
+paganic
+paganical
+paganically
+paganish
+paganishly
+paganism
+paganist
+paganistic
+paganity
+paganization
+paganize
+paganizer
+paganly
+paganry
+pagatpat
+Page
+page
+pageant
+pageanted
+pageanteer
+pageantic
+pageantry
+pagedom
+pageful
+pagehood
+pageless
+pagelike
+pager
+pageship
+pagina
+paginal
+paginary
+paginate
+pagination
+pagiopod
+Pagiopoda
+pagoda
+pagodalike
+pagodite
+pagoscope
+pagrus
+Paguma
+pagurian
+pagurid
+Paguridae
+Paguridea
+pagurine
+Pagurinea
+paguroid
+Paguroidea
+Pagurus
+pagus
+pah
+paha
+Pahareen
+Pahari
+Paharia
+pahi
+Pahlavi
+pahlavi
+pahmi
+paho
+pahoehoe
+Pahouin
+pahutan
+Paiconeca
+paideutic
+paideutics
+paidological
+paidologist
+paidology
+paidonosology
+paigle
+paik
+pail
+pailful
+paillasse
+paillette
+pailletted
+pailou
+paimaneh
+pain
+pained
+painful
+painfully
+painfulness
+paining
+painingly
+painkiller
+painless
+painlessly
+painlessness
+painproof
+painstaker
+painstaking
+painstakingly
+painstakingness
+painsworthy
+paint
+paintability
+paintable
+paintableness
+paintably
+paintbox
+paintbrush
+painted
+paintedness
+painter
+painterish
+painterlike
+painterly
+paintership
+paintiness
+painting
+paintingness
+paintless
+paintpot
+paintproof
+paintress
+paintrix
+paintroot
+painty
+paip
+pair
+paired
+pairedness
+pairer
+pairment
+pairwise
+pais
+paisa
+paisanite
+Paisley
+Paiute
+paiwari
+pajahuello
+pajama
+pajamaed
+pajock
+Pajonism
+Pakawa
+Pakawan
+pakchoi
+pakeha
+Pakhpuluk
+Pakhtun
+Pakistani
+paktong
+pal
+Pala
+palace
+palaced
+palacelike
+palaceous
+palaceward
+palacewards
+paladin
+palaeanthropic
+Palaearctic
+Palaeechini
+palaeechinoid
+Palaeechinoidea
+palaeechinoidean
+palaeentomology
+palaeethnologic
+palaeethnological
+palaeethnologist
+palaeethnology
+Palaeeudyptes
+Palaeic
+palaeichthyan
+Palaeichthyes
+palaeichthyic
+Palaemon
+palaemonid
+Palaemonidae
+palaemonoid
+palaeoalchemical
+palaeoanthropic
+palaeoanthropography
+palaeoanthropology
+Palaeoanthropus
+palaeoatavism
+palaeoatavistic
+palaeobiogeography
+palaeobiologist
+palaeobiology
+palaeobotanic
+palaeobotanical
+palaeobotanically
+palaeobotanist
+palaeobotany
+Palaeocarida
+palaeoceanography
+Palaeocene
+palaeochorology
+palaeoclimatic
+palaeoclimatology
+Palaeoconcha
+palaeocosmic
+palaeocosmology
+Palaeocrinoidea
+palaeocrystal
+palaeocrystallic
+palaeocrystalline
+palaeocrystic
+palaeocyclic
+palaeodendrologic
+palaeodendrological
+palaeodendrologically
+palaeodendrologist
+palaeodendrology
+Palaeodictyoptera
+palaeodictyopteran
+palaeodictyopteron
+palaeodictyopterous
+palaeoencephalon
+palaeoeremology
+palaeoethnic
+palaeoethnologic
+palaeoethnological
+palaeoethnologist
+palaeoethnology
+palaeofauna
+Palaeogaea
+Palaeogaean
+palaeogene
+palaeogenesis
+palaeogenetic
+palaeogeographic
+palaeogeography
+palaeoglaciology
+palaeoglyph
+Palaeognathae
+palaeognathic
+palaeognathous
+palaeograph
+palaeographer
+palaeographic
+palaeographical
+palaeographically
+palaeographist
+palaeography
+palaeoherpetologist
+palaeoherpetology
+palaeohistology
+palaeohydrography
+palaeolatry
+palaeolimnology
+palaeolith
+palaeolithic
+palaeolithical
+palaeolithist
+palaeolithoid
+palaeolithy
+palaeological
+palaeologist
+palaeology
+Palaeomastodon
+palaeometallic
+palaeometeorological
+palaeometeorology
+Palaeonemertea
+palaeonemertean
+palaeonemertine
+Palaeonemertinea
+Palaeonemertini
+palaeoniscid
+Palaeoniscidae
+palaeoniscoid
+Palaeoniscum
+Palaeoniscus
+palaeontographic
+palaeontographical
+palaeontography
+palaeopathology
+palaeopedology
+palaeophile
+palaeophilist
+Palaeophis
+palaeophysiography
+palaeophysiology
+palaeophytic
+palaeophytological
+palaeophytologist
+palaeophytology
+palaeoplain
+palaeopotamology
+palaeopsychic
+palaeopsychological
+palaeopsychology
+palaeoptychology
+Palaeornis
+Palaeornithinae
+palaeornithine
+palaeornithological
+palaeornithology
+palaeosaur
+Palaeosaurus
+palaeosophy
+Palaeospondylus
+Palaeostraca
+palaeostracan
+palaeostriatal
+palaeostriatum
+palaeostylic
+palaeostyly
+palaeotechnic
+palaeothalamus
+Palaeothentes
+Palaeothentidae
+palaeothere
+palaeotherian
+Palaeotheriidae
+palaeotheriodont
+palaeotherioid
+Palaeotherium
+palaeotheroid
+Palaeotropical
+palaeotype
+palaeotypic
+palaeotypical
+palaeotypically
+palaeotypographical
+palaeotypographist
+palaeotypography
+palaeovolcanic
+Palaeozoic
+palaeozoological
+palaeozoologist
+palaeozoology
+palaestra
+palaestral
+palaestrian
+palaestric
+palaestrics
+palaetiological
+palaetiologist
+palaetiology
+palafitte
+palagonite
+palagonitic
+Palaic
+Palaihnihan
+palaiotype
+palaite
+palama
+palamate
+palame
+Palamedea
+palamedean
+Palamedeidae
+Palamite
+Palamitism
+palampore
+palander
+palanka
+palankeen
+palanquin
+palapalai
+Palapteryx
+Palaquium
+palar
+palas
+palatability
+palatable
+palatableness
+palatably
+palatal
+palatalism
+palatality
+palatalization
+palatalize
+palate
+palated
+palateful
+palatefulness
+palateless
+palatelike
+palatial
+palatially
+palatialness
+palatian
+palatic
+palatinal
+palatinate
+palatine
+palatineship
+Palatinian
+palatinite
+palation
+palatist
+palatitis
+palative
+palatization
+palatize
+palatoalveolar
+palatodental
+palatoglossal
+palatoglossus
+palatognathous
+palatogram
+palatograph
+palatography
+palatomaxillary
+palatometer
+palatonasal
+palatopharyngeal
+palatopharyngeus
+palatoplasty
+palatoplegia
+palatopterygoid
+palatoquadrate
+palatorrhaphy
+palatoschisis
+Palatua
+Palau
+Palaung
+palaver
+palaverer
+palaverist
+palaverment
+palaverous
+palay
+palazzi
+palberry
+palch
+pale
+palea
+paleaceous
+paleanthropic
+Palearctic
+paleate
+palebelly
+palebuck
+palechinoid
+paled
+paledness
+paleencephalon
+paleentomology
+paleethnographer
+paleethnologic
+paleethnological
+paleethnologist
+paleethnology
+paleface
+palehearted
+paleichthyologic
+paleichthyologist
+paleichthyology
+paleiform
+palely
+Paleman
+paleness
+Palenque
+paleoalchemical
+paleoandesite
+paleoanthropic
+paleoanthropography
+paleoanthropological
+paleoanthropologist
+paleoanthropology
+Paleoanthropus
+paleoatavism
+paleoatavistic
+paleobiogeography
+paleobiologist
+paleobiology
+paleobotanic
+paleobotanical
+paleobotanically
+paleobotanist
+paleobotany
+paleoceanography
+Paleocene
+paleochorology
+paleoclimatic
+paleoclimatologist
+paleoclimatology
+Paleoconcha
+paleocosmic
+paleocosmology
+paleocrystal
+paleocrystallic
+paleocrystalline
+paleocrystic
+paleocyclic
+paleodendrologic
+paleodendrological
+paleodendrologically
+paleodendrologist
+paleodendrology
+paleoecologist
+paleoecology
+paleoencephalon
+paleoeremology
+paleoethnic
+paleoethnography
+paleoethnologic
+paleoethnological
+paleoethnologist
+paleoethnology
+paleofauna
+Paleogene
+paleogenesis
+paleogenetic
+paleogeographic
+paleogeography
+paleoglaciology
+paleoglyph
+paleograph
+paleographer
+paleographic
+paleographical
+paleographically
+paleographist
+paleography
+paleoherpetologist
+paleoherpetology
+paleohistology
+paleohydrography
+paleoichthyology
+paleokinetic
+paleola
+paleolate
+paleolatry
+paleolimnology
+paleolith
+paleolithic
+paleolithical
+paleolithist
+paleolithoid
+paleolithy
+paleological
+paleologist
+paleology
+paleomammalogy
+paleometallic
+paleometeorological
+paleometeorology
+paleontographic
+paleontographical
+paleontography
+paleontologic
+paleontological
+paleontologically
+paleontologist
+paleontology
+paleopathology
+paleopedology
+paleophysiography
+paleophysiology
+paleophytic
+paleophytological
+paleophytologist
+paleophytology
+paleopicrite
+paleoplain
+paleopotamoloy
+paleopsychic
+paleopsychological
+paleopsychology
+paleornithological
+paleornithology
+paleostriatal
+paleostriatum
+paleostylic
+paleostyly
+paleotechnic
+paleothalamus
+paleothermal
+paleothermic
+Paleotropical
+paleovolcanic
+paleoytterbium
+Paleozoic
+paleozoological
+paleozoologist
+paleozoology
+paler
+Palermitan
+Palermo
+Pales
+Palesman
+Palestinian
+palestra
+palestral
+palestrian
+palestric
+palet
+paletiology
+paletot
+palette
+paletz
+palewise
+palfrey
+palfreyed
+palgat
+Pali
+pali
+Palicourea
+palification
+paliform
+paligorskite
+palikar
+palikarism
+palikinesia
+palila
+palilalia
+Palilia
+Palilicium
+palillogia
+palilogetic
+palilogy
+palimbacchic
+palimbacchius
+palimpsest
+palimpsestic
+palinal
+palindrome
+palindromic
+palindromical
+palindromically
+palindromist
+paling
+palingenesia
+palingenesian
+palingenesis
+palingenesist
+palingenesy
+palingenetic
+palingenetically
+palingenic
+palingenist
+palingeny
+palinode
+palinodial
+palinodic
+palinodist
+palinody
+palinurid
+Palinuridae
+palinuroid
+Palinurus
+paliphrasia
+palirrhea
+palisade
+palisading
+palisado
+palisander
+palisfy
+palish
+palistrophia
+Paliurus
+palkee
+pall
+palla
+palladammine
+Palladia
+palladia
+Palladian
+Palladianism
+palladic
+palladiferous
+palladinize
+palladion
+palladious
+Palladium
+palladium
+palladiumize
+palladize
+palladodiammine
+palladosammine
+palladous
+pallae
+pallah
+pallall
+pallanesthesia
+Pallas
+pallasite
+pallbearer
+palled
+pallescence
+pallescent
+pallesthesia
+pallet
+palleting
+palletize
+pallette
+pallholder
+palli
+pallial
+palliard
+palliasse
+Palliata
+palliata
+palliate
+palliation
+palliative
+palliatively
+palliator
+palliatory
+pallid
+pallidiflorous
+pallidipalpate
+palliditarsate
+pallidity
+pallidiventrate
+pallidly
+pallidness
+palliness
+Palliobranchiata
+palliobranchiate
+palliocardiac
+pallioessexite
+pallion
+palliopedal
+palliostratus
+pallium
+Palliyan
+pallograph
+pallographic
+pallometric
+pallone
+pallor
+Pallu
+Palluites
+pallwise
+pally
+palm
+palma
+Palmaceae
+palmaceous
+palmad
+Palmae
+palmanesthesia
+palmar
+palmarian
+palmary
+palmate
+palmated
+palmately
+palmatifid
+palmatiform
+palmatilobate
+palmatilobed
+palmation
+palmatiparted
+palmatipartite
+palmatisect
+palmatisected
+palmature
+palmcrist
+palmed
+Palmella
+Palmellaceae
+palmellaceous
+palmelloid
+palmer
+palmerite
+palmery
+palmesthesia
+palmette
+palmetto
+palmetum
+palmful
+palmicolous
+palmiferous
+palmification
+palmiform
+palmigrade
+palmilobate
+palmilobated
+palmilobed
+palminervate
+palminerved
+palmiped
+Palmipedes
+palmipes
+palmist
+palmister
+palmistry
+palmitate
+palmite
+palmitic
+palmitin
+palmitinic
+palmito
+palmitoleic
+palmitone
+palmiveined
+palmivorous
+palmlike
+palmo
+palmodic
+palmoscopy
+palmospasmus
+palmula
+palmus
+palmwise
+palmwood
+palmy
+palmyra
+Palmyrene
+Palmyrenian
+palolo
+palombino
+palometa
+palomino
+palosapis
+palouser
+paloverde
+palp
+palpability
+palpable
+palpableness
+palpably
+palpacle
+palpal
+palpate
+palpation
+palpatory
+palpebra
+palpebral
+palpebrate
+palpebration
+palpebritis
+palped
+palpi
+palpicorn
+Palpicornia
+palpifer
+palpiferous
+palpiform
+palpiger
+palpigerous
+palpitant
+palpitate
+palpitatingly
+palpitation
+palpless
+palpocil
+palpon
+palpulus
+palpus
+palsgrave
+palsgravine
+palsied
+palsification
+palstave
+palster
+palsy
+palsylike
+palsywort
+palt
+Palta
+palter
+palterer
+palterly
+paltrily
+paltriness
+paltry
+paludal
+paludament
+paludamentum
+paludial
+paludian
+paludic
+Paludicella
+Paludicolae
+paludicole
+paludicoline
+paludicolous
+paludiferous
+Paludina
+paludinal
+paludine
+paludinous
+paludism
+paludose
+paludous
+paludrin
+paludrine
+palule
+palulus
+Palus
+palus
+palustral
+palustrian
+palustrine
+paly
+palynology
+Pam
+pam
+pambanmanche
+Pamela
+pament
+pameroon
+Pamir
+Pamiri
+Pamirian
+Pamlico
+pamment
+Pampanga
+Pampangan
+Pampango
+pampas
+pampean
+pamper
+pampered
+pamperedly
+pamperedness
+pamperer
+pamperize
+pampero
+pamphagous
+pampharmacon
+Pamphiliidae
+Pamphilius
+pamphlet
+pamphletage
+pamphletary
+pamphleteer
+pamphleter
+pamphletful
+pamphletic
+pamphletical
+pamphletize
+pamphletwise
+pamphysical
+pamphysicism
+pampilion
+pampiniform
+pampinocele
+pamplegia
+pampootee
+pampootie
+pampre
+pamprodactyl
+pamprodactylism
+pamprodactylous
+pampsychism
+pampsychist
+Pamunkey
+Pan
+pan
+panace
+Panacea
+panacea
+panacean
+panaceist
+panache
+panached
+panachure
+panada
+panade
+Panagia
+panagiarion
+Panak
+Panaka
+panama
+Panamaian
+Panaman
+Panamanian
+Panamano
+Panamic
+Panamint
+Panamist
+panapospory
+panarchic
+panarchy
+panaris
+panaritium
+panarteritis
+panarthritis
+panary
+panatela
+Panathenaea
+Panathenaean
+Panathenaic
+panatrophy
+panautomorphic
+panax
+Panayan
+Panayano
+panbabylonian
+panbabylonism
+Panboeotian
+pancake
+pancarditis
+panchama
+panchayat
+pancheon
+panchion
+panchromatic
+panchromatism
+panchromatization
+panchromatize
+panchway
+panclastic
+panconciliatory
+pancosmic
+pancosmism
+pancosmist
+pancratian
+pancratiast
+pancratiastic
+pancratic
+pancratical
+pancratically
+pancration
+pancratism
+pancratist
+pancratium
+pancreas
+pancreatalgia
+pancreatectomize
+pancreatectomy
+pancreatemphraxis
+pancreathelcosis
+pancreatic
+pancreaticoduodenal
+pancreaticoduodenostomy
+pancreaticogastrostomy
+pancreaticosplenic
+pancreatin
+pancreatism
+pancreatitic
+pancreatitis
+pancreatization
+pancreatize
+pancreatoduodenectomy
+pancreatoenterostomy
+pancreatogenic
+pancreatogenous
+pancreatoid
+pancreatolipase
+pancreatolith
+pancreatomy
+pancreatoncus
+pancreatopathy
+pancreatorrhagia
+pancreatotomy
+pancreectomy
+pancreozymin
+pancyclopedic
+pand
+panda
+pandal
+pandan
+Pandanaceae
+pandanaceous
+Pandanales
+Pandanus
+pandaram
+Pandarctos
+pandaric
+Pandarus
+pandation
+Pandean
+pandect
+Pandectist
+pandemia
+pandemian
+pandemic
+pandemicity
+pandemoniac
+Pandemoniacal
+Pandemonian
+pandemonic
+pandemonism
+Pandemonium
+pandemonium
+Pandemos
+pandemy
+pandenominational
+pander
+panderage
+panderer
+panderess
+panderism
+panderize
+panderly
+Panderma
+pandermite
+panderous
+pandership
+pandestruction
+pandiabolism
+pandiculation
+Pandion
+Pandionidae
+pandita
+pandle
+pandlewhew
+Pandora
+pandora
+Pandorea
+Pandoridae
+Pandorina
+Pandosto
+pandour
+pandowdy
+pandrop
+pandura
+pandurate
+pandurated
+panduriform
+pandy
+pane
+panecclesiastical
+paned
+panegoism
+panegoist
+panegyric
+panegyrical
+panegyrically
+panegyricize
+panegyricon
+panegyricum
+panegyris
+panegyrist
+panegyrize
+panegyrizer
+panegyry
+paneity
+panel
+panela
+panelation
+paneler
+paneless
+paneling
+panelist
+panellation
+panelling
+panelwise
+panelwork
+panentheism
+panesthesia
+panesthetic
+paneulogism
+panfil
+panfish
+panful
+pang
+Pangaea
+pangamic
+pangamous
+pangamously
+pangamy
+pangane
+Pangasinan
+pangen
+pangene
+pangenesis
+pangenetic
+pangenetically
+pangenic
+pangful
+pangi
+Pangium
+pangless
+panglessly
+panglima
+Pangloss
+Panglossian
+Panglossic
+pangolin
+pangrammatist
+Pangwe
+panhandle
+panhandler
+panharmonic
+panharmonicon
+panhead
+panheaded
+Panhellenic
+Panhellenios
+Panhellenism
+Panhellenist
+Panhellenium
+panhidrosis
+panhuman
+panhygrous
+panhyperemia
+panhysterectomy
+Pani
+panic
+panical
+panically
+panicful
+panichthyophagous
+panicked
+panicky
+panicle
+panicled
+paniclike
+panicmonger
+panicmongering
+paniconograph
+paniconographic
+paniconography
+Panicularia
+paniculate
+paniculated
+paniculately
+paniculitis
+Panicum
+panidiomorphic
+panidrosis
+panification
+panimmunity
+Paninean
+Panionia
+Panionian
+Panionic
+Paniquita
+Paniquitan
+panisc
+panisca
+paniscus
+panisic
+panivorous
+Panjabi
+panjandrum
+pank
+pankin
+pankration
+panleucopenia
+panlogical
+panlogism
+panlogistical
+panman
+panmelodicon
+panmelodion
+panmerism
+panmeristic
+panmixia
+panmixy
+panmnesia
+panmug
+panmyelophthisis
+Panna
+pannade
+pannage
+pannam
+pannationalism
+panne
+pannel
+panner
+pannery
+panneuritic
+panneuritis
+pannicle
+pannicular
+pannier
+panniered
+pannierman
+pannikin
+panning
+Pannonian
+Pannonic
+pannose
+pannosely
+pannum
+pannus
+pannuscorium
+Panoan
+panocha
+panoche
+panococo
+panoistic
+panomphaic
+panomphean
+panomphic
+panophobia
+panophthalmia
+panophthalmitis
+panoplied
+panoplist
+panoply
+panoptic
+panoptical
+panopticon
+panoram
+panorama
+panoramic
+panoramical
+panoramically
+panoramist
+panornithic
+Panorpa
+Panorpatae
+panorpian
+panorpid
+Panorpidae
+Panos
+panosteitis
+panostitis
+panotitis
+panotype
+panouchi
+panpathy
+panpharmacon
+panphenomenalism
+panphobia
+Panpipe
+panplegia
+panpneumatism
+panpolism
+panpsychic
+panpsychism
+panpsychist
+panpsychistic
+panscientist
+pansciolism
+pansciolist
+pansclerosis
+pansclerotic
+panse
+pansexism
+pansexual
+pansexualism
+pansexualist
+pansexuality
+pansexualize
+panshard
+panside
+pansideman
+pansied
+pansinuitis
+pansinusitis
+pansmith
+pansophic
+pansophical
+pansophically
+pansophism
+pansophist
+pansophy
+panspermatism
+panspermatist
+panspermia
+panspermic
+panspermism
+panspermist
+panspermy
+pansphygmograph
+panstereorama
+pansy
+pansylike
+pant
+pantachromatic
+pantacosm
+pantagamy
+pantagogue
+pantagraph
+pantagraphic
+pantagraphical
+Pantagruel
+Pantagruelian
+Pantagruelic
+Pantagruelically
+Pantagrueline
+pantagruelion
+Pantagruelism
+Pantagruelist
+Pantagruelistic
+Pantagruelistical
+Pantagruelize
+pantaleon
+pantaletless
+pantalets
+pantaletted
+pantalgia
+pantalon
+Pantalone
+pantaloon
+pantalooned
+pantaloonery
+pantaloons
+pantameter
+pantamorph
+pantamorphia
+pantamorphic
+pantanemone
+pantanencephalia
+pantanencephalic
+pantaphobia
+pantarbe
+pantarchy
+pantas
+pantascope
+pantascopic
+Pantastomatida
+Pantastomina
+pantatrophia
+pantatrophy
+pantatype
+pantechnic
+pantechnicon
+pantelegraph
+pantelegraphy
+panteleologism
+pantelephone
+pantelephonic
+Pantelis
+pantellerite
+panter
+panterer
+Pantheian
+pantheic
+pantheism
+pantheist
+pantheistic
+pantheistical
+pantheistically
+panthelematism
+panthelism
+pantheologist
+pantheology
+pantheon
+pantheonic
+pantheonization
+pantheonize
+panther
+pantheress
+pantherine
+pantherish
+pantherlike
+pantherwood
+pantheum
+pantie
+panties
+pantile
+pantiled
+pantiling
+panting
+pantingly
+pantisocracy
+pantisocrat
+pantisocratic
+pantisocratical
+pantisocratist
+pantle
+pantler
+panto
+pantochrome
+pantochromic
+pantochromism
+pantochronometer
+Pantocrator
+pantod
+Pantodon
+Pantodontidae
+pantoffle
+pantofle
+pantoganglitis
+pantogelastic
+pantoglossical
+pantoglot
+pantoglottism
+pantograph
+pantographer
+pantographic
+pantographical
+pantographically
+pantography
+pantoiatrical
+pantologic
+pantological
+pantologist
+pantology
+pantomancer
+pantometer
+pantometric
+pantometrical
+pantometry
+pantomime
+pantomimic
+pantomimical
+pantomimically
+pantomimicry
+pantomimish
+pantomimist
+pantomimus
+pantomnesia
+pantomnesic
+pantomorph
+pantomorphia
+pantomorphic
+panton
+pantoon
+pantopelagian
+pantophagic
+pantophagist
+pantophagous
+pantophagy
+pantophile
+pantophobia
+pantophobic
+pantophobous
+pantoplethora
+pantopod
+Pantopoda
+pantopragmatic
+pantopterous
+pantoscope
+pantoscopic
+pantosophy
+Pantostomata
+pantostomate
+pantostomatous
+pantostome
+pantotactic
+pantothenate
+pantothenic
+Pantotheria
+pantotherian
+pantotype
+pantoum
+pantropic
+pantropical
+pantry
+pantryman
+pantrywoman
+pants
+pantun
+panty
+pantywaist
+panung
+panurgic
+panurgy
+panyar
+Panzer
+panzoism
+panzootia
+panzootic
+panzooty
+Paola
+paolo
+paon
+pap
+papa
+papability
+papable
+papabot
+papacy
+papagallo
+Papago
+papain
+papal
+papalism
+papalist
+papalistic
+papalization
+papalize
+papalizer
+papally
+papalty
+papane
+papaphobia
+papaphobist
+papaprelatical
+papaprelatist
+paparchical
+paparchy
+papaship
+Papaver
+Papaveraceae
+papaveraceous
+Papaverales
+papaverine
+papaverous
+papaw
+papaya
+Papayaceae
+papayaceous
+papayotin
+papboat
+pape
+papelonne
+paper
+paperback
+paperbark
+paperboard
+papered
+paperer
+paperful
+paperiness
+papering
+paperlike
+papermaker
+papermaking
+papermouth
+papern
+papershell
+paperweight
+papery
+papess
+papeterie
+papey
+Paphian
+Paphiopedilum
+Papiamento
+papicolar
+papicolist
+Papilio
+Papilionaceae
+papilionaceous
+Papiliones
+papilionid
+Papilionidae
+Papilionides
+Papilioninae
+papilionine
+papilionoid
+Papilionoidea
+papilla
+papillae
+papillar
+papillary
+papillate
+papillated
+papillectomy
+papilledema
+papilliferous
+papilliform
+papillitis
+papilloadenocystoma
+papillocarcinoma
+papilloedema
+papilloma
+papillomatosis
+papillomatous
+papillon
+papilloretinitis
+papillosarcoma
+papillose
+papillosity
+papillote
+papillous
+papillulate
+papillule
+Papinachois
+Papio
+papion
+papish
+papisher
+papism
+Papist
+papist
+papistic
+papistical
+papistically
+papistlike
+papistly
+papistry
+papize
+papless
+papmeat
+papolater
+papolatrous
+papolatry
+papoose
+papooseroot
+Pappea
+pappescent
+pappi
+pappiferous
+pappiform
+pappose
+pappox
+pappus
+pappy
+papreg
+paprica
+paprika
+Papuan
+papula
+papular
+papulate
+papulated
+papulation
+papule
+papuliferous
+papuloerythematous
+papulopustular
+papulopustule
+papulose
+papulosquamous
+papulous
+papulovesicular
+papyr
+papyraceous
+papyral
+papyrean
+papyri
+papyrian
+papyrin
+papyrine
+papyritious
+papyrocracy
+papyrograph
+papyrographer
+papyrographic
+papyrography
+papyrological
+papyrologist
+papyrology
+papyrophobia
+papyroplastics
+papyrotamia
+papyrotint
+papyrotype
+papyrus
+Paque
+paquet
+par
+para
+paraaminobenzoic
+parabanate
+parabanic
+parabaptism
+parabaptization
+parabasal
+parabasic
+parabasis
+parabema
+parabematic
+parabenzoquinone
+parabiosis
+parabiotic
+parablast
+parablastic
+parable
+parablepsia
+parablepsis
+parablepsy
+parableptic
+parabola
+parabolanus
+parabolic
+parabolical
+parabolicalism
+parabolically
+parabolicness
+paraboliform
+parabolist
+parabolization
+parabolize
+parabolizer
+paraboloid
+paraboloidal
+parabomb
+parabotulism
+parabranchia
+parabranchial
+parabranchiate
+parabulia
+parabulic
+paracanthosis
+paracarmine
+paracasein
+paracaseinate
+Paracelsian
+Paracelsianism
+Paracelsic
+Paracelsist
+Paracelsistic
+Paracelsus
+paracentesis
+paracentral
+paracentric
+paracentrical
+paracephalus
+paracerebellar
+paracetaldehyde
+parachaplain
+paracholia
+parachor
+parachordal
+parachrea
+parachroia
+parachroma
+parachromatism
+parachromatophorous
+parachromatopsia
+parachromatosis
+parachrome
+parachromoparous
+parachromophoric
+parachromophorous
+parachronism
+parachronistic
+parachrose
+parachute
+parachutic
+parachutism
+parachutist
+paraclete
+paracmasis
+paracme
+paracoele
+paracoelian
+paracolitis
+paracolon
+paracolpitis
+paracolpium
+paracondyloid
+paracone
+paraconic
+paraconid
+paraconscious
+paracorolla
+paracotoin
+paracoumaric
+paracresol
+Paracress
+paracusia
+paracusic
+paracyanogen
+paracyesis
+paracymene
+paracystic
+paracystitis
+paracystium
+parade
+paradeful
+paradeless
+paradelike
+paradenitis
+paradental
+paradentitis
+paradentium
+parader
+paraderm
+paradiastole
+paradiazine
+paradichlorbenzene
+paradichlorbenzol
+paradichlorobenzene
+paradichlorobenzol
+paradidymal
+paradidymis
+paradigm
+paradigmatic
+paradigmatical
+paradigmatically
+paradigmatize
+parading
+paradingly
+paradiplomatic
+paradisaic
+paradisaically
+paradisal
+paradise
+Paradisea
+paradisean
+Paradiseidae
+Paradiseinae
+Paradisia
+paradisiac
+paradisiacal
+paradisiacally
+paradisial
+paradisian
+paradisic
+paradisical
+parado
+paradoctor
+parados
+paradoses
+paradox
+paradoxal
+paradoxer
+paradoxial
+paradoxic
+paradoxical
+paradoxicalism
+paradoxicality
+paradoxically
+paradoxicalness
+paradoxician
+Paradoxides
+paradoxidian
+paradoxism
+paradoxist
+paradoxographer
+paradoxographical
+paradoxology
+paradoxure
+Paradoxurinae
+paradoxurine
+Paradoxurus
+paradoxy
+paradromic
+paraenesis
+paraenesize
+paraenetic
+paraenetical
+paraengineer
+paraffin
+paraffine
+paraffiner
+paraffinic
+paraffinize
+paraffinoid
+paraffiny
+paraffle
+parafle
+parafloccular
+paraflocculus
+paraform
+paraformaldehyde
+parafunction
+paragammacism
+paraganglion
+paragaster
+paragastral
+paragastric
+paragastrula
+paragastrular
+parage
+paragenesia
+paragenesis
+paragenetic
+paragenic
+paragerontic
+parageusia
+parageusic
+parageusis
+paragglutination
+paraglenal
+paraglobin
+paraglobulin
+paraglossa
+paraglossal
+paraglossate
+paraglossia
+paraglycogen
+paragnath
+paragnathism
+paragnathous
+paragnathus
+paragneiss
+paragnosia
+paragoge
+paragogic
+paragogical
+paragogically
+paragogize
+paragon
+paragonimiasis
+Paragonimus
+paragonite
+paragonitic
+paragonless
+paragram
+paragrammatist
+paragraph
+paragrapher
+paragraphia
+paragraphic
+paragraphical
+paragraphically
+paragraphism
+paragraphist
+paragraphistical
+paragraphize
+Paraguay
+Paraguayan
+parah
+paraheliotropic
+paraheliotropism
+parahematin
+parahemoglobin
+parahepatic
+Parahippus
+parahopeite
+parahormone
+parahydrogen
+paraiba
+Paraiyan
+parakeet
+parakeratosis
+parakilya
+parakinesia
+parakinetic
+paralactate
+paralalia
+paralambdacism
+paralambdacismus
+paralaurionite
+paraldehyde
+parale
+paralectotype
+paraleipsis
+paralepsis
+paralexia
+paralexic
+paralgesia
+paralgesic
+paralinin
+paralipomena
+Paralipomenon
+paralipsis
+paralitical
+parallactic
+parallactical
+parallactically
+parallax
+parallel
+parallelable
+parallelepiped
+parallelepipedal
+parallelepipedic
+parallelepipedon
+parallelepipedonal
+paralleler
+parallelinervate
+parallelinerved
+parallelinervous
+parallelism
+parallelist
+parallelistic
+parallelith
+parallelization
+parallelize
+parallelizer
+parallelless
+parallelly
+parallelodrome
+parallelodromous
+parallelogram
+parallelogrammatic
+parallelogrammatical
+parallelogrammic
+parallelogrammical
+parallelograph
+parallelometer
+parallelopiped
+parallelopipedon
+parallelotropic
+parallelotropism
+parallelwise
+parallepipedous
+paralogia
+paralogical
+paralogician
+paralogism
+paralogist
+paralogistic
+paralogize
+paralogy
+paraluminite
+paralyses
+paralysis
+paralytic
+paralytical
+paralytically
+paralyzant
+paralyzation
+paralyze
+paralyzedly
+paralyzer
+paralyzingly
+param
+paramagnet
+paramagnetic
+paramagnetism
+paramandelic
+paramarine
+paramastigate
+paramastitis
+paramastoid
+paramatta
+Paramecidae
+Paramecium
+paramedian
+paramelaconite
+paramenia
+parament
+paramere
+parameric
+parameron
+paramese
+paramesial
+parameter
+parametric
+parametrical
+parametritic
+parametritis
+parametrium
+paramide
+paramilitary
+paramimia
+paramine
+paramiographer
+paramitome
+paramnesia
+paramo
+Paramoecium
+paramorph
+paramorphia
+paramorphic
+paramorphine
+paramorphism
+paramorphosis
+paramorphous
+paramount
+paramountcy
+paramountly
+paramountness
+paramountship
+paramour
+paramuthetic
+paramyelin
+paramylum
+paramyoclonus
+paramyosinogen
+paramyotone
+paramyotonia
+paranasal
+paranatellon
+parandrus
+paranema
+paranematic
+paranephric
+paranephritic
+paranephritis
+paranephros
+paranepionic
+paranete
+parang
+paranitraniline
+paranitrosophenol
+paranoia
+paranoiac
+paranoid
+paranoidal
+paranoidism
+paranomia
+paranormal
+paranosic
+paranthelion
+paranthracene
+Paranthropus
+paranuclear
+paranucleate
+paranucleic
+paranuclein
+paranucleinic
+paranucleus
+paranymph
+paranymphal
+parao
+paraoperation
+Parapaguridae
+paraparesis
+paraparetic
+parapathia
+parapathy
+parapegm
+parapegma
+paraperiodic
+parapet
+parapetalous
+parapeted
+parapetless
+paraph
+paraphasia
+paraphasic
+paraphemia
+paraphenetidine
+paraphenylene
+paraphenylenediamine
+parapherna
+paraphernal
+paraphernalia
+paraphernalian
+paraphia
+paraphilia
+paraphimosis
+paraphonia
+paraphonic
+paraphototropism
+paraphrasable
+paraphrase
+paraphraser
+paraphrasia
+paraphrasian
+paraphrasis
+paraphrasist
+paraphrast
+paraphraster
+paraphrastic
+paraphrastical
+paraphrastically
+paraphrenia
+paraphrenic
+paraphrenitis
+paraphyllium
+paraphysate
+paraphysical
+paraphysiferous
+paraphysis
+paraplasis
+paraplasm
+paraplasmic
+paraplastic
+paraplastin
+paraplectic
+paraplegia
+paraplegic
+paraplegy
+parapleuritis
+parapleurum
+parapod
+parapodial
+parapodium
+parapophysial
+parapophysis
+parapraxia
+parapraxis
+paraproctitis
+paraproctium
+paraprostatitis
+Parapsida
+parapsidal
+parapsidan
+parapsis
+parapsychical
+parapsychism
+parapsychological
+parapsychology
+parapsychosis
+parapteral
+parapteron
+parapterum
+paraquadrate
+paraquinone
+Pararctalia
+Pararctalian
+pararectal
+pararek
+parareka
+pararhotacism
+pararosaniline
+pararosolic
+pararthria
+parasaboteur
+parasalpingitis
+parasang
+parascene
+parascenium
+parasceve
+paraschematic
+parasecretion
+paraselene
+paraselenic
+parasemidin
+parasemidine
+parasexuality
+parashah
+parasigmatism
+parasigmatismus
+Parasita
+parasital
+parasitary
+parasite
+parasitelike
+parasitemia
+parasitic
+Parasitica
+parasitical
+parasitically
+parasiticalness
+parasiticidal
+parasiticide
+Parasitidae
+parasitism
+parasitize
+parasitogenic
+parasitoid
+parasitoidism
+parasitological
+parasitologist
+parasitology
+parasitophobia
+parasitosis
+parasitotrope
+parasitotropic
+parasitotropism
+parasitotropy
+paraskenion
+parasol
+parasoled
+parasolette
+paraspecific
+parasphenoid
+parasphenoidal
+paraspotter
+paraspy
+parastas
+parastatic
+parastemon
+parastemonal
+parasternal
+parasternum
+parastichy
+parastyle
+parasubphonate
+parasubstituted
+Parasuchia
+parasuchian
+parasympathetic
+parasympathomimetic
+parasynapsis
+parasynaptic
+parasynaptist
+parasyndesis
+parasynesis
+parasynetic
+parasynovitis
+parasynthesis
+parasynthetic
+parasyntheton
+parasyphilis
+parasyphilitic
+parasyphilosis
+parasystole
+paratactic
+paratactical
+paratactically
+paratartaric
+parataxis
+parate
+paraterminal
+Paratheria
+paratherian
+parathesis
+parathetic
+parathion
+parathormone
+parathymic
+parathyroid
+parathyroidal
+parathyroidectomize
+parathyroidectomy
+parathyroprival
+parathyroprivia
+parathyroprivic
+paratitla
+paratitles
+paratoloid
+paratoluic
+paratoluidine
+paratomial
+paratomium
+paratonic
+paratonically
+paratorium
+paratory
+paratracheal
+paratragedia
+paratragoedia
+paratransversan
+paratrichosis
+paratrimma
+paratriptic
+paratroop
+paratrooper
+paratrophic
+paratrophy
+paratuberculin
+paratuberculosis
+paratuberculous
+paratungstate
+paratungstic
+paratype
+paratyphlitis
+paratyphoid
+paratypic
+paratypical
+paratypically
+paravaginitis
+paravail
+paravane
+paravauxite
+paravent
+paravertebral
+paravesical
+paraxial
+paraxially
+paraxon
+paraxonic
+paraxylene
+Parazoa
+parazoan
+parazonium
+parbake
+Parbate
+parboil
+parbuckle
+parcel
+parceling
+parcellary
+parcellate
+parcellation
+parcelling
+parcellization
+parcellize
+parcelment
+parcelwise
+parcenary
+parcener
+parcenership
+parch
+parchable
+parchedly
+parchedness
+parcheesi
+parchemin
+parcher
+parchesi
+parching
+parchingly
+parchisi
+parchment
+parchmenter
+parchmentize
+parchmentlike
+parchmenty
+parchy
+parcidentate
+parciloquy
+parclose
+parcook
+pard
+pardalote
+Pardanthus
+pardao
+parded
+pardesi
+pardine
+pardner
+pardnomastic
+pardo
+pardon
+pardonable
+pardonableness
+pardonably
+pardonee
+pardoner
+pardoning
+pardonless
+pardonmonger
+pare
+paregoric
+Pareiasauri
+Pareiasauria
+pareiasaurian
+Pareiasaurus
+Pareioplitae
+parel
+parelectronomic
+parelectronomy
+parella
+paren
+parencephalic
+parencephalon
+parenchym
+parenchyma
+parenchymal
+parenchymatic
+parenchymatitis
+parenchymatous
+parenchymatously
+parenchyme
+parenchymous
+parent
+parentage
+parental
+Parentalia
+parentalism
+parentality
+parentally
+parentdom
+parentela
+parentelic
+parenteral
+parenterally
+parentheses
+parenthesis
+parenthesize
+parenthetic
+parenthetical
+parentheticality
+parenthetically
+parentheticalness
+parenthood
+parenticide
+parentless
+parentlike
+parentship
+Pareoean
+parepididymal
+parepididymis
+parepigastric
+parer
+parerethesis
+parergal
+parergic
+parergon
+paresis
+paresthesia
+paresthesis
+paresthetic
+parethmoid
+paretic
+paretically
+pareunia
+parfait
+parfilage
+parfleche
+parfocal
+pargana
+pargasite
+parge
+pargeboard
+parget
+pargeter
+pargeting
+pargo
+parhelia
+parheliacal
+parhelic
+parhelion
+parhomologous
+parhomology
+parhypate
+pari
+pariah
+pariahdom
+pariahism
+pariahship
+parial
+Parian
+parian
+Pariasauria
+Pariasaurus
+Paridae
+paridigitate
+paridrosis
+paries
+parietal
+Parietales
+Parietaria
+parietary
+parietes
+parietofrontal
+parietojugal
+parietomastoid
+parietoquadrate
+parietosphenoid
+parietosphenoidal
+parietosplanchnic
+parietosquamosal
+parietotemporal
+parietovaginal
+parietovisceral
+parify
+parigenin
+pariglin
+Parilia
+Parilicium
+parilla
+parillin
+parimutuel
+Parinarium
+parine
+paring
+paripinnate
+Paris
+parish
+parished
+parishen
+parishional
+parishionally
+parishionate
+parishioner
+parishionership
+Parisian
+Parisianism
+Parisianization
+Parisianize
+Parisianly
+Parisii
+parisis
+parisology
+parison
+parisonic
+paristhmic
+paristhmion
+parisyllabic
+parisyllabical
+Pariti
+Paritium
+parity
+parivincular
+park
+parka
+parkee
+parker
+parkin
+parking
+Parkinsonia
+Parkinsonism
+parkish
+parklike
+parkward
+parkway
+parky
+parlamento
+parlance
+parlando
+Parlatoria
+parlatory
+parlay
+parle
+parley
+parleyer
+parliament
+parliamental
+parliamentarian
+parliamentarianism
+parliamentarily
+parliamentariness
+parliamentarism
+parliamentarization
+parliamentarize
+parliamentary
+parliamenteer
+parliamenteering
+parliamenter
+parling
+parlish
+parlor
+parlorish
+parlormaid
+parlous
+parlously
+parlousness
+parly
+Parma
+parma
+parmacety
+parmak
+Parmelia
+Parmeliaceae
+parmeliaceous
+parmelioid
+Parmentiera
+Parmesan
+Parmese
+parnas
+Parnassia
+Parnassiaceae
+parnassiaceous
+Parnassian
+Parnassianism
+Parnassiinae
+Parnassism
+Parnassus
+parnel
+Parnellism
+Parnellite
+parnorpine
+paroarion
+paroarium
+paroccipital
+paroch
+parochial
+parochialic
+parochialism
+parochialist
+parochiality
+parochialization
+parochialize
+parochially
+parochialness
+parochin
+parochine
+parochiner
+parode
+parodiable
+parodial
+parodic
+parodical
+parodinia
+parodist
+parodistic
+parodistically
+parodize
+parodontitis
+parodos
+parody
+parodyproof
+paroecious
+paroeciously
+paroeciousness
+paroecism
+paroecy
+paroemia
+paroemiac
+paroemiographer
+paroemiography
+paroemiologist
+paroemiology
+paroicous
+parol
+parolable
+parole
+parolee
+parolfactory
+paroli
+parolist
+paromoeon
+paromologetic
+paromologia
+paromology
+paromphalocele
+paromphalocelic
+paronomasia
+paronomasial
+paronomasian
+paronomasiastic
+paronomastical
+paronomastically
+paronychia
+paronychial
+paronychium
+paronym
+paronymic
+paronymization
+paronymize
+paronymous
+paronymy
+paroophoric
+paroophoritis
+paroophoron
+paropsis
+paroptesis
+paroptic
+parorchid
+parorchis
+parorexia
+Parosela
+parosmia
+parosmic
+parosteal
+parosteitis
+parosteosis
+parostosis
+parostotic
+Parotia
+parotic
+parotid
+parotidean
+parotidectomy
+parotiditis
+parotis
+parotitic
+parotitis
+parotoid
+parous
+parousia
+parousiamania
+parovarian
+parovariotomy
+parovarium
+paroxazine
+paroxysm
+paroxysmal
+paroxysmalist
+paroxysmally
+paroxysmic
+paroxysmist
+paroxytone
+paroxytonic
+paroxytonize
+parpal
+parquet
+parquetage
+parquetry
+parr
+Parra
+parrel
+parrhesia
+parrhesiastic
+parriable
+parricidal
+parricidally
+parricide
+parricided
+parricidial
+parricidism
+Parridae
+parrier
+parrock
+parrot
+parroter
+parrothood
+parrotism
+parrotize
+parrotlet
+parrotlike
+parrotry
+parrotwise
+parroty
+parry
+parsable
+parse
+parsec
+Parsee
+Parseeism
+parser
+parsettensite
+Parsi
+Parsic
+Parsiism
+parsimonious
+parsimoniously
+parsimoniousness
+parsimony
+Parsism
+parsley
+parsleylike
+parsleywort
+parsnip
+parson
+parsonage
+parsonarchy
+parsondom
+parsoned
+parsonese
+parsoness
+parsonet
+parsonhood
+parsonic
+parsonical
+parsonically
+parsoning
+parsonish
+parsonity
+parsonize
+parsonlike
+parsonly
+parsonolatry
+parsonology
+parsonry
+parsonship
+Parsonsia
+parsonsite
+parsony
+Part
+part
+partakable
+partake
+partaker
+partan
+partanfull
+partanhanded
+parted
+partedness
+parter
+parterre
+parterred
+partheniad
+Partheniae
+parthenian
+parthenic
+Parthenium
+parthenocarpelly
+parthenocarpic
+parthenocarpical
+parthenocarpically
+parthenocarpous
+parthenocarpy
+Parthenocissus
+parthenogenesis
+parthenogenetic
+parthenogenetically
+parthenogenic
+parthenogenitive
+parthenogenous
+parthenogeny
+parthenogonidium
+Parthenolatry
+parthenology
+Parthenon
+Parthenopaeus
+parthenoparous
+Parthenope
+Parthenopean
+Parthenos
+parthenosperm
+parthenospore
+Parthian
+partial
+partialism
+partialist
+partialistic
+partiality
+partialize
+partially
+partialness
+partiary
+partible
+particate
+participability
+participable
+participance
+participancy
+participant
+participantly
+participate
+participatingly
+participation
+participative
+participatively
+participator
+participatory
+participatress
+participial
+participiality
+participialize
+participially
+participle
+particle
+particled
+particular
+particularism
+particularist
+particularistic
+particularistically
+particularity
+particularization
+particularize
+particularly
+particularness
+particulate
+partigen
+partile
+partimembered
+partimen
+partinium
+partisan
+partisanism
+partisanize
+partisanship
+partite
+partition
+partitional
+partitionary
+partitioned
+partitioner
+partitioning
+partitionist
+partitionment
+partitive
+partitively
+partitura
+partiversal
+partivity
+partless
+partlet
+partly
+partner
+partnerless
+partnership
+parto
+partook
+partridge
+partridgeberry
+partridgelike
+partridgewood
+partridging
+partschinite
+parture
+parturiate
+parturience
+parturiency
+parturient
+parturifacient
+parturition
+parturitive
+party
+partyism
+partyist
+partykin
+partyless
+partymonger
+partyship
+Parukutu
+parulis
+parumbilical
+parure
+paruria
+Parus
+parvanimity
+parvenu
+parvenudom
+parvenuism
+parvicellular
+parviflorous
+parvifoliate
+parvifolious
+parvipotent
+parvirostrate
+parvis
+parviscient
+parvitude
+parvolin
+parvoline
+parvule
+paryphodrome
+pasan
+pasang
+Pascal
+Pasch
+Pascha
+paschal
+paschalist
+Paschaltide
+paschite
+pascoite
+pascuage
+pascual
+pascuous
+pasgarde
+pash
+pasha
+pashadom
+pashalik
+pashaship
+pashm
+pashmina
+Pashto
+pasi
+pasigraphic
+pasigraphical
+pasigraphy
+pasilaly
+Pasitelean
+pasmo
+Paspalum
+pasqueflower
+pasquil
+pasquilant
+pasquiler
+pasquilic
+Pasquin
+pasquin
+pasquinade
+pasquinader
+Pasquinian
+Pasquino
+pass
+passable
+passableness
+passably
+passade
+passado
+passage
+passageable
+passageway
+Passagian
+passalid
+Passalidae
+Passalus
+Passamaquoddy
+passant
+passback
+passbook
+Passe
+passe
+passee
+passegarde
+passement
+passementerie
+passen
+passenger
+Passer
+passer
+Passeres
+passeriform
+Passeriformes
+Passerina
+passerine
+passewa
+passibility
+passible
+passibleness
+Passiflora
+Passifloraceae
+passifloraceous
+Passiflorales
+passimeter
+passing
+passingly
+passingness
+passion
+passional
+passionary
+passionate
+passionately
+passionateness
+passionative
+passioned
+passionflower
+passionful
+passionfully
+passionfulness
+Passionist
+passionist
+passionless
+passionlessly
+passionlessness
+passionlike
+passionometer
+passionproof
+Passiontide
+passionwise
+passionwort
+passir
+passival
+passivate
+passivation
+passive
+passively
+passiveness
+passivism
+passivist
+passivity
+passkey
+passless
+passman
+passo
+passometer
+passout
+passover
+passoverish
+passpenny
+passport
+passportless
+passulate
+passulation
+passus
+passway
+passwoman
+password
+passworts
+passymeasure
+past
+paste
+pasteboard
+pasteboardy
+pasted
+pastedness
+pastedown
+pastel
+pastelist
+paster
+pasterer
+pastern
+pasterned
+pasteur
+Pasteurella
+Pasteurelleae
+pasteurellosis
+Pasteurian
+pasteurism
+pasteurization
+pasteurize
+pasteurizer
+pastiche
+pasticheur
+pastil
+pastile
+pastille
+pastime
+pastimer
+Pastinaca
+pastiness
+pasting
+pastness
+pastophor
+pastophorion
+pastophorium
+pastophorus
+pastor
+pastorage
+pastoral
+pastorale
+pastoralism
+pastoralist
+pastorality
+pastoralize
+pastorally
+pastoralness
+pastorate
+pastoress
+pastorhood
+pastorium
+pastorize
+pastorless
+pastorlike
+pastorling
+pastorly
+pastorship
+pastose
+pastosity
+pastrami
+pastry
+pastryman
+pasturability
+pasturable
+pasturage
+pastural
+pasture
+pastureless
+pasturer
+pasturewise
+pasty
+pasul
+Pat
+pat
+pata
+pataca
+patacao
+pataco
+patagial
+patagiate
+patagium
+Patagon
+patagon
+Patagones
+Patagonian
+pataka
+patamar
+patao
+patapat
+pataque
+Pataria
+Patarin
+Patarine
+Patarinism
+patas
+patashte
+Patavian
+patavinity
+patball
+patballer
+patch
+patchable
+patcher
+patchery
+patchily
+patchiness
+patchleaf
+patchless
+patchouli
+patchwise
+patchword
+patchwork
+patchworky
+patchy
+pate
+patefaction
+patefy
+patel
+patella
+patellar
+patellaroid
+patellate
+Patellidae
+patellidan
+patelliform
+patelline
+patellofemoral
+patelloid
+patellula
+patellulate
+paten
+patency
+patener
+patent
+patentability
+patentable
+patentably
+patentee
+patently
+patentor
+pater
+patera
+patercove
+paterfamiliar
+paterfamiliarly
+paterfamilias
+pateriform
+paterissa
+paternal
+paternalism
+paternalist
+paternalistic
+paternalistically
+paternality
+paternalize
+paternally
+paternity
+paternoster
+paternosterer
+patesi
+patesiate
+path
+Pathan
+pathbreaker
+pathed
+pathema
+pathematic
+pathematically
+pathematology
+pathetic
+pathetical
+pathetically
+patheticalness
+patheticate
+patheticly
+patheticness
+pathetism
+pathetist
+pathetize
+pathfarer
+pathfinder
+pathfinding
+pathic
+pathicism
+pathless
+pathlessness
+pathlet
+pathoanatomical
+pathoanatomy
+pathobiological
+pathobiologist
+pathobiology
+pathochemistry
+pathodontia
+pathogen
+pathogene
+pathogenesis
+pathogenesy
+pathogenetic
+pathogenic
+pathogenicity
+pathogenous
+pathogeny
+pathogerm
+pathogermic
+pathognomic
+pathognomical
+pathognomonic
+pathognomonical
+pathognomy
+pathognostic
+pathographical
+pathography
+pathologic
+pathological
+pathologically
+pathologicoanatomic
+pathologicoanatomical
+pathologicoclinical
+pathologicohistological
+pathologicopsychological
+pathologist
+pathology
+patholysis
+patholytic
+pathomania
+pathometabolism
+pathomimesis
+pathomimicry
+pathoneurosis
+pathonomia
+pathonomy
+pathophobia
+pathophoresis
+pathophoric
+pathophorous
+pathoplastic
+pathoplastically
+pathopoeia
+pathopoiesis
+pathopoietic
+pathopsychology
+pathopsychosis
+pathoradiography
+pathos
+pathosocial
+Pathrusim
+pathway
+pathwayed
+pathy
+patible
+patibulary
+patibulate
+patience
+patiency
+patient
+patientless
+patiently
+patientness
+patina
+patinate
+patination
+patine
+patined
+patinize
+patinous
+patio
+patisserie
+patly
+Patmian
+Patmos
+patness
+patnidar
+pato
+patois
+patola
+patonce
+patria
+patrial
+patriarch
+patriarchal
+patriarchalism
+patriarchally
+patriarchate
+patriarchdom
+patriarched
+patriarchess
+patriarchic
+patriarchical
+patriarchically
+patriarchism
+patriarchist
+patriarchship
+patriarchy
+Patrice
+patrice
+Patricia
+Patrician
+patrician
+patricianhood
+patricianism
+patricianly
+patricianship
+patriciate
+patricidal
+patricide
+Patricio
+Patrick
+patrico
+patrilineal
+patrilineally
+patrilinear
+patriliny
+patrilocal
+patrimonial
+patrimonially
+patrimony
+patrin
+Patriofelis
+patriolatry
+patriot
+patrioteer
+patriotess
+patriotic
+patriotical
+patriotically
+patriotics
+patriotism
+patriotly
+patriotship
+Patripassian
+Patripassianism
+Patripassianist
+Patripassianly
+patrist
+patristic
+patristical
+patristically
+patristicalness
+patristicism
+patristics
+patrix
+patrizate
+patrization
+patrocinium
+patroclinic
+patroclinous
+patrocliny
+patrogenesis
+patrol
+patroller
+patrollotism
+patrolman
+patrologic
+patrological
+patrologist
+patrology
+patron
+patronage
+patronal
+patronate
+patrondom
+patroness
+patronessship
+patronite
+patronizable
+patronization
+patronize
+patronizer
+patronizing
+patronizingly
+patronless
+patronly
+patronomatology
+patronship
+patronym
+patronymic
+patronymically
+patronymy
+patroon
+patroonry
+patroonship
+patruity
+Patsy
+patta
+pattable
+patte
+pattee
+patten
+pattened
+pattener
+patter
+patterer
+patterist
+pattern
+patternable
+patterned
+patterner
+patterning
+patternize
+patternless
+patternlike
+patternmaker
+patternmaking
+patternwise
+patterny
+pattu
+Patty
+patty
+pattypan
+patu
+patulent
+patulous
+patulously
+patulousness
+Patuxent
+patwari
+Patwin
+paty
+pau
+pauciarticulate
+pauciarticulated
+paucidentate
+pauciflorous
+paucifoliate
+paucifolious
+paucify
+paucijugate
+paucilocular
+pauciloquent
+pauciloquently
+pauciloquy
+paucinervate
+paucipinnate
+pauciplicate
+pauciradiate
+pauciradiated
+paucispiral
+paucispirated
+paucity
+paughty
+paukpan
+Paul
+Paula
+paular
+pauldron
+Pauliad
+Paulian
+Paulianist
+Pauliccian
+Paulicianism
+paulie
+paulin
+Paulina
+Pauline
+Paulinia
+Paulinian
+Paulinism
+Paulinist
+Paulinistic
+Paulinistically
+Paulinity
+Paulinize
+Paulinus
+Paulism
+Paulist
+Paulista
+Paulite
+paulopast
+paulopost
+paulospore
+Paulownia
+Paulus
+Paumari
+paunch
+paunched
+paunchful
+paunchily
+paunchiness
+paunchy
+paup
+pauper
+pauperage
+pauperate
+pauperdom
+pauperess
+pauperism
+pauperitic
+pauperization
+pauperize
+pauperizer
+Paurometabola
+paurometabolic
+paurometabolism
+paurometabolous
+paurometaboly
+pauropod
+Pauropoda
+pauropodous
+pausably
+pausal
+pausation
+pause
+pauseful
+pausefully
+pauseless
+pauselessly
+pausement
+pauser
+pausingly
+paussid
+Paussidae
+paut
+pauxi
+pavage
+pavan
+pavane
+pave
+pavement
+pavemental
+paver
+pavestone
+Pavetta
+Pavia
+pavid
+pavidity
+pavier
+pavilion
+paving
+pavior
+Paviotso
+paviour
+pavis
+pavisade
+pavisado
+paviser
+pavisor
+Pavo
+pavonated
+pavonazzetto
+pavonazzo
+Pavoncella
+Pavonia
+pavonian
+pavonine
+pavonize
+pavy
+paw
+pawdite
+pawer
+pawing
+pawk
+pawkery
+pawkily
+pawkiness
+pawkrie
+pawky
+pawl
+pawn
+pawnable
+pawnage
+pawnbroker
+pawnbrokerage
+pawnbrokeress
+pawnbrokering
+pawnbrokery
+pawnbroking
+Pawnee
+pawnee
+pawner
+pawnie
+pawnor
+pawnshop
+pawpaw
+Pawtucket
+pax
+paxilla
+paxillar
+paxillary
+paxillate
+paxilliferous
+paxilliform
+Paxillosa
+paxillose
+paxillus
+paxiuba
+paxwax
+pay
+payability
+payable
+payableness
+payably
+Payagua
+Payaguan
+payday
+payed
+payee
+payeny
+payer
+paying
+paymaster
+paymastership
+payment
+paymistress
+Payni
+paynim
+paynimhood
+paynimry
+Paynize
+payoff
+payong
+payor
+payroll
+paysagist
+Pazend
+pea
+peaberry
+peace
+peaceable
+peaceableness
+peaceably
+peacebreaker
+peacebreaking
+peaceful
+peacefully
+peacefulness
+peaceless
+peacelessness
+peacelike
+peacemaker
+peacemaking
+peaceman
+peacemonger
+peacemongering
+peacetime
+peach
+peachberry
+peachblossom
+peachblow
+peachen
+peacher
+peachery
+peachick
+peachify
+peachiness
+peachlet
+peachlike
+peachwood
+peachwort
+peachy
+peacoat
+peacock
+peacockery
+peacockish
+peacockishly
+peacockishness
+peacockism
+peacocklike
+peacockly
+peacockwise
+peacocky
+peacod
+peafowl
+peag
+peage
+peahen
+peai
+peaiism
+peak
+peaked
+peakedly
+peakedness
+peaker
+peakily
+peakiness
+peaking
+peakish
+peakishly
+peakishness
+peakless
+peaklike
+peakward
+peaky
+peakyish
+peal
+pealike
+pean
+peanut
+pear
+pearceite
+pearl
+pearlberry
+pearled
+pearler
+pearlet
+pearlfish
+pearlfruit
+pearlike
+pearlin
+pearliness
+pearling
+pearlish
+pearlite
+pearlitic
+pearlsides
+pearlstone
+pearlweed
+pearlwort
+pearly
+pearmain
+pearmonger
+peart
+pearten
+peartly
+peartness
+pearwood
+peasant
+peasantess
+peasanthood
+peasantism
+peasantize
+peasantlike
+peasantly
+peasantry
+peasantship
+peasecod
+peaselike
+peasen
+peashooter
+peason
+peastake
+peastaking
+peastick
+peasticking
+peastone
+peasy
+peat
+peatery
+peathouse
+peatman
+peatship
+peatstack
+peatwood
+peaty
+peavey
+peavy
+Peba
+peba
+Peban
+pebble
+pebbled
+pebblehearted
+pebblestone
+pebbleware
+pebbly
+pebrine
+pebrinous
+pecan
+peccability
+peccable
+peccadillo
+peccancy
+peccant
+peccantly
+peccantness
+peccary
+peccation
+peccavi
+pech
+pecht
+pecite
+peck
+pecked
+pecker
+peckerwood
+pecket
+peckful
+peckhamite
+peckiness
+peckish
+peckishly
+peckishness
+peckle
+peckled
+peckly
+Pecksniffian
+Pecksniffianism
+Pecksniffism
+pecky
+Pecopteris
+pecopteroid
+Pecora
+Pecos
+pectase
+pectate
+pecten
+pectic
+pectin
+Pectinacea
+pectinacean
+pectinaceous
+pectinal
+pectinase
+pectinate
+pectinated
+pectinately
+pectination
+pectinatodenticulate
+pectinatofimbricate
+pectinatopinnate
+pectineal
+pectineus
+pectinibranch
+Pectinibranchia
+pectinibranchian
+Pectinibranchiata
+pectinibranchiate
+pectinic
+pectinid
+Pectinidae
+pectiniferous
+pectiniform
+pectinirostrate
+pectinite
+pectinogen
+pectinoid
+pectinose
+pectinous
+pectizable
+pectization
+pectize
+pectocellulose
+pectolite
+pectora
+pectoral
+pectoralgia
+pectoralis
+pectoralist
+pectorally
+pectoriloquial
+pectoriloquism
+pectoriloquous
+pectoriloquy
+pectosase
+pectose
+pectosic
+pectosinase
+pectous
+pectunculate
+Pectunculus
+pectus
+peculate
+peculation
+peculator
+peculiar
+peculiarism
+peculiarity
+peculiarize
+peculiarly
+peculiarness
+peculiarsome
+peculium
+pecuniarily
+pecuniary
+pecuniosity
+pecunious
+ped
+peda
+pedage
+pedagog
+pedagogal
+pedagogic
+pedagogical
+pedagogically
+pedagogics
+pedagogism
+pedagogist
+pedagogue
+pedagoguery
+pedagoguish
+pedagoguism
+pedagogy
+pedal
+pedaler
+pedalfer
+pedalferic
+Pedaliaceae
+pedaliaceous
+pedalian
+pedalier
+Pedalion
+pedalism
+pedalist
+pedaliter
+pedality
+Pedalium
+pedanalysis
+pedant
+pedantesque
+pedantess
+pedanthood
+pedantic
+pedantical
+pedantically
+pedanticalness
+pedanticism
+pedanticly
+pedanticness
+pedantism
+pedantize
+pedantocracy
+pedantocrat
+pedantocratic
+pedantry
+pedary
+Pedata
+pedate
+pedated
+pedately
+pedatifid
+pedatiform
+pedatilobate
+pedatilobed
+pedatinerved
+pedatipartite
+pedatisect
+pedatisected
+pedatrophia
+pedder
+peddle
+peddler
+peddleress
+peddlerism
+peddlery
+peddling
+peddlingly
+pedee
+pedelion
+pederast
+pederastic
+pederastically
+pederasty
+pedes
+pedesis
+pedestal
+pedestrial
+pedestrially
+pedestrian
+pedestrianate
+pedestrianism
+pedestrianize
+pedetentous
+Pedetes
+Pedetidae
+Pedetinae
+pediadontia
+pediadontic
+pediadontist
+pedialgia
+Pediastrum
+pediatric
+pediatrician
+pediatrics
+pediatrist
+pediatry
+pedicab
+pedicel
+pediceled
+pedicellar
+pedicellaria
+pedicellate
+pedicellated
+pedicellation
+pedicelled
+pedicelliform
+Pedicellina
+pedicellus
+pedicle
+pedicular
+Pedicularia
+Pedicularis
+pediculate
+pediculated
+Pediculati
+pedicule
+Pediculi
+pediculicidal
+pediculicide
+pediculid
+Pediculidae
+Pediculina
+pediculine
+pediculofrontal
+pediculoid
+pediculoparietal
+pediculophobia
+pediculosis
+pediculous
+Pediculus
+pedicure
+pedicurism
+pedicurist
+pediferous
+pediform
+pedigerous
+pedigraic
+pedigree
+pedigreeless
+pediluvium
+Pedimana
+pedimanous
+pediment
+pedimental
+pedimented
+pedimentum
+Pedioecetes
+pedion
+pedionomite
+Pedionomus
+pedipalp
+pedipalpal
+pedipalpate
+Pedipalpi
+Pedipalpida
+pedipalpous
+pedipalpus
+pedipulate
+pedipulation
+pedipulator
+pedlar
+pedlary
+pedobaptism
+pedobaptist
+pedocal
+pedocalcic
+pedodontia
+pedodontic
+pedodontist
+pedodontology
+pedograph
+pedological
+pedologist
+pedologistical
+pedologistically
+pedology
+pedometer
+pedometric
+pedometrical
+pedometrically
+pedometrician
+pedometrist
+pedomorphic
+pedomorphism
+pedomotive
+pedomotor
+pedophilia
+pedophilic
+pedotribe
+pedotrophic
+pedotrophist
+pedotrophy
+pedrail
+pedregal
+pedrero
+Pedro
+pedro
+pedule
+pedum
+peduncle
+peduncled
+peduncular
+Pedunculata
+pedunculate
+pedunculated
+pedunculation
+pedunculus
+pee
+peed
+peek
+peekaboo
+peel
+peelable
+peele
+peeled
+peeledness
+peeler
+peelhouse
+peeling
+Peelism
+Peelite
+peelman
+peen
+peenge
+peeoy
+peep
+peeper
+peepeye
+peephole
+peepy
+peer
+peerage
+peerdom
+peeress
+peerhood
+peerie
+peeringly
+peerless
+peerlessly
+peerlessness
+peerling
+peerly
+peership
+peery
+peesash
+peesoreh
+peesweep
+peetweet
+peeve
+peeved
+peevedly
+peevedness
+peever
+peevish
+peevishly
+peevishness
+peewee
+Peg
+peg
+pega
+pegall
+peganite
+Peganum
+Pegasean
+Pegasian
+Pegasid
+pegasid
+Pegasidae
+pegasoid
+Pegasus
+pegboard
+pegbox
+pegged
+pegger
+pegging
+peggle
+Peggy
+peggy
+pegless
+peglet
+peglike
+pegman
+pegmatite
+pegmatitic
+pegmatization
+pegmatize
+pegmatoid
+pegmatophyre
+pegology
+pegomancy
+Peguan
+pegwood
+Pehlevi
+peho
+Pehuenche
+peignoir
+peine
+peirameter
+peirastic
+peirastically
+peisage
+peise
+peiser
+Peitho
+peixere
+pejorate
+pejoration
+pejorationist
+pejorative
+pejoratively
+pejorism
+pejorist
+pejority
+pekan
+Pekin
+pekin
+Peking
+Pekingese
+pekoe
+peladic
+pelage
+pelagial
+Pelagian
+pelagian
+Pelagianism
+Pelagianize
+Pelagianizer
+pelagic
+Pelagothuria
+pelamyd
+pelanos
+Pelargi
+pelargic
+Pelargikon
+pelargomorph
+Pelargomorphae
+pelargomorphic
+pelargonate
+pelargonic
+pelargonidin
+pelargonin
+pelargonium
+Pelasgi
+Pelasgian
+Pelasgic
+Pelasgikon
+Pelasgoi
+Pele
+pelean
+pelecan
+Pelecani
+Pelecanidae
+Pelecaniformes
+Pelecanoides
+Pelecanoidinae
+Pelecanus
+pelecypod
+Pelecypoda
+pelecypodous
+pelelith
+pelerine
+Peleus
+Pelew
+pelf
+Pelias
+pelican
+pelicanry
+pelick
+pelicometer
+Pelides
+Pelidnota
+pelike
+peliom
+pelioma
+peliosis
+pelisse
+pelite
+pelitic
+pell
+Pellaea
+pellage
+pellagra
+pellagragenic
+pellagrin
+pellagrose
+pellagrous
+pellar
+pellard
+pellas
+pellate
+pellation
+peller
+pellet
+pelleted
+pelletierine
+pelletlike
+pellety
+Pellian
+pellicle
+pellicula
+pellicular
+pellicularia
+pelliculate
+pellicule
+pellile
+pellitory
+pellmell
+pellock
+pellotine
+pellucent
+pellucid
+pellucidity
+pellucidly
+pellucidness
+Pelmanism
+Pelmanist
+Pelmanize
+pelmatic
+pelmatogram
+Pelmatozoa
+pelmatozoan
+pelmatozoic
+pelmet
+Pelobates
+pelobatid
+Pelobatidae
+pelobatoid
+Pelodytes
+pelodytid
+Pelodytidae
+pelodytoid
+Pelomedusa
+pelomedusid
+Pelomedusidae
+pelomedusoid
+Pelomyxa
+pelon
+Pelopaeus
+Pelopid
+Pelopidae
+Peloponnesian
+Pelops
+peloria
+pelorian
+peloriate
+peloric
+pelorism
+pelorization
+pelorize
+pelorus
+pelota
+pelotherapy
+peloton
+pelt
+pelta
+Peltandra
+peltast
+peltate
+peltated
+peltately
+peltatifid
+peltation
+peltatodigitate
+pelter
+pelterer
+peltiferous
+peltifolious
+peltiform
+Peltigera
+Peltigeraceae
+peltigerine
+peltigerous
+peltinerved
+pelting
+peltingly
+peltless
+peltmonger
+Peltogaster
+peltry
+pelu
+peludo
+Pelusios
+pelveoperitonitis
+pelves
+Pelvetia
+pelvic
+pelviform
+pelvigraph
+pelvigraphy
+pelvimeter
+pelvimetry
+pelviolithotomy
+pelvioperitonitis
+pelvioplasty
+pelvioradiography
+pelvioscopy
+pelviotomy
+pelviperitonitis
+pelvirectal
+pelvis
+pelvisacral
+pelvisternal
+pelvisternum
+pelycogram
+pelycography
+pelycology
+pelycometer
+pelycometry
+pelycosaur
+Pelycosauria
+pelycosaurian
+pembina
+Pembroke
+pemican
+pemmican
+pemmicanization
+pemmicanize
+pemphigoid
+pemphigous
+pemphigus
+pen
+penacute
+Penaea
+Penaeaceae
+penaeaceous
+penal
+penalist
+penality
+penalizable
+penalization
+penalize
+penally
+penalty
+penance
+penanceless
+penang
+penannular
+penates
+penbard
+pencatite
+pence
+pencel
+penceless
+penchant
+penchute
+pencil
+penciled
+penciler
+penciliform
+penciling
+pencilled
+penciller
+pencillike
+pencilling
+pencilry
+pencilwood
+pencraft
+pend
+penda
+pendant
+pendanted
+pendanting
+pendantlike
+pendecagon
+pendeloque
+pendency
+pendent
+pendentive
+pendently
+pendicle
+pendicler
+pending
+pendle
+pendom
+pendragon
+pendragonish
+pendragonship
+pendulant
+pendular
+pendulate
+pendulation
+pendule
+penduline
+pendulosity
+pendulous
+pendulously
+pendulousness
+pendulum
+pendulumlike
+Penelope
+Penelopean
+Penelophon
+Penelopinae
+penelopine
+peneplain
+peneplanation
+peneplane
+peneseismic
+penetrability
+penetrable
+penetrableness
+penetrably
+penetral
+penetralia
+penetralian
+penetrance
+penetrancy
+penetrant
+penetrate
+penetrating
+penetratingly
+penetratingness
+penetration
+penetrative
+penetratively
+penetrativeness
+penetrativity
+penetrator
+penetrology
+penetrometer
+penfieldite
+penfold
+penful
+penghulu
+pengo
+penguin
+penguinery
+penhead
+penholder
+penial
+penicillate
+penicillated
+penicillately
+penicillation
+penicilliform
+penicillin
+Penicillium
+penide
+penile
+peninsula
+peninsular
+peninsularism
+peninsularity
+peninsulate
+penintime
+peninvariant
+penis
+penistone
+penitence
+penitencer
+penitent
+Penitentes
+penitential
+penitentially
+penitentiary
+penitentiaryship
+penitently
+penk
+penkeeper
+penknife
+penlike
+penmaker
+penmaking
+penman
+penmanship
+penmaster
+penna
+pennaceous
+Pennacook
+pennae
+pennage
+Pennales
+pennant
+Pennaria
+Pennariidae
+Pennatae
+pennate
+pennated
+pennatifid
+pennatilobate
+pennatipartite
+pennatisect
+pennatisected
+Pennatula
+Pennatulacea
+pennatulacean
+pennatulaceous
+pennatularian
+pennatulid
+Pennatulidae
+pennatuloid
+penneech
+penneeck
+penner
+pennet
+penni
+pennia
+pennied
+penniferous
+penniform
+pennigerous
+penniless
+pennilessly
+pennilessness
+pennill
+penninervate
+penninerved
+penning
+penninite
+pennipotent
+Pennisetum
+penniveined
+pennon
+pennoned
+pennopluma
+pennoplume
+pennorth
+Pennsylvania
+Pennsylvanian
+Penny
+penny
+pennybird
+pennycress
+pennyearth
+pennyflower
+pennyhole
+pennyleaf
+pennyrot
+pennyroyal
+pennysiller
+pennystone
+pennyweight
+pennywinkle
+pennywort
+pennyworth
+Penobscot
+penologic
+penological
+penologist
+penology
+penorcon
+penrack
+penroseite
+Pensacola
+penscript
+penseful
+pensefulness
+penship
+pensile
+pensileness
+pensility
+pension
+pensionable
+pensionably
+pensionary
+pensioner
+pensionership
+pensionless
+pensive
+pensived
+pensively
+pensiveness
+penster
+penstick
+penstock
+pensum
+pensy
+pent
+penta
+pentabasic
+pentabromide
+pentacapsular
+pentacarbon
+pentacarbonyl
+pentacarpellary
+pentace
+pentacetate
+pentachenium
+pentachloride
+pentachord
+pentachromic
+pentacid
+pentacle
+pentacoccous
+pentacontane
+pentacosane
+Pentacrinidae
+pentacrinite
+pentacrinoid
+Pentacrinus
+pentacron
+pentacrostic
+pentactinal
+pentactine
+pentacular
+pentacyanic
+pentacyclic
+pentad
+pentadactyl
+Pentadactyla
+pentadactylate
+pentadactyle
+pentadactylism
+pentadactyloid
+pentadecagon
+pentadecahydrate
+pentadecahydrated
+pentadecane
+pentadecatoic
+pentadecoic
+pentadecyl
+pentadecylic
+pentadelphous
+pentadicity
+pentadiene
+pentadodecahedron
+pentadrachm
+pentadrachma
+pentaerythrite
+pentaerythritol
+pentafid
+pentafluoride
+pentagamist
+pentaglossal
+pentaglot
+pentaglottical
+pentagon
+pentagonal
+pentagonally
+pentagonohedron
+pentagonoid
+pentagram
+pentagrammatic
+pentagyn
+Pentagynia
+pentagynian
+pentagynous
+pentahalide
+pentahedral
+pentahedrical
+pentahedroid
+pentahedron
+pentahedrous
+pentahexahedral
+pentahexahedron
+pentahydrate
+pentahydrated
+pentahydric
+pentahydroxy
+pentail
+pentaiodide
+pentalobate
+pentalogue
+pentalogy
+pentalpha
+Pentamera
+pentameral
+pentameran
+pentamerid
+Pentameridae
+pentamerism
+pentameroid
+pentamerous
+Pentamerus
+pentameter
+pentamethylene
+pentamethylenediamine
+pentametrist
+pentametrize
+pentander
+Pentandria
+pentandrian
+pentandrous
+pentane
+pentanedione
+pentangle
+pentangular
+pentanitrate
+pentanoic
+pentanolide
+pentanone
+pentapetalous
+Pentaphylacaceae
+pentaphylacaceous
+Pentaphylax
+pentaphyllous
+pentaploid
+pentaploidic
+pentaploidy
+pentapody
+pentapolis
+pentapolitan
+pentapterous
+pentaptote
+pentaptych
+pentaquine
+pentarch
+pentarchical
+pentarchy
+pentasepalous
+pentasilicate
+pentaspermous
+pentaspheric
+pentaspherical
+pentastich
+pentastichous
+pentastichy
+pentastome
+Pentastomida
+pentastomoid
+pentastomous
+Pentastomum
+pentastyle
+pentastylos
+pentasulphide
+pentasyllabic
+pentasyllabism
+pentasyllable
+Pentateuch
+Pentateuchal
+pentateuchal
+pentathionate
+pentathionic
+pentathlete
+pentathlon
+pentathlos
+pentatomic
+pentatomid
+Pentatomidae
+Pentatomoidea
+pentatone
+pentatonic
+pentatriacontane
+pentavalence
+pentavalency
+pentavalent
+penteconter
+pentecontoglossal
+Pentecost
+Pentecostal
+pentecostal
+pentecostalism
+pentecostalist
+pentecostarion
+pentecoster
+pentecostys
+Pentelic
+Pentelican
+pentene
+penteteric
+penthemimer
+penthemimeral
+penthemimeris
+Penthestes
+penthiophen
+penthiophene
+Penthoraceae
+Penthorum
+penthouse
+penthouselike
+penthrit
+penthrite
+pentimento
+pentine
+pentiodide
+pentit
+pentite
+pentitol
+pentlandite
+pentobarbital
+pentode
+pentoic
+pentol
+pentosan
+pentosane
+pentose
+pentoside
+pentosuria
+pentoxide
+pentremital
+pentremite
+Pentremites
+Pentremitidae
+pentrit
+pentrite
+pentrough
+Pentstemon
+pentstock
+penttail
+pentyl
+pentylene
+pentylic
+pentylidene
+pentyne
+Pentzia
+penuchi
+penult
+penultima
+penultimate
+penultimatum
+penumbra
+penumbrae
+penumbral
+penumbrous
+penurious
+penuriously
+penuriousness
+penury
+Penutian
+penwiper
+penwoman
+penwomanship
+penworker
+penwright
+peon
+peonage
+peonism
+peony
+people
+peopledom
+peoplehood
+peopleize
+peopleless
+peopler
+peoplet
+peoplish
+Peoria
+Peorian
+peotomy
+pep
+peperine
+peperino
+Peperomia
+pepful
+Pephredo
+pepinella
+pepino
+peplos
+peplosed
+peplum
+peplus
+pepo
+peponida
+peponium
+pepper
+pepperbox
+peppercorn
+peppercornish
+peppercorny
+pepperer
+peppergrass
+pepperidge
+pepperily
+pepperiness
+pepperish
+pepperishly
+peppermint
+pepperoni
+pepperproof
+pepperroot
+pepperweed
+pepperwood
+pepperwort
+peppery
+peppily
+peppin
+peppiness
+peppy
+pepsin
+pepsinate
+pepsinhydrochloric
+pepsiniferous
+pepsinogen
+pepsinogenic
+pepsinogenous
+pepsis
+peptic
+peptical
+pepticity
+peptidase
+peptide
+peptizable
+peptization
+peptize
+peptizer
+peptogaster
+peptogenic
+peptogenous
+peptogeny
+peptohydrochloric
+peptolysis
+peptolytic
+peptonaemia
+peptonate
+peptone
+peptonemia
+peptonic
+peptonization
+peptonize
+peptonizer
+peptonoid
+peptonuria
+peptotoxine
+Pepysian
+Pequot
+Per
+per
+Peracarida
+peracephalus
+peracetate
+peracetic
+peracid
+peracidite
+peract
+peracute
+peradventure
+peragrate
+peragration
+Perakim
+peramble
+perambulant
+perambulate
+perambulation
+perambulator
+perambulatory
+Perameles
+Peramelidae
+perameline
+perameloid
+Peramium
+Peratae
+Perates
+perbend
+perborate
+perborax
+perbromide
+Perca
+percale
+percaline
+percarbide
+percarbonate
+percarbonic
+perceivability
+perceivable
+perceivableness
+perceivably
+perceivance
+perceivancy
+perceive
+perceivedly
+perceivedness
+perceiver
+perceiving
+perceivingness
+percent
+percentable
+percentably
+percentage
+percentaged
+percental
+percentile
+percentual
+percept
+perceptibility
+perceptible
+perceptibleness
+perceptibly
+perception
+perceptional
+perceptionalism
+perceptionism
+perceptive
+perceptively
+perceptiveness
+perceptivity
+perceptual
+perceptually
+Percesoces
+percesocine
+Perceval
+perch
+percha
+perchable
+perchance
+percher
+Percheron
+perchlorate
+perchlorethane
+perchlorethylene
+perchloric
+perchloride
+perchlorinate
+perchlorination
+perchloroethane
+perchloroethylene
+perchromate
+perchromic
+percid
+Percidae
+perciform
+Perciformes
+percipience
+percipiency
+percipient
+Percival
+perclose
+percnosome
+percoct
+percoid
+Percoidea
+percoidean
+percolable
+percolate
+percolation
+percolative
+percolator
+percomorph
+Percomorphi
+percomorphous
+percompound
+percontation
+percontatorial
+percribrate
+percribration
+percrystallization
+perculsion
+perculsive
+percur
+percurration
+percurrent
+percursory
+percuss
+percussion
+percussional
+percussioner
+percussionist
+percussionize
+percussive
+percussively
+percussiveness
+percussor
+percutaneous
+percutaneously
+percutient
+Percy
+percylite
+Perdicinae
+perdicine
+perdition
+perditionable
+Perdix
+perdricide
+perdu
+perduellion
+perdurability
+perdurable
+perdurableness
+perdurably
+perdurance
+perdurant
+perdure
+perduring
+perduringly
+Perean
+peregrin
+peregrina
+peregrinate
+peregrination
+peregrinator
+peregrinatory
+peregrine
+peregrinity
+peregrinoid
+pereion
+pereiopod
+pereira
+pereirine
+peremptorily
+peremptoriness
+peremptory
+perendinant
+perendinate
+perendination
+perendure
+perennate
+perennation
+perennial
+perenniality
+perennialize
+perennially
+perennibranch
+Perennibranchiata
+perennibranchiate
+perequitate
+peres
+Pereskia
+perezone
+perfect
+perfectation
+perfected
+perfectedly
+perfecter
+perfecti
+perfectibilian
+perfectibilism
+perfectibilist
+perfectibilitarian
+perfectibility
+perfectible
+perfecting
+perfection
+perfectionate
+perfectionation
+perfectionator
+perfectioner
+perfectionism
+perfectionist
+perfectionistic
+perfectionize
+perfectionizement
+perfectionizer
+perfectionment
+perfectism
+perfectist
+perfective
+perfectively
+perfectiveness
+perfectivity
+perfectivize
+perfectly
+perfectness
+perfecto
+perfector
+perfectuation
+perfervent
+perfervid
+perfervidity
+perfervidly
+perfervidness
+perfervor
+perfervour
+perfidious
+perfidiously
+perfidiousness
+perfidy
+perfilograph
+perflate
+perflation
+perfluent
+perfoliate
+perfoliation
+perforable
+perforant
+Perforata
+perforate
+perforated
+perforation
+perforationproof
+perforative
+perforator
+perforatorium
+perforatory
+perforce
+perforcedly
+perform
+performable
+performance
+performant
+performative
+performer
+perfrication
+perfumatory
+perfume
+perfumed
+perfumeless
+perfumer
+perfumeress
+perfumery
+perfumy
+perfunctionary
+perfunctorily
+perfunctoriness
+perfunctorious
+perfunctoriously
+perfunctorize
+perfunctory
+perfuncturate
+perfusate
+perfuse
+perfusion
+perfusive
+Pergamene
+pergameneous
+Pergamenian
+pergamentaceous
+Pergamic
+pergamyn
+pergola
+perhalide
+perhalogen
+perhaps
+perhazard
+perhorresce
+perhydroanthracene
+perhydrogenate
+perhydrogenation
+perhydrogenize
+peri
+periacinal
+periacinous
+periactus
+periadenitis
+periamygdalitis
+perianal
+periangiocholitis
+periangioma
+periangitis
+perianth
+perianthial
+perianthium
+periaortic
+periaortitis
+periapical
+periappendicitis
+periappendicular
+periapt
+Periarctic
+periareum
+periarterial
+periarteritis
+periarthric
+periarthritis
+periarticular
+periaster
+periastral
+periastron
+periastrum
+periatrial
+periauricular
+periaxial
+periaxillary
+periaxonal
+periblast
+periblastic
+periblastula
+periblem
+peribolos
+peribolus
+peribranchial
+peribronchial
+peribronchiolar
+peribronchiolitis
+peribronchitis
+peribulbar
+peribursal
+pericaecal
+pericaecitis
+pericanalicular
+pericapsular
+pericardia
+pericardiac
+pericardiacophrenic
+pericardial
+pericardicentesis
+pericardiectomy
+pericardiocentesis
+pericardiolysis
+pericardiomediastinitis
+pericardiophrenic
+pericardiopleural
+pericardiorrhaphy
+pericardiosymphysis
+pericardiotomy
+pericarditic
+pericarditis
+pericardium
+pericardotomy
+pericarp
+pericarpial
+pericarpic
+pericarpium
+pericarpoidal
+pericecal
+pericecitis
+pericellular
+pericemental
+pericementitis
+pericementoclasia
+pericementum
+pericenter
+pericentral
+pericentric
+pericephalic
+pericerebral
+perichaete
+perichaetial
+perichaetium
+perichete
+pericholangitis
+pericholecystitis
+perichondral
+perichondrial
+perichondritis
+perichondrium
+perichord
+perichordal
+perichoresis
+perichorioidal
+perichoroidal
+perichylous
+pericladium
+periclase
+periclasia
+periclasite
+periclaustral
+Periclean
+Pericles
+periclinal
+periclinally
+pericline
+periclinium
+periclitate
+periclitation
+pericolitis
+pericolpitis
+periconchal
+periconchitis
+pericopal
+pericope
+pericopic
+pericorneal
+pericowperitis
+pericoxitis
+pericranial
+pericranitis
+pericranium
+pericristate
+Pericu
+periculant
+pericycle
+pericycloid
+pericyclone
+pericyclonic
+pericystic
+pericystitis
+pericystium
+pericytial
+peridendritic
+peridental
+peridentium
+peridentoclasia
+periderm
+peridermal
+peridermic
+Peridermium
+peridesm
+peridesmic
+peridesmitis
+peridesmium
+peridial
+peridiastole
+peridiastolic
+perididymis
+perididymitis
+peridiiform
+Peridineae
+Peridiniaceae
+peridiniaceous
+peridinial
+Peridiniales
+peridinian
+peridinid
+Peridinidae
+Peridinieae
+Peridiniidae
+Peridinium
+peridiole
+peridiolum
+peridium
+peridot
+peridotic
+peridotite
+peridotitic
+periductal
+periegesis
+periegetic
+perielesis
+periencephalitis
+perienteric
+perienteritis
+perienteron
+periependymal
+periesophageal
+periesophagitis
+perifistular
+perifoliary
+perifollicular
+perifolliculitis
+perigangliitis
+periganglionic
+perigastric
+perigastritis
+perigastrula
+perigastrular
+perigastrulation
+perigeal
+perigee
+perigemmal
+perigenesis
+perigenital
+perigeum
+periglandular
+perigloea
+periglottic
+periglottis
+perignathic
+perigon
+perigonadial
+perigonal
+perigone
+perigonial
+perigonium
+perigraph
+perigraphic
+perigynial
+perigynium
+perigynous
+perigyny
+perihelial
+perihelian
+perihelion
+perihelium
+perihepatic
+perihepatitis
+perihermenial
+perihernial
+perihysteric
+perijejunitis
+perijove
+perikaryon
+perikronion
+peril
+perilabyrinth
+perilabyrinthitis
+perilaryngeal
+perilaryngitis
+perilenticular
+periligamentous
+Perilla
+perilless
+perilobar
+perilous
+perilously
+perilousness
+perilsome
+perilymph
+perilymphangial
+perilymphangitis
+perilymphatic
+perimartium
+perimastitis
+perimedullary
+perimeningitis
+perimeter
+perimeterless
+perimetral
+perimetric
+perimetrical
+perimetrically
+perimetritic
+perimetritis
+perimetrium
+perimetry
+perimorph
+perimorphic
+perimorphism
+perimorphous
+perimyelitis
+perimysial
+perimysium
+perine
+perineal
+perineocele
+perineoplastic
+perineoplasty
+perineorrhaphy
+perineoscrotal
+perineostomy
+perineosynthesis
+perineotomy
+perineovaginal
+perineovulvar
+perinephral
+perinephrial
+perinephric
+perinephritic
+perinephritis
+perinephrium
+perineptunium
+perineum
+perineural
+perineurial
+perineuritis
+perineurium
+perinium
+perinuclear
+periocular
+period
+periodate
+periodic
+periodical
+periodicalism
+periodicalist
+periodicalize
+periodically
+periodicalness
+periodicity
+periodide
+periodize
+periodogram
+periodograph
+periodology
+periodontal
+periodontia
+periodontic
+periodontist
+periodontitis
+periodontium
+periodontoclasia
+periodontologist
+periodontology
+periodontum
+periodoscope
+perioeci
+perioecians
+perioecic
+perioecid
+perioecus
+perioesophageal
+perioikoi
+periomphalic
+perionychia
+perionychium
+perionyx
+perionyxis
+perioophoritis
+periophthalmic
+periophthalmitis
+periople
+perioplic
+perioptic
+perioptometry
+perioral
+periorbit
+periorbita
+periorbital
+periorchitis
+periost
+periostea
+periosteal
+periosteitis
+periosteoalveolar
+periosteoma
+periosteomedullitis
+periosteomyelitis
+periosteophyte
+periosteorrhaphy
+periosteotome
+periosteotomy
+periosteous
+periosteum
+periostitic
+periostitis
+periostoma
+periostosis
+periostotomy
+periostracal
+periostracum
+periotic
+periovular
+peripachymeningitis
+peripancreatic
+peripancreatitis
+peripapillary
+Peripatetic
+peripatetic
+peripatetical
+peripatetically
+peripateticate
+Peripateticism
+Peripatidae
+Peripatidea
+peripatize
+peripatoid
+Peripatopsidae
+Peripatopsis
+Peripatus
+peripenial
+peripericarditis
+peripetalous
+peripetasma
+peripeteia
+peripetia
+peripety
+periphacitis
+peripharyngeal
+peripherad
+peripheral
+peripherally
+peripherial
+peripheric
+peripherical
+peripherically
+peripherocentral
+peripheroceptor
+peripheromittor
+peripheroneural
+peripherophose
+periphery
+periphlebitic
+periphlebitis
+periphractic
+periphrase
+periphrases
+periphrasis
+periphrastic
+periphrastical
+periphrastically
+periphraxy
+periphyllum
+periphyse
+periphysis
+Periplaneta
+periplasm
+periplast
+periplastic
+periplegmatic
+peripleural
+peripleuritis
+Periploca
+periplus
+peripneumonia
+peripneumonic
+peripneumony
+peripneustic
+peripolar
+peripolygonal
+periportal
+periproct
+periproctal
+periproctitis
+periproctous
+periprostatic
+periprostatitis
+peripteral
+peripterous
+periptery
+peripylephlebitis
+peripyloric
+perique
+perirectal
+perirectitis
+perirenal
+perisalpingitis
+perisarc
+perisarcal
+perisarcous
+perisaturnium
+periscian
+periscians
+periscii
+perisclerotic
+periscopal
+periscope
+periscopic
+periscopical
+periscopism
+perish
+perishability
+perishable
+perishableness
+perishably
+perished
+perishing
+perishingly
+perishless
+perishment
+perisigmoiditis
+perisinuitis
+perisinuous
+perisinusitis
+perisoma
+perisomal
+perisomatic
+perisome
+perisomial
+perisperm
+perispermal
+perispermatitis
+perispermic
+perisphere
+perispheric
+perispherical
+perisphinctean
+Perisphinctes
+Perisphinctidae
+perisphinctoid
+perisplanchnic
+perisplanchnitis
+perisplenetic
+perisplenic
+perisplenitis
+perispome
+perispomenon
+perispondylic
+perispondylitis
+perispore
+Perisporiaceae
+perisporiaceous
+Perisporiales
+perissad
+perissodactyl
+Perissodactyla
+perissodactylate
+perissodactyle
+perissodactylic
+perissodactylism
+perissodactylous
+perissologic
+perissological
+perissology
+perissosyllabic
+peristalith
+peristalsis
+peristaltic
+peristaltically
+peristaphyline
+peristaphylitis
+peristele
+peristerite
+peristeromorph
+Peristeromorphae
+peristeromorphic
+peristeromorphous
+peristeronic
+peristerophily
+peristeropod
+peristeropodan
+peristeropode
+Peristeropodes
+peristeropodous
+peristethium
+peristole
+peristoma
+peristomal
+peristomatic
+peristome
+peristomial
+peristomium
+peristrephic
+peristrephical
+peristrumitis
+peristrumous
+peristylar
+peristyle
+peristylium
+peristylos
+peristylum
+perisynovial
+perisystole
+perisystolic
+perit
+perite
+peritectic
+peritendineum
+peritenon
+perithece
+perithecial
+perithecium
+perithelial
+perithelioma
+perithelium
+perithoracic
+perithyreoiditis
+perithyroiditis
+peritomize
+peritomous
+peritomy
+peritoneal
+peritonealgia
+peritoneally
+peritoneocentesis
+peritoneoclysis
+peritoneomuscular
+peritoneopathy
+peritoneopericardial
+peritoneopexy
+peritoneoplasty
+peritoneoscope
+peritoneoscopy
+peritoneotomy
+peritoneum
+peritonism
+peritonital
+peritonitic
+peritonitis
+peritonsillar
+peritonsillitis
+peritracheal
+peritrema
+peritrematous
+peritreme
+peritrich
+Peritricha
+peritrichan
+peritrichic
+peritrichous
+peritrichously
+peritroch
+peritrochal
+peritrochanteric
+peritrochium
+peritrochoid
+peritropal
+peritrophic
+peritropous
+perityphlic
+perityphlitic
+perityphlitis
+periumbilical
+periungual
+periuranium
+periureteric
+periureteritis
+periurethral
+periurethritis
+periuterine
+periuvular
+perivaginal
+perivaginitis
+perivascular
+perivasculitis
+perivenous
+perivertebral
+perivesical
+perivisceral
+perivisceritis
+perivitellin
+perivitelline
+periwig
+periwigpated
+periwinkle
+periwinkled
+periwinkler
+perizonium
+perjink
+perjinkety
+perjinkities
+perjinkly
+perjure
+perjured
+perjuredly
+perjuredness
+perjurer
+perjuress
+perjurious
+perjuriously
+perjuriousness
+perjurous
+perjury
+perjurymonger
+perjurymongering
+perk
+perkily
+Perkin
+perkin
+perkiness
+perking
+perkingly
+perkish
+perknite
+perky
+Perla
+perlaceous
+Perlaria
+perle
+perlection
+perlid
+Perlidae
+perligenous
+perlingual
+perlingually
+perlite
+perlitic
+perloir
+perlustrate
+perlustration
+perlustrator
+perm
+permafrost
+Permalloy
+permalloy
+permanence
+permanency
+permanent
+permanently
+permanentness
+permanganate
+permanganic
+permansive
+permeability
+permeable
+permeableness
+permeably
+permeameter
+permeance
+permeant
+permeate
+permeation
+permeative
+permeator
+Permiak
+Permian
+permillage
+permirific
+permissibility
+permissible
+permissibleness
+permissibly
+permission
+permissioned
+permissive
+permissively
+permissiveness
+permissory
+permit
+permittable
+permitted
+permittedly
+permittee
+permitter
+permittivity
+permixture
+Permocarboniferous
+permonosulphuric
+permoralize
+permutability
+permutable
+permutableness
+permutably
+permutate
+permutation
+permutational
+permutationist
+permutator
+permutatorial
+permutatory
+permute
+permuter
+pern
+pernancy
+pernasal
+pernavigate
+Pernettia
+pernicious
+perniciously
+perniciousness
+pernicketiness
+pernickety
+pernine
+Pernis
+pernitrate
+pernitric
+pernoctation
+pernor
+pernyi
+peroba
+perobrachius
+perocephalus
+perochirus
+perodactylus
+Perodipus
+Perognathinae
+Perognathus
+Peromedusae
+Peromela
+peromelous
+peromelus
+Peromyscus
+peronate
+peroneal
+peroneocalcaneal
+peroneotarsal
+peroneotibial
+peronial
+peronium
+Peronospora
+Peronosporaceae
+peronosporaceous
+Peronosporales
+peropod
+Peropoda
+peropodous
+peropus
+peroral
+perorally
+perorate
+peroration
+perorational
+perorative
+perorator
+peroratorical
+peroratorically
+peroratory
+perosis
+perosmate
+perosmic
+perosomus
+perotic
+perovskite
+peroxidase
+peroxidate
+peroxidation
+peroxide
+peroxidic
+peroxidize
+peroxidizement
+peroxy
+peroxyl
+perozonid
+perozonide
+perpend
+perpendicular
+perpendicularity
+perpendicularly
+perpera
+perperfect
+perpetrable
+perpetrate
+perpetration
+perpetrator
+perpetratress
+perpetratrix
+perpetuable
+perpetual
+perpetualism
+perpetualist
+perpetuality
+perpetually
+perpetualness
+perpetuana
+perpetuance
+perpetuant
+perpetuate
+perpetuation
+perpetuator
+perpetuity
+perplantar
+perplex
+perplexable
+perplexed
+perplexedly
+perplexedness
+perplexer
+perplexing
+perplexingly
+perplexity
+perplexment
+perplication
+perquadrat
+perquest
+perquisite
+perquisition
+perquisitor
+perradial
+perradially
+perradiate
+perradius
+perridiculous
+perrier
+Perrinist
+perron
+perruche
+perrukery
+perruthenate
+perruthenic
+Perry
+perry
+perryman
+Persae
+persalt
+perscent
+perscribe
+perscrutate
+perscrutation
+perscrutator
+perse
+Persea
+persecute
+persecutee
+persecuting
+persecutingly
+persecution
+persecutional
+persecutive
+persecutiveness
+persecutor
+persecutory
+persecutress
+persecutrix
+Perseid
+perseite
+perseitol
+perseity
+persentiscency
+Persephassa
+Persepolitan
+perseverance
+perseverant
+perseverate
+perseveration
+persevere
+persevering
+perseveringly
+Persian
+Persianist
+Persianization
+Persianize
+Persic
+Persicaria
+persicary
+Persicize
+persico
+persicot
+persienne
+persiennes
+persiflage
+persiflate
+persilicic
+persimmon
+Persis
+persis
+Persism
+persist
+persistence
+persistency
+persistent
+persistently
+persister
+persisting
+persistingly
+persistive
+persistively
+persistiveness
+persnickety
+person
+persona
+personable
+personableness
+personably
+personage
+personal
+personalia
+personalism
+personalist
+personalistic
+personality
+personalization
+personalize
+personally
+personalness
+personalty
+personate
+personately
+personating
+personation
+personative
+personator
+personed
+personeity
+personifiable
+personifiant
+personification
+personificative
+personificator
+personifier
+personify
+personization
+personize
+personnel
+personship
+perspection
+perspective
+perspectived
+perspectiveless
+perspectively
+perspectivity
+perspectograph
+perspectometer
+perspicacious
+perspicaciously
+perspicaciousness
+perspicacity
+perspicuity
+perspicuous
+perspicuously
+perspicuousness
+perspirability
+perspirable
+perspirant
+perspirate
+perspiration
+perspirative
+perspiratory
+perspire
+perspiringly
+perspiry
+perstringe
+perstringement
+persuadability
+persuadable
+persuadableness
+persuadably
+persuade
+persuaded
+persuadedly
+persuadedness
+persuader
+persuadingly
+persuasibility
+persuasible
+persuasibleness
+persuasibly
+persuasion
+persuasive
+persuasively
+persuasiveness
+persuasory
+persulphate
+persulphide
+persulphocyanate
+persulphocyanic
+persulphuric
+persymmetric
+persymmetrical
+pert
+pertain
+pertaining
+pertainment
+perten
+perthiocyanate
+perthiocyanic
+perthiotophyre
+perthite
+perthitic
+perthitically
+perthosite
+pertinacious
+pertinaciously
+pertinaciousness
+pertinacity
+pertinence
+pertinency
+pertinent
+pertinently
+pertinentness
+pertish
+pertly
+pertness
+perturb
+perturbability
+perturbable
+perturbance
+perturbancy
+perturbant
+perturbate
+perturbation
+perturbational
+perturbatious
+perturbative
+perturbator
+perturbatory
+perturbatress
+perturbatrix
+perturbed
+perturbedly
+perturbedness
+perturber
+perturbing
+perturbingly
+perturbment
+Pertusaria
+Pertusariaceae
+pertuse
+pertused
+pertusion
+pertussal
+pertussis
+perty
+Peru
+Perugian
+Peruginesque
+peruke
+perukeless
+perukier
+perukiership
+perula
+Perularia
+perulate
+perule
+Perun
+perusable
+perusal
+peruse
+peruser
+Peruvian
+Peruvianize
+pervade
+pervadence
+pervader
+pervading
+pervadingly
+pervadingness
+pervagate
+pervagation
+pervalvar
+pervasion
+pervasive
+pervasively
+pervasiveness
+perverse
+perversely
+perverseness
+perversion
+perversity
+perversive
+pervert
+perverted
+pervertedly
+pervertedness
+perverter
+pervertibility
+pervertible
+pervertibly
+pervertive
+perviability
+perviable
+pervicacious
+pervicaciously
+pervicaciousness
+pervicacity
+pervigilium
+pervious
+perviously
+perviousness
+pervulgate
+pervulgation
+perwitsky
+pes
+pesa
+Pesach
+pesade
+pesage
+Pesah
+peseta
+peshkar
+peshkash
+peshwa
+peshwaship
+peskily
+peskiness
+pesky
+peso
+pess
+pessary
+pessimal
+pessimism
+pessimist
+pessimistic
+pessimistically
+pessimize
+pessimum
+pessomancy
+pessoner
+pessular
+pessulus
+pest
+Pestalozzian
+Pestalozzianism
+peste
+pester
+pesterer
+pesteringly
+pesterment
+pesterous
+pestersome
+pestful
+pesthole
+pesthouse
+pesticidal
+pesticide
+pestiduct
+pestiferous
+pestiferously
+pestiferousness
+pestifugous
+pestify
+pestilence
+pestilenceweed
+pestilencewort
+pestilent
+pestilential
+pestilentially
+pestilentialness
+pestilently
+pestle
+pestological
+pestologist
+pestology
+pestproof
+pet
+petal
+petalage
+petaled
+Petalia
+petaliferous
+petaliform
+Petaliidae
+petaline
+petalism
+petalite
+petalled
+petalless
+petallike
+petalocerous
+petalodic
+petalodont
+petalodontid
+Petalodontidae
+petalodontoid
+Petalodus
+petalody
+petaloid
+petaloidal
+petaloideous
+petalomania
+petalon
+Petalostemon
+petalous
+petalwise
+petaly
+petard
+petardeer
+petardier
+petary
+Petasites
+petasos
+petasus
+petaurine
+petaurist
+Petaurista
+Petauristidae
+Petauroides
+Petaurus
+petchary
+petcock
+Pete
+pete
+peteca
+petechiae
+petechial
+petechiate
+peteman
+Peter
+peter
+Peterkin
+Peterloo
+peterman
+peternet
+petersham
+peterwort
+petful
+petiolar
+petiolary
+Petiolata
+petiolate
+petiolated
+petiole
+petioled
+Petioliventres
+petiolular
+petiolulate
+petiolule
+petiolus
+petit
+petite
+petiteness
+petitgrain
+petition
+petitionable
+petitional
+petitionarily
+petitionary
+petitionee
+petitioner
+petitionist
+petitionproof
+petitor
+petitory
+Petiveria
+Petiveriaceae
+petkin
+petling
+peto
+Petr
+Petrarchal
+Petrarchan
+Petrarchesque
+Petrarchian
+Petrarchianism
+Petrarchism
+Petrarchist
+Petrarchistic
+Petrarchistical
+Petrarchize
+petrary
+petre
+Petrea
+petrean
+petreity
+petrel
+petrescence
+petrescent
+Petricola
+Petricolidae
+petricolous
+petrie
+petrifaction
+petrifactive
+petrifiable
+petrific
+petrificant
+petrificate
+petrification
+petrified
+petrifier
+petrify
+Petrine
+Petrinism
+Petrinist
+Petrinize
+petrissage
+Petrobium
+Petrobrusian
+petrochemical
+petrochemistry
+Petrogale
+petrogenesis
+petrogenic
+petrogeny
+petroglyph
+petroglyphic
+petroglyphy
+petrograph
+petrographer
+petrographic
+petrographical
+petrographically
+petrography
+petrohyoid
+petrol
+petrolage
+petrolatum
+petrolean
+petrolene
+petroleous
+petroleum
+petrolic
+petroliferous
+petrolific
+petrolist
+petrolithic
+petrolization
+petrolize
+petrologic
+petrological
+petrologically
+petromastoid
+Petromyzon
+Petromyzonidae
+petromyzont
+Petromyzontes
+Petromyzontidae
+petromyzontoid
+petronel
+petronella
+petropharyngeal
+petrophilous
+petrosa
+petrosal
+Petroselinum
+petrosilex
+petrosiliceous
+petrosilicious
+petrosphenoid
+petrosphenoidal
+petrosphere
+petrosquamosal
+petrosquamous
+petrostearin
+petrostearine
+petrosum
+petrotympanic
+petrous
+petroxolin
+pettable
+petted
+pettedly
+pettedness
+petter
+pettichaps
+petticoat
+petticoated
+petticoaterie
+petticoatery
+petticoatism
+petticoatless
+petticoaty
+pettifog
+pettifogger
+pettifoggery
+pettifogging
+pettifogulize
+pettifogulizer
+pettily
+pettiness
+pettingly
+pettish
+pettitoes
+pettle
+petty
+pettyfog
+petulance
+petulancy
+petulant
+petulantly
+petune
+Petunia
+petuntse
+petwood
+petzite
+Peucedanum
+Peucetii
+peucites
+peuhl
+Peul
+Peumus
+Peutingerian
+pew
+pewage
+pewdom
+pewee
+pewfellow
+pewful
+pewholder
+pewing
+pewit
+pewless
+pewmate
+pewter
+pewterer
+pewterwort
+pewtery
+pewy
+Peyerian
+peyote
+peyotl
+peyton
+peytrel
+pezantic
+Peziza
+Pezizaceae
+pezizaceous
+pezizaeform
+Pezizales
+peziziform
+pezizoid
+pezograph
+Pezophaps
+Pfaffian
+pfeffernuss
+Pfeifferella
+pfennig
+pfui
+pfund
+Phaca
+Phacelia
+phacelite
+phacella
+Phacidiaceae
+Phacidiales
+phacitis
+phacoanaphylaxis
+phacocele
+phacochere
+phacocherine
+phacochoere
+phacochoerid
+phacochoerine
+phacochoeroid
+Phacochoerus
+phacocyst
+phacocystectomy
+phacocystitis
+phacoglaucoma
+phacoid
+phacoidal
+phacoidoscope
+phacolite
+phacolith
+phacolysis
+phacomalacia
+phacometer
+phacopid
+Phacopidae
+Phacops
+phacosclerosis
+phacoscope
+phacotherapy
+Phaeacian
+Phaedo
+phaeism
+phaenantherous
+phaenanthery
+phaenogam
+Phaenogamia
+phaenogamian
+phaenogamic
+phaenogamous
+phaenogenesis
+phaenogenetic
+phaenological
+phaenology
+phaenomenal
+phaenomenism
+phaenomenon
+phaenozygous
+phaeochrous
+Phaeodaria
+phaeodarian
+phaeophore
+Phaeophyceae
+phaeophycean
+phaeophyceous
+phaeophyll
+Phaeophyta
+phaeophytin
+phaeoplast
+Phaeosporales
+phaeospore
+Phaeosporeae
+phaeosporous
+Phaet
+Phaethon
+Phaethonic
+Phaethontes
+Phaethontic
+Phaethontidae
+Phaethusa
+phaeton
+phage
+phagedena
+phagedenic
+phagedenical
+phagedenous
+Phagineae
+phagocytable
+phagocytal
+phagocyte
+phagocyter
+phagocytic
+phagocytism
+phagocytize
+phagocytoblast
+phagocytolysis
+phagocytolytic
+phagocytose
+phagocytosis
+phagodynamometer
+phagolysis
+phagolytic
+phagomania
+phainolion
+Phainopepla
+Phajus
+Phalacrocoracidae
+phalacrocoracine
+Phalacrocorax
+phalacrosis
+Phalaecean
+Phalaecian
+Phalaenae
+Phalaenidae
+phalaenopsid
+Phalaenopsis
+phalangal
+phalange
+phalangeal
+phalangean
+phalanger
+Phalangeridae
+Phalangerinae
+phalangerine
+phalanges
+phalangette
+phalangian
+phalangic
+phalangid
+Phalangida
+phalangidan
+Phalangidea
+phalangidean
+Phalangides
+phalangiform
+Phalangigrada
+phalangigrade
+phalangigrady
+phalangiid
+Phalangiidae
+phalangist
+Phalangista
+Phalangistidae
+phalangistine
+phalangite
+phalangitic
+phalangitis
+Phalangium
+phalangologist
+phalangology
+phalansterial
+phalansterian
+phalansterianism
+phalansteric
+phalansterism
+phalansterist
+phalanstery
+phalanx
+phalanxed
+phalarica
+Phalaris
+Phalarism
+phalarope
+Phalaropodidae
+phalera
+phalerate
+phalerated
+Phaleucian
+Phallaceae
+phallaceous
+Phallales
+phallalgia
+phallaneurysm
+phallephoric
+phallic
+phallical
+phallicism
+phallicist
+phallin
+phallism
+phallist
+phallitis
+phallocrypsis
+phallodynia
+phalloid
+phalloncus
+phalloplasty
+phallorrhagia
+phallus
+Phanar
+Phanariot
+Phanariote
+phanatron
+phaneric
+phanerite
+Phanerocarpae
+Phanerocarpous
+Phanerocephala
+phanerocephalous
+phanerocodonic
+phanerocryst
+phanerocrystalline
+phanerogam
+Phanerogamia
+phanerogamian
+phanerogamic
+phanerogamous
+phanerogamy
+phanerogenetic
+phanerogenic
+Phaneroglossa
+phaneroglossal
+phaneroglossate
+phaneromania
+phaneromere
+phaneromerous
+phaneroscope
+phanerosis
+phanerozoic
+phanerozonate
+Phanerozonia
+phanic
+phano
+phansigar
+phantascope
+phantasia
+Phantasiast
+Phantasiastic
+phantasist
+phantasize
+phantasm
+phantasma
+phantasmagoria
+phantasmagorial
+phantasmagorially
+phantasmagorian
+phantasmagoric
+phantasmagorical
+phantasmagorist
+phantasmagory
+phantasmal
+phantasmalian
+phantasmality
+phantasmally
+phantasmascope
+phantasmata
+Phantasmatic
+phantasmatic
+phantasmatical
+phantasmatically
+phantasmatography
+phantasmic
+phantasmical
+phantasmically
+Phantasmist
+phantasmogenesis
+phantasmogenetic
+phantasmograph
+phantasmological
+phantasmology
+phantast
+phantasy
+phantom
+phantomatic
+phantomic
+phantomical
+phantomically
+Phantomist
+phantomize
+phantomizer
+phantomland
+phantomlike
+phantomnation
+phantomry
+phantomship
+phantomy
+phantoplex
+phantoscope
+Pharaoh
+Pharaonic
+Pharaonical
+Pharbitis
+phare
+Phareodus
+Pharian
+Pharisaean
+Pharisaic
+pharisaical
+pharisaically
+pharisaicalness
+Pharisaism
+Pharisaist
+Pharisean
+Pharisee
+pharisee
+Phariseeism
+pharmacal
+pharmaceutic
+pharmaceutical
+pharmaceutically
+pharmaceutics
+pharmaceutist
+pharmacic
+pharmacist
+pharmacite
+pharmacodiagnosis
+pharmacodynamic
+pharmacodynamical
+pharmacodynamics
+pharmacoendocrinology
+pharmacognosia
+pharmacognosis
+pharmacognosist
+pharmacognostical
+pharmacognostically
+pharmacognostics
+pharmacognosy
+pharmacography
+pharmacolite
+pharmacologia
+pharmacologic
+pharmacological
+pharmacologically
+pharmacologist
+pharmacology
+pharmacomania
+pharmacomaniac
+pharmacomaniacal
+pharmacometer
+pharmacopedia
+pharmacopedic
+pharmacopedics
+pharmacopeia
+pharmacopeial
+pharmacopeian
+pharmacophobia
+pharmacopoeia
+pharmacopoeial
+pharmacopoeian
+pharmacopoeist
+pharmacopolist
+pharmacoposia
+pharmacopsychology
+pharmacosiderite
+pharmacotherapy
+pharmacy
+pharmakos
+pharmic
+pharmuthi
+pharology
+Pharomacrus
+pharos
+Pharsalian
+pharyngal
+pharyngalgia
+pharyngalgic
+pharyngeal
+pharyngectomy
+pharyngemphraxis
+pharynges
+pharyngic
+pharyngismus
+pharyngitic
+pharyngitis
+pharyngoamygdalitis
+pharyngobranch
+pharyngobranchial
+pharyngobranchiate
+Pharyngobranchii
+pharyngocele
+pharyngoceratosis
+pharyngodynia
+pharyngoepiglottic
+pharyngoepiglottidean
+pharyngoesophageal
+pharyngoglossal
+pharyngoglossus
+pharyngognath
+Pharyngognathi
+pharyngognathous
+pharyngographic
+pharyngography
+pharyngokeratosis
+pharyngolaryngeal
+pharyngolaryngitis
+pharyngolith
+pharyngological
+pharyngology
+pharyngomaxillary
+pharyngomycosis
+pharyngonasal
+pharyngopalatine
+pharyngopalatinus
+pharyngoparalysis
+pharyngopathy
+pharyngoplasty
+pharyngoplegia
+pharyngoplegic
+pharyngoplegy
+pharyngopleural
+Pharyngopneusta
+pharyngopneustal
+pharyngorhinitis
+pharyngorhinoscopy
+pharyngoscleroma
+pharyngoscope
+pharyngoscopy
+pharyngospasm
+pharyngotherapy
+pharyngotomy
+pharyngotonsillitis
+pharyngotyphoid
+pharyngoxerosis
+pharynogotome
+pharynx
+Phascaceae
+phascaceous
+Phascogale
+Phascolarctinae
+Phascolarctos
+phascolome
+Phascolomyidae
+Phascolomys
+Phascolonus
+Phascum
+phase
+phaseal
+phaseless
+phaselin
+phasemeter
+phasemy
+Phaseolaceae
+phaseolin
+phaseolous
+phaseolunatin
+Phaseolus
+phaseometer
+phases
+Phasianella
+Phasianellidae
+phasianic
+phasianid
+Phasianidae
+Phasianinae
+phasianine
+phasianoid
+Phasianus
+phasic
+Phasiron
+phasis
+phasm
+phasma
+phasmatid
+Phasmatida
+Phasmatidae
+Phasmatodea
+phasmatoid
+Phasmatoidea
+phasmatrope
+phasmid
+Phasmida
+Phasmidae
+phasmoid
+phasogeneous
+phasotropy
+pheal
+pheasant
+pheasantry
+pheasantwood
+Phebe
+Phecda
+Phegopteris
+Pheidole
+phellandrene
+phellem
+Phellodendron
+phelloderm
+phellodermal
+phellogen
+phellogenetic
+phellogenic
+phellonic
+phelloplastic
+phelloplastics
+phelonion
+phemic
+Phemie
+phenacaine
+phenacetin
+phenaceturic
+phenacite
+Phenacodontidae
+Phenacodus
+phenacyl
+phenakism
+phenakistoscope
+Phenalgin
+phenanthrene
+phenanthridine
+phenanthridone
+phenanthrol
+phenanthroline
+phenarsine
+phenate
+phenazine
+phenazone
+phene
+phenegol
+phenene
+phenethyl
+phenetidine
+phenetole
+phengite
+phengitical
+phenic
+phenicate
+phenicious
+phenicopter
+phenin
+phenmiazine
+phenobarbital
+phenocoll
+phenocopy
+phenocryst
+phenocrystalline
+phenogenesis
+phenogenetic
+phenol
+phenolate
+phenolic
+phenolization
+phenolize
+phenological
+phenologically
+phenologist
+phenology
+phenoloid
+phenolphthalein
+phenolsulphonate
+phenolsulphonephthalein
+phenolsulphonic
+phenomena
+phenomenal
+phenomenalism
+phenomenalist
+phenomenalistic
+phenomenalistically
+phenomenality
+phenomenalization
+phenomenalize
+phenomenally
+phenomenic
+phenomenical
+phenomenism
+phenomenist
+phenomenistic
+phenomenize
+phenomenological
+phenomenologically
+phenomenology
+phenomenon
+phenoplast
+phenoplastic
+phenoquinone
+phenosafranine
+phenosal
+phenospermic
+phenospermy
+phenothiazine
+phenotype
+phenotypic
+phenotypical
+phenotypically
+phenoxazine
+phenoxid
+phenoxide
+phenozygous
+Pheny
+phenyl
+phenylacetaldehyde
+phenylacetamide
+phenylacetic
+phenylalanine
+phenylamide
+phenylamine
+phenylate
+phenylation
+phenylboric
+phenylcarbamic
+phenylcarbimide
+phenylene
+phenylenediamine
+phenylethylene
+phenylglycine
+phenylglycolic
+phenylglyoxylic
+phenylhydrazine
+phenylhydrazone
+phenylic
+phenylmethane
+pheon
+pheophyl
+pheophyll
+pheophytin
+Pherecratean
+Pherecratian
+Pherecratic
+Pherephatta
+pheretrer
+Pherkad
+Pherophatta
+Phersephatta
+Phersephoneia
+phew
+phi
+phial
+phiale
+phialful
+phialide
+phialine
+phiallike
+phialophore
+phialospore
+Phidiac
+Phidian
+Phigalian
+Phil
+Philadelphian
+Philadelphianism
+philadelphite
+Philadelphus
+philadelphy
+philalethist
+philamot
+Philander
+philander
+philanderer
+philanthid
+Philanthidae
+philanthrope
+philanthropian
+philanthropic
+philanthropical
+philanthropically
+philanthropinism
+philanthropinist
+Philanthropinum
+philanthropism
+philanthropist
+philanthropistic
+philanthropize
+philanthropy
+Philanthus
+philantomba
+philarchaist
+philaristocracy
+philatelic
+philatelical
+philatelically
+philatelism
+philatelist
+philatelistic
+philately
+Philathea
+philathletic
+philematology
+Philepitta
+Philepittidae
+Philesia
+Philetaerus
+philharmonic
+philhellene
+philhellenic
+philhellenism
+philhellenist
+philhippic
+philhymnic
+philiater
+Philip
+Philippa
+Philippan
+Philippe
+Philippian
+Philippic
+philippicize
+Philippine
+Philippines
+Philippism
+Philippist
+Philippistic
+Philippizate
+philippize
+philippizer
+philippus
+Philistia
+Philistian
+Philistine
+Philistinely
+Philistinian
+Philistinic
+Philistinish
+Philistinism
+Philistinize
+Phill
+philliloo
+Phillip
+phillipsine
+phillipsite
+Phillis
+Phillyrea
+phillyrin
+philobiblian
+philobiblic
+philobiblical
+philobiblist
+philobotanic
+philobotanist
+philobrutish
+philocalic
+philocalist
+philocaly
+philocathartic
+philocatholic
+philocomal
+Philoctetes
+philocubist
+philocynic
+philocynical
+philocynicism
+philocyny
+philodemic
+Philodendron
+philodespot
+philodestructiveness
+Philodina
+Philodinidae
+philodox
+philodoxer
+philodoxical
+philodramatic
+philodramatist
+philofelist
+philofelon
+philogarlic
+philogastric
+philogeant
+philogenitive
+philogenitiveness
+philograph
+philographic
+philogynaecic
+philogynist
+philogynous
+philogyny
+Philohela
+philohellenian
+philokleptic
+philoleucosis
+philologaster
+philologastry
+philologer
+philologian
+philologic
+philological
+philologically
+philologist
+philologistic
+philologize
+philologue
+philology
+Philomachus
+philomath
+philomathematic
+philomathematical
+philomathic
+philomathical
+philomathy
+philomel
+Philomela
+philomelanist
+philomuse
+philomusical
+philomystic
+philonatural
+philoneism
+Philonian
+Philonic
+Philonism
+Philonist
+philonium
+philonoist
+philopagan
+philopater
+philopatrian
+philopena
+philophilosophos
+philopig
+philoplutonic
+philopoet
+philopogon
+philopolemic
+philopolemical
+philopornist
+philoprogeneity
+philoprogenitive
+philoprogenitiveness
+philopterid
+Philopteridae
+philopublican
+philoradical
+philorchidaceous
+philornithic
+philorthodox
+philosoph
+philosophaster
+philosophastering
+philosophastry
+philosophedom
+philosopheme
+philosopher
+philosopheress
+philosophership
+philosophic
+philosophical
+philosophically
+philosophicalness
+philosophicide
+philosophicohistorical
+philosophicojuristic
+philosophicolegal
+philosophicoreligious
+philosophicotheological
+philosophism
+philosophist
+philosophister
+philosophistic
+philosophistical
+philosophization
+philosophize
+philosophizer
+philosophling
+philosophobia
+philosophocracy
+philosophuncule
+philosophunculist
+philosophy
+philotadpole
+philotechnic
+philotechnical
+philotechnist
+philothaumaturgic
+philotheism
+philotheist
+philotheistic
+philotheosophical
+philotherian
+philotherianism
+Philotria
+Philoxenian
+philoxygenous
+philozoic
+philozoist
+philozoonist
+philter
+philterer
+philterproof
+philtra
+philtrum
+Philydraceae
+philydraceous
+Philyra
+phimosed
+phimosis
+phimotic
+Phineas
+Phiomia
+Phiroze
+phit
+phiz
+phizes
+phizog
+phlebalgia
+phlebangioma
+phlebarteriectasia
+phlebarteriodialysis
+phlebectasia
+phlebectasis
+phlebectasy
+phlebectomy
+phlebectopia
+phlebectopy
+phlebemphraxis
+phlebenteric
+phlebenterism
+phlebitic
+phlebitis
+Phlebodium
+phlebogram
+phlebograph
+phlebographical
+phlebography
+phleboid
+phleboidal
+phlebolite
+phlebolith
+phlebolithiasis
+phlebolithic
+phlebolitic
+phlebological
+phlebology
+phlebometritis
+phlebopexy
+phleboplasty
+phleborrhage
+phleborrhagia
+phleborrhaphy
+phleborrhexis
+phlebosclerosis
+phlebosclerotic
+phlebostasia
+phlebostasis
+phlebostenosis
+phlebostrepsis
+phlebothrombosis
+phlebotome
+phlebotomic
+phlebotomical
+phlebotomically
+phlebotomist
+phlebotomization
+phlebotomize
+Phlebotomus
+phlebotomus
+phlebotomy
+Phlegethon
+Phlegethontal
+Phlegethontic
+phlegm
+phlegma
+phlegmagogue
+phlegmasia
+phlegmatic
+phlegmatical
+phlegmatically
+phlegmaticalness
+phlegmaticly
+phlegmaticness
+phlegmatism
+phlegmatist
+phlegmatous
+phlegmless
+phlegmon
+phlegmonic
+phlegmonoid
+phlegmonous
+phlegmy
+Phleum
+phlobaphene
+phlobatannin
+phloem
+phloeophagous
+phloeoterma
+phlogisma
+phlogistian
+phlogistic
+phlogistical
+phlogisticate
+phlogistication
+phlogiston
+phlogistonism
+phlogistonist
+phlogogenetic
+phlogogenic
+phlogogenous
+phlogopite
+phlogosed
+Phlomis
+phloretic
+phloroglucic
+phloroglucin
+phlorone
+phloxin
+pho
+phobiac
+phobic
+phobism
+phobist
+phobophobia
+Phobos
+phoby
+phoca
+phocacean
+phocaceous
+Phocaean
+Phocaena
+Phocaenina
+phocaenine
+phocal
+Phocean
+phocenate
+phocenic
+phocenin
+Phocian
+phocid
+Phocidae
+phociform
+Phocinae
+phocine
+phocodont
+Phocodontia
+phocodontic
+Phocoena
+phocoid
+phocomelia
+phocomelous
+phocomelus
+Phoebe
+phoebe
+Phoebean
+Phoenicaceae
+phoenicaceous
+Phoenicales
+phoenicean
+Phoenician
+Phoenicianism
+Phoenicid
+phoenicite
+Phoenicize
+phoenicochroite
+Phoenicopteridae
+Phoenicopteriformes
+phoenicopteroid
+Phoenicopteroideae
+phoenicopterous
+Phoenicopterus
+Phoeniculidae
+Phoeniculus
+phoenicurous
+phoenigm
+Phoenix
+phoenix
+phoenixity
+phoenixlike
+phoh
+pholad
+Pholadacea
+pholadian
+pholadid
+Pholadidae
+Pholadinea
+pholadoid
+Pholas
+pholcid
+Pholcidae
+pholcoid
+Pholcus
+pholido
+pholidolite
+pholidosis
+Pholidota
+pholidote
+Pholiota
+Phoma
+Phomopsis
+phon
+phonal
+phonasthenia
+phonate
+phonation
+phonatory
+phonautogram
+phonautograph
+phonautographic
+phonautographically
+phone
+phoneidoscope
+phoneidoscopic
+Phonelescope
+phoneme
+phonemic
+phonemics
+phonendoscope
+phonesis
+phonestheme
+phonetic
+phonetical
+phonetically
+phonetician
+phoneticism
+phoneticist
+phoneticization
+phoneticize
+phoneticogrammatical
+phoneticohieroglyphic
+phonetics
+phonetism
+phonetist
+phonetization
+phonetize
+phoniatrics
+phoniatry
+phonic
+phonics
+phonikon
+phonism
+phono
+phonocamptic
+phonocinematograph
+phonodeik
+phonodynamograph
+phonoglyph
+phonogram
+phonogramic
+phonogramically
+phonogrammatic
+phonogrammatical
+phonogrammic
+phonogrammically
+phonograph
+phonographer
+phonographic
+phonographical
+phonographically
+phonographist
+phonography
+phonolite
+phonolitic
+phonologer
+phonologic
+phonological
+phonologically
+phonologist
+phonology
+phonometer
+phonometric
+phonometry
+phonomimic
+phonomotor
+phonopathy
+phonophile
+phonophobia
+phonophone
+phonophore
+phonophoric
+phonophorous
+phonophote
+phonophotography
+phonophotoscope
+phonophotoscopic
+phonoplex
+phonoscope
+phonotelemeter
+phonotype
+phonotyper
+phonotypic
+phonotypical
+phonotypically
+phonotypist
+phonotypy
+phony
+phoo
+Phora
+Phoradendron
+phoranthium
+phoresis
+phoresy
+phoria
+phorid
+Phoridae
+phorminx
+Phormium
+phorology
+phorometer
+phorometric
+phorometry
+phorone
+phoronic
+phoronid
+Phoronida
+Phoronidea
+Phoronis
+phoronomia
+phoronomic
+phoronomically
+phoronomics
+phoronomy
+Phororhacidae
+Phororhacos
+phoroscope
+phorozooid
+phos
+phose
+phosgene
+phosgenic
+phosgenite
+phosis
+phosphagen
+phospham
+phosphamic
+phosphamide
+phosphamidic
+phosphammonium
+phosphatase
+phosphate
+phosphated
+phosphatemia
+phosphatese
+phosphatic
+phosphatide
+phosphation
+phosphatization
+phosphatize
+phosphaturia
+phosphaturic
+phosphene
+phosphenyl
+phosphide
+phosphinate
+phosphine
+phosphinic
+phosphite
+phospho
+phosphoaminolipide
+phosphocarnic
+phosphocreatine
+phosphoferrite
+phosphoglycerate
+phosphoglyceric
+phosphoglycoprotein
+phospholipide
+phospholipin
+phosphomolybdate
+phosphomolybdic
+phosphonate
+phosphonic
+phosphonium
+phosphophyllite
+phosphoprotein
+phosphor
+phosphorate
+phosphore
+phosphoreal
+phosphorent
+phosphoreous
+phosphoresce
+phosphorescence
+phosphorescent
+phosphorescently
+phosphoreted
+phosphorhidrosis
+phosphori
+phosphoric
+phosphorical
+phosphoriferous
+phosphorism
+phosphorite
+phosphoritic
+phosphorize
+phosphorogen
+phosphorogenic
+phosphorograph
+phosphorographic
+phosphorography
+phosphoroscope
+phosphorous
+phosphoruria
+phosphorus
+phosphoryl
+phosphorylase
+phosphorylation
+phosphosilicate
+phosphotartaric
+phosphotungstate
+phosphotungstic
+phosphowolframic
+phosphuranylite
+phosphuret
+phosphuria
+phosphyl
+phossy
+phot
+photaesthesia
+photaesthesis
+photaesthetic
+photal
+photalgia
+photechy
+photelectrograph
+photeolic
+photerythrous
+photesthesis
+photic
+photics
+Photinia
+Photinian
+Photinianism
+photism
+photistic
+photo
+photoactinic
+photoactivate
+photoactivation
+photoactive
+photoactivity
+photoaesthetic
+photoalbum
+photoalgraphy
+photoanamorphosis
+photoaquatint
+Photobacterium
+photobathic
+photobiotic
+photobromide
+photocampsis
+photocatalysis
+photocatalyst
+photocatalytic
+photocatalyzer
+photocell
+photocellulose
+photoceptor
+photoceramic
+photoceramics
+photoceramist
+photochemic
+photochemical
+photochemically
+photochemigraphy
+photochemist
+photochemistry
+photochloride
+photochlorination
+photochromascope
+photochromatic
+photochrome
+photochromic
+photochromography
+photochromolithograph
+photochromoscope
+photochromotype
+photochromotypy
+photochromy
+photochronograph
+photochronographic
+photochronographical
+photochronographically
+photochronography
+photocollograph
+photocollographic
+photocollography
+photocollotype
+photocombustion
+photocompose
+photocomposition
+photoconductivity
+photocopier
+photocopy
+photocrayon
+photocurrent
+photodecomposition
+photodensitometer
+photodermatic
+photodermatism
+photodisintegration
+photodissociation
+photodrama
+photodramatic
+photodramatics
+photodramatist
+photodramaturgic
+photodramaturgy
+photodrome
+photodromy
+photodynamic
+photodynamical
+photodynamically
+photodynamics
+photodysphoria
+photoelastic
+photoelasticity
+photoelectric
+photoelectrical
+photoelectrically
+photoelectricity
+photoelectron
+photoelectrotype
+photoemission
+photoemissive
+photoengrave
+photoengraver
+photoengraving
+photoepinastic
+photoepinastically
+photoepinasty
+photoesthesis
+photoesthetic
+photoetch
+photoetcher
+photoetching
+photofilm
+photofinish
+photofinisher
+photofinishing
+photofloodlamp
+photogalvanograph
+photogalvanographic
+photogalvanography
+photogastroscope
+photogelatin
+photogen
+photogene
+photogenetic
+photogenic
+photogenically
+photogenous
+photoglyph
+photoglyphic
+photoglyphography
+photoglyphy
+photoglyptic
+photoglyptography
+photogram
+photogrammeter
+photogrammetric
+photogrammetrical
+photogrammetry
+photograph
+photographable
+photographee
+photographer
+photographeress
+photographess
+photographic
+photographical
+photographically
+photographist
+photographize
+photographometer
+photography
+photogravure
+photogravurist
+photogyric
+photohalide
+photoheliograph
+photoheliographic
+photoheliography
+photoheliometer
+photohyponastic
+photohyponastically
+photohyponasty
+photoimpression
+photoinactivation
+photoinduction
+photoinhibition
+photointaglio
+photoionization
+photoisomeric
+photoisomerization
+photokinesis
+photokinetic
+photolith
+photolitho
+photolithograph
+photolithographer
+photolithographic
+photolithography
+photologic
+photological
+photologist
+photology
+photoluminescence
+photoluminescent
+photolysis
+photolyte
+photolytic
+photoma
+photomacrograph
+photomagnetic
+photomagnetism
+photomap
+photomapper
+photomechanical
+photomechanically
+photometeor
+photometer
+photometric
+photometrical
+photometrically
+photometrician
+photometrist
+photometrograph
+photometry
+photomezzotype
+photomicrogram
+photomicrograph
+photomicrographer
+photomicrographic
+photomicrography
+photomicroscope
+photomicroscopic
+photomicroscopy
+photomontage
+photomorphosis
+photomural
+photon
+photonastic
+photonasty
+photonegative
+photonephograph
+photonephoscope
+photoneutron
+photonosus
+photooxidation
+photooxidative
+photopathic
+photopathy
+photoperceptive
+photoperimeter
+photoperiod
+photoperiodic
+photoperiodism
+photophane
+photophile
+photophilic
+photophilous
+photophily
+photophobe
+photophobia
+photophobic
+photophobous
+photophone
+photophonic
+photophony
+photophore
+photophoresis
+photophosphorescent
+photophygous
+photophysical
+photophysicist
+photopia
+photopic
+photopile
+photopitometer
+photoplay
+photoplayer
+photoplaywright
+photopography
+photopolarigraph
+photopolymerization
+photopositive
+photoprint
+photoprinter
+photoprinting
+photoprocess
+photoptometer
+photoradio
+photoradiogram
+photoreception
+photoreceptive
+photoreceptor
+photoregression
+photorelief
+photoresistance
+photosalt
+photosantonic
+photoscope
+photoscopic
+photoscopy
+photosculptural
+photosculpture
+photosensitive
+photosensitiveness
+photosensitivity
+photosensitization
+photosensitize
+photosensitizer
+photosensory
+photospectroheliograph
+photospectroscope
+photospectroscopic
+photospectroscopical
+photospectroscopy
+photosphere
+photospheric
+photostability
+photostable
+Photostat
+photostat
+photostationary
+photostereograph
+photosurveying
+photosyntax
+photosynthate
+photosynthesis
+photosynthesize
+photosynthetic
+photosynthetically
+photosynthometer
+phototachometer
+phototachometric
+phototachometrical
+phototachometry
+phototactic
+phototactically
+phototactism
+phototaxis
+phototaxy
+phototechnic
+phototelegraph
+phototelegraphic
+phototelegraphically
+phototelegraphy
+phototelephone
+phototelephony
+phototelescope
+phototelescopic
+phototheodolite
+phototherapeutic
+phototherapeutics
+phototherapic
+phototherapist
+phototherapy
+photothermic
+phototonic
+phototonus
+phototopographic
+phototopographical
+phototopography
+phototrichromatic
+phototrope
+phototrophic
+phototrophy
+phototropic
+phototropically
+phototropism
+phototropy
+phototube
+phototype
+phototypic
+phototypically
+phototypist
+phototypographic
+phototypography
+phototypy
+photovisual
+photovitrotype
+photovoltaic
+photoxylography
+photozinco
+photozincograph
+photozincographic
+photozincography
+photozincotype
+photozincotypy
+photuria
+Phractamphibia
+phragma
+Phragmidium
+Phragmites
+phragmocone
+phragmoconic
+Phragmocyttares
+phragmocyttarous
+phragmoid
+phragmosis
+phrasable
+phrasal
+phrasally
+phrase
+phraseable
+phraseless
+phrasemaker
+phrasemaking
+phraseman
+phrasemonger
+phrasemongering
+phrasemongery
+phraseogram
+phraseograph
+phraseographic
+phraseography
+phraseological
+phraseologically
+phraseologist
+phraseology
+phraser
+phrasify
+phrasiness
+phrasing
+phrasy
+phrator
+phratral
+phratria
+phratriac
+phratrial
+phratry
+phreatic
+phreatophyte
+phrenesia
+phrenesiac
+phrenesis
+phrenetic
+phrenetically
+phreneticness
+phrenic
+phrenicectomy
+phrenicocolic
+phrenicocostal
+phrenicogastric
+phrenicoglottic
+phrenicohepatic
+phrenicolienal
+phrenicopericardiac
+phrenicosplenic
+phrenicotomy
+phrenics
+phrenitic
+phrenitis
+phrenocardia
+phrenocardiac
+phrenocolic
+phrenocostal
+phrenodynia
+phrenogastric
+phrenoglottic
+phrenogram
+phrenograph
+phrenography
+phrenohepatic
+phrenologer
+phrenologic
+phrenological
+phrenologically
+phrenologist
+phrenologize
+phrenology
+phrenomagnetism
+phrenomesmerism
+phrenopathia
+phrenopathic
+phrenopathy
+phrenopericardiac
+phrenoplegia
+phrenoplegy
+phrenosin
+phrenosinic
+phrenospasm
+phrenosplenic
+phronesis
+Phronima
+Phronimidae
+phrontisterion
+phrontisterium
+phrontistery
+Phryganea
+phryganeid
+Phryganeidae
+phryganeoid
+Phrygian
+Phrygianize
+phrygium
+Phryma
+Phrymaceae
+phrymaceous
+phrynid
+Phrynidae
+phrynin
+phrynoid
+Phrynosoma
+phthalacene
+phthalan
+phthalanilic
+phthalate
+phthalazin
+phthalazine
+phthalein
+phthaleinometer
+phthalic
+phthalid
+phthalide
+phthalimide
+phthalin
+phthalocyanine
+phthalyl
+phthanite
+Phthartolatrae
+phthinoid
+phthiocol
+phthiriasis
+Phthirius
+phthirophagous
+phthisic
+phthisical
+phthisicky
+phthisiogenesis
+phthisiogenetic
+phthisiogenic
+phthisiologist
+phthisiology
+phthisiophobia
+phthisiotherapeutic
+phthisiotherapy
+phthisipneumonia
+phthisipneumony
+phthisis
+phthongal
+phthongometer
+phthor
+phthoric
+phu
+phugoid
+phulkari
+phulwa
+phulwara
+phut
+Phyciodes
+phycite
+Phycitidae
+phycitol
+phycochromaceae
+phycochromaceous
+phycochrome
+Phycochromophyceae
+phycochromophyceous
+phycocyanin
+phycocyanogen
+Phycodromidae
+phycoerythrin
+phycography
+phycological
+phycologist
+phycology
+Phycomyces
+phycomycete
+Phycomycetes
+phycomycetous
+phycophaein
+phycoxanthin
+phycoxanthine
+phygogalactic
+phyla
+phylacobiosis
+phylacobiotic
+phylacteric
+phylacterical
+phylacteried
+phylacterize
+phylactery
+phylactic
+phylactocarp
+phylactocarpal
+Phylactolaema
+Phylactolaemata
+phylactolaematous
+Phylactolema
+Phylactolemata
+phylarch
+phylarchic
+phylarchical
+phylarchy
+phyle
+phylephebic
+phylesis
+phyletic
+phyletically
+phyletism
+phylic
+Phyllachora
+Phyllactinia
+phyllade
+Phyllanthus
+phyllary
+Phyllaurea
+phylliform
+phyllin
+phylline
+Phyllis
+phyllite
+phyllitic
+Phyllitis
+Phyllium
+phyllobranchia
+phyllobranchial
+phyllobranchiate
+Phyllocactus
+phyllocarid
+Phyllocarida
+phyllocaridan
+Phylloceras
+phyllocerate
+Phylloceratidae
+phylloclad
+phylloclade
+phyllocladioid
+phyllocladium
+phyllocladous
+phyllocyanic
+phyllocyanin
+phyllocyst
+phyllocystic
+phyllode
+phyllodial
+phyllodination
+phyllodineous
+phyllodiniation
+phyllodinous
+phyllodium
+Phyllodoce
+phyllody
+phylloerythrin
+phyllogenetic
+phyllogenous
+phylloid
+phylloidal
+phylloideous
+phyllomancy
+phyllomania
+phyllome
+phyllomic
+phyllomorph
+phyllomorphic
+phyllomorphosis
+phyllomorphy
+Phyllophaga
+phyllophagous
+phyllophore
+phyllophorous
+phyllophyllin
+phyllophyte
+phyllopod
+Phyllopoda
+phyllopodan
+phyllopode
+phyllopodiform
+phyllopodium
+phyllopodous
+phylloporphyrin
+Phyllopteryx
+phylloptosis
+phyllopyrrole
+phyllorhine
+phyllorhinine
+phylloscopine
+Phylloscopus
+phyllosiphonic
+phyllosoma
+Phyllosomata
+phyllosome
+Phyllospondyli
+phyllospondylous
+Phyllostachys
+Phyllosticta
+Phyllostoma
+Phyllostomatidae
+Phyllostomatinae
+phyllostomatoid
+phyllostomatous
+phyllostome
+Phyllostomidae
+Phyllostominae
+phyllostomine
+phyllostomous
+Phyllostomus
+phyllotactic
+phyllotactical
+phyllotaxis
+phyllotaxy
+phyllous
+phylloxanthin
+Phylloxera
+phylloxeran
+phylloxeric
+Phylloxeridae
+phyllozooid
+phylogenetic
+phylogenetical
+phylogenetically
+phylogenic
+phylogenist
+phylogeny
+phylogerontic
+phylogerontism
+phylography
+phylology
+phylon
+phyloneanic
+phylonepionic
+phylum
+phyma
+phymata
+phymatic
+phymatid
+Phymatidae
+Phymatodes
+phymatoid
+phymatorhysin
+phymatosis
+Phymosia
+Physa
+physagogue
+Physalia
+physalian
+Physaliidae
+Physalis
+physalite
+Physalospora
+Physapoda
+Physaria
+Physcia
+Physciaceae
+physcioid
+Physcomitrium
+Physeter
+Physeteridae
+Physeterinae
+physeterine
+physeteroid
+Physeteroidea
+physharmonica
+physianthropy
+physiatric
+physiatrical
+physiatrics
+physic
+physical
+physicalism
+physicalist
+physicalistic
+physicalistically
+physicality
+physically
+physicalness
+physician
+physicianary
+physiciancy
+physicianed
+physicianer
+physicianess
+physicianless
+physicianly
+physicianship
+physicism
+physicist
+physicked
+physicker
+physicking
+physicky
+physicoastronomical
+physicobiological
+physicochemic
+physicochemical
+physicochemically
+physicochemist
+physicochemistry
+physicogeographical
+physicologic
+physicological
+physicomathematical
+physicomathematics
+physicomechanical
+physicomedical
+physicomental
+physicomorph
+physicomorphic
+physicomorphism
+physicooptics
+physicophilosophical
+physicophilosophy
+physicophysiological
+physicopsychical
+physicosocial
+physicotheological
+physicotheologist
+physicotheology
+physicotherapeutic
+physicotherapeutics
+physicotherapy
+physics
+Physidae
+physiform
+physiochemical
+physiochemically
+physiocracy
+physiocrat
+physiocratic
+physiocratism
+physiocratist
+physiogenesis
+physiogenetic
+physiogenic
+physiogeny
+physiognomic
+physiognomical
+physiognomically
+physiognomics
+physiognomist
+physiognomize
+physiognomonic
+physiognomonical
+physiognomy
+physiogony
+physiographer
+physiographic
+physiographical
+physiographically
+physiography
+physiolater
+physiolatrous
+physiolatry
+physiologer
+physiologian
+physiological
+physiologically
+physiologicoanatomic
+physiologist
+physiologize
+physiologue
+physiologus
+physiology
+physiopathological
+physiophilist
+physiophilosopher
+physiophilosophical
+physiophilosophy
+physiopsychic
+physiopsychical
+physiopsychological
+physiopsychology
+physiosociological
+physiosophic
+physiosophy
+physiotherapeutic
+physiotherapeutical
+physiotherapeutics
+physiotherapist
+physiotherapy
+physiotype
+physiotypy
+physique
+physiqued
+physitheism
+physitheistic
+physitism
+physiurgic
+physiurgy
+physocarpous
+Physocarpus
+physocele
+physoclist
+Physoclisti
+physoclistic
+physoclistous
+Physoderma
+physogastric
+physogastrism
+physogastry
+physometra
+Physonectae
+physonectous
+Physophorae
+physophoran
+physophore
+physophorous
+physopod
+Physopoda
+physopodan
+Physostegia
+Physostigma
+physostigmine
+physostomatous
+physostome
+Physostomi
+physostomous
+phytalbumose
+phytase
+Phytelephas
+Phyteus
+phytic
+phytiferous
+phytiform
+phytin
+phytivorous
+phytobacteriology
+phytobezoar
+phytobiological
+phytobiology
+phytochemical
+phytochemistry
+phytochlorin
+phytocidal
+phytodynamics
+phytoecological
+phytoecologist
+phytoecology
+Phytoflagellata
+phytogamy
+phytogenesis
+phytogenetic
+phytogenetical
+phytogenetically
+phytogenic
+phytogenous
+phytogeny
+phytogeographer
+phytogeographic
+phytogeographical
+phytogeographically
+phytogeography
+phytoglobulin
+phytograph
+phytographer
+phytographic
+phytographical
+phytographist
+phytography
+phytohormone
+phytoid
+phytol
+Phytolacca
+Phytolaccaceae
+phytolaccaceous
+phytolatrous
+phytolatry
+phytolithological
+phytolithologist
+phytolithology
+phytologic
+phytological
+phytologically
+phytologist
+phytology
+phytoma
+Phytomastigina
+Phytomastigoda
+phytome
+phytomer
+phytometer
+phytometric
+phytometry
+phytomonad
+Phytomonadida
+Phytomonadina
+Phytomonas
+phytomorphic
+phytomorphology
+phytomorphosis
+phyton
+phytonic
+phytonomy
+phytooecology
+phytopaleontologic
+phytopaleontological
+phytopaleontologist
+phytopaleontology
+phytoparasite
+phytopathogen
+phytopathogenic
+phytopathologic
+phytopathological
+phytopathologist
+phytopathology
+Phytophaga
+phytophagan
+phytophagic
+Phytophagineae
+phytophagous
+phytophagy
+phytopharmacologic
+phytopharmacology
+phytophenological
+phytophenology
+phytophil
+phytophilous
+Phytophthora
+phytophylogenetic
+phytophylogenic
+phytophylogeny
+phytophysiological
+phytophysiology
+phytoplankton
+phytopsyche
+phytoptid
+Phytoptidae
+phytoptose
+phytoptosis
+Phytoptus
+phytorhodin
+phytosaur
+Phytosauria
+phytosaurian
+phytoserologic
+phytoserological
+phytoserologically
+phytoserology
+phytosis
+phytosociologic
+phytosociological
+phytosociologically
+phytosociologist
+phytosociology
+phytosterin
+phytosterol
+phytostrote
+phytosynthesis
+phytotaxonomy
+phytotechny
+phytoteratologic
+phytoteratological
+phytoteratologist
+phytoteratology
+Phytotoma
+Phytotomidae
+phytotomist
+phytotomy
+phytotopographical
+phytotopography
+phytotoxic
+phytotoxin
+phytovitellin
+Phytozoa
+phytozoan
+Phytozoaria
+phytozoon
+phytyl
+pi
+Pia
+pia
+piaba
+piacaba
+piacle
+piacular
+piacularity
+piacularly
+piacularness
+piaculum
+piaffe
+piaffer
+pial
+pialyn
+pian
+pianette
+pianic
+pianino
+pianism
+pianissimo
+pianist
+pianiste
+pianistic
+pianistically
+Piankashaw
+piannet
+piano
+pianoforte
+pianofortist
+pianograph
+Pianokoto
+Pianola
+pianola
+pianolist
+pianologue
+piarhemia
+piarhemic
+Piarist
+Piaroa
+Piaroan
+Piaropus
+Piarroan
+piassava
+Piast
+piaster
+piastre
+piation
+piazine
+piazza
+piazzaed
+piazzaless
+piazzalike
+piazzian
+pibcorn
+piblokto
+pibroch
+pic
+Pica
+pica
+picador
+picadura
+Picae
+pical
+picamar
+picara
+Picard
+picarel
+picaresque
+Picariae
+picarian
+Picarii
+picaro
+picaroon
+picary
+picayune
+picayunish
+picayunishly
+picayunishness
+piccadill
+piccadilly
+piccalilli
+piccolo
+piccoloist
+pice
+Picea
+Picene
+picene
+Picenian
+piceoferruginous
+piceotestaceous
+piceous
+piceworth
+pichi
+pichiciago
+pichuric
+pichurim
+Pici
+Picidae
+piciform
+Piciformes
+Picinae
+picine
+pick
+pickaback
+pickable
+pickableness
+pickage
+pickaninny
+pickaroon
+pickaway
+pickax
+picked
+pickedly
+pickedness
+pickee
+pickeer
+picker
+pickerel
+pickerelweed
+pickering
+pickeringite
+pickery
+picket
+picketboat
+picketeer
+picketer
+pickfork
+pickietar
+pickings
+pickle
+picklelike
+pickleman
+pickler
+pickleweed
+pickleworm
+picklock
+pickman
+pickmaw
+picknick
+picknicker
+pickover
+pickpocket
+pickpocketism
+pickpocketry
+pickpole
+pickpurse
+pickshaft
+picksman
+picksmith
+picksome
+picksomeness
+pickthank
+pickthankly
+pickthankness
+pickthatch
+picktooth
+pickup
+pickwick
+Pickwickian
+Pickwickianism
+Pickwickianly
+pickwork
+picky
+picnic
+picnicker
+picnickery
+Picnickian
+picnickish
+picnicky
+pico
+picofarad
+picoid
+picoline
+picolinic
+picot
+picotah
+picotee
+picotite
+picqueter
+picra
+picramic
+Picramnia
+picrasmin
+picrate
+picrated
+picric
+Picris
+picrite
+picrocarmine
+Picrodendraceae
+Picrodendron
+picroerythrin
+picrol
+picrolite
+picromerite
+picropodophyllin
+picrorhiza
+picrorhizin
+picrotin
+picrotoxic
+picrotoxin
+picrotoxinin
+picryl
+Pict
+pict
+pictarnie
+Pictavi
+Pictish
+Pictland
+pictogram
+pictograph
+pictographic
+pictographically
+pictography
+Pictones
+pictoradiogram
+pictorial
+pictorialism
+pictorialist
+pictorialization
+pictorialize
+pictorially
+pictorialness
+pictoric
+pictorical
+pictorically
+picturability
+picturable
+picturableness
+picturably
+pictural
+picture
+picturecraft
+pictured
+picturedom
+picturedrome
+pictureful
+pictureless
+picturelike
+picturely
+picturemaker
+picturemaking
+picturer
+picturesque
+picturesquely
+picturesqueness
+picturesquish
+picturization
+picturize
+pictury
+picucule
+picuda
+picudilla
+picudo
+picul
+piculet
+piculule
+Picumninae
+Picumnus
+Picunche
+Picuris
+Picus
+pidan
+piddle
+piddler
+piddling
+piddock
+pidgin
+pidjajap
+pie
+piebald
+piebaldism
+piebaldly
+piebaldness
+piece
+pieceable
+pieceless
+piecemaker
+piecemeal
+piecemealwise
+piecen
+piecener
+piecer
+piecette
+piecewise
+piecework
+pieceworker
+piecing
+piecrust
+pied
+piedfort
+piedly
+piedmont
+piedmontal
+Piedmontese
+piedmontite
+piedness
+Piegan
+piehouse
+pieless
+pielet
+pielum
+piemag
+pieman
+piemarker
+pien
+pienanny
+piend
+piepan
+pieplant
+piepoudre
+piepowder
+pieprint
+pier
+pierage
+Piercarlo
+Pierce
+pierce
+pierceable
+pierced
+piercel
+pierceless
+piercent
+piercer
+piercing
+piercingly
+piercingness
+pierdrop
+Pierette
+pierhead
+Pierian
+pierid
+Pieridae
+Pierides
+Pieridinae
+pieridine
+Pierinae
+pierine
+Pieris
+pierless
+pierlike
+Pierre
+Pierrot
+pierrot
+pierrotic
+pieshop
+Piet
+piet
+pietas
+Piete
+Pieter
+pietic
+pietism
+Pietist
+pietist
+pietistic
+pietistical
+pietistically
+pietose
+piety
+piewife
+piewipe
+piewoman
+piezo
+piezochemical
+piezochemistry
+piezocrystallization
+piezoelectric
+piezoelectrically
+piezoelectricity
+piezometer
+piezometric
+piezometrical
+piezometry
+piff
+piffle
+piffler
+pifine
+pig
+pigbelly
+pigdan
+pigdom
+pigeon
+pigeonable
+pigeonberry
+pigeoneer
+pigeoner
+pigeonfoot
+pigeongram
+pigeonhearted
+pigeonhole
+pigeonholer
+pigeonman
+pigeonry
+pigeontail
+pigeonweed
+pigeonwing
+pigeonwood
+pigface
+pigfish
+pigflower
+pigfoot
+pigful
+piggery
+piggin
+pigging
+piggish
+piggishly
+piggishness
+piggle
+piggy
+pighead
+pigheaded
+pigheadedly
+pigheadedness
+pigherd
+pightle
+pigless
+piglet
+pigling
+piglinghood
+pigly
+pigmaker
+pigmaking
+pigman
+pigment
+pigmental
+pigmentally
+pigmentary
+pigmentation
+pigmentize
+pigmentolysis
+pigmentophage
+pigmentose
+Pigmy
+pignolia
+pignon
+pignorate
+pignoration
+pignoratitious
+pignorative
+pignus
+pignut
+pigpen
+pigritude
+pigroot
+pigsconce
+pigskin
+pigsney
+pigstick
+pigsticker
+pigsty
+pigtail
+pigwash
+pigweed
+pigwidgeon
+pigyard
+piitis
+pik
+pika
+pike
+piked
+pikel
+pikelet
+pikeman
+pikemonger
+piker
+pikestaff
+piketail
+pikey
+piki
+piking
+pikle
+piky
+pilage
+pilandite
+pilapil
+Pilar
+pilar
+pilary
+pilaster
+pilastered
+pilastering
+pilastrade
+pilastraded
+pilastric
+Pilate
+Pilatian
+pilau
+pilaued
+pilch
+pilchard
+pilcher
+pilcorn
+pilcrow
+pile
+Pilea
+pileata
+pileate
+pileated
+piled
+pileiform
+pileolated
+pileolus
+pileorhiza
+pileorhize
+pileous
+piler
+piles
+pileus
+pileweed
+pilework
+pileworm
+pilewort
+pilfer
+pilferage
+pilferer
+pilfering
+pilferingly
+pilferment
+pilgarlic
+pilgarlicky
+pilger
+pilgrim
+pilgrimage
+pilgrimager
+pilgrimatic
+pilgrimatical
+pilgrimdom
+pilgrimer
+pilgrimess
+pilgrimism
+pilgrimize
+pilgrimlike
+pilgrimwise
+pili
+pilidium
+pilifer
+piliferous
+piliform
+piligan
+piliganine
+piligerous
+pilikai
+pililloo
+pilimiction
+pilin
+piline
+piling
+pilipilula
+pilkins
+pill
+pillage
+pillageable
+pillagee
+pillager
+pillar
+pillared
+pillaret
+pillaring
+pillarist
+pillarize
+pillarlet
+pillarlike
+pillarwise
+pillary
+pillas
+pillbox
+pilled
+pilledness
+pillet
+pilleus
+pillion
+pilliver
+pilliwinks
+pillmaker
+pillmaking
+pillmonger
+pillorization
+pillorize
+pillory
+pillow
+pillowcase
+pillowing
+pillowless
+pillowmade
+pillowwork
+pillowy
+pillworm
+pillwort
+pilm
+pilmy
+Pilobolus
+pilocarpidine
+pilocarpine
+Pilocarpus
+Pilocereus
+pilocystic
+piloerection
+pilomotor
+pilon
+pilonidal
+pilori
+pilose
+pilosebaceous
+pilosine
+pilosis
+pilosism
+pilosity
+Pilot
+pilot
+pilotage
+pilotaxitic
+pilotee
+pilothouse
+piloting
+pilotism
+pilotless
+pilotman
+pilotry
+pilotship
+pilotweed
+pilous
+Pilpai
+Pilpay
+pilpul
+pilpulist
+pilpulistic
+piltock
+pilula
+pilular
+Pilularia
+pilule
+pilulist
+pilulous
+pilum
+Pilumnus
+pilus
+pilwillet
+pily
+Pim
+Pima
+Piman
+pimaric
+pimelate
+Pimelea
+pimelic
+pimelite
+pimelitis
+Pimenta
+pimento
+pimenton
+pimgenet
+pimienta
+pimiento
+pimlico
+pimola
+pimp
+pimperlimpimp
+pimpernel
+pimpery
+Pimpinella
+pimping
+pimpish
+Pimpla
+pimple
+pimpleback
+pimpled
+pimpleproof
+Pimplinae
+pimpliness
+pimplo
+pimploe
+pimplous
+pimply
+pimpship
+pin
+pina
+Pinaceae
+pinaceous
+pinaces
+pinachrome
+pinacle
+Pinacoceras
+Pinacoceratidae
+pinacocytal
+pinacocyte
+pinacoid
+pinacoidal
+pinacol
+pinacolate
+pinacolic
+pinacolin
+pinacone
+pinacoteca
+pinaculum
+Pinacyanol
+pinafore
+pinakiolite
+pinakoidal
+pinakotheke
+Pinal
+Pinaleno
+Pinales
+pinang
+pinaster
+pinatype
+pinaverdol
+pinax
+pinball
+pinbefore
+pinbone
+pinbush
+pincase
+pincement
+pincer
+pincerlike
+pincers
+pincerweed
+pinch
+pinchable
+pinchback
+pinchbeck
+pinchbelly
+pinchcock
+pinchcommons
+pinchcrust
+pinche
+pinched
+pinchedly
+pinchedness
+pinchem
+pincher
+pinchfist
+pinchfisted
+pinchgut
+pinching
+pinchingly
+pinchpenny
+Pincian
+Pinckneya
+pincoffin
+pincpinc
+Pinctada
+pincushion
+pincushiony
+pind
+pinda
+Pindari
+Pindaric
+pindarical
+pindarically
+Pindarism
+Pindarist
+Pindarize
+Pindarus
+pinder
+pindling
+pindy
+pine
+pineal
+pinealism
+pinealoma
+pineapple
+pined
+pinedrops
+pineland
+pinene
+piner
+pinery
+pinesap
+pinetum
+pineweed
+pinewoods
+piney
+pinfall
+pinfeather
+pinfeathered
+pinfeatherer
+pinfeathery
+pinfish
+pinfold
+Ping
+ping
+pingle
+pingler
+pingue
+pinguecula
+pinguedinous
+pinguefaction
+pinguefy
+pinguescence
+pinguescent
+Pinguicula
+pinguicula
+Pinguiculaceae
+pinguiculaceous
+pinguid
+pinguidity
+pinguiferous
+pinguin
+pinguinitescent
+pinguite
+pinguitude
+pinguitudinous
+pinhead
+pinheaded
+pinheadedness
+pinhold
+pinhole
+pinhook
+pinic
+pinicoline
+pinicolous
+piniferous
+piniform
+pining
+piningly
+pinion
+pinioned
+pinionless
+pinionlike
+pinipicrin
+pinitannic
+pinite
+pinitol
+pinivorous
+pinjane
+pinjra
+pink
+pinkberry
+pinked
+pinkeen
+pinken
+pinker
+Pinkerton
+Pinkertonism
+pinkeye
+pinkfish
+pinkie
+pinkify
+pinkily
+pinkiness
+pinking
+pinkish
+pinkishness
+pinkly
+pinkness
+pinkroot
+pinksome
+Pinkster
+pinkweed
+pinkwood
+pinkwort
+pinky
+pinless
+pinlock
+pinmaker
+Pinna
+pinna
+pinnace
+pinnacle
+pinnaclet
+pinnae
+pinnaglobin
+pinnal
+pinnate
+pinnated
+pinnatedly
+pinnately
+pinnatifid
+pinnatifidly
+pinnatilobate
+pinnatilobed
+pinnation
+pinnatipartite
+pinnatiped
+pinnatisect
+pinnatisected
+pinnatodentate
+pinnatopectinate
+pinnatulate
+pinned
+pinnel
+pinner
+pinnet
+Pinnidae
+pinniferous
+pinniform
+pinnigerous
+Pinnigrada
+pinnigrade
+pinninervate
+pinninerved
+pinning
+pinningly
+pinniped
+Pinnipedia
+pinnipedian
+pinnisect
+pinnisected
+pinnitarsal
+pinnitentaculate
+pinniwinkis
+pinnock
+pinnoite
+pinnotere
+pinnothere
+Pinnotheres
+pinnotherian
+Pinnotheridae
+pinnula
+pinnular
+pinnulate
+pinnulated
+pinnule
+pinnulet
+pinny
+pino
+pinochle
+pinocytosis
+pinole
+pinoleum
+pinolia
+pinolin
+pinon
+pinonic
+pinpillow
+pinpoint
+pinprick
+pinproof
+pinrail
+pinrowed
+pinscher
+pinsons
+pint
+pinta
+pintadera
+pintado
+pintadoite
+pintail
+pintano
+pinte
+pintle
+pinto
+pintura
+pinulus
+Pinus
+pinweed
+pinwing
+pinwork
+pinworm
+piny
+pinyl
+pinyon
+pioneer
+pioneerdom
+pioneership
+pionnotes
+pioscope
+pioted
+piotine
+Piotr
+piotty
+pioury
+pious
+piously
+piousness
+Pioxe
+pip
+pipa
+pipage
+pipal
+pipe
+pipeage
+pipecoline
+pipecolinic
+piped
+pipefish
+pipeful
+pipelayer
+pipeless
+pipelike
+pipeline
+pipeman
+pipemouth
+Piper
+piper
+Piperaceae
+piperaceous
+Piperales
+piperate
+piperazin
+piperazine
+piperic
+piperide
+piperideine
+piperidge
+piperidide
+piperidine
+piperine
+piperitious
+piperitone
+piperly
+piperno
+piperoid
+piperonal
+piperonyl
+pipery
+piperylene
+pipestapple
+pipestem
+pipestone
+pipet
+pipette
+pipewalker
+pipewood
+pipework
+pipewort
+pipi
+Pipidae
+Pipil
+Pipile
+Pipilo
+piping
+pipingly
+pipingness
+pipiri
+pipistrel
+pipistrelle
+Pipistrellus
+pipit
+pipkin
+pipkinet
+pipless
+pipped
+pipper
+pippin
+pippiner
+pippinface
+pippy
+Pipra
+Pipridae
+Piprinae
+piprine
+piproid
+pipsissewa
+Piptadenia
+Piptomeris
+pipunculid
+Pipunculidae
+pipy
+piquable
+piquance
+piquancy
+piquant
+piquantly
+piquantness
+pique
+piquet
+piquia
+piqure
+pir
+piracy
+piragua
+Piranga
+piranha
+pirate
+piratelike
+piratery
+piratess
+piratical
+piratically
+piratism
+piratize
+piraty
+Pirene
+Piricularia
+pirijiri
+piripiri
+piririgua
+pirl
+pirn
+pirner
+pirnie
+pirny
+Piro
+pirogue
+pirol
+piroplasm
+Piroplasma
+piroplasmosis
+pirouette
+pirouetter
+pirouettist
+pirr
+pirraura
+pirrmaw
+pirssonite
+Pisaca
+pisaca
+pisachee
+Pisan
+pisang
+pisanite
+Pisauridae
+pisay
+piscary
+Piscataqua
+Piscataway
+piscation
+piscatology
+piscator
+piscatorial
+piscatorialist
+piscatorially
+piscatorian
+piscatorious
+piscatory
+Pisces
+piscian
+piscicapture
+piscicapturist
+piscicolous
+piscicultural
+pisciculturally
+pisciculture
+pisciculturist
+Piscid
+Piscidia
+piscifauna
+pisciferous
+pisciform
+piscina
+piscinal
+piscine
+piscinity
+Piscis
+piscivorous
+pisco
+pise
+pish
+pishaug
+pishogue
+Pishquow
+pishu
+Pisidium
+pisiform
+Pisistratean
+Pisistratidae
+pisk
+pisky
+pismire
+pismirism
+piso
+pisolite
+pisolitic
+Pisonia
+piss
+pissabed
+pissant
+pist
+pistache
+pistachio
+Pistacia
+pistacite
+pistareen
+Pistia
+pistic
+pistil
+pistillaceous
+pistillar
+pistillary
+pistillate
+pistillid
+pistilliferous
+pistilliform
+pistilligerous
+pistilline
+pistillode
+pistillody
+pistilloid
+pistilogy
+pistle
+Pistoiese
+pistol
+pistole
+pistoleer
+pistolet
+pistolgram
+pistolgraph
+pistollike
+pistolography
+pistology
+pistolproof
+pistolwise
+piston
+pistonhead
+pistonlike
+pistrix
+Pisum
+pit
+pita
+Pitahauerat
+Pitahauirata
+pitahaya
+pitanga
+pitangua
+pitapat
+pitapatation
+pitarah
+pitau
+Pitawas
+pitaya
+pitayita
+Pitcairnia
+pitch
+pitchable
+pitchblende
+pitcher
+pitchered
+pitcherful
+pitcherlike
+pitcherman
+pitchfork
+pitchhole
+pitchi
+pitchiness
+pitching
+pitchlike
+pitchman
+pitchometer
+pitchout
+pitchpike
+pitchpole
+pitchpoll
+pitchstone
+pitchwork
+pitchy
+piteous
+piteously
+piteousness
+pitfall
+pith
+pithecan
+pithecanthrope
+pithecanthropic
+pithecanthropid
+Pithecanthropidae
+pithecanthropoid
+Pithecanthropus
+Pithecia
+pithecian
+Pitheciinae
+pitheciine
+pithecism
+pithecoid
+Pithecolobium
+pithecological
+pithecometric
+pithecomorphic
+pithecomorphism
+pithful
+pithily
+pithiness
+pithless
+pithlessly
+Pithoegia
+Pithoigia
+pithole
+pithos
+pithsome
+pithwork
+pithy
+pitiability
+pitiable
+pitiableness
+pitiably
+pitiedly
+pitiedness
+pitier
+pitiful
+pitifully
+pitifulness
+pitikins
+pitiless
+pitilessly
+pitilessness
+pitless
+pitlike
+pitmaker
+pitmaking
+pitman
+pitmark
+pitmirk
+pitometer
+pitpan
+pitpit
+pitside
+Pitta
+pittacal
+pittance
+pittancer
+pitted
+pitter
+pitticite
+Pittidae
+pittine
+pitting
+Pittism
+Pittite
+pittite
+pittoid
+Pittosporaceae
+pittosporaceous
+pittospore
+Pittosporum
+Pittsburgher
+pituital
+pituitary
+pituite
+pituitous
+pituitousness
+Pituitrin
+pituri
+pitwood
+pitwork
+pitwright
+pity
+pitying
+pityingly
+Pitylus
+pityocampa
+pityproof
+pityriasic
+pityriasis
+Pityrogramma
+pityroid
+piuri
+piuricapsular
+pivalic
+pivot
+pivotal
+pivotally
+pivoter
+pix
+pixie
+pixilated
+pixilation
+pixy
+pize
+pizza
+pizzeria
+pizzicato
+pizzle
+placability
+placable
+placableness
+placably
+Placaean
+placard
+placardeer
+placarder
+placate
+placater
+placation
+placative
+placatively
+placatory
+placcate
+place
+placeable
+Placean
+placebo
+placeful
+placeless
+placelessly
+placemaker
+placemaking
+placeman
+placemanship
+placement
+placemonger
+placemongering
+placenta
+placental
+Placentalia
+placentalian
+placentary
+placentate
+placentation
+placentiferous
+placentiform
+placentigerous
+placentitis
+placentoid
+placentoma
+placer
+placet
+placewoman
+placid
+placidity
+placidly
+placidness
+placitum
+plack
+placket
+plackless
+placochromatic
+placode
+placoderm
+placodermal
+placodermatous
+Placodermi
+placodermoid
+placodont
+Placodontia
+Placodus
+placoganoid
+placoganoidean
+Placoganoidei
+placoid
+placoidal
+placoidean
+Placoidei
+Placoides
+Placophora
+placophoran
+placoplast
+placula
+placuntitis
+placuntoma
+Placus
+pladaroma
+pladarosis
+plaga
+plagal
+plagate
+plage
+Plagianthus
+plagiaplite
+plagiarical
+plagiarism
+plagiarist
+plagiaristic
+plagiaristically
+plagiarization
+plagiarize
+plagiarizer
+plagiary
+plagihedral
+plagiocephalic
+plagiocephalism
+plagiocephaly
+Plagiochila
+plagioclase
+plagioclasite
+plagioclastic
+plagioclinal
+plagiodont
+plagiograph
+plagioliparite
+plagionite
+plagiopatagium
+plagiophyre
+Plagiostomata
+plagiostomatous
+plagiostome
+Plagiostomi
+plagiostomous
+plagiotropic
+plagiotropically
+plagiotropism
+plagiotropous
+plagium
+plagose
+plagosity
+plague
+plagued
+plagueful
+plagueless
+plagueproof
+plaguer
+plaguesome
+plaguesomeness
+plaguily
+plaguy
+plaice
+plaid
+plaided
+plaidie
+plaiding
+plaidman
+plaidy
+plain
+plainback
+plainbacks
+plainer
+plainful
+plainhearted
+plainish
+plainly
+plainness
+plainscraft
+plainsfolk
+plainsman
+plainsoled
+plainstones
+plainswoman
+plaint
+plaintail
+plaintiff
+plaintiffship
+plaintile
+plaintive
+plaintively
+plaintiveness
+plaintless
+plainward
+plaister
+plait
+plaited
+plaiter
+plaiting
+plaitless
+plaitwork
+plak
+plakat
+plan
+planable
+planaea
+planar
+Planaria
+planarian
+Planarida
+planaridan
+planariform
+planarioid
+planarity
+planate
+planation
+planch
+plancheite
+plancher
+planchet
+planchette
+planching
+planchment
+plancier
+Planckian
+plandok
+plane
+planeness
+planer
+Planera
+planet
+planeta
+planetable
+planetabler
+planetal
+planetaria
+planetarian
+planetarily
+planetarium
+planetary
+planeted
+planetesimal
+planeticose
+planeting
+planetist
+planetkin
+planetless
+planetlike
+planetogeny
+planetography
+planetoid
+planetoidal
+planetologic
+planetologist
+planetology
+planetule
+planform
+planful
+planfully
+planfulness
+plang
+plangency
+plangent
+plangently
+plangor
+plangorous
+planicaudate
+planicipital
+planidorsate
+planifolious
+planiform
+planigraph
+planilla
+planimetric
+planimetrical
+planimetry
+planineter
+planipennate
+Planipennia
+planipennine
+planipetalous
+planiphyllous
+planirostral
+planirostrate
+planiscope
+planiscopic
+planish
+planisher
+planispheral
+planisphere
+planispheric
+planispherical
+planispiral
+planity
+plank
+plankage
+plankbuilt
+planker
+planking
+plankless
+planklike
+planksheer
+plankter
+planktologist
+planktology
+plankton
+planktonic
+planktont
+plankways
+plankwise
+planky
+planless
+planlessly
+planlessness
+planner
+planoblast
+planoblastic
+Planococcus
+planoconical
+planocylindric
+planoferrite
+planogamete
+planograph
+planographic
+planographist
+planography
+planohorizontal
+planolindrical
+planometer
+planometry
+planomiller
+planoorbicular
+Planorbidae
+planorbiform
+planorbine
+Planorbis
+planorboid
+planorotund
+Planosarcina
+planosol
+planosome
+planospiral
+planospore
+planosubulate
+plant
+planta
+plantable
+plantad
+Plantae
+plantage
+Plantaginaceae
+plantaginaceous
+Plantaginales
+plantagineous
+Plantago
+plantain
+plantal
+plantar
+plantaris
+plantarium
+plantation
+plantationlike
+plantdom
+planter
+planterdom
+planterly
+plantership
+Plantigrada
+plantigrade
+plantigrady
+planting
+plantivorous
+plantless
+plantlet
+plantlike
+plantling
+plantocracy
+plantsman
+plantula
+plantular
+plantule
+planula
+planulan
+planular
+planulate
+planuliform
+planuloid
+Planuloidea
+planuria
+planury
+planxty
+plap
+plappert
+plaque
+plaquette
+plash
+plasher
+plashet
+plashingly
+plashment
+plashy
+plasm
+plasma
+plasmagene
+plasmapheresis
+plasmase
+plasmatic
+plasmatical
+plasmation
+plasmatoparous
+plasmatorrhexis
+plasmic
+plasmocyte
+plasmocytoma
+plasmode
+plasmodesm
+plasmodesma
+plasmodesmal
+plasmodesmic
+plasmodesmus
+plasmodia
+plasmodial
+plasmodiate
+plasmodic
+plasmodiocarp
+plasmodiocarpous
+Plasmodiophora
+Plasmodiophoraceae
+Plasmodiophorales
+plasmodium
+plasmogen
+plasmolysis
+plasmolytic
+plasmolytically
+plasmolyzability
+plasmolyzable
+plasmolyze
+plasmoma
+Plasmon
+Plasmopara
+plasmophagous
+plasmophagy
+plasmoptysis
+plasmosoma
+plasmosome
+plasmotomy
+plasome
+plass
+plasson
+plastein
+plaster
+plasterbill
+plasterboard
+plasterer
+plasteriness
+plastering
+plasterlike
+plasterwise
+plasterwork
+plastery
+Plastic
+plastic
+plastically
+plasticimeter
+Plasticine
+plasticine
+plasticism
+plasticity
+plasticization
+plasticize
+plasticizer
+plasticly
+plastics
+plastid
+plastidium
+plastidome
+Plastidozoa
+plastidular
+plastidule
+plastify
+plastin
+plastinoid
+plastisol
+plastochondria
+plastochron
+plastochrone
+plastodynamia
+plastodynamic
+plastogamic
+plastogamy
+plastogene
+plastomere
+plastometer
+plastosome
+plastotype
+plastral
+plastron
+plastrum
+plat
+Plataean
+Platalea
+Plataleidae
+plataleiform
+Plataleinae
+plataleine
+platan
+Platanaceae
+platanaceous
+platane
+platanist
+Platanista
+Platanistidae
+platano
+Platanus
+platband
+platch
+plate
+platea
+plateasm
+plateau
+plateaux
+plated
+plateful
+plateholder
+plateiasmus
+platelayer
+plateless
+platelet
+platelike
+platemaker
+platemaking
+plateman
+platen
+plater
+platerer
+plateresque
+platery
+plateway
+platework
+plateworker
+platform
+platformally
+platformed
+platformer
+platformish
+platformism
+platformist
+platformistic
+platformless
+platformy
+platic
+platicly
+platilla
+platina
+platinamine
+platinammine
+platinate
+Platine
+plating
+platinic
+platinichloric
+platinichloride
+platiniferous
+platiniridium
+platinite
+platinization
+platinize
+platinochloric
+platinochloride
+platinocyanic
+platinocyanide
+platinoid
+platinotype
+platinous
+platinum
+platinumsmith
+platitude
+platitudinal
+platitudinarian
+platitudinarianism
+platitudinism
+platitudinist
+platitudinization
+platitudinize
+platitudinizer
+platitudinous
+platitudinously
+platitudinousness
+Platoda
+platode
+Platodes
+platoid
+Platonesque
+platonesque
+Platonian
+Platonic
+Platonical
+Platonically
+Platonicalness
+Platonician
+Platonicism
+Platonism
+Platonist
+Platonistic
+Platonization
+Platonize
+Platonizer
+platoon
+platopic
+platosamine
+platosammine
+Platt
+Plattdeutsch
+platted
+platten
+platter
+platterface
+platterful
+platting
+plattnerite
+platty
+platurous
+platy
+platybasic
+platybrachycephalic
+platybrachycephalous
+platybregmatic
+platycarpous
+Platycarpus
+Platycarya
+platycelian
+platycelous
+platycephalic
+Platycephalidae
+platycephalism
+platycephaloid
+platycephalous
+Platycephalus
+platycephaly
+Platycercinae
+platycercine
+Platycercus
+Platycerium
+platycheiria
+platycnemia
+platycnemic
+Platycodon
+platycoria
+platycrania
+platycranial
+Platyctenea
+platycyrtean
+platydactyl
+platydactyle
+platydactylous
+platydolichocephalic
+platydolichocephalous
+platyfish
+platyglossal
+platyglossate
+platyglossia
+Platyhelmia
+platyhelminth
+Platyhelminthes
+platyhelminthic
+platyhieric
+platykurtic
+platylobate
+platymeria
+platymeric
+platymery
+platymesaticephalic
+platymesocephalic
+platymeter
+platymyoid
+platynite
+platynotal
+platyodont
+platyope
+platyopia
+platyopic
+platypellic
+platypetalous
+platyphyllous
+platypod
+Platypoda
+platypodia
+platypodous
+Platyptera
+platypus
+platypygous
+Platyrhina
+Platyrhini
+platyrhynchous
+platyrrhin
+Platyrrhina
+platyrrhine
+Platyrrhini
+platyrrhinian
+platyrrhinic
+platyrrhinism
+platyrrhiny
+platysma
+platysmamyoides
+platysomid
+Platysomidae
+Platysomus
+platystaphyline
+Platystemon
+platystencephalia
+platystencephalic
+platystencephalism
+platystencephaly
+platysternal
+Platysternidae
+Platystomidae
+platystomous
+platytrope
+platytropy
+plaud
+plaudation
+plaudit
+plaudite
+plauditor
+plauditory
+plauenite
+plausibility
+plausible
+plausibleness
+plausibly
+plausive
+plaustral
+Plautine
+Plautus
+play
+playa
+playability
+playable
+playback
+playbill
+playbook
+playbox
+playboy
+playboyism
+playbroker
+playcraft
+playcraftsman
+playday
+playdown
+player
+playerdom
+playeress
+playfellow
+playfellowship
+playfield
+playfolk
+playful
+playfully
+playfulness
+playgoer
+playgoing
+playground
+playhouse
+playingly
+playless
+playlet
+playlike
+playmaker
+playmaking
+playman
+playmare
+playmate
+playmonger
+playmongering
+playock
+playpen
+playreader
+playroom
+playscript
+playsome
+playsomely
+playsomeness
+playstead
+plaything
+playtime
+playward
+playwoman
+playwork
+playwright
+playwrightess
+playwrighting
+playwrightry
+playwriter
+playwriting
+plaza
+plazolite
+plea
+pleach
+pleached
+pleacher
+plead
+pleadable
+pleadableness
+pleader
+pleading
+pleadingly
+pleadingness
+pleaproof
+pleasable
+pleasableness
+pleasance
+pleasant
+pleasantable
+pleasantish
+pleasantly
+pleasantness
+pleasantry
+pleasantsome
+please
+pleasedly
+pleasedness
+pleaseman
+pleaser
+pleaship
+pleasing
+pleasingly
+pleasingness
+pleasurability
+pleasurable
+pleasurableness
+pleasurably
+pleasure
+pleasureful
+pleasurehood
+pleasureless
+pleasurelessly
+pleasureman
+pleasurement
+pleasuremonger
+pleasureproof
+pleasurer
+pleasuring
+pleasurist
+pleasurous
+pleat
+pleater
+pleatless
+pleb
+plebe
+plebeian
+plebeiance
+plebeianize
+plebeianly
+plebeianness
+plebeity
+plebianism
+plebicolar
+plebicolist
+plebificate
+plebification
+plebify
+plebiscitarian
+plebiscitarism
+plebiscitary
+plebiscite
+plebiscitic
+plebiscitum
+plebs
+pleck
+Plecoptera
+plecopteran
+plecopterid
+plecopterous
+Plecotinae
+plecotine
+Plecotus
+plectognath
+Plectognathi
+plectognathic
+plectognathous
+plectopter
+plectopteran
+plectopterous
+plectospondyl
+Plectospondyli
+plectospondylous
+plectre
+plectridial
+plectridium
+plectron
+plectrum
+pled
+pledge
+pledgeable
+pledgee
+pledgeless
+pledgeor
+pledger
+pledgeshop
+pledget
+pledgor
+Plegadis
+plegaphonia
+plegometer
+Pleiades
+pleiobar
+pleiochromia
+pleiochromic
+pleiomastia
+pleiomazia
+pleiomerous
+pleiomery
+pleion
+Pleione
+pleionian
+pleiophyllous
+pleiophylly
+pleiotaxis
+pleiotropic
+pleiotropically
+pleiotropism
+Pleistocene
+Pleistocenic
+pleistoseist
+plemochoe
+plemyrameter
+plenarily
+plenariness
+plenarium
+plenarty
+plenary
+plenicorn
+pleniloquence
+plenilunal
+plenilunar
+plenilunary
+plenilune
+plenipo
+plenipotence
+plenipotent
+plenipotential
+plenipotentiality
+plenipotentiarily
+plenipotentiarize
+Plenipotentiary
+plenipotentiary
+plenipotentiaryship
+plenish
+plenishing
+plenishment
+plenism
+plenist
+plenitide
+plenitude
+plenitudinous
+plenshing
+plenteous
+plenteously
+plenteousness
+plentiful
+plentifully
+plentifulness
+plentify
+plenty
+plenum
+pleny
+pleochroic
+pleochroism
+pleochroitic
+pleochromatic
+pleochromatism
+pleochroous
+pleocrystalline
+pleodont
+pleomastia
+pleomastic
+pleomazia
+pleometrosis
+pleometrotic
+pleomorph
+pleomorphic
+pleomorphism
+pleomorphist
+pleomorphous
+pleomorphy
+pleon
+pleonal
+pleonasm
+pleonast
+pleonaste
+pleonastic
+pleonastical
+pleonastically
+pleonectic
+pleonexia
+pleonic
+pleophyletic
+pleopod
+pleopodite
+Pleospora
+Pleosporaceae
+plerergate
+plerocercoid
+pleroma
+pleromatic
+plerome
+pleromorph
+plerophoric
+plerophory
+plerosis
+plerotic
+Plesianthropus
+plesiobiosis
+plesiobiotic
+plesiomorphic
+plesiomorphism
+plesiomorphous
+plesiosaur
+Plesiosauri
+Plesiosauria
+plesiosaurian
+plesiosauroid
+Plesiosaurus
+plesiotype
+plessigraph
+plessimeter
+plessimetric
+plessimetry
+plessor
+Plethodon
+plethodontid
+Plethodontidae
+plethora
+plethoretic
+plethoretical
+plethoric
+plethorical
+plethorically
+plethorous
+plethory
+plethysmograph
+plethysmographic
+plethysmographically
+plethysmography
+pleura
+Pleuracanthea
+Pleuracanthidae
+Pleuracanthini
+pleuracanthoid
+Pleuracanthus
+pleural
+pleuralgia
+pleuralgic
+pleurapophysial
+pleurapophysis
+pleurectomy
+pleurenchyma
+pleurenchymatous
+pleuric
+pleuriseptate
+pleurisy
+pleurite
+pleuritic
+pleuritical
+pleuritically
+pleuritis
+Pleurobrachia
+Pleurobrachiidae
+pleurobranch
+pleurobranchia
+pleurobranchial
+pleurobranchiate
+pleurobronchitis
+Pleurocapsa
+Pleurocapsaceae
+pleurocapsaceous
+pleurocarp
+Pleurocarpi
+pleurocarpous
+pleurocele
+pleurocentesis
+pleurocentral
+pleurocentrum
+Pleurocera
+pleurocerebral
+Pleuroceridae
+pleuroceroid
+Pleurococcaceae
+pleurococcaceous
+Pleurococcus
+Pleurodelidae
+Pleurodira
+pleurodiran
+pleurodire
+pleurodirous
+pleurodiscous
+pleurodont
+pleurodynia
+pleurodynic
+pleurogenic
+pleurogenous
+pleurohepatitis
+pleuroid
+pleurolith
+pleurolysis
+pleuron
+Pleuronectes
+pleuronectid
+Pleuronectidae
+pleuronectoid
+Pleuronema
+pleuropedal
+pleuropericardial
+pleuropericarditis
+pleuroperitonaeal
+pleuroperitoneal
+pleuroperitoneum
+pleuropneumonia
+pleuropneumonic
+pleuropodium
+pleuropterygian
+Pleuropterygii
+pleuropulmonary
+pleurorrhea
+Pleurosaurus
+Pleurosigma
+pleurospasm
+pleurosteal
+Pleurosteon
+pleurostict
+Pleurosticti
+Pleurostigma
+pleurothotonic
+pleurothotonus
+Pleurotoma
+Pleurotomaria
+Pleurotomariidae
+pleurotomarioid
+Pleurotomidae
+pleurotomine
+pleurotomoid
+pleurotomy
+pleurotonic
+pleurotonus
+Pleurotremata
+pleurotribal
+pleurotribe
+pleurotropous
+Pleurotus
+pleurotyphoid
+pleurovisceral
+pleurum
+pleuston
+pleustonic
+plew
+plex
+plexal
+plexicose
+plexiform
+pleximeter
+pleximetric
+pleximetry
+plexodont
+plexometer
+plexor
+plexure
+plexus
+pliability
+pliable
+pliableness
+pliably
+pliancy
+pliant
+pliantly
+pliantness
+plica
+plicable
+plical
+plicate
+plicated
+plicately
+plicateness
+plicater
+plicatile
+plication
+plicative
+plicatocontorted
+plicatocristate
+plicatolacunose
+plicatolobate
+plicatopapillose
+plicator
+plicatoundulate
+plicatulate
+plicature
+pliciferous
+pliciform
+plier
+pliers
+plight
+plighted
+plighter
+plim
+plimsoll
+Plinian
+plinth
+plinther
+plinthiform
+plinthless
+plinthlike
+Pliny
+Plinyism
+Pliocene
+Pliohippus
+Pliopithecus
+pliosaur
+pliosaurian
+Pliosauridae
+Pliosaurus
+pliothermic
+Pliotron
+pliskie
+plisky
+ploat
+ploce
+Ploceidae
+ploceiform
+Ploceinae
+Ploceus
+plock
+plod
+plodder
+plodderly
+plodding
+ploddingly
+ploddingness
+plodge
+Ploima
+ploimate
+plomb
+plook
+plop
+ploration
+ploratory
+plosion
+plosive
+plot
+plote
+plotful
+Plotinian
+Plotinic
+Plotinical
+Plotinism
+Plotinist
+Plotinize
+plotless
+plotlessness
+plotproof
+plottage
+plotted
+plotter
+plottery
+plotting
+plottingly
+plotty
+plough
+ploughmanship
+ploughtail
+plouk
+plouked
+plouky
+plounce
+plousiocracy
+plout
+Plouteneion
+plouter
+plover
+ploverlike
+plovery
+plow
+plowable
+plowbote
+plowboy
+plower
+plowfish
+plowfoot
+plowgang
+plowgate
+plowgraith
+plowhead
+plowing
+plowjogger
+plowland
+plowlight
+plowline
+plowmaker
+plowman
+plowmanship
+plowmell
+plowpoint
+Plowrightia
+plowshare
+plowshoe
+plowstaff
+plowstilt
+plowtail
+plowwise
+plowwoman
+plowwright
+ploy
+ployment
+Pluchea
+pluck
+pluckage
+plucked
+pluckedness
+plucker
+Pluckerian
+pluckily
+pluckiness
+pluckless
+plucklessness
+plucky
+plud
+pluff
+pluffer
+pluffy
+plug
+plugboard
+plugdrawer
+pluggable
+plugged
+plugger
+plugging
+pluggingly
+pluggy
+plughole
+plugless
+pluglike
+plugman
+plugtray
+plugtree
+plum
+pluma
+plumaceous
+plumach
+plumade
+plumage
+plumaged
+plumagery
+plumasite
+plumate
+Plumatella
+plumatellid
+Plumatellidae
+plumatelloid
+plumb
+plumbable
+plumbage
+Plumbaginaceae
+plumbaginaceous
+plumbagine
+plumbaginous
+plumbago
+plumbate
+plumbean
+plumbeous
+plumber
+plumbership
+plumbery
+plumbet
+plumbic
+plumbiferous
+plumbing
+plumbism
+plumbisolvent
+plumbite
+plumbless
+plumbness
+plumbog
+plumbojarosite
+plumboniobate
+plumbosolvency
+plumbosolvent
+plumbous
+plumbum
+plumcot
+plumdamas
+plumdamis
+plume
+plumed
+plumeless
+plumelet
+plumelike
+plumemaker
+plumemaking
+plumeopicean
+plumeous
+plumer
+plumery
+plumet
+plumette
+plumicorn
+plumier
+Plumiera
+plumieride
+plumification
+plumiform
+plumiformly
+plumify
+plumigerous
+pluminess
+plumiped
+plumipede
+plumist
+plumless
+plumlet
+plumlike
+plummer
+plummet
+plummeted
+plummetless
+plummy
+plumose
+plumosely
+plumoseness
+plumosity
+plumous
+plump
+plumpen
+plumper
+plumping
+plumpish
+plumply
+plumpness
+plumps
+plumpy
+plumula
+plumulaceous
+plumular
+Plumularia
+plumularian
+Plumulariidae
+plumulate
+plumule
+plumuliform
+plumulose
+plumy
+plunder
+plunderable
+plunderage
+plunderbund
+plunderer
+plunderess
+plundering
+plunderingly
+plunderless
+plunderous
+plunderproof
+plunge
+plunger
+plunging
+plungingly
+plunk
+plunther
+plup
+plupatriotic
+pluperfect
+pluperfectly
+pluperfectness
+plural
+pluralism
+pluralist
+pluralistic
+pluralistically
+plurality
+pluralization
+pluralize
+pluralizer
+plurally
+plurative
+plurennial
+pluriaxial
+pluricarinate
+pluricarpellary
+pluricellular
+pluricentral
+pluricipital
+pluricuspid
+pluricuspidate
+pluridentate
+pluries
+plurifacial
+plurifetation
+plurification
+pluriflagellate
+pluriflorous
+plurifoliate
+plurifoliolate
+plurify
+pluriglandular
+pluriguttulate
+plurilateral
+plurilingual
+plurilingualism
+plurilingualist
+plurilocular
+plurimammate
+plurinominal
+plurinucleate
+pluripara
+pluriparity
+pluriparous
+pluripartite
+pluripetalous
+pluripotence
+pluripotent
+pluripresence
+pluriseptate
+pluriserial
+pluriseriate
+pluriseriated
+plurisetose
+plurispiral
+plurisporous
+plurisyllabic
+plurisyllable
+plurivalent
+plurivalve
+plurivorous
+plurivory
+plus
+plush
+plushed
+plushette
+plushily
+plushiness
+plushlike
+plushy
+Plusia
+Plusiinae
+plusquamperfect
+plussage
+Plutarchian
+Plutarchic
+Plutarchical
+Plutarchically
+plutarchy
+pluteal
+plutean
+pluteiform
+Plutella
+pluteus
+Pluto
+plutocracy
+plutocrat
+plutocratic
+plutocratical
+plutocratically
+plutolatry
+plutological
+plutologist
+plutology
+plutomania
+Plutonian
+plutonian
+plutonic
+Plutonion
+plutonism
+plutonist
+plutonite
+Plutonium
+plutonium
+plutonometamorphism
+plutonomic
+plutonomist
+plutonomy
+pluvial
+pluvialiform
+pluvialine
+Pluvialis
+pluvian
+pluvine
+pluviograph
+pluviographic
+pluviographical
+pluviography
+pluviometer
+pluviometric
+pluviometrical
+pluviometrically
+pluviometry
+pluvioscope
+pluviose
+pluviosity
+pluvious
+ply
+plyer
+plying
+plyingly
+Plymouth
+Plymouthism
+Plymouthist
+Plymouthite
+Plynlymmon
+plywood
+pneodynamics
+pneograph
+pneomanometer
+pneometer
+pneometry
+pneophore
+pneoscope
+pneuma
+pneumarthrosis
+pneumathaemia
+pneumatic
+pneumatical
+pneumatically
+pneumaticity
+pneumatics
+pneumatism
+pneumatist
+pneumatize
+pneumatized
+pneumatocardia
+pneumatocele
+pneumatochemical
+pneumatochemistry
+pneumatocyst
+pneumatocystic
+pneumatode
+pneumatogenic
+pneumatogenous
+pneumatogram
+pneumatograph
+pneumatographer
+pneumatographic
+pneumatography
+pneumatolitic
+pneumatologic
+pneumatological
+pneumatologist
+pneumatology
+pneumatolysis
+pneumatolytic
+Pneumatomachian
+Pneumatomachist
+Pneumatomachy
+pneumatometer
+pneumatometry
+pneumatomorphic
+pneumatonomy
+pneumatophany
+pneumatophilosophy
+pneumatophobia
+pneumatophonic
+pneumatophony
+pneumatophore
+pneumatophorous
+pneumatorrhachis
+pneumatoscope
+pneumatosic
+pneumatosis
+pneumatotactic
+pneumatotherapeutics
+pneumatotherapy
+Pneumatria
+pneumaturia
+pneumectomy
+pneumobacillus
+Pneumobranchia
+Pneumobranchiata
+pneumocele
+pneumocentesis
+pneumochirurgia
+pneumococcal
+pneumococcemia
+pneumococcic
+pneumococcous
+pneumococcus
+pneumoconiosis
+pneumoderma
+pneumodynamic
+pneumodynamics
+pneumoencephalitis
+pneumoenteritis
+pneumogastric
+pneumogram
+pneumograph
+pneumographic
+pneumography
+pneumohemothorax
+pneumohydropericardium
+pneumohydrothorax
+pneumolith
+pneumolithiasis
+pneumological
+pneumology
+pneumolysis
+pneumomalacia
+pneumomassage
+Pneumometer
+pneumomycosis
+pneumonalgia
+pneumonectasia
+pneumonectomy
+pneumonedema
+pneumonia
+pneumonic
+pneumonitic
+pneumonitis
+pneumonocace
+pneumonocarcinoma
+pneumonocele
+pneumonocentesis
+pneumonocirrhosis
+pneumonoconiosis
+pneumonodynia
+pneumonoenteritis
+pneumonoerysipelas
+pneumonographic
+pneumonography
+pneumonokoniosis
+pneumonolith
+pneumonolithiasis
+pneumonolysis
+pneumonomelanosis
+pneumonometer
+pneumonomycosis
+pneumonoparesis
+pneumonopathy
+pneumonopexy
+pneumonophorous
+pneumonophthisis
+pneumonopleuritis
+pneumonorrhagia
+pneumonorrhaphy
+pneumonosis
+pneumonotherapy
+pneumonotomy
+pneumony
+pneumopericardium
+pneumoperitoneum
+pneumoperitonitis
+pneumopexy
+pneumopleuritis
+pneumopyothorax
+pneumorrachis
+pneumorrhachis
+pneumorrhagia
+pneumotactic
+pneumotherapeutics
+pneumotherapy
+pneumothorax
+pneumotomy
+pneumotoxin
+pneumotropic
+pneumotropism
+pneumotyphoid
+pneumotyphus
+pneumoventriculography
+Po
+po
+Poa
+Poaceae
+poaceous
+poach
+poachable
+poacher
+poachiness
+poachy
+Poales
+poalike
+pob
+pobby
+Poblacht
+poblacion
+pobs
+pochade
+pochard
+pochay
+poche
+pochette
+pocilliform
+pock
+pocket
+pocketable
+pocketableness
+pocketbook
+pocketed
+pocketer
+pocketful
+pocketing
+pocketknife
+pocketless
+pocketlike
+pockety
+pockhouse
+pockily
+pockiness
+pockmanteau
+pockmantie
+pockmark
+pockweed
+pockwood
+pocky
+poco
+pococurante
+pococuranteism
+pococurantic
+pococurantish
+pococurantism
+pococurantist
+pocosin
+poculary
+poculation
+poculent
+poculiform
+pod
+podagra
+podagral
+podagric
+podagrical
+podagrous
+podal
+podalgia
+podalic
+Podaliriidae
+Podalirius
+Podarge
+Podargidae
+Podarginae
+podargine
+podargue
+Podargus
+podarthral
+podarthritis
+podarthrum
+podatus
+Podaxonia
+podaxonial
+podded
+podder
+poddidge
+poddish
+poddle
+poddy
+podelcoma
+podeon
+podesta
+podesterate
+podetiiform
+podetium
+podex
+podge
+podger
+podgily
+podginess
+podgy
+podial
+podiatrist
+podiatry
+podical
+Podiceps
+podices
+Podicipedidae
+podilegous
+podite
+poditic
+poditti
+podium
+podler
+podley
+podlike
+podobranch
+podobranchia
+podobranchial
+podobranchiate
+podocarp
+Podocarpaceae
+Podocarpineae
+podocarpous
+Podocarpus
+podocephalous
+pododerm
+pododynia
+podogyn
+podogyne
+podogynium
+Podolian
+podolite
+podology
+podomancy
+podomere
+podometer
+podometry
+Podophrya
+Podophryidae
+Podophthalma
+Podophthalmata
+podophthalmate
+podophthalmatous
+Podophthalmia
+podophthalmian
+podophthalmic
+podophthalmite
+podophthalmitic
+podophthalmous
+Podophyllaceae
+podophyllic
+podophyllin
+podophyllotoxin
+podophyllous
+Podophyllum
+podophyllum
+podoscaph
+podoscapher
+podoscopy
+Podosomata
+podosomatous
+podosperm
+Podosphaera
+Podostemaceae
+podostemaceous
+podostemad
+Podostemon
+Podostemonaceae
+podostemonaceous
+Podostomata
+podostomatous
+podotheca
+podothecal
+Podozamites
+Podsnap
+Podsnappery
+podsol
+podsolic
+podsolization
+podsolize
+Podunk
+Podura
+poduran
+podurid
+Poduridae
+podware
+podzol
+podzolic
+podzolization
+podzolize
+poe
+Poecile
+Poeciliidae
+poecilitic
+Poecilocyttares
+poecilocyttarous
+poecilogonous
+poecilogony
+poecilomere
+poecilonym
+poecilonymic
+poecilonymy
+poecilopod
+Poecilopoda
+poecilopodous
+poem
+poematic
+poemet
+poemlet
+Poephaga
+poephagous
+Poephagus
+poesie
+poesiless
+poesis
+poesy
+poet
+poetaster
+poetastering
+poetasterism
+poetastery
+poetastress
+poetastric
+poetastrical
+poetastry
+poetcraft
+poetdom
+poetesque
+poetess
+poethood
+poetic
+poetical
+poeticality
+poetically
+poeticalness
+poeticism
+poeticize
+poeticness
+poetics
+poeticule
+poetito
+poetization
+poetize
+poetizer
+poetless
+poetlike
+poetling
+poetly
+poetomachia
+poetress
+poetry
+poetryless
+poetship
+poetwise
+pogamoggan
+pogge
+poggy
+Pogo
+Pogonatum
+Pogonia
+pogoniasis
+pogoniate
+pogonion
+pogonip
+pogoniris
+pogonite
+pogonological
+pogonologist
+pogonology
+pogonotomy
+pogonotrophy
+pogrom
+pogromist
+pogromize
+pogy
+poh
+poha
+pohickory
+pohna
+pohutukawa
+poi
+Poiana
+Poictesme
+poietic
+poignance
+poignancy
+poignant
+poignantly
+poignet
+poikilitic
+poikiloblast
+poikiloblastic
+poikilocyte
+poikilocythemia
+poikilocytosis
+poikilotherm
+poikilothermic
+poikilothermism
+poil
+poilu
+poimenic
+poimenics
+Poinciana
+poind
+poindable
+poinder
+poinding
+Poinsettia
+point
+pointable
+pointage
+pointed
+pointedly
+pointedness
+pointel
+pointer
+pointful
+pointfully
+pointfulness
+pointillism
+pointillist
+pointing
+pointingly
+pointless
+pointlessly
+pointlessness
+pointlet
+pointleted
+pointmaker
+pointman
+pointment
+pointrel
+pointsman
+pointswoman
+pointways
+pointwise
+pointy
+poisable
+poise
+poised
+poiser
+poison
+poisonable
+poisonful
+poisonfully
+poisoning
+poisonless
+poisonlessness
+poisonmaker
+poisonous
+poisonously
+poisonousness
+poisonproof
+poisonweed
+poisonwood
+poitrail
+poitrel
+poivrade
+pokable
+Pokan
+Pokanoket
+poke
+pokeberry
+poked
+pokeful
+pokeloken
+pokeout
+poker
+pokerish
+pokerishly
+pokerishness
+pokeroot
+pokeweed
+pokey
+pokily
+pokiness
+poking
+Pokom
+Pokomam
+Pokomo
+pokomoo
+Pokonchi
+pokunt
+poky
+pol
+Polab
+Polabian
+Polabish
+polacca
+Polack
+polack
+polacre
+Polander
+Polanisia
+polar
+polaric
+Polarid
+polarigraphic
+polarimeter
+polarimetric
+polarimetry
+Polaris
+polariscope
+polariscopic
+polariscopically
+polariscopist
+polariscopy
+polaristic
+polaristrobometer
+polarity
+polarizability
+polarizable
+polarization
+polarize
+polarizer
+polarly
+polarogram
+polarograph
+polarographic
+polarographically
+polarography
+Polaroid
+polarward
+polaxis
+poldavis
+poldavy
+polder
+polderboy
+polderman
+Pole
+pole
+polearm
+poleax
+poleaxe
+poleaxer
+poleburn
+polecat
+polehead
+poleless
+poleman
+polemarch
+polemic
+polemical
+polemically
+polemician
+polemicist
+polemics
+polemist
+polemize
+Polemoniaceae
+polemoniaceous
+Polemoniales
+Polemonium
+polemoscope
+polenta
+poler
+polesetter
+Polesian
+polesman
+polestar
+poleward
+polewards
+poley
+poliad
+poliadic
+Polian
+polianite
+Polianthes
+police
+policed
+policedom
+policeless
+policeman
+policemanish
+policemanism
+policemanlike
+policemanship
+policewoman
+Polichinelle
+policial
+policize
+policizer
+policlinic
+policy
+policyholder
+poliencephalitis
+poliencephalomyelitis
+poligar
+poligarship
+poligraphical
+Polinices
+polio
+polioencephalitis
+polioencephalomyelitis
+poliomyelitis
+poliomyelopathy
+polioneuromere
+poliorcetic
+poliorcetics
+poliosis
+polis
+Polish
+polish
+polishable
+polished
+polishedly
+polishedness
+polisher
+polishment
+polisman
+polissoir
+Polistes
+politarch
+politarchic
+Politbureau
+Politburo
+polite
+politeful
+politely
+politeness
+politesse
+politic
+political
+politicalism
+politicalize
+politically
+politicaster
+politician
+politicious
+politicist
+politicize
+politicizer
+politicly
+politico
+politicomania
+politicophobia
+politics
+politied
+Politique
+politist
+politize
+polity
+politzerization
+politzerize
+polk
+polka
+Poll
+poll
+pollable
+pollack
+polladz
+pollage
+pollakiuria
+pollam
+pollan
+pollarchy
+pollard
+pollbook
+polled
+pollen
+pollened
+polleniferous
+pollenigerous
+pollenite
+pollenivorous
+pollenless
+pollenlike
+pollenproof
+pollent
+poller
+polleten
+pollex
+pollical
+pollicar
+pollicate
+pollicitation
+pollinar
+pollinarium
+pollinate
+pollination
+pollinator
+pollinctor
+pollincture
+polling
+pollinia
+pollinic
+pollinical
+polliniferous
+pollinigerous
+pollinium
+pollinivorous
+pollinization
+pollinize
+pollinizer
+pollinodial
+pollinodium
+pollinoid
+pollinose
+pollinosis
+polliwig
+polliwog
+pollock
+polloi
+pollster
+pollucite
+pollutant
+pollute
+polluted
+pollutedly
+pollutedness
+polluter
+polluting
+pollutingly
+pollution
+Pollux
+pollux
+Polly
+Pollyanna
+Pollyannish
+pollywog
+polo
+poloconic
+polocyte
+poloist
+polonaise
+Polonese
+Polonia
+Polonial
+Polonian
+Polonism
+polonium
+Polonius
+Polonization
+Polonize
+polony
+polos
+polska
+polt
+poltergeist
+poltfoot
+poltfooted
+poltina
+poltinnik
+poltophagic
+poltophagist
+poltophagy
+poltroon
+poltroonery
+poltroonish
+poltroonishly
+poltroonism
+poluphloisboic
+poluphloisboiotatotic
+poluphloisboiotic
+polverine
+poly
+polyacanthus
+polyacid
+polyacoustic
+polyacoustics
+polyact
+polyactinal
+polyactine
+Polyactinia
+polyad
+polyadelph
+Polyadelphia
+polyadelphian
+polyadelphous
+polyadenia
+polyadenitis
+polyadenoma
+polyadenous
+polyadic
+polyaffectioned
+polyalcohol
+polyamide
+polyamylose
+Polyandria
+polyandria
+polyandrian
+polyandrianism
+polyandric
+polyandrious
+polyandrism
+polyandrist
+polyandrium
+polyandrous
+polyandry
+Polyangium
+polyangular
+polyantha
+polyanthous
+polyanthus
+polyanthy
+polyarch
+polyarchal
+polyarchical
+polyarchist
+polyarchy
+polyarteritis
+polyarthric
+polyarthritic
+polyarthritis
+polyarthrous
+polyarticular
+polyatomic
+polyatomicity
+polyautographic
+polyautography
+polyaxial
+polyaxon
+polyaxone
+polyaxonic
+polybasic
+polybasicity
+polybasite
+polyblast
+Polyborinae
+polyborine
+Polyborus
+polybranch
+Polybranchia
+polybranchian
+Polybranchiata
+polybranchiate
+polybromid
+polybromide
+polybunous
+polybuny
+polybuttoned
+polycarboxylic
+Polycarp
+polycarpellary
+polycarpic
+Polycarpon
+polycarpous
+polycarpy
+polycellular
+polycentral
+polycentric
+polycephalic
+polycephalous
+polycephaly
+Polychaeta
+polychaete
+polychaetous
+polychasial
+polychasium
+polychloride
+polychoerany
+polychord
+polychotomous
+polychotomy
+polychrest
+polychrestic
+polychrestical
+polychresty
+polychroic
+polychroism
+polychromasia
+polychromate
+polychromatic
+polychromatism
+polychromatist
+polychromatize
+polychromatophil
+polychromatophile
+polychromatophilia
+polychromatophilic
+polychrome
+polychromia
+polychromic
+polychromism
+polychromize
+polychromous
+polychromy
+polychronious
+polyciliate
+polycitral
+polyclad
+Polycladida
+polycladine
+polycladose
+polycladous
+polyclady
+Polycletan
+polyclinic
+polyclona
+polycoccous
+Polycodium
+polyconic
+polycormic
+polycotyl
+polycotyledon
+polycotyledonary
+polycotyledonous
+polycotyledony
+polycotylous
+polycotyly
+polycracy
+polycrase
+polycratic
+polycrotic
+polycrotism
+polycrystalline
+polyctenid
+Polyctenidae
+polycttarian
+polycyanide
+polycyclic
+polycycly
+polycyesis
+polycystic
+polycythemia
+polycythemic
+Polycyttaria
+polydactyl
+polydactyle
+polydactylism
+polydactylous
+Polydactylus
+polydactyly
+polydaemoniac
+polydaemonism
+polydaemonist
+polydaemonistic
+polydemic
+polydenominational
+polydental
+polydermous
+polydermy
+polydigital
+polydimensional
+polydipsia
+polydisperse
+polydomous
+polydymite
+polydynamic
+polyeidic
+polyeidism
+polyembryonate
+polyembryonic
+polyembryony
+polyemia
+polyemic
+polyenzymatic
+polyergic
+Polyergus
+polyester
+polyesthesia
+polyesthetic
+polyethnic
+polyethylene
+polyfenestral
+polyflorous
+polyfoil
+polyfold
+Polygala
+Polygalaceae
+polygalaceous
+polygalic
+polygam
+Polygamia
+polygamian
+polygamic
+polygamical
+polygamically
+polygamist
+polygamistic
+polygamize
+polygamodioecious
+polygamous
+polygamously
+polygamy
+polyganglionic
+polygastric
+polygene
+polygenesic
+polygenesis
+polygenesist
+polygenetic
+polygenetically
+polygenic
+polygenism
+polygenist
+polygenistic
+polygenous
+polygeny
+polyglandular
+polyglobulia
+polyglobulism
+polyglossary
+polyglot
+polyglotry
+polyglottal
+polyglottally
+polyglotted
+polyglotter
+polyglottery
+polyglottic
+polyglottically
+polyglottism
+polyglottist
+polyglottonic
+polyglottous
+polyglotwise
+polyglycerol
+polygon
+Polygonaceae
+polygonaceous
+polygonal
+Polygonales
+polygonally
+Polygonatum
+Polygonella
+polygoneutic
+polygoneutism
+Polygonia
+polygonic
+polygonically
+polygonoid
+polygonous
+Polygonum
+polygony
+Polygordius
+polygram
+polygrammatic
+polygraph
+polygrapher
+polygraphic
+polygraphy
+polygroove
+polygrooved
+polygyn
+polygynaiky
+Polygynia
+polygynian
+polygynic
+polygynious
+polygynist
+polygynoecial
+polygynous
+polygyny
+polygyral
+polygyria
+polyhaemia
+polyhaemic
+polyhalide
+polyhalite
+polyhalogen
+polyharmonic
+polyharmony
+polyhedral
+polyhedric
+polyhedrical
+polyhedroid
+polyhedron
+polyhedrosis
+polyhedrous
+polyhemia
+polyhidrosis
+polyhistor
+polyhistorian
+polyhistoric
+polyhistory
+polyhybrid
+polyhydric
+polyhydroxy
+polyideic
+polyideism
+polyidrosis
+polyiodide
+polykaryocyte
+polylaminated
+polylemma
+polylepidous
+polylinguist
+polylith
+polylithic
+polylobular
+polylogy
+polyloquent
+polymagnet
+polymastia
+polymastic
+Polymastiga
+polymastigate
+Polymastigida
+Polymastigina
+polymastigous
+polymastism
+Polymastodon
+polymastodont
+polymasty
+polymath
+polymathic
+polymathist
+polymathy
+polymazia
+polymelia
+polymelian
+polymely
+polymer
+polymere
+polymeria
+polymeric
+polymeride
+polymerism
+polymerization
+polymerize
+polymerous
+polymetallism
+polymetameric
+polymeter
+polymethylene
+polymetochia
+polymetochic
+polymicrian
+polymicrobial
+polymicrobic
+polymicroscope
+polymignite
+Polymixia
+polymixiid
+Polymixiidae
+Polymnestor
+Polymnia
+polymnite
+polymolecular
+polymolybdate
+polymorph
+Polymorpha
+polymorphean
+polymorphic
+polymorphism
+polymorphistic
+polymorphonuclear
+polymorphonucleate
+polymorphosis
+polymorphous
+polymorphy
+Polymyaria
+polymyarian
+Polymyarii
+Polymyodi
+polymyodian
+polymyodous
+polymyoid
+polymyositis
+polymythic
+polymythy
+polynaphthene
+polynemid
+Polynemidae
+polynemoid
+Polynemus
+Polynesian
+polynesic
+polyneural
+polyneuric
+polyneuritic
+polyneuritis
+polyneuropathy
+polynodal
+Polynoe
+polynoid
+Polynoidae
+polynome
+polynomial
+polynomialism
+polynomialist
+polynomic
+polynucleal
+polynuclear
+polynucleate
+polynucleated
+polynucleolar
+polynucleosis
+Polyodon
+polyodont
+polyodontal
+polyodontia
+Polyodontidae
+polyodontoid
+polyoecious
+polyoeciously
+polyoeciousness
+polyoecism
+polyoecy
+polyoicous
+polyommatous
+polyonomous
+polyonomy
+polyonychia
+polyonym
+polyonymal
+polyonymic
+polyonymist
+polyonymous
+polyonymy
+polyophthalmic
+polyopia
+polyopic
+polyopsia
+polyopsy
+polyorama
+polyorchidism
+polyorchism
+polyorganic
+polyose
+polyoxide
+polyoxymethylene
+polyp
+polypage
+polypaged
+polypapilloma
+polyparasitic
+polyparasitism
+polyparesis
+polyparia
+polyparian
+polyparium
+polyparous
+polypary
+polypean
+polyped
+Polypedates
+polypeptide
+polypetal
+Polypetalae
+polypetalous
+Polyphaga
+polyphage
+polyphagia
+polyphagian
+polyphagic
+polyphagist
+polyphagous
+polyphagy
+polyphalangism
+polypharmacal
+polypharmacist
+polypharmacon
+polypharmacy
+polypharmic
+polyphasal
+polyphase
+polyphaser
+Polypheme
+polyphemian
+polyphemic
+polyphemous
+polyphenol
+polyphloesboean
+polyphloisboioism
+polyphloisboism
+polyphobia
+polyphobic
+polyphone
+polyphoned
+polyphonia
+polyphonic
+polyphonical
+polyphonism
+polyphonist
+polyphonium
+polyphonous
+polyphony
+polyphore
+polyphosphoric
+polyphotal
+polyphote
+polyphylesis
+polyphyletic
+polyphyletically
+polyphylety
+polyphylline
+polyphyllous
+polyphylly
+polyphylogeny
+polyphyly
+polyphyodont
+Polypi
+polypi
+polypian
+polypide
+polypidom
+Polypifera
+polypiferous
+polypigerous
+polypinnate
+polypite
+Polyplacophora
+polyplacophoran
+polyplacophore
+polyplacophorous
+polyplastic
+Polyplectron
+polyplegia
+polyplegic
+polyploid
+polyploidic
+polyploidy
+polypnoea
+polypnoeic
+polypod
+Polypoda
+polypodia
+Polypodiaceae
+polypodiaceous
+Polypodium
+polypodous
+polypody
+polypoid
+polypoidal
+Polypomorpha
+polypomorphic
+Polyporaceae
+polyporaceous
+polypore
+polyporite
+polyporoid
+polyporous
+Polyporus
+polypose
+polyposis
+polypotome
+polypous
+polypragmacy
+polypragmatic
+polypragmatical
+polypragmatically
+polypragmatism
+polypragmatist
+polypragmaty
+polypragmist
+polypragmon
+polypragmonic
+polypragmonist
+polyprene
+polyprism
+polyprismatic
+polyprothetic
+polyprotodont
+Polyprotodontia
+polypseudonymous
+polypsychic
+polypsychical
+polypsychism
+polypterid
+Polypteridae
+polypteroid
+Polypterus
+polyptote
+polyptoton
+polyptych
+polypus
+polyrhizal
+polyrhizous
+polyrhythmic
+polyrhythmical
+polysaccharide
+polysaccharose
+Polysaccum
+polysalicylide
+polysarcia
+polysarcous
+polyschematic
+polyschematist
+polyscope
+polyscopic
+polysemant
+polysemantic
+polysemeia
+polysemia
+polysemous
+polysemy
+polysensuous
+polysensuousness
+polysepalous
+polyseptate
+polyserositis
+polysided
+polysidedness
+polysilicate
+polysilicic
+Polysiphonia
+polysiphonic
+polysiphonous
+polysomatic
+polysomatous
+polysomaty
+polysomia
+polysomic
+polysomitic
+polysomous
+polysomy
+polyspast
+polyspaston
+polyspermal
+polyspermatous
+polyspermia
+polyspermic
+polyspermous
+polyspermy
+polyspondylic
+polyspondylous
+polyspondyly
+Polyspora
+polysporangium
+polyspore
+polyspored
+polysporic
+polysporous
+polystachyous
+polystaurion
+polystele
+polystelic
+polystemonous
+polystichoid
+polystichous
+Polystichum
+Polystictus
+Polystomata
+Polystomatidae
+polystomatous
+polystome
+Polystomea
+Polystomella
+Polystomidae
+polystomium
+polystylar
+polystyle
+polystylous
+polystyrene
+polysulphide
+polysulphuration
+polysulphurization
+polysyllabic
+polysyllabical
+polysyllabically
+polysyllabicism
+polysyllabicity
+polysyllabism
+polysyllable
+polysyllogism
+polysyllogistic
+polysymmetrical
+polysymmetrically
+polysymmetry
+polysyndetic
+polysyndetically
+polysyndeton
+polysynthesis
+polysynthesism
+polysynthetic
+polysynthetical
+polysynthetically
+polysyntheticism
+polysynthetism
+polysynthetize
+polytechnic
+polytechnical
+polytechnics
+polytechnist
+polyterpene
+Polythalamia
+polythalamian
+polythalamic
+polythalamous
+polythecial
+polytheism
+polytheist
+polytheistic
+polytheistical
+polytheistically
+polytheize
+polythelia
+polythelism
+polythely
+polythene
+polythionic
+polytitanic
+polytocous
+polytokous
+polytoky
+polytomous
+polytomy
+polytonal
+polytonalism
+polytonality
+polytone
+polytonic
+polytony
+polytope
+polytopic
+polytopical
+Polytrichaceae
+polytrichaceous
+polytrichia
+polytrichous
+Polytrichum
+polytrochal
+polytrochous
+polytrope
+polytrophic
+polytropic
+polytungstate
+polytungstic
+polytype
+polytypic
+polytypical
+polytypy
+polyuresis
+polyuria
+polyuric
+polyvalence
+polyvalent
+polyvinyl
+polyvinylidene
+polyvirulent
+polyvoltine
+Polyzoa
+polyzoal
+polyzoan
+polyzoarial
+polyzoarium
+polyzoary
+polyzoic
+polyzoism
+polyzonal
+polyzooid
+polyzoon
+polzenite
+pom
+pomace
+Pomaceae
+pomacentrid
+Pomacentridae
+pomacentroid
+Pomacentrus
+pomaceous
+pomade
+Pomaderris
+Pomak
+pomander
+pomane
+pomarine
+pomarium
+pomate
+pomato
+pomatomid
+Pomatomidae
+Pomatomus
+pomatorhine
+pomatum
+pombe
+pombo
+pome
+pomegranate
+pomelo
+Pomeranian
+pomeridian
+pomerium
+pomewater
+pomey
+pomfret
+pomiculture
+pomiculturist
+pomiferous
+pomiform
+pomivorous
+Pommard
+pomme
+pommee
+pommel
+pommeled
+pommeler
+pommet
+pommey
+pommy
+Pomo
+pomological
+pomologically
+pomologist
+pomology
+Pomona
+pomonal
+pomonic
+pomp
+pompa
+Pompadour
+pompadour
+pompal
+pompano
+Pompeian
+Pompeii
+pompelmous
+Pompey
+pompey
+pompholix
+pompholygous
+pompholyx
+pomphus
+pompier
+pompilid
+Pompilidae
+pompiloid
+Pompilus
+pompion
+pompist
+pompless
+pompoleon
+pompon
+pomposity
+pompous
+pompously
+pompousness
+pompster
+Pomptine
+pomster
+pon
+Ponca
+ponce
+ponceau
+poncelet
+poncho
+ponchoed
+Poncirus
+pond
+pondage
+pondbush
+ponder
+ponderability
+ponderable
+ponderableness
+ponderal
+ponderance
+ponderancy
+ponderant
+ponderary
+ponderate
+ponderation
+ponderative
+ponderer
+pondering
+ponderingly
+ponderling
+ponderment
+ponderomotive
+ponderosapine
+ponderosity
+ponderous
+ponderously
+ponderousness
+pondfish
+pondful
+pondgrass
+pondlet
+pondman
+Pondo
+pondok
+pondokkie
+Pondomisi
+pondside
+pondus
+pondweed
+pondwort
+pondy
+pone
+ponent
+Ponera
+Poneramoeba
+ponerid
+Poneridae
+Ponerinae
+ponerine
+poneroid
+ponerology
+poney
+pong
+ponga
+pongee
+Pongidae
+Pongo
+poniard
+ponica
+ponier
+ponja
+pont
+Pontac
+Pontacq
+pontage
+pontal
+Pontederia
+Pontederiaceae
+pontederiaceous
+pontee
+pontes
+pontianak
+Pontic
+pontic
+ponticello
+ponticular
+ponticulus
+pontifex
+pontiff
+pontific
+pontifical
+pontificalia
+pontificalibus
+pontificality
+pontifically
+pontificate
+pontification
+pontifices
+pontificial
+pontificially
+pontificious
+pontify
+pontil
+pontile
+pontin
+Pontine
+pontine
+pontist
+pontlevis
+ponto
+Pontocaspian
+pontocerebellar
+ponton
+pontonier
+pontoon
+pontooneer
+pontooner
+pontooning
+Pontus
+pontvolant
+pony
+ponzite
+pooa
+pooch
+pooder
+poodle
+poodledom
+poodleish
+poodleship
+poof
+poogye
+pooh
+poohpoohist
+pook
+pooka
+pookaun
+pookoo
+pool
+pooler
+pooli
+poolroom
+poolroot
+poolside
+poolwort
+pooly
+poon
+poonac
+poonga
+poonghie
+poop
+pooped
+poophyte
+poophytic
+poor
+poorhouse
+poorish
+poorliness
+poorling
+poorly
+poorlyish
+poormaster
+poorness
+poorweed
+poorwill
+poot
+Pop
+pop
+popadam
+popal
+popcorn
+popdock
+pope
+Popean
+popedom
+popeholy
+popehood
+popeism
+popeler
+popeless
+popelike
+popeline
+popely
+popery
+popeship
+popess
+popeye
+popeyed
+popglove
+popgun
+popgunner
+popgunnery
+Popian
+popify
+popinac
+popinjay
+Popish
+popish
+popishly
+popishness
+popjoy
+poplar
+poplared
+Poplilia
+poplin
+poplinette
+popliteal
+popliteus
+poplolly
+Popocracy
+Popocrat
+Popolari
+Popoloco
+popomastic
+popover
+Popovets
+poppa
+poppability
+poppable
+poppean
+poppel
+popper
+poppet
+poppethead
+poppied
+poppin
+popple
+popply
+poppy
+poppycock
+poppycockish
+poppyfish
+poppyhead
+poppylike
+poppywort
+popshop
+populace
+popular
+popularism
+Popularist
+popularity
+popularization
+popularize
+popularizer
+popularly
+popularness
+populate
+population
+populational
+populationist
+populationistic
+populationless
+populator
+populicide
+populin
+Populism
+Populist
+Populistic
+populous
+populously
+populousness
+Populus
+popweed
+poral
+porbeagle
+porcate
+porcated
+porcelain
+porcelainization
+porcelainize
+porcelainlike
+porcelainous
+porcelaneous
+porcelanic
+porcelanite
+porcelanous
+Porcellana
+porcellanian
+porcellanid
+Porcellanidae
+porcellanize
+porch
+porched
+porching
+porchless
+porchlike
+porcine
+Porcula
+porcupine
+porcupinish
+pore
+pored
+porelike
+Porella
+porencephalia
+porencephalic
+porencephalitis
+porencephalon
+porencephalous
+porencephalus
+porencephaly
+porer
+porge
+porger
+porgy
+Poria
+poricidal
+Porifera
+poriferal
+poriferan
+poriferous
+poriform
+porimania
+poriness
+poring
+poringly
+poriomanic
+porism
+porismatic
+porismatical
+porismatically
+poristic
+poristical
+porite
+Porites
+Poritidae
+poritoid
+pork
+porkburger
+porker
+porkery
+porket
+porkfish
+porkish
+porkless
+porkling
+porkman
+Porkopolis
+porkpie
+porkwood
+porky
+pornerastic
+pornocracy
+pornocrat
+pornograph
+pornographer
+pornographic
+pornographically
+pornographist
+pornography
+pornological
+Porocephalus
+porodine
+porodite
+porogam
+porogamic
+porogamous
+porogamy
+porokaiwhiria
+porokeratosis
+Porokoto
+poroma
+porometer
+porophyllous
+poroplastic
+poroporo
+pororoca
+poros
+poroscope
+poroscopic
+poroscopy
+porose
+poroseness
+porosimeter
+porosis
+porosity
+porotic
+porotype
+porous
+porously
+porousness
+porpentine
+porphine
+Porphyra
+Porphyraceae
+porphyraceous
+porphyratin
+Porphyrean
+porphyria
+Porphyrian
+porphyrian
+Porphyrianist
+porphyrin
+porphyrine
+porphyrinuria
+Porphyrio
+porphyrion
+porphyrite
+porphyritic
+porphyroblast
+porphyroblastic
+porphyrogene
+porphyrogenite
+porphyrogenitic
+porphyrogenitism
+porphyrogeniture
+porphyrogenitus
+porphyroid
+porphyrophore
+porphyrous
+porphyry
+Porpita
+porpitoid
+porpoise
+porpoiselike
+porporate
+porr
+porraceous
+porrect
+porrection
+porrectus
+porret
+porridge
+porridgelike
+porridgy
+porriginous
+porrigo
+Porrima
+porringer
+porriwiggle
+porry
+port
+porta
+portability
+portable
+portableness
+portably
+portage
+portague
+portahepatis
+portail
+portal
+portaled
+portalled
+portalless
+portamento
+portance
+portass
+portatile
+portative
+portcrayon
+portcullis
+porteacid
+ported
+porteligature
+portend
+portendance
+portendment
+Porteno
+portension
+portent
+portention
+portentosity
+portentous
+portentously
+portentousness
+porteous
+porter
+porterage
+Porteranthus
+porteress
+porterhouse
+porterlike
+porterly
+portership
+portfire
+portfolio
+portglaive
+portglave
+portgrave
+Porthetria
+Portheus
+porthole
+porthook
+porthors
+porthouse
+Portia
+portia
+portico
+porticoed
+portiere
+portiered
+portifory
+portify
+portio
+portiomollis
+portion
+portionable
+portional
+portionally
+portioner
+portionist
+portionize
+portionless
+portitor
+Portlandian
+portlast
+portless
+portlet
+portligature
+portlily
+portliness
+portly
+portman
+portmanmote
+portmanteau
+portmanteaux
+portmantle
+portmantologism
+portment
+portmoot
+porto
+portoise
+portolan
+portolano
+Portor
+portrait
+portraitist
+portraitlike
+portraiture
+portray
+portrayable
+portrayal
+portrayer
+portrayist
+portrayment
+portreeve
+portreeveship
+portress
+portside
+portsider
+portsman
+portuary
+portugais
+Portugal
+Portugalism
+Portugee
+Portuguese
+Portulaca
+Portulacaceae
+portulacaceous
+Portulacaria
+portulan
+Portunalia
+portunian
+Portunidae
+Portunus
+portway
+porty
+porule
+porulose
+porulous
+porus
+porwigle
+pory
+Porzana
+posadaship
+posca
+pose
+Poseidon
+Poseidonian
+posement
+poser
+poseur
+posey
+posh
+posing
+posingly
+posit
+position
+positional
+positioned
+positioner
+positionless
+positival
+positive
+positively
+positiveness
+positivism
+positivist
+positivistic
+positivistically
+positivity
+positivize
+positor
+positron
+positum
+positure
+Posnanian
+posnet
+posole
+posologic
+posological
+posologist
+posology
+pospolite
+poss
+posse
+posseman
+possess
+possessable
+possessed
+possessedly
+possessedness
+possessing
+possessingly
+possessingness
+possession
+possessional
+possessionalism
+possessionalist
+possessionary
+possessionate
+possessioned
+possessioner
+possessionist
+possessionless
+possessionlessness
+possessival
+possessive
+possessively
+possessiveness
+possessor
+possessoress
+possessorial
+possessoriness
+possessorship
+possessory
+posset
+possibilism
+possibilist
+possibilitate
+possibility
+possible
+possibleness
+possibly
+possum
+possumwood
+post
+postabdomen
+postabdominal
+postable
+postabortal
+postacetabular
+postadjunct
+postage
+postal
+postallantoic
+postally
+postalveolar
+postament
+postamniotic
+postanal
+postanesthetic
+postantennal
+postaortic
+postapoplectic
+postappendicular
+postarterial
+postarthritic
+postarticular
+postarytenoid
+postaspirate
+postaspirated
+postasthmatic
+postatrial
+postauditory
+postauricular
+postaxiad
+postaxial
+postaxially
+postaxillary
+postbag
+postbaptismal
+postbox
+postboy
+postbrachial
+postbrachium
+postbranchial
+postbreakfast
+postbronchial
+postbuccal
+postbulbar
+postbursal
+postcaecal
+postcalcaneal
+postcalcarine
+postcanonical
+postcardiac
+postcardinal
+postcarnate
+postcarotid
+postcart
+postcartilaginous
+postcatarrhal
+postcava
+postcaval
+postcecal
+postcenal
+postcentral
+postcentrum
+postcephalic
+postcerebellar
+postcerebral
+postcesarean
+postcibal
+postclassic
+postclassical
+postclassicism
+postclavicle
+postclavicula
+postclavicular
+postclimax
+postclitellian
+postclival
+postcolon
+postcolonial
+postcolumellar
+postcomitial
+postcommissural
+postcommissure
+postcommunicant
+Postcommunion
+postconceptive
+postcondylar
+postconfinement
+postconnubial
+postconsonantal
+postcontact
+postcontract
+postconvalescent
+postconvulsive
+postcordial
+postcornu
+postcosmic
+postcostal
+postcoxal
+postcritical
+postcrural
+postcubital
+postdate
+postdental
+postdepressive
+postdetermined
+postdevelopmental
+postdiagnostic
+postdiaphragmatic
+postdiastolic
+postdicrotic
+postdigestive
+postdigital
+postdiluvial
+postdiluvian
+postdiphtheric
+postdiphtheritic
+postdisapproved
+postdisseizin
+postdisseizor
+postdoctoral
+postdoctorate
+postdural
+postdysenteric
+posted
+posteen
+postelection
+postelementary
+postembryonal
+postembryonic
+postemporal
+postencephalitic
+postencephalon
+postenteral
+postentry
+postepileptic
+poster
+posterette
+posteriad
+posterial
+posterior
+posterioric
+posteriorically
+posterioristic
+posterioristically
+posteriority
+posteriorly
+posteriormost
+posteriors
+posteriorums
+posterish
+posterishness
+posterist
+posterity
+posterize
+postern
+posteroclusion
+posterodorsad
+posterodorsal
+posterodorsally
+posteroexternal
+posteroinferior
+posterointernal
+posterolateral
+posteromedial
+posteromedian
+posteromesial
+posteroparietal
+posterosuperior
+posterotemporal
+posteroterminal
+posteroventral
+posteruptive
+postesophageal
+posteternity
+postethmoid
+postexilian
+postexilic
+postexist
+postexistence
+postexistency
+postexistent
+postface
+postfact
+postfebrile
+postfemoral
+postfetal
+postfix
+postfixal
+postfixation
+postfixed
+postfixial
+postflection
+postflexion
+postform
+postfoveal
+postfrontal
+postfurca
+postfurcal
+postganglionic
+postgangrenal
+postgastric
+postgeminum
+postgenial
+postgeniture
+postglacial
+postglenoid
+postglenoidal
+postgonorrheic
+postgracile
+postgraduate
+postgrippal
+posthabit
+posthaste
+posthemiplegic
+posthemorrhagic
+posthepatic
+posthetomist
+posthetomy
+posthexaplaric
+posthippocampal
+posthitis
+postholder
+posthole
+posthouse
+posthumeral
+posthumous
+posthumously
+posthumousness
+posthumus
+posthyoid
+posthypnotic
+posthypnotically
+posthypophyseal
+posthypophysis
+posthysterical
+postic
+postical
+postically
+posticous
+posticteric
+posticum
+postil
+postilion
+postilioned
+postillate
+postillation
+postillator
+postimpressionism
+postimpressionist
+postimpressionistic
+postinfective
+postinfluenzal
+posting
+postingly
+postintestinal
+postique
+postischial
+postjacent
+postjugular
+postlabial
+postlachrymal
+postlaryngeal
+postlegitimation
+postlenticular
+postless
+postlike
+postliminary
+postliminiary
+postliminious
+postliminium
+postliminous
+postliminy
+postloitic
+postloral
+postlude
+postludium
+postluetic
+postmalarial
+postmamillary
+postmammary
+postman
+postmandibular
+postmaniacal
+postmarital
+postmark
+postmarriage
+postmaster
+postmasterlike
+postmastership
+postmastoid
+postmaturity
+postmaxillary
+postmaximal
+postmeatal
+postmedia
+postmedial
+postmedian
+postmediastinal
+postmediastinum
+postmedullary
+postmeiotic
+postmeningeal
+postmenstrual
+postmental
+postmeridian
+postmeridional
+postmesenteric
+postmillenarian
+postmillenarianism
+postmillennial
+postmillennialism
+postmillennialist
+postmillennian
+postmineral
+postmistress
+postmortal
+postmortuary
+postmundane
+postmuscular
+postmutative
+postmycotic
+postmyxedematous
+postnarial
+postnaris
+postnasal
+postnatal
+postnate
+postnati
+postnecrotic
+postnephritic
+postneural
+postneuralgic
+postneuritic
+postneurotic
+postnodular
+postnominal
+postnotum
+postnuptial
+postnuptially
+postobituary
+postocular
+postolivary
+postomental
+postoperative
+postoptic
+postoral
+postorbital
+postordination
+postorgastic
+postosseous
+postotic
+postpagan
+postpaid
+postpalatal
+postpalatine
+postpalpebral
+postpaludal
+postparalytic
+postparietal
+postparotid
+postparotitic
+postparoxysmal
+postparturient
+postpatellar
+postpathological
+postpericardial
+postpharyngeal
+postphlogistic
+postphragma
+postphrenic
+postphthisic
+postpituitary
+postplace
+postplegic
+postpneumonic
+postponable
+postpone
+postponement
+postponence
+postponer
+postpontile
+postpose
+postposited
+postposition
+postpositional
+postpositive
+postpositively
+postprandial
+postprandially
+postpredicament
+postprophesy
+postprostate
+postpubertal
+postpubescent
+postpubic
+postpubis
+postpuerperal
+postpulmonary
+postpupillary
+postpycnotic
+postpyloric
+postpyramidal
+postpyretic
+postrachitic
+postramus
+postrectal
+postreduction
+postremogeniture
+postremote
+postrenal
+postresurrection
+postresurrectional
+postretinal
+postrheumatic
+postrhinal
+postrider
+postrorse
+postrostral
+postrubeolar
+postsaccular
+postsacral
+postscalenus
+postscapula
+postscapular
+postscapularis
+postscarlatinal
+postscenium
+postscorbutic
+postscribe
+postscript
+postscriptum
+postscutellar
+postscutellum
+postseason
+postsigmoid
+postsign
+postspasmodic
+postsphenoid
+postsphenoidal
+postsphygmic
+postspinous
+postsplenial
+postsplenic
+poststernal
+poststertorous
+postsuppurative
+postsurgical
+postsynaptic
+postsynsacral
+postsyphilitic
+postsystolic
+posttabetic
+posttarsal
+posttetanic
+postthalamic
+postthoracic
+postthyroidal
+posttibial
+posttonic
+posttoxic
+posttracheal
+posttrapezoid
+posttraumatic
+posttreaty
+posttubercular
+posttussive
+posttympanic
+posttyphoid
+postulancy
+postulant
+postulantship
+postulata
+postulate
+postulation
+postulational
+postulator
+postulatory
+postulatum
+postulnar
+postumbilical
+postumbonal
+postural
+posture
+posturer
+postureteric
+posturist
+posturize
+postuterine
+postvaccinal
+postvaricellar
+postvarioloid
+postvelar
+postvenereal
+postvenous
+postverbal
+Postverta
+postvertebral
+postvesical
+postvide
+postvocalic
+postwar
+postward
+postwise
+postwoman
+postxyphoid
+postyard
+postzygapophysial
+postzygapophysis
+posy
+pot
+potability
+potable
+potableness
+potagerie
+potagery
+potamic
+Potamobiidae
+Potamochoerus
+Potamogale
+Potamogalidae
+Potamogeton
+Potamogetonaceae
+potamogetonaceous
+potamological
+potamologist
+potamology
+potamometer
+Potamonidae
+potamophilous
+potamoplankton
+potash
+potashery
+potass
+potassa
+potassamide
+potassic
+potassiferous
+potassium
+potate
+potation
+potative
+potato
+potator
+potatory
+Potawatami
+Potawatomi
+potbank
+potbellied
+potbelly
+potboil
+potboiler
+potboy
+potboydom
+potch
+potcher
+potcherman
+potcrook
+potdar
+pote
+potecary
+poteen
+potence
+potency
+potent
+potentacy
+potentate
+potential
+potentiality
+potentialization
+potentialize
+potentially
+potentialness
+potentiate
+potentiation
+Potentilla
+potentiometer
+potentiometric
+potentize
+potently
+potentness
+poter
+Poterium
+potestal
+potestas
+potestate
+potestative
+poteye
+potful
+potgirl
+potgun
+pothanger
+pothead
+pothecary
+potheen
+pother
+potherb
+potherment
+pothery
+pothole
+pothook
+pothookery
+Pothos
+pothouse
+pothousey
+pothunt
+pothunter
+pothunting
+poticary
+potichomania
+potichomanist
+potifer
+Potiguara
+potion
+potlatch
+potleg
+potlicker
+potlid
+potlike
+potluck
+potmaker
+potmaking
+potman
+potomania
+potomato
+potometer
+potong
+potoo
+Potoroinae
+potoroo
+Potorous
+potpie
+potpourri
+potrack
+potsherd
+potshoot
+potshooter
+potstick
+potstone
+pott
+pottage
+pottagy
+pottah
+potted
+potter
+potterer
+potteress
+potteringly
+pottery
+Pottiaceae
+potting
+pottinger
+pottle
+pottled
+potto
+potty
+potwaller
+potwalling
+potware
+potwhisky
+potwork
+potwort
+pouce
+poucer
+poucey
+pouch
+pouched
+pouchful
+pouchless
+pouchlike
+pouchy
+poudrette
+pouf
+poulaine
+poulard
+poulardize
+poulp
+poulpe
+poult
+poulter
+poulterer
+poulteress
+poultice
+poulticewise
+poultry
+poultrydom
+poultryist
+poultryless
+poultrylike
+poultryman
+poultryproof
+pounamu
+pounce
+pounced
+pouncer
+pouncet
+pouncing
+pouncingly
+pound
+poundage
+poundal
+poundcake
+pounder
+pounding
+poundkeeper
+poundless
+poundlike
+poundman
+poundmaster
+poundmeal
+poundstone
+poundworth
+pour
+pourer
+pourie
+pouring
+pouringly
+pourparler
+pourparley
+pourpiece
+pourpoint
+pourpointer
+pouser
+poussette
+pout
+pouter
+poutful
+pouting
+poutingly
+pouty
+poverish
+poverishment
+poverty
+povertyweed
+Povindah
+pow
+powder
+powderable
+powdered
+powderer
+powderiness
+powdering
+powderization
+powderize
+powderizer
+powderlike
+powderman
+powdery
+powdike
+powdry
+powellite
+power
+powerboat
+powered
+powerful
+powerfully
+powerfulness
+powerhouse
+powerless
+powerlessly
+powerlessness
+powermonger
+Powhatan
+powitch
+powldoody
+pownie
+powsoddy
+powsowdy
+powwow
+powwower
+powwowism
+pox
+poxy
+poy
+poyou
+pozzolanic
+pozzuolana
+pozzuolanic
+praam
+prabble
+prabhu
+practic
+practicability
+practicable
+practicableness
+practicably
+practical
+practicalism
+practicalist
+practicality
+practicalization
+practicalize
+practicalizer
+practically
+practicalness
+practicant
+practice
+practiced
+practicedness
+practicer
+practician
+practicianism
+practicum
+practitional
+practitioner
+practitionery
+prad
+Pradeep
+pradhana
+praeabdomen
+praeacetabular
+praeanal
+praecava
+praecipe
+praecipuum
+praecoces
+praecocial
+praecognitum
+praecoracoid
+praecordia
+praecordial
+praecordium
+praecornu
+praecox
+praecuneus
+praedial
+praedialist
+praediality
+praeesophageal
+praefect
+praefectorial
+praefectus
+praefervid
+praefloration
+praefoliation
+praehallux
+praelabrum
+praelection
+praelector
+praelectorship
+praelectress
+praeludium
+praemaxilla
+praemolar
+praemunire
+praenarial
+Praenestine
+Praenestinian
+praeneural
+praenomen
+praenomina
+praenominal
+praeoperculum
+praepositor
+praepostor
+praepostorial
+praepubis
+praepuce
+praescutum
+Praesepe
+praesertim
+Praesian
+praesidium
+praesphenoid
+praesternal
+praesternum
+praestomium
+praesystolic
+praetaxation
+praetexta
+praetor
+praetorial
+Praetorian
+praetorian
+praetorianism
+praetorium
+praetorship
+praezygapophysis
+pragmatic
+pragmatica
+pragmatical
+pragmaticality
+pragmatically
+pragmaticalness
+pragmaticism
+pragmatics
+pragmatism
+pragmatist
+pragmatistic
+pragmatize
+pragmatizer
+prairie
+prairiecraft
+prairied
+prairiedom
+prairielike
+prairieweed
+prairillon
+praisable
+praisableness
+praisably
+praise
+praiseful
+praisefully
+praisefulness
+praiseless
+praiseproof
+praiser
+praiseworthy
+praising
+praisingly
+praisworthily
+praisworthiness
+Prajapati
+prajna
+Prakash
+Prakrit
+prakriti
+Prakritic
+Prakritize
+praline
+pralltriller
+pram
+Pramnian
+prana
+prance
+pranceful
+prancer
+prancing
+prancingly
+prancy
+prandial
+prandially
+prank
+pranked
+pranker
+prankful
+prankfulness
+pranking
+prankingly
+prankish
+prankishly
+prankishness
+prankle
+pranksome
+pranksomeness
+prankster
+pranky
+prase
+praseocobaltic
+praseodidymium
+praseodymia
+praseodymium
+praseolite
+prasine
+prasinous
+prasoid
+prasophagous
+prasophagy
+prastha
+prat
+pratal
+Pratap
+Pratapwant
+prate
+prateful
+pratement
+pratensian
+Prater
+prater
+pratey
+pratfall
+pratiloma
+Pratincola
+pratincole
+pratincoline
+pratincolous
+prating
+pratingly
+pratique
+pratiyasamutpada
+Pratt
+prattfall
+prattle
+prattlement
+prattler
+prattling
+prattlingly
+prattly
+prau
+Pravin
+pravity
+prawn
+prawner
+prawny
+Praxean
+Praxeanist
+praxinoscope
+praxiology
+praxis
+Praxitelean
+pray
+praya
+prayer
+prayerful
+prayerfully
+prayerfulness
+prayerless
+prayerlessly
+prayerlessness
+prayermaker
+prayermaking
+prayerwise
+prayful
+praying
+prayingly
+prayingwise
+preabdomen
+preabsorb
+preabsorbent
+preabstract
+preabundance
+preabundant
+preabundantly
+preaccept
+preacceptance
+preaccess
+preaccessible
+preaccidental
+preaccidentally
+preaccommodate
+preaccommodating
+preaccommodatingly
+preaccommodation
+preaccomplish
+preaccomplishment
+preaccord
+preaccordance
+preaccount
+preaccounting
+preaccredit
+preaccumulate
+preaccumulation
+preaccusation
+preaccuse
+preaccustom
+preaccustomed
+preacetabular
+preach
+preachable
+preacher
+preacherdom
+preacheress
+preacherize
+preacherless
+preacherling
+preachership
+preachieved
+preachification
+preachify
+preachily
+preachiness
+preaching
+preachingly
+preachman
+preachment
+preachy
+preacid
+preacidity
+preacidly
+preacidness
+preacknowledge
+preacknowledgment
+preacquaint
+preacquaintance
+preacquire
+preacquired
+preacquit
+preacquittal
+preact
+preaction
+preactive
+preactively
+preactivity
+preacute
+preacutely
+preacuteness
+preadamic
+preadamite
+preadamitic
+preadamitical
+preadamitism
+preadapt
+preadaptable
+preadaptation
+preaddition
+preadditional
+preaddress
+preadequacy
+preadequate
+preadequately
+preadhere
+preadherence
+preadherent
+preadjectival
+preadjective
+preadjourn
+preadjournment
+preadjunct
+preadjust
+preadjustable
+preadjustment
+preadministration
+preadministrative
+preadministrator
+preadmire
+preadmirer
+preadmission
+preadmit
+preadmonish
+preadmonition
+preadolescent
+preadopt
+preadoption
+preadoration
+preadore
+preadorn
+preadornment
+preadult
+preadulthood
+preadvance
+preadvancement
+preadventure
+preadvertency
+preadvertent
+preadvertise
+preadvertisement
+preadvice
+preadvisable
+preadvise
+preadviser
+preadvisory
+preadvocacy
+preadvocate
+preaestival
+preaffect
+preaffection
+preaffidavit
+preaffiliate
+preaffiliation
+preaffirm
+preaffirmation
+preaffirmative
+preafflict
+preaffliction
+preafternoon
+preaged
+preaggravate
+preaggravation
+preaggression
+preaggressive
+preagitate
+preagitation
+preagonal
+preagony
+preagree
+preagreement
+preagricultural
+preagriculture
+prealarm
+prealcohol
+prealcoholic
+prealgebra
+prealgebraic
+prealkalic
+preallable
+preallably
+preallegation
+preallege
+prealliance
+preallied
+preallot
+preallotment
+preallow
+preallowable
+preallowably
+preallowance
+preallude
+preallusion
+preally
+prealphabet
+prealphabetical
+prealtar
+prealteration
+prealveolar
+preamalgamation
+preambassadorial
+preambition
+preambitious
+preamble
+preambled
+preambling
+preambular
+preambulary
+preambulate
+preambulation
+preambulatory
+preanal
+preanaphoral
+preanesthetic
+preanimism
+preannex
+preannounce
+preannouncement
+preannouncer
+preantepenult
+preantepenultimate
+preanterior
+preanticipate
+preantiquity
+preantiseptic
+preaortic
+preappearance
+preapperception
+preapplication
+preappoint
+preappointment
+preapprehension
+preapprise
+preapprobation
+preapproval
+preapprove
+preaptitude
+prearm
+prearrange
+prearrangement
+prearrest
+prearrestment
+prearticulate
+preartistic
+preascertain
+preascertainment
+preascitic
+preaseptic
+preassigned
+preassume
+preassurance
+preassure
+preataxic
+preattachment
+preattune
+preaudience
+preauditory
+preaver
+preavowal
+preaxiad
+preaxial
+preaxially
+prebachelor
+prebacillary
+prebake
+prebalance
+preballot
+preballoting
+prebankruptcy
+prebaptismal
+prebaptize
+prebarbaric
+prebarbarous
+prebargain
+prebasal
+prebasilar
+prebeleve
+prebelief
+prebeliever
+prebelieving
+prebellum
+prebeloved
+prebend
+prebendal
+prebendary
+prebendaryship
+prebendate
+prebenediction
+prebeneficiary
+prebenefit
+prebeset
+prebestow
+prebestowal
+prebetray
+prebetrayal
+prebetrothal
+prebid
+prebidding
+prebill
+prebless
+preblessing
+preblockade
+preblooming
+preboast
+preboding
+preboil
+preborn
+preborrowing
+preboyhood
+prebrachial
+prebrachium
+prebreathe
+prebridal
+prebroadcasting
+prebromidic
+prebronchial
+prebronze
+prebrute
+prebuccal
+prebudget
+prebudgetary
+prebullying
+preburlesque
+preburn
+precalculable
+precalculate
+precalculation
+precampaign
+precancel
+precancellation
+precancerous
+precandidacy
+precandidature
+precanning
+precanonical
+precant
+precantation
+precanvass
+precapillary
+precapitalist
+precapitalistic
+precaptivity
+precapture
+precarcinomatous
+precardiac
+precaria
+precarious
+precariously
+precariousness
+precarium
+precarnival
+precartilage
+precartilaginous
+precary
+precast
+precation
+precative
+precatively
+precatory
+precaudal
+precausation
+precaution
+precautional
+precautionary
+precautious
+precautiously
+precautiousness
+precava
+precaval
+precedable
+precede
+precedence
+precedency
+precedent
+precedentable
+precedentary
+precedented
+precedential
+precedentless
+precedently
+preceder
+preceding
+precelebrant
+precelebrate
+precelebration
+precensure
+precensus
+precent
+precentor
+precentorial
+precentorship
+precentory
+precentral
+precentress
+precentrix
+precentrum
+precept
+preception
+preceptist
+preceptive
+preceptively
+preceptor
+preceptoral
+preceptorate
+preceptorial
+preceptorially
+preceptorship
+preceptory
+preceptress
+preceptual
+preceptually
+preceramic
+precerebellar
+precerebral
+precerebroid
+preceremonial
+preceremony
+precertification
+precertify
+preces
+precess
+precession
+precessional
+prechallenge
+prechampioned
+prechampionship
+precharge
+prechart
+precheck
+prechemical
+precherish
+prechildhood
+prechill
+prechloric
+prechloroform
+prechoice
+prechoose
+prechordal
+prechoroid
+preciation
+precinct
+precinction
+precinctive
+preciosity
+precious
+preciously
+preciousness
+precipe
+precipice
+precipiced
+precipitability
+precipitable
+precipitance
+precipitancy
+precipitant
+precipitantly
+precipitantness
+precipitate
+precipitated
+precipitatedly
+precipitately
+precipitation
+precipitative
+precipitator
+precipitin
+precipitinogen
+precipitinogenic
+precipitous
+precipitously
+precipitousness
+precirculate
+precirculation
+precis
+precise
+precisely
+preciseness
+precisian
+precisianism
+precisianist
+precision
+precisional
+precisioner
+precisionism
+precisionist
+precisionize
+precisive
+precitation
+precite
+precited
+precivilization
+preclaim
+preclaimant
+preclaimer
+preclassic
+preclassical
+preclassification
+preclassified
+preclassify
+preclean
+precleaner
+precleaning
+preclerical
+preclimax
+preclinical
+preclival
+precloacal
+preclose
+preclosure
+preclothe
+precludable
+preclude
+preclusion
+preclusive
+preclusively
+precoagulation
+precoccygeal
+precocial
+precocious
+precociously
+precociousness
+precocity
+precogitate
+precogitation
+precognition
+precognitive
+precognizable
+precognizant
+precognize
+precognosce
+precoil
+precoiler
+precoincidence
+precoincident
+precoincidently
+precollapsable
+precollapse
+precollect
+precollectable
+precollection
+precollector
+precollege
+precollegiate
+precollude
+precollusion
+precollusive
+precolor
+precolorable
+precoloration
+precoloring
+precombat
+precombatant
+precombination
+precombine
+precombustion
+precommand
+precommend
+precomment
+precommercial
+precommissural
+precommissure
+precommit
+precommune
+precommunicate
+precommunication
+precommunion
+precompare
+precomparison
+precompass
+precompel
+precompensate
+precompensation
+precompilation
+precompile
+precompiler
+precompleteness
+precompletion
+precompliance
+precompliant
+precomplicate
+precomplication
+precompose
+precomposition
+precompound
+precompounding
+precompoundly
+precomprehend
+precomprehension
+precomprehensive
+precompress
+precompulsion
+precomradeship
+preconceal
+preconcealment
+preconcede
+preconceivable
+preconceive
+preconceived
+preconcentrate
+preconcentrated
+preconcentratedly
+preconcentration
+preconcept
+preconception
+preconceptional
+preconceptual
+preconcern
+preconcernment
+preconcert
+preconcerted
+preconcertedly
+preconcertedness
+preconcertion
+preconcertive
+preconcession
+preconcessive
+preconclude
+preconclusion
+preconcur
+preconcurrence
+preconcurrent
+preconcurrently
+precondemn
+precondemnation
+precondensation
+precondense
+precondition
+preconditioned
+preconduct
+preconduction
+preconductor
+precondylar
+precondyloid
+preconfer
+preconference
+preconfess
+preconfession
+preconfide
+preconfiguration
+preconfigure
+preconfine
+preconfinedly
+preconfinemnt
+preconfirm
+preconfirmation
+preconflict
+preconform
+preconformity
+preconfound
+preconfuse
+preconfusedly
+preconfusion
+precongenial
+precongested
+precongestion
+precongestive
+precongratulate
+precongratulation
+precongressional
+preconizance
+preconization
+preconize
+preconizer
+preconjecture
+preconnection
+preconnective
+preconnubial
+preconquer
+preconquest
+preconquestal
+preconquestual
+preconscious
+preconsciously
+preconsciousness
+preconsecrate
+preconsecration
+preconsent
+preconsider
+preconsideration
+preconsign
+preconsolation
+preconsole
+preconsolidate
+preconsolidated
+preconsolidation
+preconsonantal
+preconspiracy
+preconspirator
+preconspire
+preconstituent
+preconstitute
+preconstruct
+preconstruction
+preconsult
+preconsultation
+preconsultor
+preconsume
+preconsumer
+preconsumption
+precontact
+precontain
+precontained
+precontemn
+precontemplate
+precontemplation
+precontemporaneous
+precontemporary
+precontend
+precontent
+precontention
+precontently
+precontentment
+precontest
+precontinental
+precontract
+precontractive
+precontractual
+precontribute
+precontribution
+precontributive
+precontrivance
+precontrive
+precontrol
+precontrolled
+precontroversial
+precontroversy
+preconvention
+preconversation
+preconversational
+preconversion
+preconvert
+preconvey
+preconveyal
+preconveyance
+preconvict
+preconviction
+preconvince
+precook
+precooker
+precool
+precooler
+precooling
+precopy
+precoracoid
+precordia
+precordial
+precordiality
+precordially
+precordium
+precorneal
+precornu
+precoronation
+precorrect
+precorrection
+precorrectly
+precorrectness
+precorrespond
+precorrespondence
+precorrespondent
+precorridor
+precorrupt
+precorruption
+precorruptive
+precorruptly
+precoruptness
+precosmic
+precosmical
+precostal
+precounsel
+precounsellor
+precourse
+precover
+precovering
+precox
+precreate
+precreation
+precreative
+precredit
+precreditor
+precreed
+precritical
+precriticism
+precriticize
+precrucial
+precrural
+precrystalline
+precultivate
+precultivation
+precultural
+preculturally
+preculture
+precuneal
+precuneate
+precuneus
+precure
+precurrent
+precurricular
+precurriculum
+precursal
+precurse
+precursive
+precursor
+precursory
+precurtain
+precut
+precyclone
+precyclonic
+precynical
+precyst
+precystic
+predable
+predacean
+predaceous
+predaceousness
+predacity
+predamage
+predamn
+predamnation
+predark
+predarkness
+predata
+predate
+predation
+predatism
+predative
+predator
+predatorily
+predatoriness
+predatory
+predawn
+preday
+predaylight
+predaytime
+predazzite
+predealer
+predealing
+predeath
+predeathly
+predebate
+predebater
+predebit
+predebtor
+predecay
+predecease
+predeceaser
+predeceive
+predeceiver
+predeception
+predecession
+predecessor
+predecessorship
+predecide
+predecision
+predecisive
+predeclaration
+predeclare
+predeclination
+predecline
+predecree
+prededicate
+prededuct
+prededuction
+predefault
+predefeat
+predefect
+predefective
+predefence
+predefend
+predefense
+predefiance
+predeficiency
+predeficient
+predefine
+predefinite
+predefinition
+predefray
+predefrayal
+predefy
+predegeneracy
+predegenerate
+predegree
+predeication
+predelay
+predelegate
+predelegation
+predeliberate
+predeliberately
+predeliberation
+predelineate
+predelineation
+predelinquency
+predelinquent
+predelinquently
+predeliver
+predelivery
+predella
+predelude
+predelusion
+predemand
+predemocracy
+predemocratic
+predemonstrate
+predemonstration
+predemonstrative
+predenial
+predental
+predentary
+Predentata
+predentate
+predeny
+predepart
+predepartmental
+predeparture
+predependable
+predependence
+predependent
+predeplete
+predepletion
+predeposit
+predepository
+predepreciate
+predepreciation
+predepression
+predeprivation
+predeprive
+prederivation
+prederive
+predescend
+predescent
+predescribe
+predescription
+predesert
+predeserter
+predesertion
+predeserve
+predeserving
+predesign
+predesignate
+predesignation
+predesignatory
+predesirous
+predesolate
+predesolation
+predespair
+predesperate
+predespicable
+predespise
+predespond
+predespondency
+predespondent
+predestinable
+predestinarian
+predestinarianism
+predestinate
+predestinately
+predestination
+predestinational
+predestinationism
+predestinationist
+predestinative
+predestinator
+predestine
+predestiny
+predestitute
+predestitution
+predestroy
+predestruction
+predetach
+predetachment
+predetail
+predetain
+predetainer
+predetect
+predetention
+predeterminability
+predeterminable
+predeterminant
+predeterminate
+predeterminately
+predetermination
+predeterminative
+predetermine
+predeterminer
+predeterminism
+predeterministic
+predetest
+predetestation
+predetrimental
+predevelop
+predevelopment
+predevise
+predevote
+predevotion
+predevour
+prediagnosis
+prediagnostic
+predial
+prediastolic
+prediatory
+predicability
+predicable
+predicableness
+predicably
+predicament
+predicamental
+predicamentally
+predicant
+predicate
+predication
+predicational
+predicative
+predicatively
+predicator
+predicatory
+predicrotic
+predict
+predictability
+predictable
+predictably
+predictate
+predictation
+prediction
+predictional
+predictive
+predictively
+predictiveness
+predictor
+predictory
+prediet
+predietary
+predifferent
+predifficulty
+predigest
+predigestion
+predikant
+predilect
+predilected
+predilection
+prediligent
+prediligently
+prediluvial
+prediluvian
+prediminish
+prediminishment
+prediminution
+predine
+predinner
+prediphtheritic
+prediploma
+prediplomacy
+prediplomatic
+predirect
+predirection
+predirector
+predisability
+predisable
+predisadvantage
+predisadvantageous
+predisadvantageously
+predisagree
+predisagreeable
+predisagreement
+predisappointment
+predisaster
+predisastrous
+prediscern
+prediscernment
+predischarge
+prediscipline
+predisclose
+predisclosure
+prediscontent
+prediscontented
+prediscontentment
+prediscontinuance
+prediscontinuation
+prediscontinue
+prediscount
+prediscountable
+prediscourage
+prediscouragement
+prediscourse
+prediscover
+prediscoverer
+prediscovery
+prediscreet
+prediscretion
+prediscretionary
+prediscriminate
+prediscrimination
+prediscriminator
+prediscuss
+prediscussion
+predisgrace
+predisguise
+predisgust
+predislike
+predismiss
+predismissal
+predismissory
+predisorder
+predisordered
+predisorderly
+predispatch
+predispatcher
+predisperse
+predispersion
+predisplace
+predisplacement
+predisplay
+predisponency
+predisponent
+predisposable
+predisposal
+predispose
+predisposed
+predisposedly
+predisposedness
+predisposition
+predispositional
+predisputant
+predisputation
+predispute
+predisregard
+predisrupt
+predisruption
+predissatisfaction
+predissolution
+predissolve
+predissuade
+predistinct
+predistinction
+predistinguish
+predistress
+predistribute
+predistribution
+predistributor
+predistrict
+predistrust
+predistrustful
+predisturb
+predisturbance
+prediversion
+predivert
+predivide
+predividend
+predivider
+predivinable
+predivinity
+predivision
+predivorce
+predivorcement
+predoctorate
+predocumentary
+predomestic
+predominance
+predominancy
+predominant
+predominantly
+predominate
+predominately
+predominatingly
+predomination
+predominator
+predonate
+predonation
+predonor
+predoom
+predorsal
+predoubt
+predoubter
+predoubtful
+predraft
+predrainage
+predramatic
+predraw
+predrawer
+predread
+predreadnought
+predrill
+predriller
+predrive
+predriver
+predry
+preduplicate
+preduplication
+predusk
+predwell
+predynamite
+predynastic
+preen
+preener
+preeze
+prefab
+prefabricate
+prefabrication
+prefabricator
+preface
+prefaceable
+prefacer
+prefacial
+prefacist
+prefactor
+prefactory
+prefamiliar
+prefamiliarity
+prefamiliarly
+prefamous
+prefashion
+prefatial
+prefator
+prefatorial
+prefatorially
+prefatorily
+prefatory
+prefavor
+prefavorable
+prefavorably
+prefavorite
+prefearful
+prefearfully
+prefeast
+prefect
+prefectly
+prefectoral
+prefectorial
+prefectorially
+prefectorian
+prefectship
+prefectual
+prefectural
+prefecture
+prefecundation
+prefecundatory
+prefederal
+prefelic
+prefer
+preferability
+preferable
+preferableness
+preferably
+preferee
+preference
+preferent
+preferential
+preferentialism
+preferentialist
+preferentially
+preferment
+prefermentation
+preferred
+preferredly
+preferredness
+preferrer
+preferrous
+prefertile
+prefertility
+prefertilization
+prefertilize
+prefervid
+prefestival
+prefeudal
+prefeudalic
+prefeudalism
+prefiction
+prefictional
+prefigurate
+prefiguration
+prefigurative
+prefiguratively
+prefigurativeness
+prefigure
+prefigurement
+prefiller
+prefilter
+prefinal
+prefinance
+prefinancial
+prefine
+prefinish
+prefix
+prefixable
+prefixal
+prefixally
+prefixation
+prefixed
+prefixedly
+prefixion
+prefixture
+preflagellate
+preflatter
+preflattery
+preflavor
+preflavoring
+preflection
+preflexion
+preflight
+preflood
+prefloration
+preflowering
+prefoliation
+prefool
+preforbidden
+preforceps
+preforgive
+preforgiveness
+preforgotten
+preform
+preformant
+preformation
+preformationary
+preformationism
+preformationist
+preformative
+preformed
+preformism
+preformist
+preformistic
+preformulate
+preformulation
+prefortunate
+prefortunately
+prefortune
+prefoundation
+prefounder
+prefragrance
+prefragrant
+prefrankness
+prefraternal
+prefraternally
+prefraud
+prefreeze
+prefreshman
+prefriendly
+prefriendship
+prefright
+prefrighten
+prefrontal
+prefulfill
+prefulfillment
+prefulgence
+prefulgency
+prefulgent
+prefunction
+prefunctional
+prefuneral
+prefungoidal
+prefurlough
+prefurnish
+pregain
+pregainer
+pregalvanize
+preganglionic
+pregather
+pregathering
+pregeminum
+pregenerate
+pregeneration
+pregenerosity
+pregenerous
+pregenerously
+pregenial
+pregeniculatum
+pregeniculum
+pregenital
+pregeological
+pregirlhood
+preglacial
+pregladden
+pregladness
+preglenoid
+preglenoidal
+preglobulin
+pregnability
+pregnable
+pregnance
+pregnancy
+pregnant
+pregnantly
+pregnantness
+pregolden
+pregolfing
+pregracile
+pregracious
+pregrade
+pregraduation
+pregranite
+pregranitic
+pregratification
+pregratify
+pregreet
+pregreeting
+pregrievance
+pregrowth
+preguarantee
+preguarantor
+preguard
+preguess
+preguidance
+preguide
+preguilt
+preguiltiness
+preguilty
+pregust
+pregustant
+pregustation
+pregustator
+pregustic
+prehallux
+prehalter
+prehandicap
+prehandle
+prehaps
+preharden
+preharmonious
+preharmoniousness
+preharmony
+preharsh
+preharshness
+preharvest
+prehatred
+prehaunt
+prehaunted
+prehaustorium
+prehazard
+prehazardous
+preheal
+prehearing
+preheat
+preheated
+preheater
+prehemiplegic
+prehend
+prehensible
+prehensile
+prehensility
+prehension
+prehensive
+prehensiveness
+prehensor
+prehensorial
+prehensory
+prehepatic
+prehepaticus
+preheroic
+prehesitancy
+prehesitate
+prehesitation
+prehexameral
+prehistorian
+prehistoric
+prehistorical
+prehistorically
+prehistorics
+prehistory
+prehnite
+prehnitic
+preholder
+preholding
+preholiday
+prehorizon
+prehorror
+prehostile
+prehostility
+prehuman
+prehumiliate
+prehumiliation
+prehumor
+prehunger
+prehydration
+prehypophysis
+preidea
+preidentification
+preidentify
+preignition
+preilluminate
+preillumination
+preillustrate
+preillustration
+preimage
+preimaginary
+preimagination
+preimagine
+preimbibe
+preimbue
+preimitate
+preimitation
+preimitative
+preimmigration
+preimpair
+preimpairment
+preimpart
+preimperial
+preimport
+preimportance
+preimportant
+preimportantly
+preimportation
+preimposal
+preimpose
+preimposition
+preimpress
+preimpression
+preimpressive
+preimprove
+preimprovement
+preinaugural
+preinaugurate
+preincarnate
+preincentive
+preinclination
+preincline
+preinclude
+preinclusion
+preincorporate
+preincorporation
+preincrease
+preindebted
+preindebtedness
+preindemnification
+preindemnify
+preindemnity
+preindependence
+preindependent
+preindependently
+preindesignate
+preindicant
+preindicate
+preindication
+preindispose
+preindisposition
+preinduce
+preinducement
+preinduction
+preinductive
+preindulge
+preindulgence
+preindulgent
+preindustrial
+preindustry
+preinfect
+preinfection
+preinfer
+preinference
+preinflection
+preinflectional
+preinflict
+preinfluence
+preinform
+preinformation
+preinhabit
+preinhabitant
+preinhabitation
+preinhere
+preinherit
+preinheritance
+preinitial
+preinitiate
+preinitiation
+preinjure
+preinjurious
+preinjury
+preinquisition
+preinscribe
+preinscription
+preinsert
+preinsertion
+preinsinuate
+preinsinuating
+preinsinuatingly
+preinsinuation
+preinsinuative
+preinspect
+preinspection
+preinspector
+preinspire
+preinstall
+preinstallation
+preinstill
+preinstillation
+preinstruct
+preinstruction
+preinstructional
+preinstructive
+preinsula
+preinsular
+preinsulate
+preinsulation
+preinsult
+preinsurance
+preinsure
+preintellectual
+preintelligence
+preintelligent
+preintelligently
+preintend
+preintention
+preintercede
+preintercession
+preinterchange
+preintercourse
+preinterest
+preinterfere
+preinterference
+preinterpret
+preinterpretation
+preinterpretative
+preinterview
+preintone
+preinvent
+preinvention
+preinventive
+preinventory
+preinvest
+preinvestigate
+preinvestigation
+preinvestigator
+preinvestment
+preinvitation
+preinvite
+preinvocation
+preinvolve
+preinvolvement
+preiotization
+preiotize
+preirrigation
+preirrigational
+preissuance
+preissue
+prejacent
+prejournalistic
+prejudge
+prejudgement
+prejudger
+prejudgment
+prejudication
+prejudicative
+prejudicator
+prejudice
+prejudiced
+prejudicedly
+prejudiceless
+prejudiciable
+prejudicial
+prejudicially
+prejudicialness
+prejudicious
+prejudiciously
+prejunior
+prejurisdiction
+prejustification
+prejustify
+prejuvenile
+Prekantian
+prekindergarten
+prekindle
+preknit
+preknow
+preknowledge
+prelabel
+prelabial
+prelabor
+prelabrum
+prelachrymal
+prelacrimal
+prelacteal
+prelacy
+prelanguage
+prelapsarian
+prelate
+prelatehood
+prelateship
+prelatess
+prelatial
+prelatic
+prelatical
+prelatically
+prelaticalness
+prelation
+prelatish
+prelatism
+prelatist
+prelatize
+prelatry
+prelature
+prelaunch
+prelaunching
+prelawful
+prelawfully
+prelawfulness
+prelease
+prelect
+prelection
+prelector
+prelectorship
+prelectress
+prelecture
+prelegacy
+prelegal
+prelegate
+prelegatee
+prelegend
+prelegendary
+prelegislative
+preliability
+preliable
+prelibation
+preliberal
+preliberality
+preliberally
+preliberate
+preliberation
+prelicense
+prelim
+preliminarily
+preliminary
+prelimit
+prelimitate
+prelimitation
+prelingual
+prelinguistic
+prelinpinpin
+preliquidate
+preliquidation
+preliteral
+preliterally
+preliteralness
+preliterary
+preliterate
+preliterature
+prelithic
+prelitigation
+preloan
+prelocalization
+prelocate
+prelogic
+prelogical
+preloral
+preloreal
+preloss
+prelude
+preluder
+preludial
+preludious
+preludiously
+preludium
+preludize
+prelumbar
+prelusion
+prelusive
+prelusively
+prelusorily
+prelusory
+preluxurious
+premachine
+premadness
+premaintain
+premaintenance
+premake
+premaker
+premaking
+premandibular
+premanhood
+premaniacal
+premanifest
+premanifestation
+premankind
+premanufacture
+premanufacturer
+premanufacturing
+premarital
+premarriage
+premarry
+premastery
+prematch
+premate
+prematerial
+prematernity
+prematrimonial
+prematuration
+premature
+prematurely
+prematureness
+prematurity
+premaxilla
+premaxillary
+premeasure
+premeasurement
+premechanical
+premedia
+premedial
+premedian
+premedic
+premedical
+premedicate
+premedication
+premedieval
+premedievalism
+premeditate
+premeditatedly
+premeditatedness
+premeditatingly
+premeditation
+premeditative
+premeditator
+premegalithic
+prememorandum
+premenace
+premenstrual
+premention
+premeridian
+premerit
+premetallic
+premethodical
+premial
+premiant
+premiate
+premidnight
+premidsummer
+premier
+premieral
+premiere
+premieress
+premierjus
+premiership
+premilitary
+premillenarian
+premillenarianism
+premillennial
+premillennialism
+premillennialist
+premillennialize
+premillennially
+premillennian
+preminister
+preministry
+premious
+premisal
+premise
+premisory
+premisrepresent
+premisrepresentation
+premiss
+premium
+premix
+premixer
+premixture
+premodel
+premodern
+premodification
+premodify
+premolar
+premold
+premolder
+premolding
+premonarchial
+premonetary
+Premongolian
+premonish
+premonishment
+premonition
+premonitive
+premonitor
+premonitorily
+premonitory
+premonopolize
+premonopoly
+Premonstrant
+Premonstratensian
+premonumental
+premoral
+premorality
+premorally
+premorbid
+premorbidly
+premorbidness
+premorning
+premorse
+premortal
+premortification
+premortify
+premortuary
+premosaic
+premotion
+premourn
+premove
+premovement
+premover
+premuddle
+premultiplication
+premultiplier
+premultiply
+premundane
+premunicipal
+premunition
+premunitory
+premusical
+premuster
+premutative
+premutiny
+premycotic
+premyelocyte
+premythical
+prename
+Prenanthes
+prenares
+prenarial
+prenaris
+prenasal
+prenatal
+prenatalist
+prenatally
+prenational
+prenative
+prenatural
+prenaval
+prender
+prendre
+prenebular
+prenecessitate
+preneglect
+preneglectful
+prenegligence
+prenegligent
+prenegotiate
+prenegotiation
+preneolithic
+prenephritic
+preneural
+preneuralgic
+prenight
+prenoble
+prenodal
+prenominal
+prenominate
+prenomination
+prenominical
+prenotation
+prenotice
+prenotification
+prenotify
+prenotion
+prentice
+prenticeship
+prenumber
+prenumbering
+prenuncial
+prenuptial
+prenursery
+preobedience
+preobedient
+preobject
+preobjection
+preobjective
+preobligate
+preobligation
+preoblige
+preobservance
+preobservation
+preobservational
+preobserve
+preobstruct
+preobstruction
+preobtain
+preobtainable
+preobtrude
+preobtrusion
+preobtrusive
+preobviate
+preobvious
+preobviously
+preobviousness
+preoccasioned
+preoccipital
+preocclusion
+preoccultation
+preoccupancy
+preoccupant
+preoccupate
+preoccupation
+preoccupative
+preoccupied
+preoccupiedly
+preoccupiedness
+preoccupier
+preoccupy
+preoccur
+preoccurrence
+preoceanic
+preocular
+preodorous
+preoffend
+preoffense
+preoffensive
+preoffensively
+preoffensiveness
+preoffer
+preoffering
+preofficial
+preofficially
+preominate
+preomission
+preomit
+preopen
+preopening
+preoperate
+preoperation
+preoperative
+preoperatively
+preoperator
+preopercle
+preopercular
+preoperculum
+preopinion
+preopinionated
+preoppose
+preopposition
+preoppress
+preoppression
+preoppressor
+preoptic
+preoptimistic
+preoption
+preoral
+preorally
+preorbital
+preordain
+preorder
+preordination
+preorganic
+preorganization
+preorganize
+preoriginal
+preoriginally
+preornamental
+preoutfit
+preoutline
+preoverthrow
+prep
+prepainful
+prepalatal
+prepalatine
+prepaleolithic
+prepanic
+preparable
+preparation
+preparationist
+preparative
+preparatively
+preparator
+preparatorily
+preparatory
+prepardon
+prepare
+prepared
+preparedly
+preparedness
+preparement
+preparental
+preparer
+preparietal
+preparingly
+preparliamentary
+preparoccipital
+preparoxysmal
+prepartake
+preparticipation
+prepartisan
+prepartition
+prepartnership
+prepatellar
+prepatent
+prepatriotic
+prepave
+prepavement
+prepay
+prepayable
+prepayment
+prepeduncle
+prepenetrate
+prepenetration
+prepenial
+prepense
+prepensely
+prepeople
+preperceive
+preperception
+preperceptive
+preperitoneal
+prepersuade
+prepersuasion
+prepersuasive
+preperusal
+preperuse
+prepetition
+prephragma
+prephthisical
+prepigmental
+prepink
+prepious
+prepituitary
+preplace
+preplacement
+preplacental
+preplan
+preplant
+prepledge
+preplot
+prepoetic
+prepoetical
+prepoison
+prepolice
+prepolish
+prepolitic
+prepolitical
+prepolitically
+prepollence
+prepollency
+prepollent
+prepollex
+preponder
+preponderance
+preponderancy
+preponderant
+preponderantly
+preponderate
+preponderately
+preponderating
+preponderatingly
+preponderation
+preponderous
+preponderously
+prepontile
+prepontine
+preportray
+preportrayal
+prepose
+preposition
+prepositional
+prepositionally
+prepositive
+prepositively
+prepositor
+prepositorial
+prepositure
+prepossess
+prepossessed
+prepossessing
+prepossessingly
+prepossessingness
+prepossession
+prepossessionary
+prepossessor
+preposterous
+preposterously
+preposterousness
+prepostorship
+prepotence
+prepotency
+prepotent
+prepotential
+prepotently
+prepractical
+prepractice
+preprandial
+prepreference
+prepreparation
+preprice
+preprimary
+preprimer
+preprimitive
+preprint
+preprofess
+preprofessional
+preprohibition
+prepromise
+prepromote
+prepromotion
+prepronounce
+prepronouncement
+preprophetic
+preprostatic
+preprove
+preprovide
+preprovision
+preprovocation
+preprovoke
+preprudent
+preprudently
+prepsychological
+prepsychology
+prepuberal
+prepubertal
+prepuberty
+prepubescent
+prepubic
+prepubis
+prepublication
+prepublish
+prepuce
+prepunctual
+prepunish
+prepunishment
+prepupa
+prepupal
+prepurchase
+prepurchaser
+prepurpose
+preputial
+preputium
+prepyloric
+prepyramidal
+prequalification
+prequalify
+prequarantine
+prequestion
+prequotation
+prequote
+preracing
+preradio
+prerailroad
+prerailroadite
+prerailway
+preramus
+prerational
+prereadiness
+preready
+prerealization
+prerealize
+prerebellion
+prereceipt
+prereceive
+prereceiver
+prerecital
+prerecite
+prereckon
+prereckoning
+prerecognition
+prerecognize
+prerecommend
+prerecommendation
+prereconcile
+prereconcilement
+prereconciliation
+prerectal
+preredeem
+preredemption
+prereduction
+prerefer
+prereference
+prerefine
+prerefinement
+prereform
+prereformation
+prereformatory
+prerefusal
+prerefuse
+preregal
+preregister
+preregistration
+preregulate
+preregulation
+prereject
+prerejection
+prerejoice
+prerelate
+prerelation
+prerelationship
+prerelease
+prereligious
+prereluctation
+preremit
+preremittance
+preremorse
+preremote
+preremoval
+preremove
+preremunerate
+preremuneration
+prerenal
+prerent
+prerental
+prereport
+prerepresent
+prerepresentation
+prereption
+prerepublican
+prerequest
+prerequire
+prerequirement
+prerequisite
+prerequisition
+preresemblance
+preresemble
+preresolve
+preresort
+prerespectability
+prerespectable
+prerespiration
+prerespire
+preresponsibility
+preresponsible
+prerestoration
+prerestrain
+prerestraint
+prerestrict
+prerestriction
+prereturn
+prereveal
+prerevelation
+prerevenge
+prereversal
+prereverse
+prereview
+prerevise
+prerevision
+prerevival
+prerevolutionary
+prerheumatic
+prerich
+prerighteous
+prerighteously
+prerighteousness
+prerogatival
+prerogative
+prerogatived
+prerogatively
+prerogativity
+prerolandic
+preromantic
+preromanticism
+preroute
+preroutine
+preroyal
+preroyally
+preroyalty
+prerupt
+preruption
+presacral
+presacrifice
+presacrificial
+presage
+presageful
+presagefully
+presager
+presagient
+presaging
+presagingly
+presalvation
+presanctification
+presanctified
+presanctify
+presanguine
+presanitary
+presartorial
+presatisfaction
+presatisfactory
+presatisfy
+presavage
+presavagery
+presay
+presbyacousia
+presbyacusia
+presbycousis
+presbycusis
+presbyope
+presbyophrenia
+presbyophrenic
+presbyopia
+presbyopic
+presbyopy
+presbyte
+presbyter
+presbyteral
+presbyterate
+presbyterated
+presbyteress
+presbyteria
+presbyterial
+presbyterially
+Presbyterian
+Presbyterianism
+Presbyterianize
+Presbyterianly
+presbyterium
+presbytership
+presbytery
+presbytia
+presbytic
+Presbytinae
+Presbytis
+presbytism
+prescapula
+prescapular
+prescapularis
+prescholastic
+preschool
+prescience
+prescient
+prescientific
+presciently
+prescind
+prescindent
+prescission
+prescored
+prescout
+prescribable
+prescribe
+prescriber
+prescript
+prescriptibility
+prescriptible
+prescription
+prescriptionist
+prescriptive
+prescriptively
+prescriptiveness
+prescriptorial
+prescrive
+prescutal
+prescutum
+preseal
+presearch
+preseason
+preseasonal
+presecular
+presecure
+presee
+preselect
+presell
+preseminal
+preseminary
+presence
+presenced
+presenceless
+presenile
+presenility
+presensation
+presension
+present
+presentability
+presentable
+presentableness
+presentably
+presental
+presentation
+presentational
+presentationism
+presentationist
+presentative
+presentatively
+presentee
+presentence
+presenter
+presential
+presentiality
+presentially
+presentialness
+presentient
+presentiment
+presentimental
+presentist
+presentive
+presentively
+presentiveness
+presently
+presentment
+presentness
+presentor
+preseparate
+preseparation
+preseparator
+preservability
+preservable
+preserval
+preservation
+preservationist
+preservative
+preservatize
+preservatory
+preserve
+preserver
+preserveress
+preses
+presession
+preset
+presettle
+presettlement
+presexual
+preshadow
+preshape
+preshare
+presharpen
+preshelter
+preship
+preshipment
+preshortage
+preshorten
+preshow
+preside
+presidence
+presidencia
+presidency
+president
+presidente
+presidentess
+presidential
+presidentially
+presidentiary
+presidentship
+presider
+presidial
+presidially
+presidiary
+presidio
+presidium
+presift
+presign
+presignal
+presignificance
+presignificancy
+presignificant
+presignification
+presignificative
+presignificator
+presignify
+presimian
+preslavery
+Presley
+presmooth
+presocial
+presocialism
+presocialist
+presolar
+presolicit
+presolicitation
+presolution
+presolve
+presophomore
+presound
+prespecialist
+prespecialize
+prespecific
+prespecifically
+prespecification
+prespecify
+prespeculate
+prespeculation
+presphenoid
+presphenoidal
+presphygmic
+prespinal
+prespinous
+prespiracular
+presplendor
+presplenomegalic
+prespoil
+prespontaneity
+prespontaneous
+prespontaneously
+prespread
+presprinkle
+prespur
+press
+pressable
+pressboard
+pressdom
+pressel
+presser
+pressfat
+pressful
+pressgang
+pressible
+pressing
+pressingly
+pressingness
+pression
+pressive
+pressman
+pressmanship
+pressmark
+pressor
+presspack
+pressroom
+pressurage
+pressural
+pressure
+pressureless
+pressureproof
+pressurize
+pressurizer
+presswoman
+presswork
+pressworker
+prest
+prestabilism
+prestability
+prestable
+prestamp
+prestandard
+prestandardization
+prestandardize
+prestant
+prestate
+prestation
+prestatistical
+presteam
+presteel
+prester
+presternal
+presternum
+prestidigital
+prestidigitate
+prestidigitation
+prestidigitator
+prestidigitatorial
+prestige
+prestigiate
+prestigiation
+prestigiator
+prestigious
+prestigiously
+prestigiousness
+prestimulate
+prestimulation
+prestimulus
+prestissimo
+presto
+prestock
+prestomial
+prestomium
+prestorage
+prestore
+prestraighten
+prestrain
+prestrengthen
+prestress
+prestretch
+prestricken
+prestruggle
+prestubborn
+prestudious
+prestudiously
+prestudiousness
+prestudy
+presubdue
+presubiculum
+presubject
+presubjection
+presubmission
+presubmit
+presubordinate
+presubordination
+presubscribe
+presubscriber
+presubscription
+presubsist
+presubsistence
+presubsistent
+presubstantial
+presubstitute
+presubstitution
+presuccess
+presuccessful
+presuccessfully
+presuffer
+presuffering
+presufficiency
+presufficient
+presufficiently
+presuffrage
+presuggest
+presuggestion
+presuggestive
+presuitability
+presuitable
+presuitably
+presumable
+presumably
+presume
+presumedly
+presumer
+presuming
+presumption
+presumptious
+presumptiously
+presumptive
+presumptively
+presumptuous
+presumptuously
+presumptuousness
+presuperficial
+presuperficiality
+presuperficially
+presuperfluity
+presuperfluous
+presuperfluously
+presuperintendence
+presuperintendency
+presupervise
+presupervision
+presupervisor
+presupplemental
+presupplementary
+presupplicate
+presupplication
+presupply
+presupport
+presupposal
+presuppose
+presupposition
+presuppositionless
+presuppress
+presuppression
+presuppurative
+presupremacy
+presupreme
+presurgery
+presurgical
+presurmise
+presurprisal
+presurprise
+presurrender
+presurround
+presurvey
+presusceptibility
+presusceptible
+presuspect
+presuspend
+presuspension
+presuspicion
+presuspicious
+presuspiciously
+presuspiciousness
+presustain
+presutural
+preswallow
+presylvian
+presympathize
+presympathy
+presymphonic
+presymphony
+presymphysial
+presymptom
+presymptomatic
+presynapsis
+presynaptic
+presystematic
+presystematically
+presystole
+presystolic
+pretabulate
+pretabulation
+pretan
+pretangible
+pretangibly
+pretannage
+pretardily
+pretardiness
+pretardy
+pretariff
+pretaste
+preteach
+pretechnical
+pretechnically
+pretelegraph
+pretelegraphic
+pretelephone
+pretelephonic
+pretell
+pretemperate
+pretemperately
+pretemporal
+pretend
+pretendant
+pretended
+pretendedly
+pretender
+Pretenderism
+pretendership
+pretendingly
+pretendingness
+pretense
+pretenseful
+pretenseless
+pretension
+pretensional
+pretensionless
+pretensive
+pretensively
+pretensiveness
+pretentative
+pretentious
+pretentiously
+pretentiousness
+pretercanine
+preterchristian
+preterconventional
+preterdetermined
+preterdeterminedly
+preterdiplomatic
+preterdiplomatically
+preterequine
+preteressential
+pretergress
+pretergression
+preterhuman
+preterience
+preterient
+preterintentional
+preterist
+preterit
+preteriteness
+preterition
+preteritive
+preteritness
+preterlabent
+preterlegal
+preterlethal
+preterminal
+pretermission
+pretermit
+pretermitter
+preternative
+preternatural
+preternaturalism
+preternaturalist
+preternaturality
+preternaturally
+preternaturalness
+preternormal
+preternotorious
+preternuptial
+preterpluperfect
+preterpolitical
+preterrational
+preterregular
+preterrestrial
+preterritorial
+preterroyal
+preterscriptural
+preterseasonable
+pretersensual
+pretervection
+pretest
+pretestify
+pretestimony
+pretext
+pretexted
+pretextuous
+pretheological
+prethoracic
+prethoughtful
+prethoughtfully
+prethoughtfulness
+prethreaten
+prethrill
+prethrust
+pretibial
+pretimeliness
+pretimely
+pretincture
+pretire
+pretoken
+pretone
+pretonic
+pretorial
+pretorship
+pretorsional
+pretorture
+pretournament
+pretrace
+pretracheal
+pretraditional
+pretrain
+pretraining
+pretransact
+pretransaction
+pretranscribe
+pretranscription
+pretranslate
+pretranslation
+pretransmission
+pretransmit
+pretransport
+pretransportation
+pretravel
+pretreat
+pretreatment
+pretreaty
+pretrematic
+pretribal
+pretry
+prettification
+prettifier
+prettify
+prettikin
+prettily
+prettiness
+pretty
+prettyface
+prettyish
+prettyism
+pretubercular
+pretuberculous
+pretympanic
+pretyphoid
+pretypify
+pretypographical
+pretyrannical
+pretyranny
+pretzel
+preultimate
+preultimately
+preumbonal
+preunderstand
+preundertake
+preunion
+preunite
+preutilizable
+preutilization
+preutilize
+prevacate
+prevacation
+prevaccinate
+prevaccination
+prevail
+prevailance
+prevailer
+prevailingly
+prevailingness
+prevailment
+prevalence
+prevalency
+prevalent
+prevalently
+prevalentness
+prevalescence
+prevalescent
+prevalid
+prevalidity
+prevalidly
+prevaluation
+prevalue
+prevariation
+prevaricate
+prevarication
+prevaricator
+prevaricatory
+prevascular
+prevegetation
+prevelar
+prevenance
+prevenancy
+prevene
+prevenience
+prevenient
+preveniently
+prevent
+preventability
+preventable
+preventative
+preventer
+preventible
+preventingly
+prevention
+preventionism
+preventionist
+preventive
+preventively
+preventiveness
+preventorium
+preventure
+preverb
+preverbal
+preverification
+preverify
+prevernal
+preversion
+prevertebral
+prevesical
+preveto
+previctorious
+previde
+previdence
+preview
+previgilance
+previgilant
+previgilantly
+previolate
+previolation
+previous
+previously
+previousness
+previse
+previsibility
+previsible
+previsibly
+prevision
+previsional
+previsit
+previsitor
+previsive
+previsor
+prevocal
+prevocalic
+prevocally
+prevocational
+prevogue
+prevoid
+prevoidance
+prevolitional
+prevolunteer
+prevomer
+prevotal
+prevote
+prevoyance
+prevoyant
+prevue
+prewar
+prewarn
+prewarrant
+prewash
+preweigh
+prewelcome
+prewhip
+prewilling
+prewillingly
+prewillingness
+prewire
+prewireless
+prewitness
+prewonder
+prewonderment
+preworldliness
+preworldly
+preworship
+preworthily
+preworthiness
+preworthy
+prewound
+prewrap
+prexy
+prey
+preyer
+preyful
+preyingly
+preyouthful
+prezonal
+prezone
+prezygapophysial
+prezygapophysis
+prezygomatic
+Pria
+priacanthid
+Priacanthidae
+priacanthine
+Priacanthus
+Priapean
+Priapic
+priapism
+Priapulacea
+priapulid
+Priapulida
+Priapulidae
+priapuloid
+Priapuloidea
+Priapulus
+Priapus
+Priapusian
+Price
+price
+priceable
+priceably
+priced
+priceite
+priceless
+pricelessness
+pricer
+prich
+prick
+prickant
+pricked
+pricker
+pricket
+prickfoot
+pricking
+prickingly
+prickish
+prickle
+prickleback
+prickled
+pricklefish
+prickless
+prickliness
+prickling
+pricklingly
+pricklouse
+prickly
+pricklyback
+prickmadam
+prickmedainty
+prickproof
+pricks
+prickseam
+prickshot
+prickspur
+pricktimber
+prickwood
+pricky
+pride
+prideful
+pridefully
+pridefulness
+prideless
+pridelessly
+prideling
+prideweed
+pridian
+priding
+pridingly
+pridy
+pried
+prier
+priest
+priestal
+priestcap
+priestcraft
+priestdom
+priesteen
+priestery
+priestess
+priestfish
+priesthood
+priestianity
+priestish
+priestism
+priestless
+priestlet
+priestlike
+priestliness
+priestling
+priestly
+priestship
+priestshire
+prig
+prigdom
+prigger
+priggery
+priggess
+priggish
+priggishly
+priggishness
+priggism
+prighood
+prigman
+prill
+prillion
+prim
+prima
+primacy
+primage
+primal
+primality
+primar
+primarian
+primaried
+primarily
+primariness
+primary
+primatal
+primate
+Primates
+primateship
+primatial
+primatic
+primatical
+primavera
+primaveral
+prime
+primegilt
+primely
+primeness
+primer
+primero
+primerole
+primeval
+primevalism
+primevally
+primeverose
+primevity
+primevous
+primevrin
+Primianist
+primigene
+primigenial
+primigenian
+primigenious
+primigenous
+primigravida
+primine
+priming
+primipara
+primiparity
+primiparous
+primipilar
+primitiae
+primitial
+primitias
+primitive
+primitively
+primitivism
+primitivist
+primitivistic
+primitivity
+primly
+primness
+primogenetrix
+primogenial
+primogenital
+primogenitary
+primogenitive
+primogenitor
+primogeniture
+primogenitureship
+primogenous
+primoprime
+primoprimitive
+primordality
+primordia
+primordial
+primordialism
+primordially
+primordiate
+primordium
+primosity
+primost
+primp
+primrose
+primrosed
+primrosetide
+primrosetime
+primrosy
+primsie
+Primula
+primula
+Primulaceae
+primulaceous
+Primulales
+primulaverin
+primulaveroside
+primulic
+primuline
+Primulinus
+Primus
+primus
+primwort
+primy
+prince
+princeage
+princecraft
+princedom
+princehood
+Princeite
+princekin
+princeless
+princelet
+princelike
+princeliness
+princeling
+princely
+princeps
+princeship
+princess
+princessdom
+princesse
+princesslike
+princessly
+princewood
+princified
+princify
+principal
+principality
+principally
+principalness
+principalship
+principate
+Principes
+principes
+principia
+principiant
+principiate
+principiation
+principium
+principle
+principulus
+princock
+princox
+prine
+pringle
+prink
+prinker
+prinkle
+prinky
+print
+printability
+printable
+printableness
+printed
+printer
+printerdom
+printerlike
+printery
+printing
+printless
+printline
+printscript
+printworks
+Priodon
+priodont
+Priodontes
+prion
+prionid
+Prionidae
+Prioninae
+prionine
+Prionodesmacea
+prionodesmacean
+prionodesmaceous
+prionodesmatic
+Prionodon
+prionodont
+Prionopinae
+prionopine
+Prionops
+Prionus
+prior
+prioracy
+prioral
+priorate
+prioress
+prioristic
+prioristically
+priorite
+priority
+priorly
+priorship
+priory
+prisable
+prisage
+prisal
+priscan
+Priscian
+Priscianist
+Priscilla
+Priscillian
+Priscillianism
+Priscillianist
+prism
+prismal
+prismatic
+prismatical
+prismatically
+prismatization
+prismatize
+prismatoid
+prismatoidal
+prismed
+prismoid
+prismoidal
+prismy
+prisometer
+prison
+prisonable
+prisondom
+prisoner
+prisonful
+prisonlike
+prisonment
+prisonous
+priss
+prissily
+prissiness
+prissy
+pristane
+pristine
+Pristipomatidae
+Pristipomidae
+Pristis
+Pristodus
+pritch
+Pritchardia
+pritchel
+prithee
+prius
+privacity
+privacy
+privant
+private
+privateer
+privateersman
+privately
+privateness
+privation
+privative
+privatively
+privativeness
+privet
+privilege
+privileged
+privileger
+privily
+priviness
+privity
+privy
+prizable
+prize
+prizeable
+prizeholder
+prizeman
+prizer
+prizery
+prizetaker
+prizeworthy
+pro
+proa
+proabolitionist
+proabsolutism
+proabsolutist
+proabstinence
+proacademic
+proacceptance
+proacquisition
+proacquittal
+proaction
+proactor
+proaddition
+proadjournment
+proadministration
+proadmission
+proadoption
+proadvertising
+proaesthetic
+proaggressionist
+proagitation
+proagrarian
+proagreement
+proagricultural
+proagule
+proairesis
+proairplane
+proal
+proalcoholism
+proalien
+proalliance
+proallotment
+proalteration
+proamateur
+proambient
+proamendment
+proamnion
+proamniotic
+proamusement
+proanaphora
+proanaphoral
+proanarchic
+proangiosperm
+proangiospermic
+proangiospermous
+proanimistic
+proannexation
+proannexationist
+proantarctic
+proanthropos
+proapostolic
+proappointment
+proapportionment
+proappreciation
+proappropriation
+proapproval
+proaquatic
+proarbitration
+proarbitrationist
+proarchery
+proarctic
+proaristocratic
+proarmy
+Proarthri
+proassessment
+proassociation
+proatheist
+proatheistic
+proathletic
+proatlas
+proattack
+proattendance
+proauction
+proaudience
+proaulion
+proauthor
+proauthority
+proautomobile
+proavian
+proaviation
+Proavis
+proaward
+prob
+probabiliorism
+probabiliorist
+probabilism
+probabilist
+probabilistic
+probability
+probabilize
+probabl
+probable
+probableness
+probably
+probachelor
+probal
+proballoon
+probang
+probanishment
+probankruptcy
+probant
+probargaining
+probaseball
+probasketball
+probate
+probathing
+probatical
+probation
+probational
+probationary
+probationer
+probationerhood
+probationership
+probationism
+probationist
+probationship
+probative
+probatively
+probator
+probatory
+probattle
+probattleship
+probe
+probeable
+probeer
+prober
+probetting
+probiology
+probituminous
+probity
+problem
+problematic
+problematical
+problematically
+problematist
+problematize
+problemdom
+problemist
+problemistic
+problemize
+problemwise
+problockade
+probonding
+probonus
+proborrowing
+proboscidal
+proboscidate
+Proboscidea
+proboscidean
+proboscideous
+proboscides
+proboscidial
+proboscidian
+proboscidiferous
+proboscidiform
+probosciform
+probosciformed
+Probosciger
+proboscis
+proboscislike
+probouleutic
+proboulevard
+probowling
+proboxing
+proboycott
+probrick
+probridge
+probroadcasting
+probudget
+probudgeting
+probuilding
+probusiness
+probuying
+procacious
+procaciously
+procacity
+procaine
+procambial
+procambium
+procanal
+procancellation
+procapital
+procapitalism
+procapitalist
+procarnival
+procarp
+procarpium
+procarrier
+procatalectic
+procatalepsis
+procatarctic
+procatarxis
+procathedral
+Procavia
+Procaviidae
+procedendo
+procedural
+procedure
+proceed
+proceeder
+proceeding
+proceeds
+proceleusmatic
+Procellaria
+procellarian
+procellarid
+Procellariidae
+Procellariiformes
+procellariine
+procellas
+procello
+procellose
+procellous
+procensorship
+procensure
+procentralization
+procephalic
+procercoid
+procereal
+procerebral
+procerebrum
+proceremonial
+proceremonialism
+proceremonialist
+proceres
+procerite
+proceritic
+procerity
+procerus
+process
+processal
+procession
+processional
+processionalist
+processionally
+processionary
+processioner
+processionist
+processionize
+processionwise
+processive
+processor
+processual
+procharity
+prochein
+prochemical
+prochlorite
+prochondral
+prochoos
+prochordal
+prochorion
+prochorionic
+prochromosome
+prochronic
+prochronism
+prochronize
+prochurch
+prochurchian
+procidence
+procident
+procidentia
+procivic
+procivilian
+procivism
+proclaim
+proclaimable
+proclaimant
+proclaimer
+proclaiming
+proclaimingly
+proclamation
+proclamator
+proclamatory
+proclassic
+proclassical
+proclergy
+proclerical
+proclericalism
+procline
+proclisis
+proclitic
+proclive
+proclivitous
+proclivity
+proclivous
+proclivousness
+Procne
+procnemial
+Procoelia
+procoelia
+procoelian
+procoelous
+procoercive
+procollectivistic
+procollegiate
+procombat
+procombination
+procomedy
+procommemoration
+procomment
+procommercial
+procommission
+procommittee
+procommunal
+procommunism
+procommunist
+procommutation
+procompensation
+procompetition
+procompromise
+procompulsion
+proconcentration
+proconcession
+proconciliation
+procondemnation
+proconfederationist
+proconference
+proconfession
+proconfessionist
+proconfiscation
+proconformity
+Proconnesian
+proconquest
+proconscription
+proconscriptive
+proconservation
+proconservationist
+proconsolidation
+proconstitutional
+proconstitutionalism
+proconsul
+proconsular
+proconsulary
+proconsulate
+proconsulship
+proconsultation
+procontinuation
+proconvention
+proconventional
+proconviction
+procoracoid
+procoracoidal
+procorporation
+procosmetic
+procosmopolitan
+procotton
+procourt
+procrastinate
+procrastinating
+procrastinatingly
+procrastination
+procrastinative
+procrastinatively
+procrastinator
+procrastinatory
+procreant
+procreate
+procreation
+procreative
+procreativeness
+procreator
+procreatory
+procreatress
+procreatrix
+procremation
+Procris
+procritic
+procritique
+Procrustean
+Procrusteanism
+Procrusteanize
+Procrustes
+procrypsis
+procryptic
+procryptically
+proctal
+proctalgia
+proctalgy
+proctatresia
+proctatresy
+proctectasia
+proctectomy
+procteurynter
+proctitis
+proctocele
+proctoclysis
+proctocolitis
+proctocolonoscopy
+proctocystoplasty
+proctocystotomy
+proctodaeal
+proctodaeum
+proctodynia
+proctoelytroplastic
+proctologic
+proctological
+proctologist
+proctology
+proctoparalysis
+proctoplastic
+proctoplasty
+proctoplegia
+proctopolypus
+proctoptoma
+proctoptosis
+proctor
+proctorage
+proctoral
+proctorial
+proctorially
+proctorical
+proctorization
+proctorize
+proctorling
+proctorrhagia
+proctorrhaphy
+proctorrhea
+proctorship
+proctoscope
+proctoscopic
+proctoscopy
+proctosigmoidectomy
+proctosigmoiditis
+proctospasm
+proctostenosis
+proctostomy
+proctotome
+proctotomy
+proctotresia
+proctotrypid
+Proctotrypidae
+proctotrypoid
+Proctotrypoidea
+proctovalvotomy
+Proculian
+procumbent
+procurable
+procuracy
+procural
+procurance
+procurate
+procuration
+procurative
+procurator
+procuratorate
+procuratorial
+procuratorship
+procuratory
+procuratrix
+procure
+procurement
+procurer
+procuress
+procurrent
+procursive
+procurvation
+procurved
+Procyon
+Procyonidae
+procyoniform
+Procyoniformia
+Procyoninae
+procyonine
+proczarist
+prod
+prodatary
+prodder
+proddle
+prodecoration
+prodefault
+prodefiance
+prodelay
+prodelision
+prodemocratic
+Prodenia
+prodenominational
+prodentine
+prodeportation
+prodespotic
+prodespotism
+prodialogue
+prodigal
+prodigalish
+prodigalism
+prodigality
+prodigalize
+prodigally
+prodigiosity
+prodigious
+prodigiously
+prodigiousness
+prodigus
+prodigy
+prodisarmament
+prodisplay
+prodissoconch
+prodissolution
+prodistribution
+prodition
+proditorious
+proditoriously
+prodivision
+prodivorce
+prodproof
+prodramatic
+prodroma
+prodromal
+prodromatic
+prodromatically
+prodrome
+prodromic
+prodromous
+prodromus
+producal
+produce
+produceable
+produceableness
+produced
+producent
+producer
+producership
+producibility
+producible
+producibleness
+product
+producted
+productibility
+productible
+productid
+Productidae
+productile
+production
+productional
+productionist
+productive
+productively
+productiveness
+productivity
+productoid
+productor
+productory
+productress
+Productus
+proecclesiastical
+proeconomy
+proeducation
+proeducational
+proegumenal
+proelectric
+proelectrical
+proelectrification
+proelectrocution
+proelimination
+proem
+proembryo
+proembryonic
+proemial
+proemium
+proemployee
+proemptosis
+proenforcement
+proenlargement
+proenzym
+proenzyme
+proepimeron
+proepiscopist
+proepisternum
+proequality
+proethical
+proethnic
+proethnically
+proetid
+Proetidae
+Proetus
+proevolution
+proevolutionist
+proexamination
+proexecutive
+proexemption
+proexercise
+proexperiment
+proexpert
+proexporting
+proexposure
+proextension
+proextravagance
+prof
+profaculty
+profanable
+profanableness
+profanably
+profanation
+profanatory
+profanchise
+profane
+profanely
+profanement
+profaneness
+profaner
+profanism
+profanity
+profanize
+profarmer
+profection
+profectional
+profectitious
+profederation
+profeminism
+profeminist
+proferment
+profert
+profess
+professable
+professed
+professedly
+profession
+professional
+professionalism
+professionalist
+professionality
+professionalization
+professionalize
+professionally
+professionist
+professionize
+professionless
+professive
+professively
+professor
+professorate
+professordom
+professoress
+professorial
+professorialism
+professorially
+professoriate
+professorlike
+professorling
+professorship
+professory
+proffer
+profferer
+proficience
+proficiency
+proficient
+proficiently
+proficientness
+profiction
+proficuous
+proficuously
+profile
+profiler
+profilist
+profilograph
+profit
+profitability
+profitable
+profitableness
+profitably
+profiteer
+profiteering
+profiter
+profiting
+profitless
+profitlessly
+profitlessness
+profitmonger
+profitmongering
+profitproof
+proflated
+proflavine
+profligacy
+profligate
+profligately
+profligateness
+profligation
+proflogger
+profluence
+profluent
+profluvious
+profluvium
+proforeign
+profound
+profoundly
+profoundness
+profraternity
+profugate
+profulgent
+profunda
+profundity
+profuse
+profusely
+profuseness
+profusion
+profusive
+profusively
+profusiveness
+prog
+progambling
+progamete
+progamic
+proganosaur
+Proganosauria
+progenerate
+progeneration
+progenerative
+progenital
+progenitive
+progenitiveness
+progenitor
+progenitorial
+progenitorship
+progenitress
+progenitrix
+progeniture
+progenity
+progeny
+progeotropic
+progeotropism
+progeria
+progermination
+progestational
+progesterone
+progestin
+progger
+proglottic
+proglottid
+proglottidean
+proglottis
+prognathi
+prognathic
+prognathism
+prognathous
+prognathy
+progne
+prognose
+prognosis
+prognostic
+prognosticable
+prognostically
+prognosticate
+prognostication
+prognosticative
+prognosticator
+prognosticatory
+progoneate
+progospel
+progovernment
+program
+programist
+programistic
+programma
+programmar
+programmatic
+programmatically
+programmatist
+programmer
+progrede
+progrediency
+progredient
+progress
+progresser
+progression
+progressional
+progressionally
+progressionary
+progressionism
+progressionist
+progressism
+progressist
+progressive
+progressively
+progressiveness
+progressivism
+progressivist
+progressivity
+progressor
+proguardian
+Progymnasium
+progymnosperm
+progymnospermic
+progymnospermous
+progypsy
+prohaste
+prohibit
+prohibiter
+prohibition
+prohibitionary
+prohibitionism
+prohibitionist
+prohibitive
+prohibitively
+prohibitiveness
+prohibitor
+prohibitorily
+prohibitory
+proholiday
+prohostility
+prohuman
+prohumanistic
+prohydrotropic
+prohydrotropism
+proidealistic
+proimmunity
+proinclusion
+proincrease
+proindemnity
+proindustrial
+proinjunction
+proinnovationist
+proinquiry
+proinsurance
+prointervention
+proinvestment
+proirrigation
+projacient
+project
+projectable
+projectedly
+projectile
+projecting
+projectingly
+projection
+projectional
+projectionist
+projective
+projectively
+projectivity
+projector
+projectress
+projectrix
+projecture
+projicience
+projicient
+projiciently
+projournalistic
+projudicial
+proke
+prokeimenon
+proker
+prokindergarten
+proklausis
+prolabium
+prolabor
+prolacrosse
+prolactin
+prolamin
+prolan
+prolapse
+prolapsus
+prolarva
+prolarval
+prolate
+prolately
+prolateness
+prolation
+prolative
+prolatively
+proleague
+proleaguer
+prolectite
+proleg
+prolegate
+prolegislative
+prolegomena
+prolegomenal
+prolegomenary
+prolegomenist
+prolegomenon
+prolegomenous
+proleniency
+prolepsis
+proleptic
+proleptical
+proleptically
+proleptics
+proletairism
+proletarian
+proletarianism
+proletarianization
+proletarianize
+proletarianly
+proletarianness
+proletariat
+proletariatism
+proletarization
+proletarize
+proletary
+proletcult
+proleucocyte
+proleukocyte
+prolicense
+prolicidal
+prolicide
+proliferant
+proliferate
+proliferation
+proliferative
+proliferous
+proliferously
+prolific
+prolificacy
+prolifical
+prolifically
+prolificalness
+prolificate
+prolification
+prolificity
+prolificly
+prolificness
+prolificy
+prolify
+proligerous
+proline
+proliquor
+proliterary
+proliturgical
+proliturgist
+prolix
+prolixity
+prolixly
+prolixness
+prolocution
+prolocutor
+prolocutorship
+prolocutress
+prolocutrix
+prologist
+prologize
+prologizer
+prologos
+prologue
+prologuelike
+prologuer
+prologuist
+prologuize
+prologuizer
+prologus
+prolong
+prolongable
+prolongableness
+prolongably
+prolongate
+prolongation
+prolonge
+prolonger
+prolongment
+prolusion
+prolusionize
+prolusory
+prolyl
+promachinery
+promachos
+promagisterial
+promagistracy
+promagistrate
+promajority
+promammal
+Promammalia
+promammalian
+promarriage
+promatrimonial
+promatrimonialist
+promaximum
+promemorial
+promenade
+promenader
+promenaderess
+promercantile
+promercy
+promerger
+promeristem
+promerit
+promeritor
+Promethea
+Promethean
+Prometheus
+promethium
+promic
+promilitarism
+promilitarist
+promilitary
+prominence
+prominency
+prominent
+prominently
+prominimum
+proministry
+prominority
+promisable
+promiscuity
+promiscuous
+promiscuously
+promiscuousness
+promise
+promisee
+promiseful
+promiseless
+promisemonger
+promiseproof
+promiser
+promising
+promisingly
+promisingness
+promisor
+promissionary
+promissive
+promissor
+promissorily
+promissory
+promitosis
+promittor
+promnesia
+promoderation
+promoderationist
+promodernist
+promodernistic
+promonarchic
+promonarchical
+promonarchicalness
+promonarchist
+promonopolist
+promonopoly
+promontoried
+promontory
+promoral
+promorph
+promorphological
+promorphologically
+promorphologist
+promorphology
+promotable
+promote
+promotement
+promoter
+promotion
+promotional
+promotive
+promotiveness
+promotor
+promotorial
+promotress
+promotrix
+promovable
+promovent
+prompt
+promptbook
+prompter
+promptitude
+promptive
+promptly
+promptness
+promptress
+promptuary
+prompture
+promulgate
+promulgation
+promulgator
+promulge
+promulger
+promuscidate
+promuscis
+promycelial
+promycelium
+promythic
+pronaos
+pronate
+pronation
+pronational
+pronationalism
+pronationalist
+pronationalistic
+pronative
+pronatoflexor
+pronator
+pronaval
+pronavy
+prone
+pronegotiation
+pronegro
+pronegroism
+pronely
+proneness
+pronephric
+pronephridiostome
+pronephron
+pronephros
+proneur
+prong
+prongbuck
+pronged
+pronger
+pronghorn
+pronglike
+pronic
+pronograde
+pronominal
+pronominalize
+pronominally
+pronomination
+pronotal
+pronotum
+pronoun
+pronounal
+pronounce
+pronounceable
+pronounced
+pronouncedly
+pronouncement
+pronounceness
+pronouncer
+pronpl
+pronto
+Pronuba
+pronuba
+pronubial
+pronuclear
+pronucleus
+pronumber
+pronunciability
+pronunciable
+pronuncial
+pronunciamento
+pronunciation
+pronunciative
+pronunciator
+pronunciatory
+pronymph
+pronymphal
+proo
+prooemiac
+prooemion
+prooemium
+proof
+proofer
+proofful
+proofing
+proofless
+prooflessly
+proofness
+proofread
+proofreader
+proofreading
+proofroom
+proofy
+prop
+propadiene
+propaedeutic
+propaedeutical
+propaedeutics
+propagability
+propagable
+propagableness
+propagand
+propaganda
+propagandic
+propagandism
+propagandist
+propagandistic
+propagandistically
+propagandize
+propagate
+propagation
+propagational
+propagative
+propagator
+propagatory
+propagatress
+propago
+propagulum
+propale
+propalinal
+propane
+propanedicarboxylic
+propanol
+propanone
+propapist
+proparasceve
+propargyl
+propargylic
+Proparia
+proparian
+proparliamental
+proparoxytone
+proparoxytonic
+proparticipation
+propatagial
+propatagian
+propatagium
+propatriotic
+propatriotism
+propatronage
+propayment
+propellable
+propellant
+propellent
+propeller
+propelment
+propend
+propendent
+propene
+propenoic
+propense
+propensely
+propenseness
+propension
+propensitude
+propensity
+propenyl
+propenylic
+proper
+properispome
+properispomenon
+properitoneal
+properly
+properness
+propertied
+property
+propertyless
+propertyship
+propessimism
+propessimist
+prophase
+prophasis
+prophecy
+prophecymonger
+prophesiable
+prophesier
+prophesy
+prophet
+prophetess
+prophethood
+prophetic
+prophetical
+propheticality
+prophetically
+propheticalness
+propheticism
+propheticly
+prophetism
+prophetize
+prophetless
+prophetlike
+prophetry
+prophetship
+prophilosophical
+prophloem
+prophoric
+prophototropic
+prophototropism
+prophylactic
+prophylactical
+prophylactically
+prophylaxis
+prophylaxy
+prophyll
+prophyllum
+propination
+propine
+propinoic
+propinquant
+propinque
+propinquity
+propinquous
+propiolaldehyde
+propiolate
+propiolic
+propionate
+propione
+Propionibacterieae
+Propionibacterium
+propionic
+propionitril
+propionitrile
+propionyl
+Propithecus
+propitiable
+propitial
+propitiate
+propitiatingly
+propitiation
+propitiative
+propitiator
+propitiatorily
+propitiatory
+propitious
+propitiously
+propitiousness
+proplasm
+proplasma
+proplastic
+propless
+propleural
+propleuron
+proplex
+proplexus
+Propliopithecus
+propodeal
+propodeon
+propodeum
+propodial
+propodiale
+propodite
+propoditic
+propodium
+propolis
+propolitical
+propolization
+propolize
+propone
+proponement
+proponent
+proponer
+propons
+Propontic
+propooling
+propopery
+proportion
+proportionability
+proportionable
+proportionableness
+proportionably
+proportional
+proportionalism
+proportionality
+proportionally
+proportionate
+proportionately
+proportionateness
+proportioned
+proportioner
+proportionless
+proportionment
+proposable
+proposal
+proposant
+propose
+proposer
+proposition
+propositional
+propositionally
+propositionize
+propositus
+propound
+propounder
+propoundment
+propoxy
+proppage
+propper
+propraetor
+propraetorial
+propraetorian
+proprecedent
+propriation
+proprietage
+proprietarian
+proprietariat
+proprietarily
+proprietary
+proprietor
+proprietorial
+proprietorially
+proprietorship
+proprietory
+proprietous
+proprietress
+proprietrix
+propriety
+proprioception
+proprioceptive
+proprioceptor
+propriospinal
+proprium
+proprivilege
+proproctor
+proprofit
+proprovincial
+proprovost
+props
+propterygial
+propterygium
+proptosed
+proptosis
+propublication
+propublicity
+propugnacled
+propugnaculum
+propugnation
+propugnator
+propugner
+propulsation
+propulsatory
+propulsion
+propulsity
+propulsive
+propulsor
+propulsory
+propunishment
+propupa
+propupal
+propurchase
+Propus
+propwood
+propygidium
+propyl
+propylacetic
+propylaeum
+propylamine
+propylation
+propylene
+propylic
+propylidene
+propylite
+propylitic
+propylitization
+propylon
+propyne
+propynoic
+proquaestor
+proracing
+prorailroad
+prorata
+proratable
+prorate
+proration
+prore
+proreader
+prorealism
+prorealist
+prorealistic
+proreality
+prorean
+prorebate
+prorebel
+prorecall
+proreciprocation
+prorecognition
+proreconciliation
+prorector
+prorectorate
+proredemption
+proreduction
+proreferendum
+proreform
+proreformist
+proregent
+prorelease
+Proreptilia
+proreptilian
+proreption
+prorepublican
+proresearch
+proreservationist
+proresignation
+prorestoration
+prorestriction
+prorevision
+prorevisionist
+prorevolution
+prorevolutionary
+prorevolutionist
+prorhinal
+Prorhipidoglossomorpha
+proritual
+proritualistic
+prorogate
+prorogation
+prorogator
+prorogue
+proroguer
+proromance
+proromantic
+proromanticism
+proroyal
+proroyalty
+prorrhesis
+prorsad
+prorsal
+proruption
+prosabbath
+prosabbatical
+prosacral
+prosaic
+prosaical
+prosaically
+prosaicalness
+prosaicism
+prosaicness
+prosaism
+prosaist
+prosar
+Prosarthri
+prosateur
+proscapula
+proscapular
+proscenium
+proscholastic
+proschool
+proscientific
+proscolecine
+proscolex
+proscribable
+proscribe
+proscriber
+proscript
+proscription
+proscriptional
+proscriptionist
+proscriptive
+proscriptively
+proscriptiveness
+proscutellar
+proscutellum
+proscynemata
+prose
+prosecrecy
+prosecretin
+prosect
+prosection
+prosector
+prosectorial
+prosectorium
+prosectorship
+prosecutable
+prosecute
+prosecution
+prosecutor
+prosecutrix
+proselenic
+proselike
+proselyte
+proselyter
+proselytical
+proselytingly
+proselytism
+proselytist
+proselytistic
+proselytization
+proselytize
+proselytizer
+proseman
+proseminar
+proseminary
+proseminate
+prosemination
+prosencephalic
+prosencephalon
+prosenchyma
+prosenchymatous
+proseneschal
+proser
+Proserpinaca
+prosethmoid
+proseucha
+proseuche
+prosification
+prosifier
+prosify
+prosiliency
+prosilient
+prosiliently
+prosilverite
+prosily
+Prosimiae
+prosimian
+prosiness
+prosing
+prosingly
+prosiphon
+prosiphonal
+prosiphonate
+prosish
+prosist
+proslambanomenos
+proslave
+proslaver
+proslavery
+proslaveryism
+prosneusis
+proso
+prosobranch
+Prosobranchia
+Prosobranchiata
+prosobranchiate
+prosocele
+prosodal
+prosode
+prosodemic
+prosodetic
+prosodiac
+prosodiacal
+prosodiacally
+prosodial
+prosodially
+prosodian
+prosodic
+prosodical
+prosodically
+prosodion
+prosodist
+prosodus
+prosody
+prosogaster
+prosogyrate
+prosogyrous
+prosoma
+prosomal
+prosomatic
+prosonomasia
+prosopalgia
+prosopalgic
+prosopantritis
+prosopectasia
+prosophist
+prosopic
+prosopically
+Prosopis
+prosopite
+Prosopium
+prosoplasia
+prosopography
+prosopon
+prosoponeuralgia
+prosopoplegia
+prosopoplegic
+prosopopoeia
+prosopopoeial
+prosoposchisis
+prosopospasm
+prosopotocia
+prosopyl
+prosopyle
+prosorus
+prospect
+prospection
+prospective
+prospectively
+prospectiveness
+prospectless
+prospector
+prospectus
+prospectusless
+prospeculation
+prosper
+prosperation
+prosperity
+prosperous
+prosperously
+prosperousness
+prospicience
+prosporangium
+prosport
+pross
+prossy
+prostatauxe
+prostate
+prostatectomy
+prostatelcosis
+prostatic
+prostaticovesical
+prostatism
+prostatitic
+prostatitis
+prostatocystitis
+prostatocystotomy
+prostatodynia
+prostatolith
+prostatomegaly
+prostatometer
+prostatomyomectomy
+prostatorrhea
+prostatorrhoea
+prostatotomy
+prostatovesical
+prostatovesiculectomy
+prostatovesiculitis
+prostemmate
+prostemmatic
+prosternal
+prosternate
+prosternum
+prostheca
+prosthenic
+prosthesis
+prosthetic
+prosthetically
+prosthetics
+prosthetist
+prosthion
+prosthionic
+prosthodontia
+prosthodontist
+Prostigmin
+prostitute
+prostitutely
+prostitution
+prostitutor
+prostomial
+prostomiate
+prostomium
+prostrate
+prostration
+prostrative
+prostrator
+prostrike
+prostyle
+prostylos
+prosubmission
+prosubscription
+prosubstantive
+prosubstitution
+prosuffrage
+prosupervision
+prosupport
+prosurgical
+prosurrender
+prosy
+prosyllogism
+prosyndicalism
+prosyndicalist
+protactic
+protactinium
+protagon
+protagonism
+protagonist
+Protagorean
+Protagoreanism
+protalbumose
+protamine
+protandric
+protandrism
+protandrous
+protandrously
+protandry
+protanomal
+protanomalous
+protanope
+protanopia
+protanopic
+protargentum
+protargin
+Protargol
+protariff
+protarsal
+protarsus
+protasis
+protaspis
+protatic
+protatically
+protax
+protaxation
+protaxial
+protaxis
+prote
+Protea
+protea
+Proteaceae
+proteaceous
+protead
+protean
+proteanly
+proteanwise
+protease
+protechnical
+protect
+protectant
+protectible
+protecting
+protectingly
+protectingness
+protection
+protectional
+protectionate
+protectionism
+protectionist
+protectionize
+protectionship
+protective
+protectively
+protectiveness
+Protectograph
+protector
+protectoral
+protectorate
+protectorial
+protectorian
+protectorless
+protectorship
+protectory
+protectress
+protectrix
+protege
+protegee
+protegulum
+proteic
+Proteida
+Proteidae
+proteide
+proteidean
+proteidogenous
+proteiform
+protein
+proteinaceous
+proteinase
+proteinic
+proteinochromogen
+proteinous
+proteinuria
+Proteles
+Protelidae
+Protelytroptera
+protelytropteran
+protelytropteron
+protelytropterous
+protemperance
+protempirical
+protemporaneous
+protend
+protension
+protensity
+protensive
+protensively
+proteoclastic
+proteogenous
+proteolysis
+proteolytic
+proteopectic
+proteopexic
+proteopexis
+proteopexy
+proteosaurid
+Proteosauridae
+Proteosaurus
+proteose
+Proteosoma
+proteosomal
+proteosome
+proteosuria
+protephemeroid
+Protephemeroidea
+proterandrous
+proterandrousness
+proterandry
+proteranthous
+proterobase
+proteroglyph
+Proteroglypha
+proteroglyphic
+proteroglyphous
+proterogynous
+proterogyny
+proterothesis
+proterotype
+Proterozoic
+protervity
+protest
+protestable
+protestancy
+protestant
+Protestantish
+Protestantishly
+protestantism
+Protestantize
+Protestantlike
+Protestantly
+protestation
+protestator
+protestatory
+protester
+protestingly
+protestive
+protestor
+protetrarch
+Proteus
+protevangel
+protevangelion
+protevangelium
+protext
+prothalamia
+prothalamion
+prothalamium
+prothallia
+prothallial
+prothallic
+prothalline
+prothallium
+prothalloid
+prothallus
+protheatrical
+protheca
+prothesis
+prothetic
+prothetical
+prothetically
+prothonotarial
+prothonotariat
+prothonotary
+prothonotaryship
+prothoracic
+prothorax
+prothrift
+prothrombin
+prothrombogen
+prothyl
+prothysteron
+protide
+protiodide
+protist
+Protista
+protistan
+protistic
+protistological
+protistologist
+protistology
+protiston
+Protium
+protium
+proto
+protoactinium
+protoalbumose
+protoamphibian
+protoanthropic
+protoapostate
+protoarchitect
+Protoascales
+Protoascomycetes
+protobacco
+Protobasidii
+Protobasidiomycetes
+protobasidiomycetous
+protobasidium
+protobishop
+protoblast
+protoblastic
+protoblattoid
+Protoblattoidea
+Protobranchia
+Protobranchiata
+protobranchiate
+protocalcium
+protocanonical
+Protocaris
+protocaseose
+protocatechualdehyde
+protocatechuic
+Protoceras
+Protoceratidae
+Protoceratops
+protocercal
+protocerebral
+protocerebrum
+protochemist
+protochemistry
+protochloride
+protochlorophyll
+Protochorda
+Protochordata
+protochordate
+protochromium
+protochronicler
+protocitizen
+protoclastic
+protocneme
+Protococcaceae
+protococcaceous
+protococcal
+Protococcales
+protococcoid
+Protococcus
+protocol
+protocolar
+protocolary
+Protocoleoptera
+protocoleopteran
+protocoleopteron
+protocoleopterous
+protocolist
+protocolization
+protocolize
+protoconch
+protoconchal
+protocone
+protoconid
+protoconule
+protoconulid
+protocopper
+protocorm
+protodeacon
+protoderm
+protodevil
+Protodonata
+protodonatan
+protodonate
+protodont
+Protodonta
+protodramatic
+protodynastic
+protoelastose
+protoepiphyte
+protoforaminifer
+protoforester
+protogaster
+protogelatose
+protogenal
+protogenes
+protogenesis
+protogenetic
+protogenic
+protogenist
+Protogeometric
+protogine
+protoglobulose
+protogod
+protogonous
+protogospel
+protograph
+protogynous
+protogyny
+protohematoblast
+Protohemiptera
+protohemipteran
+protohemipteron
+protohemipterous
+protoheresiarch
+Protohippus
+protohistorian
+protohistoric
+protohistory
+protohomo
+protohuman
+Protohydra
+protohydrogen
+Protohymenoptera
+protohymenopteran
+protohymenopteron
+protohymenopterous
+protoiron
+protoleration
+protoleucocyte
+protoleukocyte
+protolithic
+protoliturgic
+protolog
+protologist
+protoloph
+protoma
+protomagister
+protomagnate
+protomagnesium
+protomala
+protomalal
+protomalar
+protomammal
+protomammalian
+protomanganese
+protomartyr
+Protomastigida
+protome
+protomeristem
+protomerite
+protomeritic
+protometal
+protometallic
+protometaphrast
+Protominobacter
+Protomonadina
+protomonostelic
+protomorph
+protomorphic
+Protomycetales
+protomyosinose
+proton
+protone
+protonegroid
+protonema
+protonemal
+protonematal
+protonematoid
+protoneme
+Protonemertini
+protonephridial
+protonephridium
+protonephros
+protoneuron
+protoneurone
+protonic
+protonickel
+protonitrate
+protonotater
+protonym
+protonymph
+protonymphal
+protopapas
+protopappas
+protoparent
+protopathia
+protopathic
+protopathy
+protopatriarchal
+protopatrician
+protopattern
+protopectin
+protopectinase
+protopepsia
+Protoperlaria
+protoperlarian
+protophilosophic
+protophloem
+protophyll
+Protophyta
+protophyte
+protophytic
+protopin
+protopine
+protoplasm
+protoplasma
+protoplasmal
+protoplasmatic
+protoplasmic
+protoplast
+protoplastic
+protopod
+protopodial
+protopodite
+protopoditic
+protopoetic
+protopope
+protoporphyrin
+protopragmatic
+protopresbyter
+protopresbytery
+protoprism
+protoproteose
+protoprotestant
+protopteran
+Protopteridae
+protopteridophyte
+protopterous
+Protopterus
+protopyramid
+protore
+protorebel
+protoreligious
+protoreptilian
+Protorohippus
+protorosaur
+Protorosauria
+protorosaurian
+Protorosauridae
+protorosauroid
+Protorosaurus
+Protorthoptera
+protorthopteran
+protorthopteron
+protorthopterous
+protosalt
+protosaurian
+protoscientific
+Protoselachii
+protosilicate
+protosilicon
+protosinner
+Protosiphon
+Protosiphonaceae
+protosiphonaceous
+protosocial
+protosolution
+protospasm
+Protosphargis
+Protospondyli
+protospore
+Protostega
+Protostegidae
+protostele
+protostelic
+protostome
+protostrontium
+protosulphate
+protosulphide
+protosyntonose
+prototaxites
+prototheca
+protothecal
+prototheme
+protothere
+Prototheria
+prototherian
+prototitanium
+Prototracheata
+prototraitor
+prototroch
+prototrochal
+prototrophic
+prototypal
+prototype
+prototypic
+prototypical
+prototypically
+prototypographer
+prototyrant
+protovanadium
+protoveratrine
+protovertebra
+protovertebral
+protovestiary
+protovillain
+protovum
+protoxide
+protoxylem
+Protozoa
+protozoacidal
+protozoacide
+protozoal
+protozoan
+protozoea
+protozoean
+protozoiasis
+protozoic
+protozoological
+protozoologist
+protozoology
+protozoon
+protozoonal
+Protracheata
+protracheate
+protract
+protracted
+protractedly
+protractedness
+protracter
+protractible
+protractile
+protractility
+protraction
+protractive
+protractor
+protrade
+protradition
+protraditional
+protragedy
+protragical
+protragie
+protransfer
+protranslation
+protransubstantiation
+protravel
+protreasurer
+protreaty
+Protremata
+protreptic
+protreptical
+protriaene
+protropical
+protrudable
+protrude
+protrudent
+protrusible
+protrusile
+protrusion
+protrusive
+protrusively
+protrusiveness
+protuberance
+protuberancy
+protuberant
+protuberantial
+protuberantly
+protuberantness
+protuberate
+protuberosity
+protuberous
+Protura
+proturan
+protutor
+protutory
+protyl
+protyle
+Protylopus
+protype
+proudful
+proudhearted
+proudish
+proudishly
+proudling
+proudly
+proudness
+prouniformity
+prounion
+prounionist
+prouniversity
+proustite
+provability
+provable
+provableness
+provably
+provaccinist
+provand
+provant
+provascular
+prove
+provect
+provection
+proved
+proveditor
+provedly
+provedor
+provedore
+proven
+provenance
+Provencal
+Provencalize
+Provence
+Provencial
+provender
+provenience
+provenient
+provenly
+proventricular
+proventricule
+proventriculus
+prover
+proverb
+proverbial
+proverbialism
+proverbialist
+proverbialize
+proverbially
+proverbic
+proverbiologist
+proverbiology
+proverbize
+proverblike
+provicar
+provicariate
+providable
+providance
+provide
+provided
+providence
+provident
+providential
+providentialism
+providentially
+providently
+providentness
+provider
+providing
+providore
+providoring
+province
+provincial
+provincialate
+provincialism
+provincialist
+provinciality
+provincialization
+provincialize
+provincially
+provincialship
+provinciate
+provinculum
+provine
+proving
+provingly
+provision
+provisional
+provisionality
+provisionally
+provisionalness
+provisionary
+provisioner
+provisioneress
+provisionless
+provisionment
+provisive
+proviso
+provisor
+provisorily
+provisorship
+provisory
+provitamin
+provivisection
+provivisectionist
+provocant
+provocation
+provocational
+provocative
+provocatively
+provocativeness
+provocator
+provocatory
+provokable
+provoke
+provokee
+provoker
+provoking
+provokingly
+provokingness
+provolunteering
+provost
+provostal
+provostess
+provostorial
+provostry
+provostship
+prow
+prowar
+prowarden
+prowaterpower
+prowed
+prowersite
+prowess
+prowessed
+prowessful
+prowl
+prowler
+prowling
+prowlingly
+proxenet
+proxenete
+proxenetism
+proxenos
+proxenus
+proxeny
+proxically
+proximad
+proximal
+proximally
+proximate
+proximately
+proximateness
+proximation
+proximity
+proximo
+proximobuccal
+proximolabial
+proximolingual
+proxy
+proxyship
+proxysm
+prozone
+prozoning
+prozygapophysis
+prozymite
+prude
+prudelike
+prudely
+Prudence
+prudence
+prudent
+prudential
+prudentialism
+prudentialist
+prudentiality
+prudentially
+prudentialness
+prudently
+prudery
+prudish
+prudishly
+prudishness
+prudist
+prudity
+Prudy
+Prue
+pruh
+pruinate
+pruinescence
+pruinose
+pruinous
+prulaurasin
+prunable
+prunableness
+prunably
+Prunaceae
+prunase
+prunasin
+prune
+prunell
+Prunella
+prunella
+prunelle
+Prunellidae
+prunello
+pruner
+prunetin
+prunetol
+pruniferous
+pruniform
+pruning
+prunitrin
+prunt
+prunted
+Prunus
+prurience
+pruriency
+prurient
+pruriently
+pruriginous
+prurigo
+pruriousness
+pruritic
+pruritus
+prusiano
+Prussian
+Prussianism
+Prussianization
+Prussianize
+Prussianizer
+prussiate
+prussic
+Prussification
+Prussify
+prut
+prutah
+pry
+pryer
+prying
+pryingly
+pryingness
+pryler
+pryproof
+pryse
+prytaneum
+prytanis
+prytanize
+prytany
+psalis
+psalm
+psalmic
+psalmist
+psalmister
+psalmistry
+psalmless
+psalmodial
+psalmodic
+psalmodical
+psalmodist
+psalmodize
+psalmody
+psalmograph
+psalmographer
+psalmography
+psalmy
+psaloid
+psalter
+psalterial
+psalterian
+psalterion
+psalterist
+psalterium
+psaltery
+psaltes
+psaltress
+psammite
+psammitic
+psammocarcinoma
+psammocharid
+Psammocharidae
+psammogenous
+psammolithic
+psammologist
+psammology
+psammoma
+psammophile
+psammophilous
+Psammophis
+psammophyte
+psammophytic
+psammosarcoma
+psammotherapy
+psammous
+Psaronius
+pschent
+Psedera
+Pselaphidae
+Pselaphus
+psellism
+psellismus
+psephism
+psephisma
+psephite
+psephitic
+psephomancy
+Psephurus
+Psetta
+pseudaconine
+pseudaconitine
+pseudacusis
+pseudalveolar
+pseudambulacral
+pseudambulacrum
+pseudamoeboid
+pseudamphora
+pseudandry
+pseudangina
+pseudankylosis
+pseudaphia
+pseudaposematic
+pseudaposporous
+pseudapospory
+pseudapostle
+pseudarachnidan
+pseudarthrosis
+pseudataxic
+pseudatoll
+pseudaxine
+pseudaxis
+Pseudechis
+pseudelephant
+pseudelminth
+pseudelytron
+pseudembryo
+pseudembryonic
+pseudencephalic
+pseudencephalus
+pseudepigraph
+pseudepigrapha
+pseudepigraphal
+pseudepigraphic
+pseudepigraphical
+pseudepigraphous
+pseudepigraphy
+pseudepiploic
+pseudepiploon
+pseudepiscopacy
+pseudepiscopy
+pseudepisematic
+pseudesthesia
+pseudhalteres
+pseudhemal
+pseudimaginal
+pseudimago
+pseudisodomum
+pseudo
+pseudoacaccia
+pseudoacademic
+pseudoacademical
+pseudoaccidental
+pseudoacid
+pseudoaconitine
+pseudoacromegaly
+pseudoadiabatic
+pseudoaesthetic
+pseudoaffectionate
+pseudoalkaloid
+pseudoalum
+pseudoalveolar
+pseudoamateurish
+pseudoamatory
+pseudoanaphylactic
+pseudoanaphylaxis
+pseudoanatomic
+pseudoanatomical
+pseudoancestral
+pseudoanemia
+pseudoanemic
+pseudoangelic
+pseudoangina
+pseudoankylosis
+pseudoanthorine
+pseudoanthropoid
+pseudoanthropological
+pseudoanthropology
+pseudoantique
+pseudoapologetic
+pseudoapoplectic
+pseudoapoplexy
+pseudoappendicitis
+pseudoaquatic
+pseudoarchaic
+pseudoarchaism
+pseudoarchaist
+pseudoaristocratic
+pseudoarthrosis
+pseudoarticulation
+pseudoartistic
+pseudoascetic
+pseudoastringent
+pseudoasymmetrical
+pseudoasymmetry
+pseudoataxia
+pseudobacterium
+pseudobasidium
+pseudobenevolent
+pseudobenthonic
+pseudobenthos
+pseudobinary
+pseudobiological
+pseudoblepsia
+pseudoblepsis
+pseudobrachial
+pseudobrachium
+pseudobranch
+pseudobranchia
+pseudobranchial
+pseudobranchiate
+Pseudobranchus
+pseudobrookite
+pseudobrotherly
+pseudobulb
+pseudobulbar
+pseudobulbil
+pseudobulbous
+pseudobutylene
+pseudocandid
+pseudocapitulum
+pseudocarbamide
+pseudocarcinoid
+pseudocarp
+pseudocarpous
+pseudocartilaginous
+pseudocele
+pseudocelian
+pseudocelic
+pseudocellus
+pseudocentric
+pseudocentrous
+pseudocentrum
+Pseudoceratites
+pseudoceratitic
+pseudocercaria
+pseudoceryl
+pseudocharitable
+pseudochemical
+pseudochina
+pseudochromesthesia
+pseudochromia
+pseudochromosome
+pseudochronism
+pseudochronologist
+pseudochrysalis
+pseudochrysolite
+pseudochylous
+pseudocirrhosis
+pseudoclassic
+pseudoclassical
+pseudoclassicism
+pseudoclerical
+Pseudococcinae
+Pseudococcus
+pseudococtate
+pseudocollegiate
+pseudocolumella
+pseudocolumellar
+pseudocommissure
+pseudocommisural
+pseudocompetitive
+pseudoconcha
+pseudoconclude
+pseudocone
+pseudoconglomerate
+pseudoconglomeration
+pseudoconhydrine
+pseudoconjugation
+pseudoconservative
+pseudocorneous
+pseudocortex
+pseudocosta
+pseudocotyledon
+pseudocotyledonal
+pseudocritical
+pseudocroup
+pseudocrystalline
+pseudocubic
+pseudocultivated
+pseudocultural
+pseudocumene
+pseudocumenyl
+pseudocumidine
+pseudocumyl
+pseudocyclosis
+pseudocyesis
+pseudocyst
+pseudodeltidium
+pseudodementia
+pseudodemocratic
+pseudoderm
+pseudodermic
+pseudodiagnosis
+pseudodiastolic
+pseudodiphtheria
+pseudodiphtheritic
+pseudodipteral
+pseudodipterally
+pseudodipteros
+pseudodont
+pseudodox
+pseudodoxal
+pseudodoxy
+pseudodramatic
+pseudodysentery
+pseudoedema
+pseudoelectoral
+pseudoembryo
+pseudoembryonic
+pseudoemotional
+pseudoencephalitic
+pseudoenthusiastic
+pseudoephedrine
+pseudoepiscopal
+pseudoequalitarian
+pseudoerotic
+pseudoeroticism
+pseudoerysipelas
+pseudoerysipelatous
+pseudoerythrin
+pseudoethical
+pseudoetymological
+pseudoeugenics
+pseudoevangelical
+pseudofamous
+pseudofarcy
+pseudofeminine
+pseudofever
+pseudofeverish
+pseudofilaria
+pseudofilarian
+pseudofinal
+pseudofluctuation
+pseudofluorescence
+pseudofoliaceous
+pseudoform
+pseudofossil
+pseudogalena
+pseudoganglion
+pseudogaseous
+pseudogaster
+pseudogastrula
+pseudogeneral
+pseudogeneric
+pseudogenerous
+pseudogenteel
+pseudogenus
+pseudogeometry
+pseudogermanic
+pseudogeusia
+pseudogeustia
+pseudoglanders
+pseudoglioma
+pseudoglobulin
+pseudoglottis
+pseudograph
+pseudographeme
+pseudographer
+pseudographia
+pseudographize
+pseudography
+pseudograsserie
+Pseudogryphus
+pseudogyne
+pseudogynous
+pseudogyny
+pseudogyrate
+pseudohallucination
+pseudohallucinatory
+pseudohalogen
+pseudohemal
+pseudohermaphrodite
+pseudohermaphroditic
+pseudohermaphroditism
+pseudoheroic
+pseudohexagonal
+pseudohistoric
+pseudohistorical
+pseudoholoptic
+pseudohuman
+pseudohydrophobia
+pseudohyoscyamine
+pseudohypertrophic
+pseudohypertrophy
+pseudoidentical
+pseudoimpartial
+pseudoindependent
+pseudoinfluenza
+pseudoinsane
+pseudoinsoluble
+pseudoisatin
+pseudoism
+pseudoisomer
+pseudoisomeric
+pseudoisomerism
+pseudoisotropy
+pseudojervine
+pseudolabial
+pseudolabium
+pseudolalia
+Pseudolamellibranchia
+Pseudolamellibranchiata
+pseudolamellibranchiate
+pseudolaminated
+Pseudolarix
+pseudolateral
+pseudolatry
+pseudolegal
+pseudolegendary
+pseudoleucite
+pseudoleucocyte
+pseudoleukemia
+pseudoleukemic
+pseudoliberal
+pseudolichen
+pseudolinguistic
+pseudoliterary
+pseudolobar
+pseudological
+pseudologically
+pseudologist
+pseudologue
+pseudology
+pseudolunule
+pseudomalachite
+pseudomalaria
+pseudomancy
+pseudomania
+pseudomaniac
+pseudomantic
+pseudomantist
+pseudomasculine
+pseudomedical
+pseudomedieval
+pseudomelanosis
+pseudomembrane
+pseudomembranous
+pseudomeningitis
+pseudomenstruation
+pseudomer
+pseudomeric
+pseudomerism
+pseudomery
+pseudometallic
+pseudometameric
+pseudometamerism
+pseudomica
+pseudomilitarist
+pseudomilitaristic
+pseudomilitary
+pseudoministerial
+pseudomiraculous
+pseudomitotic
+pseudomnesia
+pseudomodern
+pseudomodest
+Pseudomonas
+pseudomonastic
+pseudomonoclinic
+pseudomonocotyledonous
+pseudomonocyclic
+pseudomonotropy
+pseudomoral
+pseudomorph
+pseudomorphia
+pseudomorphic
+pseudomorphine
+pseudomorphism
+pseudomorphose
+pseudomorphosis
+pseudomorphous
+pseudomorula
+pseudomorular
+pseudomucin
+pseudomucoid
+pseudomultilocular
+pseudomultiseptate
+pseudomythical
+pseudonarcotic
+pseudonational
+pseudonavicella
+pseudonavicellar
+pseudonavicula
+pseudonavicular
+pseudoneuropter
+Pseudoneuroptera
+pseudoneuropteran
+pseudoneuropterous
+pseudonitrole
+pseudonitrosite
+pseudonuclein
+pseudonucleolus
+pseudonychium
+pseudonym
+pseudonymal
+pseudonymic
+pseudonymity
+pseudonymous
+pseudonymously
+pseudonymousness
+pseudonymuncle
+pseudonymuncule
+pseudopapaverine
+pseudoparalysis
+pseudoparalytic
+pseudoparaplegia
+pseudoparasitic
+pseudoparasitism
+pseudoparenchyma
+pseudoparenchymatous
+pseudoparenchyme
+pseudoparesis
+pseudoparthenogenesis
+pseudopatriotic
+pseudopediform
+pseudopelletierine
+pseudopercular
+pseudoperculate
+pseudoperculum
+pseudoperianth
+pseudoperidium
+pseudoperiodic
+pseudoperipteral
+pseudopermanent
+pseudoperoxide
+pseudoperspective
+Pseudopeziza
+pseudophallic
+pseudophellandrene
+pseudophenanthrene
+pseudophenanthroline
+pseudophenocryst
+pseudophilanthropic
+pseudophilosophical
+Pseudophoenix
+pseudopionnotes
+pseudopious
+pseudoplasm
+pseudoplasma
+pseudoplasmodium
+pseudopneumonia
+pseudopod
+pseudopodal
+pseudopodia
+pseudopodial
+pseudopodian
+pseudopodiospore
+pseudopodium
+pseudopoetic
+pseudopoetical
+pseudopolitic
+pseudopolitical
+pseudopopular
+pseudopore
+pseudoporphyritic
+pseudopregnancy
+pseudopregnant
+pseudopriestly
+pseudoprimitive
+pseudoprimitivism
+pseudoprincely
+pseudoproboscis
+pseudoprofessional
+pseudoprofessorial
+pseudoprophetic
+pseudoprophetical
+pseudoprosperous
+pseudopsia
+pseudopsychological
+pseudoptics
+pseudoptosis
+pseudopupa
+pseudopupal
+pseudopurpurin
+pseudopyriform
+pseudoquinol
+pseudorabies
+pseudoracemic
+pseudoracemism
+pseudoramose
+pseudoramulus
+pseudorealistic
+pseudoreduction
+pseudoreformed
+pseudoregal
+pseudoreligious
+pseudoreminiscence
+pseudorganic
+pseudorheumatic
+pseudorhombohedral
+pseudoromantic
+pseudorunic
+pseudosacred
+pseudosacrilegious
+pseudosalt
+pseudosatirical
+pseudoscarlatina
+Pseudoscarus
+pseudoscholarly
+pseudoscholastic
+pseudoscientific
+Pseudoscines
+pseudoscinine
+pseudosclerosis
+pseudoscope
+pseudoscopic
+pseudoscopically
+pseudoscopy
+pseudoscorpion
+Pseudoscorpiones
+Pseudoscorpionida
+pseudoscutum
+pseudosematic
+pseudosensational
+pseudoseptate
+pseudoservile
+pseudosessile
+pseudosiphonal
+pseudosiphuncal
+pseudoskeletal
+pseudoskeleton
+pseudoskink
+pseudosmia
+pseudosocial
+pseudosocialistic
+pseudosolution
+pseudosoph
+pseudosopher
+pseudosophical
+pseudosophist
+pseudosophy
+pseudospectral
+pseudosperm
+pseudospermic
+pseudospermium
+pseudospermous
+pseudosphere
+pseudospherical
+pseudospiracle
+pseudospiritual
+pseudosporangium
+pseudospore
+pseudosquamate
+pseudostalactite
+pseudostalactitical
+pseudostalagmite
+pseudostalagmitical
+pseudostereoscope
+pseudostereoscopic
+pseudostereoscopism
+pseudostigma
+pseudostigmatic
+pseudostoma
+pseudostomatous
+pseudostomous
+pseudostratum
+pseudosubtle
+Pseudosuchia
+pseudosuchian
+pseudosweating
+pseudosyllogism
+pseudosymmetric
+pseudosymmetrical
+pseudosymmetry
+pseudosymptomatic
+pseudosyphilis
+pseudosyphilitic
+pseudotabes
+pseudotachylite
+pseudotetanus
+pseudotetragonal
+Pseudotetramera
+pseudotetrameral
+pseudotetramerous
+pseudotrachea
+pseudotracheal
+pseudotribal
+pseudotributary
+Pseudotrimera
+pseudotrimeral
+pseudotrimerous
+pseudotropine
+Pseudotsuga
+pseudotubercular
+pseudotuberculosis
+pseudotuberculous
+pseudoturbinal
+pseudotyphoid
+pseudoval
+pseudovarian
+pseudovary
+pseudovelar
+pseudovelum
+pseudoventricle
+pseudoviaduct
+pseudoviperine
+pseudoviscosity
+pseudoviscous
+pseudovolcanic
+pseudovolcano
+pseudovum
+pseudowhorl
+pseudoxanthine
+pseudoyohimbine
+pseudozealot
+pseudozoea
+pseudozoogloeal
+psha
+Pshav
+pshaw
+psi
+Psidium
+psilanthropic
+psilanthropism
+psilanthropist
+psilanthropy
+psiloceran
+Psiloceras
+psiloceratan
+psiloceratid
+Psiloceratidae
+psiloi
+psilology
+psilomelane
+psilomelanic
+Psilophytales
+psilophyte
+Psilophyton
+psilosis
+psilosopher
+psilosophy
+Psilotaceae
+psilotaceous
+psilothrum
+psilotic
+Psilotum
+psithurism
+Psithyrus
+psittaceous
+psittaceously
+Psittaci
+Psittacidae
+Psittaciformes
+Psittacinae
+psittacine
+psittacinite
+psittacism
+psittacistic
+Psittacomorphae
+psittacomorphic
+psittacosis
+Psittacus
+psoadic
+psoas
+psoatic
+psocid
+Psocidae
+psocine
+psoitis
+psomophagic
+psomophagist
+psomophagy
+psora
+Psoralea
+psoriasic
+psoriasiform
+psoriasis
+psoriatic
+psoriatiform
+psoric
+psoroid
+Psorophora
+psorophthalmia
+psorophthalmic
+Psoroptes
+psoroptic
+psorosis
+psorosperm
+psorospermial
+psorospermiasis
+psorospermic
+psorospermiform
+psorospermosis
+psorous
+pssimistical
+pst
+psych
+psychagogic
+psychagogos
+psychagogue
+psychagogy
+psychal
+psychalgia
+psychanalysis
+psychanalysist
+psychanalytic
+psychasthenia
+psychasthenic
+Psyche
+psyche
+Psychean
+psycheometry
+psychesthesia
+psychesthetic
+psychiasis
+psychiater
+psychiatria
+psychiatric
+psychiatrical
+psychiatrically
+psychiatrist
+psychiatrize
+psychiatry
+psychic
+psychical
+psychically
+Psychichthys
+psychicism
+psychicist
+psychics
+psychid
+Psychidae
+psychism
+psychist
+psychoanalysis
+psychoanalyst
+psychoanalytic
+psychoanalytical
+psychoanalytically
+psychoanalyze
+psychoanalyzer
+psychoautomatic
+psychobiochemistry
+psychobiologic
+psychobiological
+psychobiology
+psychobiotic
+psychocatharsis
+psychoclinic
+psychoclinical
+psychoclinicist
+Psychoda
+psychodiagnostics
+Psychodidae
+psychodispositional
+psychodrama
+psychodynamic
+psychodynamics
+psychoeducational
+psychoepilepsy
+psychoethical
+psychofugal
+psychogalvanic
+psychogalvanometer
+psychogenesis
+psychogenetic
+psychogenetical
+psychogenetically
+psychogenetics
+psychogenic
+psychogeny
+psychognosis
+psychognostic
+psychognosy
+psychogonic
+psychogonical
+psychogony
+psychogram
+psychograph
+psychographer
+psychographic
+psychographist
+psychography
+psychoid
+psychokinesia
+psychokinesis
+psychokinetic
+psychokyme
+psycholepsy
+psycholeptic
+psychologer
+psychologian
+psychologic
+psychological
+psychologically
+psychologics
+psychologism
+psychologist
+psychologize
+psychologue
+psychology
+psychomachy
+psychomancy
+psychomantic
+psychometer
+psychometric
+psychometrical
+psychometrically
+psychometrician
+psychometrics
+psychometrist
+psychometrize
+psychometry
+psychomonism
+psychomoral
+psychomorphic
+psychomorphism
+psychomotility
+psychomotor
+psychon
+psychoneural
+psychoneurological
+psychoneurosis
+psychoneurotic
+psychonomic
+psychonomics
+psychonomy
+psychony
+psychoorganic
+psychopannychian
+psychopannychism
+psychopannychist
+psychopannychistic
+psychopannychy
+psychopanychite
+psychopath
+psychopathia
+psychopathic
+psychopathist
+psychopathologic
+psychopathological
+psychopathologist
+psychopathy
+psychopetal
+psychophobia
+psychophysic
+psychophysical
+psychophysically
+psychophysicist
+psychophysics
+psychophysiologic
+psychophysiological
+psychophysiologically
+psychophysiologist
+psychophysiology
+psychoplasm
+psychopomp
+psychopompos
+psychorealism
+psychorealist
+psychorealistic
+psychoreflex
+psychorhythm
+psychorhythmia
+psychorhythmic
+psychorhythmical
+psychorhythmically
+psychorrhagic
+psychorrhagy
+psychosarcous
+psychosensorial
+psychosensory
+psychoses
+psychosexual
+psychosexuality
+psychosexually
+psychosis
+psychosocial
+psychosomatic
+psychosomatics
+psychosome
+psychosophy
+psychostasy
+psychostatic
+psychostatical
+psychostatically
+psychostatics
+psychosurgeon
+psychosurgery
+psychosynthesis
+psychosynthetic
+psychotaxis
+psychotechnical
+psychotechnician
+psychotechnics
+psychotechnological
+psychotechnology
+psychotheism
+psychotherapeutic
+psychotherapeutical
+psychotherapeutics
+psychotherapeutist
+psychotherapist
+psychotherapy
+psychotic
+Psychotria
+psychotrine
+psychovital
+Psychozoic
+psychroesthesia
+psychrograph
+psychrometer
+psychrometric
+psychrometrical
+psychrometry
+psychrophile
+psychrophilic
+psychrophobia
+psychrophore
+psychrophyte
+psychurgy
+psykter
+Psylla
+psylla
+psyllid
+Psyllidae
+psyllium
+ptarmic
+Ptarmica
+ptarmical
+ptarmigan
+Ptelea
+Ptenoglossa
+ptenoglossate
+Pteranodon
+pteranodont
+Pteranodontidae
+pteraspid
+Pteraspidae
+Pteraspis
+ptereal
+pterergate
+Pterian
+pteric
+Pterichthyodes
+Pterichthys
+pterideous
+pteridium
+pteridography
+pteridoid
+pteridological
+pteridologist
+pteridology
+pteridophilism
+pteridophilist
+pteridophilistic
+Pteridophyta
+pteridophyte
+pteridophytic
+pteridophytous
+pteridosperm
+Pteridospermae
+Pteridospermaphyta
+pteridospermaphytic
+pteridospermous
+pterion
+Pteris
+Pterobranchia
+pterobranchiate
+pterocarpous
+Pterocarpus
+Pterocarya
+Pterocaulon
+Pterocera
+Pteroceras
+Pterocles
+Pterocletes
+Pteroclidae
+Pteroclomorphae
+pteroclomorphic
+pterodactyl
+Pterodactyli
+pterodactylian
+pterodactylic
+pterodactylid
+Pterodactylidae
+pterodactyloid
+pterodactylous
+Pterodactylus
+pterographer
+pterographic
+pterographical
+pterography
+pteroid
+pteroma
+pteromalid
+Pteromalidae
+Pteromys
+pteropaedes
+pteropaedic
+pteropegal
+pteropegous
+pteropegum
+pterophorid
+Pterophoridae
+Pterophorus
+Pterophryne
+pteropid
+Pteropidae
+pteropine
+pteropod
+Pteropoda
+pteropodal
+pteropodan
+pteropodial
+Pteropodidae
+pteropodium
+pteropodous
+Pteropsida
+Pteropus
+pterosaur
+Pterosauri
+Pterosauria
+pterosaurian
+pterospermous
+Pterospora
+Pterostemon
+Pterostemonaceae
+pterostigma
+pterostigmal
+pterostigmatic
+pterostigmatical
+pterotheca
+pterothorax
+pterotic
+pteroylglutamic
+pterygial
+pterygiophore
+pterygium
+pterygobranchiate
+pterygode
+pterygodum
+Pterygogenea
+pterygoid
+pterygoidal
+pterygoidean
+pterygomalar
+pterygomandibular
+pterygomaxillary
+pterygopalatal
+pterygopalatine
+pterygopharyngeal
+pterygopharyngean
+pterygophore
+pterygopodium
+pterygoquadrate
+pterygosphenoid
+pterygospinous
+pterygostaphyline
+Pterygota
+pterygote
+pterygotous
+pterygotrabecular
+Pterygotus
+pteryla
+pterylographic
+pterylographical
+pterylography
+pterylological
+pterylology
+pterylosis
+Ptilichthyidae
+Ptiliidae
+Ptilimnium
+ptilinal
+ptilinum
+Ptilocercus
+Ptilonorhynchidae
+Ptilonorhynchinae
+ptilopaedes
+ptilopaedic
+ptilosis
+Ptilota
+ptinid
+Ptinidae
+ptinoid
+Ptinus
+ptisan
+ptochocracy
+ptochogony
+ptochology
+Ptolemaean
+Ptolemaian
+Ptolemaic
+Ptolemaical
+Ptolemaism
+Ptolemaist
+Ptolemean
+Ptolemy
+ptomain
+ptomaine
+ptomainic
+ptomatropine
+ptosis
+ptotic
+ptyalagogic
+ptyalagogue
+ptyalectasis
+ptyalin
+ptyalism
+ptyalize
+ptyalocele
+ptyalogenic
+ptyalolith
+ptyalolithiasis
+ptyalorrhea
+Ptychoparia
+ptychoparid
+ptychopariid
+ptychopterygial
+ptychopterygium
+Ptychosperma
+ptysmagogue
+ptyxis
+pu
+pua
+puan
+pub
+pubal
+pubble
+puberal
+pubertal
+pubertic
+puberty
+puberulent
+puberulous
+pubes
+pubescence
+pubescency
+pubescent
+pubian
+pubic
+pubigerous
+pubiotomy
+pubis
+public
+Publican
+publican
+publicanism
+publication
+publichearted
+publicheartedness
+publicism
+publicist
+publicity
+publicize
+publicly
+publicness
+Publilian
+publish
+publishable
+publisher
+publisheress
+publishership
+publishment
+pubococcygeal
+pubofemoral
+puboiliac
+puboischiac
+puboischial
+puboischiatic
+puboprostatic
+puborectalis
+pubotibial
+pubourethral
+pubovesical
+Puccinia
+Pucciniaceae
+pucciniaceous
+puccinoid
+puccoon
+puce
+pucelage
+pucellas
+pucelle
+Puchanahua
+pucherite
+puchero
+puck
+pucka
+puckball
+pucker
+puckerbush
+puckerel
+puckerer
+puckermouth
+puckery
+puckfist
+puckish
+puckishly
+puckishness
+puckle
+pucklike
+puckling
+puckneedle
+puckrel
+puckster
+pud
+puddee
+puddening
+pudder
+pudding
+puddingberry
+puddinghead
+puddingheaded
+puddinghouse
+puddinglike
+puddingwife
+puddingy
+puddle
+puddled
+puddlelike
+puddler
+puddling
+puddly
+puddock
+puddy
+pudency
+pudenda
+pudendal
+pudendous
+pudendum
+pudent
+pudge
+pudgily
+pudginess
+pudgy
+pudiano
+pudibund
+pudibundity
+pudic
+pudical
+pudicitia
+pudicity
+pudsey
+pudsy
+Pudu
+pudu
+pueblito
+Pueblo
+pueblo
+Puebloan
+puebloization
+puebloize
+Puelche
+Puelchean
+Pueraria
+puerer
+puericulture
+puerile
+puerilely
+puerileness
+puerilism
+puerility
+puerman
+puerpera
+puerperal
+puerperalism
+puerperant
+puerperium
+puerperous
+puerpery
+puff
+puffback
+puffball
+puffbird
+puffed
+puffer
+puffery
+puffily
+puffin
+puffiness
+puffinet
+puffing
+puffingly
+Puffinus
+pufflet
+puffwig
+puffy
+pug
+pugged
+pugger
+puggi
+pugginess
+pugging
+puggish
+puggle
+puggree
+puggy
+pugh
+pugil
+pugilant
+pugilism
+pugilist
+pugilistic
+pugilistical
+pugilistically
+puglianite
+pugman
+pugmill
+pugmiller
+pugnacious
+pugnaciously
+pugnaciousness
+pugnacity
+Puinavi
+Puinavian
+Puinavis
+puisne
+puissance
+puissant
+puissantly
+puissantness
+puist
+puistie
+puja
+Pujunan
+puka
+pukatea
+pukateine
+puke
+pukeko
+puker
+pukeweed
+Pukhtun
+pukish
+pukishness
+pukras
+puku
+puky
+pul
+pulahan
+pulahanism
+pulasan
+pulaskite
+Pulaya
+Pulayan
+pulchrify
+pulchritude
+pulchritudinous
+pule
+pulegol
+pulegone
+puler
+Pulex
+pulghere
+puli
+Pulian
+pulicarious
+pulicat
+pulicene
+pulicid
+Pulicidae
+pulicidal
+pulicide
+pulicine
+pulicoid
+pulicose
+pulicosity
+pulicous
+puling
+pulingly
+pulish
+pulk
+pulka
+pull
+pullable
+pullback
+pullboat
+pulldevil
+pulldoo
+pulldown
+pulldrive
+pullen
+puller
+pullery
+pullet
+pulley
+pulleyless
+pulli
+Pullman
+Pullmanize
+pullorum
+pullulant
+pullulate
+pullulation
+pullus
+pulmobranchia
+pulmobranchial
+pulmobranchiate
+pulmocardiac
+pulmocutaneous
+pulmogastric
+pulmometer
+pulmometry
+pulmonal
+pulmonar
+Pulmonaria
+pulmonarian
+pulmonary
+Pulmonata
+pulmonate
+pulmonated
+pulmonectomy
+pulmonic
+pulmonifer
+Pulmonifera
+pulmoniferous
+pulmonitis
+Pulmotor
+pulmotracheal
+Pulmotrachearia
+pulmotracheary
+pulmotracheate
+pulp
+pulpaceous
+pulpal
+pulpalgia
+pulpamenta
+pulpboard
+pulpectomy
+pulpefaction
+pulper
+pulpifier
+pulpify
+pulpily
+pulpiness
+pulpit
+pulpital
+pulpitarian
+pulpiteer
+pulpiter
+pulpitful
+pulpitic
+pulpitical
+pulpitically
+pulpitis
+pulpitish
+pulpitism
+pulpitize
+pulpitless
+pulpitly
+pulpitolatry
+pulpitry
+pulpless
+pulplike
+pulpotomy
+pulpous
+pulpousness
+pulpstone
+pulpwood
+pulpy
+pulque
+pulsant
+pulsatance
+pulsate
+pulsatile
+pulsatility
+Pulsatilla
+pulsation
+pulsational
+pulsative
+pulsatively
+pulsator
+pulsatory
+pulse
+pulseless
+pulselessly
+pulselessness
+pulselike
+pulsellum
+pulsidge
+pulsific
+pulsimeter
+pulsion
+pulsive
+pulsojet
+pulsometer
+pultaceous
+pulton
+pulu
+pulveraceous
+pulverant
+pulverate
+pulveration
+pulvereous
+pulverin
+pulverizable
+pulverizate
+pulverization
+pulverizator
+pulverize
+pulverizer
+pulverous
+pulverulence
+pulverulent
+pulverulently
+pulvic
+pulvil
+pulvillar
+pulvilliform
+pulvillus
+pulvinar
+Pulvinaria
+pulvinarian
+pulvinate
+pulvinated
+pulvinately
+pulvination
+pulvinic
+pulviniform
+pulvino
+pulvinule
+pulvinulus
+pulvinus
+pulviplume
+pulwar
+puly
+puma
+Pume
+pumicate
+pumice
+pumiced
+pumiceous
+pumicer
+pumiciform
+pumicose
+pummel
+pummice
+pump
+pumpable
+pumpage
+pumpellyite
+pumper
+pumpernickel
+pumpkin
+pumpkinification
+pumpkinify
+pumpkinish
+pumpkinity
+pumple
+pumpless
+pumplike
+pumpman
+pumpsman
+pumpwright
+pun
+puna
+punaise
+punalua
+punaluan
+Punan
+punatoo
+punch
+punchable
+punchboard
+puncheon
+puncher
+punchinello
+punching
+punchless
+punchlike
+punchproof
+punchy
+punct
+punctal
+punctate
+punctated
+punctation
+punctator
+puncticular
+puncticulate
+puncticulose
+punctiform
+punctiliar
+punctilio
+punctiliomonger
+punctiliosity
+punctilious
+punctiliously
+punctiliousness
+punctist
+punctographic
+punctual
+punctualist
+punctuality
+punctually
+punctualness
+punctuate
+punctuation
+punctuational
+punctuationist
+punctuative
+punctuator
+punctuist
+punctulate
+punctulated
+punctulation
+punctule
+punctulum
+punctum
+puncturation
+puncture
+punctured
+punctureless
+punctureproof
+puncturer
+pundigrion
+pundit
+pundita
+punditic
+punditically
+punditry
+pundonor
+pundum
+puneca
+pung
+punga
+pungapung
+pungar
+pungence
+pungency
+pungent
+pungently
+punger
+pungey
+pungi
+pungle
+pungled
+Punic
+Punica
+Punicaceae
+punicaceous
+puniceous
+punicial
+punicin
+punicine
+punily
+puniness
+punish
+punishability
+punishable
+punishableness
+punishably
+punisher
+punishment
+punishmentproof
+punition
+punitional
+punitionally
+punitive
+punitively
+punitiveness
+punitory
+Punjabi
+punjum
+punk
+punkah
+punketto
+punkie
+punkwood
+punky
+punless
+punlet
+punnable
+punnage
+punner
+punnet
+punnic
+punnical
+punnigram
+punningly
+punnology
+Puno
+punproof
+punster
+punstress
+punt
+punta
+puntabout
+puntal
+puntel
+punter
+punti
+puntil
+puntist
+Puntlatsh
+punto
+puntout
+puntsman
+punty
+puny
+punyish
+punyism
+pup
+pupa
+pupahood
+pupal
+puparial
+puparium
+pupate
+pupation
+pupelo
+Pupidae
+pupiferous
+pupiform
+pupigenous
+pupigerous
+pupil
+pupilability
+pupilage
+pupilar
+pupilate
+pupildom
+pupiled
+pupilize
+pupillarity
+pupillary
+pupilless
+Pupillidae
+pupillometer
+pupillometry
+pupilloscope
+pupilloscoptic
+pupilloscopy
+Pupipara
+pupiparous
+Pupivora
+pupivore
+pupivorous
+pupoid
+puppet
+puppetdom
+puppeteer
+puppethood
+puppetish
+puppetism
+puppetize
+puppetlike
+puppetly
+puppetman
+puppetmaster
+puppetry
+puppify
+puppily
+Puppis
+puppy
+puppydom
+puppyfish
+puppyfoot
+puppyhood
+puppyish
+puppyism
+puppylike
+puppysnatch
+pupulo
+Pupuluca
+pupunha
+Puquina
+Puquinan
+pur
+purana
+puranic
+puraque
+Purasati
+Purbeck
+Purbeckian
+purblind
+purblindly
+purblindness
+purchasability
+purchasable
+purchase
+purchaser
+purchasery
+purdah
+purdy
+pure
+pureblood
+purebred
+pured
+puree
+purehearted
+purely
+pureness
+purer
+purfle
+purfled
+purfler
+purfling
+purfly
+purga
+purgation
+purgative
+purgatively
+purgatorial
+purgatorian
+purgatory
+purge
+purgeable
+purger
+purgery
+purging
+purificant
+purification
+purificative
+purificator
+purificatory
+purifier
+puriform
+purify
+purine
+puriri
+purism
+purist
+puristic
+puristical
+Puritan
+puritandom
+Puritaness
+puritanic
+puritanical
+puritanically
+puritanicalness
+Puritanism
+puritanism
+Puritanize
+Puritanizer
+puritanlike
+Puritanly
+puritano
+purity
+Purkinje
+Purkinjean
+purl
+purler
+purlhouse
+purlicue
+purlieu
+purlieuman
+purlin
+purlman
+purloin
+purloiner
+purohepatitis
+purolymph
+puromucous
+purpart
+purparty
+purple
+purplelip
+purplely
+purpleness
+purplescent
+purplewood
+purplewort
+purplish
+purplishness
+purply
+purport
+purportless
+purpose
+purposedly
+purposeful
+purposefully
+purposefulness
+purposeless
+purposelessly
+purposelessness
+purposelike
+purposely
+purposer
+purposive
+purposively
+purposiveness
+purposivism
+purposivist
+purposivistic
+purpresture
+purpura
+purpuraceous
+purpurate
+purpure
+purpureal
+purpurean
+purpureous
+purpurescent
+purpuric
+purpuriferous
+purpuriform
+purpurigenous
+purpurin
+purpurine
+purpuriparous
+purpurite
+purpurize
+purpurogallin
+purpurogenous
+purpuroid
+purpuroxanthin
+purr
+purre
+purree
+purreic
+purrel
+purrer
+purring
+purringly
+purrone
+purry
+purse
+pursed
+purseful
+purseless
+purselike
+purser
+pursership
+Purshia
+pursily
+pursiness
+purslane
+purslet
+pursley
+pursuable
+pursual
+pursuance
+pursuant
+pursuantly
+pursue
+pursuer
+pursuit
+pursuitmeter
+pursuivant
+pursy
+purtenance
+Puru
+Puruha
+purulence
+purulency
+purulent
+purulently
+puruloid
+Purupuru
+purusha
+purushartha
+purvey
+purveyable
+purveyal
+purveyance
+purveyancer
+purveyor
+purveyoress
+purview
+purvoe
+purwannah
+pus
+Puschkinia
+Puseyism
+Puseyistical
+Puseyite
+push
+pushball
+pushcart
+pusher
+pushful
+pushfully
+pushfulness
+pushing
+pushingly
+pushingness
+pushmobile
+pushover
+pushpin
+Pushtu
+pushwainling
+pusillanimity
+pusillanimous
+pusillanimously
+pusillanimousness
+puss
+pusscat
+pussley
+pusslike
+pussy
+pussycat
+pussyfoot
+pussyfooted
+pussyfooter
+pussyfooting
+pussyfootism
+pussytoe
+pustulant
+pustular
+pustulate
+pustulated
+pustulation
+pustulatous
+pustule
+pustuled
+pustulelike
+pustuliform
+pustulose
+pustulous
+put
+putage
+putamen
+putaminous
+putanism
+putation
+putationary
+putative
+putatively
+putback
+putchen
+putcher
+puteal
+putelee
+puther
+puthery
+putid
+putidly
+putidness
+putlog
+putois
+Putorius
+putredinal
+putredinous
+putrefacient
+putrefactible
+putrefaction
+putrefactive
+putrefactiveness
+putrefiable
+putrefier
+putrefy
+putresce
+putrescence
+putrescency
+putrescent
+putrescibility
+putrescible
+putrescine
+putricide
+putrid
+putridity
+putridly
+putridness
+putrifacted
+putriform
+putrilage
+putrilaginous
+putrilaginously
+putschism
+putschist
+putt
+puttee
+putter
+putterer
+putteringly
+puttier
+puttock
+putty
+puttyblower
+puttyhead
+puttyhearted
+puttylike
+puttyroot
+puttywork
+puture
+puxy
+Puya
+Puyallup
+puzzle
+puzzleation
+puzzled
+puzzledly
+puzzledness
+puzzledom
+puzzlehead
+puzzleheaded
+puzzleheadedly
+puzzleheadedness
+puzzleman
+puzzlement
+puzzlepate
+puzzlepated
+puzzlepatedness
+puzzler
+puzzling
+puzzlingly
+puzzlingness
+pya
+pyal
+pyarthrosis
+pyche
+Pycnanthemum
+pycnia
+pycnial
+pycnid
+pycnidia
+pycnidial
+pycnidiophore
+pycnidiospore
+pycnidium
+pycniospore
+pycnite
+pycnium
+Pycnocoma
+pycnoconidium
+pycnodont
+Pycnodonti
+Pycnodontidae
+pycnodontoid
+Pycnodus
+pycnogonid
+Pycnogonida
+pycnogonidium
+pycnogonoid
+pycnometer
+pycnometochia
+pycnometochic
+pycnomorphic
+pycnomorphous
+Pycnonotidae
+Pycnonotinae
+pycnonotine
+Pycnonotus
+pycnosis
+pycnospore
+pycnosporic
+pycnostyle
+pycnotic
+pyelectasis
+pyelic
+pyelitic
+pyelitis
+pyelocystitis
+pyelogram
+pyelograph
+pyelographic
+pyelography
+pyelolithotomy
+pyelometry
+pyelonephritic
+pyelonephritis
+pyelonephrosis
+pyeloplasty
+pyeloscopy
+pyelotomy
+pyeloureterogram
+pyemesis
+pyemia
+pyemic
+pygal
+pygalgia
+pygarg
+pygargus
+pygidial
+pygidid
+Pygididae
+Pygidium
+pygidium
+pygmaean
+Pygmalion
+pygmoid
+Pygmy
+pygmy
+pygmydom
+pygmyhood
+pygmyish
+pygmyism
+pygmyship
+pygmyweed
+Pygobranchia
+Pygobranchiata
+pygobranchiate
+pygofer
+pygopagus
+pygopod
+Pygopodes
+Pygopodidae
+pygopodine
+pygopodous
+Pygopus
+pygostyle
+pygostyled
+pygostylous
+pyic
+pyin
+pyjama
+pyjamaed
+pyke
+pyknatom
+pyknic
+pyknotic
+pyla
+Pylades
+pylagore
+pylangial
+pylangium
+pylar
+pylephlebitic
+pylephlebitis
+pylethrombophlebitis
+pylethrombosis
+pylic
+pylon
+pyloralgia
+pylorectomy
+pyloric
+pyloristenosis
+pyloritis
+pylorocleisis
+pylorodilator
+pylorogastrectomy
+pyloroplasty
+pyloroptosis
+pyloroschesis
+pyloroscirrhus
+pyloroscopy
+pylorospasm
+pylorostenosis
+pylorostomy
+pylorus
+pyobacillosis
+pyocele
+pyoctanin
+pyocyanase
+pyocyanin
+pyocyst
+pyocyte
+pyodermatitis
+pyodermatosis
+pyodermia
+pyodermic
+pyogenesis
+pyogenetic
+pyogenic
+pyogenin
+pyogenous
+pyohemothorax
+pyoid
+pyolabyrinthitis
+pyolymph
+pyometra
+pyometritis
+pyonephritis
+pyonephrosis
+pyonephrotic
+pyopericarditis
+pyopericardium
+pyoperitoneum
+pyoperitonitis
+pyophagia
+pyophthalmia
+pyophylactic
+pyoplania
+pyopneumocholecystitis
+pyopneumocyst
+pyopneumopericardium
+pyopneumoperitoneum
+pyopneumoperitonitis
+pyopneumothorax
+pyopoiesis
+pyopoietic
+pyoptysis
+pyorrhea
+pyorrheal
+pyorrheic
+pyosalpingitis
+pyosalpinx
+pyosepticemia
+pyosepticemic
+pyosis
+pyospermia
+pyotherapy
+pyothorax
+pyotoxinemia
+pyoureter
+pyovesiculosis
+pyoxanthose
+pyr
+pyracanth
+Pyracantha
+Pyraceae
+pyracene
+pyral
+Pyrales
+pyralid
+Pyralidae
+pyralidan
+pyralidid
+Pyralididae
+pyralidiform
+Pyralidoidea
+pyralis
+pyraloid
+Pyrameis
+pyramid
+pyramidaire
+pyramidal
+pyramidale
+pyramidalis
+Pyramidalism
+Pyramidalist
+pyramidally
+pyramidate
+Pyramidella
+pyramidellid
+Pyramidellidae
+pyramider
+pyramides
+pyramidia
+pyramidic
+pyramidical
+pyramidically
+pyramidicalness
+pyramidion
+Pyramidist
+pyramidize
+pyramidlike
+pyramidoattenuate
+pyramidoidal
+pyramidologist
+pyramidoprismatic
+pyramidwise
+pyramoidal
+pyran
+pyranometer
+pyranyl
+pyrargyrite
+Pyrausta
+Pyraustinae
+pyrazine
+pyrazole
+pyrazoline
+pyrazolone
+pyrazolyl
+pyre
+pyrectic
+pyrena
+pyrene
+Pyrenean
+pyrenematous
+pyrenic
+pyrenin
+pyrenocarp
+pyrenocarpic
+pyrenocarpous
+Pyrenochaeta
+pyrenodean
+pyrenodeine
+pyrenodeous
+pyrenoid
+pyrenolichen
+Pyrenomycetales
+pyrenomycete
+Pyrenomycetes
+Pyrenomycetineae
+pyrenomycetous
+Pyrenopeziza
+pyrethrin
+Pyrethrum
+pyrethrum
+pyretic
+pyreticosis
+pyretogenesis
+pyretogenetic
+pyretogenic
+pyretogenous
+pyretography
+pyretology
+pyretolysis
+pyretotherapy
+pyrewinkes
+Pyrex
+pyrex
+pyrexia
+pyrexial
+pyrexic
+pyrexical
+pyrgeometer
+pyrgocephalic
+pyrgocephaly
+pyrgoidal
+pyrgologist
+pyrgom
+pyrheliometer
+pyrheliometric
+pyrheliometry
+pyrheliophor
+pyribole
+pyridazine
+pyridic
+pyridine
+pyridinium
+pyridinize
+pyridone
+pyridoxine
+pyridyl
+pyriform
+pyriformis
+pyrimidine
+pyrimidyl
+pyritaceous
+pyrite
+pyrites
+pyritic
+pyritical
+pyritiferous
+pyritization
+pyritize
+pyritohedral
+pyritohedron
+pyritoid
+pyritology
+pyritous
+pyro
+pyroacetic
+pyroacid
+pyroantimonate
+pyroantimonic
+pyroarsenate
+pyroarsenic
+pyroarsenious
+pyroarsenite
+pyrobelonite
+pyrobituminous
+pyroborate
+pyroboric
+pyrocatechin
+pyrocatechinol
+pyrocatechol
+pyrocatechuic
+pyrocellulose
+pyrochemical
+pyrochemically
+pyrochlore
+pyrochromate
+pyrochromic
+pyrocinchonic
+pyrocitric
+pyroclastic
+pyrocoll
+pyrocollodion
+pyrocomenic
+pyrocondensation
+pyroconductivity
+pyrocotton
+pyrocrystalline
+Pyrocystis
+Pyrodine
+pyroelectric
+pyroelectricity
+pyrogallate
+pyrogallic
+pyrogallol
+pyrogen
+pyrogenation
+pyrogenesia
+pyrogenesis
+pyrogenetic
+pyrogenetically
+pyrogenic
+pyrogenous
+pyroglutamic
+pyrognomic
+pyrognostic
+pyrognostics
+pyrograph
+pyrographer
+pyrographic
+pyrography
+pyrogravure
+pyroguaiacin
+pyroheliometer
+pyroid
+Pyrola
+Pyrolaceae
+pyrolaceous
+pyrolater
+pyrolatry
+pyroligneous
+pyrolignic
+pyrolignite
+pyrolignous
+pyrolite
+pyrollogical
+pyrologist
+pyrology
+pyrolusite
+pyrolysis
+pyrolytic
+pyrolyze
+pyromachy
+pyromagnetic
+pyromancer
+pyromancy
+pyromania
+pyromaniac
+pyromaniacal
+pyromantic
+pyromeconic
+pyromellitic
+pyrometallurgy
+pyrometamorphic
+pyrometamorphism
+pyrometer
+pyrometric
+pyrometrical
+pyrometrically
+pyrometry
+Pyromorphidae
+pyromorphism
+pyromorphite
+pyromorphous
+pyromotor
+pyromucate
+pyromucic
+pyromucyl
+pyronaphtha
+pyrone
+Pyronema
+pyronine
+pyronomics
+pyronyxis
+pyrope
+pyropen
+pyrophanite
+pyrophanous
+pyrophile
+pyrophilous
+pyrophobia
+pyrophone
+pyrophoric
+pyrophorous
+pyrophorus
+pyrophosphate
+pyrophosphoric
+pyrophosphorous
+pyrophotograph
+pyrophotography
+pyrophotometer
+pyrophyllite
+pyrophysalite
+pyropuncture
+pyropus
+pyroracemate
+pyroracemic
+pyroscope
+pyroscopy
+pyrosis
+pyrosmalite
+Pyrosoma
+Pyrosomatidae
+pyrosome
+Pyrosomidae
+pyrosomoid
+pyrosphere
+pyrostat
+pyrostereotype
+pyrostilpnite
+pyrosulphate
+pyrosulphite
+pyrosulphuric
+pyrosulphuryl
+pyrotantalate
+pyrotartaric
+pyrotartrate
+pyrotechnian
+pyrotechnic
+pyrotechnical
+pyrotechnically
+pyrotechnician
+pyrotechnics
+pyrotechnist
+pyrotechny
+pyroterebic
+pyrotheology
+Pyrotheria
+Pyrotherium
+pyrotic
+pyrotoxin
+pyrotritaric
+pyrotritartric
+pyrouric
+pyrovanadate
+pyrovanadic
+pyroxanthin
+pyroxene
+pyroxenic
+pyroxenite
+pyroxmangite
+pyroxonium
+pyroxyle
+pyroxylene
+pyroxylic
+pyroxylin
+Pyrrhic
+pyrrhic
+pyrrhichian
+pyrrhichius
+pyrrhicist
+Pyrrhocoridae
+Pyrrhonean
+Pyrrhonian
+Pyrrhonic
+Pyrrhonism
+Pyrrhonist
+Pyrrhonistic
+Pyrrhonize
+pyrrhotine
+pyrrhotism
+pyrrhotist
+pyrrhotite
+pyrrhous
+Pyrrhuloxia
+Pyrrhus
+pyrrodiazole
+pyrrol
+pyrrole
+pyrrolic
+pyrrolidine
+pyrrolidone
+pyrrolidyl
+pyrroline
+pyrrolylene
+pyrrophyllin
+pyrroporphyrin
+pyrrotriazole
+pyrroyl
+pyrryl
+pyrrylene
+Pyrula
+Pyrularia
+pyruline
+pyruloid
+Pyrus
+pyruvaldehyde
+pyruvate
+pyruvic
+pyruvil
+pyruvyl
+pyrylium
+Pythagorean
+Pythagoreanism
+Pythagoreanize
+Pythagoreanly
+Pythagoric
+Pythagorical
+Pythagorically
+Pythagorism
+Pythagorist
+Pythagorize
+Pythagorizer
+Pythia
+Pythiaceae
+Pythiacystis
+Pythiad
+Pythiambic
+Pythian
+Pythic
+Pythios
+Pythium
+Pythius
+pythogenesis
+pythogenetic
+pythogenic
+pythogenous
+python
+pythoness
+pythonic
+pythonical
+pythonid
+Pythonidae
+pythoniform
+Pythoninae
+pythonine
+pythonism
+Pythonissa
+pythonist
+pythonize
+pythonoid
+pythonomorph
+Pythonomorpha
+pythonomorphic
+pythonomorphous
+pyuria
+pyvuril
+pyx
+Pyxidanthera
+pyxidate
+pyxides
+pyxidium
+pyxie
+Pyxis
+pyxis
+Q
+q
+qasida
+qere
+qeri
+qintar
+Qoheleth
+qoph
+qua
+quab
+quabird
+quachil
+quack
+quackery
+quackhood
+quackish
+quackishly
+quackishness
+quackism
+quackle
+quacksalver
+quackster
+quacky
+quad
+quadded
+quaddle
+Quader
+Quadi
+quadmeter
+quadra
+quadrable
+quadragenarian
+quadragenarious
+Quadragesima
+quadragesimal
+quadragintesimal
+quadral
+quadrangle
+quadrangled
+quadrangular
+quadrangularly
+quadrangularness
+quadrangulate
+quadrans
+quadrant
+quadrantal
+quadrantes
+Quadrantid
+quadrantile
+quadrantlike
+quadrantly
+quadrat
+quadrate
+quadrated
+quadrateness
+quadratic
+quadratical
+quadratically
+quadratics
+Quadratifera
+quadratiferous
+quadratojugal
+quadratomandibular
+quadratosquamosal
+quadratrix
+quadratum
+quadrature
+quadratus
+quadrauricular
+quadrennia
+quadrennial
+quadrennially
+quadrennium
+quadriad
+quadrialate
+quadriannulate
+quadriarticulate
+quadriarticulated
+quadribasic
+quadric
+quadricapsular
+quadricapsulate
+quadricarinate
+quadricellular
+quadricentennial
+quadriceps
+quadrichord
+quadriciliate
+quadricinium
+quadricipital
+quadricone
+quadricorn
+quadricornous
+quadricostate
+quadricotyledonous
+quadricovariant
+quadricrescentic
+quadricrescentoid
+quadricuspid
+quadricuspidal
+quadricuspidate
+quadricycle
+quadricycler
+quadricyclist
+quadridentate
+quadridentated
+quadriderivative
+quadridigitate
+quadriennial
+quadriennium
+quadrienniumutile
+quadrifarious
+quadrifariously
+quadrifid
+quadrifilar
+quadrifocal
+quadrifoil
+quadrifoliate
+quadrifoliolate
+quadrifolious
+quadrifolium
+quadriform
+quadrifrons
+quadrifrontal
+quadrifurcate
+quadrifurcated
+quadrifurcation
+quadriga
+quadrigabled
+quadrigamist
+quadrigate
+quadrigatus
+quadrigeminal
+quadrigeminate
+quadrigeminous
+quadrigeminum
+quadrigenarious
+quadriglandular
+quadrihybrid
+quadrijugal
+quadrijugate
+quadrijugous
+quadrilaminar
+quadrilaminate
+quadrilateral
+quadrilaterally
+quadrilateralness
+quadrilingual
+quadriliteral
+quadrille
+quadrilled
+quadrillion
+quadrillionth
+quadrilobate
+quadrilobed
+quadrilocular
+quadriloculate
+quadrilogue
+quadrilogy
+quadrimembral
+quadrimetallic
+quadrimolecular
+quadrimum
+quadrinodal
+quadrinomial
+quadrinomical
+quadrinominal
+quadrinucleate
+quadrioxalate
+quadriparous
+quadripartite
+quadripartitely
+quadripartition
+quadripennate
+quadriphosphate
+quadriphyllous
+quadripinnate
+quadriplanar
+quadriplegia
+quadriplicate
+quadriplicated
+quadripolar
+quadripole
+quadriportico
+quadriporticus
+quadripulmonary
+quadriquadric
+quadriradiate
+quadrireme
+quadrisect
+quadrisection
+quadriseptate
+quadriserial
+quadrisetose
+quadrispiral
+quadristearate
+quadrisulcate
+quadrisulcated
+quadrisulphide
+quadrisyllabic
+quadrisyllabical
+quadrisyllable
+quadrisyllabous
+quadriternate
+quadritubercular
+quadrituberculate
+quadriurate
+quadrivalence
+quadrivalency
+quadrivalent
+quadrivalently
+quadrivalve
+quadrivalvular
+quadrivial
+quadrivious
+quadrivium
+quadrivoltine
+quadroon
+quadrual
+Quadrula
+quadrum
+Quadrumana
+quadrumanal
+quadrumane
+quadrumanous
+quadruped
+quadrupedal
+quadrupedan
+quadrupedant
+quadrupedantic
+quadrupedantical
+quadrupedate
+quadrupedation
+quadrupedism
+quadrupedous
+quadruplane
+quadruplator
+quadruple
+quadrupleness
+quadruplet
+quadruplex
+quadruplicate
+quadruplication
+quadruplicature
+quadruplicity
+quadruply
+quadrupole
+quaedam
+Quaequae
+quaesitum
+quaestor
+quaestorial
+quaestorian
+quaestorship
+quaestuary
+quaff
+quaffer
+quaffingly
+quag
+quagga
+quagginess
+quaggle
+quaggy
+quagmire
+quagmiry
+quahog
+quail
+quailberry
+quailery
+quailhead
+quaillike
+quaily
+quaint
+quaintance
+quaintise
+quaintish
+quaintly
+quaintness
+Quaitso
+quake
+quakeful
+quakeproof
+Quaker
+quaker
+quakerbird
+Quakerdom
+Quakeress
+Quakeric
+Quakerish
+Quakerishly
+Quakerishness
+Quakerism
+Quakerization
+Quakerize
+Quakerlet
+Quakerlike
+Quakerly
+Quakership
+Quakery
+quaketail
+quakiness
+quaking
+quakingly
+quaky
+quale
+qualifiable
+qualification
+qualificative
+qualificator
+qualificatory
+qualified
+qualifiedly
+qualifiedness
+qualifier
+qualify
+qualifyingly
+qualimeter
+qualitative
+qualitatively
+qualitied
+quality
+qualityless
+qualityship
+qualm
+qualminess
+qualmish
+qualmishly
+qualmishness
+qualmproof
+qualmy
+qualmyish
+qualtagh
+Quamasia
+Quamoclit
+quan
+quandary
+quandong
+quandy
+quannet
+quant
+quanta
+quantic
+quantical
+quantifiable
+quantifiably
+quantification
+quantifier
+quantify
+quantimeter
+quantitate
+quantitative
+quantitatively
+quantitativeness
+quantitied
+quantitive
+quantitively
+quantity
+quantivalence
+quantivalency
+quantivalent
+quantization
+quantize
+quantometer
+quantulum
+quantum
+Quapaw
+quaquaversal
+quaquaversally
+quar
+quarantinable
+quarantine
+quarantiner
+quaranty
+quardeel
+quare
+quarenden
+quarender
+quarentene
+quark
+quarl
+quarle
+quarred
+quarrel
+quarreled
+quarreler
+quarreling
+quarrelingly
+quarrelproof
+quarrelsome
+quarrelsomely
+quarrelsomeness
+quarriable
+quarried
+quarrier
+quarry
+quarryable
+quarrying
+quarryman
+quarrystone
+quart
+quartan
+quartane
+quartation
+quartenylic
+quarter
+quarterage
+quarterback
+quarterdeckish
+quartered
+quarterer
+quartering
+quarterization
+quarterland
+quarterly
+quarterman
+quartermaster
+quartermasterlike
+quartermastership
+quartern
+quarterpace
+quarters
+quartersaw
+quartersawed
+quarterspace
+quarterstaff
+quarterstetch
+quartet
+quartette
+quartetto
+quartful
+quartic
+quartile
+quartine
+quartiparous
+quarto
+Quartodeciman
+quartodecimanism
+quartole
+quartz
+quartzic
+quartziferous
+quartzite
+quartzitic
+quartzless
+quartzoid
+quartzose
+quartzous
+quartzy
+quash
+Quashee
+quashey
+quashy
+quasi
+quasijudicial
+Quasimodo
+quasky
+quassation
+quassative
+Quassia
+quassiin
+quassin
+quat
+quata
+quatch
+quatercentenary
+quatern
+quaternal
+quaternarian
+quaternarius
+quaternary
+quaternate
+quaternion
+quaternionic
+quaternionist
+quaternitarian
+quaternity
+quaters
+quatertenses
+quatorzain
+quatorze
+quatrain
+quatral
+quatrayle
+quatre
+quatrefeuille
+quatrefoil
+quatrefoiled
+quatrefoliated
+quatrible
+quatrin
+quatrino
+quatrocentism
+quatrocentist
+quatrocento
+Quatsino
+quattie
+quattrini
+quatuor
+quatuorvirate
+quauk
+quave
+quaver
+quaverer
+quavering
+quaveringly
+quaverous
+quavery
+quaverymavery
+quaw
+quawk
+quay
+quayage
+quayful
+quaylike
+quayman
+quayside
+quaysider
+qubba
+queach
+queachy
+queak
+queal
+quean
+queanish
+queasily
+queasiness
+queasom
+queasy
+quebrachamine
+quebrachine
+quebrachitol
+quebracho
+quebradilla
+Quechua
+Quechuan
+quedful
+queechy
+queen
+queencake
+queencraft
+queencup
+queendom
+queenfish
+queenhood
+queening
+queenite
+queenless
+queenlet
+queenlike
+queenliness
+queenly
+queenright
+queenroot
+queensberry
+queenship
+queenweed
+queenwood
+queer
+queerer
+queerish
+queerishness
+queerity
+queerly
+queerness
+queersome
+queery
+queest
+queesting
+queet
+queeve
+quegh
+quei
+queintise
+quelch
+Quelea
+quell
+queller
+quemado
+queme
+quemeful
+quemefully
+quemely
+quench
+quenchable
+quenchableness
+quencher
+quenchless
+quenchlessly
+quenchlessness
+quenelle
+quenselite
+quercetagetin
+quercetic
+quercetin
+quercetum
+quercic
+Querciflorae
+quercimeritrin
+quercin
+quercine
+quercinic
+quercitannic
+quercitannin
+quercite
+quercitin
+quercitol
+quercitrin
+quercitron
+quercivorous
+Quercus
+Querecho
+Querendi
+Querendy
+querent
+Queres
+querier
+queriman
+querimonious
+querimoniously
+querimoniousness
+querimony
+querist
+querken
+querl
+quern
+quernal
+Quernales
+quernstone
+querulent
+querulential
+querulist
+querulity
+querulosity
+querulous
+querulously
+querulousness
+query
+querying
+queryingly
+queryist
+quesited
+quesitive
+quest
+quester
+questeur
+questful
+questingly
+question
+questionability
+questionable
+questionableness
+questionably
+questionary
+questionee
+questioner
+questioningly
+questionist
+questionless
+questionlessly
+questionnaire
+questionous
+questionwise
+questman
+questor
+questorial
+questorship
+quet
+quetch
+quetenite
+quetzal
+queue
+quey
+Quiangan
+quiapo
+quib
+quibble
+quibbleproof
+quibbler
+quibblingly
+quiblet
+quica
+Quiche
+quick
+quickbeam
+quickborn
+quicken
+quickenance
+quickenbeam
+quickener
+quickfoot
+quickhatch
+quickhearted
+quickie
+quicklime
+quickly
+quickness
+quicksand
+quicksandy
+quickset
+quicksilver
+quicksilvering
+quicksilverish
+quicksilverishness
+quicksilvery
+quickstep
+quickthorn
+quickwork
+quid
+Quidae
+quiddative
+quidder
+Quiddist
+quiddit
+quidditative
+quidditatively
+quiddity
+quiddle
+quiddler
+quidnunc
+quiesce
+quiescence
+quiescency
+quiescent
+quiescently
+quiet
+quietable
+quieten
+quietener
+quieter
+quieting
+quietism
+quietist
+quietistic
+quietive
+quietlike
+quietly
+quietness
+quietsome
+quietude
+quietus
+quiff
+quiffing
+Quiina
+Quiinaceae
+quiinaceous
+quila
+quiles
+Quileute
+quilkin
+quill
+Quillagua
+quillai
+quillaic
+Quillaja
+quillaja
+quillback
+quilled
+quiller
+quillet
+quilleted
+quillfish
+quilling
+quilltail
+quillwork
+quillwort
+quilly
+quilt
+quilted
+quilter
+quilting
+Quimbaya
+Quimper
+quin
+quina
+quinacrine
+Quinaielt
+quinaldic
+quinaldine
+quinaldinic
+quinaldinium
+quinaldyl
+quinamicine
+quinamidine
+quinamine
+quinanisole
+quinaquina
+quinarian
+quinarius
+quinary
+quinate
+quinatoxine
+Quinault
+quinazoline
+quinazolyl
+quince
+quincentenary
+quincentennial
+quincewort
+quinch
+quincubital
+quincubitalism
+quincuncial
+quincuncially
+quincunx
+quincunxial
+quindecad
+quindecagon
+quindecangle
+quindecasyllabic
+quindecemvir
+quindecemvirate
+quindecennial
+quindecim
+quindecima
+quindecylic
+quindene
+quinetum
+quingentenary
+quinhydrone
+quinia
+quinible
+quinic
+quinicine
+quinidia
+quinidine
+quinin
+quinina
+quinine
+quininiazation
+quininic
+quininism
+quininize
+quiniretin
+quinisext
+quinisextine
+quinism
+quinite
+quinitol
+quinizarin
+quinize
+quink
+quinnat
+quinnet
+Quinnipiac
+quinoa
+quinocarbonium
+quinoform
+quinogen
+quinoid
+quinoidal
+quinoidation
+quinoidine
+quinol
+quinoline
+quinolinic
+quinolinium
+quinolinyl
+quinologist
+quinology
+quinolyl
+quinometry
+quinone
+quinonediimine
+quinonic
+quinonimine
+quinonization
+quinonize
+quinonoid
+quinonyl
+quinopyrin
+quinotannic
+quinotoxine
+quinova
+quinovatannic
+quinovate
+quinovic
+quinovin
+quinovose
+quinoxaline
+quinoxalyl
+quinoyl
+quinquagenarian
+quinquagenary
+Quinquagesima
+quinquagesimal
+quinquarticular
+Quinquatria
+Quinquatrus
+quinquecapsular
+quinquecostate
+quinquedentate
+quinquedentated
+quinquefarious
+quinquefid
+quinquefoliate
+quinquefoliated
+quinquefoliolate
+quinquegrade
+quinquejugous
+quinquelateral
+quinqueliteral
+quinquelobate
+quinquelobated
+quinquelobed
+quinquelocular
+quinqueloculine
+quinquenary
+quinquenerval
+quinquenerved
+quinquennalia
+quinquennia
+quinquenniad
+quinquennial
+quinquennialist
+quinquennially
+quinquennium
+quinquepartite
+quinquepedal
+quinquepedalian
+quinquepetaloid
+quinquepunctal
+quinquepunctate
+quinqueradial
+quinqueradiate
+quinquereme
+quinquertium
+quinquesect
+quinquesection
+quinqueseptate
+quinqueserial
+quinqueseriate
+quinquesyllabic
+quinquesyllable
+quinquetubercular
+quinquetuberculate
+quinquevalence
+quinquevalency
+quinquevalent
+quinquevalve
+quinquevalvous
+quinquevalvular
+quinqueverbal
+quinqueverbial
+quinquevir
+quinquevirate
+quinquiliteral
+quinquina
+quinquino
+quinse
+quinsied
+quinsy
+quinsyberry
+quinsywort
+quint
+quintad
+quintadena
+quintadene
+quintain
+quintal
+quintan
+quintant
+quintary
+quintato
+quinte
+quintelement
+quintennial
+quinternion
+quinteron
+quinteroon
+quintessence
+quintessential
+quintessentiality
+quintessentially
+quintessentiate
+quintet
+quintette
+quintetto
+quintic
+quintile
+Quintilis
+Quintillian
+quintillion
+quintillionth
+Quintin
+quintin
+quintiped
+Quintius
+quinto
+quintocubital
+quintocubitalism
+quintole
+quinton
+quintroon
+quintuple
+quintuplet
+quintuplicate
+quintuplication
+quintuplinerved
+quintupliribbed
+quintus
+quinuclidine
+quinyl
+quinze
+quinzieme
+quip
+quipful
+quipo
+quipper
+quippish
+quippishness
+quippy
+quipsome
+quipsomeness
+quipster
+quipu
+quira
+quire
+quirewise
+Quirinal
+Quirinalia
+quirinca
+quiritarian
+quiritary
+Quirite
+Quirites
+quirk
+quirkiness
+quirkish
+quirksey
+quirksome
+quirky
+quirl
+quirquincho
+quirt
+quis
+quisby
+quiscos
+quisle
+quisling
+Quisqualis
+quisqueite
+quisquilian
+quisquiliary
+quisquilious
+quisquous
+quisutsch
+quit
+quitch
+quitclaim
+quite
+Quitemoca
+Quiteno
+quitrent
+quits
+quittable
+quittance
+quitted
+quitter
+quittor
+Quitu
+quiver
+quivered
+quiverer
+quiverful
+quivering
+quiveringly
+quiverish
+quiverleaf
+quivery
+Quixote
+quixotic
+quixotical
+quixotically
+quixotism
+quixotize
+quixotry
+quiz
+quizzability
+quizzable
+quizzacious
+quizzatorial
+quizzee
+quizzer
+quizzery
+quizzical
+quizzicality
+quizzically
+quizzicalness
+quizzification
+quizzify
+quizziness
+quizzingly
+quizzish
+quizzism
+quizzity
+quizzy
+Qung
+quo
+quod
+quoddies
+quoddity
+quodlibet
+quodlibetal
+quodlibetarian
+quodlibetary
+quodlibetic
+quodlibetical
+quodlibetically
+quoilers
+quoin
+quoined
+quoining
+quoit
+quoiter
+quoitlike
+quoits
+quondam
+quondamly
+quondamship
+quoniam
+quop
+Quoratean
+quorum
+quot
+quota
+quotability
+quotable
+quotableness
+quotably
+quotation
+quotational
+quotationally
+quotationist
+quotative
+quote
+quotee
+quoteless
+quotennial
+quoter
+quoteworthy
+quoth
+quotha
+quotidian
+quotidianly
+quotidianness
+quotient
+quotiety
+quotingly
+quotity
+quotlibet
+quotum
+Qurti
+R
+r
+ra
+raad
+Raanan
+raash
+Rab
+rab
+raband
+rabanna
+rabat
+rabatine
+rabatte
+rabattement
+rabbanist
+rabbanite
+rabbet
+rabbeting
+rabbi
+rabbin
+rabbinate
+rabbindom
+Rabbinic
+rabbinic
+Rabbinica
+rabbinical
+rabbinically
+rabbinism
+rabbinist
+rabbinistic
+rabbinistical
+rabbinite
+rabbinize
+rabbinship
+rabbiship
+rabbit
+rabbitberry
+rabbiter
+rabbithearted
+rabbitlike
+rabbitmouth
+rabbitproof
+rabbitroot
+rabbitry
+rabbitskin
+rabbitweed
+rabbitwise
+rabbitwood
+rabbity
+rabble
+rabblelike
+rabblement
+rabbleproof
+rabbler
+rabblesome
+rabboni
+rabbonim
+Rabelaisian
+Rabelaisianism
+Rabelaism
+Rabi
+rabic
+rabid
+rabidity
+rabidly
+rabidness
+rabies
+rabietic
+rabific
+rabiform
+rabigenic
+Rabin
+rabinet
+rabirubia
+rabitic
+rabulistic
+rabulous
+raccoon
+raccoonberry
+raccroc
+race
+raceabout
+racebrood
+racecourse
+racegoer
+racegoing
+racelike
+racemate
+racemation
+raceme
+racemed
+racemic
+racemiferous
+racemiform
+racemism
+racemization
+racemize
+racemocarbonate
+racemocarbonic
+racemomethylate
+racemose
+racemosely
+racemous
+racemously
+racemule
+racemulose
+racer
+raceway
+rach
+rache
+Rachel
+rachial
+rachialgia
+rachialgic
+rachianalgesia
+Rachianectes
+rachianesthesia
+rachicentesis
+rachides
+rachidial
+rachidian
+rachiform
+Rachiglossa
+rachiglossate
+rachigraph
+rachilla
+rachiocentesis
+rachiococainize
+rachiocyphosis
+rachiodont
+rachiodynia
+rachiometer
+rachiomyelitis
+rachioparalysis
+rachioplegia
+rachioscoliosis
+rachiotome
+rachiotomy
+rachipagus
+rachis
+rachischisis
+rachitic
+rachitis
+rachitism
+rachitogenic
+rachitome
+rachitomous
+rachitomy
+Rachycentridae
+Rachycentron
+racial
+racialism
+racialist
+raciality
+racialization
+racialize
+racially
+racily
+raciness
+racing
+racinglike
+racism
+racist
+rack
+rackabones
+rackan
+rackboard
+racker
+racket
+racketeer
+racketeering
+racketer
+racketing
+racketlike
+racketproof
+racketry
+rackett
+rackettail
+rackety
+rackful
+racking
+rackingly
+rackle
+rackless
+rackmaster
+rackproof
+rackrentable
+rackway
+rackwork
+racloir
+racon
+raconteur
+racoon
+Racovian
+racy
+rad
+rada
+radar
+radarman
+radarscope
+raddle
+raddleman
+raddlings
+radectomy
+Radek
+radiability
+radiable
+radial
+radiale
+radialia
+radiality
+radialization
+radialize
+radially
+radian
+radiance
+radiancy
+radiant
+radiantly
+Radiata
+radiate
+radiated
+radiately
+radiateness
+radiatics
+radiatiform
+radiation
+radiational
+radiative
+radiatopatent
+radiatoporose
+radiatoporous
+radiator
+radiatory
+radiatostriate
+radiatosulcate
+radiature
+radical
+radicalism
+radicality
+radicalization
+radicalize
+radically
+radicalness
+radicand
+radicant
+radicate
+radicated
+radicating
+radication
+radicel
+radices
+radicicola
+radicicolous
+radiciferous
+radiciflorous
+radiciform
+radicivorous
+radicle
+radicolous
+radicose
+Radicula
+radicular
+radicule
+radiculectomy
+radiculitis
+radiculose
+radiectomy
+radiescent
+radiferous
+radii
+radio
+radioacoustics
+radioactinium
+radioactivate
+radioactive
+radioactively
+radioactivity
+radioamplifier
+radioanaphylaxis
+radioautograph
+radioautographic
+radioautography
+radiobicipital
+radiobroadcast
+radiobroadcaster
+radiobroadcasting
+radiobserver
+radiocarbon
+radiocarpal
+radiocast
+radiocaster
+radiochemical
+radiochemistry
+radiocinematograph
+radioconductor
+radiode
+radiodermatitis
+radiodetector
+radiodiagnosis
+radiodigital
+radiodontia
+radiodontic
+radiodontist
+radiodynamic
+radiodynamics
+radioelement
+radiogenic
+radiogoniometer
+radiogoniometric
+radiogoniometry
+radiogram
+radiograph
+radiographer
+radiographic
+radiographical
+radiographically
+radiography
+radiohumeral
+radioisotope
+Radiolaria
+radiolarian
+radiolead
+radiolite
+Radiolites
+radiolitic
+Radiolitidae
+radiolocation
+radiolocator
+radiologic
+radiological
+radiologist
+radiology
+radiolucency
+radiolucent
+radioluminescence
+radioluminescent
+radioman
+radiomedial
+radiometallography
+radiometeorograph
+radiometer
+radiometric
+radiometrically
+radiometry
+radiomicrometer
+radiomovies
+radiomuscular
+radionecrosis
+radioneuritis
+radionics
+radiopacity
+radiopalmar
+radiopaque
+radiopelvimetry
+radiophare
+radiophone
+radiophonic
+radiophony
+radiophosphorus
+radiophotograph
+radiophotography
+radiopraxis
+radioscope
+radioscopic
+radioscopical
+radioscopy
+radiosensibility
+radiosensitive
+radiosensitivity
+radiosonde
+radiosonic
+radiostereoscopy
+radiosurgery
+radiosurgical
+radiosymmetrical
+radiotechnology
+radiotelegram
+radiotelegraph
+radiotelegraphic
+radiotelegraphy
+radiotelephone
+radiotelephonic
+radiotelephony
+radioteria
+radiothallium
+radiotherapeutic
+radiotherapeutics
+radiotherapeutist
+radiotherapist
+radiotherapy
+radiothermy
+radiothorium
+radiotoxemia
+radiotransparency
+radiotransparent
+radiotrician
+Radiotron
+radiotropic
+radiotropism
+radiovision
+radish
+radishlike
+radium
+radiumization
+radiumize
+radiumlike
+radiumproof
+radiumtherapy
+radius
+radix
+radknight
+radman
+radome
+radon
+radsimir
+radula
+radulate
+raduliferous
+raduliform
+Rafael
+Rafe
+raff
+Raffaelesque
+raffe
+raffee
+raffery
+raffia
+raffinase
+raffinate
+raffing
+raffinose
+raffish
+raffishly
+raffishness
+raffle
+raffler
+Rafflesia
+rafflesia
+Rafflesiaceae
+rafflesiaceous
+Rafik
+raft
+raftage
+rafter
+raftiness
+raftlike
+raftman
+raftsman
+rafty
+rag
+raga
+ragabash
+ragabrash
+ragamuffin
+ragamuffinism
+ragamuffinly
+rage
+rageful
+ragefully
+rageless
+rageous
+rageously
+rageousness
+rageproof
+rager
+ragesome
+ragfish
+ragged
+raggedly
+raggedness
+raggedy
+raggee
+ragger
+raggery
+raggety
+raggil
+raggily
+ragging
+raggle
+raggled
+raggy
+raghouse
+Raghu
+raging
+ragingly
+raglan
+raglanite
+raglet
+raglin
+ragman
+Ragnar
+ragout
+ragpicker
+ragseller
+ragshag
+ragsorter
+ragstone
+ragtag
+ragtime
+ragtimer
+ragtimey
+ragule
+raguly
+ragweed
+ragwort
+rah
+Rahanwin
+rahdar
+rahdaree
+Rahul
+Raia
+raia
+Raiae
+raid
+raider
+raidproof
+Raif
+Raiidae
+raiiform
+rail
+railage
+railbird
+railer
+railhead
+railing
+railingly
+raillery
+railless
+raillike
+railly
+railman
+railroad
+railroadana
+railroader
+railroadiana
+railroading
+railroadish
+railroadship
+railway
+railwaydom
+railwayless
+Raimannia
+raiment
+raimentless
+rain
+rainband
+rainbird
+rainbound
+rainbow
+rainbowlike
+rainbowweed
+rainbowy
+rainburst
+raincoat
+raindrop
+Rainer
+rainer
+rainfall
+rainfowl
+rainful
+rainily
+raininess
+rainless
+rainlessness
+rainlight
+rainproof
+rainproofer
+rainspout
+rainstorm
+raintight
+rainwash
+rainworm
+rainy
+raioid
+Rais
+rais
+raisable
+raise
+raised
+raiseman
+raiser
+raisin
+raising
+raisiny
+Raj
+raj
+Raja
+raja
+Rajah
+rajah
+Rajarshi
+rajaship
+Rajasthani
+rajbansi
+Rajeev
+Rajendra
+Rajesh
+Rajidae
+Rajiv
+Rajput
+rakan
+rake
+rakeage
+rakeful
+rakehell
+rakehellish
+rakehelly
+raker
+rakery
+rakesteel
+rakestele
+rakh
+Rakhal
+raki
+rakily
+raking
+rakish
+rakishly
+rakishness
+rakit
+rakshasa
+raku
+Ralf
+rallentando
+ralliance
+Rallidae
+rallier
+ralliform
+Rallinae
+ralline
+Rallus
+rally
+Ralph
+ralph
+ralstonite
+Ram
+ram
+Rama
+ramada
+Ramadoss
+ramage
+Ramaism
+Ramaite
+ramal
+Raman
+Ramanan
+ramanas
+ramarama
+ramass
+ramate
+rambeh
+ramberge
+ramble
+rambler
+rambling
+ramblingly
+ramblingness
+Rambo
+rambong
+rambooze
+Rambouillet
+rambunctious
+rambutan
+ramdohrite
+rame
+rameal
+Ramean
+ramed
+ramekin
+ramellose
+rament
+ramentaceous
+ramental
+ramentiferous
+ramentum
+rameous
+ramequin
+Rameses
+Rameseum
+Ramesh
+Ramessid
+Ramesside
+ramet
+ramex
+ramfeezled
+ramgunshoch
+ramhead
+ramhood
+rami
+ramicorn
+ramie
+ramiferous
+ramificate
+ramification
+ramified
+ramiflorous
+ramiform
+ramify
+ramigerous
+Ramillie
+Ramillied
+ramiparous
+Ramiro
+ramisection
+ramisectomy
+Ramism
+Ramist
+Ramistical
+ramlike
+ramline
+rammack
+rammel
+rammelsbergite
+rammer
+rammerman
+rammish
+rammishly
+rammishness
+rammy
+Ramneek
+Ramnenses
+Ramnes
+Ramon
+Ramona
+Ramoosii
+ramose
+ramosely
+ramosity
+ramosopalmate
+ramosopinnate
+ramososubdivided
+ramous
+ramp
+rampacious
+rampaciously
+rampage
+rampageous
+rampageously
+rampageousness
+rampager
+rampagious
+rampancy
+rampant
+rampantly
+rampart
+ramped
+ramper
+Ramphastidae
+Ramphastides
+Ramphastos
+rampick
+rampike
+ramping
+rampingly
+rampion
+rampire
+rampler
+ramplor
+rampsman
+ramrace
+ramrod
+ramroddy
+ramscallion
+ramsch
+Ramsey
+ramshackle
+ramshackled
+ramshackleness
+ramshackly
+ramson
+ramstam
+ramtil
+ramular
+ramule
+ramuliferous
+ramulose
+ramulous
+ramulus
+ramus
+ramuscule
+Ramusi
+Ran
+ran
+Rana
+rana
+ranal
+Ranales
+ranarian
+ranarium
+Ranatra
+rance
+rancel
+rancellor
+rancelman
+rancer
+rancescent
+ranch
+ranche
+rancher
+rancheria
+ranchero
+ranchless
+ranchman
+rancho
+ranchwoman
+rancid
+rancidification
+rancidify
+rancidity
+rancidly
+rancidness
+rancor
+rancorous
+rancorously
+rancorousness
+rancorproof
+Rand
+rand
+Randal
+Randall
+Randallite
+randan
+randannite
+Randell
+randem
+rander
+Randia
+randing
+randir
+Randite
+randle
+Randolph
+random
+randomish
+randomization
+randomize
+randomly
+randomness
+randomwise
+Randy
+randy
+rane
+Ranella
+Ranere
+rang
+rangatira
+range
+ranged
+rangeless
+rangeman
+ranger
+rangership
+rangework
+rangey
+Rangifer
+rangiferine
+ranginess
+ranging
+rangle
+rangler
+rangy
+rani
+ranid
+Ranidae
+raniferous
+raniform
+Ranina
+Raninae
+ranine
+raninian
+ranivorous
+Ranjit
+rank
+ranked
+ranker
+rankish
+rankle
+rankless
+ranklingly
+rankly
+rankness
+ranksman
+rankwise
+rann
+rannel
+rannigal
+ranny
+Ranquel
+ransack
+ransacker
+ransackle
+ransel
+ranselman
+ransom
+ransomable
+ransomer
+ransomfree
+ransomless
+ranstead
+rant
+rantan
+rantankerous
+rantepole
+ranter
+Ranterism
+ranting
+rantingly
+rantipole
+rantock
+ranty
+ranula
+ranular
+Ranunculaceae
+ranunculaceous
+Ranunculales
+ranunculi
+Ranunculus
+Ranzania
+Raoulia
+rap
+Rapaces
+rapaceus
+rapacious
+rapaciously
+rapaciousness
+rapacity
+rapakivi
+Rapallo
+Rapanea
+Rapateaceae
+rapateaceous
+rape
+rapeful
+raper
+rapeseed
+Raphael
+Raphaelesque
+Raphaelic
+Raphaelism
+Raphaelite
+Raphaelitism
+raphania
+Raphanus
+raphany
+raphe
+Raphia
+raphide
+raphides
+raphidiferous
+raphidiid
+Raphidiidae
+Raphidodea
+Raphidoidea
+Raphiolepis
+raphis
+rapic
+rapid
+rapidity
+rapidly
+rapidness
+rapier
+rapiered
+rapillo
+rapine
+rapiner
+raping
+rapinic
+rapist
+raploch
+rappage
+rapparee
+rappe
+rappel
+rapper
+rapping
+Rappist
+rappist
+Rappite
+rapport
+rapscallion
+rapscallionism
+rapscallionly
+rapscallionry
+rapt
+raptatorial
+raptatory
+raptly
+raptness
+raptor
+Raptores
+raptorial
+raptorious
+raptril
+rapture
+raptured
+raptureless
+rapturist
+rapturize
+rapturous
+rapturously
+rapturousness
+raptury
+raptus
+rare
+rarebit
+rarefaction
+rarefactional
+rarefactive
+rarefiable
+rarefication
+rarefier
+rarefy
+rarely
+rareness
+rareripe
+Rareyfy
+rariconstant
+rarish
+rarity
+Rarotongan
+ras
+rasa
+Rasalas
+Rasalhague
+rasamala
+rasant
+rascacio
+rascal
+rascaldom
+rascaless
+rascalion
+rascalism
+rascality
+rascalize
+rascallike
+rascallion
+rascally
+rascalry
+rascalship
+rasceta
+rascette
+rase
+rasen
+Rasenna
+raser
+rasgado
+rash
+rasher
+rashful
+rashing
+rashlike
+rashly
+rashness
+Rashti
+rasion
+Raskolnik
+Rasores
+rasorial
+rasp
+raspatorium
+raspatory
+raspberriade
+raspberry
+raspberrylike
+rasped
+rasper
+rasping
+raspingly
+raspingness
+raspings
+raspish
+raspite
+raspy
+rasse
+Rasselas
+rassle
+Rastaban
+raster
+rastik
+rastle
+Rastus
+rasure
+rat
+rata
+ratability
+ratable
+ratableness
+ratably
+ratafee
+ratafia
+ratal
+ratanhia
+rataplan
+ratbite
+ratcatcher
+ratcatching
+ratch
+ratchel
+ratchelly
+ratcher
+ratchet
+ratchetlike
+ratchety
+ratching
+ratchment
+rate
+rated
+ratel
+rateless
+ratement
+ratepayer
+ratepaying
+rater
+ratfish
+rath
+rathe
+rathed
+rathely
+ratheness
+rather
+ratherest
+ratheripe
+ratherish
+ratherly
+rathest
+rathite
+Rathnakumar
+rathole
+rathskeller
+raticidal
+raticide
+ratification
+ratificationist
+ratifier
+ratify
+ratihabition
+ratine
+rating
+ratio
+ratiocinant
+ratiocinate
+ratiocination
+ratiocinative
+ratiocinator
+ratiocinatory
+ratiometer
+ration
+rationable
+rationably
+rational
+rationale
+rationalism
+rationalist
+rationalistic
+rationalistical
+rationalistically
+rationalisticism
+rationality
+rationalizable
+rationalization
+rationalize
+rationalizer
+rationally
+rationalness
+rationate
+rationless
+rationment
+Ratitae
+ratite
+ratitous
+ratlike
+ratline
+ratliner
+ratoon
+ratooner
+ratproof
+ratsbane
+ratskeller
+rattage
+rattail
+rattan
+ratteen
+ratten
+rattener
+ratter
+rattery
+ratti
+rattinet
+rattish
+rattle
+rattlebag
+rattlebones
+rattlebox
+rattlebrain
+rattlebrained
+rattlebush
+rattled
+rattlehead
+rattleheaded
+rattlejack
+rattlemouse
+rattlenut
+rattlepate
+rattlepated
+rattlepod
+rattleproof
+rattler
+rattleran
+rattleroot
+rattlertree
+rattles
+rattleskull
+rattleskulled
+rattlesnake
+rattlesome
+rattletrap
+rattleweed
+rattlewort
+rattling
+rattlingly
+rattlingness
+rattly
+ratton
+rattoner
+rattrap
+Rattus
+ratty
+ratwa
+ratwood
+raucid
+raucidity
+raucity
+raucous
+raucously
+raucousness
+raught
+raugrave
+rauk
+raukle
+Raul
+rauli
+raun
+raunge
+raupo
+rauque
+Rauraci
+Raurici
+Rauwolfia
+ravage
+ravagement
+ravager
+rave
+ravehook
+raveinelike
+ravel
+raveler
+ravelin
+raveling
+ravelly
+ravelment
+ravelproof
+raven
+Ravenala
+ravendom
+ravenduck
+Ravenelia
+ravener
+ravenhood
+ravening
+ravenish
+ravenlike
+ravenous
+ravenously
+ravenousness
+ravenry
+ravens
+Ravensara
+ravensara
+ravenstone
+ravenwise
+raver
+Ravi
+ravigote
+ravin
+ravinate
+Ravindran
+Ravindranath
+ravine
+ravined
+ravinement
+raviney
+raving
+ravingly
+ravioli
+ravish
+ravishedly
+ravisher
+ravishing
+ravishingly
+ravishment
+ravison
+ravissant
+raw
+rawboned
+rawbones
+rawhead
+rawhide
+rawhider
+rawish
+rawishness
+rawness
+rax
+Ray
+ray
+raya
+rayage
+Rayan
+rayed
+rayful
+rayless
+raylessness
+raylet
+Raymond
+rayon
+rayonnance
+rayonnant
+raze
+razee
+razer
+razoo
+razor
+razorable
+razorback
+razorbill
+razoredge
+razorless
+razormaker
+razormaking
+razorman
+razorstrop
+Razoumofskya
+razz
+razzia
+razzly
+re
+rea
+reaal
+reabandon
+reabolish
+reabolition
+reabridge
+reabsence
+reabsent
+reabsolve
+reabsorb
+reabsorption
+reabuse
+reacceptance
+reaccess
+reaccession
+reacclimatization
+reacclimatize
+reaccommodate
+reaccompany
+reaccomplish
+reaccomplishment
+reaccord
+reaccost
+reaccount
+reaccredit
+reaccrue
+reaccumulate
+reaccumulation
+reaccusation
+reaccuse
+reaccustom
+reacetylation
+reach
+reachable
+reacher
+reachieve
+reachievement
+reaching
+reachless
+reachy
+reacidification
+reacidify
+reacknowledge
+reacknowledgment
+reacquaint
+reacquaintance
+reacquire
+reacquisition
+react
+reactance
+reactant
+reaction
+reactional
+reactionally
+reactionariness
+reactionarism
+reactionarist
+reactionary
+reactionaryism
+reactionism
+reactionist
+reactivate
+reactivation
+reactive
+reactively
+reactiveness
+reactivity
+reactological
+reactology
+reactor
+reactualization
+reactualize
+reactuate
+read
+readability
+readable
+readableness
+readably
+readapt
+readaptability
+readaptable
+readaptation
+readaptive
+readaptiveness
+readd
+readdition
+readdress
+reader
+readerdom
+readership
+readhere
+readhesion
+readily
+readiness
+reading
+readingdom
+readjourn
+readjournment
+readjudicate
+readjust
+readjustable
+readjuster
+readjustment
+readmeasurement
+readminister
+readmiration
+readmire
+readmission
+readmit
+readmittance
+readopt
+readoption
+readorn
+readvance
+readvancement
+readvent
+readventure
+readvertency
+readvertise
+readvertisement
+readvise
+readvocate
+ready
+reaeration
+reaffect
+reaffection
+reaffiliate
+reaffiliation
+reaffirm
+reaffirmance
+reaffirmation
+reaffirmer
+reafflict
+reafford
+reafforest
+reafforestation
+reaffusion
+reagency
+reagent
+reaggravate
+reaggravation
+reaggregate
+reaggregation
+reaggressive
+reagin
+reagitate
+reagitation
+reagree
+reagreement
+reak
+Real
+real
+realarm
+reales
+realest
+realgar
+realienate
+realienation
+realign
+realignment
+realism
+realist
+realistic
+realistically
+realisticize
+reality
+realive
+realizability
+realizable
+realizableness
+realizably
+realization
+realize
+realizer
+realizing
+realizingly
+reallegation
+reallege
+reallegorize
+realliance
+reallocate
+reallocation
+reallot
+reallotment
+reallow
+reallowance
+reallude
+reallusion
+really
+realm
+realmless
+realmlet
+realness
+realter
+realteration
+realtor
+realty
+ream
+reamage
+reamalgamate
+reamalgamation
+reamass
+reambitious
+reamend
+reamendment
+reamer
+reamerer
+reaminess
+reamputation
+reamuse
+reamy
+reanalysis
+reanalyze
+reanchor
+reanimalize
+reanimate
+reanimation
+reanneal
+reannex
+reannexation
+reannotate
+reannounce
+reannouncement
+reannoy
+reannoyance
+reanoint
+reanswer
+reanvil
+reanxiety
+reap
+reapable
+reapdole
+reaper
+reapologize
+reapology
+reapparel
+reapparition
+reappeal
+reappear
+reappearance
+reappease
+reapplaud
+reapplause
+reappliance
+reapplicant
+reapplication
+reapplier
+reapply
+reappoint
+reappointment
+reapportion
+reapportionment
+reapposition
+reappraisal
+reappraise
+reappraisement
+reappreciate
+reappreciation
+reapprehend
+reapprehension
+reapproach
+reapprobation
+reappropriate
+reappropriation
+reapproval
+reapprove
+rear
+rearbitrate
+rearbitration
+rearer
+reargue
+reargument
+rearhorse
+rearisal
+rearise
+rearling
+rearm
+rearmament
+rearmost
+rearousal
+rearouse
+rearrange
+rearrangeable
+rearrangement
+rearranger
+rearray
+rearrest
+rearrival
+rearrive
+rearward
+rearwardly
+rearwardness
+rearwards
+reascend
+reascendancy
+reascendant
+reascendency
+reascendent
+reascension
+reascensional
+reascent
+reascertain
+reascertainment
+reashlar
+reasiness
+reask
+reason
+reasonability
+reasonable
+reasonableness
+reasonably
+reasoned
+reasonedly
+reasoner
+reasoning
+reasoningly
+reasonless
+reasonlessly
+reasonlessness
+reasonproof
+reaspire
+reassail
+reassault
+reassay
+reassemblage
+reassemble
+reassembly
+reassent
+reassert
+reassertion
+reassertor
+reassess
+reassessment
+reasseverate
+reassign
+reassignation
+reassignment
+reassimilate
+reassimilation
+reassist
+reassistance
+reassociate
+reassociation
+reassort
+reassortment
+reassume
+reassumption
+reassurance
+reassure
+reassured
+reassuredly
+reassurement
+reassurer
+reassuring
+reassuringly
+reastiness
+reastonish
+reastonishment
+reastray
+reasty
+reasy
+reattach
+reattachment
+reattack
+reattain
+reattainment
+reattempt
+reattend
+reattendance
+reattention
+reattentive
+reattest
+reattire
+reattract
+reattraction
+reattribute
+reattribution
+reatus
+reaudit
+reauthenticate
+reauthentication
+reauthorization
+reauthorize
+reavail
+reavailable
+reave
+reaver
+reavoid
+reavoidance
+reavouch
+reavow
+reawait
+reawake
+reawaken
+reawakening
+reawakenment
+reaward
+reaware
+reb
+rebab
+reback
+rebag
+rebait
+rebake
+rebalance
+rebale
+reballast
+reballot
+reban
+rebandage
+rebanish
+rebanishment
+rebankrupt
+rebankruptcy
+rebaptism
+rebaptismal
+rebaptization
+rebaptize
+rebaptizer
+rebar
+rebarbarization
+rebarbarize
+rebarbative
+rebargain
+rebase
+rebasis
+rebatable
+rebate
+rebateable
+rebatement
+rebater
+rebathe
+rebato
+rebawl
+rebeamer
+rebear
+rebeat
+rebeautify
+rebec
+Rebecca
+Rebeccaism
+Rebeccaites
+rebeck
+rebecome
+rebed
+rebeg
+rebeget
+rebeggar
+rebegin
+rebeginner
+rebeginning
+rebeguile
+rebehold
+Rebekah
+rebel
+rebeldom
+rebelief
+rebelieve
+rebeller
+rebellike
+rebellion
+rebellious
+rebelliously
+rebelliousness
+rebellow
+rebelly
+rebelong
+rebelove
+rebelproof
+rebemire
+rebend
+rebenediction
+rebenefit
+rebeset
+rebesiege
+rebestow
+rebestowal
+rebetake
+rebetray
+rebewail
+rebia
+rebias
+rebid
+rebill
+rebillet
+rebilling
+rebind
+rebirth
+rebite
+reblade
+reblame
+reblast
+rebleach
+reblend
+rebless
+reblock
+rebloom
+reblossom
+reblot
+reblow
+reblue
+rebluff
+reblunder
+reboant
+reboantic
+reboard
+reboast
+rebob
+reboil
+reboiler
+reboise
+reboisement
+rebold
+rebolt
+rebone
+rebook
+rebop
+rebore
+reborn
+reborrow
+rebottle
+Reboulia
+rebounce
+rebound
+reboundable
+rebounder
+reboundingness
+rebourbonize
+rebox
+rebrace
+rebraid
+rebranch
+rebrand
+rebrandish
+rebreathe
+rebreed
+rebrew
+rebribe
+rebrick
+rebridge
+rebring
+rebringer
+rebroach
+rebroadcast
+rebronze
+rebrown
+rebrush
+rebrutalize
+rebubble
+rebuckle
+rebud
+rebudget
+rebuff
+rebuffable
+rebuffably
+rebuffet
+rebuffproof
+rebuild
+rebuilder
+rebuilt
+rebukable
+rebuke
+rebukeable
+rebukeful
+rebukefully
+rebukefulness
+rebukeproof
+rebuker
+rebukingly
+rebulk
+rebunch
+rebundle
+rebunker
+rebuoy
+rebuoyage
+reburden
+reburgeon
+reburial
+reburn
+reburnish
+reburst
+rebury
+rebus
+rebush
+rebusy
+rebut
+rebute
+rebutment
+rebuttable
+rebuttal
+rebutter
+rebutton
+rebuy
+recable
+recadency
+recage
+recalcination
+recalcine
+recalcitrance
+recalcitrant
+recalcitrate
+recalcitration
+recalculate
+recalculation
+recalesce
+recalescence
+recalescent
+recalibrate
+recalibration
+recalk
+recall
+recallable
+recallist
+recallment
+recampaign
+recancel
+recancellation
+recandescence
+recandidacy
+recant
+recantation
+recanter
+recantingly
+recanvas
+recap
+recapacitate
+recapitalization
+recapitalize
+recapitulate
+recapitulation
+recapitulationist
+recapitulative
+recapitulator
+recapitulatory
+recappable
+recapper
+recaption
+recaptivate
+recaptivation
+recaptor
+recapture
+recapturer
+recarbon
+recarbonate
+recarbonation
+recarbonization
+recarbonize
+recarbonizer
+recarburization
+recarburize
+recarburizer
+recarnify
+recarpet
+recarriage
+recarrier
+recarry
+recart
+recarve
+recase
+recash
+recasket
+recast
+recaster
+recasting
+recatalogue
+recatch
+recaulescence
+recausticize
+recce
+recco
+reccy
+recede
+recedence
+recedent
+receder
+receipt
+receiptable
+receiptless
+receiptor
+receipts
+receivability
+receivable
+receivables
+receivablness
+receival
+receive
+received
+receivedness
+receiver
+receivership
+recelebrate
+recelebration
+recement
+recementation
+recency
+recense
+recension
+recensionist
+recensor
+recensure
+recensus
+recent
+recenter
+recently
+recentness
+recentralization
+recentralize
+recentre
+recept
+receptacle
+receptacular
+receptaculite
+Receptaculites
+receptaculitid
+Receptaculitidae
+receptaculitoid
+receptaculum
+receptant
+receptibility
+receptible
+reception
+receptionism
+receptionist
+receptitious
+receptive
+receptively
+receptiveness
+receptivity
+receptor
+receptoral
+receptorial
+receptual
+receptually
+recercelee
+recertificate
+recertify
+recess
+recesser
+recession
+recessional
+recessionary
+recessive
+recessively
+recessiveness
+recesslike
+recessor
+Rechabite
+Rechabitism
+rechafe
+rechain
+rechal
+rechallenge
+rechamber
+rechange
+rechant
+rechaos
+rechar
+recharge
+recharter
+rechase
+rechaser
+rechasten
+rechaw
+recheat
+recheck
+recheer
+recherche
+rechew
+rechip
+rechisel
+rechoose
+rechristen
+rechuck
+rechurn
+recidivation
+recidive
+recidivism
+recidivist
+recidivistic
+recidivity
+recidivous
+recipe
+recipiangle
+recipience
+recipiency
+recipiend
+recipiendary
+recipient
+recipiomotor
+reciprocable
+reciprocal
+reciprocality
+reciprocalize
+reciprocally
+reciprocalness
+reciprocate
+reciprocation
+reciprocative
+reciprocator
+reciprocatory
+reciprocitarian
+reciprocity
+recircle
+recirculate
+recirculation
+recision
+recission
+recissory
+recitable
+recital
+recitalist
+recitatif
+recitation
+recitationalism
+recitationist
+recitative
+recitatively
+recitativical
+recitativo
+recite
+recitement
+reciter
+recivilization
+recivilize
+reck
+reckla
+reckless
+recklessly
+recklessness
+reckling
+reckon
+reckonable
+reckoner
+reckoning
+reclaim
+reclaimable
+reclaimableness
+reclaimably
+reclaimant
+reclaimer
+reclaimless
+reclaimment
+reclama
+reclamation
+reclang
+reclasp
+reclass
+reclassification
+reclassify
+reclean
+recleaner
+recleanse
+reclear
+reclearance
+reclimb
+reclinable
+reclinate
+reclinated
+reclination
+recline
+recliner
+reclose
+reclothe
+reclothing
+recluse
+reclusely
+recluseness
+reclusery
+reclusion
+reclusive
+reclusiveness
+reclusory
+recoach
+recoagulation
+recoal
+recoast
+recoat
+recock
+recoct
+recoction
+recode
+recodification
+recodify
+recogitate
+recogitation
+recognition
+recognitive
+recognitor
+recognitory
+recognizability
+recognizable
+recognizably
+recognizance
+recognizant
+recognize
+recognizedly
+recognizee
+recognizer
+recognizingly
+recognizor
+recognosce
+recohabitation
+recoil
+recoiler
+recoilingly
+recoilment
+recoin
+recoinage
+recoiner
+recoke
+recollapse
+recollate
+recollation
+Recollect
+recollectable
+recollected
+recollectedly
+recollectedness
+recollectible
+recollection
+recollective
+recollectively
+recollectiveness
+Recollet
+recolonization
+recolonize
+recolor
+recomb
+recombination
+recombine
+recomember
+recomfort
+recommand
+recommence
+recommencement
+recommencer
+recommend
+recommendability
+recommendable
+recommendableness
+recommendably
+recommendation
+recommendatory
+recommendee
+recommender
+recommission
+recommit
+recommitment
+recommittal
+recommunicate
+recommunion
+recompact
+recompare
+recomparison
+recompass
+recompel
+recompensable
+recompensate
+recompensation
+recompense
+recompenser
+recompensive
+recompete
+recompetition
+recompetitor
+recompilation
+recompile
+recompilement
+recomplain
+recomplaint
+recomplete
+recompletion
+recompliance
+recomplicate
+recomplication
+recomply
+recompose
+recomposer
+recomposition
+recompound
+recomprehend
+recomprehension
+recompress
+recompression
+recomputation
+recompute
+recon
+reconceal
+reconcealment
+reconcede
+reconceive
+reconcentrate
+reconcentration
+reconception
+reconcert
+reconcession
+reconcilability
+reconcilable
+reconcilableness
+reconcilably
+reconcile
+reconcilee
+reconcileless
+reconcilement
+reconciler
+reconciliability
+reconciliable
+reconciliate
+reconciliation
+reconciliative
+reconciliator
+reconciliatory
+reconciling
+reconcilingly
+reconclude
+reconclusion
+reconcoct
+reconcrete
+reconcur
+recondemn
+recondemnation
+recondensation
+recondense
+recondite
+reconditely
+reconditeness
+recondition
+recondole
+reconduct
+reconduction
+reconfer
+reconfess
+reconfide
+reconfine
+reconfinement
+reconfirm
+reconfirmation
+reconfiscate
+reconfiscation
+reconform
+reconfound
+reconfront
+reconfuse
+reconfusion
+recongeal
+recongelation
+recongest
+recongestion
+recongratulate
+recongratulation
+reconjoin
+reconjunction
+reconnaissance
+reconnect
+reconnection
+reconnoissance
+reconnoiter
+reconnoiterer
+reconnoiteringly
+reconnoitre
+reconnoitrer
+reconnoitringly
+reconquer
+reconqueror
+reconquest
+reconsecrate
+reconsecration
+reconsent
+reconsider
+reconsideration
+reconsign
+reconsignment
+reconsole
+reconsolidate
+reconsolidation
+reconstituent
+reconstitute
+reconstitution
+reconstruct
+reconstructed
+reconstruction
+reconstructional
+reconstructionary
+reconstructionist
+reconstructive
+reconstructiveness
+reconstructor
+reconstrue
+reconsult
+reconsultation
+recontact
+recontemplate
+recontemplation
+recontend
+recontest
+recontinuance
+recontinue
+recontract
+recontraction
+recontrast
+recontribute
+recontribution
+recontrivance
+recontrive
+recontrol
+reconvalesce
+reconvalescence
+reconvalescent
+reconvene
+reconvention
+reconventional
+reconverge
+reconverse
+reconversion
+reconvert
+reconvertible
+reconvey
+reconveyance
+reconvict
+reconviction
+reconvince
+reconvoke
+recook
+recool
+recooper
+recopper
+recopy
+recopyright
+record
+recordable
+recordant
+recordation
+recordative
+recordatively
+recordatory
+recordedly
+recorder
+recordership
+recording
+recordist
+recordless
+recork
+recorporification
+recorporify
+recorrect
+recorrection
+recorrupt
+recorruption
+recostume
+recounsel
+recount
+recountable
+recountal
+recountenance
+recounter
+recountless
+recoup
+recoupable
+recouper
+recouple
+recoupment
+recourse
+recover
+recoverability
+recoverable
+recoverableness
+recoverance
+recoveree
+recoverer
+recoveringly
+recoverless
+recoveror
+recovery
+recramp
+recrank
+recrate
+recreance
+recreancy
+recreant
+recreantly
+recreantness
+recrease
+recreate
+recreation
+recreational
+recreationist
+recreative
+recreatively
+recreativeness
+recreator
+recreatory
+recredit
+recrement
+recremental
+recrementitial
+recrementitious
+recrescence
+recrew
+recriminate
+recrimination
+recriminative
+recriminator
+recriminatory
+recriticize
+recroon
+recrop
+recross
+recrowd
+recrown
+recrucify
+recrudency
+recrudesce
+recrudescence
+recrudescency
+recrudescent
+recruit
+recruitable
+recruitage
+recruital
+recruitee
+recruiter
+recruithood
+recruiting
+recruitment
+recruity
+recrush
+recrusher
+recrystallization
+recrystallize
+rect
+recta
+rectal
+rectalgia
+rectally
+rectangle
+rectangled
+rectangular
+rectangularity
+rectangularly
+rectangularness
+rectangulate
+rectangulometer
+rectectomy
+recti
+rectifiable
+rectification
+rectificative
+rectificator
+rectificatory
+rectified
+rectifier
+rectify
+rectigrade
+Rectigraph
+rectilineal
+rectilineally
+rectilinear
+rectilinearism
+rectilinearity
+rectilinearly
+rectilinearness
+rectilineation
+rectinerved
+rection
+rectipetality
+rectirostral
+rectischiac
+rectiserial
+rectitic
+rectitis
+rectitude
+rectitudinous
+recto
+rectoabdominal
+rectocele
+rectoclysis
+rectococcygeal
+rectococcygeus
+rectocolitic
+rectocolonic
+rectocystotomy
+rectogenital
+rectopexy
+rectoplasty
+rector
+rectoral
+rectorate
+rectoress
+rectorial
+rectorrhaphy
+rectorship
+rectory
+rectoscope
+rectoscopy
+rectosigmoid
+rectostenosis
+rectostomy
+rectotome
+rectotomy
+rectovaginal
+rectovesical
+rectress
+rectricial
+rectrix
+rectum
+rectus
+recubant
+recubate
+recultivate
+recultivation
+recumbence
+recumbency
+recumbent
+recumbently
+recuperability
+recuperance
+recuperate
+recuperation
+recuperative
+recuperativeness
+recuperator
+recuperatory
+recur
+recure
+recureful
+recureless
+recurl
+recurrence
+recurrency
+recurrent
+recurrently
+recurrer
+recurring
+recurringly
+recurse
+recursion
+recursive
+recurtain
+recurvant
+recurvate
+recurvation
+recurvature
+recurve
+Recurvirostra
+recurvirostral
+Recurvirostridae
+recurvopatent
+recurvoternate
+recurvous
+recusance
+recusancy
+recusant
+recusation
+recusative
+recusator
+recuse
+recushion
+recussion
+recut
+recycle
+Red
+red
+redact
+redaction
+redactional
+redactor
+redactorial
+redamage
+redamnation
+redan
+redare
+redargue
+redargution
+redargutive
+redargutory
+redarken
+redarn
+redart
+redate
+redaub
+redawn
+redback
+redbait
+redbeard
+redbelly
+redberry
+redbill
+redbird
+redbone
+redbreast
+redbrush
+redbuck
+redbud
+redcap
+redcoat
+redd
+redden
+reddendo
+reddendum
+reddening
+redder
+redding
+reddingite
+reddish
+reddishness
+reddition
+reddleman
+reddock
+reddsman
+reddy
+rede
+redeal
+redebate
+redebit
+redeceive
+redecide
+redecimate
+redecision
+redeck
+redeclaration
+redeclare
+redecline
+redecorate
+redecoration
+redecrease
+redecussate
+rededicate
+rededication
+rededicatory
+rededuct
+rededuction
+redeed
+redeem
+redeemability
+redeemable
+redeemableness
+redeemably
+redeemer
+redeemeress
+redeemership
+redeemless
+redefault
+redefeat
+redefecate
+redefer
+redefiance
+redefine
+redefinition
+redeflect
+redefy
+redeify
+redelay
+redelegate
+redelegation
+redeliberate
+redeliberation
+redeliver
+redeliverance
+redeliverer
+redelivery
+redemand
+redemandable
+redemise
+redemolish
+redemonstrate
+redemonstration
+redemptible
+Redemptine
+redemption
+redemptional
+redemptioner
+Redemptionist
+redemptionless
+redemptive
+redemptively
+redemptor
+redemptorial
+Redemptorist
+redemptory
+redemptress
+redemptrice
+redenigrate
+redeny
+redepend
+redeploy
+redeployment
+redeposit
+redeposition
+redepreciate
+redepreciation
+redeprive
+rederivation
+redescend
+redescent
+redescribe
+redescription
+redesertion
+redeserve
+redesign
+redesignate
+redesignation
+redesire
+redesirous
+redesman
+redespise
+redetect
+redetention
+redetermination
+redetermine
+redevelop
+redeveloper
+redevelopment
+redevise
+redevote
+redevotion
+redeye
+redfin
+redfinch
+redfish
+redfoot
+redhead
+redheaded
+redheadedly
+redheadedness
+redhearted
+redhibition
+redhibitory
+redhoop
+redia
+redictate
+redictation
+redient
+redifferentiate
+redifferentiation
+redig
+redigest
+redigestion
+rediminish
+redingote
+redintegrate
+redintegration
+redintegrative
+redintegrator
+redip
+redipper
+redirect
+redirection
+redisable
+redisappear
+redisburse
+redisbursement
+redischarge
+rediscipline
+rediscount
+rediscourage
+rediscover
+rediscoverer
+rediscovery
+rediscuss
+rediscussion
+redisembark
+redismiss
+redispatch
+redispel
+redisperse
+redisplay
+redispose
+redisposition
+redispute
+redissect
+redissection
+redisseise
+redisseisin
+redisseisor
+redisseize
+redisseizin
+redisseizor
+redissoluble
+redissolution
+redissolvable
+redissolve
+redistend
+redistill
+redistillation
+redistiller
+redistinguish
+redistrain
+redistrainer
+redistribute
+redistributer
+redistribution
+redistributive
+redistributor
+redistributory
+redistrict
+redisturb
+redive
+rediversion
+redivert
+redivertible
+redivide
+redivision
+redivive
+redivivous
+redivivus
+redivorce
+redivorcement
+redivulge
+redivulgence
+redjacket
+redknees
+redleg
+redlegs
+redly
+redmouth
+redness
+redo
+redock
+redocket
+redolence
+redolency
+redolent
+redolently
+redominate
+redondilla
+redoom
+redouble
+redoublement
+redoubler
+redoubling
+redoubt
+redoubtable
+redoubtableness
+redoubtably
+redoubted
+redound
+redowa
+redox
+redpoll
+redraft
+redrag
+redrape
+redraw
+redrawer
+redream
+redredge
+redress
+redressable
+redressal
+redresser
+redressible
+redressive
+redressless
+redressment
+redressor
+redrill
+redrive
+redroot
+redry
+redsear
+redshank
+redshirt
+redskin
+redstart
+redstreak
+redtab
+redtail
+redthroat
+redtop
+redub
+redubber
+reduce
+reduceable
+reduceableness
+reduced
+reducement
+reducent
+reducer
+reducibility
+reducible
+reducibleness
+reducibly
+reducing
+reduct
+reductant
+reductase
+reductibility
+reduction
+reductional
+reductionism
+reductionist
+reductionistic
+reductive
+reductively
+reductor
+reductorial
+redue
+Redunca
+redundance
+redundancy
+redundant
+redundantly
+reduplicate
+reduplication
+reduplicative
+reduplicatively
+reduplicatory
+reduplicature
+reduviid
+Reduviidae
+reduvioid
+Reduvius
+redux
+redward
+redware
+redweed
+redwing
+redwithe
+redwood
+redye
+Ree
+ree
+reechy
+reed
+reedbird
+reedbuck
+reedbush
+reeded
+reeden
+reeder
+reediemadeasy
+reedily
+reediness
+reeding
+reedish
+reedition
+reedless
+reedlike
+reedling
+reedmaker
+reedmaking
+reedman
+reedplot
+reedwork
+reedy
+reef
+reefable
+reefer
+reefing
+reefy
+reek
+reeker
+reekingly
+reeky
+reel
+reelable
+reeled
+reeler
+reelingly
+reelrall
+reem
+reeming
+reemish
+reen
+reenge
+reeper
+Rees
+reese
+reeshle
+reesk
+reesle
+reest
+reester
+reestle
+reesty
+reet
+reetam
+reetle
+reeve
+reeveland
+reeveship
+ref
+reface
+refacilitate
+refall
+refallow
+refan
+refascinate
+refascination
+refashion
+refashioner
+refashionment
+refasten
+refathered
+refavor
+refect
+refection
+refectionary
+refectioner
+refective
+refectorarian
+refectorary
+refectorer
+refectorial
+refectorian
+refectory
+refederate
+refeed
+refeel
+refeign
+refel
+refence
+refer
+referable
+referee
+reference
+referenda
+referendal
+referendary
+referendaryship
+referendum
+referent
+referential
+referentially
+referently
+referment
+referral
+referrer
+referrible
+referribleness
+refertilization
+refertilize
+refetch
+refight
+refigure
+refill
+refillable
+refilm
+refilter
+refinable
+refinage
+refinance
+refind
+refine
+refined
+refinedly
+refinedness
+refinement
+refiner
+refinery
+refinger
+refining
+refiningly
+refinish
+refire
+refit
+refitment
+refix
+refixation
+refixture
+reflag
+reflagellate
+reflame
+reflash
+reflate
+reflation
+reflationism
+reflect
+reflectance
+reflected
+reflectedly
+reflectedness
+reflectent
+reflecter
+reflectibility
+reflectible
+reflecting
+reflectingly
+reflection
+reflectional
+reflectionist
+reflectionless
+reflective
+reflectively
+reflectiveness
+reflectivity
+reflectometer
+reflectometry
+reflector
+reflectoscope
+refledge
+reflee
+reflex
+reflexed
+reflexibility
+reflexible
+reflexism
+reflexive
+reflexively
+reflexiveness
+reflexivity
+reflexly
+reflexness
+reflexogenous
+reflexological
+reflexologist
+reflexology
+refling
+refloat
+refloatation
+reflog
+reflood
+refloor
+reflorescence
+reflorescent
+reflourish
+reflourishment
+reflow
+reflower
+refluctuation
+refluence
+refluency
+refluent
+reflush
+reflux
+refluxed
+refly
+refocillate
+refocillation
+refocus
+refold
+refoment
+refont
+refool
+refoot
+reforbid
+reforce
+reford
+reforecast
+reforest
+reforestation
+reforestization
+reforestize
+reforestment
+reforfeit
+reforfeiture
+reforge
+reforger
+reforget
+reforgive
+reform
+reformability
+reformable
+reformableness
+reformado
+reformandum
+Reformati
+reformation
+reformational
+reformationary
+reformationist
+reformative
+reformatively
+reformatness
+reformatory
+reformed
+reformedly
+reformer
+reformeress
+reformingly
+reformism
+reformist
+reformistic
+reformproof
+reformulate
+reformulation
+reforsake
+refortification
+refortify
+reforward
+refound
+refoundation
+refounder
+refract
+refractable
+refracted
+refractedly
+refractedness
+refractile
+refractility
+refracting
+refraction
+refractional
+refractionate
+refractionist
+refractive
+refractively
+refractiveness
+refractivity
+refractometer
+refractometric
+refractometry
+refractor
+refractorily
+refractoriness
+refractory
+refracture
+refragability
+refragable
+refragableness
+refrain
+refrainer
+refrainment
+reframe
+refrangent
+refrangibility
+refrangible
+refrangibleness
+refreeze
+refrenation
+refrenzy
+refresh
+refreshant
+refreshen
+refreshener
+refresher
+refreshful
+refreshfully
+refreshing
+refreshingly
+refreshingness
+refreshment
+refrigerant
+refrigerate
+refrigerating
+refrigeration
+refrigerative
+refrigerator
+refrigeratory
+refrighten
+refringence
+refringency
+refringent
+refront
+refrustrate
+reft
+refuel
+refueling
+refuge
+refugee
+refugeeism
+refugeeship
+refulge
+refulgence
+refulgency
+refulgent
+refulgently
+refulgentness
+refunction
+refund
+refunder
+refundment
+refurbish
+refurbishment
+refurl
+refurnish
+refurnishment
+refusable
+refusal
+refuse
+refuser
+refusing
+refusingly
+refusion
+refusive
+refutability
+refutable
+refutably
+refutal
+refutation
+refutative
+refutatory
+refute
+refuter
+reg
+regain
+regainable
+regainer
+regainment
+regal
+regale
+Regalecidae
+Regalecus
+regalement
+regaler
+regalia
+regalian
+regalism
+regalist
+regality
+regalize
+regallop
+regally
+regalness
+regalvanization
+regalvanize
+regard
+regardable
+regardance
+regardancy
+regardant
+regarder
+regardful
+regardfully
+regardfulness
+regarding
+regardless
+regardlessly
+regardlessness
+regarment
+regarnish
+regarrison
+regather
+regatta
+regauge
+regelate
+regelation
+regency
+regeneracy
+regenerance
+regenerant
+regenerate
+regenerateness
+regeneration
+regenerative
+regeneratively
+regenerator
+regeneratory
+regeneratress
+regeneratrix
+regenesis
+regent
+regental
+regentess
+regentship
+regerminate
+regermination
+reges
+reget
+Regga
+Reggie
+regia
+regicidal
+regicide
+regicidism
+regift
+regifuge
+regild
+regill
+regime
+regimen
+regimenal
+regiment
+regimental
+regimentaled
+regimentalled
+regimentally
+regimentals
+regimentary
+regimentation
+regiminal
+regin
+reginal
+Reginald
+region
+regional
+regionalism
+regionalist
+regionalistic
+regionalization
+regionalize
+regionally
+regionary
+regioned
+register
+registered
+registerer
+registership
+registrability
+registrable
+registral
+registrant
+registrar
+registrarship
+registrary
+registrate
+registration
+registrational
+registrationist
+registrator
+registrer
+registry
+regive
+regladden
+reglair
+reglaze
+regle
+reglement
+reglementary
+reglementation
+reglementist
+reglet
+reglorified
+regloss
+reglove
+reglow
+reglue
+regma
+regmacarp
+regnal
+regnancy
+regnant
+regnerable
+regolith
+regorge
+regovern
+regradation
+regrade
+regraduate
+regraduation
+regraft
+regrant
+regrasp
+regrass
+regrate
+regrater
+regratification
+regratify
+regrating
+regratingly
+regrator
+regratress
+regravel
+regrede
+regreen
+regreet
+regress
+regression
+regressionist
+regressive
+regressively
+regressiveness
+regressivity
+regressor
+regret
+regretful
+regretfully
+regretfulness
+regretless
+regrettable
+regrettableness
+regrettably
+regretter
+regrettingly
+regrind
+regrinder
+regrip
+regroup
+regroupment
+regrow
+regrowth
+reguarantee
+reguard
+reguardant
+reguide
+regula
+regulable
+regular
+Regulares
+Regularia
+regularity
+regularization
+regularize
+regularizer
+regularly
+regularness
+regulatable
+regulate
+regulated
+regulation
+regulationist
+regulative
+regulatively
+regulator
+regulatorship
+regulatory
+regulatress
+regulatris
+reguli
+reguline
+regulize
+Regulus
+regulus
+regur
+regurge
+regurgitant
+regurgitate
+regurgitation
+regush
+reh
+rehabilitate
+rehabilitation
+rehabilitative
+rehair
+rehale
+rehallow
+rehammer
+rehandicap
+rehandle
+rehandler
+rehandling
+rehang
+rehappen
+reharden
+reharm
+reharmonize
+reharness
+reharrow
+reharvest
+rehash
+rehaul
+rehazard
+rehead
+reheal
+reheap
+rehear
+rehearing
+rehearsal
+rehearse
+rehearser
+rehearten
+reheat
+reheater
+Reheboth
+rehedge
+reheel
+reheighten
+Rehoboam
+Rehoboth
+Rehobothan
+rehoe
+rehoist
+rehollow
+rehonor
+rehonour
+rehood
+rehook
+rehoop
+rehouse
+rehumanize
+rehumble
+rehumiliate
+rehumiliation
+rehung
+rehybridize
+rehydrate
+rehydration
+rehypothecate
+rehypothecation
+rehypothecator
+reichsgulden
+Reichsland
+Reichslander
+reichsmark
+reichspfennig
+reichstaler
+Reid
+reidentification
+reidentify
+reif
+reification
+reify
+reign
+reignite
+reignition
+reignore
+reillume
+reilluminate
+reillumination
+reillumine
+reillustrate
+reillustration
+reim
+reimage
+reimagination
+reimagine
+reimbark
+reimbarkation
+reimbibe
+reimbody
+reimbursable
+reimburse
+reimbursement
+reimburser
+reimbush
+reimbushment
+reimkennar
+reimmerge
+reimmerse
+reimmersion
+reimmigrant
+reimmigration
+reimpact
+reimpark
+reimpart
+reimpatriate
+reimpatriation
+reimpel
+reimplant
+reimplantation
+reimply
+reimport
+reimportation
+reimportune
+reimpose
+reimposition
+reimposure
+reimpregnate
+reimpress
+reimpression
+reimprint
+reimprison
+reimprisonment
+reimprove
+reimprovement
+reimpulse
+rein
+reina
+reinability
+reinaugurate
+reinauguration
+reincapable
+reincarnadine
+reincarnate
+reincarnation
+reincarnationism
+reincarnationist
+reincense
+reincentive
+reincidence
+reincidency
+reincite
+reinclination
+reincline
+reinclude
+reinclusion
+reincorporate
+reincorporation
+reincrease
+reincrudate
+reincrudation
+reinculcate
+reincur
+reindebted
+reindebtedness
+reindeer
+reindependence
+reindicate
+reindication
+reindict
+reindictment
+reindifferent
+reindorse
+reinduce
+reinducement
+reindue
+reindulge
+reindulgence
+Reiner
+reinette
+reinfect
+reinfection
+reinfectious
+reinfer
+reinfest
+reinfestation
+reinflame
+reinflate
+reinflation
+reinflict
+reinfliction
+reinfluence
+reinforce
+reinforcement
+reinforcer
+reinform
+reinfuse
+reinfusion
+reingraft
+reingratiate
+reingress
+reinhabit
+reinhabitation
+Reinhard
+reinherit
+reinitiate
+reinitiation
+reinject
+reinjure
+reinless
+reinoculate
+reinoculation
+reinquire
+reinquiry
+reins
+reinsane
+reinsanity
+reinscribe
+reinsert
+reinsertion
+reinsist
+reinsman
+reinspect
+reinspection
+reinspector
+reinsphere
+reinspiration
+reinspire
+reinspirit
+reinstall
+reinstallation
+reinstallment
+reinstalment
+reinstate
+reinstatement
+reinstation
+reinstator
+reinstauration
+reinstil
+reinstill
+reinstitute
+reinstitution
+reinstruct
+reinstruction
+reinsult
+reinsurance
+reinsure
+reinsurer
+reintegrate
+reintegration
+reintend
+reinter
+reintercede
+reintercession
+reinterchange
+reinterest
+reinterfere
+reinterference
+reinterment
+reinterpret
+reinterpretation
+reinterrogate
+reinterrogation
+reinterrupt
+reinterruption
+reintervene
+reintervention
+reinterview
+reinthrone
+reintimate
+reintimation
+reintitule
+reintrench
+reintroduce
+reintroduction
+reintrude
+reintrusion
+reintuition
+reintuitive
+reinvade
+reinvasion
+reinvent
+reinvention
+reinventor
+reinversion
+reinvert
+reinvest
+reinvestigate
+reinvestigation
+reinvestiture
+reinvestment
+reinvigorate
+reinvigoration
+reinvitation
+reinvite
+reinvoice
+reinvolve
+Reinwardtia
+reirrigate
+reirrigation
+reis
+reisolation
+reissuable
+reissue
+reissuement
+reissuer
+reit
+reitbok
+reitbuck
+reitemize
+reiter
+reiterable
+reiterance
+reiterant
+reiterate
+reiterated
+reiteratedly
+reiteratedness
+reiteration
+reiterative
+reiteratively
+reiver
+rejail
+Rejang
+reject
+rejectable
+rejectableness
+rejectage
+rejectamenta
+rejecter
+rejectingly
+rejection
+rejective
+rejectment
+rejector
+rejerk
+rejoice
+rejoiceful
+rejoicement
+rejoicer
+rejoicing
+rejoicingly
+rejoin
+rejoinder
+rejolt
+rejourney
+rejudge
+rejumble
+rejunction
+rejustification
+rejustify
+rejuvenant
+rejuvenate
+rejuvenation
+rejuvenative
+rejuvenator
+rejuvenesce
+rejuvenescence
+rejuvenescent
+rejuvenize
+Reki
+rekick
+rekill
+rekindle
+rekindlement
+rekindler
+reking
+rekiss
+reknit
+reknow
+rel
+relabel
+relace
+relacquer
+relade
+reladen
+relais
+relament
+relamp
+reland
+relap
+relapper
+relapsable
+relapse
+relapseproof
+relapser
+relapsing
+relast
+relaster
+relata
+relatability
+relatable
+relatch
+relate
+related
+relatedness
+relater
+relatinization
+relation
+relational
+relationality
+relationally
+relationary
+relationism
+relationist
+relationless
+relationship
+relatival
+relative
+relatively
+relativeness
+relativism
+relativist
+relativistic
+relativity
+relativization
+relativize
+relator
+relatrix
+relatum
+relaunch
+relax
+relaxable
+relaxant
+relaxation
+relaxative
+relaxatory
+relaxed
+relaxedly
+relaxedness
+relaxer
+relay
+relayman
+relbun
+relead
+releap
+relearn
+releasable
+release
+releasee
+releasement
+releaser
+releasor
+releather
+relection
+relegable
+relegate
+relegation
+relend
+relent
+relenting
+relentingly
+relentless
+relentlessly
+relentlessness
+relentment
+relessee
+relessor
+relet
+reletter
+relevance
+relevancy
+relevant
+relevantly
+relevate
+relevation
+relevator
+relevel
+relevy
+reliability
+reliable
+reliableness
+reliably
+reliance
+reliant
+reliantly
+reliberate
+relic
+relicary
+relicense
+relick
+reliclike
+relicmonger
+relict
+relicted
+reliction
+relief
+reliefless
+relier
+relievable
+relieve
+relieved
+relievedly
+reliever
+relieving
+relievingly
+relievo
+relift
+religate
+religation
+relight
+relightable
+relighten
+relightener
+relighter
+religion
+religionary
+religionate
+religioner
+religionism
+religionist
+religionistic
+religionize
+religionless
+religiose
+religiosity
+religious
+religiously
+religiousness
+relime
+relimit
+relimitation
+reline
+reliner
+relink
+relinquent
+relinquish
+relinquisher
+relinquishment
+reliquaire
+reliquary
+reliquefy
+reliquiae
+reliquian
+reliquidate
+reliquidation
+reliquism
+relish
+relishable
+relisher
+relishing
+relishingly
+relishsome
+relishy
+relist
+relisten
+relitigate
+relive
+Rellyan
+Rellyanism
+Rellyanite
+reload
+reloan
+relocable
+relocate
+relocation
+relocator
+relock
+relodge
+relook
+relose
+relost
+relot
+relove
+relower
+relucent
+reluct
+reluctance
+reluctancy
+reluctant
+reluctantly
+reluctate
+reluctation
+reluctivity
+relume
+relumine
+rely
+remade
+remagnetization
+remagnetize
+remagnification
+remagnify
+remail
+remain
+remainder
+remainderman
+remaindership
+remainer
+remains
+remaintain
+remaintenance
+remake
+remaker
+reman
+remanage
+remanagement
+remanation
+remancipate
+remancipation
+remand
+remandment
+remanence
+remanency
+remanent
+remanet
+remanipulate
+remanipulation
+remantle
+remanufacture
+remanure
+remap
+remarch
+remargin
+remark
+remarkability
+remarkable
+remarkableness
+remarkably
+remarkedly
+remarker
+remarket
+remarque
+remarriage
+remarry
+remarshal
+remask
+remass
+remast
+remasticate
+remastication
+rematch
+rematerialize
+remble
+Rembrandt
+Rembrandtesque
+Rembrandtish
+Rembrandtism
+remeant
+remeasure
+remeasurement
+remede
+remediable
+remediableness
+remediably
+remedial
+remedially
+remediation
+remediless
+remedilessly
+remedilessness
+remeditate
+remeditation
+remedy
+remeet
+remelt
+remember
+rememberability
+rememberable
+rememberably
+rememberer
+remembrance
+remembrancer
+remembrancership
+rememorize
+remenace
+remend
+remerge
+remetal
+remex
+Remi
+remica
+remicate
+remication
+remicle
+remiform
+remigate
+remigation
+remiges
+remigial
+remigrant
+remigrate
+remigration
+Remijia
+remilitarization
+remilitarize
+remill
+remimic
+remind
+remindal
+reminder
+remindful
+remindingly
+remineralization
+remineralize
+remingle
+reminisce
+reminiscence
+reminiscenceful
+reminiscencer
+reminiscency
+reminiscent
+reminiscential
+reminiscentially
+reminiscently
+reminiscer
+reminiscitory
+remint
+remiped
+remirror
+remise
+remisrepresent
+remisrepresentation
+remiss
+remissful
+remissibility
+remissible
+remissibleness
+remission
+remissive
+remissively
+remissiveness
+remissly
+remissness
+remissory
+remisunderstand
+remit
+remitment
+remittable
+remittal
+remittance
+remittancer
+remittee
+remittence
+remittency
+remittent
+remittently
+remitter
+remittitur
+remittor
+remix
+remixture
+remnant
+remnantal
+remobilization
+remobilize
+Remoboth
+remock
+remodel
+remodeler
+remodeller
+remodelment
+remodification
+remodify
+remolade
+remold
+remollient
+remonetization
+remonetize
+remonstrance
+remonstrant
+remonstrantly
+remonstrate
+remonstrating
+remonstratingly
+remonstration
+remonstrative
+remonstratively
+remonstrator
+remonstratory
+remontado
+remontant
+remontoir
+remop
+remora
+remord
+remorse
+remorseful
+remorsefully
+remorsefulness
+remorseless
+remorselessly
+remorselessness
+remorseproof
+remortgage
+remote
+remotely
+remoteness
+remotion
+remotive
+remould
+remount
+removability
+removable
+removableness
+removably
+removal
+remove
+removed
+removedly
+removedness
+removement
+remover
+removing
+remultiplication
+remultiply
+remunerability
+remunerable
+remunerably
+remunerate
+remuneration
+remunerative
+remuneratively
+remunerativeness
+remunerator
+remuneratory
+remurmur
+Remus
+remuster
+remutation
+renable
+renably
+renail
+Renaissance
+renaissance
+Renaissancist
+Renaissant
+renal
+rename
+Renardine
+renascence
+renascency
+renascent
+renascible
+renascibleness
+renature
+renavigate
+renavigation
+rencontre
+rencounter
+renculus
+rend
+render
+renderable
+renderer
+rendering
+renderset
+rendezvous
+rendibility
+rendible
+rendition
+rendlewood
+rendrock
+rendzina
+reneague
+Renealmia
+renecessitate
+reneg
+renegade
+renegadism
+renegado
+renegation
+renege
+reneger
+reneglect
+renegotiable
+renegotiate
+renegotiation
+renegotiations
+renegue
+renerve
+renes
+renet
+renew
+renewability
+renewable
+renewably
+renewal
+renewedly
+renewedness
+renewer
+renewment
+renicardiac
+renickel
+renidification
+renidify
+reniform
+Renilla
+Renillidae
+renin
+renipericardial
+reniportal
+renipuncture
+renish
+renishly
+renitence
+renitency
+renitent
+renk
+renky
+renne
+rennet
+renneting
+rennin
+renniogen
+renocutaneous
+renogastric
+renography
+renointestinal
+renominate
+renomination
+renopericardial
+renopulmonary
+renormalize
+renotation
+renotice
+renotification
+renotify
+renounce
+renounceable
+renouncement
+renouncer
+renourish
+renovate
+renovater
+renovatingly
+renovation
+renovative
+renovator
+renovatory
+renovize
+renown
+renowned
+renownedly
+renownedness
+renowner
+renownful
+renownless
+rensselaerite
+rent
+rentability
+rentable
+rentage
+rental
+rentaler
+rentaller
+rented
+rentee
+renter
+rentless
+rentrant
+rentrayeuse
+Renu
+renumber
+renumerate
+renumeration
+renunciable
+renunciance
+renunciant
+renunciate
+renunciation
+renunciative
+renunciator
+renunciatory
+renunculus
+renverse
+renvoi
+renvoy
+reobject
+reobjectivization
+reobjectivize
+reobligate
+reobligation
+reoblige
+reobscure
+reobservation
+reobserve
+reobtain
+reobtainable
+reobtainment
+reoccasion
+reoccupation
+reoccupy
+reoccur
+reoccurrence
+reoffend
+reoffense
+reoffer
+reoffset
+reoil
+reometer
+reomission
+reomit
+reopen
+reoperate
+reoperation
+reoppose
+reopposition
+reoppress
+reoppression
+reorchestrate
+reordain
+reorder
+reordinate
+reordination
+reorganization
+reorganizationist
+reorganize
+reorganizer
+reorient
+reorientation
+reornament
+reoutfit
+reoutline
+reoutput
+reoutrage
+reovercharge
+reoverflow
+reovertake
+reoverwork
+reown
+reoxidation
+reoxidize
+reoxygenate
+reoxygenize
+rep
+repace
+repacification
+repacify
+repack
+repackage
+repacker
+repaganization
+repaganize
+repaganizer
+repage
+repaint
+repair
+repairable
+repairableness
+repairer
+repairman
+repale
+repand
+repandly
+repandodentate
+repandodenticulate
+repandolobate
+repandous
+repandousness
+repanel
+repaper
+reparability
+reparable
+reparably
+reparagraph
+reparate
+reparation
+reparative
+reparatory
+repark
+repartable
+repartake
+repartee
+reparticipate
+reparticipation
+repartition
+repartitionable
+repass
+repassable
+repassage
+repasser
+repast
+repaste
+repasture
+repatch
+repatency
+repatent
+repatriable
+repatriate
+repatriation
+repatronize
+repattern
+repave
+repavement
+repawn
+repay
+repayable
+repayal
+repaying
+repayment
+repeal
+repealability
+repealable
+repealableness
+repealer
+repealist
+repealless
+repeat
+repeatability
+repeatable
+repeatal
+repeated
+repeatedly
+repeater
+repeg
+repel
+repellance
+repellant
+repellence
+repellency
+repellent
+repellently
+repeller
+repelling
+repellingly
+repellingness
+repen
+repenetrate
+repension
+repent
+repentable
+repentance
+repentant
+repentantly
+repenter
+repentingly
+repeople
+reperceive
+repercept
+reperception
+repercolation
+repercuss
+repercussion
+repercussive
+repercussively
+repercussiveness
+repercutient
+reperform
+reperformance
+reperfume
+reperible
+repermission
+repermit
+reperplex
+repersonalization
+repersonalize
+repersuade
+repersuasion
+repertoire
+repertorial
+repertorily
+repertorium
+repertory
+reperusal
+reperuse
+repetend
+repetition
+repetitional
+repetitionary
+repetitious
+repetitiously
+repetitiousness
+repetitive
+repetitively
+repetitiveness
+repetitory
+repetticoat
+repew
+Rephael
+rephase
+rephonate
+rephosphorization
+rephosphorize
+rephotograph
+rephrase
+repic
+repick
+repicture
+repiece
+repile
+repin
+repine
+repineful
+repinement
+repiner
+repiningly
+repipe
+repique
+repitch
+repkie
+replace
+replaceability
+replaceable
+replacement
+replacer
+replait
+replan
+replane
+replant
+replantable
+replantation
+replanter
+replaster
+replate
+replay
+replead
+repleader
+repleat
+repledge
+repledger
+replenish
+replenisher
+replenishingly
+replenishment
+replete
+repletely
+repleteness
+repletion
+repletive
+repletively
+repletory
+repleviable
+replevin
+replevisable
+replevisor
+replevy
+repliant
+replica
+replicate
+replicated
+replicatile
+replication
+replicative
+replicatively
+replicatory
+replier
+replight
+replod
+replot
+replotment
+replotter
+replough
+replow
+replum
+replume
+replunder
+replunge
+reply
+replyingly
+repocket
+repoint
+repolish
+repoll
+repollute
+repolon
+repolymerization
+repolymerize
+reponder
+repone
+repope
+repopulate
+repopulation
+report
+reportable
+reportage
+reportedly
+reporter
+reporteress
+reporterism
+reportership
+reportingly
+reportion
+reportorial
+reportorially
+reposal
+repose
+reposed
+reposedly
+reposedness
+reposeful
+reposefully
+reposefulness
+reposer
+reposit
+repositary
+reposition
+repositor
+repository
+repossess
+repossession
+repossessor
+repost
+repostpone
+repot
+repound
+repour
+repowder
+repp
+repped
+repractice
+repray
+repreach
+reprecipitate
+reprecipitation
+repredict
+reprefer
+reprehend
+reprehendable
+reprehendatory
+reprehender
+reprehensibility
+reprehensible
+reprehensibleness
+reprehensibly
+reprehension
+reprehensive
+reprehensively
+reprehensory
+repreparation
+reprepare
+represcribe
+represent
+representability
+representable
+representamen
+representant
+representation
+representational
+representationalism
+representationalist
+representationary
+representationism
+representationist
+representative
+representatively
+representativeness
+representativeship
+representativity
+representer
+representment
+represide
+repress
+repressed
+repressedly
+represser
+repressible
+repressibly
+repression
+repressionary
+repressionist
+repressive
+repressively
+repressiveness
+repressment
+repressor
+repressory
+repressure
+reprice
+reprieval
+reprieve
+repriever
+reprimand
+reprimander
+reprimanding
+reprimandingly
+reprime
+reprimer
+reprint
+reprinter
+reprisal
+reprisalist
+reprise
+repristinate
+repristination
+reprivatization
+reprivatize
+reprivilege
+reproach
+reproachable
+reproachableness
+reproachably
+reproacher
+reproachful
+reproachfully
+reproachfulness
+reproachingly
+reproachless
+reproachlessness
+reprobacy
+reprobance
+reprobate
+reprobateness
+reprobater
+reprobation
+reprobationary
+reprobationer
+reprobative
+reprobatively
+reprobator
+reprobatory
+reproceed
+reprocess
+reproclaim
+reproclamation
+reprocurable
+reprocure
+reproduce
+reproduceable
+reproducer
+reproducibility
+reproducible
+reproduction
+reproductionist
+reproductive
+reproductively
+reproductiveness
+reproductivity
+reproductory
+reprofane
+reprofess
+reprohibit
+repromise
+repromulgate
+repromulgation
+repronounce
+repronunciation
+reproof
+reproofless
+repropagate
+repropitiate
+repropitiation
+reproportion
+reproposal
+repropose
+reprosecute
+reprosecution
+reprosper
+reprotect
+reprotection
+reprotest
+reprovable
+reprovableness
+reprovably
+reproval
+reprove
+reprover
+reprovide
+reprovingly
+reprovision
+reprovocation
+reprovoke
+reprune
+reps
+reptant
+reptatorial
+reptatory
+reptile
+reptiledom
+reptilelike
+reptilferous
+Reptilia
+reptilian
+reptiliary
+reptiliform
+reptilious
+reptiliousness
+reptilism
+reptility
+reptilivorous
+reptiloid
+republic
+republican
+republicanism
+republicanization
+republicanize
+republicanizer
+republication
+republish
+republisher
+republishment
+repuddle
+repudiable
+repudiate
+repudiation
+repudiationist
+repudiative
+repudiator
+repudiatory
+repuff
+repugn
+repugnable
+repugnance
+repugnancy
+repugnant
+repugnantly
+repugnantness
+repugnate
+repugnatorial
+repugner
+repullulate
+repullulation
+repullulative
+repullulescent
+repulpit
+repulse
+repulseless
+repulseproof
+repulser
+repulsion
+repulsive
+repulsively
+repulsiveness
+repulsory
+repulverize
+repump
+repunish
+repunishment
+repurchase
+repurchaser
+repurge
+repurification
+repurify
+repurple
+repurpose
+repursue
+repursuit
+reputability
+reputable
+reputableness
+reputably
+reputation
+reputationless
+reputative
+reputatively
+repute
+reputed
+reputedly
+reputeless
+requalification
+requalify
+requarantine
+requeen
+requench
+request
+requester
+requestion
+requiem
+Requienia
+requiescence
+requin
+requirable
+require
+requirement
+requirer
+requisite
+requisitely
+requisiteness
+requisition
+requisitionary
+requisitioner
+requisitionist
+requisitor
+requisitorial
+requisitory
+requit
+requitable
+requital
+requitative
+requite
+requiteful
+requitement
+requiter
+requiz
+requotation
+requote
+rerack
+reracker
+reradiation
+rerail
+reraise
+rerake
+rerank
+rerate
+reread
+rereader
+rerebrace
+reredos
+reree
+rereel
+rereeve
+rerefief
+reregister
+reregistration
+reregulate
+reregulation
+rereign
+reremouse
+rerent
+rerental
+reresupper
+rerig
+rering
+rerise
+rerival
+rerivet
+rerob
+rerobe
+reroll
+reroof
+reroot
+rerope
+reroute
+rerow
+reroyalize
+rerub
+rerummage
+rerun
+resaca
+resack
+resacrifice
+resaddle
+resail
+resalable
+resale
+resalt
+resalutation
+resalute
+resalvage
+resample
+resanctify
+resanction
+resatisfaction
+resatisfy
+resaw
+resawer
+resawyer
+resay
+resazurin
+rescan
+reschedule
+rescind
+rescindable
+rescinder
+rescindment
+rescissible
+rescission
+rescissory
+rescore
+rescramble
+rescratch
+rescribe
+rescript
+rescription
+rescriptive
+rescriptively
+rescrub
+rescuable
+rescue
+rescueless
+rescuer
+reseal
+reseam
+research
+researcher
+researchful
+researchist
+reseat
+resecrete
+resecretion
+resect
+resection
+resectional
+Reseda
+reseda
+Resedaceae
+resedaceous
+resee
+reseed
+reseek
+resegment
+resegmentation
+reseise
+reseiser
+reseize
+reseizer
+reseizure
+reselect
+reselection
+reself
+resell
+reseller
+resemblable
+resemblance
+resemblant
+resemble
+resembler
+resemblingly
+reseminate
+resend
+resene
+resensation
+resensitization
+resensitize
+resent
+resentationally
+resentence
+resenter
+resentful
+resentfullness
+resentfully
+resentience
+resentingly
+resentless
+resentment
+resepulcher
+resequent
+resequester
+resequestration
+reserene
+reservable
+reserval
+reservation
+reservationist
+reservatory
+reserve
+reserved
+reservedly
+reservedness
+reservee
+reserveful
+reserveless
+reserver
+reservery
+reservice
+reservist
+reservoir
+reservor
+reset
+resettable
+resetter
+resettle
+resettlement
+resever
+resew
+resex
+resh
+reshake
+reshape
+reshare
+resharpen
+reshave
+reshear
+reshearer
+resheathe
+reshelve
+reshift
+reshine
+reshingle
+reship
+reshipment
+reshipper
+reshoe
+reshoot
+reshoulder
+reshovel
+reshower
+reshrine
+reshuffle
+reshun
+reshunt
+reshut
+reshuttle
+resiccate
+reside
+residence
+residencer
+residency
+resident
+residental
+residenter
+residential
+residentiality
+residentially
+residentiary
+residentiaryship
+residentship
+resider
+residua
+residual
+residuary
+residuation
+residue
+residuent
+residuous
+residuum
+resift
+resigh
+resign
+resignal
+resignatary
+resignation
+resignationism
+resigned
+resignedly
+resignedness
+resignee
+resigner
+resignful
+resignment
+resile
+resilement
+resilial
+resiliate
+resilience
+resiliency
+resilient
+resilifer
+resiliometer
+resilition
+resilium
+resilver
+resin
+resina
+resinaceous
+resinate
+resinbush
+resiner
+resinfiable
+resing
+resinic
+resiniferous
+resinification
+resinifluous
+resiniform
+resinify
+resinize
+resink
+resinlike
+resinoelectric
+resinoextractive
+resinogenous
+resinoid
+resinol
+resinolic
+resinophore
+resinosis
+resinous
+resinously
+resinousness
+resinovitreous
+resiny
+resipiscence
+resipiscent
+resist
+resistability
+resistable
+resistableness
+resistance
+resistant
+resistantly
+resister
+resistful
+resistibility
+resistible
+resistibleness
+resistibly
+resisting
+resistingly
+resistive
+resistively
+resistiveness
+resistivity
+resistless
+resistlessly
+resistlessness
+resistor
+resitting
+resize
+resizer
+resketch
+reskin
+reslash
+reslate
+reslay
+reslide
+reslot
+resmell
+resmelt
+resmile
+resmooth
+resnap
+resnatch
+resnatron
+resnub
+resoak
+resoap
+resoften
+resoil
+resojourn
+resolder
+resole
+resolemnize
+resolicit
+resolidification
+resolidify
+resolubility
+resoluble
+resolubleness
+resolute
+resolutely
+resoluteness
+resolution
+resolutioner
+resolutionist
+resolutory
+resolvability
+resolvable
+resolvableness
+resolvancy
+resolve
+resolved
+resolvedly
+resolvedness
+resolvent
+resolver
+resolvible
+resonance
+resonancy
+resonant
+resonantly
+resonate
+resonator
+resonatory
+resoothe
+resorb
+resorbence
+resorbent
+resorcin
+resorcine
+resorcinism
+resorcinol
+resorcinolphthalein
+resorcinum
+resorcylic
+resorption
+resorptive
+resort
+resorter
+resorufin
+resought
+resound
+resounder
+resounding
+resoundingly
+resource
+resourceful
+resourcefully
+resourcefulness
+resourceless
+resourcelessness
+resoutive
+resow
+resp
+respace
+respade
+respan
+respangle
+resparkle
+respeak
+respect
+respectability
+respectabilize
+respectable
+respectableness
+respectably
+respectant
+respecter
+respectful
+respectfully
+respectfulness
+respecting
+respective
+respectively
+respectiveness
+respectless
+respectlessly
+respectlessness
+respectworthy
+respell
+respersive
+respin
+respirability
+respirable
+respirableness
+respiration
+respirational
+respirative
+respirator
+respiratored
+respiratorium
+respiratory
+respire
+respirit
+respirometer
+respite
+respiteless
+resplend
+resplendence
+resplendency
+resplendent
+resplendently
+resplice
+resplit
+respoke
+respond
+responde
+respondence
+respondency
+respondent
+respondentia
+responder
+responsal
+responsary
+response
+responseless
+responser
+responsibility
+responsible
+responsibleness
+responsibly
+responsion
+responsive
+responsively
+responsiveness
+responsivity
+responsorial
+responsory
+respot
+respray
+respread
+respring
+resprout
+respue
+resquare
+resqueak
+ressaidar
+ressala
+ressaldar
+ressaut
+rest
+restable
+restack
+restaff
+restain
+restainable
+restake
+restamp
+restandardization
+restandardize
+restant
+restart
+restate
+restatement
+restaur
+restaurant
+restaurate
+restaurateur
+restauration
+restbalk
+resteal
+resteel
+resteep
+restem
+restep
+rester
+resterilize
+restes
+restful
+restfully
+restfulness
+restharrow
+resthouse
+Restiaceae
+restiaceous
+restiad
+restibrachium
+restiff
+restiffen
+restiffener
+restiffness
+restifle
+restiform
+restigmatize
+restimulate
+restimulation
+resting
+restingly
+Restio
+Restionaceae
+restionaceous
+restipulate
+restipulation
+restipulatory
+restir
+restis
+restitch
+restitute
+restitution
+restitutionism
+restitutionist
+restitutive
+restitutor
+restitutory
+restive
+restively
+restiveness
+restless
+restlessly
+restlessness
+restock
+restopper
+restorable
+restorableness
+restoral
+restoration
+restorationer
+restorationism
+restorationist
+restorative
+restoratively
+restorativeness
+restorator
+restoratory
+restore
+restorer
+restow
+restowal
+restproof
+restraighten
+restrain
+restrainability
+restrained
+restrainedly
+restrainedness
+restrainer
+restraining
+restrainingly
+restraint
+restraintful
+restrap
+restratification
+restream
+restrengthen
+restress
+restretch
+restrict
+restricted
+restrictedly
+restrictedness
+restriction
+restrictionary
+restrictionist
+restrictive
+restrictively
+restrictiveness
+restrike
+restring
+restringe
+restringency
+restringent
+restrip
+restrive
+restroke
+restudy
+restuff
+restward
+restwards
+resty
+restyle
+resubject
+resubjection
+resubjugate
+resublimation
+resublime
+resubmerge
+resubmission
+resubmit
+resubordinate
+resubscribe
+resubscriber
+resubscription
+resubstitute
+resubstitution
+resucceed
+resuck
+resudation
+resue
+resuffer
+resufferance
+resuggest
+resuggestion
+resuing
+resuit
+result
+resultance
+resultancy
+resultant
+resultantly
+resultative
+resultful
+resultfully
+resulting
+resultingly
+resultive
+resultless
+resultlessly
+resultlessness
+resumability
+resumable
+resume
+resumer
+resummon
+resummons
+resumption
+resumptive
+resumptively
+resun
+resup
+resuperheat
+resupervise
+resupinate
+resupinated
+resupination
+resupine
+resupply
+resupport
+resuppose
+resupposition
+resuppress
+resuppression
+resurface
+resurge
+resurgence
+resurgency
+resurgent
+resurprise
+resurrect
+resurrectible
+resurrection
+resurrectional
+resurrectionary
+resurrectioner
+resurrectioning
+resurrectionism
+resurrectionist
+resurrectionize
+resurrective
+resurrector
+resurrender
+resurround
+resurvey
+resuscitable
+resuscitant
+resuscitate
+resuscitation
+resuscitative
+resuscitator
+resuspect
+resuspend
+resuspension
+reswage
+reswallow
+resward
+reswarm
+reswear
+resweat
+resweep
+reswell
+reswill
+reswim
+resyllabification
+resymbolization
+resymbolize
+resynthesis
+resynthesize
+ret
+retable
+retack
+retackle
+retag
+retail
+retailer
+retailment
+retailor
+retain
+retainability
+retainable
+retainableness
+retainal
+retainder
+retainer
+retainership
+retaining
+retake
+retaker
+retaliate
+retaliation
+retaliationist
+retaliative
+retaliator
+retaliatory
+retalk
+retama
+retame
+retan
+retanner
+retape
+retard
+retardance
+retardant
+retardate
+retardation
+retardative
+retardatory
+retarded
+retardence
+retardent
+retarder
+retarding
+retardingly
+retardive
+retardment
+retardure
+retare
+retariff
+retaste
+retation
+retattle
+retax
+retaxation
+retch
+reteach
+retecious
+retelegraph
+retelephone
+retell
+retelling
+retem
+retemper
+retempt
+retemptation
+retenant
+retender
+retene
+retent
+retention
+retentionist
+retentive
+retentively
+retentiveness
+retentivity
+retentor
+Retepora
+retepore
+Reteporidae
+retest
+retexture
+rethank
+rethatch
+rethaw
+rethe
+retheness
+rethicken
+rethink
+rethrash
+rethread
+rethreaten
+rethresh
+rethresher
+rethrill
+rethrive
+rethrone
+rethrow
+rethrust
+rethunder
+retia
+retial
+Retiariae
+retiarian
+retiarius
+retiary
+reticella
+reticello
+reticence
+reticency
+reticent
+reticently
+reticket
+reticle
+reticula
+reticular
+Reticularia
+reticularian
+reticularly
+reticulary
+reticulate
+reticulated
+reticulately
+reticulation
+reticulatocoalescent
+reticulatogranulate
+reticulatoramose
+reticulatovenose
+reticule
+reticuled
+reticulin
+reticulitis
+reticulocyte
+reticulocytosis
+reticuloramose
+Reticulosa
+reticulose
+reticulovenose
+reticulum
+retie
+retier
+retiform
+retighten
+retile
+retill
+retimber
+retime
+retin
+retina
+retinacular
+retinaculate
+retinaculum
+retinal
+retinalite
+retinasphalt
+retinasphaltum
+retincture
+retinene
+retinerved
+retinian
+retinispora
+retinite
+retinitis
+retinize
+retinker
+retinoblastoma
+retinochorioid
+retinochorioidal
+retinochorioiditis
+retinoid
+retinol
+retinopapilitis
+retinophoral
+retinophore
+retinoscope
+retinoscopic
+retinoscopically
+retinoscopist
+retinoscopy
+Retinospora
+retinue
+retinula
+retinular
+retinule
+retip
+retiracied
+retiracy
+retirade
+retiral
+retire
+retired
+retiredly
+retiredness
+retirement
+retirer
+retiring
+retiringly
+retiringness
+retistene
+retoast
+retold
+retolerate
+retoleration
+retomb
+retonation
+retook
+retool
+retooth
+retoother
+retort
+retortable
+retorted
+retorter
+retortion
+retortive
+retorture
+retoss
+retotal
+retouch
+retoucher
+retouching
+retouchment
+retour
+retourable
+retrace
+retraceable
+retracement
+retrack
+retract
+retractability
+retractable
+retractation
+retracted
+retractibility
+retractible
+retractile
+retractility
+retraction
+retractive
+retractively
+retractiveness
+retractor
+retrad
+retrade
+retradition
+retrahent
+retrain
+retral
+retrally
+retramp
+retrample
+retranquilize
+retranscribe
+retranscription
+retransfer
+retransference
+retransfigure
+retransform
+retransformation
+retransfuse
+retransit
+retranslate
+retranslation
+retransmission
+retransmissive
+retransmit
+retransmute
+retransplant
+retransport
+retransportation
+retravel
+retraverse
+retraxit
+retread
+retreat
+retreatal
+retreatant
+retreater
+retreatful
+retreating
+retreatingness
+retreative
+retreatment
+retree
+retrench
+retrenchable
+retrencher
+retrenchment
+retrial
+retribute
+retribution
+retributive
+retributively
+retributor
+retributory
+retricked
+retrievability
+retrievable
+retrievableness
+retrievably
+retrieval
+retrieve
+retrieveless
+retrievement
+retriever
+retrieverish
+retrim
+retrimmer
+retrip
+retroact
+retroaction
+retroactive
+retroactively
+retroactivity
+retroalveolar
+retroauricular
+retrobronchial
+retrobuccal
+retrobulbar
+retrocaecal
+retrocardiac
+retrocecal
+retrocede
+retrocedence
+retrocedent
+retrocervical
+retrocession
+retrocessional
+retrocessionist
+retrocessive
+retrochoir
+retroclavicular
+retroclusion
+retrocognition
+retrocognitive
+retrocolic
+retroconsciousness
+retrocopulant
+retrocopulation
+retrocostal
+retrocouple
+retrocoupler
+retrocurved
+retrodate
+retrodeviation
+retrodisplacement
+retroduction
+retrodural
+retroesophageal
+retroflected
+retroflection
+retroflex
+retroflexed
+retroflexion
+retroflux
+retroform
+retrofract
+retrofracted
+retrofrontal
+retrogastric
+retrogenerative
+retrogradation
+retrogradatory
+retrograde
+retrogradely
+retrogradient
+retrogradingly
+retrogradism
+retrogradist
+retrogress
+retrogression
+retrogressionist
+retrogressive
+retrogressively
+retrohepatic
+retroinfection
+retroinsular
+retroiridian
+retroject
+retrojection
+retrojugular
+retrolabyrinthine
+retrolaryngeal
+retrolingual
+retrolocation
+retromammary
+retromammillary
+retromandibular
+retromastoid
+retromaxillary
+retromigration
+retromingent
+retromingently
+retromorphosed
+retromorphosis
+retronasal
+retroperitoneal
+retroperitoneally
+retropharyngeal
+retropharyngitis
+retroplacental
+retroplexed
+retroposed
+retroposition
+retropresbyteral
+retropubic
+retropulmonary
+retropulsion
+retropulsive
+retroreception
+retrorectal
+retroreflective
+retrorenal
+retrorse
+retrorsely
+retroserrate
+retroserrulate
+retrospect
+retrospection
+retrospective
+retrospectively
+retrospectiveness
+retrospectivity
+retrosplenic
+retrostalsis
+retrostaltic
+retrosternal
+retrosusception
+retrot
+retrotarsal
+retrotemporal
+retrothyroid
+retrotracheal
+retrotransfer
+retrotransference
+retrotympanic
+retrousse
+retrovaccinate
+retrovaccination
+retrovaccine
+retroverse
+retroversion
+retrovert
+retrovision
+retroxiphoid
+retrude
+retrue
+retrusible
+retrusion
+retrust
+retry
+retted
+retter
+rettery
+retting
+rettory
+retube
+retuck
+retumble
+retumescence
+retune
+returban
+returf
+returfer
+return
+returnability
+returnable
+returned
+returner
+returnless
+returnlessly
+retuse
+retwine
+retwist
+retying
+retype
+retzian
+Reub
+Reuben
+Reubenites
+Reuchlinian
+Reuchlinism
+Reuel
+reundercut
+reundergo
+reundertake
+reundulate
+reundulation
+reune
+reunfold
+reunification
+reunify
+reunion
+reunionism
+reunionist
+reunionistic
+reunitable
+reunite
+reunitedly
+reuniter
+reunition
+reunitive
+reunpack
+reuphold
+reupholster
+reuplift
+reurge
+reuse
+reutilization
+reutilize
+reutter
+reutterance
+rev
+revacate
+revaccinate
+revaccination
+revalenta
+revalescence
+revalescent
+revalidate
+revalidation
+revalorization
+revalorize
+revaluate
+revaluation
+revalue
+revamp
+revamper
+revampment
+revaporization
+revaporize
+revarnish
+revary
+reve
+reveal
+revealability
+revealable
+revealableness
+revealed
+revealedly
+revealer
+revealing
+revealingly
+revealingness
+revealment
+revegetate
+revegetation
+revehent
+reveil
+reveille
+revel
+revelability
+revelant
+revelation
+revelational
+revelationer
+revelationist
+revelationize
+revelative
+revelator
+revelatory
+reveler
+revellent
+revelly
+revelment
+revelrout
+revelry
+revenant
+revend
+revender
+revendicate
+revendication
+reveneer
+revenge
+revengeable
+revengeful
+revengefully
+revengefulness
+revengeless
+revengement
+revenger
+revengingly
+revent
+reventilate
+reventure
+revenual
+revenue
+revenued
+revenuer
+rever
+reverable
+reverb
+reverbatory
+reverberant
+reverberate
+reverberation
+reverberative
+reverberator
+reverberatory
+reverbrate
+reverdure
+revere
+revered
+reverence
+reverencer
+reverend
+reverendly
+reverendship
+reverent
+reverential
+reverentiality
+reverentially
+reverentialness
+reverently
+reverentness
+reverer
+reverie
+reverification
+reverify
+reverist
+revers
+reversability
+reversable
+reversal
+reverse
+reversed
+reversedly
+reverseful
+reverseless
+reversely
+reversement
+reverser
+reverseways
+reversewise
+reversi
+reversibility
+reversible
+reversibleness
+reversibly
+reversification
+reversifier
+reversify
+reversing
+reversingly
+reversion
+reversionable
+reversional
+reversionally
+reversionary
+reversioner
+reversionist
+reversis
+reversist
+reversive
+reverso
+revert
+revertal
+reverter
+revertibility
+revertible
+revertive
+revertively
+revery
+revest
+revestiary
+revestry
+revet
+revete
+revetement
+revetment
+revibrate
+revibration
+revibrational
+revictorious
+revictory
+revictual
+revictualment
+revie
+review
+reviewability
+reviewable
+reviewage
+reviewal
+reviewer
+revieweress
+reviewish
+reviewless
+revigorate
+revigoration
+revile
+revilement
+reviler
+reviling
+revilingly
+revindicate
+revindication
+reviolate
+reviolation
+revirescence
+revirescent
+Revisable
+revisable
+revisableness
+revisal
+revise
+Revised
+revisee
+reviser
+revisership
+revisible
+revision
+revisional
+revisionary
+revisionism
+revisionist
+revisit
+revisitant
+revisitation
+revisor
+revisory
+revisualization
+revisualize
+revitalization
+revitalize
+revitalizer
+revivability
+revivable
+revivably
+revival
+revivalism
+revivalist
+revivalistic
+revivalize
+revivatory
+revive
+revivement
+reviver
+revivification
+revivifier
+revivify
+reviving
+revivingly
+reviviscence
+reviviscency
+reviviscent
+reviviscible
+revivor
+revocability
+revocable
+revocableness
+revocably
+revocation
+revocative
+revocatory
+revoice
+revokable
+revoke
+revokement
+revoker
+revokingly
+revolant
+revolatilize
+revolt
+revolter
+revolting
+revoltingly
+revoltress
+revolubility
+revoluble
+revolubly
+revolunteer
+revolute
+revoluted
+revolution
+revolutional
+revolutionally
+revolutionarily
+revolutionariness
+revolutionary
+revolutioneering
+revolutioner
+revolutionism
+revolutionist
+revolutionize
+revolutionizement
+revolutionizer
+revolvable
+revolvably
+revolve
+revolvement
+revolvency
+revolver
+revolving
+revolvingly
+revomit
+revote
+revue
+revuette
+revuist
+revulsed
+revulsion
+revulsionary
+revulsive
+revulsively
+rewade
+rewager
+rewake
+rewaken
+rewall
+rewallow
+reward
+rewardable
+rewardableness
+rewardably
+rewardedly
+rewarder
+rewardful
+rewardfulness
+rewarding
+rewardingly
+rewardless
+rewardproof
+rewarehouse
+rewarm
+rewarn
+rewash
+rewater
+rewave
+rewax
+rewaybill
+rewayle
+reweaken
+rewear
+reweave
+rewed
+reweigh
+reweigher
+reweight
+rewelcome
+reweld
+rewend
+rewet
+rewhelp
+rewhirl
+rewhisper
+rewhiten
+rewiden
+rewin
+rewind
+rewinder
+rewirable
+rewire
+rewish
+rewithdraw
+rewithdrawal
+rewood
+reword
+rework
+reworked
+rewound
+rewove
+rewoven
+rewrap
+rewrite
+rewriter
+Rex
+rex
+rexen
+reyield
+Reynard
+Reynold
+reyoke
+reyouth
+rezbanyite
+rhabdite
+rhabditiform
+Rhabditis
+rhabdium
+Rhabdocarpum
+Rhabdocoela
+rhabdocoelan
+rhabdocoele
+Rhabdocoelida
+rhabdocoelidan
+rhabdocoelous
+rhabdoid
+rhabdoidal
+rhabdolith
+rhabdom
+rhabdomal
+rhabdomancer
+rhabdomancy
+rhabdomantic
+rhabdomantist
+Rhabdomonas
+rhabdomyoma
+rhabdomyosarcoma
+rhabdomysarcoma
+rhabdophane
+rhabdophanite
+Rhabdophora
+rhabdophoran
+Rhabdopleura
+rhabdopod
+rhabdos
+rhabdosome
+rhabdosophy
+rhabdosphere
+rhabdus
+Rhacianectes
+Rhacomitrium
+Rhacophorus
+Rhadamanthine
+Rhadamanthus
+Rhadamanthys
+Rhaetian
+Rhaetic
+rhagades
+rhagadiform
+rhagiocrin
+rhagionid
+Rhagionidae
+rhagite
+Rhagodia
+rhagon
+rhagonate
+rhagose
+rhamn
+Rhamnaceae
+rhamnaceous
+rhamnal
+Rhamnales
+rhamnetin
+rhamninase
+rhamninose
+rhamnite
+rhamnitol
+rhamnohexite
+rhamnohexitol
+rhamnohexose
+rhamnonic
+rhamnose
+rhamnoside
+Rhamnus
+rhamphoid
+Rhamphorhynchus
+Rhamphosuchus
+rhamphotheca
+Rhapidophyllum
+Rhapis
+rhapontic
+rhaponticin
+rhapontin
+rhapsode
+rhapsodic
+rhapsodical
+rhapsodically
+rhapsodie
+rhapsodism
+rhapsodist
+rhapsodistic
+rhapsodize
+rhapsodomancy
+rhapsody
+Rhaptopetalaceae
+rhason
+rhasophore
+rhatania
+rhatany
+rhe
+Rhea
+rhea
+rheadine
+Rheae
+rhebok
+rhebosis
+rheeboc
+rheebok
+rheen
+rhegmatype
+rhegmatypy
+Rhegnopteri
+rheic
+Rheidae
+Rheiformes
+rhein
+rheinic
+rhema
+rhematic
+rhematology
+rheme
+Rhemish
+Rhemist
+Rhenish
+rhenium
+rheobase
+rheocrat
+rheologist
+rheology
+rheometer
+rheometric
+rheometry
+rheophile
+rheophore
+rheophoric
+rheoplankton
+rheoscope
+rheoscopic
+rheostat
+rheostatic
+rheostatics
+rheotactic
+rheotan
+rheotaxis
+rheotome
+rheotrope
+rheotropic
+rheotropism
+rhesian
+rhesus
+rhetor
+rhetoric
+rhetorical
+rhetorically
+rhetoricalness
+rhetoricals
+rhetorician
+rhetorize
+Rheum
+rheum
+rheumarthritis
+rheumatalgia
+rheumatic
+rheumatical
+rheumatically
+rheumaticky
+rheumatism
+rheumatismal
+rheumatismoid
+rheumative
+rheumatiz
+rheumatize
+rheumatoid
+rheumatoidal
+rheumatoidally
+rheumed
+rheumic
+rheumily
+rheuminess
+rheumy
+Rhexia
+rhexis
+rhigolene
+rhigosis
+rhigotic
+Rhina
+rhinal
+rhinalgia
+Rhinanthaceae
+Rhinanthus
+rhinarium
+rhincospasm
+rhine
+Rhineland
+Rhinelander
+rhinencephalic
+rhinencephalon
+rhinencephalous
+rhinenchysis
+Rhineodon
+Rhineodontidae
+rhinestone
+Rhineura
+rhineurynter
+Rhinidae
+rhinion
+rhinitis
+rhino
+Rhinobatidae
+Rhinobatus
+rhinobyon
+rhinocaul
+rhinocele
+rhinocelian
+rhinocerial
+rhinocerian
+rhinocerine
+rhinoceroid
+rhinoceros
+rhinoceroslike
+rhinocerotic
+Rhinocerotidae
+rhinocerotiform
+rhinocerotine
+rhinocerotoid
+rhinochiloplasty
+Rhinoderma
+rhinodynia
+rhinogenous
+rhinolalia
+rhinolaryngology
+rhinolaryngoscope
+rhinolite
+rhinolith
+rhinolithic
+rhinological
+rhinologist
+rhinology
+rhinolophid
+Rhinolophidae
+rhinolophine
+rhinopharyngeal
+rhinopharyngitis
+rhinopharynx
+Rhinophidae
+Rhinophis
+rhinophonia
+rhinophore
+rhinophyma
+rhinoplastic
+rhinoplasty
+rhinopolypus
+Rhinoptera
+Rhinopteridae
+rhinorrhagia
+rhinorrhea
+rhinorrheal
+rhinoscleroma
+rhinoscope
+rhinoscopic
+rhinoscopy
+rhinosporidiosis
+Rhinosporidium
+rhinotheca
+rhinothecal
+Rhinthonic
+Rhinthonica
+rhipidate
+rhipidion
+Rhipidistia
+rhipidistian
+rhipidium
+Rhipidoglossa
+rhipidoglossal
+rhipidoglossate
+Rhipidoptera
+rhipidopterous
+rhipiphorid
+Rhipiphoridae
+Rhipiptera
+rhipipteran
+rhipipterous
+Rhipsalis
+Rhiptoglossa
+rhizanthous
+rhizautoicous
+Rhizina
+Rhizinaceae
+rhizine
+rhizinous
+Rhizobium
+rhizocarp
+Rhizocarpeae
+rhizocarpean
+rhizocarpian
+rhizocarpic
+rhizocarpous
+rhizocaul
+rhizocaulus
+Rhizocephala
+rhizocephalan
+rhizocephalous
+rhizocorm
+Rhizoctonia
+rhizoctoniose
+rhizodermis
+Rhizodus
+Rhizoflagellata
+rhizoflagellate
+rhizogen
+rhizogenetic
+rhizogenic
+rhizogenous
+rhizoid
+rhizoidal
+rhizoma
+rhizomatic
+rhizomatous
+rhizome
+rhizomelic
+rhizomic
+rhizomorph
+rhizomorphic
+rhizomorphoid
+rhizomorphous
+rhizoneure
+rhizophagous
+rhizophilous
+Rhizophora
+Rhizophoraceae
+rhizophoraceous
+rhizophore
+rhizophorous
+rhizophyte
+rhizoplast
+rhizopod
+Rhizopoda
+rhizopodal
+rhizopodan
+rhizopodist
+rhizopodous
+Rhizopogon
+Rhizopus
+rhizosphere
+Rhizostomae
+Rhizostomata
+rhizostomatous
+rhizostome
+rhizostomous
+Rhizota
+rhizotaxis
+rhizotaxy
+rhizote
+rhizotic
+rhizotomi
+rhizotomy
+rho
+Rhoda
+rhodaline
+Rhodamine
+rhodamine
+rhodanate
+Rhodanian
+rhodanic
+rhodanine
+rhodanthe
+rhodeose
+Rhodes
+Rhodesian
+Rhodesoid
+rhodeswood
+Rhodian
+rhodic
+rhoding
+rhodinol
+rhodite
+rhodium
+rhodizite
+rhodizonic
+Rhodobacteriaceae
+Rhodobacterioideae
+rhodochrosite
+Rhodococcus
+Rhodocystis
+rhodocyte
+rhododendron
+rhodolite
+Rhodomelaceae
+rhodomelaceous
+rhodonite
+Rhodope
+rhodophane
+Rhodophyceae
+rhodophyceous
+rhodophyll
+Rhodophyllidaceae
+Rhodophyta
+rhodoplast
+rhodopsin
+Rhodora
+Rhodoraceae
+rhodorhiza
+rhodosperm
+Rhodospermeae
+rhodospermin
+rhodospermous
+Rhodospirillum
+Rhodothece
+Rhodotypos
+Rhodymenia
+Rhodymeniaceae
+rhodymeniaceous
+Rhodymeniales
+Rhoeadales
+Rhoecus
+Rhoeo
+rhomb
+rhombencephalon
+rhombenporphyr
+rhombic
+rhombical
+rhombiform
+rhomboclase
+rhomboganoid
+Rhomboganoidei
+rhombogene
+rhombogenic
+rhombogenous
+rhombohedra
+rhombohedral
+rhombohedrally
+rhombohedric
+rhombohedron
+rhomboid
+rhomboidal
+rhomboidally
+rhomboideus
+rhomboidly
+rhomboquadratic
+rhomborectangular
+rhombos
+rhombovate
+Rhombozoa
+rhombus
+rhonchal
+rhonchial
+rhonchus
+Rhonda
+rhopalic
+rhopalism
+rhopalium
+Rhopalocera
+rhopaloceral
+rhopalocerous
+Rhopalura
+rhotacism
+rhotacismus
+rhotacistic
+rhotacize
+rhubarb
+rhubarby
+rhumb
+rhumba
+rhumbatron
+Rhus
+rhyacolite
+rhyme
+rhymeless
+rhymelet
+rhymemaker
+rhymemaking
+rhymeproof
+rhymer
+rhymery
+rhymester
+rhymewise
+rhymic
+rhymist
+rhymy
+Rhynchobdellae
+Rhynchobdellida
+Rhynchocephala
+Rhynchocephali
+Rhynchocephalia
+rhynchocephalian
+rhynchocephalic
+rhynchocephalous
+Rhynchocoela
+rhynchocoelan
+rhynchocoelic
+rhynchocoelous
+rhyncholite
+Rhynchonella
+Rhynchonellacea
+Rhynchonellidae
+rhynchonelloid
+Rhynchophora
+rhynchophoran
+rhynchophore
+rhynchophorous
+Rhynchopinae
+Rhynchops
+Rhynchosia
+Rhynchospora
+Rhynchota
+rhynchotal
+rhynchote
+rhynchotous
+rhynconellid
+Rhyncostomi
+Rhynia
+Rhyniaceae
+Rhynocheti
+Rhynsburger
+rhyobasalt
+rhyodacite
+rhyolite
+rhyolitic
+rhyotaxitic
+rhyparographer
+rhyparographic
+rhyparographist
+rhyparography
+rhypography
+rhyptic
+rhyptical
+rhysimeter
+Rhyssa
+rhythm
+rhythmal
+rhythmic
+rhythmical
+rhythmicality
+rhythmically
+rhythmicity
+rhythmicize
+rhythmics
+rhythmist
+rhythmizable
+rhythmization
+rhythmize
+rhythmless
+rhythmometer
+rhythmopoeia
+rhythmproof
+Rhytidodon
+rhytidome
+rhytidosis
+Rhytina
+Rhytisma
+rhyton
+ria
+rial
+riancy
+riant
+riantly
+riata
+rib
+ribald
+ribaldish
+ribaldly
+ribaldrous
+ribaldry
+riband
+Ribandism
+Ribandist
+ribandlike
+ribandmaker
+ribandry
+ribat
+ribaudequin
+ribaudred
+ribband
+ribbandry
+ribbed
+ribber
+ribbet
+ribbidge
+ribbing
+ribble
+ribbon
+ribbonback
+ribboner
+ribbonfish
+Ribbonism
+ribbonlike
+ribbonmaker
+Ribbonman
+ribbonry
+ribbonweed
+ribbonwood
+ribbony
+ribby
+ribe
+Ribes
+Ribhus
+ribless
+riblet
+riblike
+riboflavin
+ribonic
+ribonuclease
+ribonucleic
+ribose
+ribroast
+ribroaster
+ribroasting
+ribskin
+ribspare
+Ribston
+ribwork
+ribwort
+Ric
+Ricardian
+Ricardianism
+Ricardo
+Riccia
+Ricciaceae
+ricciaceous
+Ricciales
+rice
+ricebird
+riceland
+ricer
+ricey
+Rich
+rich
+Richard
+Richardia
+Richardsonia
+richdom
+Richebourg
+richellite
+richen
+riches
+richesse
+richling
+richly
+Richmond
+Richmondena
+richness
+richt
+richterite
+richweed
+ricin
+ricine
+ricinelaidic
+ricinelaidinic
+ricinic
+ricinine
+ricininic
+ricinium
+ricinoleate
+ricinoleic
+ricinolein
+ricinolic
+Ricinulei
+Ricinus
+ricinus
+Rick
+rick
+rickardite
+ricker
+ricketily
+ricketiness
+ricketish
+rickets
+Rickettsia
+rickettsial
+Rickettsiales
+rickettsialpox
+rickety
+rickey
+rickle
+rickmatic
+rickrack
+ricksha
+rickshaw
+rickstaddle
+rickstand
+rickstick
+Ricky
+rickyard
+ricochet
+ricolettaite
+ricrac
+rictal
+rictus
+rid
+ridable
+ridableness
+ridably
+riddam
+riddance
+riddel
+ridden
+ridder
+ridding
+riddle
+riddlemeree
+riddler
+riddling
+riddlingly
+riddlings
+ride
+rideable
+rideau
+riden
+rident
+rider
+ridered
+rideress
+riderless
+ridge
+ridgeband
+ridgeboard
+ridgebone
+ridged
+ridgel
+ridgelet
+ridgelike
+ridgeling
+ridgepiece
+ridgeplate
+ridgepole
+ridgepoled
+ridger
+ridgerope
+ridgetree
+ridgeway
+ridgewise
+ridgil
+ridging
+ridgingly
+ridgling
+ridgy
+ridibund
+ridicule
+ridiculer
+ridiculize
+ridiculosity
+ridiculous
+ridiculously
+ridiculousness
+riding
+ridingman
+ridotto
+rie
+riebeckite
+riem
+Riemannean
+Riemannian
+riempie
+rier
+Riesling
+rife
+rifely
+rifeness
+Riff
+riff
+Riffi
+Riffian
+riffle
+riffler
+riffraff
+Rifi
+Rifian
+rifle
+riflebird
+rifledom
+rifleman
+riflemanship
+rifleproof
+rifler
+riflery
+rifleshot
+rifling
+rift
+rifter
+riftless
+rifty
+rig
+rigadoon
+rigamajig
+rigamarole
+rigation
+rigbane
+Rigel
+Rigelian
+rigescence
+rigescent
+riggald
+rigger
+rigging
+riggish
+riggite
+riggot
+right
+rightabout
+righten
+righteous
+righteously
+righteousness
+righter
+rightful
+rightfully
+rightfulness
+rightheaded
+righthearted
+rightist
+rightle
+rightless
+rightlessness
+rightly
+rightmost
+rightness
+righto
+rightship
+rightward
+rightwardly
+rightwards
+righty
+rigid
+rigidify
+rigidist
+rigidity
+rigidly
+rigidness
+rigidulous
+rigling
+rigmaree
+rigmarole
+rigmarolery
+rigmarolic
+rigmarolish
+rigmarolishly
+rignum
+rigol
+rigolette
+rigor
+rigorism
+rigorist
+rigoristic
+rigorous
+rigorously
+rigorousness
+rigsby
+rigsdaler
+Rigsmaal
+Rigsmal
+rigwiddie
+rigwiddy
+Rik
+Rikari
+rikisha
+rikk
+riksha
+rikshaw
+Riksmaal
+Riksmal
+rilawa
+rile
+riley
+rill
+rillet
+rillett
+rillette
+rillock
+rillstone
+rilly
+rim
+rima
+rimal
+rimate
+rimbase
+rime
+rimeless
+rimer
+rimester
+rimfire
+rimiform
+rimland
+rimless
+rimmaker
+rimmaking
+rimmed
+rimmer
+rimose
+rimosely
+rimosity
+rimous
+rimpi
+rimple
+rimption
+rimrock
+rimu
+rimula
+rimulose
+rimy
+Rinaldo
+rinceau
+rinch
+rincon
+Rind
+rind
+Rinde
+rinded
+rinderpest
+rindle
+rindless
+rindy
+rine
+ring
+ringable
+Ringatu
+ringbark
+ringbarker
+ringbill
+ringbird
+ringbolt
+ringbone
+ringboned
+ringcraft
+ringdove
+ringe
+ringed
+ringent
+ringer
+ringeye
+ringgiver
+ringgiving
+ringgoer
+ringhals
+ringhead
+ringiness
+ringing
+ringingly
+ringingness
+ringite
+ringle
+ringlead
+ringleader
+ringleaderless
+ringleadership
+ringless
+ringlet
+ringleted
+ringlety
+ringlike
+ringmaker
+ringmaking
+ringman
+ringmaster
+ringneck
+ringsail
+ringside
+ringsider
+ringster
+ringtail
+ringtaw
+ringtime
+ringtoss
+ringwalk
+ringwall
+ringwise
+ringworm
+ringy
+rink
+rinka
+rinker
+rinkite
+rinncefada
+rinneite
+rinner
+rinsable
+rinse
+rinser
+rinsing
+rinthereout
+rintherout
+Rio
+rio
+riot
+rioter
+rioting
+riotingly
+riotist
+riotistic
+riotocracy
+riotous
+riotously
+riotousness
+riotproof
+riotry
+rip
+ripa
+ripal
+riparial
+riparian
+Riparii
+riparious
+ripcord
+ripe
+ripelike
+ripely
+ripen
+ripener
+ripeness
+ripening
+ripeningly
+riper
+ripgut
+ripicolous
+ripidolite
+ripienist
+ripieno
+ripier
+ripost
+riposte
+rippable
+ripper
+ripperman
+rippet
+rippier
+ripping
+rippingly
+rippingness
+rippit
+ripple
+rippleless
+rippler
+ripplet
+rippling
+ripplingly
+ripply
+rippon
+riprap
+riprapping
+ripsack
+ripsaw
+ripsnorter
+ripsnorting
+Ripuarian
+ripup
+riroriro
+risala
+risberm
+rise
+risen
+riser
+rishi
+rishtadar
+risibility
+risible
+risibleness
+risibles
+risibly
+rising
+risk
+risker
+riskful
+riskfulness
+riskily
+riskiness
+riskish
+riskless
+riskproof
+risky
+risorial
+risorius
+risp
+risper
+risque
+risquee
+Riss
+rissel
+risser
+Rissian
+rissle
+Rissoa
+rissoid
+Rissoidae
+rist
+ristori
+rit
+Rita
+rita
+Ritalynne
+ritardando
+Ritchey
+rite
+riteless
+ritelessness
+ritling
+ritornel
+ritornelle
+ritornello
+Ritschlian
+Ritschlianism
+rittingerite
+ritual
+ritualism
+ritualist
+ritualistic
+ritualistically
+rituality
+ritualize
+ritualless
+ritually
+ritzy
+riva
+rivage
+rival
+rivalable
+rivaless
+rivalism
+rivality
+rivalize
+rivalless
+rivalrous
+rivalry
+rivalship
+rive
+rivel
+rivell
+riven
+river
+riverain
+riverbank
+riverbush
+riverdamp
+rivered
+riverhead
+riverhood
+riverine
+riverish
+riverless
+riverlet
+riverlike
+riverling
+riverly
+riverman
+riverscape
+riverside
+riversider
+riverward
+riverwards
+riverwash
+riverway
+riverweed
+riverwise
+rivery
+rivet
+riveter
+rivethead
+riveting
+rivetless
+rivetlike
+Rivina
+riving
+rivingly
+Rivinian
+rivose
+Rivularia
+Rivulariaceae
+rivulariaceous
+rivulation
+rivulet
+rivulose
+rix
+rixatrix
+rixy
+riyal
+riziform
+rizzar
+rizzle
+rizzom
+rizzomed
+rizzonite
+Ro
+roach
+roachback
+road
+roadability
+roadable
+roadbed
+roadblock
+roadbook
+roadcraft
+roaded
+roader
+roadfellow
+roadhead
+roadhouse
+roading
+roadite
+roadless
+roadlessness
+roadlike
+roadman
+roadmaster
+roadside
+roadsider
+roadsman
+roadstead
+roadster
+roadstone
+roadtrack
+roadway
+roadweed
+roadwise
+roadworthiness
+roadworthy
+roam
+roamage
+roamer
+roaming
+roamingly
+roan
+roanoke
+roar
+roarer
+roaring
+roaringly
+roast
+roastable
+roaster
+roasting
+roastingly
+Rob
+rob
+robalito
+robalo
+roband
+robber
+robberproof
+robbery
+Robbin
+robbin
+robbing
+robe
+robeless
+Robenhausian
+rober
+roberd
+Roberdsman
+Robert
+Roberta
+Roberto
+Robigalia
+Robigus
+Robin
+robin
+robinet
+robing
+Robinia
+robinin
+robinoside
+roble
+robomb
+roborant
+roborate
+roboration
+roborative
+roborean
+roboreous
+robot
+robotesque
+robotian
+robotism
+robotistic
+robotization
+robotize
+robotlike
+robotry
+robur
+roburite
+robust
+robustful
+robustfully
+robustfulness
+robustic
+robusticity
+robustious
+robustiously
+robustiousness
+robustity
+robustly
+robustness
+roc
+rocambole
+Roccella
+Roccellaceae
+roccellic
+roccellin
+roccelline
+Rochea
+rochelime
+Rochelle
+rocher
+rochet
+rocheted
+rock
+rockable
+rockably
+rockaby
+rockabye
+rockallite
+Rockaway
+rockaway
+rockbell
+rockberry
+rockbird
+rockborn
+rockbrush
+rockcist
+rockcraft
+rockelay
+rocker
+rockery
+rocket
+rocketeer
+rocketer
+rocketlike
+rocketor
+rocketry
+rockety
+rockfall
+rockfish
+rockfoil
+rockhair
+rockhearted
+Rockies
+rockiness
+rocking
+rockingly
+rockish
+rocklay
+rockless
+rocklet
+rocklike
+rockling
+rockman
+rockrose
+rockshaft
+rockslide
+rockstaff
+rocktree
+rockward
+rockwards
+rockweed
+rockwood
+rockwork
+rocky
+rococo
+Rocouyenne
+rocta
+Rod
+rod
+rodd
+roddikin
+roddin
+rodding
+rode
+Rodent
+rodent
+Rodentia
+rodential
+rodentially
+rodentian
+rodenticidal
+rodenticide
+rodentproof
+rodeo
+Roderic
+Roderick
+rodge
+Rodger
+rodham
+Rodinal
+Rodinesque
+roding
+rodingite
+rodknight
+rodless
+rodlet
+rodlike
+rodmaker
+rodman
+Rodney
+rodney
+Rodolph
+Rodolphus
+rodomont
+rodomontade
+rodomontadist
+rodomontador
+rodsman
+rodster
+rodwood
+roe
+roeblingite
+roebuck
+roed
+roelike
+roentgen
+roentgenism
+roentgenization
+roentgenize
+roentgenogram
+roentgenograph
+roentgenographic
+roentgenographically
+roentgenography
+roentgenologic
+roentgenological
+roentgenologically
+roentgenologist
+roentgenology
+roentgenometer
+roentgenometry
+roentgenoscope
+roentgenoscopic
+roentgenoscopy
+roentgenotherapy
+roentgentherapy
+roer
+roestone
+roey
+rog
+rogan
+rogation
+Rogationtide
+rogative
+rogatory
+Roger
+roger
+Rogero
+rogersite
+roggle
+Rogue
+rogue
+roguedom
+rogueling
+roguery
+rogueship
+roguing
+roguish
+roguishly
+roguishness
+rohan
+Rohilla
+rohob
+rohun
+rohuna
+roi
+roid
+roil
+roily
+Roist
+roister
+roisterer
+roistering
+roisteringly
+roisterly
+roisterous
+roisterously
+roit
+Rok
+roka
+roke
+rokeage
+rokee
+rokelay
+roker
+rokey
+roky
+Roland
+Rolandic
+role
+roleo
+Rolf
+Rolfe
+roll
+rollable
+rollback
+rolled
+rollejee
+roller
+rollerer
+rollermaker
+rollermaking
+rollerman
+rollerskater
+rollerskating
+rolley
+rolleyway
+rolleywayman
+rolliche
+rollichie
+rollick
+rollicker
+rollicking
+rollickingly
+rollickingness
+rollicksome
+rollicksomeness
+rollicky
+rolling
+rollingly
+Rollinia
+rollix
+rollmop
+Rollo
+rollock
+rollway
+roloway
+Romaean
+Romagnese
+Romagnol
+Romagnole
+Romaic
+romaika
+Romain
+romaine
+Romaji
+romal
+Roman
+Romance
+romance
+romancealist
+romancean
+romanceful
+romanceish
+romanceishness
+romanceless
+romancelet
+romancelike
+romancemonger
+romanceproof
+romancer
+romanceress
+romancical
+romancing
+romancist
+romancy
+Romandom
+Romane
+Romanes
+Romanese
+Romanesque
+Romanhood
+Romanian
+Romanic
+Romaniform
+Romanish
+Romanism
+Romanist
+Romanistic
+Romanite
+Romanity
+romanium
+Romanization
+Romanize
+Romanizer
+Romanly
+Romansch
+Romansh
+romantic
+romantical
+romanticalism
+romanticality
+romantically
+romanticalness
+romanticism
+romanticist
+romanticistic
+romanticity
+romanticize
+romanticly
+romanticness
+romantism
+romantist
+Romany
+romanza
+romaunt
+rombos
+rombowline
+Rome
+romeite
+Romeo
+romerillo
+romero
+Romescot
+Romeshot
+Romeward
+Romewards
+Romic
+Romipetal
+Romish
+Romishly
+Romishness
+rommack
+Rommany
+Romney
+Romneya
+romp
+romper
+romping
+rompingly
+rompish
+rompishly
+rompishness
+rompu
+rompy
+Romulian
+Romulus
+Ron
+Ronald
+roncador
+Roncaglian
+roncet
+ronco
+rond
+rondache
+rondacher
+rondawel
+ronde
+rondeau
+rondel
+rondelet
+Rondeletia
+rondelier
+rondelle
+rondellier
+rondino
+rondle
+rondo
+rondoletto
+rondure
+rone
+Rong
+Ronga
+rongeur
+Ronni
+ronquil
+Ronsardian
+Ronsardism
+Ronsardist
+Ronsardize
+Ronsdorfer
+Ronsdorfian
+rontgen
+ronyon
+rood
+roodebok
+roodle
+roodstone
+roof
+roofage
+roofer
+roofing
+roofless
+rooflet
+rooflike
+roofman
+rooftree
+roofward
+roofwise
+roofy
+rooibok
+rooinek
+rook
+rooker
+rookeried
+rookery
+rookie
+rookish
+rooklet
+rooklike
+rooky
+rool
+room
+roomage
+roomed
+roomer
+roomful
+roomie
+roomily
+roominess
+roomkeeper
+roomless
+roomlet
+roommate
+roomstead
+roomth
+roomthily
+roomthiness
+roomthy
+roomward
+roomy
+roon
+roorback
+roosa
+Roosevelt
+Rooseveltian
+roost
+roosted
+rooster
+roosterfish
+roosterhood
+roosterless
+roosters
+roostership
+Root
+root
+rootage
+rootcap
+rooted
+rootedly
+rootedness
+rooter
+rootery
+rootfast
+rootfastness
+roothold
+rootiness
+rootle
+rootless
+rootlessness
+rootlet
+rootlike
+rootling
+rootstalk
+rootstock
+rootwalt
+rootward
+rootwise
+rootworm
+rooty
+roove
+ropable
+rope
+ropeable
+ropeband
+ropebark
+ropedance
+ropedancer
+ropedancing
+ropelayer
+ropelaying
+ropelike
+ropemaker
+ropemaking
+ropeman
+roper
+roperipe
+ropery
+ropes
+ropesmith
+ropetrick
+ropewalk
+ropewalker
+ropeway
+ropework
+ropily
+ropiness
+roping
+ropish
+ropishness
+ropp
+ropy
+roque
+roquelaure
+roquer
+roquet
+roquette
+roquist
+roral
+roratorio
+Rori
+roric
+Roridula
+Roridulaceae
+roriferous
+rorifluent
+Roripa
+Rorippa
+roritorious
+rorqual
+rorty
+rorulent
+rory
+Rosa
+Rosabel
+Rosabella
+Rosaceae
+rosacean
+rosaceous
+rosal
+Rosales
+Rosalia
+Rosalie
+Rosalind
+Rosaline
+Rosamond
+rosanilin
+rosaniline
+rosarian
+rosario
+rosarium
+rosaruby
+rosary
+rosated
+Roschach
+roscherite
+roscid
+roscoelite
+rose
+roseal
+roseate
+roseately
+rosebay
+rosebud
+rosebush
+rosed
+rosedrop
+rosefish
+rosehead
+rosehill
+rosehiller
+roseine
+rosel
+roseless
+roselet
+roselike
+roselite
+rosella
+rosellate
+roselle
+Rosellinia
+rosemary
+Rosenbergia
+rosenbuschite
+roseola
+roseolar
+roseoliform
+roseolous
+roseous
+roseroot
+rosery
+roset
+rosetan
+rosetangle
+rosetime
+Rosetta
+rosette
+rosetted
+rosetty
+rosetum
+rosety
+roseways
+rosewise
+rosewood
+rosewort
+Rosicrucian
+Rosicrucianism
+rosied
+rosier
+rosieresite
+rosilla
+rosillo
+rosily
+rosin
+rosinate
+rosinduline
+Rosine
+rosiness
+rosinous
+rosinweed
+rosinwood
+rosiny
+rosland
+rosmarine
+Rosmarinus
+Rosminian
+Rosminianism
+rosoli
+rosolic
+rosolio
+rosolite
+rosorial
+Ross
+ross
+rosser
+rossite
+rostel
+rostellar
+Rostellaria
+rostellarian
+rostellate
+rostelliform
+rostellum
+roster
+rostra
+rostral
+rostrally
+rostrate
+rostrated
+rostriferous
+rostriform
+rostroantennary
+rostrobranchial
+rostrocarinate
+rostrocaudal
+rostroid
+rostrolateral
+rostrular
+rostrulate
+rostrulum
+rostrum
+rosular
+rosulate
+rosy
+rot
+rota
+rotacism
+Rotal
+rotal
+Rotala
+Rotalia
+rotalian
+rotaliform
+rotaliiform
+rotaman
+rotameter
+rotan
+Rotanev
+rotang
+Rotarian
+Rotarianism
+rotarianize
+Rotary
+rotary
+rotascope
+rotatable
+rotate
+rotated
+rotating
+rotation
+rotational
+rotative
+rotatively
+rotativism
+rotatodentate
+rotatoplane
+rotator
+Rotatoria
+rotatorian
+rotatory
+rotch
+rote
+rotella
+rotenone
+roter
+rotge
+rotgut
+rother
+rothermuck
+rotifer
+Rotifera
+rotiferal
+rotiferan
+rotiferous
+rotiform
+rotisserie
+roto
+rotograph
+rotogravure
+rotor
+rotorcraft
+rotproof
+Rotse
+rottan
+rotten
+rottenish
+rottenly
+rottenness
+rottenstone
+rotter
+rotting
+rottle
+rottlera
+rottlerin
+rottock
+rottolo
+rotula
+rotulad
+rotular
+rotulet
+rotulian
+rotuliform
+rotulus
+rotund
+rotunda
+rotundate
+rotundifoliate
+rotundifolious
+rotundiform
+rotundify
+rotundity
+rotundly
+rotundness
+rotundo
+rotundotetragonal
+roub
+roucou
+roud
+roue
+rouelle
+rouge
+rougeau
+rougeberry
+rougelike
+rougemontite
+rougeot
+rough
+roughage
+roughcast
+roughcaster
+roughdraft
+roughdraw
+roughdress
+roughdry
+roughen
+roughener
+rougher
+roughet
+roughhearted
+roughheartedness
+roughhew
+roughhewer
+roughhewn
+roughhouse
+roughhouser
+roughhousing
+roughhousy
+roughie
+roughing
+roughings
+roughish
+roughishly
+roughishness
+roughleg
+roughly
+roughness
+roughometer
+roughride
+roughrider
+roughroot
+roughscuff
+roughsetter
+roughshod
+roughslant
+roughsome
+roughstring
+roughstuff
+roughtail
+roughtailed
+roughwork
+roughwrought
+roughy
+rougy
+rouille
+rouky
+roulade
+rouleau
+roulette
+Rouman
+Roumeliote
+roun
+rounce
+rounceval
+rouncy
+round
+roundabout
+roundaboutly
+roundaboutness
+rounded
+roundedly
+roundedness
+roundel
+roundelay
+roundeleer
+rounder
+roundfish
+roundhead
+roundheaded
+roundheadedness
+roundhouse
+rounding
+roundish
+roundishness
+roundlet
+roundline
+roundly
+roundmouthed
+roundness
+roundnose
+roundnosed
+roundridge
+roundseam
+roundsman
+roundtail
+roundtop
+roundtree
+roundup
+roundwise
+roundwood
+roundworm
+roundy
+roup
+rouper
+roupet
+roupily
+roupingwife
+roupit
+roupy
+rouse
+rouseabout
+rousedness
+rousement
+rouser
+rousing
+rousingly
+Rousseau
+Rousseauan
+Rousseauism
+Rousseauist
+Rousseauistic
+Rousseauite
+Roussellian
+roussette
+Roussillon
+roust
+roustabout
+rouster
+rousting
+rout
+route
+router
+routh
+routhercock
+routhie
+routhiness
+routhy
+routinary
+routine
+routineer
+routinely
+routing
+routinish
+routinism
+routinist
+routinization
+routinize
+routivarite
+routous
+routously
+rouvillite
+rove
+rover
+rovet
+rovetto
+roving
+rovingly
+rovingness
+row
+rowable
+rowan
+rowanberry
+rowboat
+rowdily
+rowdiness
+rowdy
+rowdydow
+rowdydowdy
+rowdyish
+rowdyishly
+rowdyishness
+rowdyism
+rowdyproof
+rowed
+rowel
+rowelhead
+rowen
+Rowena
+rower
+rowet
+rowiness
+rowing
+Rowland
+rowlandite
+Rowleian
+rowlet
+Rowley
+Rowleyan
+rowlock
+rowport
+rowty
+rowy
+rox
+Roxana
+Roxane
+Roxanne
+Roxburgh
+Roxburghiaceae
+Roxbury
+Roxie
+Roxolani
+Roxy
+roxy
+Roy
+royal
+royale
+royalet
+royalism
+royalist
+royalization
+royalize
+royally
+royalty
+Royena
+royet
+royetness
+royetous
+royetously
+Roystonea
+royt
+rozum
+Rua
+ruach
+ruana
+rub
+rubasse
+rubato
+rubbed
+rubber
+rubberer
+rubberize
+rubberless
+rubberneck
+rubbernecker
+rubbernose
+rubbers
+rubberstone
+rubberwise
+rubbery
+rubbing
+rubbingstone
+rubbish
+rubbishing
+rubbishingly
+rubbishly
+rubbishry
+rubbishy
+rubble
+rubbler
+rubblestone
+rubblework
+rubbly
+rubdown
+Rube
+rubedinous
+rubedity
+rubefacient
+rubefaction
+rubelet
+rubella
+rubelle
+rubellite
+rubellosis
+Rubensian
+rubeola
+rubeolar
+rubeoloid
+ruberythric
+ruberythrinic
+rubescence
+rubescent
+Rubia
+Rubiaceae
+rubiaceous
+Rubiales
+rubianic
+rubiate
+rubiator
+rubican
+rubicelle
+Rubicola
+Rubicon
+rubiconed
+rubicund
+rubicundity
+rubidic
+rubidine
+rubidium
+rubied
+rubific
+rubification
+rubificative
+rubify
+rubiginous
+rubijervine
+rubine
+rubineous
+rubious
+ruble
+rublis
+rubor
+rubric
+rubrica
+rubrical
+rubricality
+rubrically
+rubricate
+rubrication
+rubricator
+rubrician
+rubricism
+rubricist
+rubricity
+rubricize
+rubricose
+rubrific
+rubrification
+rubrify
+rubrisher
+rubrospinal
+rubstone
+Rubus
+ruby
+rubylike
+rubytail
+rubythroat
+rubywise
+rucervine
+Rucervus
+Ruchbah
+ruche
+ruching
+ruck
+rucker
+ruckle
+ruckling
+rucksack
+rucksey
+ruckus
+rucky
+ructation
+ruction
+rud
+rudas
+Rudbeckia
+rudd
+rudder
+rudderhead
+rudderhole
+rudderless
+rudderlike
+rudderpost
+rudderstock
+ruddied
+ruddily
+ruddiness
+ruddle
+ruddleman
+ruddock
+ruddy
+ruddyish
+rude
+rudely
+rudeness
+rudented
+rudenture
+ruderal
+rudesby
+Rudesheimer
+rudge
+rudiment
+rudimental
+rudimentarily
+rudimentariness
+rudimentary
+rudimentation
+rudish
+Rudista
+Rudistae
+rudistan
+rudistid
+rudity
+Rudmasday
+Rudolf
+Rudolph
+Rudolphus
+Rudy
+rue
+rueful
+ruefully
+ruefulness
+ruelike
+ruelle
+Ruellia
+ruen
+ruer
+ruesome
+ruesomeness
+ruewort
+rufescence
+rufescent
+ruff
+ruffable
+ruffed
+ruffer
+ruffian
+ruffianage
+ruffiandom
+ruffianhood
+ruffianish
+ruffianism
+ruffianize
+ruffianlike
+ruffianly
+ruffiano
+ruffin
+ruffle
+ruffled
+ruffleless
+rufflement
+ruffler
+rufflike
+ruffliness
+ruffling
+ruffly
+ruficarpous
+ruficaudate
+ruficoccin
+ruficornate
+rufigallic
+rufoferruginous
+rufofulvous
+rufofuscous
+rufopiceous
+rufotestaceous
+rufous
+rufter
+rufulous
+Rufus
+rufus
+rug
+ruga
+rugate
+Rugbeian
+Rugby
+rugged
+ruggedly
+ruggedness
+Rugger
+rugging
+ruggle
+ruggy
+rugheaded
+ruglike
+rugmaker
+rugmaking
+Rugosa
+rugosa
+rugose
+rugosely
+rugosity
+rugous
+rugulose
+ruin
+ruinable
+ruinate
+ruination
+ruinatious
+ruinator
+ruined
+ruiner
+ruing
+ruiniform
+ruinlike
+ruinous
+ruinously
+ruinousness
+ruinproof
+Rukbat
+rukh
+rulable
+Rulander
+rule
+ruledom
+ruleless
+rulemonger
+ruler
+rulership
+ruling
+rulingly
+rull
+ruller
+rullion
+Rum
+rum
+rumal
+Ruman
+Rumanian
+rumbelow
+rumble
+rumblegarie
+rumblegumption
+rumblement
+rumbler
+rumbling
+rumblingly
+rumbly
+rumbo
+rumbooze
+rumbowline
+rumbowling
+rumbullion
+rumbumptious
+rumbustical
+rumbustious
+rumbustiousness
+rumchunder
+Rumelian
+rumen
+rumenitis
+rumenocentesis
+rumenotomy
+Rumex
+rumfustian
+rumgumption
+rumgumptious
+ruminal
+ruminant
+Ruminantia
+ruminantly
+ruminate
+ruminating
+ruminatingly
+rumination
+ruminative
+ruminatively
+ruminator
+rumkin
+rumless
+rumly
+rummage
+rummager
+rummagy
+rummer
+rummily
+rumminess
+rummish
+rummy
+rumness
+rumney
+rumor
+rumorer
+rumormonger
+rumorous
+rumorproof
+rumourmonger
+rump
+rumpad
+rumpadder
+rumpade
+Rumper
+rumple
+rumpless
+rumply
+rumpscuttle
+rumpuncheon
+rumpus
+rumrunner
+rumrunning
+rumshop
+rumswizzle
+rumtytoo
+run
+runabout
+runagate
+runaround
+runaway
+runback
+runboard
+runby
+runch
+runchweed
+runcinate
+rundale
+Rundi
+rundle
+rundlet
+rune
+runecraft
+runed
+runefolk
+runeless
+runelike
+runer
+runesmith
+runestaff
+runeword
+runfish
+rung
+runghead
+rungless
+runholder
+runic
+runically
+runiform
+runite
+runkeeper
+runkle
+runkly
+runless
+runlet
+runman
+runnable
+runnel
+runner
+runnet
+running
+runningly
+runny
+runoff
+runologist
+runology
+runout
+runover
+runproof
+runrig
+runround
+runt
+runted
+runtee
+runtiness
+runtish
+runtishly
+runtishness
+runty
+runway
+rupa
+rupee
+Rupert
+rupestral
+rupestrian
+rupestrine
+rupia
+rupiah
+rupial
+Rupicapra
+Rupicaprinae
+rupicaprine
+Rupicola
+Rupicolinae
+rupicoline
+rupicolous
+rupie
+rupitic
+Ruppia
+ruptile
+ruption
+ruptive
+ruptuary
+rupturable
+rupture
+ruptured
+rupturewort
+rural
+ruralism
+ruralist
+ruralite
+rurality
+ruralization
+ruralize
+rurally
+ruralness
+rurban
+ruridecanal
+rurigenous
+Ruritania
+Ruritanian
+ruru
+Rus
+Rusa
+Ruscus
+ruse
+rush
+rushbush
+rushed
+rushen
+rusher
+rushiness
+rushing
+rushingly
+rushingness
+rushland
+rushlight
+rushlighted
+rushlike
+rushlit
+rushy
+Rusin
+rusine
+rusk
+ruskin
+Ruskinian
+rusky
+rusma
+rusot
+ruspone
+Russ
+russel
+Russelia
+Russell
+Russellite
+Russene
+russet
+russeting
+russetish
+russetlike
+russety
+Russia
+russia
+Russian
+Russianism
+Russianist
+Russianization
+Russianize
+Russification
+Russificator
+Russifier
+Russify
+Russine
+Russism
+Russniak
+Russolatrous
+Russolatry
+Russomania
+Russomaniac
+Russomaniacal
+Russophile
+Russophilism
+Russophilist
+Russophobe
+Russophobia
+Russophobiac
+Russophobism
+Russophobist
+russud
+Russula
+rust
+rustable
+rustful
+rustic
+rustical
+rustically
+rusticalness
+rusticate
+rustication
+rusticator
+rusticial
+rusticism
+rusticity
+rusticize
+rusticly
+rusticness
+rusticoat
+rustily
+rustiness
+rustle
+rustler
+rustless
+rustling
+rustlingly
+rustlingness
+rustly
+rustproof
+rustre
+rustred
+Rusty
+rusty
+rustyback
+rustyish
+ruswut
+rut
+Ruta
+rutabaga
+Rutaceae
+rutaceous
+rutaecarpine
+rutate
+rutch
+rutelian
+Rutelinae
+Ruth
+ruth
+ruthenate
+Ruthene
+Ruthenian
+ruthenic
+ruthenious
+ruthenium
+ruthenous
+ruther
+rutherford
+rutherfordine
+rutherfordite
+ruthful
+ruthfully
+ruthfulness
+ruthless
+ruthlessly
+ruthlessness
+rutic
+rutidosis
+rutilant
+rutilated
+rutile
+rutilous
+rutin
+rutinose
+Rutiodon
+ruttee
+rutter
+ruttiness
+ruttish
+ruttishly
+ruttishness
+rutty
+Rutuli
+rutyl
+rutylene
+ruvid
+rux
+rvulsant
+ryal
+ryania
+rybat
+ryder
+rye
+ryen
+Rymandra
+ryme
+Rynchospora
+rynchosporous
+rynd
+rynt
+ryot
+ryotwar
+ryotwari
+rype
+rypeck
+rytidosis
+Rytina
+Ryukyu
+S
+s
+sa
+saa
+Saad
+Saan
+Saarbrucken
+sab
+Saba
+sabadilla
+sabadine
+sabadinine
+Sabaean
+Sabaeanism
+Sabaeism
+sabaigrass
+Sabaism
+Sabaist
+Sabal
+Sabalaceae
+sabalo
+Saban
+sabanut
+Sabaoth
+Sabathikos
+Sabazian
+Sabazianism
+Sabazios
+sabbat
+Sabbatarian
+Sabbatarianism
+Sabbatary
+Sabbatean
+Sabbath
+sabbath
+Sabbathaian
+Sabbathaic
+Sabbathaist
+Sabbathbreaker
+Sabbathbreaking
+Sabbathism
+Sabbathize
+Sabbathkeeper
+Sabbathkeeping
+Sabbathless
+Sabbathlike
+Sabbathly
+Sabbatia
+sabbatia
+Sabbatian
+Sabbatic
+sabbatic
+Sabbatical
+sabbatical
+Sabbatically
+Sabbaticalness
+sabbatine
+sabbatism
+Sabbatist
+Sabbatization
+Sabbatize
+sabbaton
+sabbitha
+sabdariffa
+sabe
+sabeca
+Sabella
+sabella
+sabellan
+Sabellaria
+sabellarian
+Sabelli
+Sabellian
+Sabellianism
+Sabellianize
+sabellid
+Sabellidae
+sabelloid
+saber
+saberbill
+sabered
+saberleg
+saberlike
+saberproof
+sabertooth
+saberwing
+Sabia
+Sabiaceae
+sabiaceous
+Sabian
+Sabianism
+sabicu
+Sabik
+Sabina
+sabina
+Sabine
+sabine
+Sabinian
+sabino
+Sabir
+sable
+sablefish
+sableness
+sably
+sabora
+saboraim
+sabot
+sabotage
+saboted
+saboteur
+sabotine
+Sabra
+sabra
+sabretache
+Sabrina
+Sabromin
+sabromin
+Sabuja
+sabuline
+sabulite
+sabulose
+sabulosity
+sabulous
+sabulum
+saburra
+saburral
+saburration
+sabutan
+sabzi
+Sac
+sac
+Sacae
+sacalait
+sacaline
+sacaton
+sacatra
+sacbrood
+saccade
+saccadic
+Saccammina
+saccate
+saccated
+Saccha
+saccharamide
+saccharase
+saccharate
+saccharated
+saccharephidrosis
+saccharic
+saccharide
+sacchariferous
+saccharification
+saccharifier
+saccharify
+saccharilla
+saccharimeter
+saccharimetric
+saccharimetrical
+saccharimetry
+saccharin
+saccharinate
+saccharinated
+saccharine
+saccharineish
+saccharinely
+saccharinic
+saccharinity
+saccharization
+saccharize
+saccharobacillus
+saccharobiose
+saccharobutyric
+saccharoceptive
+saccharoceptor
+saccharochemotropic
+saccharocolloid
+saccharofarinaceous
+saccharogalactorrhea
+saccharogenic
+saccharohumic
+saccharoid
+saccharoidal
+saccharolactonic
+saccharolytic
+saccharometabolic
+saccharometabolism
+saccharometer
+saccharometric
+saccharometry
+saccharomucilaginous
+Saccharomyces
+saccharomyces
+Saccharomycetaceae
+saccharomycetaceous
+Saccharomycetales
+saccharomycete
+Saccharomycetes
+saccharomycetic
+saccharomycosis
+saccharon
+saccharonate
+saccharone
+saccharonic
+saccharophylly
+saccharorrhea
+saccharoscope
+saccharose
+saccharostarchy
+saccharosuria
+saccharotriose
+saccharous
+saccharulmic
+saccharulmin
+Saccharum
+saccharum
+saccharuria
+sacciferous
+sacciform
+Saccobranchiata
+saccobranchiate
+Saccobranchus
+saccoderm
+Saccolabium
+saccolabium
+saccomyian
+saccomyid
+Saccomyidae
+Saccomyina
+saccomyine
+saccomyoid
+Saccomyoidea
+saccomyoidean
+Saccomys
+Saccopharyngidae
+Saccopharynx
+Saccorhiza
+saccos
+saccular
+sacculate
+sacculated
+sacculation
+saccule
+Sacculina
+sacculoutricular
+sacculus
+saccus
+sacellum
+sacerdocy
+sacerdotage
+sacerdotal
+sacerdotalism
+sacerdotalist
+sacerdotalize
+sacerdotally
+sacerdotical
+sacerdotism
+sachamaker
+sachem
+sachemdom
+sachemic
+sachemship
+sachet
+Sacheverell
+Sacian
+sack
+sackage
+sackamaker
+sackbag
+sackbut
+sackcloth
+sackclothed
+sackdoudle
+sacked
+sacken
+sacker
+sackful
+sacking
+sackless
+sacklike
+sackmaker
+sackmaking
+sackman
+sacktime
+saclike
+saco
+sacope
+sacque
+sacra
+sacrad
+sacral
+sacralgia
+sacralization
+sacrament
+sacramental
+sacramentalism
+sacramentalist
+sacramentality
+sacramentally
+sacramentalness
+Sacramentarian
+sacramentarian
+sacramentarianism
+sacramentarist
+Sacramentary
+sacramentary
+sacramenter
+sacramentism
+sacramentize
+Sacramento
+sacramentum
+sacraria
+sacrarial
+sacrarium
+sacrectomy
+sacred
+sacredly
+sacredness
+sacrificable
+sacrificant
+Sacrificati
+sacrification
+sacrificator
+sacrificatory
+sacrificature
+sacrifice
+sacrificer
+sacrificial
+sacrificially
+sacrificing
+sacrilege
+sacrileger
+sacrilegious
+sacrilegiously
+sacrilegiousness
+sacrilegist
+sacrilumbal
+sacrilumbalis
+sacring
+Sacripant
+sacrist
+sacristan
+sacristy
+sacro
+sacrocaudal
+sacrococcygeal
+sacrococcygean
+sacrococcygeus
+sacrococcyx
+sacrocostal
+sacrocotyloid
+sacrocotyloidean
+sacrocoxalgia
+sacrocoxitis
+sacrodorsal
+sacrodynia
+sacrofemoral
+sacroiliac
+sacroinguinal
+sacroischiac
+sacroischiadic
+sacroischiatic
+sacrolumbal
+sacrolumbalis
+sacrolumbar
+sacropectineal
+sacroperineal
+sacropictorial
+sacroposterior
+sacropubic
+sacrorectal
+sacrosanct
+sacrosanctity
+sacrosanctness
+sacrosciatic
+sacrosecular
+sacrospinal
+sacrospinalis
+sacrospinous
+sacrotomy
+sacrotuberous
+sacrovertebral
+sacrum
+sad
+Sadachbia
+Sadalmelik
+Sadalsuud
+sadden
+saddening
+saddeningly
+saddik
+saddirham
+saddish
+saddle
+saddleback
+saddlebag
+saddlebow
+saddlecloth
+saddled
+saddleleaf
+saddleless
+saddlelike
+saddlenose
+saddler
+saddlery
+saddlesick
+saddlesore
+saddlesoreness
+saddlestead
+saddletree
+saddlewise
+saddling
+Sadducaic
+Sadducean
+Sadducee
+Sadduceeism
+Sadduceeist
+Sadducism
+Sadducize
+sade
+sadh
+sadhe
+sadhearted
+sadhu
+sadic
+Sadie
+sadiron
+sadism
+sadist
+sadistic
+sadistically
+Sadite
+sadly
+sadness
+sado
+sadomasochism
+Sadr
+sadr
+saecula
+saeculum
+Saeima
+saernaite
+saeter
+saeume
+Safar
+safari
+Safavi
+Safawid
+safe
+safeblower
+safeblowing
+safebreaker
+safebreaking
+safecracking
+safeguard
+safeguarder
+safehold
+safekeeper
+safekeeping
+safelight
+safely
+safemaker
+safemaking
+safen
+safener
+safeness
+safety
+Saffarian
+Saffarid
+saffian
+safflor
+safflorite
+safflow
+safflower
+saffron
+saffroned
+saffrontree
+saffronwood
+saffrony
+Safi
+Safine
+Safini
+safranin
+safranine
+safranophile
+safrole
+saft
+sag
+saga
+sagaciate
+sagacious
+sagaciously
+sagaciousness
+sagacity
+Sagai
+sagaie
+sagaman
+sagamite
+sagamore
+sagapenum
+sagathy
+sage
+sagebrush
+sagebrusher
+sagebush
+sageleaf
+sagely
+sagene
+sageness
+sagenite
+sagenitic
+Sageretia
+sagerose
+sageship
+sagewood
+sagger
+sagging
+saggon
+saggy
+saghavart
+Sagina
+saginate
+sagination
+saging
+Sagitarii
+sagitta
+sagittal
+sagittally
+Sagittaria
+Sagittariid
+Sagittarius
+sagittarius
+Sagittary
+sagittary
+sagittate
+Sagittid
+sagittiferous
+sagittiform
+sagittocyst
+sagittoid
+sagless
+sago
+sagoin
+sagolike
+Sagra
+saguaro
+Saguerus
+sagum
+saguran
+sagvandite
+sagwire
+sagy
+sah
+Sahadeva
+Sahaptin
+Sahara
+Saharan
+Saharian
+Saharic
+sahh
+sahib
+Sahibah
+Sahidic
+sahme
+Saho
+sahoukar
+sahukar
+sai
+saic
+said
+Saidi
+Saify
+saiga
+Saiid
+sail
+sailable
+sailage
+sailboat
+sailcloth
+sailed
+sailer
+sailfish
+sailflying
+sailing
+sailingly
+sailless
+sailmaker
+sailmaking
+sailor
+sailoring
+sailorizing
+sailorless
+sailorlike
+sailorly
+sailorman
+sailorproof
+sailplane
+sailship
+sailsman
+saily
+saim
+saimiri
+saimy
+sain
+Sainfoin
+saint
+saintdom
+sainted
+saintess
+sainthood
+saintish
+saintism
+saintless
+saintlike
+saintlily
+saintliness
+saintling
+saintly
+saintologist
+saintology
+Saintpaulia
+saintship
+saip
+Saiph
+sair
+sairly
+sairve
+sairy
+Saite
+saithe
+Saitic
+Saiva
+Saivism
+saj
+sajou
+Sak
+Saka
+Sakai
+Sakalava
+sake
+sakeber
+sakeen
+Sakel
+Sakelarides
+Sakell
+Sakellaridis
+saker
+sakeret
+Sakha
+saki
+sakieh
+Sakkara
+Saktism
+sakulya
+Sakyamuni
+Sal
+sal
+salaam
+salaamlike
+salability
+salable
+salableness
+salably
+salaceta
+salacious
+salaciously
+salaciousness
+salacity
+salacot
+salad
+salading
+salago
+salagrama
+salal
+salamandarin
+salamander
+salamanderlike
+Salamandra
+salamandrian
+Salamandridae
+salamandriform
+Salamandrina
+salamandrine
+salamandroid
+salambao
+Salaminian
+salamo
+salampore
+salangane
+salangid
+Salangidae
+Salar
+salar
+salariat
+salaried
+salary
+salaryless
+salat
+salay
+sale
+salegoer
+salele
+salema
+salenixon
+salep
+saleratus
+saleroom
+salesclerk
+Salesian
+saleslady
+salesman
+salesmanship
+salespeople
+salesperson
+salesroom
+saleswoman
+salework
+saleyard
+salfern
+Salian
+Saliaric
+Salic
+salic
+Salicaceae
+salicaceous
+Salicales
+Salicariaceae
+salicetum
+salicin
+salicional
+salicorn
+Salicornia
+salicyl
+salicylal
+salicylaldehyde
+salicylamide
+salicylanilide
+salicylase
+salicylate
+salicylic
+salicylide
+salicylidene
+salicylism
+salicylize
+salicylous
+salicyluric
+salicylyl
+salience
+salient
+Salientia
+salientian
+saliently
+saliferous
+salifiable
+salification
+salify
+saligenin
+saligot
+salimeter
+salimetry
+Salina
+salina
+Salinan
+salination
+saline
+Salinella
+salinelle
+salineness
+saliniferous
+salinification
+saliniform
+salinity
+salinize
+salinometer
+salinometry
+salinosulphureous
+salinoterreous
+Salisburia
+Salish
+Salishan
+salite
+salited
+Saliva
+saliva
+salival
+Salivan
+salivant
+salivary
+salivate
+salivation
+salivator
+salivatory
+salivous
+Salix
+salix
+salle
+sallee
+salleeman
+sallenders
+sallet
+sallier
+salloo
+sallow
+sallowish
+sallowness
+sallowy
+Sally
+sally
+Sallybloom
+sallyman
+sallywood
+Salm
+salma
+salmagundi
+salmiac
+salmine
+salmis
+Salmo
+Salmon
+salmon
+salmonberry
+Salmonella
+salmonella
+salmonellae
+salmonellosis
+salmonet
+salmonid
+Salmonidae
+salmoniform
+salmonlike
+salmonoid
+Salmonoidea
+Salmonoidei
+salmonsite
+salmwood
+salnatron
+Salol
+salol
+Salome
+salometer
+salometry
+salomon
+Salomonia
+Salomonian
+Salomonic
+salon
+saloon
+saloonist
+saloonkeeper
+saloop
+Salopian
+salopian
+salp
+Salpa
+salpa
+salpacean
+salpian
+salpicon
+Salpidae
+salpiform
+Salpiglossis
+salpiglossis
+salpingectomy
+salpingemphraxis
+salpinges
+salpingian
+salpingion
+salpingitic
+salpingitis
+salpingocatheterism
+salpingocele
+salpingocyesis
+salpingomalleus
+salpingonasal
+salpingopalatal
+salpingopalatine
+salpingoperitonitis
+salpingopexy
+salpingopharyngeal
+salpingopharyngeus
+salpingopterygoid
+salpingorrhaphy
+salpingoscope
+salpingostaphyline
+salpingostenochoria
+salpingostomatomy
+salpingostomy
+salpingotomy
+salpinx
+salpoid
+salse
+salsifis
+salsify
+salsilla
+Salsola
+Salsolaceae
+salsolaceous
+salsuginous
+salt
+salta
+saltant
+saltarella
+saltarello
+saltary
+saltate
+saltation
+saltativeness
+Saltator
+saltator
+Saltatoria
+saltatorial
+saltatorian
+saltatoric
+saltatorious
+saltatory
+saltbush
+saltcat
+saltcatch
+saltcellar
+salted
+saltee
+salten
+salter
+saltern
+saltery
+saltfat
+saltfoot
+salthouse
+saltier
+saltierra
+saltierwise
+Saltigradae
+saltigrade
+saltimbanco
+saltimbank
+saltimbankery
+saltine
+saltiness
+salting
+saltish
+saltishly
+saltishness
+saltless
+saltlessness
+saltly
+saltmaker
+saltmaking
+saltman
+saltmouth
+saltness
+saltometer
+saltorel
+saltpan
+saltpeter
+saltpetrous
+saltpond
+saltspoon
+saltspoonful
+saltsprinkler
+saltus
+saltweed
+saltwife
+saltworker
+saltworks
+saltwort
+salty
+salubrify
+salubrious
+salubriously
+salubriousness
+salubrity
+saluki
+salung
+salutarily
+salutariness
+salutary
+salutation
+salutational
+salutationless
+salutatious
+salutatorian
+salutatorily
+salutatorium
+salutatory
+salute
+saluter
+salutiferous
+salutiferously
+Salva
+salvability
+salvable
+salvableness
+salvably
+Salvadora
+salvadora
+Salvadoraceae
+salvadoraceous
+Salvadoran
+Salvadorian
+salvage
+salvageable
+salvagee
+salvageproof
+salvager
+salvaging
+Salvarsan
+salvarsan
+salvatella
+salvation
+salvational
+salvationism
+salvationist
+salvatory
+salve
+salveline
+Salvelinus
+salver
+salverform
+Salvia
+salvianin
+salvific
+salvifical
+salvifically
+Salvinia
+Salviniaceae
+salviniaceous
+Salviniales
+salviol
+salvo
+salvor
+salvy
+Salwey
+salzfelle
+Sam
+sam
+Samadera
+samadh
+samadhi
+samaj
+Samal
+saman
+Samandura
+Samani
+Samanid
+Samantha
+samara
+samaria
+samariform
+Samaritan
+Samaritaness
+Samaritanism
+samarium
+Samarkand
+samaroid
+samarra
+samarskite
+Samas
+samba
+Sambal
+sambal
+sambaqui
+sambar
+Sambara
+Sambathe
+sambhogakaya
+Sambo
+sambo
+Sambucaceae
+Sambucus
+sambuk
+sambuke
+sambunigrin
+Samburu
+same
+samekh
+samel
+sameliness
+samely
+samen
+sameness
+samesome
+Samgarnebo
+samh
+Samhain
+samhita
+Samian
+samiel
+Samir
+samiresite
+samiri
+samisen
+Samish
+samite
+samkara
+samlet
+sammel
+sammer
+sammier
+Sammy
+sammy
+Samnani
+Samnite
+Samoan
+Samogitian
+samogonka
+Samolus
+Samosatenian
+samothere
+Samotherium
+Samothracian
+samovar
+Samoyed
+Samoyedic
+samp
+sampaguita
+sampaloc
+sampan
+samphire
+sampi
+sample
+sampleman
+sampler
+samplery
+sampling
+Sampsaean
+Samsam
+samsara
+samshu
+Samsien
+samskara
+Samson
+samson
+Samsoness
+Samsonian
+Samsonic
+Samsonistic
+samsonite
+Samucan
+Samucu
+Samuel
+samurai
+Samydaceae
+San
+san
+sanability
+sanable
+sanableness
+sanai
+Sanand
+sanative
+sanativeness
+sanatoria
+sanatorium
+sanatory
+Sanballat
+sanbenito
+Sanche
+sancho
+sanct
+sancta
+sanctanimity
+sanctifiable
+sanctifiableness
+sanctifiably
+sanctificate
+sanctification
+sanctified
+sanctifiedly
+sanctifier
+sanctify
+sanctifyingly
+sanctilogy
+sanctiloquent
+sanctimonial
+sanctimonious
+sanctimoniously
+sanctimoniousness
+sanctimony
+sanction
+sanctionable
+sanctionary
+sanctionative
+sanctioner
+sanctionist
+sanctionless
+sanctionment
+sanctitude
+sanctity
+sanctologist
+Sanctology
+sanctorium
+sanctuaried
+sanctuarize
+sanctuary
+sanctum
+Sanctus
+Sancy
+sancyite
+sand
+sandak
+sandal
+sandaled
+sandaliform
+sandaling
+sandalwood
+sandalwort
+sandan
+sandarac
+sandaracin
+sandastros
+Sandawe
+sandbag
+sandbagger
+sandbank
+sandbin
+sandblast
+sandboard
+sandbox
+sandboy
+sandbur
+sandclub
+sandculture
+sanded
+Sandeep
+Sandemanian
+Sandemanianism
+Sandemanism
+Sander
+sander
+sanderling
+sanders
+sandfish
+sandflower
+sandglass
+sandheat
+sandhi
+sandiferous
+sandiness
+sanding
+Sandip
+sandiver
+sandix
+sandlapper
+sandless
+sandlike
+sandling
+sandman
+sandnatter
+sandnecker
+sandpaper
+sandpaperer
+sandpeep
+sandpiper
+sandproof
+Sandra
+sandrock
+sandspit
+sandspur
+sandstay
+sandstone
+sandstorm
+sandust
+sandweed
+sandweld
+sandwich
+sandwood
+sandworm
+sandwort
+Sandy
+sandy
+sandyish
+sane
+sanely
+saneness
+Sanetch
+Sanford
+Sanforized
+sang
+sanga
+Sangamon
+sangar
+sangaree
+sangei
+sanger
+sangerbund
+sangerfest
+Sanggil
+sangha
+Sangho
+Sangir
+Sangirese
+sanglant
+sangley
+Sangraal
+sangreeroot
+sangrel
+sangsue
+sanguicolous
+sanguifacient
+sanguiferous
+sanguification
+sanguifier
+sanguifluous
+sanguimotor
+sanguimotory
+sanguinaceous
+Sanguinaria
+sanguinarily
+sanguinariness
+sanguinary
+sanguine
+sanguineless
+sanguinely
+sanguineness
+sanguineobilious
+sanguineophlegmatic
+sanguineous
+sanguineousness
+sanguineovascular
+sanguinicolous
+sanguiniferous
+sanguinification
+sanguinism
+sanguinity
+sanguinivorous
+sanguinocholeric
+sanguinolency
+sanguinolent
+sanguinopoietic
+sanguinous
+Sanguisorba
+Sanguisorbaceae
+sanguisuge
+sanguisugent
+sanguisugous
+sanguivorous
+Sanhedrim
+Sanhedrin
+Sanhedrist
+Sanhita
+sanicle
+Sanicula
+sanidine
+sanidinic
+sanidinite
+sanies
+sanification
+sanify
+sanious
+sanipractic
+sanitarian
+sanitarily
+sanitarist
+sanitarium
+sanitary
+sanitate
+sanitation
+sanitationist
+sanitist
+sanitize
+Sanity
+sanity
+sanjak
+sanjakate
+sanjakbeg
+sanjakship
+Sanjay
+Sanjeev
+Sanjib
+sank
+sankha
+Sankhya
+sannaite
+Sannoisian
+sannup
+sannyasi
+sannyasin
+sanopurulent
+sanoserous
+Sanpoil
+sans
+Sansar
+sansei
+Sansevieria
+sanshach
+sansi
+Sanskrit
+Sanskritic
+Sanskritist
+Sanskritization
+Sanskritize
+sant
+Santa
+Santal
+santal
+Santalaceae
+santalaceous
+Santalales
+Santali
+santalic
+santalin
+santalol
+Santalum
+santalwood
+santapee
+Santee
+santene
+Santiago
+santimi
+santims
+santir
+Santo
+Santolina
+santon
+santonica
+santonin
+santoninic
+santorinite
+Santos
+sanukite
+Sanvitalia
+Sanyakoan
+sao
+Saoshyant
+sap
+sapa
+sapajou
+sapan
+sapanwood
+sapbush
+sapek
+Saperda
+sapful
+Sapharensian
+saphead
+sapheaded
+sapheadedness
+saphena
+saphenal
+saphenous
+saphie
+sapid
+sapidity
+sapidless
+sapidness
+sapience
+sapiency
+sapient
+sapiential
+sapientially
+sapientize
+sapiently
+sapin
+sapinda
+Sapindaceae
+sapindaceous
+Sapindales
+sapindaship
+Sapindus
+Sapium
+sapiutan
+saple
+sapless
+saplessness
+sapling
+saplinghood
+sapo
+sapodilla
+sapogenin
+saponaceous
+saponaceousness
+saponacity
+Saponaria
+saponarin
+saponary
+Saponi
+saponifiable
+saponification
+saponifier
+saponify
+saponin
+saponite
+sapophoric
+sapor
+saporific
+saporosity
+saporous
+Sapota
+sapota
+Sapotaceae
+sapotaceous
+sapote
+sapotilha
+sapotilla
+sapotoxin
+sappanwood
+sappare
+sapper
+Sapphic
+sapphic
+sapphire
+sapphireberry
+sapphired
+sapphirewing
+sapphiric
+sapphirine
+Sapphism
+Sapphist
+Sappho
+sappiness
+sapping
+sapples
+sappy
+sapremia
+sapremic
+saprine
+saprocoll
+saprodil
+saprodontia
+saprogenic
+saprogenous
+Saprolegnia
+Saprolegniaceae
+saprolegniaceous
+Saprolegniales
+saprolegnious
+saprolite
+saprolitic
+sapropel
+sapropelic
+sapropelite
+saprophagan
+saprophagous
+saprophile
+saprophilous
+saprophyte
+saprophytic
+saprophytically
+saprophytism
+saprostomous
+saprozoic
+sapsago
+sapskull
+sapsuck
+sapsucker
+sapucaia
+sapucainha
+sapwood
+sapwort
+Saqib
+sar
+Sara
+saraad
+sarabacan
+Sarabaite
+saraband
+Saracen
+Saracenian
+Saracenic
+Saracenical
+Saracenism
+Saracenlike
+Sarada
+saraf
+Sarah
+Sarakolet
+Sarakolle
+Saramaccaner
+Saran
+sarangi
+sarangousty
+Saratoga
+Saratogan
+Saravan
+Sarawakese
+sarawakite
+Sarawan
+sarbacane
+sarbican
+sarcasm
+sarcasmproof
+sarcast
+sarcastic
+sarcastical
+sarcastically
+sarcasticalness
+sarcasticness
+sarcelle
+sarcenet
+sarcilis
+Sarcina
+sarcine
+sarcitis
+sarcle
+sarcler
+sarcoadenoma
+Sarcobatus
+sarcoblast
+sarcocarcinoma
+sarcocarp
+sarcocele
+Sarcococca
+Sarcocolla
+sarcocollin
+sarcocyst
+Sarcocystidea
+sarcocystidean
+sarcocystidian
+Sarcocystis
+sarcocystoid
+sarcocyte
+sarcode
+sarcoderm
+Sarcodes
+sarcodic
+sarcodictyum
+Sarcodina
+sarcodous
+sarcoenchondroma
+sarcogenic
+sarcogenous
+sarcoglia
+Sarcogyps
+sarcoid
+sarcolactic
+sarcolemma
+sarcolemmic
+sarcolemmous
+sarcoline
+sarcolite
+sarcologic
+sarcological
+sarcologist
+sarcology
+sarcolysis
+sarcolyte
+sarcolytic
+sarcoma
+sarcomatoid
+sarcomatosis
+sarcomatous
+sarcomere
+Sarcophaga
+sarcophagal
+sarcophagi
+sarcophagic
+sarcophagid
+Sarcophagidae
+sarcophagine
+sarcophagize
+sarcophagous
+sarcophagus
+sarcophagy
+sarcophile
+sarcophilous
+Sarcophilus
+sarcoplasm
+sarcoplasma
+sarcoplasmatic
+sarcoplasmic
+sarcoplast
+sarcoplastic
+sarcopoietic
+Sarcopsylla
+Sarcopsyllidae
+Sarcoptes
+sarcoptic
+sarcoptid
+Sarcoptidae
+Sarcorhamphus
+sarcosepsis
+sarcosepta
+sarcoseptum
+sarcosine
+sarcosis
+sarcosoma
+sarcosperm
+sarcosporid
+Sarcosporida
+Sarcosporidia
+sarcosporidial
+sarcosporidian
+sarcosporidiosis
+sarcostosis
+sarcostyle
+sarcotheca
+sarcotherapeutics
+sarcotherapy
+sarcotic
+sarcous
+Sarcura
+Sard
+sard
+sardachate
+Sardanapalian
+Sardanapalus
+sardel
+Sardian
+sardine
+sardinewise
+Sardinian
+sardius
+Sardoin
+sardonic
+sardonical
+sardonically
+sardonicism
+sardonyx
+sare
+sargasso
+Sargassum
+sargassum
+sargo
+Sargonic
+Sargonid
+Sargonide
+sargus
+sari
+sarif
+Sarigue
+sarigue
+sarinda
+sarip
+sark
+sarkar
+sarkful
+sarkical
+sarkine
+sarking
+sarkinite
+sarkit
+sarkless
+sarlak
+sarlyk
+Sarmatian
+Sarmatic
+sarmatier
+sarment
+sarmenta
+sarmentaceous
+sarmentiferous
+sarmentose
+sarmentous
+sarmentum
+sarna
+sarod
+saron
+sarong
+saronic
+saronide
+saros
+Sarothamnus
+Sarothra
+sarothrum
+sarpler
+sarpo
+sarra
+Sarracenia
+sarracenia
+Sarraceniaceae
+sarraceniaceous
+sarracenial
+Sarraceniales
+sarraf
+sarrazin
+sarrusophone
+sarrusophonist
+sarsa
+sarsaparilla
+sarsaparillin
+Sarsar
+Sarsechim
+sarsen
+sarsenet
+Sarsi
+Sart
+sart
+sartage
+sartain
+Sartish
+sartor
+sartoriad
+sartorial
+sartorially
+sartorian
+sartorite
+sartorius
+Saruk
+sarus
+Sarvarthasiddha
+sarwan
+Sarzan
+sasa
+sasan
+sasani
+sasanqua
+sash
+sashay
+sashery
+sashing
+sashless
+sasin
+sasine
+saskatoon
+sassaby
+sassafac
+sassafrack
+sassafras
+Sassak
+Sassan
+Sassanian
+Sassanid
+Sassanidae
+Sassanide
+Sassenach
+sassolite
+sassy
+sassywood
+Sastean
+sat
+satable
+Satan
+satan
+Satanael
+Satanas
+satang
+satanic
+satanical
+satanically
+satanicalness
+Satanism
+Satanist
+satanist
+Satanistic
+Satanity
+satanize
+Satanology
+Satanophany
+Satanophil
+Satanophobia
+Satanship
+satara
+satchel
+satcheled
+sate
+sateen
+sateenwood
+sateless
+satelles
+satellitarian
+satellite
+satellited
+satellitesimal
+satellitian
+satellitic
+satellitious
+satellitium
+satellitoid
+satellitory
+satelloid
+satiability
+satiable
+satiableness
+satiably
+satiate
+satiation
+Satieno
+satient
+satiety
+satin
+satinbush
+satine
+satined
+satinette
+satinfin
+satinflower
+satinite
+satinity
+satinize
+satinleaf
+satinlike
+satinpod
+satinwood
+satiny
+satire
+satireproof
+satiric
+satirical
+satirically
+satiricalness
+satirist
+satirizable
+satirize
+satirizer
+satisdation
+satisdiction
+satisfaction
+satisfactional
+satisfactionist
+satisfactionless
+satisfactive
+satisfactorily
+satisfactoriness
+satisfactorious
+satisfactory
+satisfiable
+satisfice
+satisfied
+satisfiedly
+satisfiedness
+satisfier
+satisfy
+satisfying
+satisfyingly
+satisfyingness
+satispassion
+satlijk
+Satrae
+satrap
+satrapal
+satrapess
+satrapic
+satrapical
+satrapy
+satron
+Satsuma
+sattle
+sattva
+satura
+saturability
+saturable
+saturant
+saturate
+saturated
+saturater
+saturation
+saturator
+Saturday
+Satureia
+Saturn
+Saturnal
+Saturnale
+Saturnalia
+saturnalia
+Saturnalian
+saturnalian
+Saturnia
+Saturnian
+saturnian
+Saturnicentric
+saturniid
+Saturniidae
+Saturnine
+saturnine
+saturninely
+saturnineness
+saturninity
+saturnism
+saturnity
+saturnize
+Saturnus
+satyagrahi
+satyashodak
+satyr
+satyresque
+satyress
+satyriasis
+satyric
+Satyridae
+Satyrinae
+satyrine
+satyrion
+satyrism
+satyrlike
+satyromaniac
+sauce
+sauceboat
+saucebox
+saucedish
+sauceless
+sauceline
+saucemaker
+saucemaking
+sauceman
+saucepan
+sauceplate
+saucer
+saucerful
+saucerleaf
+saucerless
+saucerlike
+saucily
+sauciness
+saucy
+Sauerbraten
+sauerkraut
+sauf
+sauger
+saugh
+saughen
+Saul
+sauld
+saulie
+sault
+saulter
+Saulteur
+saum
+saumon
+saumont
+Saumur
+Saumya
+sauna
+saunders
+saunderswood
+saunter
+saunterer
+sauntering
+saunteringly
+sauqui
+saur
+Saura
+Sauraseni
+Saurauia
+Saurauiaceae
+saurel
+Sauria
+saurian
+sauriasis
+sauriosis
+Saurischia
+saurischian
+Sauroctonos
+saurodont
+Saurodontidae
+Saurognathae
+saurognathism
+saurognathous
+Sauromatian
+saurophagous
+sauropod
+Sauropoda
+sauropodous
+sauropsid
+Sauropsida
+sauropsidan
+sauropsidian
+Sauropterygia
+sauropterygian
+Saurornithes
+saurornithic
+Saururaceae
+saururaceous
+Saururae
+saururan
+saururous
+Saururus
+saury
+sausage
+sausagelike
+sausinger
+Saussurea
+saussurite
+saussuritic
+saussuritization
+saussuritize
+saut
+saute
+sauterelle
+sauterne
+sauternes
+sauteur
+sauty
+Sauvagesia
+sauve
+sauvegarde
+savable
+savableness
+savacu
+savage
+savagedom
+savagely
+savageness
+savagerous
+savagery
+savagess
+savagism
+savagize
+savanilla
+savanna
+Savannah
+savant
+Savara
+savarin
+savation
+save
+saved
+saveloy
+saver
+Savery
+savin
+saving
+savingly
+savingness
+savior
+savioress
+saviorhood
+saviorship
+Saviour
+Savitar
+Savitri
+savola
+Savonarolist
+Savonnerie
+savor
+savored
+savorer
+savorily
+savoriness
+savoringly
+savorless
+savorous
+savorsome
+savory
+savour
+savoy
+Savoyard
+savoyed
+savoying
+savssat
+savvy
+saw
+sawah
+Sawaiori
+sawali
+Sawan
+sawarra
+sawback
+sawbelly
+sawbill
+sawbones
+sawbuck
+sawbwa
+sawder
+sawdust
+sawdustish
+sawdustlike
+sawdusty
+sawed
+sawer
+sawfish
+sawfly
+sawhorse
+sawing
+sawish
+sawlike
+sawmaker
+sawmaking
+sawman
+sawmill
+sawmiller
+sawmilling
+sawmon
+sawmont
+sawn
+Sawney
+sawney
+sawsetter
+sawsharper
+sawsmith
+sawt
+sawway
+sawworker
+sawwort
+sawyer
+sax
+saxatile
+saxboard
+saxcornet
+Saxe
+saxhorn
+Saxicava
+saxicavous
+Saxicola
+saxicole
+Saxicolidae
+Saxicolinae
+saxicoline
+saxicolous
+Saxifraga
+Saxifragaceae
+saxifragaceous
+saxifragant
+saxifrage
+saxifragous
+saxifrax
+saxigenous
+Saxish
+Saxon
+Saxondom
+Saxonian
+Saxonic
+Saxonical
+Saxonically
+Saxonish
+Saxonism
+Saxonist
+saxonite
+Saxonization
+Saxonize
+Saxonly
+Saxony
+saxophone
+saxophonist
+saxotromba
+saxpence
+saxten
+saxtie
+saxtuba
+say
+saya
+sayability
+sayable
+sayableness
+Sayal
+sayer
+sayette
+sayid
+saying
+sazen
+Sbaikian
+sblood
+sbodikins
+scab
+scabbard
+scabbardless
+scabbed
+scabbedness
+scabbery
+scabbily
+scabbiness
+scabble
+scabbler
+scabbling
+scabby
+scabellum
+scaberulous
+scabid
+scabies
+scabietic
+scabinus
+Scabiosa
+scabiosity
+scabious
+scabish
+scabland
+scabrate
+scabrescent
+scabrid
+scabridity
+scabridulous
+scabrities
+scabriusculose
+scabriusculous
+scabrosely
+scabrous
+scabrously
+scabrousness
+scabwort
+scacchic
+scacchite
+scad
+scaddle
+scads
+Scaean
+scaff
+scaffer
+scaffery
+scaffie
+scaffle
+scaffold
+scaffoldage
+scaffolder
+scaffolding
+scaglia
+scagliola
+scagliolist
+scala
+scalable
+scalableness
+scalably
+scalage
+scalar
+scalare
+Scalaria
+scalarian
+scalariform
+Scalariidae
+scalarwise
+scalation
+scalawag
+scalawaggery
+scalawaggy
+scald
+scaldberry
+scalded
+scalder
+scaldfish
+scaldic
+scalding
+scaldweed
+scaldy
+scale
+scaleback
+scalebark
+scaleboard
+scaled
+scaledrake
+scalefish
+scaleful
+scaleless
+scalelet
+scalelike
+scaleman
+scalena
+scalene
+scalenohedral
+scalenohedron
+scalenon
+scalenous
+scalenum
+scalenus
+scalepan
+scaleproof
+scaler
+scales
+scalesman
+scalesmith
+scaletail
+scalewing
+scalewise
+scalework
+scalewort
+scaliger
+scaliness
+scaling
+scall
+scalled
+scallion
+scallola
+scallom
+scallop
+scalloper
+scalloping
+scallopwise
+scalma
+scaloni
+Scalops
+Scalopus
+scalp
+scalpeen
+scalpel
+scalpellar
+scalpellic
+scalpellum
+scalpellus
+scalper
+scalping
+scalpless
+scalpriform
+scalprum
+scalpture
+scalt
+scaly
+scalytail
+scam
+scamander
+Scamandrius
+scamble
+scambler
+scambling
+scamell
+scamler
+scamles
+scammoniate
+scammonin
+scammony
+scammonyroot
+scamp
+scampavia
+scamper
+scamperer
+scamphood
+scamping
+scampingly
+scampish
+scampishly
+scampishness
+scampsman
+scan
+scandal
+scandalization
+scandalize
+scandalizer
+scandalmonger
+scandalmongering
+scandalmongery
+scandalmonging
+scandalous
+scandalously
+scandalousness
+scandalproof
+scandaroon
+scandent
+scandia
+Scandian
+scandic
+scandicus
+Scandinavia
+Scandinavian
+Scandinavianism
+scandium
+Scandix
+Scania
+Scanian
+Scanic
+scanmag
+scannable
+scanner
+scanning
+scanningly
+scansion
+scansionist
+Scansores
+scansorial
+scansorious
+scant
+scanties
+scantily
+scantiness
+scantity
+scantle
+scantling
+scantlinged
+scantly
+scantness
+scanty
+scap
+scape
+scapegallows
+scapegoat
+scapegoatism
+scapegrace
+scapel
+scapeless
+scapement
+scapethrift
+scapha
+Scaphander
+Scaphandridae
+scaphion
+Scaphiopodidae
+Scaphiopus
+scaphism
+scaphite
+Scaphites
+Scaphitidae
+scaphitoid
+scaphocephalic
+scaphocephalism
+scaphocephalous
+scaphocephalus
+scaphocephaly
+scaphocerite
+scaphoceritic
+scaphognathite
+scaphognathitic
+scaphoid
+scapholunar
+scaphopod
+Scaphopoda
+scaphopodous
+scapiform
+scapigerous
+scapoid
+scapolite
+scapolitization
+scapose
+scapple
+scappler
+scapula
+scapulalgia
+scapular
+scapulare
+scapulary
+scapulated
+scapulectomy
+scapulet
+scapulimancy
+scapuloaxillary
+scapulobrachial
+scapuloclavicular
+scapulocoracoid
+scapulodynia
+scapulohumeral
+scapulopexy
+scapuloradial
+scapulospinal
+scapulothoracic
+scapuloulnar
+scapulovertebral
+scapus
+scar
+scarab
+scarabaean
+scarabaei
+scarabaeid
+Scarabaeidae
+scarabaeidoid
+scarabaeiform
+Scarabaeinae
+scarabaeoid
+scarabaeus
+scarabee
+scaraboid
+Scaramouch
+scaramouch
+scarce
+scarcelins
+scarcely
+scarcement
+scarcen
+scarceness
+scarcity
+scare
+scarebabe
+scarecrow
+scarecrowish
+scarecrowy
+scareful
+scarehead
+scaremonger
+scaremongering
+scareproof
+scarer
+scaresome
+scarf
+scarface
+scarfed
+scarfer
+scarflike
+scarfpin
+scarfskin
+scarfwise
+scarfy
+scarid
+Scaridae
+scarification
+scarificator
+scarifier
+scarify
+scarily
+scariose
+scarious
+scarlatina
+scarlatinal
+scarlatiniform
+scarlatinoid
+scarlatinous
+scarless
+scarlet
+scarletberry
+scarletseed
+scarlety
+scarman
+scarn
+scaroid
+scarp
+scarpines
+scarping
+scarpment
+scarproof
+scarred
+scarrer
+scarring
+scarry
+scart
+scarth
+Scarus
+scarus
+scarved
+scary
+scase
+scasely
+scat
+scatch
+scathe
+scatheful
+scatheless
+scathelessly
+scathing
+scathingly
+Scaticook
+scatland
+scatologia
+scatologic
+scatological
+scatology
+scatomancy
+scatophagid
+Scatophagidae
+scatophagoid
+scatophagous
+scatophagy
+scatoscopy
+scatter
+scatterable
+scatteration
+scatteraway
+scatterbrain
+scatterbrained
+scatterbrains
+scattered
+scatteredly
+scatteredness
+scatterer
+scattergood
+scattering
+scatteringly
+scatterling
+scattermouch
+scattery
+scatty
+scatula
+scaturient
+scaul
+scaum
+scaup
+scauper
+scaur
+scaurie
+scaut
+scavage
+scavel
+scavenage
+scavenge
+scavenger
+scavengerism
+scavengership
+scavengery
+scavenging
+scaw
+scawd
+scawl
+scazon
+scazontic
+sceat
+scelalgia
+scelerat
+scelidosaur
+scelidosaurian
+scelidosauroid
+Scelidosaurus
+Scelidotherium
+Sceliphron
+sceloncus
+Sceloporus
+scelotyrbe
+scena
+scenario
+scenarioist
+scenarioization
+scenarioize
+scenarist
+scenarization
+scenarize
+scenary
+scend
+scene
+scenecraft
+Scenedesmus
+sceneful
+sceneman
+scenery
+sceneshifter
+scenewright
+scenic
+scenical
+scenically
+scenist
+scenite
+scenograph
+scenographer
+scenographic
+scenographical
+scenographically
+scenography
+Scenopinidae
+scent
+scented
+scenter
+scentful
+scenting
+scentless
+scentlessness
+scentproof
+scentwood
+scepsis
+scepter
+scepterdom
+sceptered
+scepterless
+sceptic
+sceptral
+sceptropherous
+sceptrosophy
+sceptry
+scerne
+sceuophorion
+sceuophylacium
+sceuophylax
+schaapsteker
+Schaefferia
+schairerite
+schalmei
+schalmey
+schalstein
+schanz
+schapbachite
+schappe
+schapped
+schapping
+scharf
+Scharlachberger
+schatchen
+Scheat
+Schedar
+schediasm
+schediastic
+Schedius
+schedular
+schedulate
+schedule
+schedulize
+scheelite
+scheffel
+schefferite
+schelling
+Schellingian
+Schellingianism
+Schellingism
+schelly
+scheltopusik
+schema
+schemata
+schematic
+schematically
+schematism
+schematist
+schematization
+schematize
+schematizer
+schematogram
+schematograph
+schematologetically
+schematomancy
+schematonics
+scheme
+schemeful
+schemeless
+schemer
+schemery
+scheming
+schemingly
+schemist
+schemy
+schene
+schepel
+schepen
+scherm
+scherzando
+scherzi
+scherzo
+schesis
+Scheuchzeria
+Scheuchzeriaceae
+scheuchzeriaceous
+schiavone
+Schiedam
+schiffli
+schiller
+schillerfels
+schillerization
+schillerize
+schilling
+schimmel
+schindylesis
+schindyletic
+Schinus
+schipperke
+Schisandra
+Schisandraceae
+schism
+schisma
+schismatic
+schismatical
+schismatically
+schismaticalness
+schismatism
+schismatist
+schismatize
+schismic
+schismless
+schist
+schistaceous
+schistic
+schistocelia
+schistocephalus
+Schistocerca
+schistocoelia
+schistocormia
+schistocormus
+schistocyte
+schistocytosis
+schistoglossia
+schistoid
+schistomelia
+schistomelus
+schistoprosopia
+schistoprosopus
+schistorrhachis
+schistoscope
+schistose
+schistosity
+Schistosoma
+schistosome
+schistosomia
+schistosomiasis
+schistosomus
+schistosternia
+schistothorax
+schistous
+schistus
+Schizaea
+Schizaeaceae
+schizaeaceous
+Schizanthus
+schizanthus
+schizaxon
+schizocarp
+schizocarpic
+schizocarpous
+schizochroal
+schizocoele
+schizocoelic
+schizocoelous
+schizocyte
+schizocytosis
+schizodinic
+schizogamy
+schizogenesis
+schizogenetic
+schizogenetically
+schizogenic
+schizogenous
+schizogenously
+schizognath
+Schizognathae
+schizognathism
+schizognathous
+schizogonic
+schizogony
+Schizogregarinae
+schizogregarine
+Schizogregarinida
+schizoid
+schizoidism
+Schizolaenaceae
+schizolaenaceous
+schizolite
+schizolysigenous
+Schizomeria
+schizomycete
+Schizomycetes
+schizomycetic
+schizomycetous
+schizomycosis
+Schizonemertea
+schizonemertean
+schizonemertine
+Schizoneura
+Schizonotus
+schizont
+schizopelmous
+Schizopetalon
+schizophasia
+Schizophragma
+schizophrene
+schizophrenia
+schizophreniac
+schizophrenic
+Schizophyceae
+Schizophyllum
+Schizophyta
+schizophyte
+schizophytic
+schizopod
+Schizopoda
+schizopodal
+schizopodous
+schizorhinal
+schizospore
+schizostele
+schizostelic
+schizostely
+schizothecal
+schizothoracic
+schizothyme
+schizothymia
+schizothymic
+schizotrichia
+Schizotrypanum
+schiztic
+Schlauraffenland
+Schleichera
+schlemiel
+schlemihl
+schlenter
+schlieren
+schlieric
+schloop
+Schmalkaldic
+schmaltz
+schmelz
+schmelze
+schnabel
+Schnabelkanne
+schnapper
+schnapps
+schnauzer
+schneider
+Schneiderian
+schnitzel
+schnorchel
+schnorkel
+schnorrer
+scho
+schochat
+schochet
+schoenobatic
+schoenobatist
+Schoenocaulon
+Schoenus
+schoenus
+Schoharie
+schola
+scholae
+scholaptitude
+scholar
+scholarch
+scholardom
+scholarian
+scholarism
+scholarless
+scholarlike
+scholarliness
+scholarly
+scholarship
+scholasm
+scholastic
+scholastical
+scholastically
+scholasticate
+scholasticism
+scholasticly
+scholia
+scholiast
+scholiastic
+scholion
+scholium
+Schomburgkia
+schone
+schonfelsite
+Schoodic
+School
+school
+schoolable
+schoolbag
+schoolbook
+schoolbookish
+schoolboy
+schoolboydom
+schoolboyhood
+schoolboyish
+schoolboyishly
+schoolboyishness
+schoolboyism
+schoolbutter
+schoolcraft
+schooldame
+schooldom
+schooled
+schoolery
+schoolfellow
+schoolfellowship
+schoolful
+schoolgirl
+schoolgirlhood
+schoolgirlish
+schoolgirlishly
+schoolgirlishness
+schoolgirlism
+schoolgirly
+schoolgoing
+schoolhouse
+schooling
+schoolingly
+schoolish
+schoolkeeper
+schoolkeeping
+schoolless
+schoollike
+schoolmaam
+schoolmaamish
+schoolmaid
+schoolman
+schoolmaster
+schoolmasterhood
+schoolmastering
+schoolmasterish
+schoolmasterishly
+schoolmasterishness
+schoolmasterism
+schoolmasterly
+schoolmastership
+schoolmastery
+schoolmate
+schoolmiss
+schoolmistress
+schoolmistressy
+schoolroom
+schoolteacher
+schoolteacherish
+schoolteacherly
+schoolteachery
+schoolteaching
+schooltide
+schooltime
+schoolward
+schoolwork
+schoolyard
+schoon
+schooner
+Schopenhauereanism
+Schopenhauerian
+Schopenhauerism
+schoppen
+schorenbergite
+schorl
+schorlaceous
+schorlomite
+schorlous
+schorly
+schottische
+schottish
+schout
+schraubthaler
+Schrebera
+schreiner
+schreinerize
+schriesheimite
+Schrund
+schtoff
+schuh
+schuhe
+schuit
+schule
+schultenite
+schungite
+schuss
+schute
+schwa
+schwabacher
+Schwalbea
+schwarz
+Schwarzian
+schweizer
+schweizerkase
+Schwendenerian
+Schwenkfelder
+Schwenkfeldian
+Sciadopitys
+Sciaena
+sciaenid
+Sciaenidae
+sciaeniform
+Sciaeniformes
+sciaenoid
+scialytic
+sciamachy
+Scian
+sciapod
+sciapodous
+Sciara
+sciarid
+Sciaridae
+Sciarinae
+sciatheric
+sciatherical
+sciatherically
+sciatic
+sciatica
+sciatical
+sciatically
+sciaticky
+scibile
+science
+scienced
+scient
+sciential
+scientician
+scientific
+scientifical
+scientifically
+scientificalness
+scientificogeographical
+scientificohistorical
+scientificophilosophical
+scientificopoetic
+scientificoreligious
+scientificoromantic
+scientintically
+scientism
+Scientist
+scientist
+scientistic
+scientistically
+scientize
+scientolism
+scilicet
+Scilla
+scillain
+scillipicrin
+Scillitan
+scillitin
+scillitoxin
+Scillonian
+scimitar
+scimitared
+scimitarpod
+scincid
+Scincidae
+scincidoid
+scinciform
+scincoid
+scincoidian
+Scincomorpha
+Scincus
+scind
+sciniph
+scintilla
+scintillant
+scintillantly
+scintillate
+scintillating
+scintillatingly
+scintillation
+scintillator
+scintillescent
+scintillize
+scintillometer
+scintilloscope
+scintillose
+scintillously
+scintle
+scintler
+scintling
+sciograph
+sciographic
+sciography
+sciolism
+sciolist
+sciolistic
+sciolous
+sciomachiology
+sciomachy
+sciomancy
+sciomantic
+scion
+sciophilous
+sciophyte
+scioptic
+sciopticon
+scioptics
+scioptric
+sciosophist
+sciosophy
+Sciot
+scioterical
+scioterique
+sciotheism
+sciotheric
+sciotherical
+sciotherically
+scious
+scirenga
+Scirophoria
+Scirophorion
+Scirpus
+scirrhi
+scirrhogastria
+scirrhoid
+scirrhoma
+scirrhosis
+scirrhous
+scirrhus
+scirrosity
+scirtopod
+Scirtopoda
+scirtopodous
+scissel
+scissible
+scissile
+scission
+scissiparity
+scissor
+scissorbill
+scissorbird
+scissorer
+scissoring
+scissorium
+scissorlike
+scissorlikeness
+scissors
+scissorsbird
+scissorsmith
+scissorstail
+scissortail
+scissorwise
+scissura
+scissure
+Scissurella
+scissurellid
+Scissurellidae
+Scitaminales
+Scitamineae
+sciurid
+Sciuridae
+sciurine
+sciuroid
+sciuromorph
+Sciuromorpha
+sciuromorphic
+Sciuropterus
+Sciurus
+sclaff
+sclate
+sclater
+Sclav
+Sclavonian
+sclaw
+scler
+sclera
+scleral
+scleranth
+Scleranthaceae
+Scleranthus
+scleratogenous
+sclere
+sclerectasia
+sclerectomy
+scleredema
+sclereid
+sclerema
+sclerencephalia
+sclerenchyma
+sclerenchymatous
+sclerenchyme
+sclererythrin
+scleretinite
+Scleria
+scleriasis
+sclerification
+sclerify
+sclerite
+scleritic
+scleritis
+sclerized
+sclerobase
+sclerobasic
+scleroblast
+scleroblastema
+scleroblastemic
+scleroblastic
+sclerocauly
+sclerochorioiditis
+sclerochoroiditis
+scleroconjunctival
+scleroconjunctivitis
+sclerocornea
+sclerocorneal
+sclerodactylia
+sclerodactyly
+scleroderm
+Scleroderma
+scleroderma
+Sclerodermaceae
+Sclerodermata
+Sclerodermatales
+sclerodermatitis
+sclerodermatous
+Sclerodermi
+sclerodermia
+sclerodermic
+sclerodermite
+sclerodermitic
+sclerodermitis
+sclerodermous
+sclerogen
+Sclerogeni
+sclerogenoid
+sclerogenous
+scleroid
+scleroiritis
+sclerokeratitis
+sclerokeratoiritis
+scleroma
+scleromata
+scleromeninx
+scleromere
+sclerometer
+sclerometric
+scleronychia
+scleronyxis
+Scleropages
+Scleroparei
+sclerophthalmia
+sclerophyll
+sclerophyllous
+sclerophylly
+scleroprotein
+sclerosal
+sclerosarcoma
+Scleroscope
+scleroscope
+sclerose
+sclerosed
+scleroseptum
+sclerosis
+scleroskeletal
+scleroskeleton
+Sclerospora
+sclerostenosis
+Sclerostoma
+sclerostomiasis
+sclerotal
+sclerote
+sclerotia
+sclerotial
+sclerotic
+sclerotica
+sclerotical
+scleroticectomy
+scleroticochorioiditis
+scleroticochoroiditis
+scleroticonyxis
+scleroticotomy
+Sclerotinia
+sclerotinial
+sclerotiniose
+sclerotioid
+sclerotitic
+sclerotitis
+sclerotium
+sclerotized
+sclerotoid
+sclerotome
+sclerotomic
+sclerotomy
+sclerous
+scleroxanthin
+sclerozone
+scliff
+sclim
+sclimb
+scoad
+scob
+scobby
+scobicular
+scobiform
+scobs
+scoff
+scoffer
+scoffery
+scoffing
+scoffingly
+scoffingstock
+scofflaw
+scog
+scoggan
+scogger
+scoggin
+scogginism
+scogginist
+scoinson
+scoke
+scolb
+scold
+scoldable
+scoldenore
+scolder
+scolding
+scoldingly
+scoleces
+scoleciasis
+scolecid
+Scolecida
+scoleciform
+scolecite
+scolecoid
+scolecology
+scolecophagous
+scolecospore
+scoleryng
+scolex
+Scolia
+scolia
+scolices
+scoliid
+Scoliidae
+scoliograptic
+scoliokyposis
+scoliometer
+scolion
+scoliorachitic
+scoliosis
+scoliotic
+scoliotone
+scolite
+scollop
+scolog
+scolopaceous
+Scolopacidae
+scolopacine
+Scolopax
+Scolopendra
+scolopendra
+Scolopendrella
+Scolopendrellidae
+scolopendrelloid
+scolopendrid
+Scolopendridae
+scolopendriform
+scolopendrine
+Scolopendrium
+scolopendroid
+scolophore
+scolopophore
+Scolymus
+scolytid
+Scolytidae
+scolytoid
+Scolytus
+Scomber
+scomberoid
+Scombresocidae
+Scombresox
+scombrid
+Scombridae
+scombriform
+Scombriformes
+scombrine
+scombroid
+Scombroidea
+scombroidean
+scombrone
+sconce
+sconcer
+sconcheon
+sconcible
+scone
+scoon
+scoop
+scooped
+scooper
+scoopful
+scooping
+scoopingly
+scoot
+scooter
+scopa
+scoparin
+scoparius
+scopate
+scope
+scopeless
+scopelid
+Scopelidae
+scopeliform
+scopelism
+scopeloid
+Scopelus
+scopet
+scopic
+Scopidae
+scopiferous
+scopiform
+scopiformly
+scopine
+scopiped
+scopola
+scopolamine
+scopoleine
+scopoletin
+scopoline
+scopperil
+scops
+scoptical
+scoptically
+scoptophilia
+scoptophiliac
+scoptophilic
+scoptophobia
+scopula
+Scopularia
+scopularian
+scopulate
+scopuliferous
+scopuliform
+scopuliped
+Scopulipedes
+scopulite
+scopulous
+scopulousness
+Scopus
+scorbute
+scorbutic
+scorbutical
+scorbutically
+scorbutize
+scorbutus
+scorch
+scorched
+scorcher
+scorching
+scorchingly
+scorchingness
+scorchproof
+score
+scoreboard
+scorebook
+scored
+scorekeeper
+scorekeeping
+scoreless
+scorer
+scoria
+scoriac
+scoriaceous
+scoriae
+scorification
+scorifier
+scoriform
+scorify
+scoring
+scorious
+scorn
+scorned
+scorner
+scornful
+scornfully
+scornfulness
+scorningly
+scornproof
+scorny
+scorodite
+Scorpaena
+scorpaenid
+Scorpaenidae
+scorpaenoid
+scorpene
+scorper
+Scorpidae
+Scorpididae
+Scorpii
+Scorpiid
+Scorpio
+scorpioid
+scorpioidal
+Scorpioidea
+scorpion
+Scorpiones
+scorpionic
+scorpionid
+Scorpionida
+Scorpionidea
+Scorpionis
+scorpionweed
+scorpionwort
+Scorpiurus
+Scorpius
+scorse
+scortation
+scortatory
+Scorzonera
+Scot
+scot
+scotale
+Scotch
+scotch
+scotcher
+Scotchery
+Scotchification
+Scotchify
+Scotchiness
+scotching
+Scotchman
+scotchman
+Scotchness
+Scotchwoman
+Scotchy
+scote
+scoter
+scoterythrous
+Scotia
+scotia
+Scotic
+scotino
+Scotism
+Scotist
+Scotistic
+Scotistical
+Scotize
+Scotlandwards
+scotodinia
+scotogram
+scotograph
+scotographic
+scotography
+scotoma
+scotomata
+scotomatic
+scotomatical
+scotomatous
+scotomia
+scotomic
+scotomy
+scotophobia
+scotopia
+scotopic
+scotoscope
+scotosis
+Scots
+Scotsman
+Scotswoman
+Scott
+Scotticism
+Scotticize
+Scottie
+Scottification
+Scottify
+Scottish
+Scottisher
+Scottishly
+Scottishman
+Scottishness
+Scotty
+scouch
+scouk
+scoundrel
+scoundreldom
+scoundrelish
+scoundrelism
+scoundrelly
+scoundrelship
+scoup
+scour
+scourage
+scoured
+scourer
+scouress
+scourfish
+scourge
+scourger
+scourging
+scourgingly
+scouriness
+scouring
+scourings
+scourway
+scourweed
+scourwort
+scoury
+scouse
+scout
+scoutcraft
+scoutdom
+scouter
+scouth
+scouther
+scouthood
+scouting
+scoutingly
+scoutish
+scoutmaster
+scoutwatch
+scove
+scovel
+scovillite
+scovy
+scow
+scowbank
+scowbanker
+scowder
+scowl
+scowler
+scowlful
+scowling
+scowlingly
+scowlproof
+scowman
+scrab
+scrabble
+scrabbled
+scrabbler
+scrabe
+scrae
+scraffle
+scrag
+scragged
+scraggedly
+scraggedness
+scragger
+scraggily
+scragginess
+scragging
+scraggled
+scraggling
+scraggly
+scraggy
+scraily
+scram
+scramasax
+scramble
+scramblement
+scrambler
+scrambling
+scramblingly
+scrambly
+scrampum
+scran
+scranch
+scrank
+scranky
+scrannel
+scranning
+scranny
+scrap
+scrapable
+scrapbook
+scrape
+scrapeage
+scraped
+scrapepenny
+scraper
+scrapie
+scraping
+scrapingly
+scrapler
+scraplet
+scrapling
+scrapman
+scrapmonger
+scrappage
+scrapped
+scrapper
+scrappet
+scrappily
+scrappiness
+scrapping
+scrappingly
+scrapple
+scrappler
+scrappy
+scrapworks
+scrapy
+scrat
+scratch
+scratchable
+scratchably
+scratchback
+scratchboard
+scratchbrush
+scratchcard
+scratchcarding
+scratchcat
+scratcher
+scratches
+scratchification
+scratchiness
+scratching
+scratchingly
+scratchless
+scratchlike
+scratchman
+scratchproof
+scratchweed
+scratchwork
+scratchy
+scrath
+scratter
+scrattle
+scrattling
+scrauch
+scrauchle
+scraunch
+scraw
+scrawk
+scrawl
+scrawler
+scrawliness
+scrawly
+scrawm
+scrawnily
+scrawniness
+scrawny
+scray
+scraze
+screak
+screaking
+screaky
+scream
+screamer
+screaminess
+screaming
+screamingly
+screamproof
+screamy
+scree
+screech
+screechbird
+screecher
+screechily
+screechiness
+screeching
+screechingly
+screechy
+screed
+screek
+screel
+screeman
+screen
+screenable
+screenage
+screencraft
+screendom
+screened
+screener
+screening
+screenless
+screenlike
+screenman
+screenplay
+screensman
+screenwise
+screenwork
+screenwriter
+screeny
+screet
+screeve
+screeved
+screever
+screich
+screigh
+screve
+screver
+screw
+screwable
+screwage
+screwball
+screwbarrel
+screwdrive
+screwdriver
+screwed
+screwer
+screwhead
+screwiness
+screwing
+screwish
+screwless
+screwlike
+screwman
+screwmatics
+screwship
+screwsman
+screwstem
+screwstock
+screwwise
+screwworm
+screwy
+scribable
+scribacious
+scribaciousness
+scribal
+scribatious
+scribatiousness
+scribblage
+scribblative
+scribblatory
+scribble
+scribbleable
+scribbled
+scribbledom
+scribbleism
+scribblemania
+scribblement
+scribbleomania
+scribbler
+scribbling
+scribblingly
+scribbly
+scribe
+scriber
+scribeship
+scribing
+scribism
+scribophilous
+scride
+scrieve
+scriever
+scriggle
+scriggler
+scriggly
+scrike
+scrim
+scrime
+scrimer
+scrimmage
+scrimmager
+scrimp
+scrimped
+scrimpily
+scrimpiness
+scrimpingly
+scrimply
+scrimpness
+scrimption
+scrimpy
+scrimshander
+scrimshandy
+scrimshank
+scrimshanker
+scrimshaw
+scrimshon
+scrimshorn
+scrin
+scrinch
+scrine
+scringe
+scriniary
+scrip
+scripee
+scripless
+scrippage
+script
+scription
+scriptitious
+scriptitiously
+scriptitory
+scriptive
+scriptor
+scriptorial
+scriptorium
+scriptory
+scriptural
+Scripturalism
+scripturalism
+Scripturalist
+scripturalist
+Scripturality
+scripturality
+scripturalize
+scripturally
+scripturalness
+Scripturarian
+Scripture
+scripture
+Scriptured
+scriptured
+Scriptureless
+scripturiency
+scripturient
+Scripturism
+scripturism
+Scripturist
+scripula
+scripulum
+scritch
+scritoire
+scrivaille
+scrive
+scrivello
+scriven
+scrivener
+scrivenership
+scrivenery
+scrivening
+scrivenly
+scriver
+scrob
+scrobble
+scrobe
+scrobicula
+scrobicular
+scrobiculate
+scrobiculated
+scrobicule
+scrobiculus
+scrobis
+scrod
+scrodgill
+scroff
+scrofula
+scrofularoot
+scrofulaweed
+scrofulide
+scrofulism
+scrofulitic
+scrofuloderm
+scrofuloderma
+scrofulorachitic
+scrofulosis
+scrofulotuberculous
+scrofulous
+scrofulously
+scrofulousness
+scrog
+scroggy
+scrolar
+scroll
+scrolled
+scrollery
+scrollhead
+scrollwise
+scrollwork
+scrolly
+scronach
+scroo
+scrooch
+scrooge
+scroop
+Scrophularia
+Scrophulariaceae
+scrophulariaceous
+scrota
+scrotal
+scrotectomy
+scrotiform
+scrotitis
+scrotocele
+scrotofemoral
+scrotum
+scrouge
+scrouger
+scrounge
+scrounger
+scrounging
+scrout
+scrow
+scroyle
+scrub
+scrubbable
+scrubbed
+scrubber
+scrubbery
+scrubbily
+scrubbiness
+scrubbird
+scrubbly
+scrubboard
+scrubby
+scrubgrass
+scrubland
+scrubwood
+scruf
+scruff
+scruffle
+scruffman
+scruffy
+scruft
+scrum
+scrummage
+scrummager
+scrump
+scrumple
+scrumption
+scrumptious
+scrumptiously
+scrumptiousness
+scrunch
+scrunchy
+scrunge
+scrunger
+scrunt
+scruple
+scrupleless
+scrupler
+scruplesome
+scruplesomeness
+scrupula
+scrupular
+scrupuli
+scrupulist
+scrupulosity
+scrupulous
+scrupulously
+scrupulousness
+scrupulum
+scrupulus
+scrush
+scrutability
+scrutable
+scrutate
+scrutation
+scrutator
+scrutatory
+scrutinant
+scrutinate
+scrutineer
+scrutinization
+scrutinize
+scrutinizer
+scrutinizingly
+scrutinous
+scrutinously
+scrutiny
+scruto
+scrutoire
+scruze
+scry
+scryer
+scud
+scuddaler
+scuddawn
+scudder
+scuddick
+scuddle
+scuddy
+scudi
+scudler
+scudo
+scuff
+scuffed
+scuffer
+scuffle
+scuffler
+scufflingly
+scuffly
+scuffy
+scuft
+scufter
+scug
+scuggery
+sculch
+sculduddery
+scull
+sculler
+scullery
+scullful
+scullion
+scullionish
+scullionize
+scullionship
+scullog
+sculp
+sculper
+sculpin
+sculpt
+sculptile
+sculptitory
+sculptograph
+sculptography
+Sculptor
+sculptor
+Sculptorid
+sculptress
+sculptural
+sculpturally
+sculpturation
+sculpture
+sculptured
+sculpturer
+sculpturesque
+sculpturesquely
+sculpturesqueness
+sculpturing
+sculsh
+scum
+scumber
+scumble
+scumbling
+scumboard
+scumfish
+scumless
+scumlike
+scummed
+scummer
+scumming
+scummy
+scumproof
+scun
+scuncheon
+scunder
+scunner
+scup
+scupful
+scuppaug
+scupper
+scuppernong
+scuppet
+scuppler
+scur
+scurdy
+scurf
+scurfer
+scurfily
+scurfiness
+scurflike
+scurfy
+scurrier
+scurrile
+scurrilist
+scurrility
+scurrilize
+scurrilous
+scurrilously
+scurrilousness
+scurry
+scurvied
+scurvily
+scurviness
+scurvish
+scurvy
+scurvyweed
+scusation
+scuse
+scut
+scuta
+scutage
+scutal
+scutate
+scutated
+scutatiform
+scutation
+scutch
+scutcheon
+scutcheoned
+scutcheonless
+scutcheonlike
+scutcheonwise
+scutcher
+scutching
+scute
+scutel
+scutella
+scutellae
+scutellar
+Scutellaria
+scutellarin
+scutellate
+scutellated
+scutellation
+scutellerid
+Scutelleridae
+scutelliform
+scutelligerous
+scutelliplantar
+scutelliplantation
+scutellum
+scutibranch
+Scutibranchia
+scutibranchian
+scutibranchiate
+scutifer
+scutiferous
+scutiform
+scutiger
+Scutigera
+scutigeral
+Scutigeridae
+scutigerous
+scutiped
+scutter
+scuttle
+scuttlebutt
+scuttleful
+scuttleman
+scuttler
+scuttling
+scuttock
+scutty
+scutula
+scutular
+scutulate
+scutulated
+scutulum
+Scutum
+scutum
+scybala
+scybalous
+scybalum
+scye
+scyelite
+Scyld
+Scylla
+Scyllaea
+Scyllaeidae
+scyllarian
+Scyllaridae
+scyllaroid
+Scyllarus
+Scyllidae
+Scylliidae
+scyllioid
+Scylliorhinidae
+scylliorhinoid
+Scylliorhinus
+scyllite
+scyllitol
+Scyllium
+scypha
+scyphae
+scyphate
+scyphi
+scyphiferous
+scyphiform
+scyphiphorous
+scyphistoma
+scyphistomae
+scyphistomoid
+scyphistomous
+scyphoi
+scyphomancy
+Scyphomedusae
+scyphomedusan
+scyphomedusoid
+scyphophore
+Scyphophori
+scyphophorous
+scyphopolyp
+scyphose
+scyphostoma
+Scyphozoa
+scyphozoan
+scyphula
+scyphulus
+scyphus
+scyt
+scytale
+Scyth
+scythe
+scytheless
+scythelike
+scytheman
+scythesmith
+scythestone
+scythework
+Scythian
+Scythic
+Scythize
+scytitis
+scytoblastema
+scytodepsic
+Scytonema
+Scytonemataceae
+scytonemataceous
+scytonematoid
+scytonematous
+Scytopetalaceae
+scytopetalaceous
+Scytopetalum
+sdeath
+sdrucciola
+se
+sea
+seabeach
+seabeard
+Seabee
+seaberry
+seaboard
+seaborderer
+seabound
+seacannie
+seacatch
+seacoast
+seaconny
+seacraft
+seacrafty
+seacunny
+seadog
+seadrome
+seafardinger
+seafare
+seafarer
+seafaring
+seaflood
+seaflower
+seafolk
+Seaforthia
+seafowl
+Seaghan
+seagirt
+seagoer
+seagoing
+seah
+seahound
+seak
+seal
+sealable
+sealant
+sealch
+sealed
+sealer
+sealery
+sealess
+sealet
+sealette
+sealflower
+sealike
+sealine
+sealing
+sealless
+seallike
+sealskin
+sealwort
+Sealyham
+seam
+seaman
+seamancraft
+seamanite
+seamanlike
+seamanly
+seamanship
+seamark
+Seamas
+seambiter
+seamed
+seamer
+seaminess
+seaming
+seamless
+seamlessly
+seamlessness
+seamlet
+seamlike
+seamost
+seamrend
+seamrog
+seamster
+seamstress
+Seamus
+seamy
+Sean
+seance
+seapiece
+seaplane
+seaport
+seaquake
+sear
+searce
+searcer
+search
+searchable
+searchableness
+searchant
+searcher
+searcheress
+searcherlike
+searchership
+searchful
+searching
+searchingly
+searchingness
+searchless
+searchlight
+searchment
+searcloth
+seared
+searedness
+searer
+searing
+searlesite
+searness
+seary
+Seasan
+seascape
+seascapist
+seascout
+seascouting
+seashine
+seashore
+seasick
+seasickness
+seaside
+seasider
+season
+seasonable
+seasonableness
+seasonably
+seasonal
+seasonality
+seasonally
+seasonalness
+seasoned
+seasonedly
+seasoner
+seasoning
+seasoninglike
+seasonless
+seastrand
+seastroke
+seat
+seatang
+seated
+seater
+seathe
+seating
+seatless
+seatrain
+seatron
+seatsman
+seatwork
+seave
+seavy
+seawant
+seaward
+seawardly
+seaware
+seaway
+seaweed
+seaweedy
+seawife
+seawoman
+seaworn
+seaworthiness
+seaworthy
+seax
+Seba
+sebacate
+sebaceous
+sebacic
+sebait
+Sebastian
+sebastianite
+Sebastichthys
+Sebastodes
+sebate
+sebesten
+sebiferous
+sebific
+sebilla
+sebiparous
+sebkha
+sebolith
+seborrhagia
+seborrhea
+seborrheal
+seborrheic
+seborrhoic
+Sebright
+sebum
+sebundy
+sec
+secability
+secable
+Secale
+secalin
+secaline
+secalose
+Secamone
+secancy
+secant
+secantly
+secateur
+secede
+Seceder
+seceder
+secern
+secernent
+secernment
+secesh
+secesher
+Secessia
+Secession
+secession
+Secessional
+secessional
+secessionalist
+Secessiondom
+secessioner
+secessionism
+secessionist
+sech
+Sechium
+Sechuana
+seck
+Seckel
+seclude
+secluded
+secludedly
+secludedness
+secluding
+secluse
+seclusion
+seclusionist
+seclusive
+seclusively
+seclusiveness
+secodont
+secohm
+secohmmeter
+second
+secondar
+secondarily
+secondariness
+secondary
+seconde
+seconder
+secondhand
+secondhanded
+secondhandedly
+secondhandedness
+secondly
+secondment
+secondness
+secos
+secpar
+secque
+secre
+secrecy
+secret
+secreta
+secretage
+secretagogue
+secretarial
+secretarian
+Secretariat
+secretariat
+secretariate
+secretary
+secretaryship
+secrete
+secretin
+secretion
+secretional
+secretionary
+secretitious
+secretive
+secretively
+secretiveness
+secretly
+secretmonger
+secretness
+secreto
+secretomotor
+secretor
+secretory
+secretum
+sect
+sectarial
+sectarian
+sectarianism
+sectarianize
+sectarianly
+sectarism
+sectarist
+sectary
+sectator
+sectile
+sectility
+section
+sectional
+sectionalism
+sectionalist
+sectionality
+sectionalization
+sectionalize
+sectionally
+sectionary
+sectionist
+sectionize
+sectioplanography
+sectism
+sectist
+sectiuncle
+sective
+sector
+sectoral
+sectored
+sectorial
+sectroid
+sectwise
+secular
+secularism
+secularist
+secularistic
+secularity
+secularization
+secularize
+secularizer
+secularly
+secularness
+secund
+secundate
+secundation
+secundiflorous
+secundigravida
+secundine
+secundipara
+secundiparity
+secundiparous
+secundly
+secundogeniture
+secundoprimary
+secundus
+securable
+securance
+secure
+securely
+securement
+secureness
+securer
+securicornate
+securifer
+Securifera
+securiferous
+securiform
+Securigera
+securigerous
+securitan
+security
+Sedaceae
+Sedan
+sedan
+Sedang
+sedanier
+Sedat
+sedate
+sedately
+sedateness
+sedation
+sedative
+sedent
+Sedentaria
+sedentarily
+sedentariness
+sedentary
+sedentation
+Seder
+sederunt
+sedge
+sedged
+sedgelike
+sedging
+sedgy
+sedigitate
+sedigitated
+sedile
+sedilia
+sediment
+sedimental
+sedimentarily
+sedimentary
+sedimentate
+sedimentation
+sedimentous
+sedimetric
+sedimetrical
+sedition
+seditionary
+seditionist
+seditious
+seditiously
+seditiousness
+sedjadeh
+Sedovic
+seduce
+seduceable
+seducee
+seducement
+seducer
+seducible
+seducing
+seducingly
+seducive
+seduct
+seduction
+seductionist
+seductive
+seductively
+seductiveness
+seductress
+sedulity
+sedulous
+sedulously
+sedulousness
+Sedum
+sedum
+see
+seeable
+seeableness
+Seebeck
+seecatch
+seech
+seed
+seedage
+seedbed
+seedbird
+seedbox
+seedcake
+seedcase
+seedeater
+seeded
+Seeder
+seeder
+seedful
+seedgall
+seedily
+seediness
+seedkin
+seedless
+seedlessness
+seedlet
+seedlike
+seedling
+seedlip
+seedman
+seedness
+seedsman
+seedstalk
+seedtime
+seedy
+seege
+seeing
+seeingly
+seeingness
+seek
+seeker
+Seekerism
+seeking
+seel
+seelful
+seely
+seem
+seemable
+seemably
+seemer
+seeming
+seemingly
+seemingness
+seemless
+seemlihead
+seemlily
+seemliness
+seemly
+seen
+seenie
+Seenu
+seep
+seepage
+seeped
+seepweed
+seepy
+seer
+seerband
+seercraft
+seeress
+seerfish
+seerhand
+seerhood
+seerlike
+seerpaw
+seership
+seersucker
+seesaw
+seesawiness
+seesee
+seethe
+seething
+seethingly
+seetulputty
+Sefekhet
+seg
+seggar
+seggard
+segged
+seggrom
+Seginus
+segment
+segmental
+segmentally
+segmentary
+segmentate
+segmentation
+segmented
+sego
+segol
+segolate
+segreant
+segregable
+segregant
+segregate
+segregateness
+segregation
+segregational
+segregationist
+segregative
+segregator
+Sehyo
+seiche
+Seid
+Seidel
+seidel
+Seidlitz
+seigneur
+seigneurage
+seigneuress
+seigneurial
+seigneury
+seignior
+seigniorage
+seignioral
+seignioralty
+seigniorial
+seigniority
+seigniorship
+seigniory
+seignorage
+seignoral
+seignorial
+seignorize
+seignory
+seilenoi
+seilenos
+seine
+seiner
+seirospore
+seirosporic
+seise
+seism
+seismal
+seismatical
+seismetic
+seismic
+seismically
+seismicity
+seismism
+seismochronograph
+seismogram
+seismograph
+seismographer
+seismographic
+seismographical
+seismography
+seismologic
+seismological
+seismologically
+seismologist
+seismologue
+seismology
+seismometer
+seismometric
+seismometrical
+seismometrograph
+seismometry
+seismomicrophone
+seismoscope
+seismoscopic
+seismotectonic
+seismotherapy
+seismotic
+seit
+seity
+Seiurus
+Seiyuhonto
+Seiyukai
+seizable
+seize
+seizer
+seizin
+seizing
+seizor
+seizure
+sejant
+sejoin
+sejoined
+sejugate
+sejugous
+sejunct
+sejunctive
+sejunctively
+sejunctly
+Sekane
+Sekani
+Sekar
+Seker
+Sekhwan
+sekos
+selachian
+Selachii
+selachoid
+Selachoidei
+Selachostome
+Selachostomi
+selachostomous
+seladang
+Selaginaceae
+Selaginella
+Selaginellaceae
+selaginellaceous
+selagite
+Selago
+selah
+selamin
+selamlik
+selbergite
+Selbornian
+seldom
+seldomcy
+seldomer
+seldomly
+seldomness
+seldor
+seldseen
+sele
+select
+selectable
+selected
+selectedly
+selectee
+selection
+selectionism
+selectionist
+selective
+selectively
+selectiveness
+selectivity
+selectly
+selectman
+selectness
+selector
+Selena
+selenate
+Selene
+selenian
+seleniate
+selenic
+Selenicereus
+selenide
+Selenidera
+seleniferous
+selenigenous
+selenion
+selenious
+Selenipedium
+selenite
+selenitic
+selenitical
+selenitiferous
+selenitish
+selenium
+seleniuret
+selenobismuthite
+selenocentric
+selenodont
+Selenodonta
+selenodonty
+selenograph
+selenographer
+selenographic
+selenographical
+selenographically
+selenographist
+selenography
+selenolatry
+selenological
+selenologist
+selenology
+selenomancy
+selenoscope
+selenosis
+selenotropic
+selenotropism
+selenotropy
+selensilver
+selensulphur
+Seleucian
+Seleucid
+Seleucidae
+Seleucidan
+Seleucidean
+Seleucidian
+Seleucidic
+self
+selfcide
+selfdom
+selfful
+selffulness
+selfheal
+selfhood
+selfish
+selfishly
+selfishness
+selfism
+selfist
+selfless
+selflessly
+selflessness
+selfly
+selfness
+selfpreservatory
+selfsame
+selfsameness
+selfward
+selfwards
+selictar
+seligmannite
+selihoth
+Selina
+Selinuntine
+selion
+Seljuk
+Seljukian
+sell
+sella
+sellable
+sellably
+sellaite
+sellar
+sellate
+sellenders
+seller
+Selli
+sellie
+selliform
+selling
+sellout
+selly
+selsoviet
+selsyn
+selt
+Selter
+Seltzer
+seltzogene
+Selung
+selva
+selvage
+selvaged
+selvagee
+selvedge
+selzogene
+Semaeostomae
+Semaeostomata
+Semang
+semanteme
+semantic
+semantical
+semantically
+semantician
+semanticist
+semantics
+semantological
+semantology
+semantron
+semaphore
+semaphoric
+semaphorical
+semaphorically
+semaphorist
+semarum
+semasiological
+semasiologically
+semasiologist
+semasiology
+semateme
+sematic
+sematographic
+sematography
+sematology
+sematrope
+semball
+semblable
+semblably
+semblance
+semblant
+semblative
+semble
+seme
+Semecarpus
+semeed
+semeia
+semeiography
+semeiologic
+semeiological
+semeiologist
+semeiology
+semeion
+semeiotic
+semeiotical
+semeiotics
+semelfactive
+semelincident
+semen
+semence
+Semeostoma
+semese
+semester
+semestral
+semestrial
+semi
+semiabstracted
+semiaccomplishment
+semiacid
+semiacidified
+semiacquaintance
+semiadherent
+semiadjectively
+semiadnate
+semiaerial
+semiaffectionate
+semiagricultural
+Semiahmoo
+semialbinism
+semialcoholic
+semialien
+semiallegiance
+semialpine
+semialuminous
+semiamplexicaul
+semiamplitude
+semianarchist
+semianatomical
+semianatropal
+semianatropous
+semiangle
+semiangular
+semianimal
+semianimate
+semianimated
+semiannealed
+semiannual
+semiannually
+semiannular
+semianthracite
+semiantiministerial
+semiantique
+semiape
+semiaperiodic
+semiaperture
+semiappressed
+semiaquatic
+semiarborescent
+semiarc
+semiarch
+semiarchitectural
+semiarid
+semiaridity
+semiarticulate
+semiasphaltic
+semiatheist
+semiattached
+semiautomatic
+semiautomatically
+semiautonomous
+semiaxis
+semibacchanalian
+semibachelor
+semibald
+semibalked
+semiball
+semiballoon
+semiband
+semibarbarian
+semibarbarianism
+semibarbaric
+semibarbarism
+semibarbarous
+semibaronial
+semibarren
+semibase
+semibasement
+semibastion
+semibay
+semibeam
+semibejan
+semibelted
+semibifid
+semibituminous
+semibleached
+semiblind
+semiblunt
+semibody
+semiboiled
+semibolshevist
+semibolshevized
+semibouffant
+semibourgeois
+semibreve
+semibull
+semiburrowing
+semic
+semicadence
+semicalcareous
+semicalcined
+semicallipygian
+semicanal
+semicanalis
+semicannibalic
+semicantilever
+semicarbazide
+semicarbazone
+semicarbonate
+semicarbonize
+semicardinal
+semicartilaginous
+semicastrate
+semicastration
+semicatholicism
+semicaudate
+semicelestial
+semicell
+semicellulose
+semicentenarian
+semicentenary
+semicentennial
+semicentury
+semichannel
+semichaotic
+semichemical
+semicheviot
+semichevron
+semichiffon
+semichivalrous
+semichoric
+semichorus
+semichrome
+semicircle
+semicircled
+semicircular
+semicircularity
+semicircularly
+semicircularness
+semicircumference
+semicircumferentor
+semicircumvolution
+semicirque
+semicitizen
+semicivilization
+semicivilized
+semiclassic
+semiclassical
+semiclause
+semicleric
+semiclerical
+semiclimber
+semiclimbing
+semiclose
+semiclosed
+semiclosure
+semicoagulated
+semicoke
+semicollapsible
+semicollar
+semicollegiate
+semicolloid
+semicolloquial
+semicolon
+semicolonial
+semicolumn
+semicolumnar
+semicoma
+semicomatose
+semicombined
+semicombust
+semicomic
+semicomical
+semicommercial
+semicompact
+semicompacted
+semicomplete
+semicomplicated
+semiconceal
+semiconcrete
+semiconducting
+semiconductor
+semicone
+semiconfident
+semiconfinement
+semiconfluent
+semiconformist
+semiconformity
+semiconic
+semiconical
+semiconnate
+semiconnection
+semiconoidal
+semiconscious
+semiconsciously
+semiconsciousness
+semiconservative
+semiconsonant
+semiconsonantal
+semiconspicuous
+semicontinent
+semicontinuum
+semicontraction
+semicontradiction
+semiconvergence
+semiconvergent
+semiconversion
+semiconvert
+semicordate
+semicordated
+semicoriaceous
+semicorneous
+semicoronate
+semicoronated
+semicoronet
+semicostal
+semicostiferous
+semicotton
+semicotyle
+semicounterarch
+semicountry
+semicrepe
+semicrescentic
+semicretin
+semicretinism
+semicriminal
+semicroma
+semicrome
+semicrustaceous
+semicrystallinc
+semicubical
+semicubit
+semicup
+semicupium
+semicupola
+semicured
+semicurl
+semicursive
+semicurvilinear
+semicyclic
+semicycloid
+semicylinder
+semicylindric
+semicylindrical
+semicynical
+semidaily
+semidangerous
+semidark
+semidarkness
+semidead
+semideaf
+semidecay
+semidecussation
+semidefinite
+semideific
+semideification
+semideistical
+semideity
+semidelight
+semidelirious
+semideltaic
+semidemented
+semidenatured
+semidependence
+semidependent
+semideponent
+semidesert
+semidestructive
+semidetached
+semidetachment
+semideveloped
+semidiagrammatic
+semidiameter
+semidiapason
+semidiapente
+semidiaphaneity
+semidiaphanous
+semidiatessaron
+semidifference
+semidigested
+semidigitigrade
+semidigression
+semidilapidation
+semidine
+semidirect
+semidisabled
+semidisk
+semiditone
+semidiurnal
+semidivided
+semidivine
+semidocumentary
+semidodecagon
+semidole
+semidome
+semidomed
+semidomestic
+semidomesticated
+semidomestication
+semidomical
+semidormant
+semidouble
+semidrachm
+semidramatic
+semidress
+semidressy
+semidried
+semidry
+semidrying
+semiductile
+semidull
+semiduplex
+semiduration
+semieducated
+semieffigy
+semiegg
+semiegret
+semielastic
+semielision
+semiellipse
+semiellipsis
+semiellipsoidal
+semielliptic
+semielliptical
+semienclosed
+semiengaged
+semiequitant
+semierect
+semieremitical
+semiessay
+semiexecutive
+semiexpanded
+semiexplanation
+semiexposed
+semiexternal
+semiextinct
+semiextinction
+semifable
+semifabulous
+semifailure
+semifamine
+semifascia
+semifasciated
+semifashion
+semifast
+semifatalistic
+semiferal
+semiferous
+semifeudal
+semifeudalism
+semifib
+semifiction
+semifictional
+semifigurative
+semifigure
+semifinal
+semifinalist
+semifine
+semifinish
+semifinished
+semifiscal
+semifistular
+semifit
+semifitting
+semifixed
+semiflashproof
+semiflex
+semiflexed
+semiflexible
+semiflexion
+semiflexure
+semiflint
+semifloating
+semifloret
+semifloscular
+semifloscule
+semiflosculose
+semiflosculous
+semifluctuant
+semifluctuating
+semifluid
+semifluidic
+semifluidity
+semifoaming
+semiforbidding
+semiforeign
+semiform
+semiformal
+semiformed
+semifossil
+semifossilized
+semifrantic
+semifriable
+semifrontier
+semifuddle
+semifunctional
+semifused
+semifusion
+semify
+semigala
+semigelatinous
+semigentleman
+semigenuflection
+semigirder
+semiglaze
+semiglazed
+semiglobe
+semiglobose
+semiglobular
+semiglobularly
+semiglorious
+semiglutin
+semigod
+semigovernmental
+semigrainy
+semigranitic
+semigranulate
+semigravel
+semigroove
+semihand
+semihard
+semiharden
+semihardy
+semihastate
+semihepatization
+semiherbaceous
+semiheterocercal
+semihexagon
+semihexagonal
+semihiant
+semihiatus
+semihibernation
+semihigh
+semihistorical
+semihobo
+semihonor
+semihoral
+semihorny
+semihostile
+semihot
+semihuman
+semihumanitarian
+semihumanized
+semihumbug
+semihumorous
+semihumorously
+semihyaline
+semihydrate
+semihydrobenzoinic
+semihyperbola
+semihyperbolic
+semihyperbolical
+semijealousy
+semijubilee
+semijudicial
+semijuridical
+semilanceolate
+semilatent
+semilatus
+semileafless
+semilegendary
+semilegislative
+semilens
+semilenticular
+semilethal
+semiliberal
+semilichen
+semiligneous
+semilimber
+semilined
+semiliquid
+semiliquidity
+semiliterate
+semilocular
+semilogarithmic
+semilogical
+semilong
+semilooper
+semiloose
+semiloyalty
+semilucent
+semilunar
+semilunare
+semilunary
+semilunate
+semilunation
+semilune
+semiluxation
+semiluxury
+semimachine
+semimade
+semimadman
+semimagical
+semimagnetic
+semimajor
+semimalignant
+semimanufacture
+semimanufactured
+semimarine
+semimarking
+semimathematical
+semimature
+semimechanical
+semimedicinal
+semimember
+semimembranosus
+semimembranous
+semimenstrual
+semimercerized
+semimessianic
+semimetal
+semimetallic
+semimetamorphosis
+semimicrochemical
+semimild
+semimilitary
+semimill
+semimineral
+semimineralized
+semiminim
+semiminor
+semimolecule
+semimonastic
+semimonitor
+semimonopoly
+semimonster
+semimonthly
+semimoron
+semimucous
+semimute
+semimystic
+semimystical
+semimythical
+seminaked
+seminal
+seminality
+seminally
+seminaphthalidine
+seminaphthylamine
+seminar
+seminarcosis
+seminarial
+seminarian
+seminarianism
+seminarist
+seminaristic
+seminarize
+seminary
+seminasal
+seminase
+seminatant
+seminate
+semination
+seminationalization
+seminative
+seminebulous
+seminecessary
+seminegro
+seminervous
+seminiferal
+seminiferous
+seminific
+seminifical
+seminification
+seminist
+seminium
+seminivorous
+seminocturnal
+Seminole
+seminoma
+seminomad
+seminomadic
+seminomata
+seminonconformist
+seminonflammable
+seminonsensical
+seminormal
+seminose
+seminovel
+seminovelty
+seminude
+seminudity
+seminule
+seminuliferous
+seminuria
+seminvariant
+seminvariantive
+semioblivion
+semioblivious
+semiobscurity
+semioccasional
+semioccasionally
+semiocclusive
+semioctagonal
+semiofficial
+semiofficially
+semiography
+Semionotidae
+Semionotus
+semiopacity
+semiopacous
+semiopal
+semiopalescent
+semiopaque
+semiopened
+semiorb
+semiorbicular
+semiorbicularis
+semiorbiculate
+semiordinate
+semiorganized
+semioriental
+semioscillation
+semiosseous
+semiostracism
+semiotic
+semiotician
+semioval
+semiovaloid
+semiovate
+semioviparous
+semiovoid
+semiovoidal
+semioxidated
+semioxidized
+semioxygenated
+semioxygenized
+semipagan
+semipalmate
+semipalmated
+semipalmation
+semipanic
+semipapal
+semipapist
+semiparallel
+semiparalysis
+semiparameter
+semiparasitic
+semiparasitism
+semipaste
+semipastoral
+semipasty
+semipause
+semipeace
+semipectinate
+semipectinated
+semipectoral
+semiped
+semipedal
+semipellucid
+semipellucidity
+semipendent
+semipenniform
+semiperfect
+semiperimeter
+semiperimetry
+semiperiphery
+semipermanent
+semipermeability
+semipermeable
+semiperoid
+semiperspicuous
+semipertinent
+semipervious
+semipetaloid
+semipetrified
+semiphase
+semiphilologist
+semiphilosophic
+semiphilosophical
+semiphlogisticated
+semiphonotypy
+semiphosphorescent
+semipinacolic
+semipinacolin
+semipinnate
+semipiscine
+semiplantigrade
+semiplastic
+semiplumaceous
+semiplume
+semipolar
+semipolitical
+semipolitician
+semipoor
+semipopish
+semipopular
+semiporcelain
+semiporous
+semiporphyritic
+semiportable
+semipostal
+semipractical
+semiprecious
+semipreservation
+semiprimigenous
+semiprivacy
+semiprivate
+semipro
+semiprofane
+semiprofessional
+semiprofessionalized
+semipronation
+semiprone
+semipronominal
+semiproof
+semiproselyte
+semiprosthetic
+semiprostrate
+semiprotectorate
+semiproven
+semipublic
+semipupa
+semipurulent
+semiputrid
+semipyramidal
+semipyramidical
+semipyritic
+semiquadrangle
+semiquadrantly
+semiquadrate
+semiquantitative
+semiquantitatively
+semiquartile
+semiquaver
+semiquietism
+semiquietist
+semiquinquefid
+semiquintile
+semiquote
+semiradial
+semiradiate
+Semiramis
+Semiramize
+semirapacious
+semirare
+semirattlesnake
+semiraw
+semirebellion
+semirecondite
+semirecumbent
+semirefined
+semireflex
+semiregular
+semirelief
+semireligious
+semireniform
+semirepublican
+semiresinous
+semiresolute
+semirespectability
+semirespectable
+semireticulate
+semiretirement
+semiretractile
+semireverberatory
+semirevolute
+semirevolution
+semirevolutionist
+semirhythm
+semiriddle
+semirigid
+semiring
+semiroll
+semirotary
+semirotating
+semirotative
+semirotatory
+semirotund
+semirotunda
+semiround
+semiroyal
+semiruin
+semirural
+semirustic
+semis
+semisacerdotal
+semisacred
+semisagittate
+semisaint
+semisaline
+semisaltire
+semisaprophyte
+semisaprophytic
+semisarcodic
+semisatiric
+semisaturation
+semisavage
+semisavagedom
+semisavagery
+semiscenic
+semischolastic
+semiscientific
+semiseafaring
+semisecondary
+semisecrecy
+semisecret
+semisection
+semisedentary
+semisegment
+semisensuous
+semisentient
+semisentimental
+semiseparatist
+semiseptate
+semiserf
+semiserious
+semiseriously
+semiseriousness
+semiservile
+semisevere
+semiseverely
+semiseverity
+semisextile
+semishady
+semishaft
+semisheer
+semishirker
+semishrub
+semishrubby
+semisightseeing
+semisilica
+semisimious
+semisimple
+semisingle
+semisixth
+semiskilled
+semislave
+semismelting
+semismile
+semisocial
+semisocialism
+semisociative
+semisocinian
+semisoft
+semisolemn
+semisolemnity
+semisolemnly
+semisolid
+semisolute
+semisomnambulistic
+semisomnolence
+semisomnous
+semisopor
+semisovereignty
+semispan
+semispeculation
+semisphere
+semispheric
+semispherical
+semispheroidal
+semispinalis
+semispiral
+semispiritous
+semispontaneity
+semispontaneous
+semispontaneously
+semispontaneousness
+semisport
+semisporting
+semisquare
+semistagnation
+semistaminate
+semistarvation
+semistarved
+semistate
+semisteel
+semistiff
+semistill
+semistock
+semistory
+semistratified
+semistriate
+semistriated
+semistuporous
+semisubterranean
+semisuburban
+semisuccess
+semisuccessful
+semisuccessfully
+semisucculent
+semisupernatural
+semisupinated
+semisupination
+semisupine
+semisuspension
+semisymmetric
+semita
+semitact
+semitae
+semitailored
+semital
+semitandem
+semitangent
+semitaur
+Semite
+semitechnical
+semiteetotal
+semitelic
+semitendinosus
+semitendinous
+semiterete
+semiterrestrial
+semitertian
+semitesseral
+semitessular
+semitheological
+semithoroughfare
+Semitic
+Semiticism
+Semiticize
+Semitics
+semitime
+Semitism
+Semitist
+Semitization
+Semitize
+semitonal
+semitonally
+semitone
+semitonic
+semitonically
+semitontine
+semitorpid
+semitour
+semitrailer
+semitrained
+semitransept
+semitranslucent
+semitransparency
+semitransparent
+semitransverse
+semitreasonable
+semitrimmed
+semitropic
+semitropical
+semitropics
+semitruth
+semituberous
+semitubular
+semiuncial
+semiundressed
+semiuniversalist
+semiupright
+semiurban
+semiurn
+semivalvate
+semivault
+semivector
+semivegetable
+semivertebral
+semiverticillate
+semivibration
+semivirtue
+semiviscid
+semivital
+semivitreous
+semivitrification
+semivitrified
+semivocal
+semivocalic
+semivolatile
+semivolcanic
+semivoluntary
+semivowel
+semivulcanized
+semiwaking
+semiwarfare
+semiweekly
+semiwild
+semiwoody
+semiyearly
+semmet
+semmit
+Semnae
+Semnones
+Semnopithecinae
+semnopithecine
+Semnopithecus
+semola
+semolella
+semolina
+semological
+semology
+Semostomae
+semostomeous
+semostomous
+semperannual
+sempergreen
+semperidentical
+semperjuvenescent
+sempervirent
+sempervirid
+Sempervivum
+sempitern
+sempiternal
+sempiternally
+sempiternity
+sempiternize
+sempiternous
+sempstrywork
+semsem
+semuncia
+semuncial
+sen
+Senaah
+senaite
+senam
+senarian
+senarius
+senarmontite
+senary
+senate
+senator
+senatorial
+senatorially
+senatorian
+senatorship
+senatory
+senatress
+senatrices
+senatrix
+sence
+Senci
+sencion
+send
+sendable
+sendal
+sendee
+sender
+sending
+Seneca
+Senecan
+Senecio
+senecioid
+senecionine
+senectitude
+senectude
+senectuous
+senega
+Senegal
+Senegalese
+Senegambian
+senegin
+senesce
+senescence
+senescent
+seneschal
+seneschally
+seneschalship
+seneschalsy
+seneschalty
+sengreen
+senicide
+Senijextee
+senile
+senilely
+senilism
+senility
+senilize
+senior
+seniority
+seniorship
+Senlac
+Senna
+senna
+sennegrass
+sennet
+sennight
+sennit
+sennite
+senocular
+Senones
+Senonian
+sensa
+sensable
+sensal
+sensate
+sensation
+sensational
+sensationalism
+sensationalist
+sensationalistic
+sensationalize
+sensationally
+sensationary
+sensationish
+sensationism
+sensationist
+sensationistic
+sensationless
+sensatorial
+sensatory
+sense
+sensed
+senseful
+senseless
+senselessly
+senselessness
+sensibilia
+sensibilisin
+sensibilitist
+sensibilitous
+sensibility
+sensibilium
+sensibilization
+sensibilize
+sensible
+sensibleness
+sensibly
+sensical
+sensifacient
+sensiferous
+sensific
+sensificatory
+sensifics
+sensify
+sensigenous
+sensile
+sensilia
+sensilla
+sensillum
+sension
+sensism
+sensist
+sensistic
+sensitive
+sensitively
+sensitiveness
+sensitivity
+sensitization
+sensitize
+sensitizer
+sensitometer
+sensitometric
+sensitometry
+sensitory
+sensive
+sensize
+senso
+sensomobile
+sensomobility
+sensomotor
+sensoparalysis
+sensor
+sensoria
+sensorial
+sensoriglandular
+sensorimotor
+sensorimuscular
+sensorium
+sensorivascular
+sensorivasomotor
+sensorivolitional
+sensory
+sensual
+sensualism
+sensualist
+sensualistic
+sensuality
+sensualization
+sensualize
+sensually
+sensualness
+sensuism
+sensuist
+sensum
+sensuosity
+sensuous
+sensuously
+sensuousness
+sensyne
+sent
+sentence
+sentencer
+sentential
+sententially
+sententiarian
+sententiarist
+sententiary
+sententiosity
+sententious
+sententiously
+sententiousness
+sentience
+sentiendum
+sentient
+sentiently
+sentiment
+sentimental
+sentimentalism
+sentimentalist
+sentimentality
+sentimentalization
+sentimentalize
+sentimentalizer
+sentimentally
+sentimenter
+sentimentless
+sentinel
+sentinellike
+sentinelship
+sentinelwise
+sentisection
+sentition
+sentry
+Senusi
+Senusian
+Senusism
+sepad
+sepal
+sepaled
+sepaline
+sepalled
+sepalody
+sepaloid
+separability
+separable
+separableness
+separably
+separata
+separate
+separatedly
+separately
+separateness
+separates
+separatical
+separating
+separation
+separationism
+separationist
+separatism
+separatist
+separatistic
+separative
+separatively
+separativeness
+separator
+separatory
+separatress
+separatrix
+separatum
+Sepharad
+Sephardi
+Sephardic
+Sephardim
+Sepharvites
+sephen
+sephiric
+sephirothic
+sepia
+sepiaceous
+sepialike
+sepian
+sepiarian
+sepiary
+sepic
+sepicolous
+Sepiidae
+sepiment
+sepioid
+Sepioidea
+Sepiola
+Sepiolidae
+sepiolite
+sepion
+sepiost
+sepiostaire
+sepium
+sepone
+sepoy
+seppuku
+seps
+Sepsidae
+sepsine
+sepsis
+Sept
+sept
+septa
+septal
+septan
+septane
+septangle
+septangled
+septangular
+septangularness
+septarian
+septariate
+septarium
+septate
+septated
+septation
+septatoarticulate
+septavalent
+septave
+septcentenary
+septectomy
+September
+Septemberer
+Septemberism
+Septemberist
+Septembral
+Septembrian
+Septembrist
+Septembrize
+Septembrizer
+septemdecenary
+septemfid
+septemfluous
+septemfoliate
+septemfoliolate
+septemia
+septempartite
+septemplicate
+septemvious
+septemvir
+septemvirate
+septemviri
+septenar
+septenarian
+septenarius
+septenary
+septenate
+septendecennial
+septendecimal
+septennary
+septennate
+septenniad
+septennial
+septennialist
+septenniality
+septennially
+septennium
+septenous
+Septentrio
+Septentrion
+septentrional
+septentrionality
+septentrionally
+septentrionate
+septentrionic
+septerium
+septet
+septfoil
+Septi
+Septibranchia
+Septibranchiata
+septic
+septical
+septically
+septicemia
+septicemic
+septicidal
+septicidally
+septicity
+septicization
+septicolored
+septicopyemia
+septicopyemic
+septier
+septifarious
+septiferous
+septifluous
+septifolious
+septiform
+septifragal
+septifragally
+septilateral
+septile
+septillion
+septillionth
+septimal
+septimanal
+septimanarian
+septime
+septimetritis
+septimole
+septinsular
+septipartite
+septisyllabic
+septisyllable
+septivalent
+septleva
+Septobasidium
+septocosta
+septocylindrical
+Septocylindrium
+septodiarrhea
+septogerm
+Septogloeum
+septoic
+septole
+septomarginal
+septomaxillary
+septonasal
+Septoria
+septotomy
+septship
+septuagenarian
+septuagenarianism
+septuagenary
+septuagesima
+Septuagint
+septuagint
+Septuagintal
+septulate
+septulum
+septum
+septuncial
+septuor
+septuple
+septuplet
+septuplicate
+septuplication
+sepulcher
+sepulchral
+sepulchralize
+sepulchrally
+sepulchrous
+sepultural
+sepulture
+sequa
+sequacious
+sequaciously
+sequaciousness
+sequacity
+Sequan
+Sequani
+Sequanian
+sequel
+sequela
+sequelae
+sequelant
+sequence
+sequencer
+sequency
+sequent
+sequential
+sequentiality
+sequentially
+sequently
+sequest
+sequester
+sequestered
+sequesterment
+sequestra
+sequestrable
+sequestral
+sequestrate
+sequestration
+sequestrator
+sequestratrices
+sequestratrix
+sequestrectomy
+sequestrotomy
+sequestrum
+sequin
+sequitur
+Sequoia
+ser
+sera
+serab
+Serabend
+seragli
+seraglio
+serai
+serail
+seral
+seralbumin
+seralbuminous
+serang
+serape
+Serapea
+Serapeum
+seraph
+seraphic
+seraphical
+seraphically
+seraphicalness
+seraphicism
+seraphicness
+seraphim
+seraphina
+seraphine
+seraphism
+seraphlike
+seraphtide
+Serapias
+Serapic
+Serapis
+Serapist
+serasker
+seraskerate
+seraskier
+seraskierat
+serau
+seraw
+Serb
+Serbdom
+Serbian
+Serbize
+Serbonian
+Serbophile
+Serbophobe
+sercial
+serdab
+Serdar
+Sere
+sere
+Serean
+sereh
+Serena
+serenade
+serenader
+serenata
+serenate
+Serendib
+serendibite
+serendipity
+serendite
+serene
+serenely
+sereneness
+serenify
+serenissime
+serenissimi
+serenissimo
+serenity
+serenize
+Serenoa
+Serer
+Seres
+sereward
+serf
+serfage
+serfdom
+serfhood
+serfish
+serfishly
+serfishness
+serfism
+serflike
+serfship
+Serge
+serge
+sergeancy
+Sergeant
+sergeant
+sergeantcy
+sergeantess
+sergeantry
+sergeantship
+sergeanty
+sergedesoy
+Sergei
+serger
+sergette
+serging
+Sergio
+Sergiu
+Sergius
+serglobulin
+Seri
+serial
+serialist
+seriality
+serialization
+serialize
+serially
+Serian
+seriary
+seriate
+seriately
+seriatim
+seriation
+Seric
+Sericana
+sericate
+sericated
+sericea
+sericeotomentose
+sericeous
+sericicultural
+sericiculture
+sericiculturist
+sericin
+sericipary
+sericite
+sericitic
+sericitization
+Sericocarpus
+sericteria
+sericterium
+serictery
+sericultural
+sericulture
+sericulturist
+seriema
+series
+serif
+serific
+Seriform
+serigraph
+serigrapher
+serigraphy
+serimeter
+serin
+serine
+serinette
+seringa
+seringal
+seringhi
+Serinus
+serio
+seriocomedy
+seriocomic
+seriocomical
+seriocomically
+seriogrotesque
+Seriola
+Seriolidae
+serioline
+serioludicrous
+seriopantomimic
+serioridiculous
+seriosity
+serious
+seriously
+seriousness
+seripositor
+Serjania
+serjeant
+serment
+sermo
+sermocination
+sermocinatrix
+sermon
+sermoneer
+sermoner
+sermonesque
+sermonet
+sermonettino
+sermonic
+sermonically
+sermonics
+sermonish
+sermonism
+sermonist
+sermonize
+sermonizer
+sermonless
+sermonoid
+sermonolatry
+sermonology
+sermonproof
+sermonwise
+sermuncle
+sernamby
+sero
+seroalbumin
+seroalbuminuria
+seroanaphylaxis
+serobiological
+serocolitis
+serocyst
+serocystic
+serodermatosis
+serodermitis
+serodiagnosis
+serodiagnostic
+seroenteritis
+seroenzyme
+serofibrinous
+serofibrous
+serofluid
+serogelatinous
+serohemorrhagic
+serohepatitis
+seroimmunity
+serolactescent
+serolemma
+serolin
+serolipase
+serologic
+serological
+serologically
+serologist
+serology
+seromaniac
+seromembranous
+seromucous
+seromuscular
+seron
+seronegative
+seronegativity
+seroon
+seroot
+seroperitoneum
+serophthisis
+serophysiology
+seroplastic
+seropneumothorax
+seropositive
+seroprevention
+seroprognosis
+seroprophylaxis
+seroprotease
+seropuriform
+seropurulent
+seropus
+seroreaction
+serosa
+serosanguineous
+serosanguinolent
+seroscopy
+serositis
+serosity
+serosynovial
+serosynovitis
+serotherapeutic
+serotherapeutics
+serotherapist
+serotherapy
+serotina
+serotinal
+serotine
+serotinous
+serotoxin
+serous
+serousness
+serovaccine
+serow
+serozyme
+Serpari
+serpedinous
+Serpens
+Serpent
+serpent
+serpentaria
+Serpentarian
+Serpentarii
+serpentarium
+Serpentarius
+serpentary
+serpentcleide
+serpenteau
+Serpentes
+serpentess
+Serpentian
+serpenticidal
+serpenticide
+Serpentid
+serpentiferous
+serpentiform
+serpentina
+serpentine
+serpentinely
+Serpentinian
+serpentinic
+serpentiningly
+serpentinization
+serpentinize
+serpentinoid
+serpentinous
+Serpentis
+serpentivorous
+serpentize
+serpentlike
+serpently
+serpentoid
+serpentry
+serpentwood
+serphid
+Serphidae
+serphoid
+Serphoidea
+serpierite
+serpiginous
+serpiginously
+serpigo
+serpivolant
+serpolet
+Serpula
+serpula
+Serpulae
+serpulae
+serpulan
+serpulid
+Serpulidae
+serpulidan
+serpuline
+serpulite
+serpulitic
+serpuloid
+serra
+serradella
+serrage
+serran
+serrana
+serranid
+Serranidae
+Serrano
+serrano
+serranoid
+Serranus
+Serrasalmo
+serrate
+serrated
+serratic
+serratiform
+serratile
+serration
+serratirostral
+serratocrenate
+serratodentate
+serratodenticulate
+serratoglandulous
+serratospinose
+serrature
+serricorn
+Serricornia
+Serridentines
+Serridentinus
+serried
+serriedly
+serriedness
+Serrifera
+serriferous
+serriform
+serriped
+serrirostrate
+serrulate
+serrulated
+serrulation
+serry
+sert
+serta
+Sertularia
+sertularian
+Sertulariidae
+sertularioid
+sertule
+sertulum
+sertum
+serum
+serumal
+serut
+servable
+servage
+serval
+servaline
+servant
+servantcy
+servantdom
+servantess
+servantless
+servantlike
+servantry
+servantship
+servation
+serve
+servente
+serventism
+server
+servery
+servet
+Servetian
+Servetianism
+Servian
+service
+serviceability
+serviceable
+serviceableness
+serviceably
+serviceberry
+serviceless
+servicelessness
+serviceman
+Servidor
+servidor
+servient
+serviential
+serviette
+servile
+servilely
+servileness
+servilism
+servility
+servilize
+serving
+servingman
+servist
+Servite
+servitor
+servitorial
+servitorship
+servitress
+servitrix
+servitude
+serviture
+Servius
+servo
+servomechanism
+servomotor
+servulate
+serwamby
+sesame
+sesamoid
+sesamoidal
+sesamoiditis
+Sesamum
+Sesban
+Sesbania
+sescuple
+Seseli
+Seshat
+Sesia
+Sesiidae
+sesma
+sesqui
+sesquialter
+sesquialtera
+sesquialteral
+sesquialteran
+sesquialterous
+sesquibasic
+sesquicarbonate
+sesquicentennial
+sesquichloride
+sesquiduplicate
+sesquihydrate
+sesquihydrated
+sesquinona
+sesquinonal
+sesquioctava
+sesquioctaval
+sesquioxide
+sesquipedal
+sesquipedalian
+sesquipedalianism
+sesquipedality
+sesquiplicate
+sesquiquadrate
+sesquiquarta
+sesquiquartal
+sesquiquartile
+sesquiquinta
+sesquiquintal
+sesquiquintile
+sesquisalt
+sesquiseptimal
+sesquisextal
+sesquisilicate
+sesquisquare
+sesquisulphate
+sesquisulphide
+sesquisulphuret
+sesquiterpene
+sesquitertia
+sesquitertial
+sesquitertian
+sesquitertianal
+sess
+sessile
+sessility
+Sessiliventres
+session
+sessional
+sessionary
+sessions
+sesterce
+sestertium
+sestet
+sesti
+sestiad
+Sestian
+sestina
+sestine
+sestole
+sestuor
+Sesuto
+Sesuvium
+set
+seta
+setaceous
+setaceously
+setae
+setal
+Setaria
+setarious
+setback
+setbolt
+setdown
+setfast
+Seth
+seth
+sethead
+Sethian
+Sethic
+Sethite
+Setibo
+setier
+Setifera
+setiferous
+setiform
+setigerous
+setiparous
+setirostral
+setline
+setness
+setoff
+seton
+Setophaga
+Setophaginae
+setophagine
+setose
+setous
+setout
+setover
+setscrew
+setsman
+sett
+settable
+settaine
+settee
+setter
+settergrass
+setterwort
+setting
+settle
+settleable
+settled
+settledly
+settledness
+settlement
+settler
+settlerdom
+settling
+settlings
+settlor
+settsman
+setula
+setule
+setuliform
+setulose
+setulous
+setup
+setwall
+setwise
+setwork
+seugh
+Sevastopol
+seven
+sevenbark
+sevener
+sevenfold
+sevenfolded
+sevenfoldness
+sevennight
+sevenpence
+sevenpenny
+sevenscore
+seventeen
+seventeenfold
+seventeenth
+seventeenthly
+seventh
+seventhly
+seventieth
+seventy
+seventyfold
+sever
+severable
+several
+severalfold
+severality
+severalize
+severally
+severalness
+severalth
+severalty
+severance
+severation
+severe
+severedly
+severely
+severeness
+severer
+Severian
+severingly
+severish
+severity
+severization
+severize
+severy
+Sevillian
+sew
+sewable
+sewage
+sewan
+sewed
+sewellel
+sewen
+sewer
+sewerage
+sewered
+sewerless
+sewerlike
+sewerman
+sewery
+sewing
+sewless
+sewn
+sewround
+sex
+sexadecimal
+sexagenarian
+sexagenarianism
+sexagenary
+Sexagesima
+sexagesimal
+sexagesimally
+sexagesimals
+sexagonal
+sexangle
+sexangled
+sexangular
+sexangularly
+sexannulate
+sexarticulate
+sexcentenary
+sexcuspidate
+sexdigital
+sexdigitate
+sexdigitated
+sexdigitism
+sexed
+sexenary
+sexennial
+sexennially
+sexennium
+sexern
+sexfarious
+sexfid
+sexfoil
+sexhood
+sexifid
+sexillion
+sexiped
+sexipolar
+sexisyllabic
+sexisyllable
+sexitubercular
+sexivalence
+sexivalency
+sexivalent
+sexless
+sexlessly
+sexlessness
+sexlike
+sexlocular
+sexly
+sexological
+sexologist
+sexology
+sexpartite
+sexradiate
+sext
+sextactic
+sextain
+sextan
+sextans
+Sextant
+sextant
+sextantal
+sextar
+sextarii
+sextarius
+sextary
+sextennial
+sextern
+sextet
+sextic
+sextile
+Sextilis
+sextillion
+sextillionth
+sextipara
+sextipartite
+sextipartition
+sextiply
+sextipolar
+sexto
+sextodecimo
+sextole
+sextolet
+sexton
+sextoness
+sextonship
+sextry
+sextubercular
+sextuberculate
+sextula
+sextulary
+sextumvirate
+sextuple
+sextuplet
+sextuplex
+sextuplicate
+sextuply
+sexual
+sexuale
+sexualism
+sexualist
+sexuality
+sexualization
+sexualize
+sexually
+sexuous
+sexupara
+sexuparous
+sexy
+sey
+seybertite
+Seymeria
+Seymour
+sfoot
+Sgad
+sgraffiato
+sgraffito
+sh
+sha
+shaatnez
+shab
+Shaban
+shabash
+Shabbath
+shabbed
+shabbify
+shabbily
+shabbiness
+shabble
+shabby
+shabbyish
+shabrack
+shabunder
+Shabuoth
+shachle
+shachly
+shack
+shackanite
+shackatory
+shackbolt
+shackland
+shackle
+shacklebone
+shackledom
+shackler
+shacklewise
+shackling
+shackly
+shacky
+shad
+shadbelly
+shadberry
+shadbird
+shadbush
+shadchan
+shaddock
+shade
+shaded
+shadeful
+shadeless
+shadelessness
+shader
+shadetail
+shadflower
+shadily
+shadine
+shadiness
+shading
+shadkan
+shadoof
+Shadow
+shadow
+shadowable
+shadowbox
+shadowboxing
+shadowed
+shadower
+shadowfoot
+shadowgram
+shadowgraph
+shadowgraphic
+shadowgraphist
+shadowgraphy
+shadowily
+shadowiness
+shadowing
+shadowishly
+shadowist
+shadowland
+shadowless
+shadowlessness
+shadowlike
+shadowly
+shadowy
+shadrach
+shady
+shaffle
+Shafiite
+shaft
+shafted
+shafter
+shaftfoot
+shafting
+shaftless
+shaftlike
+shaftman
+shaftment
+shaftsman
+shaftway
+shafty
+shag
+shaganappi
+shagbag
+shagbark
+shagged
+shaggedness
+shaggily
+shagginess
+shaggy
+Shagia
+shaglet
+shaglike
+shagpate
+shagrag
+shagreen
+shagreened
+shagroon
+shagtail
+shah
+Shahaptian
+shaharith
+shahdom
+shahi
+Shahid
+shahin
+shahzada
+Shai
+Shaigia
+shaikh
+Shaikiyeh
+shaitan
+Shaiva
+Shaivism
+Shaka
+shakable
+shake
+shakeable
+shakebly
+shakedown
+shakefork
+shaken
+shakenly
+shakeout
+shakeproof
+Shaker
+shaker
+shakerag
+Shakerdom
+Shakeress
+Shakerism
+Shakerlike
+shakers
+shakescene
+Shakespearean
+Shakespeareana
+Shakespeareanism
+Shakespeareanly
+Shakespearize
+Shakespearolater
+Shakespearolatry
+shakha
+Shakil
+shakily
+shakiness
+shaking
+shakingly
+shako
+shaksheer
+Shakta
+Shakti
+shakti
+Shaktism
+shaku
+shaky
+Shakyamuni
+Shalako
+shale
+shalelike
+shaleman
+shall
+shallal
+shallon
+shalloon
+shallop
+shallopy
+shallot
+shallow
+shallowbrained
+shallowhearted
+shallowish
+shallowist
+shallowly
+shallowness
+shallowpate
+shallowpated
+shallows
+shallowy
+shallu
+shalom
+shalt
+shalwar
+shaly
+Sham
+sham
+shama
+shamable
+shamableness
+shamably
+shamal
+shamalo
+shaman
+shamaness
+shamanic
+shamanism
+shamanist
+shamanistic
+shamanize
+shamateur
+shamba
+Shambala
+shamble
+shambling
+shamblingly
+shambrier
+Shambu
+shame
+shameable
+shamed
+shameface
+shamefaced
+shamefacedly
+shamefacedness
+shamefast
+shamefastly
+shamefastness
+shameful
+shamefully
+shamefulness
+shameless
+shamelessly
+shamelessness
+shameproof
+shamer
+shamesick
+shameworthy
+shamianah
+Shamim
+shamir
+Shammar
+shammed
+shammer
+shammick
+shamming
+shammish
+shammock
+shammocking
+shammocky
+shammy
+shampoo
+shampooer
+shamrock
+shamroot
+shamsheer
+Shan
+shan
+shanachas
+shanachie
+Shandean
+shandry
+shandrydan
+Shandy
+shandy
+shandygaff
+Shandyism
+Shane
+Shang
+Shangalla
+shangan
+Shanghai
+shanghai
+shanghaier
+shank
+Shankar
+shanked
+shanker
+shankings
+shankpiece
+shanksman
+shanna
+Shannon
+shanny
+shansa
+shant
+Shantung
+shanty
+shantylike
+shantyman
+shantytown
+shap
+shapable
+Shape
+shape
+shaped
+shapeful
+shapeless
+shapelessly
+shapelessness
+shapeliness
+shapely
+shapen
+shaper
+shapeshifter
+shapesmith
+shaping
+shapingly
+shapometer
+shaps
+Shaptan
+shapy
+sharable
+Sharada
+Sharan
+shard
+Shardana
+sharded
+shardy
+share
+shareable
+sharebone
+sharebroker
+sharecrop
+sharecropper
+shareholder
+shareholdership
+shareman
+sharepenny
+sharer
+shareship
+sharesman
+sharewort
+Sharezer
+shargar
+Shari
+Sharia
+Sharira
+shark
+sharkful
+sharkish
+sharklet
+sharklike
+sharkship
+sharkskin
+sharky
+sharn
+sharnbud
+sharny
+Sharon
+sharp
+sharpen
+sharpener
+sharper
+sharpie
+sharpish
+sharply
+sharpness
+sharps
+sharpsaw
+sharpshin
+sharpshod
+sharpshooter
+sharpshooting
+sharptail
+sharpware
+sharpy
+Sharra
+sharrag
+sharry
+Shasta
+shastaite
+Shastan
+shaster
+shastra
+shastraik
+shastri
+shastrik
+shat
+shatan
+shathmont
+Shatter
+shatter
+shatterbrain
+shatterbrained
+shatterer
+shatterheaded
+shattering
+shatteringly
+shatterment
+shatterpated
+shatterproof
+shatterwit
+shattery
+shattuckite
+shauchle
+shaugh
+shaul
+Shaula
+shaup
+shauri
+shauwe
+shavable
+shave
+shaveable
+shaved
+shavee
+shaveling
+shaven
+shaver
+shavery
+Shavese
+shavester
+shavetail
+shaveweed
+Shavian
+Shaviana
+Shavianism
+shaving
+shavings
+Shaw
+shaw
+Shawanese
+Shawano
+shawl
+shawled
+shawling
+shawlless
+shawllike
+shawlwise
+shawm
+Shawn
+Shawnee
+shawneewood
+shawny
+Shawwal
+shawy
+shay
+Shaysite
+she
+shea
+sheading
+sheaf
+sheafage
+sheaflike
+sheafripe
+sheafy
+sheal
+shealing
+Shean
+shear
+shearbill
+sheard
+shearer
+sheargrass
+shearhog
+shearing
+shearless
+shearling
+shearman
+shearmouse
+shears
+shearsman
+sheartail
+shearwater
+shearwaters
+sheat
+sheatfish
+sheath
+sheathbill
+sheathe
+sheathed
+sheather
+sheathery
+sheathing
+sheathless
+sheathlike
+sheathy
+sheave
+sheaved
+sheaveless
+sheaveman
+shebang
+Shebat
+shebeen
+shebeener
+Shechem
+Shechemites
+shed
+shedded
+shedder
+shedding
+sheder
+shedhand
+shedlike
+shedman
+shedwise
+shee
+sheely
+sheen
+sheenful
+sheenless
+sheenly
+sheeny
+sheep
+sheepback
+sheepberry
+sheepbine
+sheepbiter
+sheepbiting
+sheepcote
+sheepcrook
+sheepfaced
+sheepfacedly
+sheepfacedness
+sheepfold
+sheepfoot
+sheepgate
+sheephead
+sheepheaded
+sheephearted
+sheepherder
+sheepherding
+sheephook
+sheephouse
+sheepify
+sheepish
+sheepishly
+sheepishness
+sheepkeeper
+sheepkeeping
+sheepkill
+sheepless
+sheeplet
+sheeplike
+sheepling
+sheepman
+sheepmaster
+sheepmonger
+sheepnose
+sheepnut
+sheeppen
+sheepshank
+sheepshead
+sheepsheadism
+sheepshear
+sheepshearer
+sheepshearing
+sheepshed
+sheepskin
+sheepsplit
+sheepsteal
+sheepstealer
+sheepstealing
+sheepwalk
+sheepwalker
+sheepweed
+sheepy
+sheer
+sheered
+sheering
+sheerly
+sheerness
+sheet
+sheetage
+sheeted
+sheeter
+sheetflood
+sheetful
+sheeting
+sheetless
+sheetlet
+sheetlike
+sheetling
+sheetways
+sheetwise
+sheetwork
+sheetwriting
+sheety
+Sheffield
+shehitah
+sheik
+sheikdom
+sheikhlike
+sheikhly
+sheiklike
+sheikly
+Sheila
+shekel
+Shekinah
+Shel
+shela
+sheld
+sheldapple
+shelder
+sheldfowl
+sheldrake
+shelduck
+shelf
+shelfback
+shelffellow
+shelfful
+shelflist
+shelfmate
+shelfpiece
+shelfroom
+shelfworn
+shelfy
+shell
+shellac
+shellacker
+shellacking
+shellapple
+shellback
+shellblow
+shellblowing
+shellbound
+shellburst
+shellcracker
+shelleater
+shelled
+sheller
+Shelleyan
+Shelleyana
+shellfire
+shellfish
+shellfishery
+shellflower
+shellful
+shellhead
+shelliness
+shelling
+shellman
+shellmonger
+shellproof
+shellshake
+shellum
+shellwork
+shellworker
+shelly
+shellycoat
+shelta
+shelter
+shelterage
+sheltered
+shelterer
+shelteringly
+shelterless
+shelterlessness
+shelterwood
+sheltery
+sheltron
+shelty
+shelve
+shelver
+shelving
+shelvingly
+shelvingness
+shelvy
+Shelyak
+Shemaka
+sheminith
+Shemite
+Shemitic
+Shemitish
+Shemu
+Shen
+shenanigan
+shend
+sheng
+Shenshai
+Sheol
+sheolic
+shepherd
+shepherdage
+shepherddom
+shepherdess
+shepherdhood
+Shepherdia
+shepherdish
+shepherdism
+shepherdize
+shepherdless
+shepherdlike
+shepherdling
+shepherdly
+shepherdry
+sheppeck
+sheppey
+shepstare
+sher
+Sherani
+Sherardia
+sherardize
+sherardizer
+Sheratan
+Sheraton
+sherbacha
+sherbet
+sherbetlee
+sherbetzide
+sheriat
+sherif
+sherifa
+sherifate
+sheriff
+sheriffalty
+sheriffdom
+sheriffess
+sheriffhood
+sheriffry
+sheriffship
+sheriffwick
+sherifi
+sherifian
+sherify
+sheristadar
+Sheriyat
+sherlock
+Sherman
+Sherpa
+Sherramoor
+Sherri
+sherry
+Sherrymoor
+sherryvallies
+Shesha
+sheth
+Shetland
+Shetlander
+Shetlandic
+sheugh
+sheva
+shevel
+sheveled
+shevri
+shewa
+shewbread
+shewel
+sheyle
+shi
+Shiah
+shibah
+shibar
+shibboleth
+shibbolethic
+shibuichi
+shice
+shicer
+shicker
+shickered
+shide
+shied
+shiel
+shield
+shieldable
+shieldboard
+shielddrake
+shielded
+shielder
+shieldflower
+shielding
+shieldless
+shieldlessly
+shieldlessness
+shieldlike
+shieldling
+shieldmaker
+shieldmay
+shieldtail
+shieling
+shier
+shies
+shiest
+shift
+shiftable
+shiftage
+shifter
+shiftful
+shiftfulness
+shiftily
+shiftiness
+shifting
+shiftingly
+shiftingness
+shiftless
+shiftlessly
+shiftlessness
+shifty
+Shigella
+shiggaion
+shigram
+shih
+Shiism
+Shiite
+Shiitic
+Shik
+shikar
+shikara
+shikargah
+shikari
+shikasta
+shikimi
+shikimic
+shikimole
+shikimotoxin
+shikken
+shiko
+shikra
+shilf
+shilfa
+Shilh
+Shilha
+shill
+shilla
+shillaber
+shillelagh
+shillet
+shillety
+shillhouse
+shillibeer
+shilling
+shillingless
+shillingsworth
+shilloo
+Shilluh
+Shilluk
+Shiloh
+shilpit
+shim
+shimal
+Shimei
+shimmer
+shimmering
+shimmeringly
+shimmery
+shimmy
+Shimonoseki
+shimose
+shimper
+shin
+Shina
+shinaniging
+shinarump
+shinbone
+shindig
+shindle
+shindy
+shine
+shineless
+shiner
+shingle
+shingled
+shingler
+shingles
+shinglewise
+shinglewood
+shingling
+shingly
+shinily
+shininess
+shining
+shiningly
+shiningness
+shinleaf
+Shinnecock
+shinner
+shinnery
+shinning
+shinny
+shinplaster
+shintiyan
+Shinto
+Shintoism
+Shintoist
+Shintoistic
+Shintoize
+shinty
+Shinwari
+shinwood
+shiny
+shinza
+ship
+shipboard
+shipbound
+shipboy
+shipbreaking
+shipbroken
+shipbuilder
+shipbuilding
+shipcraft
+shipentine
+shipful
+shipkeeper
+shiplap
+shipless
+shiplessly
+shiplet
+shipload
+shipman
+shipmanship
+shipmast
+shipmaster
+shipmate
+shipmatish
+shipment
+shipowner
+shipowning
+shippable
+shippage
+shipped
+shipper
+shipping
+shipplane
+shippo
+shippon
+shippy
+shipshape
+shipshapely
+shipside
+shipsmith
+shipward
+shipwards
+shipway
+shipwork
+shipworm
+shipwreck
+shipwrecky
+shipwright
+shipwrightery
+shipwrightry
+shipyard
+shirakashi
+shirallee
+Shiraz
+shire
+shirehouse
+shireman
+shirewick
+shirk
+shirker
+shirky
+shirl
+shirlcock
+Shirley
+shirpit
+shirr
+shirring
+shirt
+shirtband
+shirtiness
+shirting
+shirtless
+shirtlessness
+shirtlike
+shirtmaker
+shirtmaking
+shirtman
+shirttail
+shirtwaist
+shirty
+Shirvan
+shish
+shisham
+shisn
+shita
+shitepoke
+shither
+shittah
+shittim
+shittimwood
+shiv
+Shivaism
+Shivaist
+Shivaistic
+Shivaite
+shivaree
+shive
+shiver
+shivereens
+shiverer
+shivering
+shiveringly
+shiverproof
+shiversome
+shiverweed
+shivery
+shivey
+shivoo
+shivy
+shivzoku
+Shkupetar
+Shlu
+Shluh
+Sho
+sho
+Shoa
+shoad
+shoader
+shoal
+shoalbrain
+shoaler
+shoaliness
+shoalness
+shoalwise
+shoaly
+shoat
+shock
+shockability
+shockable
+shockedness
+shocker
+shockheaded
+shocking
+shockingly
+shockingness
+shocklike
+shockproof
+shod
+shodden
+shoddily
+shoddiness
+shoddy
+shoddydom
+shoddyism
+shoddyite
+shoddylike
+shoddyward
+shoddywards
+shode
+shoder
+shoe
+shoebill
+shoebinder
+shoebindery
+shoebinding
+shoebird
+shoeblack
+shoeboy
+shoebrush
+shoecraft
+shoeflower
+shoehorn
+shoeing
+shoeingsmith
+shoelace
+shoeless
+shoemaker
+shoemaking
+shoeman
+shoepack
+shoer
+shoescraper
+shoeshine
+shoeshop
+shoesmith
+shoestring
+shoewoman
+shoful
+shog
+shogaol
+shoggie
+shoggle
+shoggly
+shogi
+shogun
+shogunal
+shogunate
+shohet
+shoji
+Shojo
+shola
+shole
+Shona
+shone
+shoneen
+shonkinite
+shoo
+shood
+shoofa
+shoofly
+shooi
+shook
+shool
+shooldarry
+shooler
+shoop
+shoopiltie
+shoor
+shoot
+shootable
+shootboard
+shootee
+shooter
+shoother
+shooting
+shootist
+shootman
+shop
+shopboard
+shopbook
+shopboy
+shopbreaker
+shopbreaking
+shopfolk
+shopful
+shopgirl
+shopgirlish
+shophar
+shopkeeper
+shopkeeperess
+shopkeeperish
+shopkeeperism
+shopkeepery
+shopkeeping
+shopland
+shoplet
+shoplifter
+shoplifting
+shoplike
+shopmaid
+shopman
+shopmark
+shopmate
+shopocracy
+shopocrat
+shoppe
+shopper
+shopping
+shoppish
+shoppishness
+shoppy
+shopster
+shoptalk
+shopwalker
+shopwear
+shopwife
+shopwindow
+shopwoman
+shopwork
+shopworker
+shopworn
+shoq
+Shor
+shor
+shoran
+shore
+Shorea
+shoreberry
+shorebush
+shored
+shoregoing
+shoreland
+shoreless
+shoreman
+shorer
+shoreside
+shoresman
+shoreward
+shorewards
+shoreweed
+shoreyer
+shoring
+shorling
+shorn
+short
+shortage
+shortbread
+shortcake
+shortchange
+shortchanger
+shortclothes
+shortcoat
+shortcomer
+shortcoming
+shorten
+shortener
+shortening
+shorter
+shortfall
+shorthand
+shorthanded
+shorthandedness
+shorthander
+shorthead
+shorthorn
+Shortia
+shortish
+shortly
+shortness
+shorts
+shortschat
+shortsighted
+shortsightedly
+shortsightedness
+shortsome
+shortstaff
+shortstop
+shorttail
+Shortzy
+Shoshonean
+shoshonite
+shot
+shotbush
+shote
+shotgun
+shotless
+shotlike
+shotmaker
+shotman
+shotproof
+shotsman
+shotstar
+shott
+shotted
+shotten
+shotter
+shotty
+Shotweld
+shou
+should
+shoulder
+shouldered
+shoulderer
+shoulderette
+shouldering
+shouldna
+shouldnt
+shoupeltin
+shout
+shouter
+shouting
+shoutingly
+shoval
+shove
+shovegroat
+shovel
+shovelard
+shovelbill
+shovelboard
+shovelfish
+shovelful
+shovelhead
+shovelmaker
+shovelman
+shovelnose
+shovelweed
+shover
+show
+showable
+showance
+showbird
+showboard
+showboat
+showboater
+showboating
+showcase
+showdom
+showdown
+shower
+showerer
+showerful
+showeriness
+showerless
+showerlike
+showerproof
+showery
+showily
+showiness
+showing
+showish
+showless
+showman
+showmanism
+showmanry
+showmanship
+shown
+showpiece
+showroom
+showup
+showworthy
+showy
+showyard
+shoya
+shrab
+shraddha
+shradh
+shraf
+shrag
+shram
+shrank
+shrap
+shrapnel
+shrave
+shravey
+shreadhead
+shred
+shredcock
+shredder
+shredding
+shreddy
+shredless
+shredlike
+Shree
+shree
+shreeve
+shrend
+shrew
+shrewd
+shrewdish
+shrewdly
+shrewdness
+shrewdom
+shrewdy
+shrewish
+shrewishly
+shrewishness
+shrewlike
+shrewly
+shrewmouse
+shrewstruck
+shriek
+shrieker
+shriekery
+shriekily
+shriekiness
+shriekingly
+shriekproof
+shrieky
+shrieval
+shrievalty
+shrift
+shrike
+shrill
+shrilling
+shrillish
+shrillness
+shrilly
+shrimp
+shrimper
+shrimpfish
+shrimpi
+shrimpish
+shrimpishness
+shrimplike
+shrimpy
+shrinal
+Shrine
+shrine
+shrineless
+shrinelet
+shrinelike
+Shriner
+shrink
+shrinkable
+shrinkage
+shrinkageproof
+shrinker
+shrinkhead
+shrinking
+shrinkingly
+shrinkproof
+shrinky
+shrip
+shrite
+shrive
+shrivel
+shriven
+shriver
+shriving
+shroff
+shrog
+Shropshire
+shroud
+shrouded
+shrouding
+shroudless
+shroudlike
+shroudy
+Shrove
+shrove
+shrover
+Shrovetide
+shrub
+shrubbed
+shrubbery
+shrubbiness
+shrubbish
+shrubby
+shrubland
+shrubless
+shrublet
+shrublike
+shrubwood
+shruff
+shrug
+shruggingly
+shrunk
+shrunken
+shrups
+Shtokavski
+shtreimel
+Shu
+shuba
+shubunkin
+shuck
+shucker
+shucking
+shuckins
+shuckpen
+shucks
+shudder
+shudderful
+shudderiness
+shudderingly
+shuddersome
+shuddery
+shuff
+shuffle
+shuffleboard
+shufflecap
+shuffler
+shufflewing
+shuffling
+shufflingly
+shug
+Shuhali
+Shukria
+Shukulumbwe
+shul
+Shulamite
+shuler
+shulwaurs
+shumac
+shun
+Shunammite
+shune
+shunless
+shunnable
+shunner
+shunt
+shunter
+shunting
+shure
+shurf
+shush
+shusher
+Shuswap
+shut
+shutdown
+shutness
+shutoff
+Shutoku
+shutout
+shuttance
+shutten
+shutter
+shuttering
+shutterless
+shutterwise
+shutting
+shuttle
+shuttlecock
+shuttleheaded
+shuttlelike
+shuttlewise
+Shuvra
+shwanpan
+shy
+Shyam
+shydepoke
+shyer
+shyish
+Shylock
+Shylockism
+shyly
+shyness
+shyster
+si
+Sia
+siak
+sial
+sialaden
+sialadenitis
+sialadenoncus
+sialagogic
+sialagogue
+sialagoguic
+sialemesis
+Sialia
+sialic
+sialid
+Sialidae
+sialidan
+Sialis
+sialoangitis
+sialogenous
+sialoid
+sialolith
+sialolithiasis
+sialology
+sialorrhea
+sialoschesis
+sialosemeiology
+sialosis
+sialostenosis
+sialosyrinx
+sialozemia
+Siam
+siamang
+Siamese
+sib
+Sibbaldus
+sibbed
+sibbens
+sibber
+sibboleth
+sibby
+Siberian
+Siberic
+siberite
+sibilance
+sibilancy
+sibilant
+sibilantly
+sibilate
+sibilatingly
+sibilator
+sibilatory
+sibilous
+sibilus
+Sibiric
+sibling
+sibness
+sibrede
+sibship
+sibyl
+sibylesque
+sibylic
+sibylism
+sibylla
+sibylline
+sibyllist
+sic
+Sicambri
+Sicambrian
+Sicana
+Sicani
+Sicanian
+sicarian
+sicarious
+sicarius
+sicca
+siccaneous
+siccant
+siccate
+siccation
+siccative
+siccimeter
+siccity
+sice
+Sicel
+Siceliot
+Sicilian
+sicilian
+siciliana
+Sicilianism
+sicilica
+sicilicum
+sicilienne
+sicinnian
+sick
+sickbed
+sicken
+sickener
+sickening
+sickeningly
+sicker
+sickerly
+sickerness
+sickhearted
+sickish
+sickishly
+sickishness
+sickle
+sicklebill
+sickled
+sicklelike
+sickleman
+sicklemia
+sicklemic
+sicklepod
+sickler
+sicklerite
+sickless
+sickleweed
+sicklewise
+sicklewort
+sicklied
+sicklily
+sickliness
+sickling
+sickly
+sickness
+sicknessproof
+sickroom
+sicsac
+sicula
+sicular
+Siculi
+Siculian
+Sicyonian
+Sicyonic
+Sicyos
+Sid
+Sida
+Sidalcea
+sidder
+Siddha
+Siddhanta
+Siddhartha
+Siddhi
+siddur
+side
+sideage
+sidearm
+sideboard
+sidebone
+sidebones
+sideburns
+sidecar
+sidecarist
+sidecheck
+sided
+sidedness
+sideflash
+sidehead
+sidehill
+sidekicker
+sidelang
+sideless
+sideline
+sideling
+sidelings
+sidelingwise
+sidelong
+sidenote
+sidepiece
+sider
+sideral
+sideration
+siderealize
+sidereally
+siderean
+siderin
+siderism
+siderite
+sideritic
+Sideritis
+siderognost
+siderographic
+siderographical
+siderographist
+siderography
+siderolite
+siderology
+sideromagnetic
+sideromancy
+sideromelane
+sideronatrite
+sideronym
+sideroscope
+siderose
+siderosis
+siderostat
+siderostatic
+siderotechny
+siderous
+Sideroxylon
+sidership
+siderurgical
+siderurgy
+sides
+sidesaddle
+sideshake
+sideslip
+sidesman
+sidesplitter
+sidesplitting
+sidesplittingly
+sidesway
+sideswipe
+sideswiper
+sidetrack
+sidewalk
+sideward
+sidewards
+sideway
+sideways
+sidewinder
+sidewipe
+sidewiper
+sidewise
+sidhe
+sidi
+siding
+sidle
+sidler
+sidling
+sidlingly
+Sidney
+Sidonian
+Sidrach
+sidth
+sidy
+sie
+siege
+siegeable
+siegecraft
+siegenite
+sieger
+siegework
+Siegfried
+Sieglingia
+Siegmund
+Siegurd
+Siena
+Sienese
+sienna
+sier
+siering
+sierozem
+Sierra
+sierra
+sierran
+siesta
+siestaland
+Sieva
+sieve
+sieveful
+sievelike
+siever
+Sieversia
+sievings
+sievy
+sifac
+sifaka
+Sifatite
+sife
+siffilate
+siffle
+sifflement
+sifflet
+sifflot
+sift
+siftage
+sifted
+sifter
+sifting
+sig
+Siganidae
+Siganus
+sigatoka
+Sigaultian
+sigger
+sigh
+sigher
+sighful
+sighfully
+sighing
+sighingly
+sighingness
+sighless
+sighlike
+sight
+sightable
+sighted
+sighten
+sightening
+sighter
+sightful
+sightfulness
+sighthole
+sighting
+sightless
+sightlessly
+sightlessness
+sightlily
+sightliness
+sightly
+sightproof
+sightworthiness
+sightworthy
+sighty
+sigil
+sigilative
+Sigillaria
+Sigillariaceae
+sigillariaceous
+sigillarian
+sigillarid
+sigillarioid
+sigillarist
+sigillaroid
+sigillary
+sigillate
+sigillated
+sigillation
+sigillistic
+sigillographer
+sigillographical
+sigillography
+sigillum
+sigla
+siglarian
+siglos
+Sigma
+sigma
+sigmaspire
+sigmate
+sigmatic
+sigmation
+sigmatism
+sigmodont
+Sigmodontes
+sigmoid
+sigmoidal
+sigmoidally
+sigmoidectomy
+sigmoiditis
+sigmoidopexy
+sigmoidoproctostomy
+sigmoidorectostomy
+sigmoidoscope
+sigmoidoscopy
+sigmoidostomy
+Sigmund
+sign
+signable
+signal
+signalee
+signaler
+signalese
+signaletic
+signaletics
+signalism
+signalist
+signality
+signalize
+signally
+signalman
+signalment
+signary
+signatary
+signate
+signation
+signator
+signatory
+signatural
+signature
+signatureless
+signaturist
+signboard
+signee
+signer
+signet
+signetwise
+signifer
+signifiable
+significal
+significance
+significancy
+significant
+significantly
+significantness
+significate
+signification
+significatist
+significative
+significatively
+significativeness
+significator
+significatory
+significatrix
+significature
+significavit
+significian
+significs
+signifier
+signify
+signior
+signiorship
+signist
+signless
+signlike
+signman
+signorial
+signorship
+signory
+signpost
+signum
+signwriter
+Sigurd
+Sihasapa
+Sika
+sika
+sikar
+sikatch
+sike
+sikerly
+sikerness
+siket
+Sikh
+sikhara
+Sikhism
+sikhra
+Sikinnis
+Sikkimese
+Siksika
+sil
+silage
+silaginoid
+silane
+Silas
+silbergroschen
+silcrete
+sile
+silen
+Silenaceae
+silenaceous
+Silenales
+silence
+silenced
+silencer
+silency
+Silene
+sileni
+silenic
+silent
+silential
+silentiary
+silentious
+silentish
+silently
+silentness
+silenus
+silesia
+Silesian
+Siletz
+silex
+silexite
+silhouette
+silhouettist
+silhouettograph
+silica
+silicam
+silicane
+silicate
+silication
+silicatization
+Silicea
+silicean
+siliceocalcareous
+siliceofelspathic
+siliceofluoric
+siliceous
+silicic
+silicicalcareous
+silicicolous
+silicide
+silicidize
+siliciferous
+silicification
+silicifluoric
+silicifluoride
+silicify
+siliciophite
+silicious
+Silicispongiae
+silicium
+siliciuretted
+silicize
+silicle
+silico
+silicoacetic
+silicoalkaline
+silicoaluminate
+silicoarsenide
+silicocalcareous
+silicochloroform
+silicocyanide
+silicoethane
+silicoferruginous
+Silicoflagellata
+Silicoflagellatae
+silicoflagellate
+Silicoflagellidae
+silicofluoric
+silicofluoride
+silicohydrocarbon
+Silicoidea
+silicomagnesian
+silicomanganese
+silicomethane
+silicon
+silicone
+siliconize
+silicononane
+silicopropane
+silicosis
+Silicospongiae
+silicotalcose
+silicotic
+silicotitanate
+silicotungstate
+silicotungstic
+silicula
+silicular
+silicule
+siliculose
+siliculous
+silicyl
+Silipan
+siliqua
+siliquaceous
+siliquae
+Siliquaria
+Siliquariidae
+silique
+siliquiferous
+siliquiform
+siliquose
+siliquous
+silk
+silkalene
+silkaline
+silked
+silken
+silker
+silkflower
+silkgrower
+silkie
+silkily
+silkiness
+silklike
+silkman
+silkness
+silksman
+silktail
+silkweed
+silkwoman
+silkwood
+silkwork
+silkworks
+silkworm
+silky
+sill
+sillabub
+silladar
+Sillaginidae
+Sillago
+sillandar
+sillar
+siller
+Sillery
+sillibouk
+sillikin
+sillily
+sillimanite
+silliness
+sillock
+sillograph
+sillographer
+sillographist
+sillometer
+sillon
+silly
+sillyhood
+sillyhow
+sillyish
+sillyism
+sillyton
+silo
+siloist
+Silpha
+silphid
+Silphidae
+silphium
+silt
+siltage
+siltation
+silting
+siltlike
+silty
+silundum
+Silures
+Silurian
+Siluric
+silurid
+Siluridae
+Siluridan
+siluroid
+Siluroidei
+Silurus
+silva
+silvan
+silvanity
+silvanry
+Silvanus
+silvendy
+silver
+silverback
+silverbeater
+silverbelly
+silverberry
+silverbill
+silverboom
+silverbush
+silvered
+silverer
+silvereye
+silverfin
+silverfish
+silverhead
+silverily
+silveriness
+silvering
+silverish
+silverite
+silverize
+silverizer
+silverleaf
+silverless
+silverlike
+silverling
+silverly
+silvern
+silverness
+silverpoint
+silverrod
+silverside
+silversides
+silverskin
+silversmith
+silversmithing
+silverspot
+silvertail
+silvertip
+silvertop
+silvervine
+silverware
+silverweed
+silverwing
+silverwood
+silverwork
+silverworker
+silvery
+Silvester
+Silvia
+silvical
+silvicolous
+silvics
+silvicultural
+silviculturally
+silviculture
+silviculturist
+Silvius
+Silybum
+silyl
+Sim
+sima
+Simaba
+simal
+simar
+Simarouba
+Simaroubaceae
+simaroubaceous
+simball
+simbil
+simblin
+simblot
+Simblum
+sime
+Simeon
+Simeonism
+Simeonite
+Simia
+simiad
+simial
+simian
+simianity
+simiesque
+Simiidae
+Simiinae
+similar
+similarity
+similarize
+similarly
+similative
+simile
+similimum
+similiter
+similitive
+similitude
+similitudinize
+simility
+similize
+similor
+simioid
+simious
+simiousness
+simity
+simkin
+simlin
+simling
+simmer
+simmeringly
+simmon
+simnel
+simnelwise
+simoleon
+Simon
+simoniac
+simoniacal
+simoniacally
+Simonian
+Simonianism
+simonious
+simonism
+Simonist
+simonist
+simony
+simool
+simoom
+simoon
+Simosaurus
+simous
+simp
+simpai
+simper
+simperer
+simperingly
+simple
+simplehearted
+simpleheartedly
+simpleheartedness
+simpleness
+simpler
+simpleton
+simpletonian
+simpletonianism
+simpletonic
+simpletonish
+simpletonism
+simplex
+simplexed
+simplexity
+simplicident
+Simplicidentata
+simplicidentate
+simplicist
+simplicitarian
+simplicity
+simplicize
+simplification
+simplificative
+simplificator
+simplified
+simplifiedly
+simplifier
+simplify
+simplism
+simplist
+simplistic
+simply
+simsim
+simson
+simulacra
+simulacral
+simulacre
+simulacrize
+simulacrum
+simulance
+simulant
+simular
+simulate
+simulation
+simulative
+simulatively
+simulator
+simulatory
+simulcast
+simuler
+simuliid
+Simuliidae
+simulioid
+Simulium
+simultaneity
+simultaneous
+simultaneously
+simultaneousness
+sin
+sina
+Sinae
+Sinaean
+Sinaic
+sinaite
+Sinaitic
+sinal
+sinalbin
+Sinaloa
+sinamay
+sinamine
+sinapate
+sinapic
+sinapine
+sinapinic
+Sinapis
+sinapis
+sinapism
+sinapize
+sinapoline
+sinarchism
+sinarchist
+sinarquism
+sinarquist
+sinarquista
+sinawa
+sincaline
+since
+sincere
+sincerely
+sincereness
+sincerity
+sincipital
+sinciput
+sind
+sinder
+Sindhi
+sindle
+sindoc
+sindon
+sindry
+sine
+sinecural
+sinecure
+sinecureship
+sinecurism
+sinecurist
+Sinesian
+sinew
+sinewed
+sinewiness
+sinewless
+sinewous
+sinewy
+sinfonia
+sinfonie
+sinfonietta
+sinful
+sinfully
+sinfulness
+sing
+singability
+singable
+singableness
+singally
+singarip
+singe
+singed
+singeing
+singeingly
+singer
+singey
+Singfo
+singh
+Singhalese
+singillatim
+singing
+singingly
+singkamas
+single
+singlebar
+singled
+singlehanded
+singlehandedly
+singlehandedness
+singlehearted
+singleheartedly
+singleheartedness
+singlehood
+singleness
+singler
+singles
+singlestick
+singlesticker
+singlet
+singleton
+singletree
+singlings
+singly
+Singpho
+Singsing
+singsong
+singsongy
+Singspiel
+singspiel
+singstress
+singular
+singularism
+singularist
+singularity
+singularization
+singularize
+singularly
+singularness
+singult
+singultous
+singultus
+sinh
+Sinhalese
+Sinian
+Sinic
+Sinicism
+Sinicization
+Sinicize
+Sinico
+Sinification
+Sinify
+sinigrin
+sinigrinase
+sinigrosid
+sinigroside
+Sinisian
+Sinism
+sinister
+sinisterly
+sinisterness
+sinisterwise
+sinistrad
+sinistral
+sinistrality
+sinistrally
+sinistration
+sinistrin
+sinistrocerebral
+sinistrocular
+sinistrodextral
+sinistrogyrate
+sinistrogyration
+sinistrogyric
+sinistromanual
+sinistrorsal
+sinistrorsally
+sinistrorse
+sinistrous
+sinistrously
+sinistruous
+Sinite
+Sinitic
+sink
+sinkable
+sinkage
+sinker
+sinkerless
+sinkfield
+sinkhead
+sinkhole
+sinking
+Sinkiuse
+sinkless
+sinklike
+sinkroom
+sinkstone
+sinky
+sinless
+sinlessly
+sinlessness
+sinlike
+sinnable
+sinnableness
+sinnen
+sinner
+sinneress
+sinnership
+sinnet
+Sinningia
+sinningly
+sinningness
+sinoatrial
+sinoauricular
+Sinogram
+sinoidal
+Sinolog
+Sinologer
+Sinological
+Sinologist
+Sinologue
+Sinology
+sinomenine
+Sinonism
+Sinophile
+Sinophilism
+sinopia
+Sinopic
+sinopite
+sinople
+sinproof
+Sinsiga
+sinsion
+sinsring
+sinsyne
+sinter
+Sinto
+sintoc
+Sintoism
+Sintoist
+Sintsink
+Sintu
+sinuate
+sinuated
+sinuatedentate
+sinuately
+sinuation
+sinuatocontorted
+sinuatodentate
+sinuatodentated
+sinuatopinnatifid
+sinuatoserrated
+sinuatoundulate
+sinuatrial
+sinuauricular
+sinuitis
+sinuose
+sinuosely
+sinuosity
+sinuous
+sinuously
+sinuousness
+Sinupallia
+sinupallial
+Sinupallialia
+Sinupalliata
+sinupalliate
+sinus
+sinusal
+sinusitis
+sinuslike
+sinusoid
+sinusoidal
+sinusoidally
+sinuventricular
+sinward
+siol
+Sion
+sion
+Sionite
+Siouan
+Sioux
+sip
+sipage
+sipe
+siper
+siphoid
+siphon
+siphonaceous
+siphonage
+siphonal
+Siphonales
+Siphonaptera
+siphonapterous
+Siphonaria
+siphonariid
+Siphonariidae
+Siphonata
+siphonate
+Siphoneae
+siphoneous
+siphonet
+siphonia
+siphonial
+Siphoniata
+siphonic
+Siphonifera
+siphoniferous
+siphoniform
+siphonium
+siphonless
+siphonlike
+Siphonobranchiata
+siphonobranchiate
+Siphonocladales
+Siphonocladiales
+siphonogam
+Siphonogama
+siphonogamic
+siphonogamous
+siphonogamy
+siphonoglyph
+siphonoglyphe
+siphonognathid
+Siphonognathidae
+siphonognathous
+Siphonognathus
+Siphonophora
+siphonophoran
+siphonophore
+siphonophorous
+siphonoplax
+siphonopore
+siphonorhinal
+siphonorhine
+siphonosome
+siphonostele
+siphonostelic
+siphonostely
+Siphonostoma
+Siphonostomata
+siphonostomatous
+siphonostome
+siphonostomous
+siphonozooid
+siphonula
+siphorhinal
+siphorhinian
+siphosome
+siphuncle
+siphuncled
+siphuncular
+Siphunculata
+siphunculate
+siphunculated
+Sipibo
+sipid
+sipidity
+Siping
+siping
+sipling
+sipper
+sippet
+sippingly
+sippio
+Sipunculacea
+sipunculacean
+sipunculid
+Sipunculida
+sipunculoid
+Sipunculoidea
+Sipunculus
+sipylite
+Sir
+sir
+sircar
+sirdar
+sirdarship
+sire
+Siredon
+sireless
+siren
+sirene
+Sirenia
+sirenian
+sirenic
+sirenical
+sirenically
+Sirenidae
+sirening
+sirenize
+sirenlike
+sirenoid
+Sirenoidea
+Sirenoidei
+sireny
+sireship
+siress
+sirgang
+Sirian
+sirian
+Sirianian
+siriasis
+siricid
+Siricidae
+Siricoidea
+sirih
+siriometer
+Sirione
+siris
+Sirius
+sirkeer
+sirki
+sirky
+sirloin
+sirloiny
+Sirmian
+Sirmuellera
+siroc
+sirocco
+siroccoish
+siroccoishly
+sirpea
+sirple
+sirpoon
+sirrah
+sirree
+sirship
+siruaballi
+siruelas
+sirup
+siruped
+siruper
+sirupy
+Siryan
+Sis
+sis
+sisal
+siscowet
+sise
+sisel
+siserara
+siserary
+siserskite
+sish
+sisham
+sisi
+siskin
+Sisley
+sismotherapy
+siss
+Sisseton
+sissification
+sissify
+sissiness
+sissoo
+Sissu
+sissy
+sissyish
+sissyism
+sist
+Sistani
+sister
+sisterhood
+sisterin
+sistering
+sisterize
+sisterless
+sisterlike
+sisterliness
+sisterly
+sistern
+Sistine
+sistle
+sistomensin
+sistrum
+Sistrurus
+Sisymbrium
+Sisyphean
+Sisyphian
+Sisyphides
+Sisyphism
+Sisyphist
+Sisyphus
+Sisyrinchium
+sisyrinchium
+sit
+Sita
+sitao
+sitar
+sitatunga
+sitch
+site
+sitfast
+sith
+sithcund
+sithe
+sithement
+sithence
+sithens
+sitient
+sitio
+sitiology
+sitiomania
+sitiophobia
+Sitka
+Sitkan
+sitology
+sitomania
+Sitophilus
+sitophobia
+sitophobic
+sitosterin
+sitosterol
+sitotoxism
+Sitta
+sittee
+sitten
+sitter
+Sittidae
+Sittinae
+sittine
+sitting
+sittringy
+situal
+situate
+situated
+situation
+situational
+situla
+situlae
+situs
+Sium
+Siusi
+Siuslaw
+Siva
+siva
+Sivaism
+Sivaist
+Sivaistic
+Sivaite
+Sivan
+Sivapithecus
+sivathere
+Sivatheriidae
+Sivatheriinae
+sivatherioid
+Sivatherium
+siver
+sivvens
+Siwan
+Siwash
+siwash
+six
+sixain
+sixer
+sixfoil
+sixfold
+sixhaend
+sixhynde
+sixpence
+sixpenny
+sixpennyworth
+sixscore
+sixsome
+sixte
+sixteen
+sixteener
+sixteenfold
+sixteenmo
+sixteenth
+sixteenthly
+sixth
+sixthet
+sixthly
+sixtieth
+Sixtowns
+Sixtus
+sixty
+sixtyfold
+sixtypenny
+sizable
+sizableness
+sizably
+sizal
+sizar
+sizarship
+size
+sizeable
+sizeableness
+sized
+sizeman
+sizer
+sizes
+siziness
+sizing
+sizy
+sizygia
+sizygium
+sizz
+sizzard
+sizzing
+sizzle
+sizzling
+sizzlingly
+Sjaak
+sjambok
+Sjouke
+skaddle
+skaff
+skaffie
+skag
+skaillie
+skainsmate
+skair
+skaitbird
+skal
+skalawag
+skaldship
+skance
+Skanda
+skandhas
+skart
+skasely
+Skat
+skat
+skate
+skateable
+skater
+skatikas
+skatiku
+skating
+skatist
+skatole
+skatosine
+skatoxyl
+skaw
+skean
+skeanockle
+skedaddle
+skedaddler
+skedge
+skedgewith
+skedlock
+skee
+skeed
+skeeg
+skeel
+skeeling
+skeely
+skeen
+skeenyie
+skeer
+skeered
+skeery
+skeesicks
+skeet
+Skeeter
+skeeter
+skeezix
+Skef
+skeg
+skegger
+skeif
+skeigh
+skeily
+skein
+skeiner
+skeipp
+skel
+skelder
+skelderdrake
+skeldrake
+skeletal
+skeletin
+skeletogenous
+skeletogeny
+skeletomuscular
+skeleton
+skeletonian
+skeletonic
+skeletonization
+skeletonize
+skeletonizer
+skeletonless
+skeletonweed
+skeletony
+skelf
+skelgoose
+skelic
+skell
+skellat
+skeller
+skelloch
+skellum
+skelly
+skelp
+skelper
+skelpin
+skelping
+skelter
+Skeltonian
+Skeltonic
+Skeltonical
+Skeltonics
+skemmel
+skemp
+sken
+skene
+skeo
+skeough
+skep
+skepful
+skeppist
+skeppund
+skeptic
+skeptical
+skeptically
+skepticalness
+skepticism
+skepticize
+sker
+skere
+skerret
+skerrick
+skerry
+sketch
+sketchability
+sketchable
+sketchbook
+sketchee
+sketcher
+sketchily
+sketchiness
+sketching
+sketchingly
+sketchist
+sketchlike
+sketchy
+skete
+sketiotai
+skeuomorph
+skeuomorphic
+skevish
+skew
+skewback
+skewbacked
+skewbald
+skewed
+skewer
+skewerer
+skewerwood
+skewings
+skewl
+skewly
+skewness
+skewwhiff
+skewwise
+skewy
+skey
+skeyting
+ski
+skiagram
+skiagraph
+skiagrapher
+skiagraphic
+skiagraphical
+skiagraphically
+skiagraphy
+skiameter
+skiametry
+skiapod
+skiapodous
+skiascope
+skiascopy
+skibby
+skibslast
+skice
+skid
+skidded
+skidder
+skidding
+skiddingly
+skiddoo
+skiddy
+Skidi
+skidpan
+skidproof
+skidway
+skied
+skieppe
+skiepper
+skier
+skies
+skiff
+skiffless
+skiffling
+skift
+skiing
+skijore
+skijorer
+skijoring
+skil
+skilder
+skildfel
+skilfish
+skill
+skillagalee
+skilled
+skillenton
+skillessness
+skillet
+skillful
+skillfully
+skillfulness
+skilligalee
+skilling
+skillion
+skilly
+skilpot
+skilts
+skim
+skimback
+skime
+skimmed
+skimmer
+skimmerton
+Skimmia
+skimming
+skimmingly
+skimmington
+skimmity
+skimp
+skimpily
+skimpiness
+skimpingly
+skimpy
+skin
+skinbound
+skinch
+skinflint
+skinflintily
+skinflintiness
+skinflinty
+skinful
+skink
+skinker
+skinking
+skinkle
+skinless
+skinlike
+skinned
+skinner
+skinnery
+skinniness
+skinning
+skinny
+skintight
+skinworm
+skiogram
+skiograph
+skiophyte
+Skip
+skip
+skipbrain
+Skipetar
+skipjack
+skipjackly
+skipkennel
+skipman
+skippable
+skippel
+skipper
+skippered
+skippership
+skippery
+skippet
+skipping
+skippingly
+skipple
+skippund
+skippy
+skiptail
+skirl
+skirlcock
+skirling
+skirmish
+skirmisher
+skirmishing
+skirmishingly
+skirp
+skirr
+skirreh
+skirret
+skirt
+skirtboard
+skirted
+skirter
+skirting
+skirtingly
+skirtless
+skirtlike
+skirty
+skirwhit
+skirwort
+skit
+skite
+skiter
+skither
+Skitswish
+Skittaget
+Skittagetan
+skitter
+skittish
+skittishly
+skittishness
+skittle
+skittled
+skittler
+skittles
+skitty
+skittyboot
+skiv
+skive
+skiver
+skiverwood
+skiving
+skivvies
+sklate
+sklater
+sklent
+skleropelite
+sklinter
+skoal
+Skodaic
+skogbolite
+Skoinolon
+skokiaan
+Skokomish
+skomerite
+skoo
+skookum
+Skopets
+skoptsy
+skout
+skraeling
+skraigh
+skrike
+skrimshander
+skrupul
+skua
+skulduggery
+skulk
+skulker
+skulking
+skulkingly
+skull
+skullbanker
+skullcap
+skulled
+skullery
+skullfish
+skullful
+skully
+skulp
+skun
+skunk
+skunkbill
+skunkbush
+skunkdom
+skunkery
+skunkhead
+skunkish
+skunklet
+skunktop
+skunkweed
+skunky
+Skupshtina
+skuse
+skutterudite
+sky
+skybal
+skycraft
+Skye
+skyey
+skyful
+skyish
+skylark
+skylarker
+skyless
+skylight
+skylike
+skylook
+skyman
+skyphoi
+skyphos
+skyplast
+skyre
+skyrgaliard
+skyrocket
+skyrockety
+skysail
+skyscape
+skyscraper
+skyscraping
+skyshine
+skyugle
+skyward
+skywards
+skyway
+skywrite
+skywriter
+skywriting
+sla
+slab
+slabbed
+slabber
+slabberer
+slabbery
+slabbiness
+slabbing
+slabby
+slabman
+slabness
+slabstone
+slack
+slackage
+slacked
+slacken
+slackener
+slacker
+slackerism
+slacking
+slackingly
+slackly
+slackness
+slad
+sladang
+slade
+slae
+slag
+slaggability
+slaggable
+slagger
+slagging
+slaggy
+slagless
+slaglessness
+slagman
+slain
+slainte
+slaister
+slaistery
+slait
+slake
+slakeable
+slakeless
+slaker
+slaking
+slaky
+slam
+slammakin
+slammerkin
+slammock
+slammocking
+slammocky
+slamp
+slampamp
+slampant
+slander
+slanderer
+slanderful
+slanderfully
+slandering
+slanderingly
+slanderous
+slanderously
+slanderousness
+slanderproof
+slane
+slang
+slangily
+slanginess
+slangish
+slangishly
+slangism
+slangkop
+slangous
+slangster
+slanguage
+slangular
+slangy
+slank
+slant
+slantindicular
+slantindicularly
+slanting
+slantingly
+slantingways
+slantly
+slantways
+slantwise
+slap
+slapdash
+slapdashery
+slape
+slaphappy
+slapjack
+slapper
+slapping
+slapstick
+slapsticky
+slare
+slart
+slarth
+Slartibartfast
+slash
+slashed
+slasher
+slashing
+slashingly
+slashy
+slat
+slatch
+slate
+slateful
+slatelike
+slatemaker
+slatemaking
+slater
+slateworks
+slateyard
+slath
+slather
+slatify
+slatiness
+slating
+slatish
+slatted
+slatter
+slattern
+slatternish
+slatternliness
+slatternly
+slatternness
+slattery
+slatting
+slaty
+slaughter
+slaughterer
+slaughterhouse
+slaughteringly
+slaughterman
+slaughterous
+slaughterously
+slaughteryard
+slaum
+Slav
+Slavdom
+Slave
+slave
+slaveborn
+slaved
+slaveholder
+slaveholding
+slaveland
+slaveless
+slavelet
+slavelike
+slaveling
+slavemonger
+slaveowner
+slaveownership
+slavepen
+slaver
+slaverer
+slavering
+slaveringly
+slavery
+Slavey
+slavey
+Slavi
+Slavian
+Slavic
+Slavicism
+Slavicize
+Slavification
+Slavify
+slavikite
+slaving
+Slavish
+slavish
+slavishly
+slavishness
+Slavism
+Slavist
+Slavistic
+Slavization
+Slavize
+slavocracy
+slavocrat
+slavocratic
+Slavonian
+Slavonianize
+Slavonic
+Slavonically
+Slavonicize
+Slavonish
+Slavonism
+Slavonization
+Slavonize
+Slavophile
+Slavophilism
+Slavophobe
+Slavophobist
+slaw
+slay
+slayable
+slayer
+slaying
+sleathy
+sleave
+sleaved
+sleaziness
+sleazy
+Sleb
+sleck
+sled
+sledded
+sledder
+sledding
+sledful
+sledge
+sledgeless
+sledgemeter
+sledger
+sledging
+sledlike
+slee
+sleech
+sleechy
+sleek
+sleeken
+sleeker
+sleeking
+sleekit
+sleekly
+sleekness
+sleeky
+sleep
+sleeper
+sleepered
+sleepful
+sleepfulness
+sleepify
+sleepily
+sleepiness
+sleeping
+sleepingly
+sleepland
+sleepless
+sleeplessly
+sleeplessness
+sleeplike
+sleepmarken
+sleepproof
+sleepry
+sleepwaker
+sleepwaking
+sleepwalk
+sleepwalker
+sleepwalking
+sleepward
+sleepwort
+sleepy
+sleepyhead
+sleer
+sleet
+sleetiness
+sleeting
+sleetproof
+sleety
+sleeve
+sleeveband
+sleeveboard
+sleeved
+sleeveen
+sleevefish
+sleeveful
+sleeveless
+sleevelessness
+sleevelet
+sleevelike
+sleever
+sleigh
+sleigher
+sleighing
+sleight
+sleightful
+sleighty
+slendang
+slender
+slenderish
+slenderize
+slenderly
+slenderness
+slent
+slepez
+slept
+slete
+sleuth
+sleuthdog
+sleuthful
+sleuthhound
+sleuthlike
+slew
+slewed
+slewer
+slewing
+sley
+sleyer
+slice
+sliceable
+sliced
+slicer
+slich
+slicht
+slicing
+slicingly
+slick
+slicken
+slickens
+slickenside
+slicker
+slickered
+slickery
+slicking
+slickly
+slickness
+slid
+slidable
+slidableness
+slidably
+slidage
+slidden
+slidder
+sliddery
+slide
+slideable
+slideableness
+slideably
+slided
+slidehead
+slideman
+slideproof
+slider
+slideway
+sliding
+slidingly
+slidingness
+slidometer
+slifter
+slight
+slighted
+slighter
+slightily
+slightiness
+slighting
+slightingly
+slightish
+slightly
+slightness
+slighty
+slim
+slime
+slimeman
+slimer
+slimily
+sliminess
+slimish
+slimishness
+slimly
+slimmish
+slimness
+slimpsy
+slimsy
+slimy
+sline
+sling
+slingball
+slinge
+slinger
+slinging
+slingshot
+slingsman
+slingstone
+slink
+slinker
+slinkily
+slinkiness
+slinking
+slinkingly
+slinkskin
+slinkweed
+slinky
+slip
+slipback
+slipband
+slipboard
+slipbody
+slipcase
+slipcoach
+slipcoat
+slipe
+slipgibbet
+sliphorn
+sliphouse
+slipknot
+slipless
+slipman
+slipover
+slippage
+slipped
+slipper
+slippered
+slipperflower
+slipperily
+slipperiness
+slipperlike
+slipperweed
+slipperwort
+slippery
+slipperyback
+slipperyroot
+slippiness
+slipping
+slippingly
+slipproof
+slippy
+slipshod
+slipshoddiness
+slipshoddy
+slipshodness
+slipshoe
+slipslap
+slipslop
+slipsloppish
+slipsloppism
+slipsole
+slipstep
+slipstring
+sliptopped
+slipway
+slirt
+slish
+slit
+slitch
+slite
+slither
+slithering
+slitheroo
+slithers
+slithery
+slithy
+slitless
+slitlike
+slitshell
+slitted
+slitter
+slitting
+slitty
+slitwise
+slive
+sliver
+sliverer
+sliverlike
+sliverproof
+slivery
+sliving
+slivovitz
+sloan
+Sloanea
+slob
+slobber
+slobberchops
+slobberer
+slobbers
+slobbery
+slobby
+slock
+slocken
+slod
+slodder
+slodge
+slodger
+sloe
+sloeberry
+sloebush
+sloetree
+slog
+slogan
+sloganeer
+sloganize
+slogger
+slogging
+slogwood
+sloka
+sloke
+slommock
+slon
+slone
+slonk
+sloo
+sloom
+sloomy
+sloop
+sloopman
+sloosh
+slop
+slopdash
+slope
+sloped
+slopely
+slopeness
+sloper
+slopeways
+slopewise
+sloping
+slopingly
+slopingness
+slopmaker
+slopmaking
+sloppage
+slopped
+sloppery
+sloppily
+sloppiness
+slopping
+sloppy
+slops
+slopseller
+slopselling
+slopshop
+slopstone
+slopwork
+slopworker
+slopy
+slorp
+slosh
+slosher
+sloshily
+sloshiness
+sloshy
+slot
+slote
+sloted
+sloth
+slothful
+slothfully
+slothfulness
+slothound
+slotted
+slotter
+slottery
+slotting
+slotwise
+slouch
+sloucher
+slouchily
+slouchiness
+slouching
+slouchingly
+slouchy
+slough
+sloughiness
+sloughy
+slour
+sloush
+Slovak
+Slovakian
+Slovakish
+sloven
+Slovene
+Slovenian
+Slovenish
+slovenlike
+slovenliness
+slovenly
+slovenwood
+Slovintzi
+slow
+slowbellied
+slowbelly
+slowdown
+slowgoing
+slowheaded
+slowhearted
+slowheartedness
+slowhound
+slowish
+slowly
+slowmouthed
+slowpoke
+slowrie
+slows
+slowworm
+sloyd
+slub
+slubber
+slubberdegullion
+slubberer
+slubbering
+slubberingly
+slubberly
+slubbery
+slubbing
+slubby
+slud
+sludder
+sluddery
+sludge
+sludged
+sludger
+sludgy
+slue
+sluer
+slug
+slugabed
+sluggard
+sluggarding
+sluggardize
+sluggardliness
+sluggardly
+sluggardness
+sluggardry
+slugged
+slugger
+slugging
+sluggingly
+sluggish
+sluggishly
+sluggishness
+sluggy
+sluglike
+slugwood
+sluice
+sluicelike
+sluicer
+sluiceway
+sluicing
+sluicy
+sluig
+sluit
+slum
+slumber
+slumberer
+slumberful
+slumbering
+slumberingly
+slumberland
+slumberless
+slumberous
+slumberously
+slumberousness
+slumberproof
+slumbersome
+slumbery
+slumbrous
+slumdom
+slumgullion
+slumgum
+slumland
+slummage
+slummer
+slumminess
+slumming
+slummock
+slummocky
+slummy
+slump
+slumpproof
+slumproof
+slumpwork
+slumpy
+slumward
+slumwise
+slung
+slungbody
+slunge
+slunk
+slunken
+slur
+slurbow
+slurp
+slurry
+slush
+slusher
+slushily
+slushiness
+slushy
+slut
+slutch
+slutchy
+sluther
+sluthood
+slutter
+sluttery
+sluttikin
+sluttish
+sluttishly
+sluttishness
+slutty
+sly
+slyboots
+slyish
+slyly
+slyness
+slype
+sma
+smachrie
+smack
+smackee
+smacker
+smackful
+smacking
+smackingly
+smacksman
+smaik
+Smalcaldian
+Smalcaldic
+small
+smallage
+smallclothes
+smallcoal
+smallen
+smaller
+smallhearted
+smallholder
+smalling
+smallish
+smallmouth
+smallmouthed
+smallness
+smallpox
+smalls
+smallsword
+smalltime
+smallware
+smally
+smalm
+smalt
+smalter
+smaltine
+smaltite
+smalts
+smaragd
+smaragdine
+smaragdite
+smaragdus
+smarm
+smarmy
+smart
+smarten
+smarting
+smartingly
+smartish
+smartism
+smartless
+smartly
+smartness
+smartweed
+smarty
+smash
+smashable
+smashage
+smashboard
+smasher
+smashery
+smashing
+smashingly
+smashment
+smashup
+smatter
+smatterer
+smattering
+smatteringly
+smattery
+smaze
+smear
+smearcase
+smeared
+smearer
+smeariness
+smearless
+smeary
+smectic
+smectis
+smectite
+Smectymnuan
+Smectymnuus
+smeddum
+smee
+smeech
+smeek
+smeeky
+smeer
+smeeth
+smegma
+smell
+smellable
+smellage
+smelled
+smeller
+smellful
+smellfungi
+smellfungus
+smelliness
+smelling
+smellproof
+smellsome
+smelly
+smelt
+smelter
+smelterman
+smeltery
+smeltman
+smeth
+smethe
+smeuse
+smew
+smich
+smicker
+smicket
+smiddie
+smiddum
+smidge
+smidgen
+smifligate
+smifligation
+smiggins
+Smilacaceae
+smilacaceous
+Smilaceae
+smilaceous
+smilacin
+Smilacina
+Smilax
+smilax
+smile
+smileable
+smileage
+smileful
+smilefulness
+smileless
+smilelessly
+smilelessness
+smilemaker
+smilemaking
+smileproof
+smiler
+smilet
+smiling
+smilingly
+smilingness
+Smilodon
+smily
+Smintheus
+Sminthian
+sminthurid
+Sminthuridae
+Sminthurus
+smirch
+smircher
+smirchless
+smirchy
+smiris
+smirk
+smirker
+smirking
+smirkingly
+smirkish
+smirkle
+smirkly
+smirky
+smirtle
+smit
+smitch
+smite
+smiter
+smith
+smitham
+smithcraft
+smither
+smithereens
+smithery
+Smithian
+Smithianism
+smithing
+smithite
+Smithsonian
+smithsonite
+smithwork
+smithy
+smithydander
+smiting
+smitten
+smitting
+smock
+smocker
+smockface
+smocking
+smockless
+smocklike
+smog
+smokables
+smoke
+smokeable
+smokebox
+smokebush
+smoked
+smokefarthings
+smokehouse
+smokejack
+smokeless
+smokelessly
+smokelessness
+smokelike
+smokeproof
+smoker
+smokery
+smokestack
+smokestone
+smoketight
+smokewood
+smokily
+smokiness
+smoking
+smokish
+smoky
+smokyseeming
+smolder
+smolderingness
+smolt
+smooch
+smoochy
+smoodge
+smoodger
+smook
+smoorich
+Smoos
+smoot
+smooth
+smoothable
+smoothback
+smoothbore
+smoothbored
+smoothcoat
+smoothen
+smoother
+smoothification
+smoothify
+smoothing
+smoothingly
+smoothish
+smoothly
+smoothmouthed
+smoothness
+smoothpate
+smopple
+smore
+smorgasbord
+smote
+smother
+smotherable
+smotheration
+smothered
+smotherer
+smotheriness
+smothering
+smotheringly
+smothery
+smotter
+smouch
+smoucher
+smous
+smouse
+smouser
+smout
+smriti
+smudge
+smudged
+smudgedly
+smudgeless
+smudgeproof
+smudger
+smudgily
+smudginess
+smudgy
+smug
+smuggery
+smuggish
+smuggishly
+smuggishness
+smuggle
+smuggleable
+smuggler
+smugglery
+smuggling
+smugism
+smugly
+smugness
+smuisty
+smur
+smurr
+smurry
+smuse
+smush
+smut
+smutch
+smutchin
+smutchless
+smutchy
+smutproof
+smutted
+smutter
+smuttily
+smuttiness
+smutty
+Smyrna
+Smyrnaite
+Smyrnean
+Smyrniot
+Smyrniote
+smyth
+smytrie
+snab
+snabbie
+snabble
+snack
+snackle
+snackman
+snaff
+snaffle
+snaffles
+snafu
+snag
+snagbush
+snagged
+snagger
+snaggled
+snaggletooth
+snaggy
+snagrel
+snail
+snaileater
+snailery
+snailfish
+snailflower
+snailish
+snailishly
+snaillike
+snails
+snaily
+snaith
+snake
+snakebark
+snakeberry
+snakebird
+snakebite
+snakefish
+snakeflower
+snakehead
+snakeholing
+snakeleaf
+snakeless
+snakelet
+snakelike
+snakeling
+snakemouth
+snakeneck
+snakeology
+snakephobia
+snakepiece
+snakepipe
+snakeproof
+snaker
+snakeroot
+snakery
+snakeship
+snakeskin
+snakestone
+snakeweed
+snakewise
+snakewood
+snakeworm
+snakewort
+snakily
+snakiness
+snaking
+snakish
+snaky
+snap
+snapback
+snapbag
+snapberry
+snapdragon
+snape
+snaper
+snaphead
+snapholder
+snapjack
+snapless
+snappable
+snapped
+snapper
+snappily
+snappiness
+snapping
+snappingly
+snappish
+snappishly
+snappishness
+snapps
+snappy
+snaps
+snapsack
+snapshot
+snapshotter
+snapweed
+snapwood
+snapwort
+snapy
+snare
+snareless
+snarer
+snaringly
+snark
+snarl
+snarler
+snarleyyow
+snarlingly
+snarlish
+snarly
+snary
+snaste
+snatch
+snatchable
+snatched
+snatcher
+snatchily
+snatching
+snatchingly
+snatchproof
+snatchy
+snath
+snathe
+snavel
+snavvle
+snaw
+snead
+sneak
+sneaker
+sneakiness
+sneaking
+sneakingly
+sneakingness
+sneakish
+sneakishly
+sneakishness
+sneaksby
+sneaksman
+sneaky
+sneap
+sneath
+sneathe
+sneb
+sneck
+sneckdraw
+sneckdrawing
+sneckdrawn
+snecker
+snecket
+sned
+snee
+sneer
+sneerer
+sneerful
+sneerfulness
+sneering
+sneeringly
+sneerless
+sneery
+sneesh
+sneeshing
+sneest
+sneesty
+sneeze
+sneezeless
+sneezeproof
+sneezer
+sneezeweed
+sneezewood
+sneezewort
+sneezing
+sneezy
+snell
+snelly
+Snemovna
+snerp
+snew
+snib
+snibble
+snibbled
+snibbler
+snibel
+snicher
+snick
+snickdraw
+snickdrawing
+snicker
+snickering
+snickeringly
+snickersnee
+snicket
+snickey
+snickle
+sniddle
+snide
+snideness
+sniff
+sniffer
+sniffily
+sniffiness
+sniffing
+sniffingly
+sniffish
+sniffishness
+sniffle
+sniffler
+sniffly
+sniffy
+snift
+snifter
+snifty
+snig
+snigger
+sniggerer
+sniggering
+sniggle
+sniggler
+sniggoringly
+snip
+snipe
+snipebill
+snipefish
+snipelike
+sniper
+sniperscope
+sniping
+snipish
+snipjack
+snipnose
+snipocracy
+snipper
+snippersnapper
+snipperty
+snippet
+snippetiness
+snippety
+snippiness
+snipping
+snippish
+snippy
+snipsnapsnorum
+sniptious
+snipy
+snirl
+snirt
+snirtle
+snitch
+snitcher
+snite
+snithe
+snithy
+snittle
+snivel
+sniveled
+sniveler
+sniveling
+snively
+snivy
+snob
+snobber
+snobbery
+snobbess
+snobbing
+snobbish
+snobbishly
+snobbishness
+snobbism
+snobby
+snobdom
+snobling
+snobocracy
+snobocrat
+snobographer
+snobography
+snobologist
+snobonomer
+snobscat
+snocher
+snock
+snocker
+snod
+snodly
+snoek
+snoeking
+snog
+snoga
+Snohomish
+snoke
+Snonowas
+snood
+snooded
+snooding
+snook
+snooker
+snookered
+snoop
+snooper
+snooperscope
+snoopy
+snoose
+snoot
+snootily
+snootiness
+snooty
+snoove
+snooze
+snoozer
+snooziness
+snoozle
+snoozy
+snop
+Snoqualmie
+Snoquamish
+snore
+snoreless
+snorer
+snoring
+snoringly
+snork
+snorkel
+snorker
+snort
+snorter
+snorting
+snortingly
+snortle
+snorty
+snot
+snotter
+snottily
+snottiness
+snotty
+snouch
+snout
+snouted
+snouter
+snoutish
+snoutless
+snoutlike
+snouty
+Snow
+snow
+Snowball
+snowball
+snowbank
+snowbell
+snowberg
+snowberry
+snowbird
+snowblink
+snowbound
+snowbreak
+snowbush
+snowcap
+snowcraft
+Snowdonian
+snowdrift
+snowdrop
+snowfall
+snowflake
+snowflight
+snowflower
+snowfowl
+snowhammer
+snowhouse
+snowie
+snowily
+snowiness
+snowish
+snowk
+snowl
+snowland
+snowless
+snowlike
+snowmanship
+snowmobile
+snowplow
+snowproof
+snowscape
+snowshade
+snowshed
+snowshine
+snowshoe
+snowshoed
+snowshoeing
+snowshoer
+snowslide
+snowslip
+snowstorm
+snowsuit
+snowworm
+snowy
+snozzle
+snub
+snubbable
+snubbed
+snubbee
+snubber
+snubbiness
+snubbing
+snubbingly
+snubbish
+snubbishly
+snubbishness
+snubby
+snubproof
+snuck
+snudge
+snuff
+snuffbox
+snuffboxer
+snuffcolored
+snuffer
+snuffers
+snuffiness
+snuffing
+snuffingly
+snuffish
+snuffle
+snuffler
+snuffles
+snuffless
+snuffliness
+snuffling
+snufflingly
+snuffly
+snuffman
+snuffy
+snug
+snugger
+snuggery
+snuggish
+snuggle
+snugify
+snugly
+snugness
+snum
+snup
+snupper
+snur
+snurl
+snurly
+snurp
+snurt
+snuzzle
+sny
+snying
+so
+soak
+soakage
+soakaway
+soaked
+soaken
+soaker
+soaking
+soakingly
+soakman
+soaky
+soally
+soam
+soap
+soapbark
+soapberry
+soapbox
+soapboxer
+soapbubbly
+soapbush
+soaper
+soapery
+soapfish
+soapily
+soapiness
+soaplees
+soapless
+soaplike
+soapmaker
+soapmaking
+soapmonger
+soaprock
+soaproot
+soapstone
+soapsud
+soapsuddy
+soapsuds
+soapsudsy
+soapweed
+soapwood
+soapwort
+soapy
+soar
+soarability
+soarable
+soarer
+soaring
+soaringly
+soary
+sob
+sobber
+sobbing
+sobbingly
+sobby
+sobeit
+sober
+soberer
+sobering
+soberingly
+soberize
+soberlike
+soberly
+soberness
+sobersault
+sobersided
+sobersides
+soberwise
+sobful
+soboles
+soboliferous
+sobproof
+Sobralia
+sobralite
+Sobranje
+sobrevest
+sobriety
+sobriquet
+sobriquetical
+soc
+socage
+socager
+soccer
+soccerist
+soccerite
+soce
+socht
+sociability
+sociable
+sociableness
+sociably
+social
+Sociales
+socialism
+socialist
+socialistic
+socialite
+sociality
+socializable
+socialization
+socialize
+socializer
+socially
+socialness
+sociation
+sociative
+societal
+societally
+societarian
+societarianism
+societary
+societified
+societism
+societist
+societologist
+societology
+society
+societyish
+societyless
+socii
+Socinian
+Socinianism
+Socinianistic
+Socinianize
+sociobiological
+sociocentric
+sociocracy
+sociocrat
+sociocratic
+sociocultural
+sociodrama
+sociodramatic
+socioeconomic
+socioeducational
+sociogenesis
+sociogenetic
+sociogeny
+sociography
+sociolatry
+sociolegal
+sociologian
+sociologic
+sociological
+sociologically
+sociologism
+sociologist
+sociologistic
+sociologize
+sociologizer
+sociologizing
+sociology
+sociomedical
+sociometric
+sociometry
+socionomic
+socionomics
+socionomy
+sociophagous
+sociopolitical
+socioreligious
+socioromantic
+sociostatic
+sociotechnical
+socius
+sock
+sockdolager
+socker
+socket
+socketful
+socketless
+sockeye
+sockless
+socklessness
+sockmaker
+sockmaking
+socky
+socle
+socman
+socmanry
+soco
+Socorrito
+Socotran
+Socotri
+Socotrine
+Socratean
+Socratic
+Socratical
+Socratically
+Socraticism
+Socratism
+Socratist
+Socratize
+sod
+soda
+sodaclase
+sodaic
+sodaless
+sodalist
+sodalite
+sodalithite
+sodality
+sodamide
+sodbuster
+sodded
+sodden
+soddenly
+soddenness
+sodding
+soddite
+soddy
+sodic
+sodio
+sodioaluminic
+sodioaurous
+sodiocitrate
+sodiohydric
+sodioplatinic
+sodiosalicylate
+sodiotartrate
+sodium
+sodless
+sodoku
+Sodom
+sodomic
+Sodomist
+Sodomite
+sodomitess
+sodomitic
+sodomitical
+sodomitically
+Sodomitish
+sodomy
+sodwork
+sody
+soe
+soekoe
+soever
+sofa
+sofane
+sofar
+soffit
+Sofia
+Sofoklis
+Sofronia
+soft
+softa
+softball
+softbrained
+soften
+softener
+softening
+softhead
+softheaded
+softhearted
+softheartedly
+softheartedness
+softhorn
+softish
+softling
+softly
+softner
+softness
+softship
+softtack
+softwood
+softy
+sog
+Soga
+Sogdian
+Sogdianese
+Sogdianian
+Sogdoite
+soger
+soget
+soggarth
+soggendalite
+soggily
+sogginess
+sogging
+soggy
+soh
+soho
+Soiesette
+soiesette
+soil
+soilage
+soiled
+soiling
+soilless
+soilproof
+soilure
+soily
+soiree
+soixantine
+Soja
+soja
+sojourn
+sojourner
+sojourney
+sojournment
+sok
+soka
+soke
+sokeman
+sokemanemot
+sokemanry
+soken
+Sokoki
+Sokotri
+Sokulk
+Sol
+sol
+sola
+solace
+solaceful
+solacement
+solaceproof
+solacer
+solacious
+solaciously
+solaciousness
+solan
+Solanaceae
+solanaceous
+solanal
+Solanales
+solander
+solaneine
+solaneous
+solanidine
+solanine
+Solanum
+solanum
+solar
+solarism
+solarist
+solaristic
+solaristically
+solaristics
+Solarium
+solarium
+solarization
+solarize
+solarometer
+solate
+solatia
+solation
+solatium
+solay
+sold
+soldado
+Soldan
+soldan
+soldanel
+Soldanella
+soldanelle
+soldanrie
+solder
+solderer
+soldering
+solderless
+soldi
+soldier
+soldierbird
+soldierbush
+soldierdom
+soldieress
+soldierfish
+soldierhearted
+soldierhood
+soldiering
+soldierize
+soldierlike
+soldierliness
+soldierly
+soldierproof
+soldiership
+soldierwise
+soldierwood
+soldiery
+soldo
+sole
+Solea
+solea
+soleas
+solecism
+solecist
+solecistic
+solecistical
+solecistically
+solecize
+solecizer
+Soleidae
+soleiform
+soleil
+soleless
+solely
+solemn
+solemncholy
+solemnify
+solemnitude
+solemnity
+solemnization
+solemnize
+solemnizer
+solemnly
+solemnness
+Solen
+solen
+solenacean
+solenaceous
+soleness
+solenette
+solenial
+Solenidae
+solenite
+solenitis
+solenium
+solenoconch
+Solenoconcha
+solenocyte
+Solenodon
+solenodont
+Solenodontidae
+solenogaster
+Solenogastres
+solenoglyph
+Solenoglypha
+solenoglyphic
+solenoid
+solenoidal
+solenoidally
+Solenopsis
+solenostele
+solenostelic
+solenostomid
+Solenostomidae
+solenostomoid
+solenostomous
+Solenostomus
+solent
+solentine
+solepiece
+soleplate
+soleprint
+soler
+Solera
+soles
+soleus
+soleyn
+solfataric
+solfeggio
+solferino
+soli
+soliative
+solicit
+solicitant
+solicitation
+solicitationism
+solicited
+solicitee
+soliciter
+soliciting
+solicitor
+solicitorship
+solicitous
+solicitously
+solicitousness
+solicitress
+solicitrix
+solicitude
+solicitudinous
+solid
+Solidago
+solidago
+solidaric
+solidarily
+solidarism
+solidarist
+solidaristic
+solidarity
+solidarize
+solidary
+solidate
+solidi
+solidifiability
+solidifiable
+solidifiableness
+solidification
+solidifier
+solidiform
+solidify
+solidish
+solidism
+solidist
+solidistic
+solidity
+solidly
+solidness
+solidum
+Solidungula
+solidungular
+solidungulate
+solidus
+solifidian
+solifidianism
+solifluction
+solifluctional
+soliform
+Solifugae
+solifuge
+solifugean
+solifugid
+solifugous
+soliloquacious
+soliloquist
+soliloquium
+soliloquize
+soliloquizer
+soliloquizing
+soliloquizingly
+soliloquy
+solilunar
+Solio
+solio
+soliped
+solipedal
+solipedous
+solipsism
+solipsismal
+solipsist
+solipsistic
+solist
+solitaire
+solitarian
+solitarily
+solitariness
+solitary
+soliterraneous
+solitidal
+solitude
+solitudinarian
+solitudinize
+solitudinous
+solivagant
+solivagous
+sollar
+solleret
+Sollya
+solmizate
+solmization
+solo
+solod
+solodi
+solodization
+solodize
+soloecophanes
+soloist
+Solomon
+Solomonian
+Solomonic
+Solomonical
+Solomonitic
+Solon
+solon
+solonchak
+solonetz
+solonetzic
+solonetzicity
+Solonian
+Solonic
+solonist
+soloth
+solotink
+solotnik
+solpugid
+Solpugida
+Solpugidea
+Solpugides
+solstice
+solsticion
+solstitia
+solstitial
+solstitially
+solstitium
+solubility
+solubilization
+solubilize
+soluble
+solubleness
+solubly
+solum
+solute
+solution
+solutional
+solutioner
+solutionist
+solutize
+solutizer
+Solutrean
+solvability
+solvable
+solvableness
+solvate
+solvation
+solve
+solvement
+solvency
+solvend
+solvent
+solvently
+solventproof
+solver
+solvolysis
+solvolytic
+solvolyze
+solvsbergite
+Solyma
+Solymaean
+soma
+somacule
+Somal
+somal
+Somali
+somaplasm
+Somaschian
+somasthenia
+somata
+somatasthenia
+Somateria
+somatic
+somatical
+somatically
+somaticosplanchnic
+somaticovisceral
+somatics
+somatism
+somatist
+somatization
+somatochrome
+somatocyst
+somatocystic
+somatoderm
+somatogenetic
+somatogenic
+somatognosis
+somatognostic
+somatologic
+somatological
+somatologically
+somatologist
+somatology
+somatome
+somatomic
+somatophyte
+somatophytic
+somatoplasm
+somatopleural
+somatopleure
+somatopleuric
+somatopsychic
+somatosplanchnic
+somatotonia
+somatotonic
+somatotropic
+somatotropically
+somatotropism
+somatotype
+somatotyper
+somatotypy
+somatous
+somber
+somberish
+somberly
+somberness
+sombre
+sombrerite
+sombrero
+sombreroed
+sombrous
+sombrously
+sombrousness
+some
+somebody
+someday
+somedeal
+somegate
+somehow
+someone
+somepart
+someplace
+somers
+somersault
+somerset
+Somersetian
+somervillite
+somesthesia
+somesthesis
+somesthetic
+something
+somethingness
+sometime
+sometimes
+someway
+someways
+somewhat
+somewhatly
+somewhatness
+somewhen
+somewhence
+somewhere
+somewheres
+somewhile
+somewhiles
+somewhither
+somewhy
+somewise
+somital
+somite
+somitic
+somma
+sommaite
+sommelier
+somnambulance
+somnambulancy
+somnambulant
+somnambular
+somnambulary
+somnambulate
+somnambulation
+somnambulator
+somnambule
+somnambulency
+somnambulic
+somnambulically
+somnambulism
+somnambulist
+somnambulistic
+somnambulize
+somnambulous
+somnial
+somniative
+somnifacient
+somniferous
+somniferously
+somnific
+somnifuge
+somnify
+somniloquacious
+somniloquence
+somniloquent
+somniloquism
+somniloquist
+somniloquize
+somniloquous
+somniloquy
+Somniosus
+somnipathist
+somnipathy
+somnivolency
+somnivolent
+somnolence
+somnolency
+somnolent
+somnolently
+somnolescence
+somnolescent
+somnolism
+somnolize
+somnopathy
+somnorific
+somnus
+sompay
+sompne
+sompner
+Son
+son
+sonable
+sonance
+sonancy
+sonant
+sonantal
+sonantic
+sonantina
+sonantized
+sonar
+sonata
+sonatina
+sonation
+Sonchus
+sond
+sondation
+sondeli
+Sonderbund
+sonderclass
+Sondergotter
+Sondylomorum
+soneri
+song
+songbird
+songbook
+songcraft
+songfest
+songful
+songfully
+songfulness
+Songhai
+Songish
+songish
+songland
+songle
+songless
+songlessly
+songlessness
+songlet
+songlike
+songman
+Songo
+Songoi
+songster
+songstress
+songworthy
+songwright
+songy
+sonhood
+sonic
+soniferous
+sonification
+soniou
+Sonja
+sonk
+sonless
+sonlike
+sonlikeness
+sonly
+Sonneratia
+Sonneratiaceae
+sonneratiaceous
+sonnet
+sonnetary
+sonneteer
+sonneteeress
+sonnetic
+sonneting
+sonnetish
+sonnetist
+sonnetize
+sonnetlike
+sonnetwise
+sonnikins
+Sonny
+sonny
+sonobuoy
+sonometer
+Sonoran
+sonorant
+sonorescence
+sonorescent
+sonoric
+sonoriferous
+sonoriferously
+sonorific
+sonority
+sonorophone
+sonorosity
+sonorous
+sonorously
+sonorousness
+Sonrai
+sons
+sonship
+sonsy
+sontag
+soodle
+soodly
+Soohong
+sook
+Sooke
+sooky
+sool
+sooloos
+soon
+sooner
+soonish
+soonly
+Soorah
+soorawn
+soord
+soorkee
+Soot
+soot
+sooter
+sooterkin
+sooth
+soothe
+soother
+sootherer
+soothful
+soothing
+soothingly
+soothingness
+soothless
+soothsay
+soothsayer
+soothsayership
+soothsaying
+sootily
+sootiness
+sootless
+sootlike
+sootproof
+sooty
+sootylike
+sop
+sope
+soph
+Sopheric
+Sopherim
+Sophia
+sophia
+Sophian
+sophic
+sophical
+sophically
+sophiologic
+sophiology
+sophism
+Sophist
+sophister
+sophistic
+sophistical
+sophistically
+sophisticalness
+sophisticant
+sophisticate
+sophisticated
+sophistication
+sophisticative
+sophisticator
+sophisticism
+Sophistress
+sophistress
+sophistry
+Sophoclean
+sophomore
+sophomoric
+sophomorical
+sophomorically
+Sophora
+sophoria
+Sophronia
+sophronize
+Sophy
+sophy
+sopite
+sopition
+sopor
+soporiferous
+soporiferously
+soporiferousness
+soporific
+soporifical
+soporifically
+soporose
+sopper
+soppiness
+sopping
+soppy
+soprani
+sopranino
+sopranist
+soprano
+sora
+Sorabian
+sorage
+soral
+Sorb
+sorb
+Sorbaria
+sorbate
+sorbefacient
+sorbent
+Sorbian
+sorbic
+sorbile
+sorbin
+sorbinose
+Sorbish
+sorbite
+sorbitic
+sorbitize
+sorbitol
+Sorbonic
+Sorbonical
+Sorbonist
+Sorbonne
+sorbose
+sorboside
+Sorbus
+sorbus
+sorcer
+sorcerer
+sorceress
+sorcering
+sorcerous
+sorcerously
+sorcery
+sorchin
+sorda
+Sordaria
+Sordariaceae
+sordawalite
+sordellina
+Sordello
+sordes
+sordid
+sordidity
+sordidly
+sordidness
+sordine
+sordino
+sordor
+sore
+soredia
+soredial
+sorediate
+sorediferous
+sorediform
+soredioid
+soredium
+soree
+sorefalcon
+sorefoot
+sorehawk
+sorehead
+soreheaded
+soreheadedly
+soreheadedness
+sorehearted
+sorehon
+sorely
+sorema
+soreness
+Sorex
+sorgho
+Sorghum
+sorghum
+sorgo
+sori
+soricid
+Soricidae
+soricident
+Soricinae
+soricine
+soricoid
+Soricoidea
+soriferous
+sorite
+sorites
+soritical
+sorn
+sornare
+sornari
+sorner
+sorning
+soroban
+Soroptimist
+sororal
+sororate
+sororial
+sororially
+sororicidal
+sororicide
+sorority
+sororize
+sorose
+sorosis
+sorosphere
+Sorosporella
+Sorosporium
+sorption
+sorra
+Sorrel
+sorrel
+sorrento
+sorrily
+sorriness
+sorroa
+sorrow
+sorrower
+sorrowful
+sorrowfully
+sorrowfulness
+sorrowing
+sorrowingly
+sorrowless
+sorrowproof
+sorrowy
+sorry
+sorryhearted
+sorryish
+sort
+sortable
+sortably
+sortal
+sortation
+sorted
+sorter
+sortie
+sortilege
+sortileger
+sortilegic
+sortilegious
+sortilegus
+sortilegy
+sortiment
+sortition
+sortly
+sorty
+sorus
+sorva
+sory
+sosh
+soshed
+Sosia
+soso
+sosoish
+Sospita
+soss
+sossle
+sostenuto
+sot
+Sotadean
+Sotadic
+Soter
+Soteres
+soterial
+soteriologic
+soteriological
+soteriology
+Sothiac
+Sothiacal
+Sothic
+Sothis
+Sotho
+sotie
+Sotik
+sotnia
+sotnik
+sotol
+sots
+sottage
+sotted
+sotter
+sottish
+sottishly
+sottishness
+sou
+souari
+soubise
+soubrette
+soubrettish
+soucar
+souchet
+Souchong
+souchong
+souchy
+soud
+soudagur
+souffle
+souffleed
+sough
+sougher
+soughing
+sought
+Souhegan
+soul
+soulack
+soulcake
+souled
+Souletin
+soulful
+soulfully
+soulfulness
+soulical
+soulish
+soulless
+soullessly
+soullessness
+soullike
+Soulmass
+soulsaving
+soulward
+souly
+soum
+soumansite
+soumarque
+sound
+soundable
+soundage
+soundboard
+sounder
+soundful
+soundheaded
+soundheadedness
+soundhearted
+soundheartednes
+sounding
+soundingly
+soundingness
+soundless
+soundlessly
+soundlessness
+soundly
+soundness
+soundproof
+soundproofing
+soup
+soupbone
+soupcon
+souper
+souple
+soupless
+souplike
+soupspoon
+soupy
+sour
+sourbelly
+sourberry
+sourbread
+sourbush
+sourcake
+source
+sourceful
+sourcefulness
+sourceless
+sourcrout
+sourdeline
+sourdine
+soured
+souredness
+souren
+sourer
+sourhearted
+souring
+sourish
+sourishly
+sourishness
+sourjack
+sourling
+sourly
+sourness
+sourock
+soursop
+sourtop
+sourweed
+sourwood
+soury
+sousaphone
+sousaphonist
+souse
+souser
+souslik
+soutane
+souter
+souterrain
+South
+south
+southard
+southbound
+Southcottian
+Southdown
+southeast
+southeaster
+southeasterly
+southeastern
+southeasternmost
+southeastward
+southeastwardly
+southeastwards
+souther
+southerland
+southerliness
+southerly
+southermost
+southern
+Southerner
+southerner
+southernism
+southernize
+southernliness
+southernly
+southernmost
+southernness
+southernwood
+southing
+southland
+southlander
+southmost
+southness
+southpaw
+Southron
+southron
+Southronie
+Southumbrian
+southward
+southwardly
+southwards
+southwest
+southwester
+southwesterly
+southwestern
+Southwesterner
+southwesternmost
+southwestward
+southwestwardly
+souvenir
+souverain
+souwester
+sov
+sovereign
+sovereigness
+sovereignly
+sovereignness
+sovereignship
+sovereignty
+soviet
+sovietdom
+sovietic
+sovietism
+sovietist
+sovietization
+sovietize
+sovite
+sovkhose
+sovkhoz
+sovran
+sovranty
+sow
+sowable
+sowan
+sowans
+sowar
+sowarry
+sowback
+sowbacked
+sowbane
+sowbelly
+sowbread
+sowdones
+sowel
+sowens
+sower
+sowfoot
+sowing
+sowins
+sowl
+sowle
+sowlike
+sowlth
+sown
+sowse
+sowt
+sowte
+Soxhlet
+soy
+soya
+soybean
+Soyot
+sozin
+sozolic
+sozzle
+sozzly
+spa
+Space
+space
+spaceband
+spaced
+spaceful
+spaceless
+spacer
+spacesaving
+spaceship
+spaciness
+spacing
+spaciosity
+spaciotemporal
+spacious
+spaciously
+spaciousness
+spack
+spacy
+spad
+spade
+spadebone
+spaded
+spadefish
+spadefoot
+spadeful
+spadelike
+spademan
+spader
+spadesman
+spadewise
+spadework
+spadger
+spadiceous
+spadices
+spadicifloral
+spadiciflorous
+spadiciform
+spadicose
+spadilla
+spadille
+spading
+spadix
+spadone
+spadonic
+spadonism
+spadrone
+spadroon
+spae
+spaebook
+spaecraft
+spaedom
+spaeman
+spaer
+spaewife
+spaewoman
+spaework
+spaewright
+spaghetti
+Spagnuoli
+spagyric
+spagyrical
+spagyrically
+spagyrist
+spahi
+spaid
+spaik
+spairge
+spak
+Spalacidae
+spalacine
+Spalax
+spald
+spalder
+spalding
+spale
+spall
+spallation
+spaller
+spalling
+spalpeen
+spalt
+span
+spancel
+spandle
+spandrel
+spandy
+spane
+spanemia
+spanemy
+spang
+spanghew
+spangle
+spangled
+spangler
+spanglet
+spangly
+spangolite
+Spaniard
+Spaniardization
+Spaniardize
+Spaniardo
+spaniel
+spaniellike
+spanielship
+spaning
+Spaniol
+Spaniolate
+Spanioli
+Spaniolize
+spanipelagic
+Spanish
+Spanishize
+Spanishly
+spank
+spanker
+spankily
+spanking
+spankingly
+spanky
+spanless
+spann
+spannel
+spanner
+spannerman
+spanopnoea
+spanpiece
+spantoon
+spanule
+spanworm
+Spar
+spar
+sparable
+sparada
+sparadrap
+sparagrass
+sparagus
+Sparassis
+sparassodont
+Sparassodonta
+Sparaxis
+sparaxis
+sparch
+spare
+spareable
+spareless
+sparely
+spareness
+sparer
+sparerib
+sparesome
+Sparganiaceae
+Sparganium
+sparganium
+sparganosis
+sparganum
+sparge
+sparger
+spargosis
+sparhawk
+sparid
+Sparidae
+sparing
+sparingly
+sparingness
+spark
+sparkback
+sparked
+sparker
+sparkiness
+sparking
+sparkish
+sparkishly
+sparkishness
+sparkle
+sparkleberry
+sparkler
+sparkless
+sparklessly
+sparklet
+sparklike
+sparkliness
+sparkling
+sparklingly
+sparklingness
+sparkly
+sparkproof
+sparks
+sparky
+sparlike
+sparling
+sparm
+Sparmannia
+Sparnacian
+sparoid
+sparpiece
+sparred
+sparrer
+sparring
+sparringly
+sparrow
+sparrowbill
+sparrowcide
+sparrowdom
+sparrowgrass
+sparrowish
+sparrowless
+sparrowlike
+sparrowtail
+sparrowtongue
+sparrowwort
+sparrowy
+sparry
+sparse
+sparsedly
+sparsely
+sparsile
+sparsioplast
+sparsity
+spart
+Spartacan
+Spartacide
+Spartacism
+Spartacist
+spartacist
+Spartan
+Spartanhood
+Spartanic
+Spartanically
+Spartanism
+Spartanize
+Spartanlike
+Spartanly
+sparteine
+sparterie
+sparth
+Spartiate
+Spartina
+Spartium
+spartle
+Sparus
+sparver
+spary
+spasm
+spasmatic
+spasmatical
+spasmatomancy
+spasmed
+spasmic
+spasmodic
+spasmodical
+spasmodically
+spasmodicalness
+spasmodism
+spasmodist
+spasmolytic
+spasmophilia
+spasmophilic
+spasmotin
+spasmotoxin
+spasmous
+Spass
+spastic
+spastically
+spasticity
+spat
+spatalamancy
+Spatangida
+Spatangina
+spatangoid
+Spatangoida
+Spatangoidea
+spatangoidean
+Spatangus
+spatchcock
+spate
+spatha
+spathaceous
+spathal
+spathe
+spathed
+spatheful
+spathic
+Spathiflorae
+spathilae
+spathilla
+spathose
+spathous
+spathulate
+Spathyema
+spatial
+spatiality
+spatialization
+spatialize
+spatially
+spatiate
+spatiation
+spatilomancy
+spatiotemporal
+spatling
+spatted
+spatter
+spatterdashed
+spatterdasher
+spatterdock
+spattering
+spatteringly
+spatterproof
+spatterwork
+spatting
+spattle
+spattlehoe
+Spatula
+spatula
+spatulamancy
+spatular
+spatulate
+spatulation
+spatule
+spatuliform
+spatulose
+spave
+spaver
+spavie
+spavied
+spaviet
+spavin
+spavindy
+spavined
+spawn
+spawneater
+spawner
+spawning
+spawny
+spay
+spayad
+spayard
+spaying
+speak
+speakable
+speakableness
+speakably
+speaker
+speakeress
+speakership
+speakhouse
+speakies
+speaking
+speakingly
+speakingness
+speakless
+speaklessly
+speal
+spealbone
+spean
+spear
+spearcast
+spearer
+spearfish
+spearflower
+spearhead
+spearing
+spearman
+spearmanship
+spearmint
+spearproof
+spearsman
+spearwood
+spearwort
+speary
+spec
+specchie
+spece
+special
+specialism
+specialist
+specialistic
+speciality
+specialization
+specialize
+specialized
+specializer
+specially
+specialness
+specialty
+speciation
+specie
+species
+speciestaler
+specifiable
+specific
+specifical
+specificality
+specifically
+specificalness
+specificate
+specification
+specificative
+specificatively
+specificity
+specificize
+specificly
+specificness
+specifier
+specifist
+specify
+specillum
+specimen
+specimenize
+speciology
+speciosity
+specious
+speciously
+speciousness
+speck
+specked
+speckedness
+speckfall
+speckiness
+specking
+speckle
+specklebelly
+specklebreast
+speckled
+speckledbill
+speckledness
+speckless
+specklessly
+specklessness
+speckling
+speckly
+speckproof
+specks
+specksioneer
+specky
+specs
+spectacle
+spectacled
+spectacleless
+spectaclelike
+spectaclemaker
+spectaclemaking
+spectacles
+spectacular
+spectacularism
+spectacularity
+spectacularly
+spectator
+spectatordom
+spectatorial
+spectatorship
+spectatory
+spectatress
+spectatrix
+specter
+spectered
+specterlike
+spectra
+spectral
+spectralism
+spectrality
+spectrally
+spectralness
+spectrobolograph
+spectrobolographic
+spectrobolometer
+spectrobolometric
+spectrochemical
+spectrochemistry
+spectrocolorimetry
+spectrocomparator
+spectroelectric
+spectrogram
+spectrograph
+spectrographic
+spectrographically
+spectrography
+spectroheliogram
+spectroheliograph
+spectroheliographic
+spectrohelioscope
+spectrological
+spectrologically
+spectrology
+spectrometer
+spectrometric
+spectrometry
+spectromicroscope
+spectromicroscopical
+spectrophobia
+spectrophone
+spectrophonic
+spectrophotoelectric
+spectrophotograph
+spectrophotography
+spectrophotometer
+spectrophotometric
+spectrophotometry
+spectropolarimeter
+spectropolariscope
+spectropyrheliometer
+spectropyrometer
+spectroradiometer
+spectroradiometric
+spectroradiometry
+spectroscope
+spectroscopic
+spectroscopically
+spectroscopist
+spectroscopy
+spectrotelescope
+spectrous
+spectrum
+spectry
+specula
+specular
+Specularia
+specularly
+speculate
+speculation
+speculatist
+speculative
+speculatively
+speculativeness
+speculativism
+speculator
+speculatory
+speculatrices
+speculatrix
+speculist
+speculum
+specus
+sped
+speech
+speechcraft
+speecher
+speechful
+speechfulness
+speechification
+speechifier
+speechify
+speeching
+speechless
+speechlessly
+speechlessness
+speechlore
+speechmaker
+speechmaking
+speechment
+speed
+speedaway
+speedboat
+speedboating
+speedboatman
+speeder
+speedful
+speedfully
+speedfulness
+speedily
+speediness
+speeding
+speedingly
+speedless
+speedometer
+speedster
+speedway
+speedwell
+speedy
+speel
+speelken
+speelless
+speen
+speer
+speering
+speerity
+speiskobalt
+speiss
+spekboom
+spelaean
+spelder
+spelding
+speldring
+speleological
+speleologist
+speleology
+spelk
+spell
+spellable
+spellbind
+spellbinder
+spellbinding
+spellbound
+spellcraft
+spelldown
+speller
+spellful
+spelling
+spellingdown
+spellingly
+spellmonger
+spellproof
+spellword
+spellwork
+spelt
+spelter
+spelterman
+speltoid
+speltz
+speluncar
+speluncean
+spelunk
+spelunker
+spence
+Spencean
+Spencer
+spencer
+Spencerian
+Spencerianism
+Spencerism
+spencerite
+spend
+spendable
+spender
+spendful
+spendible
+spending
+spendless
+spendthrift
+spendthrifty
+Spenerism
+spense
+Spenserian
+spent
+speos
+Speotyto
+sperable
+Speranza
+sperate
+Spergula
+Spergularia
+sperity
+sperket
+sperling
+sperm
+sperma
+spermaceti
+spermacetilike
+spermaduct
+spermalist
+Spermaphyta
+spermaphyte
+spermaphytic
+spermarium
+spermary
+spermashion
+spermatangium
+spermatheca
+spermathecal
+spermatic
+spermatically
+spermatid
+spermatiferous
+spermatin
+spermatiogenous
+spermation
+spermatiophore
+spermatism
+spermatist
+spermatitis
+spermatium
+spermatize
+spermatoblast
+spermatoblastic
+spermatocele
+spermatocyst
+spermatocystic
+spermatocystitis
+spermatocytal
+spermatocyte
+spermatogemma
+spermatogenesis
+spermatogenetic
+spermatogenic
+spermatogenous
+spermatogeny
+spermatogonial
+spermatogonium
+spermatoid
+spermatolysis
+spermatolytic
+spermatophoral
+spermatophore
+spermatophorous
+Spermatophyta
+spermatophyte
+spermatophytic
+spermatoplasm
+spermatoplasmic
+spermatoplast
+spermatorrhea
+spermatospore
+spermatotheca
+spermatova
+spermatovum
+spermatoxin
+spermatozoa
+spermatozoal
+spermatozoan
+spermatozoic
+spermatozoid
+spermatozoon
+spermaturia
+spermic
+spermidine
+spermiducal
+spermiduct
+spermigerous
+spermine
+spermiogenesis
+spermism
+spermist
+spermoblast
+spermoblastic
+spermocarp
+spermocenter
+spermoderm
+spermoduct
+spermogenesis
+spermogenous
+spermogone
+spermogoniferous
+spermogonium
+spermogonous
+spermologer
+spermological
+spermologist
+spermology
+spermolysis
+spermolytic
+spermophile
+spermophiline
+Spermophilus
+spermophore
+spermophorium
+Spermophyta
+spermophyte
+spermophytic
+spermosphere
+spermotheca
+spermotoxin
+spermous
+spermoviduct
+spermy
+speronara
+speronaro
+sperone
+sperrylite
+spessartite
+spet
+spetch
+spetrophoby
+speuchan
+spew
+spewer
+spewiness
+spewing
+spewy
+spex
+sphacel
+Sphacelaria
+Sphacelariaceae
+sphacelariaceous
+Sphacelariales
+sphacelate
+sphacelated
+sphacelation
+sphacelia
+sphacelial
+sphacelism
+sphaceloderma
+Sphaceloma
+sphacelotoxin
+sphacelous
+sphacelus
+Sphaeralcea
+sphaeraphides
+Sphaerella
+sphaerenchyma
+Sphaeriaceae
+sphaeriaceous
+Sphaeriales
+sphaeridia
+sphaeridial
+sphaeridium
+Sphaeriidae
+Sphaerioidaceae
+sphaeristerium
+sphaerite
+Sphaerium
+sphaeroblast
+Sphaerobolaceae
+Sphaerobolus
+Sphaerocarpaceae
+Sphaerocarpales
+Sphaerocarpus
+sphaerocobaltite
+Sphaerococcaceae
+sphaerococcaceous
+Sphaerococcus
+sphaerolite
+sphaerolitic
+Sphaeroma
+Sphaeromidae
+Sphaerophoraceae
+Sphaerophorus
+Sphaeropsidaceae
+Sphaeropsidales
+Sphaeropsis
+sphaerosiderite
+sphaerosome
+sphaerospore
+Sphaerostilbe
+Sphaerotheca
+Sphaerotilus
+sphagion
+Sphagnaceae
+sphagnaceous
+Sphagnales
+sphagnicolous
+sphagnologist
+sphagnology
+sphagnous
+Sphagnum
+sphagnum
+Sphakiot
+sphalerite
+Sphargis
+sphecid
+Sphecidae
+Sphecina
+Sphecoidea
+spheges
+sphegid
+Sphegidae
+Sphegoidea
+sphendone
+sphene
+sphenethmoid
+sphenethmoidal
+sphenic
+sphenion
+Sphenisci
+Spheniscidae
+Sphenisciformes
+spheniscine
+spheniscomorph
+Spheniscomorphae
+spheniscomorphic
+Spheniscus
+sphenobasilar
+sphenobasilic
+sphenocephalia
+sphenocephalic
+sphenocephalous
+sphenocephaly
+Sphenodon
+sphenodon
+sphenodont
+Sphenodontia
+Sphenodontidae
+sphenoethmoid
+sphenoethmoidal
+sphenofrontal
+sphenogram
+sphenographic
+sphenographist
+sphenography
+sphenoid
+sphenoidal
+sphenoiditis
+sphenolith
+sphenomalar
+sphenomandibular
+sphenomaxillary
+sphenopalatine
+sphenoparietal
+sphenopetrosal
+Sphenophorus
+Sphenophyllaceae
+sphenophyllaceous
+Sphenophyllales
+Sphenophyllum
+Sphenopteris
+sphenosquamosal
+sphenotemporal
+sphenotic
+sphenotribe
+sphenotripsy
+sphenoturbinal
+sphenovomerine
+sphenozygomatic
+spherable
+spheral
+spherality
+spheraster
+spheration
+sphere
+sphereless
+spheric
+spherical
+sphericality
+spherically
+sphericalness
+sphericist
+sphericity
+sphericle
+sphericocylindrical
+sphericotetrahedral
+sphericotriangular
+spherics
+spheriform
+spherify
+spheroconic
+spherocrystal
+spherograph
+spheroidal
+spheroidally
+spheroidic
+spheroidical
+spheroidically
+spheroidicity
+spheroidism
+spheroidity
+spheroidize
+spheromere
+spherometer
+spheroquartic
+spherula
+spherular
+spherulate
+spherule
+spherulite
+spherulitic
+spherulitize
+sphery
+spheterize
+Sphex
+sphexide
+sphincter
+sphincteral
+sphincteralgia
+sphincterate
+sphincterectomy
+sphincterial
+sphincteric
+sphincterismus
+sphincteroscope
+sphincteroscopy
+sphincterotomy
+sphindid
+Sphindidae
+Sphindus
+sphingal
+sphinges
+sphingid
+Sphingidae
+sphingiform
+sphingine
+sphingoid
+sphingometer
+sphingomyelin
+sphingosine
+Sphingurinae
+Sphingurus
+sphinx
+sphinxian
+sphinxianness
+sphinxlike
+Sphoeroides
+sphragide
+sphragistic
+sphragistics
+sphygmia
+sphygmic
+sphygmochronograph
+sphygmodic
+sphygmogram
+sphygmograph
+sphygmographic
+sphygmography
+sphygmoid
+sphygmology
+sphygmomanometer
+sphygmomanometric
+sphygmomanometry
+sphygmometer
+sphygmometric
+sphygmophone
+sphygmophonic
+sphygmoscope
+sphygmus
+Sphyraena
+sphyraenid
+Sphyraenidae
+sphyraenoid
+Sphyrapicus
+Sphyrna
+Sphyrnidae
+Spica
+spica
+spical
+spicant
+Spicaria
+spicate
+spicated
+spiccato
+spice
+spiceable
+spiceberry
+spicebush
+spicecake
+spiced
+spiceful
+spicehouse
+spiceland
+spiceless
+spicelike
+spicer
+spicery
+spicewood
+spiciferous
+spiciform
+spicigerous
+spicilege
+spicily
+spiciness
+spicing
+spick
+spicket
+spickle
+spicknel
+spicose
+spicosity
+spicous
+spicousness
+spicula
+spiculae
+spicular
+spiculate
+spiculated
+spiculation
+spicule
+spiculiferous
+spiculiform
+spiculigenous
+spiculigerous
+spiculofiber
+spiculose
+spiculous
+spiculum
+spiculumamoris
+spicy
+spider
+spidered
+spiderflower
+spiderish
+spiderless
+spiderlike
+spiderling
+spiderly
+spiderweb
+spiderwork
+spiderwort
+spidery
+spidger
+spied
+spiegel
+spiegeleisen
+spiel
+spieler
+spier
+spiff
+spiffed
+spiffily
+spiffiness
+spiffing
+spiffy
+spiflicate
+spiflicated
+spiflication
+spig
+Spigelia
+Spigeliaceae
+Spigelian
+spiggoty
+spignet
+spigot
+Spike
+spike
+spikebill
+spiked
+spikedness
+spikefish
+spikehorn
+spikelet
+spikelike
+spikenard
+spiker
+spiketail
+spiketop
+spikeweed
+spikewise
+spikily
+spikiness
+spiking
+spiky
+Spilanthes
+spile
+spilehole
+spiler
+spileworm
+spilikin
+spiling
+spilite
+spilitic
+spill
+spillage
+spiller
+spillet
+spillproof
+spillway
+spilly
+Spilogale
+spiloma
+spilosite
+spilt
+spilth
+spilus
+spin
+spina
+spinacene
+spinaceous
+spinach
+spinachlike
+Spinacia
+spinae
+spinage
+spinal
+spinales
+spinalis
+spinally
+spinate
+spinder
+spindlage
+spindle
+spindleage
+spindled
+spindleful
+spindlehead
+spindlelegs
+spindlelike
+spindler
+spindleshanks
+spindletail
+spindlewise
+spindlewood
+spindleworm
+spindliness
+spindling
+spindly
+spindrift
+spine
+spinebill
+spinebone
+spined
+spinel
+spineless
+spinelessly
+spinelessness
+spinelet
+spinelike
+spinescence
+spinescent
+spinet
+spinetail
+spingel
+spinibulbar
+spinicarpous
+spinicerebellar
+spinidentate
+spiniferous
+Spinifex
+spinifex
+spiniform
+spinifugal
+spinigerous
+spinigrade
+spininess
+spinipetal
+spinitis
+spinituberculate
+spink
+spinnable
+spinnaker
+spinner
+spinneret
+spinnerular
+spinnerule
+spinnery
+spinney
+spinning
+spinningly
+spinobulbar
+spinocarpous
+spinocerebellar
+spinogalvanization
+spinoglenoid
+spinoid
+spinomuscular
+spinoneural
+spinoperipheral
+spinose
+spinosely
+spinoseness
+spinosity
+spinosodentate
+spinosodenticulate
+spinosotubercular
+spinosotuberculate
+spinosympathetic
+spinotectal
+spinothalamic
+spinotuberculous
+spinous
+spinousness
+Spinozism
+Spinozist
+Spinozistic
+spinster
+spinsterdom
+spinsterhood
+spinsterial
+spinsterish
+spinsterishly
+spinsterism
+spinsterlike
+spinsterly
+spinsterous
+spinstership
+spinstress
+spintext
+spinthariscope
+spinthariscopic
+spintherism
+spinulate
+spinulation
+spinule
+spinulescent
+spinuliferous
+spinuliform
+Spinulosa
+spinulose
+spinulosely
+spinulosociliate
+spinulosodentate
+spinulosodenticulate
+spinulosogranulate
+spinulososerrate
+spinulous
+spiny
+spionid
+Spionidae
+Spioniformia
+spiracle
+spiracula
+spiracular
+spiraculate
+spiraculiferous
+spiraculiform
+spiraculum
+Spiraea
+Spiraeaceae
+spiral
+spirale
+spiraled
+spiraliform
+spiralism
+spirality
+spiralization
+spiralize
+spirally
+spiraloid
+spiraltail
+spiralwise
+spiran
+spirant
+Spiranthes
+spiranthic
+spiranthy
+spirantic
+spirantize
+spiraster
+spirate
+spirated
+spiration
+spire
+spirea
+spired
+spiregrass
+spireless
+spirelet
+spireme
+spirepole
+spireward
+spirewise
+spiricle
+Spirifer
+Spirifera
+Spiriferacea
+spiriferid
+Spiriferidae
+spiriferoid
+spiriferous
+spiriform
+spirignath
+spirignathous
+spirilla
+Spirillaceae
+spirillaceous
+spirillar
+spirillolysis
+spirillosis
+spirillotropic
+spirillotropism
+spirillum
+spiring
+spirit
+spiritally
+spiritdom
+spirited
+spiritedly
+spiritedness
+spiriter
+spiritful
+spiritfully
+spiritfulness
+spirithood
+spiriting
+spiritism
+spiritist
+spiritistic
+spiritize
+spiritland
+spiritleaf
+spiritless
+spiritlessly
+spiritlessness
+spiritlike
+spiritmonger
+spiritous
+spiritrompe
+spiritsome
+spiritual
+spiritualism
+spiritualist
+spiritualistic
+spiritualistically
+spirituality
+spiritualization
+spiritualize
+spiritualizer
+spiritually
+spiritualness
+spiritualship
+spiritualty
+spirituosity
+spirituous
+spirituously
+spirituousness
+spiritus
+spiritweed
+spirity
+spirivalve
+spirket
+spirketing
+spirling
+spiro
+Spirobranchia
+Spirobranchiata
+spirobranchiate
+Spirochaeta
+Spirochaetaceae
+spirochaetal
+Spirochaetales
+Spirochaete
+spirochetal
+spirochete
+spirochetemia
+spirochetic
+spirocheticidal
+spirocheticide
+spirochetosis
+spirochetotic
+Spirodela
+spirogram
+spirograph
+spirographidin
+spirographin
+Spirographis
+Spirogyra
+spiroid
+spiroloculine
+spirometer
+spirometric
+spirometrical
+spirometry
+Spironema
+spiropentane
+Spirophyton
+Spirorbis
+spiroscope
+Spirosoma
+spirous
+spirt
+Spirula
+spirulate
+spiry
+spise
+spissated
+spissitude
+Spisula
+spit
+spital
+spitball
+spitballer
+spitbox
+spitchcock
+spite
+spiteful
+spitefully
+spitefulness
+spiteless
+spiteproof
+spitfire
+spitful
+spithamai
+spithame
+spitish
+spitpoison
+spitscocked
+spitstick
+spitted
+spitten
+spitter
+spitting
+spittle
+spittlefork
+spittlestaff
+spittoon
+spitz
+Spitzenburg
+spitzkop
+spiv
+spivery
+Spizella
+spizzerinctum
+Splachnaceae
+splachnaceous
+splachnoid
+Splachnum
+splacknuck
+splairge
+splanchnapophysial
+splanchnapophysis
+splanchnectopia
+splanchnemphraxis
+splanchnesthesia
+splanchnesthetic
+splanchnic
+splanchnoblast
+splanchnocoele
+splanchnoderm
+splanchnodiastasis
+splanchnodynia
+splanchnographer
+splanchnographical
+splanchnography
+splanchnolith
+splanchnological
+splanchnologist
+splanchnology
+splanchnomegalia
+splanchnomegaly
+splanchnopathy
+splanchnopleural
+splanchnopleure
+splanchnopleuric
+splanchnoptosia
+splanchnoptosis
+splanchnosclerosis
+splanchnoscopy
+splanchnoskeletal
+splanchnoskeleton
+splanchnosomatic
+splanchnotomical
+splanchnotomy
+splanchnotribe
+splash
+splashboard
+splashed
+splasher
+splashiness
+splashing
+splashingly
+splashproof
+splashy
+splat
+splatch
+splatcher
+splatchy
+splathering
+splatter
+splatterdash
+splatterdock
+splatterer
+splatterfaced
+splatterwork
+splay
+splayed
+splayer
+splayfoot
+splayfooted
+splaymouth
+splaymouthed
+spleen
+spleenful
+spleenfully
+spleenish
+spleenishly
+spleenishness
+spleenless
+spleenwort
+spleeny
+spleet
+spleetnew
+splenadenoma
+splenalgia
+splenalgic
+splenalgy
+splenatrophia
+splenatrophy
+splenauxe
+splenculus
+splendacious
+splendaciously
+splendaciousness
+splendent
+splendently
+splender
+splendescent
+splendid
+splendidly
+splendidness
+splendiferous
+splendiferously
+splendiferousness
+splendor
+splendorous
+splendorproof
+splendourproof
+splenectama
+splenectasis
+splenectomist
+splenectomize
+splenectomy
+splenectopia
+splenectopy
+splenelcosis
+splenemia
+splenemphraxis
+spleneolus
+splenepatitis
+splenetic
+splenetical
+splenetically
+splenetive
+splenial
+splenic
+splenical
+splenicterus
+splenification
+spleniform
+splenitis
+splenitive
+splenium
+splenius
+splenization
+splenoblast
+splenocele
+splenoceratosis
+splenocleisis
+splenocolic
+splenocyte
+splenodiagnosis
+splenodynia
+splenography
+splenohemia
+splenoid
+splenolaparotomy
+splenology
+splenolymph
+splenolymphatic
+splenolysin
+splenolysis
+splenoma
+splenomalacia
+splenomedullary
+splenomegalia
+splenomegalic
+splenomegaly
+splenomyelogenous
+splenoncus
+splenonephric
+splenopancreatic
+splenoparectama
+splenoparectasis
+splenopathy
+splenopexia
+splenopexis
+splenopexy
+splenophrenic
+splenopneumonia
+splenoptosia
+splenoptosis
+splenorrhagia
+splenorrhaphy
+splenotomy
+splenotoxin
+splenotyphoid
+splenulus
+splenunculus
+splet
+spleuchan
+splice
+spliceable
+splicer
+splicing
+splinder
+spline
+splineway
+splint
+splintage
+splinter
+splinterd
+splinterless
+splinternew
+splinterproof
+splintery
+splintwood
+splinty
+split
+splitbeak
+splitfinger
+splitfruit
+splitmouth
+splitnew
+splitsaw
+splittail
+splitten
+splitter
+splitting
+splitworm
+splodge
+splodgy
+splore
+splosh
+splotch
+splotchily
+splotchiness
+splotchy
+splother
+splunge
+splurge
+splurgily
+splurgy
+splurt
+spluther
+splutter
+splutterer
+spoach
+Spock
+spode
+spodiosite
+spodium
+spodogenic
+spodogenous
+spodomancy
+spodomantic
+spodumene
+spoffish
+spoffle
+spoffy
+spogel
+spoil
+spoilable
+spoilage
+spoilation
+spoiled
+spoiler
+spoilfive
+spoilful
+spoiling
+spoilless
+spoilment
+spoilsman
+spoilsmonger
+spoilsport
+spoilt
+Spokan
+spoke
+spokeless
+spoken
+spokeshave
+spokesman
+spokesmanship
+spokester
+spokeswoman
+spokeswomanship
+spokewise
+spoky
+spole
+spolia
+spoliarium
+spoliary
+spoliate
+spoliation
+spoliator
+spoliatory
+spolium
+spondaic
+spondaical
+spondaize
+spondean
+spondee
+spondiac
+Spondiaceae
+Spondias
+spondulics
+spondyl
+spondylalgia
+spondylarthritis
+spondylarthrocace
+spondylexarthrosis
+spondylic
+spondylid
+Spondylidae
+spondylioid
+spondylitic
+spondylitis
+spondylium
+spondylizema
+spondylocace
+Spondylocladium
+spondylodiagnosis
+spondylodidymia
+spondylodymus
+spondyloid
+spondylolisthesis
+spondylolisthetic
+spondylopathy
+spondylopyosis
+spondyloschisis
+spondylosis
+spondylosyndesis
+spondylotherapeutics
+spondylotherapist
+spondylotherapy
+spondylotomy
+spondylous
+Spondylus
+spondylus
+spong
+sponge
+spongecake
+sponged
+spongeful
+spongeless
+spongelet
+spongelike
+spongeous
+spongeproof
+sponger
+spongewood
+Spongiae
+spongian
+spongicolous
+spongiculture
+Spongida
+spongiferous
+spongiform
+Spongiidae
+Spongilla
+spongillid
+Spongillidae
+spongilline
+spongily
+spongin
+sponginblast
+sponginblastic
+sponginess
+sponging
+spongingly
+spongioblast
+spongioblastoma
+spongiocyte
+spongiolin
+spongiopilin
+spongioplasm
+spongioplasmic
+spongiose
+spongiosity
+spongiousness
+Spongiozoa
+spongiozoon
+spongoblast
+spongoblastic
+spongoid
+spongology
+spongophore
+Spongospora
+spongy
+sponsal
+sponsalia
+sponsibility
+sponsible
+sponsing
+sponsion
+sponsional
+sponson
+sponsor
+sponsorial
+sponsorship
+sponspeck
+spontaneity
+spontaneous
+spontaneously
+spontaneousness
+spontoon
+spoof
+spoofer
+spoofery
+spoofish
+spook
+spookdom
+spookery
+spookily
+spookiness
+spookish
+spookism
+spookist
+spookological
+spookologist
+spookology
+spooky
+spool
+spooler
+spoolful
+spoollike
+spoolwood
+spoom
+spoon
+spoonbill
+spoondrift
+spooner
+spoonerism
+spooneyism
+spooneyly
+spooneyness
+spoonflower
+spoonful
+spoonhutch
+spoonily
+spooniness
+spooning
+spoonism
+spoonless
+spoonlike
+spoonmaker
+spoonmaking
+spoonways
+spoonwood
+spoony
+spoonyism
+spoor
+spoorer
+spoot
+spor
+sporabola
+sporaceous
+sporades
+sporadial
+sporadic
+sporadical
+sporadically
+sporadicalness
+sporadicity
+sporadism
+sporadosiderite
+sporal
+sporange
+sporangia
+sporangial
+sporangidium
+sporangiferous
+sporangiform
+sporangioid
+sporangiola
+sporangiole
+sporangiolum
+sporangiophore
+sporangiospore
+sporangite
+Sporangites
+sporangium
+sporation
+spore
+spored
+sporeformer
+sporeforming
+sporeling
+sporicide
+sporid
+sporidesm
+sporidia
+sporidial
+sporidiferous
+sporidiole
+sporidiolum
+sporidium
+sporiferous
+sporification
+sporiparity
+sporiparous
+sporoblast
+Sporobolus
+sporocarp
+sporocarpium
+Sporochnaceae
+Sporochnus
+sporocyst
+sporocystic
+sporocystid
+sporocyte
+sporodochia
+sporodochium
+sporoduct
+sporogenesis
+sporogenic
+sporogenous
+sporogeny
+sporogone
+sporogonial
+sporogonic
+sporogonium
+sporogony
+sporoid
+sporologist
+sporomycosis
+sporont
+sporophore
+sporophoric
+sporophorous
+sporophydium
+sporophyll
+sporophyllary
+sporophyllum
+sporophyte
+sporophytic
+sporoplasm
+sporosac
+sporostegium
+sporostrote
+sporotrichosis
+sporotrichotic
+Sporotrichum
+sporous
+Sporozoa
+sporozoal
+sporozoan
+sporozoic
+sporozoite
+sporozoon
+sporran
+sport
+sportability
+sportable
+sportance
+sporter
+sportful
+sportfully
+sportfulness
+sportily
+sportiness
+sporting
+sportingly
+sportive
+sportively
+sportiveness
+sportless
+sportling
+sportly
+sports
+sportsman
+sportsmanlike
+sportsmanliness
+sportsmanly
+sportsmanship
+sportsome
+sportswear
+sportswoman
+sportswomanly
+sportswomanship
+sportula
+sportulae
+sporty
+sporular
+sporulate
+sporulation
+sporule
+sporuliferous
+sporuloid
+sposh
+sposhy
+spot
+spotless
+spotlessly
+spotlessness
+spotlight
+spotlighter
+spotlike
+spotrump
+spotsman
+spottable
+spotted
+spottedly
+spottedness
+spotteldy
+spotter
+spottily
+spottiness
+spotting
+spottle
+spotty
+spoucher
+spousage
+spousal
+spousally
+spouse
+spousehood
+spouseless
+spousy
+spout
+spouter
+spoutiness
+spouting
+spoutless
+spoutlike
+spoutman
+spouty
+sprachle
+sprack
+sprackish
+sprackle
+sprackly
+sprackness
+sprad
+spraddle
+sprag
+spragger
+spraggly
+spraich
+sprain
+spraint
+spraints
+sprang
+sprangle
+sprangly
+sprank
+sprat
+spratter
+spratty
+sprauchle
+sprawl
+sprawler
+sprawling
+sprawlingly
+sprawly
+spray
+sprayboard
+sprayer
+sprayey
+sprayful
+sprayfully
+sprayless
+spraylike
+sprayproof
+spread
+spreadation
+spreadboard
+spreaded
+spreader
+spreadhead
+spreading
+spreadingly
+spreadingness
+spreadover
+spready
+spreaghery
+spreath
+spreckle
+spree
+spreeuw
+Sprekelia
+spreng
+sprent
+spret
+sprew
+sprewl
+spridhogue
+spried
+sprier
+spriest
+sprig
+sprigged
+sprigger
+spriggy
+sprightful
+sprightfully
+sprightfulness
+sprightlily
+sprightliness
+sprightly
+sprighty
+spriglet
+sprigtail
+Spring
+spring
+springal
+springald
+springboard
+springbok
+springbuck
+springe
+springer
+springerle
+springfinger
+springfish
+springful
+springhaas
+springhalt
+springhead
+springhouse
+springily
+springiness
+springing
+springingly
+springle
+springless
+springlet
+springlike
+springly
+springmaker
+springmaking
+springtail
+springtide
+springtime
+springtrap
+springwood
+springworm
+springwort
+springwurzel
+springy
+sprink
+sprinkle
+sprinkled
+sprinkleproof
+sprinkler
+sprinklered
+sprinkling
+sprint
+sprinter
+sprit
+sprite
+spritehood
+spritsail
+sprittail
+sprittie
+spritty
+sproat
+sprocket
+sprod
+sprogue
+sproil
+sprong
+sprose
+sprottle
+sprout
+sproutage
+sprouter
+sproutful
+sprouting
+sproutland
+sproutling
+sprowsy
+spruce
+sprucely
+spruceness
+sprucery
+sprucification
+sprucify
+sprue
+spruer
+sprug
+spruiker
+spruit
+sprung
+sprunny
+sprunt
+spruntly
+spry
+spryly
+spryness
+spud
+Spudboy
+spudder
+spuddle
+spuddy
+spuffle
+spug
+spuilyie
+spuilzie
+spuke
+spume
+spumescence
+spumescent
+spumiferous
+spumification
+spumiform
+spumone
+spumose
+spumous
+spumy
+spun
+spung
+spunk
+spunkie
+spunkily
+spunkiness
+spunkless
+spunky
+spunny
+spur
+spurflower
+spurgall
+spurge
+spurgewort
+spuriae
+spuriosity
+spurious
+spuriously
+spuriousness
+Spurius
+spurl
+spurless
+spurlet
+spurlike
+spurling
+spurmaker
+spurmoney
+spurn
+spurner
+spurnpoint
+spurnwater
+spurproof
+spurred
+spurrer
+spurrial
+spurrier
+spurrings
+spurrite
+spurry
+spurt
+spurter
+spurtive
+spurtively
+spurtle
+spurway
+spurwing
+spurwinged
+spurwort
+sput
+sputa
+sputative
+sputter
+sputterer
+sputtering
+sputteringly
+sputtery
+sputum
+sputumary
+sputumose
+sputumous
+Spy
+spy
+spyboat
+spydom
+spyer
+spyfault
+spyglass
+spyhole
+spyism
+spyproof
+Spyros
+spyship
+spytower
+squab
+squabash
+squabasher
+squabbed
+squabbish
+squabble
+squabbler
+squabbling
+squabblingly
+squabbly
+squabby
+squacco
+squad
+squaddy
+squadrate
+squadrism
+squadron
+squadrone
+squadroned
+squail
+squailer
+squalene
+Squali
+squalid
+Squalida
+Squalidae
+squalidity
+squalidly
+squalidness
+squaliform
+squall
+squaller
+squallery
+squallish
+squally
+squalm
+Squalodon
+squalodont
+Squalodontidae
+squaloid
+Squaloidei
+squalor
+Squalus
+squam
+squama
+squamaceous
+squamae
+Squamariaceae
+Squamata
+squamate
+squamated
+squamatine
+squamation
+squamatogranulous
+squamatotuberculate
+squame
+squamella
+squamellate
+squamelliferous
+squamelliform
+squameous
+squamiferous
+squamiform
+squamify
+squamigerous
+squamipennate
+Squamipennes
+squamipinnate
+Squamipinnes
+squamocellular
+squamoepithelial
+squamoid
+squamomastoid
+squamoparietal
+squamopetrosal
+squamosa
+squamosal
+squamose
+squamosely
+squamoseness
+squamosis
+squamosity
+squamosodentated
+squamosoimbricated
+squamosomaxillary
+squamosoparietal
+squamosoradiate
+squamosotemporal
+squamosozygomatic
+squamosphenoid
+squamosphenoidal
+squamotemporal
+squamous
+squamously
+squamousness
+squamozygomatic
+Squamscot
+squamula
+squamulae
+squamulate
+squamulation
+squamule
+squamuliform
+squamulose
+squander
+squanderer
+squanderingly
+squandermania
+squandermaniac
+squantum
+squarable
+square
+squareage
+squarecap
+squared
+squaredly
+squareface
+squareflipper
+squarehead
+squarelike
+squarely
+squareman
+squaremouth
+squareness
+squarer
+squaretail
+squarewise
+squaring
+squarish
+squarishly
+squark
+squarrose
+squarrosely
+squarrous
+squarrulose
+squarson
+squarsonry
+squary
+squash
+squashberry
+squasher
+squashily
+squashiness
+squashy
+squat
+Squatarola
+squatarole
+Squatina
+squatina
+squatinid
+Squatinidae
+squatinoid
+Squatinoidei
+squatly
+squatment
+squatmore
+squatness
+squattage
+squatted
+squatter
+squatterarchy
+squatterdom
+squatterproof
+squattily
+squattiness
+squatting
+squattingly
+squattish
+squattocracy
+squattocratic
+squatty
+squatwise
+squaw
+squawberry
+squawbush
+squawdom
+squawfish
+squawflower
+squawk
+squawker
+squawkie
+squawking
+squawkingly
+squawky
+Squawmish
+squawroot
+Squawtits
+squawweed
+Squaxon
+squdge
+squdgy
+squeak
+squeaker
+squeakery
+squeakily
+squeakiness
+squeaking
+squeakingly
+squeaklet
+squeakproof
+squeaky
+squeakyish
+squeal
+squeald
+squealer
+squealing
+squeam
+squeamish
+squeamishly
+squeamishness
+squeamous
+squeamy
+Squedunk
+squeege
+squeegee
+squeezability
+squeezable
+squeezableness
+squeezably
+squeeze
+squeezeman
+squeezer
+squeezing
+squeezingly
+squeezy
+squelch
+squelcher
+squelchily
+squelchiness
+squelching
+squelchingly
+squelchingness
+squelchy
+squench
+squencher
+squeteague
+squib
+squibber
+squibbery
+squibbish
+squiblet
+squibling
+squid
+squiddle
+squidge
+squidgereen
+squidgy
+squiffed
+squiffer
+squiffy
+squiggle
+squiggly
+squilgee
+squilgeer
+Squill
+Squilla
+squilla
+squillagee
+squillery
+squillian
+squillid
+Squillidae
+squilloid
+Squilloidea
+squimmidge
+squin
+squinance
+squinancy
+squinch
+squinny
+squinsy
+squint
+squinted
+squinter
+squinting
+squintingly
+squintingness
+squintly
+squintness
+squinty
+squirage
+squiralty
+squire
+squirearch
+squirearchal
+squirearchical
+squirearchy
+squiredom
+squireen
+squirehood
+squireless
+squirelet
+squirelike
+squireling
+squirely
+squireocracy
+squireship
+squiress
+squiret
+squirewise
+squirish
+squirism
+squirk
+squirm
+squirminess
+squirming
+squirmingly
+squirmy
+squirr
+squirrel
+squirrelfish
+squirrelian
+squirreline
+squirrelish
+squirrellike
+squirrelproof
+squirreltail
+squirt
+squirter
+squirtiness
+squirting
+squirtingly
+squirtish
+squirty
+squish
+squishy
+squit
+squitch
+squitchy
+squitter
+squoze
+squush
+squushy
+sraddha
+sramana
+Sri
+sri
+Sridhar
+Sridharan
+Srikanth
+Srinivas
+Srinivasan
+Sriram
+Srivatsan
+sruti
+Ssi
+ssu
+st
+staab
+Staatsrat
+stab
+stabber
+stabbing
+stabbingly
+stabile
+stabilify
+stabilist
+stabilitate
+stability
+stabilization
+stabilizator
+stabilize
+stabilizer
+stable
+stableboy
+stableful
+stablekeeper
+stablelike
+stableman
+stableness
+stabler
+stablestand
+stableward
+stablewards
+stabling
+stablishment
+stably
+staboy
+stabproof
+stabulate
+stabulation
+stabwort
+staccato
+Stacey
+stacher
+stachydrin
+stachydrine
+stachyose
+Stachys
+stachys
+Stachytarpheta
+Stachyuraceae
+stachyuraceous
+Stachyurus
+stack
+stackage
+stackencloud
+stacker
+stackfreed
+stackful
+stackgarth
+Stackhousia
+Stackhousiaceae
+stackhousiaceous
+stackless
+stackman
+stackstand
+stackyard
+stacte
+stactometer
+Stacy
+stadda
+staddle
+staddling
+stade
+stadholder
+stadholderate
+stadholdership
+stadhouse
+stadia
+stadic
+stadimeter
+stadiometer
+stadion
+stadium
+stafette
+staff
+staffed
+staffelite
+staffer
+staffless
+staffman
+stag
+stagbush
+stage
+stageability
+stageable
+stageableness
+stageably
+stagecoach
+stagecoaching
+stagecraft
+staged
+stagedom
+stagehand
+stagehouse
+stageland
+stagelike
+stageman
+stager
+stagery
+stagese
+stagewise
+stageworthy
+stagewright
+staggard
+staggart
+staggarth
+Stagger
+stagger
+staggerbush
+staggerer
+staggering
+staggeringly
+staggers
+staggerweed
+staggerwort
+staggery
+staggie
+staggy
+staghead
+staghorn
+staghound
+staghunt
+staghunter
+staghunting
+stagiary
+stagily
+staginess
+staging
+Stagirite
+Stagiritic
+staglike
+stagmometer
+stagnance
+stagnancy
+stagnant
+stagnantly
+stagnantness
+stagnate
+stagnation
+stagnatory
+stagnature
+stagnicolous
+stagnize
+stagnum
+Stagonospora
+stagskin
+stagworm
+stagy
+Stahlhelm
+Stahlhelmer
+Stahlhelmist
+Stahlian
+Stahlianism
+Stahlism
+staia
+staid
+staidly
+staidness
+stain
+stainability
+stainable
+stainableness
+stainably
+stainer
+stainful
+stainierite
+staining
+stainless
+stainlessly
+stainlessness
+stainproof
+staio
+stair
+stairbeak
+stairbuilder
+stairbuilding
+staircase
+staired
+stairhead
+stairless
+stairlike
+stairstep
+stairway
+stairwise
+stairwork
+stairy
+staith
+staithman
+staiver
+stake
+stakehead
+stakeholder
+stakemaster
+staker
+stakerope
+Stakhanovism
+Stakhanovite
+stalactic
+stalactical
+stalactiform
+stalactital
+stalactite
+stalactited
+stalactitic
+stalactitical
+stalactitically
+stalactitiform
+stalactitious
+stalagma
+stalagmite
+stalagmitic
+stalagmitical
+stalagmitically
+stalagmometer
+stalagmometric
+stalagmometry
+stale
+stalely
+stalemate
+staleness
+staling
+Stalinism
+Stalinist
+Stalinite
+stalk
+stalkable
+stalked
+stalker
+stalkily
+stalkiness
+stalking
+stalkingly
+stalkless
+stalklet
+stalklike
+stalko
+stalky
+stall
+stallage
+stallar
+stallboard
+stallenger
+staller
+stallership
+stalling
+stallion
+stallionize
+stallman
+stallment
+stalwart
+stalwartism
+stalwartize
+stalwartly
+stalwartness
+stam
+stambha
+stambouline
+stamen
+stamened
+stamin
+stamina
+staminal
+staminate
+stamineal
+stamineous
+staminiferous
+staminigerous
+staminode
+staminodium
+staminody
+stammel
+stammer
+stammerer
+stammering
+stammeringly
+stammeringness
+stammerwort
+stamnos
+stamp
+stampable
+stampage
+stampedable
+stampede
+stampeder
+stampedingly
+stampee
+stamper
+stampery
+stamphead
+Stampian
+stamping
+stample
+stampless
+stampman
+stampsman
+stampweed
+Stan
+stance
+stanch
+stanchable
+stanchel
+stancheled
+stancher
+stanchion
+stanchless
+stanchly
+stanchness
+stand
+standage
+standard
+standardbred
+standardizable
+standardization
+standardize
+standardized
+standardizer
+standardwise
+standee
+standel
+standelwelks
+standelwort
+stander
+standergrass
+standerwort
+standfast
+standing
+standish
+standoff
+standoffish
+standoffishness
+standout
+standpat
+standpatism
+standpatter
+standpipe
+standpoint
+standpost
+standstill
+stane
+stanechat
+stang
+Stangeria
+stanhope
+Stanhopea
+stanine
+Stanislaw
+stanjen
+stank
+stankie
+Stanley
+Stanly
+stannane
+stannary
+stannate
+stannator
+stannel
+stanner
+stannery
+stannic
+stannide
+stanniferous
+stannite
+stanno
+stannotype
+stannous
+stannoxyl
+stannum
+stannyl
+stanza
+stanzaed
+stanzaic
+stanzaical
+stanzaically
+stanze
+stap
+stapedectomy
+stapedial
+stapediform
+stapediovestibular
+stapedius
+Stapelia
+stapelia
+stapes
+staphisagria
+staphyle
+Staphylea
+Staphyleaceae
+staphyleaceous
+staphylectomy
+staphyledema
+staphylematoma
+staphylic
+staphyline
+staphylinic
+staphylinid
+Staphylinidae
+staphylinideous
+Staphylinoidea
+Staphylinus
+staphylion
+staphylitis
+staphyloangina
+staphylococcal
+staphylococci
+staphylococcic
+Staphylococcus
+staphylococcus
+staphylodermatitis
+staphylodialysis
+staphyloedema
+staphylohemia
+staphylolysin
+staphyloma
+staphylomatic
+staphylomatous
+staphylomycosis
+staphyloncus
+staphyloplastic
+staphyloplasty
+staphyloptosia
+staphyloptosis
+staphyloraphic
+staphylorrhaphic
+staphylorrhaphy
+staphyloschisis
+staphylosis
+staphylotome
+staphylotomy
+staphylotoxin
+staple
+stapled
+stapler
+staplewise
+stapling
+Star
+star
+starblind
+starbloom
+starboard
+starbolins
+starbright
+Starbuck
+starch
+starchboard
+starched
+starchedly
+starchedness
+starcher
+starchflower
+starchily
+starchiness
+starchless
+starchlike
+starchly
+starchmaker
+starchmaking
+starchman
+starchness
+starchroot
+starchworks
+starchwort
+starchy
+starcraft
+stardom
+stare
+staree
+starer
+starets
+starfish
+starflower
+starfruit
+starful
+stargaze
+stargazer
+stargazing
+staring
+staringly
+stark
+starken
+starkly
+starkness
+starky
+starless
+starlessly
+starlessness
+starlet
+starlight
+starlighted
+starlights
+starlike
+starling
+starlit
+starlite
+starlitten
+starmonger
+starn
+starnel
+starnie
+starnose
+Staroobriadtsi
+starost
+starosta
+starosty
+starred
+starrily
+starriness
+starring
+starringly
+starry
+starshake
+starshine
+starship
+starshoot
+starshot
+starstone
+starstroke
+start
+starter
+startful
+startfulness
+starthroat
+starting
+startingly
+startish
+startle
+startler
+startling
+startlingly
+startlingness
+startlish
+startlishness
+startly
+startor
+starty
+starvation
+starve
+starveacre
+starved
+starvedly
+starveling
+starver
+starvy
+starward
+starwise
+starworm
+starwort
+stary
+stases
+stash
+stashie
+stasidion
+stasimetric
+stasimon
+stasimorphy
+stasiphobia
+stasis
+stassfurtite
+statable
+statal
+statant
+statcoulomb
+State
+state
+statecraft
+stated
+statedly
+stateful
+statefully
+statefulness
+statehood
+Statehouse
+stateless
+statelet
+statelich
+statelily
+stateliness
+stately
+statement
+statemonger
+statequake
+stater
+stateroom
+statesboy
+stateside
+statesider
+statesman
+statesmanese
+statesmanlike
+statesmanly
+statesmanship
+statesmonger
+stateswoman
+stateway
+statfarad
+stathmoi
+stathmos
+static
+statical
+statically
+Statice
+staticproof
+statics
+station
+stational
+stationarily
+stationariness
+stationary
+stationer
+stationery
+stationman
+stationmaster
+statiscope
+statism
+statist
+statistic
+statistical
+statistically
+statistician
+statisticize
+statistics
+statistology
+stative
+statoblast
+statocracy
+statocyst
+statolatry
+statolith
+statolithic
+statometer
+stator
+statoreceptor
+statorhab
+statoscope
+statospore
+statuarism
+statuarist
+statuary
+statue
+statuecraft
+statued
+statueless
+statuelike
+statuesque
+statuesquely
+statuesqueness
+statuette
+stature
+statured
+status
+statutable
+statutableness
+statutably
+statutary
+statute
+statutorily
+statutory
+statvolt
+staucher
+stauk
+staumer
+staun
+staunch
+staunchable
+staunchly
+staunchness
+staup
+stauracin
+stauraxonia
+stauraxonial
+staurion
+staurolatry
+staurolite
+staurolitic
+staurology
+Stauromedusae
+stauromedusan
+stauropegial
+stauropegion
+stauroscope
+stauroscopic
+stauroscopically
+staurotide
+stauter
+stave
+staveable
+staveless
+staver
+stavers
+staverwort
+stavesacre
+stavewise
+stavewood
+staving
+stavrite
+staw
+stawn
+staxis
+stay
+stayable
+stayed
+stayer
+staylace
+stayless
+staylessness
+staymaker
+staymaking
+staynil
+stays
+staysail
+stayship
+stchi
+stead
+steadfast
+steadfastly
+steadfastness
+steadier
+steadily
+steadiment
+steadiness
+steading
+steadman
+steady
+steadying
+steadyingly
+steadyish
+steak
+steal
+stealability
+stealable
+stealage
+stealed
+stealer
+stealing
+stealingly
+stealth
+stealthful
+stealthfully
+stealthily
+stealthiness
+stealthless
+stealthlike
+stealthwise
+stealthy
+stealy
+steam
+steamboat
+steamboating
+steamboatman
+steamcar
+steamer
+steamerful
+steamerless
+steamerload
+steamily
+steaminess
+steaming
+steamless
+steamlike
+steampipe
+steamproof
+steamship
+steamtight
+steamtightness
+steamy
+stean
+steaning
+steapsin
+stearate
+stearic
+steariform
+stearin
+stearolactone
+stearone
+stearoptene
+stearrhea
+stearyl
+steatin
+steatite
+steatitic
+steatocele
+steatogenous
+steatolysis
+steatolytic
+steatoma
+steatomatous
+steatopathic
+steatopyga
+steatopygia
+steatopygic
+steatopygous
+Steatornis
+Steatornithes
+Steatornithidae
+steatorrhea
+steatosis
+stech
+stechados
+steckling
+steddle
+Stedman
+steed
+steedless
+steedlike
+steek
+steekkan
+steekkannen
+steel
+Steelboy
+steeler
+steelhead
+steelhearted
+steelification
+steelify
+steeliness
+steeling
+steelless
+steellike
+steelmaker
+steelmaking
+steelproof
+steelware
+steelwork
+steelworker
+steelworks
+steely
+steelyard
+Steen
+steen
+steenboc
+steenbock
+steenbok
+Steenie
+steenkirk
+steenstrupine
+steenth
+steep
+steepdown
+steepen
+steeper
+steepgrass
+steepish
+steeple
+steeplebush
+steeplechase
+steeplechaser
+steeplechasing
+steepled
+steepleless
+steeplelike
+steepletop
+steeply
+steepness
+steepweed
+steepwort
+steepy
+steer
+steerability
+steerable
+steerage
+steerageway
+steerer
+steering
+steeringly
+steerling
+steerman
+steermanship
+steersman
+steerswoman
+steeve
+steevely
+steever
+steeving
+Stefan
+steg
+steganogram
+steganographical
+steganographist
+steganography
+Steganophthalmata
+steganophthalmate
+steganophthalmatous
+Steganophthalmia
+steganopod
+steganopodan
+Steganopodes
+steganopodous
+stegnosis
+stegnotic
+stegocarpous
+Stegocephalia
+stegocephalian
+stegocephalous
+Stegodon
+stegodont
+stegodontine
+Stegomus
+Stegomyia
+stegosaur
+Stegosauria
+stegosaurian
+stegosauroid
+Stegosaurus
+steid
+steigh
+Stein
+stein
+Steinberger
+steinbok
+Steinerian
+steinful
+steinkirk
+Steironema
+stekan
+stela
+stelae
+stelai
+stelar
+stele
+stell
+Stella
+stella
+stellar
+Stellaria
+stellary
+stellate
+stellated
+stellately
+stellature
+stelleridean
+stellerine
+stelliferous
+stellification
+stelliform
+stellify
+stelling
+stellionate
+stelliscript
+Stellite
+stellite
+stellular
+stellularly
+stellulate
+stelography
+stem
+stema
+stemhead
+stemless
+stemlet
+stemlike
+stemma
+stemmata
+stemmatiform
+stemmatous
+stemmed
+stemmer
+stemmery
+stemming
+stemmy
+Stemona
+Stemonaceae
+stemonaceous
+stemple
+stempost
+stemson
+stemwards
+stemware
+sten
+stenar
+stench
+stenchel
+stenchful
+stenching
+stenchion
+stenchy
+stencil
+stenciler
+stencilmaker
+stencilmaking
+stend
+steng
+stengah
+stenion
+steno
+stenobathic
+stenobenthic
+stenobragmatic
+stenobregma
+stenocardia
+stenocardiac
+Stenocarpus
+stenocephalia
+stenocephalic
+stenocephalous
+stenocephaly
+stenochoria
+stenochrome
+stenochromy
+stenocoriasis
+stenocranial
+stenocrotaphia
+Stenofiber
+stenog
+stenogastric
+stenogastry
+Stenoglossa
+stenograph
+stenographer
+stenographic
+stenographical
+stenographically
+stenographist
+stenography
+stenohaline
+stenometer
+stenopaic
+Stenopelmatidae
+stenopetalous
+stenophile
+Stenophragma
+stenophyllous
+stenorhyncous
+stenosed
+stenosepalous
+stenosis
+stenosphere
+stenostomatous
+stenostomia
+Stenotaphrum
+stenotelegraphy
+stenothermal
+stenothorax
+stenotic
+stenotype
+stenotypic
+stenotypist
+stenotypy
+stent
+stenter
+stenterer
+stenton
+Stentor
+stentorian
+stentorianly
+stentorine
+stentorious
+stentoriously
+stentoriousness
+stentoronic
+stentorophonic
+stentrel
+step
+stepaunt
+stepbairn
+stepbrother
+stepbrotherhood
+stepchild
+stepdame
+stepdaughter
+stepfather
+stepfatherhood
+stepfatherly
+stepgrandchild
+stepgrandfather
+stepgrandmother
+stepgrandson
+Stephan
+Stephana
+stephane
+stephanial
+Stephanian
+stephanic
+Stephanie
+stephanion
+stephanite
+Stephanoceros
+Stephanokontae
+stephanome
+stephanos
+Stephanotis
+stephanotis
+Stephanurus
+Stephe
+Stephen
+stepladder
+stepless
+steplike
+stepminnie
+stepmother
+stepmotherhood
+stepmotherless
+stepmotherliness
+stepmotherly
+stepnephew
+stepniece
+stepparent
+steppe
+stepped
+steppeland
+stepper
+stepping
+steppingstone
+steprelation
+steprelationship
+stepsire
+stepsister
+stepson
+stepstone
+stept
+stepuncle
+stepway
+stepwise
+steradian
+stercobilin
+stercolin
+stercophagic
+stercophagous
+stercoraceous
+stercoral
+Stercoranism
+Stercoranist
+Stercorariidae
+Stercorariinae
+stercorarious
+Stercorarius
+stercorary
+stercorate
+stercoration
+stercorean
+stercoremia
+stercoreous
+Stercorianism
+stercoricolous
+Stercorist
+stercorite
+stercorol
+stercorous
+stercovorous
+Sterculia
+Sterculiaceae
+sterculiaceous
+sterculiad
+stere
+stereagnosis
+Sterelmintha
+sterelminthic
+sterelminthous
+stereo
+stereobate
+stereobatic
+stereoblastula
+stereocamera
+stereocampimeter
+stereochemic
+stereochemical
+stereochemically
+stereochemistry
+stereochromatic
+stereochromatically
+stereochrome
+stereochromic
+stereochromically
+stereochromy
+stereocomparagraph
+stereocomparator
+stereoelectric
+stereofluoroscopic
+stereofluoroscopy
+stereogastrula
+stereognosis
+stereognostic
+stereogoniometer
+stereogram
+stereograph
+stereographer
+stereographic
+stereographical
+stereographically
+stereography
+stereoisomer
+stereoisomeric
+stereoisomerical
+stereoisomeride
+stereoisomerism
+stereomatrix
+stereome
+stereomer
+stereomeric
+stereomerical
+stereomerism
+stereometer
+stereometric
+stereometrical
+stereometrically
+stereometry
+stereomicrometer
+stereomonoscope
+stereoneural
+stereophantascope
+stereophonic
+stereophony
+stereophotogrammetry
+stereophotograph
+stereophotographic
+stereophotography
+stereophotomicrograph
+stereophotomicrography
+stereophysics
+stereopicture
+stereoplanigraph
+stereoplanula
+stereoplasm
+stereoplasma
+stereoplasmic
+stereopsis
+stereoptician
+stereopticon
+stereoradiograph
+stereoradiography
+Stereornithes
+stereornithic
+stereoroentgenogram
+stereoroentgenography
+stereoscope
+stereoscopic
+stereoscopically
+stereoscopism
+stereoscopist
+stereoscopy
+Stereospondyli
+stereospondylous
+stereostatic
+stereostatics
+stereotactic
+stereotactically
+stereotaxis
+stereotelemeter
+stereotelescope
+stereotomic
+stereotomical
+stereotomist
+stereotomy
+stereotropic
+stereotropism
+stereotypable
+stereotype
+stereotyped
+stereotyper
+stereotypery
+stereotypic
+stereotypical
+stereotyping
+stereotypist
+stereotypographer
+stereotypography
+stereotypy
+Stereum
+sterhydraulic
+steri
+steric
+sterically
+sterics
+steride
+sterigma
+sterigmata
+sterigmatic
+sterile
+sterilely
+sterileness
+sterilisable
+sterility
+sterilizability
+sterilizable
+sterilization
+sterilize
+sterilizer
+sterin
+sterk
+sterlet
+Sterling
+sterling
+sterlingly
+sterlingness
+Stern
+stern
+Sterna
+sterna
+sternad
+sternage
+sternal
+sternalis
+sternbergite
+sterncastle
+sterneber
+sternebra
+sternebrae
+sternebral
+sterned
+sternforemost
+Sterninae
+sternite
+sternitic
+sternly
+sternman
+sternmost
+sternness
+Sterno
+sternoclavicular
+sternocleidomastoid
+sternoclidomastoid
+sternocoracoid
+sternocostal
+sternofacial
+sternofacialis
+sternoglossal
+sternohumeral
+sternohyoid
+sternohyoidean
+sternomancy
+sternomastoid
+sternomaxillary
+sternonuchal
+sternopericardiac
+sternopericardial
+sternoscapular
+sternothere
+Sternotherus
+sternothyroid
+sternotracheal
+sternotribe
+sternovertebral
+sternoxiphoid
+sternpost
+sternson
+sternum
+sternutation
+sternutative
+sternutator
+sternutatory
+sternward
+sternway
+sternways
+sternworks
+stero
+steroid
+sterol
+Sterope
+sterrinck
+stert
+stertor
+stertorious
+stertoriously
+stertoriousness
+stertorous
+stertorously
+stertorousness
+sterve
+Stesichorean
+stet
+stetch
+stetharteritis
+stethogoniometer
+stethograph
+stethographic
+stethokyrtograph
+stethometer
+stethometric
+stethometry
+stethoparalysis
+stethophone
+stethophonometer
+stethoscope
+stethoscopic
+stethoscopical
+stethoscopically
+stethoscopist
+stethoscopy
+stethospasm
+Stevan
+Steve
+stevedorage
+stevedore
+stevedoring
+stevel
+Steven
+steven
+Stevensonian
+Stevensoniana
+Stevia
+stevia
+stew
+stewable
+steward
+stewardess
+stewardly
+stewardry
+stewardship
+Stewart
+Stewartia
+stewartry
+stewarty
+stewed
+stewpan
+stewpond
+stewpot
+stewy
+stey
+sthenia
+sthenic
+sthenochire
+stib
+stibbler
+stibblerig
+stibethyl
+stibial
+stibialism
+stibiate
+stibiated
+stibic
+stibiconite
+stibine
+stibious
+stibium
+stibnite
+stibonium
+sticcado
+stich
+sticharion
+sticheron
+stichic
+stichically
+stichid
+stichidium
+stichomancy
+stichometric
+stichometrical
+stichometrically
+stichometry
+stichomythic
+stichomythy
+stick
+stickability
+stickable
+stickadore
+stickadove
+stickage
+stickball
+sticked
+sticker
+stickers
+stickfast
+stickful
+stickily
+stickiness
+sticking
+stickit
+stickle
+stickleaf
+stickleback
+stickler
+stickless
+sticklike
+stickling
+stickly
+stickpin
+sticks
+stickseed
+sticksmanship
+sticktail
+sticktight
+stickum
+stickwater
+stickweed
+stickwork
+sticky
+Sticta
+Stictaceae
+Stictidaceae
+stictiform
+Stictis
+stid
+stiddy
+stife
+stiff
+stiffen
+stiffener
+stiffening
+stiffhearted
+stiffish
+stiffleg
+stifflike
+stiffly
+stiffneck
+stiffness
+stiffrump
+stifftail
+stifle
+stifledly
+stifler
+stifling
+stiflingly
+stigma
+stigmai
+stigmal
+stigmaria
+stigmarian
+stigmarioid
+stigmasterol
+stigmata
+stigmatal
+stigmatic
+stigmatical
+stigmatically
+stigmaticalness
+stigmatiferous
+stigmatiform
+stigmatism
+stigmatist
+stigmatization
+stigmatize
+stigmatizer
+stigmatoid
+stigmatose
+stigme
+stigmeology
+stigmonose
+stigonomancy
+Stikine
+Stilbaceae
+Stilbella
+stilbene
+stilbestrol
+stilbite
+stilboestrol
+Stilbum
+stile
+stileman
+stilet
+stiletto
+stilettolike
+still
+stillage
+stillatitious
+stillatory
+stillbirth
+stillborn
+stiller
+stillhouse
+stillicide
+stillicidium
+stilliform
+stilling
+Stillingia
+stillion
+stillish
+stillman
+stillness
+stillroom
+stillstand
+Stillwater
+stilly
+Stilophora
+Stilophoraceae
+stilpnomelane
+stilpnosiderite
+stilt
+stiltbird
+stilted
+stilter
+stiltify
+stiltiness
+stiltish
+stiltlike
+Stilton
+stilty
+stim
+stime
+stimpart
+stimpert
+stimulability
+stimulable
+stimulance
+stimulancy
+stimulant
+stimulate
+stimulatingly
+stimulation
+stimulative
+stimulator
+stimulatory
+stimulatress
+stimulatrix
+stimuli
+stimulogenous
+stimulus
+stimy
+stine
+sting
+stingaree
+stingareeing
+stingbull
+stinge
+stinger
+stingfish
+stingily
+stinginess
+stinging
+stingingly
+stingingness
+stingless
+stingo
+stingproof
+stingray
+stingtail
+stingy
+stink
+stinkard
+stinkardly
+stinkball
+stinkberry
+stinkbird
+stinkbug
+stinkbush
+stinkdamp
+stinker
+stinkhorn
+stinking
+stinkingly
+stinkingness
+stinkpot
+stinkstone
+stinkweed
+stinkwood
+stinkwort
+stint
+stinted
+stintedly
+stintedness
+stinter
+stintingly
+stintless
+stinty
+stion
+stionic
+Stipa
+stipe
+stiped
+stipel
+stipellate
+stipend
+stipendial
+stipendiarian
+stipendiary
+stipendiate
+stipendium
+stipendless
+stipes
+stipiform
+stipitate
+stipitiform
+stipiture
+Stipiturus
+stippen
+stipple
+stippled
+stippler
+stippling
+stipply
+stipula
+stipulable
+stipulaceous
+stipulae
+stipular
+stipulary
+stipulate
+stipulation
+stipulator
+stipulatory
+stipule
+stipuled
+stipuliferous
+stipuliform
+stir
+stirabout
+stirk
+stirless
+stirlessly
+stirlessness
+stirp
+stirpicultural
+stirpiculture
+stirpiculturist
+stirps
+stirra
+stirrable
+stirrage
+stirrer
+stirring
+stirringly
+stirrup
+stirrupless
+stirruplike
+stirrupwise
+stitch
+stitchbird
+stitchdown
+stitcher
+stitchery
+stitching
+stitchlike
+stitchwhile
+stitchwork
+stitchwort
+stite
+stith
+stithy
+stive
+stiver
+stivy
+Stizolobium
+stoa
+stoach
+stoat
+stoater
+stob
+stocah
+stoccado
+stoccata
+stochastic
+stochastical
+stochastically
+stock
+stockade
+stockannet
+stockbow
+stockbreeder
+stockbreeding
+Stockbridge
+stockbroker
+stockbrokerage
+stockbroking
+stockcar
+stocker
+stockfather
+stockfish
+stockholder
+stockholding
+stockhouse
+stockily
+stockiness
+stockinet
+stocking
+stockinger
+stockingless
+stockish
+stockishly
+stockishness
+stockjobber
+stockjobbery
+stockjobbing
+stockjudging
+stockkeeper
+stockkeeping
+stockless
+stocklike
+stockmaker
+stockmaking
+stockman
+stockowner
+stockpile
+stockpot
+stockproof
+stockrider
+stockriding
+stocks
+stockstone
+stocktaker
+stocktaking
+Stockton
+stockwork
+stockwright
+stocky
+stockyard
+stod
+stodge
+stodger
+stodgery
+stodgily
+stodginess
+stodgy
+stoechas
+stoep
+stof
+stoff
+stog
+stoga
+stogie
+stogy
+Stoic
+stoic
+stoical
+stoically
+stoicalness
+stoicharion
+stoichiological
+stoichiology
+stoichiometric
+stoichiometrical
+stoichiometrically
+stoichiometry
+Stoicism
+stoicism
+Stokavci
+Stokavian
+Stokavski
+stoke
+stokehold
+stokehole
+stoker
+stokerless
+Stokesia
+stokesite
+stola
+stolae
+stole
+stoled
+stolelike
+stolen
+stolenly
+stolenness
+stolenwise
+stolewise
+stolid
+stolidity
+stolidly
+stolidness
+stolist
+stolkjaerre
+stollen
+stolon
+stolonate
+stoloniferous
+stoloniferously
+stolonlike
+stolzite
+stoma
+stomacace
+stomach
+stomachable
+stomachal
+stomacher
+stomachful
+stomachfully
+stomachfulness
+stomachic
+stomachically
+stomachicness
+stomaching
+stomachless
+stomachlessness
+stomachy
+stomapod
+Stomapoda
+stomapodiform
+stomapodous
+stomata
+stomatal
+stomatalgia
+stomate
+stomatic
+stomatiferous
+stomatitic
+stomatitis
+stomatocace
+Stomatoda
+stomatodaeal
+stomatodaeum
+stomatode
+stomatodeum
+stomatodynia
+stomatogastric
+stomatograph
+stomatography
+stomatolalia
+stomatologic
+stomatological
+stomatologist
+stomatology
+stomatomalacia
+stomatomenia
+stomatomy
+stomatomycosis
+stomatonecrosis
+stomatopathy
+Stomatophora
+stomatophorous
+stomatoplastic
+stomatoplasty
+stomatopod
+Stomatopoda
+stomatopodous
+stomatorrhagia
+stomatoscope
+stomatoscopy
+stomatose
+stomatosepsis
+stomatotomy
+stomatotyphus
+stomatous
+stomenorrhagia
+stomium
+stomodaea
+stomodaeal
+stomodaeum
+Stomoisia
+stomoxys
+stomp
+stomper
+stonable
+stond
+Stone
+stone
+stoneable
+stonebird
+stonebiter
+stoneboat
+stonebow
+stonebrash
+stonebreak
+stonebrood
+stonecast
+stonechat
+stonecraft
+stonecrop
+stonecutter
+stoned
+stonedamp
+stonefish
+stonegale
+stonegall
+stonehand
+stonehatch
+stonehead
+stonehearted
+Stonehenge
+stonelayer
+stonelaying
+stoneless
+stonelessness
+stonelike
+stoneman
+stonemason
+stonemasonry
+stonen
+stonepecker
+stoner
+stoneroot
+stoneseed
+stoneshot
+stonesmatch
+stonesmich
+stonesmitch
+stonesmith
+stonewall
+stonewaller
+stonewally
+stoneware
+stoneweed
+stonewise
+stonewood
+stonework
+stoneworker
+stonewort
+stoneyard
+stong
+stonied
+stonifiable
+stonify
+stonily
+stoniness
+stoning
+stonish
+stonishment
+stonker
+stony
+stonyhearted
+stonyheartedly
+stonyheartedness
+stood
+stooded
+stooden
+stoof
+stooge
+stook
+stooker
+stookie
+stool
+stoolball
+stoollike
+stoon
+stoond
+stoop
+stooper
+stoopgallant
+stooping
+stoopingly
+stoory
+stoot
+stoothing
+stop
+stopa
+stopback
+stopblock
+stopboard
+stopcock
+stope
+stoper
+stopgap
+stophound
+stoping
+stopless
+stoplessness
+stopover
+stoppability
+stoppable
+stoppableness
+stoppably
+stoppage
+stopped
+stopper
+stopperless
+stoppeur
+stopping
+stoppit
+stopple
+stopwater
+stopwork
+storable
+storage
+storax
+store
+storeen
+storehouse
+storehouseman
+storekeep
+storekeeper
+storekeeping
+storeman
+storer
+storeroom
+storeship
+storesman
+storge
+storiate
+storiation
+storied
+storier
+storiette
+storify
+storiological
+storiologist
+storiology
+stork
+storken
+storkish
+storklike
+storkling
+storkwise
+storm
+stormable
+Stormberg
+stormbird
+stormbound
+stormcock
+stormer
+stormful
+stormfully
+stormfulness
+stormily
+storminess
+storming
+stormingly
+stormish
+stormless
+stormlessness
+stormlike
+stormproof
+stormward
+stormwind
+stormwise
+stormy
+Storting
+story
+storybook
+storyless
+storymaker
+storymonger
+storyteller
+storytelling
+storywise
+storywork
+stosh
+stoss
+stosston
+stot
+stotinka
+stotter
+stotterel
+stoun
+stound
+stoundmeal
+stoup
+stoupful
+stour
+stouring
+stourliness
+stourness
+stoury
+stoush
+stout
+stouten
+stouth
+stouthearted
+stoutheartedly
+stoutheartedness
+stoutish
+stoutly
+stoutness
+stoutwood
+stouty
+stove
+stovebrush
+stoveful
+stovehouse
+stoveless
+stovemaker
+stovemaking
+stoveman
+stoven
+stovepipe
+stover
+stovewood
+stow
+stowable
+stowage
+stowaway
+stowbord
+stowbordman
+stowce
+stowdown
+stower
+stowing
+stownlins
+stowwood
+stra
+strabism
+strabismal
+strabismally
+strabismic
+strabismical
+strabismometer
+strabismometry
+strabismus
+strabometer
+strabometry
+strabotome
+strabotomy
+strack
+strackling
+stract
+Strad
+strad
+stradametrical
+straddle
+straddleback
+straddlebug
+straddler
+straddleways
+straddlewise
+straddling
+straddlingly
+strade
+stradine
+stradiot
+Stradivari
+Stradivarius
+stradl
+stradld
+stradlings
+strae
+strafe
+strafer
+Straffordian
+strag
+straggle
+straggler
+straggling
+stragglingly
+straggly
+stragular
+stragulum
+straight
+straightabout
+straightaway
+straightedge
+straighten
+straightener
+straightforward
+straightforwardly
+straightforwardness
+straightforwards
+straighthead
+straightish
+straightly
+straightness
+straighttail
+straightup
+straightwards
+straightway
+straightways
+straightwise
+straik
+strain
+strainable
+strainableness
+strainably
+strained
+strainedly
+strainedness
+strainer
+strainerman
+straining
+strainingly
+strainless
+strainlessly
+strainproof
+strainslip
+straint
+strait
+straiten
+straitlacedness
+straitlacing
+straitly
+straitness
+straitsman
+straitwork
+Straka
+strake
+straked
+straky
+stram
+stramash
+stramazon
+stramineous
+stramineously
+strammel
+strammer
+stramonium
+stramony
+stramp
+strand
+strandage
+strander
+stranding
+strandless
+strandward
+strang
+strange
+strangeling
+strangely
+strangeness
+stranger
+strangerdom
+strangerhood
+strangerlike
+strangership
+strangerwise
+strangle
+strangleable
+stranglement
+strangler
+strangles
+strangletare
+strangleweed
+strangling
+stranglingly
+strangulable
+strangulate
+strangulation
+strangulative
+strangulatory
+strangullion
+strangurious
+strangury
+stranner
+strany
+strap
+straphang
+straphanger
+straphead
+strapless
+straplike
+strappable
+strappado
+strappan
+strapped
+strapper
+strapping
+strapple
+strapwork
+strapwort
+strass
+strata
+stratagem
+stratagematic
+stratagematical
+stratagematically
+stratagematist
+stratagemical
+stratagemically
+stratal
+stratameter
+stratege
+strategetic
+strategetics
+strategi
+strategian
+strategic
+strategical
+strategically
+strategics
+strategist
+strategize
+strategos
+strategy
+Stratfordian
+strath
+strathspey
+strati
+stratic
+straticulate
+straticulation
+stratification
+stratified
+stratiform
+stratify
+stratigrapher
+stratigraphic
+stratigraphical
+stratigraphically
+stratigraphist
+stratigraphy
+Stratiomyiidae
+Stratiotes
+stratlin
+stratochamber
+stratocracy
+stratocrat
+stratocratic
+stratographic
+stratographical
+stratographically
+stratography
+stratonic
+Stratonical
+stratopedarch
+stratoplane
+stratose
+stratosphere
+stratospheric
+stratospherical
+stratotrainer
+stratous
+stratum
+stratus
+straucht
+strauchten
+stravage
+strave
+straw
+strawberry
+strawberrylike
+strawbill
+strawboard
+strawbreadth
+strawen
+strawer
+strawflower
+strawfork
+strawless
+strawlike
+strawman
+strawmote
+strawsmall
+strawsmear
+strawstack
+strawstacker
+strawwalker
+strawwork
+strawworm
+strawy
+strawyard
+stray
+strayaway
+strayer
+strayling
+stre
+streahte
+streak
+streaked
+streakedly
+streakedness
+streaker
+streakily
+streakiness
+streaklike
+streakwise
+streaky
+stream
+streamer
+streamful
+streamhead
+streaminess
+streaming
+streamingly
+streamless
+streamlet
+streamlike
+streamline
+streamlined
+streamliner
+streamling
+streamside
+streamward
+streamway
+streamwort
+streamy
+streck
+streckly
+stree
+streek
+streel
+streeler
+streen
+streep
+street
+streetage
+streetcar
+streetful
+streetless
+streetlet
+streetlike
+streets
+streetside
+streetwalker
+streetwalking
+streetward
+streetway
+streetwise
+streite
+streke
+Strelitz
+Strelitzi
+strelitzi
+Strelitzia
+Streltzi
+streltzi
+stremma
+stremmatograph
+streng
+strengite
+strength
+strengthen
+strengthener
+strengthening
+strengtheningly
+strengthful
+strengthfulness
+strengthily
+strengthless
+strengthlessly
+strengthlessness
+strengthy
+strent
+strenth
+strenuity
+strenuosity
+strenuous
+strenuously
+strenuousness
+strepen
+strepent
+strepera
+streperous
+strephonade
+strephosymbolia
+strepitant
+strepitantly
+strepitation
+strepitous
+strepor
+Strepsiceros
+strepsiceros
+strepsinema
+Strepsiptera
+strepsipteral
+strepsipteran
+strepsipteron
+strepsipterous
+strepsis
+strepsitene
+streptaster
+streptobacilli
+streptobacillus
+Streptocarpus
+streptococcal
+streptococci
+streptococcic
+Streptococcus
+streptococcus
+streptolysin
+Streptomyces
+streptomycin
+Streptoneura
+streptoneural
+streptoneurous
+streptosepticemia
+streptothricial
+streptothricin
+streptothricosis
+Streptothrix
+streptotrichal
+streptotrichosis
+stress
+stresser
+stressful
+stressfully
+stressless
+stresslessness
+stret
+stretch
+stretchable
+stretchberry
+stretcher
+stretcherman
+stretchiness
+stretchneck
+stretchproof
+stretchy
+stretman
+strette
+stretti
+stretto
+strew
+strewage
+strewer
+strewment
+strewn
+strey
+streyne
+stria
+striae
+strial
+Striaria
+Striariaceae
+striatal
+striate
+striated
+striation
+striatum
+striature
+strich
+striche
+strick
+stricken
+strickenly
+strickenness
+stricker
+strickle
+strickler
+strickless
+strict
+striction
+strictish
+strictly
+strictness
+stricture
+strictured
+strid
+stridden
+striddle
+stride
+strideleg
+stridelegs
+stridence
+stridency
+strident
+stridently
+strider
+strideways
+stridhan
+stridhana
+stridhanum
+stridingly
+stridling
+stridlins
+stridor
+stridulant
+stridulate
+stridulation
+stridulator
+stridulatory
+stridulent
+stridulous
+stridulously
+stridulousness
+strife
+strifeful
+strifeless
+strifemaker
+strifemaking
+strifemonger
+strifeproof
+striffen
+strig
+Striga
+striga
+strigae
+strigal
+strigate
+Striges
+striggle
+stright
+Strigidae
+Strigiformes
+strigil
+strigilate
+strigilation
+strigilator
+strigiles
+strigilis
+strigillose
+strigilous
+Striginae
+strigine
+strigose
+strigous
+strigovite
+Strigula
+Strigulaceae
+strigulose
+strike
+strikeboat
+strikebreaker
+strikebreaking
+strikeless
+striker
+striking
+strikingly
+strikingness
+strind
+string
+stringboard
+stringcourse
+stringed
+stringency
+stringene
+stringent
+stringently
+stringentness
+stringer
+stringful
+stringhalt
+stringhalted
+stringhaltedness
+stringiness
+stringing
+stringless
+stringlike
+stringmaker
+stringmaking
+stringman
+stringpiece
+stringsman
+stringways
+stringwood
+stringy
+stringybark
+strinkle
+striola
+striolae
+striolate
+striolated
+striolet
+strip
+stripe
+striped
+stripeless
+striper
+striplet
+stripling
+strippage
+stripped
+stripper
+stripping
+strippit
+strippler
+stript
+stripy
+strit
+strive
+strived
+striven
+striver
+striving
+strivingly
+Strix
+strix
+stroam
+strobic
+strobila
+strobilaceous
+strobilae
+strobilate
+strobilation
+strobile
+strobili
+strobiliferous
+strobiliform
+strobiline
+strobilization
+strobiloid
+Strobilomyces
+Strobilophyta
+strobilus
+stroboscope
+stroboscopic
+stroboscopical
+stroboscopy
+strobotron
+strockle
+stroddle
+strode
+stroil
+stroke
+stroker
+strokesman
+stroking
+stroky
+strold
+stroll
+strolld
+stroller
+strom
+stroma
+stromal
+stromata
+Stromateidae
+stromateoid
+stromatic
+stromatiform
+stromatology
+Stromatopora
+Stromatoporidae
+stromatoporoid
+Stromatoporoidea
+stromatous
+stromb
+Strombidae
+strombiform
+strombite
+stromboid
+strombolian
+strombuliferous
+strombuliform
+Strombus
+strome
+stromeyerite
+stromming
+strone
+strong
+strongback
+strongbark
+strongbox
+strongbrained
+strongfully
+stronghand
+stronghead
+strongheadedly
+strongheadedness
+stronghearted
+stronghold
+strongish
+stronglike
+strongly
+strongness
+strongylate
+strongyle
+strongyliasis
+strongylid
+Strongylidae
+strongylidosis
+strongyloid
+Strongyloides
+strongyloidosis
+strongylon
+Strongyloplasmata
+Strongylosis
+strongylosis
+Strongylus
+strontia
+strontian
+strontianiferous
+strontianite
+strontic
+strontion
+strontitic
+strontium
+strook
+strooken
+stroot
+strop
+strophaic
+strophanhin
+Strophanthus
+Stropharia
+strophe
+strophic
+strophical
+strophically
+strophiolate
+strophiolated
+strophiole
+strophoid
+Strophomena
+Strophomenacea
+strophomenid
+Strophomenidae
+strophomenoid
+strophosis
+strophotaxis
+strophulus
+stropper
+stroppings
+stroth
+stroud
+strouding
+strounge
+stroup
+strouthiocamel
+strouthiocamelian
+strouthocamelian
+strove
+strow
+strowd
+strown
+stroy
+stroyer
+stroygood
+strub
+strubbly
+struck
+strucken
+structural
+structuralism
+structuralist
+structuralization
+structuralize
+structurally
+structuration
+structure
+structured
+structureless
+structurely
+structurist
+strudel
+strue
+struggle
+struggler
+struggling
+strugglingly
+Struldbrug
+Struldbruggian
+Struldbruggism
+strum
+struma
+strumae
+strumatic
+strumaticness
+strumectomy
+Strumella
+strumiferous
+strumiform
+strumiprivic
+strumiprivous
+strumitis
+strummer
+strumose
+strumous
+strumousness
+strumpet
+strumpetlike
+strumpetry
+strumstrum
+strumulose
+strung
+strunt
+strut
+struth
+struthian
+struthiform
+Struthio
+struthioid
+Struthiomimus
+Struthiones
+Struthionidae
+struthioniform
+Struthioniformes
+Struthiopteris
+struthious
+struthonine
+strutter
+strutting
+struttingly
+struv
+struvite
+strych
+strychnia
+strychnic
+strychnin
+strychnine
+strychninic
+strychninism
+strychninization
+strychninize
+strychnize
+strychnol
+Strychnos
+Strymon
+Stu
+Stuart
+Stuartia
+stub
+stubachite
+stubb
+stubbed
+stubbedness
+stubber
+stubbiness
+stubble
+stubbleberry
+stubbled
+stubbleward
+stubbly
+stubborn
+stubbornhearted
+stubbornly
+stubbornness
+stubboy
+stubby
+stubchen
+stuber
+stuboy
+stubrunner
+stucco
+stuccoer
+stuccowork
+stuccoworker
+stuccoyer
+stuck
+stuckling
+stucturelessness
+stud
+studbook
+studder
+studdie
+studding
+studdle
+stude
+student
+studenthood
+studentless
+studentlike
+studentry
+studentship
+studerite
+studfish
+studflower
+studhorse
+studia
+studiable
+studied
+studiedly
+studiedness
+studier
+studio
+studious
+studiously
+studiousness
+Studite
+Studium
+studium
+studwork
+study
+stue
+stuff
+stuffed
+stuffender
+stuffer
+stuffgownsman
+stuffily
+stuffiness
+stuffing
+stuffy
+stug
+stuggy
+stuiver
+stull
+stuller
+stulm
+stultification
+stultifier
+stultify
+stultiloquence
+stultiloquently
+stultiloquious
+stultioquy
+stultloquent
+stum
+stumble
+stumbler
+stumbling
+stumblingly
+stumbly
+stumer
+stummer
+stummy
+stump
+stumpage
+stumper
+stumpily
+stumpiness
+stumpish
+stumpless
+stumplike
+stumpling
+stumpnose
+stumpwise
+stumpy
+stun
+Stundism
+Stundist
+stung
+stunk
+stunkard
+stunner
+stunning
+stunningly
+stunpoll
+stunsail
+stunsle
+stunt
+stunted
+stuntedly
+stuntedness
+stunter
+stuntiness
+stuntness
+stunty
+stupa
+stupe
+stupefacient
+stupefaction
+stupefactive
+stupefactiveness
+stupefied
+stupefiedness
+stupefier
+stupefy
+stupend
+stupendly
+stupendous
+stupendously
+stupendousness
+stupent
+stupeous
+stupex
+stupid
+stupidhead
+stupidish
+stupidity
+stupidly
+stupidness
+stupor
+stuporific
+stuporose
+stuporous
+stupose
+stupp
+stuprate
+stupration
+stuprum
+stupulose
+sturdied
+sturdily
+sturdiness
+sturdy
+sturdyhearted
+sturgeon
+sturine
+Sturiones
+sturionine
+sturk
+Sturmian
+Sturnella
+Sturnidae
+sturniform
+Sturninae
+sturnine
+sturnoid
+Sturnus
+sturt
+sturtan
+sturtin
+sturtion
+sturtite
+stuss
+stut
+stutter
+stutterer
+stuttering
+stutteringly
+sty
+styan
+styca
+styceric
+stycerin
+stycerinol
+stychomythia
+styful
+styfziekte
+Stygial
+Stygian
+stylar
+Stylaster
+Stylasteridae
+stylate
+style
+stylebook
+styledom
+styleless
+stylelessness
+stylelike
+styler
+stylet
+stylewort
+Stylidiaceae
+stylidiaceous
+Stylidium
+styliferous
+styliform
+styline
+styling
+stylish
+stylishly
+stylishness
+stylist
+stylistic
+stylistical
+stylistically
+stylistics
+stylite
+stylitic
+stylitism
+stylization
+stylize
+stylizer
+stylo
+styloauricularis
+stylobate
+Stylochus
+styloglossal
+styloglossus
+stylogonidium
+stylograph
+stylographic
+stylographical
+stylographically
+stylography
+stylohyal
+stylohyoid
+stylohyoidean
+stylohyoideus
+styloid
+stylolite
+stylolitic
+stylomandibular
+stylomastoid
+stylomaxillary
+stylometer
+Stylommatophora
+stylommatophorous
+stylomyloid
+Stylonurus
+Stylonychia
+stylopharyngeal
+stylopharyngeus
+stylopid
+Stylopidae
+stylopization
+stylopized
+stylopod
+stylopodium
+Stylops
+stylops
+Stylosanthes
+stylospore
+stylosporous
+stylostegium
+stylotypite
+stylus
+stymie
+Stymphalian
+Stymphalid
+Stymphalides
+Styphelia
+styphnate
+styphnic
+stypsis
+styptic
+styptical
+stypticalness
+stypticity
+stypticness
+Styracaceae
+styracaceous
+styracin
+Styrax
+styrax
+styrene
+Styrian
+styrogallol
+styrol
+styrolene
+styrone
+styryl
+styrylic
+stythe
+styward
+Styx
+Styxian
+suability
+suable
+suably
+suade
+Suaeda
+suaharo
+Sualocin
+Suanitian
+suant
+suantly
+suasible
+suasion
+suasionist
+suasive
+suasively
+suasiveness
+suasory
+suavastika
+suave
+suavely
+suaveness
+suaveolent
+suavify
+suaviloquence
+suaviloquent
+suavity
+sub
+subabbot
+subabdominal
+subability
+subabsolute
+subacademic
+subaccount
+subacetate
+subacid
+subacidity
+subacidly
+subacidness
+subacidulous
+subacrid
+subacrodrome
+subacromial
+subact
+subacuminate
+subacute
+subacutely
+subadditive
+subadjacent
+subadjutor
+subadministrate
+subadministration
+subadministrator
+subadult
+subaduncate
+subaerate
+subaeration
+subaerial
+subaerially
+subaetheric
+subaffluent
+subage
+subagency
+subagent
+subaggregate
+subah
+subahdar
+subahdary
+subahship
+subaid
+Subakhmimic
+subalary
+subalate
+subalgebra
+subalkaline
+suballiance
+subalmoner
+subalpine
+subaltern
+subalternant
+subalternate
+subalternately
+subalternating
+subalternation
+subalternity
+subanal
+subandean
+subangled
+subangular
+subangulate
+subangulated
+subanniversary
+subantarctic
+subantichrist
+subantique
+Subanun
+subapical
+subaponeurotic
+subapostolic
+subapparent
+subappearance
+subappressed
+subapprobation
+subapterous
+subaquatic
+subaquean
+subaqueous
+subarachnoid
+subarachnoidal
+subarachnoidean
+subarboraceous
+subarboreal
+subarborescent
+subarch
+subarchesporial
+subarchitect
+subarctic
+subarcuate
+subarcuated
+subarcuation
+subarea
+subareolar
+subareolet
+Subarian
+subarmor
+subarouse
+subarrhation
+subartesian
+subarticle
+subarytenoid
+subascending
+subassemblage
+subassembly
+subassociation
+subastragalar
+subastragaloid
+subastral
+subastringent
+subatom
+subatomic
+subattenuate
+subattenuated
+subattorney
+subaud
+subaudible
+subaudition
+subauditionist
+subauditor
+subauditur
+subaural
+subauricular
+subautomatic
+subaverage
+subaxillar
+subaxillary
+subbailie
+subbailiff
+subbailiwick
+subballast
+subband
+subbank
+subbasal
+subbasaltic
+subbase
+subbasement
+subbass
+subbeadle
+subbeau
+subbias
+subbifid
+subbing
+subbituminous
+subbookkeeper
+subboreal
+subbourdon
+subbrachycephalic
+subbrachycephaly
+subbrachyskelic
+subbranch
+subbranched
+subbranchial
+subbreed
+subbrigade
+subbrigadier
+subbroker
+subbromid
+subbromide
+subbronchial
+subbureau
+subcaecal
+subcalcareous
+subcalcarine
+subcaliber
+subcallosal
+subcampanulate
+subcancellate
+subcandid
+subcantor
+subcapsular
+subcaptain
+subcaption
+subcarbide
+subcarbonate
+Subcarboniferous
+subcarbureted
+subcarburetted
+subcardinal
+subcarinate
+subcartilaginous
+subcase
+subcash
+subcashier
+subcasino
+subcast
+subcaste
+subcategory
+subcaudal
+subcaudate
+subcaulescent
+subcause
+subcavate
+subcavity
+subcelestial
+subcell
+subcellar
+subcenter
+subcentral
+subcentrally
+subchairman
+subchamberer
+subchancel
+subchanter
+subchapter
+subchaser
+subchela
+subchelate
+subcheliform
+subchief
+subchloride
+subchondral
+subchordal
+subchorioid
+subchorioidal
+subchorionic
+subchoroid
+subchoroidal
+subcinctorium
+subcineritious
+subcingulum
+subcircuit
+subcircular
+subcision
+subcity
+subclaim
+Subclamatores
+subclan
+subclass
+subclassify
+subclause
+subclavate
+subclavia
+subclavian
+subclavicular
+subclavioaxillary
+subclaviojugular
+subclavius
+subclerk
+subclimate
+subclimax
+subclinical
+subclover
+subcoastal
+subcollateral
+subcollector
+subcollegiate
+subcolumnar
+subcommander
+subcommendation
+subcommended
+subcommissary
+subcommissaryship
+subcommission
+subcommissioner
+subcommit
+subcommittee
+subcompany
+subcompensate
+subcompensation
+subcompressed
+subconcave
+subconcession
+subconcessionaire
+subconchoidal
+subconference
+subconformable
+subconical
+subconjunctival
+subconjunctively
+subconnate
+subconnect
+subconnivent
+subconscience
+subconscious
+subconsciously
+subconsciousness
+subconservator
+subconsideration
+subconstable
+subconstellation
+subconsul
+subcontained
+subcontest
+subcontiguous
+subcontinent
+subcontinental
+subcontinual
+subcontinued
+subcontinuous
+subcontract
+subcontracted
+subcontractor
+subcontraoctave
+subcontrariety
+subcontrarily
+subcontrary
+subcontrol
+subconvex
+subconvolute
+subcool
+subcoracoid
+subcordate
+subcordiform
+subcoriaceous
+subcorneous
+subcorporation
+subcortex
+subcortical
+subcortically
+subcorymbose
+subcosta
+subcostal
+subcostalis
+subcouncil
+subcranial
+subcreative
+subcreek
+subcrenate
+subcrepitant
+subcrepitation
+subcrescentic
+subcrest
+subcriminal
+subcrossing
+subcrureal
+subcrureus
+subcrust
+subcrustaceous
+subcrustal
+subcrystalline
+subcubical
+subcuboidal
+subcultrate
+subcultural
+subculture
+subcurate
+subcurator
+subcuratorship
+subcurrent
+subcutaneous
+subcutaneously
+subcutaneousness
+subcuticular
+subcutis
+subcyaneous
+subcyanide
+subcylindric
+subcylindrical
+subdatary
+subdate
+subdeacon
+subdeaconate
+subdeaconess
+subdeaconry
+subdeaconship
+subdealer
+subdean
+subdeanery
+subdeb
+subdebutante
+subdecanal
+subdecimal
+subdecuple
+subdeducible
+subdefinition
+subdelegate
+subdelegation
+subdelirium
+subdeltaic
+subdeltoid
+subdeltoidal
+subdemonstrate
+subdemonstration
+subdenomination
+subdentate
+subdentated
+subdented
+subdenticulate
+subdepartment
+subdeposit
+subdepository
+subdepot
+subdepressed
+subdeputy
+subderivative
+subdermal
+subdeterminant
+subdevil
+subdiaconal
+subdiaconate
+subdial
+subdialect
+subdialectal
+subdialectally
+subdiapason
+subdiapente
+subdiaphragmatic
+subdichotomize
+subdichotomous
+subdichotomously
+subdichotomy
+subdie
+subdilated
+subdirector
+subdiscoidal
+subdisjunctive
+subdistich
+subdistichous
+subdistinction
+subdistinguish
+subdistinguished
+subdistrict
+subdititious
+subdititiously
+subdivecious
+subdiversify
+subdividable
+subdivide
+subdivider
+subdividing
+subdividingly
+subdivine
+subdivisible
+subdivision
+subdivisional
+subdivisive
+subdoctor
+subdolent
+subdolichocephalic
+subdolichocephaly
+subdolous
+subdolously
+subdolousness
+subdominant
+subdorsal
+subdorsally
+subdouble
+subdrain
+subdrainage
+subdrill
+subdruid
+subduable
+subduableness
+subduably
+subdual
+subduce
+subduct
+subduction
+subdue
+subdued
+subduedly
+subduedness
+subduement
+subduer
+subduing
+subduingly
+subduple
+subduplicate
+subdural
+subdurally
+subecho
+subectodermal
+subedit
+subeditor
+subeditorial
+subeditorship
+subeffective
+subelection
+subelectron
+subelement
+subelementary
+subelliptic
+subelliptical
+subelongate
+subemarginate
+subencephalon
+subencephaltic
+subendocardial
+subendorse
+subendorsement
+subendothelial
+subendymal
+subenfeoff
+subengineer
+subentire
+subentitle
+subentry
+subepidermal
+subepiglottic
+subepithelial
+subepoch
+subequal
+subequality
+subequally
+subequatorial
+subequilateral
+subequivalve
+suber
+suberane
+suberate
+suberect
+subereous
+suberic
+suberiferous
+suberification
+suberiform
+suberin
+suberinization
+suberinize
+Suberites
+Suberitidae
+suberization
+suberize
+suberone
+suberose
+suberous
+subescheator
+subesophageal
+subessential
+subetheric
+subexaminer
+subexcitation
+subexcite
+subexecutor
+subexternal
+subface
+subfacies
+subfactor
+subfactorial
+subfactory
+subfalcate
+subfalcial
+subfalciform
+subfamily
+subfascial
+subfastigiate
+subfebrile
+subferryman
+subfestive
+subfeu
+subfeudation
+subfeudatory
+subfibrous
+subfief
+subfigure
+subfissure
+subfix
+subflavor
+subflexuose
+subfloor
+subflooring
+subflora
+subflush
+subfluvial
+subfocal
+subfoliar
+subforeman
+subform
+subformation
+subfossil
+subfossorial
+subfoundation
+subfraction
+subframe
+subfreshman
+subfrontal
+subfulgent
+subfumigation
+subfumose
+subfunctional
+subfusc
+subfuscous
+subfusiform
+subfusk
+subgalea
+subgallate
+subganger
+subgape
+subgelatinous
+subgeneric
+subgenerical
+subgenerically
+subgeniculate
+subgenital
+subgens
+subgenual
+subgenus
+subgeometric
+subget
+subgit
+subglabrous
+subglacial
+subglacially
+subglenoid
+subglobose
+subglobosely
+subglobular
+subglobulose
+subglossal
+subglossitis
+subglottic
+subglumaceous
+subgod
+subgoverness
+subgovernor
+subgrade
+subgranular
+subgrin
+subgroup
+subgular
+subgwely
+subgyre
+subgyrus
+subhalid
+subhalide
+subhall
+subharmonic
+subhastation
+subhatchery
+subhead
+subheading
+subheadquarters
+subheadwaiter
+subhealth
+subhedral
+subhemispherical
+subhepatic
+subherd
+subhero
+subhexagonal
+subhirsute
+subhooked
+subhorizontal
+subhornblendic
+subhouse
+subhuman
+subhumid
+subhyaline
+subhyaloid
+subhymenial
+subhymenium
+subhyoid
+subhyoidean
+subhypothesis
+subhysteria
+subicle
+subicteric
+subicular
+subiculum
+subidar
+subidea
+subideal
+subimaginal
+subimago
+subimbricate
+subimbricated
+subimposed
+subimpressed
+subincandescent
+subincident
+subincise
+subincision
+subincomplete
+subindex
+subindicate
+subindication
+subindicative
+subindices
+subindividual
+subinduce
+subinfer
+subinfeud
+subinfeudate
+subinfeudation
+subinfeudatory
+subinflammation
+subinflammatory
+subinform
+subingression
+subinguinal
+subinitial
+subinoculate
+subinoculation
+subinsert
+subinsertion
+subinspector
+subinspectorship
+subintegumental
+subintellection
+subintelligential
+subintelligitur
+subintent
+subintention
+subintercessor
+subinternal
+subinterval
+subintestinal
+subintroduce
+subintroduction
+subintroductory
+subinvoluted
+subinvolution
+subiodide
+subirrigate
+subirrigation
+subitane
+subitaneous
+subitem
+Subiya
+subjacency
+subjacent
+subjacently
+subjack
+subject
+subjectability
+subjectable
+subjectdom
+subjected
+subjectedly
+subjectedness
+subjecthood
+subjectibility
+subjectible
+subjectification
+subjectify
+subjectile
+subjection
+subjectional
+subjectist
+subjective
+subjectively
+subjectiveness
+subjectivism
+subjectivist
+subjectivistic
+subjectivistically
+subjectivity
+subjectivize
+subjectivoidealistic
+subjectless
+subjectlike
+subjectness
+subjectship
+subjee
+subjicible
+subjoin
+subjoinder
+subjoint
+subjudge
+subjudiciary
+subjugable
+subjugal
+subjugate
+subjugation
+subjugator
+subjugular
+subjunct
+subjunction
+subjunctive
+subjunctively
+subjunior
+subking
+subkingdom
+sublabial
+sublaciniate
+sublacustrine
+sublanate
+sublanceolate
+sublanguage
+sublapsarian
+sublapsarianism
+sublapsary
+sublaryngeal
+sublate
+sublateral
+sublation
+sublative
+subleader
+sublease
+sublecturer
+sublegislation
+sublegislature
+sublenticular
+sublessee
+sublessor
+sublet
+sublethal
+sublettable
+subletter
+sublevaminous
+sublevate
+sublevation
+sublevel
+sublibrarian
+sublicense
+sublicensee
+sublid
+sublieutenancy
+sublieutenant
+subligation
+sublighted
+sublimable
+sublimableness
+sublimant
+sublimate
+sublimation
+sublimational
+sublimationist
+sublimator
+sublimatory
+sublime
+sublimed
+sublimely
+sublimeness
+sublimer
+subliminal
+subliminally
+sublimish
+sublimitation
+sublimity
+sublimize
+sublinear
+sublineation
+sublingua
+sublinguae
+sublingual
+sublinguate
+sublittoral
+sublobular
+sublong
+subloral
+subloreal
+sublot
+sublumbar
+sublunar
+sublunary
+sublunate
+sublustrous
+subluxate
+subluxation
+submaid
+submain
+submakroskelic
+submammary
+subman
+submanager
+submania
+submanic
+submanor
+submarginal
+submarginally
+submarginate
+submargined
+submarine
+submariner
+submarinism
+submarinist
+submarshal
+submaster
+submaxilla
+submaxillary
+submaximal
+submeaning
+submedial
+submedian
+submediant
+submediation
+submediocre
+submeeting
+submember
+submembranaceous
+submembranous
+submeningeal
+submental
+submentum
+submerge
+submerged
+submergement
+submergence
+submergibility
+submergible
+submerse
+submersed
+submersibility
+submersible
+submersion
+submetallic
+submeter
+submetering
+submicron
+submicroscopic
+submicroscopically
+submiliary
+submind
+subminimal
+subminister
+submiss
+submissible
+submission
+submissionist
+submissive
+submissively
+submissiveness
+submissly
+submissness
+submit
+submittal
+submittance
+submitter
+submittingly
+submolecule
+submonition
+submontagne
+submontane
+submontanely
+submontaneous
+submorphous
+submortgage
+submotive
+submountain
+submucosa
+submucosal
+submucous
+submucronate
+submultiple
+submundane
+submuriate
+submuscular
+Submytilacea
+subnarcotic
+subnasal
+subnascent
+subnatural
+subnect
+subnervian
+subness
+subneural
+subnex
+subnitrate
+subnitrated
+subniveal
+subnivean
+subnormal
+subnormality
+subnotation
+subnote
+subnotochordal
+subnubilar
+subnucleus
+subnude
+subnumber
+subnuvolar
+suboblique
+subobscure
+subobscurely
+subobtuse
+suboccipital
+subocean
+suboceanic
+suboctave
+suboctile
+suboctuple
+subocular
+suboesophageal
+suboffice
+subofficer
+subofficial
+subolive
+subopaque
+subopercle
+subopercular
+suboperculum
+subopposite
+suboptic
+suboptimal
+suboptimum
+suboral
+suborbicular
+suborbiculate
+suborbiculated
+suborbital
+suborbitar
+suborbitary
+subordain
+suborder
+subordinacy
+subordinal
+subordinary
+subordinate
+subordinately
+subordinateness
+subordinating
+subordinatingly
+subordination
+subordinationism
+subordinationist
+subordinative
+suborganic
+suborn
+subornation
+subornative
+suborner
+Suboscines
+suboval
+subovate
+subovated
+suboverseer
+subovoid
+suboxidation
+suboxide
+subpackage
+subpagoda
+subpallial
+subpalmate
+subpanel
+subparagraph
+subparallel
+subpart
+subpartition
+subpartitioned
+subpartitionment
+subparty
+subpass
+subpassage
+subpastor
+subpatron
+subpattern
+subpavement
+subpectinate
+subpectoral
+subpeduncle
+subpeduncular
+subpedunculate
+subpellucid
+subpeltate
+subpeltated
+subpentagonal
+subpentangular
+subpericardial
+subperiod
+subperiosteal
+subperiosteally
+subperitoneal
+subperitoneally
+subpermanent
+subpermanently
+subperpendicular
+subpetiolar
+subpetiolate
+subpharyngeal
+subphosphate
+subphratry
+subphrenic
+subphylar
+subphylum
+subpial
+subpilose
+subpimp
+subpiston
+subplacenta
+subplant
+subplantigrade
+subplat
+subpleural
+subplinth
+subplot
+subplow
+subpodophyllous
+subpoena
+subpoenal
+subpolar
+subpolygonal
+subpool
+subpopular
+subpopulation
+subporphyritic
+subport
+subpostmaster
+subpostmastership
+subpostscript
+subpotency
+subpotent
+subpreceptor
+subpreceptorial
+subpredicate
+subpredication
+subprefect
+subprefectorial
+subprefecture
+subprehensile
+subpress
+subprimary
+subprincipal
+subprior
+subprioress
+subproblem
+subproctor
+subproduct
+subprofessional
+subprofessor
+subprofessoriate
+subprofitable
+subproportional
+subprotector
+subprovince
+subprovincial
+subpubescent
+subpubic
+subpulmonary
+subpulverizer
+subpunch
+subpunctuation
+subpurchaser
+subpurlin
+subputation
+subpyramidal
+subpyriform
+subquadrangular
+subquadrate
+subquality
+subquestion
+subquinquefid
+subquintuple
+Subra
+subrace
+subradial
+subradiance
+subradiate
+subradical
+subradius
+subradular
+subrailway
+subrameal
+subramose
+subramous
+subrange
+subrational
+subreader
+subreason
+subrebellion
+subrectangular
+subrector
+subreference
+subregent
+subregion
+subregional
+subregular
+subreguli
+subregulus
+subrelation
+subreligion
+subreniform
+subrent
+subrepand
+subrepent
+subreport
+subreptary
+subreption
+subreptitious
+subreputable
+subresin
+subretinal
+subrhombic
+subrhomboid
+subrhomboidal
+subrictal
+subrident
+subridently
+subrigid
+subrision
+subrisive
+subrisory
+subrogate
+subrogation
+subroot
+subrostral
+subround
+subrule
+subruler
+subsacral
+subsale
+subsaline
+subsalt
+subsample
+subsartorial
+subsatiric
+subsatirical
+subsaturated
+subsaturation
+subscapular
+subscapularis
+subscapulary
+subschedule
+subscheme
+subschool
+subscience
+subscleral
+subsclerotic
+subscribable
+subscribe
+subscriber
+subscribership
+subscript
+subscription
+subscriptionist
+subscriptive
+subscriptively
+subscripture
+subscrive
+subscriver
+subsea
+subsecive
+subsecretarial
+subsecretary
+subsect
+subsection
+subsecurity
+subsecute
+subsecutive
+subsegment
+subsemifusa
+subsemitone
+subsensation
+subsensible
+subsensual
+subsensuous
+subsept
+subseptuple
+subsequence
+subsequency
+subsequent
+subsequential
+subsequentially
+subsequently
+subsequentness
+subseries
+subserosa
+subserous
+subserrate
+subserve
+subserviate
+subservience
+subserviency
+subservient
+subserviently
+subservientness
+subsessile
+subset
+subsewer
+subsextuple
+subshaft
+subsheriff
+subshire
+subshrub
+subshrubby
+subside
+subsidence
+subsidency
+subsident
+subsider
+subsidiarie
+subsidiarily
+subsidiariness
+subsidiary
+subsiding
+subsidist
+subsidizable
+subsidization
+subsidize
+subsidizer
+subsidy
+subsilicate
+subsilicic
+subsill
+subsimilation
+subsimious
+subsimple
+subsinuous
+subsist
+subsistence
+subsistency
+subsistent
+subsistential
+subsistingly
+subsizar
+subsizarship
+subsmile
+subsneer
+subsocial
+subsoil
+subsoiler
+subsolar
+subsolid
+subsonic
+subsorter
+subsovereign
+subspace
+subspatulate
+subspecialist
+subspecialize
+subspecialty
+subspecies
+subspecific
+subspecifically
+subsphenoidal
+subsphere
+subspherical
+subspherically
+subspinous
+subspiral
+subspontaneous
+subsquadron
+substage
+substalagmite
+substalagmitic
+substance
+substanceless
+substanch
+substandard
+substandardize
+substant
+substantiability
+substantial
+substantialia
+substantialism
+substantialist
+substantiality
+substantialize
+substantially
+substantialness
+substantiate
+substantiation
+substantiative
+substantiator
+substantify
+substantious
+substantival
+substantivally
+substantive
+substantively
+substantiveness
+substantivity
+substantivize
+substantize
+substation
+substernal
+substituent
+substitutable
+substitute
+substituted
+substituter
+substituting
+substitutingly
+substitution
+substitutional
+substitutionally
+substitutionary
+substitutive
+substitutively
+substock
+substoreroom
+substory
+substract
+substraction
+substratal
+substrate
+substrati
+substrative
+substrator
+substratose
+substratosphere
+substratospheric
+substratum
+substriate
+substruct
+substruction
+substructional
+substructural
+substructure
+substylar
+substyle
+subsulfid
+subsulfide
+subsulphate
+subsulphid
+subsulphide
+subsult
+subsultive
+subsultorily
+subsultorious
+subsultory
+subsultus
+subsumable
+subsume
+subsumption
+subsumptive
+subsuperficial
+subsurety
+subsurface
+subsyndicate
+subsynod
+subsynodical
+subsystem
+subtack
+subtacksman
+subtangent
+subtarget
+subtartarean
+subtectal
+subtegminal
+subtegulaneous
+subtemperate
+subtenancy
+subtenant
+subtend
+subtense
+subtenure
+subtepid
+subteraqueous
+subterbrutish
+subtercelestial
+subterconscious
+subtercutaneous
+subterethereal
+subterfluent
+subterfluous
+subterfuge
+subterhuman
+subterjacent
+subtermarine
+subterminal
+subternatural
+subterpose
+subterposition
+subterrane
+subterraneal
+subterranean
+subterraneanize
+subterraneanly
+subterraneous
+subterraneously
+subterraneousness
+subterranity
+subterraqueous
+subterrene
+subterrestrial
+subterritorial
+subterritory
+subtersensual
+subtersensuous
+subtersuperlative
+subtersurface
+subtertian
+subtext
+subthalamic
+subthalamus
+subthoracic
+subthrill
+subtile
+subtilely
+subtileness
+subtilin
+subtilism
+subtilist
+subtility
+subtilization
+subtilize
+subtilizer
+subtill
+subtillage
+subtilty
+subtitle
+subtitular
+subtle
+subtleness
+subtlety
+subtlist
+subtly
+subtone
+subtonic
+subtorrid
+subtotal
+subtotem
+subtower
+subtract
+subtracter
+subtraction
+subtractive
+subtrahend
+subtranslucent
+subtransparent
+subtransverse
+subtrapezoidal
+subtread
+subtreasurer
+subtreasurership
+subtreasury
+subtrench
+subtriangular
+subtriangulate
+subtribal
+subtribe
+subtribual
+subtrifid
+subtrigonal
+subtrihedral
+subtriplicate
+subtriplicated
+subtriquetrous
+subtrist
+subtrochanteric
+subtrochlear
+subtropic
+subtropical
+subtropics
+subtrousers
+subtrude
+subtruncate
+subtrunk
+subtuberant
+subtunic
+subtunnel
+subturbary
+subturriculate
+subturriculated
+subtutor
+subtwined
+subtype
+subtypical
+subulate
+subulated
+subulicorn
+Subulicornia
+subuliform
+subultimate
+subumbellate
+subumbonal
+subumbral
+subumbrella
+subumbrellar
+subuncinate
+subunequal
+subungual
+subunguial
+Subungulata
+subungulate
+subunit
+subuniverse
+suburb
+suburban
+suburbandom
+suburbanhood
+suburbanism
+suburbanite
+suburbanity
+suburbanization
+suburbanize
+suburbanly
+suburbed
+suburbia
+suburbican
+suburbicarian
+suburbicary
+suburethral
+subursine
+subvaginal
+subvaluation
+subvarietal
+subvariety
+subvassal
+subvassalage
+subvein
+subvendee
+subvene
+subvention
+subventionary
+subventioned
+subventionize
+subventitious
+subventive
+subventral
+subventricose
+subvermiform
+subversal
+subverse
+subversed
+subversion
+subversionary
+subversive
+subversivism
+subvert
+subvertebral
+subverter
+subvertible
+subvertical
+subverticillate
+subvesicular
+subvestment
+subvicar
+subvicarship
+subvillain
+subvirate
+subvirile
+subvisible
+subvitalized
+subvitreous
+subvocal
+subvola
+subwarden
+subwater
+subway
+subwealthy
+subweight
+subwink
+subworker
+subworkman
+subzonal
+subzone
+subzygomatic
+succade
+succedanea
+succedaneous
+succedaneum
+succedent
+succeed
+succeedable
+succeeder
+succeeding
+succeedingly
+succent
+succentor
+succenturiate
+succenturiation
+success
+successful
+successfully
+successfulness
+succession
+successional
+successionally
+successionist
+successionless
+successive
+successively
+successiveness
+successivity
+successless
+successlessly
+successlessness
+successor
+successoral
+successorship
+successory
+succi
+succin
+succinamate
+succinamic
+succinamide
+succinanil
+succinate
+succinct
+succinctly
+succinctness
+succinctorium
+succinctory
+succincture
+succinic
+succiniferous
+succinimide
+succinite
+succinoresinol
+succinosulphuric
+succinous
+succinyl
+Succisa
+succise
+succivorous
+succor
+succorable
+succorer
+succorful
+succorless
+succorrhea
+succory
+succotash
+succourful
+succourless
+succous
+succub
+succuba
+succubae
+succube
+succubine
+succubous
+succubus
+succula
+succulence
+succulency
+succulent
+succulently
+succulentness
+succulous
+succumb
+succumbence
+succumbency
+succumbent
+succumber
+succursal
+succuss
+succussation
+succussatory
+succussion
+succussive
+such
+suchlike
+suchness
+Suchos
+suchwise
+sucivilized
+suck
+suckable
+suckabob
+suckage
+suckauhock
+sucken
+suckener
+sucker
+suckerel
+suckerfish
+suckerlike
+suckfish
+suckhole
+sucking
+suckle
+suckler
+suckless
+suckling
+suckstone
+suclat
+sucramine
+sucrate
+sucre
+sucroacid
+sucrose
+suction
+suctional
+Suctoria
+suctorial
+suctorian
+suctorious
+sucupira
+sucuri
+sucuriu
+sucuruju
+sud
+sudadero
+sudamen
+sudamina
+sudaminal
+Sudan
+Sudanese
+Sudani
+Sudanian
+Sudanic
+sudarium
+sudary
+sudate
+sudation
+sudatorium
+sudatory
+Sudburian
+sudburite
+sudd
+sudden
+suddenly
+suddenness
+suddenty
+Sudder
+sudder
+suddle
+suddy
+Sudic
+sudiform
+sudoral
+sudoresis
+sudoric
+sudoriferous
+sudoriferousness
+sudorific
+sudoriparous
+sudorous
+Sudra
+suds
+sudsman
+sudsy
+Sue
+sue
+Suecism
+suede
+suer
+Suerre
+Suessiones
+suet
+suety
+Sueve
+Suevi
+Suevian
+Suevic
+Sufeism
+suff
+suffect
+suffection
+suffer
+sufferable
+sufferableness
+sufferably
+sufferance
+sufferer
+suffering
+sufferingly
+suffete
+suffice
+sufficeable
+sufficer
+sufficiency
+sufficient
+sufficiently
+sufficientness
+sufficing
+sufficingly
+sufficingness
+suffiction
+suffix
+suffixal
+suffixation
+suffixion
+suffixment
+sufflaminate
+sufflamination
+sufflate
+sufflation
+sufflue
+suffocate
+suffocating
+suffocatingly
+suffocation
+suffocative
+Suffolk
+suffragan
+suffraganal
+suffraganate
+suffragancy
+suffraganeous
+suffragatory
+suffrage
+suffragette
+suffragettism
+suffragial
+suffragism
+suffragist
+suffragistic
+suffragistically
+suffragitis
+suffrago
+suffrutescent
+suffrutex
+suffruticose
+suffruticous
+suffruticulose
+suffumigate
+suffumigation
+suffusable
+suffuse
+suffused
+suffusedly
+suffusion
+suffusive
+Sufi
+Sufiism
+Sufiistic
+Sufism
+Sufistic
+sugamo
+sugan
+sugar
+sugarberry
+sugarbird
+sugarbush
+sugared
+sugarelly
+sugarer
+sugarhouse
+sugariness
+sugarless
+sugarlike
+sugarplum
+sugarsweet
+sugarworks
+sugary
+sugent
+sugescent
+suggest
+suggestable
+suggestedness
+suggester
+suggestibility
+suggestible
+suggestibleness
+suggestibly
+suggesting
+suggestingly
+suggestion
+suggestionability
+suggestionable
+suggestionism
+suggestionist
+suggestionize
+suggestive
+suggestively
+suggestiveness
+suggestivity
+suggestment
+suggestress
+suggestum
+suggillate
+suggillation
+sugh
+sugi
+Sugih
+suguaro
+suhuaro
+Sui
+suicidal
+suicidalism
+suicidally
+suicidalwise
+suicide
+suicidical
+suicidism
+suicidist
+suid
+Suidae
+suidian
+suiform
+suilline
+suimate
+Suina
+suine
+suing
+suingly
+suint
+Suiogoth
+Suiogothic
+Suiones
+suisimilar
+suist
+suit
+suitability
+suitable
+suitableness
+suitably
+suitcase
+suite
+suithold
+suiting
+suitor
+suitoress
+suitorship
+suity
+suji
+Suk
+Sukey
+sukiyaki
+sukkenye
+Suku
+Sula
+Sulaba
+Sulafat
+Sulaib
+sulbasutra
+sulcal
+sulcalization
+sulcalize
+sulcar
+sulcate
+sulcated
+sulcation
+sulcatoareolate
+sulcatocostate
+sulcatorimose
+sulciform
+sulcomarginal
+sulcular
+sulculate
+sulculus
+sulcus
+suld
+sulea
+sulfa
+sulfacid
+sulfadiazine
+sulfaguanidine
+sulfamate
+sulfamerazin
+sulfamerazine
+sulfamethazine
+sulfamethylthiazole
+sulfamic
+sulfamidate
+sulfamide
+sulfamidic
+sulfamine
+sulfaminic
+sulfamyl
+sulfanilamide
+sulfanilic
+sulfanilylguanidine
+sulfantimonide
+sulfapyrazine
+sulfapyridine
+sulfaquinoxaline
+sulfarsenide
+sulfarsenite
+sulfarseniuret
+sulfarsphenamine
+Sulfasuxidine
+sulfatase
+sulfathiazole
+sulfatic
+sulfatize
+sulfato
+sulfazide
+sulfhydrate
+sulfhydric
+sulfhydryl
+sulfindigotate
+sulfindigotic
+sulfindylic
+sulfion
+sulfionide
+sulfoacid
+sulfoamide
+sulfobenzide
+sulfobenzoate
+sulfobenzoic
+sulfobismuthite
+sulfoborite
+sulfocarbamide
+sulfocarbimide
+sulfocarbolate
+sulfocarbolic
+sulfochloride
+sulfocyan
+sulfocyanide
+sulfofication
+sulfogermanate
+sulfohalite
+sulfohydrate
+sulfoindigotate
+sulfoleic
+sulfolysis
+sulfomethylic
+sulfonamic
+sulfonamide
+sulfonate
+sulfonation
+sulfonator
+sulfonephthalein
+sulfonethylmethane
+sulfonic
+sulfonium
+sulfonmethane
+sulfonyl
+sulfophthalein
+sulfopurpurate
+sulfopurpuric
+sulforicinate
+sulforicinic
+sulforicinoleate
+sulforicinoleic
+sulfoselenide
+sulfosilicide
+sulfostannide
+sulfotelluride
+sulfourea
+sulfovinate
+sulfovinic
+sulfowolframic
+sulfoxide
+sulfoxism
+sulfoxylate
+sulfoxylic
+sulfurage
+sulfuran
+sulfurate
+sulfuration
+sulfurator
+sulfurea
+sulfureous
+sulfureously
+sulfureousness
+sulfuret
+sulfuric
+sulfurization
+sulfurize
+sulfurosyl
+sulfurous
+sulfury
+sulfuryl
+Sulidae
+Sulides
+Suliote
+sulk
+sulka
+sulker
+sulkily
+sulkiness
+sulky
+sulkylike
+sull
+sulla
+sullage
+Sullan
+sullen
+sullenhearted
+sullenly
+sullenness
+sulliable
+sullow
+sully
+sulpha
+sulphacid
+sulphaldehyde
+sulphamate
+sulphamic
+sulphamidate
+sulphamide
+sulphamidic
+sulphamine
+sulphaminic
+sulphamino
+sulphammonium
+sulphamyl
+sulphanilate
+sulphanilic
+sulphantimonate
+sulphantimonial
+sulphantimonic
+sulphantimonide
+sulphantimonious
+sulphantimonite
+sulpharsenate
+sulpharseniate
+sulpharsenic
+sulpharsenide
+sulpharsenious
+sulpharsenite
+sulpharseniuret
+sulpharsphenamine
+sulphatase
+sulphate
+sulphated
+sulphatic
+sulphation
+sulphatization
+sulphatize
+sulphato
+sulphatoacetic
+sulphatocarbonic
+sulphazide
+sulphazotize
+sulphbismuthite
+sulphethylate
+sulphethylic
+sulphhemoglobin
+sulphichthyolate
+sulphidation
+sulphide
+sulphidic
+sulphidize
+sulphimide
+sulphinate
+sulphindigotate
+sulphine
+sulphinic
+sulphinide
+sulphinyl
+sulphitation
+sulphite
+sulphitic
+sulphmethemoglobin
+sulpho
+sulphoacetic
+sulphoamid
+sulphoamide
+sulphoantimonate
+sulphoantimonic
+sulphoantimonious
+sulphoantimonite
+sulphoarsenic
+sulphoarsenious
+sulphoarsenite
+sulphoazotize
+sulphobenzide
+sulphobenzoate
+sulphobenzoic
+sulphobismuthite
+sulphoborite
+sulphobutyric
+sulphocarbamic
+sulphocarbamide
+sulphocarbanilide
+sulphocarbimide
+sulphocarbolate
+sulphocarbolic
+sulphocarbonate
+sulphocarbonic
+sulphochloride
+sulphochromic
+sulphocinnamic
+sulphocyan
+sulphocyanate
+sulphocyanic
+sulphocyanide
+sulphocyanogen
+sulphodichloramine
+sulphofication
+sulphofy
+sulphogallic
+sulphogel
+sulphogermanate
+sulphogermanic
+sulphohalite
+sulphohaloid
+sulphohydrate
+sulphoichthyolate
+sulphoichthyolic
+sulphoindigotate
+sulphoindigotic
+sulpholeate
+sulpholeic
+sulpholipin
+sulpholysis
+sulphonal
+sulphonalism
+sulphonamic
+sulphonamide
+sulphonamido
+sulphonamine
+sulphonaphthoic
+sulphonate
+sulphonated
+sulphonation
+sulphonator
+sulphoncyanine
+sulphone
+sulphonephthalein
+sulphonethylmethane
+sulphonic
+sulphonium
+sulphonmethane
+sulphonphthalein
+sulphonyl
+sulphoparaldehyde
+sulphophosphate
+sulphophosphite
+sulphophosphoric
+sulphophosphorous
+sulphophthalein
+sulphophthalic
+sulphopropionic
+sulphoproteid
+sulphopupuric
+sulphopurpurate
+sulphoricinate
+sulphoricinic
+sulphoricinoleate
+sulphoricinoleic
+sulphosalicylic
+sulphoselenide
+sulphoselenium
+sulphosilicide
+sulphosol
+sulphostannate
+sulphostannic
+sulphostannide
+sulphostannite
+sulphostannous
+sulphosuccinic
+sulphosulphurous
+sulphotannic
+sulphotelluride
+sulphoterephthalic
+sulphothionyl
+sulphotoluic
+sulphotungstate
+sulphotungstic
+sulphourea
+sulphovanadate
+sulphovinate
+sulphovinic
+sulphowolframic
+sulphoxide
+sulphoxism
+sulphoxylate
+sulphoxylic
+sulphoxyphosphate
+sulphozincate
+sulphur
+sulphurage
+sulphuran
+sulphurate
+sulphuration
+sulphurator
+sulphurea
+sulphurean
+sulphureity
+sulphureonitrous
+sulphureosaline
+sulphureosuffused
+sulphureous
+sulphureously
+sulphureousness
+sulphureovirescent
+sulphuret
+sulphureted
+sulphuric
+sulphuriferous
+sulphurity
+sulphurization
+sulphurize
+sulphurless
+sulphurlike
+sulphurosyl
+sulphurous
+sulphurously
+sulphurousness
+sulphurproof
+sulphurweed
+sulphurwort
+sulphury
+sulphuryl
+sulphydrate
+sulphydric
+sulphydryl
+Sulpician
+sultam
+sultan
+sultana
+sultanaship
+sultanate
+sultane
+sultanesque
+sultaness
+sultanian
+sultanic
+sultanin
+sultanism
+sultanist
+sultanize
+sultanlike
+sultanry
+sultanship
+sultone
+sultrily
+sultriness
+sultry
+Sulu
+Suluan
+sulung
+sulvanite
+sulvasutra
+sum
+sumac
+Sumak
+Sumass
+Sumatra
+sumatra
+Sumatran
+sumbul
+sumbulic
+Sumdum
+Sumerian
+Sumerology
+Sumitro
+sumless
+sumlessness
+summability
+summable
+summage
+summand
+summar
+summarily
+summariness
+summarist
+summarization
+summarize
+summarizer
+summary
+summate
+summation
+summational
+summative
+summatory
+summed
+summer
+summerbird
+summercastle
+summerer
+summerhead
+summeriness
+summering
+summerings
+summerish
+summerite
+summerize
+summerland
+summerlay
+summerless
+summerlike
+summerliness
+summerling
+summerly
+summerproof
+summertide
+summertime
+summertree
+summerward
+summerwood
+summery
+summist
+summit
+summital
+summitless
+summity
+summon
+summonable
+summoner
+summoningly
+summons
+summula
+summulist
+summut
+sumner
+Sumo
+sump
+sumpage
+sumper
+sumph
+sumphish
+sumphishly
+sumphishness
+sumphy
+sumpit
+sumpitan
+sumple
+sumpman
+sumpsimus
+sumpter
+sumption
+sumptuary
+sumptuosity
+sumptuous
+sumptuously
+sumptuousness
+sun
+sunbeam
+sunbeamed
+sunbeamy
+sunberry
+sunbird
+sunblink
+sunbonnet
+sunbonneted
+sunbow
+sunbreak
+sunburn
+sunburned
+sunburnedness
+sunburnproof
+sunburnt
+sunburntness
+sunburst
+suncherchor
+suncup
+sundae
+Sundanese
+Sundanesian
+sundang
+Sundar
+Sundaresan
+sundari
+Sunday
+Sundayfied
+Sundayish
+Sundayism
+Sundaylike
+Sundayness
+Sundayproof
+sundek
+sunder
+sunderable
+sunderance
+sunderer
+sunderment
+sunderwise
+sundew
+sundial
+sundik
+sundog
+sundown
+sundowner
+sundowning
+sundra
+sundri
+sundries
+sundriesman
+sundrily
+sundriness
+sundrops
+sundry
+sundryman
+sune
+sunfall
+sunfast
+sunfish
+sunfisher
+sunfishery
+sunflower
+Sung
+sung
+sungha
+sunglade
+sunglass
+sunglo
+sunglow
+Sunil
+sunk
+sunken
+sunket
+sunkland
+sunlamp
+sunland
+sunless
+sunlessly
+sunlessness
+sunlet
+sunlight
+sunlighted
+sunlike
+sunlit
+sunn
+Sunna
+Sunni
+Sunniah
+sunnily
+sunniness
+Sunnism
+Sunnite
+sunnud
+sunny
+sunnyhearted
+sunnyheartedness
+sunproof
+sunquake
+sunray
+sunrise
+sunrising
+sunroom
+sunscald
+sunset
+sunsetting
+sunsetty
+sunshade
+sunshine
+sunshineless
+sunshining
+sunshiny
+sunsmit
+sunsmitten
+sunspot
+sunspotted
+sunspottedness
+sunspottery
+sunspotty
+sunsquall
+sunstone
+sunstricken
+sunstroke
+sunt
+sunup
+sunward
+sunwards
+sunway
+sunways
+sunweed
+sunwise
+sunyie
+Suomi
+Suomic
+suovetaurilia
+sup
+supa
+Supai
+supari
+supawn
+supe
+supellex
+super
+superabduction
+superabhor
+superability
+superable
+superableness
+superably
+superabnormal
+superabominable
+superabomination
+superabound
+superabstract
+superabsurd
+superabundance
+superabundancy
+superabundant
+superabundantly
+superaccession
+superaccessory
+superaccommodating
+superaccomplished
+superaccrue
+superaccumulate
+superaccumulation
+superaccurate
+superacetate
+superachievement
+superacid
+superacidulated
+superacknowledgment
+superacquisition
+superacromial
+superactive
+superactivity
+superacute
+superadaptable
+superadd
+superaddition
+superadditional
+superadequate
+superadequately
+superadjacent
+superadministration
+superadmirable
+superadmiration
+superadorn
+superadornment
+superaerial
+superaesthetical
+superaffiliation
+superaffiuence
+superagency
+superaggravation
+superagitation
+superagrarian
+superalbal
+superalbuminosis
+superalimentation
+superalkaline
+superalkalinity
+superallowance
+superaltar
+superaltern
+superambitious
+superambulacral
+superanal
+superangelic
+superangelical
+superanimal
+superannuate
+superannuation
+superannuitant
+superannuity
+superapology
+superappreciation
+superaqueous
+superarbiter
+superarbitrary
+superarctic
+superarduous
+superarrogant
+superarseniate
+superartificial
+superartificially
+superaspiration
+superassertion
+superassociate
+superassume
+superastonish
+superastonishment
+superattachment
+superattainable
+superattendant
+superattraction
+superattractive
+superauditor
+superaural
+superaverage
+superavit
+superaward
+superaxillary
+superazotation
+superb
+superbelief
+superbeloved
+superbenefit
+superbenevolent
+superbenign
+superbias
+superbious
+superbity
+superblessed
+superblunder
+superbly
+superbness
+superbold
+superborrow
+superbrain
+superbrave
+superbrute
+superbuild
+superbungalow
+superbusy
+supercabinet
+supercalender
+supercallosal
+supercandid
+supercanine
+supercanonical
+supercanonization
+supercanopy
+supercapable
+supercaption
+supercarbonate
+supercarbonization
+supercarbonize
+supercarbureted
+supercargo
+supercargoship
+supercarpal
+supercatastrophe
+supercatholic
+supercausal
+supercaution
+supercelestial
+supercensure
+supercentral
+supercentrifuge
+supercerebellar
+supercerebral
+superceremonious
+supercharge
+supercharged
+supercharger
+superchemical
+superchivalrous
+superciliary
+superciliosity
+supercilious
+superciliously
+superciliousness
+supercilium
+supercivil
+supercivilization
+supercivilized
+superclaim
+superclass
+superclassified
+supercloth
+supercoincidence
+supercolossal
+supercolumnar
+supercolumniation
+supercombination
+supercombing
+supercommendation
+supercommentary
+supercommentator
+supercommercial
+supercompetition
+supercomplete
+supercomplex
+supercomprehension
+supercompression
+superconception
+superconductive
+superconductivity
+superconductor
+superconfident
+superconfirmation
+superconformable
+superconformist
+superconformity
+superconfusion
+supercongestion
+superconscious
+superconsciousness
+superconsecrated
+superconsequency
+superconservative
+superconstitutional
+supercontest
+supercontribution
+supercontrol
+supercool
+supercordial
+supercorporation
+supercow
+supercredit
+supercrescence
+supercrescent
+supercrime
+supercritic
+supercritical
+supercrowned
+supercrust
+supercube
+supercultivated
+supercurious
+supercycle
+supercynical
+superdainty
+superdanger
+superdebt
+superdeclamatory
+superdecoration
+superdeficit
+superdeity
+superdejection
+superdelegate
+superdelicate
+superdemand
+superdemocratic
+superdemonic
+superdemonstration
+superdensity
+superdeposit
+superdesirous
+superdevelopment
+superdevilish
+superdevotion
+superdiabolical
+superdiabolically
+superdicrotic
+superdifficult
+superdiplomacy
+superdirection
+superdiscount
+superdistention
+superdistribution
+superdividend
+superdivine
+superdivision
+superdoctor
+superdominant
+superdomineering
+superdonation
+superdose
+superdramatist
+superdreadnought
+superdubious
+superduplication
+superdural
+superdying
+superearthly
+supereconomy
+superedification
+superedify
+supereducation
+supereffective
+supereffluence
+supereffluently
+superego
+superelaborate
+superelastic
+superelated
+superelegance
+superelementary
+superelevated
+superelevation
+supereligible
+supereloquent
+supereminence
+supereminency
+supereminent
+supereminently
+superemphasis
+superemphasize
+superendorse
+superendorsement
+superendow
+superenergetic
+superenforcement
+superengrave
+superenrollment
+superepic
+superepoch
+superequivalent
+supererogant
+supererogantly
+supererogate
+supererogation
+supererogative
+supererogator
+supererogatorily
+supererogatory
+superespecial
+superessential
+superessentially
+superestablish
+superestablishment
+supereternity
+superether
+superethical
+superethmoidal
+superevangelical
+superevident
+superexacting
+superexalt
+superexaltation
+superexaminer
+superexceed
+superexceeding
+superexcellence
+superexcellency
+superexcellent
+superexcellently
+superexceptional
+superexcitation
+superexcited
+superexcitement
+superexcrescence
+superexert
+superexertion
+superexiguity
+superexist
+superexistent
+superexpand
+superexpansion
+superexpectation
+superexpenditure
+superexplicit
+superexport
+superexpressive
+superexquisite
+superexquisitely
+superexquisiteness
+superextend
+superextension
+superextol
+superextreme
+superfamily
+superfantastic
+superfarm
+superfat
+superfecundation
+superfecundity
+superfee
+superfeminine
+superfervent
+superfetate
+superfetation
+superfeudation
+superfibrination
+superficial
+superficialism
+superficialist
+superficiality
+superficialize
+superficially
+superficialness
+superficiary
+superficies
+superfidel
+superfinance
+superfine
+superfinical
+superfinish
+superfinite
+superfissure
+superfit
+superfix
+superfleet
+superflexion
+superfluent
+superfluid
+superfluitance
+superfluity
+superfluous
+superfluously
+superfluousness
+superflux
+superfoliaceous
+superfoliation
+superfolly
+superformal
+superformation
+superformidable
+superfortunate
+superfriendly
+superfrontal
+superfructified
+superfulfill
+superfulfillment
+superfunction
+superfunctional
+superfuse
+superfusibility
+superfusible
+superfusion
+supergaiety
+supergallant
+supergene
+supergeneric
+supergenerosity
+supergenerous
+supergenual
+supergiant
+superglacial
+superglorious
+superglottal
+supergoddess
+supergoodness
+supergovern
+supergovernment
+supergraduate
+supergrant
+supergratification
+supergratify
+supergravitate
+supergravitation
+superguarantee
+supergun
+superhandsome
+superhearty
+superheat
+superheater
+superheresy
+superhero
+superheroic
+superhet
+superheterodyne
+superhighway
+superhirudine
+superhistoric
+superhistorical
+superhive
+superhuman
+superhumanity
+superhumanize
+superhumanly
+superhumanness
+superhumeral
+superhypocrite
+superideal
+superignorant
+superillustrate
+superillustration
+superimpend
+superimpending
+superimpersonal
+superimply
+superimportant
+superimposable
+superimpose
+superimposed
+superimposition
+superimposure
+superimpregnated
+superimpregnation
+superimprobable
+superimproved
+superincentive
+superinclination
+superinclusive
+superincomprehensible
+superincrease
+superincumbence
+superincumbency
+superincumbent
+superincumbently
+superindependent
+superindiction
+superindifference
+superindifferent
+superindignant
+superindividual
+superindividualism
+superindividualist
+superinduce
+superinducement
+superinduct
+superinduction
+superindulgence
+superindulgent
+superindustrious
+superindustry
+superinenarrable
+superinfection
+superinfer
+superinference
+superinfeudation
+superinfinite
+superinfinitely
+superinfirmity
+superinfluence
+superinformal
+superinfuse
+superinfusion
+superingenious
+superingenuity
+superinitiative
+superinjustice
+superinnocent
+superinquisitive
+superinsaniated
+superinscription
+superinsist
+superinsistence
+superinsistent
+superinstitute
+superinstitution
+superintellectual
+superintend
+superintendence
+superintendency
+superintendent
+superintendential
+superintendentship
+superintender
+superintense
+superintolerable
+superinundation
+superior
+superioress
+superiority
+superiorly
+superiorness
+superiorship
+superirritability
+superius
+superjacent
+superjudicial
+superjurisdiction
+superjustification
+superknowledge
+superlabial
+superlaborious
+superlactation
+superlapsarian
+superlaryngeal
+superlation
+superlative
+superlatively
+superlativeness
+superlenient
+superlie
+superlikelihood
+superline
+superlocal
+superlogical
+superloyal
+superlucky
+superlunary
+superlunatical
+superluxurious
+supermagnificent
+supermagnificently
+supermalate
+superman
+supermanhood
+supermanifest
+supermanism
+supermanliness
+supermanly
+supermannish
+supermarginal
+supermarine
+supermarket
+supermarvelous
+supermasculine
+supermaterial
+supermathematical
+supermaxilla
+supermaxillary
+supermechanical
+supermedial
+supermedicine
+supermediocre
+supermental
+supermentality
+supermetropolitan
+supermilitary
+supermishap
+supermixture
+supermodest
+supermoisten
+supermolten
+supermoral
+supermorose
+supermunicipal
+supermuscan
+supermystery
+supernacular
+supernaculum
+supernal
+supernalize
+supernally
+supernatant
+supernatation
+supernation
+supernational
+supernationalism
+supernatural
+supernaturaldom
+supernaturalism
+supernaturalist
+supernaturality
+supernaturalize
+supernaturally
+supernaturalness
+supernature
+supernecessity
+supernegligent
+supernormal
+supernormally
+supernormalness
+supernotable
+supernova
+supernumeral
+supernumerariness
+supernumerary
+supernumeraryship
+supernumerous
+supernutrition
+superoanterior
+superobedience
+superobedient
+superobese
+superobject
+superobjection
+superobjectionable
+superobligation
+superobstinate
+superoccipital
+superoctave
+superocular
+superodorsal
+superoexternal
+superoffensive
+superofficious
+superofficiousness
+superofrontal
+superointernal
+superolateral
+superomedial
+superoposterior
+superopposition
+superoptimal
+superoptimist
+superoratorical
+superorbital
+superordain
+superorder
+superordinal
+superordinary
+superordinate
+superordination
+superorganic
+superorganism
+superorganization
+superorganize
+superornament
+superornamental
+superosculate
+superoutput
+superoxalate
+superoxide
+superoxygenate
+superoxygenation
+superparamount
+superparasite
+superparasitic
+superparasitism
+superparliamentary
+superpassage
+superpatient
+superpatriotic
+superpatriotism
+superperfect
+superperfection
+superperson
+superpersonal
+superpersonalism
+superpetrosal
+superphlogisticate
+superphlogistication
+superphosphate
+superphysical
+superpigmentation
+superpious
+superplausible
+superplease
+superplus
+superpolite
+superpolitic
+superponderance
+superponderancy
+superponderant
+superpopulation
+superposable
+superpose
+superposed
+superposition
+superpositive
+superpower
+superpowered
+superpraise
+superprecarious
+superprecise
+superprelatical
+superpreparation
+superprinting
+superprobability
+superproduce
+superproduction
+superproportion
+superprosperous
+superpublicity
+superpure
+superpurgation
+superquadrupetal
+superqualify
+superquote
+superradical
+superrational
+superrationally
+superreaction
+superrealism
+superrealist
+superrefine
+superrefined
+superrefinement
+superreflection
+superreform
+superreformation
+superregal
+superregeneration
+superregenerative
+superregistration
+superregulation
+superreliance
+superremuneration
+superrenal
+superrequirement
+superrespectable
+superresponsible
+superrestriction
+superreward
+superrheumatized
+superrighteous
+superromantic
+superroyal
+supersacerdotal
+supersacral
+supersacred
+supersacrifice
+supersafe
+supersagacious
+supersaint
+supersaintly
+supersalesman
+supersaliency
+supersalient
+supersalt
+supersanction
+supersanguine
+supersanity
+supersarcastic
+supersatisfaction
+supersatisfy
+supersaturate
+supersaturation
+superscandal
+superscholarly
+superscientific
+superscribe
+superscript
+superscription
+superscrive
+superseaman
+supersecret
+supersecretion
+supersecular
+supersecure
+supersedable
+supersede
+supersedeas
+supersedence
+superseder
+supersedure
+superselect
+superseminate
+supersemination
+superseminator
+supersensible
+supersensibly
+supersensitive
+supersensitiveness
+supersensitization
+supersensory
+supersensual
+supersensualism
+supersensualist
+supersensualistic
+supersensuality
+supersensually
+supersensuous
+supersensuousness
+supersentimental
+superseptal
+superseptuaginarian
+superseraphical
+superserious
+superservice
+superserviceable
+superserviceableness
+superserviceably
+supersesquitertial
+supersession
+supersessive
+supersevere
+supershipment
+supersignificant
+supersilent
+supersimplicity
+supersimplify
+supersincerity
+supersingular
+supersistent
+supersize
+supersmart
+supersocial
+supersoil
+supersolar
+supersolemn
+supersolemness
+supersolemnity
+supersolemnly
+supersolicit
+supersolicitation
+supersolid
+supersonant
+supersonic
+supersovereign
+supersovereignty
+superspecialize
+superspecies
+superspecification
+supersphenoid
+supersphenoidal
+superspinous
+superspiritual
+superspirituality
+supersquamosal
+superstage
+superstamp
+superstandard
+superstate
+superstatesman
+superstimulate
+superstimulation
+superstition
+superstitionist
+superstitionless
+superstitious
+superstitiously
+superstitiousness
+superstoical
+superstrain
+superstrata
+superstratum
+superstrenuous
+superstrict
+superstrong
+superstruct
+superstruction
+superstructor
+superstructory
+superstructural
+superstructure
+superstuff
+superstylish
+supersublimated
+supersuborder
+supersubsist
+supersubstantial
+supersubstantiality
+supersubstantiate
+supersubtilized
+supersubtle
+supersufficiency
+supersufficient
+supersulcus
+supersulphate
+supersulphuret
+supersulphureted
+supersulphurize
+supersuperabundance
+supersuperabundant
+supersuperabundantly
+supersuperb
+supersuperior
+supersupremacy
+supersupreme
+supersurprise
+supersuspicious
+supersweet
+supersympathy
+supersyndicate
+supersystem
+supertare
+supertartrate
+supertax
+supertaxation
+supertemporal
+supertempt
+supertemptation
+supertension
+superterranean
+superterraneous
+superterrene
+superterrestrial
+superthankful
+superthorough
+superthyroidism
+supertoleration
+supertonic
+supertotal
+supertower
+supertragic
+supertragical
+supertrain
+supertramp
+supertranscendent
+supertranscendently
+supertreason
+supertrivial
+supertuchun
+supertunic
+supertutelary
+superugly
+superultrafrostified
+superunfit
+superunit
+superunity
+superuniversal
+superuniverse
+superurgent
+supervalue
+supervast
+supervene
+supervenience
+supervenient
+supervenosity
+supervention
+supervestment
+supervexation
+supervictorious
+supervigilant
+supervigorous
+supervirulent
+supervisal
+supervisance
+supervise
+supervision
+supervisionary
+supervisive
+supervisor
+supervisorial
+supervisorship
+supervisory
+supervisual
+supervisure
+supervital
+supervive
+supervolition
+supervoluminous
+supervolute
+superwager
+superwealthy
+superweening
+superwise
+superwoman
+superworldly
+superwrought
+superyacht
+superzealous
+supinate
+supination
+supinator
+supine
+supinely
+supineness
+suppedaneum
+supper
+suppering
+supperless
+suppertime
+supperwards
+supping
+supplace
+supplant
+supplantation
+supplanter
+supplantment
+supple
+supplejack
+supplely
+supplement
+supplemental
+supplementally
+supplementarily
+supplementary
+supplementation
+supplementer
+suppleness
+suppletion
+suppletive
+suppletively
+suppletorily
+suppletory
+suppliable
+supplial
+suppliance
+suppliancy
+suppliant
+suppliantly
+suppliantness
+supplicancy
+supplicant
+supplicantly
+supplicat
+supplicate
+supplicating
+supplicatingly
+supplication
+supplicationer
+supplicative
+supplicator
+supplicatory
+supplicavit
+supplice
+supplier
+suppling
+supply
+support
+supportability
+supportable
+supportableness
+supportably
+supportance
+supporter
+supportful
+supporting
+supportingly
+supportive
+supportless
+supportlessly
+supportress
+supposable
+supposableness
+supposably
+supposal
+suppose
+supposed
+supposedly
+supposer
+supposing
+supposition
+suppositional
+suppositionally
+suppositionary
+suppositionless
+suppositious
+supposititious
+supposititiously
+supposititiousness
+suppositive
+suppositively
+suppository
+suppositum
+suppost
+suppress
+suppressal
+suppressed
+suppressedly
+suppresser
+suppressible
+suppression
+suppressionist
+suppressive
+suppressively
+suppressor
+supprise
+suppurant
+suppurate
+suppuration
+suppurative
+suppuratory
+suprabasidorsal
+suprabranchial
+suprabuccal
+supracaecal
+supracargo
+supracaudal
+supracensorious
+supracentenarian
+suprachorioid
+suprachorioidal
+suprachorioidea
+suprachoroid
+suprachoroidal
+suprachoroidea
+supraciliary
+supraclavicle
+supraclavicular
+supraclusion
+supracommissure
+supraconduction
+supraconductor
+supracondylar
+supracondyloid
+supraconscious
+supraconsciousness
+supracoralline
+supracostal
+supracoxal
+supracranial
+supracretaceous
+supradecompound
+supradental
+supradorsal
+supradural
+suprafeminine
+suprafine
+suprafoliaceous
+suprafoliar
+supraglacial
+supraglenoid
+supraglottic
+supragovernmental
+suprahepatic
+suprahistorical
+suprahuman
+suprahumanity
+suprahyoid
+suprailiac
+suprailium
+supraintellectual
+suprainterdorsal
+suprajural
+supralabial
+supralapsarian
+supralapsarianism
+supralateral
+supralegal
+supraliminal
+supraliminally
+supralineal
+supralinear
+supralocal
+supralocally
+supraloral
+supralunar
+supralunary
+supramammary
+supramarginal
+supramarine
+supramastoid
+supramaxilla
+supramaxillary
+supramaximal
+suprameatal
+supramechanical
+supramedial
+supramental
+supramolecular
+supramoral
+supramortal
+supramundane
+supranasal
+supranational
+supranatural
+supranaturalism
+supranaturalist
+supranaturalistic
+supranature
+supranervian
+supraneural
+supranormal
+supranuclear
+supraoccipital
+supraocclusion
+supraocular
+supraoesophagal
+supraoesophageal
+supraoptimal
+supraoptional
+supraoral
+supraorbital
+supraorbitar
+supraordinary
+supraordinate
+supraordination
+suprapapillary
+suprapedal
+suprapharyngeal
+supraposition
+supraprotest
+suprapubian
+suprapubic
+suprapygal
+supraquantivalence
+supraquantivalent
+suprarational
+suprarationalism
+suprarationality
+suprarenal
+suprarenalectomize
+suprarenalectomy
+suprarenalin
+suprarenine
+suprarimal
+suprasaturate
+suprascapula
+suprascapular
+suprascapulary
+suprascript
+suprasegmental
+suprasensible
+suprasensitive
+suprasensual
+suprasensuous
+supraseptal
+suprasolar
+suprasoriferous
+suprasphanoidal
+supraspinal
+supraspinate
+supraspinatus
+supraspinous
+suprasquamosal
+suprastandard
+suprastapedial
+suprastate
+suprasternal
+suprastigmal
+suprasubtle
+supratemporal
+supraterraneous
+supraterrestrial
+suprathoracic
+supratonsillar
+supratrochlear
+supratropical
+supratympanic
+supravaginal
+supraventricular
+supraversion
+supravital
+supraworld
+supremacy
+suprematism
+supreme
+supremely
+supremeness
+supremity
+sur
+sura
+suraddition
+surah
+surahi
+sural
+suralimentation
+suranal
+surangular
+surat
+surbase
+surbased
+surbasement
+surbate
+surbater
+surbed
+surcease
+surcharge
+surcharger
+surcingle
+surcoat
+surcrue
+surculi
+surculigerous
+surculose
+surculous
+surculus
+surd
+surdation
+surdeline
+surdent
+surdimutism
+surdity
+surdomute
+sure
+surely
+sureness
+sures
+Suresh
+surette
+surety
+suretyship
+surexcitation
+surf
+surface
+surfaced
+surfacedly
+surfaceless
+surfacely
+surfaceman
+surfacer
+surfacing
+surfactant
+surfacy
+surfbird
+surfboard
+surfboarding
+surfboat
+surfboatman
+surfeit
+surfeiter
+surfer
+surficial
+surfle
+surflike
+surfman
+surfmanship
+surfrappe
+surfuse
+surfusion
+surfy
+surge
+surgeful
+surgeless
+surgent
+surgeon
+surgeoncy
+surgeoness
+surgeonfish
+surgeonless
+surgeonship
+surgeproof
+surgerize
+surgery
+surgical
+surgically
+surginess
+surging
+surgy
+Suriana
+Surianaceae
+Suricata
+suricate
+suriga
+Surinam
+surinamine
+surlily
+surliness
+surly
+surma
+surmark
+surmaster
+surmisable
+surmisal
+surmisant
+surmise
+surmised
+surmisedly
+surmiser
+surmount
+surmountable
+surmountableness
+surmountal
+surmounted
+surmounter
+surmullet
+surname
+surnamer
+surnap
+surnay
+surnominal
+surpass
+surpassable
+surpasser
+surpassing
+surpassingly
+surpassingness
+surpeopled
+surplice
+surpliced
+surplicewise
+surplician
+surplus
+surplusage
+surpreciation
+surprint
+surprisable
+surprisal
+surprise
+surprisedly
+surprisement
+surpriseproof
+surpriser
+surprising
+surprisingly
+surprisingness
+surquedry
+surquidry
+surquidy
+surra
+surrealism
+surrealist
+surrealistic
+surrealistically
+surrebound
+surrebut
+surrebuttal
+surrebutter
+surrection
+surrejoin
+surrejoinder
+surrenal
+surrender
+surrenderee
+surrenderer
+surrenderor
+surreption
+surreptitious
+surreptitiously
+surreptitiousness
+surreverence
+surreverently
+surrey
+surrogacy
+surrogate
+surrogateship
+surrogation
+surrosion
+surround
+surrounded
+surroundedly
+surrounder
+surrounding
+surroundings
+sursaturation
+sursolid
+sursumduction
+sursumvergence
+sursumversion
+surtax
+surtout
+surturbrand
+surveillance
+surveillant
+survey
+surveyable
+surveyage
+surveyal
+surveyance
+surveying
+surveyor
+surveyorship
+survigrous
+survivability
+survivable
+survival
+survivalism
+survivalist
+survivance
+survivancy
+survive
+surviver
+surviving
+survivor
+survivoress
+survivorship
+Surya
+Sus
+Susan
+Susanchite
+Susanna
+Susanne
+susannite
+suscept
+susceptance
+susceptibility
+susceptible
+susceptibleness
+susceptibly
+susception
+susceptive
+susceptiveness
+susceptivity
+susceptor
+suscitate
+suscitation
+susi
+Susian
+Susianian
+Susie
+suslik
+susotoxin
+suspect
+suspectable
+suspected
+suspectedness
+suspecter
+suspectful
+suspectfulness
+suspectible
+suspectless
+suspector
+suspend
+suspended
+suspender
+suspenderless
+suspenders
+suspendibility
+suspendible
+suspensation
+suspense
+suspenseful
+suspensely
+suspensibility
+suspensible
+suspension
+suspensive
+suspensively
+suspensiveness
+suspensoid
+suspensor
+suspensorial
+suspensorium
+suspensory
+suspercollate
+suspicion
+suspicionable
+suspicional
+suspicionful
+suspicionless
+suspicious
+suspiciously
+suspiciousness
+suspiration
+suspiratious
+suspirative
+suspire
+suspirious
+Susquehanna
+Sussex
+sussexite
+Sussexman
+sussultatory
+sussultorial
+sustain
+sustainable
+sustained
+sustainer
+sustaining
+sustainingly
+sustainment
+sustanedly
+sustenance
+sustenanceless
+sustentacula
+sustentacular
+sustentaculum
+sustentation
+sustentational
+sustentative
+sustentator
+sustention
+sustentive
+sustentor
+Susu
+susu
+Susuhunan
+Susuidae
+Susumu
+susurr
+susurrant
+susurrate
+susurration
+susurringly
+susurrous
+susurrus
+Sutaio
+suterbery
+suther
+Sutherlandia
+sutile
+sutler
+sutlerage
+sutleress
+sutlership
+sutlery
+Suto
+sutor
+sutorial
+sutorian
+sutorious
+sutra
+Suttapitaka
+suttee
+sutteeism
+sutten
+suttin
+suttle
+Sutu
+sutural
+suturally
+suturation
+suture
+Suu
+suum
+Suwandi
+suwarro
+suwe
+Suyog
+suz
+Suzan
+Suzanne
+suzerain
+suzeraine
+suzerainship
+suzerainty
+Suzy
+Svan
+Svanetian
+Svanish
+Svante
+Svantovit
+svarabhakti
+svarabhaktic
+Svarloka
+svelte
+Svetambara
+sviatonosite
+swa
+Swab
+swab
+swabber
+swabberly
+swabble
+Swabian
+swack
+swacken
+swacking
+swad
+swaddle
+swaddlebill
+swaddler
+swaddling
+swaddy
+Swadeshi
+Swadeshism
+swag
+swagbellied
+swagbelly
+swage
+swager
+swagger
+swaggerer
+swaggering
+swaggeringly
+swaggie
+swaggy
+swaglike
+swagman
+swagsman
+Swahilese
+Swahili
+Swahilian
+Swahilize
+swaimous
+swain
+swainish
+swainishness
+swainship
+Swainsona
+swainsona
+swaird
+swale
+swaler
+swaling
+swalingly
+swallet
+swallo
+swallow
+swallowable
+swallower
+swallowlike
+swallowling
+swallowpipe
+swallowtail
+swallowwort
+swam
+swami
+swamp
+swampable
+swampberry
+swamper
+swampish
+swampishness
+swampland
+swampside
+swampweed
+swampwood
+swampy
+Swamy
+swan
+swandown
+swanflower
+swang
+swangy
+swanherd
+swanhood
+swanimote
+swank
+swanker
+swankily
+swankiness
+swanking
+swanky
+swanlike
+swanmark
+swanmarker
+swanmarking
+swanneck
+swannecked
+swanner
+swannery
+swannish
+swanny
+swanskin
+Swantevit
+swanweed
+swanwort
+swap
+swape
+swapper
+swapping
+swaraj
+swarajism
+swarajist
+swarbie
+sward
+swardy
+sware
+swarf
+swarfer
+swarm
+swarmer
+swarming
+swarmy
+swarry
+swart
+swartback
+swarth
+swarthily
+swarthiness
+swarthness
+swarthy
+swartish
+swartly
+swartness
+swartrutter
+swartrutting
+swarty
+Swartzbois
+Swartzia
+swarve
+swash
+swashbuckle
+swashbuckler
+swashbucklerdom
+swashbucklering
+swashbucklery
+swashbuckling
+swasher
+swashing
+swashway
+swashwork
+swashy
+swastika
+swastikaed
+Swat
+swat
+swatch
+Swatchel
+swatcher
+swatchway
+swath
+swathable
+swathband
+swathe
+swatheable
+swather
+swathy
+Swati
+Swatow
+swatter
+swattle
+swaver
+sway
+swayable
+swayed
+swayer
+swayful
+swaying
+swayingly
+swayless
+Swazi
+Swaziland
+sweal
+sweamish
+swear
+swearer
+swearingly
+swearword
+sweat
+sweatband
+sweatbox
+sweated
+sweater
+sweatful
+sweath
+sweatily
+sweatiness
+sweating
+sweatless
+sweatproof
+sweatshop
+sweatweed
+sweaty
+Swede
+Swedenborgian
+Swedenborgianism
+Swedenborgism
+swedge
+Swedish
+sweeny
+sweep
+sweepable
+sweepage
+sweepback
+sweepboard
+sweepdom
+sweeper
+sweeperess
+sweepforward
+sweeping
+sweepingly
+sweepingness
+sweepings
+sweepstake
+sweepwasher
+sweepwashings
+sweepy
+sweer
+sweered
+sweet
+sweetberry
+sweetbread
+sweetbrier
+sweetbriery
+sweeten
+sweetener
+sweetening
+sweetfish
+sweetful
+sweetheart
+sweetheartdom
+sweethearted
+sweetheartedness
+sweethearting
+sweetheartship
+sweetie
+sweeting
+sweetish
+sweetishly
+sweetishness
+sweetleaf
+sweetless
+sweetlike
+sweetling
+sweetly
+sweetmaker
+sweetmeat
+sweetmouthed
+sweetness
+sweetroot
+sweetshop
+sweetsome
+sweetsop
+sweetwater
+sweetweed
+sweetwood
+sweetwort
+sweety
+swego
+swelchie
+swell
+swellage
+swelldom
+swelldoodle
+swelled
+sweller
+swellfish
+swelling
+swellish
+swellishness
+swellmobsman
+swellness
+swelltoad
+swelly
+swelp
+swelt
+swelter
+sweltering
+swelteringly
+swelth
+sweltry
+swelty
+swep
+swept
+swerd
+Swertia
+swerve
+swerveless
+swerver
+swervily
+swick
+swidge
+Swietenia
+swift
+swiften
+swifter
+swiftfoot
+swiftlet
+swiftlike
+swiftness
+swifty
+swig
+swigger
+swiggle
+swile
+swill
+swillbowl
+swiller
+swilltub
+swim
+swimmable
+swimmer
+swimmeret
+swimmily
+swimminess
+swimming
+swimmingly
+swimmingness
+swimmist
+swimmy
+swimsuit
+swimy
+Swinburnesque
+Swinburnian
+swindle
+swindleable
+swindledom
+swindler
+swindlership
+swindlery
+swindling
+swindlingly
+swine
+swinebread
+swinecote
+swinehead
+swineherd
+swineherdship
+swinehood
+swinehull
+swinelike
+swinely
+swinepipe
+swinery
+swinestone
+swinesty
+swiney
+swing
+swingable
+swingback
+swingdevil
+swingdingle
+swinge
+swingeing
+swinger
+swinging
+swingingly
+Swingism
+swingle
+swinglebar
+swingletail
+swingletree
+swingstock
+swingtree
+swingy
+swinish
+swinishly
+swinishness
+swink
+swinney
+swipe
+swiper
+swipes
+swiple
+swipper
+swipy
+swird
+swire
+swirl
+swirlingly
+swirly
+swirring
+swish
+swisher
+swishing
+swishingly
+swishy
+Swiss
+swiss
+Swissess
+swissing
+switch
+switchback
+switchbacker
+switchboard
+switched
+switchel
+switcher
+switchgear
+switching
+switchkeeper
+switchlike
+switchman
+switchy
+switchyard
+swith
+swithe
+swithen
+swither
+Swithin
+Switzer
+Switzeress
+swivel
+swiveled
+swiveleye
+swiveleyed
+swivellike
+swivet
+swivetty
+swiz
+swizzle
+swizzler
+swob
+swollen
+swollenly
+swollenness
+swom
+swonken
+swoon
+swooned
+swooning
+swooningly
+swoony
+swoop
+swooper
+swoosh
+sword
+swordbill
+swordcraft
+swordfish
+swordfisherman
+swordfishery
+swordfishing
+swordick
+swording
+swordless
+swordlet
+swordlike
+swordmaker
+swordmaking
+swordman
+swordmanship
+swordplay
+swordplayer
+swordproof
+swordsman
+swordsmanship
+swordsmith
+swordster
+swordstick
+swordswoman
+swordtail
+swordweed
+swore
+sworn
+swosh
+swot
+swotter
+swounds
+swow
+swum
+swung
+swungen
+swure
+syagush
+sybarism
+sybarist
+Sybarital
+Sybaritan
+Sybarite
+Sybaritic
+Sybaritical
+Sybaritically
+Sybaritish
+sybaritism
+Sybil
+sybotic
+sybotism
+sycamine
+sycamore
+syce
+sycee
+sychnocarpous
+sycock
+sycoma
+sycomancy
+Sycon
+Syconaria
+syconarian
+syconate
+Sycones
+syconid
+Syconidae
+syconium
+syconoid
+syconus
+sycophancy
+sycophant
+sycophantic
+sycophantical
+sycophantically
+sycophantish
+sycophantishly
+sycophantism
+sycophantize
+sycophantry
+sycosiform
+sycosis
+Syd
+Sydneian
+Sydneyite
+sye
+Syed
+syenite
+syenitic
+syenodiorite
+syenogabbro
+sylid
+syllab
+syllabarium
+syllabary
+syllabatim
+syllabation
+syllabe
+syllabi
+syllabic
+syllabical
+syllabically
+syllabicate
+syllabication
+syllabicness
+syllabification
+syllabify
+syllabism
+syllabize
+syllable
+syllabled
+syllabus
+syllepsis
+sylleptic
+sylleptical
+sylleptically
+Syllidae
+syllidian
+Syllis
+sylloge
+syllogism
+syllogist
+syllogistic
+syllogistical
+syllogistically
+syllogistics
+syllogization
+syllogize
+syllogizer
+sylph
+sylphic
+sylphid
+sylphidine
+sylphish
+sylphize
+sylphlike
+Sylphon
+sylphy
+sylva
+sylvae
+sylvage
+Sylvan
+sylvan
+sylvanesque
+sylvanite
+sylvanitic
+sylvanity
+sylvanize
+sylvanly
+sylvanry
+sylvate
+sylvatic
+Sylvester
+sylvester
+sylvestral
+sylvestrene
+Sylvestrian
+sylvestrian
+Sylvestrine
+Sylvia
+Sylvian
+sylvic
+Sylvicolidae
+sylvicoline
+Sylviidae
+Sylviinae
+sylviine
+sylvine
+sylvinite
+sylvite
+symbasic
+symbasical
+symbasically
+symbasis
+symbiogenesis
+symbiogenetic
+symbiogenetically
+symbion
+symbiont
+symbiontic
+symbionticism
+symbiosis
+symbiot
+symbiote
+symbiotic
+symbiotically
+symbiotics
+symbiotism
+symbiotrophic
+symblepharon
+symbol
+symbolaeography
+symbolater
+symbolatrous
+symbolatry
+symbolic
+symbolical
+symbolically
+symbolicalness
+symbolicly
+symbolics
+symbolism
+symbolist
+symbolistic
+symbolistical
+symbolistically
+symbolization
+symbolize
+symbolizer
+symbolofideism
+symbological
+symbologist
+symbolography
+symbology
+symbololatry
+symbolology
+symbolry
+symbouleutic
+symbranch
+Symbranchia
+symbranchiate
+symbranchoid
+symbranchous
+symmachy
+symmedian
+symmelia
+symmelian
+symmelus
+symmetalism
+symmetral
+symmetric
+symmetrical
+symmetricality
+symmetrically
+symmetricalness
+symmetrist
+symmetrization
+symmetrize
+symmetroid
+symmetrophobia
+symmetry
+symmorphic
+symmorphism
+sympalmograph
+sympathectomize
+sympathectomy
+sympathetectomy
+sympathetic
+sympathetical
+sympathetically
+sympatheticism
+sympatheticity
+sympatheticness
+sympatheticotonia
+sympatheticotonic
+sympathetoblast
+sympathicoblast
+sympathicotonia
+sympathicotonic
+sympathicotripsy
+sympathism
+sympathist
+sympathize
+sympathizer
+sympathizing
+sympathizingly
+sympathoblast
+sympatholysis
+sympatholytic
+sympathomimetic
+sympathy
+sympatric
+sympatry
+Sympetalae
+sympetalous
+Symphalangus
+symphenomena
+symphenomenal
+symphile
+symphilic
+symphilism
+symphilous
+symphily
+symphogenous
+symphonetic
+symphonia
+symphonic
+symphonically
+symphonion
+symphonious
+symphoniously
+symphonist
+symphonize
+symphonous
+symphony
+Symphoricarpos
+symphoricarpous
+symphrase
+symphronistic
+symphyantherous
+symphycarpous
+Symphyla
+symphylan
+symphyllous
+symphylous
+symphynote
+symphyogenesis
+symphyogenetic
+symphyostemonous
+symphyseal
+symphyseotomy
+symphysial
+symphysian
+symphysic
+symphysion
+symphysiotomy
+symphysis
+symphysodactylia
+symphysotomy
+symphysy
+Symphyta
+symphytic
+symphytically
+symphytism
+symphytize
+Symphytum
+sympiesometer
+symplasm
+symplectic
+Symplegades
+symplesite
+Symplocaceae
+symplocaceous
+Symplocarpus
+symploce
+Symplocos
+sympode
+sympodia
+sympodial
+sympodially
+sympodium
+sympolity
+symposia
+symposiac
+symposiacal
+symposial
+symposiarch
+symposiast
+symposiastic
+symposion
+symposium
+symptom
+symptomatic
+symptomatical
+symptomatically
+symptomatics
+symptomatize
+symptomatography
+symptomatological
+symptomatologically
+symptomatology
+symptomical
+symptomize
+symptomless
+symptosis
+symtomology
+synacme
+synacmic
+synacmy
+synactic
+synadelphite
+synaeresis
+synagogal
+synagogian
+synagogical
+synagogism
+synagogist
+synagogue
+synalgia
+synalgic
+synallactic
+synallagmatic
+synaloepha
+synanastomosis
+synange
+synangia
+synangial
+synangic
+synangium
+synanthema
+synantherological
+synantherologist
+synantherology
+synantherous
+synanthesis
+synanthetic
+synanthic
+synanthous
+synanthrose
+synanthy
+synaphea
+synaposematic
+synapse
+synapses
+Synapsida
+synapsidan
+synapsis
+synaptai
+synaptase
+synapte
+synaptene
+Synaptera
+synapterous
+synaptic
+synaptical
+synaptically
+synapticula
+synapticulae
+synapticular
+synapticulate
+synapticulum
+Synaptosauria
+synaptychus
+synarchical
+synarchism
+synarchy
+synarmogoid
+Synarmogoidea
+synarquism
+synartesis
+synartete
+synartetic
+synarthrodia
+synarthrodial
+synarthrodially
+synarthrosis
+Synascidiae
+synascidian
+synastry
+synaxar
+synaxarion
+synaxarist
+synaxarium
+synaxary
+synaxis
+sync
+Syncarida
+syncarp
+syncarpia
+syncarpium
+syncarpous
+syncarpy
+syncategorematic
+syncategorematical
+syncategorematically
+syncategoreme
+syncephalic
+syncephalus
+syncerebral
+syncerebrum
+synch
+synchitic
+synchondoses
+synchondrosial
+synchondrosially
+synchondrosis
+synchondrotomy
+synchoresis
+synchro
+synchroflash
+synchromesh
+synchronal
+synchrone
+synchronic
+synchronical
+synchronically
+synchronism
+synchronistic
+synchronistical
+synchronistically
+synchronizable
+synchronization
+synchronize
+synchronized
+synchronizer
+synchronograph
+synchronological
+synchronology
+synchronous
+synchronously
+synchronousness
+synchrony
+synchroscope
+synchrotron
+synchysis
+Synchytriaceae
+Synchytrium
+syncladous
+synclastic
+synclinal
+synclinally
+syncline
+synclinical
+synclinore
+synclinorial
+synclinorian
+synclinorium
+synclitic
+syncliticism
+synclitism
+syncoelom
+syncopal
+syncopate
+syncopated
+syncopation
+syncopator
+syncope
+syncopic
+syncopism
+syncopist
+syncopize
+syncotyledonous
+syncracy
+syncraniate
+syncranterian
+syncranteric
+syncrasy
+syncretic
+syncretical
+syncreticism
+syncretion
+syncretism
+syncretist
+syncretistic
+syncretistical
+syncretize
+syncrisis
+Syncrypta
+syncryptic
+syncytia
+syncytial
+syncytioma
+syncytiomata
+syncytium
+syndactyl
+syndactylia
+syndactylic
+syndactylism
+syndactylous
+syndactyly
+syndectomy
+synderesis
+syndesis
+syndesmectopia
+syndesmitis
+syndesmography
+syndesmology
+syndesmoma
+Syndesmon
+syndesmoplasty
+syndesmorrhaphy
+syndesmosis
+syndesmotic
+syndesmotomy
+syndetic
+syndetical
+syndetically
+syndic
+syndical
+syndicalism
+syndicalist
+syndicalistic
+syndicalize
+syndicate
+syndicateer
+syndication
+syndicator
+syndicship
+syndoc
+syndrome
+syndromic
+syndyasmian
+Syndyoceras
+syne
+synecdoche
+synecdochic
+synecdochical
+synecdochically
+synecdochism
+synechia
+synechiological
+synechiology
+synechological
+synechology
+synechotomy
+synechthran
+synechthry
+synecology
+synecphonesis
+synectic
+synecticity
+Synedra
+synedral
+Synedria
+synedria
+synedrial
+synedrian
+Synedrion
+synedrion
+Synedrium
+synedrium
+synedrous
+syneidesis
+synema
+synemmenon
+synenergistic
+synenergistical
+synenergistically
+synentognath
+Synentognathi
+synentognathous
+syneresis
+synergastic
+synergetic
+synergia
+synergic
+synergically
+synergid
+synergidae
+synergidal
+synergism
+synergist
+synergistic
+synergistical
+synergistically
+synergize
+synergy
+synerize
+synesis
+synesthesia
+synesthetic
+synethnic
+syngamic
+syngamous
+syngamy
+Syngenesia
+syngenesian
+syngenesious
+syngenesis
+syngenetic
+syngenic
+syngenism
+syngenite
+Syngnatha
+Syngnathi
+syngnathid
+Syngnathidae
+syngnathoid
+syngnathous
+Syngnathus
+syngraph
+synizesis
+synkaryon
+synkatathesis
+synkinesia
+synkinesis
+synkinetic
+synneurosis
+synneusis
+synochoid
+synochus
+synocreate
+synod
+synodal
+synodalian
+synodalist
+synodally
+synodical
+synodically
+synodist
+synodite
+synodontid
+Synodontidae
+synodontoid
+synodsman
+Synodus
+synoecete
+synoeciosis
+synoecious
+synoeciously
+synoeciousness
+synoecism
+synoecize
+synoecy
+synoicous
+synomosy
+synonym
+synonymatic
+synonymic
+synonymical
+synonymicon
+synonymics
+synonymist
+synonymity
+synonymize
+synonymous
+synonymously
+synonymousness
+synonymy
+synophthalmus
+synopses
+synopsis
+synopsize
+synopsy
+synoptic
+synoptical
+synoptically
+Synoptist
+synoptist
+Synoptistic
+synorchidism
+synorchism
+synorthographic
+synosteology
+synosteosis
+synostose
+synostosis
+synostotic
+synostotical
+synostotically
+synousiacs
+synovectomy
+synovia
+synovial
+synovially
+synoviparous
+synovitic
+synovitis
+synpelmous
+synrhabdosome
+synsacral
+synsacrum
+synsepalous
+synspermous
+synsporous
+syntactic
+syntactical
+syntactically
+syntactician
+syntactics
+syntagma
+syntan
+syntasis
+syntax
+syntaxis
+syntaxist
+syntechnic
+syntectic
+syntelome
+syntenosis
+synteresis
+syntexis
+syntheme
+synthermal
+syntheses
+synthesis
+synthesism
+synthesist
+synthesization
+synthesize
+synthesizer
+synthete
+synthetic
+synthetical
+synthetically
+syntheticism
+synthetism
+synthetist
+synthetization
+synthetize
+synthetizer
+synthol
+synthroni
+synthronoi
+synthronos
+synthronus
+syntomia
+syntomy
+syntone
+syntonic
+syntonical
+syntonically
+syntonin
+syntonization
+syntonize
+syntonizer
+syntonolydian
+syntonous
+syntony
+syntripsis
+syntrope
+syntrophic
+syntropic
+syntropical
+syntropy
+syntype
+syntypic
+syntypicism
+Synura
+synusia
+synusiast
+syodicon
+sypher
+syphilide
+syphilidography
+syphilidologist
+syphiliphobia
+syphilis
+syphilitic
+syphilitically
+syphilization
+syphilize
+syphiloderm
+syphilodermatous
+syphilogenesis
+syphilogeny
+syphilographer
+syphilography
+syphiloid
+syphilologist
+syphilology
+syphiloma
+syphilomatous
+syphilophobe
+syphilophobia
+syphilophobic
+syphilopsychosis
+syphilosis
+syphilous
+Syracusan
+syre
+Syriac
+Syriacism
+Syriacist
+Syrian
+Syrianic
+Syrianism
+Syrianize
+Syriarch
+Syriasm
+syringa
+syringadenous
+syringe
+syringeal
+syringeful
+syringes
+syringin
+syringitis
+syringium
+syringocoele
+syringomyelia
+syringomyelic
+syringotome
+syringotomy
+syrinx
+Syriologist
+Syrma
+syrma
+Syrmian
+Syrnium
+Syrophoenician
+syrphian
+syrphid
+Syrphidae
+syrt
+syrtic
+Syrtis
+syrup
+syruped
+syruper
+syruplike
+syrupy
+Syryenian
+syssarcosis
+syssel
+sysselman
+syssiderite
+syssitia
+syssition
+systaltic
+systasis
+systatic
+system
+systematic
+systematical
+systematicality
+systematically
+systematician
+systematicness
+systematics
+systematism
+systematist
+systematization
+systematize
+systematizer
+systematology
+systemed
+systemic
+systemically
+systemist
+systemizable
+systemization
+systemize
+systemizer
+systemless
+systemproof
+systemwise
+systilius
+systolated
+systole
+systolic
+systyle
+systylous
+Syun
+syzygetic
+syzygetically
+syzygial
+syzygium
+syzygy
+szaibelyite
+Szekler
+szlachta
+szopelka
+T
+t
+ta
+taa
+Taal
+Taalbond
+taar
+Tab
+tab
+tabacin
+tabacosis
+tabacum
+tabanid
+Tabanidae
+tabaniform
+tabanuco
+Tabanus
+tabard
+tabarded
+tabaret
+Tabasco
+tabasheer
+tabashir
+tabaxir
+tabbarea
+tabber
+tabbinet
+Tabby
+tabby
+Tabebuia
+tabefaction
+tabefy
+tabella
+Tabellaria
+Tabellariaceae
+tabellion
+taberdar
+taberna
+tabernacle
+tabernacler
+tabernacular
+Tabernaemontana
+tabernariae
+tabes
+tabescence
+tabescent
+tabet
+tabetic
+tabetiform
+tabetless
+tabic
+tabid
+tabidly
+tabidness
+tabific
+tabifical
+tabinet
+Tabira
+Tabitha
+tabitude
+tabla
+tablature
+table
+tableau
+tableaux
+tablecloth
+tableclothwise
+tableclothy
+tabled
+tablefellow
+tablefellowship
+tableful
+tableity
+tableland
+tableless
+tablelike
+tablemaid
+tablemaker
+tablemaking
+tableman
+tablemate
+tabler
+tables
+tablespoon
+tablespoonful
+tablet
+tabletary
+tableware
+tablewise
+tabling
+tablinum
+Tabloid
+tabloid
+tabog
+taboo
+tabooism
+tabooist
+taboot
+taboparalysis
+taboparesis
+taboparetic
+tabophobia
+tabor
+taborer
+taboret
+taborin
+Taborite
+tabour
+tabourer
+tabouret
+tabret
+Tabriz
+tabu
+tabula
+tabulable
+tabular
+tabulare
+tabularium
+tabularization
+tabularize
+tabularly
+tabulary
+Tabulata
+tabulate
+tabulated
+tabulation
+tabulator
+tabulatory
+tabule
+tabuliform
+tabut
+tacahout
+tacamahac
+Tacana
+Tacanan
+Tacca
+Taccaceae
+taccaceous
+taccada
+tach
+Tachardia
+Tachardiinae
+tache
+tacheless
+tacheography
+tacheometer
+tacheometric
+tacheometry
+tacheture
+tachhydrite
+tachibana
+Tachina
+Tachinaria
+tachinarian
+tachinid
+Tachinidae
+tachiol
+tachistoscope
+tachistoscopic
+tachogram
+tachograph
+tachometer
+tachometry
+tachoscope
+tachycardia
+tachycardiac
+tachygen
+tachygenesis
+tachygenetic
+tachygenic
+tachyglossal
+tachyglossate
+Tachyglossidae
+Tachyglossus
+tachygraph
+tachygrapher
+tachygraphic
+tachygraphical
+tachygraphically
+tachygraphist
+tachygraphometer
+tachygraphometry
+tachygraphy
+tachyhydrite
+tachyiatry
+tachylalia
+tachylite
+tachylyte
+tachylytic
+tachymeter
+tachymetric
+tachymetry
+tachyphagia
+tachyphasia
+tachyphemia
+tachyphrasia
+tachyphrenia
+tachypnea
+tachyscope
+tachyseism
+tachysterol
+tachysystole
+tachythanatous
+tachytomy
+tachytype
+tacit
+Tacitean
+tacitly
+tacitness
+taciturn
+taciturnist
+taciturnity
+taciturnly
+tack
+tacker
+tacket
+tackety
+tackey
+tackiness
+tacking
+tackingly
+tackle
+tackled
+tackleless
+tackleman
+tackler
+tackless
+tackling
+tackproof
+tacksman
+tacky
+taclocus
+tacmahack
+tacnode
+Taconian
+Taconic
+taconite
+tacso
+Tacsonia
+tact
+tactable
+tactful
+tactfully
+tactfulness
+tactic
+tactical
+tactically
+tactician
+tactics
+tactile
+tactilist
+tactility
+tactilogical
+tactinvariant
+taction
+tactite
+tactive
+tactless
+tactlessly
+tactlessness
+tactometer
+tactor
+tactosol
+tactual
+tactualist
+tactuality
+tactually
+tactus
+tacuacine
+Taculli
+Tad
+tad
+tade
+Tadjik
+Tadousac
+tadpole
+tadpoledom
+tadpolehood
+tadpolelike
+tadpolism
+tae
+tael
+taen
+taenia
+taeniacidal
+taeniacide
+Taeniada
+taeniafuge
+taenial
+taenian
+taeniasis
+Taeniata
+taeniate
+taenicide
+Taenidia
+taenidium
+taeniform
+taenifuge
+taeniiform
+Taeniobranchia
+taeniobranchiate
+Taeniodonta
+Taeniodontia
+Taeniodontidae
+Taenioglossa
+taenioglossate
+taenioid
+taeniosome
+Taeniosomi
+taeniosomous
+taenite
+taennin
+Taetsia
+taffarel
+tafferel
+taffeta
+taffety
+taffle
+taffrail
+Taffy
+taffy
+taffylike
+taffymaker
+taffymaking
+taffywise
+tafia
+tafinagh
+taft
+tafwiz
+tag
+Tagabilis
+Tagakaolo
+Tagal
+Tagala
+Tagalize
+Tagalo
+Tagalog
+tagasaste
+Tagassu
+Tagassuidae
+tagatose
+Tagaur
+Tagbanua
+tagboard
+Tagetes
+tagetol
+tagetone
+tagged
+tagger
+taggle
+taggy
+Taghlik
+tagilite
+Tagish
+taglet
+Tagliacotian
+Tagliacozzian
+taglike
+taglock
+tagrag
+tagraggery
+tagsore
+tagtail
+tagua
+taguan
+Tagula
+tagwerk
+taha
+Tahami
+taheen
+tahil
+tahin
+Tahiti
+Tahitian
+tahkhana
+Tahltan
+tahr
+tahseeldar
+tahsil
+tahsildar
+Tahsin
+tahua
+Tai
+tai
+taiaha
+taich
+taiga
+taigle
+taiglesome
+taihoa
+taikhana
+tail
+tailage
+tailband
+tailboard
+tailed
+tailender
+tailer
+tailet
+tailfirst
+tailflower
+tailforemost
+tailge
+tailhead
+tailing
+tailings
+taille
+tailless
+taillessly
+taillessness
+taillie
+taillight
+taillike
+tailor
+tailorage
+tailorbird
+tailorcraft
+tailordom
+tailoress
+tailorhood
+tailoring
+tailorism
+tailorization
+tailorize
+tailorless
+tailorlike
+tailorly
+tailorman
+tailorship
+tailorwise
+tailory
+tailpiece
+tailpin
+tailpipe
+tailrace
+tailsman
+tailstock
+Tailte
+tailward
+tailwards
+tailwise
+taily
+tailzee
+tailzie
+taimen
+taimyrite
+tain
+Tainan
+Taino
+taint
+taintable
+taintless
+taintlessly
+taintlessness
+taintment
+taintor
+taintproof
+tainture
+taintworm
+Tainui
+taipan
+Taipi
+Taiping
+taipo
+tairge
+tairger
+tairn
+taisch
+taise
+Taisho
+taissle
+taistrel
+taistril
+Tait
+tait
+taiver
+taivers
+taivert
+Taiwanhemp
+Taiyal
+taj
+Tajik
+takable
+takamaka
+Takao
+takar
+Takayuki
+take
+takedown
+takedownable
+takeful
+Takelma
+taken
+taker
+Takeuchi
+Takhaar
+Takhtadjy
+Takilman
+takin
+taking
+takingly
+takingness
+takings
+Takitumu
+takosis
+takt
+Taku
+taky
+takyr
+Tal
+tal
+tala
+talabon
+talahib
+Talaing
+talaje
+talak
+talalgia
+Talamanca
+Talamancan
+talanton
+talao
+talapoin
+talar
+talari
+talaria
+talaric
+talayot
+talbot
+talbotype
+talc
+talcer
+Talcher
+talcky
+talclike
+talcochlorite
+talcoid
+talcomicaceous
+talcose
+talcous
+talcum
+tald
+tale
+talebearer
+talebearing
+talebook
+talecarrier
+talecarrying
+taled
+taleful
+Talegallinae
+Talegallus
+talemaster
+talemonger
+talemongering
+talent
+talented
+talentless
+talepyet
+taler
+tales
+talesman
+taleteller
+taletelling
+tali
+Taliacotian
+taliage
+taliation
+taliera
+taligrade
+Talinum
+talion
+talionic
+talipat
+taliped
+talipedic
+talipes
+talipomanus
+talipot
+talis
+talisay
+Talishi
+talisman
+talismanic
+talismanical
+talismanically
+talismanist
+talite
+Talitha
+talitol
+talk
+talkability
+talkable
+talkathon
+talkative
+talkatively
+talkativeness
+talker
+talkfest
+talkful
+talkie
+talkiness
+talking
+talkworthy
+talky
+tall
+tallage
+tallageability
+tallageable
+tallboy
+tallegalane
+taller
+tallero
+talles
+tallet
+talliable
+talliage
+talliar
+talliate
+tallier
+tallis
+tallish
+tallit
+tallith
+tallness
+talloel
+tallote
+tallow
+tallowberry
+tallower
+tallowiness
+tallowing
+tallowish
+tallowlike
+tallowmaker
+tallowmaking
+tallowman
+tallowroot
+tallowweed
+tallowwood
+tallowy
+tallwood
+tally
+tallyho
+tallyman
+tallymanship
+tallywag
+tallywalka
+tallywoman
+talma
+talmouse
+Talmud
+Talmudic
+Talmudical
+Talmudism
+Talmudist
+Talmudistic
+Talmudistical
+Talmudization
+Talmudize
+talocalcaneal
+talocalcanean
+talocrural
+talofibular
+talon
+talonavicular
+taloned
+talonic
+talonid
+taloscaphoid
+talose
+talotibial
+Talpa
+talpacoti
+talpatate
+talpetate
+talpicide
+talpid
+Talpidae
+talpiform
+talpify
+talpine
+talpoid
+talthib
+Taltushtuntude
+Taluche
+Taluhet
+taluk
+taluka
+talukdar
+talukdari
+talus
+taluto
+talwar
+talwood
+Talyshin
+tam
+Tama
+tamability
+tamable
+tamableness
+tamably
+Tamaceae
+Tamachek
+tamacoare
+tamale
+Tamanac
+Tamanaca
+Tamanaco
+tamandu
+tamandua
+tamanoas
+tamanoir
+tamanowus
+tamanu
+Tamara
+tamara
+tamarack
+tamaraite
+tamarao
+Tamaricaceae
+tamaricaceous
+tamarin
+tamarind
+Tamarindus
+tamarisk
+Tamarix
+Tamaroa
+tamas
+tamasha
+Tamashek
+Tamaulipecan
+tambac
+tambaroora
+tamber
+tambo
+tamboo
+Tambookie
+tambookie
+tambor
+Tambouki
+tambour
+tamboura
+tambourer
+tambouret
+tambourgi
+tambourin
+tambourinade
+tambourine
+tambourist
+tambreet
+Tambuki
+tamburan
+tamburello
+Tame
+tame
+tamehearted
+tameheartedness
+tamein
+tameless
+tamelessly
+tamelessness
+tamely
+tameness
+tamer
+Tamerlanism
+Tamias
+tamidine
+Tamil
+Tamilian
+Tamilic
+tamis
+tamise
+tamlung
+Tammanial
+Tammanize
+Tammany
+Tammanyism
+Tammanyite
+Tammanyize
+tammie
+tammock
+Tammy
+tammy
+Tamonea
+Tamoyo
+tamp
+tampala
+tampan
+tampang
+tamper
+tamperer
+tamperproof
+tampin
+tamping
+tampion
+tampioned
+tampon
+tamponade
+tamponage
+tamponment
+tampoon
+Tamul
+Tamulian
+Tamulic
+Tamus
+Tamworth
+Tamzine
+tan
+tana
+tanacetin
+tanacetone
+Tanacetum
+tanacetyl
+tanach
+tanager
+Tanagra
+Tanagraean
+Tanagridae
+tanagrine
+tanagroid
+Tanaidacea
+tanaist
+tanak
+Tanaka
+Tanala
+tanan
+tanbark
+tanbur
+tancel
+Tanchelmian
+tanchoir
+tandan
+tandem
+tandemer
+tandemist
+tandemize
+tandemwise
+tandle
+tandour
+Tandy
+tane
+tanekaha
+Tang
+tang
+tanga
+Tangaloa
+tangalung
+tangantangan
+Tangaridae
+Tangaroa
+Tangaroan
+tanged
+tangeite
+tangelo
+tangence
+tangency
+tangent
+tangental
+tangentally
+tangential
+tangentiality
+tangentially
+tangently
+tanger
+Tangerine
+tangfish
+tangham
+tanghan
+tanghin
+Tanghinia
+tanghinin
+tangi
+tangibile
+tangibility
+tangible
+tangibleness
+tangibly
+tangie
+Tangier
+tangilin
+Tangipahoa
+tangka
+tanglad
+tangle
+tangleberry
+tanglefish
+tanglefoot
+tanglement
+tangleproof
+tangler
+tangleroot
+tanglesome
+tangless
+tanglewrack
+tangling
+tanglingly
+tangly
+tango
+tangoreceptor
+tangram
+tangs
+tangue
+tanguile
+tangum
+tangun
+Tangut
+tangy
+tanh
+tanha
+tanhouse
+tania
+tanica
+tanier
+tanist
+tanistic
+tanistry
+tanistship
+Tanite
+Tanitic
+tanjib
+tanjong
+tank
+tanka
+tankage
+tankah
+tankard
+tanked
+tanker
+tankerabogus
+tankert
+tankette
+tankful
+tankle
+tankless
+tanklike
+tankmaker
+tankmaking
+tankman
+tankodrome
+tankroom
+tankwise
+tanling
+tannable
+tannage
+tannaic
+tannaim
+tannaitic
+tannalbin
+tannase
+tannate
+tanned
+tanner
+tannery
+tannic
+tannide
+tanniferous
+tannin
+tannined
+tanning
+tanninlike
+tannocaffeic
+tannogallate
+tannogallic
+tannogelatin
+tannogen
+tannoid
+tannometer
+tannyl
+Tano
+tanoa
+Tanoan
+tanproof
+tanquam
+Tanquelinian
+tanquen
+tanrec
+tanstuff
+tansy
+tantadlin
+tantafflin
+tantalate
+Tantalean
+Tantalian
+Tantalic
+tantalic
+tantaliferous
+tantalifluoride
+tantalite
+tantalization
+tantalize
+tantalizer
+tantalizingly
+tantalizingness
+tantalofluoride
+tantalum
+Tantalus
+tantamount
+tantara
+tantarabobus
+tantarara
+tanti
+tantivy
+tantle
+Tantony
+tantra
+tantric
+tantrik
+tantrism
+tantrist
+tantrum
+tantum
+tanwood
+tanworks
+Tanya
+tanyard
+Tanyoan
+Tanystomata
+tanystomatous
+tanystome
+tanzeb
+tanzib
+Tanzine
+tanzy
+Tao
+tao
+Taoism
+Taoist
+Taoistic
+Taonurus
+Taos
+taotai
+taoyin
+tap
+Tapa
+tapa
+Tapachula
+Tapachulteca
+tapacolo
+tapaculo
+Tapacura
+tapadera
+tapadero
+Tapajo
+tapalo
+tapamaker
+tapamaking
+tapas
+tapasvi
+Tape
+tape
+Tapeats
+tapeinocephalic
+tapeinocephalism
+tapeinocephaly
+tapeless
+tapelike
+tapeline
+tapemaker
+tapemaking
+tapeman
+tapen
+taper
+taperbearer
+tapered
+taperer
+tapering
+taperingly
+taperly
+tapermaker
+tapermaking
+taperness
+taperwise
+tapesium
+tapestring
+tapestry
+tapestrylike
+tapet
+tapetal
+tapete
+tapeti
+tapetless
+tapetum
+tapework
+tapeworm
+taphephobia
+taphole
+taphouse
+Taphria
+Taphrina
+Taphrinaceae
+tapia
+Tapijulapane
+tapinceophalism
+tapinocephalic
+tapinocephaly
+Tapinoma
+tapinophobia
+tapinophoby
+tapinosis
+tapioca
+tapir
+Tapiridae
+tapiridian
+tapirine
+Tapiro
+tapiroid
+Tapirus
+tapis
+tapism
+tapist
+taplash
+taplet
+Tapleyism
+tapmost
+tapnet
+tapoa
+Taposa
+tapoun
+tappa
+tappable
+tappableness
+tappall
+tappaul
+tappen
+tapper
+tapperer
+Tappertitian
+tappet
+tappietoorie
+tapping
+tappoon
+Taprobane
+taproom
+taproot
+taprooted
+taps
+tapster
+tapsterlike
+tapsterly
+tapstress
+tapu
+tapul
+Tapuya
+Tapuyan
+Tapuyo
+taqua
+tar
+tara
+tarabooka
+taraf
+tarafdar
+tarage
+Tarahumar
+Tarahumara
+Tarahumare
+Tarahumari
+Tarai
+tarairi
+tarakihi
+Taraktogenos
+taramellite
+Taramembe
+Taranchi
+tarand
+Tarandean
+Tarandian
+tarantara
+tarantass
+tarantella
+tarantism
+tarantist
+tarantula
+tarantular
+tarantulary
+tarantulated
+tarantulid
+Tarantulidae
+tarantulism
+tarantulite
+tarantulous
+tarapatch
+taraph
+tarapin
+Tarapon
+Tarasc
+Tarascan
+Tarasco
+tarassis
+tarata
+taratah
+taratantara
+taratantarize
+tarau
+taraxacerin
+taraxacin
+Taraxacum
+Tarazed
+tarbadillo
+tarbet
+tarboard
+tarbogan
+tarboggin
+tarboosh
+tarbooshed
+tarboy
+tarbrush
+tarbush
+tarbuttite
+Tardenoisian
+Tardigrada
+tardigrade
+tardigradous
+tardily
+tardiness
+tarditude
+tardive
+tardle
+tardy
+tare
+tarea
+tarefa
+tarefitch
+tarentala
+tarente
+Tarentine
+tarentism
+tarentola
+tarepatch
+Tareq
+tarfa
+tarflower
+targe
+targeman
+targer
+target
+targeted
+targeteer
+targetlike
+targetman
+Targum
+Targumic
+Targumical
+Targumist
+Targumistic
+Targumize
+Tarheel
+Tarheeler
+tarhood
+tari
+Tariana
+tarie
+tariff
+tariffable
+tariffication
+tariffism
+tariffist
+tariffite
+tariffize
+tariffless
+tarin
+Tariri
+tariric
+taririnic
+tarish
+Tarkalani
+Tarkani
+tarkashi
+tarkeean
+tarkhan
+tarlatan
+tarlataned
+tarletan
+tarlike
+tarltonize
+Tarmac
+tarmac
+tarman
+Tarmi
+tarmined
+tarn
+tarnal
+tarnally
+tarnation
+tarnish
+tarnishable
+tarnisher
+tarnishment
+tarnishproof
+tarnlike
+tarnside
+taro
+taroc
+tarocco
+tarok
+taropatch
+tarot
+tarp
+tarpan
+tarpaulin
+tarpaulinmaker
+Tarpeia
+Tarpeian
+tarpon
+tarpot
+tarpum
+Tarquin
+Tarquinish
+tarr
+tarrack
+tarradiddle
+tarradiddler
+tarragon
+tarragona
+tarras
+tarrass
+Tarrateen
+Tarratine
+tarred
+tarrer
+tarri
+tarriance
+tarrie
+tarrier
+tarrify
+tarrily
+tarriness
+tarrish
+tarrock
+tarrow
+tarry
+tarrying
+tarryingly
+tarryingness
+tars
+tarsadenitis
+tarsal
+tarsale
+tarsalgia
+tarse
+tarsectomy
+tarsectopia
+tarsi
+tarsia
+tarsier
+Tarsiidae
+tarsioid
+Tarsipedidae
+Tarsipedinae
+Tarsipes
+tarsitis
+Tarsius
+tarsochiloplasty
+tarsoclasis
+tarsomalacia
+tarsome
+tarsometatarsal
+tarsometatarsus
+tarsonemid
+Tarsonemidae
+Tarsonemus
+tarsophalangeal
+tarsophyma
+tarsoplasia
+tarsoplasty
+tarsoptosis
+tarsorrhaphy
+tarsotarsal
+tarsotibal
+tarsotomy
+tarsus
+tart
+tartago
+Tartan
+tartan
+tartana
+tartane
+Tartar
+tartar
+tartarated
+Tartarean
+Tartareous
+tartareous
+tartaret
+Tartarian
+Tartaric
+tartaric
+Tartarin
+tartarish
+Tartarism
+Tartarization
+tartarization
+Tartarize
+tartarize
+Tartarized
+Tartarlike
+tartarly
+Tartarology
+tartarous
+tartarproof
+tartarum
+Tartarus
+Tartary
+tartemorion
+tarten
+tartish
+tartishly
+tartle
+tartlet
+tartly
+tartness
+tartramate
+tartramic
+tartramide
+tartrate
+tartrated
+tartratoferric
+tartrazine
+tartrazinic
+tartro
+tartronate
+tartronic
+tartronyl
+tartronylurea
+tartrous
+tartryl
+tartrylic
+Tartufe
+tartufery
+tartufian
+tartufish
+tartufishly
+tartufism
+tartwoman
+Taruma
+Tarumari
+tarve
+Tarvia
+tarweed
+tarwhine
+tarwood
+tarworks
+taryard
+Taryba
+Tarzan
+Tarzanish
+tasajo
+tascal
+tasco
+taseometer
+tash
+tasheriff
+tashie
+tashlik
+Tashnagist
+Tashnakist
+tashreef
+tashrif
+Tasian
+tasimeter
+tasimetric
+tasimetry
+task
+taskage
+tasker
+taskit
+taskless
+tasklike
+taskmaster
+taskmastership
+taskmistress
+tasksetter
+tasksetting
+taskwork
+taslet
+Tasmanian
+tasmanite
+Tass
+tass
+tassago
+tassah
+tassal
+tassard
+tasse
+tassel
+tasseler
+tasselet
+tasselfish
+tassellus
+tasselmaker
+tasselmaking
+tassely
+tasser
+tasset
+tassie
+tassoo
+tastable
+tastableness
+tastably
+taste
+tasteable
+tasteableness
+tasteably
+tasted
+tasteful
+tastefully
+tastefulness
+tastekin
+tasteless
+tastelessly
+tastelessness
+tasten
+taster
+tastily
+tastiness
+tasting
+tastingly
+tasty
+tasu
+Tat
+tat
+Tatar
+Tatarian
+Tataric
+Tatarization
+Tatarize
+Tatary
+tataupa
+tatbeb
+tatchy
+tate
+tater
+Tates
+tath
+Tatian
+Tatianist
+tatie
+tatinek
+tatler
+tatou
+tatouay
+tatpurusha
+Tatsanottine
+tatsman
+tatta
+tatter
+tatterdemalion
+tatterdemalionism
+tatterdemalionry
+tattered
+tatteredly
+tatteredness
+tatterly
+tatterwallop
+tattery
+tatther
+tattied
+tatting
+tattle
+tattlement
+tattler
+tattlery
+tattletale
+tattling
+tattlingly
+tattoo
+tattooage
+tattooer
+tattooing
+tattooist
+tattooment
+tattva
+tatty
+Tatu
+tatu
+tatukira
+Tatusia
+Tatusiidae
+tau
+Taube
+Tauchnitz
+taught
+taula
+Tauli
+taum
+taun
+Taungthu
+taunt
+taunter
+taunting
+tauntingly
+tauntingness
+Taunton
+tauntress
+taupe
+taupo
+taupou
+taur
+tauranga
+taurean
+Tauri
+Taurian
+taurian
+Tauric
+tauric
+tauricide
+tauricornous
+Taurid
+Tauridian
+tauriferous
+tauriform
+taurine
+Taurini
+taurite
+taurobolium
+tauroboly
+taurocephalous
+taurocholate
+taurocholic
+taurocol
+taurocolla
+Tauroctonus
+taurodont
+tauroesque
+taurokathapsia
+taurolatry
+tauromachian
+tauromachic
+tauromachy
+tauromorphic
+tauromorphous
+taurophile
+taurophobe
+Tauropolos
+Taurotragus
+Taurus
+tauryl
+taut
+tautaug
+tauted
+tautegorical
+tautegory
+tauten
+tautirite
+tautit
+tautly
+tautness
+tautochrone
+tautochronism
+tautochronous
+tautog
+tautologic
+tautological
+tautologically
+tautologicalness
+tautologism
+tautologist
+tautologize
+tautologizer
+tautologous
+tautologously
+tautology
+tautomer
+tautomeral
+tautomeric
+tautomerism
+tautomerizable
+tautomerization
+tautomerize
+tautomery
+tautometer
+tautometric
+tautometrical
+tautomorphous
+tautonym
+tautonymic
+tautonymy
+tautoousian
+tautoousious
+tautophonic
+tautophonical
+tautophony
+tautopodic
+tautopody
+tautosyllabic
+tautotype
+tautourea
+tautousian
+tautousious
+tautozonal
+tautozonality
+tav
+Tavast
+Tavastian
+Tave
+tave
+tavell
+taver
+tavern
+taverner
+tavernize
+tavernless
+tavernlike
+tavernly
+tavernous
+tavernry
+tavernwards
+tavers
+tavert
+Tavghi
+tavistockite
+tavola
+tavolatite
+Tavy
+taw
+tawa
+tawdered
+tawdrily
+tawdriness
+tawdry
+tawer
+tawery
+Tawgi
+tawie
+tawite
+tawkee
+tawkin
+tawn
+tawney
+tawnily
+tawniness
+tawnle
+tawny
+tawpi
+tawpie
+taws
+tawse
+tawtie
+tax
+taxability
+taxable
+taxableness
+taxably
+Taxaceae
+taxaceous
+taxameter
+taxaspidean
+taxation
+taxational
+taxative
+taxatively
+taxator
+taxeater
+taxeating
+taxed
+taxeme
+taxemic
+taxeopod
+Taxeopoda
+taxeopodous
+taxeopody
+taxer
+taxgatherer
+taxgathering
+taxi
+taxiable
+taxiarch
+taxiauto
+taxibus
+taxicab
+Taxidea
+taxidermal
+taxidermic
+taxidermist
+taxidermize
+taxidermy
+taximan
+taximeter
+taximetered
+taxine
+taxing
+taxingly
+taxinomic
+taxinomist
+taxinomy
+taxiplane
+taxis
+taxite
+taxitic
+taxless
+taxlessly
+taxlessness
+taxman
+Taxodiaceae
+Taxodium
+taxodont
+taxology
+taxometer
+taxon
+taxonomer
+taxonomic
+taxonomical
+taxonomically
+taxonomist
+taxonomy
+taxor
+taxpaid
+taxpayer
+taxpaying
+Taxus
+taxwax
+taxy
+tay
+Tayassu
+Tayassuidae
+tayer
+Taygeta
+tayir
+Taylor
+Taylorism
+Taylorite
+taylorite
+Taylorize
+tayra
+Tayrona
+taysaam
+tazia
+Tcawi
+tch
+tchai
+tcharik
+tchast
+tche
+tcheirek
+Tcheka
+Tcherkess
+tchervonets
+tchervonetz
+Tchetchentsish
+Tchetnitsi
+Tchi
+tchick
+tchu
+Tchwi
+tck
+Td
+te
+tea
+teaberry
+teaboard
+teabox
+teaboy
+teacake
+teacart
+teach
+teachability
+teachable
+teachableness
+teachably
+teache
+teacher
+teacherage
+teacherdom
+teacheress
+teacherhood
+teacherless
+teacherlike
+teacherly
+teachership
+teachery
+teaching
+teachingly
+teachless
+teachment
+teachy
+teacup
+teacupful
+tead
+teadish
+teaer
+teaey
+teagardeny
+teagle
+Teague
+Teagueland
+Teaguelander
+teahouse
+teaish
+teaism
+teak
+teakettle
+teakwood
+teal
+tealeafy
+tealery
+tealess
+teallite
+team
+teamaker
+teamaking
+teaman
+teameo
+teamer
+teaming
+teamland
+teamless
+teamman
+teammate
+teamsman
+teamster
+teamwise
+teamwork
+tean
+teanal
+teap
+teapot
+teapotful
+teapottykin
+teapoy
+tear
+tearable
+tearableness
+tearably
+tearage
+tearcat
+teardown
+teardrop
+tearer
+tearful
+tearfully
+tearfulness
+tearing
+tearless
+tearlessly
+tearlessness
+tearlet
+tearlike
+tearoom
+tearpit
+tearproof
+tearstain
+teart
+tearthroat
+tearthumb
+teary
+teasable
+teasableness
+teasably
+tease
+teaseable
+teaseableness
+teaseably
+teasehole
+teasel
+teaseler
+teaseller
+teasellike
+teaselwort
+teasement
+teaser
+teashop
+teasiness
+teasing
+teasingly
+teasler
+teaspoon
+teaspoonful
+teasy
+teat
+teataster
+teated
+teatfish
+teathe
+teather
+teatime
+teatlike
+teatling
+teatman
+teaty
+teave
+teaware
+teaze
+teazer
+tebbet
+Tebet
+Tebeth
+Tebu
+tec
+Teca
+teca
+tecali
+Tech
+tech
+techily
+techiness
+technetium
+technic
+technica
+technical
+technicalism
+technicalist
+technicality
+technicalize
+technically
+technicalness
+technician
+technicism
+technicist
+technicological
+technicology
+Technicolor
+technicon
+technics
+techniphone
+technique
+techniquer
+technism
+technist
+technocausis
+technochemical
+technochemistry
+technocracy
+technocrat
+technocratic
+technographer
+technographic
+technographical
+technographically
+technography
+technolithic
+technologic
+technological
+technologically
+technologist
+technologue
+technology
+technonomic
+technonomy
+technopsychology
+techous
+techy
+teck
+Tecla
+tecnoctonia
+tecnology
+Teco
+Tecoma
+tecomin
+tecon
+Tecpanec
+tectal
+tectibranch
+Tectibranchia
+tectibranchian
+Tectibranchiata
+tectibranchiate
+tectiform
+tectocephalic
+tectocephaly
+tectological
+tectology
+Tectona
+tectonic
+tectonics
+tectorial
+tectorium
+Tectosages
+tectosphere
+tectospinal
+Tectospondyli
+tectospondylic
+tectospondylous
+tectrices
+tectricial
+tectum
+tecum
+tecuma
+Tecuna
+Ted
+ted
+Teda
+tedder
+Teddy
+tedescan
+tedge
+tediosity
+tedious
+tediously
+tediousness
+tediousome
+tedisome
+tedium
+tee
+teedle
+teel
+teem
+teemer
+teemful
+teemfulness
+teeming
+teemingly
+teemingness
+teemless
+teems
+teen
+teenage
+teenet
+teens
+teensy
+teenty
+teeny
+teer
+teerer
+teest
+Teeswater
+teet
+teetaller
+teetan
+teeter
+teeterboard
+teeterer
+teetertail
+teeth
+teethache
+teethbrush
+teethe
+teethful
+teethily
+teething
+teethless
+teethlike
+teethridge
+teethy
+teeting
+teetotal
+teetotaler
+teetotalism
+teetotalist
+teetotally
+teetotum
+teetotumism
+teetotumize
+teetotumwise
+teety
+teevee
+teewhaap
+teff
+teg
+Tegean
+Tegeticula
+tegmen
+tegmental
+tegmentum
+tegmina
+tegminal
+Tegmine
+tegua
+teguexin
+Teguima
+tegula
+tegular
+tegularly
+tegulated
+tegumen
+tegument
+tegumental
+tegumentary
+tegumentum
+tegurium
+Teheran
+tehseel
+tehseeldar
+tehsil
+tehsildar
+Tehuantepecan
+Tehueco
+Tehuelche
+Tehuelchean
+Tehuelet
+Teian
+teicher
+teiglech
+Teiidae
+teil
+teind
+teindable
+teinder
+teinland
+teinoscope
+teioid
+Teiresias
+Tejon
+tejon
+teju
+tekiah
+Tekintsi
+Tekke
+tekke
+tekken
+Tekkintzi
+teknonymous
+teknonymy
+tektite
+tekya
+telacoustic
+telakucha
+telamon
+telang
+telangiectasia
+telangiectasis
+telangiectasy
+telangiectatic
+telangiosis
+Telanthera
+telar
+telarian
+telary
+telautogram
+telautograph
+telautographic
+telautographist
+telautography
+telautomatic
+telautomatically
+telautomatics
+Telchines
+Telchinic
+tele
+teleanemograph
+teleangiectasia
+telebarograph
+telebarometer
+telecast
+telecaster
+telechemic
+telechirograph
+telecinematography
+telecode
+telecommunication
+telecryptograph
+telectroscope
+teledendrion
+teledendrite
+teledendron
+teledu
+telega
+telegenic
+Telegn
+telegnosis
+telegnostic
+telegonic
+telegonous
+telegony
+telegram
+telegrammatic
+telegrammic
+telegraph
+telegraphee
+telegrapheme
+telegrapher
+telegraphese
+telegraphic
+telegraphical
+telegraphically
+telegraphist
+telegraphone
+telegraphophone
+telegraphoscope
+telegraphy
+Telegu
+telehydrobarometer
+Telei
+Teleia
+teleianthous
+teleiosis
+telekinematography
+telekinesis
+telekinetic
+telelectric
+telelectrograph
+telelectroscope
+telemanometer
+Telemark
+telemark
+Telembi
+telemechanic
+telemechanics
+telemechanism
+telemetacarpal
+telemeteorograph
+telemeteorographic
+telemeteorography
+telemeter
+telemetric
+telemetrical
+telemetrist
+telemetrograph
+telemetrographic
+telemetrography
+telemetry
+telemotor
+telencephal
+telencephalic
+telencephalon
+telenergic
+telenergy
+teleneurite
+teleneuron
+Telenget
+telengiscope
+Telenomus
+teleobjective
+Teleocephali
+teleocephalous
+Teleoceras
+Teleodesmacea
+teleodesmacean
+teleodesmaceous
+teleodont
+teleologic
+teleological
+teleologically
+teleologism
+teleologist
+teleology
+teleometer
+teleophobia
+teleophore
+teleophyte
+teleoptile
+teleorganic
+teleoroentgenogram
+teleoroentgenography
+teleosaur
+teleosaurian
+Teleosauridae
+Teleosaurus
+teleost
+teleostean
+Teleostei
+teleosteous
+teleostomate
+teleostome
+Teleostomi
+teleostomian
+teleostomous
+teleotemporal
+teleotrocha
+teleozoic
+teleozoon
+telepathic
+telepathically
+telepathist
+telepathize
+telepathy
+telepheme
+telephone
+telephoner
+telephonic
+telephonical
+telephonically
+telephonist
+telephonograph
+telephonographic
+telephony
+telephote
+telephoto
+telephotograph
+telephotographic
+telephotography
+Telephus
+telepicture
+teleplasm
+teleplasmic
+teleplastic
+telepost
+teleprinter
+teleradiophone
+teleran
+telergic
+telergical
+telergically
+telergy
+telescope
+telescopic
+telescopical
+telescopically
+telescopiform
+telescopist
+Telescopium
+telescopy
+telescriptor
+teleseism
+teleseismic
+teleseismology
+teleseme
+telesia
+telesis
+telesmeter
+telesomatic
+telespectroscope
+telestereograph
+telestereography
+telestereoscope
+telesterion
+telesthesia
+telesthetic
+telestial
+telestic
+telestich
+teletactile
+teletactor
+teletape
+teletherapy
+telethermogram
+telethermograph
+telethermometer
+telethermometry
+telethon
+teletopometer
+teletranscription
+Teletype
+teletype
+teletyper
+teletypesetter
+teletypewriter
+teletyping
+Teleut
+teleuto
+teleutoform
+teleutosorus
+teleutospore
+teleutosporic
+teleutosporiferous
+teleview
+televiewer
+televise
+television
+televisional
+televisionary
+televisor
+televisual
+televocal
+televox
+telewriter
+Telfairia
+telfairic
+telfer
+telferage
+telford
+telfordize
+telharmonic
+telharmonium
+telharmony
+teli
+telial
+telic
+telical
+telically
+teliferous
+Telinga
+teliosorus
+teliospore
+teliosporic
+teliosporiferous
+teliostage
+telium
+tell
+tellable
+tellach
+tellee
+teller
+tellership
+telligraph
+Tellima
+Tellina
+Tellinacea
+tellinacean
+tellinaceous
+telling
+tellingly
+Tellinidae
+tellinoid
+tellsome
+tellt
+telltale
+telltalely
+telltruth
+tellural
+tellurate
+telluret
+tellureted
+tellurethyl
+telluretted
+tellurhydric
+tellurian
+telluric
+telluride
+telluriferous
+tellurion
+tellurism
+tellurist
+tellurite
+tellurium
+tellurize
+telluronium
+tellurous
+telmatological
+telmatology
+teloblast
+teloblastic
+telocentric
+telodendrion
+telodendron
+telodynamic
+telokinesis
+telolecithal
+telolemma
+telome
+telomic
+telomitic
+telonism
+Teloogoo
+Telopea
+telophase
+telophragma
+telopsis
+teloptic
+telosynapsis
+telosynaptic
+telosynaptist
+teloteropathic
+teloteropathically
+teloteropathy
+Telotremata
+telotrematous
+telotroch
+telotrocha
+telotrochal
+telotrochous
+telotrophic
+telotype
+telpath
+telpher
+telpherage
+telpherman
+telpherway
+telson
+telsonic
+telt
+Telugu
+telurgy
+telyn
+Tema
+temacha
+temalacatl
+Teman
+teman
+Temanite
+tembe
+temblor
+Tembu
+temenos
+temerarious
+temerariously
+temerariousness
+temeritous
+temerity
+temerous
+temerously
+temerousness
+temiak
+temin
+Temiskaming
+Temne
+Temnospondyli
+temnospondylous
+temp
+Tempe
+Tempean
+temper
+tempera
+temperability
+temperable
+temperably
+temperality
+temperament
+temperamental
+temperamentalist
+temperamentally
+temperamented
+temperance
+temperate
+temperately
+temperateness
+temperative
+temperature
+tempered
+temperedly
+temperedness
+temperer
+temperish
+temperless
+tempersome
+tempery
+tempest
+tempestical
+tempestive
+tempestively
+tempestivity
+tempestuous
+tempestuously
+tempestuousness
+tempesty
+tempi
+Templar
+templar
+templardom
+templarism
+templarlike
+templarlikeness
+templary
+template
+templater
+temple
+templed
+templeful
+templeless
+templelike
+templet
+Templetonia
+templeward
+templize
+tempo
+tempora
+temporal
+temporale
+temporalism
+temporalist
+temporality
+temporalize
+temporally
+temporalness
+temporalty
+temporaneous
+temporaneously
+temporaneousness
+temporarily
+temporariness
+temporary
+temporator
+temporization
+temporizer
+temporizing
+temporizingly
+temporoalar
+temporoauricular
+temporocentral
+temporocerebellar
+temporofacial
+temporofrontal
+temporohyoid
+temporomalar
+temporomandibular
+temporomastoid
+temporomaxillary
+temporooccipital
+temporoparietal
+temporopontine
+temporosphenoid
+temporosphenoidal
+temporozygomatic
+tempre
+temprely
+tempt
+temptability
+temptable
+temptableness
+temptation
+temptational
+temptationless
+temptatious
+temptatory
+tempter
+tempting
+temptingly
+temptingness
+temptress
+Tempyo
+temse
+temser
+temulence
+temulency
+temulent
+temulentive
+temulently
+ten
+tenability
+tenable
+tenableness
+tenably
+tenace
+tenacious
+tenaciously
+tenaciousness
+tenacity
+tenaculum
+tenai
+tenaille
+tenaillon
+Tenaktak
+tenancy
+tenant
+tenantable
+tenantableness
+tenanter
+tenantism
+tenantless
+tenantlike
+tenantry
+tenantship
+tench
+tenchweed
+Tencteri
+tend
+tendance
+tendant
+tendence
+tendency
+tendent
+tendential
+tendentious
+tendentiously
+tendentiousness
+tender
+tenderability
+tenderable
+tenderably
+tenderee
+tenderer
+tenderfoot
+tenderfootish
+tenderful
+tenderfully
+tenderheart
+tenderhearted
+tenderheartedly
+tenderheartedness
+tenderish
+tenderize
+tenderling
+tenderloin
+tenderly
+tenderness
+tenderometer
+tendersome
+tendinal
+tending
+tendingly
+tendinitis
+tendinous
+tendinousness
+tendomucoid
+tendon
+tendonous
+tendoplasty
+tendosynovitis
+tendotome
+tendotomy
+tendour
+tendovaginal
+tendovaginitis
+tendresse
+tendril
+tendriled
+tendriliferous
+tendrillar
+tendrilly
+tendrilous
+tendron
+tenebra
+Tenebrae
+tenebricose
+tenebrific
+tenebrificate
+Tenebrio
+tenebrionid
+Tenebrionidae
+tenebrious
+tenebriously
+tenebrity
+tenebrose
+tenebrosity
+tenebrous
+tenebrously
+tenebrousness
+tenectomy
+tenement
+tenemental
+tenementary
+tenementer
+tenementization
+tenementize
+tenendas
+tenendum
+tenent
+teneral
+Teneriffe
+tenesmic
+tenesmus
+tenet
+tenfold
+tenfoldness
+teng
+tengere
+tengerite
+Tenggerese
+tengu
+teniacidal
+teniacide
+tenible
+Tenino
+tenio
+tenline
+tenmantale
+tennantite
+tenne
+tenner
+Tennessean
+tennis
+tennisdom
+tennisy
+Tennysonian
+Tennysonianism
+Tenochtitlan
+tenodesis
+tenodynia
+tenography
+tenology
+tenomyoplasty
+tenomyotomy
+tenon
+tenonectomy
+tenoner
+Tenonian
+tenonitis
+tenonostosis
+tenontagra
+tenontitis
+tenontodynia
+tenontography
+tenontolemmitis
+tenontology
+tenontomyoplasty
+tenontomyotomy
+tenontophyma
+tenontoplasty
+tenontothecitis
+tenontotomy
+tenophony
+tenophyte
+tenoplastic
+tenoplasty
+tenor
+tenorist
+tenorister
+tenorite
+tenorless
+tenoroon
+tenorrhaphy
+tenositis
+tenostosis
+tenosuture
+tenotome
+tenotomist
+tenotomize
+tenotomy
+tenovaginitis
+tenpence
+tenpenny
+tenpin
+tenrec
+Tenrecidae
+tense
+tenseless
+tenselessness
+tensely
+tenseness
+tensibility
+tensible
+tensibleness
+tensibly
+tensify
+tensile
+tensilely
+tensileness
+tensility
+tensimeter
+tensiometer
+tension
+tensional
+tensionless
+tensity
+tensive
+tenson
+tensor
+tent
+tentability
+tentable
+tentacle
+tentacled
+tentaclelike
+tentacula
+tentacular
+Tentaculata
+tentaculate
+tentaculated
+Tentaculifera
+tentaculite
+Tentaculites
+Tentaculitidae
+tentaculocyst
+tentaculoid
+tentaculum
+tentage
+tentamen
+tentation
+tentative
+tentatively
+tentativeness
+tented
+tenter
+tenterbelly
+tenterer
+tenterhook
+tentful
+tenth
+tenthly
+tenthmeter
+tenthredinid
+Tenthredinidae
+tenthredinoid
+Tenthredinoidea
+Tenthredo
+tentiform
+tentigo
+tentillum
+tention
+tentless
+tentlet
+tentlike
+tentmaker
+tentmaking
+tentmate
+tentorial
+tentorium
+tenture
+tentwards
+tentwise
+tentwork
+tentwort
+tenty
+tenuate
+tenues
+tenuicostate
+tenuifasciate
+tenuiflorous
+tenuifolious
+tenuious
+tenuiroster
+tenuirostral
+tenuirostrate
+Tenuirostres
+tenuis
+tenuistriate
+tenuity
+tenuous
+tenuously
+tenuousness
+tenure
+tenurial
+tenurially
+teocalli
+teopan
+teosinte
+Teotihuacan
+tepache
+tepal
+Tepanec
+Tepecano
+tepee
+tepefaction
+tepefy
+Tepehua
+Tepehuane
+tepetate
+Tephillah
+tephillin
+tephramancy
+tephrite
+tephritic
+tephroite
+tephromalacia
+tephromyelitic
+Tephrosia
+tephrosis
+tepid
+tepidarium
+tepidity
+tepidly
+tepidness
+tepomporize
+teponaztli
+tepor
+tequila
+Tequistlateca
+Tequistlatecan
+tera
+teraglin
+terakihi
+teramorphous
+terap
+teraphim
+teras
+teratical
+teratism
+teratoblastoma
+teratogenesis
+teratogenetic
+teratogenic
+teratogenous
+teratogeny
+teratoid
+teratological
+teratologist
+teratology
+teratoma
+teratomatous
+teratoscopy
+teratosis
+terbia
+terbic
+terbium
+tercel
+tercelet
+tercentenarian
+tercentenarize
+tercentenary
+tercentennial
+tercer
+terceron
+tercet
+terchloride
+tercia
+tercine
+tercio
+terdiurnal
+terebate
+terebella
+terebellid
+Terebellidae
+terebelloid
+terebellum
+terebene
+terebenic
+terebenthene
+terebic
+terebilic
+terebinic
+terebinth
+Terebinthaceae
+terebinthial
+terebinthian
+terebinthic
+terebinthina
+terebinthinate
+terebinthine
+terebinthinous
+Terebinthus
+terebra
+terebral
+terebrant
+Terebrantia
+terebrate
+terebration
+Terebratula
+terebratular
+terebratulid
+Terebratulidae
+terebratuliform
+terebratuline
+terebratulite
+terebratuloid
+Terebridae
+Teredinidae
+teredo
+terek
+Terence
+Terentian
+terephthalate
+terephthalic
+Teresa
+Teresian
+Teresina
+terete
+teretial
+tereticaudate
+teretifolious
+teretipronator
+teretiscapular
+teretiscapularis
+teretish
+tereu
+Tereus
+terfez
+Terfezia
+Terfeziaceae
+tergal
+tergant
+tergeminate
+tergeminous
+tergiferous
+tergite
+tergitic
+tergiversant
+tergiversate
+tergiversation
+tergiversator
+tergiversatory
+tergiverse
+tergolateral
+tergum
+Teri
+Teriann
+terlinguaite
+term
+terma
+termagancy
+Termagant
+termagant
+termagantish
+termagantism
+termagantly
+termage
+termatic
+termen
+termer
+Termes
+termillenary
+termin
+terminability
+terminable
+terminableness
+terminably
+terminal
+Terminalia
+Terminaliaceae
+terminalization
+terminalized
+terminally
+terminant
+terminate
+termination
+terminational
+terminative
+terminatively
+terminator
+terminatory
+termine
+terminer
+termini
+terminine
+terminism
+terminist
+terministic
+terminize
+termino
+terminological
+terminologically
+terminologist
+terminology
+terminus
+termital
+termitarium
+termitary
+termite
+termitic
+termitid
+Termitidae
+termitophagous
+termitophile
+termitophilous
+termless
+termlessly
+termlessness
+termly
+termolecular
+termon
+termor
+termtime
+tern
+terna
+ternal
+ternar
+ternariant
+ternarious
+ternary
+ternate
+ternately
+ternatipinnate
+ternatisect
+ternatopinnate
+terne
+terneplate
+ternery
+ternion
+ternize
+ternlet
+Ternstroemia
+Ternstroemiaceae
+teroxide
+terp
+terpadiene
+terpane
+terpene
+terpeneless
+terphenyl
+terpilene
+terpin
+terpine
+terpinene
+terpineol
+terpinol
+terpinolene
+terpodion
+Terpsichore
+terpsichoreal
+terpsichoreally
+Terpsichorean
+terpsichorean
+Terraba
+terrace
+terraceous
+terracer
+terracette
+terracewards
+terracewise
+terracework
+terraciform
+terracing
+terraculture
+terraefilial
+terraefilian
+terrage
+terrain
+terral
+terramara
+terramare
+Terrance
+terrane
+terranean
+terraneous
+Terrapene
+terrapin
+terraquean
+terraqueous
+terraqueousness
+terrar
+terrarium
+terrazzo
+terrella
+terremotive
+Terrence
+terrene
+terrenely
+terreneness
+terreplein
+terrestrial
+terrestrialism
+terrestriality
+terrestrialize
+terrestrially
+terrestrialness
+terrestricity
+terrestrious
+terret
+terreted
+Terri
+terribility
+terrible
+terribleness
+terribly
+terricole
+terricoline
+terricolous
+terrier
+terrierlike
+terrific
+terrifical
+terrifically
+terrification
+terrificly
+terrificness
+terrifiedly
+terrifier
+terrify
+terrifying
+terrifyingly
+terrigenous
+terrine
+Territelae
+territelarian
+territorial
+territorialism
+territorialist
+territoriality
+territorialization
+territorialize
+territorially
+territorian
+territoried
+territory
+terron
+terror
+terrorful
+terrorific
+terrorism
+terrorist
+terroristic
+terroristical
+terrorization
+terrorize
+terrorizer
+terrorless
+terrorproof
+terrorsome
+Terry
+terry
+terse
+tersely
+terseness
+tersion
+tersulphate
+tersulphide
+tersulphuret
+tertenant
+tertia
+tertial
+tertian
+tertiana
+tertianship
+tertiarian
+tertiary
+tertiate
+tertius
+terton
+tertrinal
+Tertullianism
+Tertullianist
+teruncius
+terutero
+Teruyuki
+tervalence
+tervalency
+tervalent
+tervariant
+tervee
+terzetto
+terzina
+terzo
+tesack
+tesarovitch
+teschenite
+teschermacherite
+teskere
+teskeria
+Tess
+tessara
+tessarace
+tessaraconter
+tessaradecad
+tessaraglot
+tessaraphthong
+tessarescaedecahedron
+tessel
+tessella
+tessellar
+tessellate
+tessellated
+tessellation
+tessera
+tesseract
+tesseradecade
+tesseraic
+tesseral
+Tesserants
+tesserarian
+tesserate
+tesserated
+tesseratomic
+tesseratomy
+tessular
+test
+testa
+testable
+Testacea
+testacean
+testaceography
+testaceology
+testaceous
+testaceousness
+testacy
+testament
+testamental
+testamentally
+testamentalness
+testamentarily
+testamentary
+testamentate
+testamentation
+testamentum
+testamur
+testar
+testata
+testate
+testation
+testator
+testatorship
+testatory
+testatrices
+testatrix
+testatum
+teste
+tested
+testee
+tester
+testes
+testibrachial
+testibrachium
+testicardinate
+testicardine
+Testicardines
+testicle
+testicond
+testicular
+testiculate
+testiculated
+testiere
+testificate
+testification
+testificator
+testificatory
+testifier
+testify
+testily
+testimonial
+testimonialist
+testimonialization
+testimonialize
+testimonializer
+testimonium
+testimony
+testiness
+testing
+testingly
+testis
+teston
+testone
+testoon
+testor
+testosterone
+testril
+testudinal
+Testudinaria
+testudinarious
+Testudinata
+testudinate
+testudinated
+testudineal
+testudineous
+Testudinidae
+testudinous
+testudo
+testy
+Tesuque
+tetanic
+tetanical
+tetanically
+tetaniform
+tetanigenous
+tetanilla
+tetanine
+tetanism
+tetanization
+tetanize
+tetanoid
+tetanolysin
+tetanomotor
+tetanospasmin
+tetanotoxin
+tetanus
+tetany
+tetarcone
+tetarconid
+tetard
+tetartemorion
+tetartocone
+tetartoconid
+tetartohedral
+tetartohedrally
+tetartohedrism
+tetartohedron
+tetartoid
+tetartosymmetry
+tetch
+tetchy
+tete
+tetel
+teterrimous
+teth
+tethelin
+tether
+tetherball
+tethery
+tethydan
+Tethys
+Teton
+tetra
+tetraamylose
+tetrabasic
+tetrabasicity
+Tetrabelodon
+tetrabelodont
+tetrabiblos
+tetraborate
+tetraboric
+tetrabrach
+tetrabranch
+Tetrabranchia
+tetrabranchiate
+tetrabromid
+tetrabromide
+tetrabromo
+tetrabromoethane
+tetracadactylity
+tetracarboxylate
+tetracarboxylic
+tetracarpellary
+tetraceratous
+tetracerous
+Tetracerus
+tetrachical
+tetrachlorid
+tetrachloride
+tetrachloro
+tetrachloroethane
+tetrachloroethylene
+tetrachloromethane
+tetrachord
+tetrachordal
+tetrachordon
+tetrachoric
+tetrachotomous
+tetrachromatic
+tetrachromic
+tetrachronous
+tetracid
+tetracoccous
+tetracoccus
+tetracolic
+tetracolon
+tetracoral
+Tetracoralla
+tetracoralline
+tetracosane
+tetract
+tetractinal
+tetractine
+tetractinellid
+Tetractinellida
+tetractinellidan
+tetractinelline
+tetractinose
+tetracyclic
+tetrad
+tetradactyl
+tetradactylous
+tetradactyly
+tetradarchy
+tetradecane
+tetradecanoic
+tetradecapod
+Tetradecapoda
+tetradecapodan
+tetradecapodous
+tetradecyl
+Tetradesmus
+tetradiapason
+tetradic
+Tetradite
+tetradrachma
+tetradrachmal
+tetradrachmon
+tetradymite
+Tetradynamia
+tetradynamian
+tetradynamious
+tetradynamous
+tetraedron
+tetraedrum
+tetraethylsilane
+tetrafluoride
+tetrafolious
+tetragamy
+tetragenous
+tetraglot
+tetraglottic
+tetragon
+tetragonal
+tetragonally
+tetragonalness
+Tetragonia
+Tetragoniaceae
+tetragonidium
+tetragonous
+tetragonus
+tetragram
+tetragrammatic
+Tetragrammaton
+tetragrammatonic
+tetragyn
+Tetragynia
+tetragynian
+tetragynous
+tetrahedral
+tetrahedrally
+tetrahedric
+tetrahedrite
+tetrahedroid
+tetrahedron
+tetrahexahedral
+tetrahexahedron
+tetrahydrate
+tetrahydrated
+tetrahydric
+tetrahydride
+tetrahydro
+tetrahydroxy
+tetraiodid
+tetraiodide
+tetraiodo
+tetraiodophenolphthalein
+tetrakaidecahedron
+tetraketone
+tetrakisazo
+tetrakishexahedron
+tetralemma
+Tetralin
+tetralogic
+tetralogue
+tetralogy
+tetralophodont
+tetramastia
+tetramastigote
+Tetramera
+tetrameral
+tetrameralian
+tetrameric
+tetramerism
+tetramerous
+tetrameter
+tetramethyl
+tetramethylammonium
+tetramethylene
+tetramethylium
+tetramin
+tetramine
+tetrammine
+tetramorph
+tetramorphic
+tetramorphism
+tetramorphous
+tetrander
+Tetrandria
+tetrandrian
+tetrandrous
+tetrane
+tetranitrate
+tetranitro
+tetranitroaniline
+tetranuclear
+Tetranychus
+Tetrao
+Tetraodon
+tetraodont
+Tetraodontidae
+tetraonid
+Tetraonidae
+Tetraoninae
+tetraonine
+Tetrapanax
+tetrapartite
+tetrapetalous
+tetraphalangeate
+tetrapharmacal
+tetrapharmacon
+tetraphenol
+tetraphony
+tetraphosphate
+tetraphyllous
+tetrapla
+tetraplegia
+tetrapleuron
+tetraploid
+tetraploidic
+tetraploidy
+tetraplous
+Tetrapneumona
+Tetrapneumones
+tetrapneumonian
+tetrapneumonous
+tetrapod
+Tetrapoda
+tetrapodic
+tetrapody
+tetrapolar
+tetrapolis
+tetrapolitan
+tetrapous
+tetraprostyle
+tetrapteran
+tetrapteron
+tetrapterous
+tetraptote
+Tetrapturus
+tetraptych
+tetrapylon
+tetrapyramid
+tetrapyrenous
+tetraquetrous
+tetrarch
+tetrarchate
+tetrarchic
+tetrarchy
+tetrasaccharide
+tetrasalicylide
+tetraselenodont
+tetraseme
+tetrasemic
+tetrasepalous
+tetraskelion
+tetrasome
+tetrasomic
+tetrasomy
+tetraspermal
+tetraspermatous
+tetraspermous
+tetraspheric
+tetrasporange
+tetrasporangiate
+tetrasporangium
+tetraspore
+tetrasporic
+tetrasporiferous
+tetrasporous
+tetraster
+tetrastich
+tetrastichal
+tetrastichic
+Tetrastichidae
+tetrastichous
+Tetrastichus
+tetrastoon
+tetrastyle
+tetrastylic
+tetrastylos
+tetrastylous
+tetrasubstituted
+tetrasubstitution
+tetrasulphide
+tetrasyllabic
+tetrasyllable
+tetrasymmetry
+tetrathecal
+tetratheism
+tetratheite
+tetrathionates
+tetrathionic
+tetratomic
+tetratone
+tetravalence
+tetravalency
+tetravalent
+tetraxial
+tetraxon
+Tetraxonia
+tetraxonian
+tetraxonid
+Tetraxonida
+tetrazane
+tetrazene
+tetrazin
+tetrazine
+tetrazo
+tetrazole
+tetrazolium
+tetrazolyl
+tetrazone
+tetrazotization
+tetrazotize
+tetrazyl
+tetremimeral
+tetrevangelium
+tetric
+tetrical
+tetricity
+tetricous
+tetrigid
+Tetrigidae
+tetriodide
+Tetrix
+tetrobol
+tetrobolon
+tetrode
+Tetrodon
+tetrodont
+Tetrodontidae
+tetrole
+tetrolic
+tetronic
+tetronymal
+tetrose
+tetroxalate
+tetroxide
+tetrsyllabical
+tetryl
+tetrylene
+tetter
+tetterish
+tetterous
+tetterwort
+tettery
+Tettigidae
+tettigoniid
+Tettigoniidae
+tettix
+Tetum
+Teucer
+Teucri
+Teucrian
+teucrin
+Teucrium
+teufit
+teuk
+Teutolatry
+Teutomania
+Teutomaniac
+Teuton
+Teutondom
+Teutonesque
+Teutonia
+Teutonic
+Teutonically
+Teutonicism
+Teutonism
+Teutonist
+Teutonity
+Teutonization
+Teutonize
+Teutonomania
+Teutonophobe
+Teutonophobia
+Teutophil
+Teutophile
+Teutophilism
+Teutophobe
+Teutophobia
+Teutophobism
+teviss
+tew
+Tewa
+tewel
+tewer
+tewit
+tewly
+tewsome
+Texan
+Texas
+Texcocan
+texguino
+text
+textarian
+textbook
+textbookless
+textiferous
+textile
+textilist
+textlet
+textman
+textorial
+textrine
+textual
+textualism
+textualist
+textuality
+textually
+textuarist
+textuary
+textural
+texturally
+texture
+textureless
+tez
+Tezcatlipoca
+Tezcatzoncatl
+Tezcucan
+tezkere
+th
+tha
+thack
+thacker
+Thackerayan
+Thackerayana
+Thackerayesque
+thackless
+Thad
+Thai
+Thais
+thakur
+thakurate
+thalamencephalic
+thalamencephalon
+thalami
+thalamic
+Thalamiflorae
+thalamifloral
+thalamiflorous
+thalamite
+thalamium
+thalamocele
+thalamocoele
+thalamocortical
+thalamocrural
+thalamolenticular
+thalamomammillary
+thalamopeduncular
+Thalamophora
+thalamotegmental
+thalamotomy
+thalamus
+Thalarctos
+thalassal
+Thalassarctos
+thalassian
+thalassic
+thalassinid
+Thalassinidea
+thalassinidian
+thalassinoid
+thalassiophyte
+thalassiophytous
+thalasso
+Thalassochelys
+thalassocracy
+thalassocrat
+thalassographer
+thalassographic
+thalassographical
+thalassography
+thalassometer
+thalassophilous
+thalassophobia
+thalassotherapy
+thalattology
+thalenite
+thaler
+Thalesia
+Thalesian
+Thalessa
+Thalia
+Thaliacea
+thaliacean
+Thalian
+Thaliard
+Thalictrum
+thalli
+thallic
+thalliferous
+thalliform
+thalline
+thallious
+thallium
+thallochlore
+thallodal
+thallogen
+thallogenic
+thallogenous
+thalloid
+thallome
+Thallophyta
+thallophyte
+thallophytic
+thallose
+thallous
+thallus
+thalposis
+thalpotic
+thalthan
+thameng
+Thamesis
+Thamnidium
+thamnium
+thamnophile
+Thamnophilinae
+thamnophiline
+Thamnophilus
+Thamnophis
+Thamudean
+Thamudene
+Thamudic
+thamuria
+Thamus
+Thamyras
+than
+thana
+thanadar
+thanage
+thanan
+thanatism
+thanatist
+thanatobiologic
+thanatognomonic
+thanatographer
+thanatography
+thanatoid
+thanatological
+thanatologist
+thanatology
+thanatomantic
+thanatometer
+thanatophidia
+thanatophidian
+thanatophobe
+thanatophobia
+thanatophobiac
+thanatophoby
+thanatopsis
+Thanatos
+thanatosis
+thanatotic
+thanatousia
+thane
+thanedom
+thanehood
+thaneland
+thaneship
+thank
+thankee
+thanker
+thankful
+thankfully
+thankfulness
+thankless
+thanklessly
+thanklessness
+thanks
+thanksgiver
+thanksgiving
+thankworthily
+thankworthiness
+thankworthy
+thapes
+Thapsia
+thapsia
+thar
+Tharen
+tharf
+tharfcake
+Thargelion
+tharginyah
+tharm
+Thasian
+Thaspium
+that
+thatch
+thatcher
+thatching
+thatchless
+thatchwood
+thatchwork
+thatchy
+thatn
+thatness
+thats
+thaught
+Thaumantian
+Thaumantias
+thaumasite
+thaumatogeny
+thaumatography
+thaumatolatry
+thaumatology
+thaumatrope
+thaumatropical
+thaumaturge
+thaumaturgia
+thaumaturgic
+thaumaturgical
+thaumaturgics
+thaumaturgism
+thaumaturgist
+thaumaturgy
+thaumoscopic
+thave
+thaw
+thawer
+thawless
+thawn
+thawy
+The
+the
+Thea
+Theaceae
+theaceous
+theah
+theandric
+theanthropic
+theanthropical
+theanthropism
+theanthropist
+theanthropology
+theanthropophagy
+theanthropos
+theanthroposophy
+theanthropy
+thearchic
+thearchy
+theasum
+theat
+theater
+theatergoer
+theatergoing
+theaterless
+theaterlike
+theaterward
+theaterwards
+theaterwise
+Theatine
+theatral
+theatric
+theatricable
+theatrical
+theatricalism
+theatricality
+theatricalization
+theatricalize
+theatrically
+theatricalness
+theatricals
+theatrician
+theatricism
+theatricize
+theatrics
+theatrize
+theatrocracy
+theatrograph
+theatromania
+theatromaniac
+theatron
+theatrophile
+theatrophobia
+theatrophone
+theatrophonic
+theatropolis
+theatroscope
+theatry
+theave
+theb
+Thebaic
+Thebaid
+thebaine
+Thebais
+thebaism
+Theban
+Thebesian
+theca
+thecae
+thecal
+Thecamoebae
+thecaphore
+thecasporal
+thecaspore
+thecaspored
+thecasporous
+Thecata
+thecate
+thecia
+thecitis
+thecium
+Thecla
+thecla
+theclan
+thecodont
+thecoglossate
+thecoid
+Thecoidea
+Thecophora
+Thecosomata
+thecosomatous
+thee
+theek
+theeker
+theelin
+theelol
+Theemim
+theer
+theet
+theetsee
+theezan
+theft
+theftbote
+theftdom
+theftless
+theftproof
+theftuous
+theftuously
+thegether
+thegidder
+thegither
+thegn
+thegndom
+thegnhood
+thegnland
+thegnlike
+thegnly
+thegnship
+thegnworthy
+theiform
+Theileria
+theine
+theinism
+their
+theirn
+theirs
+theirselves
+theirsens
+theism
+theist
+theistic
+theistical
+theistically
+thelalgia
+Thelemite
+thelemite
+Thelephora
+Thelephoraceae
+Theligonaceae
+theligonaceous
+Theligonum
+thelitis
+thelium
+Thelodontidae
+Thelodus
+theloncus
+thelorrhagia
+Thelphusa
+thelphusian
+Thelphusidae
+thelyblast
+thelyblastic
+thelyotokous
+thelyotoky
+Thelyphonidae
+Thelyphonus
+thelyplasty
+thelytocia
+thelytoky
+thelytonic
+them
+thema
+themata
+thematic
+thematical
+thematically
+thematist
+theme
+themeless
+themelet
+themer
+Themis
+themis
+Themistian
+themsel
+themselves
+then
+thenabouts
+thenadays
+thenal
+thenar
+thenardite
+thence
+thenceafter
+thenceforth
+thenceforward
+thenceforwards
+thencefrom
+thenceward
+thenness
+Theo
+theoanthropomorphic
+theoanthropomorphism
+theoastrological
+Theobald
+Theobroma
+theobromic
+theobromine
+theocentric
+theocentricism
+theocentrism
+theochristic
+theocollectivism
+theocollectivist
+theocracy
+theocrasia
+theocrasical
+theocrasy
+theocrat
+theocratic
+theocratical
+theocratically
+theocratist
+Theocritan
+Theocritean
+theodemocracy
+theodicaea
+theodicean
+theodicy
+theodidact
+theodolite
+theodolitic
+Theodora
+Theodore
+Theodoric
+Theodosia
+Theodosian
+Theodotian
+theodrama
+theody
+theogamy
+theogeological
+theognostic
+theogonal
+theogonic
+theogonism
+theogonist
+theogony
+theohuman
+theokrasia
+theoktonic
+theoktony
+theolatrous
+theolatry
+theolepsy
+theoleptic
+theologal
+theologaster
+theologastric
+theologate
+theologeion
+theologer
+theologi
+theologian
+theologic
+theological
+theologically
+theologician
+theologicoastronomical
+theologicoethical
+theologicohistorical
+theologicometaphysical
+theologicomilitary
+theologicomoral
+theologiconatural
+theologicopolitical
+theologics
+theologism
+theologist
+theologium
+theologization
+theologize
+theologizer
+theologoumena
+theologoumenon
+theologue
+theologus
+theology
+theomachia
+theomachist
+theomachy
+theomammomist
+theomancy
+theomania
+theomaniac
+theomantic
+theomastix
+theomicrist
+theomisanthropist
+theomorphic
+theomorphism
+theomorphize
+theomythologer
+theomythology
+theonomy
+theopantism
+Theopaschist
+Theopaschitally
+Theopaschite
+Theopaschitic
+Theopaschitism
+theopathetic
+theopathic
+theopathy
+theophagic
+theophagite
+theophagous
+theophagy
+Theophania
+theophania
+theophanic
+theophanism
+theophanous
+theophany
+Theophila
+theophilanthrope
+theophilanthropic
+theophilanthropism
+theophilanthropist
+theophilanthropy
+theophile
+theophilist
+theophilosophic
+Theophilus
+theophobia
+theophoric
+theophorous
+Theophrastaceae
+theophrastaceous
+Theophrastan
+Theophrastean
+theophylline
+theophysical
+theopneust
+theopneusted
+theopneustia
+theopneustic
+theopneusty
+theopolitician
+theopolitics
+theopolity
+theopsychism
+theorbist
+theorbo
+theorem
+theorematic
+theorematical
+theorematically
+theorematist
+theoremic
+theoretic
+theoretical
+theoreticalism
+theoretically
+theoretician
+theoreticopractical
+theoretics
+theoria
+theoriai
+theoric
+theorical
+theorically
+theorician
+theoricon
+theorics
+theorism
+theorist
+theorization
+theorize
+theorizer
+theorum
+theory
+theoryless
+theorymonger
+theosoph
+theosopheme
+theosophic
+theosophical
+theosophically
+theosophism
+theosophist
+theosophistic
+theosophistical
+theosophize
+theosophy
+theotechnic
+theotechnist
+theotechny
+theoteleological
+theoteleology
+theotherapy
+Theotokos
+theow
+theowdom
+theowman
+Theraean
+theralite
+therapeusis
+Therapeutae
+Therapeutic
+therapeutic
+therapeutical
+therapeutically
+therapeutics
+therapeutism
+therapeutist
+Theraphosa
+theraphose
+theraphosid
+Theraphosidae
+theraphosoid
+therapist
+therapsid
+Therapsida
+therapy
+therblig
+there
+thereabouts
+thereabove
+thereacross
+thereafter
+thereafterward
+thereagainst
+thereamong
+thereamongst
+thereanent
+thereanents
+therearound
+thereas
+thereat
+thereaway
+thereaways
+therebeside
+therebesides
+therebetween
+thereby
+thereckly
+therefor
+therefore
+therefrom
+therehence
+therein
+thereinafter
+thereinbefore
+thereinto
+therence
+thereness
+thereof
+thereoid
+thereologist
+thereology
+thereon
+thereout
+thereover
+thereright
+theres
+Theresa
+therese
+therethrough
+theretill
+thereto
+theretofore
+theretoward
+thereunder
+thereuntil
+thereunto
+thereup
+thereupon
+Thereva
+therevid
+Therevidae
+therewhile
+therewith
+therewithal
+therewithin
+Theria
+theriac
+theriaca
+theriacal
+therial
+therianthropic
+therianthropism
+theriatrics
+theridiid
+Theridiidae
+Theridion
+theriodic
+theriodont
+Theriodonta
+Theriodontia
+theriolatry
+theriomancy
+theriomaniac
+theriomimicry
+theriomorph
+theriomorphic
+theriomorphism
+theriomorphosis
+theriomorphous
+theriotheism
+theriotrophical
+theriozoic
+therm
+thermacogenesis
+thermae
+thermal
+thermalgesia
+thermality
+thermally
+thermanalgesia
+thermanesthesia
+thermantic
+thermantidote
+thermatologic
+thermatologist
+thermatology
+thermesthesia
+thermesthesiometer
+thermetograph
+thermetrograph
+thermic
+thermically
+Thermidorian
+thermion
+thermionic
+thermionically
+thermionics
+thermistor
+Thermit
+thermit
+thermite
+thermo
+thermoammeter
+thermoanalgesia
+thermoanesthesia
+thermobarograph
+thermobarometer
+thermobattery
+thermocautery
+thermochemic
+thermochemical
+thermochemically
+thermochemist
+thermochemistry
+thermochroic
+thermochrosy
+thermocline
+thermocouple
+thermocurrent
+thermodiffusion
+thermoduric
+thermodynamic
+thermodynamical
+thermodynamically
+thermodynamician
+thermodynamicist
+thermodynamics
+thermodynamist
+thermoelectric
+thermoelectrical
+thermoelectrically
+thermoelectricity
+thermoelectrometer
+thermoelectromotive
+thermoelement
+thermoesthesia
+thermoexcitory
+thermogalvanometer
+thermogen
+thermogenerator
+thermogenesis
+thermogenetic
+thermogenic
+thermogenous
+thermogeny
+thermogeographical
+thermogeography
+thermogram
+thermograph
+thermography
+thermohyperesthesia
+thermojunction
+thermokinematics
+thermolabile
+thermolability
+thermological
+thermology
+thermoluminescence
+thermoluminescent
+thermolysis
+thermolytic
+thermolyze
+thermomagnetic
+thermomagnetism
+thermometamorphic
+thermometamorphism
+thermometer
+thermometerize
+thermometric
+thermometrical
+thermometrically
+thermometrograph
+thermometry
+thermomotive
+thermomotor
+thermomultiplier
+thermonastic
+thermonasty
+thermonatrite
+thermoneurosis
+thermoneutrality
+thermonous
+thermonuclear
+thermopair
+thermopalpation
+thermopenetration
+thermoperiod
+thermoperiodic
+thermoperiodicity
+thermoperiodism
+thermophile
+thermophilic
+thermophilous
+thermophobous
+thermophone
+thermophore
+thermophosphor
+thermophosphorescence
+thermopile
+thermoplastic
+thermoplasticity
+thermoplegia
+thermopleion
+thermopolymerization
+thermopolypnea
+thermopolypneic
+Thermopsis
+thermoradiotherapy
+thermoreduction
+thermoregulation
+thermoregulator
+thermoresistance
+thermoresistant
+thermos
+thermoscope
+thermoscopic
+thermoscopical
+thermoscopically
+thermosetting
+thermosiphon
+thermostability
+thermostable
+thermostat
+thermostatic
+thermostatically
+thermostatics
+thermostimulation
+thermosynthesis
+thermosystaltic
+thermosystaltism
+thermotactic
+thermotank
+thermotaxic
+thermotaxis
+thermotelephone
+thermotensile
+thermotension
+thermotherapeutics
+thermotherapy
+thermotic
+thermotical
+thermotically
+thermotics
+thermotropic
+thermotropism
+thermotropy
+thermotype
+thermotypic
+thermotypy
+thermovoltaic
+therodont
+theroid
+therolatry
+therologic
+therological
+therologist
+therology
+Theromora
+Theromores
+theromorph
+Theromorpha
+theromorphia
+theromorphic
+theromorphism
+theromorphological
+theromorphology
+theromorphous
+Theron
+theropod
+Theropoda
+theropodous
+thersitean
+Thersites
+thersitical
+thesauri
+thesaurus
+these
+Thesean
+theses
+Theseum
+Theseus
+thesial
+thesicle
+thesis
+Thesium
+Thesmophoria
+Thesmophorian
+Thesmophoric
+thesmothetae
+thesmothete
+thesmothetes
+thesocyte
+Thespesia
+Thespesius
+Thespian
+Thessalian
+Thessalonian
+thestreen
+theta
+thetch
+thetic
+thetical
+thetically
+thetics
+thetin
+thetine
+Thetis
+theurgic
+theurgical
+theurgically
+theurgist
+theurgy
+Thevetia
+thevetin
+thew
+thewed
+thewless
+thewness
+thewy
+they
+theyll
+theyre
+thiacetic
+thiadiazole
+thialdine
+thiamide
+thiamin
+thiamine
+thianthrene
+thiasi
+thiasine
+thiasite
+thiasoi
+thiasos
+thiasote
+thiasus
+thiazine
+thiazole
+thiazoline
+thick
+thickbrained
+thicken
+thickener
+thickening
+thicket
+thicketed
+thicketful
+thickety
+thickhead
+thickheaded
+thickheadedly
+thickheadedness
+thickish
+thickleaf
+thicklips
+thickly
+thickneck
+thickness
+thicknessing
+thickset
+thickskin
+thickskull
+thickskulled
+thickwind
+thickwit
+thief
+thiefcraft
+thiefdom
+thiefland
+thiefmaker
+thiefmaking
+thiefproof
+thieftaker
+thiefwise
+Thielavia
+Thielaviopsis
+thienone
+thienyl
+Thierry
+thievable
+thieve
+thieveless
+thiever
+thievery
+thieving
+thievingly
+thievish
+thievishly
+thievishness
+thig
+thigger
+thigging
+thigh
+thighbone
+thighed
+thight
+thightness
+thigmonegative
+thigmopositive
+thigmotactic
+thigmotactically
+thigmotaxis
+thigmotropic
+thigmotropically
+thigmotropism
+Thilanottine
+thilk
+thill
+thiller
+thilly
+thimber
+thimble
+thimbleberry
+thimbled
+thimbleflower
+thimbleful
+thimblelike
+thimblemaker
+thimblemaking
+thimbleman
+thimblerig
+thimblerigger
+thimbleriggery
+thimblerigging
+thimbleweed
+thin
+thinbrained
+thine
+thing
+thingal
+thingamabob
+thinghood
+thinginess
+thingish
+thingless
+thinglet
+thinglike
+thinglikeness
+thingliness
+thingly
+thingman
+thingness
+thingstead
+thingum
+thingumajig
+thingumbob
+thingummy
+thingy
+Think
+think
+thinkable
+thinkableness
+thinkably
+thinker
+thinkful
+thinking
+thinkingly
+thinkingpart
+thinkling
+thinly
+thinner
+thinness
+thinning
+thinnish
+Thinocoridae
+Thinocorus
+thinolite
+thio
+thioacetal
+thioacetic
+thioalcohol
+thioaldehyde
+thioamide
+thioantimonate
+thioantimoniate
+thioantimonious
+thioantimonite
+thioarsenate
+thioarseniate
+thioarsenic
+thioarsenious
+thioarsenite
+Thiobacillus
+Thiobacteria
+thiobacteria
+Thiobacteriales
+thiobismuthite
+thiocarbamic
+thiocarbamide
+thiocarbamyl
+thiocarbanilide
+thiocarbimide
+thiocarbonate
+thiocarbonic
+thiocarbonyl
+thiochloride
+thiochrome
+thiocresol
+thiocyanate
+thiocyanation
+thiocyanic
+thiocyanide
+thiocyano
+thiocyanogen
+thiodiazole
+thiodiphenylamine
+thiofuran
+thiofurane
+thiofurfuran
+thiofurfurane
+thiogycolic
+thiohydrate
+thiohydrolysis
+thiohydrolyze
+thioindigo
+thioketone
+thiol
+thiolacetic
+thiolactic
+thiolic
+thionamic
+thionaphthene
+thionate
+thionation
+thioneine
+thionic
+thionine
+thionitrite
+thionium
+thionobenzoic
+thionthiolic
+thionurate
+thionyl
+thionylamine
+thiophen
+thiophene
+thiophenic
+thiophenol
+thiophosgene
+thiophosphate
+thiophosphite
+thiophosphoric
+thiophosphoryl
+thiophthene
+thiopyran
+thioresorcinol
+thiosinamine
+Thiospira
+thiostannate
+thiostannic
+thiostannite
+thiostannous
+thiosulphate
+thiosulphonic
+thiosulphuric
+Thiothrix
+thiotolene
+thiotungstate
+thiotungstic
+thiouracil
+thiourea
+thiourethan
+thiourethane
+thioxene
+thiozone
+thiozonide
+thir
+third
+thirdborough
+thirdings
+thirdling
+thirdly
+thirdness
+thirdsman
+thirl
+thirlage
+thirling
+thirst
+thirster
+thirstful
+thirstily
+thirstiness
+thirsting
+thirstingly
+thirstland
+thirstle
+thirstless
+thirstlessness
+thirstproof
+thirsty
+thirt
+thirteen
+thirteener
+thirteenfold
+thirteenth
+thirteenthly
+thirtieth
+thirty
+thirtyfold
+thirtyish
+this
+thishow
+thislike
+thisn
+thisness
+thissen
+thistle
+thistlebird
+thistled
+thistledown
+thistlelike
+thistleproof
+thistlery
+thistlish
+thistly
+thiswise
+thither
+thitherto
+thitherward
+thitsiol
+thiuram
+thivel
+thixle
+thixolabile
+thixotropic
+thixotropy
+Thlaspi
+Thlingchadinne
+Thlinget
+thlipsis
+Tho
+tho
+thob
+thocht
+thof
+thoft
+thoftfellow
+thoke
+thokish
+thole
+tholeiite
+tholepin
+tholi
+tholoi
+tholos
+tholus
+Thomaean
+Thomas
+Thomasa
+Thomasine
+thomasing
+Thomasite
+thomisid
+Thomisidae
+Thomism
+Thomist
+Thomistic
+Thomistical
+Thomite
+Thomomys
+thomsenolite
+Thomsonian
+Thomsonianism
+thomsonite
+thon
+thonder
+Thondracians
+Thondraki
+Thondrakians
+thone
+thong
+Thonga
+thonged
+thongman
+thongy
+thoo
+thooid
+thoom
+thoracalgia
+thoracaorta
+thoracectomy
+thoracentesis
+thoraces
+thoracic
+Thoracica
+thoracical
+thoracicoabdominal
+thoracicoacromial
+thoracicohumeral
+thoracicolumbar
+thoraciform
+thoracispinal
+thoracoabdominal
+thoracoacromial
+thoracobronchotomy
+thoracoceloschisis
+thoracocentesis
+thoracocyllosis
+thoracocyrtosis
+thoracodelphus
+thoracodidymus
+thoracodorsal
+thoracodynia
+thoracogastroschisis
+thoracograph
+thoracohumeral
+thoracolumbar
+thoracolysis
+thoracomelus
+thoracometer
+thoracometry
+thoracomyodynia
+thoracopagus
+thoracoplasty
+thoracoschisis
+thoracoscope
+thoracoscopy
+Thoracostei
+thoracostenosis
+thoracostomy
+Thoracostraca
+thoracostracan
+thoracostracous
+thoracotomy
+thoral
+thorascope
+thorax
+thore
+thoria
+thorianite
+thoriate
+thoric
+thoriferous
+thorina
+thorite
+thorium
+thorn
+thornback
+thornbill
+thornbush
+thorned
+thornen
+thornhead
+thornily
+thorniness
+thornless
+thornlessness
+thornlet
+thornlike
+thornproof
+thornstone
+thorntail
+thorny
+thoro
+thorocopagous
+thorogummite
+thoron
+thorough
+Thoroughbred
+thoroughbred
+thoroughbredness
+thoroughfare
+thoroughfarer
+thoroughfaresome
+thoroughfoot
+thoroughgoing
+thoroughgoingly
+thoroughgoingness
+thoroughgrowth
+thoroughly
+thoroughness
+thoroughpaced
+thoroughpin
+thoroughsped
+thoroughstem
+thoroughstitch
+thoroughstitched
+thoroughwax
+thoroughwort
+thorp
+thort
+thorter
+thortveitite
+Thos
+Those
+those
+thou
+though
+thought
+thoughted
+thoughten
+thoughtful
+thoughtfully
+thoughtfulness
+thoughtkin
+thoughtless
+thoughtlessly
+thoughtlessness
+thoughtlet
+thoughtness
+thoughtsick
+thoughty
+thousand
+thousandfold
+thousandfoldly
+thousandth
+thousandweight
+thouse
+thow
+thowel
+thowless
+thowt
+Thraces
+Thracian
+thrack
+thraep
+thrail
+thrain
+thrall
+thrallborn
+thralldom
+thram
+thrammle
+thrang
+thrangity
+thranite
+thranitic
+thrap
+thrapple
+thrash
+thrashel
+thrasher
+thrasherman
+thrashing
+thrasonic
+thrasonical
+thrasonically
+thrast
+Thraupidae
+thrave
+thraver
+thraw
+thrawcrook
+thrawn
+thrawneen
+Thrax
+thread
+threadbare
+threadbareness
+threadbarity
+threaded
+threaden
+threader
+threadfin
+threadfish
+threadflower
+threadfoot
+threadiness
+threadle
+threadless
+threadlet
+threadlike
+threadmaker
+threadmaking
+threadway
+threadweed
+threadworm
+thready
+threap
+threaper
+threat
+threaten
+threatenable
+threatener
+threatening
+threateningly
+threatful
+threatfully
+threatless
+threatproof
+three
+threefold
+threefolded
+threefoldedness
+threefoldly
+threefoldness
+threeling
+threeness
+threepence
+threepenny
+threepennyworth
+threescore
+threesome
+thremmatology
+threne
+threnetic
+threnetical
+threnode
+threnodial
+threnodian
+threnodic
+threnodical
+threnodist
+threnody
+threnos
+threonin
+threonine
+threose
+threpsology
+threptic
+thresh
+threshel
+thresher
+thresherman
+threshingtime
+threshold
+Threskiornithidae
+Threskiornithinae
+threw
+thribble
+thrice
+thricecock
+thridacium
+thrift
+thriftbox
+thriftily
+thriftiness
+thriftless
+thriftlessly
+thriftlessness
+thriftlike
+thrifty
+thrill
+thriller
+thrillful
+thrillfully
+thrilling
+thrillingly
+thrillingness
+thrillproof
+thrillsome
+thrilly
+thrimble
+thrimp
+Thrinax
+thring
+thrinter
+thrioboly
+thrip
+thripel
+Thripidae
+thripple
+thrips
+thrive
+thriveless
+thriven
+thriver
+thriving
+thrivingly
+thrivingness
+thro
+throat
+throatal
+throatband
+throated
+throatful
+throatily
+throatiness
+throating
+throatlash
+throatlatch
+throatless
+throatlet
+throatroot
+throatstrap
+throatwort
+throaty
+throb
+throbber
+throbbingly
+throbless
+throck
+throdden
+throddy
+throe
+thrombase
+thrombin
+thromboangiitis
+thromboarteritis
+thrombocyst
+thrombocyte
+thrombocytopenia
+thrombogen
+thrombogenic
+thromboid
+thrombokinase
+thrombolymphangitis
+thrombopenia
+thrombophlebitis
+thromboplastic
+thromboplastin
+thrombose
+thrombosis
+thrombostasis
+thrombotic
+thrombus
+thronal
+throne
+thronedom
+throneless
+thronelet
+thronelike
+throneward
+throng
+thronger
+throngful
+throngingly
+thronize
+thropple
+throstle
+throstlelike
+throttle
+throttler
+throttling
+throttlingly
+throu
+throuch
+throucht
+through
+throughbear
+throughbred
+throughcome
+throughgang
+throughganging
+throughgoing
+throughgrow
+throughknow
+throughout
+throughput
+throve
+throw
+throwaway
+throwback
+throwdown
+thrower
+throwing
+thrown
+throwoff
+throwout
+throwster
+throwwort
+thrum
+thrummer
+thrummers
+thrummy
+thrumwort
+thrush
+thrushel
+thrushlike
+thrushy
+thrust
+thruster
+thrustful
+thrustfulness
+thrusting
+thrustings
+thrutch
+thrutchings
+Thruthvang
+thruv
+thrymsa
+Thryonomys
+Thuan
+Thuban
+Thucydidean
+thud
+thudding
+thuddingly
+thug
+thugdom
+thuggee
+thuggeeism
+thuggery
+thuggess
+thuggish
+thuggism
+Thuidium
+Thuja
+thujene
+thujin
+thujone
+Thujopsis
+thujyl
+Thule
+thulia
+thulir
+thulite
+thulium
+thulr
+thuluth
+thumb
+thumbbird
+thumbed
+thumber
+thumbkin
+thumble
+thumbless
+thumblike
+thumbmark
+thumbnail
+thumbpiece
+thumbprint
+thumbrope
+thumbscrew
+thumbstall
+thumbstring
+thumbtack
+thumby
+thumlungur
+thump
+thumper
+thumping
+thumpingly
+Thunar
+Thunbergia
+thunbergilene
+thunder
+thunderation
+thunderball
+thunderbearer
+thunderbearing
+thunderbird
+thunderblast
+thunderbolt
+thunderburst
+thunderclap
+thundercloud
+thundercrack
+thunderer
+thunderfish
+thunderflower
+thunderful
+thunderhead
+thunderheaded
+thundering
+thunderingly
+thunderless
+thunderlike
+thunderous
+thunderously
+thunderousness
+thunderpeal
+thunderplump
+thunderproof
+thundershower
+thundersmite
+thundersquall
+thunderstick
+thunderstone
+thunderstorm
+thunderstrike
+thunderstroke
+thunderstruck
+thunderwood
+thunderworm
+thunderwort
+thundery
+thundrous
+thundrously
+thung
+thunge
+Thunnidae
+Thunnus
+Thunor
+thuoc
+Thurberia
+thurible
+thuribuler
+thuribulum
+thurifer
+thuriferous
+thurificate
+thurificati
+thurification
+thurify
+Thuringian
+thuringite
+Thurio
+thurl
+thurm
+thurmus
+Thurnia
+Thurniaceae
+thurrock
+Thursday
+thurse
+thurt
+thus
+thusgate
+Thushi
+thusly
+thusness
+thuswise
+thutter
+Thuyopsis
+thwack
+thwacker
+thwacking
+thwackingly
+thwackstave
+thwaite
+thwart
+thwartedly
+thwarteous
+thwarter
+thwarting
+thwartingly
+thwartly
+thwartman
+thwartness
+thwartover
+thwartsaw
+thwartship
+thwartships
+thwartways
+thwartwise
+thwite
+thwittle
+thy
+Thyestean
+Thyestes
+thyine
+thylacine
+thylacitis
+Thylacoleo
+Thylacynus
+thymacetin
+Thymallidae
+Thymallus
+thymate
+thyme
+thymectomize
+thymectomy
+thymegol
+Thymelaea
+Thymelaeaceae
+thymelaeaceous
+Thymelaeales
+thymelcosis
+thymele
+thymelic
+thymelical
+thymelici
+thymene
+thymetic
+thymic
+thymicolymphatic
+thymine
+thymiosis
+thymitis
+thymocyte
+thymogenic
+thymol
+thymolate
+thymolize
+thymolphthalein
+thymolsulphonephthalein
+thymoma
+thymonucleic
+thymopathy
+thymoprivic
+thymoprivous
+thymopsyche
+thymoquinone
+thymotactic
+thymotic
+Thymus
+thymus
+thymy
+thymyl
+thymylic
+thynnid
+Thynnidae
+Thyraden
+thyratron
+thyreoadenitis
+thyreoantitoxin
+thyreoarytenoid
+thyreoarytenoideus
+thyreocervical
+thyreocolloid
+Thyreocoridae
+thyreoepiglottic
+thyreogenic
+thyreogenous
+thyreoglobulin
+thyreoglossal
+thyreohyal
+thyreohyoid
+thyreoid
+thyreoidal
+thyreoideal
+thyreoidean
+thyreoidectomy
+thyreoiditis
+thyreoitis
+thyreolingual
+thyreoprotein
+thyreosis
+thyreotomy
+thyreotoxicosis
+thyreotropic
+thyridial
+Thyrididae
+thyridium
+Thyris
+thyrisiferous
+thyroadenitis
+thyroantitoxin
+thyroarytenoid
+thyroarytenoideus
+thyrocardiac
+thyrocele
+thyrocervical
+thyrocolloid
+thyrocricoid
+thyroepiglottic
+thyroepiglottidean
+thyrogenic
+thyroglobulin
+thyroglossal
+thyrohyal
+thyrohyoid
+thyrohyoidean
+thyroid
+thyroidal
+thyroidea
+thyroideal
+thyroidean
+thyroidectomize
+thyroidectomy
+thyroidism
+thyroiditis
+thyroidization
+thyroidless
+thyroidotomy
+thyroiodin
+thyrolingual
+thyronine
+thyroparathyroidectomize
+thyroparathyroidectomy
+thyroprival
+thyroprivia
+thyroprivic
+thyroprivous
+thyroprotein
+Thyrostraca
+thyrostracan
+thyrotherapy
+thyrotomy
+thyrotoxic
+thyrotoxicosis
+thyrotropic
+thyroxine
+thyrse
+thyrsiflorous
+thyrsiform
+thyrsoid
+thyrsoidal
+thyrsus
+Thysanocarpus
+thysanopter
+Thysanoptera
+thysanopteran
+thysanopteron
+thysanopterous
+Thysanoura
+thysanouran
+thysanourous
+Thysanura
+thysanuran
+thysanurian
+thysanuriform
+thysanurous
+thysel
+thyself
+thysen
+Ti
+ti
+Tiahuanacan
+Tiam
+tiang
+tiao
+tiar
+tiara
+tiaralike
+tiarella
+Tiatinagua
+tib
+Tibbie
+Tibbu
+tibby
+Tiberian
+Tiberine
+Tiberius
+tibet
+Tibetan
+tibey
+tibia
+tibiad
+tibiae
+tibial
+tibiale
+tibicinist
+tibiocalcanean
+tibiofemoral
+tibiofibula
+tibiofibular
+tibiometatarsal
+tibionavicular
+tibiopopliteal
+tibioscaphoid
+tibiotarsal
+tibiotarsus
+Tibouchina
+tibourbou
+tiburon
+Tiburtine
+tic
+tical
+ticca
+tice
+ticement
+ticer
+Tichodroma
+tichodrome
+tichorrhine
+tick
+tickbean
+tickbird
+tickeater
+ticked
+ticken
+ticker
+ticket
+ticketer
+ticketing
+ticketless
+ticketmonger
+tickey
+tickicide
+tickie
+ticking
+tickle
+tickleback
+ticklebrain
+tickled
+ticklely
+ticklenburg
+tickleness
+tickleproof
+tickler
+ticklesome
+tickless
+tickleweed
+tickling
+ticklingly
+ticklish
+ticklishly
+ticklishness
+tickly
+tickney
+tickproof
+tickseed
+tickseeded
+ticktack
+ticktacker
+ticktacktoe
+ticktick
+ticktock
+tickweed
+ticky
+ticul
+Ticuna
+Ticunan
+tid
+tidal
+tidally
+tidbit
+tiddle
+tiddledywinks
+tiddler
+tiddley
+tiddling
+tiddlywink
+tiddlywinking
+tiddy
+tide
+tided
+tideful
+tidehead
+tideland
+tideless
+tidelessness
+tidelike
+tidely
+tidemaker
+tidemaking
+tidemark
+tiderace
+tidesman
+tidesurveyor
+Tideswell
+tidewaiter
+tidewaitership
+tideward
+tidewater
+tideway
+tidiable
+tidily
+tidiness
+tiding
+tidingless
+tidings
+tidley
+tidological
+tidology
+tidy
+tidyism
+tidytips
+tie
+tieback
+tied
+Tiefenthal
+tiemaker
+tiemaking
+tiemannite
+tien
+tiepin
+tier
+tierce
+tierced
+tierceron
+tiered
+tierer
+tierlike
+tiersman
+tietick
+tiewig
+tiewigged
+tiff
+tiffany
+tiffanyite
+tiffie
+tiffin
+tiffish
+tiffle
+tiffy
+tifinagh
+tift
+tifter
+tig
+tige
+tigella
+tigellate
+tigelle
+tigellum
+tigellus
+tiger
+tigerbird
+tigereye
+tigerflower
+tigerfoot
+tigerhearted
+tigerhood
+tigerish
+tigerishly
+tigerishness
+tigerism
+tigerkin
+tigerlike
+tigerling
+tigerly
+tigernut
+tigerproof
+tigerwood
+tigery
+Tigger
+tigger
+tight
+tighten
+tightener
+tightfisted
+tightish
+tightly
+tightness
+tightrope
+tights
+tightwad
+tightwire
+tiglaldehyde
+tiglic
+tiglinic
+tignum
+Tigrai
+Tigre
+Tigrean
+tigress
+tigresslike
+Tigridia
+Tigrina
+tigrine
+Tigris
+tigroid
+tigrolysis
+tigrolytic
+tigtag
+Tigua
+Tigurine
+Tiki
+tikitiki
+tikka
+tikker
+tiklin
+tikolosh
+tikor
+tikur
+til
+tilaite
+tilaka
+tilasite
+tilbury
+Tilda
+tilde
+tile
+tiled
+tilefish
+tilelike
+tilemaker
+tilemaking
+tiler
+tileroot
+tilery
+tileseed
+tilestone
+tileways
+tilework
+tileworks
+tilewright
+tileyard
+Tilia
+Tiliaceae
+tiliaceous
+tilikum
+tiling
+till
+tillable
+Tillaea
+Tillaeastrum
+tillage
+Tillamook
+Tillandsia
+tiller
+tillering
+tillerless
+tillerman
+Tilletia
+Tilletiaceae
+tilletiaceous
+tilley
+tillite
+tillodont
+Tillodontia
+Tillodontidae
+tillot
+tillotter
+tilly
+tilmus
+tilpah
+Tilsit
+tilt
+tiltable
+tiltboard
+tilter
+tilth
+tilting
+tiltlike
+tiltmaker
+tiltmaking
+tiltup
+tilty
+tiltyard
+tilyer
+Tim
+timable
+Timaeus
+Timalia
+Timaliidae
+Timaliinae
+timaliine
+timaline
+Timani
+timar
+timarau
+timawa
+timazite
+timbal
+timbale
+timbang
+timbe
+timber
+timbered
+timberer
+timberhead
+timbering
+timberjack
+timberland
+timberless
+timberlike
+timberling
+timberman
+timbermonger
+timbern
+timbersome
+timbertuned
+timberwood
+timberwork
+timberwright
+timbery
+timberyard
+Timbira
+timbo
+timbre
+timbrel
+timbreled
+timbreler
+timbrologist
+timbrology
+timbromania
+timbromaniac
+timbromanist
+timbrophilic
+timbrophilism
+timbrophilist
+timbrophily
+time
+timeable
+timecard
+timed
+timeful
+timefully
+timefulness
+timekeep
+timekeeper
+timekeepership
+timeless
+timelessly
+timelessness
+Timelia
+Timeliidae
+timeliine
+timelily
+timeliness
+timeling
+timely
+timenoguy
+timeous
+timeously
+timepiece
+timepleaser
+timeproof
+timer
+times
+timesaver
+timesaving
+timeserver
+timeserving
+timeservingness
+timetable
+timetaker
+timetaking
+timeward
+timework
+timeworker
+timeworn
+Timias
+timid
+timidity
+timidly
+timidness
+timing
+timish
+timist
+Timne
+Timo
+timocracy
+timocratic
+timocratical
+Timon
+timon
+timoneer
+Timonian
+Timonism
+Timonist
+Timonize
+timor
+Timorese
+timorous
+timorously
+timorousness
+Timote
+Timotean
+Timothean
+Timothy
+timothy
+timpani
+timpanist
+timpano
+Timucua
+Timucuan
+Timuquan
+Timuquanan
+tin
+Tina
+Tinamidae
+tinamine
+tinamou
+tinampipi
+tincal
+tinchel
+tinchill
+tinclad
+tinct
+tinction
+tinctorial
+tinctorially
+tinctorious
+tinctumutation
+tincture
+tind
+tindal
+tindalo
+tinder
+tinderbox
+tindered
+tinderish
+tinderlike
+tinderous
+tindery
+tine
+tinea
+tineal
+tinean
+tined
+tinegrass
+tineid
+Tineidae
+Tineina
+tineine
+tineman
+tineoid
+Tineoidea
+tinetare
+tinety
+tineweed
+tinful
+Ting
+ting
+tinge
+tinged
+tinger
+Tinggian
+tingi
+tingibility
+tingible
+tingid
+Tingidae
+Tingis
+tingitid
+Tingitidae
+tinglass
+tingle
+tingler
+tingletangle
+tingling
+tinglingly
+tinglish
+tingly
+tingtang
+tinguaite
+tinguaitic
+Tinguian
+tinguy
+tinhorn
+tinhouse
+tinily
+tininess
+tining
+tink
+tinker
+tinkerbird
+tinkerdom
+tinkerer
+tinkerlike
+tinkerly
+tinkershire
+tinkershue
+tinkerwise
+tinkle
+tinkler
+tinklerman
+tinkling
+tinklingly
+tinkly
+tinlet
+tinlike
+tinman
+Tinne
+tinned
+tinner
+tinnery
+tinnet
+Tinni
+tinnified
+tinnily
+tinniness
+tinning
+tinnitus
+tinnock
+tinny
+Tino
+Tinoceras
+tinosa
+tinsel
+tinsellike
+tinselly
+tinselmaker
+tinselmaking
+tinselry
+tinselweaver
+tinselwork
+tinsman
+tinsmith
+tinsmithing
+tinsmithy
+tinstone
+tinstuff
+tint
+tinta
+tintage
+tintamarre
+tintarron
+tinted
+tinter
+tintie
+tintiness
+tinting
+tintingly
+tintinnabula
+tintinnabulant
+tintinnabular
+tintinnabulary
+tintinnabulate
+tintinnabulation
+tintinnabulatory
+tintinnabulism
+tintinnabulist
+tintinnabulous
+tintinnabulum
+tintist
+tintless
+tintometer
+tintometric
+tintometry
+tinty
+tintype
+tintyper
+tinwald
+tinware
+tinwoman
+tinwork
+tinworker
+tinworking
+tiny
+tinzenite
+Tionontates
+Tionontati
+Tiou
+tip
+tipburn
+tipcart
+tipcat
+tipe
+tipful
+tiphead
+Tiphia
+Tiphiidae
+tipiti
+tiple
+tipless
+tiplet
+tipman
+tipmost
+tiponi
+tippable
+tipped
+tippee
+tipper
+tippet
+tipping
+tipple
+tippleman
+tippler
+tipply
+tipproof
+tippy
+tipsification
+tipsifier
+tipsify
+tipsily
+tipsiness
+tipstaff
+tipster
+tipstock
+tipsy
+tiptail
+tipteerer
+tiptilt
+tiptoe
+tiptoeing
+tiptoeingly
+tiptop
+tiptopness
+tiptopper
+tiptoppish
+tiptoppishness
+tiptopsome
+Tipula
+Tipularia
+tipulid
+Tipulidae
+tipuloid
+Tipuloidea
+tipup
+Tipura
+tirade
+tiralee
+tire
+tired
+tiredly
+tiredness
+tiredom
+tirehouse
+tireless
+tirelessly
+tirelessness
+tiremaid
+tiremaker
+tiremaking
+tireman
+tirer
+tireroom
+tiresmith
+tiresome
+tiresomely
+tiresomeness
+tiresomeweed
+tirewoman
+Tirhutia
+tiriba
+tiring
+tiringly
+tirl
+tirma
+tirocinium
+Tirolean
+Tirolese
+Tironian
+tirr
+tirralirra
+tirret
+Tirribi
+tirrivee
+tirrlie
+tirrwirr
+tirthankara
+Tirurai
+tirve
+tirwit
+tisane
+tisar
+Tishiya
+Tishri
+Tisiphone
+tissual
+tissue
+tissued
+tissueless
+tissuelike
+tissuey
+tisswood
+tiswin
+tit
+Titan
+titanate
+titanaugite
+Titanesque
+Titaness
+titania
+Titanian
+Titanic
+titanic
+Titanical
+Titanically
+Titanichthyidae
+Titanichthys
+titaniferous
+titanifluoride
+Titanism
+titanite
+titanitic
+titanium
+Titanlike
+titano
+titanocolumbate
+titanocyanide
+titanofluoride
+Titanolater
+Titanolatry
+Titanomachia
+Titanomachy
+titanomagnetite
+titanoniobate
+titanosaur
+Titanosaurus
+titanosilicate
+titanothere
+Titanotheridae
+Titanotherium
+titanous
+titanyl
+titar
+titbit
+titbitty
+tite
+titer
+titeration
+titfish
+tithable
+tithal
+tithe
+tithebook
+titheless
+tithemonger
+tithepayer
+tither
+titheright
+tithing
+tithingman
+tithingpenny
+tithonic
+tithonicity
+tithonographic
+tithonometer
+Tithymalopsis
+Tithymalus
+titi
+Titian
+titian
+Titianesque
+Titianic
+titien
+Tities
+titilate
+titillability
+titillant
+titillater
+titillating
+titillatingly
+titillation
+titillative
+titillator
+titillatory
+titivate
+titivation
+titivator
+titlark
+title
+titleboard
+titled
+titledom
+titleholder
+titleless
+titleproof
+titler
+titleship
+titlike
+titling
+titlist
+titmal
+titman
+Titmarsh
+Titmarshian
+titmouse
+Titoism
+Titoist
+titoki
+titrable
+titratable
+titrate
+titration
+titre
+titrimetric
+titrimetry
+titter
+titterel
+titterer
+tittering
+titteringly
+tittery
+tittie
+tittle
+tittlebat
+tittler
+tittup
+tittupy
+titty
+tittymouse
+titubancy
+titubant
+titubantly
+titubate
+titubation
+titular
+titularity
+titularly
+titulary
+titulation
+titule
+titulus
+Titurel
+Titus
+tiver
+Tivoli
+tivoli
+tivy
+Tiwaz
+tiza
+tizeur
+tizzy
+tjanting
+tji
+tjosite
+tlaco
+Tlakluit
+Tlapallan
+Tlascalan
+Tlingit
+tmema
+Tmesipteris
+tmesis
+to
+toa
+toad
+toadback
+toadeat
+toadeater
+toader
+toadery
+toadess
+toadfish
+toadflax
+toadflower
+toadhead
+toadier
+toadish
+toadless
+toadlet
+toadlike
+toadlikeness
+toadling
+toadpipe
+toadroot
+toadship
+toadstone
+toadstool
+toadstoollike
+toadwise
+toady
+toadyish
+toadyism
+toadyship
+Toag
+toast
+toastable
+toastee
+toaster
+toastiness
+toastmaster
+toastmastery
+toastmistress
+toasty
+toat
+toatoa
+Toba
+tobacco
+tobaccofied
+tobaccoism
+tobaccoite
+tobaccoless
+tobaccolike
+tobaccoman
+tobacconalian
+tobacconist
+tobacconistical
+tobacconize
+tobaccophil
+tobaccoroot
+tobaccoweed
+tobaccowood
+tobaccoy
+tobe
+Tobiah
+Tobias
+Tobikhar
+tobine
+tobira
+toboggan
+tobogganeer
+tobogganer
+tobogganist
+Toby
+toby
+tobyman
+tocalote
+toccata
+Tocharese
+Tocharian
+Tocharic
+Tocharish
+tocher
+tocherless
+tock
+toco
+Tocobaga
+tocodynamometer
+tocogenetic
+tocogony
+tocokinin
+tocological
+tocologist
+tocology
+tocome
+tocometer
+tocopherol
+tocororo
+tocsin
+tocusso
+Tod
+tod
+Toda
+today
+todayish
+Todd
+todder
+toddick
+toddite
+toddle
+toddlekins
+toddler
+toddy
+toddyize
+toddyman
+tode
+Todea
+Todidae
+Todus
+tody
+toe
+toeboard
+toecap
+toecapped
+toed
+toeless
+toelike
+toellite
+toenail
+toeplate
+Toerless
+toernebohmite
+toetoe
+toff
+toffee
+toffeeman
+toffing
+toffish
+toffy
+toffyman
+Tofieldia
+Toft
+toft
+tofter
+toftman
+toftstead
+tofu
+tog
+toga
+togaed
+togalike
+togata
+togate
+togated
+togawise
+together
+togetherhood
+togetheriness
+togetherness
+toggel
+toggery
+toggle
+toggler
+togless
+togs
+togt
+togue
+toher
+toheroa
+toho
+Tohome
+tohubohu
+tohunga
+toi
+toil
+toiled
+toiler
+toilet
+toileted
+toiletry
+toilette
+toiletted
+toiletware
+toilful
+toilfully
+toilinet
+toiling
+toilingly
+toilless
+toillessness
+toilsome
+toilsomely
+toilsomeness
+toilworn
+toise
+toit
+toitish
+toity
+Tokay
+tokay
+toke
+Tokelau
+token
+tokened
+tokenless
+toko
+tokology
+tokonoma
+tokopat
+tol
+tolamine
+tolan
+tolane
+tolbooth
+told
+toldo
+tole
+Toledan
+Toledo
+Toledoan
+tolerability
+tolerable
+tolerableness
+tolerablish
+tolerably
+tolerance
+tolerancy
+Tolerant
+tolerant
+tolerantism
+tolerantly
+tolerate
+toleration
+tolerationism
+tolerationist
+tolerative
+tolerator
+tolerism
+Toletan
+tolfraedic
+tolguacha
+tolidine
+tolite
+toll
+tollable
+tollage
+tollbooth
+Tollefsen
+toller
+tollery
+tollgate
+tollgatherer
+tollhouse
+tolliker
+tolling
+tollkeeper
+tollman
+tollmaster
+tollpenny
+tolltaker
+tolly
+Tolowa
+tolpatch
+tolpatchery
+tolsester
+tolsey
+Tolstoyan
+Tolstoyism
+Tolstoyist
+tolt
+Toltec
+Toltecan
+tolter
+tolu
+tolualdehyde
+toluate
+toluene
+toluic
+toluide
+toluidide
+toluidine
+toluidino
+toluido
+Toluifera
+tolunitrile
+toluol
+toluquinaldine
+tolusafranine
+toluyl
+toluylene
+toluylenediamine
+toluylic
+tolyl
+tolylene
+tolylenediamine
+Tolypeutes
+tolypeutine
+Tom
+Toma
+tomahawk
+tomahawker
+tomalley
+toman
+Tomas
+tomatillo
+tomato
+tomb
+tombac
+tombal
+tombe
+tombic
+tombless
+tomblet
+tomblike
+tombola
+tombolo
+tomboy
+tomboyful
+tomboyish
+tomboyishly
+tomboyishness
+tomboyism
+tombstone
+tomcat
+tomcod
+tome
+tomeful
+tomelet
+toment
+tomentose
+tomentous
+tomentulose
+tomentum
+tomfool
+tomfoolery
+tomfoolish
+tomfoolishness
+tomial
+tomin
+tomish
+Tomistoma
+tomium
+tomjohn
+Tomkin
+tomkin
+Tommer
+Tomming
+Tommy
+tommy
+tommybag
+tommycod
+tommyrot
+tomnoddy
+tomnoup
+tomogram
+tomographic
+tomography
+Tomopteridae
+Tomopteris
+tomorn
+tomorrow
+tomorrower
+tomorrowing
+tomorrowness
+tomosis
+Tompion
+tompiper
+tompon
+tomtate
+tomtit
+Tomtitmouse
+ton
+tonal
+tonalamatl
+tonalist
+tonalite
+tonalitive
+tonality
+tonally
+tonant
+tonation
+tondino
+tone
+toned
+toneless
+tonelessly
+tonelessness
+toneme
+toneproof
+toner
+tonetic
+tonetically
+tonetician
+tonetics
+tong
+Tonga
+tonga
+Tongan
+Tongas
+tonger
+tongkang
+tongman
+Tongrian
+tongs
+tongsman
+tongue
+tonguecraft
+tongued
+tonguedoughty
+tonguefence
+tonguefencer
+tongueflower
+tongueful
+tongueless
+tonguelet
+tonguelike
+tongueman
+tonguemanship
+tongueplay
+tongueproof
+tonguer
+tongueshot
+tonguesman
+tonguesore
+tonguester
+tonguetip
+tonguey
+tonguiness
+tonguing
+tonic
+tonically
+tonicity
+tonicize
+tonicobalsamic
+tonicoclonic
+tonicostimulant
+tonify
+tonight
+Tonikan
+tonish
+tonishly
+tonishness
+tonite
+tonitrocirrus
+tonitruant
+tonitruone
+tonitruous
+tonjon
+tonk
+Tonkawa
+Tonkawan
+tonkin
+Tonkinese
+tonlet
+Tonna
+tonnage
+tonneau
+tonneaued
+tonner
+tonnish
+tonnishly
+tonnishness
+tonoclonic
+tonogram
+tonograph
+tonological
+tonology
+tonometer
+tonometric
+tonometry
+tonophant
+tonoplast
+tonoscope
+tonotactic
+tonotaxis
+tonous
+tonsbergite
+tonsil
+tonsilectomy
+tonsilitic
+tonsillar
+tonsillary
+tonsillectome
+tonsillectomic
+tonsillectomize
+tonsillectomy
+tonsillith
+tonsillitic
+tonsillitis
+tonsillolith
+tonsillotome
+tonsillotomy
+tonsilomycosis
+tonsor
+tonsorial
+tonsurate
+tonsure
+tonsured
+tontine
+tontiner
+Tonto
+tonus
+Tony
+tony
+tonyhoop
+too
+toodle
+toodleloodle
+took
+tooken
+tool
+toolbox
+toolbuilder
+toolbuilding
+tooler
+toolhead
+toolholder
+toolholding
+tooling
+toolless
+toolmaker
+toolmaking
+toolman
+toolmark
+toolmarking
+toolplate
+toolroom
+toolsetter
+toolslide
+toolsmith
+toolstock
+toolstone
+toom
+toomly
+toon
+Toona
+toonwood
+toop
+toorie
+toorock
+tooroo
+toosh
+toot
+tooter
+tooth
+toothache
+toothaching
+toothachy
+toothbill
+toothbrush
+toothbrushy
+toothchiseled
+toothcomb
+toothcup
+toothdrawer
+toothdrawing
+toothed
+toother
+toothflower
+toothful
+toothill
+toothing
+toothless
+toothlessly
+toothlessness
+toothlet
+toothleted
+toothlike
+toothpick
+toothplate
+toothproof
+toothsome
+toothsomely
+toothsomeness
+toothstick
+toothwash
+toothwork
+toothwort
+toothy
+tootle
+tootler
+tootlish
+tootsy
+toozle
+toozoo
+top
+topalgia
+toparch
+toparchia
+toparchical
+toparchy
+topass
+Topatopa
+topaz
+topazfels
+topazine
+topazite
+topazolite
+topazy
+topcap
+topcast
+topchrome
+topcoat
+topcoating
+tope
+topectomy
+topee
+topeewallah
+topeng
+topepo
+toper
+toperdom
+topesthesia
+topflight
+topfull
+topgallant
+toph
+tophaceous
+tophaike
+Tophet
+tophetic
+tophetize
+tophus
+tophyperidrosis
+topi
+topia
+topiarian
+topiarist
+topiarius
+topiary
+topic
+topical
+topicality
+topically
+topinambou
+Topinish
+topknot
+topknotted
+topless
+toplighted
+toplike
+topline
+toploftical
+toploftily
+toploftiness
+toplofty
+topmaker
+topmaking
+topman
+topmast
+topmost
+topmostly
+topnotch
+topnotcher
+topo
+topoalgia
+topochemical
+topognosia
+topognosis
+topograph
+topographer
+topographic
+topographical
+topographically
+topographics
+topographist
+topographize
+topographometric
+topography
+topolatry
+topologic
+topological
+topologist
+topology
+toponarcosis
+toponym
+toponymal
+toponymic
+toponymical
+toponymics
+toponymist
+toponymy
+topophobia
+topophone
+topotactic
+topotaxis
+topotype
+topotypic
+topotypical
+topped
+topper
+toppiece
+topping
+toppingly
+toppingness
+topple
+toppler
+topply
+toppy
+toprail
+toprope
+tops
+topsail
+topsailite
+topside
+topsl
+topsman
+topsoil
+topstone
+topswarm
+Topsy
+topsyturn
+toptail
+topwise
+toque
+Tor
+tor
+tora
+torah
+Toraja
+toral
+toran
+torbanite
+torbanitic
+torbernite
+torc
+torcel
+torch
+torchbearer
+torchbearing
+torcher
+torchless
+torchlight
+torchlighted
+torchlike
+torchman
+torchon
+torchweed
+torchwood
+torchwort
+torcular
+torculus
+tordrillite
+tore
+toreador
+tored
+Torenia
+torero
+toreumatography
+toreumatology
+toreutic
+toreutics
+torfaceous
+torfel
+torgoch
+Torgot
+toric
+Toriest
+Torified
+torii
+Torilis
+Torinese
+Toriness
+torma
+tormen
+torment
+tormenta
+tormentable
+tormentation
+tormentative
+tormented
+tormentedly
+tormentful
+tormentil
+tormentilla
+tormenting
+tormentingly
+tormentingness
+tormentive
+tormentor
+tormentous
+tormentress
+tormentry
+tormentum
+tormina
+torminal
+torminous
+tormodont
+torn
+tornachile
+tornade
+tornadic
+tornado
+tornadoesque
+tornadoproof
+tornal
+tornaria
+tornarian
+tornese
+torney
+tornillo
+Tornit
+tornote
+tornus
+toro
+toroid
+toroidal
+torolillo
+Toromona
+Torontonian
+tororokombu
+Torosaurus
+torose
+torosity
+torotoro
+torous
+torpedineer
+Torpedinidae
+torpedinous
+torpedo
+torpedoer
+torpedoist
+torpedolike
+torpedoplane
+torpedoproof
+torpent
+torpescence
+torpescent
+torpid
+torpidity
+torpidly
+torpidness
+torpify
+torpitude
+torpor
+torporific
+torporize
+torquate
+torquated
+torque
+torqued
+torques
+torrefaction
+torrefication
+torrefy
+torrent
+torrentful
+torrentfulness
+torrential
+torrentiality
+torrentially
+torrentine
+torrentless
+torrentlike
+torrentuous
+torrentwise
+Torreya
+Torricellian
+torrid
+torridity
+torridly
+torridness
+Torridonian
+Torrubia
+torsade
+torse
+torsel
+torsibility
+torsigraph
+torsile
+torsimeter
+torsiogram
+torsiograph
+torsiometer
+torsion
+torsional
+torsionally
+torsioning
+torsionless
+torsive
+torsk
+torso
+torsoclusion
+torsometer
+torsoocclusion
+Torsten
+tort
+torta
+torteau
+torticollar
+torticollis
+torticone
+tortile
+tortility
+tortilla
+tortille
+tortious
+tortiously
+tortive
+tortoise
+tortoiselike
+Tortonian
+tortrices
+tortricid
+Tortricidae
+Tortricina
+tortricine
+tortricoid
+Tortricoidea
+Tortrix
+tortula
+Tortulaceae
+tortulaceous
+tortulous
+tortuose
+tortuosity
+tortuous
+tortuously
+tortuousness
+torturable
+torturableness
+torture
+tortured
+torturedly
+tortureproof
+torturer
+torturesome
+torturing
+torturingly
+torturous
+torturously
+toru
+torula
+torulaceous
+torulaform
+toruliform
+torulin
+toruloid
+torulose
+torulosis
+torulous
+torulus
+torus
+torve
+torvid
+torvity
+torvous
+Tory
+tory
+Torydom
+Toryess
+Toryfication
+Toryfy
+toryhillite
+Toryish
+Toryism
+Toryistic
+Toryize
+Toryship
+toryweed
+tosaphist
+tosaphoth
+toscanite
+Tosephta
+Tosephtas
+tosh
+toshakhana
+tosher
+toshery
+toshly
+toshnail
+toshy
+tosily
+Tosk
+Toskish
+toss
+tosser
+tossicated
+tossily
+tossing
+tossingly
+tossment
+tosspot
+tossup
+tossy
+tost
+tosticate
+tostication
+toston
+tosy
+tot
+total
+totalitarian
+totalitarianism
+totality
+totalization
+totalizator
+totalize
+totalizer
+totally
+totalness
+totanine
+Totanus
+totaquin
+totaquina
+totaquine
+totara
+totchka
+tote
+toteload
+totem
+totemic
+totemically
+totemism
+totemist
+totemistic
+totemite
+totemization
+totemy
+toter
+tother
+totient
+Totipalmatae
+totipalmate
+totipalmation
+totipotence
+totipotency
+totipotent
+totipotential
+totipotentiality
+totitive
+toto
+Totonac
+Totonacan
+Totonaco
+totora
+Totoro
+totquot
+totter
+totterer
+tottergrass
+tottering
+totteringly
+totterish
+tottery
+Tottie
+totting
+tottle
+tottlish
+totty
+tottyhead
+totuava
+totum
+toty
+totyman
+tou
+toucan
+toucanet
+Toucanid
+touch
+touchable
+touchableness
+touchback
+touchbell
+touchbox
+touchdown
+touched
+touchedness
+toucher
+touchhole
+touchily
+touchiness
+touching
+touchingly
+touchingness
+touchless
+touchline
+touchous
+touchpan
+touchpiece
+touchstone
+touchwood
+touchy
+Toufic
+toug
+tough
+toughen
+toughener
+toughhead
+toughhearted
+toughish
+toughly
+toughness
+tought
+tould
+toumnah
+Tounatea
+toup
+toupee
+toupeed
+toupet
+tour
+touraco
+tourbillion
+tourer
+tourette
+touring
+tourism
+tourist
+touristdom
+touristic
+touristproof
+touristry
+touristship
+touristy
+tourize
+tourmaline
+tourmalinic
+tourmaliniferous
+tourmalinization
+tourmalinize
+tourmalite
+tourn
+tournament
+tournamental
+tournant
+tournasin
+tournay
+tournee
+Tournefortia
+Tournefortian
+tourney
+tourneyer
+tourniquet
+tourte
+tousche
+touse
+touser
+tousle
+tously
+tousy
+tout
+touter
+Tovah
+tovar
+Tovaria
+Tovariaceae
+tovariaceous
+tovarish
+tow
+towable
+towage
+towai
+towan
+toward
+towardliness
+towardly
+towardness
+towards
+towboat
+towcock
+towd
+towel
+towelette
+toweling
+towelry
+tower
+towered
+towering
+toweringly
+towerless
+towerlet
+towerlike
+towerman
+towerproof
+towerwise
+towerwork
+towerwort
+towery
+towght
+towhead
+towheaded
+towhee
+towing
+towkay
+towlike
+towline
+towmast
+town
+towned
+townee
+towner
+townet
+townfaring
+townfolk
+townful
+towngate
+townhood
+townify
+towniness
+townish
+townishly
+townishness
+townist
+townland
+townless
+townlet
+townlike
+townling
+townly
+townman
+townsboy
+townscape
+Townsendia
+Townsendite
+townsfellow
+townsfolk
+township
+townside
+townsite
+townsman
+townspeople
+townswoman
+townward
+townwards
+townwear
+towny
+towpath
+towrope
+towser
+towy
+tox
+toxa
+toxalbumic
+toxalbumin
+toxalbumose
+toxamin
+toxanemia
+toxaphene
+toxcatl
+toxemia
+toxemic
+toxic
+toxicaemia
+toxical
+toxically
+toxicant
+toxicarol
+toxication
+toxicemia
+toxicity
+toxicodendrol
+Toxicodendron
+toxicoderma
+toxicodermatitis
+toxicodermatosis
+toxicodermia
+toxicodermitis
+toxicogenic
+toxicognath
+toxicohaemia
+toxicohemia
+toxicoid
+toxicologic
+toxicological
+toxicologically
+toxicologist
+toxicology
+toxicomania
+toxicopathic
+toxicopathy
+toxicophagous
+toxicophagy
+toxicophidia
+toxicophobia
+toxicosis
+toxicotraumatic
+toxicum
+toxidermic
+toxidermitis
+toxifer
+Toxifera
+toxiferous
+toxigenic
+toxihaemia
+toxihemia
+toxiinfection
+toxiinfectious
+toxin
+toxinemia
+toxinfection
+toxinfectious
+toxinosis
+toxiphobia
+toxiphobiac
+toxiphoric
+toxitabellae
+toxity
+Toxodon
+toxodont
+Toxodontia
+toxogenesis
+Toxoglossa
+toxoglossate
+toxoid
+toxology
+toxolysis
+toxon
+toxone
+toxonosis
+toxophil
+toxophile
+toxophilism
+toxophilite
+toxophilitic
+toxophilitism
+toxophilous
+toxophily
+toxophoric
+toxophorous
+toxoplasmosis
+toxosis
+toxosozin
+Toxostoma
+toxotae
+Toxotes
+Toxotidae
+Toxylon
+toy
+toydom
+toyer
+toyful
+toyfulness
+toyhouse
+toying
+toyingly
+toyish
+toyishly
+toyishness
+toyland
+toyless
+toylike
+toymaker
+toymaking
+toyman
+toyon
+toyshop
+toysome
+toytown
+toywoman
+toywort
+toze
+tozee
+tozer
+tra
+trabacolo
+trabal
+trabant
+trabascolo
+trabea
+trabeae
+trabeatae
+trabeated
+trabeation
+trabecula
+trabecular
+trabecularism
+trabeculate
+trabeculated
+trabeculation
+trabecule
+trabuch
+trabucho
+Tracaulon
+trace
+traceability
+traceable
+traceableness
+traceably
+traceless
+tracelessly
+tracer
+traceried
+tracery
+Tracey
+trachea
+tracheaectasy
+tracheal
+trachealgia
+trachealis
+trachean
+Trachearia
+trachearian
+tracheary
+Tracheata
+tracheate
+tracheation
+tracheid
+tracheidal
+tracheitis
+trachelagra
+trachelate
+trachelectomopexia
+trachelectomy
+trachelismus
+trachelitis
+trachelium
+tracheloacromialis
+trachelobregmatic
+tracheloclavicular
+trachelocyllosis
+trachelodynia
+trachelology
+trachelomastoid
+trachelopexia
+tracheloplasty
+trachelorrhaphy
+tracheloscapular
+Trachelospermum
+trachelotomy
+trachenchyma
+tracheobronchial
+tracheobronchitis
+tracheocele
+tracheochromatic
+tracheoesophageal
+tracheofissure
+tracheolar
+tracheolaryngeal
+tracheolaryngotomy
+tracheole
+tracheolingual
+tracheopathia
+tracheopathy
+tracheopharyngeal
+Tracheophonae
+tracheophone
+tracheophonesis
+tracheophonine
+tracheophony
+tracheoplasty
+tracheopyosis
+tracheorrhagia
+tracheoschisis
+tracheoscopic
+tracheoscopist
+tracheoscopy
+tracheostenosis
+tracheostomy
+tracheotome
+tracheotomist
+tracheotomize
+tracheotomy
+Trachinidae
+trachinoid
+Trachinus
+trachitis
+trachle
+Trachodon
+trachodont
+trachodontid
+Trachodontidae
+Trachoma
+trachomatous
+Trachomedusae
+trachomedusan
+trachyandesite
+trachybasalt
+trachycarpous
+Trachycarpus
+trachychromatic
+trachydolerite
+trachyglossate
+Trachylinae
+trachyline
+Trachymedusae
+trachymedusan
+trachyphonia
+trachyphonous
+Trachypteridae
+trachypteroid
+Trachypterus
+trachyspermous
+trachyte
+trachytic
+trachytoid
+tracing
+tracingly
+track
+trackable
+trackage
+trackbarrow
+tracked
+tracker
+trackhound
+trackingscout
+tracklayer
+tracklaying
+trackless
+tracklessly
+tracklessness
+trackman
+trackmanship
+trackmaster
+trackscout
+trackshifter
+tracksick
+trackside
+trackwalker
+trackway
+trackwork
+tract
+tractability
+tractable
+tractableness
+tractably
+tractarian
+Tractarianism
+tractarianize
+tractate
+tractator
+tractatule
+tractellate
+tractellum
+tractiferous
+tractile
+tractility
+traction
+tractional
+tractioneering
+Tractite
+tractlet
+tractor
+tractoration
+tractorism
+tractorist
+tractorization
+tractorize
+tractory
+tractrix
+Tracy
+tradable
+tradal
+trade
+tradecraft
+tradeful
+tradeless
+trademaster
+trader
+tradership
+Tradescantia
+tradesfolk
+tradesman
+tradesmanlike
+tradesmanship
+tradesmanwise
+tradespeople
+tradesperson
+tradeswoman
+tradiment
+trading
+tradite
+tradition
+traditional
+traditionalism
+traditionalist
+traditionalistic
+traditionality
+traditionalize
+traditionally
+traditionarily
+traditionary
+traditionate
+traditionately
+traditioner
+traditionism
+traditionist
+traditionitis
+traditionize
+traditionless
+traditionmonger
+traditious
+traditive
+traditor
+traditores
+traditorship
+traduce
+traducement
+traducent
+traducer
+traducian
+traducianism
+traducianist
+traducianistic
+traducible
+traducing
+traducingly
+traduction
+traductionist
+trady
+traffic
+trafficability
+trafficable
+trafficableness
+trafficless
+trafficway
+trafflicker
+trafflike
+trag
+tragacanth
+tragacantha
+tragacanthin
+tragal
+Tragasol
+tragedial
+tragedian
+tragedianess
+tragedical
+tragedienne
+tragedietta
+tragedist
+tragedization
+tragedize
+tragedy
+tragelaph
+tragelaphine
+Tragelaphus
+tragi
+tragic
+tragical
+tragicality
+tragically
+tragicalness
+tragicaster
+tragicize
+tragicly
+tragicness
+tragicofarcical
+tragicoheroicomic
+tragicolored
+tragicomedian
+tragicomedy
+tragicomic
+tragicomical
+tragicomicality
+tragicomically
+tragicomipastoral
+tragicoromantic
+tragicose
+tragopan
+Tragopogon
+Tragulidae
+Tragulina
+traguline
+traguloid
+Traguloidea
+Tragulus
+tragus
+trah
+traheen
+traik
+trail
+trailer
+trailery
+trailiness
+trailing
+trailingly
+trailless
+trailmaker
+trailmaking
+trailman
+trailside
+trailsman
+traily
+train
+trainable
+trainage
+trainagraph
+trainband
+trainbearer
+trainbolt
+trainboy
+trained
+trainee
+trainer
+trainful
+training
+trainless
+trainload
+trainman
+trainmaster
+trainsick
+trainster
+traintime
+trainway
+trainy
+traipse
+trait
+traitless
+traitor
+traitorhood
+traitorism
+traitorize
+traitorlike
+traitorling
+traitorous
+traitorously
+traitorousness
+traitorship
+traitorwise
+traitress
+traject
+trajectile
+trajection
+trajectitious
+trajectory
+trajet
+tralatician
+tralaticiary
+tralatition
+tralatitious
+tralatitiously
+tralira
+Trallian
+tram
+trama
+tramal
+tramcar
+trame
+Trametes
+tramful
+tramless
+tramline
+tramman
+trammel
+trammeled
+trammeler
+trammelhead
+trammeling
+trammelingly
+trammelled
+trammellingly
+trammer
+tramming
+trammon
+tramontane
+tramp
+trampage
+trampdom
+tramper
+trampess
+tramphood
+trampish
+trampishly
+trampism
+trample
+trampler
+tramplike
+trampolin
+trampoline
+trampoose
+trampot
+tramroad
+tramsmith
+tramway
+tramwayman
+tramyard
+Tran
+trance
+tranced
+trancedly
+tranceful
+trancelike
+tranchefer
+tranchet
+trancoidal
+traneen
+trank
+tranka
+tranker
+trankum
+tranky
+tranquil
+tranquility
+tranquilization
+tranquilize
+tranquilizer
+tranquilizing
+tranquilizingly
+tranquillity
+tranquillization
+tranquillize
+tranquilly
+tranquilness
+transaccidentation
+transact
+transaction
+transactional
+transactionally
+transactioneer
+transactor
+transalpine
+transalpinely
+transalpiner
+transamination
+transanimate
+transanimation
+transannular
+transapical
+transappalachian
+transaquatic
+transarctic
+transatlantic
+transatlantically
+transatlantican
+transatlanticism
+transaudient
+transbaikal
+transbaikalian
+transbay
+transboard
+transborder
+transcalency
+transcalent
+transcalescency
+transcalescent
+Transcaucasian
+transceiver
+transcend
+transcendence
+transcendency
+transcendent
+transcendental
+transcendentalism
+transcendentalist
+transcendentalistic
+transcendentality
+transcendentalize
+transcendentally
+transcendently
+transcendentness
+transcendible
+transcending
+transcendingly
+transcendingness
+transcension
+transchannel
+transcolor
+transcoloration
+transconductance
+transcondylar
+transcondyloid
+transconscious
+transcontinental
+transcorporate
+transcorporeal
+transcortical
+transcreate
+transcribable
+transcribble
+transcribbler
+transcribe
+transcriber
+transcript
+transcription
+transcriptional
+transcriptionally
+transcriptitious
+transcriptive
+transcriptively
+transcriptural
+transcrystalline
+transcurrent
+transcurrently
+transcurvation
+transdermic
+transdesert
+transdialect
+transdiaphragmatic
+transdiurnal
+transducer
+transduction
+transect
+transection
+transelement
+transelementate
+transelementation
+transempirical
+transenna
+transept
+transeptal
+transeptally
+transequatorial
+transessentiate
+transeunt
+transexperiential
+transfashion
+transfeature
+transfer
+transferability
+transferable
+transferableness
+transferably
+transferal
+transferee
+transference
+transferent
+transferential
+transferography
+transferor
+transferotype
+transferred
+transferrer
+transferribility
+transferring
+transferror
+transferrotype
+transfigurate
+transfiguration
+transfigurative
+transfigure
+transfigurement
+transfiltration
+transfinite
+transfix
+transfixation
+transfixion
+transfixture
+transfluent
+transfluvial
+transflux
+transforation
+transform
+transformability
+transformable
+transformance
+transformation
+transformationist
+transformative
+transformator
+transformer
+transforming
+transformingly
+transformism
+transformist
+transformistic
+transfrontal
+transfrontier
+transfuge
+transfugitive
+transfuse
+transfuser
+transfusible
+transfusion
+transfusionist
+transfusive
+transfusively
+transgredient
+transgress
+transgressible
+transgressing
+transgressingly
+transgression
+transgressional
+transgressive
+transgressively
+transgressor
+transhape
+transhuman
+transhumanate
+transhumanation
+transhumance
+transhumanize
+transhumant
+transience
+transiency
+transient
+transiently
+transientness
+transigence
+transigent
+transiliac
+transilience
+transiliency
+transilient
+transilluminate
+transillumination
+transilluminator
+transimpression
+transincorporation
+transindividual
+transinsular
+transire
+transischiac
+transisthmian
+transistor
+transit
+transitable
+transiter
+transition
+transitional
+transitionally
+transitionalness
+transitionary
+transitionist
+transitival
+transitive
+transitively
+transitiveness
+transitivism
+transitivity
+transitman
+transitorily
+transitoriness
+transitory
+transitus
+Transjordanian
+translade
+translatable
+translatableness
+translate
+translater
+translation
+translational
+translationally
+translative
+translator
+translatorese
+translatorial
+translatorship
+translatory
+translatress
+translatrix
+translay
+transleithan
+transletter
+translinguate
+transliterate
+transliteration
+transliterator
+translocalization
+translocate
+translocation
+translocatory
+translucence
+translucency
+translucent
+translucently
+translucid
+transmarginal
+transmarine
+transmaterial
+transmateriation
+transmedial
+transmedian
+transmental
+transmentation
+transmeridional
+transmethylation
+transmigrant
+transmigrate
+transmigration
+transmigrationism
+transmigrationist
+transmigrative
+transmigratively
+transmigrator
+transmigratory
+transmissibility
+transmissible
+transmission
+transmissional
+transmissionist
+transmissive
+transmissively
+transmissiveness
+transmissivity
+transmissometer
+transmissory
+transmit
+transmittable
+transmittal
+transmittance
+transmittancy
+transmittant
+transmitter
+transmittible
+transmogrification
+transmogrifier
+transmogrify
+transmold
+transmontane
+transmorphism
+transmundane
+transmural
+transmuscle
+transmutability
+transmutable
+transmutableness
+transmutably
+transmutation
+transmutational
+transmutationist
+transmutative
+transmutatory
+transmute
+transmuter
+transmuting
+transmutive
+transmutual
+transnatation
+transnational
+transnatural
+transnaturation
+transnature
+transnihilation
+transnormal
+transocean
+transoceanic
+transocular
+transom
+transomed
+transonic
+transorbital
+transpacific
+transpadane
+transpalatine
+transpalmar
+transpanamic
+transparence
+transparency
+transparent
+transparentize
+transparently
+transparentness
+transparietal
+transparish
+transpeciate
+transpeciation
+transpeer
+transpenetrable
+transpeninsular
+transperitoneal
+transperitoneally
+transpersonal
+transphenomenal
+transphysical
+transpicuity
+transpicuous
+transpicuously
+transpierce
+transpirability
+transpirable
+transpiration
+transpirative
+transpiratory
+transpire
+transpirometer
+transplace
+transplant
+transplantability
+transplantable
+transplantar
+transplantation
+transplantee
+transplanter
+transplendency
+transplendent
+transplendently
+transpleural
+transpleurally
+transpolar
+transponibility
+transponible
+transpontine
+transport
+transportability
+transportable
+transportableness
+transportal
+transportance
+transportation
+transportational
+transportationist
+transportative
+transported
+transportedly
+transportedness
+transportee
+transporter
+transporting
+transportingly
+transportive
+transportment
+transposability
+transposable
+transposableness
+transposal
+transpose
+transposer
+transposition
+transpositional
+transpositive
+transpositively
+transpositor
+transpository
+transpour
+transprint
+transprocess
+transprose
+transproser
+transpulmonary
+transpyloric
+transradiable
+transrational
+transreal
+transrectification
+transrhenane
+transrhodanian
+transriverine
+transsegmental
+transsensual
+transseptal
+transsepulchral
+transshape
+transshift
+transship
+transshipment
+transsolid
+transstellar
+transsubjective
+transtemporal
+Transteverine
+transthalamic
+transthoracic
+transubstantial
+transubstantially
+transubstantiate
+transubstantiation
+transubstantiationalist
+transubstantiationite
+transubstantiative
+transubstantiatively
+transubstantiatory
+transudate
+transudation
+transudative
+transudatory
+transude
+transumpt
+transumption
+transumptive
+transuranian
+transuranic
+transuranium
+transuterine
+transvaal
+Transvaaler
+Transvaalian
+transvaluate
+transvaluation
+transvalue
+transvasate
+transvasation
+transvase
+transvectant
+transvection
+transvenom
+transverbate
+transverbation
+transverberate
+transverberation
+transversal
+transversale
+transversalis
+transversality
+transversally
+transversan
+transversary
+transverse
+transversely
+transverseness
+transverser
+transversion
+transversive
+transversocubital
+transversomedial
+transversospinal
+transversovertical
+transversum
+transversus
+transvert
+transverter
+transvest
+transvestism
+transvestite
+transvestitism
+transvolation
+transwritten
+Transylvanian
+trant
+tranter
+trantlum
+Tranzschelia
+trap
+Trapa
+Trapaceae
+trapaceous
+trapball
+trapes
+trapezate
+trapeze
+trapezia
+trapezial
+trapezian
+trapeziform
+trapezing
+trapeziometacarpal
+trapezist
+trapezium
+trapezius
+trapezohedral
+trapezohedron
+trapezoid
+trapezoidal
+trapezoidiform
+trapfall
+traphole
+trapiferous
+traplight
+traplike
+trapmaker
+trapmaking
+trappean
+trapped
+trapper
+trapperlike
+trappiness
+trapping
+trappingly
+Trappist
+trappist
+Trappistine
+trappoid
+trappose
+trappous
+trappy
+traprock
+traps
+trapshoot
+trapshooter
+trapshooting
+trapstick
+trapunto
+trasformism
+trash
+trashery
+trashify
+trashily
+trashiness
+traship
+trashless
+trashrack
+trashy
+trass
+Trastevere
+Trasteverine
+trasy
+traulism
+trauma
+traumasthenia
+traumatic
+traumatically
+traumaticin
+traumaticine
+traumatism
+traumatize
+traumatology
+traumatonesis
+traumatopnea
+traumatopyra
+traumatosis
+traumatotactic
+traumatotaxis
+traumatropic
+traumatropism
+Trautvetteria
+travail
+travale
+travally
+travated
+trave
+travel
+travelability
+travelable
+traveldom
+traveled
+traveler
+traveleress
+travelerlike
+traveling
+travellability
+travellable
+travelled
+traveller
+travelogue
+traveloguer
+traveltime
+traversable
+traversal
+traversary
+traverse
+traversed
+traversely
+traverser
+traversewise
+traversework
+traversing
+traversion
+travertin
+travertine
+travestier
+travestiment
+travesty
+Travis
+travis
+travois
+travoy
+trawl
+trawlboat
+trawler
+trawlerman
+trawlnet
+tray
+trayful
+traylike
+treacher
+treacherous
+treacherously
+treacherousness
+treachery
+treacle
+treaclelike
+treaclewort
+treacliness
+treacly
+tread
+treadboard
+treader
+treading
+treadle
+treadler
+treadmill
+treadwheel
+treason
+treasonable
+treasonableness
+treasonably
+treasonful
+treasonish
+treasonist
+treasonless
+treasonmonger
+treasonous
+treasonously
+treasonproof
+treasurable
+treasure
+treasureless
+treasurer
+treasurership
+treasuress
+treasurous
+treasury
+treasuryship
+treat
+treatable
+treatableness
+treatably
+treatee
+treater
+treating
+treatise
+treatiser
+treatment
+treator
+treaty
+treatyist
+treatyite
+treatyless
+Trebellian
+treble
+trebleness
+trebletree
+trebly
+trebuchet
+trecentist
+trechmannite
+treckschuyt
+Treculia
+treddle
+tredecile
+tredille
+tree
+treebeard
+treebine
+treed
+treefish
+treeful
+treehair
+treehood
+treeify
+treeiness
+treeless
+treelessness
+treelet
+treelike
+treeling
+treemaker
+treemaking
+treeman
+treen
+treenail
+treescape
+treeship
+treespeeler
+treetop
+treeward
+treewards
+treey
+tref
+trefgordd
+trefle
+trefoil
+trefoiled
+trefoillike
+trefoilwise
+tregadyne
+tregerg
+tregohm
+trehala
+trehalase
+trehalose
+treillage
+trek
+trekker
+trekometer
+trekpath
+trellis
+trellised
+trellislike
+trelliswork
+Trema
+Tremandra
+Tremandraceae
+tremandraceous
+Trematoda
+trematode
+Trematodea
+Trematodes
+trematoid
+Trematosaurus
+tremble
+tremblement
+trembler
+trembling
+tremblingly
+tremblingness
+tremblor
+trembly
+Tremella
+Tremellaceae
+tremellaceous
+Tremellales
+tremelliform
+tremelline
+tremellineous
+tremelloid
+tremellose
+tremendous
+tremendously
+tremendousness
+tremetol
+tremie
+tremolando
+tremolant
+tremolist
+tremolite
+tremolitic
+tremolo
+tremor
+tremorless
+tremorlessly
+tremulant
+tremulate
+tremulation
+tremulous
+tremulously
+tremulousness
+trenail
+trench
+trenchancy
+trenchant
+trenchantly
+trenchantness
+trenchboard
+trenched
+trencher
+trencherless
+trencherlike
+trenchermaker
+trenchermaking
+trencherman
+trencherside
+trencherwise
+trencherwoman
+trenchful
+trenchlet
+trenchlike
+trenchmaster
+trenchmore
+trenchward
+trenchwise
+trenchwork
+trend
+trendle
+Trent
+trental
+Trentepohlia
+Trentepohliaceae
+trentepohliaceous
+Trentine
+Trenton
+trepan
+trepanation
+trepang
+trepanize
+trepanner
+trepanning
+trepanningly
+trephination
+trephine
+trephiner
+trephocyte
+trephone
+trepid
+trepidancy
+trepidant
+trepidate
+trepidation
+trepidatory
+trepidity
+trepidly
+trepidness
+Treponema
+treponematous
+treponemiasis
+treponemiatic
+treponemicidal
+treponemicide
+Trepostomata
+trepostomatous
+Treron
+Treronidae
+Treroninae
+tresaiel
+trespass
+trespassage
+trespasser
+trespassory
+tress
+tressed
+tressful
+tressilate
+tressilation
+tressless
+tresslet
+tresslike
+tresson
+tressour
+tressure
+tressured
+tressy
+trest
+trestle
+trestletree
+trestlewise
+trestlework
+trestling
+tret
+trevally
+trevet
+Trevor
+trews
+trewsman
+Trey
+trey
+tri
+triable
+triableness
+triace
+triacetamide
+triacetate
+triacetonamine
+triachenium
+triacid
+triacontaeterid
+triacontane
+triaconter
+triact
+triactinal
+triactine
+triad
+triadelphous
+Triadenum
+triadic
+triadical
+triadically
+triadism
+triadist
+triaene
+triaenose
+triage
+triagonal
+triakisicosahedral
+triakisicosahedron
+triakisoctahedral
+triakisoctahedrid
+triakisoctahedron
+triakistetrahedral
+triakistetrahedron
+trial
+trialate
+trialism
+trialist
+triality
+trialogue
+triamid
+triamide
+triamine
+triamino
+triammonium
+triamylose
+triander
+Triandria
+triandrian
+triandrous
+triangle
+triangled
+triangler
+triangleways
+trianglewise
+trianglework
+Triangula
+triangular
+triangularity
+triangularly
+triangulate
+triangulately
+triangulation
+triangulator
+Triangulid
+trianguloid
+triangulopyramidal
+triangulotriangular
+Triangulum
+triannual
+triannulate
+Trianon
+Triantaphyllos
+triantelope
+trianthous
+triapsal
+triapsidal
+triarch
+triarchate
+triarchy
+triarctic
+triarcuated
+triareal
+triarii
+Triarthrus
+triarticulate
+Trias
+Triassic
+triaster
+triatic
+Triatoma
+triatomic
+triatomicity
+triaxial
+triaxon
+triaxonian
+triazane
+triazin
+triazine
+triazo
+triazoic
+triazole
+triazolic
+tribade
+tribadism
+tribady
+tribal
+tribalism
+tribalist
+tribally
+tribarred
+tribase
+tribasic
+tribasicity
+tribasilar
+tribble
+tribe
+tribeless
+tribelet
+tribelike
+tribesfolk
+tribeship
+tribesman
+tribesmanship
+tribespeople
+tribeswoman
+triblastic
+triblet
+triboelectric
+triboelectricity
+tribofluorescence
+tribofluorescent
+Tribolium
+triboluminescence
+triboluminescent
+tribometer
+Tribonema
+Tribonemaceae
+tribophosphorescence
+tribophosphorescent
+tribophosphoroscope
+triborough
+tribrac
+tribrach
+tribrachial
+tribrachic
+tribracteate
+tribracteolate
+tribromacetic
+tribromide
+tribromoethanol
+tribromophenol
+tribromphenate
+tribromphenol
+tribual
+tribually
+tribular
+tribulate
+tribulation
+tribuloid
+Tribulus
+tribuna
+tribunal
+tribunate
+tribune
+tribuneship
+tribunitial
+tribunitian
+tribunitiary
+tribunitive
+tributable
+tributarily
+tributariness
+tributary
+tribute
+tributer
+tributist
+tributorian
+tributyrin
+trica
+tricae
+tricalcic
+tricalcium
+tricapsular
+tricar
+tricarballylic
+tricarbimide
+tricarbon
+tricarboxylic
+tricarinate
+tricarinated
+tricarpellary
+tricarpellate
+tricarpous
+tricaudal
+tricaudate
+trice
+tricellular
+tricenarious
+tricenarium
+tricenary
+tricennial
+tricentenarian
+tricentenary
+tricentennial
+tricentral
+tricephal
+tricephalic
+tricephalous
+tricephalus
+triceps
+Triceratops
+triceria
+tricerion
+tricerium
+trichatrophia
+trichauxis
+Trichechidae
+trichechine
+trichechodont
+Trichechus
+trichevron
+trichi
+trichia
+trichiasis
+Trichilia
+Trichina
+trichina
+trichinae
+trichinal
+Trichinella
+trichiniasis
+trichiniferous
+trichinization
+trichinize
+trichinoid
+trichinopoly
+trichinoscope
+trichinoscopy
+trichinosed
+trichinosis
+trichinotic
+trichinous
+trichite
+trichitic
+trichitis
+trichiurid
+Trichiuridae
+trichiuroid
+Trichiurus
+trichloride
+trichlormethane
+trichloro
+trichloroacetic
+trichloroethylene
+trichloromethane
+trichloromethyl
+trichobacteria
+trichobezoar
+trichoblast
+trichobranchia
+trichobranchiate
+trichocarpous
+trichocephaliasis
+Trichocephalus
+trichoclasia
+trichoclasis
+trichocyst
+trichocystic
+trichode
+Trichoderma
+Trichodesmium
+Trichodontidae
+trichoepithelioma
+trichogen
+trichogenous
+trichoglossia
+Trichoglossidae
+Trichoglossinae
+trichoglossine
+Trichogramma
+Trichogrammatidae
+trichogyne
+trichogynial
+trichogynic
+trichoid
+Tricholaena
+trichological
+trichologist
+trichology
+Tricholoma
+trichoma
+Trichomanes
+trichomaphyte
+trichomatose
+trichomatosis
+trichomatous
+trichome
+trichomic
+trichomonad
+Trichomonadidae
+Trichomonas
+trichomoniasis
+trichomycosis
+trichonosus
+trichopathic
+trichopathy
+trichophore
+trichophoric
+trichophyllous
+trichophyte
+trichophytia
+trichophytic
+Trichophyton
+trichophytosis
+Trichoplax
+trichopore
+trichopter
+Trichoptera
+trichoptera
+trichopteran
+trichopteron
+trichopterous
+trichopterygid
+Trichopterygidae
+trichord
+trichorrhea
+trichorrhexic
+trichorrhexis
+Trichosanthes
+trichoschisis
+trichosis
+trichosporange
+trichosporangial
+trichosporangium
+Trichosporum
+trichostasis
+Trichostema
+trichostrongyle
+trichostrongylid
+Trichostrongylus
+trichothallic
+trichotillomania
+trichotomic
+trichotomism
+trichotomist
+trichotomize
+trichotomous
+trichotomously
+trichotomy
+trichroic
+trichroism
+trichromat
+trichromate
+trichromatic
+trichromatism
+trichromatist
+trichrome
+trichromic
+trichronous
+trichuriasis
+Trichuris
+trichy
+Tricia
+tricinium
+tricipital
+tricircular
+trick
+tricker
+trickery
+trickful
+trickily
+trickiness
+tricking
+trickingly
+trickish
+trickishly
+trickishness
+trickle
+trickless
+tricklet
+tricklike
+trickling
+tricklingly
+trickly
+trickment
+trickproof
+tricksical
+tricksily
+tricksiness
+tricksome
+trickster
+trickstering
+trickstress
+tricksy
+tricktrack
+tricky
+triclad
+Tricladida
+triclinate
+triclinia
+triclinial
+tricliniarch
+tricliniary
+triclinic
+triclinium
+triclinohedric
+tricoccose
+tricoccous
+tricolette
+tricolic
+tricolon
+tricolor
+tricolored
+tricolumnar
+tricompound
+triconch
+Triconodon
+triconodont
+Triconodonta
+triconodontid
+triconodontoid
+triconodonty
+triconsonantal
+triconsonantalism
+tricophorous
+tricorn
+tricornered
+tricornute
+tricorporal
+tricorporate
+tricoryphean
+tricosane
+tricosanone
+tricostate
+tricosyl
+tricosylic
+tricot
+tricotine
+tricotyledonous
+tricresol
+tricrotic
+tricrotism
+tricrotous
+tricrural
+tricurvate
+tricuspal
+tricuspid
+tricuspidal
+tricuspidate
+tricuspidated
+tricussate
+tricyanide
+tricycle
+tricyclene
+tricycler
+tricyclic
+tricyclist
+Tricyrtis
+Tridacna
+Tridacnidae
+tridactyl
+tridactylous
+tridaily
+triddler
+tridecane
+tridecene
+tridecilateral
+tridecoic
+tridecyl
+tridecylene
+tridecylic
+trident
+tridental
+tridentate
+tridentated
+tridentiferous
+Tridentine
+Tridentinian
+tridepside
+tridermic
+tridiametral
+tridiapason
+tridigitate
+tridimensional
+tridimensionality
+tridimensioned
+tridiurnal
+tridominium
+tridrachm
+triduan
+triduum
+tridymite
+tridynamous
+tried
+triedly
+trielaidin
+triene
+triennial
+trienniality
+triennially
+triennium
+triens
+triental
+Trientalis
+triequal
+trier
+trierarch
+trierarchal
+trierarchic
+trierarchy
+trierucin
+trieteric
+trieterics
+triethanolamine
+triethyl
+triethylamine
+triethylstibine
+trifa
+trifacial
+trifarious
+trifasciated
+triferous
+trifid
+trifilar
+trifistulary
+triflagellate
+trifle
+trifledom
+trifler
+triflet
+trifling
+triflingly
+triflingness
+trifloral
+triflorate
+triflorous
+trifluoride
+trifocal
+trifoil
+trifold
+trifoliate
+trifoliated
+trifoliolate
+trifoliosis
+Trifolium
+trifolium
+trifoly
+triforial
+triforium
+triform
+triformed
+triformin
+triformity
+triformous
+trifoveolate
+trifuran
+trifurcal
+trifurcate
+trifurcation
+trig
+trigamist
+trigamous
+trigamy
+trigeminal
+trigeminous
+trigeneric
+trigesimal
+trigger
+triggered
+triggerfish
+triggerless
+trigintal
+trigintennial
+Trigla
+triglandular
+triglid
+Triglidae
+triglochid
+Triglochin
+triglochin
+triglot
+trigly
+triglyceride
+triglyceryl
+triglyph
+triglyphal
+triglyphed
+triglyphic
+triglyphical
+trigness
+trigon
+Trigona
+trigonal
+trigonally
+trigone
+Trigonella
+trigonelline
+trigoneutic
+trigoneutism
+Trigonia
+Trigoniaceae
+trigoniacean
+trigoniaceous
+trigonic
+trigonid
+Trigoniidae
+trigonite
+trigonitis
+trigonocephalic
+trigonocephalous
+Trigonocephalus
+trigonocephaly
+trigonocerous
+trigonododecahedron
+trigonodont
+trigonoid
+trigonometer
+trigonometric
+trigonometrical
+trigonometrician
+trigonometry
+trigonon
+trigonotype
+trigonous
+trigonum
+trigram
+trigrammatic
+trigrammatism
+trigrammic
+trigraph
+trigraphic
+triguttulate
+trigyn
+Trigynia
+trigynian
+trigynous
+trihalide
+trihedral
+trihedron
+trihemeral
+trihemimer
+trihemimeral
+trihemimeris
+trihemiobol
+trihemiobolion
+trihemitetartemorion
+trihoral
+trihourly
+trihybrid
+trihydrate
+trihydrated
+trihydric
+trihydride
+trihydrol
+trihydroxy
+trihypostatic
+trijugate
+trijugous
+trijunction
+trikaya
+trike
+triker
+trikeria
+trikerion
+triketo
+triketone
+trikir
+trilabe
+trilabiate
+trilamellar
+trilamellated
+trilaminar
+trilaminate
+trilarcenous
+trilateral
+trilaterality
+trilaterally
+trilateralness
+trilaurin
+trilby
+trilemma
+trilinear
+trilineate
+trilineated
+trilingual
+trilinguar
+trilinolate
+trilinoleate
+trilinolenate
+trilinolenin
+Trilisa
+trilit
+trilite
+triliteral
+triliteralism
+triliterality
+triliterally
+triliteralness
+trilith
+trilithic
+trilithon
+trill
+trillachan
+trillet
+trilli
+Trilliaceae
+trilliaceous
+trillibub
+trilliin
+trilling
+trillion
+trillionaire
+trillionize
+trillionth
+Trillium
+trillium
+trillo
+trilobate
+trilobated
+trilobation
+trilobe
+trilobed
+Trilobita
+trilobite
+trilobitic
+trilocular
+triloculate
+trilogic
+trilogical
+trilogist
+trilogy
+Trilophodon
+trilophodont
+triluminar
+triluminous
+trim
+trimacer
+trimacular
+trimargarate
+trimargarin
+trimastigate
+trimellitic
+trimembral
+trimensual
+trimer
+Trimera
+trimercuric
+Trimeresurus
+trimeric
+trimeride
+trimerite
+trimerization
+trimerous
+trimesic
+trimesinic
+trimesitic
+trimesitinic
+trimester
+trimestral
+trimestrial
+trimesyl
+trimetalism
+trimetallic
+trimeter
+trimethoxy
+trimethyl
+trimethylacetic
+trimethylamine
+trimethylbenzene
+trimethylene
+trimethylmethane
+trimethylstibine
+trimetric
+trimetrical
+trimetrogon
+trimly
+trimmer
+trimming
+trimmingly
+trimness
+trimodal
+trimodality
+trimolecular
+trimonthly
+trimoric
+trimorph
+trimorphic
+trimorphism
+trimorphous
+trimotor
+trimotored
+trimstone
+trimtram
+trimuscular
+trimyristate
+trimyristin
+trin
+Trinacrian
+trinal
+trinality
+trinalize
+trinary
+trinational
+trindle
+trine
+trinely
+trinervate
+trinerve
+trinerved
+trineural
+Tringa
+tringine
+tringle
+tringoid
+Trinidadian
+trinidado
+Trinil
+Trinitarian
+trinitarian
+Trinitarianism
+trinitrate
+trinitration
+trinitride
+trinitrin
+trinitro
+trinitrocarbolic
+trinitrocellulose
+trinitrocresol
+trinitroglycerin
+trinitromethane
+trinitrophenol
+trinitroresorcin
+trinitrotoluene
+trinitroxylene
+trinitroxylol
+Trinity
+trinity
+trinityhood
+trink
+trinkerman
+trinket
+trinketer
+trinketry
+trinkety
+trinkle
+trinklement
+trinklet
+trinkums
+Trinobantes
+trinoctial
+trinodal
+trinode
+trinodine
+trinol
+trinomial
+trinomialism
+trinomialist
+trinomiality
+trinomially
+trinopticon
+Trinorantum
+Trinovant
+Trinovantes
+trintle
+trinucleate
+Trinucleus
+Trio
+trio
+triobol
+triobolon
+trioctile
+triocular
+triode
+triodia
+triodion
+Triodon
+Triodontes
+Triodontidae
+triodontoid
+Triodontoidea
+Triodontoidei
+Triodontophorus
+Trioecia
+trioecious
+trioeciously
+trioecism
+triolcous
+triole
+trioleate
+triolefin
+trioleic
+triolein
+triolet
+triology
+Trionychidae
+trionychoid
+Trionychoideachid
+trionychoidean
+trionym
+trionymal
+Trionyx
+trioperculate
+Triopidae
+Triops
+trior
+triorchis
+triorchism
+triorthogonal
+triose
+Triosteum
+triovulate
+trioxazine
+trioxide
+trioxymethylene
+triozonide
+trip
+tripal
+tripaleolate
+tripalmitate
+tripalmitin
+tripara
+tripart
+triparted
+tripartedly
+tripartible
+tripartient
+tripartite
+tripartitely
+tripartition
+tripaschal
+tripe
+tripedal
+tripel
+tripelike
+tripeman
+tripemonger
+tripennate
+tripenny
+tripeptide
+tripersonal
+tripersonalism
+tripersonalist
+tripersonality
+tripersonally
+tripery
+tripeshop
+tripestone
+tripetaloid
+tripetalous
+tripewife
+tripewoman
+triphammer
+triphane
+triphase
+triphaser
+Triphasia
+triphasic
+triphenyl
+triphenylamine
+triphenylated
+triphenylcarbinol
+triphenylmethane
+triphenylmethyl
+triphenylphosphine
+triphibian
+triphibious
+triphony
+Triphora
+triphthong
+triphyletic
+triphyline
+triphylite
+triphyllous
+Triphysite
+tripinnate
+tripinnated
+tripinnately
+tripinnatifid
+tripinnatisect
+Tripitaka
+triplane
+Triplaris
+triplasian
+triplasic
+triple
+tripleback
+triplefold
+triplegia
+tripleness
+triplet
+tripletail
+tripletree
+triplewise
+triplex
+triplexity
+triplicate
+triplication
+triplicative
+triplicature
+Triplice
+Triplicist
+triplicity
+triplicostate
+tripliform
+triplinerved
+tripling
+triplite
+triploblastic
+triplocaulescent
+triplocaulous
+Triplochitonaceae
+triploid
+triploidic
+triploidite
+triploidy
+triplopia
+triplopy
+triplum
+triplumbic
+triply
+tripmadam
+tripod
+tripodal
+tripodial
+tripodian
+tripodic
+tripodical
+tripody
+tripointed
+tripolar
+tripoli
+Tripoline
+tripoline
+Tripolitan
+tripolite
+tripos
+tripotassium
+trippant
+tripper
+trippet
+tripping
+trippingly
+trippingness
+trippist
+tripple
+trippler
+Tripsacum
+tripsill
+tripsis
+tripsome
+tripsomely
+triptane
+tripterous
+triptote
+triptych
+triptyque
+tripudial
+tripudiant
+tripudiary
+tripudiate
+tripudiation
+tripudist
+tripudium
+tripunctal
+tripunctate
+tripy
+Tripylaea
+tripylaean
+Tripylarian
+tripylarian
+tripyrenous
+triquadrantal
+triquetra
+triquetral
+triquetric
+triquetrous
+triquetrously
+triquetrum
+triquinate
+triquinoyl
+triradial
+triradially
+triradiate
+triradiated
+triradiately
+triradiation
+Triratna
+trirectangular
+triregnum
+trireme
+trirhombohedral
+trirhomboidal
+triricinolein
+trisaccharide
+trisaccharose
+trisacramentarian
+Trisagion
+trisalt
+trisazo
+trisceptral
+trisect
+trisected
+trisection
+trisector
+trisectrix
+triseme
+trisemic
+trisensory
+trisepalous
+triseptate
+triserial
+triserially
+triseriate
+triseriatim
+trisetose
+Trisetum
+trishna
+trisilane
+trisilicane
+trisilicate
+trisilicic
+trisinuate
+trisinuated
+triskele
+triskelion
+trismegist
+trismegistic
+trismic
+trismus
+trisoctahedral
+trisoctahedron
+trisodium
+trisome
+trisomic
+trisomy
+trisonant
+Trisotropis
+trispast
+trispaston
+trispermous
+trispinose
+trisplanchnic
+trisporic
+trisporous
+trisquare
+trist
+tristachyous
+Tristam
+Tristan
+Tristania
+tristate
+tristearate
+tristearin
+tristeness
+tristetrahedron
+tristeza
+tristful
+tristfully
+tristfulness
+tristich
+Tristichaceae
+tristichic
+tristichous
+tristigmatic
+tristigmatose
+tristiloquy
+tristisonous
+Tristram
+tristylous
+trisubstituted
+trisubstitution
+trisul
+trisula
+trisulcate
+trisulcated
+trisulphate
+trisulphide
+trisulphone
+trisulphonic
+trisulphoxide
+trisylabic
+trisyllabical
+trisyllabically
+trisyllabism
+trisyllabity
+trisyllable
+tritactic
+tritagonist
+tritangent
+tritangential
+tritanope
+tritanopia
+tritanopic
+tritaph
+trite
+Triteleia
+tritely
+tritemorion
+tritencephalon
+triteness
+triternate
+triternately
+triterpene
+tritetartemorion
+tritheism
+tritheist
+tritheistic
+tritheistical
+tritheite
+tritheocracy
+trithing
+trithioaldehyde
+trithiocarbonate
+trithiocarbonic
+trithionate
+trithionic
+Trithrinax
+tritical
+triticality
+tritically
+triticalness
+triticeous
+triticeum
+triticin
+triticism
+triticoid
+Triticum
+triticum
+tritish
+tritium
+tritocerebral
+tritocerebrum
+tritocone
+tritoconid
+Tritogeneia
+tritolo
+Tritoma
+tritomite
+Triton
+triton
+tritonal
+tritonality
+tritone
+Tritoness
+Tritonia
+Tritonic
+Tritonidae
+tritonoid
+tritonous
+tritonymph
+tritonymphal
+tritopatores
+tritopine
+tritor
+tritoral
+tritorium
+tritoxide
+tritozooid
+tritriacontane
+trittichan
+tritubercular
+Trituberculata
+trituberculism
+trituberculy
+triturable
+tritural
+triturate
+trituration
+triturator
+triturature
+triturium
+Triturus
+trityl
+Tritylodon
+Triumfetta
+Triumph
+triumph
+triumphal
+triumphance
+triumphancy
+triumphant
+triumphantly
+triumphator
+triumpher
+triumphing
+triumphwise
+triumvir
+triumviral
+triumvirate
+triumviri
+triumvirship
+triunal
+triune
+triungulin
+triunification
+triunion
+triunitarian
+triunity
+triunsaturated
+triurid
+Triuridaceae
+Triuridales
+Triuris
+trivalence
+trivalency
+trivalent
+trivalerin
+trivalve
+trivalvular
+trivant
+trivantly
+trivariant
+triverbal
+triverbial
+trivet
+trivetwise
+trivia
+trivial
+trivialism
+trivialist
+triviality
+trivialize
+trivially
+trivialness
+trivirga
+trivirgate
+trivium
+trivoltine
+trivvet
+triweekly
+Trix
+Trixie
+Trixy
+trizoic
+trizomal
+trizonal
+trizone
+Trizonia
+Troad
+troat
+troca
+trocaical
+trocar
+Trochaic
+trochaic
+trochaicality
+trochal
+trochalopod
+Trochalopoda
+trochalopodous
+trochanter
+trochanteric
+trochanterion
+trochantin
+trochantinian
+trochart
+trochate
+troche
+trocheameter
+trochee
+trocheeize
+trochelminth
+Trochelminthes
+trochi
+trochid
+Trochidae
+trochiferous
+trochiform
+Trochila
+Trochili
+trochili
+trochilic
+trochilics
+trochilidae
+trochilidine
+trochilidist
+trochiline
+trochilopodous
+Trochilus
+trochilus
+troching
+trochiscation
+trochiscus
+trochite
+trochitic
+Trochius
+trochlea
+trochlear
+trochleariform
+trochlearis
+trochleary
+trochleate
+trochleiform
+trochocephalia
+trochocephalic
+trochocephalus
+trochocephaly
+Trochodendraceae
+trochodendraceous
+Trochodendron
+trochoid
+trochoidal
+trochoidally
+trochoides
+trochometer
+trochophore
+Trochosphaera
+Trochosphaerida
+trochosphere
+trochospherical
+Trochozoa
+trochozoic
+trochozoon
+Trochus
+trochus
+trock
+troco
+troctolite
+trod
+trodden
+trode
+troegerite
+Troezenian
+troft
+trog
+trogger
+troggin
+troglodytal
+troglodyte
+Troglodytes
+troglodytic
+troglodytical
+Troglodytidae
+Troglodytinae
+troglodytish
+troglodytism
+trogon
+Trogones
+Trogonidae
+Trogoniformes
+trogonoid
+trogs
+trogue
+Troiades
+Troic
+troika
+troilite
+Trojan
+troke
+troker
+troll
+trolldom
+trolleite
+troller
+trolley
+trolleyer
+trolleyful
+trolleyman
+trollflower
+trollimog
+trolling
+Trollius
+trollman
+trollol
+trollop
+Trollopean
+Trollopeanism
+trollopish
+trollops
+trollopy
+trolly
+tromba
+trombe
+trombiculid
+trombidiasis
+Trombidiidae
+Trombidium
+trombone
+trombonist
+trombony
+trommel
+tromometer
+tromometric
+tromometrical
+tromometry
+tromp
+trompe
+trompil
+trompillo
+tromple
+tron
+trona
+tronador
+tronage
+tronc
+trondhjemite
+trone
+troner
+troolie
+troop
+trooper
+trooperess
+troopfowl
+troopship
+troopwise
+troostite
+troostitic
+troot
+tropacocaine
+tropaeolaceae
+tropaeolaceous
+tropaeolin
+Tropaeolum
+tropaion
+tropal
+troparia
+troparion
+tropary
+tropate
+trope
+tropeic
+tropeine
+troper
+tropesis
+trophaea
+trophaeum
+trophal
+trophallactic
+trophallaxis
+trophectoderm
+trophedema
+trophema
+trophesial
+trophesy
+trophi
+trophic
+trophical
+trophically
+trophicity
+trophied
+Trophis
+trophism
+trophobiont
+trophobiosis
+trophobiotic
+trophoblast
+trophoblastic
+trophochromatin
+trophocyte
+trophoderm
+trophodisc
+trophodynamic
+trophodynamics
+trophogenesis
+trophogenic
+trophogeny
+trophology
+trophonema
+trophoneurosis
+trophoneurotic
+Trophonian
+trophonucleus
+trophopathy
+trophophore
+trophophorous
+trophophyte
+trophoplasm
+trophoplasmatic
+trophoplasmic
+trophoplast
+trophosomal
+trophosome
+trophosperm
+trophosphere
+trophospongia
+trophospongial
+trophospongium
+trophospore
+trophotaxis
+trophotherapy
+trophothylax
+trophotropic
+trophotropism
+trophozoite
+trophozooid
+trophy
+trophyless
+trophywort
+tropic
+tropical
+Tropicalia
+Tropicalian
+tropicality
+tropicalization
+tropicalize
+tropically
+tropicopolitan
+tropidine
+Tropidoleptus
+tropine
+tropism
+tropismatic
+tropist
+tropistic
+tropocaine
+tropologic
+tropological
+tropologically
+tropologize
+tropology
+tropometer
+tropopause
+tropophil
+tropophilous
+tropophyte
+tropophytic
+troposphere
+tropostereoscope
+tropoyl
+troptometer
+tropyl
+trostera
+trot
+trotcozy
+troth
+trothful
+trothless
+trothlike
+trothplight
+trotlet
+trotline
+trotol
+trotter
+trottie
+trottles
+trottoir
+trottoired
+trotty
+trotyl
+troubadour
+troubadourish
+troubadourism
+troubadourist
+trouble
+troubledly
+troubledness
+troublemaker
+troublemaking
+troublement
+troubleproof
+troubler
+troublesome
+troublesomely
+troublesomeness
+troubling
+troublingly
+troublous
+troublously
+troublousness
+troubly
+trough
+troughful
+troughing
+troughlike
+troughster
+troughway
+troughwise
+troughy
+trounce
+trouncer
+troupand
+troupe
+trouper
+troupial
+trouse
+trouser
+trouserdom
+trousered
+trouserettes
+trouserian
+trousering
+trouserless
+trousers
+trousseau
+trousseaux
+trout
+troutbird
+trouter
+troutflower
+troutful
+troutiness
+troutless
+troutlet
+troutlike
+trouty
+trouvere
+trouveur
+trove
+troveless
+trover
+trow
+trowel
+trowelbeak
+troweler
+trowelful
+trowelman
+trowing
+trowlesworthite
+trowman
+trowth
+Troy
+troy
+Troynovant
+Troytown
+truancy
+truandise
+truant
+truantcy
+truantism
+truantlike
+truantly
+truantness
+truantry
+truantship
+trub
+trubu
+truce
+trucebreaker
+trucebreaking
+truceless
+trucemaker
+trucemaking
+trucial
+trucidation
+truck
+truckage
+trucker
+truckful
+trucking
+truckle
+truckler
+trucklike
+truckling
+trucklingly
+truckload
+truckman
+truckmaster
+trucks
+truckster
+truckway
+truculence
+truculency
+truculent
+truculental
+truculently
+truculentness
+truddo
+trudellite
+trudge
+trudgen
+trudger
+Trudy
+true
+trueborn
+truebred
+truehearted
+trueheartedly
+trueheartedness
+truelike
+truelove
+trueness
+truepenny
+truer
+truff
+truffle
+truffled
+trufflelike
+truffler
+trufflesque
+trug
+truish
+truism
+truismatic
+truistic
+truistical
+trull
+Trullan
+truller
+trullization
+trullo
+truly
+trumbash
+trummel
+trump
+trumper
+trumperiness
+trumpery
+trumpet
+trumpetbush
+trumpeter
+trumpeting
+trumpetless
+trumpetlike
+trumpetry
+trumpetweed
+trumpetwood
+trumpety
+trumph
+trumpie
+trumpless
+trumplike
+trun
+truncage
+truncal
+truncate
+truncated
+Truncatella
+Truncatellidae
+truncately
+truncation
+truncator
+truncatorotund
+truncatosinuate
+truncature
+trunch
+trunched
+truncheon
+truncheoned
+truncher
+trunchman
+trundle
+trundlehead
+trundler
+trundleshot
+trundletail
+trundling
+trunk
+trunkback
+trunked
+trunkfish
+trunkful
+trunking
+trunkless
+trunkmaker
+trunknose
+trunkway
+trunkwork
+trunnel
+trunnion
+trunnioned
+trunnionless
+trush
+trusion
+truss
+trussed
+trussell
+trusser
+trussing
+trussmaker
+trussmaking
+trusswork
+trust
+trustability
+trustable
+trustableness
+trustably
+trustee
+trusteeism
+trusteeship
+trusten
+truster
+trustful
+trustfully
+trustfulness
+trustification
+trustify
+trustihood
+trustily
+trustiness
+trusting
+trustingly
+trustingness
+trustle
+trustless
+trustlessly
+trustlessness
+trustman
+trustmonger
+trustwoman
+trustworthily
+trustworthiness
+trustworthy
+trusty
+truth
+truthable
+truthful
+truthfully
+truthfulness
+truthify
+truthiness
+truthless
+truthlessly
+truthlessness
+truthlike
+truthlikeness
+truthsman
+truthteller
+truthtelling
+truthy
+Trutta
+truttaceous
+truvat
+truxillic
+truxilline
+try
+trygon
+Trygonidae
+tryhouse
+Trying
+trying
+tryingly
+tryingness
+tryma
+tryout
+tryp
+trypa
+trypan
+trypaneid
+Trypaneidae
+trypanocidal
+trypanocide
+trypanolysin
+trypanolysis
+trypanolytic
+Trypanosoma
+trypanosoma
+trypanosomacidal
+trypanosomacide
+trypanosomal
+trypanosomatic
+Trypanosomatidae
+trypanosomatosis
+trypanosomatous
+trypanosome
+trypanosomiasis
+trypanosomic
+Tryparsamide
+Trypeta
+trypetid
+Trypetidae
+Tryphena
+Tryphosa
+trypiate
+trypograph
+trypographic
+trypsin
+trypsinize
+trypsinogen
+tryptase
+tryptic
+tryptogen
+tryptone
+tryptonize
+tryptophan
+trysail
+tryst
+tryster
+trysting
+tryt
+tryworks
+tsadik
+tsamba
+tsantsa
+tsar
+tsardom
+tsarevitch
+tsarina
+tsaritza
+tsarship
+tsatlee
+Tsattine
+tscharik
+tscheffkinite
+Tscherkess
+tsere
+tsessebe
+tsetse
+Tshi
+tsia
+Tsiltaden
+Tsimshian
+tsine
+tsingtauite
+tsiology
+Tsoneca
+Tsonecan
+tst
+tsuba
+tsubo
+Tsuga
+Tsuma
+tsumebite
+tsun
+tsunami
+tsungtu
+Tsutsutsi
+tu
+tua
+Tualati
+Tuamotu
+Tuamotuan
+Tuan
+tuan
+Tuareg
+tuarn
+tuart
+tuatara
+tuatera
+tuath
+tub
+Tuba
+tuba
+tubae
+tubage
+tubal
+tubaphone
+tubar
+tubate
+tubatoxin
+Tubatulabal
+tubba
+tubbable
+tubbal
+tubbeck
+tubber
+tubbie
+tubbiness
+tubbing
+tubbish
+tubboe
+tubby
+tube
+tubeflower
+tubeform
+tubeful
+tubehead
+tubehearted
+tubeless
+tubelet
+tubelike
+tubemaker
+tubemaking
+tubeman
+tuber
+Tuberaceae
+tuberaceous
+Tuberales
+tuberation
+tubercle
+tubercled
+tuberclelike
+tubercula
+tubercular
+Tubercularia
+Tuberculariaceae
+tuberculariaceous
+tubercularization
+tubercularize
+tubercularly
+tubercularness
+tuberculate
+tuberculated
+tuberculatedly
+tuberculately
+tuberculation
+tuberculatogibbous
+tuberculatonodose
+tuberculatoradiate
+tuberculatospinous
+tubercule
+tuberculed
+tuberculid
+tuberculide
+tuberculiferous
+tuberculiform
+tuberculin
+tuberculinic
+tuberculinization
+tuberculinize
+tuberculization
+tuberculize
+tuberculocele
+tuberculocidin
+tuberculoderma
+tuberculoid
+tuberculoma
+tuberculomania
+tuberculomata
+tuberculophobia
+tuberculoprotein
+tuberculose
+tuberculosectorial
+tuberculosed
+tuberculosis
+tuberculotherapist
+tuberculotherapy
+tuberculotoxin
+tuberculotrophic
+tuberculous
+tuberculously
+tuberculousness
+tuberculum
+tuberiferous
+tuberiform
+tuberin
+tuberization
+tuberize
+tuberless
+tuberoid
+tuberose
+tuberosity
+tuberous
+tuberously
+tuberousness
+tubesmith
+tubework
+tubeworks
+tubfish
+tubful
+tubicen
+tubicinate
+tubicination
+Tubicola
+Tubicolae
+tubicolar
+tubicolous
+tubicorn
+tubicornous
+tubifacient
+tubifer
+tubiferous
+Tubifex
+Tubificidae
+Tubiflorales
+tubiflorous
+tubiform
+tubig
+tubik
+tubilingual
+Tubinares
+tubinarial
+tubinarine
+tubing
+Tubingen
+tubiparous
+Tubipora
+tubipore
+tubiporid
+Tubiporidae
+tubiporoid
+tubiporous
+tublet
+tublike
+tubmaker
+tubmaking
+tubman
+tuboabdominal
+tubocurarine
+tubolabellate
+tuboligamentous
+tuboovarial
+tuboovarian
+tuboperitoneal
+tuborrhea
+tubotympanal
+tubovaginal
+tubular
+Tubularia
+tubularia
+Tubulariae
+tubularian
+Tubularida
+tubularidan
+Tubulariidae
+tubularity
+tubularly
+tubulate
+tubulated
+tubulation
+tubulator
+tubulature
+tubule
+tubulet
+tubuli
+tubulibranch
+tubulibranchian
+Tubulibranchiata
+tubulibranchiate
+Tubulidentata
+tubulidentate
+Tubulifera
+tubuliferan
+tubuliferous
+tubulifloral
+tubuliflorous
+tubuliform
+Tubulipora
+tubulipore
+tubuliporid
+Tubuliporidae
+tubuliporoid
+tubulization
+tubulodermoid
+tubuloracemose
+tubulosaccular
+tubulose
+tubulostriato
+tubulous
+tubulously
+tubulousness
+tubulure
+tubulus
+tubwoman
+Tucana
+Tucanae
+tucandera
+Tucano
+tuchit
+tuchun
+tuchunate
+tuchunism
+tuchunize
+tuck
+Tuckahoe
+tuckahoe
+tucker
+tuckermanity
+tucket
+tucking
+tuckner
+tuckshop
+tucktoo
+tucky
+tucum
+tucuma
+tucuman
+Tucuna
+tudel
+Tudesque
+Tudor
+Tudoresque
+tue
+tueiron
+Tuesday
+tufa
+tufaceous
+tufalike
+tufan
+tuff
+tuffaceous
+tuffet
+tuffing
+tuft
+tuftaffeta
+tufted
+tufter
+tufthunter
+tufthunting
+tuftily
+tufting
+tuftlet
+tufty
+tug
+tugboat
+tugboatman
+tugger
+tuggery
+tugging
+tuggingly
+tughra
+tugless
+tuglike
+tugman
+tugrik
+tugui
+tugurium
+tui
+tuik
+tuille
+tuillette
+tuilyie
+tuism
+tuition
+tuitional
+tuitionary
+tuitive
+tuke
+tukra
+Tukuler
+Tukulor
+tula
+Tulalip
+tulare
+tularemia
+tulasi
+Tulbaghia
+tulchan
+tulchin
+tule
+tuliac
+tulip
+Tulipa
+tulipflower
+tulipiferous
+tulipist
+tuliplike
+tulipomania
+tulipomaniac
+tulipwood
+tulipy
+tulisan
+Tulkepaia
+tulle
+Tullian
+tullibee
+Tulostoma
+tulsi
+Tulu
+tulwar
+tum
+tumasha
+tumatakuru
+tumatukuru
+tumbak
+tumbester
+tumble
+tumblebug
+tumbled
+tumbledung
+tumbler
+tumblerful
+tumblerlike
+tumblerwise
+tumbleweed
+tumblification
+tumbling
+tumblingly
+tumbly
+Tumboa
+tumbrel
+tume
+tumefacient
+tumefaction
+tumefy
+tumescence
+tumescent
+tumid
+tumidity
+tumidly
+tumidness
+Tumion
+tummals
+tummel
+tummer
+tummock
+tummy
+tumor
+tumored
+tumorlike
+tumorous
+tump
+tumpline
+tumtum
+tumular
+tumulary
+tumulate
+tumulation
+tumuli
+tumulose
+tumulosity
+tumulous
+tumult
+tumultuarily
+tumultuariness
+tumultuary
+tumultuate
+tumultuation
+tumultuous
+tumultuously
+tumultuousness
+tumulus
+Tumupasa
+tun
+Tuna
+tuna
+tunable
+tunableness
+tunably
+tunbellied
+tunbelly
+tunca
+tund
+tundagslatta
+tunder
+tundish
+tundra
+tundun
+tune
+Tunebo
+tuned
+tuneful
+tunefully
+tunefulness
+tuneless
+tunelessly
+tunelessness
+tunemaker
+tunemaking
+tuner
+tunesome
+tunester
+tunful
+tung
+Tunga
+Tungan
+tungate
+tungo
+tungstate
+tungsten
+tungstenic
+tungsteniferous
+tungstenite
+tungstic
+tungstite
+tungstosilicate
+tungstosilicic
+Tungus
+Tungusian
+Tungusic
+tunhoof
+tunic
+Tunica
+Tunican
+tunicary
+Tunicata
+tunicate
+tunicated
+tunicin
+tunicked
+tunicle
+tunicless
+tuniness
+tuning
+tunish
+Tunisian
+tunist
+tunk
+Tunker
+tunket
+tunlike
+tunmoot
+tunna
+tunnel
+tunneled
+tunneler
+tunneling
+tunnelist
+tunnelite
+tunnellike
+tunnelly
+tunnelmaker
+tunnelmaking
+tunnelman
+tunnelway
+tunner
+tunnery
+Tunnit
+tunnland
+tunnor
+tunny
+tuno
+tunu
+tuny
+tup
+Tupaia
+Tupaiidae
+tupakihi
+tupanship
+tupara
+tupek
+tupelo
+Tupi
+Tupian
+tupik
+Tupinamba
+Tupinaqui
+tupman
+tuppence
+tuppenny
+Tupperian
+Tupperish
+Tupperism
+Tupperize
+tupuna
+tuque
+tur
+turacin
+Turacus
+Turanian
+Turanianism
+Turanism
+turanose
+turb
+turban
+turbaned
+turbanesque
+turbanette
+turbanless
+turbanlike
+turbantop
+turbanwise
+turbary
+turbeh
+Turbellaria
+turbellarian
+turbellariform
+turbescency
+turbid
+turbidimeter
+turbidimetric
+turbidimetry
+turbidity
+turbidly
+turbidness
+turbinaceous
+turbinage
+turbinal
+turbinate
+turbinated
+turbination
+turbinatoconcave
+turbinatocylindrical
+turbinatoglobose
+turbinatostipitate
+turbine
+turbinectomy
+turbined
+turbinelike
+Turbinella
+Turbinellidae
+turbinelloid
+turbiner
+turbines
+Turbinidae
+turbiniform
+turbinoid
+turbinotome
+turbinotomy
+turbit
+turbith
+turbitteen
+Turbo
+turbo
+turboalternator
+turboblower
+turbocompressor
+turbodynamo
+turboexciter
+turbofan
+turbogenerator
+turbomachine
+turbomotor
+turbopump
+turbosupercharge
+turbosupercharger
+turbot
+turbotlike
+turboventilator
+turbulence
+turbulency
+turbulent
+turbulently
+turbulentness
+Turcian
+Turcic
+Turcification
+Turcism
+Turcize
+Turco
+turco
+Turcoman
+Turcophilism
+turcopole
+turcopolier
+turd
+Turdetan
+Turdidae
+turdiform
+Turdinae
+turdine
+turdoid
+Turdus
+tureen
+tureenful
+turf
+turfage
+turfdom
+turfed
+turfen
+turfiness
+turfing
+turfite
+turfless
+turflike
+turfman
+turfwise
+turfy
+turgency
+turgent
+turgently
+turgesce
+turgescence
+turgescency
+turgescent
+turgescible
+turgid
+turgidity
+turgidly
+turgidness
+turgite
+turgoid
+turgor
+turgy
+Turi
+turicata
+turio
+turion
+turioniferous
+turjaite
+turjite
+Turk
+turk
+Turkana
+Turkdom
+Turkeer
+turken
+Turkery
+Turkess
+Turkey
+turkey
+turkeyback
+turkeyberry
+turkeybush
+Turkeydom
+turkeyfoot
+Turkeyism
+turkeylike
+Turki
+Turkic
+Turkicize
+Turkification
+Turkify
+turkis
+Turkish
+Turkishly
+Turkishness
+Turkism
+Turkize
+turkle
+Turklike
+Turkman
+Turkmen
+Turkmenian
+Turkologist
+Turkology
+Turkoman
+Turkomania
+Turkomanic
+Turkomanize
+Turkophil
+Turkophile
+Turkophilia
+Turkophilism
+Turkophobe
+Turkophobist
+turlough
+Turlupin
+turm
+turma
+turment
+turmeric
+turmit
+turmoil
+turmoiler
+turn
+turnable
+turnabout
+turnagain
+turnaround
+turnaway
+turnback
+turnbout
+turnbuckle
+turncap
+turncoat
+turncoatism
+turncock
+turndown
+turndun
+turned
+turnel
+turner
+Turnera
+Turneraceae
+turneraceous
+Turneresque
+Turnerian
+Turnerism
+turnerite
+turnery
+turney
+turngate
+turnhall
+Turnhalle
+Turnices
+Turnicidae
+turnicine
+Turnicomorphae
+turnicomorphic
+turning
+turningness
+turnip
+turniplike
+turnipweed
+turnipwise
+turnipwood
+turnipy
+Turnix
+turnix
+turnkey
+turnoff
+turnout
+turnover
+turnpike
+turnpiker
+turnpin
+turnplate
+turnplow
+turnrow
+turns
+turnscrew
+turnsheet
+turnskin
+turnsole
+turnspit
+turnstile
+turnstone
+turntable
+turntail
+turnup
+turnwrest
+turnwrist
+Turonian
+turp
+turpantineweed
+turpentine
+turpentineweed
+turpentinic
+turpeth
+turpethin
+turpid
+turpidly
+turpitude
+turps
+turquoise
+turquoiseberry
+turquoiselike
+turr
+turret
+turreted
+turrethead
+turretlike
+turrical
+turricle
+turricula
+turriculae
+turricular
+turriculate
+turriferous
+turriform
+turrigerous
+Turrilepas
+turrilite
+Turrilites
+turriliticone
+Turrilitidae
+Turritella
+turritella
+turritellid
+Turritellidae
+turritelloid
+turse
+Tursenoi
+Tursha
+tursio
+Tursiops
+Turtan
+turtle
+turtleback
+turtlebloom
+turtledom
+turtledove
+turtlehead
+turtleize
+turtlelike
+turtler
+turtlet
+turtling
+turtosa
+tururi
+turus
+Turveydrop
+Turveydropdom
+Turveydropian
+turwar
+Tusayan
+Tuscan
+Tuscanism
+Tuscanize
+Tuscanlike
+Tuscany
+Tuscarora
+tusche
+Tusculan
+Tush
+tush
+tushed
+Tushepaw
+tusher
+tushery
+tusk
+tuskar
+tusked
+Tuskegee
+tusker
+tuskish
+tuskless
+tusklike
+tuskwise
+tusky
+tussah
+tussal
+tusser
+tussicular
+Tussilago
+tussis
+tussive
+tussle
+tussock
+tussocked
+tussocker
+tussocky
+tussore
+tussur
+tut
+tutania
+tutball
+tute
+tutee
+tutela
+tutelage
+tutelar
+tutelary
+Tutelo
+tutenag
+tuth
+tutin
+tutiorism
+tutiorist
+tutly
+tutman
+tutor
+tutorage
+tutorer
+tutoress
+tutorhood
+tutorial
+tutorially
+tutoriate
+tutorism
+tutorization
+tutorize
+tutorless
+tutorly
+tutorship
+tutory
+tutoyer
+tutress
+tutrice
+tutrix
+tuts
+tutsan
+tutster
+tutti
+tuttiman
+tutty
+tutu
+tutulus
+Tututni
+tutwork
+tutworker
+tutworkman
+tuwi
+tux
+tuxedo
+tuyere
+Tuyuneiri
+tuza
+Tuzla
+tuzzle
+twa
+Twaddell
+twaddle
+twaddledom
+twaddleize
+twaddlement
+twaddlemonger
+twaddler
+twaddlesome
+twaddling
+twaddlingly
+twaddly
+twaddy
+twae
+twaesome
+twafauld
+twagger
+twain
+twaite
+twal
+twale
+twalpenny
+twalpennyworth
+twalt
+Twana
+twang
+twanger
+twanginess
+twangle
+twangler
+twangy
+twank
+twanker
+twanking
+twankingly
+twankle
+twanky
+twant
+twarly
+twas
+twasome
+twat
+twatchel
+twatterlight
+twattle
+twattler
+twattling
+tway
+twayblade
+twazzy
+tweag
+tweak
+tweaker
+tweaky
+twee
+tweed
+tweeded
+tweedle
+tweedledee
+tweedledum
+tweedy
+tweeg
+tweel
+tween
+tweenlight
+tweeny
+tweesh
+tweesht
+tweest
+tweet
+tweeter
+tweeze
+tweezer
+tweezers
+tweil
+twelfhynde
+twelfhyndeman
+twelfth
+twelfthly
+Twelfthtide
+twelve
+twelvefold
+twelvehynde
+twelvehyndeman
+twelvemo
+twelvemonth
+twelvepence
+twelvepenny
+twelvescore
+twentieth
+twentiethly
+twenty
+twentyfold
+twentymo
+twere
+twerp
+Twi
+twibil
+twibilled
+twice
+twicer
+twicet
+twichild
+twick
+twiddle
+twiddler
+twiddling
+twiddly
+twifoil
+twifold
+twifoldly
+twig
+twigful
+twigged
+twiggen
+twigger
+twiggy
+twigless
+twiglet
+twiglike
+twigsome
+twigwithy
+twilight
+twilightless
+twilightlike
+twilighty
+twilit
+twill
+twilled
+twiller
+twilling
+twilly
+twilt
+twin
+twinable
+twinberry
+twinborn
+twindle
+twine
+twineable
+twinebush
+twineless
+twinelike
+twinemaker
+twinemaking
+twiner
+twinflower
+twinfold
+twinge
+twingle
+twinhood
+twiningly
+twinism
+twink
+twinkle
+twinkledum
+twinkleproof
+twinkler
+twinkles
+twinkless
+twinkling
+twinklingly
+twinkly
+twinleaf
+twinlike
+twinling
+twinly
+twinned
+twinner
+twinness
+twinning
+twinship
+twinsomeness
+twinter
+twiny
+twire
+twirk
+twirl
+twirler
+twirligig
+twirly
+twiscar
+twisel
+twist
+twistable
+twisted
+twistedly
+twistened
+twister
+twisterer
+twistical
+twistification
+twistily
+twistiness
+twisting
+twistingly
+twistiways
+twistiwise
+twistle
+twistless
+twisty
+twit
+twitch
+twitchel
+twitcheling
+twitcher
+twitchet
+twitchety
+twitchfire
+twitchily
+twitchiness
+twitchingly
+twitchy
+twite
+twitlark
+twitten
+twitter
+twitteration
+twitterboned
+twitterer
+twittering
+twitteringly
+twitterly
+twittery
+twittingly
+twitty
+twixt
+twixtbrain
+twizzened
+twizzle
+two
+twodecker
+twofold
+twofoldly
+twofoldness
+twoling
+twoness
+twopence
+twopenny
+twosome
+twyblade
+twyhynde
+Tybalt
+Tyburn
+Tyburnian
+Tyche
+tychism
+tychite
+Tychonian
+Tychonic
+tychoparthenogenesis
+tychopotamic
+tycoon
+tycoonate
+tyddyn
+tydie
+tye
+tyee
+tyg
+Tyigh
+tying
+tyke
+tyken
+tykhana
+tyking
+tylarus
+tyleberry
+Tylenchus
+Tyler
+Tylerism
+Tylerite
+Tylerize
+tylion
+tyloma
+tylopod
+Tylopoda
+tylopodous
+Tylosaurus
+tylose
+tylosis
+tylosteresis
+Tylostoma
+Tylostomaceae
+tylostylar
+tylostyle
+tylostylote
+tylostylus
+Tylosurus
+tylotate
+tylote
+tylotic
+tylotoxea
+tylotoxeate
+tylotus
+tylus
+tymbalon
+tymp
+tympan
+tympana
+tympanal
+tympanectomy
+tympani
+tympanic
+tympanichord
+tympanichordal
+tympanicity
+tympaniform
+tympaning
+tympanism
+tympanist
+tympanites
+tympanitic
+tympanitis
+tympanocervical
+tympanohyal
+tympanomalleal
+tympanomandibular
+tympanomastoid
+tympanomaxillary
+tympanon
+tympanoperiotic
+tympanosis
+tympanosquamosal
+tympanostapedial
+tympanotemporal
+tympanotomy
+Tympanuchus
+tympanum
+tympany
+tynd
+Tyndallization
+Tyndallize
+tyndallmeter
+Tynwald
+typal
+typarchical
+type
+typecast
+Typees
+typeholder
+typer
+typescript
+typeset
+typesetter
+typesetting
+typewrite
+typewriter
+typewriting
+Typha
+Typhaceae
+typhaceous
+typhemia
+typhia
+typhic
+typhinia
+typhization
+typhlatonia
+typhlatony
+typhlectasis
+typhlectomy
+typhlenteritis
+typhlitic
+typhlitis
+typhloalbuminuria
+typhlocele
+typhloempyema
+typhloenteritis
+typhlohepatitis
+typhlolexia
+typhlolithiasis
+typhlology
+typhlomegaly
+Typhlomolge
+typhlon
+typhlopexia
+typhlopexy
+typhlophile
+typhlopid
+Typhlopidae
+Typhlops
+typhloptosis
+typhlosis
+typhlosolar
+typhlosole
+typhlostenosis
+typhlostomy
+typhlotomy
+typhobacillosis
+Typhoean
+typhoemia
+typhogenic
+typhoid
+typhoidal
+typhoidin
+typhoidlike
+typholysin
+typhomalaria
+typhomalarial
+typhomania
+typhonia
+Typhonian
+Typhonic
+typhonic
+typhoon
+typhoonish
+typhopneumonia
+typhose
+typhosepsis
+typhosis
+typhotoxine
+typhous
+Typhula
+typhus
+typic
+typica
+typical
+typicality
+typically
+typicalness
+typicon
+typicum
+typification
+typifier
+typify
+typist
+typo
+typobar
+typocosmy
+typographer
+typographia
+typographic
+typographical
+typographically
+typographist
+typography
+typolithographic
+typolithography
+typologic
+typological
+typologically
+typologist
+typology
+typomania
+typometry
+typonym
+typonymal
+typonymic
+typonymous
+typophile
+typorama
+typoscript
+typotelegraph
+typotelegraphy
+typothere
+Typotheria
+Typotheriidae
+typothetae
+typp
+typtological
+typtologist
+typtology
+typy
+tyramine
+tyranness
+Tyranni
+tyrannial
+tyrannic
+tyrannical
+tyrannically
+tyrannicalness
+tyrannicidal
+tyrannicide
+tyrannicly
+Tyrannidae
+Tyrannides
+Tyranninae
+tyrannine
+tyrannism
+tyrannize
+tyrannizer
+tyrannizing
+tyrannizingly
+tyrannoid
+tyrannophobia
+tyrannosaur
+Tyrannosaurus
+tyrannous
+tyrannously
+tyrannousness
+Tyrannus
+tyranny
+tyrant
+tyrantcraft
+tyrantlike
+tyrantship
+tyre
+tyremesis
+Tyrian
+tyriasis
+tyro
+tyrocidin
+tyrocidine
+tyroglyphid
+Tyroglyphidae
+Tyroglyphus
+Tyrolean
+Tyrolese
+Tyrolienne
+tyrolite
+tyrology
+tyroma
+tyromancy
+tyromatous
+tyrone
+tyronic
+tyronism
+tyrosinase
+tyrosine
+tyrosinuria
+tyrosyl
+tyrotoxicon
+tyrotoxine
+Tyrr
+Tyrrhene
+Tyrrheni
+Tyrrhenian
+Tyrsenoi
+Tyrtaean
+tysonite
+tyste
+tyt
+Tyto
+Tytonidae
+Tzaam
+Tzapotec
+tzaritza
+Tzendal
+Tzental
+tzolkin
+tzontle
+Tzotzil
+Tzutuhil
+U
+u
+uang
+Uaraycu
+Uarekena
+Uaupe
+uayeb
+Ubbenite
+Ubbonite
+uberant
+uberous
+uberously
+uberousness
+uberty
+ubi
+ubication
+ubiety
+Ubii
+Ubiquarian
+ubiquarian
+ubiquious
+Ubiquist
+ubiquit
+Ubiquitarian
+ubiquitarian
+Ubiquitarianism
+ubiquitariness
+ubiquitary
+Ubiquitism
+Ubiquitist
+ubiquitous
+ubiquitously
+ubiquitousness
+ubiquity
+ubussu
+Uca
+Ucal
+Ucayale
+Uchean
+Uchee
+uckia
+Ud
+udal
+udaler
+udaller
+udalman
+udasi
+udder
+uddered
+udderful
+udderless
+udderlike
+udell
+Udi
+Udic
+Udish
+udo
+Udolphoish
+udometer
+udometric
+udometry
+udomograph
+Uds
+Ueueteotl
+ug
+Ugandan
+Ugarono
+ugh
+uglification
+uglifier
+uglify
+uglily
+ugliness
+uglisome
+ugly
+Ugrian
+Ugric
+Ugroid
+ugsome
+ugsomely
+ugsomeness
+uhlan
+uhllo
+uhtensang
+uhtsong
+Uigur
+Uigurian
+Uiguric
+uily
+uinal
+Uinta
+uintaite
+uintathere
+Uintatheriidae
+Uintatherium
+uintjie
+Uirina
+Uitotan
+uitspan
+uji
+ukase
+uke
+ukiyoye
+Ukrainer
+Ukrainian
+ukulele
+ula
+ulatrophia
+ulcer
+ulcerable
+ulcerate
+ulceration
+ulcerative
+ulcered
+ulceromembranous
+ulcerous
+ulcerously
+ulcerousness
+ulcery
+ulcuscle
+ulcuscule
+ule
+ulema
+ulemorrhagia
+ulerythema
+uletic
+Ulex
+ulex
+ulexine
+ulexite
+Ulidia
+Ulidian
+uliginose
+uliginous
+ulitis
+ull
+ulla
+ullage
+ullaged
+ullagone
+uller
+ulling
+ullmannite
+ulluco
+Ulmaceae
+ulmaceous
+Ulmaria
+ulmic
+ulmin
+ulminic
+ulmo
+ulmous
+Ulmus
+ulna
+ulnad
+ulnae
+ulnar
+ulnare
+ulnaria
+ulnocarpal
+ulnocondylar
+ulnometacarpal
+ulnoradial
+uloborid
+Uloboridae
+Uloborus
+ulocarcinoma
+uloid
+Ulonata
+uloncus
+Ulophocinae
+ulorrhagia
+ulorrhagy
+ulorrhea
+Ulothrix
+Ulotrichaceae
+ulotrichaceous
+Ulotrichales
+ulotrichan
+Ulotriches
+Ulotrichi
+ulotrichous
+ulotrichy
+ulrichite
+ulster
+ulstered
+ulsterette
+Ulsterian
+ulstering
+Ulsterite
+Ulsterman
+ulterior
+ulteriorly
+ultima
+ultimacy
+ultimata
+ultimate
+ultimately
+ultimateness
+ultimation
+ultimatum
+ultimity
+ultimo
+ultimobranchial
+ultimogenitary
+ultimogeniture
+ultimum
+Ultonian
+ultra
+ultrabasic
+ultrabasite
+ultrabelieving
+ultrabenevolent
+ultrabrachycephalic
+ultrabrachycephaly
+ultrabrilliant
+ultracentenarian
+ultracentenarianism
+ultracentralizer
+ultracentrifuge
+ultraceremonious
+ultrachurchism
+ultracivil
+ultracomplex
+ultraconcomitant
+ultracondenser
+ultraconfident
+ultraconscientious
+ultraconservatism
+ultraconservative
+ultracordial
+ultracosmopolitan
+ultracredulous
+ultracrepidarian
+ultracrepidarianism
+ultracrepidate
+ultracritical
+ultradandyism
+ultradeclamatory
+ultrademocratic
+ultradespotic
+ultradignified
+ultradiscipline
+ultradolichocephalic
+ultradolichocephaly
+ultradolichocranial
+ultraeducationist
+ultraeligible
+ultraelliptic
+ultraemphasis
+ultraenergetic
+ultraenforcement
+ultraenthusiasm
+ultraenthusiastic
+ultraepiscopal
+ultraevangelical
+ultraexcessive
+ultraexclusive
+ultraexpeditious
+ultrafantastic
+ultrafashionable
+ultrafastidious
+ultrafederalist
+ultrafeudal
+ultrafidian
+ultrafidianism
+ultrafilter
+ultrafilterability
+ultrafilterable
+ultrafiltrate
+ultrafiltration
+ultraformal
+ultrafrivolous
+ultragallant
+ultragaseous
+ultragenteel
+ultragood
+ultragrave
+ultraheroic
+ultrahonorable
+ultrahuman
+ultraimperialism
+ultraimperialist
+ultraimpersonal
+ultrainclusive
+ultraindifferent
+ultraindulgent
+ultraingenious
+ultrainsistent
+ultraintimate
+ultrainvolved
+ultraism
+ultraist
+ultraistic
+ultralaborious
+ultralegality
+ultralenient
+ultraliberal
+ultraliberalism
+ultralogical
+ultraloyal
+ultraluxurious
+ultramarine
+ultramaternal
+ultramaximal
+ultramelancholy
+ultramicrochemical
+ultramicrochemist
+ultramicrochemistry
+ultramicrometer
+ultramicron
+ultramicroscope
+ultramicroscopic
+ultramicroscopical
+ultramicroscopy
+ultraminute
+ultramoderate
+ultramodern
+ultramodernism
+ultramodernist
+ultramodernistic
+ultramodest
+ultramontane
+ultramontanism
+ultramontanist
+ultramorose
+ultramulish
+ultramundane
+ultranational
+ultranationalism
+ultranationalist
+ultranatural
+ultranegligent
+ultranice
+ultranonsensical
+ultraobscure
+ultraobstinate
+ultraofficious
+ultraoptimistic
+ultraornate
+ultraorthodox
+ultraorthodoxy
+ultraoutrageous
+ultrapapist
+ultraparallel
+ultraperfect
+ultrapersuasive
+ultraphotomicrograph
+ultrapious
+ultraplanetary
+ultraplausible
+ultrapopish
+ultraproud
+ultraprudent
+ultraradical
+ultraradicalism
+ultrarapid
+ultrareactionary
+ultrared
+ultrarefined
+ultrarefinement
+ultrareligious
+ultraremuneration
+ultrarepublican
+ultrarevolutionary
+ultrarevolutionist
+ultraritualism
+ultraromantic
+ultraroyalism
+ultraroyalist
+ultrasanguine
+ultrascholastic
+ultraselect
+ultraservile
+ultrasevere
+ultrashrewd
+ultrasimian
+ultrasolemn
+ultrasonic
+ultrasonics
+ultraspartan
+ultraspecialization
+ultraspiritualism
+ultrasplendid
+ultrastandardization
+ultrastellar
+ultrasterile
+ultrastrenuous
+ultrastrict
+ultrasubtle
+ultrasystematic
+ultratechnical
+ultratense
+ultraterrene
+ultraterrestrial
+ultratotal
+ultratrivial
+ultratropical
+ultraugly
+ultrauncommon
+ultraurgent
+ultravicious
+ultraviolent
+ultraviolet
+ultravirtuous
+ultravirus
+ultravisible
+ultrawealthy
+ultrawise
+ultrayoung
+ultrazealous
+ultrazodiacal
+ultroneous
+ultroneously
+ultroneousness
+ulu
+Ulua
+ulua
+uluhi
+ululant
+ululate
+ululation
+ululative
+ululatory
+ululu
+Ulva
+Ulvaceae
+ulvaceous
+Ulvales
+Ulvan
+Ulyssean
+Ulysses
+um
+umangite
+Umatilla
+Umaua
+umbeclad
+umbel
+umbeled
+umbella
+Umbellales
+umbellar
+umbellate
+umbellated
+umbellately
+umbellet
+umbellic
+umbellifer
+Umbelliferae
+umbelliferone
+umbelliferous
+umbelliflorous
+umbelliform
+umbelloid
+Umbellula
+Umbellularia
+umbellulate
+umbellule
+Umbellulidae
+umbelluliferous
+umbelwort
+umber
+umbethink
+umbilectomy
+umbilic
+umbilical
+umbilically
+umbilicar
+Umbilicaria
+umbilicate
+umbilicated
+umbilication
+umbilici
+umbiliciform
+umbilicus
+umbiliform
+umbilroot
+umble
+umbo
+umbolateral
+umbonal
+umbonate
+umbonated
+umbonation
+umbone
+umbones
+umbonial
+umbonic
+umbonulate
+umbonule
+Umbra
+umbra
+umbracious
+umbraciousness
+umbraculate
+umbraculiferous
+umbraculiform
+umbraculum
+umbrae
+umbrage
+umbrageous
+umbrageously
+umbrageousness
+umbral
+umbrally
+umbratile
+umbrel
+umbrella
+umbrellaed
+umbrellaless
+umbrellalike
+umbrellawise
+umbrellawort
+umbrette
+Umbrian
+Umbriel
+umbriferous
+umbriferously
+umbriferousness
+umbril
+umbrine
+umbrose
+umbrosity
+umbrous
+Umbundu
+ume
+umiak
+umiri
+umlaut
+ump
+umph
+umpirage
+umpire
+umpirer
+umpireship
+umpiress
+umpirism
+Umpqua
+umpteen
+umpteenth
+umptekite
+umptieth
+umpty
+umquhile
+umu
+un
+Una
+unabandoned
+unabased
+unabasedly
+unabashable
+unabashed
+unabashedly
+unabatable
+unabated
+unabatedly
+unabating
+unabatingly
+unabbreviated
+unabetted
+unabettedness
+unabhorred
+unabiding
+unabidingly
+unabidingness
+unability
+unabject
+unabjured
+unable
+unableness
+unably
+unabolishable
+unabolished
+unabraded
+unabrased
+unabridgable
+unabridged
+unabrogated
+unabrupt
+unabsent
+unabsolute
+unabsolvable
+unabsolved
+unabsolvedness
+unabsorb
+unabsorbable
+unabsorbed
+unabsorbent
+unabstract
+unabsurd
+unabundance
+unabundant
+unabundantly
+unabused
+unacademic
+unacademical
+unaccelerated
+unaccent
+unaccented
+unaccentuated
+unaccept
+unacceptability
+unacceptable
+unacceptableness
+unacceptably
+unacceptance
+unacceptant
+unaccepted
+unaccessibility
+unaccessible
+unaccessibleness
+unaccessibly
+unaccessional
+unaccessory
+unaccidental
+unaccidentally
+unaccidented
+unacclimated
+unacclimation
+unacclimatization
+unacclimatized
+unaccommodable
+unaccommodated
+unaccommodatedness
+unaccommodating
+unaccommodatingly
+unaccommodatingness
+unaccompanable
+unaccompanied
+unaccompanying
+unaccomplishable
+unaccomplished
+unaccomplishedness
+unaccord
+unaccordable
+unaccordance
+unaccordant
+unaccorded
+unaccording
+unaccordingly
+unaccostable
+unaccosted
+unaccountability
+unaccountable
+unaccountableness
+unaccountably
+unaccounted
+unaccoutered
+unaccoutred
+unaccreditated
+unaccredited
+unaccrued
+unaccumulable
+unaccumulate
+unaccumulated
+unaccumulation
+unaccuracy
+unaccurate
+unaccurately
+unaccurateness
+unaccursed
+unaccusable
+unaccusably
+unaccuse
+unaccusing
+unaccustom
+unaccustomed
+unaccustomedly
+unaccustomedness
+unachievable
+unachieved
+unaching
+unacidulated
+unacknowledged
+unacknowledgedness
+unacknowledging
+unacknowledgment
+unacoustic
+unacquaint
+unacquaintable
+unacquaintance
+unacquainted
+unacquaintedly
+unacquaintedness
+unacquiescent
+unacquirable
+unacquirableness
+unacquirably
+unacquired
+unacquit
+unacquittable
+unacquitted
+unacquittedness
+unact
+unactability
+unactable
+unacted
+unacting
+unactinic
+unaction
+unactivated
+unactive
+unactively
+unactiveness
+unactivity
+unactorlike
+unactual
+unactuality
+unactually
+unactuated
+unacute
+unacutely
+unadapt
+unadaptability
+unadaptable
+unadaptableness
+unadaptably
+unadapted
+unadaptedly
+unadaptedness
+unadaptive
+unadd
+unaddable
+unadded
+unaddicted
+unaddictedness
+unadditional
+unaddress
+unaddressed
+unadequate
+unadequately
+unadequateness
+unadherence
+unadherent
+unadherently
+unadhesive
+unadjacent
+unadjacently
+unadjectived
+unadjourned
+unadjournment
+unadjudged
+unadjust
+unadjustably
+unadjusted
+unadjustment
+unadministered
+unadmirable
+unadmire
+unadmired
+unadmiring
+unadmissible
+unadmissibly
+unadmission
+unadmittable
+unadmittableness
+unadmittably
+unadmitted
+unadmittedly
+unadmitting
+unadmonished
+unadopt
+unadoptable
+unadoptably
+unadopted
+unadoption
+unadorable
+unadoration
+unadored
+unadoring
+unadorn
+unadornable
+unadorned
+unadornedly
+unadornedness
+unadornment
+unadult
+unadulterate
+unadulterated
+unadulteratedly
+unadulteratedness
+unadulterately
+unadulterous
+unadulterously
+unadvanced
+unadvancedly
+unadvancedness
+unadvancement
+unadvancing
+unadvantaged
+unadvantageous
+unadventured
+unadventuring
+unadventurous
+unadventurously
+unadverse
+unadversely
+unadverseness
+unadvertency
+unadvertised
+unadvertisement
+unadvertising
+unadvisability
+unadvisable
+unadvisableness
+unadvisably
+unadvised
+unadvisedly
+unadvisedness
+unadvocated
+unaerated
+unaesthetic
+unaesthetical
+unafeard
+unafeared
+unaffable
+unaffably
+unaffected
+unaffectedly
+unaffectedness
+unaffecting
+unaffectionate
+unaffectionately
+unaffectioned
+unaffianced
+unaffied
+unaffiliated
+unaffiliation
+unaffirmation
+unaffirmed
+unaffixed
+unafflicted
+unafflictedly
+unafflicting
+unaffliction
+unaffordable
+unafforded
+unaffranchised
+unaffrighted
+unaffrightedly
+unaffronted
+unafire
+unafloat
+unaflow
+unafraid
+unaged
+unaggravated
+unaggravating
+unaggregated
+unaggression
+unaggressive
+unaggressively
+unaggressiveness
+unaghast
+unagile
+unagility
+unaging
+unagitated
+unagitatedly
+unagitatedness
+unagitation
+unagonize
+unagrarian
+unagreeable
+unagreeableness
+unagreeably
+unagreed
+unagreeing
+unagreement
+unagricultural
+unaidable
+unaided
+unaidedly
+unaiding
+unailing
+unaimed
+unaiming
+unaired
+unaisled
+Unakhotana
+unakin
+unakite
+unal
+Unalachtigo
+unalarm
+unalarmed
+unalarming
+Unalaska
+unalcoholized
+unaldermanly
+unalert
+unalertly
+unalertness
+unalgebraical
+unalienable
+unalienableness
+unalienably
+unalienated
+unalignable
+unaligned
+unalike
+unalimentary
+unalist
+unalive
+unallayable
+unallayably
+unallayed
+unalleged
+unallegorical
+unalleviably
+unalleviated
+unalleviation
+unalliable
+unallied
+unalliedly
+unalliedness
+unallotment
+unallotted
+unallow
+unallowable
+unallowed
+unallowedly
+unallowing
+unalloyed
+unallurable
+unallured
+unalluring
+unalluringly
+unalmsed
+unalone
+unaloud
+unalphabeted
+unalphabetic
+unalphabetical
+unalterability
+unalterable
+unalterableness
+unalterably
+unalteration
+unaltered
+unaltering
+unalternated
+unamalgamable
+unamalgamated
+unamalgamating
+unamassed
+unamazed
+unamazedly
+unambiguity
+unambiguous
+unambiguously
+unambiguousness
+unambition
+unambitious
+unambitiously
+unambitiousness
+unambrosial
+unambush
+unamenability
+unamenable
+unamenableness
+unamenably
+unamend
+unamendable
+unamended
+unamendedly
+unamending
+unamendment
+unamerced
+Unami
+unamiability
+unamiable
+unamiableness
+unamiably
+unamicable
+unamicably
+unamiss
+unamo
+unamortization
+unamortized
+unample
+unamplifiable
+unamplified
+unamply
+unamputated
+unamusable
+unamusably
+unamused
+unamusement
+unamusing
+unamusingly
+unamusive
+unanalogical
+unanalogous
+unanalogously
+unanalogousness
+unanalytic
+unanalytical
+unanalyzable
+unanalyzed
+unanalyzing
+unanatomizable
+unanatomized
+unancestored
+unancestried
+unanchor
+unanchored
+unanchylosed
+unancient
+unaneled
+unangelic
+unangelical
+unangrily
+unangry
+unangular
+unanimalized
+unanimate
+unanimated
+unanimatedly
+unanimatedness
+unanimately
+unanimism
+unanimist
+unanimistic
+unanimistically
+unanimity
+unanimous
+unanimously
+unanimousness
+unannealed
+unannex
+unannexed
+unannexedly
+unannexedness
+unannihilable
+unannihilated
+unannotated
+unannounced
+unannoyed
+unannoying
+unannullable
+unannulled
+unanointed
+unanswerability
+unanswerable
+unanswerableness
+unanswerably
+unanswered
+unanswering
+unantagonistic
+unantagonizable
+unantagonized
+unantagonizing
+unanticipated
+unanticipating
+unanticipatingly
+unanticipation
+unanticipative
+unantiquated
+unantiquatedness
+unantique
+unantiquity
+unanxiety
+unanxious
+unanxiously
+unanxiousness
+unapart
+unapocryphal
+unapologetic
+unapologizing
+unapostatized
+unapostolic
+unapostolical
+unapostolically
+unapostrophized
+unappalled
+unappareled
+unapparent
+unapparently
+unapparentness
+unappealable
+unappealableness
+unappealably
+unappealed
+unappealing
+unappeasable
+unappeasableness
+unappeasably
+unappeased
+unappeasedly
+unappeasedness
+unappendaged
+unapperceived
+unappertaining
+unappetizing
+unapplauded
+unapplauding
+unapplausive
+unappliable
+unappliableness
+unappliably
+unapplianced
+unapplicable
+unapplicableness
+unapplicably
+unapplied
+unapplying
+unappoint
+unappointable
+unappointableness
+unappointed
+unapportioned
+unapposite
+unappositely
+unappraised
+unappreciable
+unappreciableness
+unappreciably
+unappreciated
+unappreciating
+unappreciation
+unappreciative
+unappreciatively
+unappreciativeness
+unapprehendable
+unapprehendableness
+unapprehendably
+unapprehended
+unapprehending
+unapprehensible
+unapprehensibleness
+unapprehension
+unapprehensive
+unapprehensively
+unapprehensiveness
+unapprenticed
+unapprised
+unapprisedly
+unapprisedness
+unapproachability
+unapproachable
+unapproachableness
+unapproached
+unapproaching
+unapprobation
+unappropriable
+unappropriate
+unappropriated
+unappropriately
+unappropriateness
+unappropriation
+unapprovable
+unapprovableness
+unapprovably
+unapproved
+unapproving
+unapprovingly
+unapproximate
+unapproximately
+unaproned
+unapropos
+unapt
+unaptitude
+unaptly
+unaptness
+unarbitrarily
+unarbitrariness
+unarbitrary
+unarbitrated
+unarch
+unarchdeacon
+unarched
+unarchitectural
+unarduous
+unarguable
+unarguableness
+unarguably
+unargued
+unarguing
+unargumentative
+unargumentatively
+unarisen
+unarising
+unaristocratic
+unaristocratically
+unarithmetical
+unarithmetically
+unark
+unarm
+unarmed
+unarmedly
+unarmedness
+unarmored
+unarmorial
+unaromatized
+unarousable
+unaroused
+unarousing
+unarraignable
+unarraigned
+unarranged
+unarray
+unarrayed
+unarrestable
+unarrested
+unarresting
+unarrival
+unarrived
+unarriving
+unarrogance
+unarrogant
+unarrogating
+unarted
+unartful
+unartfully
+unartfulness
+unarticled
+unarticulate
+unarticulated
+unartificial
+unartificiality
+unartificially
+unartistic
+unartistical
+unartistically
+unartistlike
+unary
+unascendable
+unascendableness
+unascended
+unascertainable
+unascertainableness
+unascertainably
+unascertained
+unashamed
+unashamedly
+unashamedness
+unasinous
+unaskable
+unasked
+unasking
+unasleep
+unaspersed
+unasphalted
+unaspirated
+unaspiring
+unaspiringly
+unaspiringness
+unassailable
+unassailableness
+unassailably
+unassailed
+unassailing
+unassassinated
+unassaultable
+unassaulted
+unassayed
+unassaying
+unassembled
+unassented
+unassenting
+unasserted
+unassertive
+unassertiveness
+unassessable
+unassessableness
+unassessed
+unassibilated
+unassiduous
+unassignable
+unassignably
+unassigned
+unassimilable
+unassimilated
+unassimilating
+unassimilative
+unassisted
+unassisting
+unassociable
+unassociably
+unassociated
+unassociative
+unassociativeness
+unassoiled
+unassorted
+unassuageable
+unassuaged
+unassuaging
+unassuetude
+unassumable
+unassumed
+unassuming
+unassumingly
+unassumingness
+unassured
+unassuredly
+unassuredness
+unassuring
+unasterisk
+unastonish
+unastonished
+unastonishment
+unastray
+unathirst
+unathletically
+unatmospheric
+unatonable
+unatoned
+unatoning
+unattach
+unattachable
+unattached
+unattackable
+unattackableness
+unattackably
+unattacked
+unattainability
+unattainable
+unattainableness
+unattainably
+unattained
+unattaining
+unattainment
+unattaint
+unattainted
+unattaintedly
+unattempered
+unattemptable
+unattempted
+unattempting
+unattendance
+unattendant
+unattended
+unattentive
+unattenuated
+unattested
+unattestedness
+unattire
+unattired
+unattractable
+unattractableness
+unattracted
+unattracting
+unattractive
+unattractively
+unattractiveness
+unattributable
+unattributed
+unattuned
+unau
+unauctioned
+unaudible
+unaudibleness
+unaudibly
+unaudienced
+unaudited
+unaugmentable
+unaugmented
+unauspicious
+unauspiciously
+unauspiciousness
+unaustere
+unauthentic
+unauthentical
+unauthentically
+unauthenticated
+unauthenticity
+unauthorish
+unauthoritative
+unauthoritatively
+unauthoritativeness
+unauthoritied
+unauthoritiveness
+unauthorizable
+unauthorize
+unauthorized
+unauthorizedly
+unauthorizedness
+unautomatic
+unautumnal
+unavailability
+unavailable
+unavailableness
+unavailably
+unavailed
+unavailful
+unavailing
+unavailingly
+unavengeable
+unavenged
+unavenging
+unavenued
+unaveraged
+unaverred
+unaverted
+unavertible
+unavertibleness
+unavertibly
+unavian
+unavoidable
+unavoidableness
+unavoidably
+unavoidal
+unavoided
+unavoiding
+unavouchable
+unavouchableness
+unavouchably
+unavouched
+unavowable
+unavowableness
+unavowably
+unavowed
+unavowedly
+unawakable
+unawakableness
+unawake
+unawaked
+unawakened
+unawakenedness
+unawakening
+unawaking
+unawardable
+unawardableness
+unawardably
+unawarded
+unaware
+unawared
+unawaredly
+unawareness
+unawares
+unaway
+unawed
+unawful
+unawfully
+unawkward
+unawned
+unaxled
+unazotized
+unbackboarded
+unbacked
+unbackward
+unbadged
+unbaffled
+unbaffling
+unbag
+unbagged
+unbailable
+unbailableness
+unbailed
+unbain
+unbait
+unbaited
+unbaized
+unbaked
+unbalance
+unbalanceable
+unbalanceably
+unbalanced
+unbalancement
+unbalancing
+unbalconied
+unbale
+unbalked
+unballast
+unballasted
+unballoted
+unbandage
+unbandaged
+unbanded
+unbanished
+unbank
+unbankable
+unbankableness
+unbankably
+unbanked
+unbankrupt
+unbannered
+unbaptize
+unbaptized
+unbar
+unbarb
+unbarbarize
+unbarbarous
+unbarbed
+unbarbered
+unbare
+unbargained
+unbark
+unbarking
+unbaronet
+unbarrable
+unbarred
+unbarrel
+unbarreled
+unbarren
+unbarrenness
+unbarricade
+unbarricaded
+unbarricadoed
+unbase
+unbased
+unbasedness
+unbashful
+unbashfully
+unbashfulness
+unbasket
+unbastardized
+unbaste
+unbasted
+unbastilled
+unbastinadoed
+unbated
+unbathed
+unbating
+unbatted
+unbatten
+unbatterable
+unbattered
+unbattling
+unbay
+unbe
+unbeached
+unbeaconed
+unbeaded
+unbear
+unbearable
+unbearableness
+unbearably
+unbeard
+unbearded
+unbearing
+unbeast
+unbeatable
+unbeatableness
+unbeatably
+unbeaten
+unbeaued
+unbeauteous
+unbeauteously
+unbeauteousness
+unbeautified
+unbeautiful
+unbeautifully
+unbeautifulness
+unbeautify
+unbeavered
+unbeclogged
+unbeclouded
+unbecome
+unbecoming
+unbecomingly
+unbecomingness
+unbed
+unbedabbled
+unbedaggled
+unbedashed
+unbedaubed
+unbedded
+unbedecked
+unbedewed
+unbedimmed
+unbedinned
+unbedizened
+unbedraggled
+unbefit
+unbefitting
+unbefittingly
+unbefittingness
+unbefool
+unbefriend
+unbefriended
+unbefringed
+unbeget
+unbeggar
+unbegged
+unbegilt
+unbeginning
+unbeginningly
+unbeginningness
+unbegirded
+unbegirt
+unbegot
+unbegotten
+unbegottenly
+unbegottenness
+unbegreased
+unbegrimed
+unbegrudged
+unbeguile
+unbeguiled
+unbeguileful
+unbegun
+unbehaving
+unbeheaded
+unbeheld
+unbeholdable
+unbeholden
+unbeholdenness
+unbeholding
+unbehoveful
+unbehoving
+unbeing
+unbejuggled
+unbeknown
+unbeknownst
+unbelied
+unbelief
+unbeliefful
+unbelieffulness
+unbelievability
+unbelievable
+unbelievableness
+unbelievably
+unbelieve
+unbelieved
+unbeliever
+unbelieving
+unbelievingly
+unbelievingness
+unbell
+unbellicose
+unbelligerent
+unbelonging
+unbeloved
+unbelt
+unbemoaned
+unbemourned
+unbench
+unbend
+unbendable
+unbendableness
+unbendably
+unbended
+unbending
+unbendingly
+unbendingness
+unbendsome
+unbeneficed
+unbeneficent
+unbeneficial
+unbenefitable
+unbenefited
+unbenefiting
+unbenetted
+unbenevolence
+unbenevolent
+unbenevolently
+unbenight
+unbenighted
+unbenign
+unbenignant
+unbenignantly
+unbenignity
+unbenignly
+unbent
+unbenumb
+unbenumbed
+unbequeathable
+unbequeathed
+unbereaved
+unbereft
+unberouged
+unberth
+unberufen
+unbeseem
+unbeseeming
+unbeseemingly
+unbeseemingness
+unbeseemly
+unbeset
+unbesieged
+unbesmeared
+unbesmirched
+unbesmutted
+unbesot
+unbesought
+unbespeak
+unbespoke
+unbespoken
+unbesprinkled
+unbestarred
+unbestowed
+unbet
+unbeteared
+unbethink
+unbethought
+unbetide
+unbetoken
+unbetray
+unbetrayed
+unbetraying
+unbetrothed
+unbetterable
+unbettered
+unbeveled
+unbewailed
+unbewailing
+unbewilder
+unbewildered
+unbewilled
+unbewitch
+unbewitched
+unbewitching
+unbewrayed
+unbewritten
+unbias
+unbiasable
+unbiased
+unbiasedly
+unbiasedness
+unbibulous
+unbickered
+unbickering
+unbid
+unbidable
+unbiddable
+unbidden
+unbigged
+unbigoted
+unbilled
+unbillet
+unbilleted
+unbind
+unbindable
+unbinding
+unbiographical
+unbiological
+unbirdlike
+unbirdlimed
+unbirdly
+unbirthday
+unbishop
+unbishoply
+unbit
+unbiting
+unbitt
+unbitted
+unbitten
+unbitter
+unblacked
+unblackened
+unblade
+unblamable
+unblamableness
+unblamably
+unblamed
+unblaming
+unblanched
+unblanketed
+unblasphemed
+unblasted
+unblazoned
+unbleached
+unbleaching
+unbled
+unbleeding
+unblemishable
+unblemished
+unblemishedness
+unblemishing
+unblenched
+unblenching
+unblenchingly
+unblendable
+unblended
+unblent
+unbless
+unblessed
+unblessedness
+unblest
+unblighted
+unblightedly
+unblightedness
+unblind
+unblindfold
+unblinking
+unblinkingly
+unbliss
+unblissful
+unblistered
+unblithe
+unblithely
+unblock
+unblockaded
+unblocked
+unblooded
+unbloodied
+unbloodily
+unbloodiness
+unbloody
+unbloom
+unbloomed
+unblooming
+unblossomed
+unblossoming
+unblotted
+unbloused
+unblown
+unblued
+unbluestockingish
+unbluffed
+unbluffing
+unblunder
+unblundered
+unblundering
+unblunted
+unblurred
+unblush
+unblushing
+unblushingly
+unblushingness
+unboarded
+unboasted
+unboastful
+unboastfully
+unboasting
+unboat
+unbodied
+unbodiliness
+unbodily
+unboding
+unbodkined
+unbody
+unbodylike
+unbog
+unboggy
+unbohemianize
+unboiled
+unboisterous
+unbokel
+unbold
+unbolden
+unboldly
+unboldness
+unbolled
+unbolster
+unbolstered
+unbolt
+unbolted
+unbombast
+unbondable
+unbondableness
+unbonded
+unbone
+unboned
+unbonnet
+unbonneted
+unbonny
+unbooked
+unbookish
+unbooklearned
+unboot
+unbooted
+unboraxed
+unborder
+unbordered
+unbored
+unboring
+unborn
+unborne
+unborough
+unborrowed
+unborrowing
+unbosom
+unbosomer
+unbossed
+unbotanical
+unbothered
+unbothering
+unbottle
+unbottom
+unbottomed
+unbought
+unbound
+unboundable
+unboundableness
+unboundably
+unbounded
+unboundedly
+unboundedness
+unboundless
+unbounteous
+unbountiful
+unbountifully
+unbountifulness
+unbow
+unbowable
+unbowdlerized
+unbowed
+unbowel
+unboweled
+unbowered
+unbowing
+unbowingness
+unbowled
+unbowsome
+unbox
+unboxed
+unboy
+unboyish
+unboylike
+unbrace
+unbraced
+unbracedness
+unbracelet
+unbraceleted
+unbracing
+unbragged
+unbragging
+unbraid
+unbraided
+unbrailed
+unbrained
+unbran
+unbranched
+unbranching
+unbrand
+unbranded
+unbrandied
+unbrave
+unbraved
+unbravely
+unbraze
+unbreachable
+unbreached
+unbreaded
+unbreakable
+unbreakableness
+unbreakably
+unbreakfasted
+unbreaking
+unbreast
+unbreath
+unbreathable
+unbreathableness
+unbreathed
+unbreathing
+unbred
+unbreech
+unbreeched
+unbreezy
+unbrent
+unbrewed
+unbribable
+unbribableness
+unbribably
+unbribed
+unbribing
+unbrick
+unbridegroomlike
+unbridgeable
+unbridged
+unbridle
+unbridled
+unbridledly
+unbridledness
+unbridling
+unbrief
+unbriefed
+unbriefly
+unbright
+unbrightened
+unbrilliant
+unbrimming
+unbrined
+unbrittle
+unbroached
+unbroad
+unbroadcasted
+unbroidered
+unbroiled
+unbroke
+unbroken
+unbrokenly
+unbrokenness
+unbronzed
+unbrooch
+unbrooded
+unbrookable
+unbrookably
+unbrothered
+unbrotherlike
+unbrotherliness
+unbrotherly
+unbrought
+unbrown
+unbrowned
+unbruised
+unbrushed
+unbrutalize
+unbrutalized
+unbrute
+unbrutelike
+unbrutify
+unbrutize
+unbuckle
+unbuckramed
+unbud
+unbudded
+unbudgeability
+unbudgeable
+unbudgeableness
+unbudgeably
+unbudged
+unbudgeted
+unbudging
+unbuffed
+unbuffered
+unbuffeted
+unbuild
+unbuilded
+unbuilt
+unbulky
+unbulled
+unbulletined
+unbumped
+unbumptious
+unbunched
+unbundle
+unbundled
+unbung
+unbungling
+unbuoyant
+unbuoyed
+unburden
+unburdened
+unburdenment
+unburdensome
+unburdensomeness
+unburgessed
+unburiable
+unburial
+unburied
+unburlesqued
+unburly
+unburn
+unburnable
+unburned
+unburning
+unburnished
+unburnt
+unburrow
+unburrowed
+unburst
+unburstable
+unburstableness
+unburthen
+unbury
+unbush
+unbusied
+unbusily
+unbusiness
+unbusinesslike
+unbusk
+unbuskin
+unbuskined
+unbustling
+unbusy
+unbutchered
+unbutcherlike
+unbuttered
+unbutton
+unbuttoned
+unbuttonment
+unbuttressed
+unbuxom
+unbuxomly
+unbuxomness
+unbuyable
+unbuyableness
+unbuying
+unca
+uncabined
+uncabled
+uncadenced
+uncage
+uncaged
+uncake
+uncalcareous
+uncalcified
+uncalcined
+uncalculable
+uncalculableness
+uncalculably
+uncalculated
+uncalculating
+uncalculatingly
+uncalendered
+uncalk
+uncalked
+uncall
+uncalled
+uncallow
+uncallower
+uncalm
+uncalmed
+uncalmly
+uncalumniated
+uncambered
+uncamerated
+uncamouflaged
+uncanceled
+uncancellable
+uncancelled
+uncandid
+uncandidly
+uncandidness
+uncandied
+uncandor
+uncaned
+uncankered
+uncanned
+uncannily
+uncanniness
+uncanny
+uncanonic
+uncanonical
+uncanonically
+uncanonicalness
+uncanonize
+uncanonized
+uncanopied
+uncantoned
+uncantonized
+uncanvassably
+uncanvassed
+uncap
+uncapable
+uncapableness
+uncapably
+uncapacious
+uncapacitate
+uncaparisoned
+uncapitalized
+uncapped
+uncapper
+uncapsizable
+uncapsized
+uncaptained
+uncaptioned
+uncaptious
+uncaptiously
+uncaptivate
+uncaptivated
+uncaptivating
+uncaptived
+uncapturable
+uncaptured
+uncarbonated
+uncarboned
+uncarbureted
+uncarded
+uncardinal
+uncardinally
+uncareful
+uncarefully
+uncarefulness
+uncaressed
+uncargoed
+Uncaria
+uncaricatured
+uncaring
+uncarnate
+uncarnivorous
+uncaroled
+uncarpentered
+uncarpeted
+uncarriageable
+uncarried
+uncart
+uncarted
+uncartooned
+uncarved
+uncase
+uncased
+uncasemated
+uncask
+uncasked
+uncasketed
+uncasque
+uncassock
+uncast
+uncaste
+uncastigated
+uncastle
+uncastled
+uncastrated
+uncasual
+uncatalogued
+uncatchable
+uncate
+uncatechised
+uncatechisedness
+uncatechized
+uncatechizedness
+uncategorized
+uncathedraled
+uncatholcity
+uncatholic
+uncatholical
+uncatholicalness
+uncatholicize
+uncatholicly
+uncaucusable
+uncaught
+uncausatively
+uncaused
+uncauterized
+uncautious
+uncautiously
+uncautiousness
+uncavalier
+uncavalierly
+uncave
+unceasable
+unceased
+unceasing
+unceasingly
+unceasingness
+unceded
+unceiled
+unceilinged
+uncelebrated
+uncelebrating
+uncelestial
+uncelestialized
+uncellar
+uncement
+uncemented
+uncementing
+uncensorable
+uncensored
+uncensorious
+uncensoriously
+uncensoriousness
+uncensurable
+uncensured
+uncensuring
+uncenter
+uncentered
+uncentral
+uncentrality
+uncentrally
+uncentred
+uncentury
+uncereclothed
+unceremented
+unceremonial
+unceremonious
+unceremoniously
+unceremoniousness
+uncertain
+uncertainly
+uncertainness
+uncertainty
+uncertifiable
+uncertifiableness
+uncertificated
+uncertified
+uncertifying
+uncertitude
+uncessant
+uncessantly
+uncessantness
+unchafed
+unchain
+unchainable
+unchained
+unchair
+unchaired
+unchalked
+unchallengeable
+unchallengeableness
+unchallengeably
+unchallenged
+unchallenging
+unchambered
+unchamfered
+unchampioned
+unchance
+unchancellor
+unchancy
+unchange
+unchangeability
+unchangeable
+unchangeableness
+unchangeably
+unchanged
+unchangedness
+unchangeful
+unchangefulness
+unchanging
+unchangingly
+unchangingness
+unchanneled
+unchannelled
+unchanted
+unchaperoned
+unchaplain
+unchapleted
+unchapter
+unchaptered
+uncharacter
+uncharactered
+uncharacteristic
+uncharacteristically
+uncharacterized
+uncharge
+unchargeable
+uncharged
+uncharging
+uncharily
+unchariness
+unchariot
+uncharitable
+uncharitableness
+uncharitably
+uncharity
+uncharm
+uncharmable
+uncharmed
+uncharming
+uncharnel
+uncharred
+uncharted
+unchartered
+unchary
+unchased
+unchaste
+unchastely
+unchastened
+unchasteness
+unchastisable
+unchastised
+unchastising
+unchastity
+unchatteled
+unchauffeured
+unchawed
+uncheat
+uncheated
+uncheating
+uncheck
+uncheckable
+unchecked
+uncheckered
+uncheerable
+uncheered
+uncheerful
+uncheerfully
+uncheerfulness
+uncheerily
+uncheeriness
+uncheering
+uncheery
+unchemical
+unchemically
+uncherished
+uncherishing
+unchested
+unchevroned
+unchewable
+unchewableness
+unchewed
+unchid
+unchidden
+unchided
+unchiding
+unchidingly
+unchild
+unchildish
+unchildishly
+unchildishness
+unchildlike
+unchilled
+unchiming
+unchinked
+unchipped
+unchiseled
+unchiselled
+unchivalric
+unchivalrous
+unchivalrously
+unchivalrousness
+unchivalry
+unchloridized
+unchoicely
+unchokable
+unchoked
+uncholeric
+unchoosable
+unchopped
+unchoral
+unchorded
+unchosen
+unchrisom
+unchristen
+unchristened
+unchristian
+unchristianity
+unchristianize
+unchristianized
+unchristianlike
+unchristianly
+unchristianness
+unchronicled
+unchronological
+unchronologically
+unchurch
+unchurched
+unchurchlike
+unchurchly
+unchurn
+unci
+uncia
+uncial
+uncialize
+uncially
+uncicatrized
+unciferous
+unciform
+unciliated
+uncinal
+Uncinaria
+uncinariasis
+uncinariatic
+Uncinata
+uncinate
+uncinated
+uncinatum
+uncinch
+uncinct
+uncinctured
+uncini
+Uncinula
+uncinus
+uncipher
+uncircular
+uncircularized
+uncirculated
+uncircumcised
+uncircumcisedness
+uncircumcision
+uncircumlocutory
+uncircumscribable
+uncircumscribed
+uncircumscribedness
+uncircumscript
+uncircumscriptible
+uncircumscription
+uncircumspect
+uncircumspection
+uncircumspectly
+uncircumspectness
+uncircumstanced
+uncircumstantial
+uncirostrate
+uncite
+uncited
+uncitied
+uncitizen
+uncitizenlike
+uncitizenly
+uncity
+uncivic
+uncivil
+uncivilish
+uncivility
+uncivilizable
+uncivilization
+uncivilize
+uncivilized
+uncivilizedly
+uncivilizedness
+uncivilly
+uncivilness
+unclad
+unclaimed
+unclaiming
+unclamorous
+unclamp
+unclamped
+unclarified
+unclarifying
+unclarity
+unclashing
+unclasp
+unclasped
+unclassable
+unclassableness
+unclassably
+unclassed
+unclassible
+unclassical
+unclassically
+unclassifiable
+unclassifiableness
+unclassification
+unclassified
+unclassify
+unclassifying
+unclawed
+unclay
+unclayed
+uncle
+unclead
+unclean
+uncleanable
+uncleaned
+uncleanlily
+uncleanliness
+uncleanly
+uncleanness
+uncleansable
+uncleanse
+uncleansed
+uncleansedness
+unclear
+uncleared
+unclearing
+uncleavable
+uncleave
+uncledom
+uncleft
+unclehood
+unclement
+unclemently
+unclementness
+unclench
+unclergy
+unclergyable
+unclerical
+unclericalize
+unclerically
+unclericalness
+unclerklike
+unclerkly
+uncleship
+unclever
+uncleverly
+uncleverness
+unclew
+unclick
+uncliented
+unclify
+unclimaxed
+unclimb
+unclimbable
+unclimbableness
+unclimbably
+unclimbed
+unclimbing
+unclinch
+uncling
+unclinical
+unclip
+unclipped
+unclipper
+uncloak
+uncloakable
+uncloaked
+unclog
+unclogged
+uncloister
+uncloistered
+uncloistral
+unclosable
+unclose
+unclosed
+uncloseted
+unclothe
+unclothed
+unclothedly
+unclothedness
+unclotted
+uncloud
+unclouded
+uncloudedly
+uncloudedness
+uncloudy
+unclout
+uncloven
+uncloyable
+uncloyed
+uncloying
+unclub
+unclubbable
+unclubby
+unclustered
+unclustering
+unclutch
+unclutchable
+unclutched
+unclutter
+uncluttered
+unco
+uncoach
+uncoachable
+uncoachableness
+uncoached
+uncoacted
+uncoagulable
+uncoagulated
+uncoagulating
+uncoat
+uncoated
+uncoatedness
+uncoaxable
+uncoaxed
+uncoaxing
+uncock
+uncocked
+uncockneyfy
+uncocted
+uncodded
+uncoddled
+uncoded
+uncodified
+uncoerced
+uncoffer
+uncoffin
+uncoffined
+uncoffle
+uncogent
+uncogged
+uncogitable
+uncognizable
+uncognizant
+uncognized
+uncognoscibility
+uncognoscible
+uncoguidism
+uncoherent
+uncoherently
+uncoherentness
+uncohesive
+uncoif
+uncoifed
+uncoil
+uncoiled
+uncoin
+uncoined
+uncoked
+uncoking
+uncollapsed
+uncollapsible
+uncollar
+uncollared
+uncollated
+uncollatedness
+uncollected
+uncollectedly
+uncollectedness
+uncollectible
+uncollectibleness
+uncollectibly
+uncolleged
+uncollegian
+uncollegiate
+uncolloquial
+uncolloquially
+uncolonellike
+uncolonial
+uncolonize
+uncolonized
+uncolorable
+uncolorably
+uncolored
+uncoloredly
+uncoloredness
+uncoloured
+uncolouredly
+uncolouredness
+uncolt
+uncoly
+uncombable
+uncombatable
+uncombated
+uncombed
+uncombinable
+uncombinableness
+uncombinably
+uncombine
+uncombined
+uncombining
+uncombiningness
+uncombustible
+uncome
+uncomelily
+uncomeliness
+uncomely
+uncomfort
+uncomfortable
+uncomfortableness
+uncomfortably
+uncomforted
+uncomforting
+uncomfy
+uncomic
+uncommanded
+uncommandedness
+uncommanderlike
+uncommemorated
+uncommenced
+uncommendable
+uncommendableness
+uncommendably
+uncommended
+uncommensurability
+uncommensurable
+uncommensurableness
+uncommensurate
+uncommented
+uncommenting
+uncommerciable
+uncommercial
+uncommercially
+uncommercialness
+uncommingled
+uncomminuted
+uncommiserated
+uncommiserating
+uncommissioned
+uncommitted
+uncommitting
+uncommixed
+uncommodious
+uncommodiously
+uncommodiousness
+uncommon
+uncommonable
+uncommonly
+uncommonness
+uncommonplace
+uncommunicable
+uncommunicableness
+uncommunicably
+uncommunicated
+uncommunicating
+uncommunicative
+uncommunicatively
+uncommunicativeness
+uncommutable
+uncommutative
+uncommuted
+uncompact
+uncompacted
+Uncompahgre
+uncompahgrite
+uncompaniable
+uncompanied
+uncompanioned
+uncomparable
+uncomparably
+uncompared
+uncompass
+uncompassable
+uncompassed
+uncompassion
+uncompassionate
+uncompassionated
+uncompassionately
+uncompassionateness
+uncompassionating
+uncompassioned
+uncompatible
+uncompatibly
+uncompellable
+uncompelled
+uncompelling
+uncompensable
+uncompensated
+uncompetent
+uncompetitive
+uncompiled
+uncomplacent
+uncomplained
+uncomplaining
+uncomplainingly
+uncomplainingness
+uncomplaint
+uncomplaisance
+uncomplaisant
+uncomplaisantly
+uncomplemental
+uncompletable
+uncomplete
+uncompleted
+uncompletely
+uncompleteness
+uncomplex
+uncompliability
+uncompliable
+uncompliableness
+uncompliance
+uncompliant
+uncomplicated
+uncomplimentary
+uncomplimented
+uncomplimenting
+uncomplying
+uncomposable
+uncomposeable
+uncomposed
+uncompoundable
+uncompounded
+uncompoundedly
+uncompoundedness
+uncompounding
+uncomprehended
+uncomprehending
+uncomprehendingly
+uncomprehendingness
+uncomprehensible
+uncomprehension
+uncomprehensive
+uncomprehensively
+uncomprehensiveness
+uncompressed
+uncompressible
+uncomprised
+uncomprising
+uncomprisingly
+uncompromised
+uncompromising
+uncompromisingly
+uncompromisingness
+uncompulsive
+uncompulsory
+uncomputable
+uncomputableness
+uncomputably
+uncomputed
+uncomraded
+unconcatenated
+unconcatenating
+unconcealable
+unconcealableness
+unconcealably
+unconcealed
+unconcealing
+unconcealingly
+unconcealment
+unconceded
+unconceited
+unconceivable
+unconceivableness
+unconceivably
+unconceived
+unconceiving
+unconcern
+unconcerned
+unconcernedly
+unconcernedness
+unconcerning
+unconcernment
+unconcertable
+unconcerted
+unconcertedly
+unconcertedness
+unconcessible
+unconciliable
+unconciliated
+unconciliatedness
+unconciliating
+unconciliatory
+unconcludable
+unconcluded
+unconcluding
+unconcludingness
+unconclusive
+unconclusively
+unconclusiveness
+unconcocted
+unconcordant
+unconcrete
+unconcreted
+unconcurrent
+unconcurring
+uncondemnable
+uncondemned
+uncondensable
+uncondensableness
+uncondensed
+uncondensing
+uncondescending
+uncondescension
+uncondition
+unconditional
+unconditionality
+unconditionally
+unconditionalness
+unconditionate
+unconditionated
+unconditionately
+unconditioned
+unconditionedly
+unconditionedness
+uncondoled
+uncondoling
+unconducing
+unconducive
+unconduciveness
+unconducted
+unconductive
+unconductiveness
+unconfected
+unconfederated
+unconferred
+unconfess
+unconfessed
+unconfessing
+unconfided
+unconfidence
+unconfident
+unconfidential
+unconfidentialness
+unconfidently
+unconfiding
+unconfinable
+unconfine
+unconfined
+unconfinedly
+unconfinedness
+unconfinement
+unconfining
+unconfirm
+unconfirmative
+unconfirmed
+unconfirming
+unconfiscable
+unconfiscated
+unconflicting
+unconflictingly
+unconflictingness
+unconformability
+unconformable
+unconformableness
+unconformably
+unconformed
+unconformedly
+unconforming
+unconformist
+unconformity
+unconfound
+unconfounded
+unconfoundedly
+unconfrontable
+unconfronted
+unconfusable
+unconfusably
+unconfused
+unconfusedly
+unconfutable
+unconfuted
+unconfuting
+uncongeal
+uncongealable
+uncongealed
+uncongenial
+uncongeniality
+uncongenially
+uncongested
+unconglobated
+unconglomerated
+unconglutinated
+uncongratulate
+uncongratulated
+uncongratulating
+uncongregated
+uncongregational
+uncongressional
+uncongruous
+unconjecturable
+unconjectured
+unconjoined
+unconjugal
+unconjugated
+unconjunctive
+unconjured
+unconnected
+unconnectedly
+unconnectedness
+unconned
+unconnived
+unconniving
+unconquerable
+unconquerableness
+unconquerably
+unconquered
+unconscienced
+unconscient
+unconscientious
+unconscientiously
+unconscientiousness
+unconscionable
+unconscionableness
+unconscionably
+unconscious
+unconsciously
+unconsciousness
+unconsecrate
+unconsecrated
+unconsecratedly
+unconsecratedness
+unconsecration
+unconsecutive
+unconsent
+unconsentaneous
+unconsented
+unconsenting
+unconsequential
+unconsequentially
+unconsequentialness
+unconservable
+unconservative
+unconserved
+unconserving
+unconsiderable
+unconsiderate
+unconsiderately
+unconsiderateness
+unconsidered
+unconsideredly
+unconsideredness
+unconsidering
+unconsideringly
+unconsignable
+unconsigned
+unconsistent
+unconsociable
+unconsociated
+unconsolable
+unconsolably
+unconsolatory
+unconsoled
+unconsolidated
+unconsolidating
+unconsolidation
+unconsoling
+unconsonancy
+unconsonant
+unconsonantly
+unconsonous
+unconspicuous
+unconspicuously
+unconspicuousness
+unconspired
+unconspiring
+unconspiringly
+unconspiringness
+unconstancy
+unconstant
+unconstantly
+unconstantness
+unconstellated
+unconstipated
+unconstituted
+unconstitutional
+unconstitutionalism
+unconstitutionality
+unconstitutionally
+unconstrainable
+unconstrained
+unconstrainedly
+unconstrainedness
+unconstraining
+unconstraint
+unconstricted
+unconstruable
+unconstructed
+unconstructive
+unconstructural
+unconstrued
+unconsular
+unconsult
+unconsultable
+unconsulted
+unconsulting
+unconsumable
+unconsumed
+unconsuming
+unconsummate
+unconsummated
+unconsumptive
+uncontagious
+uncontainable
+uncontainableness
+uncontainably
+uncontained
+uncontaminable
+uncontaminate
+uncontaminated
+uncontemned
+uncontemnedly
+uncontemplated
+uncontemporaneous
+uncontemporary
+uncontemptuous
+uncontended
+uncontending
+uncontent
+uncontentable
+uncontented
+uncontentedly
+uncontentedness
+uncontenting
+uncontentingness
+uncontentious
+uncontentiously
+uncontentiousness
+uncontestable
+uncontestableness
+uncontestably
+uncontested
+uncontestedly
+uncontestedness
+uncontinence
+uncontinent
+uncontinental
+uncontinented
+uncontinently
+uncontinual
+uncontinued
+uncontinuous
+uncontorted
+uncontract
+uncontracted
+uncontractedness
+uncontractile
+uncontradictable
+uncontradictableness
+uncontradictably
+uncontradicted
+uncontradictedly
+uncontradictious
+uncontradictory
+uncontrastable
+uncontrasted
+uncontrasting
+uncontributed
+uncontributing
+uncontributory
+uncontrite
+uncontrived
+uncontriving
+uncontrol
+uncontrollability
+uncontrollable
+uncontrollableness
+uncontrollably
+uncontrolled
+uncontrolledly
+uncontrolledness
+uncontrolling
+uncontroversial
+uncontroversially
+uncontrovertable
+uncontrovertableness
+uncontrovertably
+uncontroverted
+uncontrovertedly
+uncontrovertible
+uncontrovertibleness
+uncontrovertibly
+unconvenable
+unconvened
+unconvenience
+unconvenient
+unconveniently
+unconventional
+unconventionalism
+unconventionality
+unconventionalize
+unconventionally
+unconventioned
+unconversable
+unconversableness
+unconversably
+unconversant
+unconversational
+unconversion
+unconvert
+unconverted
+unconvertedly
+unconvertedness
+unconvertibility
+unconvertible
+unconveyable
+unconveyed
+unconvicted
+unconvicting
+unconvince
+unconvinced
+unconvincedly
+unconvincedness
+unconvincibility
+unconvincible
+unconvincing
+unconvincingly
+unconvincingness
+unconvoluted
+unconvoyed
+unconvulsed
+uncookable
+uncooked
+uncooled
+uncoop
+uncooped
+uncoopered
+uncooping
+uncope
+uncopiable
+uncopied
+uncopious
+uncopyrighted
+uncoquettish
+uncoquettishly
+uncord
+uncorded
+uncordial
+uncordiality
+uncordially
+uncording
+uncore
+uncored
+uncork
+uncorked
+uncorker
+uncorking
+uncorned
+uncorner
+uncoronated
+uncoroneted
+uncorporal
+uncorpulent
+uncorrect
+uncorrectable
+uncorrected
+uncorrectible
+uncorrectly
+uncorrectness
+uncorrelated
+uncorrespondency
+uncorrespondent
+uncorresponding
+uncorrigible
+uncorrigibleness
+uncorrigibly
+uncorroborated
+uncorroded
+uncorrugated
+uncorrupt
+uncorrupted
+uncorruptedly
+uncorruptedness
+uncorruptibility
+uncorruptible
+uncorruptibleness
+uncorruptibly
+uncorrupting
+uncorruption
+uncorruptive
+uncorruptly
+uncorruptness
+uncorseted
+uncosseted
+uncost
+uncostliness
+uncostly
+uncostumed
+uncottoned
+uncouch
+uncouched
+uncouching
+uncounselable
+uncounseled
+uncounsellable
+uncounselled
+uncountable
+uncountableness
+uncountably
+uncounted
+uncountenanced
+uncounteracted
+uncounterbalanced
+uncounterfeit
+uncounterfeited
+uncountermandable
+uncountermanded
+uncountervailed
+uncountess
+uncountrified
+uncouple
+uncoupled
+uncoupler
+uncourageous
+uncoursed
+uncourted
+uncourteous
+uncourteously
+uncourteousness
+uncourtierlike
+uncourting
+uncourtlike
+uncourtliness
+uncourtly
+uncous
+uncousinly
+uncouth
+uncouthie
+uncouthly
+uncouthness
+uncouthsome
+uncovenant
+uncovenanted
+uncover
+uncoverable
+uncovered
+uncoveredly
+uncoveted
+uncoveting
+uncovetingly
+uncovetous
+uncowed
+uncowl
+uncoy
+uncracked
+uncradled
+uncraftily
+uncraftiness
+uncrafty
+uncram
+uncramp
+uncramped
+uncrampedness
+uncranked
+uncrannied
+uncrated
+uncravatted
+uncraven
+uncraving
+uncravingly
+uncrazed
+uncream
+uncreased
+uncreatability
+uncreatable
+uncreatableness
+uncreate
+uncreated
+uncreatedness
+uncreating
+uncreation
+uncreative
+uncreativeness
+uncreaturely
+uncredentialed
+uncredentialled
+uncredibility
+uncredible
+uncredibly
+uncreditable
+uncreditableness
+uncreditably
+uncredited
+uncrediting
+uncredulous
+uncreeping
+uncreosoted
+uncrest
+uncrested
+uncrevassed
+uncrib
+uncried
+uncrime
+uncriminal
+uncriminally
+uncrinkle
+uncrinkled
+uncrinkling
+uncrippled
+uncrisp
+uncritical
+uncritically
+uncriticisable
+uncriticised
+uncriticising
+uncriticisingly
+uncriticism
+uncriticizable
+uncriticized
+uncriticizing
+uncriticizingly
+uncrochety
+uncrook
+uncrooked
+uncrooking
+uncropped
+uncropt
+uncross
+uncrossable
+uncrossableness
+uncrossed
+uncrossexaminable
+uncrossexamined
+uncrossly
+uncrowded
+uncrown
+uncrowned
+uncrowning
+uncrucified
+uncrudded
+uncrude
+uncruel
+uncrumbled
+uncrumple
+uncrumpling
+uncrushable
+uncrushed
+uncrusted
+uncrying
+uncrystaled
+uncrystalled
+uncrystalline
+uncrystallizability
+uncrystallizable
+uncrystallized
+unction
+unctional
+unctioneer
+unctionless
+unctious
+unctiousness
+unctorium
+unctuose
+unctuosity
+unctuous
+unctuously
+unctuousness
+uncubbed
+uncubic
+uncuckold
+uncuckolded
+uncudgelled
+uncuffed
+uncular
+unculled
+uncultivability
+uncultivable
+uncultivate
+uncultivated
+uncultivation
+unculturable
+unculture
+uncultured
+uncumber
+uncumbered
+uncumbrous
+uncunning
+uncunningly
+uncunningness
+uncupped
+uncurable
+uncurableness
+uncurably
+uncurb
+uncurbable
+uncurbed
+uncurbedly
+uncurbing
+uncurd
+uncurdled
+uncurdling
+uncured
+uncurious
+uncuriously
+uncurl
+uncurled
+uncurling
+uncurrent
+uncurrently
+uncurrentness
+uncurricularized
+uncurried
+uncurse
+uncursed
+uncursing
+uncurst
+uncurtailed
+uncurtain
+uncurtained
+uncus
+uncushioned
+uncusped
+uncustomable
+uncustomarily
+uncustomariness
+uncustomary
+uncustomed
+uncut
+uncuth
+uncuticulate
+uncuttable
+uncynical
+uncynically
+uncypress
+undabbled
+undaggled
+undaily
+undaintiness
+undainty
+undallying
+undam
+undamageable
+undamaged
+undamaging
+undamasked
+undammed
+undamming
+undamn
+undamped
+undancing
+undandiacal
+undandled
+undangered
+undangerous
+undangerousness
+undared
+undaring
+undark
+undarken
+undarkened
+undarned
+undashed
+undatable
+undate
+undateable
+undated
+undatedness
+undaub
+undaubed
+undaughter
+undaughterliness
+undaughterly
+undauntable
+undaunted
+undauntedly
+undauntedness
+undaunting
+undawned
+undawning
+undazed
+undazing
+undazzle
+undazzled
+undazzling
+unde
+undead
+undeadened
+undeaf
+undealable
+undealt
+undean
+undear
+undebarred
+undebased
+undebatable
+undebated
+undebating
+undebauched
+undebilitated
+undebilitating
+undecagon
+undecanaphthene
+undecane
+undecatoic
+undecayable
+undecayableness
+undecayed
+undecayedness
+undecaying
+undeceased
+undeceitful
+undeceivable
+undeceivableness
+undeceivably
+undeceive
+undeceived
+undeceiver
+undeceiving
+undecency
+undecennary
+undecennial
+undecent
+undecently
+undeception
+undeceptious
+undeceptitious
+undeceptive
+undecidable
+undecide
+undecided
+undecidedly
+undecidedness
+undeciding
+undecimal
+undeciman
+undecimole
+undecipher
+undecipherability
+undecipherable
+undecipherably
+undeciphered
+undecision
+undecisive
+undecisively
+undecisiveness
+undeck
+undecked
+undeclaimed
+undeclaiming
+undeclamatory
+undeclarable
+undeclare
+undeclared
+undeclinable
+undeclinableness
+undeclinably
+undeclined
+undeclining
+undecocted
+undecoic
+undecolic
+undecomposable
+undecomposed
+undecompounded
+undecorated
+undecorative
+undecorous
+undecorously
+undecorousness
+undecorticated
+undecoyed
+undecreased
+undecreasing
+undecree
+undecreed
+undecried
+undecyl
+undecylenic
+undecylic
+undedicate
+undedicated
+undeducible
+undeducted
+undeeded
+undeemed
+undeemous
+undeemously
+undeep
+undefaceable
+undefaced
+undefalcated
+undefamed
+undefaming
+undefatigable
+undefaulted
+undefaulting
+undefeasible
+undefeat
+undefeatable
+undefeated
+undefeatedly
+undefeatedness
+undefecated
+undefectible
+undefective
+undefectiveness
+undefendable
+undefendableness
+undefendably
+undefended
+undefending
+undefense
+undefensed
+undefensible
+undeferential
+undeferentially
+undeferred
+undefiant
+undeficient
+undefied
+undefilable
+undefiled
+undefiledly
+undefiledness
+undefinable
+undefinableness
+undefinably
+undefine
+undefined
+undefinedly
+undefinedness
+undeflected
+undeflowered
+undeformed
+undeformedness
+undefrauded
+undefrayed
+undeft
+undegeneracy
+undegenerate
+undegenerated
+undegenerating
+undegraded
+undegrading
+undeification
+undeified
+undeify
+undeistical
+undejected
+undelated
+undelayable
+undelayed
+undelayedly
+undelaying
+undelayingly
+undelectable
+undelectably
+undelegated
+undeleted
+undeliberate
+undeliberated
+undeliberately
+undeliberateness
+undeliberating
+undeliberatingly
+undeliberative
+undeliberativeness
+undelible
+undelicious
+undelight
+undelighted
+undelightful
+undelightfully
+undelightfulness
+undelighting
+undelightsome
+undelimited
+undelineated
+undeliverable
+undeliverableness
+undelivered
+undelivery
+undeludable
+undelude
+undeluded
+undeluding
+undeluged
+undelusive
+undelusively
+undelve
+undelved
+undelylene
+undemagnetizable
+undemanded
+undemised
+undemocratic
+undemocratically
+undemocratize
+undemolishable
+undemolished
+undemonstrable
+undemonstrably
+undemonstratable
+undemonstrated
+undemonstrative
+undemonstratively
+undemonstrativeness
+undemure
+undemurring
+unden
+undeniable
+undeniableness
+undeniably
+undenied
+undeniedly
+undenizened
+undenominated
+undenominational
+undenominationalism
+undenominationalist
+undenominationalize
+undenominationally
+undenoted
+undenounced
+undenuded
+undepartableness
+undepartably
+undeparted
+undeparting
+undependable
+undependableness
+undependably
+undependent
+undepending
+undephlegmated
+undepicted
+undepleted
+undeplored
+undeported
+undeposable
+undeposed
+undeposited
+undepraved
+undepravedness
+undeprecated
+undepreciated
+undepressed
+undepressible
+undepressing
+undeprivable
+undeprived
+undepurated
+undeputed
+under
+underabyss
+underaccident
+underaccommodated
+underact
+underacted
+underacting
+underaction
+underactor
+underadjustment
+underadmiral
+underadventurer
+underage
+underagency
+underagent
+underagitation
+underaid
+underaim
+underair
+underalderman
+underanged
+underarch
+underargue
+underarm
+underaverage
+underback
+underbailiff
+underbake
+underbalance
+underballast
+underbank
+underbarber
+underbarring
+underbasal
+underbeadle
+underbeak
+underbeam
+underbear
+underbearer
+underbearing
+underbeat
+underbeaten
+underbed
+underbelly
+underbeveling
+underbid
+underbidder
+underbill
+underbillow
+underbishop
+underbishopric
+underbit
+underbite
+underbitted
+underbitten
+underboard
+underboated
+underbodice
+underbody
+underboil
+underboom
+underborn
+underborne
+underbottom
+underbough
+underbought
+underbound
+underbowed
+underbowser
+underbox
+underboy
+underbrace
+underbraced
+underbranch
+underbreath
+underbreathing
+underbred
+underbreeding
+underbrew
+underbridge
+underbrigadier
+underbright
+underbrim
+underbrush
+underbubble
+underbud
+underbuild
+underbuilder
+underbuilding
+underbuoy
+underburn
+underburned
+underburnt
+underbursar
+underbury
+underbush
+underbutler
+underbuy
+undercanopy
+undercanvass
+undercap
+undercapitaled
+undercapitalization
+undercapitalize
+undercaptain
+undercarder
+undercarriage
+undercarry
+undercarter
+undercarve
+undercarved
+undercase
+undercasing
+undercast
+undercause
+underceiling
+undercellar
+undercellarer
+underchamber
+underchamberlain
+underchancellor
+underchanter
+underchap
+undercharge
+undercharged
+underchief
+underchime
+underchin
+underchord
+underchurched
+undercircle
+undercitizen
+underclad
+underclass
+underclassman
+underclay
+underclearer
+underclerk
+underclerkship
+undercliff
+underclift
+undercloak
+undercloth
+underclothe
+underclothed
+underclothes
+underclothing
+underclub
+underclutch
+undercoachman
+undercoat
+undercoated
+undercoater
+undercoating
+undercollector
+undercolor
+undercolored
+undercoloring
+undercommander
+undercomment
+undercompounded
+underconcerned
+undercondition
+underconsciousness
+underconstable
+underconsume
+underconsumption
+undercook
+undercool
+undercooper
+undercorrect
+undercountenance
+undercourse
+undercourtier
+undercover
+undercovering
+undercovert
+undercrawl
+undercreep
+undercrest
+undercrier
+undercroft
+undercrop
+undercrust
+undercry
+undercrypt
+undercup
+undercurl
+undercurrent
+undercurve
+undercut
+undercutter
+undercutting
+underdauber
+underdeacon
+underdead
+underdebauchee
+underdeck
+underdepth
+underdevelop
+underdevelopment
+underdevil
+underdialogue
+underdig
+underdip
+underdish
+underdistinction
+underdistributor
+underditch
+underdive
+underdo
+underdoctor
+underdoer
+underdog
+underdoing
+underdone
+underdose
+underdot
+underdown
+underdraft
+underdrag
+underdrain
+underdrainage
+underdrainer
+underdraught
+underdraw
+underdrawers
+underdrawn
+underdress
+underdressed
+underdrift
+underdrive
+underdriven
+underdrudgery
+underdrumming
+underdry
+underdunged
+underearth
+undereat
+undereaten
+underedge
+undereducated
+underemployment
+underengraver
+underenter
+underer
+underescheator
+underestimate
+underestimation
+underexcited
+underexercise
+underexpose
+underexposure
+undereye
+underface
+underfaction
+underfactor
+underfaculty
+underfalconer
+underfall
+underfarmer
+underfeathering
+underfeature
+underfed
+underfeed
+underfeeder
+underfeeling
+underfeet
+underfellow
+underfiend
+underfill
+underfilling
+underfinance
+underfind
+underfire
+underfitting
+underflame
+underflannel
+underfleece
+underflood
+underfloor
+underflooring
+underflow
+underfold
+underfolded
+underfong
+underfoot
+underfootage
+underfootman
+underforebody
+underform
+underfortify
+underframe
+underframework
+underframing
+underfreight
+underfrequency
+underfringe
+underfrock
+underfur
+underfurnish
+underfurnisher
+underfurrow
+undergabble
+undergamekeeper
+undergaoler
+undergarb
+undergardener
+undergarment
+undergarnish
+undergauge
+undergear
+undergeneral
+undergentleman
+undergird
+undergirder
+undergirding
+undergirdle
+undergirth
+underglaze
+undergloom
+underglow
+undergnaw
+undergo
+undergod
+undergoer
+undergoing
+undergore
+undergoverness
+undergovernment
+undergovernor
+undergown
+undergrad
+undergrade
+undergraduate
+undergraduatedom
+undergraduateness
+undergraduateship
+undergraduatish
+undergraduette
+undergraining
+undergrass
+undergreen
+undergrieve
+undergroan
+underground
+undergrounder
+undergroundling
+undergrove
+undergrow
+undergrowl
+undergrown
+undergrowth
+undergrub
+underguard
+underguardian
+undergunner
+underhabit
+underhammer
+underhand
+underhanded
+underhandedly
+underhandedness
+underhang
+underhanging
+underhangman
+underhatch
+underhead
+underheat
+underheaven
+underhelp
+underhew
+underhid
+underhill
+underhint
+underhistory
+underhive
+underhold
+underhole
+underhonest
+underhorse
+underhorsed
+underhousemaid
+underhum
+underhung
+underided
+underinstrument
+underisive
+underissue
+underivable
+underivative
+underived
+underivedly
+underivedness
+underjacket
+underjailer
+underjanitor
+underjaw
+underjawed
+underjobbing
+underjudge
+underjungle
+underkeel
+underkeeper
+underkind
+underking
+underkingdom
+underlaborer
+underlaid
+underlain
+underland
+underlanguaged
+underlap
+underlapper
+underlash
+underlaundress
+underlawyer
+underlay
+underlayer
+underlaying
+underleaf
+underlease
+underleather
+underlegate
+underlessee
+underlet
+underletter
+underlevel
+underlever
+underlid
+underlie
+underlier
+underlieutenant
+underlife
+underlift
+underlight
+underliking
+underlimbed
+underlimit
+underline
+underlineation
+underlineman
+underlinement
+underlinen
+underliner
+underling
+underlining
+underlip
+underlive
+underload
+underlock
+underlodging
+underloft
+underlook
+underlooker
+underlout
+underlunged
+underly
+underlye
+underlying
+undermade
+undermaid
+undermaker
+underman
+undermanager
+undermanned
+undermanning
+undermark
+undermarshal
+undermarshalman
+undermasted
+undermaster
+undermatch
+undermatched
+undermate
+undermath
+undermeal
+undermeaning
+undermeasure
+undermediator
+undermelody
+undermentioned
+undermiller
+undermimic
+underminable
+undermine
+underminer
+undermining
+underminingly
+underminister
+underministry
+undermist
+undermoated
+undermoney
+undermoral
+undermost
+undermotion
+undermount
+undermountain
+undermusic
+undermuslin
+undern
+undername
+undernatural
+underneath
+underness
+underniceness
+undernote
+undernoted
+undernourish
+undernourished
+undernourishment
+undernsong
+underntide
+underntime
+undernurse
+undernutrition
+underoccupied
+underofficer
+underofficered
+underofficial
+underogating
+underogatory
+underopinion
+underorb
+underorganization
+underorseman
+underoverlooker
+underoxidize
+underpacking
+underpaid
+underpain
+underpainting
+underpan
+underpants
+underparticipation
+underpartner
+underpass
+underpassion
+underpay
+underpayment
+underpeep
+underpeer
+underpen
+underpeopled
+underpetticoat
+underpetticoated
+underpick
+underpier
+underpilaster
+underpile
+underpin
+underpinner
+underpinning
+underpitch
+underpitched
+underplain
+underplan
+underplant
+underplate
+underplay
+underplot
+underplotter
+underply
+underpoint
+underpole
+underpopulate
+underpopulation
+underporch
+underporter
+underpose
+underpossessor
+underpot
+underpower
+underpraise
+underprefect
+underprentice
+underpresence
+underpresser
+underpressure
+underprice
+underpriest
+underprincipal
+underprint
+underprior
+underprivileged
+underprize
+underproduce
+underproduction
+underproductive
+underproficient
+underprompt
+underprompter
+underproof
+underprop
+underproportion
+underproportioned
+underproposition
+underpropped
+underpropper
+underpropping
+underprospect
+underpry
+underpuke
+underqualified
+underqueen
+underquote
+underranger
+underrate
+underratement
+underrating
+underreach
+underread
+underreader
+underrealize
+underrealm
+underream
+underreamer
+underreceiver
+underreckon
+underrecompense
+underregion
+underregistration
+underrent
+underrented
+underrenting
+underrepresent
+underrepresentation
+underrespected
+underriddle
+underriding
+underrigged
+underring
+underripe
+underripened
+underriver
+underroarer
+underroast
+underrobe
+underrogue
+underroll
+underroller
+underroof
+underroom
+underroot
+underrooted
+underrower
+underrule
+underruler
+underrun
+underrunning
+undersacristan
+undersailed
+undersally
+undersap
+undersatisfaction
+undersaturate
+undersaturation
+undersavior
+undersaw
+undersawyer
+underscale
+underscheme
+underschool
+underscoop
+underscore
+underscribe
+underscript
+underscrub
+underscrupulous
+undersea
+underseam
+underseaman
+undersearch
+underseas
+underseated
+undersecretary
+undersecretaryship
+undersect
+undersee
+underseeded
+underseedman
+undersell
+underseller
+underselling
+undersense
+undersequence
+underservant
+underserve
+underservice
+underset
+undersetter
+undersetting
+undersettle
+undersettler
+undersettling
+undersexton
+undershapen
+undersharp
+undersheathing
+undershepherd
+undersheriff
+undersheriffry
+undersheriffship
+undersheriffwick
+undershield
+undershine
+undershining
+undershire
+undershirt
+undershoe
+undershoot
+undershore
+undershorten
+undershot
+undershrievalty
+undershrieve
+undershrievery
+undershrub
+undershrubbiness
+undershrubby
+undershunter
+undershut
+underside
+undersight
+undersighted
+undersign
+undersignalman
+undersigner
+undersill
+undersinging
+undersitter
+undersize
+undersized
+underskin
+underskirt
+undersky
+undersleep
+undersleeve
+underslip
+underslope
+undersluice
+underslung
+undersneer
+undersociety
+undersoil
+undersole
+undersomething
+undersong
+undersorcerer
+undersort
+undersoul
+undersound
+undersovereign
+undersow
+underspar
+undersparred
+underspecies
+underspecified
+underspend
+undersphere
+underspin
+underspinner
+undersplice
+underspore
+underspread
+underspring
+undersprout
+underspurleather
+undersquare
+understaff
+understage
+understain
+understairs
+understamp
+understand
+understandability
+understandable
+understandableness
+understandably
+understander
+understanding
+understandingly
+understandingness
+understate
+understatement
+understay
+understeer
+understem
+understep
+understeward
+understewardship
+understimulus
+understock
+understocking
+understood
+understory
+understrain
+understrap
+understrapper
+understrapping
+understratum
+understream
+understress
+understrew
+understride
+understriding
+understrife
+understrike
+understring
+understroke
+understrung
+understudy
+understuff
+understuffing
+undersuck
+undersuggestion
+undersuit
+undersupply
+undersupport
+undersurface
+underswain
+underswamp
+undersward
+underswearer
+undersweat
+undersweep
+underswell
+undertakable
+undertake
+undertakement
+undertaker
+undertakerish
+undertakerlike
+undertakerly
+undertakery
+undertaking
+undertakingly
+undertalk
+undertapster
+undertaxed
+underteacher
+underteamed
+underteller
+undertenancy
+undertenant
+undertenter
+undertenure
+underterrestrial
+undertest
+underthane
+underthaw
+underthief
+underthing
+underthink
+underthirst
+underthought
+underthroating
+underthrob
+underthrust
+undertide
+undertided
+undertie
+undertime
+undertimed
+undertint
+undertitle
+undertone
+undertoned
+undertook
+undertow
+undertrader
+undertrained
+undertread
+undertreasurer
+undertreat
+undertribe
+undertrick
+undertrodden
+undertruck
+undertrump
+undertruss
+undertub
+undertune
+undertunic
+underturf
+underturn
+underturnkey
+undertutor
+undertwig
+undertype
+undertyrant
+underusher
+undervaluation
+undervalue
+undervaluement
+undervaluer
+undervaluing
+undervaluinglike
+undervaluingly
+undervalve
+undervassal
+undervaulted
+undervaulting
+undervegetation
+underventilation
+underverse
+undervest
+undervicar
+underviewer
+undervillain
+undervinedresser
+undervitalized
+undervocabularied
+undervoice
+undervoltage
+underwage
+underwaist
+underwaistcoat
+underwalk
+underward
+underwarden
+underwarmth
+underwarp
+underwash
+underwatch
+underwatcher
+underwater
+underwave
+underway
+underweapon
+underwear
+underweft
+underweigh
+underweight
+underweighted
+underwent
+underwheel
+underwhistle
+underwind
+underwing
+underwit
+underwitch
+underwitted
+underwood
+underwooded
+underwork
+underworker
+underworking
+underworkman
+underworld
+underwrap
+underwrite
+underwriter
+underwriting
+underwrought
+underyield
+underyoke
+underzeal
+underzealot
+undescendable
+undescended
+undescendible
+undescribable
+undescribably
+undescribed
+undescried
+undescript
+undescriptive
+undescrying
+undesert
+undeserted
+undeserting
+undeserve
+undeserved
+undeservedly
+undeservedness
+undeserver
+undeserving
+undeservingly
+undeservingness
+undesign
+undesignated
+undesigned
+undesignedly
+undesignedness
+undesigning
+undesigningly
+undesigningness
+undesirability
+undesirable
+undesirableness
+undesirably
+undesire
+undesired
+undesiredly
+undesiring
+undesirous
+undesirously
+undesirousness
+undesisting
+undespaired
+undespairing
+undespairingly
+undespatched
+undespised
+undespising
+undespoiled
+undespondent
+undespondently
+undesponding
+undespotic
+undestined
+undestroyable
+undestroyed
+undestructible
+undestructive
+undetachable
+undetached
+undetailed
+undetainable
+undetained
+undetectable
+undetected
+undetectible
+undeteriorated
+undeteriorating
+undeterminable
+undeterminate
+undetermination
+undetermined
+undetermining
+undeterred
+undeterring
+undetested
+undetesting
+undethronable
+undethroned
+undetracting
+undetractingly
+undetrimental
+undevelopable
+undeveloped
+undeveloping
+undeviated
+undeviating
+undeviatingly
+undevil
+undevious
+undeviously
+undevisable
+undevised
+undevoted
+undevotion
+undevotional
+undevoured
+undevout
+undevoutly
+undevoutness
+undewed
+undewy
+undexterous
+undexterously
+undextrous
+undextrously
+undiademed
+undiagnosable
+undiagnosed
+undialed
+undialyzed
+undiametric
+undiamonded
+undiapered
+undiaphanous
+undiatonic
+undichotomous
+undictated
+undid
+undidactic
+undies
+undieted
+undifferenced
+undifferent
+undifferential
+undifferentiated
+undifficult
+undiffident
+undiffracted
+undiffused
+undiffusible
+undiffusive
+undig
+undigenous
+undigest
+undigestable
+undigested
+undigestible
+undigesting
+undigestion
+undigged
+undight
+undighted
+undigitated
+undignified
+undignifiedly
+undignifiedness
+undignify
+undiked
+undilapidated
+undilatable
+undilated
+undilatory
+undiligent
+undiligently
+undilute
+undiluted
+undilution
+undiluvial
+undim
+undimensioned
+undimerous
+undimidiate
+undiminishable
+undiminishableness
+undiminishably
+undiminished
+undiminishing
+undiminutive
+undimmed
+undimpled
+Undine
+undine
+undined
+undinted
+undiocesed
+undiphthongize
+undiplomaed
+undiplomatic
+undipped
+undirect
+undirected
+undirectional
+undirectly
+undirectness
+undirk
+undisabled
+undisadvantageous
+undisagreeable
+undisappearing
+undisappointable
+undisappointed
+undisappointing
+undisarmed
+undisastrous
+undisbanded
+undisbarred
+undisburdened
+undisbursed
+undiscardable
+undiscarded
+undiscerned
+undiscernedly
+undiscernible
+undiscernibleness
+undiscernibly
+undiscerning
+undiscerningly
+undischargeable
+undischarged
+undiscipled
+undisciplinable
+undiscipline
+undisciplined
+undisciplinedness
+undisclaimed
+undisclosed
+undiscolored
+undiscomfitable
+undiscomfited
+undiscomposed
+undisconcerted
+undisconnected
+undiscontinued
+undiscordant
+undiscording
+undiscounted
+undiscourageable
+undiscouraged
+undiscouraging
+undiscoursed
+undiscoverable
+undiscoverableness
+undiscoverably
+undiscovered
+undiscreditable
+undiscredited
+undiscreet
+undiscreetly
+undiscreetness
+undiscretion
+undiscriminated
+undiscriminating
+undiscriminatingly
+undiscriminatingness
+undiscriminative
+undiscursive
+undiscussable
+undiscussed
+undisdained
+undisdaining
+undiseased
+undisestablished
+undisfigured
+undisfranchised
+undisfulfilled
+undisgorged
+undisgraced
+undisguisable
+undisguise
+undisguised
+undisguisedly
+undisguisedness
+undisgusted
+undisheartened
+undished
+undisheveled
+undishonored
+undisillusioned
+undisinfected
+undisinheritable
+undisinherited
+undisintegrated
+undisinterested
+undisjoined
+undisjointed
+undisliked
+undislocated
+undislodgeable
+undislodged
+undismantled
+undismay
+undismayable
+undismayed
+undismayedly
+undismembered
+undismissed
+undismounted
+undisobedient
+undisobeyed
+undisobliging
+undisordered
+undisorderly
+undisorganized
+undisowned
+undisowning
+undisparaged
+undisparity
+undispassionate
+undispatchable
+undispatched
+undispatching
+undispellable
+undispelled
+undispensable
+undispensed
+undispensing
+undispersed
+undispersing
+undisplaced
+undisplanted
+undisplay
+undisplayable
+undisplayed
+undisplaying
+undispleased
+undispose
+undisposed
+undisposedness
+undisprivacied
+undisprovable
+undisproved
+undisproving
+undisputable
+undisputableness
+undisputably
+undisputatious
+undisputatiously
+undisputed
+undisputedly
+undisputedness
+undisputing
+undisqualifiable
+undisqualified
+undisquieted
+undisreputable
+undisrobed
+undisrupted
+undissected
+undissembled
+undissembledness
+undissembling
+undissemblingly
+undisseminated
+undissenting
+undissevered
+undissimulated
+undissipated
+undissociated
+undissoluble
+undissolute
+undissolvable
+undissolved
+undissolving
+undissonant
+undissuadable
+undissuadably
+undissuade
+undistanced
+undistant
+undistantly
+undistasted
+undistasteful
+undistempered
+undistend
+undistended
+undistilled
+undistinct
+undistinctive
+undistinctly
+undistinctness
+undistinguish
+undistinguishable
+undistinguishableness
+undistinguishably
+undistinguished
+undistinguishing
+undistinguishingly
+undistorted
+undistorting
+undistracted
+undistractedly
+undistractedness
+undistracting
+undistractingly
+undistrained
+undistraught
+undistress
+undistressed
+undistributed
+undistrusted
+undistrustful
+undisturbable
+undisturbance
+undisturbed
+undisturbedly
+undisturbedness
+undisturbing
+undisturbingly
+unditched
+undithyrambic
+undittoed
+undiuretic
+undiurnal
+undivable
+undivergent
+undiverging
+undiverse
+undiversified
+undiverted
+undivertible
+undivertibly
+undiverting
+undivested
+undivestedly
+undividable
+undividableness
+undividably
+undivided
+undividedly
+undividedness
+undividing
+undivinable
+undivined
+undivinelike
+undivinely
+undivining
+undivisible
+undivisive
+undivorceable
+undivorced
+undivorcedness
+undivorcing
+undivulged
+undivulging
+undizened
+undizzied
+undo
+undoable
+undock
+undocked
+undoctor
+undoctored
+undoctrinal
+undoctrined
+undocumentary
+undocumented
+undocumentedness
+undodged
+undoer
+undoffed
+undog
+undogmatic
+undogmatical
+undoing
+undoingness
+undolled
+undolorous
+undomed
+undomestic
+undomesticate
+undomesticated
+undomestication
+undomicilable
+undomiciled
+undominated
+undomineering
+undominical
+undominoed
+undon
+undonated
+undonating
+undone
+undoneness
+undonkey
+undonnish
+undoomed
+undoped
+undormant
+undose
+undosed
+undoting
+undotted
+undouble
+undoubled
+undoubtable
+undoubtableness
+undoubtably
+undoubted
+undoubtedly
+undoubtedness
+undoubtful
+undoubtfully
+undoubtfulness
+undoubting
+undoubtingly
+undoubtingness
+undouched
+undoughty
+undovelike
+undoweled
+undowered
+undowned
+undowny
+undrab
+undraftable
+undrafted
+undrag
+undragoned
+undragooned
+undrainable
+undrained
+undramatic
+undramatical
+undramatically
+undramatizable
+undramatized
+undrape
+undraped
+undraperied
+undraw
+undrawable
+undrawn
+undreaded
+undreadful
+undreadfully
+undreading
+undreamed
+undreaming
+undreamlike
+undreamt
+undreamy
+undredged
+undreggy
+undrenched
+undress
+undressed
+undried
+undrillable
+undrilled
+undrinkable
+undrinkableness
+undrinkably
+undrinking
+undripping
+undrivable
+undrivableness
+undriven
+undronelike
+undrooping
+undropped
+undropsical
+undrossy
+undrowned
+undrubbed
+undrugged
+undrunk
+undrunken
+undry
+undryable
+undrying
+undualize
+undub
+undubbed
+undubitable
+undubitably
+unducal
+unduchess
+undue
+unduelling
+undueness
+undug
+unduke
+undulant
+undular
+undularly
+undulatance
+undulate
+undulated
+undulately
+undulating
+undulatingly
+undulation
+undulationist
+undulative
+undulatory
+undull
+undulled
+undullness
+unduloid
+undulose
+undulous
+unduly
+undumped
+unduncelike
+undunged
+undupable
+unduped
+unduplicability
+unduplicable
+unduplicity
+undurable
+undurableness
+undurably
+undust
+undusted
+unduteous
+undutiable
+undutiful
+undutifully
+undutifulness
+unduty
+undwarfed
+undwelt
+undwindling
+undy
+undye
+undyeable
+undyed
+undying
+undyingly
+undyingness
+uneager
+uneagerly
+uneagerness
+uneagled
+unearly
+unearned
+unearnest
+unearth
+unearthed
+unearthliness
+unearthly
+unease
+uneaseful
+uneasefulness
+uneasily
+uneasiness
+uneastern
+uneasy
+uneatable
+uneatableness
+uneaten
+uneath
+uneating
+unebbed
+unebbing
+unebriate
+uneccentric
+unecclesiastical
+unechoed
+unechoing
+uneclectic
+uneclipsed
+uneconomic
+uneconomical
+uneconomically
+uneconomicalness
+uneconomizing
+unecstatic
+unedge
+unedged
+unedible
+unedibleness
+unedibly
+unedified
+unedifying
+uneditable
+unedited
+uneducable
+uneducableness
+uneducably
+uneducate
+uneducated
+uneducatedly
+uneducatedness
+uneducative
+uneduced
+uneffaceable
+uneffaceably
+uneffaced
+uneffected
+uneffectible
+uneffective
+uneffectless
+uneffectual
+uneffectually
+uneffectualness
+uneffectuated
+uneffeminate
+uneffeminated
+uneffervescent
+uneffete
+unefficacious
+unefficient
+uneffigiated
+uneffused
+uneffusing
+uneffusive
+unegoist
+unegoistical
+unegoistically
+unegregious
+unejaculated
+unejected
+unelaborate
+unelaborated
+unelaborately
+unelaborateness
+unelapsed
+unelastic
+unelasticity
+unelated
+unelating
+unelbowed
+unelderly
+unelect
+unelectable
+unelected
+unelective
+unelectric
+unelectrical
+unelectrified
+unelectrify
+unelectrifying
+unelectrized
+unelectronic
+uneleemosynary
+unelegant
+unelegantly
+unelegantness
+unelemental
+unelementary
+unelevated
+unelicited
+unelided
+unelidible
+uneligibility
+uneligible
+uneligibly
+uneliminated
+unelongated
+uneloped
+uneloping
+uneloquent
+uneloquently
+unelucidated
+unelucidating
+uneluded
+unelusive
+unemaciated
+unemancipable
+unemancipated
+unemasculated
+unembalmed
+unembanked
+unembarrassed
+unembarrassedly
+unembarrassedness
+unembarrassing
+unembarrassment
+unembased
+unembattled
+unembayed
+unembellished
+unembezzled
+unembittered
+unemblazoned
+unembodied
+unembodiment
+unembossed
+unembowelled
+unembowered
+unembraceable
+unembraced
+unembroidered
+unembroiled
+unembryonic
+unemendable
+unemended
+unemerged
+unemerging
+unemigrating
+uneminent
+uneminently
+unemitted
+unemolumentary
+unemolumented
+unemotional
+unemotionalism
+unemotionally
+unemotionalness
+unemotioned
+unempaneled
+unemphatic
+unemphatical
+unemphatically
+unempirical
+unempirically
+unemploy
+unemployability
+unemployable
+unemployableness
+unemployably
+unemployed
+unemployment
+unempoisoned
+unempowered
+unempt
+unemptiable
+unemptied
+unempty
+unemulative
+unemulous
+unemulsified
+unenabled
+unenacted
+unenameled
+unenamored
+unencamped
+unenchafed
+unenchant
+unenchanted
+unencircled
+unenclosed
+unencompassed
+unencored
+unencounterable
+unencountered
+unencouraged
+unencouraging
+unencroached
+unencroaching
+unencumber
+unencumbered
+unencumberedly
+unencumberedness
+unencumbering
+unencysted
+unendable
+unendamaged
+unendangered
+unendeared
+unendeavored
+unended
+unending
+unendingly
+unendingness
+unendorsable
+unendorsed
+unendowed
+unendowing
+unendued
+unendurability
+unendurable
+unendurably
+unendured
+unenduring
+unenduringly
+unenergetic
+unenergized
+unenervated
+unenfeebled
+unenfiladed
+unenforceable
+unenforced
+unenforcedly
+unenforcedness
+unenforcibility
+unenfranchised
+unengaged
+unengaging
+unengendered
+unengineered
+unenglish
+unengraved
+unengraven
+unengrossed
+unenhanced
+unenjoined
+unenjoyable
+unenjoyed
+unenjoying
+unenjoyingly
+unenkindled
+unenlarged
+unenlightened
+unenlightening
+unenlisted
+unenlivened
+unenlivening
+unennobled
+unennobling
+unenounced
+unenquired
+unenquiring
+unenraged
+unenraptured
+unenrichable
+unenrichableness
+unenriched
+unenriching
+unenrobed
+unenrolled
+unenshrined
+unenslave
+unenslaved
+unensnared
+unensouled
+unensured
+unentailed
+unentangle
+unentangleable
+unentangled
+unentanglement
+unentangler
+unenterable
+unentered
+unentering
+unenterprise
+unenterprised
+unenterprising
+unenterprisingly
+unenterprisingness
+unentertainable
+unentertained
+unentertaining
+unentertainingly
+unentertainingness
+unenthralled
+unenthralling
+unenthroned
+unenthusiasm
+unenthusiastic
+unenthusiastically
+unenticed
+unenticing
+unentire
+unentitled
+unentombed
+unentomological
+unentrance
+unentranced
+unentrapped
+unentreated
+unentreating
+unentrenched
+unentwined
+unenumerable
+unenumerated
+unenveloped
+unenvenomed
+unenviable
+unenviably
+unenvied
+unenviedly
+unenvious
+unenviously
+unenvironed
+unenvying
+unenwoven
+unepauleted
+unephemeral
+unepic
+unepicurean
+unepigrammatic
+unepilogued
+unepiscopal
+unepiscopally
+unepistolary
+unepitaphed
+unepithelial
+unepitomized
+unequable
+unequableness
+unequably
+unequal
+unequalable
+unequaled
+unequality
+unequalize
+unequalized
+unequally
+unequalness
+unequated
+unequatorial
+unequestrian
+unequiangular
+unequiaxed
+unequilateral
+unequilibrated
+unequine
+unequipped
+unequitable
+unequitableness
+unequitably
+unequivalent
+unequivalve
+unequivalved
+unequivocal
+unequivocally
+unequivocalness
+uneradicable
+uneradicated
+unerasable
+unerased
+unerasing
+unerect
+unerected
+unermined
+uneroded
+unerrable
+unerrableness
+unerrably
+unerrancy
+unerrant
+unerratic
+unerring
+unerringly
+unerringness
+unerroneous
+unerroneously
+unerudite
+unerupted
+uneruptive
+unescaladed
+unescalloped
+unescapable
+unescapableness
+unescapably
+unescaped
+unescheated
+uneschewable
+uneschewably
+uneschewed
+Unesco
+unescorted
+unescutcheoned
+unesoteric
+unespied
+unespousable
+unespoused
+unessayed
+unessence
+unessential
+unessentially
+unessentialness
+unestablish
+unestablishable
+unestablished
+unestablishment
+unesteemed
+unestimable
+unestimableness
+unestimably
+unestimated
+unestopped
+unestranged
+unetched
+uneternal
+uneternized
+unethereal
+unethic
+unethical
+unethically
+unethicalness
+unethnological
+unethylated
+unetymological
+unetymologizable
+uneucharistical
+uneugenic
+uneulogized
+uneuphemistical
+uneuphonic
+uneuphonious
+uneuphoniously
+uneuphoniousness
+unevacuated
+unevadable
+unevaded
+unevaluated
+unevanescent
+unevangelic
+unevangelical
+unevangelized
+unevaporate
+unevaporated
+unevasive
+uneven
+unevenly
+unevenness
+uneventful
+uneventfully
+uneventfulness
+uneverted
+unevicted
+unevidenced
+unevident
+unevidential
+unevil
+unevinced
+unevirated
+uneviscerated
+unevitable
+unevitably
+unevokable
+unevoked
+unevolutionary
+unevolved
+unexacerbated
+unexact
+unexacted
+unexactedly
+unexacting
+unexactingly
+unexactly
+unexactness
+unexaggerable
+unexaggerated
+unexaggerating
+unexalted
+unexaminable
+unexamined
+unexamining
+unexampled
+unexampledness
+unexasperated
+unexasperating
+unexcavated
+unexceedable
+unexceeded
+unexcelled
+unexcellent
+unexcelling
+unexceptable
+unexcepted
+unexcepting
+unexceptionability
+unexceptionable
+unexceptionableness
+unexceptionably
+unexceptional
+unexceptionally
+unexceptionalness
+unexceptive
+unexcerpted
+unexcessive
+unexchangeable
+unexchangeableness
+unexchanged
+unexcised
+unexcitability
+unexcitable
+unexcited
+unexciting
+unexclaiming
+unexcludable
+unexcluded
+unexcluding
+unexclusive
+unexclusively
+unexclusiveness
+unexcogitable
+unexcogitated
+unexcommunicated
+unexcoriated
+unexcorticated
+unexcrescent
+unexcreted
+unexcruciating
+unexculpable
+unexculpably
+unexculpated
+unexcursive
+unexcusable
+unexcusableness
+unexcusably
+unexcused
+unexcusedly
+unexcusedness
+unexcusing
+unexecrated
+unexecutable
+unexecuted
+unexecuting
+unexecutorial
+unexemplary
+unexemplifiable
+unexemplified
+unexempt
+unexempted
+unexemptible
+unexempting
+unexercisable
+unexercise
+unexercised
+unexerted
+unexhalable
+unexhaled
+unexhausted
+unexhaustedly
+unexhaustedness
+unexhaustible
+unexhaustibleness
+unexhaustibly
+unexhaustion
+unexhaustive
+unexhaustiveness
+unexhibitable
+unexhibitableness
+unexhibited
+unexhilarated
+unexhilarating
+unexhorted
+unexhumed
+unexigent
+unexilable
+unexiled
+unexistence
+unexistent
+unexisting
+unexonerable
+unexonerated
+unexorable
+unexorableness
+unexorbitant
+unexorcisable
+unexorcisably
+unexorcised
+unexotic
+unexpandable
+unexpanded
+unexpanding
+unexpansive
+unexpectable
+unexpectant
+unexpected
+unexpectedly
+unexpectedness
+unexpecting
+unexpectingly
+unexpectorated
+unexpedient
+unexpeditated
+unexpedited
+unexpeditious
+unexpelled
+unexpendable
+unexpended
+unexpensive
+unexpensively
+unexpensiveness
+unexperience
+unexperienced
+unexperiencedness
+unexperient
+unexperiential
+unexperimental
+unexperimented
+unexpert
+unexpertly
+unexpertness
+unexpiable
+unexpiated
+unexpired
+unexpiring
+unexplainable
+unexplainableness
+unexplainably
+unexplained
+unexplainedly
+unexplainedness
+unexplaining
+unexplanatory
+unexplicable
+unexplicableness
+unexplicably
+unexplicated
+unexplicit
+unexplicitly
+unexplicitness
+unexploded
+unexploitation
+unexploited
+unexplorable
+unexplorative
+unexplored
+unexplosive
+unexportable
+unexported
+unexporting
+unexposable
+unexposed
+unexpostulating
+unexpoundable
+unexpounded
+unexpress
+unexpressable
+unexpressableness
+unexpressably
+unexpressed
+unexpressedly
+unexpressible
+unexpressibleness
+unexpressibly
+unexpressive
+unexpressively
+unexpressiveness
+unexpressly
+unexpropriable
+unexpropriated
+unexpugnable
+unexpunged
+unexpurgated
+unexpurgatedly
+unexpurgatedness
+unextended
+unextendedly
+unextendedness
+unextendible
+unextensible
+unextenuable
+unextenuated
+unextenuating
+unexterminable
+unexterminated
+unexternal
+unexternality
+unexterritoriality
+unextinct
+unextinctness
+unextinguishable
+unextinguishableness
+unextinguishably
+unextinguished
+unextirpated
+unextolled
+unextortable
+unextorted
+unextractable
+unextracted
+unextradited
+unextraneous
+unextraordinary
+unextravagance
+unextravagant
+unextravagating
+unextravasated
+unextreme
+unextricable
+unextricated
+unextrinsic
+unextruded
+unexuberant
+unexuded
+unexultant
+uneye
+uneyeable
+uneyed
+unfabled
+unfabling
+unfabricated
+unfabulous
+unfacaded
+unface
+unfaceable
+unfaced
+unfaceted
+unfacetious
+unfacile
+unfacilitated
+unfact
+unfactional
+unfactious
+unfactitious
+unfactorable
+unfactored
+unfactual
+unfadable
+unfaded
+unfading
+unfadingly
+unfadingness
+unfagged
+unfagoted
+unfailable
+unfailableness
+unfailably
+unfailed
+unfailing
+unfailingly
+unfailingness
+unfain
+unfaint
+unfainting
+unfaintly
+unfair
+unfairly
+unfairminded
+unfairness
+unfairylike
+unfaith
+unfaithful
+unfaithfully
+unfaithfulness
+unfaked
+unfallacious
+unfallaciously
+unfallen
+unfallenness
+unfallible
+unfallibleness
+unfallibly
+unfalling
+unfallowed
+unfalse
+unfalsifiable
+unfalsified
+unfalsifiedness
+unfalsity
+unfaltering
+unfalteringly
+unfamed
+unfamiliar
+unfamiliarity
+unfamiliarized
+unfamiliarly
+unfanatical
+unfanciable
+unfancied
+unfanciful
+unfancy
+unfanged
+unfanned
+unfantastic
+unfantastical
+unfantastically
+unfar
+unfarced
+unfarcical
+unfarewelled
+unfarmed
+unfarming
+unfarrowed
+unfarsighted
+unfasciated
+unfascinate
+unfascinated
+unfascinating
+unfashion
+unfashionable
+unfashionableness
+unfashionably
+unfashioned
+unfast
+unfasten
+unfastenable
+unfastened
+unfastener
+unfastidious
+unfastidiously
+unfastidiousness
+unfasting
+unfather
+unfathered
+unfatherlike
+unfatherliness
+unfatherly
+unfathomability
+unfathomable
+unfathomableness
+unfathomably
+unfathomed
+unfatigue
+unfatigueable
+unfatigued
+unfatiguing
+unfattable
+unfatted
+unfatten
+unfauceted
+unfaultfinding
+unfaulty
+unfavorable
+unfavorableness
+unfavorably
+unfavored
+unfavoring
+unfavorite
+unfawning
+unfealty
+unfeared
+unfearful
+unfearfully
+unfearing
+unfearingly
+unfeary
+unfeasable
+unfeasableness
+unfeasably
+unfeasibility
+unfeasible
+unfeasibleness
+unfeasibly
+unfeasted
+unfeather
+unfeathered
+unfeatured
+unfecund
+unfecundated
+unfed
+unfederal
+unfederated
+unfeeble
+unfeed
+unfeedable
+unfeeding
+unfeeing
+unfeelable
+unfeeling
+unfeelingly
+unfeelingness
+unfeignable
+unfeignableness
+unfeignably
+unfeigned
+unfeignedly
+unfeignedness
+unfeigning
+unfeigningly
+unfeigningness
+unfele
+unfelicitated
+unfelicitating
+unfelicitous
+unfelicitously
+unfelicitousness
+unfeline
+unfellable
+unfelled
+unfellied
+unfellow
+unfellowed
+unfellowlike
+unfellowly
+unfellowshiped
+unfelon
+unfelonious
+unfeloniously
+unfelony
+unfelt
+unfelted
+unfemale
+unfeminine
+unfemininely
+unfeminineness
+unfemininity
+unfeminist
+unfeminize
+unfence
+unfenced
+unfendered
+unfenestrated
+unfeoffed
+unfermentable
+unfermentableness
+unfermentably
+unfermented
+unfermenting
+unfernlike
+unferocious
+unferreted
+unferried
+unfertile
+unfertileness
+unfertility
+unfertilizable
+unfertilized
+unfervent
+unfervid
+unfester
+unfestered
+unfestival
+unfestive
+unfestively
+unfestooned
+unfetchable
+unfetched
+unfeted
+unfetter
+unfettered
+unfettled
+unfeudal
+unfeudalize
+unfeudalized
+unfeued
+unfevered
+unfeverish
+unfew
+unfibbed
+unfibbing
+unfiber
+unfibered
+unfibrous
+unfickle
+unfictitious
+unfidelity
+unfidgeting
+unfielded
+unfiend
+unfiendlike
+unfierce
+unfiery
+unfight
+unfightable
+unfighting
+unfigurable
+unfigurative
+unfigured
+unfilamentous
+unfilched
+unfile
+unfiled
+unfilial
+unfilially
+unfilialness
+unfill
+unfillable
+unfilled
+unfilleted
+unfilling
+unfilm
+unfilmed
+unfiltered
+unfiltrated
+unfinable
+unfinancial
+unfine
+unfined
+unfinessed
+unfingered
+unfinical
+unfinish
+unfinishable
+unfinished
+unfinishedly
+unfinishedness
+unfinite
+unfired
+unfireproof
+unfiring
+unfirm
+unfirmamented
+unfirmly
+unfirmness
+unfiscal
+unfishable
+unfished
+unfishing
+unfishlike
+unfissile
+unfistulous
+unfit
+unfitly
+unfitness
+unfittable
+unfitted
+unfittedness
+unfitten
+unfitting
+unfittingly
+unfittingness
+unfitty
+unfix
+unfixable
+unfixated
+unfixed
+unfixedness
+unfixing
+unfixity
+unflag
+unflagged
+unflagging
+unflaggingly
+unflaggingness
+unflagitious
+unflagrant
+unflaky
+unflamboyant
+unflaming
+unflanged
+unflank
+unflanked
+unflapping
+unflashing
+unflat
+unflated
+unflattened
+unflatterable
+unflattered
+unflattering
+unflatteringly
+unflaunted
+unflavored
+unflawed
+unflayed
+unflead
+unflecked
+unfledge
+unfledged
+unfledgedness
+unfleece
+unfleeced
+unfleeing
+unfleeting
+unflesh
+unfleshed
+unfleshliness
+unfleshly
+unfleshy
+unfletched
+unflexed
+unflexible
+unflexibleness
+unflexibly
+unflickering
+unflickeringly
+unflighty
+unflinching
+unflinchingly
+unflinchingness
+unflintify
+unflippant
+unflirtatious
+unflitched
+unfloatable
+unfloating
+unflock
+unfloggable
+unflogged
+unflooded
+unfloor
+unfloored
+unflorid
+unflossy
+unflounced
+unfloured
+unflourished
+unflourishing
+unflouted
+unflower
+unflowered
+unflowing
+unflown
+unfluctuating
+unfluent
+unfluid
+unfluked
+unflunked
+unfluorescent
+unflurried
+unflush
+unflushed
+unflustered
+unfluted
+unflutterable
+unfluttered
+unfluttering
+unfluvial
+unfluxile
+unflying
+unfoaled
+unfoaming
+unfocused
+unfoggy
+unfoilable
+unfoiled
+unfoisted
+unfold
+unfoldable
+unfolded
+unfolder
+unfolding
+unfoldment
+unfoldure
+unfoliaged
+unfoliated
+unfollowable
+unfollowed
+unfollowing
+unfomented
+unfond
+unfondled
+unfondness
+unfoodful
+unfool
+unfoolable
+unfooled
+unfooling
+unfoolish
+unfooted
+unfootsore
+unfoppish
+unforaged
+unforbade
+unforbearance
+unforbearing
+unforbid
+unforbidden
+unforbiddenly
+unforbiddenness
+unforbidding
+unforceable
+unforced
+unforcedly
+unforcedness
+unforceful
+unforcible
+unforcibleness
+unforcibly
+unfordable
+unfordableness
+unforded
+unforeboded
+unforeboding
+unforecasted
+unforegone
+unforeign
+unforeknowable
+unforeknown
+unforensic
+unforeordained
+unforesee
+unforeseeable
+unforeseeableness
+unforeseeably
+unforeseeing
+unforeseeingly
+unforeseen
+unforeseenly
+unforeseenness
+unforeshortened
+unforest
+unforestallable
+unforestalled
+unforested
+unforetellable
+unforethought
+unforethoughtful
+unforetold
+unforewarned
+unforewarnedness
+unforfeit
+unforfeitable
+unforfeited
+unforgeability
+unforgeable
+unforged
+unforget
+unforgetful
+unforgettable
+unforgettableness
+unforgettably
+unforgetting
+unforgettingly
+unforgivable
+unforgivableness
+unforgivably
+unforgiven
+unforgiveness
+unforgiver
+unforgiving
+unforgivingly
+unforgivingness
+unforgone
+unforgot
+unforgotten
+unfork
+unforked
+unforkedness
+unforlorn
+unform
+unformal
+unformality
+unformalized
+unformally
+unformalness
+unformative
+unformed
+unformidable
+unformulable
+unformularizable
+unformularize
+unformulated
+unformulistic
+unforsaken
+unforsaking
+unforsook
+unforsworn
+unforthright
+unfortifiable
+unfortified
+unfortify
+unfortuitous
+unfortunate
+unfortunately
+unfortunateness
+unfortune
+unforward
+unforwarded
+unfossiliferous
+unfossilized
+unfostered
+unfought
+unfoughten
+unfoul
+unfoulable
+unfouled
+unfound
+unfounded
+unfoundedly
+unfoundedness
+unfoundered
+unfountained
+unfowllike
+unfoxy
+unfractured
+unfragrance
+unfragrant
+unfragrantly
+unfrail
+unframable
+unframableness
+unframably
+unframe
+unframed
+unfranchised
+unfrank
+unfrankable
+unfranked
+unfrankly
+unfrankness
+unfraternal
+unfraternizing
+unfraudulent
+unfraught
+unfrayed
+unfreckled
+unfree
+unfreed
+unfreedom
+unfreehold
+unfreely
+unfreeman
+unfreeness
+unfreezable
+unfreeze
+unfreezing
+unfreighted
+unfrenchified
+unfrenzied
+unfrequency
+unfrequent
+unfrequented
+unfrequentedness
+unfrequently
+unfrequentness
+unfret
+unfretful
+unfretting
+unfriable
+unfriarlike
+unfricative
+unfrictioned
+unfried
+unfriend
+unfriended
+unfriendedness
+unfriending
+unfriendlike
+unfriendlily
+unfriendliness
+unfriendly
+unfriendship
+unfrighted
+unfrightenable
+unfrightened
+unfrightenedness
+unfrightful
+unfrigid
+unfrill
+unfrilled
+unfringe
+unfringed
+unfrisky
+unfrivolous
+unfrizz
+unfrizzled
+unfrizzy
+unfrock
+unfrocked
+unfroglike
+unfrolicsome
+unfronted
+unfrost
+unfrosted
+unfrosty
+unfrounced
+unfroward
+unfrowardly
+unfrowning
+unfroze
+unfrozen
+unfructed
+unfructified
+unfructify
+unfructuous
+unfructuously
+unfrugal
+unfrugally
+unfrugalness
+unfruitful
+unfruitfully
+unfruitfulness
+unfruity
+unfrustrable
+unfrustrably
+unfrustratable
+unfrustrated
+unfrutuosity
+unfuddled
+unfueled
+unfulfill
+unfulfillable
+unfulfilled
+unfulfilling
+unfulfillment
+unfull
+unfulled
+unfully
+unfulminated
+unfulsome
+unfumbled
+unfumbling
+unfumed
+unfumigated
+unfunctional
+unfundamental
+unfunded
+unfunnily
+unfunniness
+unfunny
+unfur
+unfurbelowed
+unfurbished
+unfurcate
+unfurious
+unfurl
+unfurlable
+unfurnish
+unfurnished
+unfurnishedness
+unfurnitured
+unfurred
+unfurrow
+unfurrowable
+unfurrowed
+unfurthersome
+unfused
+unfusible
+unfusibleness
+unfusibly
+unfussed
+unfussing
+unfussy
+unfutile
+unfuturistic
+ungabled
+ungag
+ungaged
+ungagged
+ungain
+ungainable
+ungained
+ungainful
+ungainfully
+ungainfulness
+ungaining
+ungainlike
+ungainliness
+ungainly
+ungainness
+ungainsaid
+ungainsayable
+ungainsayably
+ungainsaying
+ungainsome
+ungainsomely
+ungaite
+ungallant
+ungallantly
+ungallantness
+ungalling
+ungalvanized
+ungamboling
+ungamelike
+unganged
+ungangrened
+ungarbed
+ungarbled
+ungardened
+ungargled
+ungarland
+ungarlanded
+ungarment
+ungarmented
+ungarnered
+ungarnish
+ungarnished
+ungaro
+ungarrisoned
+ungarter
+ungartered
+ungashed
+ungassed
+ungastric
+ungathered
+ungaudy
+ungauged
+ungauntlet
+ungauntleted
+ungazetted
+ungazing
+ungear
+ungeared
+ungelatinizable
+ungelatinized
+ungelded
+ungelt
+ungeminated
+ungenerable
+ungeneral
+ungeneraled
+ungeneralized
+ungenerate
+ungenerated
+ungenerative
+ungeneric
+ungenerical
+ungenerosity
+ungenerous
+ungenerously
+ungenerousness
+ungenial
+ungeniality
+ungenially
+ungenialness
+ungenitured
+ungenius
+ungenteel
+ungenteelly
+ungenteelness
+ungentile
+ungentility
+ungentilize
+ungentle
+ungentled
+ungentleman
+ungentlemanize
+ungentlemanlike
+ungentlemanlikeness
+ungentlemanliness
+ungentlemanly
+ungentleness
+ungentlewomanlike
+ungently
+ungenuine
+ungenuinely
+ungenuineness
+ungeodetical
+ungeographic
+ungeographical
+ungeographically
+ungeological
+ungeometric
+ungeometrical
+ungeometrically
+ungeometricalness
+ungerminated
+ungerminating
+ungermlike
+ungerontic
+ungesting
+ungesturing
+unget
+ungettable
+unghostlike
+unghostly
+ungiant
+ungibbet
+ungiddy
+ungifted
+ungiftedness
+ungild
+ungilded
+ungill
+ungilt
+ungingled
+unginned
+ungird
+ungirded
+ungirdle
+ungirdled
+ungirlish
+ungirt
+ungirth
+ungirthed
+ungive
+ungiveable
+ungiven
+ungiving
+ungka
+unglaciated
+unglad
+ungladden
+ungladdened
+ungladly
+ungladness
+ungladsome
+unglamorous
+unglandular
+unglassed
+unglaze
+unglazed
+ungleaned
+unglee
+ungleeful
+unglimpsed
+unglistening
+unglittering
+ungloating
+unglobe
+unglobular
+ungloom
+ungloomed
+ungloomy
+unglorified
+unglorify
+unglorifying
+unglorious
+ungloriously
+ungloriousness
+unglory
+unglosed
+ungloss
+unglossaried
+unglossed
+unglossily
+unglossiness
+unglossy
+unglove
+ungloved
+unglowing
+unglozed
+unglue
+unglued
+unglutinate
+unglutted
+ungluttonous
+ungnarred
+ungnaw
+ungnawn
+ungnostic
+ungoaded
+ungoatlike
+ungod
+ungoddess
+ungodlike
+ungodlily
+ungodliness
+ungodly
+ungodmothered
+ungold
+ungolden
+ungone
+ungood
+ungoodliness
+ungoodly
+ungored
+ungorge
+ungorged
+ungorgeous
+ungospel
+ungospelized
+ungospelled
+ungospellike
+ungossiping
+ungot
+ungothic
+ungotten
+ungouged
+ungouty
+ungovernable
+ungovernableness
+ungovernably
+ungoverned
+ungovernedness
+ungoverning
+ungown
+ungowned
+ungrace
+ungraced
+ungraceful
+ungracefully
+ungracefulness
+ungracious
+ungraciously
+ungraciousness
+ungradated
+ungraded
+ungradual
+ungradually
+ungraduated
+ungraduating
+ungraft
+ungrafted
+ungrain
+ungrainable
+ungrained
+ungrammar
+ungrammared
+ungrammatic
+ungrammatical
+ungrammatically
+ungrammaticalness
+ungrammaticism
+ungrand
+ungrantable
+ungranted
+ungranulated
+ungraphic
+ungraphitized
+ungrapple
+ungrappled
+ungrappler
+ungrasp
+ungraspable
+ungrasped
+ungrasping
+ungrassed
+ungrassy
+ungrated
+ungrateful
+ungratefully
+ungratefulness
+ungratifiable
+ungratified
+ungratifying
+ungrating
+ungrave
+ungraved
+ungraveled
+ungravelly
+ungravely
+ungraven
+ungrayed
+ungrazed
+ungreased
+ungreat
+ungreatly
+ungreatness
+ungreeable
+ungreedy
+ungreen
+ungreenable
+ungreened
+ungreeted
+ungregarious
+ungrieve
+ungrieved
+ungrieving
+ungrilled
+ungrimed
+ungrindable
+ungrip
+ungripe
+ungrizzled
+ungroaning
+ungroined
+ungroomed
+ungrooved
+ungropeable
+ungross
+ungrotesque
+unground
+ungroundable
+ungroundably
+ungrounded
+ungroundedly
+ungroundedness
+ungroupable
+ungrouped
+ungrow
+ungrowing
+ungrown
+ungrubbed
+ungrudged
+ungrudging
+ungrudgingly
+ungrudgingness
+ungruesome
+ungruff
+ungrumbling
+ungual
+unguaranteed
+unguard
+unguardable
+unguarded
+unguardedly
+unguardedness
+ungueal
+unguent
+unguentaria
+unguentarium
+unguentary
+unguentiferous
+unguentous
+unguentum
+unguerdoned
+ungues
+unguessable
+unguessableness
+unguessed
+unguical
+unguicorn
+unguicular
+Unguiculata
+unguiculate
+unguiculated
+unguidable
+unguidableness
+unguidably
+unguided
+unguidedly
+unguiferous
+unguiform
+unguiled
+unguileful
+unguilefully
+unguilefulness
+unguillotined
+unguiltily
+unguiltiness
+unguilty
+unguinal
+unguinous
+unguirostral
+unguis
+ungula
+ungulae
+ungular
+Ungulata
+ungulate
+ungulated
+unguled
+unguligrade
+ungull
+ungulous
+ungulp
+ungum
+ungummed
+ungushing
+ungutted
+unguttural
+unguyed
+unguzzled
+ungymnastic
+ungypsylike
+ungyve
+ungyved
+unhabit
+unhabitable
+unhabitableness
+unhabited
+unhabitual
+unhabitually
+unhabituate
+unhabituated
+unhacked
+unhackled
+unhackneyed
+unhackneyedness
+unhad
+unhaft
+unhafted
+unhaggled
+unhaggling
+unhailable
+unhailed
+unhair
+unhaired
+unhairer
+unhairily
+unhairiness
+unhairing
+unhairy
+unhallooed
+unhallow
+unhallowed
+unhallowedness
+unhaloed
+unhalsed
+unhalted
+unhalter
+unhaltered
+unhalting
+unhalved
+unhammered
+unhamper
+unhampered
+unhand
+unhandcuff
+unhandcuffed
+unhandicapped
+unhandily
+unhandiness
+unhandled
+unhandseled
+unhandsome
+unhandsomely
+unhandsomeness
+unhandy
+unhang
+unhanged
+unhap
+unhappen
+unhappily
+unhappiness
+unhappy
+unharangued
+unharassed
+unharbor
+unharbored
+unhard
+unharden
+unhardenable
+unhardened
+unhardihood
+unhardily
+unhardiness
+unhardness
+unhardy
+unharked
+unharmable
+unharmed
+unharmful
+unharmfully
+unharming
+unharmonic
+unharmonical
+unharmonious
+unharmoniously
+unharmoniousness
+unharmonize
+unharmonized
+unharmony
+unharness
+unharnessed
+unharped
+unharried
+unharrowed
+unharsh
+unharvested
+unhashed
+unhasp
+unhasped
+unhaste
+unhasted
+unhastened
+unhastily
+unhastiness
+unhasting
+unhasty
+unhat
+unhatchability
+unhatchable
+unhatched
+unhatcheled
+unhate
+unhated
+unhateful
+unhating
+unhatingly
+unhatted
+unhauled
+unhaunt
+unhaunted
+unhave
+unhawked
+unhayed
+unhazarded
+unhazarding
+unhazardous
+unhazardousness
+unhazed
+unhead
+unheaded
+unheader
+unheady
+unheal
+unhealable
+unhealableness
+unhealably
+unhealed
+unhealing
+unhealth
+unhealthful
+unhealthfully
+unhealthfulness
+unhealthily
+unhealthiness
+unhealthsome
+unhealthsomeness
+unhealthy
+unheaped
+unhearable
+unheard
+unhearing
+unhearsed
+unheart
+unhearten
+unheartsome
+unhearty
+unheatable
+unheated
+unheathen
+unheaved
+unheaven
+unheavenly
+unheavily
+unheaviness
+unheavy
+unhectored
+unhedge
+unhedged
+unheed
+unheeded
+unheededly
+unheedful
+unheedfully
+unheedfulness
+unheeding
+unheedingly
+unheedy
+unheeled
+unheelpieced
+unhefted
+unheightened
+unheired
+unheld
+unhele
+unheler
+unhelm
+unhelmed
+unhelmet
+unhelmeted
+unhelpable
+unhelpableness
+unhelped
+unhelpful
+unhelpfully
+unhelpfulness
+unhelping
+unhelved
+unhemmed
+unheppen
+unheralded
+unheraldic
+unherd
+unherded
+unhereditary
+unheretical
+unheritable
+unhermetic
+unhero
+unheroic
+unheroical
+unheroically
+unheroism
+unheroize
+unherolike
+unhesitant
+unhesitating
+unhesitatingly
+unhesitatingness
+unheuristic
+unhewable
+unhewed
+unhewn
+unhex
+unhid
+unhidable
+unhidableness
+unhidably
+unhidated
+unhidden
+unhide
+unhidebound
+unhideous
+unhieratic
+unhigh
+unhilarious
+unhinderable
+unhinderably
+unhindered
+unhindering
+unhinge
+unhingement
+unhinted
+unhipped
+unhired
+unhissed
+unhistoric
+unhistorical
+unhistorically
+unhistory
+unhistrionic
+unhit
+unhitch
+unhitched
+unhittable
+unhive
+unhoard
+unhoarded
+unhoarding
+unhoary
+unhoaxed
+unhobble
+unhocked
+unhoed
+unhogged
+unhoist
+unhoisted
+unhold
+unholiday
+unholily
+unholiness
+unhollow
+unhollowed
+unholy
+unhome
+unhomelike
+unhomelikeness
+unhomeliness
+unhomely
+unhomish
+unhomogeneity
+unhomogeneous
+unhomogeneously
+unhomologous
+unhoned
+unhonest
+unhonestly
+unhoneyed
+unhonied
+unhonorable
+unhonorably
+unhonored
+unhonoured
+unhood
+unhooded
+unhoodwink
+unhoodwinked
+unhoofed
+unhook
+unhooked
+unhoop
+unhooped
+unhooper
+unhooted
+unhoped
+unhopedly
+unhopedness
+unhopeful
+unhopefully
+unhopefulness
+unhoping
+unhopingly
+unhopped
+unhoppled
+unhorizoned
+unhorizontal
+unhorned
+unhorny
+unhoroscopic
+unhorse
+unhose
+unhosed
+unhospitable
+unhospitableness
+unhospitably
+unhostile
+unhostilely
+unhostileness
+unhostility
+unhot
+unhoundlike
+unhouse
+unhoused
+unhouseled
+unhouselike
+unhousewifely
+unhuddle
+unhugged
+unhull
+unhulled
+unhuman
+unhumanize
+unhumanized
+unhumanly
+unhumanness
+unhumble
+unhumbled
+unhumbledness
+unhumbleness
+unhumbly
+unhumbugged
+unhumid
+unhumiliated
+unhumored
+unhumorous
+unhumorously
+unhumorousness
+unhumoured
+unhung
+unhuntable
+unhunted
+unhurdled
+unhurled
+unhurried
+unhurriedly
+unhurriedness
+unhurrying
+unhurryingly
+unhurt
+unhurted
+unhurtful
+unhurtfully
+unhurtfulness
+unhurting
+unhusbanded
+unhusbandly
+unhushable
+unhushed
+unhushing
+unhusk
+unhusked
+unhustled
+unhustling
+unhutched
+unhuzzaed
+unhydraulic
+unhydrolyzed
+unhygienic
+unhygienically
+unhygrometric
+unhymeneal
+unhymned
+unhyphenated
+unhyphened
+unhypnotic
+unhypnotizable
+unhypnotize
+unhypocritical
+unhypocritically
+unhypothecated
+unhypothetical
+unhysterical
+uniambic
+uniambically
+uniangulate
+uniarticular
+uniarticulate
+Uniat
+uniat
+Uniate
+uniate
+uniauriculate
+uniauriculated
+uniaxal
+uniaxally
+uniaxial
+uniaxially
+unibasal
+unibivalent
+unible
+unibracteate
+unibracteolate
+unibranchiate
+unicalcarate
+unicameral
+unicameralism
+unicameralist
+unicamerate
+unicapsular
+unicarinate
+unicarinated
+unice
+uniced
+unicell
+unicellate
+unicelled
+unicellular
+unicellularity
+unicentral
+unichord
+uniciliate
+unicism
+unicist
+unicity
+uniclinal
+unicolor
+unicolorate
+unicolored
+unicolorous
+uniconstant
+unicorn
+unicorneal
+unicornic
+unicornlike
+unicornous
+unicornuted
+unicostate
+unicotyledonous
+unicum
+unicursal
+unicursality
+unicursally
+unicuspid
+unicuspidate
+unicycle
+unicyclist
+unidactyl
+unidactyle
+unidactylous
+unideaed
+unideal
+unidealism
+unidealist
+unidealistic
+unidealized
+unidentate
+unidentated
+unidenticulate
+unidentifiable
+unidentifiableness
+unidentifiably
+unidentified
+unidentifiedly
+unidentifying
+unideographic
+unidextral
+unidextrality
+unidigitate
+unidimensional
+unidiomatic
+unidiomatically
+unidirect
+unidirected
+unidirection
+unidirectional
+unidle
+unidleness
+unidly
+unidolatrous
+unidolized
+unidyllic
+unie
+uniembryonate
+uniequivalent
+uniface
+unifaced
+unifacial
+unifactorial
+unifarious
+unifiable
+unific
+unification
+unificationist
+unificator
+unified
+unifiedly
+unifiedness
+unifier
+unifilar
+uniflagellate
+unifloral
+uniflorate
+uniflorous
+uniflow
+uniflowered
+unifocal
+unifoliar
+unifoliate
+unifoliolate
+Unifolium
+uniform
+uniformal
+uniformalization
+uniformalize
+uniformally
+uniformation
+uniformed
+uniformist
+uniformitarian
+uniformitarianism
+uniformity
+uniformization
+uniformize
+uniformless
+uniformly
+uniformness
+unify
+unigenesis
+unigenetic
+unigenist
+unigenistic
+unigenital
+unigeniture
+unigenous
+uniglandular
+uniglobular
+unignitable
+unignited
+unignitible
+unignominious
+unignorant
+unignored
+unigravida
+uniguttulate
+unijugate
+unijugous
+unilabiate
+unilabiated
+unilamellar
+unilamellate
+unilaminar
+unilaminate
+unilateral
+unilateralism
+unilateralist
+unilaterality
+unilateralization
+unilateralize
+unilaterally
+unilinear
+unilingual
+unilingualism
+uniliteral
+unilludedly
+unillumed
+unilluminated
+unilluminating
+unillumination
+unillumined
+unillusioned
+unillusory
+unillustrated
+unillustrative
+unillustrious
+unilobal
+unilobar
+unilobate
+unilobe
+unilobed
+unilobular
+unilocular
+unilocularity
+uniloculate
+unimacular
+unimaged
+unimaginable
+unimaginableness
+unimaginably
+unimaginary
+unimaginative
+unimaginatively
+unimaginativeness
+unimagine
+unimagined
+unimanual
+unimbanked
+unimbellished
+unimbezzled
+unimbibed
+unimbibing
+unimbittered
+unimbodied
+unimboldened
+unimbordered
+unimbosomed
+unimbowed
+unimbowered
+unimbroiled
+unimbrowned
+unimbrued
+unimbued
+unimedial
+unimitable
+unimitableness
+unimitably
+unimitated
+unimitating
+unimitative
+unimmaculate
+unimmanent
+unimmediate
+unimmerged
+unimmergible
+unimmersed
+unimmigrating
+unimmolated
+unimmortal
+unimmortalize
+unimmortalized
+unimmovable
+unimmured
+unimodal
+unimodality
+unimodular
+unimolecular
+unimolecularity
+unimpair
+unimpairable
+unimpaired
+unimpartable
+unimparted
+unimpartial
+unimpassionate
+unimpassioned
+unimpassionedly
+unimpassionedness
+unimpatient
+unimpawned
+unimpeachability
+unimpeachable
+unimpeachableness
+unimpeachably
+unimpeached
+unimpearled
+unimped
+unimpeded
+unimpededly
+unimpedible
+unimpedness
+unimpelled
+unimpenetrable
+unimperative
+unimperial
+unimperialistic
+unimperious
+unimpertinent
+unimpinging
+unimplanted
+unimplicable
+unimplicate
+unimplicated
+unimplicit
+unimplicitly
+unimplied
+unimplorable
+unimplored
+unimpoisoned
+unimportance
+unimportant
+unimportantly
+unimported
+unimporting
+unimportunate
+unimportunately
+unimportuned
+unimposed
+unimposedly
+unimposing
+unimpostrous
+unimpounded
+unimpoverished
+unimpowered
+unimprecated
+unimpregnable
+unimpregnate
+unimpregnated
+unimpressed
+unimpressibility
+unimpressible
+unimpressibleness
+unimpressibly
+unimpressionability
+unimpressionable
+unimpressive
+unimpressively
+unimpressiveness
+unimprinted
+unimprison
+unimprisonable
+unimprisoned
+unimpropriated
+unimprovable
+unimprovableness
+unimprovably
+unimproved
+unimprovedly
+unimprovedness
+unimprovement
+unimproving
+unimprovised
+unimpugnable
+unimpugned
+unimpulsive
+unimpurpled
+unimputable
+unimputed
+unimucronate
+unimultiplex
+unimuscular
+uninaugurated
+unincantoned
+unincarcerated
+unincarnate
+unincarnated
+unincensed
+uninchoative
+unincidental
+unincised
+unincisive
+unincited
+uninclinable
+uninclined
+uninclining
+uninclosed
+uninclosedness
+unincludable
+unincluded
+uninclusive
+uninclusiveness
+uninconvenienced
+unincorporate
+unincorporated
+unincorporatedly
+unincorporatedness
+unincreasable
+unincreased
+unincreasing
+unincubated
+uninculcated
+unincumbered
+unindebted
+unindebtedly
+unindebtedness
+unindemnified
+unindentable
+unindented
+unindentured
+unindexed
+unindicable
+unindicated
+unindicative
+unindictable
+unindicted
+unindifference
+unindifferency
+unindifferent
+unindifferently
+unindigent
+unindignant
+unindividual
+unindividualize
+unindividualized
+unindividuated
+unindorsed
+uninduced
+uninductive
+unindulged
+unindulgent
+unindulgently
+unindurated
+unindustrial
+unindustrialized
+unindustrious
+unindustriously
+unindwellable
+uninebriated
+uninebriating
+uninervate
+uninerved
+uninfallibility
+uninfallible
+uninfatuated
+uninfectable
+uninfected
+uninfectious
+uninfectiousness
+uninfeft
+uninferred
+uninfested
+uninfiltrated
+uninfinite
+uninfiniteness
+uninfixed
+uninflamed
+uninflammability
+uninflammable
+uninflated
+uninflected
+uninflectedness
+uninflicted
+uninfluenceable
+uninfluenced
+uninfluencing
+uninfluencive
+uninfluential
+uninfluentiality
+uninfolded
+uninformed
+uninforming
+uninfracted
+uninfringeable
+uninfringed
+uninfringible
+uninfuriated
+uninfused
+uningenious
+uningeniously
+uningeniousness
+uningenuity
+uningenuous
+uningenuously
+uningenuousness
+uningested
+uningrafted
+uningrained
+uninhabitability
+uninhabitable
+uninhabitableness
+uninhabitably
+uninhabited
+uninhabitedness
+uninhaled
+uninheritability
+uninheritable
+uninherited
+uninhibited
+uninhibitive
+uninhumed
+uninimical
+uniniquitous
+uninitialed
+uninitialled
+uninitiate
+uninitiated
+uninitiatedness
+uninitiation
+uninjectable
+uninjected
+uninjurable
+uninjured
+uninjuredness
+uninjuring
+uninjurious
+uninjuriously
+uninjuriousness
+uninked
+uninlaid
+uninn
+uninnate
+uninnocence
+uninnocent
+uninnocently
+uninnocuous
+uninnovating
+uninoculable
+uninoculated
+uninodal
+uninominal
+uninquired
+uninquiring
+uninquisitive
+uninquisitively
+uninquisitiveness
+uninquisitorial
+uninsane
+uninsatiable
+uninscribed
+uninserted
+uninshrined
+uninsinuated
+uninsistent
+uninsolvent
+uninspected
+uninspirable
+uninspired
+uninspiring
+uninspiringly
+uninspirited
+uninspissated
+uninstalled
+uninstanced
+uninstated
+uninstigated
+uninstilled
+uninstituted
+uninstructed
+uninstructedly
+uninstructedness
+uninstructible
+uninstructing
+uninstructive
+uninstructively
+uninstructiveness
+uninstrumental
+uninsular
+uninsulate
+uninsulated
+uninsultable
+uninsulted
+uninsulting
+uninsurability
+uninsurable
+uninsured
+unintegrated
+unintellective
+unintellectual
+unintellectualism
+unintellectuality
+unintellectually
+unintelligence
+unintelligent
+unintelligently
+unintelligentsia
+unintelligibility
+unintelligible
+unintelligibleness
+unintelligibly
+unintended
+unintendedly
+unintensive
+unintent
+unintentional
+unintentionality
+unintentionally
+unintentionalness
+unintently
+unintentness
+unintercalated
+unintercepted
+uninterchangeable
+uninterdicted
+uninterested
+uninterestedly
+uninterestedness
+uninteresting
+uninterestingly
+uninterestingness
+uninterferedwith
+uninterjected
+uninterlaced
+uninterlarded
+uninterleave
+uninterleaved
+uninterlined
+uninterlinked
+uninterlocked
+unintermarrying
+unintermediate
+unintermingled
+unintermission
+unintermissive
+unintermitted
+unintermittedly
+unintermittedness
+unintermittent
+unintermitting
+unintermittingly
+unintermittingness
+unintermixed
+uninternational
+uninterpleaded
+uninterpolated
+uninterposed
+uninterposing
+uninterpretable
+uninterpreted
+uninterred
+uninterrogable
+uninterrogated
+uninterrupted
+uninterruptedly
+uninterruptedness
+uninterruptible
+uninterruptibleness
+uninterrupting
+uninterruption
+unintersected
+uninterspersed
+unintervening
+uninterviewed
+unintervolved
+uninterwoven
+uninthroned
+unintimate
+unintimated
+unintimidated
+unintitled
+unintombed
+unintoned
+unintoxicated
+unintoxicatedness
+unintoxicating
+unintrenchable
+unintrenched
+unintricate
+unintrigued
+unintriguing
+unintroduced
+unintroducible
+unintroitive
+unintromitted
+unintrospective
+unintruded
+unintruding
+unintrusive
+unintrusively
+unintrusted
+unintuitive
+unintwined
+uninuclear
+uninucleate
+uninucleated
+uninundated
+uninured
+uninurned
+uninvadable
+uninvaded
+uninvaginated
+uninvalidated
+uninveighing
+uninveigled
+uninvented
+uninventful
+uninventibleness
+uninventive
+uninventively
+uninventiveness
+uninverted
+uninvested
+uninvestigable
+uninvestigated
+uninvestigating
+uninvestigative
+uninvidious
+uninvidiously
+uninvigorated
+uninvincible
+uninvite
+uninvited
+uninvitedly
+uninviting
+uninvoiced
+uninvoked
+uninvolved
+uninweaved
+uninwoven
+uninwrapped
+uninwreathed
+Unio
+unio
+uniocular
+unioid
+Uniola
+union
+unioned
+unionic
+unionid
+Unionidae
+unioniform
+unionism
+unionist
+unionistic
+unionization
+unionize
+unionoid
+unioval
+uniovular
+uniovulate
+unipara
+uniparental
+uniparient
+uniparous
+unipartite
+uniped
+unipeltate
+uniperiodic
+unipersonal
+unipersonalist
+unipersonality
+unipetalous
+uniphase
+uniphaser
+uniphonous
+uniplanar
+uniplicate
+unipod
+unipolar
+unipolarity
+uniporous
+unipotence
+unipotent
+unipotential
+unipulse
+uniquantic
+unique
+uniquely
+uniqueness
+uniquity
+uniradial
+uniradiate
+uniradiated
+uniradical
+uniramose
+uniramous
+unirascible
+unireme
+unirenic
+unirhyme
+uniridescent
+unironed
+unironical
+unirradiated
+unirrigated
+unirritable
+unirritant
+unirritated
+unirritatedly
+unirritating
+unisepalous
+uniseptate
+uniserial
+uniserially
+uniseriate
+uniseriately
+uniserrate
+uniserrulate
+unisexed
+unisexual
+unisexuality
+unisexually
+unisilicate
+unisoil
+unisolable
+unisolate
+unisolated
+unisomeric
+unisometrical
+unisomorphic
+unison
+unisonal
+unisonally
+unisonance
+unisonant
+unisonous
+unisotropic
+unisparker
+unispiculate
+unispinose
+unispiral
+unissuable
+unissued
+unistylist
+unisulcate
+unit
+unitage
+unital
+unitalicized
+Unitarian
+unitarian
+Unitarianism
+Unitarianize
+unitarily
+unitariness
+unitarism
+unitarist
+unitary
+unite
+uniteability
+uniteable
+uniteably
+united
+unitedly
+unitedness
+unitemized
+unitentacular
+uniter
+uniting
+unitingly
+unition
+unitism
+unitistic
+unitive
+unitively
+unitiveness
+unitize
+unitooth
+unitrivalent
+unitrope
+unituberculate
+unitude
+unity
+uniunguiculate
+uniungulate
+univalence
+univalency
+univalent
+univalvate
+univalve
+univalvular
+univariant
+univerbal
+universal
+universalia
+Universalian
+Universalism
+universalism
+Universalist
+universalist
+Universalistic
+universalistic
+universality
+universalization
+universalize
+universalizer
+universally
+universalness
+universanimous
+universe
+universeful
+universitarian
+universitarianism
+universitary
+universitize
+university
+universityless
+universitylike
+universityship
+universological
+universologist
+universology
+univied
+univocability
+univocacy
+univocal
+univocalized
+univocally
+univocity
+univoltine
+univorous
+unjacketed
+unjaded
+unjagged
+unjailed
+unjam
+unjapanned
+unjarred
+unjarring
+unjaundiced
+unjaunty
+unjealous
+unjealoused
+unjellied
+unjesting
+unjesuited
+unjesuitical
+unjesuitically
+unjewel
+unjeweled
+unjewelled
+Unjewish
+unjilted
+unjocose
+unjocund
+unjogged
+unjogging
+unjoin
+unjoinable
+unjoint
+unjointed
+unjointedness
+unjointured
+unjoking
+unjokingly
+unjolly
+unjolted
+unjostled
+unjournalized
+unjovial
+unjovially
+unjoyed
+unjoyful
+unjoyfully
+unjoyfulness
+unjoyous
+unjoyously
+unjoyousness
+unjudgable
+unjudge
+unjudged
+unjudgelike
+unjudging
+unjudicable
+unjudicial
+unjudicially
+unjudicious
+unjudiciously
+unjudiciousness
+unjuggled
+unjuiced
+unjuicy
+unjumbled
+unjumpable
+unjust
+unjustice
+unjusticiable
+unjustifiable
+unjustifiableness
+unjustifiably
+unjustified
+unjustifiedly
+unjustifiedness
+unjustify
+unjustled
+unjustly
+unjustness
+unjuvenile
+unkaiserlike
+unkamed
+unked
+unkeeled
+unkembed
+unkempt
+unkemptly
+unkemptness
+unken
+unkenned
+unkennedness
+unkennel
+unkenneled
+unkenning
+unkensome
+unkept
+unkerchiefed
+unket
+unkey
+unkeyed
+unkicked
+unkid
+unkill
+unkillability
+unkillable
+unkilled
+unkilling
+unkilned
+unkin
+unkind
+unkindhearted
+unkindled
+unkindledness
+unkindlily
+unkindliness
+unkindling
+unkindly
+unkindness
+unkindred
+unkindredly
+unking
+unkingdom
+unkinged
+unkinger
+unkinglike
+unkingly
+unkink
+unkinlike
+unkirk
+unkiss
+unkissed
+unkist
+unknave
+unkneaded
+unkneeling
+unknelled
+unknew
+unknight
+unknighted
+unknightlike
+unknit
+unknittable
+unknitted
+unknitting
+unknocked
+unknocking
+unknot
+unknotted
+unknotty
+unknow
+unknowability
+unknowable
+unknowableness
+unknowably
+unknowing
+unknowingly
+unknowingness
+unknowledgeable
+unknown
+unknownly
+unknownness
+unknownst
+unkodaked
+unkoshered
+unlabeled
+unlabialize
+unlabiate
+unlaborable
+unlabored
+unlaboring
+unlaborious
+unlaboriously
+unlaboriousness
+unlace
+unlaced
+unlacerated
+unlackeyed
+unlacquered
+unlade
+unladen
+unladled
+unladyfied
+unladylike
+unlagging
+unlaid
+unlame
+unlamed
+unlamented
+unlampooned
+unlanced
+unland
+unlanded
+unlandmarked
+unlanguaged
+unlanguid
+unlanguishing
+unlanterned
+unlap
+unlapped
+unlapsed
+unlapsing
+unlarded
+unlarge
+unlash
+unlashed
+unlasher
+unlassoed
+unlasting
+unlatch
+unlath
+unlathed
+unlathered
+unlatinized
+unlatticed
+unlaudable
+unlaudableness
+unlaudably
+unlauded
+unlaugh
+unlaughing
+unlaunched
+unlaundered
+unlaureled
+unlaved
+unlaving
+unlavish
+unlavished
+unlaw
+unlawed
+unlawful
+unlawfully
+unlawfulness
+unlawlearned
+unlawlike
+unlawly
+unlawyered
+unlawyerlike
+unlay
+unlayable
+unleached
+unlead
+unleaded
+unleaderly
+unleaf
+unleafed
+unleagued
+unleaguer
+unleakable
+unleaky
+unleal
+unlean
+unleared
+unlearn
+unlearnability
+unlearnable
+unlearnableness
+unlearned
+unlearnedly
+unlearnedness
+unlearning
+unlearnt
+unleasable
+unleased
+unleash
+unleashed
+unleathered
+unleave
+unleaved
+unleavenable
+unleavened
+unlectured
+unled
+unleft
+unlegacied
+unlegal
+unlegalized
+unlegally
+unlegalness
+unlegate
+unlegislative
+unleisured
+unleisuredness
+unleisurely
+unlenient
+unlensed
+unlent
+unless
+unlessened
+unlessoned
+unlet
+unlettable
+unletted
+unlettered
+unletteredly
+unletteredness
+unlettering
+unletterlike
+unlevel
+unleveled
+unlevelly
+unlevelness
+unlevied
+unlevigated
+unlexicographical
+unliability
+unliable
+unlibeled
+unliberal
+unliberalized
+unliberated
+unlibidinous
+unlicensed
+unlicentiated
+unlicentious
+unlichened
+unlickable
+unlicked
+unlid
+unlidded
+unlie
+unlifelike
+unliftable
+unlifted
+unlifting
+unligable
+unligatured
+unlight
+unlighted
+unlightedly
+unlightedness
+unlightened
+unlignified
+unlikable
+unlikableness
+unlikably
+unlike
+unlikeable
+unlikeableness
+unlikeably
+unliked
+unlikelihood
+unlikeliness
+unlikely
+unliken
+unlikeness
+unliking
+unlimb
+unlimber
+unlime
+unlimed
+unlimitable
+unlimitableness
+unlimitably
+unlimited
+unlimitedly
+unlimitedness
+unlimitless
+unlimned
+unlimp
+unline
+unlineal
+unlined
+unlingering
+unlink
+unlinked
+unlionlike
+unliquefiable
+unliquefied
+unliquid
+unliquidatable
+unliquidated
+unliquidating
+unliquidation
+unliquored
+unlisping
+unlist
+unlisted
+unlistened
+unlistening
+unlisty
+unlit
+unliteral
+unliterally
+unliteralness
+unliterary
+unliterate
+unlitigated
+unlitten
+unlittered
+unliturgical
+unliturgize
+unlivable
+unlivableness
+unlivably
+unlive
+unliveable
+unliveableness
+unliveably
+unliveliness
+unlively
+unliveried
+unlivery
+unliving
+unlizardlike
+unload
+unloaded
+unloaden
+unloader
+unloafing
+unloanably
+unloaned
+unloaning
+unloath
+unloathed
+unloathful
+unloathly
+unloathsome
+unlobed
+unlocal
+unlocalizable
+unlocalize
+unlocalized
+unlocally
+unlocated
+unlock
+unlockable
+unlocked
+unlocker
+unlocking
+unlocomotive
+unlodge
+unlodged
+unlofty
+unlogged
+unlogic
+unlogical
+unlogically
+unlogicalness
+unlonely
+unlook
+unlooked
+unloop
+unlooped
+unloosable
+unloosably
+unloose
+unloosen
+unloosening
+unloosing
+unlooted
+unlopped
+unloquacious
+unlord
+unlorded
+unlordly
+unlosable
+unlosableness
+unlost
+unlotted
+unlousy
+unlovable
+unlovableness
+unlovably
+unlove
+unloveable
+unloveableness
+unloveably
+unloved
+unlovelily
+unloveliness
+unlovely
+unloverlike
+unloverly
+unloving
+unlovingly
+unlovingness
+unlowered
+unlowly
+unloyal
+unloyally
+unloyalty
+unlubricated
+unlucent
+unlucid
+unluck
+unluckful
+unluckily
+unluckiness
+unlucky
+unlucrative
+unludicrous
+unluffed
+unlugged
+unlugubrious
+unluminous
+unlumped
+unlunar
+unlured
+unlust
+unlustily
+unlustiness
+unlustrous
+unlusty
+unlute
+unluted
+unluxated
+unluxuriant
+unluxurious
+unlycanthropize
+unlying
+unlyrical
+unlyrically
+unmacadamized
+unmacerated
+unmachinable
+unmackly
+unmad
+unmadded
+unmaddened
+unmade
+unmagic
+unmagical
+unmagisterial
+unmagistratelike
+unmagnanimous
+unmagnetic
+unmagnetical
+unmagnetized
+unmagnified
+unmagnify
+unmaid
+unmaidenlike
+unmaidenliness
+unmaidenly
+unmail
+unmailable
+unmailableness
+unmailed
+unmaimable
+unmaimed
+unmaintainable
+unmaintained
+unmajestic
+unmakable
+unmake
+unmaker
+unmalevolent
+unmalicious
+unmalignant
+unmaligned
+unmalleability
+unmalleable
+unmalleableness
+unmalled
+unmaltable
+unmalted
+unmammalian
+unmammonized
+unman
+unmanacle
+unmanacled
+unmanageable
+unmanageableness
+unmanageably
+unmanaged
+unmancipated
+unmandated
+unmanducated
+unmaned
+unmaneged
+unmanful
+unmanfully
+unmangled
+unmaniable
+unmaniac
+unmaniacal
+unmanicured
+unmanifest
+unmanifested
+unmanipulatable
+unmanipulated
+unmanlike
+unmanlily
+unmanliness
+unmanly
+unmanned
+unmanner
+unmannered
+unmanneredly
+unmannerliness
+unmannerly
+unmannish
+unmanored
+unmantle
+unmantled
+unmanufacturable
+unmanufactured
+unmanumissible
+unmanumitted
+unmanurable
+unmanured
+unmappable
+unmapped
+unmarbled
+unmarch
+unmarching
+unmarginal
+unmarginated
+unmarine
+unmaritime
+unmarkable
+unmarked
+unmarketable
+unmarketed
+unmarled
+unmarred
+unmarriable
+unmarriageability
+unmarriageable
+unmarried
+unmarring
+unmarry
+unmarrying
+unmarshaled
+unmartial
+unmartyr
+unmartyred
+unmarvelous
+unmasculine
+unmashed
+unmask
+unmasked
+unmasker
+unmasking
+unmasquerade
+unmassacred
+unmassed
+unmast
+unmaster
+unmasterable
+unmastered
+unmasterful
+unmasticable
+unmasticated
+unmatchable
+unmatchableness
+unmatchably
+unmatched
+unmatchedness
+unmate
+unmated
+unmaterial
+unmaterialistic
+unmateriate
+unmaternal
+unmathematical
+unmathematically
+unmating
+unmatriculated
+unmatrimonial
+unmatronlike
+unmatted
+unmature
+unmatured
+unmaturely
+unmatureness
+unmaturing
+unmaturity
+unmauled
+unmaze
+unmeaning
+unmeaningly
+unmeaningness
+unmeant
+unmeasurable
+unmeasurableness
+unmeasurably
+unmeasured
+unmeasuredly
+unmeasuredness
+unmeated
+unmechanic
+unmechanical
+unmechanically
+unmechanistic
+unmechanize
+unmechanized
+unmedaled
+unmedalled
+unmeddle
+unmeddled
+unmeddlesome
+unmeddling
+unmeddlingly
+unmeddlingness
+unmediaeval
+unmediated
+unmediatized
+unmedicable
+unmedical
+unmedicated
+unmedicative
+unmedicinable
+unmedicinal
+unmeditated
+unmeditative
+unmediumistic
+unmedullated
+unmeek
+unmeekly
+unmeekness
+unmeet
+unmeetable
+unmeetly
+unmeetness
+unmelancholy
+unmeliorated
+unmellow
+unmellowed
+unmelodic
+unmelodious
+unmelodiously
+unmelodiousness
+unmelodized
+unmelodramatic
+unmeltable
+unmeltableness
+unmeltably
+unmelted
+unmeltedness
+unmelting
+unmember
+unmemoired
+unmemorable
+unmemorialized
+unmemoried
+unmemorized
+unmenaced
+unmenacing
+unmendable
+unmendableness
+unmendably
+unmendacious
+unmended
+unmenial
+unmenseful
+unmenstruating
+unmensurable
+unmental
+unmentionability
+unmentionable
+unmentionableness
+unmentionables
+unmentionably
+unmentioned
+unmercantile
+unmercenariness
+unmercenary
+unmercerized
+unmerchantable
+unmerchantlike
+unmerchantly
+unmerciful
+unmercifully
+unmercifulness
+unmercurial
+unmeretricious
+unmerge
+unmerged
+unmeridional
+unmerited
+unmeritedly
+unmeritedness
+unmeriting
+unmeritorious
+unmeritoriously
+unmeritoriousness
+unmerry
+unmesh
+unmesmeric
+unmesmerize
+unmesmerized
+unmet
+unmetaled
+unmetalized
+unmetalled
+unmetallic
+unmetallurgical
+unmetamorphosed
+unmetaphorical
+unmetaphysic
+unmetaphysical
+unmeted
+unmeteorological
+unmetered
+unmethodical
+unmethodically
+unmethodicalness
+unmethodized
+unmethodizing
+unmethylated
+unmeticulous
+unmetric
+unmetrical
+unmetrically
+unmetricalness
+unmetropolitan
+unmettle
+unmew
+unmewed
+unmicaceous
+unmicrobic
+unmicroscopic
+unmidwifed
+unmighty
+unmigrating
+unmildewed
+unmilitant
+unmilitarily
+unmilitariness
+unmilitaristic
+unmilitarized
+unmilitary
+unmilked
+unmilled
+unmillinered
+unmilted
+unmimicked
+unminable
+unminced
+unmincing
+unmind
+unminded
+unmindful
+unmindfully
+unmindfulness
+unminding
+unmined
+unmineralized
+unmingle
+unmingleable
+unmingled
+unmingling
+unminimized
+unminished
+unminister
+unministered
+unministerial
+unministerially
+unminted
+unminuted
+unmiracled
+unmiraculous
+unmiraculously
+unmired
+unmirrored
+unmirthful
+unmirthfully
+unmirthfulness
+unmiry
+unmisanthropic
+unmiscarrying
+unmischievous
+unmiscible
+unmisconceivable
+unmiserly
+unmisgiving
+unmisgivingly
+unmisguided
+unmisinterpretable
+unmisled
+unmissable
+unmissed
+unmissionary
+unmissionized
+unmist
+unmistakable
+unmistakableness
+unmistakably
+unmistakedly
+unmistaken
+unmistakingly
+unmistressed
+unmistrusted
+unmistrustful
+unmistrusting
+unmisunderstandable
+unmisunderstanding
+unmisunderstood
+unmiter
+unmitigable
+unmitigated
+unmitigatedly
+unmitigatedness
+unmitigative
+unmittened
+unmix
+unmixable
+unmixableness
+unmixed
+unmixedly
+unmixedness
+unmoaned
+unmoated
+unmobbed
+unmobilized
+unmocked
+unmocking
+unmockingly
+unmodel
+unmodeled
+unmodelled
+unmoderate
+unmoderately
+unmoderateness
+unmoderating
+unmodern
+unmodernity
+unmodernize
+unmodernized
+unmodest
+unmodifiable
+unmodifiableness
+unmodifiably
+unmodified
+unmodifiedness
+unmodish
+unmodulated
+unmoiled
+unmoist
+unmoisten
+unmold
+unmoldable
+unmolded
+unmoldered
+unmoldering
+unmoldy
+unmolested
+unmolestedly
+unmolesting
+unmollifiable
+unmollifiably
+unmollified
+unmollifying
+unmolten
+unmomentary
+unmomentous
+unmomentously
+unmonarch
+unmonarchical
+unmonastic
+unmonetary
+unmoneyed
+unmonistic
+unmonitored
+unmonkish
+unmonkly
+unmonopolize
+unmonopolized
+unmonopolizing
+unmonotonous
+unmonumented
+unmoor
+unmoored
+unmooted
+unmopped
+unmoral
+unmoralist
+unmorality
+unmoralize
+unmoralized
+unmoralizing
+unmorally
+unmoralness
+unmorbid
+unmordanted
+unmoribund
+unmorose
+unmorphological
+unmortal
+unmortared
+unmortgage
+unmortgageable
+unmortgaged
+unmortified
+unmortifiedly
+unmortifiedness
+unmortise
+unmortised
+unmossed
+unmothered
+unmotherly
+unmotionable
+unmotivated
+unmotivatedly
+unmotivatedness
+unmotived
+unmotorized
+unmottled
+unmounded
+unmount
+unmountable
+unmountainous
+unmounted
+unmounting
+unmourned
+unmournful
+unmourning
+unmouthable
+unmouthed
+unmouthpieced
+unmovability
+unmovable
+unmovableness
+unmovably
+unmoved
+unmovedly
+unmoving
+unmovingly
+unmovingness
+unmowed
+unmown
+unmucilaged
+unmudded
+unmuddied
+unmuddle
+unmuddled
+unmuddy
+unmuffle
+unmuffled
+unmulcted
+unmulish
+unmulled
+unmullioned
+unmultipliable
+unmultiplied
+unmultipliedly
+unmultiply
+unmummied
+unmummify
+unmunched
+unmundane
+unmundified
+unmunicipalized
+unmunificent
+unmunitioned
+unmurmured
+unmurmuring
+unmurmuringly
+unmurmurous
+unmuscled
+unmuscular
+unmusical
+unmusicality
+unmusically
+unmusicalness
+unmusicianly
+unmusked
+unmussed
+unmusted
+unmusterable
+unmustered
+unmutated
+unmutation
+unmuted
+unmutilated
+unmutinous
+unmuttered
+unmutual
+unmutualized
+unmuzzle
+unmuzzled
+unmuzzling
+unmyelinated
+unmysterious
+unmysteriously
+unmystery
+unmystical
+unmysticize
+unmystified
+unmythical
+unnabbed
+unnagged
+unnagging
+unnail
+unnailed
+unnaked
+unnamability
+unnamable
+unnamableness
+unnamably
+unname
+unnameability
+unnameable
+unnameableness
+unnameably
+unnamed
+unnapkined
+unnapped
+unnarcotic
+unnarrated
+unnarrow
+unnation
+unnational
+unnationalized
+unnative
+unnatural
+unnaturalism
+unnaturalist
+unnaturalistic
+unnaturality
+unnaturalizable
+unnaturalize
+unnaturalized
+unnaturally
+unnaturalness
+unnature
+unnautical
+unnavigability
+unnavigable
+unnavigableness
+unnavigably
+unnavigated
+unneaped
+unnearable
+unneared
+unnearly
+unnearness
+unneat
+unneatly
+unneatness
+unnebulous
+unnecessarily
+unnecessariness
+unnecessary
+unnecessitated
+unnecessitating
+unnecessity
+unneeded
+unneedful
+unneedfully
+unneedfulness
+unneedy
+unnefarious
+unnegated
+unneglected
+unnegligent
+unnegotiable
+unnegotiableness
+unnegotiably
+unnegotiated
+unnegro
+unneighbored
+unneighborlike
+unneighborliness
+unneighborly
+unnephritic
+unnerve
+unnerved
+unnervous
+unnest
+unnestle
+unnestled
+unneth
+unnethe
+unnethes
+unnethis
+unnetted
+unnettled
+unneurotic
+unneutral
+unneutralized
+unneutrally
+unnew
+unnewly
+unnewness
+unnibbed
+unnibbied
+unnice
+unnicely
+unniceness
+unniched
+unnicked
+unnickeled
+unnickelled
+unnicknamed
+unniggard
+unniggardly
+unnigh
+unnimbed
+unnimble
+unnimbleness
+unnimbly
+unnipped
+unnitrogenized
+unnobilitated
+unnobility
+unnoble
+unnobleness
+unnobly
+unnoised
+unnomadic
+unnominated
+unnonsensical
+unnoosed
+unnormal
+unnorthern
+unnose
+unnosed
+unnotable
+unnotched
+unnoted
+unnoteworthy
+unnoticeable
+unnoticeableness
+unnoticeably
+unnoticed
+unnoticing
+unnotified
+unnotify
+unnoting
+unnourishable
+unnourished
+unnourishing
+unnovel
+unnovercal
+unnucleated
+unnullified
+unnumberable
+unnumberableness
+unnumberably
+unnumbered
+unnumberedness
+unnumerical
+unnumerous
+unnurtured
+unnutritious
+unnutritive
+unnuzzled
+unnymphlike
+unoared
+unobdurate
+unobedience
+unobedient
+unobediently
+unobese
+unobeyed
+unobeying
+unobjected
+unobjectionable
+unobjectionableness
+unobjectionably
+unobjectional
+unobjective
+unobligated
+unobligatory
+unobliged
+unobliging
+unobligingly
+unobligingness
+unobliterable
+unobliterated
+unoblivious
+unobnoxious
+unobscene
+unobscure
+unobscured
+unobsequious
+unobsequiously
+unobsequiousness
+unobservable
+unobservance
+unobservant
+unobservantly
+unobservantness
+unobserved
+unobservedly
+unobserving
+unobservingly
+unobsessed
+unobsolete
+unobstinate
+unobstruct
+unobstructed
+unobstructedly
+unobstructedness
+unobstructive
+unobstruent
+unobtainable
+unobtainableness
+unobtainably
+unobtained
+unobtruded
+unobtruding
+unobtrusive
+unobtrusively
+unobtrusiveness
+unobtunded
+unobumbrated
+unobverted
+unobviated
+unobvious
+unoccasional
+unoccasioned
+unoccidental
+unoccluded
+unoccupancy
+unoccupation
+unoccupied
+unoccupiedly
+unoccupiedness
+unoccurring
+unoceanic
+unocular
+unode
+unodious
+unodoriferous
+unoecumenic
+unoecumenical
+unoffendable
+unoffended
+unoffendedly
+unoffender
+unoffending
+unoffendingly
+unoffensive
+unoffensively
+unoffensiveness
+unoffered
+unofficed
+unofficered
+unofficerlike
+unofficial
+unofficialdom
+unofficially
+unofficialness
+unofficiating
+unofficinal
+unofficious
+unofficiously
+unofficiousness
+unoffset
+unoften
+unogled
+unoil
+unoiled
+unoiling
+unoily
+unold
+unomened
+unominous
+unomitted
+unomnipotent
+unomniscient
+Unona
+unonerous
+unontological
+unopaque
+unoped
+unopen
+unopenable
+unopened
+unopening
+unopenly
+unopenness
+unoperably
+unoperated
+unoperatic
+unoperating
+unoperative
+unoperculate
+unoperculated
+unopined
+unopinionated
+unoppignorated
+unopportune
+unopportunely
+unopportuneness
+unopposable
+unopposed
+unopposedly
+unopposedness
+unopposite
+unoppressed
+unoppressive
+unoppressively
+unoppressiveness
+unopprobrious
+unoppugned
+unopulence
+unopulent
+unoratorial
+unoratorical
+unorbed
+unorbital
+unorchestrated
+unordain
+unordainable
+unordained
+unorder
+unorderable
+unordered
+unorderly
+unordinarily
+unordinariness
+unordinary
+unordinate
+unordinately
+unordinateness
+unordnanced
+unorganic
+unorganical
+unorganically
+unorganicalness
+unorganizable
+unorganized
+unorganizedly
+unorganizedness
+unoriental
+unorientalness
+unoriented
+unoriginal
+unoriginality
+unoriginally
+unoriginalness
+unoriginate
+unoriginated
+unoriginatedness
+unoriginately
+unoriginateness
+unorigination
+unoriginative
+unoriginatively
+unoriginativeness
+unorn
+unornamental
+unornamentally
+unornamentalness
+unornamented
+unornate
+unornithological
+unornly
+unorphaned
+unorthodox
+unorthodoxically
+unorthodoxly
+unorthodoxness
+unorthodoxy
+unorthographical
+unorthographically
+unoscillating
+unosculated
+unossified
+unostensible
+unostentation
+unostentatious
+unostentatiously
+unostentatiousness
+unoutgrown
+unoutlawed
+unoutraged
+unoutspeakable
+unoutspoken
+unoutworn
+unoverclouded
+unovercome
+unoverdone
+unoverdrawn
+unoverflowing
+unoverhauled
+unoverleaped
+unoverlooked
+unoverpaid
+unoverpowered
+unoverruled
+unovert
+unovertaken
+unoverthrown
+unovervalued
+unoverwhelmed
+unowed
+unowing
+unown
+unowned
+unoxidable
+unoxidated
+unoxidizable
+unoxidized
+unoxygenated
+unoxygenized
+unpacable
+unpaced
+unpacifiable
+unpacific
+unpacified
+unpacifiedly
+unpacifiedness
+unpacifist
+unpack
+unpacked
+unpacker
+unpadded
+unpadlocked
+unpagan
+unpaganize
+unpaged
+unpaginal
+unpaid
+unpained
+unpainful
+unpaining
+unpainstaking
+unpaint
+unpaintability
+unpaintable
+unpaintableness
+unpaintably
+unpainted
+unpaintedly
+unpaintedness
+unpaired
+unpalatability
+unpalatable
+unpalatableness
+unpalatably
+unpalatal
+unpalatial
+unpale
+unpaled
+unpalisaded
+unpalisadoed
+unpalled
+unpalliable
+unpalliated
+unpalpable
+unpalped
+unpalpitating
+unpalsied
+unpampered
+unpanegyrized
+unpanel
+unpaneled
+unpanelled
+unpanged
+unpanniered
+unpanoplied
+unpantheistic
+unpanting
+unpapal
+unpapaverous
+unpaper
+unpapered
+unparaded
+unparadise
+unparadox
+unparagoned
+unparagonized
+unparagraphed
+unparallel
+unparallelable
+unparalleled
+unparalleledly
+unparalleledness
+unparallelness
+unparalyzed
+unparaphrased
+unparasitical
+unparcel
+unparceled
+unparceling
+unparcelled
+unparcelling
+unparch
+unparched
+unparching
+unpardon
+unpardonable
+unpardonableness
+unpardonably
+unpardoned
+unpardonedness
+unpardoning
+unpared
+unparented
+unparfit
+unpargeted
+unpark
+unparked
+unparking
+unparliamentary
+unparliamented
+unparodied
+unparrel
+unparriable
+unparried
+unparroted
+unparrying
+unparsed
+unparsimonious
+unparsonic
+unparsonical
+unpartable
+unpartableness
+unpartably
+unpartaken
+unpartaking
+unparted
+unpartial
+unpartiality
+unpartially
+unpartialness
+unparticipant
+unparticipated
+unparticipating
+unparticipative
+unparticular
+unparticularized
+unparticularizing
+unpartisan
+unpartitioned
+unpartizan
+unpartnered
+unpartook
+unparty
+unpass
+unpassable
+unpassableness
+unpassably
+unpassed
+unpassing
+unpassionate
+unpassionately
+unpassionateness
+unpassioned
+unpassive
+unpaste
+unpasted
+unpasteurized
+unpasting
+unpastor
+unpastoral
+unpastured
+unpatched
+unpatent
+unpatentable
+unpatented
+unpaternal
+unpathed
+unpathetic
+unpathwayed
+unpatient
+unpatiently
+unpatientness
+unpatriarchal
+unpatrician
+unpatriotic
+unpatriotically
+unpatriotism
+unpatristic
+unpatrolled
+unpatronizable
+unpatronized
+unpatronizing
+unpatted
+unpatterned
+unpaunch
+unpaunched
+unpauperized
+unpausing
+unpausingly
+unpave
+unpaved
+unpavilioned
+unpaving
+unpawed
+unpawn
+unpawned
+unpayable
+unpayableness
+unpayably
+unpaying
+unpayment
+unpeace
+unpeaceable
+unpeaceableness
+unpeaceably
+unpeaceful
+unpeacefully
+unpeacefulness
+unpealed
+unpearled
+unpebbled
+unpeccable
+unpecked
+unpecuniarily
+unpedagogical
+unpedantic
+unpeddled
+unpedestal
+unpedigreed
+unpeel
+unpeelable
+unpeelableness
+unpeeled
+unpeerable
+unpeered
+unpeg
+unpejorative
+unpelagic
+unpelted
+unpen
+unpenal
+unpenalized
+unpenanced
+unpenciled
+unpencilled
+unpenetrable
+unpenetrated
+unpenetrating
+unpenitent
+unpenitently
+unpenitentness
+unpenned
+unpennied
+unpennoned
+unpensionable
+unpensionableness
+unpensioned
+unpensioning
+unpent
+unpenurious
+unpeople
+unpeopled
+unpeopling
+unperceived
+unperceivedly
+unperceptible
+unperceptibly
+unperceptive
+unperch
+unperched
+unpercipient
+unpercolated
+unpercussed
+unperfect
+unperfected
+unperfectedly
+unperfectedness
+unperfectly
+unperfectness
+unperfidious
+unperflated
+unperforate
+unperforated
+unperformable
+unperformance
+unperformed
+unperforming
+unperfumed
+unperilous
+unperiodic
+unperiodical
+unperiphrased
+unperishable
+unperishableness
+unperishably
+unperished
+unperishing
+unperjured
+unpermanency
+unpermanent
+unpermanently
+unpermeable
+unpermeated
+unpermissible
+unpermissive
+unpermitted
+unpermitting
+unpermixed
+unpernicious
+unperpendicular
+unperpetrated
+unperpetuated
+unperplex
+unperplexed
+unperplexing
+unpersecuted
+unpersecutive
+unperseverance
+unpersevering
+unperseveringly
+unperseveringness
+unpersonable
+unpersonableness
+unpersonal
+unpersonality
+unpersonified
+unpersonify
+unperspicuous
+unperspirable
+unperspiring
+unpersuadable
+unpersuadableness
+unpersuadably
+unpersuaded
+unpersuadedness
+unpersuasibleness
+unpersuasion
+unpersuasive
+unpersuasively
+unpersuasiveness
+unpertaining
+unpertinent
+unpertinently
+unperturbed
+unperturbedly
+unperturbedness
+unperuked
+unperused
+unpervaded
+unperverse
+unpervert
+unperverted
+unpervious
+unpessimistic
+unpestered
+unpestilential
+unpetal
+unpetitioned
+unpetrified
+unpetrify
+unpetticoated
+unpetulant
+unpharasaic
+unpharasaical
+unphased
+unphenomenal
+unphilanthropic
+unphilanthropically
+unphilological
+unphilosophic
+unphilosophically
+unphilosophicalness
+unphilosophize
+unphilosophized
+unphilosophy
+unphlegmatic
+unphonetic
+unphoneticness
+unphonographed
+unphosphatized
+unphotographed
+unphrasable
+unphrasableness
+unphrased
+unphrenological
+unphysical
+unphysically
+unphysicianlike
+unphysicked
+unphysiological
+unpicaresque
+unpick
+unpickable
+unpicked
+unpicketed
+unpickled
+unpictorial
+unpictorially
+unpicturability
+unpicturable
+unpictured
+unpicturesque
+unpicturesquely
+unpicturesqueness
+unpiece
+unpieced
+unpierceable
+unpierced
+unpiercing
+unpiety
+unpigmented
+unpile
+unpiled
+unpilfered
+unpilgrimlike
+unpillaged
+unpillared
+unpilled
+unpilloried
+unpillowed
+unpiloted
+unpimpled
+unpin
+unpinched
+unpining
+unpinion
+unpinioned
+unpinked
+unpinned
+unpious
+unpiped
+unpiqued
+unpirated
+unpitched
+unpiteous
+unpiteously
+unpiteousness
+unpitiable
+unpitiably
+unpitied
+unpitiedly
+unpitiedness
+unpitiful
+unpitifully
+unpitifulness
+unpitted
+unpitying
+unpityingly
+unpityingness
+unplacable
+unplacably
+unplacated
+unplace
+unplaced
+unplacid
+unplagiarized
+unplagued
+unplaid
+unplain
+unplained
+unplainly
+unplainness
+unplait
+unplaited
+unplan
+unplaned
+unplanished
+unplank
+unplanked
+unplanned
+unplannedly
+unplannedness
+unplant
+unplantable
+unplanted
+unplantlike
+unplashed
+unplaster
+unplastered
+unplastic
+unplat
+unplated
+unplatted
+unplausible
+unplausibleness
+unplausibly
+unplayable
+unplayed
+unplayful
+unplaying
+unpleached
+unpleadable
+unpleaded
+unpleading
+unpleasable
+unpleasant
+unpleasantish
+unpleasantly
+unpleasantness
+unpleasantry
+unpleased
+unpleasing
+unpleasingly
+unpleasingness
+unpleasurable
+unpleasurably
+unpleasure
+unpleat
+unpleated
+unplebeian
+unpledged
+unplenished
+unplenteous
+unplentiful
+unplentifulness
+unpliable
+unpliableness
+unpliably
+unpliancy
+unpliant
+unpliantly
+unplied
+unplighted
+unplodding
+unplotted
+unplotting
+unplough
+unploughed
+unplow
+unplowed
+unplucked
+unplug
+unplugged
+unplugging
+unplumb
+unplumbed
+unplume
+unplumed
+unplummeted
+unplump
+unplundered
+unplunge
+unplunged
+unplutocratic
+unplutocratically
+unpoached
+unpocket
+unpocketed
+unpodded
+unpoetic
+unpoetically
+unpoeticalness
+unpoeticized
+unpoetize
+unpoetized
+unpoignard
+unpointed
+unpointing
+unpoise
+unpoised
+unpoison
+unpoisonable
+unpoisoned
+unpoisonous
+unpolarizable
+unpolarized
+unpoled
+unpolemical
+unpolemically
+unpoliced
+unpolicied
+unpolish
+unpolishable
+unpolished
+unpolishedness
+unpolite
+unpolitely
+unpoliteness
+unpolitic
+unpolitical
+unpolitically
+unpoliticly
+unpollarded
+unpolled
+unpollutable
+unpolluted
+unpollutedly
+unpolluting
+unpolymerized
+unpompous
+unpondered
+unpontifical
+unpooled
+unpope
+unpopular
+unpopularity
+unpopularize
+unpopularly
+unpopularness
+unpopulate
+unpopulated
+unpopulous
+unpopulousness
+unporous
+unportable
+unportended
+unportentous
+unportioned
+unportly
+unportmanteaued
+unportraited
+unportrayable
+unportrayed
+unportuous
+unposed
+unposing
+unpositive
+unpossessable
+unpossessed
+unpossessedness
+unpossessing
+unpossibility
+unpossible
+unpossibleness
+unpossibly
+unposted
+unpostered
+unposthumous
+unpostmarked
+unpostponable
+unpostponed
+unpostulated
+unpot
+unpotted
+unpouched
+unpoulticed
+unpounced
+unpounded
+unpoured
+unpowdered
+unpower
+unpowerful
+unpowerfulness
+unpracticability
+unpracticable
+unpracticableness
+unpracticably
+unpractical
+unpracticality
+unpractically
+unpracticalness
+unpractice
+unpracticed
+unpragmatical
+unpraisable
+unpraise
+unpraised
+unpraiseful
+unpraiseworthy
+unpranked
+unpray
+unprayable
+unprayed
+unprayerful
+unpraying
+unpreach
+unpreached
+unpreaching
+unprecarious
+unprecautioned
+unpreceded
+unprecedented
+unprecedentedly
+unprecedentedness
+unprecedential
+unprecedently
+unprecious
+unprecipitate
+unprecipitated
+unprecise
+unprecisely
+unpreciseness
+unprecluded
+unprecludible
+unprecocious
+unpredacious
+unpredestinated
+unpredestined
+unpredicable
+unpredicated
+unpredict
+unpredictable
+unpredictableness
+unpredictably
+unpredicted
+unpredictedness
+unpredicting
+unpredisposed
+unpredisposing
+unpreened
+unprefaced
+unpreferable
+unpreferred
+unprefigured
+unprefined
+unprefixed
+unpregnant
+unprejudged
+unprejudicated
+unprejudice
+unprejudiced
+unprejudicedly
+unprejudicedness
+unprejudiciable
+unprejudicial
+unprejudicially
+unprejudicialness
+unprelatic
+unprelatical
+unpreluded
+unpremature
+unpremeditate
+unpremeditated
+unpremeditatedly
+unpremeditatedness
+unpremeditately
+unpremeditation
+unpremonished
+unpremonstrated
+unprenominated
+unprenticed
+unpreoccupied
+unpreordained
+unpreparation
+unprepare
+unprepared
+unpreparedly
+unpreparedness
+unpreparing
+unpreponderated
+unpreponderating
+unprepossessedly
+unprepossessing
+unprepossessingly
+unprepossessingness
+unpreposterous
+unpresaged
+unpresageful
+unpresaging
+unpresbyterated
+unprescient
+unprescinded
+unprescribed
+unpresentability
+unpresentable
+unpresentableness
+unpresentably
+unpresented
+unpreservable
+unpreserved
+unpresidential
+unpresiding
+unpressed
+unpresumable
+unpresumed
+unpresuming
+unpresumingness
+unpresumptuous
+unpresumptuously
+unpresupposed
+unpretended
+unpretending
+unpretendingly
+unpretendingness
+unpretentious
+unpretentiously
+unpretentiousness
+unpretermitted
+unpreternatural
+unprettiness
+unpretty
+unprevailing
+unprevalent
+unprevaricating
+unpreventable
+unpreventableness
+unpreventably
+unprevented
+unpreventible
+unpreventive
+unpriceably
+unpriced
+unpricked
+unprickled
+unprickly
+unpriest
+unpriestlike
+unpriestly
+unpriggish
+unprim
+unprime
+unprimed
+unprimitive
+unprimmed
+unprince
+unprincelike
+unprinceliness
+unprincely
+unprincess
+unprincipal
+unprinciple
+unprincipled
+unprincipledly
+unprincipledness
+unprint
+unprintable
+unprintableness
+unprintably
+unprinted
+unpriority
+unprismatic
+unprison
+unprisonable
+unprisoned
+unprivate
+unprivileged
+unprizable
+unprized
+unprobated
+unprobationary
+unprobed
+unprobity
+unproblematic
+unproblematical
+unprocessed
+unproclaimed
+unprocrastinated
+unprocreant
+unprocreated
+unproctored
+unprocurable
+unprocurableness
+unprocure
+unprocured
+unproded
+unproduceable
+unproduceableness
+unproduceably
+unproduced
+unproducedness
+unproducible
+unproducibleness
+unproducibly
+unproductive
+unproductively
+unproductiveness
+unproductivity
+unprofanable
+unprofane
+unprofaned
+unprofessed
+unprofessing
+unprofessional
+unprofessionalism
+unprofessionally
+unprofessorial
+unproffered
+unproficiency
+unproficient
+unproficiently
+unprofit
+unprofitable
+unprofitableness
+unprofitably
+unprofited
+unprofiteering
+unprofiting
+unprofound
+unprofuse
+unprofusely
+unprofuseness
+unprognosticated
+unprogressed
+unprogressive
+unprogressively
+unprogressiveness
+unprohibited
+unprohibitedness
+unprohibitive
+unprojected
+unprojecting
+unproliferous
+unprolific
+unprolix
+unprologued
+unprolonged
+unpromiscuous
+unpromise
+unpromised
+unpromising
+unpromisingly
+unpromisingness
+unpromotable
+unpromoted
+unprompted
+unpromptly
+unpromulgated
+unpronounce
+unpronounceable
+unpronounced
+unpronouncing
+unproofread
+unprop
+unpropagated
+unpropelled
+unpropense
+unproper
+unproperly
+unproperness
+unpropertied
+unprophesiable
+unprophesied
+unprophetic
+unprophetical
+unprophetically
+unprophetlike
+unpropitiable
+unpropitiated
+unpropitiatedness
+unpropitiatory
+unpropitious
+unpropitiously
+unpropitiousness
+unproportion
+unproportionable
+unproportionableness
+unproportionably
+unproportional
+unproportionality
+unproportionally
+unproportionate
+unproportionately
+unproportionateness
+unproportioned
+unproportionedly
+unproportionedness
+unproposed
+unproposing
+unpropounded
+unpropped
+unpropriety
+unprorogued
+unprosaic
+unproscribable
+unproscribed
+unprosecutable
+unprosecuted
+unprosecuting
+unproselyte
+unproselyted
+unprosodic
+unprospected
+unprospective
+unprosperably
+unprospered
+unprosperity
+unprosperous
+unprosperously
+unprosperousness
+unprostitute
+unprostituted
+unprostrated
+unprotectable
+unprotected
+unprotectedly
+unprotectedness
+unprotective
+unprotestant
+unprotestantize
+unprotested
+unprotesting
+unprotruded
+unprotruding
+unprotrusive
+unproud
+unprovability
+unprovable
+unprovableness
+unprovably
+unproved
+unprovedness
+unproven
+unproverbial
+unprovidable
+unprovide
+unprovided
+unprovidedly
+unprovidedness
+unprovidenced
+unprovident
+unprovidential
+unprovidently
+unprovincial
+unproving
+unprovision
+unprovisioned
+unprovocative
+unprovokable
+unprovoke
+unprovoked
+unprovokedly
+unprovokedness
+unprovoking
+unproximity
+unprudence
+unprudent
+unprudently
+unpruned
+unprying
+unpsychic
+unpsychological
+unpublic
+unpublicity
+unpublishable
+unpublishableness
+unpublishably
+unpublished
+unpucker
+unpuckered
+unpuddled
+unpuffed
+unpuffing
+unpugilistic
+unpugnacious
+unpulled
+unpulleyed
+unpulped
+unpulverable
+unpulverize
+unpulverized
+unpulvinate
+unpulvinated
+unpumicated
+unpummeled
+unpummelled
+unpumpable
+unpumped
+unpunched
+unpunctated
+unpunctilious
+unpunctual
+unpunctuality
+unpunctually
+unpunctuated
+unpunctuating
+unpunishable
+unpunishably
+unpunished
+unpunishedly
+unpunishedness
+unpunishing
+unpunishingly
+unpurchasable
+unpurchased
+unpure
+unpurely
+unpureness
+unpurgeable
+unpurged
+unpurifiable
+unpurified
+unpurifying
+unpuritan
+unpurled
+unpurloined
+unpurpled
+unpurported
+unpurposed
+unpurposelike
+unpurposely
+unpurposing
+unpurse
+unpursed
+unpursuable
+unpursued
+unpursuing
+unpurveyed
+unpushed
+unput
+unputrefiable
+unputrefied
+unputrid
+unputtied
+unpuzzle
+unquadded
+unquaffed
+unquailed
+unquailing
+unquailingly
+unquakerlike
+unquakerly
+unquaking
+unqualifiable
+unqualification
+unqualified
+unqualifiedly
+unqualifiedness
+unqualify
+unqualifying
+unqualifyingly
+unqualitied
+unquality
+unquantified
+unquantitative
+unquarantined
+unquarreled
+unquarreling
+unquarrelled
+unquarrelling
+unquarrelsome
+unquarried
+unquartered
+unquashed
+unquayed
+unqueen
+unqueened
+unqueening
+unqueenlike
+unqueenly
+unquellable
+unquelled
+unquenchable
+unquenchableness
+unquenchably
+unquenched
+unqueried
+unquested
+unquestionability
+unquestionable
+unquestionableness
+unquestionably
+unquestionate
+unquestioned
+unquestionedly
+unquestionedness
+unquestioning
+unquestioningly
+unquestioningness
+unquibbled
+unquibbling
+unquick
+unquickened
+unquickly
+unquicksilvered
+unquiescence
+unquiescent
+unquiescently
+unquiet
+unquietable
+unquieted
+unquieting
+unquietly
+unquietness
+unquietude
+unquilleted
+unquilted
+unquit
+unquittable
+unquitted
+unquivered
+unquivering
+unquizzable
+unquizzed
+unquotable
+unquote
+unquoted
+unrabbeted
+unrabbinical
+unraced
+unrack
+unracked
+unracking
+unradiated
+unradical
+unradicalize
+unraffled
+unraftered
+unraided
+unrailed
+unrailroaded
+unrailwayed
+unrainy
+unraised
+unrake
+unraked
+unraking
+unrallied
+unram
+unrambling
+unramified
+unrammed
+unramped
+unranched
+unrancid
+unrancored
+unrandom
+unrank
+unranked
+unransacked
+unransomable
+unransomed
+unrapacious
+unraped
+unraptured
+unrare
+unrarefied
+unrash
+unrasped
+unratable
+unrated
+unratified
+unrational
+unrattled
+unravaged
+unravel
+unravelable
+unraveled
+unraveler
+unraveling
+unravellable
+unravelled
+unraveller
+unravelling
+unravelment
+unraving
+unravished
+unravishing
+unray
+unrayed
+unrazed
+unrazored
+unreachable
+unreachably
+unreached
+unreactive
+unread
+unreadability
+unreadable
+unreadableness
+unreadably
+unreadily
+unreadiness
+unready
+unreal
+unrealism
+unrealist
+unrealistic
+unreality
+unrealizable
+unrealize
+unrealized
+unrealizing
+unreally
+unrealmed
+unrealness
+unreaped
+unreared
+unreason
+unreasonability
+unreasonable
+unreasonableness
+unreasonably
+unreasoned
+unreasoning
+unreasoningly
+unreassuring
+unreassuringly
+unreave
+unreaving
+unrebated
+unrebel
+unrebellious
+unrebuffable
+unrebuffably
+unrebuilt
+unrebukable
+unrebukably
+unrebuked
+unrebuttable
+unrebuttableness
+unrebutted
+unrecallable
+unrecallably
+unrecalled
+unrecalling
+unrecantable
+unrecanted
+unrecaptured
+unreceding
+unreceipted
+unreceivable
+unreceived
+unreceiving
+unrecent
+unreceptant
+unreceptive
+unreceptivity
+unreciprocal
+unreciprocated
+unrecited
+unrecked
+unrecking
+unreckingness
+unreckon
+unreckonable
+unreckoned
+unreclaimable
+unreclaimably
+unreclaimed
+unreclaimedness
+unreclaiming
+unreclined
+unreclining
+unrecognition
+unrecognizable
+unrecognizableness
+unrecognizably
+unrecognized
+unrecognizing
+unrecognizingly
+unrecoined
+unrecollected
+unrecommendable
+unrecompensable
+unrecompensed
+unreconcilable
+unreconcilableness
+unreconcilably
+unreconciled
+unrecondite
+unreconnoitered
+unreconsidered
+unreconstructed
+unrecordable
+unrecorded
+unrecordedness
+unrecording
+unrecountable
+unrecounted
+unrecoverable
+unrecoverableness
+unrecoverably
+unrecovered
+unrecreant
+unrecreated
+unrecreating
+unrecriminative
+unrecruitable
+unrecruited
+unrectangular
+unrectifiable
+unrectifiably
+unrectified
+unrecumbent
+unrecuperated
+unrecurrent
+unrecurring
+unrecusant
+unred
+unredacted
+unredeemable
+unredeemableness
+unredeemably
+unredeemed
+unredeemedly
+unredeemedness
+unredeeming
+unredressable
+unredressed
+unreduceable
+unreduced
+unreducible
+unreducibleness
+unreducibly
+unreduct
+unreefed
+unreel
+unreelable
+unreeled
+unreeling
+unreeve
+unreeving
+unreferenced
+unreferred
+unrefilled
+unrefine
+unrefined
+unrefinedly
+unrefinedness
+unrefinement
+unrefining
+unrefitted
+unreflected
+unreflecting
+unreflectingly
+unreflectingness
+unreflective
+unreflectively
+unreformable
+unreformed
+unreformedness
+unreforming
+unrefracted
+unrefracting
+unrefrainable
+unrefrained
+unrefraining
+unrefreshed
+unrefreshful
+unrefreshing
+unrefreshingly
+unrefrigerated
+unrefulgent
+unrefunded
+unrefunding
+unrefusable
+unrefusably
+unrefused
+unrefusing
+unrefusingly
+unrefutable
+unrefuted
+unrefuting
+unregainable
+unregained
+unregal
+unregaled
+unregality
+unregally
+unregard
+unregardable
+unregardant
+unregarded
+unregardedly
+unregardful
+unregeneracy
+unregenerate
+unregenerately
+unregenerateness
+unregenerating
+unregeneration
+unregimented
+unregistered
+unregressive
+unregretful
+unregretfully
+unregretfulness
+unregrettable
+unregretted
+unregretting
+unregular
+unregulated
+unregulative
+unregurgitated
+unrehabilitated
+unrehearsable
+unrehearsed
+unrehearsing
+unreigning
+unreimbodied
+unrein
+unreined
+unreinstated
+unreiterable
+unreiterated
+unrejectable
+unrejoiced
+unrejoicing
+unrejuvenated
+unrelapsing
+unrelated
+unrelatedness
+unrelating
+unrelational
+unrelative
+unrelatively
+unrelaxable
+unrelaxed
+unrelaxing
+unrelaxingly
+unreleasable
+unreleased
+unreleasing
+unrelegated
+unrelentance
+unrelented
+unrelenting
+unrelentingly
+unrelentingness
+unrelentor
+unrelevant
+unreliability
+unreliable
+unreliableness
+unreliably
+unreliance
+unrelievable
+unrelievableness
+unrelieved
+unrelievedly
+unreligion
+unreligioned
+unreligious
+unreligiously
+unreligiousness
+unrelinquishable
+unrelinquishably
+unrelinquished
+unrelinquishing
+unrelishable
+unrelished
+unrelishing
+unreluctant
+unreluctantly
+unremaining
+unremanded
+unremarkable
+unremarked
+unremarried
+unremediable
+unremedied
+unremember
+unrememberable
+unremembered
+unremembering
+unremembrance
+unreminded
+unremissible
+unremittable
+unremitted
+unremittedly
+unremittent
+unremittently
+unremitting
+unremittingly
+unremittingness
+unremonstrant
+unremonstrated
+unremonstrating
+unremorseful
+unremorsefully
+unremote
+unremotely
+unremounted
+unremovable
+unremovableness
+unremovably
+unremoved
+unremunerated
+unremunerating
+unremunerative
+unremuneratively
+unremunerativeness
+unrenderable
+unrendered
+unrenewable
+unrenewed
+unrenounceable
+unrenounced
+unrenouncing
+unrenovated
+unrenowned
+unrenownedly
+unrenownedness
+unrent
+unrentable
+unrented
+unreorganized
+unrepaid
+unrepair
+unrepairable
+unrepaired
+unrepartable
+unreparted
+unrepealability
+unrepealable
+unrepealableness
+unrepealably
+unrepealed
+unrepeatable
+unrepeated
+unrepellable
+unrepelled
+unrepellent
+unrepent
+unrepentable
+unrepentance
+unrepentant
+unrepentantly
+unrepentantness
+unrepented
+unrepenting
+unrepentingly
+unrepentingness
+unrepetitive
+unrepined
+unrepining
+unrepiningly
+unrepiqued
+unreplaceable
+unreplaced
+unreplenished
+unrepleviable
+unreplevined
+unrepliable
+unrepliably
+unreplied
+unreplying
+unreportable
+unreported
+unreportedly
+unreportedness
+unrepose
+unreposed
+unreposeful
+unreposefulness
+unreposing
+unrepossessed
+unreprehended
+unrepresentable
+unrepresentation
+unrepresentative
+unrepresented
+unrepresentedness
+unrepressed
+unrepressible
+unreprievable
+unreprievably
+unreprieved
+unreprimanded
+unreprinted
+unreproachable
+unreproachableness
+unreproachably
+unreproached
+unreproachful
+unreproachfully
+unreproaching
+unreproachingly
+unreprobated
+unreproducible
+unreprovable
+unreprovableness
+unreprovably
+unreproved
+unreprovedly
+unreprovedness
+unreproving
+unrepublican
+unrepudiable
+unrepudiated
+unrepugnant
+unrepulsable
+unrepulsed
+unrepulsing
+unrepulsive
+unreputable
+unreputed
+unrequalified
+unrequested
+unrequickened
+unrequired
+unrequisite
+unrequitable
+unrequital
+unrequited
+unrequitedly
+unrequitedness
+unrequitement
+unrequiter
+unrequiting
+unrescinded
+unrescued
+unresemblant
+unresembling
+unresented
+unresentful
+unresenting
+unreserve
+unreserved
+unreservedly
+unreservedness
+unresifted
+unresigned
+unresistable
+unresistably
+unresistance
+unresistant
+unresistantly
+unresisted
+unresistedly
+unresistedness
+unresistible
+unresistibleness
+unresistibly
+unresisting
+unresistingly
+unresistingness
+unresolute
+unresolvable
+unresolve
+unresolved
+unresolvedly
+unresolvedness
+unresolving
+unresonant
+unresounded
+unresounding
+unresourceful
+unresourcefulness
+unrespect
+unrespectability
+unrespectable
+unrespected
+unrespectful
+unrespectfully
+unrespectfulness
+unrespective
+unrespectively
+unrespectiveness
+unrespirable
+unrespired
+unrespited
+unresplendent
+unresponding
+unresponsible
+unresponsibleness
+unresponsive
+unresponsively
+unresponsiveness
+unrest
+unrestable
+unrested
+unrestful
+unrestfully
+unrestfulness
+unresting
+unrestingly
+unrestingness
+unrestorable
+unrestored
+unrestrainable
+unrestrainably
+unrestrained
+unrestrainedly
+unrestrainedness
+unrestraint
+unrestrictable
+unrestricted
+unrestrictedly
+unrestrictedness
+unrestrictive
+unresty
+unresultive
+unresumed
+unresumptive
+unretainable
+unretained
+unretaliated
+unretaliating
+unretardable
+unretarded
+unretentive
+unreticent
+unretinued
+unretired
+unretiring
+unretorted
+unretouched
+unretractable
+unretracted
+unretreating
+unretrenchable
+unretrenched
+unretrievable
+unretrieved
+unretrievingly
+unretted
+unreturnable
+unreturnably
+unreturned
+unreturning
+unreturningly
+unrevealable
+unrevealed
+unrevealedness
+unrevealing
+unrevealingly
+unrevelationize
+unrevenged
+unrevengeful
+unrevengefulness
+unrevenging
+unrevengingly
+unrevenue
+unrevenued
+unreverberated
+unrevered
+unreverence
+unreverenced
+unreverend
+unreverendly
+unreverent
+unreverential
+unreverently
+unreverentness
+unreversable
+unreversed
+unreversible
+unreverted
+unrevertible
+unreverting
+unrevested
+unrevetted
+unreviewable
+unreviewed
+unreviled
+unrevised
+unrevivable
+unrevived
+unrevocable
+unrevocableness
+unrevocably
+unrevoked
+unrevolted
+unrevolting
+unrevolutionary
+unrevolutionized
+unrevolved
+unrevolving
+unrewardable
+unrewarded
+unrewardedly
+unrewarding
+unreworded
+unrhetorical
+unrhetorically
+unrhetoricalness
+unrhyme
+unrhymed
+unrhythmic
+unrhythmical
+unrhythmically
+unribbed
+unribboned
+unrich
+unriched
+unricht
+unricked
+unrid
+unridable
+unridableness
+unridably
+unridden
+unriddle
+unriddleable
+unriddled
+unriddler
+unriddling
+unride
+unridely
+unridered
+unridged
+unridiculed
+unridiculous
+unrife
+unriffled
+unrifled
+unrifted
+unrig
+unrigged
+unrigging
+unright
+unrightable
+unrighted
+unrighteous
+unrighteously
+unrighteousness
+unrightful
+unrightfully
+unrightfulness
+unrightly
+unrightwise
+unrigid
+unrigorous
+unrimpled
+unrind
+unring
+unringable
+unringed
+unringing
+unrinsed
+unrioted
+unrioting
+unriotous
+unrip
+unripe
+unriped
+unripely
+unripened
+unripeness
+unripening
+unrippable
+unripped
+unripping
+unrippled
+unrippling
+unripplingly
+unrisen
+unrising
+unriskable
+unrisked
+unrisky
+unritual
+unritualistic
+unrivalable
+unrivaled
+unrivaledly
+unrivaledness
+unrived
+unriven
+unrivet
+unriveted
+unriveting
+unroaded
+unroadworthy
+unroaming
+unroast
+unroasted
+unrobbed
+unrobe
+unrobed
+unrobust
+unrocked
+unrococo
+unrodded
+unroiled
+unroll
+unrollable
+unrolled
+unroller
+unrolling
+unrollment
+unromantic
+unromantical
+unromantically
+unromanticalness
+unromanticized
+unroof
+unroofed
+unroofing
+unroomy
+unroost
+unroosted
+unroosting
+unroot
+unrooted
+unrooting
+unrope
+unroped
+unrosed
+unrosined
+unrostrated
+unrotated
+unrotating
+unroted
+unrotted
+unrotten
+unrotund
+unrouged
+unrough
+unroughened
+unround
+unrounded
+unrounding
+unrousable
+unroused
+unroutable
+unrouted
+unrove
+unroved
+unroving
+unrow
+unrowed
+unroweled
+unroyal
+unroyalist
+unroyalized
+unroyally
+unroyalness
+Unrra
+unrubbed
+unrubbish
+unrubified
+unrubrical
+unrubricated
+unruddered
+unruddled
+unrueful
+unruffable
+unruffed
+unruffle
+unruffled
+unruffling
+unrugged
+unruinable
+unruinated
+unruined
+unrulable
+unrulableness
+unrule
+unruled
+unruledly
+unruledness
+unruleful
+unrulily
+unruliness
+unruly
+unruminated
+unruminating
+unruminatingly
+unrummaged
+unrumored
+unrumple
+unrumpled
+unrun
+unrung
+unruptured
+unrural
+unrushed
+Unrussian
+unrust
+unrusted
+unrustic
+unrusticated
+unrustling
+unruth
+unsabbatical
+unsabered
+unsabled
+unsabred
+unsaccharic
+unsacerdotal
+unsacerdotally
+unsack
+unsacked
+unsacramental
+unsacramentally
+unsacramentarian
+unsacred
+unsacredly
+unsacrificeable
+unsacrificeably
+unsacrificed
+unsacrificial
+unsacrificing
+unsacrilegious
+unsad
+unsadden
+unsaddened
+unsaddle
+unsaddled
+unsaddling
+unsafe
+unsafeguarded
+unsafely
+unsafeness
+unsafety
+unsagacious
+unsage
+unsagging
+unsaid
+unsailable
+unsailed
+unsailorlike
+unsaint
+unsainted
+unsaintlike
+unsaintly
+unsalability
+unsalable
+unsalableness
+unsalably
+unsalaried
+unsalesmanlike
+unsaline
+unsalivated
+unsallying
+unsalmonlike
+unsalt
+unsaltable
+unsaltatory
+unsalted
+unsalubrious
+unsalutary
+unsaluted
+unsaluting
+unsalvability
+unsalvable
+unsalvableness
+unsalvaged
+unsalved
+unsampled
+unsanctification
+unsanctified
+unsanctifiedly
+unsanctifiedness
+unsanctify
+unsanctifying
+unsanctimonious
+unsanctimoniously
+unsanctimoniousness
+unsanction
+unsanctionable
+unsanctioned
+unsanctioning
+unsanctitude
+unsanctity
+unsanctuaried
+unsandaled
+unsanded
+unsane
+unsanguinary
+unsanguine
+unsanguinely
+unsanguineness
+unsanguineous
+unsanguineously
+unsanitariness
+unsanitary
+unsanitated
+unsanitation
+unsanity
+unsaponifiable
+unsaponified
+unsapped
+unsappy
+unsarcastic
+unsardonic
+unsartorial
+unsash
+unsashed
+unsatable
+unsatanic
+unsated
+unsatedly
+unsatedness
+unsatiability
+unsatiable
+unsatiableness
+unsatiably
+unsatiate
+unsatiated
+unsatiating
+unsatin
+unsatire
+unsatirical
+unsatirically
+unsatirize
+unsatirized
+unsatisfaction
+unsatisfactorily
+unsatisfactoriness
+unsatisfactory
+unsatisfiable
+unsatisfiableness
+unsatisfiably
+unsatisfied
+unsatisfiedly
+unsatisfiedness
+unsatisfying
+unsatisfyingly
+unsatisfyingness
+unsaturable
+unsaturated
+unsaturatedly
+unsaturatedness
+unsaturation
+unsatyrlike
+unsauced
+unsaurian
+unsavable
+unsaveable
+unsaved
+unsaving
+unsavored
+unsavoredly
+unsavoredness
+unsavorily
+unsavoriness
+unsavory
+unsawed
+unsawn
+unsay
+unsayability
+unsayable
+unscabbard
+unscabbarded
+unscabbed
+unscaffolded
+unscalable
+unscalableness
+unscalably
+unscale
+unscaled
+unscaledness
+unscalloped
+unscaly
+unscamped
+unscandalize
+unscandalized
+unscandalous
+unscannable
+unscanned
+unscanted
+unscanty
+unscarb
+unscarce
+unscared
+unscarfed
+unscarified
+unscarred
+unscathed
+unscathedly
+unscathedness
+unscattered
+unscavengered
+unscenic
+unscent
+unscented
+unscepter
+unsceptered
+unsceptical
+unsceptre
+unsceptred
+unscheduled
+unschematic
+unschematized
+unscholar
+unscholarlike
+unscholarly
+unscholastic
+unschool
+unschooled
+unschooledly
+unschooledness
+unscienced
+unscientific
+unscientifical
+unscientifically
+unscintillating
+unscioned
+unscissored
+unscoffed
+unscoffing
+unscolded
+unsconced
+unscooped
+unscorched
+unscored
+unscorified
+unscoring
+unscorned
+unscornful
+unscornfully
+unscornfulness
+unscotch
+unscotched
+unscottify
+unscoured
+unscourged
+unscowling
+unscramble
+unscrambling
+unscraped
+unscratchable
+unscratched
+unscratching
+unscratchingly
+unscrawled
+unscreen
+unscreenable
+unscreenably
+unscreened
+unscrew
+unscrewable
+unscrewed
+unscrewing
+unscribal
+unscribbled
+unscribed
+unscrimped
+unscriptural
+unscripturally
+unscripturalness
+unscrubbed
+unscrupled
+unscrupulosity
+unscrupulous
+unscrupulously
+unscrupulousness
+unscrutable
+unscrutinized
+unscrutinizing
+unscrutinizingly
+unsculptural
+unsculptured
+unscummed
+unscutcheoned
+unseafaring
+unseal
+unsealable
+unsealed
+unsealer
+unsealing
+unseam
+unseamanlike
+unseamanship
+unseamed
+unseaming
+unsearchable
+unsearchableness
+unsearchably
+unsearched
+unsearcherlike
+unsearching
+unseared
+unseason
+unseasonable
+unseasonableness
+unseasonably
+unseasoned
+unseat
+unseated
+unseaworthiness
+unseaworthy
+unseceding
+unsecluded
+unseclusive
+unseconded
+unsecrecy
+unsecret
+unsecretarylike
+unsecreted
+unsecreting
+unsecretly
+unsecretness
+unsectarian
+unsectarianism
+unsectarianize
+unsectional
+unsecular
+unsecularize
+unsecularized
+unsecure
+unsecured
+unsecuredly
+unsecuredness
+unsecurely
+unsecureness
+unsecurity
+unsedate
+unsedentary
+unseditious
+unseduce
+unseduced
+unseducible
+unseductive
+unsedulous
+unsee
+unseeable
+unseeded
+unseeing
+unseeingly
+unseeking
+unseeming
+unseemingly
+unseemlily
+unseemliness
+unseemly
+unseen
+unseethed
+unsegmented
+unsegregable
+unsegregated
+unsegregatedness
+unseignorial
+unseismic
+unseizable
+unseized
+unseldom
+unselect
+unselected
+unselecting
+unselective
+unself
+unselfish
+unselfishly
+unselfishness
+unselflike
+unselfness
+unselling
+unsenatorial
+unsenescent
+unsensational
+unsense
+unsensed
+unsensibility
+unsensible
+unsensibleness
+unsensibly
+unsensitive
+unsensitize
+unsensitized
+unsensory
+unsensual
+unsensualize
+unsensualized
+unsensually
+unsensuous
+unsensuousness
+unsent
+unsentenced
+unsententious
+unsentient
+unsentimental
+unsentimentalist
+unsentimentality
+unsentimentalize
+unsentimentally
+unsentineled
+unsentinelled
+unseparable
+unseparableness
+unseparably
+unseparate
+unseparated
+unseptate
+unseptated
+unsepulcher
+unsepulchered
+unsepulchral
+unsepulchre
+unsepulchred
+unsepultured
+unsequenced
+unsequential
+unsequestered
+unseraphical
+unserenaded
+unserene
+unserflike
+unserious
+unseriousness
+unserrated
+unserried
+unservable
+unserved
+unserviceability
+unserviceable
+unserviceableness
+unserviceably
+unservicelike
+unservile
+unsesquipedalian
+unset
+unsetting
+unsettle
+unsettleable
+unsettled
+unsettledness
+unsettlement
+unsettling
+unseverable
+unseverableness
+unsevere
+unsevered
+unseveredly
+unseveredness
+unsew
+unsewed
+unsewered
+unsewing
+unsewn
+unsex
+unsexed
+unsexing
+unsexlike
+unsexual
+unshackle
+unshackled
+unshackling
+unshade
+unshaded
+unshadow
+unshadowable
+unshadowed
+unshady
+unshafted
+unshakable
+unshakably
+unshakeable
+unshakeably
+unshaken
+unshakenly
+unshakenness
+unshaking
+unshakingness
+unshaled
+unshamable
+unshamableness
+unshamably
+unshameable
+unshameableness
+unshameably
+unshamed
+unshamefaced
+unshamefacedness
+unshameful
+unshamefully
+unshamefulness
+unshammed
+unshanked
+unshapable
+unshape
+unshapeable
+unshaped
+unshapedness
+unshapeliness
+unshapely
+unshapen
+unshapenly
+unshapenness
+unsharable
+unshared
+unsharedness
+unsharing
+unsharp
+unsharped
+unsharpen
+unsharpened
+unsharpening
+unsharping
+unshattered
+unshavable
+unshaveable
+unshaved
+unshavedly
+unshavedness
+unshaven
+unshavenly
+unshavenness
+unshawl
+unsheaf
+unsheared
+unsheathe
+unsheathed
+unsheathing
+unshed
+unsheet
+unsheeted
+unsheeting
+unshell
+unshelled
+unshelling
+unshelterable
+unsheltered
+unsheltering
+unshelve
+unshepherded
+unshepherding
+unsheriff
+unshewed
+unshieldable
+unshielded
+unshielding
+unshiftable
+unshifted
+unshiftiness
+unshifting
+unshifty
+unshimmering
+unshingled
+unshining
+unship
+unshiplike
+unshipment
+unshipped
+unshipping
+unshipshape
+unshipwrecked
+unshirking
+unshirted
+unshivered
+unshivering
+unshockable
+unshocked
+unshod
+unshodden
+unshoe
+unshoed
+unshoeing
+unshop
+unshore
+unshored
+unshorn
+unshort
+unshortened
+unshot
+unshotted
+unshoulder
+unshouted
+unshouting
+unshoved
+unshoveled
+unshowable
+unshowed
+unshowmanlike
+unshown
+unshowy
+unshredded
+unshrew
+unshrewd
+unshrewish
+unshrill
+unshrine
+unshrined
+unshrinement
+unshrink
+unshrinkability
+unshrinkable
+unshrinking
+unshrinkingly
+unshrived
+unshriveled
+unshrivelled
+unshriven
+unshroud
+unshrouded
+unshrubbed
+unshrugging
+unshrunk
+unshrunken
+unshuddering
+unshuffle
+unshuffled
+unshunnable
+unshunned
+unshunted
+unshut
+unshutter
+unshuttered
+unshy
+unshyly
+unshyness
+unsibilant
+unsiccated
+unsick
+unsickened
+unsicker
+unsickerly
+unsickerness
+unsickled
+unsickly
+unsided
+unsiding
+unsiege
+unsifted
+unsighing
+unsight
+unsightable
+unsighted
+unsighting
+unsightliness
+unsightly
+unsigmatic
+unsignable
+unsignaled
+unsignalized
+unsignalled
+unsignatured
+unsigned
+unsigneted
+unsignificancy
+unsignificant
+unsignificantly
+unsignificative
+unsignified
+unsignifying
+unsilenceable
+unsilenceably
+unsilenced
+unsilent
+unsilentious
+unsilently
+unsilicified
+unsilly
+unsilvered
+unsimilar
+unsimilarity
+unsimilarly
+unsimple
+unsimplicity
+unsimplified
+unsimplify
+unsimulated
+unsimultaneous
+unsin
+unsincere
+unsincerely
+unsincereness
+unsincerity
+unsinew
+unsinewed
+unsinewing
+unsinewy
+unsinful
+unsinfully
+unsinfulness
+unsing
+unsingability
+unsingable
+unsingableness
+unsinged
+unsingle
+unsingled
+unsingleness
+unsingular
+unsinister
+unsinkability
+unsinkable
+unsinking
+unsinnable
+unsinning
+unsinningness
+unsiphon
+unsipped
+unsister
+unsistered
+unsisterliness
+unsisterly
+unsizable
+unsizableness
+unsizeable
+unsizeableness
+unsized
+unskaithd
+unskeptical
+unsketchable
+unsketched
+unskewed
+unskewered
+unskilful
+unskilfully
+unskilled
+unskilledly
+unskilledness
+unskillful
+unskillfully
+unskillfulness
+unskimmed
+unskin
+unskinned
+unskirted
+unslack
+unslacked
+unslackened
+unslackening
+unslacking
+unslagged
+unslain
+unslakable
+unslakeable
+unslaked
+unslammed
+unslandered
+unslanderous
+unslapped
+unslashed
+unslate
+unslated
+unslating
+unslaughtered
+unslave
+unslayable
+unsleaved
+unsleek
+unsleepably
+unsleeping
+unsleepingly
+unsleepy
+unsleeve
+unsleeved
+unslender
+unslept
+unsliced
+unsliding
+unslighted
+unsling
+unslip
+unslipped
+unslippery
+unslipping
+unslit
+unslockened
+unsloped
+unslopped
+unslot
+unslothful
+unslothfully
+unslothfulness
+unslotted
+unsloughed
+unsloughing
+unslow
+unsluggish
+unsluice
+unsluiced
+unslumbering
+unslumberous
+unslumbrous
+unslung
+unslurred
+unsly
+unsmacked
+unsmart
+unsmartly
+unsmartness
+unsmeared
+unsmelled
+unsmelling
+unsmelted
+unsmiled
+unsmiling
+unsmilingly
+unsmilingness
+unsmirched
+unsmirking
+unsmitten
+unsmokable
+unsmokeable
+unsmoked
+unsmokified
+unsmoking
+unsmoky
+unsmooth
+unsmoothed
+unsmoothly
+unsmoothness
+unsmote
+unsmotherable
+unsmothered
+unsmudged
+unsmuggled
+unsmutched
+unsmutted
+unsmutty
+unsnaffled
+unsnagged
+unsnaggled
+unsnaky
+unsnap
+unsnapped
+unsnare
+unsnared
+unsnarl
+unsnatch
+unsnatched
+unsneck
+unsneering
+unsnib
+unsnipped
+unsnobbish
+unsnoring
+unsnouted
+unsnow
+unsnubbable
+unsnubbed
+unsnuffed
+unsoaked
+unsoaped
+unsoarable
+unsober
+unsoberly
+unsoberness
+unsobriety
+unsociability
+unsociable
+unsociableness
+unsociably
+unsocial
+unsocialism
+unsocialistic
+unsociality
+unsocializable
+unsocialized
+unsocially
+unsocialness
+unsociological
+unsocket
+unsodden
+unsoft
+unsoftened
+unsoftening
+unsoggy
+unsoil
+unsoiled
+unsoiledness
+unsolaced
+unsolacing
+unsolar
+unsold
+unsolder
+unsoldered
+unsoldering
+unsoldier
+unsoldiered
+unsoldierlike
+unsoldierly
+unsole
+unsoled
+unsolemn
+unsolemness
+unsolemnize
+unsolemnized
+unsolemnly
+unsolicitated
+unsolicited
+unsolicitedly
+unsolicitous
+unsolicitously
+unsolicitousness
+unsolid
+unsolidarity
+unsolidifiable
+unsolidified
+unsolidity
+unsolidly
+unsolidness
+unsolitary
+unsolubility
+unsoluble
+unsolvable
+unsolvableness
+unsolvably
+unsolved
+unsomatic
+unsomber
+unsombre
+unsome
+unson
+unsonable
+unsonant
+unsonlike
+unsonneted
+unsonorous
+unsonsy
+unsoothable
+unsoothed
+unsoothfast
+unsoothing
+unsooty
+unsophistical
+unsophistically
+unsophisticate
+unsophisticated
+unsophisticatedly
+unsophisticatedness
+unsophistication
+unsophomoric
+unsordid
+unsore
+unsorrowed
+unsorrowing
+unsorry
+unsort
+unsortable
+unsorted
+unsorting
+unsotted
+unsought
+unsoul
+unsoulful
+unsoulfully
+unsoulish
+unsound
+unsoundable
+unsoundableness
+unsounded
+unsounding
+unsoundly
+unsoundness
+unsour
+unsoured
+unsoused
+unsovereign
+unsowed
+unsown
+unspaced
+unspacious
+unspaded
+unspan
+unspangled
+unspanked
+unspanned
+unspar
+unsparable
+unspared
+unsparing
+unsparingly
+unsparingness
+unsparkling
+unsparred
+unsparse
+unspatial
+unspatiality
+unspattered
+unspawned
+unspayed
+unspeak
+unspeakability
+unspeakable
+unspeakableness
+unspeakably
+unspeaking
+unspeared
+unspecialized
+unspecializing
+unspecific
+unspecified
+unspecifiedly
+unspecious
+unspecked
+unspeckled
+unspectacled
+unspectacular
+unspectacularly
+unspecterlike
+unspectrelike
+unspeculating
+unspeculative
+unspeculatively
+unsped
+unspeed
+unspeedy
+unspeered
+unspell
+unspellable
+unspelled
+unspelt
+unspendable
+unspending
+unspent
+unspewed
+unsphere
+unsphered
+unsphering
+unspiable
+unspiced
+unspicy
+unspied
+unspike
+unspillable
+unspin
+unspinsterlike
+unspinsterlikeness
+unspiral
+unspired
+unspirit
+unspirited
+unspiritedly
+unspiriting
+unspiritual
+unspirituality
+unspiritualize
+unspiritualized
+unspiritually
+unspiritualness
+unspissated
+unspit
+unspited
+unspiteful
+unspitted
+unsplashed
+unsplattered
+unsplayed
+unspleened
+unspleenish
+unspleenishly
+unsplendid
+unspliced
+unsplinted
+unsplintered
+unsplit
+unspoil
+unspoilable
+unspoilableness
+unspoilably
+unspoiled
+unspoken
+unspokenly
+unsponged
+unspongy
+unsponsored
+unspontaneous
+unspontaneously
+unspookish
+unsported
+unsportful
+unsporting
+unsportive
+unsportsmanlike
+unsportsmanly
+unspot
+unspotlighted
+unspottable
+unspotted
+unspottedly
+unspottedness
+unspoused
+unspouselike
+unspouted
+unsprained
+unsprayed
+unspread
+unsprightliness
+unsprightly
+unspring
+unspringing
+unspringlike
+unsprinkled
+unsprinklered
+unsprouted
+unsproutful
+unsprouting
+unspruced
+unsprung
+unspun
+unspurned
+unspurred
+unspying
+unsquandered
+unsquarable
+unsquare
+unsquared
+unsquashed
+unsqueamish
+unsqueezable
+unsqueezed
+unsquelched
+unsquinting
+unsquire
+unsquired
+unsquirelike
+unsquirted
+unstabbed
+unstability
+unstable
+unstabled
+unstableness
+unstablished
+unstably
+unstack
+unstacked
+unstacker
+unstaffed
+unstaged
+unstaggered
+unstaggering
+unstagnating
+unstagy
+unstaid
+unstaidly
+unstaidness
+unstain
+unstainable
+unstainableness
+unstained
+unstainedly
+unstainedness
+unstaled
+unstalked
+unstalled
+unstammering
+unstamped
+unstampeded
+unstanch
+unstanchable
+unstandard
+unstandardized
+unstanzaic
+unstar
+unstarch
+unstarched
+unstarlike
+unstarred
+unstarted
+unstarting
+unstartled
+unstarved
+unstatable
+unstate
+unstateable
+unstated
+unstately
+unstatesmanlike
+unstatic
+unstating
+unstation
+unstationary
+unstationed
+unstatistic
+unstatistical
+unstatued
+unstatuesque
+unstatutable
+unstatutably
+unstaunch
+unstaunchable
+unstaunched
+unstavable
+unstaveable
+unstaved
+unstayable
+unstayed
+unstayedness
+unstaying
+unsteadfast
+unsteadfastly
+unsteadfastness
+unsteadied
+unsteadily
+unsteadiness
+unsteady
+unsteadying
+unstealthy
+unsteamed
+unsteaming
+unsteck
+unstecked
+unsteel
+unsteeled
+unsteep
+unsteeped
+unsteepled
+unsteered
+unstemmable
+unstemmed
+unstentorian
+unstep
+unstercorated
+unstereotyped
+unsterile
+unsterilized
+unstern
+unstethoscoped
+unstewardlike
+unstewed
+unstick
+unsticking
+unstickingness
+unsticky
+unstiffen
+unstiffened
+unstifled
+unstigmatized
+unstill
+unstilled
+unstillness
+unstilted
+unstimulated
+unstimulating
+unsting
+unstinged
+unstinging
+unstinted
+unstintedly
+unstinting
+unstintingly
+unstippled
+unstipulated
+unstirrable
+unstirred
+unstirring
+unstitch
+unstitched
+unstitching
+unstock
+unstocked
+unstocking
+unstockinged
+unstoic
+unstoical
+unstoically
+unstoicize
+unstoked
+unstoken
+unstolen
+unstonable
+unstone
+unstoned
+unstoniness
+unstony
+unstooping
+unstop
+unstoppable
+unstopped
+unstopper
+unstoppered
+unstopple
+unstore
+unstored
+unstoried
+unstormed
+unstormy
+unstout
+unstoved
+unstow
+unstowed
+unstraddled
+unstrafed
+unstraight
+unstraightened
+unstraightforward
+unstraightness
+unstrain
+unstrained
+unstraitened
+unstrand
+unstranded
+unstrange
+unstrangered
+unstrangled
+unstrangulable
+unstrap
+unstrapped
+unstrategic
+unstrategically
+unstratified
+unstraying
+unstreaked
+unstrength
+unstrengthen
+unstrengthened
+unstrenuous
+unstressed
+unstressedly
+unstressedness
+unstretch
+unstretched
+unstrewed
+unstrewn
+unstriated
+unstricken
+unstrictured
+unstridulous
+unstrike
+unstriking
+unstring
+unstringed
+unstringing
+unstrip
+unstriped
+unstripped
+unstriving
+unstroked
+unstrong
+unstructural
+unstruggling
+unstrung
+unstubbed
+unstubborn
+unstuccoed
+unstuck
+unstudded
+unstudied
+unstudious
+unstuff
+unstuffed
+unstuffing
+unstultified
+unstumbling
+unstung
+unstunned
+unstunted
+unstupefied
+unstupid
+unstuttered
+unstuttering
+unsty
+unstyled
+unstylish
+unstylishly
+unstylishness
+unsubdivided
+unsubduable
+unsubduableness
+unsubduably
+unsubducted
+unsubdued
+unsubduedly
+unsubduedness
+unsubject
+unsubjectable
+unsubjected
+unsubjectedness
+unsubjection
+unsubjective
+unsubjectlike
+unsubjugate
+unsubjugated
+unsublimable
+unsublimated
+unsublimed
+unsubmerged
+unsubmergible
+unsubmerging
+unsubmission
+unsubmissive
+unsubmissively
+unsubmissiveness
+unsubmitted
+unsubmitting
+unsubordinate
+unsubordinated
+unsuborned
+unsubpoenaed
+unsubscribed
+unsubscribing
+unsubservient
+unsubsided
+unsubsidiary
+unsubsiding
+unsubsidized
+unsubstanced
+unsubstantial
+unsubstantiality
+unsubstantialize
+unsubstantially
+unsubstantialness
+unsubstantiate
+unsubstantiated
+unsubstantiation
+unsubstituted
+unsubtle
+unsubtleness
+unsubtlety
+unsubtly
+unsubtracted
+unsubventioned
+unsubventionized
+unsubversive
+unsubvertable
+unsubverted
+unsubvertive
+unsucceedable
+unsucceeded
+unsucceeding
+unsuccess
+unsuccessful
+unsuccessfully
+unsuccessfulness
+unsuccessive
+unsuccessively
+unsuccessiveness
+unsuccinct
+unsuccorable
+unsuccored
+unsucculent
+unsuccumbing
+unsucked
+unsuckled
+unsued
+unsufferable
+unsufferableness
+unsufferably
+unsuffered
+unsuffering
+unsufficed
+unsufficience
+unsufficiency
+unsufficient
+unsufficiently
+unsufficing
+unsufficingness
+unsufflated
+unsuffocate
+unsuffocated
+unsuffocative
+unsuffused
+unsugared
+unsugary
+unsuggested
+unsuggestedness
+unsuggestive
+unsuggestiveness
+unsuit
+unsuitability
+unsuitable
+unsuitableness
+unsuitably
+unsuited
+unsuiting
+unsulky
+unsullen
+unsulliable
+unsullied
+unsulliedly
+unsulliedness
+unsulphonated
+unsulphureous
+unsulphurized
+unsultry
+unsummable
+unsummarized
+unsummed
+unsummered
+unsummerlike
+unsummerly
+unsummonable
+unsummoned
+unsumptuary
+unsumptuous
+unsun
+unsunburned
+unsundered
+unsung
+unsunk
+unsunken
+unsunned
+unsunny
+unsuperable
+unsuperannuated
+unsupercilious
+unsuperficial
+unsuperfluous
+unsuperior
+unsuperlative
+unsupernatural
+unsupernaturalize
+unsupernaturalized
+unsuperscribed
+unsuperseded
+unsuperstitious
+unsupervised
+unsupervisedly
+unsupped
+unsupplantable
+unsupplanted
+unsupple
+unsuppled
+unsupplemented
+unsuppliable
+unsupplicated
+unsupplied
+unsupportable
+unsupportableness
+unsupportably
+unsupported
+unsupportedly
+unsupportedness
+unsupporting
+unsupposable
+unsupposed
+unsuppressed
+unsuppressible
+unsuppressibly
+unsuppurated
+unsuppurative
+unsupreme
+unsurcharge
+unsurcharged
+unsure
+unsurfaced
+unsurfeited
+unsurfeiting
+unsurgical
+unsurging
+unsurmised
+unsurmising
+unsurmountable
+unsurmountableness
+unsurmountably
+unsurmounted
+unsurnamed
+unsurpassable
+unsurpassableness
+unsurpassably
+unsurpassed
+unsurplice
+unsurpliced
+unsurprised
+unsurprising
+unsurrendered
+unsurrendering
+unsurrounded
+unsurveyable
+unsurveyed
+unsurvived
+unsurviving
+unsusceptibility
+unsusceptible
+unsusceptibleness
+unsusceptibly
+unsusceptive
+unsuspectable
+unsuspectably
+unsuspected
+unsuspectedly
+unsuspectedness
+unsuspectful
+unsuspectfulness
+unsuspectible
+unsuspecting
+unsuspectingly
+unsuspectingness
+unsuspective
+unsuspended
+unsuspicion
+unsuspicious
+unsuspiciously
+unsuspiciousness
+unsustainable
+unsustained
+unsustaining
+unsutured
+unswabbed
+unswaddle
+unswaddled
+unswaddling
+unswallowable
+unswallowed
+unswanlike
+unswapped
+unswarming
+unswathable
+unswathe
+unswathed
+unswathing
+unswayable
+unswayed
+unswayedness
+unswaying
+unswear
+unswearing
+unsweat
+unsweated
+unsweating
+unsweepable
+unsweet
+unsweeten
+unsweetened
+unsweetenedness
+unsweetly
+unsweetness
+unswell
+unswelled
+unswelling
+unsweltered
+unswept
+unswervable
+unswerved
+unswerving
+unswervingly
+unswilled
+unswing
+unswingled
+unswitched
+unswivel
+unswollen
+unswooning
+unsworn
+unswung
+unsyllabic
+unsyllabled
+unsyllogistical
+unsymbolic
+unsymbolical
+unsymbolically
+unsymbolicalness
+unsymbolized
+unsymmetrical
+unsymmetrically
+unsymmetricalness
+unsymmetrized
+unsymmetry
+unsympathetic
+unsympathetically
+unsympathizability
+unsympathizable
+unsympathized
+unsympathizing
+unsympathizingly
+unsympathy
+unsymphonious
+unsymptomatic
+unsynchronized
+unsynchronous
+unsyncopated
+unsyndicated
+unsynonymous
+unsyntactical
+unsynthetic
+unsyringed
+unsystematic
+unsystematical
+unsystematically
+unsystematized
+unsystematizedly
+unsystematizing
+unsystemizable
+untabernacled
+untabled
+untabulated
+untack
+untacked
+untacking
+untackle
+untackled
+untactful
+untactfully
+untactfulness
+untagged
+untailed
+untailorlike
+untailorly
+untaint
+untaintable
+untainted
+untaintedly
+untaintedness
+untainting
+untakable
+untakableness
+untakeable
+untakeableness
+untaken
+untaking
+untalented
+untalkative
+untalked
+untalking
+untall
+untallied
+untallowed
+untamable
+untamableness
+untame
+untamed
+untamedly
+untamedness
+untamely
+untameness
+untampered
+untangential
+untangibility
+untangible
+untangibleness
+untangibly
+untangle
+untangled
+untangling
+untanned
+untantalized
+untantalizing
+untap
+untaped
+untapered
+untapering
+untapestried
+untappable
+untapped
+untar
+untarnishable
+untarnished
+untarred
+untarried
+untarrying
+untartarized
+untasked
+untasseled
+untastable
+untaste
+untasteable
+untasted
+untasteful
+untastefully
+untastefulness
+untasting
+untasty
+untattered
+untattooed
+untaught
+untaughtness
+untaunted
+untaut
+untautological
+untawdry
+untawed
+untax
+untaxable
+untaxed
+untaxing
+unteach
+unteachable
+unteachableness
+unteachably
+unteacherlike
+unteaching
+unteam
+unteamed
+unteaming
+untearable
+unteased
+unteasled
+untechnical
+untechnicalize
+untechnically
+untedded
+untedious
+unteem
+unteeming
+unteethed
+untelegraphed
+untell
+untellable
+untellably
+untelling
+untemper
+untemperamental
+untemperate
+untemperately
+untemperateness
+untempered
+untempering
+untempested
+untempestuous
+untempled
+untemporal
+untemporary
+untemporizing
+untemptability
+untemptable
+untemptably
+untempted
+untemptible
+untemptibly
+untempting
+untemptingly
+untemptingness
+untenability
+untenable
+untenableness
+untenably
+untenacious
+untenacity
+untenant
+untenantable
+untenantableness
+untenanted
+untended
+untender
+untendered
+untenderly
+untenderness
+untenible
+untenibleness
+untenibly
+untense
+untent
+untentaculate
+untented
+untentered
+untenty
+unterminable
+unterminableness
+unterminably
+unterminated
+unterminating
+unterraced
+unterrestrial
+unterrible
+unterribly
+unterrifiable
+unterrific
+unterrified
+unterrifying
+unterrorized
+untessellated
+untestable
+untestamentary
+untested
+untestifying
+untether
+untethered
+untethering
+untewed
+untextual
+unthank
+unthanked
+unthankful
+unthankfully
+unthankfulness
+unthanking
+unthatch
+unthatched
+unthaw
+unthawed
+unthawing
+untheatric
+untheatrical
+untheatrically
+untheistic
+unthematic
+untheological
+untheologically
+untheologize
+untheoretic
+untheoretical
+untheorizable
+untherapeutical
+unthick
+unthicken
+unthickened
+unthievish
+unthink
+unthinkability
+unthinkable
+unthinkableness
+unthinkably
+unthinker
+unthinking
+unthinkingly
+unthinkingness
+unthinned
+unthinning
+unthirsting
+unthirsty
+unthistle
+untholeable
+untholeably
+unthorn
+unthorny
+unthorough
+unthought
+unthoughted
+unthoughtedly
+unthoughtful
+unthoughtfully
+unthoughtfulness
+unthoughtlike
+unthrall
+unthralled
+unthrashed
+unthread
+unthreadable
+unthreaded
+unthreading
+unthreatened
+unthreatening
+unthreshed
+unthrid
+unthridden
+unthrift
+unthriftihood
+unthriftily
+unthriftiness
+unthriftlike
+unthrifty
+unthrilled
+unthrilling
+unthriven
+unthriving
+unthrivingly
+unthrivingness
+unthrob
+unthrone
+unthroned
+unthronged
+unthroning
+unthrottled
+unthrowable
+unthrown
+unthrushlike
+unthrust
+unthumbed
+unthumped
+unthundered
+unthwacked
+unthwarted
+untiaraed
+unticketed
+untickled
+untidal
+untidily
+untidiness
+untidy
+untie
+untied
+untight
+untighten
+untightness
+until
+untile
+untiled
+untill
+untillable
+untilled
+untilling
+untilt
+untilted
+untilting
+untimbered
+untimed
+untimedness
+untimeliness
+untimely
+untimeous
+untimeously
+untimesome
+untimorous
+untin
+untinct
+untinctured
+untine
+untinged
+untinkered
+untinned
+untinseled
+untinted
+untippable
+untipped
+untippled
+untipt
+untirability
+untirable
+untire
+untired
+untiredly
+untiring
+untiringly
+untissued
+untithability
+untithable
+untithed
+untitled
+untittering
+untitular
+unto
+untoadying
+untoasted
+untogaed
+untoggle
+untoggler
+untoiled
+untoileted
+untoiling
+untold
+untolerable
+untolerableness
+untolerably
+untolerated
+untomb
+untombed
+untonality
+untone
+untoned
+untongued
+untonsured
+untooled
+untooth
+untoothed
+untoothsome
+untoothsomeness
+untop
+untopographical
+untopped
+untopping
+untormented
+untorn
+untorpedoed
+untorpid
+untorrid
+untortuous
+untorture
+untortured
+untossed
+untotaled
+untotalled
+untottering
+untouch
+untouchability
+untouchable
+untouchableness
+untouchably
+untouched
+untouchedness
+untouching
+untough
+untoured
+untouristed
+untoward
+untowardliness
+untowardly
+untowardness
+untowered
+untown
+untownlike
+untrace
+untraceable
+untraceableness
+untraceably
+untraced
+untraceried
+untracked
+untractability
+untractable
+untractableness
+untractably
+untractarian
+untractible
+untractibleness
+untradeable
+untraded
+untradesmanlike
+untrading
+untraditional
+untraduced
+untraffickable
+untrafficked
+untragic
+untragical
+untrailed
+untrain
+untrainable
+untrained
+untrainedly
+untrainedness
+untraitored
+untraitorous
+untrammed
+untrammeled
+untrammeledness
+untramped
+untrampled
+untrance
+untranquil
+untranquilized
+untranquillize
+untranquillized
+untransacted
+untranscended
+untranscendental
+untranscribable
+untranscribed
+untransferable
+untransferred
+untransfigured
+untransfixed
+untransformable
+untransformed
+untransforming
+untransfused
+untransfusible
+untransgressed
+untransient
+untransitable
+untransitive
+untransitory
+untranslatability
+untranslatable
+untranslatableness
+untranslatably
+untranslated
+untransmigrated
+untransmissible
+untransmitted
+untransmutable
+untransmuted
+untransparent
+untranspassable
+untranspired
+untranspiring
+untransplanted
+untransportable
+untransported
+untransposed
+untransubstantiated
+untrappable
+untrapped
+untrashed
+untravelable
+untraveled
+untraveling
+untravellable
+untravelling
+untraversable
+untraversed
+untravestied
+untreacherous
+untread
+untreadable
+untreading
+untreasonable
+untreasure
+untreasured
+untreatable
+untreatableness
+untreatably
+untreated
+untreed
+untrekked
+untrellised
+untrembling
+untremblingly
+untremendous
+untremulous
+untrenched
+untrepanned
+untrespassed
+untrespassing
+untress
+untressed
+untriable
+untribal
+untributary
+untriced
+untrickable
+untricked
+untried
+untrifling
+untrig
+untrigonometrical
+untrill
+untrim
+untrimmable
+untrimmed
+untrimmedness
+untrinitarian
+untripe
+untrippable
+untripped
+untripping
+untrite
+untriturated
+untriumphable
+untriumphant
+untriumphed
+untrochaic
+untrod
+untrodden
+untroddenness
+untrolled
+untrophied
+untropical
+untrotted
+untroublable
+untrouble
+untroubled
+untroubledly
+untroubledness
+untroublesome
+untroublesomeness
+untrounced
+untrowed
+untruant
+untruck
+untruckled
+untruckling
+untrue
+untrueness
+untruism
+untruly
+untrumped
+untrumpeted
+untrumping
+untrundled
+untrunked
+untruss
+untrussed
+untrusser
+untrussing
+untrust
+untrustably
+untrusted
+untrustful
+untrustiness
+untrusting
+untrustworthily
+untrustworthiness
+untrustworthy
+untrusty
+untruth
+untruther
+untruthful
+untruthfully
+untruthfulness
+untrying
+untubbed
+untuck
+untucked
+untuckered
+untucking
+untufted
+untugged
+untumbled
+untumefied
+untumid
+untumultuous
+untunable
+untunableness
+untunably
+untune
+untuneable
+untuneableness
+untuneably
+untuned
+untuneful
+untunefully
+untunefulness
+untuning
+untunneled
+untupped
+unturbaned
+unturbid
+unturbulent
+unturf
+unturfed
+unturgid
+unturn
+unturnable
+unturned
+unturning
+unturpentined
+unturreted
+untusked
+untutelar
+untutored
+untutoredly
+untutoredness
+untwilled
+untwinable
+untwine
+untwineable
+untwined
+untwining
+untwinkling
+untwinned
+untwirl
+untwirled
+untwirling
+untwist
+untwisted
+untwister
+untwisting
+untwitched
+untying
+untypical
+untypically
+untyrannic
+untyrannical
+untyrantlike
+untz
+unubiquitous
+unugly
+unulcerated
+unultra
+unumpired
+ununanimity
+ununanimous
+ununanimously
+ununderstandable
+ununderstandably
+ununderstanding
+ununderstood
+unundertaken
+unundulatory
+Unungun
+ununifiable
+ununified
+ununiform
+ununiformed
+ununiformity
+ununiformly
+ununiformness
+ununitable
+ununitableness
+ununitably
+ununited
+ununiting
+ununiversity
+ununiversitylike
+unupbraiding
+unupbraidingly
+unupholstered
+unupright
+unuprightly
+unuprightness
+unupset
+unupsettable
+unurban
+unurbane
+unurged
+unurgent
+unurging
+unurn
+unurned
+unusable
+unusableness
+unusably
+unuse
+unused
+unusedness
+unuseful
+unusefully
+unusefulness
+unushered
+unusual
+unusuality
+unusually
+unusualness
+unusurious
+unusurped
+unusurping
+unutilizable
+unutterability
+unutterable
+unutterableness
+unutterably
+unuttered
+unuxorial
+unuxorious
+unvacant
+unvaccinated
+unvacillating
+unvailable
+unvain
+unvaleted
+unvaletudinary
+unvaliant
+unvalid
+unvalidated
+unvalidating
+unvalidity
+unvalidly
+unvalidness
+unvalorous
+unvaluable
+unvaluableness
+unvaluably
+unvalue
+unvalued
+unvamped
+unvanishing
+unvanquishable
+unvanquished
+unvantaged
+unvaporized
+unvariable
+unvariableness
+unvariably
+unvariant
+unvaried
+unvariedly
+unvariegated
+unvarnished
+unvarnishedly
+unvarnishedness
+unvarying
+unvaryingly
+unvaryingness
+unvascular
+unvassal
+unvatted
+unvaulted
+unvaulting
+unvaunted
+unvaunting
+unvauntingly
+unveering
+unveil
+unveiled
+unveiledly
+unveiledness
+unveiler
+unveiling
+unveilment
+unveined
+unvelvety
+unvendable
+unvendableness
+unvended
+unvendible
+unvendibleness
+unveneered
+unvenerable
+unvenerated
+unvenereal
+unvenged
+unveniable
+unvenial
+unvenom
+unvenomed
+unvenomous
+unventable
+unvented
+unventilated
+unventured
+unventurous
+unvenued
+unveracious
+unveracity
+unverbalized
+unverdant
+unverdured
+unveridical
+unverifiable
+unverifiableness
+unverifiably
+unverified
+unverifiedness
+unveritable
+unverity
+unvermiculated
+unverminous
+unvernicular
+unversatile
+unversed
+unversedly
+unversedness
+unversified
+unvertical
+unvessel
+unvesseled
+unvest
+unvested
+unvetoed
+unvexed
+unviable
+unvibrated
+unvibrating
+unvicar
+unvicarious
+unvicariously
+unvicious
+unvictimized
+unvictorious
+unvictualed
+unvictualled
+unviewable
+unviewed
+unvigilant
+unvigorous
+unvigorously
+unvilified
+unvillaged
+unvindicated
+unvindictive
+unvindictively
+unvindictiveness
+unvinous
+unvintaged
+unviolable
+unviolated
+unviolenced
+unviolent
+unviolined
+unvirgin
+unvirginal
+unvirginlike
+unvirile
+unvirility
+unvirtue
+unvirtuous
+unvirtuously
+unvirtuousness
+unvirulent
+unvisible
+unvisibleness
+unvisibly
+unvision
+unvisionary
+unvisioned
+unvisitable
+unvisited
+unvisor
+unvisored
+unvisualized
+unvital
+unvitalized
+unvitalness
+unvitiated
+unvitiatedly
+unvitiatedness
+unvitrescibility
+unvitrescible
+unvitrifiable
+unvitrified
+unvitriolized
+unvituperated
+unvivacious
+unvivid
+unvivified
+unvizard
+unvizarded
+unvocal
+unvocalized
+unvociferous
+unvoice
+unvoiced
+unvoiceful
+unvoicing
+unvoidable
+unvoided
+unvolatile
+unvolatilize
+unvolatilized
+unvolcanic
+unvolitioned
+unvoluminous
+unvoluntarily
+unvoluntariness
+unvoluntary
+unvolunteering
+unvoluptuous
+unvomited
+unvoracious
+unvote
+unvoted
+unvoting
+unvouched
+unvouchedly
+unvouchedness
+unvouchsafed
+unvowed
+unvoweled
+unvoyageable
+unvoyaging
+unvulcanized
+unvulgar
+unvulgarize
+unvulgarized
+unvulgarly
+unvulnerable
+unwadable
+unwadded
+unwadeable
+unwaded
+unwading
+unwafted
+unwaged
+unwagered
+unwaggable
+unwaggably
+unwagged
+unwailed
+unwailing
+unwainscoted
+unwaited
+unwaiting
+unwaked
+unwakeful
+unwakefulness
+unwakened
+unwakening
+unwaking
+unwalkable
+unwalked
+unwalking
+unwall
+unwalled
+unwallet
+unwallowed
+unwan
+unwandered
+unwandering
+unwaning
+unwanted
+unwanton
+unwarbled
+unware
+unwarely
+unwareness
+unwarily
+unwariness
+unwarlike
+unwarlikeness
+unwarm
+unwarmable
+unwarmed
+unwarming
+unwarn
+unwarned
+unwarnedly
+unwarnedness
+unwarnished
+unwarp
+unwarpable
+unwarped
+unwarping
+unwarrant
+unwarrantability
+unwarrantable
+unwarrantableness
+unwarrantably
+unwarranted
+unwarrantedly
+unwarrantedness
+unwary
+unwashable
+unwashed
+unwashedness
+unwassailing
+unwastable
+unwasted
+unwasteful
+unwastefully
+unwasting
+unwastingly
+unwatchable
+unwatched
+unwatchful
+unwatchfully
+unwatchfulness
+unwatching
+unwater
+unwatered
+unwaterlike
+unwatermarked
+unwatery
+unwattled
+unwaved
+unwaverable
+unwavered
+unwavering
+unwaveringly
+unwaving
+unwax
+unwaxed
+unwayed
+unwayward
+unweaken
+unweakened
+unweal
+unwealsomeness
+unwealthy
+unweaned
+unweapon
+unweaponed
+unwearable
+unweariability
+unweariable
+unweariableness
+unweariably
+unwearied
+unweariedly
+unweariedness
+unwearily
+unweariness
+unwearing
+unwearisome
+unwearisomeness
+unweary
+unwearying
+unwearyingly
+unweathered
+unweatherly
+unweatherwise
+unweave
+unweaving
+unweb
+unwebbed
+unwebbing
+unwed
+unwedded
+unweddedly
+unweddedness
+unwedge
+unwedgeable
+unwedged
+unweeded
+unweel
+unweelness
+unweened
+unweeping
+unweeting
+unweetingly
+unweft
+unweighable
+unweighed
+unweighing
+unweight
+unweighted
+unweighty
+unwelcome
+unwelcomed
+unwelcomely
+unwelcomeness
+unweld
+unweldable
+unwelded
+unwell
+unwellness
+unwelted
+unwept
+unwestern
+unwesternized
+unwet
+unwettable
+unwetted
+unwheedled
+unwheel
+unwheeled
+unwhelmed
+unwhelped
+unwhetted
+unwhig
+unwhiglike
+unwhimsical
+unwhining
+unwhip
+unwhipped
+unwhirled
+unwhisked
+unwhiskered
+unwhisperable
+unwhispered
+unwhispering
+unwhistled
+unwhite
+unwhited
+unwhitened
+unwhitewashed
+unwholesome
+unwholesomely
+unwholesomeness
+unwidened
+unwidowed
+unwield
+unwieldable
+unwieldily
+unwieldiness
+unwieldly
+unwieldy
+unwifed
+unwifelike
+unwifely
+unwig
+unwigged
+unwild
+unwilily
+unwiliness
+unwill
+unwilled
+unwillful
+unwillfully
+unwillfulness
+unwilling
+unwillingly
+unwillingness
+unwilted
+unwilting
+unwily
+unwincing
+unwincingly
+unwind
+unwindable
+unwinding
+unwindingly
+unwindowed
+unwindy
+unwingable
+unwinged
+unwinking
+unwinkingly
+unwinnable
+unwinning
+unwinnowed
+unwinsome
+unwinter
+unwintry
+unwiped
+unwire
+unwired
+unwisdom
+unwise
+unwisely
+unwiseness
+unwish
+unwished
+unwishful
+unwishing
+unwist
+unwistful
+unwitch
+unwitched
+unwithdrawable
+unwithdrawing
+unwithdrawn
+unwitherable
+unwithered
+unwithering
+unwithheld
+unwithholden
+unwithholding
+unwithstanding
+unwithstood
+unwitless
+unwitnessed
+unwitted
+unwittily
+unwitting
+unwittingly
+unwittingness
+unwitty
+unwive
+unwived
+unwoeful
+unwoful
+unwoman
+unwomanish
+unwomanize
+unwomanized
+unwomanlike
+unwomanliness
+unwomanly
+unwomb
+unwon
+unwonder
+unwonderful
+unwondering
+unwonted
+unwontedly
+unwontedness
+unwooded
+unwooed
+unwoof
+unwooly
+unwordable
+unwordably
+unwordily
+unwordy
+unwork
+unworkability
+unworkable
+unworkableness
+unworkably
+unworked
+unworkedness
+unworker
+unworking
+unworkmanlike
+unworkmanly
+unworld
+unworldliness
+unworldly
+unwormed
+unwormy
+unworn
+unworried
+unworriedly
+unworriedness
+unworshiped
+unworshipful
+unworshiping
+unworshipped
+unworshipping
+unworth
+unworthily
+unworthiness
+unworthy
+unwotting
+unwound
+unwoundable
+unwoundableness
+unwounded
+unwoven
+unwrangling
+unwrap
+unwrapped
+unwrapper
+unwrapping
+unwrathful
+unwrathfully
+unwreaked
+unwreathe
+unwreathed
+unwreathing
+unwrecked
+unwrench
+unwrenched
+unwrested
+unwrestedly
+unwresting
+unwrestled
+unwretched
+unwriggled
+unwrinkle
+unwrinkleable
+unwrinkled
+unwrit
+unwritable
+unwrite
+unwriteable
+unwriting
+unwritten
+unwronged
+unwrongful
+unwrought
+unwrung
+unyachtsmanlike
+unyeaned
+unyearned
+unyearning
+unyielded
+unyielding
+unyieldingly
+unyieldingness
+unyoke
+unyoked
+unyoking
+unyoung
+unyouthful
+unyouthfully
+unze
+unzealous
+unzealously
+unzealousness
+unzen
+unzephyrlike
+unzone
+unzoned
+up
+upaisle
+upaithric
+upalley
+upalong
+upanishadic
+upapurana
+uparch
+uparching
+uparise
+uparm
+uparna
+upas
+upattic
+upavenue
+upbank
+upbar
+upbay
+upbear
+upbearer
+upbeat
+upbelch
+upbelt
+upbend
+upbid
+upbind
+upblacken
+upblast
+upblaze
+upblow
+upboil
+upbolster
+upbolt
+upboost
+upborne
+upbotch
+upboulevard
+upbound
+upbrace
+upbraid
+upbraider
+upbraiding
+upbraidingly
+upbray
+upbreak
+upbred
+upbreed
+upbreeze
+upbrighten
+upbrim
+upbring
+upbristle
+upbroken
+upbrook
+upbrought
+upbrow
+upbubble
+upbuild
+upbuilder
+upbulging
+upbuoy
+upbuoyance
+upburn
+upburst
+upbuy
+upcall
+upcanal
+upcanyon
+upcarry
+upcast
+upcatch
+upcaught
+upchamber
+upchannel
+upchariot
+upchimney
+upchoke
+upchuck
+upcity
+upclimb
+upclose
+upcloser
+upcoast
+upcock
+upcoil
+upcolumn
+upcome
+upcoming
+upconjure
+upcountry
+upcourse
+upcover
+upcrane
+upcrawl
+upcreek
+upcreep
+upcrop
+upcrowd
+upcry
+upcurl
+upcurrent
+upcurve
+upcushion
+upcut
+updart
+update
+updeck
+updelve
+updive
+updo
+updome
+updraft
+updrag
+updraw
+updrink
+updry
+upeat
+upend
+upeygan
+upfeed
+upfield
+upfill
+upfingered
+upflame
+upflare
+upflash
+upflee
+upflicker
+upfling
+upfloat
+upflood
+upflow
+upflower
+upflung
+upfly
+upfold
+upfollow
+upframe
+upfurl
+upgale
+upgang
+upgape
+upgather
+upgaze
+upget
+upgird
+upgirt
+upgive
+upglean
+upglide
+upgo
+upgorge
+upgrade
+upgrave
+upgrow
+upgrowth
+upgully
+upgush
+uphand
+uphang
+upharbor
+upharrow
+uphasp
+upheal
+upheap
+uphearted
+upheaval
+upheavalist
+upheave
+upheaven
+upheld
+uphelm
+uphelya
+upher
+uphill
+uphillward
+uphoard
+uphoist
+uphold
+upholden
+upholder
+upholster
+upholstered
+upholsterer
+upholsteress
+upholsterous
+upholstery
+upholsterydom
+upholstress
+uphung
+uphurl
+upisland
+upjerk
+upjet
+upkeep
+upkindle
+upknell
+upknit
+upla
+upladder
+uplaid
+uplake
+upland
+uplander
+uplandish
+uplane
+uplay
+uplead
+upleap
+upleg
+uplick
+uplift
+upliftable
+uplifted
+upliftedly
+upliftedness
+uplifter
+uplifting
+upliftingly
+upliftingness
+upliftitis
+upliftment
+uplight
+uplimb
+uplimber
+upline
+uplock
+uplong
+uplook
+uplooker
+uploom
+uploop
+uplying
+upmaking
+upmast
+upmix
+upmost
+upmount
+upmountain
+upmove
+upness
+upo
+upon
+uppard
+uppent
+upper
+upperch
+uppercut
+upperer
+upperest
+upperhandism
+uppermore
+uppermost
+uppers
+uppertendom
+uppile
+upping
+uppish
+uppishly
+uppishness
+uppity
+upplough
+upplow
+uppluck
+uppoint
+uppoise
+uppop
+uppour
+uppowoc
+upprick
+upprop
+uppuff
+uppull
+uppush
+upquiver
+upraisal
+upraise
+upraiser
+upreach
+uprear
+uprein
+uprend
+uprender
+uprest
+uprestore
+uprid
+upridge
+upright
+uprighteous
+uprighteously
+uprighteousness
+uprighting
+uprightish
+uprightly
+uprightness
+uprights
+uprip
+uprisal
+uprise
+uprisement
+uprisen
+upriser
+uprising
+uprist
+uprive
+upriver
+uproad
+uproar
+uproariness
+uproarious
+uproariously
+uproariousness
+uproom
+uproot
+uprootal
+uprooter
+uprose
+uprouse
+uproute
+uprun
+uprush
+upsaddle
+upscale
+upscrew
+upscuddle
+upseal
+upseek
+upseize
+upsend
+upset
+upsetment
+upsettable
+upsettal
+upsetted
+upsetter
+upsetting
+upsettingly
+upsey
+upshaft
+upshear
+upsheath
+upshoot
+upshore
+upshot
+upshoulder
+upshove
+upshut
+upside
+upsides
+upsighted
+upsiloid
+upsilon
+upsilonism
+upsit
+upsitten
+upsitting
+upslant
+upslip
+upslope
+upsmite
+upsnatch
+upsoak
+upsoar
+upsolve
+upspeak
+upspear
+upspeed
+upspew
+upspin
+upspire
+upsplash
+upspout
+upspread
+upspring
+upsprinkle
+upsprout
+upspurt
+upstaff
+upstage
+upstair
+upstairs
+upstamp
+upstand
+upstander
+upstanding
+upstare
+upstart
+upstartism
+upstartle
+upstartness
+upstate
+upstater
+upstaunch
+upstay
+upsteal
+upsteam
+upstem
+upstep
+upstick
+upstir
+upstraight
+upstream
+upstreamward
+upstreet
+upstretch
+upstrike
+upstrive
+upstroke
+upstruggle
+upsuck
+upsun
+upsup
+upsurge
+upsurgence
+upswallow
+upswarm
+upsway
+upsweep
+upswell
+upswing
+uptable
+uptake
+uptaker
+uptear
+uptemper
+uptend
+upthrow
+upthrust
+upthunder
+uptide
+uptie
+uptill
+uptilt
+uptorn
+uptoss
+uptower
+uptown
+uptowner
+uptrace
+uptrack
+uptrail
+uptrain
+uptree
+uptrend
+uptrill
+uptrunk
+uptruss
+uptube
+uptuck
+upturn
+uptwined
+uptwist
+Upupa
+Upupidae
+upupoid
+upvalley
+upvomit
+upwaft
+upwall
+upward
+upwardly
+upwardness
+upwards
+upwarp
+upwax
+upway
+upways
+upwell
+upwent
+upwheel
+upwhelm
+upwhir
+upwhirl
+upwind
+upwith
+upwork
+upwound
+upwrap
+upwreathe
+upwrench
+upwring
+upwrought
+upyard
+upyoke
+ur
+ura
+urachal
+urachovesical
+urachus
+uracil
+uraemic
+uraeus
+Uragoga
+Ural
+ural
+urali
+Uralian
+Uralic
+uraline
+uralite
+uralitic
+uralitization
+uralitize
+uralium
+uramido
+uramil
+uramilic
+uramino
+Uran
+uran
+uranalysis
+uranate
+Urania
+Uranian
+uranic
+Uranicentric
+uranidine
+uraniferous
+uraniid
+Uraniidae
+uranin
+uranine
+uraninite
+uranion
+uraniscochasma
+uraniscoplasty
+uraniscoraphy
+uraniscorrhaphy
+uranism
+uranist
+uranite
+uranitic
+uranium
+uranocircite
+uranographer
+uranographic
+uranographical
+uranographist
+uranography
+uranolatry
+uranolite
+uranological
+uranology
+uranometria
+uranometrical
+uranometry
+uranophane
+uranophotography
+uranoplastic
+uranoplasty
+uranoplegia
+uranorrhaphia
+uranorrhaphy
+uranoschisis
+uranoschism
+uranoscope
+uranoscopia
+uranoscopic
+Uranoscopidae
+Uranoscopus
+uranoscopy
+uranospathite
+uranosphaerite
+uranospinite
+uranostaphyloplasty
+uranostaphylorrhaphy
+uranotantalite
+uranothallite
+uranothorite
+uranotil
+uranous
+Uranus
+uranyl
+uranylic
+urao
+urare
+urari
+Urartaean
+Urartic
+urase
+urataemia
+urate
+uratemia
+uratic
+uratoma
+uratosis
+uraturia
+urazine
+urazole
+urbacity
+urbainite
+Urban
+urban
+urbane
+urbanely
+urbaneness
+urbanism
+Urbanist
+urbanist
+urbanite
+urbanity
+urbanization
+urbanize
+urbarial
+urbian
+urbic
+Urbicolae
+urbicolous
+urbification
+urbify
+urbinate
+urceiform
+urceolar
+urceolate
+urceole
+urceoli
+Urceolina
+urceolus
+urceus
+urchin
+urchiness
+urchinlike
+urchinly
+urd
+urde
+urdee
+Urdu
+ure
+urea
+ureal
+ureameter
+ureametry
+urease
+urechitin
+urechitoxin
+uredema
+Uredinales
+uredine
+Uredineae
+uredineal
+uredineous
+uredinia
+uredinial
+Urediniopsis
+urediniospore
+urediniosporic
+uredinium
+uredinoid
+uredinologist
+uredinology
+uredinous
+Uredo
+uredo
+uredosorus
+uredospore
+uredosporic
+uredosporiferous
+uredosporous
+uredostage
+ureic
+ureid
+ureide
+ureido
+uremia
+uremic
+Urena
+urent
+ureometer
+ureometry
+ureosecretory
+uresis
+uretal
+ureter
+ureteral
+ureteralgia
+uretercystoscope
+ureterectasia
+ureterectasis
+ureterectomy
+ureteric
+ureteritis
+ureterocele
+ureterocervical
+ureterocolostomy
+ureterocystanastomosis
+ureterocystoscope
+ureterocystostomy
+ureterodialysis
+ureteroenteric
+ureteroenterostomy
+ureterogenital
+ureterogram
+ureterograph
+ureterography
+ureterointestinal
+ureterolith
+ureterolithiasis
+ureterolithic
+ureterolithotomy
+ureterolysis
+ureteronephrectomy
+ureterophlegma
+ureteroplasty
+ureteroproctostomy
+ureteropyelitis
+ureteropyelogram
+ureteropyelography
+ureteropyelonephritis
+ureteropyelostomy
+ureteropyosis
+ureteroradiography
+ureterorectostomy
+ureterorrhagia
+ureterorrhaphy
+ureterosalpingostomy
+ureterosigmoidostomy
+ureterostegnosis
+ureterostenoma
+ureterostenosis
+ureterostoma
+ureterostomy
+ureterotomy
+ureterouteral
+ureterovaginal
+ureterovesical
+urethan
+urethane
+urethra
+urethrae
+urethragraph
+urethral
+urethralgia
+urethrameter
+urethrascope
+urethratome
+urethratresia
+urethrectomy
+urethremphraxis
+urethreurynter
+urethrism
+urethritic
+urethritis
+urethroblennorrhea
+urethrobulbar
+urethrocele
+urethrocystitis
+urethrogenital
+urethrogram
+urethrograph
+urethrometer
+urethropenile
+urethroperineal
+urethrophyma
+urethroplastic
+urethroplasty
+urethroprostatic
+urethrorectal
+urethrorrhagia
+urethrorrhaphy
+urethrorrhea
+urethrorrhoea
+urethroscope
+urethroscopic
+urethroscopical
+urethroscopy
+urethrosexual
+urethrospasm
+urethrostaxis
+urethrostenosis
+urethrostomy
+urethrotome
+urethrotomic
+urethrotomy
+urethrovaginal
+urethrovesical
+urethylan
+uretic
+ureylene
+urf
+urfirnis
+urge
+urgence
+urgency
+urgent
+urgently
+urgentness
+urger
+Urginea
+urging
+urgingly
+Urgonian
+urheen
+Uri
+Uria
+Uriah
+urial
+Urian
+uric
+uricacidemia
+uricaciduria
+uricaemia
+uricaemic
+uricemia
+uricemic
+uricolysis
+uricolytic
+uridrosis
+Uriel
+urinaemia
+urinal
+urinalist
+urinalysis
+urinant
+urinarium
+urinary
+urinate
+urination
+urinative
+urinator
+urine
+urinemia
+uriniferous
+uriniparous
+urinocryoscopy
+urinogenital
+urinogenitary
+urinogenous
+urinologist
+urinology
+urinomancy
+urinometer
+urinometric
+urinometry
+urinoscopic
+urinoscopist
+urinoscopy
+urinose
+urinosexual
+urinous
+urinousness
+urite
+urlar
+urled
+urling
+urluch
+urman
+urn
+urna
+urnae
+urnal
+urnflower
+urnful
+urning
+urningism
+urnism
+urnlike
+urnmaker
+Uro
+uroacidimeter
+uroazotometer
+urobenzoic
+urobilin
+urobilinemia
+urobilinogen
+urobilinogenuria
+urobilinuria
+urocanic
+urocele
+Urocerata
+urocerid
+Uroceridae
+urochloralic
+urochord
+Urochorda
+urochordal
+urochordate
+urochrome
+urochromogen
+Urocoptidae
+Urocoptis
+urocyanogen
+Urocyon
+urocyst
+urocystic
+Urocystis
+urocystitis
+urodaeum
+Urodela
+urodelan
+urodele
+urodelous
+urodialysis
+urodynia
+uroedema
+uroerythrin
+urofuscohematin
+urogaster
+urogastric
+urogenic
+urogenital
+urogenitary
+urogenous
+uroglaucin
+Uroglena
+urogram
+urography
+urogravimeter
+urohematin
+urohyal
+urolagnia
+uroleucic
+uroleucinic
+urolith
+urolithiasis
+urolithic
+urolithology
+urologic
+urological
+urologist
+urology
+urolutein
+urolytic
+uromancy
+uromantia
+uromantist
+Uromastix
+uromelanin
+uromelus
+uromere
+uromeric
+urometer
+Uromyces
+Uromycladium
+uronephrosis
+uronic
+uronology
+uropatagium
+Uropeltidae
+urophanic
+urophanous
+urophein
+Urophlyctis
+urophthisis
+uroplania
+uropod
+uropodal
+uropodous
+uropoetic
+uropoiesis
+uropoietic
+uroporphyrin
+uropsile
+Uropsilus
+uroptysis
+Uropygi
+uropygial
+uropygium
+uropyloric
+urorosein
+urorrhagia
+urorrhea
+urorubin
+urosaccharometry
+urosacral
+uroschesis
+uroscopic
+uroscopist
+uroscopy
+urosepsis
+uroseptic
+urosis
+urosomatic
+urosome
+urosomite
+urosomitic
+urostea
+urostealith
+urostegal
+urostege
+urostegite
+urosteon
+urosternite
+urosthene
+urosthenic
+urostylar
+urostyle
+urotoxia
+urotoxic
+urotoxicity
+urotoxin
+urotoxy
+uroxanate
+uroxanic
+uroxanthin
+uroxin
+urradhus
+urrhodin
+urrhodinic
+Urs
+Ursa
+ursal
+ursicidal
+ursicide
+Ursid
+Ursidae
+ursiform
+ursigram
+ursine
+ursoid
+ursolic
+urson
+ursone
+ursuk
+Ursula
+Ursuline
+Ursus
+Urtica
+urtica
+Urticaceae
+urticaceous
+Urticales
+urticant
+urticaria
+urticarial
+urticarious
+Urticastrum
+urticate
+urticating
+urtication
+urticose
+urtite
+Uru
+urubu
+urucu
+urucuri
+Uruguayan
+uruisg
+Urukuena
+urunday
+urus
+urushi
+urushic
+urushinic
+urushiol
+urushiye
+urva
+us
+usability
+usable
+usableness
+usage
+usager
+usance
+usar
+usara
+usaron
+usation
+use
+used
+usedly
+usedness
+usednt
+usee
+useful
+usefullish
+usefully
+usefulness
+usehold
+useless
+uselessly
+uselessness
+usent
+user
+ush
+ushabti
+ushabtiu
+Ushak
+Usheen
+usher
+usherance
+usherdom
+usherer
+usheress
+usherette
+Usherian
+usherian
+usherism
+usherless
+ushership
+usings
+Usipetes
+usitate
+usitative
+Uskara
+Uskok
+Usnea
+usnea
+Usneaceae
+usneaceous
+usneoid
+usnic
+usninic
+Uspanteca
+usque
+usquebaugh
+usself
+ussels
+usselven
+ussingite
+ust
+Ustarana
+uster
+Ustilaginaceae
+ustilaginaceous
+Ustilaginales
+ustilagineous
+Ustilaginoidea
+Ustilago
+ustion
+ustorious
+ustulate
+ustulation
+Ustulina
+usual
+usualism
+usually
+usualness
+usuary
+usucapient
+usucapion
+usucapionary
+usucapt
+usucaptable
+usucaption
+usucaptor
+usufruct
+usufructuary
+Usun
+usure
+usurer
+usurerlike
+usuress
+usurious
+usuriously
+usuriousness
+usurp
+usurpation
+usurpative
+usurpatively
+usurpatory
+usurpature
+usurpedly
+usurper
+usurpership
+usurping
+usurpingly
+usurpment
+usurpor
+usurpress
+usury
+usward
+uswards
+ut
+Uta
+uta
+Utah
+Utahan
+utahite
+utai
+utas
+utch
+utchy
+Ute
+utees
+utensil
+uteralgia
+uterectomy
+uteri
+uterine
+uteritis
+uteroabdominal
+uterocele
+uterocervical
+uterocystotomy
+uterofixation
+uterogestation
+uterogram
+uterography
+uterointestinal
+uterolith
+uterology
+uteromania
+uterometer
+uteroovarian
+uteroparietal
+uteropelvic
+uteroperitoneal
+uteropexia
+uteropexy
+uteroplacental
+uteroplasty
+uterosacral
+uterosclerosis
+uteroscope
+uterotomy
+uterotonic
+uterotubal
+uterovaginal
+uteroventral
+uterovesical
+uterus
+utfangenethef
+utfangethef
+utfangthef
+utfangthief
+utick
+utile
+utilitarian
+utilitarianism
+utilitarianist
+utilitarianize
+utilitarianly
+utility
+utilizable
+utilization
+utilize
+utilizer
+utinam
+utmost
+utmostness
+Utopia
+utopia
+Utopian
+utopian
+utopianism
+utopianist
+Utopianize
+Utopianizer
+utopianizer
+utopiast
+utopism
+utopist
+utopistic
+utopographer
+Utraquism
+utraquist
+utraquistic
+Utrecht
+utricle
+utricul
+utricular
+Utricularia
+Utriculariaceae
+utriculate
+utriculiferous
+utriculiform
+utriculitis
+utriculoid
+utriculoplastic
+utriculoplasty
+utriculosaccular
+utriculose
+utriculus
+utriform
+utrubi
+utrum
+utsuk
+utter
+utterability
+utterable
+utterableness
+utterance
+utterancy
+utterer
+utterless
+utterly
+uttermost
+utterness
+utu
+utum
+uturuncu
+uva
+uval
+uvalha
+uvanite
+uvarovite
+uvate
+uvea
+uveal
+uveitic
+uveitis
+Uvella
+uveous
+uvic
+uvid
+uviol
+uvitic
+uvitinic
+uvito
+uvitonic
+uvrou
+uvula
+uvulae
+uvular
+Uvularia
+uvularly
+uvulitis
+uvuloptosis
+uvulotome
+uvulotomy
+uvver
+uxorial
+uxoriality
+uxorially
+uxoricidal
+uxoricide
+uxorious
+uxoriously
+uxoriousness
+uzan
+uzara
+uzarin
+uzaron
+Uzbak
+Uzbeg
+Uzbek
+V
+v
+vaagmer
+vaalite
+Vaalpens
+vacabond
+vacancy
+vacant
+vacanthearted
+vacantheartedness
+vacantly
+vacantness
+vacantry
+vacatable
+vacate
+vacation
+vacational
+vacationer
+vacationist
+vacationless
+vacatur
+Vaccaria
+vaccary
+vaccenic
+vaccicide
+vaccigenous
+vaccina
+vaccinable
+vaccinal
+vaccinate
+vaccination
+vaccinationist
+vaccinator
+vaccinatory
+vaccine
+vaccinee
+vaccinella
+vaccinia
+Vacciniaceae
+vacciniaceous
+vaccinial
+vaccinifer
+vacciniform
+vacciniola
+vaccinist
+Vaccinium
+vaccinium
+vaccinization
+vaccinogenic
+vaccinogenous
+vaccinoid
+vaccinophobia
+vaccinotherapy
+vache
+Vachellia
+vachette
+vacillancy
+vacillant
+vacillate
+vacillating
+vacillatingly
+vacillation
+vacillator
+vacillatory
+vacoa
+vacona
+vacoua
+vacouf
+vacual
+vacuate
+vacuation
+vacuefy
+vacuist
+vacuity
+vacuolar
+vacuolary
+vacuolate
+vacuolated
+vacuolation
+vacuole
+vacuolization
+vacuome
+vacuometer
+vacuous
+vacuously
+vacuousness
+vacuum
+vacuuma
+vacuumize
+vade
+Vadim
+vadimonium
+vadimony
+vadium
+vadose
+vady
+vag
+vagabond
+vagabondage
+vagabondager
+vagabondia
+vagabondish
+vagabondism
+vagabondismus
+vagabondize
+vagabondizer
+vagabondry
+vagal
+vagarian
+vagarious
+vagariously
+vagarish
+vagarisome
+vagarist
+vagaristic
+vagarity
+vagary
+vagas
+vage
+vagiform
+vagile
+vagina
+vaginal
+vaginalectomy
+vaginaless
+vaginalitis
+vaginant
+vaginate
+vaginated
+vaginectomy
+vaginervose
+Vaginicola
+vaginicoline
+vaginicolous
+vaginiferous
+vaginipennate
+vaginismus
+vaginitis
+vaginoabdominal
+vaginocele
+vaginodynia
+vaginofixation
+vaginolabial
+vaginometer
+vaginomycosis
+vaginoperineal
+vaginoperitoneal
+vaginopexy
+vaginoplasty
+vaginoscope
+vaginoscopy
+vaginotome
+vaginotomy
+vaginovesical
+vaginovulvar
+vaginula
+vaginulate
+vaginule
+vagitus
+Vagnera
+vagoaccessorius
+vagodepressor
+vagoglossopharyngeal
+vagogram
+vagolysis
+vagosympathetic
+vagotomize
+vagotomy
+vagotonia
+vagotonic
+vagotropic
+vagotropism
+vagrance
+vagrancy
+vagrant
+vagrantism
+vagrantize
+vagrantlike
+vagrantly
+vagrantness
+vagrate
+vagrom
+vague
+vaguely
+vagueness
+vaguish
+vaguity
+vagulous
+vagus
+vahine
+Vai
+Vaidic
+vail
+vailable
+vain
+vainful
+vainglorious
+vaingloriously
+vaingloriousness
+vainglory
+vainly
+vainness
+vair
+vairagi
+vaire
+vairy
+Vaishnava
+Vaishnavism
+vaivode
+vajra
+vajrasana
+vakass
+vakia
+vakil
+vakkaliga
+Val
+valance
+valanced
+valanche
+valbellite
+vale
+valediction
+valedictorian
+valedictorily
+valedictory
+valence
+Valencia
+Valencian
+valencianite
+Valenciennes
+valency
+valent
+Valentide
+Valentin
+Valentine
+valentine
+Valentinian
+Valentinianism
+valentinite
+valeral
+valeraldehyde
+valeramide
+valerate
+Valeria
+valerian
+Valeriana
+Valerianaceae
+valerianaceous
+Valerianales
+valerianate
+Valerianella
+Valerianoides
+valeric
+Valerie
+valerin
+valerolactone
+valerone
+valeryl
+valerylene
+valet
+valeta
+valetage
+valetdom
+valethood
+valetism
+valetry
+valetudinarian
+valetudinarianism
+valetudinariness
+valetudinarist
+valetudinarium
+valetudinary
+valeur
+valeward
+valgoid
+valgus
+valhall
+Valhalla
+Vali
+vali
+valiance
+valiancy
+valiant
+valiantly
+valiantness
+valid
+validate
+validation
+validatory
+validification
+validity
+validly
+validness
+valine
+valise
+valiseful
+valiship
+Valkyr
+Valkyria
+Valkyrian
+Valkyrie
+vall
+vallancy
+vallar
+vallary
+vallate
+vallated
+vallation
+vallecula
+vallecular
+valleculate
+vallevarite
+valley
+valleyful
+valleyite
+valleylet
+valleylike
+valleyward
+valleywise
+vallicula
+vallicular
+vallidom
+vallis
+Valliscaulian
+Vallisneria
+Vallisneriaceae
+vallisneriaceous
+Vallombrosan
+Vallota
+vallum
+Valmy
+Valois
+valonia
+Valoniaceae
+valoniaceous
+valor
+valorization
+valorize
+valorous
+valorously
+valorousness
+Valsa
+Valsaceae
+Valsalvan
+valse
+valsoid
+valuable
+valuableness
+valuably
+valuate
+valuation
+valuational
+valuator
+value
+valued
+valueless
+valuelessness
+valuer
+valuta
+valva
+valval
+Valvata
+valvate
+Valvatidae
+valve
+valved
+valveless
+valvelet
+valvelike
+valveman
+valviferous
+valviform
+valvotomy
+valvula
+valvular
+valvulate
+valvule
+valvulitis
+valvulotome
+valvulotomy
+valyl
+valylene
+vambrace
+vambraced
+vamfont
+vammazsa
+vamoose
+vamp
+vamped
+vamper
+vamphorn
+vampire
+vampireproof
+vampiric
+vampirish
+vampirism
+vampirize
+vamplate
+vampproof
+Vampyrella
+Vampyrellidae
+Vampyrum
+Van
+van
+vanadate
+vanadiate
+vanadic
+vanadiferous
+vanadinite
+vanadium
+vanadosilicate
+vanadous
+vanadyl
+Vanaheim
+vanaprastha
+Vance
+vancourier
+Vancouveria
+Vanda
+Vandal
+Vandalic
+vandalish
+vandalism
+vandalistic
+vandalization
+vandalize
+vandalroot
+Vandemonian
+Vandemonianism
+Vandiemenian
+Vandyke
+vane
+vaned
+vaneless
+vanelike
+Vanellus
+Vanessa
+vanessian
+vanfoss
+vang
+vangee
+vangeli
+vanglo
+vanguard
+Vanguardist
+Vangueria
+vanilla
+vanillal
+vanillaldehyde
+vanillate
+vanille
+vanillery
+vanillic
+vanillin
+vanillinic
+vanillism
+vanilloes
+vanillon
+vanilloyl
+vanillyl
+Vanir
+vanish
+vanisher
+vanishing
+vanishingly
+vanishment
+Vanist
+vanitarianism
+vanitied
+vanity
+vanjarrah
+vanman
+vanmost
+Vannai
+vanner
+vannerman
+vannet
+Vannic
+vanquish
+vanquishable
+vanquisher
+vanquishment
+vansire
+vantage
+vantageless
+vantbrace
+vantbrass
+vanward
+vapid
+vapidism
+vapidity
+vapidly
+vapidness
+vapocauterization
+vapographic
+vapography
+vapor
+vaporability
+vaporable
+vaporarium
+vaporary
+vaporate
+vapored
+vaporer
+vaporescence
+vaporescent
+vaporiferous
+vaporiferousness
+vaporific
+vaporiform
+vaporimeter
+vaporing
+vaporingly
+vaporish
+vaporishness
+vaporium
+vaporizable
+vaporization
+vaporize
+vaporizer
+vaporless
+vaporlike
+vaporograph
+vaporographic
+vaporose
+vaporoseness
+vaporosity
+vaporous
+vaporously
+vaporousness
+vaportight
+vapory
+vapulary
+vapulate
+vapulation
+vapulatory
+vara
+varahan
+varan
+Varanger
+Varangi
+Varangian
+varanid
+Varanidae
+Varanoid
+Varanus
+Varda
+vardapet
+vardy
+vare
+varec
+vareheaded
+vareuse
+vargueno
+vari
+variability
+variable
+variableness
+variably
+Variag
+variance
+variancy
+variant
+variate
+variation
+variational
+variationist
+variatious
+variative
+variatively
+variator
+varical
+varicated
+varication
+varicella
+varicellar
+varicellate
+varicellation
+varicelliform
+varicelloid
+varicellous
+varices
+variciform
+varicoblepharon
+varicocele
+varicoid
+varicolored
+varicolorous
+varicose
+varicosed
+varicoseness
+varicosis
+varicosity
+varicotomy
+varicula
+varied
+variedly
+variegate
+variegated
+variegation
+variegator
+varier
+varietal
+varietally
+varietism
+varietist
+variety
+variform
+variformed
+variformity
+variformly
+varigradation
+variocoupler
+variola
+variolar
+Variolaria
+variolate
+variolation
+variole
+variolic
+varioliform
+variolite
+variolitic
+variolitization
+variolization
+varioloid
+variolous
+variolovaccine
+variolovaccinia
+variometer
+variorum
+variotinted
+various
+variously
+variousness
+variscite
+varisse
+varix
+varlet
+varletaille
+varletess
+varletry
+varletto
+varment
+varna
+varnashrama
+varnish
+varnished
+varnisher
+varnishing
+varnishlike
+varnishment
+varnishy
+varnpliktige
+varnsingite
+Varolian
+Varronia
+Varronian
+varsha
+varsity
+Varsovian
+varsoviana
+Varuna
+varus
+varve
+varved
+vary
+varyingly
+vas
+Vasa
+vasa
+vasal
+Vascons
+vascular
+vascularity
+vascularization
+vascularize
+vascularly
+vasculated
+vasculature
+vasculiferous
+vasculiform
+vasculitis
+vasculogenesis
+vasculolymphatic
+vasculomotor
+vasculose
+vasculum
+vase
+vasectomize
+vasectomy
+vaseful
+vaselet
+vaselike
+Vaseline
+vasemaker
+vasemaking
+vasewise
+vasework
+vashegyite
+vasicentric
+vasicine
+vasifactive
+vasiferous
+vasiform
+vasoconstricting
+vasoconstriction
+vasoconstrictive
+vasoconstrictor
+vasocorona
+vasodentinal
+vasodentine
+vasodilatation
+vasodilatin
+vasodilating
+vasodilation
+vasodilator
+vasoepididymostomy
+vasofactive
+vasoformative
+vasoganglion
+vasohypertonic
+vasohypotonic
+vasoinhibitor
+vasoinhibitory
+vasoligation
+vasoligature
+vasomotion
+vasomotor
+vasomotorial
+vasomotoric
+vasomotory
+vasoneurosis
+vasoparesis
+vasopressor
+vasopuncture
+vasoreflex
+vasorrhaphy
+vasosection
+vasospasm
+vasospastic
+vasostimulant
+vasostomy
+vasotomy
+vasotonic
+vasotribe
+vasotripsy
+vasotrophic
+vasovesiculectomy
+vasquine
+vassal
+vassalage
+vassaldom
+vassaless
+vassalic
+vassalism
+vassality
+vassalize
+vassalless
+vassalry
+vassalship
+Vassos
+vast
+vastate
+vastation
+vastidity
+vastily
+vastiness
+vastitude
+vastity
+vastly
+vastness
+vasty
+vasu
+Vasudeva
+Vasundhara
+vat
+Vateria
+vatful
+vatic
+vatically
+Vatican
+vaticanal
+vaticanic
+vaticanical
+Vaticanism
+Vaticanist
+Vaticanization
+Vaticanize
+vaticide
+vaticinal
+vaticinant
+vaticinate
+vaticination
+vaticinator
+vaticinatory
+vaticinatress
+vaticinatrix
+vatmaker
+vatmaking
+vatman
+Vatteluttu
+vatter
+vau
+Vaucheria
+Vaucheriaceae
+vaucheriaceous
+vaudeville
+vaudevillian
+vaudevillist
+Vaudism
+Vaudois
+vaudy
+Vaughn
+vaugnerite
+vault
+vaulted
+vaultedly
+vaulter
+vaulting
+vaultlike
+vaulty
+vaunt
+vauntage
+vaunted
+vaunter
+vauntery
+vauntful
+vauntiness
+vaunting
+vauntingly
+vauntmure
+vaunty
+vauquelinite
+Vauxhall
+Vauxhallian
+vauxite
+vavasor
+vavasory
+vaward
+Vayu
+Vazimba
+Veadar
+veal
+vealer
+vealiness
+veallike
+vealskin
+vealy
+vectigal
+vection
+vectis
+vectograph
+vectographic
+vector
+vectorial
+vectorially
+vecture
+Veda
+Vedaic
+Vedaism
+Vedalia
+vedana
+Vedanga
+Vedanta
+Vedantic
+Vedantism
+Vedantist
+Vedda
+Veddoid
+vedette
+Vedic
+vedika
+Vediovis
+Vedism
+Vedist
+vedro
+Veduis
+veduis
+vee
+veen
+veep
+veer
+veerable
+veeringly
+veery
+Vega
+vegasite
+vegeculture
+vegetability
+vegetable
+vegetablelike
+vegetablewise
+vegetablize
+vegetably
+vegetal
+vegetalcule
+vegetality
+vegetant
+vegetarian
+vegetarianism
+vegetate
+vegetation
+vegetational
+vegetationless
+vegetative
+vegetatively
+vegetativeness
+vegete
+vegeteness
+vegetism
+vegetive
+vegetivorous
+vegetoalkali
+vegetoalkaline
+vegetoalkaloid
+vegetoanimal
+vegetobituminous
+vegetocarbonaceous
+vegetomineral
+vehemence
+vehemency
+vehement
+vehemently
+vehicle
+vehicular
+vehicularly
+vehiculary
+vehiculate
+vehiculation
+vehiculatory
+Vehmic
+vei
+veigle
+veil
+veiled
+veiledly
+veiledness
+veiler
+veiling
+veilless
+veillike
+veilmaker
+veilmaking
+Veiltail
+veily
+vein
+veinage
+veinal
+veinbanding
+veined
+veiner
+veinery
+veininess
+veining
+veinless
+veinlet
+veinous
+veinstone
+veinstuff
+veinule
+veinulet
+veinwise
+veinwork
+veiny
+Vejoces
+vejoces
+Vejovis
+Vejoz
+vela
+velal
+velamen
+velamentous
+velamentum
+velar
+velardenite
+velaric
+velarium
+velarize
+velary
+velate
+velated
+velation
+velatura
+Velchanos
+veldcraft
+veldman
+veldschoen
+veldt
+veldtschoen
+Velella
+velellidous
+velic
+veliferous
+veliform
+veliger
+veligerous
+Velika
+velitation
+vell
+vellala
+velleda
+velleity
+vellicate
+vellication
+vellicative
+vellinch
+vellon
+vellosine
+Vellozia
+Velloziaceae
+velloziaceous
+vellum
+vellumy
+velo
+velociman
+velocimeter
+velocious
+velociously
+velocipedal
+velocipede
+velocipedean
+velocipedic
+velocitous
+velocity
+velodrome
+velometer
+velours
+veloutine
+velte
+velum
+velumen
+velure
+Velutina
+velutinous
+velveret
+velvet
+velvetbreast
+velveted
+velveteen
+velveteened
+velvetiness
+velveting
+velvetleaf
+velvetlike
+velvetry
+velvetseed
+velvetweed
+velvetwork
+velvety
+venada
+venal
+venality
+venalization
+venalize
+venally
+venalness
+Venantes
+venanzite
+venatic
+venatical
+venatically
+venation
+venational
+venator
+venatorial
+venatorious
+venatory
+vencola
+Vend
+vend
+vendace
+Vendean
+vendee
+vender
+vendetta
+vendettist
+vendibility
+vendible
+vendibleness
+vendibly
+vendicate
+Vendidad
+vending
+venditate
+venditation
+vendition
+venditor
+vendor
+vendue
+Vened
+Venedotian
+veneer
+veneerer
+veneering
+venefical
+veneficious
+veneficness
+veneficous
+venenate
+venenation
+venene
+veneniferous
+venenific
+venenosalivary
+venenous
+venenousness
+venepuncture
+venerability
+venerable
+venerableness
+venerably
+Veneracea
+veneracean
+veneraceous
+veneral
+Veneralia
+venerance
+venerant
+venerate
+veneration
+venerational
+venerative
+veneratively
+venerativeness
+venerator
+venereal
+venerealness
+venereologist
+venereology
+venerer
+Veneres
+venerial
+Veneridae
+veneriform
+venery
+venesect
+venesection
+venesector
+venesia
+Venetes
+Veneti
+Venetian
+Venetianed
+Venetic
+venezolano
+Venezuelan
+vengeable
+vengeance
+vengeant
+vengeful
+vengefully
+vengefulness
+vengeously
+venger
+venial
+veniality
+venially
+venialness
+Venice
+venie
+venin
+veniplex
+venipuncture
+venireman
+venison
+venisonivorous
+venisonlike
+venisuture
+Venite
+Venizelist
+Venkata
+vennel
+venner
+venoatrial
+venoauricular
+venom
+venomed
+venomer
+venomization
+venomize
+venomly
+venomness
+venomosalivary
+venomous
+venomously
+venomousness
+venomproof
+venomsome
+venomy
+venosal
+venosclerosis
+venose
+venosinal
+venosity
+venostasis
+venous
+venously
+venousness
+vent
+ventage
+ventail
+venter
+Ventersdorp
+venthole
+ventiduct
+ventifact
+ventil
+ventilable
+ventilagin
+ventilate
+ventilating
+ventilation
+ventilative
+ventilator
+ventilatory
+ventless
+ventometer
+ventose
+ventoseness
+ventosity
+ventpiece
+ventrad
+ventral
+ventrally
+ventralmost
+ventralward
+ventric
+ventricle
+ventricolumna
+ventricolumnar
+ventricornu
+ventricornual
+ventricose
+ventricoseness
+ventricosity
+ventricous
+ventricular
+ventricularis
+ventriculite
+Ventriculites
+ventriculitic
+Ventriculitidae
+ventriculogram
+ventriculography
+ventriculoscopy
+ventriculose
+ventriculous
+ventriculus
+ventricumbent
+ventriduct
+ventrifixation
+ventrilateral
+ventrilocution
+ventriloqual
+ventriloqually
+ventriloque
+ventriloquial
+ventriloquially
+ventriloquism
+ventriloquist
+ventriloquistic
+ventriloquize
+ventriloquous
+ventriloquously
+ventriloquy
+ventrimesal
+ventrimeson
+ventrine
+ventripotency
+ventripotent
+ventripotential
+ventripyramid
+ventroaxial
+ventroaxillary
+ventrocaudal
+ventrocystorrhaphy
+ventrodorsad
+ventrodorsal
+ventrodorsally
+ventrofixation
+ventrohysteropexy
+ventroinguinal
+ventrolateral
+ventrolaterally
+ventromedial
+ventromedian
+ventromesal
+ventromesial
+ventromyel
+ventroposterior
+ventroptosia
+ventroptosis
+ventroscopy
+ventrose
+ventrosity
+ventrosuspension
+ventrotomy
+venture
+venturer
+venturesome
+venturesomely
+venturesomeness
+Venturia
+venturine
+venturous
+venturously
+venturousness
+venue
+venula
+venular
+venule
+venulose
+Venus
+Venusian
+venust
+Venutian
+venville
+Veps
+Vepse
+Vepsish
+vera
+veracious
+veraciously
+veraciousness
+veracity
+veranda
+verandaed
+verascope
+veratral
+veratralbine
+veratraldehyde
+veratrate
+veratria
+veratric
+veratridine
+veratrine
+veratrinize
+veratrize
+veratroidine
+veratrole
+veratroyl
+Veratrum
+veratryl
+veratrylidene
+verb
+verbal
+verbalism
+verbalist
+verbality
+verbalization
+verbalize
+verbalizer
+verbally
+verbarian
+verbarium
+verbasco
+verbascose
+Verbascum
+verbate
+verbatim
+verbena
+Verbenaceae
+verbenaceous
+verbenalike
+verbenalin
+Verbenarius
+verbenate
+verbene
+verbenone
+verberate
+verberation
+verberative
+Verbesina
+verbiage
+verbicide
+verbiculture
+verbid
+verbification
+verbify
+verbigerate
+verbigeration
+verbigerative
+verbile
+verbless
+verbolatry
+verbomania
+verbomaniac
+verbomotor
+verbose
+verbosely
+verboseness
+verbosity
+verbous
+verby
+verchok
+verd
+verdancy
+verdant
+verdantly
+verdantness
+verdea
+verdelho
+verderer
+verderership
+verdet
+verdict
+verdigris
+verdigrisy
+verdin
+verditer
+verdoy
+verdugoship
+verdun
+verdure
+verdured
+verdureless
+verdurous
+verdurousness
+verecund
+verecundity
+verecundness
+verek
+veretilliform
+Veretillum
+veretillum
+verge
+vergeboard
+vergence
+vergency
+vergent
+vergentness
+verger
+vergeress
+vergerism
+vergerless
+vergership
+vergery
+vergi
+vergiform
+Vergilianism
+verglas
+vergobret
+veri
+veridic
+veridical
+veridicality
+veridically
+veridicalness
+veridicous
+veridity
+verifiability
+verifiable
+verifiableness
+verifiably
+verificate
+verification
+verificative
+verificatory
+verifier
+verify
+verily
+verine
+verisimilar
+verisimilarly
+verisimilitude
+verisimilitudinous
+verisimility
+verism
+verist
+veristic
+veritability
+veritable
+veritableness
+veritably
+verite
+veritism
+veritist
+veritistic
+verity
+verjuice
+vermeil
+vermeologist
+vermeology
+Vermes
+vermetid
+Vermetidae
+vermetidae
+Vermetus
+vermian
+vermicelli
+vermicidal
+vermicide
+vermicious
+vermicle
+vermicular
+Vermicularia
+vermicularly
+vermiculate
+vermiculated
+vermiculation
+vermicule
+vermiculite
+vermiculose
+vermiculosity
+vermiculous
+vermiform
+Vermiformia
+vermiformis
+vermiformity
+vermiformous
+vermifugal
+vermifuge
+vermifugous
+vermigerous
+vermigrade
+Vermilingues
+Vermilinguia
+vermilinguial
+vermilion
+vermilionette
+vermilionize
+vermin
+verminal
+verminate
+vermination
+verminer
+verminicidal
+verminicide
+verminiferous
+verminlike
+verminly
+verminosis
+verminous
+verminously
+verminousness
+verminproof
+verminy
+vermiparous
+vermiparousness
+vermis
+vermivorous
+vermivorousness
+vermix
+Vermont
+Vermonter
+Vermontese
+vermorel
+vermouth
+Vern
+vernacle
+vernacular
+vernacularism
+vernacularist
+vernacularity
+vernacularization
+vernacularize
+vernacularly
+vernacularness
+vernaculate
+vernal
+vernality
+vernalization
+vernalize
+vernally
+vernant
+vernation
+vernicose
+vernier
+vernile
+vernility
+vernin
+vernine
+vernition
+Vernon
+Vernonia
+vernoniaceous
+Vernonieae
+vernonin
+Verona
+Veronal
+veronalism
+Veronese
+Veronica
+Veronicella
+Veronicellidae
+Verpa
+verre
+verrel
+verriculate
+verriculated
+verricule
+verruca
+verrucano
+Verrucaria
+Verrucariaceae
+verrucariaceous
+verrucarioid
+verrucated
+verruciferous
+verruciform
+verrucose
+verrucoseness
+verrucosis
+verrucosity
+verrucous
+verruculose
+verruga
+versability
+versable
+versableness
+versal
+versant
+versate
+versatile
+versatilely
+versatileness
+versatility
+versation
+versative
+verse
+versecraft
+versed
+verseless
+verselet
+versemaker
+versemaking
+verseman
+versemanship
+versemonger
+versemongering
+versemongery
+verser
+versesmith
+verset
+versette
+verseward
+versewright
+versicle
+versicler
+versicolor
+versicolorate
+versicolored
+versicolorous
+versicular
+versicule
+versifiable
+versifiaster
+versification
+versificator
+versificatory
+versificatrix
+versifier
+versiform
+versify
+versiloquy
+versine
+version
+versional
+versioner
+versionist
+versionize
+versipel
+verso
+versor
+verst
+versta
+versual
+versus
+vert
+vertebra
+vertebrae
+vertebral
+vertebraless
+vertebrally
+Vertebraria
+vertebrarium
+vertebrarterial
+Vertebrata
+vertebrate
+vertebrated
+vertebration
+vertebre
+vertebrectomy
+vertebriform
+vertebroarterial
+vertebrobasilar
+vertebrochondral
+vertebrocostal
+vertebrodymus
+vertebrofemoral
+vertebroiliac
+vertebromammary
+vertebrosacral
+vertebrosternal
+vertex
+vertibility
+vertible
+vertibleness
+vertical
+verticalism
+verticality
+vertically
+verticalness
+vertices
+verticil
+verticillary
+verticillaster
+verticillastrate
+verticillate
+verticillated
+verticillately
+verticillation
+verticilliaceous
+verticilliose
+Verticillium
+verticillus
+verticity
+verticomental
+verticordious
+vertiginate
+vertigines
+vertiginous
+vertigo
+vertilinear
+vertimeter
+Vertumnus
+Verulamian
+veruled
+verumontanum
+vervain
+vervainlike
+verve
+vervecine
+vervel
+verveled
+vervelle
+vervenia
+vervet
+very
+Vesalian
+vesania
+vesanic
+vesbite
+vesicae
+vesical
+vesicant
+vesicate
+vesication
+vesicatory
+vesicle
+vesicoabdominal
+vesicocavernous
+vesicocele
+vesicocervical
+vesicoclysis
+vesicofixation
+vesicointestinal
+vesicoprostatic
+vesicopubic
+vesicorectal
+vesicosigmoid
+vesicospinal
+vesicotomy
+vesicovaginal
+vesicular
+Vesicularia
+vesicularly
+vesiculary
+vesiculase
+Vesiculata
+Vesiculatae
+vesiculate
+vesiculation
+vesicule
+vesiculectomy
+vesiculiferous
+vesiculiform
+vesiculigerous
+vesiculitis
+vesiculobronchial
+vesiculocavernous
+vesiculopustular
+vesiculose
+vesiculotomy
+vesiculotubular
+vesiculotympanic
+vesiculotympanitic
+vesiculous
+vesiculus
+vesicupapular
+veskit
+Vespa
+vespacide
+vespal
+vesper
+vesperal
+vesperian
+vespering
+vespers
+vespertide
+vespertilian
+Vespertilio
+vespertilio
+Vespertiliones
+vespertilionid
+Vespertilionidae
+Vespertilioninae
+vespertilionine
+vespertinal
+vespertine
+vespery
+vespiary
+vespid
+Vespidae
+vespiform
+Vespina
+vespine
+vespoid
+Vespoidea
+vessel
+vesseled
+vesselful
+vessignon
+vest
+Vesta
+vestal
+Vestalia
+vestalia
+vestalship
+Vestas
+vestee
+vester
+vestiarian
+vestiarium
+vestiary
+vestibula
+vestibular
+vestibulary
+vestibulate
+vestibule
+vestibuled
+vestibulospinal
+vestibulum
+vestige
+vestigial
+vestigially
+Vestigian
+vestigiary
+vestigium
+vestiment
+vestimental
+vestimentary
+vesting
+Vestini
+Vestinian
+vestiture
+vestlet
+vestment
+vestmental
+vestmented
+vestral
+vestralization
+vestrical
+vestrification
+vestrify
+vestry
+vestrydom
+vestryhood
+vestryish
+vestryism
+vestryize
+vestryman
+vestrymanly
+vestrymanship
+vestuary
+vestural
+vesture
+vesturer
+Vesuvian
+vesuvian
+vesuvianite
+vesuviate
+vesuvite
+vesuvius
+veszelyite
+vet
+veta
+vetanda
+vetch
+vetchling
+vetchy
+veteran
+veterancy
+veteraness
+veteranize
+veterinarian
+veterinarianism
+veterinary
+vetitive
+vetivene
+vetivenol
+vetiver
+Vetiveria
+vetiveria
+vetivert
+vetkousie
+veto
+vetoer
+vetoism
+vetoist
+vetoistic
+vetoistical
+vetust
+vetusty
+veuglaire
+veuve
+vex
+vexable
+vexation
+vexatious
+vexatiously
+vexatiousness
+vexatory
+vexed
+vexedly
+vexedness
+vexer
+vexful
+vexil
+vexillar
+vexillarious
+vexillary
+vexillate
+vexillation
+vexillum
+vexingly
+vexingness
+vext
+via
+viability
+viable
+viaduct
+viaggiatory
+viagram
+viagraph
+viajaca
+vial
+vialful
+vialmaker
+vialmaking
+vialogue
+viameter
+viand
+viander
+viatic
+viatica
+viatical
+viaticum
+viatometer
+viator
+viatorial
+viatorially
+vibetoite
+vibex
+vibgyor
+vibix
+vibracular
+vibracularium
+vibraculoid
+vibraculum
+vibrance
+vibrancy
+vibrant
+vibrantly
+vibraphone
+vibrate
+vibratile
+vibratility
+vibrating
+vibratingly
+vibration
+vibrational
+vibrationless
+vibratiuncle
+vibratiunculation
+vibrative
+vibrato
+vibrator
+vibratory
+Vibrio
+vibrioid
+vibrion
+vibrionic
+vibrissa
+vibrissae
+vibrissal
+vibrograph
+vibromassage
+vibrometer
+vibromotive
+vibronic
+vibrophone
+vibroscope
+vibroscopic
+vibrotherapeutics
+viburnic
+viburnin
+Viburnum
+Vic
+vicar
+vicarage
+vicarate
+vicaress
+vicarial
+vicarian
+vicarianism
+vicariate
+vicariateship
+vicarious
+vicariously
+vicariousness
+vicarly
+vicarship
+Vice
+vice
+vicecomes
+vicecomital
+vicegeral
+vicegerency
+vicegerent
+vicegerentship
+viceless
+vicelike
+vicenary
+vicennial
+viceregal
+viceregally
+vicereine
+viceroy
+viceroyal
+viceroyalty
+viceroydom
+viceroyship
+vicety
+viceversally
+Vichyite
+vichyssoise
+Vicia
+vicianin
+vicianose
+vicilin
+vicinage
+vicinal
+vicine
+vicinity
+viciosity
+vicious
+viciously
+viciousness
+vicissitous
+vicissitude
+vicissitudinary
+vicissitudinous
+vicissitudinousness
+Vick
+Vicki
+Vickie
+Vicky
+vicoite
+vicontiel
+victim
+victimhood
+victimizable
+victimization
+victimize
+victimizer
+victless
+Victor
+victor
+victordom
+victorfish
+Victoria
+Victorian
+Victorianism
+Victorianize
+Victorianly
+victoriate
+victoriatus
+victorine
+victorious
+victoriously
+victoriousness
+victorium
+victory
+victoryless
+victress
+victrix
+Victrola
+victrola
+victual
+victualage
+victualer
+victualing
+victuallership
+victualless
+victualry
+victuals
+vicuna
+Viddhal
+viddui
+videndum
+video
+videogenic
+vidette
+Vidhyanath
+Vidian
+vidonia
+vidry
+Vidua
+viduage
+vidual
+vidually
+viduate
+viduated
+viduation
+Viduinae
+viduine
+viduity
+viduous
+vidya
+vie
+vielle
+Vienna
+Viennese
+vier
+vierling
+viertel
+viertelein
+Vietminh
+Vietnamese
+view
+viewable
+viewably
+viewer
+viewiness
+viewless
+viewlessly
+viewly
+viewpoint
+viewsome
+viewster
+viewworthy
+viewy
+vifda
+viga
+vigentennial
+vigesimal
+vigesimation
+vigia
+vigil
+vigilance
+vigilancy
+vigilant
+vigilante
+vigilantism
+vigilantly
+vigilantness
+vigilate
+vigilation
+vigintiangular
+vigneron
+vignette
+vignetter
+vignettist
+vignin
+vigonia
+vigor
+vigorist
+vigorless
+vigorous
+vigorously
+vigorousness
+vihara
+vihuela
+vijao
+Vijay
+viking
+vikingism
+vikinglike
+vikingship
+vila
+vilayet
+vile
+vilehearted
+Vilela
+vilely
+vileness
+Vilhelm
+Vili
+vilicate
+vilification
+vilifier
+vilify
+vilifyingly
+vilipend
+vilipender
+vilipenditory
+vility
+vill
+villa
+villadom
+villaette
+village
+villageful
+villagehood
+villageless
+villagelet
+villagelike
+villageous
+villager
+villageress
+villagery
+villaget
+villageward
+villagey
+villagism
+villain
+villainage
+villaindom
+villainess
+villainist
+villainous
+villainously
+villainousness
+villainproof
+villainy
+villakin
+villaless
+villalike
+villanage
+villanella
+villanelle
+villanette
+villanous
+villanously
+Villanova
+Villanovan
+villar
+villate
+villatic
+ville
+villein
+villeinage
+villeiness
+villeinhold
+villenage
+villiaumite
+villiferous
+villiform
+villiplacental
+Villiplacentalia
+villitis
+villoid
+villose
+villosity
+villous
+villously
+villus
+vim
+vimana
+vimen
+vimful
+Viminal
+viminal
+vimineous
+vina
+vinaceous
+vinaconic
+vinage
+vinagron
+vinaigrette
+vinaigretted
+vinaigrier
+vinaigrous
+vinal
+Vinalia
+vinasse
+vinata
+Vince
+Vincent
+vincent
+Vincentian
+Vincenzo
+Vincetoxicum
+vincetoxin
+vincibility
+vincible
+vincibleness
+vincibly
+vincular
+vinculate
+vinculation
+vinculum
+Vindelici
+vindemial
+vindemiate
+vindemiation
+vindemiatory
+Vindemiatrix
+vindex
+vindhyan
+vindicability
+vindicable
+vindicableness
+vindicably
+vindicate
+vindication
+vindicative
+vindicatively
+vindicativeness
+vindicator
+vindicatorily
+vindicatorship
+vindicatory
+vindicatress
+vindictive
+vindictively
+vindictiveness
+vindictivolence
+vindresser
+vine
+vinea
+vineal
+vineatic
+vined
+vinegar
+vinegarer
+vinegarette
+vinegarish
+vinegarist
+vinegarroon
+vinegarweed
+vinegary
+vinegerone
+vinegrower
+vineity
+vineland
+vineless
+vinelet
+vinelike
+viner
+vinery
+vinestalk
+vinewise
+vineyard
+Vineyarder
+vineyarding
+vineyardist
+vingerhoed
+Vingolf
+vinhatico
+vinic
+vinicultural
+viniculture
+viniculturist
+vinifera
+viniferous
+vinification
+vinificator
+Vinland
+vinny
+vino
+vinoacetous
+Vinod
+vinolence
+vinolent
+vinologist
+vinology
+vinometer
+vinomethylic
+vinose
+vinosity
+vinosulphureous
+vinous
+vinously
+vinousness
+vinquish
+vint
+vinta
+vintage
+vintager
+vintaging
+vintem
+vintener
+vintlite
+vintner
+vintneress
+vintnership
+vintnery
+vintress
+vintry
+viny
+vinyl
+vinylbenzene
+vinylene
+vinylic
+vinylidene
+viol
+viola
+violability
+violable
+violableness
+violably
+Violaceae
+violacean
+violaceous
+violaceously
+violal
+Violales
+violanin
+violaquercitrin
+violate
+violater
+violation
+violational
+violative
+violator
+violatory
+violature
+violence
+violent
+violently
+violentness
+violer
+violescent
+violet
+violetish
+violetlike
+violette
+violetwise
+violety
+violin
+violina
+violine
+violinette
+violinist
+violinistic
+violinlike
+violinmaker
+violinmaking
+violist
+violmaker
+violmaking
+violon
+violoncellist
+violoncello
+violone
+violotta
+violuric
+viosterol
+Vip
+viper
+Vipera
+viperan
+viperess
+viperfish
+viperian
+viperid
+Viperidae
+viperiform
+Viperina
+Viperinae
+viperine
+viperish
+viperishly
+viperlike
+viperling
+viperoid
+Viperoidea
+viperous
+viperously
+viperousness
+vipery
+vipolitic
+vipresident
+viqueen
+Vira
+viragin
+viraginian
+viraginity
+viraginous
+virago
+viragoish
+viragolike
+viragoship
+viral
+Virales
+Virbius
+vire
+virelay
+viremia
+viremic
+virent
+vireo
+vireonine
+virescence
+virescent
+virga
+virgal
+virgate
+virgated
+virgater
+virgation
+virgilia
+Virgilism
+virgin
+virginal
+Virginale
+virginalist
+virginality
+virginally
+virgineous
+virginhead
+Virginia
+Virginian
+Virginid
+virginitis
+virginity
+virginityship
+virginium
+virginlike
+virginly
+virginship
+Virgo
+virgula
+virgular
+Virgularia
+virgularian
+Virgulariidae
+virgulate
+virgule
+virgultum
+virial
+viricide
+virid
+viridene
+viridescence
+viridescent
+viridian
+viridigenous
+viridine
+viridite
+viridity
+virific
+virify
+virile
+virilely
+virileness
+virilescence
+virilescent
+virilify
+viriliously
+virilism
+virilist
+virility
+viripotent
+viritrate
+virl
+virole
+viroled
+virological
+virologist
+virology
+viron
+virose
+virosis
+virous
+virtu
+virtual
+virtualism
+virtualist
+virtuality
+virtualize
+virtually
+virtue
+virtued
+virtuefy
+virtuelessness
+virtueproof
+virtuless
+virtuosa
+virtuose
+virtuosi
+virtuosic
+virtuosity
+virtuoso
+virtuosoship
+virtuous
+virtuouslike
+virtuously
+virtuousness
+virucidal
+virucide
+viruela
+virulence
+virulency
+virulent
+virulented
+virulently
+virulentness
+viruliferous
+virus
+viruscidal
+viruscide
+virusemic
+vis
+visa
+visage
+visaged
+visagraph
+visarga
+Visaya
+Visayan
+viscacha
+viscera
+visceral
+visceralgia
+viscerally
+viscerate
+visceration
+visceripericardial
+visceroinhibitory
+visceromotor
+visceroparietal
+visceroperitioneal
+visceropleural
+visceroptosis
+visceroptotic
+viscerosensory
+visceroskeletal
+viscerosomatic
+viscerotomy
+viscerotonia
+viscerotonic
+viscerotrophic
+viscerotropic
+viscerous
+viscid
+viscidity
+viscidize
+viscidly
+viscidness
+viscidulous
+viscin
+viscoidal
+viscolize
+viscometer
+viscometrical
+viscometrically
+viscometry
+viscontal
+viscoscope
+viscose
+viscosimeter
+viscosimetry
+viscosity
+viscount
+viscountcy
+viscountess
+viscountship
+viscounty
+viscous
+viscously
+viscousness
+viscus
+vise
+viseman
+Vishal
+Vishnavite
+Vishnu
+Vishnuism
+Vishnuite
+Vishnuvite
+visibility
+visibilize
+visible
+visibleness
+visibly
+visie
+Visigoth
+Visigothic
+visile
+vision
+visional
+visionally
+visionarily
+visionariness
+visionary
+visioned
+visioner
+visionic
+visionist
+visionize
+visionless
+visionlike
+visionmonger
+visionproof
+visit
+visita
+visitable
+Visitandine
+visitant
+visitation
+visitational
+visitative
+visitator
+visitatorial
+visite
+visitee
+visiter
+visiting
+visitment
+visitor
+visitoress
+visitorial
+visitorship
+visitress
+visitrix
+visive
+visne
+vison
+visor
+visorless
+visorlike
+vista
+vistaed
+vistal
+vistaless
+vistamente
+Vistlik
+visto
+Vistulian
+visual
+visualist
+visuality
+visualization
+visualize
+visualizer
+visually
+visuoauditory
+visuokinesthetic
+visuometer
+visuopsychic
+visuosensory
+vita
+Vitaceae
+Vitaglass
+vital
+vitalic
+vitalism
+vitalist
+vitalistic
+vitalistically
+vitality
+vitalization
+vitalize
+vitalizer
+vitalizing
+vitalizingly
+Vitallium
+vitally
+vitalness
+vitals
+vitamer
+vitameric
+vitamin
+vitaminic
+vitaminize
+vitaminology
+vitapath
+vitapathy
+vitaphone
+vitascope
+vitascopic
+vitasti
+vitativeness
+vitellarian
+vitellarium
+vitellary
+vitellicle
+vitelliferous
+vitelligenous
+vitelligerous
+vitellin
+vitelline
+vitellogene
+vitellogenous
+vitellose
+vitellus
+viterbite
+Viti
+vitiable
+vitiate
+vitiated
+vitiation
+vitiator
+viticetum
+viticulose
+viticultural
+viticulture
+viticulturer
+viticulturist
+vitiferous
+vitiliginous
+vitiligo
+vitiligoidea
+vitiosity
+Vitis
+vitium
+vitochemic
+vitochemical
+vitrage
+vitrail
+vitrailed
+vitrailist
+vitrain
+vitraux
+vitreal
+vitrean
+vitrella
+vitremyte
+vitreodentinal
+vitreodentine
+vitreoelectric
+vitreosity
+vitreous
+vitreouslike
+vitreously
+vitreousness
+vitrescence
+vitrescency
+vitrescent
+vitrescibility
+vitrescible
+vitreum
+vitric
+vitrics
+vitrifaction
+vitrifacture
+vitrifiability
+vitrifiable
+vitrification
+vitriform
+vitrify
+Vitrina
+vitrine
+vitrinoid
+vitriol
+vitriolate
+vitriolation
+vitriolic
+vitrioline
+vitriolizable
+vitriolization
+vitriolize
+vitriolizer
+vitrite
+vitrobasalt
+vitrophyre
+vitrophyric
+vitrotype
+vitrous
+Vitruvian
+Vitruvianism
+vitta
+vittate
+vitular
+vituline
+vituperable
+vituperate
+vituperation
+vituperative
+vituperatively
+vituperator
+vituperatory
+vituperious
+viuva
+viva
+vivacious
+vivaciously
+vivaciousness
+vivacity
+vivandiere
+vivarium
+vivary
+vivax
+vive
+Vivek
+vively
+vivency
+viver
+Viverridae
+viverriform
+Viverrinae
+viverrine
+vivers
+vives
+vivianite
+vivicremation
+vivid
+vividialysis
+vividiffusion
+vividissection
+vividity
+vividly
+vividness
+vivific
+vivificate
+vivification
+vivificative
+vivificator
+vivifier
+vivify
+viviparism
+viviparity
+viviparous
+viviparously
+viviparousness
+vivipary
+viviperfuse
+vivisect
+vivisection
+vivisectional
+vivisectionally
+vivisectionist
+vivisective
+vivisector
+vivisectorium
+vivisepulture
+vixen
+vixenish
+vixenishly
+vixenishness
+vixenlike
+vixenly
+vizard
+vizarded
+vizardless
+vizardlike
+vizardmonger
+vizier
+vizierate
+viziercraft
+vizierial
+viziership
+vizircraft
+Vlach
+Vladimir
+Vladislav
+vlei
+voar
+vocability
+vocable
+vocably
+vocabular
+vocabularian
+vocabularied
+vocabulary
+vocabulation
+vocabulist
+vocal
+vocalic
+vocalion
+vocalise
+vocalism
+vocalist
+vocalistic
+vocality
+vocalization
+vocalize
+vocalizer
+vocaller
+vocally
+vocalness
+vocate
+vocation
+vocational
+vocationalism
+vocationalization
+vocationalize
+vocationally
+vocative
+vocatively
+Vochysiaceae
+vochysiaceous
+vocicultural
+vociferance
+vociferant
+vociferate
+vociferation
+vociferative
+vociferator
+vociferize
+vociferosity
+vociferous
+vociferously
+vociferousness
+vocification
+vocimotor
+vocular
+vocule
+Vod
+vodka
+voe
+voet
+voeten
+Voetian
+vog
+vogesite
+voglite
+vogue
+voguey
+voguish
+Vogul
+voice
+voiced
+voiceful
+voicefulness
+voiceless
+voicelessly
+voicelessness
+voicelet
+voicelike
+voicer
+voicing
+void
+voidable
+voidableness
+voidance
+voided
+voidee
+voider
+voiding
+voidless
+voidly
+voidness
+voile
+voiturette
+voivode
+voivodeship
+vol
+volable
+volage
+Volans
+volant
+volantly
+Volapuk
+Volapuker
+Volapukism
+Volapukist
+volar
+volata
+volatic
+volatile
+volatilely
+volatileness
+volatility
+volatilizable
+volatilization
+volatilize
+volatilizer
+volation
+volational
+volborthite
+Volcae
+volcan
+Volcanalia
+volcanian
+volcanic
+volcanically
+volcanicity
+volcanism
+volcanist
+volcanite
+volcanity
+volcanization
+volcanize
+volcano
+volcanoism
+volcanological
+volcanologist
+volcanologize
+volcanology
+Volcanus
+vole
+volemitol
+volency
+volent
+volently
+volery
+volet
+volhynite
+volipresence
+volipresent
+volitant
+volitate
+volitation
+volitational
+volitiency
+volitient
+volition
+volitional
+volitionalist
+volitionality
+volitionally
+volitionary
+volitionate
+volitionless
+volitive
+volitorial
+Volkerwanderung
+volley
+volleyball
+volleyer
+volleying
+volleyingly
+volost
+volplane
+volplanist
+Volsci
+Volscian
+volsella
+volsellum
+Volstead
+Volsteadism
+volt
+Volta
+voltaelectric
+voltaelectricity
+voltaelectrometer
+voltaelectrometric
+voltage
+voltagraphy
+voltaic
+Voltairian
+Voltairianize
+Voltairish
+Voltairism
+voltaism
+voltaite
+voltameter
+voltametric
+voltammeter
+voltaplast
+voltatype
+voltinism
+voltivity
+voltize
+voltmeter
+voltzite
+volubilate
+volubility
+voluble
+volubleness
+volubly
+volucrine
+volume
+volumed
+volumenometer
+volumenometry
+volumescope
+volumeter
+volumetric
+volumetrical
+volumetrically
+volumetry
+volumette
+voluminal
+voluminosity
+voluminous
+voluminously
+voluminousness
+volumist
+volumometer
+volumometrical
+volumometry
+voluntariate
+voluntarily
+voluntariness
+voluntarism
+voluntarist
+voluntaristic
+voluntarity
+voluntary
+voluntaryism
+voluntaryist
+voluntative
+volunteer
+volunteerism
+volunteerly
+volunteership
+volupt
+voluptary
+voluptas
+voluptuarian
+voluptuary
+voluptuate
+voluptuosity
+voluptuous
+voluptuously
+voluptuousness
+volupty
+Voluspa
+voluta
+volutate
+volutation
+volute
+voluted
+Volutidae
+volutiform
+volutin
+volution
+volutoid
+volva
+volvate
+volvelle
+volvent
+Volvocaceae
+volvocaceous
+volvulus
+vomer
+vomerine
+vomerobasilar
+vomeronasal
+vomeropalatine
+vomica
+vomicine
+vomit
+vomitable
+vomiter
+vomiting
+vomitingly
+vomition
+vomitive
+vomitiveness
+vomito
+vomitory
+vomiture
+vomiturition
+vomitus
+vomitwort
+vondsira
+vonsenite
+voodoo
+voodooism
+voodooist
+voodooistic
+voracious
+voraciously
+voraciousness
+voracity
+voraginous
+vorago
+vorant
+vorhand
+vorlooper
+vorondreo
+vorpal
+vortex
+vortical
+vortically
+vorticel
+Vorticella
+vorticellid
+Vorticellidae
+vortices
+vorticial
+vorticiform
+vorticism
+vorticist
+vorticity
+vorticose
+vorticosely
+vorticular
+vorticularly
+vortiginous
+Vortumnus
+Vosgian
+vota
+votable
+votal
+votally
+votaress
+votarist
+votary
+votation
+Vote
+vote
+voteen
+voteless
+voter
+voting
+Votish
+votive
+votively
+votiveness
+votometer
+votress
+Votyak
+vouch
+vouchable
+vouchee
+voucher
+voucheress
+vouchment
+vouchsafe
+vouchsafement
+vouge
+Vougeot
+Vouli
+voussoir
+vow
+vowed
+vowel
+vowelish
+vowelism
+vowelist
+vowelization
+vowelize
+vowelless
+vowellessness
+vowellike
+vowely
+vower
+vowess
+vowless
+vowmaker
+vowmaking
+voyage
+voyageable
+voyager
+voyance
+voyeur
+voyeurism
+vraic
+vraicker
+vraicking
+vrbaite
+vriddhi
+vrother
+Vu
+vug
+vuggy
+Vulcan
+Vulcanalia
+Vulcanalial
+Vulcanalian
+Vulcanian
+Vulcanic
+vulcanicity
+vulcanism
+vulcanist
+vulcanite
+vulcanizable
+vulcanizate
+vulcanization
+vulcanize
+vulcanizer
+vulcanological
+vulcanologist
+vulcanology
+vulgar
+vulgare
+vulgarian
+vulgarish
+vulgarism
+vulgarist
+vulgarity
+vulgarization
+vulgarize
+vulgarizer
+vulgarlike
+vulgarly
+vulgarness
+vulgarwise
+Vulgate
+vulgate
+vulgus
+vuln
+vulnerability
+vulnerable
+vulnerableness
+vulnerably
+vulnerary
+vulnerate
+vulneration
+vulnerative
+vulnerose
+vulnific
+vulnose
+Vulpecula
+vulpecular
+Vulpeculid
+Vulpes
+vulpic
+vulpicidal
+vulpicide
+vulpicidism
+Vulpinae
+vulpine
+vulpinism
+vulpinite
+vulsella
+vulsellum
+vulsinite
+Vultur
+vulture
+vulturelike
+vulturewise
+Vulturidae
+Vulturinae
+vulturine
+vulturish
+vulturism
+vulturn
+vulturous
+vulva
+vulval
+vulvar
+vulvate
+vulviform
+vulvitis
+vulvocrural
+vulvouterine
+vulvovaginal
+vulvovaginitis
+vum
+vying
+vyingly
+W
+w
+Wa
+wa
+Waac
+waag
+waapa
+waar
+Waasi
+wab
+wabber
+wabble
+wabbly
+wabby
+wabe
+Wabena
+wabeno
+Wabi
+wabster
+Wabuma
+Wabunga
+Wac
+wacago
+wace
+Wachaga
+Wachenheimer
+wachna
+Wachuset
+wack
+wacke
+wacken
+wacker
+wackiness
+wacky
+Waco
+wad
+waddent
+wadder
+wadding
+waddler
+waddlesome
+waddling
+waddlingly
+waddly
+waddy
+waddywood
+Wade
+wade
+wadeable
+wader
+wadi
+wading
+wadingly
+wadlike
+wadmaker
+wadmaking
+wadmal
+wadmeal
+wadna
+wadset
+wadsetter
+wae
+waeg
+waer
+waesome
+waesuck
+Waf
+Wafd
+Wafdist
+wafer
+waferer
+waferish
+wafermaker
+wafermaking
+waferwoman
+waferwork
+wafery
+waff
+waffle
+wafflike
+waffly
+waft
+waftage
+wafter
+wafture
+wafty
+wag
+Waganda
+waganging
+wagaun
+wagbeard
+wage
+waged
+wagedom
+wageless
+wagelessness
+wagenboom
+Wagener
+wager
+wagerer
+wagering
+wages
+wagesman
+wagework
+wageworker
+wageworking
+waggable
+waggably
+waggel
+wagger
+waggery
+waggie
+waggish
+waggishly
+waggishness
+waggle
+waggling
+wagglingly
+waggly
+Waggumbura
+waggy
+waglike
+wagling
+Wagneresque
+Wagnerian
+Wagneriana
+Wagnerianism
+Wagnerism
+Wagnerist
+Wagnerite
+wagnerite
+Wagnerize
+Wagogo
+Wagoma
+wagon
+wagonable
+wagonage
+wagoner
+wagoness
+wagonette
+wagonful
+wagonload
+wagonmaker
+wagonmaking
+wagonman
+wagonry
+wagonsmith
+wagonway
+wagonwayman
+wagonwork
+wagonwright
+wagsome
+wagtail
+Waguha
+wagwag
+wagwants
+Wagweno
+wagwit
+wah
+Wahabi
+Wahabiism
+Wahabit
+Wahabitism
+wahahe
+Wahehe
+Wahima
+wahine
+Wahlenbergia
+wahoo
+wahpekute
+Wahpeton
+waiata
+Waibling
+Waicuri
+Waicurian
+waif
+Waiguli
+Waiilatpuan
+waik
+waikly
+waikness
+wail
+Wailaki
+wailer
+wailful
+wailfully
+wailingly
+wailsome
+waily
+wain
+wainage
+wainbote
+wainer
+wainful
+wainman
+wainrope
+wainscot
+wainscoting
+wainwright
+waipiro
+wairch
+waird
+wairepo
+wairsh
+waise
+waist
+waistband
+waistcloth
+waistcoat
+waistcoated
+waistcoateer
+waistcoathole
+waistcoating
+waistcoatless
+waisted
+waister
+waisting
+waistless
+waistline
+wait
+waiter
+waiterage
+waiterdom
+waiterhood
+waitering
+waiterlike
+waitership
+waiting
+waitingly
+waitress
+waivatua
+waive
+waiver
+waivery
+waivod
+Waiwai
+waiwode
+wajang
+waka
+Wakamba
+wakan
+Wakashan
+wake
+wakeel
+wakeful
+wakefully
+wakefulness
+wakeless
+waken
+wakener
+wakening
+waker
+wakes
+waketime
+wakf
+Wakhi
+wakif
+wakiki
+waking
+wakingly
+wakiup
+wakken
+wakon
+wakonda
+Wakore
+Wakwafi
+waky
+Walach
+Walachian
+walahee
+Walapai
+Walchia
+Waldenses
+Waldensian
+waldflute
+waldgrave
+waldgravine
+Waldheimia
+waldhorn
+waldmeister
+Waldsteinia
+wale
+waled
+walepiece
+Waler
+waler
+walewort
+wali
+waling
+walk
+walkable
+walkaway
+walker
+walking
+walkist
+walkmill
+walkmiller
+walkout
+walkover
+walkrife
+walkside
+walksman
+walkway
+walkyrie
+wall
+wallaba
+wallaby
+Wallach
+wallah
+wallaroo
+Wallawalla
+wallbird
+wallboard
+walled
+waller
+Wallerian
+wallet
+walletful
+walleye
+walleyed
+wallflower
+wallful
+wallhick
+walling
+wallise
+wallless
+wallman
+Wallon
+Wallonian
+Walloon
+walloon
+wallop
+walloper
+walloping
+wallow
+wallower
+wallowish
+wallowishly
+wallowishness
+wallpaper
+wallpapering
+wallpiece
+Wallsend
+wallwise
+wallwork
+wallwort
+wally
+walnut
+Walpapi
+Walpolean
+Walpurgis
+walpurgite
+walrus
+walsh
+Walt
+walt
+Walter
+walter
+walth
+Waltonian
+waltz
+waltzer
+waltzlike
+walycoat
+wamara
+wambais
+wamble
+wambliness
+wambling
+wamblingly
+wambly
+Wambuba
+Wambugu
+Wambutti
+wame
+wamefou
+wamel
+wammikin
+wamp
+Wampanoag
+wampee
+wample
+wampum
+wampumpeag
+wampus
+wamus
+wan
+Wanapum
+wanchancy
+wand
+wander
+wanderable
+wanderer
+wandering
+wanderingly
+wanderingness
+Wanderjahr
+wanderlust
+wanderluster
+wanderlustful
+wanderoo
+wandery
+wanderyear
+wandflower
+wandle
+wandlike
+wandoo
+Wandorobo
+wandsman
+wandy
+wane
+Waneatta
+waned
+waneless
+wang
+wanga
+wangala
+wangan
+Wangara
+wangateur
+wanghee
+wangle
+wangler
+Wangoni
+wangrace
+wangtooth
+wanhope
+wanhorn
+wanigan
+waning
+wankapin
+wankle
+wankliness
+wankly
+wanle
+wanly
+wanner
+wanness
+wannish
+wanny
+wanrufe
+wansonsy
+want
+wantage
+wanter
+wantful
+wanthill
+wanthrift
+wanting
+wantingly
+wantingness
+wantless
+wantlessness
+wanton
+wantoner
+wantonlike
+wantonly
+wantonness
+wantwit
+wanty
+wanwordy
+wanworth
+wany
+Wanyakyusa
+Wanyamwezi
+Wanyasa
+Wanyoro
+wap
+wapacut
+Wapato
+wapatoo
+wapentake
+Wapisiana
+wapiti
+Wapogoro
+Wapokomo
+wapp
+Wappato
+wappenschaw
+wappenschawing
+wapper
+wapping
+Wappinger
+Wappo
+war
+warabi
+waratah
+warble
+warbled
+warblelike
+warbler
+warblerlike
+warblet
+warbling
+warblingly
+warbly
+warch
+warcraft
+ward
+wardable
+wardage
+wardapet
+warday
+warded
+Warden
+warden
+wardency
+wardenry
+wardenship
+warder
+warderer
+wardership
+wardholding
+warding
+wardite
+wardless
+wardlike
+wardmaid
+wardman
+wardmote
+wardress
+wardrobe
+wardrober
+wardroom
+wardship
+wardsmaid
+wardsman
+wardswoman
+wardwite
+wardwoman
+ware
+Waregga
+warehou
+warehouse
+warehouseage
+warehoused
+warehouseful
+warehouseman
+warehouser
+wareless
+waremaker
+waremaking
+wareman
+wareroom
+warf
+warfare
+warfarer
+warfaring
+warful
+warily
+wariness
+Waring
+waringin
+warish
+warison
+wark
+warkamoowee
+warl
+warless
+warlessly
+warlike
+warlikely
+warlikeness
+warlock
+warluck
+warly
+warm
+warmable
+warman
+warmed
+warmedly
+warmer
+warmful
+warmhearted
+warmheartedly
+warmheartedness
+warmhouse
+warming
+warmish
+warmly
+warmness
+warmonger
+warmongering
+warmouth
+warmth
+warmthless
+warmus
+warn
+warnel
+warner
+warning
+warningly
+warningproof
+warnish
+warnoth
+warnt
+Warori
+warp
+warpable
+warpage
+warped
+warper
+warping
+warplane
+warple
+warplike
+warproof
+warpwise
+warragal
+warrambool
+warran
+warrand
+warrandice
+warrant
+warrantable
+warrantableness
+warrantably
+warranted
+warrantee
+warranter
+warrantise
+warrantless
+warrantor
+warranty
+warratau
+Warrau
+warree
+Warren
+warren
+warrener
+warrenlike
+warrer
+Warri
+warrin
+warrior
+warrioress
+warriorhood
+warriorism
+warriorlike
+warriorship
+warriorwise
+warrok
+Warsaw
+warsaw
+warse
+warsel
+warship
+warsle
+warsler
+warst
+wart
+warted
+wartern
+wartflower
+warth
+wartime
+wartless
+wartlet
+wartlike
+wartproof
+wartweed
+wartwort
+warty
+wartyback
+Warua
+Warundi
+warve
+warwards
+Warwick
+warwickite
+warwolf
+warworn
+wary
+was
+wasabi
+Wasagara
+Wasandawi
+Wasango
+Wasat
+Wasatch
+Wasco
+wase
+Wasegua
+wasel
+wash
+washability
+washable
+washableness
+Washaki
+washaway
+washbasin
+washbasket
+washboard
+washbowl
+washbrew
+washcloth
+washday
+washdish
+washdown
+washed
+washen
+washer
+washerless
+washerman
+washerwife
+washerwoman
+washery
+washeryman
+washhand
+washhouse
+washin
+washiness
+washing
+Washington
+Washingtonia
+Washingtonian
+Washingtoniana
+Washita
+washland
+washmaid
+washman
+Washo
+Washoan
+washoff
+washout
+washpot
+washproof
+washrag
+washroad
+washroom
+washshed
+washstand
+washtail
+washtray
+washtrough
+washtub
+washway
+washwoman
+washwork
+washy
+Wasir
+wasnt
+Wasoga
+Wasp
+wasp
+waspen
+wasphood
+waspily
+waspish
+waspishly
+waspishness
+wasplike
+waspling
+waspnesting
+waspy
+wassail
+wassailer
+wassailous
+wassailry
+wassie
+wast
+wastable
+wastage
+waste
+wastebasket
+wasteboard
+wasted
+wasteful
+wastefully
+wastefulness
+wastel
+wasteland
+wastelbread
+wasteless
+wasteman
+wastement
+wasteness
+wastepaper
+wasteproof
+waster
+wasterful
+wasterfully
+wasterfulness
+wastethrift
+wasteword
+wasteyard
+wasting
+wastingly
+wastingness
+wastland
+wastrel
+wastrife
+wasty
+Wasukuma
+Waswahili
+Wat
+wat
+Watala
+watap
+watch
+watchable
+watchboat
+watchcase
+watchcry
+watchdog
+watched
+watcher
+watchfree
+watchful
+watchfully
+watchfulness
+watchglassful
+watchhouse
+watching
+watchingly
+watchkeeper
+watchless
+watchlessness
+watchmaker
+watchmaking
+watchman
+watchmanly
+watchmanship
+watchmate
+watchment
+watchout
+watchtower
+watchwise
+watchwoman
+watchword
+watchwork
+water
+waterage
+waterbailage
+waterbelly
+Waterberg
+waterboard
+waterbok
+waterbosh
+waterbrain
+waterchat
+watercup
+waterdoe
+waterdrop
+watered
+waterer
+waterfall
+waterfinder
+waterflood
+waterfowl
+waterfront
+waterhead
+waterhorse
+waterie
+waterily
+wateriness
+watering
+wateringly
+wateringman
+waterish
+waterishly
+waterishness
+Waterlander
+Waterlandian
+waterleave
+waterless
+waterlessly
+waterlessness
+waterlike
+waterline
+waterlog
+waterlogged
+waterloggedness
+waterlogger
+waterlogging
+Waterloo
+waterman
+watermanship
+watermark
+watermaster
+watermelon
+watermonger
+waterphone
+waterpot
+waterproof
+waterproofer
+waterproofing
+waterproofness
+waterquake
+waterscape
+watershed
+watershoot
+waterside
+watersider
+waterskin
+watersmeet
+waterspout
+waterstead
+watertight
+watertightal
+watertightness
+waterward
+waterwards
+waterway
+waterweed
+waterwise
+waterwoman
+waterwood
+waterwork
+waterworker
+waterworm
+waterworn
+waterwort
+watery
+wath
+wathstead
+Watsonia
+watt
+wattage
+wattape
+wattle
+wattlebird
+wattled
+wattless
+wattlework
+wattling
+wattman
+wattmeter
+Watusi
+wauble
+wauch
+wauchle
+waucht
+wauf
+waugh
+waughy
+wauken
+waukit
+waukrife
+waul
+waumle
+wauner
+wauns
+waup
+waur
+Waura
+wauregan
+wauve
+wavable
+wavably
+Wave
+wave
+waved
+waveless
+wavelessly
+wavelessness
+wavelet
+wavelike
+wavellite
+wavemark
+wavement
+wavemeter
+waveproof
+waver
+waverable
+waverer
+wavering
+waveringly
+waveringness
+waverous
+wavery
+waveson
+waveward
+wavewise
+wavey
+wavicle
+wavily
+waviness
+waving
+wavingly
+Wavira
+wavy
+waw
+wawa
+wawah
+wawaskeesh
+wax
+waxberry
+waxbill
+waxbird
+waxbush
+waxchandler
+waxchandlery
+waxen
+waxer
+waxflower
+Waxhaw
+waxhearted
+waxily
+waxiness
+waxing
+waxingly
+waxlike
+waxmaker
+waxmaking
+waxman
+waxweed
+waxwing
+waxwork
+waxworker
+waxworking
+waxy
+way
+wayaka
+wayang
+Wayao
+wayback
+wayberry
+waybill
+waybird
+waybook
+waybread
+waybung
+wayfare
+wayfarer
+wayfaring
+wayfaringly
+wayfellow
+waygang
+waygate
+waygoing
+waygone
+waygoose
+wayhouse
+waying
+waylaid
+waylaidlessness
+waylay
+waylayer
+wayleave
+wayless
+waymaker
+wayman
+waymark
+waymate
+Wayne
+waypost
+ways
+wayside
+waysider
+waysliding
+waythorn
+wayward
+waywarden
+waywardly
+waywardness
+waywiser
+waywode
+waywodeship
+wayworn
+waywort
+wayzgoose
+Wazir
+we
+Wea
+weak
+weakbrained
+weaken
+weakener
+weakening
+weakfish
+weakhanded
+weakhearted
+weakheartedly
+weakheartedness
+weakish
+weakishly
+weakishness
+weakliness
+weakling
+weakly
+weakmouthed
+weakness
+weaky
+weal
+weald
+Wealden
+wealdsman
+wealth
+wealthily
+wealthiness
+wealthless
+wealthmaker
+wealthmaking
+wealthmonger
+Wealthy
+wealthy
+weam
+wean
+weanable
+weanedness
+weanel
+weaner
+weanling
+Weanoc
+weanyer
+Weapemeoc
+weapon
+weaponed
+weaponeer
+weaponless
+weaponmaker
+weaponmaking
+weaponproof
+weaponry
+weaponshaw
+weaponshow
+weaponshowing
+weaponsmith
+weaponsmithy
+wear
+wearability
+wearable
+wearer
+weariable
+weariableness
+wearied
+weariedly
+weariedness
+wearier
+weariful
+wearifully
+wearifulness
+weariless
+wearilessly
+wearily
+weariness
+wearing
+wearingly
+wearish
+wearishly
+wearishness
+wearisome
+wearisomely
+wearisomeness
+wearproof
+weary
+wearying
+wearyingly
+weasand
+weasel
+weaselfish
+weasellike
+weaselly
+weaselship
+weaselskin
+weaselsnout
+weaselwise
+weaser
+weason
+weather
+weatherboard
+weatherboarding
+weatherbreak
+weathercock
+weathercockish
+weathercockism
+weathercocky
+weathered
+weatherer
+weatherfish
+weatherglass
+weathergleam
+weatherhead
+weatherheaded
+weathering
+weatherliness
+weatherly
+weathermaker
+weathermaking
+weatherman
+weathermost
+weatherology
+weatherproof
+weatherproofed
+weatherproofing
+weatherproofness
+weatherward
+weatherworn
+weathery
+weavable
+weave
+weaveable
+weaved
+weavement
+weaver
+weaverbird
+weaveress
+weaving
+weazen
+weazened
+weazeny
+web
+webbed
+webber
+webbing
+webby
+weber
+Weberian
+webeye
+webfoot
+webfooter
+webless
+weblike
+webmaker
+webmaking
+webster
+Websterian
+websterite
+webwork
+webworm
+wecht
+wed
+wedana
+wedbed
+wedbedrip
+wedded
+weddedly
+weddedness
+wedder
+wedding
+weddinger
+wede
+wedge
+wedgeable
+wedgebill
+wedged
+wedgelike
+wedger
+wedgewise
+Wedgie
+wedging
+Wedgwood
+wedgy
+wedlock
+Wednesday
+wedset
+wee
+weeble
+weed
+weeda
+weedable
+weedage
+weeded
+weeder
+weedery
+weedful
+weedhook
+weediness
+weedingtime
+weedish
+weedless
+weedlike
+weedling
+weedow
+weedproof
+weedy
+week
+weekday
+weekend
+weekender
+weekly
+weekwam
+weel
+weelfard
+weelfaured
+weemen
+ween
+weendigo
+weeness
+weening
+weenong
+weeny
+weep
+weepable
+weeper
+weepered
+weepful
+weeping
+weepingly
+weeps
+weepy
+weesh
+weeshy
+weet
+weetbird
+weetless
+weever
+weevil
+weeviled
+weevillike
+weevilproof
+weevily
+weewow
+weeze
+weft
+weftage
+wefted
+wefty
+Wega
+wegenerian
+wegotism
+wehrlite
+Wei
+weibyeite
+weichselwood
+Weierstrassian
+Weigela
+weigelite
+weigh
+weighable
+weighage
+weighbar
+weighbauk
+weighbridge
+weighbridgeman
+weighed
+weigher
+weighership
+weighhouse
+weighin
+weighing
+weighman
+weighment
+weighshaft
+weight
+weightchaser
+weighted
+weightedly
+weightedness
+weightily
+weightiness
+weighting
+weightless
+weightlessly
+weightlessness
+weightometer
+weighty
+weinbergerite
+Weinmannia
+weinschenkite
+weir
+weirangle
+weird
+weirdful
+weirdish
+weirdless
+weirdlessness
+weirdlike
+weirdliness
+weirdly
+weirdness
+weirdsome
+weirdward
+weirdwoman
+weiring
+weisbachite
+weiselbergite
+weism
+Weismannian
+Weismannism
+weissite
+Weissnichtwo
+Weitspekan
+wejack
+weka
+wekau
+wekeen
+weki
+welcome
+welcomeless
+welcomely
+welcomeness
+welcomer
+welcoming
+welcomingly
+weld
+weldability
+weldable
+welder
+welding
+weldless
+weldment
+weldor
+Welf
+welfare
+welfaring
+Welfic
+welk
+welkin
+welkinlike
+well
+wellat
+wellaway
+wellborn
+wellcurb
+wellhead
+wellhole
+welling
+wellington
+Wellingtonia
+wellish
+wellmaker
+wellmaking
+wellman
+wellnear
+wellness
+wellring
+Wellsian
+wellside
+wellsite
+wellspring
+wellstead
+wellstrand
+welly
+wellyard
+wels
+Welsh
+welsh
+welsher
+Welshery
+Welshism
+Welshland
+Welshlike
+Welshman
+Welshness
+Welshry
+Welshwoman
+Welshy
+welsium
+welt
+welted
+welter
+welterweight
+welting
+Welwitschia
+wem
+wemless
+wen
+wench
+wencher
+wenchless
+wenchlike
+Wenchow
+Wenchowese
+Wend
+wend
+wende
+Wendell
+Wendi
+Wendic
+Wendish
+Wendy
+wene
+Wenlock
+Wenlockian
+wennebergite
+wennish
+wenny
+Wenonah
+Wenrohronon
+went
+wentletrap
+wenzel
+wept
+wer
+Werchowinci
+were
+werebear
+werecalf
+werefolk
+werefox
+werehyena
+werejaguar
+wereleopard
+werent
+weretiger
+werewolf
+werewolfish
+werewolfism
+werf
+wergil
+weri
+Werner
+Wernerian
+Wernerism
+wernerite
+werowance
+wert
+Werther
+Wertherian
+Wertherism
+wervel
+Wes
+wese
+weskit
+Wesleyan
+Wesleyanism
+Wesleyism
+wesselton
+Wessexman
+west
+westaway
+westbound
+weste
+wester
+westering
+westerliness
+westerly
+westermost
+western
+westerner
+westernism
+westernization
+westernize
+westernly
+westernmost
+westerwards
+westfalite
+westing
+westland
+Westlander
+westlandways
+westmost
+westness
+Westphalian
+Westralian
+Westralianism
+westward
+westwardly
+westwardmost
+westwards
+westy
+wet
+weta
+wetback
+wetbird
+wetched
+wetchet
+wether
+wetherhog
+wetherteg
+wetly
+wetness
+wettability
+wettable
+wetted
+wetter
+wetting
+wettish
+Wetumpka
+weve
+wevet
+Wewenoc
+wey
+Wezen
+Wezn
+wha
+whabby
+whack
+whacker
+whacking
+whacky
+whafabout
+whale
+whaleback
+whalebacker
+whalebird
+whaleboat
+whalebone
+whaleboned
+whaledom
+whalehead
+whalelike
+whaleman
+whaler
+whaleroad
+whalery
+whaleship
+whaling
+whalish
+whally
+whalm
+whalp
+whaly
+wham
+whamble
+whame
+whammle
+whamp
+whampee
+whample
+whan
+whand
+whang
+whangable
+whangam
+whangdoodle
+whangee
+whanghee
+whank
+whap
+whappet
+whapuka
+whapukee
+whapuku
+whar
+whare
+whareer
+wharf
+wharfage
+wharfhead
+wharfholder
+wharfing
+wharfinger
+wharfland
+wharfless
+wharfman
+wharfmaster
+wharfrae
+wharfside
+wharl
+wharp
+wharry
+whart
+wharve
+whase
+whasle
+what
+whata
+whatabouts
+whatever
+whatkin
+whatlike
+whatna
+whatness
+whatnot
+whatreck
+whats
+whatso
+whatsoeer
+whatsoever
+whatsomever
+whatten
+whau
+whauk
+whaup
+whaur
+whauve
+wheal
+whealworm
+whealy
+wheam
+wheat
+wheatbird
+wheatear
+wheateared
+wheaten
+wheatgrower
+wheatland
+wheatless
+wheatlike
+wheatstalk
+wheatworm
+wheaty
+whedder
+whee
+wheedle
+wheedler
+wheedlesome
+wheedling
+wheedlingly
+wheel
+wheelage
+wheelband
+wheelbarrow
+wheelbarrowful
+wheelbird
+wheelbox
+wheeldom
+wheeled
+wheeler
+wheelery
+wheelhouse
+wheeling
+wheelingly
+wheelless
+wheellike
+wheelmaker
+wheelmaking
+wheelman
+wheelrace
+wheelroad
+wheelsman
+wheelsmith
+wheelspin
+wheelswarf
+wheelway
+wheelwise
+wheelwork
+wheelwright
+wheelwrighting
+wheely
+wheem
+wheen
+wheencat
+wheenge
+wheep
+wheeple
+wheer
+wheerikins
+wheesht
+wheetle
+wheeze
+wheezer
+wheezily
+wheeziness
+wheezingly
+wheezle
+wheezy
+wheft
+whein
+whekau
+wheki
+whelk
+whelked
+whelker
+whelklike
+whelky
+whelm
+whelp
+whelphood
+whelpish
+whelpless
+whelpling
+whelve
+whemmel
+when
+whenabouts
+whenas
+whence
+whenceeer
+whenceforth
+whenceforward
+whencesoeer
+whencesoever
+whencever
+wheneer
+whenever
+whenness
+whenso
+whensoever
+whensomever
+where
+whereabout
+whereabouts
+whereafter
+whereanent
+whereas
+whereat
+whereaway
+whereby
+whereer
+wherefor
+wherefore
+wherefrom
+wherein
+whereinsoever
+whereinto
+whereness
+whereof
+whereon
+whereout
+whereover
+whereso
+wheresoeer
+wheresoever
+wheresomever
+wherethrough
+wheretill
+whereto
+wheretoever
+wheretosoever
+whereunder
+whereuntil
+whereunto
+whereup
+whereupon
+wherever
+wherewith
+wherewithal
+wherret
+wherrit
+wherry
+wherryman
+whet
+whether
+whetile
+whetrock
+whetstone
+whetter
+whew
+whewellite
+whewer
+whewl
+whewt
+whey
+wheybeard
+wheyey
+wheyeyness
+wheyface
+wheyfaced
+wheyish
+wheyishness
+wheylike
+wheyness
+whiba
+which
+whichever
+whichsoever
+whichway
+whichways
+whick
+whicken
+whicker
+whid
+whidah
+whidder
+whiff
+whiffenpoof
+whiffer
+whiffet
+whiffle
+whiffler
+whifflery
+whiffletree
+whiffling
+whifflingly
+whiffy
+whift
+Whig
+whig
+Whiggamore
+whiggamore
+Whiggarchy
+Whiggery
+Whiggess
+Whiggification
+Whiggify
+Whiggish
+Whiggishly
+Whiggishness
+Whiggism
+Whiglet
+Whigling
+whigmaleerie
+whigship
+whikerby
+while
+whileen
+whilere
+whiles
+whilie
+whilk
+Whilkut
+whill
+whillaballoo
+whillaloo
+whillilew
+whilly
+whillywha
+whilock
+whilom
+whils
+whilst
+whilter
+whim
+whimberry
+whimble
+whimbrel
+whimling
+whimmy
+whimper
+whimperer
+whimpering
+whimperingly
+whimsey
+whimsic
+whimsical
+whimsicality
+whimsically
+whimsicalness
+whimsied
+whimstone
+whimwham
+whin
+whinberry
+whinchacker
+whinchat
+whincheck
+whincow
+whindle
+whine
+whiner
+whinestone
+whing
+whinge
+whinger
+whininess
+whiningly
+whinnel
+whinner
+whinnock
+whinny
+whinstone
+whiny
+whinyard
+whip
+whipbelly
+whipbird
+whipcat
+whipcord
+whipcordy
+whipcrack
+whipcracker
+whipcraft
+whipgraft
+whipjack
+whipking
+whiplash
+whiplike
+whipmaker
+whipmaking
+whipman
+whipmanship
+whipmaster
+whippa
+whippable
+whipparee
+whipped
+whipper
+whippersnapper
+whippertail
+whippet
+whippeter
+whippiness
+whipping
+whippingly
+whippletree
+whippoorwill
+whippost
+whippowill
+whippy
+whipsaw
+whipsawyer
+whipship
+whipsocket
+whipstaff
+whipstalk
+whipstall
+whipster
+whipstick
+whipstitch
+whipstock
+whipt
+whiptail
+whiptree
+whipwise
+whipworm
+whir
+whirken
+whirl
+whirlabout
+whirlblast
+whirlbone
+whirlbrain
+whirled
+whirler
+whirley
+whirlgig
+whirlicane
+whirligig
+whirlimagig
+whirling
+whirlingly
+whirlmagee
+whirlpool
+whirlpuff
+whirlwig
+whirlwind
+whirlwindish
+whirlwindy
+whirly
+whirlygigum
+whirret
+whirrey
+whirroo
+whirry
+whirtle
+whish
+whisk
+whisker
+whiskerage
+whiskerando
+whiskerandoed
+whiskered
+whiskerer
+whiskerette
+whiskerless
+whiskerlike
+whiskery
+whiskey
+whiskful
+whiskied
+whiskified
+whisking
+whiskingly
+whisky
+whiskyfied
+whiskylike
+whisp
+whisper
+whisperable
+whisperation
+whispered
+whisperer
+whisperhood
+whispering
+whisperingly
+whisperingness
+whisperless
+whisperous
+whisperously
+whisperproof
+whispery
+whissle
+Whisson
+whist
+whister
+whisterpoop
+whistle
+whistlebelly
+whistlefish
+whistlelike
+whistler
+Whistlerian
+whistlerism
+whistlewing
+whistlewood
+whistlike
+whistling
+whistlingly
+whistly
+whistness
+Whistonian
+Whit
+whit
+white
+whiteback
+whitebait
+whitebark
+whitebeard
+whitebelly
+whitebill
+whitebird
+whiteblaze
+whiteblow
+whitebottle
+Whiteboy
+Whiteboyism
+whitecap
+whitecapper
+Whitechapel
+whitecoat
+whitecomb
+whitecorn
+whitecup
+whited
+whiteface
+Whitefieldian
+Whitefieldism
+Whitefieldite
+whitefish
+whitefisher
+whitefishery
+Whitefoot
+whitefoot
+whitefootism
+whitehanded
+whitehass
+whitehawse
+whitehead
+whiteheart
+whitehearted
+whitelike
+whitely
+whiten
+whitener
+whiteness
+whitening
+whitenose
+whitepot
+whiteroot
+whiterump
+whites
+whitesark
+whiteseam
+whiteshank
+whiteside
+whitesmith
+whitestone
+whitetail
+whitethorn
+whitethroat
+whitetip
+whitetop
+whitevein
+whitewall
+whitewards
+whiteware
+whitewash
+whitewasher
+whiteweed
+whitewing
+whitewood
+whiteworm
+whitewort
+whitfinch
+whither
+whitherso
+whithersoever
+whitherto
+whitherward
+whiting
+whitish
+whitishness
+whitleather
+Whitleyism
+whitling
+whitlow
+whitlowwort
+Whitmanese
+Whitmanesque
+Whitmanism
+Whitmanize
+Whitmonday
+whitneyite
+whitrack
+whits
+whitster
+Whitsun
+Whitsunday
+Whitsuntide
+whittaw
+whitten
+whittener
+whitter
+whitterick
+whittle
+whittler
+whittling
+whittret
+whittrick
+whity
+whiz
+whizgig
+whizzer
+whizzerman
+whizziness
+whizzing
+whizzingly
+whizzle
+who
+whoa
+whodunit
+whoever
+whole
+wholehearted
+wholeheartedly
+wholeheartedness
+wholeness
+wholesale
+wholesalely
+wholesaleness
+wholesaler
+wholesome
+wholesomely
+wholesomeness
+wholewise
+wholly
+whom
+whomble
+whomever
+whomso
+whomsoever
+whone
+whoo
+whoof
+whoop
+whoopee
+whooper
+whooping
+whoopingly
+whooplike
+whoops
+whoosh
+whop
+whopper
+whopping
+whorage
+whore
+whoredom
+whorelike
+whoremaster
+whoremasterly
+whoremastery
+whoremonger
+whoremonging
+whoreship
+whoreson
+whorish
+whorishly
+whorishness
+whorl
+whorled
+whorlflower
+whorly
+whorlywort
+whort
+whortle
+whortleberry
+whose
+whosen
+whosesoever
+whosever
+whosomever
+whosumdever
+whud
+whuff
+whuffle
+whulk
+whulter
+whummle
+whun
+whunstane
+whup
+whush
+whuskie
+whussle
+whute
+whuther
+whutter
+whuttering
+whuz
+why
+whyever
+whyfor
+whyness
+whyo
+wi
+wice
+Wichita
+wicht
+wichtisite
+wichtje
+wick
+wickawee
+wicked
+wickedish
+wickedlike
+wickedly
+wickedness
+wicken
+wicker
+wickerby
+wickerware
+wickerwork
+wickerworked
+wickerworker
+wicket
+wicketkeep
+wicketkeeper
+wicketkeeping
+wicketwork
+wicking
+wickiup
+wickless
+wickup
+wicky
+wicopy
+wid
+widbin
+widdendream
+widder
+widdershins
+widdifow
+widdle
+widdy
+wide
+widegab
+widehearted
+widely
+widemouthed
+widen
+widener
+wideness
+widespread
+widespreadedly
+widespreadly
+widespreadness
+widewhere
+widework
+widgeon
+widish
+widow
+widowed
+widower
+widowered
+widowerhood
+widowership
+widowery
+widowhood
+widowish
+widowlike
+widowly
+widowman
+widowy
+width
+widthless
+widthway
+widthways
+widthwise
+widu
+wield
+wieldable
+wielder
+wieldiness
+wieldy
+wiener
+wienerwurst
+wienie
+wierangle
+wiesenboden
+wife
+wifecarl
+wifedom
+wifehood
+wifeism
+wifekin
+wifeless
+wifelessness
+wifelet
+wifelike
+wifeling
+wifelkin
+wifely
+wifeship
+wifeward
+wifie
+wifiekie
+wifish
+wifock
+wig
+wigan
+wigdom
+wigful
+wigged
+wiggen
+wigger
+wiggery
+wigging
+wiggish
+wiggishness
+wiggism
+wiggle
+wiggler
+wiggly
+wiggy
+wight
+wightly
+wightness
+wigless
+wiglet
+wiglike
+wigmaker
+wigmaking
+wigtail
+wigwag
+wigwagger
+wigwam
+wiikite
+Wikeno
+Wikstroemia
+Wilbur
+Wilburite
+wild
+wildbore
+wildcat
+wildcatter
+wildcatting
+wildebeest
+wilded
+wilder
+wilderedly
+wildering
+wilderment
+wilderness
+wildfire
+wildfowl
+wildgrave
+wilding
+wildish
+wildishly
+wildishness
+wildlife
+wildlike
+wildling
+wildly
+wildness
+wildsome
+wildwind
+wile
+wileful
+wileless
+wileproof
+Wilfred
+wilga
+wilgers
+Wilhelm
+Wilhelmina
+Wilhelmine
+wilily
+wiliness
+wilk
+wilkeite
+wilkin
+Wilkinson
+Will
+will
+willable
+willawa
+willed
+willedness
+willemite
+willer
+willet
+willey
+willeyer
+willful
+willfully
+willfulness
+William
+williamsite
+Williamsonia
+Williamsoniaceae
+Willie
+willie
+willier
+willies
+willing
+willinghearted
+willinghood
+willingly
+willingness
+williwaw
+willmaker
+willmaking
+willness
+willock
+willow
+willowbiter
+willowed
+willower
+willowish
+willowlike
+willowware
+willowweed
+willowworm
+willowwort
+willowy
+Willugbaeya
+Willy
+willy
+willyard
+willyart
+willyer
+Wilmer
+wilsome
+wilsomely
+wilsomeness
+Wilson
+Wilsonian
+wilt
+wilter
+Wilton
+wiltproof
+Wiltshire
+wily
+wim
+wimberry
+wimble
+wimblelike
+wimbrel
+wime
+wimick
+wimple
+wimpleless
+wimplelike
+Win
+win
+winberry
+wince
+wincer
+wincey
+winch
+wincher
+Winchester
+winchman
+wincing
+wincingly
+Wind
+wind
+windable
+windage
+windbag
+windbagged
+windbaggery
+windball
+windberry
+windbibber
+windbore
+windbracing
+windbreak
+Windbreaker
+windbreaker
+windbroach
+windclothes
+windcuffer
+winddog
+winded
+windedly
+windedness
+winder
+windermost
+Windesheimer
+windfall
+windfallen
+windfanner
+windfirm
+windfish
+windflaw
+windflower
+windgall
+windgalled
+windhole
+windhover
+windigo
+windily
+windiness
+winding
+windingly
+windingness
+windjammer
+windjamming
+windlass
+windlasser
+windle
+windles
+windless
+windlessly
+windlessness
+windlestrae
+windlestraw
+windlike
+windlin
+windling
+windmill
+windmilly
+windock
+windore
+window
+windowful
+windowless
+windowlessness
+windowlet
+windowlight
+windowlike
+windowmaker
+windowmaking
+windowman
+windowpane
+windowpeeper
+windowshut
+windowward
+windowwards
+windowwise
+windowy
+windpipe
+windplayer
+windproof
+windring
+windroad
+windroot
+windrow
+windrower
+windscreen
+windshield
+windshock
+Windsor
+windsorite
+windstorm
+windsucker
+windtight
+windup
+windward
+windwardly
+windwardmost
+windwardness
+windwards
+windway
+windwayward
+windwaywardly
+windy
+wine
+wineball
+wineberry
+winebibber
+winebibbery
+winebibbing
+Winebrennerian
+wineconner
+wined
+wineglass
+wineglassful
+winegrower
+winegrowing
+winehouse
+wineless
+winelike
+winemay
+winepot
+winer
+winery
+Winesap
+wineshop
+wineskin
+winesop
+winetaster
+winetree
+winevat
+Winfred
+winful
+wing
+wingable
+wingbeat
+wingcut
+winged
+wingedly
+wingedness
+winger
+wingfish
+winghanded
+wingle
+wingless
+winglessness
+winglet
+winglike
+wingman
+wingmanship
+wingpiece
+wingpost
+wingseed
+wingspread
+wingstem
+wingy
+Winifred
+winish
+wink
+winkel
+winkelman
+winker
+winkered
+winking
+winkingly
+winkle
+winklehawk
+winklehole
+winklet
+winly
+winna
+winnable
+winnard
+Winnebago
+Winnecowet
+winnel
+winnelstrae
+winner
+Winnie
+winning
+winningly
+winningness
+winnings
+winninish
+Winnipesaukee
+winnle
+winnonish
+winnow
+winnower
+winnowing
+winnowingly
+Winona
+winrace
+winrow
+winsome
+winsomely
+winsomeness
+Winston
+wint
+winter
+Winteraceae
+winterage
+Winteranaceae
+winterberry
+winterbloom
+winterbourne
+winterdykes
+wintered
+winterer
+winterfeed
+wintergreen
+winterhain
+wintering
+winterish
+winterishly
+winterishness
+winterization
+winterize
+winterkill
+winterkilling
+winterless
+winterlike
+winterliness
+winterling
+winterly
+winterproof
+wintersome
+wintertide
+wintertime
+winterward
+winterwards
+winterweed
+wintle
+wintrify
+wintrily
+wintriness
+wintrish
+wintrous
+wintry
+Wintun
+winy
+winze
+winzeman
+wipe
+wiper
+wippen
+wips
+wir
+wirable
+wirble
+wird
+wire
+wirebar
+wirebird
+wired
+wiredancer
+wiredancing
+wiredraw
+wiredrawer
+wiredrawn
+wirehair
+wireless
+wirelessly
+wirelessness
+wirelike
+wiremaker
+wiremaking
+wireman
+wiremonger
+Wirephoto
+wirepull
+wirepuller
+wirepulling
+wirer
+wiresmith
+wirespun
+wiretail
+wireway
+wireweed
+wirework
+wireworker
+wireworking
+wireworks
+wireworm
+wirily
+wiriness
+wiring
+wirl
+wirling
+Wiros
+wirr
+wirra
+wirrah
+wirrasthru
+wiry
+wis
+Wisconsinite
+wisdom
+wisdomful
+wisdomless
+wisdomproof
+wisdomship
+wise
+wiseacre
+wiseacred
+wiseacredness
+wiseacredom
+wiseacreish
+wiseacreishness
+wiseacreism
+wisecrack
+wisecracker
+wisecrackery
+wisehead
+wisehearted
+wiseheartedly
+wiseheimer
+wiselike
+wiseling
+wisely
+wiseman
+wisen
+wiseness
+wisenheimer
+wisent
+wiser
+wiseweed
+wisewoman
+wish
+wisha
+wishable
+wishbone
+wished
+wishedly
+wisher
+wishful
+wishfully
+wishfulness
+wishing
+wishingly
+wishless
+wishly
+wishmay
+wishness
+Wishoskan
+Wishram
+wisht
+wishtonwish
+Wisigothic
+wisket
+wiskinky
+wisp
+wispish
+wisplike
+wispy
+wiss
+wisse
+wissel
+wist
+Wistaria
+wistaria
+wiste
+wistened
+Wisteria
+wisteria
+wistful
+wistfully
+wistfulness
+wistit
+wistiti
+wistless
+wistlessness
+wistonwish
+wit
+witan
+Witbooi
+witch
+witchbells
+witchcraft
+witched
+witchedly
+witchen
+witchering
+witchery
+witchet
+witchetty
+witchhood
+witching
+witchingly
+witchleaf
+witchlike
+witchman
+witchmonger
+witchuck
+witchweed
+witchwife
+witchwoman
+witchwood
+witchwork
+witchy
+witcraft
+wite
+witeless
+witenagemot
+witepenny
+witess
+witful
+with
+withal
+withamite
+Withania
+withdraught
+withdraw
+withdrawable
+withdrawal
+withdrawer
+withdrawing
+withdrawingness
+withdrawment
+withdrawn
+withdrawnness
+withe
+withen
+wither
+witherband
+withered
+witheredly
+witheredness
+witherer
+withergloom
+withering
+witheringly
+witherite
+witherly
+withernam
+withers
+withershins
+withertip
+witherwards
+witherweight
+withery
+withewood
+withheld
+withhold
+withholdable
+withholdal
+withholder
+withholdment
+within
+withindoors
+withinside
+withinsides
+withinward
+withinwards
+withness
+witholden
+without
+withoutdoors
+withouten
+withoutforth
+withoutside
+withoutwards
+withsave
+withstand
+withstander
+withstandingness
+withstay
+withstood
+withstrain
+withvine
+withwind
+withy
+withypot
+withywind
+witjar
+witless
+witlessly
+witlessness
+witlet
+witling
+witloof
+witmonger
+witness
+witnessable
+witnessdom
+witnesser
+witney
+witneyer
+Witoto
+witship
+wittal
+wittawer
+witteboom
+witted
+witter
+wittering
+witticaster
+wittichenite
+witticism
+witticize
+wittified
+wittily
+wittiness
+witting
+wittingly
+wittol
+wittolly
+witty
+Witumki
+witwall
+witzchoura
+wive
+wiver
+wivern
+Wiyat
+Wiyot
+wiz
+wizard
+wizardess
+wizardism
+wizardlike
+wizardly
+wizardry
+wizardship
+wizen
+wizened
+wizenedness
+wizier
+wizzen
+wloka
+wo
+woad
+woader
+woadman
+woadwaxen
+woady
+woak
+woald
+woan
+wob
+wobbegong
+wobble
+wobbler
+wobbliness
+wobbling
+wobblingly
+wobbly
+wobster
+wocheinite
+Wochua
+wod
+woddie
+wode
+Wodenism
+wodge
+wodgy
+woe
+woebegone
+woebegoneness
+woebegonish
+woeful
+woefully
+woefulness
+woehlerite
+woesome
+woevine
+woeworn
+woffler
+woft
+wog
+wogiet
+Wogulian
+woibe
+wokas
+woke
+wokowi
+wold
+woldlike
+woldsman
+woldy
+Wolf
+wolf
+wolfachite
+wolfberry
+wolfdom
+wolfen
+wolfer
+Wolffia
+Wolffian
+Wolffianism
+Wolfgang
+wolfhood
+wolfhound
+Wolfian
+wolfish
+wolfishly
+wolfishness
+wolfkin
+wolfless
+wolflike
+wolfling
+wolfram
+wolframate
+wolframic
+wolframine
+wolframinium
+wolframite
+wolfsbane
+wolfsbergite
+wolfskin
+wolfward
+wolfwards
+wollastonite
+wollomai
+wollop
+Wolof
+wolter
+wolve
+wolveboon
+wolver
+wolverine
+woman
+womanbody
+womandom
+womanfolk
+womanfully
+womanhead
+womanhearted
+womanhood
+womanhouse
+womanish
+womanishly
+womanishness
+womanism
+womanist
+womanity
+womanization
+womanize
+womanizer
+womankind
+womanless
+womanlike
+womanliness
+womanly
+womanmuckle
+womanness
+womanpost
+womanproof
+womanship
+womanways
+womanwise
+womb
+wombat
+wombed
+womble
+wombstone
+womby
+womenfolk
+womenfolks
+womenkind
+womera
+wommerala
+won
+wonder
+wonderberry
+wonderbright
+wondercraft
+wonderer
+wonderful
+wonderfully
+wonderfulness
+wondering
+wonderingly
+wonderland
+wonderlandish
+wonderless
+wonderment
+wondermonger
+wondermongering
+wondersmith
+wondersome
+wonderstrong
+wonderwell
+wonderwork
+wonderworthy
+wondrous
+wondrously
+wondrousness
+wone
+wonegan
+wong
+wonga
+Wongara
+wongen
+wongshy
+wongsky
+woning
+wonky
+wonna
+wonned
+wonner
+wonning
+wonnot
+wont
+wonted
+wontedly
+wontedness
+wonting
+woo
+wooable
+wood
+woodagate
+woodbark
+woodbin
+woodbind
+woodbine
+woodbined
+woodbound
+woodburytype
+woodbush
+woodchat
+woodchuck
+woodcock
+woodcockize
+woodcracker
+woodcraft
+woodcrafter
+woodcraftiness
+woodcraftsman
+woodcrafty
+woodcut
+woodcutter
+woodcutting
+wooded
+wooden
+woodendite
+woodenhead
+woodenheaded
+woodenheadedness
+woodenly
+woodenness
+woodenware
+woodenweary
+woodeny
+woodfish
+woodgeld
+woodgrub
+woodhack
+woodhacker
+woodhole
+woodhorse
+woodhouse
+woodhung
+woodine
+woodiness
+wooding
+woodish
+woodjobber
+woodkern
+woodknacker
+woodland
+woodlander
+woodless
+woodlessness
+woodlet
+woodlike
+woodlocked
+woodly
+woodman
+woodmancraft
+woodmanship
+woodmonger
+woodmote
+woodness
+woodpeck
+woodpecker
+woodpenny
+woodpile
+woodprint
+woodranger
+woodreeve
+woodrick
+woodrock
+woodroof
+woodrow
+woodrowel
+Woodruff
+woodruff
+woodsere
+woodshed
+woodshop
+Woodsia
+woodside
+woodsilver
+woodskin
+woodsman
+woodspite
+woodstone
+woodsy
+woodwall
+woodward
+Woodwardia
+woodwardship
+woodware
+woodwax
+woodwaxen
+woodwise
+woodwork
+woodworker
+woodworking
+woodworm
+woodwose
+woodwright
+Woody
+woody
+woodyard
+wooer
+woof
+woofed
+woofell
+woofer
+woofy
+woohoo
+wooing
+wooingly
+wool
+woold
+woolder
+woolding
+wooled
+woolen
+woolenet
+woolenization
+woolenize
+wooler
+woolert
+woolfell
+woolgatherer
+woolgathering
+woolgrower
+woolgrowing
+woolhead
+wooliness
+woollike
+woolly
+woollyhead
+woollyish
+woolman
+woolpack
+woolpress
+woolsack
+woolsey
+woolshearer
+woolshearing
+woolshears
+woolshed
+woolskin
+woolsorter
+woolsorting
+woolsower
+woolstock
+woolulose
+Woolwa
+woolwasher
+woolweed
+woolwheel
+woolwinder
+woolwork
+woolworker
+woolworking
+woom
+woomer
+woomerang
+woon
+woons
+woorali
+woorari
+woosh
+wootz
+woozle
+woozy
+wop
+woppish
+wops
+worble
+worcester
+word
+wordable
+wordably
+wordage
+wordbook
+wordbuilding
+wordcraft
+wordcraftsman
+worded
+Worden
+worder
+wordily
+wordiness
+wording
+wordish
+wordishly
+wordishness
+wordle
+wordless
+wordlessly
+wordlessness
+wordlike
+wordlorist
+wordmaker
+wordmaking
+wordman
+wordmanship
+wordmonger
+wordmongering
+wordmongery
+wordplay
+wordsman
+wordsmanship
+wordsmith
+wordspite
+wordster
+Wordsworthian
+Wordsworthianism
+wordy
+wore
+work
+workability
+workable
+workableness
+workaday
+workaway
+workbag
+workbasket
+workbench
+workbook
+workbox
+workbrittle
+workday
+worked
+worker
+workfellow
+workfolk
+workfolks
+workgirl
+workhand
+workhouse
+workhoused
+working
+workingly
+workingman
+workingwoman
+workless
+worklessness
+workloom
+workman
+workmanlike
+workmanlikeness
+workmanliness
+workmanly
+workmanship
+workmaster
+workmistress
+workout
+workpan
+workpeople
+workpiece
+workplace
+workroom
+works
+workship
+workshop
+worksome
+workstand
+worktable
+worktime
+workways
+workwise
+workwoman
+workwomanlike
+workwomanly
+worky
+workyard
+world
+worlded
+worldful
+worldish
+worldless
+worldlet
+worldlike
+worldlily
+worldliness
+worldling
+worldly
+worldmaker
+worldmaking
+worldproof
+worldquake
+worldward
+worldwards
+worldway
+worldy
+worm
+wormed
+wormer
+wormhole
+wormholed
+wormhood
+Wormian
+wormil
+worming
+wormless
+wormlike
+wormling
+wormproof
+wormroot
+wormseed
+wormship
+wormweed
+wormwood
+wormy
+worn
+wornil
+wornness
+worral
+worriable
+worricow
+worried
+worriedly
+worriedness
+worrier
+worriless
+worriment
+worrisome
+worrisomely
+worrisomeness
+worrit
+worriter
+worry
+worrying
+worryingly
+worryproof
+worrywart
+worse
+worsement
+worsen
+worseness
+worsening
+worser
+worserment
+worset
+worship
+worshipability
+worshipable
+worshiper
+worshipful
+worshipfully
+worshipfulness
+worshipingly
+worshipless
+worshipworth
+worshipworthy
+worst
+worsted
+wort
+worth
+worthful
+worthfulness
+worthiest
+worthily
+worthiness
+worthless
+worthlessly
+worthlessness
+worthship
+worthward
+worthy
+wosbird
+wot
+wote
+wots
+wottest
+wotteth
+woubit
+wouch
+wouf
+wough
+would
+wouldest
+wouldnt
+wouldst
+wound
+woundability
+woundable
+woundableness
+wounded
+woundedly
+wounder
+woundily
+wounding
+woundingly
+woundless
+wounds
+woundwort
+woundworth
+woundy
+wourali
+wourari
+wournil
+wove
+woven
+Wovoka
+wow
+wowser
+wowserdom
+wowserian
+wowserish
+wowserism
+wowsery
+wowt
+woy
+Woyaway
+wrack
+wracker
+wrackful
+Wraf
+wraggle
+wrainbolt
+wrainstaff
+wrainstave
+wraith
+wraithe
+wraithlike
+wraithy
+wraitly
+wramp
+wran
+wrang
+wrangle
+wrangler
+wranglership
+wranglesome
+wranglingly
+wrannock
+wranny
+wrap
+wrappage
+wrapped
+wrapper
+wrapperer
+wrappering
+wrapping
+wraprascal
+wrasse
+wrastle
+wrastler
+wrath
+wrathful
+wrathfully
+wrathfulness
+wrathily
+wrathiness
+wrathlike
+wrathy
+wraw
+wrawl
+wrawler
+wraxle
+wreak
+wreakful
+wreakless
+wreat
+wreath
+wreathage
+wreathe
+wreathed
+wreathen
+wreather
+wreathingly
+wreathless
+wreathlet
+wreathlike
+wreathmaker
+wreathmaking
+wreathwise
+wreathwork
+wreathwort
+wreathy
+wreck
+wreckage
+wrecker
+wreckfish
+wreckful
+wrecking
+wrecky
+Wren
+wren
+wrench
+wrenched
+wrencher
+wrenchingly
+wrenlet
+wrenlike
+wrentail
+wrest
+wrestable
+wrester
+wresting
+wrestingly
+wrestle
+wrestler
+wrestlerlike
+wrestling
+wretch
+wretched
+wretchedly
+wretchedness
+wretchless
+wretchlessly
+wretchlessness
+wretchock
+wricht
+wrick
+wride
+wried
+wrier
+wriest
+wrig
+wriggle
+wriggler
+wrigglesome
+wrigglingly
+wriggly
+wright
+wrightine
+wring
+wringbolt
+wringer
+wringman
+wringstaff
+wrinkle
+wrinkleable
+wrinkled
+wrinkledness
+wrinkledy
+wrinkleful
+wrinkleless
+wrinkleproof
+wrinklet
+wrinkly
+wrist
+wristband
+wristbone
+wristed
+wrister
+wristfall
+wristikin
+wristlet
+wristlock
+wristwork
+writ
+writability
+writable
+writation
+writative
+write
+writeable
+writee
+writer
+writeress
+writerling
+writership
+writh
+writhe
+writhed
+writhedly
+writhedness
+writhen
+writheneck
+writher
+writhing
+writhingly
+writhy
+writing
+writinger
+writmaker
+writmaking
+writproof
+written
+writter
+wrive
+wrizzled
+wro
+wrocht
+wroke
+wroken
+wrong
+wrongdoer
+wrongdoing
+wronged
+wronger
+wrongful
+wrongfully
+wrongfulness
+wronghead
+wrongheaded
+wrongheadedly
+wrongheadedness
+wronghearted
+wrongheartedly
+wrongheartedness
+wrongish
+wrongless
+wronglessly
+wrongly
+wrongness
+wrongous
+wrongously
+wrongousness
+wrongwise
+Wronskian
+wrossle
+wrote
+wroth
+wrothful
+wrothfully
+wrothily
+wrothiness
+wrothly
+wrothsome
+wrothy
+wrought
+wrox
+wrung
+wrungness
+wry
+wrybill
+wryly
+wrymouth
+wryneck
+wryness
+wrytail
+Wu
+Wuchereria
+wud
+wuddie
+wudge
+wudu
+wugg
+wulfenite
+wulk
+wull
+wullawins
+wullcat
+Wullie
+wulliwa
+wumble
+wumman
+wummel
+wun
+Wundtian
+wungee
+wunna
+wunner
+wunsome
+wup
+wur
+wurley
+wurmal
+Wurmian
+wurrus
+wurset
+wurtzilite
+wurtzite
+Wurzburger
+wurzel
+wush
+wusp
+wuss
+wusser
+wust
+wut
+wuther
+wuzu
+wuzzer
+wuzzle
+wuzzy
+wy
+Wyandot
+Wyandotte
+Wycliffian
+Wycliffism
+Wycliffist
+Wycliffite
+wyde
+wye
+Wyethia
+wyke
+Wykehamical
+Wykehamist
+wyle
+wyliecoat
+wymote
+wyn
+wynd
+wyne
+wynkernel
+wynn
+Wyomingite
+wyomingite
+wype
+wyson
+wyss
+wyve
+wyver
+X
+x
+xanthaline
+xanthamic
+xanthamide
+xanthane
+xanthate
+xanthation
+xanthein
+xanthelasma
+xanthelasmic
+xanthelasmoidea
+xanthene
+Xanthian
+xanthic
+xanthide
+Xanthidium
+xanthin
+xanthine
+xanthinuria
+xanthione
+Xanthisma
+xanthite
+Xanthium
+xanthiuria
+xanthocarpous
+Xanthocephalus
+Xanthoceras
+Xanthochroi
+xanthochroia
+Xanthochroic
+xanthochroid
+xanthochroism
+xanthochromia
+xanthochromic
+xanthochroous
+xanthocobaltic
+xanthocone
+xanthoconite
+xanthocreatinine
+xanthocyanopsia
+xanthocyanopsy
+xanthocyanopy
+xanthoderm
+xanthoderma
+xanthodont
+xanthodontous
+xanthogen
+xanthogenamic
+xanthogenamide
+xanthogenate
+xanthogenic
+xantholeucophore
+xanthoma
+xanthomata
+xanthomatosis
+xanthomatous
+Xanthomelanoi
+xanthomelanous
+xanthometer
+Xanthomonas
+xanthomyeloma
+xanthone
+xanthophane
+xanthophore
+xanthophose
+Xanthophyceae
+xanthophyll
+xanthophyllite
+xanthophyllous
+Xanthopia
+xanthopia
+xanthopicrin
+xanthopicrite
+xanthoproteic
+xanthoprotein
+xanthoproteinic
+xanthopsia
+xanthopsin
+xanthopsydracia
+xanthopterin
+xanthopurpurin
+xanthorhamnin
+Xanthorrhiza
+Xanthorrhoea
+xanthorrhoea
+xanthosiderite
+xanthosis
+Xanthosoma
+xanthospermous
+xanthotic
+Xanthoura
+xanthous
+Xanthoxalis
+xanthoxenite
+xanthoxylin
+xanthuria
+xanthydrol
+xanthyl
+xarque
+Xaverian
+xebec
+Xema
+xenacanthine
+Xenacanthini
+xenagogue
+xenagogy
+Xenarchi
+Xenarthra
+xenarthral
+xenarthrous
+xenelasia
+xenelasy
+xenia
+xenial
+xenian
+Xenicidae
+Xenicus
+xenium
+xenobiosis
+xenoblast
+Xenocratean
+Xenocratic
+xenocryst
+xenodochium
+xenogamous
+xenogamy
+xenogenesis
+xenogenetic
+xenogenic
+xenogenous
+xenogeny
+xenolite
+xenolith
+xenolithic
+xenomania
+xenomaniac
+Xenomi
+Xenomorpha
+xenomorphic
+xenomorphosis
+xenon
+xenoparasite
+xenoparasitism
+xenopeltid
+Xenopeltidae
+Xenophanean
+xenophile
+xenophilism
+xenophobe
+xenophobia
+xenophobian
+xenophobism
+xenophoby
+Xenophonic
+Xenophontean
+Xenophontian
+Xenophontic
+Xenophontine
+Xenophora
+xenophoran
+Xenophoridae
+xenophthalmia
+xenophya
+xenopodid
+Xenopodidae
+xenopodoid
+Xenopsylla
+xenopteran
+Xenopteri
+xenopterygian
+Xenopterygii
+Xenopus
+Xenorhynchus
+Xenos
+xenosaurid
+Xenosauridae
+xenosauroid
+Xenosaurus
+xenotime
+Xenurus
+xenyl
+xenylamine
+xerafin
+xeransis
+Xeranthemum
+xeranthemum
+xerantic
+xerarch
+xerasia
+Xeres
+xeric
+xerically
+xeriff
+xerocline
+xeroderma
+xerodermatic
+xerodermatous
+xerodermia
+xerodermic
+xerogel
+xerography
+xeroma
+xeromata
+xeromenia
+xeromorph
+xeromorphic
+xeromorphous
+xeromorphy
+xeromyron
+xeromyrum
+xeronate
+xeronic
+xerophagia
+xerophagy
+xerophil
+xerophile
+xerophilous
+xerophily
+xerophobous
+xerophthalmia
+xerophthalmos
+xerophthalmy
+Xerophyllum
+xerophyte
+xerophytic
+xerophytically
+xerophytism
+xeroprinting
+xerosis
+xerostoma
+xerostomia
+xerotes
+xerotherm
+xerotic
+xerotocia
+xerotripsis
+Xerus
+xi
+Xicak
+Xicaque
+Ximenia
+Xina
+Xinca
+Xipe
+Xiphias
+xiphias
+xiphihumeralis
+xiphiid
+Xiphiidae
+xiphiiform
+xiphioid
+xiphiplastra
+xiphiplastral
+xiphiplastron
+xiphisterna
+xiphisternal
+xiphisternum
+Xiphisura
+xiphisuran
+Xiphiura
+Xiphius
+xiphocostal
+Xiphodon
+Xiphodontidae
+xiphodynia
+xiphoid
+xiphoidal
+xiphoidian
+xiphopagic
+xiphopagous
+xiphopagus
+xiphophyllous
+xiphosterna
+xiphosternum
+Xiphosura
+xiphosuran
+xiphosure
+Xiphosuridae
+xiphosurous
+Xiphosurus
+xiphuous
+Xiphura
+Xiphydria
+xiphydriid
+Xiphydriidae
+Xiraxara
+Xmas
+xoana
+xoanon
+Xosa
+xurel
+xyla
+xylan
+Xylaria
+Xylariaceae
+xylate
+Xyleborus
+xylem
+xylene
+xylenol
+xylenyl
+xyletic
+Xylia
+xylic
+xylidic
+xylidine
+Xylina
+xylindein
+xylinid
+xylite
+xylitol
+xylitone
+xylobalsamum
+xylocarp
+xylocarpous
+Xylocopa
+xylocopid
+Xylocopidae
+xylogen
+xyloglyphy
+xylograph
+xylographer
+xylographic
+xylographical
+xylographically
+xylography
+xyloid
+xyloidin
+xylol
+xylology
+xyloma
+xylomancy
+xylometer
+xylon
+xylonic
+Xylonite
+xylonitrile
+Xylophaga
+xylophagan
+xylophage
+xylophagid
+Xylophagidae
+xylophagous
+Xylophagus
+xylophilous
+xylophone
+xylophonic
+xylophonist
+Xylopia
+xyloplastic
+xylopyrography
+xyloquinone
+xylorcin
+xylorcinol
+xylose
+xyloside
+Xylosma
+xylostroma
+xylostromata
+xylostromatoid
+xylotile
+xylotomist
+xylotomous
+xylotomy
+Xylotrya
+xylotypographic
+xylotypography
+xyloyl
+xylyl
+xylylene
+xylylic
+xyphoid
+Xyrichthys
+xyrid
+Xyridaceae
+xyridaceous
+Xyridales
+Xyris
+xyst
+xyster
+xysti
+xystos
+xystum
+xystus
+Y
+y
+ya
+yaba
+yabber
+yabbi
+yabble
+yabby
+yabu
+yacal
+yacca
+yachan
+yacht
+yachtdom
+yachter
+yachting
+yachtist
+yachtman
+yachtmanship
+yachtsman
+yachtsmanlike
+yachtsmanship
+yachtswoman
+yachty
+yad
+Yadava
+yade
+yaff
+yaffingale
+yaffle
+yagger
+yaghourt
+yagi
+Yagnob
+yagourundi
+Yagua
+yagua
+yaguarundi
+yaguaza
+yah
+yahan
+Yahgan
+Yahganan
+Yahoo
+yahoo
+Yahoodom
+Yahooish
+Yahooism
+Yahuna
+Yahuskin
+Yahweh
+Yahwism
+Yahwist
+Yahwistic
+yair
+yaird
+yaje
+yajeine
+yajenine
+Yajna
+Yajnavalkya
+yajnopavita
+yak
+Yaka
+Yakala
+yakalo
+yakamik
+Yakan
+yakattalo
+Yakima
+yakin
+yakka
+yakman
+Yakona
+Yakonan
+Yakut
+Yakutat
+yalb
+Yale
+yale
+Yalensian
+yali
+yalla
+yallaer
+yallow
+yam
+Yamacraw
+Yamamadi
+yamamai
+yamanai
+yamaskite
+Yamassee
+Yamato
+Yamel
+yamen
+Yameo
+yamilke
+yammadji
+yammer
+yamp
+yampa
+yamph
+yamshik
+yamstchik
+yan
+Yana
+Yanan
+yancopin
+yander
+yang
+yangtao
+yank
+Yankee
+Yankeedom
+Yankeefy
+Yankeeism
+Yankeeist
+Yankeeize
+Yankeeland
+Yankeeness
+yanking
+Yankton
+Yanktonai
+yanky
+Yannigan
+Yao
+yaoort
+yaourti
+yap
+yapa
+yaply
+Yapman
+yapness
+yapok
+yapp
+yapped
+yapper
+yappiness
+yapping
+yappingly
+yappish
+yappy
+yapster
+Yaqui
+Yaquina
+yar
+yarak
+yaray
+yarb
+Yarborough
+yard
+yardage
+yardang
+yardarm
+yarder
+yardful
+yarding
+yardkeep
+yardland
+yardman
+yardmaster
+yardsman
+yardstick
+yardwand
+yare
+yareta
+yark
+Yarkand
+yarke
+yarl
+yarly
+yarm
+yarn
+yarnen
+yarner
+yarnwindle
+yarpha
+yarr
+yarraman
+yarran
+yarringle
+yarrow
+yarth
+yarthen
+Yaru
+Yarura
+Yaruran
+Yaruro
+yarwhelp
+yarwhip
+yas
+yashiro
+yashmak
+Yasht
+Yasna
+yat
+yataghan
+yatalite
+yate
+yati
+Yatigan
+yatter
+Yatvyag
+Yauapery
+yaud
+yauld
+yaupon
+yautia
+yava
+Yavapai
+yaw
+yawl
+yawler
+yawlsman
+yawmeter
+yawn
+yawner
+yawney
+yawnful
+yawnfully
+yawnily
+yawniness
+yawning
+yawningly
+yawnproof
+yawnups
+yawny
+yawp
+yawper
+yawroot
+yaws
+yawweed
+yawy
+yaxche
+yaya
+Yazdegerdian
+Yazoo
+ycie
+yday
+ye
+yea
+yeah
+yealing
+yean
+yeanling
+year
+yeara
+yearbird
+yearbook
+yeard
+yearday
+yearful
+yearling
+yearlong
+yearly
+yearn
+yearnful
+yearnfully
+yearnfulness
+yearning
+yearnling
+yearock
+yearth
+yeast
+yeastily
+yeastiness
+yeasting
+yeastlike
+yeasty
+yeat
+yeather
+yed
+yede
+yee
+yeel
+yeelaman
+yees
+yegg
+yeggman
+yeguita
+yeld
+yeldrin
+yeldrock
+yelk
+yell
+yeller
+yelling
+yelloch
+yellow
+yellowammer
+yellowback
+yellowbelly
+yellowberry
+yellowbill
+yellowbird
+yellowcrown
+yellowcup
+yellowfin
+yellowfish
+yellowhammer
+yellowhead
+yellowing
+yellowish
+yellowishness
+Yellowknife
+yellowlegs
+yellowly
+yellowness
+yellowroot
+yellowrump
+yellows
+yellowseed
+yellowshank
+yellowshanks
+yellowshins
+yellowtail
+yellowthorn
+yellowthroat
+yellowtop
+yellowware
+yellowweed
+yellowwood
+yellowwort
+yellowy
+yelm
+yelmer
+yelp
+yelper
+yelt
+Yemen
+Yemeni
+Yemenic
+Yemenite
+yen
+yender
+Yengee
+Yengeese
+yeni
+Yenisei
+Yeniseian
+yenite
+yentnite
+yeo
+yeoman
+yeomaness
+yeomanette
+yeomanhood
+yeomanlike
+yeomanly
+yeomanry
+yeomanwise
+yeorling
+yeowoman
+yep
+yer
+Yerava
+Yeraver
+yerb
+yerba
+yercum
+yerd
+yere
+yerga
+yerk
+yern
+yerth
+yes
+yese
+Yeshibah
+Yeshiva
+yeso
+yesso
+yest
+yester
+yesterday
+yestereve
+yestereven
+yesterevening
+yestermorn
+yestermorning
+yestern
+yesternight
+yesternoon
+yesterweek
+yesteryear
+yestreen
+yesty
+yet
+yeta
+yetapa
+yeth
+yether
+yetlin
+yeuk
+yeukieness
+yeuky
+yeven
+yew
+yex
+yez
+Yezdi
+Yezidi
+yezzy
+ygapo
+Yid
+Yiddish
+Yiddisher
+Yiddishism
+Yiddishist
+yield
+yieldable
+yieldableness
+yieldance
+yielden
+yielder
+yielding
+yieldingly
+yieldingness
+yieldy
+yigh
+Yikirgaulit
+Yildun
+yill
+yilt
+Yin
+yin
+yince
+yinst
+yip
+yird
+yirk
+yirm
+yirmilik
+yirn
+yirr
+yirth
+yis
+yite
+ym
+yn
+ynambu
+yo
+yobi
+yocco
+yochel
+yock
+yockel
+yodel
+yodeler
+yodelist
+yodh
+yoe
+yoga
+yogasana
+yogh
+yoghurt
+yogi
+yogin
+yogism
+yogist
+yogoite
+yohimbe
+yohimbi
+yohimbine
+yohimbinization
+yohimbinize
+yoi
+yoick
+yoicks
+yojan
+yojana
+Yojuane
+yok
+yoke
+yokeable
+yokeableness
+yokeage
+yokefellow
+yokel
+yokeldom
+yokeless
+yokelish
+yokelism
+yokelry
+yokemate
+yokemating
+yoker
+yokewise
+yokewood
+yoking
+Yokuts
+yoky
+yolden
+Yoldia
+yoldring
+yolk
+yolked
+yolkiness
+yolkless
+yolky
+yom
+yomer
+Yomud
+yon
+yoncopin
+yond
+yonder
+Yonkalla
+yonner
+yonside
+yont
+yook
+yoop
+yor
+yore
+yoretime
+york
+Yorker
+yorker
+Yorkish
+Yorkist
+Yorkshire
+Yorkshireism
+Yorkshireman
+Yoruba
+Yoruban
+yot
+yotacism
+yotacize
+yote
+you
+youd
+youden
+youdendrift
+youdith
+youff
+youl
+young
+youngberry
+younger
+younghearted
+youngish
+younglet
+youngling
+youngly
+youngness
+youngster
+youngun
+younker
+youp
+your
+yourn
+yours
+yoursel
+yourself
+yourselves
+youse
+youth
+youthen
+youthful
+youthfullity
+youthfully
+youthfulness
+youthhead
+youthheid
+youthhood
+youthily
+youthless
+youthlessness
+youthlike
+youthlikeness
+youthsome
+youthtide
+youthwort
+youthy
+youve
+youward
+youwards
+youze
+yoven
+yow
+yowie
+yowl
+yowler
+yowley
+yowlring
+yowt
+yox
+yoy
+yperite
+Yponomeuta
+Yponomeutid
+Yponomeutidae
+ypsiliform
+ypsiloid
+Ypurinan
+Yquem
+yr
+ytterbia
+ytterbic
+ytterbium
+yttria
+yttrialite
+yttric
+yttriferous
+yttrious
+yttrium
+yttrocerite
+yttrocolumbite
+yttrocrasite
+yttrofluorite
+yttrogummite
+yttrotantalite
+Yuan
+yuan
+Yuapin
+yuca
+Yucatec
+Yucatecan
+Yucateco
+Yucca
+yucca
+Yuchi
+yuck
+yuckel
+yucker
+yuckle
+yucky
+Yuechi
+yuft
+Yuga
+yugada
+Yugoslav
+Yugoslavian
+Yugoslavic
+yuh
+Yuit
+Yukaghir
+Yuki
+Yukian
+yukkel
+yulan
+yule
+yuleblock
+yuletide
+Yuma
+Yuman
+yummy
+Yun
+Yunca
+Yuncan
+yungan
+Yunnanese
+Yurak
+Yurok
+yurt
+yurta
+Yurucare
+Yurucarean
+Yurucari
+Yurujure
+Yuruk
+Yuruna
+Yurupary
+yus
+yusdrum
+Yustaga
+yutu
+yuzlik
+yuzluk
+Yvonne
+Z
+z
+za
+Zabaean
+zabaglione
+Zabaism
+Zaberma
+zabeta
+Zabian
+Zabism
+zabra
+zabti
+zabtie
+zac
+zacate
+Zacatec
+Zacateco
+zacaton
+Zach
+Zachariah
+zachun
+zad
+Zadokite
+zadruga
+zaffar
+zaffer
+zafree
+zag
+zagged
+Zaglossus
+zaibatsu
+zain
+Zaitha
+zak
+zakkeu
+Zaklohpakap
+zalambdodont
+Zalambdodonta
+Zalophus
+zaman
+zamang
+zamarra
+zamarro
+Zambal
+Zambezian
+zambo
+zamboorak
+Zamenis
+Zamia
+Zamiaceae
+Zamicrus
+zamindar
+zamindari
+zamorin
+zamouse
+Zan
+Zanclidae
+Zanclodon
+Zanclodontidae
+Zande
+zander
+zandmole
+zanella
+Zaniah
+Zannichellia
+Zannichelliaceae
+Zanonia
+zant
+zante
+Zantedeschia
+zantewood
+Zanthorrhiza
+Zanthoxylaceae
+Zanthoxylum
+zanthoxylum
+Zantiot
+zantiote
+zany
+zanyish
+zanyism
+zanyship
+Zanzalian
+zanze
+Zanzibari
+Zapara
+Zaparan
+Zaparo
+Zaparoan
+zapas
+zapatero
+zaphara
+Zaphetic
+zaphrentid
+Zaphrentidae
+Zaphrentis
+zaphrentoid
+Zapodidae
+Zapodinae
+Zaporogian
+Zaporogue
+zapota
+Zapotec
+Zapotecan
+Zapoteco
+zaptiah
+zaptieh
+Zaptoeca
+zapupe
+Zapus
+zaqqum
+Zaque
+zar
+zarabanda
+Zaramo
+Zarathustrian
+Zarathustrianism
+Zarathustrism
+zaratite
+Zardushti
+zareba
+Zarema
+zarf
+zarnich
+zarp
+zarzuela
+zat
+zati
+zattare
+Zaurak
+Zauschneria
+Zavijava
+zax
+zayat
+zayin
+Zea
+zeal
+Zealander
+zealful
+zealless
+zeallessness
+zealot
+zealotic
+zealotical
+zealotism
+zealotist
+zealotry
+zealous
+zealously
+zealousness
+zealousy
+zealproof
+zebra
+zebraic
+zebralike
+zebrass
+zebrawood
+Zebrina
+zebrine
+zebrinny
+zebroid
+zebrula
+zebrule
+zebu
+zebub
+Zebulunite
+zeburro
+zecchini
+zecchino
+zechin
+Zechstein
+zed
+zedoary
+zee
+zeed
+Zeelander
+Zeguha
+zehner
+Zeidae
+zein
+zeism
+zeist
+Zeke
+zel
+Zelanian
+zelator
+zelatrice
+zelatrix
+Zelkova
+Zeltinger
+zemeism
+zemi
+zemimdari
+zemindar
+zemmi
+zemni
+zemstroist
+zemstvo
+Zen
+Zenaga
+Zenaida
+Zenaidinae
+Zenaidura
+zenana
+Zend
+Zendic
+zendician
+zendik
+zendikite
+Zenelophon
+zenick
+zenith
+zenithal
+zenithward
+zenithwards
+Zenobia
+zenocentric
+zenographic
+zenographical
+zenography
+Zenonian
+Zenonic
+zenu
+Zeoidei
+zeolite
+zeolitic
+zeolitization
+zeolitize
+zeoscope
+Zep
+zepharovichite
+zephyr
+Zephyranthes
+zephyrean
+zephyrless
+zephyrlike
+zephyrous
+zephyrus
+zephyry
+Zeppelin
+zeppelin
+zequin
+zer
+zerda
+Zerma
+zermahbub
+zero
+zeroaxial
+zeroize
+zerumbet
+zest
+zestful
+zestfully
+zestfulness
+zesty
+zeta
+zetacism
+zetetic
+Zeuctocoelomata
+zeuctocoelomatic
+zeuctocoelomic
+Zeuglodon
+zeuglodon
+zeuglodont
+Zeuglodonta
+Zeuglodontia
+Zeuglodontidae
+zeuglodontoid
+zeugma
+zeugmatic
+zeugmatically
+Zeugobranchia
+Zeugobranchiata
+zeunerite
+Zeus
+Zeuxian
+Zeuzera
+zeuzerian
+Zeuzeridae
+Zhmud
+ziamet
+ziara
+ziarat
+zibeline
+zibet
+zibethone
+zibetone
+zibetum
+ziega
+zieger
+zietrisikite
+ziffs
+zig
+ziganka
+ziggurat
+zigzag
+zigzagged
+zigzaggedly
+zigzaggedness
+zigzagger
+zigzaggery
+zigzaggy
+zigzagwise
+zihar
+zikurat
+Zilla
+zillah
+zimarra
+zimb
+zimbabwe
+zimbalon
+zimbaloon
+zimbi
+zimentwater
+zimme
+Zimmerwaldian
+Zimmerwaldist
+zimmi
+zimmis
+zimocca
+zinc
+Zincalo
+zincate
+zincic
+zincide
+zinciferous
+zincification
+zincify
+zincing
+zincite
+zincize
+zincke
+zincky
+zinco
+zincograph
+zincographer
+zincographic
+zincographical
+zincography
+zincotype
+zincous
+zincum
+zincuret
+zinfandel
+zing
+zingaresca
+zingel
+zingerone
+Zingiber
+Zingiberaceae
+zingiberaceous
+zingiberene
+zingiberol
+zingiberone
+zink
+zinkenite
+Zinnia
+zinnwaldite
+zinsang
+zinyamunga
+Zinzar
+Zinziberaceae
+zinziberaceous
+Zion
+Zionism
+Zionist
+Zionistic
+Zionite
+Zionless
+Zionward
+zip
+Zipa
+ziphian
+Ziphiidae
+Ziphiinae
+ziphioid
+Ziphius
+Zipper
+zipper
+zipping
+zippingly
+zippy
+Zips
+zira
+zirai
+Zirak
+Zirbanit
+zircite
+zircofluoride
+zircon
+zirconate
+zirconia
+zirconian
+zirconic
+zirconiferous
+zirconifluoride
+zirconium
+zirconofluoride
+zirconoid
+zirconyl
+Zirian
+Zirianian
+zirkelite
+zither
+zitherist
+Zizania
+Zizia
+Zizyphus
+zizz
+zloty
+Zmudz
+zo
+Zoa
+zoa
+zoacum
+Zoanthacea
+zoanthacean
+Zoantharia
+zoantharian
+zoanthid
+Zoanthidae
+Zoanthidea
+zoanthodeme
+zoanthodemic
+zoanthoid
+zoanthropy
+Zoanthus
+Zoarces
+zoarcidae
+zoaria
+zoarial
+Zoarite
+zoarium
+zobo
+zobtenite
+zocco
+zoccolo
+zodiac
+zodiacal
+zodiophilous
+zoea
+zoeaform
+zoeal
+zoeform
+zoehemera
+zoehemerae
+zoetic
+zoetrope
+zoetropic
+zogan
+zogo
+Zohak
+Zoharist
+Zoharite
+zoiatria
+zoiatrics
+zoic
+zoid
+zoidiophilous
+zoidogamous
+Zoilean
+Zoilism
+Zoilist
+zoisite
+zoisitization
+zoism
+zoist
+zoistic
+zokor
+Zolaesque
+Zolaism
+Zolaist
+Zolaistic
+Zolaize
+zoll
+zolle
+Zollernia
+zollpfund
+zolotink
+zolotnik
+zombi
+zombie
+zombiism
+zomotherapeutic
+zomotherapy
+zonal
+zonality
+zonally
+zonar
+Zonaria
+zonary
+zonate
+zonated
+zonation
+zone
+zoned
+zoneless
+zonelet
+zonelike
+zonesthesia
+Zongora
+zonic
+zoniferous
+zoning
+zonite
+Zonites
+zonitid
+Zonitidae
+Zonitoides
+zonochlorite
+zonociliate
+zonoid
+zonolimnetic
+zonoplacental
+Zonoplacentalia
+zonoskeleton
+Zonotrichia
+Zonta
+Zontian
+zonular
+zonule
+zonulet
+zonure
+zonurid
+Zonuridae
+zonuroid
+Zonurus
+zoo
+zoobenthos
+zooblast
+zoocarp
+zoocecidium
+zoochemical
+zoochemistry
+zoochemy
+Zoochlorella
+zoochore
+zoocoenocyte
+zoocultural
+zooculture
+zoocurrent
+zoocyst
+zoocystic
+zoocytial
+zoocytium
+zoodendria
+zoodendrium
+zoodynamic
+zoodynamics
+zooecia
+zooecial
+zooecium
+zooerastia
+zooerythrin
+zoofulvin
+zoogamete
+zoogamous
+zoogamy
+zoogene
+zoogenesis
+zoogenic
+zoogenous
+zoogeny
+zoogeographer
+zoogeographic
+zoogeographical
+zoogeographically
+zoogeography
+zoogeological
+zoogeologist
+zoogeology
+zoogloea
+zoogloeal
+zoogloeic
+zoogonic
+zoogonidium
+zoogonous
+zoogony
+zoograft
+zoografting
+zoographer
+zoographic
+zoographical
+zoographically
+zoographist
+zoography
+zooid
+zooidal
+zooidiophilous
+zooks
+zoolater
+zoolatria
+zoolatrous
+zoolatry
+zoolite
+zoolith
+zoolithic
+zoolitic
+zoologer
+zoologic
+zoological
+zoologically
+zoologicoarchaeologist
+zoologicobotanical
+zoologist
+zoologize
+zoology
+zoom
+zoomagnetic
+zoomagnetism
+zoomancy
+zoomania
+zoomantic
+zoomantist
+Zoomastigina
+Zoomastigoda
+zoomechanical
+zoomechanics
+zoomelanin
+zoometric
+zoometry
+zoomimetic
+zoomimic
+zoomorph
+zoomorphic
+zoomorphism
+zoomorphize
+zoomorphy
+zoon
+zoonal
+zoonerythrin
+zoonic
+zoonist
+zoonite
+zoonitic
+zoonomia
+zoonomic
+zoonomical
+zoonomist
+zoonomy
+zoonosis
+zoonosologist
+zoonosology
+zoonotic
+zoons
+zoonule
+zoopaleontology
+zoopantheon
+zooparasite
+zooparasitic
+zoopathological
+zoopathologist
+zoopathology
+zoopathy
+zooperal
+zooperist
+zoopery
+Zoophaga
+zoophagan
+Zoophagineae
+zoophagous
+zoopharmacological
+zoopharmacy
+zoophile
+zoophilia
+zoophilic
+zoophilism
+zoophilist
+zoophilite
+zoophilitic
+zoophilous
+zoophily
+zoophobia
+zoophobous
+zoophoric
+zoophorus
+zoophysical
+zoophysics
+zoophysiology
+Zoophyta
+zoophytal
+zoophyte
+zoophytic
+zoophytical
+zoophytish
+zoophytography
+zoophytoid
+zoophytological
+zoophytologist
+zoophytology
+zooplankton
+zooplanktonic
+zooplastic
+zooplasty
+zoopraxiscope
+zoopsia
+zoopsychological
+zoopsychologist
+zoopsychology
+zooscopic
+zooscopy
+zoosis
+zoosmosis
+zoosperm
+zoospermatic
+zoospermia
+zoospermium
+zoosphere
+zoosporange
+zoosporangia
+zoosporangial
+zoosporangiophore
+zoosporangium
+zoospore
+zoosporic
+zoosporiferous
+zoosporocyst
+zoosporous
+zootaxy
+zootechnic
+zootechnics
+zootechny
+zooter
+zoothecia
+zoothecial
+zoothecium
+zootheism
+zootheist
+zootheistic
+zootherapy
+zoothome
+zootic
+Zootoca
+zootomic
+zootomical
+zootomically
+zootomist
+zootomy
+zoototemism
+zootoxin
+zootrophic
+zootrophy
+zootype
+zootypic
+zooxanthella
+zooxanthellae
+zooxanthin
+zoozoo
+zopilote
+Zoque
+Zoquean
+Zoraptera
+zorgite
+zoril
+zorilla
+Zorillinae
+zorillo
+Zoroastrian
+Zoroastrianism
+Zoroastrism
+Zorotypus
+zorrillo
+zorro
+Zosma
+zoster
+Zostera
+Zosteraceae
+zosteriform
+Zosteropinae
+Zosterops
+Zouave
+zounds
+zowie
+Zoysia
+Zubeneschamali
+zuccarino
+zucchetto
+zucchini
+zudda
+zugtierlast
+zugtierlaster
+zuisin
+Zuleika
+Zulhijjah
+Zulinde
+Zulkadah
+Zulu
+Zuludom
+Zuluize
+zumatic
+zumbooruk
+Zuni
+Zunian
+zunyite
+zupanate
+Zutugil
+zuurveldt
+zuza
+zwanziger
+Zwieback
+zwieback
+Zwinglian
+Zwinglianism
+Zwinglianist
+zwitter
+zwitterion
+zwitterionic
+zyga
+zygadenine
+Zygadenus
+Zygaena
+zygaenid
+Zygaenidae
+zygal
+zygantra
+zygantrum
+zygapophyseal
+zygapophysis
+zygion
+zygite
+Zygnema
+Zygnemaceae
+Zygnemales
+Zygnemataceae
+zygnemataceous
+Zygnematales
+zygobranch
+Zygobranchia
+Zygobranchiata
+zygobranchiate
+Zygocactus
+zygodactyl
+Zygodactylae
+Zygodactyli
+zygodactylic
+zygodactylism
+zygodactylous
+zygodont
+zygolabialis
+zygoma
+zygomata
+zygomatic
+zygomaticoauricular
+zygomaticoauricularis
+zygomaticofacial
+zygomaticofrontal
+zygomaticomaxillary
+zygomaticoorbital
+zygomaticosphenoid
+zygomaticotemporal
+zygomaticum
+zygomaticus
+zygomaxillare
+zygomaxillary
+zygomorphic
+zygomorphism
+zygomorphous
+zygomycete
+Zygomycetes
+zygomycetous
+zygon
+zygoneure
+zygophore
+zygophoric
+Zygophyceae
+zygophyceous
+Zygophyllaceae
+zygophyllaceous
+Zygophyllum
+zygophyte
+zygopleural
+Zygoptera
+Zygopteraceae
+zygopteran
+zygopterid
+Zygopterides
+Zygopteris
+zygopteron
+zygopterous
+Zygosaccharomyces
+zygose
+zygosis
+zygosperm
+zygosphenal
+zygosphene
+zygosphere
+zygosporange
+zygosporangium
+zygospore
+zygosporic
+zygosporophore
+zygostyle
+zygotactic
+zygotaxis
+zygote
+zygotene
+zygotic
+zygotoblast
+zygotoid
+zygotomere
+zygous
+zygozoospore
+zymase
+zyme
+zymic
+zymin
+zymite
+zymogen
+zymogene
+zymogenesis
+zymogenic
+zymogenous
+zymoid
+zymologic
+zymological
+zymologist
+zymology
+zymolyis
+zymolysis
+zymolytic
+zymome
+zymometer
+zymomin
+zymophore
+zymophoric
+zymophosphate
+zymophyte
+zymoplastic
+zymoscope
+zymosimeter
+zymosis
+zymosterol
+zymosthenic
+zymotechnic
+zymotechnical
+zymotechnics
+zymotechny
+zymotic
+zymotically
+zymotize
+zymotoxic
+zymurgy
+Zyrenian
+Zyrian
+Zyryan
+zythem
+Zythia
+zythum
+Zyzomys
+Zyzzogeton
diff --git a/share/dict/web2a b/share/dict/web2a
new file mode 100644
index 0000000..902848c
--- /dev/null
+++ b/share/dict/web2a
@@ -0,0 +1,76205 @@
+A acid
+abacus major
+abacus pythagoricus
+A battery
+abbey counter
+abbey laird
+abbey lands
+abbey lubber
+abbot cloth
+Abbott papyrus
+abb wool
+A-b-c book
+A-b-c method
+abdomino-uterotomy
+Abdul-baha
+a-be
+aberrant duct
+aberration constant
+abiding place
+able-bodied
+able-bodiedness
+able-minded
+able-mindedness
+able seaman
+aboli fruit
+A bond
+Abor-miri
+a-borning
+about-face
+about ship
+about-sledge
+above-cited
+above-found
+above-given
+above-mentioned
+above-named
+above-quoted
+above-reported
+above-said
+above-water
+above-written
+Abraham-man
+abraum salts
+abraxas stone
+Abri audit culture
+abruptly acuminate
+abruptly pinnate
+absciss layer
+absence state
+absentee voting
+absent-minded
+absent-mindedly
+absent-mindedness
+absent treatment
+absent voter
+Absent voting
+absinthe green
+absinthe oil
+absorption bands
+absorption circuit
+absorption coefficient
+absorption current
+absorption dynamometer
+absorption factor
+absorption lines
+absorption pipette
+absorption screen
+absorption spectrum
+absorption system
+A b station
+abstinence theory
+abstract group
+Abt system
+abundance declaree
+aburachan seed
+abutment arch
+abutment pier
+abutting joint
+acacia veld
+academy blue
+academy board
+academy figure
+acajou balsam
+acanthosis nigricans
+acanthus family
+acanthus leaf
+acaroid resin
+Acca larentia
+acceleration note
+accelerator nerve
+accent mark
+acceptance bill
+acceptance house
+acceptance supra protest
+acceptor supra protest
+accession book
+accession number
+accession service
+access road
+accident insurance
+acclamation medal
+acclimation fever
+accommodate distribution
+accommodation acceptance
+accommodation bill
+accommodation draft
+accommodation group
+accommodation ladder
+accommodation train
+accommodation works
+accompaniment figure
+accompanying fire
+accountant general
+account book
+account current
+account days
+account duty
+account render
+account rendered
+account sales
+accounts payable
+accounts payable ledger
+accounts receivable
+account stated
+accretion borer
+accretion cutting
+accrual basis
+accrued interest
+accrued liability
+accumulation factor
+accusative-dative
+ace-high
+ace point
+acetate green
+acetone alcohol
+acetone body
+acetone chloroform
+acetone oil
+acetous fermentation
+acetyl benzoyl peroxide
+acetyl bromide
+acetyl carbinol
+acetyl chloride
+acetylene acid
+acetylene alcohol
+acetylene black
+acetylene burner
+acetylene dichloride
+acetylene dinitrile
+acetylene gas
+acetylene generator
+acetylene linkage
+acetylene series
+acetylene tetrabromide
+acetylene tetrachloride
+acetylene torch
+acetylene urea
+acetylene welder
+acetylene welding
+acetyl index
+acetyl number
+acetyl oxide
+acetyl value
+acey-deucy
+Achaean league
+achemon sphinx
+achievement age
+achievement quotient
+achievement test
+achylia gastrica
+acid albumin
+acid albuminate
+acid alizarin black
+acid alizarin red
+acid amide
+acid anhydride
+acid anthracene brown
+acid azide
+acid bath
+acid bessemer process
+acid-binding
+acid black
+acid blast
+acid blower
+acid boiler
+acid bronze
+acid brown
+acid burner
+acid casein
+acid cell
+acid color
+acid concentrator
+acid dipper
+acid dye
+acid dyspepsia
+acid egg
+acid ester
+acid-fast
+acid-fastness
+acid-forming
+acid fuchsine
+acid gloss
+acid green
+acid halide
+acid honey
+acid hydrolysis
+acidity coefficient
+acid kiln
+acid metaprotein
+acid-mordant dye
+acid nitrile
+acid number
+acid oil
+acidophilus milk
+acid phosphate
+acid ponceau
+acid process
+acid purifier
+acid radical
+acid reaction
+acid reserve
+acid resist
+acid salt
+acid sludge
+acid sodium carbonate
+acid steel
+acid test
+acid tide
+acid-treat
+acid value
+acid violet
+acid wood
+acid worker
+acid works
+acid yellow
+ack-ack
+ack emma
+ack-pirate
+aclinic line
+acme harrow
+acme screw thread
+acme thread
+aconite violet
+acorn barnacle
+acorn chair
+acorn cup
+acorn duck
+acorn moth
+acorn shell
+acorn squash
+acorn tube
+acorn weevil
+acorn worm
+acouchi resin
+acquittance roll
+acre-dale
+acre-foot
+acre-inch
+acridine dyes
+acridine yellow
+across-the-board
+acrylic acid series
+act drop
+actinium emanation
+action busher
+action consciousness
+action current
+action extension
+action filer
+action finisher
+action forger
+action freer
+action jointer
+action machiner
+action noun
+action rail
+action regulator
+action sermon
+action-taking
+action theory
+action time
+action viewer
+activated sludge
+activated-sludge process
+active-bodied
+active-limbed
+active list
+active-minded
+activity coefficient
+activity stream
+activity theory
+actor-manager
+actor-proof
+act psychology
+Act term
+actuality theory
+acute angle
+acute-angled
+acuyari palm
+acuyari wood
+acyclic co-ordinates
+Adam-and-eve
+Adamkiewicz reaction
+Adamson act
+Adamson flue
+Adamson ring
+Adam tiler
+add-add
+addendum circle
+adder bead
+adder fly
+adder gem
+adder pike
+adder stone
+adding machine
+addition algebra
+addition axiom
+addition compound
+addition logarithm
+addition product
+addition table
+addition theorem
+addle egg
+addressing machine
+adductor canal
+adductor impressions
+Adelie penguin
+adenosine triphosphate
+A derrick
+ader wax
+Adi-buddha
+ad infinitum
+ad interim
+adjective equivalent
+adjective pronoun
+adjoint curve
+adjustment bond
+adjustment mortgage
+adjutant bird
+adjutant crane
+adjutant general
+ad lib
+ad libitum
+ad limina
+administrative engineer
+administrator ad litem
+admiral shell
+Admiral togo
+admiralty alloy
+admiralty bond
+admiralty brass
+Admiralty constants
+Admiralty flag
+admiralty law
+admiralty mile
+admiration mark
+Admission day
+adobe bug
+adobe lily
+adobe tick
+adolescent stream
+Adrianople red
+adsorption compound
+adsorption isotherm
+adult education
+ad valorem
+advance note
+advance party
+advance sheets
+advance signal
+advance tracks
+advancing color
+advantage ground
+Advent sunday
+adverb equivalent
+advertisement canvasser
+advertisement contractor
+advice boat
+advocatus ecclesiae
+adz block
+adz eye
+adzuki bean
+Aeginetan marbles
+aerating root
+aero arrow
+aero-otitis
+aero-otitis media
+aerosol bomb
+Aesop prawn
+affine connection
+affine geometry
+affine transformation
+affinity constant
+aff loof
+afghani rupee
+afghan stitch
+A-flat
+A-flat major
+afore-acted
+afore-cited
+afore-coming
+afore-decried
+afore-given
+afore-going
+afore-granted
+afore-heard
+afore-known
+afore-mentioned
+afore-planned
+afore-quoted
+afore-running
+afore-seeing
+afore-seen
+afore-spoken
+afore-stated
+afore-told
+Afrikander bond
+Afro-american
+Afro-asiatic
+Afro-european
+Afro-semitic
+after-acquired
+afterbirth weed
+after-born
+after bridge
+after-described
+after-designed
+after-dinner
+after-mentioned
+after-named
+afternoon lady
+after-specified
+after-stampable
+after-theater
+after-theatre
+after-written
+Agadir incident
+agal-agal
+agar-agar
+agate glass
+agate gray
+agate jasper
+agate opal
+agate shell
+agate snail
+agave cactus
+age-adorning
+age-bent
+age class
+age coating
+age-coeval
+age-cracked
+age-despoiled
+age-dispelling
+age distribution
+age-enfeebled
+age grade
+age-harden
+age-honored
+age-lasting
+age limit
+age norm
+agent-general
+agent intellect
+agent noun
+age-old
+age-peeled
+ageratum blue
+age score
+age society
+age-struck
+age-weary
+age-weathered
+age-worn
+agger nasi
+aggregate fruit
+aggregate polarization
+aggressor nation
+Agin court
+agitator feed
+agnus castus
+Agnus scythicus
+agony column
+agreed case
+agrimony bark
+agrimony water hemp
+Agudath yisrael
+ague bark
+ague cake
+ague drop
+ague-faced
+ague grass
+ague-plagued
+ague-rid
+ague-sore
+ague-struck
+ague tree
+aguja volador
+Ahura-mazda
+Aich metal
+Aida canvas
+aide-de-camp
+aide-de-campship
+aid grant
+aid prayer
+aid station
+ailanthus family
+ailanthus moth
+ailanthus silkworm
+aiming point
+air age
+air arm
+air base
+air bath
+air bed
+air bell
+air belt
+air bends
+air billow
+air-bind
+air bladder
+air blast
+air-blasted
+air blow
+air-blown
+air blue
+air-born
+air-borne
+air box
+air brake
+air-braked
+air-braving
+air-break switch
+air-breathing
+air-bred
+air brick
+air bridge
+air bubble
+air-built
+air bump
+air casing
+air castle
+air cataract
+air cell
+air chamber
+air-chambered
+air-cheeked
+air chest
+air chuck
+air circuit breaker
+air cleaner
+air-clear
+air-clutch reverse
+air cock
+air compressor
+air condenser
+air-condition
+air-conditioned
+air conditioner
+air conditioning
+air control
+air-conveying
+air-cool
+air-cooled
+air cooling
+Air corps
+air corridor
+Air council
+aircraft carrier
+aircraft division
+aircraft section
+aircraft station
+air crossing
+air-cure
+air cushion
+air cylinder
+air-defiling
+air drain
+air drainage
+air-drawn
+air drill
+air-driven
+air-dry
+air duct
+Airedale terrier
+air ejector
+air embolism
+air-embraced
+air engine
+air express
+air-faring
+air-filled
+air filter
+air fleet
+air float
+air-floated
+air force
+air-formed
+air furnace
+air gap
+air gas
+air gauge
+air gun
+air hammer
+air harbor
+air-hardening
+air-hardening steel
+air-heating
+air hoist
+air hole
+air horn
+air hunger
+air injection
+air injector
+air-insulated
+air jack
+air jacket
+air lance
+air lane
+air law
+air layering
+air leak
+airle-penny
+air letter
+air level
+air lift
+air line
+air lock
+air log
+air machine
+air map
+air mass
+air mattress
+Air medal
+air meter
+air-minded
+air-mindedness
+Air minister
+Air ministry
+air motor
+air oven
+air passage
+air-pervious
+air philately
+air photography
+air pillow
+airplane carrier
+airplane cloth
+airplane flare
+air plant
+air plug
+air pocket
+air pore
+air post
+air potato
+air propeller
+air pump
+air raid
+air raider
+air remover
+air rifle
+air sac
+air scoop
+air scout
+air scuttle
+air-season
+air-seasoned
+air separation
+air service
+air shaft
+air shovel
+air-shy
+air-slake
+air sleeve
+air sock
+air space
+air spade
+air speed
+air-speed indicator
+air-spray
+air sprayer
+air spring
+air-spun
+air station
+air-stirring
+air stone
+air stove
+air strainer
+air stream
+air strike
+air survey
+air-swallowing
+air system
+air thermometer
+air thread
+air-threatening
+air train
+air-trampling
+air trap
+air trumpet
+air trunk
+air twist
+air-twisted
+air valve
+air vent
+air vesicle
+air volcano
+air washer
+air well
+air-wise
+air-wiseness
+air wood
+airy sign
+air zone
+aisle seat
+Aix-la-chapelle
+Ajanen fir
+ajowan oil
+akamushi mite
+Akas-mukhi
+Akeley camera
+a la
+a la king
+A la marengo
+A la maryland
+a la mire
+alamo vine
+alang-alang
+alang grass
+alant camphor
+Al araf
+alar cartilages
+alar ligaments
+alarm bell
+alarm bird
+alarm clock
+alarm gauge
+alarm post
+alarm valve
+alar septum
+alar thoracic artery
+Al bali
+Alban saint
+albatross cloth
+albedo unguis
+Albee operation
+Alberti bass
+Albion ware
+albite law
+Alb sunday
+album board
+Album elegans
+Album graecum
+Album grandiflorum
+albuminoid ammonia
+albumin tannate
+album paper
+Al chiba
+alcohol acid
+alcohol engine
+alco-ometer
+alco-ometric
+alco-ometrical
+alco-ometry
+Alcora porcelain
+alcresta ipecac
+aldehyde ammonia
+aldehyde collidine
+aldehyde group
+aldehyde resin
+alder blight
+alder buckthorn
+alder dogwood
+alder fly
+alder flycatcher
+alder-leaved
+alderman lizard
+aldol condensation
+ale-blown
+ale-born
+ale brewer
+ale brewing
+ale drinker
+ale drinking
+ale feast
+ale-fed
+ale gallon
+ale garland
+ale glass
+alekey trout
+Alencon diamond
+Alencon lace
+ale pitcher
+ale seller
+ale selling
+ale stain
+ale-swilling
+ale tun
+aleurone grains
+aleurone layer
+A level
+ale vinegar
+ale-washed
+Alexandrine liturgies
+Alexandrine rat
+alfalfa butterfly
+alfalfa caterpillar
+alfalfa hopper
+alfalfa looper
+alfalfa meal
+alfalfa weevil
+algae layer
+algae zone
+algal-algal
+algal disease
+algal fungus
+algarroba bean
+algid cholera
+algid fever
+Algol variable
+alias dictus
+alias writ
+Alice blue
+alienable right
+alienation office
+alien corporation
+alien enemy
+alien priory
+alien property custodian
+alien water
+alignment chart
+aliquot tone
+alizarin black s
+alizarin blue black s
+alizarin blue s
+alizarin brown
+alizarin cyanine
+alizarin cyanine green
+alizarin dye
+alizarin red
+alizarin saphirol
+alizarin yellow
+alkali albumin
+alkali blue
+alkali cellulose
+alkali chlorosis
+alkali disease
+alkali grass
+alkali heath
+alkali metal
+alkali mustard
+alkaline cell
+alkaline-earth metals
+alkaline earths
+alkaline metal
+alkaline reaction
+alkaline tide
+alkaline water
+alkali reserve
+alkali waste
+alkali weed
+alkali yellow r
+alk gum
+alk gum tree
+alkyl cyanide
+alkyl halide
+alkyl hydrosulphide
+all-abhorred
+all-able
+all abroad
+all-absorbing
+all-accomplished
+all-acting
+all-admired
+all-admiring
+all-advised
+all-affecting
+all-afflicting
+all-aged
+all-air
+all along
+all-amazed
+All-american
+all-a-mort
+allan hawk
+all-appaled
+all-appointing
+all-approved
+all-approving
+all-armed
+all-around
+all-arraigning
+all-arranging
+all-assistless
+all-atoning
+all-attempting
+all-availing
+all-bearing
+all-beauteous
+all-beautiful
+all-beholding
+all-bestowing
+all-binding
+all-bitter
+all-black
+all-blasting
+all-blessing
+all-bounteous
+all-bountiful
+all-bright
+all-brilliant
+All-british
+all but
+All-caucasian
+all-changing
+all-cheering
+all clear
+all-collected
+all-colored
+all comers
+all-comfortless
+all-commander
+all-commanding
+all-compelling
+all-complying
+all-composing
+all-comprehending
+all-comprehensive
+all-concealing
+all-conceiving
+all-concerning
+all-confounding
+all-conquering
+all-conscious
+all-considering
+all-constant
+all-constraining
+all-consuming
+all-content
+all-controlling
+all-convincing
+all-convincingly
+all-covering
+all-creating
+all-creator
+all-curing
+all-daring
+all-day
+all-dazzling
+all-deciding
+all-defiance
+all-defying
+all-depending
+all-designing
+all-desired
+all-despising
+all-destroyer
+all-destroying
+all-devastating
+all-devouring
+all-dimming
+all-directing
+all-discerning
+all-discovering
+all-disgraced
+all-dispensing
+all-disposer
+all-disposing
+all-divine
+all-divining
+all-dreaded
+all-dreadful
+all-drowsy
+all-earnest
+all-eating
+allee couverte
+all-efficacious
+all-efficient
+Allegro l
+all-eloquent
+allemande sauce
+all-embracing
+all-embracingness
+all-encompasser
+all-ending
+all-enduring
+all-engrossing
+all-enlightened
+all-enlightening
+all-enraged
+all-envied
+all-essential
+all-evil
+all-excellent
+all-eyed
+all-fair
+All-father
+All-fatherhood
+All-fatherly
+all-filling
+all-fired
+all-firedly
+all fives
+all-flaming
+all-flotation
+all-foreseeing
+all-forgetful
+all-forgetting
+all-forgiving
+all-forgotten
+all fours
+all-fullness
+all-gas
+all-giver
+all-glorious
+all-golden
+all-governing
+all-gracious
+all-grasping
+all-great
+all-guiding
+all-hallowed
+all hands
+all-happy
+all-healing
+all-hearing
+all-heeding
+all-helping
+all-hiding
+all-holy
+all-honored
+all-hoping
+all-hurting
+allice shad
+all-idolizing
+alligation alternate
+alligation medial
+alligator apple
+alligator bonnets
+alligator buttons
+alligator cacao
+alligator fish
+alligator forceps
+alligator gar
+alligator head
+alligator jaw
+alligator juniper
+alligator lizard
+alligator pear
+alligator shears
+alligator snapper
+alligator tree
+alligator wampee
+alligator weed
+alligator wrench
+all-illuminating
+all-imitating
+all-important
+all-impressive
+all-in
+all-including
+all-inclusive
+all-inclusiveness
+All-india
+all-infolding
+all-informing
+all-in-one
+all-interesting
+all-interpreting
+all-invading
+all-involving
+all-jarred
+all-judging
+all-just
+all-justifying
+all-kind
+all-knavish
+all-knowing
+all-knowingness
+all-land
+all-lavish
+all-licensed
+all-lovely
+all-loving
+all-maintaining
+all-maker
+all-making
+all-maturing
+all-meaningness
+all-merciful
+all-metal
+all-might
+all-miscreative
+all-murdering
+all-noble
+all-nourishing
+all-obedient
+all-obeying
+all-oblivious
+all-obscuring
+all-oil
+all one
+allo-octaploid
+all-ordering
+all-out
+all-overish
+all-overishness
+all-overpowering
+all-overs
+all-overtopping
+allowance account
+alloy balance
+alloy charge
+alloy steel
+all-panting
+all-parent
+all-patient
+all-peaceful
+all-penetrating
+all-peopled
+all-perceptive
+all-perfect
+all-perfection
+all-perfectness
+all-perficient
+all-persuasive
+all-pervading
+all-pervadingness
+all-pervasive
+all-pervasiveness
+all-piercing
+all-pitiless
+all-pitying
+all-pondering
+all-possessed
+all-potency
+all-potent
+all-potential
+all-power
+all-powerful
+all-powerfully
+all-powerfulness
+all-praised
+all-praiseworthy
+all-present
+all-prevailing
+all-prevailingness
+all-prevalency
+all-prevalent
+all-preventing
+all-prolific
+all-protecting
+all-provident
+all-providing
+all-puissant
+all-pure
+all-quickening
+all-rail
+all-rapacious
+all-reaching
+All red
+all-redeeming
+all-relieving
+all-rending
+all right
+all-righteous
+all round
+all-roundedness
+all-rounder
+all-round price
+all-rubber
+all-ruling
+All-russia
+All-russian
+all-sacred
+all-sanctifying
+all-satiating
+all-satisfying
+all-saving
+all-sayer
+all-sea
+all-searching
+all-seeing
+all-seeingly
+all-seeingness
+all-seer
+all set
+all-shaking
+all-shamed
+all-shaped
+all-shrouding
+all-shunned
+all-sided
+all-silent
+all-sized
+all-sliming
+all-soothing
+all-soul
+All-southern
+allspice oil
+allspice tree
+all-spreading
+all square
+all squares
+all standing
+all-star
+all-stars
+all-steel
+all-strangling
+all-subduing
+all-submissive
+all-substantial
+all-sufficiency
+all-sufficient
+all-sufficiently
+all-sufficing
+all-surpassing
+all-surrounding
+all-surveying
+all-sustainer
+all-sustaining
+all-swallowing
+all-swaying
+all-telling
+all-terrible
+all that
+all the
+all there
+all-thorny
+all threes
+all-time
+all to
+all told
+all-tolerating
+all-transcending
+all-triumphing
+all-truth
+all-turned
+all-turning
+all two
+all-understanding
+all-unwilling
+all up
+all-upholder
+all-upholding
+alluring gland
+all-various
+all-vast
+all-watched
+all-water
+all-weak
+all-weather
+all-weight
+all-wisdom
+all-wise
+all-wisely
+all-wiseness
+all-wondrous
+all-wood
+all-wool
+all-working
+all-worshiped
+all-worthy
+all-wrongness
+allyl alcohol
+allyl aldehyde
+allyl isothiocyanate
+allyl mustard oil
+allyl thiocarbamide
+Alma mater
+alma-materism
+almenn turma
+almond black
+almond brown
+almond cake
+almond extract
+almond-eyed
+almond family
+almond green
+almond kernel
+almond-leaved
+almond-leaved willow
+almond meal
+almond milk
+almond oil
+almond paste
+almond peach
+almond-shaped
+almond tumbler
+almond willow
+alms bag
+alms basin
+alms basket
+alms box
+alms bread
+alms chest
+alms-dealing
+alms dish
+alms-fed
+alms fee
+alms gate
+alms land
+alms penny
+alms priest
+alms purse
+almucantar staff
+Al nasi
+Al niyat
+aloe creole
+aloe-emodin
+aloe hemp
+aloe lace
+aloe malgache
+aloes green
+Alost lace
+alouchi resin
+alphabet book
+alphabet method
+alphabet plant
+alphabet soup
+alpha brass
+alpha-cellulose
+alpha-eucaine
+alpha iron
+alpha-naphthol
+alpha-naphthylamine
+alpha particle
+alpha privative
+alpha radiator
+alpha ray
+alpha score
+alpha test
+alpha-truxilline
+alpine anemone
+alpine aster
+alpine azalea
+alpine bartsia
+alpine beardtongue
+alpine bent grass
+alpine birch
+alpine bistort
+alpine brook saxifrage
+alpine campion
+alpine catchfly
+alpine chough
+alpine clover
+alpine cress
+Alpine dock
+alpine eyebright
+alpine fir
+alpine fireweed
+alpine forget-me-not
+alpine garden
+alpine geranium
+alpine glacier
+alpine goldenrod
+alpine hemlock
+alpine holy grass
+alpine lady fern
+alpine larch
+alpine lousewort
+alpine molewort
+alpine oat grass
+Alpine parnassia
+alpine poppy
+Alpine race
+alpine rice grass
+alpine rock cress
+alpine rose
+alpine sedge
+alpine spring beauty
+alpine spruce
+alpine strawberry
+alpine umbrella plant
+alpine whitebark pine
+alpine whorl grass
+alpine woodsia
+Al rischa
+Alsace gum
+Alsace-lorrainer
+alsike clover
+also-ran
+Al tais
+altar boy
+altar bread
+altar carpet
+altar chime
+altar desk
+altar dues
+Al tarf
+altar facing
+altar hearse
+altar mound
+altar plate
+altar rail
+altar side
+altar slab
+altar stair
+altar stead
+altar stole
+altar stone
+altar tomb
+altar wine
+alta vox
+alter ego
+alternate-leaved
+alti-rilievi
+alto clarinet
+alto clef
+alto-cumulus
+alto-cumulus-castellatus
+alto flute
+alto horn
+alto-relievo
+alto saxhorn
+alto-stratus
+aluchi resin
+aludel furnace
+Alula australis
+Alula borealis
+alum cake
+alum carmine
+alum cochineal
+alum flower
+alum glass
+alum haematoxylin
+alum-hypo toning process
+alumina cement
+alumina cream
+aluminous cake
+aluminum bronze
+aluminum chloride
+aluminum family
+aluminum gold
+aluminum hydroxide
+aluminum oxide
+aluminum sulphate
+alum meal
+alum rock
+alum schist
+alum shale
+alum stone
+alun-alun
+alva marina
+alveololabial sulci
+alveololingual sulci
+A major
+amalgam arc
+amalgamation process
+Amana society
+amanita hemolysin
+amanita toxin
+Amara-kosha
+amarant family
+amaranth family
+amaranth pink
+amaranth-purple
+Amarna letters
+amaryllis family
+amateur band
+Amazon ant
+Amazon lily
+Amazon water lily
+ambary hemp
+amber brown
+amber-clear
+amber-colored
+amber-dropping
+amber forest
+amber-headed
+amber-hued
+amber jack
+amber-locked
+amber malt
+amber mica
+amber miner
+amber oil
+amber opal
+amber pear
+amber seed
+amber snail
+amber-tinted
+amber-tipped
+amber tree
+amber-weeping
+amber-white
+amber yellow
+amber-yielding
+ambient temperature
+ambil-anak
+ambretta seed
+ambrosia beetle
+ambulance chaser
+ambuling communion
+ambush bug
+amen corner
+amende honorable
+amende profitable
+Amen-ra
+Americano-european
+Americas cup
+amethyst cutter
+amethyst violet
+Amherst papyrus
+Amici prism
+amide powder
+amidonaphthol red
+amido-urea
+amino acid
+amino nitrogen
+amino-oxypurin
+A minor
+ammonia alum
+ammonia condenser
+ammoniac plant
+ammonia gelatin
+ammonia liquor
+ammonia meter
+ammonia nitrogen
+ammonia process
+ammonia soda
+ammonia soda ash
+ammonia soda process
+ammonia turpeth
+ammonia valve
+ammonia water
+ammonium alum
+ammonium amalgam
+ammonium base
+ammonium bromide
+ammonium carbonate
+ammonium chloride
+ammonium cyanate
+ammonium hydrosulphide
+ammonium hydroxide
+ammonium molybdate
+ammonium nitrate
+ammonium oxalate
+ammonium persulphate
+ammonium phosphate
+ammonium sulphate
+ammonium sulphide
+ammono base
+ammono salt
+ammunition bread
+ammunition chest
+ammunition hoist
+ammunition legs
+ammunition scuttle
+ammunition shoes
+amoeba disease
+amorphous ergotinine
+amorphous phosphorus
+amount limit
+amparo blue
+amparo purple
+ampere arc
+ampere balance
+ampere-foot
+ampere-hour
+ampere-minute
+ampere-second
+ampere turn
+amphibole group
+amplification factor
+amplitude compass
+amplitude factor
+ampullar sense
+amrad gum
+Amsha-spand
+Amsha-spend
+Amur cork
+Amur maple
+amygdaloid nucleus
+amygdalo-uvular
+amygdonitrile glucoside
+amyl acetate
+amyl-acetate lamp
+amyl alcohol
+amylene hydrate
+amyl ether
+amyl isovalerate
+amyl nitrite
+amyloid degeneration
+amyl oxide
+amyl salicylate
+amylum body
+amylum center
+amylum grain
+amylum star
+amyris oil
+anacardium nut
+anaconda gourd
+Anaheim disease
+analcite basalt
+analogy test
+analysis situs
+analytico-architectural
+anamite yeast
+ananas oil
+Anastasi papyri
+anathema maranatha
+A natural
+ance errand
+ancestor worship
+anchieta bark
+anchor ball
+anchor bar
+anchor bed
+anchor bolt
+anchor box
+anchor buoy
+anchor chock
+anchor dart
+anchor drag
+anchor escapement
+anchor hold
+anchor hoy
+anchor ice
+anchor knot
+anchor lift
+anchor light
+anchor lining
+anchor link
+anchor log
+anchor money
+anchor nurse
+anchor plant
+anchor plate
+anchor ring
+anchor rocket
+anchor rod
+anchor shackle
+anchor-shaped
+anchor shot
+anchor space
+anchor tee
+anchor watch
+anchor watchman
+anchor well
+anchovy pear
+Ancon sheep
+anda-assu
+anda-assu oil
+anda oil
+Andes berry
+Andover green
+Andra kammaren
+Andy-over
+anemone camphor
+anemone-flowered dahlia
+anesthetic ether
+Angami-naga
+angel bed
+angel-borne
+angel-bright
+angel-builded
+angel cake
+angel-eyed
+angel-faced
+angel food
+angel gold
+angel-guarded
+angel-heralded
+angelica-root
+angelin seeds
+angel light
+angel red
+angel-seeming
+angel shark
+angel shot
+angel sleeve
+angel tree
+Angelus bell
+angel-warned
+angel water
+angico gum
+angina pectoris
+angioneurotic edema
+ang-khak
+angle bar
+angle bead
+angle beam
+angle brace
+angle bracket
+angle brick
+angle bulb
+angle capital
+angle chair
+angle clip
+angled draft
+angled-toothed
+angle gear
+angle iron
+angle meter
+angle plate
+angle-rack tool
+angle rafter
+angle reflector
+angle rib
+angle set
+angle shaft
+angle shear
+angle staff
+angle steel
+Angleterre edge
+Angleterre lace
+angle tie
+Anglo-abyssinian
+Anglo-afghan
+Anglo-african
+Anglo-america
+Anglo-american
+Anglo-americanism
+Anglo-asian
+Anglo-asiatic
+Anglo-australian
+Anglo-austrian
+Anglo-belgian
+Anglo-boer
+Anglo-brazilian
+Anglo-canadian
+Anglo-catholic
+Anglo-catholicism
+Anglo-chinese
+Anglo-danish
+Anglo-dutch
+Anglo-dutchman
+Anglo-ecclesiastical
+Anglo-ecuadorian
+Anglo-egyptian
+Anglo-french
+Anglo-gallic
+Anglo-german
+Anglo-greek
+Anglo-hibernian
+Anglo-indian
+Anglo-irish
+Anglo-irishism
+Anglo-israel
+Anglo-israelism
+Anglo-israelite
+Anglo-italian
+Anglo-japanese
+Anglo-jewish
+Anglo-judaic
+Anglo-latin
+Anglo-maltese
+Anglo-manx
+Anglo-mexican
+Anglo-mohammedan
+Anglo-norman
+Anglo-norwegian
+Anglo-nubian
+Anglo-persian
+Anglo-portuguese
+Anglo-russian
+Anglo-saxon
+Anglo-saxondom
+Anglo-saxonic
+Anglo-saxonism
+Anglo-scottish
+Anglo-serbian
+Anglo-soviet
+Anglo-spanish
+Anglo-swedish
+Anglo-swiss
+Anglo-teutonic
+Anglo-turkish
+Anglo-venetian
+angostura bark
+Angoumois grain moth
+Angoumois moth
+angry-eyed
+angry-looking
+angstrom unit
+angular-toothed
+angular-winged katydid
+anhalonium alkaloid
+anhydro base
+anidian monster
+aniline black
+aniline blue
+aniline dye
+aniline hydrochloride
+aniline purple
+aniline salt
+aniline yellow
+anima aloes
+anima bruta
+anima humana
+animal black
+animal carver
+animal cellulose
+animal charcoal
+animal color
+animal cracker
+animal dyestuff
+animal electricity
+animal faith
+animal flower
+animal force
+animal heat
+animal husbandman
+animal husbandry
+animal hypnosis
+animal kingdom
+animal magnetism
+animal mechanics
+animal mound
+animal oat
+animal oil
+animal pole
+animal psychology
+animal rouge
+animal size
+animal-sized
+animal soul
+animal spirit
+animal starch
+animal unit
+animal worship
+anima mundi
+animated oat
+animation photography
+animus cancellandi
+animus capiendi
+animus derelinquendi
+animus furandi
+animus injuriandi
+animus lucrandi
+animus manendi
+animus possidendi
+animus recipiendi
+animus remanendi
+animus revertendi
+animus revocandi
+animus testandi
+anise camphor
+aniseed fox
+aniseed oil
+aniseed star
+aniseed tree
+anise hyssop
+anise oil
+anise plant
+anise-scented goldenrod
+ankle boot
+ankle clonus
+ankle cutter
+ankle-deep
+ankle-jacked
+ankle jerk
+ankle ring
+ankle strap
+ankle tie
+Annabel lee
+Annam-muong
+annatto tree
+Anno domini
+annual bluegrass
+annuity gift
+Annunciation lily
+Annunciation style
+anode rays
+anodyne necklace
+anorthite-basalt
+another-gates
+another-guess
+another-guise
+ansa hypoglossi
+ansa subclavia
+ansate cross
+anserine skin
+answer-back
+answer book
+answering pennant
+ant acacia
+Antarctic barrier
+antarctic beech
+ant bear
+ant bird
+ant catcher
+ant cattle
+ant cow
+Ante-babylonish
+ante bellum
+antecedent right
+Ante-christian
+Ante-cuvierian
+ante-ecclesiastical
+ante-eternity
+ant egg
+Ante-gothic
+Ante-hieronymian
+Ante-justinian
+antelope brush
+antelope chipmunk
+Antelope state
+ante meridiem
+ante mortem
+ante-mortem clot
+Ante-mosaic
+Ante-mosaical
+Ante-nicene
+antenna array
+antenna circuit
+antennae sword
+antenna grounding switch
+antenna inductance
+antennal lobe
+antenna resistance
+antenna switch
+Ante-norman
+antenuptial contract
+antenuptial settlement
+anterograde amnesia
+Ante-victorian
+ant fly
+ant heap
+anther cell
+anther lobe
+anther sac
+anther smut
+ant hillock
+anthracene brown
+anthracene oil
+anthracene yellow
+anthracite black
+anthrax vaccine
+antiaircraft barrage
+Anti-allied
+Anti-ally
+Anti-american
+Anti-americanism
+Anti-anglican
+Anti-arab
+Anti-arian
+Anti-aristotelian
+Anti-armenian
+Anti-arminian
+Anti-arminianism
+Anti-athanasian
+Anti-athenian
+Anti-austrian
+Anti-babylonianism
+Anti-bartholomew
+Anti-biblic
+Anti-biblical
+Anti-birmingham
+Anti-bohemian
+Anti-bolshevik
+Anti-bolshevist
+Anti-bonapartist
+Anti-british
+Anti-britishism
+Antiburgher kirk
+Anti-caesar
+Anti-calvinism
+Anti-calvinist
+Anti-calvinistic
+Anti-calvinistically
+Anti-cathedralist
+Anti-catholic
+anti-christian
+Anti-christian
+Anti-christianism
+Anti-christianity
+Anti-christianize
+Anti-christianly
+Anti-corn-law league
+Anticosti group
+Anti-darwinian
+Anti-darwinism
+Anti-docetae
+antidote cacoon
+antidote lily
+Anti-dreyfusard
+Anti-english
+Anti-entente
+Anti-european
+Anti-fascism
+Anti-fascist
+Anti-fascisti
+Anti-fourierist
+Anti-french
+Anti-freudian
+antifriction curve
+antifriction metal
+antifriction wheels
+anti-gallic
+anti-gallican
+Anti-gallican
+anti-gallican hitch
+anti-gallicanism
+Anti-german
+Anti-germanism
+Anti-gnostic
+Anti-gothicist
+Anti-hanoverian
+anti-hog-cholera
+Anti-ibsenite
+anti-icer
+anti-icteric
+anti-idealist
+anti-idolatrous
+anti-immigrationist
+anti-immune
+anti-imperialism
+anti-imperialist
+anti-imperialistic
+anti-incrustator
+anti-indemnity
+anti-induction
+anti-inductive
+anti-infallibilist
+anti-infantal
+anti-innovationist
+anti-intellectual
+anti-intellectualism
+anti-intellectualist
+anti-intermediary
+Anti-irishism
+anti-isolysin
+Anti-italian
+anti-jacobin
+anti-jacobinism
+Anti-jansenist
+Anti-japanese
+Anti-japanism
+Anti-jesuit
+Anti-jewish
+Anti-judaic
+Anti-judaism
+Anti-klan
+Anti-klanism
+anti-laissez-faire
+Anti-lamarckian
+Anti-latin
+Anti-laudism
+anti-leaguer
+anti-lecomption
+anti-lecomptom
+Anti-liberal
+Anti-macedonian
+Anti-macedonianism
+Anti-malthusian
+anti-maniacal
+Anti-messiah
+Anti-mexican
+Anti-mohammedan
+Anti-mongolian
+antimony blende
+antimony bloom
+antimony chloride
+antimony cinnabar
+antimony crocus
+antimony crude
+antimony glance
+antimony glass
+antimony hydride
+antimony ocher
+antimony orange
+antimony oxide
+antimony pentachloride
+antimony pentasulphide
+antimony pentoxide
+antimony red
+antimony regulus
+antimony rubber
+antimony saffron
+antimony salt
+antimony sulphide
+antimony tetroxide
+antimony trichloride
+antimony trioxide
+antimony trisulphide
+antimony vermilion
+antimony white
+antimony yellow
+Anti-mosaical
+Anti-nationalist
+anti-nebraska
+anti-nicaean
+Anti-nihilist
+Anti-noahite
+Anti-nordic
+Antiopa butterfly
+anti-open-shop
+antiophthalmic vitamin
+Anti-oriental
+anti-over
+Anti-paul
+Anti-pauline
+Anti-pelagian
+Anti-philippizing
+Anti-platonic
+Anti-polish
+anti-pre-existentiary
+Anti-protestant
+antique brass
+antique bronze
+antique brown
+antique cloth
+antique crown
+antique dealer
+antique drab
+antique green
+antique red
+Anti-republican
+Anti-roman
+Anti-romanist
+Anti-ruskinian
+Anti-russian
+Anti-sabbatarian
+Anti-sabian
+Anti-saxonism
+Anti-scriptural
+Anti-scripturism
+Anti-scripturist
+Anti-semite
+Anti-semitic
+Anti-semitically
+Anti-semitism
+Anti-serb
+Anti-shelleyan
+Anti-shemite
+Anti-shemitic
+Anti-shemitism
+Anti-slav
+Anti-slovene
+Anti-socinian
+Anti-soviet
+Anti-spanish
+antisterility factor
+antisymmetrical tensor
+Anti-teuton
+Anti-teutonic
+Anti-tribonian
+Anti-trinitarian
+Anti-trinitarianism
+Antitrust act
+Anti-turkish
+Anti-unitarian
+Anti-venizelist
+Anti-volstead
+Anti-volsteadian
+Anti-whig
+Anti-wycliffist
+Anti-wycliffite
+Anti-zionism
+Anti-zionist
+Anti-zwinglian
+ant king
+antler moth
+ant lion
+Antony-over
+ant pipit
+ant plant
+ant rice
+ant shrike
+ant thrush
+ant tree
+ant worm
+ant wren
+anvil block
+anvil chisel
+anvil cloud
+anvil cupper
+anvil cutter
+anvil-drilling
+anvil dross
+anvil-faced
+anvil-facing
+anvil forger
+anvil-headed
+anvil maker
+anvil vise
+anxiety equivalent
+anxiety hysteria
+anxiety neurosis
+any he
+any more
+anything but
+anything like
+anywhere near
+A one
+apache dance
+Apache pine
+Apache plume
+Apache state
+Apache yuma
+apartment building
+apartment hotel
+apartment house
+ape fissure
+ape hand
+ape-headed
+ape man
+aperture ratio
+aperture vignette
+apex beat
+apex rule
+aphid rosette
+aphis fly
+aphis foot
+aphis lion
+aphis wolf
+aphthous fever
+aphthous stomatitis
+apocha trium annorum
+Apogon iris
+A pole
+Apollinaris water
+apostle bird
+apostle jug
+apostle spoon
+A powder
+Apparatus sculptoris
+appearance money
+appendico-enterostomy
+appendix vermiformis
+apperception mass
+Appian way
+Appii forum
+apple anthracnose
+apple aphid
+apple banana
+apple bee
+apple blight
+apple blotch
+apple box
+apple brandy
+apple bucculatrix
+apple butter
+apple canker
+apple-cheeked
+apple cheese
+apple curculio
+apple dumpling
+apple-eating
+apple essence
+apple-faced
+apple-fallow
+apple family
+apple fly
+apple fritter
+apple geranium
+apple grain aphid
+apple green
+apple grunt
+apple gum
+apple haw
+apple juice
+apple leaf
+apple maggot
+apple mildew
+apple mint
+apple moss
+apple moth
+apple oil
+apple pie
+apple pox
+apple psylla
+apple rosette
+apple rust
+apple scab
+apple scald
+apple scale
+apple-scented
+apple-shaped
+apple shell
+apple slump
+apple snail
+apple-stealing
+apple sucker
+apple tart
+apple toddy
+apple tree
+apple turnover
+apple-twig
+apple-twig beetle
+apple-twig borer
+apple weevil
+apple wine
+apple worm
+applicate number
+application lace
+applique lace
+apportionment bill
+apposition beach
+appositive genitive
+appraisal clause
+apprentice seaman
+apprentice teacher
+approach trench
+appropriation bill
+approval book
+approval sheet
+a prendre
+apricot-kernal
+apricot palm
+apricot plum
+apricot scale
+apricot vine
+April fool
+April fools day
+April gentleman
+April-gowk
+apron conveyer
+apron lining
+apron man
+apron piece
+apron plate
+apron roll
+apron shield
+apron-squire
+apron stage
+apron string
+apron wall
+apse aisle
+aptitude test
+aqua ammoniae
+aqua aromatica
+aqua bromata
+aqua bulliens
+aqua caelestis
+aqua camphirae
+aqua chlorata
+aqua fortis
+aqua labyrinthi
+aqua marina
+aquamarine chrysolite
+aquamarine topaz
+aqua mirabilis
+aqua phagedaenica nigra
+aqua pura
+aqua regia
+aqua rosae
+aqua tofana
+aqua vitae
+aqueduct bridge
+aquiline-nosed
+aquo-ion
+Arabian millet
+Arabo-byzantine
+arachis oil
+arachnoid granulation
+Aragon spar
+Arapaho formation
+arbitrated par
+arbitration treaty
+Arbor day
+arborization block
+arbor press
+arbor shaft
+arbor vine
+arborvitae leaf miner
+Arc du carrousel
+arc flame
+arc generator
+Ar-chang
+arch bar
+arch barrel
+arch brace
+arch-brahman
+arch brick
+arch bridge
+arch buttress
+arch-christendom
+arch-christianity
+arch dam
+Arches court
+archetypal world
+archil extract
+archil liquor
+archippus butterfly
+arch order
+arch press
+arch-protestant
+arch ring
+arch solid
+arch spring
+arch stone
+arch support
+arch-whig
+arcing contact
+arcing jaws
+arc lamp
+arc light
+arc-over
+arc pitch
+arc process
+arc-shaped
+arc spectrum
+Arctic-alpine zone
+Arctic circle
+arctico-altaic
+arctic timothy
+arc transmitter
+arc weld
+arc welder
+arc welding
+Ardebil carpet
+Ardi-ea
+ardor urinae
+area gate
+area graph
+area-moment method
+area rule
+area sneak
+area vector
+area wall
+areca catechu
+areca nut
+areca palm
+areolate mildew
+argan oil
+argan tree
+argemone oil
+argentella lace
+argentine thistle
+arginine phosphagen
+argle-bargie
+Argo navis
+argue-bargue
+argus brown
+Argus-eyed
+argus pheasant
+argus shell
+argus tortoise beetle
+argy-bargy
+Argyle purple
+Argyll-robertson pupil
+Argyll-robertson sign
+arid region
+ariel petrel
+ariel toucan
+arithmetico-geometric
+arithmetico-geometrical
+Ariyalur group
+arjun wax
+ark shell
+arle penny
+arles penny
+armature assembler
+armature bander
+armature binder
+armature winder
+armature winding
+arm band
+arm board
+arm coil
+Armeno-turkish
+arm garter
+arm gear
+arm-great
+arm guard
+arm-headed
+Armistice day
+arm-linked
+armor-bearer
+armor belt
+armor-clad
+armor grating
+armor-piercing
+armor plate
+armor-plated
+arm-shaped
+arm stake
+arm viol
+army ant
+army area
+army brown
+army corps
+Army council
+army cutworm
+army engineer
+army engineering
+Army list
+army troops
+army worm
+arnica bud
+Arran chief
+arriere fee
+arriere tenant
+arriere vassal
+arris fillet
+arris gutter
+arris rail
+arrow arum
+arrow-back
+arrow-back chair
+arrow-bearing
+arrow cane
+arrow grass
+arrow-grass family
+arrow horn
+arrow-leaved
+arrow maker
+arrow making
+arrow mehl
+arrow release
+arrow rest
+arrowroot family
+arrow-shaped
+arrow shot
+arrow-slain
+arrow-smitten
+arrow snake
+arrow stave
+arrow straightener
+arrow-toothed
+arrow-wounded
+arroyo grape
+arroyo willow
+arsenic antidote
+arsenic bloom
+arsenic calciner
+arsenic eater
+arsenic eating
+arsenic glass
+arsenic mirror
+arsenic mold
+arsenic orange
+arsenic refiner
+arsenic smelter
+arsenic yellow
+arsha rite
+art brown
+art-colored
+art column
+art composition
+art-conscious
+art critic
+art criticism
+art dealer
+art department
+art design
+art editor
+artemisia green
+artery forceps
+artesian borer
+art exhibition
+art expression
+art gallery
+art gray
+art green
+art guild
+arthritis deformans
+artichoke bottom
+artichoke green
+Article x
+artificer branch
+artillery hub
+artillery park
+artillery plant
+artillery train
+artillery wagon
+artillery wheel
+art league
+art manual
+art museum
+art music
+art paper
+art period
+art school
+arts college
+art shade
+art song
+art square
+art student
+art supervisor
+art teacher
+art union
+arum family
+arum lily
+Aryo-dravidian
+Aryo-indian
+aryteno-epiglottic
+Asa bridge
+asa dulcis
+asafetida oil
+asarum camphor
+asarum oil
+asbestos blanket
+asbestos board
+asbestos braid
+asbestos carder
+asbestos cement
+asbestos cloth
+asbestos-coated
+asbestos-corrugated
+asbestos-covered
+asbestos covering
+asbestos crusher
+asbestos doubler
+asbestos felt
+asbestos fiber
+asbestos filter
+asbestos flooring
+asbestos lagging
+asbestos lining
+asbestos listing
+asbestos lumber
+asbestos-packed
+asbestos paper
+asbestos porcelain
+asbestos-protected
+asbestos rock
+asbestos toaster
+asbestos weaver
+asbestos-welded
+asbestos wood
+ascending aorta
+ascending colon
+Ascension day
+Ascension lily
+Ascidiae compositae
+Ascidiae simplices
+asclepias butterfly
+ascot tan
+ascus fruit
+a-sea
+Asellus australis
+Asellus borealis
+Ashanti pepper
+A-shaped
+A-sharp
+ash barrel
+ash-bellied
+ash bin
+ash-blue
+ash bread
+ash bud
+ash can
+ash canker
+ash cart
+ash chute
+ash collector
+ash-colored
+ash cone
+ash-free
+ash furnace
+ash gray
+ash-gray blister beetle
+ash heap
+ash hopper
+ash key
+ashlar brick
+ashlar line
+ash leaf
+ash-leaved
+ash-looking
+ash oven
+ash pile
+ash pole
+ash pumpkin
+ash rock
+ash spear
+ash staff
+ash-staved
+ash-throated
+ash tray
+ash tree
+Ash wednesday
+ash-white
+ash wood
+asparagus bean
+asparagus broccoli
+asparagus fern
+asparagus lettuce
+asparagus pea
+asparagus stone
+aspect ratio
+aspen poplar
+asphalt-base
+asphalt cement
+asphalt grout
+asphalt macadam
+asphalt mastic
+asphalt oil
+asphalt paint
+asphalt rock
+asphodel green
+asphyxia neonatorum
+asphyxiating gas
+aspirating stroke
+aspiration pneumonia
+assai palm
+Assam rubber
+Assam silk
+Assassination plot
+assassin bug
+assault line
+assay balance
+assay bar
+assay beam
+assay crucible
+assay flask
+assay foot
+assay furnace
+assay mill
+assay office
+assay-office bar
+assay oven
+assay pound
+assay ton
+ass-ear
+assembling mark
+assembly conveyer
+assembly line
+assembly room
+assessment company
+assessment insurance
+assessment work
+asset currency
+ass-headed
+assistant agent
+assistant auditor
+assistant barber
+assistant bookkeeper
+assistant buyer
+assistant cashier
+assistant chemist
+assistant chief
+assistant clerk
+assistant deputy
+assistant director
+assistant driver
+assistant druggist
+assistant editor
+assistant engineer
+assistant examiner
+assistant foreman
+assistant guard
+assistant housekeeper
+assistant inspector
+assistant janitor
+assistant janitress
+assistant librarian
+assistant manager
+association area
+association book
+association football
+association psychology
+association test
+association time
+ass parsley
+ass-ship
+Assyro-babylonian
+A star
+astasia-abasia
+aster family
+asterias swallowtail
+aster purple
+aster ray
+aster yellows
+asthma herb
+asthma paper
+asthmatic cigarette
+asthma weed
+A switchboard
+As-yakh
+atamasco lily
+atef crown
+atelets sauce
+at-home
+at-homeish
+at-homeishness
+at-homeness
+a thousandfold
+a-tiptoe
+Atlanto-mediterranean
+atlas folio
+atlee gall
+atloido-occipital
+atlo-odontoid
+atomic hydrogen torch
+atomic hydrogen welding
+atom model
+atom soul
+attache case
+attachment disk
+attachment plug
+attack plane
+attack squadron
+attention signal
+attenuation charge
+attic order
+attic story
+attorney general
+attorney-generalship
+attorneys general
+attracted-disk
+attraction cone
+attraction sphere
+auburn-haired
+auction bridge
+auction euchre
+auction hearts
+auction pinochle
+auction pitch
+auction pool
+aucuba green
+aucuba mosaic
+audibility meter
+audience court
+audio-frequency
+audio-visual
+audit ale
+audit book
+audit certificate
+audit date
+audit house
+audit office
+auditor-general
+auditors-general
+audit room
+augen-gabbro
+augen-gneiss
+auger bit
+auger box
+auger crank
+auger drill
+auger feed
+auger handle
+auger hole
+auger lathe
+auger machine
+auger-nose
+auger press
+auger shell
+auger stem
+auger tongue
+auger-type
+auger worm
+augite-porphyrite
+augite-porphyry
+au gratin
+August meteors
+auld-farran
+auld-farrand
+auld-farrant
+Auld kirker
+auld-warld
+Aunt jericho
+aureolin yellow
+auricula purple
+auriculo-infraorbital
+auriculo-occipital
+auri-iodide
+aurora australis
+aurora borealis
+aurora glory
+aurora orange
+aurora polaris
+aurora sauce
+aurora trout
+aurora yellow
+aussage test
+Austral-english
+Australian bent grass
+Australian-oak
+Australian-oak family
+Austro-columbia
+Austro-columbian
+Austro-hungarian
+Austro-malayan
+Austro-swiss
+author catalogue
+author-created
+author-entry
+author mark
+author number
+author-publisher
+author-ridden
+auto-audible
+auto carrier
+autoconvection gradient
+auto court
+auto-da-fe
+auto laundry
+auto lorry
+autolysate-precipitate
+auto mechanic
+auto mechanics
+automobile board
+automobile insurance
+automobile sled
+automorphic-granular
+automotive engineer
+automotive engineering
+auto-objective
+auto-observation
+auto-omnibus
+auto-ophthalmoscope
+auto-ophthalmoscopy
+auto-oxidation
+auto-oxidize
+autotransformer starter
+autotuberculin test
+autourine test
+autre vie
+autumn bellflower
+autumn blond
+autumn-brown
+autumn catchfly
+autumn crocus
+autumn green
+autumn leaf
+autumn mange
+autumn oak
+autumn snowflake
+autumn-spring
+autumn squill
+autumn violet
+autumn willow
+avalanche conduction
+avalanche lily
+avant-courier
+avant-garde
+avant-gardism
+avant-gardist
+average adjuster
+average book
+average clause
+average life
+average-life period
+average stater
+aviation beacon
+avocado fat
+avocado oil
+avocado weevil
+avoirdupois pound
+avoirdupois weight
+away-going
+awe-awakening
+awe-bound
+awe-commanding
+awe-compelling
+awe-filled
+awe-inspired
+awe-inspiring
+awe-stricken
+awe-strike
+awe-struck
+awful-eyed
+awful-gleaming
+awful-looking
+awful-voiced
+awl bird
+awl-fruited
+awl-leaved
+awl-shaped
+awned wheat grass
+awn grass
+awning cloth
+awning deck
+awnless brome grass
+ax-adz
+ax eye
+ax grinder
+ax handle
+ax helve
+axial-flow
+axial-flow turbine
+axis cylinder
+axis deer
+axle adjuster
+axle arm
+axle assembler
+axle bar
+axle bearing
+axle bender
+axle-bending
+axle bolt
+axle-boring
+axle box
+axle bush
+axle cap
+axle case
+axle centerer
+axle-centering
+axle cutter
+axle dresser
+axle ender
+axle filer
+axle finisher
+axle forger
+axle-forging
+axle grease
+axle grinder
+axle guard
+axle guide
+axle hammer
+axle hammerman
+axle hardener
+axle hook
+axle journal
+axle lagger
+axle lathe
+axle load
+axle oiler
+axle packer
+axle pin
+axle pinner
+axle press
+axle rougher
+axle saddle
+axle seat
+axle setter
+axle shaft
+axle sleeve
+axle slotter
+axle spindle
+axle stool
+axle straightener
+axle tooth
+axletree arm
+axle turner
+axle wad
+axle worker
+ax-shaped
+ax sheath
+ax wedge
+aye-aye
+aye-ceaseless
+aye-during
+aye-dwelling
+aye-lasting
+aye-living
+ayer-ayer
+aye-remaining
+aye-renewed
+aye-restless
+aye-rolling
+aye-running
+aye-sought
+aye-troubled
+aye-turning
+aye-varied
+aye-welcome
+Azilian-tardenoisian
+azimuth circle
+azimuth compass
+azimuth co-ordinate
+azimuth dial
+azimuth distance
+azimuth error
+azomethine group
+azonium base
+azonium salt
+azo-orange
+azo-orchil
+azo-orseilline
+azoxy group
+azure-blazoned
+azure-blue
+azure-canopied
+azure-circled
+azure-colored
+azure-domed
+azure-eyed
+azure-footed
+azure-inlaid
+azure-mantled
+azure-penciled
+azure-plumed
+azure-tinted
+azure-vaulted
+azure-veined
+Baal-berith
+baal marriage
+baba-koto
+babassu oil
+babbitting jig
+Babbitt metal
+babe-faced
+baby act
+baby beef
+baby blue
+baby blue-eyes
+baby bond
+baby-browed
+baby bunting
+baby eyes
+baby-faced
+baby farm
+baby farmer
+baby farming
+baby-featured
+baby fern
+baby grand
+baby heathberry
+baby-kissing
+baby lace
+baby orchid
+baby pin
+baby pink
+baby primrose
+baby rambler
+baby ribbon
+baby seal
+baby-sit
+baby sitter
+baby-sitting
+baby-snatching
+baby talk
+baby tears
+baby threader
+bacalao bird
+bachelor girl
+bachelor perch
+backache brake
+backache root
+back-acting
+back-acting steam engine
+back action
+back-action steam engine
+back airing
+back air pipe
+back-angle
+back answer
+back balance
+back bar
+Back bay
+back beam
+back bench
+back bender
+back block
+back-blocker
+back-blowing
+back bond
+back-breathing
+back-broken
+back center
+back check
+back choir
+back cloth
+back comb
+back-coming
+back-connected
+back-connected switch
+back country
+back dive
+back door
+back draft
+back-drawing
+back-drawn
+back eccentric
+backed-off
+back electromotive force
+back end
+back entry
+backer-up
+back-face
+back-facing
+back-fanged
+back fat
+back file
+back fillet
+back-filleted
+back-flung
+back focus
+back-focused
+back formation
+back gear
+back-geared
+back-glancing
+back-going
+back hair
+backhand rent
+back head
+backing jointer
+backing metal
+backing-off
+backing-off lathe
+backing out
+backing paper
+back-leaning
+back letter
+back-lighted
+back line
+back liner
+back lining
+back link
+back-list
+back-looking
+back-lying
+back maker
+back-making
+back number
+back order
+back overman
+back-paddle
+back page
+back-paint
+back-palm
+back paternoster
+backpedaling brake
+back pitch
+back-plaster
+back plastering
+back play
+back pressure
+back-pressure valve
+back-pulling
+back-putty
+back-racket
+back-raking
+back rest
+back road
+back rod
+back sail
+back scene
+back score
+back-scratcher
+back-scratching
+back seat
+back-set bed
+back-sey
+back shaft
+back shop
+back shutter
+back side
+back sinew
+back slang
+back-slanging
+back-spiker
+back stairs
+back-starting
+backstay stools
+back step
+back-stepping
+back-stope
+back-strapped
+back strapper
+back stream
+back street
+back-streeter
+back-surging
+back swath
+back swimmer
+back talk
+back-tan
+back tendon
+back-titrate
+back-titration
+back track
+back trail
+back-trailer
+back-trip
+back turn
+back vent
+back venting
+backward blessing
+back yard
+bacon beetle
+bacon hog
+bacterio-opsonic
+bacterio-opsonin
+bad blood
+bad cess
+bad debt
+badger baiting
+badger bird
+badger dog
+badger-legged
+badger skunk
+Badger state
+badging hook
+bad-headed
+bad-hearted
+bad-humored
+bad-looking
+badly off
+bad-minded
+bad-order freight
+bad-tempered
+baeberry bark
+baffle gate
+baffle painting
+baffle plate
+baffling wind
+bag bearer
+bag-bearing
+bag beater
+bag-bedded
+bag boom
+bag bundler
+bag-bundling
+bag cap
+bag-cheeked
+bag clasp
+bag cleaner
+bag-closing
+bag cutter
+bag-cutting
+Bagdad boil
+bag dryer
+bag feeder
+bag filler
+bag-filling
+bag filter
+bag fitter
+bag folder
+bag-folding
+bag fox
+bag frame
+bag framer
+baggage agent
+baggage car
+baggage cart
+baggage check
+baggage clerk
+baggage inspector
+baggage porter
+baggage rack
+baggage room
+baggage-smasher
+baggage train
+baggage van
+baggage wagon
+bag holder
+bag loader
+bag machinist
+bag marker
+bag mender
+bag net
+bag packer
+bag picker
+bag printer
+bag-printing
+bag rack
+bag repairer
+bag riveter
+bag sewer
+bag-sewing
+bag-shaped
+bag sleeve
+bag sorter
+bag stacker
+bag stitcher
+bag table
+bag twine
+bag work
+bag worker
+bagworm moths
+Bahama bay rush
+Bahama fiber
+Bahama grass
+Bahama hemp
+Bahama mahogany
+Bahama redwood
+Bahama tea
+Bahama whitewood
+Bahia grass
+Bahia piassava
+Bahia powder
+baib grass
+bail bond
+Bail court
+bail-dock
+bailer shell
+bait bug
+bait casting
+bait set
+bake cart
+baked-apple
+baked beans
+bake kettle
+baker bird
+baker-knee
+baker-kneed
+baker-leg
+baker-legged
+baker sheet
+bakery moth
+bakery proofer
+Bakewell pudding
+baking powder
+baking soda
+balance adjuster
+balance arm
+balance beam
+balance bob
+balance bridge
+balance clerk
+balance cock
+balance coil
+balance crane
+balance dock
+balance electrometer
+balance fish
+balance frame
+balance gate
+balance level
+balance link
+balance lug
+balance maker
+balance pin
+balance piston
+balance pit
+balance plane
+balance rail
+balance reef
+balance ring
+balance rope
+balancer set
+balance rudder
+balance rynd
+balance screw
+balance sheet
+balance spring
+balance staff
+balance step
+balance valve
+balance watch
+balance weight
+balance wheel
+balancing band
+balancing coil
+balancing condenser
+balancing flap
+balancing link
+balancing ring
+balancing set
+balancing ways
+balanophore wax
+balas ruby
+balata belt duck
+balata gum
+Balcones fault zone
+balder-brae
+balder-herb
+bald-faced
+bald-headed
+bald-pated
+bald-patedness
+Balearic crane
+bale band
+bale breaker
+bale buckle
+bale conveyor
+bale feeder
+bale goods
+bale hook
+bale jumper
+bale marker
+bale opener
+bale stick
+bale stitcher
+bale strap
+bale tie
+bale tier
+balk day
+balk line
+balk-line game
+ballad horn
+ballad maker
+ballad making
+ballad measure
+ballad meter
+ballad opera
+ballad poetry
+ballad reciter
+ballad rhyme
+ballad singer
+ballad singing
+ballad stanza
+ballad style
+ballad writer
+ball-and-claw foot
+ball-and-socket joint
+ballast brakesman
+ballast car
+ballast cleaner
+ballast-cleaning
+ballast crusher
+ballast-crushing
+ballast engine
+ballast fin
+ballast ganger
+ballast heaver
+ballast hole
+ballast inspector
+ballast line
+ballast loader
+ballast-loading
+ballast master
+ballast plant
+ballast port
+ballast pump
+ballast spreader
+ballast stone
+ballast tank
+ballast tipper
+ballast track
+ballast trimmer
+ballast unloader
+ball bearing
+ball boy
+ball breaker
+ball cactus
+ball cartridge
+ball caster
+ball clay
+ball cock
+ballet dancer
+ballet dancing
+ballet girl
+ballet master
+ballet mistress
+ballet music
+ballet slipper
+ball fern
+ball-flower
+ball foot
+ball gentle
+ball grinder
+ball gudgeon
+ball handle
+ball-hooter
+balli buntl
+ballibuntl hat
+balling furnace
+balling gun
+balling head
+balling iron
+ball ironstone
+ball joint
+ball lever
+ball lightning
+ball mill
+ball moss
+ball mustard
+balloon bed
+balloon cloth
+balloon fabric
+balloon feather
+balloon foresail
+balloon frame
+balloon framing
+ballooning spider
+balloon jib
+balloon sail
+balloon sickness
+balloon sleeve
+balloon tire
+balloon vine
+ballot box
+ball park
+ball peen
+ball-planting
+ball-point
+ball python
+ball reamer
+ball rest
+ball rose
+ball sage
+ball screw
+ball seater
+ball-shaped
+ball smut
+ball snake
+ball stitch
+ball tap
+ball thistle
+ball-thrombus
+ball top
+ball valve
+bally gum
+balm apple
+balm-breathing
+balm cottonwood
+balm cricket
+balm dew
+balm fir
+balm leaf
+balm-leaved
+balm mint
+balm oil
+balm pine
+balm-shed
+balm shrub
+balm tea
+balm wine
+balsam apple
+balsam bog
+balsam copaiba
+balsam cucumber
+balsam fig
+balsam fir
+balsam flowers
+balsam groundsel
+balsam herb
+balsam hickory
+balsam pear
+balsam poplar
+balsam shrub
+balsam spruce
+balsam spurge
+balsam tree
+balsam-tree family
+balsam vine
+Balsam wool
+Baltimore belle
+Baltimore bird
+Baltimore catechism
+Baltimore heater
+Baltimore oriole
+Baltimore shilling
+Baltimore truss
+Baltimore yellow
+Balto-slav
+Balto-slavic
+Balto-slavonic
+baluster column
+baluster shaft
+baluster stem
+bambara butter
+Bambara groundnut
+Bamberg bible
+Bamboo books
+bamboo brier
+bamboo fern
+bamboo fish
+bamboo grass
+bamboo money
+bamboo oyster
+bamboo palm
+bamboo partridge
+bamboo rat
+bamboo reed
+bamboo sugar
+bamboo vine
+bamboo ware
+bambui butter
+bambuk butter
+banana bean
+banana bird
+banana boa
+banana eater
+banana family
+banana fish
+banana flour
+banana fly
+banana freckle
+banana liquid
+banana moth
+banana oil
+banana quit
+banana root borer
+banana shrub
+banana solution
+banana water lily
+banana weevil
+banana wilt
+Bancus regis
+Bandar-log
+band bracelet
+band brake
+band chain
+band conveyer
+band course
+band creaser
+band cutter
+band driver
+banded purple
+band filter
+band iron
+bandle linen
+band major
+band maker
+band mill
+bandoleer fruit
+band-pass filter
+band plant
+band pulley
+band resaw
+band saw
+band-saw file
+band-sawing
+band-sawyer
+band screen
+band-shaped
+band shell
+band spectrum
+band steel
+band-tailed
+band wagon
+band wheel
+bandy-bandy
+bandy leg
+bandy-legged
+bang beggar
+Bangkok hat
+bangle ear
+bangtail muster
+bang-up
+banister-back
+banjo clock
+banjo frame
+banjo signal
+banjo-ukulele
+bank acceptance
+bank account
+bank accountant
+bank agent
+bank annuities
+bank assets
+bank assistant
+bank auditor
+bank barn
+bank beaver
+bank bill
+bank bird
+bank boss
+bank brakesman
+bank call
+bank cashier
+bank charter
+bank check
+bank claim
+bank clearings
+bank clerk
+bank cod
+bank court
+bank credit
+bank cress
+bank deposit
+bank discount
+bank draft
+bank engine
+banker-mark
+banker-out
+bank examiner
+bank fish
+bank fisher
+bank fisheries
+bank footman
+bank foreman
+bank gravel
+bank guaranty
+bank head
+bank heading
+bank-high
+bank holiday
+banking doctrine
+banking file
+banking indicator
+banking pin
+banking principle
+banking screw
+banking stud
+banking wax
+bank inspector
+bank jug
+bank laborer
+bank ledger
+bank loan
+bank manager
+bank martin
+bank messenger
+bank molder
+bank money
+bank note
+bank oddman
+bank overman
+banko ware
+bank paper
+bank post bill
+bank ranger
+bank rate
+bank receipt
+bank receiver
+bank reference
+bank repairer
+bank report
+bank reserve
+bank return
+bank roll
+bank run
+bankrupt law
+bank shot
+banksia rose
+bank-sided
+bank sill
+bank smack
+bank statement
+bank stock
+Bank stock
+bank superintendent
+bank swallow
+bank teller
+bank tender
+bank thistle
+bankul nut
+bank vole
+bank walker
+bank water
+bank weigher
+bank winding
+bank woman
+bank-wound
+banner bearer
+banner cloth
+banner cloud
+banner cry
+banner-fashioned
+banner name
+banner painter
+banner plant
+banner pole
+banner pompano
+banner screen
+banner-shaped
+banner staff
+banner stone
+bannock fluke
+bannock stick
+banquette slope
+banquette tread
+banyan day
+banyan tree
+Baraboo quartzite
+bara-picklet
+Barbados aloes
+Barbados cabbage tree
+Barbados cherry
+Barbados-cherry family
+Barbados cotton
+Barbados earth
+Barbados gooseberry
+Barbados leg
+Barbados lily
+Barbados liquor
+Barbados maidenhair
+Barbados nut
+Barbados pride
+Barbados sour grass
+Barbados tar
+Barbados trumpet flower
+Barbados water
+Barbados yam
+Barbary ape
+Barbary buttons
+Barbary corn
+Barbary dove
+Barbary ducat
+Barbary fig
+Barbary horse
+Barbary mastic
+Barbary oak
+Barbary pepper
+Barbary pigeon
+Barbary sheep
+Barbary thorn
+barb bolt
+bar beat
+barbed cat
+barbed wire
+bar bell
+barber bug
+barber-bug fever
+barberry family
+barberry fig
+barberry rust
+barbershop chords
+barbershop harmony
+barbette carriage
+barbette gun
+bar bit
+barbital sodium
+Barbizon school
+Barcelona nut
+bar cent
+bar chuck
+Barcoo grass
+Barcoo vomit
+bar discharger
+bare-ankled
+bare-armed
+bare-bitten
+bare-bosomed
+bare-branched
+bare-chested
+bare-clawed
+bare fallow
+bare-fingered
+barefoot tea
+bare-gnawn
+bare-kneed
+bare-picked
+bare-ribbed
+bare-skinned
+bare-skulled
+bare-throated
+bare-toed
+bare-walled
+bare-worn
+bar fee
+bargain basement
+bargain counter
+bargain day
+bargain driver
+bargain hunter
+bargain-hunting
+bargain penny
+bargain price
+bargain sale
+bargain table
+bargain work
+barge boom
+barge canal
+barge couple
+barge course
+barge-laden
+barge rig
+barge-rigged
+barge spike
+barge stone
+bar gown
+bar graph
+bar-headed goose
+bar iron
+Barisal guns
+barium carbonate
+barium chloride
+barium chromate
+barium chrome
+barium dioxide
+barium hydroxide
+barium monoxide
+barium nitrate
+barium oxide
+barium peroxide
+barium sulphate
+barium sulphide
+barium yellow
+bar joist
+bark-bared
+bark beetle
+bark blazer
+bark canker
+bark chopper
+bark cloth
+bark conveyer
+bark crusher
+bark-cutting
+bark disease
+bark dryer
+bar keel
+bark extract
+bark feeder
+bark-formed
+bark-galled
+bark-galling
+bark gouge
+bark grafting
+bark grinder
+bark-grinding
+bark house
+barking bill
+barking drum
+barking iron
+bark liquor
+bark louse
+bark maple
+bark mark
+bark mill
+bark parenchyma
+bark picker
+bark pit
+bark scaler
+bark shredder
+bark-shredding
+bark spud
+bark spudder
+bark stripper
+bark-tanned
+bark tree
+Bar-le-duc
+barley-bree
+barley-broo
+barley broth
+barley cake
+barley candy
+barley carrier
+barley cleaner
+barley clipper
+barley-clipping
+barley coal
+barley crusher
+barley-fed
+barley flour
+barley fork
+barley grass
+barley-grinding
+barley-hulling
+barley mill
+barley reel
+barley scald
+barley scourer
+barley smut
+barley straw
+barley stripe
+barley sugar
+barley water
+barley wine
+bar line
+bar magnet
+Barmecide feast
+bar money
+bar movement
+Barna-brahman
+Barnaby day
+barnacle-eater
+barnacle goose
+barnacle grass
+barnacle scale
+barn boards
+barn dance
+barn-door fowl
+barn-door skate
+barney-clapper
+barn fowl
+barn gallon
+barn grass
+barn gun
+barn lantern
+barn owl
+barn-raising
+barns-breaking
+barn swallow
+barnyard fowl
+barnyard golf
+barnyard grass
+barnyard millet
+barometer gauge
+barometer paper
+baron bailie
+baron court
+bar opal
+Barosma camphor
+bar parlor
+bar pin
+bar plate
+bar point
+barrack emperors
+barrage balloon
+barrage receiver
+barrage reception
+barrel amalgamation
+barrel arch
+barrel-bellied
+barrel bolt
+barrel-boring
+barrel-branding
+barrel bulk
+barrel cactus
+barrel chest
+barrel contractor
+barrel copper
+barrel drain
+barrel driver
+barrel-driving
+barrel fish
+barrel gentian
+barrel header
+barrel-heading
+barrel helm
+barrel hoop
+barrel house
+barrel organ
+barrel packer
+barrel-packing
+barrel palm
+barrel pen
+barrel pier
+barrel process
+barrel quartz
+barrel repairer
+barrel roll
+barrel roof
+barrel saw
+barrel sewer
+barrel shackle
+barrel-shaped
+barrel stave
+barrel tile
+barrel tree
+barrel vault
+barrel-vaulted
+barren brome grass
+Barren ground bear
+Barren ground caribou
+Barren grounds
+barrer-off
+barrette file
+barrier beach
+barrier berg
+barrier gate
+barrier ice
+barrier pillar
+barrier reef
+barrier treaty
+barring out
+bar roller
+barrow tram
+barrow truck
+barry-bendy
+barry-nebuly
+barry-pily
+barry-wavy
+bar screen
+bars gemels
+bar share
+bar-share plow
+bar shoe
+bar shot
+bar sight
+bar sinister
+bar spade
+bar stall
+bar-stock lathe
+bar-tailed
+barter unit
+Bartholomew fair
+bar tin
+Barton clay
+bar tracery
+Bartram oak
+Barus camphor
+bar winding
+bar-wound
+baryta feldspar
+baryta paper
+baryta water
+baryta white
+baryta yellow
+basal-cell carcinoma
+basal-nerved
+basalt glass
+basalt-porphyry
+basalt quarrier
+bascine case
+bascule bridge
+bascule escapement
+base angle
+base animals
+baseball rounders
+base-begged
+base-begot
+base bend
+base block
+base box
+base broom
+base bullion
+base-burner
+base camp
+base cinnamon
+base circle
+base clef
+base course
+base-court
+base depot
+base exchange
+base fee
+base-forming
+base fuse
+base hit
+base horehound
+base hospital
+base knob
+base level
+base-level plain
+base line
+base load
+base map
+basement complex
+basement house
+basement membrane
+base metal
+base-mettled
+base-minded
+base-mindedly
+base-mindedness
+base net
+base oil
+base pay
+base piece
+base plate
+base plug
+base point
+base right
+base ring
+base rocker
+base rocket
+base runner
+base running
+base-souled
+base speed
+base-spirited
+base-spiritedness
+base stone
+base tree
+base vervain
+base wage
+base wallah
+base-witted
+bas-fond
+bashi-bazouk
+bashi-bazoukery
+basic-lined
+basil balm
+basil mint
+basil penny royal
+basil thyme
+basing point
+basing tariff
+basin range
+basis bundle
+basis rate
+basket ash
+basket beagle
+basket bearer
+basket-bearing
+basket boat
+basket button
+basket capital
+basket carriage
+basket cells
+basket chair
+basket clerk
+basket cloth
+basket couching
+basket elm
+basket fern
+basket fish
+basket flower
+basket grass
+basket-handle arch
+basket hare
+basket hilt
+basket-hilted
+basket hoop
+Basket maker
+basket mast
+basket oak
+basket osier
+basket palm
+basket plant
+basket salt
+basket stitch
+basket tree
+basket weave
+Basket weaver
+basket willow
+basket withe
+basking shark
+Basonga-mina
+bas-relief
+bass-bar
+bass broom
+bass bug
+bass clef
+bass deafness
+bass drum
+basse danse
+basset griffon
+basset horn
+basset hound
+basset oboe
+bass fiber
+bass flute
+bass fly
+bass hogfish
+bass horn
+bassi-rilievi
+bass killy
+basso profundo
+Bassora gum
+bass player
+bassra locust
+bass-relief
+bass sunfish
+bass viol
+bastard acacia
+bastard agrimony
+bastard alkanet
+bastard aloe
+bastard apple
+bastard ash
+bastard ashlar
+bastard asphodel
+bastard baldmoney
+bastard balm
+bastard bar
+bastard blue gum
+bastard box
+bastard bryony
+bastard bullet tree
+bastard canna
+bastard cedar
+bastard cherry
+bastard chestnut
+bastard chickweed
+bastard chinaroot
+bastard cinnamon
+bastard clover
+bastard cork tree
+bastard cress
+bastard cusk
+bastard-cut
+bastard daisy
+bastard dittany
+bastard dogwood
+bastard dory
+bastard eigne
+bastard elder
+bastard elm
+bastard fallow
+bastard feverfew
+bastard fig
+bastard file
+bastard gemsbok
+bastard gentian
+bastard gidgee
+bastard goosefoot
+bastard grain
+bastard granite
+bastard gromwell
+bastard halibut
+bastard hartebeest
+bastard hawkweed
+bastard hellbore
+bastard hemp
+bastard horehound
+bastard hyssop
+bastard indigo
+bastard ipecac
+bastard ironwood
+bastard jarrah
+bastard jasmine
+bastard jute
+bastard lignum vitae
+bastard locust
+bastard locust tree
+bastard lupine
+bastard mahogany
+bastard manchineel
+bastard margaret
+bastard marjoram
+bastard measles
+bastard mouse-ear
+bastard myall
+bastard nettle
+bastard nightshade
+bastard olive
+bastard parsley
+bastard pellitory
+bastard pennyroyal
+bastard pimpernel
+bastard pine
+bastard plantain
+bastard plover
+bastard quartz
+bastard quince
+bastard rhubarb
+bastard rocket
+bastard rosewood
+bastard saffron
+bastard sago palm
+bastard sandalwood
+bastard-saw
+bastard sea grape
+bastard senna
+bastard sensitive plant
+bastard service tree
+bastard snapper
+bastard speedwell
+bastard spikenard
+bastard spruce
+bastard strangles
+bastard sugar
+bastard sycamore
+bastard tamarind
+bastard teak
+bastard thread
+bastard title
+bastard toadflax
+bastard tree
+bastard trefoil
+bastard trout
+bastard trumpeter
+bastard turtle
+bastard type
+bastard vervain
+bastard vetchling
+bastard weakfish
+bastard windflower
+bastard wing
+bastard wormwood
+bastard yellowlegs
+bastard yellowwood
+bast cell
+bastel house
+bast fiber
+Bastille day
+bastille house
+bast palm
+bast parenchyma
+bast tree
+bast vessel
+Batavia cassia
+bat bolt
+bat boy
+batcher plant
+bat dance
+bat ear
+bateau bridge
+bateau neck
+batement light
+Baten kaitos
+bath asparagus
+Bath brick
+Bath bun
+bath cabinet
+Bath chair
+Bath coating
+Bath coup
+bathing beach
+bathing beauty
+bathing cap
+bathing costume
+bathing gown
+bathing hut
+bathing machine
+bathing sandal
+bathing shoe
+bathing suit
+bathing trunks
+Bath king-of-arms
+bath-loving
+bath mat
+Bath metal
+Bath note
+Bath oliver
+bath salts
+Bath-sheba
+bath slipper
+bath soap
+bath sponge
+Bath stone
+bath towel
+Bathurst bur
+batiator root
+Bat indian
+bat-minded
+bat-mindedness
+bat money
+bat-mule
+bat printing
+batswing burner
+batswing coral
+battalia pie
+Battenberg lace
+batten door
+batten ends
+batten plate
+batter board
+batter brace
+batter bread
+battering-ram
+battering train
+batter-out
+batter pile
+batter post
+batter pudding
+batter rule
+battery case
+battery cell
+battery charger
+battery-charging
+battery chart
+battery eliminator
+battery maker
+battery mud
+battery tester
+battery-testing
+battery wagon
+battery water
+bat tick
+batting average
+batting block
+batting eye
+batting hammer
+battle array
+battle-ax
+battle brand
+battle call
+battle clasp
+battle club
+battle cruiser
+battle cry
+battle din
+battle-fallen
+battle flag
+battle fleet
+battle front
+battle gaff
+battle game
+battle horn
+battle hymn
+battle lantern
+battle line
+battle piece
+battle place
+battle police
+battle position
+battle quoit
+battle range
+battle royal
+battle-scarred
+battle shield
+battleship gray
+battle shout
+battle sight
+battle-slain
+battle smoke
+battle song
+battle-spent
+battle twig
+battle word
+battle-writhen
+bat tree
+batule board
+batwing burner
+batwing sleeve
+Baudouin reagent
+Baudouin test
+baum marten
+bauple nut
+bauson-faced
+Baveno twin
+Baveno twinning
+bawsay fern
+Baxter print
+bayacura root
+bayamo winds
+bay antler
+bay bar
+bay-bay
+bay bean
+bayberry bark
+bayberry family
+bayberry oil
+bayberry wax
+bay bird
+bay-breasted
+bay camphor
+bay cat
+bay cedar
+bay-cedar family
+bay coot
+Bayer process
+Bayeux tapestry
+bay floe
+bay goose
+bay grass
+bay holly
+bay hops
+bay ice
+bay lambs
+bay laurel
+bay lavender
+bay leaf
+bay-leaf willow
+bay lynx
+bay mackerel
+bay mahogany
+bay mare
+bay myrtle
+bay oak
+bay oil
+bayonet clasp
+bayonet joint
+bayonet leg
+bayonet plant
+bayou bass
+Bayou state
+bay plum
+bay point
+bay poplar
+bay rum
+bay-rum tree
+bay salt
+bay snipe
+bay stall
+Bay state
+bay stone
+bay-top palmetto
+bay tree
+bay willow
+bay winders
+bay window
+bay-winged
+bay yarn
+beach apple
+beach bird
+beach clam
+beach crab
+beach cusp
+beach flea
+beach goldenrod
+beach grass
+beach heather
+beach-la-mar
+beach pea
+beach plant
+beach plover
+beach plum
+beach ridge
+beach robin
+beach-sap
+beach strawberry
+beach tan
+beach wagon
+beach wormwood
+beaded-edge
+bead edging
+bead-eyed
+bead furnace
+beading plane
+beading tool
+bead lightning
+bead plant
+bead-ruby
+bead slick
+bead snake
+bead tree
+beady-eyed
+beak-bearing
+beaker culture
+beaker folk
+beak flute
+beakhorn stake
+beaking joint
+beak molding
+beak rush
+beak sedge
+beak-shaped
+beak wattles
+beak willow
+be-all
+beam anchor
+beam antenna
+beam arm
+beam-bending
+beam board
+beam bridge
+beam caliper
+beam center
+beam compass
+beam-ends
+beam engine
+beaming knife
+beaming machine
+beam knee
+beam knife
+beam light
+beam maker
+beam net
+beam plate
+beam pump
+beam roll
+beam sea
+beam-straightening
+beam texture
+beam trawl
+beam trawler
+beam trawling
+beam tree
+beam well
+beam wind
+bean anthracnose
+bean aphis
+bean beetle
+bean blight
+bean blower
+bean cake
+bean caper
+bean-caper family
+bean-cleaning
+bean clover
+bean crake
+bean-crushing
+bean curd
+bean cutworm
+bean dolphin
+bean-fed
+bean flour
+bean goose
+bean harvester
+bean hole
+bean honey
+bean house
+bean king
+bean ladybird
+bean leaf beetle
+bean leaf roller
+bean louse
+bean mildew
+bean mosaic
+bean oil
+bean picker
+bean planter
+bean-planting
+bean-pod borer
+bean pole
+bean polisher
+bean-polishing
+bean pot
+bean rick
+bean rust
+bean-shaped
+bean thresher
+bean tree
+bean trefoil
+bean tressel
+bean vine
+bean weevil
+bear animalcule
+bear brush
+bear bush
+bear cap
+bear cat
+bear caterpillar
+bear clover
+bear corn
+bear cub
+beard grass
+bearding line
+bearding machine
+beard lichen
+beard moss
+beard plant
+Bear driver
+beard tree
+bearer bar
+bearer-off
+bearer plate
+bearer security
+bear festival
+Bear flag
+bear garden
+bear grape
+bear grass
+bear huckleberry
+bear hug
+bearing arrow
+bearing bar
+bearing block
+bearing bow
+bearing brass
+bearing cloth
+bearing door
+bearing gear
+bearing metal
+bearing neck
+bearing note
+bearing pile
+bearing plate
+bearing rein
+bearing ring
+bearing robe
+bearing timber
+bear-lead
+bear leader
+bear mat
+bear moss
+bearnaise sauce
+bear oak
+bear pig
+bear pit
+bear plum
+bear skeiters
+bearskin gray
+bearskin jobber
+Bear state
+bear trap
+bear-trap dam
+bear warden
+bear whortleberry
+beast epic
+beast fable
+beast fly
+beast god
+beast tale
+beat block
+beat board
+beater-out
+beater press
+beaters-up
+beater-up
+beating machine
+beating orders
+beating reed
+beat note
+beat pin
+beat reception
+beatrix antelope
+beat tone
+beat-up
+Beau brummell
+Beaufort myrtle
+beau ideal
+beau-idealize
+beau monde
+beaumont root
+beau-pleader
+beauty-beaming
+beauty-berry
+beauty-blind
+beauty-blooming
+beauty-blushing
+beauty-breathing
+beauty-bright
+beauty-clad
+beauty contest
+beauty culture
+beauty culturist
+beauty-fruit
+beauty-loving
+beauty parlor
+beauty pin
+beauty plaster
+beauty-proof
+beauty shop
+beauty sleep
+beauty spot
+beauty-waning
+beauty wash
+Beauvais tapestry
+beaux ideal
+beaver brown
+beaver cloth
+beaver eater
+beaver finish
+beaver lily
+beaver poison
+beaver rat
+Beaver state
+beaver stones
+beaver top
+beaver tree
+beazor nuts
+Becchi test
+bechamel sauce
+beche-le-mar
+becket bend
+Becke test
+becking hammerman
+Beckmann rearrangement
+Beckmann thermometer
+beckoning crab
+Becquerel rays
+becuiba fat
+bed ale
+Bedaux system
+bed bolt
+bedbug hunter
+bed check
+bed curtain
+bedda nut
+bedding block
+bedding course
+bedding fault
+bedding plane
+Bedford cord
+Bedford limestone
+Bedford shale
+bed fuel
+bed head
+bed hinge
+bed jacket
+bed joint
+bedlam beggar
+bedlam cowslip
+bed lamp
+bed lathe
+bed light
+bed linen
+Bedlington terrier
+bed mold
+bed molding
+bed pad
+bed piece
+bed plane
+bed reach
+bedroom slipper
+bed rot
+bed sandwort
+bed sheet
+bed shoes
+bed-sitting-room
+bed slat
+bedstead fitter
+bedstead wrench
+bed steps
+bed stone
+bedstraw bellflower
+bed timber
+bedtime story
+bed tray
+bed vein
+bed warmer
+bed-wetting
+be-east
+bee balm
+bee beetle
+bee bird
+bee block
+bee brush
+bee-butt
+bee candy
+bee cellar
+beech agaric
+beech cherry
+beech coal
+beech family
+beech fern
+beech-green
+beech leaf snake
+beech marten
+beech mast
+beechnut oil
+beech oil
+beech-seedling mildew
+beech tree
+beech wheat
+beechwood creosote
+bee eater
+bee escape
+beef apple
+beef-brained
+beef cattle
+beef dodger
+beef-eating
+bee feed
+beef extract
+beef-faced
+beef ham
+beef juice
+bee fly
+beef marrow
+beefsteak fungus
+beefsteak geranium
+beefsteak plant
+beefsteak saxifrage
+beef stearin
+beef-suet tree
+beef tea
+beef-witted
+beef-wittedly
+beef-wittedness
+beefwood family
+bee glue
+bee gum
+bee hawk
+bee-headed
+beehive coke
+beehive house
+beehive kiln
+beehive oven
+beehive-shaped
+beehive shelf
+Beehive state
+beehive tomb
+bee killer
+bee kite
+bee larkspur
+bee laurel
+bee-loud
+bee louse
+bee martin
+bee milk
+bee moth
+beena marriage
+bee nettle
+bee orchis
+bee plant
+beer barrel
+beer bottle
+beer bottler
+beer brewer
+beer cellar
+beer chiller
+beer drinker
+beer engine
+beer fall
+beer gallon
+beer garden
+beer glass
+beer grains
+beer heart
+beer keg
+beer money
+beer mug
+beer pump
+beer scale
+beer stone
+beer vat
+beer vinegar
+beer yeast
+bee scap
+bee smoker
+bee space
+beeswax flint
+beet army worm
+beet blight
+beet blocker
+beet greens
+beet heart rot
+beet leafhopper
+beetle brow
+beetle-browed
+beetle-green
+beet lifter
+beetling machine
+beet puller
+bee tree
+beet root
+beet rot
+beet scab
+beet sugar
+beet webworm
+bee wine
+bee wolf
+before-cited
+before-created
+before-delivered
+before-going
+before-known
+before-mentioned
+before-named
+before-noticed
+before-recited
+before-said
+before-tasted
+before-thought
+before-told
+before-warned
+before-written
+beggar boy
+beggar brushes
+beggar girl
+beggar-lice
+beggar maid
+beggar-my-neighbor
+beggar-patched
+beggar-ticks
+begging hermits
+begonia family
+begonia rose
+behavior psychology
+behen oil
+behenolic acid
+Behistun inscription
+belaying pin
+Belgaum walnut
+belladonna lily
+belladonna ointment
+bell-alarm switch
+bell animalcule
+bell arch
+bell beaker
+bell-bearer
+bell borer
+bell-bottomed
+bell buoy
+bell button
+bell cage
+bell canopy
+bell caster
+bell casting
+bell chasuble
+bell chime
+bell chuck
+bell cord
+bell cot
+bell crank
+bell-cranked
+bell crater
+bell-crowned
+bell deck
+Belleek ware
+Belle isle cress
+Bellerophon limestone
+belles-lettres
+bell-faced
+bell-flowered
+bellflower family
+bell founder
+bell founding
+bell gable
+bell gamba
+bell glass
+bell harp
+bell heather
+bell-hooded
+bell horse
+belli causa
+bell jar
+bell kite
+bell-less
+bell-like
+bell ling
+bell loft
+bell magpie
+bell mare
+bell metal
+bell-metal ore
+bell moth
+bell-nosed
+bell olive tree
+bellows blower
+bellows boy
+bellows engine
+bellows fish
+bellows mender
+bellows pneumatic
+bellows treader
+bell pepper
+bell polyp
+bell punch
+bell push
+bell ringer
+bell ringing
+bell rope
+bell scraper
+bell screw
+bell-shaped
+Bell system
+bell tent
+bell thistle
+bell tower
+bell transformer
+bell trap
+bell tree
+bell-up
+bell vine
+bell wire
+belly-beaten
+belly-blind
+belly-bound
+belly brace
+belly button
+belly-devout
+belly doublet
+belly-fed
+belly friend
+belly-god
+belly-gulled
+belly guy
+belly-laden
+belly-naked
+belly offal
+belly-pinched
+belly-proud
+belly rail
+belly roll
+belly-sprung
+belly stay
+belly truss
+belly worshiper
+belly-worshiping
+belt awl
+belt carrier
+belt clamp
+belt conveyer
+belt-coupled
+belt coupler
+belt course
+belt cutter
+belt-cutting
+belt-driven
+belt-folding
+belt fork
+belt hoist
+belt idler
+belt insulation
+belt knitter
+belt lacing
+belt line
+belt pulley
+belt punch
+belt railroad
+belt-repairing
+belt sander
+belt-sanding
+belt saw
+Belt series
+belt-sewing
+belt shifter
+belt shipper
+belt slip
+belt speeder
+belt tenter
+belt-tightening
+bench clamp
+ben chervil
+bench-hardened
+bench hardening
+bench holdfast
+bench hook
+bench key
+bench-kneed
+bench knife
+bench lathe
+bench-legged
+bench-made
+bench mark
+bench plane
+bench press
+bench root
+bench scales
+bench show
+bench stamper
+bench stop
+bench strip
+bench table
+bench terrace
+bench tester
+bench warmer
+bench warrant
+bench winder
+Ben day process
+Bendigeit vran
+bending moment
+bending press
+bending punch
+bending shackle
+bending works
+Bendix drive
+bend leather
+bend pipe
+bend sinister
+bendy tree
+bendy-wavy
+beneficiary heir
+benefit association
+benefit club
+benefit society
+Bengal catechu
+Bengal gram
+Bengal grass
+Bengal hemp
+Bengal isinglass
+Bengal light
+Bengal lily
+Bengal madder
+Bengal monkey
+Bengal quince
+Bengal root
+Bengal rose
+Bengal sage
+Bengal silk
+Bengal stripes
+Bengal tiger
+Benguella current
+Benham disk
+Beni abbas
+Beni amer
+Beni-israel
+benjamin bush
+benjamin tree
+Benkulen clove
+Benkulen tea
+benne oil
+benneting time
+benni cake
+Bennington pottery
+ben nut
+ben oil
+Benoist scale
+Ben-oni
+ben-teak
+bent grass
+Bentinck boom
+Bentinck shrouds
+bent land
+bent-taildog
+benzal chloride
+benzene hexachloride
+benzene nucleus
+benzene ring
+benzene series
+benzidine colors
+benzidine dye
+benzidine rearrangement
+benzine cup
+benzo fast scarlet
+benzoic acid
+benzoic aldehyde
+benzoic sulphinide
+benzol distiller
+benzol extractor
+benzo orange
+benzo paradiazine
+benzo paroxazine
+benzoyl acetyl peroxide
+benzoyl chloride
+benzoyl green
+benzoyl hydride
+benzyl alcohol
+benzyl benzoate
+benzyl bromide
+benzyl chloride
+benzyl cyanide
+benzyl fumarate
+benzyl succinate
+berberine tree
+berberonic acid
+Berea grit
+Berea sandstone
+berg adder
+bergamot camphor
+bergamot mint
+bergamot oil
+berg crystal
+Berg damara
+berg ice
+Bergius process
+berg till
+Bering sea culture
+Berkefeld filter
+Berlin black
+Berlin blue
+Berlin canvas
+berline-landaulet
+berlin eye
+Berlin glove
+Berlin green
+berlin head
+Berlin iron
+Berlin kettle
+Berlin papyri
+Berlin porcelain
+Berlin shop
+Berlin ware
+Berlin warehouse
+Berlin wool
+Berlin work
+Bermuda arrowroot
+Bermuda berry
+Bermuda buttercup
+Bermuda catfish
+Bermuda cedar
+Bermuda chub
+Bermuda cress
+Bermuda flag
+Bermuda grass
+Bermuda iris
+Bermuda juniper
+Bermuda lily
+Bermuda-lily disease
+Bermuda maidenhair
+Bermuda mulberry
+Bermuda olivewood bark
+Bermuda onion
+Bermuda potloo-cedar
+Bermuda shilling
+Bermuda snowberry
+Bern bureau
+bernicle goose
+berry alder
+berry-bearing
+berrybone fish
+berry-brown
+berry cone
+berry-formed
+berry-on-bone
+berry patch
+berry pepper
+berry pie
+berry-shaped
+berry tree
+Bersag horn
+berth cargo
+berth deck
+Bertillon system
+Bertrand curves
+Bertrand lens
+beryl blue
+beryl-green
+beryllium oxide
+besom moss
+Bessel functions
+Bessemer converter
+Bessemer copper
+Bessemer iron
+Bessemer process
+Bessemer steel
+Bessy cerka
+best-able
+best-abused
+best-accomplished
+best-agreeable
+best-armed
+best-ball foursome
+best-ball match
+best-beloved
+best-bred
+best-built
+best-clad
+best-conditioned
+best-conducted
+best-considered
+best-consulted
+best-cultivated
+best-dressed
+best-established
+best-esteemed
+best-formed
+best-graced
+best-grounded
+best-hated
+best-humored
+best-informed
+best-intentioned
+best-known
+best-laid
+best-learned
+best-liked
+best-loved
+best-made
+best-managed
+best-meaning
+best-meant
+best-minded
+best-natured
+best-nourishing
+best-paid
+best-paying
+best-pleasing
+best-preserved
+best-principled
+best-read
+best-resolved
+best-selling
+best-sighted
+best-skilled
+best-tempered
+best-trained
+beta brass
+beta-eucaine
+beta function
+beta-glucose
+beta iron
+beta-naphthol
+beta-naphthyl
+beta-naphthyl benzoate
+beta-naphthyl salicylate
+beta-orcin
+beta-orcinol
+beta particle
+beta radiator
+beta ray
+beta test
+betel nut
+betel palm
+betel pepper
+betel phenol
+bete noire
+Bethlehem sage
+better-advised
+better-affected
+better-balanced
+better-becoming
+better-behaved
+better-born
+better-bred
+better-considered
+better-disposed
+better-dressed
+better-humored
+better-informed
+better-knowing
+better-known
+better-liked
+better-liking
+better-meant
+betterment tax
+better-natured
+better-omened
+better-principled
+better-regulated
+better-seasoned
+better-taught
+better-witted
+betting machine
+Betts process
+Betty lamp
+betula camphor
+between decks
+bevel edge
+bevel-edged
+bevel gauge
+bevel gear
+bevel gearing
+beveling edge
+bevel pinion
+bevel protractor
+bevel siding
+bevel square
+bevel washer
+bevel wheel
+Bewcastle cross
+bez antler
+bezoar antelope
+bezoar goat
+bezoar mineral
+bezoar stone
+Bezold-brucke effect
+bez tine
+B-flat
+B-flat major
+B-flat minor
+Bhutan cypress
+Bhutan pine
+bhut-bali
+bibble-babble
+bi-bivalent
+Bible box
+Bible christians
+Bible clerk
+Bible communism
+Bible oath
+Bible paper
+Bible society
+bib nozzle
+bib pout
+bicarbonate of soda
+Bice blue
+bice green
+bichromate cell
+bichromate filter
+Bickford fuse
+bicuspid valve
+bicycle chain
+bid-a-bid
+bid ale
+bid bond
+biddery ware
+bidding prayer
+biddy-bid
+biddy-biddy
+bid euchre
+biding place
+bid prayer
+bid price
+Biebrich scarlet
+Bielo-russian
+bier right
+bifurcation theory
+big-antlered
+big-armed
+big-bearded
+big-bellied
+Big bend state
+big bluestem
+big-bodied
+big-boned
+big-bosomed
+big-breasted
+big-bulked
+big-chested
+big-cone pine
+big-cone spruce
+big-eared
+Bigelow willow
+big-endian
+Big-endian
+big-eyed
+big-footed
+Big four yellow
+big-framed
+big-gaited
+big-handed
+big-headed
+big-hoofed
+Big injun sand
+big-jawed
+big-leaf ivy
+big-leaf laurel
+big-leaf maple
+big league
+big-leaguer
+big-leaved
+Big lime
+biglip sucker
+big-looking
+big-name
+big-nosed
+big-souled
+big-sounding
+big-swollen
+big-time
+big-timer
+big-voiced
+big-waisted
+bihar tree
+bi-iliac
+bi-ischiadic
+bi-ischiatic
+Bilbao glass
+bile acid
+bile cyst
+bile duct
+bile pigment
+bile salt
+bile vessel
+bilge block
+bilge board
+bilge coad
+bilge keel
+bilge keelson
+bilge log
+bilge piece
+bilge pump
+bilge saw
+bilge strake
+bilge water
+bilge ways
+Bilgram diagram
+biliment lace
+bill book
+bill broker
+bill case
+Bill chamber
+bill clerk
+bill collector
+bill discounter
+bill discounting
+billet boy
+billet breaker
+billet chipper
+billet cutter
+billet-doux
+billet heater
+billet man
+billet piler
+billet rolls
+billets-doux
+billet wheeler
+billet worker
+bill file
+billiard ball
+billiard cloth
+billiard cue
+billiard green
+billiard match
+billiard player
+billiard room
+billiard table
+billing machine
+billion-dollar grass
+billow cloud
+bill-patched
+Billy blind
+Billy brighteye
+billy-button
+billy check
+Billy clipper
+billy fairplay
+billy gar
+billy gate
+billy goat
+billy-goat weed
+billy owl
+billy playfair
+billy tea
+Billy webb
+Biltmore ash
+Biltmore stick
+Bimbli hemp
+bin-burn
+Binche lace
+bind day
+binder board
+binder course
+binder pulley
+binder twine
+binding course
+binding edge
+binding post
+binding rafter
+binding receipt
+binding screw
+binding tape
+binding twine
+bindle stiff
+bind rail
+bindweed nightshade
+Binet age
+Binet scale
+Bingley terrier
+binnacle list
+binodal quartic
+bio-aeration
+bio-assay
+bio-economic
+bio-electric
+bio-electrogenesis
+bio-energetics
+biological method
+biological product
+biological species
+biological stain
+biological supplies
+bio-osmosis
+bio-osmotic
+biphenyl rearrangement
+birch-bark call
+birch-bark oil
+birch beech
+birch beer
+birch borer
+birch camphor
+birch family
+birch-leaf mahogany
+birch-leaf skeletonizer
+birch oil
+birch partridge
+birch skeletonizer
+birch-tar oil
+birch wine
+bird augury
+bird-batting
+bird bell
+bird bolt
+bird brier
+bird cactus
+bird cage
+bird cherry
+Bird day
+bird dog
+bird duffer
+bird eagles
+bird-egg pea
+bird eye
+bird-eyed
+bird-faced
+bird fancier
+bird-fingered
+bird flower
+bird fly
+bird font
+bird food
+bird-foot
+bird grape
+bird grass
+birding piece
+bird-in-the-bush
+bird knotgrass
+bird life
+bird louse
+bird malaria
+bird mite
+bird-nest
+bird net
+bird pepper
+bird pest
+bird plant
+bird pox
+bird preserver
+bird rattle
+bird refuge
+bird-ridden
+bird sanctuary
+birdseed grass
+birdseed rape
+bird shop
+bird shot
+birds-in-the-bush
+bird skin
+bird snake
+bird song
+bird spider
+bird stuffer
+bird thistle
+bird tick
+bird vetch
+bird whistle
+bird-witted
+Birkeland-eyde process
+Birmingham caucus
+Birmingham economists
+Birmingham school
+Birmingham wire gauge
+birth canal
+birth control
+birth controller
+birth date
+birthday cake
+birthday suit
+birth flower
+birth gift
+birth hour
+birth month
+birth name
+birth pain
+birth palsy
+birth pangs
+birth phantasy
+birth rate
+birth sin
+birth theory
+birth throe
+birth trauma
+birthwort family
+birth year
+Biscay green
+biscuit bag
+biscuit baker
+biscuit baking
+biscuit beetle
+biscuit box
+biscuit-brained
+biscuit china
+biscuit clay
+biscuit-colored
+biscuit cutter
+biscuit drawer
+biscuit fire
+biscuit fireman
+biscuit firing
+biscuit kilnman
+biscuit leaves
+biscuit oven
+biscuit painter
+biscuit pan
+biscuit plant
+biscuit porcelain
+biscuit pottery
+biscuit-shaped
+biscuit ware
+biscuit warehouse
+biscuit weevil
+biscuit worm
+bisecting compass
+bisecting dividers
+bishop bird
+bishop coadjutor
+bishop cotton
+bishop pine
+bishop ray
+bishop sleeve
+bishop stool
+bishop suffragan
+Bismarck brown
+bismuth blende
+bismuth glance
+bismuth ocher
+bismuth oxychloride
+bismuth oxynitrate
+bismuth spar
+bismuth subchloride
+bismuth subnitrate
+bismuth tribromphenate
+bismuth white
+bismuth yellow
+bismuthyl chloride
+Bissell truck
+bister green
+bitch chain
+bite-tongue
+biting angle
+bit key
+bito tree
+bit pincers
+bitten-leaf disease
+bitter almond
+bitter-almond oil
+bitter-biting
+bitter-end
+bitter-ender
+bitter-enderism
+bitter orange
+bitter-orange oil
+bitter-rinded
+bitter-sweeting
+bitter-tasting
+bitter-tongued
+bitt pin
+bitumen process
+bit-wise
+biuret reaction
+biuret test
+blab school
+black-and-tan
+black-and-white
+black-aproned
+black-a-visaged
+black-a-vised
+black-backed
+black-banded
+black-bark pine
+black-bearded
+black-bellied
+black bent
+black-berried
+blackberry bark
+blackberry lily
+blackberry token
+black-billed
+blackbird bindweed
+black-blooded
+black-blue
+black-bodied
+black-boding
+black-bordered
+black-boughed
+blackboy gum
+black-breasted
+black-browed
+black-brown
+black-bulb thermometer
+black-bundle disease
+black-capped
+Black cayuga
+black-chinned
+black-clad
+black-coated
+Black code
+black-colored
+black-cornered
+Black country
+black-crested
+black-crowned
+black currant
+black-currant rust
+Black current
+black-eared
+black-ears
+black-edged
+black eye
+black-eye bean
+black-eyed
+black-eye sunfish
+black-faced
+Black-faced highland
+black-favored
+black-feathered
+black-figured
+black-fin snapper
+blackfish oil
+black-footed
+black-fruited
+black-gowned
+black-hafted
+black-haired
+Black hand
+blackhead disease
+black-headed
+blackhead grass
+blackhead minnow
+blackheart plover
+black heat
+black-hilted
+black-hooded
+black-hoofed
+blackjack pine
+blackland plow
+black-legged
+black-lidded
+black-lipped
+black list
+black-looking
+black-maned
+black-margined
+black-market
+black marketeer
+black marketer
+black-mouthed
+black-necked
+black-nosed
+black-out
+black-peopled
+black-plumed
+black-red
+black-robed
+black-rooted
+black rot
+black sand
+black-sander
+black scoter
+Black shirt
+black-shouldered
+black-skinned
+blacksmith welding
+black spot
+black-spot canker
+black-spotted
+black-stoled
+blackstrap molasses
+black-tailed
+black-throated
+black-toed
+black-tongued
+black-tressed
+black-tufted
+black-varnish tree
+black-veiled
+black-visaged
+Blackwall hitch
+blackwater fever
+Blackwater state
+black-whiskered
+blad apple
+bladder campion
+bladder catchfly
+bladder cherry
+bladder fern
+bladder fucus
+bladder green
+bladder herb
+bladder kelp
+bladder ketmie
+bladdernut family
+bladder plum
+bladder sedge
+bladder senna
+bladder snout
+bladder tangle
+bladder tree
+bladder worm
+bladderwort family
+bladder wrack
+blade apple
+blade buffer
+blade harrow
+blade-point
+blanc fixe
+Blanchard lathe
+blanch farm
+Blanch lion
+Blanch lyon
+blanco perch
+blanket alga
+blanket ballot
+blanket binder
+blanket binding
+blanket cloth
+blanket deposit
+blanket fish
+blanket holder
+Blanket indian
+blanket leaf
+blanket mortgage
+blanket moss
+blanket policy
+blanket rate
+blanket roll
+blanket scum
+blanket sheet
+blanket stiff
+blanket stitch
+blanket washer
+blanket weaver
+blanket weaving
+blankety blank
+blank-eyed
+blanking die
+blanking press
+blanking punch
+blank-looking
+blank-minded
+blast bloomery
+blast-borne
+blast engine
+blast fan
+blast furnace
+blasting cap
+blasting cartridge
+blasting circuit
+blasting detonator
+blasting fuse
+blasting gelatin
+blasting machine
+blasting mat
+blasting needle
+blasting oil
+blasting paper
+blasting powder
+blasting spoon
+blasting tools
+blasting tube
+blast lamp
+blast pipe
+blast roasting
+blatti family
+blaze current
+bleaching clay
+bleaching croft
+bleaching engine
+bleaching field
+bleaching green
+bleaching ground
+bleaching powder
+bleaching tank
+bleach liquor
+bleach process
+bleach wax
+blear-eyed
+blear-eyedness
+blear-witted
+bleary-eyed
+bleeding disease
+bleeding heart
+bleeding-heart pigeon
+blending inheritance
+blend-word
+Blenheim spaniel
+bles mole
+blight canker
+blindfold chess
+blind-loaded
+blind-nail
+blind pig
+blind-pigger
+blind-pigging
+blind-punch
+blind-stamp
+blind-stamped
+blind stamping
+blind-tool
+blind-tooled
+blind tooling
+blind-your-eyes
+blink beer
+blink comparator
+blinker lamp
+blinker tube
+blink-eyed
+blink microscope
+blister beetle
+blister blight
+blister bush
+blister canker
+blister cone
+blister copper
+blister flower
+blister fly
+blister mite
+blister pearl
+blister plant
+blister plaster
+blister rust
+blister spot
+blister steel
+blithe-looking
+bloat clover
+bloat colic
+bloater whitefish
+bloat herring
+blobber lip
+blobber-lipped
+blockade-runner
+blockade-running
+block anesthesia
+block ball
+block bond
+block book
+block booking
+block brake
+block-caving
+block chain
+block chords
+block coal
+block coefficient
+block colors
+block core
+block diamond
+blocked-out
+blocker-out
+block faulting
+block foot
+block front
+block furnace
+blockhead board
+block hole
+block-in-course bond
+blocking condenser
+blocking course
+blocking drive
+blocking hammer
+blocking press
+blocking process
+block irrigation
+block lava
+block letter
+block line
+block mold
+block mountain
+block pattern
+block plan
+block plane
+block print
+block-printed
+block printing
+block punch
+block rate
+block-saw
+block signal
+block signaling
+block-signal system
+block sugar
+block system
+block teeth
+block tin
+block vote
+blond-haired
+blood albumin
+blood-albumin glue
+blood baptism
+blood-bedabbled
+blood-bespotted
+blood-besprinkled
+blood blister
+blood-boltered
+blood bond
+blood-bought
+blood bread
+blood brother
+blood brotherhood
+blood carcake
+blood cast
+blood cell
+blood-cemented
+blood clam
+blood clot
+blood-colored
+blood-consuming
+blood corpuscle
+blood count
+blood covenant
+blood crisis
+blood crystals
+blood culture
+blood cup
+blood-defiled
+blood-discolored
+blood disease
+blood disk
+blood dock
+blood donor
+blood-drenched
+blood-drunk
+blood dust
+blood-dyed
+blood-extorting
+blood-faced
+blood feud
+blood-filled
+blood fine
+blood-fired
+blood-flecked
+blood flour
+blood fluke
+blood-frozen
+blood geranium
+blood gill
+blood gland
+blood glue
+blood groove
+blood group
+blood grouping
+blood-gushing
+blood heat
+blood horse
+blood-hot
+blood-hued
+blood islands
+blood lily
+blood-loving
+blood lust
+blood-lye salt
+blood-mad
+blood mare
+blood meal
+blood mole
+blood money
+blood orange
+blood pheasant
+blood picture
+blood pink
+blood plant
+blood-plashed
+blood plasma
+blood platelet
+blood plum
+blood poisoning
+blood-polluted
+blood-polluting
+blood pressure
+blood pudding
+blood rain
+blood-raw
+blood-red
+blood refiner
+blood relation
+blood relationship
+blood relative
+blood revenge
+blood rite
+blood royal
+blood sacrifice
+blood sausage
+blood-scrawled
+blood seller
+blood serum
+blood-shaken
+blood-sized
+blood spavin
+blood sport
+blood spot
+blood-stirring
+blood-stirringness
+blood strain
+blood stream
+blood sugar
+blood-swelled
+blood-swoln
+blood test
+blood-tinctured
+blood transfusion
+blood tree
+blood type
+blood typing
+blood-vascular
+blood vengeance
+blood vessel
+blood vine
+blood-warm
+blood-won
+bloodwort family
+bloody-back
+bloody-eyed
+bloody-faced
+bloody-handed
+bloody-hearted
+bloody-minded
+bloody-mindedness
+bloody-mouthed
+bloody-nosed
+bloody-red
+bloody-sceptered
+bloody-veined
+bloom boy
+bloom bud
+bloom-colored
+bloom conveyer
+bloom cutter
+bloomer pit
+bloom heater
+bloom hook
+blooming mill
+blooming rolls
+bloom loader
+bloom mill
+bloom oil
+bloom poison
+bloom runner
+bloom saw
+Bloomsbury group
+bloom shearer
+bloom-shearing
+bloom shears
+bloom side
+bloom slinger
+bloom smithy
+bloom swinger
+bloom tongs
+bloom yard
+bloomy-down
+blossom-bearing
+blossom-billed
+blossom blight
+blossom-bordered
+blossom bud
+blossom-crested
+blossom-end rot
+blossom-faced
+blossom-headed
+blossom-laden
+blossom-nosed
+blossom withy
+blotch-shaped
+blotting book
+blotting case
+blotting pad
+blotting paper
+blow accordion
+blow case
+blower-up
+blowing charge
+blowing cylinder
+blowing engine
+blowing fan
+blowing furnace
+blowing iron
+blowing machine
+blowing mold
+blowing pipe
+blowing tube
+blow milk
+blown-out
+blowout grass
+blowout magnet
+blowpipe analysis
+blowpipe reaction
+blow post
+blow snake
+blow-through
+blow valve
+blubber cask
+blubber-cheeked
+blubber chopper
+blubber-fed
+blubber fork
+blubber grass
+blubber lamp
+blubber oil
+blubber ship
+blubber spade
+blubber stove
+blue-annealed
+blue-aproned
+blue-arc phenomenon
+blue-backed
+blueback mullet
+blueback salmon
+blueback trout
+blue-banded
+blue bed
+blue-bellied
+blue-berried
+blueberry ash
+blueberry cornel
+blueberry maggot
+blueberry root
+blueberry tree
+blue-billed
+blue-black
+blue-blackness
+blue-blind
+blue blindness
+blue blood
+blue-blooded
+blue-bloused
+blue-breasted
+blue-breasted darter
+blue-checked
+blue-cheeked
+bluecoat boys
+blue-coated
+bluecoat school
+blue-colored
+blue-crested
+blue-cross
+blue-cross gas
+blue-cross shell
+blue-curls
+blue devil
+blue-devilage
+blue-devilism
+blue dyer
+blue-eared
+blue-eye
+blue-eyed
+blue-faced
+blue-flowered
+blue-footed
+blue-fronted
+blue-glancing
+blue-glimmering
+Bluegrass state
+blue-gray
+blue-green
+blue gum
+blue-gum leaves
+blue-haired
+blue-headed
+bluehead sucker
+blue-hot
+blue iron earth
+bluejack oak
+blue-leaved
+blue-lined
+blue mangler
+blue-mantled
+blue mill
+blue mixer
+blue mold
+blue-molded
+blue-molding
+blue-mottled
+blue-mouthed
+blue-pencil
+blue point
+blue presser
+blue pressman
+blueprint paper
+blue-rayed
+blue-red
+blue ribbon
+blue-ribboner
+blue-ribbonism
+blue-ribbonist
+blue-roan
+blue-rolled
+blue-sailors
+Blue shirt
+blue-sighted
+blue-sky
+blue-slate
+blue-spotted
+blue-stained
+blue star grass
+blue-starry
+blue-stemmed
+blue-striped
+blue-tailed
+blue-throated
+blue-tinted
+blue-tongued
+blue trucker
+blue-veined
+blue-washed
+blue-wattled
+blue-white
+blue-winged
+blue-yellow
+blue-yellow-blind
+blue-yellow blindness
+bluff-bowed
+bluff formation
+bluff-headed
+blunt-angled
+blunt-edged
+blunt-ended
+blunt-faced
+blunt-headed
+blunt-leaved
+blunt-lobed
+blunt-nosed
+blunt-pointed
+blunt-spoken
+blunt-witted
+blur circle
+blush-colored
+blush-compelling
+blush-faced
+blush rose
+blush-suffused
+blush-tinted
+Blythe process
+B major
+B mi
+B minor
+B natural
+boa constrictor
+board check
+board chopper
+board cloth
+board combiner
+board company
+board cover
+boarder-up
+board foot
+boarding nettings
+boarding officer
+boarding-out system
+boarding pike
+boarding school
+board liner
+board lot
+board maker
+board measure
+boar dog
+board rack
+board room
+board rubber
+board rule
+board scale
+board school
+board wages
+board work
+board worker
+boar grunt
+boar hunt
+boar-hunting
+boar stag
+boar thistle
+boar tree
+boasting chisel
+boat ax
+boat boy
+boat bridge
+boat chock
+boat club
+boat crane
+boat deck
+boat-green
+boat hand
+boat hire
+boat hook
+boat line
+boat livery
+boat-lowering
+boat pan
+boat race
+boat seaplane
+boat-shaped
+boat steerer
+boat-tailed
+boat train
+bobbery pack
+bobbin barreler
+bobbin board
+bobbin borer
+bobbin boy
+bobbin carrier
+bobbin chucker
+bobbin cleaner
+bobbin filler
+bobbin lace
+bobbin maker
+bobbin making
+bobbin net
+bobbin polisher
+bobbin riveter
+bobbin shifter
+bobbin sinker
+bobbin stripper
+bobbin tester
+bobbin tier
+Bobby joe
+bobby pin
+bobby-socker
+bobby socks
+bobby-soxer
+bob-cherry
+bob-haired
+bob runner
+bob skate
+bobtail drawbridge
+bobtail flush
+bobtail straight
+bob veal
+bob wheel
+bob wig
+bock beer
+bodhi tree
+bodies seven
+bodkin beard
+body armor
+body axis
+body bag
+body blight
+body blow
+body brace
+body-breaking
+Body brussels
+body cavity
+body cell
+body-centered
+body centrode
+body check
+body cloth
+body clothes
+body clothing
+body coat
+body color
+body constituent
+body corporate
+body curer
+body designer
+body ease
+body erector
+body fat
+body finisher
+body fluid
+body former
+body garment
+body girth
+body gripper
+body harness
+body heat
+body height
+body ill
+body ironer
+body-killing
+body-line bowling
+body linen
+body lining
+body loop
+body louse
+body-mind
+body mounter
+body pain
+body physician
+body pigment
+body plague
+body plan
+body plasm
+body politic
+body post
+body scent
+body servant
+body slave
+body snatcher
+body snatching
+body stealing
+body surface
+body track
+body type
+body varnish
+body washer
+body weight
+body white
+body whorl
+bog arum
+bog asphodel
+bog bean
+bog bilberry
+bog birch
+bog blitter
+bog blueberry
+bog-bred
+bog bull
+bog bulrush
+bog butter
+bog cotton
+bog cutting
+bog deal
+bog-down
+bog earth
+bog-eyed
+bog featherfoil
+bog fern
+bog gale
+bog garden
+bog gentian
+bog glede
+boggle-dy-botch
+bog grass
+bog hay
+Boghead coal
+bog hop
+bogie engine
+bogie roll
+bog iron
+bog iron ore
+bog jumper
+bog lemming
+bog lime
+bog manganese
+bog mine
+bog mold
+bog moss
+bog myrtle
+bog nut
+bog oak
+Bogodo lama
+bog onion
+bog orchis
+bog ore
+bog peat
+bog pimpernel
+bog pine
+bog pink
+bog plant
+bog rhubarb
+bog rose
+bog rosemary
+bog rush
+bog spavin
+bog spruce
+bog stalker
+bog star
+bog stitchwort
+bog strawberry
+bog timber
+bog torch
+bog trefoil
+bog turf
+bog violet
+bog whortleberry
+bog willow
+Bohemian-tartar
+bohun upas
+boiler alarm
+boiler blower
+boiler cleaner
+boiler-cleaning
+boiler compound
+boiler coverer
+boiler fitter
+boiler fixer
+boiler flue
+boiler head
+boiler inspector
+boiler iron
+boiler-off
+boiler-out
+boiler plate
+boiler room
+boiler scale
+boiler shell
+boiler shop
+boiler tenter
+boiler-testing
+boiler tube
+boiler tuber
+boiler-washing
+boiling-house
+boiling point
+boiling-point constant
+boiling process
+boiling spring
+boiling stone
+boil smut
+Bojig-ngiji
+bold-beating
+bold-face
+bold-faced
+bold-facedly
+bold-facedness
+bold-following
+bold-looking
+bold-minded
+boldo family
+bold-spirited
+bollard timber
+Bolle poplar
+boll hull
+boll rot
+boll weevil
+bolly cotton
+bolo-bolo
+Bologna flask
+Bologna phosphorus
+Bologna sausage
+Bologna stone
+bolster plate
+bolt action
+bolt auger
+bolt chisel
+bolt-cutting
+bolter-down
+bolters-down
+bolters-up
+bolter-up
+bolt forger
+bolt-forging
+bolt hook
+bolting cloth
+bolting house
+bolting hutch
+bolting tub
+bolt knife
+Bolton counts
+Bolton sheeting
+bolt-pointing
+bolt-shaped
+bolt threader
+bolt-threading
+bolt-turning
+bolt upright
+bolt upsetter
+bolus alba
+bomah nut
+bomahnut oil
+bombaje palm
+bombanassa palm
+bombardier beetle
+bombardment squadron
+Bombax cotton
+Bombay arrowroot
+Bombay catechu
+Bombay ceiba
+Bombay duck
+Bombay furniture
+Bombay hemp
+Bombay mace
+Bombay mastic
+Bombay merchant
+Bombay seed
+Bombay senna
+Bombay sumbul
+bomb bay
+bomb calorimeter
+bombing machine
+bombing sap
+bomb ketch
+bomb lance
+bomb plane
+bomb thrower
+bomb-throwing
+bomb tube
+bomb vessel
+bona activa
+bon-accord
+bonace tree
+bonaci arara
+bonaci cardenal
+bonaci gato
+bonae fidei
+bona fide
+bona fide holder
+bona fide purchaser
+Bon ami limestone
+Bonanza state
+bona roba
+bonaventure mizzen
+bonbon spoon
+bon chretien
+bond coat
+bond course
+bond debt
+bond paper
+bond timber
+bonduc nut
+bone-ace
+bone ash
+bone bed
+bone black
+bone bleacher
+bone boiler
+bone-breaking
+bone breccia
+bone-bred
+bone brown
+bone cartilage
+bone cell
+bone char
+bone china
+bone corpuscle
+bone crusher
+bone-crushing
+bone cutter
+bone-dry
+bone-dryness
+bone dust
+bone earth
+bone-eater
+bone fat
+bone forceps
+bone glass
+bone grinder
+bone-grinding
+bone-hard
+bone heap
+bone house
+bone-idle
+bone jack
+bone lace
+bone-laced
+bone meal
+bone oil
+bone pain
+bone phosphate
+bone-piercing
+bone pitch
+bone plombe
+bone polisher
+bone porcelain
+bone pot
+bone precipitate
+bone-rotting
+bone shark
+bone sorter
+bone spavin
+bone spirit
+bone tallow
+bone tankage
+bone tar
+bone-tired
+bone turquoise
+bone waste
+bone whale
+bone-white
+bone yard
+bon mot
+Bonneterre limestone
+bonnet gourd
+bonnet grass
+bonnet-headed
+bonnethead shark
+bonnet laird
+bonnet limpet
+bonnet macaque
+bonnet monkey
+bonnet pepper
+bonnet piece
+bonnet shark
+bonnet shell
+bonnet skate
+bonnet top
+Bon silene
+bons vivants
+bon ton
+bont tick
+bonus system
+bon vivant
+bon voyage
+booby gannet
+booby hatch
+booby hutch
+booby prize
+booby trap
+book account
+book agent
+book canvasser
+book card
+book clamp
+book clasp
+book cloth
+book club
+book collecting
+book collector
+book corner
+book cover
+book credit
+book debt
+book end
+book fair
+book-fed
+book fell
+book-folder
+book gill
+book hand
+book house
+booking clerk
+booking office
+book inventory
+book isinglass
+book jacket
+book knowledge
+book-leaf trachea
+book-learned
+book learning
+booklet leaf
+booklet pane
+book-lined
+book list
+book louse
+book lung
+book machine
+book madness
+book-match
+book-minded
+book muslin
+book name
+book notice
+Book oath
+book packet
+book palm
+book post
+book postage
+book printer
+book printing
+book profit
+book publisher
+book review
+book reviewer
+book reviewing
+book scorpion
+book-sewer
+book-sewing
+bookstall keeper
+book stamp
+book stitcher
+book-stitching
+book support
+book table
+book-taught
+book tile
+book tray
+book truck
+book value
+book wagon
+book-wise
+boom brace
+boom-ended
+boom foresail
+boom hoist
+boom iron
+boom jigger
+boom mainsail
+boom pole
+boom rat
+boom sail
+boom stay
+boom tackle
+boom yard
+boon day
+boon earth
+boon loaf
+boon work
+booster battery
+booster charge
+booster pump
+boot cleaner
+boot-cleaning
+boot closer
+boot cloth
+boot crimp
+boot dressing
+boot hook
+boot ironer
+bootle-blade
+bootleg sucker
+boot needle
+boot polish
+boot polisher
+boot powder
+boot spur
+boot stretcher
+boot top
+boot-topping
+boot tree
+booze fighter
+borage family
+borax bead
+borax carmine
+borax glass
+borax honey
+borax usta
+Bordeaux mixture
+Bordeaux pine
+Bordeaux red
+Bordeaux turpentine
+Bordelaise sauce
+border ground
+border irrigation
+border line
+border pen
+Border pricker
+Border rider
+Border ruffian
+border service
+Border song
+Border state
+border stone
+Border terrier
+Border thief
+Border warden
+Border warrant
+border world
+bord gate
+bore bit
+bore meal
+boring bar
+boring block
+boring head
+boring journal
+boring rod
+boring tool
+boring tube
+Borna disease
+born days
+Borneo camphor
+Borneo rubber
+Borneo tallow
+borning day
+boron carbide
+boron nitride
+borough council
+Borough-english
+borough-holder
+borough reeve
+borracha entrefina
+borracha fina
+borracha grossa
+borrowing days
+borrow pit
+Borstal system
+Boskop skull
+bosom-breathing
+bosom-deep
+bosom-felt
+bosom-folded
+bosom ironer
+bosom maker
+bosom making
+bosom staff
+bosom-stricken
+boss-eyed
+boss plate
+Boston bag
+Boston baked beans
+Botany bay
+Botany bay greens
+Botany bay gum
+Botany card
+Botany wool
+both-handed
+both-handedness
+both-hands
+bo tree
+bottery tree
+bott hammer
+bottle-bellied
+bottle blower
+bottle-blowing
+bottle boot
+bottle brush
+bottle-brush buckeye
+bottle bump
+bottle-butted
+bottle cap
+bottle capper
+bottle-capping
+bottle carrier
+bottle-carrying
+bottle cleaner
+bottle-cleaning
+bottle coaster
+bottle cod
+bottle corker
+bottle-corking
+bottle-fed
+bottle feeding
+bottle fern
+bottle filler
+bottle-filling
+bottle gentian
+bottle glass
+bottle gourd
+bottle grass
+bottle green
+bottle heath
+bottle imp
+bottle jack
+bottle jaw
+bottle kiln
+bottle labeler
+bottle labeling
+bottle mold
+bottle molder
+bottle-nosed
+bottlenose oil
+bottle opener
+bottle ore
+bottle palm
+bottle pool
+bottle rinser
+bottle-rinsing
+bottle screw
+bottle-shaped
+bottle slider
+bottle soaker
+bottle-soaking
+bottle sterilizer
+bottle-sterilizing
+bottle stopper
+bottle swallow
+bottle-tailed
+bottle-tight
+bottle tit
+bottle tree
+bottle washer
+bottle-washing
+bottling works
+bottom boards
+bottom canch
+bottom disease
+bottom drawer
+bottom-dump bucket
+bottom fermentation
+bottom glade
+bottom grass
+bottom heat
+bottom ice
+bottoming hole
+bottoming tap
+bottom land
+bottom plate
+bottom rake
+bottom-road bridge
+bottom rot
+bottom sawyer
+bottom-set
+bottom stope
+bottom tool
+bottom water
+bottom yeast
+botulismus toxin
+boudoir photograph
+bought note
+bouillon cube
+bouillon cup
+bouillon spoon
+boulder bast
+boulder belt
+boulder clay
+boulder fern
+boulder flat
+boulder gravel
+bouldering stone
+Boulder period
+boulder train
+boulevard stop
+bouncing-pin indicator
+boundary point
+boundary rider
+bound bailiff
+bound charge
+bound foot
+bounding bow
+bounty-fed
+bounty jumper
+bounty jumping
+Bourbon cotton
+Bourbon lily
+Bourbon red
+bourbon whisky
+bourdon lace
+Boursault rose
+Bouton dor
+bouton pearl
+Bovey coal
+bow-back
+bow-backed
+bow-beaked
+bow bearer
+Bow-bell
+Bow bells
+bow-bending
+bow brace
+bow cap
+bow chaser
+bow chasing
+Bow china
+bow compass
+bow divider
+bow drill
+bow dye
+bow-dyer
+bowel-hive grass
+Bowen knot
+bower plant
+bow fast
+bow file
+bow hair
+bow hand
+bowhead bird
+bow-houghd
+bowie knife
+bowing acquaintance
+bowing stone
+bow light
+bowline bridle
+bowline cringle
+bowline knot
+bowling alley
+bowling average
+bowling crease
+bowling green
+bowling stump
+bowl-shaped
+bowl spirit
+bow-necked
+bow net
+bow oar
+bow pen
+bow pencil
+bow pulpit
+Bow river series
+bow rudder
+bow saw
+bow-shaped
+bowsprit bed
+bowsprit cap
+bowsprit shroud
+bow stiffener
+Bow street
+Bow street officer
+bowstring beam
+bowstring bridge
+bowstring creeper
+bowstring girder
+bowstring hemp
+bowstring roof
+bowstring truss
+bow thistle
+bow tie
+bow trolley
+bow wave
+bow window
+bow-windowed
+bowwow theory
+box barberry
+box barrage
+box barrow
+box beam
+box bed
+box bill
+box-bordered
+box-branding
+box bridge
+box brier
+box buggy
+box caisson
+box calf
+box camera
+box canyon
+box chisel
+box chronometer
+box chuck
+box-cleating
+box clip
+box cloth
+box coat
+box cooper
+box coot
+box couch
+box coupling
+box coverer
+box-covering
+box crab
+box cutter
+box day
+box dolly
+box drain
+box dresser
+box-edged
+box edging
+box elder
+box-elder aphid
+box-elder bug
+box end
+boxer-off
+boxer-up
+box family
+box frame
+box front
+box gauge
+box girder
+box grave
+box green
+box groove
+box hardening
+box heading
+box hedge
+box hinging
+box holder
+box holly
+box hook
+box house
+box huckleberry
+Boxing day
+boxing glove
+Boxing night
+boxing shutter
+box iron
+box jig
+box key
+box kite
+box-leaved
+box level
+box lid
+box-locking
+box metal
+box midge
+box myrtle
+box nail
+box nailer
+box-nailing
+box nut
+box oak
+box office
+box opener
+box oyster
+box pew
+box plait
+box-plaited
+box plaiter
+box plaiting
+box poison
+box press
+box respirator
+box scald
+box score
+box seat
+box set
+box settle
+box sextant
+box-shaped
+box shook
+box shop
+box shutter
+box sleigh
+box spanner
+box spring
+box stall
+box staple
+box stew
+box stove
+box strap
+box-strapping
+box strike
+box string
+box tail
+box taler
+box tenon
+box toe
+box tool
+box tortoise
+box trap
+box tree
+box-trimming
+box truck
+box-turning
+box wagon
+box wrench
+boyar palm
+boy bishop
+boy scout
+B powder
+B power supply
+B quadrum
+Brabant rose
+brab tree
+brace bit
+brace block
+brace box
+brace bumpkin
+brace comb
+brace game
+brace head
+bracelet tie
+bracelet wood
+brace molding
+brace pendant
+brace piece
+brace root
+brace wrench
+brachialis anticus
+bracken sickness
+bracket capital
+bracket clock
+bracket crab
+bracket foot
+bracket fungus
+bracket plate
+bracket trail
+Bracklesham beds
+bract scale
+Bradley text
+brad punch
+Bragget sunday
+Brahma samaj
+Brahmo samaj
+braid bonnet
+braid fern
+braid wool
+brain-begot
+brain-born
+brain box
+brain-breaking
+brain-bred
+brain cactus
+brain case
+brain cavity
+brain cell
+brain child
+brain coral
+brain-cracked
+brain-crazed
+brain-crumpled
+brain fever
+brain-fever bird
+brain-fevered
+brain-fretting
+brain nerve
+brain power
+brain-purging
+brain sand
+brain-smoking
+brain-spattering
+brain specialist
+brain-spun
+brain stem
+brainstone coral
+brain storm
+brain-strong
+brain-tire
+brain trust
+brain truster
+brain vesicle
+brain wave
+Braj bhasha
+brake assembler
+brake band
+brake bar
+brake beam
+brake block
+brake chain
+brake clevis
+brake compartment
+brake cylinder
+brake drum
+brake examiner
+brake fitter
+brake gear
+brake hanger
+brake horsepower
+brake hose
+brake lever
+brake lining
+brake meter
+brake operator
+brake pedal
+brake pipe
+brake power
+brake repairer
+brake rod
+brake shoe
+brake spring
+brake stripper
+brake tester
+brake-testing
+brake valve
+brake van
+brake wheel
+braking power
+braking ratio
+bramble finch
+bramble rose
+bramble shark
+bramble worm
+bran boil
+branch bank
+branch banking
+branch bar
+branch-bearing
+branch-building
+branch-charmed
+branch-climber
+branch cut
+branch depot
+branch-embellished
+branch gap
+branch grass
+branch herring
+branch mark
+branch point
+branch-rent
+branch-strewn
+branch trace
+brand goose
+brand iron
+brand-new
+brand-newness
+bran drench
+bran duster
+brandy-bottle
+brandy-burnt
+brandy-faced
+brandy mazzard
+brandy mint
+brandy-pawnee
+brandy smash
+brandy snap
+brandy sour
+brank-new
+bran mash
+bran-new
+bran steep
+brant bird
+brant fox
+brant goose
+brant snipe
+brass-armed
+brass band
+brass-bold
+brass-browed
+brass buffer
+brass buttons
+brass-cheeked
+brass-colored
+brass-eyed
+brass finisher
+brass-finishing
+brass-fitted
+brass fitter
+brass-footed
+brass founder
+brass-fronted
+brass-handled
+brass-headed
+brass-hilted
+brass-hooved
+brass-lined
+brass-melting
+brass molder
+brass-mounted
+brass-plated
+brass-renting
+brass-shapen
+brass-smith
+brass spinner
+brass-tipped
+brass turner
+brass-visaged
+brass-working
+brave-horsed
+brave-looking
+brave-minded
+brave-sensed
+brave-showing
+brave-souled
+brave-spirited
+brave-spiritedness
+braze-jointed
+brazen-barking
+brazen-browed
+brazen-clawed
+brazen-colored
+brazen-faced
+brazen-fisted
+brazen-floored
+brazen-footed
+brazen-fronted
+brazen-gated
+brazen-headed
+brazen-hilted
+brazen-hoofed
+brazen-imaged
+brazen-leaved
+brazen-lunged
+brazen-mailed
+brazen-pointed
+Brazil current
+Brazil nut
+Brazil-nut oil
+Brazil red
+Brazil wax
+bread bag
+bread baker
+bread-baking
+bread beetle
+bread corn
+bread crumb
+bread crumber
+bread-crumbing
+bread crust
+bread-crust bomb
+bread cutter
+bread-cutting
+bread-eating
+bread-faced
+bread flour
+bread grain
+bread knife
+bread line
+bread-liner
+bread mold
+bread pan
+bread plate
+bread pudding
+bread rack
+bread sauce
+bread slicer
+bread stick
+breadth extreme
+breadth index
+breadth molded
+bread toaster
+bread tray
+bread tree
+bread wheat
+bread wrapper
+bread-wrapping
+break bean
+breakbone fever
+break-circuit
+breaker card
+breaker-down
+breaker-off
+breaker strip
+breaker-up
+breakfast bacon
+breakfast bell
+breakfast food
+breakfast knife
+breakfast nook
+breakfast plate
+breakfast room
+breakfast set
+breakfast table
+breakfast time
+break flour
+break front
+break-in
+breaking engine
+breaking joint
+breaking load
+breaking piece
+breaking plow
+breaking point
+breaking strength
+break iron
+break jaws
+break joint
+break lathe
+break line
+break pin
+break point
+break-promise
+break shock
+break-through
+breakup switch
+breakup value
+break van
+breast auger
+breast backstay
+breast board
+breast collar
+breast cut
+breast cylinder
+breast-deep
+breast drill
+breast fast
+breast-fed
+breast harness
+breast-high
+breast hoe
+breast hole
+breasting knife
+breast kerchief
+breast knee
+breast laws
+breast line
+breast milk
+breast molding
+breast pang
+breast pocket
+breast pump
+breast-rending
+breast roll
+breast stoping
+breast strap
+breast stroke
+breast tea
+breast wall
+breast wheel
+breastwork log
+breath-bereaving
+breath-blown
+breather pipe
+breath-giving
+breath glide
+breath group
+breathing capacity
+breathing mark
+breathing place
+breathing pore
+breathing space
+breathing spell
+breath-stopping
+breath-sucking
+breath-tainted
+breath-taking
+breech action
+breechblock plunger
+breech bolt
+breech delivery
+breeches buoy
+breeches money
+breeches pipe
+breeching body
+breeching loop
+breeching strap
+breech-loading
+breech mechanism
+breech piece
+breech pin
+breech plug
+breech screw
+breech sight
+breeder tulip
+breeding ground
+breeding sore
+breeze-borne
+breeze box
+breeze burner
+breeze carrier
+breeze-fanned
+breeze filler
+breeze fly
+breeze-lifted
+breeze loader
+breeze oven
+breeze picker
+breeze plant
+breeze riddler
+breeze-shaken
+breeze-swept
+breeze tallyman
+breeze washer
+breeze wheeler
+breeze-wooing
+Bremen blue
+Bremen green
+brent-new
+Bretonne sauce
+breve rest
+bribe broker
+bribe-devouring
+bribe-free
+bribery oath
+bric-a-brac
+bric-a-brackery
+brick arch
+brick archer
+brick ax
+brick-barred
+brick beam
+brick-bound
+brick-building
+brick-built
+brick burner
+brick-burning
+brick carrier
+brick cheese
+brick chipper
+brick chisel
+brick clay
+brick-colored
+brick cutter
+brick-cutting
+brick drier
+brick-drying
+brick dust
+brick-dust deposit
+brick earth
+brick factory
+brick-fronted
+brick-grinding
+brick hammer
+brick-hemmed
+brick hod
+brick machine
+brick machinist
+brick mold
+brick molder
+brick nog
+brick-nogged
+brick nogging
+brick-paved
+brick paver
+brick pointer
+brick press
+brick presser
+brick red
+brick sorter
+brick stamp
+brick stitch
+brick tea
+brick-testing
+brick trimmer
+brick-walled
+brick wheeler
+bride-ale
+bride duck
+bride price
+bridge bar
+bridge bird
+bridge bracket
+bridge circuit
+bridge coupler
+bridge crane
+bridge deck
+bridge engineer
+bridge engineering
+bridge grafting
+bridge guard
+bridge house
+bridge islet
+bridge joint
+bridge lamp
+bridge lock
+bridge money
+bridge passage
+bridge pewee
+bridge piece
+bridge rail
+bridge seat
+bridge stay
+bridge stone
+bridge table
+bridge tower
+bridge train
+bridge wall
+bridge whist
+bridle bar
+bridle bridge
+bridle cable
+bridle chain
+bridle gate
+bridle hand
+bridle iron
+bridle joint
+bridle path
+bridle port
+bridle rein
+bridle rod
+bridle stricture
+bridle tape
+bridle wire
+bridle-wise
+brief bag
+brief case
+brier bamboo
+brier rose
+brier stitch
+brigade major
+brigadier general
+Brigham tea
+bright-bloomed
+bright-cheeked
+bright-colored
+bright-dyed
+bright-eyed
+bright-faced
+bright-featured
+bright-haired
+bright-headed
+bright-hued
+bright-leaved
+bright-line spectrum
+bright-minded
+brightness equation
+brightness temperature
+bright-robed
+bright-spotted
+bright-striped
+bright-studded
+bright-tinted
+bright-witted
+brilliant-cut
+brimstone acid
+brimstone butterfly
+brimstone yellow
+brindled gnu
+brine-bound
+brine-cooler
+brine-cooling
+brine-dripping
+brine fly
+brine gauge
+brine pan
+brine pit
+brine pump
+brine pumper
+brine-pumping
+brine shrimp
+brine-soaked
+brine worm
+bringer-up
+bringing-up
+brisket disease
+bristle cell
+bristle-faced
+bristle fern
+bristle grass
+bristle moss
+bristle picker
+bristle-pointed
+bristle-pointed oat
+bristle rat
+bristle-stalked
+bristle-tailed
+bristle-thighed
+bristle-toothed
+bristle worm
+bristlewort family
+Britannia joint
+britannia metal
+britannia ware
+British-israel
+Brito-icelandic
+Brittany cloth
+broach post
+broach turner
+broad-backed
+broad-based
+broad-beamed
+broad bean
+broad-bean weevil
+broadbill dipper
+broad-billed
+broad-bladed
+broad-blown
+broad-bodied
+broad-bosomed
+broad-bottomed
+broad-boughed
+broad-bowed
+broad-breasted
+broad-brimmed
+broad-built
+broad-chested
+broad-chinned
+broad-crested
+broad-eared
+broad-eyed
+broad-faced
+broad-flapped
+broad-fronted
+broad-gauge
+broad-gauged
+broad-handed
+broad-headed
+broad-hoofed
+broad-horned
+broad jump
+broad jumper
+broadleaf tree
+broad-leaved
+broad-limbed
+broad-lipped
+broad-listed
+broad-margined
+broad-minded
+broad-mindedly
+broad-mindedness
+broad-mouthed
+broad-nosed
+broad-ribbed
+broad-roomed
+broad-set
+broad-shouldered
+broadside aspect
+broad-skirted
+broad-souled
+broad-spoken
+broad-spreading
+broad-sterned
+broad-striped
+broadtail cloth
+broad-tailed
+broad-thighed
+broad-tired
+broad-toed
+broad-wayed
+broad-wheeled
+broad-winged
+broccoli brown
+brock-faced
+brogue hole
+broken arch
+broken-arched
+broken-backed
+broken-bellied
+broken-down
+broken-ended
+broken-footed
+broken-fortuned
+broken-handed
+broken-headed
+broken-hipped
+broken-hoofed
+broken-kneed
+broken-legged
+broken-minded
+broken-mouthed
+broken-nosed
+broken-paced
+broken-shanked
+broken-spirited
+broken wind
+broken-winded
+broken-winged
+brome grass
+bromide paper
+bromine water
+bromoil process
+bromoil transfer
+bronco grass
+bronze-bearing
+bronze-bound
+bronze-brown
+bronze caster
+bronze-casting
+bronze-clad
+bronze-covered
+bronze-foreheaded
+bronze-gilt
+bronze-gleaming
+bronze-golden
+bronze-haired
+bronze-purple
+bronze-shod
+bronze smelter
+bronze-winged
+bronze-yellow
+brood bud
+brood cell
+brood chamber
+brooder house
+brood gemma
+brood matron
+brood nest
+brood pouch
+broody coop
+brook bean
+brook betony
+brook celandine
+brook feather
+brook lamprey
+brook lobelia
+brook mint
+brook pimpernel
+brook runner
+brook silk
+brook sunflower
+brook tongue
+brook trout
+broom birch
+broom brush
+broom clover
+broomcorn millet
+broom crowberry
+broom cypress
+broom goosefoot
+broom grass
+broom handle
+broom heath
+broom hickory
+broom-leaved
+broom millet
+broom moss
+broom palm
+broom pine
+broomrape family
+broom sage
+broom sedge
+broom-sewing
+broomstick marriage
+broom straw
+broom tea tree
+broom toadflax
+broom tops
+broom tree
+broom twine
+broom wattle
+brother-german
+brother-in-law
+brothers-in-law
+B rotundum
+brougham-landaulet
+brow ague
+brow antler
+brow-bent
+brown-armed
+brown-backed
+brown-banded
+brown-barreled
+brown-bearded
+brown bent
+brown-berried
+brown-colored
+brown-complexioned
+browned off
+brown-eyed
+brown-faced
+brown-green
+brown-haired
+brown-headed
+browning solution
+brown-leaved
+brown-locked
+brown-purple
+brown-red
+brown-roofed
+brown rot
+brown-sailed
+brown-skinned
+brown-sleeve
+brown-spotted
+brown-stemmed
+brownstone front
+brown-strained
+brown-tailed
+brown-washed
+brow point
+browsing room
+brow tine
+brow-wreathed
+brumbo pulley
+brunch coat
+brunch-word
+brush apple
+brush ax
+brush back
+brush borer
+brush boring
+brush box
+brush breaker
+brush-breaking
+brush bronzewing
+brush broom
+brush case
+brush cherry
+brush coating
+brush deal
+brush discharge
+brush drag
+brush driller
+brush drilling
+brusher-off
+brusher-up
+brush fashioner
+brush fiber
+brush filler
+brush-footed
+brush hand
+brush harrow
+brush heap
+brush holder
+brush hook
+brush kangaroo
+brush keeper
+brush myrtle
+brush-off
+brush ore
+brush pile
+brush polisher
+brush puller
+brush rabbit
+brush sawyer
+brush scythe
+brush-shaped
+brush shunt
+brush stick
+brush stock
+brush-tail
+brush-tailed
+brush-tongued
+brush-treat
+brush trimmer
+brush turkey
+brush turner
+brush varnisher
+brush wheel
+brush wolf
+brush yoke
+bruzz iron
+B-shaped
+B-type
+buaze fiber
+bubble glass
+bubble sextant
+bubble shell
+bubble tower
+bubble tube
+bubbly-jock
+bucco camphor
+buchu camphor
+buchu oil
+buck ague
+buck basket
+buck bean
+buck-bean family
+bucker-up
+bucket brigade
+bucket carrier
+bucket conveyer
+bucket dredge
+bucket-eyed
+bucket hook
+bucket hooker
+bucket orchid
+bucket pump
+bucket rope
+bucket-shaped
+bucket shop
+bucket snapper
+bucket well
+bucket wheel
+buck-eyed
+buckeye rot
+buck fat
+buck fever
+buck finch
+buck fleece
+buck grass
+buckhorn brake
+buckhorn plantain
+buckhorn sight
+bucking board
+bucking hammer
+bucking kier
+bucking plate
+buck knee
+buck law
+buckle-beggar
+buckle bobber
+buckle burnisher
+buckle chain
+buckle coverer
+buckle finisher
+buckle forger
+buckle maker
+buckle mounter
+buckle presser
+buckler fern
+buckler-headed
+buckler maker
+buckler mustard
+buckle rollerer
+buckler play
+buckler player
+buckler-shaped
+buckle stamper
+buckle tongue
+buckle tonguer
+buck moth
+buck passer
+buck private
+buck rake
+buck sail
+buck scraper
+buck thistle
+buckthorn brown
+buckthorn family
+buck-toothed
+buckwheat cake
+buckwheat coal
+buckwheat family
+buckwheat sage
+buckwheat tree
+buckwheat vine
+bucolic caesura
+bud brush
+buddy sap
+budge bachelor
+budge barrel
+bud grafting
+bud gum
+bud moth
+bud mutation
+bud rot
+bud sage
+bud scale
+bud sport
+bud variation
+bud variety
+buffalo apple
+buffalo berry
+buffalo bird
+buffalo bug
+buffalo bur
+buffalo bush
+buffalo cholera
+buffalo cloth
+buffalo clover
+buffalo cod
+buffalo currant
+buffalo dance
+buffalo disease
+buffalo fish
+buffalo fly
+buffalo gnat
+buffalo gourd
+buffalo grass
+buffalo-headed
+buffalo jack
+buffalo mange
+buffalo moth
+buffalo nut
+buffalo pea
+buffalo sunfish
+buffalo thorn
+buffalo tree
+buffalo tree hopper
+buffalo weed
+buff-backed
+buff-breasted
+buff-citrine
+buff-colored
+buffer bar
+buffer beam
+buffer block
+buffer salt
+buffer state
+buffer value
+buffet car
+buffing apparatus
+buffing head
+buffing wheel
+buffle duck
+buffle-headed
+buff nor stye
+buff-orange
+buff stick
+buff-tipped
+buff-washed
+buff wheel
+buff-yellow
+bug agaric
+bug-eyed
+bugging machine
+buggy cultivator
+buggy plow
+bug juice
+bugle horn
+bug light
+bugloss cowslip
+bug word
+buhl clock
+Buhl stage
+building anchor
+building block
+building code
+building construction
+building contractor
+building cradle
+building inspector
+building iron
+building law
+building lease
+building line
+building lot
+building mover
+building paper
+building permit
+building rigger
+building slip
+building society
+building surveyor
+building trade
+build-up
+built-in
+built-up
+bulb angle
+bulb bar
+bulb fly
+bulb iron
+bulb mite
+bulbo-urethral
+bulbous-rooted
+bulb plate
+bulb rectifier
+bulb rot
+bulb scale
+bulb-tee
+bulge hoop
+bulkhead line
+bulk line
+bulk-material conveyer
+bulk-pile
+bullace grape
+bull apple
+bulla tympani
+bull bait
+bull bay
+bull-bearing
+bull birch
+bull bit
+bull block
+bull-bragging
+bull brier
+bull-browed
+bull buttercup
+bull chain
+bull cook
+bull daisy
+bull ditcher
+bulldog ant
+bulldog bat
+bulldog edition
+bulldog forceps
+bulldog pipe
+bulldog spear
+bulldog wrench
+bull donkey
+bull earing
+bullen-bullen
+bullen nail
+bullet bolt
+bullet catch
+bullet compass
+bullet hawk
+bulletin board
+bullet money
+bullet screw
+bullet shell
+bullet tree
+bull-faced
+bull fiddle
+bull-fronted
+bull gear
+bull-god
+bull grape
+bull grass
+bull-grip
+bullhead kelp
+bullhead lily
+bullhead shark
+bull-horn
+bull-horn acacia
+bulling bar
+bullion balance
+bullion lace
+bullion melter
+bullion point
+bullion smelter
+bullion stitch
+Bulli soil
+bullit grape
+bull kelp
+bull-like
+bull mackerel
+bull-man
+bull meat
+Bull moose
+Bull mooser
+bull-mouthed
+bull-necked
+bull net
+bull nettle
+bull-nosed
+bullnose tool
+bull oak
+bullock block
+bull peep
+bull pen
+bull pine
+bull plum
+bull point
+bull press
+bull pump
+bull quartz
+bull rattle
+bull redfish
+bull ring
+bull riveter
+bull-roarer
+bull-roaring
+bull rope
+bull-run
+bull-running
+bull snake
+bull stag
+bull terrier
+bull thistle
+bull tongue
+bull train
+bull trout
+bull-voiced
+bull wheel
+bully beef
+bully-off
+bully tree
+bulrush millet
+bulwark plating
+bumblebee coot
+bumblebee hawk moth
+bumblebee root
+bump ball
+bumper beam
+bumper spring
+bumping bag
+bumping hammer
+bumping post
+bumping race
+bump joint
+bumpy ash
+bunch-backed
+bunch bean
+bunch evergreen
+bunchflower family
+bunch grape
+bunch grass
+bunch light
+bunch oyster
+bunch peanut
+bunch pink
+bunch plum
+bunch-word
+bunchy top
+bundle branch
+bundle branch block
+bundle browning
+bundle burial
+bundle pillar
+bundle-rooted
+bundle sheath
+bundle work
+bun foot
+bunghole oil
+bung start
+bunji-bunji
+bunk chain
+bunker coal
+bunker oil
+bunk fence
+bunko steerer
+bunny hug
+bunny rabbit
+bun ochra
+Bunsen burner
+bunter dog
+bunt glut
+bunting crow
+bunting iron
+bunting lark
+buntline cloth
+buono fresco
+bur artichoke
+buratto lace
+burble point
+bur chervil
+bur clover
+bur cucumber
+burden adjustment
+burden stitch
+burdock grass
+bureau company
+bureau system
+burg-bryce
+burgess-ship
+bur gherkin
+burglar alarm
+bur grass
+burial case
+burial ground
+burial jar
+burial mound
+burial peal
+burial place
+burial service
+burial tree
+burial urn
+burial vault
+burial yard
+burly-boned
+burly-faced
+burly-headed
+burmannia family
+Burmo-chinese
+burn blue
+burned-over
+burner gas
+burner-off
+burnet bloodwort
+burnet clover
+burnet moth
+burnet rose
+burnet saxifrage
+burning ghat
+burning glass
+burning mirror
+burning oil
+burning point
+burning spot
+burning-wood
+burnished-gold
+burnishing die
+burn-nose
+burn-nose bark
+burnt ale
+burnt almond
+burnt-child
+burn-the-wind
+burnt-out
+burnt-umber
+burnt-up
+bur oak
+bur parsley
+burr chisel
+bur reed
+burrel fly
+burrel shot
+burring machine
+burro-back
+burrow duck
+Burr truss
+bur sage
+bursting charge
+bursting strength
+bur thistle
+Burton myrtle
+Burton skate
+bur vervain
+burying ground
+burying place
+bus bar
+bus boy
+bus conductor
+bush baby
+bush basil
+bush bean
+bush canary
+bush cat
+bush cinquefoil
+bush clover
+bush cow
+bush cranberry
+bush disease
+bush doe
+bush dog
+bush dove
+bush forest
+bush fruit
+bush goat
+bush grape
+bush-grown
+bush-haired
+bush harrow
+bush hawk
+bush-head
+bush-headed
+bush honeysuckle
+bush hook
+bush huckleberry
+bush lark
+bush lawyer
+bush league
+bush leaguer
+bush maple
+bush marrow
+bush metal
+bush morning-glory
+Bush negro
+bush nut
+bush oak
+bush pea
+bush pepper
+bush pig
+bush poppy
+bush pumpkin
+bush quail
+bush rat
+bush rice grass
+bush robin
+bush scythe
+bush shrike
+bush sickness
+bush-skirted
+bush soul
+bush swamp
+bush-tailed
+bush tamarind
+bush tea
+bush tit
+bush trefoil
+bush vetch
+bush warbler
+bush wren
+bushy aster
+bushy-bearded
+bushy-browed
+bushy-eared
+bushy-haired
+bushy-headed
+bushy-legged
+bushy-tailed
+bushy-whiskered
+bushy-wigged
+business card
+business cycle
+business double
+Business english
+business life insurance
+business paper
+business pass
+business reply card
+business school
+business suit
+bus line
+bus rod
+busser-in
+bustamente furnace
+bustard quail
+bust hammer
+bustle pipe
+bust-up
+busy-brained
+busy-fingered
+busy-headed
+busy-idle
+busy-tongued
+butea gum
+butea seed
+but piece
+butt block
+butt bolt
+butt chain
+butt chisel
+butt cut
+butt end
+butter ale
+butter basket
+butter bean
+butter-billed
+butter blender
+butter boat
+butterboat-bill
+butterboat-billed
+butter carrier
+butter chip
+butter color
+butter-colored
+butter cooler
+butter cress
+butter crock
+buttercup family
+buttercup yellow
+butter cutter
+butter-cutting
+butter daisy
+butter dealer
+butter dipper
+butter dish
+butter dock
+butter duck
+butter firkin
+butterfly bush
+butterfly dam
+butterfly damper
+butterfly dance
+butterfly dock
+butterfly fish
+butterfly flower
+butterfly lily
+butterfly map
+butterfly orchid
+butterfly orchis
+butterfly pea
+butterfly plant
+butterfly ray
+butterfly table
+butterfly tulip
+butterfly valve
+butterfly weed
+butter grinder
+butter kit
+butter knife
+butter merchant
+butter mold
+butter-mouthed
+butter muslin
+butter oil
+butter packer
+butter pat
+butter pear
+butter pick
+butter plate
+butter plum
+butter print
+butter-rigged
+butter roller
+butter-rose
+butter sauce
+butter server
+butter shop
+butter-smooth
+butter spreader
+butter tooth
+butter-toothed
+butter tree
+butter tub
+butter weight
+buttery bar
+butter yellow
+buttery hatch
+butt fitter
+butt handler
+butt haulier
+butt head
+butt-headed
+butt joint
+butt knuckle
+butt leather
+butt lifter
+buttock line
+buttock mail
+button aster
+button balance
+button blank
+button borer
+button bottomer
+button burnisher
+button cactus
+button chrysanthemum
+button clamper
+button cleaner
+button clover
+button coverer
+button-covering
+button cutter
+button die
+button dipper
+button disease
+button driller
+button ear
+button-eared
+buttoner-up
+button fastener
+button-fastening
+button finisher
+button flower
+button gauge
+button grass
+button-headed
+buttonhead rivet
+button hole
+buttonhole stitch
+button lac
+button maker
+button making
+button mangrove
+button mottler
+button pearl
+button piercer
+button polisher
+button quail
+button sage
+button saw
+button scar
+button seal
+button sedge
+button sewer
+button-sewing
+button shank
+button shanker
+button-shaped
+button shoe
+button-slitting
+button snakeroot
+button snakeweed
+button sorter
+button stamper
+button stick
+button strike
+button switch
+button thistle
+button tree
+button-tufting
+button turner
+button willow
+buttonwood shrub
+button worker
+butt packer
+butt plate
+butt puller
+buttress pier
+buttress root
+buttress thread
+buttress tower
+butt roller
+butt rot
+butt saw
+butt shaft
+butt shooting
+butt sling
+butt strap
+butt striker
+butt weld
+butt welding
+butty lark
+butyl-chloral
+buyer four
+buyer ten
+buying option
+buzzard clock
+buzzard curlew
+buzzard grass
+buzz planer
+buzz saw
+by-alley
+by-altar
+by-bidder
+by-bidding
+by-blow
+by cards
+by-channel
+by-child
+by-cock
+by-common
+by-corner
+by-day
+by-dependency
+by-design
+by-doing
+by-drinking
+by-dweller
+bye-bye
+bye-election
+by-effect
+by-election
+bye-low
+by-end
+bye-stake
+bye-turn
+bye-water
+bye-wood
+by-fellow
+by-fellowship
+by-form
+by-gold
+by-hour
+by-interest
+by-issue
+by-job
+by-lane
+by-lead
+by-line
+by-matter
+by-motive
+by-office
+by-passage
+bypass burner
+bypass condenser
+by-place
+by-plot
+by-product
+by-product oven
+by-reaction
+by-respect
+by-result
+by-room
+by-route
+by-sitter
+by-speech
+by-stake
+by-stroke
+by-talk
+by-term
+by-thing
+by-throw
+by-thrust
+by-time
+by-tone
+by-track
+by-trail
+by tricks
+by-turning
+by-view
+by-walking
+by-wash
+by-water
+by-wipe
+by-wood
+caaing whale
+cabbage aphis
+cabbage bark
+cabbage-leaf miner
+cabbage-root maggot
+cabbage-tree hat
+cabbaging press
+cab fare
+cab hire
+cabin boy
+cabin car
+cabinet beetle
+cabinet cherry
+cable address
+cable bend
+cable-laid
+cable road
+Cabul clover
+ca canny
+cacao bean
+cacao butter
+cache-cache
+cactus alkaloid
+cactus family
+caddie bag
+caddis bait
+caddis case
+cadet blue
+cadet cloth
+Cadmean victory
+cadmium carmine
+cadmium standard cell
+cadmium sulphate
+cadmium sulphide
+cadmium vermilion
+cadmium yellow
+Caela sculptoris
+Caen stone
+Caesar weed
+cafe chantant
+cafe concert
+cafe dansant
+cafe society
+caffoy paper
+Caffre cat
+cage antenna
+cage bird
+cager-on
+caging knob
+Cahill quill
+cahinca root
+Cahokia mound
+cahoun palm
+Cain-colored
+cain law
+cairn-headed
+cairn tangle
+cairn terrier
+caisson body
+caisson limber
+cajeput oil
+cajuput oil
+cake baker
+caked breast
+caked lac
+cake-eater
+cake griddle
+cake-mixing
+cake pan
+caking coal
+Calabar bean
+Calabar ebony
+calabash nutmeg
+calabash tree
+Calabrian manna
+calabur tree
+calamander wood
+calamint balm
+calamity howler
+calamus oil
+Calaveras skull
+Calaveras warbler
+Calcaire grossier
+calcaneocuboid ligament
+calc-aphanite
+calcium arsenate
+calcium bisulphite
+calcium carbide
+calcium carbonate
+calcium caseinate
+calcium chloride
+calcium creosotate
+calcium cyanamide
+calcium cyanide
+calcium dibromobehenate
+calcium fluoride
+calcium hydroxide
+calcium hypochlorite
+calcium iodobehenate
+calcium lactate
+calcium light
+calcium nitrate
+calcium oxide
+calcium oxychloride
+calcium phosphate
+calcium soap
+calcium sulphate
+calcium sulphite
+calc-sinter
+calc-spar
+calc-tufa
+calculating machine
+Calcutta ginger
+Calcutta hemp
+caldron bottom
+calendar clock
+calendar day
+calf feed
+calf leather
+caliatour wood
+caliber compass
+calibrating terminal
+calico ash
+calico aster
+calico scale
+Calicut ginger
+caliper compass
+caliper gauge
+caliph willow
+calisaya bark
+Cali yuga
+calk weld
+calla green
+calla lily
+call bell
+call bird
+callcedra wood
+call-down
+called on
+calling-over
+calliope hummingbird
+callis sand
+Calliste green
+call-off
+call-out
+call-over
+call-up
+calm-eyed
+calm-minded
+calm-throated
+Calon-segur
+Caloosa grape
+calore sore
+calorimeter bomb
+calumet dance
+Calvary clover
+Calvary cross
+Calvo doctrine
+calyx drill
+calyx spray
+calyx teeth
+calyx tube
+camadula seed
+camara nutmeg
+camass rat
+camber arch
+camber beam
+camber-keeled
+Camberwell beauty
+cambe wood
+cambric grass
+cambric muslin
+Cambro-briton
+camb sizer
+cam chain
+cam contactor
+cam-contactor switch
+cam-cutting machine
+camel-backed
+camel caravan
+camel driver
+camel-faced
+camel grass
+camel-grazing
+camel-haired
+camel hay
+cameline oil
+camel insect
+camel-kneed
+camel-shaped
+cameo blue
+cameo conch
+cameo stamper
+camera angle
+camera assembler
+camera booth
+camera lucida
+camera obscura
+camera-shy
+camomile oil
+campaign book
+campaign medal
+campaign wig
+Campanula blue
+Campanula purple
+Campanula violet
+camp ball
+camp bed
+camp bird
+camp ceiling
+camp chair
+camp circle
+camp color
+camp disease
+campeachy wood
+Camperdown elm
+camp fever
+Camp fire
+campfire girl
+camp flux
+camp follower
+camphane group
+camphorated oil
+camphor ball
+camphor gum
+camphor ice
+camphor laurel
+camphor liniment
+camphor oil
+camphor tree
+camphor water
+camphor weed
+camp hospital
+camp meeting
+cam press
+camp robber
+camp root
+camp royal
+camp sheathing
+cam squeezer
+cam switch
+cam wheel
+cana brava
+Canada anemone
+Canada balsam
+Canada goose
+cana espina
+canal barge
+canal-built
+canal cell
+canal coal
+canal lock
+canal rays
+canal system
+cananga oil
+Canary balm
+Canary bellflower
+canary bird
+canary-bird flower
+canary flower
+canary glass
+canary grass
+Canary island bellflower
+Canary island date palm
+canary moss
+canary nut
+canary seed
+canary stone
+canary vine
+canary weed
+canary wine
+canary wood
+canary yellow
+can-beading
+can-boxing
+can buoy
+can burnisher
+can-burnishing
+can capper
+can-capping
+can carrier
+cancellation clause
+cancer cell
+cancer eye
+cancer jalap
+cancer parasite
+can-cleaning
+can-closing
+can coverer
+can crimper
+can-crimping
+cancrinite-syenite
+cancrum oris
+candelabra lamp holder
+candelabra plant
+candelabrum tree
+candelilla wax
+candle alder
+candle anemone
+candle auction
+candle bearer
+candle-bearing
+candleberry bark
+candleberry myrtle
+candleberry tree
+candle-branch
+candle cactus
+candle case
+candle-dipper
+candle end
+candle fly
+candle-foot
+candle gleam
+candle grease
+candle hour
+candle larkspur
+candle lumen
+Candlemas day
+candle-meter
+candle mold
+candle molder
+candlenut oil
+candle paper
+candle plant
+candle power
+candle rush
+candle shade
+candle-shaped
+candle snuff
+candle snuffer
+candle-snuff fungus
+candlestick lily
+candle-tapering
+candle tree
+candle tube
+candlewick bedspread
+candle wicking
+candlewood pine
+candy carrot
+candy grass
+candy kitchen
+candy pull
+candy pulling
+cane apple
+cane ash
+cane-backed
+cane blight
+cane borer
+cane-bottomed
+cane bottoming
+canebrake rattler
+cane brimstone
+cane cactus
+cane chair
+cane crusher
+cane cutter
+cane field
+cane fruit
+cane grass
+cane gun
+cane killer
+cane knife
+canella alba
+canella bark
+canella-bark family
+cane mill
+cane osier
+cane palm
+cane press
+cane rat
+cane reed
+cane rush
+cane rust
+cane seat
+cane-seated
+cane seating
+cane splicer
+cane sugar
+Canes venatici
+Canes venaticid
+cane trash
+cane weaver
+cane webbing
+cane withy
+can faucet
+can filler
+can-filling
+can-flanging
+can floater
+can frame
+can header
+can-heading
+can hook
+canicola fever
+Canis major
+Canis minor
+Canis minorid
+canister shot
+can jacket
+canker-bit
+canker-bitten
+canker bloom
+canker blossom
+canker-eaten
+canker-hearted
+canker lettuce
+canker-mouthed
+canker rash
+canker rose
+canker sore
+canker-toothed
+canker violet
+can key
+can-labeling
+can-lacquering
+can liner
+can-lining
+can-marking
+cannabis indica
+canna-down
+canna family
+cannel coal
+cannon ball
+cannon-ball fruit
+cannon-ball tree
+cannon bit
+cannon bone
+cannon cracker
+cannon curl
+cannon fodder
+cannon metal
+cannon pinion
+cannon-royal
+cannon shot
+cannon stove
+canoe adz
+canoe birch
+canoe burial
+canoe cedar
+canoe gum
+canoe yacht
+canoe yawl
+canon bit
+canon law
+canon lawyer
+canons regular
+can opener
+can-opening
+canopy switch
+can plug
+can-polishing
+can press
+can-quaffing
+can-salting
+can-scoring
+can sealer
+can-sealing
+can-seaming
+can-slitting
+can solderer
+can-soldering
+can-squeezing
+can-stamping
+can sterilizer
+can-sterilizing
+can system
+cant block
+cant body
+cant chisel
+cant dog
+Canterbury bell
+Canterbury gallop
+Canterbury lamb
+Canterbury palm
+Canterbury tale
+can-testing
+cant file
+cant frame
+cantharides cerate
+cantharid luster
+cant hook
+cantilever spring
+canting arms
+canting coat
+canting quoin
+cantle bar
+cant molding
+canton blue
+Canton crepe
+cant purchase
+cant ribband
+cant spar
+cant strip
+cant timber
+canvas baster
+canvas-covered
+canvas dam
+canvas dresser
+canvas maker
+canvas primer
+canvas quilter
+canvas shoe
+canvas stitch
+canvas stitcher
+canvas work
+canvas worker
+can washer
+can-washing
+can-weighing
+can-wiping
+can-wrapping
+canyon gooseberry
+canyon grape
+canyon live oak
+canyon wren
+capacitor motor
+capacity coupling
+capacity factor
+capacity load
+capacity load factor
+capacity reactance
+cap-a-pie
+cap bolt
+cap cell
+cap cloud
+Cape aloe
+Cape anteater
+Cape armadillo
+cape chisel
+Cape codder
+Cape cod lighter
+Cape cod turkey
+Cape dutch
+Cape flyaway
+Cape hottentot
+Cape magnum
+Cape may warbler
+cape parvum
+caper berry
+caper-cut
+caper family
+caper sauce
+caper spurge
+caper tea
+caper tree
+capeseed oil
+Cape town
+cap-flash
+cap flashing
+cap fungus
+capillary analysis
+capillary attraction
+capillary capacity
+capillary chemistry
+capillary electrometer
+capillary potential
+capillary pyrites
+capillary water
+Capitalis curia regis
+Capitan pasha
+capitation grant
+cap nut
+cap octavo
+capoor cutchery
+Cappagh brown
+cap paper
+capping plane
+capple-faced
+Capri blue
+capricorn beetle
+caprifig wasp
+cap rock
+cap screw
+cap scuttle
+capsicum wool
+cap square
+capstan bar
+capstan bolt
+capstan-headed
+capstan lathe
+capstan screw
+capstan tool rest
+captaincy general
+captain general
+captain-generalcy
+captain lieutenant
+captains general
+capture theory
+capuchin capers
+Capuchin cross
+Capuchin nun
+capucine buff
+capucine lake
+capucine madder
+capucine orange
+capucine red
+capucine yellow
+Caracas kino
+car accounting
+caramel cutter
+carapa nut
+carapa oil
+carapa tree
+carapa wood
+carap nut
+carap oil
+carap tree
+carap wood
+carat grains
+caravan boiler
+caraway oil
+caraway seed
+caraway-seed fern
+car bit
+carbon black
+carbon copy
+carbon diamond
+carbon dichloride
+carbon dioxide
+carbon-dioxide recorder
+carbon-dioxide snow
+carbon disulphide
+carbon flame
+carbonic acid
+carbonic-acid gas
+carbonization process
+carbon knock
+carbon lamp
+carbon light
+carbon microphone
+carbon monoxide
+carbon oxide
+carbon oxychloride
+carbon paper
+carbon pencil
+carbon point
+carbon process
+carbon silicide
+carbon spot
+carbon star
+carbon steel
+carbon sulphochloride
+carbon telephone
+carbon tetrachloride
+carbon tissue
+carbon transfer
+carbon transmitter
+carbon trichloride
+carbon tube
+carbonyl chloride
+car-borne
+carborundum cloth
+car brake
+carbureted-hydrogen gas
+carcass beef
+carcass flooring
+carcass roofing
+car coupler
+car coupling
+cardamom oil
+card bends
+card brusher
+card catalogue
+card cheating
+card cleaner
+card cloth
+card clothier
+card-counting
+card cutter
+card-cutting
+card-devoted
+card doffer
+card drawer
+card dresser
+card end
+card ender
+carder bee
+card feeder
+card fettler
+card filler
+card gatherer
+card grinder
+Cardiff giant
+cardigan jacket
+cardinal archbishop
+cardinal bird
+cardinal bishop
+Cardinal camerlingo
+cardinal climber
+cardinal cloth
+cardinal deacon
+cardinal dean
+cardinal fish
+cardinal flower
+cardinal grosbeak
+Cardinalis datarius
+cardinal priest
+cardinal red
+card-index
+carding hair
+carding machine
+carding thistle
+carding wool
+cardio-aortic
+cardio-inhibitory
+Cardium clay
+card ledger
+card measurer
+card parer
+card-perforating
+card-printing
+card roller
+card setter
+card-setting machine
+card sorter
+card-sorting
+card strip
+card stripper
+card table
+card teasel
+card tenter
+card thistle
+card tray
+car dumper
+car-dumping
+card voting
+card winder
+card wire
+card writer
+care-bewitching
+care-bringing
+care-charming
+care-crazed
+care-crossed
+care-defying
+care-dispelling
+care-eluding
+care-encumbered
+career diplomat
+career man
+careers master
+care-fraught
+care-killing
+care-laden
+care-lined
+care-scorched
+care-tired
+care-tuned
+care-wounded
+car ferry
+car float
+car frame
+car framer
+cargo boat
+cargo carrier
+cargo checker
+cargo clerk
+cargo coal
+cargo lighter
+cargo liner
+cargo mill
+cargo ship
+cargo worker
+car greaser
+car heater
+Caribou-eater
+Caribou eskimo
+caribou moss
+caricature plant
+caring fair
+Caring sunday
+carl hemp
+carline thistle
+carline wife
+Carling sunday
+carload lot
+carload rate
+car lot
+car-mile
+car mileage
+Carmine beauty
+carmine lake
+car movement
+carnal-minded
+carnal-mindedness
+carnation grass
+carnation red
+carnation rose
+carnation rust
+carnauba wax
+carnelian red
+carnival lace
+carob bean
+carob brown
+carob gum
+carob tree
+Carolina allspice
+Carolina anemone
+Carolina ash
+caroline hat
+Carolus dollar
+carom ball
+Carony bark
+Carpatho-russian
+Carpatho-ruthenian
+carpenter ant
+carpenter bee
+carpenter bird
+carpenter grass
+carpenter moth
+carpet alterer
+carpet beating
+carpet bed
+carpet bedding
+carpet beetle
+carpet binding
+carpet braid
+carpet broom
+carpet brush
+carpet chair
+carpet cleaner
+carpet cleaning
+carpet-covered
+carpet dance
+carpet dealer
+carpet drive
+carpet dyer
+carpet fastener
+carpet filler
+carpet fillings
+carpet finisher
+carpet fitter
+carpet fixer
+carpet folder
+carpet grass
+carpet hemmer
+carpet knight
+carpet lining
+carpet loom
+carpet machinist
+carpet mill
+carpet moth
+carpet needle
+carpet opener
+carpet picker
+carpet pink
+carpet planner
+carpet printer
+carpet printing
+carpet rags
+carpet renovator
+carpet repairer
+carpet rod
+carpet sewer
+carpet shark
+carpet shell
+carpet shredder
+carpet slipper
+carpet-smooth
+carpet snake
+carpet sorter
+carpet stitch
+carpet stretcher
+carpet sweeper
+carpet tack
+carpet thread
+carpet twisting
+carpet weaver
+carpet weaving
+carpetweed family
+carpet wool
+carpet yarn
+carp louse
+carpo-olecranal
+carp sucker
+car rail
+Carrara marble
+car replacer
+car-replacing
+car retarder
+carriage apron
+carriage blind
+carriage body
+carriage bolt
+carriage boot
+carriage bow
+carriage bridge
+carriage builder
+carriage building
+carriage cleaner
+carriage cleaning
+carriage company
+carriage coupler
+carriage coupling
+carriage dog
+carriage driver
+carriage-free
+carriage gate
+carriage guard
+carriage harness
+carriage head
+carriage horse
+carriage hub
+carriage iron
+carriage ironer
+carriage joiner
+carriage lady
+carriage lamp
+carriage lampman
+carriage maker
+carriage making
+carriage painter
+carriage piece
+carriage pole
+carriage porch
+carriage rider
+carriage road
+carriage searcher
+carriage seat
+carriage setter
+carriage shackle
+carriage shaft
+carriage shed
+carriage spring
+carriage springer
+carriage step
+carriage strap
+carriage top
+carriage trade
+carriage trimmer
+carriage trimming
+carriage washer
+carriage wheel
+carriage works
+carriage wrench
+carrick bend
+carrick bitt
+Carrickmacross applique
+Carrickmacross guipure
+Carrickmacross lace
+car ride
+carrier pigeon
+carrier ring
+carrier shell
+carrier snail
+carrier suppression
+carrion beetle
+carrion buzzard
+carrion crow
+carrion flower
+carrion fly
+carrion fungus
+carrion hawk
+carron oil
+carrot beetle
+carrot-colored
+carrot eating
+carrot family
+carrot fern
+carrot-head
+carrot-headed
+carrot orange
+carrot-pated
+carrot red
+carrot rust fly
+carrot-shaped
+carrot soft rot
+carrot tree
+carry bag
+carry forward
+carry-in
+carrying charge
+carrying cost
+carrying-on
+carrying place
+carryings-on
+carrying trade
+carry-log
+carry-over
+car sealer
+carse deposit
+car service
+car shed
+car sickness
+car starter
+car step
+cartage contractor
+Cartagena bark
+Cartagena ipecac
+cart aver
+cart driver
+carte blanche
+cartel ship
+Carter grass
+Carter process
+cartes blanches
+Carthamus red
+cart horse
+cartilage cell
+cartilage pit
+cart ladder
+cart leather
+car track
+cartridge annealer
+cartridge bag
+cartridge belt
+cartridge blocker
+cartridge box
+cartridge brass
+cartridge buff
+cartridge case
+cartridge filler
+cartridge fuse
+cartridge gauge
+cartridge heater
+cartridge loader
+cartridge loading
+cartridge maker
+cartridge making
+cartridge paper
+cartridge primer
+cartridge priming
+cart road
+cart rope
+cart-rutted
+cart-track plant
+car-tunnel kiln
+cart wheel
+cart whip
+carvel-built
+carvel joint
+carvel-planked
+carving knife
+car wheel
+car wheeler
+casaba melon
+casagha pine
+casca bark
+cascade amplification
+cascade-connect
+cascade connection
+cascade control
+cascade converter
+Cascade fir
+cascade method
+cascade system
+cascara amarga
+cascara buckthorn
+cascara sagrada
+cascarilla oil
+case bay
+case-bearer
+case binding
+case bolt
+case bottle
+case-bound
+case count
+case ending
+case furniture
+case goods
+case gun
+case hammer
+case history
+casein glue
+casein paint
+casein plastic
+case knife
+case law
+case lawyer
+case made
+casement cloth
+casement window
+case method
+case oil
+case phrase
+caser-in
+case shot
+case springs
+case stake
+case system
+case tablet
+cash account
+cash advance
+cash assets
+cash basis
+cash capital
+cash carrier
+cash clerk
+cash contract
+cash credit
+cash crop
+cash customer
+cash discount
+cash dividend
+cash drawer
+cashew apple
+cashew bird
+cashew family
+cashew lake
+cashew nut
+cash line
+Cashmere goat
+Cashmere palmette
+Cashmere shawl
+Cashmere stag
+cash money
+cash payment
+cash price
+cash purchase
+cash railway
+cash-refund annuity
+cash register
+cash remittance
+cash sale
+cash store
+cash tenant
+cash terms
+cash value
+casing cutter
+casing dog
+casing head
+casing-head gas
+casing-head gasoline
+casing knife
+casing shoe
+casing spear
+casing splitter
+casing spool
+casing swab
+casino pink
+cask marker
+cask-shaped
+cassava wood
+Cassel brown
+Cassel earth
+casse paper
+casserole fish
+casse-tete
+cassia bark
+cassia bud
+cassia fistula
+cassia flask
+cassia lignea
+cassia nut
+cassia oil
+cassia pod
+cassia pulp
+cassia-stick tree
+cassia tree
+cassie paper
+Cassius purple
+cassowary tree
+castana nut
+cast-back
+cast-by
+caste mark
+caste-ridden
+caster-off
+cast gear
+Castile earth
+Castile soap
+Castilla rubber
+casting bottle
+casting box
+casting counter
+casting director
+casting line
+casting net
+casting table
+casting vote
+casting wax
+casting weight
+cast iron
+castle-builder
+castle-building
+castle-built
+castle-buttressed
+castle-crowned
+castle ditch
+castle earth
+castle gate
+castle gilliflower
+castle-guard
+castle-guarded
+castle nut
+castle top
+castle town
+castle wall
+castor aralia
+castor bean
+castor-bean tick
+castor cake
+castor gray
+castor oil
+castor-oil plant
+castor pomace
+castor seed
+castor tree
+Castor ware
+castor wheel
+cast plow
+cast scrap
+cast-weld
+casualty insurance
+casualty ward
+Catalina cherry
+catalpa sphinx
+cat-and-dog
+cat-and-doggish
+catapult flight
+catapult fruit
+cataract bird
+catastrophe hazard
+catastrophe reserve
+catastrophe risk
+catawba rhododendron
+catawba rose bay
+catawba tree
+cat back
+cat beam
+cat-bed
+catbird grape
+cat block
+cat brier
+cat-built
+cat castle
+cat chain
+catch basin
+catch boom
+catch box
+catch crop
+catch cropping
+catch drain
+catchfly grass
+catch line
+catch meadow
+catchment area
+cat-chop
+catch phrase
+catch pit
+catch points
+catch question
+catch siding
+catch stitch
+catch title
+catchwater drain
+catchword entry
+catclaw acacia
+cat-clover
+cat cradle
+cat davit
+catenary system
+cater-cornered
+cater-cousin
+cater-cousinship
+caterpillar catcher
+caterpillar fern
+caterpillar fungus
+caterpillar hunter
+caterpillar plant
+caterpillar tractor
+cater trey
+cat-eyed
+cat flea
+catfoot poplar
+cat grape
+cat hair
+cat ham
+cat-hammed
+cat haw
+cathead chuck
+cathead stopper
+cathedral builder
+cathedral chimes
+cathedral church
+cathedral close
+cathedral dome
+cathedral glass
+cathedral music
+cathedral service
+cathedral tower
+cathedral town
+cathedral walk
+Catherine pear
+Catherine wheel
+Catherine-wheel window
+catheter fever
+cat hip
+cathode current
+cathode drop
+cathode luminescence
+cathode particle
+cathode ray
+cathode-ray oscillograph
+cathode-ray tube
+Catholic league
+Catholic leaguer
+cat hook
+cat house
+cat ice
+cation-active
+cat ladder
+cat-locks
+cat nap
+cat-o-nine-tails
+cat owl
+cat pea
+cat pine
+cat purchase
+cat rig
+cat-rigged
+cat salt
+cat shark
+cat silver
+cat sleep
+cat snake
+cat spruce
+cat squirrel
+cat stopper
+cat tackle
+cattail family
+cattail flag
+cattail fungus
+cattail grass
+cattail millet
+cattail rush
+cat thyme
+cattle boat
+cattle breeder
+cattle breeding
+cattle buyer
+cattle camp
+cattle car
+cattle crossing
+Cattle damara
+cattle dealer
+cattle dehorner
+cattle dog
+cattle drover
+cattle farcy
+cattle farm
+cattle farmer
+cattle feed
+cattle feeder
+cattle feeding
+cattle float
+cattle floater
+cattle grub
+cattle guard
+cattle horn
+cattle leader
+cattle loader
+cattle louse
+cattle mange
+cattle marker
+cattle marking
+cattle pass
+cattle pen
+cattle plague
+cattle pump
+cattle raising
+cattle ranch
+cattle range
+cattle run
+cattle scab
+cattle ship
+cattle shipper
+cattle show
+cattle-specked
+cattle stall
+cattle station
+cattle stealing
+cattle steamer
+cattle tender
+cattle thief
+cattle tick
+cattle trade
+cattle trader
+cattle train
+cattle wire
+cattleya fly
+cattley guava
+cat tree
+cat whisker
+cat-whistles
+cat-witted
+cauda galli
+cauda-galli grit
+caul board
+caul fat
+cauliflower disease
+cauliflower ear
+cauliflower-eared
+cauliflower excrescence
+cauliflower ware
+causeway grass
+caution card
+caution money
+cavalier battery
+cavalier projection
+cavalier servant
+cavalier servitude
+cavalry bone
+cave art
+cave bear
+cave beetle
+cave cricket
+cave drawing
+cave dweller
+cave dwelling
+cave earth
+cave fish
+cave-guarded
+cave hunter
+cave hyena
+cave-in
+cave-keeping
+cave lion
+cave-lodged
+cave-loving
+cave man
+cave pearl
+cave period
+cave rat
+cave right
+cave tomb
+caving system
+cavi-relievi
+cavity source
+caviuna wood
+cavo-relievo
+Cayenne cherry
+Cayenne incense
+cayenne pepper
+Cayuga duck
+C battery
+Ccapac cocha
+Ccapac raymi
+Ccapac situa
+C clef
+Ceara rubber
+Cebu hemp
+Cecropia moth
+cedar apple
+cedar-brown
+cedar camphor
+cedar chest
+cedar-colored
+cedar elm
+cedar grass
+cedar green
+cedar leaf
+cedar maker
+cedar manna
+cedar moss
+cedar nut
+cedar pine
+cedar rust
+cedar swamp
+cedar tree
+cedar waxwing
+cedarwood oil
+cee spring
+ceiling board
+ceiling floor
+ceiling hook
+ceiling joist
+celadon green
+celandine green
+celandine poppy
+celery blight
+celery cabbage
+celery family
+celery grass
+celery-leaved
+celery mosaic
+celery oil
+celery pine
+celery salt
+celery seed
+celery-topped
+celery yellows
+celestial blue
+cellar book
+cellar pipe
+cell-blockade
+cell body
+cell bridge
+cell cavity
+cell charger
+cell cleavage
+cell count
+cell cup
+cell division
+cell doctrine
+cell family
+cell house
+cell kernel
+cell membrane
+cell multiplication
+cell nest
+cell nucleus
+cell organ
+cell plasm
+cell plate
+cell product
+cell proliferation
+cell sap
+cell-shaped
+cell substance
+cell tester
+cell theory
+cellulose acetate
+cellulose flour
+cellulose nitrate
+cellulose xanthate
+cell wall
+Celto-ligyes
+Celto-roman
+Celto-slavic
+Celto-thracians
+cembal damore
+cembra nut
+cembra pine
+cement-coated
+cement conveyer
+cement-covered
+cement disease
+cement-drying
+cement dusting
+cement-faced
+cement filler
+cement-forming
+cement gauger
+cement gland
+cement grinder
+Cement gun
+cement hardener
+cement kiln
+cement layer
+cement-lined
+cement-lining
+cement mill
+cement miller
+cement organ
+cement paver
+cement pulverizer
+cement rod
+cement sprayer
+cement-temper
+cement tester
+cendres blue
+censer box
+censer pot
+census taker
+centauro-triton
+center bit
+centerboard trunk
+center circle
+center drill
+center field
+center fielder
+center-fire
+center-freeze system
+center gambit
+center gauge
+centering machine
+centering square
+center jam
+center line
+center mold
+center punch
+center reamer
+center-sawed
+center seal
+center-second
+center spider
+center square
+center staff
+center tester
+center valve
+center wheel
+center zone
+centimeter-gram
+centimeter-gram-second
+centipede grass
+centipede legs
+centipede locomotive
+centipede plant
+central-fire
+centum languages
+centuple calorie
+century aloe
+century plant
+ceramic engineer
+ceramic engineering
+cercis-leaf
+cerebello-olivary
+cerebro-ocular
+cerium dioxide
+cerium oxide
+cerro green
+cervico-occipital
+cervico-orbicular
+ceryl alcohol
+Cesaro sum
+Cesaro summability
+Cevenole race
+chac-chac
+Cha-cha
+chack-bird
+Chac-mool
+Chaetura black
+Chaetura drab
+chafe iron
+chaffer whale
+chaff-flower
+chaff scale
+chafing dish
+chafing gear
+chafing pan
+Chagres fever
+chagual gum
+chai meu
+chain argument
+chain armor
+chain-bag
+chain banking
+chain belt
+chain bit
+chain block
+chain boat
+chain bolt
+chain brake
+chain cable
+chain cent
+chain closure
+chain conveyer
+chain coral
+chain coupling
+chain creeper
+chain discount
+chain dog
+chain drill
+chain drive
+chain-driven
+chain driving
+chain-drooped
+chain fern
+chain gang
+chain gear
+chain gearing
+chain grab
+chain grate
+chain-grate stoker
+chain guard
+chain harrow
+chain hoist
+chain hook
+chain isomerism
+chain joiner
+chain jointer
+chain knot
+chain letter
+chain lightning
+chain line
+chain linker
+chain locker
+chain mail
+chain-mail armor
+chain mark
+chain mechanism
+chain pickerel
+chain pillar
+chain pin
+chain pipe
+chain plate
+chain pulley
+chain-pull lamp holder
+chain-pull switch
+chain pump
+chain reaction
+chain reactor
+chain reasoning
+chain reflex
+chain riveting
+chain rule
+chain saw
+chain-shaped
+chain shot
+chain snake
+chain splice
+chain-spotted
+chain stitch
+chain store
+chain survey
+chain-swung
+chain syllogism
+chain tape
+chain-testing
+chain tongs
+chain towing
+chain twist
+chain warper
+chain welder
+chain-welding
+chain well
+chain wheel
+chain whip
+chain winding
+chain wrench
+chair arm
+chair back
+chair bed
+chair binder
+chair bottom
+chair bottomer
+chair cane
+chair car
+chair-fast
+chair leg
+chair lift
+chair-mortising
+chair organ
+chair rail
+chair seat
+chair seater
+chair-shaped
+chair shaper
+chair table
+chair turner
+chaise cart
+chaise longue
+chai vai
+chakazzi copal
+chalcedony yellow
+chalcis fly
+Chaldae-pahlavi
+Chaldee church
+Chaldee paraphrase
+chalice cell
+chalice flower
+chalice moss
+chalice veil
+chalk burner
+chalk cliff
+chalk down
+chalk dust
+chalk-eating
+chalk engraving
+chalk-eyed
+chalk flint
+chalk hill
+chalk lime
+chalk line
+chalk maple
+chalk mixture
+chalk pit
+chalk plant
+chalk-plate process
+chalk process
+chalk quarry
+chalk-talk
+chalk-white
+challenge cup
+chamber acid
+chamber barrister
+chamber blast
+chamber composer
+chamber concert
+chamber council
+chamber counsel
+chamber fellow
+chamber filter
+chamber gas
+chamber horse
+chamber kiln
+chamber master
+chamber mastering
+chamber music
+chamber orchestra
+chamber organ
+chamber pot
+chamber practice
+chamber process
+chamber sonata
+chamber stool
+chamber study
+chamber train
+chamber vessel
+chameleon grass
+chameleon mineral
+chameleon tree frog
+chamfer bit
+chamfer plane
+chamois skin
+chamois yellow
+champaca oil
+champagne cup
+champion oak
+champion tooth
+Champlain epoch
+Champlain forge
+Cham-selung
+chance arrival
+chance bairn
+Chance-claus process
+chance-dropped
+chance-hit
+chance-hurt
+Chancelade race
+chancel organ
+chancel table
+chance-medley
+chance-met
+chance-poised
+chancery hand
+chance-shot
+chance-sown
+chance-taken
+chance-won
+Chan-chan
+chandelier tree
+chang awn
+change bowler
+change-case key
+change gear
+change house
+change key
+change-over
+change-over switch
+change point
+change ratio
+change ringing
+changer-off
+change-speed gear
+change wheel
+changing bag
+changing note
+channel bar
+channel bass
+channel board
+channel bolt
+channel cat
+channel goose
+channel iron
+channel plate
+channel rail
+channel steel
+channel stone
+chantry priest
+chaparral cock
+chaparral pea
+chapel child
+chapel royal
+chapel text
+chapter house
+character dance
+character dancing
+character loan
+character part
+character piece
+character sketch
+character study
+charcoal black
+charcoal burner
+charcoal drawing
+charcoal fire
+charcoal furnace
+charcoal gray
+charcoal iron
+charcoal oven
+charcoal paper
+charcoal pencil
+charcoal pit
+charcoal plate
+charcoal point
+charcoal powder
+charcoal rot
+charcoal tree
+charcoal wood
+charge account
+charge book
+charge hand
+charge-off
+charges forward
+charge sheet
+charge weigher
+charging order
+charging rate
+charging stick
+chariot driver
+chariot driving
+chariot plane
+chariot pole
+chariot race
+chariot racer
+chariot-shaped
+chariot side
+chariot wheel
+charity ball
+charity bazaar
+charity boy
+charity commission
+charity girl
+charity house
+charity school
+charity stamp
+charity work
+charity worker
+Charley horse
+Charley pitcher
+Charlier shoe
+charlotte russe
+Charlton white
+charm-bound
+charm-built
+charm-engirdled
+charm-struck
+charnel house
+Charta charitatis
+Charter boy
+charter colony
+charter hand
+charter hold
+charter land
+charter member
+charter party
+chartreuse green
+chartreuse yellow
+chase gun
+chase halter
+chase hoop
+chase-hooped
+chase-hooping
+chase mortise
+chase-mortised
+chase piece
+chase port
+chaser hob
+chase ring
+chasing lathe
+chassis fitter
+chassis painter
+Chateau ausone
+Chateau brane-cantenac
+Chateau dyquem
+chateau gray
+Chateau hautbrion
+Chateau lafite
+Chattahoochee formation
+chattel interest
+chattel mortgage
+chatterbox tree
+chatter mark
+chatter water
+chaud-melle
+cheadle dock
+Cheap-jack
+cheap skate
+che-choy
+check binding
+check boy
+check brace
+check-canceling
+check chamber
+check collar
+check endorser
+check-endorsing
+checker-brick
+checker tree
+checker-up
+check exchange
+check-flood
+check folio
+check gauge
+check girl
+checking account
+check key
+check line
+check list
+check lock
+check nut
+check-perforating
+check punch
+check puncher
+check rail
+check ring
+check roller
+check side
+check stamp
+check stamper
+check stopper
+check system
+check valve
+check washer
+check-writing
+cheek block
+cheek knee
+cheek pouch
+cheek strap
+cheek tooth
+cheer pine
+cheese bail
+cheese basket
+cheese block
+cheese bolt
+cheese cement
+cheese chandler
+cheese color
+cheese dream
+cheese finger
+cheese fly
+cheese grater
+cheese-head
+cheese-headed
+cheese hoop
+cheese knife
+cheese maggot
+cheese maker
+cheese making
+cheese mite
+cheese mold
+cheese pitch
+cheese plate
+cheese press
+cheese rack
+cheese rennet
+cheese running
+cheese scoop
+cheese straw
+cheese toaster
+cheese trier
+cheese tub
+cheese vat
+cheese wring
+chemical lead
+chemically pure
+chemic mixer
+chenille carpet
+cheoplastic metal
+Cherneviye tatars
+cheroonjie nut
+cherry aphid
+cherry apple
+cherry bay
+cherry birch
+cherry bird
+cherry bounce
+cherry brandy
+cherry-cheeked
+cherry chopper
+cherry coal
+cherry coffee
+cherry-colored
+cherry cordial
+cherry country
+cherry crab
+cherry-crimson
+cherry crush
+cherry currant
+cherry fair
+cherry finch
+cherry-flavored
+cherry fruit fly
+cherry fruit sawfly
+cherry grader
+cherry gum
+cherry holly
+cherry laurel
+cherry-laurel oil
+cherry leaf beetle
+cherry leaf spot
+cherry-lipped
+cherry maggot
+cherry mildew
+cherry orange
+cherry pepper
+cherry picker
+cherry pie
+cherry pit
+cherry pitter
+cherry plum
+cherry red
+cherry-ripe
+cherry-rose
+cherry rum
+cherry scab
+cherry scale
+cherry seeder
+cherry slug
+cherry smash
+cherry stone
+cherry stoner
+cherry sucker
+cherry tomato
+cherry-tree gum
+cherry wine
+cherry-wood
+chert quarrier
+chess apple
+chess notation
+chess opening
+chess rook
+chessylite blue
+chest-deep
+chest expander
+chest founder
+chest-foundered
+chest foundering
+chest lid
+chest lock
+chest maker
+chest measurer
+chest note
+chestnut-backed
+chestnut-bark disease
+chestnut bean
+chestnut-bellied
+chestnut blight
+chestnut borer
+chestnut brown
+chestnut bud
+chestnut coal
+chestnut-collared
+chestnut-colored
+chestnut-crested
+chestnut-crowned
+chestnut extract
+chestnut flour
+chestnut oak
+chestnut-red
+chestnut-roan
+chestnut roaster
+chestnut sedge
+chestnut-sided
+chestnut stuffing
+chestnut timber worm
+chestnut tongue
+chestnut tree
+chestnut weevil
+chestnut-winged
+chest protector
+chest register
+chest tone
+chest wall
+chest weight
+Cheval blanc
+cheval glass
+chevalier bird
+chevalier crab
+chevron-shaped
+chewing gum
+chica red
+Chichester elm
+chickasaw plum
+chicken-billed
+chicken bird
+chicken-brained
+chicken breast
+chicken-breasted
+chicken broth
+chicken cholera
+chicken coop
+chicken corn
+chicken fancier
+chicken farm
+chicken farmer
+chicken farming
+chicken feed
+chicken grape
+chicken gumbo
+chicken halibut
+chicken hawk
+chicken hazard
+chicken heart
+chicken house
+chicken mite
+chicken pepper
+chicken pest
+chicken plover
+chicken pox
+chicken roost
+chicken septicemia
+chicken snake
+chicken-spirited
+chickens-toes
+chicken thief
+chicken tick
+chicken-toed
+chicken tortoise
+chicken wire
+chicken yard
+chickling vetch
+chick-pea
+chickweed family
+chickweed phlox
+chickweed wintergreen
+chicle bleeder
+chico mamey
+chicory family
+chief-justiceship
+chief-pledge
+chiff chaff
+Chiffney bit
+chigoe-poison
+chih hsien
+Chihuahua pine
+child-bereft
+child-fashion
+child-god
+child-hearted
+child-heartedness
+child labor
+child life
+child-loving
+child mind
+child-minded
+child-mindedness
+child rearing
+Chile hazel
+chili con carne
+chi-lin
+chili pepper
+chili sauce
+chili vinegar
+chill-cast
+chill casting
+chilli pepper
+chill mold
+chill plow
+chiming bell
+chimley neuck
+chimney bar
+chimney bellflower
+chimney board
+chimney cap
+chimney corner
+chimney flute
+chimney glass
+chimney hook
+chimney jack
+chimney lug
+chimney money
+chimney piece
+chimney pink
+chimney plant
+chimney pot
+chimney repairer
+chimney rock
+chimney stack
+chimney stalk
+chimney swallow
+chimney sweep
+chimney sweeper
+chimney swift
+chimney tax
+chimney throat
+chimney top
+chimney tun
+chimney wing
+china decorator
+china painter
+china painting
+china shop
+chinbeak molding
+chin-bearded
+chinch bug
+chin-chin
+chin-deep
+chine gall
+chine hoop
+chin fly
+Ching ming
+Ching-tu
+chin-high
+chink-backed
+chinked back
+chinking course
+Chinle formation
+chin music
+Chino-japanese
+Chinook licorice
+chinquapin oak
+chin rest
+chin shield
+chin stay
+chin strap
+chin-wag
+chin whiskers
+chip ax
+chip bird
+chip board
+chip break
+chip budding
+chip carving
+chip-hat palm
+chipper-up
+chipping ax
+chipping bit
+chipping chisel
+chipping hammer
+chipping piece
+chipping squirrel
+chip ring
+chip shot
+chiquichiqui palm
+Chi-rho monogram
+chir pine
+chisel bit
+chisel-cut
+chisel-edged
+chisel grinder
+chisel maker
+chisel making
+chisel-pointed
+chisel-shaped
+chisel temper
+chisel tooth
+chi-square
+chitino-arenaceous
+chito melon
+Chittagong wood
+chittam bark
+chittem bark
+chitter-chatter
+chittim bark
+chloric ether
+chloride paper
+chlorinated lime
+chlorine azide
+chlorine dioxide
+chlorine family
+chlorine peroxide
+chlorine water
+chlorophyll body
+chock cheese
+chock-full
+chock stone
+chocolate brown
+chocolate candy
+chocolate-coated
+chocolate-colored
+chocolate corn
+chocolate coverer
+chocolate dipper
+chocolate family
+chocolate mill
+chocolate mixer
+chocolate mold
+chocolate molder
+chocolate molding
+chocolate packer
+chocolate-red
+chocolate sifter
+chocolate wrapper
+choctaw-root
+choice-drawn
+choice reaction
+choir aisle
+choir invisible
+choir loft
+choir manual
+choir organ
+choir rail
+choir school
+choir screen
+choir stall
+choir wall
+choke apple
+choke coil
+choke pear
+choker setter
+choking coil
+cholane series
+cholera horn
+cholera infantum
+cholera morbus
+cholera nostras
+choline esterase
+chondroitin-sulphuric
+chondro-osseous
+chop-cherry
+chop-chop
+chop dollar
+chopper cot
+chopping block
+chopping knife
+chop suey
+chor bishop
+chorda dorsalis
+chordae tendineae
+chorda tympani
+chord packing
+chord pitch
+chorea minor
+chorus girl
+chorus reed
+chose local
+chose transitory
+chota hazri
+chou moellier
+chou paste
+Choveve zion
+chow mein
+Christanna indian
+Christ-borne
+Christ child
+Christ-confessing
+Christe eleison
+Christ follower
+Christ-given
+Christ-hymning
+Christiana standard
+christian dor
+Christiania epoch
+Christiania standard
+Christiano-platonic
+Christian science
+Christian scientist
+Christian-socialize
+Christ-imitating
+Christ-inspired
+Christmas bells
+Christmas bush
+Christmas card
+Christmas fern
+Christmas rose
+Christmas shield fern
+Christmas tree
+Christ-professing
+Christ row
+Christ-taught
+chroma-blind
+chrome alum
+chrome aventurine
+chrome black
+chrome brick
+chrome green
+chrome iron
+chrome leather
+chrome lemon
+chrome liquor
+chrome-nickel
+chrome-nickel steel
+chrome orange
+chrome primrose
+chrome red
+chrome scarlet
+chrome sole
+chrome spinel
+chrome steel
+chrome-tanned
+chrome tanning
+chrome-vanadium steel
+chrome vermillion
+chrome yellow
+chromium family
+chromium green
+chromium oxide
+chromium sesquioxide
+chromium steel
+chromium trioxide
+chromium yellow
+chromo-arsenate
+chromosome number
+chromyl chloride
+chronicle drama
+chronicle history
+chronicle play
+chronometer escapement
+chrysalis oil
+chrysanthemum dog
+chrysanthemum rust
+chrysolite green
+chrysoprase green
+Chuar group
+chub-faced
+chub mackerel
+chub sucker
+chuck-a-luck
+chuck-farthing
+chucking lathe
+chucking reamer
+chuck-luck
+chuck plate
+chuck rib
+chuck wagon
+chucky-chuck
+chucky-chucky
+chug-chug
+chukker brown
+chulan family
+Chulyma tatars
+chump end
+chupa-chupa
+church-ale
+Church army
+Church assembly
+church bell
+church door
+church house
+church mouse
+church school
+Church slavic
+church-soken
+church work
+church worker
+churchyard cross
+churn-butted
+churn drill
+churn supper
+churr-owl
+chute system
+ciba blue
+cicada killer
+cider brandy
+cider cup
+cider gum
+cider jack
+cider maker
+cider making
+cider tree
+cider vinegar
+cider wine
+cigar beetle
+cigar binder
+cigar box
+cigar-box cedar
+cigar case
+cigar case-bearer
+cigar clipper
+cigar cutter
+cigarette beetle
+cigarette case
+cigarette drain
+cigarette factory
+cigarette holder
+cigarette lighter
+cigarette machine
+cigarette maker
+cigarette making
+cigarette paper
+cigarette roller
+cigarette sorter
+cigarette tobacco
+cigar holder
+cigar lighter
+cigar-loving
+cigar machine
+cigar machinist
+cigar maker
+cigar making
+cigar mold
+cigar molder
+cigar packer
+cigar roller
+cigar rolling
+cigar-shaped
+cigar smoker
+cigar sorter
+cigar spot
+cigar store
+Cigar-store indian
+ciliate-leaved
+ciliate-toothed
+cinch bill
+cinder block
+cinder breaker
+cinder concrete
+cinder cone
+cinder frame
+cinder gray
+cinder mill
+cinder notch
+cinder path
+cinder pig
+cinder pit
+cinder tap
+cinder track
+cinema operator
+cinema red
+cineres clavellati
+Cingulum veneris
+cinnabar green
+cinnabar red
+cinnamic aldehyde
+cinnamon apple
+cinnamon bark
+cinnamon-bark oil
+cinnamon bear
+cinnamon brown
+cinnamon fern
+cinnamon flower
+cinnamon honeysuckle
+cinnamon-leaf oil
+cinnamon oak
+cinnamon oil
+cinnamon rose
+cinnamon sedge
+cinnamon stone
+cinnamon teal
+cinnamon vine
+cinnamon water
+cinque point
+Cinque port
+cinque-spotted
+cipher disk
+circle-branching
+circle brick
+circle cutter
+circle driller
+circle finisher
+circle geometry
+circle graph
+circle setter
+circle shear
+circle-shearing
+circle shears
+circle squarer
+circle-squaring
+circling boy
+circuit binding
+circuit breaker
+circuit court
+circuit drive
+circuit justice
+circuit rider
+circular constant
+circular-cut
+circular-cut file
+circular-knit
+circulating equation
+circulating library
+Circum-arean
+Circumcision style
+Circum-cytherean
+Circum-jovial
+Circum-mercurial
+Circum-neptunian
+Circum-saturnal
+Circum-saturnian
+Circum-uranian
+circus movement
+cire-perdue
+cirl bunting
+cirque-couchant
+cirro-cumular
+cirro-cumulative
+cirro-cumulous
+cirro-cumulus
+cirro-filum
+cirro-macula
+cirro-nebula
+cirro-stome
+cirro-strative
+cirro-stratous
+cirro-stratus
+cirro-velum
+cirrus haze
+cirrus stripe
+Cis-elizabethan
+cis-elysian
+Cis-reformation
+cistern barometer
+cist grave
+cis-trans
+citricola scale
+citron butterfly
+citron-colored
+citronella grass
+citronella oil
+citron green
+citron melon
+citron water
+citron yellow
+citrus anthracnose
+citrus black fly
+citrus blast
+citrus canker
+citrus fruit
+citrus nematode
+citrus rust mite
+citrus scab
+citrus white fly
+city-born
+city-bound
+city-bred
+city-commonwealth
+city company
+city council
+city councilman
+city court
+city crop
+city edition
+city editor
+city father
+city gas
+city-god
+city hall
+city man
+city manager
+city-manager plan
+city mission
+city missionary
+city plan
+city planning
+city-state
+city ward
+city-wide
+civet bean
+civet cat
+civette green
+clack box
+clack door
+clack goose
+clack valve
+claim agent
+claim jumper
+clair-obscure
+clamp bushing
+clamp cell
+clamp connection
+clamp coupling
+clamp dog
+clamp jig
+clamshell brake
+clamshell bucket
+clang association
+clang color
+clan tartan
+clan totemism
+Clanwilliam cedar
+clapper block
+clapper box
+clapper rail
+clapper valve
+clap sill
+clare-obscure
+claret brown
+claret cup
+claret dun
+claret red
+claribel flute
+clarinet flute
+clarion-voiced
+clash gear
+clasp hook
+clasping-leaved
+clasp knife
+clasp lock
+clasp nut
+class bond
+class-cleavage
+class-conscious
+class consciousness
+class day
+class dialect
+classico-lombardic
+classification society
+classification track
+classification yard
+class interval
+class leader
+class lottery
+class mark
+class meeting
+class name
+class number
+class publication
+class rate
+class struggle
+claver grass
+clavicembal damour
+claviculo-humeral
+claw balk
+claw bar
+claw clutch
+claw fern
+claw foot
+claw-footed
+claw hammer
+claw-hammer coat
+claw hand
+claw hatchet
+claw nut
+claw sickness
+claw-tailed
+clay agitator
+clay band
+clay-bound
+clay-built
+clay burner
+clay burning
+clay-cold
+clay-colored
+clay crusher
+clay digger
+clay-digging
+clay-dimmed
+clay drab
+clay drier
+clay-drying
+clay eater
+clay-faced
+clay fever
+clay-filtering
+clay-forming
+clay grinder
+clay-grinding
+clay iron
+clay-lined
+clay marl
+clay mill
+clay miner
+clay mixer
+clay-mixing
+clay modeler
+clay pan
+clay pit
+clay press
+clay pressman
+clay pugger
+clay pulverizer
+clay shale
+clay slate
+clay soil
+clay stacker
+clay stone
+clay temperer
+clay-tempering
+clayver-grass
+clay washer
+clay-washing
+clay works
+clay worsted
+clay-wrapped
+clean-appearing
+clean-armed
+clean-boled
+clean-bred
+clean-built
+clean-complexioned
+clean-cut
+cleaner cell
+cleaner-off
+cleaner-out
+cleaner tooth
+cleaner-up
+clean-faced
+clean-feeding
+clean-fingered
+clean-grained
+cleaning crop
+cleaning hinge
+cleaning shoe
+cleaning woman
+clean-legged
+clean-limbed
+clean-lived
+clean-living
+clean-looking
+clean-made
+clean-minded
+clean-moving
+clean-sailing
+clean-saying
+clean-seeming
+clean-shanked
+clean-shaped
+clean-shaved
+clean-shaven
+clean-skinned
+clean-smelling
+clean-souled
+clean-speaking
+clean-sweeping
+clean-thinking
+clean-timbered
+clean-washed
+clearance angle
+clearance fit
+clearance loan
+clearance papers
+clearance size
+clearance space
+clear-boled
+clear-complexioned
+clear-crested
+clear-cut
+clear-cutness
+clear-cutting
+clear-eye
+clear-eyed
+clear-faced
+clear-featured
+clear hawse
+clear-hawse breeches
+clear-hawse pendant
+clearing agent
+clearinghouse agent
+clearinghouse stock
+clearing lease
+clearing nut
+clear-minded
+clear-mindedness
+clear obscure
+clear-sighted
+clear-sightedly
+clear-sightedness
+clear-skinned
+clear-spirited
+clear-starcher
+clear-stemmed
+clear-sunned
+clear-throated
+clear-tinted
+clear-toned
+clear-up
+clear-visioned
+clear-voiced
+clear-walled
+clear-witted
+cleat work
+cleavage cavity
+cleavage cell
+cleavage crystal
+cleavage nucleus
+cleft-footed
+cleft-graft
+cleft grafting
+cleft weld
+cleido-occipital
+clench-built
+clerico-political
+clerk-ale
+Clerk register
+clerks regular
+clerk vicar
+clever-handed
+clevis bolt
+clew garnet
+clew jigger
+clew line
+clew rope
+click beetle
+click catch
+click-clack
+clickety-clack
+click hook
+click iron
+click pulley
+click wheel
+cliff-bound
+cliff brake
+cliff-chafed
+cliff dweller
+cliff dwelling
+cliff edge
+cliff elm
+cliff face
+cliff-girdled
+cliff-marked
+cliff path
+cliff rose
+cliff ruin
+cliff swallow
+cliff top
+cliff wall
+cliff-worn
+climax basket
+climax forest
+climb-down
+clinch-built
+clincher-built
+clincher tire
+clincher work
+clinching iron
+clinch joint
+clinch nail
+clinch work
+cling-rascal
+clink-clank
+clinker beech
+clinker boat
+clinker brick
+clinker-built
+clinker work
+clinkety-clink
+clink shell
+clinkum bell
+clintonite group
+clip bond
+clip-clop
+clip-edged
+clip hook
+clip-marked
+clipper bow
+clipper-built
+clipper ship
+clipper sled
+clipping bureau
+clipping time
+clip plate
+clip tongs
+clip-winged
+clip yoke
+clish-clash
+cloacae maximae
+cloaca maxima
+cloak baster
+cloak dealer
+cloak-fashion
+cloak fern
+cloak fitter
+cloak hanger
+cloak ironer
+cloak operator
+cloak pin
+cloak presser
+cloak trimming
+clock chart
+clock correction
+clock error
+clockface method
+clock golf
+clock meter
+clock-minded
+clock plant
+clock setter
+clock spring
+clock stamp
+clock star
+clock tower
+clock watch
+clock winder
+clock winding
+clod-brown
+clod crusher
+clod crushing
+clodding press
+clod fender
+clod pulverizer
+clod roller
+clod smasher
+clod-tongued
+clog almanac
+clog dance
+clog dancer
+clog dancing
+cloister garth
+cloister text
+cloister vault
+clop-clop
+close-annealed
+close-banded
+close-barred
+close-bitten
+close-bodied
+close-bred
+close-buttoned
+close call
+close-clad
+close-clapped
+close-clipped
+close-coifed
+close-compacted
+close-connected
+close-couched
+close-coupled
+close-cropped
+close-curled
+close-curtained
+close-cut
+closed-circuit
+closed-circuit cell
+closed-circuit grinding
+closed-circuit winding
+closed-coil
+closed-coil armature
+close-drawn
+close-eared
+close-fertilize
+close-fibered
+close fit
+close-fitting
+close-gleaning
+close-grain
+close-grained
+close-grated
+close harmony
+close-hauled
+close-headed
+close-herd
+close-hooded
+close-jointed
+close-kept
+close-knit
+close-latticed
+close-legged
+close line
+close-lipped
+close-lying
+close-meshed
+close-minded
+close-out
+close-packed
+close-partnered
+close-pent
+close-piled
+close-pressed
+close-reefed
+close-ribbed
+close-rounded
+close-set
+close-shanked
+close-shaven
+close-shut
+close-soled
+close-standing
+close-sticking
+closet drama
+close-tempered
+close-thinking
+close-tongued
+close-up
+close-visaged
+close-winded
+close-woven
+close-written
+closing error
+closing machine
+cloth-backed
+cloth baler
+cloth beam
+cloth beetler
+cloth binding
+cloth board
+cloth brusher
+cloth-calendering
+cloth carbonizer
+cloth cleaner
+cloth clipper
+cloth-covered
+cloth-cropping
+cloth cutter
+cloth-cutting
+cloth doubler
+cloth dresser
+cloth drier
+cloth-drying
+cloth-dyeing
+clothes beater
+clothes chest
+clothes closet
+clothes-drying
+clothes hamper
+clothes hanger
+clothes louse
+clothes maid
+clothes moth
+clothes peg
+clothes pole
+clothes post
+clothes presser
+clothes rack
+clothes screen
+clothes spoiling
+clothes stick
+clothes tree
+clothes-washing
+clothes wringer
+cloth-faced
+cloth finisher
+cloth-finishing
+cloth folder
+cloth-folding
+cloth fuller
+cloth hall
+clothing wool
+cloth-inserted
+cloth lapper
+cloth-laying
+cloth-lined
+cloth measure
+cloth measurer
+cloth-measuring
+cloth mercer
+cloth miller
+cloth napper
+cloth numberer
+cloth oil
+cloth packer
+cloth paper
+cloth piecer
+cloth plate
+cloth press
+cloth presser
+cloth printer
+cloth prover
+cloth red
+cloth scourer
+cloth shearer
+cloth-shearing
+cloth shrinker
+cloth-shrinking
+cloth slitter
+cloth-smoothing
+cloth sorter
+cloth-sponger
+cloth-spreading
+cloth stamper
+cloth-stamping
+cloth stitch
+cloth stretcher
+cloth tenter
+cloth tester
+cloth-testing
+cloth warper
+cloth weaver
+cloth-weaving
+cloth weigher
+cloth-winding
+cloth-yard
+cloud-ascending
+cloud band
+cloud bank
+cloud banner
+cloud-barred
+cloud belt
+cloud-born
+cloud-built
+cloud-capped
+cloud chamber
+cloud city
+cloud-compacted
+cloud-compeller
+cloud-compelling
+cloud-covered
+cloud-crammed
+cloud-crossed
+Cloud-cuckoo-land
+cloud-curtained
+cloud-dispelling
+cloud-dividing
+cloud drift
+cloud-drowned
+cloud-eclipsed
+cloud-enveloped
+cloud-flecked
+cloud forest
+cloud funnel
+cloud-girt
+cloud grass
+cloud gray
+cloud-headed
+cloud-hidden
+cloud-kissing
+cloud-laden
+cloud-led
+cloud-piercing
+cloud point
+cloud rack
+cloud ring
+cloud-rocked
+cloud-scaling
+cloud-shaped
+cloud stone
+cloud-surmounting
+cloud-surrounded
+cloud-topped
+cloud-touching
+cloud-woven
+cloud-wrapped
+clout nail
+clout-shoe
+clout shoot
+clout shot
+clove brown
+clove carnation
+clove cassia
+clove cinnamon
+clove currant
+clove gillyflower
+clove hitch
+clove hook
+cloven foot
+cloven-footed
+cloven-footedness
+cloven-hoofed
+clove nutmeg
+clove oil
+clove pepper
+clove pink
+clover aphid
+clover bloom
+clover blossom
+clover broom
+clover broomrape
+clover cent
+clover dodder
+clover fern
+clover grass
+clover hay
+clover hay worm
+clover head
+clover leaf
+clover-leaf midge
+clover mite
+clover root
+clover root borer
+clover rot
+clover seed
+clover-seed midge
+clover-sick
+clover-sickness
+clover stubble
+clover weevil
+clover wilt
+clover worm
+clove-strip
+clove tree
+club-armed
+club car
+club chair
+club cheese
+club compass
+club-ended
+clubfoot moss
+club fungus
+club grass
+club head
+club-headed
+club-high
+club law
+club link
+club mold
+club moss
+club-moss family
+club palm
+club rush
+club sandwich
+club-shaped
+club shell
+club skate
+club steak
+club tooth
+club topsail
+club wheat
+clumber spaniel
+clump block
+clump foot
+clump-head grass
+clumsy-fisted
+Cluny guipure
+Cluny lace
+cluster bean
+cluster cup
+cluster-cup lichen
+cluster-cup stage
+cluster fig
+cluster fir
+cluster flower
+cluster fly
+cluster pine
+cluster variable
+cluster wheat
+clutch shaft
+Clydesdale terrier
+C major
+C minor
+C natural
+coach box
+coach carver
+coach dog
+coach driver
+coach driving
+coach guard
+coach hire
+coach horse
+coach house
+coach painter
+coach road
+coach screw
+coachwhip bird
+coachwhip snake
+coadjutor bishop
+coal backer
+coal backing
+coal ball
+coal barge
+coal barrow
+coal basket
+coal-bearing
+coal-black
+coal blacking
+coal blende
+coal-blue
+coal boat
+coal-boring
+coal brass
+coal breaker
+coal-breaking
+coal bucket
+coal bunker
+coal-burning
+coal car
+coal cart
+coal cartman
+coal cellar
+coal checker
+coal chute
+coal cleaner
+coal contractor
+coal conveyer
+coal crusher
+coal cutter
+coal-cutting
+coal-dark
+coal depot
+coal digger
+coal discharger
+coal dredger
+coal drill
+coal dump
+coal-dumping
+coal dust
+coal-elevating
+coal elevator
+coal-eyed
+coal-faced
+coal field
+coal-fired
+coal flap
+coal fleet
+coal gas
+coal goose
+coal grinder
+coal-handling
+coal hauler
+coal hawker
+coal heaver
+coal hewer
+coal hod
+coal hoist
+coaling station
+coal kiln
+coal labeler
+coal-laden
+coal leveler
+coal-leveling
+co-allied
+coal loader
+coal-loading
+coal lumper
+co-ally
+coal measures
+coal-meter
+coal mine
+coal miner
+coal mining
+coal oil
+coal operator
+coal passer
+coal picker
+coal-picking
+coal pipe
+coal plant
+coal pocket
+coal producer
+coal-producing
+coal pulverizer
+coal-pulverizing
+coal refiner
+coal scoop
+coal screen
+coal screener
+coal scuttle
+coal shaker
+coal ship
+coal shovel
+coal shoveler
+coal sieve
+coal-sifting
+coal sorter
+coal spreader
+coal sprinkler
+coal stacker
+coal storage
+coal tallyman
+coal tar
+coal-tar crude
+coal-tester
+coal tipper
+coal tipple
+coal tit
+coal tongs
+coal trimmer
+coal truck
+coal unloader
+coal wagon
+coal washer
+coal washery
+coal weigher
+coal wharf
+coal wharfinger
+coal-whipper
+coal-whipping
+coal workings
+coal works
+coarse-featured
+coarse-fibered
+coarse-grained
+coarse-grainedness
+coarse-haired
+coarse-handed
+coarse-lipped
+coarse-minded
+coarse-skinned
+coarse-spoken
+coarse-spun
+coarse-tongued
+coarse-toothed
+coarse-wrought
+coast artillery
+coast belt
+coaster brake
+coast fever
+coast-fishing
+coast grass
+coast guard
+coasting lead
+coast jointweed
+coast lily
+coast live oak
+coast nutmeg
+coast patrol
+coast pilot
+coast rat
+coast redwood
+Coast salish
+coast station
+coast trade
+coat armor
+coat arms
+coat card
+coat flower
+coat hanger
+coating paper
+coat money
+coat shirt
+cobalt bloom
+cobalt blue
+cobalt bronze
+cobalt chloride
+cobalt crust
+cobalt glance
+cobalt glass
+cobalt green
+cobalt red
+cobalt sulphate
+cobalt ultramarine
+cobalt violet
+cobalt vitriol
+cobalt yellow
+cobble coal
+cobble gravel
+cobble rammer
+cob cactus
+cob coal
+cob meal
+cob money
+cobra-hooded
+cobra plant
+cob swan
+cob wall
+cobweb bird
+cobweb houseleek
+cobweb micrometer
+cocaine family
+cocaine plant
+cocculus indicus
+coccygeo-anal
+coccygeo-mesenteric
+cochil sapota
+Cochin china ulcer
+cochineal cactus
+cochineal fig
+cochineal insect
+Cochin ginger
+cochin oil
+cochit zapotl
+cochleariform process
+cochylis moth
+cock-a-doodle
+cock-a-doodle-doo
+cock-a-hoop
+cock-a-hooping
+cock-a-hoopish
+cock-a-hoopness
+cock ale
+cockatoo bush
+cockatoo farmer
+cockatoo fence
+cockatoo fish
+cockatoo grass
+cockatoo orchis
+cockatoo parakeet
+cock bead
+cock-brained
+cock bread
+cock broth
+cocker spaniel
+cocket center
+cockeye pilot
+cock feather
+cock-feathered
+cock-feathering
+cocking cart
+cock-laird
+cockle-bread
+cockle button
+cockle garden
+cockle hat
+cockle-headed
+cockle oast
+cockle stairs
+cockle stove
+cockle strewer
+cockle wheat
+Cock lorel
+cock metal
+cock penny
+cock robin
+cock schnapper
+cockscomb grass
+cock sorrel
+cock sparrow
+cock-sparrowish
+cockspur flower
+cockspur grass
+cockspur hawthorn
+cockspur rye
+cockspur thorn
+cockspur vine
+cock-stride
+cock-tailed
+cocktail sauce
+cocktail shaker
+cock-throppled
+cockyolly bird
+co-clause
+cocoa beans
+cocoa brown
+cocoa butter
+cocoa plant
+cocoa presser
+cocoa red
+cocoa sedge
+cocoa tea
+coco grass
+coconut beetle
+coconut brown
+coconut bud rot
+coconut cake
+coconut crab
+coconut jelly
+coconut meal
+coconut mealy bug
+coconut milk
+coconut oil
+coconut palm
+coconut-palm rot
+coconut shy
+coconut walk
+coconut water
+coco palm
+coco plum
+coco sedge
+coda mark
+coddy-moddy
+code duello
+cod end
+code pennant
+code state
+codfish aristocracy
+cod line
+codling moth
+cod liver
+cod-liver meal
+cod-liver oil
+cod net
+cod oil
+cod-smack
+coercive force
+coffee bar
+coffee bean
+coffee berry
+coffee-blending
+coffee blight
+coffee borer
+coffee bread
+coffee break
+coffee-brown
+coffee cherry
+coffee-cleaning
+coffee-color
+coffee-colored
+coffee corn
+coffee cream
+coffee cup
+coffee disease
+coffee-faced
+coffee fern
+coffee-grading
+coffee grinder
+coffee-grinding
+coffee-imbibing
+coffee-making
+coffee mill
+coffee nib
+coffee nut
+coffee pea
+coffee plant
+coffee planter
+coffee-planting
+coffee-polishing
+coffee roaster
+coffee-roasting
+coffee-scented
+coffee senna
+coffee shell
+coffee stall
+coffee strainer
+coffee tree
+coffee wit
+cofferdam bulkhead
+coff-fronted
+coffin boat
+coffin bone
+coffin carrier
+coffin-fashioned
+coffin finisher
+coffin handle
+coffin-headed
+coffin joint
+coffin-joint lameness
+coffin nail
+coffin plate
+coffin-shaped
+coffin spark
+coffin text
+coffin trimmer
+cogging mill
+cognac oil
+cogwheel respiration
+Co-hong
+cohune fat
+cohune nut
+cohune oil
+coil bobbin
+coil box
+coiler can
+coiler plate
+coil-filling
+coil former
+coil pottery
+coil-testing
+coil-winding
+coinage ratio
+coin assorter
+coin bag
+coin box
+coin case
+coin changer
+coin check
+coin collector
+coin-controlled
+coin counter
+coin-counting
+coin envelope
+coin fancier
+coin gold
+coin guard
+coin holder
+coining press
+coining punch
+coin lock
+coin-made
+coin-operated
+coin-operating
+coin planchet
+coin pouch
+coin ringer
+coin sack
+coin-separating
+coin-shaped
+coin shell
+coin silver
+coin slot
+coin sorter
+coin stamper
+coinsurance clause
+coin tester
+coin tray
+coin-weighing
+coin weight
+coin wrapper
+coke breeze
+coke dust
+coke iron
+coke oven
+coke plate
+coker-sack
+coke tin
+coke tower
+cola seed
+colatitude circle
+colcannon night
+colchicum root
+cold abcess
+cold blast
+cold-blooded
+cold-bloodedly
+cold-bloodedness
+cold-braving
+cold-catching
+cold-chisel
+cold-complexioned
+cold-cream
+cold-draw
+cold-drawing
+cold-drawn
+cold-engendered
+cold-faced
+cold-flow
+cold-forge
+cold-hammer
+cold-hammered
+cold-head
+cold-meat fork
+cold-natured
+cold-nipped
+cold-pack method
+cold-patch
+cold-pated
+cold-press
+cold-producing
+cold-roll
+cold-rolled
+cold-saw
+cold-short
+cold-shortness
+cold-shoulder
+cold-shut
+cold-slain
+cold-spirited
+cold-storage
+cold-store
+cold straightener
+cold-swage
+cold-sweat
+cold-taking
+cold-water glue
+cold-water paint
+cold-wave flag
+cold-white
+cold-work
+colen-bell
+cole titmouse
+colewort green
+co-life
+coliseum ivy
+collapse ring
+collapsing tap
+collar bag
+collar beam
+collar bearing
+collar blight
+collar bolt
+collar-bound
+collar box
+collar button
+collar buttoner
+collar case
+collar cell
+collar cutter
+collar-cutting
+collar day
+collar disease
+collar edger
+collar fastener
+collar finisher
+collar fungus
+collar gauge
+collar girdle
+collar iron
+collar ironer
+collar machinist
+collar maker
+collar making
+collar nut
+collar pad
+collar polisher
+collar rot
+collar shaper
+collar-shaping
+collar starcher
+collar stitcher
+collar stud
+collar tie
+collar-to-collar
+collar-wearing
+collar work
+collating mark
+collecting battalion
+collecting hair
+collector ring
+colleen deas
+colleen donn
+college-bred
+college cap
+college church
+college ice
+college man
+college pheasant
+college pudding
+college widow
+college year
+Collery horn
+Collery stick
+collet chuck
+colliery manager
+collimating eyepiece
+collimating lens
+collimation axis
+collimation error
+collimation line
+collimation plane
+collision bulkhead
+collision clause
+collision insurance
+collision-proof
+collodion cotton
+collodion process
+colloid carcinoma
+colloid chemistry
+cologne plant
+colon bacillus
+Colonel bogey
+colonel commandant
+colonel-commandantship
+Colonel fuller
+colonel general
+colorado loco vetch
+color analysis
+color analyzer
+color balance
+color-ball pool
+color bar
+color base
+color-bearer
+color blender
+color-blind
+color blindness
+color blocker
+color blower
+color box
+color brush
+color camera
+color card
+color cell
+color changeling
+color chart
+color chest
+color cinematography
+color circle
+color company
+color cone
+color constant
+color contrast
+color cycle
+color designer
+color diagram
+color dimension
+color doctor
+color dominance
+color dryer
+color drying
+color dry sifter
+color dyer
+color emissivity
+color etcher
+color-fading
+color filter
+color-free
+color gamut
+color grinder
+color-grinding
+color guard
+color hearing
+color index
+coloring tool
+color intensity
+color line
+color matcher
+color-matching
+color measurement
+color mill
+color miller
+color mixer
+color mixture
+color-mixture curve
+color music
+color musician
+color organ
+color party
+color phase
+color photography
+color point
+color print
+color printing
+color quality
+color ratio
+color salute
+color scale
+color scheme
+color screen
+color sense
+color-sensitize
+color sentinel
+color separation
+color sergeant
+color slab
+color solid
+color spectrum
+color spreader
+color striker
+color target
+color temperature
+color-testing
+color tone
+color top
+color tree
+color vision
+color wash
+color-washed
+color weakness
+color wheel
+color zone
+Colour index
+colpach heifer
+colt ale
+colt distemper
+colt evil
+colt-herb
+Colt revolver
+coltsfoot snakeroot
+Columbatz fly
+Columbia formation
+Columbia lava plateau
+columbine blue
+columbium pentoxide
+columbo wood
+Columbus day
+columella auris
+columella cranii
+Columna bellica
+columna rostrata
+columnar structure
+column bone
+column formula
+column inch
+column lathe
+column rule
+column shaper
+column still
+colza oil
+Coma berenices
+Coma berenicid
+coma vigil
+combat group
+combat intelligence
+combat post
+combat practice
+combat service
+combat train
+combat unit
+combat zone
+comb-back
+comb bearer
+comb-broach
+comb-brush
+comb-building
+comb case
+comb disease
+comb duck
+Combe-capelle
+comber board
+comb fern
+comb-footed
+comb foundation
+comb-fringed grass
+comb grain
+comb-grained
+comb holder
+comb honey
+combination analysis
+combination button
+combination car
+combination center drill
+combination chuck
+combination crossing
+combination fuse
+combination jig
+combination last
+combination lathe
+combination lock
+combination longwall
+combination note
+combination pedal
+combination piston
+combination plane
+combination plate
+combination plow
+combination rate
+combination room
+combination rubber
+combination shot
+combination square
+combination tone
+combing hair
+combing machine
+combining weight
+comb jelly
+comb marbling
+comb-out
+comb pot
+comb pottery
+comb rat
+comb-shaped
+comb speedwell
+comb-toothed shark
+combustion cell
+combustion chamber
+combustion engine
+combustion engineer
+combustion engineering
+combustion furnace
+combustion lag
+combustion method
+combustion motor
+combustion spoon
+combustion train
+combustion tube
+combust way
+comb ware
+comb wheat grass
+come-all-ye
+come-along
+come-at-ability
+come-at-able
+come-at-ableness
+come-between
+comedy ballet
+comedy drama
+come-hither
+come-hithery
+comely-featured
+come-off
+come-on
+come-out
+come-outer
+comet aster
+comet finder
+comet seeker
+comfort station
+comic-iambic
+comic strip
+comic supplement
+coming in
+coming-on
+coming out
+Comitia centuriata
+Comitia curiata
+Comitia tributa
+comma bacillus
+comma blunder
+command post
+comma splice
+commelina blue
+commendation ninepence
+commerce destroyer
+commerce raider
+commerce raiding
+commercial engineer
+commercial engineering
+commissary court
+commissary general
+commission day
+commissioner-general
+commission-manager plan
+commission merchant
+commission officer
+commission plan
+committee stage
+commode step
+commodity dollar
+commodity money
+commodity paper
+common-law
+common-law estoppel
+common-law lien
+common-law marriage
+common-law trust
+commonplace book
+common reed
+communication room
+communications zone
+communication trench
+community center
+community chest
+community church
+community house
+community supervision
+community trust
+commutating pole
+commutation ticket
+commutative algebra
+commutative contract
+commutator filling
+commutator pitch
+commutator shell
+commutator subgroup
+Como formation
+companion cell
+companion crop
+companion cropping
+companion flange
+companion hatch
+companion hatchway
+companion ladder
+company man
+company reserve line
+company store
+company union
+comparison lamp
+comparison slip
+comparison spectrum
+comparison star
+compass bearing
+compass board
+compass bowl
+compass brick
+compass calipers
+compass card
+compass corrector
+compass dial
+compass error
+compass flower
+compass-headed
+compass key
+compass plane
+compass plant
+compass rafter
+compass roof
+compass rose
+compass saw
+compass weed
+compensation act
+compensation balance
+compensation bar
+compensation insurance
+compensation law
+compensation pendulum
+compensation water
+complement-binding
+complement deviation
+complement-fixing
+completion test
+composed throughout
+composing rule
+composing stick
+composite arch
+composite balance
+composition carver
+composition cloth
+composition face
+composition factor
+composition formula
+composition metal
+composition pedal
+composition piston
+composition roofing
+composition series
+compos mentis
+compost heap
+compound-wound
+compressed-air drill
+compression bib
+compression coupling
+compression cup
+compression member
+compression ratio
+compression spring
+compression stroke
+compression tap
+compromise formation
+compromise joint
+compulsion neurosis
+computing machine
+computing scale
+Comstock lode
+concatenation control
+concatenation system
+concavo-concave
+concavo-convex
+concentration ring
+concert band
+concert border
+concert etude
+concert grand
+concert overture
+conch hat
+concho grass
+conch shell
+conciliation court
+Concord buggy
+concrete block
+concrete layer
+concrete mixer
+concrete paint
+concussion bellows
+concussion fuse
+condensation point
+condenser antenna
+condenser microphone
+condensing engine
+condensing hygrometer
+condensing lens
+condictio triticaria
+conduction current
+conduct money
+conductor head
+conductor plug
+conductor rail
+conduit box
+conduit pipe
+conduit railway
+conduit system
+cone adaptation
+cone anchor
+cone bearing
+cone-billed
+cone bit
+cone brake
+cone center
+cone chuck
+cone clutch
+cone compass
+cone coupling
+cone delta
+cone friction clutch
+cone gamba
+cone-headed
+conehead rivet
+conehead toggle
+cone joint
+cone key
+cone lathe
+cone mandrel
+Conemaugh formation
+cone number
+cone pepper
+cone plate
+cone pulley
+cone-shaped
+cone shaver
+cone shell
+cone speaker
+Conestoga wagon
+cone tree
+cone valve
+cone wheat
+cone wheel
+coney parsley
+confectionery decorator
+conference room
+confession equality
+confidence game
+confidence man
+conform map projection
+conform representation
+congee house
+conger doust
+conger eel
+conglobate gland
+Congo brown
+Congo dye
+congress boot
+congruence sign
+conical-shaped
+conico-cylindrical
+conico-elongate
+conico-hemispherical
+conico-ovate
+conico-ovoid
+conico-subhemispherical
+conico-subulate
+coniferyl alcohol
+conjugation canal
+conjugation cell
+conjugato-palmate
+conjugato-pinnate
+conjure man
+con man
+connate-perfoliate
+connection angle
+connection bar
+conning tower
+conoido-hemispherical
+conoido-rotundate
+conscience clause
+conscience-proof
+conscience-smitten
+conscience-stricken
+conscience-striken
+consent decree
+consent rule
+consignment marketing
+Consistory court
+consolation game
+consolation match
+console table
+consonant shifting
+Constitution state
+construct form
+construction bond
+construction engineer
+construction engineering
+construct state
+consulate general
+consul general
+consumer credit
+consumption goods
+consumption weed
+contact action
+contact agent
+contact flight
+contact flying
+contact lens
+contact maker
+contact making
+contactor switch
+container car
+contango day
+content subject
+continent-wide
+contingency method
+continuation day
+continuation school
+continuity writer
+contour check
+contour curve
+contra-acting
+contra-approach
+contra bassoon
+contract bond
+contract bridge
+contractile cell
+contraction fit
+contraction rule
+contraction theory
+contract quasi
+contra-ion
+contrary-minded
+contrary motion
+contrary terms
+contra trombone
+contribution clause
+control account
+control assay
+controller general
+conval lily
+convection current
+convent cloth
+Conventicle acts
+Convention parliament
+convergence frequency
+convergency factor
+conversation piece
+converse motion
+conversion cost
+convex-concave
+convexo-concave
+convexo-convex
+convexo-plane
+convex point set
+convex polygon
+convict goods
+convolvulus moth
+convulsion root
+cony-catch
+co-obligant
+co-oblige
+co-obligor
+co-occupant
+co-occupy
+coochin york
+coo-coo
+cooee bird
+cook-general
+cook wrasse
+cooky cutter
+coom-ceiled
+co-omnipotent
+co-omniscient
+coon bear
+coon cat
+co-op
+cooped-in
+co-operable
+co-operancy
+co-operant
+co-operate
+co-operation
+co-operationist
+co-operative
+co-operatively
+co-operativeness
+co-operator
+co-operculum
+co-opt
+co-optate
+co-optation
+co-optative
+co-option
+co-optive
+co-ordain
+co-ordainer
+co-order
+co-ordinacy
+co-ordinal
+co-ordinance
+co-ordinancy
+co-ordinate
+co-ordinately
+co-ordinateness
+co-ordination
+co-ordination formula
+co-ordination number
+co-ordinative
+co-ordinator
+co-ordinatory
+co-organize
+co-origin
+co-original
+co-originality
+co-orthogonal
+co-ossification
+co-ossify
+cooter grass
+coot-footed
+co-owner
+co-ownership
+copaiba balsam
+copaiva oil
+copaiye wood
+copal ether
+cope chisel
+cope cutter
+copen blue
+coping stone
+copper acetate
+copper-alloyed
+copperas black
+copper barilla
+copper-bearing
+copper-bellied
+copper-belly
+copper bender
+copper-bottomed
+copper brazer
+copper caster
+copper-coated
+copper-colored
+copper-covered
+copper engraver
+copper extractor
+copper-faced
+copper-fastened
+copper foil
+copper-headed
+copper-lined
+copper-melting
+copper mill
+copper millman
+copper mine
+copper miner
+copper mining
+copperplate press
+copper refiner
+copper refinery
+copper-skinned
+copper smelter
+copper-smelting
+copper-toed
+copper worker
+coppery-tailed
+coppice-feathered
+coppice oak
+coppice shoot
+coppice-topped
+copple-crowned
+copra oil
+copse-clad
+copse-covered
+copse cutter
+copy desk
+copy editor
+copy paper
+coquille lens
+coral bead
+coral-beaded
+coral-bead tree
+coral bean
+coral-bound
+coral-built
+coral-buttoned
+coral fern
+coral-fishing
+coral-girt
+coral grinder
+coral island
+Coralline zone
+coral-making
+coral-producing
+coral-red
+coral-rooted
+coral-secreting
+coral snake
+cor arteriosum
+corbel table
+corbel vault
+corbie gable
+corbin bone
+Cor caroli
+cordage tree
+cordate-amplexicaul
+cordate-lanceolate
+cordate-oblong
+cordate-sagittate
+cord conductor
+cord connector
+cord-connector body
+cordeau detonant
+cordeau fuse
+cord grass
+corduroy road
+core-baking
+core bar
+core binder
+core boring
+core builder
+core-cutting
+core-drying
+core flour
+core-jarring
+core sand
+core tester
+core vent
+core wire
+Cor hydrae
+coriander oil
+cork-barked
+cork-bark elm
+cork-bearing
+cork borer
+cork-boring
+cork cutter
+cork-cutting
+cork-forming
+cork-grinding
+cork-heeled
+cork jacket
+cork-lined
+cork puller
+corkscrew flower
+corkscrew grass
+cork shredder
+cork sorter
+corkwood cotton
+corky-headed
+corky-winged
+Cor leonis
+corn-beads
+corn cleaner
+corncob pipe
+corn color
+corn-colored
+Corncracker state
+corn-devouring
+corn drier
+cornea lens
+corn-ear worm
+corn-eater
+cornelian cherry
+corner bead
+corner block
+corner man
+cornet-a-pistons
+corn-exporting
+corn-fed
+corn-feeding
+cornfield pea
+cornflower blue
+corn fritter
+corn grass
+corn grinder
+corn-growing
+corn huller
+cornice brake
+corno flute
+corn picker
+corn-planting
+corn-producing
+corn shock
+corn shocker
+corn shredder
+corn snake
+corn stack
+cornstalk disease
+cornstalk pine
+corn stubble
+corn tester
+corn thresher
+cornu ammonis
+corolla limb
+coromandel wood
+Corona borealis
+corona discharge
+coronal roots
+coronation oath
+corozo nut
+Corporation act
+corps area
+corpse candle
+corpse gate
+Corpus christi
+corpus delicti
+Corpus domini
+correction line
+correlation coefficient
+correspondence school
+corrosion borders
+corrugation irrigation
+Cor scorpii
+Cor serpentis
+corset cover
+corset designer
+cor sinistrum
+Cor tauri
+cortex parenchyma
+corydalis green
+Corypha palm
+cosine circle
+cosmico-natural
+cossack green
+Cossack post
+cost accountant
+costal-nerved
+Costa rican
+cost-free
+cost keeping
+cost ledger
+cost plus
+costume designer
+costus oil
+cotarnine hydrochloride
+cot bar
+cote-hardie
+Cotinga purple
+cottage bonnet
+cottage cheese
+cottage industry
+cotta grass
+cotter drill
+cotter file
+cotter mill
+cotter pin
+cottier system
+cotton anthracnose
+cotton aphid
+cotton back
+cotton-backed
+cotton bagging
+cotton-baling
+cotton baller
+cotton batting
+cotton bill
+cotton-bleaching
+cotton boll
+cotton bollworm
+cotton broker
+cotton buyer
+cotton cake
+cotton candy
+cotton chiffon
+cotton chopper
+cotton-clad
+cotton cleaner
+cotton comber
+cotton-covered
+cotton coverer
+cotton crepe
+cotton cutter
+cotton damask
+cotton dryer
+cotton duck
+cotton-dyeing
+cotton dyer
+cotton factor
+cotton factory
+cotton feeder
+cotton fern
+cotton field
+cotton filler
+cotton floater
+cotton gin
+cotton ginner
+cotton-ginning
+cotton grass
+cotton grower
+cotton-growing
+cotton gum
+cotton harvester
+cotton jenny
+cotton-knitting
+cotton lint
+cotton linters
+cotton mill
+cotton mixer
+cotton moth
+cotton mouse
+cotton mule
+cotton netting
+cotton oil
+cotton opener
+cotton packer
+cotton picker
+cotton-picking
+cotton plant
+cotton planter
+cotton-planting
+cotton plugger
+cotton plush
+cotton pongee
+cotton powder
+cotton preparer
+cotton press
+cotton print
+cotton printer
+cotton-printing
+cotton-producing
+cotton raiser
+cotton rat
+cotton rock
+cotton-root bark
+cotton root rot
+cotton rose
+cotton rush
+cotton rust
+cotton sampler
+cotton-sampling
+cotton seed
+cottonseed cake
+cottonseed feed
+cottonseed meal
+cottonseed oil
+cottonseed tree
+cotton shipper
+cotton-sick
+cotton sled
+cotton sorter
+cotton speeder
+cotton spinner
+cotton-spinning
+cotton spooler
+cotton stainer
+cotton stripper
+cotton sugar
+cotton sweep
+cotton tapestry
+cotton teal
+cotton teaser
+cotton thistle
+cotton thread
+cotton tree
+cotton twist
+cotton twister
+cotton wadding
+cotton warehouseman
+cotton warp
+cotton-weaving
+cotton weigher
+cotton wick
+cotton-wicked
+cotton wicking
+cotton wilt
+cotton winder
+cotton works
+cotton worm
+cotton yarn
+couch bed
+couch grass
+couching stitch
+couch wheat
+cough drop
+cough sirup
+coulee cricket
+coulomb meter
+coumarone resin
+council bill
+council board
+council fire
+council table
+council tool
+counsel-keeper
+count book
+counter borer
+counter-off
+counter relief
+counterscarp gallery
+counter septum
+countertenor clef
+counter timber
+count hook
+counting glass
+counting machine
+counting-out rhyme
+counting room
+counting scales
+count number
+count palatine
+count plate
+country almond
+country bank
+country bishop
+country borage
+country-born
+country-bred
+country club
+country cousin
+country damage
+country-dance
+country day school
+country-fashion
+country fig
+country gentleman
+country gooseberry
+country hide
+country house
+country jake
+country licorice
+country-made
+country mallow
+country party
+country peach
+country pepper
+country rock
+country store
+country-style
+country walnut
+country-wide
+count wheel
+county agent
+county attorney
+county borough
+county constabulary
+county council
+county court
+county fair
+county farm
+county library
+county mutual
+county palatine
+county rate
+county road
+county seat
+county town
+county-wide
+coup-cart
+coup feather
+couple-close
+coupler socket
+coupling box
+coupling coefficient
+coupling pin
+coupling rein
+coupling rod
+coupling strap
+coupon bond
+courbaril copal
+courge green
+coursing joint
+court-baron
+court bond
+court bouillon
+court card
+court cupboard
+court dance
+court day
+court dress
+courtesy light
+courtesy title
+court fool
+court gray
+court guide
+court hand
+courting chair
+courting glass
+court-leet
+court-martial
+court-noue
+court party
+court plaster
+court roll
+courtship-and-matrimony
+court shoe
+court tennis
+co-use
+cousin-german
+cousin-in-law
+Covenant-israel
+Covent garden
+Covent garden theatre
+cove oyster
+cover charge
+cover crop
+cover design
+cover glass
+cover memory
+cover paper
+cover plate
+cover-point
+cover-shame
+cover slip
+cover stone
+covert-baron
+covert cloth
+cover title
+covin-tree
+co-walker
+cow ant
+cow barn
+cow basil
+cow bean
+cow beet
+cowboy boot
+cowboy pool
+cow bunting
+cow byre
+cow chervil
+cow chips
+cow clover
+cow cocky
+cow corn
+cow creamer
+cow cress
+cow-eyed
+cow-fat
+cow garlic
+cow-goddess
+cow grass
+cowhage cherry
+cow-headed
+cow-hitch
+cow hock
+cow-hocked
+co-widow
+co-wife
+co-winner
+cow killer
+cow-lice
+cow lily
+cowl lamp
+cowl-shaped
+cow-mumble
+cow-nosed
+cow oak
+co-work
+co-worker
+co-worship
+cow parsley
+cow parsnip
+cowpea weevil
+cowpea wilt
+cow pilot
+cow plant
+cow poison
+cow pony
+cow rattle
+cowry bird
+cow shark
+cow sorrel
+cow-stealing
+cow testing
+cow thistle
+cow tree
+cow vetch
+coy duck
+coyote blast
+coyote weed
+C power supply
+crab apple
+crabbing machine
+crab cactus
+crab claw
+crabeater seal
+crab-eating
+crab-faced
+crab float
+crab grass
+crab harrow
+crab locomotive
+crab louse
+crab meat
+Crab nebula
+crab nut
+crab oil
+crab plover
+crab pot
+crab reel locomotive
+crab-shed
+crab spider
+crab stock
+crab thistle
+crab tree
+crab winch
+cracker bonbon
+cracker mill
+cracker-off
+cracker-open
+cracking still
+crackling bread
+crack-loo
+crack-the-whip
+crack-up
+crack willow
+cradle bar
+cradle book
+cradle cannon
+cradle holding
+cradle orchid
+cradle roll
+cradle roof
+cradle scythe
+cradle-shaped
+cradle snatcher
+cradle snatching
+cradle vault
+craft guild
+craft paper
+craft union
+craft unionist
+crag-bound
+crag-built
+crag-carven
+crag-covered
+crag-fast
+crag martin
+crag swallow
+crake-needles
+cram-full
+cramp bark
+cramp bone
+cramp iron
+cramp ring
+cranberry blast
+cranberry bog
+cranberry bush
+cranberry gall
+cranberry gourd
+cranberry marsh
+cranberry scald
+cranberry tree
+cranberry worm
+crance iron
+crane driver
+crane fly
+crane gray
+crane line
+cranio-acromial
+cranio-aural
+cranium amulet
+crank arm
+crank axle
+crank brace
+crank chain
+crank-driven
+crank hanger
+crank path
+crank pit
+crank plane
+crank press
+crank shaper
+crank-sided
+crank throw
+crank web
+crank wheel
+crapaud stone
+crape fern
+crape myrtle
+crape needle
+crape ring
+crap game
+crap grass
+crappit head
+crap shooting
+crap table
+crash cymbal
+crash dive
+crash-land
+crash program
+cratch cradle
+crater basin
+craw-craw
+crawl-a-bottom
+crawler tractor
+crawl-up
+crayon board
+crazed-headed
+crazy bone
+crazy-drunk
+crazy-headed
+crazy-looking
+crazy-mad
+crazy-pate
+cream beige
+cream buff
+cream buyer
+cream caustic
+cream cheese
+cream-color
+cream-colored
+cream cooler
+cream dipper
+cream-faced
+cream-flowered
+cream freezer
+cream gatherer
+cream gauge
+cream ladle
+cream nut
+cream pitcher
+cream puff
+cream sauce
+cream separator
+cream-slice
+cream soup
+cream-soup cup
+cream-soup spoon
+cream stirrer
+cream tester
+cream tube
+cream whip
+cream whipper
+cream-white
+cream-yellow
+Creation epic
+creature comfort
+credence shelf
+credence table
+credentials committee
+credenza bookcase
+credenza buffet
+credit currency
+credit instrument
+credit insurance
+credit line
+credit man
+credit money
+credit slip
+credit union
+Credo play
+creek broadbill
+creek chub
+creek duck
+creek fern
+creek grass
+creek gum
+creek maple
+creek nettle
+creek sedge
+creek thatch
+creeper tractor
+creeping sheet
+creeping sickness
+Cree potato
+crenate-leaved
+crenate-toothed
+creole dialect
+creosote bush
+creosote carbonate
+creosote oil
+crepe-backed
+crepe lisse
+crepe meteor
+crepe paper
+crepe rubber
+crepe suzette
+crescendo pedal
+crescent-formed
+crescent-lit
+crescent-pointed
+crescent-shaped
+crescent spot
+cresol iodide
+cresol red
+cress family
+cress green
+cress rocket
+crest coronet
+crested hair grass
+crest factor
+crest table
+crest tile
+crest voltmeter
+Creto-mycenaean
+crew-cropped
+crew cut
+crewel needle
+crewel stitch
+crew haircut
+crew list
+crew neck
+crew-necked
+crew neckline
+cribbage board
+crib-bite
+crib-biter
+crib biting
+crib strap
+cricket-bat willow
+cricket bird
+cricket frog
+cricket teal
+crime wave
+criminal anthropology
+criminal conversation
+criminal law
+crimping brake
+crimping house
+crimping iron
+crimping pin
+crimpy-haired
+crimson-banded
+crimson-barred
+crimson-billed
+crimson-carmine
+crimson-colored
+crimson-dyed
+crimson-fronted
+crimson-lined
+crimson-petaled
+crimson-purple
+crimson-scarfed
+crimson-spotted
+crimson-tipped
+crimson-veined
+crimson-violet
+Crim tatar
+cringle-crangle
+crinkle-crankle
+crinkly-haired
+crinkum-crankum
+cripple stopper
+crisped-leaved
+crisping iron
+crisping pin
+crisp-leaved
+crissal thrasher
+crisscross inheritance
+critico-analytically
+critico-historical
+critico-poetical
+critico-theological
+croaking sac
+Croatan indian
+crochet file
+crockery cement
+crocodile bird
+crocodile shears
+crocodile squeezer
+crocodile tears
+crocus antimonii
+crocus bag
+crocus cloth
+crocus metallorum
+crocus sack
+Cro-magnon
+Cro-magnon race
+Crommyonian sow
+crooked-backed
+crooked-billed
+crooked-branched
+crooked-clawed
+crooked-eyed
+crooked-foot
+crooked-legged
+crooked-limbed
+crooked-lined
+crooked-lipped
+crooked-nosed
+crooked-pated
+crooked-shouldered
+crooked-stemmed
+crooked-toothed
+crooked-winged
+crooked-wood
+crook rafter
+croon song
+crop-bound
+crop drier
+crop-ear
+crop-eared
+crop-farming
+crop-full
+crop grass
+crop-haired
+crop-headed
+crop hide
+crop index
+crop-nosed
+crop pasture
+crop-producing
+crop rotation
+crop seed
+crop-shaped
+crop-tailed
+cross action
+cross-adoring
+cross agglutination
+cross aisle
+cross-appeal
+cross-armed
+cross axle
+cross-banded
+cross-banding
+crossbar micrometer
+crossbar shot
+cross-bearer
+cross-bearing
+cross bearings
+cross-bedded
+cross-bedding
+cross-bench
+cross-benched
+cross-benchedness
+cross-bencher
+cross-bias
+cross-biased
+cross-biassed
+cross-bind
+cross birth
+cross bit
+cross bitt
+cross bond
+cross brace
+cross bracing
+cross break
+cross-bridge
+cross bridging
+cross-brush
+cross buck
+cross bun
+cross-buttock
+cross-buttocker
+cross-carve
+cross-channel
+cross-check
+cross-church
+cross-claim
+cross complaint
+cross-compound
+cross-connect
+cross correspondence
+cross counter
+cross-country
+cross-cousin
+cross-crosslet
+cross-curve
+crosscut chisel
+crosscut file
+crosscut method
+crosscut saw
+crosscut-saw file
+cross cylinder
+cross-datable
+cross-date
+cross-drain
+cross drawing
+cross-dye
+cross-dyeing
+crosse check
+crossed-out
+cross education
+cross-elbowed
+cross estoile
+cross-examine
+cross-examiner
+cross-eye
+cross-eyed
+cross-eyedness
+cross-face
+cross facet
+cross fault
+cross-feed
+cross-fertile
+cross-fertilizable
+cross-fertilization
+cross-fertilize
+cross-fiber
+cross field
+cross file
+cross-finger
+cross-fingered
+cross fire
+cross-fissured
+cross flute
+cross flux
+cross-folded
+cross forked
+cross-fur
+cross-gagged
+cross-garnet
+cross grain
+cross-grained
+cross-grainedly
+cross-grainedness
+cross guard
+cross hair
+cross-handed
+cross-handled
+cross-hatcher
+cross-hatching
+cross-headed
+cross heading
+cross hilt
+cross-hilted
+cross-immunity
+cross-immunization
+cross index
+crossing file
+crossing sweeper
+cross-interrogate
+cross-interrogatory
+cross-invite
+cross-jack yard
+cross-joined
+cross-jostle
+cross keelson
+cross keys
+cross kick
+cross-laced
+cross-laminated
+cross-latticed
+cross-leaved
+cross-legged
+cross-leggedly
+cross-leggedness
+cross-level
+cross liability
+cross-license
+cross-lift
+cross lock
+cross-locking
+cross lode
+cross-lots
+cross-lot strut
+cross-magnetizing field
+cross-marked
+cross-mate
+cross mint
+cross modulation
+cross multiplication
+cross order
+cross-out
+cross-out test
+cross-pawl
+cross-peal
+cross peen
+cross-piled
+cross-plow
+cross-pollenize
+cross-pollinate
+cross-pollination
+cross potent
+cross product
+cross-purpose
+cross-question
+cross-questionable
+cross-ratio
+cross-ratio group
+cross-reaction
+cross-refer
+cross reference
+cross relation
+cross remainder
+cross rhythm
+cross sea
+cross seat
+cross section
+cross-sectional
+cross-section paper
+cross-shaped
+cross sighting
+cross signal
+cross slide
+cross-spale
+cross-spall
+cross spider
+cross springer
+cross-staff
+cross-star
+cross-sterile
+cross-sterility
+cross-stitch
+cross-stitch canvas
+cross-stone
+cross strap
+cross-stratification
+cross-stratified
+cross street
+cross-striated
+cross-striped
+cross stroke
+cross-sue
+cross-surge
+cross tag
+cross-tine
+cross-town
+cross turret
+cross vault
+cross-vaulted
+cross-vaulting
+cross vein
+cross-veined
+cross vine
+cross-voting
+cross whitefish
+cross-wind force
+cross wire
+cross-worder
+crossword puzzle
+cross-wrapped
+crotch chain
+crotch tongue
+croton-chloral hydrate
+croton oil
+crouch ware
+croup kettle
+crowberry family
+crow blackbird
+crow call
+crow corn
+crowd grass
+crowding engine
+crow duck
+crow fig
+crow flight
+crowfoot family
+crowfoot grama
+crowfoot grass
+crowfoot violet
+crow garlic
+crow ling
+crown aloes
+crown animalcule
+crown antler
+crown bar
+crown block
+crown brace
+crown canker
+crown canopy
+crown cap
+crown-capping machine
+crown class
+crown colony
+crown cork
+crown daisy
+crown debt
+crown density
+crow needle
+crown escapement
+crown filler
+crown fire
+crown gall
+crown gate
+crown gear
+crown glass
+crown gold
+crown grafting
+crown gum
+crown head
+crown imperial
+crown knot
+crown land
+crown law
+crown lawyer
+crown leather
+crown lens
+crown living
+crown monkey
+crown octavo
+crown office
+crown palm
+crown paper
+crown piece
+crown pigeon
+crown plate
+crown post
+crown prince
+crown princess
+crown prosecutor
+crown pulley
+crown roast
+crown rot
+crown-rump length
+crown rust
+crown saw
+crown scab
+crown-shaped
+crown sheet
+crown shell
+crown side
+crown sparrow
+crown system
+crown tax
+crown tile
+crown vent
+crown vetch
+crown wart
+crown wheel
+crown-wheel escapement
+crownwort family
+crow onion
+crow pea
+crow pheasant
+crow poison
+crow-quill
+crow sheaf
+crow shrike
+crow-silk
+crow-soap
+crow tit
+crow-tread
+crow-victuals
+crucible furnace
+crucible steel
+crucifixion thorn
+cruet stand
+cruiser stern
+cruiser weight
+cruising radius
+crumb brush
+crupper bone
+crush breccia
+crush conglomerate
+crusher sand
+crush hat
+crushing rolls
+crush plane
+crush zone
+crust fold
+crust fracture
+crust-hunt
+crust-hunter
+crust-hunting
+crust roan
+crutch-cross
+Crutched friar
+crutch paralysis
+crutch stake
+cryolite glass
+Crypto-calvinism
+Crypto-calvinist
+Crypto-calvinistic
+Crypto-catholic
+Crypto-catholicism
+Crypto-christian
+Crypto-fenian
+Crypto-jesuit
+Crypto-jew
+Crypto-jewish
+Crypto-protestant
+Crypto-royalist
+Crypto-socinian
+crystal carbonate
+crystal-clear
+crystal detector
+crystal-dropping
+crystal flower
+crystal-flowing
+crystal form
+crystal-gazer
+crystal gazing
+crystal-girded
+crystal glass
+crystal gray
+crystal-leaved
+crystal malt
+Crystal palace
+crystal-palace blue
+crystal-palace green
+crystal-producing
+crystal rectifier
+crystal sand
+crystal set
+crystal-smooth
+crystal-streaming
+crystal tea
+crystal vinegar
+crystal violet
+crystal vision
+crystal water
+crystal-winged
+C-shaped
+C-sharp
+C-sharp minor
+C spring
+C-star
+C three
+cub-drawn
+cubeb camphor
+cubeb oil
+cube ore
+cube root
+cube-shaped
+cube spar
+cube sugar
+cubit arm
+cubo-octahedral
+cubo-octahedron
+cub reporter
+cub shark
+cucking stool
+cuckold dock
+cuckoo-babies
+cuckoo bee
+cuckoo-bread
+cuckoo-bud
+cuckoo-button
+cuckoo clock
+cuckoo clover
+cuckoo dove
+cuckoo falcon
+cuckoo fly
+cuckoo-fool
+cuckoo froth
+cuckoo gillyflower
+cuckoo grass
+cuckoo hawk
+cuckoo lamb
+cuckoo-meat
+cuckoo orchis
+cuckoo owl
+cuckoo ray
+cuckoo shoe
+cuckoo shrike
+cuckoo sorrel
+cuckoo spit
+cuckoo wasp
+cuckoo wrasse
+cucumber beetle
+cucumber family
+cucumber fish
+cucumber flea beetle
+cucumber fly
+cucumber melon
+cucumber mildew
+cucumber mosaic
+cucumber root
+cucumber scab
+cucumber tree
+cucurbit mosaic
+cucurbit wilt
+cud-chewing
+cuddy heel
+cudgel play
+cudweed mugwort
+Cuenca bark
+cue owl
+cuff ironer
+cuff link
+culilawan bark
+cull board
+culm dump
+culm measures
+cultivator shield
+cult-title
+cultural-nomadic
+culture area
+culture center
+culture complex
+culture contact
+culture drift
+culture epoch
+culture flask
+culture fluid
+culture hero
+culture medium
+culture mixing
+culture myth
+culture organism
+culture pattern
+culture pearl
+culture phenomenon
+culture plate
+culture sequence
+culture stage
+culture system
+culture trait
+culture word
+cultus cod
+cultus image
+cumin oil
+cummin oil
+cumu-cirro-stratus
+cumular-spherulite
+cumulo-cirro-stratus
+cumulo-cirrus
+cumulo-nimbus
+cumulo-stratus
+cumulo-volcano
+cumulus oophorus
+cuneate lobe
+cup barometer
+cup bell
+cupboard love
+cupboard lover
+cup coral
+cup custard
+cup drill
+cup escutcheon
+cup fern
+cup fungus
+cup grease
+cup-headed
+cup hole
+cup hook
+cupid cake
+cup joint
+cup leather
+cup lichen
+cup-mark
+cup-marked
+cup marker
+cup moss
+cup mushroom
+cup nutseed
+cupola builder
+cupola-capped
+cupola charger
+cupola feeder
+cupola fettler
+cupola furnace
+cupola liner
+cupola potman
+cupola rammer
+cupola-roofed
+cupola smelter
+cupola tapper
+cupola tenter
+cup packing leather
+cupping glass
+cup plant
+cuprammonium rayon
+cuprea bark
+cup sculpture
+cup set
+cup shake
+cup-shaped
+cup sponge
+cup tie
+cup-tossing
+cup valve
+cup washer
+curb bit
+curb box
+curb broker
+curb key
+curb market
+curb pin
+curb roof
+curb sender
+curb-sending
+curcas oil
+curcuma paper
+curcuma starch
+curd soap
+cure-all
+curl cloud
+curled-leaved
+curlew bug
+curlew jack
+curlew sandpiper
+curl-flowered
+curling die
+curling dies
+curling iron
+curling machine
+curling paper
+curling press
+curling punch
+curly-coated
+curly-haired
+curly-headed
+curly-locked
+curly-pate
+curly-pated
+curly-polled
+curly-toed
+currant aphid
+currant borer
+currant bush
+currant clearwing
+currant fruit fly
+currant-leaf
+currant leaf spot
+currant moth
+currant red
+currant rust
+currant sawfly
+currant spanworm
+currant stem girdler
+currant tomato
+currant tree
+currant worm
+currency bond
+currency doctrine
+currency note
+current breaker
+current density
+current electricity
+current gauge
+current intensity
+current limiter
+current-limiting reactor
+current mark
+current meter
+current mill
+current pulse
+current relay
+current tap
+current transformer
+current wheel
+currycomb file
+curry-leaf tree
+curry powder
+cursing stone
+cursing well
+curtain angle
+curtain call
+curtain dam
+curtain dryer
+curtain drying
+curtain fire
+curtain folder
+curtain frame
+curtain framer
+curtain hook
+curtain knitter
+curtain lecture
+curtain lifter
+curtain light
+curtain line
+curtain net
+curtain pin
+curtain pole
+curtain raiser
+curtain ring
+curtain rod
+curtain roller
+curtain speech
+curtain stretcher
+curtain tune
+curtain wall
+curtesy initiate
+Curt-hose
+curtle ax
+curvature invariant
+curvature tensor
+curve-billed
+curved-fruited
+curved-horned
+curve-drawing meter
+curved-veined
+curve fitting
+curve-fruited
+curve-veined
+cusco bark
+cusco china
+cuscus oil
+cush-cush
+cushion aloe
+cushion block
+cushion capital
+cushion carom
+cushion dance
+cushion felt
+cushion filler
+cushion fillings
+cushion-footed
+cushion head
+cushion iris
+cushion maker
+cushion pink
+cushion plant
+cushion rafter
+cushion scale
+cushion-shaped
+cushion shot
+cushion sole
+cushion spurge
+cushion star
+cushion stitch
+cushion tire
+cushion-tired
+cusk eel
+cusparia bark
+cuspidate tooth
+cusp locus
+cusp-shaped
+cuss word
+custard apple
+custard cup
+custard-cups
+custom builder
+custom-built
+custom-cut
+customer agent
+customer ownership
+custom hatching
+custom-made
+custom mill
+customs bond
+customs-exempt
+customs-house
+custom tailor
+custom-tailored
+custom work
+custom worker
+cutaway coat
+cut-down
+cut-finger
+cut-flight conveyer
+cut-grass
+cuticula dentis
+cutlass fish
+cut-leaf
+cut-leaved
+cutlery buffer
+cutoff drainage
+cutoff saw
+cutoff valve
+cutout switch
+cut-paper
+cut price
+cut-rate
+cutter arbor
+cutter bar
+cutter block
+cutter brig
+cutter-built
+cutter-down
+cutter gig
+cutter-off
+cutter-out
+cutter rig
+cutter-rigged
+cutter sloop
+cutter-up
+cutter yacht
+cutthroat grass
+cut-through
+cut time
+cutting almond
+cutting angle
+cutting blowpipe
+cutting board
+cutting compound
+cutting die
+cutting drift
+cutting lubricant
+cutting-off tool
+cutting oil
+cutting press
+cutting punch
+cutting rule
+cutting sand
+cutting shoe
+cutting stage
+cutting torch
+cut-toothed
+cut-under
+cut up
+cutwater bow
+C washer
+cyanamide process
+cyan blue
+cyanide mill
+cyanide process
+cyani flower
+cyanine blue
+cyanogen bromide
+cyanogen chloride
+cycad fern
+cycas family
+cyclamen mite
+cycle form
+cyclone cellar
+cyclone center
+cyclone collector
+cyclone juice
+cyclone-proof
+cyclone separator
+cylinder block
+cylinder bore
+cylinder-bored
+cylinder-boring
+cylinder-dried
+cylinder escapement
+cylinder front
+cylinder gate
+cylinder glass
+cylinder grinder
+cylinder-grinding
+cylinder head
+cylinder machine
+cylinder metal
+cylinder mill
+cylinder oil
+cylinder planer
+cylinder press
+cylinder pressman
+cylinder reamer
+cylinder saw
+cylinder scale
+cylinder-shaped
+cylinder sinker
+cylinder slasher
+cylinder snake
+cylinder splitter
+cylindric-campanulate
+cylindric-fusiform
+cylindric-oblong
+cylindric-ovoid
+cylindric-subulate
+cypress grass
+cypress green
+cypress knee
+cypress koromiko
+cypress lawn
+cypress-leaf oil
+cypress moss
+cypress oil
+cypress pine
+cypress spurge
+cypress thatch
+cypress vine
+Cypro-phoenician
+cyprus cat
+Cyprus earth
+cyrilla family
+daber locks
+Dacca banana
+Dachstein limestone
+daddy longlegs
+daddynut tree
+dado head
+dado plane
+dado rail
+daffodil garlic
+daffodil lily
+daffodil yellow
+daft days
+Dagger ale
+dagger board
+dagger cocklebur
+dagger fern
+dagger knee
+dagger money
+dagger moth
+dagger plank
+dagger plant
+dagger-shaped
+dagger wood
+daghesh forte
+daghesh lene
+dag-tailed
+Dahlgren gun
+dahlia carmine
+dahlia purple
+dahlia sugar
+dahlia sunflower
+dahlia wartlet
+dahoon holly
+Dail eireann
+Dai nichi
+dainty-eared
+dainty-fingered
+dainty-limbed
+dainty-mouthed
+dainty-tongued
+dainty-toothed
+dairy barn
+dairy butter
+dairy cattle
+dairy cheese
+dairy cooler
+dairy-cooling
+dairy country
+dairy farm
+dairy farmer
+dairy farming
+dairy-fed
+dairy house
+dairy husbandry
+dairy lunch
+dairy-made
+dairy milk
+dairy product
+dairy salt
+dairy school
+Dairy shorthorn
+dairy society
+dairy truck
+dairy wagon
+daisy-blossomed
+daisy chain
+daisy cutter
+daisy-cutting
+daisy-dappled
+daisy-dimpled
+daisy fleabane
+daisy-painted
+daisy-spangled
+daisy tree
+dak boat
+dak bungalow
+daker hen
+Dalai lama
+dale-backed
+dale end
+dale head
+dale land
+dale lander
+Dallis grass
+damage feasant
+Damascus steel
+Damascus ware
+damask carpet
+damask rose
+dame school
+dammar pine
+damp course
+damper action
+damper block
+damper crank
+damper head
+damper pedal
+damper rail
+damper spoon
+damper stop
+damper valve
+damper winding
+damping constant
+damping factor
+damping machine
+damping-off
+damp sap
+damp-stained
+damp-worn
+damsel-errant
+damsel fly
+damson pie
+damson plum
+dance band
+dance drama
+dance favor
+dance floor
+dance fly
+dance form
+dance hall
+dance house
+dance leader
+dance-loving
+dance music
+dance palace
+dance pantomime
+dance program
+dance rhythm
+dance society
+dance song
+dance step
+dance tune
+dancing assembly
+Dancing chancellor
+dancing dervish
+dancing disease
+dancing floor
+dancing-girls
+dancing hall
+dancing lesson
+dancing mania
+dancing master
+dancing match
+dancing mistress
+dancing partner
+dancing party
+dancing room
+dancing school
+dancing step
+dandelion digger
+dandelion-leaved
+dandelion puller
+Dandie dinmont terrier
+dandy brush
+dandy cart
+dandy-cock
+dandy-hen
+danger angle
+danger ball
+danger bearing
+danger-fearing
+danger flag
+danger-fraught
+danger-free
+danger instinct
+danger line
+danger-loving
+danger point
+danger signal
+danger-teaching
+danger whistle
+danger zone
+Dano-eskimo
+Dano-norwegian
+Dan tucker
+daoine sithe
+dap-dap
+daphne pink
+daphne red
+dap joint
+dapple-gray
+dare-base
+dark adaptation
+dark-adapted
+dark-bearded
+dark-blue
+dark-bosomed
+dark-boughed
+dark-breasted
+dark-browed
+dark-closed
+dark-colored
+dark-complexioned
+dark-embrowned
+dark-eyed
+dark-featured
+dark-field
+dark-fired
+dark-flowing
+dark-fringed
+dark-glancing
+dark-gray
+dark-green
+dark-grown
+dark-haired
+dark-hued
+dark-hulled
+dark-leaved
+dark-line spectrum
+darkling beetle
+dark-minded
+dark-orange
+dark-prisoned
+dark-red
+dark-rolling
+dark-shining
+dark-sighted
+dark-skinned
+dark-splendid
+dark-stemmed
+dark-suited
+dark-veiled
+dark-veined
+dark-visaged
+dark-working
+Darling lily
+Darling pea
+Darling plum
+darning ball
+darning cotton
+darning egg
+darning gourd
+darning needle
+darning silk
+darning stitch
+darning work
+darning worsted
+daroo tree
+darrein presentment
+darrein resort
+Darsham fern
+dart grass
+Dartmouth college case
+dart snake
+dart thrower
+dartwaza band
+dasher block
+dash lamp
+dash light
+date-bearing
+date brandy
+date coffee
+date fever
+date fig
+date grove
+date line
+date palm
+date plum
+date shell
+date stamp
+date-stamping
+date sugar
+date tree
+date wine
+dating nail
+datum line
+datum plane
+datum point
+Daun stage
+Davy lamp
+dawn dew
+dawn goddess
+dawn-illumined
+Dawn man
+dawn-tinted
+day-and-night
+day-appearing
+day bed
+day bell
+day blindness
+day breeze
+day-bright
+day-clear
+day clock
+day clothes
+day coach
+day-day
+day degree
+day-detesting
+day-devouring
+day-dispensing
+day-distracting
+day drift
+day-eyed
+day fireman
+day fishing
+day-flying
+day gang
+day gate
+day god
+day gown
+day guest
+day hand
+day hater
+day-hating
+day haul
+day-hired
+day hour
+day house
+day jasmine
+day journeying
+day labor
+day laborer
+day-lasting
+day letter
+daylight blue
+daylight factor
+daylight glass
+daylight lamp
+daylight projection
+daylight saving
+daylight-saving time
+daylight vision
+day lily
+day-lived
+day loan
+day-loving
+day nettle
+day nurse
+day nursery
+day owl
+day-peep
+day rate
+day reflection
+day rule
+day scholar
+day school
+day servant
+day shift
+day-shining
+day sight
+day sleeper
+day slumber
+day task
+day-to-day loan
+day-to-day money
+day vision
+day waiter
+day watchman
+day water
+day-wearied
+day wind
+dazzle painting
+dazzle system
+D-borneol
+deacon seat
+dead-afraid
+dead ahead
+dead-air
+dead-alive
+dead-alivism
+dead-arm
+dead-ball line
+deadbeat escapement
+dead-blanched
+Dead borneo
+dead-bright
+dead-burn
+dead-cold
+dead-color
+dead-colored
+dead-dip
+dead-drifting
+dead-drunk
+dead-drunkenness
+dead-end
+dead-face
+dead-front
+dead-frozen
+dead-grown
+dead-heat
+dead-heater
+dead-heavy
+Dea dia
+dead-kill
+dead-leaf
+dead-letter
+dead-live
+dead-man control
+dead-rise
+dead-rise line
+dead-roast
+Dead sea apple
+Dead sea fruit
+dead-seeming
+dead-set
+dead-sick
+dead-smooth
+dead-soft
+dead-stick
+dead-stroke
+dead-stroke hammer
+dead-struck
+dead-weight
+dead-weight safety valve
+deadwood fence
+deaf-and-dumb alphabet
+deaf-dumb
+deaf-dumbness
+deaf-eared
+deaf-minded
+deaf-mute
+deaf-muteness
+deaf-mutism
+deal board
+deal carrier
+dealer acceptance
+dealer allowance
+dealer help
+dealing box
+deal merchant
+deal porter
+deal runner
+deal worker
+deal yard
+De-americanization
+De-americanize
+dea-nettle
+De-anglicization
+De-anglicize
+dear-bought
+Dea tacita
+death adder
+death agony
+death alder
+death angel
+death angle
+death-bearing
+deathbed deed
+deathbed repentance
+death-begirt
+death bell
+death benefit
+death bill
+death-black
+death blast
+death-boding
+death bolt
+death bone
+death-braving
+death-bringing
+death camass
+death candle
+death chamber
+death chime
+death cloth
+death-cold
+death-come-quickly
+death cord
+death-counterfeiting
+death cry
+death cup
+death damp
+death dance
+death-darting
+death-deaf
+death-deafened
+death-dealing
+death-deep
+death defiance
+death demon
+death-devoted
+death dew
+death-dewed
+death dirge
+death-divided
+death-divining
+death-doing
+death-doom
+death drink
+death drum
+death-due
+death duty
+death feint
+death feud
+death fire
+death flame
+death grapple
+death grip
+death groan
+death herb
+death hour
+death house
+death hymn
+death knell
+death-laden
+death light
+death-marked
+death mask
+death note
+death-pale
+death pang
+death peal
+death penalty
+death penny
+death point
+death-polluted
+death-practiced
+death prayer
+death rate
+death rattle
+death ray
+death roll
+death rope
+death ruckle
+death sentence
+death-shadowed
+death-sheeted
+death shriek
+death sleep
+death song
+death stab
+death-stiffening
+death-stricken
+death stroke
+death-struck
+death-subduing
+death sweat
+death-swimming
+death thirst
+death-threatening
+death throe
+death tick
+death trance
+death vacancy
+death warrant
+death-weary
+death weight
+death-winged
+death-worthy
+death-wounded
+death wraith
+debenture stock
+debit ticket
+debris glacier
+debt book
+debt limit
+debt service
+debts recovery court
+decade ring
+De-calvinize
+decapod locomotive
+decay coefficient
+Deccan hemp
+Deccan trap
+De-celticize
+decimal point
+deck beam
+deck block
+deck board
+deck boy
+deck bridge
+deck car
+deck cargo
+deck chair
+deck curb
+deck elevator
+deck feather
+deck floor
+deck hand
+deck hook
+decking chain
+deck iron
+deck key
+deck kicker
+deckle edge
+deckle-edged
+deckle strap
+deck light
+deck log
+deck molding
+deck nail
+deck officer
+deck passage
+deck passenger
+deck-piercing
+deck-piercing shell
+deck pipe
+deck plate
+deck plating
+deck pump
+deck quoits
+deck roof
+deck seat
+deck sheet
+deck steward
+deck stool
+deck stopper
+deck stringer
+deck tackle
+deck tennis
+deck transom
+deck turret
+deck watch
+declination axis
+declination circle
+declination compass
+declination parallel
+decoction process
+decomposition potential
+decompression chamber
+Decoration day
+decoy duck
+decree dative
+decree law
+decree nisi
+Decretum gratiani
+decubitus ulcer
+dedendum circle
+Dedication festival
+deed poll
+de-educate
+de-electrify
+de-electrization
+de-electrize
+de-emanate
+de-emanation
+de-emulsibility
+de-emulsify
+de-emulsivity
+de-energize
+deep-affected
+deep-affrighted
+deep-asleep
+deep-bellied
+deep-biting
+deep-bodied
+deep-bosomed
+deep-brained
+deep-breasted
+deep-breathing
+deep-brooding
+deep-browed
+deep-buried
+deep-chested
+deep-colored
+deep-contemplative
+deep-crimsoned
+deep-cut
+deep-damasked
+deep-discerning
+deep-dish
+deep-domed
+deep-down
+deep-drawing
+deep-drawn
+deep-drenched
+deep-drinking
+deep-drunk
+deep-dyed
+deep-echoing
+deep-embattled
+deep-engraven
+deep-eyed
+deep-faced
+deep-felt
+deep-fermenting
+deep-fetched
+deep-fixed
+deep-flewed
+deep-going
+deep-green
+deep-groaning
+deep-grounded
+deep-grown
+deep-laden
+deep-laid
+deep-level mine
+deep-lunged
+deep-lying
+deep-musing
+deep-naked
+deep-persuading
+deep-piled
+deep-pitched
+deep-pointed
+deep-pondering
+deep-premeditated
+deep-questioning
+deep-reaching
+deep-read
+deep-revolving
+deep-rooted
+deep-rootedness
+deep-rooting
+deep-sea
+deep-searching
+deep-seated
+deep-set
+deep-settled
+deep-sided
+deep-sighted
+deep-sinking
+deep-skirted
+deep-sore
+deep-stapled
+deep-sunk
+deep-sunken
+deep-sweet
+deep-sworn
+deep-tangled
+deep-thinking
+deep-thoughted
+deep-thrilling
+deep-throated
+deep-toned
+deep-transported
+deep-trenching
+deep-troubled
+deep-uddered
+deep-vaulted
+deep-versed
+deep-voiced
+deep-waisted
+deep-worn
+deep-wounded
+deer brush
+deer cabbage
+deer call
+deer cart
+deer-eyed
+deer fence
+deer fern
+deer-fly fever
+deer foot
+deer forest
+deer grass
+deer hide
+deerhorn cactus
+deer keeper
+deer laurel
+deer lick
+deer mouse
+deer-neck
+deer park
+Deer park
+deer tick
+deer tiger
+deer vine
+deerwort boneset
+de-ethicization
+de-ethicize
+defending line
+defense mechanism
+defense test
+deficiency account
+deficiency bill
+deficiency disease
+deficiency judgment
+definite-proportions law
+definite-time
+deflagrating spoon
+deflecting bar
+deflecting torque
+deflection angle
+deflection method
+deflection offset
+deflection scale
+deformation curve
+deformation ellipsoid
+deft-fingered
+De gaullism
+De gaullist
+degeneration disease
+De-germanize
+degree-cut
+degree-day
+De-hellenize
+deion circuit breaker
+dei plenus
+deisel engine
+De-italianize
+De-jansenize
+De-judaize
+delayed-action fuse
+del credere
+deleb palm
+delft blue
+Delian problem
+delicate-handed
+delirium tremens
+delivery order
+delivery ticket
+delph blue
+delta connection
+delta current
+delta plain
+delta plateau
+delta potential
+delta-shaped
+delta winding
+delta wing
+demand bill
+demand deposit
+demand limiter
+demand-load limiter
+demand loan
+demand meter
+demand note
+demand rate
+dementia paralytica
+dementia praecox
+demerit mark
+Demi-atlas
+Demi-christian
+demi-incognito
+demi-island
+demi-islander
+demi-landau
+Demi-mohammedan
+Demi-moor
+Demi-norman
+Demi-pelagian
+demipirouette volt
+Democratic-republican
+demon star
+Denatura deorum
+De-nazify
+Deneb algedi
+Deneb kaitos
+dense-flowered
+dense-headed
+dense-minded
+dense-wooded
+density rule
+dental hygienist
+dental length
+dentary-splenial
+dentate-ciliate
+dentate-crenate
+dentate-serrate
+dentate-sinuate
+dent corn
+dentil band
+den-tree
+department hospital
+department store
+dephlogisticated air
+dephosphorizing process
+deposit account
+deposit banking
+deposit copy
+deposit currency
+deposit premium company
+deposit slip
+depot ship
+depreciation charge
+depressed-bed
+depressed-bed method
+depression range finder
+depression slide
+depression spring
+depressor nerve
+De-protestantize
+depth bomb
+depth charge
+depth gauge
+depthing tool
+depth measure
+depth psychology
+depth table
+deputy collector
+deputy commissioner
+deputy sheriff
+derailing switch
+derb fine
+dermato-autoplasty
+dermoid cyst
+derrick block
+derrick boat
+derrick boatman
+derrick car
+derrick chain
+derrick crab
+derrick crane
+derrick elevator
+derrick engine
+derrick floor
+derrick floorman
+derrick forge
+derrick fork
+derrick hoist
+derrick lamp
+derrick maker
+derrick making
+derrick mast
+derrick master
+derrick sheaves
+derrick sill
+derrick skid
+derrick skip
+derrick spring
+derrick stacker
+derrick stool
+derrick stove
+derrick timber
+derrick tower
+derrick truck
+derrick wheel
+derring-do
+derry-down
+de-russianize
+de-saxonize
+descant clef
+descant viol
+descension theory
+descent cast
+de-semiticize
+desert-bred
+desert cat
+desert fox
+desert kumquat
+desert lark
+desert lemon
+desert lily
+desert-locked
+desert lynx
+desert oak
+desert palm
+desert pea
+desert plant
+desert poisonbush
+desert polish
+desert rat
+desert rod
+desert she-oak
+desert ship
+desert trumpeter
+desert trumpet flower
+desert varnish
+desert-wearied
+desert weed
+desert willow
+design bedding
+desk room
+despite that
+dessert fork
+dessert knife
+dessert plate
+destroyer escort
+destroyer leader
+detail drawing
+detective story
+detent escapement
+detention home
+detention hospital
+determinative clause
+detonating powder
+detonating tube
+detritus tank
+deuce-ace
+deuce game
+deuce point
+deuce set
+deuce shot
+deuces wild
+deutero-malayan
+Deutero-nicene
+developing dye
+developing-out paper
+development section
+development theory
+deviation factor
+deviation warranty
+devil bolt
+devil-born
+devil carriage
+devil chaser
+devil dance
+devil dancer
+devil dancing
+devil-devil
+devil-diver
+devil-dodger
+devil dog
+devil-giant
+devil-god
+devil grass
+devil-haired
+devil-inspired
+devil lore
+devil-may-care
+devil murder
+devil-porter
+devil ray
+devil-ridden
+devil-tender
+devil worship
+devil worshiper
+devil worshiping
+De vinne
+dew-beat
+dew-beater
+dew-bedabbled
+dew-bediamonded
+dew-bent
+dew-bespangled
+dew-bespattered
+dew-besprinkled
+dew bit
+dew-boine
+dew-bolne
+dew bow
+dew-bright
+dew cap
+dew-clad
+dew-cold
+dew-dabbled
+dew-drenched
+dew-dripped
+dew-dropping
+dew-drunk
+dew-fed
+dew-gemmed
+dew grass
+dew-laden
+dew-lipped
+dew-lit
+dew-pearled
+dew plant
+dew point
+dew pond
+dew snail
+dew-sprent
+dew-sprinkled
+dewy-bright
+dewy-dark
+dewy-eyed
+dewy-feathered
+dewy-fresh
+dewy-pinioned
+dextro camphor
+D-flat
+D-flat major
+dhobie itch
+dhobie tongs
+diabase-porphyrite
+diabetes sugar
+diabetes weed
+di-adapan
+diadem lemur
+diadem spider
+diagonal-built
+diagram factor
+dial bird
+dialect atlas
+dialect geography
+dial enameler
+dial feed
+dial foot
+dial gauge
+dialing globe
+dial press
+dial recorder
+dial telegraph
+dial telephone
+dial work
+diameter tape
+diamine dye
+Diamine scarlet b
+Diamine violet n
+diamond anniversary
+diamond-backed
+diamondback moth
+diamondback rattlesnake
+diamondback terrapin
+diamondback watersnake
+diamond bed
+diamond beetle
+diamond bird
+diamond black
+diamond borer
+diamond-boring
+diamond boron
+diamond bort
+diamond breaker
+diamond-bright
+diamond broker
+diamond cement
+diamond chisel
+diamond couching
+diamond crossing
+diamond cut diamond
+diamond dash
+diamond die
+diamond digger
+diamond digging
+diamond dresser
+diamond drill
+diamond dust
+diamond edition
+diamond factory
+diamond field
+diamond fig
+diamond file
+diamond flounder
+diamond flower
+diamond gauge
+diamond gravel
+diamond green
+diamond groove
+diamond hammer
+diamond-headed
+diamond hitch
+diamond jubilee
+diamond knot
+diamond-leaf laurel
+diamond linen
+diamond merchant
+diamond mill
+diamond mine
+diamond mortar
+diamond-paned
+diamond panel
+diamond paste
+diamond pencil
+diamond photograph
+diamond plant
+diamond plate
+diamond plow
+diamond point
+diamond-pointed
+diamond polisher
+diamond powder
+diamond-producing
+diamond rattlesnake
+diamond ring
+diamond saw
+diamond setter
+diamond-shaped
+diamond-skin disease
+diamond snake
+diamond sparrow
+diamond splitter
+diamond stitching
+diamond-tiled
+diamond-tipped
+diamond tool
+diamond tooth
+diamond trade
+diamond truer
+diamond twist
+diamond wedding
+diamond weevil
+diamond wheel
+diapason diapente
+diapason ditone
+diapason normal
+diaphragm current
+diaphragm gauge
+diaphragm process
+diaphragm pump
+diaphragm shutter
+diaphragm valve
+diaspore clay
+diazo dye
+diazo reaction
+diaz-oxide
+dibutylamino-propanol
+dice coal
+dice-top
+dichloramine-t
+dichloroethyl sulphide
+dicing board
+dickey box
+dictionary catalogue
+dictionary-proof
+diddle-daddle
+diddle-dee
+die-away
+die-cast
+die caster
+die casting
+die chaser
+die chuck
+die-cut
+die cutter
+die cutting
+die engraver
+die filing
+die fitter
+die fitting
+die forger
+die forging
+die grinder
+die hammer
+die-hard
+die hardener
+die-hardism
+die head
+die hob
+die holder
+die kicker
+dielectric constant
+dielectric current
+dielectric loss
+die miller
+die mold
+die planer
+die plate
+die polisher
+die polishing
+Dieppe lace
+die press
+die presser
+die proof
+die reamer
+die screw plate
+diesel cycle
+diesel-driven
+diesel-electric
+diesel-engined
+diesel oil
+diesel-powered
+die set
+die shaper
+die sharpening
+die shoe
+diesinking machine
+die spotter
+die spotting
+die spring
+die-square
+die stamper
+die stripper
+die stripping
+die tap
+diet book
+die temper
+diethylene dioxide
+diet kitchen
+die turner
+die wedge
+difference chart
+difference engine
+difference equation
+difference gauge
+difference limen
+difference product
+difference quotient
+difference table
+difference threshold
+difference tone
+difficulty score
+diffraction disk
+diffraction grating
+diffraction spectroscope
+diffraction spectrum
+diffuse-porous
+diffuse reflection
+diffusion air pump
+diffusion battery
+diffusionist theory
+diffusion juice
+diffusion process
+digester tankage
+digest medium
+Digger indian
+digger wasp
+digging weight
+digitato-palmate
+digitato-pinnate
+dika bread
+dika butter
+dik-dik
+dike hopper
+dike-louper
+dike rock
+dill oil
+dill pickle
+dill water
+dim-brooding
+dim-browed
+dim-colored
+dim-discovered
+dime museum
+dime novel
+dimension lumber
+dim-eyed
+dim-felt
+dim-gleaming
+dim-gray
+dim-lettered
+dim-lighted
+dim-lit
+dim-litten
+dim-out
+dim-remembered
+dim-seen
+dim-sensed
+dim-sheeted
+dim-sighted
+dim-sightedness
+dim-visioned
+dim-yellow
+diner-out
+ding-a-ling
+dingdong theory
+dining car
+dining hall
+dining room
+dining saloon
+dining table
+dinkel wheat
+dinking die
+dinner audience
+dinner bell
+dinner call
+dinner card
+dinner chimes
+dinner clothes
+dinner club
+dinner coat
+dinner dance
+dinner dress
+dinner fork
+dinner-getting
+dinner hour
+dinner knife
+dinner napkin
+dinner pail
+dinner party
+dinner plate
+dinner ring
+dinner room
+dinner service
+dinner set
+dinner table
+dinner wagon
+diorite-porphyrite
+dip circle
+dip-dye
+dip fault
+dip-grained
+diphenyl black
+diphenylene-methane
+diphenyl ether
+diploma mill
+diploma piece
+dip needle
+dipper clam
+dipper dredge
+dipper gourd
+dipper-in
+dipper interrupter
+dipping acid
+dipping basket
+dipping bath
+dipping battery
+dipping chair
+dipping compass
+dipping elevator
+dipping enamel
+dipping frame
+dipping furnace
+dipping hook
+dipping house
+dipping ladle
+dipping lug
+dipping needle
+dipping oil
+dipping paint
+dipping pan
+dipping paper
+dipping process
+dipping rack
+dipping rod
+dipping room
+dipping table
+dipping tank
+dipping tub
+dipping tube
+dipping works
+dip pipe
+dip rider
+dip rope
+dip sector
+dip shift
+dip slip
+dip trap
+direct-acting
+direct-acting press
+direct-actionist
+direct black
+direct blue
+direct brown
+direct-connected
+direct-coupled
+direct-current converter
+direct-driven
+direct-geared
+direct-indirect radiator
+directing circle
+directing piece
+directing plane
+directing point
+direction angle
+direction constant
+direction finder
+direction finding
+direction ratio
+direction switch
+direction tensor
+direction test
+director circle
+director curve
+director-general
+director plane
+director regulus
+director sphere
+directory arrangement
+directory canvasser
+direct-writing company
+direct yellow
+dire wolf
+dirigible torpedo
+diriment impediment
+dirk knife
+dirt band
+dirt bed
+dirt-besmeared
+dirt-born
+dirt-cheap
+dirt dauber
+dirt eating
+dirt farmer
+dirt-fast
+dirt-flinging
+dirt-grimed
+dirt groove
+dirt-incrusted
+dirt-line
+dirt road
+dirt-rotten
+dirt-smirched
+dirt-soaked
+dirty-colored
+dirty-faced
+dirty-handed
+dirty-minded
+dirty-shirted
+dirty-souled
+disability clause
+disability insurance
+dis-byronize
+discharge potential
+discharger cup
+discharge valve
+disc jockey
+disconnecting switch
+discontinuity layer
+discount broker
+discount company
+discrimination time
+disease-causing
+disease germ
+disease-producing
+disease-resisting
+disease-spreading
+disengagement governor
+dish bearer
+dish cleaner
+dishcloth gourd
+dish cover
+dish-crowned
+dish designer
+dish drainer
+dish-faced
+dish feed
+dish gravy
+dish-headed
+Dishley merino
+dish mop
+dish mustard
+dish plate
+dish rack
+dish towel
+dish truck
+dish wagon
+dish warmer
+disinfecting candle
+disintegration series
+disk armature
+disk barrow
+disk-bearing
+disk bit
+disk brake
+disk clutch
+disk crank
+disk cultivator
+disk drill
+disk dynamo
+disk engine
+disk flower
+disk furrower
+disk go-devil
+disk harrow
+disk hiller
+disk meter
+disk photometer
+disk pile
+disk plow
+disk ridge buster
+disk sander
+disk-shaped
+disk signal
+disk stove
+disk system
+disk telegraph
+disk valve
+disk weeder
+disk wheel
+disk winding
+disodium phosphate
+dispatch-bearing
+dispatch boat
+dispatch box
+dispatch money
+dispatch note
+dispatch tube
+dispatch writer
+dispatch writing
+dispersion medium
+displacement current
+displacement pump
+displacement ton
+display advertising
+display bracket
+display card
+display cover
+display figure
+display form
+display pipe
+display sign
+display type
+display window
+display work
+dissociation coefficient
+dissociation constant
+distaff side
+distaff thistle
+distance circle
+distance flag
+distance language
+distance medley
+distance post
+distance receptor
+distance ring
+distance scale
+distilling flask
+distilling tube
+disto-occlusion
+distress call
+distress sale
+distribution board
+distribution curve
+distribution difference
+distribution function
+distribution ratio
+district attorney
+district council
+district judge
+district parish
+district school
+dis-turk
+dita bark
+ditch crowfoot
+ditch-delivered
+ditch-drawn
+ditch fern
+ditch grass
+ditch hand
+ditching car
+ditching machine
+ditching scoop
+ditch machine
+ditch millet
+ditch moss
+ditch reed
+ditch rider
+ditch spade
+ditch stonecrop
+ditch sunflower
+dithering grass
+ditto mark
+ditty bag
+ditty box
+diva blue
+dive-bomb
+dive bomber
+divergence theorem
+diverse-colored
+diverse-natured
+diverse-shaped
+diversion chamber
+diversion cut
+diversity factor
+dividend warrant
+dividing engine
+dividing head
+dividing plate
+dividing sinker
+divi-divi
+divine-human
+diving bell
+diving bladder
+diving board
+diving boat
+diving engine
+diving float
+diving helmet
+diving hood
+diving machine
+diving platform
+diving raft
+diving suit
+diving togs
+divining rod
+divinity calf
+divinity circuit binding
+divinity fudge
+Divinity hall
+divinity school
+division algebra
+division center
+division engineer
+division mark
+division sign
+division superintendent
+Dixie land
+djati tree
+D major
+D minor
+D natural
+D net
+do-all
+dobbin cart
+Doberman pinscher
+dobson fly
+dock boss
+dock bur
+dock charge
+dock cooper
+dock crane
+dock cress
+dock crew
+dock derrick
+dock dues
+dock foreman
+dock gate
+dock hand
+dock hoist
+docking cradle
+docking keel
+dock inspector
+dock laborer
+dock-leaved
+dock light
+dock nettle
+dock port
+dock porter
+dock receipt
+dock rent
+dock screw
+dock shunter
+dock sill
+dock sorrel
+dock space
+dock spike
+dock superintendent
+dock-tailed
+dock trade
+dock-walloper
+dock-walloping
+dock warehouse
+dock warrant
+doctor blade
+Doctor breck
+doctor file
+document bill
+dodder family
+dodder grass
+doddy mitten
+dodecuple scale
+dodge ball
+dodge chain
+doegling oil
+doeskin brown
+doffing comb
+doffing cylinder
+doffing knife
+do-funny
+dog ape
+dogbane family
+dog-banner
+dog bee
+dog belt
+dog bent
+dogberry tree
+dog biscuit
+dog-bitten
+dog blanket
+dog bramble
+dog breeder
+dog bur
+dog button
+dog cabbage
+dog cake
+dog camomile
+dog carrier
+dog chain
+dog chart
+dog-cheap
+dog cherry
+dog clipper
+dog clutch
+dog collar
+dog cracker
+dog crate
+dog daisy
+dog dandelion
+dog-day cicada
+dog disease
+dog dollar
+dog-draw
+dog-drawn
+dog-driven
+dog-ear
+dog-eared
+dog elder
+dog-eyed
+dog-faced
+dog fancier
+dog fennel
+dog-fisher
+dog flea
+dog flesh
+dog flower
+dog-footed
+dog fox
+dog-gnawn
+dog grass
+dog grate
+dog harness
+dog-headed
+dog-head hammer
+dog-head spike
+dog hip
+dog hobble
+dog hood
+dog hook
+dog hospital
+dog-hungry
+dog hysteria
+dog iron
+dog-keeping
+dog kennel
+dog-lame
+dog laurel
+dog-lean
+dog-leaved
+dog leech
+dog-leg
+dog-leg fence
+dog-legged
+dog-leg hole
+dog letter
+dog license
+dog lichen
+dog life
+dog lily
+dog louse
+dog lover
+dog-mad
+dog meat
+dog mercury
+dog mint
+dog muzzle
+dog nail
+dog nap
+dog nettle
+do-good
+do-gooder
+do-goodism
+dog owl
+dog owner
+dog-owning
+dog parsley
+dog plum
+dog poison
+dog-poor
+dog racing
+dog reed
+dog robber
+dog robbing
+dog rose
+dog rowan tree
+dog salmon
+dog screw
+dog seal
+dog shark
+dog show
+dog-sick
+dog sledge
+dog snapper
+dog soap
+dog spike
+dog standard
+Dog star
+dog stealing
+dog stinkhorn
+dog-stopper
+dog tag
+dog tansy
+dog tapeworm
+dog tax
+dog tent
+dog thistle
+dog thorn
+dog tick
+dog-tired
+dog-toes
+dog tongue
+dog-tongue wampee
+dog-toothed
+dogtooth spar
+dogtooth star grass
+dogtooth violet
+dog town
+dogtown grass
+dog track
+dog train
+dog trainer
+dog training
+dog tree
+dog violet
+dog warden
+dog warp
+dog-weary
+dog wheat
+dog wheel
+dog whelk
+dog whip
+dog whistle
+dog winkle
+dogwood family
+dogwood poisonbush
+dog wrench
+dole meadow
+do-little
+dollar acceptance
+dollar bill
+dollar bond
+dollar chaser
+dollar debenture
+dollar diplomacy
+dollar exchange
+dollar loan
+dollar mark
+doll-faced
+doll hospital
+doll-like
+dolly bar
+dolly-head
+dolly-mop
+dolly shop
+dolman sleeve
+dolphin-flower
+dolphin fly
+dolphin oil
+dolphin striker
+dome-shaped
+domestic relations law
+dome tomb
+Dominion day
+domino whist
+donation party
+Dongola kid
+Dongola race
+donjon keep
+Don juan
+Don juanism
+donkey boiler
+donkey boy
+donkey crosshead
+donkey doctor
+donkey-drawn
+donkey-eared
+donkey engine
+donkey hoist
+donkey pump
+donkey puncher
+donkey sled
+donkey tender
+Donnybrook fair
+do-nothing
+do-nothingism
+do-nothingness
+doob grass
+doom palm
+doom ring
+doom tree
+doon-head-clock
+door bed
+door chain
+door check
+door closer
+door fastener
+door finisher
+door fitter
+door grass
+door hanger
+door hasp
+door hinge
+door key
+door knocker
+door latch
+door lock
+door mat
+door matting
+door money
+door opener
+door-roller
+door scraper
+door-shaped
+door spring
+door stile
+door strap
+door switch
+door track
+door trap
+door trapper
+dooryard grass
+dooryard plantain
+do-over
+dopa reaction
+dop doctor
+dope fiend
+dor bee
+dor bug
+dorcas gazelle
+dore bullion
+dore furnace
+dor fly
+dormer beam
+dormer window
+dormer-windowed
+dormouse phalanger
+dorsal-root ganglion
+Dorset horn
+Dorset horned sheep
+dorso-occipital
+dorso-ulnar
+dorsum ephippii
+dos-a-dos
+dosage meter
+dos gris
+dosing apparatus
+dosing siphon
+dosing tank
+dos nominata
+dos rationabilis
+doss house
+dot-dash line
+dot figure
+dot map
+dot-sequential
+dotterel dun
+dottle pin
+double-acting
+double-action
+double-action harrow
+double-armed
+double-aspect theory
+double-bank
+double-banked
+double-banker
+double-barred
+double-barrel
+double-barreled
+double-barrelled
+double-bass
+double-battalioned
+double-beat valve
+double-bedded
+double-benched
+double-biting
+double-bitt
+double-bitted
+double-bladed
+double-blossomed
+double-bodied
+double-bond isomerism
+double-bottom
+double-bottomed
+double-branch
+double-branched
+double-break switch
+double-breasted
+double-brooded
+double-buttoned
+double-chain sling
+double-charge
+double chin
+double-chinned
+double-clasping
+double-claw
+double-coated film
+double-concave
+double-convex
+double-crested
+double-cross
+double-crosser
+double-cup insulator
+double-cupped
+double-current generator
+double-current signaling
+double-cut
+double-cut file
+double-cut saw
+double-cylinder planer
+double-dealer
+double-dealing
+double-decked
+double-decker
+double-disk
+double-disk harrow
+double-distilled
+double-ditched
+double-dodge
+double-doored
+double dot
+double double cap
+double-duty
+double-dye
+double-dyed
+double-edged
+double end
+double-ended
+double-ender
+double-ender file
+double-end saw file
+double-engined
+double-entry system
+double-entry table
+double-eyed
+double-faced
+double-facedly
+double-facedness
+double-fault
+double-feature
+double flower
+double-flowered
+double-flowering
+double-fold
+double-footed
+double-framed
+double-fronted
+double-gilt
+double half-round file
+double-hatched
+double-head
+double-headed
+double-header
+double-helical
+double-horned
+double-image micrometer
+double-image prism
+double-image telescope
+double-ironed
+double-jointed
+double-keeled
+double-language theory
+double-leaded
+double-liability stock
+double-line
+double-lived
+double-livedness
+double-loaded
+double-loathed
+double-lock
+double-lunged
+double-manned
+double-measure door
+double-milled
+double-minded
+double-mindedly
+double-mindedness
+double-mouthed
+double-name paper
+double-natured
+double-opposed
+double-page spread
+double-pedal
+double pedal point
+double-piled
+double-pipe condenser
+double-pointed
+double-pole switch
+double-pored
+double-ported
+double print
+double-printing
+double-queue
+double-quick
+double-quirked
+double-reed family
+double-reef
+double-reefed
+double-refined
+double-refracting
+double-ripper
+double-rivet
+double-riveted
+double-roller escapement
+double-rooted
+double-runner
+double-scull
+double-seater
+double-seeing
+double-sensed
+double-shear steel
+double-shed insulator
+double-shot
+double-sided
+double-sidedness
+double-sighted
+double-slide
+double-soled
+double-spun
+double-starred
+double stem
+double-stemmed
+double-stitched
+double-stop
+double-struck
+double-sunk
+double-sunk dial
+double-surfaced
+double-swing door
+double-swing joint
+double-sworded
+double talk
+double-thong
+double-thread
+double-threaded
+double-throw switch
+double-tongue
+double-tongued
+double-tonguing
+double-tooth
+double-track
+double-trenched
+double-trouble
+double-truck heading
+double-twisted
+Double-u
+double-visaged
+double-voiced
+double-windowed
+double-winged
+double-work
+double-worked
+doubt-beset
+doubt-cherishing
+doubt-dispelling
+doubt-excluding
+doubt-harboring
+doubting mania
+doubt-ridden
+doubt-sprung
+doubt-troubled
+dough-baked
+dough brake
+dough-colored
+dough-dividing
+dough-faced
+dough kneader
+dough-kneading
+dough mixer
+dough-mixing
+doughnut tire
+dough stage
+doum palm
+do-up
+dousing chock
+dove blue
+dove color
+dove-colored
+dove dock
+dove-eyed
+dove-gray
+dove hawk
+dove plant
+dove pox
+dover grass
+dove-shaped
+dovetail cramp
+dovetail halving
+dovetail joint
+dovetail molding
+dovetail plane
+dovetail saw
+dovetail-shaped
+dovetail slide
+dove tick
+dowel bit
+dowel jig
+dowel maker
+dowel pin
+dowel plate
+dowel pointer
+dowel rod
+dowel screw
+dowel sharpener
+dowel spoke
+dowel stick
+dower chest
+down along
+down-beater
+down bed
+down-bow
+down card
+down-charge
+down-coast
+down-covered
+down-crier
+down cushion
+downdraft kiln
+down-drag
+Down east
+Down-easter
+downfeed system
+down-hip
+down-house
+down-lead
+down picker
+down pillow
+down pipe
+down plucker
+down plumage
+down-river
+down runner
+down-soft
+down-talk
+down thistle
+down time
+down tree
+down under
+down-valley
+down-wash
+down wool
+downy-cheeked
+downy-clad
+downy-feathered
+downy-fruited
+downy oat grass
+downy-winged
+dowsing chock
+dowsing rod
+drab-breeched
+drab-coated
+drab-colored
+drab-tinted
+dracaena palm
+draft act
+draft allowance
+draft box
+draft chair
+draft engine
+draft evener
+draft-exempt
+draft gauge
+draft gear
+draft horse
+drafting board
+drafting paper
+drafting room
+drafting yard
+draft net
+draft pin
+draft rein
+draft rod
+draft tube
+drag anchor
+drag boat
+drag box
+drag bucket
+drag cart
+drag chain
+drag classifier
+drag conveyer
+drag crank
+drag-down
+drag fold
+dragger-down
+dragger-out
+dragger-up
+dragging beam
+drag harrow
+drag hook
+drag horse
+drag hunt
+drag iron
+dragline dredge
+drag link
+drag mill
+dragnet clause
+dragon arum
+dragon balloon
+dragon beam
+dragon claw
+dragon-eyed
+dragon-faced
+dragon gum
+dragon lizard
+dragon-mouthed
+dragon piece
+dragon plant
+dragon-ridden
+dragon tie
+dragon tree
+dragon turnip
+dragon-winged
+dragoon bird
+drag rake
+drag sail
+drag scraper
+drag seine
+drag spring
+drag step
+drag-stone mill
+drag tooth
+drag twist
+drag washer
+drag wire
+drainage area
+drainage basin
+drainage benefit
+drainage canal
+drainage coefficient
+drainage cycle
+drainage district
+drainage gate
+drainage inlet
+drainage inspector
+drainage level
+drainage pipe
+drainage pit
+drainage pump
+drainage shaft
+drainage system
+drainage theory
+drainage tile
+drainage trap
+drainage tube
+drainage tunnel
+drainage well
+drain arm
+drain cleaner
+drain cock
+drain cup
+drain digger
+drain exhauster
+drain faucet
+drain grate
+draining board
+draining tile
+drain inlet
+drain layer
+drain pit
+drain pump
+drain repairer
+drain rocket
+drain tester
+drain trap
+drain valve
+drain well
+drake fly
+drake foot
+drake green
+drama league
+dramatis personae
+dram filler
+drapers teasel
+Dravido-munda
+draw-arch
+drawback collet
+drawback lock
+drawbar horsepower
+drawbar load
+draw chain
+draw cock
+drawcut shaper
+draw dock
+drawer dovetail
+drawer-down
+drawer-in
+drawer-off
+drawer-out
+drawer pull
+drawer-up
+draw game
+drawing account
+drawing awl
+drawing bench
+drawing block
+drawing board
+drawing book
+drawing card
+drawing chalk
+drawing compasses
+drawing crayon
+drawing desk
+drawing die
+drawing frame
+drawing glove
+drawing ink
+drawing instrument
+drawing knife
+drawing machine
+drawing office
+drawing paper
+drawing pen
+drawing pencil
+drawing pin
+drawing pliers
+drawing press
+drawing punch
+drawing room
+drawing-room car
+drawing-roomy
+drawing shave
+drawing slate
+drawing string
+drawing table
+drawing thread
+draw pin
+draw poker
+draw press
+draw slate
+draw step
+draw taper
+draw-water
+draw-well
+dray horse
+dread-bolted
+dream analysis
+dream-blinded
+dream book
+dream-born
+dream-built
+dream-created
+dream dance
+dream-footed
+dream-found
+dream-haunted
+dream-haunting
+dream life
+dream light
+dream name
+dream-perturbed
+dream stuff
+dreamy-eyed
+dreamy-minded
+dreamy-souled
+dreamy-voiced
+drear-nighted
+drear-white
+dreary-eyed
+dreary-looking
+dreary-minded
+dreary-souled
+dredge belt
+dredge boat
+dredge box
+dredge bucket
+dredge can
+dredge chain
+dredge gear
+dredge hoist
+dredge hopperman
+dredge hull
+dredge ladder
+dredge malt
+dredge net
+dredge pipe
+dredge pontoon
+dredge pump
+dredger bucket
+dredge rope
+dredging box
+dredging bucket
+dredging machine
+dree-draw
+dress cap
+dress circle
+dress coat
+dress-coated
+dress designer
+dresser cutter
+dresser set
+dresser spindle
+dresser spooler
+dresser top
+dresser trunk
+dress face
+dress form
+dress goods
+dressing case
+dressing forceps
+dressing glass
+dressing gown
+dressing jacket
+dressing room
+dressing sack
+dressing station
+dressing table
+dress shield
+dress shirt
+dress suit
+dress tie
+dress uniform
+driblet cone
+drier-down
+drift anchor
+drift angle
+drift avalanche
+drift boat
+drift bottle
+drift copper
+drift fisher
+drift keel
+drift lead
+drift meter
+drift mine
+drift mining
+drift net
+drift-netter
+drift plug
+drift sail
+drift slide
+driggle-draggle
+drill attachment
+drill barrel
+drill barrow
+drill bit
+drill block
+drill book
+drill bow
+drill bushing
+drill cartridge
+drill case
+drill changer
+drill chuck
+drill clamp
+drill cleaner
+drill cloth
+drill collar
+drill collet
+drill cutter
+drill cylinder
+drill day
+drill drift
+drill driver
+drill engine
+drill extension
+drill extractor
+drill feeder
+drill file
+drill fluter
+drill gauge
+drill grinder
+drill ground
+drill hall
+drill hardener
+drill harrow
+drill holder
+drill hole
+drilling bit
+drilling hammer
+drilling jig
+drilling journal
+drilling machine
+drilling stem
+drilling track
+drill instructor
+drill jar
+drill jig
+drill-like
+drill lubricato
+drill maker
+drill making
+drill mounting
+drill pin
+drill pipe
+drill plow
+drill point
+drill pointer
+drill press
+drill rack
+drill ratchet
+drill regulation
+drill rest
+drill room
+drill sergeant
+drill shank
+drill sharpener
+drill ship
+drill sleeve
+drill socket
+drill speeder
+drill spring
+drill stand
+drill steel
+drill straightener
+drill tester
+drill tower
+drill track
+drill twister
+drill worker
+drill yard
+drinker moth
+drink-hael
+drink-hail
+drinking bout
+drinking cup
+drinking fountain
+drinking glass
+drinking horn
+drinking house
+drinking mug
+drinking place
+drinking song
+drinking straw
+drinking time
+drinking trough
+drinking water
+drink money
+drink offering
+drip band
+drip board
+drip box
+drip cock
+drip coffee
+drip coffee maker
+drip cup
+drip-drip
+drip groove
+drip-ground
+drip joint
+drip loop
+drip molding
+drip oil
+dripping pan
+dripping point
+drip pipe
+drip pocket
+drip primrose
+drip sheet
+drip tank
+drip tip
+drip tray
+drip trough
+drip valve
+drive fit
+drive-in
+drive nozzle
+driver ant
+driver mast
+drive shaft
+drive shoe
+drive wheel
+drive whist
+driving axle
+driving band
+driving bit
+driving board
+driving box
+driving chain
+driving clock
+driving drum
+driving face
+driving fit
+driving gear
+driving horn
+driving iron
+driving mashie
+driving mirror
+driving park
+driving plate
+driving power
+driving punch
+driving shaft
+driving snow
+driving spring
+driving wagon
+driving wheel
+drizzle-drozzle
+dromedary corps
+dromos tomb
+drone bass
+drone bee
+drone cell
+drone fly
+drongo cuckoo
+drongo shrike
+Drood edwin
+droop-eared
+droop-headed
+droop-nosed
+drop arch
+drop-away
+drop bar
+drop black
+drop bolt
+drop bomb
+drop bottom
+drop-bottom bucket
+drop box
+drop-center rim
+drop chalk
+drop chronograph
+drop cord
+drop curtain
+drop ear
+drop-eared
+drop elbow
+drop fly
+drop folio
+drop-forge
+drop-forger
+drop forging
+drop-forging die
+drop frame
+drop-front
+drop game
+drop glass
+drop guide
+drop hammer
+drop hammerman
+drop handle
+drop hanger
+drop jaw
+drop keel
+drop key
+drop kick
+drop-kicker
+drop lamp
+drop leaf
+drop-leg
+drop letter
+drop line
+drop number
+drop-out current
+drop-out voltage
+drop panel
+dropper fly
+dropper-on
+dropping angle
+dropping bottle
+drop pit
+drop press
+drop roller
+drop screen
+drop seat
+drop serene
+drop-shaped
+drop shipment
+drop shot
+drop shutter
+drop siding
+drop-stich
+drop stitch
+drop strake
+drop stroke
+drop sulphur
+dropsy-dry
+dropsy plant
+dropsy-sick
+drop table
+drop testing machine
+drop weight
+drop window
+drop wire
+drop worm
+drop zinc
+drought-parched
+drought-resisting
+drought-stricken
+drove chisel
+drove-road
+drove work
+drug addict
+drug-addicted
+drug beetle
+drug bottler
+drug carriage
+drug clerk
+drug compounder
+drug-damned
+drug fiend
+drug grinder
+drug-grinding
+drug habit
+drug ice
+drug mixer
+drug-mixing
+drug pulverizer
+drug-pulverizing
+drug seller
+drug-selling
+drugstore beetle
+drug user
+drug-using
+drug weigher
+druid stone
+drum armature
+drumble-drone
+drum controller
+drum corps
+drum dam
+drum escapement
+drum feed
+drumhead cabbage
+drumhead court-martial
+drum language
+drum major
+drum malt
+drum puller
+drum saw
+drum scale
+drum screen
+drum-shaped
+drum sieve
+drum slide
+drum spool
+drumstick tree
+drum stuffing
+drum switch
+drum-type elevator
+drum-up
+drum washer
+drum wheel
+drum winding
+drum-wound
+drunken plant
+drunken rye grass
+dry air
+dry-air pump
+dry-beat
+dry beater
+dry-blowing
+dry bone
+dry-boned
+dry-bones
+dry-brush
+dry-bulb thermometer
+dry-burnt
+dry-clean
+dry cooper
+dry-cure
+dry-dock
+dry-dye
+dry-eared
+dry-eyed
+dry farm
+dry farmer
+dry farming
+dry-fine
+dry-fly
+dry-fly fishing
+dry-footed
+dry-fruited
+dry-grind
+dry-handed
+dry-heat cure
+Dry ice
+drying cabinet
+drying chamber
+drying fan
+drying floor
+drying frame
+drying house
+drying kiln
+drying loft
+drying oil
+drying oven
+drying pan
+drying paper
+drying rack
+drying room
+drying shed
+drying tray
+drying tube
+drying yard
+dry-ki
+dry-land blueberry
+dry-land farming
+dry-leaved
+dry-lipped
+dry-looking
+dry miller
+dry mixer
+dry-mouthed
+dryness fraction
+dry-paved
+dry-pick
+dry pipe
+dry-pipe system
+dry-pipe valve
+dry plate
+dry-plate process
+dry-powder extinguisher
+dry-press
+dry-press process
+dry-roasted
+dry-rot
+dry-rotted
+dry-rub
+dry-salt
+dry-salted
+dry-scrubbed
+dry-shave
+dry-shod
+dry-shoot
+dry-skinned
+dry-soled
+dry spinner
+dry-stone
+dry-tamp machine
+dry-throated
+dry-tongued
+dry-weather flow
+dry-weather vine
+D-sharp
+D-sharp minor
+D splice
+D trap
+dual-purpose
+Du-barry
+duchesse lace
+duck acorn
+duck ant
+duckbill cat
+duck-billed
+duckbill gar
+duck blue
+duck breeder
+duck call
+duck egg
+duck fit
+duck-footed
+duck grass
+duck green
+duck gun
+duck hawk
+duck hunter
+ducking stool
+duck joint
+duck keeper
+duck-legged
+duck mole
+duck moss
+duck oak
+duck pass
+duck pen
+duck potato
+duck rearer
+duck-retter
+duck ring
+duck shot
+duck snipe
+duck soup
+duck table
+duck-toed
+duckweed family
+duck wheat
+duck willow
+dudder grass
+dude ranch
+due bill
+due course
+due date
+dueling pistol
+Duffy jonah
+dug-up
+Duk-duk
+duke cherry
+dukey rider
+dull-browed
+dull-colored
+dull-eared
+dull-edged
+dull-eyed
+dull-headed
+dull-lived
+dull-looking
+dull-pated
+dull-pointed
+dull-red
+dull-scented
+dull-sighted
+dull-sounding
+dull-spirited
+dull-surfaced
+dull-toned
+dull-tuned
+dull-voiced
+dull-witted
+dulse dealer
+dulse-green
+dumb-bird
+dumb-waiter
+dumdum fever
+dummy block
+dummy car
+dummy cartridge
+dummy cop
+dummy experiment
+dummy-head torpedo
+dummy index
+dummy share
+dummy whist
+Dumonts blue
+dump body
+dump car
+dump heap
+dump hook
+dumping bucket
+dumping car
+dumping cart
+dumping device
+dumping duty
+dumping grate
+dumping ground
+dumping machine
+dumping place
+dumping press
+dumping truck
+dumping wagon
+dumpling cactus
+dump pile
+dump rake
+dump scow
+dump truck
+dump wagon
+dun-belted
+dun-brown
+dun-colored
+dun crow
+dundathu pine
+dun diver
+dun-drab
+dun-driven
+dune dweller
+dune forest
+dune grass
+dune heath
+dune land
+dune marsh
+dune plant
+dune sand
+dun fly
+dunga-runga
+dung bath
+dung beetle
+dung cart
+dung chafer
+dung fly
+dung fork
+dung heap
+dunghill fowl
+dung pit
+dung worm
+dun-haunted
+dunk tree
+dun-olive
+dun-plagued
+dun-racked
+dun-red
+dun-white
+dun-yellow
+dun-yellowish
+duple ratio
+duplex boiler
+duplexity theory
+duplex-numeric index
+duplex oxygenator
+duplicate-pinnate
+duplicato-dentate
+duplicato-serrate
+duplicato-ternate
+duplicity theory
+dura mater
+durango root
+durfa grass
+durfee grass
+Duroc-jersey
+durry-dandy
+durum wheat
+dusky-browed
+dusky-colored
+dusky-faced
+dusky-mantled
+dusky-raftered
+dusky-sandaled
+dust ball
+dust band
+dust-begrimed
+dust bowl
+dust brush
+dust cap
+dust chamber
+dust cloak
+dust coat
+dust-colored
+dust-counter
+dust cover
+dust-covered
+dust devil
+dust-dry
+duster-off
+dust exhaust
+dust extractor
+dust furrow
+dust-gray
+dust gun
+dust heap
+dusting brush
+dusting colors
+dusting powder
+dust-laden
+dust-laying
+dust louse
+dust mulch
+dust-polluting
+dust process
+dust-producing
+dust remover
+dust ruffle
+dust seal
+dust shot
+dust-soiled
+dust storm
+dust-throwing
+dust-tight
+dust trunk
+dust well
+dust whirl
+Dutch-gabled
+Dutch-process
+Dutch-ware-blue
+duty-free
+D uxelles sauce
+dvi-manganese
+dwarf meadow grass
+dwelling house
+dwelling place
+dycrete process
+dye bag
+dye base
+dye bath
+dye boiler
+dye box
+dye bucket
+dye grinder
+dye mixer
+dye pine
+dye pot
+dye remover
+dye tank
+dye therapy
+dye tub
+dye vat
+dyewood clipper
+dyewood cutter
+dyewood extract
+dyewood grinder
+dyewood liquor
+dyewood miller
+dye works
+dying day
+dynamite bomb
+dynamite cap
+dynamite glycerin
+dynamite gun
+dynamite maker
+dynamite mixer
+dynamite thawer
+dynamo belting
+dynamo brush
+dynamo casting
+dynamo commutator
+dynamo erector
+dynamo lubricator
+dynamometric governor
+dynamo winder
+dyne centimeter
+dyne-seven
+dysentery root
+dzera-a-rabry pik
+dzera-a-torky pik
+each other
+eager-eyed
+eager-hearted
+eager-looking
+eager-minded
+eager-seeming
+eagle-billed
+eagle bird
+eagle boat
+eagle claw
+eagle eye
+eagle-eyed
+eagle feather
+eagle fern
+eagle-flighted
+eagle flower
+eagle gull
+eagle hawk
+eagle-headed
+eagle lectern
+eagle owl
+eagle-pinioned
+eagle plume
+eagle ray
+eagle scout
+eagle-seeing
+eagle-sighted
+eagle vulture
+eagle wing
+eagle-winged
+ear-brisk
+ear conch
+ear cornet
+ear coverts
+ear crystal
+ear-deafening
+eardrop tree
+ear dust
+ear-filling
+ear flap
+ear fly
+ear fungus
+ear guard
+ear index
+earl duck
+ear leaf
+ear-leaved
+earl palatine
+early meadow grass
+early mesquite
+early-type star
+ear-minded
+ear-mindedness
+ear mold
+ear muff
+earning grass
+ear piercer
+ear-piercing
+ear reach
+ear rot
+ear sand
+ear shell
+ear snail
+ear stone
+earth almond
+earth apple
+earth-ball
+earth battery
+earth bob
+earth-bound
+earth-boundness
+earth bread
+earth cell
+earth chestnut
+earth circuit
+earth club
+earth color
+earth-convulsing
+earth crab
+earth crust
+earth current
+earth-delving
+earth-destroying
+earth-devouring
+earth dweller
+earth-dwelling
+earth-eating
+earth-engendered
+earth-fed
+earth flax
+earth flea
+earth foam
+earth-god
+earth-goddess
+earth hog
+earth hole
+earth-homing
+earth house
+earth hunger
+earth inductor compass
+earth ivy
+earth life
+earth-lit
+earth lodge
+earth louse
+earthly-minded
+earthly-mindedness
+earthly-wise
+earth metal
+earth moss
+earth movement
+earth-moving
+earthnut oil
+earth-old
+earth owl
+earth pig
+earth pillar
+earth pitch
+earth plate
+earth plum
+earth quadrant
+earthquake insurance
+earthquake-proof
+earth-refreshing
+earth-rending
+earth-shaking
+earth smoke
+earth-sounds
+earth spirit
+earth spring
+earth-sprung
+earth-stained
+earth stopper
+earth-strewn
+earth table
+earth tide
+earth tilting
+earth-vexing
+earth wave
+earth wax
+earth-wide
+earth wire
+earth wolf
+earth-wrecking
+ear tick
+ear tree
+ear trumpet
+ear wagon
+easement curve
+ease-off
+easing sparrow
+East-ender
+Easter anemone
+Easter bell
+Easter bonnet
+Easter-giant
+Easter-ledges
+Easter sunday
+East greenlander
+East indiaman
+East-insular
+east-northeast
+East side
+east-sider
+East-sider
+east-southeast
+east-windy
+easy-fitting
+easy-flowing
+easy-hearted
+easy-humored
+easy-mannered
+easy-minded
+easy-rising
+easy-running
+easy-spoken
+eat-all
+eaten-leaf
+eaves catch
+eaves swallow
+eavy-soled
+ebb sleeper
+ebb tide
+eboe light
+eboe oil
+ebony family
+ebony spleenwort
+ecaille work
+eccle grass
+ecclesiastico-military
+ecclesiastico-secular
+echelon lens
+E-chinocystis
+echo attachment
+echo organ
+Eclectic school
+eclipse breeze
+economic man
+economy coil
+ecru silk
+Ed asich
+eddy chamber
+eddy current
+eddy-current brake
+Edge act
+edge-grain
+edge-grained
+edge iron
+edge joint
+edging grinder
+edition bindery
+eel-backed
+eel-back flounder
+eel cat
+eel-catching
+eel fork
+eel netting
+eel-shaped
+eeny meeny miney moe
+efficiency engineer
+effigy mound
+effusion balance
+efwatakala grass
+egg albumen
+egg albumin
+egg apparatus
+egg-bound
+egg-shaped
+eggshell blue
+eggshell china
+egg sleeker
+egg-white
+eggy-hot
+ego ideal
+egret monkey
+Egypto-arabic
+Egypto-greek
+Egypto-roman
+eider down
+eider yarn
+eight-angled
+eight-armed
+eight ball
+eight-celled
+eight-cylinder
+eight-day
+eight-flowered
+eight-gauge
+eight-hour
+eight-oar
+eight-oared
+eight-ply
+eight-quarter cap
+eightsome reel
+eight-square
+eight-wheeler
+eighty-eight
+eighty-eighth
+eighty-fifth
+eighty-first
+eighty-five
+eighty-four
+eighty-fourth
+eighty-nine
+eighty-ninth
+eighty-one
+eighty-second
+eighty-seven
+eighty-seventh
+eighty-six
+eighty-sixth
+eighty-third
+eighty-three
+eighty-two
+Einstein shift
+eis wool
+eka-aluminum
+eka-iodine
+elastic anklet
+elastic binder
+elastic braid
+elastic cement
+elastic gel
+elastic hosier
+elastic hosiery
+elastic kneecap
+elastic loom
+elastic paper
+elastic rubber
+elastic-seeming
+elastic-sided
+elastic stocking
+elastic tape
+elastic thread
+elastic varnish
+elastic veiling
+El-beth-el
+elbow grease
+elbow length
+elbow-shaped
+elbow telescope
+elder bark
+elder blossom
+elder blow
+elder-born
+elder-brother
+Elder edda
+elder fungus
+elder-leaved
+elder-sister
+elder wine
+eldest-born
+El dorado
+Elean-eretrian
+Eleanor cross
+elec cement
+Election day
+election district
+Electra complex
+electric driller
+electric-drive
+electricity meter
+electric-lighted
+electric lighting
+electrode potential
+electrolier switch
+electron affinity
+electron gas
+electron gun
+electron microscope
+electron optics
+electron pair
+electro-ultrafiltration
+eleme figs
+elemi figs
+eleolite syenite
+elephant apple
+elephant beetle
+elephant-ear fern
+elephant grass
+Elephantiasis arabum
+Elephantiasis graecorum
+eleuthera bark
+elevator boy
+elevator car
+elevator conductor
+elevator conveyer
+elevator girl
+elevator man
+elevator operator
+elevator shaft
+elevator signal
+elevator starter
+eleven-oclock-lady
+eleven-year period
+elf arrow
+elf dance
+elf-god
+elfin-tree
+elf kind
+elf kindred
+elf knight
+elf queen
+elf-shoot
+elf-stricken
+elf-struck
+elf-taken
+elimination contest
+elisor jury
+elk bark
+elk nut
+El kophrah
+ell-broad
+El-lil
+Elliott eye
+elliptic-lanceolate
+elliptic-leaved
+ell-long
+ell-wide
+elm balsam
+elm bark
+elm calligrapha
+elm-leaved
+elm phloem necrosis
+El nath
+elongato-conical
+elongato-ovate
+Elsie book
+elution process
+Embargo act
+Ember days
+embossing plate
+embroidery floss
+embroidery frame
+embryo bearer
+Embryophyta asiphonogama
+Embryophyta siphonogama
+embryo sac
+em dash
+emerald copper
+emergency barrage
+emergency brake
+emergency landing field
+emergency man
+emery belt
+emery cloth
+emery file
+emery paper
+emery powder
+emery surfacer
+Eme-sal
+emission spectrum
+emission theory
+emperor boa
+emperor butterfly
+Empire blue
+empire cloth
+employer-owned
+employment agent
+employment bureau
+empress cloth
+empress tree
+empty-armed
+empty-barreled
+empty-bellied
+empty-cell process
+empty-fisted
+empty-handed
+empty-handedness
+empty-headed
+empty-headedness
+empty-looking
+empty-minded
+empty-mouthed
+empty-noddled
+empty-paneled
+empty-pated
+empty-skulled
+empty-stomached
+empty-vaulted
+empty-voiced
+emu apple
+emu bush
+emu grass
+emulsion colloid
+enamel bud
+enamel cell
+en bloc
+en brochette
+encephalitis lethargica
+enclosure wall
+end-all
+end artery
+en dash
+end bell
+ender-on
+ender-up
+endgate seeder
+end-grain
+endive blue
+end man
+end-match
+end-measure
+endocrine gland
+endoderm disc
+endoderm lamella
+endomersion lens
+endomersion objective
+end on
+end organ
+endo salt
+endotherm knife
+Endothia canker
+endowment insurance
+end paper
+end plate
+end play
+end product
+end-rack
+end rhyme
+end-shrink
+end-stopped
+end stopping
+end stress
+endurance limit
+endurance ratio
+endurance strength
+endwise coil
+end zone
+enemy alien
+energy component
+energy level
+energy meter
+energy-producing
+energy surface density
+energy voltage
+engagement ring
+engine builder
+engine cleaner
+engine company
+engine control
+engine cultivator
+engine-driven
+engine driver
+Engineer corps
+engineering chemistry
+engine fitter
+engine lathe
+engine maker
+engine making
+engine pilot
+engine rod
+engine room
+engine-room telegraph
+engine shop
+engine size
+engine-sized
+engine-sizer
+engine smith
+engine tender
+engine-turned
+engine-turner
+engine turning
+engine-type generator
+engine work
+engine worker
+engine yard
+English-born
+English-bred
+English-built
+English-hearted
+English-made
+English-manned
+English-minded
+English-rigged
+English-setter
+English-speaking
+engorgement colic
+engraver beetle
+En-lil
+enlisted man
+en masse
+ennea-eteric
+enol form
+enol-keto isomerism
+en route
+ensign armorial
+ensign-bearer
+ensign fly
+Ens rationis
+Ens reale
+entire-leaved
+entire-wheat
+ento-ectad
+entrance certificate
+entrance cone
+entrance-denying
+entrance examination
+entrance fee
+entrance money
+entrance pupil
+envelope addresser
+envelope bander
+envelope case
+envelope clasp
+envelope designer
+envelope die
+envelope folder
+envelope gummer
+envelope holder
+envelope maker
+envelope moistener
+envelope opener
+envelope printer
+envelope sealer
+envelope weigher
+epacris family
+epaulet bat
+epaulet sleeve
+epididymo-orchitis
+epidote group
+epiglotto-hyoidean
+Epistle side
+epoch-forming
+epoch-making
+epoch-marking
+equal-angled
+equal-aqual
+equal-armed
+equal-balanced
+equal-blooded
+equal-eyed
+equal-glumed millet
+equal-handed
+equal-headed
+equaling file
+equalization fee
+equalization fund
+equalization period
+equalizer brake
+equalizer set
+equalizing bar
+equalizing dynamo
+equalizing file
+equalizing gear
+equalizing pipe
+equal-limbed
+equally pinnate
+equal-poised
+equal-sided
+equal-souled
+equal-weighted
+equation clock
+equation division
+equation price
+equi-gram-molar
+equilibrium isomerism
+equilibrium pressure
+equilibrium sense
+equipment bond
+equipment note
+equitime point
+equity capital
+equity side
+Equus beds
+Equus october
+erasing shield
+erd shrew
+erection mark
+erector spinae
+Ericsson cycle
+Erlau green
+ermine moth
+ern-bleater
+ern-fern
+erosion cycle
+Er rai
+error-blasted
+error-darkened
+error-proof
+error-stricken
+error-tainted
+error-teaching
+erythema induratum
+erythema nodosum
+erythrol tetranitrate
+escalator clause
+escape cock
+escape mechanism
+escape wheel
+Eschweger soap
+Eschwege soap
+escort carrier
+escort fighter
+escort wagon
+E-shaped
+Eshi-kongo
+Eskimo curlew
+Eskimo dog
+Eskimo purchase
+Esmarch bandage
+esophageo-cutaneous
+esophago-enterostomy
+Esopus grit
+esquire based
+essoin day
+essoin roll
+estate duty
+estate manager
+estate rubber
+estate tail
+ester gum
+ester value
+estivo-autumnal
+estragon oil
+estrangelo alphabet
+etain blue
+etalon post
+et cetera
+etching ball
+etching ground
+etching silk
+etching stitch
+ether drift
+ether extract
+etherin theory
+ether value
+ethiops martial
+ethiops mineral
+ethyl acetate
+ethyl acetoacetate
+ethyl alcohol
+ethylene bromide
+ethylene chloride
+ethylene oxide
+ethylene series
+ethyl ester
+ethyl ether
+Eton blue
+Eton cap
+Eton game
+Etowah mound
+Etruria ware
+Etrusco-roman
+eucalyptus green
+eucalyptus gum
+eucalyptus oil
+Eucharis mite
+eudemis moth
+eu-form
+Eugenia red
+eunuch flute
+euonymus scale
+eupatorium purple
+Euphorbia sphinx
+Eupolidean meter
+eureka red
+Euro-american
+Europeo-american
+Europeo-asiatic
+Europeo-siberian
+eu-type
+evacuation hospital
+evacuation station
+evans-root
+evaporation tank
+even-bell system
+Even-christian
+even-edged
+evener-up
+evening campion
+evening dress
+evening-dressed
+evening dun
+evening emerald
+evening flower
+evening-glory
+evening gown
+evening grosbeak
+evening lychnis
+evening market
+evening prayer
+evening primrose
+evening-primrose family
+evening rose
+evening school
+evening-snow
+evening star
+evening trumpet flower
+even-numbered
+even-paged
+even-pleached
+even-set
+even-spun
+even-tempered
+even-toed
+even-toothed
+even-wayed
+ever-abiding
+ever-active
+ever-admiring
+ever-angry
+ever-being
+ever-beloved
+ever-blazing
+ever-blessed
+ever-burning
+ever-celebrated
+ever-changeful
+ever-changing
+ever-circling
+ever-conquering
+ever-constant
+ever-craving
+ever-dear
+ever-deepening
+ever-dripping
+ever-drizzling
+ever-dropping
+ever-durable
+ever-duringness
+ever-dying
+ever-echoing
+ever-endingly
+ever-esteemed
+ever-expanding
+ever-faithful
+ever-fast
+ever-fertile
+ever-friendly
+everglade kite
+Everglade state
+ever-glooming
+ever-goading
+ever-going
+evergreen beech
+evergreen bittersweet
+evergreen blueberry
+evergreen cherry
+evergreen clematis
+evergreen elm
+evergreen grass
+evergreen magnolia
+evergreen millet
+evergreen oak
+evergreen privet
+evergreen snakeroot
+evergreen thorn
+evergreen trumpet flower
+evergreen winterberry
+evergreen wood fern
+ever-growing
+ever-happy
+ever-honored
+ever-increasing
+ever-loving
+ever-mingling
+ever-moving
+ever-new
+ever-noble
+ever-present
+ever-prompt
+ever-ready
+ever-recurrent
+ever-recurring
+ever-renewing
+ever-smiling
+ever-strong
+ever-thrilling
+ever-varying
+ever-victorious
+ever-wearing
+ever-white
+ever-widening
+ever-willing
+ever-wise
+ever-young
+every-way
+evidence-proof
+evil-affected
+evil-affectedness
+evil-boding
+evil-complexioned
+evil-disposed
+evil-doing
+evil eye
+evil-eyed
+evil-faced
+evil-fashioned
+evil-favored
+evil-favoredly
+evil-favoredness
+evil-featured
+evil-fortuned
+evil-gotten
+evil-headed
+evil-hued
+evil-impregnated
+evil-looking
+evil-loved
+evil-mannered
+evil-minded
+evil-mindedly
+evil-mindedness
+evil-mouthed
+evil-ordered
+evil-pieced
+evil-qualitied
+evil-savored
+evil-shaped
+evil-shapen
+evil-smelling
+evil-sounding
+evil-sown
+evil-spun
+evil-starred
+evil-taught
+evil-thewed
+evil-thoughted
+evil-tongued
+evil-weaponed
+evil-willed
+evil-won
+ewe bramble
+ewe-daisy
+ewe-gowan
+ewe lamb
+ewe-neck
+ewe-necked
+ewe teg
+ex adverso
+examination school
+examining post
+ex-army
+ex cathedra
+Excelsior diamond
+excelsior knife
+excess fare
+excess insurance
+excess-loss
+excess-profits tax
+excess reinsurance
+exchangeable base
+exchange broker
+exchange cap
+exchange editor
+exchange professor
+exchange rate
+exchange student
+exchange ticket
+exchequer bill
+exchequer bond
+Exchequer chamber
+exclamation point
+Exclusion bill
+exclusion principle
+ex-consul
+ex-convict
+ex-czar
+exdebito justitiae
+exdebito natural
+ex dividend
+executive council
+executor dative
+ex-emperor
+ex-employee
+ex-enemy
+exercise bone
+ex facie
+ex-governor
+exhaust box
+exhaust cowl
+exhaust draft
+exhaust fan
+exhaust head
+exhaust horn
+exhaust jacket
+exhaust lap
+exhaust pipe
+exhaust port
+exhaust pump
+exhaust silencer
+exhaust steam
+exhaust-suction stroke
+exhaust valve
+exhibition game fowl
+ex-holder
+exile tree
+ex-invalid
+ex-judge
+ex-kaiser
+ex-king
+ex libris
+ex-librism
+ex-librist
+ex maleficio
+ex-mayor
+ex-minister
+ex new
+exo-condensation
+ex-official
+ex officio
+Exon domesday
+ex opere operato
+expansion ammeter
+expansion bend
+expansion bit
+expansion bolt
+expansion cam
+expansion coupling
+expansion curve
+expansion engine
+expansion fit
+expansion gear
+expansion joint
+expansion pipe
+expansion plate
+expansion pulley
+expansion ring
+expansion sleeve
+expansion slide
+expansion trunk
+expansion valve
+expansion wheel
+ex parte
+Expectation sunday
+Expectation week
+experience meeting
+experience rate
+experience table
+experimental engineer
+experimental engineering
+experiment station
+ex-pier
+explosion bomb
+explosion engine
+explosion insurance
+explosion-proof
+explosion shot
+explosion wave
+explosive d
+exponent proposition
+export bar
+export credit
+export declaration
+export point
+export tax
+exposed-tube boiler
+ex post facto
+ex post facto law
+exposure hazard
+exposure meter
+ex-praetor
+ex-president
+express buggy
+express car
+expression mark
+expulsion fuse
+ex-quay
+ex rights
+ex-service
+ex-ship
+ex ship tackles
+ex store
+extension bit
+extension bolt
+extension-gap lathe
+extension ladder
+extension lathe
+extension spring
+extension table
+extensor thrust
+exter-marriage
+external account
+external acoustic meatus
+external affairs
+external angle
+external auditory meatus
+external brake
+external capsule
+external carotid
+external-combustion
+extinction coefficient
+extra-acinous
+extra-alimentary
+Extra-american
+extra-ammotic
+extra-analogical
+extra-anthropic
+extra-articular
+extra-artistic
+extra-atmospheric
+extra-axillar
+extra-axillary
+extra-binding
+extra-bound
+extra-britannic
+Extra-christrian
+extra-condensed
+extraction thimble
+extraction turbine
+extraction wax
+extract wool
+extra current
+extra-dry
+extra-european
+extra-fare
+extra-fine
+extra-good
+extra-hazardous
+extra-illustrate
+extra-illustration
+Extra-judaical
+extra-large
+Extra-league
+extra-long
+extra-mild
+Extra-neptunian
+extra-size folio
+extra-special
+extra-strong
+extra-university
+extra-urban
+extruding press
+exudation pressure
+ex-voto
+eye agate
+eye bank
+eye-bedewing
+eye-beguiling
+eye-bewildering
+eye-bewitching
+eye-blinking
+eye-blurred
+eye-bold
+eye bone
+eye-brightening
+eyebrow pencil
+eye cap
+eye-casting
+eye-charmed
+eye-checked
+eye color
+eye-conscious
+eye-dazzling
+eye-delighting
+eye-devouring
+eye-distracting
+eye dotter
+eye draft
+eye-earnestly
+eye-ear plane
+eye-filling
+eye fold
+eye-glutting
+eye ground
+eye lens
+eyelet hole
+eyelet punch
+eye-minded
+eye-mindedness
+eye nut
+eye-offending
+eye opener
+eye-opening
+eye-overflowing
+eye-peep
+eyepiece micrometer
+eye-pleasing
+eye-rejoicing
+eye rhyme
+eye-rolling
+eye-searing
+eye-seen
+eye-sick
+eye socket
+eye speculum
+eye splice
+eye-spotted
+eye-starting
+eye stub
+eye-trying
+eye tube
+eye-watering
+eye wattle
+eye-weariness
+eye-winking
+eye worm
+fable book
+fable forger
+fable-framing
+fable play
+fable teller
+fabrication tax
+fabric spring
+fabric tire
+face-about
+face-ache
+face ague
+face angle
+face-arbor
+face bath
+face-bedded
+face bone
+face brick
+face card
+face-centered
+face chuck
+face cleat
+face cog
+face cord
+face cover
+face cream
+faced-lined
+face dresser
+face dressing
+face enamel
+face gear
+face guard
+face hammer
+face-harden
+face joint
+face lathe
+face lifting
+face mask
+face massage
+face milling
+face mite
+face mold
+face molder
+face-off
+face-on
+face paint
+face painter
+face painting
+face par
+face pit
+faceplate coupling
+faceplate jaw
+face powder
+face presentation
+face rouge
+face-saving
+face side
+face spanner
+face specialist
+face sponge
+face stone
+face string
+face towel
+face urn
+face value
+face wall
+face wheel
+facia board
+facies-suite
+facing distance
+facing head
+facing lathe
+facing-point lock
+facing-point switch
+facing sand
+facing slip
+facsimile telegraph
+fact-finding
+factor theorem
+factory burden
+factory committee
+factory cost
+factory farm
+factory ledger
+factory lumber
+factory manager
+factory system
+factory tar
+faculty adviser
+faculty psychology
+faculty theory
+fade-in
+fade-out
+fade-proof
+faery-fair
+faery-frail
+fag end
+fagot cinnamon
+fagot iron
+fagot vote
+fagot worm
+fail spot
+faint-blue
+faint-gleaming
+faint-glimmering
+faint-green
+faint-heard
+faint-hued
+fainting fit
+faint-lined
+faint-lipped
+faint-ruled
+faint-run
+faint-spoken
+faint-voiced
+faint-warbled
+fair-born
+fair-breasted
+fair-browed
+fair-cheeked
+fair-colored
+fair-complexioned
+fair-conditioned
+fair day
+fair-days
+Fair deal
+Fair dealer
+fair-eyed
+fair-faced
+fair-favored
+fair-featured
+fair-fortuned
+fair-fronted
+fair-haired
+fair-horned
+fair-hued
+fairing box
+fair lead
+fair-leader
+fair-leading
+fair maid
+fair-maned
+fair-minded
+fair-mindedness
+fair-natured
+fair play
+fair-reputed
+fair-sized
+fair-skinned
+fair-sounding
+fair-spoken
+fair-spokenness
+fair-stitch
+fair-stitcher
+fair stitching
+fair-tongued
+fair-trade
+fair-traded
+fair trader
+fair-tressed
+fair-visaged
+fairwater sleeve
+fair-weather
+fair-weather sailor
+fair whites
+fairy arrow
+fairy bell
+fairy bird
+fairy bluebird
+fairy book
+fairy-born
+fairy butter
+fairy candle
+fairy cap
+fairy circle
+fairy club
+fairy court
+fairy creeper
+fairy cup
+fairy finger
+fairy flax
+fairy gift
+fairy glove
+fairy godmother
+fairy grass
+fairy green
+fairy haunt
+fairy hillock
+fairy king
+fairy lamp
+fairy lily
+fairy lint
+fairy lore
+fairy man
+fairy martin
+fairy money
+fairy pageant
+fairy play
+fairy pool
+fairy primrose
+fairy prion
+fairy queen
+fairy ring
+fairy-ring mushroom
+fairy-ring spot
+fairy rose
+fairy shrimp
+fairy smoke
+fairy song
+fairy stone
+fairy tale
+fairy tern
+fairy tree
+fairy wallflower
+fairy wand
+fairy water lily
+fairy woman
+faith-breaking
+faith-confirming
+faith cure
+faith curer
+faith-curist
+faith healer
+faith healing
+faith-infringing
+faith-keeping
+faker-out
+faking box
+fa la
+falcon-beaked
+falcon-eyed
+falcon-gentle
+fald silver
+fal-lal
+fal-lalery
+fal-lalish
+fal-lalishly
+fall army worm
+fall aster
+fall block
+fall-board
+fall chronometer
+fall dandelion
+fall-down
+fall duck
+fall flower
+fall grape
+fall guy
+fall herring
+fall-in
+falling sickness
+fall lettuce
+fall line
+fall meadow rue
+Fallopian aqueduct
+Fallopian tube
+fallow chat
+fallow deer
+fallow finch
+fall phonometer
+Fall pippin
+fall-plow
+fall poison
+fall rope
+fall rose
+fall snipe
+fall-sow
+fall star grass
+fall-trap
+fall webworm
+fall wheat
+fall wind
+false-bedded
+false bedding
+false-boding
+false-bottomed
+false brome grass
+false buffalo grass
+false-dealing
+false-derived
+false-eyed
+false-face
+false-faced
+false-face society
+false-fingered
+false-fronted
+false-gotten
+false grass
+false guinea grass
+false-heart
+falsehood-free
+false-mermaid family
+false-nerved
+false oat
+false-packed
+false-plighted
+false-principled
+false-purchased
+false redtop
+false rice
+false-spoken
+false-sworn
+false-tongued
+false-visored
+false wheat
+false-written
+fame-achieving
+fame-blazed
+fame-crowned
+fame-ennobled
+fame-giving
+fame-loving
+fame-preserving
+fame-seeking
+fame-sung
+fame-thirsting
+fame-thirsty
+fame-worthy
+familia rustica
+family allowance
+family altar
+family bible
+family circle
+family compact
+family-conscious
+family contract
+family expense
+family living
+family man
+family meeting
+family name
+family party
+family physician
+family romance
+family skeleton
+family style
+family tree
+family wage
+famine bread
+famine fever
+fan-bearing
+fan belt
+fan blade
+fan blower
+fan brake
+fan consonant
+fan coral
+fan-crested
+fan cricket
+fancy-baffled
+fancy-blest
+fancy-born
+fancy-borne
+fancy-bred
+fancy-built
+fancy-caught
+fancy-driven
+fancy-fed
+fancy-feeding
+fancy-formed
+fancy-framed
+fancy-free
+fancy-guided
+fancy-led
+fancy-loose
+fancy man
+fancy-raised
+fancy-shaped
+fancy-stirring
+fancy-struck
+fancy-stung
+fancy trimmer
+fancy-weaving
+fancy-woven
+fancy-wrought
+fan dance
+fandango bird
+fan delta
+fan-fashion
+fan fitter
+fang bolt
+fan guard
+fanleaf palm
+fan-leaved
+fan maidenhair
+fan marker
+fan mill
+fan-nerved
+fanning machine
+fan painter
+fan palm
+fan-pleated
+fan pulley
+fan pump
+fan roof
+fan scale
+fan-shape
+fan-shaped
+fan shell
+fan system
+fan-tailed
+fan-tailed darter
+fantail joint
+fan-tan
+fan tracery
+fan training
+fan tree
+fan truss
+fan vault
+fan vaulting
+fan-veined
+fan wheel
+fan window
+fan-wing fly
+far-advanced
+far-aloft
+far-back
+far-borne
+far-branching
+far-called
+farce comedy
+far-come
+far-cost
+far cry
+farcy bud
+farcy pipe
+far-darting
+fardel-bound
+far-discovered
+far-distant
+far-down
+far-downer
+far-driven
+Far east
+far-eastern
+Far eastern
+fare-free
+far-embracing
+farewell-summer
+far-extended
+far-extending
+far-famed
+far-flashing
+far-flown
+far-flung
+far-flying
+far-foamed
+far-gleaming
+far goer
+far-gone
+far-heard
+far-horizoned
+far-looking
+far-looming
+farm bloc
+farm-bred
+farm bureau
+farm elevator
+farm-engro
+farmer drill
+farmer-general
+farmer-generalship
+farm hand
+farm level
+Farm loan bank
+farm loan bond
+farm management
+farm manager
+far-northern
+faro bank
+faro banker
+far-off
+far-offness
+far-parted
+far-passing
+far-projecting
+far-ranging
+far-reaching
+far-removed
+far-resounding
+far-seen
+far seer
+far-shooting
+far-sight
+far-sought
+far-sounding
+far-southern
+far-spread
+far-spreading
+far-stretched
+far-stretching
+far-traveled
+far traveler
+far-western
+fascia board
+fascine choker
+fashion book
+fashion designer
+fashion-fancying
+fashion-fettered
+fashion-following
+fashion gray
+fashioning needle
+fashion-led
+fashion piece
+fashion plate
+fashion-setting
+fashion show
+fashion writer
+fast-anchored
+fast boat
+fast-bound
+fast-cleaving
+fast-darkening
+fast day
+fast-dyed
+fastening-penny
+Fasten tuesday
+fast-fading
+fast-falling
+fast-feeding
+fast-fettered
+fast-fleeting
+fast-flowing
+fast-footed
+fast-gathering
+fast-grounded
+fast-growing
+fast-handed
+fast-joint hinge
+fast-knit
+fast-mass
+fast-moving
+fast-plighted
+fast-rooted
+fast-rootedness
+fast-running
+fast-sailing
+fast-settled
+fast-stepping
+fast-tied
+fat acid
+fatal-boding
+fatal-looking
+fatal-plotted
+fatal-seeming
+fat-backed
+fat-barked
+fat-bellied
+fat-bodied
+fat box
+fat cell
+fat-cheeked
+fat-choy
+fat corpuscle
+fate-bowed
+fate-denouncing
+fat-edged
+fate-dogged
+fate-environed
+fate-foretelling
+fate-furrowed
+fate line
+fate-menaced
+fat-engendering
+fate-scorning
+fate-stricken
+fat-faced
+fat-fed
+fat-fleshed
+fat-free
+fat gland
+fat granule
+fat hen
+father abbot
+father complex
+father-confessor
+father family
+father-in-law
+father jesuit
+father-lasher
+father longlegs
+father right
+father rule
+father sib
+father superior
+fat-hipped
+fathom-deep
+fatigue call
+fatigue cap
+fatigue curve
+fatigue disease
+fatigue dress
+fatigue duty
+fat-legged
+fat liquor
+fat-necrosis
+fat oil
+fat-paunched
+fat pork
+fat-reducing
+fat-rumped sheep
+fat series
+fat-shunning
+fat-soluble
+fat-tailed
+fat-tailed sheep
+fattening grass
+fat-witted
+faucet joint
+fault bar
+fault block
+fault breccia
+fault conglomerate
+fault current
+fault line
+fault-line scarp
+fault localizer
+fault plane
+fault rock
+fault rubble
+fault scarp
+fault-slip
+fault surface
+fault terrace
+fault vent
+faun-colored
+faunus butterfly
+faux-bourdon
+faux jour
+faux rondelette
+fava bean
+fawn brown
+fawn-color
+fawn-colour
+fawn lily
+Fayal lily
+faying surface
+F clef
+fear-broken
+fear-created
+fear-depressed
+fear-free
+fear-froze
+fear-inspiring
+fear-palsied
+fear-pursued
+fear-shaken
+fearsome-looking
+fear-struck
+fear-tangled
+fear-taught
+feast day
+feather alum
+feather ball
+feather beater
+feather bed
+featherbed rule
+feather bleacher
+feather boa
+feather boarding
+feather bolster
+feather bonnet
+feather brush
+feather cleanser
+feather cloth
+feather columbine
+feather-covered
+feather crotch
+feather curler
+feather dresser
+feather drier
+feather driver
+feather duster
+feather dyer
+featheredge file
+feather fan
+feather fern
+feather finisher
+feather-footed
+feather geranium
+feather grass
+feather-heeled
+feather hyacinth
+feathering float
+feathering paddle wheel
+feathering screw
+feather joint
+feather key
+featherleaf cedar
+feather-leaved
+feather-legged
+feather mail
+feather maker
+feather making
+feather mattress
+feather mosaic
+feather moss
+feather ore
+feather palm
+feather picker
+feather pillow
+feather pink
+feather plume
+feather poke
+feather renovator
+feather scrape
+feather sewer
+feather shot
+feather spring
+feather staccato
+feather star
+feather steamer
+feather tick
+feather tip
+feather-tongue
+feathertop grass
+feather tree
+feather trimmer
+feather valve
+feather-veined
+feather-weighted
+febrifuge plant
+Fechner fraction
+fed-up
+fed-upedness
+fed-upness
+feeble-bodied
+feeble-eyed
+feeble-lunged
+feeble-minded
+feeble-mindedly
+feeble-mindedness
+feeble-voiced
+feeble-winged
+feeble-wit
+feed-back coil
+feed bag
+feed boiler
+feed case
+feed cooker
+feed crusher
+feed cutter
+feeder cable
+feeder ear
+feeder-in
+feeder line
+feeder reactor
+feeder-up
+feed gear
+feed grinder
+feed guide
+feed hand
+feed heater
+feed heating
+feed hopper
+feeding bottle
+feeding cup
+feeding head
+feeding point
+feeding rod
+feeding root
+feeding standard
+feed line
+feed lot
+feed mill
+feed mixer
+feed motion
+feed packer
+feed pipe
+feed plate
+feed pump
+feed rack
+feed reel
+feed rod
+feed roll
+feed screw
+feed stable
+feed store
+feed tank
+feed trough
+feed truck
+feed tube
+feed valve
+feed water
+feed-water heater
+feed wheat
+feed wheel
+feed wire
+fee farm
+fee farmer
+fee-faw-fum
+fee grief
+feeing market
+feeling tone
+feery-fary
+fee simple
+fee tail
+Felletin tapestry
+fell-field
+felling wedge
+fell-land
+fellow actor
+fellow american
+fellow apprentice
+fellow being
+fellow boarder
+fellow captive
+fellow caucasian
+fellow christian
+fellow citizen
+fellow collegian
+fellow commoner
+fellow communicant
+fellow conspirator
+fellow convict
+fellow countryman
+fellow craftsman
+fellow creature
+fellow criminal
+fellow delegate
+fellow disciple
+fellow emigrant
+fellow employee
+fellow exile
+fellow explorer
+fellow feeling
+fellow guest
+fellow heir
+fellow helper
+fellow idler
+fellow immigrant
+fellow laborer
+fellow listener
+fellow lodger
+fellow man
+fellow member
+fellow mortal
+fellow passenger
+fellow patriot
+fellow pedestrian
+fellow plotter
+fellow prisoner
+fellow pupil
+fellow servant
+fellowship porter
+fellow sinner
+fellow soldier
+fellow student
+fellow sufferer
+fellow townsman
+fellow traveler
+fellow tribesman
+fellow victim
+fellow villager
+fellow worker
+fellow workman
+fellow worshiper
+felon grass
+felon herb
+felsite-porphyry
+felt conditioner
+felt cutter
+felt dauber
+felt drier
+felt fern
+felt former
+felt fuller
+felt grain
+felt-jacketed
+felt knife
+felt-lined
+felt oiler
+felt packer
+felt roller
+felt roofer
+felt roofing
+felt rust
+felt sewer
+felt-shod
+felt washer
+felt weaver
+felt worker
+feme covert
+feme sole
+feme-sole trader
+fen-born
+fen-bred
+fence arbor
+fence balk
+fence builder
+fence lizard
+fence maker
+fence month
+fence-off
+fence post
+fence puller
+fence rail
+fence season
+fence splicer
+fence stretcher
+fence tightener
+fencing foils
+fencing mask
+fencing master
+fencing match
+fencing school
+fencing stick
+fen cress
+fender bar
+fender beam
+fender bolt
+fender boom
+fender pile
+fender post
+fender skid
+fender spar
+fen duck
+fen farmer
+fen farming
+fen fever
+fen fire
+fen grape
+fen groundsel
+fen lentil
+fennel giant
+fennel-leaved
+fennel oil
+fennel seed
+fennel water
+fen orchis
+fen rue
+fen skate
+fen skater
+fen skating
+fen-sucked
+fen thrush
+fen-ting
+feriae jova
+ferling-noble
+fermentation gum
+fermentation tube
+fern ally
+fern ball
+fern bracken
+fern bush
+fern-clad
+fern clubmoss
+fern covert
+fern-crowned
+fern cycad
+fern-fringed
+fern green
+fern hook
+fern-leaved
+fern meadowbur
+fern moss
+fern owl
+fern palm
+fern preserver
+fern scale
+fern scrub
+fern seed
+fern-thatched
+fern tree
+fern weevil
+ferret-badger
+ferret-eyed
+ferretto zone
+ferro-carbon-titanium
+ferrotype tin
+ferro-uranium
+ferry bell
+ferry bridge
+ferry captain
+ferry car
+ferry craft
+ferry incline
+ferry master
+ferry pole
+ferry slip
+ferry steamer
+ferry ticket
+ferry warden
+fertile-flowered
+fertile-fresh
+fertile-headed
+fertilization cone
+fertilization tube
+fertilizer ammonia
+fertilizer chemical
+fertilizer crusher
+fertilizer-crushing
+fertilizer distributor
+fertilizer divider
+fertilizer drill
+fertilizer hand
+fertilizer maker
+fertilizer making
+fertilizer meal
+fertilizer mill
+fertilizer mixer
+fertilizer phosphate
+fertilizer plant
+fertilizer press
+fertilizer sampler
+fertilizer spreader
+fertilizer tank
+fescue grass
+fess point
+festoon cloud
+festoon lighting
+festoon pine
+fetch candle
+fetched-on
+fetch rod
+fete day
+fetlock-deep
+fetter bone
+feu annual
+feu charter
+feu duty
+feu farm
+feu farmer
+fever bark
+fever bird
+fever blister
+fever chart
+fever-cooling
+fever curve
+fever-destroying
+fever flash
+fever fly
+fever-haunted
+fever heat
+fever-lurden
+fever-maddened
+fever plant
+fever-ridden
+fever-shaken
+fever-sick
+fever-smitten
+fever sore
+fever-stricken
+fever therapy
+fever thermometer
+fever tree
+fever-troubled
+fever-warm
+fever-weakened
+few-acred
+few-celled
+few-flowered
+few-flowered oat grass
+few-fruited
+few-seeded
+few-toothed
+F-flat
+F-head cylinder
+f-hole
+F horn
+Fianna fail
+fibble-fable
+fiber boilerman
+fiber carder
+fiber comber
+fiber crimper
+fiber drafter
+fiber dresser
+fiber-faced
+fiber filler
+fiber graphite
+fiber hackler
+fiber mixer
+fiber plant
+fiber plaster
+fiber saturation point
+fiber-shaped
+fiber sorter
+fiber stitch
+fiber turner
+fiber wax
+fibrin ferment
+fibroid phthisis
+fibro-osteoma
+fibrous-coated
+fibrous grass
+fibrous-rooted
+fickle-fancied
+fickle-headed
+fickle-minded
+fickle-mindedly
+fickle-mindedness
+fiddleback chasuble
+fiddle beetle
+fiddle block
+fiddle bow
+fiddle-brained
+fiddle case
+fiddle dock
+fiddle-faced
+fiddle-faddle
+fiddle-faddler
+fiddle-flanked
+fiddle flower
+fiddle head
+fiddle-lipped
+fiddle maker
+fiddle making
+fiddle-neck
+fiddler crab
+fiddler duck
+fiddle-scraping
+fiddle-shaped
+fiddle-waist
+fiddley house
+fiddley opening
+fideicommissary heir
+fidelity bond
+fidelity insurance
+fid hole
+fie-fie
+field army
+field artillery
+field ash
+field balm
+field balsam
+field basil
+field battery
+field bean
+field bed
+field bee
+field beet
+field bellwort
+field betony
+field bindweed
+field book
+field bugloss
+field camomile
+field capacity
+field chickweed
+field clerk
+field coil
+field company
+field control
+field-control converter
+field-controlled
+field conventicle
+field-conventicler
+field corn
+field-cornet
+field-cornetcy
+field cress
+field cricket
+field crop
+field crowfoot
+field cypress
+field daisy
+field day
+field-discharge switch
+field dodder
+field dog
+field driver
+field duck
+field fortification
+field frame
+field garlic
+field glass
+field goal
+field gray
+field gromwell
+field gun
+field hand
+field hockey
+field horsetail
+field hospital
+field house
+field ice
+fielding average
+field intensity
+field judge
+field kale
+field kitchen
+field lark
+field larkspur
+field lens
+field lily
+field madder
+field magnet
+field maneuver
+field marigold
+field mark
+field marshal
+field martin
+field meeting
+field milkwort
+field mint
+field mouse
+field mushroom
+field music
+field nigelweed
+field night
+field oak
+field officer
+field order
+field park
+field pea
+field pine
+field plotter
+field plover
+field poa grass
+field poppy
+field probable error
+field ration
+field rivet
+field rush
+field salad
+field scabious
+field scorpion grass
+field soapwort
+field sorrel
+field southernwood
+field spaniel
+field sparrow
+field speedwell
+field spider
+field spool
+field staff
+field stop
+field strength
+field system
+field telegraph
+field thistle
+field thyme
+field tiller
+field titling
+field train
+field training
+field-transfer switch
+field trial
+field trip
+field vole
+field winding
+field wormwood
+field woundwort
+field yam-root
+fierce-eyed
+fierce-faced
+fierce-looking
+fierce-minded
+fierce-natured
+fiery-bright
+fiery-crowned
+fiery-eyed
+fiery-faced
+fiery-fierce
+fiery-flaming
+fiery-footed
+fiery-helmed
+fiery-hoofed
+fiery-hot
+fiery-kindled
+fiery-liquid
+fiery-mouthed
+fiery-pointed
+fiery-rash
+fiery-seeming
+fiery-shining
+fiery-spangled
+fiery-sparkling
+fiery-spirited
+fiery-sworded
+fiery-tempered
+fiery-tressed
+fiery-twinkling
+fiery-veined
+fiery-visaged
+fiery-wheeled
+fiery-winged
+fiesta flower
+fife rail
+fifteen-pounder
+fifth column
+fifth columnist
+fifty-acre
+fifty-eight
+fifty-eighth
+fifty-fifth
+fifty-fifty
+fifty-first
+fifty-five
+fifty-four
+fifty-fourth
+fifty-mile
+fifty-nine
+fifty-ninth
+fifty-one
+fifty-second
+fifty-seven
+fifty-seventh
+fifty-six
+fifty-sixth
+fifty-third
+fifty-three
+fifty-two
+fifty-year
+figaro sauce
+fig banana
+fig bar
+fig bean
+fig dust
+fig faun
+fig finch
+fighting cock
+fighting ship
+fighting weight
+fight-off
+fig insect
+fig leaf
+fig marigold
+fig moth
+fig parrot
+fig paste
+fig-shaped
+fig soap
+fig-tree wax
+figure caster
+figure dance
+figure dancer
+figure eight
+figure-four trap
+figure skater
+figure skating
+figure stone
+figure work
+fig wart
+fig wasp
+fig wax
+figwort family
+Fiji arrowroot
+Fiji chestnut
+filament battery
+filament lamp
+filbert brown
+filbert mouse
+file card
+file cleaner
+file closer
+file cutter
+file dresser
+file dust
+file finishing
+file firing
+file forger
+file grinder
+file-hard
+file setter
+file sharpener
+file signal
+file snake
+file-soft
+file tempering
+filet mignon
+Filipino-american
+Filipino ration
+filix-mas
+fill-belly
+fill-dike
+filler-in
+filler-out
+filler-up
+filler vase
+filler wall
+fillet head
+filletster plane
+fill-in
+filling station
+fillister head
+fillister screwhead
+fill-paunch
+fill-space
+fill-up
+filly-folly
+filly tail
+film base
+film camera
+film caption
+film case
+film color
+film cutter
+film developer
+film editor
+film evaporator
+film fern
+film-free
+film gate
+film joiner
+film paper
+film play
+film printer
+film production
+film repairer
+film sizing
+film star
+film-struck
+film studio
+filmy-eyed
+filter bed
+filter candle
+filter center
+filter factor
+filter flask
+filtering flask
+filter leaf
+filter paper
+filter passer
+filter-passing
+filter plate
+filter press
+filth-borne
+filth-created
+filth disease
+filth-fed
+filth ferment
+filth-sodden
+filthy-handed
+filum aquae
+Fimbul-winter
+Finality men
+finance bill
+finance company
+Finance department
+fin-backed
+finback whale
+fin boom
+finch falcon
+fin colter
+fin cutter
+finder-point punch
+finder switch
+finding list
+finding store
+fine-appearing
+fine art
+fine arts
+fine-ax
+fine-bore
+fine-bred
+fine-count
+fine-cut
+fine-dividing
+fine-draw
+fine-drawer
+fine-drawn
+fine-dressed
+fine-eyed
+fine-feathered
+fine-featured
+fine-feeling
+fine-fleeced
+fine-furred
+fine-graded
+fine-grained
+fine-haired
+fine-headed
+fine-leaved
+fine-leaved heath
+fine-looking
+fine-mouthed
+fine-nosed
+finery furnace
+finery hearth
+fine-set
+fine sewer
+fine-sifted
+fine-skinned
+fine-spirited
+fine-spoken
+fine-tapering
+fine-threaded
+fine-timbered
+fine-toned
+fine-tongued
+fine-tooth
+fine-tooth comb
+fine-toothed
+fine-tricked
+fine-wrought
+fin fold
+fin-fold theory
+fin-footed
+finger-ache
+finger alphabet
+finger-and-toe
+finger bar
+finger board
+finger bowl
+finger brush
+finger clamp
+finger-comb
+finger-comb grass
+finger-cone
+finger-cone pine
+finger coral
+finger-cut
+finger cutting
+finger exercise
+finger fern
+finger-foxed
+finger fracture
+finger gauge
+finger grass
+finger grip
+finger guard
+finger herb
+finger hole
+finger joint
+finger lake
+finger lime
+finger mark
+finger nut
+finger painting
+finger plate
+finger-pointing
+finger post
+finger ring
+finger-shaped
+finger shell
+finger sponge
+finger steel
+finger wave
+finish-bore
+finish-cut
+finisher card
+finish-form
+finish-grind
+finishing change
+finishing chisel
+finishing nail
+finishing school
+finishing stove
+finishing tap
+finish-machine
+finish-mill
+finish-plane
+finish-ream
+finish-shape
+finish-stock
+finish-stock change
+finish-turn
+fin keel
+finnan haddie
+finnan haddock
+Finno-hungarian
+Finno-slav
+Finno-slavonic
+Finno-tatar
+Finno-turki
+Finno-turkish
+Finno-ugrian
+Finno-ugric
+fin ray
+fin-shaped
+fin-spined
+fin-tailed
+fin-toed
+fin whale
+fin-winged
+fippenny bit
+fipple flute
+fir apple
+fir ball
+fir balsam
+fir-bordered
+fir-built
+fir club moss
+fir cone
+fir-crested
+Fir domnann
+fire adjuster
+fire alarm
+fire altar
+fire-angry
+fire ant
+fire apparatus
+fire appliance
+fire area
+fire arrow
+fire assay
+fire-backed pheasant
+fire balloon
+fire-baptized
+fire bar
+fire barrel
+fire barrier
+fire basket
+fire bean
+fire-bearing
+fire beater
+fire bed
+fire beetle
+fire bell
+fire-bellied
+fire belt
+fire bill
+fire blast
+fire blight
+fire block
+fire blower
+fire-born
+fire boss
+fire breather
+fire-breathing
+fire-breeding
+fire bridge
+fire brigade
+fire bucket
+fire builder
+fireburn bush
+fire-burning
+fire-burnt
+fire bush
+fire cage
+fire chamber
+fire cherry
+fire chief
+fire churn
+fire-clad
+fire clay
+fire cock
+fire command
+fire commander
+fire company
+fire control
+fire-cracked
+firecracker flower
+fire-crested
+fire cross
+fire-crowned
+fire-cure
+fire curtain
+fire cutoff
+fire dance
+fire-darting
+fire department
+fire-detecting
+fire division wall
+fire door
+fire drill
+fire drilling
+fire-eater
+fire-eating
+fire effect
+fire-endurance
+fire-endurance test
+fire engine
+fire escape
+fire exit
+fire-exit bolt
+fire extinguisher
+fire-extinguishing
+fire-eyed
+fire fan
+fire festival
+fire fiend
+fire fight
+fire fighter
+fire fighting
+fire finch
+fire finder
+fire flag
+fire-float
+fire-flowing
+fire-foaming
+fire-footed
+fire-free
+fire fungus
+fire-gilded
+fire gilding
+fire gilt
+fire gilting
+fire glass
+fire-god
+fire gong
+fire grass
+fire grate
+fire hangbird
+fire-hardened
+fire hat
+fire hazard
+fire hearth
+fire-hoofed
+fire hook
+fire hose
+fire-hot
+fire-hunt
+fire-hunting
+fire hydrant
+fire inspector
+fire insurance
+fire iron
+fire kiln
+fire ladder
+fire lane
+fire-leaves
+fire-lighted
+fire lily
+fire line
+fire-lipped
+fire loss
+fire main
+fire maker
+fire making
+fire mark
+fire-marked
+fire marshal
+fire mist
+fire-mouthed
+fire net
+fire-new
+fire office
+fire opal
+fire pail
+fire patrol
+fire pike
+fire pink
+fire pit
+fire-pitted
+fireplace fitter
+fire plant
+fire-plow
+fire point
+fire police
+fire-polish
+fire pot
+fire prevention
+fire-protection engineer
+fire quencher
+fire-quenching
+fire raft
+fire-raiser
+fire-raising
+fire-red
+fire reel
+fire resistance
+fire-resistive
+fire-retardant
+fire-retarded
+fire retarder
+fire-ring
+fire risk
+fire-robed
+fire root
+fire-safeness
+fire salamander
+fire sale
+fire salvage
+fire sand
+fire saw
+fire scarlet
+fire-scarred
+fire-scathed
+fire screen
+fire-seamed
+fire set
+fire setting
+fire ship
+fire shovel
+fire shutter
+fire slash
+fire-souled
+fire spirit
+fire-spirited
+fire-spitting
+fire-sprinkling
+fire station
+fire step
+fire stick
+fire stink
+fire stop
+fire-strong
+fire swab
+fire-swart
+fire-swift
+fire-tailed
+fire temple
+fire test
+fire thorn
+fire-tight
+fire tongs
+fire tower
+fire tree
+fire trench
+fire tube
+fire-tube boiler
+fire underwriter
+fire walk
+fire wall
+fire-warmed
+fire-wheeled
+fire window
+fire-winged
+fire worker
+fire worship
+fire worshiper
+fir green
+firing charge
+firing data
+firing iron
+firing line
+firing party
+firing pin
+firing ring
+firing squad
+firing step
+firing tread
+firmament blue
+firm-based
+firm-braced
+firm-chinned
+firm-compacted
+firm-footed
+firm-framed
+firm-jawed
+firm-joint
+firm-minded
+firm-nerved
+fir moss
+firm-paced
+firm-planted
+firm-rooted
+firm-set
+firm-sinewed
+firm-textured
+firm-written
+fir needle
+fir parrot
+fir pine
+fir rape
+fir rope
+fir-scented
+first-aid
+first-aider
+first-begot
+first-begotten
+first-born
+first-bred
+first-built
+first-chop
+first-class
+first-class mail
+first-conceived
+first-created
+first-done
+first-endeavoring
+first-expressed
+first-famed
+first-foot
+first-formed
+first-found
+first-framed
+first-gendered
+first-gotten
+first-grown
+first-invented
+first-known
+first-loved
+first-made
+first-mentioned
+first-mining
+first-mortgage bond
+first name
+first-named
+first-night
+first-nighter
+first off
+first-order reaction
+first-page
+first-preferred
+first-rate
+first-rately
+first-rateness
+first-rater
+first-ripe
+first-seen
+first-string
+first-told
+first-written
+fir-topped
+fir wood
+fir wool
+fise dog
+fish-backed
+fish ball
+fish beam
+fish begonia
+fish-bellied
+fish belly
+fish-belly rail
+fish blanket
+fish-blooded
+fishbone thistle
+fishbone tree
+fish boom
+fish breeder
+fish breeding
+fish cake
+fish-canning
+fish carrier
+fish carver
+fish checker
+fish coop
+fish crane
+fish crow
+fish-cultural
+fish culture
+fish-culturist
+fish davit
+fish day
+fish dinner
+fish duck
+fish-eating
+fisher-cat
+fishery salt
+fish essence
+fish-eyed
+fish factory
+fish-fag
+fish-fed
+fish-feeding
+fish flake
+fish-flaking
+fish flour
+fish fly
+fish fork
+fish fry
+fish fungus
+fish geranium
+fish globe
+fish glue
+fish-god
+fish-goddess
+fish grass
+fish guano
+fish hatcher
+fish hatchery
+fish-hatching
+fish hawk
+fishhook cactus
+fishhook money
+fishing banks
+fishing boat
+fishing breeze
+fishing cat
+fishing club
+fishing craft
+fishing dory
+fishing duck
+fishing float
+fishing gear
+fishing ground
+fishing hook
+fishing line
+fishing net
+fishing pole
+fishing reel
+fishing rod
+fishing schooner
+fishing smack
+fishing spear
+fishing tackle
+fishing worm
+fish inspector
+fish joint
+fish kettle
+fish killer
+fish ladder
+fish louse
+fish manure
+fish maw
+fish meal
+fish mint
+fish mold
+fish moth
+fish net
+fish oil
+fish owl
+fish pearl
+fish pendant
+fish plank
+fish poison
+fish pole
+fish pomace
+fish-producing
+fish salt
+fish scale
+fish-scaling
+fish scrap
+fish-selling
+fish-shaped
+Fishskin tatar
+fish slice
+fish-slitting
+fish splice
+fish story
+fish tackle
+fishtail bit
+fishtail burner
+fishtail cutter
+fishtail drapery
+fishtail palm
+fishtail-shaped
+fishtail wind
+fish tape
+fish tapeworm
+fish tongue
+fish torpedo
+fish warden
+fish wheel
+fish wire
+fission alga
+fission bomb
+fission fungus
+fissure vein
+fist hatchet
+fist law
+fist mate
+fit plant
+fit strip
+fittie-lan
+fitting change
+fitting strip
+Fitz-james
+five-acre
+five-act
+five all
+five back
+five-barred
+five-barred gate
+five-beaded
+five-branched
+five-card
+five-chambered
+five-corn
+five-cornered
+five-corners
+five-cut
+five-day
+five-day week
+five-figure
+five-finger
+five-fingered
+five-fingers
+five-flowered
+five-foiled
+five-foot
+five-gaited
+five-guinea
+five-horned
+five-hour
+five-inch
+five-leaf
+five-leafed
+five-leaved
+five-line
+five-lined
+five-lobed
+five-master
+five-mile
+five-minute
+five-nerved
+five-nine
+five-page
+five-part
+five-parted
+five-part time
+fivepenny morris
+five percenter
+five-ply
+five-pointed
+five-pound
+five-quart
+five-rater
+five rayed
+five-reel
+five-reeler
+five-ribbed
+five-room
+five-shooter
+five-sisters
+five-spot
+five-spotted
+five-story
+five-stringed
+five-toed
+five-toothed
+five-twenty
+five-valved
+five-volume
+five-week
+five-year
+Five-year plan
+fixation abscess
+fixation pause
+fixation point
+fixed-bar
+fixed-do
+fixed-hub
+fixed-hub axle
+fixed-temperature
+flabby-cheeked
+flag-bearer
+flag-bedizened
+flag captain
+flageolet tone
+flag flower
+flagging iron
+flag halyard
+flag hoister
+flag lieutenant
+flag list
+flag officer
+flagon-shaped
+flag post
+flag rank
+flag signal
+flag smut
+flag station
+flag stop
+flail joint
+flake figure
+flake manna
+flake stand
+flake tragacanth
+flake white
+flak ship
+flak train
+flame azalea
+flame blue
+flame-breasted
+flame-breathing
+flame bridge
+flame cell
+flame-colored
+flame-cut
+flame-darting
+flame-devoted
+flame-eyed
+flame-faced
+flame-feathered
+flame-haired
+flame ignition
+flame lily
+flame lousewort
+flame manometer
+flame nettle
+flame projector
+flame reaction
+flame-red
+flame-robed
+flame scarlet
+flame-shaped
+flame-snorting
+flame-sparkling
+flame spectrum
+flame standard
+flame test
+flame thrower
+flame-tight
+flame-tipped
+flame tree
+flame-uplifted
+flame vine
+flame-winged
+flamingo flower
+flange bushing
+flange coupling
+flange joint
+flange nut
+flange plate
+flange pulley
+flange rail
+flange steel
+flange tile
+flange union
+flank attack
+flank company
+flank defense
+flank file
+flank fire
+flank guard
+flanking angle
+flank march
+flank movement
+flank patrol
+flank steak
+flannel cake
+flannel moth
+flannelmouth catfish
+flap-eared
+flap hinge
+flapper-bag
+flapper dock
+flapper skate
+flap tile
+flare light
+flare-out
+flare-up
+flash back
+flash boiler
+flash bulb
+flash burn
+flash butt welding
+flash card
+flash color
+flashed brick
+flash gear
+flash generator
+flash gun
+flashing block
+flashing point
+flash lamp
+flash method
+flashover voltage
+flash pipe
+flash point
+flash set
+flash spectrum
+flash test
+flash tube
+flash valve
+flash welding
+flash wheel
+flask-shaped
+flat-armed
+flat back
+flat-backed
+flat-beaked
+flat-bed
+flat-billed
+flat-bosomed
+flat-bottomed
+flat-breasted
+flat-browed
+flat-cheeked
+flat-chested
+flat-compound
+flat-crowned
+flat-decked
+flat-ended
+flat-faced
+flat-floored
+flat-fold
+flat foot
+flat-footed
+flat-footedly
+flat-footedness
+flat-fronted
+flat-grained
+flat-handled
+flat-hatter
+flathead cat
+flat-headed
+flat-heeled
+flat-hoofed
+flat-horned
+flat-joint pointing
+flat key
+flat-knit
+flat-minded
+flat-mouthed
+flat-nosed
+flat-out
+flat-packed
+flat-plate keel
+flat-plate printing
+flat point lace
+flat race
+flat racing
+flat-ribbed
+flat-ring
+flat-ring armature
+flat-roofed
+flat sage
+flat-shouldered
+flat-sided
+flat-slab construction
+flat-soled
+flattail mullet
+flattened-strand rope
+flattening oven
+flattening stone
+flatter-blind
+flatting furnace
+flatting mill
+flatting oil
+flat tire
+flat-toothed
+flat-topped
+flat-turret lathe
+flat-visaged
+flat-waisted
+flatwork ironer
+flavoring extract
+flax bellflower
+flax blue
+flax brake
+flax buncher
+flax bundler
+flax canker
+flax comb
+flax dodder
+flax dresser
+flaxen-haired
+flaxen-headed
+flaxen-wigged
+flax family
+flax-flower blue
+flax hackler
+flax-leaved
+flax lily
+flax olive
+flax plant
+flax-polled
+flax retter
+flax ripple
+flax rust
+flaxseed cake
+flaxseed coal
+flax-sick
+flax snapdragon
+flax spinner
+flax star
+flax straw
+flax vine
+flax wheel
+flax wilt
+flax winder
+F layer
+fleabane mullet
+flea beetle
+flea-bitten
+flea bug
+flea fair
+flea hopper
+flea louse
+flea-lugged
+flea mint
+fleam tooth
+fleece-lined
+fleece vine
+fleece wool
+fleecy-looking
+fleecy-white
+fleecy-winged
+fleet admiral
+Fleet-book evidence
+fleet engineer
+fleet-foot
+fleet-footed
+fleet insurance
+fleet milk
+fleet submarine
+Flemish-coil
+Flemish school
+flench-gut
+flesh-bearing
+flesh color
+flesh-colored
+flesh-consuming
+flesh crow
+flesh-devouring
+flesh eater
+flesh-eating
+flesh-fallen
+flesh flea
+flesh fly
+flesh fork
+flesh glove
+flesh hoop
+fleshing knife
+fleshly-minded
+flesh ocher
+flesh pink
+flesh red
+flesh side
+flesh tint
+flesh tone
+flesh worm
+fleshy fruit
+fleshy-fruited
+fleur-de-lis
+fleur de luce
+fleur de lys
+fleurs-de-lis
+fleury counterfleury
+flexible shaft
+flexible-shaft drill
+flex point
+flexure plate scale
+flicker photometer
+flicker photometry
+Flickertail state
+flier-out
+flight arrow
+flight feather
+flight muscle
+flight path
+flight shooter
+flight shooting
+flight song
+flight strip
+flinders grass
+flinging-tree
+flint age
+flint clay
+flint corn
+flint-dried
+flint glass
+flint gray
+flint mill
+flint miller
+flint milling
+flint paper
+flint paring
+flint skinning
+flint sponge
+flint wheat
+flip-flap
+flip glass
+flipperty-flopperty
+flippity-flop
+flip-up
+flirtation-proof
+flirt-gill
+flitch beam
+flitch girder
+flitch plate
+float bowl
+float bridge
+float builder
+float carburetor
+float chamber
+float copper
+float-cut
+float-cut file
+float-feed
+float-feed carburetor
+float fescue
+float fishing
+float foxtail
+float grass
+floating fescue
+floating foxtail
+floating grass
+floating manna grass
+float-iron
+float key
+float net
+float ore
+float pump
+float road
+float stick
+float tank
+float trap
+float valve
+float whey
+float work
+flock book
+flock duck
+flock mating
+flock pigeon
+floe rat
+flogging chisel
+flogging hammer
+flood dam
+flood fallowing
+flood-hatch
+flood lamp
+floodlight projector
+flood tide
+floor arch
+floor beam
+floor board
+floor boarding
+floor broker
+floor chisel
+floor clamp
+floor cleaner
+floor cleaning
+floor covering
+floor dresser
+floor dressing
+floor finish
+floor hanger
+flooring beam
+flooring block
+flooring board
+flooring clamp
+flooring grating
+flooring hatchet
+flooring joist
+flooring lumber
+flooring nail
+flooring plank
+flooring plaster
+flooring saw
+flooring stone
+flooring timber
+floor joist
+floor knob
+floor lamp
+floor leader
+floor line
+floor-load
+floor mat
+floor mop
+floor oil
+floor oiler
+floor paint
+floor pit
+floor plan
+floor plate
+floor play
+floor plug
+floor polish
+floor polisher
+floor push
+floor sander
+floor scraper
+floor show
+floor slab
+floor stain
+floor switch
+floor system
+floor tile
+floor timber
+floor trader
+floor wax
+floor waxing
+flop-eared
+flop-top
+floral decorator
+Florentine school
+flores sulphuris
+flos ferri
+flosh silk
+flossflower blue
+floss hole
+floss silk
+floss thread
+flotation blanket
+flotation cell
+flotation gear
+flounder-man
+flour bag
+flour barrel
+flour beetle
+flour bin
+flour blend
+flour blender
+flour blending
+flour bolt
+flour bolter
+flour bolting
+flour copper
+flour corn
+flour grinder
+flour hopper
+flourishing thread
+flour maker
+flour mill
+flour miller
+flour milling
+flour mite
+flour mixer
+flour moth
+flour packer
+flour paste
+flour sack
+flour sifter
+flour sifting
+flour slick
+flour weevil
+flour weigher
+flour worm
+flowage texture
+flow bean
+flow-blue
+flow calorimeter
+flower-bearing
+flower bed
+flower beetle
+flower-bespangled
+flower-besprinkled
+flower boat
+flower-breeding
+flower bud
+flower concrete
+flower-crowned
+flower cup
+flower-cup fern
+flower-decked
+flower-embroidered
+flower-enameled
+flower-enwoven
+flower-faced
+flower fence
+flower garden
+flower girl
+flower grower
+flower head
+flower-hung
+flower-infolding
+flowering rush
+flowering-rush family
+flower-inwoven
+flower-kirtled
+flower maker
+flower making
+flower painter
+flower painting
+flower paintress
+flower piece
+flower pride
+flower-scented
+flower scissors
+flower seller
+flower-shaped
+flower shop
+flower show
+flower spike
+flower-sprinkled
+flower stalk
+flower-strewn
+flower-sucking
+flower-sweet
+flower-teeming
+flower time
+flower tree
+flowery-kirtled
+flowery-mantled
+flow gate
+flowing-robed
+flow moss
+flow nipple
+flow sheet
+flow texture
+fluctuation-proof
+flue bridge
+flue cleaner
+flue-cure
+flue pipe
+flue plate
+flue stop
+flue stopper
+flue surface
+fluff-gib
+fluffy-haired
+fluffy-minded
+fluid assets
+fluid-compressed
+fluid compression
+fluid die
+fluid drive
+fluorite green
+fluorite violet
+flush-bound
+flush box
+flush coat
+flush-cut
+flush deck
+flush-decked
+flush-decker
+flush-headed
+flush-head rivet
+flushing rim
+flush-jointed
+flush-plated
+flush-plate filter
+flush rim
+flush tank
+flute-douce
+flute glass
+flute-shaped
+flute shrike
+flute stop
+flutter-headed
+flutter kick
+flutter valve
+flutter wheel
+fluvio-aeolian
+flux density
+flux function
+flux turn
+fly agaric
+fly anchor
+fly ash
+flyaway grass
+fly bar
+fly-bitten
+fly blister
+fly block
+fly cap
+fly-catching
+fly cop
+fly drill
+fly finisher
+fly finishing
+fly-fish
+fly-fisher
+fly-fisherman
+fly-fishing
+fly frame
+fly-free
+fly fungus
+fly governor
+fly half
+fly honeysuckle
+flying circus
+flying deck
+flying fish
+flying machine
+flying start
+fly-killing
+fly line
+fly mold
+fly mushroom
+fly net
+fly nut
+fly oat
+fly orchid
+fly page
+fly poison
+fly powder
+fly press
+fly rail
+fly rod
+fly rollway
+fly rope
+fly sheet
+fly snapper
+fly-specked
+fly-spleckled
+fly spring
+fly stone
+fly-stuck
+fly-swarmed
+fly tick
+fly tip
+fly title
+fly wagon
+fly water
+fly weevil
+flywheel efficiency
+flywheel-explosion
+F major
+F minor
+F natural
+foam-beat
+foam-born
+foam-crested
+foam extinguisher
+foam-flanked
+foam-flecked
+foam-girt
+foam-lit
+foam-painted
+foam rubber
+foam-white
+fob chain
+focal plane
+focal-plane shutter
+focusing glass
+focus lamp
+focus tube
+foe-encompassed
+foe-reaped
+foe-subduing
+fog alarm
+fog bank
+fog bell
+fog belt
+fog-beset
+fog-blue
+fog-born
+fog-bred
+fog buoy
+fog circle
+fog grass
+fog-hidden
+fog-logged
+fog-ridden
+fog screen
+fog signal
+fog whistle
+fold dike
+folder-up
+fold soke
+foliage brown
+foliage carver
+foliage green
+foliage leaf
+folio letterheads
+folio noteheads
+folio post
+folk air
+folk art
+folk ballad
+folk belief
+folk carol
+folk custom
+folk dance
+folk drama
+folk ethics
+folk-etymological
+folk etymology
+folk lay
+folk literature
+folk medicine
+folk melody
+folk mind
+folk music
+folk myth
+folk nation
+folk play
+folk poetry
+folk psychologist
+folk psychology
+folk school
+folk singer
+folk song
+folk speech
+folk state
+folk tale
+folk theater
+folk tune
+follicle mite
+follow block
+follow dies
+follower plate
+follower rest
+follower-up
+follow-my-leader
+follow-on
+follow rest
+follow shot
+follow-through
+follow-up
+folly-bent
+folly-blind
+folly-drenched
+folly-fallen
+folly-fed
+folly-maddened
+folly-painting
+folly-snared
+folly-stricken
+fond-blind
+fond-conceited
+fond-hardy
+fond plow
+fond-sparkling
+food allowance
+food analyst
+food ball
+food cabinet
+food canal
+food card
+food cart
+food chain
+food chemist
+food container
+food cycle
+food faddist
+food fish
+food grain
+food grower
+food inspector
+food package
+food packer
+food plant
+food preservative
+food-processing
+food-producing
+food-productive
+food-providing
+food reserve
+food shop
+food-sick
+food-size
+food supply
+food tax
+food tube
+food value
+food waste
+food yolk
+foo-foo
+fool-bold
+fool-born
+fool duck
+fool-frequented
+fool-frighting
+fool-happy
+fool hay
+fool-headed
+fool-heady
+fool hen
+foolish-bold
+foolish-looking
+foolish-wise
+foolish-witty
+fool plow
+foot accelerator
+foot-acted
+foot base
+foot bath
+foot bellows
+foot-binding
+foot bone
+foot brake
+foot-candle
+foot-candle meter
+foot carpet
+foot correctionist
+foot cushion
+foot dirt
+foot doctor
+foot drop
+foot-faring
+foot fault
+foot-firm
+foot-free
+foot front
+foot-grain
+foot-grain per second
+foot guard
+foothill death camas
+foothill pine
+foothill yellow pine
+footing ale
+footing beam
+footing stone
+foot iron
+foot jaw
+foot-lambert
+foot-lame
+foot-length
+foot lever
+foot-licking
+foot lift
+foot line
+foot-loose
+foot mange
+footman moth
+foot mantle
+foot match
+foot measure
+foot page
+foot pan
+foot passenger
+foot pavement
+foot post
+foot-pound
+foot-poundal
+foot-pound-second
+foot-power
+foot pump
+foot race
+foot racer
+foot racing
+foot road
+foot rot
+foot rule
+foot-running
+foot scab
+foot score
+foot scraper
+foot screw
+foot-second
+foot soldier
+foot specialist
+footstep bearing
+foot stove
+foot-tiring
+foot-ton
+foot tour
+foot track
+foot trail
+foot traveler
+foot tubercle
+foot-up
+foot valve
+foot waling
+foot walker
+foot warmer
+foot washing
+foot-weary
+forage cap
+forage grass
+forage poisoning
+forage press
+foraging ant
+force attack
+force bed
+force-closed
+force feed
+force feeding
+force fit
+force function
+force main
+force-out
+force play
+force polygon
+forceps-shaped
+force pump
+force-put
+forcible-feeble
+forcing engine
+forcing fit
+forcing system
+fore-age
+fore-and-aft-rigged
+fore-being
+fore bow
+forecastle deck
+forecastle hand
+forecastle hatch
+forecastle netting
+forecastle rail
+forecastle scuttle
+forecastle watch
+fore edge
+fore-elder
+fore-end
+fore-exercise
+fore-glide
+fore-gut
+forehand shaft
+forehand shooting
+foreign-appearing
+foreign-born
+foreign-bred
+foreign-built
+foreign-looking
+foreign-made
+foreign-manned
+foreign office
+foreign-owned
+foreign-speaking
+forelock hook
+fore-oath
+fore part
+fore plane
+fore rent
+fore rider
+fore-set beds
+fore sey
+fore-stage
+forest-belted
+forest-born
+forest-bosomed
+forest-bound
+forest-bred
+Forest city
+forest-clad
+forest court
+forest cover
+forest-covered
+forest-crowned
+forest dweller
+forest-dwelling
+forest-felling
+forest fire
+forest fly
+forest-frowning
+forest green
+forest-grown
+forest gum
+forest horse
+forest keeper
+forest mahogany
+forest oak
+forest officer
+forest peat
+forest pig
+forest pygmy
+forest ranger
+forest red gum
+forest-rustling
+forest school
+Forest service
+forest sheriff
+forest tent caterpillar
+forest tupelo
+forest type
+forest warden
+forest white
+fore-tooth
+fore-topgallant
+fore-topmast
+fore-topsail
+forge blower
+forge furnace
+forge furnaceman
+forge hammerman
+forge pressman
+forge roller
+forgery bond
+forgery-proof
+forge shearer
+forge slinger
+forge smith
+forget-me-not
+forget-me-not blue
+forge water
+forging press
+fork beam
+fork-carving
+fork cutler
+forked-headed
+forked-tailed
+fork-end
+fork-filled
+fork forger
+fork grinder
+fork hafter
+fork maker
+fork molder
+fork-pronged
+fork-ribbed
+fork-shaped
+fork splitter
+fork-tailed
+fork-tined
+fork-tongued
+formatio reticularis
+form board
+form class
+form-establishing
+form factor
+form-fitting
+form genus
+form-giving
+forming die
+forming press
+forming punch
+form letter
+formolite number
+formolite reaction
+Formosa oolong
+form quotient
+form-relieve
+form-revealing
+form species
+Fors fortuna
+Forsta kammaren
+Fort ancient
+fortification agate
+Fort pierre
+fort royal
+fortune hunter
+fortune-hunting
+Fort union
+forty-acre
+forty-eight
+forty-eighth
+forty-eightmo
+forty-fifth
+forty-first
+forty-five
+Forty-five
+forty-foot
+forty-four
+forty-fourth
+forty-knot
+forty-legged
+forty machine
+forty-mile
+forty-nine
+forty-niner
+forty-ninth
+forty-one
+forty-pound
+forty-second
+forty-seven
+forty-seventh
+forty-six
+forty-sixth
+forty-skewer
+forty-spot
+forty-third
+forty-three
+forty-ton
+forty-two
+forty-year
+forward-bearing
+forward bridge
+forward-creeping
+forward delivery
+forward echelon
+forward exchange
+forward-flowing
+forward-looking
+forward pass
+forward-pressing
+forward quotation
+forward-turned
+fossil copal
+fossil ivory
+fossil man
+fossil mud crack
+fossil oil
+fossil ore
+fossil resin
+fossil sea water
+fossil turquoise
+fossil word
+foster babe
+foster child
+foster dam
+foster daughter
+foster father
+foster home
+foster land
+foster milk
+foster mother
+foster nurse
+foster parent
+foster sire
+foster son
+foul-breathed
+foul-browed
+foul-faced
+foul-handed
+foul line
+foul-looking
+foul-minded
+foul-mindedness
+foul-reeking
+foul-smelling
+foul-spoken
+foul-tongued
+foundation course
+Foundation day
+foundation garment
+foundation plate
+foundation stone
+foundation stop
+foundling hospital
+foundry facing
+foundry iron
+foundry proof
+foundry scrap
+fountain grass
+fountain moss
+fountain pen
+fountain plant
+fountain runner
+fountain shell
+fountain syringe
+fountain tree
+four-acre
+four-bagger
+four-ball
+four-cant
+four-cent
+four-centered
+four-color
+four-colored
+four-cornered
+four-coupled
+four-cutter
+four-cycle
+four-cylinder
+four-cylindered
+four-day
+four-deck
+four-decked
+four-decker
+four-dimensional
+four-dimensioned
+four-dollar
+four-edged
+four-eyed
+four-eyes
+four-faced
+four-figured
+four-fingered
+four-flowered
+four-flush
+four-foot
+four-footed
+four-footer
+four-foot octave
+four-foot stop
+four-gallon
+four-grain
+four-gram
+four-gun
+Four-h
+four-hand
+four-handed
+four-hander
+four-headed
+four-horned
+four-horse
+four-horsed
+four-hour
+four-hours
+Fourier analysis
+four-inch
+four-leaf
+four-leafed
+four-leaved
+four-legged
+four-letter
+four-lettered
+four-line
+four-lined
+four-line octave
+four-lobed
+four-masted
+four-master
+four-minute
+four-minute man
+four-month
+four-oar
+four-oared
+four-oclock
+four-oclock family
+four-ounce
+four-part
+four-part flask
+four-part time
+fourpence hapenny
+four-phase
+four-place
+four-ply
+four-post
+four-posted
+four-poster
+four-pound
+Four-power
+four-quarter
+four-ring
+four-roomed
+four-rowed
+four-second
+four-shilling
+four-sided
+four-spined
+four-spotted
+four-storied
+four-story
+four-stranded
+four-stringed
+four-striped
+four-striper
+four-stroke
+four-stroke-cycle
+fourth-born
+fourth-class
+fourth dimension
+fourth-dimensional
+fourth-form
+fourth-hand
+fourth-rate
+fourth-rater
+four-three-two-one rule
+fourth-year
+four-time
+four-times-accented
+four-tined
+four-toed
+four-toes
+four-ton
+four-tooth
+four-way
+four-way cock
+four-way switch
+four-week
+four-wheel
+four-wheeled
+four-wheeler
+four-winged
+four-yard
+four-year
+four-year-old
+four-year-older
+fowl cherry
+fowl cholera
+fowl grass
+fowling piece
+fowl leukemia
+fowl meadow grass
+fowl mite
+fowl paralysis
+fowl pest
+fowl pox
+fowl spirochaetosis
+fowl tick
+fowl typhoid
+fox bat
+fox bolt
+fox-colored
+fox docken
+fox dog
+fox-faced
+fox fire
+fox-furred
+fox geranium
+fox goose
+fox grape
+fox grass
+fox hunt
+fox hunter
+fox hunting
+fox key
+fox lathe
+fox light
+fox moth
+fox-nosed
+fox plum
+fox poison
+fox rose
+fox shark
+fox-skinned
+fox snake
+fox sparrow
+fox squirrel
+foxtail cactus
+foxtail grass
+foxtail millet
+foxtail pine
+foxtail saw
+foxtail wedging
+foxter-leaves
+fox terrier
+fox trot
+fox-visaged
+fox wedge
+fox wolf
+fractional-pitch
+frail-bodied
+frame assembler
+frame bar
+frame bend
+frame boat
+frame brazer
+frame breaker
+frame breaking
+frame bridge
+frame builder
+frame building
+frame cleaner
+frame construction
+frame cottage
+frame dam
+frame door
+frame doubler
+frame dresser
+frame driller
+frame dwelling
+frame finisher
+frame fitter
+frame gate
+frame house
+frame lumber
+frame-made
+frame maker
+frame making
+frame molding
+frame plate
+frame saw
+frame sawyer
+frame set
+frame space
+frame structure
+frame stud
+frame timber
+frame trestle
+frame turner
+frame-up
+frame vise
+frame wall
+frame-work
+frame worker
+framing number
+franc-archer
+franchise tax
+Franco-american
+Franco-annamese
+Franco-austrian
+Franco-british
+Franco-canadian
+Franco-chinese
+Franco-gallic
+Franco-gallician
+Franco-gaul
+Franco-german
+Franco-italian
+Franco-latin
+Franco-lombardic
+Franco-mexican
+Franco-negroid
+Franco-provencal
+Franco-prussian
+Franco-roman
+Franco-russian
+Franco-soviet
+Franco-spanish
+Franco-swiss
+francs-archers
+franc-tireur
+frangula emodin
+frank almonage
+frank chase
+frank-faced
+frankfurt sausage
+frankincense pine
+Franklin cent
+Franklin tree
+frank-spoken
+frater house
+Fratres arvales
+Fratres praedicatores
+fraud order
+freckled-faced
+free-acting
+free-armed
+free-banking
+free-bestowed
+free-blown
+free-bred
+free-burning
+free church
+free-falling
+free-floating
+free-flowering
+free-flowing
+free-footed
+free-for-all
+free-going
+free-grown
+Free kirk
+free-lance
+free-living
+free love
+free lover
+free milling
+free-minded
+free-mindedly
+free-mindedness
+free-mouthed
+free-moving
+free-quarter
+free-quarterer
+free-reed
+free-select
+free-silver
+free silverism
+free silverite
+free soil
+free-soiler
+free-soilism
+Free-soilism
+Free-soil party
+free-speaking
+free-spirited
+free-spoken
+free-spokenly
+free-spokenness
+free-swimmer
+free-swimming
+free-tailed
+free-throw
+free-tongued
+free-trade
+free-trading
+free-tradist
+free-versifier
+free will
+free-willed
+free-willer
+free-working
+freeze-out
+freeze-up
+freezing mixture
+freezing point
+freezing process
+freight agent
+freight bill
+freight boat
+freight broker
+freight canvasser
+freight car
+freight clerk
+freight conductor
+freight density
+freight elevator
+freight engine
+freight forwarder
+freight handler
+freight house
+freight insurance
+freight locomotive
+freight-mile
+freight mileage
+freight note
+freight rate
+freight receipt
+freight room
+freight shed
+freight steamer
+freight tariff
+freight traffic
+freight train
+freight truck
+freight vessel
+freight wagon
+French-born
+French-bred
+French-built
+French-canadian
+French-educated
+French-fashion
+French-grown
+French heel
+French-heeled
+French-looking
+French-loving
+French-made
+French-manned
+French-minded
+French polish
+French school
+French-speaking
+frequency changer
+frequency curve
+frequency distribution
+frequency histogram
+frequency indicator
+frequency meter
+frequency-modulated
+frequency modulation
+frequency multiplier
+frequency polygon
+frequency relay
+frequency width
+fresh air
+fresh-baked
+fresh-boiled
+fresh-caught
+fresh-cleaned
+fresh-coined
+fresh-colored
+fresh-complexioned
+fresh-cooked
+fresh-cropped
+fresh-cut
+fresh-drawn
+fresh-faced
+fresh-fallen
+fresh-killed
+fresh-laid
+fresh-leaved
+fresh-looking
+fresh-made
+freshman week
+fresh-painted
+fresh-picked
+fresh-slaughtered
+fresh-washed
+fresh-water
+fresh-watered
+fresno scraper
+fret saw
+fret-sawing
+Friar minor
+Friar preacher
+friar skate
+Friars minor
+Friars preachers
+friction ball
+friction band
+friction belt
+friction block
+friction board
+friction brake
+friction breccia
+friction clamp
+friction clutch
+friction composition
+friction cone
+friction disk
+friction drill
+friction drive
+friction factor
+friction fremitus
+friction fuse
+friction gear
+friction gearing
+friction glazing
+friction-head
+friction horsepower
+friction machine
+friction match
+friction powder
+friction primer
+friction pulley
+friction ring
+friction roller
+friction rub
+friction saw
+friction slip
+friction socket
+friction sound
+friction tape
+friction test
+friction-tight
+friction top
+friction tube
+friction washer
+friction wheel
+frieze coat
+frieze-coated
+frieze rail
+frigate bird
+frigate-built
+frigate mackerel
+frigate pelican
+fright disease
+frill-bark
+frill-barking
+frill-like
+frill shark
+fringe bush
+fringe cup
+fringed brome
+fringe moss
+fringe tree
+fringe-tree bark
+frit fly
+frith-guild
+frivolity-proof
+frizzle disease
+frizzle fowl
+frock coat
+frog-belly
+frogbit family
+frog boot
+frog cheese
+frog clock
+frog crab
+frog-eyed
+frog fly
+frog grass
+frog hair
+frog lily
+frog-march
+frog number
+frog pad
+frog plant
+frog shell
+frog spawn
+frog spit
+front bench
+front-connected
+front-fanged
+front-focus
+front-focused
+front-foot
+front-page
+front-ranker
+front-wheel
+frost-beaded
+frost bearer
+frost-blite
+frost blow
+frost-bound
+frost-burnt
+frost-chequered
+frost-concocted
+frost-congealed
+frost-crack
+frost-fettered
+frost-firmed
+frost-free
+frost grape
+frost gray
+frost-hardy
+frost-hoar
+frost insurance
+frost-kibed
+frost lamp
+frost-nipped
+frost plant
+frost-pure
+frost-rent
+frost-ridge
+frost ring
+frost-riven
+frost signal
+frost smoke
+frost snipe
+frost-tempered
+frost valve
+frostweed aster
+frosty-face
+frosty-faced
+frosty green
+frosty-mannered
+frosty mildew
+frosty-natured
+frosty-spirited
+frosty-whiskered
+froth-becurled
+froth-born
+froth-clad
+froth-faced
+froth fly
+froth-foamy
+froth hopper
+froth insect
+froth spit
+froth worm
+frowzy-headed
+fruit acid
+fruit bark beetle
+fruit barrel
+fruit basket
+fruit bat
+fruit bearing
+fruit blight
+fruit blossom
+fruit body
+fruit bowl
+fruit-bringing
+fruit bud
+fruit bug
+fruit bush
+fruit buyer
+fruit can
+fruit-candying
+fruit cane
+fruit canner
+fruit canning
+fruit chafer
+fruit cocktail
+fruit crate
+fruit crow
+fruit culture
+fruit cup
+fruit dealer
+fruit dish
+fruit dot
+fruit-drying
+fruit eater
+fruit-eating
+fruit envelope
+fruit ether
+fruit-evaporating
+fruit evaporator
+fruit farm
+fruit farmer
+fruit farming
+fruit flavor
+fruit fly
+fruit garden
+fruit grader
+fruit jar
+fruit jelly
+fruit juice
+fruit knife
+fruit loft
+fruit package
+fruit packer
+fruit packing
+fruit-paring
+fruit peddler
+fruit peel
+fruit picker
+fruit picking
+fruit pigeon
+fruit pit
+fruit pitter
+fruit preservative
+fruit preserver
+fruit-producing
+fruit pudding
+fruit raiser
+fruit raising
+fruit rot
+fruit salad
+fruit seller
+fruit set
+fruit shipper
+fruit shop
+fruit show
+fruit sirup
+fruit slicer
+fruit sorter
+fruit soup
+fruit spot
+fruit sprayer
+fruit spur
+fruit stall
+fruit stand
+fruit strainer
+fruit sugar
+fruit tart
+fruit tree
+fruit-tree bark beetle
+fruit-tree leaf roller
+fruit vendor
+fruit vinegar
+fruit wood
+frying pan
+F-shaped
+F-sharp
+F-sharp major
+F-sharp minor
+F star
+F-type star
+fuchsia-flowered
+fuchsia tree
+fuddle-brained
+fuddy-duddy
+fudge edge
+fudge wheel
+fuel dope
+fuel engineer
+fuel engineering
+fuel filter
+fuel oil
+fugae warrant
+fugie warrant
+Fulah-zandeh
+full-accomplished
+full-acorned
+full-adjusted
+full-annealing
+full-armed
+full-assembled
+full-assured
+full-attended
+full-banked
+full-beaming
+full-bearded
+full-bearing
+full-bellied
+full blood
+full-blooded
+full-bloodedness
+full-bloomed
+full-blossomed
+full-blown
+full-bodied
+full-boled
+full-bore
+full-born
+full-bosomed
+full bottom
+full-bottomed
+full-bound
+full-bowed
+full-brained
+full-breasted
+full-brimmed
+full-buckramed
+full-built
+full-busted
+full-buttocked
+full-cell
+full-celled
+full-centered
+full-charge
+full-charged
+full-cheeked
+full-chested
+full-chilled
+full-clustered
+full-crammed
+full-cream
+full-crew
+full-crown
+full-depth
+full-diamond
+full-diesel
+full-digested
+full-distended
+full-draught
+full-drawn
+full-dress
+full-dressed
+full-dug
+full-eared
+full-exerted
+full-extended
+full-eyed
+full-faced
+full-fashioned
+full-fatted
+full-feathered
+full-fed
+full-feed
+full-feeding
+full-felled
+full-finished
+full-fired
+full-flanked
+full-flavored
+full-fledged
+full-fleshed
+full-floating
+full-flocked
+full-flowering
+full-flowing
+full-foliaged
+full-form
+full-formed
+full-fortuned
+full-fraught
+full-freight
+full-freighted
+full-fronted
+full-fruited
+full-glowing
+full-gorged
+full-grown
+full-haired
+full-hand
+full-handed
+full-happinessed
+full-hard
+full-haunched
+full-headed
+full-hipped
+full-hot
+fulling mill
+fulling stock
+full-jeweled
+full-jointed
+full-known
+full-laden
+full-leather
+full-leaved
+full-length
+full-leveled
+full-licensed
+full-limbed
+full-lined
+full-lipped
+full-load
+full-made
+full-manned
+full-measured
+full-minded
+full-moon
+full name
+full-natured
+full-necked
+full-nerved
+full-opening
+full-orbed
+full-page
+full-paid
+full-panoplied
+full-paunched
+full-personed
+full-pitch
+full-pitch winding
+full-plumed
+full-power
+full-powered
+full-proportioned
+full-pulsing
+full-rayed
+full-resounding
+full-rigged
+full-rigger
+full-ripe
+full-ripened
+full-roed
+full-run
+full sail
+full-sailed
+full-scale
+full-sensed
+full-sharer
+full-shouldered
+full-shroud
+full-size
+full-sized
+full-skirted
+full-souled
+full-speed
+full-sphered
+full-spread
+full-stage
+full-statured
+full-stomached
+full-strained
+full-streamed
+full-strength
+full-stuffed
+full-summed
+full-swelling
+full-throated
+full-tide
+full-timed
+full-toned
+full-top
+full-trimmed
+full-tuned
+full-tushed
+full-uddered
+full-value
+full-voiced
+full-volumed
+full-wave
+full-wave rectification
+full-wave rectifier
+full-way
+full-weight
+full-weighted
+full-whiskered
+full-winged
+full-witted
+fume chamber
+fumed oak
+fumitory family
+funding system
+funeral home
+funeral march
+funeral pile
+fun-filled
+fungiform papillae
+Fungi imperfecti
+fungus body
+fungus-covered
+fungus-digesting
+fungus gall
+fungus gnat
+fungus-proof
+fungus stone
+fungus tinder
+funk hole
+fun-loving
+funnel chest
+funnel cloud
+funnel-fashioned
+funnel-formed
+funnel maker
+funnel-necked
+funnel setter
+funnel-shaped
+funnel tube
+funnel twister
+funny bone
+fun-seeking
+fur bearer
+fur-bearing
+fur beater
+fur blocker
+fur blower
+fur breeder
+fur brusher
+fur buyer
+fur-capped
+fur-clad
+fur-coated
+fur-collared
+fur-cuffed
+fur farm
+fur farmer
+fur farming
+Furfooz-grenelle
+fur-gowned
+furious-faced
+fur-lined
+fur lining
+furnace bricklayer
+furnace builder
+furnace cadmium
+furnace calciner
+furnace charger
+furnace charging
+furnace engineer
+furnace erector
+furnace feeder
+furnace fireman
+furnace heating
+furnace keeper
+furnace liner
+furnace lining
+furnace maker
+furnace mounter
+furnace oil
+furnace regulator
+furnace repairer
+furnace stoker
+furnace tender
+furnace tenter
+furnace watcher
+furniture broker
+furniture carving
+furniture enameler
+furniture finisher
+furniture fitter
+furniture japanner
+furniture maker
+furniture mover
+furniture packer
+furniture painter
+furniture polisher
+furniture porter
+furniture repairer
+furniture turning
+furniture van
+furr-ahin
+furring brick
+furring strip
+furrow-cloven
+furrow drain
+furrow drainage
+furrow draining
+furrow-faced
+furrow-fronted
+furrow irrigation
+furrow pan
+furrow weed
+fur seal
+fur tanner
+fur-touched
+fur trader
+fur trapper
+fur trapping
+fur-trimmed
+fur trimming
+fury-driven
+fury-haunted
+fury-moving
+furze-clad
+furze lark
+furze wren
+fusarium wilt
+fusco-ferruginous
+fusco-piceous
+fusco-testaceous
+fuse block
+fuse gauge
+fusel oil
+fusing disk
+fusion bomb
+fusion point
+fusion welding
+fuss-budget
+fuss-budgety
+fusty-framed
+fusty-looking
+fusty-rusty
+futtock band
+futtock plate
+futtock shroud
+futtock staff
+futtock stave
+future-minded
+future perfect
+future price
+futurity race
+futurity stakes
+fu-yang
+fuzzy-guzzy
+fuzzy-haired
+fuzzy-headed
+fuzzy-legged
+Fuzzy-wuzzy
+gabbro-porphyrite
+gable-bottom
+gable-bottom car
+gable end
+gable-ended
+gable roof
+gable-roofed
+gable-shaped
+gable wall
+gable-walled
+gable window
+gable-windowed
+gab pin
+gaff sail
+gaff-topsail
+gaff-topsail catfish
+gaff-topsail pompano
+gag-check
+gage green
+gag law
+gag press
+gag rein
+gag-reined
+gag resolution
+gag rule
+gag runner
+gaining head
+gaining machine
+gaining twist
+gain sharing
+gaiter-in
+gaiter tree
+galanga root
+galanty show
+gale day
+gale-driven
+galena glaze
+galimeta wood
+galla ox
+gall bag
+gall bladder
+gall cyst
+gall duct
+gallery forest
+gallery gods
+gallery organ
+gallery road
+galleta grass
+galley-fashion
+galley foist
+galley halfpenny
+galley press
+galley proof
+galley punt
+galley slave
+galley slice
+galley slug
+galley-west
+gall fig
+gall gnat
+gall-less
+gall-like
+gall midge
+gall mite
+gall oak
+Gallo-briton
+Gallo-grecian
+galloper gun
+gallop rhythm
+Gallo-roman
+gallow pulley
+gallows balk
+gallows bird
+gallows bitts
+gallows frame
+gallows-grass
+gallows tree
+gall passage
+gall pipe
+gall sickness
+gall sickness bush
+gall wasp
+gall wind
+gama grass
+gamba bass
+gamba goose
+gamben bass
+gambling debt
+gambling device
+gambling hell
+gambling house
+gambling table
+gamboge yellow
+gambo goose
+gambo hemp
+gambrel roof
+gambrel-roofed
+game act
+game beast
+game bird
+game cart
+game debt
+game-destroying
+game dog
+game farmer
+game fish
+game fowl
+game hawk
+game hunter
+game hunting
+game pie
+game preserve
+game refuge
+game reserve
+game room
+games all
+game sanctuary
+game season
+game shooting
+games master
+games mistress
+game warden
+gaming contract
+gaming house
+gaming-proof
+gaming room
+gaming table
+gamma acid
+gamma function
+gamma globulin
+gamma infinity
+gamma iron
+gamma moth
+gamma ray
+gammon-faced
+gammon iron
+gammon-visaged
+Gamp mrs sairey
+gander month
+gander pull
+Gandharva rite
+gandy dancer
+gang cask
+gang center
+gang cultivator
+gang edger
+Ganges dolphin
+gang hook
+ganging plea
+ganglion cell
+ganglion crest
+gang mill
+gang plow
+gang press
+gang punch
+gang saw
+gang war
+gang warfare
+gangway ladder
+gang week
+gannet paper
+gantry crane
+gaol delivery
+gape-gaze
+gap-frame press
+gap lathe
+gap-toothed
+garab tree
+garbage barrel
+garbage burner
+garbage can
+garbage cart
+garbage collector
+garbage conveyer
+garbage destructor
+garbage digestor
+garbage drier
+garbage grease
+garbage incinerator
+garbage man
+garbage pail
+garbage plant
+garbage reducer
+garbage tank
+garbage tankage
+garbage truck
+garbage wagon
+garboard strake
+garbutt rod
+garb willow
+garde-collet
+garden balm
+garden balsam
+garden bond
+garden bugloss
+garden burnet
+garden buttercup
+garden camomile
+garden catchfly
+garden celandine
+garden chafer
+garden cicely
+garden columbine
+garden cress
+garden culture
+garden cypress
+garden egg
+gardener bird
+garden flea
+garden flea hopper
+garden fly honeysuckle
+garden garth
+garden-gate
+garden geranium
+garden ginger
+garden glass
+garden heliotrope
+garden hoe
+garden huckleberry
+garden hyssop
+garden lemon
+garden mint
+garden mold
+garden nasturtium
+garden nightshade
+garden orach
+garden orpine
+garden party
+garden patience
+garden pepper
+garden pepper cress
+garden peppergrass
+garden persicary
+garden pink
+garden plague
+garden plow
+garden poppy
+garden portulaca
+garden purslane
+garden rocket
+garden sage
+garden sauce
+garden seat
+garden-seated
+garden snail
+garden sorrel
+garden speedwell
+garden spider
+garden spurge
+Garden state
+garden syringa
+garden tickseed
+garden truck
+garden valerian
+garden verbena
+garden violet
+gardenwall bond
+garden warbler
+garden webworm
+garden white
+garde-reins
+garget plant
+garget root
+garland chrysanthemum
+garland crab
+garland flower
+Garland sunday
+garlic germander
+garlic mustard
+garlic oil
+garlic pear
+garlic sage
+garlic shrub
+Garlic sunday
+garlic tree
+garment presser
+garnet-breasted
+garnet brown
+garnet-colored
+garnet hinge
+garnet lac
+garnet paper
+garnet-red
+garnishee order
+gar pike
+garrison flag
+garrison prisoner
+garrison school
+garrison state
+garter-blue
+garter snake
+garter stitch
+garth cress
+gas-absorbing
+gas attack
+gas bacillus
+gas battery
+gas bender
+gas black
+gas buoy
+gas burner
+gas-burning
+gas carbon
+gas cell
+gas-charged
+gas-check
+gas coal
+gas coke
+gas company
+gas concrete
+gas constant
+gas cutting
+gas-delivering
+gas detector
+gas-discharge lamp
+gas disease
+gas-driven
+gas-electric
+gas electrode
+gas engine
+gas engineer
+gas engineering
+gas explosion
+gas-filled
+gas filler
+gas-fired
+gas fitter
+gas fitting
+gas fixture
+gas gangrene
+gas generator
+gas grenade
+gas harmonicon
+gas-heated
+gas helmet
+gash-gabbit
+gash vein
+gas jet
+gas-laden
+gas lamp
+gas-lampy
+gaslight paper
+gas lime
+gas liquor
+gas log
+gas machine
+gas main
+gas mantle
+gas mask
+gas meter
+gas motor
+gas oil
+gasoline-electric
+gasoline engine
+gasoline gas
+gasoline locomotive
+gasoline shovel
+gasoline truck
+gas-operated
+gas oven
+gas-oxygen
+Gaspe series
+gas phlegmon
+gas pipe
+gas plant
+gas plate
+gas polarization
+gas producer
+gas-producing
+gas refrigeration
+gas-resisting
+gas-retort
+gas ring
+gas sand
+gas separator
+gas shaft
+gas-shaft hood
+gas shell
+gas spectrum
+gas spurts
+gas station
+gas tap
+gas tar
+gas-testing
+gas thermometer
+gas thread
+gastraea theory
+gas trap
+gastro-omental
+gas tube
+gas turbine
+gas vent
+gas warfare
+gas washer
+gas water
+gas welder
+gas welding
+gas well
+gas zone
+Gata disease
+gate bill
+gate channel
+gate-leg
+gate-legged
+gate-leg table
+gate money
+gate net
+gate-netting
+gate pin
+gate road
+gate shears
+gate table
+gate tower
+gate valve
+gate wheel
+gathering coal
+gathering hoop
+gathering iron
+gathering locomotive
+gathering machine
+gathering pallet
+gathering peat
+gathering reel
+gathering ring
+gathering rod
+gathering shot
+gathering table
+gat-toothed
+gaude lake
+Gaudete sunday
+Gaudette sanday
+gaufre iron
+gauge block
+gauge cock
+gauge concussion
+gauge die
+gauge door
+gauge glass
+gauge increment
+gauge knife
+gauge lath
+gauge lathe
+gauge line
+gauge notch
+gauge pin
+gauge plate
+gauge point
+gauge saw
+gauge stick
+gauge stuff
+gauge tolerance
+gauge weir
+gauge wheel
+gauging plaster
+gaultheria oil
+gaunt-bellied
+gauze ring
+gauze tree
+gauze-winged
+gavel bread
+gavel corn
+gavel earth
+gavel swine
+gay-beseen
+gay-chirping
+gay-colored
+gay-feather
+gay-flowered
+gay-glancing
+gay-green
+gay-hued
+gay-humored
+gay-looking
+Gay-lussac
+gay-motleyed
+gay-painted
+Gay-pay-oo
+gay-seeming
+gay-smiling
+gay-spent
+gay-spotted
+gay-tailed
+gay-throned
+gazelle brown
+gazelle-eyed
+gazelle hound
+gazing ball
+G clef
+gear brusher
+gear case
+gear cutter
+gear-cutting
+gear-driven
+geared-head lathe
+gear fitter
+gear forger
+gear hobber
+gearing chain
+gearless traction
+gear maker
+gear miller
+gear oiler
+gear-operated
+gear pump
+gear ratio
+gear roller
+gear shaper
+gear shifter
+gear wheel
+gear-wheel pump
+Gedda gum
+gee-gee
+gee-haw
+gee ho
+gee pole
+gee string
+gee-throw
+gee-up
+gee whillikins
+gee whizz
+gefullte fish
+geigen principal
+geiger tree
+geil fine
+gelatin-coated
+gelatin dynamite
+gelatin emulsion
+gelatin maker
+gelatin molder
+gelatino silver bromide
+gelatin process
+Gellert green
+gem-bearing
+gem-bedewed
+gem-bedizened
+gem-bespangled
+gem-bright
+gem cutter
+gem cutting
+gem-decked
+gem designer
+gemel hinge
+gemel ring
+gemel window
+gem engraver
+gem-faced
+gem fancier
+gem-fruit
+gem grinder
+gem-grinding
+gemma cup
+gem peg
+gem-set
+gem setter
+gem-spangled
+gem stick
+gem stone
+gendarme blue
+general-purpose
+general store
+generating station
+generating tone
+generator gas
+generator unit
+generous-hearted
+Geneva-cross
+Geneva-cross movement
+genitive absolute
+genoa jib
+gentian blue
+gentian family
+gentian root
+gentian violet
+gentile-falcon
+gentle-born
+gentle-bred
+gentle-browed
+gentle-eyed
+gentle-handed
+gentle-handedly
+gentle-handedness
+gentle-looking
+gentleman-adventurer
+gentleman-agent
+gentleman-beggar
+gentleman-cadet
+gentleman-commoner
+gentleman-covenanter
+gentleman-dependent
+gentleman-digger
+gentleman-farmer
+gentleman-jailer
+gentleman-jockey
+gentleman-lackey
+gentleman-lodger
+gentleman-murderer
+gentle-mannered
+gentle-manneredly
+gentle-manneredness
+gentleman-pensioner
+gentleman-porter
+gentleman-priest
+gentleman-ranker
+gentleman-recusant
+gentleman-rider
+gentleman-scholar
+gentleman-sewer
+gentleman-tradesman
+gentleman-usher
+gentleman-vagabond
+gentleman-volunteer
+gentleman-waiter
+gentle-minded
+gentle-mindedly
+gentle-mindedness
+gentle-natured
+gentle-naturedly
+gentle-naturedness
+gentle-spoken
+gentle-spokenly
+gentle-spokenness
+gentle-voiced
+gentle-voicedly
+gentle-voicedness
+geoid-spheroid
+geoid-spheroid balance
+Georgia bark
+geranium creeper
+geranium family
+geranium lake
+geranium oil
+geranium pink
+German-american
+German-built
+germander chickweed
+germander sage
+germander speedwell
+German-english
+German-french
+German-hungarian
+German-italian
+germanium oxide
+German-jewish
+German-made
+German-owned
+German-palatine
+German-speaking
+German-swiss
+germ breeder
+germ cell
+germ destroyer
+germ disease
+germ disk
+germ-forming
+germ gland
+germ layer
+germ nucleus
+germ pathology
+germ peg
+germ plasm
+germ plasma
+germ pore
+germ spot
+germ stock
+germ theory
+germ track
+germ tube
+gerund grinder
+gerund grindery
+gerund grinding
+gerund phrase
+Gestalt psychology
+Gestalt school
+ges-warp
+getah wax
+get-at-ability
+get-at-able
+get-at-ableness
+get-off
+get-together
+geyser basin
+geyser cone
+G-flat
+G-flat major
+gharry-wallah
+ghatti gum
+Ghedda wax
+ghost candle
+ghost crab
+ghost daemon
+ghost dance
+ghost-fearing
+ghost-filled
+ghost food
+ghost god
+ghost-haunted
+ghost hole
+ghost line
+ghost lodge
+ghost lore
+ghost moth
+ghost name
+ghost plant
+ghost-ridden
+ghost soul
+ghost story
+ghost town
+ghost word
+ghost world
+ghost writer
+giant bamboo
+giant cane
+giant fescue
+Giant hunter
+Giant killer
+giant reed
+giant rye grass
+gibber bird
+gibbet law
+gibbet tree
+gibby stick
+gib-cat
+gib fish
+gib-head
+gib-head key
+giblet-check
+giblet-checked
+giblet-cheek
+gib plate
+Gibson girl
+gibus hat
+giddy-brained
+giddy-drunk
+giddy-go-round
+giddy-headed
+giddy-paced
+giddy-pated
+giddy-witted
+gier-eagle
+gift balsam
+gift rope
+gift shop
+gift tax
+gig lamp
+gig machine
+gig mill
+gigot sleeve
+Gila apache
+gilding metal
+gilding wax
+gill-ale
+gill arch
+gill bailer
+gill basket
+gill-book
+gill box
+gill cavity
+gill chamber
+gill cleft
+gill comb
+gill cover
+gill-cup
+gill frame
+gill fungus
+gill helix
+Gillie callum
+gillie-wetfoot
+gillie-whitefoot
+gilling machine
+gilling thread
+gill-less
+gill-like
+gill net
+gill-netter
+gill plume
+gill rake
+gill raker
+gill rod
+gill-run
+gill scoop
+gill-shaped
+gill slit
+gilt-edge
+gilt-edged
+gilt-handled
+gilt-headed
+gilt-knobbed
+gilt-robed
+gimbal joint
+gimbal ring
+gimlet bit
+gimlet eye
+gimmer hog
+gimmer lamb
+gim peg
+gimp lapper
+gimp nail
+gin block
+gin fizz
+gingelly oil
+ginger ale
+ginger beer
+ginger-beery
+ginger bleacher
+gingerbread nut
+gingerbread palm
+gingerbread plum
+gingerbread tree
+ginger buyer
+ginger-color
+ginger-colored
+ginger extract
+ginger-faced
+ginger family
+ginger grass
+ginger-grass oil
+ginger-hackled
+ginger-haired
+ginger lily
+ginger oil
+ginger pine
+ginger plant
+ginger pop
+ginger quill
+ginger-red
+ginger root
+ginger spice
+ginger tea
+ginger wine
+gingili oil
+ginkgo nut
+gin mill
+ginny carriage
+gin pole
+gin race
+gin rickey
+gin ring
+gin rummy
+gin-run
+gin-saw
+gin-saw file
+ginseng family
+gin sling
+gin wagon
+gin wheel
+gin yard
+giraffe camel
+girandole clock
+girasol thorn
+girder bridge
+girder erector
+girder rail
+girder riveter
+girder stay
+girder tool
+girdle band
+girdle bone
+girdle sensation
+girdle wheel
+girl guide
+girl scout
+girl-shy
+girth web
+Gitchi manito
+giver-out
+give-up
+gizzard shad
+gizzard trout
+glacier bear
+glacier cataract
+glacier table
+glacier theory
+glacis plate
+glad-cheered
+glade lily
+glade mallow
+glad-flowing
+glad-handed
+glad-sad
+glad-surviving
+glance coal
+glance cobalt
+glance copper
+glance pitch
+glancing boom
+glans clitoridis
+glans penis
+glare-eyed
+glass blower
+glass blowing
+glass-bottomed
+glass-built
+glass burner
+glass cement
+glass-coated
+glass-colored
+glass-covered
+glass cutter
+glass cutting
+glass decorator
+glass-eater
+glassed-in
+glass-eyed
+glass-faced
+glass-fronted
+glass-glazed
+glass-green
+glass-hard
+glass-lined
+glass painting
+glass-paneled
+glass-paper
+glass pot
+glass snail
+glass snake
+glass soap
+glass-topped
+glaucous-winged
+glaze kiln
+glaze wheel
+glebe house
+glee club
+glee-eyed
+glib-gabbet
+glib-tongued
+glide consonant
+glide vowel
+gliding angle
+gliding boat
+gliding joint
+gliding machine
+glimmer gowk
+globe amaranth
+globe animalcule
+globe artichoke
+globe crowfoot
+globe daisy
+globe dollar
+globe hyacinth
+globe joint
+globe lightning
+globe lily
+globe mallow
+globe ranunculus
+globe-shaped
+globe sight
+globe thistle
+globe-trotter
+globe-trotting
+globe tulip
+globe valve
+globigerina ooze
+globo-cumulus
+globus hystericus
+gloomy-browed
+gloomy-faced
+glor-fat
+glory bower
+glory flower
+glory hole
+glory lily
+glory-of-the-snow
+glory pea
+glory tree
+glory vine
+gloss oil
+glossopalatine arch
+glossopalatine nerve
+glossy-black
+glossy-leaved
+glossy-white
+glost fire
+glost fireman
+glost oven
+glost placer
+Gloucester cheese
+glove contest
+glove grain
+glove money
+Glover tower
+glove silk
+glove silver
+glove sponge
+glove stitch
+glow beetle
+glow discharge
+glow lamp
+glow light
+glow lighting
+glow meter
+glow tube
+gluck-gluck
+glucose sirup
+glucose vinegar
+glue boiler
+glue bottle
+glue brush
+glue cell
+glued-up
+glue plant
+glue stock
+glue water
+gluten bread
+gluten feed
+gluten flour
+gluten meal
+glut herring
+glutton bird
+glyceria wax
+glycerin jelly
+glycerin lye
+glycerin soap
+glycerol nitrate
+glyceryl nitrate
+glyceryl trinitrate
+glycyrrhizae composita
+glyoxyl urea
+gnamma hole
+Gnaphalium green
+gnat hawk
+gneissoid-granite
+Gnesio-lutheran
+gnome owl
+gnothi seauton
+gnu goat
+go-about
+go-ahead
+goal crease
+goal judge
+goal kick
+goal line
+goal minder
+goal net
+goal post
+goal posts
+goal stick
+goal tender
+goal tending
+Goanese ipecac
+go-ashore
+go-as-you-please
+goat antelope
+goat-bearded
+goat chaffer
+goat-drunk
+goat-eyed
+goat fig
+goat-footed
+goat god
+goat grass
+goat hair
+goat-headed
+goat-hoofed
+goat-horned
+goat-keeping
+goat-kneed
+goat marjoram
+goat milker
+goat moth
+goat nut
+goat owl
+goat pepper
+goat rue
+goatsfoot convolvulus
+Goat star
+goat-toothed
+go-away bird
+go-back
+gobar numerals
+go-between
+goblet cell
+goblin fish
+goblin scarlet
+goblin shark
+go-by
+God-adoring
+God-begot
+God-begotten
+God-beloved
+God-bless
+God-built
+God-conscious
+God-consciousness
+God-created
+God-cursed
+God-descended
+God-empowered
+God-enlightened
+God-entrusted
+go-devil
+God-fearing
+God-forbidden
+God-forgetting
+God-forgotten
+God-given
+god-horse
+God-inspired
+God-loved
+God-loving
+godly-learned
+God-made
+God-man
+God-manhood
+God-ordained
+God-seeing
+God-sent
+God-sped
+God-taught
+God tree
+God-wrought
+goer-by
+go gauge
+go-getter
+go-getterism
+go-getting
+goggle-eye
+goggle-eyed
+goggle-nose
+Gohel rajput
+going barrel
+going-concern
+going-concern value
+going forth
+going fusee
+going light
+going out
+goings on
+going train
+going wheel
+goiter stick
+gold apple
+gold assayer
+gold-ball
+gold-banded
+gold bank
+gold bar
+gold basis
+gold-basket
+gold bass
+gold-bearing
+gold beetle
+gold beryl
+gold blocker
+gold blocking
+gold-bloom
+gold bond
+gold book
+gold-bound
+gold-braided
+gold-breasted
+gold brick
+gold-bright
+gold-broidered
+gold bronze
+gold brown
+gold-bullion standard
+gold carp
+gold-ceiled
+gold certificate
+gold-chain
+gold chloride
+gold-clasped
+gold clause
+gold-containing
+gold-crested
+gold-daubed
+gold-decked
+gold digger
+gold digging
+gold driver
+gold-dust tree
+gold-edged
+gold-embossed
+gold-embroidered
+golden bamboo
+golden-banded
+golden-bearded
+golden-breasted
+golden-brown
+golden-cheeked
+golden-chestnut
+golden-colored
+golden crest
+golden-crested
+golden crown
+golden-crowned
+golden-cup
+golden-cup oak
+golden-eared
+golden-eyed
+golden feather
+golden-feather yellow
+golden-fettered
+golden-fingered
+golden-footed
+golden-fruited
+golden-gleaming
+golden-glowing
+golden-green
+golden-haired
+golden-headed
+golden-hilted
+golden-hued
+golden-leaved
+golden-locked
+golden millet
+golden-mouthed
+golden oat
+golden rain
+golden-rain tree
+golden-rayed
+goldenrod tree
+golden-spotted
+golden-throned
+golden-tipped
+golden-tongued
+golden-tressed
+golden-winged
+gold-enwoven
+golden-yellow
+gold-exchange
+gold fever
+gold field
+gold-fields
+gold-filled
+gold-foil
+gold-framed
+gold-fringed
+gold-graved
+gold-green
+gold-haired
+gold-headed
+gold-hilted
+gold-inlaid
+gold lace
+gold-laced
+gold-laden
+gold-leaf
+gold-lit
+gold maker
+gold making
+gold melter
+gold mine
+gold miner
+gold mining
+gold monochloride
+gold-mounted
+gold pan
+gold plate
+gold-plated
+gold-plating
+gold-red
+gold refiner
+gold-ribbed
+gold-rimmed
+gold-robed
+gold-rolling
+gold-rush
+gold seeker
+gold-seeking
+goldsmith beetle
+gold solder
+gold spinner
+gold star
+gold-striped
+gold-strung
+gold-studded
+gold-testing
+gold trichloride
+gold warden
+gold washer
+gold washing
+gold-winged
+gold working
+gold-wrought
+gold-yellow
+golf bag
+golf ball
+golf green
+golf hose
+golf links
+golf red
+golf shoe
+goliath beetle
+goliath crane
+goliath frog
+goliath heron
+golo-shoe
+gombroon ware
+gom-paauw
+gomuti palm
+Goncourt laureate
+Goncourt prize
+gondang wax
+gondola car
+Gondwana land
+Gondwana system
+gone arrow
+gone-by
+gone feeling
+gong bell
+gong drum
+gong-gong
+Go-no-further
+good afternoon
+good-by
+good-bye-summer
+good cheap
+Good conduct medal
+good fellow
+good-fellowhood
+good-fellowish
+good-fellowship
+good-for
+good-for-naught
+good-for-nothing
+good-for-nothingness
+Good friday
+Good-friday grass
+good-humored
+good-humoredly
+good-humoredness
+Good-king-henry
+good-looker
+good-looking
+good-lookingness
+good morning
+good-morning-spring
+good nature
+good-natured
+good-naturedly
+good-naturedness
+good-plucked
+goods dollar
+goods engine
+goods train
+goods wagon
+goods yard
+good temper
+good-tempered
+good-temperedly
+good-temperedness
+good will
+goody-good
+goody-goody
+goody-goodyism
+goody-goodyness
+go-off
+googly-eyed
+goose barnacle
+goose-beak whale
+gooseberry-eyed
+gooseberry family
+gooseberry fool
+gooseberry fruitworm
+gooseberry gourd
+gooseberry mildew
+gooseberry moth
+gooseberry picker
+gooseberry pie
+gooseberry rust
+gooseberry sawfly
+gooseberry spanworm
+gooseberry stone
+gooseberry tomato
+gooseberry tree
+goose-cackle
+goose call
+goose chase
+goose club
+goose corn
+goose egg
+goose file
+goose flesh
+goose-fleshy
+goose-footed
+goosefoot family
+goosefoot maple
+goose grass
+goose gray
+goose grease
+goose gull
+goose-headed
+gooseneck slicker
+goose pen
+goose-pimple
+goose-pimply
+goose plant
+goose plum
+goose quill
+goose rump
+goose-shaped
+goose skin
+goose step
+goose-stepper
+goose tansy
+goose teal
+goose tree
+goose walk
+gopher apple
+gopher drift
+gopher frog
+gopher hole
+gopher-hole blast
+gopher plant
+gopher plum
+gopher snake
+gopher tortoise
+go-quick
+gora log
+Gordian knot
+gordura grass
+gore strake
+gorge circle
+gorge hook
+gorgon-headed
+Gorgon-headed
+gorgon plant
+Gorgonzola hall
+Gorilla land
+goring cloth
+gorse duck
+gorse hatcher
+gosh-awful
+Goshen hardhack
+gosling color
+gosling grass
+gosling green
+gospel oath
+Gospel side
+gospel-true
+gospel truth
+gossamer fern
+gossamer spider
+gouden reaal
+gouge carving
+gouge shell
+gourd family
+gourdhead buffalo
+gourd melon
+gourdseed buffalo
+gourd-shaped
+gourd towel
+gourd tree
+gout fly
+gout ivy
+gout tree
+governess-ship
+government bar
+government depository
+government-general
+government man
+government note
+government-owned
+government paper
+governor-elect
+governor general
+governor-generalship
+gowk storm
+gown boy
+gown-fashion
+grab-all
+grab bag
+grabbot gin
+grab bucket
+grab dredge
+grab link
+grab machine
+grab rope
+grab skipper
+grace cup
+grace drink
+grace hoop
+grace note
+grade bar
+grade crossing
+grade line
+grade peg
+grade stake
+gradient post
+graduate school
+graduating engine
+graft hybrid
+graft-hybridism
+graft-hybridization
+grafting wax
+graham flour
+grain alcohol
+grain aphid
+grain beetle
+grain bill
+grain binder
+grain borer
+grain broker
+grain-burnt
+grain carrier
+grain-carrying
+grain cleaner
+grain-cleaning
+grain cradle
+grain crusher
+grain-cut
+grain drill
+grain-eating
+grain elevator
+grain farm
+grain farmer
+grain farming
+grain-fed
+grain founder
+grain glove
+grain gold
+grain grower
+grain-growing
+grain harvester
+grain huller
+grain lac
+grain-laden
+grain leather
+grain louse
+grain mark
+grain mash
+grain merchant
+grain miller
+grain moth
+grain musk
+grain oil
+grain pan
+grain rust
+grain sack
+grain sacker
+grain sampler
+grain screen
+grain screener
+grain shipper
+grain side
+grain smut
+grain soap
+grain sorghum
+grain thresher
+grain tin
+grain traveler
+grain-wagon hitch
+grain weevil
+grain weigher
+gram atom
+gram calorie
+gram-centimeter
+gram degree
+gram equivalent
+Gram-fast
+gram ion
+grammar college
+grammar school
+grammatico-allegorical
+gram-meter
+gram-molecular
+gram molecule
+gram-negative
+Gram-negative
+gram-positive
+Gram-positive
+grana cheese
+granadilla tree
+granary weevil
+Gran chimu
+grand climacteric
+grand-ducal
+grandfather chair
+grandfather clause
+grandfather clock
+grandfather graybeard
+grandfather longlegs
+Grand guignol
+Grand-guignolism
+grand juryman
+grandmother clock
+grand slam
+grandstand play
+granger laws
+granite blue
+Granite city
+granite-dispersing
+granite-gneiss
+granite gray
+granite-gruss
+granite paper
+granite porphyry
+granite quarrier
+granite-sprinkled
+granny knot
+granny-thread
+grant-in-aid
+granule cell
+granule gravel
+grape-bearing
+grape-berry moth
+grape cane borer
+grape cherry
+grape curculio
+grape cure
+grape disease
+grape-eater
+grape family
+grape fern
+grapefruit spoon
+grape green
+grape grower
+grape growing
+grape hoe
+grape hopper
+grape-hued
+grape hyacinth
+grape juice
+grape leaf folder
+grape leaf hopper
+grape-leaved
+grape louse
+grape mildew
+grape moth
+grape pear
+grape phylloxera
+grape picker
+grape picking
+grape rootworm
+grape rot
+grape rust
+grape scale
+grape seed
+grape-seed oil
+grape-shaped
+grape-sized
+grape sugar
+grape tomato
+grape tree
+grapevine fidia
+grapevine flea beetle
+grapevine leaf hopper
+grapevine phylloxera
+grapevine telegraph
+grapevine thrips
+grape weevil
+grape worm
+graphic-texture
+graph paper
+grapnel plant
+grappier cement
+grapple bucket
+grapple dredge
+grapple fork
+grapple iron
+grapple plant
+grapple shot
+grappling iron
+grass bass
+grass-blade
+grass bur
+grass-carpeted
+grass cattle
+grass character
+grass-clad
+grass cloth
+grass-cloth plant
+grass cold
+grass comber
+grass-covered
+grass-cushioned
+grass drake
+grass earth
+grass-embroidered
+grass family
+grass-fed
+grass fern
+grass finch
+grass frog
+grass green
+grass-growing
+grass-grown
+grass guard
+grass gum
+grass hand
+grass-hook
+grasshopper gauge
+grasshopper lark
+grasshopper lobster
+grasshopper mouse
+grasshopper sparrow
+grasshopper warbler
+grass ill
+grass-killing
+grass lamb
+grassland buttercup
+grassland daisy
+grass lawn
+grass-leaved
+grass lily
+grass linen
+grass mildew
+grass moor
+grass moth
+grass-mowing
+grass owl
+grass parakeet
+grass pea
+grass pickerel
+grass pink
+grass plover
+grass poly
+grass pondweed
+grass porgy
+grass rockfish
+grass-roofed
+grass sandwort
+grass savanna
+grass snake
+grass snipe
+grass sorghum
+grass spider
+grass sponge
+grass staggers
+grass steppe
+grass swine
+grass table
+grass tetany
+grass tree
+grass-tree gum
+grass vetch
+grass warbler
+grass webworm
+grass widow
+grass widower
+grass-woven
+grass wrack
+grass-wren
+grassy-green
+grassy-leaved
+grate coal
+grate room
+grate surface
+Gratia dei
+grave accent
+grave-born
+grave-bound
+grave-browed
+grave-colored
+grave-digging
+grave-faced
+grave harmonic
+gravel-bind
+gravel-blind
+gravel chickweed
+gravel-grass
+grave-looking
+gravel plant
+gravel shooter
+gravel train
+grave marker
+grave mixture
+graven image
+grave plant
+grave-riven
+grave robber
+grave robbing
+gravestone cutter
+grave-toned
+grave-visaged
+grave wax
+graveyard shift
+graveyard watch
+graveyard weed
+graving dock
+graving piece
+graving tool
+gravitation battery
+gravitation constant
+gravity battery
+gravity cell
+gravity-circulation
+gravity conveyer
+gravity dam
+gravity escapement
+gravity-fed
+gravity feed
+gravity pendulum
+gravity plane
+gravity railroad
+gravity stamp
+gravity ventilation
+gravity wind
+gravy boat
+gravy eye
+grayback beetle
+grayback herring
+gray-barked
+gray-bearded
+graybeard tree
+gray-bellied
+gray-black
+gray-blue
+gray-bordered
+gray-boughed
+gray-breasted
+gray-brindled
+gray-brown
+gray-cheeked
+gray-cheeked thrush
+gray-clad
+gray-colored
+gray-crowned
+gray-eyed
+gray-faced
+gray-gowned
+gray-green
+gray-grown
+gray-haired
+gray-headed
+gray-headed woodpecker
+gray-hooded
+gray-leaf
+gray-leaf pine
+gray-leaved
+gray-lit
+gray-mantled
+gray-moldering
+gray-mustached
+gray-necked
+Grayson lily
+gray-speckled
+gray-tailed
+gray-tailed cardinal
+gray-tinted
+gray-toned
+gray-twigged
+gray-veined
+gray-white
+gray-winged
+grease bucket
+grease extractor
+grease gun
+grease-heels
+grease joint
+grease mold
+grease moth
+grease-nut
+grease paint
+grease pit
+grease ring
+grease trap
+grease wool
+greasy-headed
+great-armed
+great-aunt
+great-bellied
+great-boned
+great bunch grass
+great circle
+great-circle chart
+great-circle sailing
+great-circle track
+great-crested
+great-eared
+great-eyed
+great foot
+great-footed
+great-footed hawk
+great-grandchild
+great-grand daughter
+great-grandfather
+great-grandmother
+great-grandson
+great-grown
+great-headed
+great-hipped
+great-leaved
+great-lipped
+great-minded
+great-mindedly
+great-mindedness
+great-nephew
+great-niece
+great-nosed
+great reed
+great-sized
+great-souled
+great-spirited
+great-stemmed
+Great sunday
+great-tailed
+great-tailed grackle
+great-uncle
+great-witted
+grebe cloth
+Greco-american
+Greco-asiatic
+Greco-buddhist
+Greco-bulgarian
+Greco-cretan
+Greco-egyptian
+Greco-hispanic
+Greco-iberian
+Greco-italic
+Greco-latin
+Greco-macedonian
+Greco-mohammedan
+Greco-oriental
+Greco-persian
+Greco-phoenician
+Greco-phrygian
+Greco-punic
+Greco-roman
+Greco-sicilian
+Greco-trojan
+Greco-turkish
+Greek cross
+Greek-cross plan
+Greek-letter fraternity
+Greek-letter society
+green-backed
+green-backed goldfinch
+green-back herring
+Greenback-labor party
+Greenback party
+green-back trout
+green-banded
+green-barked
+green belt
+green-black
+green-blind
+green-blue
+green-bodied
+green-boled
+green-bordered
+green-bottle fly
+green-boughed
+green-breasted
+green-breasted pheasant
+green-clad
+Green cloth
+green-crested
+green-cross gas
+green-cross shell
+green-curtained
+green-decked
+green-ear disease
+green-edged
+green-embroidered
+green-eyed
+green-faced
+green-feathered
+green-flowered
+green foxtail
+green-fringed
+green-garbed
+green-gilled
+green-glazed
+green-gold
+green grass
+green-gray
+green-grown
+green-haired
+green-headed
+green-headed widgeon
+greenhouse stone cricket
+greenhouse thrips
+green-hued
+greening weed
+greenish-blue
+greenish-flowered
+greenish-yellow
+green-leaved
+green-legged
+green-mantled
+green pigeon grass
+green-recessed
+green-ribbed
+green rot
+green-rotted
+green salt
+green-salted
+green-seeded
+green-shaving
+green-sheathed
+green-shining
+green-skinned
+green-stained
+greenstick fracture
+green-striped
+green-suited
+green-tail
+green-tailed
+green-tail fly
+green-throated
+green-tinted
+green-tipped
+green-tip spray
+green-twined
+green valley-grass
+green-veined
+Greenwich civil time
+Greenwich stars
+Greenwich time
+Greenwich village
+green-winged
+green-winged teal
+green woodpecker
+green-yellow
+grenadine pink
+grenadine red
+Grenet battery
+grenz ray
+Gretna green
+Gretna green marriage
+grey-cheeked
+grid battery
+grid bias
+grid circuit
+grid condenser
+grid current
+griddle valve
+grid-glow tube
+gridiron drainage
+gridiron pendulum
+gridiron-tailed lizard
+gridiron valve
+grid leak
+grid line
+grid modulation
+grid voltage
+grief-bowed
+grief-distraught
+grief dulled
+grief-exhausted
+grief-inspired
+grief oppressed
+grief-scored
+grief-shot
+grief-stricken
+grief-worn
+grievance committee
+griffin-beaked
+griffin-guarded
+griffin-winged
+griffon vulture
+grigri man
+Grimaldi race
+grim-cheeked
+grim-eyed
+grim-faced
+grim-featured
+grim-frowning
+grim-grinning
+grim-looking
+grim-set
+grim-visaged
+grimy-handed
+grindery warehouse
+grinding mill
+grinding organ
+grinding stone
+grind whale
+grip block
+gripe water
+gripple-handed
+grip sheave
+grip wheel
+gris-de-lin
+grit cell
+grizzly bear
+grizzly-bear cactus
+groaning cake
+groaning chair
+grocery store
+grog blossom
+groin point
+groin rib
+groin vault
+grommet nut
+groove-billed
+groove board
+grooving plane
+grooving saw
+Gros michel
+gross-bodied
+gross-brained
+gross-featured
+gross-fed
+gross-headed
+gross-jawed
+gross-lived
+gross-mannered
+gross-minded
+gross-money
+gross-money pool
+gross-natured
+gross-pated
+gross-witted
+gros tournois
+Gros ventre
+grotto blue
+ground almond
+ground angling
+ground annual
+ground annualer
+ground ash
+ground bait
+ground bass
+ground beam
+ground beetle
+ground birch
+ground box
+ground bridge
+ground bundle
+ground burnut
+ground cedar
+ground centaury
+ground chain
+ground cherry
+ground chestnut
+ground circuit
+ground cistus
+ground clamp
+ground coat
+ground cock
+ground cover
+ground crew
+ground cricket
+ground cuckoo
+ground current
+ground cypress
+ground detector
+ground dove
+ground-down
+ground elder
+ground-fast
+ground fern
+ground finch
+ground fir
+ground fire
+ground flax
+ground flea
+ground floor
+ground fog
+ground form
+ground game
+ground gas
+ground glass
+ground goldenrod
+ground goldflower
+ground grue
+ground hemlock
+ground hog
+ground-hog day
+ground holly
+ground honeysuckle
+ground ice
+ground itch
+ground ivory flower
+ground ivy
+ground jasmine
+ground joist
+ground juniper
+ground lag
+ground landlord
+ground lark
+ground laurel
+ground lead
+ground lease
+ground lemon
+ground level
+ground lily
+ground line
+ground liverwort
+ground lizard
+ground log
+ground loop
+ground mahogany
+ground mail
+ground mallow
+ground maple
+ground mold
+ground moss
+ground net
+ground noise
+ground note
+groundnut oil
+ground oak
+ground owl
+ground parakeet
+ground parrot
+ground pea
+ground pearl
+ground pig
+ground pigeon
+ground pike
+ground pine
+ground pink
+ground pistachio
+ground plan
+ground plane
+ground plate
+ground plum
+ground puppy
+ground raspberry
+ground rat
+ground rattan
+ground rattler
+ground rent
+ground rent insurance
+ground robin
+ground roller
+ground rope
+ground rule
+ground saligot
+ground school
+ground sea
+ground seal
+groundsel bush
+groundsel tree
+ground shark
+ground shield
+ground skidder
+ground sloth
+ground sluice
+ground-sluicer
+ground snake
+ground sparrow
+ground speed
+ground squirrel
+ground-squirrel pea
+ground staff
+ground starling
+ground state
+ground strake
+ground stroke
+ground substance
+ground sweet
+ground swell
+ground table
+ground tackle
+ground thistle
+ground thrush
+ground tier
+ground timbers
+ground tissue
+ground tit
+ground tone
+ground tow
+ground track
+ground vine
+ground warbler
+ground water
+ground-water level
+ground wave
+ground ways
+ground willow
+ground wire
+ground worm
+ground wren
+ground yew
+group agglutination
+group ascendancy
+group breaker
+group-connect
+group-conscious
+group drive
+grouper pea
+group insurance
+group marriage
+group medicine
+group method
+group mind
+group mixture
+group payment
+group rate
+group test
+group velocity
+group will
+grouse disease
+grouse locust
+grove mast
+grove palm
+grove spar
+grove tree
+growing pains
+growing point
+grown-up
+grown-upness
+growth form
+growth hormone
+grub ax
+grub hoe
+grub hook
+grub plank
+grub-prairie
+grub saw
+grub screw
+Grub street
+grugru beetle
+grugru palm
+grugru worm
+grundy-swallow
+G-shaped
+G-sharp
+G-sharp minor
+g sol re ut
+G star
+G string
+G-type
+G-type star
+guadalupe plum
+guaiacol benzoate
+guaiacol carbonate
+guaiac reaction
+guaiac test
+guaiacum wood
+guanay cormorant
+guarantee association
+guarantee company
+guaranteed day
+guaranteed day rate
+guard boat
+guard book
+guard brush
+guard cartridge
+guard cell
+guard chamber
+guard flag
+guard hair
+guard line
+guard lock
+guard mount
+guard mounting
+guard pin
+guard plate
+guard report
+guard ring
+guard room
+guard ship
+guard wire
+guava apple
+guayule rubber
+gucki grand
+gucki nullo
+gudgeon pin
+guelder-rose
+guess-rope
+guess-warp
+guest right
+guest room
+guest rope
+guest-warp
+Guiano-brazilian
+guide block
+guide card
+guide flag
+guide meridian
+guide mill
+guide pennant
+guide pulley
+guide rail
+guider-in
+guide rope
+guide word
+guiding telescope
+guild merchant
+guild socialism
+guild socialist
+guild-socialistic
+guild tree
+guillotine shears
+guilt offering
+guilty-cup
+guinea cock
+guinea flower
+guinea fowl
+guinea gold
+guinea goose
+guinea grains
+guinea grass
+Guinea green
+guinea hen
+guinea-hen flower
+guinea-hen weed
+guinea-pea
+guinea pig
+guinea rush
+guinea sorrel
+guise dancer
+guitar fiddle
+guitar mandolin
+guitar plant
+guitar-shaped
+guitar wood
+Gulf stream
+gull-billed
+gull chaser
+gulleting file
+gullet plate
+gullet worm
+gull grass
+gull gray
+gull-like
+gull teaser
+gully knife
+gully-raker
+gully root
+gum acacia
+gum acaroides
+gum acid
+gum acroides
+gum aloes
+gum ammoniac
+gum angico
+gum anime
+gum animi
+gum arabic
+gum archipin
+gum benjamin
+gum benzoin
+gum-bichromate
+gumbo grass
+gumbo lily
+gumbo limbo
+gum boot
+gum bush
+gum butea
+gumby bird
+gum camphor
+gum cistus
+gum copal
+gum dammar
+gum-dichromate
+gum disease
+gum dragon
+gum duct
+gum elastic
+gum elemi
+gum euphorbium
+gum flux
+gum foam
+gum galbanum
+gum gattie
+Gum gedda
+gum guaiac
+gum guaiacum
+gum-gum
+gum guttae
+gum hashab
+gum juniper
+gum kauri
+gum kino
+gum labdanum
+gum-lac
+gum-lac insect
+gum mastic
+gumming disease
+gumming spade
+gum mogador
+gummy-legged
+gum myrrh
+gum olibanum
+gum opoponax
+gum plant
+gum pocket
+gum rash
+gum resin
+gum-resinous
+gum rosin
+gum sagapenum
+gum-saline
+gum sandarac
+gum savakin
+gum shellac
+gum shiraz
+gum-shrub
+gum silk
+gum soap
+gum spirit
+gum spirits
+gum spot
+gum stick
+gum storax
+gum succory
+gum sugar
+gum thus
+gum-top
+gum-top tree
+gum tragacanth
+gum tree
+gum turpentine
+gum water
+gun assembler
+gun barrel
+gun-barrel lathe
+gunboat system
+gun bore
+gun breech
+gun brig
+gun captain
+gun carriage
+gun-carrying
+gun chamber
+gun-cleaning
+gun crew
+gun deck
+gun dog
+gunebo lily
+gun emplacement
+gun-equipped
+gun fight
+gun fighter
+gun fighting
+gun firing
+gun forger
+gun forging
+gun glaze
+gun iron
+gun lathe
+gun locksmith
+gun metal
+gun-metal gray
+gun money
+gun mount
+gun-mounted
+gunnery oficer
+gunny bag
+gunny cloth
+gunny sack
+gunong api
+gun park
+gun pendulum
+gun pit
+gun platform
+gunpowder hammer
+gunpowder tea
+gun power
+gun-rivet
+gun room
+gun-shy
+gun-shyness
+gun sight
+gun slide
+gun tackle
+gunter iron
+gunter rig
+gun-testing
+Gunz-mindel
+gurgeon stopper
+gurgina balsam
+guru nut
+gusset plate
+gusset stay
+gut spinner
+gutta balata
+gutta dujan
+gutta gamba
+gutta gerip
+gutta-gum
+gutta-gum tree
+gutta hangkang
+gutta jangkar
+gutta jelutong
+gutta ketapang
+gutta percha
+gutta puan
+gutta rosacea
+gutta rosea
+gutta sangei
+gutta semarum
+gutta serena
+gutta siak
+gutta singarip
+gutta soh
+gutta sundek
+gutta sundik
+gutta susu
+gutta taban puteh
+gutter-bred
+gutter-grubbing
+gutter tree
+guy cap
+gynocardia oil
+gypsum burner
+gypsum pink
+gypsum plaster
+gyre carline
+gyre carling
+gyro horizon
+gyro mechanism
+gyro pelorus
+habeas corpora
+habeas corpus
+habitat form
+habitat group
+habit-forming
+habit shirt
+habit spasm
+hack file
+hack hammer
+hacking knife
+hackle fly
+hack-me-tack
+hackney carriage
+hackney chair
+hackney coach
+Hackney pony
+hack saw
+hacksaw fern
+hag clog
+hag moth
+hag-ridden
+ha-ha
+hail insurance
+Haimanta series
+hair ball
+hair bleacher
+hair braid
+hair bramble
+hair-branch tree
+hair brown
+haircap moss
+hair carder
+hair cell
+hair-check
+hair-checking
+hair clipper
+hair compass
+hair crimper
+hair curler
+hair drawer
+hair-drawn
+hair dye
+hair dyeing
+hair dyer
+hair eel
+hair fern
+hair-fibered
+hair follicle
+hair glove
+hair grass
+hair hygrometer
+hair kiln
+hair mattress
+hair moss
+hair moth
+hair net
+hair oil
+hair orchid
+hair palm
+hair pencil
+hair powder
+hair pyrites
+hair-raiser
+hair-raising
+hair remover
+hair restorer
+hair ribbon
+hair salt
+hair seal
+hair shirt
+hair sieve
+hair snake
+hair sofa
+hair sorter
+hair space
+hair-stemmed
+hair straightener
+hair stroke
+hair tonic
+hair trigger
+hair trunk
+hair wash
+hair washer
+hair waver
+hair-waving
+hairy-armed
+hairy-chested
+hairy-clad
+hairy-dog story
+hairy-eared
+hairy-faced
+hairy-foot
+hairy-footed
+hairy-fruited
+hairy-handed
+hairy-headed
+hairy-legged
+hairy-looking
+hairy-skinned
+halade mystai
+halberd fern
+halberd-headed
+halberd-leaved
+halberd-shaped
+hale bind
+hale-nut
+hale water
+half-abandoned
+half-accustomed
+half-acquainted
+half-acquiescent
+half-acre
+half-addressed
+half-admiring
+half-admitted
+half-adream
+half-affianced
+half-afloat
+half-afraid
+half-agreed
+half-alike
+half-alive
+half-altered
+Half-american
+Half-americanized
+half anatropous
+half angel
+Half-anglicized
+half-angrily
+half-angry
+half-annoyed
+half-ape
+Half-aristotelian
+half-armed
+half-armor
+half-ashamed
+half-ashamedly
+Half-asiatic
+half-asleep
+half aunt
+half-awake
+half-backed
+half-baked
+half-bald
+half ball
+half-banked
+half-barbarian
+half-bare
+half-barrel
+half-beam
+half-begging
+half-begun
+half-believed
+half-believing
+half-bent
+half binding
+half bird
+half bishop
+half-bleached
+half-blind
+half-blindly
+half block
+half blood
+half-blooded
+half-blown
+half-blue
+half board
+half-boiled
+half boot
+half-bound
+half-bowl
+half-breadth plan
+half-bred
+half-breed
+half broad
+half-broken
+half brother
+half bull
+half-buried
+half-burned
+half-bushel
+half butt
+half-calf
+half-carried
+half-caste
+half-cent
+half-century
+half-chanted
+Half-christian
+half chronometer
+half-civilized
+half-clad
+half-cleaned
+half-clear
+half-climbing
+half close
+half-closed
+half cloth
+half-clothed
+half-coaxing
+half-coaxingly
+half cock
+half-cocked
+half-colored
+half column
+half-completed
+half-concealed
+half cone
+Half-confederate
+half-confessed
+half-congealed
+half-conquered
+half-conscious
+half-conservative
+half-consonant
+half-consumed
+half-consummated
+half-contemptuous
+half-contented
+half-convicted
+half-convinced
+half-cooked
+half-cordate
+half-corrected
+half-cotton
+half-counted
+half court
+half-courtline
+half cousin
+half-covered
+half-cracked
+half-crazed
+half-crazy
+Half-creole
+half-critical
+half crown
+half-crumbled
+half-cured
+half curlew
+half cushion
+half-cut
+half-dark
+half davit
+half-day
+half-dazed
+half-dead
+half-deaf
+half-deafened
+half-decade
+half deck
+half-decked
+half-decker
+half-defiant
+half-deified
+half-demented
+half-democratic
+half-demolished
+half-denuded
+half-deprecating
+half-deserved
+half-deservedly
+half-destroyed
+half-developed
+half-digested
+half-dime
+half diphthong
+half-discriminated
+half-disposed
+half-divine
+half-divinely
+half-dollar
+half-done
+half-door
+half-dozen
+half-dram
+half-dressed
+half-dressedness
+half-dried
+half-drowned
+half-drunk
+half-drunken
+half-dug
+half-dying
+half eagle
+half-earnest
+half-eaten
+half-educated
+Half-elizabethan
+half-embraced
+half-enamored
+half-enforced
+Half-english
+half-erased
+half-evaporated
+half-evergreen
+half-expectant
+half-exploited
+half-exposed
+half-faced
+half facet
+half-false
+half-famished
+half-farthing
+half-fascinated
+half-fed
+half-feminine
+half-fertile
+half-fictitious
+half-filled
+half-finished
+half-firkin
+half-flattered
+half-florin
+half-folded
+half-foot
+half-forgiven
+half-forgotten
+half-formed
+Half-french
+half-frowning
+half-frowningly
+half-fulfilled
+half-full
+half-furnished
+half gainer
+half galley
+half-gallon
+Half-german
+half gerund
+half-gill
+half-god
+half-great
+Half-grecized
+half-grown
+half-hard
+half-hardy
+half-harvested
+halfhead bedstead
+half header
+half-healed
+half-heard
+half-heathen
+Half-hessian
+half-hidden
+half hitch
+half holiday
+half-hollow
+half hose
+half hour
+half-hourly
+half-human
+half-hungered
+half hunter
+half-hypnotized
+half-important
+half-inch
+half-inclined
+half-indignant
+half-inferior
+half-informed
+half-ingenious
+half-ingenuous
+half-inherited
+half-insinuated
+half-insinuating
+half-insinuatingly
+half-instinctive
+half-intellectual
+half-intoned
+half-intoxicated
+Half-irish
+half-iron
+half island
+half-jelled
+half joe
+half-joking
+half-jokingly
+half-justified
+half-languaged
+half-languishing
+half-lapped
+half large
+Half-latinized
+half-latticed
+half-lattice girder
+half-learned
+half-learnedly
+half leather
+half-left
+half-length
+half-liberal
+half life
+half-light
+half line
+half-lined
+half-linen
+half-liter
+half-lived
+half-looper
+half-lop
+half-lunatic
+half-lunged
+half-mad
+half-made
+half-marked
+half-marrow
+half mask
+half-mast
+half-masticated
+half-matured
+half-meant
+half measure
+half-mental
+half-merited
+Half-mexican
+half mile
+half-miler
+half-minded
+half-minute
+half-minute glass
+half-miseducated
+half-misunderstood
+half-mitten
+Half-mohammedan
+half-monitor
+half-monthly
+half-moon
+half-moral
+Half-moslem
+half mourning
+half-mumbled
+half-mummified
+half-naked
+half nelson
+half nephew
+half niece
+half noble
+half-normal
+half note
+half-numb
+half nut
+half-obliterated
+half-offended
+half-on
+half-one
+half-open
+half-opened
+Half-oriental
+half-orphan
+half-oval
+half-oxidized
+half past
+half pay
+half-peck
+halfpenny post
+half-petrified
+half-pike
+half-pint
+half-pipe
+half-pitch
+half plane
+half-plate
+half-playful
+half-pleased
+half-plucked
+half-port
+half-pound
+half-pounder
+half-praised
+half-present
+half principal
+half-profane
+half-professed
+half-profile
+half-proletarian
+half-protesting
+half-proved
+half-provocative
+half-quarter
+half-quartern
+half-questioningly
+half-quire
+half-quixotic
+half-radical
+half-rater
+half-raw
+half ray
+half-reactionary
+half-read
+half-reasoning
+half-rebellious
+half-reclaimed
+half-reclining
+half-refined
+half-regained
+half-reluctant
+half-reluctantly
+half-remonstrant
+half-repentant
+half-republican
+half rest
+half-retinal
+half-revealed
+half-reversed
+half-right
+half ring
+half-ripe
+half-ripened
+half ripsaw
+half-roasted
+half-rod
+half-romantic
+half-rotted
+half-rotten
+half-round
+half-round file
+half royal
+half-rueful
+half-ruefully
+half-ruined
+half-run
+half rupee
+half-russia
+Half-russian
+half-sagittate
+half-savage
+half-saved
+Half-scottish
+half seal
+half-second
+half-section
+Half-semitic
+half-sensed
+half-serious
+half-seriously
+half-severed
+half-shade
+Half-shakespearean
+half-shamed
+half-share
+half-shared
+half-sheathed
+half shell
+half shirt
+half-shoddy
+half shoe
+half-shot
+half-shouted
+half-shroud
+half-shrub
+half-shrubby
+half-shut
+half-shy
+half-sib
+half-sibling
+half-sighted
+half-sightedness
+half-silk
+half sir
+half sister
+half-size
+half-sleeve
+half-sleeved
+half small
+half-smile
+half-smiling
+half-smilingly
+half-smothered
+half snipe
+half sol
+half sole
+half-solid
+half-souled
+half sovereign
+half space
+Half-spanish
+half speed
+half-spoonful
+half-spun
+half-squadron
+half-staff
+half-starved
+half step
+half-sterile
+half stitch
+half stock
+half-stocking
+half-stopped
+half story
+half-strained
+half-stroke
+half-strong
+half stuff
+half-subdued
+half-submerged
+half-successful
+half-succulent
+half-suit
+half-sung
+half-sunk
+half-sunken
+half-swing
+half-sword
+half-syllabled
+half-taught
+half-tearful
+half-tearfully
+half-teaspoonful
+half-tented
+half-terete
+half-term
+half-theatrical
+half-thought
+half tide
+half timber
+half-timbered
+half-time
+half-timer
+half tint
+half title
+half tone
+half-tongue
+half-track
+half-trained
+half-training
+half-translated
+half trap
+half-true
+half-truth
+half-turn
+half-turned
+half uncial
+half uncle
+half-understood
+half-undone
+half-used
+half-veiled
+half-vellum
+half-verified
+half-vexed
+half volley
+half-volleyer
+half vowel
+half-vowelish
+half-waking
+half-wave rectification
+half-wave rectifier
+halfway covenant
+halfway file
+halfway house
+half-whispered
+half-white
+half-wicket
+half-wild
+half-willful
+half-winged
+half-wit
+half-witted
+half-wittedly
+half-wittedness
+half-womanly
+half-won
+half-woolen
+half-world
+half-worsted
+half-woven
+half-written
+half year
+half-yearly
+haling hands
+hallelujah meter
+halo blight
+halo-bright
+halo-crowned
+halo-girt
+halo spot
+halter-wise
+hamber line
+Hamito-negro
+Hamito-semitic
+hammer ax
+hammer beam
+hammer blow
+hammer break
+hammer butt
+hammer cap
+hammer crane
+hammer drill
+hammered work
+hammer gun
+hammer-hard
+hammer-harden
+hammerheaded shark
+hammer lock
+hammer maker
+hammer mill
+hammer molding
+hammer oyster
+hammer pick
+hammer pike
+hammer price
+hammer-proof
+hammer rail
+hammer-refined
+hammer scale
+hammer sedge
+hammer shank
+hammer-shaped
+hammer shell
+hammer slag
+hammer spring
+hammer-strong
+hammer tail
+hammer thrower
+hammer tongs
+hammer-weld
+hammer-welded
+hammer welding
+hammer-wrought
+hammock batten
+hammock berthing
+hammock clew
+hammock cloth
+hammock netting
+hance arch
+hand alphabet
+hand ax
+hand baggage
+hand-beaten
+hand bell
+hand-blocked
+hand blocker
+hand-blown
+hand-bound
+hand brake
+hand-broad
+hand-broken
+hand-built
+hand cannon
+hand-carry
+hand-carve
+hand-chase
+hand-churn drill
+hand clapping
+hand-clean
+hand cleaner
+hand-closed
+hand-colored
+hand-comb
+hand-crushed
+hand-culverin
+hand-cut
+hand director
+hand-dress
+hand-drill
+hand driller
+hand-drop
+hand-dug
+hand dynamometer
+hand-embroidered
+hand embroidery
+hand-fed
+hand-feed
+hand feeder
+hand-fill
+hand-filled
+hand-fire
+hand firer
+hand fishing
+hand-fives
+hand flail
+handflower tree
+hand-fold
+hand-footed
+hand glass
+hand goniometer
+hand graver
+hand grenade
+hand guard
+hand-hewn
+hand-hidden
+hand-high
+hand hoe
+hand hoer
+hand hook
+hand horn
+Handie-talkie
+hand-in
+hand iron
+hand ironer
+hand-knit
+hand-knitted
+hand knitter
+hand-knotted
+hand labor
+hand laborer
+hand language
+hand lead
+handle bar
+handle blank
+hand letter
+hand-lettered
+hand level
+hand line
+hand-liner
+hand list
+hand-lopped
+hand luggage
+handmaid moth
+hand mast
+hand-me-down
+hand mill
+hand miller
+hand milling machine
+hand-minded
+hand miner
+hand-mix
+hand mixer
+hand-mold
+hand molder
+hand money
+hand mule
+hand-off
+hand-operated
+hand orchis
+hand organ
+hand-organist
+hand-packed
+hand paper
+hand-pick
+hand-pitched
+hand pitching
+hand planer
+hand plant
+hand plate
+hand play
+hand plow
+hand polisher
+hand-pollinate
+hand-pollination
+hand-power
+hand press
+hand-presser
+hand-pressman
+hand print
+hand promise
+hand-pump
+hand pumper
+hand punch
+hand-rear
+hand-reared
+hand-rinse
+hand-rivet
+hand riveter
+hand-roll
+hand roller
+hand rope
+hand-rub
+hand-rubbed
+hand running
+hand screw
+hand-sent
+hand-sew
+hand sewer
+hand-sewn
+hand-shackled
+hands-off
+handsome-featured
+Handsome harry
+hand-sort
+hand spar
+hand spinning
+hand-splice
+hand splicer
+hand-split
+hand-spun
+hand-stamp
+hand-stamped
+hand-stitch
+hand stitcher
+hand-stuff
+hand sweep
+hand-tailored
+hand tap
+hand-taut
+hand-thrown
+hand-tied
+hand-tight
+hand-tooled
+hand tooling
+hand-treat
+hand tree
+hand-trim
+hand trimmer
+hand-turn
+hand turner
+hand-wash
+hand-weave
+hand weaver
+hand-weed
+hand weeder
+hand-worked
+hand worker
+hand-woven
+hand-wrought
+handy-billy
+handy-dandy
+handy man
+handy-pandy
+handy-spandy
+hang-back
+hang-choice
+hang-down
+hanger-back
+hanger board
+hanger bolt
+hanger-on
+hanger-up
+hang-fair
+hang-head
+hanging-drop culture
+hang net
+hang-over
+hanky-panky
+Han-lin
+hanse house
+happy-go-lucky
+happy-go-luckyism
+hara-kiri
+harbor deck
+harbor due
+harbor gasket
+harbor log
+harbor master
+harbor porpoise
+harbor seal
+harbor watch
+hard-acquired
+hard-baked
+hard-barked
+hard-beating
+hard-billed
+hard-biting
+hard-bitted
+hard-bitten
+hard-boiled
+hard-boiledness
+hard-boned
+hard-bought
+hard-bred
+hard-coated
+hard-contested
+hard-cooked
+hard-cured
+hard-drawn
+hard-dried
+hard-drinking
+hard-driven
+hard-driving
+hard-drying
+hard-earned
+hard-edged
+hard-eyed
+hard-faced
+hard-fated
+hard-favored
+hard-favoredness
+hard-feathered
+hard-featured
+hard-featuredness
+hard-fed
+hard fescue
+hard-fighting
+hard-finished
+hard-fired
+hard-fleshed
+hard-fought
+hard-gained
+hard-got
+hard-grained
+hard grass
+hard-haired
+hard-handled
+hard-heart
+hard-hit
+hard-hitting
+hard-iron
+hard-laid
+hard lay
+hard lead
+hard-learned
+hard-living
+hard-looking
+hard-minded
+hard-natured
+hard oat grass
+hard-plucked
+hard-pressed
+hard-ridden
+hard-riding
+hard-set
+hard-shell
+hard-shelled
+hard-skinned
+hard-spirited
+hard-spun
+hard-surfaced
+hard-swearing
+hard-timbered
+hard-trotting
+hard up
+hard-upness
+hard-uppishness
+hard-used
+hard-visaged
+hardware cloth
+hard-wearing
+hard-witted
+hard-won
+hard-worked
+hard-working
+hard-wrought
+hard-wrung
+hare-eyed
+hare-mad
+hariali grass
+Harida nut
+harness hitch
+harness leather
+harness maker
+harness making
+harness plate
+harness race
+harness racing
+harp groat
+harp guitar
+harpoon fork
+harpoon gun
+harpoon log
+harp seal
+harp-shaped
+harp shell
+harp shilling
+harpy bat
+harpy eagle
+harpy-footed
+harrier eagle
+harrier hawk
+harsh-blustering
+harsh-featured
+harsh-grating
+harsh-looking
+harsh-mannered
+harsh-syllabled
+harsh-tongued
+harsh-voiced
+hart clover
+hartshorn bush
+hartshorn plant
+hartshorn plantain
+hart thorn
+harum-scarum
+harum-scarumness
+harvest bell
+harvest dinner
+harvest doll
+harvester ant
+harvester-thresher
+harvest festival
+harvest fish
+harvest fly
+harvest home
+harvesting ant
+harvest lady
+harvest-lice
+harvest lily
+harvest lord
+harvest louse
+harvest moon
+harvest mother
+harvest mouse
+harvest queen
+harvest spider
+harvest supper
+harvest tick
+harvest work
+harvest worker
+harvest yarn
+has-been
+hashab tree
+hash mark
+hasp lock
+hassock grass
+hat blocker
+hat carder
+hatch box
+hatch coamings
+hatch deck
+hatchet cactus
+hatchet face
+hatchet-faced
+hatchet man
+hatchet planimeter
+hatchet-shaped
+hatchet stake
+hatchet vetch
+hatching spine
+hatching station
+hatch money
+hatch tackle
+hat cleaner
+hat dyer
+hatha-yoga
+hat homage
+hat hook
+Hathor column
+Hathor-headed
+hat leather
+hat lining
+hat money
+hat palm
+hat piece
+hat plant
+hat roller
+hat-shag
+hat-shaped
+hat shop
+hatted kit
+hat tree
+hat trick
+hat trimming
+haulage incline
+haunch bone
+hausse-col
+haute-feuillite
+have-been
+haven cap
+have-not
+haver-corn
+havey-cavey
+havildar major
+haw-haw
+hawk-beaked
+hawk bell
+hawk-billed
+hawk call
+hawk cuckoo
+hawk eagle
+hawk-eyed
+Hawkeye state
+hawk-faced
+hawk fly
+hawk-headed
+hawk moth
+hawk nose
+hawk-nosed
+hawk owl
+hawk parrot
+hawk swallow
+hawk-tailed
+hawse bag
+hawse bolster
+hawse-full
+hawse hook
+hawser bend
+hawser clamp
+hawser fastening
+hawser-laid
+hawse timber
+hawsing iron
+hawthorn china
+hawthorn pattern
+hawthorn tingis
+haw tree
+hay asthma
+hay bacillus
+hay baler
+hay barrack
+hay binder
+hay-color
+hay-colored
+hay cutter
+hay-fed
+hay fern
+hay fever
+hay hook
+hay jack
+hay knife
+hay loader
+hay plant
+hay press
+hay rig
+hay road
+hay saffron
+hay-scented
+haystack thorn
+hay sweep
+hay-tallat
+hay tedder
+hay tit
+hay wagon
+hay worm
+hazard side
+hazel alder
+hazel brown
+hazel crottles
+hazel-eyed
+hazel-gray
+hazel grouse
+hazel hen
+hazel-hooped
+hazel-leaved
+hazel mouse
+hazelnut oil
+hazel oil
+hazel pine
+hazel tree
+hazel worm
+headache plant
+headache tree
+headache wafer
+headache weed
+head-aching
+head betony
+head blight
+head block
+head covering
+head deformation
+head earing
+header-up
+head fast
+head-flattening
+head flume
+head fold
+head form
+head gate
+head-hanging
+head harness
+head-high
+head house
+head-hunt
+head-hunter
+head-hunting
+head index
+heading bond
+heading course
+heading joint
+heading machine
+heading stone
+heading tool
+head joint
+head kidney
+head knee
+head lamp
+head lettuce
+head log
+head louse
+head maggot
+head matter
+head metal
+head money
+head motion
+head netting
+head on
+head pin
+head resistance
+head sample
+head scab
+head-shaking
+head shaping
+head smut
+head space
+head spar
+head spin
+head-splitting
+head stool
+head strapper
+head tax
+head tone
+head-tossing
+head tree
+head-turned
+head veil
+head voice
+headwater erosion
+head wind
+head word
+head yard
+heal-all
+heal-bite
+heald knitter
+heal-dog
+healing blade
+healing herb
+healing leaf
+he-all
+health insurance
+health officer
+health physicist
+health physics
+healthy-minded
+healthy-mindedly
+healthy-mindedness
+heap leaching
+heap roasting
+hearsay evidence
+heart action
+heart-affecting
+heart amulet
+heart-angry
+heart attack
+heart-back
+heart block
+heart bond
+heart-bound
+heart-bred
+heart-burdened
+heart-cheering
+heart cherry
+heart-chilled
+heart-chilling
+heart clam
+heart clot
+heart clover
+heart cockle
+heart complaint
+heart-corroding
+heart cup
+heart-deadened
+heart disease
+heart-dulling
+heart-eating
+heart failure
+heart-fallen
+heart-fashioned
+heart flower
+heart-flowered
+heart-flowered orchid
+heart-free
+heart-freezing
+heart-fretting
+heart-gnawing
+heart-gripping
+heart-happy
+heart-hardened
+heart-hardening
+hearth cricket
+heart-heaviness
+heart-heavy
+hearth money
+hearth tax
+heart-hungry
+heart-ill
+heart-leaved
+heart-leaved aster
+heart-leaved willow
+heart line
+heart liver
+heart liverleaf
+heart medic
+heart-melting
+heart-moving
+heart murmur
+heart pine
+heart point
+heart-purifying
+heart-ravishing
+heart-rending
+heart-rendingly
+heart-robbing
+heart rot
+heart sac
+heart-shaking
+heart-shaped
+heart-shed
+heart shell
+heart snakeroot
+heart-sorrowing
+heart-spoon
+heart stimulant
+heart-stirring
+heart strain
+heart-stricken
+heart-strickenly
+heart-strike
+heart-struck
+heart-swelling
+heart-swollen
+heart-tearing
+heart-thrilling
+heart-throbbing
+heart-tickling
+heart trefoil
+heart trouble
+heart urchin
+heart wall
+heart-warm
+heart-warming
+heart-weariness
+heart-weary
+heart-whole
+heart-wholeness
+heart-wise
+heart-wounded
+heart-wounding
+heart-wringing
+heart-wrung
+heart yarn
+heat absorber
+heat-absorbing
+heat apoplexy
+heat asphyxia
+heat balance
+heat canker
+heat capacity
+heat center
+heat-conducting
+heat conduction
+heat conductivity
+heat content
+heat-cracked
+heat energy
+heat engine
+heat-engine cycle
+heat engineer
+heat engineering
+heat equator
+heat equivalent
+heater cord
+heater piece
+heater-shaped
+heat exchanger
+heat factor
+heat fever
+heat-forming
+heat-giving
+heath aster
+heath bell
+heath box
+heath bramble
+heath-clad
+heath cock
+heath cypress
+heather bell
+heather-bleat
+heather-blutter
+heather cat
+heather grass
+heather purple
+heather whin
+heather wool
+heath family
+heath fern
+heath grass
+heath grouse
+heath hen
+heath honeysuckle
+heath moss
+heath mulberry
+heath pea
+heath peat
+heath poult
+heath rush
+heath scrub
+heating coil
+heating element
+heating furnace
+heating plant
+heat-killed
+heat-laden
+heat lightning
+heat-loving
+heat nodules
+heat-oppressed
+heat potential
+heat-power engineer
+heat-power engineering
+heat-producing
+heat pump
+heat-radiating
+heat rash
+heat ray
+heat-reducing
+heat-regulating
+heat regulator
+heat-resistant
+heat-resisting
+heat rigor
+heat-softened
+heat spectrum
+heat spot
+heat sum
+heat-tempering
+heat-treat
+heat-treated
+heat-treating
+heat-treatment
+heat unit
+heat wave
+heat weight
+Heauton timoroumenos
+heave ho
+heaven-accepted
+heaven-aspiring
+heaven-assailing
+heaven-begot
+heaven-bent
+heaven-born
+heaven-bred
+heaven-built
+heaven-clear
+heaven-controlled
+heaven-daring
+heaven-dear
+heaven-defying
+heaven-descended
+heaven-devoted
+heaven-directed
+heaven-erected
+heaven-fallen
+heaven-forsaken
+heaven-gifted
+heaven-given
+heaven-guided
+heaven-inspired
+heaven-instructed
+heaven-kissing
+heaven-lighted
+heaven-lit
+heavenly body
+Heavenly city
+heavenly fruit
+heavenly host
+heavenly-minded
+heavenly-mindedness
+Heavenly preceptor
+heaven-made
+heaven-prompted
+heaven-protected
+heaven-rending
+heaven-sent
+heaven-sprung
+heaven-sweet
+heaven-taught
+heaven-threatening
+heaven-touched
+heaven tree
+heavenward tree
+heaven-warring
+heaven-wide
+heaven worshiper
+heave offering
+heaver-off
+heaver-out
+heaver-over
+heave shoulder
+heave-shouldered
+heavier-than-air
+heaving-line bend
+heaving pile
+Heaviside layer
+heavy-armed
+heavy artillery
+heavy-bearded
+heavy-blossomed
+heavy-bodied
+heavy-boned
+heavy-booted
+heavy-boughed
+heavy-drinking
+heavy-duty
+heavy-eared
+heavy earth
+heavy-eyed
+heavy-faced
+heavy-featured
+heavy field artillery
+heavy-fisted
+heavy-fleeced
+heavy-footed
+heavy-footedness
+heavy force fit
+heavy-fruited
+heavy-gaited
+heavy-handed
+heavy-handedly
+heavy-head
+heavy-headed
+heavy-heeled
+heavy-jawed
+heavy-laden
+heavy-leaved
+heavy-lidded
+heavy-limbed
+heavy-lipped
+heavy-looking
+heavy metal
+heavy-mettled
+heavy-mouthed
+heavy oil
+heavy-paced
+heavy pine
+heavy platinum group
+heavy-scented
+heavy-seeming
+heavy-set
+heavy-shotted
+heavy-shouldered
+heavy-shuttered
+heavy-soled
+heavy solution
+heavy-tailed
+heavy-timbered
+heavy-winged
+heavy-witted
+heavy-wooded
+he-balsam
+Hebrew-wise
+he-broom
+he-cabbage-tree
+heck-how
+hecto-ampere
+heddle brusher
+heddle knitter
+hedge accentor
+hedge apple
+hedge bedstraw
+hedge bells
+hedge bird
+hedge-bound
+hedge cactus
+hedge carpenter
+hedge chanter
+hedge crocus
+hedge fumitory
+hedge garlic
+hedge grape
+hedgehog aloe
+hedgehog cactus
+hedgehog caterpillar
+hedgehog grass
+hedgehog transformer
+hedge hyssop
+hedge laurel
+hedge layer
+hedge marriage
+hedge rose
+hedge sparrow
+hedge stake
+hedge trimmer
+heebie jeebies
+heel-attaching
+heel block
+heel blocker
+heel-breast
+heel-breaster
+heel builder
+heel chain
+heel clamp
+heel cutter
+heel-fast
+heel fly
+heel jigger
+heel nailer
+heel pad
+heel padder
+heel ring
+heel rope
+heel seat
+heel seater
+heel splitter
+heel spur
+heel stay
+heel tool
+heel trimmer
+heel wedge
+he-goat
+he-heather
+he-holly
+he-huckleberry
+heigh-ho
+height block
+height board
+height district
+height gauge
+height measure
+heir apparency
+heir apparent
+heiress-ship
+heir portioner
+heliotrope gray
+helium group
+helix angle
+hell-begotten
+hell-bent
+hell-bind
+hell-black
+hell-bound
+hell-brewed
+hell-dark
+hell-deep
+hell-devil
+hell-diver
+hell-doomed
+hellebore green
+hellebore red
+hell-engendered
+Helleno-italic
+hell-fire
+hell gate
+hell-hard
+hell-hatched
+hell-haunted
+hell-like
+hell mouth
+hello girl
+hell-raker
+hell-red
+hell-vine
+helmet quail
+helmet-shaped
+helmet shell
+helmet-wearing
+helm port
+helter-skelter
+helter-skelteriness
+helve hammer
+Helvetia blue
+he-man
+hematin crystals
+hematin paste
+hematite red
+hemispherico-conical
+hemispherico-conoid
+hemi-type
+hemlock fir
+hemlock-leaved
+hemlock parsley
+hemlock pitch
+hemlock spruce
+hemolymph gland
+hemp agrimony
+hempen tippet
+hemp nettle
+hemp oil
+hemp palm
+hempseed oil
+hen clam
+hen curlew
+hen-driver
+hen-fat
+hen-feathered
+hen-feathering
+hen flea
+hen gorse
+hen harrier
+hen hawk
+hen louse
+hen mold
+hen party
+hen pepper
+hen plant
+Henrietta cloth
+hen-tailed
+he-oak
+hepato-pancreas
+herabol myrrh
+heraldic knot
+herb bennet
+herb doctor
+herd instinct
+heriot service
+hermaphrodite brig
+hermaphrodite caliper
+hermaphrodite duct
+hermit crab
+hermit crow
+Hermit kingdom
+hermit order
+hermit thrush
+hermit warbler
+hermosa pink
+hero worship
+hero-worshiper
+herr-ban
+herringbone gear
+herringbone stitch
+herring gull
+herring hog
+herring-kale
+herring king
+herring oil
+herring pond
+herring-shaped
+herring work
+hesitation waltz
+heterogeneous system
+het up
+hexaethyl tetraphosphate
+hexagon-drill
+hex doctor
+hey-ho
+Hiberno-celtic
+Hiberno-english
+hiccup-nut
+hick joint
+hickory acacia
+hickory aphid
+hickory borer
+hickory elm
+hickory girdler
+hickory moth
+hickory nut
+hickory oak
+hickory phylloxera
+hickory pine
+hickory poplar
+hickory shad
+hickory twig girdler
+hickory wattle
+hidden-fruited
+hidden-veined
+hide beetle
+hidebound disease
+hide-out
+hide rope
+hide splitter
+hielaman tree
+hi-fi
+higgledy-piggledy
+high-aimed
+high-aiming
+high-angled
+high-angle fire
+high-arched
+high-aspiring
+high-backed
+high-blazing
+high-blessed
+high-blooded
+high-blown
+high-bodiced
+high-boiling
+high-boned
+high-breasted
+high-brow
+high-browed
+high-browish
+high-browishly
+high-browism
+high-built
+high-caliber
+high-case
+high-caste
+high-ceiled
+high-ceilinged
+high chair
+High church
+High-churchism
+High-churchist
+High-churchman
+High-churchmanship
+high-class
+high-climber
+high-climbing
+high-collared
+high-colored
+high-complexioned
+high-compression
+high-count
+high-crested
+high-crowned
+high-cut
+high-density
+high-duty
+high-elbowed
+high-embowed
+higher-up
+high-fated
+high-feathered
+high-fed
+high-flavored
+high-flown
+high-flushed
+high-foreheaded
+high-frequency
+high-frequency cable
+high-frequency telephony
+high-frequency treatment
+high-gazing
+high-grade
+high-grade ore
+high-hatted
+high-hatter
+high-hatty
+high-headed
+high-heaped
+high-heel
+high-heeled
+high-holder
+high-horned
+high-hung
+high jinks
+high-judging
+high jump
+high jumper
+high-keyed
+highland cranberry
+highland cudweed
+Highland terrier
+high-level
+high light
+high-lineaged
+high-lived
+high liver
+high-lying
+high-mettled
+high-minded
+high-mindedly
+high-mindedness
+high-motived
+high-mounted
+high-mounting
+high-muck-a-muck
+high-necked
+high-notioned
+high-pass
+high-pass filter
+high-peaked
+high-pitch
+high-pitched
+high-placed
+high-pointing
+high-pooped
+high-potential
+high-power
+high-powered
+high-pressure
+high-pressure area
+high-pressure cylinder
+high-priced
+high-principled
+high-prized
+high proof
+high-quality
+high-raised
+high-ranking
+high-reaching
+high-reared
+high-resolved
+high-rigger
+high-roofed
+high school
+high sea
+high-seasoned
+high-seated
+high-set
+high-shouldered
+high-sided
+high-sighted
+high-soaring
+high-soled
+high-souled
+high-sounding
+high-speed
+high-speed steel
+high-speed turn
+high-spirited
+high-spiritedly
+high-spiritedness
+high steel
+high-stepper
+high-stepping
+high-strung
+high-sulphur
+high-swollen
+high-swung
+high-tail
+high-tasted
+high-temperature cement
+high-tempered
+high-tension
+high-test
+high-thoughted
+high-throned
+high-thundering
+high time
+high-toned
+high-topped
+high-tory
+high-towered
+high treason
+high-tuned
+highty-tighty
+high-up
+high-vaulted
+high visibility
+high-voltage
+high-waisted
+high-walled
+high-warp
+high-water mark
+high-water shrub
+highway engineer
+highway engineering
+highway marker
+high wine
+high-wrought
+high yellow
+hig taper
+hilaro-tragedy
+hill climber
+hill country
+hill folk
+hill fox
+hill-girdled
+hill-girt
+hill grub
+hill oat
+hillock tree
+hill palm
+hill partridge
+hill planter
+hillside plow
+hill station
+hill-surrounded
+hill tit
+Hilo grass
+Himalo-chinese
+hind-foremost
+hind-gut
+hind kidney
+hind shank
+Hindu-javan
+Hindu-malayan
+hind wing
+hinge fault
+hinge joint
+hinge line
+hinge plate
+hinge-pole
+hinge strap
+hinge tooth
+hinging post
+hip boot
+hip brier
+hip disease
+hip girdle
+hip joint
+hip knob
+hip lock
+hip molding
+hippety-hoppety
+hippocras bag
+hip rafter
+hip roll
+hip roof
+hip-roofed
+hip rose
+hip tile
+hip vertical
+Hirado ware
+hirdie-girdie
+hirdum-dirdum
+hired girl
+hired man
+hirse grass
+hirsuto-rufous
+Hispano-american
+Hispano-gallican
+Hispano-german
+Hispano-italian
+Hispano-moresque
+his self
+historico-ethical
+hitch angle
+hitch kick
+hitch pin
+hit-in
+hit-off
+hitty-missy
+Hiung-nu
+hive bee
+hive body
+hive sirup
+hive vine
+hoary-eyed
+hoary-feathered
+hoary-haired
+hoary-leaved
+hoary-white
+hobble skirt
+hob ferret
+ho-bird
+hobson-jobson
+hob tap
+hock cockle
+hockey cart
+hockey skate
+hockey stick
+hocking ale
+hock leg
+Hock monday
+Hock money
+hock shop
+Hock tuesday
+hocus-pocus
+hod carrier
+hodge-pudding
+hoe culture
+hoe drill
+hog ape
+hog apple
+hog-backed
+hog brake
+hog caterpillar
+hog chain
+hog cholera
+hog deer
+Hogen-mogen
+hog-faced
+hog-fat
+hog flu
+hogger pump
+hog hair
+hog hook
+Hog latin
+hog louse
+hog-maned
+hog millet
+hog money
+hog-mouthed
+hog-necked
+hog-nosed
+hognose snake
+hog pox
+hog-raising
+hog-tie
+hog-tight
+hog turn
+hog wallow
+hog-wild
+hog wire
+hoist loader
+hoity-toity
+hoity-toityism
+hoity-toityness
+Hok-lo
+hold beam
+hold-clear
+hold-down
+holder-forth
+holder-on
+holder-up
+hold-off
+holdup man
+hold yard
+hollow-backed
+hollow-billed
+hollow-cheeked
+hollow-chested
+hollow-eyed
+hollow-footed
+hollow-fronted
+hollow-ground
+hollow heart
+hollow horn
+hollow-horned
+hollow-jawed
+hollow-pointed
+hollow-toned
+hollow-toothed
+hollow-vaulted
+hollow-voiced
+holly fern
+holly green
+hollyhock anthracnose
+hollyhock fungus
+hollyhock rust
+holly-leaved
+holm cock
+holm oak
+holm thrush
+holm tree
+holster pipe
+holus-bolus
+holy grass
+Holy roller
+Holy rollerism
+Holy willie
+home-abiding
+home address
+home-along
+home-baked
+home-brew
+home-brewed
+home-bringing
+home builder
+home-building
+home-built
+home circle
+home-come
+home-coming
+home-driven
+home dweller
+home-dwelling
+home-faring
+home-fed
+home-going
+home-growing
+home-grown
+home-killed
+home life
+home-loving
+home office
+homeopathic dose
+home-owning
+home-raised
+home-reared
+home-sailing
+home-sent
+home sheltered
+home-staying
+homestead law
+home study
+home tie
+home town
+home towner
+homeward-bounder
+home-woven
+homing pigeon
+homo-hetero-analysis
+homo-organ
+homo signorum
+Honduras bark
+Honduras cedar
+Honduras mahogany
+Honduras oak
+Honduras rosewood
+honey ant
+honey badger
+honey bag
+honey ball
+honey balm
+honey bear
+honey-bearing
+honey beige
+honey bell
+honey bird
+honey bottle
+honey bread
+honey bunch
+honey buzzard
+honey cherry
+honey clover
+honey-color
+honey-colored
+honeycomb coral
+honeycomb isinglass
+honeycomb moth
+honeycomb radiator
+honeycomb ringworm
+honeycomb sponge
+honeycomb stitch
+honeycomb stomach
+honeycomb tripe
+honey creeper
+honeydew melon
+honey-dropping
+honey eater
+honey-eating
+honey extractor
+honey-flowing
+honey fly
+honey garlic
+honey-gathering
+honey gland
+honey grass
+honey guide
+honey-heavy
+honey jack
+honey kite
+honey-laden
+honey-loaded
+honey locust
+honey lotus
+honey maker
+honey making
+honey mesquite
+honey moth
+honey mushroom
+honey palm
+honey plant
+honey ratel
+honey sac
+honey-secreting
+honey-stalks
+honey-steeped
+honey-stored
+honey-storing
+honeysuckle apple
+honeysuckle clover
+honeysuckle family
+honeysuckle grass
+honeysuckle ornament
+honeysuckle tree
+honey-tasting
+honey-tongued
+honey tree
+honey tube
+honey vine
+honey-voiced
+honey weasel
+honey whip
+honey yellow
+honey-yielding
+honky-tonk
+honor-fired
+honor-giving
+honor man
+honor medal
+honor-owing
+honor point
+honor price
+honor roll
+honor system
+honor-thirsty
+hood clock
+hood-crowned
+hooded barley
+hooded grass
+hooded matweed
+hood end
+hoodie crow
+hood molding
+hood-shaped
+hoof-cast
+hoof-cut
+hoof-plowed
+hoof-printed
+hoof-shaped
+hook-armed
+hook-backed
+hook-beaked
+hook-billed
+hook check
+hook climber
+hookem-snivey
+hooker-off
+hooker-on
+hooker-out
+hooker-over
+hooker-up
+hook gauge
+hook-handed
+hook-headed
+hook ladder
+hook money
+hook-nosed
+hook pin
+hook rug
+hook screw
+hook-shaped
+hook-shouldered
+hook slide
+hook-snouted
+hook spanner
+hook squid
+hook-tipped
+hookworm disease
+hook wrench
+hooky-crooky
+hoop ash
+hoop-back
+hoop bundler
+hoop-la
+hoop petticoat
+hoop pine
+hoop-shaped
+hoop shell
+hoop skirt
+hoop snake
+hoop tension
+hoop tree
+hoop willow
+hoop withe
+hootchy-kootchy
+hoot owl
+hoot toot
+hop-about
+hop aphid
+hop back
+hop borer
+hop clover
+hop dog
+hope chest
+hop flea beetle
+hop flour
+hop fly
+hop froth fly
+hop gland
+hop grub
+hop hornbeam
+hop jack
+hop kiln
+hop looper
+hop louse
+hop meal
+hop merchant
+hop mildew
+hop mold
+hop moth
+hop oil
+hopper-bottom car
+hopper car
+hopper closet
+hopper frame
+hopper salt
+hopper-shaped
+hop plant
+hop plant borer
+hop sack
+hop sacking
+hop-shaped
+hop tree
+hop trefoil
+hopvine moth
+hopvine thecla
+horehound motherwort
+horizon blue
+horizon glass
+horn alligator
+horn arrester
+horn bar
+hornbill cuckoo
+hornblende-gabbro
+hornblende schist
+horn bug
+horn chestnut
+horn die
+horned snake
+hornet comb
+hornet fly
+horn-eyed
+horn fly
+horn-footed
+horn gap
+horn knot
+horn lead
+horn-mad
+horn-madness
+horn ore
+horn poppy
+horn pout
+horn pox
+horn-shaped
+horny-fingered
+horny-fisted
+horny-hoofed
+horny-knuckled
+horny-nibbed
+horror-crowned
+horror-fraught
+horror-inspiring
+horror-loving
+horror-stricken
+horror-struck
+horror vacui
+horse aloes
+horse ant
+horse artillery
+horse bean
+horse-bitten
+horse block
+horse boat
+horse boot
+horse bot
+horse bow
+horse box
+horse chanter
+horse chestnut
+horse clipper
+horse coper
+horse courser
+horse dam
+horse dealer
+horse-dealing
+horse devil
+horse doctor
+horse-drawn
+horse drench
+horse driver
+horse duck
+horse elder
+horse emmet
+horse-eye
+horse-faced
+horse fiddle
+horseflesh ore
+horsefoot snipe
+horse gentler
+horse godmother
+horse gowan
+Horse-guardsman
+horse hoe
+horse-hour
+horse iron
+horse latitudes
+horse litter
+horse louse
+horse-loving
+horse mackerel
+horse master
+horse-matcher
+horse nop
+horse opera
+horse-owning
+horse pick
+horse plum
+horse post
+horsepower-hour
+horsepower-year
+horse race
+horse racer
+horse racing
+horse-radish
+horse railroad
+horse rake
+horse rasp
+horse rough
+horse savin
+horse scraper
+horse sense
+horseshoe bat
+horseshoe kidney
+horseshoe magnet
+horseshoe nail
+horseshoe-shaped
+horseshoe snake
+horse show
+horse sickness
+horse-taming
+horse thistle
+horse tick
+horse towel
+horse trade
+horse-trading
+horse trainer
+horse wrangler
+Hortense blue
+Hortense violet
+hose cart
+hose cock
+hose company
+hose duck
+hose grass
+hose hook
+hose jacket
+hose reel
+hose truck
+hospital fever
+hospital gangrene
+hospital light
+hospital lock
+hospital ship
+hospital station
+hospital steward
+hospital train
+hostess house
+hostess-ship
+host plant
+hot-air
+hot-blast
+hot-blast system
+hot-blooded
+hot-bloodedness
+hot-breathed
+hot-bright
+hot-broached
+hot cake
+hot chisel
+hot-cold
+hot-deck
+hot dog
+hot-drawn
+hot-dry
+hotel broker
+hotel lock
+hotel manager
+hotel rack
+hot-eyed
+hot-forged
+hot-galvanize
+hot-hoof
+hothouse lamb
+hot-humid
+hot iron
+hot-livered
+hot-mettled
+hot-mix
+hot-moist
+hot-punched
+hot rod
+hot-rolled
+hot seat
+hot-shot
+hot-spirited
+hot-stomached
+hot-swage
+hot-tempered
+hot trimmer
+hot-vulcanized
+hot-water fit
+hot wave
+hot well
+hot-windy
+hot-wire
+hot-wire meter
+hot-work
+hound-dog
+hound-marked
+hour angle
+hour bell
+hour book
+hour circle
+hourglass screw
+hourglass-shaped
+hourglass spider
+hourglass spring
+hourglass stomach
+hour hand
+hour line
+hour-long
+hour plate
+hour stroke
+hour watch
+hour wheel
+house agent
+house ant
+house barge
+house-cap
+house centipede
+house chambermaid
+house cleaner
+house crow
+house decorator
+house dog
+house dove
+house drain
+house dress
+house duty
+house farmer
+house flag
+house furnisher
+house furnishing
+house god
+house-headship
+household suffrage
+house holly fern
+house jobber
+house knacker
+house martin
+house mosquito
+house mouse
+house mover
+house moving
+house organ
+house painter
+house party
+house physician
+house place
+house-proud
+house-raising
+house snake
+house staff
+house steward
+house surgeon
+house tax
+house trap
+house trim
+house wagon
+house wrecker
+housing project
+hover fly
+hover hawk
+how come
+howgozit curve
+howling monkey
+hoyle shooting
+hub-band
+hub-bander
+hub-banding
+hubble-bubble
+hub borer
+hub-boring
+hub brake
+hub braking
+hub-deep
+hub driller
+hub odometer
+hub turner
+hub-turning
+hue cycle
+huff-duff
+huff-shouldered
+huge-armed
+huge-bellied
+huge-bodied
+huge-boned
+huge-built
+huge-grown
+huge-horned
+huge-jawed
+huge-limbed
+huge-looking
+huge-proportioned
+huge-tongued
+hull insurance
+hull-less
+hull-less oat
+human-headed
+humble-looking
+humble-mannered
+humble-minded
+humble-mindedly
+humble-mindedness
+humble-spirited
+humble-visaged
+humbug-proof
+humero-olecranal
+humidity-proof
+humite group
+hummel corn
+hum note
+humpbacked salmon
+hump-shaped
+hump-shouldered
+humpty-dumpty
+Humpty dumpty
+hump yard
+hundred-dollar
+hundred-eyed
+hundred-feathered
+hundred-footed
+hundred-handed
+hundred-headed
+hundred-leaf
+hundred-leaved
+hundred-legged
+hundred-legs
+hundred-mile
+hundred-percenter
+hundred-pound
+hundred-pounder
+hundred-year
+Hungary blue
+Hungary leather
+Hungary water
+hunger belt
+hunger-bit
+hunger-bitten
+hunger-driven
+hunger grass
+hunger-mad
+hunger march
+hunger marcher
+hunger-pressed
+hunger-stricken
+hunger strike
+hunger striker
+hunger-stung
+hunger-worn
+hungry rice
+hung-up
+hunky-dory
+hunting cap
+hunting case
+hunting dog
+hunting ground
+hunting horn
+hunting knife
+hunting lodge
+hunting shirt
+hurdle race
+hurdle racer
+hurdle work
+hurdy-gurdist
+hurdy-gurdy
+hurly-burly
+hurr-bur
+hurricane bird
+hurricane deck
+hurricane-decked
+hurricane globe
+hurricane house
+hurricane lamp
+hurricane-proof
+hurricane signal
+hurry-burry
+hurry call
+hurry-scurry
+hurry-up
+hurst beech
+hush-hush
+hush money
+hush puppy
+hush ship
+hush shop
+hush tube
+husk corn
+husking bee
+husking glove
+husking peg
+husk tomato
+hustings court
+hutch table
+hutia carabali
+hutia conga
+hut-keep
+hut-shaped
+hyacinth bacteriosis
+hyacinth bean
+hyacinth blue
+hyacinth-flowered
+hyacinth red
+hyacinth squill
+hyacinth violet
+Hy-brasil
+hydatid mole
+Hydra-headed
+hydrangea blue
+hydrargyri subchloridum
+Hydra-tainted
+hydro-airplane
+hydrocarbon cement
+hydrogen arsenide
+hydrogen bomb
+hydrogen bromide
+hydrogen chloride
+hydrogen cyanide
+hydrogen dioxide
+hydrogen electrode
+hydrogen fluoride
+hydrogen iodide
+hydrogen ion
+hydrogen oxide
+hydrogen peroxide
+hydrogen selenide
+hydrogen silicide
+hydrogen sulphide
+hydrogen telluride
+hydromellitic acid
+hydrometric pendulum
+hydrophobia cat
+hydrotelluric acid
+hydro-ureter
+hydroxy acid
+hydroxybenzoic acid
+hydroxysuccinic acid
+hyena poison
+hymn-loving
+hymn maker
+hymn making
+hymn singer
+hymn singing
+hymn tune
+hymn writer
+hymn writing
+hyodeoxycholic acid
+hyodesoxycholic acid
+Hyper-calvinism
+Hyper-calvinist
+Hyper-calvinistic
+Hyper-dorian
+hyperemesis gravidarum
+hyperesthesia theory
+Hyper-ionian
+Hyper-jacobean
+Hyper-latinistic
+Hyper-lydian
+Hyper-phrygian
+Hyper-romantic
+Hyper-uranian
+hypo-alum
+hypoantimonic acid
+hypocotyl arch
+hypocrite plant
+hypodynamia cordis
+hypophysis cerebri
+hypothetico-disjunctive
+hyson skin
+hyssop-leaved
+hyssop loosestrife
+hyssop oil
+hyssop skullcap
+hyssop spurge
+hyssop violet
+hysteresis coefficient
+hysteresis meter
+hysteria-proof
+hystero-epilepsy
+hystero-epileptic
+hystero-epileptogenic
+hysteron proteron
+hystero-oophorectomy
+hystero-salpingostomy
+Ibero-aryan
+Ibero-celtic
+Ibero-insular
+Ibero-pictish
+I-bunga
+ice age
+ice anchor
+ice apron
+ice ax
+ice bag
+ice banner
+ice barrier
+ice beam
+ice bear
+ice belt
+iceberg lettuce
+ice bird
+ice-blind
+ice-breaking
+ice bridge
+ice-brook
+ice-built
+ice calorimeter
+ice canoe
+ice-capped
+ice cave
+ice chest
+ice chipper
+ice-chipping
+ice chopper
+ice-clad
+ice claw
+ice-cold
+ice collar
+ice color
+ice concrete
+ice-cooled
+ice-covered
+ice cream
+ice-cream cone
+ice-cream fork
+ice-cream freezer
+ice-cream soda
+ice creeper
+ice crusher
+ice-crushing
+ice-crusted
+ice crystal
+ice cuber
+ice-cubing
+ice cutter
+ice-cutting
+ice dealer
+ice dike
+iced-tea spoon
+ice duck
+ice-enveloped
+ice feathers
+ice fern
+ice field
+ice fishing
+ice floe
+ice flower
+ice foot
+ice fork
+ice fox
+ice-free
+ice front
+ice glass
+ice gorge
+ice-green
+ice gull
+ice gush
+ice hockey
+ice hook
+ice-imprisoned
+ice jam
+ice-laid
+ice lance
+Iceland crystal
+Iceland dog
+Iceland falcon
+Iceland gull
+Iceland lichen
+Iceland moss
+Iceland poppy
+Iceland sea grass
+Iceland spar
+ice lead
+ice line
+ice-locked
+ice machine
+ice maker
+ice making
+ice master
+ice nail
+ice needle
+ice pack
+ice paper
+ice partridge
+Ice patrol
+ice period
+ice petrel
+ice pick
+ice pillar
+ice pilot
+ice pink
+ice plant
+ice plow
+ice point
+ice raft
+ice river
+ice run
+ice scraper
+ice shaver
+ice shed
+ice sheet
+ice ship
+ice sky
+ice spar
+ice spur
+ice stick
+ice storm
+ice stream
+ice ton
+ice tongs
+ice water
+ice whale
+ice yacht
+ice yachting
+ice yachtsman
+ichneumon fly
+icterus index
+Idaho cedar
+Idaho white pine
+idee-force
+identification mark
+identification tag
+identity matrix
+ideo-unit
+idiomorphic-granular
+idiot stitch
+idle-brained
+idle-handed
+idle-looking
+idle-minded
+idle-pated
+idle-witted
+idonic acid
+if-clause
+ife hemp
+I girder
+ignition cap
+ignition charge
+ignition tube
+I-ism
+ikrar-namah
+ilang-ilang
+ileo-ileostomy
+ilio-inguinal
+iliotibial band
+ill-according
+ill-accoutered
+ill-accustomed
+ill-achieved
+ill-acquired
+ill-acted
+ill-adapted
+ill-adventured
+ill-advised
+ill-advisedly
+ill-affected
+ill-affectedly
+ill-affectedness
+ill-agreeable
+ill-agreeing
+ill-annexed
+ill-armed
+ill-arranged
+ill-assimilated
+ill-assorted
+Illawarra ash
+Illawarra pine
+ill-balanced
+ill-befitting
+ill-begotten
+ill-behaved
+ill-being
+ill-beseeming
+ill-bested
+ill blood
+ill-boding
+ill-born
+ill-borne
+ill-breathed
+ill-bred
+ill breeding
+ill-built
+ill-calculating
+ill-cared
+ill-celebrated
+ill-cemented
+ill-chosen
+ill-clad
+ill-cleckit
+ill-coined
+ill-colored
+ill-come
+ill-comer
+ill-composed
+ill-concealed
+ill-conceived
+ill-concerted
+ill-conditioned
+ill-conditionedness
+ill-conducted
+ill-considered
+ill-consisting
+ill-contented
+ill-contenting
+ill-contrived
+ill-cured
+ill-customed
+ill-deedy
+ill-defined
+ill-digested
+ill-directed
+ill-disposed
+ill-disposedness
+ill-dissembled
+ill-doing
+ill-done
+ill-drawn
+ill-dressed
+ill-effaceable
+ill-erected
+ill-famed
+ill-fardeled
+ill-faring
+ill-faringly
+ill-fashioned
+ill-fated
+ill-favored
+ill-favoredly
+ill-favoredness
+ill-featured
+ill-fed
+ill-fitted
+ill-fitting
+ill-foreseen
+ill-formed
+ill-founded
+ill-friended
+ill-furnished
+ill-gendered
+ill-given
+ill-got
+ill-gotten
+ill-governed
+ill-greeting
+ill-grounded
+ill-hap
+ill-headed
+ill-health
+ill house
+ill-housed
+ill-humor
+ill-humored
+ill-humoredly
+ill-humoredness
+ill-informed
+Illinois gooseberry
+Illinois nut
+ill-invented
+illipe butter
+ill-joined
+ill-judge
+ill-judged
+ill-judging
+ill-kept
+ill-knotted
+ill-less
+ill-lighted
+ill-limbed
+ill-lit
+ill-lived
+ill-looking
+ill-lookingness
+ill-made
+ill-manageable
+ill-managed
+ill-mannered
+ill-manneredly
+ill-manneredness
+ill-mannerly
+ill-matched
+ill-mated
+ill-meant
+ill-met
+ill-minded
+ill-mindedly
+ill-mindedness
+ill-natured
+ill-naturedly
+ill-naturedness
+ill-neighboring
+ill-noised
+ill-nurtured
+ill-observant
+ill-occupied
+ill-omened
+ill-paid
+ill-perfuming
+ill-persuaded
+ill-placed
+ill-pleased
+ill-proportioned
+ill-qualified
+ill-regulated
+ill-requite
+ill-requited
+ill-resounding
+ill-roasted
+ill-ruled
+ill-satisfied
+ill-savored
+ill-scented
+ill-seasoned
+ill-seen
+ill-set
+ill-smelling
+ill-sorted
+ill-sounding
+ill-spent
+ill-spun
+ill-starred
+ill-strung
+ill-succeeding
+ill-suiting
+ill-supported
+ill-tasted
+ill-taught
+ill-tempered
+ill-temperedly
+ill-temperedness
+ill-timed
+ill-tongued
+ill-treat
+ill-treated
+ill-treater
+ill-treatment
+ill-tuned
+ill-turned
+illuminating engineer
+illuminating engineering
+illuminating gas
+illuminating oil
+illuminating projectile
+ill-understood
+illupi oil
+ill-usage
+ill-use
+illusion-proof
+ill-ventilated
+ill-weaved
+ill-wedded
+ill-willed
+ill-willer
+ill-willie
+ill-willing
+ill-willy
+ill-wish
+ill-wisher
+ill-won
+ill-worded
+ill-written
+ill-wrought
+ill-yoked
+Illyric-anatolian
+image breaker
+image-breaking
+image space
+image worship
+imaginal bud
+imaginal disk
+imaginal type
+imagination-proof
+Imari ware
+imbibition process
+imide chloride
+imino ester
+imitation-proof
+imitation vermillion
+immersion foot
+immersion lens
+immunity theory
+imou pine
+impact pressure
+impact test
+impact theory
+impedance coil
+impedance component
+impedance drop
+impedance ratio
+impedient impediment
+implantation cone
+import credit
+impost block
+imp-pole
+improvement lease
+improvement purchase
+impulse excitation
+impulse face
+impulse movement
+impulse transformer
+in alt
+in altissimo
+in-and-outer
+Inauguration day
+in-between
+in-book
+Inca bone
+Inca dove
+in-calf
+incasement theory
+incense boat
+incense burner
+incense cedar
+incense juniper
+incense shrub
+incense tree
+incense wood
+inch-deep
+inch-high
+inch-long
+inch plant
+inch-pound
+inch rule
+inch-thick
+inch-ton
+inch-wide
+incisor foramen
+in-clearer
+in-clearing
+in-clerk
+inclination compass
+inclinatory needle
+inclusion body
+income account
+income basis
+income bond
+income sheet
+income tax
+in-co-ordinate
+in-co-ordinated
+in-co-ordination
+increase twist
+increment borer
+incubator bird
+in curve
+indanthrene blue
+inde blue
+indemnity bond
+Independence day
+Independence hall
+index bar
+index center
+index correction
+index crank
+index error
+Index expurgatorius
+index finger
+index forest
+index fossil
+index glass
+index hand
+index head
+index notation
+index number
+index per cent
+index pin
+index plane
+index plate
+index sector
+India berry tree
+India buff
+India-cut
+India drugget
+India gall
+India gum
+India ink
+India malacca
+India matting
+India muslin
+Indian agency
+Indian agent
+Indiana limestone
+Indian blanket
+Indian bread
+Indian bridle
+Indian gift
+Indian giver
+Indian-meal moth
+Indian pinkroot
+India paper
+India pepper
+India pink
+India proof
+India rubber
+India-rubber tree
+India-rubber vine
+India scrim
+India shawl
+India silk
+India tan
+India tea
+India tint
+indicator card
+indicator plant
+indicator telegraph
+indignation-proof
+indigo auxiliary
+indigo-bearing
+indigo bird
+indigo blue
+indigo broom
+indigo brown
+indigo bunting
+indigo bush
+indigo carmine
+indigo copper
+indigo-dyed
+indigo dyer
+indigo extract
+indigo grinder
+indigo-grinding
+indigo maker
+indigo plant
+indigo printing
+indigo-producing
+indigo snake
+indigo thorn
+indigo weed
+indigo white
+indigo-yielding
+in-dimension
+Indo-afghan
+Indo-african
+Indo-aryan
+Indo-australian
+Indo-british
+Indo-briton
+Indo-burmese
+Indo-celtic
+Indo-chinese
+Indo-dutch
+Indo-egyptian
+Indo-english
+Indo-european
+Indo-europeanist
+Indo-french
+Indo-gangetic
+Indo-german
+Indo-germanic
+Indo-greek
+Indo-hellenistic
+Indo-hittite
+Indo-iranian
+Indo-malayan
+Indo-malaysian
+Indo-mohammedan
+Indo-oceanic
+Indo-pacific
+Indo-portuguese
+Indo-saracenic
+Indo-scythian
+Indo-spanish
+Indo-sumerian
+Indo-teutonic
+inductance coil
+inductance factor
+induction balance
+induction bridge
+induction coil
+induction compass
+induction furnace
+induction generator
+induction instrument
+induction machine
+induction meter
+induction regulator
+induction top
+inductor alternator
+inductor compass
+inductor generator
+industrial school
+inertia ellipsoid
+inertia governor
+inertia transmission
+I-ness
+inextensive deformation
+infant school
+infection hypha
+infection period
+infection thread
+inferiority complex
+infield fly
+infiltration vein
+infinito-absolute
+infinito-infinitesimal
+infinity plug
+inflationist period
+inflection point
+influence machine
+infra-anal
+infra-angelic
+infra-auricular
+infra-axillary
+infra dig
+infra dignitatem
+infra-esophageal
+Infra-lias
+infra praesidia
+infra-umbilical
+infusion process
+ingle-bred
+ingle cheek
+in-goal
+ingot chipper
+ingot cutter
+ingot forger
+ingot heater
+ingot iron
+ingot lathe
+ingot maker
+ingot weigher
+ingrain carpet
+in-group
+inheritance tax
+injection-gneiss
+injury-proof
+ink bag
+ink ball
+ink black
+ink-blurred
+ink bottle
+ink bottler
+ink cap
+ink-carrying
+ink-colored
+ink disease
+ink-distributing
+ink-dropping
+ink eraser
+ink fountain
+ink gall
+ink grinder
+ink knife
+ink malady
+ink marble
+ink mixer
+ink mushroom
+in-knee
+in-kneed
+ink nut
+ink plant
+ink printer
+ink roller
+ink sac
+ink-slab
+ink-spotted
+ink-stained
+ink-wasting
+ink-writing
+ink-written
+inland waters
+in-law
+in-lean
+in-line engine
+in-lot
+in-marriage
+in-migrant
+in-migrate
+in-migration
+innovation-proof
+in-off
+inositol-hexaphosphoric
+in-plant
+in-quarto
+in-sail
+insanity-proof
+insect bed
+insect flower
+insect lime
+insect orchis
+insect powder
+insect wax
+in-service
+inside-out
+in so far
+in solido
+in solidum
+insolvency statute
+insomnia-proof
+inspection gauge
+inspector general
+installment mortgage
+installment plan
+installment selling
+instance court
+instance side
+instruction card
+instruction-proof
+instrument board
+instrument flight
+instrument flying
+instrument landing
+instrument transformer
+insulation resistance
+insurance adjuster
+insurance agent
+insurance auditor
+insurance broker
+insurance canvasser
+insurance clerk
+insurance collector
+insurance company
+insurance examiner
+insurance messenger
+insurance patrol
+insurance reserve
+insurance salesman
+insurance solicitor
+insurance tester
+insurance traveler
+insurance underwriter
+intaglio printing
+intake valve
+integrable group
+integral calculus
+integral cover
+integral curvature
+integral cylinder head
+integral equation
+integral function
+integral photography
+integral unit
+integral whole
+intelligence bureau
+intelligence office
+intelligence officer
+intelligence quotient
+intelligence test
+Inter-american
+Inter-andean
+interesse termini
+interest lottery
+Inter-european
+interference color
+interference figure
+interference fit
+interference pattern
+interference phenomenon
+interference-proof
+interference spectrum
+interim certificate
+interim dividend
+Inter-imperial
+interior decorator
+interior planet
+interior point
+interior polygon
+interior side
+interior slope
+interjection point
+interline rate
+intermedio-lateral
+internal-combustion
+internal medicine
+international-minded
+inter-plane
+interpretation clause
+interrogation point
+intersection locus
+inter-varsity
+intervertebral substance
+in-to-out
+intra-abdominal
+intra-abdominally
+intra-acinous
+intra-alveolar
+intra-appendicular
+intra-arachnoid
+intra-arterial
+intra-articular
+intra-atomic
+intra-atrial
+intra-aural
+intra-auricular
+intracranial cast
+intra-mercurial
+intransitive relation
+intra-urban
+intra-urethral
+intra-uterine
+intra-vitam
+inversion point
+inversion temperature
+inverting telescope
+invert soap
+investment bank
+investment banker
+investment banking
+investment bill
+investment broker
+investment credit
+investment reserve
+investment trust
+involute-leaved
+inward-flow turbine
+Iodeosin b
+iodine absorption
+iodine bush
+iodine pentoxide
+iodine scarlet
+iodine value
+iodine weed
+iodobehenic acid
+Io moth
+Ione formation
+ion exchange
+ionization constant
+ionization current
+iota subscript
+ipecac spurge
+ippi-appa
+ipse dixit
+I-railed
+Irano-semite
+iridium black
+iris blue
+iris diaphragm
+iris family
+iris green
+Irish-american
+Irish-born
+Irish-bred
+Irish-canadian
+Irish-english
+Irish-gaelic
+Irish-grown
+Irish-speaking
+iris mauve
+iris stop
+Irob-saho
+Iron age
+iron alum
+iron bacteria
+iron-banded
+ironbark acacia
+ironbark box
+iron-barred
+iron-black
+iron blue
+iron-blue dun
+iron-blue spinner
+iron-boweled
+iron-braced
+iron-branded
+iron brown
+iron buff
+iron bullet
+iron-burnt
+iron-calked
+iron calker
+iron-capped
+iron carbide
+iron carbonate
+iron-cased
+iron caster
+iron cement
+iron chloride
+iron citrate
+iron clay
+iron-clenched
+iron-coated
+iron coating
+iron-colored
+iron concrete
+iron-cored
+iron corer
+iron-core transformer
+iron curtain
+iron discharger
+iron dog
+iron-enameled
+ironer-up
+iron-faced
+iron family
+iron-fastened
+iron filing
+iron fitter
+iron-forged
+iron forger
+iron founder
+iron foundry
+iron-free
+iron glance
+iron-gloved
+iron grass
+iron-grated
+iron gray
+iron-guarded
+iron gum
+iron-hard
+iron heater
+iron-heeled
+iron-hooped
+iron hydroxide
+ironing board
+iron-jawed
+iron-jointed
+iron-knotted
+iron-lined
+iron liquor
+iron loss
+iron lung
+iron-man
+iron manufacturer
+iron-marked
+iron-mine
+iron miner
+iron mining
+iron minium
+iron-mold
+iron molder
+iron-mooded
+iron-nailed
+iron-nerved
+iron oak
+iron ore
+iron oxide
+iron-oxide red
+iron-pated
+iron planer
+iron plate
+iron plater
+iron prospector
+iron protosulphate
+iron puddler
+iron putty
+iron pyrites
+iron-railed
+iron ration
+iron red
+iron-ribbed
+iron-riveted
+iron roller
+iron roofer
+iron sand
+iron scale
+iron-sceptered
+iron scrap
+iron shearer
+iron-sheathed
+iron-souled
+iron spinel
+iron-spotted
+iron-stained
+iron stand
+ironstone china
+iron-strapped
+iron stretcher
+iron-studded
+iron sulphate
+iron sulphide
+iron-tipped
+iron-tired
+iron-toothed
+iron tree
+iron trimmer
+iron-vane meter
+iron-visaged
+iron-willed
+iron-winged
+iron-witted
+iron-worded
+iron yellow
+irony-proof
+irrigation engineer
+irrigation engineering
+irritation-proof
+Irtysh ostyak
+Ish-bosheth
+I-ship
+ising-star
+island-belted
+island-born
+Island carib
+island-contained
+island continent
+island-dotted
+island-strewn
+island-studded
+island universe
+isolation hospital
+iso-octane
+isopropyl alcohol
+iso-urea
+iso-uretine
+iso-uric
+isoxylic acid
+Italian school
+Italo-austrian
+Italo-byzantine
+Italo-celt
+Italo-classic
+Italo-grecian
+Italo-greek
+Italo-hellenic
+Italo-hispanic
+Italo-serb
+Italo-slav
+Italo-swiss
+Italo-turkish
+itch louse
+itch mite
+itch tree
+itchwood tree
+ivory-backed
+ivory-beaked
+ivory-billed
+ivory bleacher
+ivory board
+ivory-bound
+ivory brown
+ivory carver
+ivory carving
+ivory cutter
+ivory engraver
+ivory-faced
+ivory-finished
+ivory fluter
+ivory gull
+ivory-hafted
+ivory-handled
+ivory-headed
+ivory-hilted
+ivory hunter
+ivory hunting
+ivory nut
+ivory palm
+ivory paper
+ivory plant
+ivory plum
+ivory polisher
+ivory porcelain
+ivory rounder
+ivory slabber
+ivory sorter
+ivory-studded
+ivory-tinted
+ivory-toned
+ivory tree
+ivory-white
+ivory-wristed
+ivory yellow
+ivy bush
+ivy green
+ivy gum
+ivy tree
+jaal goat
+Jablochkoff candle
+Jablochkoff lamp
+jacaranda brown
+jacitara palm
+jack-a-dandy
+jack-a-dandyism
+jackal buzzard
+Jack-a-lent
+jack arch
+jackass bark
+jackass clover
+jackass copal
+jackass deer
+jackass fish
+jackass hare
+jackass kingfisher
+jackass penguin
+jackass rig
+jackass-rigged
+jack baker
+jack bean
+jack block
+jack boot
+jack-booted
+jack bowl
+jack chain
+jack crosstrees
+jack crow
+jack curlew
+jack dog
+jacket crown
+Jackfield ware
+Jack-fool
+jack fruit
+jack head
+jackhead pit
+jack hern
+jack ladder
+jack lagging
+jack lamp
+jack lantern
+jack light
+jack line
+Jack mormon
+Jack nasty
+jack nicker
+jack oak
+jacko bush
+jack-o-lantern
+jack pigeon
+jack pin
+jack pine
+jack pit
+jack plane
+jack plum
+jack post
+jack pot
+jack press
+jack rabbit
+jack rafter
+jack rib
+jack roll
+jack rope
+Jack rose
+jack saddle
+jack salmon
+jack shave
+Jackson vine
+jack-spaniard
+jack spinner
+jack spring
+jack staff
+jack stop
+jack stretcher
+jack stringer
+jack-tar
+jack timber
+jack towel
+jack tree
+jack truss
+jack worm
+jack yard
+jack-yarder
+jacky winter
+jade green
+jag bolt
+jagged-toothed
+jagger spring
+jaggery palm
+jagging iron
+jag spear
+jag spike
+jail delivery
+jail fever
+jalee work
+jamb shaft
+jam nut
+jam-pack
+jam riveter
+jam session
+jam weld
+janca tree
+jangada fiber
+jangada tree
+Janizary music
+Janus-face
+Janus-faced
+janus geminus
+Janus-headed
+japan drier
+japanic acid
+jara-assu
+jar-burial
+jargon aphasia
+jar-owl
+jasper gray
+jasper green
+jasper opal
+jasper pink
+jasper red
+jasper ware
+jaundice berry
+jaundice tree
+Java almond
+Java canvas
+Java coca
+Java cotton
+Javel green
+javelin bat
+javelin man
+jaw bit
+jaw clutch
+jaw coupling
+jaw-cracking
+jaw crusher
+jaw jerk
+jaw-locked
+jaw rope
+jaw slide
+jaw-tied
+jaw-twister
+jaw wrench
+jay bird
+jay blue
+jay teal
+jazz stick
+jealous-hood
+jealous-pated
+jealousy-proof
+jecoric acid
+jeer capstan
+Jeffrey pine
+jejuno-colostomy
+jejuno-ileostomy
+jejuno-jejunostomy
+jelly bag
+jelly bean
+jelly boiler
+jelly lichen
+jelly nut
+jelly plant
+jelly poke
+jelly powder
+jelly roll
+Jemlah goat
+jennie harp
+jenny ass
+jenny cutthroat
+jenny howlet
+jenny scaffold
+jenny winch
+Jenny wood
+jenny wren
+jeopardy assessment
+jerboa kangaroo
+jerboa mouse
+jerboa rat
+jerkin-head
+jerk pump
+jerry-build
+jerry-builder
+jerry hat
+jerry shop
+Jersey centaury
+Jersey cloth
+Jersey cream
+Jersey elm
+Jersey fir
+Jersey lightning
+Jerusalem artichoke
+Jerusalem cherry
+Jerusalem corn
+Jesuit bark
+Jesuit berry
+Jesuit style
+Jesus bug
+Jesus day
+jet airplane
+jet-black
+jet break
+jet coal
+jet engine
+jet interrupter
+jet motor
+jet-pile
+jet plane
+jet-propelled
+jet propeller
+jet propulsion
+jet pump
+jet rock
+Jew-bait
+Jew-baiter
+jew crow
+jewel block
+jewel-bright
+jewel-colored
+jewel-enshrined
+jewel-gleaming
+jewel-headed
+jewel-loving
+jewel-proof
+jewel-studded
+jewelweed family
+Jew lizard
+Jew monkey
+jew nail
+Jew plum
+jib boom
+jib crane
+jib door
+jib guy
+jib-headed
+jib-header
+jib iron
+jib netting
+jib-o-jib
+jib pole
+jib sheet
+jib topsail
+jib traveler
+jig-back
+jig borer
+jig brow
+jig bushing
+jig button
+jig-drill
+jig-file
+jigger boom
+jigger mast
+jigger pump
+jigger saw
+jigger weed
+jiggery-pokery
+jig indicator
+jig-jig
+jig-jog
+jig-joggy
+jigog ring
+jig saw
+jigsaw puzzle
+Jim crow
+Jim crowism
+jim-dandy
+jingle bell
+jingle shell
+jingle stick
+jinny road
+job analysis
+job card
+job font
+job lot
+job order
+job press
+job printer
+job printing
+job ticket
+job type
+job watch
+jockey backstay
+jockey bar
+jockey boot
+jockey box
+jockey cap
+jockey club
+jockey coat
+jockey gear
+jockey pulley
+jockey weight
+jockey wheel
+jock strap
+jo-darter
+Jodo-shu
+Joe miller
+Joe-millerism
+Joe-millerize
+joe-pye weed
+joe rocker
+joggle beam
+joggle piece
+joggle plating
+joggle post
+jog-jog
+jog trot
+John-apple
+John bull
+John-bullish
+John-bullism
+John-bullist
+John chinaman
+John doe
+John hancock
+John law
+Johnny darter
+Johnny jump
+Johnny verde
+joiner hardware
+joiner work
+joint account
+joint bar
+joint-bedded
+joint box
+joint chair
+joint clay
+joint filler
+joint fir
+joint gap
+joint grass
+joint hinge
+joint making
+joint pin
+joint rate
+joint runner
+joint rust
+joint sensation
+joint sense
+joint snake
+joint stock
+joint-stockism
+joint wire
+joking-relative
+jolly boat
+jolly jumper
+jonquil yellow
+joss flower
+joss house
+joss paper
+joss pidgin
+joss stick
+journal bearing
+journal box
+journal turbine
+journal voucher
+journey weight
+jouvence blue
+joy-bereft
+joy-bright
+joy-bringing
+joy-deserted
+joy-dispelling
+joy-encompassed
+joy-inspiring
+joy-killer
+joy-mixed
+joy powder
+joy-rapt
+joy-resounding
+joy ride
+joy rider
+joy riding
+joy stick
+joy-wrung
+Judaeo-arabic
+Judaeo-christian
+Judaeo-german
+Judaeo-persian
+Judaeo-spanish
+Judaeo-tunisian
+Judas candlestick
+Judas-ear
+Judas light
+Judas torch
+judex ordinarius
+judex pedaneus
+judge advocate
+judge delegate
+judge-made
+judge ordinary
+judgment book
+judgment cap
+judgment creditor
+judgment day
+judgment debt
+judgment debtor
+judgment hall
+judgment lien
+judgment note
+judgment-proof
+judgment rate
+judgment seat
+judgment summons
+jugal point
+jug-handle
+jug-jug
+jug plant
+juice pear
+jujube plum
+Julyflower grass
+jumbee bean
+jump ball
+jump bid
+jumper sled
+jumper stay
+jumper wire
+jump frog
+jump head
+jumping disease
+jumping-off-place
+jump joint
+jump-off
+jump ring
+jump rope
+jump saw
+jump scrape
+jump seat
+jump shot
+jump spark
+jump-spark coil
+jump stroke
+jump weld
+jump wire
+junction box
+June beetle
+June drop
+June grass
+June pink
+June sucker
+jungle bear
+jungle bendy
+jungle cat
+jungle-clad
+jungle cock
+jungle-covered
+jungle fever
+jungle fowl
+jungle green
+jungle hen
+jungle ox
+jungle rice
+jungle sheep
+jungle-traveling
+jungle-walking
+jungle-worn
+Junior league
+Junior leaguer
+juniper bay
+juniper berry
+juniper-berry oil
+juniper cedar
+juniper gum tree
+juniperic acid
+juniper oil
+juniper-tar oil
+juniper tree
+juniper webworm
+junk bottle
+junk collector
+junk dealer
+junk heap
+junk peddler
+junk ring
+junk shop
+junk yard
+Jura-trias
+Jura-triassic
+jury chancellor
+jury-fixer
+jury fixing
+jury-rigged
+jury-shy
+jury-squaring
+jury wheel
+justice box
+justice-dealing
+Justice general
+Justice-generalship
+justice-loving
+justice-proof
+justice seat
+justice-slighting
+jute board
+jute butts
+jute crusher
+jute opener
+jute tier
+juxta-ampullar
+juxta-articular
+kaawi yam
+Kabuli rupee
+Kaffir ant
+Kaffir boom
+Kaffir bread
+Kaffir chestnut
+kaffir corn
+Kaffir cotton
+kai-kai
+kaiser brown
+kaju apple
+kala azar
+kale brose
+kale gully
+kale runt
+kale worm
+kambing utan
+kamoot tree
+kanal rays
+kangaroo acacia
+kangaroo apple
+kangaroo bear
+kangaroo beetle
+kangaroo closure
+kangaroo court
+kangaroo feathers
+kangaroo grass
+kangaroo hare
+kangaroo jerboa
+kangaroo mouse
+kangaroo rat
+kangaroo vine
+kanya butter
+kanya tree
+kapok oil
+kapok tree
+Kara kalmuck
+Kara-kalpak
+Kara kirghiz
+karroo bush
+katsura tree
+kauri pine
+kauri resin
+Kaus australis
+Kaus borealis
+Kaus meridionalis
+kava gum
+Kazan tatar
+kedani fever
+kedani mite
+keekwilee-house
+keel-bully
+keeled snake
+keel line
+keel petal
+keel rope
+keelson rider
+keena nuts
+keen-biting
+keen-eared
+keen-edged
+keen-eyed
+keen-scented
+keen-sighted
+keen-witted
+keg fig
+keg spring
+kelp ash
+kelp crab
+kelp goose
+kelp gull
+kelp hen
+kelp pigeon
+kelp plover
+kelp raft
+kemiri nut
+kemp-haired
+keno goose
+kent cap
+kerat kamel
+kermes mineral
+kermes oak
+kernel smut
+kernel spot
+kestner plant
+ketch-rigged
+keto-enol isomerism
+keto form
+ketone alcohol
+ketone body
+ketone group
+kettle-bottom
+kettle-bottomed
+kettle hole
+kettle moraine
+kettle net
+kettle stitch
+kew tree
+key bed
+key bit
+key block
+key bolt
+key bugle
+key chord
+key-cold
+key desk
+key-drawing
+key drift
+key file
+key filer
+key frame
+key fruit
+key harp
+key holder
+keyhole limpet
+Keyhole nebula
+keyhole saw
+keyhole urchin
+key horizon
+key industry
+key line
+key man
+key money
+keynote address
+key pad
+key pattern
+key pin
+key pipe
+key plate
+key plug
+key ring
+key rocker
+key seat
+key-seat rule
+key sentence
+key signature
+key size
+key station
+Keystone state
+key stop
+key tone
+key trumpet
+keyway caliper
+keyway drill
+key word
+khaki bush
+khaki-clad
+khaki-clothed
+khaki-colored
+khaki-hued
+khaki weed
+Khas-kura
+kheu tree
+Khoi-khoin
+kiabooca wood
+kick-about
+kicking coil
+kicking-colt
+kicking-horses
+kicking strap
+kick plait
+kick plate
+kicksy-wicksy
+kick turn
+kick wheel
+Kidderminster carpet
+kid-glove
+kid-gloved
+kid-glove orange
+kidney bean
+kidney-bean tree
+kidney corpuscle
+kidney cotton
+kidney-leaved
+kidney liverleaf
+kidney oil
+kidney ore
+kidney-shaped
+kidney stone
+kidney vetch
+kidney worm
+kid point
+Kiffa australis
+Kiffa borealis
+kikuyu grass
+Kikuyu grass
+Kildare green
+Killarney fern
+Killarney green
+kill-courtesy
+kill-cow
+kill-devil
+killed bowl
+killed spirits
+killer whale
+killing bottle
+killing frost
+killing time
+kill-joy
+kill-kid
+kill-time
+kill-wart
+killy hawk
+Kilmarnock bonnet
+Kilmarnock willow
+kiln-burnt
+kiln-dried
+kiln-dry
+kiln evaporator
+kiln foreman
+kiln scum
+kilogram-calorie
+kilogram-meter
+kilovolt-ampere
+kilowatt-hour
+kim-kam
+kimono sleeve
+Kimura term
+kindling wood
+kind-mannered
+kinematic viscosity
+kinetic potential
+king auk
+king ball
+king bee
+king card
+king carp
+King charles spaniel
+king closer
+king clover
+king cobra
+king conch
+king crab
+king crow
+king devil
+kingdom come
+king eagle
+king eider
+king fern
+king leg
+king lory
+king mackerel
+king monkey
+king mullet
+king nut
+king ortolan
+king parakeet
+king penguin
+king plant
+king post
+king-post truss
+king quail
+king rail
+king-ridden
+king rod
+king row
+king salmon
+king-size
+king snake
+king sora
+king spoke
+king tody
+king truss
+king vulture
+Kinkozan ware
+Kipp generator
+kirby hook
+kirk master
+kirk session
+kirk-shot
+kirk skail
+kirn baby
+kirn cut
+kislar aga
+kissing bug
+kissing crust
+kissing dance
+kissing gate
+kissing strings
+kiss-me
+kiss-me-quick
+kitchen bob
+kitchen cabinet
+kitchen fee
+kitchen garden
+kitchen ground
+kitchen midden
+kitchen police
+kitchen rose
+kitchen servant
+kitchen space
+kitchen stuff
+kitchen work
+Kitchi-juz
+kite balloon
+kite bar
+kite eagle
+kite falcon
+kite sausage
+kite-tailed
+kite track
+kit fox
+kitten-breeches
+kitten moth
+kittly-benders
+kitty-cat
+kitty needy
+kitty witch
+kitty wren
+kit violin
+ki-yi
+Kizi-kumuk
+Kjeldahl digestion
+Kjeldahl flask
+Klamath weed
+klieg eyes
+klieg light
+K line
+klook-klook
+knapsack sprayer
+knee-bent
+knee bone
+knee-bowed
+knee brace
+knee-braced
+knee-breeched
+knee breeches
+knee colter
+knee-crooking
+knee-deep
+kneed grass
+knee drill
+knee grass
+knee halter
+knee-high
+knee holly
+knee holm
+knee jerk
+knee joint
+knee-jointed
+kneeling rafter
+knee pine
+knee plate
+knee puff
+knee punch
+knee rafter
+knee roof
+knee-shaking
+knee-shaped
+knee-sprung
+knee strap
+knee swell
+knee-tied
+knee timber
+knee tool
+knee viol
+knee-worn
+knife-backed
+knife bar
+knife bayonet
+knife-bladed
+knife box
+knife colter
+knife-edge
+knife-edged
+knife-featured
+knife file
+knife grass
+knife grinder
+knife-handle
+knife-jawed
+knife key
+knife lanyard
+knife money
+knife plait
+knife-plaited
+knife plaiting
+knife rest
+knife-shaped
+knife stone
+knife-stripped
+knife switch
+knife tool
+Kniffin system
+knifing tool
+knight adventure
+knight bachelor
+knight banneret
+knight baronet
+knight commander
+knight cross
+knight-errant
+knight-errantry
+knight-errantship
+knight grand commander
+knight grand cross
+knighthood-errant
+Knight hospitaler
+knight marshal
+knights adventurers
+knights bachelors
+knights bannerets
+knights baronets
+knights commanders
+knights-errant
+knight service
+knights grand commanders
+knights grand cross
+Knights hospitalers
+knights marshals
+Knights templars
+Knight templar
+knit goods
+knitting case
+knitting machine
+knitting needle
+knitting pin
+knitting sheath
+knitting stick
+knitting wire
+knob-billed
+knobbling fire
+knobcone pine
+knob latch
+knob lock
+knob-nosed
+knocker-off
+knocker-up
+knock-knee
+knock-kneed
+knock-me-down
+knock-on
+knockout drops
+knol-khol
+knop yarn
+knot bindweed
+knot clipper
+knot gall
+knotgrass spurge
+knot-jointed
+knot-jointed rice grass
+knot porter
+knot-portering
+knotroot grass
+knot stitch
+knotter bill
+knotter hook
+knot tier
+knotting bill
+knotty-leaved
+knotty-pated
+knotweed spurge
+know-all
+know-how
+know-it-all
+know-little
+know-nothing
+Know-nothingism
+know-nothingness
+Knox dolomite
+Knox system
+knuckle ball
+knuckle bow
+knuckle-deep
+knuckle-duster
+knuckle gear
+knuckle gearing
+knuckle guard
+knuckle joint
+knuckle-joint press
+knuckle-kneed
+knuckle line
+knuckle molding
+knuckle pin
+knuckle post
+knuckle timber
+knuckle tip
+knuckle tooth
+K o
+koa finch
+koda millet
+Kodiak bear
+Koettstorfer number
+Koh-i-noor
+Kohlrausch flask
+koi-kopal
+kokra wood
+kokum butter
+kokum oil
+kola nut
+koloa mapu
+koloa moha
+komma-ichi-da
+Konda vogul
+Konia-ladik
+konker tree
+Kordofan gum
+kosam seeds
+Kossuth hat
+Kottstorfer number
+Kottstorfer value
+kousso flower
+K radiation
+kraft paper
+Kralitz bible
+kraut grass
+K rays
+Kremnitz white
+Kremser white
+krems lead
+krenging hook
+Kriss kringle
+Krita yuga
+kriya-sakti
+kriya-shakti
+krym-saghyz
+K series
+K-shaped
+K star
+K-term
+K truss
+K-type star
+Kuan hua
+Kuan yin
+Kudur-lagamar
+kugel granite
+kujira shaku
+Kuki-chin
+Ku-klux
+Ku-klux act
+Ku-kluxer
+Ku-kluxism
+Ku-klux klan
+Ku klux klanner
+kung chih
+kung chin
+kung ching
+kung fen
+kungu cake
+Kunst-lied
+kuo-yu
+Kupffer cell
+kuping tael
+kurchee bark
+Kurume azalea
+kuteera gum
+kutira gum
+Kwakiutl nootka
+kwe-bird
+laap insect
+laap insects
+label stop
+laboratory animal
+laboratory apparatus
+laboratory assistant
+laboratory chemist
+laboratory course
+laboratory equipment
+laboratory experiment
+laboratory method
+laboratory technique
+laboratory test
+laboratory work
+laboratory worker
+labor bank
+labor caucus
+Labor charter
+Labor church
+Labor day
+labor exchange
+laboring oar
+Labor ministry
+labor pains
+Labor party
+labor turnover
+labor union
+labor value theory
+Labrador current
+Labrador dog
+Labrador duck
+Labrador feldspar
+Labrador herring
+Labrador jay
+Labrador pine
+Labrador retriever
+Labrador spar
+Labrador spruce
+Labrador tea
+Labrador violet
+Labrador whitefish
+labyrinth fish
+labyrinth packing
+lac dye
+lace-bordered
+lace bug
+lace coral
+lace-covered
+lace curtain
+lace-curtained
+lace-edged
+lace edging
+lace fern
+lace finisher
+lace-finishing
+lace fly
+lace-fronted
+lace glass
+lace grass
+lace lizard
+lace paper
+lace pigeon
+lace pillow
+lace plant
+lace stitch
+lace tree
+lace-trimmed
+lace trimming
+lace vine
+lace-winged
+lacewing fly
+Lachryma christi
+lachrymatory gas
+L acid
+lack-all
+lack-beard
+lack-brain
+lack-fettle
+lack-learning
+Lack-learning parliament
+lack-linen
+lack-love
+lack-pity
+lac lake
+lacquer red
+lacquer tree
+lacquer ware
+lac resin
+lacrosse stick
+lac sulphuris
+lac sumac
+lac tree
+lac virginis
+lac wax
+Lacy knot
+ladder-back
+ladder-backed
+ladder beetle
+ladder braid
+ladder chain
+ladder company
+ladder jack
+ladder road
+ladder shell
+ladder stitch
+ladder track
+ladder truck
+Ladd-franklin theory
+Ladenburg flask
+la-di-da
+Ladino clover
+ladle board
+Lady altar
+lady apple
+lady beetle
+Lady bell
+lady bracken
+lady brake
+lady chair
+Lady chapel
+lady court
+lady crab
+lady cracker
+Lady day
+Lady eve
+lady fern
+lady grass
+lady hair grass
+lady-killer
+lady-killing
+Lady mass
+lady mayoress
+Lady nicotine
+lady-of-the-night
+lady pea
+Lady psalter
+Lady quarter
+lady whin
+lady wrack
+Laetare sunday
+Lafayette formation
+La fleche
+La france noire
+lag-bed tractor
+lag bolt
+Lag bomer
+lager beer
+lag fault
+lagging load
+lag line
+Lagos bass
+Lagos ebony
+Lagos rubber
+La grande chartreuse
+Lagrima cristi
+lag screw
+Lahaina disease
+laid batonne
+laid embroidery
+laid paper
+laid wool
+laissez-faire
+Laissez faire
+laissez-faireism
+laissez passer
+Lake agassiz
+Lake algonquin
+lake basin
+lake bass
+lake-bound
+lake carp
+lake chub
+lake cress
+lake duck
+lake dweller
+lake dwelling
+lake fever
+lake fly
+lake front
+lake-girt
+lake herring
+lake lawyer
+lake minnow
+lake-moated
+lake perch
+lake pitch
+lake plover
+lake-reflected
+lake-resounding
+lake salmon
+lake shad
+lake sheepshead
+lake shore
+lake sturgeon
+lake-surrounded
+lake trout
+lake water cress
+lake whitefish
+Lake whittlesey
+Lambert pine
+lamb lily
+lamb mint
+lamb pie
+lamb plant
+lamb tail
+lame-born
+lame duck
+lame-footed
+lame-horsed
+lame-legged
+lamellar vector
+Lamotte sandstone
+lamp bearer
+lamp-bearing
+lamp-bedecked
+lamp-blown
+lamp-decked
+lamper eel
+lamp fitter
+lamp-foot
+lamp-heated
+lamp holder
+lamp-hour
+lamp house
+lamp-iron
+lamp jack
+lamp-lined
+lamp oil
+lamp oiler
+lamprey eel
+lamp shade
+lamp shell
+lamp socket
+lamp trimmer
+lamp-warmed
+Lanacyl violet b
+lana dye
+lance-acuminated
+lance-breaking
+lance bucket
+lance corporal
+lance-fashion
+lance head
+lance-headed snake
+lance-knight
+lance-leaved
+lance-linear
+lance-oblong
+lance-oval
+lance-ovate
+lance-pierced
+lance rest
+lance sergeant
+lance-shaped
+lance snake
+lancet arch
+lancet architecture
+lancet fish
+lance tooth
+lancet window
+lance-worn
+land agency
+land agent
+land bank
+land battleship
+land-born
+land-bred
+land breeze
+land bridge
+land broker
+land caltrop
+land-cast
+land certificate
+land chain
+land cod
+land crab
+land crake
+land cress
+land crocodile
+land-damn
+land-devouring
+land drake
+land dreadnought
+land dredge
+Land dyak
+land-eating
+land end
+land force
+land-gavel
+land girl
+land-girt
+land-grabber
+land-grabbing
+land grant
+land-grant bond
+land-grant college
+land-grant road
+land-horse
+land hunger
+land-hungry
+landing angle
+landing chair
+landing craft
+landing field
+landing force
+landing gear
+landing net
+landing party
+landing stage
+landing strake
+landing strip
+landing surveyor
+landing waiter
+land law
+land lead
+land league
+Land league
+Land-leaguer
+Land-leaguism
+land leech
+land mail
+land measure
+land-mere
+land-metster
+land mine
+land-obsessed
+land office
+land-office business
+land otter
+land pike
+land pirate
+land pitch
+land plaster
+land-poor
+land power
+land rail
+land rat
+land rock
+Landsborough grass
+land scale
+landscape architect
+landscape architecture
+landscape gardener
+landscape gardening
+landscape marble
+landscape mirror
+land scrip
+land scurvy
+land seal
+land service
+land settlement
+land shark
+land-sheltered
+land side
+land-slater
+land snail
+land sole
+land spring
+land station
+land steward
+land-surrounded
+land tax
+land-taxer
+land tie
+land tortoise
+land trash
+land trust
+land urchin
+land-visiting
+land warrant
+land wheel
+land wind
+land yard
+lane route
+lane snapper
+lang-kail
+lang lay
+lank-bellied
+lank-blown
+lank-cheeked
+lank-eared
+lank-haired
+lank-jawed
+lank-lean
+lank-sided
+lank-winged
+lantern bellows
+lantern carrier
+lantern clock
+lantern fish
+lantern flounder
+lantern fly
+lantern gear
+lantern gurnard
+lantern jack
+lantern jaw
+lantern-jawed
+lantern light
+lantern lily
+lantern pinion
+lantern shell
+lantern slide
+lantern sprat
+lantern wheel
+lanyard knot
+laparo-uterotomy
+lap box coupling
+lap-butted
+lap dissolve
+lap dog
+lap dovetail
+lap dovetailing
+lap game
+lapidary bee
+lapis lazuli
+lapis lazuli ware
+lap joint
+Laplace pressure
+Laplace station
+Laplacian distribution
+Lapland cornel
+Lapland longspur
+Lapland pine
+lap-lap
+La plata group
+lap-love
+lapped-butt joint
+lappet caterpillar
+lappet loom
+lappet moth
+lappet weaving
+lappet wheel
+lap plate
+lapp owl
+lap ring
+lap-rivet
+lap riveting
+lap robe
+Lapsang souchong
+lap shaver
+lap siding
+lap table
+lap weld
+lap winding
+lapwing gull
+Laramide system
+larboard watch
+larch agaric
+larch canker
+larch pine
+larch sawfly
+larch turpentine
+lardaceous degeneration
+lard compound
+larder beetle
+lard insect
+lard oil
+lard refiner
+lard stearin
+lard stone
+lard type
+lardy-dardy
+large-acred
+large-ankled
+large-bayed
+large-billed
+large-bodied
+large-boned
+large-bore
+large-bracted
+large-browed
+large-built
+large-caliber
+large-celled
+large-crowned
+large-diameter
+large-drawn
+large-eared
+large-eyed
+large-finned
+large-flowered
+large-footed
+large-framed
+large-fronded
+large-fruited
+large-grained
+large-grown
+large-handed
+large-handedness
+large-headed
+large-hipped
+large-horned
+large-leaved
+large-lettered
+large-limbed
+large-looking
+large-lunged
+large-minded
+large-mindedly
+large-mindedness
+large-molded
+large-natured
+large-necked
+large-nostriled
+large-petaled
+large-rayed
+large-scale
+large-scaled
+large-sized
+large-souled
+large-spaced
+large-stomached
+large-tailed
+large-thoughted
+large-throated
+large-toothed
+large-trunked
+large-type
+large-utteranced
+large-viewed
+large-wheeled
+large-wristed
+lariat loop
+lark bunting
+lark-colored
+lark finch
+lark-heel
+lark-heeled
+lark plover
+lark sparrow
+larspur violet
+laryngis stridulus
+lash comb
+lasso cell
+lasso harness
+lastage-free
+last-born
+last-cited
+last ditch
+last-ditcher
+last-erected
+last-made
+last maker
+last making
+last marin
+last-mentioned
+last-named
+last survivor annuity
+latch bolt
+latch locking
+latch needle
+late-begun
+late-betrayed
+late-blooming
+late-born
+late-built
+late-coined
+late-come
+late-comer
+late-cruising
+late-disturbed
+late-embarked
+lateen-rigged
+lateen sail
+late-filled
+late-flowering
+late-found
+late-imprisoned
+late-kissed
+late-lamented
+late-lingering
+late-lost
+late-met
+late-protracted
+late-ripening
+late-sacked
+latest-born
+late-taken
+late-transformed
+late-type star
+late-won
+latex paper
+lath-backed
+lath brick
+lath cutter
+lathe-bore
+lathe chuck
+lathing hammer
+lath-legged
+lath maker
+lath making
+lath nail
+lath nailer
+lath puncher
+lath splitter
+lath tier
+lath trimmer
+Latin-american
+latissimus dorsi
+latter-day
+lattice bar
+lattice beam
+lattice bridge
+lattice girder
+lattice moss
+lattice plant
+lattice-plant family
+lattice stitch
+lattice strut
+lattice truss
+laughing gas
+laughing muscle
+laughter-dimpled
+laughter-lighted
+laughter-lit
+laughter-loving
+laughter-provoking
+laughter-stirring
+launching ways
+launch-ways
+laundry soap
+laurel bay
+laurel-bearing
+laurel-browed
+laurel butter
+laurel camphor
+laurel cherry
+laurel-crowned
+laurel-decked
+laurel family
+laurel green
+laurel hawthorn
+laurel-leaf
+laurel-leaf oil
+laurel-leaved
+laurel-locked
+laurel oak
+laurel oil
+laurel pink
+laurel sumac
+laurel thyme
+laurel-worthy
+laurel-wreathed
+Laus deo
+lava-capped
+lava cone
+lava-lava
+lava-lit
+lava-paved
+lavender blue
+lavender-flowered
+lavender grass
+lavender oil
+lavender-scented
+lavender-tinted
+lavender water
+lave net
+law-abiding
+law-abidingness
+law agent
+law-beaten
+Law bible
+law binding
+law-borrow
+law-bred
+law buckram
+law-condemned
+law court
+law-fettered
+law-hand
+law-honest
+law-learned
+law-learnedness
+law-loving
+law-magnifying
+law member
+law merchant
+lawn billiards
+lawn green
+lawn meet
+lawn mower
+lawn pennywort
+lawn-sleeved
+lawn tennis
+law office
+law officer
+law-reckoning
+law-revering
+law-ridden
+law sakes
+law school
+law-worthy
+lawyer bush
+lawyer cane
+lawyer palm
+lawyer vine
+lax-flowered
+lay abbot
+lay baptism
+lay-by
+lay chalice
+lay-down
+layer board
+layer cake
+layer-on
+layer-out
+layer-over
+layer-up
+laying duck
+laying press
+laying top
+lay lord
+lay-minded
+lay-on
+layout chart
+lay-over
+Lay parliament
+lay shaft
+lay-up
+lazar house
+Lazarillo de tormes
+lazuli bunting
+lazy bar
+lazy crab
+lazy daisy stitch
+lazy guy
+lazy jack
+lazy painter
+Lazy susan
+lazy tongs
+L bar
+L block
+lead acetate
+lead acid cell
+lead arming
+lead arsenate
+lead ash
+lead azide
+lead-blue
+lead bullion
+lead-burn
+lead-burned
+lead-burner
+lead-burning
+lead carbonate
+lead-chamber process
+lead chloride
+lead chromate
+lead-clad
+lead-coated
+lead colic
+lead color
+lead-colored
+lead-covered
+lead curve
+lead dioxide
+leaded glass
+leaden-blue
+lead-encased
+leaden-colored
+leaden-eyed
+leaden flycatcher
+leaden-footed
+leaden-headed
+leaden-heeled
+leaden-hued
+leaden-natured
+leaden-paced
+leaden-skulled
+leaden-soled
+leaden-souled
+leaden-spirited
+leaden-thoughted
+leaden-weighted
+leaden-willed
+leaden-winged
+leaden-witted
+leader head
+leader pipe
+leader writer
+lead-filled
+lead glass
+lead gray
+lead-hardening
+lead-headed
+lead-in
+leading article
+leading bar
+leading block
+leading man
+leading wheel
+leading wind
+leading wire
+leading woman
+lead-lapped
+lead-lead
+lead line
+lead-lined
+lead-melting
+lead mill
+lead mining
+lead monoxide
+lead nitrate
+lead ocher
+lead-off
+lead oxide
+lead oxychloride
+lead palsy
+lead pencil
+lead peroxide
+lead poisoning
+lead-pulverizing
+lead rammer
+lead-ruled
+lead screw
+lead-sheathed
+lead-smelting
+lead soap
+lead spar
+lead sulphate
+lead sulphide
+lead-tempering
+lead tetraethyl
+lead tolerance
+lead tree
+lead vinegar
+lead vitriol
+lead weed
+leaf-bearing
+leaf beetle
+leaf bite
+leaf blade
+leaf blender
+leaf blight
+leaf-clad
+leaf-climbing
+leaf curl
+leaf-curl fungus
+leaf cutting
+leaf-eating
+leaf fall
+leaf-footed
+leaf-forming
+leaf-fringed
+leaf gold
+leaf-laden
+leaf-nose
+leaf-nosed
+leaf picker
+leaf-shaded
+leaf-shaped
+leaf-sheltered
+leaf sorter
+leaf spring
+leaf-strewn
+leaf stripper
+leafy-stemmed
+leaguer lass
+leakage coefficient
+leakage conductance
+leakage conductor
+leakage flux
+lean-cheeked
+lean-eared
+lean-face
+lean-faced
+lean-fleshed
+lean-headed
+lean-horned
+leaning thread
+leaning tower
+lean-jawed
+lean-limbed
+lean-looking
+lean-minded
+lean-necked
+lean-ribbed
+lean-souled
+lean-to
+lean-witted
+lea oak
+leap day
+leaping head
+leaping spider
+leaping weir
+leap year
+lear board
+lea rig
+leasehold insurance
+leasehold mortgage
+lease-lend
+lease rod
+lease system
+least flycatcher
+least squares
+leather-backed
+leather beetle
+leather-bound
+leather brown
+leather carp
+leather cloth
+leather-colored
+leather-covered
+leather-cushioned
+leather-cutting
+leather dresser
+leather enameler
+leather-faced
+leather fern
+leather-hard
+leather-headed
+leather-lined
+leather-necked
+leather-winged
+leave-taking
+Lebanon cedar
+led farm
+ledged door
+ledger bait
+ledger bark
+ledger blade
+ledum camphor
+lee anchor
+lee-bow
+leech-book
+leech rope
+leech worm
+leek green
+lee sheet
+lee shore
+lee tack
+lee wheel
+lee wheelsman
+left-bank
+left-brained
+left-eyed
+left-eyedness
+left-foot
+left-footed
+left-footedness
+left-hand
+left-handed
+left-handedly
+left-handedness
+left-hand engine
+left-hander
+left-handiness
+left-lay
+left-legged
+left-leggedness
+left-off
+left pedro
+left-sided
+left wing
+left-winger
+left-wingism
+legacy duty
+legalis homo
+leg art
+leg bail
+leg band
+leg before
+leg before wicket
+leg boot
+leg-breaker
+Legenda aurea
+leghorn straw
+Legion etrangere
+leg iron
+legitimate portion
+lego-literary
+leg stump
+leg trap
+leg viol
+Leicester red
+Leipzig yellow
+lekai salmon
+L electron
+lem-
+lemming mouse
+lemon balm
+lemon chrome
+lemon-color
+lemon-colored
+lemon cucumber
+lemon-faced
+lemon-flavored
+lemon grass
+lemon-grass oil
+lemon-green
+lemon lily
+lemon-scented
+lemon-scented gum
+lemon scurvy grass
+lemon-tinted
+lemon yellow
+Lemuel gulliver
+lending library
+lend-lease
+Leni-lenape
+leno brocade
+lens cell
+lens hood
+lens maker
+lens making
+lens-mount
+lens screen
+lens-shaped
+lenticulo-optic
+lentil tare
+lentil weevil
+Lent lily
+Leonine city
+leonine partnership
+leonine rhyme
+Leonine sacramentary
+Leonine verse
+leontiasis ossea
+leopard cat
+leopard flower
+leopard frog
+leopard lily
+leopard lionne
+leopard-man
+Le phoenix
+lepra arabum
+lepto-form
+lepto-type
+lerp insects
+lese majesty
+lesser star grass
+let-out
+letter avocatory
+letter bag
+letter board
+letter-bound
+letter carrier
+letter carver
+letter caster
+letter-copying
+letter cutter
+letter-duplicating
+letter engraver
+letter-erasing
+letter-fed
+letter file
+letter-folding
+letter founding
+letter foundry
+letter hand
+letter-high
+letter-learned
+letter learning
+letter lichen
+letter messenger
+letter name
+letter paper
+letter-perfect
+letter plant
+letter porter
+letter post
+letter press
+letter scales
+letters credential
+letters dimissory
+letters missive
+letter sorter
+letters overt
+letters pacifical
+letters patent
+letters rogatory
+letter stamper
+letters testamentary
+letter telegram
+letter weigher
+letter-winged
+letterwinged kite
+letter writer
+letter writing
+Letto-lithuanian
+Letto-slavic
+Letto-slavonic
+lettuce bird
+lettuce green
+lettuce mildew
+lettuce opium
+lettuce saxifrage
+leucite basalt
+leucite-basanite
+leucite-tephrite
+leuco base
+leucoturic acid
+leuna saltpeter
+Levant company
+Levant cotton
+Levant dollar
+Levantine dollar
+Levantine sponge
+Levant morocco
+Levant nut
+Levant red
+Levant soaproot
+Levant sponge
+Levant wormseed
+level-coil
+level crossing
+level curves
+leveling head
+leveling instrument
+leveling rod
+leveling screw
+leveling stand
+leveling support
+level-jawed
+level line
+level premium
+level staff
+level surfaces
+level-wind
+lever engine
+lever escapement
+lever safety valve
+lever scales
+lever shears
+lever tumbler
+lever watch
+levo camphor
+levo-pinene
+levy court
+lewis bolt
+lew-warm
+Leyden blue
+Leyden jar
+ley pewter
+L-head cylinder
+Lho-ke
+liability insurance
+liberal arts
+Liberal catholic
+Liber aniani
+Liber authenticarum
+liber cell
+Liber legum
+Liber sententiarum
+Liber sextus
+Liberty bell
+Liberty bond
+liberty cap
+liberty green
+liberty hall
+Liberty party
+liberty pole
+liberty tea
+liberty tree
+libra mayor
+library binding
+library case
+library edition
+Libri carolini
+Libri extra decretum
+Libyo-phoenician
+Libyo-teutonic
+Lican-antai
+license plate
+lich bird
+lichen-clad
+lichen-crusted
+lichen fungus
+lichen green
+lichen-grown
+lichen islandicus
+lichen-laden
+lichen tropicus
+lich fowl
+lich gate
+lich-house
+Li chi
+lich owl
+lich path
+lich stone
+lick-dish
+licker-in
+lickety-brindle
+lick-finger
+lick-foot
+licking disease
+licking stone
+lick-ladle
+Lick observatory
+lick-platter
+lick-spigot
+licorice fern
+licorice powder
+licorice root
+licorice sugar
+licorice vetch
+licorice vine
+licorice weed
+lid cell
+lid slit
+lie-abed
+lie-by
+lie detector
+lie-down
+liege man
+liege-manship
+liege poustie
+liege woman
+Liesegang rings
+lieue marine
+lieutenant colonel
+lieutenant-colonelcy
+lieutenant commander
+lieutenant general
+lieutenant governor
+lieutenant-governorship
+lieutenant junior grade
+life-abhorring
+life annuity
+life-bearing
+life-beaten
+life-begetting
+life belt
+life-bereft
+life breath
+life-breathing
+life-bringing
+life buoy
+life cast
+life-consuming
+life-creating
+life-crowded
+life cycle
+life-deserted
+life-destroying
+life-devouring
+life-diffusing
+life-ending
+life-enriching
+life-giver
+life-giving
+life guard
+life-guardsman
+life history
+life-hugging
+life-infatuate
+life-infusing
+life insurance
+life-invigorating
+life-lengthened
+life-lorn
+life-lost
+life-maintaining
+life-outfetching
+life-penetrated
+life-poisoning
+life-preserving
+life-prolonging
+life-quelling
+life-rendering
+life-renewing
+liferent escheat
+life-restoring
+life-sapping
+life-serving
+life-size
+life-sized
+life-spent
+life-sustaining
+life-sweet
+life-teeming
+life-thirsting
+life-tide
+life-timer
+life-weariness
+life-weary
+life-while
+life-worthy
+life-yielding
+lift bridge
+lifter rod
+lift gate
+lift hammer
+lifting bolt
+lifting bridge
+lifting day
+lifting eye
+lifting foot
+lifting head
+lifting irons
+lifting jack
+lifting plan
+lifting plate
+lift pump
+lift ram
+lift span
+lift tenter
+lift valve
+lift wall
+ligamentum nuchae
+lig-by
+light-adapted
+light air
+light-armed
+light baffle
+light battery
+light-bearded
+light-bellied
+light bob
+light-bodied
+light-borne
+light-bounding
+light box
+light-brained
+light bread
+light-built
+light-causing
+light-century
+light-charged
+light-cheap
+light-clad
+light-colored
+light-complexioned
+light-creating
+light curve
+light-diffusing
+light-disposed
+light-drab
+light-draft
+light-embroidered
+light equation
+lighter discharger
+lighter staff
+light-faced
+light filter
+light-fingered
+light-fingeredness
+light-foot
+light-footed
+light-footedly
+light-footedness
+light-gilded
+light-giving
+light-grasp
+light-grasping
+light-gray
+light-green
+light-haired
+light-handed
+light-handedness
+light harness
+light-harnessed
+light-hating
+light-heeled
+light-horseman
+light-leaved
+light-legged
+light-limbed
+light-loaded
+light lock
+light-locked
+light magnesia
+light-marching
+light metals
+light-minded
+light-mindedly
+light-mindedness
+lightning arrester
+lightning beetle
+lightning conductor
+lightning discharge
+lightning file
+lightning pains
+lightning protector
+lightning rod
+lightning stone
+lightning switch
+lightning tooth
+lightning tube
+light oil
+light-poised
+light-producing
+light-proof
+light-reactive
+light-refracting
+light-refractive
+light-robed
+light-rooted
+light-rootedness
+light-scattering
+light-sensitive
+light-skinned
+light-skirts
+light-spirited
+light-spreading
+light-struck
+light-thoughted
+light-timbered
+light-tongued
+light trap
+light-treaded
+light-veined
+light-waved
+light-winged
+light-witted
+light-year
+light-yellow
+lignaloe oil
+ligninsulphonic acid
+lignosulphonic acid
+lignum aloes
+lignum vitae
+ligulate-flowered
+like-eyed
+like-fashioned
+like-featured
+like figures
+like-looking
+like-made
+like-minded
+like-mindedly
+like-mindedness
+like-natured
+like-persuaded
+like-sex
+like-shaped
+like-sized
+lilac-banded
+lilac-blue
+lilac-colored
+lilac-flowered
+lilac gray
+lilac-headed
+lilac-mauve
+lilac mildew
+lilac-pink
+lilac-purple
+lilac-tinted
+lilac-violet
+Lille lace
+lilly-low
+lilly-pilly
+lily bell
+lily bellflower
+lily bind
+lily-cheeked
+lily-clear
+lily-cradled
+lily-crowned
+lily family
+lily-fingered
+lily flower
+lily grass
+lily green
+lily iron
+lily leek
+lily-liver
+lily-livered
+lily pad
+lily palm
+lily-paved
+lily pink
+lily-robed
+lily-shaped
+lily-shining
+lily thorn
+lily-tongued
+lily-trotter
+lily-white
+Lily-white
+lily-whiteness
+lily-wristed
+Lima bark
+Lima bean
+Lima-bean mildew
+limber chest
+limber-neck
+limber pine
+limber rope
+limber-twig pine
+limbic lobe
+limbo patrum
+Limburg cheese
+lime anthracnose
+lime-ash
+lime boil
+lime-boiled
+lime buffer
+lime epidote
+lime feldspar
+lime grass
+lime harmotome
+lime juice
+lime-juicer
+lime mesotype
+lime nitrogen
+lime pit
+lime plant
+Limerick hook
+Limerick lace
+lime soap
+lime-soda mesotype
+lime-sulphur
+limette oil
+lime uranite
+lime-white
+limited company
+limited divorce
+limited edition
+limited fee simple
+limited liability
+limited monarchy
+limited owner
+limited partnership
+limited policy
+limited veto
+limit gauge
+limiting point
+limit point
+limit switch
+limit system
+Limoges enamel
+Limoges ware
+limousine-landaulet
+limping standard
+limu-eleele
+limu-kohu
+Lincoln green
+Lincoln miller
+Lincoln red
+Lincolns birthday
+Lincolns finch
+Lincolns inn
+Lincolns sparrow
+linden borer
+linden family
+linden green
+linden inchworm
+linden leaf beetle
+linden yellow
+Linde process
+line ahead
+lineal measure
+lineal promotion
+lineal rank
+lineal relation
+linear-acute
+linear-attenuate
+linear-awled
+linear coefficient
+linear complex
+linear content
+linear differential form
+linear-elliptical
+linear-elongate
+linear-ensate
+linear equation
+linear-filiform
+linear function
+linear-lanceolate
+linear lead
+linear-leaved
+linear-ligulate
+linear measure
+linear micrometer
+linear-oblong
+linear-obovate
+linear problem
+linear projection
+linear segment
+linear set
+linear-setaceous
+linear-shaped
+linear space
+linear substitution
+linear-subulate
+linear transformation
+line breaker
+line-bred
+line-breed
+line breeding
+line buck
+line-bucker
+line co-ordinates
+lined blade
+lined gold
+line displacement
+line drawing
+line engraver
+line engraving
+line equation
+line-firing
+line geometry
+line hunter
+line-hunting
+line integral
+line letter
+line loss
+linen draper
+linen draperess
+linen drapery
+linen floss
+linen fold
+linen machine
+linen pattern
+linen wedding
+line officer
+line-out
+line radio
+line relay
+line riding
+line-roll conveyer
+line-sequential
+line squall
+line symmetry
+line test
+line-up
+linga sharira
+lingoa wood
+ling pink
+lingua crioula
+lingua franca
+lingua geral
+lingual artery
+lingual bone
+lingual gyrus
+lingual nerve
+lingual ribbon
+Lingua romana
+Lingua romana rustica
+lingua rustica
+Lingua scottica
+lingua vulgaris
+linguistic area
+Lingula flags
+Lingvo internacia la
+lining cloth
+lining-out
+lining sight
+lining stitcher
+linkage formula
+linkage groups
+link block
+linking r
+link motion
+link polygon
+link verb
+linnet hole
+linoleum-block print
+linoleum-block printing
+linotype operator
+lino-typist
+linseed cake
+linseed meal
+linseed oil
+linseed tea
+linsey-woolsey
+lint bells
+lint bow
+lint index
+lin tree
+lint-white
+lion ant
+lion-bold
+lion-color
+lion dollar
+lion dragon
+lion-footed
+lion-guarded
+lion-haunted
+lion-headed
+lion-hided
+lion-hued
+lion leopard
+lion lizard
+lion-maned
+lion-mettled
+lion monkey
+lion poisson
+lion-tailed
+lion-tawny
+lion-thoughted
+lion-toothed
+lip-back
+lip-bearded
+lip bit
+lip-blushing
+lip-born
+lip comfort
+lip comforter
+lip-deep
+lip devotion
+lip fern
+lip-good
+lip homage
+lip labor
+lip-learned
+lip-licking
+lip loyalty
+lip-open
+lip plug
+lip praise
+lip-read
+lip reader
+lip reading
+lip-red
+lip-round
+lip-rounding
+lip server
+lip service
+lip-smacking
+lip-spreading
+lip stop
+lip strike
+lip-teeth
+lip wisdom
+lip worship
+lip worshiper
+liquid absolute
+liquid air
+liquid apiol
+liquid coal
+liquid compass
+liquid measure
+liquidus curve
+listener-in
+listening cam
+lister cultivator
+listing machine
+list system
+litany stool
+literal-minded
+lithia emerald
+lithia mica
+lithia water
+litho purple
+litis contestatio
+litmus milk
+litmus paper
+little-able
+little bluestem
+little-boukit
+little-branched
+Little-endian
+Little englander
+Little englandism
+little-footed
+little good
+Little-good
+little-haired
+little-headed
+little house
+little-known
+little-loved
+little millet
+little-minded
+little-mindedness
+little-prized
+little-read
+little-regarded
+little-statured
+little-trained
+little-traveled
+little-used
+Littoral race
+littoral zone
+live-ever
+live-forever
+live-front switchboard
+live-in-idleness
+liver balsam
+liver brown
+liver-colored
+liver extract
+liver fluke
+liver fungus
+liver-hued
+liver lily
+liver maroon
+liver-moss
+Liverpool bit
+liver rot
+liver sausage tree
+liver shark
+liver-white
+liverwort lettuce
+livery company
+livery stable
+live-sawed
+livestock insurance
+livid brown
+livid pink
+livid purple
+livid violet
+living hall
+living room
+Livingston formation
+living trust
+living wage
+livre parisis
+livre tournois
+lizard bronze
+lizard fish
+lizard flower
+lizard green
+lizard seeker
+lizards-tail
+lizardtail grass
+Llewellin setter
+load chart
+load displacement
+load factor
+loading donkey
+loading inductance
+load line
+load water line
+load water plane
+loaf sugar
+loam board
+loan agent
+loan farm
+loan form
+loan god
+loan office
+loan translation
+lobato-digitate
+lobato-divided
+lobato-foliaceous
+lobato-partite
+lobato-ramulose
+lobby pine
+lobed-leaved
+lobelia blue
+lobelia family
+lobelia violet
+loblolly bay
+loblolly boy
+loblolly pine
+loblolly sweetwood
+loblolly tree
+lobster caterpillar
+lobster crab
+lobster flower
+lobster-horns
+lobster moth
+lobster pot
+lobsters-claw
+lobster-tail
+lobster-tailed
+lobster thermidor
+lobster trap
+lobster trick
+local option
+local optioner
+local optionism
+local optionist
+local-option law
+Lochaber ax
+lock-a-daisy
+locked jaw
+locked-wire rope
+locker plant
+lock-grained
+lock-hair fern
+locking face
+locking pallet
+locking plate
+locking ring
+locking wheel
+lock nut
+lock plate
+lock rail
+lock saw
+lock seat
+lock step
+lock stitch
+lock turtle
+lockup safety valve
+lock washer
+loco disease
+locomotive boiler
+locomotor ataxia
+loco parentis
+loco vetch
+locum-tenency
+locum tenens
+locust bean
+locust beetle
+locust bird
+locust eater
+locust lobster
+locust mite
+locust moth
+locust plant
+locust pod
+locust sawfly
+locust shrimp
+lode claim
+lodgepole pine
+lodger bee
+lodger franchise
+lodging knee
+lodh bark
+loft-dried
+lofting iron
+lofty-browed
+lofty-headed
+lofty-humored
+lofty-looking
+lofty-minded
+lofty-notioned
+lofty-peaked
+lofty-plumed
+lofty-roofed
+lofty-sounding
+logan apple
+logan stone
+logarithmic curve
+log bunk
+log carriage
+log chip
+log deck
+log dog
+log drive
+log driver
+log driving
+log fixer
+log frame
+loggan stone
+loggerhead shrike
+loggerhead sponge
+loggerhead turtle
+logging car
+logging locomotive
+logging sled
+logging wheels
+log glass
+logico-metaphysical
+logistic curve
+logistic line
+log jack
+log kicker
+log line
+log loader
+log measure
+log peeler
+log perch
+log reel
+log rule
+log run
+log runner
+log scale
+log scaler
+log slate
+log tooth
+log turner
+logwood black
+logwood blue
+logwood paper
+loin end
+loll shraub
+Lombard school
+lomi-lomi
+long accent
+long-accustomed
+long-agitated
+long-ago
+long-arm
+long-arm balance
+long-armed
+long-awaited
+long-awned
+long-axed
+long-backed
+long-barreled
+long-beaked
+long-bearded
+long-bellied
+long-berried
+long bill
+long-billed
+long-bodied
+long-borne
+long-bracted
+long-branched
+long-breathed
+long-buried
+long-celled
+long-chained
+long-clawed
+long-coated
+long-contended
+long-continued
+long-continuing
+long-coupled
+long-crested
+long-cycle
+long-cycled
+long-dated
+long-day
+long-dead
+long-delayed
+long-descending
+long-deserted
+long-desired
+long-destroying
+long-distance
+long-docked
+long-drawn
+long-eared
+longed-for
+long-enduring
+long-established
+long-exerted
+long-expected
+long-experienced
+long-extended
+long-faced
+long-faded
+long-favored
+long-fed
+long-fiber
+long-fibered
+long-fingered
+long-finned
+long-fleeced
+long-flowered
+long-footed
+long-forgotten
+long-fronted
+long-fruited
+long-gown
+long-gowned
+long-grassed
+long-haired
+long-haired griffon
+long-handed
+long-handled
+long-heeled
+long-hid
+long-horned
+long house
+long-jawed
+long-jointed
+long-journey
+long-kept
+long-lacked
+long-lasting
+longleaf pine
+longleaf yellow pine
+long-leaved
+long-leaved bent
+long-leaved pine
+long-legged
+long-limbed
+long-lined
+long-liner
+long-lining
+long-lived
+long-livedness
+long-living
+long-locked
+long-lost
+long-lunged
+long-memoried
+long-nebbed
+long-neck clam
+long-necked
+long-nosed
+long-off
+long-on
+long-parted
+long-past
+long-pasterned
+long-period variable
+long-planned
+long-plumed
+long-pod
+long-podded
+long-possessed
+long-projected
+long-protracted
+long-quartered
+long-range
+long-reaching
+long-resounding
+long-ribbed
+long-ridged
+long-robed
+long-roofed
+long-rooted
+long-saved
+longschat pine
+long-settled
+long-shaded
+long-shadowed
+long-shafted
+long-shanked
+long-shaped
+long-shut
+long-sighted
+long-sightedness
+long-skulled
+long-sleeved
+long-snouted
+long-sought
+long-span
+long-spine
+long-spined
+long-spurred
+long-staffed
+long-stalked
+long-standing
+long-staple
+long-stapled
+long-staple isinglass
+long-stemmed
+long-stocked
+long-streaming
+long-stretched
+long-stroke
+long-styled
+long-succeeding
+long-suffered
+long-suffering
+long-sundered
+long-tail
+long-tailed
+long-tailed chat
+long-term
+long-term bond
+long-thinking
+long-threatened
+long-time
+long-timed
+long-toed
+long-toed stint
+long-tongue
+long-tongued
+long-toothed
+long-traveled
+long-visaged
+long-waisted
+long-wandered
+long-wandering
+long-wedded
+long-winded
+long-windedly
+long-windedness
+long-winged
+long-wished
+long-withdrawing
+long-withheld
+long-wooled
+long-worded
+looker-on
+look-in
+looking glass
+looking-glass bush
+look-through
+loom joiner
+loom oiler
+loom tenter
+loom turner
+loom weaver
+loop stitch
+loop winding
+loose-barbed
+loose-bodied
+loose-coupled
+loose-curled
+loose-driving
+loose-enrobed
+loose-fibered
+loose-fitting
+loose-fleshed
+loose-floating
+loose-flowered
+loose-flowing
+loose-girdled
+loose-gowned
+loose-handed
+loose-hanging
+loose-hipped
+loose-hung
+loose-jointed
+loose-kneed
+loose-leaf
+loose-limbed
+loose-lipped
+loose-lived
+loose-living
+loose-locked
+loose-lying
+loose-mannered
+loose-necked
+loose-packed
+loose-panicled
+loose-principled
+loose-robed
+loose-skinned
+loose-spiked
+loose-thinking
+loose-tongued
+loose-topped
+loose-wadded
+loose-wived
+loose-woven
+loose-writ
+lop-eared
+Lord admiral
+lord bird
+lord-lieutenancy
+lord lieutenant
+lord spiritual
+lord temporal
+lord trier
+Lorenzo indians
+Loretto nuns
+Los angelean
+lose-out
+losh hide
+losh leather
+loss leader
+loss ratio
+lotus-eater
+lotus grass
+loud-acclaiming
+loud-applauding
+loud-bellowing
+loud-blustering
+loud-calling
+loud-clamoring
+loud-cursing
+loud-laughing
+loud-ringing
+loud-roared
+loud-roaring
+loud-screaming
+loud-singing
+loud-speaker
+loud-speaking
+loud-spoken
+loud-squeaking
+loud-thundering
+loud-ticking
+loudy-da
+lough diver
+Louis heel
+Louisiana grass
+loup-cervier
+louping ill
+louse herb
+louver boards
+love affair
+love-anguished
+love-begot
+love-begotten
+love-bitten
+love-born
+love-breathing
+love-crossed
+love-darting
+love-delighted
+love-devouring
+love ditty
+love-entangle
+love-enthralled
+love grass
+love-illumined
+love-inspired
+love-inspiring
+love-lacking
+love-laden
+love-learned
+love letter
+love-mad
+love-madness
+love-maker
+love-making
+love-mourning
+love-performing
+love seat
+love-smitten
+love song
+love-spent
+love-starved
+love-stricken
+love-touched
+love-whispering
+love-worthiness
+love-worthy
+love-wounded
+low-arched
+low-backed
+low-bellowing
+low-bended
+low-blast
+low-blooded
+low-bodied
+low-boiling
+low-boughed
+low-bowed
+low-breasted
+low-brow
+low-browed
+low-built
+low-caste
+low-ceiled
+low-ceilinged
+low-charge
+Low church
+Low-churchism
+Low-churchist
+Low-churchman
+Low-churchmanship
+low-class
+low comedian
+low comedy
+low-conceited
+low-conditioned
+low-consumption
+low-crested
+low-crowned
+low-current
+low-cut
+low-deep
+low-down
+low-downer
+low-downness
+low-ebbed
+low-filleted
+low-flighted
+low-fortuned
+low-frequency
+low-gauge
+low-geared
+low-grade
+low-heeled
+low-hung
+low-intensity
+lowland fir
+lowland plover
+Lowland scotch
+low-level
+low-leveled
+low-lipped
+low-lived
+low-living
+low-lying
+low-masted
+low-melting
+low-minded
+low-mindedly
+low-mindedness
+low-murmuring
+low-muttered
+low-necked
+low-paneled
+low-pass filter
+low-power
+low-pressure cylinder
+low-priced
+low-principled
+low-purposed
+low-quartered
+low-rented
+low-resistance
+low-rimmed
+low-roofed
+low-set
+low-sized
+low spear grass
+low-spirited
+low-spiritedly
+low-spiritedness
+low-spoken
+low-statured
+Low sunday
+low-temperature
+low-thoughted
+low-toned
+low-tongued
+low-tread
+low-uttered
+low-voiced
+low-voltage
+low-voltage protection
+low-voltage release
+low-waisted
+low-water mark
+low-wattage
+low-wheeled
+low-withered
+low-witted
+loxa bark
+lozenge perforation
+lozenge-shaped
+lubber fend
+lubber grasshopper
+lubber-hole
+lucifer match
+lucken gowan
+luck penny
+luff tackle
+luggage van
+lug hook
+lumber kiln
+lumbo-abdominal
+lumbo-aortic
+lumbo-iliac
+lumbo-inguinal
+lumbo-ovarian
+lumen-hour
+luminosity curve
+lump coal
+luna cornea
+Luna moth
+lunar-diurnal
+luncheon bar
+lung book
+lung fever
+lung fluke
+lung plague
+lung sickness
+lungworm disease
+lupus vulgaris
+Lusitano-american
+lust-born
+lust-burned
+lust-burning
+lust-engendered
+luster pottery
+luster wool
+lust-stained
+lust-tempting
+lute-backed
+lute-fashion
+lute-playing
+lute-voiced
+luxury-proof
+lycoperdon nut
+lycopodium powder
+lye boil
+lying-in
+lying press
+lying wall
+lyme grass
+lymph gland
+lymph heart
+lymph node
+lympho-adenoma
+lymph-vascular
+lynch law
+lynx cat
+lynx-eyed
+lynx flower
+Lyon bean
+Lyon herald
+lyrate-lobed
+lyre bat
+lyre-guitar
+lyre-leaved
+lyre pheasant
+lyre-shaped
+lyre-tailed
+lyre-tailed nightjar
+lyre tree
+lyre turtle
+lyrico-dramatic
+lyrico-epic
+mabi bark
+macaco worm
+macaranga gum
+macaroni wheat
+Macassar agar-agar
+Macassar gum
+macaw fat
+macaw palm
+mace-bearer
+mace butter
+Macedonian-persian
+mace oil
+ma chere
+machina versatilis
+machine binder
+machine-breaking
+machine-broken
+machine-cut
+machine cutter
+machine dresser
+machine-drilled
+machine-driven
+machine feeder
+machine-finished
+machine-forged
+machine-hour
+machine knife
+machine-knitted
+machine knitter
+machine lapper
+machine-made
+machine-mixed
+machine nailer
+machine rifle
+machine ruler
+machinery steel
+machine screw
+machine-sewed
+machine shop
+machine stamper
+machine steel
+machine-stitched
+machine stitcher
+machine-woven
+machine-wrought
+Mach number
+mackay bean
+mackerel bait
+mackerel bird
+mackerel breeze
+Mackinaw coat
+Mackinaw trout
+macrame cord
+macrame knot
+macro-axis
+Madagascar arrowroot
+Madagascar bean
+mad apple
+mad-bred
+madder bleach
+madder bloom
+madder blue
+mad-doctor
+made-beaver
+made eye
+Madeira chair
+Madeira cockroach
+made mast
+made-over
+made rug
+made-up
+mad-headed
+madia oil
+mad itch
+mad money
+Madonna lily
+Madras gram
+Madras hemp
+madrepore glass
+madrepore marble
+madreporic body
+madreporic plate
+madreporic tubercle
+Madura foot
+mafura tallow
+magazine camera
+magazine clothing
+Magellan jacket
+maggot snipe
+maggot therapy
+Magh sleacht
+magico-religious
+magico-sympathetic
+magma basalt
+Magna charta
+magnesia magma
+magnesium carbonate
+magnesium chloride
+magnesium light
+magnet forger
+magnetic heading
+magnetic mine
+magnetic recorder
+magnetic viscosity
+magnetite arc
+magnetite arc lamp
+magnetite-basalt
+magnetite-olivinite
+magnetite-spinellite
+magnetizing current
+magnetizing force
+magnet keeper
+magneto assembler
+magnifying glass
+magnifying power
+magnolia warbler
+magnum opus
+magnus hitch
+magpie diver
+magpie finch
+magpie goose
+mahala mat
+mahali disease
+maharao raja
+mah-jongg
+mahogany birch
+mahogany brown
+mahogany family
+Mahri-sokotri
+mahua butter
+maiden cane
+maidenhair spleenwort
+maidenhair tree
+maiden over
+maiden pink
+maids-hair
+mail carrier
+mail catcher
+mail-cheeked
+mailed-cheeked
+mailing machine
+mail order
+mail-order house
+main road
+Main street
+maintenance bond
+main-topmast
+main-yardman
+maison-dieu
+maitre dhotel
+maize-eater
+maize mildew
+maize smut
+maize yellow
+majo bitters
+majolica dipper
+Majolica earth
+majolica painter
+ma-jong
+major agglutinins
+major-domo
+major-domoship
+Major domus
+major general
+major-generalcy
+major-generalship
+major-leaguer
+major second
+major third
+make-ado
+make-belief
+make-believe
+make-faith
+make-falcon
+make-fire
+make-fray
+make-game
+make-hawk
+make-king
+make-law
+make-mirth
+make-peace
+make-ready
+maker-off
+maker-up
+make-shame
+make-sport
+make-talk
+make-up
+make-way
+making iron
+making-up
+making-up day
+making-up price
+malachite green
+mala fide
+Malay kite
+Malayo-indonesian
+Malayo-javanese
+Malayo-negrito
+Malayo-polynesian
+Malay race
+male alto
+male bamboo
+malleable iron
+mallee bird
+malleh bug
+mallow family
+mallow rose
+mallow rust
+mallow tree
+malm rock
+maloo climber
+malted milk
+malt extract
+malt liquor
+malt sugar
+malt vinegar
+malt whisky
+malum in se
+mammato-cumulus
+mammee apple
+mammee colorado
+mammee sapota
+mammoth tree
+mammy coot
+man-abhorring
+management share
+management trust
+man alive
+man-back
+man-bearing
+man-begot
+man-bodied
+man-born
+man-brute
+man-carrying
+man-catching
+man-changed
+Manchester brown
+man-child
+man-compelling
+mancona bark
+man-created
+mandarin duck
+man-day
+man-degrading
+man-destroying
+man-devised
+man-devouring
+mandibulo-auricularis
+mando-bass
+mando-cello
+mandrel lathe
+mandrel press
+man-eater
+man-eating
+Manebach twin
+man-enchanting
+man-enslaved
+manettia vine
+man-fashion
+man-fearing
+man-forked
+man fungus
+mangabeira rubber
+manganese bronze
+manganese brown
+manganese dioxide
+manganese epidote
+manganese heptoxide
+manganese oxide
+manganese sesquioxide
+manganese spar
+manganese steel
+manganese tetroxide
+manganese velvet brown
+manganese violet
+mangel-wurzel
+mange-mange
+mange mite
+manger board
+mangle operator
+mangle rack
+mangle wheel
+mango anthracnose
+mango bird
+man-god
+mango fish
+mango ginger
+mango melon
+mangrove catechu
+mangrove cuckoo
+mangrove family
+mangrove mullet
+mangrove skipper
+mangrove snapper
+man-grown
+mangum terrace
+man-hater
+man-headed
+man-high
+manhood suffrage
+man-hour
+man hunt
+man hunter
+manic-depressive
+manicoba rubber
+manifold paper
+manipulative surgery
+man jack
+man-keen
+man-killer
+man-killing
+man lock
+man-made
+man-maiming
+man-making
+man midwife
+man-midwifery
+man-mimicking
+man-minded
+man-minute
+manna ash
+manna grass
+manna gum
+manna insect
+manna lichen
+manna sugar
+mann tree
+man-orchis
+manor house
+man-pleasing
+man power
+man-record chart
+man-ridden
+manrope knot
+mansard roof
+man-shaped
+man-size
+man-sized
+man-stalking
+man-subduing
+man-supporting
+man-taught
+man tiger
+mantis crab
+mantle cavity
+mantle-rock
+manufacturing lathe
+man-woman
+man-worshiping
+man-worthiness
+man-worthy
+Manx cat
+many-acred
+many-angled
+many-armed
+many-banded
+many-beaming
+many-belled
+many-bleating
+many-blossomed
+many-blossoming
+many-branched
+many-breasted
+many-celled
+many-chambered
+many-cobwebbed
+many-colored
+many-coltered
+many-cornered
+man-year
+many-eared
+many-eyed
+many-faced
+many-facedness
+many-faceted
+many-flowered
+many-folded
+many-formed
+many-fountained
+many-gifted
+many-handed
+many-headed
+many-headedness
+many-horned
+many-hued
+many-jointed
+many-knotted
+many-languaged
+many-lay
+many-leaved
+many-legged
+many-lived
+many-lobed
+many-meaning
+many-millioned
+many-minded
+many-mingled
+many-mingling
+many-mouthed
+many-named
+many-nationed
+many-nerved
+many-one
+many-parted
+many-peopled
+many-petaled
+many-pigeonholed
+many-pillared
+many-pointed
+many-ranked
+many-rayed
+many-ribbed
+many-rooted
+many-rowed
+many-seated
+many-seatedness
+many-seeded
+many-sided
+many-sidedness
+many-sounding
+many-spangled
+many-spotted
+many-steepled
+many-stemmed
+many-storied
+many-stringed
+many-syllabled
+many-tailed
+many-tinted
+many-toned
+many-tongued
+many-towered
+many-tribed
+many-tubed
+many-twinkling
+many-valved
+many-veined
+many-voiced
+many-wandering
+many-weathered
+many-winding
+many-windowed
+many-wintered
+many-yeared
+maple ash
+maple borer
+maple eye
+maple-faced
+maple family
+maple-leaved
+maple scale
+maple sirup
+maple sugar
+maple worm
+map lichen
+map maker
+map making
+map reader
+map reading
+map turtle
+marabou stork
+marang nut
+marathon race
+marble-arched
+marble-breasted
+marble cake
+marble-calm
+marble-checkered
+marble-colored
+marble cork
+marble-covered
+marble-faced
+marble flower
+marble-grinding
+marble-hard
+marble-imaged
+marble-looking
+marble-minded
+marble-mindedness
+marble-pale
+marble-paved
+marble-piled
+marble-pillared
+marble-polishing
+marble-quarrying
+marble-ribbed
+marble-sculptured
+marble thrush
+marble-topped
+marble-white
+marcel wave
+March brown
+marchioness-ship
+march stone
+Marconi rig
+Marconi-rigged
+Mardi gras
+Marechal niel
+mare clausum
+mare-rode
+margate fish
+margin draft
+Marguerite yellow
+marigold finch
+marigold yellow
+Marine corps
+marine-finish
+marjoram oil
+mark degree
+marker-down
+marker-off
+marker-out
+market bleach
+market cross
+market garden
+market gardener
+market gardening
+market hunter
+market keeper
+market letter
+market order
+market penny
+market place
+market pot
+market price
+market-ripe
+market town
+market value
+marking caliper
+marking cotton
+marking gauge
+marking hammer
+marking hatchet
+marking iron
+marking knife
+marking nut
+marking stitch
+mark lodge
+Mark masonry
+mark-on
+mark tooth
+marl grass
+marlinespike fish
+marlinespike hitch
+marling hitch
+marlin swordfish
+marmalade box
+marmalade plum
+marmalade tree
+marmot squirrel
+marnean epoch
+maroon red
+marquise rose
+marquoise scale
+marram grass
+marriage brokage
+marriage broker
+marriage chest
+marriage flight
+marriage license
+marriage portion
+marriage settlement
+marron glace
+marrow cabbage
+marrow pea
+marrow squash
+Mars brown
+marsh bent
+marsh blackbird
+marsh bluebill
+marsh fern
+marsh fever
+marsh five-finger
+marsh foxtail
+marsh gas
+marsh grass
+marsh parsley
+marsh pea
+marsh peep
+marsh pennywort
+marsh pine
+marsh pink
+marsh plover
+marsh purslane
+marsh quail
+marsh rabbit
+marsh robin
+marsh rosemary
+marsh samphire
+marsh shield fern
+marsh speedwell
+marsh spike grass
+marsh spot
+marsh stitchwort
+marsh tea
+marsh tern
+marsh titmouse
+marsh treader
+marsh trefoil
+marsh turnip
+marsh vetchling
+marsh violet
+marsh warbler
+marsh watercress
+marsh wren
+Martello tower
+martial law
+martingale backrope
+Martinmas summer
+martin snipe
+Martius yellow
+mascot blue
+mashie iron
+mashie niblick
+mash machine
+mash tun
+mash weld
+mask stop
+mason bee
+mason moth
+mason spider
+mason wasp
+mass action
+mass defect
+Massena quail
+mass-energy equation
+mass-fiber
+mass meeting
+mass-minded
+mass-mindedness
+mass number
+mass observation
+mass observer
+mass-produce
+mass-produced
+mass production
+mass reflex
+mass spectrograph
+mass spectrum
+mass unit
+mass-word
+massy-proof
+mast brown
+mast cell
+master bedroom
+master builder
+master chord
+master clock
+master compass
+master controller
+master gauge
+master gunner
+master key
+master leaf
+master map
+master mariner
+master mason
+master matrix
+master mechanic
+master rod
+master screw
+master sergeant
+master shifter
+master spring
+master stroke
+master switch
+master tap
+master touch
+master wheel
+master workman
+mast-fed
+masthead angle
+masthead compass
+mast hoop
+mastiff bat
+mastodon locomotive
+mast tree
+mat bean
+mat cane
+matchbox bean
+match cord
+match frame
+match game
+match hook
+matching machine
+matching plane
+match joint
+match-lined
+match lining
+match pipe
+match plane
+match plate
+match play
+match point
+match rifling
+match rope
+match stamp
+match tub
+match wheel
+mat-covered
+mate gourd
+material logic
+materia medica
+maternity hospital
+maternity insurance
+mat-forming
+mathematico-logical
+mathematico-physical
+matilija poppy
+matinee race
+matinee racing
+matin song
+matricaria camphor
+mat-ridden
+matrimony vine
+matrix algebra
+matrix mechanics
+matrix paper
+mat-roofed
+mat rush
+matter waves
+matt weave
+matzoth baker
+Mauch chunk
+mauve blush
+May apple
+Maya-quiche
+May basket
+May beetle
+May day
+mayor-elect
+Maypole dance
+may-woon
+mazer tree
+meadow anemone
+meadow barley
+meadow beauty
+meadow-beauty family
+meadow bell
+meadow bird
+meadow brook
+meadow brown
+meadow cabbage
+meadow campion
+meadow chicken
+meadow chickweed
+meadow clover
+meadow crake
+meadow cress
+meadow crocus
+meadow crowfoot
+meadow cup
+meadow death camass
+meadow fern
+meadow fescue
+meadow foxtail
+meadow gowan
+meadow grass
+meadow grasshopper
+meadow green
+meadow hen
+meadow lark
+meadow lily
+meadow moor
+meadow mouse
+meadow mushroom
+meadow mussel
+meadow nuts
+meadow orchis
+meadow ore
+meadow parsnip
+meadow pea
+meadow peat
+meadow pine
+meadow pink
+meadow pipit
+meadow queen
+meadow reed grass
+meadow rice grass
+meadow rue
+meadow saffron
+meadow sage
+meadow saxifrage
+meadow scabish
+meadow snipe
+meadow soft grass
+meadow sorrel
+meadow spear grass
+meadow titling
+meadow vetchling
+meaking iron
+meal beetle
+meal moth
+meal offering
+meal pennant
+meal plum
+meal snout moth
+meal worm
+mealy-back
+mean-acting
+mean-conditioned
+meander belt
+meander line
+mean-dressed
+mean-looking
+mean-souled
+mean-spirited
+mean-spiritedly
+mean-spiritedness
+mean-square error
+means test
+mean-time clock
+meantone system
+mean-witted
+measure line
+measurement cargo
+measurement ton
+measure signature
+measuring cup
+measuring glass
+measuring machine
+measuring wheel
+meat ax
+meat block
+meat chopper
+meat cleaner
+meat eater
+meat-eating
+meat-fed
+meat fly
+meat grinder
+meat-hungry
+meat offering
+meat packer
+meat-packing
+meat pie
+meat preserver
+meat slicer
+mechanical engineer
+mechanical engineering
+Mechlin lace
+Meckelian cartilage
+medaddy-bush
+medal bronze
+medal chief
+mediastino-pericardial
+mediastino-pericarditis
+mediastinum testis
+medical man
+medicine animal
+medicine bag
+medicine ball
+medicine case
+medicine dance
+medicine dropper
+medicine glass
+medicine lodge
+medicine man
+medicine tree
+Medina worm
+Mediterranean fever
+medley cloth
+medley race
+Medo-persian
+medulla oblongata
+medusa bud
+meek-browed
+meek-eyed
+meek-minded
+meek-spirited
+meerschaum enameler
+meeting rail
+Meganos formation
+Meissen ware
+Melano-papuan
+Melba toast
+M electron
+melegueta pepper
+melic grass
+melilite-basalt
+mell-doll
+mellow-breathing
+mellow-colored
+mellow-deep
+mellow-eyed
+mellow-flavored
+mellow-lighted
+mellow-looking
+mellow-mouthed
+mellow-ripe
+mellow-tasted
+mellow-tempered
+mellow-toned
+mell-supper
+melon aphid
+melon apple
+melon beetle
+melon cactus
+melon caterpillar
+melon-faced
+melon fly
+melon foot
+melon-formed
+melon-laden
+melon-leaved
+melon loco
+melon louse
+melon moth
+melon-shaped
+melon shell
+melon shrub
+melon thistle
+melon tree
+melon worm
+melon-yellow
+melting point
+melting pot
+member bank
+membrane bone
+memorandum head
+memorial rose
+memory book
+memory root
+memory span
+menage man
+mendoza beaver
+Menelik dollar
+menhaden oil
+Menindie clover
+meningo-osteophlebitis
+Menominee whitefish
+menstrual epact
+menstrual equation
+mental age
+mental alienation
+mental chemistry
+mental deficiency
+mental disease
+mental healing
+mental hygiene
+mental prominence
+mental reservation
+mental test
+menthane group
+Mentone man
+Mercator sailing
+Mercersburg theology
+merchant adventurer
+merchant banker
+merchant guild
+merchant prince
+merchant venturer
+mercury arc
+mercury-arc lamp
+mercury-arc rectifier
+mercury boiler
+mercury chloride
+mercury cyanide
+mercury-discharge lamp
+mercury fulminate
+mercury iodide
+mercury oxide
+mercury subchloride
+mercury sulphide
+mercury thiocyanate
+mercury-vapor lamp
+mercury-vapor turbine
+mercury weed
+mercy stroke
+merit badge
+merit rate
+merit system
+Merker grass
+mermaid weed
+mero cabrilla
+merry-andrew
+merry-andrewism
+merry-andrewize
+merry-eyed
+merry-faced
+merry-go-round
+merry-hearted
+merry men
+merry-minded
+merry-singing
+merry-smiling
+Mesaverde formation
+mescal buttons
+mescal maguey
+mesh bag
+meshing-spur gear
+mesh knot
+mesityl oxide
+mesoxalyl-urea
+mesquite grass
+mesquite gum
+mess beef
+messenger bird
+messenger cable
+messenger wire
+mess gear
+messiah religion
+mess jacket
+mess kit
+mess pork
+mess-up
+metacresol purple
+metal age
+metal-bearing
+metal-bending
+metal-boring
+metal-bound
+metal breaker
+metal-broaching
+metal-bushed
+metal carbonyl
+metal-clad
+metal-clasped
+metal-cleaning
+metal cloth
+metal-coated
+metal coloring
+metal-covered
+metal-cutting
+metal-decorated
+metal-drilling
+metal-drying
+metal-edged
+metal-embossed
+metal-forged
+metal fouling
+metal-framed
+metal-grinding
+metal-jacketed
+metal leaf
+metal-lined
+metal-lithography
+metallo-organic
+metal-melting
+metal-perforating
+metal-piercing
+metal-shaping
+metal-sheathed
+metal-slitting
+metal-slotting
+metal-studded
+metal-testing
+metal-tipped
+metal-trimming
+metanil yellow
+Metcalfe bean
+meteor dust
+meter-ampere
+meter angle
+meter-candle
+meter fixer
+meter-kilogram
+meter-kilogram-second
+meter-millimeter
+meter rate
+methane series
+methanol alcohol
+methodical signs
+methyl acetate
+methyl alcohol
+methyl aldehyde
+methyl benzene
+methyl blue
+methyl cellulose
+methyl chloride
+methyl cyanide
+Methylene azure
+methylene blue
+methylene iodide
+methyl ester
+methyl ether
+Methyl methacrylate
+methylthionine chloride
+metopon hydrochloride
+metre-candle
+metric system
+mew gull
+mezankorrie moth
+mezereon family
+mezzamine floor
+mezzanine story
+mezzo-relievo
+mezzo-soprano
+mezzo-soprano clef
+mezzo staccato
+m-hum
+Miana bug
+mica condenser
+mica diorite
+mica schist
+mice pea
+mice pink
+Michaelmas blackbird
+Michaelmas crocus
+Michaelmas daisy
+Michaelmas eve
+Michaelmas sitting
+Michaelmas spring
+Michaelmas term
+mickey finn
+Mickey finn
+mickle-mouthed
+micro-aerophile
+micro-aerophilic
+micro-audiphone
+micro-form
+micrometer caliper
+micrometer head
+micrometer screw
+micro-movie
+micro-needle
+mid-act
+Mid-african
+mid-age
+mid-aged
+mid-air
+Mid-america
+Mid-american
+Mid-april
+mid-arctic
+midas fly
+Mid-asian
+Mid-atlantic
+Mid-august
+mid-back
+mid-block
+mid-body
+mid-breast
+Mid-cambrian
+mid-career
+mid-carpal
+mid-central
+mid-century
+mid-channel
+mid-chest
+mid-continent
+mid-course
+mid-court
+mid-crowd
+mid-current
+midday flower
+Mid-december
+midden mavis
+mid-diastolic
+mid-dish
+mid-distance
+Middle-age
+middle-aged
+Middle-ageism
+middle body
+middle-burst
+Middle c
+middle-classdom
+middle-classism
+middle-classness
+middle-colored
+middle-cut file
+middle-earth
+middle-growthed
+Middle high german
+middle-horned
+Middle indian
+Middle iranian
+Middle minoan
+Middle persian
+middle-rate
+Middle scots
+middle-shot wheel
+middle-sized
+middle-sizedness
+middle-statured
+middle-temperature error
+Middle west
+Middle western
+Middle westerner
+middle-witted
+middle-wooled
+middy blouse
+mid-eighteenth
+Mid-empire
+Mid-europe
+Mid-european
+mid-feather
+Mid-february
+mid-field
+mid-flight
+mid-forty
+mid-front
+mid gear
+mid-gray
+mid-gut
+mid-hour
+Mid-huronian
+mid-ice
+mid-incisor
+Mid-italian
+Mid-january
+Mid-july
+Mid-june
+mid-kidney
+mid-lake
+Midland dialect
+mid-length
+Mid-lent sunday
+mid-life
+mid-line
+mid-link
+mid-lobe
+Mid-march
+mid mashie
+Mid-may
+mid-mixed
+mid-mouth
+mid-movement
+midnight line
+midnight sun
+mid-nineteenth
+Mid-november
+mid-ocean
+Mid-october
+mid-oestral
+mid-off
+mid-on
+mid-orbital
+Mid-pacific
+mid-part
+mid-period
+mid-periphery
+mid-pillar
+Mid-pleistocene
+mid-point
+mid-position
+mid-refrain
+mid-region
+Mid-renaissance
+mid-river
+mid-road
+mid-sea
+Mid-september
+Mid-siberian
+mid-side
+mid-sky
+mid-slope
+mid-sole
+mid-span
+mid spoon
+mid-stride
+mid-styled
+midsummer daisy
+Midsummer day
+Midsummer eve
+midsummer madness
+mid-sun
+mid-swing
+mid-tarsal
+mid-term
+Mid-tertiary
+mid-thigh
+mid-thoracic
+mid-tide
+mid-time
+mid-totality
+mid-tow
+mid-town
+mid-travel
+Mid-upper
+mid-value
+mid-ventral
+Mid-victorian
+Mid-victorianism
+mid-volley
+mid-walk
+mid-wall
+mid-wall column
+mid-water
+Midway formation
+mid-wicket
+midwife frog
+Midwinter day
+mid-workings
+mid-world
+mid-zone
+might-be
+mighty-brained
+mighty-handed
+mighty-minded
+mighty-mouthed
+mighty-spirited
+mignonette family
+mignonette green
+mignonette lace
+migrant shrike
+migration velocity
+mikado brown
+mikado locomotive
+mikado orange
+mikado yellow
+mila a landi
+Milanese liturgy
+Milanese mandolin
+Milan point
+milch cow
+mild-aired
+mild alkali
+mild-aspected
+mild-blowing
+mild-brewed
+mild-cured
+mildew-proof
+mild-eyed
+mild-faced
+mild-flavored
+mild-looking
+mild-mannered
+mild-mooned
+mild mosaic
+mild process
+mild-savored
+mild-scented
+mild-seeming
+mild silver protein
+mild-spirited
+mild-spoken
+mild steel
+mild-tempered
+mild-tongued
+mild-worded
+mileage book
+mileage ticket
+Mi-le-fo
+mile-ohm
+mile-pound
+Milesian tales
+mile-ton
+mil-foot
+miliary fever
+miliary tuberculosis
+military attache
+military band
+military-minded
+Militia bureau
+milk-and-wateriness
+milk-and-waterish
+milk-and-waterism
+milk-and-watery
+milk-bearing
+milk-blended
+milk-borne
+milk-breeding
+milk brother
+milk can
+milk cart
+milk checker
+milk-condensing
+milk-cooling
+milk-curdling
+milk-drying
+milk-faced
+milk-fed
+milk-giving
+milk-hued
+milking machine
+Milking shorthorn
+milk-livered
+milk route
+milk run
+milk snake
+milk-tested
+milk tester
+milk-testing
+milk train
+milk-washed
+milkweed butterfly
+milkweed family
+milk-white
+milkwort family
+milky disease
+milk-yielding
+mill agent
+mill beetle
+mill bill
+mill cake
+mill cinder
+mill construction
+mille marin
+mill end
+mill engineer
+mill engineering
+millet disease
+millet grass
+millet-seed rash
+mill fever
+mill-headed
+milligram-hour
+milling cutter
+milling machine
+mill-ink
+millionth comparator
+mill-run
+mill-sixpence
+millstone bridge
+Millstone grit
+milo maize
+milori blue
+milori green
+milpa system
+mimic thrush
+mimosa bark
+mimosa family
+mimosa-leaved
+minced pie
+mince pie
+Mince pie
+mincing horse
+mind blindness
+mind-body
+mind-changing
+mind cure
+mind-curist
+mind deafness
+Mindel-riss
+mind-healer
+mind-healing
+mind-infected
+mind-perplexing
+mind-ravishing
+mind-set
+mind-sick
+mind-stricken
+mind-torturing
+mind-wrecking
+mineral acid
+mineral black
+mineral blue
+mineral oil
+mine-run
+mine sweeper
+mine work
+mingle-mangle
+mingle-mangleness
+mingle-mangler
+ming tree
+miniature camera
+miniature photography
+minimum-wage law
+mining claim
+mining engineer
+mining engineering
+mining geology
+minister-general
+minister plenipotentiary
+minister resident
+mink frog
+minny bass
+mino bird
+Minorca clematis
+minor element
+minor-leaguer
+minstrel show
+mint camphor
+mint family
+mint julep
+mint sauce
+mint stamp
+minus sign
+minute bell
+minute book
+minute drops
+minute glass
+minute hand
+minute man
+miracle-breeding
+miracle man
+miracle play
+miracle player
+miracle-proof
+miracle wheat
+miracle-working
+mire dromble
+mire duck
+miriti palm
+mirror carp
+mirror-faced
+mirror writer
+mirror writing
+mirth-inspiring
+mirth-loving
+mirth-making
+mirth-marring
+mirth-moving
+mirth-provoking
+mis-aver
+mis-censure
+mis-center
+mischief-loving
+mischief-maker
+mischief-making
+mischief-working
+mischio marble
+misch metal
+mis-citation
+mis-cite
+mis-con
+mis-copy
+mis-eat
+mis-enter
+mis-entry
+mis-event
+misfortune-proof
+mis-hallowed
+mis-hear
+mis-hearer
+mis-heed
+mis-hit
+mis-hold
+mis-humility
+mis-lie
+mis-mark
+mis-meet
+mis-pen
+mis-rely
+missal letter
+mis-season
+mis-seat
+mis-see
+mis-seek
+missel bird
+missel tree
+mis-send
+mis-sense
+mis-sheathed
+mis-ship
+mis-shod
+mis-sing
+missionary alphabet
+missionary weed
+mission furniture
+mission grass
+Mississippi catfish
+mis-solution
+mis-sort
+mis-sound
+Missouri breadroot
+Missouri cactus
+mis-space
+mis-start
+mis-steer
+mis-stitch
+mis-stop
+mis-strike
+mis-stroke
+mis-style
+mis-sue
+mis-suit
+mis-sway
+mis-swear
+mis-sworn
+mist-blotted
+mist blue
+mist-blurred
+mist-clad
+mist-covered
+mist-enshrouded
+mist-exhaling
+mist gray
+mis-tilled
+mist-impelling
+mist-laden
+mistletoe bird
+mistress-ship
+mist-shrouded
+mis-tune
+mist-wet
+mist-wreathen
+mis-union
+miter box
+miter cap
+miter clamp
+miter-clamped
+miter-jointed
+mithridate mustard
+mitis casting
+mitis metal
+mitre-jointed
+Mittel-europa
+Mix-hellene
+mixture curve
+mixture stop
+mix-up
+mixy-maxy
+Mizpah ring
+Mobile terrapin
+mob-minded
+moccasin flower
+moccasin plant
+Mocha stone
+Mocha-stone moth
+mochi wood
+mock-beggar
+mockery-proof
+mock-heroic
+mock-heroical
+mock-heroically
+mock-up
+mode beige
+model school
+moderator lamp
+modern-bred
+modern-built
+modern-looking
+modern-made
+modern-practiced
+modern-sounding
+Moeso-goth
+Moeso-gothic
+Mogul empire
+mogul locomotive
+Mohave apache
+mohawk weed
+Moine series
+moisture-absorbent
+moisture equivalent
+moisture-resisting
+moko-moko
+molar conductance
+molar conductivity
+molar tooth
+molar weight
+molasses grass
+Moldavian balm
+moldboard plow
+mold fungus
+molding book
+molding edge
+mold loft
+Moldo-wallachian
+moldy nose
+mole-blind
+mole-blindedly
+mole catcher
+mole-catching
+mole cricket
+mole drain
+mole drainage
+mole drainer
+mole-eyed
+mole-sighted
+Moll blood
+moll hern
+Molly maguire
+Molly maguireism
+molly washdish
+molybdenum steel
+molybdenum trioxide
+moment-area method
+momentary-contact switch
+momentum pump
+momentum valve
+monad deme
+monesia bark
+money-bloated
+money-breeding
+money-changer
+money dealer
+money-earning
+money getter
+money-getting
+money-grasping
+money-loving
+money-mad
+money-maker
+money-making
+money saver
+money-spelled
+money teller
+Mongol-galchic alphabet
+Mongolo-dravidian
+Mongolo-manchurian
+Mongolo-tatar
+Mongolo-turkic
+mongoose plant
+monilia disease
+monitor bug
+monitor chuck
+monitory letter
+monk bat
+monkey apple
+monkey bag
+monkey-ball
+monkey-faced
+monkey-god
+monkey-rigged
+monkey-tailed
+monkey-tail valve
+Mon-khmer
+monk parrot
+monk saki
+Monmouth cap
+Monmouth cock
+mono-ideic
+mono-ideism
+mono-ideistic
+mono-iodo
+mono-iodohydrin
+mono-iodomethane
+mono-ion
+monopoly value
+monosodium glutamate
+Monroe doctrine
+monster-bearing
+monster-breeding
+monster-eating
+monster-guarded
+monster-taming
+monster-teeming
+Montana grayling
+montan wax
+Mont blanc ruby
+monte bank
+monte-jus
+Monterey cypress
+Monterey halibut
+Montezuma cypress
+Montpellier green
+Montpellier yellow
+monument plant
+mood phrase
+mood swing
+moon-blanched
+moon-blasted
+moon-blasting
+moon-blind
+moon blindness
+moon-born
+moon-bright
+moon-browed
+moon-charmed
+moon-crowned
+moon-culminating
+mooneye cisco
+moon-eyed
+moon-gathered
+moon-gazing
+moon-glittering
+moon-god
+moon-gray
+moon-led
+moonlight blue
+moonlight school
+moon-loved
+moon-mad
+moon-made
+moon-raised
+moon ray
+moonseed family
+moon-stricken
+moon-struck
+moon-taught
+moon-tipped
+moon-touched
+moon-trodden
+Moon type
+moon-white
+moon-whitened
+moor besom
+moor blackbird
+moor-bred
+Moor dance
+moor grass
+mooring buoy
+mooring chock
+Moor-lipped
+moose-ear
+moose elm
+moose fly
+moose-misse
+mootchie wood
+moot court
+moot hall
+moot-stow
+mope-eyed
+mopper-up
+mopstick rail
+mop-up
+mora hair
+moral faculty
+moral hazard
+morass ore
+More anglico
+Morelos orange worm
+more suo
+moriche palm
+Mormon church
+Mormon cricket
+morning-breathing
+morning-bright
+morning campion
+morning coat
+morning-colored
+morning-glory
+morning-glory family
+morning-glory sphinx
+morning sickness
+morning-winged
+morn star
+Morocco gum
+Morocco-head
+Morocco-jaw
+morocco leather
+Morocco millet
+morphine meconate
+morphological analogy
+morphological botany
+morphologic construction
+Morris chair
+morris dance
+Morrison formation
+morris-pike
+morro castle
+mortality table
+mortal mind
+mortal sin
+mortar bed
+mortar boat
+mortgage bond
+mortgage broker
+mortgagee clause
+mortification root
+mortise gauge
+mortise gear
+mort note
+mosaic binding
+mosaic disease
+mosaic-drawn
+mosaic dwarf
+mosaic-floored
+mosaic-paved
+moschatel family
+Moscow international
+Moses primrose
+mosque swallow
+Mosquitoan family
+mosquito bar
+mosquito bee
+mosquito-bitten
+mosquito boat
+mosquito-bred
+mosquito-free
+moss agate
+moss animal
+moss-backed
+moss-begrown
+moss-bordered
+moss-bound
+moss-brown
+moss-clad
+moss-covered
+moss-crowned
+moss fern
+moss-gray
+moss-green
+moss-grown
+moss-inwoven
+moss-lined
+moss-woven
+mossy-backed
+Most honorable
+mote nut
+moth ball
+moth-balled
+moth bean
+moth blight
+moth-eat
+moth-eaten
+mother cask
+mother cell
+mother country
+Mothering sunday
+mother-in-law
+mother language
+mother ship
+mother-sick
+mother-spot
+mother tongue
+motion block
+motion photomicrograph
+motion-picture camera
+motion-picture projector
+motion sickness
+motive column
+motive-monger
+motive-mongering
+motive power
+motley color
+motley-minded
+motmot blue
+motmot green
+Moto meter
+motor ambulance
+motor assembler
+motor builder
+motor-camper
+motor-camping
+motor corps
+motor court
+motor-driven
+motor impulse
+motor-minded
+motor-mindedness
+motor torpedo boat
+mottled-top disease
+mottle-leaf
+mottle-leaf mosaic
+motto kiss
+motuca fly
+moubata bug
+moudy-warp
+mound bird
+mound builder
+mound-building
+mound maker
+mound making
+mountain accentor
+mountain adder
+mountain bracken
+mountain-built
+mountain bunch grass
+mountain-dwelling
+mountain fern
+mountain fever
+mountain flax
+mountain foxtail
+mountain-girdled
+mountain-high
+mountain holly fern
+mountain-loving
+mountain maker
+mountain making
+mountain parsley
+mountain redtop
+mountain rice
+mountain-sick
+mountain sickness
+mountain spleenwort
+Mountain tatar
+mountain timothy
+mountain-walled
+Mount badon
+mounting medium
+mouse barley
+mouse bloodwort
+mouse-brown
+mouse-color
+mouse-colored
+mouse-dun
+mouse-ear
+mouse-ear cress
+mouse-eared
+mouse-ear hawkweed
+mouse-eaten
+mouse grass
+mouse-killing
+mouse-still
+mousetail grass
+mousetrap switch
+mousing hook
+mouth breathing
+mouth-filling
+mouth footed
+mouth harp
+mouth hole
+mouth-made
+mouth-watering
+movable-do system
+movie-goer
+movie-minded
+moving cause
+moving cluster
+moving-coil galvanometer
+moving-iron meter
+mowing grass
+mowing machine
+mowrah butter
+mowrah-seed oil
+m-ple point
+M radiation
+M roof
+M series
+M-shaped
+M star
+M-swahili
+M tooth
+M-type star
+Muav limestone
+much-admired
+much-advertised
+much-branched
+much-coiled
+much-containing
+much-devouring
+much-discussed
+much-enduring
+much-engrossed
+much-honored
+much-hunger
+much-lauded
+much-loved
+much-loving
+much-mooted
+much-pondering
+much-praised
+much-revered
+much-sought
+much-suffering
+much-valued
+much-worshiped
+mucilage canal
+mucilage cell
+mucilage duct
+muckle hammer
+muck rolls
+mucoitin-sulphuric
+mucus body
+mud-bespattered
+mud-built
+mud-color
+mud-colored
+muddle-minded
+muddy-complexioned
+muddy-mettled
+mud-exhausted
+mud heap
+mud house
+mud-lost
+mud pie
+mud puddle
+mud-roofed
+mud-shot
+mud-splashed
+mud-walled
+muermo family
+muff coupling
+muffin cap
+muffin pan
+muffin turner
+muffle furnace
+muffle-jaw
+muffle kiln
+muffle-shaped
+muga moth
+muga silk
+mugho pine
+mug-wet
+muir ill
+muir poot
+mui-tsai
+mulatto jack
+mulatto-wood
+mulberry bird
+mulberry-faced
+mulberry family
+mulct law
+mule armadillo
+mule chair
+mule-jenny
+muley axle
+muley head
+muley saw
+mulga grass
+mulier puisne
+mulier younger
+mullein dock
+mullein foxglove
+mullein pink
+mullet hawk
+mull muslin
+multiflora rose
+multiple algebra
+multiple allelomorph
+multiple-clutch
+multiple-die
+multiple-disk
+multiple-disk clutch
+multiple-dome
+multiple-drill
+multiple-line
+multiple-pass
+multiple-series
+multiple-speed
+multiple telegraph
+multiple thread
+multiple-threaded
+multiple-toothed
+multiple-tuned
+multiplication table
+Mumbo jumbo
+Mumbo-jumboism
+mummy apple
+mummy brown
+mummy case
+mummy wheat
+mumping day
+mung bean
+Muratorian canon
+murexide reaction
+murillo bark
+murmur diphthong
+Musca borealis
+muscle-bound
+muscle-building
+muscle cell
+muscle-celled
+muscle column
+muscle-kneading
+muscle maker
+muscle making
+muscle-tired
+muscle tissue
+Muscovy company
+Muscovy duck
+musculocutaneous nerve
+Muse-descended
+Muse-haunted
+Muse-inspired
+Muse-led
+Muse-loved
+Muse-ridden
+musette bag
+museum beetle
+museum piece
+mush-kinu
+mushroom-colored
+mushroom-grown
+mushroom-shaped
+mushroom system
+mush rot
+musica mensurata
+music box
+music-copying
+music-drawing
+music-flowing
+music-footed
+music-mad
+music-panting
+music paper
+music room
+music speech
+music-stirring
+music-tongued
+musk ambrette
+musk bag
+muskeg moss
+musket arrow
+musk parrot
+muskrat weed
+muskus grass
+muslin clipper
+muslin delaine
+mussaenda coffee
+mussel bill
+mussel crab
+mustache cup
+mustache monkey
+mustang grape
+mustard beetle
+mustard family
+muster-out
+muster roll
+mutamur in illis
+mutation fox
+mutation mink
+mutation pressure
+mutation stop
+muth-labben
+mutton cane
+mutton grass
+mutton-legger
+muzzle-loader
+muzzle-loading
+muzzle ring
+muzzle velocity
+myall wood
+Mycelia-sterilia
+mydas fly
+myelin sheath
+myogen fibrin
+myosin fibrin
+myosotis blue
+myriad-minded
+myricyl alcohol
+myrobalan family
+myrtle berry
+myrtle bird
+myrtle-leaved
+mystery grass
+mystery religion
+mystico-allegoric
+mystico-religious
+mythico-historical
+mythico-philosophical
+mythico-romantic
+Nabeshima ware
+nagaed wood
+nag-tailed
+nail-bearing
+nail bed
+nail bit
+nail-biting
+nail bone
+nail caster
+nail-clipping
+nail-cutting
+nail filer
+nail filing
+nail fold
+nail-headed
+nailhead rust
+nailhead spar
+nailhead spot
+nail hole
+nail maker
+nail making
+nail molder
+nail-paring
+nail-pierced
+nail puller
+nail set
+nail-shaped
+nail-studded
+nail-tailed
+nail water
+Nair al zaurak
+Nair family
+naked-armed
+naked-bladed
+naked-eared
+naked-eye
+naked-eyed
+naked floor
+naked-flowered
+naked-fruited
+naked oat
+naked-seeded
+naked-stalked
+naked-tailed
+nake-footed
+namby-pambical
+namby-pambics
+namby-pambiness
+namby-pamby
+namby-pambyish
+namby-pambyism
+name day
+name part
+name plate
+namma hole
+nand pearl
+nankeen bird
+nankeen lily
+Nankeen porcelain
+Nankeen yellow
+Nanking porcelain
+Nanking yellow
+nanny goat
+nanny plum
+napa leather
+nap hand
+naphtha distiller
+naphthol black
+naphthol blue black
+naphthol yellow
+Naphthylamine black d
+naphthyl methyl ketone
+napkin pattern
+napkin ring
+Napoleon blue
+narcissus fly
+narcotico-acrid
+narcotico-irritant
+narkul grass
+Narodna skupshtina
+narra amarilla
+narra blanca
+narra encarnada
+narrow-backed
+narrow-billed
+narrow-bladed
+narrow-brained
+narrow-breasted
+narrow-celled
+narrow-chested
+narrow-crested
+narrow-ended
+narrow-eyed
+narrow-faced
+narrow-fisted
+narrow-guage
+narrow-guaged
+narrow-headed
+narrow-hipped
+narrow-jointed
+narrow-laced
+narrow-leaved
+narrow-leaved oat grass
+narrow-meshed
+narrow-minded
+narrow-mindedly
+narrow-mindedness
+narrow-mouthed
+narrow-necked
+narrow-nosed
+narrow-petaled
+narrow-rimmed
+narrow-seeded
+narrow-shouldered
+narrow-shouldred
+narrow-skulled
+narrow-souled
+narrow-spirited
+narrow-spiritedness
+narrow-streeted
+narrow-throated
+narrow-toed
+narrow-visioned
+narrow-waisted
+nasturtium family
+nasturtium red
+nasturtium yellow
+nation-state
+native-born
+native millet
+native timothy
+natural-born
+naturalis possessio
+nature deity
+nature myth
+nature-print
+nature printing
+nature spirit
+nature study
+nature worship
+naughty pack
+nautch girl
+Navaho blanket
+Navaho sandstone
+navel orange
+navel pipe
+navel point
+navel-shaped
+navigating officer
+navigation act
+navy agent
+navy bean
+navy bill
+navy blue
+navy board
+navy green
+navy league
+navy leaguer
+Navy list
+navy plug
+Navy register
+navy yard
+n-dimensional
+Neanderthal man
+neap tide
+near-acquainted
+near-adjoining
+near-bordering
+near-by
+near-colored
+near-coming
+near-dwelling
+Near eastern
+near-fighting
+near-following
+near-growing
+near-guessed
+near-hand
+near-legged
+near-related
+near-resembling
+near-sight
+near-smiling
+near-stored
+near-threatening
+near-touching
+near-ushering
+near-white
+neat-ankled
+neat-dressed
+neat-faced
+neat-fingered
+neat-folded
+neat-footed
+neat-handed
+neat-handedly
+neat-handedness
+neat house
+neat-limbed
+neat-looking
+neat soap
+neb-neb
+necessity money
+neck-break
+neck-breaking
+neck canal cell
+neck cell
+neck-cracking
+neck-deep
+neck-fast
+neck handkerchief
+neck-high
+neck-hole
+neck journal
+necklace orchid
+necklace poplar
+necklace tree
+neck molding
+neck rot
+neck strap
+neck-stretching
+neck verse
+neck yoke
+nectar-bearing
+nectar bird
+nectar-breathing
+nectar-dropping
+nectar-loving
+nectar-secreting
+nectar-seeking
+nectar-spouting
+nectar-streaming
+nectar-tongued
+need-be
+needle-and-thread
+needle-bar
+needle bath
+needle beam
+needle-billed
+needle blight
+needle bug
+needle cast
+needle chervil
+needle dam
+needle diatom
+needle file
+needle fir
+needle-form
+needle furze
+needle girder
+needle gorse
+needle grass
+needle grinder
+needle grinding
+needle gun
+needle ironstone
+needle juniper
+needle lace
+needle-leaved
+needle loom
+needle-made
+needle-nosed
+needle ore
+needle palm
+needle point
+needle-pointed
+needle pointer
+needle-point lace
+needle-scarred
+needle-shaped
+needle-sharp
+needle spar
+needle spike rush
+needle telegraph
+needle tooth
+needle trade
+needle valve
+needle weir
+needle whin
+need-not
+needs-be
+neel-bhunder
+neer-do-well
+ne exeat
+negation-proof
+negative-pole
+neglected-looking
+negro corn
+negrohead beech
+neighborhood house
+N electron
+Neo-attic
+Neo-babylonian
+Neo-catholic
+Neo-celtic
+Neo-christianity
+Neo-darwinian
+Neo-darwinism
+Neo-darwinist
+Neo-egyptian
+Neo-gothic
+Neo-greek
+Neo-hebraic
+Neo-hebrew
+Neo-hegelian
+Neo-hegelianism
+Neo-hellenic
+Neo-hellenism
+Neo-hindu
+Neo-kantian
+Neo-kantianism
+Neo-kantism
+Neo-lamarckian
+Neo-lamarckism
+Neo-lamarckist
+Neo-latin
+Neo-malthusian
+Neo-malthusianism
+Neo-manichaean
+Neo-marxian
+Neo-mendelian
+Neo-mendelism
+neon lamp
+neon tetra
+neon tube
+Neo-persian
+Neo-plantonic
+Neo-platonician
+Neo-platonism
+Neo-platonist
+Neo-punic
+Neo-pythagorean
+Neo-pythagoreanism
+Neo-roman
+Neo-sanskrit
+Neo-sanskritic
+Neo-scholastic
+Neo-scholasticism
+Neo-sogdian
+Neo-sumerian
+Neo-syriac
+Neo-thomism
+neoza pine
+nephelite-basanite
+nephelite-diorite
+nephelite-porphyry
+nephelite-syenite
+nephelite-tephrite
+nephro-ureterectomy
+Neptune green
+neroli camphor
+neroli oil
+nerve-ache
+nerve block
+nerve canal
+nerve cavity
+nerve cell
+nerve-celled
+nerve center
+nerve cord
+nerve-cutting
+nerve-deaf
+nerve-deafness
+nerve-destroying
+nerve eminence
+nerve ending
+nerve fiber
+nerve impulse
+nerve-irritating
+nerve net
+nerve-racked
+nerve-racking
+nerve-rending
+nerve-ridden
+nerve ring
+nerve-shaken
+nerve-shaking
+nerve sheath
+nerve stretching
+nerve-tingling
+nerve trunk
+nerve-trying
+nerve-winged
+nervous breakdown
+nervous system
+nest box
+nest egg
+nest fungus
+net area
+net assets
+net blotch
+net earnings
+net-fashion
+net fixer
+nether vert
+nether world
+net income
+neti neti
+net interest
+net necrosis
+net plankton
+net profit
+net silk
+net tare
+netted-veined
+nettie-wife
+netting knot
+nettle butterfly
+nettle cell
+nettle cloth
+nettle creeper
+nettle family
+nettle geranium
+nettle hemp
+nettle-leaved
+nettle potato
+nettle rash
+nettle-rough
+nettle-stung
+nettle tree
+nettling cell
+net ton
+net tonnage
+net tracery
+net valuation
+net value
+net-veined
+net weaver
+net weight
+net-winged
+net worth
+neural arch
+neural axis
+neural canal
+neural cavity
+neural crest fold
+neural gland
+neural groove
+neural lamina
+neural plate
+neural process
+neural shield
+neural spine
+neural tube
+neuromotor apparatus
+neuron doctrine
+neuter passive
+neutral point
+neutral position
+neutral zone
+Neutral zone
+Neva green
+never-ceasing
+never-certain
+never-changing
+never-conquered
+never-constant
+never-daunted
+never-dead
+never-dietree
+never-dying
+never-ended
+never-ending
+never-fading
+never-failing
+never-lasting
+never-needed
+never-never country
+never-quenching
+never-ready
+never-resting
+never-satisfied
+never-say-die
+never-setting
+never-shaken
+never-silent
+never-sleeping
+never-smiling
+never-stable
+never-strike
+never-swerving
+never-tamed
+never-tiring
+never-trodden
+never-twinkling
+never-vacant
+never-varied
+never-varying
+never-waning
+never-wearied
+never-winking
+never-withering
+new-admitted
+new-apparel
+new-array
+new-awaked
+new-begotten
+new-bladed
+new-bloomed
+new-blown
+new-built
+new-create
+new-cut
+newel stair
+New england
+New englander
+New englandish
+New englandism
+new-fashion
+new-fashioned
+new-fire method
+new-front
+new-furbish
+new-grown
+New hampshire
+New hampshirean
+New hampshirite
+New jersey
+New jerseyite
+new-laid
+new-light
+new-looking
+new-made
+Newmarket coat
+New mexican
+new-mint
+new-model
+new-modeler
+new moon
+new-mown
+new-name
+new-people
+new-rich
+new-rigged
+new-risen
+news agency
+news agent
+news bell
+news case
+news dealer
+news editor
+news-greedy
+news item
+news-making
+newspaper post
+newspaper syndicate
+new-spun
+news-seeking
+news vendor
+news writer
+New thought
+New thoughter
+New thoughtist
+New world
+new-written
+new-wrought
+new-year
+New years day
+New years eve
+New york
+New yorker
+New zealand
+New zealander
+next best
+next door
+next friend
+next ways
+Nez perce
+ngai camphor
+Niam-niam
+nibby-jibby
+nick-eared
+nickel bronze
+nickel calciner
+nickel carbonyl
+nickel glance
+nickel gray
+nickel green
+nickel gymnite
+nickel-iron accumulator
+nickel ocher
+nickel-plate
+nickel silver
+nickel steel
+nicker nut
+nicker tree
+nicotine sulphate
+niddle-noddle
+niddy-noddy
+nid-nod
+nievie-nievie-nick-nack
+niff-naff
+niff-naffy
+niffy-naffy
+niger oil
+niger seed
+nigger bug
+nigger chaser
+nigger chub
+nigger daisy
+niggerhead cactus
+nigger pine
+nigh-destroyed
+nigh-drowned
+nigh-ebbed
+nigh-hand
+nigh-naked
+nigh-past
+nigh-spent
+night adder
+night ape
+night bird
+night-black
+night-blind
+night blindness
+night-blooming
+night-blowing
+night blue
+night bolt
+night-born
+night-bringing
+night cart
+night chair
+night-cheering
+night-clad
+night-cloaked
+night clothes
+night cloud
+night club
+night-contending
+night court
+night-cradled
+night crawler
+night crow
+night-dark
+night-decking
+night dial
+night-dispersing
+night editor
+night emerald
+night-enshrouded
+night-eyed
+night-fallen
+night-faring
+night-feeding
+night-filled
+night fire
+night flower
+night-flowering
+night-fly
+night-flying
+night-folded
+night-foundered
+night-gaping
+night green
+night-grown
+night-haired
+night-haunted
+night heron
+night-hid
+night jasmine
+night kaka
+night key
+night lamp
+night latch
+night letter
+night life
+night light
+night line
+night-mantled
+night monkey
+night-overtaken
+night owl
+night palsy
+night parrot
+night partridge
+night piece
+night-prowling
+night rail
+night raven
+night rider
+night-riding
+night-robbing
+night robe
+night-robed
+night rocket
+night-rolling
+night-scented
+night school
+nightshade family
+night shift
+night-shining
+night singer
+night-singing
+night soil
+night song
+night sparrow
+night spell
+night steed
+night stick
+night-straying
+night-struck
+night-swaying
+night sweat
+night-swift
+night-swollen
+night terror
+night-traveling
+night-tripping
+night-veiled
+night vision
+night-wandering
+night warbler
+night-warbling
+night watch
+night watcher
+night-watching
+night watchman
+night willow herb
+nigrosine spirit-soluble
+nigrosine water-soluble
+nihil album
+nihil debet
+nihil dicit
+nihil ex nihilo
+nihil habet
+nilly-willy
+nimble-eyed
+nimble-feathered
+nimble-fingered
+nimble-footed
+nimble-headed
+nimble-heeled
+nimble-jointed
+nimble-mouthed
+nimble-moving
+nimble-pinioned
+nimble-shifting
+nimble-spirited
+nimble-stepping
+nimble-tongued
+nimble-toothed
+nimble will
+nimble-winged
+nimble-witted
+niminy-pimininess
+niminy-piminy
+niminy-piminyism
+nimmy-pimmy
+nim tree
+nine-banded
+nine-circled
+nine-cornered
+nine-day
+nine-eyed
+nine-eyed eel
+nine-eyes
+nine-foot
+nine-hole
+nine-hour
+nine-inch
+nine-jointed
+nine-killer
+nine-knot
+nine-lived
+nine-mile
+nine-part
+nine-part measure
+nine-part time
+ninepenny morris
+ninepin block
+nine-ply
+nine-point
+nine-point circle
+nine-pound
+nine-pounder
+nine-power
+Nine-power treaty
+nine-share
+nine-shilling
+nine-spined
+nine-spined stickleback
+nine-spotted
+nine-syllabled
+nine-tailed
+ninety-acre
+ninety-day
+ninety-eight
+ninety-eighth
+ninety-fifth
+ninety-first
+ninety-five
+ninety-four
+ninety-fourth
+ninety-hour
+ninety-mile
+ninety-nine
+ninety-ninth
+ninety-one
+ninety-second
+ninety-seven
+ninety-seventh
+ninety-six
+ninety-sixth
+ninety-third
+ninety-three
+ninety-ton
+ninety-two
+ninety-word
+nine-voiced
+nine-word
+nine-year
+ninth-born
+ninth-built
+ninth-class
+ninth-formed
+ninth-hand
+ninth-known
+ninth-mentioned
+ninth-rate
+ninth-told
+nipa alcohol
+nipa sugar
+nipper crab
+nipperty-tipperty
+nipple cactus
+nisi prius
+nissuee trout
+niter-blue
+niter cake
+nit grass
+nitride process
+nitrile base
+nitro-cellulose
+nitro-cotton
+nitrogen balance
+nitrogen chloride
+nitrogen cycle
+nitrogen dioxide
+nitrogen equilibrium
+nitrogen family
+nitrogen fixation
+nitrogen fixer
+nitrogen-fixing
+nitrogen-free
+nitrogen iodide
+nitrogen monoxide
+nitrogen mustard
+nitrogen oxide
+nitrogen pentoxide
+nitrogen peroxide
+nitrogen tetroxide
+nitrogen trioxide
+nitro group
+nitro-hydro-carbon
+nitro powder
+nitrosyl chloride
+nitta tree
+njave butter
+njave oil
+no-account
+no-ball
+no-being
+noble-born
+noble-couraged
+noble-featured
+noble fir
+noble-fronted
+noble gas
+noble-looking
+noble metal
+noble-minded
+noble-mindedly
+noble-mindedness
+noble-natured
+noble-spirited
+noble-tempered
+noble-visaged
+no-count
+nodding cap
+noddy tern
+node longitude
+nodule disease
+Nodus secundus
+no-eye pea
+no go
+no-go gauge
+no-good
+noise field intensity
+noisette brown
+Noisette rose
+nolle prosequi
+noll-kholl
+nol-pros
+no man
+nomination borough
+Non-african
+Non-alexandrian
+Non-american
+Non-anglican
+nonapparent easement
+nonapparent servitude
+Non-arab
+Non-arabic
+Non-archimedean
+Non-aryan
+Non-asiatic
+nonassessable mutual
+Non-attic
+Non-bantu
+Non-baptist
+Non-biblical
+Non-bolshevik
+Non-bolshevist
+Non-brahmanical
+Non-british
+Non-buddhist
+Non-calvinist
+Non-catholic
+Non-caucasian
+Non-celtic
+nonce word
+Non-chaucerian
+Non-chinese
+nonchord tone
+Non-christian
+noncommissioned officer
+noncommutative algebra
+non compos
+noncondensing engine
+Non-congregational
+Non-congressional
+non-co-operate
+non-co-operation
+non-co-operationist
+non-co-operative
+non-co-operator
+non-co-ordination
+Non-cymric
+Non-czech
+Non-danish
+Non-darwinian
+Non-druid
+Non-egyptian
+Non-egyptologist
+Non-english
+Non-euclidean
+Non-european
+Non-fascist
+Non-flemish
+nonforfeiture law
+Non-french
+Non-gaelic
+Non-german
+Non-germanic
+Non-gothic
+Non-government
+Non-greek
+Non-hamitic
+Non-hebraic
+Non-hebrew
+Non-hellenic
+Non-hibernian
+Non-hindu
+Non-hinduized
+Non-homeric
+Nonimportation act
+Non-indian
+Non-indo-european
+Nonintercourse act
+Non-ionic
+Non-irish
+Non-islamic
+Non-israelite
+Non-israelitish
+Non-italian
+Non-japanese
+Non-jew
+Non-jewish
+Non-kaffir
+Non-latin
+Non-legendrean
+Non-lutheran
+Non-magyar
+Non-malay
+Non-malayan
+Non-malthusian
+Non-marcan
+Non-mason
+Non-mediterranean
+nonmember bank
+Non-mendelian
+Non-methodist
+Non-mohammedan
+Non-mongol
+Non-mongolian
+Non-moorish
+Non-mormon
+Non-moslem
+Non-moslemah
+non-natty
+Non-negritic
+Non-negro
+Non-nicene
+Non-norman
+Non-norse
+nonny-nonny
+Non-pali
+Non-paninean
+Non-parisian
+Non-peruvian
+Non-polish
+Non-portuguese
+Non-presbyterian
+non-pros
+Non-protestant
+Non-prussian
+Non-pythagorean
+Non-quaker
+non-recoiling
+non-reduction
+nonre-eligibility
+nonre-eligible
+Non-riemannian
+Non-roman
+Non-russian
+Non-sanskritic
+Non-saxon
+Non-scandinavian
+Non-semite
+Non-semitic
+nonsex-linked
+Non-shakespearean
+Non-sienese
+Non-slavic
+Non-spanish
+Non-spartan
+Non-stoic
+Non-swedish
+Non-swiss
+Non-syrian
+Non-tartar
+Non-teuton
+Non-teutonic
+Non-trinitarian
+Non-turkish
+Non-tuscan
+Non-ukrainian
+Non-umbrian
+nonunion shop
+Non-unitarian
+Non-universalist
+Non-uralian
+nonvalue bill
+Non-vedic
+Non-venetian
+Non-vergilian
+Non-virginian
+Non-welsh
+Non-yahgan
+Non-zionist
+noodle-head
+noogoora bur
+nook shaft
+nook-shotten
+no one
+no-par
+no-par stock
+no-par-value
+no-place
+no-rent land
+Norman-french
+nor-noreast
+Norse-american
+north-countriness
+north country
+north-countryman
+northern redtop
+north-following
+north mark
+north-northeast
+north-northeastward
+north-northeastwards
+north-northwest
+north-northwestward
+north-northwestwards
+north-polar
+North pole
+north-preceding
+north-seeking
+north shore
+north side
+north-sider
+nose ape
+nose bag
+nose-belled
+nose bit
+nose dive
+nosee-um
+nose flute
+nosegay tree
+nose glasses
+nose-grown
+nose guard
+nose-heavy
+nose-high
+nose hitch
+nose iron
+nose key
+nose leaf
+nose-leafed
+nose-led
+nose-nippers
+nose peg
+nose pipe
+nose-pulled
+nose ring
+nose-shy
+nose stiffener
+nose-thumbing
+no-show
+no-side
+no-surrender
+no-system
+notary public
+not-being
+notch block
+notched-leaved
+notch-lobed
+not-delivery
+note-blind
+note-blindness
+note broker
+note paper
+not-ephemeral
+note shaver
+not-good
+nothing like
+nothing off
+no-thoroughfare
+not-living
+not-out
+Notre dame
+no-trump
+no-trumper
+not-soul
+noun clause
+noun equivalent
+Nova scotian
+novel-crazed
+novel maker
+novel-making
+novel-purchasing
+novel reader
+novel-reading
+novel-sick
+novelty siding
+novel writer
+novel-writing
+November meteor
+Nov-esperanto
+novice point
+Novo-zelanian
+now-accumulated
+now-being
+now-big
+now-borne
+now-dead
+now-existing
+now-fallen
+now-full
+nowhere near
+now-known
+now-lost
+now-neglected
+now-waning
+n-ple
+n-ply
+N radiation
+N series
+N-shaped
+N star
+N station
+nth degree
+n-tuple
+n-tuply
+N-type star
+Nu-arawak
+nubbin disease
+nubecula major
+nubecula minor
+nub yarn
+nuclein base
+nuisance tax
+nulla-nulla
+null method
+number field
+number lottery
+number one
+number plate
+numbers pool
+nun buoy
+nun moth
+nurse balloon
+nurse cell
+nurse child
+nurse crop
+nurse frog
+nurse mother
+nursery rhyme
+nursery school
+nursery stock
+nurse shark
+nurse tree
+nursing bottle
+nursing foot
+nursing home
+nut bone
+nut brown
+nut buoy
+nut coal
+nut crab
+nut-cracking
+nut dash
+nutgall oak
+nut-gathering
+nut grass
+nut margarine
+nutmeg apple
+nutmeg bird
+nutmeg butter
+nutmeg family
+nutmeg flower
+nutmeg geranium
+nutmeg hickory
+nutmeg liver
+nutmeg melon
+nutmeg oil
+nutmeg pigeon
+nut oil
+nut palm
+nut pine
+nut quad
+nutrient ratio
+nut rush
+nut sedge
+nut-shaped
+nut-shelling
+nut-sweet
+nut-tapper
+nut-toasting
+nutty-brown
+nutty-flavored
+nutty-looking
+nux vomica
+nymph pink
+oak apple
+oak bark
+oak-beamed
+oak beauty
+oak blight
+oak-boarded
+oak brown
+oak button
+oak canker
+oak chestnut
+oak-clad
+oak-covered
+oak-crested
+Oak crown
+oak-crowned
+oak family
+oak fern
+oak fly
+oak fungus
+oak gall
+oak green
+oak leaf
+oak-leaf brown
+oak-leaf cluster
+oak leather
+oak-leaved
+oak moss
+oak nut
+oak-paneled
+oak pruner
+oak-tanned
+oak thistle
+oak-timbered
+oak toad
+oak tree
+oak-tree money
+oak veneer
+oak-wainscoted
+oak wart
+oar feather
+oar-footed
+oat-bearing
+oat bread
+oat cleaner
+oat-crushing
+oat-fed
+oat field
+oat flour
+oat grass
+oat grinder
+oat-growing
+oath-bound
+oath breaker
+oath-breaking
+oath-despising
+oath-detesting
+oath helper
+oath-making
+oath purgatory
+oath suppletory
+oat huller
+oat kiln
+oatlike bent grass
+oatlike grass
+oat mill
+oat-producing
+oatseed bird
+oat-shaped
+oat sheller
+oat thistle
+oat thresher
+obispo pine
+obiter dictum
+object ball
+object glass
+object language
+object lens
+object lesson
+object matter
+object space
+object speculum
+object staff
+object teaching
+oblique-angled
+oblique-fire
+oblong-acuminate
+oblong-cordate
+oblong-cylindric
+oblong-elliptic
+oblong-elliptical
+oblong-falcate
+oblong-hastate
+oblong-lanceolate
+oblong-leaved
+oblong-linear
+oblong-ovate
+oblong-ovoid
+oblong-spatulate
+oblong-triangular
+oblong-wedgeshaped
+observation balloon
+observation kite
+observation mine
+observation squadron
+obstacle race
+obturator artery
+obturator canal
+obturator fascia
+obturator membrane
+obturator nerve
+obturator vein
+obtuse-angled
+obtuse-angular
+obtuse bisectrix
+occulting light
+occupation bridge
+Occupation day
+occupation franchise
+occupation neurosis
+occupation stamp
+ocean basin
+ocean-born
+ocean-borne
+ocean bug
+ocean-carrying
+ocean-compassed
+ocean-flooded
+ocean front
+ocean-girdled
+ocean-going
+ocean green
+ocean-guarded
+Oceanic mongol
+ocean lane
+ocean liner
+ocean marine insurance
+ocean-rocked
+ocean-severed
+ocean-skirted
+ocean-smelling
+ocean-spanning
+ocean spray
+ocean-sundered
+ocean trade
+ocean tramp
+ocean-wide
+ocher-brown
+ocher-colored
+ocher-red
+ocher-yellow
+ochr-el-guerche
+Ocoee series
+octahedron group
+octane number
+octave flute
+octave scale
+octet theory
+October bird
+October club
+ocuba wax
+ocular spectroscope
+ocular spot
+Oculi sunday
+odd-bell system
+odd-come-short
+odd-come-shortly
+odd-fangled
+Odd fellow
+Odd fellowship
+odd-humored
+odd-jobber
+odd-looking
+odd man
+odd-mannered
+odd-me-dod
+odd-numbered
+odd-pinnate
+odd-shaped
+odds-on
+odd-sounding
+odd-thinking
+odd-toed
+Oedipus complex
+off-bear
+off-bearer
+off-bitten
+off-board
+off-break
+off-center
+off-centered
+off-chance
+off-color
+off-colored
+off-corn
+off-cutting
+off-drive
+offertory veil
+off-fall
+off-falling
+off-flavor
+off-flow
+off-glide
+off-go
+offhand position
+off-hit
+off-hitting
+office-bearer
+office-boy
+office building
+office copy
+office fixture
+office force
+office found
+office furniture
+office girl
+office hours
+office lawyer
+office lock
+office manager
+office practice
+office premium
+officer plant
+officer tree
+office seeker
+office-seeking
+off-load
+off-look
+off-lying
+off-peak
+off-put
+off-reckoning
+offset-litho
+offset lithography
+offset sheet
+offset staff
+off-setting
+off-shaving
+off-shed
+off side
+off-sloping
+off-sorts
+off-stage
+off-standing
+off-taking
+off-the-record
+off-thrown
+off-turning
+off-wheel
+off-wheeler
+off-white
+Of table
+oft-named
+O-gee
+ogee arch
+Ogeechee lime
+ogee doorway
+O g washer
+ohm-ammeter
+ohm-ampere system
+ohm-mile
+oil asphalt
+oil bath
+oil-bearing
+oil beetle
+oil box
+oil-break switch
+oil-bright
+oil burner
+oil-burning
+oil bushing
+oil cake
+oil camp
+oil-carrying
+oil cellar
+oil circuit breaker
+oilcloth knife
+oil color
+oil column
+oil-containing
+oil-cooled
+oil cup
+oil derrick
+oil-dispensing
+oil distiller
+oil-distributing
+oil drill
+oil-driven
+oil-electric
+oil engine
+oil extractor
+oil-fed
+oil feeder
+oil field
+oil-filled
+oil-finding
+oil-finished
+oil-fired
+oil-forming
+oil fuel
+oil-fueled
+oil gas
+oil-gas tar
+oil gauge
+oil gilding
+oil gland
+oil green
+oil groove
+oil gun
+oil-harden
+oil-hardening
+oil heater
+oil-insulated
+oil-laden
+oil land
+oil-lit
+oil meal
+oil mill
+oil milling
+oil mold
+oil nut
+oil omphacine
+oil paint
+oil painting
+oil palm
+oil pan
+oil plant
+oil press
+oil-producing
+oil pulp
+oil-pumping
+oil refiner
+oil-refining
+oil-regulating
+oil ring
+oil rock
+oil sand
+oil-saving
+oil-seal
+oil-secreting
+oil shale
+oil shark
+oil sheet
+oil silk
+oil slick
+oil-smelling
+oil-soaked
+oil spot
+oil switch
+oil tanker
+oil tanning
+oil tar
+oil-temper
+oil-tempered
+oil-testing
+oil-thickening
+oil-tongued
+oil tree
+oil tube
+oil varnish
+oil well
+oil whetstone
+oily-brown
+oil yellow
+oil-yielding
+oily-looking
+oily-smooth
+oily-tongued
+oiticica oil
+old-age
+old-aged
+old-age pension
+old-age pensioner
+old bachelor
+old-bachelorish
+old-bachelorship
+Old bactrian
+old boy
+old-boyish
+old-clothesman
+old-established
+old-faced
+old-farrand
+old-farrandlike
+old-fashioned
+old-fashionedly
+old-fashionedness
+old-field birch
+old-field dove
+old-field lark
+old-field pine
+old-fogeydom
+old-fogy
+old-fogydom
+old-fogyish
+old-fogyism
+old-gathered
+old-gentlemanly
+old-gold
+old-growing
+Old guard
+Old guardism
+Oldham coupling
+old-ivory
+old-ladyhood
+old-line
+old-line company
+old-looking
+old-maidenish
+old-maidish
+old-maidism
+old-man cactus
+old-man fern
+old-new
+old-rose
+old-school
+Old-school
+Old-school baptist
+old-sighted
+old-sightedness
+old-standing
+old-style
+old-time
+old-timer
+old-timiness
+old-timy
+old-wifely
+old-wifish
+old witch grass
+old-womanish
+old-womanishness
+old-womanism
+old-womanly
+old-world
+old-worldish
+old-worldism
+old-worldliness
+old-worldly
+old-young
+oleander fern
+oleander scale
+oleaster family
+oleo gear
+oleo oil
+oleo strut
+olinda bug
+olive acanthus
+olive-backed
+olive-backed thrush
+olive bark
+olive berry
+olive-bordered
+olive branch
+olive brown
+olive-cheeked
+olive-clad
+olive-colored
+olive-complexioned
+olive crown
+olive drab
+olive dun
+olive family
+olive fly
+olive gnat
+olive gray
+olive green
+olive-greenish
+olive-growing
+olive gum
+olive-kernel oil
+olive knot
+olive mangrove
+olive nut
+olive oil
+Olive oil castile soap
+olive ore
+olive-pale
+olive plant
+olive plum
+olive quill
+olive scab
+olive scale
+olive-shaded
+olive-shadowed
+olive shell
+olive-sided
+olive-sided flycatcher
+olive-skinned
+olive-tree agaric
+olive tubercle
+olive yellow
+olivine-andesite
+olivine-basalt
+olla-podrida
+omander wood
+Omicron ceti
+omnibus bill
+omnibus box
+omnibus clause
+omnibus driver
+omnibus-driving
+omnibus-fashion
+omnibus-riding
+omnibus train
+omni-ignorant
+omnium-gatherum
+on-board
+once-accented
+once-born
+once-over
+once pinnate
+once removed
+once-run
+on-ding
+on-dit
+on-drive
+one-act
+one-acter
+one another
+one-armed
+one-blade
+one-bladed
+one-buttoned
+one-celled
+one-chambered
+one-class
+one-classer
+one-colored
+one-crop
+one-cusped
+one-day
+one-decker
+one-dimensional
+one-dollar
+one-eared
+one-eyed
+one-eyedness
+one fifth
+one-finned
+one-flowered
+one-foot
+one-footed
+one fourth
+one-grained
+one half
+one-hand
+one-handed
+one-handedness
+one-hearted
+one-hoofed
+one-horned
+one-horse
+one-humped
+one-hundred-percenter
+one-hundred-percentism
+one-ideaed
+one-inch
+one-jointed
+one-layered
+one-leaf
+one-leaved
+one leg
+one-legged
+one-leggedness
+one-letter
+one-line
+one-lunged
+one-man
+one-many
+one-minute
+one-nerved
+one-night
+one-night stand
+one-oclock
+one-one
+Oneonta sandstone
+one-petaled
+one-piece
+one-pipe
+one-pipe furnace
+one-point
+one-point perspective
+one-pope
+one-pound
+one-pounder
+one-price
+one-rail
+one-reeler
+one-ribbed
+one-roomed
+one-seater
+one-seeded
+one-sepaled
+one-septate
+one-sided
+one-sidedly
+one-sidedness
+ones self
+one-step
+one-storied
+one-story
+one-striper
+one-term
+one-third
+one-toed
+one-track
+one-two
+One-two-three
+one-valued
+one-way
+one-windowed
+one-winged
+one-word
+one-year
+onga-onga
+on-glaze
+onglette file
+on-glide
+on-go
+on-hit
+onion couch
+onion-eyed
+onion flute
+onion fly
+onion foot
+onion louse
+onion maggot
+onion mildew
+onion red
+onion set
+onionskin pink
+onion smudge
+onion smut
+onion structure
+onion twitch
+only-begotten
+only not
+on side
+on-stage
+on to
+onyx marble
+o-o
+o-o-a-a
+ooblastema filament
+ooze leather
+opal blue
+opal glass
+opal gray
+opaline green
+opal matrix
+opal-tinted
+open air
+open-airish
+open-airishness
+open-airism
+open-airness
+open-armed
+open-armedly
+open-back
+open-backed
+open-back press
+open-bladed
+open-breasted
+open-caisson
+open chain
+open-chested
+open-circuit
+open-coil
+open-countenanced
+open-crib
+open-cribbed
+open door
+open-doored
+open-eared
+open-end
+open-end bond
+open-ended
+open-endedness
+open-eyed
+open-eyedly
+open-face
+open-faced
+open-field
+open-fire
+open-flowered
+open-front
+open-fronted
+open-frontedness
+open-gaited
+open-grained
+open-headed
+open-hearth
+open-hearthed
+open-hearth furnace
+open-hearth process
+open house
+open-housed
+open-housedness
+opening bit
+opening die
+open-joint
+open-jointed
+open-kettle
+open-kneed
+open-letter
+open-letter proof
+open-lined
+open-market
+open-minded
+open-mindedly
+open-mindedness
+open-newel
+open-newel stair
+open-pan
+open-patterned
+open-phase
+open-phase relay
+open-pit
+open-pitted
+open-roofed
+open-rounded
+open-sand
+open-shelf
+open-shelved
+open-shop
+open-sided
+open-sidedly
+open-sidedness
+openside planer
+open-sleeved
+open-spaced
+open-spacedly
+open-spacedness
+open-spoken
+open-spokenly
+open-spokenness
+open-tank
+open-timber
+open-timbered
+open-timber roof
+open-timbre
+open-top
+open-topped
+open-view
+open-visaged
+open-weave
+open-webbed
+open-webbedness
+open-well
+open-windowed
+open-windowedness
+open-worked
+opera box
+opera cloak
+opera dancer
+opera flannel
+opera glass
+opera-going
+opera hat
+opera house
+opera-mad
+opera pink
+opera singer
+operating cost
+operations research
+ophthalmo-reaction
+opinion poll
+opium drinker
+opium-drinking
+opium-drowsed
+opium eater
+opium-eating
+opium poisoning
+opium poppy
+opium-shattered
+opium smoker
+opium-smoking
+opium taker
+opium-taking
+opossum mouse
+opossum shrimp
+opossum tree
+opossum wood
+opponent colors theory
+opposite-leaved
+opposite tide
+opsonocytophagic test
+optimum capacity
+Opus anglicum
+opus araneum
+opus consutum
+opus pectineum
+Orang benua
+orange aphid
+orange aurora
+orange basketworm
+orange berry
+orange blossom
+orange chipper
+orange-colored
+orange-crowned
+orange daisy
+orange-eared
+orange-fleshed
+orange-flower
+orange-flowered
+orange grower
+orange-headed
+orange-hued
+orange-leaf
+orange-leaf beetle
+orange leaf rust
+orange lily
+orange madder
+orange maggot
+orange marmalade
+orange melon
+orange orchard
+orange peel
+orange-peel bucket
+orange peeler
+orange pekoe
+orange quince
+orange quit
+orange-red
+orange-rufous
+orange rust
+orange scab
+orange scale
+orange-shaped
+orange-sized
+orange spoon
+orange stick
+orange-striped
+orange swallowwort
+orange-tailed
+orange-tawny
+orange-throated
+orange tip
+orange-tipped
+orange-tree
+orange vermilion
+orange water
+orange wife
+orange wine
+orange-winged
+Orang laut
+Orang malayu
+oratio obliqua
+oratio recta
+orbit sweeper
+orb weaver
+orchard fruit
+orchard grass
+orchard heater
+orchard heating
+orchard house
+orchard oriole
+orchella weed
+orchestra bells
+orchestra circle
+orchestra pit
+orchid family
+orchid fly
+orchid peat
+orchid pink
+orchilla weed
+ordeal bark
+ordeal bean
+ordeal root
+ordeal tree
+order blank
+orderly bin
+orderly book
+orderly officer
+orderly room
+orderly sergeant
+ordinary seaman
+ordinato-punctate
+ordnance engineer
+ordnance engineering
+ordnance map
+ordnance officer
+ordnance sergeant
+ore-bearing
+ore bed
+ore body
+ore bridge
+ore-buying
+ore car
+ore charger
+ore-crushing
+ore digger
+ore dressing
+ore-extracting
+ore-forming
+ore handler
+ore-handling
+ore hearth
+ore-hoisting
+or else
+ore mill
+ore-milling
+ore miner
+ore-mining
+ore process
+ore-roasting
+ore shoot
+ore smelter
+ore-smelting
+ore-washing
+ore weigher
+organ beater
+organ blower
+organ-blowing
+organ builder
+organ building
+organ cactus
+organ coral
+organ desk
+organ erector
+organ fish
+organ gallery
+organ-grinder
+organ gun
+organ harmonium
+organ loft
+organ maker
+organ-piano
+organ-pipe
+organ player
+organ point
+organ stop
+organ swell
+ori-ellipse
+orient blue
+orient pink
+orient red
+orient yellow
+orifice meter
+origanum oil
+Orions hound
+orl fly
+orlop deck
+ormolu varnish
+ornaments rubric
+Oroya fever
+orphan chamber
+orphreyed miter
+orpiment orange
+orpiment red
+orpiment yellow
+orpine family
+orra man
+orris oil
+orthoclase-basalt
+orthoclase-gabbro
+ortho-cousin
+ortho-orsellinic
+Osage orange
+oscillation circuit
+oscillation constant
+oscillation number
+oscillation transformer
+Osco-umbrian
+O-shaped
+osier-bordered
+osier cornel
+osier-fringed
+osier willow
+osier-woven
+os magnum
+osmi-iridium
+osmium lamp
+osmium oxide
+osmund brake
+osmund furnace
+osmund iron
+O star
+O station
+ostensible partner
+ostrich-egg
+ostrich-feather
+ostrich-feather grass
+ostrich fern
+Ostyak samoyed
+Ostyak-samoyedic
+Oswego tea
+Otceti cakowin
+other-group
+other-self
+other world
+otitis media
+otter board
+otter brown
+otter canoe
+otter raft
+otter sheep
+otter shell
+otter shrew
+otter trawl
+Ottoman cord
+Ottoman empire
+Ottoman turkish
+O-type star
+ouabe oil
+Ouachita stone
+ounce metal
+ouster le main
+out-and-out
+out-and-outer
+Out-babylon
+out-boarder
+outboard motor
+out-cargo
+out-clearer
+out-clearing
+out-craft
+outcrop mine
+outdoor theater
+out-group
+out guide
+Out-herod
+out-kneed
+outlet box
+outlet plate
+outline stitch
+Out-machiavelli
+Out-milton
+Out-nero
+out-of-bounds
+out-of-center
+out-of-course
+out-of-fashion
+out-of-focus
+out-of-hand
+out-of-humor
+out-of-joint
+out-of-office
+out-of-place
+out-of-plumb
+out-of-pocket
+out-of-print
+out-of-reach
+out-of-school
+out-of-season
+out-of-stock
+out-of-the-common
+out-of-the-way
+out-of-the-world
+out-of-town
+out-of-towner
+out-of-townish
+out-of-tune
+out-of-tunish
+out-of-turn
+out-of-vogue
+out-pointed
+outpost province
+Out-quixote
+outrigger torpedo
+outside broker
+outside caliper
+outside clinch
+outside finish
+outside form
+outside home
+outside jaunting car
+outside lap
+outside lead
+outside left
+outside loop
+outside right
+out sister
+out-soul
+Out-timon
+Out-tory
+outward-bound
+outward-bounder
+outward-flow turbine
+oval-arched
+oval-berried
+oval-bodied
+oval-bored
+oval chuck
+oval compass
+oval-faced
+oval-figured
+oval file
+oval-headed
+oval-lanceolate
+oval-leaved
+oval-shaped
+oval-truncate
+oval-visaged
+ovate-acuminate
+ovate-cordate
+ovate-cuneate
+ovate-cylindraceous
+ovate-cylindrical
+ovate-deltoid
+ovate-ellipsoidal
+ovate-elliptic
+ovate-lanceolate
+ovate-leaved
+ovate-oblong
+ovate-orbicular
+ovate-rotundate
+ovate-serrate
+ovate-serrated
+ovate-subulate
+ovate-triangular
+oven-baked
+oven builder
+oven-dried
+oven-dry
+oven furnace
+oven-shaped
+oven tit
+oven wood
+over-all
+over-and-over stitch
+over-counter
+overcurrent relay
+overdraft kiln
+overflow bug
+overflow pipe
+over-gear
+overhead price
+overlap fault
+overload circuit breaker
+overload relay
+overload starter
+overload switch
+over-round
+overseas cap
+overshot wheel
+over-size
+overthrust fault
+owala oil
+owala tree
+owl butterfly
+owl car
+owlet moth
+owl-eyed
+owl-faced
+owl fly
+owl-haunted
+owl-headed
+owl midge
+owl monkey
+owl moth
+Owl nebula
+owl parrot
+owl-sighted
+owl swallow
+owl-wide
+owl-winged
+own-form
+own-root
+own-rooted
+ox antelope
+ox ball
+ox balm
+ox bile
+ox bot
+ox daisy
+oxeye bean
+oxeye camomile
+ox-eyed
+oxeye daisy
+ox-eyed arch
+oxeye molding
+ox feather
+ox fence
+ox-foot
+Oxford blue
+Oxford chrome
+Oxford clay
+Oxford corner
+Oxford dash
+Oxford down
+Ox-god
+ox-headed
+oxide blue
+oxide brown
+oxide red
+oxide yellow
+oxidizing flame
+oxime group
+ox louse
+ox rail
+ox ray
+ox sole
+ox team
+oxter plate
+ox warble
+oxyacetylene blowpipe
+oxyacetylene cutting
+oxyacetylene welding
+oxy acid
+oxygen-acetylene
+oxygen-acetylene cutting
+oxygen-acetylene welding
+oxygen acid
+oxygen-hydrogen welding
+oxygen ratio
+oxyhydrogen blowpipe
+oxyhydrogen light
+oxyhydrogen microscope
+oxyquinoline sulphate
+Oxyrhynchus papyri
+oyster agaric
+oyster bar
+oyster bay
+oyster bed
+oyster catcher
+oyster crab
+oyster cracker
+oyster culture
+oyster-culturist
+oyster dredge
+oyster drill
+oyster farmer
+oyster fork
+oyster fungus
+oyster grass
+oyster knife
+oyster mushroom
+oyster plant
+oyster plover
+oyster rake
+oyster rock
+oyster-shaped
+oyster-shell bark louse
+oyster-shell scale
+oyster tongs
+oyster tree
+oyster white
+Ozark series
+Ozark state
+ozone paper
+paca-rana
+package advertising
+package conveyer
+package store
+pack animal
+pack bearer
+pack-bearing
+pack carrier
+pack drill
+pack driver
+pack duck
+packet boat
+packet day
+packet folio
+pack hoister
+pack ice
+pack-laden
+pack needle
+pack puller
+pack rat
+pack road
+pack sheet
+pack twine
+pad crimp
+paddle beam
+paddle board
+paddle boat
+paddle box
+paddle hole
+paddle plate
+paddle shaft
+paddle-shaped
+paddle staff
+paddle steamer
+paddle tumbler
+paddle wheel
+paddock pipe
+paddy blast
+paddy lucern
+paddywhack almanac
+pad eye
+padge owl
+pad groom
+pad hook
+pad horse
+padlock injunction
+padlock law
+pad saddle
+pad saw
+Pagano-christian
+Pagano-christianism
+Pagano-christianize
+page cord
+page gauge
+page proof
+page rest
+pagoda sleeve
+pagoda stone
+pagoda tree
+pai-hua
+paille finne
+pain-afflicted
+pain-assuaging
+pain-bearing
+pain-bought
+pain-chastened
+pain-dispelling
+pain-distorted
+pain-drawn
+pain-fearing
+pain-free
+pain-giving
+pain-inflicting
+pain-producing
+pain-racked
+pain spot
+pain-stricken
+paint-beplastered
+paint binder
+paint bridge
+paint brusher
+paint cleaner
+paint drier
+painted grass
+painter etcher
+painter etching
+painter graver
+painter graving
+painter stainer
+paint-filler
+paint-filling
+paint frame
+paint grinder
+paint hose
+paint keg
+paint mixer
+paint-mixing
+paint pot
+paint primer
+paint process
+paint remover
+paint-removing
+paint room
+paint-splashed
+paint-spotted
+paint-spraying
+paint-stained
+paint strake
+paint thinner
+paint-washing
+paint work
+paint-worn
+pain-worn
+pain-wrought
+pain-wrung
+pair-horse
+pair-oar
+pair-oared
+pair production
+pair royal
+Paisley shawl
+pakpak-lauin
+palace car
+palace guard
+Palae-alpine
+Palaeo-american
+Palaeo-asiatic
+Palaeo-christian
+palas kino
+palate bone
+Pale-asiatic
+pale bark
+pale-blooded
+pale-blue
+pale brandy
+pale-bright
+pale broomrape
+pale catechu
+pale-cheeked
+pale-colored
+pale-complexioned
+pale-dried
+pale-eared
+pale elder
+pale-eyed
+pale-faced
+pale-gray
+pale-green
+pale-hued
+pale laurel
+pale-leaved
+pale-livered
+pale-looking
+Paleo-american
+Paleo-amerind
+Paleo-asiatic
+Paleo-christian
+Paleo-eskimo
+Paleo-siberian
+pale-red
+pale-reddish
+pale-refined
+pale-souled
+pale-spirited
+pale-spotted
+pale-striped
+pales weevil
+pale-tinted
+palette knife
+pale-visaged
+pale-yellow
+paling board
+palisade cell
+palisade crown
+palisade parenchyma
+palisade worm
+palkee gharry
+palladium sponge
+pallet board
+pallet box
+pallet eye
+pallet leather
+pallet stone
+pallet tail
+pallial sinus
+pallid-faced
+pallid-fuliginous
+pallid-gray
+pallid-looking
+pallid-ochraceous
+pallid-tomentose
+pallisado crown
+pall-like
+pall-mall
+Palma christi
+palmarosa oil
+Palm beach
+palm-bearing
+palm beetle
+palm branch
+palm butter
+palm cabbage
+palm capital
+palm civet
+palm cockatoo
+palm crab
+palm-crowned
+palm dove
+palmella stage
+palmer fly
+palmer tree
+palmer trout
+palmer worm
+palmetto flag
+palmetto green
+palmetto scrub
+palm family
+palm fern
+palm-fringed
+palm grease
+palm greaser
+palm greasing
+palm green
+palm grub
+palm honey
+palm house
+palm kale
+palm kernel
+palm leaf
+palm-leaf fan
+palm-leaf hat
+palm lily
+palm marten
+palm nut
+palm oil
+palm peach
+palm play
+palm reader
+palm-shaded
+palm squirrel
+palm starch
+palm stay
+palm sugar
+Palm sunday
+palm swift
+palm-thatched
+palm-veined
+palm warbler
+palm wax
+palm weevil
+palm willow
+palm wine
+palm worm
+palmyra wood
+palo blanco
+palpebral fissure
+palsy-quaking
+palsy-shaken
+palsy-shaking
+palsy-sick
+palsy-stricken
+palsy-struck
+paludal fever
+paly-bendy
+pampas cat
+pampas deer
+pampas formation
+pampas fox
+pampas grass
+Pan-african
+Pan-afrikander
+Pan-afrikanderdom
+Panama balata
+Panama bark
+Panama congress
+Panama disease
+Panama hat
+Panama ipecac
+Panama laurel
+pan amalgamation
+Panama redwood
+Panama rubber
+Panama shell
+Panama wood
+Pan-america
+Pan-american
+Pan-americanism
+Pan-anglican
+Pan-arab
+Pan-arabia
+Pan-arabism
+Pan-asianism
+Pan-asiatic
+Pan-asiaticism
+Pan-babylonian
+Pan-babylonism
+pan boiler
+pan bolt
+Pan-britannic
+Pan-british
+pan-broil
+Pan-buddhism
+Pan-buddhist
+pancake bell
+pancake ice
+pancake plant
+Pan-celtic
+Pan-celticism
+Pan-china
+Pan-christian
+pan conveyer
+pancreas ptyalin
+pancreatic duct
+pancreatic juice
+Pan-croat
+panel beater
+panel board
+panel body
+panel heating
+panel house
+panel length
+panel photograph
+panel plane
+panel point
+panel saw
+panel strip
+panel system
+panel thief
+panel wall
+panel wheel
+Pan-europe
+Pan-european
+pan-fired
+pan fish
+pan-fry
+Pan-german
+Pan-germanic
+Pan-germanism
+Pan-germanist
+Pan-germany
+Pan-gothic
+pan grave
+Panhandle state
+pan-headed
+Pan-hispanic
+Pan-hispanism
+panic bar
+panic bent
+panic bolt
+panic-driven
+pan ice
+panic grass
+panic-pale
+panic party
+panic-proof
+panic-stricken
+panic-strike
+panic-struck
+panic-stunned
+Pan-islam
+Pan-islamic
+Pan-islamism
+Pan-islamist
+Pan-israelitish
+Pan-latin
+Pan-latinist
+pan-leaf
+Pan-mongolian
+Pan-mongolism
+Pan-moslemism
+Pannetier green
+pannier pack
+Panolia deer
+Pan-orthodox
+Pan-orthodoxy
+Pan-pacific
+Pan-presbyterian
+Pan-protestant
+Pan-prussianism
+Pan-russian
+Pan-satanism
+Pan-saxon
+Pan-scandinavian
+Pan-sclavic
+Pan-sclavism
+Pan-sclavist
+Pan-sclavonian
+Pan-serb
+pan-shaped
+Pan-slav
+Pan-slavic
+Pan-slavism
+Pan-slavist
+Pan-slavistic
+Pan-slavonian
+Pan-slavonic
+Pan-slavonism
+pan supari
+pansy-colored
+pansy-growing
+pansy orchid
+pansy purple
+Pan-syrian
+pansy-violet
+pansy-yellow
+pantechnicon van
+Pan-teutonism
+panther cat
+panther cowrie
+panther lily
+pantile lath
+panting stringer
+pantograph snaffle
+pantograph trolley
+Pan-turanian
+Pan-turanianism
+Pan-turanism
+panty girdle
+Papagayo wind
+papa rock
+papaw family
+paper-backed
+paper baler
+paper-baling
+paper birch
+paper blockade
+paper book
+paper-bound
+paper boy
+paper-capped
+paper carrier
+paper chase
+paper chaser
+paper chromatography
+paper cloth
+paper-clothed
+paper coal
+paper-coated
+paper-coating
+paper-collared
+paper colorer
+paper-covered
+paper credit
+paper cutter
+paper-cutting
+paper-drilling
+paper-embossing
+paper-faced
+paper-filled
+paper flower
+paper-folding
+paper foot
+paper-footed
+paper grass
+paper hanger
+paper hanging
+paper holder
+paper hornet
+paper hunt
+paper jogger
+paper joint
+paper knife
+paper lapper
+paper-lined
+paper machine
+paper-mended
+paper mill
+paper money
+paper mulberry
+paper muslin
+paper office
+paper-palisaded
+paper-paneled
+paper-patched
+paper plant
+paper pulper
+paper rack
+paper rate
+paper-saving
+paper seller
+paper-selling
+paper shale
+paper-shell
+paper-shelled
+paper-shuttered
+paper-slitting
+paper sorter
+paper-sparing
+paper stainer
+paper-stamping
+paper standard
+paper surplus
+paper-testing
+paper-thick
+paper-thin
+paper title
+paper tree
+paper-using
+paper varnisher
+paper-varnishing
+paper wasp
+paper-waxing
+paper-white
+paper-whiteness
+paper-windowed
+paper work
+paper works
+papier-mache
+papoose board
+Papua mace
+Papua nutmeg
+papyrus capital
+papyrus column
+para-agglutinin
+para-aminophenol
+para-analgesia
+para-anesthesia
+para-appendicitis
+parachute light
+parachute light ball
+parachute spinnaker
+paracoto bark
+parade rest
+paradise apple
+paradise bird
+paradise duck
+paradise finch
+paradise fish
+paradise flower
+paradise flycatcher
+paradise grackle
+paradise green
+paradise grosbeak
+paradise nut
+paradise plant
+paradise seed
+paradise stock
+paradise tree
+paradox gun
+paraffin-base
+paraffin distillate
+paraffin hydrocarbon
+paraffin oil
+paraffin paper
+paraffin scale
+paraffin series
+paraffin wax
+paraffin xylol
+paragonite schist
+parallel bar
+parallel-flow turbine
+parallelogram law
+parallel-veined
+paramine brown
+paranitraniline red
+para red
+para-rescue
+parasite resistance
+para-ski
+parasol ant
+parasol fern
+parasol mushroom
+parasol pine
+parasol-shaped
+parasol skirt
+parathyroid tetany
+paratyphoid fever
+parcel-blind
+parcel carrier
+parcel-carrying
+parcel checker
+parcel-deaf
+parcel delivery
+parcel-divine
+parcel-drunk
+parcel-gilder
+parcel-gilding
+parcel-gilt
+Parcel-greek
+parcel-guilty
+Parcel-latin
+parcel-learned
+parcel-mad
+parcel-packing
+parcel paper
+parcel-plate
+parcel-popish
+parcel post
+parcel-post stamp
+parcel-stupid
+parcel-terrestrial
+parcel-tying
+parchment bark
+parchment-colored
+parchment-covered
+parchment-faced
+parchment lace
+parchment-maker
+parchment paper
+parchment-skinned
+parchment-spread
+parchment worm
+par collection
+pardon bowl
+pardon chair
+pardon screen
+pareira brava
+parent complex
+parent-in-law
+parent metal
+par excellence
+pariah dog
+pariah kite
+Parian ware
+parieto-occipital
+pari-mutuel
+paring chisel
+paring gouge
+Paris blue
+Paris green
+Paris hat
+parish clerk
+parish council
+parish house
+parish meeting
+parish priest
+parish register
+parish school
+parish top
+Paris red
+Paris white
+Paris yellow
+park flower
+park forest
+park green
+parkin baker
+parking brake
+parlatoria scale
+parliament cake
+parliament heel
+parliament hinge
+parliament man
+parlor boarder
+parlor car
+Parma red
+parochial school
+parol arrest
+parol contract
+parole law
+paroquet auklet
+paroquet bur
+parotid duct
+parquet circle
+parrel truck
+parrot-beaked
+parrot-billed
+parrot bullfinch
+parrot cry
+parrot disease
+parrot-gray
+parrot green
+parrot-learned
+parrot mouth
+parrot-mouthed
+parrot-nosed
+parrot-red
+parrot-toed
+pars intermedia
+parsley bed
+parsley crown
+parsley fern
+parsley-flavored
+parsley-leaved
+parsley pie
+parsley piert
+parsley wreath
+part-created
+part-done
+part-earned
+parterre box
+part-finished
+part gate
+part-heard
+parti-color
+parti-colored
+parti-decorated
+parti-mortgage
+parti-named
+parting bead
+parting chisel
+parting cup
+parting tool
+parti-striped
+partition law
+part music
+part-opened
+part owner
+partridge cane
+partridge dove
+partridge pea
+partridge pigeon
+part song
+part time
+part-timer
+party circle
+party emblem
+party-giving
+party line
+party liner
+party-making
+party man
+party per fess
+party-political
+party-spirited
+party wall
+party-walled
+party wire
+party-zealous
+parula blue
+parula warbler
+par value
+paschal candle
+paschal controversy
+paschal lamb
+paschal letter
+Pasch day
+pasch egg
+Pasquil lock
+passage bed
+passage bird
+passage board
+passage boat
+passage-free
+passage grave
+passage hawk
+passage money
+passage penny
+pass boat
+pass box
+pass-by
+pass-bye
+pass check
+pass course
+pass door
+passenger agent
+passenger car
+passenger density
+passenger falcon
+passenger list
+passenger locomotive
+passenger manager
+passenger-mile
+passenger mileage
+passe-partout
+passer-by
+Passeres anisomyodi
+Passeres diacromyodi
+passing bell
+passing note
+passing strake
+passion-blazing
+passion-breathing
+passion-colored
+passion cross
+passion-distracted
+passion-driven
+passion-feeding
+passion-filled
+passion-fraught
+passion-frenzied
+passion fruit
+passion-guided
+passion-kindled
+passion-kindling
+passion-led
+Passion music
+Passion play
+passion-proud
+passion-ridden
+passion-shaken
+passion-smitten
+passion-stirred
+passion-stung
+Passion sunday
+passion-swayed
+passion-thrilled
+passion-thrilling
+passion-torn
+passion-tossed
+passion-wasted
+Passion week
+passion-winged
+passion-worn
+passive-minded
+passive resistance
+passive resister
+pass master
+pass-out
+Passover bread
+past-due
+paste grain
+pastel blue
+pastel gray
+pastel-tinted
+paste wash
+paste water
+pastor-elect
+pastry bag
+pastry chef
+pastry cook
+pastry flour
+pastry tube
+pasture bird
+pasture rose
+pasture thistle
+pasty-faced
+pasty-footed
+pat-a-cake
+patch bolt
+patch box
+patchouli oil
+patch pocket
+patch test
+patent block
+patent leather
+patent light
+patent medicine
+patent office
+patent right
+Pater noster
+pater patratus
+pat hand
+patina green
+patio process
+pat-pat
+patrol wagon
+patronal festival
+patron saint
+patten maker
+pattern box
+pattern card
+pattern designer
+pattern reader
+pattern wheel
+patter song
+patty-cake
+patty shell
+paunch mat
+pauper-born
+pauper-bred
+pauper-breeding
+pauper costs
+pauper-fed
+pauper-feeding
+pauper-making
+pavement ant
+pavement epithelium
+pavement light
+pavilion hospital
+pavilion roof
+paving roller
+paving stone
+paving tile
+pavor nocturnus
+pawl bitt
+pawl head
+pawl post
+pawl rim
+pawn ticket
+paw-paw
+paw-pawness
+pay-all
+pay clerk
+pay dirt
+pay envelope
+pay load
+paymaster general
+paymaster-generalship
+payment bill
+pay-off
+pay-rent
+pay-roller
+pay station
+pea bean
+pea beetle
+pea blight
+peace-abiding
+peace-blessed
+peace-breathing
+peace-bringing
+peace conference
+peace-enamored
+peace establishment
+peace giver
+peace-giving
+peace guild
+peace-inspiring
+peace-loving
+peace-lulled
+peace offering
+peace officer
+peace pipe
+peace-preaching
+peace-procuring
+peace-restoring
+peace-trained
+peace warrant
+peach aphid
+peach bacteriosis
+peach blight
+peach blister
+peach bloom
+peachblossom pink
+peach borer
+peach canker
+peach color
+peach-colored
+peach-kernel oil
+peach-leaved
+Peach melba
+peach moth
+peach red
+peach rosette
+pea coal
+peacock blue
+peacock fan
+peacock-feathered
+peacock green
+peacock-herl
+peacock heron
+peacock-hued
+peacock iris
+peacock moth
+peacock ore
+peacock pheasant
+peacock poppy
+peacock-spotted
+peacock-voiced
+pea comb
+pea-combed
+pea crab
+pea flower
+pea-flowered
+pea green
+pea grit
+pea huller
+pea jacket
+peak crest
+peak factor
+peak load
+peaky-faced
+pea measle
+pea mildew
+pea moth
+peanut butter
+peanut oil
+peanut tube
+pea ore
+pea-picking
+pear blight
+pear blight beetle
+pear borer
+pear gauge
+pear haw
+pea rifle
+pearl-bearing
+pearl-besprinkled
+pearl blue
+pearl blush
+pearl-bordered
+pearl-bush
+pearl-coated
+pearl coating
+pearl-colored
+pearl-crowned
+pearl danio
+pearl diabase
+pearl disease
+pearl diver
+pear-leaved
+pearl edge
+pearl-encrusted
+pearl essence
+pearl eye
+pearl-eyed
+pearl filler
+pearl fisher
+pearl-fishery
+pearl fishing
+pearl-gemmed
+pearl gray
+pearl-handled
+pearl hardening
+pearl-headed
+pearl hen
+pearl-hued
+pearl-lined
+pearl-lipped
+pearl millet
+pearl mussel
+pearl oyster
+pearl-pale
+pearl-pure
+pearl-round
+pearl-set
+pearl shell
+pearl sheller
+pearl shelling
+pearl sinter
+pearl spar
+pearl spurry
+pearl-studded
+pearl-teethed
+pearl-toothed
+pearl white
+pearl-wreathed
+pearl-yielding
+pear midge
+pear scale
+pear-shaped
+pear shell
+pear slug
+pear squash
+pear thorn
+pear thrips
+peasant blue
+peasant-born
+peasant holder
+peasant proprietor
+peasant proprietorship
+peasant sleeve
+pease brose
+pea sheller
+pea-shoot
+pea-sized
+pea-soup
+pea-souper
+peat bank
+peat bog
+peat coal
+peat digger
+peat fiber
+peat gas
+peat hag
+peat machine
+peat moor
+peat moss
+pea tree
+peat reek
+peat-roofed
+peat-smoked
+peat soil
+peat spade
+pea vetchling
+pea vine
+pea weevil
+pebble cast
+pebble-covered
+pebble dash
+pebble-dashed
+pebble gravel
+pebble grinder
+pebble leather
+pebble mill
+pebble-paved
+pebble-paven
+pebble powder
+pebble-shaped
+pebble-strewn
+pebble vetch
+pecan brown
+peckerwood mill
+peck horn
+pecky cypress
+pedal board
+pedal cords
+pedal coupler
+pedal curve
+pedal ganglion
+pedal key
+pedal keyboard
+pedal note
+pedal organ
+pedal piano
+pedal point
+pedal polygon
+pedal pushers
+pedal surface
+pedately cleft
+pedately veined
+pede cloth
+pedestal box
+pedestal mount
+pedestal pile
+pedestal rock
+pede window
+pedigree clause
+peel end
+peel tower
+peen hammer
+peening rammer
+peen-to
+peep-bo
+peep frog
+peep hawk
+peep nap
+peep plate
+peep show
+peep sight
+peg-a-lantern
+peg drum
+peg float
+pegging awl
+peg leg
+peg tooth
+peg-tooth harrow
+peg top
+Peking blue
+pelargonium oil
+pelican fish
+pelican flower
+pelican hook
+pellet bow
+pellet molding
+pellitory bark
+pell-mell
+pelt rot
+pelt wool
+penalty area
+penalty bench
+penalty envelope
+penalty goal
+penalty kick
+penalty stroke
+penang-lawyer
+penang nut
+pen-bearing
+pen-cancel
+pen cancellation
+pencil blue
+pencil box
+pencil case
+pencil cedar
+pencil compass
+pencil diamond
+pencil drawing
+pencil flower
+pencil-formed
+pencil holder
+pencil maker
+pencil-mark
+pencil rod
+pencil-shaped
+pencil sharpener
+pencil sharpening
+pencil stone
+pendant bow
+pendant post
+pendant-shaped
+pendant switch
+pendant tackle
+pendant-winding
+pen-driver
+pendulum bob
+pendulum level
+pendulum press
+pendulum pump
+pendulum wheel
+pen feather
+pen-feathered
+penguin duck
+penguin grass
+peninsula pine
+penitentiary book
+pen keeping
+pen machine
+pen mating
+pen name
+pennant fish
+pennant-winged
+penner-up
+pen nib
+penny-a-line
+penny-a-liner
+penny ante
+penny arcade
+penny bank
+penny black
+penny bridal
+penny cake
+penny dreadful
+penny gaff
+penny grass
+penny hat
+penny horrible
+penny loaf
+penny pies
+penny pincher
+penny-pinching
+penny post
+penny rent
+penny stock
+penny tree
+penny wedding
+penny whistle
+penny wisdom
+penny-wise
+pen palsy
+pen picture
+pen point
+pen portrait
+pen portraiture
+pen pot
+pen-pusher
+pen-shaped
+pen sketch
+penta-acetate
+pentagon dodecahedron
+pen-tailed
+pentane lamp
+Pentothal sodium
+pent road
+pent roof
+pent-up
+pen-written
+peony dahlia
+peony-flowered
+people-blinding
+people-born
+people-devouring
+people-king
+people-loving
+people-pestered
+people-pleasing
+pepper bush
+pepper caster
+peppercorn rent
+pepper mill
+peppermint camphor
+peppermint gum
+peppermint oil
+peppermint stringbark
+peppermint tree
+pepper oil
+pepper plant
+pepper pod
+pepper pot
+pepper red
+pepper sauce
+pepper tree
+pepper turnip
+pepper vine
+pepper wheat
+per annum
+per ascensum
+perboric acid
+per capita
+per cent
+percentage composition
+percentage error
+percentage tare
+per centum
+Percheron norman
+perch pole
+per compound
+per contra
+percussion bullet
+percussion cap
+percussion drilling
+percussion figure
+percussion fire
+percussion fuse
+percussion instrument
+percussion lock
+percussion-proof
+percussion stop
+percussion table
+percussive welding
+per descensum
+per diem
+perennial-rooted
+perforation gauge
+performance test
+pericline twinning
+perigean tides
+Perigord pie
+peri-insular
+peril-laden
+perilla oil
+periodicity factor
+periosteo-edema
+peripheral neuritis
+periwinkle blue
+perjury-proof
+per mil
+per mill
+permutation lock
+pernyi silkworm
+per pais
+Perpendicular style
+perpend wall
+per se
+per second per second
+per simpliciter
+personnel director
+personnel manager
+per stirpes
+persuasion-proof
+perverse-notioned
+pestilence-proof
+pestle-shaped
+pest pear
+pest-ridden
+pet cock
+peter boat
+peter gunner
+petition-proof
+petit juror
+petit jury
+petit larceny
+petit mal
+petit-negre
+petit-noir
+petit point
+petit treason
+pet lamb
+petrol engine
+petroleum asphalt
+petroleum benzine
+petroleum coke
+petroleum engine
+petroleum engineer
+petroleum engineering
+petroleum ether
+petroleum grease
+petroleum jelly
+petroleum naphtha
+petroleum spirit
+petro-occipital
+petticoat breeches
+petticoat insulator
+petticoat pipe
+petty-minded
+petty-mindedly
+petty-mindedness
+petunia violet
+pew chair
+pew opener
+pew rent
+pew rental
+pew renter
+pewter mill
+Phacd phad
+phaeton butterfly
+phantom circuit
+phantom-fair
+phantom larva
+phantom minnow
+phantom orchid
+phantom picture
+phantom red
+phantom tumor
+phantom-white
+phantom wire
+pharmaco-oryctology
+pharyngo-oesophageal
+pharyngo-oral
+phase advancer
+phase angle
+phase converter
+phase difference
+phase microscope
+phase-rotation relay
+phase rule
+phase splitter
+phase splitting
+phase transformer
+phase velocity
+phase-wound
+pheasant cuckoo
+pheasant duck
+pheasant-eyed
+pheasant-plumed
+pheasant-tailed
+phenacyl chloride
+phenobarbital sodium
+phenol alcohol
+phenol aldehyde
+phenol-phthalein
+phenol red
+phenyl alcohol
+phenyl cyanide
+phenyl ether
+phenyl iodide
+phenyl isocyanate
+phenyl mercaptan
+phenyl methyl ketone
+phenyl salicylate
+Phil-african
+Phil-arabian
+Phil-arabic
+philenor butterfly
+Philippine mahogany
+Philo-athenian
+Philo-french
+Philo-gallic
+Philo-gallicism
+Philo-german
+Philo-germanism
+Philo-greek
+Philo-hindu
+Philo-jew
+Philo-laconian
+Philo-peloponnesian
+Philo-pole
+Philo-polish
+Philo-russian
+Philo-slav
+Philo-slavism
+Philo-teuton
+Philo-teutonism
+Philo-turk
+Philo-turkish
+Philo-turkism
+Philo-yankee
+Philo-yankeeist
+Philo-zionist
+Phi phenomenon
+phloem fiber
+phloem necrosis
+phloem parenchyma
+phoenix fowl
+phoo-phoo
+phosphate rock
+phosphine oxide
+phosphor copper
+phosphorous anhy-dride
+phosphorus chloride
+phosphorus disease
+phosphorus necrosis
+phosphorus oxide
+phosphorus oxychloride
+phosphorus pentachloride
+phosphorus sulphide
+phosphorus trichloride
+phosphoryl chloride
+photo finish
+photoflash lamp
+photogelatin process
+photo-offset
+photo-retouch
+phrase book
+phrase mark
+physical culturist
+physic nut
+pia-arachnitis
+pia-arachnoid
+piacular offering
+pia mater
+pia-matral
+piano action
+piano deal
+piano lamp
+piano nobile
+piano organ
+piano player
+piano-player roll
+piano score
+piano subito
+piano-violin
+piano wire
+pickax team
+pick-bearing
+pick clock
+pick dressing
+picked dogfish
+pickerel frog
+picker-up
+picket fence
+picket fort
+picket guard
+picket line
+picket pin
+picket tail
+pick eye
+pick glass
+pick hammer
+pickle-cured
+pickle grass
+pickle green
+pickle-herring
+pickle moth
+pick-me-up
+pick-nosed
+pick-off
+pick rake
+pick tongs
+pickup current
+pickup service
+picot stitch
+picture book
+picture-borrowing
+picture bride
+picture-broidered
+picture-buying
+picture card
+picture-dealing
+picture gallery
+picture-hanging
+picture-hung
+picture marriage
+picture mirror
+picture molding
+picture ore
+picture-painting
+picture-pasted
+picture play
+picture playwright
+picture post card
+picture-seeking
+picture tube
+picture window
+picture wire
+Pidgin english
+pie baker
+pie-baking
+pie board
+piece accent
+piece brace
+piece broker
+piece-dye
+piece goods
+piece mold
+piece price
+piece price system
+piece rate
+piece wage
+pie chart
+piecrust table
+pied-billed
+pied blackbird
+pied-coated
+pied-colored
+pied-faced
+pie dish
+pied-winged
+pie eater
+pie-eyed
+pie filler
+pie filling
+pie-gow
+pie knife
+pie maker
+pie making
+pie meat
+pien check
+pie piece
+pie plate
+pie rack
+pier arch
+pier buttress
+pier dam
+pier glass
+pierre-perdu
+pier table
+pie-stuffed
+pie tin
+pie vendor
+pie wagon
+pie wool
+piezo oscillator
+piezo resonator
+piff-paff
+pig-back
+pig-backed
+pig bed
+pig-bellied
+pig boiling
+pig breaker
+pig-breeding
+pig-bribed
+pig cart
+pig-chested
+pig dealer
+pig-dealing
+pig deer
+pig-driving
+pig-eating
+pigeon breast
+pigeon-breasted
+pigeon-breastedness
+Pigeon english
+pigeon flyer
+pigeon grass
+pigeon hawk
+pigeon house
+pigeon-livered
+pigeon post
+pigeon pox
+pigeon-tailed
+pigeon-toe
+pigeon-toed
+pig-eyed
+pig-faced
+pig-fat
+pig-footed
+piggy bank
+piggy-wiggy
+pig-haired
+pig-haunted
+pig hutch
+pig iron
+pig-jaw
+pig-jawed
+pig-jump
+pig-jumper
+pig-keeping
+Pig latin
+pig lead
+pig man
+pigment cell
+pig metal
+pig-proof
+pig-tailed
+pig-tight
+pig tub
+pig typhoid
+pig wife
+pig yoke
+pikaba hemp
+pike-eyed
+pike-gray
+pike hammer
+pike perch
+pike pole
+pike sauce
+pike-snouted
+pike squirrel
+pike whale
+pilaster mass
+pilaster strip
+pile bent
+pile bridge
+pile builder
+pile building
+pile-built
+pile cap
+pile drawer
+pile-driven
+pile driver
+pile-driving
+pile dweller
+pile dwelling
+pile hammer
+pile weave
+pile weaving
+pile wire
+pile-woven
+pilferage hazard
+pilgrimage psalm
+pilgrim bottle
+pilgrim brown
+pilgrim ring
+pilgrim scallop
+piling strip
+pillar block
+pillar bolt
+pillar box
+pillar crane
+pillar cult
+pillar dollar
+pillar file
+pillar lip
+pillar mount
+pillar plate
+pillar-shaped
+pillar stone
+pill-boasting
+pill bug
+pill-dispensing
+pill-gilding
+pillow block
+pillow fight
+pillow lace
+pillow lava
+pillow sham
+pillow-shaped
+pillow slip
+pillow word
+pill pipe
+pill-rolling
+pill-shaped
+pill slab
+pill-taking
+pill tile
+pill wood louse
+pilose bent grass
+pilot balloon
+pilot bird
+pilot biscuit
+pilot boat
+pilot bread
+pilot burner
+pilot cell
+pilot chart
+pilot driver
+pilot engine
+pilot fish
+pilot flag
+pilot flame
+pilot lamp
+pilot light
+pilot method
+pilot motor
+pilot nut
+pilot pin
+pilot plow
+pilot valve
+pilot whale
+pilot wheel
+pimento cheese
+pimento grass
+pimpernel root
+pimple metal
+pinacate bug
+pina cloth
+pinacone-pinacolin
+pinball machine
+pin basket
+pin bit
+pin block
+pin borer
+pin boy
+pin bridge
+pin buttock
+pin-buttocked
+pince-nez
+pincer-shaped
+pincers-shaped
+pinch bar
+pin cherry
+pinch-faced
+pinchgut money
+pinch-hit
+pinch hitter
+pinch out
+pinch phenomenon
+pinch point
+pinch-spotted
+pin curl
+pindo palm
+pindova palm
+pineal body
+pineal gland
+pineapple disease
+pineapple fiber
+pineapple fungus
+pineapple oil
+pine bark
+pine bark aphid
+pine barren
+pine-bearing
+pine-bordered
+pine borer
+pine-built
+pine-capped
+pine-clad
+pine cone
+pine-cone fish
+pine-covered
+pine-crested
+pine-crowned
+pine-dotted
+pine-encircled
+pine-fringed
+pine grass
+pine-leaf scale
+pine needle
+pine-needle oil
+pine oil
+pine sawfly
+pine sawyer
+pine-sequestered
+pine-shaded
+pine-shipping
+pine snake
+pine tag
+pine-tar oil
+pine-tip moth
+pine tree
+pine-tree flag
+pine-wood
+pine wool
+pine worm
+piney dammar
+pin-eyed
+piney tallow
+piney woods
+pin fallow
+pin-fire
+pin gear
+ping-pong
+Ping-pong
+pinhole camera
+pinhole decay
+pinhole pupil
+pin horse
+pink-blossomed
+pink-bound
+pink-breasted
+pink-checked
+pink-cheeked
+pink-coated
+pink-colored
+pink disease
+pink-eared
+pink eye
+pink-eyed
+pink-faced
+pink-fleshed
+pink-flowered
+pink-foot
+pink-footed
+pink grass
+pink in
+pinking iron
+pinking shears
+pink lady
+pink-leaved
+pink-lipped
+pin knot
+pink-ribbed
+pink salt
+pink-shaded
+pink-shelled
+pink-skinned
+pink spray
+pinkster flower
+pink-sterned
+pink-striped
+pink-tinted
+pink-veined
+pink-violet
+pink-white
+pin mill
+pin money
+pinnate-leaved
+pinnate-ribbed
+pinnate-veined
+pinnatifid-lobed
+pin oak
+pinon grass
+pinon pine
+pin pallet
+pin point
+pin pool
+pin prod
+pin rack
+pin rod
+pin setter
+pin-spotted
+pin-striped
+pintado petrel
+pin-tailed
+pintle chain
+pintle hook
+pinto bean
+pin-toed
+pin tooth
+pint pot
+pin tuck
+pin tumbler
+pin-up
+pin valve
+pin vise
+pin wheel
+pin-wing
+pin wire
+pin wrench
+pioneer tunnel
+pip card
+pipe amygdules
+pipe beetle
+pipe-bending
+pipe binder
+pipe-boring
+pipe box
+pipe-caulking
+pipe clay
+pipe-clayey
+pipe-clayish
+pipe-cleaning
+pipe coupling
+pipe-cutting
+pipe die
+pipe-drawn
+pipe dream
+pipe dreamer
+pipe dreaming
+pipe-drilling
+pipe fitter
+pipe founder
+pipe isinglass
+pipe-joint cement
+pipe maker
+pipe metal
+pip emma
+pipe-necked
+pipe organ
+pipe-playing
+pipe-puffed
+pipe roll
+piperonyl alcohol
+pipe-shaped
+pipe-tapping
+pipe-thawing
+pipe thimble
+pipe thread
+pipe threader
+pipe-threading
+pipe tongs
+pipe tool
+pipe welder
+pipe wrench
+piping cord
+pippin-faced
+pippin file
+pippin-hearted
+pip-pip
+pip-squeak
+piptostegia root
+pirate bird
+pirate perch
+pisang wax
+pish-pash
+pismo clam
+pistachio green
+pistachio nut
+pistacia gall
+pistol carbine
+pistol grip
+pistol plant
+pistol-shaped
+piston displacement
+piston drill
+piston pin
+piston pump
+piston ring
+piston rod
+piston spring
+piston valve
+pita fiber
+pita flax
+pita floja
+pit bank
+pit-black
+pit-blackness
+pit boss
+pit brink
+pitch accent
+pitch apple
+pitch black
+pitch-blackened
+pitch-blackness
+pitch box
+pitch-brown
+pitch circle
+pitch coal
+pitch-colored
+pitch cone
+pitch cylinder
+pitch-dark
+pitch-darkness
+pitch-diameter
+pitch discharger
+pitcher house
+pitcher mold
+pitcher molding
+pitcher plant
+pitcher-shaped
+pitch-faced
+pitch factor
+pitchfork grass
+pitching tool
+pitch kettle
+pitch line
+pitch-lined
+pitch-marked
+pitch opal
+pitch pine
+pitch pipe
+pitch point
+pitch pot
+pitch shot
+pitch-stained
+pit coal
+pit craneman
+pit dwelling
+pit-eyed
+pit hand
+pith ball
+pit head
+pit-headed
+pit-head frame
+pith helmet
+pith knot
+pit house
+pit-marked
+pit-patter
+pit prop
+pit-rotted
+pit saw
+pit sawyer
+pit-specked
+pitter-patter
+pit tomb
+pit viper
+pit-working
+pity-bound
+pity-moved
+pity-worthy
+pivot bearing
+pivot blow
+pivot bridge
+pivot joint
+pivot man
+pivot pier
+pivot span
+pivot stand
+pivot tooth
+pix-jury
+pixy-led
+pixy ring
+pixy stool
+place-begging
+place bill
+place brick
+place card
+place-grabbing
+place holder
+place-holding
+place hunter
+place-hunting
+place isomerism
+place kick
+place kicker
+place-loving
+placement examination
+placement kick
+placement test
+place-money
+place name
+place-proud
+placer claim
+placer miner
+place seeker
+place-seeking
+placid-featured
+placid-mannered
+placing-out
+placita coronae
+placket hole
+plagioclase-basalt
+plagioclase-granite
+plagioclase-porphyrite
+plagioclase-porphyry
+plagioclase-rhyolite
+plague-beleagured
+plague-free
+plague grasshopper
+plague-haunted
+plague-infected
+plague-infested
+plague mark
+plague-ridden
+plague-smitten
+plague spot
+plague-spotted
+plague-stricken
+plain aerial
+plain-bodied
+plain-bred
+plain-clothed
+plain clothes
+plain-clothes man
+plain-darn
+plain dealer
+plain-dressing
+plain-edged
+plain-faced
+plain-featured
+plain-garbed
+plain-headed
+plain-hearted
+plain-laid
+plain-looking
+plain-mannered
+plain-pranked
+Plains cree
+plain sewing
+plain-soled
+plain song
+plain speaking
+plain-spoken
+plain-spokenly
+plain-spokenness
+plain wanderer
+planching nail
+plane angle
+plane chart
+plane curve
+plane-faced
+plane figure
+plane geometry
+plane-parallel
+plane polarization
+planer center
+planer head
+planer knife
+planer tree
+plane-shear
+plane-table
+plane-tabler
+planet differential
+planet gear
+plane trigonometry
+planet-stricken
+planet-struck
+planet wheel
+P-language
+planing mill
+plank buttress
+plank scraper
+plank-sheer
+plankton net
+planning board
+plano-concave
+plano-convex
+planomilling machine
+plantain-leaved
+plantain lily
+plantain squirrel
+plantain tree
+plant anatomy
+plant-animal
+plantar ligament
+plantar nerves
+plantar reflex
+plantar veins
+plantation acre
+plantation rubber
+plant breeder
+plant cane
+plant cutter
+Plante battery
+plant factor
+plant feeder
+plant fibrin
+plant food
+plant formation
+plant geographer
+plant geography
+plant hair
+plant hemp
+plant house
+planting stick
+plant insulin
+plant life
+plant louse
+plant pathology
+plant physiology
+plant thermal efficiency
+plant worship
+plant worshiper
+plash wheel
+plasma body
+plasma cell
+plasma membrane
+plaster baker
+plaster bond
+plaster burner
+plaster cast
+plaster chopper
+plaster jacket
+plaster spreader
+plastic art
+plastic flow
+plate armor
+plate battery
+plate beam
+plate bender
+plate-bending
+plate bone
+plate calender
+plate-carrier
+plate circuit
+plate clutch
+plate-collecting
+plate column
+plate coupling
+plate culture
+plate current
+plate cutter
+plate-cutting
+plate cylinder
+plate driller
+plate-drilling
+plate gear
+plate girder
+plate glass
+plate-glazed
+plate glazing
+plate heater
+plate-incased
+plate jig
+plate keel
+plate machine
+plate modulation
+plate money
+plate-mounting
+platen press
+plate oven
+plate paper
+plate press
+plate printer
+plate proof
+plate-punching
+plate rail
+plate-roll
+plate-rolling
+plate-scarfing
+plate-shaped
+plate-shearing
+plate-tossing
+plate tower
+plat-eye
+plat-footed
+platform balance
+platform car
+platform elevator
+platform harvester
+platform scale
+platform spring
+platform wagon
+platina yellow
+platinum ammine
+platinum black
+platinum lamp
+platinum paper
+platinum process
+platinum sponge
+platinum thermometer
+platoon school
+platoon system
+Plato-wise
+platter-faced
+play-act
+play acting
+play actor
+play actorism
+play actress
+playback machine
+play debt
+play doctor
+player piano
+playground ball
+playing card
+playing field
+playing suit
+play-judging
+play-loving
+play-off
+play pipe
+play-producing
+play-reading
+play right
+pleasant-eyed
+pleasant-faced
+pleasant-featured
+pleasant-looking
+pleasant-mannered
+pleasant-minded
+pleasant-natured
+pleasant-sounding
+pleasant-spirited
+pleasant-spoken
+pleasant-tasted
+pleasant-tasting
+pleasant-tongued
+pleasant-voiced
+pleasant-witted
+pleasure-bent
+pleasure-bound
+pleasure giver
+pleasure-greedy
+pleasure ground
+pleasure lover
+pleasure-pain
+pleasure principle
+pleasure seeker
+pleasure-shunning
+pleasure taker
+pleasure-tempted
+pleasure-tired
+pleasure-wasted
+pleasure-weary
+pledge-bound
+pledge-free
+pledge keeper
+pledge taker
+plein-air
+plein-airist
+plein-air school
+plenary inspiration
+pleroma violet
+pleurisy root
+pliant-bodied
+pliant-necked
+plinth course
+plisse crepe
+plot survey
+plottage increment
+plottage value
+plotting board
+plotting paper
+plover-billed
+plover egg
+plover page
+plover quail
+plow alms
+plow-bred
+plow-cloven
+plow drill
+plow hand
+plow horse
+plow iron
+plow paddle
+plow press
+plow-shaped
+plowshare bone
+plow steel
+plow team
+plow-torn
+plow tree
+plow truck
+pluck-buffet
+plug bib
+plug cap
+plug casing
+plug cock
+plug drill
+plug frame
+plug hat
+plug-hatted
+plug rod
+plug switch
+plug tobacco
+plug-ugly
+plumbago blue
+plumbago gray
+plumbago slate
+plumb bob
+plumb bond
+plumber block
+plumb joint
+plum bladder
+plumb level
+plumb line
+plum blotch
+plum-blue
+plum broth
+plum-brown
+plumb rule
+plum-colored
+plum curculio
+plum duff
+plume-crowned
+plume-decked
+plume-dressed
+plumed tussock grass
+plume-embroidered
+plume-fronted
+plume-gay
+plume grass
+plume moss
+plume moth
+plume nutmeg
+plume-plucked
+plume-plucking
+plume polypody
+plume poppy
+plume-soft
+plume stick
+plume-stripped
+plum fir
+plum gouger
+plum granite
+plum grape
+plum-green
+plummer block
+plummet line
+plum pocket
+plum pudding
+plum purple
+plum scab
+plum-shaped
+plum-sized
+plum thrips
+plum-tinted
+plum tree
+plum violet
+plum weevil
+plum yew
+plunge bath
+plunge battery
+plunger bucket
+plunger elevator
+plunger magnet
+plunge rod
+plunger piston
+plunger pump
+plus-foured
+plus fours
+plush copper
+plus head
+plush stitch
+plus lens
+plus sign
+plus thread
+Plymouth colony
+ply yarn
+pneumatico-hydraulic
+pneumatic-tired
+pneumato-hydato-genetic
+poacher tub
+Poale zion
+Poale zionist
+poalike fescue grass
+pock-arred
+pocket battleship
+pocket billiards
+pocket bird
+pocket bladder
+pocket boom
+pocket burner
+pocket chisel
+pocket chronometer
+pocket-eyed
+pocket flask
+pocket lighter
+pocket money
+pocket piece
+pocket plum
+pocket print
+pocket rat
+pocket sheriff
+pocket-size
+pocket-sized
+pocket veto
+pock-frecken
+pock-fretten
+pock lymph
+pock-marked
+pock nook
+pock-pit
+pock scab
+pod auger
+pod borer
+pod corn
+pod fern
+pod gimlet
+pod rot
+pod-shaped
+pod shrimp
+poet-artist
+poet-dramatist
+poet-farmer
+poet-historian
+poet-humorist
+poetico-antiquarian
+poetico-architectural
+poetico-grotesque
+poetico-mystical
+poetico-mythological
+poetico-philosophic
+poet-king
+poet laureate
+poet-laureateship
+poet-musician
+poet-novelist
+poet-painter
+poet-patriot
+poet-pilgrim
+poet-playwright
+poet-plowman
+poet-preacher
+poet-priest
+poet-princess
+poetry-proof
+poet-saint
+poet-satirist
+poet-seer
+poet-thinker
+poet-warrior
+point alphabet
+point bar
+point-blank
+point chisel
+point co-ordinate
+point draftsman
+point duchesse
+point duty
+point-event
+point fuse
+point handle
+point hole
+pointing bone
+pointing chisel
+pointing doors
+pointing mark
+pointing tool
+point lace
+point-laced
+point-on
+point paper
+point-particle
+point rail
+point-ring sight
+point salient
+point set
+point source
+point space
+point switch
+point system
+point tense
+point transformation
+poison gas
+poison hemlock
+poison ivy
+poison-laden
+poison mask
+poison oak
+poison rye grass
+poison-sprinkled
+poison sumac
+poison-tainted
+poison-tipped
+poison-toothed
+poke bonnet
+poke-bonneted
+poke brim
+poke-brimmed
+poke check
+poke-cheeked
+poke-easy
+poker dice
+poker face
+poker work
+poky bonnet
+Poland china
+polar bear
+polar body
+polar circle
+polarity cap
+polarized-relay armature
+pole-armed
+pole bean
+pole chain
+pole changer
+pole compass
+pole-dried
+pole effect
+pole flounder
+pole horse
+pole jumper
+pole lathe
+pole mast
+pole-masted
+pole piece
+pole pitch
+pole screen
+pole-shaped
+pole-stack
+pole strap
+pole-trap
+pole trawl
+pole vault
+pole vaulter
+polewood stage
+police alarm
+police badge
+police baton
+police boat
+police chief
+police club
+police commissioner
+police court
+police detective
+police dog
+police inspector
+police jury
+police matron
+police officer
+police state
+police station
+police wagon
+police whistle
+policy loan
+policy racket
+policy shop
+policy year
+Polish-american
+Polish-jew
+Polish-made
+Polish-speaking
+polissoir wheel
+political-minded
+politician-proof
+politico-arithmetical
+politico-commercial
+politico-ecclesiastical
+politico-economical
+politico-ethical
+politico-geographical
+politico-judicial
+politico-military
+politico-moral
+politico-orthodox
+politico-peripatetic
+politico-religious
+politico-sacerdotal
+politico-scientific
+politico-social
+politico-theological
+polka dot
+polka-dotted
+polka mazurka
+poll booth
+poll degree
+pollen basket
+pollen brush
+pollen catarrh
+pollen chamber
+pollen-covered
+pollen-dusted
+pollen mass
+pollen plate
+pollen sac
+pollen-sprinkled
+pollen tube
+poll evil
+poll parrot
+poll-parroty
+poll pick
+poll tax
+polly-fox
+polly mountain
+polo cart
+polo coat
+polo pony
+polo shirt
+polychrest salt
+polyhedron formula
+polymorphous-perverse
+poly-mountain
+polyneuritic psychosis
+polypod brake
+polypody family
+pomace fly
+pomegranate purple
+pommel bag
+pompano shell
+Pompeian blue
+Pompeian red
+Pompeian yellow
+pom-pom
+pom-pom-pullaway
+ponceau red
+pond apple
+pond crow
+pond cypress
+pond duck
+pond lily
+pondosa pine
+pond pine
+pond scum
+pond-scum parasite
+pond smelt
+pons asinorum
+pontiff purple
+pontoon bridge
+pontoon dock
+pony engine
+pony express
+pony grass
+pony truck
+pony truss
+poodle dog
+pooh-pooh
+pooh-pooher
+pool bottle
+pool hole
+pool seller
+pool table
+poop cabin
+poop deck
+poop royal
+poor-blooded
+poor box
+poor-charactered
+poor-clad
+poor debtor
+poor-debtor law
+poor-do
+poor farm
+poor-feeding
+poor-folksy
+poor gas
+poor law
+poor-minded
+poor oat
+poor relief
+poor-sighted
+poor-spirited
+poor-spiritedly
+poor-spiritedness
+pop ash
+popcorn flower
+pop fly
+popinjay green
+poplar birch
+poplar borer
+poplar box
+poplar-covered
+poplar-crowned
+poplar-flanked
+poplar hawk
+poplar-leaved
+poplar-lined
+poplar-planted
+poplar worm
+popper cake
+poppet leg
+poppet valve
+poppy anemone
+poppy ash
+poppy bee
+poppy-bordered
+poppy-colored
+poppy-crimson
+poppy-crowned
+poppy-flowered
+poppy-haunted
+poppy mallow
+poppy oil
+poppy-pink
+poppy-red
+poppy seed
+poppy-sprinkled
+pop safety valve
+popular-priced
+pop-up
+pop valve
+porcelain clay
+porcelain glass
+porcelain green
+porcelain maker
+porcelain making
+porcelain shell
+porcelain tower
+porch chair
+porch climber
+porch hammock
+porch lamp
+porch railing
+porch rocker
+porch screen
+porch seat
+porch settee
+porch swing
+porcupine beater
+porcupine boiler
+porcupine crab
+porcupine disease
+porcupine fish
+porcupine grass
+porcupine man
+porcupine rat
+pore fungus
+pork barrel
+pork butcher
+pork chop
+pork eater
+pork packer
+pork pie
+pork tapeworm
+porphyry chamber
+porphyry copper
+porphyry shell
+porpoise oil
+porpoise whale
+port bar
+port captain
+port-caustic
+port charge
+portcullis money
+port differential
+port duty
+porte-cochere
+porteous roll
+porterhouse steak
+portia tree
+portland cement
+portmanteau word
+port-mouthed
+Porto rican
+Porto rico
+portrait bust
+portrait lens
+port risk insurance
+Port royal
+Port-royalist
+port tack
+Portugal crakeberry
+port-vent
+port-wine
+port-winy
+position artillery
+position buoy
+position co-ordinate
+position finder
+position isomerism
+position target
+posset pot
+poss stick
+poss tub
+possum haw
+possum oak
+Post-adamic
+Post-advent
+postage currency
+postage-due stamp
+postage envelope
+postage label
+postage stamp
+Post-alexandrine
+Post-apostolic
+Post-apostolical
+Post-aristotelian
+Post-armistice
+post auger
+Post-augustan
+Post-augustinian
+Post-azilian
+Post-aztec
+Post-babylonian
+Post-basket-maker
+Post-biblical
+post bill
+post binder
+post boat
+post brake
+Post-cambrian
+post captain
+post car
+Post-carboniferous
+post card
+postcard bander
+Post-carolingian
+Post-cartesian
+post cedar
+post chaise
+post chariot
+Post-chaucerian
+Post-christian
+Post-christmas
+post coach
+Post-columbian
+Post-confucian
+Post-conquest
+Post-constantinian
+Post-copernican
+Post-cretacean
+Post-cretaceous
+post croaker
+Post-crusade
+Post-darwinian
+Post-davidic
+post day
+Post-devonian
+Post-diocletian
+Post-disruption
+Post-easter
+Post-elizabethan
+Post-eocene
+posterio-occlusion
+post-factum
+post-fine
+post-free
+Post-galilean
+Post-gothic
+Post-hittite
+Post-homeric
+post horn
+post horse
+post hospital
+Post-huronian
+Post-ibsen
+Post-incarnation
+posting house
+post insulator
+Post-johnsonian
+Post-jurassic
+Post-justinian
+Post-jutland
+Post-kansan
+Post-kantian
+Post-lafayette
+Post-leibnitzian
+Post-lent
+post locust
+Post-marxian
+postmaster general
+postmaster-generalship
+Post-medieval
+Post-mendelian
+post meridiem
+Post-mesozoic
+Post-miocene
+Post-mishnaic
+Post-mishnic
+postmistress-ship
+post mortem
+post-mortem clot
+post-mortem examination
+Post-mosaic
+Post-mycenean
+Post-napoleonic
+Post-newtonian
+Post-nicene
+post note
+post oak
+post-oak grape
+post-obit
+post-obit bond
+post octavo
+post office
+post-office address
+post-officer
+Post-oligocene
+post-ordinar
+Post-ordovician
+Post-paleolithic
+Post-paleozoic
+Post-pauline
+Post-pentecostal
+Post-permian
+Post-petrine
+Post-phidian
+Post-platonic
+Post-pleistocene
+Post-pliocene
+Post-prophetic
+Post-pythagorean
+post race
+Post-raphaelite
+Post-reformation
+Post-renaissance
+Post-restoration
+Post-revolutionary
+post road
+Post-roman
+Post-romantic
+Post-scholastic
+post school
+Post-shakespearean
+post-signer
+Post-silurian
+Post-socratic
+Post-solomonic
+Post-syrian
+Post-talmudical
+post term
+Post-tertiary
+Post-theodosian
+post town
+post trader
+Post-transcendental
+Post-triassic
+Post-tridentine
+posture maker
+posture making
+Post-vedic
+Post-victorian
+Post-volstead
+pot ale
+pot arch
+potash alum
+potash feldspar
+potash granite
+potash hunger
+potash niter
+potash soap
+potassium acid oxalate
+potassium acid sulphate
+potassium acid tartrate
+potassium alum
+potassium amide
+potassium bicarbonate
+potassium bichromate
+potassium binoxalate
+potassium bisulphate
+potassium bitartrate
+potassium bromide
+potassium carbonate
+potassium chlorate
+potassium chloride
+potassium chromate
+potassium cobaltinitrite
+potassium cyanide
+potassium dichromate
+potassium ferricyanide
+potassium ferrocyanide
+potassium hydrate
+potassium hydroxide
+potassium hypoantimonate
+potassium hypochlorite
+potassium iodide
+potassium manganate
+potassium nitrate
+potassium oxalate
+potassium permanganate
+potassium persulphate
+potassium sulphate
+potassium tetroxalate
+potato aphid
+potato ball
+potato bean
+potato beetle
+potato blight
+potato cake
+potato canker
+potato chips
+potato fern
+potato flour
+potato fork
+potato fungus
+potato hook
+potato masher
+potato mosaic
+potato mottle
+potato murrain
+potato onion
+potato peeler
+potato race
+potato scab
+potato set
+potato-sick
+potato tree
+potato vine
+potato wart
+potato weevil
+potato whisky
+potato worm
+pot barley
+pot bottom
+pot-bound
+pot cheese
+potcher engine
+potcher man
+pot-clay
+pot-color
+pot companion
+pot culture
+pot derby
+pot earth
+potent-counterpotent
+pot fisher
+pot fisherman
+pot furnace
+pot garden
+pot kiln
+pot lace
+pot layering
+pot lead
+pot liquor
+pot metal
+pot plant
+pot roast
+pot-rustler
+pot-shaped
+pot shot
+pot-sick
+pot still
+potter bee
+potter wasp
+pottery tissue
+pottery tree
+pottle-bellied
+pottle-bodied
+pottle-crowned
+pottle-deep
+pottle pot
+pot-valiancy
+pot-valiant
+pot-valiantly
+pot-valiantry
+pot-valliance
+pot-valor
+pot-valorous
+pot valve
+pot-wabbler
+pot-walloper
+pot-walloping
+pot wheel
+pot-wobbler
+pouch bone
+pouch-shaped
+poulard wheat
+poulette sauce
+poultry breeder
+poultry breeding
+poultry buyer
+poultry car
+poultry culture
+poultry dealer
+poultry dresser
+poultry dressing
+poultry fancier
+poultry fancying
+poultry farm
+poultry farmer
+poultry farming
+poultry feed
+poultry grower
+poultry house
+poultry husbandry
+poultry judging
+poultry keeper
+poultry keeping
+poultry raiser
+poultry raising
+poultry rearing
+poultry shop
+poultry show
+poultry stall
+poultry tick
+poultry wire
+poultry yard
+pounce box
+pounce paper
+pouncet box
+pounce tree
+pouncing paper
+pound boat
+pound brush
+pound degree
+pound-folly
+pound-foolish
+pound-foolishness
+pound-foot
+pound lock
+pound net
+pound sovereign
+pound sterling
+pound-trap
+pourer-off
+pourer-out
+pour plate
+pour point
+pour test
+pousse-cafe
+poverty birch
+poverty grass
+poverty plant
+poverty-proof
+poverty-stricken
+powder barrel
+powder beef
+powder-black
+powder blue
+powder box
+powder boy
+powder charge
+powder-charged
+powder chest
+powder down
+powder flag
+powder flask
+powder-gray
+powder horn
+powder house
+powder keg
+powder-laden
+powder magazine
+powder maker
+powder-marked
+powder metallurgy
+powder mill
+powder monkey
+powder pimperlimpimp
+powder post
+powder-post beetle
+powder-posted
+powder puff
+powder room
+powder-scorched
+powder ship
+powder-tinged
+power amplifier
+power cable
+power-directional relay
+power dive
+power drill
+power-driven
+power duster
+power-elated
+power engineer
+power engineering
+power factor
+power gas
+power jack
+power line
+power load
+power loading
+power loom
+power meter
+power-operate
+power-operated
+power pack
+power plant
+power-plant engineer
+power-plant engineering
+power-political
+power politics
+power press
+power pump
+power punch
+power rail
+power relay
+power-riveting
+power sawyer
+power-seeking
+power shaft
+power shears
+power shovel
+power sprayer
+power station
+power stroke
+power supply
+power transformer
+power tube
+power vessel
+power weaver
+pox-marked
+practical joke
+practical joker
+practice curve
+practice-teach
+practice teacher
+praedium dominans
+praedium serviens
+praemunientes clause
+praemunientes writ
+prairie acacia
+prairie artichoke
+prairie aster
+prairie chicken
+prairie clover
+prairie dog
+prairie falcon
+prairie fire
+prairie goose
+prairie hen
+prairie itch
+prairie june grass
+prairie larkspur
+prairie owl
+prairie poppy
+prairie rocket
+prairie sage
+prairie schooner
+prairie violet
+praise-begging
+praise-deserving
+praise-fed
+praise-giving
+praise meeting
+praise-spoiled
+praise-winning
+prayer-answering
+prayer bead
+prayer book
+prayer carpet
+prayer-clenched
+prayer flag
+prayer-granting
+prayer-hearing
+prayer-lisping
+prayer-loving
+prayer meeting
+prayer mill
+prayer paper
+prayer-repeating
+prayer scarf
+prayer tower
+prayer wheel
+praying cylinder
+Pre-achaean
+preacher bird
+Pre-alfredian
+Pre-american
+Pre-ammonite
+Pre-ammonitish
+Pre-armistice
+Pre-arthurian
+Pre-aryan
+Pre-assyrian
+Pre-augustan
+Pre-augustine
+Pre-babylonian
+Pre-baconian
+Pre-british
+Pre-buddhist
+Pre-byzantine
+Pre-cambrian
+Pre-cambridge
+Pre-canaanitic
+Pre-carboniferous
+Pre-carolingian
+Pre-catholic
+precedent condition
+Pre-celtic
+Pre-centennial
+Pre-chaucerian
+Pre-chellean
+Pre-chinese
+Pre-christian
+Pre-christianic
+Pre-christmas
+precision balance
+precision barometer
+precision block
+precision caliper
+precision clock
+precision gauge
+precision gauge block
+precision grinding
+precision instrument
+precision lathe
+precision lens
+precision meter
+precision punch
+precision scale
+precision screw
+precision tool
+precision weight
+Pre-columbian
+precombustion engine
+Pre-congregationalist
+Pre-congress
+Pre-conquest
+Pre-copernican
+Pre-copernicanism
+precordial anxiety
+precordial pain
+precordial region
+Pre-crusade
+Precursor society
+Pre-dantean
+Pre-darwinian
+Pre-darwinianism
+predation pressure
+Pre-dickensian
+Pre-dorian
+Pre-doric
+Pre-dravidian
+Pre-dravidic
+Pre-dutch
+pre-earthly
+pre-earthquake
+Pre-easter
+pre-eclampsia
+pre-eclamptic
+pre-economic
+pre-economical
+pre-edit
+pre-edition
+pre-editor
+pre-editorial
+pre-editorially
+pre-educate
+pre-education
+pre-educational
+pre-educationally
+pre-effect
+pre-effective
+pre-effectively
+pre-effectual
+pre-efficiency
+pre-efficient
+pre-efficiently
+pre-effort
+pre-elect
+pre-election
+pre-elective
+pre-electric
+pre-electrical
+pre-electrically
+pre-elemental
+pre-elementary
+pre-eligibility
+pre-eligible
+pre-eliminate
+pre-elimination
+pre-eliminator
+Pre-elizabethan
+pre-emancipation
+pre-embarrass
+pre-embarrassment
+pre-embodiment
+pre-embody
+pre-emergency
+pre-eminence
+pre-eminency
+pre-eminent
+pre-eminently
+pre-eminentness
+pre-emotion
+pre-emotional
+pre-emperor
+Pre-empire
+pre-employ
+pre-employee
+pre-employer
+pre-employment
+pre-empt
+pre-emptible
+pre-emption
+pre-emptioner
+pre-emption right
+pre-emptive
+pre-emptively
+pre-emptor
+pre-emptory
+pre-enable
+pre-enact
+pre-enaction
+pre-enclose
+pre-enclosure
+pre-encounter
+pre-encourage
+pre-encouragement
+pre-endeavor
+pre-endorse
+pre-endorsement
+pre-endorser
+pre-energetic
+pre-energy
+pre-enforce
+pre-enforcement
+pre-engage
+pre-engagement
+pre-engineering
+preen gland
+Pre-english
+pre-enjoy
+pre-enjoyable
+pre-enjoyment
+pre-enlarge
+pre-enlargement
+pre-enlighten
+pre-enlightener
+pre-enlightening
+pre-enlightenment
+pre-enlist
+pre-enlistment
+pre-enroll
+pre-enrollment
+pre-entail
+pre-entailment
+pre-enter
+pre-entertain
+pre-entertainer
+pre-entertainment
+pre-enthusiasm
+pre-enthusiastic
+pre-entitle
+pre-entrance
+pre-entry
+pre-enumerate
+pre-enumeration
+pre-envelop
+pre-envelopment
+pre-environmental
+pre-epic
+pre-epidemic
+pre-epochal
+pre-equip
+pre-equipment
+pre-equity
+pre-erect
+pre-erection
+pre-erupt
+pre-eruption
+pre-eruptive
+pre-escape
+pre-escort
+pre-esophageal
+pre-essay
+pre-essential
+pre-establish
+pre-established
+pre-establisher
+pre-establishment
+pre-esteem
+pre-estimate
+pre-estimation
+pre-estival
+pre-eter
+pre-eternal
+pre-evade
+pre-evaporate
+pre-evaporation
+pre-evaporator
+pre-evasion
+pre-evidence
+pre-evident
+pre-evidently
+pre-evite
+pre-evolutional
+pre-evolutionary
+pre-evolutionist
+pre-exact
+pre-exaction
+pre-examination
+pre-examine
+pre-examiner
+pre-excel
+pre-excellence
+pre-excellency
+pre-excellent
+pre-except
+pre-exception
+pre-exceptional
+pre-exceptionally
+pre-exchange
+pre-excitation
+pre-excite
+pre-excitement
+pre-exclude
+pre-exclusion
+pre-exclusive
+pre-exclusively
+pre-excursion
+pre-excuse
+pre-execute
+pre-execution
+pre-executor
+pre-exempt
+pre-exemption
+pre-exhaust
+pre-exhaustion
+pre-exhibit
+pre-exhibition
+pre-exhibitor
+pre-exile
+pre-exilian
+pre-exilic
+pre-exist
+pre-existence
+pre-existent
+pre-existentiary
+pre-existentism
+pre-expand
+pre-expansion
+pre-expect
+pre-expectant
+pre-expectation
+pre-expedition
+pre-expeditionary
+pre-expend
+pre-expenditure
+pre-expense
+pre-experience
+pre-experiment
+pre-experimental
+pre-expiration
+pre-explain
+pre-explanation
+pre-explanatory
+pre-explode
+pre-explosion
+pre-expose
+pre-exposition
+pre-exposure
+pre-expound
+pre-expounder
+pre-express
+pre-expression
+pre-expressive
+pre-extend
+pre-extensive
+pre-extensively
+pre-extent
+pre-extinction
+pre-extinguish
+pre-extinguishment
+pre-extract
+pre-extraction
+pre-fabulous
+prefect apostolic
+prefecture apostolic
+preference share
+prefernce bond
+prefernce freight
+pre-free-trade
+Pre-french
+Pre-georgian
+Pre-german
+Pre-germanic
+Pre-gothic
+Pre-greek
+Pre-han
+Pre-hebrew
+Pre-hellenic
+Pre-hieronymian
+Pre-hinduized
+Pre-hispanic
+Pre-homeric
+Pre-inca
+Pre-incan
+Pre-incarial
+Pre-indian
+Pre irish
+Pre-islam
+Pre-islamic
+Pre-islamite
+Pre-islamitic
+Pre-israelite
+Pre-israelitish
+Pre-jewish
+Pre-johannine
+Pre-johnsonian
+prejudice-proof
+pre-judicial
+pre-judiciary
+Pre-justinian
+Pre-koranic
+Pre-latin
+Pre-laurentian
+Pre-linnaean
+Pre-luciferian
+Pre-lutheran
+Pre-malay
+Pre-malayan
+Pre-malaysian
+pre-man
+Pre-marxian
+Pre-messianic
+Pre-methodist
+premium note
+premium system
+Pre-mohammedian
+Pre-mosaic
+Pre-moslem
+Pre-mycenaean
+Pre-napoleonic
+Pre-newtonian
+Pre-noachian
+Pre-norman
+Pre-norse
+Pre-osmanli
+Pre-paleozoic
+preparatory school
+Pre-patrician
+Pre-pauline
+prepay station
+Pre-permian
+Pre-persian
+Pre-petrine
+Pre-pharaonic
+Pre-phidian
+Pre-polish
+Pre-pueblo
+Pre-puebloan
+Pre-raphael
+Pre-raphaelism
+Pre-raphaelite
+Pre-raphaelitic
+Pre-raphaelitish
+Pre-raphaelitism
+Pre-reconstruction
+Pre-reformation
+Pre-renaissance
+Pre-restoration
+Pre-revolution
+prerogative court
+prerogative instance
+prerogative office
+prerogative writ
+Pre-roman
+Pre-sargonic
+Pre-saxon
+Presbyterian alliance
+Pre-semitic
+presence chamber
+presentation copy
+presentation time
+present-day
+present-minded
+Pre-shakespeare
+Pre-shakespearean
+president-elect
+president general
+president pro tempore
+Pre-silurian
+Pre-socratic
+Pre-solomonic
+Pre-solonian
+Pre-spanish
+press-agent
+press-agentry
+press bed
+press box
+press boy
+press bundler
+press bureau
+press cake
+press clipper
+press clipping
+press cloth
+press copy
+press corrector
+press correspondent
+press drill
+pressed beef
+presser bar
+presser foot
+presser shoe
+presser wheel
+press feeder
+press fit
+press fitter
+press-forge
+press gallery
+press gang
+pressing boards
+pressing iron
+press iron
+press-made
+press-noticed
+press operator
+press release
+press-ridden
+press roll
+press tender
+pressure atrophy
+pressure blower
+pressure boiler
+pressure bottle
+pressure box
+pressure coil
+pressure cooker
+pressure element
+pressure evaporator
+pressure fan
+pressure filter
+pressure-fixing
+pressure gauge
+pressure governor
+pressure gradient
+pressure group
+pressure hull
+pressure ice
+pressure indicator
+pressure nozzle
+pressure producer
+pressure pump
+pressure-reciprocating
+pressure recorder
+pressure-reducing
+pressure register
+pressure-regulating
+pressure regulator
+pressure-relief ring
+pressure-relieving
+pressure ridge
+pressure saucepan
+pressure sense
+pressure siphon
+pressure spot
+pressure spring
+pressure stage
+pressure syllable
+pressure tank
+pressure-testing
+pressure tube
+pressure valve
+pressure warrant
+pressure wire
+prestation money
+presto change
+presto chango
+Pre-sumerian
+Pre-syrian
+preterite-present
+preterito-presential
+preterit-present
+Pre-tertiary
+Pre-thanksgiving
+pretium puellae
+Pre-tridentine
+pretty-behaved
+pretty-by-night
+pretty-faced
+pretty-footed
+pretty-humored
+pretty-looking
+pretty-mannered
+pretty-pretty
+pretty-spoken
+pretty-toned
+pretty-witted
+Pre-tudor
+preventer plate
+prevention-proof
+Pre-victorian
+Pre-virgilian
+Pre-volstead
+pribble-prabble
+price current
+price-cutting
+price-deciding
+price-enhancing
+price-fixing
+price index
+price level
+price list
+price-lowering
+price-raising
+price-reducing
+price-ruling
+price-stabilizing
+prick ear
+prick-eared
+pricking-up
+pricking wheel
+prickle cell
+prickle-cone pine
+prickle grass
+prickly-finned
+prickly-fruited
+prickly grass
+prickly heat
+prickly-lobed
+prickly-margined
+prickly-seeded
+prickly-toothed
+prick mark
+prick post
+prick punch
+prick shaft
+prick shooting
+prick song
+prick wheel
+pride-blind
+pride-blinded
+pride-bloated
+pride-fed
+pride-inflamed
+pride-inspiring
+pride-ridden
+pride-sick
+pride-swollen
+priest-astronomer
+priest-baiting
+priest-catching
+priest-doctor
+priest-dynast
+priest-educated
+priest-guarded
+priest-harboring
+priest-hating
+priest-hermit
+priest hole
+priest-king
+priest-knight
+priest-led
+priest-monk
+priest-noble
+priest-philosopher
+priest-poet
+priest-prince
+priest-prompted
+priest-ridden
+priest-riddenness
+priest-ruler
+priest-statesman
+priest-surgeon
+priest vicar
+priest-wrought
+prima donna
+prima facie
+prima materia
+primary scholar
+primary school
+prim-behaving
+prime minister
+prime-ministerial
+prime-ministership
+prime ministry
+prime mover
+prime tone
+priming boiler
+priming charge
+prim-lipped
+prim-looking
+prim-mannered
+prim-mouthed
+prim-notioned
+primo tenore
+primrose-colored
+primrose-decked
+primrose-dotted
+primrose green
+primrose-haunted
+primrose-leaved
+primrose-scented
+primrose-spangled
+primrose-starred
+primrose-sweet
+primrose-tinted
+primrose tree
+primrose willow
+primrose yellow
+prim-seeming
+primuline color
+primuline yellow
+Primulinus hybrid
+primus stove
+prince-abbot
+prince-angel
+prince-bishop
+prince consort
+prince-duke
+prince elector
+prince-general
+prince-killing
+prince-poet
+prince-president
+prince-priest
+prince-primate
+prince-protected
+prince-proud
+prince regent
+prince-ridden
+prince royal
+princess pine
+princess regent
+princess-ship
+princess tree
+prince-teacher
+prince-trodden
+print cloth
+print cutter
+printing frame
+printing-in
+printing ink
+printing machine
+printing office
+printing-out
+printing press
+print-out
+print shop
+print trimmer
+prism binocular
+prism diopter
+prism glass
+prism level
+prism spectroscope
+prism telescope
+prison bird
+prison-bound
+prison breach
+prison-bred
+prison-bursting
+prison-caused
+prison-escaping
+prison-free
+prison house
+prison-made
+prison-making
+prison psychosis
+prison-taught
+prisse papyrus
+prittle-prattle
+private checker
+private school
+privation-proof
+privet adelia
+privet andromeda
+privet honeysuckle
+privy council
+privy councilor
+privy-councilship
+prize court
+prize crew
+prize fight
+prize fighter
+prize fighting
+prize-giving
+prize money
+prize-playing
+prize ring
+prize-taking
+prize winner
+prize-winning
+Pro-abyssinian
+Pro-african
+Pro-alabaman
+Pro-alaskan
+Pro-albanian
+Pro-albertan
+Pro-algerian
+Pro-allied
+Pro-ally
+Pro-alpine
+Pro-alsatian
+Pro-american
+Pro-americanism
+Pro-anatolian
+Pro-anglican
+Pro-annamese
+Pro-arab
+Pro-arabian
+Pro-arabic
+Pro-argentina
+Pro-argentinian
+Pro-arian
+Pro-aristotelian
+Pro-armenian
+Pro-arminian
+pro-art
+Pro-asian
+Pro-asiatic
+Pro-athanasian
+Pro-athenian
+Pro-atlantic
+Pro-australian
+Pro-austrian
+Pro-azorian
+probability curve
+Pro-baconian
+Pro-bahamian
+Pro-balkan
+Pro-baptist
+probate bond
+probate court
+probate duty
+probation officer
+Pro-bavarian
+Probe-bibel
+Pro-belgian
+probe-pointed
+Pro-berlin
+Pro-berlinian
+Pro-bermudian
+probe scissors
+Pro-bessarabian
+Pro-biblic
+Pro-biblical
+probirth-control
+Pro-boer
+Pro-boerism
+Pro-bohemian
+Pro-bolivian
+Pro-bolshevik
+Pro-bolshevism
+Pro-bolshevist
+Pro-bonapartean
+Pro-bonapartist
+proboscis monkey
+Pro-bosnian
+Pro-bostonian
+Pro-brahman
+Pro-brazilian
+Pro-british
+Pro-britisher
+Pro-britishism
+Pro-briton
+Pro-bryan
+Pro-buddhist
+Pro-buddhistic
+Pro-bulgarian
+Pro-burman
+pro-bus
+Pro-byronic
+Pro-byzantine
+Pro-caesar
+Pro-caesarian
+Pro-caledonian
+Pro-californian
+Pro-calvinism
+Pro-calvinist
+Pro-calvinistic
+Pro-calvinistically
+Pro-canadian
+Pro-cantabrigian
+Pro-cantonese
+Pro-caribbean
+Pro-carlylean
+Pro-carolinian
+Pro-castilian
+Pro-catalonian
+Pro-cathedralist
+Pro-catholic
+Pro-catholicism
+Pro-caucasian
+Pro-celtic
+process butter
+processionary moth
+procession flower
+process milling
+process plate
+process printer
+process printing
+process server
+process shot
+proces-verbal
+proces-verbaux
+Pro-chicagoan
+Pro-chilean
+Pro-chinese
+pro-city
+Pro-colombian
+Pro-colonial
+Pro-confederate
+Pro-confucian
+Pro-congressional
+Pro-continental
+pro-co-operation
+Pro-corsican
+Pro-costa rican
+Pro-cretan
+Pro-croatian
+Pro-cuban
+procuration fee
+procurator fiscal
+procurator-general
+Pro-cymric
+Pro-cyprian
+Pro-czech
+Pro-czechoslovakian
+Pro-dalmation
+Pro-danish
+Pro-darwinian
+Pro-darwinism
+Pro-dominican
+Pro-dominion
+Pro-dreyfusard
+produce race
+producer gas
+product engineer
+production curve
+production goods
+production manager
+Pro-dutch
+Pro-ecuadorean
+Pro-egyptian
+Pro-elizabethan
+Pro-emersonian
+Pro-emersonianism
+Pro-english
+Pro-entente
+Pro-episcopal
+Pro-eskimo
+Pro-esperantist
+Pro-esperanto
+Pro-estonian
+Pro-ethiopian
+Pro-euclidean
+Pro-eurasian
+Pro-european
+Pro-evangelical
+profanity-proof
+Pro-fascism
+Pro-fascist
+Pro-fascisti
+professor ordinarius
+proficiency badge
+profile board
+profile cutter
+profile drag
+profile line
+profile machine
+profile map
+profile paper
+profiling machine
+Pro-finnish
+profit-building
+profit-making
+profit-producing
+profit-seeking
+profit sharing
+profit-taking
+profit-yielding
+Pro-flemish
+Pro-florentine
+Pro-floridian
+pro forma balance sheet
+Pro-france
+Pro-french
+Pro-freudian
+Pro-friesian
+Pro-friesic
+Pro-gaelic
+Pro-genoan
+Pro-gentile
+Pro-german
+Pro-germanism
+Pro-gothic
+program clock
+program music
+Pro-grecian
+Pro-greek
+progress chart
+progress clerk
+Pro-guatemalan
+Pro-guianan
+Pro-guianese
+Pro-guinean
+Pro-haitian
+Pro-hanoverian
+Pro-hapsburg
+Pro-hawaiian
+Pro-hellenic
+Prohibition party
+prohibition-proof
+Pro-hindu
+Pro-hitler
+Pro-hitlerism
+Pro-hitlerite
+Pro-hohenstaufen
+Pro-hohenzollern
+Pro-honduran
+Pro-hungarian
+Pro-icelandic
+pro-immigrationist
+Pro-indian
+pro-infinitive
+Pro-iranian
+Pro-irish
+Pro-irishism
+Pro-italian
+Pro-jacobean
+Pro-japanese
+Pro-japanism
+Pro-javan
+Pro-javanese
+projectile anchor
+projectile lathe
+projecting microscope
+projection booth
+projection fiber
+projection machine
+projection print
+projection room
+Pro-jeffersonian
+Pro-jewish
+Pro-judaic
+Pro-judaism
+Pro-kansan
+Pro-korean
+Pro-lamarckian
+Pro-latin
+Pro-latinism
+Pro-latvian
+Pro-league
+Pro-leaguer
+Pro-lettish
+Pro-liberian
+Pro-lithuanian
+Pro-lutheran
+Pro-macedonian
+Pro-magyar
+Pro-maltese
+Pro-malthusian
+pro-man
+Pro-manchukuoan
+Pro-manchurian
+Pro-masonic
+Pro-mediterranean
+promenade concert
+promenade deck
+Pro-methodist
+Pro-mexican
+promise-bound
+promise-breach
+promise-breaking
+promise-crammed
+promise-fed
+promise-fulfilling
+promise-keeping
+promise-led
+promise-making
+promise-performing
+pro-modern
+Pro-mohammedan
+Pro-mongolian
+Pro-mormon
+Pro-moroccan
+Pro-moslem
+prompt dower
+prompt note
+Pro-neapolitan
+prone pressure method
+Pro-netherlandian
+prong box
+prong budding
+prong chuck
+prong die
+prong hoe
+prong-horned
+prong key
+Pro-nicaraguan
+Pro-nordic
+Pro-norman
+Pro-norwegian
+pro-observance
+pro-oceanic
+pro-ode
+pro-oestrous
+pro-oestrum
+pro-oestrys
+proof armor
+proof charge
+proof coin
+proof-correct
+proof correction
+proof leaf
+proof paper
+proof plane
+proof planer
+proof press
+proof-proof
+proof sheet
+proof spirit
+pro-opera
+pro-operation
+pro-opic
+pro-opium
+Pro-oriental
+pro-orthodox
+pro-orthodoxical
+pro-ostracal
+pro-ostracum
+pro-otic
+propaganda-proof
+Pro-panamanian
+Pro-paraguayan
+propeller race
+propeller shaft
+Pro-persian
+property-increment tax
+property insurance
+property man
+property master
+property owner
+Pro-peruvian
+prophet-bard
+prophet flower
+prophetico-historical
+Prophetico-messianic
+prophet-king
+prophet-painter
+prophet-poet
+prophet-preacher
+prophet-statesman
+Pro-philippine
+prop joint
+Pro-polish
+Pro-polynesian
+Pro-portuguese
+proposal bond
+pro-pre-existentiary
+Pro-presbyterian
+prop root
+Pro-protestant
+Pro-prussian
+prop word
+propyl alcohol
+Pro-quaker
+pro rata
+Pro-renaissance
+Pro-roman
+Pro-rumanian
+Pro-russian
+Pro-salvadoran
+Pro-samoan
+Pro-sardinian
+Pro-saxon
+Pro-scandinavian
+proscenium arch
+proscenium box
+Pro-scriptural
+prosecution-proof
+Pro-semite
+Pro-semitism
+prose poem
+prose poet
+Pro-serb
+Pro-serbian
+prose rhythm
+Pro-shakespearian
+Pro-siamese
+Pro-sicilian
+pro-skin
+Pro-slav
+Pro-slavic
+Pro-slavonic
+Pro-southern
+Pro-soviet
+Pro-spanish
+Pro-spartan
+prospect glass
+prospective glass
+prosperity-proof
+pro-state
+Pro-sudanese
+Pro-sumatran
+Pro-swedish
+Pro-swiss
+Pro-syrian
+Pro-tasmanian
+protection forest
+protector paravane
+protein crystal
+protein factor
+protein-free
+protein milk
+protein shock
+protein therapy
+pro tem
+pro tempore
+proteus animalcule
+Pro-teuton
+Pro-teutonic
+Pro-teutonism
+Proto-apostolic
+Proto-arabic
+Proto-armenian
+Proto-aryan
+Proto-attic
+Proto-australian
+Proto-australoid
+Proto-babylonian
+Proto-berber
+Proto-caucasic
+Proto-celtic
+Proto-chaldaic
+Proto-corinthian
+Proto-doric
+Proto-egyptian
+Proto-elamite
+Proto-etruscan
+Proto-european
+Proto-germanic
+Proto-gothonic
+Proto-greek
+Proto-hattic
+Proto-hellenic
+Proto-hittite
+Proto-indic
+Proto-ionic
+Proto-italic
+Proto-khattish
+Proto-malay
+Proto-malayan
+Proto-mark
+Proto-matthew
+Proto-mede
+Proto-mongol
+Proto-mycenean
+Proto-phoenician
+Proto-polynesian
+Proto-renaissance
+Proto-semitic
+Proto-solutrean
+Proto-teutonic
+Pro-tripolitan
+Pro-tunisian
+Pro-turk
+Pro-turkish
+Pro-tyrolese
+proud-blind
+proud-blooded
+proud-crested
+proud-exulting
+proud flesh
+proud-glancing
+proud-looking
+proud-minded
+proud-mindedness
+proud-paced
+proud-pillared
+proud-prancing
+proud-quivered
+proud-spirited
+proud-stomached
+Pro-ukrainian
+Pro-ulsterite
+Pro-unitarian
+Pro-uruguayan
+Pro-venetian
+Pro-venezuelan
+pro-vice-chancellor
+proving ground
+Pro-virginian
+provision account
+provision tree
+provost court
+provost guard
+provost marshal
+Pro-welsh
+Pro-western
+Pro-whig
+prowl car
+Proxima centauri
+proximity fuze
+Pro-yankee
+Pro-yugoslavian
+Pro-zionism
+Pro-zionist
+prune purple
+prune tree
+pruning hook
+pruning shears
+pry pole
+psalm book
+psalm singer
+psalm tone
+psalm tune
+pseudo abolitionist
+pseudo abstainer
+pseudo academy
+pseudo acceptance
+pseudo accident
+pseudo acid
+pseudo acquaintance
+pseudo actor
+pseudo actress
+pseudo aesthete
+pseudo aestheticism
+pseudo affection
+Pseudo-african
+pseudo agent
+pseudo alliance
+pseudo ally
+pseudo alumna
+pseudo alumnus
+pseudo amateur
+Pseudo american
+pseudo analogy
+pseudo ancestor
+pseudo angel
+Pseudo-angle
+pseudo animal
+pseudo animalism
+pseudo announcement
+pseudo apology
+pseudo applicant
+pseudo application
+pseudo appointment
+pseudo appreciation
+Pseudo-areopagite
+Pseudo-argentinian
+pseudo aristocrat
+Pseudo-aristotelian
+pseudo arrest
+pseudo art
+pseudo artist
+Pseudo-aryan
+pseudo asceticism
+pseudo assertion
+pseudo association
+Pseudo-assyrian
+pseudo astonishment
+pseudo aunt
+Pseudo-australian
+Pseudo-austrian
+pseudo author
+pseudo authoress
+pseudo authorization
+Pseudo-babylonian
+pseudo bacillus
+pseudo banker
+pseudo bankruptcy
+pseudo baptism
+Pseudo-baptist
+pseudo bard
+pseudo base
+Pseudo-belgian
+pseudo benefactor
+pseudo benefactress
+pseudo benevolence
+pseudo bible
+pseudo biographer
+pseudo biography
+pseudo biology
+pseudo bird
+pseudo bishop
+pseudo boa
+Pseudo-bohemian
+Pseudo-bolivian
+pseudo bookcase
+pseudo boy
+Pseudo-brahman
+Pseudo-brazilian
+pseudo bride
+pseudo broker
+pseudo brokerage
+pseudo brother
+Pseudo buddhism
+Pseudo-buddhist
+Pseudo-bulgarian
+Pseudo-callisthenes
+Pseudo-canadian
+pseudo cancellation
+pseudo candidacy
+pseudo candidate
+pseudo candor
+pseudo captive
+pseudo capture
+Pseudo-carthaginian
+pseudo catholic
+pseudo catholicism
+pseudo census
+pseudo champion
+pseudo championship
+pseudo charity
+pseudo chemist
+pseudo chemistry
+Pseudo-chilean
+Pseudo-chinese
+Pseudo christ
+Pseudo christian
+Pseudo christianity
+Pseudo christology
+Pseudo-ciceronian
+pseudo citizen
+pseudo citizenship
+Pseudo-clementine
+pseudo clergy
+pseudo clergyman
+pseudo clerk
+pseudo client
+pseudo club
+pseudo college
+pseudo competitor
+pseudo conclusion
+pseudo cone
+pseudo confession
+pseudo confessional
+pseudo confirmation
+pseudo conflict
+pseudo connection
+pseudo consent
+pseudo conservator
+pseudo conversion
+pseudo cook
+pseudo cordiality
+pseudo corporation
+pseudo count
+pseudo courtesy
+pseudo courtier
+pseudo cousin
+pseudo creditor
+pseudo crisis
+pseudo critic
+pseudo criticism
+pseudo crystal
+pseudo cult
+pseudo cultivation
+pseudo culture
+Pseudo-dantesque
+pseudo date
+pseudo death
+pseudo declaration
+pseudo deficit
+pseudo delegate
+pseudo delegation
+pseudo democracy
+pseudo deputation
+pseudo deputy
+pseudo devotee
+pseudo devotion
+pseudo dike
+Pseudo-dionysius
+pseudo diplomacy
+pseudo diplomat
+pseudo distance
+pseudo distribution
+pseudo distributor
+pseudo divination
+pseudo divine
+pseudo divinity
+pseudo doctor
+pseudo donation
+pseudo donor
+pseudo drama
+pseudo dramatist
+pseudo duke
+Pseudo-dutch
+pseudo earl
+Pseudo-east indian
+pseudo economics
+pseudo economy
+pseudo editor
+pseudo editorial
+pseudo education
+pseudo educator
+Pseudo-egyptian
+pseudo election
+pseudo electorate
+Pseudo-elizabethan
+pseudo emotion
+pseudo endeavor
+Pseudo-english
+pseudo enthusiasm
+pseudo enthusiast
+pseudo episcopacy
+Pseudo-episcopalian
+pseudo equality
+pseudo ethics
+pseudo etymologist
+pseudo etymology
+Pseudo-european
+pseudo evangelist
+pseudo example
+pseudo exemplar
+pseudo experiment
+pseudo expert
+pseudo exposure
+pseudo fabric
+pseudo failure
+pseudo faith
+pseudo fame
+pseudo farmer
+pseudo farming
+pseudo father
+pseudo femininity
+pseudo feminism
+pseudo feminist
+pseudo fertilization
+pseudo finality
+pseudo flatterer
+pseudo flattery
+pseudo form
+Pseudo-french
+pseudo fruit
+pseudo generosity
+pseudo geniality
+pseudo genius
+pseudo gentility
+pseudo gentleman
+Pseudo-georgian
+Pseudo-german
+pseudo geyser
+pseudo ghost
+Pseudo-gothic
+Pseudo-grecian
+Pseudo-greek
+pseudo healer
+pseudo heart
+pseudo heathen
+pseudo hero
+Pseudo-hindu
+Pseudo-hittite
+Pseudo-homeric
+pseudo humanism
+pseudo humanist
+pseudo humanitarian
+Pseudo-hungarian
+pseudo husband
+pseudo identity
+pseudo impartiality
+Pseudo-incan
+pseudo independence
+Pseudo-indian
+pseudo information
+pseudo insanity
+pseudo inspiration
+pseudo internationalism
+pseudo internationalist
+pseudo invalid
+pseudo invalidism
+pseudo-ionone
+Pseudo-iranian
+Pseudo-irish
+Pseudo-isidore
+Pseudo-isidorian
+pseudo island
+pseudo isle
+pseudo-isometric
+Pseudo-italian
+Pseudo-japanese
+pseudo jaundice
+pseudo judge
+pseudo judgment
+Pseudo-junker
+pseudo justice
+pseudo knight
+pseudo label
+pseudo learning
+pseudo legality
+pseudo legend
+pseudo legislation
+pseudo legislator
+pseudo liberalism
+pseudo liberality
+pseudo liquidation
+pseudo literature
+pseudo loan
+pseudologia phantastica
+pseudo lord
+pseudo mahogany
+pseudo marble
+pseudo marquis
+pseudo marriage
+pseudo martyr
+pseudo martyrdom
+pseudo masculinism
+pseudo masculinity
+pseudo masterpiece
+Pseudo-mayan
+pseudo medievalism
+pseudo meditation
+pseudo member
+pseudo membership
+pseudo memory
+pseudo messenger
+Pseudo-messiah
+Pseudo-messianic
+Pseudo-methodist
+Pseudo-mexican
+pseudo militarism
+Pseudo-miltonic
+pseudo minister
+pseudo ministry
+pseudo miracle
+pseudo modesty
+Pseudo-mohammedan
+Pseudo-mohammedanism
+pseudo monastery
+Pseudo-mongolian
+pseudo monk
+pseudo moralist
+pseudo morality
+Pseudo-moslem
+pseudo myth
+pseudo narcotism
+pseudo nationalism
+pseudo nobility
+pseudo noble
+Pseudo-norwegian
+pseudo nymph
+pseudo-occidental
+pseudo occidentalism
+pseudo occupation
+pseudo official
+pseudo officialism
+Pseudo-oriental
+pseudo orientalism
+pseudo-orthorhombic
+pseudo-osteomalacia
+pseudo owner
+pseudo pagan
+Pseudo-panamanian
+pseudo-papal
+pseudo parallel
+pseudo parasite
+pseudo parent
+pseudo parson
+pseudo participation
+pseudo partner
+pseudo partnership
+pseudo pastor
+pseudo pastorate
+pseudo patriot
+pseudo patriotism
+pseudo patron
+pseudo patronage
+pseudo payment
+pseudo peasant
+pseudo peasantry
+Pseudo-persian
+pseudo philanthropist
+pseudo philanthropy
+pseudo philologist
+pseudo philology
+pseudo philosopher
+pseudo philosophy
+pseudo physician
+pseudo piety
+pseudo pigmentation
+Pseudo-pindaric
+pseudo poet
+pseudo poetess
+pseudo poetry
+Pseudo-polish
+pseudo politician
+pseudo politics
+pseudo popularity
+pseudo possession
+pseudo possessor
+pseudo poverty
+pseudo precedent
+Pseudo-presbyterian
+pseudo prescription
+pseudo presentiment
+pseudo priest
+pseudo priesthood
+pseudo prince
+pseudo principality
+pseudo profession
+pseudo professor
+pseudo prohibition
+pseudo prohibitionist
+pseudo prophecy
+pseudo prophet
+pseudo prophetess
+pseudo prosperity
+pseudo psychologist
+pseudo psychology
+pseudo purity
+pseudo ray
+pseudo realism
+pseudo recognition
+pseudo recollection
+pseudo reconciliation
+pseudo reform
+pseudo reformation
+pseudo reformatory
+pseudo reformer
+pseudo registration
+pseudo relation
+pseudo relationship
+pseudo relative
+pseudo religion
+pseudo republic
+Pseudo-republican
+pseudo residence
+pseudo resident
+pseudo resignation
+pseudo reversal
+pseudo rheumatism
+Pseudo-roman
+pseudo romanticism
+pseudo royal
+pseudo royalty
+Pseudo-russian
+pseudo sacrilege
+pseudo saint
+pseudo saintliness
+pseudo sanctity
+pseudo sanctuary
+pseudo satire
+pseudo satirist
+pseudo scholar
+pseudo scholarship
+pseudo science
+pseudo scientist
+Pseudo-semitic
+pseudo sensation
+pseudo sense
+pseudo sensibility
+Pseudo-serbian
+pseudo servility
+pseudo servitor
+pseudo servitude
+Pseudo-shakespearean
+pseudo signature
+pseudo siphon
+pseudo slavery
+pseudo socialism
+pseudo socialist
+Pseudo-socratic
+Pseudo-south african
+Pseudo-spanish
+pseudo specialist
+pseudo specialty
+pseudo specter
+pseudo spirit
+pseudo spirituality
+pseudo statement
+pseudo stem
+pseudo student
+pseudo subtlety
+pseudo suicide
+Pseudo-swedish
+pseudo symptom
+pseudo temperance
+pseudo theft
+pseudo tribe
+pseudo tribulation
+pseudo tribute
+Pseudo-turk
+Pseudo-turkish
+pseudo-uniseptate
+pseudo university
+pseudo-urate
+pseudo-urea
+pseudo-uric
+Pseudo-vergilian
+Pseudo-victorian
+pseudo virgin
+pseudo witness
+pseudo worship
+pseudo zeal
+P-shaped
+P station
+psycho-asthenics
+psychopathia sexualis
+ptomaine poisoning
+P-tongue
+P trap
+pubertal gland
+puberty gland
+public enemy
+public health
+public house
+publicity law
+publicity manager
+publicity-proof
+public law
+public librarian
+public library
+public-minded
+public-mindedness
+public nuisance
+public-official bond
+public-opinion poll
+public orator
+public school
+public servant
+public service
+public speaker
+public speaking
+public-spirited
+public-spiritedly
+public-spiritedness
+public-voiced
+public works
+puce oxide
+pudding bag
+pudding face
+pudding-faced
+pudding grass
+pudding-shaped
+pudding sleeve
+pudding stone
+pudding time
+puddle ball
+puddle bar
+puddle duck
+puddle rolls
+puddle wall
+puddling furnace
+Pueblo indian
+puerperal fever
+Puerto rican
+Puerto rico
+puff adder
+puff box
+puffer pipe
+puff-fish
+puff-leg
+puff paste
+puff-puff
+puff shark
+puff sleeve
+pug dog
+pug-faced
+pug head
+pug knife
+pug moth
+pug nose
+pug-nosed
+pug-pile
+pug piling
+puke-stocking
+pullboat logging
+pull box
+pull broach
+pull-drive
+puller-in
+puller-out
+pullet disease
+pulley block
+pulley chain
+pulley frame
+pulley lathe
+pulley oiler
+pulley-shaped
+pulley stile
+pulley tap
+pulling-out
+pull-in torque
+pull lamp holder
+pull-off
+pull-on
+pull-out
+pull-out torque
+pull-over
+pull pin
+pull station
+pull strap
+pull switch
+pull-through
+pull-through torque
+pull-up
+pully-haul
+pully-hauly
+pulp canal
+pulp cavity
+pulp chamber
+pulp engine
+pulpit cloth
+pulpit cross
+pulpit rock
+pulp lead
+pulp machine
+pulp nodule
+pulsation pump
+pulsation theory
+pulse deficit
+pulse family
+pulse glass
+pulse-jet engine
+pulse rate
+pulse-time modulation
+pulse wave
+pulsion diverticulum
+pulvering day
+pulverizer harrow
+pumice soap
+pumice stone
+pump-back method
+pump bob
+pump brake
+pump cylinder
+pump doctor
+pump drill
+pump gun
+pump handle
+pump-handler
+pump house
+pumping-back method
+pumping engine
+pumpkin ash
+pumpkin head
+pumpkin-headed
+pumpkin pine
+pumpkin seed
+pumpkin-seed oil
+pumpkin tree
+pump rod
+pump room
+pump sole
+pump spear
+pump staff
+pump well
+puna grass
+punch barrel
+punch bowl
+punch cutter
+punch-drunk
+punch holder
+punch house
+punching machine
+punching press
+punch ladle
+punch line
+punch mark
+punch-marked
+punch pliers
+punch press
+puncture vine
+puncture voltage
+pungent meadow grass
+punishment-proof
+punitive sanction
+punkah wallah
+punk oak
+punk tree
+punner bar
+punt formation
+punt gun
+punto reverso
+punt shooter
+punt shooting
+pupa-shaped
+pupa shell
+pupil hour
+pupil teacher
+pupil-teacherdom
+pupil-teachership
+pupil teachery
+puppet play
+puppet player
+puppet show
+puppet valve
+puppy drum
+puppy love
+pup tent
+purchase book
+purchase journal
+purchase ledger
+purchase money
+purchase record
+purchase shears
+purchasing agent
+purchasing power
+pure-blooded
+pure-bosomed
+pure-dye
+pure-eyed
+pure-food law
+pure line
+pure-minded
+purgatory hammer
+purification flower
+purine base
+purity rubric
+purl stitch
+purple-awned
+purple-awned oat grass
+purple-backed
+purple-beaming
+purple beard grass
+purple bent
+purple-berried
+purple-black
+purple-blue
+purple-brown
+purple-clad
+purple-coated
+purple-colored
+purple-crimson
+purple-dawning
+purple-dyeing
+purple-eyed
+purple-faced
+purple fish
+purple fishery
+purple-flowered
+purple-fringed
+purple-glowing
+purple-green
+purple-headed
+purple-hued
+purple-leaved
+purple melick grass
+purple-nosed
+purple oat
+purple-red
+purple-robed
+purple-rose
+purple-skirted
+purple-spiked
+purple-spotted
+purple-staining
+purple-stemmed
+purple-streaked
+purple-streaming
+purple-tailed
+purple-tipped
+purple-top
+purple-topped
+purple-veined
+purple-vested
+purple wood grass
+purple-yellow
+purpose clause
+purre maw
+purse bearer
+purse crab
+purse cutter
+purse cutting
+purse-eyed
+purse isinglass
+purse line
+purse-lined
+purse-lipped
+purse-mad
+purse maker
+purse net
+purse-pinched
+purse pride
+purse-proud
+purse race
+purse ring
+purse rope
+purse seine
+purse-shaped
+purse silk
+purse-snatching
+purse spider
+purse string
+purse-string suture
+purse-swollen
+purse weight
+purslane speedwell
+purslane tree
+pursuit airplane
+pursuit pendulum
+pursuit plane
+pursuit squadron
+pus cell
+push bicycle
+push bolt
+push broach
+push button
+push car
+pusher airplane
+pusher grade
+push fit
+push hoe
+push moraine
+push-off
+push-out chuck
+push-pull
+pus pan
+puss clover
+puss moth
+pussy clover
+pussy willow
+pustula maligna
+put-off
+put-on
+put-out
+put-put
+put-putter
+putter-forth
+putter-in
+putter-off
+putter-on
+putter-out
+putter-through
+putter-up
+putting cleek
+putting green
+putting stone
+putty coat
+putty-colored
+putty eye
+putty-faced
+putty gloss
+putty-jointed
+putty knife
+putty-looking
+putty powder
+putty-powdered
+putty-stopped
+put-up
+put-upon
+puzzle box
+puzzle-brain
+puzzle canon
+puzzle-cap
+puzzle lock
+puzzle-monkey
+puzzle-wit
+pygmy-minded
+pyramid flower
+pyramid plant
+pyramid-shaped
+pyramid shell
+pyrethrum yellow
+pyrite type
+pyrite yellow
+pyritohedral group
+pyrogallol monoacetate
+pyrometer cone
+pyroxene group
+pyroxylin plastic
+pyrrole red
+pyx cloth
+pyx-jury
+Q-celt
+Q-celtic
+Q-group
+Q-language
+Q-shaped
+Q-ship
+quack grass
+quad crown
+quad demy
+quad large
+quad line
+quadrant compass
+quadrant electrometer
+quadrant plate
+quadrature component
+quadri-invariant
+quadrille ruling
+quadrimum merum
+quad royal
+quad small
+quail brush
+quail call
+quail dove
+quail hawk
+quail pipe
+quail snipe
+quaint-costumed
+quaint-eyed
+quaint-felt
+quaint-looking
+quaint-notioned
+quaint-shaped
+quaint-spoken
+quaint-stomached
+quaint-witty
+quaint-worded
+quake grass
+quake ooze
+quaker-colored
+quaker moth
+quaking grass
+quality binding
+quality curve
+quality factor
+qualm-sick
+quandong nut
+quantity mark
+quantity production
+quantity surveying
+quantity surveyor
+quantity theorist
+quantity theory
+quantum liquid
+quantum-mechanical
+quantum mechanics
+quantum number
+quantum theory
+quarantine flag
+quarantine period
+quarry bed
+quarry face
+quarry-faced
+quarry light
+quarry miner
+quarry-rid
+quarrystone bond
+quarter ail
+quarter belt
+quarter bend
+quarter bill
+quarter binding
+quarter blanket
+quarter block
+quarter boot
+quarter-bound
+quarter box
+quarter-breed
+quarter butt
+quarter cask
+quarter-cast
+quarter-cleft
+quarter-cut
+quarter-day
+quarter-deck
+quarter-decker
+quarter-dollar
+quarter evil
+quarter face
+quarter-faced
+quarter fast
+quarter-final
+quarter-finalist
+quarter-foot
+quarter galley
+quarter grain
+quarter-hollow
+quarter horse
+quarter-hour
+quarter ill
+quarter-inch
+quarter iron
+quarter-left
+quarter lift
+quarter light
+quarter line
+quartermaster sergeant
+quarter-mile
+quarter miler
+quarter-minute
+quarter-month
+quarter-moon
+quarter nelson
+quarter note
+quarter-phase
+quarter pillar
+quarter-pint
+quarter pitch
+quarter plate
+quarter point
+quarter-pound
+quarter rail
+quarter rest
+quarter-right
+quarter round
+quarter-run
+quarter screw
+quarter-second
+quarter section
+quarter sessions
+quarter-sheet
+quarter-size
+quarter step
+quarter tie
+quarter tone
+quarter-vine
+quarter watch
+quarter-wave
+quarter-yard
+quarter-year
+quarter-yearly
+quartet table
+quarto-centenary
+quart pot
+quartz-basalt
+quartz battery
+quartz-diorite
+quartz flint
+quartz-free
+quartz glass
+quartz lamp
+quartz-light therapy
+quartz mill
+quartz mining
+quartz-monzonite
+quartz plate
+quartz porphyry
+quartz rock
+quartz sand
+quartz schist
+quartz-syenite
+quartz vein
+quartz wedge
+quasi-absolute
+quasi-absolutely
+quasi-academic
+quasi-acceptance
+quasi accident
+quasi-accidental
+quasi acquaintance
+quasi-active
+quasi actor
+quasi-adequate
+quasi adjective
+quasi adjustment
+quasi admiration
+quasi adoption
+quasi-adult
+quasi advantage
+quasi adverb
+quasi advice
+quasi advocate
+quasi affection
+quasi-affirmative
+quasi agreement
+quasi alarm
+quasi alliance
+quasi-alternative
+quasi alumnus
+quasi amateur
+quasi amendment
+Quasi american
+quasi-amiable
+quasi amusement
+quasi-ancient
+quasi angel
+quasi animal
+quasi answer
+quasi-antique
+quasi-anxious
+quasi apology
+quasi appeal
+quasi application
+quasi appointment
+quasi appreciation
+quasi-appropriate
+quasi approval
+quasi architect
+quasi argument
+quasi aristocracy
+quasi aristocrat
+quasi army
+quasi arrangement
+quasi art
+quasi artist
+quasi-aside
+quasi-asleep
+quasi aspiration
+quasi asset
+quasi assignment
+quasi assistance
+quasi assurance
+quasi asylum
+quasi athlete
+quasi attachment
+quasi attack
+quasi attainment
+quasi attempt
+quasi attendant
+quasi attention
+quasi attorney
+quasi auditor
+quasi-authentic
+quasi author
+quasi authority
+quasi-authorized
+quasi-automatic
+quasi-awful
+quasi baby
+quasi-bad
+quasi ballot
+quasi bank
+quasi banker
+quasi-bankrupt
+quasi bankruptcy
+quasi banquet
+quasi baptism
+quasi bargain
+quasi basis
+quasi battle
+quasi beginner
+quasi belief
+quasi-beneficial
+quasi beneficiary
+quasi benevolence
+quasi-benevolent
+quasi biography
+quasi bird
+quasi blessing
+quasi-blind
+quasi blockade
+quasi blunder
+quasi body
+quasi-brave
+quasi-brilliant
+quasi broker
+quasi-bronze
+quasi brother
+quasi calamity
+quasi caller
+quasi-calm
+quasi cancellation
+quasi-candid
+quasi candidate
+quasi candor
+quasi-capable
+quasi captain
+quasi-careful
+quasi cause
+quasi celebration
+quasi certificate
+quasi champion
+quasi-characteristic
+quasi charity
+quasi cheer
+quasi chemistry
+quasi circulation
+quasi citizen
+quasi civilization
+quasi clairvoyance
+quasi-classic
+quasi client
+quasi climax
+quasi club
+quasi collapse
+quasi collateral
+quasi collection
+quasi collector
+quasi college
+quasi-collegiate
+quasi colloquial
+quasi combat
+quasi comedy
+quasi comfort
+quasi-comic
+quasi command
+quasi-commercial
+quasi-common
+quasi compact
+quasi competition
+quasi competitor
+quasi-complete
+quasi-complex
+quasi compliance
+quasi compliment
+quasi-compound
+quasi comprehension
+quasi compromise
+quasi-compulsory
+quasi concern
+quasi concession
+quasi conclusion
+quasi conference
+quasi confession
+quasi-confident
+quasi-confidential
+quasi confinement
+quasi confirmation
+quasi conflict
+quasi conformance
+quasi-congenial
+quasi congratulation
+quasi congress
+quasi conjunction
+quasi connection
+quasi conquest
+quasi conscience
+quasi-conscientious
+quasi-conscious
+quasi consent
+quasi consequence
+quasi-conservative
+quasi consideration
+quasi consignment
+quasi-consistent
+quasi consolation
+quasi consolidation
+quasi-constant
+quasi constitution
+quasi-constitutional
+quasi construction
+quasi-constructive
+quasi consulatation
+quasi consumption
+quasi contempt
+quasi contest
+quasi continent
+quasi-continual
+quasi continuation
+quasi-continuous
+quasi contract
+quasi-contrary
+quasi contrast
+quasi contribution
+quasi control
+quasi convenience
+quasi-convenient
+quasi convention
+quasi conversation
+quasi-converted
+quasi conveyance
+quasi conviction
+quasi-convinced
+quasi cook
+quasi co-operation
+quasi copula
+quasi-cordial
+quasi corporateness
+quasi corporation
+quasi-correct
+quasi correction
+quasi council
+quasi coupon
+quasi court
+quasi-courteous
+quasi courtesy
+quasi cousin
+quasi craft
+quasi creation
+quasi credit
+quasi creditor
+quasi crime
+quasi-criminal
+quasi crisis
+quasi-critical
+quasi criticism
+quasi cultivation
+quasi culture
+quasi-cunning
+quasi currency
+quasi customer
+quasi-cynical
+quasi damage
+quasi-dangerous
+quasi-daring
+quasi-deaf
+quasi debt
+quasi decision
+quasi declaration
+quasi decoration
+quasi dedication
+quasi default
+quasi defeat
+quasi defiance
+quasi deficit
+quasi-definite
+quasi definition
+quasi-deify
+quasi dejection
+quasi delegate
+quasi-deliberate
+quasi-delicate
+quasi delict
+quasi-delighted
+quasi demand
+quasi democrat
+quasi-democratic
+quasi-dependence
+quasi deposit
+quasi depreciation
+quasi depression
+quasi deputy
+quasi-desolate
+quasi despair
+quasi-desperate
+quasi-despondent
+quasi destination
+quasi destruction
+quasi detention
+quasi-determine
+quasi development
+quasi devil
+quasi-devoted
+quasi devotion
+quasi diamond
+quasi difference
+quasi-difficult
+quasi-dignified
+quasi dinner
+quasi diplomacy
+quasi-diplomatic
+quasi disadvantage
+quasi disappeance
+quasi disaster
+quasi discipline
+quasi discovery
+quasi-discreet
+quasi discrimination
+quasi disgrace
+quasi disgust
+quasi dismissal
+quasi-distant
+quasi distress
+quasi distribution
+quasi diversion
+quasi division
+quasi dominion
+quasi donation
+quasi-double
+quasi doubt
+quasi drama
+quasi-dramatic
+quasi-dreadful
+quasi-dumb
+quasi-duplicate
+quasi-dutiful
+quasi-dying
+quasi-eager
+quasi earnings
+quasi easement
+quasi-economic
+quasi economy
+quasi education
+quasi-educational
+quasi-effective
+quasi-efficient
+quasi-elaborate
+quasi election
+quasi-elementary
+quasi-eligible
+quasi-eloquent
+quasi-eminent
+quasi emperor
+quasi emphasis
+quasi employment
+quasi-empty
+quasi-endless
+quasi endorsement
+quasi enemy
+quasi-energetic
+quasi enforcement
+quasi engagement
+Quasi english
+Quasi englishman
+quasi enrollment
+quasi entertainment
+quasi enthusiasm
+quasi-enthusiastic
+quasi envy
+quasi-episcopal
+quasi-equal
+quasi-equitable
+quasi-equivalent
+quasi error
+quasi escape
+quasi-essential
+quasi-established
+quasi estimation
+quasi-eternal
+quasi-ethical
+quasi-everlasting
+quasi evidence
+quasi-evil
+quasi-exact
+quasi-exceptional
+quasi-excessive
+quasi exchange
+quasi exclusion
+quasi excuse
+quasi executive
+quasi-exempt
+quasi exertion
+quasi exile
+quasi-existent
+quasi expectation
+quasi-expedient
+quasi expenditure
+quasi expense
+quasi experience
+quasi expert
+quasi explanation
+quasi-explicit
+quasi export
+quasi exposure
+quasi expression
+quasi-external
+quasi-exterritorial
+quasi-extraterritorial
+quasi-extreme
+quasi fact
+quasi factor
+quasi factory
+quasi faculty
+quasi failure
+quasi-fair
+quasi faith
+quasi-faithful
+quasi-false
+quasi-familiar
+quasi-famous
+quasi farewell
+quasi farmer
+quasi fascination
+quasi-fashionable
+quasi-fatal
+quasi favor
+quasi-favorable
+quasi-federal
+quasi fee
+quasi-feudal
+quasi fiction
+quasi-final
+quasi-financial
+quasi-fireproof
+quasi-fiscal
+quasi-fit
+quasi flight
+quasi-foolish
+quasi force
+quasi-foreign
+quasi-forgetful
+quasi-forgotten
+quasi-formal
+quasi-formidable
+quasi-fortunate
+quasi-frank
+quasi-fraternal
+quasi-free
+Quasi french
+quasi friend
+quasi fulfillment
+quasi-full
+quasi-gallant
+quasi-gaseous
+quasi-gay
+quasi gem
+quasi-generous
+quasi genius
+quasi-genteel
+quasi gentleman
+quasi-genuine
+Quasi german
+quasi gift
+quasi-glad
+quasi-glorious
+quasi glory
+quasi-good
+quasi-gracious
+quasi graduate
+quasi-grateful
+quasi-grave
+quasi-great
+Quasi greek
+quasi grief
+quasi growth
+quasi guarantee
+quasi guest
+quasi guilt
+quasi-habitual
+quasi handicap
+quasi-happy
+quasi hardship
+quasi harm
+quasi health
+quasi-hearty
+quasi heir
+quasi help
+quasi-hereditary
+quasi hero
+quasi-heroic
+quasi hesitation
+quasi historian
+quasi-historic
+quasi-historical
+quasi history
+quasi holiday
+quasi-honest
+quasi honor
+quasi horror
+quasi-human
+quasi-humble
+quasi-humorous
+quasi-ideal
+quasi-identical
+quasi identification
+quasi ignorance
+quasi illness
+quasi-immediate
+quasi-immortal
+quasi-impartial
+quasi import
+quasi-important
+quasi improvement
+quasi incentive
+quasi inclination
+quasi-inclusive
+quasi increase
+quasi-independent
+Quasi indian
+quasi indifference
+quasi-indifferent
+quasi inducement
+quasi indulgence
+quasi-industrial
+quasi-inevitable
+quasi inference
+quasi-inferior
+quasi-infinite
+quasi-influential
+quasi-informal
+quasi information
+quasi inheritance
+quasi initiation
+quasi injury
+quasi injustice
+quasi innocence
+quasi-innocent
+quasi-innumerable
+quasi inquiry
+quasi insight
+quasi-insistent
+quasi inspection
+quasi inspiration
+quasi installation
+quasi institution
+quasi instruction
+quasi insult
+quasi integrity
+quasi-intellectual
+quasi-intelligent
+quasi intention
+quasi interest
+quasi interference
+quasi-internal
+quasi-international
+quasi interview
+quasi-intimate
+quasi-intolerable
+quasi introduction
+quasi-intuitive
+quasi invasion
+quasi investigation
+quasi-invisible
+quasi invitation
+quasi invoice
+quasi-irregular
+Quasi-jacobean
+Quasi japanese
+Quasi jew
+Quasi-jewish
+quasi-jocose
+quasi-jointly
+quasi judge
+quasi judgment
+quasi-judicial
+quasi justice
+quasi justification
+quasi-kind
+quasi kindred
+quasi king
+quasi knowledge
+quasi labor
+quasi-laborious
+quasi lady
+quasi lament
+Quasi latin
+quasi-lawful
+quasi league
+quasi legacy
+quasi-legal
+quasi legality
+quasi-legally
+quasi legislation
+quasi-legislative
+quasi-legitimate
+quasi liability
+quasi-liberal
+quasi liberty
+quasi limit
+quasi-literary
+quasi literature
+quasi-living
+quasi loan
+quasi-logical
+quasi lord
+quasi loss
+quasi-loyal
+quasi luxury
+quasi-mad
+quasi magic
+quasi maintenance
+quasi majority
+quasi-malicious
+quasi management
+quasi manager
+quasi-marble
+quasi market
+quasi masterpiece
+quasi-material
+quasi maximum
+quasi-mechanical
+quasi-medical
+quasi-medieval
+quasi melancholy
+quasi member
+quasi memory
+quasi-mental
+quasi-mercantile
+quasi mercy
+quasi merit
+quasi message
+quasi-metaphysical
+quasi method
+quasi-mighty
+quasi-military
+quasi millionaire
+quasi minimum
+quasi minister
+quasi miracle
+quasi-miraculous
+quasi misery
+quasi mishap
+quasi missionary
+quasi-modern
+quasi-modest
+quasi monopoly
+quasi-moral
+quasi-mourning
+quasi-municipal
+quasi-musical
+quasi-mutual
+quasi mystery
+quasi-mythical
+quasi-nameless
+quasi-national
+quasi-native
+quasi-natural
+quasi navy
+quasi-nebulous
+quasi-necessary
+quasi need
+quasi-negative
+quasi neglect
+quasi negligence
+quasi neighbor
+quasi-neutral
+quasi neutrality
+quasi-new
+quasi news
+quasi nobleman
+quasi nomination
+quasi-normal
+quasi-notarial
+quasi notice
+quasi novel
+quasi-nuptial
+quasi obedience
+quasi-obedient
+quasi objection
+quasi objective
+quasi obligation
+quasi observance
+quasi observation
+quasi obstacle
+quasi occupation
+quasi offense
+quasi offer
+quasi official
+quasi omission
+quasi opponent
+quasi opposition
+quasi optimist
+quasi orator
+quasi-ordinary
+quasi-organic
+quasi-oriental
+quasi-original
+quasi outrage
+quasi owner
+quasi ownership
+quasi painter
+quasi panic
+quasi paradise
+quasi pardon
+quasi participation
+quasi partisan
+quasi-passive
+quasi-pathetic
+quasi-patient
+quasi-patriarchal
+quasi-patriotic
+quasi patron
+quasi payment
+quasi-peaceful
+quasi penalty
+quasi-perfect
+quasi perfection
+quasi-periodic
+quasi-permanent
+quasi-perpetual
+quasi person
+quasi-personal
+quasi perusal
+quasi philosopher
+quasi-philosophical
+quasi-physical
+quasi-pious
+quasi pity
+quasi-plausible
+quasi plea
+quasi pleasure
+quasi pledge
+quasi plenty
+quasi poem
+quasi-poetic
+quasi policy
+quasi-political
+quasi politician
+quasi-poor
+quasi-popular
+quasi-positive
+quasi possession
+quasi poverty
+quasi power
+quasi-practical
+quasi praise
+quasi-precedent
+quasi preference
+quasi prejudice
+quasi preparation
+quasi prepositional
+quasi pressure
+quasi prestige
+quasi prevention
+quasi principal
+quasi principle
+quasi prisoner
+quasi-private
+quasi privilege
+quasi-probable
+quasi problem
+quasi product
+quasi profit
+quasi progress
+quasi prohibition
+quasi promise
+quasi-prompt
+quasi-proof
+quasi prophecy
+quasi proposal
+quasi prosecution
+quasi prosperity
+quasi protection
+quasi-proud
+quasi-provincial
+quasi provocation
+quasi-public
+quasi punishment
+quasi pupil
+quasi-pupillary
+quasi purchase
+quasi purity
+quasi pursuit
+quasi qualification
+quasi quarantine
+quasi quarrel
+quasi quotation
+quasi-radical
+quasi-rational
+quasi reality
+quasi realization
+quasi reason
+quasi-reasonable
+quasi rebellion
+quasi receipt
+quasi-recent
+quasi recognition
+quasi recollection
+quasi reconciliation
+quasi record
+quasi recreation
+quasi reduction
+quasi reference
+quasi refinement
+quasi reform
+quasi refusal
+quasi registration
+quasi-regular
+quasi rejection
+quasi-reliable
+quasi relief
+quasi religion
+quasi-religious
+quasi-remarkable
+quasi remedy
+quasi reminder
+quasi remittance
+quasi remorse
+quasi renewal
+quasi rent
+quasi repair
+quasi replacement
+quasi reply
+quasi report
+quasi representative
+quasi-republican
+quasi request
+quasi requirement
+quasi rescue
+quasi residence
+quasi resident
+quasi resistance
+quasi-respectable
+quasi response
+quasi-responsible
+quasi restoration
+quasi result
+quasi retirement
+quasi revolution
+quasi reward
+quasi-ridiculous
+quasi-righteous
+quasi rival
+quasi romance
+quasi-royal
+quasi-rural
+quasi-sad
+quasi-safe
+quasi safety
+quasi sagacity
+quasi saint
+quasi sale
+quasi salvation
+quasi sanction
+quasi-sanguine
+quasi sarcasm
+quasi-sarcastic
+quasi satisfaction
+quasi-savage
+quasi savings
+quasi scarcity
+quasi scholar
+quasi-scholastic
+quasi science
+quasi-scientific
+quasi search
+quasi-secret
+quasi-secure
+quasi sentence
+quasi sentiment
+quasi-serious
+quasi-seriously
+quasi seriousness
+quasi service
+quasi settlement
+quasi severalty
+quasi shortage
+quasi signature
+quasi-similar
+quasi-sincere
+quasi sincerity
+quasi-single
+quasi skill
+quasi slander
+quasi-sober
+quasi socialist
+quasi soldier
+quasi solution
+quasi sonnet
+quasi sovereign
+quasi space
+Quasi spaniard
+Quasi spanish
+quasi-spatial
+quasi specialist
+quasi sphere
+quasi spirit
+quasi-spiritual
+quasi sport
+quasi standard
+quasi starvation
+quasi statesman
+quasi-stationary
+quasi-strenuous
+quasi strike
+quasi student
+quasi-stylish
+quasi subject
+quasi submission
+quasi success
+quasi-sufficient
+quasi suggestion
+quasi-superficial
+quasi-superior
+quasi supervision
+quasi support
+quasi suppression
+quasi sympathy
+quasi system
+quasi-tangent
+quasi-tangible
+quasi teacher
+quasi-technical
+quasi temperance
+quasi-temporal
+quasi-territorial
+quasi-testamentary
+quasi testimony
+quasi thanks
+quasi-theatrical
+quasi-thorough
+quasi threat
+quasi toleration
+quasi-total
+quasi tradition
+quasi tragedy
+quasi translation
+quasi trial
+quasi-tribal
+quasi triumph
+quasi trustee
+quasi truth
+quasi-typical
+quasi tyranny
+quasi-ultimate
+quasi-unanimous
+quasi-unconscious
+quasi union
+quasi unity
+quasi-universal
+quasi university
+quasi-uplift
+quasi usufruct
+quasi utility
+quasi vacation
+quasi-valid
+quasi valuation
+quasi value
+quasi-venerable
+quasi verdict
+quasi victim
+quasi victory
+quasi vigilance
+quasi violation
+quasi violence
+quasi-violent
+quasi virtue
+quasi-vital
+quasi vocation
+quasi volunteer
+quasi wager
+quasi war
+quasi-warfare
+quasi warrant
+quasi weakling
+quasi wealth
+quasi whisper
+quasi-wicked
+quasi-willing
+quasi wisdom
+quasi witness
+quasi wonder
+quasi worship
+quasi-wrong
+quasi-young
+quasi zeal
+quaternion algebra
+quaternion unit
+quatre point
+quatre premiers
+quay punt
+quean-cat
+queen bee
+queen blue
+queen bolt
+queen butterfly
+queen cactus
+queen cage
+queen cat
+queen cattleya
+queen cell
+queen closer
+queen conch
+queen consort
+queen dowager
+queen excluder
+queen fern
+queen fritter
+queen gold
+queen mother
+queen note
+queen olive
+queen post
+queen-post truss
+queen regent
+queen regnant
+queen rod
+queen shell
+queen snake
+queen stitch
+queen truss
+queer cuffin
+queer-eyed
+queer-faced
+queer-headed
+queer-legged
+queer-looking
+queer-made
+queer-notioned
+queer-shaped
+queer-spirited
+queer-tempered
+queez-madam
+quench hook
+quenching bath
+quenouille training
+quercitron lake
+quercitron oak
+query mark
+question-begging
+question-mark
+question stop
+quia-quia
+quick-acting
+quick bread
+quick-break switch
+quick-burning
+quick-change
+quick-coming
+quick-compounded
+quick-conceiving
+quick-decaying
+quick-designing
+quick-devouring
+quick-drawn
+quick-eared
+quickening grass
+quicken tree
+quick-fading
+quick-falling
+quick-fire
+quick-firer
+quick-flowing
+quick-freeze
+quick-freezing
+quick-glancing
+quick-gone
+quick-growing
+quick-guiding
+quick-gushing
+quick-handed
+quick-laboring
+quick-minded
+quick-moving
+quick-nosed
+quick-paced
+quick-piercing
+quick-questioning
+quick-raised
+quick-returning
+quick-rolling
+quick-running
+quick-saver
+quick-scenting
+quick-selling
+quick-setting
+quick-shifting
+quick-shutting
+quick-sighted
+quick-sightedness
+quicksilver weed
+quick-speaking
+quick-spirited
+quick-spouting
+quickstep march
+quick-stepping
+quick stick
+quick-talking
+quick-tempered
+quick-thoughted
+quick-thriving
+quick time
+quick-voiced
+quick water
+quick-winged
+quick-witted
+quick-wittedly
+quick-wittedness
+quick-wrought
+quiet-colored
+quiet day
+quiet-dispositioned
+quiet-eyed
+quiet-going
+quiet hour
+quiet-living
+quiet-looking
+quiet-mannered
+quiet-minded
+quiet-moving
+quiet-patterned
+quiet-seeming
+quiet-spoken
+quiet-tempered
+qui-hi
+quill bark
+quill bit
+quill drive
+quill driver
+quill driving
+quill fern
+quill fly
+quill gear
+quill-less
+quill-like
+quill nib
+quill pig
+quill-tailed
+quilting cotton
+quince curculio
+quince-seed mucilage
+quince yellow
+quinhydrone electrode
+quinine bush
+quinine cherry
+quinine flower
+quinine herb
+quinine plant
+quinine tree
+quinoline dye
+quinoline yellow
+quinone diazide
+quinone oxime
+quinova bitter
+quinque-angle
+quinque-angled
+quinque-angular
+quinque-annulate
+quinque-articulate
+quinsy woodruff
+quintuple-nerved
+quintuple point
+quintuple-ribbed
+quirk bead
+quirk molding
+quitch grass
+quitter bone
+quiver tree
+quizzing glass
+quobosque-weed
+quoin post
+quota immigrant
+quota system
+quotation board
+quotation mark
+quotation noun
+quote mark
+quotient verdict
+quo warranto
+Q wedge
+Q-wedge compensation
+rabbet joint
+rabbet plane
+rabbet-shaped
+rabbit-backed
+rabbit bandicoot
+rabbit breeder
+rabbit brush
+rabbit cat
+rabbit-chasing
+rabbit-ear
+rabbit-eared
+rabbit-ear faucet
+rabbit-faced
+rabbit fever
+rabbit fish
+rabbit flower
+rabbit-foot
+rabbit-foot clover
+rabbit-foot grass
+rabbit louse
+rabbit-meat
+rabbit moth
+rabbit-mouthed
+rabbit punch
+rabbit-shouldered
+rabbit squirrel
+rabbit stick
+rabbit-tail grass
+rabbit tick
+rabbit tobacco
+rabbit warren
+rabble-charming
+rabble-chosen
+rabble-courting
+rabble-curbing
+rabble-rousing
+raccon dog
+raccoon fox
+raccoon grape
+raccoon oyster
+raccoon perch
+race-begotten
+race board
+race boat
+race cloth
+race cup
+race glass
+race ground
+race horse
+racehorse grass
+race knife
+race-maintaining
+race memory
+race plate
+race problem
+race psychology
+race-riding
+race riot
+race rotation
+race runner
+race-running
+race stand
+race suicide
+race tool
+race track
+race week
+race-wide
+race-winning
+racing crab
+racing glass
+racing iron
+racing plate
+rack bar
+rack block
+rack car
+rack comb
+racket court
+racket wheel
+rack pillar
+rack pin
+rack punch
+rack rail
+rack railway
+rack-rent
+rack-renter
+rack saw
+rack wheel
+racomo-oxalic
+radial-flow turbine
+radiant-heat brooder
+radiate-veined
+radiation fog
+radiation pressure
+radiation pyrometer
+radiation sickness
+radiator cap
+radiator casing
+radiator compound
+radiator core
+radiator foot
+radiator gauge
+radiator maker
+radiator making
+radiator tank
+radiator valve
+radiato-undulate
+radio beacon
+radio beam
+radio bearing
+radio channel
+radio compass
+radio compass station
+radio control
+radio engineer
+radio engineering
+radio field intensity
+radio-frequency
+radio-iodine
+radio knife
+radio link
+radio marker
+radio proximity fuze
+radio range beacon
+radio receiver
+radio set
+radio spectator
+radio spectrum
+radio transmitter
+radio tube
+radio-ulnar
+radio wave
+radish tree
+radium bath
+radium emanation
+radium lead
+radium miner
+radium paint
+radium vermilion
+radius bar
+radius gauge
+radius rod
+radius vector
+radix graminis
+radon seed
+raffia palm
+raft body
+raft dog
+raft duck
+rafter dam
+raft port
+rag baby
+rag bag
+rag-bailing
+rag beater
+rag-beating
+rag bleacher
+rag board
+rag-boiling
+rag bolt
+rag-burn
+rag bush
+rag carpet
+rag-chew
+rag chopper
+rag-cutting
+rag dealer
+rag doll
+rage-crazed
+rage-filled
+rage-infuriate
+rag engine
+rage-subduing
+rage-swelling
+rage-transported
+rag fair
+rag felt
+raggle-taggle
+rag gourd
+raglan sleeve
+rag lining
+rag-made
+rag money
+rag offering
+rag paper
+rag peddler
+rag pulp
+rag rug
+rag shop
+rag stock
+rag-threshing
+ragtime music
+rag trade
+rag tree
+ragweed family
+rag well
+rag wheel
+rag wool
+rag work
+rail-bearing
+rail-bending
+rail-bonding
+rail-borne
+rail car
+rail chair
+rail clip
+rail-cutting
+rail dumper
+rail ender
+rail filler
+rail fork
+rail guard
+rail-laying
+rail lock
+rail maker
+rail making
+rail-ocean
+rail plate
+rail-ridden
+railroad engineer
+railroad engineering
+railroad euchre
+railroad furniture
+railroad jack
+railroad pen
+railroad scale
+railroad sickness
+railroad worm
+rail-sawing
+rail setter
+rail-splitting
+rail straightener
+rail tongs
+rail track
+rail train
+railway-borne
+railway maker
+railway making
+railway man
+railway spine
+railway stitch
+rain area
+rain-awakened
+rain barrel
+rain-bearing
+rain-beat
+rain-beaten
+rain belt
+rain-bitten
+rain-bleared
+rain-blue
+rainbow-arched
+rainbow cactus
+rainbow chaser
+rainbow chasing
+rainbow-clad
+rainbow-colored
+rainbow darter
+rainbow-edged
+rainbow fish
+rainbow-girded
+rainbow herring
+rainbow-hued
+rainbow-large
+rainbow moss
+rainbow-painted
+rainbow-sided
+rainbow-skirted
+rainbow-tinted
+rainbow trout
+rainbow-winged
+rain-bright
+rain chamber
+rain check
+rain cloud
+rain course
+rain-damped
+rain doctor
+rain-drenched
+rain-driven
+rain-dropping
+rainette green
+rain forest
+rain-fraught
+rain gauge
+rain glass
+rain-god
+rain-gutted
+rain insurance
+rain leader
+rain lily
+rain maker
+rain making
+rain pie
+rain pipe
+rain print
+rain rot
+rain-scented
+rain-soaked
+rain-sodden
+rain-soft
+rain spot
+rain-streaked
+rain-swept
+rain-threatening
+rain tree
+rain-washed
+rain water
+rain-water fish
+raisin black
+raising hammer
+raising plate
+raisin grape
+raisin purple
+raisin tree
+rake-off
+rake-teeth
+rake vein
+raking course
+raking shore
+rallying cry
+rallying point
+ramage hawk
+ram bow
+ram cat
+ram effect
+ram-headed
+Ramist consonant
+ram-jet engine
+ram leather
+ramper eel
+ramp valley
+ranch company
+ranch country
+ranch economics
+ranch hand
+ranch house
+ranch life
+ranch owner
+ranch rider
+randall grass
+rand machine
+random bond
+random-jointed
+random line
+random point
+range angle
+range-bred
+range finder
+range grass
+range light
+range masonry
+range paralysis
+range pole
+range rake
+range rider
+range stove
+rank-brained
+rank-feeding
+rank-growing
+rank-grown
+ranking bar
+ranking jumper
+rank-minded
+rank-scented
+rank-scenting
+rank-smelling
+rank-springing
+rank-swelling
+rank-tasting
+rank-winged
+ransom bill
+ransom bond
+rantum-scantum
+rape butterfly
+rape oil
+rape wine
+rap-full
+rapid-changing
+rapid-fire
+rapid-fire mount
+rapid-firer
+rapid-firing
+rapid-flowing
+rapid-flying
+rapid-footed
+rapid-mannered
+rapid-passing
+rapid-running
+rapid-speaking
+rapid-transit
+rapier-proof
+rapper-dandies
+rap shot
+rapture-bound
+rapture-breathing
+rapture-bursting
+rapture-giving
+rapture-moving
+rapture-ravished
+rapture-rising
+rapture-smitten
+rapture-speaking
+rapture-touched
+rapture-trembling
+rapture-wrought
+rare-bred
+rare-earth metal
+raree show
+rare-featured
+rare-felt
+rare-gifted
+rare-painted
+rare-qualitied
+rare-seen
+rare-shaped
+Ras algethi
+rash-brain
+rash-brained
+rash-conceived
+rash-embraced
+rash-headed
+rash-hearted
+rash-levied
+rash-minded
+rash-pledged
+rash-running
+rash-spoken
+rash-thoughted
+rasing iron
+rasing knife
+raspberry apple
+raspberry beetle
+raspberry bug
+raspberry curl
+raspberry-jam
+raspberry mosaic
+raspberry red
+raspberry root borer
+raspberry root rot
+raspberry sawfly
+raspberry yellows
+rasp grass
+rasp house
+rasp palm
+rasp pod
+rat-a-tat
+ratbite fever
+ratchet brace
+ratchet chain
+ratchet coupling
+ratchet crank
+ratchet drill
+ratchet jack
+ratchet stop
+ratchet thread
+ratchet tooth
+ratchet-toothed
+ratchet wheel
+rat-colored
+rat-deserted
+rate-aided
+rate base
+rate cap
+rate-cutting
+rate-fixing
+rate maker
+rate making
+rate-raising
+rate-setting
+rat-eyed
+rat-faced
+rat flea
+rat-gnawn
+rat goose
+rat hare
+rat-infested
+rating badge
+rating flume
+rating nut
+rat-inhabited
+ratio arm
+rat kangaroo
+rat-killing
+ratline stuff
+rat mole
+rat pineapple
+rat poison
+rat race
+rat rhyme
+rat-ridden
+rat-riddled
+rat-skin
+rat snake
+rat stop
+rattail cactus
+rat-tailed
+rattail fescue
+rattail file
+rattan vine
+rat-tat
+rat-tattle
+rat-tight
+rattle barrel
+rattle grass
+rattlesnake bean
+rattlesnake-bite
+rattlesnake fern
+rattlesnake flag
+rattlesnake grass
+rattlesnake leaf
+rattlesnake master
+rattlesnake root
+rattlesnake weed
+rattle-top
+rattlety-bang
+rattrap pedal
+rat unit
+ravel bread
+raven black
+raven cockatoo
+raven-colored
+raven-feathered
+raven gray
+raven-haired
+Ravenna grass
+raven-plumed
+raven standard
+raven-toned
+raven-torn
+ravine deer
+ravison oil
+raw-colored
+raw-devouring
+raw-edged
+raw-faced
+raw glaze
+raw-handed
+raw-headed
+raw-looking
+raw-mouthed
+raw-nosed
+raw-ribbed
+raw-striped
+raw-wool
+ray filter
+ray floret
+ray flower
+ray-fringed
+ray fungus
+ray-gilt
+ray-girt
+ray grass
+ray-illumined
+ray-lit
+ray pod
+ray-strewn
+ray therapy
+razon bomb
+razor-backed
+razor-billed
+razor blade
+razor-bladed
+razor-bowed
+razor clam
+razor-edged
+razor fish
+razor grass
+razor-grinder
+razor-keen
+razor-leaved
+razor saw
+razor-shaped
+razor-sharp
+razor-sharpening
+razor shell
+razor stone
+razor temper
+razor-tongued
+razor-weaponed
+razor-witted
+razzle-dazzle
+reacher-in
+reaching post
+reach rod
+re-act
+reactance coil
+reactance drop
+reaction border
+reaction engine
+reaction formation
+reaction locus
+reaction machine
+reaction-proof
+reaction rim
+reaction ring
+reaction time
+reaction wheel
+reader-off
+reading book
+reading desk
+reading distance
+reading glass
+reading hook
+reading-in machine
+reading lamp
+reading man
+reading matter
+reading notice
+reading pew
+reading room
+ready-armed
+ready-beaten
+ready-bent
+ready-braced
+ready-built
+ready-coined
+ready-cooked
+ready-cut
+ready-dressed
+ready-formed
+ready-for-wear
+ready-furnished
+ready-grown
+ready-handed
+ready-made
+ready-mixed
+ready-mounted
+ready-penned
+ready-prepared
+ready-reference
+ready roofing
+ready room
+ready-sanded
+ready-sensitized
+ready-shapen
+ready-starched
+ready-tongued
+ready-to-wear
+ready-typed
+ready-winged
+ready-witted
+ready-wittedly
+ready-wittedness
+ready-worded
+ready-written
+real-estate trust
+realgar orange
+realgar yellow
+real-hearted
+re-ally
+really-truly
+realm-bounding
+realm-conquering
+realm-destroying
+realm-governing
+real-minded
+realm-peopling
+realm-subduing
+realm-sucking
+realm-unpeopling
+real scholar
+real school
+real-sighted
+Re-americanization
+Re-americanize
+reaper binder
+reaper file
+reaper thresher
+reaping hook
+reaping machine
+rear admiral
+rear arch
+rear-cut
+rear-directed
+rear-driven
+rear-driving
+rear-end
+rear guard
+rearing bit
+rear-steering
+rear vault
+rearview mirror
+rear-vision mirror
+reason why
+rebate plane
+rebel clover
+rebound clip
+rebound leaf
+re-buff
+recalescence point
+recapitulation theory
+recapture clause
+receipt book
+receiver-general
+receiving note
+receiving ship
+receiving station
+receiving tube
+receptaculum seminis
+reception hall
+reception room
+recess appointment
+recess bed
+recess committee
+Re-christianize
+reciprocity law
+reciting note
+reclamation district
+re-cognition
+re-cognitional
+recognition mark
+re-coil
+recoil atom
+recoil cylinder
+recoil escapement
+recoil wave
+re-collect
+re-collection
+re-commend
+re-co-operate
+re-co-operation
+re-cord
+record-bearing
+record-beating
+record-breaking
+recording meter
+record-making
+record player
+record ribbon
+record-seeking
+record-setting
+re-count
+re-cover
+recovery coke
+recovery oven
+re-create
+re-creation
+recreation room
+re-creative
+re-creator
+recruiting ground
+rectifier instrument
+recto-urethral
+recto-uterine
+rectovesical fascia
+recumbent anticline
+recurrence formula
+red-armed
+red-backed
+red-bait
+red-banded
+red-bar
+red-barked
+red-beaded
+red-beaked
+red-beamed
+red-bearded
+red-bellied
+red-belted
+red-berried
+red-billed
+red-black
+red-blind
+red blindness
+red blood
+red-blooded
+red-bloodedness
+red-bodied
+red-boled
+red-bonnet
+red-bound
+red-branched
+red-branching
+red-breasted
+red-brick
+red-brown
+red-burning
+red-buttoned
+red-cheeked
+red-chested
+red-clad
+red-cloaked
+red-clocked
+red-coat
+red-coated
+red-cockaded
+red-collared
+red-colored
+red-combed
+red-crested
+red-crowned
+red-curtained
+red-dabbled
+reddish-amber
+reddish-bay
+reddish-bellied
+reddish-black
+reddish-blue
+reddish-brown
+reddish-colored
+reddish-gray
+reddish-green
+reddish-haired
+reddish-headed
+reddish-looking
+reddish-purple
+reddish-white
+reddish-yellow
+redd-up
+red-dyed
+red-eared
+red-edged
+redemption fund
+re-derive
+re-desert
+red-eyed
+red-faced
+red-facedness
+red-feathered
+red-figured
+red-finned
+red-flag
+red-flagger
+red-flaggery
+red-flag law
+red-flanked
+red-flecked
+red-fleshed
+red-flowered
+red-flowering
+red-footed
+red-fronted
+red-fruited
+red-gemmed
+red-gilled
+red-girdled
+red-gleaming
+red-gold
+red-gowned
+red-green blind
+red-green blindness
+red-haired
+red-hand
+red-handed
+red-handedly
+red-handedness
+red-hard
+red-harden
+red-hardness
+red-hat
+red-hatted
+redhead-grass
+redheart hickory
+red-heeled
+red-hipped
+red-hissing
+red-hooded
+red-horned
+red horse
+red horse chestnut
+red-hot
+red-hued
+red-humped
+red-ink
+rediscount rate
+red-jerseyed
+red-kneed
+red-knobbed
+red-lead
+red-leader
+red-lead putty
+red-leaf
+red-leather
+red-leaved
+red-legged
+red-letter
+red-lettered
+red-lidded
+red-light district
+red-lined
+red-lipped
+red-listed
+red-lit
+red-litten
+red-looking
+red-making
+red man
+red-minded
+redmouth buffalo fish
+red-mouthed
+red-naped
+red-necked
+red-nosed
+red-orange
+redox potential
+red-painted
+red-plowed
+red-plumed
+red-polled
+Red polled
+redpoll linnet
+redpoll warbler
+red-purple
+redrawing press
+redrawing punch
+re-dress
+red-ribbed
+red-rimmed
+red-ripening
+red-roan
+red roncador
+red-roofed
+red-rooted
+red-rose
+red rot
+red-rumped
+red-rusted
+red-scaled
+red-scarlet
+red-shafted
+red-shank
+red-shirted
+red-short
+red-shortness
+red-shouldered
+red-shouldered hawk
+red-sided
+red-silk
+red-skinned
+red-snooded
+red-specked
+red-speckled
+red-spotted
+red-stalked
+red-streaked
+red-streaming
+red-swelling
+red-tailed
+red-tape
+red-taped
+red-tapedom
+red-taper
+red-tapery
+red-tapey
+red-tapish
+red-tapism
+red-tapist
+red-tempered
+red-thighed
+red-throat
+red-throated
+red-tiled
+red-tinted
+red-tipped
+red-tongued
+red-topped
+red-topped buffalo grass
+red-trousered
+red-tufted
+red-twigged
+reducer sleeve
+reducing furnace
+reducing glass
+reducing press
+reducing valve
+reducing wheels
+reduction division
+reduction-improbation
+reduction potential
+reduction works
+red-upholstered
+red-veined
+red-vented
+red-vested
+red-violet
+red-walled
+red-wat
+red-wattled
+red-waved
+red-white
+red-winged
+red-wooded
+red-written
+red-yellow
+red zinc ore
+re-earn
+re-ebullient
+re-echo
+reed-back
+reed bent
+reed-blade
+reed-bordered
+reed bunting
+reed canary grass
+reed-clad
+reed-compacted
+reed-crowned
+reed fescue
+reed grass
+reed green
+reed-grown
+re-edificate
+re-edification
+re-edifier
+re-edify
+reed instrument
+re-edit
+reed mark
+reed meadow grass
+reed organ
+reed pipe
+reed-rond
+reed-roofed
+reed-rustling
+reed-shaped
+reed stop
+reed-thatched
+reed thrush
+re-educate
+re-education
+re-educative
+reed wren
+reed yellow
+reef band
+reef cringle
+reef earing
+re-effeminate
+reef goose
+reefing bowsprit
+reefing jacket
+reef jig
+reef jigger
+reef-knoll
+reef-knot
+reef pendant
+reef point
+reef tackle
+re-egg
+re-ejaculate
+re-eject
+re-ejection
+re-ejectment
+re-elaborate
+re-elaboration
+reel borer
+re-elect
+re-election
+re-elevate
+re-elevation
+reel-fitted
+reel foot
+reel-footed
+re-eligibility
+re-eligible
+re-eliminate
+re-elimination
+reeling hammer
+reel oven
+re-emanate
+re-embark
+re-embarkation
+re-embarrass
+re-embarrassment
+re-embattle
+re-embed
+re-embellish
+re-embodiment
+re-embody
+re-embosom
+re-embrace
+re-embracement
+re-embroil
+re-emerge
+re-emergence
+re-emergent
+re-emersion
+re-emigrant
+re-emigrate
+re-emigration
+reeming beetle
+reeming iron
+re-emission
+re-emit
+re-emphasis
+re-emphasize
+re-employ
+re-employment
+re-empower
+re-empty
+re-emulsify
+re-enable
+re-enact
+re-enaction
+re-enactment
+re-enamel
+re-enamor
+re-enamour
+re-enchain
+re-enclose
+re-enclosure
+re-encounter
+re-encourage
+re-encouragement
+re-endear
+re-endearment
+re-ender
+re-endorse
+re-endorsement
+re-endow
+re-endowment
+re-energize
+re-enfeoff
+re-enfeoffment
+re-enforce
+re-enforcement
+re-enforcer
+re-enfranchise
+re-enfranchisement
+re-engage
+re-engagement
+re-engender
+re-engenderer
+re-engine
+Re-english
+re-engraft
+re-engrave
+re-engraving
+re-engross
+re-enhearten
+re-enjoin
+re-enjoy
+re-enjoyment
+re-enkindle
+re-enlarge
+re-enlargement
+re-enlighten
+re-enlightenment
+re-enlist
+re-enlister
+re-enlistment
+re-enliven
+re-ennoble
+re-enroll
+re-enrollment
+re-enshrine
+re-enslave
+re-enslavement
+re-ensphere
+re-enter
+re-entering
+re-entering angle
+re-entertain
+re-entertainment
+re-enthral
+re-enthrone
+re-enthronement
+re-enthronize
+re-entice
+re-entitle
+re-entoil
+re-entomb
+re-entrain
+re-entrance
+re-entrancy
+re-entrant
+re-entrenchment
+re-entry
+re-entry card
+re-enumerate
+re-enumeration
+re-enunciate
+re-enunciation
+re-epitomize
+re-equilibrate
+re-equilibration
+re-equip
+re-equipment
+re-erect
+re-erection
+re-escape
+re-escort
+re-espousal
+re-espouse
+re-essay
+re-establish
+re-establisher
+re-establishment
+re-esteem
+re-estimate
+re-estimation
+re-etch
+re-etcher
+re-evacuate
+re-evacuation
+re-evade
+re-evaluate
+re-evaluation
+re-evaporate
+re-evaporation
+re-evasion
+reeving-line bend
+re-evoke
+re-evolution
+re-exalt
+re-examinable
+re-examination
+re-examine
+re-examiner
+re-excavate
+re-excavation
+re-excel
+re-exchange
+re-excitation
+re-excite
+re-exclude
+re-exclusion
+re-execute
+re-execution
+re-exempt
+re-exemption
+re-exercise
+re-exert
+re-exertion
+re-exhale
+re-exhaust
+re-exhibit
+re-exhibition
+re-exhilarate
+re-exhilaration
+re-exist
+re-existence
+re-existent
+re-expand
+re-expansion
+re-expect
+re-expectation
+re-expedite
+re-expedition
+re-expel
+re-experience
+re-experiment
+re-explain
+re-explanation
+re-export
+re-exportation
+re-exporter
+re-expose
+re-exposure
+re-expound
+re-express
+re-expression
+re-expulsion
+re-extend
+re-extension
+re-extent
+re-extract
+re-extraction
+refectory table
+reference book
+reference frame
+reference gauge
+reference library
+reference mark
+referendum dollar
+refining engine
+refining heat
+reflection factor
+reflector mirror
+reflex action
+reflex arc
+reflex camera
+reflex zenith tube
+reflux condenser
+reflux value
+re-form
+re-formation
+reformation-proof
+re-formative
+re-former
+reform school
+refraction circle
+refrigerating engine
+refrigerating engineer
+refrigerator car
+refunding bond
+refuse destructor
+refuse lac
+re-genesis
+regent bird
+regent house
+Re-germanization
+Re-germanize
+registered nurse
+register office
+register point
+register ton
+register tonnage
+registrar-general
+registration area
+registration county
+regius professor
+regular-bred
+regular-built
+regular-featured
+regular-growing
+regular-lay rope
+regular-shaped
+regular-sized
+regulating box
+regulating button
+regulation-proof
+reheating furnace
+Re-hellenization
+Re-hellenize
+re-ice
+Reindeer age
+reindeer flower
+reindeer lichen
+reindeer moss
+reindeer pest
+reinforced bow
+reinforced concrete
+re-ink
+rein orchis
+reinsurance fund
+rei persecutoria
+reisner work
+reject back
+relapsing fever
+relation word
+relative-in-law
+relativity doublet
+relativity shift
+relay broadcast
+relayer rail
+relay governor
+relay race
+re-lease
+release date
+reliability coefficient
+relic-covered
+relic-vending
+relief frame
+relief map
+relief motion
+relief pallet
+relief printing
+relief ship
+relief valve
+relief well
+relieving tackle
+religio-educational
+religio-magical
+religio-military
+religio-philosophical
+religio-political
+religio-scientific
+relocation camp
+remainder theorem
+remanent magnetism
+re-mark
+remedy-proof
+remittance man
+remontoir escapement
+remote-controlled
+remount cavalry
+removal cutting
+remuneratory sanction
+renal splanchnic nerve
+rennet bag
+rennet casein
+rennet ferment
+rental library
+rent charge
+rent charger
+rent-collecting
+rent-free
+rent insurance
+rent-paying
+rent-producing
+rent-raising
+rent-reducing
+rent resolute
+rent-roll
+rent seck
+rent service
+repair ship
+repair shop
+repeat order
+repertory theater
+replacement cost
+replacement vein
+replica grating
+reply card
+reply coupon
+report card
+report stage
+re-present
+re-presentation
+representative-elect
+re-presentment
+re-press
+reproduction cost
+re-proof
+re-prove
+reptilian age
+Re-puritanize
+request note
+re-reaction
+re-rebel
+re-receive
+re-reception
+re-recital
+re-recite
+re-reckon
+re-recognition
+re-recognize
+re-recollect
+re-recollection
+re-recommend
+re-recommendation
+re-reconcile
+re-reconciliation
+re-record
+re-recover
+re-rectification
+re-rectify
+re-reduce
+re-reduction
+re-refer
+re-refine
+re-reflect
+re-reflection
+re-reform
+re-reformation
+re-refusal
+re-refuse
+re-regenerate
+re-regeneration
+re-rehearsal
+re-rehearse
+re-reiterate
+re-reiteration
+re-reject
+re-rejection
+re-rejoinder
+re-relate
+re-relation
+re-release
+re-relish
+re-rely
+re-remember
+re-remind
+re-remit
+re-removal
+re-remove
+re-rendition
+re-repair
+re-repeat
+re-repent
+re-replevin
+re-reply
+re-report
+re-represent
+re-representation
+re-reproach
+re-request
+re-require
+re-requirement
+re-rescue
+re-resent
+re-resentment
+re-reservation
+re-reserve
+re-reside
+re-residence
+re-resign
+re-resignation
+re-resolution
+re-resolve
+re-respond
+re-response
+re-restitution
+re-restoration
+re-restore
+re-restrain
+re-restraint
+re-restrict
+re-restriction
+re-retire
+re-retirement
+re-return
+re-reveal
+re-revealation
+re-revenge
+re-reversal
+re-reverse
+re-revise
+re-revision
+Re-romanize
+rescue grass
+re-search
+research engineer
+research engineering
+research laboratory
+research material
+research professor
+research study
+research worker
+re-serve
+reserve account
+reserve city
+reserve fund
+reserve militia
+reserve officer
+reserve price
+reserve ratio
+reserve ration
+residuary devisee
+residuary legatee
+re-sign
+resignation bond
+resigned-looking
+resin alcohol
+resin bee
+resin cerate
+resin distiller
+resin gnat
+resin oil
+resin opal
+resin plant
+resin soap
+resin spirit
+resistance box
+resistance butt welding
+resistance coil
+resistance coupling
+resistance derivative
+resistance drop
+resistance frame
+resistance thermometer
+resistance welding
+resisting medium
+resisting moment
+resistive conductor
+resistive coupling
+resojet engine
+re-solution
+resolutory condition
+resolving power
+resonace box
+resonace potential
+resonance cavity
+resonance-coil antenna
+resonance curve
+resonance energy
+resonance form
+resonance hybrid
+resonance pipe
+resonance radiation
+resonance spectrum
+resonance wave coil
+resorcin acetate
+resorcin brown
+resorcinol monoacetate
+resorption border
+re-sort
+re-sorter
+re-sound
+respiration calorimeter
+respiratory center
+respiratory leaf
+respiratory nerve
+respiratory pigment
+respiratory plate
+respiratory quotient
+respiratory tree
+respiratory trumpet
+rest cure
+rest-cured
+rest day
+rest-giving
+rest house
+resting place
+rest mass
+rest-ordained
+re-store
+re-strain
+restraining order
+rest-refreshed
+rest room
+rest-seeking
+rest-taking
+rest treatment
+result clause
+resurrection body
+resurrection bolly
+resurrection fern
+resurrection man
+resurrection pie
+resurrection plant
+resurrection woman
+retail dealer
+retail store
+retaining fee
+retaining wall
+retardation method
+retia mirabilia
+reticulated tracery
+reticulated vessel
+retonation wave
+retort drawer
+retort stand
+re-trace
+re-tread
+re-treader
+re-treat
+re-treatment
+re-trench
+retro-ocular
+retro-omental
+retro-operative
+retro-oral
+retro-umbilical
+retro-uterine
+re-turn
+return address
+return ball
+return bead
+return bend
+return card
+return-cocked
+return day
+return game
+returning board
+return match
+return piece
+return shock
+return ticket
+return trap
+return-tubular boiler
+return wall
+re-up
+re-use
+revenue account
+revenue bond
+revenue cutter
+revenue expenditure
+revenue stamp
+revenue tariff
+reverse discard
+reverse-phase relay
+reversible-disk plow
+reversing switch
+reversion duty
+reversion pendulum
+reversion spectroscope
+revolving-jaw box chuck
+revolving-jaw chuck
+reward claim
+rewa-rewa
+rewrite man
+rex begonia
+Rhaeto-romance
+Rhaeto-romanic
+Rhaeto-romansh
+rheumatism root
+rheumatism weed
+rhinoceros auklet
+rhinoceros beetle
+rhinoceros bird
+rhinoceros bush
+rhinoceros hornbill
+rhinoceros-shaped
+rhinoceros viper
+rhizoctonia disease
+rhizosphere effect
+Rhode island
+Rhode islander
+rhodium oil
+rhodium wood
+rhodonite pink
+rhomb-leaved
+rhomboid-ovate
+rhomb spar
+rhumb line
+rhus glabra
+rhyme-beginning
+rhyme-composing
+rhyme-fettered
+rhyme-forming
+rhyme-free
+rhyme-inspiring
+rhyme royal
+rhyme-tagged
+rhyme word
+rhyming dictionary
+rhyolite-porphyry
+riband-shaped
+riband-wreathed
+ribband carvel
+ribband lines
+rib-bearing
+ribble-rabble
+ribbon-bedizened
+ribbon-bordering
+ribbon-bound
+ribbon brake
+ribbon building
+ribbon conveyer
+ribbon development
+ribbon fern
+ribbon grass
+ribbon gum
+ribbon isinglass
+ribbon jasper
+ribbon lightning
+ribbon-marked
+ribbon movement
+ribbon park
+ribbon rock
+ribbon saw
+ribbon-shaped
+ribbon snake
+ribbon tree
+ribbon winder
+ribbon wire
+ribbon worm
+rib-breaking
+rib cut
+rib-faced
+rib grass
+rib-grated
+rib lath
+rib-mauled
+rib meristem
+rib-nosed
+rib-pointed
+rib-poking
+rib rifling
+rib roast
+rib-sticking
+rib stitch
+rib-striped
+rib-supported
+rib-welted
+rice body
+rice boiler
+rice bran
+rice bug
+rice cleaner
+rice-cleaning
+rice-clipping
+rice coal
+rice cousin
+rice cut-grass
+rice drier
+rice dust
+rice eater
+rice-eating
+rice field
+rice-field eel
+rice flour
+rice flower
+rice glue
+rice grader
+rice-grading
+rice-grain decoration
+rice grass
+rice grinder
+rice-grinding
+rice grower
+rice-growing
+rice hen
+rice huller
+rice-hulling
+rice milk
+rice mill
+rice miller
+rice mouse
+rice paper
+rice-paper tree
+rice planter
+rice-planting
+rice polish
+rice polisher
+rice-polishing
+rice polishings
+rice-pounding
+rice powder
+rice rat
+rice-root grass
+rice-seed body
+rice shell
+rice tenrec
+rice water
+rice wine
+rich-appareled
+rich-attired
+rich-bedight
+rich-bound
+rich-built
+rich-burning
+rich-clad
+rich-conceited
+rich-distilled
+richel bird
+rich-embroidered
+rich-figured
+rich-fleeced
+rich-fleshed
+rich-glittering
+rich-haired
+rich-jeweled
+rich-laden
+rich-looking
+rich-minded
+rich-ored
+rich-robed
+rich-set
+rich-soiled
+rich-tasting
+rich-toned
+rich-voiced
+rich-wrought
+rick-barton
+rick-burton
+rick carrier
+ricochet fire
+riddle ballad
+riddle cake
+rider embolus
+rider keelson
+ridge beam
+ridge buster
+ridge fillet
+ridge harrow
+ridge oak
+ridge plow
+ridge-seeded
+ridge stone
+ridge strut
+ridge tile
+ridging grass
+ridging plow
+ridicule-proof
+riding boot
+riding habit
+riding hood
+riding light
+riding master
+riding rhyme
+riding school
+rie grass
+riffle bar
+riffle block
+riffle file
+rifle assembler
+rifle bar
+rifle bomb
+rifle corps
+rifle frock
+rifle green
+rifle grenade
+rifle gun
+rifle pit
+rifle range
+rifle salute
+rifle shot
+rifle tie
+rift board
+rift saw
+rift-sawed
+rift-sawing
+rift-sawn
+rift valley
+rifty-tufty
+Riga balsam
+rigging loft
+rigging screw
+right-aiming
+right-angle
+right-angled
+right-angular
+right ascension
+right-away
+right-bank
+right-believed
+right-believing
+right-born
+right-brained
+right-bred
+right center
+right-central
+right cylinder
+right-down
+right-drawn
+right-eared
+right-eyed
+right-eyedness
+right-footed
+right-forward
+right-framed
+right-handed
+right-handedly
+right-handedness
+right-hander
+right-hand tool
+right-handwise
+right-laid
+right-lay
+right-lined
+right-made
+right-meaning
+right-minded
+right-mindedly
+right-mindedness
+right-onward
+right-principled
+right-running
+right-shaped
+right-shapen
+right-side
+right-sided
+right-sidedly
+right-sidedness
+right-thinking
+right-turn
+right-up
+right-walking
+right whale
+right-wheel
+right wing
+right-winger
+right-wingism
+rigid-body
+rigid-nerved
+rigid-seeming
+Rigil kentaurus
+rig-out
+rig tree
+rig-up
+Rig-veda
+Rig-vedic
+rill-like
+rill stope
+rim ash
+rim-bearing
+rim-bending
+rimble-ramble
+rim blight
+rim-bound
+rim clutch
+rim-cut
+rim-deep
+rime-covered
+rime-damp
+rime frost
+rime-frosted
+rime-laden
+rim-fire
+rim lock
+rim pulley
+rim ram ruf
+rim saw
+rim shaft
+rim wheel
+rind disease
+rind fungus
+rind gall
+rind grafting
+ring-adorned
+ring armature
+ring armor
+ring-a-rosy
+ring-around
+ring-banded
+ring bander
+ring-billed
+ring-billed duck
+ring binder
+ring bore
+ring-bored
+ring bottle
+ring-bound
+ring canal
+ring cell
+ring-chain isomerism
+ring-chain tautomerism
+ring chuck
+ring clew
+ring compound
+ring crib
+ring dial
+ring dropper
+ring dropping
+ringed snake
+ring-eyed
+ring-fence
+ring finger
+ring-formed
+ring formula
+ring gauge
+ring gear
+ring-handled
+ring-in
+ring-legged
+ring micrometer
+ring nebula
+ring-necked
+ring-necked duck
+ring necrosis
+ring-off
+ring-oil
+ring oiler
+ring pin
+ring-porous
+ring-ridden
+ring rope
+ring screw
+ring shake
+ring-shaped
+ring-small
+ring spinner
+ring spot
+ring-tailed
+ring traveler
+ring-up
+ring winding
+ringworm bush
+rinka fadda
+rink polo
+riot gun
+rip cord
+rip current
+ripe-aged
+ripe-bending
+ripe-cheeked
+ripe-colored
+ripe-eared
+ripe-faced
+ripe-grown
+ripe-looking
+ripe-picked
+ripe-red
+ripe rot
+ripe stump
+ripe-tongued
+ripe-witted
+rip hook
+rip panel
+ripper act
+ripping bar
+ripping chisel
+ripping panel
+ripping punch
+ripping size
+ripple cloth
+ripple current
+ripple grass
+ripple mark
+ripple plantain
+ripple voltage
+ripple weld
+rippling kame
+rip-rap
+rip-roaring
+rip-roarious
+rip tide
+risk capital
+risk premium
+rivage green
+river ash
+riverbank grape
+river basin
+river bass
+river birch
+river-blanched
+river-borne
+river-bottom
+river boulder
+river bulrush
+river-caught
+river craft
+river deer
+river dolphin
+river driver
+river-formed
+river front
+river-given
+river-god
+river-goddess
+river grass
+river horse
+river jack
+river locust
+river maple
+river mussel
+river novel
+river oak
+river rat
+river road
+river shrew
+river-sundered
+river-watered
+river wattle
+river-worn
+rivet buster
+rivet carrier
+rivet catcher
+rivet forge
+rivet heater
+rivet hole
+riveting hammer
+riveting knob
+riveting stake
+rivet knob
+rivet pitch
+rivet snap
+rivet steel
+rivet weld
+rivet wheat
+riving knife
+riving machine
+rix-dollar
+Rizal day
+r-less
+roach-back
+roach-backed
+roach-bellied
+roach-bent
+road agent
+road binder
+road builder
+road building
+road cart
+road compound
+road contractor
+road donkey
+road drag
+road-faring
+road fettler
+road gang
+road grader
+road-grading
+road guard
+road harrow
+road hog
+road-hoggish
+road-hoggism
+road horse
+road layer
+road maker
+road making
+road map
+road mender
+road metal
+road monkey
+road oil
+road-oiling
+road pen
+road plow
+road racer
+road racing
+road-ready
+road repairer
+road roller
+road runner
+road scraper
+road sign
+road tar
+road test
+road-testing
+road wagon
+road-weary
+road wheel
+road-wise
+roast-beef plant
+roasting ear
+roasting jack
+roast sintering
+robber bee
+robber crab
+robber fly
+Robber synod
+robbery insurance
+robin accentor
+robin chat
+robin dipper
+Robin hood
+robin redbreast
+robin runaway
+robin sandpiper
+robin snipe
+robot bomb
+roche alum
+roching cask
+rock alyssum
+rock-based
+rock basin
+rock-battering
+rock-begirdled
+rock-bestudded
+rock-bethreatened
+rock-boring
+rock-bottom
+rock-bound
+rock brake
+rock breaker
+rock-breaking
+rock-built
+rock burst
+rock candy
+rock-cistus
+rock-clad
+rock-cleft
+rock-climb
+rock-climber
+rock-climbing
+rock-concealed
+rock-covered
+rock crab
+rock-crested
+rock-crushing
+rock-cut
+rock drill
+rock driller
+rock-drilling
+rock-dusted
+rock-dwelling
+rock eel
+rock elm
+rock-embosomed
+rock-encircled
+rock-encumbered
+rock-enthroned
+rocker arm
+rocker bent
+rocker cam
+rocket apparatus
+rocket bomb
+rocket harpoon
+rocket launcher
+rocket plane
+rocket-propelled
+rocket propulsion
+rocket salad
+rock face
+rock-faced
+rock-fallen
+rock-fast
+rock fern
+rock-fill
+rock-firm
+rock-firmed
+rock flint
+rock-forming
+rock-free
+rock-frequenting
+rock garden
+rock gardener
+rock gardening
+rock-girded
+rock-girt
+rock goat
+rock grouse
+rock gypsum
+rock-hard
+rock-hewn
+rock hole
+rock hopping
+rocking bed
+rocking chair
+rocking horse
+rock-inhabiting
+rock lever
+rock lily
+rock lobster
+rock-loving
+rock maple
+rock-melting
+rock milk
+rock moss
+rock oak
+rock oyster
+rock painting
+rock phospate
+rock-piercing
+rock pigeon
+rock pile
+rock-piled
+rock pressure
+rock-pulverizing
+rock-razing
+rock-reared
+rock-ribbed
+rock-roofed
+rock-rooted
+rock-rushing
+rock salt
+rock saw
+rock-scarped
+rock seal
+rock shelter
+rock-sheltered
+rock snake
+rock sparrow
+rock spleenwort
+rock squirrel
+rock-strewn
+rock-throned
+rock-thwarted
+rock-torn
+rock trout
+rock violet
+rock vole
+rockweed bird
+rock whiting
+rock-wombed
+rock wool
+rock-worked
+rock wren
+Rocky mountain
+rod adaptation
+rod bayonet
+rod-bending
+rod-boring
+rod breaker
+rod-caught
+rod-cone theory
+rod-drawing
+rode goose
+rodent ulcer
+rod epithelium
+rod fiber
+rod granule
+rod-healing
+rod mill
+rod peeler
+rod-pointing
+rod-polishing
+rod-shaped
+rod vision
+roebuck berry
+roe deer
+roentgen-ray cancer
+rogue elephant
+roister-doister
+roister-doisterly
+roll-about
+roll-call
+roll-cumulus
+roller-backer
+roller bar
+roller bearing
+roller blind
+roller bowl
+roller-carrying
+roller coaster
+roller gear
+roller gin
+roller grinder
+roller-grinding
+roller-made
+roller mill
+roller-milled
+roller-milling
+roller nest
+roller press
+roller skate
+roller stock
+roller-top
+roller towel
+roll film
+rolling hitch
+rolling-key clutch
+rolling machine
+rolling mill
+rolling press
+rolling rope
+roll lathe
+roll-leaf
+roll-over
+roll scale
+roll top
+roll-top desk
+roll train
+roll-turning lathe
+roll up
+roll welding
+roly-poly
+roly-poly grass
+romance-empurpled
+romance-hallowed
+romance-inspiring
+romance-making
+romance stanza
+romance-writing
+Roman nose
+Roman-nosed
+Romano-british
+Romano-briton
+Romano-byzantine
+Romano-canonical
+Romano-celtic
+Romano cheese
+Romano-ecclesiastical
+Romano-egyptian
+Romano-etruscan
+Romano-gallic
+Romano-german
+Romano-germanic
+Romano-gothic
+Romano-greek
+Romano-hispanic
+Romano-iberian
+Romano-lombardic
+Romano-punic
+romantico-heroic
+romantico-robustious
+Romany rye
+Rong-pa
+rood altar
+rood arch
+rood beam
+rood cloth
+rood goose
+rood ladder
+rood loft
+rood stair
+rood tower
+roof beam
+roof-blockaded
+roof board
+roof bracket
+roof-building
+roof-climbing
+roof cover
+roof dome
+roof door
+roof-draining
+roof-dwelling
+roof fixer
+roof garden
+roof gardener
+roof-gardening
+roof-haunting
+roof high
+roof line
+roof nucleus
+roof plate
+roof rat
+roof-reaching
+roof ridge
+roof-shaped
+roof thatch
+roof tile
+roof truss
+rook-coated
+rooketty-coo
+room clerk
+rooming house
+room-ridden
+room trader
+roost cock
+root beer
+root borer
+root-bound
+root-bruising
+root-built
+root canal
+root cell
+root cutting
+root determinative
+root-devouring
+root-digging
+root disease
+root division
+root-eating
+root-feeding
+root gall
+root grafting
+root hair
+root-hardy
+root-inwoven
+root-mean-square
+root-neck
+root nodule
+root parasite
+root-parasitic
+root-parasitism
+root pressure
+root-prune
+root-pruned
+root rot
+root sheath
+root tip
+root-torn
+root vole
+root weevil
+rope belting
+rope-bound
+rope brake
+rope brown
+rope-closing
+rope-driven
+rope-driving
+rope-end
+rope-fastened
+rope-girt
+rope greaser
+rope house
+rope ladder
+rope-laying
+rope machine
+rope molding
+rope-muscled
+rope-pulling
+rope race
+rope-reeved
+rope-shod
+rope-sight
+rope spinner
+rope-spinning
+rope stitch
+rope-stock
+rope-stropped
+rope twine
+rope yarn
+rope-yarn knot
+roping palm
+Rorate sunday
+rory-cum-tory
+rory-tory
+rosary pea
+rosary plant
+rosary ring
+rosary shell
+rosa solis
+rose acacia
+rose aphid
+rose apple
+rose-a-ruby
+rose-back
+rose beetle
+rose beige
+rose-bellied
+rose-blue
+rose blush
+rose box
+rose-breasted
+rose-bright
+rose carnation
+rose-carved
+rose chafer
+rose-cheeked
+rose chestnut
+rose-clad
+rose cold
+rose-color
+rose-colored
+rose-colorist
+rose comb
+rose-combed
+rose-covered
+rose cross
+rose-crowned
+rose cut
+rose cutter
+rose diamond
+rose-diffusing
+rose-eared
+rose engine
+rose-ensanguined
+rose-faced
+rose fever
+rose-fingered
+rose-flowered
+rose-fresh
+rose-gathering
+rose geranium
+rose-geranium oil
+rose gray
+rose-growing
+rose-headed
+rose-hedged
+rose-hued
+rose-leaved
+rose lily
+rose-lipped
+rose-lit
+rose-loving
+rose mallow
+rosemary oil
+rose mildew
+rose opal
+rose-petty
+rose-podded
+rose point
+rose purple
+rose-red
+rose-ringed
+rose-scented
+rose-shell reamer
+rose slug
+Rose sunday
+rose-sweet
+rose tickseed
+rose-tinged
+rose-tinted
+rosetta wood
+rosette plate
+rose-warm
+rose-water
+rose weevil
+rose willow
+rose window
+rosewood oil
+rose worm
+rose-wreathed
+rosin oil
+rosin plant
+rosin rose
+rosin soap
+rosin spirit
+rosso antico
+rosy-armed
+rosy-blushing
+rosy-bosomed
+rosy-cheeked
+rosy-colored
+rosy-crimson
+rosy-dancing
+rosy-eared
+rosy-faced
+rosy-fingered
+rosy-hued
+rosy-lipped
+rosy-purple
+rosy-red
+rosy-tinted
+rosy-tipped
+rosy-toed
+rosy-warm
+rotary-cut
+rotary gap
+rotary hoe
+rotation band
+rotation pool
+rote song
+rot grass
+rother nail
+rotor plane
+rotor ship
+rot-steep
+rotten-dry
+rotten-egg
+rotten-hearted
+rotten-heartedly
+rotten-heartedness
+rotten-minded
+rotten-planked
+rotten-red
+rotten-rich
+rotten-ripe
+rotten-throated
+rotten-timbered
+rott goose
+rotundo-ovate
+rouge plant
+rough-and-readiness
+rough-and-ready
+rough-backed
+rough-barked
+rough-bearded
+rough-bedded
+rough bent
+rough-billed
+rough-blustering
+rough-board
+rough-bordered
+rough-cheeked
+rough-clad
+rough-clanking
+rough-coat
+rough-coated
+rough-cut
+rough-edge
+rough-edged
+rough-enter
+rougher-down
+rougher-out
+rougher-up
+rough-face
+rough-faced
+rough-feathered
+rough-finned
+rough-foliaged
+rough-footed
+rough-form
+rough-fruited
+rough-furrowed
+rough-grained
+rough-grind
+rough-grinder
+rough-grown
+rough-hackle
+rough-hackled
+rough-haired
+rough-handed
+rough-handedness
+rough-headed
+rough-hob
+rough-hobbed
+rough-hull
+roughing-in
+roughing mill
+roughing roll
+roughing stone
+rough-jacketed
+rough-keeled
+rough-leaved
+rough-legged
+rough-level
+rough-lipped
+rough-living
+rough loader
+rough-looking
+rough-mannered
+rough-necked
+rough-paved
+rough-plain
+rough-plane
+rough-plastered
+rough-plow
+rough-plumed
+rough-podded
+rough-point
+rough-ream
+rough-reddened
+rough-ridged
+rough-roll
+rough-sawn
+rough-scaled
+rough-seeded
+rough-shape
+rough-sketch
+rough-skinned
+rough-spirited
+rough-spoken
+rough-square
+rough-stalked
+rough-stemmed
+rough-stone
+rough-stringed
+rough-surfaced
+rough-swelling
+rough-tailed
+rough-tanned
+rough-tasted
+rough-textured
+rough-thicketed
+rough-toned
+rough-tongued
+rough-toothed
+rough-turn
+rough-turned
+rough turner
+rough-voiced
+rough-walled
+rough-weather
+rough-winged
+rough-write
+roulette table
+roulette wheel
+round-about-face
+roundabout system
+round-arched
+round-arm
+round-armed
+round-backed
+round-barreled
+round-bellied
+round-beset
+round-billed
+round-blazing
+round-bodied
+round-boned
+round-bottomed
+round-bowed
+round-bowled
+round-celled
+round-cell sarcoma
+round-cornered
+round-crested
+round-eared
+round-edge
+round-edged
+round-end
+round-eyed
+round-faced
+round-fenced
+round-footed
+round-fruited
+round-furrowed
+round-handed
+round-heart
+round herring
+round-hoofed
+round-horned
+roundhouse curve
+rounding adz
+roundish-deltoid
+roundish-faced
+roundish-featured
+roundish-leaved
+roundish-obovate
+roundish-oval
+roundish-ovate
+roundish-shaped
+round-leafed
+round-leaved
+round-limbed
+round-lipped
+round-lobed
+round-made
+round-mouthed
+roundnose chisel
+round-nosed
+round-podded
+round-pointed
+round-ribbed
+round robin
+round-rolling
+round-rooted
+round-seeded
+round-shapen
+round-shouldered
+round-shouldred
+round-sided
+round-skirted
+round-spun
+round-stalked
+round-table
+round-table conference
+round-tailed
+round-the-clock
+round-toed
+round-topped
+round tower
+round trip
+round-tripper
+round-trussed
+round-turning
+round-visaged
+round-winged
+round-wombed
+rout cake
+rout chair
+route army
+route march
+route marker
+route order
+route step
+routing plane
+rout seat
+rove beetle
+rove-over
+rover ball
+rowan tree
+row-barge
+row crop
+row culture
+row galley
+rowing machine
+row-off
+royal-born
+royal-chartered
+royal-hearted
+royal-rich
+royal-souled
+royal-spirited
+royal-towered
+R-shaped
+R star
+rub-a-dub
+rubber cloth
+rubber-coated
+rubber-collecting
+rubber-cored
+rubber-covered
+rubber-cutting
+rubber-down
+rubber-faced
+rubber-growing
+rubber-headed
+rubber hydrocarbon
+rubber knife
+rubber latex
+rubber-lined
+rubber-mixing
+rubber-off
+rubber oil
+rubber plant
+rubber-producing
+rubber-proofed
+rubber-reclaiming
+rubber-set
+rubber-slitting
+rubber snake
+rubber-soled
+rubber spreader
+rubber-spreading
+rubber-stamp
+rubber-testing
+rubber-tired
+rubber tree
+rubber varnisher
+rubber-varnishing
+rubber vine
+rubber-yielding
+rubbing block
+rubbing varnish
+rubbish unloader
+rubble car
+rubble masonry
+rub-dub
+rubicon bezique
+rubicon piquet
+rub iron
+ruby-berried
+ruby blende
+ruby-budded
+ruby-circled
+ruby-colored
+ruby copper
+ruby-crested
+ruby-crowned
+ruby-eyed
+ruby-faced
+ruby fly
+ruby glass
+ruby grass
+ruby-headed
+ruby-hued
+ruby-lipped
+ruby-lustered
+ruby-necked
+ruby port
+ruby red
+ruby-set
+ruby silver
+ruby spaniel
+ruby spinel
+ruby-studded
+ruby sulphur
+ruby-throated
+ruby-tinctured
+ruby-tinted
+ruby-toned
+ruby-visaged
+ruby wood
+ruby zinc
+rudder band
+rudder bar
+rudder brake
+rudder chain
+rudder crosshead
+rudder fish
+rudder tackle
+rudder torque
+ruddy-bright
+ruddy-brown
+ruddy-cheeked
+ruddy-colored
+ruddy-complexioned
+ruddy-faced
+ruddy-gold
+ruddy-haired
+ruddy-headed
+ruddy-leaved
+ruddy-purple
+ruddy-spotted
+rude-carved
+rude-ensculptured
+rude-fanged
+rude-fashioned
+rude-featured
+rude-growing
+rude-hewn
+rude-looking
+rude-made
+rude-mannered
+rude-spoken
+rude-spun
+rude-thoughted
+rude-tongued
+rude-washed
+rudge wash
+rue anemone
+rue bargain
+rue fern
+rue oil
+rue spleenwort
+ruffle-headed
+ruff-necked
+ruffy-tuffy
+rufous-backed
+rufous-banded
+rufous-bellied
+rufous-billed
+rufous-breasted
+rufous-brown
+rufous-buff
+rufous-chinned
+rufous-colored
+rufous-crowned
+rufous-edged
+rufous-haired
+rufous-headed
+rufous-hooded
+rufous-naped
+rufous-necked
+rufous-rumped
+rufous-spotted
+rufous-tailed
+rufous-tinged
+rufous-toed
+rufous-vented
+rufous-winged
+rufous-yellow
+rufter hood
+rufty-tufty
+rug gown
+rug-gowned
+rugose-leaved
+rugose-punctate
+ruin agate
+ruin-breathing
+ruin-crowned
+ruin-heaped
+ruin-hurled
+ruin-loving
+ruin marble
+rule nisi
+rum barge
+rumble-bumble
+rumble seat
+rumble-tumble
+rum blossom
+rum-bred
+rum cherry
+rum-crazed
+rum-drinking
+rum-dum
+rum essence
+rum-fired
+rum-flavored
+rummage sale
+rum-nosed
+rump bone
+rump-fed
+rum-producing
+rump steak
+rumpus room
+rum ram ruf
+rum-selling
+rum shrub
+rum-smelling
+rum sucker
+run-around
+Runa-simi
+runcible spoon
+run-down
+rune-bearing
+rune-inscribed
+run-in
+runner peanut
+runner stick
+runner-up
+running board
+running bond
+running-down clause
+running fire
+running fit
+running gate
+running gear
+running knot
+running light
+running mate
+running-out fire
+running track
+runoff primary
+run-on
+run-over
+run-through
+run-up
+rural deanery
+rush-bearer
+rush bearing
+rush-bordered
+rush-bottomed
+rush broom
+rush candle
+rush daffodil
+rush-floored
+rush-fringed
+rush garlic
+rush-girt
+rush grass
+rush-grown
+rush hour
+rush-leaved
+rush lily
+rush-margined
+rush marsh grass
+rush ring
+rush-seated
+rush-stemmed
+rush-strewn
+rush wheat
+rush-wove
+rush-woven
+russel cord
+russet-backed
+russet-bearded
+russet-brown
+russet coat
+russet-coated
+russet-colored
+russet-golden
+russet-green
+russet-pated
+russet-robed
+russet-roofed
+Russian-owned
+Russo-byzantine
+Russo-caucasian
+Russo-chinese
+Russo-german
+Russo-greek
+Russo-japanese
+Russo-persian
+Russo-polish
+Russo-serbian
+Russo-swedish
+Russo-turkish
+rust brown
+rust-cankered
+rust cement
+rust coat
+rust-complexioned
+rust-eaten
+rust fungus
+rust joint
+rust mite
+rust-preventing
+rust-proofed
+rust-red
+rust-removing
+rust-resisting
+rust-stained
+rust-worn
+rusty-branched
+rusty-brown
+rusty-coated
+rusty-collared
+rusty-colored
+rusty-crowned
+rusty-dusty
+rust-yellow
+rusty-fusty
+rusty-leaved
+rusty-looking
+rusty-red
+rusty-rested
+rusty-spotted
+rusty-throated
+ruthenium oxide
+ruthenium red
+rye bread
+rye grass
+rye rust
+rye smut
+rye whisky
+sabai grass
+Sabbath day
+Sabbath dress
+Sabbath school
+sab-cat
+saber bean
+saber fish
+saber knot
+saber-legged
+saber rattling
+saber-shaped
+saber shin
+saber-toothed
+sabicu wood
+sable antelope
+sable-bordered
+sable-cinctured
+sable-cloaked
+sable-colored
+sable-hooded
+sable iron
+sable-lettered
+sable-robed
+sable-spotted
+sable-stoled
+sable-suited
+sable-vested
+sable-visaged
+Sabrina work
+saccharine sorghum
+sacer vates
+sac fungus
+sachet powder
+sack baler
+sack baling
+sack-bearer
+sack beater
+sack borer
+sack carrier
+sack checker
+sack cleaner
+sack cloud
+sack coal
+sack coat
+sack-coated
+sack collector
+sack cutter
+sack doubler
+sack duty
+sack elevator
+sack emptier
+sack examiner
+sack-formed
+sack hand
+sack hoist
+sack holder
+sack lifter
+sack machinist
+sack mender
+sack moth
+sack packer
+sack printer
+sack race
+sack racer
+sack racing
+sack repairer
+sack running
+sack-sailed
+sack searcher
+sack sewer
+sack shaker
+sack-shaped
+sack shoot
+sack sorter
+sack store
+sack superintendent
+sack tackle
+sack tree
+sack weight
+sack-winged
+sacrament chapel
+sacrament cloth
+sacrament house
+Sacramento cat
+Sacramento perch
+Sacramento pike
+Sacrament sunday
+sacra peregrina
+Sacra romana rota
+sacred-bean family
+sacred ibis
+sacrifice fly
+sacrifice hit
+sacring bell
+sacro-uterine
+sac-wrist
+sad-a-vised
+sad cake
+sad-colored
+saddle-backed
+saddle band
+saddle bar
+saddle-billed
+saddle blanket
+saddle boiler
+saddle bracket
+saddle carpenter
+saddle case
+saddle-check chair
+saddle chimes
+saddle clip
+saddle crutch
+saddle currier
+saddle cutter
+saddle-fast
+saddle feathers
+saddle fitter
+saddle flange
+saddle flap
+saddle fungus
+saddle gall
+saddle-galled
+saddle-girt
+saddle girth
+saddle glacier
+saddle-graft
+saddle grafting
+saddle gun
+saddle hackle
+saddle hand
+saddle hip
+saddle horn
+saddle horse
+saddle house
+saddle hub
+saddle iron
+saddle joint
+saddle key
+saddle lap
+saddle lashing
+saddle leather
+saddle maker
+saddle making
+saddle mat
+saddle nail
+saddle-nosed
+saddle ox
+saddle oyster
+saddle pad
+saddle pile
+saddle piling
+saddle pin
+saddle pistol
+saddle plant
+saddle plate
+saddle pocket
+saddle pommel
+saddle press
+saddle rack
+saddle reef
+saddle rock
+saddle roof
+saddle room
+saddle rug
+saddle seam
+saddle seamer
+saddle seat
+saddle-shaped
+saddle shell
+saddle shoe
+saddle skirt
+saddle soap
+saddle spot
+saddle-spotted
+saddle spring
+saddle staple
+saddle stirrup
+saddle stitch
+saddle stitcher
+saddle stone
+saddle strap
+saddle tank
+saddle trunk
+saddle-wired
+saddle wire stitch
+saddle wiring
+saddle withers
+saddle worker
+sad-eyed
+sad-faced
+Sadi dervish
+sad-looking
+sad-natured
+sad-paced
+sad-seeming
+sad tree
+sad-tuned
+sad-voiced
+safari ant
+safe-bestowed
+safe-borne
+safe builder
+safe-conduct
+safe-cracker
+safe-deposit
+safe edge
+safe-edge file
+safe finisher
+safe fitter
+safeguarding duty
+safe-hidden
+safe lifter
+safe lock
+safe-marching
+safe-moored
+safe painter
+safe-sequestered
+safe stuffer
+safety arch
+safety belt
+safety bicycle
+safety bolt
+safety buoy
+safety cage
+safety catch
+safety chain
+safety clause
+safety curtain
+safety disk
+safety dog
+safety edge
+safety explosive
+safety factor
+safety-fund system
+safety funnel tube
+safety fuse
+safety glass
+safety hanger
+safety hoist
+safety island
+safety lamp
+safety lift
+safety link
+safety lock
+safety match
+safety nut
+safety paper
+safety pin
+safety pinion
+safety rail
+safety razor
+safety setscrew
+safety stop
+safety switch
+safety switchboard
+safety tube
+safety valve
+safety zone
+safflower carmine
+safflower oil
+safflower red
+saffron cake
+saffron-colored
+saffron cordial
+saffron crocus
+saffron gatherer
+saffron-hued
+saffron kiln
+saffron oil
+saffron plum
+saffron thistle
+saffron yellow
+safrano pink
+Sagai tatar
+sage ale
+sage apple
+sage brush green
+sage cheese
+sage chippy
+sage cock
+sage-colored
+sage-covered
+sage green
+sage grouse
+sage hare
+sage hen
+Sage hen
+sage-leaf
+sage-leaf mullein
+sage-leaved
+sage mullein
+sage oil
+sage rabbit
+sage sparrow
+sage tea
+sage thrasher
+sage tree
+sage willow
+sage wine
+sage wormwood
+sago fern
+sago flour
+sago palm
+sago plant
+sago spleen
+sago tree
+sahuca bean
+sail arm
+sail-bearing
+sail-borne
+sail-broad
+sail burton
+sail canvas
+sail carrier
+sail-carrying
+sail-dotted
+sail drill
+sail duck
+sail-filling
+sail fluke
+sail furler
+sail gang
+sail grommet
+sail ho
+sail hook
+sail hoop
+sailing barge
+sailing boat
+sailing canoe
+sailing car
+sailing day
+sailing instructions
+sailing launch
+sailing master
+sailing match
+sailing orders
+sailing packet
+sailing sucker
+sailing trawler
+sailing trim
+sailing yacht
+sail keeper
+sail lizard
+sail loft
+sail model
+sail needle
+sail netting
+sailor blue
+sailor boy
+sailor-fashion
+sailor fish
+sailor-fisherman
+sailor gang
+sailor helmsman
+sailor laborer
+sailor lad
+sailor-looking
+sailor-mind
+sailor phrase
+sailor plant
+sailor-poet
+sailor-soul
+sailor suit
+sailor tie
+sailor-train
+sail-over
+sail packet
+sail-propelled
+sail pulley
+sail room
+sail rope
+sail sewer
+sail sewing
+sail-stretched
+sail thimble
+sail thread
+sail trimmer
+sail twine
+sail-winged
+sail yard
+Saint andrew
+Saint bell
+Saint bernard
+Saint-emilion
+saint-errant
+saint-errantry
+Saint-estephe
+Saint-julien
+saint maker
+saint making
+Saint michael
+Saint simon
+Saint-simonian
+Saint-simonianism
+Saint-simonism
+Saint-simonist
+Sakhalin fir
+salaam aleikum
+salad bowl
+salad burnet
+salad course
+salad days
+salad dish
+salad dressing
+salad fork
+salad herb
+salad oil
+salad plate
+salad rocket
+salad server
+salad spoon
+salad tree
+salai tree
+sal alembroth
+sal ammoniac
+sal armoniac
+salary deduction
+sale block
+Salem grass
+sale note
+sale-over
+saleratus weed
+sales account
+sales agency
+sales agent
+sales book
+sales engineer
+sales floor
+sales force
+sales journal
+sales ledger
+sales manager
+sales note
+sales resistance
+sales talk
+sales tax
+salfern stoneseed
+Salisbury steak
+Sallier papyri
+sallow-cheeked
+sallow-colored
+sallow-complexioned
+sallow-faced
+sallow-looking
+sallow-visaged
+Sally lunn
+Sally nixon
+sally picker
+sally port
+salmon-breeding
+salmon brick
+salmon cloud
+salmon color
+salmon-colored
+salmon disease
+salmon family
+salmon fisher
+salmon fisherman
+salmon fishery
+salmon fishing
+salmon fly
+salmon hatchery
+salmon-haunted
+salmon herring
+salmon ladder
+salmon oil
+salmon peal
+salmon pink
+salmon-rearing
+salmon-red
+salmon river
+salmon rod
+salmon smelt
+salmon spear
+salmon spearing
+salmon steak
+salmon-tinted
+salmon trout
+salmon wheel
+salon music
+saloon deck
+saloon pistol
+salpingo-oophorectomy
+salpingo-oophoritis
+salpingo-ovariotomy
+salpingo-ovaritis
+salpingo-ureterostomy
+sal soda
+salt acid
+salt-and-pepper
+sal tartari
+salt barrel
+salt bed
+salt block
+salt bottom
+salt box
+salt-box house
+salt brig
+salt cake
+salt cedar
+salt chrome
+salt coffer
+salt conveyer
+Salt creek
+salt crusher
+salt crystal
+salt-cured
+salt dome
+salt drawer
+salt dryer
+salt duty
+salt-edged
+salt eel
+salt elevator
+salt evaporator
+salt filler
+salt filter
+salt fireman
+salt firm
+salt fish
+salt flat
+salt furnace
+salt garden
+salt gauge
+salt glaze
+salt-glazed
+salt glazing
+salt grainer
+salt grape
+salt grass
+salt-green
+salt grinder
+salt-hard
+salt hay
+salt heaver
+salt holder
+salt horse
+salt-incrusted
+salting bath
+salting box
+salting house
+salting kit
+salting pan
+salting press
+salting room
+salting trough
+salting tub
+salt kettle
+salt-laden
+salt lick
+salt loader
+salt-loving
+salt lump
+salt marsh
+salt-marsh aster
+salt-marsh caterpillar
+salt-marsh fleabane
+salt-marsh gerardia
+salt-marsh goldenrod
+salt-marsh grass
+salt-marsh hen
+salt-marsh mosquito
+salt-marsh moth
+salt-marsh terrapin
+salt master
+salt-meadow grass
+salt millman
+salt mine
+salt miner
+salt pack
+salt pan
+salt pansmith
+saltpeter paper
+saltpeter rot
+salt pit
+salt plug
+salt pocket
+salt pork
+salt prairie
+salt press
+salt rammer
+sal tree
+salt reed grass
+salt refiner
+salt rheum
+salt-rheum weed
+salt-rising
+Salt river
+salt room
+salt screen
+salt seller
+salt shaker
+salt shop
+salt shovel
+salt soda
+salt-spilling
+salt spring
+salt stain
+salt tree
+salt trimmer
+salt trough
+salt vase
+salt washer
+salt water
+salt-watery
+salt well
+salt-white
+saltwort family
+salt yard
+saluto dor
+saluto doro
+salvage corps
+salvage man
+Salvation army
+salve bug
+salve mull
+salver-shaped
+salvia blue
+salvinia family
+salvo point
+Salzburg vitriol
+samadera bark
+Samal laut
+Sama-veda
+same-colored
+same-featured
+same-minded
+same-seeming
+same-sized
+same-sounding
+Samhain eve
+Sam hill
+sample book
+sample bottle
+sample box
+sample boy
+sample cabinet
+sample card
+sample carrier
+sample case
+sample catcher
+sample cutter
+sample drawer
+sample driller
+sample envelope
+sample holder
+sample maker
+sample making
+sample ore
+sample passer
+sample phial
+sample picker
+sample porter
+sample roll
+sample room
+sample tester
+sample trunk
+sample vial
+sampling shovel
+Sampson fox
+Sampson snakeroot
+sam-sodden
+Samson fish
+samson post
+Samson post
+San blas
+San blas indian
+San carlos apache
+sancho pedro
+sancte bell
+sanctuary knocker
+sanctuary ring
+sanctum sanctorum
+Sanctus bell
+sandal brick
+sandal tree
+sandalwood family
+sandalwood oil
+sandalwood tan
+sandarac tree
+sand badger
+sand bar
+sand-bar willow
+sand bath
+sandbeach grape
+sand bear
+sand bellows
+sand belt
+sand-belt machine
+sand binder
+sand bird
+sand blackberry
+sand blaster
+sand-blight
+sand-blind
+sand blindness
+sand block
+sand blower
+sand-blown
+sand boil
+sand-bottomed
+sandbox tree
+sand brier
+sand buffer
+sand bug
+sand-built
+sand bunker
+sand-buried
+sand-burned
+sand burner
+sand calciner
+sand car
+sand-cast
+sand caster
+sand casting
+sand cherry
+sand chute
+sand clam
+sand clock
+sand clover
+sand cock
+sand collar
+sand-colored
+sand column
+sand cone
+sand conveyer
+sand corn
+sand crab
+sand crack
+sand crater
+sand cricket
+sand cusk
+sand dab
+sand darter
+sand digger
+sand disease
+sand diver
+sand dollar
+sand dredge
+sand dropseed
+sand drown
+sand dune
+sand eel
+sanders blue
+sand-etched
+sand-faced
+sand finish
+sand-finished
+sand flag
+sand flask
+sand flat
+sand flea
+sand-floated
+sand-float finish
+sand flotation
+sand flounder
+sand fluke
+sand fly
+sand-fly bush
+sand-fly fever
+sand fox
+sand gall
+sand grape
+sand grass
+sand-groper
+sand grouse
+sand-hemmed
+sand hill
+sand-hill bloom
+sand-hill crane
+sand-hiller
+sand-hill rose
+sand-hill rosemary
+sand hog
+sand hoist
+sand hole
+sand hopper
+sand hornet
+sanding machine
+sand jack
+sand jet
+sand lark
+sand launce
+sand leek
+sand lily
+sand-lime
+sand-lime brick
+sand line
+sand lizard
+sand lob
+sand-lot
+sand lotter
+sand martin
+sand mason
+sand mixer
+sand mold
+sand molding
+sand mole
+sand monitor
+sand mouse
+sand mullet
+sand myrtle
+sand nettle
+sand oat
+sand pail
+sand painter
+sand painting
+sandpaper fig
+sandpaper starwort
+sandpaper tree
+sand partridge
+sand pear
+sand pig
+sand pigeon
+sand pike
+sand pile
+sand pillar
+sand pine
+sand pipe
+sand pit
+sand plain
+sand plover
+sand plum
+sand prey
+sand pride
+sand pump
+sand rat
+sand-red
+sand reed
+sand reef
+sand reel
+sand rocket
+sand roll
+sand roller
+sand runner
+sand saucer
+sand scoop
+sand screw
+sand sedge
+sand shark
+sand shell
+sand shoe
+sand skink
+sand skipper
+sand smelt
+sand snake
+sand snipe
+sand spout
+sand spurry
+sand squeteague
+sand star
+sand-strewn
+sand sucker
+sand swallow
+sand table
+sand tester
+sand trap
+sand trout
+sand tube
+sand verbena
+sand vetch
+sand vine
+sand violet
+sand viper
+sand walk
+sand-warped
+sand wasp
+sand whiting
+sandwich beam
+sandwich board
+sandwich boy
+sandwich girder
+Sandwich glass
+sandwich man
+Sandwich tern
+sand widgeon
+sandy-bearded
+sandy-bottomed
+sandy-colored
+sandy-flaxen
+sandy-haired
+sandy-pated
+sandy-red
+sandy-rufous
+sane-minded
+san-gaku
+sanga-sanga
+sang-dragon
+sanguinary ant
+sanguine-complexioned
+San ildefonso indian
+sanitation-proof
+San jacinto day
+San juan indian
+San kuo
+sans appel
+Sans arc
+sans-culotte
+sans-culottic
+sans-culottid
+sans-culottide
+sans-culottish
+sans-culottism
+sans-culottist
+sans-culottize
+San sebastian
+sans-serif
+Santa ana indian
+Santa casa
+Santa clara indian
+Santa claus
+Santa fe locomotive
+Santa gertrudis
+Santa hermandad
+santal oil
+santalwood oil
+Santa maria
+Santa maria tree
+Santa sophia
+San thome
+Santo domingan
+Santo domingo indian
+Santorin earth
+sant tree
+sanwa millet
+sap cavity
+sap chafer
+sap fagot
+sap flow
+sap green
+sap gum
+sapling cup
+sapodilla family
+sapodilla plum
+saponification number
+saponification value
+sapota gum
+sapphire blue
+sapphire-colored
+sapphire-hued
+sapphire-visaged
+Sappho comet
+sap pine
+sappy spot
+sap roller
+sap rot
+sap shield
+sap stain
+sapta-matri
+sap tree
+sap tube
+sapucaia nut
+sapucaia-nut family
+sapwood rot
+sardine box
+sardine can
+sardine factory
+sardine fishery
+sardine oil
+sardine shears
+sardine tongs
+sargasso weed
+sargassum crab
+sargassum fish
+sargassum pipefish
+sargassum shell
+Sargent palm
+saru-gaku
+Sarum missal
+Sarum office
+Sarum rubric
+Sarum use
+Sarven hub
+sa sa
+sash bar
+sash cord
+sash curtain
+sash fast
+sash holder
+sash house
+sash line
+sash lock
+sash maker
+sash making
+sash plane
+sash pocket
+sash saw
+sash ventilation
+sash weight
+sassafras laurel
+sassafras medulla
+sassafras nut
+sassafras oil
+sassafras pith
+sassa gum
+sassy bark
+satan monkey
+satellite sphinx
+satem language
+satin-backed
+satin bird
+satin bowerbird
+satin cloth
+satin-faced
+satin-finished
+satin glass
+satin grass
+satin-leaved
+satin-lidded
+satin-lined
+satin moth
+satin sheeting
+satin-shining
+satin-smooth
+satin spar
+satin sparrow
+satin stitch
+satin stone
+satin-striped
+satin sultan
+satin walnut
+satin weave
+satin white
+satin-worked
+satisfaction piece
+Satsuma anthracnose
+saturation current
+saturation curve
+saturation factor
+saturation point
+saturation pressure
+Saturnian verse
+Saturn nebula
+Saturn red
+satyr orchid
+sauba ant
+sauce-alone
+sauce-crayon
+saucer dome
+saucer eye
+saucer-eyed
+saucer-shaped
+Sault whitefish
+saunce bell
+saunders blue
+sausage balloon
+sausage bassoon
+sausage curl
+sausage filler
+sausage-fingered
+sausage maker
+sausage making
+sausage meat
+sausage poisoning
+sausage-shaped
+sausage tree
+saussurite gabbro
+sauva ant
+savage-featured
+savage-fierce
+savage-hearted
+savage-looking
+savage-spoken
+savage-wild
+savanilla rhatany
+savanna blackbird
+savanna flower
+savanna forest
+savanna sparrow
+savanna wattle
+savanna woodland
+save-all
+savings account
+savings bank
+savings insurance
+savings stamp
+savin-leaved
+savin oil
+savoir-faire
+savoir-vivre
+savory-leaved
+savory-leaved aster
+sawara cypress
+saw arbor
+sawarra nut
+saw bearing
+saw bench
+saw bill
+saw-billed
+saw bit
+saw blade
+saw brier
+sawbuck table
+saw cabbage palm
+saw carriage
+saw clamp
+saw cut
+saw driver
+saw-edged
+saw fern
+saw file
+saw filer
+saw filing
+saw gate
+saw gin
+saw grass
+saw grinder
+saw guard
+saw guide
+saw handle
+saw-handled
+sawing block
+sawing stop
+saw jointer
+saw kerf
+saw knife
+saw-leaved
+saw log
+saw machine
+saw machinery
+saw palmetto
+saw palmetto berry
+saw-pierce
+saw pit
+saw set
+saw setting
+saw-shaped
+saw shark
+saw sharpener
+saw steel
+saw straightener
+saw swage
+saw table
+saw tooth
+saw-toothed
+saw-tooth wave
+saw tree
+saw vise
+saw wedge
+saw-whet
+saw wrack
+saw wrest
+sawyer beetle
+Saxe blue
+saxicava sand
+saxifrage family
+saxifrage pink
+Sayal brown
+Sayan samoyedic
+say-nothing
+say-so
+S bend
+S brake
+scabbard fish
+scabby-head
+scab mite
+scaff net
+scaff-raff
+scala media
+scald crow
+scale armor
+scale beam
+scale-bearing
+scale book
+scale-bright
+scale bug
+scale buying
+scale carp
+scale caterpillar
+scale charge
+scale degree
+scale dove
+scale-down
+scaled partridge
+scaled quail
+scale drawing
+scale duck
+scale effect
+scale fern
+scale figure
+scale fly
+scale insect
+scale leaf
+scale louse
+scale maker
+scale making
+scale micrometer
+scale modulus
+scale moss
+scalenus anterior
+scalenus medius
+scalenus posterior
+scale passage
+scale pipette
+scale plan
+scale plate
+scale quail
+scale reading
+scale rule
+scale selling
+scale singing
+scale stair
+scale stone
+scale-tailed
+scale wax
+scale worm
+scallop budding
+scalloped-edged
+scallop-shell moth
+scalp dance
+scalping boots
+scalping iron
+scalp lock
+scaly-bark
+scaly-barked
+scaly-finned
+scaly-leg mite
+scaly mistletoe
+scaly spleenwort
+scaly-stemmed
+scaly tetter
+scaly-winged
+scandal-bearer
+scandal-bearing
+scanning disk
+scanning speech
+scansorial barbet
+scantling number
+scape-bearing
+scape wheel
+scap net
+scapolite-gabbro
+scapolite group
+scapular-shaped
+scar-bearer
+scar-bearing
+scarb-tree
+scarce-closed
+scarce-cold
+scarce-covered
+scarce-discerned
+scarce-found
+scarce-heard
+scarce-met
+scarce-moving
+scarce-parted
+scarce-seen
+scarce-told
+scarce-warned
+scar-clad
+scare-bear
+scare-beggar
+scare-bird
+scare bullfinch
+Scare-christian
+scare-devil
+scare-fish
+scare-fly
+scare goose
+scare-hawk
+scare-hog
+scare-mouse
+scar end
+scare-peddler
+scare-robin
+scare-sheep
+scare-sinner
+scare-sleep
+scare-thief
+scare-vermin
+scar-faced
+scarf cloud
+scarf joint
+scarf maker
+scarf making
+scarf weld
+scarlet-ariled
+scarlet-barred
+scarlet-berried
+scarlet-blossomed
+scarlet-breasted
+scarlet-circled
+scarlet-clad
+scarlet-coated
+scarlet-colored
+scarlet-crested
+scarlet-day
+scarlet-faced
+scarlet-flowered
+scarlet-fruited
+scarlet-gowned
+scarlet-haired
+scarlet-lined
+scarlet-lipped
+scarlet-red
+scarlet-robed
+scarlet-tipped
+scarlet-vermillion
+scar-seamed
+scar tissue
+scatter-gun
+scatter rug
+scaup duck
+scavenger beetle
+scene cloth
+scene dock
+scene painter
+scene painting
+scene plot
+scent bag
+scent ball
+scent box
+scented fern
+scented grass
+scented oak fern
+scented tea
+scented verbena
+scent gland
+scent scale
+schedule rate
+scheme arch
+schenk beer
+Schiedam schnapps
+schiller spar
+schist oil
+schistosome dermatitis
+schlieren effect
+schlieren method
+schlieren photography
+Schloss johannisberger
+Schloss vollrads
+school account
+school age
+school agent
+school airship
+school aptitude
+school argument
+school author
+school badge
+school bass
+school bell
+school bench
+school board
+school-bred
+school brush
+school building
+school bus
+school case
+school chalk
+school chapel
+school chart
+school child
+school chum
+school clamp
+school clerk
+school clock
+school commissioner
+school committee
+school companion
+school crayon
+school day
+school desk
+school district
+school divine
+school divinity
+school doctor
+school door
+school drilling
+school emblem
+school equipment
+school ethics
+school exercise
+school fee
+School french
+school friendship
+school furniture
+school garden
+school globe
+school hour
+school inspector
+school land
+school language
+school-leaving
+school library
+school life
+school locker
+school logic
+school-made
+school-magisterial
+school manager
+school manner
+school map
+school matter
+school medicine
+school model
+school moralist
+school morality
+school name
+school officer
+school omnibus
+school opinion
+school organ
+school pad
+school paper
+school pedantry
+school pence
+school philosopher
+school philosophy
+school phrase
+school playground
+school porter
+school prank
+school principal
+school prize
+school publication
+school publisher
+school question
+school quiddity
+school railing
+school ranking
+school rating
+school register
+school roof
+school rule
+school savings bank
+school scale
+school schnapper
+school scissors
+school seat
+school seating
+school section
+school shark
+school ship
+school sign
+school signal
+school slate
+school snapper
+school strap
+school subtlety
+school superintendent
+school supervisor
+school survey
+school syllogism
+school table
+school tablet
+school-taught
+school team
+school term
+school testing
+school theology
+school tie
+school-trained
+school trick
+school vacation
+school ventilator
+school vise
+school wage
+school wagon
+school warden
+school wardrobe
+school year
+schooner rig
+schooner-rigged
+schorl-granite
+sciara army worm
+sciatic artery
+sciatic foramen
+scientia scientiarum
+scimitar-shaped
+scissor blade
+scissor case
+scissor chain
+scissor-fashion
+scissor-grinder
+scissor kick
+scissor maker
+scissor making
+scissors blade
+scissors case
+scissors chain
+scissor screw
+scissors-fashion
+scissors fault
+scissors-grinder
+scissors hardener
+scissor sharpener
+scissors kick
+scissors maker
+scissors making
+scissors pipe
+scissors-shaped
+scissors sharpener
+scissors-smith
+scissors truss
+scissors worker
+scissor-tailed
+scissor tooth
+scissor-winged
+sclero-oophoritis
+sclero-optic
+sclerotium disease
+scoinson arch
+scolding bridle
+scolding stool
+scone cap
+scoop bonnet
+scoop driver
+scoop net
+scoop wheel
+scops owl
+score card
+score playing
+score sheet
+scorpion broom
+scorpion bug
+scorpion fish
+scorpion fly
+scorpion grass
+scorpion iris
+scorpion lobster
+scorpion mouse
+scorpion oil
+scorpion plant
+scorpion senna
+scorpion shell
+scorpion spider
+scorpion thorn
+Scotch-gaelic
+scotch-hopper
+Scotch-irish
+Scotch-misty
+scotch roman
+scot-free
+Scotland yard
+Scotland yarder
+Scoto-britannic
+Scoto-celtic
+Scoto-english
+Scoto-gaelic
+Scoto-gallic
+Scoto-irish
+Scoto-norman
+Scoto-norwegian
+Scoto-saxon
+Scoto-scandinavian
+Scott-connected
+Scott connection
+Scottish-irish
+scourge top
+scouring ball
+scouring barrel
+scouring cinder
+scouring rush
+scouring stock
+scout badge
+scout boat
+scout camp
+scout car
+scout commissioner
+scout cruiser
+scout executive
+scouting plane
+scout law
+scout motto
+scout oath
+scout patrol
+scout salute
+scout ship
+scout sign
+scout staff
+scout training
+scout vessel
+scove kiln
+scrag end
+scrag whale
+scram hand
+scram-handed
+scrap basket
+scrap box
+scrape-finished
+scrape-gut
+scraper conveyer
+scraper mat
+scraper plane
+scraper ring
+scrape-shoe
+scrape-trencher
+scrap heap
+scrap paper
+scrap pudding
+scrap rubber
+scrap value
+scratch awl
+scratch brusher
+scratch carving
+scratch coat
+scratch-coated
+scratch comma
+scratch cradle
+scratch division
+scratch feed
+scratch figure
+scratch gauge
+scratch grass
+scratch hit
+scratching shed
+scratch line
+scratch-pad
+scratch-penny
+scratch player
+scratch test
+scratch wig
+screech hawk
+screech martin
+screech owl
+screen boy
+screen door
+screen facade
+screen-faced
+screen gate
+screen-grid tube
+screening constant
+screening effect
+screen maker
+screen making
+screen memory
+screen plate
+screen-plate process
+screen process
+screw alley
+screw anchor
+screw arbor
+screw auger
+screw bean
+screw bell
+screw blower
+screw bolt
+screw-bound
+screw box
+screw bunter
+screw cap
+screw-capped
+screw chain
+screw-chasing
+screw-clamped
+screw collar
+screw conveyer
+screw coupling
+screw-cutting
+screw-cutting lathe
+screw-down
+screw-driven
+screw driver
+screwed-up
+screw eye
+screw-eyed
+screw fern
+screw gear
+screw-geared
+screw gearing
+screw hook
+screw jack
+screw joint
+screw key
+screw-lifted
+screw machine
+screw machinery
+screw maker
+screw making
+screw mill
+screw mouth
+screw nail
+screw nut
+screw palm
+screw peg
+screw pile
+screw-piled
+screw piling
+screw pine
+screw-pine family
+screw-pitch
+screw-pitch gauge
+screw plate
+screw plug
+screw pod
+screw post
+screw press
+screw-propelled
+screw propeller
+screw pump
+screw punch
+screw rivet
+screw-shaped
+screw shell
+screw shot
+screw-slotting
+screw smile
+screw spanner
+screw spike
+screw stair
+screw stake
+screw stay
+screw stone
+screw-stoppered
+screw stud
+screw surface
+screw tap
+screw thread
+screw-threaded
+screw-thread fit
+screw-thread tolerance
+screw tool
+screw-topped
+screw-torn
+screw tree
+screw-turned
+screw-turning
+screw wedge
+screw wheel
+screw wrench
+scribble-scrabble
+scribbling lark
+scribe saw
+scribing block
+scribing compass
+scribing gouge
+scribing iron
+scrimping bar
+scrimp rail
+scrip certificate
+scrip dividend
+scrip-scrap
+script lichen
+script-writer
+scritch-scratch
+scritch-scratching
+scrive board
+scrofula plant
+scrolar line
+scroll chuck
+scroll creeper
+scroll-cut
+scroll front
+scroll gear
+scroll lathe
+scroll-like
+scroll pediment
+scroll saw
+scroll-shaped
+scroll step
+scroll wheel
+scrubbing board
+scrubbing brush
+scrub birch
+scrub bush
+scrub chestnut oak
+scrub fowl
+scrub hickory
+scrub juniper
+scrub myrtle
+scrub oak
+scrub pine
+scrub plane
+scrub robin
+scrub sandalwood
+scrub shrub
+scrub turkey
+scrub typhus
+scrub vine
+scrub wren
+scrum half
+scrutiny-proof
+scuffle hoe
+scuff plate
+scullery maid
+sculling oar
+scupper pipe
+scupper shoot
+S curve
+scurvy grass
+scutch cane
+scutch grass
+scutching tow
+scutellum rot
+scuttle butt
+scythe-armed
+scythe-bearing
+scythe-leaved
+scythe maker
+scythe making
+scythe-shaped
+Scythian antelope
+Scythian lamb
+Scytho-aryan
+Scytho-dravidian
+Scytho-greek
+Scytho-median
+sea acorn
+sea adder
+sea air
+sea anchor
+sea anemone
+sea ape
+sea apple
+sea apron
+sea arrow grass
+sea ash
+sea aster
+sea bank
+sea basket
+sea bass
+sea bat
+sea-bathed
+seabeach morning-glory
+seabeach sandwort
+sea bean
+sea bear
+sea-beat
+sea-beaten
+sea beef
+sea beet
+sea bells
+sea belt
+sea bent
+sea bindweed
+sea bird
+sea biscuit
+sea bladder
+sea blite
+sea bloom
+sea blossom
+sea blubber
+sea blue
+sea boat
+sea boots
+sea-born
+sea-borne
+sea bottle
+sea-bounded
+sea-bounding
+sea boy
+sea brant
+sea breach
+sea bread
+sea bream
+sea-bred
+sea breeze
+sea brief
+sea-broke
+sea buckthorn
+sea bugloss
+sea-built
+sea burdock
+sea bush
+sea butterfly
+sea cabbage
+sea calf
+sea campion
+sea captain
+sea card
+sea carp
+sea cat
+sea catfish
+sea catgut
+sea cauliflower
+sea celandine
+sea change
+sea chest
+sea chickweed
+sea-circled
+sea clam
+sea cliff
+sea cloth
+sea club rush
+sea coal
+seacoast angelica
+seacoast laburnum
+sea cob
+sea cock
+sea coco
+sea coconut
+sea colander
+sea cole
+sea colewort
+sea compass
+sea-compelling
+sea-convulsing
+sea coot
+sea corn
+sea cow
+sea crayfish
+sea cress
+sea crow
+sea cucumber
+sea cudweed
+sea cushion
+sea-cut
+sea daffodil
+sea dahlia
+sea daisy
+sea date
+sea day
+sea-deep
+sea-deserted
+sea devil
+sea-divided
+sea dock
+sea dog
+sea dotterel
+sea dove
+sea dragon
+sea drake
+sea-driven
+sea duck
+sea dust
+sea eagle
+sea-ear
+sea eel
+sea egg
+sea elephant
+sea-encircled
+sea endive
+sea fan
+sea feather
+sea fee
+sea fennel
+sea fern
+sea fig
+sea fight
+sea-fighter
+sea fir
+sea fire
+sea fish
+sea fisher
+sea fisherman
+sea fishery
+sea fishing
+sea flea
+sea foalfoot
+sea foam
+sea fog
+sea food
+sea-form
+sea fox
+sea-framing
+sea fret
+sea front
+sea frontage
+sea froth
+sea furbelow
+sea-gait
+sea gasket
+sea gate
+sea gillyflower
+sea girdle
+sea-god
+sea-goddess
+sea goose
+sea goosefoot
+sea gown
+sea grape
+sea grass
+sea grass wrack
+sea-gray
+sea-green
+sea gromwell
+sea gudgeon
+sea gull
+sea gypsy
+sea hanger
+sea hare
+sea hawk
+sea hay
+sea heath
+sea-heath family
+sea hedgehog
+sea hen
+sea herdsman
+sea herring
+sea hog
+sea holly
+sea hollyhock
+sea holm
+sea horse
+sea hulver
+sea ice
+sea island
+sea-island cotton
+sea kale
+sea-kale beet
+sea kemps
+sea kidney
+sea-kindliness
+sea-kindly
+sea king
+sea kittie
+sea lace
+sea ladder
+sea lamprey
+sea language
+sea lark
+sea laurel
+sea lavender
+sea law
+sea lawyer
+seal brown
+seal character
+seal coat
+seal cutter
+seal cutting
+seal cylinder
+sea league
+sea legs
+sea lemon
+sea lentil
+sea leopard
+sea letter
+sea lettuce
+sea level
+seal fisher
+seal fisherman
+seal fishery
+seal fishing
+seal hole
+sea light
+sea lily
+sea line
+sealing hole
+sealing nut
+sealing tape
+sealing wax
+sea lion
+sea lizard
+seal lock
+seal maker
+seal making
+sea loach
+seal oil
+sea-lost
+sea louse
+sea lovage
+sea-loving
+seal point
+seal press
+seal ring
+sea luce
+sea lungs
+sea lungwort
+Sealyham terrier
+sea lyme grass
+sea magpie
+sea-maid
+sea-maiden
+sea mallow
+seaman branch
+seaman gunner
+sea mantis
+sea marigold
+sea mat
+sea matweed
+seam blasting
+sea meadow
+sea membrane
+sea mew
+seam face
+sea mile
+sea milkwort
+seaming dies
+seaming lace
+sea mink
+sea mist
+seam lace
+sea monk
+sea monster
+sea moss
+sea moth
+sea mouse
+seam presser
+seam-rent
+seam-ripped
+seam-ript
+seam roller
+seam set
+seam stitch
+seam strip
+sea mud
+sea mugwort
+sea mulberry
+sea mule
+sea mullet
+seam weld
+seam welding
+seamy-sided
+sea necklace
+sea nettle
+sea oak
+sea oat
+sea officer
+sea onion
+sea ooze
+sea orach
+sea orange
+sea ore
+sea otter
+sea owl
+sea oxeye
+sea-packed
+sea palm
+sea panther
+sea park
+sea parrot
+sea parsley
+sea parsnip
+sea partridge
+sea pass
+sea pay
+sea pea
+sea peach
+sea pear
+sea peat
+sea pen
+sea perch
+sea perils
+sea pheasant
+sea pie
+sea piet
+sea pig
+sea pigeon
+sea pike
+sea pimpernel
+sea pincushion
+sea pine
+sea pink
+sea plain
+seaplane carrier
+sea plantain
+sea plume
+sea poacher
+sea poker
+sea poppy
+sea porcupine
+sea post
+sea post office
+sea potato
+sea-potent
+sea power
+sea preacher
+sea pumpkin
+sea purse
+sea purslane
+sea puss
+Sea quadrant
+sea quail
+sea-racing
+sea radish
+sea ragweed
+sea ragwort
+sea rat
+sea raven
+search coil
+search ephemeris
+search lamp
+searchlight lantern
+search room
+search warrant
+sea reach
+sea reed
+sea rim
+sea road
+sea robber
+sea robin
+sea rocket
+sea rod
+sea room
+sea rosemary
+sea-rounded
+sea rover
+sea-roving
+sea ruffle
+sea-run
+sea-running
+sea-sailing
+sea salmon
+sea salt
+sea sand
+sea sand grass
+sea sandpiper
+sea sand reed
+sea sandwort
+sea scallop
+sea-scented
+sea scorpion
+sea-scourged
+sea scout
+sea scouting
+sea sedge
+sea serpent
+sea service
+sea shell
+seashell pink
+seashore heliotrope
+seashore pea
+sea-shouldering
+sea shrub
+seaside alder
+seaside arrowgrass
+seaside aster
+seaside balsam
+seaside bean
+seaside bent
+seaside brome grass
+seaside crowfoot
+seaside daisy
+seaside finch
+seaside gerardia
+seaside goldenrod
+seaside grape
+seaside heliotrope
+seaside laurel
+seaside millet
+seaside morning-glory
+seaside oat
+seaside oxeye
+seaside pea
+seaside pimpernel
+seaside pine
+seaside plantain
+seaside plum
+seaside poppy
+seaside radish
+seaside sandwort
+seaside sparrow
+seaside spurge
+sea silk
+sea sled
+Sea sled
+sea slope
+sea slug
+sea snail
+sea snake
+sea snipe
+sea soldier
+season check
+season crack
+season ticket
+sea spear grass
+sea spider
+sea spleenwort
+sea squirt
+sea stack
+sea staff
+sea star
+sea starwort
+sea steps
+sea stickleback
+sea stores
+sea sulphurweed
+sea surgeon
+sea-surrounded
+sea swallow
+sea-swallowed
+sea swine
+sea tangle
+seat arm
+seat back
+seat bath
+seat board
+seat bone
+seat clip
+seat cover
+seat coverer
+seat designer
+sea term
+sea thief
+sea thong
+sea thrift
+sea time
+sea titling
+seat maker
+seat making
+seat-mile
+sea toad
+sea-torn
+sea tortoise
+sea-tossed
+sea-tost
+sea town
+seat owner
+sea-traveling
+sea tree
+sea trout
+sea trumpet
+sea turn
+sea turnip
+sea turtle
+sea twine
+seat worm
+sea unicorn
+sea urchin
+sea valve
+sea vampire
+sea wall
+sea-walled
+sea walnut
+sea wand
+sea-wandering
+sea-washed
+sea-water
+sea wax
+sea-weary
+seaweed fern
+seaweed glue
+seaweed green
+seaweed isinglass
+sea wheat
+sea whip
+sea whipcord
+sea whiplash
+sea whistle
+sea-wide
+sea widgeon
+sea-wildered
+sea willow
+sea withwind
+sea wolf
+sea woodcock
+sea worm
+sea wormwood
+sea wrack
+sea-wrecked
+Sebago salmon
+se-baptism
+se-baptist
+Sebastopol goose
+secale cornutum
+secondary school
+second base
+second-class
+second-cut
+second-cut file
+second-degree
+second-feet
+second-first
+second-floor
+second-foot
+second-growth
+second hand
+second-order reaction
+second person
+second-rate
+second-rateness
+second-rater
+second-sighted
+second-sightedness
+seconds pendulum
+second story
+second-touch
+secretaries-general
+secretary bird
+secretary bookcase
+secretary-general
+secretary-treasurer
+secret-false
+secreto-inhibitory
+secret order
+section bar
+section boss
+section crew
+section cutter
+section gang
+section hand
+section line
+section man
+section modulus
+section paper
+section plane
+sector disk
+sector gear
+sector wheel
+Security council
+sedan chair
+sedan landaulet
+sedan limousine
+sedative salt
+sedge bird
+sedge cane
+sedge family
+sedge fly
+sedge grass
+sedge hen
+sedge root
+sedge warbler
+sedge wren
+sedimentation test
+sediment bulb
+sedition-proof
+seduction-proof
+Seebeck effect
+see-bright
+seed ball
+seed beetle
+seed coat
+seed coral
+seed-corn
+seed-corn maggot
+seed cotton
+seed crown
+seed down
+seed feed cup
+seed fern
+seed fish
+seed hair
+seeding plow
+seed-lac
+seed leaf
+seed mesquite
+seed oyster
+seed pearl
+seed plant
+seed planter
+seed plat
+seed plate
+seed plot
+seed plow
+seed pod
+seed screener
+seed snipe
+seed stitch
+seed tick
+seed treatment
+seed tree
+seed vessel
+seed weevil
+see-er
+see-ho
+seeing glass
+seenie bean
+segmentation cavity
+segmentation nucleus
+segmentation sphere
+segment gear
+segment rack
+sego lily
+seine gang
+seizing truck
+seldom ever
+selection forest
+selection principle
+selection system
+selection value
+selective-head
+selective-head lathe
+selector switch
+selenium cell
+selenographic chart
+self-abandon
+self-abandoned
+self-abandoning
+self-abandoningly
+self-abandonment
+self-abased
+self-abasement
+self-abasing
+self-abdication
+self-abhorrence
+self-abhorring
+self-ability
+self-abnegation
+self-abnegatory
+self-abominating
+self-absorbed
+self-absorption
+self-abuse
+self-abuser
+self-accorded
+self-accusation
+self-accusative
+self-accusatory
+self-accused
+self-accuser
+self-accusing
+self-acknowledged
+self-acquaintance
+self-acquainter
+self-acquired
+self-acquisition
+self-acquitted
+self-acted
+self-acting
+self-action
+self-active
+self-activity
+self-actor
+self-actualizing
+self-adapting
+self-adaptive
+self-addiction
+self-addressed
+self-adhesion
+self-adjoint
+self-adjustable
+self-adjusting
+self-administer
+self-admiration
+self-admired
+self-admirer
+self-admission
+self-adorer
+self-adorned
+self-adornment
+self-adulation
+self-advanced
+self-advancement
+self-advantage
+self-advantageous
+self-advertise
+self-advertisement
+self-advertiser
+self-advertising
+self-affair
+self-affected
+self-affecting
+self-affectionate
+self-affirmation
+self-afflicting
+self-affliction
+self-afflictive
+self-affrighted
+self-agency
+self-aggrandized
+self-aggrandizement
+self-aggrandizing
+self-aid
+self-aim
+self-aligning
+self-amplifier
+self-amputation
+self-amusement
+self-analysis
+self-anatomy
+self-angry
+self-annealing
+self-annihilated
+self-annihilation
+self-answering
+self-antithesis
+self-apparent
+self-applauding
+self-applause
+self-applausive
+self-application
+self-applied
+self-applying
+self-appointed
+self-appointment
+self-appreciation
+self-approbation
+self-approval
+self-approved
+self-approver
+self-approving
+self-arched
+self-arching
+self-arising
+self-asserting
+self-assertingly
+self-assertion
+self-assertive
+self-assertively
+self-assertiveness
+self-assertory
+self-assumed
+self-assuming
+self-assumption
+self-assurance
+self-assured
+self-attachment
+self-attracting
+self-attraction
+self-attractive
+self-attribution
+self-auscultation
+self-authority
+self-authorized
+self-aware
+self-awareness
+self-bailing
+self-balanced
+self-banished
+self-banishment
+self-baptizer
+self-basting
+self-beautiful
+self-beauty
+self-bedizenment
+self-befooled
+self-begetter
+self-begotten
+self-beguiled
+self-being
+self-belief
+self-benefit
+self-besot
+self-betrayal
+self-betrayed
+self-betraying
+self-betrothed
+self-binder
+self-binding
+self-black
+self-blame
+self-blamed
+self-blessed
+self-blind
+self-blinded
+self-blinding
+self-blood
+self blue
+self-boarding
+self-boasted
+self-boasting
+self-boiled
+self-bored
+self-born
+self-buried
+self-burning
+self-canceled
+self-canting
+self-capacity
+self-captivity
+self-care
+self-castigation
+self-catalysis
+self-causation
+self-caused
+self-center
+self-centered
+self-centeredly
+self-centeredness
+self-centering
+self-centerment
+self-centralization
+self-centration
+self-chain
+self-changed
+self-changing
+self-charging
+self-charity
+self-chastisement
+self-cheatery
+self-checking
+self-chosen
+self-clamp
+self-cleaning
+self-clearance
+self-closed
+self-closing
+self-cocker
+self-cocking
+self-cognizably
+self-cognizance
+self-coherence
+self-coiling
+self-collected
+self-collectedness
+self-collection
+self-color
+self-colored
+self-combating
+self-combustion
+self-command
+self-commande
+self-commendation
+self-comment
+self-commissioned
+self-committal
+self-committing
+self-commune
+self-communed
+self-communicative
+self-communing
+self-communion
+self-comparison
+self-compassion
+self-compensation
+self-competition
+self-complacence
+self-complacency
+self-complacent
+self-complacential
+self-complacently
+self-complaisance
+self-completion
+self-composed
+self-composedly
+self-composedness
+self-comprehending
+self-comprised
+self-conceit
+self-conceited
+self-conceitedly
+self-conceitedness
+self-conceived
+self-concentered
+self-concentrated
+self-concentration
+self-concept
+self-concern
+self-concerned
+self-concerning
+self-concernment
+self-condemnable
+self-condemnant
+self-condemnation
+self-condemnatory
+self-condemned
+self-condemnedly
+self-condemning
+self-condemningly
+self-conditioning
+self-conduct
+self-confessed
+self-confidence
+self-confident
+self-confidently
+self-confiding
+self-confinement
+self-conflict
+self-conflicting
+self-conformance
+self-confounding
+self-confuted
+self-congratulating
+self-congratulation
+self-congratulatory
+self-conjugate
+self-conjugately
+self-conjugation
+self-conquest
+self-conscious
+self-consciously
+self-consciousness
+self-consequence
+self-consequent
+self-conservation
+self-conservative
+self-conserving
+self-consideration
+self-considering
+self-consistency
+self-consistent
+self-consistently
+self-consoling
+self-consolingly
+self-constituted
+self-consumed
+self-consuming
+self-consumption
+self-contained
+self-containedly
+self-containedness
+self-contained ornament
+self-containing
+self-containment
+self-contemner
+self-contempt
+self-content
+self-contented
+self-contentedly
+self-contentedness
+self-contentment
+self-contracting
+self-contraction
+self-contradicter
+self-contradicting
+self-contradiction
+self-contradictory
+self-control
+self-controlled
+self-controller
+self-controlling
+self-convened
+self-converse
+self-convicted
+self-conviction
+self-cooking
+self-cooled
+self-correction
+self-corrective
+self correlation
+self-correspondent
+self-corresponding
+self-corrupted
+self-coupler
+self-covered
+self-cozening
+self-created
+self-creating
+self-creation
+self-creative
+self-credit
+self-credulity
+self-criticism
+self-cruel
+self-cruelty
+self-culture
+self-culturist
+self-cure
+self-cutting
+self-damnation
+self-danger
+self-deaf
+self-debasement
+self-debate
+self-deceit
+self-deceitful
+self-deceitfulness
+self-deceived
+self-deceiver
+self-deceiving
+self-deception
+self-deceptious
+self-deceptive
+self-declared
+self-declaredly
+self-dedication
+self-defeated
+self-defeating
+self-defended
+self-defense
+self-defensive
+self-defensory
+self-definition
+self-deflation
+self-degradation
+self-deifying
+self-dejection
+self-delation
+self-delight
+self-deliverer
+self-delivery
+self-deluded
+self-deluder
+self-deluding
+self-delusion
+self-demagnetizing
+self-denial
+self-denied
+self-deniedly
+self-denier
+self-denying
+self-denyingly
+self-dependence
+self-dependency
+self-dependent
+self-dependently
+self-depending
+self-depraved
+self-depreciation
+self-depreciative
+self-deprived
+self-derived
+self-desertion
+self-deserving
+self-design
+self-designer
+self-desirable
+self-desire
+self-despair
+self-destroyed
+self-destroyer
+self-destroying
+self-destruction
+self-destructive
+self-destructively
+self-detaching
+self-determination
+self-determined
+self-determining
+self-developing
+self-development
+self-devised
+self-devoted
+self-devotedly
+self-devotedness
+self-devotement
+self-devoting
+self-devotion
+self-devotional
+self-devouring
+self-differentiating
+self-differentiation
+self-diffidence
+self-diffident
+self-diffusion
+self-diffusive
+self-digestion
+self-dilation
+self-directed
+self-directing
+self-direction
+self-directive
+self-director
+self-diremption
+self-disapprobation
+self-disapproval
+self discharge
+self-discipline
+self-disciplined
+self-disclosed
+self-disclosing
+self-disclosure
+self-discoloration
+self-discontented
+self-discovered
+self-discovery
+self-discrepant
+self-discrimination
+self-disdain
+self-disengaging
+self-disgrace
+self-disgracing
+self-disgust
+self-dislike
+self-disliked
+self-disparagement
+self-dispatch
+self-display
+self-displeased
+self-displicency
+self-disposal
+self-dispraise
+self-disquieting
+self-dissatisfaction
+self-dissatisfied
+self-dissecting
+self-disserving
+self-dissociation
+self-dissolution
+self-dissolved
+self-distinguishing
+self-distrust
+self-distrustful
+self-distrusting
+self-disunity
+self-divided
+self-division
+self-doctrine
+self-dominance
+self-dominion
+self-donation
+self-doomed
+self-dosage
+self-doubt
+self-drawing
+self-drinking
+self-drive
+self-driven
+self-dropping
+self-drown
+self-dual
+self-dualistic
+self-dubbed
+self-dumping
+self-ease
+self-easing
+self-eating
+self-educated
+self-education
+self-effacement
+self-effacing
+self-effacingly
+self-effacingness
+self-effacive
+self-effort
+self-elaborated
+self-elation
+self-elect
+self-elected
+self-election
+self-elective
+self-emitted
+self-emolument
+self-employer
+self-employment
+self-emptiness
+self-emptying
+self-enamored
+self-enclosed
+self-endeared
+self-energizing brake
+self-energy
+self-engrossed
+self-engrossment
+self-enjoyment
+self-enriching
+self-entertainment
+self-entity
+self-erected
+self-escape
+self-essence
+self-essentiated
+self-esteem
+self-estimate
+self-estimation
+self-estrangement
+self-eternity
+self-evacuation
+self-evidence
+self-evidencing
+self-evidencingly
+self-evident
+self-evidential
+self-evidentism
+self-evidently
+self-evidentness
+self-evolution
+self-evolved
+self-evolving
+self-exaltation
+self-exaltative
+self-exalted
+self-exalting
+self-examinant
+self-examination
+self-examiner
+self-examining
+self-example
+self-excellency
+self-excitation
+self-excite
+self-exciter
+self-exciting
+self-exclusion
+self-exculpation
+self-excuse
+self-excused
+self-excusing
+self-executing
+self-exhibited
+self-exhibition
+self-exile
+self-exiled
+self-exist
+self-existence
+self-existent
+self-expansion
+self-expatriation
+self-experience
+self-experienced
+self-explained
+self-explaining
+self-explanation
+self-explanatory
+self-explication
+self-exploiting
+self-exposed
+self-exposure
+self-expression
+self-expressive
+self-extermination
+self-extolled
+self-exultation
+self-exulting
+self-faced
+self-fame
+self-farming
+self-fearing
+self-fed
+self-feeder
+self-feeding
+self-feeling
+self-felicitation
+self-felony
+self-fermentation
+self-fertile
+self-fertility
+self-fertilization
+self-fertilize
+self-fertilizer
+self-figure
+self-figured
+self-filler
+self-filling
+self-fitting
+self-flagellation
+self-flattered
+self-flatterer
+self-flattering
+self-flattery
+self-flowing
+self-fluxing
+self-focusing
+self-folding
+self-fondest
+self-fondness
+self-forbidden
+self-forgetful
+self-forgetfully
+self-forgetfulness
+self-forgetting
+self-forgettingly
+self-formation
+self-formed
+self-forsaken
+self-fountain
+self-friction
+self-frighted
+self-fruition
+self-fulfillment
+self-furnished
+self-furring
+self-gaging
+self-gain
+self-gathered
+self-gauging
+self-generated
+self-generation
+self-generative
+self-given
+self-giving
+self-glazed
+self-glorification
+self-glorious
+self-glory
+self-glorying
+self-good
+self-gotten
+self-governed
+self-governing
+self-governing dominion
+self-government
+self-gracious
+self-gratification
+self-gratulating
+self-gratulatingly
+self-gratulation
+self-gratulatory
+self-guard
+self-guarded
+self-guidance
+self-guiltiness
+self-guiltless
+self-guilty
+self-gullery
+self-hammered
+self-hang
+self-hardened
+self-hardening
+self-harming
+self-healing
+self-heating
+self-help
+self-helpful
+self-helpfulness
+self-helping
+self-helpless
+self-heterodyne
+self-hid
+self-hidden
+self-hitting
+self-holiness
+self-homicide
+self-honored
+self-hope
+self-humbling
+self-humiliation
+self-hypnosis
+self-hypnotism
+self-hypnotization
+self-idea
+self-identical
+self-identity
+self-idolater
+self-idolatry
+self-idolized
+self-idolizing
+self-ignition
+self-ignorance
+self-ignorant
+self-ill
+self-illumined
+self-imitation
+self-immolating
+self-immolation
+self-immurement
+self-immuring
+self-impairable
+self-impartation
+self-imparting
+self-importance
+self-important
+self-importantly
+self-imposed
+self-imposture
+self-impotent
+self-impregnated
+self-impregnating
+self-impregnation
+self-impregnator
+self-improvable
+self-improvement
+self-improver
+self-improving
+self-impulsion
+self-inclosed
+self-inclusive
+self-inconsistency
+self-inconsistent
+self incrimination
+self-incurred
+self-indignation
+self-induced
+self-inductance
+self-induction
+self-inductive
+self-indulged
+self-indulgence
+self-indulgent
+self-indulgently
+self-indulger
+self-indulging
+self-infection
+self-inflation
+self-inflicted
+self-infliction
+self-initiative
+self-injurious
+self-injury
+self-inker
+self-inking
+self-inoculation
+self-insignificance
+self-inspection
+self-instructed
+self-instruction
+self-instructor
+self-insufficiency
+self-insurance
+self-insured
+self-insurer
+self-integration
+self-intelligible
+self-intensifying
+self-intent
+self-interest
+self-interested
+self-interestedness
+self-interpretative
+self-interpreting
+self-interrogation
+self-interrupting
+self-intersecting
+self-intoxication
+self-introduction
+self-intruder
+self-invented
+self-invention
+self-invited
+self-involution
+self-involved
+self-ionization
+self-irony
+self-irrecoverable
+self-irrecoverableness
+self-irreformable
+self-issuing
+self-jealous
+self-jealousing
+self-jealousy
+self-judged
+self-judging
+self-judgment
+self-justification
+self-justified
+self-justifier
+self-justifying
+self-killed
+self-killer
+self-killing
+self-kindled
+self-kindness
+self-knowing
+self-knowledge
+self-known
+self-lacerating
+self-lashing
+self-laudation
+self-laudatory
+self-learn
+self-left
+self-leveler
+self-leveling
+self-levied
+self-levitation
+self-life
+self-light
+self-lighting
+self-liking
+self-limitation
+self-limited
+self-limiting
+self-liquidating
+self-liquidating loan
+self-lived
+self-loading
+self-loading dam
+self-loathing
+self-locating
+self-locking
+self-lost
+self-love
+self-lover
+self-loving
+self-lubricating
+self-luminescence
+self-luminosity
+self-luminous
+self-maceration
+self-mad
+self-made
+self-mailer
+self-mailing
+self-maimed
+self-maintenance
+self-making
+self-manifestation
+self-mapped
+self-martyrdom
+self-mastered
+self-mastering
+self-mastery
+self-mate
+self-matured
+self-measurement
+self-mediating
+self-merit
+self-minded
+self-mistrust
+self-misused
+self-mortification
+self-mortified
+self-motion
+self-motive
+self-moved
+self-movement
+self-mover
+self-moving
+self-multiplied
+self-multiplying
+self-murder
+self-murdered
+self-murderer
+self-mutilation
+self-named
+self-naughting
+self-neglect
+self-neglectful
+self-neglecting
+self-nourishment
+self-objectification
+self-oblivion
+self-oblivious
+self-observation
+self-occupation
+self-occupied
+self-offense
+self-offered
+self-offering
+self-oiling
+self-opened
+self-opener
+self-opening
+self-operative
+self-operator
+self-opiniated
+self-opiniatedly
+self-opiniative
+self-opiniativeness
+self-opinion
+self-opinionated
+self-opinionatedly
+self-opinionatedness
+self-opinionative
+self-opinionatively
+self-opinionativeness
+self-opinioned
+self-opinionedness
+self-opposed
+self-opposition
+self-oppressor
+self-ordainer
+self-originated
+self-originating
+self-origination
+self-ostentation
+self-outlaw
+self-outlawed
+self-ownership
+self-oxidation
+self-paid
+self-painter
+self-pampered
+self-pampering
+self-panegyric
+self-parasitism
+self-parricide
+self-partiality
+self-paying
+self-peace
+self-penetrability
+self-penetration
+self-perceiving
+self-perception
+self-perceptive
+self-perfect
+self-perfectibility
+self-perfecting
+self-perfectionment
+self-performed
+self-permission
+self-perpetuated
+self-perpetuating
+self-perpetuation
+self-perplexed
+self-persuasion
+self-physicking
+self-pictured
+self-pious
+self-piquer
+self-pitiful
+self-pitifulness
+self-pity
+self-pitying
+self-pityingly
+self-planted
+self-player
+self-playing
+self-pleached
+self-pleased
+self-pleaser
+self-pleasing
+self-pointed
+self-poise
+self-poised
+self-poisedness
+self-poisoner
+self-polar triangle
+self-policing
+self-policy
+self-politician
+self-pollinate
+self-pollinated
+self-pollination
+self-polluter
+self-pollution
+self-portrait
+self-portraitist
+self-posed
+self-posited
+self-positing
+self-possessed
+self-possessedly
+self-possessing
+self-possession
+self-posting
+self-postponement
+self-potence
+self-potential method
+self-praise
+self-praising
+self-precipitation
+self-preference
+self-preoccupation
+self-preparation
+self-prescribed
+self-presentation
+self-preservation
+self-preservative
+self-preserving
+self-preservingly
+self-pretended
+self-pride
+self-primer
+self-priming
+self-prizing
+self-proclaimant
+self-proclaimed
+self-procured
+self-procuring
+self-proditoriously
+self-produced
+self-professed
+self-profit
+self-projection
+self-pronouncing
+self-propagating
+self-propelled
+self-propeller
+self-propelling
+self-propulsion
+self-protecting
+self-protection
+self-protective
+self-proving
+self-provision
+self-pruning
+self psychologist
+self psychology
+self-puffery
+self-punished
+self-punisher
+self-punishing
+self-punishment
+self-punitive
+self-purifying
+self-purity
+self-question
+self-questioned
+self-questioning
+self-quotation
+self-raised
+self-raising
+self-rake
+self-rating
+self-reading
+self-realization
+self-realizing
+self-reciprocal
+self-reckoning
+self-recollection
+self-recollective
+self-reconstruction
+self-recording
+self-reduction
+self-reduplication
+self-refining
+self-reflection
+self-reflective
+self-reformation
+self-refuting
+self-regard
+self-regardant
+self-regarding
+self-regardless
+self-regardlessly
+self-regardlessness
+self-registering
+self-registration
+self-regulated
+self-regulating
+self-regulation
+self-regulative
+self-regulatory
+self-relation
+self-reliance
+self-reliantly
+self-relish
+self-relying
+self-renounced
+self-renouncement
+self-renouncing
+self-renunciation
+self-renunciatory
+self-repeating
+self-repellency
+self-repellent
+self-repelling
+self-repetition
+self-repose
+self-representation
+self-repressed
+self-repressing
+self-repression
+self-reproach
+self-reproached
+self-reproachful
+self-reproaching
+self-reproachingly
+self-reproachingness
+self-reproducing
+self-reproof
+self-reproval
+self-reproved
+self-reproving
+self-reprovingly
+self-repugnance
+self-repugnancy
+self-repugnant
+self-repulsive
+self-reputation
+self-rescuer
+self-resentment
+self-resigned
+self-resourceful
+self-resourcefulness
+self-respect
+self-respectful
+self-respectfulness
+self-respecting
+self-resplendent
+self-responsibility
+self-restoring
+self-restrained
+self-restraining
+self-restraint
+self-restriction
+self-retired
+self-revealed
+self-revealing
+self-revealment
+self-revelation
+self-revelative
+self-revelatory
+self-reverence
+self-reverent
+self-reward
+self-rewarded
+self-rewarding
+self-right
+self-righteous
+self-righteously
+self-righteousness
+self-righter
+self-righting
+self-rigorous
+self-rising
+self-rolled
+self-roofed
+self-ruin
+self-ruined
+self-rule
+self-sacrifice
+self-sacrificer
+self-sacrificial
+self-sacrificing
+self-sacrificingly
+self-sacrificingness
+self-safety
+self-satirist
+self-satisfaction
+self-satisfied
+self-satisfying
+self-satisfyingly
+self-scanned
+self-schooled
+self-schooling
+self-science
+self-scorn
+self-scourging
+self-scrutinizing
+self-scrutiny
+self-sealer
+self-sealing
+self-searching
+self-secure
+self-security
+self-sedimented
+self-seeker
+self-seeking
+self-seekingness
+self-sent
+self-serve
+self-service
+self-serving
+self-set
+self-severe
+self-shadowing
+self-shelter
+self-shine
+self-shining
+self-shooter
+self-shot
+self-significance
+self-similar
+self-sinking
+self-slain
+self-slaughter
+self-slaughtered
+self-slayer
+self-society
+self-solicitude
+self-soothing
+self-sophistication
+self-sought
+self-sovereignty
+self-sow
+self-sowed
+self-sown
+self-spacing
+self-speech
+self-spitted
+self-sprung
+self-stability
+self-starter
+self-starting
+self-steered
+self-sterile
+self-sterility
+self-stimulated
+self-stowing
+self-strength
+self-stripper
+self-strong
+self-stuck
+self-study
+self-styled
+self-subdual
+self-subdued
+self-subjection
+self-subordination
+self-subsidation
+self-subsistence
+self-subsistency
+self-subsistent
+self-subsisting
+self-substantial
+self-subversive
+self-sufficed
+self-sufficience
+self-sufficiency
+self-sufficient
+self-sufficientness
+self-sufficing
+self-sufficingly
+self-sufficingness
+self-suggested
+self-suggester
+self-suggestion
+self-suggestive
+self-suppletive
+self-support
+self-supported
+self-supportedness
+self-supporting
+self-supportingly
+self-supportless
+self-suppression
+self-suppressive
+self-sure
+self-surrender
+self-surrendering
+self-survey
+self-surviving
+self-survivor
+self-suspended
+self-suspicion
+self-suspicious
+self-sustained
+self-sustaining
+self-sustainingly
+self-sustainment
+self-sustenance
+self-sustentation
+self-sway
+self-tapping
+self-taught
+self-taxation
+self-teacher
+self-tempted
+self-tenderness
+self-terminating
+self-terminative
+self-testing
+self-thinking
+self-thinning
+self-thought
+self-threading
+self-tightening
+self-tipping
+self-tire
+self-tolerantly
+self-toning
+self-torment
+self-tormented
+self-tormenter
+self-tormenting
+self-tormentor
+self-torture
+self-tortured
+self-torturing
+self-transformation
+self-treated
+self-treatment
+self-trial
+self-triturating
+self-troubling
+self-trust
+self-trusting
+self-tuition
+self-uncertain
+self-unconscious
+self-understand
+self-understanding
+self-undoing
+self-uniform
+self-union
+self-unity
+self-unloading
+self-unscabbarded
+self-unveiling
+self-unworthiness
+self-upbraiding
+self-usurp
+self-valuation
+self-valuing
+self-variance
+self-vaunted
+self-vaunting
+self-vendition
+self-ventilated
+self-vexation
+self-view
+self-vindicating
+self-vindication
+self-violence
+self-vivacious
+self-vivisector
+self-vulcanizing
+self-want
+self-wardness
+self-warranting
+self-watchfulness
+self-weariness
+self-weary
+self-weight
+self-weighted
+self-whipper
+self-whipping
+self-whole
+self-widowered
+self-will
+self-willed
+self-willedly
+self-willedness
+self-winding
+self-wine
+self-wisdom
+self-wise
+self-witness
+self-working
+self-worn
+self-worship
+self-worshiper
+self-worshiping
+self-worth
+self-worthiness
+self-wounding
+self-written
+self-wrong
+self-wrongly
+self-wrought
+Selkirk bannock
+seller four
+selling account
+selling agent
+selling-plater
+selling point
+selling price
+selling race
+Semal laut
+semantic tone
+semaphore plant
+semaphore telegraph
+semen cinae
+semen contra
+semester hour
+semiair-cooled
+Semi-apollinarism
+Semi-arian
+Semi-arianism
+semi-armor-piercing
+Semi-augustinian
+Semi-augustinianism
+Semi-bantu
+Semi-belgian
+Semi-bessemer
+Semi-bohemian
+Semi-bolsheviki
+semibreve rest
+Semi-christian
+Semi-christianized
+semicolon butterfly
+semico-operative
+Semi-darwinian
+semi-diesel
+Semi-dutch
+Semi-empire
+Semi-euclidean
+Semi-frenchified
+Semi-gnostic
+Semi-gothic
+semi-idiocy
+semi-idiotic
+semi-idleness
+semi-illiterate
+semi-imbricated
+semi-immersed
+semi-incandescent
+semi-independence
+semi-independent
+semi-independently
+semi-indirect
+semi-indurated
+semi-inertness
+semi-infidel
+semi-infinite
+semi-inhibition
+semi-insoluble
+semi-insular
+semi-intelligent
+semi-intercostal
+semi-internal
+semi-interosseous
+semi-intoxication
+semi-intrados
+semi-invalid
+semi-inverse
+semi-ironical
+Semi-jesuit
+Semi-judaizer
+semilatus rectum
+Semi-manichaeanism
+seminal duct
+Semi-norman
+Semi-patriot
+Semi-pelagian
+Semi-pelagianism
+Semi-pythagorean
+Semi-romanism
+Semi-romanized
+Semi-russian
+Semi-sadducee
+Semi-sadduceeism
+Semi-sadducism
+Semi-saxon
+Semi-slav
+Semi-southern
+Semi-tatar
+Semitico-hamitic
+Semito-hamite
+Semito-hamitic
+Semi-tory
+Semi-tychonic
+semiwater gas
+Semi-zionism
+Semo sancus
+senate house
+senator-elect
+senatorial courtesy
+sending set
+sending station
+send-off
+send-out
+senega root
+senega snakeroot
+seneka root
+seneka snakeroot
+sengreen saxifrage
+senility necrosis
+senior checker
+senior high school
+senna family
+senna tree
+sensation-proof
+sense-bereaving
+sense-bound
+sense-confounding
+sense-confusing
+sense datum
+sense-distracted
+sense faculty
+sense finder
+sense form
+sense group
+sense impression
+sense organ
+sense perception
+sense-ravishing
+sense stress
+sense survival
+sensitive fern
+sensitol green
+Sensitol green
+sensitometric curve
+sensum theory
+sensus communis
+Sen-tamil
+sentence accent
+sentence adverb
+sentence balance
+sentence building
+sentence making
+sentence method
+sentence monger
+sentence pattern
+sentence stress
+sentence structure
+sentence tone
+sentimental comedy
+sentiment-proof
+sentinel crab
+sentry board
+sentry box
+sentry-fashion
+sentry go
+separating funnel
+separating power
+separation allowance
+separation center
+separation layer
+separation theorem
+separatory funnel
+sepia-colored
+sepia-eyed
+sepia paper
+sepia-tinted
+septal cartilage
+septal neck
+sept chord
+September elm
+septifragal dehiscence
+sequence switch
+sequential system
+sequoia pitch moth
+Serb-croat-slovene
+Serbo-bulgarian
+Serbo-croat
+Serbo-croatian
+sergeant armorer
+Sergeant baker
+sergeant bugler
+sergeant clerk
+sergeant cook
+sergeant drummer
+sergeant fish
+sergeant footman
+sergeant instructor
+sergeant major
+sergeant-majorship
+sergeant painter
+sergeant porter
+sergeant saddler
+sergeant schoolmaster
+sergeants major
+sergeant tailor
+sergeant trumpet
+sergeant trumpeter
+serial right
+sericite gneiss
+sericite schist
+series dynamo
+series motor
+series parallel
+series resonance
+series spectra
+series turn
+series winding
+series-wound
+serin finch
+serious-minded
+serious-mindedly
+serious-mindedness
+sermon bell
+serous fluid
+serous gland
+serous membrane
+Serpent bearer
+serpent cucumber
+serpent cult
+serpent eagle
+serpent eater
+serpent fern
+serpent fish
+serpent-god
+serpent-goddess
+serpent gourd
+serpent grass
+serpentine green
+serpent melon
+serpent moss
+serpent radish
+serpent-shaped
+serpent star
+serpent stone
+Serpollet type
+serrana hispana
+serran imperial
+serrate-ciliate
+serrate-dentate
+serum albumin
+serum anaphylaxis
+serum disease
+serum globulin
+serum hepatitis
+serum jaundice
+serum sickness
+serum therapy
+servant girl
+serve-out
+service ace
+service battery
+service book
+service box
+service brake
+service buzzer
+service call
+service cap
+service ceiling
+service charge
+service clasp
+service club
+service company
+service court
+service door
+service engineer
+service entrance
+service flag
+service flat
+service hat
+service line
+service magazine
+service medal
+service pension
+service pipe
+service plate
+service side
+service side line
+service squadron
+service stair
+service station
+service stripe
+service switch
+service tree
+service troop
+service uniform
+service wall
+serving knife
+serving mallet
+serving pantry
+serving stuff
+serving table
+servo control
+Servo-croat
+Servo-croatian
+sesame grass
+sesame oil
+sessile-eyed
+sessile-flowered
+sessile-fruited
+sessile-leaved
+set-aside
+set bar
+set book
+set chisel
+set-fair
+set gauge
+set gun
+set hammer
+set-hands
+set hook
+set-in
+set iron
+set nut
+setoff sheet
+set piece
+set pin
+set point
+set pot
+set square
+set-stitched
+sett beater
+settee bed
+set temper
+setter-forth
+setter-in
+setter-on
+setter-out
+setter-to
+setter-up
+setting block
+setting board
+setting circle
+setting coat
+setting day
+setting gauge
+setting hen
+setting node
+setting-out
+setting point
+setting pole
+setting punch
+setting rule
+setting stake
+setting stick
+setting-to
+setting-up
+setting-up exercise
+settle bed
+settle-bench
+settle-brain
+settle-down
+settled production
+settled soap
+settlement day
+settlement house
+settlement lease
+settlement sheet
+settling clerk
+settling day
+settling price
+set-to
+set tub
+set up
+set-upness
+seven-banded
+seven-branched
+seven-caped
+seven-channeled
+seven-chorded
+seven-cornered
+seven-day
+seven-eyed
+seven-eyes
+seven-figure
+seven-foot
+seven-formed
+seven-gated
+seven-gilled
+seven-hand
+seven-headed
+seven-hilled
+seven-hilly
+seven-holes
+seven-horned
+seven-inch
+seven-league
+seven-leaved
+seven-line
+seven-masted
+seven-mouthed
+seven-nerved
+seven-ounce
+seven-part
+seven-part time
+seven-piled
+seven-ply
+seven-point
+seven-point circle
+seven-poled
+seven-pronged
+seven-quired
+seven-sealed
+seven-shilling
+seven-shooter
+seven-sided
+seven-spotted
+seven-syllabled
+seventeen-hundreds
+seventeen-year
+seventeen-year locust
+seventh chord
+seventh day
+seven-thirties
+seven-thirty
+seventh nerve
+seven-thorned
+seven-tined
+seven-toned
+seven-twined
+seven-twisted
+seventy-day
+seventy-dollar
+seventy-eight
+seventy-eighth
+seventy-fifth
+seventy-first
+seventy-five
+seventy-foot
+seventy-footer
+seventy-four
+seventy-fourth
+seventy-horse
+seventy-mile
+seventy-nine
+seventy-ninth
+seventy-odd
+seventy-one
+seventy-second
+seventy-seven
+seventy-seventh
+seventy-six
+seventy-sixth
+seventy-third
+seventy-three
+seventy-ton
+seventy-two
+seventy-year
+seven-up
+seven-year
+several-celled
+several-flowered
+several-lobed
+several-nerved
+several-ribbed
+sewage disposal
+sewee bean
+sewer brick
+sewer builder
+sewer pipe
+sewer rat
+sewing awl
+sewing basket
+sewing bench
+sewing bird
+sewing board
+sewing cabinet
+sewing circle
+sewing class
+sewing cotton
+sewing machine
+sewing needle
+sewing press
+sewing school
+sewing silk
+sewing society
+sewing table
+sewing teacher
+sewing thread
+sewing tray
+sewing twine
+sewing wire
+sewing woman
+sewing work
+sexagesimal scale
+sexagesimal system
+Sexagesima sunday
+sex appeal
+sex cell
+sex chromosome
+sex hormone
+sex hygiene
+sex-intergrade
+sex-limited
+sex-linkage
+sex-linked
+sex pervert
+sexton beetle
+sextuple press
+shabby-genteel
+shabby-gentility
+shab-rag
+shack bait
+shackle bar
+shackle bolt
+shackle insulator
+shackle joint
+shad-bellied
+shad-blow
+shade-bearing
+shade-enduring
+shade-giving
+shade-grown
+shade-loving
+shade pine
+shade plant
+shade-seeking
+shad fly
+shad frog
+shading coil
+shadow band
+shadow bird
+shadow box
+shadow compass
+shadow cone
+shadow dance
+shadow fight
+shadow figure
+shadow line
+shadow nucleus
+shadow pantomime
+shadow play
+shadow skirt
+shadow stitch
+shadow stop
+shad scale
+shad spirit
+shad tree
+shaft alley
+shaft efficiency
+shaft eye
+shaft feather
+shaftfoot man
+shaft furnace
+shaft governor
+shaft grave tomb
+shaft head
+shaft horsepower
+shaft house
+shafting lathe
+shaft key
+shaft-rubber
+shaft sinker
+shaft-straightener
+shaft tackle
+shaft tunnel
+shagbark hickory
+shaggy-barked
+shaggy-bearded
+shaggy-bodied
+shaggy-coated
+shaggy-dog story
+shaggy-fleeced
+shaggy-footed
+shaggy-haired
+shaggy-leaved
+shaggy-mane
+shaggy-maned
+shaggy-mane mushroom
+shag-haired
+shake-bag
+shakebag club
+shakebag match
+shake bolt
+shake-cabin
+shake culture
+shakedown cruise
+shake-hands
+Shaker flannel
+shake-up
+shaking palsy
+shaking pudding
+shaking table
+Shalako dancer
+shale green
+shale naphtha
+shale oil
+shale spirit
+shallow-draft
+shallow-footed
+shallow-forded
+shallow-headed
+shallow-hulled
+shallow-minded
+shallow-read
+shallow-rooted
+shallow-rooting
+shallow-sea
+shallow-searching
+shallow-sighted
+shallow-soiled
+shallow-thoughted
+shallow-toothed
+shallow-waisted
+shallow-water
+shallow-witted
+shalom alekhem
+shamalo grass
+shama millet
+shame brier
+shame-burnt
+shame child
+shame-crushed
+shame-eaten
+shame-shrunk
+shame-stricken
+shame-swollen
+shame vine
+sham object
+shamrock green
+shamrock pea
+sham subject
+Shang-ti
+shank bone
+shank cutter
+shank grass
+shank mill
+shank painter
+shanty boat
+shanty-boater
+shanty boy
+shape-knife
+shape shifting
+shape target
+shaping dies
+shaping planer
+shard beetle
+shard-born
+shard-borne
+share beam
+share crop
+share head
+share-out
+share register
+share tenant
+shark barrow
+shark-liver
+shark-liver oil
+shark moth
+shark oil
+shark pilot
+shark ray
+shark sucker
+sharp-angled
+sharp-ankled
+sharp-back
+sharp-backed
+sharp-back shark
+sharp-beaked
+sharp-bellied
+sharp-billed
+sharp-biting
+sharp-bottomed
+sharp-breasted
+sharp cash
+sharp cedar
+sharp-clawed
+sharp-cornered
+sharp-cut
+sharp-cutting
+sharp dock
+sharp-eared
+sharp-edged
+sharp-elbowed
+sharp-eyed
+sharp-eyes
+sharp-faced
+sharp-fanged
+sharp-featured
+sharp-flavored
+sharp-freeze
+sharp-freezer
+sharp-fruited
+sharp-gritted
+sharp-ground
+sharp-headed
+sharp-heeled
+sharp-horned
+sharp iron
+sharp-keeled
+sharp-leaved
+sharp-looking
+sharp-minded
+sharp mixture
+sharp-nebbed
+sharp-nosed
+sharp-nosedly
+sharp-nosedness
+sharp-nosed shark
+sharp-odored
+sharp-petaled
+sharp-piercing
+sharp-piled
+sharp-pointed
+sharp-quilled
+sharp-ridged
+sharp sand
+sharp-set
+sharp-setness
+sharp-shinned
+sharp-sighted
+sharp-sightedly
+sharp-sightedness
+sharp-smelling
+sharp-smitten
+sharp-snouted
+sharp-staked
+sharp-staring
+sharp-tailed
+sharp-tasted
+sharp-tasting
+sharp-tempered
+sharp-toed
+sharp-tongued
+sharp-toothed
+sharp-topped
+sharp-visaged
+sharp-whetted
+sharp-winged
+sharp-witted
+sharp-wittedly
+sharp-wittedness
+shave grass
+shave hook
+shave rush
+shaving basin
+shaving board
+shaving box
+shaving brush
+shaving case
+shaving cream
+shaving cup
+shaving dies
+shaving glass
+shaving horse
+shaving mill
+shaving mirror
+shaving mug
+shaving paper
+shaving paste
+shaving powder
+shaving set
+shaving soap
+shaving stand
+shaving stick
+shaving strop
+shaving towel
+shaving water
+shawl collar
+shawl goat
+shawl loom
+shawl material
+shawl pattern
+shawl strap
+shawl waistcoat
+Shawver truss
+shea butter
+she-actor
+she-adventurer
+sheaf arrow
+sheaf catalogue
+she all
+shea-nut
+shea-nut oil
+she-ape
+she-apostle
+shear angle
+shear boom
+shear hulk
+shearing deformation
+shearing dies
+shearing force
+shearing machine
+shearing plane
+shearing punch
+shearing stress
+shearing tool
+shear legs
+shear modulus
+shear pin
+shear plane
+shear skid
+shear steel
+shear strain
+shear stress
+shear structure
+shear zone
+she-ass
+sheath gown
+sheathing board
+sheathing copper
+sheathing felt
+sheathing lead
+sheathing lumber
+sheathing nail
+sheathing paper
+sheath knife
+sheath moth
+sheath-winged
+shea tree
+she-baker
+she-balsam
+she-bear
+she-beech
+she-captain
+she-chattel
+she-costermonger
+she-cousin
+shed-builder ant
+shed burn
+she-demon
+she-devil
+she-dragon
+shed roof
+sheeling hill
+sheep bar
+sheep barn
+sheep bell
+sheep bot
+sheep botfly
+sheep boy
+sheep breeder
+sheep breeding
+sheep bur
+sheep clipper
+sheep clipping
+sheep-dip
+sheep dipper
+sheep dipping
+sheep dog
+sheep fair
+sheep farm
+sheep farmer
+sheep farming
+sheep fescue grass
+sheep flake
+sheep fly
+sheep gadfly
+sheep-grazing
+sheep hound
+sheep-hued
+sheep husbandry
+sheep killer
+sheep killing
+sheep-kneed
+sheep land
+sheep laurel
+sheep-lice
+sheep louse
+sheep measles
+sheep oat grass
+sheep owner
+sheep owning
+sheep parsley
+sheep pelt
+sheep pest
+sheep plant
+sheep poison
+sheep pox
+sheep rack
+sheep raiser
+sheep raising
+sheep range
+sheep reeve
+sheep-root
+sheep rot
+sheep run
+sheep scab
+sheep scabious
+sheepshead minnow
+sheepshead porgy
+sheep shears
+sheep-sick
+sheep silver
+sheep sorrel
+sheep-spirited
+sheep station
+sheep tansy
+sheep tick
+sheep wash
+sheep washer
+sheep-white
+sheep-witted
+sheer batten
+sheer boom
+sheer-built
+sheer draft
+sheer drawing
+sheer hook
+sheer leg
+sheer legs
+sheer line
+sheer-off
+sheer plan
+sheer pole
+sheer ratline
+sheer strake
+sheet anchor
+sheet bend
+sheet-block
+sheet bundler
+sheet cable
+sheet chain
+sheet erosion
+sheeting pile
+sheet iron
+sheet lightning
+sheet metal
+sheet mill
+sheet mold
+sheet pavement
+sheet pile
+sheet piling
+sheet steel
+sheet tin
+sheet watermark
+sheet writer
+she-fish
+she-foal
+she-fool
+she-fox
+she-friend
+she-goat
+she-god
+She-greek
+she-gypsy
+Sheikh ul islam
+she-ironbark
+she-kind
+she-king
+shelf catalogue
+shelf fungus
+shelf ice
+shelf ladder
+shelf list
+shelf plate
+shelf warmer
+she-lion
+shell auger
+shell bark
+shell bean
+shell bit
+shell boiler
+shell button
+shell chuck
+shell couching
+shell crest
+shell dove
+shell down
+shell drill
+shell edging
+shell eye
+shell feed
+shell fire
+shell game
+shell gland
+shell gray
+shell heap
+shell hole
+shell hooks
+shell ibis
+shell ice
+shell jacket
+shell-leaf
+shell-less
+shell-like
+shell limestone
+shell marble
+shell money
+shell mound
+shell parakeet
+shell pear
+shell pink
+shell plating
+shell pump
+shell quail
+shell reamer
+shell reducer
+shell road
+shell room
+shell ruching
+shell sac
+shell-shaped
+shell-shock
+shell snail
+shell socket
+shell stitch
+shell strake
+shell transformer
+shell turtle
+shell-worker
+shelter belt
+shelter deck
+shelter-deck vessel
+shelter half
+shelter pit
+shelter tent
+shelter trench
+shelterwood method
+she-malady
+she-monster
+she-negro
+shenk beer
+she-oak
+she-page
+she-panther
+Shepard king
+she-peace
+shepherd god
+shepherd spider
+shepherds-staff
+she-pig
+she-pine
+she pitch pine
+she-poet
+she-poetry
+she-preacher
+she-priest
+sherbet powder
+shere khan
+she-relative
+sheriff depute
+sheriff-pink
+sheriff substitute
+sherry brown
+sherry cobbler
+she-saint
+she-salmon
+she-school
+she-scoundrel
+she-society
+she-sparrow
+she-sun
+she teak
+she-thief
+Shetland lace
+Shetland pony
+Shetland sheep dog
+Shetland wool
+she-tongue
+she-villain
+she-whale
+she-witch
+she-wolf
+she-woman
+shick-shack
+shield arm
+shield-back
+shield-bearer
+shield-bearing
+shield-breaking
+shield bud
+shield budding
+shield cell
+shield fern
+shield fungus
+shield-headed
+shield-leaved
+shield-maiden
+shield roots
+shield-scale fungus
+shield-shaped
+shield wall
+shiffle-shuffle
+shift bid
+shift boss
+shifter fork
+shifting pedal
+shift joint
+shift key
+shift lock
+shift marriage
+shifty-eyed
+shilling shocker
+shilly-shally
+shilly-shallyer
+shim plow
+shim-sham
+Shinarump conglomerate
+shiner-up
+shingle-back
+shingle band
+shingle bolt
+shingle lap
+shingle oak
+shingle tree
+shingle weaver
+Shingon-shu
+shin guard
+shining flycatcher
+shining light
+shining oat grass
+shining willow
+shin oak
+Shin-shu
+shin-tangle
+shiny-backed
+ship auger
+ship biscuit
+ship boat
+ship borer
+ship breaker
+ship broker
+ship canal
+ship carpenter
+ship carpentry
+ship chandler
+ship chandlery
+ship control
+ship fever
+ship head
+ship-holder
+ship joiner
+ship ladder
+shiplapped lumber
+ship letter
+ship-minded
+ship-mindedly
+ship-mindedness
+ship money
+ship news
+ship pendulum
+shipper fork
+shipping articles
+shipping clerk
+shipping commissioner
+shipping-dry
+shipping fever
+shipping mark
+shipping master
+shipping note
+shipping office
+shipping order
+shipping room
+shipping ton
+ship pound
+ship railway
+ship rat
+ship-rigged
+ship rigger
+ship-shaped
+ship splice
+ship stuff
+ship time
+ship tire
+ship-to-shore
+ship writ
+shire borough
+shire day
+shire ground
+shire horse
+shire knight
+shire moot
+shire reeve
+shire town
+shirt board
+shirt dresser
+shirt frame
+shirt frill
+shirt front
+shirt ironer
+shirt sleeve
+shirt-sleeved
+shish kebab
+shittah tree
+shittim wood
+shiver spar
+shoal duck
+shoal water
+shock absorber
+shock action
+shock battalion
+shock-bucker
+shock bump
+shock cord
+shock corps
+shock dog
+shock force
+shock-head
+shock soldier
+shock tactics
+shock therapy
+shock troops
+shock wave
+shoe blacking
+shoeblack plant
+shoe block
+shoe board
+shoe boil
+shoe bolt
+shoe box
+shoe buckle
+shoe button
+shoe-button spider
+shoe cleaner
+shoe-cleaning
+shoe dauber
+shoe dealer
+shoe department
+shoe drill
+shoe dye
+shoe fastener
+shoe findings
+shoeing-horn
+shoe last
+shoe laster
+shoe leather
+shoeless horse
+shoe lifter
+shoe machinery
+shoe-make
+shoe mender
+shoe nail
+shoe peg
+shoe polish
+shoe polisher
+shoe repaired
+shoe shiner
+shoe silver
+shoe-spoon
+shoe stone
+shoe store
+shoestring catch
+Shoestring district
+shoestring fern
+shoestring fungus
+shoestring lily
+shoestring weed
+shoe tie
+shoe tree
+shoe trimmer
+shoggy-shoo
+S hook
+shook swarming
+shoot apex
+shooting board
+shooting box
+shooting coat
+shooting fish
+shooting gallery
+shooting glove
+shooting iron
+shooting lodge
+shooting match
+shooting range
+shooting stick
+shoot-off
+shoot-root ratio
+shop assistant
+shop bill
+shop chairman
+shop clerk
+shop committee
+shop deputy
+shop drawing
+shop fitter
+shop lumber
+shop-made
+shop paper
+shopping goods
+shop right
+shop rivet
+shop-soiled
+shop steward
+shore bird
+shore boat
+shore boulder
+shore cod
+shore cover
+shore crab
+shore dinner
+shore fast
+shore grape
+shore grass
+shore lark
+shore leave
+shore line
+shore onion
+shore patrol
+shore pay
+shore pine
+shore pipit
+shore snipe
+shore spurge
+shore terrace
+shore whiting
+short account
+short and
+short-arm
+short-armed
+short-awned
+short ballot
+short-barred
+short-barreled
+short-beaked
+short-bearded
+short bill
+short-billed
+short-bitten
+short-bladed
+short-bobbed
+short-bodied
+short-branched
+short-breasted
+short-breathed
+short-breathing
+short-celled
+short-chinned
+short-circuit
+short-circuiter
+short-clawed
+short-cloaked
+short column
+short-commons
+short-coupled
+short covering
+short-crested
+short-cropped
+short cross
+short-crowned
+short-cut
+short-cycle
+short-cycled
+short-dated
+short-day
+short demy
+short-distance
+short-docked
+short-drawn
+short-eared
+short end
+short-extend
+short extension
+short-eyed
+short-faced
+short-fed
+short-fingered
+short-finned
+short-footed
+short-fruited
+short game
+short-grained
+short-growing
+short-hair
+short-haired
+short-hair plume grass
+short-handled
+short haul
+short-headed
+short-headedness
+short-heeled
+short-horned
+short-jointed
+short-keeled
+short-laid
+short-landed
+short-lasting
+short-leaf
+shortleaf pine
+shortleaf yellow pine
+short-leaved
+short leg
+short-legged
+short-limbed
+short-lined
+short-lived
+short-livedness
+short-living
+short loin
+short-long
+short-lunged
+short-made
+short-manned
+short-measured
+short-mouthed
+short-nailed
+short-napped
+short-necked
+short-nighted
+short-nosed
+short order
+short out
+short particular meter
+short period
+short-period comet
+short-period variable
+short-pitch
+short-pitch winding
+short plate
+short-podded
+short-pointed
+short-quartered
+short-range
+short rib
+short-running
+short session
+short-set
+short-shafted
+short-shanked
+short-shelled
+short-shipped
+short-shouldered
+short-shucks
+short-skirted
+short-sleeved
+short-sloped
+short snorter
+short-snouted
+short-span
+short-spined
+short-spired
+short-spoken
+short-spurred
+short-stalked
+short-staple
+short-staple isinglass
+short-statured
+short-stemmed
+short step
+short-stepped
+short story
+short-styled
+short suit
+short-suiter
+short-sword
+short-tailed
+short-tempered
+short-term
+short-termed
+short-time
+short-time rating
+short-toed
+short-tongued
+short-toothed
+short-trunked
+short-trussed
+short-twisted
+short up
+short-waisted
+short-wall machine
+short wave
+short-weight
+short-weighter
+short-winded
+short-windedly
+short-windedness
+short-winged
+short-witted
+short-wool
+short-wooled
+short-wristed
+Shoshonean-nahuatlan
+shot borer
+shot cartridge
+shot-clog
+shot corn
+shot crossbow
+shot drill
+shot effect
+shot-free
+shot garland
+shot hoist
+shot hole
+shot-hole borer
+shot holing
+shot hooks
+shot lighter
+shot line
+shot locker
+shot-log
+shot metal
+shot plant
+shot-put
+shot-putter
+shot-putting
+shot rope
+shot samples
+shot-silk
+shot-stified
+shotten down
+shot tongs
+shot tower
+should-be
+shoulder angle
+shoulder arms
+shoulder bar
+shoulder belt
+shoulder blade
+shoulder block
+shoulder bone
+shoulder brace
+shoulder-clap
+shoulder-clapper
+shoulder clod
+shouldered arch
+shoulder girdle
+shoulder-high
+shoulder-hitter
+shoulder knot
+shoulder loop
+shoulder mark
+shoulder note
+shoulder point
+shoulder screw
+shoulder-shotten
+shoulder slip
+shoulder strap
+shoulder tuft
+shout song
+shove-hapenny
+shovel-beaked
+shovel-bladed
+shovel cultivator
+shovel-footed
+shovel-handed
+shovel hat
+shovel-hatted
+shovel-headed
+shovel-mouthed
+shovel-nosed
+shovel-nosed duck
+shovel-nosed ray
+shovel-nosed shark
+shovel-nosed sturgeon
+shovel plow
+shovel-shaped
+show bill
+show box
+show card
+show dahlia
+show end
+shower bath
+shower bouquet
+show girl
+show glass
+showing-off
+show-off
+show palce
+show pipe
+show ring
+show stone
+show-through
+show window
+show-worthy
+showy-flowered
+showy gaillardia
+showy-leaved
+showy mentzelia
+showy milkweed
+showy orchis
+showy portulaca
+showy primrose
+showy sunflower
+shrewd-brained
+shrewd-headed
+shrewd-looking
+shrewd-pated
+shrewd-tongued
+shrewd-witted
+shrew mole
+shriek owl
+shrike thrush
+shrike tit
+shrill-edged
+shrill-gorged
+shrill-toned
+shrill-tongued
+shrill-voiced
+shrimp catcher
+shrimp pink
+shrimp red
+shrinkage fit
+shrinkage rule
+shrinkage stope
+shrink fit
+shrinking fit
+shrinking head
+shrink link
+shrink rule
+shroud knot
+shroud-laid
+shroud plate
+Shrove cake
+shroving time
+shrub cinquefoil
+shrub mallow
+shrub oak
+shrub steppe
+shrub willow
+shrub yellowroot
+sh-sh
+shuck-bottom
+shuck spray
+shuffle scale
+shun-pike
+shunt circuit
+shunt dynamo
+shunt excitation
+shunt field
+shunt lamp
+shunt lead
+shunt valve
+shunt winding
+shunt-wound
+shut-away
+shut-eye
+shut-in
+shut-mouthed
+shut-out
+shut-out bid
+shutter box
+shutter dam
+shutter weir
+shutting-in
+shutting post
+shutting stile
+shuttle armature
+shuttle bone
+shuttle box
+shuttlecock-flower
+shuttle-core
+shuttle-core magneto
+shuttle loading
+shuttle race
+shuttle raid
+shuttle service
+shuttle shell
+shuttle train
+shuttle trip
+shuttle winding
+shuttle-witted
+shuttle-wound
+shut-up
+shutur sowar
+Siah posh
+sibber sauce
+sibby bean
+Siberian-americanoid
+siberian brown
+sicca rupee
+Sicilo-norman
+sick-abed
+sick bay
+sick berth
+sick-brained
+sick call
+sick-fallen
+sick-feathered
+sick flag
+sick headache
+sick leave
+sickle bar
+sickle bender
+sickle-billed
+sickle-billed curlew
+sickle-billed thrasher
+sickle cell
+sickle-cell anemia
+sickle feather
+sickle-grass
+sickle ham
+sickle-hammed
+sickle herb
+sickle hock
+sickle-hocked
+sickle-leaved
+sickle senna
+sickle-shaped
+sickle-tailed
+sick list
+sickly-born
+sickly-colored
+sickly-looking
+sickly-seeming
+sick market
+sick nurse
+sick-nursish
+sick-pale
+sick-thoughted
+Siculo-arabian
+Siculo-moresque
+Siculo-norman
+Siculo-phoenician
+Siculo-punic
+side action
+side aisle
+side arm
+side ax
+side band
+side bar
+side-bar keel
+side-bar rule
+side beam
+side-beam engine
+side bench
+side-bended
+side bet
+side box
+side boy
+side brake
+side-by-side
+side-by-sideness
+side-cast
+side chain
+side-chain theory
+side chair
+side chapel
+side chisel
+side-cut
+side cutting
+side delivery
+side door
+side-dress
+side-end
+side-end line
+side face
+side-flowing
+side-glance
+side-graft
+side-handed
+side-hanging
+side hatchet
+side jointer
+side-kick
+side-lever
+side line
+side-liner
+side-look
+side-looker
+side-lying
+side-necked
+side oats
+side-on
+side prime
+Sidera lodoicea
+siderin yellow
+side road
+sidesaddle flower
+side scene
+side-seen
+side-skip
+side-step
+side-stepper
+side stitch
+side-stitched
+side-taking
+sidewalk door
+sidewalk elevator
+side-wheel
+side-wheeler
+side whisker
+side-whiskered
+side-wind
+side-winded
+siding tool
+siding track
+siege artillery
+siege cannon
+siege carriage
+siege howitzer
+siege mortar
+siege train
+siege wagon
+Sienese school
+Sien-pi
+sierra brownbark pine
+sierra juniper
+sierra plum
+sierra redbark pine
+sieve cell
+sieve disk
+sieve maker
+sieve making
+sieve pit
+sieve plate
+sieve pore
+sieve tissue
+sieve tube
+sieve vessel
+sigh-born
+sighed-for
+sight bill
+sight draft
+sight edge
+sight-feed
+sighting angle
+sighting hood
+sighting shot
+sight point
+sight-read
+sight reader
+sight reading
+sight rhyme
+sight-see
+sight-seeing
+sight-seer
+sight setter
+sight-shot
+sight unseen
+signal alarm
+signal beacon
+signal bell
+signal board
+signal box
+signal fire
+signal flag
+signal gong
+signal gun
+signal halyard
+signal lamp
+signal lantern
+signal light
+signal mast
+signal noise ratio
+signal post
+signal red
+signal relay
+signal rocket
+signal service
+signal shot
+signal siren
+signal tower
+signal whistle
+signal wire
+signature mark
+signet ring
+sign factor
+significate form
+sign language
+sign manual
+sign painter
+sign painting
+silage cutter
+silence cloth
+silent area
+silica brick
+silica gel
+silicate cotton
+silicated soap
+silicate paint
+silica ware
+silicium bronze
+silicon bronze
+silicon carbide
+silicon copper
+silicon dioxide
+silicon fluoride
+silicon hydride
+silicon nitrimide
+silicon spiegel
+silicon star
+silicon steel
+silicon tetrachloride
+silicon tetraethyl
+silicon tetrafluoride
+silk-bark
+silk-bark oak
+silk cotton
+silk-cotton family
+silk-cotton tree
+silk coverer
+silk discharger
+silken-coated
+silken-fastened
+silken-leafed
+silken-sailed
+silken-sandaled
+silken-shining
+silken-soft
+silken-threaded
+silken-winged
+silk-family
+silk fowl
+silk gelatin
+silk gland
+silk glue
+silk gown
+silk grass
+silk green
+silk gum
+silk hat
+silk-hatted
+silking machine
+silk louse
+silk mercer
+silk mill
+silk moth
+silk muslin
+silk oak
+silk paper
+silk plant
+silk-robed
+silk-screen
+silk-screen process
+silk serge
+silk-skirted
+silk snapper
+silk-soft
+silk spider
+silk spinner
+silk-stocking
+silk-stockinged
+silk stretcher
+silk tartan
+silk-tassel tree
+silk tester
+silk thrower
+silk throwster
+silk tree
+silk vine
+silk weaver
+silk wire
+silkworm gut
+silkworm jaundice
+silkworm rot
+silkworm seed
+silky-barked
+silky-black
+silky grass
+silky-haired
+silky-leaved
+silky-looking
+silky oak
+silky-smooth
+silky-soft
+silky swallowwort
+silky-textured
+silky-voiced
+sill cock
+sill course
+Sillery sec
+sill floor
+sill-like
+silly-faced
+silly-facedly
+silo filler
+silt grass
+Siluro-cambrian
+silver-backed
+silver-bar
+silver-bar fish
+silver-barked
+silver-barred
+silver-bearded
+silver beard grass
+silver-bearing
+silver-bell
+silver-bell tree
+silverberry family
+silver-black
+silver-bordered
+silver-bright
+silver bromide
+silver-buskined
+silver-chased
+silver-chiming
+silver chloride
+silver citrate
+silver-clasped
+silver-clear
+silver-coated
+silver-colored
+silver-copper
+silver-corded
+silver-cupped
+silver cyanide
+silver-eddied
+silver-embroidered
+silver-eyed
+silver-feathered
+silver-fleeced
+silver-flowing
+silver-footed
+silver-fork
+silver-fronted
+silver fulminate
+silver gilt
+silver-glittering
+silver-golden
+silver grain
+silver-grained
+silver grass
+silver gray
+silver green
+silver-hafted
+silver-haired
+silver hake
+silver-handled
+silver-headed
+silver iodide
+silver lace
+silver-laced
+silver lactate
+silver-lead
+silverleaf boree
+silver-leafed
+silverleaf linden
+silverleaf maple
+silverleaf poplar
+silverleaf redwood
+silver-leaved
+silver-leaved linden
+silver-leaved nightshade
+silver-lined
+silver lining
+silver-mail
+silver-melting
+silver mill
+silver miner
+silver mining
+silver-mounted
+silver nitrate
+silver oxide
+silver-penciled
+silver-plated
+silver plater
+silver plating
+silver polish
+silver powder
+silver-print drawing
+silver-producing
+silver protein
+silver-rimmed
+silver salt
+silver-shafted
+silver-shedding
+silver-shining
+silver smelter
+silver-smitten
+silver-sounded
+silver-sounding
+silver-spangled
+silver-spoon
+silver-spoonism
+silver-spotted
+silver-streaming
+silver-striped
+silver-studded
+silver-sweet
+silver-swelling
+silver-thread
+silver-thread blight
+silver-thrilling
+silver-tipped
+silver-tongue
+silver-tongued
+silvertop palmetto
+silver-true
+silver-tuned
+silver-using
+silver-voiced
+silver-washed
+silver white
+silver-winged
+silverwing gray
+silver-wiry
+simblin cake
+Simhath torah
+simile mark
+Simnel sunday
+simon-pure
+simple-armed
+simple-faced
+simple-headed
+simple-leaved
+simple-life
+simple-lifer
+simple-mannered
+simple-minded
+simple-mindedly
+simple-mindedness
+simple-rooted
+simple-seeming
+simple-stemmed
+simple-toned
+simple-tuned
+simple-witted
+sin-absolved
+sin-absolving
+sin-afflicting
+Sinanthropus pekinensis
+sinay bean
+sin-black
+sin-born
+sin-bred
+sin-burdened
+sin-burthened
+sin-chastising
+sin-clouded
+sin-concealing
+sin-condemned
+sin-consuming
+sin-crushed
+sin-drowned
+sin eater
+sin eating
+sine bar
+sine curve
+sine die
+sine galvanometer
+sine law
+sine qua non
+sine-qua-nonical
+sine-qua-noniness
+sine wave
+sinew-backed
+sinew-grown
+sinew-shrunk
+singhara nut
+singing book
+singing lesson
+singing master
+singing psalm
+singing school
+singing teacher
+singing voice
+single-acting
+single-action
+single-banked
+single-barrel
+single-barreled
+single-beat
+single-bitted
+single-blossomed
+single-bodied
+single-branch
+single-breasted
+single-caped
+single-cell
+single-celled
+single-chamber
+single-colored
+single-combed
+single-crested
+single-crop
+single-cut
+single-cutting
+single-cylinder
+single-deck
+single-decker
+single-disk
+single-dotted
+single doubler
+single-driver
+single-edged
+single-ended
+single-entry
+single-eyed
+single-file
+single-filed
+single-finned
+single-fire
+single-flowered
+single-foot
+single-footer
+single-framed
+single-fringed
+single-gear
+single-grown
+single-hander
+single-headed
+single-hoofed
+single-hooked
+single-horned
+single-horsed
+single-hung
+single-layer
+single-layered
+single-leaded
+single-leaf
+single-leaf ash
+single-leaved
+single-letter
+single-lever
+single-light
+single-line
+single-living
+single-loader
+single-masted
+single-measure
+single-member
+single-minded
+single-mindedly
+single-mindedness
+single-motored
+single-mouthed
+single-name
+single-nerved
+single-pass
+single-pen
+single-phase
+single-phaser
+single-piece
+single-pitched
+single-plated
+single-ply
+single-pointed
+single-pole
+single-punch
+single-rail
+single-reed
+single-reefed
+single-rivet
+single-riveted
+single-row
+singles court
+single-screw
+single-seated
+single-seater
+single-seed
+single-seed cucumber
+single-seeded
+single-shear
+single-sheaved
+single-shooting
+single-shot
+single-soled
+single-speech
+single-stage
+single-stepped
+single-strand
+single-strength
+single-stroke
+single-surfaced
+single-swing
+single-swing joint
+single-tap
+single-tax
+single taxer
+single-thoughted
+single-threaded
+single-throw
+single-throw switch
+single-tonguing
+single-track
+single transfer
+single-trip
+single-trunked
+single-twist
+single-twisted
+single-valued
+single-walled
+single-wheel
+single-wheeled
+single-whip
+single-wire
+single-wired
+sing-sing
+sin-guilty
+Sinico-japanese
+sin-indulging
+sinister-handed
+sink boat
+sink box
+sinker bar
+sinker boat
+sinker drill
+sinker wood
+sinkhole drainage
+sinking fund
+sinking-fund bond
+sinking head
+sin-laden
+sin-loving
+sin money
+sin-mortifying
+Sinn fein
+Sinn feiner
+Sinn feinism
+Sino-american
+Sino-belgian
+sin offering
+Sino-german
+Sino-japanese
+Sino-mongol
+Sino-russian
+Sino-soviet
+Sino-tibetan
+sin-proud
+sin rent
+sin-revenging
+sin-sick
+sin-sickness
+sin-soiling
+sin-sowed
+sin-thralled
+sinuate-leaved
+sinus arrhythmia
+sinus band
+sin-washing
+sin-wounded
+siphon alga
+siphon barometer
+siphon bottle
+siphon condenser
+siphon cup
+siphon gauge
+siphon recorder
+siphon slide
+siphon spillway
+si quis
+sirdar bearer
+sire-found
+siren song
+Sir john
+S-iron
+Sir rag
+sir-reverence
+sirup sorghum
+sisal hemp
+siskin parrot
+sister block
+sister cell
+sister fold
+sister-german
+sister hook
+sister keelson
+sister ship
+sister-wife
+sit-down
+sit-downer
+site development
+site land
+sit-in
+sitter-by
+sitter-out
+sitting day
+sitting height
+sitting place
+sitting room
+sitting shot
+sit-upon
+sitz bath
+siva-siva
+siva snake
+six-acre
+six-angled
+six-arched
+six-banded
+six-bar
+six-barred
+six-barreled
+six-bottle
+six-canted
+six-cent
+six-chambered
+six-colored
+six-cornered
+six-coupled
+six-course
+six-cut
+six-cylinder
+six-cylindered
+six-day
+six-dollar
+six-eared
+six-edged
+six-eight
+six-eight time
+six-ell
+six-eyed
+six-faced
+six-figured
+six-fingered
+six-flowered
+six-foiled
+six-foot
+six-footed
+six-footer
+six-gallon
+six-gated
+six-gilled
+six-grain
+six-gram
+six-gun
+six-headed
+six-hoofed
+six-horse
+six-hour
+six-inch
+six-jointed
+six-leaved
+six-legged
+six-letter
+six-lettered
+six-lined
+six-lobed
+six-masted
+six-master
+six-mile
+six-minute
+six-mouth
+six-oared
+six-oclock
+six-o-six
+six-ounce
+six-petaled
+six-phase
+six-plumed
+six-ply
+six point
+six-pointed
+six-pot
+six-pound
+six-pounder
+Six-principle baptist
+six-ranked
+six-rayed
+six-ribbed
+six-room
+six-roomed
+six-rowed
+six-second
+six-shafted
+six-shared
+six-shilling
+six-shooter
+six-sided
+six-spined
+six-spotted
+six-storied
+six-story
+six-stringed
+six-striped
+six-syllable
+sixteen-foot
+sixteen-foot stop
+sixteen-pounder
+sixteenth note
+sixteenth rest
+sixth chord
+sixth-floor
+sixth-form
+sixth-grade
+sixth nerve
+sixth-rate
+six-three-three
+six-time
+six-ton
+sixty-eight
+sixty-eighth
+sixty-fifth
+sixty-first
+sixty-five
+sixty-four
+sixty-fourmo
+sixty-fourth
+sixty-fourth note
+sixty-fourth rest
+sixty-nine
+sixty-ninth
+sixty-one
+sixty per cent
+sixty-second
+sixty-seven
+sixty-seventh
+sixty-six
+sixty-sixth
+sixty-third
+sixty-three
+sixty-two
+six-week
+six-weeks grass
+six-wheel
+six-wheeled
+six-wheeler
+six-winged
+six-yard
+six-year
+six-year-old
+size bone
+sizer die
+size roll
+sizer tap
+size stick
+sizing tool
+sizzling heat
+skate sailing
+skean dhu
+skeel duck
+skeel goose
+skeeling goose
+skeen arch
+skeleton company
+skeleton construction
+skeleton dance
+skeleton drill
+skeleton girder
+skeleton key
+skeleton leaf
+skeleton movement
+skeleton pattern
+skeleton proof
+skeleton regiment
+skeleton shrimp
+skeleton suit
+skelpie-limmer
+skene arch
+sketch book
+sketch plan
+sketch plate
+Skew curve
+skewer-up
+skew-gee
+skew-symmetric
+skew table
+skid box
+skid chain
+skidding hooks
+skidding sled
+skidding trail
+skid engine
+skid fin
+skid platform
+skid road
+skid row
+ski jump
+ski lift
+skillet chopper
+skill facet
+skill-less
+skill-lessness
+skimble-scamble
+skim coat
+skim colter
+skim gate
+skimmer cake
+skimmer scoop
+skim milk
+skimming back
+skimming dish
+skimming gate
+skimmington ride
+skimper-scamper
+skin beetle
+skin boat
+skin book
+skin-breaking
+skin-built
+skin-clad
+skin-clipping
+skin coat
+skin-deep
+skin-devouring
+skin effect
+skin friction
+skin game
+skin graft
+skin mark
+skinning knife
+skinning loam
+skinny-necked
+skin-peeled
+skin-piercing
+skin-plastering
+skin resistance
+skin-shifter
+skin spot
+skin-spread
+skin test
+skin-testing
+skin wool
+skip distance
+skip elevator
+skip hoist
+skipjack pike
+skip numbering
+ski pole
+skipping rope
+skirmish drill
+skirmish line
+skirt cassock
+skirt dance
+skirt-dancer
+skirting board
+skirting table
+skirt marker
+ski stick
+ski suit
+skittle alley
+skittle ball
+skittle pool
+skittle pot
+skittle-shaped
+skrim shander
+skua gull
+skull-built
+skullcap speedwell
+skull-covered
+skull cracker
+skull-crowned
+skull-dividing
+skull-hunting
+skull-less
+skull-like
+skull-lined
+skunk bear
+skunk bird
+skunk blackbird
+skunk cabbage
+skunk currant
+skunk grape
+skunkhead coot
+skunk-headed
+skunk mushroom
+skunk plant
+skunk porpoise
+skunk spruce
+skunk turtle
+sky advertising
+sky-aspiring
+sky-blasted
+sky-blue
+sky-born
+sky-bred
+sky-capped
+sky-cast
+sky-clad
+sky-clear
+sky-cleaving
+sky-climbing
+sky-color
+sky-dome
+sky drain
+sky-dyed
+sky-elephant
+sky-engendered
+sky-facer
+sky-falling
+sky farmer
+sky-gazer
+sky-god
+sky gray
+sky-high
+sky hooker
+sky iron
+sky-kissing
+sky-line
+sky-line logging
+sky map
+sky-measuring
+sky parlor
+sky pilot
+sky pipit
+sky-planted
+sky-reaching
+sky-rending
+sky-resembling
+sky-ruling
+skysail pole
+skysail-yarder
+sky-scaling
+sky shade
+sky sign
+sky-throned
+sky-tinctured
+sky-touching
+sky train
+sky truck
+sky wave
+sky-worn
+slabbing cutter
+slabbing machine
+slabbing mill
+slab bridge
+slab house
+slab line
+slab mill
+slab reef
+slab-sided
+slab-sidedly
+slab-sidedness
+slab tie
+slack-bake
+slack-baked
+slack barrel
+slack coal
+slack cooperage
+slack-filled
+slack filling
+slack jaw
+slack-jawed
+slack-laid
+slack-salted
+slack-twisted
+slack-water
+slag cement
+slag concrete
+slag furnace
+slagging furnace
+slagging hole
+slag hearth
+slag sand
+slag-tap furnace
+slag wool
+slake trough
+slam-bang
+slam bidding
+slang-whang
+slang-whanger
+slant culture
+slant dam
+slant-eyed
+slant height
+slant-top
+slap-bang
+slap-bang shop
+slap-dab
+slap-sided
+slap-slap
+slap-up
+slash bar
+slash-grain
+slash pine
+slat-back
+slat bonnet
+slate ax
+slate bed
+slate-beveling
+slate black
+slate blue
+slate-brown
+slate cement
+slate clay
+slate-color
+slate-colored
+slate-cutting
+slate-formed
+slate galiot
+slate gray
+slate green
+slate olive
+slate pencil
+slate picker
+slate purple
+slate spar
+slate-spired
+slate splitter
+slate-strewn
+slate-trimming
+slate-violet
+slate writer
+slate writing
+slat sign
+slaughter-breathing
+slaughter-dealing
+slaughter pen
+slaughter-threatening
+slaughter tree
+slave ant
+Slave bracelet
+slave broker
+slave-carrying
+slave clock
+slave-collecting
+slave-cultured
+slave dealer
+slave dealing
+slave-deserted
+slave-drive
+slave driver
+slave-enlarging
+slave fork
+slave-got
+slave-grown
+slave hunt
+slave hunter
+slave hunting
+slave maker
+slave-making
+slave market
+slave-owning
+slave-peopled
+slave ship
+slave song
+slave trade
+slave trader
+slave trading
+Slavo-germanic
+Slavo-hungarian
+Slavo-lettic
+Slavo-lithuanian
+Slavo-phoenician
+Slavo-teuton
+Slavo-teutonic
+sleave silk
+sled cultivator
+sled dog
+sledge chair
+sledge dog
+sledge hammer
+sled harvester
+sled knife
+sled lister cultivator
+sled-log
+sled marker
+sleek-browed
+sleeker-up
+sleek-faced
+sleek-haired
+sleek-headed
+sleek-leaf
+sleek-looking
+sleek-skinned
+sleek stone
+sleep-bedeafened
+sleep-bringing
+sleep-causing
+sleep-compelling
+sleep-created
+sleep-desiring
+sleep-dewed
+sleep-dispelling
+sleep-disturbing
+sleep drink
+sleep-drowned
+sleep-drunk
+sleep-enthralled
+sleeper shark
+sleep-fatted
+sleep-fearing
+sleep-filled
+sleep-heavy
+sleep-inducing
+sleeping bag
+sleeping car
+sleeping carriage
+sleeping disease
+sleeping draught
+sleeping partner
+sleeping porch
+sleeping rent
+sleeping sickness
+sleeping suit
+sleeping table
+sleep-inviting
+sleep-loving
+sleep movements
+sleep-procuring
+sleep-producing
+sleep-provoking
+sleep-resisting
+sleep-soothing
+sleep-stuff
+sleep-swollen
+sleep talker
+sleep talking
+sleep-tempting
+sleepy-acting
+sleepy disease
+sleepy-eyed
+sleepy-eyes
+sleepy-headed
+sleepy-headedness
+sleepy-looking
+sleepy sickness
+sleepy-souled
+sleepy-sounding
+sleepy-voiced
+sleet wheel
+sleeve axle
+sleeve brick
+sleeve button
+sleeve-defended
+sleeve dog
+sleeve-hidden
+sleeve links
+sleeve nut
+sleeve target
+sleeve valve
+sleeve waistcoat
+sleigh bed
+sleigh bell
+sleigh cutter
+slender-ankled
+slender-armed
+slender-beaked
+slender-billed
+slender-bladed
+slender-bodied
+slender-branched
+slender-fingered
+slender-finned
+slender-flanked
+slender-flowered
+slender-footed
+slender-hipped
+slender-jawed
+slender-jointed
+slender-leaved
+slender-legged
+slender-limbed
+slender-looking
+slender-muzzled
+slenderness ratio
+slender-nosed
+slender-podded
+slender-shafted
+slender-shouldered
+slender-spiked
+slender-stalked
+slender-stemmed
+slender-striped
+slender-tailed
+slender-toed
+slender-trunked
+slender-waisted
+slender-witted
+slew-eyed
+slew rope
+slice bar
+slice galley
+slicker hat
+slick-faced
+slick-haired
+slick-looking
+slick-spoken
+slick stone
+slick-talking
+slick-tongued
+slide bar
+slide block
+slide box
+slide bridge
+slide caliper
+slide-easy
+slide fastener
+slide film
+slide knot
+slide lathe
+slide pole
+slide rail
+slider crank
+slider-crank chain
+slide rest
+slide-rest lathe
+slide-rock
+slide rod
+slide rule
+slide shaft
+slide stacker
+slide tongs
+slide tool
+slide trombone
+slide valve
+slide-valve engine
+slide-wire
+slide-wire bridge
+sliding fit
+sliding friction
+sliding-gear
+sliding-scale
+sliding-scale premium
+slight-billed
+slight-bottomed
+slight-built
+slight-esteemed
+slight-informed
+slight-limbed
+slight-looking
+slight-made
+slight-natured
+slight-seeming
+slight-shaded
+slight-timbered
+slim-ankled
+slim-built
+slime-begotten
+slime-browned
+slime-coated
+slime eel
+slime-filled
+slime flux
+slime fungus
+slime mold
+slime pit
+slime-secreting
+slime table
+slime thickening
+slime-washed
+slim-jim
+slim-leaved
+slim-limbed
+slim-shanked
+slim-spired
+slim-trunked
+slim-waisted
+slimy-backed
+sling cart
+sling dog
+slinger ring
+sling psychrometer
+sling pump
+sling rope
+sling stay
+sling strap
+sling thermometer
+sling trot
+sling unloader
+slink butcher
+slink lamb
+slip-along
+slip carriage
+slip cheese
+slip cloth
+slipcoat cheese
+slip coupling
+slip cover
+slip curd
+slip dock
+slipe wool
+slip friction
+slip friction clutch
+slip gauge
+slip glaze
+slip grab
+slip hook
+slip jaw
+slip joint
+slip key
+slip kiln
+slip knot
+slip line
+slip mortise
+slip noose
+slip-on
+slip panel
+slipped wing
+slipper animalcule
+slipper animalcules
+slipper block
+slipper boat
+slipper brake
+slipper chair
+slipper drag
+slipper foot
+slipper-foxed
+slipper limpet
+slipper orchid
+slipper piston
+slipper plant
+slipper-root
+slipper-shaped
+slipper shell
+slippery-bellied
+slippery-breeched
+slippery-looking
+slippery-shod
+slippery-sleek
+slippery-tongued
+slip proof
+slip rail
+slip regulator
+slip ring
+slip rope
+slip seat
+slip shackle
+slip share
+slip sheet
+slip-shelled
+slip sill
+slip skid
+slip-skin
+slip stitch
+slip stopper
+slip stream
+slip switch
+slip tap
+slip tongue
+slip-tongue wheel
+slip-top
+slip-up
+slip ware
+slip washer
+slip wool
+slit band
+slit deal
+slit-eared
+slit-eyed
+slit-footed
+slit lamp
+slit-nosed
+slit-shaped
+slit tapestry
+slitting file
+slitting machine
+slitting saw
+slitting shears
+sliver box
+slob land
+slocking stone
+sloe-black
+sloe-blue
+sloe-colored
+sloe-eyed
+sloe gin
+sloe plum
+sloe thorn
+sloop-rigged
+sloop yacht
+slop basin
+slop book
+slop bowl
+slop-built
+slop chest
+slop cloth
+slop dealer
+slope arms
+slope-browed
+slope culture
+slope-eared
+slope-edged
+slope-faced
+slope form
+slope-lettered
+slope-roofed
+slope-sided
+slope-toothed
+slope-walled
+slop frock
+slop hand
+slop jar
+slop man
+slop merchant
+slop-molded
+slop molding
+slop-over
+slop padding
+slop pail
+slop room
+slop sink
+slosh wheel
+slot-boring
+slot burner
+slot conveyer
+slot-drill
+slot driller
+slot-drilling
+slot-drilling machine
+slot file
+sloth animalcule
+sloth bear
+slot-headed
+sloth monkey
+sloth tree
+slot machine
+slot mortise
+slot rail
+slot-spike
+slotting auger
+slotting drill
+slotting end mill
+slotting file
+slotting machine
+slot washer
+slot winding
+slough bass
+slough grass
+slough ice
+slow-blooded
+slow-breathed
+slow-breathing
+slow-breeding
+slow-burning
+slow-circling
+slow-combustion
+slow-conceited
+slow-contact
+slow-crawling
+slow-creeping
+slow-developed
+slow-drawing
+slow-drawn
+slow-driving
+slow-ebbing
+slow-endeavoring
+slow-extinguished
+slow-eyed
+slow-fingered
+slow-foot
+slow-footed
+slow-gaited
+slow-growing
+slow-legged
+slow-march
+slow-mettled
+slow-motion
+slow-moving
+slow-paced
+slow-run
+slow-running
+slow-sailing
+slow-speaking
+slow-speeched
+slow-spirited
+slow-spoken
+slow-stepped
+slow-sudden
+slow-sure
+slow-thinking
+slow-time
+slow-tongued
+slow-tuned
+slow-up
+slow-winged
+slow-witted
+slubbing billy
+slubbing machine
+sludge acid
+slue-footed
+slue rope
+slug-abed
+slug caterpillar
+slugging machine
+slugging match
+slug horn
+slug snail
+slug worm
+sluice box
+sluice gate
+sluice valve
+slumber-bound
+slumber-bringing
+slumber-closing
+slumber-loving
+slumber-seeking
+slumber-wrapt
+slump cone
+slump test
+slung shot
+slush-cast
+slush casting
+slush fund
+slushing oil
+slush lamp
+sly-eyed
+sly-looking
+sly-tongued
+sma-boukit
+smack boat
+small-acred
+small-ankled
+small-arm
+small-armed
+small-arms
+small-billed
+small-boat
+small-bodied
+small-boned
+small-bore
+small boy
+small-boyhood
+small-boyish
+small-brained
+small-caliber
+small-celled
+small-clawed
+small coal
+small-college
+small-colleger
+small-cornered
+small-crowned
+small debt
+small-debts court
+small-diameter
+small-drink
+small-eared
+Small-endian
+small-eyed
+small-faced
+small-feed
+small-finned
+small-flowered
+small-footed
+small-framed
+small-fruited
+small-fry
+small goods
+small-grain
+small-grained
+small-habited
+small-handed
+small-headed
+small-hipped
+small-horned
+small-jointed
+small-leaved
+small-letter
+small-limbed
+small-looking
+small-lunged
+small-minded
+small-mindedly
+small-mindedness
+small-nailed
+small-natured
+small-paneled
+small-paper
+small-part
+small-pattern
+small-petaled
+small-pored
+smallpox plant
+smallpox-proof
+small-preferred
+small-reasoned
+small-scale
+small-scaled
+small-shelled
+small-size
+small-sized
+small-souled
+small-spaced
+small-spotted
+small stores
+small-tailed
+small-talk
+small-threaded
+small-timbered
+small time
+small-tired
+small-toned
+small-tooth
+small-toothed
+small-topped
+small-town
+small-trunked
+small-type
+small-visaged
+small-visioned
+small-wheeled
+small-windowed
+small years
+smalt-blue
+smalt green
+smart aleck
+smart-alecky
+smart-built
+smart-cocked
+smart-dressing
+smart-looking
+smart-spoken
+smart-stinging
+smart-talking
+smart-tongued
+smart-witted
+smashboard signal
+smasher hammer
+smasher hat
+smashing machine
+smash piecer
+smear campaign
+smear culture
+smear dab
+smear dock
+smear ware
+smear word
+smegma bacillus
+smeller-out
+smell-feast
+smelling bottle
+smelling salts
+smelling-stick
+smell-less
+smell-smock
+smick-smack
+smick-smock
+smiddy-leaves
+smilax family
+smileage book
+smile-covering
+smiled-out
+smile-frowning
+smile-tuned
+smile-wreathed
+smithing coal
+smithy coal
+smiting line
+smock-faced
+smock frock
+smock-frocked
+smock marriage
+smock mill
+smock windmill
+smoke arch
+smoke ball
+smoke-begotten
+smoke-black
+smoke-bleared
+smoke-blinded
+smoke-blue
+smoke bomb
+smoke-bound
+smoke-brown
+smoke-burning
+smoke cat
+smoke-colored
+smoke-condensing
+smoke-consuming
+smoke-consumptive
+smoke-curing
+smoke curtain
+smoke-dried
+smoke-dry
+smoke-dyed
+smoke-eating
+smoke-enrolled
+smoke-exhaling
+smoke explosion
+smoke-filled
+smoke-gray
+smoke-grimed
+smoke helmet
+smoke hole
+smoke kiln
+smoke-laden
+smoke-oh
+smoke-paint
+smoke-pennoned
+smoke pipe
+smoke plant
+smoke-preventing
+smoke-preventive
+smoke proof
+smoke quartz
+smoke room
+smoke sail
+smoke screen
+smoke-selling
+smoke shelf
+smoke shop
+smoke-smothered
+smoke-sodden
+smoke-stained
+smoke stop
+smoke talk
+smoke-torn
+smoke tree
+smoke-vomiting
+smoke washer
+smoke-wreathed
+smoke-yellow
+smoking bean
+smoking car
+smoking concert
+smoking duck
+smoking jacket
+smoking lamp
+smoking opium
+smoking room
+smoky-bearded
+smoky-blue
+smoky-colored
+smoky-flavored
+smoky-looking
+smoky-smelling
+smoky-tinted
+smoky-waving
+smooth-ankled
+smoothback flounder
+smooth-barked
+smooth-bedded
+smooth-bellied
+smooth-billed
+smooth-bodied
+smooth-browed
+smooth-cast
+smooth-cheeked
+smooth-chinned
+smooth-clouded
+smooth coat
+smooth-coated
+smooth-coil
+smooth-combed
+smooth-core
+smooth-crested
+smooth-cut
+smooth-dittied
+smooth-edged
+smooth-face
+smooth-faced
+smooth-famed
+smooth-fibered
+smooth-finned
+smooth-flowing
+smooth-foreheaded
+smooth-fronted
+smooth-fruited
+smooth-gliding
+smooth-going
+smooth-grained
+smooth-haired
+smooth-handed
+smooth-headed
+smooth-hewn
+smoothing box
+smoothing iron
+smoothing mill
+smoothing plane
+smooth-leaved
+smooth-legged
+smooth-limbed
+smooth-looking
+smooth-necked
+smooth-nosed
+smoot hole
+smooth-paced
+smooth-plastered
+smooth-podded
+smooth-polished
+smooth-riding
+smooth-rimmed
+smooth-rinded
+smooth-rubbed
+smooth-running
+smooth-sculptured
+smooth-shaven
+smooth-sided
+smooth-skinned
+smooth-sliding
+smooth-soothing
+smooth-speaking
+smooth-spoken
+smooth-stalked
+smooth-stemmed
+smooth-surfaced
+smooth-tailed
+smooth-taper
+smooth-taper drift
+smooth-tempered
+smooth-tined
+smooth-tired
+smooth-tongued
+smooth-voiced
+smooth-walled
+smooth-winding
+smooth-winged
+smooth-working
+smooth-woven
+smooth-writing
+smooth-wrought
+smother crop
+smother fire
+smother fly
+smother-kiln
+smudge fire
+smug-faced
+smug-looking
+smug-skinned
+smut ball
+smut fungus
+smut gall
+smut grass
+smut mill
+smutty-faced
+smutty-nosed
+smutty-yellow
+snaffle bit
+snaffle-bridled
+snaffle-mouthed
+snaffle-reined
+snag boat
+snaggle-toothed
+snag tooth
+snag tree
+snail bore
+snail borer
+snail cloud
+snail clover
+snail countersink
+snail horn
+snail-horned
+snail-likeness
+snail medic
+snail-paced
+snail plant
+snail-seed
+snail shell
+snail-slow
+snail trefoil
+snail wheel
+snake bearer
+snake bite
+snake-bitten
+snake blenny
+snake boat
+snake-bodied
+snake buzzard
+snake cactus
+snake cane
+snake charmer
+snake crane
+snake cucumber
+snake dance
+snake-devouring
+snake doctor
+snake-drawn
+snake-eater
+snake-eating
+snake eel
+snake eggplant
+snake-encircled
+snake-engirdled
+snake-eyed
+snake feeder
+snake fence
+snake fern
+snake fly
+snake foot
+snake gentian
+snake-goddess
+snake gourd
+snake-grass
+snake guide
+snake-haired
+snake-headed
+snakehead mullet
+snake hole
+snake idol
+snake killer
+snake-killing
+snake leaf
+snake lily
+snake line
+snake mackerel
+snake melon
+snake-milk
+snake moss
+snakemouth pogonia
+snake-necked
+snake nut
+snake palm
+snake-plantain
+snake-set
+snake star
+snake-tressed
+snake violet
+snake-wanded
+snake-wigged
+snake-winged
+snake wire
+snake worship
+snake worshiper
+snaky-eyed
+Snaky-footed
+snaky-haired
+snaky-handed
+snaky-headed
+snaky-paced
+snaky-sparkling
+snaky-tailed
+snaky-wreathed
+snap-apple
+snap bean
+snap beetle
+snap bug
+snap cap
+snap catch
+snap clutch
+snap fastener
+snap-finger
+snap flask
+snap gauge
+snap header
+snaphead rivet
+snap hook
+snap link
+snap lock
+snap machine
+snap molder
+snap molding
+snapper-back
+snapper-up
+snapping tool
+snap point
+snap ring
+snap-rivet
+snap-roll
+snap shooter
+snap shooting
+snap shot
+snap switch
+snap table
+snap tool
+snap-top
+snap-top table
+snap turtle
+snap willow
+snare drum
+snare strainer
+snarling iron
+snatch block
+snatch hitch
+snatch team
+snaw-broo
+sneak boat
+sneak box
+sneak current
+sneak shooting
+sneak thief
+sneak-up
+sneck band
+sneck drawer
+sneck hook
+sneck posset
+sneeshing box
+sneeshing mill
+sneeshing mull
+sneeze gas
+sneezewort tansy
+sneezewort yarrow
+sneezing gas
+snick-and-snee
+snick-and-snee knife
+snick-a-snee
+snick drawer
+snick-snarl
+sniffle valve
+snifter valve
+snifting valve
+snipe eel
+snipe fly
+snipe hawk
+snipe-nosed
+sniper-scope
+snipnose mullet
+snip-snap
+snip-snappy
+snooker pool
+snore hole
+snore piece
+snotty-nosed
+snout beetle
+snout butterfly
+snout machine
+snout mite
+snout moth
+snow apple
+snowball bush
+snowball tree
+snow banner
+snow-barricaded
+snow bear
+snow-bearded
+snow-beaten
+snow-beater
+snow bed
+snow-besprinkled
+snow blanket
+snow blast
+snow-blind
+snow-blinded
+snow blindness
+snow-blown
+snow boot
+snow-bright
+snow-brilliant
+snow-broth
+snow bunting
+snow buttercup
+snow-capped
+snow-casting
+snow-choked
+snow chukor
+snow-clad
+snow-clearing
+snow-climbing
+snow cock
+snow-cold
+snow-colored
+snow-covered
+snow-crested
+snow-crowned
+snow cup
+snow-deep
+snow-drifted
+snow-driven
+snowdrop anemone
+snow-dropping
+snowdrop tree
+snow-drowned
+snow dust
+snow eater
+snow-encircled
+snow eyes
+snow-fair
+snow-feathered
+snow-fed
+snow fence
+snow field
+snow finch
+snow flea
+snowflower tree
+snow fly
+snow gem
+snow glare
+snow glory
+snow gnat
+snow goggles
+snow goose
+snow grass
+snow ground
+snow grouse
+snow guard
+snow-haired
+snow-hung
+snow hut
+snow ice
+snow insect
+snow knife
+snow-laden
+snow leopard
+snow light
+snow lily
+snow-limbed
+snow limit
+snow line
+snow-lined
+snow-loaded
+snow-mantled
+snow-melting
+snow mold
+snow-molded
+snow mosquito
+snow mouse
+snow-nodding
+snow owl
+snow panther
+snow partridge
+snow peak
+snow pear
+snow pheasant
+snow pigeon
+snow plant
+snow poppy
+snow pudding
+snow-pure
+snow quail
+snow rack
+snow-resembled
+snow-rigged
+snow-robed
+snow roller
+snow rose
+snow rosette
+snow-rubbing
+snow-scarred
+snow sheen
+snowshoe rabbit
+snow sleep
+snow slope
+snow slush
+snow snake
+snow-soft
+snow-sprinkled
+snow squall
+snow-still
+snow stream
+snow-swathe
+snow-sweeping
+snow-tipped
+snow-topped
+snow track
+snow tree
+snow vine
+snow vole
+snow water
+snow white
+snow-whitened
+snow-whiteness
+snow-winged
+snow wreath
+snow-wrought
+snowy-banded
+snowy-bosomed
+snowy-capped
+snowy-countenanced
+snowy-fleeced
+snowy-flowered
+snowy-headed
+snowy-vested
+snowy-winged
+snubbing post
+snub line
+snub-nosed
+snub post
+snuff bottle
+snuffbox bean
+snuffbox fern
+snuff brown
+snuff brush
+snuff-clad
+snuff color
+snuff dipper
+snuff dipping
+snuff-headed
+snuff maker
+snuff mill
+snuff mull
+snuff paper
+snuff shop
+snuff-stained
+snuff stick
+snuff swab
+snuff-taking
+snuff-using
+soak hole
+soaking furnace
+soaking pit
+soap apple
+soap ashes
+soapbark tree
+soapberry family
+soapberry tree
+soap box
+soap brick
+soap bubble
+soap bulb
+soap copper
+soap-fast
+soap fruit
+soap gentian
+soap nut
+soap opera
+soap orange
+soap plant
+soap pod
+soap powder
+soap test
+soap tree
+soapwort gentian
+soar falcon
+soar hawk
+sober-blooded
+sober-clad
+sober-disposed
+sober-headed
+sober-headedness
+sober-minded
+sober-mindedly
+sober-mindedness
+sober-sad
+sober-spirited
+sober-suited
+sober-tinted
+sob sister
+sob story
+sob stuff
+so-called
+so-caused
+Social crediters
+social-minded
+society goods
+Society men
+Society people
+society queen
+society screw
+society verse
+socio-official
+socket basket
+socket chisel
+socket pole
+socket punch
+socket screw
+socket spanner
+socket washer
+socket wrench
+sockeye salmon
+sock lamb
+sock lining
+sock suspenders
+so-conditioned
+so-considered
+soda alum
+soda ash
+soda ball
+soda biscuit
+soda bread
+soda cracker
+soda crystals
+soda feldspar
+soda fountain
+soda-granite
+soda jerk
+soda lake
+soda lime
+sodalite-syenite
+soda lye
+soda mesolite
+soda mica
+soda niter
+soda plant
+soda pop
+soda-potash
+soda-potash feldspar
+soda pulp
+soda saleratus
+soda soap
+soda waste
+soda water
+sod-bound
+sod-build
+sod cloth
+sod culture
+sod-cutting
+sodden-faced
+sodden-headed
+sodden-minded
+sodden-witted
+so-designated
+sod-forming
+sod grass
+sod house
+sodium acetate
+sodium alum
+sodium aluminate
+sodium amide
+sodium arsenate
+sodium arsenite
+sodium arsphenamine
+sodium barbital
+sodium benzoate
+sodium biborate
+sodium bicarbonate
+sodium bichromate
+sodium bisulphate
+sodium bisulphite
+sodium borate
+sodium carbonate
+sodium chlorate
+sodium chloride
+sodium citrate
+sodium cyanide
+sodium dicarbonate
+sodium dichromate
+sodium dioxide
+sodium ethylate
+sodium fluoride
+sodium hydrate
+sodium hydrosulphide
+sodium hydrosulphite
+sodium hydroxide
+sodium hypochlorite
+sodium hyposulphite
+sodium iodide
+sodium light
+sodium nitrate
+sodium nitrite
+sodium nitroprusside
+sodium oxide
+sodium perborate
+sodium peroxide
+sodium phosphate
+sodium salicylate
+sodium silicate
+sodium sulphate
+sodium sulphide
+sodium sulphite
+sodium sulphydrate
+sodium tetraborate
+sodium thiosulphate
+sodium tungstate
+sodium-vapor
+sod mulch
+sod oil
+sod plow
+sod-roofed
+sod webworm
+sofa bed
+sofa bedstead
+sofa corner
+sofa cover
+sofa cushion
+sofa maker
+sofa pillow
+sofa-ridden
+sofa seat
+so-fa syllables
+sofa table
+so-formed
+soft-armed
+soft-backed
+soft-bedded
+soft-bellied
+soft-bill
+soft-billed
+soft-blowing
+soft-board
+soft-bodied
+soft-boil
+soft-boiled
+soft-bone
+soft-bosomed
+soft-breathed
+soft-bright
+soft-brushing
+soft-circling
+soft-coal
+soft-coated
+soft-conched
+soft-conscienced
+soft-cored
+soft-couched
+soft-dressed
+soft-ebbing
+soft-embodied
+softening point
+soft-extended
+soft-eyed
+soft-feathered
+soft-feeling
+soft-fingered
+soft-finished
+soft-finned
+soft-flecked
+soft-fleshed
+soft-flowing
+soft-foliaged
+soft-footed
+soft-footedly
+soft-glazed
+soft-going
+soft-ground
+soft-ground etching
+soft-haired
+soft-handed
+soft-headed
+soft-headedness
+soft-laid
+soft-leaved
+soft-lucent
+soft-mannered
+soft-mettled
+soft-minded
+soft-murmuring
+soft-natured
+soft-nosed
+soft-paced
+soft-pale
+soft-palmed
+soft-paste
+soft patch
+soft-pated
+soft-pedal
+soft ray
+soft-rayed
+soft-roasted
+soft-sawder
+soft-sawderer
+soft-sealed
+soft-shell
+soft-shelled
+soft-shining
+soft-shoe
+soft-shouldered
+soft-sighing
+soft-silken
+soft-skinned
+soft-sleeping
+soft-sliding
+soft-slow
+soft-smiling
+soft-soap
+soft-soaper
+soft-solder
+soft-soothing
+soft-sounding
+soft-speaking
+soft-spirited
+soft-spleened
+soft-spoken
+soft-spread
+soft-spun
+soft-steel
+soft-swelling
+soft-tailed
+soft-tanned
+soft-tempered
+soft-throbbing
+soft-timbered
+soft-tinted
+soft-toned
+soft-tongued
+soft-treading
+soft-voiced
+soft-wafted
+soft-warbling
+soft-water
+soft-whispering
+soft-winged
+soft-witted
+soft wood
+soft-wooded
+soft-yielding
+soil binder
+soil-bound
+soil cap
+soil cement
+soiling crop
+soil miller
+soil mulch
+soil pipe
+soil profile
+soil rot
+soil sickness
+soil stack
+soil stain
+soil survey
+so-instructed
+soja bean
+soja-bean oil
+soke reeve
+solan goose
+Solanine-s
+solar plexus
+solar still
+solar telegraph
+soldering bolt
+soldering copper
+soldering iron
+soldering nipple
+soldering union
+soldering wig
+solder nipple
+soldier ant
+soldier beetle
+soldier bug
+soldier course
+soldier crab
+soldier-fashion
+soldier fly
+soldier-mad
+soldier orchis
+soldier palmer
+soldier sprag
+soldier turtle
+sole-beating
+sole-begotten
+sole-beloved
+sole blocker
+sole-bound
+sole-channeling
+sole-commissioned
+sole corporation
+sole cutter
+sole-cutting
+sole-deep
+sole-finishing
+sole-happy
+sole-justifying
+sole-leather
+sole-leather kelp
+sole-living
+sole-lying
+Sole marguery
+solemn-breathing
+solemn-browed
+solemn-cadenced
+solemn-eyed
+solemn form
+solemn-garbed
+solemn-looking
+solemn-mannered
+solemn-measured
+solemn-proud
+solemn-seeming
+solemn-shaded
+solemn-sounding
+solemn-thoughted
+solemn-toned
+solemn-visaged
+solenoid brake
+solent goose
+sole-ruling
+sole-saving
+sole-seated
+sole sewer
+sole-shaped
+sole sorter
+sole stamper
+sole-stitching
+sole-sufficient
+sole-thoughted
+sole tile
+sole trader
+sole tree
+sole-walking
+sol-fa
+sol-faer
+sol-faing
+sol-faist
+sol-fa syllables
+solferino red
+solicitor general
+solid-billed
+solid-bronze
+solid-browed
+solid-color
+solid-colored
+solid-drawn
+soli-deo
+solid-fronted
+solid-full
+solid-gold
+solid-headed
+solid-hoofed
+solid-horned
+solid-injection
+solid-ink
+solid-ivory
+solid-looking
+solid-ported
+solid-seeming
+solid-set
+solid-silver
+solid-tired
+solidus curve
+so-like
+Solis lacus
+sol-lunar
+solo grand
+solomon-gundy
+solo organ
+solo stop
+solo whist
+solubility product
+solution plane
+solution pressure
+solution-proof
+solution tension
+solvate theory
+solvent naphtha
+soma plant
+somber-clad
+somber-colored
+somber-looking
+somber-minded
+somber-seeming
+somber-toned
+so-named
+sonata-allegro
+sonata form
+sonder yacht
+song-and-dance
+song box
+song cycle
+song form
+song-fraught
+song maker
+song making
+song-play
+song-singing
+song sparrow
+song thrush
+song-timed
+song-tuned
+song-worthy
+song writer
+song writing
+sonic depth finder
+son-in-lawship
+sonnet sequence
+sonority syllable
+soola clover
+soon-believing
+soon-choked
+soon-clad
+soon-consoled
+soon-contented
+soon-descending
+soon-done
+soon-drying
+soon-ended
+soon-fading
+soon-known
+soon-mended
+soon-monied
+soon-parted
+soon-quenched
+soon-repeated
+soon-repenting
+soon-rotting
+soon-said
+soon-sated
+soon-speeding
+soon-tired
+soon-wearied
+soot-bespeckled
+soot-black
+soot-bleared
+soot bodies
+soot brown
+soot-colored
+soot-dark
+soot dew
+soot-fall
+soot-grimed
+soot-smutched
+soot-sowing
+sooty-faced
+sooty-mouthed
+sooty-planed
+sophistic syllogism
+sora rail
+sorb apple
+sorb tree
+sore-backed
+sore-beset
+sore-dreaded
+sore-eyed
+sore-footed
+so-regarded
+sore-pressed
+sore-taxed
+sore-toed
+sore-tried
+sore-vexed
+sore-wearied
+sore-won
+sore-worn
+sorghum brown
+sorghum midge
+sorghum smut
+Soroptimist club
+sorrel dock
+sorrel family
+sorrel tree
+sorrel vine
+sorrow-beaten
+sorrow-blinded
+sorrow-bound
+sorrow-breathing
+sorrow-breeding
+sorrow-bringing
+sorrow-burdened
+sorrow-ceasing
+sorrow-closed
+sorrow-clouded
+sorrow-daunted
+sorrowful tree
+sorrow-furrowed
+sorrow-healing
+sorrow-laden
+sorrow-melted
+sorrow-parted
+sorrow-ripening
+sorrow-seasoned
+sorrow-seeing
+sorrow-sharing
+sorrow-shot
+sorrow-shrunken
+sorrow-sick
+sorrow-sighing
+sorrow-sobbing
+sorrow-streaming
+sorrow-stricken
+sorrow-struck
+sorrow-tired
+sorrow-torn
+sorrow-wasted
+sorrow-worn
+sorrow-wounded
+sorrow-wreathen
+sorry-flowered
+sorry-looking
+sorter-out
+sorting boom
+sorting jack
+S o s
+so-seeming
+so-so
+so-soish
+sostinente pianoforte
+so-styled
+Sosva vogul
+so-termed
+so-titled
+souari-nut
+souari-nut family
+soubise sauce
+soufriere bird
+soul-adorning
+soul-amazing
+soul bell
+soul-benumbed
+soul-blind
+soul-blinded
+soul blindness
+soul-boiling
+soul-born
+soul-burdened
+soul-charming
+soul-choking
+soul-cloying
+soul-conceived
+soul-confirming
+soul-confounding
+soul-converting
+soul-corrupting
+soul curer
+soul-damning
+soul deafness
+soul-deep
+soul-delighting
+soul-destroying
+soul-devouring
+soul-diseased
+soul-dissolving
+soul-driver
+soul-enchanting
+soul-ennobling
+soul-enthralling
+soul-fatting
+soul-fearing
+soul-felt
+soul-forsaken
+soul-fostered
+soul-frighting
+soul-galled
+soul-gnawing
+soul-harrowing
+soul house
+soul-humbling
+soul-illumined
+soul-imitating
+soul-infused
+soul-killing
+soul-loving
+Soulmass day
+soul mate
+soul-moving
+soul-murdering
+soul-numbing
+soul-pained
+soul-piercing
+soul-pleasing
+soul-racking
+soul-raising
+soul-ravishing
+soul-rending
+soul-reviving
+soul-sapping
+soul-satisfying
+soul-saving
+soul scat
+soul scot
+soul-searching
+soul-shaking
+soul shot
+soul-sick
+soul-sickening
+soul-sickness
+soul silver
+soul-sinking
+soul-slaying
+soul sleep
+soul sleeper
+soul-stirring
+soul-subduing
+soul-sunk
+soul-sure
+soul-sweet
+soul-tainting
+soul-thralling
+soul-tiring
+soul-tormenting
+soul-vexed
+soul-wise
+soul-wounded
+soul-wounding
+sound-absorbing
+sound area
+sound barrier
+sound boarding
+sound bone
+sound booth
+sound bow
+sound box
+sound cage
+sound change
+sound chest
+sound compensation
+sound-conducting
+sound director
+sound-exulting
+sound field
+sound figures
+sound film
+sound-group
+sound hole
+sounding balloon
+sounding board
+sounding bottle
+sounding lead
+sounding line
+sounding machine
+sounding post
+sounding stop
+sounding tube
+sound-judging
+sound knot
+sound law
+sound lens
+sound line
+sound-making
+sound-minded
+sound money
+sound motion picture
+sound pendulum
+sound perimeter
+sound picture
+sound post
+sound-producing
+sound projector
+sound proof
+sound ranging
+sound screen
+sound-sensed
+sound-set
+sound shadow
+sound shifting
+sound-sleeping
+sound stage
+sound-stated
+sound-stilling
+sound-sweet
+sound-thinking
+sound track
+sound wave
+sound-winded
+sound-witted
+sound wormy
+soup cup
+soup-fin shark
+soup house
+soup kitchen
+soup plate
+soup shop
+soup stock
+sour-blooded
+sour-breathed
+source book
+source material
+sour-complexioned
+sour-eyed
+sour-faced
+sour-featured
+sour-headed
+sour-looked
+sour-looking
+sour-natured
+sour-sap
+sour-sap disease
+sour-smelling
+sour-sweet
+sour-tasted
+sour-tasting
+sour-tempered
+sour-tongued
+sour-visaged
+sous-lieutenant
+sou-southerly
+sous-prefect
+South african
+South american
+South arabic
+south-blowing
+south-borne
+South carolinian
+South dakotan
+South devon
+south-facing
+south-following
+south-preceding
+South sea islander
+south-seaman
+south-seeking
+south-side
+South slavs
+south-southeast
+south-southeasterly
+south-southeastward
+south-southerly
+south-southwest
+south-southwesterly
+south-southwestward
+South temperate zone
+souvenir book
+souvenir day
+souvenir hunter
+souvenir spoon
+sovereign pontiff
+sow bug
+sower type
+sow fennel
+sow-gelder
+sow grass
+so-wise
+sow thistle
+sow-tit
+soya bean
+soya-bean oil
+soybean oil
+soy pea
+space bar
+space centrode
+space charge
+space-charge effect
+space-cramped
+space curvature
+space curve
+space-embosomed
+space error
+space factor
+space-filling
+space formula
+space isomerism
+space key
+space-lattice
+space line
+space motion
+space-occupying
+space-penetrating
+space perception
+space-pervading
+space-piercing
+space-polar
+space quadrature
+space ratio
+space rule
+space-spread
+space telegraphy
+space telephony
+space-thick
+space-time
+space variation
+space velocity
+space washer
+space-world
+space writer
+spade bayonet
+spade beard
+spade-bearded
+spade cassino
+spade convention
+spade-cut
+spade-deep
+spade-dug
+spade face
+spade foot
+spade-footed
+spadefoot toad
+spade-fronted
+spade graft
+spade grass
+spade guinea
+spade handle
+spade iron
+spade lug
+spade maker
+spade money
+spade press
+spade-shaped
+spade-trenched
+spading fork
+spading harrow
+spalling hammer
+span blocks
+span-counter
+span dog
+spandrel frame
+spandrel step
+spandrel wall
+span-farthing
+spangle-baby
+spang-new
+span-hapenny
+span iron
+Spanish american
+Spanish-arab
+Spanish-arabic
+Spanish-barreled
+Spanish-born
+Spanish-bred
+Spanish-brown
+Spanish-built
+Spanish-flesh
+Spanish-indian
+Spanish-looking
+Spanish-ocher
+Spanish-phoenician
+Spanish-portuguese
+Spanish-red
+Spanish-speaking
+Spanish-style
+Spanish-top
+Spanish walnut
+Spanish-walnut oil
+Spanish wine
+Spanish yellow
+spanker boom
+span-long
+spanner-tight
+span-new
+span roof
+span shackle
+spar bridge
+spar buoy
+spar ceiling
+spar deck
+spar-decked
+spar-decker
+spare-bodied
+spare-built
+spare-fed
+spare-handed
+spare-handedly
+spare-looking
+spare-set
+sparge pipe
+spark advance
+spark arrester
+spark coil
+spark condenser
+spark discharge
+sparked-back
+spark frequency
+spark gap
+spark generator
+sparking lamp
+sparking points
+spark instant
+spark knock
+spark lead
+sparkle-blazing
+sparkle-drifting
+sparkle-eyed
+sparkle metal
+spark lever
+sparkling synchysis
+spark micrometer
+spark-over
+spark-plug
+spark potential
+spark spectrum
+spark transmission
+spark transmitter
+sparling fowl
+sparring partner
+sparrow-billed
+sparrow-blasting
+sparrow-colored
+sparrow dust
+sparrow-footed
+sparrow hawk
+sparrow owl
+sparrow pecking
+sparrow-tail
+sparrow-tailed
+sparrow-witted
+sparse-flowered
+spart grass
+spar torpedo
+spar tree
+spar varnish
+spatling poppy
+spatter cone
+spatter dash
+spatter pipe
+spatting stick
+spatulate-leaved
+spawn brick
+spawn fungus
+speak-easy
+speaker hole
+speaker key
+speaking arc
+speaking part
+speaking pipe
+speaking rod
+speaking stop
+speaking terms
+speaking trumpet
+speaking tube
+spear-bearing
+spear bed
+spear-bill
+spear-billed
+spear-bound
+spear-brandishing
+spear-breaking
+spear crowfoot
+spear-fallen
+spear-famed
+spear foot
+spear grass
+spear hand
+spear-headed
+spear-high
+spear hook
+spear javelin
+spear kin
+spear lily
+spearmint oil
+spear-nosed
+spear-pierced
+spear plate
+spear play
+spear point
+spear-pointed
+spear pyrites
+spear rest
+spear rod
+spear-shaking
+spear-shaped
+spear-skilled
+spear-splintering
+spear-swept
+spear thistle
+spear thrower
+spear-throwing
+spear widgeon
+spear-wielding
+special-delivery
+special jury
+special-process
+specialty contract
+specie payment
+specie point
+Species hamburgenses
+species pectorales
+specific gravity
+specific-gravity balance
+specific-gravity bottle
+specific-gravity bulbs
+specimen plant
+specious present
+speck block
+speckle-backed
+speckle-bellied
+speckle-billed
+speckle-breasted
+speckle-coated
+speckle-faced
+speckle loon
+speckle-marked
+speckle perch
+speckle-skinned
+speckle-starred
+speckle trout
+spectacle coot
+spectacle frame
+spectacle furnace
+spectacle iron
+spectacle stone
+specter bat
+specter candle
+specter crab
+specter-fighting
+specter-haunted
+specter lemur
+specter-looking
+specter-mongering
+specter-pallid
+specter shrimp
+specter-staring
+specter-thin
+specter-wan
+spectrum analysis
+spectrum color
+spectrum locus
+speculum metal
+speech area
+speech-bereaving
+speech-bereft
+speech-bound
+speech center
+speech choir
+speech community
+speech curve
+speech defect
+speech-famed
+speech-flooded
+speech form
+speech house
+speech island
+speech map
+speech melody
+speech reading
+speech-reporting
+speech rhythm
+speech room
+speech-shunning
+speech situation
+speech sound
+speech tune
+speech-writing
+speed boss
+speed box
+speed cone
+speed cones
+speed control
+speed controller
+speed cop
+speed counter
+speed flag
+speed frame
+speed gauge
+speed gear
+speed indicator
+speeding-place
+speed lathe
+speed-length ratio
+speed light
+speed limit
+speed maniac
+speed pulley
+speed record
+speed recorder
+speed reducer
+speed rigger
+speed road
+speed sheet
+speed sight
+speed sprayer
+speed test
+speed trap
+speed truck
+speed-up
+Speed wagon
+spell-banned
+spell-casting
+spell-caught
+spell-free
+spelling bee
+spelling book
+spelling match
+spelling pronunciation
+spelling reform
+spelling reformer
+spell-invoking
+spell-like
+spell-raised
+spell-riveted
+spell-set
+spell-sprung
+spell-stopped
+spell-struck
+spell-weaving
+spelter calciner
+spelter chills
+spelter solder
+spencer mast
+spend-all
+spend-good
+spending money
+spendthrift trust
+spent-gnat
+spent-gnat fly
+sperm aster
+spermathecal gland
+Spermaticos logos
+spermatic plexus
+spermatic veins
+spermatophore sac
+sperm candle
+sperm cell
+sperm center
+sperm nucleus
+sperm oil
+sperm receptor
+sperm sac
+sperm whale
+sperm-whale porpoise
+sperm whaler
+sperm whaling
+spewing sickness
+spey cast
+sphae-ropsidaceous
+sphagnum bog
+sphagnum frog
+spheno-occipital
+sphere-born
+sphere circle
+sphere crystals
+sphere-descended
+sphere-filled
+sphere-found
+sphere fungus
+sphere gap
+sphere geometry
+sphere-headed
+sphere tracks
+sphere-tuned
+spherometer caliper
+sphinx baboon
+sphinx caterpillar
+sphinx moth
+spice ball
+spice-bearing
+spice birch
+spice box
+spice-breathing
+spice-burnt
+spicebush swallowtail
+spice currant
+spice-fraught
+spice grinder
+spice-laden
+spice mill
+spice nut
+spice plate
+spice shop
+spice store
+spice trade
+spice tree
+spice-warmed
+spick-and-span
+spick-and-spandy
+spick-and-spanness
+spick-span-new
+spicy fleabane
+spider ant
+spider band
+spider beetle
+spider bug
+spider cart
+spider catcher
+spider cell
+spider crab
+spider diver
+spider eater
+spider fern
+spider-fingered
+spider fly
+spider grass
+spider hoop
+spider hunter
+spider leg
+spider-legged
+spider-leggy
+spider lily
+spider-limbed
+spider line
+spider mite
+spider monkey
+spider nevus
+spider orchid
+spider orchis
+spider phaeton
+spider plant
+spider-shanked
+spider shell
+spider-spun
+spider stitch
+spider wagon
+spider wasp
+spider web
+spider-webby
+spider wheel
+spiderwort family
+spiegel charger
+spiegel iron
+spigot joint
+spike-billed
+spike buck
+spike disease
+spike grass
+spike heath
+spike heel
+spike-horned
+spike-kill
+spike knot
+spike lavender
+spike-lavender oil
+spike-leaved
+spike nail
+spikenard tree
+spike oil
+spike-pitch
+spike-pitcher
+spike rush
+spike shell
+spiketail coat
+spike-tailed
+spiketail family
+spike team
+spike-tooth
+spike-tooth harrow
+spike tub
+spiking piece
+spile driver
+spiling batten
+spill box
+spillet fishing
+spilling line
+spill stream
+spinach beet
+spinach blight
+spinach-colored
+spinach dock
+spinach flea beetle
+spinach green
+spinach yellows
+spindle bander
+spindle-cell
+spindle-celled
+spindle-cell sarcoma
+spindle fiber
+spindle file
+spindle-formed
+spindle-legged
+spindle oil
+spindle-pointed
+spindle pointer
+spindle-rooted
+spindle sander
+spindle-shanked
+spindle-shaped
+spindle shell
+spindle-shinned
+spindle sprout
+spindle step
+spindle stone
+spindle stretcher
+spindle stromb
+spindle temper
+spindle tree
+spindle tuber
+spindle whorl
+spindling sprout
+spine-ache
+spine-breaking
+spine-broken
+spine cell
+spine-clad
+spine-covered
+spine-finned
+spine-headed
+spinel group
+spinel pink
+spinel-red
+spinel ruby
+spine-pointed
+spine-protected
+spine-rayed
+spine-tailed
+spine-tailed swift
+spinet desk
+spine-tipped
+spin house
+spinnaker boom
+spinning axis
+spinning frame
+spinning gland
+spinning house
+spinning jenny
+spinning lathe
+spinning machine
+spinning mammilla
+spinning mite
+spinning tube
+spinning wheel
+spinocerebellar tract
+spino-olivary
+spino-olivary tract
+spinous-branched
+spinous-finned
+spinous-foliaged
+spinous-leaved
+spinous-pointed
+spinous process
+spinous-serrate
+spinous-tailed
+spinous-tipped
+spinous-toothed
+spiny-backed
+spiny bur
+spiny-coated
+spiny-crested
+spiny-finned
+spiny-footed
+spiny-fruited
+spiny-haired
+spiny-leaved
+spiny-legged
+spiny-margined
+spiny-pointed
+spiny ray
+spiny-rayed
+spiny-ribbed
+spiny-skinned
+spiny-tailed
+spiny-tipped
+spiny-toothed
+spiral-coated
+spiral gear
+spiral-geared
+spiral-grooved
+spiral-horned
+spiral-nebula
+spiral-nebula hypothesis
+spiral-pointed
+spiral shell end mill
+spiral-spring
+spiral stairs
+spiral-vane
+spire-bearer
+spire-shaped
+spiric body
+spirit-awing
+spirit blue
+spirit-boiling
+spirit-born
+spirit-bowed
+spirit-bribing
+spirit-broken
+spirit butterfly
+spirit-cheering
+spirit-chilling
+spirit-crushed
+spirit-crushing
+spirit-drinking
+spirit duck
+spirit-fallen
+spirit-freezing
+spirit-froze
+spirit-guided
+spirit-haunted
+spirit-healing
+spirit-inspiring
+spirit level
+spirit leveling
+spirit-lifting
+spirit-marring
+spirit-numb
+spirit-piercing
+spirit-possessed
+spirit-prompted
+spirit-pure
+spirit-quelling
+spirit rapper
+spirit rapping
+spirit-refreshing
+spirit-rousing
+spirit-sinking
+spirit-small
+spirit-soothing
+spirit-speaking
+spirit-stirring
+spirit-stricken
+spirit-thrilling
+spirit-torn
+spirit-troubling
+spiritual-minded
+spiritual-mindedly
+spiritual-mindedness
+spirituous tincture
+spiritus asper
+spiritus camphorae
+spiritus frumenti
+spiritus lenis
+spiritus mundi
+spirit varnish
+spirit vinegar
+spirit-walking
+spirit-wearing
+spirit-wise
+spirit world
+spirit writing
+spirketing plate
+spiro compound
+spit bug
+spit curl
+spite fence
+spite wall
+spite work
+spit image
+spitting cobra
+spitting image
+spitting snake
+spittle fly
+spittle insect
+spitz dog
+splash back
+splash dam
+splash feed
+splash-lubricate
+splash lubrication
+splash system
+splash-tight
+splat-back
+splatter-faced
+splay-edged
+splay-kneed
+splay-legged
+splay-toed
+spleen amaranth
+spleen-born
+spleen-devoured
+spleen-pained
+spleen-piercing
+spleen-shaped
+spleen-sick
+spleen stone
+spleen-struck
+spleen-swollen
+spleenwort bush
+splice bar
+splice box
+splice graftage
+splice grafting
+splicing chamber
+splicing hammer
+spline broach
+spline milling machine
+spline shaft
+spline weight
+splint armor
+splint bar
+splint basket
+splint bone
+splint-bottom
+splint-bottomed
+splint coal
+splinter bar
+splinter bulkhead
+splinter deck
+splint peeler
+splish-splash
+split-bottom
+split-eared
+split-edge
+split-level
+split-lift
+split-mouth
+splitmouth sucker
+split-nosed
+split nut
+split-oak
+split-phase
+split second
+split shot
+split stroke
+split-timber
+splitting chisel
+splitting factor
+splitting gun
+splitting plate
+split-tongued
+split turning
+split-up
+split wheel
+split wing
+splitworm moth
+spoil bank
+spoil ground
+spoil-mold
+spoil-paper
+spoils system
+spoke auger
+spoke stitch
+spondylitis deformans
+sponge bath
+sponge-bearing
+sponge cloth
+sponge-colored
+sponge cucumber
+sponge diver
+sponge-diving
+sponge drop
+sponge fisher
+sponge fisherman
+sponge-fishing
+sponge-footed
+sponge gourd
+sponge grafting
+sponge hook
+sponge iron
+sponge-leaved
+sponge-painted
+sponge-shaped
+sponge tree
+sponging house
+spongy-flowered
+spongy-footed
+spongy-looking
+spongy-rooted
+spongy-wet
+spongy-wooded
+spon-image
+spool bed
+spooling bracket
+spool-shaped
+spool turner
+spool winder
+spoon-back
+spoon bait
+spoon-beaked
+spoon-billed
+spoon bit
+spoon bow
+spoon-bowed
+spoon brake
+spoon bread
+spoon chisel
+spoon end
+spoon-fashion
+spoon-fashioned
+spoon-fed
+spoon-feed
+spoon-feeding
+spoon food
+spoon-formed
+spoon gouge
+spoon hook
+spoon iron
+spoon lever
+spoon meat
+spoon nail
+spoon net
+spoon oar
+spoon-shaped
+spoon tool
+spoon victual
+spoonwood ivy
+spore ball
+spore case
+spore cell
+spore fruit
+spore mother cell
+spore print
+spore sac
+sport-affording
+sport clothes
+sport-giving
+sport-hindering
+sporting blood
+sporting book
+sporting editor
+sporting house
+sporting man
+sporting page
+sporting section
+sporting-wise
+sport-loving
+sport-making
+sports clothes
+sports editor
+sports page
+sports section
+sport-starved
+spot ball
+spot-barred
+spot-billed
+spot blotch
+spot board
+spot card
+spot check
+spot cotton
+spot-drill
+spot dyeing
+spot-eared
+spot-face
+spot-grind
+spot lamp
+spot-leaved
+spot lens
+spot lighting
+spot-lipped
+spot map
+spot-mill
+spot news
+spot pawn
+spot price
+spot rot
+spot-soiled
+spot stroke
+spotted-beaked
+spotted-bellied
+spotted-billed
+spotted-breasted
+spotted-eared
+spotted fever
+spotted-fever tick
+spotted-finned
+spotted-leaved
+spotted-necked
+spotted-tailed
+spotted-winged
+spotting machine
+spotting motion
+spot weld
+spot welding
+spot white
+spot-winged
+spot zone
+spout adz
+spout fish
+spout hole
+spouting horn
+spout shell
+spraddle-legged
+sprag road
+sprain fracture
+sprangle-top
+sprat barley
+sprat borer
+sprat day
+sprat loon
+spray carburetor
+spray-casting
+spray-decked
+spray drain
+spray gun
+spray nozzle
+spray outfit
+spray-shaped
+spray-topped
+spray-washed
+spray-wet
+spread-eagle
+spread-eagleism
+spread-eagleist
+spreader car
+spreading board
+spreading machine
+spread reflection
+spread-set
+spread sheet
+sprig-bit
+sprig bolt
+sprig budding
+sprig-tailed
+spring azure
+spring back
+spring balance
+spring barley
+spring base
+spring beam
+spring beauty
+spring bed
+spring beetle
+spring bell
+spring binder
+spring block
+spring-blooming
+spring-blossoming
+spring bolt
+spring-born
+spring bows
+spring brass
+spring-budding
+spring caliper
+spring calipers
+spring cankerworm
+spring catarrh
+spring catch
+spring chair
+spring chicken
+spring-clean
+spring-cleaner
+spring-cleaning
+spring clip
+spring collet
+spring cotter
+spring cowslip
+spring cress
+spring die
+spring dividers
+spring draft gear
+spring-driven
+springer spaniel
+spring faucet
+spring fever
+spring flood
+spring-flowering
+spring fly
+spring-framed
+spring frog
+spring-gathered
+spring governor
+spring grain aphis
+spring grass
+spring green
+spring-grown
+spring gun
+spring-habited
+spring hammer
+spring harrow
+spring-headed
+spring heath
+spring heel
+spring-heeled
+spring herring
+spring hoe
+spring hook
+springing line
+springing wall
+spring iris
+spring-jointed
+spring key
+spring lamb
+spring latch
+spring leaf
+spring ligament
+spring lily
+spring lock
+spring-made
+spring mattress
+spring mushroom
+spring needle
+spring nut
+spring oats
+spring orange
+spring orchid
+spring pad
+spring padlock
+spring peeper
+spring-peering
+spring perch
+spring pin
+spring-planted
+spring plate
+spring-plow
+spring pole
+spring rail
+spring-rail frog
+spring-raised
+spring ring
+spring rye
+spring safety valve
+spring sage
+spring saxifrage
+spring scale
+spring scorpion grass
+spring seat
+spring-seated
+spring-set
+spring-snecked
+spring snowflake
+spring-sowed
+spring-sown
+spring-spawning
+spring starflower
+spring stay
+spring steel
+spring-stricken
+spring stripper
+spring switch
+spring-taught
+spring temper
+spring-tempered
+spring-tight
+spring tool
+spring tooth
+spring-touched
+spring-trip
+spring-trip hoe
+spring valve
+spring vetch
+spring vetchling
+spring vise
+spring washer
+spring water
+spring weir
+spring-well
+spring wheat
+spring wheel
+sprinkler head
+sprinkler system
+sprint medley
+sprint race
+spritsail yard
+sproat hook
+sprocket wheel
+sprout cell
+sprouted oats
+sprout forest
+spruce yellow
+sprung rhythm
+spud casing
+spudding bar
+spule-bane
+spun hay
+spun-out
+spur-bearing
+spur bit
+spur blight
+spur bunting
+spur chuck
+spur-clad
+spur-driven
+spur-finned
+spur forger
+spur fowl
+spur-galled
+spur gear
+spur-geared
+spur gearing
+spur gear wheel
+spurge daphne
+spurge family
+spurge flax
+spurge ipecac
+spurge laurel
+spurge moth
+spurge nettle
+spurge olive
+spurge thyme
+spur-gilled
+spur grass
+spur-heeled
+spur-jingling
+spurling line
+spur mortise gear
+spur pepper
+spur pinion
+spur pruning
+spur royal
+spur ryal
+spurry sandwort
+spur-shaped
+spur shell
+spur shore
+spur stone
+spur-tailed
+spur timber
+spur-toed
+spur track
+spur tree
+spur valerian
+spur whang
+spur wheel
+spur-winged
+sputum cup
+squab broiler
+squab pie
+squad car
+squads-left
+squads-right
+squall cloud
+squall line
+squam duck
+squamo-occipital
+squanter-squash
+square-barred
+square-based
+square bit
+square-bladed
+square-bodied
+square body
+square-bottomed
+square bracket
+square-browed
+square-built
+square-butted
+square-cheeked
+square-chinned
+square contingency
+square-countered
+square-cut
+square dance
+square deal
+square dealing
+square-draw
+square-drill
+square-eared
+square-edged
+square-elbowed
+square-faced
+square-figured
+square file
+square-fronted
+square-headed
+Squarehead wheat
+square-hewn
+square-jawed
+square joint
+square-jointed
+square knot
+square-lipped
+square-looking
+square-made
+square mark
+square-marked
+square-meshed
+square-mouthed
+square-necked
+square-nosed
+square rig
+square-rigged
+square-rigger
+square-rumped
+square-set
+square-set stoping
+square-shafted
+square-shaped
+square-shouldered
+square-skirted
+square-stalked
+square-stem
+square-stemmed
+square-sterned
+square-tailed
+square-thread
+square-threaded
+square-tipped
+square-toed
+square-toedness
+square-toes
+square-topped
+square-towered
+square wave
+squaring lathe
+squarroso-dentate
+squarroso-laciniate
+squarroso-pinnatipartite
+squarroso-pinnatisect
+squash beetle
+squash bite
+squash borer
+squash bug
+squash flea beetle
+squash ladybird
+squash rackets
+squash tennis
+squash-vine borer
+squat board
+squat-bodied
+squat-built
+squat-hatted
+squat tag
+squatter sovereignty
+squaw carpet
+squaw corn
+squaw-drops
+squaw duck
+squaw huckleberry
+squawk duck
+squaw man
+squaw mint
+squaw vine
+squaw winter
+squeegee roller
+squeeze play
+squeeze-up
+squid hound
+squid-jigger
+squid-jigging
+squill blue
+squill-like
+squinancy berry
+squint brick
+squint-eye
+squint-eyed
+squint-eyedness
+squire snapper
+squirrel cage
+squirrel-colored
+squirrel corn
+squirrel cup
+squirrel-eyed
+squirrel food
+squirrel frog
+squirrel grass
+squirrel hake
+squirrel hawk
+squirrel-headed
+squirrel-limbed
+squirrel-minded
+squirrel monkey
+squirrel mouse
+squirrel phalanger
+squirrel plague
+squirrel rifle
+squirrels-foot fern
+squirrel shrew
+squirrel tail
+squirreltail grass
+squirrel-trimmed
+squirt can
+squirt-fire
+squirt gun
+squirting cucumber
+squish-squash
+squitch grass
+S ray
+S-shaped
+stab culture
+stable-born
+stable color
+stable fly
+stable oscillation
+stable police
+stab wages
+staccato mark
+stacking band
+stacking belt
+stacking swivel
+stack process
+stack room
+stadia hair
+stadia rod
+stadia wire
+staff angle
+staff bead
+staff captain
+staff college
+staff commander
+staff corps
+staff degree
+staff department
+staff-herd
+staff notation
+staff officer
+staff ride
+staff rush
+staff sergeant
+staff sling
+staff surgeon
+staff system
+staff tree
+staff-tree family
+staff vine
+staff walk
+stag beetle
+stage-blanks
+stage-bleed
+stage boat
+stage box
+stage carriage
+stage cloth
+stage coachman
+stage direction
+stage director
+stage door
+stage effect
+stage fright
+stage-frighten
+stage-manage
+stage management
+stage manager
+stage managership
+stage micrometer
+stage name
+stage play
+stage player
+stage playing
+stage right
+stage-set
+stage setter
+stage setting
+stage-struck
+stag-evil
+stage wagon
+stage wait
+stage whisper
+stag-eyed
+stag gang
+stagger grass
+staggering bob
+stagger spokes
+stagger wires
+stag-hafted
+stag-handled
+stag-headed
+stag-headedness
+staghorn coral
+stag-horned
+staghorn fern
+staghorn moss
+staghorn sumac
+stag moss
+stagnant-blooded
+stagnant-minded
+stagnant-souled
+stag-necked
+stag sumac
+stag-sure
+stag tick
+staight-bred
+staircase curve
+staircase shell
+stair horse
+stair rail
+stair rod
+stair-step
+stair-stepper
+stair tower
+stair turret
+stair well
+stair wire
+stake boat
+stake body
+stake driver
+stake horse
+stake net
+Stake presidency
+stake race
+stalactite vault
+stalagmite marble
+stale-drunk
+stale-grown
+stale-mouthed
+stale-worn
+stalk borer
+stalk disease
+stalk-eyed
+stalking-horse
+stalk smut
+stall-fed
+stall-feed
+stalling speed
+stallion plague
+stall-like
+stall-master
+stall plate
+stall reader
+stamp battery
+stamp book
+stamp booklet
+stamp copper
+stamp dealer
+stamp duty
+stamp hammer
+stamping ground
+stamping mill
+stamp licker
+stamp-licking
+stamp mill
+stamp note
+stamp rock
+stamp tax
+stanchion gun
+standard-bearer
+standard-bearership
+standard-bred
+standard-sized
+standard-wing
+stand-by
+stand-down
+stand-easy
+stander-by
+stand fire
+stand hawk
+stand house
+stand-in
+standing room
+standing vise
+stand method
+standoff coat
+standoff half
+stand oil
+stand rest
+St andrew
+stand-to
+stand-up
+stank hen
+stannel hawk
+staple-fashion
+staple fiber
+staple fur
+staple-headed
+staple punch
+staple right
+staple-shaped
+stapling machine
+star anise
+star aniseed
+star anise oil
+star antimony
+star apple
+star-aspiring
+star-bearing
+star-bedecked
+star-bedizened
+star belt
+star-bespotted
+star-bestudded
+star-blasting
+Star boat
+star bomb
+star-born
+star-broidered
+star buzzard
+star capsicum
+star catalogue
+star-chamber
+Star chamber
+star chart
+starch blue
+starch cellulose
+starch corn
+starch-digesting
+star check
+starch gum
+starch hyacinth
+star chickweed
+starch layer
+starch paste
+starch-producing
+starch room
+starch sheath
+starch sirup
+starch-sized
+starch star
+starch tree
+Star class
+star-climbing
+star cloud
+star cluster
+star colors
+star-connected
+star connection
+star coral
+star count
+star-crossed
+star cucumber
+star-decked
+star density
+star-directed
+star disk
+star-distant
+star-dogged
+star drift
+star drill
+star dust
+stare-about
+star-embroidered
+star-eyed
+star facet
+star-fashion
+star-fed
+star feed
+star fern
+star finch
+star finder
+starfish flower
+star-flowered
+star fort
+star gauge
+star-gazing
+star gear
+star ghost
+star gooseberry
+star grass
+star hummingbird
+star hyacinth
+star image
+star-inwrought
+star ipomoea
+star jasmine
+star jelly
+stark-awake
+stark-becalmed
+stark-blind
+stark-calm
+stark-dead
+stark-drunk
+stark-dumb
+stark-false
+stark-mad
+stark-naked
+stark-naught
+stark-new
+stark-raving
+stark-spoiled
+stark-staring
+stark-stiff
+stark-wild
+stark-wood
+star-leaved
+star-led
+star lily
+starling stone
+star lot
+star map
+star metal
+star motion
+star-mouthed
+star-nosed
+star pagoda
+star-paved
+star-peopled
+star pepper
+star phlox
+star pine
+star place
+star plum
+star point
+star polygon
+star position
+star-proof
+star quartz
+star ratio
+star reed
+star-ribbed
+star route
+star ruby
+starry-bright
+starry-eyed
+starry-flowered
+starry-golden
+starry-headed
+starry-nebulous
+star sapphire
+star saxifrage
+star-scattered
+star scout
+star-shaped
+star shell
+star shower
+star-skilled
+star skunk
+star slough
+star-spangled
+star spray
+star-staring
+star streaming
+star-studded
+star-surveying
+star-sweet
+star system
+star-taught
+starter-off
+star thistle
+star-throated
+star time
+starting box
+starting friction
+starting note
+starting post
+starting punch
+starting torque
+star trail
+start-stop switch
+star tulip
+start-up
+starvation wages
+star violet
+star-watching
+star-wearing
+star wheel
+star winding
+star-wise
+star-ypointing
+state-aided
+state-caused
+state-changing
+State council
+State department
+state-educated
+state-enforced
+state-fed
+stately-beauteous
+stately-grave
+stately-paced
+stately-sailing
+stately-storied
+stately-written
+state-making
+state-mending
+state mutual
+state note
+state-owned
+state-paid
+state paper
+state-pensioned
+state prison
+state-provided
+state-provisioned
+state-prying
+state-ridden
+state-ruling
+States-general
+state-socialist
+states-people
+state-taxed
+state trial
+state-wide
+state-wielding
+station agent
+station break
+station day
+station error
+station hospital
+station house
+station hut
+station jack
+station keeping
+station point
+station pointer
+station pole
+station selector
+station wagon
+statuary marble
+statue-blind
+statue-bordered
+statue maker
+statue making
+statues personal
+statue-turning
+status emphaticus
+statute-barred
+statute book
+statute fair
+statute labor
+statute law
+statute merchant
+statute mile
+statute roll
+statutes mixed
+statute staple
+St augustine grass
+stave oak
+stave pipe
+stave rhyme
+stay-a-while
+stay bar
+stay-bearer
+stay-bolt
+stay boom
+stay busk
+stay chain
+stay girder
+stay hole
+stay-in
+stay-in strike
+stay law
+stay-log
+stay pin
+stay plow
+staysail schooner
+stay tackle
+stay tap
+stay tube
+steady-eyed
+steady-footed
+steady-going
+steady-handed
+steady-headed
+steady-hearted
+steady-looking
+steady-minded
+steady-nerved
+steady pin
+steady rest
+steak hammer
+steak raid
+steam beer
+steam blow
+steam blower
+steamboat coal
+steamboat ratchet
+steam boiler
+steam boiler insurance
+steam box
+steam carriage
+steam case
+steam chest
+steam-cleaned
+steam coal
+steam cock
+steam coil
+steam color
+steam condenser
+steam-cooked
+steam cure
+steam-cut
+steam cylinder
+steam digger
+steam-distill
+steam distillation
+steam dome
+steam-dredge
+steam dredger
+steam-dried
+steam-driven
+steam drop
+steam drop hammer
+steam-eating
+steam-engine
+steam engineer
+steam engineering
+steamer anchorage
+steamer-borne
+steamer captain
+steamer chair
+steamer contract
+steamer crew
+steamer cruise
+steamer dock
+steamer duck
+steamer freight
+steamer funnel
+steamer hull
+steamer landing
+steamer lane
+steamer line
+steamer passenger
+steamer port
+steamer road
+steamer route
+steamer sailing
+steamer service
+steamer siren
+steamer smoke
+steamer smokestack
+steamer subsidy
+steamer ticket
+steamer traffic
+steamer travel
+steamer trunk
+steamer voyage
+steamer wharf
+steamer whistle
+steam excavator
+steam feed
+steam filature
+steam-filled
+steam fire engine
+steam fit
+steam fitter
+steam fitting
+steam frigate
+steam gas
+steam gauge
+steam-going
+steam gun
+steam hammer
+steam harvester
+steam heat
+steam-heated
+steam heater
+steam heating
+steam injector
+steam jacket
+steam jammer
+steam joint
+steam knife
+steam lap
+steam-laundered
+steam lead
+steam line
+steam locomotive
+steam loop
+steam mason
+steam metal
+steam molder
+steam navvy
+steam nigger
+steam organ
+steam owner
+steam packing
+steam piano
+steam piping
+steam plow
+steam-pocket
+steam point
+steam port
+steam press
+steam printing
+steam-processed
+steam-propelled
+steam pump
+steam ram
+steam-ridden
+steam road
+steam-roll
+steam-roller
+steam room
+steamship coal
+steamship company
+steamship freight
+steamship lane
+steamship line
+steamship mail
+steamship office
+steamship route
+steamship service
+steamship ticket
+steamship traffic
+steamship travel
+steamship voyage
+steam shovel
+steam sizes
+steam sloop
+steam stamp
+steam still
+steam table
+steam tackle
+steam thresher
+steam trap
+steam-treated
+steam tug
+steam turbine
+steam-turbine locomotive
+steam twill
+steam-type
+steam valve
+steam vessel
+steam whistle
+steam-wrought
+steel bar
+steel baron
+steel-black
+steel-blue
+steel-bound
+steel-bright
+steel bronze
+steel-cage
+steel-cage construction
+steel-capped
+steel-cased
+steel-clad
+steel-clenched
+steel-cold
+steel-colored
+steel company
+steel concrete
+steel construction
+steel-covered
+steel-cut
+steel-digesting
+steel drawer
+steel dresser
+steel-edged
+steel electrotype
+steel emery
+steel engraver
+steel engraving
+steel-faced
+steel factory
+steel fiber
+steel-framed
+steel glass
+steel-grained
+steel-graven
+steel-gray
+steel-green
+steel hand
+steel-hard
+steel-hardened
+steel-head
+steel-headed
+steel-hilted
+steel-lined
+steel magnate
+steel man
+steel manufacturer
+steel manufacturing
+steel master
+steel measurer
+steel merchant
+steel mill
+steel-nerved
+steel-pen
+steel plate
+steel-plated
+steel-pointed
+steel presser
+steel-rimmed
+steel-riveted
+steel-shafted
+steel share
+steel-sharp
+steel-shod
+steel spring
+steel-strong
+steel-studded
+steel-tempered
+steel-tipped
+steel-tired
+steel-topped
+steel town
+steel trap
+steel wire gauge
+steep-ascending
+steep-backed
+steep-bending
+steep-descending
+steep-faced
+steep-gabled
+steep-hanging
+steeple bellflower
+steeple-crown
+steeple-crowned
+steeple engine
+steeple hat
+steeple-head
+steeple-high
+steeple hunt
+steeple hunter
+steeple hunting
+steeple jack
+steeple-jacking
+steeple-loving
+steeple race
+steeple racer
+steeple racing
+steeple-roofed
+steeple-shadowed
+steeple-shaped
+steeple skull
+steeple-studded
+steeple-topped
+steep-pitched
+steep-pointed
+steep-rising
+steep-roofed
+steep-scarped
+steep-sided
+steep-streeted
+steep-to
+steep-up
+steep-walled
+steep-yawning
+steerage passenger
+steering arm
+steering axle
+steering box
+steering bridge
+steering column
+steering committee
+steering crutch
+steering engine
+steering fan
+steering fork
+steering gear
+steering handle
+steering head
+steering joint
+steering knuckle
+steering lever
+steering light
+steering line
+steering lock
+steering oar
+steering pillar
+steering wheel
+steer oar
+stellate-crystal
+stellate-crystal fungus
+stellate-pubescent
+stem anchor
+stem-bearing
+stem blight
+stem borer
+stem break
+stem-bud
+stem canker
+stem-clasping
+stem climber
+stem cutting
+stem eelworm
+stem end
+stem-end rot
+stem father
+stem ginger
+stem girdler
+stem leaf
+stem length
+stem mother
+stem rot
+stem rust
+stem sapper
+stem sawfly
+stem-sick
+stem sickness
+stem smut
+stem stitch
+stem turn
+stem-wind
+stem-winder
+stem-winding
+stem work
+stench bomb
+stencil cutter
+stencil cutting
+stencil machine
+stencil painting
+stencil paper
+stencil pen
+stenographing machine
+stent net
+stent roll
+step-back
+step-back relay
+step bearing
+step box
+step chair
+step-cline
+step-cone
+step-cone pulley
+step cut
+step dance
+step dancer
+step dancing
+step-down
+step fault
+step function
+step gauge
+step grate
+step-in
+step joint
+step-log
+step-off
+steppe cat
+steppe disease
+steppe murrain
+steppe rue
+stepping-off
+stepping-off place
+stepping-out
+stepping pace
+step rail
+step rate
+step socket
+step tap
+step terrace
+step turn
+step-up
+step ward
+step wheel
+stercoral ulcer
+stereo formula
+stern anchor
+stern-bearer
+stern board
+stern boat
+stern-born
+stern-browed
+stern chase
+stern chaser
+stern-eyed
+stern-faced
+stern fast
+stern-featured
+stern frame
+stern gallery
+stern-gated
+stern gun
+stern hatch
+stern hatchway
+stern hook
+stern-issuing
+stern knee
+stern ladder
+stern line
+stern-lipped
+stern-looking
+stern-minded
+stern-mouthed
+stern race
+stern rail
+stern sea
+stern-set
+stern sheets
+stern-sounding
+stern-spoken
+stern timber
+stern tube
+stern-visaged
+stern walk
+stern wave
+stern wheel
+stern-wheeler
+stern window
+sterro metal
+sthula sharira
+stick-at-it
+stick-at-itive
+stick-at-itiveness
+stick-back
+stick bean
+stick bug
+stick-button
+stick-candy
+stick caterpillar
+stick chair
+stick control
+stick-dice
+stick-ear
+sticker-in
+sticker-on
+sticker-up
+sticking piece
+sticking place
+sticking plaster
+sticking point
+sticking salve
+sticking tommy
+stick insect
+stick-jaw
+stick-lac
+stick-leg
+stick licorice
+stick-out
+stick-ride
+stick rider
+stick salve
+sticktight flea
+stick-to-itive
+stick-to-itively
+stick-to-itiveness
+stick-up
+sticky dog
+sticky-eyed
+stiff-arm
+stiff-armed
+stiff aster
+stiff-backed
+stiff-bearded
+stiff-bent
+stiff-billed
+stiff bit
+stiff-bodied
+stiff-bolting
+stiff-boned
+stiff-bosomed
+stiff-branched
+stiff-built
+stiff-clay
+stiff-collared
+stiff-docked
+stiff-dressed
+stiff-eared
+stiffening order
+stiffening truss
+stiff gentian
+stiff-grown
+stiff-haired
+stiff-horned
+stiff-ironed
+stiff-jointed
+stiff-jointedness
+stiff-kneed
+stiff-lamb disease
+stiff-land
+stiff-leathered
+stiff-leaved
+stiffleg derrick
+stiff-legged
+stiff-limbed
+stiff-lipped
+stiff-minded
+stiff-mud
+stiff-neck
+stiff-necked
+stiff-neckedly
+stiff-neckedness
+stiff-plate
+stiff-pointed
+stiff-rimmed
+stiff-rumped
+stiff-rusting
+stiff-shanked
+stiff-skirted
+stiff-starched
+stiff-stretched
+stiff-swathed
+stiff-tailed
+stiff-uddered
+stiff-veined
+stiff-winged
+stiff-witted
+stifle bone
+stifle-out
+stifle shoe
+stigma disk
+stigmal vein
+stilbene dye
+stilbine color
+stil-de-grain yellow
+stiletto fly
+stiletto-proof
+stiletto-shaped
+still-admired
+still alarm
+still box
+still-burn
+still-closed
+still-continued
+still-continuing
+still-diminishing
+still-existing
+still-fish
+still-fisher
+still-florid
+still-flowing
+still-fresh
+still-gazing
+still head
+still hunt
+still-hunter
+still-hunting
+still-improving
+still-increasing
+stilling box
+stilling well
+still life
+still liquor
+still-living
+still-new
+still-pagan
+still-pining
+still-recurring
+still-refuted
+still-renewed
+still-repaired
+still return
+still-rocking
+still-sick
+still-slaughtered
+still-unmarried
+still-vexed
+still watcher
+still-watching
+still water
+still-young
+stilt bug
+stilt palm
+stilt petrel
+stilt plover
+stilt sandpiper
+stilt wheel
+stimulus coefficient
+stimulus error
+stimulus-response
+stimulus threshold
+stimulus word
+sting bladder
+sting moth
+sting nettle
+sting ray
+sting winkle
+stink bell
+stink bomb
+stink brand
+stink cat
+stink fly
+stink gland
+stink grass
+stipple board
+stipple paper
+stipple streak
+stirrup bar
+stirrup bone
+stirrup cover
+stirrup cup
+stirrup dram
+stirrup glass
+stirrup iron
+stirrup leather
+stirrup oil
+stirrup pump
+stirrup strap
+stirrup-vase
+stir-up
+stitching horse
+stitch rivet
+stitch watermark
+stitch wheel
+St julien
+St lawrence skiff
+St louis
+St louisan
+St lucie cherry
+St mary-le-bow
+Stoa basileios
+stock account
+stock beer
+stock beet
+stock-blind
+stock block
+stock board
+stock book
+stock buckle
+stock card
+stock cattle
+stock certificate
+stock change
+stock company
+stock dividend
+stock dove
+stock duck
+stock-dumb
+stock eagle
+stock exchange
+stock family
+stock farm
+stock farmer
+stock farming
+stock feeder
+stock fire
+stock gillyflower
+stock gold
+stock hawk
+stock horse
+stocking board
+stocking cutter
+stocking cutter tool
+stocking frame
+stocking hose
+stocking knitter
+stocking knitting
+stocking loom
+stocking machine
+stocking maker
+stocking making
+stocking needle
+stocking sole
+stocking spinner
+stocking stitch
+stocking trimmer
+stocking weaver
+stock insurance company
+stock ledger
+stock list
+stock lock
+stock market
+stock note
+stock owl
+stock pass
+stock pigeon
+stock pile
+stock power
+stock pump
+stock purse
+stock rail
+stock raiser
+stock raising
+stock rate
+stock receipt
+stock record
+stock room
+stock saddle
+stocks machine
+stock soap
+stock station
+stock-still
+stock tackle
+stock ticker
+stock vaccine
+stock whaap
+stock whip
+stole fee
+stole mesh
+stole-shaped
+stomach-ache
+stomach-achy
+stomach bucket
+stomach cough
+stomach-filling
+stomach-formed
+stomach-hating
+stomach-healing
+stomach piece
+stomach pump
+stomach-qualmed
+stomach-shaped
+stomach-sick
+stomach-soothing
+stomach staggers
+stomach sweetbread
+stomach-tight
+stomach tooth
+stomach tube
+stomach-turning
+stomach-twitched
+stomach-weary
+stomach-whetted
+stomach worm
+stomach-worn
+stomodaeal food
+Stone age
+stone-arched
+stone-asleep
+stone ax
+stone bag
+stone basil
+stone bass
+stone-bladed
+stone-blind
+stone-blindness
+stone blue
+stone boiling
+stone bolt
+stone borer
+stone brake
+stone bramble
+stone breaker
+stone breaking
+stone brick
+stone-broke
+stone-brown
+stone bruise
+stone-buff
+stone-built
+stone butter
+stone canal
+stone cat
+stone cell
+stone circle
+stone-cleaving
+stone clover
+stone coal
+stone-coated
+stone-cold
+stone collar
+stone color
+stone-colored
+stone contractor
+stone coral
+stone-covered
+stone crab
+stone crayfish
+stone cricket
+stone crusher
+stone curlew
+stone-cutting
+stone-darting
+stone-dead
+stone-deaf
+stone-deafness
+stone devil
+stoned-horse
+stone dresser
+stone dressing
+stone-dumb
+stone-dust
+stone-eared
+stone-eating
+stone-edged
+stone-eyed
+stone-faced
+stone falcon
+stone fence
+stone fern
+stone-floored
+stone fly
+stone fox
+stone fruit
+stone grape
+stone gray
+stone green
+stone grig
+stone-ground
+stone hammer
+stone-hard
+stone harmonicon
+stone hawk
+stone-headed
+stone-horse
+stone jug
+stone leek
+stone lichen
+stone lifter
+stone lily
+stone lime
+stone-lined
+stone-living
+stone lugger
+stone marten
+stone mill
+stone-milled
+stone mint
+stone money
+stone-moving
+stone oak
+stone ocher
+stone oil
+stone orpine
+stone owl
+stone parsley
+stone-paved
+stone perch
+stone picker
+stone-pillared
+stone pine
+stone pit
+stone pitch
+stone plover
+stone proof
+stone rag
+stone-ribbed
+stone roller
+stone-rolling
+stone-roofed
+stoner-out
+stone rue
+stone run
+stone runner
+stone sclerenchyma
+stone shifter
+stone-silent
+stone-smickle
+stone snipe
+stone-still
+stone sucker
+stone-throwing
+stone thrush
+stone toter
+stone-using
+stone-vaulted
+stone wall
+stone-walled
+stone-walling
+stone wire
+stone writing
+stone yellow
+stoney gate
+stony-blind
+stony-broke
+stony coral
+stony-eyed
+stony-faced
+stony-jointed
+stony-pitiless
+stony-toed
+stony-winged
+stool end
+stool land
+stool pigeon
+stoop-gallant
+stoop-shouldered
+stop bead
+stop clock
+stop-cylinder press
+stop drill
+stope drill
+stopen bottle
+stop finger
+stop gauge
+stop key
+stop knob
+stop light
+stop list
+stop log
+stop-loss
+stop-loss order
+stop motion
+stop needle
+stop net
+stop nut
+stop-off
+stop-open
+stop order
+stop payment
+stopper bolt
+stopper hole
+stopper knot
+stop pin
+stopping condenser
+stopping knife
+stopping place
+stopping train
+stop plank
+stop plate
+stop press
+stop rod
+stop screw
+stop seine
+stop shot
+stop spine
+stop street
+stop stroke
+stop tester
+stop thief
+stop thrust
+stop valve
+stop watch
+stop wheel
+storage battery
+storage bellows
+storage cell
+storage egg
+storage rot
+storage spot
+storax benzoin
+storax family
+store card
+store clothes
+store dresser
+store manager
+store order
+store pay
+store sign
+stores ledger
+store teeth
+stork-billed
+stork-fashion
+storm-armed
+storm axis
+storm-beat
+storm-beaten
+storm bell
+storm-boding
+storm boot
+storm-breathing
+storm breeder
+storm cellar
+storm center
+storm cloud
+storm current
+storm door
+storm-drenched
+storm drum
+storm-encompassed
+storm-felled
+storm finch
+storm flag
+storm glass
+storm-god
+storm gray
+storming party
+storm jib
+storm kite
+storm-laden
+storm lane
+storm-lit
+storm mizzen
+storm petrel
+storm porch
+storm-portending
+storm-presaging
+storm-rent
+storm rubber
+storm sail
+storm sash
+storm serge
+storm sewer
+storm signal
+storm stay
+storm-stayed
+storm-swept
+storm thrush
+storm-tight
+storm-tossed
+storm trooper
+storm troops
+storm warning
+storm-washed
+storm window
+storm-wise
+storm-worn
+storm-wracked
+stormy petrel
+story hour
+story rod
+story writer
+story-writing
+story-wrought
+stout-armed
+stout-billed
+stout-bodied
+stout-girthed
+stout-legged
+stout-limbed
+stout-looking
+stout-minded
+stout-ribbed
+stout-sided
+stout-soled
+stout-stalked
+stout-stomached
+stout-winged
+stout-worded
+stove bolt
+stove coal
+stove distillate
+stove-dried
+stoved salt
+stove glass
+stove-heated
+stove heating
+stove length
+stove lifter
+stovepipe hat
+stove plant
+stove polish
+stove-warmed
+stow-boating
+stow net
+straddle-face
+straddle-fashion
+straddle-legged
+straddle mill
+straddle pipe
+straggle-brained
+straggle tooth
+stragling money
+straight accent
+straight angle
+straight arch
+straight-arm
+straight-backed
+straight-barred
+straight-barreled
+straight-billed
+straight-bitted
+straight-bodied
+straight-body
+straight-cut
+straight-drawn
+straight-edged
+straight face
+straight-faced
+straight-falling
+straight-fibered
+straight-flung
+straight-flute
+straight-fluted
+straight-front
+straight-going
+straight grain
+straight-grained
+straight-growing
+straight-grown
+straight-haired
+straight-hairedness
+straight-hemmed
+straight-horned
+straight-jointed
+straight-leaved
+straight-legged
+straight-limbed
+straight-line
+straight-lined
+straight-line-frequency
+straight-made
+straight-minded
+straight-necked
+straight-nosed
+straight-out
+straight-pull
+straight-ribbed
+straight-shaped
+straight-shooting
+straight-side
+straight-sided
+straight-sliding
+straight-spoken
+straight-stemmed
+straight-stocked
+straight-tail dog
+straight-tailed
+straight-trunked
+straight-tusked
+straight-veined
+straightway drill
+straight-winged
+strain band
+strain diagram
+strain ellipsoid
+strainer vine
+straining arch
+straining beam
+straining frame
+straining piece
+straining sill
+strain insulator
+strain normal
+strain sheet
+strainslip cleavage
+strain theory
+strait-besieged
+strait-bodied
+strait-braced
+strait-breasted
+strait-breeched
+strait-chested
+strait-clothed
+strait-coated
+strait-embraced
+strait-jacket
+strait-knotted
+strait-lace
+strait-laced
+strait-lacedly
+strait-lacer
+strait-necked
+strait-sleeved
+strait-tied
+strait-toothed
+strait-waistcoat
+strait-waisted
+strand fishery
+strand flat
+strand former
+strand line
+strand plover
+strand rat
+strand snipe
+strand wolf
+strange-achieved
+strange-clad
+strange-colored
+strange-composed
+strange-disposed
+strange-fashioned
+strange-favored
+strange-garbed
+strange-looking
+strange-met
+strange-plumaged
+strange-sounding
+strange-tongued
+strange-voiced
+strange-wayed
+strange woman
+strangled blade
+strangle hold
+strangler tree
+strangulated hernia
+S trap
+strap bolt
+strap brake
+strap drill
+strap fern
+strap game
+strap hammer
+strap hinge
+strap iron
+strap joint
+strap key
+strap-laid
+strap-leaved
+strap oil
+strap oyster
+strapping motion
+strapping plate
+strap rail
+strap railroad
+strap railway
+strap-shaped
+strap watch
+strategic line
+strategic point
+strato-cirrus
+Strato-cumulus
+stratus cumuliformis
+stratus maculosus
+straw bail
+straw ballot
+straw-barreled
+straw basher
+straw bass
+strawberry bass
+strawberry blite
+strawberry borer
+strawberry bush
+strawberry cactus
+strawberry clover
+strawberry comb
+strawberry crab
+strawberry crown borer
+strawberry crown moth
+strawberry fern
+strawberry finch
+strawberry fleabeetle
+strawberry fly
+strawberry geranium
+strawberry guava
+strawberry leaf
+strawberry leaf blight
+strawberry leaf roller
+strawberry leaf spot
+strawberry mark
+strawberry moth
+strawberry nettle
+strawberry pear
+strawberry perch
+strawberry pink
+strawberry raspberry
+strawberry roan
+strawberry root aphid
+strawberry root borer
+strawberry root weevil
+strawberry rootworm
+strawberry rust
+strawberry sawfly
+strawberry saxifrage
+strawberry shrub
+strawberry-shrub family
+strawberry spinach
+strawberry sunburn
+strawberry tassel
+strawberry tomato
+strawberry tongue
+strawberry tree
+strawberry vine
+strawberry weevil
+straw bid
+straw bidder
+straw bond
+straw boss
+straw-built
+straw-capped
+straw cat
+straw color
+straw-colored
+straw-crowned
+straw-cutting
+straw death
+straw drain
+straw-dried
+straw-emboweled
+straw fiddle
+straw hat
+straw-hatted
+straw-laid
+straw man
+straw-necked
+straw needle
+straw oil
+straw plait
+straw-plaiter
+straw-plaiting
+straw ride
+straw-roofed
+straw sedge
+straw-shoe
+straw splitter
+straw-splitting
+straw stem
+straw-stuffed
+straw-thatched
+straw vote
+straw wedding
+straw wine
+straw yellow
+stray energy
+streak culture
+streaked-back
+streak lightning
+streak plate
+stream anchor
+stream-bordering
+stream cable
+stream capture
+stream-drive
+stream driver
+stream-embroidered
+streamer fly
+stream function
+stream gold
+stream ice
+stream-illumed
+stream jam
+stream piracy
+stream tin
+stream wheel
+Street arab
+street band
+street-bred
+street broker
+street certificate
+street cleaner
+street-cleaning
+street coach
+street door
+street elbow
+street orderly
+street organ
+street-pacing
+street piano
+street plate
+street price
+street railway
+street-raking
+street-sold
+street-sprinkling
+street sweeper
+street-sweeping
+street virus
+St regis
+St regis indian
+strength-bringing
+strength change
+strength-conferring
+strength-decaying
+strengthening lead
+strength-giving
+strength-increasing
+strength-inspiring
+strength-restoring
+strength-sustaining
+strength-testing
+strenthening card
+Strepera graculina
+stress accent
+stress diagram
+stressed skin
+stress group
+stress sheet
+stress-strain
+stress-strain curve
+stretcher bar
+stretcher-bearer
+stretcher bond
+stretching course
+stretching piece
+stretch modulus
+stretch-out
+strict construction
+strict constructionist
+strict law
+stride-legged
+strident-voiced
+striding compass
+striding level
+strife-breeding
+strife-healing
+strife-stirring
+strike-a-light
+strike bill
+strike block
+strike board
+strike fault
+strike figure
+strike insurance
+strike joint
+strike knife
+strike measure
+strike note
+strike-out
+strike pan
+strike pay
+strike plate
+striker boat
+striker-out
+striker plate
+striker-up
+strike shift
+strike slip
+strike valley
+striking angle
+striking bag
+striking base
+striking board
+striking circle
+striking distance
+striking hammer
+striking-out machine
+striking pin
+striking plate
+striking reed
+striking solution
+striking stile
+string alphabet
+string bean
+string-binding
+string block
+string-colored
+string development
+stringer lode
+stringer plate
+string figure
+string galvanometer
+stringing course
+string insulator
+string lead
+string leaf
+string line
+string orchestra
+string organ
+string pea
+string plate
+string pottery
+string proof
+string pump
+string quartet
+string-soled
+string stop
+string-tailed
+string telephone
+string tie
+string tone
+string-toned
+stringybark pine
+stringy kelp
+stringy sap
+strinking-out
+strip count
+strip cropping
+stripe blight
+stripe canker
+striped-leaved
+stripe rust
+strip farming
+strip lighting
+strip line
+strip map
+strip method
+strip mine
+stripper-harvester
+strip pit
+strip printing
+strip survey
+strip tease
+strip-teaser
+strip template
+stroke culture
+stroke hole
+stroke oar
+stroke oarsman
+stroke play
+stroker-in
+strong-ankled
+strong-arm
+strong-armed
+strong-armer
+strong-backed
+strong-bodied
+strong-boned
+strongbox security
+strong-breathed
+strong-decked
+strong-elbowed
+strong-featured
+strong-fibered
+strong-fisted
+strong-handed
+strong-jawed
+strong-jointed
+strong-limbed
+strong-looking
+strong-lunged
+strong-minded
+strong-mindedly
+strong-mindedness
+strong-nerved
+strong point
+strong-pointed
+strong-quartered
+strong-ribbed
+strong room
+strong-scented
+strong-seated
+strong-set
+strong-sided
+strong-smelling
+strong-stapled
+strong-stomached
+strong-tasted
+strong-tasting
+strong-tempered
+strong-tested
+strong-trunked
+strong-voiced
+strong-weak
+strong-willed
+strong-winged
+strong-wristed
+strontia digger
+strontian white
+strontian yellow
+strontia process
+strontium hydroxide
+strontium nitrate
+strontium oxide
+strontium process
+strontium salicylate
+strontium white
+strontium yellow
+struck up
+structural engineer
+structural engineering
+structural iron
+structural-steel
+structure contours
+strut beam
+strutting piece
+St-simonian
+St-simonianism
+St-simonist
+stub axle
+stub-bearded
+stubble crop
+stubble-fed
+stubble field
+stubble goose
+stubble-loving
+stubble-mulch farming
+stubble plow
+stubble pulverizer
+stubble quail
+stubble rake
+stubble shaver
+stubble spurge
+stubborn-chaste
+stubborn-hard
+stubborn-minded
+stubborn-shafted
+stubborn-stout
+stubby-fingered
+stub-end
+stub-end feeder
+stub feather
+stub file
+stub hoe
+stub iron
+stub mortise
+stub nail
+stub pen
+stub-pointed
+stub short
+stub shot
+stub switch
+stub tenon
+stub-thatched
+stub-toed
+stub tooth
+stub track
+stub twist
+stucco-adorned
+stucco-fronted
+stucco-molded
+stucco pointer
+stucco-walled
+stuck-up
+stuck-upness
+stuck-upper
+stuck-uppish
+stuck-uppishness
+stuck-uppy
+stud block
+stud bolt
+stud book
+stud box
+stud chain
+studding bolt
+studding sail
+stud driver
+student adviser
+student assistant
+student council
+student hour
+student lamp
+student pastor
+student teacher
+student volunteer
+studhorse poker
+studio couch
+stud link
+stud mating
+stud-pink
+stud poker
+stud print
+stud rivet
+stud scab
+stud screw
+stud wall
+stud wheel
+study-bearing
+study-bred
+study-given
+study hall
+study-loving
+study-racked
+study-worn
+stuff chest
+stuffed-over
+stuffed shirt
+stuff engine
+stuff gown
+stuff hat
+stuffing box
+stuffing-box recess
+stuffing nut
+stuff-over
+stumbling block
+stumbling stone
+stump burning
+stump extractor
+stump-fingered
+stump foot
+stump-footed
+stump joint
+stump-jump
+stump jumper
+stump-jumping plow
+stump-legged
+stump mast
+stump mortise
+stump-nosed
+stump puller
+stump-rooted
+stump rot
+stump speaker
+stump speaking
+stump speech
+stump spud
+stump sucker
+stump-tail
+stump-tailed
+stump tenon
+stump topmast
+stump tracery
+stump tree
+stump wood
+stump work
+stunner hitch
+stunt man
+stupid-acting
+stupid-headed
+stupid-honest
+stupid-looking
+stupid-sure
+sturdy-chested
+sturdy-legged
+sturdy-limbed
+style branch
+style pen
+stylographic pen
+styloid process
+suan pan
+suarrow nut
+suave-looking
+suave-mannered
+suave-spoken
+Sub-adriatic
+subaltern genus
+Sub-apenine
+sub arid
+Sub-atlantic
+Sub-carboniferous
+Sub-carpathian
+Sub-christian
+Sub-himalayan
+subhymenial layer
+subject catalogue
+subject index
+subjectivo-objective
+subject matter
+subject-object
+subject-objectivity
+subject substantive
+subject term
+sub-jugate
+subjunct adjective
+subjunct word
+sublimation pressure
+sublimation vein
+submachine gun
+submarine chaser
+submarine patrol boat
+submerged-tube boiler
+Sub-mycenaean
+Sub-northern
+suboctave coupler
+Sub-parliament
+sub post office
+Sub-pyrenean
+subscription book
+subscription edition
+subscription list
+subsidy citizen
+subsidy man
+subsistence department
+subsistence stores
+subsoil plow
+substantiality theory
+substitution cipher
+substitution deposit
+substitution group
+substitution tables
+substitution vein
+subsurface tillage
+subtarget machine
+subtle-brained
+subtle-cadenced
+subtle-fingered
+subtle-headed
+subtle-looking
+subtle-meshed
+subtle-minded
+subtle-nosed
+subtle-paced
+subtle-scented
+subtle-shadowed
+subtle-souled
+subtle-thoughted
+subtle-tongued
+subtle-witted
+subtraction logarithm
+subtraction mark
+subtraction sign
+sub voce
+sub-war
+sub-zero
+succade gourd
+succession duty
+succession state
+succory blue
+such as
+suck-bottle
+suck-egg
+sucker foot
+sucker rod
+suck fly
+suck-in
+suction anemometer
+suction chamber
+suction cleaner
+suction dredge
+suction flask
+suction hose
+suction machine
+suction pipe
+suction primer
+suction producer
+suction pump
+suction root
+suction stop
+suction stroke
+suction sweeper
+suction valve
+sudden-beaming
+sudden-starting
+sudden-whelming
+Sueco-gothic
+suede cloth
+suet pudding
+suet refiner
+sufferance wharf
+Sufi order
+sugar almond
+sugar ant
+sugar apple
+sugar ash
+sugar bag
+sugar baker
+sugar bakery
+sugar basin
+sugar bean
+sugar beet
+sugar-beet webworm
+sugar-boiling
+sugar bowl
+sugar brake
+sugar cake
+sugar camp
+sugar candy
+sugar-cane
+sugar-cane beetle
+sugar-cane borer
+sugar-cane gummosis
+sugar-cane mosaic
+sugar-cane root disease
+sugar-cane smut
+sugar-chopped
+sugar-chopper
+sugar-coat
+sugar-coating
+sugar-colored
+sugar corn
+sugar-cured
+sugar-destroying
+sugar diabetes
+sugar engineering
+sugar fish
+sugar grape
+sugar grass
+sugar-growing
+sugar gum
+sugarhouse molasses
+sugaring off
+sugar jack
+sugar jack process
+sugar-laden
+sugar-lipped
+sugar-loaded
+sugar-loaf
+sugar-loving
+sugar maker
+sugar making
+sugar-maple
+sugar-maple borer
+sugar mill
+sugar mite
+sugar-mouthed
+sugar mule
+sugar nippers
+sugar orchard
+sugar palm
+sugar pea
+sugar pear
+sugar pine
+sugar planter
+sugar planting
+sugar-producing
+sugar pumpkin
+sugar puncture
+sugar refiner
+sugar refining
+sugar shell
+sugar sorghum
+sugar spoon
+sugar squirrel
+sugar-sweet
+sugar-teat
+sugar-tit
+sugar tongs
+sugar-topped
+sugar tree
+sugar vinegar
+sugar-water
+sugar wrack
+sugar-yielding
+suicide clause
+suicide club
+suit case
+suit court
+suit service
+sulky-shaped
+sullage head
+sullen-browed
+sullen-eyed
+sullen-looking
+sullen-natured
+sullen-seeming
+sullen-sour
+sullen-visaged
+sullen-wise
+sulphate green
+sulphate paper
+sulphate process
+sulphate pulp
+sulphate ultramarine
+sulphide color
+sulphide dye
+sulphide toning
+sulphindigotic acid
+sulphine color
+sulphine yellow
+sulphite brown
+sulphite pulp
+sulphocarbon oil
+sulphon cyanine
+sulphon cyanine black
+sulpho salt
+sulphur acid
+sulphur alcohol
+sulphur bacteria
+sulphur-bearing
+sulphur-bellied
+sulphur black
+sulphur-bottom
+sulphur-breasted
+sulphur butterfly
+sulphur candle
+sulphur chloride
+sulphur color
+sulphur-colored
+sulphur-containing
+sulphur-crested
+sulphur dioxide
+sulphur dye
+sulphureo-aerial
+sulphur ether
+sulphur family
+sulphur granule
+sulphur-hued
+sulphur-impregnated
+sulphur lime
+sulphur match
+sulphur monochloride
+sulphur oil
+sulphur olive oil
+sulphur ore
+sulphur paste
+sulphur plant
+sulphur rain
+sulphur rose
+sulphur-scented
+sulphur shower
+sulphur-smoking
+sulphur subchloride
+sulphur-tinted
+sulphur-tipped
+sulphur toning
+sulphur trioxide
+sulphur vivum
+sulphur water
+sulphur whale
+sulphur yellow
+sultana bird
+sultana roll
+sultan flower
+sultan red
+sumac family
+Sumatra camphor
+Sumatra java
+Sumatra leaf
+Sumero-akkadian
+summation curve
+summation tone
+summer aster
+summer barley
+summer-blanched
+summer-breathing
+summer-brewed
+summer-bright
+summer cholera
+summer complaint
+summer coot
+summer crookneck
+summer cypress
+summer day
+summer dew grass
+summer disease
+summer-dried
+summer duck
+summer egg
+summer ermine
+summer fallow
+summer-fed
+summer-felled
+summer finch
+summer flounder
+summer-flowering
+summer forest
+summer grape
+summer-grazed
+summer hail
+summer haw
+summer heat
+summer heliotrope
+summer herring
+summer house
+summer hyacinth
+summer-leaping
+summer lightning
+summer lilac
+summer-lived
+summer-loving
+summer-made
+summer oil
+summer parlor
+summer queening
+summer rape
+summer rash
+summer redbird
+summer resort
+summer-ripening
+summer sausage
+summer savory
+summer school
+summer-seeming
+summer sheldrake
+summer-shrunk
+summer snipe
+summer snowflake
+summer solstice
+summer sore
+summer spore
+summer squash
+summer-staying
+summer-stir
+summer stone
+summer-stricken
+summer sweet
+summer-swelling
+summer tanager
+summer teal
+summer-threshed
+summer-tilled
+summer truffle
+summer-up
+summer wagtail
+summer warbler
+summer-weight
+summer wheat
+summer yellowbird
+summer yellowlegs
+summing up
+summit level
+summit yard
+summons case
+summons-proof
+summum jus
+sump cut
+sump fuse
+sumping cut
+sumping shot
+sump pit
+sump shot
+sumptuary law
+sump winze
+sums total
+sum total
+sun-affronting
+sun animalcule
+sun arc
+sun-arrayed
+sun-awakened
+sun-baked
+sun bark
+sun bath
+sun-bathe
+sun-bathed
+sun bather
+sun bear
+sun-beat
+sun-beaten
+sun-begotten
+sun bittern
+sun-blackened
+sun-blanched
+sun-blind
+sun blindness
+sun-blistered
+sun-blown
+sun-born
+sun-bred
+sun-bright
+sun-bringing
+sun-broad
+sun-bronzed
+sun-brown
+sun-browned
+sun burner
+sunburst plaiting
+sun-clear
+sun clock
+sun compass
+sun-confronting
+sun-courting
+sun crack
+sun-cracked
+sun-crowned
+sun cult
+sun cure
+sun-cured
+Sunda land
+sun dance
+sun date
+Sunday best
+Sunday child
+Sunday citizen
+Sunday letter
+Sunday saint
+Sunday school
+Sunday-schoolish
+Sunday supplement
+sun-dazzling
+sun-delighting
+sunder tree
+sun-descended
+sundew family
+sun disk
+sundra tree
+sun-drawn
+sun-dried
+sun-dry
+sundry-colored
+sundry-patterned
+sundry-shaped
+sun-eclipsing
+sun-excluding
+sun-expelling
+sun-exposed
+sun-eyed
+sun-faced
+sun-feathered
+sun fern
+sun fever
+sun-filled
+sun flag
+sun-flagged
+sun-flaring
+sun-flooded
+sunflower oil
+sunflower oil cake
+sunflower tree
+sunflower yellow
+sun-fringed
+sun fruit
+sun gall
+sun-gazed
+sun-gazing
+sun gem
+sun-gilt
+sun-god
+sun-graced
+sun grass
+sun-graze
+sun-grazer
+sun grebe
+sun-grown
+sun hat
+sun-heated
+sun helmet
+sun hemp
+sun-illumined
+Sun king
+sun-kissed
+sunk key
+sun lamp
+sun letters
+sunlight burner
+sun-loved
+sun-loving
+sun-made
+sun-marked
+sun-melted
+sunn hemp
+sun-nursed
+sunny-clear
+sunny-colored
+sunny-faced
+sunny-haired
+sunny-looking
+sunny-natured
+sunny-red
+sunny-spirited
+sunny-sweet
+sunny-warm
+sun-outshining
+sun-pain
+sun-painted
+sun-paled
+sun pan
+sun parlor
+sun perch
+sun picture
+sun pillar
+sun plane
+sun plant
+sun porch
+sun power
+sun-praising
+sun print
+sun-printed
+sun printing
+sun-projected
+sun-red
+sun-resembling
+sunrise wall
+sunrise watch
+sun rose
+sun-scorched
+sun-scorching
+sunset-blue
+sunset brown
+sunset clam
+sunset-flushed
+sunset gun
+sunset-lighted
+sunset-purpled
+sunset-red
+sunset-ripened
+sunset shell
+sunset wall
+sun-shading
+sunshine-showery
+sun-shot
+sun shower
+sun-shunning
+sun side
+sun snake
+sun-sodden
+sun spark
+sun spider
+sunspot cycle
+sunspot numbers
+sunspot period
+sunspot zone
+sun spurge
+sun-staining
+sun star
+sun-steeped
+sun-struck
+sun-swart
+sun-swept
+sun tan
+sun-tanned
+sun temperature
+sun-tight
+sun time
+sun trap
+sun tree
+sun trout
+sunt tree
+sun valve
+sun view
+sun visor
+sun-warm
+sun-warmed
+sun watch
+sun wheel
+sun-withered
+sun worship
+sun worshiper
+sun worshiping
+Super-christian
+supercompression engine
+super-decompound
+superintendent general
+superior-general
+superiority complex
+superiors-general
+supero-occipital
+superstition-proof
+superstructure deck
+supple-kneed
+supple-limbed
+supple-minded
+supple-mouth
+supple-sinewed
+supple-sliding
+supple-visaged
+supple-working
+supple-wristed
+supply bond
+supply price
+supply services
+support line
+support proper
+support trench
+supra-abdominal
+supra-acromial
+supra-aerial
+supra-anal
+supra-angular
+supra-arytenoid
+supra-auditory
+supra-auricular
+supra-axillary
+supracardinal vein
+Supra-christian
+supra-esophagal
+supra-esophageal
+supra-ethmoid
+supra-intestinal
+supralinear punctuation
+suprasternal notch
+supratrochlear nerve
+suranal plate
+sure-aimed
+sure crop
+sure-enough
+sure-fire
+sure-footed
+sure-footedly
+sure-footedness
+sure-founded
+sure-grounded
+sure-nosed
+sure-presaging
+sure-refuged
+sure-seeing
+sure-set
+sure-settled
+sure-slow
+sure-steeled
+sure thing
+surety bond
+surface-active agent
+surface anatomy
+surface-bent
+surface board
+surface carburetor
+surface card
+surface-coated
+surface color
+surface cooler
+surface-damaged
+surface density
+surface-deposited
+surface-dressed
+surface-dry
+surface-dwelling
+surface energy
+surface-feeding
+surface fire
+surface friction
+surface gauge
+surface gravity
+surface-hold
+surface integral
+surface layer
+surface measure
+surface paper
+surface plate
+surface printing
+surface railway
+surface resistance
+surface resistivity
+surface rib
+surface-scratched
+surface strain
+surface switch
+surface tension
+surfacing machine
+surf-battered
+surf-beaten
+surf-bound
+surf clam
+surf coot
+surf duck
+surfeit-gorged
+surfeit-slain
+surfeit-swelled
+surfeit-swollen
+surfeit-taking
+surfeit water
+surf fish
+surf line
+surf plant
+surf scoter
+surf shiner
+surf-showered
+surf smelt
+surf snipe
+surf-sunk
+surf-swept
+surf-tormented
+surf-vexed
+surf-washed
+surf-wasted
+surf-white
+surf whiting
+surf-worn
+surge chamber
+surge gap
+surgeon apothecary
+surgeon bird
+surgeon commander
+surgeon dentist
+surgeon general
+surgeon major
+surgeons general
+surge tank
+Surgut ostyak
+surmounted arch
+surplice fee
+surplus state
+surplus value
+surprise party
+surrender charge
+surrender value
+Surrey green
+sur-royal
+survey course
+surveying sextant
+surveyor general
+survival rate
+survival value
+survivorship annuity
+suspense account
+suspense ledger
+suspension bridge
+suspension colloid
+suspension insulator
+suspension point
+sus per coll
+suspicion-proof
+Sussex man
+Sussex pig
+Sussex spaniel
+sustentation fund
+suwarrow nut
+swab stick
+swage block
+swage bolt
+swage-set
+swagger stick
+swago bass
+swallow dive
+swallow fish
+swallow flycatcher
+swallow-fork
+swallow hawk
+swallow hole
+swallow plover
+swallow roller
+swallow shrike
+swallow stone
+swallow-tailed
+swallow thorn
+swallow warbler
+swallow-wing
+swami house
+swamp angel
+swamp apple
+swamp ash
+swamp azalea
+swamp bay
+swamp beggar-tick
+swamp birch
+swamp blackberry
+swamp blackbird
+swamp black gum
+swamp blueberry
+swamp brake
+swamp broom
+swamp buttercup
+swamp cabbage
+swamp cedar
+swamp chess
+swamp chestnut oak
+swamp cottonwood
+swamp crake
+swamp cypress
+swamp deer
+swamp dock
+swamp dogwood
+swamp-dwelling
+swamp elm
+swamp evergreen
+swamp fern
+swamp fever
+swamp globeflower
+swamp gooseberry
+swamp grape
+swamp gum
+swamp hare
+swamp harrier
+swamp hawk
+swamp hellebore
+swamp hen
+swamp hickory
+swamp holly
+swamp honeysuckle
+swamp hook
+swamp hornbeam
+swamping resistance
+swamp itch
+swamp laurel
+swamp lily
+swamp locust
+swamp loosestrife
+swamp lover
+swamp-loving
+swamp magnolia
+swamp mahogany
+swamp mallow
+swamp maple
+swamp milkweed
+swamp moss
+swamp oak
+swamp ore
+swamp owl
+swamp partridge
+swamp pheasant
+swamp pine
+swamp pink
+swamp poplar
+swamp post oak
+swamp potato
+swamp privet
+swamp quail
+swamp rabbit
+swamp red bay
+swamp robin
+swamp rose
+swamp rose mallow
+swamp sassafras
+swamp saxifrage
+swamp silkweed
+swamp sparrow
+swamp spleenwort
+swamp spruce
+swamp squawweed
+swamp sumac
+swamp sunflower
+swamp tea
+swamp thistle
+swamp tupelo
+swamp turnip
+swamp warbler
+swamp white cedar
+swamp white oak
+swamp willow
+swamp willow herb
+swamp wire grass
+swan animalcule
+swan-bosomed
+swan-clad
+swan dive
+swan-drawn
+swan-eating
+swan-fashion
+swan goose
+swan-hopper
+swan-hopping
+swanking stick
+swan knight
+swan maiden
+swan mussel
+swan orchid
+swan pan
+swan-plumed
+swan-poor
+swan potato
+swan-proud
+swan shift
+swan shot
+swanskin calico
+swan song
+swan-sweet
+swan-tuned
+swan-upper
+swan-upping
+swan-white
+swan-winged
+swap hook
+sward-cut
+sward-cutter
+swarm cell
+swarm spore
+swart star
+swash channel
+swash letter
+swash plate
+Swatchel box
+swathing band
+sway-back
+sway-backed
+sway bar
+sway boat
+sway brace
+sway bracing
+sway pole
+swearer-in
+sweat bath
+sweat bee
+sweater shop
+sweat gland
+sweating iron
+sweating sickness
+sweating stock
+sweating system
+sweat leather
+sweat lodge
+sweat pad
+sweat shirt
+sweat shop
+sweat stock
+Swedish-owned
+sweep-chimney
+sweep head
+sweeping net
+sweeping process
+sweeping score
+sweep mill
+sweep net
+sweep-oar
+sweep plate
+sweep point
+sweep rake
+sweep seine
+sweep seining
+sweep smelter
+sweep ticket
+swee-swee
+swee-sweet
+sweet-almond
+sweet-almond oil
+sweet-beamed
+sweet-bitter
+sweet-bleeding
+sweet-blooded
+sweet-breath
+sweet-breathed
+sweet-breathing
+sweet-bright
+sweet-charming
+sweet-chaste
+sweet-complaining
+sweet-conditioned
+sweet corn
+sweet-corn wilt
+sweet-curd
+sweet-dispositioned
+sweet-eyed
+sweet-faced
+sweet-featured
+sweet fern
+sweet-flavored
+sweet-flowered
+sweet-flowering
+sweet-flowing
+sweet-leafed
+sweetleaf family
+sweet-lipped
+sweet-looking
+sweet-minded
+sweet-murmuring
+sweet-natured
+sweet-numbered
+sweet orange
+sweet-orange oil
+sweet pea
+sweet-pea streak
+sweet pepper
+sweet pepper bush
+sweet-pickle
+sweet-piercing
+sweet potato
+sweet-potato beetle
+sweet-potato borer
+sweet-potato scurf
+sweet-potato sphinx
+sweet-potato weevil
+sweet-potato worm
+sweet-recording
+sweet reed
+sweet reed grass
+sweet-roasted
+sweet-sacred
+sweet-sad
+sweet-savored
+sweet-scented
+sweet-seasoned
+sweet-set
+sweet-shaped
+sweet-singing
+sweet-smelled
+sweet-smelling
+sweet-smiling
+sweet-souled
+sweet-sounded
+sweet-sounding
+sweet-sour
+sweet-spoken
+sweet-spun
+sweet stand
+sweet sucker
+sweet-suggesting
+sweet sultan
+sweet-sweet
+sweet-talking
+sweet-tasted
+sweet-tasting
+sweet-tempered
+sweet-temperedly
+sweet-throat
+sweet-throated
+sweet-toned
+sweet-tongued
+sweet-toothed
+sweet-touched
+sweet-tuned
+sweet-voiced
+sweet-warbling
+sweet water
+sweet-whispered
+sweetwood bark
+swell box
+swell-butted
+swell dash
+swelled-gelatin
+swelled-gelatin process
+swelled head
+swelled-headed
+swell-front
+swell head
+swell-headed
+swell-headedness
+swell mob
+swell organ
+swell pedal
+swell piece
+swell shark
+swept-back
+swept-forward
+swift-advancing
+swift boat
+swift-brought
+swift-burning
+swift-changing
+swift-concerted
+swift-declining
+swift-effected
+swiftering line
+swift-fated
+swift-finned
+swift-flowing
+swift-flying
+swift-footed
+swift fox
+swift-frightful
+swift-glancing
+swift-gliding
+swift-handed
+swift-heeled
+swift-hoofed
+swift-judging
+swift-lamented
+swift-marching
+swift moth
+swift-paced
+swift-posting
+swift-recurring
+swift-revenging
+swift-running
+swift-rushing
+swift-seeing
+swift shrike
+swift-sliding
+swift-slow
+swift-spoken
+swift-starting
+swift-stealing
+swift-streamed
+swift-swimming
+swift-tongued
+swift-winged
+swim bladder
+swim bow
+swimming bell
+swimming bladder
+swimming funnel
+swimming hole
+swimming plate
+swimming pool
+swimming tank
+swine back
+swine-backed
+swine-chopped
+swine cress
+swine-eating
+swine erysipelas
+swine-faced
+swine fever
+swine grass
+swine-headed
+swine itch
+swine-mouthed
+swine plague
+swine pox
+swine-snouted
+swine-stead
+swine thistle
+swing arm
+swing back
+swing bar
+swing beam
+swing boat
+swing bolster
+swing bolt
+swing bridge
+swing cart
+swing chair
+swing drawbridge
+swing gate
+swing hammer crusher
+swinging bar
+swinging basin
+swinging boom
+swinging post
+swinging ring
+swing jack
+swing joint
+swing-jointed
+swing knife
+swingle staff
+swingle tow
+swingling tow
+swing music
+swing plate
+swing plow
+swing saw
+swing shift
+swing shifter
+swing-swang
+swing team
+swing tool
+swing train
+swing wheel
+swish-swash
+swish tail
+switchblade knife
+switch box
+switch cane
+switch cast
+switch engine
+switch grass
+switch-hitter
+switch hook
+switch-horn
+switching eye
+switch line
+switch plant
+switch plate
+switch plug
+switch rail
+switch sorrel
+switch stand
+switch tail
+switch tender
+switch tenter
+switch tower
+swivel block
+swivel bridge
+swivel chain
+swivel chair
+swivel fabric
+swivel gun
+swivel hook
+swivel-hooked
+swivel jaw
+swivel-lock
+swivel musket
+swivel pipe
+swivel plow
+swivel shuttle
+swivel silk
+swivel spindle
+swivel table
+swivel union
+swivel vise
+swivel weaving
+swizzle stick
+swollen-cheeked
+swollen-eyed
+swollen-faced
+swollen-glowing
+swollen head
+swollen-headed
+swollen-jawed
+swollen-tongued
+swooning-ripe
+sword arm
+sword-armed
+sword bayonet
+sword bean
+sword-bearer
+sword-bearership
+sword belt
+sword-billed
+sword blade
+sword breaker
+sword cane
+sword cut
+sword cutler
+sword cutlery
+sword dance
+sword dancer
+sword dollar
+sword fern
+swordfish sucker
+sword flag
+sword flax
+sword-girded
+sword-girt
+sword grass
+sword guard
+sword hand
+sword hanger
+sword hilt
+sword knot
+sword law
+sword-leaved
+sword lily
+sword mat
+sword sedge
+sword service
+sword-shaped
+sword side
+sword swallower
+sword swallowing
+sword-tailed
+sword tash
+sword thrust
+sword tip
+S wrench
+sycamore anthracnose
+sycamore fig
+sycamore maple
+syenite-porphyry
+syenitic gneiss
+syllabic accent
+syllable name
+sympathy strike
+symphony concert
+symphony orchestra
+symptom complex
+synchro-cyclotron
+synneusis texture
+syntectic magma
+Syracuse watch glass
+Syro-arabian
+Syro-babylonian
+Syro-chaldaic
+Syro-chaldean
+Syro-chaldee
+Syro-egyptian
+Syro-galilean
+Syro-hebraic
+Syro-hexaplar
+Syro-hittite
+Syro-macedonian
+Syro-mesopotamian
+Syro-persian
+Syro-roman
+syrphus fly
+system function
+taban puteh
+Tabasco mahogany
+tabby cat
+tabby-cat striation
+tabby moth
+tabby weave
+tabernacle work
+Table a
+table base
+table board
+table book
+table chair
+table clothing
+table cover
+table-cut
+table-cutter
+table-cutting
+table decorator
+table dhote
+table diamond
+table-faced
+table-formed
+table glass
+table line
+table linen
+table money
+table mountain
+table-mountain pine
+Table mountain series
+table napkin
+table oil
+table rapping
+table settle
+table-shaped
+table spar
+table stake
+table stone
+table-tail
+table talk
+table talker
+table tennis
+table tilting
+tablet letter
+table tomb
+table-topped
+tablet tea
+tablet triturate
+table turning
+table work
+tabor pipe
+tabucki grass
+Tabula amalfitana
+Tabula smaragdina
+tacca arrowroot
+tachina fly
+Ta ching
+tachy case
+tack bumpkin
+tack comb
+tack duty
+tacketing gut
+tackle block
+tackle board
+tackle fall
+tackle house
+tackle post
+tackles back formation
+tack line
+tack pin
+tack rivet
+tack weld
+tack welder
+tack welding
+tadpole fish
+tadpole-shaped
+taffeta weave
+taffrail log
+tag addresser
+tag-addressing
+tag-affixing
+tag alder
+tag boat
+tag dance
+tag-dating
+tag day
+tag end
+tag-marking
+tag-stringing
+Tai-chinese
+tail barley
+tail bay
+tail beam
+tail block
+tail-chasing
+tail coat
+tail-cropped
+tail-decorated
+tail-docked
+tail end
+tail fly
+tail gate
+tail-glide
+tail grape
+tail group
+tail-heavy
+tail hook
+tail house
+tailings auger
+tail-joined
+tail joist
+tail lamp
+tail lock
+tailor-built
+tailor-cut
+tailor-legged
+tailor-made
+tailor-suited
+tailor warbler
+tail pipe
+tail-pipe burner
+tail pit
+tail plane
+tail print
+tail rhyme
+tail-rhymed
+tail rod
+tail rope
+tail set
+tail shaft
+tail skid
+tail slide
+tail spin
+tail spindle
+tail-switching
+tail tackle
+Tailtean games
+tail-tied
+tail unit
+tail-wagging
+tail water
+tail wind
+t aint
+taint-free
+taintor gate
+take-all
+take-home pay
+take-in
+take-off
+take-out
+taker-down
+taker-in
+taker-off
+take-up
+take-up box
+talba gum
+talca gum
+talc bag
+talc blank
+talc brick
+talc crayon
+talc cube
+talc facing
+talc-grinding
+talco gum
+talc pencil
+talc pulverizer
+talc schist
+talcum powder
+taleh gum
+talent money
+talha gum
+talked-about
+talkee-talkee
+talk film
+talking-to
+talky-talk
+talky-talky
+tall-bodied
+tall-built
+tall-chimneyed
+tall-columned
+tall-corn
+tall-elmed
+tall-growing
+tall-looking
+tall-masted
+tall-master
+tall-necked
+tallow bayberry
+tallow candle
+tallow catch
+tallow chandler
+tallow-chandlering
+tallow chandlery
+tallow chandling
+tallow-colored
+tallow cooler
+tallow crackling
+tallow cup
+tallow-cut
+tallow cutter
+tallow dip
+tallow drop
+tallow-face
+tallow-faced
+tallow gourd
+tallow-hued
+tallow-lighted
+tallow loaf
+tallow mange
+tallow melter
+tallow nut
+tallow oil
+tallow-pale
+tallow pot
+tallow press
+tallow refiner
+tallow renderer
+tallow sampler
+tallow shrub
+tallow-top
+tallow-topped
+tallow tree
+tallow-white
+tall-pillared
+tall-sceptered
+tall-sitting
+tall-spired
+tall-stalked
+tall-stemmed
+tall-trunked
+tall-tussocked
+tall-wheeled
+tally board
+tally card
+tally clerk
+tallyho coach
+tally iron
+tally room
+tally sheet
+tally shop
+tally trade
+tally walk
+talmi gold
+talon-tipped
+tamarack pine
+tamarind fish
+tamarind plum
+tamarisk family
+tamarisk salt
+tamarisk salt tree
+tamarix family
+tambookie grass
+Tambookie grass
+tambour clock
+tambour lace
+tambour stitch
+tambour stitcher
+tambour work
+tame-grief
+tame-grown
+tame-lived
+tame-looking
+tame-minded
+tame-natured
+tame-spirited
+tame-witted
+Tammany society
+tammie norie
+tam-o-shanter
+tam-o-shantered
+tamping bar
+tamping iron
+tamping pick
+tamping stick
+tam-tam
+tanbark beetle
+tanbark oak
+tanbark tree
+tan bay
+tan-burning
+tan-colored
+tandem-punch
+tan-faced
+tang chisel
+tang end
+tangent-cut
+tangent-saw
+tangent-sawed
+tangle-haired
+tangle-headed
+tangle-legs
+tangle picker
+tangle-tail
+tangle-tailed
+Tania australis
+Tania borealis
+tankard bearer
+tankard-bearing
+tank car
+tank circuit
+tank dome
+tank drama
+tank driver
+tank engine
+tank farm
+tank farming
+tank furnace
+tank iron
+tank liquor
+tank locomotive
+tank meter
+tank nipple
+tank rivet
+tank runner
+Tank school
+tank ship
+tank station
+tank table
+tank town
+tank truck
+tank waste
+tan-mouthed
+tannery fungus
+tannin color
+tanning extract
+tannyl acetate
+tan-sailed
+tan-skinned
+tan-strewn
+tansy mustard
+tansy oil
+tansy ragwort
+tantalum lamp
+Tantalus cup
+tan-tan
+tan-tinted
+tan-trodden
+tao-tieh
+tapa cloth
+tap bolt
+tap bond
+tap borer
+tap chuck
+tap cinder
+tap cutter
+tap dance
+tap dancer
+tap dancing
+tap dressing
+tap drill
+tape-bound
+tape fern
+tape grass
+tape-grass family
+tape measure
+tape needle
+tape price
+tape-printing
+taper-bored
+taper drill
+tape reading
+tape-record
+tape recorder
+tapered-in
+taper-fashion
+taper-fashion arrow
+taper file
+taper gauge
+taper-grown
+taper-headed
+taper-lighted
+taper-limbed
+taper mandrel
+taper-molded
+taper pin
+taper pipe thread
+taper-pointed
+taper reamer
+taper reducer sleeve
+taper tap
+taper tool
+tape sizer
+tape sizing
+tape-slashing
+tapestry beetle
+tapestry carpet
+tapestry-covered
+tapestry glass
+tapestry maker
+tapestry making
+tapestry moth
+tapestry needle
+tapestry painting
+tapestry stitch
+tapestry weaver
+tapestry weaving
+tapestry work
+tapestry-worked
+tapestry-woven
+tape thermometer
+tape-tied
+tape-tying
+tapeworm plant
+tap extractor
+tap funnel
+tap gauge
+tap grinder
+tap holder
+tap hose
+tapioca plant
+tapir mouth
+tapis vert
+Tapley mark
+tap line
+tap-off
+tapper-out
+tapper tap
+Tappertit simon
+tappet motion
+tappet rod
+tappet wrench
+tap-pickle
+tapping chuck
+tapping clay
+tapping drill
+tapping hole
+tapping key
+tappit-hen
+tap rate
+tap reamer
+tap rivet
+tapsal-teerie
+tap screw
+tap shoe
+tap-tap
+tap-tap-tap
+tap tool
+tap water
+tap wrench
+tar acid
+tara fern
+tarage table
+tarantula hawk
+tar baby
+tar base
+tar-bedaubed
+tar-bind
+tar-boiling
+tar-brand
+tar bucket
+tar-burning
+tar camphor
+tar cancer
+tar-clotted
+tar-coal
+tar concrete
+tar-dipped
+tar distillate
+tar distiller
+tar drum
+tardy-gaited
+tardy-moving
+tardy-rising
+tare an ages
+tare anouns
+tare anounty
+tare grass
+tare room
+tare vetch
+target arrow
+target bass
+target day
+target frame
+target lamp
+target meeting
+target practice
+target range
+target rifle
+target rod
+target shaft
+target-shy
+target spot
+Targu alphabet
+tar-heating
+Tarheel state
+tariff-born
+tariff-bound
+tariff duty
+tariff-fed
+tariff law
+tariff maker
+tariff making
+tariff-protected
+tariff-raised
+tariff-raising
+tariff reform
+tariff reformer
+tariff-regulating
+tariff-ridden
+tariff-tinkering
+tariff treaty
+tariff wall
+tariff-wise
+tar kettle
+tar-laid
+tar macadam
+tarn-brown
+tar number
+tar oil
+tar-paint
+tar paper
+tarpaulin-covered
+tarpaulin-lined
+tarpaulin muster
+tar-paved
+tar pavior
+tar pool
+tar putty
+tarragon oil
+tarragon vinegar
+tar-removing
+tar-roofed
+tarry-breeks
+tarry-fingered
+tarrying irons
+tarry-jacket
+Tarry-john
+tar sand
+tar-scented
+tar-sealed
+tar-soaked
+tarso-orbital
+tar spot
+tar-spray
+tar sprayer
+tar still
+tartan-purry
+tartan velvet
+tartar emetic
+tartare sauce
+Tartar horse
+Tartar-nosed
+tartar yeast
+tar water
+tar well
+task force
+task time
+task wage
+tassel bush
+tassel flower
+tassel grass
+tassel hand
+tassel-hung
+tassel hyacinth
+tassel mold
+tassel plant
+tassel pondweed
+tassel stitch
+tassel tree
+tassel weaver
+taste beaker
+taste bud
+taste bulb
+taste cell
+taste cup
+taste goblet
+taste paper
+ta-ta
+Tatar sable
+tatou peba
+tat-tat
+tat-tat-tat
+tattie bogle
+tattie lifting
+tau cross
+taunt-masted
+taunt-rigged
+taupe-rose
+Taurus cluster
+Taurus poniatowskii
+tau-saghyz
+tau staff
+tau-topped
+tavern-gotten
+tavern-hunting
+tavern table
+tavern-tainted
+tavern token
+tawny-brown
+tawny-coated
+tawny-colored
+tawny-faced
+tawny-gold
+tawny-gray
+tawny-green
+tawny-haired
+tawny-olive
+tawny-skinned
+tawny-tanned
+tawny-visaged
+tawny-whiskered
+tawny-yellow
+tax assessor
+tax bond
+tax book
+tax-born
+tax-bought
+tax-burdened
+tax cart
+tax certificate
+tax collecting
+tax collector
+tax deed
+tax dodger
+tax-dodging
+tax-exempt
+tax farmer
+tax-free
+taxi-bordered
+taxi dancer
+taxi driver
+taxi horn
+taximeter cab
+tax-laden
+tax layer
+tax levy
+tax-levying
+tax lien
+tax list
+tax money
+tax rate
+tax receiver
+tax return
+tax-ridden
+tax roll
+tax sale
+tax-supported
+tax taker
+tax title
+ta-zaung
+T bandage
+T bar
+T-beam bridge
+T bevel
+T bob
+T bolt
+T-bone steak
+T cart
+tch tch
+T cloth
+T-connected
+T connection
+T connector
+T crank
+T cross
+tea ball
+tea bell
+tea biscuit
+tea blender
+tea-blending
+tea blight
+tea borer
+tea bread
+tea broom
+tea caddy
+tea can
+tea canister
+tea ceremony
+tea checker
+teacher bird
+teacher clerk
+teacher edition
+teachers college
+teacher training
+tea chest
+tea clipper
+tea cloth
+tea-colored
+tea cooper
+tea-covered
+tea cozy
+tea dance
+tea drinker
+tea drunkard
+tea family
+tea fight
+tea fighting
+tea garden
+tea-gardened
+tea gardener
+tea girl
+teagle post
+tea gown
+tea green
+tea-growing
+tea hound
+tea hour
+tea infuser
+tea-inspired
+teak-brown
+teak-built
+teak-complexioned
+tea kettle broth
+tea kitchen
+teak-lined
+teak-producing
+teal duck
+tea lead
+tea leaf
+tea-leaved
+tea-loving
+tea maid
+team boat
+tea meeting
+tea mite
+tea mixer
+tea-mixing
+tea mosquito
+team play
+tea oil
+tea oil tree
+tea olive
+tea packer
+tea-packing
+tea party
+tea percolator
+tea plant
+tea planter
+tea planting
+tea plate
+tea-producing
+tear-acknowledged
+tear-affected
+tear-angry
+tear-arresting
+tear-attested
+Te arawa
+tear bag
+tear-baptized
+tear-bedabbled
+tear-bedewed
+tear-besprinkled
+tear-blinded
+tear bomb
+tear bottle
+tear-bright
+tear-commixed
+tear-compelling
+tear-composed
+tear-creating
+tear-damped
+tear-derived
+tear-dewed
+tear-dimmed
+tear-distained
+tear-distilling
+tear-dropped
+tear-drowned
+tear-eased
+tear-embarrassed
+tear-expressed
+tear-falling
+tear-filled
+tear-forced
+tear-fraught
+tear-freshened
+tear gas
+tear gland
+tear-glistening
+tear grass
+tear-imaged
+tear-kissed
+tear-lamenting
+tear-lined
+tear-marked
+tear-melted
+tear-mirrored
+tear-misty
+tear-mocking
+tear-moist
+tear-mourned
+tear-off
+tea-rose
+tea-rose pink
+tear-out
+tear-owned
+tear-pale
+tear-pardoning
+tear-paying
+tear-persuaded
+tear-phrased
+tear-pictured
+tear-pitying
+tear-plagued
+tear-pouring
+tear-practiced
+tear-procured
+tear-protested
+tear-provoking
+tear-purchased
+tear-quick
+tear-raining
+tear-reconciled
+tear-regretted
+tear-resented
+tear-revealed
+tear-reviving
+tear-salt
+tear-scorning
+tear-sealed
+tear-shaped
+tear-shedding
+tear sheet
+tear shell
+tear-shot
+tear-stained
+tear streak
+tear-stubbed
+tear-swollen
+tear-thirsty
+tear-washed
+tear-wet
+tear-wiping
+tear-worn
+tear-wrung
+tea sampler
+tea-scented
+tea scrub
+tea-seed oil
+teasel clipper
+teasel cutter
+teasel family
+teasel frame
+teasel gourd
+teasel grower
+teasel merchant
+teasel packer
+teasel sorter
+teaser curtain
+tea service
+tea set
+tease tenon
+tea sifter
+tea-sodden
+tea strainer
+tea-swilling
+tea table
+tea-tabular
+tea tasting
+teat cup
+tea-things
+tea tray
+tea tree
+tea urn
+tea wagon
+tea weigher
+technical sergeant
+Tecoma yew
+Teddy bear
+tedium-proof
+tee bar
+tee beam
+tee-bulb
+tee burial
+tee-hole
+teeing ground
+tee iron
+tee joint
+teel oil
+teen-age
+teen-ager
+tee-name
+teeny-weeny
+tee plate
+tee rail
+tee shirt
+tee slot
+tee square
+teetering-board
+teeter-totter
+teetery-bender
+teeth-chattering
+teeth-edging
+teeth-gnashing
+teeth-grinding
+teething ring
+te-hee
+Tehuantepec winds
+teind boll
+Teind court
+Tejon formation
+telegraph bar
+telegraph block
+telegraph blue
+telegraph board
+telegraph box
+telegraph bracket
+telegraph bug
+telegraph cable
+telegraph clerk
+telegraph clock
+telegraph coil
+telegraph connector
+telegraph editor
+telegraph form
+telegraph hook
+telegraph inspector
+telegraph instrument
+telegraph insulator
+telegraph jack
+telegraph key
+telegraph laborer
+telegraph lineman
+telegraph mechanic
+telegraph messenger
+telegraph operator
+telegraph plant
+telegraph pole
+telegraph protector
+telegraph relay
+telegraph repeater
+telegraph rope
+telegraph sounder
+telegraph superintendent
+telegraph switchboard
+telegraph tape
+telegraph transmitter
+telegraph tubing
+telegraph wire
+telegraph wireman
+tele-iconograph
+telephone amplifier
+telephone arm
+telephone attendant
+telephone bell
+telephone booth
+telephone box
+telephone cabinet
+telephone cable
+telephone case
+telephone cell
+telephone closet
+telephone coil
+telephone condenser
+telephone connector
+telephone cord
+telephone counter
+telephone desk
+telephone engineer
+telephone engineering
+telephone exchange
+telephone faultsman
+telephone fitter
+telephone fuse
+telephone generator
+telephone holder
+telephone instrument
+telephone insulation
+telephone insulator
+telephone jack
+telephone knob
+telephone laborer
+telephone lineman
+telephone magneto
+telephone mechanic
+telephone mouthpiece
+telephone operator
+telephone pad
+telephone plug
+telephone protector
+telephone receiver
+telephone relay
+telephone selector
+telephone stand
+telephone supervisor
+telephone support
+telephone switch
+telephone switchboard
+telephone table
+telephone terminal
+telephone tester
+telephone transmitter
+telephone wire
+telephone wireman
+telescope bag
+telescope box
+telescope chimney
+telescope door
+telescope eye
+telescope finder
+telescope fish
+telescope fly
+telescope jack
+telescope joint
+telescope lens
+telescope screw
+telescope shell
+telescope sight
+telescope stack
+telescope table
+telescope tube
+telescope word
+Telinga potato
+teller-out
+tellurium glance
+telome theory
+telpher carrier
+telpher line
+telpher railway
+temperance drink
+temperance hotel
+temperance movement
+Temperate zone
+temperature coefficient
+temperature curve
+temperature gradient
+temperature relay
+temperature sensation
+temperature sense
+temperature signal
+temperature spot
+temper color
+temper pin
+temper screw
+temper-spoiling
+temper-trying
+temper-wearing
+tempest-bearing
+tempest-beaten
+tempest-blown
+tempest-born
+tempest-clear
+tempest-driven
+tempest-flung
+tempest-gripped
+tempest-harrowed
+tempest-loving
+tempest-proof
+tempest-rent
+tempest-rocked
+tempest-scattered
+tempest-scoffing
+tempest-shattered
+tempest-sundered
+tempest-swept
+tempest-threatened
+tempest-torn
+tempest-tossed
+tempest-troubled
+tempest-walking
+tempest-winged
+tempest-worn
+template excavator
+template jig
+temple axis
+Temple bar
+Temple butte
+temple-crowned
+temple flower
+temple-guarded
+temple-haunting
+temple mound
+temple name
+temple prostitute
+temple-robbing
+temple-sacred
+temple title
+temple-treated
+temple tree
+tempo turn
+temptation-proof
+ten-acre
+ten-acred
+tenaille line
+tenant farmer
+tenant right
+tenant righter
+ten-a-penny
+ten-armed
+Tenasserim mahogany
+ten-barreled
+ten-bore
+ten-cell
+ten-cent
+ten-cent store
+ten-coupled
+ten-course
+ten-cylindered
+ten-day
+ten-day fern
+tendency chord
+tendency play
+tendency theory
+tendency writing
+tender annual
+tender-bearded
+tender-bladed
+tender-bodied
+tender-boweled
+tender-colored
+tender-conscienced
+tender-dying
+tender-eared
+tender-eyed
+tender-faced
+tender-footed
+tender-footedness
+tender-foreheaded
+tender-handed
+tender-hoofed
+tender-hued
+tender-looking
+tender-minded
+tender-mouthed
+tender-natured
+tender-nosed
+tender-personed
+tender-rooted
+tender-shelled
+tender-sided
+tender-skinned
+tender-souled
+tender-taken
+tender-tempered
+tender-witted
+tendinous arch
+ten-dollar
+tendon reflex
+tendon sense
+tendril climber
+tendril-climbing
+ten-eighty
+tenement house
+Teneriffe lace
+ten-fingered
+ten-footed
+ten-forties
+ten-gallon hat
+ten-gauge
+ten-grain
+ten-guinea
+ten-headed
+ten-horned
+ten-horsepower
+ten-hour
+ten-inch
+ten-jointed
+ten-keyed
+ten-knotter
+ten-league
+ten-mile
+ten-minute
+ten-month
+tennis marker
+tennis play
+tennis player
+tennis playing
+tennis racket
+tennis shoe
+ten-oared
+tenon auger
+tenon saw
+tenon tooth
+tenor behind
+tenor clef
+tenor covering
+tenor octave
+tenor violin
+ten-parted
+ten-peaked
+ten-ply
+ten-point
+ten-pound
+ten-pounder
+ten-rayed
+ten-ribbed
+ten-roomed
+tense auxiliary
+ten-second
+tense-drawn
+tense-eyed
+tense-fibered
+tense phrase
+ten-shilling
+tensile strength
+tension carriage
+tension element
+tension line
+tension pulley
+tension rod
+tension roller
+tension zone
+ten-spined
+ten-spot
+ten-strike
+ten-striker
+ten-stringed
+ten-syllable
+ten-syllabled
+ten-talented
+tent bed
+tent caterpillar
+tent-clad
+tent-dotted
+tent-dwelling
+tenterhook willey
+tent-fashion
+tenth muse
+ten-thousandaire
+ten-ton
+ten-tongued
+ten-toothed
+tent pegger
+tent pegging
+tent pin
+tent pole
+tent-shaped
+tent-sheltered
+tent show
+tent stake
+tent stitch
+tent stripe
+tent tree
+ten-twenty-thirty
+tent worm
+ten-weeks stock
+ten-wheeled
+ten-wheeled locomotive
+ten-year
+teo-nong
+tepary bean
+tercel gentle
+terebinth tree
+ter-equivalent
+term attendant
+term day
+term fee
+term hour
+terminable annuity
+terminating decimal
+terminating plan
+term insurance
+termite-proof
+term paper
+term rate
+term settlement
+ternate-pinnate
+tern schooner
+terpane group
+terpene alcohol
+terpene hydrate
+terpin hydrate
+terra alba
+terra cariosa
+terra catechu
+terrace-banked
+Terrace epoch
+terrace-fashion
+terrace maker
+terrace-mantling
+terrace-steepled
+terra-cotta
+terra-cotta lumber
+terra damnata
+terra firma
+terra foliata
+terra incognita
+terrain cure
+terra japonica
+Terra lemnia
+terramara culture
+terra miraculosa
+terra muriatica
+terra orellana
+terra pinguis
+terrapin paws
+terrapin scale
+terra ponderosa
+terra porcellanea
+terra pozzuoli
+terra putura
+terra rosa
+terra rossa
+terra salitrosa
+terra sienna
+terra sigillata
+terrasse green
+terra umbra
+terre-a-terreishly
+terre-tenant
+terre-verte
+territory wool
+terror-bearing
+terror-breathing
+terror-breeding
+terror-bringing
+terror-crazed
+terror-driven
+terror-fleet
+terror-fraught
+terror-giving
+terror-haunted
+terror-inspiring
+terror-lessening
+terror-mingled
+terror-preaching
+terror-ridden
+terror-riven
+terror-shaken
+terror-smitten
+terror-stirring
+terror-stricken
+terror-striking
+terror-struck
+terror-threatened
+terror-troubled
+terror-wakened
+terror-warned
+terror-weakened
+ter-sacred
+tersy-versy
+tertia tone
+test act
+testament dative
+Testamentum domini
+test bar
+test bow
+test boy
+test case
+test clerk
+test cutter
+test frame
+test furnace
+test game
+test glass
+test height
+test house
+testimony meeting
+test indicator
+testing engineer
+testing engineering
+testing terminal
+test kitchen
+test lead
+test man
+test marker
+test match
+test meal
+test nail
+test object
+test paper
+test pilot
+test pit
+test room
+test solution
+test tube
+test-tubeful
+test tubing
+test type
+tetanus toxin
+tetbrothalein sodium
+tete a tete
+tether-devil
+tetiothalein sodium
+tetrad difference
+tetradecyl alcohol
+tetrahedrite type
+tetramethyl base
+tetter berry
+Teuto-british
+Teuto-celt
+Teuto-celtic
+Teutono-persic
+tew iron
+text blindness
+text hand
+textile engineer
+textile engineering
+textile soap
+text letter
+text pen
+text title
+textus receptus
+text writer
+thalamo-olivary
+thale-cress
+thalloid shoot
+thank offering
+thank-you
+thank-you-maam
+that-a-way
+thatch-browed
+thatch cloak
+thatch grass
+thatch-headed
+thatch palm
+thatch peg
+thatch pin
+thatch rake
+thatch rod
+thatch-roofed
+thatch tree
+thaw-drop
+T head
+T-head cylinder
+T-headed
+T-head toggle
+theater-craft
+Theban eagle
+theezan tea
+theft insurance
+thegn-born
+thegn-right
+theme song
+then-clause
+theobroma oil
+theory-blind
+theory-blinded
+theory-building
+theory-making
+theory-spinning
+thermocouple instrument
+thermocouple meter
+thermo development
+thermo-inhibitory
+thermometer pointer
+thermos bottle
+Thermos bottle
+thermos flask
+Thermos flask
+thermo-unstable
+thesis dramatist
+thesis novel
+thesis novelist
+thesis play
+thesis playwright
+theta function
+thiazine dye
+thick-ankled
+thick-barked
+thick-barred
+thick-beating
+thick-bedded
+thick-billed
+thick-blooded
+thick-blown
+thick-bodied
+thick-bossed
+thick-bottomed
+thick-breathed
+thick-cheeked
+thick-clouded
+thick-coated
+thick-coming
+thick-cut
+thick-decked
+thick-descending
+thick-drawn
+thick-eared
+thick-fingered
+thick-flaming
+thick-flanked
+thick-flashing
+thick-fleeced
+thick-fleshed
+thick-flowing
+thick-foliaged
+thick-footed
+thick-girthed
+thick-growing
+thick-grown
+thick-haired
+thick-hided
+thick-hidedness
+thick-jawed
+thick-jeweled
+thick-knee
+thick-kneed
+thick-knobbed
+thick-laid
+thick-leaved
+thick-legged
+thick-lined
+thick-lipped
+thick-looking
+thick-maned
+thick-necked
+thickness gauge
+thickness piece
+thick-packed
+thick-pated
+thick-peopled
+thick-piled
+thick-pleached
+thick-plied
+thick-ribbed
+thick-rinded
+thick-rooted
+thick-rusting
+thick-shadowed
+thick-shafted
+thick-shelled
+thick-sided
+thick-sighted
+thick-skinned
+thick-soled
+thick-sown
+thick-spaced
+thick-spread
+thick-spreading
+thick-sprung
+thick-stalked
+thick-starred
+thick-stemmed
+thick-streaming
+thick-swarming
+thick-tailed
+thick-thronged
+thick-toed
+thick-tongued
+thick-toothed
+thick-topped
+thick-voiced
+thick-walled
+thick-warbled
+thick-winded
+thick-witted
+thick-wittedly
+thick-wittedness
+thick-wooded
+thick-woven
+thick-wristed
+thick-wrought
+thief ant
+thief glass
+thief-resisting
+thief tube
+thigh boot
+thigh puff
+thimble-crowned
+thimble-eye
+thimble-eyed
+thimble lily
+thimble-pie
+thimble-shaped
+thimble-sized
+thimble skein
+thin-ankled
+thin-armed
+thin-barked
+thin-bedded
+thin-bellied
+thin-belly
+thin-bladed
+thin-blooded
+thin-blown
+thin-bodied
+thin-bottomed
+thin-brained
+thin-cheeked
+thin-clad
+thin-coated
+thin-cut
+thin-descending
+thin-eared
+thin-faced
+thin-featured
+thin-flanked
+thin-fleshed
+thin-flowing
+thin-frozen
+thin-fruited
+T hinge
+thing-it-self
+thin-grown
+things-in-themselves
+thing-word
+thin-haired
+thin-headed
+thin-hipped
+thinking cap
+thinking shop
+think-so
+thin-laid
+thin-leaved
+thin-legged
+thin-lined
+thin-lipped
+thin-lippedly
+thin-lippedness
+thin-necked
+thin-officered
+thin-peopled
+thin-pervading
+thin-rinded
+thin-set
+thin-shelled
+thin-shot
+thin-skinned
+thin-skinnedness
+thin-soled
+thin-sown
+thin-spread
+thin-spun
+thin-stalked
+thin-stemmed
+thin-veiled
+thin-voiced
+thin-walled
+thin-worn
+thin-woven
+thin-wristed
+thin-wrought
+thio acid
+thio ether
+thioindigo red b
+third base
+third baseman
+third best
+third class
+third-degree
+third-hand
+third-order
+third party
+third-rail
+third-rate
+third-rater
+thirst-abating
+thirst-allaying
+thirst country
+thirst-creating
+thirst-inducing
+thirst-maddened
+thirst-quenching
+thirst-raising
+thirst-scorched
+thirst-tormented
+thirteen-day
+thirteen-inch
+thirteen-lined
+thirteen-pence halfpenny
+thirteen-ringed
+thirteen-square
+thirteen-stone
+thirteen-story
+thirty-acre
+thirty-day
+thirty-eight
+thirty-eighth
+thirty-fifth
+thirty-first
+thirty-five
+thirty-foot
+thirty-four
+thirty-fourth
+thirty-gunner
+thirty-hour
+thirty-inch
+thirty-knot
+thirty-mile
+thirty-nine
+thirty-ninth
+thirty-one
+thirty-pound
+thirty-second
+thirty-second note
+thirty-second rest
+thirty-seven
+thirty-seventh
+thirty-six
+thirty-sixth
+thirty-third
+thirty-three
+thirty-ton
+thirty-two
+thirty-twomo
+thirty-word
+thirty-yard
+thirty-year
+this-a-way
+thistle ball
+thistle beard
+thistle butterfly
+thistle cock
+thistle crown
+thistle dollar
+thistle family
+thistle finch
+thistle funnel
+thistle noble
+thistle poppy
+thistle saffron
+thistle sage
+thistle tube
+this-way-ward
+this world
+this-worldian
+this-worldliness
+this-worldly
+this-worldness
+thiuram disulphide
+thong seal
+thorium dioxide
+thorium emanation
+thorium nitrate
+thorium oxide
+thorn apple
+thorn-bearing
+thorn-bound
+thorn broom
+thorn-covered
+thorn crown
+thorn-crowned
+thorn devil
+thorn-encompassed
+thorn forest
+thorn-headed
+thorn hedge
+thorn-hedged
+thorn letter
+thorn locust
+thorn-marked
+thorn oyster
+thorn palm
+thorn plum
+thorn poppy
+thorn-pricked
+thorn-resisting
+thorn-set
+thorn-strewn
+thorn tree
+thorn-wounded
+thorn-wreathed
+thorny-backed
+thorny-edged
+thorny-handed
+thorny-pointed
+thorny-pricking
+thorny-thin
+thorny-twining
+thorough-bind
+thorough-bore
+thorough-cleanse
+thorough-dress
+thorough-dry
+thorough-felt
+thorough-fought
+thorough-humble
+thorough light
+thorough-lighted
+thorough-line
+thorough-made
+thorough-ripe
+thorough-shot
+thorough-stain
+thought-abhorring
+thought-bewildered
+thought-burdened
+thought-challenging
+thought-concealing
+thought-conjuring
+thought-depressed
+thought-exceeding
+thought-executing
+thought-fed
+thought-fixed
+thought-free
+thought-giving
+thought-hating
+thought-haunted
+thought-heavy
+thought-heeding
+thought-hounded
+thought-humbled
+thought-imaged
+thought-inspiring
+thought-instructed
+thought-involving
+thought-jaded
+thought-kindled
+thought-laden
+thought-lighted
+thought-mad
+thought-mastered
+thought-meriting
+thought-moving
+thought-numb
+thought-out
+thought-outraging
+thought-pained
+thought-peopled
+thought-poisoned
+thought-pressed
+thought-provoking
+thought-read
+thought reader
+thought reading
+thought-reviving
+thought-ridden
+thought-saving
+thought-set
+thought-shaming
+thought-sounding
+thought-stirring
+thought-straining
+thought-swift
+thought-tight
+thought-tinted
+thought-tracing
+thought transference
+thought-unsounded
+thought-winged
+thought-working
+thought-worn
+thought-worthy
+thought writing
+thousand-acre
+thousand-dollar
+thousand-eyed
+thousand-footed
+thousand-guinea
+thousand-handed
+thousand-headed
+thousand-hued
+thousand-jacket
+thousand-leaf
+thousand-legged
+thousand-legs
+thousand-mile
+thousand-pound
+thousand-round
+thousand-sided
+thousand-souled
+thousand-voiced
+thousand-year
+Thraco-illyrian
+Thraco-phrygian
+thrall-less
+thrall-like
+thrasher shark
+thrasher whale
+thread angle
+thread bar
+thread blight
+thread board
+thread cabinet
+thread cell
+thread count
+thread counter
+thread cutter
+thread-cutting
+thread drawer
+thread drawing
+thread dresser
+thread eel
+threader-up
+thread fungus
+thread gauge
+thread generator
+thread herring
+threading lathe
+threading machine
+threading tool
+thread lace
+thread-leaved
+thread-legged
+thread-lettered
+thread lubricator
+thread mark
+thread-marked
+thread-measuring
+thread-mercerizing
+thread miller
+thread-milling
+thread moss
+thread-needle
+thread paper
+thread protector
+thread roller
+thread-shaped
+thread spinner
+thread splicer
+thread spooler
+thread tangle
+thread-the-needle
+thread-waisted
+thread winder
+thread-winding
+thread-worn
+three-accent
+three-acre
+three-act
+three-aged
+three-aisled
+three-angled
+three-arched
+three-arm
+three-armed
+three-arm protractor
+three-awned
+three-bagger
+three-ball
+three-ballmatch
+three balls
+three-banded
+three-bar
+three-basehit
+three-bearded
+three-bid
+three birds
+three-blade
+three-bladed
+three-bodied
+three-bolted
+three-bottle
+three-bottom
+three-bout
+three-branch
+three-branched
+three-bushel
+three-capsuled
+three-card
+three-card lant
+three-card loo
+three-card monte
+three-celled
+three-centered arch
+three-charge
+three-charge rate
+three-chinned
+three-circle
+three-circuit
+three-circuit switch
+three-class
+three-class system
+three-clause
+three-cleft
+three-coat
+three-cocked
+three-color
+three-colored
+three-color photography
+three-color process
+three-color theory
+three-component
+three-coned
+three-corded
+three-corner
+three-cornered
+three-corneredness
+three-course
+three-crank
+three-crowned
+three-cup
+three-cylinder
+three-day
+three-dayed
+three-day fever
+three-deck
+three-decked
+three-decker
+three-deck vessel
+three-deep
+three-dimensional
+three-dimensionalness
+three-dip
+three-dropped
+three-eared
+three-echo
+three-edged
+three-effect
+three-electrode
+three estates
+three-eyed
+three-faced
+three-farthing
+three-fathom
+three-fibered
+three-field
+three-figure
+three-fingered
+three-floored
+three-flowered
+three-foot
+three-forked
+three-formed
+three-fourths
+three-fruited
+three-grained
+three-groined
+three-groove
+three-grooved
+three-guinea
+three-halfpence
+three-halfpenny
+three-halfpennyworth
+three-hand
+three-handed
+three-headed
+three-high
+three-hinged
+three-hooped
+three-horned
+three-horse
+three-hour
+three-inch
+three-index
+three-iron
+three-jointed
+three-layered
+three-leaf
+three-leafed
+three-leaved
+three-legged
+three-letter
+three-lettered
+three-life
+three-light
+three-line
+three-lined
+three-lipped
+three-lobed
+three-man
+three-masted
+three-master
+three-mile
+three-minute
+three-minute glass
+three-month
+three-monthly
+three-mouthed
+three-move
+three-mover
+three-name
+three-necked
+three-nerved
+three-ounce
+three-out
+three-ovuled
+three-part
+three-parted
+three-pass
+three-peaked
+threepenny bit
+three-petaled
+three-phase
+three-phase alternator
+three-phased
+three-phaser
+three-piece
+three-pile
+three-piled
+three-piler
+three-pint
+three-plait
+three-ply
+three-point
+three-pointed
+three-point landing
+three-point perspective
+three-point problem
+three-point switch
+three-position
+three-pound
+three-pounder
+three-pound piece
+three-pronged
+three-quality
+three-quart
+three-quarter
+three-quarter back
+three-quarter binding
+three-quarter-bred
+three-quarters nelson
+three-quarter tone
+three-quarter vamp
+three-rail
+three-ranked
+three-reel
+three-ribbed
+three-ridge
+three-ring
+three-ringed
+three-roll
+three-room
+three-roomed
+three-row
+three-rowed
+three-sail
+three-salt
+three-scene
+three-second
+three-seeded
+three-shanked
+three-shaped
+three-shilling
+three-sided
+three-sidedness
+three-soled
+three-space
+three-span
+three-speed
+three-spined
+three-spored
+three-spot
+three-spread
+three-square
+three-square file
+three-star
+three-step
+three-storied
+three-story
+three-strand
+three-stranded
+three-stringed
+three-striped
+three-striper
+three-styled
+three-suited
+three-syllable
+three-syllabled
+three-syllable law
+three-tailed
+three-thorned
+three-thread
+three-throw
+three-tie
+three-tie joint
+three-tier
+three-tiered
+three-time
+three-tined
+three-toed
+three-toes
+three-ton
+three-tongued
+three-toothed
+three-torque
+three-tripod
+three-valved
+three-volume
+three-way
+three-wayed
+three-way spread
+three-way switch
+three-week
+three-weekly
+three-wheeled
+three-winged
+three-wire
+three-wire generator
+three-wire system
+three-wive
+three-woods
+three-wormed
+three-year
+three-year-old
+thresher whale
+threshing floor
+threshing machine
+threshold exposure
+threshold frequency
+thrice-accented
+thrice-blessed
+thrice-boiled
+thrice-crowned
+thrice-famed
+thrice-great
+thrice-happy
+thrice-honorable
+thrice-noble
+thrice-sold
+thrice-told
+thrice-venerable
+thrice-worthy
+thrift society
+thrift stamp
+thrill-crazed
+thrill-exciting
+thrill-less
+thrill-pursuing
+thrill-sated
+thrill seeker
+thrill-seeking
+throat brail
+throat-clearing
+throat-clutching
+throat-cracking
+throat-full
+throat halyards
+throat plate
+throat seizing
+throat sheet
+throat-slitting
+throat sweetbread
+throat-swollen
+throat track
+throne-born
+throne-capable
+throne room
+throne-shattering
+throne-worthy
+throstle cock
+throttle lever
+throttle valve
+throttling bar
+throttling governor
+through-blow
+through bolt
+through bond
+through bridge
+through-carve
+through-cast
+through check
+through cut
+through-drainage
+through-drive
+through-formed
+through-galled
+through-joint
+through-key
+through-lance
+through message
+through-mortise
+through-nail
+through-passage
+through-pierce
+through rate
+through retort
+through road
+through-rod
+through shake
+through-shoot
+through-splint
+through stane
+through stone
+through street
+through-swim
+through switch
+through-thrill
+through-toll
+through-tube
+through-tube boiler
+through way
+throw-in
+throwing engine
+throwing knife
+throwing net
+throwing power
+throwing stick
+throw lathe
+throw line
+throw-on
+throw-over
+throw rug
+throw stick
+thrum-eyed
+thrush blackbird
+thrush brown
+thrush fungus
+thrush lichen
+thrush nightingale
+thrush tit
+thrust bearing
+thrust deduction
+thrust fault
+thrust hoe
+thrust plane
+thrust shaft
+thuja oil
+Thule culture
+Thulite pink
+thumb-and-finger
+thumb ball
+thumb bottle
+thumb box
+thumb cleat
+thumb-fingered
+thumb flint
+thumb hole
+thumb holing
+thumb index
+thumb-kissing
+thumb knot
+thumb lancet
+thumb lock
+thumb loose
+thumb-made
+thumb-marked
+thumb notch
+thumb nut
+thumb pad
+thumb pin
+thumb piston
+thumb plane
+thumb pot
+thumb ring
+thumb rule
+thumbs down
+thumb-shaped
+thumb-sucking
+thumbs up
+thumb turn
+thumb-worn
+thump-cushion
+thunder-armed
+thunder ax
+thunder-baffled
+thunder-breathing
+thunder-charged
+thunder-darting
+thunder-delighting
+thunder-dirt
+thunder-fearless
+thunder-footed
+thunder-forging
+thunder-fraught
+thunder-free
+thunder-girt
+thunder-god
+thunder-guiding
+thunder-gust
+thunder-hid
+thunder-laden
+thunder-maned
+thunder planet
+thunder plant
+thunder pumper
+thunder-rejoicing
+thunder-riven
+thunder rod
+thunder-ruling
+thunder-scarred
+thunder-scathed
+thunder-shod
+thunder-slain
+thunder-smitten
+thunder snake
+thunder spirit
+thunder-splintered
+thunder-split
+thunder-splitten
+thunderstorm cirrus
+thunder-teeming
+thunder-throwing
+thunder-thwarted
+thunder-tipped
+thunder-tongued
+thunder tube
+thunder-voiced
+thunder-wielding
+Thurberia weevil
+Thury thread
+thwacking frame
+thwacking horse
+thwacking knife
+thwacking stool
+thwaite shad
+thwart-marks
+thwart motion
+thwartwise motion
+thyine wood
+thyme camphor
+thyme-capped
+thyme dodder
+thyme-fed
+thyme-flavored
+thyme-grown
+thyme-leaved
+thyme oil
+thyme-scented
+thymol blue
+thymus death
+thymus histone
+tib-cat
+Tiber green
+Tibeto-burman
+Tibeto-chinese
+Tibeto-himalayan
+tick-a-tick
+tick clover
+tick doleru
+ticket agency
+ticket agent
+ticket booth
+ticket-canceling
+ticket chopper
+ticket clerk
+ticket collector
+ticket-counting
+ticket-dating
+ticket day
+ticket gate
+ticket holder
+ticket maker
+ticket-making
+ticket night
+ticket office
+ticket porter
+ticket printer
+ticket-printing
+ticket punch
+ticket rack
+ticket-registering
+ticket scalper
+ticket-selling
+ticket taker
+ticket varnisher
+ticket-vending
+ticket window
+ticket writer
+tick farcy
+tick fever
+ticking work
+tickle-footed
+tickle grass
+tickle-headed
+tickle-heeled
+tickler coil
+tickler file
+tickle-toby
+tickle-tongued
+tickly-benders
+tick paralysis
+tickseed sunflower
+ticktack man
+tick trefoil
+tic-polonga
+tide-beaten
+tide-beset
+tide boat
+tide-bound
+tide-caught
+tide-covered
+tide crack
+tide day
+tide-driven
+tide-flooded
+tide-forsaken
+tide-free
+tide gate
+tide gauge
+tide-generating
+tide hole
+tideland spruce
+tide lock
+tide-locked
+tide-marked
+tide mill
+tide pool
+tide-predicting
+tide predictor
+tide-producing
+tide register
+tide-ribbed
+tide rip
+tide-rode
+tide-swept
+tide table
+tide-taking
+tide-tossed
+tide-trapped
+tide-washed
+tidewater cypress
+tidewater glacier
+tide wave
+tide wheel
+tide work
+tide-worn
+tidy-kept
+tidy-looking
+tidy-minded
+tie band
+tie bar
+tie beam
+tie bolt
+tie breaker
+tie conductor
+tie cord
+tied house
+tied image
+tied letters
+tie dyeing
+tie feeder
+tie-in
+tie knot
+tie line
+tie mill
+tie-on
+tie-out
+tie periwig
+tie plate
+tie-plater
+tie post
+tier building
+tierce major
+tierce rhyme
+tie rod
+tie rope
+tier ranger
+tiers-argent
+tier shot
+tie stay
+tie strap
+tie-tie
+tie-up
+tie wall
+tiger beetle
+tiger bittern
+tiger cat
+tiger chop
+tiger cocoa
+tiger cowrie
+tiger finch
+tiger fish
+tiger-footed
+tiger frog
+tiger grass
+tiger heart
+tiger lily
+tiger-looking
+tiger-marked
+tiger-minded
+tiger mosquito
+tiger moth
+tiger-mouth
+tiger-passioned
+tiger python
+tiger salamander
+tiger shark
+tiger shell
+tiger snake
+tiger-spotted
+tiger-striped
+tiger swallowtail
+tiger wolf
+tight-ankled
+tight-belted
+tight-bodied
+tight-booted
+tight-bound
+tight-clap
+tight-clenched
+tight-closed
+tight cooper
+tight-draped
+tight-drawn
+tightening pulley
+tight fit
+tight-fitting
+tight-gartered
+tight-hosed
+tight joint
+tight-limbed
+tight-lipped
+tight-looking
+tight-made
+tight-necked
+tight-packed
+tight-pressed
+tight-reining
+tight-rooted
+tight-set
+tight-shut
+tight-skinned
+tight-skirted
+tight-sleeved
+tight-stretched
+tight-tie
+tight-valved
+tight-waisted
+tight-wound
+tight-woven
+tight-wristed
+tile-clad
+tile-covered
+tile drain
+tile hook
+tile kiln
+tile ore
+tile painter
+tile pin
+tile pipe
+tile red
+tile-roofed
+till alarm
+till basket
+tiller bow
+tiller chains
+tiller lines
+tiller rope
+tilleul green
+till money
+til oil
+til seed
+tilt boat
+tilt bonnet
+tilt hammer
+tilting conveyor
+tilting fillet
+tilting hammer
+tilting helmet
+tilting yard
+tilt mill
+til tree
+tilt roof
+tilt steel
+tilt-top table
+timbale iron
+timber bar
+timber beetle
+timber borer
+timber-boring
+timber-built
+timber-carrying
+timber-ceilinged
+timber contractor
+timber-covered
+timber cruiser
+timber cutter
+timber-cutting
+timber-devouring
+timber-eating
+timber estimating
+timber estimator
+timber faller
+timber-floating
+timber forest
+timber frame
+timber-framed
+timber grapple
+timber grouse
+timber-headed
+timber-hitch
+timber jumper
+timber-laden
+timber leader
+timber line
+timber-lined
+timber loader
+timber mare
+timber marker
+timber measurer
+timber mill
+timber preserver
+timber-producing
+timber-propped
+timber rattlesnake
+timber right
+timber rot
+timber scribe
+timber shifter
+timber-skeletoned
+timber-strewn
+timber toe
+timber-toed
+timber topper
+timber topping
+timber tower
+timber tree
+timber unloader
+timber wheels
+timber wolf
+timber worm
+timbrel arch
+timbrel vault
+time about
+time allowance
+time-authorized
+time azimuth
+time ball
+time bargain
+time-barred
+time-battered
+time-beguiling
+time-bent
+time-bettering
+time-bewasted
+time bill
+time-blackened
+time-blanched
+time book
+time-born
+time-bound
+time-breaking
+time-canceled
+time-changed
+time chart
+time charter
+time charter party
+time-cleft
+time clerk
+time clock
+time constant
+time delay
+time-delay relay
+time-deluding
+time deposit
+time derivative
+time detector
+time-discolored
+time discount
+time draft
+time-eaten
+time-economizing
+time-enduring
+time enough
+time error
+time-expired
+time-exposure
+time fire
+time fuse
+time-fused
+time globe
+time-gnawn
+time gun
+time-halting
+time-hastening
+time hit
+time-honored
+time immemorial
+time killer
+time-killing
+time lag
+time-lasting
+time limit
+time loan
+time lock
+time-marked
+time-measuring
+time-mellowed
+time money
+time note
+time-noting
+time-out
+time policy
+time-pressed
+time quadrature
+time rating
+time recorder
+time-rent
+time-rusty
+time selling
+time sense
+time series
+time-served
+time service
+time sheet
+time shrapnel
+time-shrouded
+time sight
+time signal
+time signature
+time space
+time spirit
+time stamp
+time star
+time study
+time switch
+time-taught
+time-temperature
+time-temperature curve
+time-tested
+time thrust
+time ticket
+time train
+time triangle
+time-tried
+time value
+time-wasted
+time-wasting
+time-wearied
+time-white
+time-withered
+time zone
+timing gears
+timing screw
+timing valve
+timothy grass
+tim-whiskey
+tina process
+tin-bearing
+tin-bottomed
+tin-bound
+tin-bounder
+tin calciner
+tin can
+tin-capped
+tin chloride
+tin-colored
+tin-covered
+tin cow
+tin cry
+tin crystal
+tincture press
+tin cup
+tinder-cloaked
+tinder-dry
+tinder fungus
+tin dichloride
+tin dioxide
+tin-edged
+tin-filled
+tin-foil
+tin-foiler
+tin-foil paper
+tin frame
+ting-a-ling
+tin-handled
+tin hare
+tin hat
+tink-a-tink
+tinker mackerel
+tin kettle
+tin-kettler
+tinkle-tankle
+tinkle-tankling
+tin-lined
+tin liquor
+tin loaf
+tin-mailed
+tin monoxide
+tin opener
+tin ore
+tin oxide
+tin pail
+tin-pan
+tin-pan alley
+tin pest
+tin plague
+tin plate
+tin plater
+tin-plate worker
+tin pot
+tin-pottery
+tin-pottiness
+tin-potty
+tin pulp
+tin putty
+tin pyrite
+tin-roofed
+tin salt
+tinsel-bright
+tinsel-clad
+tinsel-covered
+tinsel-embroidered
+tinsel-paned
+tinsel-slippered
+tin shop
+tin smelter
+tin soldier
+tin spirit
+tin spot
+tin stream
+tin streamer
+tin streaming
+tin-tabled
+tin tack
+tint block
+tin tetrachloride
+tint meter
+tint photometer
+tint tool
+tin wash
+tin washing
+tin wedding
+tin-white
+ti palm
+tip cap
+tip car
+tip cheese
+tip crane
+tip-curled
+tip-eared
+tip-finger
+tip-off
+tippa-malku
+tipper-off
+tippet grebe
+tippet-scuffle
+tip plant
+tippling house
+tip roast
+tip roll
+tip sled
+tip slide
+tip speed
+tipsy cake
+tipsy key
+tipsy-topsy
+tip table
+tip-tap
+tip-top table
+tip truck
+tip-up
+tip van
+tip wagon
+tip worm
+tire becker
+tire bender
+tire-bending
+tire borer
+tire buffer
+tire carrier
+tire case
+tire cement
+tire chain
+tire changer
+tire-changing
+tire chipper
+tire clamp
+tire compressor
+tire cooler
+tire core
+tire cover
+tire curler
+tired-armed
+tired-eyed
+tired-faced
+tired-headed
+tired-looking
+tire dresser
+tired-winged
+tire examiner
+tire fastener
+tire filler
+tire-filling
+tire finisher
+tire fitter
+tire gauge
+tire heater
+tire-heating
+tire holder
+tire-inflating
+tire iron
+tire lacing
+tire lock
+tire-mile
+tire mold
+tire molder
+tire preservative
+tire press
+tire pressman
+tire prier
+tire protector
+tire pump
+tire rack
+tire remover
+tire repairman
+tire retreader
+tire roller
+tire setter
+tire shaper
+tire shoe
+tire shrinker
+tire stamper
+tire tape
+tire tool
+tire tread
+tire tube
+tire turner
+tire upsetter
+tire valve
+tire vulcanizer
+tiring house
+tiring irons
+tiring maid
+tiring room
+tiring woman
+tirlie-wirlie
+tirling pin
+tirly-toy
+T iron
+tissue-building
+tissue-changing
+tissue culture
+tissue-destroying
+tissue fibrinogen
+tissue fluid
+tissue-forming
+tissue paper
+tissue-producing
+tissue-secreting
+tisty-tosty
+titan crane
+titanic acid
+titanic anhydride
+titanic iron ore
+titanic oxide
+titanium dioxide
+titanium white
+tita root
+tit babbler
+tit drill
+titer test
+tithe barn
+tithe-collecting
+tithe collector
+tithe-free
+tithe gatherer
+tithe man
+tithe-paying
+tithe pig
+tithe proctor
+Titian-haired
+title bearer
+title-bearing
+title border
+title catalogue
+title deed
+title essay
+title hero
+title-holding
+title-hunting
+title insurance
+title letter
+title-mad
+title page
+title role
+title-seeking
+title space
+title type
+title-winning
+ti tree
+tit screw
+titter-totter
+tittle-tattle
+tittle-tattler
+tit-up
+Tityre-tu
+T joint
+T-man
+T nut
+toad-bellied
+toad-blind
+toad bug
+toad-frog
+toad grass
+toad-green
+toad-hating
+toad-housing
+toad-legged
+toad lily
+toad orchis
+toad rush
+toad-shaped
+toad snatcher
+toad spittle
+toad spot
+toad-spotted
+toad stabber
+toadstool disease
+toad-swollen
+to-and-fro
+to-arrive
+toast color
+toasting fork
+toasting iron
+toast list
+toast rack
+toast water
+tobacco-abusing
+tobacco bagger
+tobacco barn
+tobacco beetle
+tobacco box
+tobacco-box skate
+tobacco-breathed
+tobacco brown
+tobacco bug
+tobacco camphor
+tobacco carton
+tobacco case
+tobacco chewing
+tobacco cloth
+tobacco cultivator
+tobacco cutter
+tobacco dryer
+tobacco dust
+tobacco fertilizer
+tobacco flea beetle
+tobacco granulator
+tobacco grater
+tobacco-growing
+tobacco hawk moth
+tobacco heart
+tobacco hornworm
+tobacco lath
+tobacco leaf miner
+tobacco liquor
+tobacco liquorer
+tobacco machine
+tobacco machinery
+tobacco mildew
+tobacco molder
+tobacco mosaic
+tobacco panner
+tobacco pipe
+tobacco-pipe clay
+tobacco pouch
+tobacco press
+tobacco rack
+tobacco retainer
+tobacco roller
+tobacco shaver
+tobacco shed
+tobacco shop
+tobacco-sick
+tobacco smoker
+tobacco-smoking
+tobacco sprayer
+tobacco spreader
+tobacco-stained
+tobacco-stemming
+tobacco stick
+tobacco stopper
+tobacco stripper
+tobacco thrips
+tobacco tongs
+tobacco twister
+tobacco water
+tobacco wilt
+tobacco worm
+to-be
+tobira family
+toboggan cap
+toboggan slide
+tobosa grass
+to-burst
+Toc h
+tocher band
+tocher good
+toc-toc
+toddy bird
+toddy blossom
+toddy cat
+toddy ladle
+toddy palm
+toddy stick
+toddy tree
+to-do
+to-draw
+to-drive
+tod stove
+toe biter
+toe box
+toe calk
+toe clip
+toe crack
+toe dance
+toe dancer
+toe distance
+toe dog
+toe-drop
+toe hardy
+toe hold
+toe-in
+toe kisser
+toe kissing
+toe-mark
+toe pilling
+toe-punch
+toe ring
+toe wall
+toe weight
+to-fall
+toffee dipper
+Toft ware
+toggle bolt
+toggle chain
+toggle hook
+toggle iron
+toggle joint
+toggle-jointed
+toggle-joint press
+toggle press
+toggle riveter
+toggle switch
+togt-rider
+togt-riding
+toil-assuaging
+toil-beaten
+toil-bent
+toilet article
+toilet atomizer
+toilet bottle
+toilet brush
+toilet cabinet
+toilet case
+toilet cloth
+toilet cup
+toilet glass
+toilet hardware
+toilet mirror
+toilet paper
+toilet powder
+toilet room
+toilet service
+toilet set
+toilet soap
+toilet sponge
+toilet table
+toilet water
+toil-exhausted
+toil-hardened
+toil-marred
+toil-oppressed
+toil-stained
+toil-stricken
+toil-tried
+toil-weary
+toil-won
+to kalon
+token book
+token coin
+token money
+token payment
+token ring
+token sheet
+token silver
+tok-tokkie
+tol-de-rol
+toll agent
+toll bait
+toll bar
+toll board
+toll bridge
+toll call
+toll clerk
+toll collector
+toll corn
+toll dish
+toll farmer
+toll-free
+toll inspector
+toll line
+tol-lol
+tol-lol-de-rol
+tol-lol-ish
+toll road
+toll thorough
+toll traverse
+toll turn
+tolosa wood
+toluidine red
+toluric acid
+tolu tree
+Tom-and-jerry
+Tom-and-jerryism
+tomato black rot
+tomato blight
+tomato bouillon
+tomato can
+tomato-colored
+tomato curly top
+tomato eggplant
+tomato fern
+tomato fruitworm
+tomato gall
+tomato-growing
+tomato hamper
+tomato hawk moth
+tomato hornworm
+tomato juice
+tomato ketchup
+tomato-leaf
+tomato leaf blight
+tomato leaf mold
+tomato mosaic
+tomato packer
+tomato paste
+tomato pulp
+tomato puree
+tomato red
+tomato sauce
+tomato scalder
+tomato sphinx
+tomato streak
+tomato stripe
+tomato transplanter
+tomato trellis
+tomato-washing
+tomato wilt
+tomato worm
+tomato yellows
+tom-ax
+tomb bat
+tomb-black
+tomb-breaker
+tomb-dwelling
+tomb house
+tomb maker
+tomb-making
+tomb-paved
+tomb-robbing
+tomb-strewn
+tomb tower
+Tom collins
+Tom-come-tickle-me
+tom hurry
+tomkin post
+tommy-axe
+tommy bar
+tommy book
+tommy day
+tommy hole
+tommy master
+tommy noddy
+tommy shop
+tommy system
+tom pudding
+tom tailor
+tom-toe
+tom-tom
+tom-trot
+tonal gap
+tonal island
+to-name
+tone accent
+tone arm
+tone cluster
+tone color
+tone-deaf
+tone deafness
+tone-full
+tone gap
+tone grammar
+tone island
+tone language
+tone long
+tone measurer
+tone painting
+tone pattern
+tone picture
+tone poem
+tone poet
+tone poetry
+tone-producing
+tone quality
+tone syllable
+tone tester
+tone-up
+tone wheel
+ton-foot
+tong borer
+tongue-and-groove joint
+tongue-back
+tongue-baited
+tongue-bang
+tongue bar
+tongue bird
+tongue bit
+tongue-bitten
+tongue-blade
+tongue bone
+tongue-bound
+tongue compressor
+tongue depressor
+tongue-dumb
+tongue fern
+tongue fish
+tongue-flowered
+tongue-free
+tongue-front
+tongue-garbled
+tongue-gilt
+tongue-graft
+tongue grafting
+tongue grass
+tongue-haltered
+tongue-hammer
+tongue hero
+tongue-jangling
+tongue joint
+tongue-kill
+tongue-lash
+tongue-lashing
+tongue-leaved
+tongue-lolling
+tongue-murdering
+tongue-pad
+tongue pipe
+tongue-point
+tongue-puissant
+tongue-shaped
+tongue shell
+tongue swallowing
+tongue-tack
+tongue-taming
+tongue-taw
+tongue-tie
+tongue-tied
+tongue-tier
+tongue tree
+tongue twister
+tongue-valiant
+tongue-wagging
+tongue-walk
+tongue-wanton
+tongue work
+tongue worm
+tonic key
+tonic major
+tonic minor
+tonic motion
+tonic section
+tonic sol-fa
+tonic sol-faist
+tonic spasm
+tonka bean
+tonka-bean camphor
+tonka-bean wood
+ton-kilometer
+ton-mile
+ton-mileage
+tonnage coefficient
+tonnage deck
+tonnage displacement
+tonnage duty
+tonnage opening
+tonnage pool
+tonnage train
+tonneau lamp
+tonneau windshield
+too-aged
+too-anxious
+too-big
+too-bigness
+too-bold
+too-celebrated
+too-confident
+too-coy
+too-dainty
+too-devoted
+toodle-oo
+too-early
+too-earnest
+too-familiar
+too-fervent
+too-forced
+too-good
+too-hectic
+tool angle
+tool apron
+too-large
+too-late
+too-lateness
+too-laudatory
+tool bag
+tool belt
+tool boy
+tool cabinet
+tool car
+tool carriage
+tool carrier
+tool cart
+tool case
+tool chest
+tool-cleaning
+tool coupling
+tool-cutting
+tool demagnetizer
+tool-dresser
+tool-dressing
+tool engineer
+tool engineering
+tool examiner
+tool fasher
+tool fettler
+tool filer
+tool finder
+tool fitter
+tool forge
+tool forger
+tool gauge
+tool glazer
+tool grinder
+tool grinding
+tool handle
+tool heater
+tool house
+tool kit
+tool lubricant
+tool miller
+tool oil
+too-long
+tool plane
+tool post
+tool press
+tool rack
+tool reclaimer
+tool regrinding
+tool repairer
+tool rest
+tool roll
+toolroom lathe
+tool set
+tool sharpener
+tool-sharpening
+tool shed
+tool shop
+tool socket
+tool spindle
+tool stamper
+tool stand
+tool steel
+tool storekeeper
+tool subject
+tool table
+tool temper
+tool tray
+tool treating
+tool truck
+tool turner
+tool-using
+tool wagon
+tool whetter
+too-much
+too-muchness
+too-near
+too-old
+too-patient
+too-piercing
+too-proud
+too-ripe
+too-short
+too-soon
+too-soonness
+toothache grass
+toothache tree
+tooth ax
+tooth-billed
+tooth-bred
+toothbrush tree
+tooth caliper
+tooth-chattering
+tooth chisel
+tooth cleaner
+tooth cough
+tooth cress
+tooth doctor
+toothed-billed
+tooth edge
+tooth-extracting
+tooth fever
+tooth filling
+tooth forceps
+tooth fungus
+tooth gauge
+toothing plane
+tooth key
+tooth-leaved
+tooth mark
+tooth-marked
+tooth ornament
+tooth paste
+tooth plane
+tooth plugger
+tooth powder
+tooth puller
+tooth-pulling
+tooth pulp
+tooth rail
+tooth rash
+tooth relic
+tooth-rounding
+tooth sac
+tooth-set
+tooth-setting
+tooth-shaped
+tooth shell
+tooth-tempting
+tooth violet
+tooth wheel
+tooth-winged
+tooth wound
+too-timely
+tootle bug
+too-too
+toot plant
+too-trusting
+too-willing
+too-wise
+too-young
+top-armor
+topaz-colored
+topaz-green
+topaz rock
+topaz-tailed
+topaz-throated
+topaz-tinted
+topaz-yellow
+top beam
+top block
+top boot
+top-cap
+top cleaner
+top-coated
+top-cross
+top-cutter
+top-drain
+top-drawer
+top-dress
+top-dressing
+top-graft
+top grafting
+top hamper
+top-hampered
+top-hand
+top hat
+top-hatted
+top-heavily
+top-heaviness
+top-heavy
+top-hole
+tophus stone
+topic sentence
+Top-kapu
+topknot pigeon
+top light
+top line
+top liner
+top-lit
+top notch
+topographico-mythical
+top-over-tail
+topping lift
+topping-out course
+top-road bridge
+topsail-tye
+top-secret
+top-set
+top-sew
+top-shaped
+Topsy-fashion
+topsy-turvical
+topsy-turvification
+topsy-turvifier
+topsy-turvify
+topsy-turvily
+topsy-turviness
+topsy-turvy
+topsy-turvydom
+topsy-turvyhood
+topsy-turvyism
+topsy-turvyist
+topsy-turvyize
+top-timber
+top-work
+top yeast
+torch cactus
+torch course
+torch dance
+torch-fish
+torch flower
+torch holder
+torch lily
+torchon board
+torchon lace
+torchon paper
+torch pine
+torch race
+torch singer
+torch singing
+torch song
+torch staff
+torch thistle
+torch tree
+torch-tree family
+torchwood family
+to-rights
+tormentor wing
+tornado-breeding
+tornado cellar
+tornado-haunted
+tornado insurance
+tornado lantern
+tornado-swept
+torn-down
+tororo-konbu
+tororo-kubu
+torpedo battery
+torpedo boat
+torpedo-boat catcher
+torpedo-boat destroyer
+torpedo body
+torpedo boom
+torpedo catcher
+torpedo director
+torpedo mine
+torpedo net
+torpedo ram
+torpedo room
+torpedo sand
+torpedo school
+torpedo-shaped
+torpedo spar
+torpedo station
+torpedo stern
+torpedo tube
+torque arm
+torque converter
+torque tube
+Torrejon formation
+torrent-bitten
+torrent-borne
+torrent bow
+torrent-braving
+torrent duck
+torrent-flooded
+torrent-mad
+torrent-swept
+torsion angle
+torsion axis
+torsion balance
+torsion basin
+torsion curve
+torsion galvanometer
+torsion head
+torsion meter
+torsion pendulum
+torsion scale
+torsion screw
+torsion spring
+tort-feasor
+tortoise beetle
+tortoise flower
+tortoise-footed
+tortoise-headed
+tortoise-paced
+tortoise plant
+tortoise-rimmed
+tortoise-roofed
+tortoise-shaped
+tortoise shell
+tortoise-shell butterfly
+torus palatinus
+Tory democracy
+Tory democrat
+Tory-hating
+Tory-irish
+Tory-leaning
+Tory-radical
+Tory-ridden
+Tory-voiced
+tosh-up
+to-side
+total loss only policy
+totem animal
+totem badge
+totem kin
+totem pole
+tote shop
+toties quoties
+tot system
+totty-headed
+touch body
+touch cerate
+touch football
+touch judge
+touch-me-not
+touch-me-not-ish
+touch method
+touch needle
+touch paper
+touch reader
+touch spot
+touch typewriter
+touch typewriting
+touch-up
+touch writer
+touch writing
+tough-backed
+tough cake
+tough-fibered
+tough-fisted
+tough-handed
+tough-lived
+tough-looking
+tough-metaled
+tough-minded
+tough-mindedly
+tough-mindedness
+tough-muscled
+tough pitch
+tough-shelled
+tough-sinewed
+tough-skinned
+tough-thonged
+toura grass
+tour conductor
+touring car
+tourist car
+tourist class
+tourist court
+tourist-crammed
+tourist-haunted
+tourist-infested
+tourist-laden
+tourist-ridden
+tourist-trodden
+tourmaline pink
+tourmaline tongs
+tow boy
+tow car
+tow carder
+tow carrier
+tow cloth
+tow-colored
+towel gourd
+towel horse
+towel rack
+tower bastion
+tower-bearing
+tower cap
+tower-capped
+tower chime
+tower clock
+tower cress
+tower-crested
+tower-crowned
+tower-dwelling
+tower-encircled
+tower-flanked
+tower-high
+tower hill
+tower house
+tower light
+tower mustard
+tower owl
+tower-razing
+tower-shaped
+tower shell
+tower stamp
+tower-studded
+tower-supported
+tower-tearing
+tower telescope
+tower wagon
+Tower weight
+tower window
+tow-feeder
+tow-haired
+tow hook
+towing bridle
+towing lights
+towing net
+towing path
+towing post
+towing spar
+tow iron
+tow-made
+tow mixer
+town-absorbing
+town adjutant
+town ball
+town book
+town boomer
+town-born
+town-bound
+town-bred
+town bridge
+town bushel
+town car
+town church
+town clerk
+town clerkship
+town council
+town councilor
+town cress
+town crier
+town-dotted
+town dweller
+town-dwelling
+town economy
+town end
+tow-netter
+tow-netting
+town-flanked
+town foot
+town forest
+town-frequenting
+town gas
+town-girdled
+town-goer
+town-going
+town guard
+town hall
+town head
+town house
+town-imprisoned
+town jail
+town-keeping
+town-killed
+town life
+town-living
+town-looking
+town lot
+town-loving
+town-made
+town manager
+town meeting
+town mouse
+town mutual
+town officer
+town park
+town-pent
+town people
+town place
+town plan
+town planner
+town planning
+town reeve
+town row
+township road
+town-sick
+town sickness
+town soviet
+town talk
+town tallow
+town-tied
+town top
+town-trained
+town traveler
+town wall
+town way
+town-weary
+town woman
+town yard
+tow post
+tow-pung
+towrope horsepower
+tow-row
+tow-spinning
+tow team
+tow wheel
+toxin-anatoxin
+toxophore group
+toy dog
+to year and day
+toy-loving
+toy-sized
+toy spaniel
+T piece
+T plate
+trace-bearer
+trace buckle
+trace chain
+trace connector
+trace element
+trace fastener
+trace-galled
+trace-high
+trace holder
+trace hook
+trace horse
+tracer atom
+tracer bullet
+trace spring
+trachelo-occipital
+trachio branchia
+tracing braid
+tracing cloth
+tracing paper
+tracing thread
+tracing wheel
+track boat
+track bolt
+track brake
+track chisel
+track cleaner
+track-clearing
+track clip
+track drill
+track edge
+tracker action
+tracker bar
+track gauge
+track guard
+track harness
+track indicator
+track inspector
+track instrument
+track jack
+track-laying
+track level
+track leveler
+track lifter
+track liner
+track map
+track mark
+track-mile
+track oven
+track punch
+track road
+track roller
+track scale
+track shim
+track shoe
+track spike
+track sprocket
+track switch
+track tank
+track tool
+track-walking
+track wrench
+tract index
+traction engine
+traction fiber
+traction sprayer
+traction wheel
+tractor propeller
+trade acceptance
+trade agreement
+trade allowance
+trade association
+trade balance
+trade board
+trade-bound
+trade club
+trade coin
+trade commissioner
+trade council
+trade cumulus
+trade cycle
+trade-destroying
+trade discount
+trade dollar
+trade ducat
+trade edition
+trade eruption
+trade-facilitating
+trade fixture
+trade-gild
+trade goods
+trade guild
+trade hall
+trade-in
+trade journal
+trade-laden
+trade-last
+trade-made
+trade magazine
+trade-mark
+trade-marker
+trade-mark infringement
+trade-mark name
+trade name
+trade officer
+trade paper
+trade practice
+trade price
+trade rat
+trade rights
+trade road
+trade route
+trade sale
+trades board
+trade school
+trades council
+trade secret
+trade-seeking
+trades hall
+trades-union
+trades-unionist
+trade test
+trade tomahawk
+trade-union
+trade-unionism
+trade-unionist
+trade warranty
+trade wind
+trade work
+trading account
+trading market
+trading post
+trading stamp
+tradition-bound
+tradition-fed
+tradition-following
+tradition-making
+tradition-nourished
+tradition-ridden
+Tradition sunday
+traditor battery
+traffic beacon
+traffic-bearing
+traffic-choked
+traffic circle
+traffic-congested
+traffic constable
+traffic control
+traffic cop
+traffic court
+traffic density
+traffic director
+traffic-furrowed
+traffic jam
+traffic-laden
+traffic law
+traffic light
+traffic manager
+traffic-mile
+traffic officer
+traffic policeman
+traffic post
+traffic-regulating
+traffic regulator
+traffic sheet
+traffic shifter
+traffic signal
+traffic squad
+traffic-thronged
+traffic tower
+tragedy-proof
+tragic-comedy
+T rail
+trail angle
+trail arms
+trail bar
+trail blazer
+trail blazing
+trail board
+trail breaker
+trail bridge
+trail car
+trail cart
+trail-eye
+trail ferry
+trail handspike
+trailing-point
+trailing-point switch
+trail-marked
+trail net
+trail plank
+trail plate
+trail rope
+trail sight
+trail spade
+trail spur
+trail-weary
+trail-wise
+train butcher
+train caller
+train conductor
+train crew
+train dispatcher
+train-dispatching
+train flagman
+train foreman
+train-giddy
+train guard
+train hand
+train indicator
+training bank
+training day
+training level
+training ship
+training table
+training tackle
+training wall
+train inspector
+train jumper
+train legs
+train-lighting
+train line
+train-mile
+train mileage
+train oil
+train pipe
+train recorder
+train reporter
+train robber
+train rope
+train schedule
+train service
+train shed
+train sheet
+train sickness
+train signal
+train staff
+train starter
+train stop
+train tackle
+train ticket
+train trip
+train wrecker
+trait-complex
+tra-la-la
+tram-borne
+tram crane
+tram greaser
+tram guard
+tram load
+trammel net
+trammel wheel
+tram plate
+tramp pick
+tramp ship
+tram rail
+tram rod
+tram shed
+tram-traveling
+tranquil-acting
+tranquil-looking
+tranquil-minded
+Trans-acherontic
+Trans-adriatic
+Trans-african
+Trans-algerian
+Trans-alleghenian
+Trans-altaian
+Trans-american
+Trans-andean
+Trans-andine
+Trans-antarctic
+Trans-apennine
+Trans-arabian
+Trans-asiatic
+Trans-australian
+Trans-austrian
+Trans-balkan
+Trans-baltic
+Trans-canadian
+Trans-carpathian
+Trans-caspian
+Trans-congo
+Trans-cordilleran
+Trans-danubian
+Trans-egyptian
+trans-etherian
+Trans-euphratean
+Trans-euphrates
+Trans-euphratic
+Trans-eurasian
+transfer agent
+transfer book
+transfer box
+transfer caliper
+transfer case
+transfer company
+transfer day
+transference neurosis
+transference number
+transfer ink
+transfer paper
+transfer picture
+transfer printing
+transfer resistance
+transferring machine
+transfer stamp
+transfer table
+transformation myth
+transformation range
+transformation scene
+transformer oil
+transfusion cell
+transfusion tissue
+Trans-gangetic
+Trans-germanic
+Trans-grampian
+Trans-himalayan
+Trans-hispanic
+Trans-iberian
+Trans-indus
+Trans-iraq
+transit certificate
+transit circle
+transit compass
+transit department
+transit duty
+transit floater
+transit instrument
+transition curve
+transition fit
+transition form
+transition point
+Transition series
+transition sound
+transition temperature
+transition tint
+Transition zone
+transit pass
+transit prism
+transit privileges
+transit rot
+transit theodolite
+transit time
+Trans-jordan
+Trans-jovian
+Trans-kei
+translating roller
+Trans-libyan
+Trans-manchurian
+Trans-martian
+Trans-mediterranean
+Trans-mersey
+transmission bands
+transmission belting
+transmission cable
+transmission case
+transmission chain
+transmission clutch
+transmission dynamometer
+transmission efficiency
+transmission gear
+transmission grating
+transmission level
+transmission lock
+transmission loss
+transmission pulley
+transmission pump
+transmission rope
+transmission shaft
+transmission sheaf
+transmission theory
+transmission tower
+transmission unit
+transmission wheel
+Trans-mississippi
+Trans-mississippian
+transmitting set
+transmitting station
+transmit warrant
+Trans-mongolian
+Trans-neptunian
+Trans-niger
+transom adjuster
+transom bar
+transom butt
+transom catch
+transom center
+transom chain
+transom eye
+transom frame
+transom knee
+transom lift
+transom operator
+transom plate
+transom stern
+transom-sterned
+transom window
+Trans-paraguayan
+Trans-persian
+transphysical science
+transpiration current
+transportation engineer
+transportation insurance
+transport number
+transport rider
+transport riding
+transport ship
+transport vessel
+transposed matrix
+transposing instrument
+transposition cipher
+transposition method
+Trans-pyrenean
+Trans-rhenish
+Trans-sahara
+Trans-saharan
+Trans-saturnian
+Trans-severn
+Trans-siberian
+trans-sonic
+Trans-stygian
+Trans-tiberine
+Trans-ural
+Trans-uranian
+Transvaal daisy
+transverse section
+Trans-volga
+Trans-zambezian
+trap bat
+trap brilliant
+trap bushing
+trap clamp
+trap cleaner
+trap cover
+trap crop
+trap cut
+trap door
+trap-door spider
+trap driver
+trap drummer
+trapezoid ligament
+trap fisher
+trap hatch
+trap lever
+trap line
+trap match
+trap nest
+trap-nester
+trap net
+trap screw
+trap shot
+trap stair
+trap tree
+trap tuff
+trap vent
+trap weir
+trap window
+trash bag
+trash barrel
+trash can
+trash farming
+trash gatherer
+trash ice
+trash pile
+trash shield
+trash turner
+travel agent
+travel-bent
+travel book
+travel-broken
+travel-changed
+travel-disordered
+travel-enjoying
+traveler crane
+traveler iron
+travel-famous
+travel-formed
+travel-gifted
+travel-infected
+traveling agent
+traveling bag
+traveling carriage
+traveling case
+traveling clock
+traveling crab
+traveling derrick
+traveling elevator
+traveling examiner
+traveling fellowship
+traveling grate
+traveling-head shaper
+traveling hoist
+traveling inspector
+traveling tinker
+traveling trunk
+travel-jaded
+travel literature
+travel-loving
+travel-mad
+travel-met
+travel-opposing
+travel-parted
+travel-planning
+travel ration
+travel-sated
+travel shot
+travel sickness
+travel-soiled
+travel-spent
+travel-stained
+travel-tainted
+travel-tattered
+travel-tired
+travel-toiled
+travel-weary
+travel-worn
+traverse board
+traverse circle
+traverse drill
+traverse feed
+traverse flute
+traverse jury
+traverse rail
+traverse rod
+traverse sailing
+traverse shaper
+traverse survey
+traverse table
+traverse track
+traverse wind
+traversing bridge
+traversing circle
+traversing crane
+traversing gear
+traversing jack
+traversing mandrel
+travois road
+trawl board
+trawl line
+tray agriculture
+tray boy
+tray cloth
+tray conveyer
+tray elevator
+tray emptier
+tray filler
+tray frame
+tray handle
+tray maker
+tray-shaped
+tray-top table
+treacle mold
+treacle molding
+treacle mustard
+treacle sleep
+treacle water
+treacle wormseed
+treading mill
+tread-softly
+treason-breeding
+treason-canting
+treason felony
+treason-hatching
+treason-haunted
+treason-sowing
+treasure-baited
+treasure-bearing
+treasure box
+treasure chamber
+treasure chest
+treasure city
+treasure-filled
+treasure house
+treasure hunt
+treasure hunter
+treasure hunting
+treasure-laden
+treasure quest
+treasurer general
+treasure room
+treasure seeker
+treasure-seeking
+treasure ship
+treasure-trove
+treasury bench
+treasury bill
+treasury bond
+treasury certificate
+treasury letter
+treasury note
+treasury stock
+treasury warrant
+treaty-bound
+treaty-breaking
+treaty-favoring
+treaty maker
+treaty making
+treaty reinsurance
+treaty-sealed
+treaty-secured
+treble best
+treble block
+treble bob
+treble clef
+treble-dated
+treble gear
+treble-geared
+treble purchase
+treble-sinewed
+treble staff
+treble viol
+tree agate
+tree aloe
+tree azalea
+tree-banding
+tree bear
+tree belt
+tree boa
+tree-bordered
+tree-boring
+tree bracket
+tree cactus
+tree calf
+tree cat
+tree celandine
+tree-clad
+tree class
+tree-climbing
+tree clover
+tree cobra
+tree compass
+tree cony
+tree cotton
+tree-covered
+tree crab
+tree creeper
+tree cricket
+tree crow
+tree-crowned
+tree cult
+tree cypress
+tree dassie
+tree-dotted
+tree dove
+tree duck
+tree-dwelling
+tree-embowered
+tree-feeding
+tree feller
+tree fender
+tree fern
+tree-fringed
+tree fruit
+tree fuchsia
+tree-garnished
+tree germander
+tree-girt
+tree-god
+tree-goddess
+tree goldenrod
+tree goose
+tree-great
+tree guard
+tree-haunting
+tree heath
+tree-hewing
+tree holder
+tree hoopoe
+tree hopper
+tree houseleek
+tree huckleberry
+tree hyrax
+tree-inhabiting
+tree insulator
+tree ipomoea
+tree kangaroo
+tree lark
+tree lily
+tree line
+tree-lined
+tree-living
+tree-locked
+tree looker
+tree lotus
+tree-loving
+tree lucern
+tree lungwort
+tree lupine
+tree mallow
+tree-marked
+tree marking
+tree marten
+tree martin
+tree medic
+tree mildew
+tree milk
+tree moss
+tree mouse
+tree myrtle
+tree nymph
+tree onion
+tree orchis
+tree partridge
+tree peony
+tree pie
+tree pigeon
+tree pipit
+tree-planted
+tree planter
+tree planting
+tree poke
+tree poppy
+tree porcupine
+tree primrose
+tree protector
+tree pruner
+tree-pruning
+tree-ripe
+tree root rot
+tree-run
+tree rune
+tree runner
+tree-sawing
+tree scribe
+tree-shaded
+tree shrew
+tree-skirted
+tree snake
+tree sorrel
+tree sparrow
+tree spirit
+tree-spraying
+tree squirrel
+tree steppe
+tree stool
+tree sugar
+tree surgeon
+tree surgery
+tree swallow
+tree swift
+tree tag
+tree tiger
+tree toad
+tree tobacco
+tree tomato
+tree trimmer
+tree trunk
+tree veld
+tree violet
+tree viper
+tree wax
+tree wool
+tree wormwood
+tree worship
+tree worshiper
+trefoil arch
+trefoil knot
+trefoil-shaped
+trek ox
+trek wagon
+trellis-bordered
+trellis-covered
+trellis-framed
+trellis-shaded
+trellis-sheltered
+trellis-woven
+Tremadoc slates
+trembleuse cup
+tremor disk
+trench albuminuria
+trench artillery
+trench back
+trench bomb
+trench cart
+trench cavalier
+trench coat
+trench digger
+trench disease
+trencher attendant
+trencher cap
+trencher companion
+trencher critic
+trencher-fed
+trencher friend
+trencher knight
+trencher philosopher
+trencher plate
+trencher poetry
+trencher rascal
+trencher slave
+trencher time
+trench fever
+trench foot
+trench gun
+trenching plane
+trench knife
+trench mouth
+trench nephritis
+trench plow
+trench sickness
+trench silo
+trench warfare
+Tresca section
+trespass board
+trespass offering
+tress-braiding
+tress-encircled
+tress-lifting
+tress-plaiting
+tress-shorn
+tress-topped
+tres-tine
+trestle bed
+trestle bent
+trestle board
+trestle bridge
+trestle legs
+trestle post
+trestle table
+tres vif
+trey-ace
+trial-and-error
+trial balance
+trial balloon
+trial brief
+trial case
+trial court
+trial docket
+trial engagement
+trial frame
+trial glasses
+trial heat
+trial jury
+trial lawyer
+trial lenses
+trial marriage
+trial order
+trial package
+trial piece
+trial proof
+trial sample
+trial square
+trial trip
+triammonium phosphate
+triangle-leaved
+triangle-shaped
+triangle spider
+triangle winding
+triangular-shaped
+triangulato-ovate
+Triangulum australe
+Triangulum minor
+tribute money
+tribute pitch
+triceps surae
+tri-city
+trickle charge
+trickle charger
+trick-o-the-loop
+trick score
+trick valve
+trick work
+tricot stitch
+tricuspid valve
+trident bat
+trident-shaped
+tridymite-trachyte
+tri-ester
+trigesimo-secundo
+trigger finger
+trigger guard
+trigger hair
+trigger plant
+trigger tube
+trig loop
+tri-iodide
+trillium family
+trim-ankled
+trim-bearded
+trim-bodiced
+trim-bodied
+trim-cut
+trim-dressed
+trim-hedged
+tri-mide
+trim-kept
+trim-looking
+trimmer arch
+trimmer beam
+trimmer condenser
+trimmer joist
+trimmer signal
+trimming hatch
+trimming hole
+trimming joist
+trimming machine
+trimming press
+trimming punch
+trimming tank
+trim-suited
+trim-swept
+trim-waisted
+T ring
+trinity column
+trinity field
+trinity lily
+Trinity season
+Trinity sitting
+Trinity sunday
+trinity violet
+trinkum-trankum
+trip catch
+trip charter party
+trip dial
+trip die
+tripe-de-roche
+tripe dresser
+tripe-eating
+trip engine
+tripe seller
+tripe-selling
+trip-free
+trip gear
+trip hammer
+triphenylmethane color
+triphenylmethane dye
+trip hook
+triple-acting
+triple-action
+triple-aisled
+triple-apsidal
+triple-arched
+triple-awned
+triple-barbed
+triple-barred
+triple-bearded
+triple-bodied
+triple-bolted
+triple-branched
+triple-chorded
+triple-colored
+triple-crested
+triple crown
+triple-crowned
+triple-cylinder
+triple-deck
+triple-decked
+triple-dyed
+triple-edged
+triple-entry
+triple-expansion
+triple-formed
+triple-gemmed
+triple-hatted
+triple-headed
+triple-hearth
+triple-ingrain
+triple-line
+triple-lived
+triple-lock
+triple-nerved
+triple-piled
+triple-pole
+triple-rayed
+triple-ribbed
+triple-rivet
+triple-roofed
+triple-stranded
+triple-tailed
+triple tangent
+triple tangent plane
+triple-terraced
+triple-thread
+triple-throated
+triple-throw
+triple-tiered
+triplet lily
+triple-tongued
+triple-tonguing
+triple-toothed
+triple-towered
+triple-turned
+triple-turreted
+triple-veined
+triple-wick
+triplicate-pinnate
+triplicate-ternate
+trip line
+tri-ply
+trip money
+tripod puller
+tripod table
+trip piece
+trip pin
+tripping coil
+tripping line
+tripping link
+tripping relay
+tripping transformer
+trip rate
+trip shaft
+trip slip
+trip system
+trip-toe
+trip train
+trisodium phosphate
+Tri-state
+trit-trot
+tri-tunnel
+trivet table
+trocar-shaped
+troilus butterfly
+trois point
+troll-drum
+trolley attendant
+trolley block
+trolley bracket
+trolley bus
+trolley car
+trolley carrier
+trolley catcher
+trolley clip
+trolley cord
+trolley fork
+trolley frog
+trolley gong
+trolley guard
+trolley harp
+trolley hoist
+trolley insulator
+trolley lace
+trolley line
+trolley locomotive
+trolley maker
+trolley pole
+trolley rail
+trolley retrieiver
+trolley road
+trolley shoe
+trolley spring
+trolley track
+trolley tracking
+trolley wagon
+trolley wheel
+trolley wire
+troll plate
+tromba marina
+trombone coil
+trone weight
+tron weight
+troop duck
+troop leader
+troop-lined
+troop school
+troop-thronged
+troop train
+trophy cress
+trophy money
+trophy room
+trophy tax
+troth-contracted
+troth-keeping
+troth ring
+troth-telling
+trotter cases
+troubadour fiddle
+trouble-bringing
+trouble-free
+trouble-giving
+trouble-haunted
+trouble-house
+trouble maker
+trouble man
+trouble-mirth
+trouble-saving
+trouble shooter
+trouble shooting
+trouble-tossed
+trouble-worn
+trough battery
+trough conveyor
+trough gutter
+trough keel
+trough roof
+trough room
+trough-shaped
+trou madame
+trouser-press
+trouser presser
+trout bass
+trout brook
+trout-colored
+trout-famous
+trout fishing
+trout fly
+trout-haunted
+trout lily
+trout perch
+trout shad
+trout stream
+trowel bayonet
+trowel-shaped
+troy ounce
+troy pound
+troy weight
+truant officer
+truant school
+truce flag
+truce-hating
+truce-seeking
+truck box
+truck car
+truck driver
+truck farm
+truck farmer
+truck farming
+truck garden
+truck gardener
+truck gardening
+truck horse
+truck house
+trucking house
+truckle bed
+truck system
+truck tractor
+truck trailer
+trudgen crawl
+trudgen stroke
+true-aimed
+true-based
+true-begotten
+true-believing
+true-blooded
+true-blue
+true-breasted
+true-dealing
+true-derived
+true-devoted
+true-disposing
+true-divining
+true-eyed
+true-false
+true-felt
+true-grained
+true-heroic
+true-life
+truelove knot
+true-made
+true-mannered
+true-meaning
+true-meant
+true-noble
+true-paced
+true-ringing
+true-run
+true-seeming
+true-souled
+true-speaking
+true-spelling
+true-spirited
+true-spoken
+true-stamped
+true-strung
+true-sublime
+true-sweet
+true-thought
+true-toned
+true-tongued
+trump card
+trumped-up
+trumpet animalcule
+trumpet arch
+trumpet ash
+trumpet-blowing
+trumpet call
+trumpet conch
+trumpet creeper
+trumpet-creeper family
+trumpet daffodil
+trumpeter fish
+trumpeter muscle
+trumpeter perch
+trumpeter swan
+trumpeter whiting
+trumpet fish
+trumpet flower
+trumpet fly
+trumpet honeysuckle
+trumpet-hung
+trumpet hypha
+trumpet-leaf
+trumpet lily
+trumpet-loud
+trumpet major
+trumpet marine
+trumpet milkweed
+trumpet narcissus
+trumpet plant
+trumpet reed
+trumpet seaweed
+trumpet-shaped
+trumpet shell
+trumpet-toned
+trumpet-tongued
+trumpet tree
+trumpet vine
+trumpet-voiced
+trump-poor
+trump signal
+trundle bed
+trunk breeches
+trunk cabin
+trunk deck
+trunk dial
+trunk engine
+trunk hatch
+trunk hatchway
+trunk hose
+trunk line
+trunk piston
+trunk room
+trunk scald
+trunk steamer
+trunk turtle
+trunk whale
+trunnion band
+trunnion carriage
+trunnion chain
+trunnion cradle
+trunnion hoop
+trunnion jig
+trunnion plate
+truss beam
+truss-bound
+truss bow
+truss bridge
+truss-galled
+truss hoop
+trussing bed
+trussing machine
+truss rod
+trust agreement
+trust beneficiary
+trust-bolstering
+trust-breaking
+trust buster
+trust busting
+trust certificate
+trust company
+trust-controlled
+trust-controlling
+trust deed
+trustee bank
+trustee process
+trustee savings bank
+trustee security
+trustee stock
+trust fund
+trust institution
+trust maker
+trust mortgage
+trust officer
+trust receipt
+trust-regulating
+trust-ridden
+trust territory
+trust-winning
+truth-armed
+truth-bearing
+truth-cloaking
+truth-cowed
+truth-declaring
+truth-denying
+truth-desiring
+truth-destroying
+truth-dictated
+truth-filled
+truth-guarding
+truth-instructed
+truth-led
+truth lover
+truth-loving
+truth-mocking
+truth-passing
+truth-perplexing
+truth-revealing
+truth seeker
+truth-seeking
+truth serum
+truth-shod
+truth speaker
+truth-speaking
+truth-tried
+truth-writ
+try cock
+tryer-out
+try gun
+trying plane
+try-on
+trypan blue
+trypan red
+try plane
+try-pot
+try square
+trysting day
+trysting place
+T scale
+T score
+tsetse fly disease
+T slot
+T-slot cutter
+T square
+T steak
+Tsung-li yamen
+tsutsugamushi disease
+tsutsugamushi mite
+tuan muda
+tubal pregnancy
+tub-brained
+tub butter
+tub-coopering
+tub desk
+tub drubber
+tube-bearing
+tube brazer
+tube casts
+tube coral
+tube culture
+tube-curing
+tube door
+tube drawer
+tube-drawing
+tube-drilling
+tube-eyed
+tube-fed
+tube-filling
+tube foot
+tube generator
+tube mill
+tube-nosed
+tube plate
+tube railway
+tuber aster
+tubercle bacillus
+tuber fern
+tuber indexing
+tuber moth
+tube-rolling
+tuberous root
+tuberous-rooted
+tuber root
+tube saw
+tube-scraping
+tube set
+tube-shaped
+tube sheet
+tube shutter
+tube spinner
+tube-straightening
+tube transmitter
+tube weaver
+tube-weaving
+tube well
+tube worm
+tube wrench
+tub-fast
+tub front
+tub-keeping
+tubo-uterine
+tub-preach
+tub preacher
+tub preaching
+tub-shaped
+tub-size
+tub-sized
+tub-thump
+tub thumper
+tub thumping
+tubular-flowered
+tubular girder
+tubular goods
+Tubus astronomicus
+tub wheel
+tu-chung
+tu-chung bark
+tuck box
+tucker bag
+tucker-in
+tuck-in
+tuck net
+tuck-out
+tuck plate
+tuck-pointed
+tuck pointer
+tuck pointing
+tuck seine
+tucky lily
+tuco tuco
+tucu tucu
+tufted-eared
+tufted-necked
+tuft tree
+tug chain
+tug iron
+tug of war
+tug-of-warring
+tula metal
+tule chicken
+tule goose
+tule hen
+tulema arrow-root
+tule mint
+tule potato
+tule root
+tule wren
+tulip bed
+tulip blight
+tulip ear
+tulip-eared
+tulip fancier
+tulip-fancying
+tulip fire
+tulip-grass
+tulip grower
+tulip-growing
+tulip mold
+tulip orchid
+tulip poplar
+tulip poppy
+tulip root
+tulip-shaped
+tulip shell
+tulip tree
+tumble car
+tumble cart
+tumble-down
+tumble grass
+tumble home
+tumble mustard
+tumbler bearing
+tumbler cart
+tumbler cup
+tumbler gear
+tumbler gearing
+tumbler pigeon
+tumbler-shaped
+tumbler switch
+tumbling barrel
+tumbling bay
+tumbling box
+tumbling rod
+tumbling shaft
+tumbu fly
+tum-ti-tum
+tum-tum
+tumulus scab
+tuna cheese
+tuna fish
+tuna oil
+tune-skilled
+Tung-hu
+tung oil
+tungsten lamp
+tungsten ocher
+tungsten steel
+tungsten trioxide
+tung tree
+tunica palmata
+tuning bar
+tuning coil
+tuning cone
+tuning fork
+tuning hammer
+tuning hole
+tuning horn
+tuning key
+tuning lever
+tuning pin
+tuning pipe
+tuning slide
+tuning wrench
+tunking fit
+tunna smjors
+tunnel anemia
+tunnel-boring
+tunnel disease
+tunnel head
+tunnel kiln
+tunnel miner
+tunnel net
+tunnel pit
+tunnel right
+tunnel shaft
+tunnel-shaped
+tunnel sickness
+tunnel stern
+tunnel vault
+tunnel weaver
+tunnel worm
+tunny oil
+tuno gum
+tun pail
+tun shell
+tupelo gum
+tup-headed
+Tupi-guarani
+Tupi-guaranian
+tup lamb
+tuppenny-hapenny
+turban buttercup
+turban-crested
+turban-crowned
+turban lily
+turban-shaped
+turban sheep
+turban squash
+turban stone
+turban toque
+turbary hog
+turbine-driven
+turbine-engined
+turbine interrupter
+turbine-propelled
+turbojet engine
+turbo-propeller engine
+turboprop engine
+turboprop-jet engine
+turbo-ram-jet engine
+turf accountant
+turf ant
+turf-boring
+turf-bound
+turf-built
+turf cake
+turf-clad
+turf-covered
+turf-cutting
+turf-digging
+turf-forming
+turf-grown
+turf hog
+turf-laid
+turf moss
+turf-roofed
+turf-spread
+turf-walled
+turf webworm
+turgor pressure
+turkey beard
+turkey bird
+turkey blossom
+turkey bur
+turkey buzzard
+turkey call
+Turkey carpet
+Turkey-carpeted
+turkey claw
+turkey cock
+turkey corn
+turkey-feather
+turkey-feather fucus
+turkey fig
+turkey-foot
+turkey gnat
+turkey gobbler
+turkey grape
+turkey grass
+turkey hen
+turkey louse
+turkey mullein
+turkey oak
+turkey pea
+turkey pod
+Turkey red
+turkey-trot
+Turkey umber
+turkey vulture
+turkey-worked
+Turkish-blue
+Turko-albanian
+Turko-bulgar
+Turko-bulgarian
+Turko-byzantine
+Turko-cretan
+Turko-egyptian
+Turko-german
+Turko-greek
+Turko-imamic
+Turko-iranian
+Turko-italian
+Turko-mongol
+Turko-persian
+Turko-popish
+Turko-tatar
+Turko-tataric
+Turko-teutonic
+Turko-ugrian
+Turko-venetian
+turmeric root
+turmeric tree
+turn bench
+turn bolt
+turn bridge
+turn-crowned
+turned-back
+turned-down
+turned-in
+turned-on
+turned-out
+turned-over
+turned-up
+turner hall
+turner harp
+turner hood
+turner-off
+turn file
+turn-furrow
+turn-hall
+turn-in
+turn indicator
+turning arbor
+turning basin
+turning chisel
+turning engine
+turning gouge
+turning movement
+turning pendant
+turning piece
+turning plow
+turning point
+turning rest
+turning saw
+turning spur
+turning square
+turning value
+turnip aphid
+turnip bean
+turnip-bearing
+turnip cabbage
+turnip-eating
+turnip-fed
+turnip flea
+turnip flea beetle
+turnip fly
+turnip foot
+turnip grass
+turnip-growing
+turnip-headed
+turnip jack
+turnip leaf miner
+turnip-leaved
+turnip louse
+turnip maggot
+turnip nigger
+turnip parsnip
+turnip-pate
+turnip-pointed
+turnip radish
+turnip-rooted
+turnip sawfly
+turnip-shaped
+turnip shell
+turnip-sick
+turnip-stemmed
+turnip-tailed
+turnip tops
+turnip-yielding
+turn-key
+turn-key job
+turn meter
+turnover door
+turnover hinge
+turnover tax
+turn-penny
+turnpike geranium
+turnpike man
+turnpike road
+turn-round
+turn-server
+turn-serving
+turn-sick
+turn-sickness
+turn sign
+turn stitch
+turn-to
+turn-tree
+turn-under
+turnup bed
+turnup card
+Turnus butterfly
+turpentine beetle
+turpentine camphor
+turpentine gum
+turpentine moth
+turpentine oil
+turpentine orchard
+turpentine pine
+turpentine plant
+turpentine shrub
+turpentine substitute
+turpentine sunflower
+turpentine tree
+turpeth mineral
+turquoise blue
+turquoise-colored
+turquoise-encrusted
+turquoise green
+turquoise-hued
+turquoise-studded
+turquoise-tinted
+turret angle-rack tool
+turret captain
+turret clock
+turret crew
+turret cutter
+turret deck
+turret drier
+turret drill
+turret gun
+turret lathe
+turret-shaped
+turret ship
+turret slide tool
+turret spider
+turret steamer
+turret taper tool
+turret-topped
+turret-turning
+turtle-back
+turtleback scale
+turtle-back shooting
+turtle-billing
+turtle cowrie
+turtle crawl
+turtle deck
+turtle-footed
+turtle grass
+turtle green
+turtle-haunted
+turtle-mouthed
+turtle-neck
+turtle peg
+turtle pegger
+turtle pegging
+turtle plate
+turtle shell
+turtle stone
+turtle-winged
+Tuscan-colored
+Tuscan school
+Tuscarora rice
+tusk shell
+tusk tenon
+tussah silk
+tussock grass
+tussock moth
+tussock sedge
+tut money
+tut-mouthed
+tutor-sick
+tutti-frutti
+tut-tut
+tu-whit
+tu-whoo
+tuxedo coat
+tuxedo jacket
+tuyere arch
+tuyere box
+tuyere notch
+twae-three
+twain cloud
+twaite shad
+twattle-basket
+tweed-clad
+tweed-covered
+tweed-suited
+tween-brain
+tween-deck
+tween-watch
+tweet-tweet
+twelfhynde man
+twelfth-cake
+Twelfth-day
+Twelfth-night
+twelfth-second
+twelve-acre
+twelve-armed
+twelve-banded
+twelve-bore
+twelve-button
+twelve-candle
+twelve-carat
+twelve-cut
+twelve-day
+twelve-dram
+twelve-feet
+twelve-foot
+twelve-footed
+twelve-fruited
+twelve-gated
+twelve-gauge
+twelve-gemmed
+twelve-handed
+twelve-hole
+twelve-horsepower
+twelve-hour
+twelvehynde man
+twelve-inch
+twelve-labor
+twelve-legged
+twelve-line
+twelve-mile
+twelve-minute
+twelve-monthly
+twelve-oared
+twelve-ounce
+twelve-part
+twelve-pint
+twelve-point
+twelve-point sphere
+twelve-pound
+twelve-pounder
+twelve-rayed
+twelve-seated
+twelve-shilling
+twelve-sided
+twelve-spoke
+twelve-spotted
+twelve-starred
+twelve-stone
+twelve-stranded
+twelve-thread
+twelve-tone
+twelve-towered
+twelve-verse
+twelve-wired
+twelve-word
+twelve-year
+twelve-year-old
+twentieth-century
+twenty-acre
+twenty-carat
+twenty-centimeter
+twenty-cubit
+twenty-day
+twenty-dollar
+twenty-eight
+twenty-eighth
+twenty-fifth
+twenty-first
+twenty-five
+twenty-foot
+twenty-four
+twenty-fourmo
+twenty-fourth
+twenty-gauge
+twenty-grain
+twenty-gun
+twenty-hour
+twenty-inch
+twenty-knot
+twenty-line
+twenty-man
+twenty-mark
+twenty-mesh
+twenty-meter
+twenty-mile
+twenty-minute
+twenty-nigger
+twenty-nine
+twenty-ninth
+twenty-one
+twenty-one point cassino
+twenty-ounce
+Twenty-ounce
+twenty-payment
+twenty-penny
+twenty-plume
+twenty-pound
+twenty questions
+twenty-round
+twenty-second
+twenty-seven
+twenty-seventh
+twenty-shilling
+twenty-six
+twenty-sixth
+twenty-third
+twenty-thread
+twenty-three
+twenty-ton
+twenty-twenty
+twenty-two
+twenty-wood
+twenty-word
+twenty-yard
+twenty-year
+twi-banked
+twice-abandoned
+twice-abolished
+twice-absent
+twice-accented
+twice-accepted
+twice-accomplished
+twice-accorded
+twice-accused
+twice-achieved
+twice-acknowledged
+twice-acquired
+twice-acted
+twice-adapted
+twice-adjourned
+twice-adjusted
+twice-admitted
+twice-adopted
+twice-affirmed
+twice-agreed
+twice-alarmed
+twice-alleged
+twice-allied
+twice-altered
+twice-amended
+twice-angered
+twice-announced
+twice-answered
+twice-anticipated
+twice-appealed
+twice-appointed
+twice-appropriated
+twice-approved
+twice-arbitrated
+twice-arranged
+twice-assaulted
+twice-asserted
+twice-assessed
+twice-assigned
+twice-associated
+twice-assured
+twice-attained
+twice-attempted
+twice-attested
+twice-audited
+twice-authorized
+twice-avoided
+twice-baked
+twice-balanced
+twice-bankrupt
+twice-baptized
+twice-barred
+twice-bearing
+twice-beaten
+twice-begged
+twice-begun
+twice-beheld
+twice-beloved
+twice-bent
+twice-bereaved
+twice-bereft
+twice-bested
+twice-bestowed
+twice-betrayed
+twice-bid
+twice-bit
+twice-blamed
+twice-blessed
+twice-blooming
+twice-blowing
+twice-boiled
+twice-born
+twice-borrowed
+twice-bought
+twice-branded
+twice-broken
+twice-brought
+twice-buried
+twice-called
+twice-canceled
+twice-canvassed
+twice-captured
+twice-carried
+twice-caught
+twice-censured
+twice-challenged
+twice-changed
+twice-charged
+twice-cheated
+twice-chosen
+twice-cited
+twice-claimed
+twice-collected
+twice-commenced
+twice-commended
+twice-committed
+twice-competing
+twice-completed
+twice-compromised
+twice-concealed
+twice-conceded
+twice-condemned
+twice-conferred
+twice-confessed
+twice-confirmed
+twice-conquered
+twice-consenting
+twice-considered
+twice-consulted
+twice-contested
+twice-continued
+twice-converted
+twice-convicted
+twice-copyrighted
+twice-corrected
+twice-counted
+twice-cowed
+twice-created
+twice-crowned
+twice-cured
+twice-damaged
+twice-dared
+twice-darned
+twice-dead
+twice-dealt
+twice-debated
+twice-deceived
+twice-declined
+twice-decorated
+twice-decreed
+twice-deducted
+twice-defaulting
+twice-defeated
+twice-deferred
+twice-defied
+twice-delayed
+twice-delivered
+twice-demanded
+twice-denied
+twice-depleted
+twice-deserted
+twice-deserved
+twice-destroyed
+twice-detained
+twice-diminished
+twice-dipped
+twice-directed
+twice-disabled
+twice-disappointed
+twice-discarded
+twice-discharged
+twice-discontinued
+twice-discounted
+twice-discovered
+twice-disgraced
+twice-dismissed
+twice-dispatched
+twice-divided
+twice-divorced
+twice-doubled
+twice-doubted
+twice-drafted
+twice-drugged
+twice-dyed
+twice-earned
+twice-effected
+twice-elected
+twice-enacted
+twice-encountered
+twice-endorsed
+twice-engaged
+twice-enlarged
+twice-ennobled
+twice-essayed
+twice-evaded
+twice-examined
+twice-excelled
+twice-excused
+twice-exempted
+twice-exiled
+twice-exposed
+twice-expressed
+twice-extended
+twice-fallen
+twice-false
+twice-favored
+twice-felt
+twice-filmed
+twice-fined
+twice-folded
+twice-fooled
+twice-forgiven
+twice-forgotten
+twice-forsaken
+twice-fought
+twice-foul
+twice-fulfilled
+twice-gained
+twice-garbed
+twice-given
+twice-granted
+twice-grieved
+twice-guilty
+twice-handicapped
+twice-hazarded
+twice-healed
+twice-heard
+twice-helped
+twice-hidden
+twice-hinted
+twice-hit
+twice-honored
+twice-humbled
+twice-hurt
+twice-identified
+twice-ignored
+twice-imposed
+twice-improved
+twice-incensed
+twice-increased
+twice-indulged
+twice-infected
+twice-injured
+twice-insulted
+twice-insured
+twice-invented
+twice-invited
+twice-issued
+twice-jailed
+twice-judged
+twice-kidnaped
+twice-knighted
+twice-laid
+twice-lamented
+twice-leagued
+twice-learned
+twice-left
+twice-lengthened
+twice-levied
+twice-liable
+twice-listed
+twice-loaned
+twice-lost
+twice-mad
+twice-maintained
+twice-marketed
+twice-married
+twice-mastered
+twice-mated
+twice-measured
+twice-menaced
+twice-mended
+twice-mentioned
+twice-merited
+twice-met
+twice-missed
+twice-mistaken
+twice-modified
+twice-mortal
+twice-mourned
+twice-named
+twice-necessitated
+twice-needed
+twice-negligent
+twice-negotiated
+twice-nominated
+twice-noted
+twice-notified
+twice-numbered
+twice-objected
+twice-obligated
+twice-occasioned
+twice-occupied
+twice-offended
+twice-offered
+twice-offset
+twice-omitted
+twice-opened
+twice-opposed
+twice-ordered
+twice-originated
+twice-orphaned
+twice-overdue
+twice-overtaken
+twice-overthrown
+twice-owned
+twice-paid
+twice-painted
+twice-pardoned
+twice-parted
+twice-partitioned
+twice-patched
+twice-pensioned
+twice-permitted
+twice-persuaded
+twice-perused
+twice-petitioned
+twice-pinnate
+twice-placed
+twice-planned
+twice-pleased
+twice-pledged
+twice-poisoned
+twice-pondered
+twice-posed
+twice-postponed
+twice-praised
+twice-predicted
+twice-preferred
+twice-prepaid
+twice-prepared
+twice-prescribed
+twice-presented
+twice-preserved
+twice-pretended
+twice-prevailing
+twice-prevented
+twice-printed
+twice-procured
+twice-professed
+twice-prohibited
+twice-promised
+twice-promoted
+twice-proposed
+twice-prosecuted
+twice-protected
+twice-proven
+twice-provided
+twice-provoked
+twice-published
+twice-punished
+twice-pursued
+twice-qualified
+twice-questioned
+twice-quoted
+twice-raided
+twice-read
+twice-realized
+twice-rebuilt
+twice-recognized
+twice-reconciled
+twice-reconsidered
+twice-recovered
+twice-redeemed
+twice-re-elected
+twice-refined
+twice-reformed
+twice-refused
+twice-regained
+twice-regretted
+twice-rehearsed
+twice-reimbursed
+twice-reinstated
+twice-rejected
+twice-released
+twice-relieved
+twice-remedied
+twice-remembered
+twice-remitted
+twice-removed
+twice-rendered
+twice-rented
+twice-repaired
+twice-repeated
+twice-replaced
+twice-reported
+twice-reprinted
+twice-requested
+twice-required
+twice-reread
+twice-resented
+twice-resisted
+twice-restored
+twice-restrained
+twice-resumed
+twice-revenged
+twice-reversed
+twice-revised
+twice-revived
+twice-revolted
+twice-rewritten
+twice-rich
+twice-right
+twice-risen
+twice-roasted
+twice-robbed
+twice-roused
+twice-ruined
+twice-sacked
+twice-sacrificed
+twice-said
+twice-salvaged
+twice-sampled
+twice-sanctioned
+twice-saved
+twice-scared
+twice-scattered
+twice-scolded
+twice-scorned
+twice-sealed
+twice-searched
+twice-secreted
+twice-secured
+twice-seen
+twice-seized
+twice-selected
+twice-sensed
+twice-sent
+twice-sentenced
+twice-separated
+twice-served
+twice-set
+twice-settled
+twice-severed
+twice-shamed
+twice-shared
+twice-shelled
+twice-shelved
+twice-shielded
+twice-shot
+twice-shown
+twice-sick
+twice-silenced
+twice-sketched
+twice-soiled
+twice-sold
+twice-soled
+twice-solicited
+twice-solved
+twice-sought
+twice-sounded
+twice-spared
+twice-specified
+twice-spent
+twice-sprung
+twice-stabbed
+twice-staged
+twice-stated
+twice-stolen
+twice-stopped
+twice-straightened
+twice-stress
+twice-stretched
+twice-stricken
+twice-struck
+twice-subdued
+twice-subjected
+twice-subscribed
+twice-substituted
+twice-sued
+twice-suffered
+twice-sufficient
+twice-suggested
+twice-summoned
+twice-suppressed
+twice-surprised
+twice-surrendered
+twice-suspected
+twice-suspended
+twice-sustained
+twice-sworn
+twice-tabled
+twice-taken
+twice-tamed
+twice-taped
+twice-tardy
+twice-taught
+twice-tempted
+twice-tendered
+twice-terminated
+twice-tested
+twice-thanked
+twice-thought
+twice-threatened
+twice-thrown
+twice-tied
+twice-told
+twice-torn
+twice-touched
+twice-trained
+twice-transferred
+twice-translated
+twice-transported
+twice-treated
+twice-tricked
+twice-tried
+twice-trusted
+twice-turned
+twice-undertaken
+twice-undone
+twice-united
+twice-unpaid
+twice-upset
+twice-used
+twice-uttered
+twice-vacant
+twice-vamped
+twice-varnished
+twice-ventured
+twice-verified
+twice-vetoed
+twice-victimized
+twice-violated
+twice-visited
+twice-voted
+twice-waged
+twice-waived
+twice-wanted
+twice-warned
+twice-wasted
+twice-weaned
+twice-welcomed
+twice-whipped
+twice-widowed
+twice-wished
+twice-withdrawn
+twice-witnessed
+twice-won
+twice-worn
+twice-wounded
+twice-yielded
+twi-circle
+twi-colored
+twiddle-twaddle
+twiddling line
+twi-form
+twi-formed
+twig beetle
+twig blight
+twig borer
+twig caterpillar
+twig drop
+twig-formed
+twig gall
+twig girdler
+twig-green
+twig insect
+twig-lined
+twig pruner
+twig rush
+twig-strewn
+twig-suspended
+twig-wrought
+twilight arch
+twilight blue
+twilight-enfolded
+twilight-hidden
+twilight home
+twilight-hushed
+twilight-loving
+twilight parallel
+twilight-seeming
+twilight sleep
+twilight state
+twilight-tinctured
+twilight vision
+twilight zone
+t will
+twill-woven
+twi-minded
+twin-balled
+twin band mill
+twin-bearing
+twin-begot
+twin-blossomed
+twin boat
+twin-cylinder
+T winding
+twine binder
+twine-binding
+twine-bound
+twine braider
+twine-colored
+twine cutter
+twine holder
+twin-engined
+twine polisher
+twin equatorial
+twine reeler
+twine spinner
+twine-spinning
+twine-toned
+twine-twisting
+twin-existent
+twin-float
+twin-forked
+twingle-twangle
+twin-gun
+twin-headed
+twin-hued
+twin-leaved
+twin-lens
+twin-lens camera
+twin-light
+twin mill
+twin-motor
+twin-motored
+twin-named
+twinning axis
+twinning law
+twinning machine
+twin-peaked
+twin-power
+twin-roller
+twin-screw
+twin ship
+twin sister
+twin sisterhood
+twin-six
+twin-spiked
+twin-spired
+twin-spot
+twin stock
+twin-striped
+twin tap
+twin telescope
+twin-towered
+twin-towned
+twin-tractor
+twin valve
+twin-wheeled
+twin-wire
+twist belting
+twist bit
+twist drill
+twisted-horn
+twisted-stalk
+twisting machine
+twisting pair
+twist stitch
+twisty-wisty
+twitch grass
+twitch road
+twite finch
+twitter-twatter
+twittle-twattle
+twit-twat
+twizzle-twig
+two-along
+two-and-a-half stripes
+two-and-one-half striper
+two-angle
+two-arched
+two-armed
+two-aspect
+two-barred
+two-barreled
+two-base
+two-beat
+two-bedded
+two-bid
+two-bill
+two-bit
+two-blade
+two-bladed
+two-block
+two-blocks
+two-bodied
+two-bodies
+two-bodies problem
+two-bond
+two-bottle
+two-branched
+two-bristled
+two-bushel
+two-capsuled
+two-celled
+two-cent
+two-centered
+two-chamber
+two-chambered
+two-charge
+two-charge rate
+two-circle
+two-circuit
+two-circuit switch
+two-cleft
+two-coat
+two-color
+two-colored
+two-component
+two-course system
+two-cycle
+two-cylinder
+two-day
+two-deck
+two-deck vessel
+two-dimensional
+two-dimensioned
+two-dollar
+two-eared
+two-edged
+two-em
+two-em dash
+two-ended
+two estates
+two-eye
+two-eyed
+two-eyes
+two-faced
+two-facedly
+two-facedness
+two-factor
+two-family
+two-feeder
+two-field system
+two fifths
+two-figure
+two-fingered
+two-fisted
+two-floor
+two-flowered
+two-fluid
+two-foot
+two-footed
+two-foot octave
+two-forked
+two-formed
+two-gallon
+two-grained
+two-groove
+two-grooved
+two-guinea
+two-gun
+two-hand
+two-handed
+two-handedly
+two-handedness
+two-handled
+two-headed
+two-high
+two-hinged
+two-horned
+two-horse
+two-horsepower
+two-hour
+two-humped
+two-inch
+Two-kettle
+two-leaf
+two-leaved
+two leg
+two-legged
+two-life
+two-light
+two-line
+two-lined
+two-line octave
+two-lipped
+two-lobed
+two-lunged
+two-man
+two-mast
+two-masted
+two-master
+two-membered
+two-mile
+two-minded
+two-minute
+two-monthly
+two-name
+two-named
+two-necked
+two-needle
+two-nerved
+two-oar
+two-oared
+two old cat
+two-ounce
+two-pair
+two-part
+two-parted
+two-party
+two-pass
+two-peaked
+twopenny grass
+twopenny-halfpenny
+two-petaled
+two-phase
+two-phaser
+two-piece
+two-piece bow
+two-pile
+two-piled
+two-pin escapement
+two-pipe
+two-place
+two-platoon
+two-platoon system
+two-plowed
+two-ply
+two-point
+two-pointic
+two-pole
+two-position
+two-pound
+two-principle
+two-pronged
+two-quart
+two-rail
+two-ranked
+two-rate
+two-rayed
+two-revolution
+two-roomed
+two-row
+two-rowed
+two-seated
+two-seater
+two-seeded
+two-shafted
+two-shanked
+two-shaped
+two-sheave
+two-shilling
+two-shillingly
+two-shillingness
+two-sided
+two-sidedness
+two-soused
+two-speed
+two-spined
+two-spored
+two-spot
+two-spotted
+two-stall
+two-stalled
+two-step
+two-storied
+two-story
+two-stream
+two-stringed
+two-striped
+two-striper
+two-stroke
+two-stroke-cycle
+two-suit
+two-suiter
+two-syllable
+two-teeth
+two-thirder
+two-thirds
+two-three
+two-throw
+two-time
+two-tined
+two-toed
+two-tongued
+two-toothed
+two-topped
+two-track
+two-tusked
+two-twisted
+two-unit
+two-up
+two-valved
+two-volume
+two-way
+two-wheel
+two-wheeled
+two-wheeler
+two-wicked
+two-winged
+two-woods
+two-word
+two-year
+two-year-old
+twyhynde man
+Tyburn tree
+tye block
+tympan frame
+Tympano-eustachian
+tympan sheet
+tymp stick
+type bar
+type-blackened
+type block
+type cabinet
+type case
+type caster
+type-casting
+type characteristic
+type class
+type cutter
+type cutting
+type-distributing
+type-dressing
+type face
+type founder
+type founding
+type foundry
+type gauge
+type genus
+type-high
+type locality
+type matter
+type measure
+type metal
+type object
+type page
+type plate
+type rack
+typesetting machine
+type slug
+type species
+type specimen
+type station
+type theory
+type wash
+type wheel
+typewriter brush
+typewriter cabinet
+typewriter case
+typewriter cover
+typewriter desk
+typewriter eraser
+typewriter holder
+typewriter key
+typewriter mat
+typewriter oil
+typewriter pad
+typewriter paper
+typewriter ribbon
+typewriter roller
+typewriter stand
+typewriter table
+typewriter type
+typewriting telegraph
+typh fever
+typhlo-ureterostomy
+typhoid bacillus
+typhoid carrier
+typhoid spine
+tyrant bird
+tyrant-bought
+tyrant flycatcher
+tyrant-hating
+tyrant-quelling
+tyrant-ridden
+tyrant-scourging
+tyrant wren
+Tyrian purple
+tyrolite green
+Tzu-chou
+U-boat
+ubussu palm
+U-cut
+ugly-clouded
+ugly-conditioned
+ugly-eyed
+ugly-faced
+ugly-headed
+ugly-looking
+ugly-omened
+ugly-tempered
+ugly-visaged
+Ugro-altaic
+Ugro-aryan
+Ugro-finn
+Ugro-finnic
+Ugro-finnish
+Ugro-slavonic
+Ugro-tatarian
+uh-huh
+Uhro-rusinian
+uji fly
+ule tree
+ulla grass
+ulnocondylar foramen
+ultima ratio
+ultra-abolitionism
+ultra-abstract
+ultra-academic
+ultra-affected
+ultra-aggressive
+ultra-ambitious
+ultra-angelic
+Ultra-anglican
+ultra-apologetic
+ultra-arbitrary
+ultra-argumentative
+ultra-atomic
+ultra-auspicious
+Ultra-byronic
+Ultra-byronism
+Ultra-calvinist
+Ultra-christian
+Ultra-english
+Ultra-french
+Ultra-gallican
+Ultra-gangetic
+Ultra-german
+ultrahigh-frequency
+Ultra-julian
+Ultra-lutheran
+Ultra-lutheranism
+Ultra-martian
+Ultra-neptunian
+Ultra-pauline
+Ultra-pecksniffian
+Ultra-pluralism
+Ultra-pluralist
+Ultra-presbyterian
+Ultra-protestantism
+Ultra-puritan
+Ultra-puritanical
+Ultra-romanist
+Ultra-tory
+Ultra-toryism
+Ultra-whig
+Ulu-juz
+U magnet
+umber bird
+umber-black
+umber-brown
+umber-colored
+umber-rufous
+umble pie
+umbra tree
+umbrella ant
+umbrella bird
+umbrella bush
+umbrella catalpa
+umbrella fern
+umbrella fir
+umbrella grass
+umbrella leaf
+umbrella maker
+umbrella making
+umbrella man
+umbrella palm
+umbrella pine
+umbrella plant
+umbrella pulley
+umbrella sedge
+umbrella-shaped
+umbrella shell
+umbrella stand
+umbrella-topped
+umbrella tree
+Umbrian school
+Umbro-etruscan
+Umbro-florentine
+Umbro-latin
+Umbro-oscan
+Umbro-roman
+Umbro-sabellian
+Umbro-samnite
+Umbro-sienese
+umbu-rana
+um-hum
+umpire assay
+um suff
+um-yum
+Una boat
+unaccounted-for
+Un-african
+Un-american
+Un-americanism
+Un-americanization
+Un-americanize
+Un-anacreontic
+Un-anglican
+Un-anglicized
+Un-asiatic
+Un-athenian
+Un-attic
+Un-augean
+Un-australian
+Un-babylonian
+Un-biblical
+Un-biblically
+unbloody sacrifice
+Un-bostonian
+Un-brahminic
+Un-brazilian
+Un-british
+Un-buddhist
+uncalled-for
+uncared-for
+uncertainty principle
+uncertainty relation
+Un-chinese
+Un-christlike
+Un-christlikeness
+Un-christliness
+Un-christly
+Un-christmaslike
+unco guid
+un-come-at-able
+un-come-at-ableness
+un-come-at-ably
+un-co-operating
+un-co-operative
+un-co-ordinate
+un-co-ordinated
+unda maris
+under bevel
+undercurrent relay
+under damping
+underdeck tonnage
+under dominant
+underfrequency relay
+underhand bundler
+underhand stope
+underheat brooder
+underload starter
+underload switch
+under mediant
+under-mentioned
+under part
+underpower relay
+under-round
+under sail
+under secretary
+under-surface
+under way
+Un-dominican
+Un-doric
+Un-egyptian
+Un-elizabethan
+unemployment benefit
+unemployment insurance
+Un-english
+Un-englished
+Un-englishmanlike
+unequal-lengthed
+unequal-limbed
+unequal-lobed
+unequal-sided
+unequal-tempered
+unequal-valved
+Un-etruscan
+Un-european
+uneven-aged
+uneven-carriaged
+uneven-handed
+uneven-numbered
+uneven-priced
+uneven-roofed
+unfair list
+Un-fenian
+Un-finnish
+un-first-class
+Un-flemish
+Un-florentine
+Un-franciscan
+un-free-trade
+Un-french
+un-frenchify
+Un-georgian
+Un-german
+Un-germanic
+Un-germanize
+un-get-at-able
+un-get-at-ableness
+ungka puti
+Un-grandisonian
+Un-grecian
+Un-greek
+ungreenable black
+Un-gregorian
+Un-hamitic
+unhappy-eyed
+unhappy-faced
+unhappy-happy
+unhappy-looking
+unhappy-seeming
+unhappy-witted
+Un-hebraic
+Un-hebrew
+Un-hellenic
+Un-hibernically
+Un-hindu
+Un-homeric
+unhoped-for
+Un-horatian
+un-hunh
+Un-iberian
+Un-icelandic
+unicorn antelope
+unicorn beetle
+unicorn bird
+unicorn fish
+unicorn hawk moth
+unicorn moth
+unicorn plant
+unicorn-plant family
+unicorn ram
+unicorn root
+unicorn shell
+unicorn whale
+uniform-proof
+uniform velocity
+Un-indian
+Un-indianlike
+union black
+union blue
+union bow
+union card
+union catalogue
+union color
+union cord
+union district
+union down
+union dye
+union elbow
+union flag
+union grass
+union house
+Un-ionic
+union jack
+union jet burner
+union joint
+union label
+union-made
+union nut
+union orange
+union school
+union shop
+union station
+union suit
+union tannage
+union tee
+uniqueness theorem
+Un-iranian
+Un-irish
+Un-irishly
+unison interval
+Un-italian
+Un-italianate
+unit banking
+unit character
+unit cost
+United states
+United-statesian
+United-states-man
+unit factor
+unit fraction
+unitive life
+unit line
+unit lock
+unit matrix
+unit operation
+unit organ
+unit plane
+unit point
+unit price
+unit prism
+unit process
+unit pyramid
+unit rule
+unit-set
+unit stress
+unit switch
+unit tare
+unit vector
+unit watermark
+unity stress
+uni-univalent
+universe vine
+university-bred
+university-conferred
+university extension
+university-going
+university settlement
+university-sponsored
+university-taught
+university-trained
+Un-jacobean
+Un-japanese
+Un-jeffersonian
+Un-johnsonian
+Un-judaize
+Un-kantian
+Un-korean
+Un-lacedaemonian
+Un-latin
+unlonged-for
+unlooked-for
+Un-lutheran
+Un-machiavellian
+unmade-up
+Un-magyar
+Un-malay
+Un-maltese
+Un-manichaeanize
+Un-mediterranean
+Un-methodize
+Un-mexican
+Un-miltonic
+Un-mohammedan
+Un-mongolian
+Un-moorish
+Un-mormon
+Un-mosaic
+Un-moslem
+Un-moslemlike
+unmoth-eaten
+Un-neapolitan
+Un-norman
+Un-norwegian
+un-numbed
+Un-olympian
+Un-ovidian
+unpaid-letter
+unpaid-letter stamp
+un-panic-stricken
+Un-parisian
+Un-parisianized
+Un-peloponnesian
+Un-persian
+Un-petrarchan
+Un-philadelphian
+Un-pindaric
+Un-pindarical
+Un-pindarically
+Un-platonic
+Un-platonically
+Un-polish
+Un-portuguese
+un-preempted
+Un-presbyterian
+Un-protestant
+Un-protestantlike
+Un-prussian
+Un-prussianized
+Un-pythagorean
+un-reembodied
+Un-roman
+Un-romanize
+Un-romanized
+Un-saracenic
+Un-saxon
+Un-scotch
+Un-scottish
+Un-scripturality
+unself-assertive
+unself-centered
+unself-centred
+unself-changing
+unself-confident
+unself-conscious
+unself-consciously
+unself-consciousness
+unself-denying
+unself-determined
+unself-evident
+unself-indulgent
+unself-knowing
+unself-opinionated
+unself-possessed
+unself-reflecting
+unself-righteous
+unself-sacrificing
+unself-sufficient
+unself-supported
+unself-valuing
+unself-willed
+unself-willedness
+Un-semitic
+unsent-for
+Un-serbian
+Un-shakespearean
+Un-siberian
+Un-sicilian
+unsighed-for
+Un-slavic
+Un-socratic
+Un-southern
+Un-spaniardized
+Un-spanish
+Un-spartan
+Un-spenserian
+Un-sundaylike
+Un-swedish
+Un-swiss
+untalked-of
+Un-teutonic
+Un-thespian
+unthought-of
+unthought-on
+untongue-tied
+Un-tudor
+Un-turkish
+Un-tuscan
+Unuk al h
+Unuk al hay
+unup-braided
+Un-vedic
+Un-venetian
+Un-vergilian
+Un-victorian
+Un-viennese
+Un-virgilian
+Un-virginian
+Un-voltairian
+Un-wagnerian
+Un-washingtonian
+Un-welsh
+Un-wordsworthian
+unworm-eaten
+Un-yankee
+u-o umlaut
+up-a-daisy
+up-anchor
+up-and-coming
+up-and-comingness
+up-and-down
+up-and-down indicator
+up-and-downish
+up-and-downishness
+up-and-downy
+up-and-up
+upas tree
+up-bow
+up-bow sign
+upfeed system
+upholsterer bee
+U pin
+upland hickory
+U plate
+up-over
+up-page
+up-patient
+upper-circle
+upper-class
+upper classman
+upper crust
+upper-cruster
+upper-form
+upper-grade
+upper hand
+upper leather
+upper-school
+upper ten
+upper ten thousand
+up-put
+up-putting
+upright drill
+upright-growing
+upright-grown
+upright-hearted
+upright-heartedness
+upright-minded
+upright piano
+upright shave
+upright-standing
+upright-walking
+up-see-daisy
+upset price
+upsetting thermometer
+upside down
+upside-downism
+upside-downness
+upside-downwards
+up-sky
+Up-state
+Up-stater
+upsy-daisy
+upsy-freesy
+upsy-turvy
+up-to-date
+up-to-dately
+up-to-dateness
+up-to-datish
+up-to-datishness
+up-to-the-minute
+upward-borne
+upward-bound
+upward-gazing
+upward mordent
+upward-pointed
+upward-rushing
+upward-shooting
+upward-stirring
+upward-striving
+upward system
+upward-turning
+U rail
+Ural-altaian
+Ural-altaic
+uralite-gabbro
+Uralo-altaian
+Uralo-altaic
+Uralo-caspian
+Uralo-finnic
+Urania blue
+uranium glass
+uranium lead
+uranium nitrate
+uranium oxide
+uranium ray
+uranium red
+uranium yellow
+uranosouranic oxide
+urchin fish
+urea ferment
+urea-formaldehyde
+urea frost
+uredo-fruit
+ure-ox
+uretero-ureterostomy
+uretero-uterine
+uric-acid
+urinogenital ridge
+urinogenital sinus
+urn burial
+urn-buried
+urn-cornered
+urn-enclosing
+urn field
+urn moss
+urn schemata
+urn-shaped
+urn-topped
+urradhus law
+Ursae minorids
+Urta-juz
+urucu-rana
+urucuri iba
+usara root
+usar grass
+U section
+use district
+use inheritance
+use money
+U-shaped
+usher-in
+using-ground
+U-stirrup
+utility man
+utility room
+Utman khel
+Uto-aztecan
+U trap
+Utrecht velvet
+U tube
+uva grass
+U valley
+uva-ursi
+Uva-ursi
+uviol glass
+uviol lamp
+uvi yam
+Ux base
+uzara root
+vacancy clause
+vacant-brained
+vacant-eyed
+vacant-headed
+vacant-looking
+vacant-minded
+vacant-mindedness
+vacant-seeming
+vacation barrister
+vacation school
+vaccine lymph
+vaccine point
+vaccine therapy
+vaccino-syphilis
+vachette clasp
+vacuum boiler
+vacuum bottle
+vacuum brake
+vacuum breaker
+vacuum bulb
+vacuum can
+vacuum cleaner
+vacuum cleaning
+vacuum condenser
+vacuum crystallizer
+vacuum desiccator
+vacuum drier
+vacuum engine
+vacuum evaporating
+vacuum fan
+vacuum filter
+vacuum flask
+vacuum gauge
+vacuum hammer
+vacuum jar
+vacuum kettle
+vacuum line
+vacuum machine
+vacuum oven
+vacuum pack
+vacuum-packed
+vacuum pump
+vacuum separator
+vacuum shunt
+vacuum still
+vacuum strainer
+vacuum sweeper
+vacuum tank
+vacuum tar
+vacuum tester
+vacuum trap
+vacuum tube
+vacuum tube rectifier
+vacuum valve
+vacuum ventilation
+vacuum vessel
+vade mecum
+vagabond green
+vague-eyed
+vague-ideaed
+vague-looking
+vague-menacing
+vague-minded
+vague-phrased
+vague-shining
+vague-worded
+valence electron
+valence formula
+valence isomerism
+valence shell
+valency electron
+Val lace
+vallary crown
+vallate papilla
+vallecular canal
+valley board
+valley breeze
+valley flat
+valley lily
+valley mahogany
+valley oak
+valley partridge
+valley quail
+valley rafter
+valley roof
+valley tile
+valley train
+valley white oak
+valley wind
+valonia oak
+valuable consideration
+valuation account
+valuation survey
+value date
+valued policy
+valued-policy law
+value received
+value stress
+valval view
+valve body
+valve box
+valve cage
+valve cap
+valve casing
+valve casting
+valve chamber
+valve chest
+valve control
+valve coupling
+valve cup
+valve diagram
+valve ellipse
+valve file
+valve filter
+valve fitting
+valve gear
+valve generator
+valve grinder
+valve-grinding
+valve handle
+valve housing
+valve indicator
+valve-in-head engine
+valve key
+valve line
+valve motion
+valve plate
+valve ring
+valve rod
+valve seat
+valve-shaped
+valve spring
+valve stem
+valve tool
+valve travel
+valve trombone
+valve trumpet
+valve view
+valve washer
+valve wrench
+vampire bat
+vanadium bronze
+vanadium family
+vanadium oxide
+vanadium steel
+vanadous oxide
+van attendant
+van boy
+van builder
+van driver
+Vandyke beard
+Vandyke brown
+Vandyke collar
+Vandyke-edged
+Vandyke red
+vanilla bean
+vanilla chica
+vanilla extract
+vanilla grass
+vanilla leaf
+vanilla plant
+vanille ice
+vanillyl alcohol
+vanishing fraction
+vanishing line
+vanishing point
+vanishing trace
+vanity box
+Vanity fair
+Vanity-fairian
+vanity-proof
+van-john
+van load
+van loader
+van owner
+vantage game
+vantage ground
+vantage point
+vantage post
+van-winged hawk
+vapor bath
+vapor bathing
+vapor-belted
+vapor-braided
+vapor-burdened
+vapor burner
+vapor cabinet
+vapor cloud
+vapor-clouded
+vapor condenser
+vapor density
+vapor engine
+vaporer moth
+vapor-filled
+vapor-headed
+vapor heating
+vapor inhaler
+vapor jacket
+vapor lamp
+vapor lock
+vapor plane
+vapor pressure
+vapor-producing
+vapor regulator
+vapor-sandaled
+vapor stove
+vapor tension
+vapor trail
+vapor treatment
+vapor valve
+vapor volume
+Vaqueros formation
+vare widgeon
+variable condenser
+variable density system
+variable error
+variable-speed gear
+variable time fuze
+variation compass
+variation factor
+variation range
+varicose aneurysm
+variegated-leaved
+variety hybrid
+variety shop
+variety show
+various-blossomed
+various-colored
+various-formed
+various-leaved
+variscite green
+varnish brush
+varnish cleaner
+varnish dryer
+varnish-drying
+varnish filler
+varnish gum
+varnishing day
+varnish maker
+varnish-making
+varnish remover
+varnish renovator
+varnish sumac
+varnish thinner
+varnish-treated
+varnish-treating
+varnish tree
+Varronian canon
+Varronian satire
+varying duty
+varying-speed motor
+vasa parrot
+vase clock
+vase painter
+vase painting
+vase rug
+vase-shaped
+vase-vine
+vassal state
+vast-dimensioned
+vast-rolling
+vast-skirted
+vat builder
+vat color
+vat dye
+Vatican city
+Vatican codex
+Vatican fragment
+vat keeper
+vat liquor
+vat-net
+vat setter
+vat waste
+vau consecutive
+vau conversive
+vaulting capital
+vaulting cell
+vaulting course
+vaulting horse
+vaulting pillar
+vaulting shaft
+vaulting shoe
+vaulting tile
+vault mount
+vault rib
+vaunt-courier
+V bend
+V block
+V-blouse
+V bob
+V-bottom
+V connection
+V crowder
+V croze
+V curve
+veal bird
+vector addition
+vector algebra
+vector analysis
+vector area
+vector field
+vector line
+vector point function
+vector potential
+vector product
+vector quantity
+vector sum
+vedette boat
+vedette post
+vegetable alkali
+vegetable bezoar
+vegetable black
+vegetable brimstone
+vegetable calomel
+vegetable cheese
+vegetable dye
+vegetable earth
+vegetable-eating
+vegetable egg
+vegetable ethiops
+vegetable-feeding
+vegetable fibrin
+vegetable flannel
+vegetable gelatin
+vegetable glue
+vegetable gold
+vegetable-growing
+vegetable hair
+vegetable ivory
+vegetable jelly
+vegetable kingdom
+vegetable lamb
+vegetable marrow
+vegetable mold
+vegetable naphtha
+vegetable oil
+vegetable orange
+vegetable oyster
+vegetable parchment
+vegetable plate
+vegetable red
+vegetable satyr
+vegetable sheep
+vegetable spermaceti
+vegetable stock
+vegetable tallow
+vegetable-tallow tree
+vegetable wax
+vegetation-proof
+vegetation spirit
+vehicle tank
+veil-hid
+veil-wearing
+vein-bearing
+vein claim
+vein dike
+vein-healing
+veining tool
+vein islet
+vein-mining
+vein quartz
+vein-streaked
+velar-pharyngeal
+veld cornet
+veld-kost
+veld sickness
+veld sore
+velleda moth
+vellum binder
+vellum binding
+vellum-bound
+vellum cloth
+vellum-covered
+vellum form
+vellum-leaved
+vellum paper
+vellum-papered
+vellum-written
+velocity co-ordinate
+velocity function
+velocity head
+velocity potential
+velocity ratio
+velocity screen
+velocity stage
+velt-marshal
+velvet ant
+velvet ash
+velvet-banded
+velvet bean
+velvet-bearded
+velvet bent
+velvet-black
+velvet bur
+velvet cap
+velvet-caped
+velvet carpet
+velvet-clad
+velvet cork
+velvet dock
+velvet duck
+velvet finish
+velvet fish
+velvet flower
+velvet glove
+velvet grass
+velvet green
+velvet groundsel
+velvet leather jacket
+velvet-leaved
+velvet moss
+velvet osier
+velvet paper
+velvet-pile
+velvet plant
+velvet rug
+velvet runner
+velvet scoter
+velvet sponge
+velvet-suited
+velvet tree
+velvet violet
+vending machine
+veneer grafting
+veneer moth
+venerable-looking
+Venetian blind
+Venetian point
+Venetian school
+vengeance-crying
+vengeance-prompting
+vengeance-sated
+vengeance-scathed
+vengeance-seeking
+vengeance-taking
+V-engine
+Venice blue
+Venice glass
+Venice treacle
+Venice turpentine
+venom-breathing
+venom-breeding
+venom-cold
+venom-fanged
+venom-hating
+venom maker
+venom-mouthed
+venomous-hearted
+venomous-looking
+venomous-minded
+venom-spotted
+venom-sputtering
+venom-venting
+vent drill
+vent feather
+ventilating apparatus
+ventilating blower
+ventilating brick
+ventilating column
+ventilating engineer
+ventilating fan
+ventilating grate
+ventilating jack
+ventilating millstone
+ventilating skylight
+vent punch
+vent stack
+vent tank
+venture capital
+Venturi meter
+venturi tube
+vent wire
+verbena family
+verbena oil
+verbena violet
+verb phrase
+verd antique
+verdigris green
+verditer blue
+verditer green
+verd russe
+verge escapement
+verge paper
+verge watch
+vermeil-cheeked
+vermeil-dyed
+vermeil-rimmed
+vermeil-tinctured
+vermeil-tinted
+vermeil-veined
+vermiform process
+vermilion-colored
+vermilion-dyed
+vermilion-red
+vermilion-spotted
+vermilion-tawny
+vermilion-veined
+vermin-covered
+vermin-destroying
+vermin-eaten
+vermin-footed
+vermin-haunted
+vermin-infested
+vermin-ridden
+vermin-spoiled
+vermin-tenanted
+Vermont cent
+Vermont snakeroot
+vernal-bearded
+vernal-blooming
+vernal-flowering
+vernal grass
+vernal-seeming
+vernal-tinctured
+vernier telescope
+vernonia purple
+Verona brown
+Verona orris
+verse anthem
+verse-colored
+verse-commemorated
+verse-prose
+verse service
+version book
+vers libre
+vers librist
+vertical-grained
+vertical lift bridge
+vertical-lift mower
+vert russe
+vervain family
+vervain hummingbird
+vervain mallow
+vervain sage
+vervain thoroughwort
+vesico-umbilical
+vesico-urachal
+vesico-ureteral
+vesico-urethral
+vesico-uterine
+vesper bird
+vesper mouse
+vestibule car
+vestibule latch
+vestibule school
+vestibule train
+vestibulo-urethral
+vesting order
+Vestorian blue
+vest-pocket
+vest-pocket camera
+vestry board
+vestry room
+vetch-leaved
+vetiver green
+vetivert oil
+veto message
+veto power
+V-formed
+V-grooved
+Via lactea
+via media
+via-medialism
+vi apple
+vibration massage
+vibration number
+vibration point
+vibration-proof
+vibratory current
+vibratory massage
+vicarage tithe
+vicar-choralship
+vicar-general
+vicar-generalship
+vice-abbot
+vice-admiral
+vice-admiralship
+vice-admiralty
+vice-admiralty court
+vice-agent
+Vice-apollo
+vice-apostle
+vice-apostolical
+vice-architect
+vice-begotten
+vice-bishop
+vice-bitten
+vice-burgomaster
+vice-butler
+vice-caliph
+vice-cancellarian
+vice-chair
+vice-chairman
+vice-chamberlain
+vice-chancellor
+vice-chancellorship
+Vice-christ
+vice-collector
+vice-commodore
+vice-constable
+vice-consul
+vice-consular
+vice-consulate
+vice-consulship
+vice-corrupted
+vice-county
+vice-created
+vice-dean
+vice-deity
+vice-detesting
+vice-dictator
+vice-director
+vice-emperor
+vice-freed
+vice-general
+Vice-god
+Vice-godhead
+vice-government
+vice-governor
+vice-governorship
+vice-guilty
+vice-haunted
+vice-headmaster
+vice-imperial
+vice-king
+vice-kingdom
+vice-legate
+vice-legateship
+vice-librarian
+vice-lieutenant
+vice-loathing
+vice-marred
+vice-marshal
+vice-master
+vice-ministerial
+vice-nature
+vice-palatine
+vice-papacy
+vice-patron
+vice-patronage
+vice-polluted
+vice-pope
+vice-porter
+vice-postulator
+vice-prefect
+vice-presidency
+vice-president
+vice-presidential
+vice-presidentship
+vice-priest
+vice-principal
+vice-principalship
+vice-prior
+vice-protector
+vice-provost
+vice-provostship
+vice-punishing
+vice-queen
+vice-rebuking
+vice-rector
+vice-rectorship
+vice-regalize
+vice-regency
+vice-regent
+vice-reign
+vice-residency
+vice-resident
+vice-secretary
+vice-sheriff
+vice-sick
+vice-squandered
+vice-stadtholder
+vice-steward
+vice-sultan
+vice-taming
+vice-tenace
+vice-throne
+vice-treasurer
+vice-treasurership
+vice-trustee
+vice-upbraiding
+vice-verger
+vice versa
+vice-viceroy
+vice-warden
+vice-wardenry
+vice-wardenship
+vice-worn
+vicontiel rent
+vicontiel writ
+Victoria blue
+Victoria cross
+Victoria day
+Victoria embankment
+Victoria green
+Victoria lake
+Victoria lawn
+Victoria lily
+Victoria violet
+Victory button
+Victory day
+Victory loan
+victory medal
+victualing bill
+victualing house
+victualing note
+victualing office
+victualing ship
+victualing station
+victualing yard
+victual rent
+vida finch
+view angle
+view finder
+view halloo
+vigesimo-quarto
+vigilance committee
+vigogne yarn
+vile-born
+vile-bred
+vile-concluded
+vile-fashioned
+vile-looking
+vile-natured
+vile-proportioned
+vile-smelling
+vile-spirited
+vile-spoken
+vile-tasting
+villa-dotted
+villa-dwelling
+village-born
+village cart
+village community
+village-dwelling
+village economy
+village-lit
+village reserve
+village soviet
+villa-haunted
+villainous-looking
+villainy-proof
+Villanova culture
+villein socage
+vinaigrette sauce
+vine bamboo
+vine bark louse
+vine-bearing
+vine beetle
+vine black
+vine-bordered
+vine borer
+vine bower
+vine cactus
+vine chafer
+vine-clad
+vine-covered
+vine-crowned
+vine-decked
+vine-encircled
+vine-fed
+vine forester
+vine fretter
+vinegar eel
+vinegar essence
+vinegar-faced
+vinegar-flavored
+vinegar fly
+vinegar-generating
+vinegar-hearted
+vinegar lamp
+vine-garlanded
+vinegar maker
+vinegar making
+vinegar mother
+vinegar plant
+vinegar rot
+vinegar-tart
+vinegar tree
+vinegar worm
+vine-growing
+vine hawk moth
+vine hopper
+vine-hung
+vine-laced
+vine leaf
+vine-leafed
+vine leaf folder
+vine-leaved
+vine leek
+vine louse
+vine-mantled
+vine maple
+vine mesquite
+vine mildew
+vine misquite
+vine moth
+vine peach
+vine pest
+vine-planted
+vine-producing
+vine-robed
+vine sawfly
+vine scale
+vine-shadowed
+vine-sheltered
+vine slug
+vine sorrel
+vine sphinx
+vine tie
+vine turner
+vine webworm
+vine weevil
+vine wilt
+vine-wreathed
+vineyard plow
+vintage wine
+vintage year
+vinylidene resin
+viola alta
+viola bastarda
+viola da braccio
+viola da gamba
+viola damore
+viola da spalla
+viola di bordone
+viola di fagotto
+viola pomposa
+viol block
+viol da braccio
+viole damour
+violet-black
+violet-blind
+violet-blindness
+violet-bloom
+violet-blue
+violet-brown
+violet carmine
+violet-colored
+violet cress
+violet-crimson
+violet-crowned
+violet-dyed
+violet-ear
+violet-eared
+violet-embroidered
+violet family
+violet-flowered
+violet-garlanded
+violet-gray
+violet-green
+violet-green swallow
+violet-headed
+violet-horned
+violet-hued
+violet-inwoven
+violet prairie clover
+violet-purple
+violet ray
+violet-rayed
+violet-red
+violet-ringed
+violet root
+violet root rot
+violet-scented
+violet shell
+violet-shrouded
+violet-stoled
+violet-striped
+violet-sweet
+violet-tailed
+violet-throated
+violet tip
+violet water
+violet wood
+violet wood sorrel
+violin bow
+violin case
+violin clef
+violin diapason
+violino piccolo
+violin piano
+violin-shaped
+violin string
+violoncello piccolo
+viper-bit
+viper broth
+viper-curled
+viper gourd
+viper grass
+viper-haunted
+viper-headed
+viper lozenge
+viper-mouthed
+viper-nourished
+viper wine
+virgin birth
+virgin-born
+virgin bower
+virgin dip
+virgin-eyed
+virgin forest
+virgin honey
+Virginia beard grass
+Virginia bluebell
+Virginia broomrape
+Virginia cedar
+virgin knot
+virgin-minded
+virgin moth
+virgin parchment
+virgin rosin
+virgin scammony
+virgin soil
+virgin spawn
+virgin tree
+virgin-vested
+virgin widow
+virgin wool
+viridine green
+viridine yellow
+virola tallow
+virtue-armed
+virtue-binding
+virtue-loving
+virtue-tempting
+virtue-wise
+virus disease
+vis-a-vis
+vis-a-visness
+viscera itch
+vise cap
+vise chuck
+vise coupling
+visibility curve
+vis inertiae
+vision-directed
+vision-filled
+vision-haunted
+vision-seeing
+vision-struck
+visiting book
+visiting card
+visiting day
+visiting list
+visiting nurse
+visiting patrol
+visiting ticket
+visitor-general
+vitamin-free
+vitello-intestinal
+vitreous body
+vitreous china
+vitreous copper
+vitreous electricity
+vitreous fusion
+vitreous humor
+vitreous selenium
+vitreous silver
+vitreous sponge
+vitreous table
+vitrified fort
+vitriolated tartar
+vitriol chamber
+vitriolized bone
+vitriol stone
+vitro-clarain
+vitro-di-trina
+Vitruvian scroll
+vitular apoplexy
+viva-voce
+viverrine cat
+viverrine otter
+vizard-faced
+vizard-hid
+vizard maker
+vizard making
+vizard mask
+vizard-wearing
+V-necked
+voa vanga
+vocabulary entry
+vocabulary test
+vocal band
+vocal chink
+vocal cord
+vocal fold
+vocal fremitus
+vocal lip
+vocal process
+vocal resonance
+vocal sac
+vocal score
+vocational advisor
+vocational council
+vocational counselor
+vocational director
+voice box
+voiced breath
+voice glide
+voice glottis
+voice key
+voice leading
+voiceless glide
+voice part
+voice placing
+voice stop
+voice tube
+void end
+void space
+voix celeste
+volant piece
+volar accessory ligament
+volar carpal ligament
+volatile alkali
+volatile liniment
+volatile oil
+volatile salt
+volcanic ash
+volcanic bomb
+volcanic cloud
+volcanic cone
+volcanic dust
+volcano fish
+Volga-baltaic
+Volhynia fever
+volitional tremor
+volley fire
+Volta effect
+voltage amplification
+voltage changer
+voltage coil
+voltage divider
+voltage gradient
+voltage ratio
+voltage regulator
+voltage relay
+voltage transformer
+voltaic battery
+voltaic cell
+voltaic circuit
+voltaic couple
+voltaic current
+voltaic electricity
+voltaic pile
+voltameter law
+volt-ampere
+volt box
+volt-coulomb
+volte-face
+volt-second
+voluble-tongued
+volume color
+volume density
+volume displacement
+volume integral
+volume resistance
+volume table
+volumetric analysis
+volumetric flask
+volumetric solution
+volumetric strain
+voluntary affidavit
+voluntary association
+voluntary bankruptcy
+voluntary conveyance
+voluntary escape
+voluntary improvement
+voluntary jurisdiction
+voluntary manslaughter
+voluntary muscle
+voluntary oath
+voluntary school
+voluntary waste
+volunteer militia
+volunteer navy
+volute centrifugal pump
+volute compass
+volute spring
+volutin granule
+vomerine cartilage
+vomic nut
+vomiting center
+vomiting gas
+vomit nut
+vortex atom
+vortex filament
+vortex fringe
+vortex line
+vortex plate
+vortex ring
+vortex sheet
+vortex theory
+vortex tube
+vortex wheel
+vortical motion
+vote-bringing
+vote-buying
+vote-casting
+vote-catching
+vote checking
+vote counter
+voting machine
+voting trust
+votive medal
+votive offering
+votive office
+voucher check
+voucher register
+vouchers payable
+voucher system
+voussoir-shaped
+vow-bound
+vow-breaking
+vowel flame
+vowel gradation
+vowel harmony
+vowel mutation
+vowel point
+vowel system
+vow-keeping
+vow-pledged
+voyage policy
+V point
+vrai reseau
+V scraper
+V section
+V-shaped
+V-shaped comb
+V thread
+V tool
+V-type engine
+Vuelta tobacco
+vulcanite grinding wheel
+vulcanite pavement
+Vulcanized fiber
+vulgar establishment
+vulgar fraction
+vulgar purgation
+vulgar substitution
+vulpine opossum
+vulture-beaked
+vulture-gnawn
+vulture hock
+vulture-hocked
+vulture raven
+vulture-rent
+vulture-torn
+vulture-tortured
+vulture-winged
+vulturine eagle
+vulturine guinea fowl
+vulturine sea eagle
+V vat
+V weld
+V winding
+waberan-leaf
+wabert-leaf
+wad hook
+wading bird
+wafer ash
+wafer bread
+wafer cake
+wafer capsule
+wafer cutter
+wafer iron
+wafer paper
+wafer-sealed
+wafer sheet
+wafer stamp
+wafer tong
+wafer-torn
+waffle ingot
+waffle iron
+wage board
+wage capital
+wage earner
+wage earning
+wage fixing
+wage fund
+wage-fund theory
+wage labor
+wage level
+wage paying
+wage rate
+wagering contract
+wager policy
+wage scale
+wages fund
+wage slave
+wage slavery
+wages-man
+wage system
+waging board
+wagon bed
+wagon boiler
+wagon box
+wagon breast
+wagon ceiling
+wagon filler
+wagon greaser
+wagon gun
+wagon hammer
+wagon-headed
+wagon lock
+wagon master
+wagon road
+wagon roof
+wagon-roofed
+wagon seat
+wagon-shaped
+wagon shed
+wagon shoe
+wagon table
+wagon tent
+wagon tongue
+wagon top
+wagon track
+wagon trail
+wagon train
+wagon tree
+wagon vault
+wagon-vaulted
+wagon wheel
+wagon yard
+wagtail flycatcher
+wag-tongue
+Waha lake trout
+waika chewstick
+wainscot chair
+wainscot-faced
+wainscot-joined
+wainscot oak
+wainscot-paneled
+waist anchor
+waist belt
+waist board
+waist boat
+waist boater
+waist-deep
+waist-high
+waist-pressing
+waist strap
+waist tree
+wait-a-bit
+wait-awhile
+waiter-on
+wait fee
+waiting man
+waiting room
+wait service
+wake current
+wake dirge
+Wake knot
+wake-robin
+wake-up
+Walden inversion
+Waldorf salad
+wale knot
+wale shore
+walk-around
+walk clerk
+walker-on
+walkie-talkie
+walking beam
+walking boat
+walking crane
+walking engine
+walking fern
+walking fish
+walking gentleman
+walking leaf
+walking line
+walking mort
+walking-out
+walking papers
+walking pipe
+walking scow
+walking staff
+walking stick
+walking-sticked
+walking-stick palm
+walking straw
+walking sword
+walking toad
+walking twig
+walking tyrant
+walking wheel
+walk-on
+walk-up
+wallaby acacia
+wallaby bush
+wallaby grass
+wallaby-proof
+wall anchor
+wall arcade
+wall barley
+wall bearing
+wall bed
+wall bee
+wall-bound
+wall box
+wall bracket
+wall bugloss
+wall cabbage
+wall cabinet
+wall card
+wall-cheeked
+wall clamp
+wall-climbing
+wall crane
+wall creeper
+wall cress
+wall-defended
+wall-drilling
+walled-in
+walled plain
+walled-up
+wall-encircled
+wall engine
+wall-fed
+wall fern
+wall-fight
+wallflower brown
+wall frame
+wall fruit
+wall garden
+wall gecko
+wall germander
+wall gillyflower
+wall-girt
+wall grass
+wall green
+wall grenade
+wall hanging
+wall hawkweed
+wall hold
+wall hook
+walling crib
+walling-in
+walling wax
+wall-inhabiting
+wall link
+wall-loving
+wall painting
+wall penny grass
+wall pennywort
+wall pie
+wall-piercing
+wall-plat
+wall rocket
+wall rue
+wall rue spleenwort
+wall saltpeter
+wall-scaling
+wall-shaking
+wall-sided
+wall speedwell
+wall spleenwort
+Wall street
+Wall street loan
+wall tower
+wall wasp
+walnut blight
+walnut borer
+walnut brown
+walnut case-bearer
+walnut caterpillar
+walnut curculio
+walnut family
+walnut-finished
+walnut-framed
+walnut-inlaid
+walnut juice
+walnut moth
+walnut oil
+walnut-paneled
+walnut scale
+walnut shell
+walnut spanworm
+walnut sphinx
+walnut-stained
+walnut tree
+walnut-trimmed
+walnut weevil
+walnut worm
+walrus bird
+waltzing mouse
+waltz measure
+waltz song
+wamble-cropped
+wampum belt
+wampum snake
+wan-cheeked
+wan-colored
+wand bearer
+wand-bearing
+wandering albatross
+wandering ant
+wandering cell
+wandering dervish
+wandering dune
+wandering star
+wandering tattler
+wander termite
+wand-shaped
+wand shoot
+wand shooting
+wand shot
+wand-waving
+wane cloud
+want ad
+wantage rod
+wanton-cruel
+wanton-eyed
+wanton-mad
+wanton-sick
+wanton-tongued
+wanton-winged
+wan-worn
+Wa-palaung
+wapper-eyed
+wapper-jawed
+war-appareled
+war baby
+war bag
+war bird
+war-blasted
+warble fly
+warbler green
+warbling vireo
+war bonnet
+war book
+war boom
+war boomerang
+war bow
+war-breathing
+war-breeding
+war bride
+war-broken
+war cabinet
+war cart
+war chest
+war cloud
+war club
+War college
+war cross
+war cry
+war dance
+war debt
+War democrat
+warden court
+war-denouncing
+warden pie
+War department
+ward heeler
+ward hill
+war-dight
+war-disabled
+wardmote court
+wardmote quest
+war dog
+war-dreading
+wardrobe bed
+wardrobe case
+wardrobe dealer
+wardrobe trunk
+war drum
+ward-walk
+war eagle
+ware cleaner
+ware goose
+ware grinder
+warehouse bond
+warehouse boy
+warehouse clerk
+warehouse foreman
+warehouse receipt
+warehouse sorter
+ware sorter
+war-fain
+war-famed
+war flame
+war footing
+war game
+war gas
+war-god
+war-goddess
+war guilt
+war-hawk
+war head
+war horse
+War industries board
+war lord
+war machine
+warm-backed
+warm-blooded
+warm-breathed
+warm-clad
+warm-colored
+warm-complexioned
+warm-contested
+warmed-over
+warmed-up
+warm-glowing
+warm-headed
+warming house
+warming pad
+warming pan
+warm-kept
+warm-lying
+warm-reeking
+warm-sheltered
+warm spot
+warm-tempered
+warm-tinted
+warm-working
+warm-wrapped
+war neurosis
+warning lever
+War office
+warp beam
+warp frame
+warping bank
+warping chock
+warping hook
+warp-knit
+warp-knitted
+warp knitting
+warp lace
+warp land
+warple way
+warp net
+warp-net frame
+warp-proof
+war proof
+warp sizer
+warp stitch
+warp tier
+warrant officer
+warrant trying
+warranty deed
+war rebel
+Warren girder
+Warren hoe
+warrior ant
+warrior bush
+war risk
+war risk insurance
+war-savings certificate
+war-savings stamp
+war scare
+war school
+war scythe
+war service chevron
+war song
+war spirit
+war stamp
+war-tax stamp
+wart cress
+wart disease
+warted gourd
+warted grass
+warted spurge
+wart grass
+wart hog
+war traitor
+wart snake
+wart spurge
+warty egg
+warty-faced honey eater
+war vessel
+war-weary
+war whoop
+wary-eyed
+wary-footed
+wary-looking
+war zone
+wash ball
+wash barrel
+wash bear
+wash boiler
+wash boring
+wash-colored
+washed metal
+washed-out
+washed sale
+washed-up
+wash gilding
+wash goods
+washing bear
+washing bottle
+washing crystal
+washing machine
+washing maid
+Washington asparagus
+Washington cedar
+Washington cent
+Washington fir
+Washington hand press
+Washington lily
+Washington palm
+Washington pie
+Washington thorn
+wash leather
+wash mill
+wash miller
+wash-mouth
+Washoe process
+wash oil
+washout process
+wash pitcher
+washrag gourd
+wash strake
+wash-up
+wash water
+wasp ant
+wasp-barbed
+wasp bee
+wasp beetle
+wasp fly
+wasp-minded
+wasp nest
+wasp spider
+wasp-stung
+wasp waist
+wasp-waisted
+wasp-waistedness
+wassail bowl
+wassail cup
+waste baling
+waste bank
+waste bin
+waste book
+waste box
+waste boy
+waste breaker
+waste bundler
+waste-cleaning
+waste-dwelling
+waste heat
+waste-heat boiler
+waste-heat drier
+waste leaf
+waste mold
+waste nut
+waste pallet
+wastepaper basket
+waste-wax process
+wasting asset
+wasting palsy
+watch adjuster
+Watch-and-warder
+watch bell
+watch bracelet
+watch cleaner
+watch crystal
+watchet-colored
+watch fob
+watch glass
+watching brief
+watching rate
+watchman beetle
+watch repairer
+watch screw thread
+watch spring
+water adder
+water agrimony
+water aloe
+water avens
+water awlwort
+water bag
+water-bearing
+water-beaten
+water bewitched
+water-bind
+water boatman
+water bog rush
+water-borne
+water-bound
+water breather
+water-breathing
+water-broken
+water carrier
+water closet
+water color
+water-colored
+water-colorist
+water-commanding
+water-consolidated
+water-cool
+water-cooled
+water cooler
+water-cressy
+water crowfoot
+water-drinking
+water dropwort
+water farmer
+water-fennel oil
+water fern
+water-finished
+water-flowing
+water foxtail
+water-free
+water frontage
+water-fronter
+water furrow
+water-galled
+water gap
+water-gas tar
+water gate
+water-gild
+water gilder
+water gilding
+water-girt
+water-glass painting
+water grass
+water-gray
+water-gruel
+water-gruellish
+water hair grass
+water-inch
+watering-pot shell
+water-jacket
+water-jacketing
+water-jelly
+water-jet
+water kelpie
+water-laid
+water-lily family
+water-lily tree
+water-line
+water-lined
+water-line model
+water meadow grass
+water-milfoil family
+water moccasin
+water-nut family
+water oat
+water-packed
+water-plantain family
+water poa
+water-power engineering
+water pump
+water pumper
+water-pumping
+water-purpie
+water-quenched
+water reed
+water-ret
+water rice
+water-rolled
+water-rot
+water-seal
+water-sealed
+water-season
+water set
+water-shield family
+water-shot
+water-sick
+water-slaked lime
+water slide
+water-smoke
+water snake
+water-soak
+water-soluble
+water-standing
+water-starwort family
+water-struck
+water-supply
+water-supply engineer
+water-supply engineering
+water-sweet
+water tare grass
+water telescope
+water tower
+watertube boiler
+water-vascular
+water-washed
+water-waved
+water-white
+water works
+watery-colored
+watery-eyed
+watery-headed
+Watteau back
+watt-hour
+wattle bark
+wattle crow
+wattled bee eater
+wattled crow
+wattled honey eater
+wattled lapwing
+wattled stare
+watt-second
+wave-cut
+wave-encircled
+wave form
+wave-form theory
+wave-green
+wave guide
+wave-haired
+wave-hollowed
+wave-lashed
+wave-laved
+wave-line
+wave-making
+wave-moist
+wave surface
+wave system
+wave telegraphy
+wave telephony
+wave theory
+wave top
+wave train
+wave trap
+wave wheel
+wave winding
+wavy-coated
+wavy-edged
+wavy-grained
+wavy-haired
+wavy-leaved
+wavy-toothed
+waw consecutive
+waw conversive
+waw-waw
+wax bean
+wax-bearing
+wax-billed
+wax bleacher
+wax brown
+wax candle
+wax cloth
+wax cluster
+wax-coated
+wax-colored
+wax-composed
+wax-covered
+wax end
+wax-ended
+wax-erected
+wax-extracting
+wax-featured
+wax-finished
+wax-forming
+wax gland
+wax-headed
+wax-jointed
+wax-lighted
+wax paper
+wax-polished
+wax-producing
+wax-red
+wax-rubbed
+wax-secreting
+wax-stitched
+wax-tipped
+wax-topped
+wax-white
+wax worm
+wax-yellow
+way baggage
+way beam
+way-beguiling
+way bennet
+way bent
+way car
+way chain
+way-clearing
+way-down
+way enough
+wayfaring tree
+way freight
+way-god
+waygoing crop
+way-haunting
+wayleave rent
+way-off
+way out
+way passenger
+way point
+way shaft
+wayside cross
+way station
+way thistle
+way ticket
+way-up
+way-weary
+way-wise
+weak-ankled
+weak-armed
+weak-backed
+weak-bodied
+weak-built
+weak-chested
+weak-chined
+weak-chinned
+weak-eyed
+weak-fibered
+weak-headed
+weak-headedly
+weak-headedness
+weak-hinged
+weak-jawed
+weak-kneed
+weak-kneedly
+weak-kneedness
+weak-legged
+weak-limbed
+weak-lunged
+weak-minded
+weak-mindedly
+weak-mindedness
+weak-nerved
+weak-pated
+weak-spirited
+weak-spiritedly
+weak-spiritedness
+weak-stemmed
+weak-stomached
+weak-toned
+weak-winged
+we-all
+wealth-encumbered
+wealth-fraught
+wealth-getting
+wealth-yielding
+Wealthy spot
+weaning brash
+wear back
+wearing apparel
+wearing course
+wear iron
+wear limit gauge
+wear-out
+weary-foot
+weary-footed
+weary-laden
+weary-looking
+weary-winged
+weary-worn
+weasel cat
+weasel coot
+weasel-faced
+weasel lemur
+weasel spider
+weasel word
+weasel-worded
+weather anchor
+weather-battered
+weather-beaten
+weather-bitt
+weather-bitten
+weather-bound
+weather bow
+weather box
+weather breeder
+weather-breeding
+weather cast
+weather caster
+weather chart
+weather cloth
+weather-driven
+weather-eaten
+weathered oak
+weather eye
+weather-fagged
+weather-fast
+weather-fend
+weather-free
+weather gall
+weather gauge
+weather-going tide
+weather-guard
+weather-hardened
+weather helm
+weather side
+weather-slated
+weather slating
+weather stain
+weather station
+weather-stayed
+weather strip
+weather-tanned
+weather tide
+weather vane
+weather wisdom
+weather-wise
+weaver finch
+weaver shell
+webbing moth
+Weber formation
+Weberian apparatus
+Weberian ossicle
+weber turn
+web-fingered
+web-footed
+web-footedness
+web frame
+web-glazed
+web glazing
+web lead
+web-perfecting
+web perfecting press
+web printing
+web saw
+web stiffener
+web-toed
+web wheel
+web-winged
+web-worked
+Weddell seal
+wedding cake
+wedding chest
+wedding day
+wedding dinner
+wedding flower
+wedding gown
+wedding guest
+wedding journey
+wedding march
+wedding ring
+wedding sheet
+wedge-bearing
+wedge-billed
+wedge bone
+wedge character
+wedged-tailed
+wedge-form
+wedge-formed
+Wedge furnace
+wedge gauge
+wedge gearing
+wedge-shaped
+wedge-tailed
+wedge-tailed dove
+wedge-tailed eagle
+wedge-tailed gull
+wedge-tailed shearwater
+wedging crib
+Wedgwood blue
+Wedgwood green
+Wedgwood ware
+weed-choked
+weed-cutting
+weed-entwined
+weeder clips
+weeder hoe
+weed-fringed
+weed-grown
+weed-hidden
+weed-hung
+weed killer
+weed-killing
+weed-spoiled
+weed tree
+weedy-bearded
+weedy-haired
+weedy-looking
+wee folk
+weekend bag
+week-long
+week-old
+week work
+weep hole
+weeping ash
+weeping beech
+weeping eczema
+weeping golden bell
+weeping honey locust
+weeping lantana
+weeping myall
+weeping pea tree
+weeping-ripe
+weeping willow
+weese-allan
+weet-weet
+weft fork
+weft-knit
+weft knitting
+weft sorter
+we-group
+weighbar shaft
+weigh beam
+weigh-out
+weight-bearing
+weight-carrying
+weight cloth
+weight-lifting
+weight-measuring
+weight playing
+weight-raising
+weight-resisting
+weight voltameter
+Weil-felix reaction
+weir basin
+weir box
+weird-fixed
+weird-looking
+weird-set
+weiss beer
+welch plug
+welding blowpipe
+welding powder
+welding rod
+welding torch
+weld metal
+welfare state
+welfare work
+welfare worker
+welkin eye
+welkin-high
+well-able
+well-abolished
+well-abounding
+well-absorbed
+well-abused
+well-accented
+well-accentuated
+well-accepted
+well-accommodated
+well-accompanied
+well-accomplished
+well-accorded
+well-according
+well-accoutered
+well-accredited
+well-accumulated
+well-accustomed
+well-achieved
+well-acknowledged
+well-acquainted
+well-acquired
+well-acted
+well-adapted
+well-addressed
+well-adjusted
+well-administered
+well-admitted
+well-adopted
+well-adorned
+well-advanced
+well-adventured
+well-advertized
+well-advised
+well-advocated
+well-affected
+well-affectioned
+well-affirmed
+well-afforded
+well-agreed
+well-agreeing
+well-aimed
+well-alleged
+well-allied
+well-allotted
+well-allowed
+well-alphabetized
+well-altered
+well-amended
+well-amused
+well-analyzed
+well-ancestored
+well-ankled
+well-annealed
+well-announced
+well-anointed
+well-answered
+well-anticipated
+well-appareled
+well-appearing
+well-applauded
+well-applied
+well-appointed
+well-appointedly
+well-appointedness
+well-appreciated
+well-approached
+well-appropriated
+well-approved
+well-arbitrated
+well-arched
+well-argued
+well-armed
+well-armored
+well-aroused
+well-arranged
+well-arrayed
+well-ascertained
+well-assembled
+well-asserted
+well-assessed
+well-assigned
+well-assimilated
+well-assisted
+well-associated
+well-assorted
+well-assumed
+well-assured
+well-attached
+well-attained
+well-attempered
+well-attempted
+well-attended
+well-attending
+well-attested
+well-attired
+well-attributed
+well-audited
+well-authenticated
+well-authorized
+well-averaged
+well-avoided
+well-awakened
+well-awarded
+well-aware
+well-backed
+well-baked
+well-balanced
+well-baled
+well-bandaged
+well-banked
+well-barbered
+well-bargained
+well-based
+well-base rim
+well-bathed
+well-batted
+well-bearing
+well-beaten
+well-becoming
+well-bedded
+well-befitting
+well-begotten
+well-begun
+well-behated
+well-behaved
+well-being
+well-beknown
+well-believed
+well-believing
+well-beloved
+well-beneficed
+well-bent
+well-beseemingly
+well-bespoken
+well-bested
+well-bestowed
+well-blacked
+well-blended
+well-blent
+well-blessed
+well-blooded
+well-blown
+well boat
+well-bodied
+well-boding
+well-boiled
+well-bonded
+well-boned
+well-booted
+well-bored
+well borer
+well-boring
+Well-born
+well-borne
+well-bottled
+well-bottomed
+well-bought
+well-bound
+well-bowled
+well-boxed
+well-braced
+well-braided
+well-branched
+well-branded
+well-brawned
+well-breasted
+well-breathed
+well-bred
+well-bredness
+well-brewed
+well-bricked
+well-bridged
+well-broken
+well-brooked
+well-browed
+well-browned
+well-brushed
+well-built
+well-buried
+well-burnished
+well-burnt
+well-bushed
+well-busied
+well-buttoned
+well-caked
+well-calculated
+well-calculating
+well-calked
+well-called
+well-calved
+well-caned
+well-canvassed
+well-carpeted
+well-carved
+well-cased
+well casing
+well-cast
+well-caught
+well-cautioned
+well-celebrated
+well-cemented
+well-censured
+well-centered
+well-certified
+well-chained
+well-changed
+well-chaperoned
+well-characterized
+well-charged
+well-charted
+well-chauffeured
+well-checked
+well-cheered
+well-cherished
+well-chested
+well-chilled
+well-choosing
+well-chosen
+well-churned
+well-circularized
+well-circulated
+well-circumstanced
+well-civilized
+well-clad
+well-classed
+well-classified
+well-cleansed
+well-cleared
+well-climaxed
+well-cloaked
+well-closed
+well-closing
+well-clothed
+well-coached
+well-coined
+well-collected
+well-colored
+well-combined
+well-commanded
+well-commenced
+well-commended
+well-compacted
+well-compared
+well-compassed
+well-compiled
+well-completed
+well-complexioned
+well-composed
+well-comprehended
+well-concealed
+well-conceived
+well-concentrated
+well-concerted
+well-concluded
+well-concocted
+well-concorded
+well-condensed
+well-conducted
+well-conferred
+well-confessed
+well-confided
+well-confirmed
+well-connected
+well-conned
+well-consenting
+well-conserved
+well-considered
+well-consoled
+well-consorted
+well-constituted
+well-constricted
+well-constructed
+well-construed
+well-content
+well-contented
+well-contested
+well-continued
+well-contracted
+well-contrasted
+well-contrived
+well-controlled
+well-conveyed
+well-convinced
+well-cooked
+well-cooled
+well-copied
+well-corked
+well-corrected
+well-corseted
+well-costumed
+well-couched
+well-counseled
+well-counted
+well-counterfeited
+well-coupled
+well-courted
+well-covered
+well-cowed
+well-crammed
+well-crated
+well-credited
+well cress
+well-crested
+well-criticized
+well-crocheted
+well-cropped
+well-crossed
+well-crushed
+well-cultivated
+well-cultured
+well-curbed
+well-cured
+well-curled
+well-curried
+well-curved
+well-cushioned
+well-cut
+well-cutting
+well-damped
+well-danced
+well-darned
+well-dealing
+well-dealt
+well-debated
+well-decided
+well-deck
+well-decked
+well decker
+well-declaimed
+well-decorated
+well-decreed
+well-deeded
+well-deemed
+well-defended
+well-deferred
+well-defined
+well-delayed
+well-deliberated
+well-delivered
+well-demeaned
+well-demonstrated
+well-denied
+well-derived
+well-descended
+well-described
+well-deserved
+well-deservedly
+well-deservingness
+well-designated
+well-designed
+well-designing
+well-desired
+well-destroyed
+well-developed
+well-devised
+well-diagnosed
+well-digested
+well-directed
+well-disbursed
+well-disciplined
+well-discounted
+well-discussed
+well-disguised
+well-dish
+well-displayed
+well-disposed
+well-dispositioned
+well-disputed
+well-dissected
+well-dissembled
+well-distanced
+well-distinguished
+well-distributed
+well-divided
+well-divined
+well-documented
+well-doer
+well-doing
+well-done
+well-dosed
+well-drafted
+well-drain
+well-drained
+well-drawn
+well-dressed
+well-dried
+well-drilled
+well driller
+well drilling
+well-driven
+well-drugged
+well-dunged
+well-dusted
+well-dying
+well-eared
+well-earned
+well-earthed
+well-eased
+well-economized
+well-edited
+well-educated
+well-effected
+well-elaborated
+well-elevated
+well-eliminated
+well-embodied
+well-emphasized
+well-employed
+well-enacted
+well-enchanting
+well-encountered
+well-encouraged
+well-ended
+well-endorsed
+well-endowed
+well-enforced
+well-engineered
+well-engraved
+well-entered
+well-entertained
+well-entitled
+well-enumerated
+well-enveloped
+well-equipped
+well-erected
+well-escorted
+well-essayed
+well-established
+well-esteemed
+well-estimated
+well-evidenced
+well-examined
+well-executed
+well-exemplified
+well-exhibited
+well-expended
+well-experienced
+well-explained
+well-exploded
+well-exposed
+well-expressed
+well-fabricated
+well-faced
+well-famed
+well-fancied
+well-farmed
+well-fashioned
+well-fastened
+well-fatted
+well-favored
+well-favoredly
+well-favoredness
+well-feasted
+well-feathered
+well-featured
+well-fed
+well-feed
+well-feigned
+well-felt
+well-fenced
+well-fended
+well-fermented
+well fern
+well-fielded
+well-filed
+well-filled
+well-filmed
+well-financed
+well-fined
+well-finished
+well-fitted
+well-fitting
+well-fixed
+well-flanked
+well-flattered
+well-flavored
+well-fledged
+well-fleeced
+well-fleshed
+well-flooded
+well-floored
+well-floured
+well-flowered
+well-flowering
+well-folded
+well-followed
+well-fooled
+well-foreseen
+well-forewarned
+well-forewarning
+well-forged
+well-forgotten
+well-formed
+well-formulated
+well-fortified
+well-fought
+well-found
+well-founded
+well-foundedly
+well-foundedness
+well-framed
+well-fraught
+well-freckled
+well-freighted
+well-frequented
+well-fried
+well-friended
+well-frightened
+well-fruited
+well-fueled
+well-functioning
+well-furnished
+well-furnishedness
+well-furred
+well-gained
+well-gaited
+well-gardened
+well-garmented
+well-garnished
+well-gathered
+well-geared
+well-generaled
+well-gifted
+well-girt
+well-glossed
+well-gloved
+well-glued
+well-going
+well-gotten
+well-governed
+well-gowned
+well-graced
+well-graded
+well-grained
+well-grassed
+well-gratified
+well-graveled
+well-graven
+well-greased
+well-greaved
+well-greeted
+well-groomed
+well-groomedness
+well-grounded
+well-grouped
+well-grown
+well-guaranteed
+well-guarded
+well-guessed
+well-guided
+well-guiding
+well-guyed
+well-hained
+well-haired
+well-hallowed
+well-hammered
+well-handicapped
+well-handled
+well-hardened
+well-harnessed
+well-hatched
+well-havened
+well-hazarded
+well-headed
+well-heard
+well-hearted
+well-heated
+well-hedged
+well-heeled
+well-helped
+well-hemmed
+well-hewn
+well-hidden
+well-hinged
+well-hit
+well-hoarded
+well-holed
+well-hoofed
+well-hooped
+well-horned
+well-horsed
+well house
+well-housed
+well-hued
+well-humbled
+well-humbugged
+well-humored
+well-hung
+well-husbanded
+well-identified
+well-ignored
+well-illustrated
+well-imagined
+well-imitated
+well-implied
+well-imposed
+well-impressed
+well-improved
+well-inaugurated
+well-inclined
+well-included
+well-incurred
+well-indexed
+well-indicated
+well-inferred
+well-informed
+well-inhabited
+well-initiated
+well-inscribed
+well-inspected
+well-installed
+well-instanced
+well-instituted
+well-instructed
+well-insured
+well-intended
+well-intentioned
+well-interested
+well-interpreted
+well-interviewed
+well-introduced
+well-invented
+well-invested
+well-investigated
+well-ironed
+well-irrigated
+well-itemized
+well-joined
+well-jointed
+well-judged
+well-judging
+well-judgingly
+well-justified
+well-kenned
+well-kent
+well-kept
+well-kindled
+well-knit
+well-knitted
+well-knotted
+well-knowing
+well-knowledged
+well-known
+well-labeled
+well-labored
+well-laboring
+well-laced
+well-laden
+well-laid
+well-languaged
+well-larded
+well-launched
+well-laundered
+well-leaded
+well-learned
+well-leased
+well-leaved
+well-led
+well-left
+well-lent
+well-less
+well-lettered
+well-leveled
+well-levied
+well-lighted
+well-like
+well-liked
+well-liking
+well-limbed
+well-limited
+well-limned
+well-lined
+well-linked
+well-lit
+well-liveried
+well-living
+well-loaded
+well-located
+well-locked
+well-lodged
+well-lofted
+well log
+well-looked
+well-looking
+well-lost
+well-loved
+well-lunged
+well-made
+well-maintained
+well-managed
+well-manned
+well-mannered
+well-manufactured
+well-manured
+well-mapped
+well-marked
+well-marketed
+well-married
+well-marshalled
+well-masked
+well-mastered
+well-matched
+well-mated
+well-matured
+well-meaner
+well-meaning
+well-meaningly
+well-meaningness
+well-meant
+well-measured
+well-membered
+well-mended
+well-merited
+well-met
+well-metalled
+well-methodized
+well-mettled
+well-milked
+well-mingled
+well-minted
+well-mixed
+well-modeled
+well-modified
+well-moduled
+well-moneyed
+well-moralized
+well-motivated
+well-motived
+well-moulded
+well-mounted
+well-mouthed
+well-named
+well-narrated
+well-natured
+well-naturedness
+well-necked
+well-negotiated
+well-neighbored
+well-nicknamed
+well-nigh
+well-nosed
+well-noted
+well-nourished
+well-nursed
+well-nurtured
+well-oared
+well-obeyed
+well-observed
+well-occupied
+well-officered
+well-oiled
+well-omened
+well-omitted
+well-operated
+well-opinioned
+well-ordered
+well-organized
+well-oriented
+well-ornamented
+well-ossified
+well-outlined
+well-overseen
+well-packed
+well-paid
+well-painted
+well-paired
+well-paneled
+well-paragraphed
+well-parceled
+well-parked
+well-past
+well-patched
+well-patronized
+well-paved
+well-paying
+well-penned
+well-pensioned
+well-peopled
+well-perceived
+well-perfected
+well-performed
+well-persuaded
+well-philosophized
+well-photographed
+well-picked
+well-pictured
+well-piloted
+well-pitched
+well-placed
+well-planned
+well-planted
+well-played
+well-plead
+well-pleased
+well-pleasedly
+well-pleasedness
+well-pleasing
+well-pleasingness
+well-plenished
+well-plotted
+well-plowed
+well-plucked
+well-plumaged
+well-plumed
+well-pointed
+well-policed
+well-policied
+well-polished
+well-pondered
+well-posed
+well-positioned
+well-possessed
+well-posted
+well-postponed
+well-practiced
+well-predicted
+well-prepared
+well-preserved
+well-pressed
+well-pretended
+well-priced
+well-primed
+well-principled
+well-printed
+well-prized
+well-professed
+well-prolonged
+well-pronounced
+well-prophesied
+well-proportioned
+well-prosecuted
+well-protected
+well-proved
+well-proven
+well-provendered
+well-provided
+well-published
+well-punished
+well-pursed
+well-pushed
+well-put
+well-puzzled
+well-qualified
+well-qualitied
+well-quartered
+well-quizzed
+well-raised
+well-ranged
+well-rated
+well-read
+well-readied
+well-reared
+well-reasoned
+well-received
+well-recited
+well-reckoned
+well-recognized
+well-recommended
+well-recorded
+well-refereed
+well-refined
+well-reflected
+well-reformed
+well-refreshed
+well-refreshing
+well-regarded
+well-regulated
+well-rehearsed
+well-relished
+well-relishing
+well-remarked
+well-remembered
+well-rendered
+well-rented
+well-repaid
+well-repaired
+well-replaced
+well-replenished
+well-reported
+well-represented
+well-reprinted
+well-reputed
+well-requited
+well-resolved
+well-resounding
+well-respected
+well-rested
+well-restored
+well-revenged
+well-reviewed
+well-revised
+well-rewarded
+well-rhymed
+well-ribbed
+well-ridden
+well rig
+well-rigged
+well-ringed
+well-ripened
+well-risen
+well-risked
+well-roasted
+well-rode
+well-rolled
+well-roofed
+well room
+well-rooted
+well-roped
+well-rotted
+well-rounded
+well-routed
+well-rowed
+well-rubbed
+well-ruled
+well-ruling
+well-run
+well-running
+well-sacrificed
+well-saffroned
+well-sailing
+well-salted
+well-sanctioned
+well-sanded
+well-satisfied
+well-saved
+well-savoring
+well-saying
+well-scared
+well-scattered
+well-scented
+well-scheduled
+well-schemed
+well-schooled
+well-scolded
+well-scored
+well-screened
+well-scrubbed
+well-sealed
+well-searched
+well-seasoned
+well-seated
+well-secured
+well-seeded
+well-seeing
+well-seeming
+well-seen
+well-selected
+well-selling
+well-sensed
+well-separated
+well-served
+well-set
+well-settled
+well-set-up
+well-sewn
+well-shaded
+well-shading
+well-shafted
+well-shaped
+well-shapen
+well-sharpened
+well-shaven
+well-sheltered
+well-shod
+well-shot
+well-showered
+well-shown
+well shrimp
+well-sifted
+well-sighted
+well-sinewed
+well sinker
+well-sinking
+well-situated
+well-sized
+well-sketched
+well-skilled
+well-skinned
+well smack
+well-smelling
+well-smoked
+well-soaked
+well-sold
+well-soled
+well-solved
+well-sorted
+well-sounding
+well-spaced
+well-speaking
+well-sped
+well-spent
+well-spiced
+well-splitting
+well-spoken
+well-sprayed
+well-spread
+well-spun
+well-spurred
+well-squared
+well-stabilized
+well-stacked
+well-staged
+well-stained
+well staircase
+well-stamped
+well-starred
+well-stated
+well-stationed
+well-steered
+well-stitched
+well-stocked
+well-stopped
+well-stored
+well-straightened
+well-strained
+well-strapped
+well-stressed
+well-stretched
+well-striven
+well-stroked
+well-strung
+well-studied
+well-stuffed
+well-styled
+well-subscribed
+well-succeeding
+well-sufficing
+well-sugared
+well-suggested
+well-suited
+well-summarized
+well-sunburned
+well-sung
+well-superintended
+well-supervised
+well-supplemented
+well-supplied
+well-supported
+well-suppressed
+well-sustained
+well sweep
+well-swelled
+well-swollen
+well-systematized
+well-tailored
+well-taken
+well-tamed
+well-tanned
+well-tasted
+well-taught
+well-taxed
+well-tempered
+well-tenanted
+well-tended
+well-terraced
+well-tested
+well-thewed
+well-thought
+well-thrashed
+well-thriven
+well-thrown
+well-thumbed
+well-tied
+well-tilled
+well-timbered
+well-timed
+well-tinted
+well-toasted
+well-told
+well tomb
+well-toned
+well-tongued
+well-toothed
+well-tossed
+well-traced
+well-traded
+well-trained
+well-translated
+well trap
+well-trapped
+well-traveled
+well-treated
+well-tricked
+well-tried
+well-trimmed
+well-trod
+well-trodden
+well-trunked
+well-trussed
+well-trusted
+well-tuned
+well-turned
+well-tutored
+well-twisted
+well-typed
+well-umpired
+well-understood
+well-uniformed
+well-united
+well-urged
+well-utilized
+well-valeted
+well-varied
+well-varnished
+well-veiled
+well-ventilated
+well-ventured
+well-verified
+well vessel
+well-visualized
+well-voiced
+well-vouched
+well-walled
+well-wared
+well-warmed
+well-warned
+well-warranted
+well-washed
+well-watched
+well-watered
+well-weaponed
+well-wearing
+well-weaved
+well-weaving
+well-wedded
+well-weighed
+well-weighing
+well-whipped
+well-wigged
+well-willer
+well-willing
+well-winded
+well-windowed
+well-winged
+well-winnowed
+well-wired
+well-wish
+well-wisher
+well-wishing
+well-witnessed
+well-witted
+well-won
+well-wooded
+well-wooing
+well-wooled
+well-worded
+well-worked
+well-worked-out
+well-worn
+well worship
+well-woven
+well-wreathed
+well-written
+well-wrought
+well-yoked
+Welsh-begotten
+Welsh-born
+Welsh corgi
+Welsh-english
+Welsh-fashion
+Welsh-looking
+Welsh-made
+Welsh-rooted
+Welsh-speaking
+Welsh-wrought
+welt seam
+Wen chang
+W-engine
+wen-li
+Wenlock formation
+Wen ti
+Wenzel bible
+were-animal
+were-ass
+we-ship
+West-about
+west-by
+west-central
+west coast fir
+west coast hemlock
+West end
+west-ender
+West-ender
+West-endish
+west-endism
+West-endism
+west-endy
+west-faced
+west-facing
+west-going
+West india
+West indiaman
+West indian
+West indian ivy
+West-indian-ivy family
+West india seal
+west-northwest
+west-northwesterly
+Westphal balance
+West point
+West pointer
+west-southwest
+west-southwesterly
+west-turning
+West virginian
+westward-looking
+west wind
+west-winded
+west-windy
+wet-air
+wet-air pump
+wet blanket
+wet-blanketing
+wet-bulb
+wet-bulb thermometer
+wet-cell
+wet-cheeked
+wet-clean
+wet cleaner
+wet cooper
+wet-eyed
+wet-footed
+wet-lipped
+wet-my-lip
+wetness fraction
+wet nurse
+wet-pipe
+wet-pipe system
+wet-plate
+wet-plate process
+wet-process machine
+wet-salt
+wet-season
+wet-shod
+wetter-off
+wet-worked
+we-uns
+whale-backed
+whale barnacle
+whalebone tree
+whale-built
+whale feed
+whale fin
+whale fisher
+whale fisherman
+whale fishery
+whale fishing
+whale food
+whale-headed
+whale-hunting
+whale iron
+whale line
+whale louse
+whale-mouthed
+whale oil
+whale shark
+whale-tailed
+whaling gun
+whaling master
+whaling port
+whaling rocket
+whare-kura
+whare-puni
+whare-wananga
+wharf boat
+wharf dues
+wharf duty
+wharf end
+wharf fee
+wharf fish
+wharf hand
+wharf laborer
+wharf lumper
+wharf monkey
+wharf owner
+wharf rat
+wharf spike
+wharf worker
+what-eer
+what-is-it
+whats-her-name
+whats-his-name
+whats-it
+whats-its-name
+what-you-may-call-it
+wheaf-head
+wheaf take-all
+wheat aphid
+wheat aphis
+wheat beetle
+wheat belt
+wheat berry
+wheat-blossoming
+wheat bug
+wheat bulb fly
+wheat bulb worm
+wheat chafer
+wheat-colored
+wheat cutworm
+wheat duck
+wheatear cockle
+wheat eel
+wheat eelworm
+wheat farmer
+wheat-fed
+wheat field
+wheat fly
+wheat gallfly
+wheat grass
+wheat-growing
+wheat-head army worm
+wheat-hid
+wheat jointworm
+wheat louse
+wheat maggot
+wheat meal
+wheat midge
+wheat mildew
+wheat mite
+wheat mosaic
+wheat moth
+wheat pest
+wheat plant louse
+wheat-producing
+wheat-raising
+wheat-rich
+wheat rosette
+wheat rust
+wheat sawfly
+wheat scab
+wheat seed
+wheatsel bird
+wheat sheaf
+wheat smut
+wheat stem
+wheat-stem maggot
+wheat stem rust
+wheat-stem sawfly
+wheat-straw
+wheat thief
+wheat thrips
+wheat weevil
+wheat weigher
+wheel animal
+wheel animalcule
+wheel back
+wheel-backed
+wheel barometer
+wheel-barrower
+wheel base
+wheel bearer
+wheel-broad
+wheel bug
+wheel case
+wheel chain
+wheel chair
+wheel colter
+wheel control
+wheel cross
+wheel cultivator
+wheel-cut
+wheel-cutting
+wheel excavator
+wheel fitter
+wheel-footed
+wheel-going
+wheel governor
+wheel hoe
+wheel horse
+wheel lathe
+wheel load
+wheel load weigher
+wheel lock
+wheel-made
+wheel map
+wheel-marked
+wheel money
+wheel-mounted
+wheel ore
+wheel organ
+wheel pen
+wheel pit
+wheel plate
+wheel plow
+wheel-resembling
+wheel rod
+wheel rope
+wheel scraper
+wheel-shaped
+wheel-smashed
+wheel-spun
+wheel stitch
+wheel-supported
+wheel tracery
+wheel trap
+wheel tree
+wheel trolley
+wheel-turned
+wheel-turning
+wheel welder
+wheel window
+wheel-worn
+whelk-shaped
+whelk tingle
+when-issued
+whet slate
+whetstone-shaped
+whetstone slate
+whettle-bone
+whew duck
+whey-bearded
+whey bird
+whey-blooded
+whey-brained
+whey butter
+whey-colored
+whey cure
+whey whig
+whidah bird
+whidah finch
+whim gin
+whim-proof
+whin sparrow
+whin-wrack
+whip-bearing
+whipbelly vengeance
+whipcord willow
+whip-corrected
+whip-cracking
+whip crane
+whip crop
+whip-ended
+whip gin
+whip graftage
+whip grass
+whip hand
+whip handle
+whip hoist
+whip horse
+whip line
+whip-marked
+whipper-in
+whippers-in
+whippet tank
+whipping boy
+whipping cream
+whipping girl
+whipping post
+whipping-snapping
+whipping top
+whip purchase
+whip ray
+whip rod
+whip roll
+whip-round
+whip row
+whip scorpion
+whip-shaped
+whip snake
+whip-stick
+whipsy-derry
+whip-tailed
+whiptail shark
+whip thread
+whip-tom-kelly
+whip-tongue
+whip top
+whip-wielding
+whip yarn
+whirl drill
+whirligig beetle
+whirligig mullet
+whirling table
+whirlpool nebula
+whirl-shaped
+whisk broom
+whisker boom
+whisker jumper
+whisk tail
+whisk-tailed
+whisky cherry
+whisky drinker
+whisky-drinking
+whisky-frisky
+whisky-jack
+whisky liver
+whisky poker
+whisky-sodden
+whisky sour
+whisper glide
+whisper glottis
+whispering dome
+whispering gallery
+whispering office
+whispering pectoriloquy
+whispering voice
+whist drive
+whistlebelly vengeance
+whistle duck
+whistle-pig
+whistle punk
+whistle stop
+whistling jar
+white-acre
+white-alder
+white-alder family
+white-ankled
+white-ant
+white-anted
+white-armed
+white-ash
+white ash herb
+white-backed
+white-barked
+whitebark pine
+white-barred
+white-beaked
+white-bearded
+white-bellied
+white-berried
+white-billed
+white-blood
+white-blooded
+white-blue
+white-bodied
+white-bone
+white-boned
+white book
+white-bordered
+white-bosomed
+white-breasted
+white-brick
+white-browed
+white-brown
+white-burning
+white-capped
+white-cell
+white-cell blood
+white-cheeked
+white-chinned
+white-churned
+white-clad
+white-clothed
+white-coated
+white-collar
+white-colored
+white cooper
+white-cotton
+white-cotton tree
+white-crested
+white-cross
+white-cross diatom
+white-crossed
+white-crowned
+white-domed
+white-dotted
+white-dough
+white-ear
+white-eared
+white-eye
+white-eyed
+white-eyelid
+white-eyelid monkey
+white-faced
+white-favored
+white feather
+white-feathered
+white-featherism
+white-felled
+white-flanneled
+white-flecked
+white-fleshed
+white-flower
+white-flowered
+white-flowing
+white-foot
+white-footed
+white-frilled
+white-fringed
+white-frocked
+white-fronted
+white-fruited
+white-girdled
+white-glittering
+white-gloved
+white-gray
+white-green
+white-haired
+white-hairy
+white-hard
+white-hatted
+white-headed
+white-heart
+white-heart hickory
+white heat
+white-hoofed
+white-hooved
+white-horned
+white-horsed
+white-hot
+white-jacketed
+white-laced
+white-leaf
+white-leaved
+white-legged
+white-lie
+white-lined
+white-linen
+white-lipped
+white-list
+white-listed
+white-livered
+white-liveredly
+white-liveredness
+white-loaf
+white-looking
+white-maned
+white-mantled
+white-marked
+white-mooned
+white-mottled
+white-mouthed
+white-mustard
+white-mustard oil
+white-necked
+whitening stone
+white-nosed
+white-painted
+white-paneled
+white-petaled
+white-pickle
+white-pickle mosaic
+white-pine
+white-pine blister rust
+white-pine rust
+white-pine weevil
+white-piped
+white-plumed
+white-rag
+white-railed
+white-rayed
+white-red
+white-ribbed
+white-ribboned
+white-ribboner
+white-rinded
+white-robed
+white-roofed
+white rot
+white-ruffed
+white-rumped
+white-russet
+white-salted
+white-satin
+white-set
+white-sewing
+white-shafted
+white-sheeted
+white-shouldered
+white-sided
+white-skin
+white-skinned
+white slave
+white slaver
+white slavery
+white-slaving
+white-sleeved
+white-spored
+white-spotted
+white-stemmed
+white-stoled
+white-strawed
+white-tailed
+white-thighed
+white-throated
+white-tinned
+white-tipped
+white-tomentose
+white-tongued
+white-tooth
+white-toothed
+white-topped
+white-tufted
+white-tusked
+white-uniformed
+white-veiled
+white-veined
+white-vented
+white-waistcoated
+white-walled
+white-wanded
+white-water
+white-waving
+white-way
+white-whiskered
+white-wig
+white-wigged
+white-winged
+whitewood bark
+white-woolly
+white-wristed
+white-zoned
+whiting bottle
+whiting box
+whiting brush
+whiting can
+whiting dabber
+whiting filler
+whiting furnace
+whiting kit
+whiting loader
+whiting maker
+whiting mill
+whiting packer
+whiting paste
+whiting pollack
+whiting powder
+whiting sponge
+whiting time
+whiting tin
+whitish-blue
+whitish-brown
+whitish-cream
+whitish-flowered
+whitish-green
+whitish-lavender
+whitish-red
+whitish-tailed
+whitish-yellow
+whitlow grass
+whitlowwort family
+Whitsun ale
+Whitsun farthings
+Whitsun gillyflower
+Whitsun monday
+Whitsun tuesday
+whitten tree
+Whit-tuesday
+whitty-tree
+Whit-week
+whity-brown
+whity-gray
+whity-green
+whity-yellow
+whiz-bang
+whizzing stick
+whole-and-half
+whole-and-half compass
+whole-backed
+whole-bodied
+whole-bound
+whole-cloth
+whole-colored
+whole-eared
+whole-eyed
+whole-feathered
+whole-footed
+whole-headed
+whole-hog
+whole-hogger
+whole-hoofed
+whole-leaved
+whole-length
+whole-minded
+whole-mouthed
+whole-or-none
+whole-sail
+wholesale dealer
+whole-seas
+whole-skinned
+whole-souled
+whole-souledly
+whole-souledness
+whole-spirited
+whole-step
+whole time
+whole-timer
+whole tone
+whole-tone scale
+whole-wheat
+whole-witted
+whooping cough
+why-not
+wicked-acting
+wicked-eyed
+wicked-looking
+wicked-minded
+wicked-speaking
+wicked-tongued
+wicker-woven
+wicket dam
+wicket door
+wicket gate
+widbin pear tree
+wide-abounding
+wide-accepted
+wide-angle
+wide-arched
+wide-armed
+wide-awake
+wide-awakeness
+wide-banked
+wide-branched
+wide-branching
+wide-breasted
+wide-brimmed
+wide-cast
+wide-chapped
+wide-circling
+wide-climbing
+wide-consuming
+wide-crested
+wide-distant
+wide-doored
+wide-eared
+wide-echoing
+wide-elbowed
+wide-expanded
+wide-expanding
+wide-extended
+wide-extending
+wide-eyed
+wide-faced
+wide-flung
+wide-framed
+wide-gaping
+wide-gated
+wide gauge
+wide-girdled
+wide-handed
+wide-hipped
+wide-honored
+wide-imperial
+wide-jointed
+wide-kneed
+wide-lamented
+wide-leafed
+wide-leaved
+wide-lipped
+wide-met
+wide-minded
+wide-necked
+wide-nosed
+wide-open
+wide-opened
+wide-openly
+wide-openness
+wide-palmed
+wide-patched
+wide-permitted
+wide-petaled
+wide-pledged
+wide-ranging
+wide ration
+wide-reaching
+wide-realmed
+wide-resounding
+wide-ribbed
+wide-rimmed
+wide-rolling
+wide-row
+wide-said
+wide-sanctioned
+wide-seen
+wide-set
+wide-shaped
+wide-shown
+wide-skirted
+wide-sleeved
+wide-sold
+wide-soled
+wide-sought
+wide-spaced
+wide-spanned
+wide-spreaded
+wide-spreading
+wide-straddling
+wide-streeted
+wide-stretched
+wide-stretching
+wide-throated
+wide-toed
+wide-tracked
+wide-veined
+wide-wasting
+wide-watered
+wide-wayed
+wide-winding
+wide-winged
+wide-yawning
+widgeon coot
+widgeon grass
+widow-bench
+widow bird
+widow duck
+widow finch
+widow fish
+widow flower
+widow-maker
+widow monkey
+widow right
+widow-wail
+widow-wail family
+widow woman
+wife-awed
+wife-beating
+wife-bound
+wife-hunting
+wife-ridden
+wife-worn
+wig block
+wiggen tree
+wiggle-tail
+wiggle-tail cultivator
+wiggle-waggle
+wiggle-woggle
+wiggly-waggly
+wig sumac
+wig tree
+wigwag signal
+wild-acting
+wild-aimed
+wild-billowing
+wild-blooded
+wild-booming
+wild-born
+wild-brained
+wild-bred
+wildcat bank
+wildcat well
+wild cherry
+wild-chosen
+wilderness area
+wild-eyed
+wild flower
+wild-flying
+wild-fought
+wild fowl
+wild-fowler
+wild-fowling
+wild-goose
+wild-goose chase
+wild-goose plum
+wild-grown
+wild-haired
+wild-headed
+wild-headedness
+wild-looking
+wild-made
+wild man
+wild-notioned
+wild-oat
+wild-oat kicker
+wild-phrased
+wild-spirited
+wild-staring
+wild-warbling
+wild-warring
+wild-williams
+wild-winged
+wild-witted
+wild-woven
+will-commanding
+will-fraught
+Willie-boy
+willie gow
+willie hawkie
+willie wagtail
+willie-waucht
+willie wicket
+will-less
+will-lessly
+will-lessness
+will-o-the-wisp
+willow acacia
+willow amsonia
+willow apple
+willow beauty
+willow beetle
+willow-bordered
+willow borer
+willow buffer
+willow cactus
+willow cat
+willow catfish
+willow chafer
+willow charcoal
+willow-colored
+willow-cone
+willow-cone gall
+willow cottonwood
+willow family
+willow fly
+willow-fringed
+willow gall
+willow goldfinch
+willow green
+willow grouse
+willow-grown
+willow herb
+willow lark
+willow leaf
+willow leaf beetle
+willow-leaved
+willow louse
+willow moth
+willow myrtle
+willow oak
+willow pattern
+willow peeler
+willow poplar
+willow ptarmigan
+willow sawfly
+willow-shaded
+willow shoot
+willow-skirted
+willow slug
+willow slug caterpillar
+willow sparrow
+willow thorn
+willow thrush
+willow tree
+willow-tree money
+willow-tufted
+willow-veiled
+willow wand
+willow warbler
+willow-wielder
+willow-wood
+willow wren
+will power
+will-strong
+will-willet
+will-with-the-wisp
+will-worship
+will-worshiper
+willy-mufty
+willy-nilly
+willy-wagtail
+willy-wicket
+willy-willy
+wilt disease
+wilting coefficient
+wilting percentage
+wilting point
+wince pit
+wince pot
+winch driver
+wincing machine
+wind-balanced
+wind-balancing
+wind band
+wind beam
+wind-beaten
+wind belt
+wind blast
+wind-blazing
+wind-blown
+wind-borne
+wind-bound
+wind box
+wind brace
+wind-broken
+wind-built
+wind burn
+wind catcher
+wind-changing
+wind-chapped
+wind chest
+wind-clipped
+wind cloud
+wind colic
+wind component table
+wind cone
+wind contusion
+wind cripple
+wind cutter
+wind-delayed
+wind-dispersed
+wind drift
+wind-driven
+wind dropsy
+wind eddy
+wind egg
+wind engine
+winder-on
+winder rod
+wind-exposed
+wind-fanned
+wind-fast
+wind-fertilization
+wind-fertilized
+windflower gentian
+wind-flowing
+wind-footed
+wind-force
+wind furnace
+wind gap
+wind gauge
+wind-god
+wind-grass
+wind guard
+wind gun
+wind harp
+wind hawk
+wind herb
+wind house
+wind-hungry
+wind indicator
+winding engine
+winding frame
+winding pendant
+winding sheet
+winding stick
+winding strip
+winding tackle
+wind instrument
+wind-instrumental
+wind-instrumentalist
+wind-laid
+wind-lashed
+wind load
+wind machine
+wind-making
+wind mantle
+windmill grass
+windmill-like
+windmill orchid
+windmill palm
+windmill pink
+windmill plane
+windmill plant
+windmill tower
+wind motor
+wind music
+wind-nodding
+wind-obeying
+wind-outspeeding
+window back
+window bar
+window bay
+window board
+window bole
+window box
+window-breaking
+window-broken
+window card
+window case
+window catch
+window cleaner
+window-cleaning
+window curtain
+window decoration
+window decorator
+window display
+window dresser
+window dressing
+window-efficiency
+window-efficiency ratio
+window envelope
+window fixture
+window fly
+window frame
+window furniture
+window gardening
+window glass
+window head
+window lead
+window martin
+window mirror
+window-opening
+window oyster
+window sash
+window screen
+window seat
+window shade
+window shell
+window-shop
+window-shopper
+window-shopping
+window show
+window shutter
+window sill
+window-smashing
+window sole
+window space
+window stile
+window stool
+window stop
+window swallow
+window tax
+window trim
+window trimmer
+window trimming
+window-ventilating
+window work
+wind part
+wind-parted
+wind plant
+wind-pollinated
+wind-pollination
+wind poppy
+wind porch
+wind power
+wind-puff
+wind-puffed
+wind pump
+wind-raising
+wind-rent
+wind resistance
+wind ripple
+wind-rode
+wind rose
+wind sail
+wind scale
+wind-scattered
+wind scoop
+wind scorpion
+wind shake
+wind-shaken
+wind sheet
+wind shelf
+windshield wing
+windshield wiper
+wind-shift
+wind-shift line
+wind side
+wind signal
+wind slash
+wind sleeve
+wind sock
+wind stack
+wind stacker
+wind stop
+windstorm insurance
+wind-struck
+wind-stuffed
+wind-sucking
+wind supply
+wind-swept
+wind-swift
+wind-swung
+wind-taut
+wind tee
+wind throw
+wind thrush
+wind tie
+wind-toned
+wind trunk
+wind tunnel
+wind valley
+wind vane
+wind-wandering
+wind-waved
+wind-waving
+wind wheel
+wind-whipped
+wind-winged
+wind-worn
+windy-aisled
+windy-blowing
+windy-clear
+windy-footed
+windy-headed
+windy-looking
+windy-mouthed
+windy-voiced
+windy-worded
+wine acid
+wine apple
+wine bag
+wine biscuit
+wine black
+wine-bright
+wine bush
+wine butt
+wine card
+wine cask
+wine-cask borer
+wine cellar
+wine-colored
+wine cooler
+wine cooper
+wine-crowned
+wine-cup
+wine-dark
+wine-drabbed
+wine-drinking
+wine-driven
+wine-drunken
+wine ferment
+wine flask
+wine fly
+wine fountain
+wine gallon
+wine grape
+wine-hardy
+wine-heated
+wine-inspired
+wine-laden
+wine lees
+wine maker
+wine making
+wine measure
+wine merchant
+wine-merry
+wine palm
+wine party
+wine plant
+wine press
+wine presser
+wine-producing
+wine purple
+wine red
+wine seller
+wine-selling
+wine-shaken
+wine-soaked
+wine-stained
+wine stone
+wine-stuffed
+wine-swilling
+wine tester
+wine thrush
+wine-tinged
+wine tun
+wine vault
+wine vinegar
+wine whey
+wine-wise
+wine yeast
+wine yellow
+wine-yielding
+wing back formation
+wing band
+wing bar
+wing bay
+wing bearing
+wing bolt
+wing bone
+wing-borne
+wing bow
+wing-broken
+wing car
+wing case
+wing cell
+wing chair
+wing-clipped
+wing clipper
+wing clipping
+wing collar
+wing compass
+wing cover
+wing covert
+wing dam
+wing deck
+wing divider
+wing dividers
+winged-footed
+winged-heeled
+winged-leaved
+wing elm
+wing feather
+wing flap
+wing-footed
+wing game
+wing gap
+wing gudgeon
+wing-hoofed
+wing jam
+wing-leafed
+wing-leaved
+wing-limed
+wing load
+wing loading
+wing-loose
+wing-maimed
+wing-margined
+wing net
+wing nut
+wing over
+wing pad
+wing passage
+wing petal
+wing plow
+wing power
+wing quill
+wing rail
+wing resistance
+wing sac
+wing screw
+wing-shaped
+wing sheath
+wing shell
+wing shooting
+wing shot
+wing-slot
+wing snail
+wing stopper
+wing-swift
+wing tie
+wing-tip
+wing-tip flare
+wing-tip float
+wing-tipped
+wing top
+wing tract
+wing transom
+wing truss
+wing valve
+wing wale
+wing wall
+wing-wearily
+wing-weariness
+wing-weary
+wing-wide
+winking cartilage
+winking muscle
+winning gallery
+winning opening
+winning post
+winnow cloth
+winnow-corb
+winnowing basket
+winnowing fan
+winnowing machine
+winnow sheet
+winter aconite
+winter annual
+winter apple
+Winter banana
+winter barley
+winter-beaten
+winter beer
+winter-blasted
+winter blight
+winter-blooming
+winter-boding
+winter bonnet
+winter-bound
+winter brake
+winter bud
+winter bunting
+winter cherry
+winter-chilled
+winter-clad
+winter clover
+winter count
+winter cress
+winter crookneck
+winter crop
+winter daffodil
+winter-damaged
+winter duck
+winter egg
+winter fallow
+winter fat
+winter-fattened
+winter-fed
+winter-felled
+winter fever
+winter flounder
+winter flower
+winter-flowering
+winter garden
+winter geranium
+winter gillyflower
+winter-gladdening
+winter golf
+winter grape
+winter-gray
+winter green
+wintergreen family
+wintergreen oil
+winter-ground
+winter-grown
+winter gull
+winter-habited
+winter hail
+winter-hardened
+winter hawk
+winter heath
+winter heliotrope
+winter hellebore
+winter house
+winter huckleberry
+winter itch
+winter leaf
+winter lettuce
+winter-long
+winter-love
+winter-loving
+winter-made
+winter melon
+winter mew
+winter midge
+winter moth
+Winter nelis
+winter oats
+winter oil
+winter-old
+winter pear
+winter pink
+winter plum
+winter-proof
+winter-proud
+winter-pruned
+winter purslane
+winter-quarter
+winter quarters
+winter radish
+winter-reared
+winter-rig
+winter-ripening
+winter rocket
+winter rose
+winter rye
+winter savory
+winter-seeming
+winter shad
+winter-shaken
+winter sheldrake
+winter skate
+winter sleep
+winter snipe
+winter solstice
+winter-sown
+winter spice
+winter spore
+winter squash
+winter-standing
+winter-starved
+winter strawberry
+winter sucker
+winter sunscald
+winter sweet
+winter-swollen
+winter teal
+winter-thin
+winter-verging
+winter vetch
+winter-visaged
+winter wagtail
+winter-wasted
+winter wheat
+winter-withered
+winter wolfsbane
+winter-worn
+winter wren
+winter yellowlegs
+wipe break
+wipe breaker
+wipe joint
+wiper shaft
+wiper wheel
+wiping contact
+wiping rod
+wire bender
+wire-bending
+wire bent
+wire birch
+wire-blocking
+wire-borne
+wire-bound
+wire bridge
+wire-brushing
+wire-caged
+wire cartridge
+wire chief
+wire chisel
+wire cloth
+wire coat
+wire-coiling
+wire coverer
+wire-crimping
+wire-cut
+wire cutter
+wire cutting
+wire drawer
+wire drawing
+wire edge
+wire-edged
+wire entanglement
+wire-feed
+wire-feeding
+wire-flattening
+wire former
+wire galvanizer
+wire-galvanizing
+wire gauge
+wire glass
+wire grama
+wire grass
+wire grating
+wire grub
+wire-guarded
+wire gun
+wire-haired
+wire house
+wire-hung
+wire-insulating
+wire lath
+wireless apparatus
+wireless beacon
+wireless compass
+wireless operator
+wireless set
+wireless telegraph
+wireless telegrapher
+wireless telegraphist
+wireless telegraphy
+wireless telephone
+wireless telephony
+wire line
+wire ling
+wire mark
+wire-measuring
+wire-mended
+wire micrometer
+wire money
+wire nail
+wire-netted
+wire nut
+wire plant
+wire-pointing
+wire press
+wire radio
+wire recorder
+wire reducer
+wire road
+wire rod
+wire roller
+wire-rolling
+wire rush
+wire-safed
+wire saw
+wire-sewed
+wire sewer
+wire-sewn
+wire-shafted
+wire silver
+wire spooler
+wire-spun
+wire stem
+wire stitch
+wire-stitched
+wire stitcher
+wire stitching
+wire straightener
+wire-straightening
+wire strander
+wire-stranding
+wire-stretching
+wire-stringed
+wire-strung
+wire-tailed
+wire tapper
+wire tapping
+wire tester
+wire-testing
+wire tightener
+wire-tightening
+wire tinner
+wire-tinning
+wire-toothed
+wire vine
+wire walker
+wire weaver
+wire welder
+wire wheel
+wire-wheeled
+wire winder
+wire-winding
+wire-wound
+wire-wove
+wire-woven
+wiring die
+wiring machine
+wiring press
+wiring punch
+wiry-brown
+wiry-coated
+wiry-haired
+wiry-leaved
+wiry-looking
+wiry-stemmed
+wiry-voiced
+wisdom-bred
+wisdom-given
+wisdom-giving
+wisdom-led
+wisdom literature
+wisdom-loving
+wisdom-seasoned
+wisdom-seeking
+wisdom-teaching
+wisdom tooth
+wisdom-working
+wise-bold
+wise-framed
+wise-hardy
+wise-headed
+wise-heart
+wise-judging
+wise-lipped
+wise-reflecting
+wise-said
+wise-spoken
+wise-valiant
+wise-worded
+wishbone bush
+wish fulfillment
+wishful thinker
+wishing bone
+wishing cap
+wish-maiden
+wish-wash
+wish-washy
+wishy-washily
+wishy-washiness
+wishy-washy
+wisteria blue
+wisteria violet
+wistful-eyed
+wit-abused
+wit-assailing
+wit-beaten
+witch alder
+witch baiter
+witch baiting
+witch bird
+witch broom
+witch burner
+witch burning
+witch butter
+witch cake
+witch-charmed
+witch chick
+witch doctor
+witch doctoring
+witch doctory
+witch doctress
+witch-elm
+wit-cherishing
+witch-finder
+witch-finding
+witch fire
+witch flounder
+witch gowan
+witch grass
+witch hazel
+witch-hazel family
+witch-held
+witch hobble
+witch hopple
+witch hunt
+witch-hunter
+witch-hunting
+witch knot
+witch light
+witch lock
+witch mania
+witch mark
+witch master
+witch meal
+witch moth
+witch-ridden
+witch sabbath
+witch stick
+witch stitch
+witch-stricken
+witch tree
+wit-crack
+wit-cracker
+wit-drawn
+wit-foundered
+wit-fraught
+wit-gracing
+withdrawing room
+with-drawn
+withe rod
+wither-wrung
+within-bound
+within-named
+withy-bound
+withy-woody
+wit-infusing
+wit-loving
+wit-masked
+witness box
+witness corner
+witness stand
+witney nap
+wit-offended
+wit-oppressing
+wit-pointed
+wit-salted
+wit-snapper
+wit-starved
+wit-stung
+wit tooth
+witty-brained
+witty-conceited
+witty-feigned
+witty-pated
+witty-pretty
+witty-worded
+wit-worn
+wizard-woven
+wizen-faced
+wizen-hearted
+woad-leaved
+woad-painted
+woad vat
+wobble pump
+wobble saw
+wobbling disk
+woe-begetting
+woe-beseen
+woe-bested
+woe-betrothed
+woe-boding
+woe-dejected
+woe-delighted
+woe-denouncing
+woe-destined
+woe-embroidered
+woe-enwrapped
+woe-exhausted
+woe-foreboding
+woe-fraught
+woeful-wan
+woe-grim
+woe-humbled
+woe-illumed
+woe-infirmed
+woe-laden
+woe-maddened
+woe-revolving
+woe-scorning
+woe-sprung
+woe-stricken
+woe-struck
+woe-surcharged
+woe-threatened
+woe-tied
+woe-wearied
+woe-weary
+woe-wedded
+woe-whelmed
+woe-wrinkled
+wold mouse
+wolf-begotten
+wolf-colored
+wolf cub
+wolf dog
+wolf eel
+wolf-eyed
+wolf fish
+wolf fruit
+wolf grape
+wolf-gray
+wolf-haunted
+wolf-headed
+wolf-hunting
+wolf madness
+wolf-man
+wolf moth
+wolf-moved
+wolf note
+wolf pack
+wolfram lamp
+wolfram ocher
+wolfram steel
+wolf-scaring
+wolf-shaped
+wolf-slaying
+wolf snake
+wolf spider
+wolf-suckled
+wolf tooth
+wolf tree
+wolf willow
+woman-bearing
+woman-born
+woman-bred
+woman-built
+woman chaser
+woman child
+woman-churching
+woman-conquered
+woman-daunted
+woman-degrading
+woman-despising
+woman-easy
+woman-faced
+woman-fair
+woman-fashion
+woman-flogging
+woman-governed
+woman-grown
+woman-hating
+woman-headed
+woman-loving
+woman-mad
+woman-made
+woman-man
+woman movement
+woman-murdering
+woman-proud
+woman-ridden
+woman-shy
+woman-suffrage
+woman-suffragist
+woman-tended
+woman-vested
+woman-wary
+womb-enclosed
+womb-lodged
+wonder-beaming
+wonder-bearing
+wonder-charmed
+wonder-dumb
+wonder-exciting
+wonder-fed
+wonder-hiding
+wonder-loving
+wonder-mocking
+wonder-promising
+wonder-raising
+wonder-seeking
+wonder-sharing
+wonder-smit
+wonder-smitten
+wonder-stirring
+wonder-stricken
+wonder-striking
+wonder-struck
+wonder-teeming
+wonder-waiting
+wonder-worker
+wonder-working
+wonder-wounded
+wonder-writing
+wonga-wonga
+wont-believer
+wont-learn
+wont-wait
+wont-work
+wood acid
+wood alcohol
+wood almond
+wood-and-water joey
+wood anemone
+wood ant
+wood apple
+wood-apple gum
+wood aster
+wood avens
+wood awl
+wood baboon
+wood barker
+wood bass
+wood bedstraw
+wood bender
+wood betony
+woodbine-clad
+woodbine-covered
+woodbine green
+woodbine-wrought
+wood bison
+wood block
+wood boiler
+wood borer
+wood-boring
+wood-born
+wood-bred
+wood broom
+wood brown
+wood buffalo
+wood-built
+wood bundle
+wood calamint
+wood calker
+wood carpet
+wood carver
+wood carving
+wood-cased
+wood cell
+wood cement
+woodchat shrike
+wood checker
+wood chess
+wood chopper
+woodchuck day
+wood cleaner
+wood cleaver
+wood cloth
+wood coal
+woodcock owl
+woodcock pilot
+woodcock shell
+woodcock snipe
+woodcock soil
+wood coker
+wood collier
+wood copper
+wood corn
+Wood cree
+wood-crowned
+wood cudweed
+wood culver
+wood distiller
+wood dove
+wood draftsman
+wood drake
+wood drawing
+wood dresser
+wood-dried
+wood driller
+wood duck
+wood duster
+wood-dwelling
+wood dyer
+wood-eating
+wood-embosomed
+wood-embossing
+wood enameler
+wooden-barred
+wooden-bottom
+wood-encumbered
+wooden-faced
+wooden-featured
+wood engraver
+wood engraving
+wooden-hooped
+wooden-hulled
+wooden-legged
+wooden-lined
+wooden-pinned
+wooden-posted
+wooden-seated
+wooden-shoed
+wooden-sided
+wooden-soled
+wooden spoon
+wooden spoonist
+wooden-tined
+wooden tongue
+wooden-walled
+wooden wedge
+wooden-wheeled
+wood evil
+wood-faced
+wood facer
+wood fagoter
+wood feller
+wood fern
+wood fiber
+wood-fibered
+wood file
+wood filler
+wood finisher
+wood flour
+wood flower
+wood fretter
+wood fringe
+wood-fringed
+wood frog
+wood gas
+woodgate rust
+wood gatherer
+wood germander
+wood-girt
+wood grass
+wood groundsel
+wood grouse
+wood grower
+wood grubber
+wood gum
+wood hair grass
+wood hen
+wood hewer
+wood-hewing
+wood honey
+wood-hooped
+wood hoopoe
+wood hyacinth
+wood ibis
+wood ipecac
+wood keeper
+wood-keyed
+wood kingfisher
+wood laborer
+woodland brown
+woodland caribou
+woodland goldenrod
+woodland primrose
+woodland star
+woodland sunflower
+wood lark
+wood laurel
+wood leopard
+wood leopard moth
+wood lily
+wood-lined
+wood loader
+wood lock
+wood lot
+wood louse
+wood machine
+wood machinist
+wood-mat
+wood meadow grass
+wood meal
+wood measurer
+wood milling machine
+wood mite
+wood molder
+wood mouse
+wood naphtha
+wood-nep
+wood nettle
+wood nightshade
+wood-note
+wood nut
+wood nymph
+wood offering
+wood oil
+wood oil tree
+wood-oil-tree family
+wood opal
+wood owl
+wood packing
+wood painting
+wood-paneled
+wood paper
+wood parenchyma
+wood partridge
+wood-paved
+wood pavior
+wood pea
+wood peat
+wood pegger
+wood pennyroyal
+wood pewee
+wood pie
+wood pigeon
+wood pimpernel
+wood planer
+wood-planing
+wood plant
+wood polisher
+wood port
+wood pulp
+wood pussy
+wood quail
+wood quartet
+wood-queest
+wood-quest
+wood quintet
+wood rabbit
+wood range
+wood rat
+wood ray
+wood-ray parenchyma
+wood reed
+wood reed grass
+wood render
+wood-rip
+wood robin
+wood-roofed
+wood rose
+wood rosin
+wood rot
+wood rush
+wood sage
+wood sandpiper
+wood saw
+wood sawyer
+wood scale
+woods cranberry
+wood screw
+wood-sheathed
+wood sheldrake
+wood shock
+wood shrike
+wood-skirted
+wood slave
+wood snail
+wood snipe
+wood sorrel
+wood-sorrel family
+wood-sour
+wood spack
+wood spear grass
+woods phlox
+wood spirit
+wood splitter
+wood spurge
+woods run
+wood stain
+wood stainer
+wood stamp
+wood star
+wood-stock
+wood stork
+wood stove
+wood strawberry
+wood sugar
+wood swallow
+wood tapper
+wood tar
+wood-tar pitch
+wood tenoner
+wood terrapin
+wood thrush
+wood tick
+wood tin
+wood titmouse
+wood tortoise
+wood trimmer
+wood turner
+wood turning
+wood-turning lathe
+wood turpentine
+wood vetch
+wood vetchling
+wood vine
+wood vinegar
+wood violet
+wood-walled
+wood warbler
+wood wasp
+wood widgeon
+wood willower
+wood wind
+wood-wind instrument
+wood-wind quartet
+wood-wind quintet
+wood wool
+woodworking chisel
+woodworking lathe
+wood wren
+woody-stemmed
+wooer-bab
+wool-backed
+wool-bearing
+wool breaker
+wool-bundling
+wool burler
+wool-burring
+wool card
+wool carder
+wool carding
+wool classer
+wool classing
+wool-cleaning
+wool clip
+wool comb
+wool comber
+wool combing
+wool-coming
+wool crepe
+wool driver
+wool-drying
+wool-dyed
+wool-eating
+woolen-clad
+woolen draper
+woolen drapery
+woolen-frocked
+woolen mill
+woolen-stockinged
+wool extract
+wool extractor
+wool fat
+wool feeder
+wool fiber
+wool-flock
+wool former
+wool-fringed
+wool grade
+wool grader
+wool grading
+wool grass
+wool grease
+wool green
+wool-growing
+wool hall
+wool hardener
+wool-hetchel
+wool-laden
+wool-lined
+woolly bear
+woolly-butted
+woolly-coated
+woolly foot
+woolly-haired
+woolly-haried
+woolly-headed
+woolly-leaved
+woolly-looking
+woolly-minded
+woolly-mindedness
+woolly-pated
+woolly-podded
+woolly-tailed
+woolly-white
+woolly-witted
+woolly worm
+wool mill
+wool moth
+wool needle
+wool-oerburdened
+wool oil
+wool oiler
+wool packer
+wool-packing
+wool-pated
+wool-picking
+wool powder
+wool-producing
+wool-rearing
+wool sampler
+wool scour
+wool spinner
+wool spinning
+wool sponge
+wool staple
+wool stapler
+wool-stapling
+wool stripper
+wool table
+wool thistle
+wool tree
+wool waste
+wool wax
+wool-white
+wool-witted
+wool-woofed
+wooly-headed
+wootz steel
+word accent
+word-beat
+word-blind
+word blindness
+word-bound
+word-breaking
+word-catcher
+word-catching
+word-charged
+word-clad
+word class
+word-compelling
+word-conjuring
+word contest
+word-deaf
+word deafness
+word-dearthing
+word-driven
+word form
+word-for-word
+word hoard
+word-jobber
+word-juggling
+word-keeping
+word lore
+word method
+word music
+word musician
+word-of-mouth
+word order
+word-paint
+word painter
+word painting
+word-perfect
+word picture
+word-pity
+word salad
+word-seller
+word-selling
+word sign
+word-slinger
+word-slinging
+word-splitting
+word square
+word stress
+word symbol
+word value
+word-wounded
+work-and-turn
+work cure
+work curve
+worker cell
+worker comb
+worker-correspondent
+worker-guard
+worker major
+worker minor
+work function
+work-hardened
+work horse
+work-hour
+workhouse sheeting
+workhouse test
+working card
+working class
+working-day
+working dog
+working drawing
+working face
+working fit
+working fluid
+working gauge
+working hypothesis
+working line
+working load
+working order
+working papers
+working pattern
+working pit
+working plan
+working point
+working rod
+working strength
+working stress
+working substance
+working tube
+work lead
+work-producing
+work roller
+work school
+works council
+work-seeking
+work sheet
+work shoe
+work-shy
+work-shyness
+works manager
+work song
+work spreading
+work-stained
+work stock
+work stone
+work-stopper
+work-study-play plan
+work-study-play school
+work ticket
+work train
+work-up
+work-wan
+work-weary
+work week
+work-worn
+world-abhorring
+world-abiding
+world-abstracted
+world-accepted
+world-acknowledged
+world-adored
+world-adorning
+world-advancing
+world-advertised
+world-affecting
+world-agitating
+world-alarming
+world-altering
+world-amazing
+world-amusing
+world-animating
+world-anticipated
+world-applauded
+world-appreciated
+world-apprehended
+world-approved
+world-argued
+world-arousing
+world-arresting
+world ash
+world-assuring
+world-astonishing
+world-authorized
+world-awed
+world-barred
+world-beater
+world-beating
+world-beheld
+world-beloved
+world belt
+world-beset
+world-borne
+world-bound
+world-braving
+world-broken
+world-bruised
+world-building
+world-burdened
+world-busied
+World calendar
+world-canvassed
+world-captivating
+world-celebrated
+world-censored
+world-censured
+world-challenging
+world-changing
+world-charming
+world-cheering
+world-choking
+world-chosen
+world-circling
+world-circulated
+world-civilizing
+world-classifying
+world-cleansing
+world-comforting
+world-commanding
+world-commended
+world-compassing
+world-compelling
+world concept
+world-condemned
+world-confounding
+world-connecting
+world-conquering
+world-conscious
+world-consciousness
+world-constituted
+world-consuming
+world-contemning
+world-contracting
+world-contrasting
+world-controlling
+world-converting
+world-copied
+world-corrupted
+world-corrupting
+world-covering
+world-creating
+world-credited
+world-crippling
+world-crowding
+world-crushed
+world-deaf
+world-debated
+world-deceiving
+world-deep
+world-defying
+world-delighting
+world-delivering
+world-demanded
+world-denying
+world-depleting
+world-depressing
+world-describing
+world-deserting
+world-desired
+world-desolation
+world-despising
+world-destroying
+world-detached
+world-detesting
+world-devouring
+world-diminishing
+world-directing
+world-disappointing
+world-discovering
+world-discussed
+world-disgracing
+world-dissolving
+world-distributed
+world-disturbing
+world-divided
+world-dividing
+world-dominating
+world-dreaded
+world-dwelling
+world-echoed
+world-educating
+world-embracing
+world-eminent
+world-encircling
+world-ending
+world-enlarging
+world-enlightening
+world-entangled
+world-enveloping
+world-envied
+world-esteemed
+world-excelling
+world-exciting
+world-famed
+world-familiar
+world-famous
+world-favored
+world-fearing
+world-felt
+world-forgetting
+world-forgotten
+world-forming
+world-forsaken
+world-forsaking
+world-fretted
+world-girdling
+world-gladdening
+world-governing
+world-grasping
+world-great
+world-grieving
+world ground
+world-hailed
+world-hardened
+world-hating
+world-heating
+world-helping
+world-honored
+world-horrifying
+world-humiliating
+world-imagining
+world-improving
+world-infected
+world-informing
+world-involving
+world island
+world-jaded
+world-jeweled
+world-joining
+world-kindling
+world-knowing
+world-known
+world-lamented
+world-lasting
+world-leading
+world-leveling
+world-lighting
+world line
+world-linking
+world-long
+world-loving
+worldly-minded
+worldly-mindedly
+worldly-mindedness
+worldly-wise
+world-mad
+world-made
+world-marked
+world-mastering
+world-melting
+world-menacing
+world-missed
+world-mocking
+world-mourned
+world-moving
+world myth
+world-naming
+world-needed
+world-neglected
+world-nigh
+world-noised
+world-noted
+world-obligating
+world-observed
+world-occupying
+world-offending
+world-old
+world-opposing
+world-oppressing
+world-ordering
+world-organizing
+world-outraging
+world-overcoming
+world-overthrowing
+world-owned
+world-paralyzing
+world-pardoned
+world-patriotic
+world-peopling
+world-perfecting
+world-pestering
+world-picked
+world-pitied
+world-plaguing
+world-pleasing
+world point
+world-poisoned
+world politics
+world-pondered
+world-populating
+world-portioning
+world-possessing
+world pound
+world power
+world-practiced
+world premiere
+world-preserving
+world-prevalent
+world-prized
+world-producing
+world-prohibited
+world-protected
+world-raising
+world-rare
+world-read
+world-recognized
+world-redeeming
+world-reflected
+world-regulating
+world-rejected
+world-rejoicing
+world-relieving
+world-remembered
+world-renewing
+world-renowned
+world-resented
+world-respected
+world-restoring
+world-revealing
+world-reviving
+world-revolving
+world-ridden
+world-round
+world-rousing
+world-roving
+world-ruling
+world-sacred
+world-sacrificing
+world-sanctioned
+world-sated
+world-saving
+world-scarce
+world-scattered
+world-schooled
+world-scorning
+world-seasoned
+world-self
+world series
+world-serving
+world-settling
+world-shaking
+world-sharing
+worlds-high
+world-shocking
+world-sick
+world-simplifying
+world-sized
+world-slandered
+world-sobered
+world-soiled
+world soul
+world speech
+world spirit
+world-spoiled
+world-spread
+world-stained
+world-startling
+world state
+world-staying
+world-stirring
+world-strange
+world-studded
+world-subduing
+world-sufficing
+world-supplying
+world-supporting
+world-surrounding
+world-surveying
+world-sustaining
+world-swallowing
+world-taking
+world-taming
+world-taught
+world-tempted
+world-tested
+world-thrilling
+world-tired
+world-tolerated
+world-tossing
+world tree
+world-troubling
+world-turning
+world-uniting
+world-used
+world-valid
+world-valued
+world-venerated
+world view
+world-waited
+world-wandering
+world-wanted
+World war
+world-wasting
+world-watched
+world-wearied
+world-wearily
+world-weariness
+world-weary
+world-welcome
+world-wept
+world-wide
+world-widely
+world-wideness
+world-winning
+world-wise
+world-without-end
+world-witnessed
+world-worn
+world-wrecking
+worm abscess
+worm aneurysm
+worm bark
+worm-breeding
+worm brood
+worm burrow
+worm-cankered
+worm capsule
+worm cast
+worm-consumed
+worm conveyer
+worm-destroying
+worm disease
+worm-driven
+worm-eat
+worm-eaten
+worm-eatenness
+worm-eater
+worm-eating
+worm fence
+worm fever
+worm gear
+worm-geared
+worm-gear elevator
+worm gearing
+worm-gnawed
+worm-gnawn
+worm grass
+worm gut
+worm-killing
+worm moss
+worm-nest
+worm oil
+worm-pierced
+worm powder
+worm punch
+worm-resembling
+worm-reserved
+worm-riddled
+worm-ripe
+wormseed mustard
+wormseed oil
+worm-shaped
+worm shell
+worm snake
+worm-spun
+worm tea
+worm thread
+worm tincture
+worm-tongued
+worm tube
+worm wheel
+worm-wheel hob thread
+worm wire
+wormwood oil
+wormwood sage
+worm-worn
+worm-wrought
+worn-down
+worn-out
+worn-outness
+worry-carl
+worse-affected
+worse-applied
+worse-bodied
+worse-born
+worse-bred
+worse-calculated
+worse-conditioned
+worse-disposed
+worse-dispositioned
+worse-executed
+worse-faring
+worse-governed
+worse-handled
+worse-informed
+worse-lighted
+worse-mannered
+worse-mated
+worse-named
+worse-natured
+worse-opinionated
+worse-ordered
+worse-paid
+worse-performed
+worse-printed
+worse-rated
+worse-ruled
+worse-satisfied
+worse-served
+worse-spent
+worse-succeeding
+worse-taught
+worse-tempered
+worse-thoughted
+worse-timed
+worse-treated
+worse-typed
+worse-utilized
+worse-wanted
+worse-wrought
+worship-paying
+worst-affected
+worst-bred
+worst-cast
+worst-damaged
+worst-deserving
+worst-disposed
+worst-fashioned
+worst-formed
+worst-governed
+worst-informed
+worst-managed
+worst-manned
+worst-paid
+worst-printed
+worst-ruled
+worst-served
+worst-taught
+worst-timed
+worst-treated
+worst-used
+worst-wanted
+worth-while
+worth-whileness
+would-be
+would-have-been
+wound chevron
+wound cork
+wound-dressing
+wound fever
+wound-fevered
+wound-free
+wound fungus
+wound gall
+wound-inflicting
+wound-marked
+wound parasite
+wound-plowed
+wound-producing
+wound rocket
+wound-scarred
+wound-secreted
+wound-worn
+wou-wou
+woven-wire
+wrack grass
+wrap-around
+wrapping-gown
+wrapping paper
+wrap-round
+wrap-up
+wrath-allaying
+wrath-bewildered
+wrath-consumed
+wrath-faced
+wrathful-eyed
+wrath-kindled
+wrath-kindling
+wrath-provoking
+wrath-swollen
+wrath-wreaking
+wreath-crowned
+wreath-drifted
+wreath-festooned
+wreath goldenrod
+wreath shell
+wreath-wrought
+wreck-bestrewn
+wreck buoy
+wreck-causing
+wreck-devoted
+wreck-free
+wreck gun
+wrecking frog
+wrecking pump
+wreck master
+wreck-raising
+wreck-strewn
+wreck-threatening
+wren babbler
+wrench fit
+wrench forger
+wrench hammer
+wrench head
+wren tit
+wren warbler
+wrest block
+wrest pin
+wrest plank
+wretched-fated
+wretched-looking
+wretched-witched
+wringing fit
+wringing machine
+wringing-wet
+wrinkle-coated
+wrinkled-browed
+wrinkled-cheeked
+wrinkled-leaved
+wrinkled-old
+wrinkled-shelled
+wrinkled-visaged
+wrinkle-faced
+wrinkle-fronted
+wrinkle-furrowed
+wrinkle-making
+wrinkle-scaled
+wrist clonus
+wrist drop
+wrist joint
+wrist pin
+wrist plate
+wrist shot
+wrist watch
+write-off
+write-up
+writing board
+writing cabinet
+writing case
+writing desk
+writing exercise
+writing fluid
+writing frame
+writing ink
+writing lesson
+writing machine
+writing master
+writing pad
+writing paper
+writing reed
+writing room
+writing set
+writing table
+writing telegraph
+written hand
+wrong-directed
+wrong-ended
+wrong-endedness
+wrong-feigned
+wrong-gotten
+wrong-grounded
+wrong-jawed
+wrong-minded
+wrong-mindedly
+wrong-mindedness
+wrong-ordered
+wrong-principled
+wrong-screwed
+wrong-thinking
+wrong-timed
+wrong-voting
+wroth money
+wroth penny
+wroth silver
+wrought iron
+wrought-up
+wry-armed
+wry-billed
+wry-blown
+wry-eyed
+wry-faced
+wry-formed
+wry-guided
+wry-legged
+wry-looked
+wry-mouthed
+wry-necked
+wry-neckedness
+wry-nosed
+wry-set
+wry-tailed
+wry-toothed
+W-shaped
+W surface
+wung-out
+wych-elm
+wych-hazel
+X chromosome
+Xipe-totec
+Xiphium iris
+X radiation
+X ray
+X-ray cancer
+X-ray photograph
+X-ray photography
+X-ray-proof
+X-ray spectrograph
+X-ray spectrometer
+X-ray spectrum
+X-ray therapy
+X-ray tube
+X-shaped
+xylem parenchyma
+xylene blue
+xylite oil
+yaba bark
+yacca gum
+yacht berth
+yacht builder
+yacht-built
+yacht club
+yacht decorator
+yacht designer
+yacht engineer
+yacht ensign
+yacht gear
+yacht propeller
+yacht race
+yacht racing
+yacht rigging
+yacht squadron
+Yajur-veda
+yam bean
+yam family
+yam potato
+yam-root
+yam stick
+yam tree
+yang-kin
+Yankee-doodle
+Yankee-doodledom
+Yankee-doodleism
+Yao-min
+Yao yin
+yapp binding
+yard boy
+yard-broad
+yard cleaner
+yard-deep
+yard donkey
+yard engineer
+yard foreman
+yard grass
+yarding engine
+yard inspector
+yard laborer
+yard locomotive
+yard-long
+yard-long bean
+yard lumber
+yard porter
+yard regulator
+yard rope
+yard rush
+yard scavenger
+yard signalman
+yard slings
+yard-square
+yard sweeper
+yard tackle
+yard-thick
+yard trader
+yard-wide
+yarn baller
+yarn bleacher
+yarn boiler
+yarn-boiling
+yarn buncher
+yarn bundler
+yarn carrier
+yarn-cleaning
+yarn conditioner
+yarn croft
+yarn dresser
+yarn dryer
+yarn-dyed
+yarn dyer
+yarn finisher
+yarn inspector
+yarn-measuring
+yarn-mercerizing
+yarn packer
+yarn printer
+yarn reel
+yarn reeler
+yarn remover
+yarn sizer
+yarn sorter
+yarn spinner
+yarn-spinning
+yarn spreader
+yarn stretcher
+yarn stripper
+yarn tester
+yarn-testing
+yarn twister
+yarn warper
+yarn washer
+yarn waste
+yarn weigher
+yarn winder
+yate tree
+yaw-haw
+yawl-rigged
+yaw shrub
+yaw-sighted
+y-bake
+y-blend
+y-blent
+Y box
+Y branch
+Y bridge
+y-cast
+Y chromosome
+y-clept
+Y connection
+Y cross
+Y current
+Y curve
+yea-and-nay
+yea-and-nayish
+yea-nay
+year-born
+year count
+year-counted
+year hour
+year letter
+year-marked
+year-old
+year-round
+yea sayer
+yeast bee
+yeast-bitten
+yeast cake
+yeast cell
+yeast fungus
+yeast plant
+yeast powder
+yeast spot
+Yed posterior
+Yed prior
+yellow-aproned
+yellow-armed
+yellow-backed
+yellow-banded
+yellow-bark
+yellow-barked
+yellow-bark oak
+yellow-barred
+yellow-beaked
+yellow-bearded
+yellow-bellied
+yellow-billed
+yellow-black
+yellow-blossomed
+yellow-blotched
+yellow-bodied
+yellow book
+yellow-breasted
+yellow-browed
+yellow-brown
+yellow-capped
+yellow-centered
+yellow-checked
+yellow-cheeked
+yellow-chinned
+yellow-collared
+yellow-colored
+yellow-covered
+yellow-crested
+yellow-cross
+yellow-cross liquid
+yellow-crowned
+yellow-daisy
+yellow-dog
+yellow-dotted
+yellow-dun
+yellow-dye
+yellow-dyed
+yellow-dye tree
+yellow-eared
+yellow-earth
+yellow-eye
+yellow-eyed
+yellow-eyed grass
+yellow-eyed-grass family
+yellow-faced
+yellow-feathered
+yellow-fever
+yellow-fever fly
+yellow-fever mosquito
+yellow-fin
+yellow-fingered
+yellow-finned
+yellow-flagged
+yellow-fleeced
+yellow-fleshed
+yellow-flowered
+yellow-flowering
+yellow-footed
+yellow-fringed
+yellow-fronted
+yellow-fruited
+yellow-funneled
+yellow-girted
+yellow-gloved
+yellow-green
+yellow-haired
+yellow-handed
+yellow-headed
+yellow-hilted
+yellow-horned
+yellow-hosed
+yellowish-amber
+yellowish-brown
+yellowish-colored
+yellowish-gold
+yellowish-gray
+yellowish-green
+yellowish-green-yellow
+yellowish-haired
+yellowish-pink
+yellowish-red
+yellowish-red-yellow
+yellowish-rose
+yellowish-skinned
+yellowish-tan
+yellowish-white
+yellow jack
+yellow jacket
+yellow-jerkined
+yellow journal
+yellow journalism
+yellow journalist
+yellow-labeled
+yellow-leaved
+yellow-legged
+yellow-legger
+yellow-legginged
+yellow-lettered
+yellow-lit
+yellow-locked
+yellow-lustered
+yellow-maned
+yellow-marked
+yellow-necked
+yellow-nosed
+yellow-olive
+yellow-painted
+yellow-papered
+yellow-pinioned
+yellow-pyed
+yellow-rayed
+yellow-red
+yellow-ringed
+yellow-ringleted
+yellow-ripe
+yellow-robed
+yellow-rooted
+yellow-rumped
+yellow-sallow
+yellow-seal
+yellow-sealed
+yellow-shafted
+yellow-shanked
+yellow-shouldered
+yellow-skinned
+yellow-skirted
+yellow-speckled
+yellow-splotched
+yellow-spotted
+yellow-sprinkled
+yellow-stained
+yellow-starched
+yellow-striped
+yellow-tailed
+yellow-throated
+yellow-tinged
+yellow-tinging
+yellow-tinted
+yellow-tipped
+yellow-toed
+yellow-tressed
+yellow-tufted
+yellow-vented
+yellow-washed
+yellow-white
+yellow-winged
+yelly-hoo
+yelly-hooing
+ye-makimono
+y-end
+Yenisei ostyak
+yeoman service
+yerba buena
+Yerba de para
+yerba mansa
+yerba mate
+yerba reuma
+yerba sagrada
+yerba santa
+yeshiva bocher
+yes man
+yes-no
+yes-noer
+yes-noism
+yew berry
+yew-besprinkled
+yew-crested
+yew family
+yew green
+yew-hedged
+yew-leaved
+yew pine
+yew-roofed
+yew-shaded
+yew tree
+yew-treed
+Y-gun
+yield point
+yield value
+yill-caup
+Y joint
+Y level
+Y ligament
+Y moth
+yohimbe bark
+yo-ho
+yoke bone
+yoke devil
+yoke elm
+yoke-footed
+yoke method
+yoke riveter
+yoke-toed
+yo-kyoku
+yolk bag
+yolk boil
+yolk cord
+yolk duct
+yolk gland
+yolk nucleus
+yolk plate
+yolk plug
+yolk sac
+yolk stalk
+yolk yellow
+you-be-damned
+you-be-damnedness
+you-know-what
+young-bladed
+young-chinned
+young-conscienced
+young-counseled
+youngest-born
+young-eyed
+young-headed
+young lady
+young-ladydom
+young-ladyfied
+young-ladyhood
+young-ladyish
+young-ladyism
+young-ladylike
+young-ladyship
+young-looking
+young man
+young-manhood
+young-manlike
+young-manliness
+young-manly
+young-mannish
+young-mannishness
+young-manship
+young-old
+young-winged
+young woman
+young-womanhood
+young-womanish
+young-womanishness
+young-womanlike
+young-womanly
+young-womanship
+young-yeared
+youth-bold
+youth-consuming
+you-uns
+Yo-yo
+y-painted
+Y point
+y-pointing
+Y-potential
+y-rapt
+y-scalded
+Y-shaped
+y-ssed
+Y theodolite
+y tile
+Y track
+ytterbium metal
+yttrium metal
+Y tube
+yuan dollar
+yucca borer
+yucca cactus
+yucca fertilizer
+yucca moth
+yucca palm
+yucca pollenizer
+Yueh-pan
+yule block
+yule log
+yum-yum
+Yung-cheng
+y-warn
+Y winding
+zacate limon
+zanona palm
+zante fustic
+zapota gum
+Z bar
+Z chromosome
+zeal-blind
+zeal-consuming
+zeal-inflamed
+zeal-inspiring
+zeal-pretending
+zeal-quenching
+zeal-scoffing
+zeal-transported
+zeal-worthy
+zebra antelope
+zebra-back
+zebra bird
+zebra caterpillar
+zebra fish
+zebra grass
+zebra opossum
+zebra parakeet
+zebra plant
+zebra poison
+zebra shark
+zebra spider
+zebra swallowtail
+zebra-tailed
+zebra wolf
+zebrawood family
+zebu cattle
+zee bar
+zenaida dove
+Zend-avesta
+Zend-avestaic
+zenith blue
+zenith collimator
+zenith distance
+zenith point
+zenith-pole
+zenith-pole arc
+zenith sector
+zenith star
+zenith-star arc
+zenith telescope
+zenith tube
+zephr worsted
+zephyr cloth
+zephyr-fanned
+zephyr flower
+zephyr-haunted
+zephyr-kissed
+zephyr lily
+zephyr shawl
+zephyr shirting
+zephyr yarn
+zero ablaut grade
+zero algebra
+zero beat
+zero day
+zero-dimensional
+zero element
+zero fleck
+zero grade
+zero group
+zero hour
+zero-lift
+zero-lift angle
+zero magnet
+zero mark
+zero matrix
+zero method
+zero oil
+zero point
+zero post
+zero potential
+zero set
+zero stem
+zero thrust pitch
+zero tone
+zero torque pitch
+zero vector
+Zero-zero
+zeta function
+zigzag-fashion
+zigzag-lined
+zigzag-shaped
+zimocca sponge
+zinc alkyl
+zinc amide
+zinc blende
+zinc bloom
+zinc bromide
+zinc carbonate
+zinc chloride
+zinc chromate
+zinc chrome
+zinc-coated
+zinc crust
+zinc dust
+zinc engraving
+zinc-etched
+zinc etching
+zinc ethide
+zinc ethyl
+zinc fixer
+zinc flowers
+zinc gray
+zinc green
+zinc-lined
+zinc methide
+zinc methyl
+zinc ointment
+zinco-polar
+zinc orange
+zinc oxide
+zinc-roofed
+zinc-sampler
+zinc sender
+zinc spar
+zinc spinel
+zinc standard cell
+zinc sulphate
+zinc sulphide
+zinc vitriol
+zinc white
+zinc yellow
+zirconium oxide
+zircon light
+zircon-syenite
+z iron
+zone axis
+zone catalogue
+zone-confounding
+zone fire
+zone line
+zone-marked
+zone phenomenon
+zone plate
+zone system
+zone-tailed
+zone tariff
+zone time
+zoning act
+zoning commission
+zoning law
+zoning ordinance
+Zonta club
+zoot suit
+zoot-suiter
+Zouave jacket
+Z rail
+Z-shaped
+z term
+Zuben el genubi
+Zulu-kaffir
+Zu-zu
+zwitter ion
diff --git a/share/doc/IPv6/IMPLEMENTATION b/share/doc/IPv6/IMPLEMENTATION
new file mode 100644
index 0000000..9b5d8ee
--- /dev/null
+++ b/share/doc/IPv6/IMPLEMENTATION
@@ -0,0 +1,2392 @@
+ Implementation Note
+
+ KAME Project
+ http://www.kame.net/
+ $KAME: IMPLEMENTATION,v 1.216 2001/05/25 07:43:01 jinmei Exp $
+ $FreeBSD$
+
+NOTE: The document tries to describe behaviors/implementation choices
+of the latest KAME/*BSD stack. The description here may not be
+applicable to KAME-integrated *BSD releases, as we have certain amount
+of changes between them. Still, some of the content can be useful for
+KAME-integrated *BSD releases.
+
+Table of Contents
+
+ 1. IPv6
+ 1.1 Conformance
+ 1.2 Neighbor Discovery
+ 1.3 Scope Zone Index
+ 1.3.1 Kernel internal
+ 1.3.2 Interaction with API
+ 1.3.3 Interaction with users (command line)
+ 1.4 Plug and Play
+ 1.4.1 Assignment of link-local, and special addresses
+ 1.4.2 Stateless address autoconfiguration on hosts
+ 1.4.3 DHCPv6
+ 1.5 Generic tunnel interface
+ 1.6 Address Selection
+ 1.6.1 Source Address Selection
+ 1.6.2 Destination Address Ordering
+ 1.7 Jumbo Payload
+ 1.8 Loop prevention in header processing
+ 1.9 ICMPv6
+ 1.10 Applications
+ 1.11 Kernel Internals
+ 1.12 IPv4 mapped address and IPv6 wildcard socket
+ 1.12.1 KAME/BSDI3 and KAME/FreeBSD228
+ 1.12.2 KAME/FreeBSD[34]x
+ 1.12.2.1 KAME/FreeBSD[34]x, listening side
+ 1.12.2.2 KAME/FreeBSD[34]x, initiating side
+ 1.12.3 KAME/NetBSD
+ 1.12.3.1 KAME/NetBSD, listening side
+ 1.12.3.2 KAME/NetBSD, initiating side
+ 1.12.4 KAME/BSDI4
+ 1.12.4.1 KAME/BSDI4, listening side
+ 1.12.4.2 KAME/BSDI4, initiating side
+ 1.12.5 KAME/OpenBSD
+ 1.12.5.1 KAME/OpenBSD, listening side
+ 1.12.5.2 KAME/OpenBSD, initiating side
+ 1.12.6 More issues
+ 1.12.7 Interaction with SIIT translator
+ 1.13 sockaddr_storage
+ 1.14 Invalid addresses on the wire
+ 1.15 Node's required addresses
+ 1.15.1 Host case
+ 1.15.2 Router case
+ 1.16 Advanced API
+ 1.17 DNS resolver
+ 2. Network Drivers
+ 2.1 FreeBSD 2.2.x-RELEASE
+ 2.2 BSD/OS 3.x
+ 2.3 NetBSD
+ 2.4 FreeBSD 3.x-RELEASE
+ 2.5 FreeBSD 4.x-RELEASE
+ 2.6 OpenBSD 2.x
+ 2.7 BSD/OS 4.x
+ 3. Translator
+ 3.1 FAITH TCP relay translator
+ 3.2 IPv6-to-IPv4 header translator
+ 4. IPsec
+ 4.1 Policy Management
+ 4.2 Key Management
+ 4.3 AH and ESP handling
+ 4.4 IPComp handling
+ 4.5 Conformance to RFCs and IDs
+ 4.6 ECN consideration on IPsec tunnels
+ 4.7 Interoperability
+ 4.8 Operations with IPsec tunnel mode
+ 4.8.1 RFC2401 IPsec tunnel mode approach
+ 4.8.2 draft-touch-ipsec-vpn approach
+ 5. ALTQ
+ 6. Mobile IPv6
+ 6.1 KAME node as correspondent node
+ 6.2 KAME node as home agent/mobile node
+ 6.3 Old Mobile IPv6 code
+ 7. Coding style
+ 8. Policy on technology with intellectual property right restriction
+
+1. IPv6
+
+1.1 Conformance
+
+The KAME kit conforms, or tries to conform, to the latest set of IPv6
+specifications. For future reference we list some of the relevant documents
+below (NOTE: this is not a complete list - this is too hard to maintain...).
+For details please refer to specific chapter in the document, RFCs, manpages
+come with KAME, or comments in the source code.
+
+Conformance tests have been performed on past and latest KAME STABLE kit,
+at TAHI project. Results can be viewed at http://www.tahi.org/report/KAME/.
+We also attended Univ. of New Hampshire IOL tests (http://www.iol.unh.edu/)
+in the past, with our past snapshots.
+
+RFC1639: FTP Operation Over Big Address Records (FOOBAR)
+ * RFC2428 is preferred over RFC1639. ftp clients will first try RFC2428,
+ then RFC1639 if failed.
+RFC1886: DNS Extensions to support IPv6
+RFC1933: (see RFC2893)
+RFC1981: Path MTU Discovery for IPv6
+RFC2080: RIPng for IPv6
+ * KAME-supplied route6d, bgpd and hroute6d support this.
+RFC2283: Multiprotocol Extensions for BGP-4
+ * so-called "BGP4+".
+ * KAME-supplied bgpd supports this.
+RFC2292: Advanced Sockets API for IPv6
+ * see RFC3542
+RFC2362: Protocol Independent Multicast-Sparse Mode (PIM-SM)
+ * RFC2362 defines the packet formats and the protcol of PIM-SM.
+RFC2373: IPv6 Addressing Architecture
+ * KAME supports node required addresses, and conforms to the scope
+ requirement.
+RFC2374: An IPv6 Aggregatable Global Unicast Address Format
+ * KAME supports 64-bit length of Interface ID.
+RFC2375: IPv6 Multicast Address Assignments
+ * Userland applications use the well-known addresses assigned in the RFC.
+RFC2428: FTP Extensions for IPv6 and NATs
+ * RFC2428 is preferred over RFC1639. ftp clients will first try RFC2428,
+ then RFC1639 if failed.
+RFC2460: IPv6 specification
+RFC2461: Neighbor discovery for IPv6
+ * See 1.2 in this document for details.
+RFC2462: IPv6 Stateless Address Autoconfiguration
+ * See 1.4 in this document for details.
+RFC2463: ICMPv6 for IPv6 specification
+ * See 1.9 in this document for details.
+RFC2464: Transmission of IPv6 Packets over Ethernet Networks
+RFC2465: MIB for IPv6: Textual Conventions and General Group
+ * Necessary statistics are gathered by the kernel. Actual IPv6 MIB
+ support is provided as patchkit for ucd-snmp.
+RFC2466: MIB for IPv6: ICMPv6 group
+ * Necessary statistics are gathered by the kernel. Actual IPv6 MIB
+ support is provided as patchkit for ucd-snmp.
+RFC2467: Transmission of IPv6 Packets over FDDI Networks
+RFC2472: IPv6 over PPP
+RFC2492: IPv6 over ATM Networks
+ * only PVC is supported.
+RFC2497: Transmission of IPv6 packet over ARCnet Networks
+RFC2545: Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing
+RFC2553: (see RFC3493)
+RFC2671: Extension Mechanisms for DNS (EDNS0)
+ * see USAGE for how to use it.
+ * not supported on kame/freebsd4 and kame/bsdi4.
+RFC2673: Binary Labels in the Domain Name System
+ * KAME/bsdi4 supports A6, DNAME and binary label to some extent.
+ * KAME apps/bind8 repository has resolver library with partial A6, DNAME
+ and binary label support.
+RFC2675: IPv6 Jumbograms
+ * See 1.7 in this document for details.
+RFC2710: Multicast Listener Discovery for IPv6
+RFC2711: IPv6 router alert option
+RFC2732: Format for Literal IPv6 Addresses in URL's
+ * The spec is implemented in programs that handle URLs
+ (like freebsd ftpio(3) and fetch(1), or netbsd ftp(1))
+RFC2874: DNS Extensions to Support IPv6 Address Aggregation and Renumbering
+ * KAME/bsdi4 supports A6, DNAME and binary label to some extent.
+ * KAME apps/bind8 repository has resolver library with partial A6, DNAME
+ and binary label support.
+RFC2893: Transition Mechanisms for IPv6 Hosts and Routers
+ * IPv4 compatible address is not supported.
+ * automatic tunneling (4.3) is not supported.
+ * "gif" interface implements IPv[46]-over-IPv[46] tunnel in a generic way,
+ and it covers "configured tunnel" described in the spec.
+ See 1.5 in this document for details.
+RFC2894: Router renumbering for IPv6
+RFC3041: Privacy Extensions for Stateless Address Autoconfiguration in IPv6
+RFC3056: Connection of IPv6 Domains via IPv4 Clouds
+ * So-called "6to4".
+ * "stf" interface implements it. Be sure to read
+ draft-itojun-ipv6-transition-abuse-01.txt
+ below before configuring it, there can be security issues.
+RFC3142: An IPv6-to-IPv4 transport relay translator
+ * FAITH tcp relay translator (faithd) implements this. See 3.1 for more
+ details.
+RFC3152: Delegation of IP6.ARPA
+ * libinet6 resolvers contained in the KAME snaps support to use
+ the ip6.arpa domain (with the nibble format) for IPv6 reverse
+ lookups.
+RFC3484: Default Address Selection for IPv6
+ * the selection algorithm for both source and destination addresses
+ is implemented based on the RFC, though some rules are still omitted.
+RFC3493: Basic Socket Interface Extensions for IPv6
+ * IPv4 mapped address (3.7) and special behavior of IPv6 wildcard bind
+ socket (3.8) are,
+ - supported and turned on by default on KAME/FreeBSD[34]
+ and KAME/BSDI4,
+ - supported but turned off by default on KAME/NetBSD and KAME/FreeBSD5,
+ - not supported on KAME/FreeBSD228, KAME/OpenBSD and KAME/BSDI3.
+ see 1.12 in this document for details.
+ * The AI_ALL and AI_V4MAPPED flags are not supported.
+RFC3542: Advanced Sockets API for IPv6 (revised)
+ * For supported library functions/kernel APIs, see sys/netinet6/ADVAPI.
+ * Some of the updates in the draft are not implemented yet. See
+ TODO.2292bis for more details.
+RFC4007: IPv6 Scoped Address Architecture
+ * some part of the documentation (especially about the routing
+ model) is not supported yet.
+ * zone indices that contain scope types have not been supported yet.
+
+draft-ietf-ipngwg-icmp-name-lookups-09: IPv6 Name Lookups Through ICMP
+draft-ietf-ipv6-router-selection-07.txt:
+ Default Router Preferences and More-Specific Routes
+ * router-side: both router preference and specific routes are supported.
+ * host-side: only router preference is supported.
+draft-ietf-pim-sm-v2-new-02.txt
+ A revised version of RFC2362, which includes the IPv6 specific
+ packet format and protocol descriptions.
+draft-ietf-dnsext-mdns-00.txt: Multicast DNS
+ * kame/mdnsd has test implementation, which will not be built in
+ default compilation. The draft will experience a major change in the
+ near future, so don't rely upon it.
+draft-ietf-ipngwg-icmp-v3-02.txt: ICMPv6 for IPv6 specification (revised)
+ * See 1.9 in this document for details.
+draft-itojun-ipv6-tcp-to-anycast-01.txt:
+ Disconnecting TCP connection toward IPv6 anycast address
+draft-ietf-ipv6-rfc2462bis-06.txt: IPv6 Stateless Address
+ Autoconfiguration (revised)
+draft-itojun-ipv6-transition-abuse-01.txt:
+ Possible abuse against IPv6 transition technologies (expired)
+ * KAME does not implement RFC1933/2893 automatic tunnel.
+ * "stf" interface implements some address filters. Refer to stf(4)
+ for details. Since there's no way to make 6to4 interface 100% secure,
+ we do not include "stf" interface into GENERIC.v6 compilation.
+ * kame/openbsd completely disables IPv4 mapped address support.
+ * kame/netbsd makes IPv4 mapped address support off by default.
+ * See section 1.12.6 and 1.14 for more details.
+draft-itojun-ipv6-flowlabel-api-01.txt: Socket API for IPv6 flow label field
+ * no consideration is made against the use of routing headers and such.
+
+1.2 Neighbor Discovery
+
+Our implementation of Neighbor Discovery is fairly stable. Currently
+Address Resolution, Duplicated Address Detection, and Neighbor
+Unreachability Detection are supported. In the near future we will be
+adding an Unsolicited Neighbor Advertisement transmission command as
+an administration tool.
+
+Duplicated Address Detection (DAD) will be performed when an IPv6 address
+is assigned to a network interface, or the network interface is enabled
+(ifconfig up). It is documented in RFC2462 5.4.
+If DAD fails, the address will be marked "duplicated" and message will be
+generated to syslog (and usually to console). The "duplicated" mark
+can be checked with ifconfig. It is administrators' responsibility to check
+for and recover from DAD failures. We may try to improve failure recovery
+in future KAME code.
+
+A successor version of RFC2462 (called rfc2462bis) clarifies the
+behavior when DAD fails (i.e., duplicate is detected): if the
+duplicate address is a link-local address formed from an interface
+identifier based on the hardware address which is supposed to be
+uniquely assigned (e.g., EUI-64 for an Ethernet interface), IPv6
+operation on the interface should be disabled. The KAME
+implementation supports this as follows: if this type of duplicate is
+detected, the kernel marks "disabled" in the ND specific data
+structure for the interface. Every IPv6 I/O operation in the kernel
+checks this mark, and the kernel will drop packets received on or
+being sent to the "disabled" interface. Whether the IPv6 operation is
+disabled or not can be confirmed by the ndp(8) command. See the man
+page for more details.
+
+DAD procedure may not be effective on certain network interfaces/drivers.
+If a network driver needs long initialization time (with wireless network
+interfaces this situation is popular), and the driver mistakingly raises
+IFF_RUNNING before the driver becomes ready, DAD code will try to transmit
+DAD probes to not-really-ready network driver and the packet will not go out
+from the interface. In such cases, network drivers should be corrected.
+
+Some of network drivers loop multicast packets back to themselves,
+even if instructed not to do so (especially in promiscuous mode). In
+such cases DAD may fail, because the DAD engine sees inbound NS packet
+(actually from the node itself) and considers it as a sign of
+duplicate. In this case, drivers should be corrected to honor
+IFF_SIMPLEX behavior. For example, you may need to check source MAC
+address on an inbound packet, and reject it if it is from the node
+itself.
+
+Neighbor Discovery specification (RFC2461) does not talk about neighbor
+cache handling in the following cases:
+(1) when there was no neighbor cache entry, node received unsolicited
+ RS/NS/NA/redirect packet without link-layer address
+(2) neighbor cache handling on medium without link-layer address
+ (we need a neighbor cache entry for IsRouter bit)
+For (1), we implemented workaround based on discussions on IETF ipngwg mailing
+list. For more details, see the comments in the source code and email
+thread started from (IPng 7155), dated Feb 6 1999.
+
+IPv6 on-link determination rule (RFC2461) is quite different from
+assumptions in BSD IPv4 network code. To implement the behavior in
+RFC2461 section 6.3.6 (3), the kernel needs to know the default
+outgoing interface. To configure the default outgoing interface, use
+commands like "ndp -I de0" as root. Then the kernel will have a
+"default" route to the interface with the cloning "C" bit being on.
+This default route will cause to make a neighbor cache entry for every
+destination that does not match an explicit route entry.
+
+Note that we intentionally disable configuring the default interface
+by default. This is because we found it sometimes caused inconvenient
+situation while it was rarely useful in practical usage. For example,
+consider a destination that has both IPv4 and IPv6 addresses but is
+only reachable via IPv4. Since our getaddrinfo(3) prefers IPv6 by
+default, an (TCP) application using the library with PF_UNSPEC first
+tries to connect to the IPv6 address. If we turn on RFC 2461 6.3.6
+(3), we have to wait for quite a long period before the first attempt
+to make a connection fails. If we turn it off, the first attempt will
+immediately fail with EHOSTUNREACH, and then the application can try
+the next, reachable address.
+
+The notion of the default interface is also disabled when the node is
+acting as a router. The reason is that routers tend to control all
+routes stored in the kernel and the default route automatically
+installed would rather confuse the routers. Note that the spec misuse
+the word "host" and "node" in several places in Section 5.2 of RFC
+2461. We basically read the word "node" in this section as "host,"
+and thus believe the implementation policy does not break the
+specification.
+
+To avoid possible DoS attacks and infinite loops, KAME stack will accept
+only 10 options on ND packet. Therefore, if you have 20 prefix options
+attached to RA, only the first 10 prefixes will be recognized.
+If this troubles you, please contact the KAME team and/or modify
+nd6_maxndopt in sys/netinet6/nd6.c. If there are high demands we may
+provide a sysctl knob for the variable.
+
+Proxy Neighbor Advertisement support is implemented in the kernel.
+For instance, you can configure it by using the following command:
+ # ndp -s fe80::1234%ne0 0:1:2:3:4:5 proxy
+where ne0 is the interface which attaches to the same link as the
+proxy target.
+There are certain limitations, though:
+- It does not send unsolicited multicast NA on configuration. This is MAY
+ behavior in RFC2461.
+- It does not add random delay before transmission of solicited NA. This is
+ SHOULD behavior in RFC2461.
+- We cannot configure proxy NDP for off-link address. The target address for
+ proxying must be link-local address, or must be in prefixes configured to
+ node which does proxy NDP.
+- RFC2461 is unclear about if it is legal for a host to perform proxy ND.
+ We do not prohibit hosts from doing proxy ND, but there will be very limited
+ use in it.
+
+Starting mid March 2000, we support Neighbor Unreachability Detection
+(NUD) on p2p interfaces, including tunnel interfaces (gif). NUD is
+turned on by default. Before March 2000 the KAME stack did not
+perform NUD on p2p interfaces. If the change raises any
+interoperability issues, you can turn off/on NUD by per-interface
+basis. Use "ndp -i interface -nud" to turn it off. Consult ndp(8)
+for details.
+
+RFC2461 specifies upper-layer reachability confirmation hint. Whenever
+upper-layer reachability confirmation hint comes, ND process can use it
+to optimize neighbor discovery process - ND process can omit real ND exchange
+and keep the neighbor cache state in REACHABLE.
+We currently have two sources for hints: (1) setsockopt(IPV6_REACHCONF)
+defined by the RFC3542 API, and (2) hints from tcp(6)_input.
+
+It is questionable if they are really trustworthy. For example, a
+rogue userland program can use IPV6_REACHCONF to confuse the ND
+process. Neighbor cache is a system-wide information pool, and it is
+bad to allow a single process to affect others. Also, tcp(6)_input
+can be hosed by hijack attempts. It is wrong to allow hijack attempts
+to affect the ND process.
+
+Starting June 2000, the ND code has a protection mechanism against
+incorrect upper-layer reachability confirmation. The ND code counts
+subsequent upper-layer hints. If the number of hints reaches the
+maximum, the ND code will ignore further upper-layer hints and run
+real ND process to confirm reachability to the peer. sysctl
+net.inet6.icmp6.nd6_maxnudhint defines the maximum # of subsequent
+upper-layer hints to be accepted.
+(from April 2000 to June 2000, we rejected setsockopt(IPV6_REACHCONF) from
+non-root process - after a local discussion, it looks that hints are not
+that trustworthy even if they are from privileged processes)
+
+If inbound ND packets carry invalid values, the KAME kernel will
+drop these packet and increment statistics variable. See
+"netstat -sn", icmp6 section. For detailed debugging session, you can
+turn on syslog output from the kernel on errors, by turning on sysctl MIB
+net.inet6.icmp6.nd6_debug. nd6_debug can be turned on at bootstrap
+time, by defining ND6_DEBUG kernel compilation option (so you can
+debug behavior during bootstrap). nd6_debug configuration should
+only be used for test/debug purposes - for a production environment,
+nd6_debug must be set to 0. If you leave it to 1, malicious parties
+can inject broken packet and fill up /var/log partition.
+
+1.3 Scope Zone Index
+
+IPv6 uses scoped addresses. It is therefore very important to
+specify the scope zone index (link index for a link-local address, or
+site index for a site-local address) with an IPv6 address. Without a
+zone index, a scoped IPv6 address is ambiguous to the kernel, and
+the kernel would not be able to determine the outbound zone for a
+packet to the scoped address. KAME code tries to address the issue in
+several ways.
+
+The entire architecture of scoped addresses is documented in RFC4007.
+One non-trivial point of the architecture is that the link scope is
+(theoretically) larger than the interface scope. That is, two
+different interfaces can belong to a same single link. However, in a
+normal operation, we can assume that there is 1-to-1 relationship
+between links and interfaces. In other words, we can usually put
+links and interfaces in the same scope type. The current KAME
+implementation assumes the 1-to-1 relationship. In particular, we use
+interface names such as "ne1" as unique link identifiers. This would
+be much more human-readable and intuitive than numeric identifiers,
+but please keep your mind on the theoretical difference between links
+and interfaces.
+
+Site-local addresses are very vaguely defined in the specs, and both
+the specification and the KAME code need tons of improvements to
+enable its actual use. For example, it is still very unclear how we
+define a site, or how we resolve host names in a site. There is work
+underway to define behavior of routers at site border, but, we have
+almost no code for site boundary node support (neither forwarding nor
+routing) and we bet almost noone has. We recommend, at this moment,
+you to use global addresses for experiments - there are way too many
+pitfalls if you use site-local addresses.
+
+1.3.1 Kernel internal
+
+In the kernel, the link index for a link-local scope address is
+embedded into the 2nd 16bit-word (the 3rd and 4th bytes) in the IPv6
+address.
+For example, you may see something like:
+ fe80:1::200:f8ff:fe01:6317
+in the routing table and the interface address structure (struct
+in6_ifaddr). The address above is a link-local unicast address which
+belongs to a network link whose link identifier is 1 (note that it
+eqauls to the interface index by the assumption of our
+implementation). The embedded index enables us to identify IPv6
+link-local addresses over multiple links effectively and with only a
+little code change.
+
+The use of the internal format must be limited inside the kernel. In
+particular, addresses sent by an application should not contain the
+embedded index (except via some very special APIs such as routing
+sockets). Instead, the index should be specified in the sin6_scope_id
+field of a sockaddr_in6 structure. Obviously, packets sent to or
+received from must not contain the embedded index either, since the
+index is meaningful only within the sending/receiving node.
+
+In order to deal with the differences, several kernel routines are
+provided. These are available by including <netinet6/scope_var.h>.
+Typically, the following functions will be most generally used:
+
+- int sa6_embedscope(struct sockaddr_in6 *sa6, int defaultok);
+ Embed sa6->sin6_scope_id into sa6->sin6_addr. If sin6_scope_id is
+ 0, defaultok is non-0, and the default zone ID (see RFC4007) is
+ configured, the default ID will be used instead of the value of the
+ sin6_scope_id field. On success, sa6->sin6_scope_id will be reset
+ to 0.
+
+ This function returns 0 on success, or a non-0 error code otherwise.
+
+- int sa6_recoverscope(struct sockaddr_in6 *sa6);
+ Extract embedded zone ID in sa6->sin6_addr and set
+ sa6->sin6_scope_id to that ID. The embedded ID will be cleared with
+ 0.
+
+ This function returns 0 on success, or a non-0 error code otherwise.
+
+- int in6_clearscope(struct in6_addr *in6);
+ Reset the embedded zone ID in 'in6' to 0. This function never fails, and
+ returns 0 if the original address is intact or non 0 if the address is
+ modified. The return value doesn't matter in most cases; currently, the
+ only point where we care about the return value is ip6_input() for checking
+ whether the source or destination addresses of the incoming packet is in
+ the embedded form.
+
+- int in6_setscope(struct in6_addr *in6, struct ifnet *ifp,
+ u_int32_t *zoneidp);
+ Embed zone ID determined by the address scope type for 'in6' and the
+ interface 'ifp' into 'in6'. If zoneidp is non NULL, *zoneidp will
+ also have the zone ID.
+
+ This function returns 0 on success, or a non-0 error code otherwise.
+
+The typical usage of these functions is as follows:
+
+sa6_embedscope() will be used at the socket or transport layer to
+convert a sockaddr_in6 structure passed by an application into the
+kernel-internal form. In this usage, the second argument is often the
+'ip6_use_defzone' global variable.
+
+sa6_recoverscope() will also be used at the socket or transport layer
+to convert an in6_addr structure with the embedded zone ID into a
+sockaddr_in6 structure with the corresponding ID in the sin6_scope_id
+field (and without the embedded ID in sin6_addr).
+
+in6_clearscope() will be used just before sending a packet to the wire
+to remove the embedded ID. In general, this must be done at the last
+stage of an output path, since otherwise the address would lose the ID
+and could be ambiguous with regard to scope.
+
+in6_setscope() will be used when the kernel receives a packet from the
+wire to construct the kernel internal form for each address field in
+the packet (typical examples are the source and destination addresses
+of the packet). In the typical usage, the third argument 'zoneidp'
+will be NULL. A non-NULL value will be used when the validity of the
+zone ID must be checked, e.g., when forwarding a packet to another
+link (see ip6_forward() for this usage).
+
+An application, when sending a packet, is basically assumed to specify
+the appropriate scope zone of the destination address by the
+sin6_scope_id field (this might be done transparently from the
+application with getaddrinfo() and the extended textual format - see
+below), or at least the default scope zone(s) must be configured as a
+last resort. In some cases, however, an application could specify an
+ambiguous address with regard to scope, expecting it is disambiguated
+in the kernel by some other means. A typical usage is to specify the
+outgoing interface through another API, which can disambiguate the
+unspecified scope zone. Such a usage is not recommended, but the
+kernel implements some trick to deal with even this case.
+
+A rough sketch of the trick can be summarized as the following
+sequence.
+
+ sa6_embedscope(dst, ip6_use_defzone);
+ in6_selectsrc(dst, ..., &ifp, ...);
+ in6_setscope(&dst->sin6_addr, ifp, NULL);
+
+sa6_embedscope() first tries to convert sin6_scope_id (or the default
+zone ID) into the kernel-internal form. This can fail with an
+ambiguous destination, but it still tries to get the outgoing
+interface (ifp) in the attempt of determining the source address of
+the outgoing packet using in6_selectsrc(). If the interface is
+detected, and the scope zone was originally ambiguous, in6_setscope()
+can finally determine the appropriate ID with the address itself and
+the interface, and construct the kernel-internal form. See, for
+example, comments in udp6_output() for more concrete example.
+
+In any case, kernel routines except ones in netinet6/scope6.c MUST NOT
+directly refer to the embedded form. They MUST use the above
+interface functions. In particular, kernel routines MUST NOT have the
+following code fragment:
+
+ /* This is a bad practice. Don't do this */
+ if (IN6_IS_ADDR_LINKLOCAL(&sin6->sin6_addr))
+ sin6->sin6_addr.s6_addr16[1] = htons(ifp->if_index);
+
+This is bad for several reasons. First, address ambiguity is not
+specific to link-local addresses (any non-global multicast addresses
+are inherently ambiguous, and this is particularly true for
+interface-local addresses). Secondly, this is vulnerable to future
+changes of the embedded form (the embedded position may change, or the
+zone ID may not actually be the interface index). Only scope6.c
+routines should know the details.
+
+The above code fragment should thus actually be as follows:
+
+ /* This is correct. */
+ in6_setscope(&sin6->sin6_addr, ifp, NULL);
+ (and catch errors if possible and necessary)
+
+1.3.2 Interaction with API
+
+There are several candidates of API to deal with scoped addresses
+without ambiguity.
+
+The IPV6_PKTINFO ancillary data type or socket option defined in the
+advanced API (RFC2292 or RFC3542) can specify
+the outgoing interface of a packet. Similarly, the IPV6_PKTINFO or
+IPV6_RECVPKTINFO socket options tell kernel to pass the incoming
+interface to user applications.
+
+These options are enough to disambiguate scoped addresses of an
+incoming packet, because we can uniquely identify the corresponding
+zone of the scoped address(es) by the incoming interface. However,
+they are too strong for outgoing packets. For example, consider a
+multi-sited node and suppose that more than one interface of the node
+belongs to a same site. When we want to send a packet to the site,
+we can only specify one of the interfaces for the outgoing packet with
+these options; we cannot just say "send the packet to (one of the
+interfaces of) the site."
+
+Another kind of candidates is to use the sin6_scope_id member in the
+sockaddr_in6 structure, defined in RFC2553. The KAME kernel
+interprets the sin6_scope_id field properly in order to disambiguate scoped
+addresses. For example, if an application passes a sockaddr_in6
+structure that has a non-zero sin6_scope_id value to the sendto(2)
+system call, the kernel should send the packet to the appropriate zone
+according to the sin6_scope_id field. Similarly, when the source or
+the destination address of an incoming packet is a scoped one, the
+kernel should detect the correct zone identifier based on the address
+and the receiving interface, fill the identifier in the sin6_scope_id
+field of a sockaddr_in6 structure, and then pass the packet to an
+application via the recvfrom(2) system call, etc.
+
+However, the semantics of the sin6_scope_id is still vague and on the
+way to standardization. Additionally, not so many operating systems
+support the behavior above at this moment.
+
+In summary,
+- If your target system is limited to KAME based ones (i.e. BSD
+ variants and KAME snaps), use the sin6_scope_id field assuming the
+ kernel behavior described above.
+- Otherwise, (i.e. if your program should be portable on other systems
+ than BSDs)
+ + Use the advanced API to disambiguate scoped addresses of incoming
+ packets.
+ + To disambiguate scoped addresses of outgoing packets,
+ * if it is okay to just specify the outgoing interface, use the
+ advanced API. This would be the case, for example, when you
+ should only consider link-local addresses and your system
+ assumes 1-to-1 relationship between links and interfaces.
+ * otherwise, sorry but you lose. Please rush the IETF IPv6
+ community into standardizing the semantics of the sin6_scope_id
+ field.
+
+Routing daemons and configuration programs, like route6d and ifconfig,
+will need to manipulate the "embedded" zone index. These programs use
+routing sockets and ioctls (like SIOCGIFADDR_IN6) and the kernel API
+will return IPv6 addresses with the 2nd 16bit-word filled in. The
+APIs are for manipulating kernel internal structure. Programs that
+use these APIs have to be prepared about differences in kernels
+anyway.
+
+getaddrinfo(3) and getnameinfo(3) support an extended numeric IPv6
+syntax, as documented in RFC4007. You can specify the outgoing link,
+by using the name of the outgoing interface as the link, like
+"fe80::1%ne0" (again, note that we assume there is 1-to-1 relationship
+between links and interfaces.) This way you will be able to specify a
+link-local scoped address without much trouble.
+
+Other APIs like inet_pton(3) and inet_ntop(3) are inherently
+unfriendly with scoped addresses, since they are unable to annotate
+addresses with zone identifier.
+
+1.3.3 Interaction with users (command line)
+
+Most of user applications now support the extended numeric IPv6
+syntax. In this case, you can specify outgoing link, by using the name
+of the outgoing interface like "fe80::1%ne0" (sorry for the duplicated
+notice, but please recall again that we assume 1-to-1 relationship
+between links and interfaces). This is even the case for some
+management tools such as route(8) or ndp(8). For example, to install
+the IPv6 default route by hand, you can type like
+ # route add -inet6 default fe80::9876:5432:1234:abcd%ne0
+(Although we suggest you to run dynamic routing instead of static
+routes, in order to avoid configuration mistakes.)
+
+Some applications have command line options for specifying an
+appropriate zone of a scoped address (like "ping6 -I ne0 ff02::1" to
+specify the outgoing interface). However, you can't always expect such
+options. Additionally, specifying the outgoing "interface" is in
+theory an overspecification as a way to specify the outgoing "link"
+(see above). Thus, we recommend you to use the extended format
+described above. This should apply to the case where the outgoing
+interface is specified.
+
+In any case, when you specify a scoped address to the command line,
+NEVER write the embedded form (such as ff02:1::1 or fe80:2::fedc),
+which should only be used inside the kernel (see Section 1.3.1), and
+is not supposed to work.
+
+1.4 Plug and Play
+
+The KAME kit implements most of the IPv6 stateless address
+autoconfiguration in the kernel.
+Neighbor Discovery functions are implemented in the kernel as a whole.
+Router Advertisement (RA) input for hosts is implemented in the
+kernel. Router Solicitation (RS) output for endhosts, RS input
+for routers, and RA output for routers are implemented in the
+userland.
+
+1.4.1 Assignment of link-local, and special addresses
+
+IPv6 link-local address is generated from IEEE802 address (ethernet MAC
+address). Each of interface is assigned an IPv6 link-local address
+automatically, when the interface becomes up (IFF_UP). Also, direct route
+for the link-local address is added to routing table.
+
+Here is an output of netstat command:
+
+Internet6:
+Destination Gateway Flags Netif Expire
+fe80::%ed0/64 link#1 UC ed0
+fe80::%ep0/64 link#2 UC ep0
+
+Interfaces that has no IEEE802 address (pseudo interfaces like tunnel
+interfaces, or ppp interfaces) will borrow IEEE802 address from other
+interfaces, such as ethernet interfaces, whenever possible.
+If there is no IEEE802 hardware attached, last-resort pseudorandom value,
+which is from MD5(hostname), will be used as source of link-local address.
+If it is not suitable for your usage, you will need to configure the
+link-local address manually.
+
+If an interface is not capable of handling IPv6 (such as lack of multicast
+support), link-local address will not be assigned to that interface.
+See section 2 for details.
+
+Each interface joins the solicited multicast address and the
+link-local all-nodes multicast addresses (e.g. fe80::1:ff01:6317
+and ff02::1, respectively, on the link the interface is attached).
+In addition to a link-local address, the loopback address (::1) will be
+assigned to the loopback interface. Also, ::1/128 and ff01::/32 are
+automatically added to routing table, and loopback interface joins
+node-local multicast group ff01::1.
+
+1.4.2 Stateless address autoconfiguration on hosts
+
+In IPv6 specification, nodes are separated into two categories:
+routers and hosts. Routers forward packets addressed to others, hosts does
+not forward the packets. net.inet6.ip6.forwarding defines whether this
+node is a router or a host (router if it is 1, host if it is 0).
+
+It is NOT recommended to change net.inet6.ip6.forwarding while the node
+is in operation. IPv6 specification defines behavior for "host" and "router"
+quite differently, and switching from one to another can cause serious
+troubles. It is recommended to configure the variable at bootstrap time only.
+
+The first step in stateless address configuration is Duplicated Address
+Detection (DAD). See 1.2 for more detail on DAD.
+
+When a host hears Router Advertisement from the router, a host may
+autoconfigure itself by stateless address autoconfiguration. This
+behavior can be controlled by the net.inet6.ip6.accept_rtadv sysctl
+variable and a per-interface flag managed in the kernel. The latter,
+which we call "if_accept_rtadv" here, can be changed by the ndp(8)
+command (see the manpage for more details). When the sysctl variable
+is set to 1, and the flag is set, the host autoconfigures itself. By
+autoconfiguration, network address prefixes for the receiving
+interface (usually global address prefix) are added. The default
+route is also configured.
+
+Routers periodically generate Router Advertisement packets. To
+request an adjacent router to generate RA packet, a host can transmit
+Router Solicitation. To generate an RS packet at any time, use the
+"rtsol" command. The "rtsold" daemon is also available. "rtsold"
+generates Router Solicitation whenever necessary, and it works greatly
+for nomadic usage (notebooks/laptops). If one wishes to ignore Router
+Advertisements, use sysctl to set net.inet6.ip6.accept_rtadv to 0.
+Additionally, ndp(8) command can be used to control the behavior
+per-interface basis.
+
+To generate Router Advertisement from a router, use the "rtadvd" daemon.
+
+Note that the IPv6 specification assumes the following items and that
+nonconforming cases are left unspecified:
+- Only hosts will listen to router advertisements
+- Hosts have a single network interface (except loopback)
+This is therefore unwise to enable net.inet6.ip6.accept_rtadv on routers,
+or multi-interface hosts. A misconfigured node can behave strange
+(KAME code allows nonconforming configuration, for those who would like
+to do some experiments).
+
+To summarize the sysctl knob:
+ accept_rtadv forwarding role of the node
+ --- --- ---
+ 0 0 host (to be manually configured)
+ 0 1 router
+ 1 0 autoconfigured host
+ (spec assumes that hosts have a single
+ interface only, autoconfigred hosts
+ with multiple interfaces are
+ out-of-scope)
+ 1 1 invalid, or experimental
+ (out-of-scope of spec)
+
+The if_accept_rtadv flag is referred only when accept_rtadv is 1 (the
+latter two cases). The flag does not have any effects when the sysctl
+variable is 0.
+
+See 1.2 in the document for relationship between DAD and autoconfiguration.
+
+1.4.3 DHCPv6
+
+We supply a tiny DHCPv6 server/client in kame/dhcp6. However, the
+implementation is premature (for example, this does NOT implement
+address lease/release), and it is not in default compilation tree on
+some platforms. If you want to do some experiment, compile it on your
+own.
+
+DHCPv6 and autoconfiguration also needs more work. "Managed" and "Other"
+bits in RA have no special effect to stateful autoconfiguration procedure
+in DHCPv6 client program ("Managed" bit actually prevents stateless
+autoconfiguration, but no special action will be taken for DHCPv6 client).
+
+1.5 Generic tunnel interface
+
+GIF (Generic InterFace) is a pseudo interface for configured tunnel.
+Details are described in gif(4) manpage.
+Currently
+ v6 in v6
+ v6 in v4
+ v4 in v6
+ v4 in v4
+are available. Use "gifconfig" to assign physical (outer) source
+and destination address to gif interfaces.
+Configuration that uses same address family for inner and outer IP
+header (v4 in v4, or v6 in v6) is dangerous. It is very easy to
+configure interfaces and routing tables to perform infinite level
+of tunneling. Please be warned.
+
+gif can be configured to be ECN-friendly. See 4.5 for ECN-friendliness
+of tunnels, and gif(4) manpage for how to configure.
+
+If you would like to configure an IPv4-in-IPv6 tunnel with gif interface,
+read gif(4) carefully. You may need to remove IPv6 link-local address
+automatically assigned to the gif interface.
+
+1.6 Address Selection
+
+1.6.1 Source Address Selection
+
+The KAME kernel chooses the source address for an outgoing packet
+sent from a user application as follows:
+
+1. if the source address is explicitly specified via an IPV6_PKTINFO
+ ancillary data item or the socket option of that name, just use it.
+ Note that this item/option overrides the bound address of the
+ corresponding (datagram) socket.
+
+2. if the corresponding socket is bound, use the bound address.
+
+3. otherwise, the kernel first tries to find the outgoing interface of
+ the packet. If it fails, the source address selection also fails.
+ If the kernel can find an interface, choose the most appropriate
+ address based on the algorithm described in RFC3484.
+
+ The policy table used in this algorithm is stored in the kernel.
+ To install or view the policy, use the ip6addrctl(8) command. The
+ kernel does not have pre-installed policy. It is expected that the
+ default policy described in the draft should be installed at the
+ bootstrap time using this command.
+
+ This draft allows an implementation to add implementation-specific
+ rules with higher precedence than the rule "Use longest matching
+ prefix." KAME's implementation has the following additional rules
+ (that apply in the appeared order):
+
+ - prefer addresses on alive interfaces, that is, interfaces with
+ the UP flag being on. This rule is particularly useful for
+ routers, since some routing daemons stop advertising prefixes
+ (addresses) on interfaces that have become down.
+
+ - prefer addresses on "preferred" interfaces. "Preferred"
+ interfaces can be specified by the ndp(8) command. By default,
+ no interface is preferred, that is, this rule does not apply.
+ Again, this rule is particularly useful for routers, since there
+ is a convention, among router administrators, of assigning
+ "stable" addresses on a particular interface (typically a
+ loopback interface).
+
+ In any case, addresses that break the scope zone of the
+ destination, or addresses whose zone do not contain the outgoing
+ interface are never chosen.
+
+When the procedure above fails, the kernel usually returns
+EADDRNOTAVAIL to the application.
+
+In some cases, the specification explicitly requires the
+implementation to choose a particular source address. The source
+address for a Neighbor Advertisement (NA) message is an example.
+Under the spec (RFC2461 7.2.2) NA's source should be the target
+address of the corresponding NS's target. In this case we follow the
+spec rather than the above rule.
+
+If you would like to prohibit the use of deprecated address for some
+reason, configure net.inet6.ip6.use_deprecated to 0. The issue
+related to deprecated address is described in RFC2462 5.5.4 (NOTE:
+there is some debate underway in IETF ipngwg on how to use
+"deprecated" address).
+
+As documented in the source address selection document, temporary
+addresses for privacy extension are less preferred to public addresses
+by default. However, for administrators who are particularly aware of
+the privacy, there is a system-wide sysctl(3) variable
+"net.inet6.ip6.prefer_tempaddr". When the variable is set to
+non-zero, the kernel will rather prefer temporary addresses. The
+default value of this variable is 0.
+
+1.6.2 Destination Address Ordering
+
+KAME's getaddrinfo(3) supports the destination address ordering
+algorithm described in RFC3484. Getaddrinfo(3) needs to know the
+source address for each destination address and policy entries
+(described in the previous section) for the source and destination
+addresses. To get the source address, the library function opens a
+UDP socket and tries to connect(2) for the destination. To get the
+policy entry, the function issues sysctl(3).
+
+1.7 Jumbo Payload
+
+KAME supports the Jumbo Payload hop-by-hop option used to send IPv6
+packets with payloads longer than 65,535 octets. But since currently
+KAME does not support any physical interface whose MTU is more than
+65,535, such payloads can be seen only on the loopback interface(i.e.
+lo0).
+
+If you want to try jumbo payloads, you first have to reconfigure the
+kernel so that the MTU of the loopback interface is more than 65,535
+bytes; add the following to the kernel configuration file:
+ options "LARGE_LOMTU" #To test jumbo payload
+and recompile the new kernel.
+
+Then you can test jumbo payloads by the ping6 command with -b and -s
+options. The -b option must be specified to enlarge the size of the
+socket buffer and the -s option specifies the length of the packet,
+which should be more than 65,535. For example, type as follows;
+ % ping6 -b 70000 -s 68000 ::1
+
+The IPv6 specification requires that the Jumbo Payload option must not
+be used in a packet that carries a fragment header. If this condition
+is broken, an ICMPv6 Parameter Problem message must be sent to the
+sender. KAME kernel follows the specification, but you cannot usually
+see an ICMPv6 error caused by this requirement.
+
+If KAME kernel receives an IPv6 packet, it checks the frame length of
+the packet and compares it to the length specified in the payload
+length field of the IPv6 header or in the value of the Jumbo Payload
+option, if any. If the former is shorter than the latter, KAME kernel
+discards the packet and increments the statistics. You can see the
+statistics as output of netstat command with `-s -p ip6' option:
+ % netstat -s -p ip6
+ ip6:
+ (snip)
+ 1 with data size < data length
+
+So, KAME kernel does not send an ICMPv6 error unless the erroneous
+packet is an actual Jumbo Payload, that is, its packet size is more
+than 65,535 bytes. As described above, KAME kernel currently does not
+support physical interface with such a huge MTU, so it rarely returns an
+ICMPv6 error.
+
+TCP/UDP over jumbogram is not supported at this moment. This is because
+we have no medium (other than loopback) to test this. Contact us if you
+need this.
+
+IPsec does not work on jumbograms. This is due to some specification twists
+in supporting AH with jumbograms (AH header size influences payload length,
+and this makes it real hard to authenticate inbound packet with jumbo payload
+option as well as AH).
+
+There are fundamental issues in *BSD support for jumbograms. We would like to
+address those, but we need more time to finalize the task. To name a few:
+- mbuf pkthdr.len field is typed as "int" in 4.4BSD, so it cannot hold
+ jumbogram with len > 2G on 32bit architecture CPUs. If we would like to
+ support jumbogram properly, the field must be expanded to hold 4G +
+ IPv6 header + link-layer header. Therefore, it must be expanded to at least
+ int64_t (u_int32_t is NOT enough).
+- We mistakingly use "int" to hold packet length in many places. We need
+ to convert them into larger numeric type. It needs a great care, as we may
+ experience overflow during packet length computation.
+- We mistakingly check for ip6_plen field of IPv6 header for packet payload
+ length in various places. We should be checking mbuf pkthdr.len instead.
+ ip6_input() will perform sanity check on jumbo payload option on input,
+ and we can safely use mbuf pkthdr.len afterwards.
+- TCP code needs careful updates in bunch of places, of course.
+
+1.8 Loop prevention in header processing
+
+IPv6 specification allows arbitrary number of extension headers to
+be placed onto packets. If we implement IPv6 packet processing
+code in the way BSD IPv4 code is implemented, kernel stack may
+overflow due to long function call chain. KAME sys/netinet6 code
+is carefully designed to avoid kernel stack overflow. Because of
+this, KAME sys/netinet6 code defines its own protocol switch
+structure, as "struct ip6protosw" (see netinet6/ip6protosw.h).
+
+In addition to this, we restrict the number of extension headers
+(including the IPv6 header) in each incoming packet, in order to
+prevent a DoS attack that tries to send packets with a massive number
+of extension headers. The upper limit can be configured by the sysctl
+value net.inet6.ip6.hdrnestlimit. In particular, if the value is 0,
+the node will allow an arbitrary number of headers. As of writing this
+document, the default value is 50.
+
+IPv4 part (sys/netinet) remains untouched for compatibility.
+Because of this, if you receive IPsec-over-IPv4 packet with massive
+number of IPsec headers, kernel stack may blow up. IPsec-over-IPv6 is okay.
+
+1.9 ICMPv6
+
+After RFC2463 was published, IETF ipngwg has decided to disallow ICMPv6 error
+packet against ICMPv6 redirect, to prevent ICMPv6 storm on a network medium.
+KAME already implements this into the kernel.
+
+RFC2463 requires rate limitation for ICMPv6 error packets generated by a
+node, to avoid possible DoS attacks. KAME kernel implements two rate-
+limitation mechanisms, tunable via sysctl:
+- Minimum time interval between ICMPv6 error packets
+ KAME kernel will generate no more than one ICMPv6 error packet,
+ during configured time interval. net.inet6.icmp6.errratelimit
+ controls the interval (default: disabled).
+- Maximum ICMPv6 error packet-per-second
+ KAME kernel will generate no more than the configured number of
+ packets in one second. net.inet6.icmp6.errppslimit controls the
+ maximum packet-per-second value (default: 200pps)
+Basically, we need to pick values that are suitable against the bandwidth
+of link layer devices directly attached to the node. In some cases the
+default values may not fit well. We are still unsure if the default value
+is sane or not. Comments are welcome.
+
+1.10 Applications
+
+For userland programming, we support IPv6 socket API as specified in
+RFC2553/3493, RFC3542 and upcoming internet drafts.
+
+TCP/UDP over IPv6 is available and quite stable. You can enjoy "telnet",
+"ftp", "rlogin", "rsh", "ssh", etc. These applications are protocol
+independent. That is, they automatically chooses IPv4 or IPv6
+according to DNS.
+
+1.11 Kernel Internals
+
+ (*) TCP/UDP part is handled differently between operating system platforms.
+ See 1.12 for details.
+
+The current KAME has escaped from the IPv4 netinet logic. While
+ip_forward() calls ip_output(), ip6_forward() directly calls
+if_output() since routers must not divide IPv6 packets into fragments.
+
+ICMPv6 should contain the original packet as long as possible up to
+1280. UDP6/IP6 port unreach, for instance, should contain all
+extension headers and the *unchanged* UDP6 and IP6 headers.
+So, all IP6 functions except TCP6 never convert network byte
+order into host byte order, to save the original packet.
+
+tcp6_input(), udp6_input() and icmp6_input() can't assume that IP6
+header is preceding the transport headers due to extension
+headers. So, in6_cksum() was implemented to handle packets whose IP6
+header and transport header is not continuous. TCP/IP6 nor UDP/IP6
+header structure don't exist for checksum calculation.
+
+To process IP6 header, extension headers and transport headers easily,
+KAME requires network drivers to store packets in one internal mbuf or
+one or more external mbufs. A typical old driver prepares two
+internal mbufs for 100 - 208 bytes data, however, KAME's reference
+implementation stores it in one external mbuf.
+
+"netstat -s -p ip6" tells you whether or not your driver conforms
+KAME's requirement. In the following example, "cce0" violates the
+requirement. (For more information, refer to Section 2.)
+
+ Mbuf statistics:
+ 317 one mbuf
+ two or more mbuf::
+ lo0 = 8
+ cce0 = 10
+ 3282 one ext mbuf
+ 0 two or more ext mbuf
+
+Each input function calls IP6_EXTHDR_CHECK in the beginning to check
+if the region between IP6 and its header is
+continuous. IP6_EXTHDR_CHECK calls m_pullup() only if the mbuf has
+M_LOOP flag, that is, the packet comes from the loopback
+interface. m_pullup() is never called for packets coming from physical
+network interfaces.
+
+TCP6 reassembly makes use of IP6 header to store reassemble
+information. IP6 is not supposed to be just before TCP6, so
+ip6tcpreass structure has a pointer to TCP6 header. Of course, it has
+also a pointer back to mbuf to avoid m_pullup().
+
+Like TCP6, both IP and IP6 reassemble functions never call m_pullup().
+
+xxx_ctlinput() calls in_mrejoin() on PRC_IFNEWADDR. We think this is
+one of 4.4BSD implementation flaws. Since 4.4BSD keeps ia_multiaddrs
+in in_ifaddr{}, it can't use multicast feature if the interface has no
+unicast address. So, if an application joins to an interface and then
+all unicast addresses are removed from the interface, the application
+can't send/receive any multicast packets. Moreover, if a new unicast
+address is assigned to the interface, in_mrejoin() must be called.
+KAME's interfaces, however, have ALWAYS one link-local unicast
+address. These extensions have thus not been implemented in KAME.
+
+1.12 IPv4 mapped address and IPv6 wildcard socket
+
+RFC2553/3493 describes IPv4 mapped address (3.7) and special behavior
+of IPv6 wildcard bind socket (3.8). The spec allows you to:
+- Accept IPv4 connections by AF_INET6 wildcard bind socket.
+- Transmit IPv4 packet over AF_INET6 socket by using special form of
+ the address like ::ffff:10.1.1.1.
+but the spec itself is very complicated and does not specify how the
+socket layer should behave.
+Here we call the former one "listening side" and the latter one "initiating
+side", for reference purposes.
+
+Almost all KAME implementations treat tcp/udp port number space separately
+between IPv4 and IPv6. You can perform wildcard bind on both of the address
+families, on the same port.
+
+There are some OS-platform differences in KAME code, as we use tcp/udp
+code from different origin. The following table summarizes the behavior.
+
+ listening side initiating side
+ (AF_INET6 wildcard (connection to ::ffff:10.1.1.1)
+ socket gets IPv4 conn.)
+ --- ---
+KAME/BSDI3 not supported not supported
+KAME/FreeBSD228 not supported not supported
+KAME/FreeBSD3x configurable supported
+ default: enabled
+KAME/FreeBSD4x configurable supported
+ default: enabled
+KAME/NetBSD configurable supported
+ default: disabled
+KAME/BSDI4 enabled supported
+KAME/OpenBSD not supported not supported
+
+The following sections will give you more details, and how you can
+configure the behavior.
+
+Comments on listening side:
+
+It looks that RFC2553/3493 talks too little on wildcard bind issue,
+specifically on (1) port space issue, (2) failure mode, (3) relationship
+between AF_INET/INET6 wildcard bind like ordering constraint, and (4) behavior
+when conflicting socket is opened/closed. There can be several separate
+interpretation for this RFC which conform to it but behaves differently.
+So, to implement portable application you should assume nothing
+about the behavior in the kernel. Using getaddrinfo() is the safest way.
+Port number space and wildcard bind issues were discussed in detail
+on ipv6imp mailing list, in mid March 1999 and it looks that there's
+no concrete consensus (means, up to implementers). You may want to
+check the mailing list archives.
+We supply a tool called "bindtest" that explores the behavior of
+kernel bind(2). The tool will not be compiled by default.
+
+If a server application would like to accept IPv4 and IPv6 connections,
+it should use AF_INET and AF_INET6 socket (you'll need two sockets).
+Use getaddrinfo() with AI_PASSIVE into ai_flags, and socket(2) and bind(2)
+to all the addresses returned.
+By opening multiple sockets, you can accept connections onto the socket with
+proper address family. IPv4 connections will be accepted by AF_INET socket,
+and IPv6 connections will be accepted by AF_INET6 socket (NOTE: KAME/BSDI4
+kernel sometimes violate this - we will fix it).
+
+If you try to support IPv6 traffic only and would like to reject IPv4
+traffic, always check the peer address when a connection is made toward
+AF_INET6 listening socket. If the address is IPv4 mapped address, you may
+want to reject the connection. You can check the condition by using
+IN6_IS_ADDR_V4MAPPED() macro. This is one of the reasons the author of
+the section (itojun) dislikes special behavior of AF_INET6 wildcard bind.
+
+Comments on initiating side:
+
+Advise to application implementers: to implement a portable IPv6 application
+(which works on multiple IPv6 kernels), we believe that the following
+is the key to the success:
+- NEVER hardcode AF_INET nor AF_INET6.
+- Use getaddrinfo() and getnameinfo() throughout the system.
+ Never use gethostby*(), getaddrby*(), inet_*() or getipnodeby*().
+- If you would like to connect to destination, use getaddrinfo() and try
+ all the destination returned, like telnet does.
+- Some of the IPv6 stack is shipped with buggy getaddrinfo(). Ship a minimal
+ working version with your application and use that as last resort.
+
+If you would like to use AF_INET6 socket for both IPv4 and IPv6 outgoing
+connection, you will need tweaked implementation in DNS support libraries,
+as documented in RFC2553/3493 6.1. KAME libinet6 includes the tweak in
+getipnodebyname(). Note that getipnodebyname() itself is not recommended as
+it does not handle scoped IPv6 addresses at all. For IPv6 name resolution
+getaddrinfo() is the preferred API. getaddrinfo() does not implement the
+tweak.
+
+When writing applications that make outgoing connections, story goes much
+simpler if you treat AF_INET and AF_INET6 as totally separate address family.
+{set,get}sockopt issue goes simpler, DNS issue will be made simpler. We do
+not recommend you to rely upon IPv4 mapped address.
+
+1.12.1 KAME/BSDI3 and KAME/FreeBSD228
+
+The platforms do not support IPv4 mapped address at all (both listening side
+and initiating side). AF_INET6 and AF_INET sockets are totally separated.
+
+Port number space is totally separate between AF_INET and AF_INET6 sockets.
+
+It should be noted that KAME/BSDI3 and KAME/FreeBSD228 are not conformant
+to RFC2553/3493 section 3.7 and 3.8. It is due to code sharing reasons.
+
+1.12.2 KAME/FreeBSD[34]x
+
+KAME/FreeBSD3x and KAME/FreeBSD4x use shared tcp4/6 code (from
+sys/netinet/tcp*) and shared udp4/6 code (from sys/netinet/udp*).
+They use unified inpcb/in6pcb structure.
+
+1.12.2.1 KAME/FreeBSD[34]x, listening side
+
+The platform can be configured to support IPv4 mapped address/special
+AF_INET6 wildcard bind (enabled by default). There is no kernel compilation
+option to disable it. You can enable/disable the behavior with sysctl
+(per-node), or setsockopt (per-socket).
+
+Wildcard AF_INET6 socket grabs IPv4 connection if and only if the following
+conditions are satisfied:
+- there's no AF_INET socket that matches the IPv4 connection
+- the AF_INET6 socket is configured to accept IPv4 traffic, i.e.
+ getsockopt(IPV6_V6ONLY) returns 0.
+
+(XXX need checking)
+
+1.12.2.2 KAME/FreeBSD[34]x, initiating side
+
+KAME/FreeBSD3x supports outgoing connection to IPv4 mapped address
+(::ffff:10.1.1.1), if the node is configured to accept IPv4 connections
+by AF_INET6 socket.
+
+(XXX need checking)
+
+1.12.3 KAME/NetBSD
+
+KAME/NetBSD uses shared tcp4/6 code (from sys/netinet/tcp*) and shared
+udp4/6 code (from sys/netinet/udp*). The implementation is made differently
+from KAME/FreeBSD[34]x. KAME/NetBSD uses separate inpcb/in6pcb structures,
+while KAME/FreeBSD[34]x uses merged inpcb structure.
+
+It should be noted that the default configuration of KAME/NetBSD is not
+conformant to RFC2553/3493 section 3.8. It is intentionally turned off by
+default for security reasons.
+
+The platform can be configured to support IPv4 mapped address/special AF_INET6
+wildcard bind (disabled by default). Kernel behavior can be summarized as
+follows:
+- default: special support code will be compiled in, but is disabled by
+ default. It can be controlled by sysctl (net.inet6.ip6.v6only),
+ or setsockopt(IPV6_V6ONLY).
+- add "INET6_BINDV6ONLY": No special support code for AF_INET6 wildcard socket
+ will be compiled in. AF_INET6 sockets and AF_INET sockets are totally
+ separate. The behavior is similar to what described in 1.12.1.
+
+sysctl setting will affect per-socket configuration at in6pcb creation time
+only. In other words, per-socket configuration will be copied from sysctl
+configuration at in6pcb creation time. To change per-socket behavior, you
+must perform setsockopt or reopen the socket. Change in sysctl configuration
+will not change the behavior or sockets that are already opened.
+
+1.12.3.1 KAME/NetBSD, listening side
+
+Wildcard AF_INET6 socket grabs IPv4 connection if and only if the following
+conditions are satisfied:
+- there's no AF_INET socket that matches the IPv4 connection
+- the AF_INET6 socket is configured to accept IPv4 traffic, i.e.
+ getsockopt(IPV6_V6ONLY) returns 0.
+
+You cannot bind(2) with IPv4 mapped address. This is a workaround for port
+number duplicate and other twists.
+
+1.12.3.2 KAME/NetBSD, initiating side
+
+When getsockopt(IPV6_V6ONLY) is 0 for a socket, you can make an outgoing
+traffic to IPv4 destination over AF_INET6 socket, using IPv4 mapped
+address destination (::ffff:10.1.1.1).
+
+When getsockopt(IPV6_V6ONLY) is 1 for a socket, you cannot use IPv4 mapped
+address for outgoing traffic.
+
+1.12.4 KAME/BSDI4
+
+KAME/BSDI4 uses NRL-based TCP/UDP stack and inpcb source code,
+which was derived from NRL IPv6/IPsec stack. We guess it supports IPv4 mapped
+address and speical AF_INET6 wildcard bind. The implementation is, again,
+different from other KAME/*BSDs.
+
+1.12.4.1 KAME/BSDI4, listening side
+
+NRL inpcb layer supports special behavior of AF_INET6 wildcard socket.
+There is no way to disable the behavior.
+
+Wildcard AF_INET6 socket grabs IPv4 connection if and only if the following
+condition is satisfied:
+- there's no AF_INET socket that matches the IPv4 connection
+
+1.12.4.2 KAME/BSDI4, initiating side
+
+KAME/BSDi4 supports connection initiation to IPv4 mapped address
+(like ::ffff:10.1.1.1).
+
+1.12.5 KAME/OpenBSD
+
+KAME/OpenBSD uses NRL-based TCP/UDP stack and inpcb source code,
+which was derived from NRL IPv6/IPsec stack.
+
+It should be noted that KAME/OpenBSD is not conformant to RFC2553/3493 section
+3.7 and 3.8. It is intentionally omitted for security reasons.
+
+1.12.5.1 KAME/OpenBSD, listening side
+
+KAME/OpenBSD disables special behavior on AF_INET6 wildcard bind for
+security reasons (if IPv4 traffic toward AF_INET6 wildcard bind is allowed,
+access control will become much harder). KAME/BSDI4 uses NRL-based TCP/UDP
+stack as well, however, the behavior is different due to OpenBSD's security
+policy.
+
+As a result the behavior of KAME/OpenBSD is similar to KAME/BSDI3 and
+KAME/FreeBSD228 (see 1.12.1 for more detail).
+
+1.12.5.2 KAME/OpenBSD, initiating side
+
+KAME/OpenBSD does not support connection initiation to IPv4 mapped address
+(like ::ffff:10.1.1.1).
+
+1.12.6 More issues
+
+IPv4 mapped address support adds a big requirement to EVERY userland codebase.
+Every userland code should check if an AF_INET6 sockaddr contains IPv4
+mapped address or not. This adds many twists:
+
+- Access controls code becomes harder to write.
+ For example, if you would like to reject packets from 10.0.0.0/8,
+ you need to reject packets to AF_INET socket from 10.0.0.0/8,
+ and to AF_INET6 socket from ::ffff:10.0.0.0/104.
+- If a protocol on top of IPv4 is defined differently with IPv6, we need to be
+ really careful when we determine which protocol to use.
+ For example, with FTP protocol, we can not simply use sa_family to determine
+ FTP command sets. The following example is incorrect:
+ if (sa_family == AF_INET)
+ use EPSV/EPRT or PASV/PORT; /*IPv4*/
+ else if (sa_family == AF_INET6)
+ use EPSV/EPRT or LPSV/LPRT; /*IPv6*/
+ else
+ error;
+ The correct code, with consideration to IPv4 mapped address, would be:
+ if (sa_family == AF_INET)
+ use EPSV/EPRT or PASV/PORT; /*IPv4*/
+ else if (sa_family == AF_INET6 && IPv4 mapped address)
+ use EPSV/EPRT or PASV/PORT; /*IPv4 command set on AF_INET6*/
+ else if (sa_family == AF_INET6 && !IPv4 mapped address)
+ use EPSV/EPRT or LPSV/LPRT; /*IPv6*/
+ else
+ error;
+ It is too much to ask for every body to be careful like this.
+ The problem is, we are not sure if the above code fragment is perfect for
+ all situations.
+- By enabling kernel support for IPv4 mapped address (outgoing direction),
+ servers on the kernel can be hosed by IPv6 native packet that has IPv4
+ mapped address in IPv6 header source, and can generate unwanted IPv4 packets.
+ draft-itojun-ipv6-transition-abuse-01.txt, draft-cmetz-v6ops-v4mapped-api-
+ harmful-00.txt, and draft-itojun-v6ops-v4mapped-harmful-01.txt
+ has more on this scenario.
+
+Due to the above twists, some of KAME userland programs has restrictions on
+the use of IPv4 mapped addresses:
+- rshd/rlogind do not accept connections from IPv4 mapped address.
+ This is to avoid malicious use of IPv4 mapped address in IPv6 native
+ packet, to bypass source-address based authentication.
+- ftp/ftpd assume that you are on dual stack network. IPv4 mapped address
+ will be decoded in userland, and will be passed to AF_INET sockets
+ (in other words, ftp/ftpd do not support SIIT environment).
+
+1.12.7 Interaction with SIIT translator
+
+SIIT translator is specified in RFC2765. KAME node cannot become a SIIT
+translator box, nor SIIT end node (a node in SIIT cloud).
+
+To become a SIIT translator box, we need to put additional code for that.
+We do not have the code in our tree at this moment.
+
+There are multiple reasons that we are unable to become SIIT end node.
+(1) SIIT translators require end nodes in the SIIT cloud to be IPv6-only.
+Since we are unable to compile INET-less kernel, we are unable to become
+SIIT end node. (2) As presented in 1.12.6, some of our userland code assumes
+dual stack network. (3) KAME stack filters out IPv6 packets with IPv4
+mapped address in the header, to secure non-SIIT case (which is much more
+common). Effectively KAME node will reject any packets via SIIT translator
+box. See section 1.14 for more detail about the last item.
+
+There are documentation issues too - SIIT document requires very strange
+things. For example, SIIT document asks IPv6-only (meaning no IPv4 code)
+node to be able to construct IPv4 IPsec headers. If a node knows how to
+construct IPv4 IPsec headers, that is not an IPv6-only node, it is a dual-stack
+node. The requirements imposed in SIIT document contradict with the other
+part of the document itself.
+
+1.13 sockaddr_storage
+
+When RFC2553 was about to be finalized, there was discussion on how struct
+sockaddr_storage members are named. One proposal is to prepend "__" to the
+members (like "__ss_len") as they should not be touched. The other proposal
+was that don't prepend it (like "ss_len") as we need to touch those members
+directly. There was no clear consensus on it.
+
+As a result, RFC2553 defines struct sockaddr_storage as follows:
+ struct sockaddr_storage {
+ u_char __ss_len; /* address length */
+ u_char __ss_family; /* address family */
+ /* and bunch of padding */
+ };
+On the contrary, XNET draft defines as follows:
+ struct sockaddr_storage {
+ u_char ss_len; /* address length */
+ u_char ss_family; /* address family */
+ /* and bunch of padding */
+ };
+
+In December 1999, it was agreed that RFC2553bis (RFC3493) should pick the
+latter (XNET) definition.
+
+KAME kit prior to December 1999 used RFC2553 definition. KAME kit after
+December 1999 (including December) will conform to XNET definition,
+based on RFC3493 discussion.
+
+If you look at multiple IPv6 implementations, you will be able to see
+both definitions. As an userland programmer, the most portable way of
+dealing with it is to:
+(1) ensure ss_family and/or ss_len are available on the platform, by using
+ GNU autoconf,
+(2) have -Dss_family=__ss_family to unify all occurences (including header
+ file) into __ss_family, or
+(3) never touch __ss_family. cast to sockaddr * and use sa_family like:
+ struct sockaddr_storage ss;
+ family = ((struct sockaddr *)&ss)->sa_family
+
+1.14 Invalid addresses on the wire
+
+Some of IPv6 transition technologies embed IPv4 address into IPv6 address.
+These specifications themselves are fine, however, there can be certain
+set of attacks enabled by these specifications. Recent speicifcation
+documents covers up those issues, however, there are already-published RFCs
+that does not have protection against those (like using source address of
+::ffff:127.0.0.1 to bypass "reject packet from remote" filter).
+
+To name a few, these address ranges can be used to hose an IPv6 implementation,
+or bypass security controls:
+- IPv4 mapped address that embeds unspecified/multicast/loopback/broadcast
+ IPv4 address (if they are in IPv6 native packet header, they are malicious)
+ ::ffff:0.0.0.0/104 ::ffff:127.0.0.0/104
+ ::ffff:224.0.0.0/100 ::ffff:255.0.0.0/104
+- 6to4 (RFC3056) prefix generated from unspecified/multicast/loopback/
+ broadcast/private IPv4 address
+ 2002:0000::/24 2002:7f00::/24 2002:e000::/24
+ 2002:ff00::/24 2002:0a00::/24 2002:ac10::/28
+ 2002:c0a8::/32
+- IPv4 compatible address that embeds unspecified/multicast/loopback/broadcast
+ IPv4 address (if they are in IPv6 native packet header, they are malicious).
+ Note that, since KAME doe snot support RFC1933/2893 auto tunnels, KAME nodes
+ are not vulnerable to these packets.
+ ::0.0.0.0/104 ::127.0.0.0/104 ::224.0.0.0/100 ::255.0.0.0/104
+
+Also, since KAME does not support RFC1933/2893 auto tunnels, seeing IPv4
+compatible is very rare. You should take caution if you see those on the wire.
+
+If we see IPv6 packets with IPv4 mapped address (::ffff:0.0.0.0/96) in the
+header in dual-stack environment (not in SIIT environment), they indicate
+that someone is trying to inpersonate IPv4 peer. The packet should be dropped.
+
+IPv6 specifications do not talk very much about IPv6 unspecified address (::)
+in the IPv6 source address field. Clarification is in progress.
+Here are couple of comments:
+- IPv6 unspecified address can be used in IPv6 source address field, if and
+ only if we have no legal source address for the node. The legal situations
+ include, but may not be limited to, (1) MLD while no IPv6 address is assigned
+ to the node and (2) DAD.
+- If IPv6 TCP packet has IPv6 unspecified address, it is an attack attempt.
+ The form can be used as a trigger for TCP DoS attack. KAME code already
+ filters them out.
+- The following examples are seemingly illegal. It seems that there's general
+ consensus among ipngwg for those. (1) Mobile IPv6 home address option,
+ (2) offlink packets (so routers should not forward them).
+ KAME implmements (2) already.
+
+KAME code is carefully written to avoid such incidents. More specifically,
+KAME kernel will reject packets with certain source/dstination address in IPv6
+base header, or IPv6 routing header. Also, KAME default configuration file
+is written carefully, to avoid those attacks.
+
+draft-itojun-ipv6-transition-abuse-01.txt, draft-cmetz-v6ops-v4mapped-api-
+harmful-00.txt and draft-itojun-v6ops-v4mapped-harmful-01.txt has more on
+this issue.
+
+1.15 Node's required addresses
+
+RFC2373 section 2.8 talks about required addresses for an IPv6
+node. The section talks about how KAME stack manages those required
+addresses.
+
+1.15.1 Host case
+
+The following items are automatically assigned to the node (or the node will
+automatically joins the group), at bootstrap time:
+- Loopback address
+- All-nodes multicast addresses (ff01::1)
+
+The following items will be automatically handled when the interface becomes
+IFF_UP:
+- Its link-local address for each interface
+- Solicited-node multicast address for link-local addresses
+- Link-local allnodes multicast address (ff02::1)
+
+The following items need to be configured manually by ifconfig(8) or prefix(8).
+Alternatively, these can be autoconfigured by using stateless address
+autoconfiguration.
+- Assigned unicast/anycast addresses
+- Solicited-Node multicast address for assigned unicast address
+
+Users can join groups by using appropriate system calls like setsockopt(2).
+
+1.15.2 Router case
+
+In addition to the above, routers needs to handle the following items.
+
+The following items need to be configured manually by using ifconfig(8).
+o The subnet-router anycast addresses for the interfaces it is configured
+ to act as a router on (prefix::/64)
+o All other anycast addresses with which the router has been configured
+
+The router will join the following multicast group when rtadvd(8) is available
+for the interface.
+o All-Routers Multicast Addresses (ff02::2)
+
+Routing daemons will join appropriate multicast groups, as necessary,
+like ff02::9 for RIPng.
+
+Users can join groups by using appropriate system calls like setsockopt(2).
+
+1.16 Advanced API
+
+Current KAME kernel implements RFC3542 API. It also implements RFC2292 API,
+for backward compatibility purposes with *BSD-integrated codebase.
+KAME tree ships with RFC3542 headers.
+*BSD-integrated codebase implements either RFC2292, or RFC3542, API.
+see "COVERAGE" document for detailed implementation status.
+
+Here are couple of issues to mention:
+- *BSD-integrated binaries, compiled for RFC2292, will work on KAME kernel.
+ For example, OpenBSD 2.7 /sbin/rtsol will work on KAME/openbsd kernel.
+- KAME binaries, compiled using RFC3542, will not work on *BSD-integrated
+ kenrel. For example, KAME /usr/local/v6/sbin/rtsol will not work on
+ OpenBSD 2.7 kernel.
+- RFC3542 API is not compatible with RFC2292 API. RFC3542 #define symbols
+ conflict with RFC2292 symbols. Therefore, if you compile programs that
+ assume RFC2292 API, the compilation itself goes fine, however, the compiled
+ binary will not work correctly. The problem is not KAME issue, but API
+ issue. For example, Solaris 8 implements RFC3542 API. If you compile
+ RFC2292-based code on Solaris 8, the binary can behave strange.
+
+There are few (or couple of) incompatible behavior in RFC2292 binary backward
+compatibility support in KAME tree. To enumerate:
+- Type 0 routing header lacks support for strict/loose bitmap.
+ Even if we see packets with "strict" bit set, those bits will not be made
+ visible to the userland.
+ Background: RFC2292 document is based on RFC1883 IPv6, and it uses
+ strict/loose bitmap. RFC3542 document is based on RFC2460 IPv6, and it has
+ no strict/loose bitmap (it was removed from RFC2460). KAME tree obeys
+ RFC2460 IPv6, and lacks support for strict/loose bitmap.
+
+The RFC3542 documents leave some particular cases unspecified. The
+KAME implementation treats them as follows:
+- The IPV6_DONTFRAG and IPV6_RECVPATHMTU socket options for TCP
+ sockets are ignored. That is, the setsocktopt() call will succeed
+ but the specified value will have no effect.
+
+1.17 DNS resolver
+
+KAME ships with modified DNS resolver, in libinet6.a.
+libinet6.a has a comple of extensions against libc DNS resolver:
+- Can take "options insecure1" and "options insecure2" in /etc/resolv.conf,
+ which toggles RES_INSECURE[12] option flag bit.
+- EDNS0 receive buffer size notification support. It can be enabled by
+ "options edns0" in /etc/resolv.conf. See USAGE for details.
+- IPv6 transport support (queries/responses over IPv6). Most of BSD official
+ releases now has it already.
+- Partial A6 chain chasing/DNAME/bit string label support (KAME/BSDI4).
+
+
+2. Network Drivers
+
+KAME requires three items to be added into the standard drivers:
+
+(1) (freebsd[234] and bsdi[34] only) mbuf clustering requirement.
+ In this stable release, we changed MINCLSIZE into MHLEN+1 for all the
+ operating systems in order to make all the drivers behave as we expect.
+
+(2) multicast. If "ifmcstat" yields no multicast group for a
+ interface, that interface has to be patched.
+
+To avoid troubles, we suggest you to comment out the device drivers
+for unsupported/unnecessary cards, from the kernel configuration file.
+If you accidentally enable unsupported drivers, some of the userland
+tools may not work correctly (routing daemons are typical example).
+
+In the following sections, "official support" means that KAME developers
+are using that ethernet card/driver frequently.
+
+(NOTE: In the past we required all pcmcia drivers to have a call to
+in6_ifattach(). We have no such requirement any more)
+
+2.1 FreeBSD 2.2.x-RELEASE
+
+Here is a list of FreeBSD 2.2.x-RELEASE drivers and its conditions:
+
+ driver mbuf(1) multicast(2) official support?
+ --- --- --- ---
+ (Ethernet)
+ ar looks ok - -
+ cnw ok ok yes (*)
+ ed ok ok yes
+ ep ok ok yes
+ fe ok ok yes
+ sn looks ok - - (*)
+ vx looks ok - -
+ wlp ok ok - (*)
+ xl ok ok yes
+ zp ok ok -
+ (FDDI)
+ fpa looks ok ? -
+ (ATM)
+ en ok ok yes
+ (Serial)
+ lp ? - not work
+ sl ? - not work
+ sr looks ok ok - (**)
+
+You may want to add an invocation of "rtsol" in "/etc/pccard_ether",
+if you are using notebook computers and PCMCIA ethernet card.
+
+(*) These drivers are distributed with PAO (http://www.jp.freebsd.org/PAO/).
+
+(**) There was some report says that, if you make sr driver up and down and
+then up, the kernel may hang up. We have disabled frame-relay support from
+sr driver and after that this looks to be working fine. If you need
+frame-relay support to come back, please contact KAME developers.
+
+2.2 BSD/OS 3.x
+
+The following lists BSD/OS 3.x device drivers and its conditions:
+
+ driver mbuf(1) multicast(2) official support?
+ --- --- --- ---
+ (Ethernet)
+ cnw ok ok yes
+ de ok ok -
+ df ok ok -
+ eb ok ok -
+ ef ok ok yes
+ exp ok ok -
+ mz ok ok yes
+ ne ok ok yes
+ we ok ok -
+ (FDDI)
+ fpa ok ok -
+ (ATM)
+ en maybe ok -
+ (Serial)
+ ntwo ok ok yes
+ sl ? - not work
+ appp ? - not work
+
+You may want to use "@insert" directive in /etc/pccard.conf to invoke
+"rtsol" command right after dynamic insertion of PCMCIA ethernet cards.
+
+2.3 NetBSD
+
+The following table lists the network drivers we have tried so far.
+
+ driver mbuf(1) multicast(2) official support?
+ --- --- --- ---
+ (Ethernet)
+ awi pcmcia/i386 ok ok -
+ bah zbus/amiga NG(*)
+ cnw pcmcia/i386 ok ok yes
+ ep pcmcia/i386 ok ok -
+ fxp pci/i386 ok(*2) ok -
+ tlp pci/i386 ok ok -
+ le sbus/sparc ok ok yes
+ ne pci/i386 ok ok yes
+ ne pcmcia/i386 ok ok yes
+ rtk pci/i386 ok ok -
+ wi pcmcia/i386 ok ok yes
+ (ATM)
+ en pci/i386 ok ok -
+
+(*) This may need some fix, but I'm not sure what arcnet interfaces assume...
+
+2.4 FreeBSD 3.x-RELEASE
+
+Here is a list of FreeBSD 3.x-RELEASE drivers and its conditions:
+
+ driver mbuf(1) multicast(2) official support?
+ --- --- --- ---
+ (Ethernet)
+ cnw ok ok -(*)
+ ed ? ok -
+ ep ok ok -
+ fe ok ok yes
+ fxp ?(**)
+ lnc ? ok -
+ sn ? ? -(*)
+ wi ok ok yes
+ xl ? ok -
+
+(*) These drivers are distributed with PAO as PAO3
+ (http://www.jp.freebsd.org/PAO/).
+(**) there were trouble reports with multicast filter initialization.
+
+More drivers will just simply work on KAME FreeBSD 3.x-RELEASE but have not
+been checked yet.
+
+2.5 FreeBSD 4.x-RELEASE
+
+Here is a list of FreeBSD 4.x-RELEASE drivers and its conditions:
+
+ driver multicast
+ --- ---
+ (Ethernet)
+ lnc/vmware ok
+
+2.6 OpenBSD 2.x
+
+Here is a list of OpenBSD 2.x drivers and its conditions:
+
+ driver mbuf(1) multicast(2) official support?
+ --- --- --- ---
+ (Ethernet)
+ de pci/i386 ok ok yes
+ fxp pci/i386 ?(*)
+ le sbus/sparc ok ok yes
+ ne pci/i386 ok ok yes
+ ne pcmcia/i386 ok ok yes
+ wi pcmcia/i386 ok ok yes
+
+(*) There seem to be some problem in driver, with multicast filter
+configuration. This happens with certain revision of chipset on the card.
+Should be fixed by now by workaround in sys/net/if.c, but still not sure.
+
+2.7 BSD/OS 4.x
+
+The following lists BSD/OS 4.x device drivers and its conditions:
+
+ driver mbuf(1) multicast(2) official support?
+ --- --- --- ---
+ (Ethernet)
+ de ok ok yes
+ exp (*)
+
+You may want to use "@insert" directive in /etc/pccard.conf to invoke
+"rtsol" command right after dynamic insertion of PCMCIA ethernet cards.
+
+(*) exp driver has serious conflict with KAME initialization sequence.
+A workaround is committed into sys/i386/pci/if_exp.c, and should be okay by now.
+
+
+3. Translator
+
+We categorize IPv4/IPv6 translator into 4 types.
+
+Translator A --- It is used in the early stage of transition to make
+it possible to establish a connection from an IPv6 host in an IPv6
+island to an IPv4 host in the IPv4 ocean.
+
+Translator B --- It is used in the early stage of transition to make
+it possible to establish a connection from an IPv4 host in the IPv4
+ocean to an IPv6 host in an IPv6 island.
+
+Translator C --- It is used in the late stage of transition to make it
+possible to establish a connection from an IPv4 host in an IPv4 island
+to an IPv6 host in the IPv6 ocean.
+
+Translator D --- It is used in the late stage of transition to make it
+possible to establish a connection from an IPv6 host in the IPv6 ocean
+to an IPv4 host in an IPv4 island.
+
+KAME provides an TCP relay translator for category A. This is called
+"FAITH". We also provide IP header translator for category A.
+
+3.1 FAITH TCP relay translator
+
+FAITH system uses TCP relay daemon called "faithd" helped by the KAME kernel.
+FAITH will reserve an IPv6 address prefix, and relay TCP connection
+toward that prefix to IPv4 destination.
+
+For example, if the reserved IPv6 prefix is 3ffe:0501:0200:ffff::, and
+the IPv6 destination for TCP connection is 3ffe:0501:0200:ffff::163.221.202.12,
+the connection will be relayed toward IPv4 destination 163.221.202.12.
+
+ destination IPv4 node (163.221.202.12)
+ ^
+ | IPv4 tcp toward 163.221.202.12
+ FAITH-relay dual stack node
+ ^
+ | IPv6 TCP toward 3ffe:0501:0200:ffff::163.221.202.12
+ source IPv6 node
+
+faithd must be invoked on FAITH-relay dual stack node.
+
+For more details, consult kame/kame/faithd/README and RFC3142.
+
+3.2 IPv6-to-IPv4 header translator
+
+(to be written)
+
+
+4. IPsec
+
+IPsec is implemented as the following three components.
+
+(1) Policy Management
+(2) Key Management
+(3) AH, ESP and IPComp handling in kernel
+
+Note that KAME/OpenBSD does NOT include support for KAME IPsec code,
+as OpenBSD team has their home-brew IPsec stack and they have no plan
+to replace it. IPv6 support for IPsec is, therefore, lacking on KAME/OpenBSD.
+
+http://www.netbsd.org/Documentation/network/ipsec/ has more information
+including usage examples.
+
+4.1 Policy Management
+
+The kernel implements experimental policy management code. There are two ways
+to manage security policy. One is to configure per-socket policy using
+setsockopt(3). In this cases, policy configuration is described in
+ipsec_set_policy(3). The other is to configure kernel packet filter-based
+policy using PF_KEY interface, via setkey(8).
+
+The policy entry will be matched in order. The order of entries makes
+difference in behavior.
+
+4.2 Key Management
+
+The key management code implemented in this kit (sys/netkey) is a
+home-brew PFKEY v2 implementation. This conforms to RFC2367.
+
+The home-brew IKE daemon, "racoon" is included in the kit (kame/kame/racoon,
+or usr.sbin/racoon).
+Basically you'll need to run racoon as daemon, then setup a policy
+to require keys (like ping -P 'out ipsec esp/transport//use').
+The kernel will contact racoon daemon as necessary to exchange keys.
+
+In IKE spec, there's ambiguity about interpretation of "tunnel" proposal.
+For example, if we would like to propose the use of following packet:
+ IP AH ESP IP payload
+some implementation proposes it as "AH transport and ESP tunnel", since
+this is more logical from packet construction point of view. Some
+implementation proposes it as "AH tunnel and ESP tunnel".
+Racoon follows the latter route (previously it followed the former, and
+the latter interpretation seems to be popular/consensus).
+This raises real interoperability issue. We hope this to be resolved quickly.
+
+racoon does not implement byte lifetime for both phase 1 and phase 2
+(RFC2409 page 35, Life Type = kilobytes).
+
+4.3 AH and ESP handling
+
+IPsec module is implemented as "hooks" to the standard IPv4/IPv6
+processing. When sending a packet, ip{,6}_output() checks if ESP/AH
+processing is required by checking if a matching SPD (Security
+Policy Database) is found. If ESP/AH is needed,
+{esp,ah}{4,6}_output() will be called and mbuf will be updated
+accordingly. When a packet is received, {esp,ah}4_input() will be
+called based on protocol number, i.e. (*inetsw[proto])().
+{esp,ah}4_input() will decrypt/check authenticity of the packet,
+and strips off daisy-chained header and padding for ESP/AH. It is
+safe to strip off the ESP/AH header on packet reception, since we
+will never use the received packet in "as is" form.
+
+By using ESP/AH, TCP4/6 effective data segment size will be affected by
+extra daisy-chained headers inserted by ESP/AH. Our code takes care of
+the case.
+
+Basic crypto functions can be found in directory "sys/crypto". ESP/AH
+transform are listed in {esp,ah}_core.c with wrapper functions. If you
+wish to add some algorithm, add wrapper function in {esp,ah}_core.c, and
+add your crypto algorithm code into sys/crypto.
+
+Tunnel mode works basically fine, but comes with the following restrictions:
+- You cannot run routing daemon across IPsec tunnel, since we do not model
+ IPsec tunnel as pseudo interfaces.
+- Authentication model for AH tunnel must be revisited. We'll need to
+ improve the policy management engine, eventually.
+- Path MTU discovery does not work across IPv6 IPsec tunnel gateway due to
+ insufficient code.
+
+AH specificaton does not talk much about "multiple AH on a packet" case.
+We incrementally compute AH checksum, from inside to outside. Also, we
+treat inner AH to be immutable.
+For example, if we are to create the following packet:
+ IP AH1 AH2 AH3 payload
+we do it incrementally. As a result, we get crypto checksums like below:
+ AH3 has checksum against "IP AH3' payload".
+ where AH3' = AH3 with checksum field filled with 0.
+ AH2 has checksum against "IP AH2' AH3 payload".
+ AH1 has checksum against "IP AH1' AH2 AH3 payload",
+Also note that AH3 has the smallest sequence number, and AH1 has the largest
+sequence number.
+
+To avoid traffic analysis on shorter packets, ESP output logic supports
+random length padding. By setting net.inet.ipsec.esp_randpad (or
+net.inet6.ipsec6.esp_randpad) to positive value N, you can ask the kernel
+to randomly pad packets shorter than N bytes, to random length smaller than
+or equal to N. Note that N does not include ESP authentication data length.
+Also note that the random padding is not included in TCP segment
+size computation. Negative value will turn off the functionality.
+Recommeded value for N is like 128, or 256. If you use a too big number
+as N, you may experience inefficiency due to fragmented packtes.
+
+4.4 IPComp handling
+
+IPComp stands for IP payload compression protocol. This is aimed for
+payload compression, not the header compression like PPP VJ compression.
+This may be useful when you are using slow serial link (say, cell phone)
+with powerful CPU (well, recent notebook PCs are really powerful...).
+The protocol design of IPComp is very similar to IPsec, though it was
+defined separately from IPsec itself.
+
+Here are some points to be noted:
+- IPComp is treated as part of IPsec protocol suite, and SPI and
+ CPI space is unified. Spec says that there's no relationship
+ between two so they are assumed to be separate in specs.
+- IPComp association (IPCA) is kept in SAD.
+- It is possible to use well-known CPI (CPI=2 for DEFLATE for example),
+ for outbound/inbound packet, but for indexing purposes one element from
+ SPI/CPI space will be occupied anyway.
+- pfkey is modified to support IPComp. However, there's no official
+ SA type number assignment yet. Portability with other IPComp
+ stack is questionable (anyway, who else implement IPComp on UN*X?).
+- Spec says that IPComp output processing must be performed before AH/ESP
+ output processing, to achieve better compression ratio and "stir" data
+ stream before encryption. The most meaningful processing order is:
+ (1) compress payload by IPComp, (2) encrypt payload by ESP, then (3) attach
+ authentication data by AH.
+ However, with manual SPD setting, you are able to violate the ordering
+ (KAME code is too generic, maybe). Also, it is just okay to use IPComp
+ alone, without AH/ESP.
+- Though the packet size can be significantly decreased by using IPComp, no
+ special consideration is made about path MTU (spec talks nothing about MTU
+ consideration). IPComp is designed for serial links, not ethernet-like
+ medium, it seems.
+- You can change compression ratio on outbound packet, by changing
+ deflate_policy in sys/netinet6/ipcomp_core.c. You can also change outbound
+ history buffer size by changing deflate_window_out in the same source code.
+ (should it be sysctl accessible, or per-SAD configurable?)
+- Tunnel mode IPComp is not working right. KAME box can generate tunnelled
+ IPComp packet, however, cannot accept tunneled IPComp packet.
+- You can negotiate IPComp association with racoon IKE daemon.
+- KAME code does not attach Adler32 checksum to compressed data.
+ see ipsec wg mailing list discussion in Jan 2000 for details.
+
+4.5 Conformance to RFCs and IDs
+
+The IPsec code in the kernel conforms (or, tries to conform) to the
+following standards:
+ "old IPsec" specification documented in rfc182[5-9].txt
+ "new IPsec" specification documented in:
+ rfc240[1-6].txt rfc241[01].txt rfc2451.txt rfc3602.txt
+ IPComp:
+ RFC2393: IP Payload Compression Protocol (IPComp)
+IKE specifications (rfc240[7-9].txt) are implemented in userland
+as "racoon" IKE daemon.
+
+Currently supported algorithms are:
+ old IPsec AH
+ null crypto checksum (no document, just for debugging)
+ keyed MD5 with 128bit crypto checksum (rfc1828.txt)
+ keyed SHA1 with 128bit crypto checksum (no document)
+ HMAC MD5 with 128bit crypto checksum (rfc2085.txt)
+ HMAC SHA1 with 128bit crypto checksum (no document)
+ HMAC RIPEMD160 with 128bit crypto checksum (no document)
+ old IPsec ESP
+ null encryption (no document, similar to rfc2410.txt)
+ DES-CBC mode (rfc1829.txt)
+ new IPsec AH
+ null crypto checksum (no document, just for debugging)
+ keyed MD5 with 96bit crypto checksum (no document)
+ keyed SHA1 with 96bit crypto checksum (no document)
+ HMAC MD5 with 96bit crypto checksum (rfc2403.txt
+ HMAC SHA1 with 96bit crypto checksum (rfc2404.txt)
+ HMAC SHA2-256 with 96bit crypto checksum (draft-ietf-ipsec-ciph-sha-256-00.txt)
+ HMAC SHA2-384 with 96bit crypto checksum (no document)
+ HMAC SHA2-512 with 96bit crypto checksum (no document)
+ HMAC RIPEMD160 with 96bit crypto checksum (RFC2857)
+ AES XCBC MAC with 96bit crypto checksum (RFC3566)
+ new IPsec ESP
+ null encryption (rfc2410.txt)
+ DES-CBC with derived IV
+ (draft-ietf-ipsec-ciph-des-derived-01.txt, draft expired)
+ DES-CBC with explicit IV (rfc2405.txt)
+ 3DES-CBC with explicit IV (rfc2451.txt)
+ BLOWFISH CBC (rfc2451.txt)
+ CAST128 CBC (rfc2451.txt)
+ RIJNDAEL/AES CBC (rfc3602.txt)
+ AES counter mode (rfc3686.txt)
+
+ each of the above can be combined with new IPsec AH schemes for
+ ESP authentication.
+ IPComp
+ RFC2394: IP Payload Compression Using DEFLATE
+
+The following algorithms are NOT supported:
+ old IPsec AH
+ HMAC MD5 with 128bit crypto checksum + 64bit replay prevention
+ (rfc2085.txt)
+ keyed SHA1 with 160bit crypto checksum + 32bit padding (rfc1852.txt)
+
+The key/policy management API is based on the following document, with fair
+amount of extensions:
+ RFC2367: PF_KEY key management API
+
+4.6 ECN consideration on IPsec tunnels
+
+KAME IPsec implements ECN-friendly IPsec tunnel, described in
+draft-ietf-ipsec-ecn-02.txt.
+Normal IPsec tunnel is described in RFC2401. On encapsulation,
+IPv4 TOS field (or, IPv6 traffic class field) will be copied from inner
+IP header to outer IP header. On decapsulation outer IP header
+will be simply dropped. The decapsulation rule is not compatible
+with ECN, since ECN bit on the outer IP TOS/traffic class field will be
+lost.
+To make IPsec tunnel ECN-friendly, we should modify encapsulation
+and decapsulation procedure. This is described in
+draft-ietf-ipsec-ecn-02.txt, chapter 3.3.
+
+KAME IPsec tunnel implementation can give you three behaviors, by setting
+net.inet.ipsec.ecn (or net.inet6.ipsec6.ecn) to some value:
+- RFC2401: no consideration for ECN (sysctl value -1)
+- ECN forbidden (sysctl value 0)
+- ECN allowed (sysctl value 1)
+Note that the behavior is configurable in per-node manner, not per-SA manner
+(draft-ietf-ipsec-ecn-02 wants per-SA configuration, but it looks too much
+for me).
+
+The behavior is summarized as follows (see source code for more detail):
+
+ encapsulate decapsulate
+ --- ---
+RFC2401 copy all TOS bits drop TOS bits on outer
+ from inner to outer. (use inner TOS bits as is)
+
+ECN forbidden copy TOS bits except for ECN drop TOS bits on outer
+ (masked with 0xfc) from inner (use inner TOS bits as is)
+ to outer. set ECN bits to 0.
+
+ECN allowed copy TOS bits except for ECN use inner TOS bits with some
+ CE (masked with 0xfe) from change. if outer ECN CE bit
+ inner to outer. is 1, enable ECN CE bit on
+ set ECN CE bit to 0. the inner.
+
+General strategy for configuration is as follows:
+- if both IPsec tunnel endpoint are capable of ECN-friendly behavior,
+ you'd better configure both end to "ECN allowed" (sysctl value 1).
+- if the other end is very strict about TOS bit, use "RFC2401"
+ (sysctl value -1).
+- in other cases, use "ECN forbidden" (sysctl value 0).
+The default behavior is "ECN forbidden" (sysctl value 0).
+
+For more information, please refer to:
+ draft-ietf-ipsec-ecn-02.txt
+ RFC2481 (Explicit Congestion Notification)
+ KAME sys/netinet6/{ah,esp}_input.c
+
+(Thanks goes to Kenjiro Cho <kjc@csl.sony.co.jp> for detailed analysis)
+
+4.7 Interoperability
+
+IPsec, IPComp (in kernel) and IKE (in userland as "racoon") has been tested
+at several interoperability test events, and it is known to interoperate
+with many other implementations well. Also, KAME IPsec has quite wide
+coverage for IPsec crypto algorithms documented in RFC (we do not cover
+algorithms with intellectual property issues, though).
+
+Here are (some of) platforms we have tested IPsec/IKE interoperability
+in the past, no particular order. Note that both ends (KAME and
+others) may have modified their implementation, so use the following
+list just for reference purposes.
+ 6WIND, ACC, Allied-telesis, Altiga, Ashley-laurent (vpcom.com),
+ BlueSteel, CISCO IOS, Checkpoint FW-1, Compaq Tru54 UNIX
+ X5.1B-BL4, Cryptek, Data Fellows (F-Secure), Ericsson,
+ F-Secure VPN+ 5.40, Fitec, Fitel, FreeS/WAN, HITACHI, HiFn,
+ IBM AIX 5.1, III, IIJ (fujie stack), Intel Canada, Intel
+ Packet Protect, MEW NetCocoon, MGCS, Microsoft WinNT/2000/XP,
+ NAI PGPnet, NEC IX5000, NIST (linux IPsec + plutoplus),
+ NetLock, Netoctave, Netopia, Netscreen, Nokia EPOC, Nortel
+ GatewayController/CallServer 2000 (not released yet),
+ NxNetworks, OpenBSD isakmpd on OpenBSD, Oullim information
+ technologies SECUREWORKS VPN gateway 3.0, Pivotal, RSA,
+ Radguard, RapidStream, RedCreek, Routerware, SSH, SecGo
+ CryptoIP v3, Secure Computing, Soliton, Sun Solaris 8,
+ TIS/NAI Gauntret, Toshiba, Trilogy AdmitOne 2.6, Trustworks
+ TrustedClient v3.2, USAGI linux, VPNet, Yamaha RT series,
+ ZyXEL
+
+Here are (some of) platforms we have tested IPComp/IKE interoperability
+in the past, in no particular order.
+ Compaq, IRE, SSH, NetLock, FreeS/WAN, F-Secure VPN+ 5.40
+
+VPNC (vpnc.org) provides IPsec conformance tests, using KAME and OpenBSD
+IPsec/IKE implementations. Their test results are available at
+http://www.vpnc.org/conformance.html, and it may give you more idea
+about which implementation interoperates with KAME IPsec/IKE implementation.
+
+4.8 Operations with IPsec tunnel mode
+
+First of all, IPsec tunnel is a very hairy thing. It seems to do a neat thing
+like VPN configuration or secure remote accesses, however, it comes with lots
+of architectural twists.
+
+RFC2401 defines IPsec tunnel mode, within the context of IPsec. RFC2401
+defines tunnel mode packet encapsulation/decapsulation on its own, and
+does not refer other tunnelling specifications. Since RFC2401 advocates
+filter-based SPD database matches, it would be natural for us to implement
+IPsec IPsec tunnel mode as filters - not as pseudo interfaces.
+
+There are some people who are trying to separate IPsec "tunnel mode" from
+the IPsec itself. They would like to implement IPsec transport mode only,
+and combine it with tunneling pseudo devices. The prime example is found
+in draft-touch-ipsec-vpn-01.txt. However, if you really define pseudo
+interfaces separately from IPsec, IKE daemons would need to negotiate
+transport mode SAs, instead of tunnel mode SAs. Therefore, we cannot
+really mix RFC2401-based interpretation and draft-touch-ipsec-vpn-01.txt
+interpretation.
+
+The KAME stack implements can be configured in two ways. You may need
+to recompile your kernel to switch the behavior.
+- RFC2401 IPsec tunnel mode appraoch (4.8.1)
+- draft-touch-ipsec-vpn approach (4.8.2)
+ Works in all kernel configuration, but racoon(8) may not interoperate.
+
+There are pros and cons on these approaches:
+
+RFC2401 IPsec tunnel mode (filter-like) approach
+ PRO: SPD lookup fits nicely with packet filters (if you integrate them)
+ CON: cannot run routing daemons across IPsec tunnels
+ CON: it is very hard to control source address selection on originating
+ cases
+ ???: IPv6 scope zone is kept the same
+draft-touch-ipsec-vpn (transportmode + Pseudo-interface) approach
+ PRO: run routing daemons across IPsec tunnels
+ PRO: source address selection can be done normally, by looking at
+ IPsec tunnel pseudo devices
+ CON: on outbound, possibility of infinite loops if routing setup
+ is wrong
+ CON: due to differences in encap/decap logic from RFC2401, it may not
+ interoperate with very picky RFC2401 implementations
+ (those who check TOS bits, for example)
+ CON: cannot negotiate IKE with other IPsec tunnel-mode devices
+ (the other end has to implement
+ ???: IPv6 scope zone is likely to be different from the real ethernet
+ interface
+
+The recommendation is different depending on the situation you have:
+- use draft-touch-ipsec-vpn if you have the control over the other end.
+ this one is the best in terms of simplicity.
+- if the other end is normal IPsec device with RFC2401 implementation,
+ you need to use RFC2401, otherwise you won't be able to run IKE.
+- use RFC2401 approach if you just want to forward packets back and forth
+ and there's no plan to use IPsec gateway itself as an originating device.
+
+4.8.1 RFC2401 IPsec tunnel mode approach
+
+To configure your device as RFC2401 IPsec tunnel mode endpoint, you will
+use "tunnel" keyword in setkey(8) "spdadd" directives. Let us assume the
+following topology (A and B could be a network, like prefix/length):
+
+ ((((((((((((The internet))))))))))))
+ | |
+ |C (global) |D
+ your device peer's device
+ |A (private) |B
+ ==+===== VPN net ==+===== VPN net
+
+The policy configuration directive is like this. You will need manual
+SAs, or IKE daemon, for actual encryption:
+
+ # setkey -c <<EOF
+ spdadd A B any -P out ipsec esp/tunnel/C-D/use;
+ spdadd B A any -P in ipsec esp/tunnel/D-C/use;
+ ^D
+
+The inbound/outbound traffic is monitored/captured by SPD engine, which works
+just like packet filters.
+
+With this, forwarding case should work flawlessly. However, troubles arise
+when you have one of the following requirements:
+- When you originate traffic from your VPN gateway device to VPN net on the
+ other end (like B), you want your source address to be A (private side)
+ so that the traffic would be protected by the policy.
+ With this approach, however, the source address selection logic follows
+ normal routing table, and C (global side) will be picked for any outgoing
+ traffic, even if the destination is B. The resulting packet will be like
+ this:
+ IP[C -> B] payload
+ and will not match the policy (= sent in clear).
+- When you want to run routing protocols on top of the IPsec tunnel, it is
+ not possible. As there is no pseudo device that identifies the IPsec tunnel,
+ you cannot identify where the routing information came from. As a result,
+ you can't run routing daemons.
+
+4.8.2 draft-touch-ipsec-vpn approach
+
+With this approach, you will configure gif(4) tunnel interfaces, as well as
+IPsec transport mode SAs.
+
+ # gifconfig gif0 C D
+ # ifconfig gif0 A B
+ # setkey -c <<EOF
+ spdadd C D any -P out ipsec esp/transport//use;
+ spdadd D C any -P in ipsec esp/transport//use;
+ ^D
+
+Since we have a pseudo-interface "gif0", and it affects the routes and
+the source address selection logic, we can have source address A, for
+packets originated by the VPN gateway to B (and the VPN cloud).
+We can also exchange routing information over the tunnel (gif0), as the tunnel
+is represented as a pseudo interface (dynamic routes points to the
+pseudo interface).
+
+There is a big drawbacks, however; with this, you can use IKE if and only if
+the other end is using draft-touch-ipsec-vpn approach too. Since racoon(8)
+grabs phase 2 IKE proposals from the kernel SPD database, you will be
+negotiating IPsec transport-mode SAs with the other end, not tunnel-mode SAs.
+Also, since the encapsulation mechanism is different from RFC2401, you may not
+be able to interoperate with a picky RFC2401 implementations - if the other
+end checks certain outer IP header fields (like TOS), you will not be able to
+interoperate.
+
+
+5. ALTQ
+
+KAME kit includes ALTQ, which supports FreeBSD3, FreeBSD4, FreeBSD5
+NetBSD. OpenBSD has ALTQ merged into pf and its ALTQ code is not
+compatible with other platforms so that KAME's ALTQ is not used for
+OpenBSD. For BSD/OS, ALTQ does not work.
+ALTQ in KAME supports IPv6.
+(actually, ALTQ is developed on KAME repository since ALTQ 2.1 - Jan 2000)
+
+ALTQ occupies single character device number. For FreeBSD, it is officially
+allocated. For OpenBSD and NetBSD, we use the number which is not
+currently allocated (will eventually get an official number).
+The character device is enabled for i386 architecture only. To enable and
+compile ALTQ-ready kernel for other archititectures, take the following steps:
+- assume that your architecture is FOOBAA.
+- modify sys/arch/FOOBAA/FOOBAA/conf.c (or somewhere that defines cdevsw),
+ to include a line for ALTQ. look at sys/arch/i386/i386/conf.c for
+ example. The major number must be same as i386 case.
+- copy kernel configuration file (like ALTQ.v6 or GENERIC.v6) from i386,
+ and modify accordingly.
+- build a kernel.
+- before building userland, change netbsd/{lib,usr.sbin,usr.bin}/Makefile
+ (or openbsd/foobaa) so that it will visit altq-related sub directories.
+
+
+6. Mobile IPv6
+
+6.1 KAME node as correspondent node
+
+Default installation recognizes home address option (in destination
+options header). No sub-options are supported. interaction with
+IPsec, and/or 2292bis API, needs further study.
+
+6.2 KAME node as home agent/mobile node
+
+KAME kit includes Ericsson mobile-ip6 code. The integration is just started
+(in Feb 2000), and we will need some more time to integrate it better.
+
+See kame/mip6config/{QUICKSTART,README_MIP6.txt} for more details.
+
+The Ericsson code implements revision 09 of the mobile-ip6 draft. There
+are other implementations available:
+ NEC: http://www.6bone.nec.co.jp/mipv6/internal-dist/ (-13 draft)
+ SFC: http://neo.sfc.wide.ad.jp/~mip6/ (-13 draft)
+
+7. Coding style
+
+The KAME developers basically do not make a bother about coding
+style. However, there is still some agreement on the style, in order
+to make the distributed develoment smooth.
+
+- follow *BSD KNF where possible. note: there are multiple KNF standards.
+- the tab character should be 8 columns wide (tabstops are at 8, 16, 24, ...
+ column). With vi, use ":set ts=8 sw=8".
+ With GNU Emacs 20 and later, the easiest way is to use the "bsd" style of
+ cc-mode with the variable "c-basic-offset" being 8;
+ (add-hook 'c-mode-common-hook
+ (function
+ (lambda ()
+ (c-set-style "bsd")
+ (setq c-basic-offset 8) ; XXX for Emacs 20 only
+ )))
+ The "bsd" style in GNU Emacs 21 sets the variable to 8 by default,
+ so the line marked by "XXX" is not necessary if you only use GNU
+ Emacs 21.
+- each line should be within 80 characters.
+- keep a single open/close bracket in a comment such as in the following
+ line:
+ putchar('('); /* ) */
+ without this, some vi users would have a hard time to match a pair of
+ brackets. Although this type of bracket seems clumsy and is even
+ harmful for some other type of vi users and Emacs users, the
+ agreement in the KAME developers is to allow it.
+- add the following line to the head of every KAME-derived file:
+ /* (dollar)KAME(dollar) */
+ where "(dollar)" is the dollar character ($), and around "$" are tabs.
+ (this is for C. For other language, you should use its own comment
+ line.)
+ Once commited to the CVS repository, this line will contain its
+ version number (see, for example, at the top of this file). This
+ would make it easy to report a bug.
+- when creating a new file with the WIDE copyright, tap "make copyright.c" at
+ the top-level, and use copyright.c as a template. KAME RCS tag will be
+ included automatically.
+- when editting a third-party package, keep its own coding style as
+ much as possible, even if the style does not follow the items above.
+- it is recommended to always wrap an expression containing
+ bitwise operators by parentheses, especially when the expression is
+ combined with relational operators, in order to avoid unintentional
+ mismatch of operators. Thus, we should write
+ if ((a & b) == 0) /* (A) */
+ or
+ if (a & (b == 0)) /* (B) */
+ instead of
+ if (a & b == 0) /* (C) */
+ even if the programmer's intention was (C), which is equivalent to
+ (B) according to the grammar of the language C.
+ Thus, we should write a code to test if a bit-flag is set for a
+ given variable as follows:
+ if ((flag & FLAG_A) == 0) /* (D) the FLAG_A is NOT set */
+ if ((flag & FLAG_A) != 0) /* (E) the FLAG_A is set */
+ Some developers in the KAME project rather prefer the following style:
+ if (!(flag & FLAG_A)) /* (F) the FLAG_A is NOT set */
+ if ((flag & FLAG_A)) /* (G) the FLAG_A is set */
+ because it would be more intuitive in terms of the relationship
+ between the negation operator (!) and the semantics of the
+ condition. The KAME developers have discussed the style, and have
+ agreed that all the styles from (D) to (G) are valid. So, when you
+ see styles like (D) and (E) in the KAME code and feel a bit strange,
+ please just keep them. They are intentional.
+- When inserting a separate block just to define some intra-block
+ variables, add the level of indentation as if the block was in a
+ control statement such as if-else, for, or while. For example,
+ foo ()
+ {
+ int a;
+
+ {
+ int internal_a;
+ ...
+ }
+ }
+ should be used, instead of
+ foo ()
+ {
+ int a;
+
+ {
+ int internal_a;
+ ...
+ }
+ }
+- Do not use printf() or log() in the packet input path of the kernel code.
+ They can make the system vulnerable to packet flooding attacks (results in
+ /var overflow).
+- (not a style issue)
+ To disable a module that is mistakenly imported (by CVS), just
+ remove the source tree in the repository. Note, however, that the
+ removal might annoy other developers who have already checked the
+ module out, so you should announce the removal as soon as possible.
+ Also, be 100% sure not to remove other modules.
+
+When you want to contribute something to the KAME project, and if *you
+do not mind* the agreement, it would be helpful for the project to
+keep these rules. Note, however, that we would never intend to force
+you to adopt our rules. We would rather regard your own style,
+especially when you have a policy about the style.
+
+
+8. Policy on technology with intellectual property right restriction
+
+There are quite a few IETF documents/whatever which has intellectual property
+right (IPR) restriction. KAME's stance is stated below.
+
+ The goal of KAME is to provide freely redistributable, BSD-licensed,
+ implementation of Internet protocol technologies.
+ For this purpose, we implement protocols that (1) do not need license
+ contract with IPR holder, and (2) are royalty-free.
+ The reason for (1) is, even if KAME contracts with the IPR holder in
+ question, the users of KAME stack (usually implementers of some other
+ codebase) would need to make a license contract with the IPR holder.
+ It would damage the "freely redistributable" status of KAME codebase.
+
+ By doing so KAME is (implicitly) trying to advocate no-license-contract,
+ royalty-free, release of IPRs.
+
+Note however, as documented in README, we do not guarantee that KAME code
+is free of IPR infringement, you MUST check it if you are to integrate
+KAME into your product (or whatever):
+ READ CAREFULLY: Several countries have legal enforcement for
+ export/import/use of cryptographic software. Check it before playing
+ with the kit. We do not intend to be your legalease clearing house
+ (NO WARRANTY). If you intend to include KAME stack into your product,
+ you'll need to check if the licenses on each file fit your situations,
+ and/or possible intellectual property right issues.
+
+ <end of IMPLEMENTATION>
diff --git a/share/doc/IPv6/Makefile b/share/doc/IPv6/Makefile
new file mode 100644
index 0000000..62e160c
--- /dev/null
+++ b/share/doc/IPv6/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+NO_OBJ=
+FILES= IMPLEMENTATION
+FILESDIR= ${SHAREDIR}/doc/IPv6
+
+.include <bsd.prog.mk>
diff --git a/share/doc/Makefile b/share/doc/Makefile
new file mode 100644
index 0000000..61b26d7
--- /dev/null
+++ b/share/doc/Makefile
@@ -0,0 +1,16 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+SUBDIR= ${_bind9} IPv6 legal papers psd smm usd
+
+.if ${MK_BIND} != "no"
+_bind9= bind9
+.endif
+
+# Default output format for troff documents is ascii.
+# To generate postscript versions of troff documents, use:
+# make PRINTERDEVICE=ps
+
+.include <bsd.subdir.mk>
diff --git a/share/doc/bind9/Makefile b/share/doc/bind9/Makefile
new file mode 100644
index 0000000..2ff860a
--- /dev/null
+++ b/share/doc/bind9/Makefile
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+BIND_DIR= ${.CURDIR}/../../../contrib/bind9
+SRCDIR= ${BIND_DIR}/doc
+
+.PATH: ${BIND_DIR} ${SRCDIR}/arm ${SRCDIR}/misc
+
+NO_OBJ=
+
+FILESGROUPS= TOP ARM MISC
+TOP= CHANGES COPYRIGHT FAQ README README.idnkit
+TOPDIR= ${DOCDIR}/bind9
+ARM= Bv9ARM.ch01.html Bv9ARM.ch02.html Bv9ARM.ch03.html \
+ Bv9ARM.ch04.html Bv9ARM.ch05.html Bv9ARM.ch06.html \
+ Bv9ARM.ch07.html Bv9ARM.ch08.html Bv9ARM.ch09.html \
+ Bv9ARM.ch10.html Bv9ARM.html man.dig.html \
+ man.dnssec-keygen.html man.dnssec-signzone.html man.host.html \
+ man.named-checkconf.html man.named-checkzone.html \
+ man.named.html man.rndc-confgen.html man.rndc.conf.html \
+ man.rndc.html
+ARMDIR= ${TOPDIR}/arm
+MISC= dnssec format-options.pl ipv6 migration migration-4to9 \
+ options rfc-compliance roadmap sdb sort-options.pl
+MISCDIR= ${TOPDIR}/misc
+
+.include <bsd.prog.mk>
diff --git a/share/doc/legal/Makefile b/share/doc/legal/Makefile
new file mode 100644
index 0000000..bc079ec
--- /dev/null
+++ b/share/doc/legal/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+SUBDIR= intel_ipw \
+ intel_iwi \
+ intel_wpi
+
+.include <bsd.subdir.mk>
diff --git a/share/doc/legal/intel_ipw/Makefile b/share/doc/legal/intel_ipw/Makefile
new file mode 100644
index 0000000..8f4f822
--- /dev/null
+++ b/share/doc/legal/intel_ipw/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+NO_OBJ=
+FILES= ${.CURDIR}/../../../../sys/contrib/dev/ipw/LICENSE
+FILESDIR= ${SHAREDIR}/doc/legal/intel_ipw
+
+.include <bsd.prog.mk>
diff --git a/share/doc/legal/intel_iwi/Makefile b/share/doc/legal/intel_iwi/Makefile
new file mode 100644
index 0000000..8596237
--- /dev/null
+++ b/share/doc/legal/intel_iwi/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+NO_OBJ=
+FILES= ${.CURDIR}/../../../../sys/contrib/dev/iwi/LICENSE
+FILESDIR= ${SHAREDIR}/doc/legal/intel_iwi
+
+.include <bsd.prog.mk>
diff --git a/share/doc/legal/intel_wpi/Makefile b/share/doc/legal/intel_wpi/Makefile
new file mode 100644
index 0000000..81014be
--- /dev/null
+++ b/share/doc/legal/intel_wpi/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+NO_OBJ=
+FILES= ${.CURDIR}/../../../../sys/contrib/dev/wpi/LICENSE
+FILESDIR= ${SHAREDIR}/doc/legal/intel_wpi
+
+.include <bsd.prog.mk>
+
diff --git a/share/doc/papers/Makefile b/share/doc/papers/Makefile
new file mode 100644
index 0000000..866fe20
--- /dev/null
+++ b/share/doc/papers/Makefile
@@ -0,0 +1,19 @@
+# $FreeBSD$
+
+SUBDIR= beyond4.3 \
+ bufbio \
+ contents \
+ devfs \
+ diskperf \
+ fsinterface \
+ hwpmc \
+ jail \
+ kernmalloc \
+ kerntune \
+ malloc \
+ newvm \
+ relengr \
+ sysperf \
+ timecounter
+
+.include <bsd.subdir.mk>
diff --git a/share/doc/papers/beyond4.3/Makefile b/share/doc/papers/beyond4.3/Makefile
new file mode 100644
index 0000000..7d1fa49
--- /dev/null
+++ b/share/doc/papers/beyond4.3/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 5.2 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= beyond43
+SRCS= beyond43.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/beyond4.3/beyond43.ms b/share/doc/papers/beyond4.3/beyond43.ms
new file mode 100644
index 0000000..b682ffc
--- /dev/null
+++ b/share/doc/papers/beyond4.3/beyond43.ms
@@ -0,0 +1,519 @@
+.\" Copyright (c) 1989 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)beyond43.ms 5.1 (Berkeley) 6/5/90
+.\" $FreeBSD$
+.\"
+.\" *troff -ms
+.rm CM
+.sp 2
+.ce 100
+\fB\s+2Current Research by
+The Computer Systems Research Group
+of Berkeley\s-2\fP
+.ds DT "February 10, 1989
+.\" \fBDRAFT of \*(DT\fP
+.sp 2
+.nf
+Marshall Kirk McKusick
+Michael J Karels
+Keith Sklower
+Kevin Fall
+Marc Teitelbaum
+Keith Bostic
+.fi
+.sp 2
+.ce 1
+\fISummary\fP
+.ce 0
+.PP
+The release of 4.3BSD in April of 1986 addressed many of the
+performance problems and unfinished interfaces
+present in 4.2BSD [Leffler84] [McKusick85].
+The Computer Systems Research Group at Berkeley
+has now embarked on a new development phase to
+update other major components of the system, as well as to offer
+new functionality.
+There are five major ongoing projects.
+The first is to develop an OSI network protocol suite and to integrate
+existing ISO applications into Berkeley UNIX.
+The second is to develop and support an interface compliant with the
+P1003.1 POSIX standard recently approved by the IEEE.
+The third is to refine the TCP/IP networking to improve
+its performance and limit congestion on slow and/or lossy networks.
+The fourth is to provide a standard interface to file systems
+so that multiple local and remote file systems can be supported,
+much as multiple networking protocols are supported by 4.3BSD.
+The fifth is to evaluate alternate access control mechanisms and
+audit the existing security features of the system, particularly
+with respect to network services.
+Other areas of work include multi-architecture support,
+a general purpose kernel memory allocator, disk labels, and
+extensions to the 4.2BSD fast filesystem.
+.PP
+We are planning to finish implementation prototypes for each of the
+five main areas of work over the next year, and provide an informal
+test release sometime next year for interested developers.
+After incorporating feedback and refinements from the testers,
+they will appear in the next full Berkeley release, which is typically
+made about a year after the test release.
+.br
+.ne 10
+.sp 2
+.NH
+Recently Completed Projects
+.PP
+There have been several changes in the system that were included
+in the recent 4.3BSD Tahoe release.
+.NH 2
+Multi-architecture support
+.PP
+Support has been added for the DEC VAX 8600/8650, VAX 8200/8250,
+MicroVAXII and MicroVAXIII.
+.PP
+The largest change has been the incorporation of support for the first
+non-VAX processor, the CCI Power 6/32 and 6/32SX. (This addition also
+supports the
+Harris HCX-7 and HCX-9, as well as the Sperry 7000/40 and ICL machines.)
+The Power 6 version of 4.3BSD is largely based on the compilers and
+device drivers done for CCI's 4.2BSD UNIX,
+and is otherwise similar to the VAX release of 4.3BSD.
+The entire source tree, including all kernel and user-level sources,
+has been merged using a structure that will easily accommodate the addition
+of other processor families. A MIPS R2000 has been donated to us,
+making the MIPS architecture a likely candidate for inclusion into a future
+BSD release.
+.NH 2
+Kernel Memory Allocator
+.PP
+The 4.3BSD UNIX kernel used 10 different memory allocation mechanisms,
+each designed for the particular needs of the utilizing subsystem.
+These mechanisms have been replaced by a general purpose dynamic
+memory allocator that can be used by all of the kernel subsystems.
+The design of this allocator takes advantage of known memory usage
+patterns in the UNIX kernel and a hybrid strategy that is time-efficient
+for small allocations and space-efficient for large allocations.
+This allocator replaces the multiple memory allocation interfaces
+with a single easy-to-program interface,
+results in more efficient use of global memory by eliminating
+partitioned and specialized memory pools,
+and is quick enough (approximately 15 VAX instructions) that no
+performance loss is observed relative to the current implementations.
+[McKusick88].
+.NH 2
+Disk Labels
+.PP
+During the work on the CCI machine,
+it became obvious that disk geometry and filesystem layout information
+must be stored on each disk in a pack label.
+Disk labels were implemented for the CCI disks and for the most common
+types of disk controllers on the VAX.
+A utility was written to create and maintain the disk information,
+and other user-level programs that use such information now obtain
+it from the disk label.
+The use of this facility has allowed improvements in the file system's
+knowledge of irregular disk geometries such as track-to-track skew.
+.NH 2
+Fat Fast File System
+.PP
+The 4.2 fast file system [McKusick84]
+contained several statically sized structures,
+imposing limits on the number of cylinders per cylinder group,
+inodes per cylinder group,
+and number of distinguished rotational positions.
+The new ``fat'' filesystem allows these limits to be set at filesystem
+creation time.
+Old kernels will treat the new filesystems as read-only,
+and new kernels
+will accommodate both formats.
+The filesystem check facility, \fBfsck\fP, has also been modified to check
+either type.
+.br
+.ne 10
+.sp 2
+.NH
+Current UNIX Research at Berkeley
+.PP
+Since the release of 4.3BSD in mid 1986,
+we have begun work on several new major areas of research.
+Our goal is to apply leading edge research ideas into a stable
+and reliable implementation that solves current problems in
+operating systems development.
+.NH 2
+OSI network protocol development
+.PP
+The network architecture of 4.2BSD was designed to accommodate
+multiple network protocol families and address formats,
+and an implementation of the ISO OSI network protocols
+should enter into this framework without much difficulty.
+We plan to
+implement the OSI connectionless internet protocol (CLNP),
+and device drivers for X.25, 802.3, and possibly 802.5 interfaces, and
+to integrate these with an OSI transport class 4 (TP-4) implementation.
+We will also incorporate into the Berkeley Software Distribution an
+updated ISO Development Environment (ISODE)
+featuring International Standard (IS) versions of utilities.
+ISODE implements the session and presentation layers of the OSI protocol suite,
+and will include an implementation of the file transfer protocol (FTAM).
+It is also possible that an X.400 implementation now being done at
+University College, London and the University of Nottingham
+will be available for testing and distribution.
+.LP
+This implementation is comprised of four areas.
+.IP 1)
+We are updating the University of
+Wisconsin TP-4 to match GOSIP requirements.
+The University of Wisconsin developed a transport class 4
+implementation for the 4.2BSD kernel under contract to Mitre.
+This implementation must be updated to reflect the National Institute
+of Standards and Technology (NIST, formerly NBS) workshop agreements,
+GOSIP, and 4.3BSD requirements.
+We will make this TP-4 operate with an OSI IP,
+as the original implementation was built to run over the DoD IP.
+.IP 2)
+A kernel version of the OSI IP and ES-IS protocols must be produced.
+We will implement the kernel version of these protocols.
+.IP 3)
+The required device drivers need to be integrated into a BSD kernel.
+4.3BSD has existing device drivers for many Ethernet devices; future
+BSD versions may also support X.25 devices as well as token ring
+networks.
+These device drivers must be integrated
+into the kernel OSI protocol implementations.
+.IP 4)
+The existing OSINET interoperability test network is available so
+that the interoperability of the ISODE and BSD kernel protocols
+can be established through tests with several vendors.
+Testing is crucial because an openly available version of GOSIP protocols
+that does not interoperate with DEC, IBM, SUN, ICL, HIS, and other
+major vendors would be embarrassing.
+To allow testing of the integrated pieces the most desirable
+approach is to provide access to OSINET at UCB.
+A second approach is to do the interoperability testing at
+the site of an existing OSINET member, such as the NBS.
+.NH 2
+Compliance with POSIX 1003
+.PP
+Berkeley became involved several months ago in the development
+of the IEEE POSIX P1003.1 system interface standard.
+Since then, we have been participating in the working groups
+of P1003.2 (shell and application utility interface),
+P1003.6 (security), P1003.7 (system administration), and P1003.8
+(networking).
+.PP
+The IEEE published the POSIX P1003.1 standard in late 1988.
+POSIX related changes to the BSD system have included a new terminal
+driver, support for POSIX sessions and job control, expanded signal
+functionality, restructured directory access routines, and new set-user
+and set-group id facilities.
+We currently have a prototype implementation of the
+POSIX driver with extensions to provide binary compatibility with
+applications developed for the old Berkeley terminal driver.
+We also have a prototype implementation of the 4.2BSD-based POSIX
+job control facility.
+.PP
+The P1003.2 draft is currently being voted on by the IEEE
+P1003.2 balloting group.
+Berkeley is particularly interested in the results of this standard,
+as it will profoundly influence the user environment.
+The other groups are in comparatively early phases, with drafts
+coming to ballot sometime in the 90's.
+Berkeley will continue to participate in these groups, and
+move in the near future toward a P1003.1 and P1003.2 compliant
+system.
+We have many of the utilities outlined in the current P1003.2 draft
+already implemented, and have other parties willing to contribute
+additional implementations.
+.NH 2
+Improvements to the TCP/IP Networking Protocols
+.PP
+The Internet and the Berkeley collection of local-area networks
+have both grown at high rates in the last year.
+The Bay Area Regional Research Network (BARRNet),
+connecting several UC campuses, Stanford and NASA-Ames
+has recently become operational, increasing the complexity
+of the network connectivity.
+Both Internet and local routing algorithms are showing the strain
+of continued growth.
+We have made several changes in the local routing algorithm
+to keep accommodating the current topology,
+and are participating in the development of new routing algorithms
+and standard protocols.
+.PP
+Recent work in collaboration with Van Jacobson of the Lawrence Berkeley
+Laboratory has led to the design and implementation of several new algorithms
+for TCP that improve throughput on both local and long-haul networks
+while reducing unnecessary retransmission.
+The improvement is especially striking when connections must traverse
+slow and/or lossy networks.
+The new algorithms include ``slow-start,''
+a technique for opening the TCP flow control window slowly
+and using the returning stream of acknowledgements as a clock
+to drive the connection at the highest speed tolerated by the intervening
+network.
+A modification of this technique allows the sender to dynamically modify
+the send window size to adjust to changing network conditions.
+In addition, the round-trip timer has been modified to estimate the variance
+in round-trip time, thus allowing earlier retransmission of lost packets
+with less spurious retransmission due to increasing network delay.
+Along with a scheme proposed by Phil Karn of Bellcore,
+these changes reduce unnecessary retransmission over difficult paths
+such as Satnet by nearly two orders of magnitude
+while improving throughput dramatically.
+.PP
+The current TCP implementation is now being readied
+for more widespread distribution via the network and as a
+standard Berkeley distribution unencumbered by any commercial licensing.
+We are continuing to refine the TCP and IP implementations
+using the ARPANET, BARRNet, the NSF network
+and local campus nets as testbeds.
+In addition, we are incorporating applicable algorithms from this work
+into the TP-4 protocol implementation.
+.NH 2
+Toward a Compatible File System Interface
+.PP
+The most critical shortcoming of the 4.3BSD UNIX system was in the
+area of distributed file systems.
+As with networking protocols,
+there is no single distributed file system
+that provides sufficient speed and functionality for all problems.
+It is frequently necessary to support several different remote
+file system protocols, just as it is necessary to run several
+different network protocols.
+.PP
+As network or remote file systems have been implemented for UNIX,
+several stylized interfaces between the file system implementation
+and the rest of the kernel have been developed.
+Among these are Sun Microsystems' Virtual File System interface (VFS)
+using \fBvnodes\fP [Sandburg85] [Kleiman86],
+Digital Equipment's Generic File System (GFS) architecture [Rodriguez86],
+AT&T's File System Switch (FSS) [Rifkin86],
+the LOCUS distributed file system [Walker85],
+and Masscomp's extended file system [Cole85].
+Other remote file systems have been implemented in research or
+university groups for internal use,
+notably the network file system in the Eighth Edition UNIX
+system [Weinberger84] and two different file systems used at Carnegie Mellon
+University [Satyanarayanan85].
+Numerous other remote file access methods have been devised for use
+within individual UNIX processes,
+many of them by modifications to the C I/O library
+similar to those in the Newcastle Connection [Brownbridge82].
+.PP
+Each design attempts to isolate file system-dependent details
+below a generic interface and to provide a framework within which
+new file systems may be incorporated.
+However, each of these interfaces is different from
+and incompatible with the others.
+Each addresses somewhat different design goals,
+having been based on a different version of UNIX,
+having targeted a different set of file systems with varying characteristics,
+and having selected a different set of file system primitive operations.
+.PP
+Our effort in this area is aimed at providing a common framework to
+support these different distributed file systems simultaneously rather than to
+simply implement yet another protocol.
+This requires a detailed study of the existing protocols,
+and discussion with their implementors to determine whether
+they could modify their implementation to fit within our proposed
+framework. We have studied the various file system interfaces to determine
+their generality, completeness, robustness, efficiency, and aesthetics
+and are currently working on a file system interface
+that we believe includes the best features of
+each of the existing implementations.
+This work and the rationale underlying its development
+have been presented to major software vendors as an early step
+toward convergence on a standard compatible file system interface.
+Briefly, the proposal adopts the 4.3BSD calling convention for file
+name lookup but otherwise is closely related to Sun's VFS
+and DEC's GFS. [Karels86].
+.NH 2
+System Security
+.PP
+The recent invasion of the DARPA Internet by a quickly reproducing ``worm''
+highlighted the need for a thorough review of the access
+safeguards built into the system.
+Until now, we have taken a passive approach to dealing with
+weaknesses in the system access mechanisms, rather than actively
+searching for possible weaknesses.
+When we are notified of a problem or loophole in a system utility
+by one of our users,
+we have a well defined procedure for fixing the problem and
+expeditiously disseminating the fix to the BSD mailing list.
+This procedure has proven itself to be effective in
+solving known problems as they arise
+(witness its success in handling the recent worm).
+However, we feel that it would be useful to take a more active
+role in identifying problems before they are reported (or exploited).
+We will make a complete audit of the system
+utilities and network servers to find unintended system access mechanisms.
+.PP
+As a part of the work to make the system more resistant to attack
+from local users or via the network, it will be necessary to produce
+additional documentation on the configuration and operation of the system.
+This documentation will cover such topics as file and directory ownership
+and access, network and server configuration,
+and control of privileged operations such as file system backups.
+.PP
+We are investigating the addition of access control lists (ACLs) for
+filesystem objects.
+ACLs provide a much finer granularity of control over file access permissions
+than the current
+discretionary access control mechanism (mode bits).
+Furthermore, they are necessary
+in environments where C2 level security or better, as defined in the DoD
+TCSEC [DoD83], is required.
+The POSIX P1003.6 security group has made notable progress in determining
+how an ACL mechanism should work, and several vendors have implemented
+ACLs for their commercial systems.
+Berkeley will investigate the existing implementations and determine
+how to best integrate ACLs with the existing mechanism.
+.PP
+A major shortcoming of the present system is that authentication
+over the network is based solely on the privileged port mechanism
+between trusting hosts and users.
+Although privileged ports can only be created by processes running as root
+on a UNIX system,
+such processes are easy for a workstation user to obtain;
+they simply reboot their workstation in single user mode.
+Thus, a better authentication mechanism is needed.
+At present, we believe that the MIT Kerberos authentication
+server [Steiner88] provides the best solution to this problem.
+We propose to investigate Kerberos further as well as other
+authentication mechanisms and then to integrate
+the best one into Berkeley UNIX.
+Part of this integration would be the addition of the
+authentication mechanism into utilities such as
+telnet, login, remote shell, etc.
+We will add support for telnet (eventually replacing rlogin),
+the X window system, and the mail system within an authentication
+domain (a Kerberos \fIrealm\fP).
+We hope to replace the existing password authentication on each host
+with the network authentication system.
+.NH
+References
+.sp
+.IP Brownbridge82
+Brownbridge, D.R., L.F. Marshall, B. Randell,
+``The Newcastle Connection, or UNIXes of the World Unite!,''
+\fISoftware\- Practice and Experience\fP, Vol. 12, pp. 1147-1162, 1982.
+.sp
+.IP Cole85
+.br
+Cole, C.T., P.B. Flinn, A.B. Atlas,
+``An Implementation of an Extended File System for UNIX,''
+\fIUsenix Conference Proceedings\fP,
+pp. 131-150, June, 1985.
+.sp
+.IP DoD83
+.br
+Department of Defense,
+``Trusted Computer System Evaluation Criteria,''
+\fICSC-STD-001-83\fP,
+DoD Computer Security Center, August, 1983.
+.sp
+.IP Karels86
+Karels, M., M. McKusick,
+``Towards a Compatible File System Interface,''
+\fIProceedings of the European UNIX Users Group Meeting\fP,
+Manchester, England, pp. 481-496, September 1986.
+.sp
+.IP Kleiman86
+Kleiman, S.,
+``Vnodes: An Architecture for Multiple File System Types in Sun UNIX,''
+\fIUsenix Conference Proceedings\fP,
+pp. 238-247, June, 1986.
+.sp
+.IP Leffler84
+Leffler, S., M.K. McKusick, M. Karels,
+``Measuring and Improving the Performance of 4.2BSD,''
+\fIUsenix Conference Proceedings\fP, pp. 237-252, June, 1984.
+.sp
+.IP McKusick84
+McKusick, M.K., W. Joy, S. Leffler, R. Fabry,
+``A Fast File System for UNIX'',
+\fIACM Transactions on Computer Systems 2\fP, 3.
+pp 181-197, August 1984.
+.sp
+.IP McKusick85
+McKusick, M.K., M. Karels, S. Leffler,
+``Performance Improvements and Functional Enhancements in 4.3BSD,''
+\fIUsenix Conference Proceedings\fP, pp. 519-531, June, 1985.
+.sp
+.IP McKusick86
+McKusick, M.K., M. Karels,
+``A New Virtual Memory Implementation for Berkeley UNIX,''
+\fIProceedings of the European UNIX Users Group Meeting\fP,
+Manchester, England, pp. 451-460, September 1986.
+.sp
+.IP McKusick88
+McKusick, M.K., M. Karels,
+``Design of a General Purpose Memory Allocator for the 4.3BSD UNIX Kernel,''
+\fIUsenix Conference Proceedings\fP,
+pp. 295-303, June, 1988.
+.sp
+.IP Rifkin86
+Rifkin, A.P., M.P. Forbes, R.L. Hamilton, M. Sabrio, S. Shah, K. Yueh,
+``RFS Architectural Overview,'' \fIUsenix Conference Proceedings\fP,
+pp. 248-259, June, 1986.
+.sp
+.IP Rodriguez86
+Rodriguez, R., M. Koehler, R. Hyde,
+``The Generic File System,''
+\fIUsenix Conference Proceedings\fP,
+pp. 260-269, June, 1986.
+.sp
+.IP Sandberg85
+Sandberg, R., D. Goldberg, S. Kleiman, D. Walsh, B. Lyon,
+``Design and Implementation of the Sun Network File System,''
+\fIUsenix Conference Proceedings\fP,
+pp. 119-130, June, 1985.
+.sp
+.IP Satyanarayanan85
+Satyanarayanan, M., \fIet al.\fP,
+``The ITC Distributed File System: Principles and Design,''
+\fIProc. 10th Symposium on Operating Systems Principles\fP, pp. 35-50,
+ACM, December, 1985.
+.sp
+.IP Steiner88
+Steiner, J., C. Newman, J. Schiller,
+``\fIKerberos:\fP An Authentication Service for Open Network Systems,''
+\fIUsenix Conference Proceedings\fP, pp. 191-202, February, 1988.
+.sp
+.IP Walker85
+Walker, B.J. and S.H. Kiser, ``The LOCUS Distributed File System,''
+\fIThe LOCUS Distributed System Architecture\fP,
+G.J. Popek and B.J. Walker, ed., The MIT Press, Cambridge, MA, 1985.
+.sp
+.IP Weinberger84
+Weinberger, P.J., ``The Version 8 Network File System,''
+\fIUsenix Conference presentation\fP,
+June, 1984.
diff --git a/share/doc/papers/bufbio/Makefile b/share/doc/papers/bufbio/Makefile
new file mode 100644
index 0000000..9bdd487
--- /dev/null
+++ b/share/doc/papers/bufbio/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+VOLUME= papers
+DOC= bio
+SRCS= bio.ms-patched
+EXTRA= bufsize.eps
+MACROS= -ms
+USE_PIC=
+CLEANFILES= bio.ms-patched
+
+bio.ms-patched: bio.ms
+ sed "s;bufsize\.eps;${.CURDIR}/&;" ${.ALLSRC} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/bufbio/bio.ms b/share/doc/papers/bufbio/bio.ms
new file mode 100644
index 0000000..123f8e7
--- /dev/null
+++ b/share/doc/papers/bufbio/bio.ms
@@ -0,0 +1,830 @@
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.if n .ftr C R
+.nr PI 2n
+.TL
+The case for struct bio
+.br
+- or -
+.br
+A road map for a stackable BIO subsystem in FreeBSD
+.AU
+Poul-Henning Kamp <phk@FreeBSD.org>
+.AI
+The FreeBSD Project
+.AB
+Historically, the only translation performed on I/O requests after
+they they left the file-system layer were logical sub disk implementation
+done in the device driver. No universal standard for how sub disks are
+configured and implemented exists, in fact pretty much every single platform
+and operating system have done it their own way. As FreeBSD migrates to
+other platforms it needs to understand these local conventions to be
+able to co-exist with other operating systems on the same disk.
+.PP
+Recently a number of technologies like RAID have expanded the
+concept of "a disk" a fair bit and while these technologies initially
+were implemented in separate hardware they increasingly migrate into
+the operating systems as standard functionality.
+.PP
+Both of these factors indicate the need for a structured approach to
+systematic "geometry manipulation" facilities in FreeBSD.
+.PP
+This paper contains the road-map for a stackable "BIO" system in
+FreeBSD, which will support these facilities.
+.AE
+.NH
+The miseducation of \fCstruct buf\fP.
+.PP
+To fully appreciate the topic, I include a little historic overview
+of struct buf, it is a most enlightening case of not exactly bit-rot
+but more appropriately design-rot.
+.PP
+In the beginning, which for this purpose extends until virtual
+memory is was introduced into UNIX, all disk I/O were done from or
+to a struct buf. In the 6th edition sources, as printed in Lions
+Book, struct buf looks like this:
+.DS
+.ft C
+.ps -1
+struct buf
+{
+ int b_flags; /* see defines below */
+ struct buf *b_forw; /* headed by devtab of b_dev */
+ struct buf *b_back; /* ' */
+ struct buf *av_forw; /* position on free list, */
+ struct buf *av_back; /* if not BUSY*/
+ int b_dev; /* major+minor device name */
+ int b_wcount; /* transfer count (usu. words) */
+ char *b_addr; /* low order core address */
+ char *b_xmem; /* high order core address */
+ char *b_blkno; /* block # on device */
+ char b_error; /* returned after I/O */
+ char *b_resid; /* words not transferred after
+ error */
+} buf[NBUF];
+.ps +1
+.ft P
+.DE
+.PP
+At this point in time, struct buf had only two functions:
+To act as a cache
+and to transport I/O operations to device drivers. For the purpose of
+this document, the cache functionality is uninteresting and will be
+ignored.
+.PP
+The I/O operations functionality consists of three parts:
+.IP "" 5n
+\(bu Where in Ram/Core is the data located (b_addr, b_xmem, b_wcount).
+.IP
+\(bu Where on disk is the data located (b_dev, b_blkno)
+.IP
+\(bu Request and result information (b_flags, b_error, b_resid)
+.PP
+In addition to this, the av_forw and av_back elements are
+used by the disk device drivers to put requests on a linked list.
+All in all the majority of struct buf is involved with the I/O
+aspect and only a few fields relate exclusively to the cache aspect.
+.PP
+If we step forward to the BSD 4.4-Lite-2 release, struct buf has grown
+a bit here or there:
+.DS
+.ft C
+.ps -1
+struct buf {
+ LIST_ENTRY(buf) b_hash; /* Hash chain. */
+ LIST_ENTRY(buf) b_vnbufs; /* Buffer's associated vnode. */
+ TAILQ_ENTRY(buf) b_freelist; /* Free list position if not active. */
+ struct buf *b_actf, **b_actb; /* Device driver queue when active. */
+ struct proc *b_proc; /* Associated proc; NULL if kernel. */
+ volatile long b_flags; /* B_* flags. */
+ int b_error; /* Errno value. */
+ long b_bufsize; /* Allocated buffer size. */
+ long b_bcount; /* Valid bytes in buffer. */
+ long b_resid; /* Remaining I/O. */
+ dev_t b_dev; /* Device associated with buffer. */
+ struct {
+ caddr_t b_addr; /* Memory, superblocks, indirect etc. */
+ } b_un;
+ void *b_saveaddr; /* Original b_addr for physio. */
+ daddr_t b_lblkno; /* Logical block number. */
+ daddr_t b_blkno; /* Underlying physical block number. */
+ /* Function to call upon completion. */
+ void (*b_iodone) __P((struct buf *));
+ struct vnode *b_vp; /* Device vnode. */
+ long b_pfcent; /* Center page when swapping cluster. */
+ /* XXX pfcent should be int; overld. */
+ int b_dirtyoff; /* Offset in buffer of dirty region. */
+ int b_dirtyend; /* Offset of end of dirty region. */
+ struct ucred *b_rcred; /* Read credentials reference. */
+ struct ucred *b_wcred; /* Write credentials reference. */
+ int b_validoff; /* Offset in buffer of valid region. */
+ int b_validend; /* Offset of end of valid region. */
+};
+.ps +1
+.ft P
+.DE
+.PP
+The main piece of action is the addition of vnodes, a VM system and a
+prototype LFS filesystem, all of which needed some handles on struct
+buf. Comparison will show that the I/O aspect of struct buf is in
+essence unchanged, the length field is now in bytes instead of words,
+the linked list the drivers can use has been renamed (b_actf,
+b_actb) and a b_iodone pointer for callback notification has been added
+but otherwise there is no change to the fields which
+represent the I/O aspect. All the new fields relate to the cache
+aspect, link buffers to the VM system, provide hacks for file-systems
+(b_lblkno) etc etc.
+.PP
+By the time we get to FreeBSD 3.0 more stuff has grown on struct buf:
+.DS
+.ft C
+.ps -1
+struct buf {
+ LIST_ENTRY(buf) b_hash; /* Hash chain. */
+ LIST_ENTRY(buf) b_vnbufs; /* Buffer's associated vnode. */
+ TAILQ_ENTRY(buf) b_freelist; /* Free list position if not active. */
+ TAILQ_ENTRY(buf) b_act; /* Device driver queue when active. *new* */
+ struct proc *b_proc; /* Associated proc; NULL if kernel. */
+ long b_flags; /* B_* flags. */
+ unsigned short b_qindex; /* buffer queue index */
+ unsigned char b_usecount; /* buffer use count */
+ int b_error; /* Errno value. */
+ long b_bufsize; /* Allocated buffer size. */
+ long b_bcount; /* Valid bytes in buffer. */
+ long b_resid; /* Remaining I/O. */
+ dev_t b_dev; /* Device associated with buffer. */
+ caddr_t b_data; /* Memory, superblocks, indirect etc. */
+ caddr_t b_kvabase; /* base kva for buffer */
+ int b_kvasize; /* size of kva for buffer */
+ daddr_t b_lblkno; /* Logical block number. */
+ daddr_t b_blkno; /* Underlying physical block number. */
+ off_t b_offset; /* Offset into file */
+ /* Function to call upon completion. */
+ void (*b_iodone) __P((struct buf *));
+ /* For nested b_iodone's. */
+ struct iodone_chain *b_iodone_chain;
+ struct vnode *b_vp; /* Device vnode. */
+ int b_dirtyoff; /* Offset in buffer of dirty region. */
+ int b_dirtyend; /* Offset of end of dirty region. */
+ struct ucred *b_rcred; /* Read credentials reference. */
+ struct ucred *b_wcred; /* Write credentials reference. */
+ int b_validoff; /* Offset in buffer of valid region. */
+ int b_validend; /* Offset of end of valid region. */
+ daddr_t b_pblkno; /* physical block number */
+ void *b_saveaddr; /* Original b_addr for physio. */
+ caddr_t b_savekva; /* saved kva for transfer while bouncing */
+ void *b_driver1; /* for private use by the driver */
+ void *b_driver2; /* for private use by the driver */
+ void *b_spc;
+ union cluster_info {
+ TAILQ_HEAD(cluster_list_head, buf) cluster_head;
+ TAILQ_ENTRY(buf) cluster_entry;
+ } b_cluster;
+ struct vm_page *b_pages[btoc(MAXPHYS)];
+ int b_npages;
+ struct workhead b_dep; /* List of filesystem dependencies. */
+};
+.ps +1
+.ft P
+.DE
+.PP
+Still we find that the I/O aspect of struct buf is in essence unchanged. A couple of fields have been added which allows the driver to hang local data off the buf while working on it have been added (b_driver1, b_driver2) and a "physical block number" (b_pblkno) have been added.
+.PP
+This p_blkno is relevant, it has been added because the disklabel/slice
+code have been abstracted out of the device drivers, the filesystem
+ask for b_blkno, the slice/label code translates this into b_pblkno
+which the device driver operates on.
+.PP
+After this point some minor cleanups have happened, some unused fields
+have been removed etc but the I/O aspect of struct buf is still only
+a fraction of the entire structure: less than a quarter of the
+bytes in a struct buf are used for the I/O aspect and struct buf
+seems to continue to grow and grow.
+.PP
+Since version 6 as documented in Lions book, a three significant pieces
+of code have emerged which need to do non-trivial translations of
+the I/O request before it reaches the device drivers: CCD, slice/label
+and Vinum. They all basically do the same: they map I/O requests from
+a logical space to a physical space, and the mappings they perform
+can be 1:1 or 1:N. \**
+.FS
+It is interesting to note that Lions in his comments to the \fCrkaddr\fP
+routine (p. 16-2) writes \fIThe code in this procedure incorporates
+a special feature for files which extend over more than one disk
+drive. This feature is described in the UPM Section "RK(IV)". Its
+usefulness seems to be restricted.\fP This more than hints at the
+presence already then of various hacks to stripe/span multiple devices.
+.FE
+.PP
+The 1:1 mapping of the slice/label code is rather trivial, and the
+addition of the b_pblkno field catered for the majority of the issues
+this resulted in, leaving but one: Reads or writes to the magic "disklabel"
+or equally magic "MBR" sectors on a disk must be caught, examined and in
+some cases modified before being passed on to the device driver. This need
+resulted in the addition of the b_iodone_chain field which adds a limited
+ability to stack I/O operations;
+.PP
+The 1:N mapping of CCD and Vinum are far more interesting. These two
+subsystems look like a device driver, but rather than drive some piece
+of hardware, they allocate new struct buf data structures populates
+these and pass them on to other device drivers.
+.PP
+Apart from it being inefficient to lug about a 348 bytes data structure
+when 80 bytes would have done, it also leads to significant code rot
+when programmers don't know what to do about the remaining fields or
+even worse: "borrow" a field or two for their own uses.
+.PP
+.ID
+.if t .PSPIC bufsize.eps
+.if n [graph not available in this format]
+.DE
+.I
+Conclusions:
+.IP "" 5n
+\(bu Struct buf is victim of chronic bloat.
+.IP
+\(bu The I/O aspect of
+struct buf is practically constant and only about \(14 of the total bytes.
+.IP
+\(bu Struct buf currently have several users, vinum, ccd and to
+limited extent diskslice/label, which
+need only the I/O aspect, not the vnode, caching or VM linkage.
+.IP
+.I
+The I/O aspect of struct buf should be put in a separate \fCstruct bio\fP.
+.R
+.NH 1
+Implications for future struct buf improvements
+.PP
+Concerns have been raised about the implications this separation
+will have for future work on struct buf, I will try to address
+these concerns here.
+.PP
+As the existence and popularity of vinum and ccd proves, there is
+a legitimate and valid requirement to be able to do I/O operations
+which are not initiated by a vnode or filesystem operation.
+In other words, an I/O request is a fully valid entity in its own
+right and should be treated like that.
+.PP
+Without doubt, the I/O request has to be tuned to fit the needs
+of struct buf users in the best possible way, and consequently
+any future changes in struct buf are likely to affect the I/O request
+semantics.
+.PP
+One particular change which has been proposed is to drop the present
+requirement that a struct buf be mapped contiguously into kernel
+address space. The argument goes that since many modern drivers use
+physical address DMA to transfer the data maintaining such a mapping
+is needless overhead.
+.PP
+Of course some drivers will still need to be able to access the
+buffer in kernel address space and some kind of compatibility
+must be provided there.
+.PP
+The question is, if such a change is made impossible by the
+separation of the I/O aspect into its own data structure?
+.PP
+The answer to this is ``no''.
+Anything that could be added to or done with
+the I/O aspect of struct buf can also be added to or done
+with the I/O aspect if it lives in a new "struct bio".
+.NH 1
+Implementing a \fCstruct bio\fP
+.PP
+The first decision to be made was who got to use the name "struct buf",
+and considering the fact that it is the I/O aspect which gets separated
+out and that it only covers about \(14 of the bytes in struct buf,
+obviously the new structure for the I/O aspect gets a new name.
+Examining the naming in the kernel, the "bio" prefix seemed a given,
+for instance, the function to signal completion of an I/O request is
+already named "biodone()".
+.PP
+Making the transition smooth is obviously also a priority and after
+some prototyping \**
+.FS
+The software development technique previously known as "Trial & Error".
+.FE
+it was found that a totally transparent transition could be made by
+embedding a copy of the new "struct bio" as the first element of "struct buf"
+and by using cpp(1) macros to alias the fields to the legacy struct buf
+names.
+.NH 2
+The b_flags problem.
+.PP
+Struct bio was defined by examining all code existing in the driver tree
+and finding all the struct buf fields which were legitimately used (as
+opposed to "hi-jacked" fields).
+One field was found to have "dual-use": the b_flags field.
+This required special attention.
+Examination showed that b_flags were used for three things:
+.IP "" 5n
+\(bu Communication of the I/O command (READ, WRITE, FORMAT, DELETE)
+.IP
+\(bu Communication of ordering and error status
+.IP
+\(bu General status for non I/O aspect consumers of struct buf.
+.PP
+For historic reasons B_WRITE was defined to be zero, which lead to
+confusion and bugs, this pushed the decision to have a separate
+"b_iocmd" field in struct buf and struct bio for communicating
+only the action to be performed.
+.PP
+The ordering and error status bits were put in a new flag field "b_ioflag".
+This has left sufficiently many now unused bits in b_flags that the b_xflags element
+can now be merged back into b_flags.
+.NH 2
+Definition of struct bio
+.PP
+With the cleanup of b_flags in place, the definition of struct bio looks like this:
+.DS
+.ft C
+.ps -1
+struct bio {
+ u_int bio_cmd; /* I/O operation. */
+ dev_t bio_dev; /* Device to do I/O on. */
+ daddr_t bio_blkno; /* Underlying physical block number. */
+ off_t bio_offset; /* Offset into file. */
+ long bio_bcount; /* Valid bytes in buffer. */
+ caddr_t bio_data; /* Memory, superblocks, indirect etc. */
+ u_int bio_flags; /* BIO_ flags. */
+ struct buf *_bio_buf; /* Parent buffer. */
+ int bio_error; /* Errno for BIO_ERROR. */
+ long bio_resid; /* Remaining I/O in bytes. */
+ void (*bio_done) __P((struct buf *));
+ void *bio_driver1; /* Private use by the callee. */
+ void *bio_driver2; /* Private use by the callee. */
+ void *bio_caller1; /* Private use by the caller. */
+ void *bio_caller2; /* Private use by the caller. */
+ TAILQ_ENTRY(bio) bio_queue; /* Disksort queue. */
+ daddr_t bio_pblkno; /* physical block number */
+ struct iodone_chain *bio_done_chain;
+};
+.ps +1
+.ft P
+.DE
+.NH 2
+Definition of struct buf
+.PP
+After adding a struct bio to struct buf and the fields aliased into it
+struct buf looks like this:
+.DS
+.ft C
+.ps -1
+struct buf {
+ /* XXX: b_io must be the first element of struct buf for now /phk */
+ struct bio b_io; /* "Builtin" I/O request. */
+#define b_bcount b_io.bio_bcount
+#define b_blkno b_io.bio_blkno
+#define b_caller1 b_io.bio_caller1
+#define b_caller2 b_io.bio_caller2
+#define b_data b_io.bio_data
+#define b_dev b_io.bio_dev
+#define b_driver1 b_io.bio_driver1
+#define b_driver2 b_io.bio_driver2
+#define b_error b_io.bio_error
+#define b_iocmd b_io.bio_cmd
+#define b_iodone b_io.bio_done
+#define b_iodone_chain b_io.bio_done_chain
+#define b_ioflags b_io.bio_flags
+#define b_offset b_io.bio_offset
+#define b_pblkno b_io.bio_pblkno
+#define b_resid b_io.bio_resid
+ LIST_ENTRY(buf) b_hash; /* Hash chain. */
+ TAILQ_ENTRY(buf) b_vnbufs; /* Buffer's associated vnode. */
+ TAILQ_ENTRY(buf) b_freelist; /* Free list position if not active. */
+ TAILQ_ENTRY(buf) b_act; /* Device driver queue when active. *new* */
+ long b_flags; /* B_* flags. */
+ unsigned short b_qindex; /* buffer queue index */
+ unsigned char b_xflags; /* extra flags */
+[...]
+.ps +1
+.ft P
+.DE
+.PP
+Putting the struct bio as the first element in struct buf during a transition
+period allows a pointer to either to be cast to a pointer of the other,
+which means that certain pieces of code can be left un-converted with the
+use of a couple of casts while the remaining pieces of code are tested.
+The ccd and vinum modules have been left un-converted like this for now.
+.PP
+This is basically where FreeBSD-current stands today.
+.PP
+The next step is to substitute struct bio for struct buf in all the code
+which only care about the I/O aspect: device drivers, diskslice/label.
+The patch to do this is up for review. \**
+.FS
+And can be found at http://phk.freebsd.dk/misc
+.FE
+and consists mainly of systematic substitutions like these
+.DS
+.ft C
+s/struct buf/struct bio/
+s/b_flags/bio_flags/
+s/b_bcount/bio_bcount/
+&c &c
+.ft P
+.DE
+.NH 2
+Future work
+.PP
+It can be successfully argued that the cpp(1) macros used for aliasing
+above are ugly and should be expanded in place. It would certainly
+be trivial to do so, but not by definition worthwhile.
+.PP
+Retaining the aliasing for the b_* and bio_* name-spaces this way
+leaves us with considerable flexibility in modifying the future
+interaction between the two. The DEV_STRATEGY() macro is the single
+point where a struct buf is turned into a struct bio and launched
+into the drivers to full-fill the I/O request and this provides us
+with a single isolated location for performing non-trivial translations.
+.PP
+As an example of this flexibility: It has been proposed to essentially
+drop the b_blkno field and use the b_offset field to communicate the
+on-disk location of the data. b_blkno is a 32bit offset of B_DEVSIZE
+(512) bytes sectors which allows us to address two terabytes worth
+of data. Using b_offset as a 64 bit byte-address would not only allow
+us to address 8 million times larger disks, it would also make it
+possible to accommodate disks which use non-power-of-two sector-size,
+Audio CD-ROMs for instance.
+.PP
+The above mentioned flexibility makes an implementation almost trivial:
+.IP "" 5n
+\(bu Add code to DEV_STRATEGY() to populate b_offset from b_blkno in the
+cases where it is not valid. Today it is only valid for a struct buf
+marked B_PHYS.
+.IP
+\(bu Change diskslice/label, ccd, vinum and device drivers to use b_offset
+instead of b_blkno.
+.IP
+\(bu Remove the bio_blkno field from struct bio, add it to struct buf as
+b_blkno and remove the cpp(1) macro which aliased it into struct bio.
+.PP
+Another possible transition could be to not have a "built-in" struct bio
+in struct buf. If for some reason struct bio grows fields of no relevance
+to struct buf it might be cheaper to remove struct bio from struct buf,
+un-alias the fields and have DEV_STRATEGY() allocate a struct bio and populate
+the relevant fields from struct buf.
+This would also be entirely transparent to both users of struct buf and
+struct bio as long as we retain the aliasing mechanism and DEV_STRATEGY().
+.bp
+.NH 1
+Towards a stackable BIO subsystem.
+.PP
+Considering that we now have three distinct pieces of code living
+in the nowhere between DEV_STRATEGY() and the device drivers:
+diskslice/label, ccd and vinum, it is not unreasonable to start
+to look for a more structured and powerful API for these pieces
+of code.
+.PP
+In traditional UNIX semantics a "disk" is a one-dimensional array of
+512 byte sectors which can be read or written. Support for sectors
+of multiple of 512 bytes were implemented with a sort of "don't ask-don't tell" policy where system administrator would specify a larger minimum sector-size
+to the filesystem, and things would "just work", but no formal communication about the size of the smallest transfer possible were exchanged between the disk driver and the filesystem.
+.PP
+A truly generalised concept of a disk needs to be more flexible and more
+expressive. For instance, a user of a disk will want to know:
+.IP "" 5n
+\(bu What is the sector size. Sector-size these days may not be a power
+of two, for instance Audio CDs have 2352 byte "sectors".
+.IP
+\(bu How many sectors are there.
+.IP
+\(bu Is writing of sectors supported.
+.IP
+\(bu Is freeing of sectors supported. This is important for flash based
+devices where a wear-distribution software or hardware function uses
+the information about which sectors are actually in use to optimise the
+usage of the slow erase function to a minimum.
+.IP
+\(bu Is opening this device in a specific mode, (read-only or read-write)
+allowed. The VM system and the file-systems generally assume that nobody
+writes to "their storage" under their feet, and therefore opens which
+would make that possible should be rejected.
+.IP
+\(bu What is the "native" geometry of this device (Sectors/Heads/Cylinders).
+This is useful for staying compatible with badly designed on-disk formats
+from other operating systems.
+.PP
+Obviously, all of these properties are dynamic in the sense that in
+these days disks are removable devices, and they may therefore change
+at any time. While some devices like CD-ROMs can lock the media in
+place with a special command, this cannot be done for all devices,
+in particular it cannot be done with normal floppy disk drives.
+.PP
+If we adopt such a model for disk, retain the existing "strategy/biodone" model of I/O scheduling and decide to use a modular or stackable approach to
+geometry translations we find that nearly endless flexibility emerges:
+Mirroring, RAID, striping, interleaving, disk-labels and sub-disks, all of
+these techniques would get a common framework to operate in.
+.PP
+In practice of course, such a scheme must not complicate the use of or
+installation of FreeBSD. The code will have to act and react exactly
+like the current code but fortunately the current behaviour is not at
+all hard to emulate so implementation-wise this is a non-issue.
+.PP
+But lets look at some drawings to see what this means in practice.
+.PP
+Today the plumbing might look like this on a machine:
+.DS
+.PS
+ Ad0: box "disk (ad0)"
+ arrow up from Ad0.n
+ SL0: box "slice/label"
+ Ad1: box "disk (ad1)" with .w at Ad0.e + (.2,0)
+ arrow up from Ad1.n
+ SL1: box "slice/label"
+ Ad2: box "disk (ad2)" with .w at Ad1.e + (.2,0)
+ arrow up from Ad2.n
+ SL2: box "slice/label"
+ Ad3: box "disk (ad3)" with .w at Ad2.e + (.2,0)
+ arrow up from Ad3.n
+ SL3: box "slice/label"
+ DML: box dashed width 4i height .9i with .sw at SL0.sw + (-.2,-.2)
+ "Disk-mini-layer" with .n at DML.s + (0, .1)
+
+ V: box "vinum" at 1/2 <SL1.n, SL2.n> + (0,1.2)
+
+ A0A: arrow up from 1/4 <SL0.nw, SL0.ne>
+ A0B: arrow up from 2/4 <SL0.nw, SL0.ne>
+ A0E: arrow up from 3/4 <SL0.nw, SL0.ne>
+ A1C: arrow up from 2/4 <SL1.nw, SL1.ne>
+ arrow to 1/3 <V.sw, V.se>
+ A2C: arrow up from 2/4 <SL2.nw, SL2.ne>
+ arrow to 2/3 <V.sw, V.se>
+ A3A: arrow up from 1/4 <SL3.nw, SL3.ne>
+ A3E: arrow up from 2/4 <SL3.nw, SL3.ne>
+ A3F: arrow up from 3/4 <SL3.nw, SL3.ne>
+
+ "ad0s1a" with .s at A0A.n + (0, .1)
+ "ad0s1b" with .s at A0B.n + (0, .3)
+ "ad0s1e" with .s at A0E.n + (0, .5)
+ "ad1s1c" with .s at A1C.n + (0, .1)
+ "ad2s1c" with .s at A2C.n + (0, .1)
+ "ad3s4a" with .s at A3A.n + (0, .1)
+ "ad3s4e" with .s at A3E.n + (0, .3)
+ "ad3s4f" with .s at A3F.n + (0, .5)
+
+ V1: arrow up from 1/4 <V.nw, V.ne>
+ V2: arrow up from 2/4 <V.nw, V.ne>
+ V3: arrow up from 3/4 <V.nw, V.ne>
+ "V1" with .s at V1.n + (0, .1)
+ "V2" with .s at V2.n + (0, .1)
+ "V3" with .s at V3.n + (0, .1)
+
+.PE
+.DE
+.PP
+And while this drawing looks nice and clean, the code underneat isn't.
+With a stackable BIO implementation, the picture would look like this:
+.DS
+.PS
+ Ad0: box "disk (ad0)"
+ arrow up from Ad0.n
+ M0: box "MBR"
+ arrow up
+ B0: box "BSD"
+
+ A0A: arrow up from 1/4 <B0.nw, B0.ne>
+ A0B: arrow up from 2/4 <B0.nw, B0.ne>
+ A0E: arrow up from 3/4 <B0.nw, B0.ne>
+
+ Ad1: box "disk (ad1)" with .w at Ad0.e + (.2,0)
+ Ad2: box "disk (ad2)" with .w at Ad1.e + (.2,0)
+ Ad3: box "disk (ad3)" with .w at Ad2.e + (.2,0)
+ arrow up from Ad3.n
+ SL3: box "MBR"
+ arrow up
+ B3: box "BSD"
+
+ V: box "vinum" at 1/2 <Ad1.n, Ad2.n> + (0,.8)
+ arrow from Ad1.n to 1/3 <V.sw, V.se>
+ arrow from Ad2.n to 2/3 <V.sw, V.se>
+
+ A3A: arrow from 1/4 <B3.nw, B3.ne>
+ A3E: arrow from 2/4 <B3.nw, B3.ne>
+ A3F: arrow from 3/4 <B3.nw, B3.ne>
+
+ "ad0s1a" with .s at A0A.n + (0, .1)
+ "ad0s1b" with .s at A0B.n + (0, .3)
+ "ad0s1e" with .s at A0E.n + (0, .5)
+ "ad3s4a" with .s at A3A.n + (0, .1)
+ "ad3s4e" with .s at A3E.n + (0, .3)
+ "ad3s4f" with .s at A3F.n + (0, .5)
+
+ V1: arrow up from 1/4 <V.nw, V.ne>
+ V2: arrow up from 2/4 <V.nw, V.ne>
+ V3: arrow up from 3/4 <V.nw, V.ne>
+ "V1" with .s at V1.n + (0, .1)
+ "V2" with .s at V2.n + (0, .1)
+ "V3" with .s at V3.n + (0, .1)
+
+.PE
+.DE
+.PP
+The first thing we notice is that the disk mini-layer is gone, instead
+separate modules for the Microsoft style MBR and the BSD style disklabel
+are now stacked over the disk. We can also see that Vinum no longer
+needs to go though the BSD/MBR layers if it wants access to the entire
+physical disk, it can be stacked right over the disk.
+.PP
+Now, imagine that a ZIP drive is connected to the machine, and the
+user loads a ZIP disk in it. First the device driver notices the
+new disk and instantiates a new disk:
+.DS
+.PS
+ box "disk (da0)"
+.PE
+.DE
+.PP
+A number of the geometry modules have registered as "auto-discovering"
+and will be polled sequentially to see if any of them recognise what
+is on this disk. The MBR module finds a MBR in sector 0 and attach
+an instance of itself to the disk:
+.DS
+.PS
+ D: box "disk (da0)"
+ arrow up from D.n
+ M: box "MBR"
+ M1: arrow up from 1/3 <M.nw, M.ne>
+ M2: arrow up from 2/3 <M.nw, M.ne>
+.PE
+.DE
+.PP
+It finds two "slices" in the MBR and creates two new "disks" one for
+each of these. The polling of modules is repeated and this time the
+BSD label module recognises a FreeBSD label on one of the slices and
+attach itself:
+.DS
+.PS
+ D: box "disk (da0)"
+ arrow "O" up from D.n
+ M: box "MBR"
+ M1: line up .3i from 1/3 <M.nw, M.ne>
+ arrow "O" left
+ M2: arrow "O" up from 2/3 <M.nw, M.ne>
+ B: box "BSD"
+ B1: arrow "O" up from 1/4 <B.nw, B.ne>
+ B2: arrow "O" up from 2/4 <B.nw, B.ne>
+ B3: arrow "O" up from 3/4 <B.nw, B.ne>
+
+.PE
+.DE
+.PP
+The BSD module finds three partitions, creates them as disks and the
+polling is repeated for each of these. No modules recognise these
+and the process ends. In theory one could have a module recognise
+the UFS superblock and extract from there the path to mount the disk
+on, but this is probably better implemented in a general "device-daemon"
+in user-land.
+.PP
+On this last drawing I have marked with "O" the "disks" which can be
+accessed from user-land or kernel. The VM and file-systems generally
+prefer to have exclusive write access to the disk sectors they use,
+so we need to enforce this policy. Since we cannot know what transformation
+a particular module implements, we need to ask the modules if the open
+is OK, and they may need to ask their neighbours before they can answer.
+.PP
+We decide to mount a filesystem on one of the BSD partitions at the very top.
+The open request is passed to the BSD module, which finds that none of
+the other open partitions (there are none) overlap this one, so far no
+objections. It then passes the open to the MBR module, which goes through
+basically the same procedure finds no objections and pass the request to
+the disk driver, which since it was not previously open approves of the
+open.
+.PP
+Next we mount a filesystem on the next BSD partition. The
+BSD module again checks for overlapping open partitions and find none.
+This time however, it finds that it has already opened the "downstream"
+in R/W mode so it does not need to ask for permission for that again
+so the open is OK.
+.PP
+Next we mount a msdos filesystem on the other MBR slice. This is the
+same case, the MBR finds no overlapping open slices and has already
+opened "downstream" so the open is OK.
+.PP
+If we now try to open the other slice for writing, the one which has the
+BSD module attached already. The open is passed to the MBR module which
+notes that the device is already opened for writing by a module (the BSD
+module) and consequently the open is refused.
+.PP
+While this sounds complicated it actually took less than 200 lines of
+code to implement in a prototype implementation.
+.PP
+Now, the user ejects the ZIP disk. If the hardware can give a notification
+of intent to eject, a call-up from the driver can try to get devices synchronised
+and closed, this is pretty trivial. If the hardware just disappears like
+a unplugged parallel zip drive, a floppy disk or a PC-card, we have no
+choice but to dismantle the setup. The device driver sends a "gone" notification to the MBR module, which replicates this upwards to the mounted msdosfs
+and the BSD module. The msdosfs unmounts forcefully, invalidates any blocks
+in the buf/vm system and returns. The BSD module replicates the "gone" to
+the two mounted file-systems which in turn unmounts forcefully, invalidates
+blocks and return, after which the BSD module releases any resources held
+and returns, the MBR module releases any resources held and returns and all
+traces of the device have been removed.
+.PP
+Now, let us get a bit more complicated. We add another disk and mirror
+two of the MBR slices:
+.DS
+.PS
+ D0: box "disk (da0)"
+
+ arrow "O" up from D0.n
+ M0: box "MBR"
+ M01: line up .3i from 1/3 <M0.nw, M0.ne>
+ arrow "O" left
+ M02: arrow "O" up from 2/3 <M0.nw, M0.ne>
+
+ D1: box "disk (da1)" with .w at D0.e + (.2,0)
+ arrow "O" up from D1.n
+ M1: box "MBR"
+ M11: line up .3i from 1/3 <M1.nw, M1.ne>
+ line "O" left
+ M11a: arrow up .2i
+
+ I: box "Mirror" with .s at 1/2 <M02.n, M11a.n>
+ arrow "O" up
+ BB: box "BSD"
+ BB1: arrow "O" up from 1/4 <BB.nw, BB.ne>
+ BB2: arrow "O" up from 2/4 <BB.nw, BB.ne>
+ BB3: arrow "O" up from 3/4 <BB.nw, BB.ne>
+
+ M12: arrow "O" up from 2/3 <M1.nw, M1.ne>
+ B: box "BSD"
+ B1: arrow "O" up from 1/4 <B.nw, B.ne>
+ B2: arrow "O" up from 2/4 <B.nw, B.ne>
+ B3: arrow "O" up from 3/4 <B.nw, B.ne>
+.PE
+.DE
+.PP
+Now assuming that we lose disk da0, the notification goes up like before
+but the mirror module still has a valid mirror from disk da1, so it
+doesn't propagate the "gone" notification further up and the three
+file-systems mounted are not affected.
+.PP
+It is possible to modify the graph while in action, as long as the
+modules know that they will not affect any I/O in progress. This is
+very handy for moving things around. At any of the arrows we can
+insert a mirroring module, since it has a 1:1 mapping from input
+to output. Next we can add another copy to the mirror, give the
+mirror time to sync the two copies. Detach the first mirror copy
+and remove the mirror module. We have now in essence moved a partition
+from one disk to another transparently.
+.NH 1
+Getting stackable BIO layers from where we are today.
+.PP
+Most of the infrastructure is in place now to implement stackable
+BIO layers:
+.IP "" 5n
+\(bu The dev_t change gave us a public structure where
+information about devices can be put. This enabled us to get rid
+of all the NFOO limits on the number of instances of a particular
+driver/device, and significantly cleaned up the vnode aliasing for
+device vnodes.
+.IP
+\(bu The disk-mini-layer has
+taken the knowledge about diskslice/labels out of the
+majority of the disk-drivers, saving on average 100 lines of code per
+driver.
+.IP
+\(bu The struct bio/buf divorce is giving us an IO request of manageable
+size which can be modified without affecting all the filesystem and
+VM system users of struct buf.
+.PP
+The missing bits are:
+.IP "" 5n
+\(bu changes to struct bio to make it more
+stackable. This mostly relates to the handling of the biodone()
+event, something which will be transparent to all current users
+of struct buf/bio.
+.IP
+\(bu code to stich modules together and to pass events and notifications
+between them.
+.NH 1
+An Implementation plan for stackable BIO layers
+.PP
+My plan for implementation stackable BIO layers is to first complete
+the struct bio/buf divorce with the already mentioned patch.
+.PP
+The next step is to re-implement the monolithic disk-mini-layer so
+that it becomes the stackable BIO system. Vinum and CCD and all
+other consumers should not be unable to tell the difference between
+the current and the new disk-mini-layer. The new implementation
+will initially use a static stacking to remain compatible with the
+current behaviour. This will be the next logical checkpoint commit.
+.PP
+The next step is to make the stackable layers configurable,
+to provide the means to initialise the stacking and to subsequently
+change it. This will be the next logical checkpoint commit.
+.PP
+At this point new functionality can be added inside the stackable
+BIO system: CCD can be re-implemented as a mirror module and a stripe
+module. Vinum can be integrated either as one "macro-module" or
+as separate functions in separate modules. Also modules for other
+purposes can be added, sub-disk handling for Solaris, MacOS, etc
+etc. These modules can be committed one at a time.
diff --git a/share/doc/papers/bufbio/bufsize.eps b/share/doc/papers/bufbio/bufsize.eps
new file mode 100644
index 0000000..2396ac6
--- /dev/null
+++ b/share/doc/papers/bufbio/bufsize.eps
@@ -0,0 +1,479 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: a.ps
+%%Creator: $FreeBSD$
+%%CreationDate: Sat Apr 8 08:32:58 2000
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 410 302
+%%Orientation: Portrait
+%%EndComments
+/gnudict 256 dict def
+gnudict begin
+/Color false def
+/Solid false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/vshift -46 def
+/dl {10 mul} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow { currentpoint stroke M
+ 0 vshift R show } def
+/Rshow { currentpoint stroke M
+ dup stringwidth pop neg vshift R show } def
+/Cshow { currentpoint stroke M
+ dup stringwidth pop -2 div vshift R show } def
+/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+ /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def
+/DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
+ {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
+/BL { stroke gnulinewidth 2 mul setlinewidth } def
+/AL { stroke gnulinewidth 2 div setlinewidth } def
+/UL { gnulinewidth mul /userlinewidth exch def } def
+/PL { stroke userlinewidth setlinewidth } def
+/LTb { BL [] 0 0 0 DL } def
+/LTa { AL [1 dl 2 dl] 0 setdash 0 0 0 setrgbcolor } def
+/LT0 { PL [] 1 0 0 DL } def
+/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def
+/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def
+/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
+/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
+/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
+/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
+/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
+/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
+/Pnt { stroke [] 0 setdash
+ gsave 1 setlinecap M 0 0 V stroke grestore } def
+/Dia { stroke [] 0 setdash 2 copy vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath stroke
+ Pnt } def
+/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V
+ currentpoint stroke M
+ hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath stroke
+ Pnt } def
+/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M
+ hpt2 vpt2 neg V currentpoint stroke M
+ hpt2 neg 0 R hpt2 vpt2 V stroke } def
+/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath stroke
+ Pnt } def
+/Star { 2 copy Pls Crs } def
+/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath fill } def
+/TriUF { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath fill } def
+/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath stroke
+ Pnt } def
+/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath fill } def
+/Pent { stroke [] 0 setdash 2 copy gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath stroke grestore Pnt } def
+/PentF { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath fill grestore } def
+/Circle { stroke [] 0 setdash 2 copy
+ hpt 0 360 arc stroke Pnt } def
+/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def
+/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def
+/C1 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C2 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C3 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C4 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 180 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C5 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc
+ 2 copy moveto
+ 2 copy vpt 180 270 arc closepath fill
+ vpt 0 360 arc } bind def
+/C6 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C7 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C8 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 270 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C9 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 270 450 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 90 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C11 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 180 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 270 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C12 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 180 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C13 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 180 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C14 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 360 arc closepath fill
+ vpt 0 360 arc } bind def
+/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } bind def
+/Square { dup Rec } bind def
+/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def
+/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def
+/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def
+/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
+/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def
+/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
+/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill
+ exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
+/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def
+/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+ 2 copy vpt Square fill
+ Bsquare } bind def
+/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def
+/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def
+/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+ Bsquare } bind def
+/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+ Bsquare } bind def
+/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def
+/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+ 2 copy vpt Square fill Bsquare } bind def
+/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+ 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
+/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def
+/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def
+/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def
+/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def
+/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def
+/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def
+/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def
+/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def
+/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def
+/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def
+/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def
+/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def
+/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def
+/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def
+/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def
+/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def
+/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def
+/DiaE { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath stroke } def
+/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath stroke } def
+/TriUE { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath stroke } def
+/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath stroke } def
+/PentE { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath stroke grestore } def
+/CircE { stroke [] 0 setdash
+ hpt 0 360 arc stroke } def
+/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
+/DiaW { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V Opaque stroke } def
+/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V Opaque stroke } def
+/TriUW { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V Opaque stroke } def
+/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V Opaque stroke } def
+/PentW { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ Opaque stroke grestore } def
+/CircW { stroke [] 0 setdash
+ hpt 0 360 arc Opaque stroke } def
+/BoxFill { gsave Rec 1 setgray fill grestore } def
+end
+%%EndProlog
+gnudict begin
+gsave
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+1.000 UL
+LTb
+630 420 M
+63 0 V
+6269 0 R
+-63 0 V
+546 420 M
+(0) Rshow
+630 1020 M
+63 0 V
+6269 0 R
+-63 0 V
+-6353 0 R
+(50) Rshow
+630 1620 M
+63 0 V
+6269 0 R
+-63 0 V
+-6353 0 R
+(100) Rshow
+630 2220 M
+63 0 V
+6269 0 R
+-63 0 V
+-6353 0 R
+(150) Rshow
+630 2820 M
+63 0 V
+6269 0 R
+-63 0 V
+-6353 0 R
+(200) Rshow
+630 3420 M
+63 0 V
+6269 0 R
+-63 0 V
+-6353 0 R
+(250) Rshow
+630 4020 M
+63 0 V
+6269 0 R
+-63 0 V
+-6353 0 R
+(300) Rshow
+630 4620 M
+63 0 V
+6269 0 R
+-63 0 V
+-6353 0 R
+(350) Rshow
+630 420 M
+0 63 V
+0 4137 R
+0 -63 V
+630 280 M
+(0) Cshow
+1263 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(10) Cshow
+1896 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(20) Cshow
+2530 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(30) Cshow
+3163 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(40) Cshow
+3796 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(50) Cshow
+4429 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(60) Cshow
+5062 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(70) Cshow
+5696 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(80) Cshow
+6329 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(90) Cshow
+6962 420 M
+0 63 V
+0 4137 R
+0 -63 V
+0 -4277 R
+(100) Cshow
+1.000 UL
+LTb
+630 420 M
+6332 0 V
+0 4200 V
+-6332 0 V
+630 420 L
+140 2520 M
+currentpoint gsave translate 90 rotate 0 0 M
+(Bytes) Cshow
+grestore
+3796 70 M
+(CVS revision of <sys/buf.h>) Cshow
+3796 4830 M
+(Sizeof\(struct buf\)) Cshow
+1.000 UL
+LT0
+693 1764 M
+64 384 V
+63 0 V
+63 0 V
+64 -96 V
+63 0 V
+63 0 V
+64 816 V
+63 0 V
+63 0 V
+64 768 V
+63 48 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 48 V
+63 96 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 -48 V
+63 0 V
+63 -48 V
+64 0 V
+63 0 V
+63 96 V
+64 0 V
+63 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 48 V
+64 0 V
+63 48 V
+63 96 V
+64 -48 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+63 0 V
+64 96 V
+63 -96 V
+63 -48 V
+64 48 V
+63 0 V
+63 384 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+64 0 V
+63 0 V
+63 0 V
+63 48 V
+64 0 V
+63 0 V
+63 96 V
+64 96 V
+63 0 V
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/share/doc/papers/contents/Makefile b/share/doc/papers/contents/Makefile
new file mode 100644
index 0000000..d15ff9c
--- /dev/null
+++ b/share/doc/papers/contents/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+VOLUME= papers
+DOC= contents
+SRCS= contents.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/contents/contents.ms b/share/doc/papers/contents/contents.ms
new file mode 100644
index 0000000..12b287a
--- /dev/null
+++ b/share/doc/papers/contents/contents.ms
@@ -0,0 +1,218 @@
+.\" Copyright (c) 1996 FreeBSD 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.OH '''Papers Contents'
+.EH 'Papers Contents'''
+.TL
+UNIX Papers coming with FreeBSD
+.PP
+These papers are of both historic and current interest, but most of them are
+many years old.
+More recent documentation is available from
+.>> <a href="http://www.freebsd.org/docs/">
+http://www.FreeBSD.org/docs/
+.>> </a>
+
+.IP
+.tl '\fBBerkeley Pascal''px\fP'
+.if !r.U .nr .U 0
+.if \n(.U \{\
+.br
+.>> <a href="px.html">px.html</a>
+.\}
+.QP
+Berkeley Pascal
+PX Implementation Notes
+.br
+Version 2.0
+.sp
+Performance Effects of Disk Subsystem Choices
+for VAX\(dg Systems Running 4.2BSD UNIX.
+.sp
+William N. Joy, M. Kirk McKusick.
+.sp
+Revised January, 1979.
+
+.sp
+.IP
+.tl '\fBDisk Performance''diskperf\fP'
+.if \n(.U \{\
+.br
+.>> <a href="diskperf.html">diskperf.html</a>
+.\}
+.QP
+Performance Effects of Disk Subsystem Choices
+for VAX\(dg Systems Running 4.2BSD UNIX.
+.sp
+Bob Kridle, Marshall Kirk McKusick.
+.sp
+Revised July 27, 1983.
+
+.sp
+.IP
+.tl '\fBTune the 4.2BSD Kernel''kerntune\fP'
+.if \n(.U \{\
+.br
+.>> <a href="kerntune.html">kerntune.html</a>
+.\}
+.QP
+Using gprof to Tune the 4.2BSD Kernel.
+.sp
+Marshall Kirk McKusick.
+.sp
+Revised May 21, 1984 (?).
+
+.sp
+.IP
+.tl '\fBNew Virtual Memory''newvm\fP'
+.if \n(.U \{\
+.br
+.>> <a href="newvm.html">newvm.html</a>
+.\}
+.QP
+A New Virtual Memory Implementation for Berkeley.
+.sp
+Marshall Kirk McKusick, Michael J. Karels.
+.sp
+Revised 1986.
+
+.sp
+.IP
+.tl '\fBKernel Malloc''kernmalloc\fP'
+.if \n(.U \{\
+.br
+.>> <a href="kernmalloc.html">kernmalloc.html</a>
+.\}
+.QP
+Design of a General Purpose Memory Allocator for the 4.3BSD UNIX Kernel.
+.sp
+Marshall Kirk McKusick, Michael J. Karels.
+.sp
+Reprinted from:
+\fIProceedings of the San Francisco USENIX Conference\fP,
+pp. 295-303, June 1988.
+
+.sp
+.IP
+.tl '\fBRelease Engineering''relengr\fP'
+.if \n(.U \{\
+.br
+.>> <a href="releng.html">releng.html</a>
+.\}
+.QP
+The Release Engineering of 4.3\s-1BSD\s0.
+.sp
+Marshall Kirk McKusick, Michael J. Karels, Keith Bostic.
+.sp
+Revised 1989.
+
+.sp
+.IP
+.tl '\fBBeyond 4.3BSD''beyond4.3\fP'
+.if \n(.U \{\
+.br
+.>> <a href="beyond43.html">beyond43.html</a>
+.\}
+.QP
+Current Research by The Computer Systems Research Group of Berkeley.
+.sp
+Marshall Kirk McKusick, Michael J Karels, Keith Sklower, Kevin Fall,
+Marc Teitelbaum, Keith Bostic.
+.sp
+Revised February 2, 1989.
+
+.sp
+.IP
+.tl '\fBFilesystem Interface''fsinterface\fP'
+.if \n(.U \{\
+.br
+.>> <a href="fsinterface.html">fsinterface.html</a>
+.\}
+.QP
+Toward a Compatible Filesystem Interface.
+.sp
+Michael J. Karels, Marshall Kirk McKusick.
+.sp
+Conference of the European Users' Group, September 1986.
+Last modified April 16, 1991.
+
+.sp
+.IP
+.tl '\fBSystem Performance''sysperf\fP'
+.if \n(.U \{\
+.br
+.>> <a href="sysperf.html">sysperf.html</a>
+.\}
+.QP
+Measuring and Improving the Performance of Berkeley UNIX.
+.sp
+Marshall Kirk McKusick, Samuel J. Leffler, Michael J. Karels.
+.sp
+Revised April 17, 1991.
+
+.sp
+.IP
+.tl '\fBNot Quite NFS''nqnfs\fP'
+.if \n(.U \{\
+.br
+.>> <a href="nqnfs.html">nqnfs.html</a>
+.\}
+.QP
+Not Quite NFS, Soft Cache Consistency for NFS.
+.sp
+Rick Macklem.
+.sp
+Reprinted with permission from the "Proceedings of the Winter 1994 Usenix
+Conference", January 1994, San Francisco.
+
+.sp
+.IP
+.tl '\fBMalloc(3)''malloc\fP'
+.if \n(.U \{\
+.br
+.>> <a href="malloc.html">malloc.html</a>
+.\}
+.QP
+Malloc(3) in modern Virtual Memory environments.
+.sp
+Poul-Henning Kamp.
+.sp
+Revised April 5, 1996.
+
+.sp
+.IP
+.tl '\fBJails: Confining the omnipotent root''jail\fP'
+.if \n(.U \{\
+.br
+.>> <a href="jail.html">jail.html</a>
+.\}
+.QP
+The jail system call sets up a jail and locks the current process in it.
+.sp
+Poul-Henning Kamp, Robert N. M. Watson.
+.sp
+This paper was presented at the 2nd International System Administration
+and Networking Conference "SANE 2000" May 22-25, 2000 in Maastricht,
+The Netherlands and is published in the proceedings.
diff --git a/share/doc/papers/devfs/Makefile b/share/doc/papers/devfs/Makefile
new file mode 100644
index 0000000..53a79fc
--- /dev/null
+++ b/share/doc/papers/devfs/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+VOLUME= papers
+DOC= devfs
+SRCS= paper.me
+MACROS= -me
+USE_PIC=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/devfs/paper.me b/share/doc/papers/devfs/paper.me
new file mode 100644
index 0000000..9b775e9
--- /dev/null
+++ b/share/doc/papers/devfs/paper.me
@@ -0,0 +1,1277 @@
+.\" format with ditroff -me
+.\" $FreeBSD$
+.\" format made to look as a paper for the proceedings is to look
+.\" (as specified in the text)
+.if n \{ .po 0
+. ll 78n
+. na
+.\}
+.if t \{ .po 1.0i
+. ll 6.5i
+. nr pp 10 \" text point size
+. nr sp \n(pp+2 \" section heading point size
+. nr ss 1.5v \" spacing before section headings
+.\}
+.nr tm 1i
+.nr bm 1i
+.nr fm 2v
+.he ''''
+.de bu
+.ip \0\s-2\(bu\s+2
+..
+.lp
+.rs
+.ce 5
+.sp
+.sz 14
+.b "Rethinking /dev and devices in the UNIX kernel"
+.sz 12
+.sp
+.i "Poul-Henning Kamp"
+.sp .1
+.i "<phk@FreeBSD.org>"
+.i "The FreeBSD Project"
+.i
+.sp 1.5
+.b Abstract
+.lp
+An outstanding novelty in UNIX at its introduction was the notion
+of ``a file is a file is a file and even a device is a file.''
+Going from ``hardware only changes when the DEC Field engineer is here''
+to ``my toaster has USB'' has put serious strain on the rather crude
+implementation of the ``devices as files'' concept, an implementation which
+has survived practically unchanged for 30 years in most UNIX variants.
+Starting from a high-level view of devices and the semantics that
+have grown around them over the years, this paper takes the audience on a
+grand tour of the redesigned FreeBSD device-I/O system,
+to convey an overview of how it all fits together, and to explain why
+things ended up as they did, how to use the new features and
+in particular how not to.
+.sp
+.if t \{
+.2c
+.\}
+.\" end boilerplate... paper starts here.
+.sh 1 "Introduction"
+.sp
+There are really only two fundamental ways to conceptualise
+I/O devices in an operating system:
+The usual way and the UNIX way.
+.lp
+The usual way is to treat I/O devices as their own class of things,
+possibly several classes of things, and provide APIs tailored
+to the semantics of the devices.
+In practice this means that a program must know what it is dealing
+with, it has to interact with disks one way, tapes another and
+rodents yet a third way, all of which are different from how it
+interacts with a plain disk file.
+.lp
+The UNIX way has never been described better than in the very first
+paper
+published on UNIX by Ritchie and Thompson [Ritchie74]:
+.(q
+Special files constitute the most unusual feature of the UNIX filesystem.
+Each supported I/O device is associated with at least one such file.
+Special files are read and written just like ordinary disk files,
+but requests to read or write result in activation of the associated device.
+An entry for each special file resides in directory /dev,
+although a link may be made to one of these files just as it may to an
+ordinary file.
+Thus, for example, to write on a magnetic tape one may write on the file /dev/mt.
+
+Special files exist for each communication line, each disk, each tape drive,
+and for physical main memory.
+Of course, the active disks and the memory special files are protected from indiscriminate access.
+
+There is a threefold advantage in treating I/O devices this way:
+file and device I/O are as similar as possible;
+file and device names have the same syntax and meaning,
+so that a program expecting a file name as a parameter can be passed a device name;
+finally, special files are subject to the same protection mechanism as regular files.
+.)q
+.lp
+.\" (Why was this so special at the time?)
+At the time, this was quite a strange concept; it was totally accepted
+for instance, that neither the system administrator nor the users were
+able to interact with a disk as a disk.
+Operating systems simply
+did not provide access to disk other than as a filesystem.
+Most vendors did not even release a program to initialise a
+disk-pack with a filesystem: selling pre-initialised and ``quality
+tested'' disk-packs was quite a profitable business.
+.lp
+In many cases some kind of API for reading and
+writing individual sectors on a disk pack
+did exist in the operating system,
+but more often than not
+it was not listed in the public documentation.
+.sh 2 "The traditional implementation"
+.lp
+.\" (Explain how opening /dev/lpt0 lands you in the right device driver)
+The initial implementation used hardcoded inode numbers [Ritchie98].
+The console
+device would be inode number 5, the paper-tape-punch number 6 and so on,
+even if those inodes were also actual regular files in the filesystem.
+.lp
+For reasons one can only too vividly imagine, this was changed and
+Thompson
+[Thompson78]
+describes how the implementation now used ``major and minor''
+device numbers to index though the devsw array to the correct device driver.
+.lp
+For all intents and purposes, this is the implementation which survives
+in most UNIX-like systems even to this day.
+Apart from the access control and timestamp information which is
+found in all inodes, the special inodes in the filesystem contain only
+one piece of information: the major and minor device numbers, often
+logically OR'ed to one field.
+.lp
+When a program opens a special file, the kernel uses the major number
+to find the entry points in the device driver, and passes the combined
+major and minor numbers as a parameter to the device driver.
+.sh 1 "The challenge"
+.lp
+Now, we did not talk much about where the special inodes came from
+to begin with.
+They were created by hand, using the
+mknod(2) system call, usually through the mknod(8) program.
+.lp
+In those days a
+computer had a very static hardware configuration\**
+.(f
+\** Unless your assigned field engineer was present on site.
+.)f
+and it certainly did not
+change while the system was up and running, so creating device nodes
+by hand was certainly an acceptable solution.
+.lp
+The first sign that this would not hold up as a solution came with
+the advent of TCP/IP and the telnet(1) program, or more precisely
+with the telnetd(8) daemon.
+In order to support remote login a ``pseudo-tty'' device driver was implemented,
+basically as tty driver which instead of hardware had another device which
+would allow a process to ``act as hardware'' for the tty.
+The telnetd(8) daemon would read and write data on the ``master'' side of
+the pseudo-tty and the user would be running on the ``slave'' side,
+which would act just like any other tty: you could change the erase
+character if you wanted to and all the signals and all that stuff worked.
+.lp
+Obviously with a device requiring no hardware, you can compile as many
+instances into the kernel as you like, as long as you do not use
+too much memory.
+As system after system was connected
+to the ARPANet, ``increasing number of ptys'' became a regular task
+for system administrators, and part of this task was to create
+more special nodes in the filesystem.
+.lp
+Several UNIX vendors also noticed an issue when they sold minicomputers
+in many different configurations: explaining to system administrators
+just which special nodes they would need and how to create them were
+a significant documentation hassle. Some opted for the simple solution
+and pre-populated /dev with every conceivable device node, resulting
+in a predictable slowdown on access to filenames in /dev.
+.lp
+System V UNIX provided a band-aid solution:
+a special boot sequence would take effect if the kernel or
+the hardware had changed since last reboot.
+This boot procedure would
+amongst other things create the necessary special files in the filesystem,
+based on an intricate system of per device driver configuration files.
+.lp
+In the recent years, we have become used to hardware which changes
+configuration at any time: people plug USB, Firewire and PCCard
+devices into their computers.
+These devices can be anything from modems and disks to GPS receivers
+and fingerprint authentication hardware.
+Suddenly maintaining the
+correct set of special devices in ``/dev'' became a major headache.
+.lp
+Along the way, UNIX kernels had learned to deal with multiple filesystem
+types [Heidemann91a] and a ``device-pseudo-filesystem'' was a pretty
+obvious idea.
+The device drivers have a pretty good idea which
+devices they have found in the configuration, so all that is needed is
+to present this information as a filesystem filled with just the right
+special files.
+Experience has shown that this like most other ``pseudo
+filesystems'' sound a lot simpler in theory than in practice.
+.sh 1 "Truly understanding devices"
+.lp
+Before we continue, we need to fully understand the
+``device special file'' in UNIX.
+.lp
+First we need to realize that a special file has the nature of
+a pointer from the filesystem into a different namespace;
+a little understood fact with far reaching consequences.
+.lp
+One implication of this is that several special files can
+exist in the filename namespace all pointing to the same device
+but each having their own access and timestamp attributes:
+.lp
+.(b M
+.vs -3
+\fC\s-3guest# ls -l /dev/fd0 /tmp/fd0
+crw-r----- 1 root operator 9, 0 Sep 27 19:21 /dev/fd0
+crw-rw-rw- 1 root wheel 9, 0 Sep 27 19:24 /tmp/fd0\fP\s+3
+.vs +3
+.)b
+Obviously, the administrator needs to be on top of this:
+one popular way to exploit an unguarded root prompt is
+to create a replica of the special file /dev/kmem
+in a location where it will not be noticed.
+Since /dev/kmem gives access to the kernel memory,
+gaining any particular
+privilege can be arranged by suitably modifying the kernel's
+data structures through the illicit special file.
+.lp
+When NFS appeared it opened a new avenue for this attack:
+People may have root privilege on one machine but not another.
+Since device nodes are not interpreted on the NFS server
+but rather on the local computer,
+a user with root privilege on a NFS client
+computer can create a device node to his liking on a filesystem
+mounted from an NFS server.
+This device node can in turn be used to
+circumvent the security of other computers which mount that filesystem,
+including the server, unless they protect themselves by not
+trusting any device entries on untrusted filesystem by mounting such
+filesystems with the \fCnodev\fP mount-option.
+.lp
+The fact that the device itself does not actually exist inside the
+filesystem which holds the special file makes it possible
+to perform boot-strapping stunts in the spirit
+of Baron Von Münchausen [raspe1785],
+where a filesystem is (re)mounted using one of its own
+device vnodes:
+.(b M
+.vs -3
+\fC\s-2guest# mount -o ro /dev/fd0 /mnt
+guest# fsck /mnt/dev/fd0
+guest# mount -u -o rw /mnt/dev/fd0 /mnt\fP\s+2
+.vs +3
+.)b
+.lp
+Other interesting details are chroot(2) and jail(2) [Kamp2000] which
+provide filesystem isolation for process-trees.
+Whereas chroot(2) was not implemented as a security tool [Mckusick1999]
+(although it has been widely used as such), the jail(2) security
+facility in FreeBSD provides a pretty convincing ``virtual machine''
+where even the root privilege is isolated and restricted to the designated
+area of the machine.
+Obviously chroot(2) and jail(2) may require access to a well-defined
+subset of devices like /dev/null, /dev/zero and /dev/tty,
+whereas access to other devices such as /dev/kmem
+or any disks could be used to compromise the integrity of the jail(2)
+confinement.
+.lp
+For a long time FreeBSD, like almost all UNIX-like systems had two kinds
+of devices, ``block'' and
+``character'' special files, the difference being that ``block''
+devices would provide caching and alignment for disk device access.
+This was one of those minor architectural mistakes which took
+forever to correct.
+.lp
+The argument that block devices were a mistake is really very
+very simple: Many devices other than disks have multiple modes
+of access which you select by choosing which special file to use.
+.lp
+Pick any old timer and he will be able to recite painful
+sagas about the crucial difference between the /dev/rmt
+and /dev/nrmt devices for tape access.\**
+.(f
+\** Make absolutely sure you know the difference before you take
+important data on a multi-file 9-track tape to remote locations.
+.)f
+.lp
+Tapes, asynchronous ports, line printer ports and many other devices
+have implemented submodes, selectable by the user
+at a special filename level, but that has not earned them their
+own special file types.
+Only disks\**
+.(f
+\** Well, OK: and some 9-track tapes.
+.)f
+have enjoyed the privilege of getting an entire file type dedicated to a
+a minor device mode.
+.lp
+Caching and alignment modes should have been enabled by setting
+some bit in the minor device number on the disk special file,
+not by polluting the filesystem code with another file type.
+.lp
+In FreeBSD block devices were not even implemented in a fashion
+which would be of any use, since any write errors would never be
+reported to the writing process. For this reason, and since no
+applications
+were found to be in existence which relied on block devices
+and since historical usage was indeed historical [Mckusick2000],
+block devices were removed from the FreeBSD system.
+This greatly simlified the task of keeping track of open(2)
+reference counts for disks and
+removed much magic special-case code throughout.
+.lp
+.sh 1 "Files, sockets, pipes, SVID IPC and devices"
+.sp
+It is an instructive lesson in inconsistency to look at the
+various types of ``things'' a process can access in UNIX-like
+systems today.
+.lp
+First there are normal files, which are our reference yardstick here:
+they are accessed with open(2), read(2), write(2), mmap(2), close(2)
+and various other auxiliary system calls.
+.lp
+Sockets and pipes are also accessed via file handles but each has
+its own namespace. That means you cannot open(2) a socket,\**
+.(f
+\** This is particularly bizarre in the case of UNIX domain sockets
+which use the filesystem as their namespace and appear in directory
+listings.
+.)f
+but you can read(2) and write(2) to it.
+Sockets and pipes vector off at the file descriptor level and do
+not get in touch with the vnode based part of the kernel at all.
+.lp
+Devices land somewhere in the middle between pipes and sockets on
+one side and normal files on the other.
+They use the filesystem
+namespace, are implemented with vnodes, and can be operated
+on like normal files, but don't actually live in the filesystem.
+.lp
+Devices are in fact special-cased all the way through the vnode system.
+For one thing devices break the ``one file-one vnode''
+rule, making it necessary to chain all vnodes for the same
+device together in
+order to be able to find ``the canonical vnode for this device node'',
+but more importantly, many operations have to be specifically denied
+on special file vnodes since they do not make any sense.
+.lp
+For true inconsistency, consider the SVID IPC mechanisms - not
+only do they not operate via file handles,
+but they also sport a singularly
+illconceived 32 bit numeric namespace and a dedicated set of
+system calls for access.
+.lp
+Several people have convincingly argued that this is an inconsistent
+mess, and have proposed and implemented more consistent operating systems
+like the Plan9 from Bell Labs [Pike90a] [Pike92a].
+Unfortunately reality is that people are not interested in learning a new
+operating system when the one they have is pretty darn good, and
+consequently research into better and more consistent ways is
+a pretty frustrating [Pike2000] but by no means irrelevant topic.
+.sh 1 "Solving the /dev maintenance problem"
+.lp
+There are a number of obvious, simple but wrong ways one could
+go about solving the ``/dev'' maintenance problem.
+.lp
+The very straightforward way is to hack the namei() kernel function
+responsible for filename translation and lookup.
+It is only a minor matter of programming to
+add code to special-case any lookup which ends up in ``/dev''.
+But this leads to problems: in the case of chroot(2) or jail(2), the
+administrator will want to present only a subset of the available
+devices in ``/dev'', so some kind of state will have to be kept per
+chroot(2)/jail(2) about which devices are visible and
+which devices are hidden, but no obvious location for this information
+is available in the absence of a mount data structure.
+.lp
+It also leads to some unpleasant issues
+because of the fact that ``/dev/foo'' is a synthesised directory
+entry which may or may not actually be present on the filesystem
+which seems to provide ``/dev''.
+The vnodes either have to belong to a filesystem or they
+must be special-cased throughout the vnode layer of the kernel.
+.lp
+Finally there is the simple matter of generality:
+hardcoding the string "/dev" in the kernel is very general.
+.lp
+A cruder solution is to leave it to a daemon: make a special
+device driver, have a daemon read messages from it and create and
+destroy nodes in ``/dev'' in response to these messages.
+.lp
+The main drawback to this idea is that now we have added IPC
+to the mix introducing new and interesting race conditions.
+.lp
+Otherwise this solution is a surprisingly effective,
+but chroot(2)/jail(2) requirements prevents a simple implementation
+and running a daemon per jail would become an administrative
+nightmare.
+.lp
+Another pitfall of
+this approach is that we are not able to remount the root filesystem
+read-write at boot until we have a device node for the root device,
+but if this node is missing we cannot create it with a daemon since
+the root filesystem (and hence /dev) is read-only.
+Adding a read-write memory-filesystem mount /dev to solve this problem
+does not improve
+the architectural qualities further and certainly the KISS principle has
+been violated by now.
+.lp
+The final and in the end only satisfactory solution is to write a ``DEVFS''
+which mounts on ``/dev''.
+.lp
+The good news is that it does solve the problem with chroot(2) and jail(2):
+just mount a DEVFS instance on the ``dev'' directory inside the filesystem
+subtree where the chroot or jail lives. Having a mountpoint gives us
+a convenient place to keep track of the local state of this DEVFS mount.
+.lp
+The bad news is that it takes a lot of cleanup and care to implement
+a DEVFS into a UNIX kernel.
+.sh 1 "DEVFS architectural decisions"
+.lp
+Before implementing a DEVFS, it is necessary to decide on a range
+of corner cases in behaviour, and some of these choices have proved
+surprisingly hard to settle for the FreeBSD project.
+.sh 2 "The ``persistence'' issue"
+.lp
+When DEVFS in FreeBSD was initially presented at a BoF at the 1995
+USENIX Technical Conference in New Orleans,
+a group of people demanded that it provide ``persistence''
+for administrative changes.
+.lp
+When trying to get a definition of ``persistence'', people can generally
+agree that if the administrator changes the access control bits of
+a device node, they want that mode to survive across reboots.
+.lp
+Once more tricky examples of the sort of manipulations one can do
+on special files are proposed, people rapidly disagree about what
+should be supported and what should not.
+.lp
+For instance, imagine a
+system with one floppy drive which appears in DEVFS as ``/dev/fd0''.
+Now the administrator, in order to get some badly written software
+to run, links this to ``/dev/fd1'':
+.(b M
+\fC\s-2ln /dev/fd0 /dev/fd1\fP\s+2
+.)b
+This works as expected and with persistence in DEVFS, the link is
+still there after a reboot.
+But what if after a reboot another floppy drive has been connected
+to the system?
+This drive would naturally have the name ``/dev/fd1'',
+but this name is now occupied by the administrators hard link.
+Should the link be broken?
+Should the new floppy drive be called
+``/dev/fd2''? Nobody can agree on anything but the ugliness of the
+situation.
+.lp
+Given that we are no longer dependent on DEC Field engineers to
+change all four wheels to see which one is flat, the basic assumption
+that the machine has a constant hardware configuration is simply no
+longer true.
+The new assumption one should start from when analysing this
+issue is that when the system boots, we cannot know what devices we
+will find, and we can not know if the devices we do find
+are the same ones we had when the system was last shut down.
+.lp
+And in fact, this is very much the case with laptops today: if I attach
+my IOmega Zip drive to my laptop it appears like a SCSI disk named
+``/dev/da0'', but so does the RAID-5 array attached to the PCI SCSI controller
+installed in my laptop's docking station. If I change mode to ``a+rw''
+on the Zip drive, do I want that mode to apply to the RAID-5 as well?
+Unlikely.
+.lp
+And what if we have persistent information about the mode of
+device ``/dev/sio0'', but we boot and do not find any sio devices?
+Do we keep the information in our device-persistence registry?
+How long do we keep it? If I borrow a modem card,
+set the permissions to some non-standard value like 0666,
+and then attach some other serial device a year from now - do I
+want some old permissions changes to come back and haunt me,
+just because they both happened to be ``/dev/sio0''?
+Unlikely.
+.lp
+The fact that more people have laptop computers today than
+five years ago, and the fact that nobody has been able to credibly
+propose where a persistent DEVFS would actually store the
+information about these things in the first place has settled the issue.
+.lp
+Persistence may be the right answer, but to the
+wrong question: persistence is not a desirable property for a DEVFS
+when the hardware configuration may change literally at any time.
+.sh 2 "Who decides on the names?"
+.lp
+In a DEVFS-enabled system, the responsibility for creating nodes in
+/dev shifts to the device drivers, and consequently the device
+drivers get to choose the names of the device files.
+In addition an initial value for owner, group and mode bits are
+provided by the device driver.
+.lp
+But should it be possible to rename ``/dev/lpt0'' to ``/dev/myprinter''?
+While the obvious affirmative answer is easy to arrive at, it leaves
+a lot to be desired once the implications are unmasked.
+.lp
+Most device drivers know their own name and use it purposefully in
+their debug and log messages to identify themselves.
+Furthermore, the ``NewBus'' [NewBus] infrastructure facility,
+which ties hardware to device drivers, identifies things by name
+and unit numbers.
+.lp
+A very common way to report errors in fact:
+.(b M
+.vs -3
+\fC\s-2#define LPT_NAME "lpt" /* our official name */
+[...]
+printf(LPT_NAME
+ ": cannot alloc ppbus (%d)!", error);\fP\s+2
+.vs +3
+.)b
+.lp
+So despite the user renaming the device node pointing to the printer
+to ``myprinter'', this has absolutely no effect in the kernel and can
+be considered a userland aliasing operation.
+.lp
+The decision was therefore made that it should not be possible to rename
+device nodes since it would only lead to confusion and because the desired
+effect could be attained by giving the user the ability to create
+symlinks in DEVFS.
+.sh 2 "On-demand device creation"
+.lp
+Pseudo-devices like pty, tun and bpf,
+but also some real devices, may not pre-emptively create entries for all
+possible device nodes. It would be a pointless waste of resources
+to always create 1000 ptys just in case they are needed,
+and in the worst case more than 1800 device nodes would be needed per
+physical disk to represent all possible slices and partitions.
+.lp
+For pseudo-devices the task at hand is to make a magic device node,
+``/dev/pty'', which when opened will magically transmogrify into the
+first available pty subdevice, maybe ``/dev/pty123''.
+.lp
+Device submodes, on the other hand, work by having multiple
+entries in /dev, each with a different minor number, as a way to instruct
+the device driver in aspects of its operation. The most widespread
+example is probably ``/dev/mt0'' and ``/dev/nmt0'', where the node
+with the extra ``n''
+instructs the tape device driver to not rewind on close.\**
+.(f
+\** This is the answer to the question in footnote number 2.
+.)f
+.lp
+Some UNIX systems have solved the problem for pseudo-devices by
+creating magic cloning devices like ``/dev/tcp''.
+When a cloning device is opened,
+it finds a free instance and through vnode and file descriptor mangling
+return this new device to the opening process.
+.lp
+This scheme has two disadvantages: the complexity of switching vnodes
+in midstream is non-trivial, but even worse is the fact that it
+does not work for
+submodes for a device because it only reacts to one particular /dev entry.
+.lp
+The solution for both needs is a more flexible on-demand device
+creation, implemented in FreeBSD as a two-level lookup.
+When a
+filename is looked up in DEVFS, a match in the existing device nodes is
+sought first and if found, returned.
+If no match is found, device drivers are polled in turn to ask if
+they would be able to synthesise a device node of the given name.
+.lp
+The device driver gets a chance to modify the name
+and create a device with make_dev().
+If one of the drivers succeeds in this, the lookup is started over and
+the newly found device node is returned:
+.(b M
+.vs -3
+\fC\s-2pty_clone()
+ if (name != "pty")
+ return(NULL); /* no luck */
+ n = find_next_unit();
+ dev = make_dev(...,n,"pty%d",n);
+ name = dev->name;
+ return(dev);\fP\s+2
+.vs +3
+.)b
+.lp
+An interesting mixed use of this mechanism is with the sound device drivers.
+Modern sound devices have multiple channels, presumably to allow the
+user to listen to CNN, Napstered MP3 files and Quake sound effects at
+the same time.
+The only problem is that all applications attempt to open ``/dev/dsp''
+since they have no concept of multiple sound devices.
+The sound device drivers use the cloning facility to direct ``/dev/dsp''
+to the first available sound channel completely transparently to the
+process.
+.lp
+There are very few drawbacks to this mechanism, the major one being
+that ``ls /dev'' now errs on the sparse side instead of the rich when used
+as a system device inventory, a practice which has always been
+of dubious precision at best.
+.sh 2 "Deleting and recreating devices"
+.lp
+Deleting device nodes is no problem to implement, but as likely as not,
+some people will want a method to get them back.
+Since only the device driver know how to create a given device,
+recreation cannot be performed solely on the basis of the parameters
+provided by a process in userland.
+.lp
+In order to not complicate the code which updates the directory
+structure for a mountpoint to reflect changes in the DEVFS inode list,
+a deleted entry is merely marked with DE_WHITEOUT instead of being
+removed entirely.
+Otherwise a separate list would be needed for inodes which we had
+deleted so that they would not be mistaken for new inodes.
+.lp
+The obvious way to recreate deleted devices is to let mknod(2) do it
+by matching the name and disregarding the major/minor arguments.
+Recreating the device with mknod(2) will simply remove the DE_WHITEOUT
+flag.
+.sh 2 "Jail(2), chroot(2) and DEVFS"
+.lp
+The primary requirement from facilities like jail(2) and chroot(2)
+is that it must be possible to control the contents of a DEVFS mount
+point.
+.lp
+Obviously, it would not be desirable for dynamic devices to pop
+into existence in the carefully pruned /dev of jails so it must be
+possible to mark a DEVFS mountpoint as ``no new devices''.
+And in the same way, the jailed root should not be able to recreate
+device nodes which the real root has removed.
+.lp
+These behaviours will be controlled with mount options, but these have not
+yet been implemented because FreeBSD has run out of bitmap flags for
+mount options, and a new unlimited mount option implementation is
+still not in place at the time of writing.
+.lp
+One mount option ``jaildevfs'', will restrict the contents of the
+DEVFS mountpoint to the ``normal set'' of devices for a jail and
+automatically hide all future devices and make it impossible
+for a jailed root to un-hide hidden entries while letting an un-jailed
+root do so.
+.lp
+Mounting or remounting read-only, will prevent all future
+devices from appearing and will make it impossible to
+hide or un-hide entries in the mountpoint.
+This is probably only useful for chroots or jails where no tty
+access is intended since cloning will not work either.
+.lp
+More mount options may be needed as more experience is gained.
+.sh 2 "Default mode, owner & group"
+.lp
+When a device driver creates a device node, and a DEVFS mount adds it
+to its directory tree, it needs to have some values for the access
+control fields: mode, owner and group.
+.lp
+Currently, the device driver specifies the initial values in the
+make_dev() call, but this is far from optimal.
+For one thing, embedding magic UIDs and GIDs in the kernel is simply
+bad style unless they are numerically zero.
+More seriously, they represent compile-time defaults which in these
+enlightened days is rather old-fashioned.
+.lp
+.sh 1 "Cleaning up before we build: struct specinfo and dev_t"
+.lp
+Most of the rest of the paper will be about the various challenges
+and issues in the implementation of DEVFS in FreeBSD.
+All of this should be applicable to other systems derived from
+4.4BSD-Lite as well.
+.lp
+POSIX has defined a type called ``dev_t'' which is the identity of a device.
+This is mainly for use in the few system calls which knows about devices:
+stat(2), fstat(2) and mknod(2).
+A dev_t is constructed by logically OR'ing
+the major# and minor# for the device.
+Since those have been defined
+as having no overlapping bits, the major# and minor#
+can be retrieved from the dev_t by a simple masking operation.
+.lp
+Although the kernel had a well-defined concept of any particular
+device it did not have a data structure to represent "a device".
+The device driver has such a structure, traditionally called ``softc''
+but the high kernel does not (and should not!) have access to the
+device driver's private data structures.
+.lp
+It is an interesting tale how things got to be this way,\**
+.(f
+\** Basically, devices should have been moved up with sockets and
+pipes at the file descriptor level when the VFS layering was introduced,
+rather than have all the special casing throughout the vnode system.
+.)f
+but for now just record for
+a fact how the actual relationship between the data structures was
+in the 4.4BSD release (Fig. 1). [44BSDBook]
+.(z
+.PS 3
+F: box "file" "handle"
+arrow down from F.s
+V: box "vnode"
+arrow right from V.e
+S: box "specinfo"
+arrow down from V.s
+I: box "inode"
+arrow right from I.e
+C: box invis "devsw[]" "[major#]"
+arrow down from C.s
+D: box "device" "driver"
+line right from D.e
+box invis "softc[]" "[minor#]"
+F2: box "file" "handle" at F + (2.5,0)
+arrow down from F2.s
+V2: box "vnode"
+arrow right from V2.e
+S2: box "specinfo"
+arrow down from V2.s
+I2: box "inode"
+arrow left from I2.w
+.PE
+.ce 1
+Fig. 1 - Data structures in 4.4BSD
+.)z
+.lp
+As for all other files, a vnode references a filesystem inode, but
+in addition it points to a ``specinfo'' structure. In the inode
+we find the dev_t which is used to reference the device driver.
+.lp
+Access to the device driver happens by extracting the major# from
+the dev_t, indexing through the global devsw[] array to locate
+the device driver's entry point.
+.lp
+The device driver will extract the minor# from the dev_t and use
+that as the index into the softc array of private data per device.
+.lp
+The ``specinfo'' structure is a little sidekick vnodes grew underway,
+and is used to find all vnodes which reference the same device (i.e.
+they have the same major# and minor#).
+This linkage is used to determine
+which vnode is the ``chosen one'' for this device, and to keep track of
+open(2)/close(2) against this device.
+The actual implementation was an inefficient hash implementation,
+which depending on the vnode reclamation rate and /dev directory lookup
+traffic, may become a measurable performance liability.
+.sh 2 "The new vnode/inode/dev_t layout"
+.lp
+In the new layout (Fig. 2) the specinfo structure takes a central
+role. There is only one instanace of struct specinfo per
+device (i.e. unique major#
+and minor# combination) and all vnodes referencing this device point
+to this structure directly.
+.(z
+.PS 2.25
+F: box "file" "handle"
+arrow down from F.s
+V: box "vnode"
+arrow right from V.e
+S: box "specinfo"
+arrow down from V.s
+I: box "inode"
+F2: box "file" "handle" at F + (2.5,0)
+arrow down from F2.s
+V2: box "vnode"
+arrow left from V2.w
+arrow down from V2.s
+I2: box "inode"
+arrow down from S.s
+D: box "device" "driver"
+.PE
+.ce 1
+Fig. 2 - The new FreeBSD data structures.
+.)z
+.lp
+In userland, a dev_t is still the logical OR of the major# and
+minor#, but this entity is now called a udev_t in the kernel.
+In the kernel a dev_t is now a pointer to a struct specinfo.
+.lp
+All vnodes referencing a device are linked to a list hanging
+directly off the specinfo structure, removing the need for the
+hash table and consequently simplifying and speeding up a lot
+of code dealing with vnode instantiation, retirement and
+name-caching.
+.lp
+The entry points to the device driver are stored in the specinfo
+structure, removing the need for the devsw[] array and allowing
+device drivers to use separate entrypoints for various minor numbers.
+.lp
+This is is very convenient for devices which have a ``control''
+device for management and tuning. The control device, almost always
+have entirely separate open/close/ioctl implementations [MD.C].
+.lp
+In addition to this, two data elements are included in the specinfo
+structure but ``owned'' by the device driver. Typically the
+device driver will store a pointer to the softc structure in
+one of these, and unit number or mode information in the other.
+.lp
+This removes the need for drivers to find the softc using array
+indexing based on the minor#, and at the same time has obliviated
+the need for the compiled-in ``NFOO'' constants which traditionally
+determined how many softc structures and therefore devices
+the driver could support.\**
+.(f
+\** Not to mention all the drivers which implemented panic(2)
+because they forgot to perform bounds checking on the index before
+using it on their softc arrays.
+.)f
+.lp
+There are some trivial technical issues relating to allocating
+the storage for specinfo early in the boot sequence and how to
+find a specinfo from the udev_t/major#+minor#, but they will
+not be discussed here.
+.sh 2 "Creating and destroying devices"
+.lp
+Ideally, devices should only be created and
+destroyed by the device drivers which know what devices are present.
+This is accomplished with the make_dev() and destroy_dev()
+function calls.
+.lp
+Life is seldom quite that simple. The operating system might be called
+on to act as a NFS server for a diskless workstation, possibly even
+of a different architecture, so we still need to be able to represent
+device nodes with no device driver backing in the filesystems and
+consequently we need to be able to create a specinfo from
+the major#+minor# in these inodes when we encounter them.
+In practice this is quite trivial, but in a few places in the code
+one needs to be aware of the existence
+of both ``named'' and ``anonymous'' specinfo structures.
+.lp
+The make_dev() call creates a specinfo structure and populates
+it with driver entry points, major#, minor#, device node name
+(for instance ``lpt0''), UID, GID and access mode bits. The return
+value is a dev_t (i.e., a pointer to struct specinfo).
+If the device driver determines that the device is no longer
+present, it calls destroy_dev(), giving a dev_t as argument
+and the dev_t will be cleaned and converted to an anonymous dev_t.
+.lp
+Once created with make_dev() a named dev_t exists until destroy_dev()
+is called by the driver. The driver can rely on this and keep state
+in the fields in dev_t which is reserved for driver use.
+.sh 1 "DEVFS"
+.lp
+By now we have all the relevant information about each device node
+collected in struct specinfo but we still have one problem to
+solve before we can add the DEVFS filesystem on top of it.
+.sh 2 "The interrupt problem"
+.lp
+Some device drivers, notably the CAM/SCSI subsystem in FreeBSD
+will discover changes in the device configuration inside an interrupt
+routine.
+.lp
+This imposes some limitations on what can and should do be done:
+first one should minimise the amount
+of work done in an interrupt routine for performance reasons;
+second, to avoid deadlocks, vnodes and mountpoints should not be
+accessed from an interrupt routine.
+.lp
+Also, in addition to the locking issue,
+a machine can have many instances of DEVFS mounted:
+for a jail(8) based virtual-machine web-server several hundred instances
+is not unheard of, making it far too expensive to update all of them
+in an interrupt routine.
+.lp
+The solution to this problem is to do all the filesystem work on
+the filesystem side of DEVFS and use atomically manipulated integer indices
+(``inode numbers'') as the barrier between the two sides.
+.lp
+The functions called from the device drivers, make_dev(), destroy_dev()
+&c. only manipulate the DEVFS inode number of the dev_t in
+question and do not even get near any mountpoints or vnodes.
+.lp
+For make_dev() the task is to assign a unique inode number to the
+dev_t and store the dev_t in the DEVFS-global inode-to-dev_t array.
+.(b M
+.vs -3
+\fC\s-2make_dev(...)
+ store argument values in dev_t
+ assign unique inode number to dev_t
+ atomically insert dev_t into inode_array\fP\s+2
+.vs +3
+.)b
+.lp
+For destroy_dev() the task is the opposite: clear the inode number
+in the dev_t and NULL the pointer in the devfs-global inode-to-dev_t
+array.
+.(b M
+.vs -3
+\fC\s-2destroy_dev(...)
+ clear fields in dev_t
+ zero dev_t inode number.
+ atomically clear entry in inode_array\fP\s+2
+.vs +3
+.)b
+.lp
+Both functions conclude by atomically incrementing a global variable
+\fCdevfs_generation\fP to leave an indication to the filesystem
+side that something has changed.
+.lp
+By modifying the global state only with atomic instructions, locks
+have been entirely avoided in this part of the code which means that
+the make_dev() and destroy_dev() functions can be called from practically
+anywhere in the kernel at any time.
+.lp
+On the filesystem side of DEVFS, the only two vnode methods which examine
+or rely on the directory structure, VOP_LOOKUP and VOP_READDIR,
+call the function devfs_populate() to update their mountpoint's view
+of the device hierarchy to match current reality before doing any work.
+.(b M
+.vs -3
+\fC\s-2devfs_readdir(...)
+ devfs_populate(...)
+ ...\fP\s+2
+.)b
+.vs +3
+.lp
+The devfs_populate() function, compares the current \fCdevfs_generation\fP
+to the value saved in the mountpoint last time devfs_populate() completed
+and if (actually: while) they differ a linear run is made through the
+devfs-global inode-array and the directory tree of the mountpoint is
+brought up to date.
+.lp
+The actual code is slightly more complicated than shown in the pseudo-code
+here because it has to deal with subdirectories and hidden entries.
+.(b M
+.vs -3
+\fC\s-2devfs_populate(...)
+ while (mount->generation != devfs_generation)
+ for i in all inodes
+ if inode created)
+ create directory entry
+ else if inode destroyed
+ remove directory entry
+.vs +3
+.)b
+.lp
+Access to the global DEVFS inode table is again implemented
+with atomic instructions and failsafe retries to avoid the
+need for locking.
+.lp
+From a performance point of view this scheme also means that a particular
+DEVFS mountpoint is not updated until it needs to be, and then always by
+a process belonging to the jail in question thus minimising and
+distributing the CPU load.
+.sh 1 "Device-driver impact"
+.lp
+All these changes have had a significant impact on how device drivers
+interact with the rest of the kernel regarding registration of
+devices.
+.lp
+If we look first at the ``before'' image in Fig. 3, we notice first
+the NFOO define which imposes a firm upper limit on the number of
+devices the kernel can deal with.
+Also notice that the softc structure for all of them is allocated
+at compile time.
+This is because most device drivers (and texts on writing device
+drivers) are from before the general
+kernel malloc facility [Mckusick1988] was introduced into the BSD kernel.
+.lp
+.(b M
+.vs -3
+\fC\s-2
+#ifndef NFOO
+# define NFOO 4
+#endif
+
+struct foo_softc {
+ ...
+} foo_softc[NFOO];
+
+int nfoo = 0;
+
+foo_open(dev, ...)
+{
+ int unit = minor(dev);
+ struct foo_softc *sc;
+
+ if (unit >= NFOO || unit >= nfoo)
+ return (ENXIO);
+
+ sc = &foo_softc[unit]
+
+ ...
+}
+
+foo_attach(...)
+{
+ struct foo_softc *sc;
+ static int once;
+
+ ...
+ if (nfoo >= NFOO) {
+ /* Have hardware, can't handle */
+ return (-1);
+ }
+ sc = &foo_softc[nfoo++];
+ if (!once) {
+ cdevsw_add(&cdevsw);
+ once++;
+ }
+ ...
+}
+\fP\s+2
+Fig. 3 - Device-driver, old style.
+.vs +3
+.)b
+.lp
+Also notice how range checking is needed to make sure that the
+minor# is inside range. This code gets more complex if device-numbering
+is sparse. Code equivalent to that shown in the foo_open() routine
+would also be needed in foo_read(), foo_write(), foo_ioctl() &c.
+.lp
+Finally notice how the attach routine needs to remember to register
+the cdevsw structure (not shown) when the first device is found.
+.lp
+Now, compare this to our ``after'' image in Fig. 4.
+NFOO is totally gone and so is the compile time allocation
+of space for softc structures.
+.lp
+The foo_open (and foo_close, foo_ioctl &c) functions can now
+derive the softc pointer directly from the dev_t they receive
+as an argument.
+.lp
+.(b M
+.vs -3
+\fC\s-2
+struct foo_softc {
+ ....
+};
+
+int nfoo;
+
+foo_open(dev, ...)
+{
+ struct foo_softc *sc = dev->si_drv1;
+
+ ...
+}
+
+foo_attach(...)
+{
+ struct foo_softc *sc;
+
+ ...
+ sc = MALLOC(..., M_ZERO);
+ if (sc == NULL) {
+ /* Have hardware, can't handle */
+ return (-1);
+ }
+ sc->dev = make_dev(&cdevsw, nfoo,
+ UID_ROOT, GID_WHEEL, 0644,
+ "foo%d", nfoo);
+ nfoo++;
+ sc->dev->si_drv1 = sc;
+ ...
+}
+\fP\s+2
+Fig. 4 - Device-driver, new style.
+.vs +3
+.)b
+.lp
+In foo_attach() we can now attach to all the devices we can
+allocate memory for and we register the cdevsw structure per
+dev_t rather than globally.
+.lp
+This last trick is what allows us to discard all bounds checking
+in the foo_open() &c. routines, because they can only be
+called through the cdevsw, and the cdevsw is only attached to
+dev_t's which foo_attach() has created.
+There is no way to end
+up in foo_open() with a dev_t not created by foo_attach().
+.lp
+In the two examples here, the difference is only 10 lines of source
+code, primarily because only one of the worker functions of the
+device driver is shown.
+In real device drivers it is not uncommon to save 50 or more lines
+of source code which typically is about a percent or two of the
+entire driver.
+.sh 1 "Future work"
+.lp
+Apart from some minor issues to be cleaned up, DEVFS is now a reality
+and future work therefore is likely concentrate on applying the
+facilities and functionality of DEVFS to FreeBSD.
+.sh 2 "devd"
+.lp
+It would be logical to complement DEVFS with a ``device-daemon'' which
+could configure and de-configure devices as they come and go.
+When a disk appears, mount it.
+When a network interface appears, configure it.
+And in some configurable way allow the user to customise the action,
+so that for instance images will automatically be copied off the
+flash-based media from a camera, &c.
+.lp
+In this context it is good to question how we view dynamic devices.
+If for instance a printer is removed in the middle of a print job
+and another printer arrives a moment later, should the system
+automatically continue the print job on this new printer?
+When a disk-like device arrives, should we always mount it? Should
+we have a database of known disk-like devices to tell us where to
+mount it, what permissions to give the mountpoint?
+Some computers come in multiple configurations, for instance laptops
+with and without their docking station. How do we want to present
+this to the users and what behaviour do the users expect?
+.sh 2 "Pathname length limitations"
+.lp
+In order to simplify memory management in the early stages of boot,
+the pathname relative to the mountpoint is presently stored in a
+small fixed size buffer inside struct specinfo.
+It should be possible to use filenames as long as the system otherwise
+permits, so some kind of extension mechanism is called for.
+.lp
+Since it cannot be guaranteed that memory can be allocated in
+all the possible scenarios where make_dev() can be called, it may
+be necessary to mandate that the caller allocates the buffer if
+the content will not fit inside the default buffer size.
+.sh 2 "Initial access parameter selection"
+.lp
+As it is now, device drivers propose the initial mode, owner and group
+for the device nodes, but it would be more flexible if it were possible
+to give the kernel a set of rules, much like packet filtering rules,
+which allow the user to set the wanted policy for new devices.
+Such a mechanism could also be used to filter new devices for mount
+points in jails and to determine other behaviour.
+.lp
+Doing these things from userland results in some awkward race conditions
+and software bloat for embedded systems, so a kernel approach may be more
+suitable.
+.sh 2 "Applications of on-demand device creation"
+.lp
+The facility for on-demand creation of devices has some very interesting
+possibilities.
+.lp
+One planned use is to enable user-controlled labelling
+of disks.
+Today disks have names like /dev/da0, /dev/ad4, but since
+this numbering is topological any change in the hardware configuration
+may rename the disks, causing /etc/fstab and backup procedures
+to get out of sync with the hardware.
+.lp
+The current idea is to store on the media of the disk a user-chosen
+disk name and allow access through this name, so that for instance
+/dev/mydisk0
+would be a symlink to whatever topological name the disk might have
+at any given time.
+.lp
+To simplify this and to avoid a forest of symlinks, it will probably
+be decided to move all the sub-divisions of a disk into one subdirectory
+per disk so just a single symlink can do the job.
+In practice that means that the current /dev/ad0s2f will become
+something like /dev/ad0/s2f and so on.
+Obviously, in the same way, disks could also be accessed by their
+topological address, down to the specific path in a SAN environment.
+.lp
+Another potential use could be for automated offline data media libraries.
+It would be quite trivial to make it possible to access all the media
+in the library using /dev/lib/$LABEL which would be a remarkable
+simplification compared with most current automated retrieval facilities.
+.lp
+Another use could be to access devices by parameter rather than by
+name. One could imagine sending a printjob to /dev/printer/color/A2
+and behind the scenes a search would be made for a device with the
+correct properties and paper-handling facilities.
+.sh 1 "Conclusion"
+.lp
+DEVFS has been successfully implemented in FreeBSD,
+including a powerful, simple and flexible solution supporting
+pseudo-devices and on-demand device node creation.
+.lp
+Contrary to the trend, the implementation added functionality
+with a net decrease in source lines,
+primarily because of the improved API seen from device drivers point of view.
+.lp
+Even if DEVFS is not desired, other 4.4BSD derived UNIX variants
+would probably benefit from adopting the dev_t/specinfo related
+cleanup.
+.sh 1 "Acknowledgements"
+.lp
+I first got started on DEVFS in 1989 because the abysmal performance
+of the Olivetti M250 computer forced me to implement a network-disk-device
+for Minix in order to retain my sanity.
+That initial work led to a
+crude but working DEVFS for Minix, so obviously both Andrew Tannenbaum
+and Olivetti deserve credit for inspiration.
+.lp
+Julian Elischer implemented a DEVFS for FreeBSD around 1994 which never
+quite made it to maturity and subsequently was abandoned.
+.lp
+Bruce Evans deserves special credit not only for his keen eye for detail,
+and his competent criticism but also for his enthusiastic resistance to the
+very concept of DEVFS.
+.lp
+Many thanks to the people who took time to help me stamp out ``Danglish''
+through their reviews and comments: Chris Demetriou, Paul Richards,
+Brian Somers, Nik Clayton, and Hanne Munkholm.
+Any remaining insults to proper use of english language are my own fault.
+.\" (list & why)
+.sh 1 "References"
+.lp
+[44BSDBook]
+Mckusick, Bostic, Karels & Quarterman:
+``The Design and Implementation of 4.4 BSD Operating System.''
+Addison Wesley, 1996, ISBN 0-201-54979-4.
+.lp
+[Heidemann91a]
+John S. Heidemann:
+``Stackable layers: an architecture for filesystem development.''
+Master's thesis, University of California, Los Angeles, July 1991.
+Available as UCLA technical report CSD-910056.
+.lp
+[Kamp2000]
+Poul-Henning Kamp and Robert N. M. Watson:
+``Confining the Omnipotent root.''
+Proceedings of the SANE 2000 Conference.
+Available in FreeBSD distributions in \fC/usr/share/papers\fP.
+.lp
+[MD.C]
+Poul-Henning Kamp et al:
+FreeBSD memory disk driver:
+\fCsrc/sys/dev/md/md.c\fP
+.lp
+[Mckusick1988]
+Marshall Kirk Mckusick, Mike J. Karels:
+``Design of a General Purpose Memory Allocator for the 4.3BSD UNIX-Kernel''
+Proceedings of the San Francisco USENIX Conference, pp. 295-303, June 1988.
+.lp
+[Mckusick1999]
+Dr. Marshall Kirk Mckusick:
+Private email communication.
+\fI``According to the SCCS logs, the chroot call was added by Bill Joy
+on March 18, 1982 approximately 1.5 years before 4.2BSD was released.
+That was well before we had ftp servers of any sort (ftp did not
+show up in the source tree until January 1983). My best guess as
+to its purpose was to allow Bill to chroot into the /4.2BSD build
+directory and build a system using only the files, include files,
+etc contained in that tree. That was the only use of chroot that
+I remember from the early days.''\fP
+.lp
+[Mckusick2000]
+Dr. Marshall Kirk Mckusick:
+Private communication at BSDcon2000 conference.
+\fI``I have not used block devices since I wrote FFS and that
+was \fPmany\fI years ago.''\fP
+.lp
+[NewBus]
+NewBus is a subsystem which provides most of the glue between
+hardware and device drivers. Despite the importance of this
+there has never been published any good overview documentation
+for it.
+The following article by Alexander Langer in ``Dæmonnews'' is
+the best reference I can come up with:
+\fC\s-2http://www.daemonnews.org/200007/newbus-intro.html\fP\s+2
+.lp
+[Pike2000]
+Rob Pike:
+``Systems Software Research is Irrelevant.''
+\fC\s-2http://www.cs.bell\-labs.com/who/rob/utah2000.pdf\fP\s+2
+.lp
+[Pike90a]
+Rob Pike, Dave Presotto, Ken Thompson and Howard Trickey:
+``Plan 9 from Bell Labs.''
+Proceedings of the Summer 1990 UKUUG Conference.
+.lp
+[Pike92a]
+Rob Pike, Dave Presotto, Ken Thompson, Howard Trickey and Phil Winterbottom:
+``The Use of Name Spaces in Plan 9.''
+Proceedings of the 5th ACM SIGOPS Workshop.
+.lp
+[Raspe1785]
+Rudolf Erich Raspe:
+``Baron Münchhausen's Narrative of his marvellous Travels and Campaigns in Russia.''
+Kearsley, 1785.
+.lp
+[Ritchie74]
+D.M. Ritchie and K. Thompson:
+``The UNIX Time-Sharing System''
+Communications of the ACM, Vol. 17, No. 7, July 1974.
+.lp
+[Ritchie98]
+Dennis Ritchie: private conversation at USENIX Annual Technical Conference
+New Orleans, 1998.
+.lp
+[Thompson78]
+Ken Thompson:
+``UNIX Implementation''
+The Bell System Technical Journal, vol 57, 1978, number 6 (part 2) p. 1931ff.
diff --git a/share/doc/papers/diskperf/Makefile b/share/doc/papers/diskperf/Makefile
new file mode 100644
index 0000000..7f7670c
--- /dev/null
+++ b/share/doc/papers/diskperf/Makefile
@@ -0,0 +1,11 @@
+# From: @(#)Makefile 6.3 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= diskperf
+SRCS= abs.ms motivation.ms equip.ms methodology.ms tests.ms \
+ results.ms conclusions.ms appendix.ms
+MACROS= -ms
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/diskperf/abs.ms b/share/doc/papers/diskperf/abs.ms
new file mode 100644
index 0000000..a61104d
--- /dev/null
+++ b/share/doc/papers/diskperf/abs.ms
@@ -0,0 +1,176 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)abs.ms 6.2 (Berkeley) 4/16/91
+.\"
+.if n .ND
+.TL
+Performance Effects of Disk Subsystem Choices
+for VAX\(dg Systems Running 4.2BSD UNIX*
+.sp
+Revised July 27, 1983
+.AU
+Bob Kridle
+.AI
+mt Xinu
+2560 9th Street
+Suite #312
+Berkeley, California 94710
+.AU
+Marshall Kirk McKusick\(dd
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, CA 94720
+.AB
+.FS
+\(dgVAX, UNIBUS, and MASSBUS are trademarks of Digital Equipment Corporation.
+.FE
+.FS
+* UNIX is a trademark of Bell Laboratories.
+.FE
+.FS
+\(ddThis work was supported under grants from
+the National Science Foundation under grant MCS80-05144,
+and the Defense Advance Research Projects Agency (DoD) under
+Arpa Order No. 4031 monitored by Naval Electronic System Command under
+Contract No. N00039-82-C-0235.
+.FE
+Measurements were made of the UNIX file system
+throughput for various I/O operations using the most attractive currently
+available Winchester disks and controllers attached to both the
+native busses (SBI/CMI) and the UNIBUS on both VAX 11/780s and VAX 11/750s.
+The tests were designed to highlight the performance of single
+and dual drive subsystems operating in the 4.2BSD
+.I
+fast file system
+.R
+environment.
+Many of the results of the tests were initially counter-intuitive
+and revealed several important aspects of the VAX implementations
+which were surprising to us.
+.PP
+The hardware used included two Fujitsu 2351A
+``Eagle''
+disk drives on each of two foreign-vendor disk controllers
+and two DEC RA-81 disk drives on a DEC UDA-50 disk controller.
+The foreign-vendor controllers were Emulex SC750, SC780
+and Systems Industries 9900 native bus interfaced controllers.
+The DEC UDA-50 controller is a UNIBUS interfaced, heavily buffered
+controller which is the first implementation of a new DEC storage
+system architecture, DSA.
+.PP
+One of the most important results of our testing was the correction
+of several timing parameters in our device handler for devices
+with an RH750/RH780 type interface and having high burst transfer
+rates.
+The correction of these parameters resulted in an increase in
+performance of over twenty percent in some cases.
+In addition, one of the controller manufacturers altered their bus
+arbitration scheme to produce another increase in throughput.
+.AE
+.LP
+.de PT
+.lt \\n(LLu
+.pc %
+.nr PN \\n%
+.tl '\\*(LH'\\*(CH'\\*(RH'
+.lt \\n(.lu
+..
+.af PN i
+.ds LH Performance
+.ds RH Contents
+.bp 1
+.\".if t .ds CF July 27, 1983
+.\".if t .ds LF CSRG TR/8
+.\".if t .ds RF Kridle, et. al.
+.ce
+.B "TABLE OF CONTENTS"
+.LP
+.sp 1
+.nf
+.B "1. Motivation"
+.LP
+.sp .5v
+.nf
+.B "2. Equipment
+2.1. DEC UDA50 disk controller
+2.2. Emulex SC750/SC780 disk controllers
+2.3. Systems Industries 9900 disk controller
+2.4. DEC RA81 disk drives
+2.5. Fujitsu 2351A disk drives
+.LP
+.sp .5v
+.nf
+.B "3. Methodology
+.LP
+.sp .5v
+.nf
+.B "4. Tests
+.LP
+.sp .5v
+.nf
+.B "5. Results
+.LP
+.sp .5v
+.nf
+.B "6. Conclusions
+.LP
+.sp .5v
+.nf
+.B Acknowledgements
+.LP
+.sp .5v
+.nf
+.B References
+.LP
+.sp .5v
+.nf
+.B "Appendix A
+A.1. read_8192
+A.2. write_4096
+A.3. write_8192
+A.4. rewrite_8192
+.ds RH Motivation
+.af PN 1
+.bp 1
+.de _d
+.if t .ta .6i 2.1i 2.6i
+.\" 2.94 went to 2.6, 3.64 to 3.30
+.if n .ta .84i 2.6i 3.30i
+..
+.de _f
+.if t .ta .5i 1.25i 2.5i
+.\" 3.5i went to 3.8i
+.if n .ta .7i 1.75i 3.8i
+..
diff --git a/share/doc/papers/diskperf/appendix.ms b/share/doc/papers/diskperf/appendix.ms
new file mode 100644
index 0000000..e059249
--- /dev/null
+++ b/share/doc/papers/diskperf/appendix.ms
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)appendix.ms 6.2 (Berkeley) 4/16/91
+.\"
+.\" .nr H2 1
+.ds RH Appendix A
+.NH
+\s+2Appendix A\s0
+.NH 2
+read_8192
+.PP
+.DS
+#define BUFSIZ 8192
+main( argc, argv)
+char **argv;
+{
+ char buf[BUFSIZ];
+ int i, j;
+
+ j = open(argv[1], 0);
+ for (i = 0; i < 1024; i++)
+ read(j, buf, BUFSIZ);
+}
+.DE
+.NH 2
+write_4096
+.PP
+.DS
+#define BUFSIZ 4096
+main( argc, argv)
+char **argv;
+{
+ char buf[BUFSIZ];
+ int i, j;
+
+ j = creat(argv[1], 0666);
+ for (i = 0; i < 2048; i++)
+ write(j, buf, BUFSIZ);
+}
+.DE
+.NH 2
+write_8192
+.PP
+.DS
+#define BUFSIZ 8192
+main( argc, argv)
+char **argv;
+{
+ char buf[BUFSIZ];
+ int i, j;
+
+ j = creat(argv[1], 0666);
+ for (i = 0; i < 1024; i++)
+ write(j, buf, BUFSIZ);
+}
+.DE
+.bp
+.NH 2
+rewrite_8192
+.PP
+.DS
+#define BUFSIZ 8192
+main( argc, argv)
+char **argv;
+{
+ char buf[BUFSIZ];
+ int i, j;
+
+ j = open(argv[1], 2);
+ for (i = 0; i < 1024; i++)
+ write(j, buf, BUFSIZ);
+}
+.DE
diff --git a/share/doc/papers/diskperf/conclusions.ms b/share/doc/papers/diskperf/conclusions.ms
new file mode 100644
index 0000000..9e20f1a
--- /dev/null
+++ b/share/doc/papers/diskperf/conclusions.ms
@@ -0,0 +1,128 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)conclusions.ms 6.2 (Berkeley) 4/16/91
+.\" $FreeBSD$
+.\"
+.ds RH Conclusions
+.NH
+Conclusions
+.PP
+Peak available throughput is only one criterion
+in most storage system purchasing decisions.
+Most of the VAX UNIX systems we are familiar with
+are not I/O bandwidth constrained.
+Nevertheless, an adequate disk bandwidth is necessary for
+good performance and especially to preserve snappy
+response time.
+All of the disk systems we tested provide more than
+adequate bandwidth for typical VAX UNIX system application.
+Perhaps in some I/O-intensive applications such as
+image processing, more consideration should be given
+to the peak throughput available.
+In most situations, we feel that other factors are more
+important in making a storage choice between the systems we
+tested.
+Cost, reliability, availability, and support are some of these
+factors.
+The maturity of the technology purchased must also be weighed
+against the future value and expandability of newer technologies.
+.PP
+Two important conclusions about storage systems in general
+can be drawn from these tests.
+The first is that buffering can be effective in smoothing
+the effects of lower bus speeds and bus contention.
+Even though the UDA50 is located on the relatively slow
+UNIBUS, its performance is similar to controllers located on
+the faster processor busses.
+However, the SC780 with only one sector of buffering shows that
+little buffering is needed if the underlying bus is fast enough.
+.PP
+Placing more intelligence in the controller seems to hinder UNIX system
+performance more than it helps.
+Our profiling tests have indicated that UNIX spends about
+the same percentage of time in the SC780 driver and the UDA50 driver
+(about 10-14%).
+Normally UNIX uses a disk sort algorithm that separates reads and
+writes into two seek order queues.
+The read queue has priority over the write queue,
+since reads cause processes to block,
+while writes can be done asynchronously.
+This is particularly useful when generating large files,
+as it allows the disk allocator to read
+new disk maps and begin doing new allocations
+while the blocks allocated out of the previous map are written to disk.
+Because the UDA50 handles all block ordering,
+and because it keeps all requests in a single queue,
+there is no way to force the longer seek needed to get the next disk map.
+This disfunction causes all the writes to be done before the disk map read,
+which idles the disk until a new set of blocks can be allocated.
+.PP
+The additional functionality of the UDA50 controller that allows it
+to transfer simultaneously from two drives at once tends to make
+the two drive transfer tests run much more effectively.
+Tuning for the single drive case works more effectively in the two
+drive case than when controllers that cannot handle simultaneous
+transfers are used.
+.ds RH Acknowledgements
+.nr H2 1
+.sp 1
+.NH
+\s+2Acknowledgements\s0
+.PP
+We thank Paul Massigilia and Bill Grace
+of Digital Equipment Corp for helping us run our
+disk tests on their UDA50/RA81.
+We also thank Rich Notari and Paul Ritkowski
+of Emulex for making their machines available
+to us to run our tests of the SC780/Eagles.
+Dan McKinster, then of Systems Industries,
+arranged to make their equipment available for the tests.
+We appreciate the time provided by Bob Gross, Joe Wolf, and
+Sam Leffler on their machines to refine our benchmarks.
+Finally we thank our sponsors,
+the National Science Foundation under grant MCS80-05144,
+and the Defense Advance Research Projects Agency (DoD) under
+Arpa Order No. 4031 monitored by Naval Electronic System Command under
+Contract No. N00039-82-C-0235.
+.ds RH References
+.nr H2 1
+.sp 1
+.NH
+\s+2References\s0
+.LP
+.IP [McKusick83] 20
+M. McKusick, W. Joy, S. Leffler, R. Fabry,
+``A Fast File System for UNIX'',
+\fIACM Transactions on Computer Systems 2\fP, 3.
+pp 181-197, August 1984.
+.ds RH Appendix A
+.bp
diff --git a/share/doc/papers/diskperf/equip.ms b/share/doc/papers/diskperf/equip.ms
new file mode 100644
index 0000000..264ea04
--- /dev/null
+++ b/share/doc/papers/diskperf/equip.ms
@@ -0,0 +1,177 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)equip.ms 6.2 (Berkeley) 4/16/91
+.\"
+.ds RH Equipment
+.NH
+Equipment
+.PP
+Various combinations of the three manufacturers disk controllers,
+and two pairs of Winchester disk drives were tested on both
+VAX 11/780 and VAX 11/750 CPUs. The Emulex and Systems Industries
+disk controllers were interfaced to Fujitsu 2351A
+``Eagle''
+404 Megabyte disk drives.
+The DEC UDA50 disk controller was interfaced to two DEC RA81
+456 Megabyte Winchester disk drives.
+All three controllers were tested on the VAX 780 although
+only the Emulex and DEC controllers were benchmarked on the VAX 11/750.
+Systems Industries makes a VAX 11/750 CMI interface for
+their controller, but we did not have time to test this device.
+In addition, not all the storage systems were tested for
+two drive throughput.
+Each of the controllers and disk drives used in the benchmarks
+is described briefly below.
+.NH 2
+DEC UDA50 disk controller
+.PP
+This is a new controller design which is part of a larger, long range
+storage architecture referred to as
+``DSA''
+or \fBD\fRigital \fBS\fRtorage \fBA\fRrchetecture.
+An important aspect of DSA is migrating a large part
+of the storage management previously handled in the operating
+system to the storage system. Thus, the UDA50 is a much more
+intelligent controller than previous interfaces like the RH750 or
+RH780.
+The UDA50 handles all error correction.
+It also deals with most of the physical storage parameters.
+Typically, system software requests a logical block or
+sequence of blocks.
+The physical locations of these blocks,
+their head, track, and cylinder indices,
+are determined by the controller.
+The UDA50 also orders disk requests to maximize throughput
+where possible, minimizing total seek and rotational delays.
+Where multiple drives are attached to a single controller,
+the UDA50 can interleave
+simultaneous
+data transfers from multiple drives.
+.PP
+The UDA50 is a UNIBUS implementation of a DSA controller.
+It contains 52 sectors of internal buffering to minimize
+the effects of a slow UNIBUS such as the one on the VAX-11/780.
+This buffering also minimizes the effects of contention with
+other UNIBUS peripherals.
+.NH 2
+Emulex SC750/SC780 disk controllers
+.PP
+These two models of the same controller interface to the CMI bus
+of a VAX 11/750 and the SBI bus of a 11/VAX 780, respectively.
+To the operating system, they emulate either an RH750 or
+and RH780.
+The controllers install in the
+MASSBUS
+locations in the CPU cabinets and operate from the
+VAX power suplies.
+They provide an
+``SMD''
+or \fBS\fRtorage \fBM\fRodule \fBD\fRrive
+interface to the disk drives.
+Although a large number of disk drives use this interface, we tested
+the controller exclusively connected to Fujitsu 2351A disks.
+.PP
+The controller ws first implemented for the VAX-11/750 as the SC750
+model several years ago. Although the SC780 was introduced more
+recently, both are stable products with no bugs known to us.
+.NH 2
+System Industries 9900 disk controller
+.PP
+This controller is an evolution of the S.I. 9400 first introduced
+as a UNIBUS SMD interface.
+The 9900 has been enhanced to include an interface to the VAX 11/780 native
+bus, the SBI.
+It has also been upgraded to operate with higher data rate drives such
+as the Fujitsu 2351As we used in this test.
+The controller is contained in its own rack-mounted drawer with an integral
+power supply.
+The interface to the SMD is a four module set which mounts in a
+CPU cabinet slot normally occupied by an RH780.
+The SBI interface derives power from the VAX CPU cabinet power
+supplies.
+.NH 2
+DEC RA81 disk drives
+.PP
+The RA81 is a rack-mountable 456 Megabyte (formatted) Winchester
+disk drive manufactured by DEC.
+It includes a great deal of technology which is an integral part
+of the DEC \fBDSA\fR scheme.
+The novel technology includes a serial packet based communications
+protocol with the controller over a pair of mini-coaxial cables.
+The physical characteristics of the RA81 are shown in the
+table below:
+.DS
+.TS
+box,center;
+c s
+l l.
+DEC RA81 Disk Drive Characteristics
+_
+Peak Transfer Rate 2.2 Mbytes/sec.
+Rotational Speed 3,600 RPM
+Data Sectors/Track 51
+Logical Cylinders 1,248
+Logical Data Heads 14
+Data Capacity 456 Mbytes
+Minimum Seek Time 6 milliseconds
+Average Seek Time 28 milliseconds
+Maximum Seek Time 52 milliseconds
+.TE
+.DE
+.NH 2
+Fujitsu 2351A disk drives
+.PP
+The Fujitsu 2351A disk drive is a Winchester disk drive
+with an SMD controller interface.
+Fujitsu has developed a very good reputation for
+reliable storage products over the last several years.
+The 2351A has the following physical characteristics:
+.DS
+.TS
+box,center;
+c s
+l l.
+Fujitsu 2351A Disk Drive Characteristics
+_
+Peak Transfer Rate 1.859 Mbytes/sec.
+Rotational Speed 3,961 RPM
+Data Sectors/Track 48
+Cylinders 842
+Data Heads 20
+Data Capacity 404 Mbytes
+Minimum Seek Time 5 milliseconds
+Average Seek Time 18 milliseconds
+Maximum Seek Time 35 milliseconds
+.TE
+.DE
+.ds RH Methodology
+.bp
diff --git a/share/doc/papers/diskperf/methodology.ms b/share/doc/papers/diskperf/methodology.ms
new file mode 100644
index 0000000..703d7b6
--- /dev/null
+++ b/share/doc/papers/diskperf/methodology.ms
@@ -0,0 +1,111 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)methodology.ms 6.2 (Berkeley) 4/16/91
+.\"
+.ds RH Methodology
+.NH
+Methodology
+.PP
+Our goal was to evaluate the performance of the target peripherals
+in an environment as much like our 4.2BSD UNIX systems as possible.
+There are two basic approaches to creating this kind of test environment.
+These might be termed the \fIindirect\fR and the \fIdirect\fR approach.
+The approach used by DEC in producing most of the performance data
+on the UDA50/RA81 system under VMS is what we term the indirect
+approach.
+We chose to use the direct approach.
+.PP
+The indirect approach used by DEC involves two steps.
+First, the environment in which performance is to be evaluated
+is parameterized.
+In this case, the disk I/O characteristics of VMS were measured
+as to the distribution of various sizes of accesses and the proportion
+of reads and writes.
+This parameterization of
+typical
+I/O activity was termed a
+``vax mix.''
+The second stage involves simulating this mixture of I/O activities
+with the devices to be tested and noting the total volume of transactions
+processed per unit time by each system.
+.PP
+The problems encountered with this indirect approach often
+have to do with the completeness and correctness of the parameterization
+of the context environment.
+For example, the
+``vax mix''
+model constructed for DECs tests uses a random distribution of seeks
+to the blocks read or written.
+It is not likely that any real system produces a distribution
+of disk transfer locations which is truly random and does not
+exhibit strong locality characteristics.
+.PP
+The methodology chosen by us is direct
+in the sense that it uses the standard structured file system mechanism present
+in the 4.2BSD UNIX operating system to create the sequence of locations
+and sizes of reads and writes to the benchmarked equipment.
+We simply create, write, and read
+files as they would be by user's activities.
+The disk space allocation and disk cacheing mechanism built into
+UNIX is used to produce the actual device reads and writes as well
+as to determine their size and location on the disk.
+We measure and compare the rate at which these
+.I
+user files
+.R
+can be written, rewritten, or read.
+.PP
+The advantage of this approach is the implicit accuracy in
+testing in the same environment in which the peripheral
+will be used.
+Although this system does not account for the I/O produced
+by some paging and swapping, in our memory rich environment
+these activities account for a relatively small portion
+of the total disk activity.
+.PP
+A more significant disadvantage to the direct approach
+is the occasional difficulty we have in accounting for our
+measured results.
+The apparently straight-forward activity of reading or writing a logical file
+on disk can produce a complex mixture of disk traffic.
+File I/O is supported by a file management system that
+buffers disk traffic through an internal cache,
+which allows writes to ba handled asynchronously.
+Reads must be done synchronously,
+however this restriction is moderated by the use of read-ahead.
+Small changes in the performance of the disk controller
+subsystem can result in large and unexpected
+changes in the file system performance,
+as it may change the characteristics of the memory contention
+experienced by the processor.
+.ds RH Tests
+.bp
diff --git a/share/doc/papers/diskperf/motivation.ms b/share/doc/papers/diskperf/motivation.ms
new file mode 100644
index 0000000..d5fde9d
--- /dev/null
+++ b/share/doc/papers/diskperf/motivation.ms
@@ -0,0 +1,95 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)motivation.ms 6.2 (Berkeley) 4/16/91
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Motivation
+.NH
+Motivation
+.PP
+These benchmarks were performed for several reasons.
+Foremost was our desire to obtain guideline to aid
+in choosing one the most expensive components of any
+VAX UNIX configuration, the disk storage system.
+The range of choices in this area has increased dramatically
+in the last year.
+DEC has become, with the introduction of the UDA50/RA81 system,
+cost competitive
+in the area of disk storage for the first time.
+Emulex's entry into the VAX 11/780 SBI controller
+field, the SC780, represented an important choice for us to examine, given
+our previous success with their VAX 11/750 SC750 controller and
+their UNIBUS controllers.
+The Fujitsu 2351A
+Winchester disk drive represents the lowest cost-per-byte disk storage
+known to us.
+In addition, Fujitsu's reputation for reliability was appealing.
+The many attractive aspects of these components justified a more
+careful examination of their performance aspects under UNIX.
+.PP
+In addition to the direct motivation of developing an effective
+choice of storage systems, we hoped to gain more insight into
+VAX UNIX file system and I/O performance in general.
+What generic characteristics of I/O subsystems are most
+important?
+How important is the location of the controller on the SBI/CMI versus
+the UNIBUS?
+Is extensive buffering in the controller essential or even important?
+How much can be gained by putting more of the storage system
+management and optimization function in the controller as
+DEC does with the UDA50?
+.PP
+We also wanted to resolve particular speculation about the value of
+storage system optimization by a controller in a UNIX
+environment.
+Is the access optimization as effective as that already provided
+by the existing 4.2BSD UNIX device handlers for traditional disks?
+VMS disk handlers do no seek optimization.
+This gives the UDA50 controller an advantage over other controllers
+under VMS which is not likely to be as important to UNIX.
+Are there penalties associated with greater intelligence in the controller?
+.PP
+A third and last reason for evaluating this equipment is comparable
+to the proverbial mountain climbers answer when asked why he climbs
+a particular mountain,
+``It was there.''
+In our case the equipment
+was there.
+We were lucky enough to assemble all the desired disks and controllers
+and get them installed on a temporarily idle VAX 11/780.
+This got us started collecting data.
+Although many of the tests were later rerun on a variety of other systems,
+this initial test bed was essential for working out the testing bugs
+and getting our feet wet.
+.ds RH Equipment
+.bp
diff --git a/share/doc/papers/diskperf/results.ms b/share/doc/papers/diskperf/results.ms
new file mode 100644
index 0000000..09f61a8
--- /dev/null
+++ b/share/doc/papers/diskperf/results.ms
@@ -0,0 +1,337 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)results.ms 6.2 (Berkeley) 4/16/91
+.\"
+.ds RH Results
+.NH
+Results
+.PP
+The following tables indicate the results of our
+test runs.
+Note that each table contains results for tests run
+on two varieties of 4.2BSD file systems.
+The first set of results is always for a file system
+with a basic blocking factor of eight Kilobytes and a
+fragment size of 1 Kilobyte. The second sets of measurements
+are for file systems with a four Kilobyte block size and a
+one Kilobyte fragment size.
+The values in parenthesis indicate the percentage of CPU
+time used by the test program.
+In the case of the two disk arm tests,
+the value in parenthesis indicates the sum of the percentage
+of the test programs that were run.
+Entries of ``n. m.'' indicate this value was not measured.
+.DS
+.TS
+box,center;
+c s s s s
+c s s s s
+c s s s s
+l | l s | l s
+l | l s | l s
+l | l l | l l
+l | c c | c c.
+4.2BSD File Systems Tests - \fBVAX 11/750\fR
+=
+Logically Sequential Transfers
+from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test Emulex SC750/Eagle UDA50/RA81
+
+ 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 490 (69%) 620 (96%) 310 (44%) 520 (65%)
+write_4096 380 (99%) 370 (99%) 370 (97%) 360 (98%)
+write_8192 470 (99%) 470 (99%) 320 (71%) 410 (83%)
+rewrite_8192 650 (99%) 620 (99%) 310 (50%) 450 (70%)
+=
+.T&
+c s s s s
+c s s s s
+l | l s | l s
+l | l s | l s
+l | l l | l l
+l | c c | c c.
+Logically Sequential Transfers
+from \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test Emulex SC750/Eagle UDA50/RA81
+
+ 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 300 (60%) 400 (84%) 210 (42%) 340 (77%)
+write_4096 320 (98%) 320 (98%) 220 (67%) 290 (99%)
+write_8192 340 (98%) 340 (99%) 220 (65%) 310 (98%)
+rewrite_8192 450 (99%) 450 (98%) 230 (47%) 340 (78%)
+.TE
+.DE
+.PP
+Note that the rate of write operations on the VAX 11/750 are ultimately
+CPU limited in some cases.
+The write rates saturate the CPU at a lower bandwidth than the reads
+because they must do disk allocation in addition to moving the data
+from the user program to the disk.
+The UDA50/RA81 saturates the CPU at a lower transfer rate for a given
+operation than the SC750/Eagle because
+it causes more memory contention with the CPU.
+We do not know if this contention is caused by
+the UNIBUS controller or the UDA50.
+.PP
+The following table reports the results of test runs on a VAX 11/780
+with 4 Megabytes of main memory.
+.DS
+.TS
+box,center;
+c s s s s s s
+c s s s s s s
+c s s s s s s
+l | l s | l s | l s
+l | l s | l s | l s
+l | l l | l l | l l
+l | c c | c c | c c.
+4.2BSD File Systems Tests - \fBVAX 11/780\fR
+=
+Logically Sequential Transfers
+from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test Emulex SC780/Eagle UDA50/RA81 Sys. Ind. 9900/Eagle
+
+ 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 560 (70%) 480 (58%) 360 (45%) 540 (72%) 340 (41%) 520 (66%)
+write_4096 440 (98%) 440 (98%) 380 (99%) 480 (96%) 490 (96%) 440 (84%)
+write_8192 490 (98%) 490 (98%) 220 (58%)* 480 (92%) 490 (80%) 430 (72%)
+rewrite_8192 760 (100%) 560 (72%) 220 (50%)* 180 (52%)* 490 (60%) 520 (62%)
+=
+.T&
+c s s s s s s
+c s s s s s s
+l | l s | l s | l s
+l | l s | l s | l s
+l | l l | l l | l l
+l | c c | c c | c c.
+Logically Sequential Transfers
+from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test Emulex SC780/Eagle UDA50/RA81 Sys. Ind. 9900/Eagle
+
+ 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 490 (77%) 370 (66%) n.m. n.m. 200 (31%) 370 (56%)
+write_4096 380 (98%) 370 (98%) n.m. n.m. 200 (46%) 370 (88%)
+write_8192 380 (99%) 370 (97%) n.m. n.m. 200 (45%) 320 (76%)
+rewrite_8192 490 (87%) 350 (66%) n.m. n.m. 200 (31%) 300 (46%)
+.TE
+* the operation of the hardware was suspect during these tests.
+.DE
+.PP
+The dropoff in reading and writing rates for the two drive SC780/Eagle
+tests are probably due to the file system using insufficient
+rotational delay for these tests.
+We have not fully investigated these times.
+.PP
+The following table compares data rates on VAX 11/750s directly
+with those of VAX 11/780s using the UDA50/RA81 storage system.
+.DS
+.TS
+box,center;
+c s s s s
+c s s s s
+c s s s s
+l | l s | l s
+l | l s | l s
+l | l l | l l
+l | c c | c c.
+4.2BSD File Systems Tests - \fBDEC UDA50 - 750 vs. 780\fR
+=
+Logically Sequential Transfers
+from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test VAX 11/750 UNIBUS VAX 11/780 UNIBUS
+
+ 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 310 (44%) 520 (84%) 360 (45%) 540 (72%)
+write_4096 370 (97%) 360 (100%) 380 (99%) 480 (96%)
+write_8192 320 (71%) 410 (96%) 220 (58%)* 480 (92%)
+rewrite_8192 310 (50%) 450 (80%) 220 (50%)* 180 (52%)*
+=
+.T&
+c s s s s
+c s s s s
+l | l s | l s
+l | l s | l s
+l | l l | l l
+l | c c | c c.
+Logically Sequential Transfers
+from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test VAX 11/750 UNIBUS VAX 11/780 UNIBUS
+
+ 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 210 (42%) 342 (77%) n.m. n.m.
+write_4096 215 (67%) 294 (99%) n.m. n.m.
+write_8192 215 (65%) 305 (98%) n.m. n.m.
+rewrite_8192 227 (47%) 336 (78%) n.m. n.m.
+.TE
+* the operation of the hardware was suspect during these tests.
+.DE
+.PP
+The higher throughput available on VAX 11/780s is due to a number
+of factors.
+The larger main memory size allows a larger file system cache.
+The block allocation routines run faster, raising the upper limit
+on the data rates in writing new files.
+.PP
+The next table makes the same comparison using an Emulex controller
+on both systems.
+.DS
+.TS
+box, center;
+c s s s s
+c s s s s
+c s s s s
+l | l s | l s
+l | l s | l s
+l | l l | l l
+l | c c | c c.
+4.2BSD File Systems Tests - \fBEmulex - 750 vs. 780\fR
+=
+Logically Sequential Transfers
+from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test VAX 11/750 CMI Bus VAX 11/780 SBI Bus
+
+ 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 490 (69%) 620 (96%) 560 (70%) 480 (58%)
+write_4096 380 (99%) 370 (99%) 440 (98%) 440 (98%)
+write_8192 470 (99%) 470 (99%) 490 (98%) 490 (98%)
+rewrite_8192 650 (99%) 620 (99%) 760 (100%) 560 (72%)
+=
+.T&
+c s s s s
+c s s s s
+l | l s | l s
+l | l s | l s
+l | l l | l l
+l | c c | c c.
+Logically Sequential Transfers
+from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test VAX 11/750 CMI Bus VAX 11/780 SBI Bus
+
+ 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 300 (60%) 400 (84%) 490 (77%) 370 (66%)
+write_4096 320 (98%) 320 (98%) 380 (98%) 370 (98%)
+write_8192 340 (98%) 340 (99%) 380 (99%) 370 (97%)
+rewrite_8192 450 (99%) 450 (98%) 490 (87%) 350 (66%)
+.TE
+.DE
+.PP
+The following table illustrates the evolution of our testing
+process as both hardware and software problems effecting
+the performance of the Emulex SC780 were corrected.
+The software change was suggested to us by George Goble
+of Purdue University.
+.PP
+The 4.2BSD handler for RH750/RH780 interfaced disk drives
+contains several constants which to determine how
+much time is provided between an interrupt signaling the completion
+of a positioning command and the subsequent start of a data transfer
+operation. These lead times are expressed as sectors of rotational delay.
+If they are too small, an extra complete rotation will often be required
+between a seek and subsequent read or write operation.
+The higher bit rate and rotational speed of the 2351A Fujitsu
+disk drives required
+increasing these constants.
+.PP
+The hardware change involved allowing for slightly longer
+delays in arbitrating for cycles on the SBI bus by
+starting the bus arbitration cycle a little further ahead of
+when the data was ready for transfer.
+Finally we had to increase the rotational delay between consecutive
+blocks in the file because
+the higher bandwidth from the disk generated more memory contention,
+which slowed down the processor.
+.DS
+.TS
+box,center,expand;
+c s s s s s s
+c s s s s s s
+c s s s s s s
+l | l s | l s | l s
+l | l s | l s | l s
+l | l s | l s | l s
+l | c c | c c | c c
+l | c c | c c | c c.
+4.2BSD File Systems Tests - \fBEmulex SC780 Disk Controller Evolution\fR
+=
+Logically Sequential Transfers
+from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test Inadequate Search Lead OK Search Lead OK Search Lead
+ Initial SBI Arbitration Init SBI Arb. Improved SBI Arb.
+
+ 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 320 370 440 (60%) n.m. 560 (70%) 480 (58%)
+write_4096 250 270 300 (63%) n.m. 440 (98%) 440 (98%)
+write_8192 250 280 340 (60%) n.m. 490 (98%) 490 (98%)
+rewrite_8192 250 290 380 (48%) n.m. 760 (100%) 560 (72%)
+=
+.T&
+c s s s s s s
+c s s s s s s
+l | l s | l s | l s
+l | l s | l s | l s
+l | l s | l s | l s
+l | c c | c c | c c
+l | c c | c c | c c.
+Logically Sequential Transfers
+from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.)
+_
+Test Inadequate Search Lead OK Search Lead OK Search Lead
+ Initial SBI Arbitration Init SBI Arb. Improved SBI Arb.
+
+ 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives
+_
+read_8192 200 220 280 n.m. 490 (77%) 370 (66%)
+write_4096 180 190 300 n.m. 380 (98%) 370 (98%)
+write_8192 180 200 320 n.m. 380 (99%) 370 (97%)
+rewrite_8192 190 200 340 n.m. 490 (87%) 350 (66%)
+.TE
+.DE
+.ds RH Conclusions
+.bp
diff --git a/share/doc/papers/diskperf/tests.ms b/share/doc/papers/diskperf/tests.ms
new file mode 100644
index 0000000..e937931
--- /dev/null
+++ b/share/doc/papers/diskperf/tests.ms
@@ -0,0 +1,109 @@
+.\" Copyright (c) 1983 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)tests.ms 6.2 (Berkeley) 4/16/91
+.\" $FreeBSD$
+.\"
+.ds RH Tests
+.NH
+Tests
+.PP
+Our battery of tests consists of four programs,
+read_8192, write_8192, write_4096
+and rewrite_8192 originally written by [McKusick83]
+to evaluate the performance of the new file system in 4.2BSD.
+These programs all follow the same model and are typified by
+read_8192 shown here.
+.DS
+#define BUFSIZ 8192
+main( argc, argv)
+char **argv;
+{
+ char buf[BUFSIZ];
+ int i, j;
+
+ j = open(argv[1], 0);
+ for (i = 0; i < 1024; i++)
+ read(j, buf, BUFSIZ);
+}
+.DE
+The remaining programs are included in appendix A.
+.PP
+These programs read, write with two different blocking factors,
+and rewrite logical files in structured file system on the disk
+under test.
+The write programs create new files while the rewrite program
+overwrites an existing file.
+Each of these programs represents an important segment of the
+typical UNIX file system activity with the read program
+representing by far the largest class and the rewrite the smallest.
+.PP
+A blocking factor of 8192 is used by all programs except write_4096.
+This is typical of most 4.2BSD user programs since a standard set of
+I/O support routines is commonly used and these routines buffer
+data in similar block sizes.
+.PP
+For each test run, an empty eight Kilobyte block
+file system was created in the target
+storage system.
+Then each of the four tests was run and timed.
+Each test was run three times;
+the first to clear out any useful data in the cache,
+and the second two to insure that the experiment
+had stablized and was repeatable.
+Each test operated on eight Megabytes of data to
+insure that the cache did not overly influence the results.
+Another file system was then initialized using a
+basic blocking factor of four Kilobytes and the same tests
+were run again and timed.
+A command script for a run appears as follows:
+.DS
+#!/bin/csh
+set time=2
+echo "8K/1K file system"
+newfs /dev/rhp0g eagle
+mount /dev/hp0g /mnt0
+mkdir /mnt0/foo
+echo "write_8192 /mnt0/foo/tst2"
+rm -f /mnt0/foo/tst2
+write_8192 /mnt0/foo/tst2
+rm -f /mnt0/foo/tst2
+write_8192 /mnt0/foo/tst2
+rm -f /mnt0/foo/tst2
+write_8192 /mnt0/foo/tst2
+echo "read_8192 /mnt0/foo/tst2"
+read_8192 /mnt0/foo/tst2
+read_8192 /mnt0/foo/tst2
+read_8192 /mnt0/foo/tst2
+umount /dev/hp0g
+.DE
+.ds RH Results
+.bp
diff --git a/share/doc/papers/fsinterface/Makefile b/share/doc/papers/fsinterface/Makefile
new file mode 100644
index 0000000..f11021b
--- /dev/null
+++ b/share/doc/papers/fsinterface/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 5.3 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= fsinterface
+SRCS= fsinterface.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/fsinterface/abstract.ms b/share/doc/papers/fsinterface/abstract.ms
new file mode 100644
index 0000000..ab8b473
--- /dev/null
+++ b/share/doc/papers/fsinterface/abstract.ms
@@ -0,0 +1,73 @@
+.\" Copyright (c) 1986 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)abstract.ms 5.2 (Berkeley) 4/16/91
+.\"
+.TL
+Toward a Compatible Filesystem Interface
+.AU
+Michael J. Karels
+Marshall Kirk McKusick
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.LP
+As network or remote filesystems have been implemented for
+.UX ,
+several stylized interfaces between the filesystem implementation
+and the rest of the kernel have been developed.
+Notable among these are Sun Microsystems' virtual filesystem interface
+using vnodes, Digital Equipment's Generic File System architecture,
+and AT&T's File System Switch.
+Each design attempts to isolate filesystem-dependent details
+below the generic interface and to provide a framework within which
+new filesystems may be incorporated.
+However, each of these interfaces is different from
+and incompatible with the others.
+Each of them addresses somewhat different design goals.
+Each was based upon a different starting version of
+.UX ,
+targetted a different set of filesystems with varying characteristics,
+and uses a different set of primitive operations provided by the filesystem.
+The current study compares the various filesystem interfaces.
+Criteria for comparison include generality, completeness, robustness,
+efficiency and esthetics.
+As a result of this comparison, a proposal for a new filesystem interface
+is advanced that includes the best features of the existing implementations.
+The proposal adopts the calling convention for name lookup introduced
+in 4.3BSD.
+A prototype implementation is described.
+This proposal and the rationale underlying its development
+have been presented to major software vendors
+as an early step toward convergence upon a compatible filesystem interface.
diff --git a/share/doc/papers/fsinterface/fsinterface.ms b/share/doc/papers/fsinterface/fsinterface.ms
new file mode 100644
index 0000000..453cc7e
--- /dev/null
+++ b/share/doc/papers/fsinterface/fsinterface.ms
@@ -0,0 +1,1176 @@
+.\" Copyright (c) 1986 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)fsinterface.ms 1.4 (Berkeley) 4/16/91
+.\" $FreeBSD$
+.\"
+.nr UX 0
+.de UX
+.ie \\n(UX \s-1UNIX\s0\\$1
+.el \{\
+\s-1UNIX\s0\\$1\(dg
+.FS
+\(dg \s-1UNIX\s0 is a registered trademark of AT&T.
+.FE
+.nr UX 1
+.\}
+..
+.TL
+Toward a Compatible Filesystem Interface
+.AU
+Michael J. Karels
+Marshall Kirk McKusick
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.AB
+.LP
+As network or remote filesystems have been implemented for
+.UX ,
+several stylized interfaces between the filesystem implementation
+and the rest of the kernel have been developed.
+.FS
+This is an update of a paper originally presented
+at the September 1986 conference of the European
+.UX
+Users' Group.
+Last modified April 16, 1991.
+.FE
+Notable among these are Sun Microsystems' Virtual Filesystem interface (VFS)
+using vnodes, Digital Equipment's Generic File System (GFS) architecture,
+and AT&T's File System Switch (FSS).
+Each design attempts to isolate filesystem-dependent details
+below a generic interface and to provide a framework within which
+new filesystems may be incorporated.
+However, each of these interfaces is different from
+and incompatible with the others.
+Each of them addresses somewhat different design goals.
+Each was based on a different starting version of
+.UX ,
+targetted a different set of filesystems with varying characteristics,
+and uses a different set of primitive operations provided by the filesystem.
+The current study compares the various filesystem interfaces.
+Criteria for comparison include generality, completeness, robustness,
+efficiency and esthetics.
+Several of the underlying design issues are examined in detail.
+As a result of this comparison, a proposal for a new filesystem interface
+is advanced that includes the best features of the existing implementations.
+The proposal adopts the calling convention for name lookup introduced
+in 4.3BSD, but is otherwise closely related to Sun's VFS.
+A prototype implementation is now being developed at Berkeley.
+This proposal and the rationale underlying its development
+have been presented to major software vendors
+as an early step toward convergence on a compatible filesystem interface.
+.AE
+.NH
+Introduction
+.PP
+As network communications and workstation environments
+became common elements in
+.UX
+systems, several vendors of
+.UX
+systems have designed and built network file systems
+that allow client process on one
+.UX
+machine to access files on a server machine.
+Examples include Sun's Network File System, NFS [Sandberg85],
+AT&T's recently-announced Remote File Sharing, RFS [Rifkin86],
+the LOCUS distributed filesystem [Walker85],
+and Masscomp's extended filesystem [Cole85].
+Other remote filesystems have been implemented in research or university groups
+for internal use, notably the network filesystem in the Eighth Edition
+.UX
+system [Weinberger84] and two different filesystems used at Carnegie-Mellon
+University [Satyanarayanan85].
+Numerous other remote file access methods have been devised for use
+within individual
+.UX
+processes,
+many of them by modifications to the C I/O library
+similar to those in the Newcastle Connection [Brownbridge82].
+.PP
+Multiple network filesystems may frequently
+be found in use within a single organization.
+These circumstances make it highly desirable to be able to transport filesystem
+implementations from one system to another.
+Such portability is considerably enhanced by the use of a stylized interface
+with carefully-defined entry points to separate the filesystem from the rest
+of the operating system.
+This interface should be similar to the interface between device drivers
+and the kernel.
+Although varying somewhat among the common versions of
+.UX ,
+the device driver interfaces are sufficiently similar that device drivers
+may be moved from one system to another without major problems.
+A clean, well-defined interface to the filesystem also allows a single
+system to support multiple local filesystem types.
+.PP
+For reasons such as these, several filesystem interfaces have been used
+when integrating new filesystems into the system.
+The best-known of these are Sun Microsystems' Virtual File System interface,
+VFS [Kleiman86], and AT&T's File System Switch, FSS.
+Another interface, known as the Generic File System, GFS,
+has been implemented for the ULTRIX\(dd
+.FS
+\(dd ULTRIX is a trademark of Digital Equipment Corp.
+.FE
+system by Digital [Rodriguez86].
+There are numerous differences among these designs.
+The differences may be understood from the varying philosophies
+and design goals of the groups involved, from the systems under which
+the implementations were done, and from the filesystems originally targetted
+by the designs.
+These differences are summarized in the following sections
+within the limitations of the published specifications.
+.NH
+Design goals
+.PP
+There are several design goals which, in varying degrees,
+have driven the various designs.
+Each attempts to divide the filesystem into a filesystem-type-independent
+layer and individual filesystem implementations.
+The division between these layers occurs at somewhat different places
+in these systems, reflecting different views of the diversity and types
+of the filesystems that may be accommodated.
+Compatibility with existing local filesystems has varying importance;
+at the user-process level, each attempts to be completely transparent
+except for a few filesystem-related system management programs.
+The AT&T interface also makes a major effort to retain familiar internal
+system interfaces, and even to retain object-file-level binary compatibility
+with operating system modules such as device drivers.
+Both Sun and DEC were willing to change internal data structures and interfaces
+so that other operating system modules might require recompilation
+or source-code modification.
+.PP
+AT&T's interface both allows and requires filesystems to support the full
+and exact semantics of their previous filesystem,
+including interruptions of system calls on slow operations.
+System calls that deal with remote files are encapsulated
+with their environment and sent to a server where execution continues.
+The system call may be aborted by either client or server, returning
+control to the client.
+Most system calls that descend into the file-system dependent layer
+of a filesystem other than the standard local filesystem do not return
+to the higher-level kernel calling routines.
+Instead, the filesystem-dependent code completes the requested
+operation and then executes a non-local goto (\fIlongjmp\fP) to exit the
+system call.
+These efforts to avoid modification of main-line kernel code
+indicate a far greater emphasis on internal compatibility than on modularity,
+clean design, or efficiency.
+.PP
+In contrast, the Sun VFS interface makes major modifications to the internal
+interfaces in the kernel, with a very clear separation
+of filesystem-independent and -dependent data structures and operations.
+The semantics of the filesystem are largely retained for local operations,
+although this is achieved at some expense where it does not fit the internal
+structuring well.
+The filesystem implementations are not required to support the same
+semantics as local
+.UX
+filesystems.
+Several historical features of
+.UX
+filesystem behavior are difficult to achieve using the VFS interface,
+including the atomicity of file and link creation and the use of open files
+whose names have been removed.
+.PP
+A major design objective of Sun's network filesystem,
+statelessness,
+permeates the VFS interface.
+No locking may be done in the filesystem-independent layer,
+and locking in the filesystem-dependent layer may occur only during
+a single call into that layer.
+.PP
+A final design goal of most implementors is performance.
+For remote filesystems,
+this goal tends to be in conflict with the goals of complete semantic
+consistency, compatibility and modularity.
+Sun has chosen performance over modularity in some areas,
+but has emphasized clean separation of the layers within the filesystem
+at the expense of performance.
+Although the performance of RFS is yet to be seen,
+AT&T seems to have considered compatibility far more important than modularity
+or performance.
+.NH
+Differences among filesystem interfaces
+.PP
+The existing filesystem interfaces may be characterized
+in several ways.
+Each system is centered around a few data structures or objects,
+along with a set of primitives for performing operations upon these objects.
+In the original
+.UX
+filesystem [Ritchie74],
+the basic object used by the filesystem is the inode, or index node.
+The inode contains all of the information about a file except its name:
+its type, identification, ownership, permissions, timestamps and location.
+Inodes are identified by the filesystem device number and the index within
+the filesystem.
+The major entry points to the filesystem are \fInamei\fP,
+which translates a filesystem pathname into the underlying inode,
+and \fIiget\fP, which locates an inode by number and installs it in the in-core
+inode table.
+\fINamei\fP performs name translation by iterative lookup
+of each component name in its directory to find its inumber,
+then using \fIiget\fP to return the actual inode.
+If the last component has been reached, this inode is returned;
+otherwise, the inode describes the next directory to be searched.
+The inode returned may be used in various ways by the caller;
+it may be examined, the file may be read or written,
+types and access may be checked, and fields may be modified.
+Modified inodes are automatically written back to the filesystem
+on disk when the last reference is released with \fIiput\fP.
+Although the details are considerably different,
+the same general scheme is used in the faster filesystem in 4.2BSD
+.UX
+[Mckusick85].
+.PP
+Both the AT&T interface and, to a lesser extent, the DEC interface
+attempt to preserve the inode-oriented interface.
+Each modify the inode to allow different varieties of the structure
+for different filesystem types by separating the filesystem-dependent
+parts of the inode into a separate structure or one arm of a union.
+Both interfaces allow operations
+equivalent to the \fInamei\fP and \fIiget\fP operations
+of the old filesystem to be performed in the filesystem-independent
+layer, with entry points to the individual filesystem implementations to support
+the type-specific parts of these operations. Implicit in this interface
+is that files may be conveniently be named by and located using a single
+index within a filesystem.
+The GFS provides specific entry points to the filesystems
+to change most file properties rather than allowing arbitrary changes
+to be made to the generic part of the inode.
+.PP
+In contrast, the Sun VFS interface replaces the inode as the primary object
+with the vnode.
+The vnode contains no filesystem-dependent fields except the pointer
+to the set of operations implemented by the filesystem.
+Properties of a vnode that might be transient, such as the ownership,
+permissions, size and timestamps, are maintained by the lower layer.
+These properties may be presented in a generic format upon request;
+callers are expected not to hold this information for any length of time,
+as they may not be up-to-date later on.
+The vnode operations do not include a corollary for \fIiget\fP;
+the only external interface for obtaining vnodes for specific files
+is the name lookup operation.
+(Separate procedures are provided outside of this interface
+that obtain a ``file handle'' for a vnode which may be given
+to a client by a server, such that the vnode may be retrieved
+upon later presentation of the file handle.)
+.NH
+Name translation issues
+.PP
+Each of the systems described include a mechanism for performing
+pathname-to-internal-representation translation.
+The style of the name translation function is very different in all
+three systems.
+As described above, the AT&T and DEC systems retain the \fInamei\fP function.
+The two are quite different, however, as the ULTRIX interface uses
+the \fInamei\fP calling convention introduced in 4.3BSD.
+The parameters and context for the name lookup operation
+are collected in a \fInameidata\fP structure which is passed to \fInamei\fP
+for operation.
+Intent to create or delete the named file is declared in advance,
+so that the final directory scan in \fInamei\fP may retain information
+such as the offset in the directory at which the modification will be made.
+Filesystems that use such mechanisms to avoid redundant work
+must therefore lock the directory to be modified so that it may not
+be modified by another process before completion.
+In the System V filesystem, as in previous versions of
+.UX ,
+this information is stored in the per-process \fIuser\fP structure
+by \fInamei\fP for use by a low-level routine called after performing
+the actual creation or deletion of the file itself.
+In 4.3BSD and in the GFS interface, these side effects of \fInamei\fP
+are stored in the \fInameidata\fP structure given as argument to \fInamei\fP,
+which is also presented to the routine implementing file creation or deletion.
+.PP
+The ULTRIX \fInamei\fP routine is responsible for the generic
+parts of the name translation process, such as copying the name into
+an internal buffer, validating it, interpolating
+the contents of symbolic links, and indirecting at mount points.
+As in 4.3BSD, the name is copied into the buffer in a single call,
+according to the location of the name.
+After determining the type of the filesystem at the start of translation
+(the current directory or root directory), it calls the filesystem's
+\fInamei\fP entry with the same structure it received from its caller.
+The filesystem-specific routine translates the name, component by component,
+as long as no mount points are reached.
+It may return after any number of components have been processed.
+\fINamei\fP performs any processing at mount points, then calls
+the correct translation routine for the next filesystem.
+Network filesystems may pass the remaining pathname to a server for translation,
+or they may look up the pathname components one at a time.
+The former strategy would be more efficient,
+but the latter scheme allows mount points within a remote filesystem
+without server knowledge of all client mounts.
+.PP
+The AT&T \fInamei\fP interface is presumably the same as that in previous
+.UX
+systems, accepting the name of a routine to fetch pathname characters
+and an operation (one of: lookup, lookup for creation, or lookup for deletion).
+It translates, component by component, as before.
+If it detects that a mount point crosses to a remote filesystem,
+it passes the remainder of the pathname to the remote server.
+A pathname-oriented request other than open may be completed
+within the \fInamei\fP call,
+avoiding return to the (unmodified) system call handler
+that called \fInamei\fP.
+.PP
+In contrast to the first two systems, Sun's VFS interface has replaced
+\fInamei\fP with \fIlookupname\fP.
+This routine simply calls a new pathname-handling module to allocate
+a pathname buffer and copy in the pathname (copying a character per call),
+then calls \fIlookuppn\fP.
+\fILookuppn\fP performs the iteration over the directories leading
+to the destination file; it copies each pathname component to a local buffer,
+then calls the filesystem \fIlookup\fP entry to locate the vnode
+for that file in the current directory.
+Per-filesystem \fIlookup\fP routines may translate only one component
+per call.
+For creation and deletion of new files, the lookup operation is unmodified;
+the lookup of the final component only serves to check for the existence
+of the file.
+The subsequent creation or deletion call, if any, must repeat the final
+name translation and associated directory scan.
+For new file creation in particular, this is rather inefficient,
+as file creation requires two complete scans of the directory.
+.PP
+Several of the important performance improvements in 4.3BSD
+were related to the name translation process [McKusick85][Leffler84].
+The following changes were made:
+.IP 1. 4
+A system-wide cache of recent translations is maintained.
+The cache is separate from the inode cache, so that multiple names
+for a file may be present in the cache.
+The cache does not hold ``hard'' references to the inodes,
+so that the normal reference pattern is not disturbed.
+.IP 2.
+A per-process cache is kept of the directory and offset
+at which the last successful name lookup was done.
+This allows sequential lookups of all the entries in a directory to be done
+in linear time.
+.IP 3.
+The entire pathname is copied into a kernel buffer in a single operation,
+rather than using two subroutine calls per character.
+.IP 4.
+A pool of pathname buffers are held by \fInamei\fP, avoiding allocation
+overhead.
+.LP
+All of these performance improvements from 4.3BSD are well worth using
+within a more generalized filesystem framework.
+The generalization of the structure may otherwise make an already-expensive
+function even more costly.
+Most of these improvements are present in the GFS system, as it derives
+from the beta-test version of 4.3BSD.
+The Sun system uses a name-translation cache generally like that in 4.3BSD.
+The name cache is a filesystem-independent facility provided for the use
+of the filesystem-specific lookup routines.
+The Sun cache, like that first used at Berkeley but unlike that in 4.3,
+holds a ``hard'' reference to the vnode (increments the reference count).
+The ``soft'' reference scheme in 4.3BSD cannot be used with the current
+NFS implementation, as NFS allocates vnodes dynamically and frees them
+when the reference count returns to zero rather than caching them.
+As a result, fewer names may be held in the cache
+than (local filesystem) vnodes, and the cache distorts the normal reference
+patterns otherwise seen by the LRU cache.
+As the name cache references overflow the local filesystem inode table,
+the name cache must be purged to make room in the inode table.
+Also, to determine whether a vnode is in use (for example,
+before mounting upon it), the cache must be flushed to free any
+cache reference.
+These problems should be corrected
+by the use of the soft cache reference scheme.
+.PP
+A final observation on the efficiency of name translation in the current
+Sun VFS architecture is that the number of subroutine calls used
+by a multi-component name lookup is dramatically larger
+than in the other systems.
+The name lookup scheme in GFS suffers from this problem much less,
+at no expense in violation of layering.
+.PP
+A final problem to be considered is synchronization and consistency.
+As the filesystem operations are more stylized and broken into separate
+entry points for parts of operations, it is more difficult to guarantee
+consistency throughout an operation and/or to synchronize with other
+processes using the same filesystem objects.
+The Sun interface suffers most severely from this,
+as it forbids the filesystems from locking objects across calls
+to the filesystem.
+It is possible that a file may be created between the time that a lookup
+is performed and a subsequent creation is requested.
+Perhaps more strangely, after a lookup fails to find the target
+of a creation attempt, the actual creation might find that the target
+now exists and is a symbolic link.
+The call will either fail unexpectedly, as the target is of the wrong type,
+or the generic creation routine will have to note the error
+and restart the operation from the lookup.
+This problem will always exist in a stateless filesystem,
+but the VFS interface forces all filesystems to share the problem.
+This restriction against locking between calls also
+forces duplication of work during file creation and deletion.
+This is considered unacceptable.
+.NH
+Support facilities and other interactions
+.PP
+Several support facilities are used by the current
+.UX
+filesystem and require generalization for use by other filesystem types.
+For filesystem implementations to be portable,
+it is desirable that these modified support facilities
+should also have a uniform interface and
+behave in a consistent manner in target systems.
+A prominent example is the filesystem buffer cache.
+The buffer cache in a standard (System V or 4.3BSD)
+.UX
+system contains physical disk blocks with no reference to the files containing
+them.
+This works well for the local filesystem, but has obvious problems
+for remote filesystems.
+Sun has modified the buffer cache routines to describe buffers by vnode
+rather than by device.
+For remote files, the vnode used is that of the file, and the block
+numbers are virtual data blocks.
+For local filesystems, a vnode for the block device is used for cache reference,
+and the block numbers are filesystem physical blocks.
+Use of per-file cache description does not easily accommodate
+caching of indirect blocks, inode blocks, superblocks or cylinder group blocks.
+However, the vnode describing the block device for the cache
+is one created internally,
+rather than the vnode for the device looked up when mounting,
+and it is located by searching a private list of vnodes
+rather than by holding it in the mount structure.
+Although the Sun modification makes it possible to use the buffer
+cache for data blocks of remote files, a better generalization
+of the buffer cache is needed.
+.PP
+The RFS filesystem used by AT&T does not currently cache data blocks
+on client systems, thus the buffer cache is probably unmodified.
+The form of the buffer cache in ULTRIX is unknown to us.
+.PP
+Another subsystem that has a large interaction with the filesystem
+is the virtual memory system.
+The virtual memory system must read data from the filesystem
+to satisfy fill-on-demand page faults.
+For efficiency, this read call is arranged to place the data directly
+into the physical pages assigned to the process (a ``raw'' read) to avoid
+copying the data.
+Although the read operation normally bypasses the filesystem buffer cache,
+consistency must be maintained by checking the buffer cache and copying
+or flushing modified data not yet stored on disk.
+The 4.2BSD virtual memory system, like that of Sun and ULTRIX,
+maintains its own cache of reusable text pages.
+This creates additional complications.
+As the virtual memory systems are redesigned, these problems should be
+resolved by reading through the buffer cache, then mapping the cached
+data into the user address space.
+If the buffer cache or the process pages are changed while the other reference
+remains, the data would have to be copied (``copy-on-write'').
+.PP
+In the meantime, the current virtual memory systems must be used
+with the new filesystem framework.
+Both the Sun and AT&T filesystem interfaces
+provide entry points to the filesystem for optimization of the virtual
+memory system by performing logical-to-physical block number translation
+when setting up a fill-on-demand image for a process.
+The VFS provides a vnode operation analogous to the \fIbmap\fP function of the
+.UX
+filesystem.
+Given a vnode and logical block number, it returns a vnode and block number
+which may be read to obtain the data.
+If the filesystem is local, it returns the private vnode for the block device
+and the physical block number.
+As the \fIbmap\fP operations are all performed at one time, during process
+startup, any indirect blocks for the file will remain in the cache
+after they are once read.
+In addition, the interface provides a \fIstrategy\fP entry that may be used
+for ``raw'' reads from a filesystem device,
+used to read data blocks into an address space without copying.
+This entry uses a buffer header (\fIbuf\fP structure)
+to describe the I/O operation
+instead of a \fIuio\fP structure.
+The buffer-style interface is the same as that used by disk drivers internally.
+This difference allows the current \fIuio\fP primitives to be avoided,
+as they copy all data to/from the current user process address space.
+Instead, for local filesystems these operations could be done internally
+with the standard raw disk read routines,
+which use a \fIuio\fP interface.
+When loading from a remote filesystems,
+the data will be received in a network buffer.
+If network buffers are suitably aligned,
+the data may be mapped into the process address space by a page swap
+without copying.
+In either case, it should be possible to use the standard filesystem
+read entry from the virtual memory system.
+.PP
+Other issues that must be considered in devising a portable
+filesystem implementation include kernel memory allocation,
+the implicit use of user-structure global context,
+which may create problems with reentrancy,
+the style of the system call interface,
+and the conventions for synchronization
+(sleep/wakeup, handling of interrupted system calls, semaphores).
+.NH
+The Berkeley Proposal
+.PP
+The Sun VFS interface has been most widely used of the three described here.
+It is also the most general of the three, in that filesystem-specific
+data and operations are best separated from the generic layer.
+Although it has several disadvantages which were described above,
+most of them may be corrected with minor changes to the interface
+(and, in a few areas, philosophical changes).
+The DEC GFS has other advantages, in particular the use of the 4.3BSD
+\fInamei\fP interface and optimizations.
+It allows single or multiple components of a pathname
+to be translated in a single call to the specific filesystem
+and thus accommodates filesystems with either preference.
+The FSS is least well understood, as there is little public information
+about the interface.
+However, the design goals are the least consistent with those of the Berkeley
+research groups.
+Accordingly, a new filesystem interface has been devised to avoid
+some of the problems in the other systems.
+The proposed interface derives directly from Sun's VFS,
+but, like GFS, uses a 4.3BSD-style name lookup interface.
+Additional context information has been moved from the \fIuser\fP structure
+to the \fInameidata\fP structure so that name translation may be independent
+of the global context of a user process.
+This is especially desired in any system where kernel-mode servers
+operate as light-weight or interrupt-level processes,
+or where a server may store or cache context for several clients.
+This calling interface has the additional advantage
+that the call parameters need not all be pushed onto the stack for each call
+through the filesystem interface,
+and they may be accessed using short offsets from a base pointer
+(unlike global variables in the \fIuser\fP structure).
+.PP
+The proposed filesystem interface is described very tersely here.
+For the most part, data structures and procedures are analogous
+to those used by VFS, and only the changes will be treated here.
+See [Kleiman86] for complete descriptions of the vfs and vnode operations
+in Sun's interface.
+.PP
+The central data structure for name translation is the \fInameidata\fP
+structure.
+The same structure is used to pass parameters to \fInamei\fP,
+to pass these same parameters to filesystem-specific lookup routines,
+to communicate completion status from the lookup routines back to \fInamei\fP,
+and to return completion status to the calling routine.
+For creation or deletion requests, the parameters to the filesystem operation
+to complete the request are also passed in this same structure.
+The form of the \fInameidata\fP structure is:
+.br
+.ne 2i
+.ID
+.nf
+.ta .5i +\w'caddr_t\0\0\0'u +\w'struct\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+/*
+ * Encapsulation of namei parameters.
+ * One of these is located in the u. area to
+ * minimize space allocated on the kernel stack
+ * and to retain per-process context.
+ */
+struct nameidata {
+ /* arguments to namei and related context: */
+ caddr_t ni_dirp; /* pathname pointer */
+ enum uio_seg ni_seg; /* location of pathname */
+ short ni_nameiop; /* see below */
+ struct vnode *ni_cdir; /* current directory */
+ struct vnode *ni_rdir; /* root directory, if not normal root */
+ struct ucred *ni_cred; /* credentials */
+
+ /* shared between namei, lookup routines and commit routines: */
+ caddr_t ni_pnbuf; /* pathname buffer */
+ char *ni_ptr; /* current location in pathname */
+ int ni_pathlen; /* remaining chars in path */
+ short ni_more; /* more left to translate in pathname */
+ short ni_loopcnt; /* count of symlinks encountered */
+
+ /* results: */
+ struct vnode *ni_vp; /* vnode of result */
+ struct vnode *ni_dvp; /* vnode of intermediate directory */
+
+/* BEGIN UFS SPECIFIC */
+ struct diroffcache { /* last successful directory search */
+ struct vnode *nc_prevdir; /* terminal directory */
+ long nc_id; /* directory's unique id */
+ off_t nc_prevoffset; /* where last entry found */
+ } ni_nc;
+/* END UFS SPECIFIC */
+};
+.DE
+.DS
+.ta \w'#define\0\0'u +\w'WANTPARENT\0\0'u +\w'0x40\0\0\0\0\0\0\0'u
+/*
+ * namei operations and modifiers
+ */
+#define LOOKUP 0 /* perform name lookup only */
+#define CREATE 1 /* setup for file creation */
+#define DELETE 2 /* setup for file deletion */
+#define WANTPARENT 0x10 /* return parent directory vnode also */
+#define NOCACHE 0x20 /* name must not be left in cache */
+#define FOLLOW 0x40 /* follow symbolic links */
+#define NOFOLLOW 0x0 /* don't follow symbolic links (pseudo) */
+.DE
+As in current systems other than Sun's VFS, \fInamei\fP is called
+with an operation request, one of LOOKUP, CREATE or DELETE.
+For a LOOKUP, the operation is exactly like the lookup in VFS.
+CREATE and DELETE allow the filesystem to ensure consistency
+by locking the parent inode (private to the filesystem),
+and (for the local filesystem) to avoid duplicate directory scans
+by storing the new directory entry and its offset in the directory
+in the \fIndirinfo\fP structure.
+This is intended to be opaque to the filesystem-independent levels.
+Not all lookups for creation or deletion are actually followed
+by the intended operation; permission may be denied, the filesystem
+may be read-only, etc.
+Therefore, an entry point to the filesystem is provided
+to abort a creation or deletion operation
+and allow release of any locked internal data.
+After a \fInamei\fP with a CREATE or DELETE flag, the pathname pointer
+is set to point to the last filename component.
+Filesystems that choose to implement creation or deletion entirely
+within the subsequent call to a create or delete entry
+are thus free to do so.
+.PP
+The \fInameidata\fP is used to store context used during name translation.
+The current and root directories for the translation are stored here.
+For the local filesystem, the per-process directory offset cache
+is also kept here.
+A file server could leave the directory offset cache empty,
+could use a single cache for all clients,
+or could hold caches for several recent clients.
+.PP
+Several other data structures are used in the filesystem operations.
+One is the \fIucred\fP structure which describes a client's credentials
+to the filesystem.
+This is modified slightly from the Sun structure;
+the ``accounting'' group ID has been merged into the groups array.
+The actual number of groups in the array is given explicitly
+to avoid use of a reserved group ID as a terminator.
+Also, typedefs introduced in 4.3BSD for user and group ID's have been used.
+The \fIucred\fP structure is thus:
+.DS
+.ta .5i +\w'caddr_t\0\0\0'u +\w'struct\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+/*
+ * Credentials.
+ */
+struct ucred {
+ u_short cr_ref; /* reference count */
+ uid_t cr_uid; /* effective user id */
+ short cr_ngroups; /* number of groups */
+ gid_t cr_groups[NGROUPS]; /* groups */
+ /*
+ * The following either should not be here,
+ * or should be treated as opaque.
+ */
+ uid_t cr_ruid; /* real user id */
+ gid_t cr_svgid; /* saved set-group id */
+};
+.DE
+.PP
+A final structure used by the filesystem interface is the \fIuio\fP
+structure mentioned earlier.
+This structure describes the source or destination of an I/O
+operation, with provision for scatter/gather I/O.
+It is used in the read and write entries to the filesystem.
+The \fIuio\fP structure presented here is modified from the one
+used in 4.2BSD to specify the location of each vector of the operation
+(user or kernel space)
+and to allow an alternate function to be used to implement the data movement.
+The alternate function might perform page remapping rather than a copy,
+for example.
+.DS
+.ta .5i +\w'caddr_t\0\0\0'u +\w'struct\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+/*
+ * Description of an I/O operation which potentially
+ * involves scatter-gather, with individual sections
+ * described by iovec, below. uio_resid is initially
+ * set to the total size of the operation, and is
+ * decremented as the operation proceeds. uio_offset
+ * is incremented by the amount of each operation.
+ * uio_iov is incremented and uio_iovcnt is decremented
+ * after each vector is processed.
+ */
+struct uio {
+ struct iovec *uio_iov;
+ int uio_iovcnt;
+ off_t uio_offset;
+ int uio_resid;
+ enum uio_rw uio_rw;
+};
+
+enum uio_rw { UIO_READ, UIO_WRITE };
+.DE
+.DS
+.ta .5i +\w'caddr_t\0\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+/*
+ * Description of a contiguous section of an I/O operation.
+ * If iov_op is non-null, it is called to implement the copy
+ * operation, possibly by remapping, with the call
+ * (*iov_op)(from, to, count);
+ * where from and to are caddr_t and count is int.
+ * Otherwise, the copy is done in the normal way,
+ * treating base as a user or kernel virtual address
+ * according to iov_segflg.
+ */
+struct iovec {
+ caddr_t iov_base;
+ int iov_len;
+ enum uio_seg iov_segflg;
+ int (*iov_op)();
+};
+.DE
+.DS
+.ta .5i +\w'UIO_USERSPACE\0\0\0\0\0'u
+/*
+ * Segment flag values.
+ */
+enum uio_seg {
+ UIO_USERSPACE, /* from user data space */
+ UIO_SYSSPACE, /* from system space */
+};
+.DE
+.NH
+File and filesystem operations
+.PP
+With the introduction of the data structures used by the filesystem
+operations, the complete list of filesystem entry points may be listed.
+As noted, they derive mostly from the Sun VFS interface.
+Lines marked with \fB+\fP are additions to the Sun definitions;
+lines marked with \fB!\fP are modified from VFS.
+.PP
+The structure describing the externally-visible features of a mounted
+filesystem, \fIvfs\fP, is:
+.DS
+.ta .5i +\w'struct vfsops\0\0\0'u +\w'*vfs_vnodecovered;\0\0\0\0\0'u
+/*
+ * Structure per mounted file system.
+ * Each mounted file system has an array of
+ * operations and an instance record.
+ * The file systems are put on a doubly linked list.
+ */
+struct vfs {
+ struct vfs *vfs_next; /* next vfs in vfs list */
+\fB+\fP struct vfs *vfs_prev; /* prev vfs in vfs list */
+ struct vfsops *vfs_op; /* operations on vfs */
+ struct vnode *vfs_vnodecovered; /* vnode we mounted on */
+ int vfs_flag; /* flags */
+\fB!\fP int vfs_fsize; /* fundamental block size */
+\fB+\fP int vfs_bsize; /* optimal transfer size */
+\fB!\fP uid_t vfs_exroot; /* exported fs uid 0 mapping */
+ short vfs_exflags; /* exported fs flags */
+ caddr_t vfs_data; /* private data */
+};
+.DE
+.DS
+.ta \w'\fB+\fP 'u +\w'#define\0\0'u +\w'VFS_EXPORTED\0\0'u +\w'0x40\0\0\0\0\0'u
+ /*
+ * vfs flags.
+ * VFS_MLOCK lock the vfs so that name lookup cannot proceed past the vfs.
+ * This keeps the subtree stable during mounts and unmounts.
+ */
+ #define VFS_RDONLY 0x01 /* read only vfs */
+\fB+\fP #define VFS_NOEXEC 0x02 /* can't exec from filesystem */
+ #define VFS_MLOCK 0x04 /* lock vfs so that subtree is stable */
+ #define VFS_MWAIT 0x08 /* someone is waiting for lock */
+ #define VFS_NOSUID 0x10 /* don't honor setuid bits on vfs */
+ #define VFS_EXPORTED 0x20 /* file system is exported (NFS) */
+
+ /*
+ * exported vfs flags.
+ */
+ #define EX_RDONLY 0x01 /* exported read only */
+.DE
+.LP
+The operations supported by the filesystem-specific layer
+on an individual filesystem are:
+.DS
+.ta .5i +\w'struct vfsops\0\0\0'u +\w'*vfs_vnodecovered;\0\0\0\0\0'u
+/*
+ * Operations supported on virtual file system.
+ */
+struct vfsops {
+\fB!\fP int (*vfs_mount)( /* vfs, path, data, datalen */ );
+\fB!\fP int (*vfs_unmount)( /* vfs, forcibly */ );
+\fB+\fP int (*vfs_mountroot)();
+ int (*vfs_root)( /* vfs, vpp */ );
+\fB!\fP int (*vfs_statfs)( /* vfs, vp, sbp */ );
+\fB!\fP int (*vfs_sync)( /* vfs, waitfor */ );
+\fB+\fP int (*vfs_fhtovp)( /* vfs, fhp, vpp */ );
+\fB+\fP int (*vfs_vptofh)( /* vp, fhp */ );
+};
+.DE
+.LP
+The \fIvfs_statfs\fP entry returns a structure of the form:
+.DS
+.ta .5i +\w'struct vfsops\0\0\0'u +\w'*vfs_vnodecovered;\0\0\0\0\0'u
+/*
+ * file system statistics
+ */
+struct statfs {
+\fB!\fP short f_type; /* type of filesystem */
+\fB+\fP short f_flags; /* copy of vfs (mount) flags */
+\fB!\fP long f_fsize; /* fundamental file system block size */
+\fB+\fP long f_bsize; /* optimal transfer block size */
+ long f_blocks; /* total data blocks in file system */
+ long f_bfree; /* free blocks in fs */
+ long f_bavail; /* free blocks avail to non-superuser */
+ long f_files; /* total file nodes in file system */
+ long f_ffree; /* free file nodes in fs */
+ fsid_t f_fsid; /* file system id */
+\fB+\fP char *f_mntonname; /* directory on which mounted */
+\fB+\fP char *f_mntfromname; /* mounted filesystem */
+ long f_spare[7]; /* spare for later */
+};
+
+typedef long fsid_t[2]; /* file system id type */
+.DE
+.LP
+The modifications to Sun's interface at this level are minor.
+Additional arguments are present for the \fIvfs_mount\fP and \fIvfs_umount\fP
+entries.
+\fIvfs_statfs\fP accepts a vnode as well as filesystem identifier,
+as the information may not be uniform throughout a filesystem.
+For example,
+if a client may mount a file tree that spans multiple physical
+filesystems on a server, different sections may have different amounts
+of free space.
+(NFS does not allow remotely-mounted file trees to span physical filesystems
+on the server.)
+The final additions are the entries that support file handles.
+\fIvfs_vptofh\fP is provided for the use of file servers,
+which need to obtain an opaque
+file handle to represent the current vnode for transmission to clients.
+This file handle may later be used to relocate the vnode using \fIvfs_fhtovp\fP
+without requiring the vnode to remain in memory.
+.PP
+Finally, the external form of a filesystem object, the \fIvnode\fP, is:
+.DS
+.ta .5i +\w'struct vnodeops\0\0'u +\w'*v_vfsmountedhere;\0\0\0'u
+/*
+ * vnode types. VNON means no type.
+ */
+enum vtype { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK };
+
+struct vnode {
+ u_short v_flag; /* vnode flags (see below) */
+ u_short v_count; /* reference count */
+ u_short v_shlockc; /* count of shared locks */
+ u_short v_exlockc; /* count of exclusive locks */
+ struct vfs *v_vfsmountedhere; /* ptr to vfs mounted here */
+ struct vfs *v_vfsp; /* ptr to vfs we are in */
+ struct vnodeops *v_op; /* vnode operations */
+\fB+\fP struct text *v_text; /* text/mapped region */
+ enum vtype v_type; /* vnode type */
+ caddr_t v_data; /* private data for fs */
+};
+.DE
+.DS
+.ta \w'#define\0\0'u +\w'NOFOLLOW\0\0'u +\w'0x40\0\0\0\0\0\0\0'u
+/*
+ * vnode flags.
+ */
+#define VROOT 0x01 /* root of its file system */
+#define VTEXT 0x02 /* vnode is a pure text prototype */
+#define VEXLOCK 0x10 /* exclusive lock */
+#define VSHLOCK 0x20 /* shared lock */
+#define VLWAIT 0x40 /* proc is waiting on shared or excl. lock */
+.DE
+.LP
+The operations supported by the filesystems on individual \fIvnode\fP\^s
+are:
+.DS
+.ta .5i +\w'int\0\0\0\0\0'u +\w'(*vn_getattr)(\0\0\0\0\0'u
+/*
+ * Operations on vnodes.
+ */
+struct vnodeops {
+\fB!\fP int (*vn_lookup)( /* ndp */ );
+\fB!\fP int (*vn_create)( /* ndp, vap, fflags */ );
+\fB+\fP int (*vn_mknod)( /* ndp, vap, fflags */ );
+\fB!\fP int (*vn_open)( /* vp, fflags, cred */ );
+ int (*vn_close)( /* vp, fflags, cred */ );
+ int (*vn_access)( /* vp, fflags, cred */ );
+ int (*vn_getattr)( /* vp, vap, cred */ );
+ int (*vn_setattr)( /* vp, vap, cred */ );
+
+\fB+\fP int (*vn_read)( /* vp, uiop, offp, ioflag, cred */ );
+\fB+\fP int (*vn_write)( /* vp, uiop, offp, ioflag, cred */ );
+\fB!\fP int (*vn_ioctl)( /* vp, com, data, fflag, cred */ );
+ int (*vn_select)( /* vp, which, cred */ );
+\fB+\fP int (*vn_mmap)( /* vp, ..., cred */ );
+ int (*vn_fsync)( /* vp, cred */ );
+\fB+\fP int (*vn_seek)( /* vp, offp, off, whence */ );
+
+\fB!\fP int (*vn_remove)( /* ndp */ );
+\fB!\fP int (*vn_link)( /* vp, ndp */ );
+\fB!\fP int (*vn_rename)( /* src ndp, target ndp */ );
+\fB!\fP int (*vn_mkdir)( /* ndp, vap */ );
+\fB!\fP int (*vn_rmdir)( /* ndp */ );
+\fB!\fP int (*vn_symlink)( /* ndp, vap, nm */ );
+ int (*vn_readdir)( /* vp, uiop, offp, ioflag, cred */ );
+ int (*vn_readlink)( /* vp, uiop, ioflag, cred */ );
+
+\fB+\fP int (*vn_abortop)( /* ndp */ );
+\fB+\fP int (*vn_lock)( /* vp */ );
+\fB+\fP int (*vn_unlock)( /* vp */ );
+\fB!\fP int (*vn_inactive)( /* vp */ );
+};
+.DE
+.DS
+.ta \w'#define\0\0'u +\w'NOFOLLOW\0\0'u +\w'0x40\0\0\0\0\0'u
+/*
+ * flags for ioflag
+ */
+#define IO_UNIT 0x01 /* do io as atomic unit for VOP_RDWR */
+#define IO_APPEND 0x02 /* append write for VOP_RDWR */
+#define IO_SYNC 0x04 /* sync io for VOP_RDWR */
+.DE
+.LP
+The argument types listed in the comments following each operation are:
+.sp
+.IP ndp 10
+A pointer to a \fInameidata\fP structure.
+.IP vap
+A pointer to a \fIvattr\fP structure (vnode attributes; see below).
+.IP fflags
+File open flags, possibly including O_APPEND, O_CREAT, O_TRUNC and O_EXCL.
+.IP vp
+A pointer to a \fIvnode\fP previously obtained with \fIvn_lookup\fP.
+.IP cred
+A pointer to a \fIucred\fP credentials structure.
+.IP uiop
+A pointer to a \fIuio\fP structure.
+.IP ioflag
+Any of the IO flags defined above.
+.IP com
+An \fIioctl\fP command, with type \fIunsigned long\fP.
+.IP data
+A pointer to a character buffer used to pass data to or from an \fIioctl\fP.
+.IP which
+One of FREAD, FWRITE or 0 (select for exceptional conditions).
+.IP off
+A file offset of type \fIoff_t\fP.
+.IP offp
+A pointer to file offset of type \fIoff_t\fP.
+.IP whence
+One of L_SET, L_INCR, or L_XTND.
+.IP fhp
+A pointer to a file handle buffer.
+.sp
+.PP
+Several changes have been made to Sun's set of vnode operations.
+Most obviously, the \fIvn_lookup\fP receives a \fInameidata\fP structure
+containing its arguments and context as described.
+The same structure is also passed to one of the creation or deletion
+entries if the lookup operation is for CREATE or DELETE to complete
+an operation, or to the \fIvn_abortop\fP entry if no operation
+is undertaken.
+For filesystems that perform no locking between lookup for creation
+or deletion and the call to implement that action,
+the final pathname component may be left untranslated by the lookup
+routine.
+In any case, the pathname pointer points at the final name component,
+and the \fInameidata\fP contains a reference to the vnode of the parent
+directory.
+The interface is thus flexible enough to accommodate filesystems
+that are fully stateful or fully stateless, while avoiding redundant
+operations whenever possible.
+One operation remains problematical, the \fIvn_rename\fP call.
+It is tempting to look up the source of the rename for deletion
+and the target for creation.
+However, filesystems that lock directories during such lookups must avoid
+deadlock if the two paths cross.
+For that reason, the source is translated for LOOKUP only,
+with the WANTPARENT flag set;
+the target is then translated with an operation of CREATE.
+.PP
+In addition to the changes concerned with the \fInameidata\fP interface,
+several other changes were made in the vnode operations.
+The \fIvn_rdrw\fP entry was split into \fIvn_read\fP and \fIvn_write\fP;
+frequently, the read/write entry amounts to a routine that checks
+the direction flag, then calls either a read routine or a write routine.
+The two entries may be identical for any given filesystem;
+the direction flag is contained in the \fIuio\fP given as an argument.
+.PP
+All of the read and write operations use a \fIuio\fP to describe
+the file offset and buffer locations.
+All of these fields must be updated before return.
+In particular, the \fIvn_readdir\fP entry uses this
+to return a new file offset token for its current location.
+.PP
+Several new operations have been added.
+The first, \fIvn_seek\fP, is a concession to record-oriented files
+such as directories.
+It allows the filesystem to verify that a seek leaves a file at a sensible
+offset, or to return a new offset token relative to an earlier one.
+For most filesystems and files, this operation amounts to performing
+simple arithmetic.
+Another new entry point is \fIvn_mmap\fP, for use in mapping device memory
+into a user process address space.
+Its semantics are not yet decided.
+The final additions are the \fIvn_lock\fP and \fIvn_unlock\fP entries.
+These are used to request that the underlying file be locked against
+changes for short periods of time if the filesystem implementation allows it.
+They are used to maintain consistency
+during internal operations such as \fIexec\fP,
+and may not be used to construct atomic operations from other filesystem
+operations.
+.PP
+The attributes of a vnode are not stored in the vnode,
+as they might change with time and may need to be read from a remote
+source.
+Attributes have the form:
+.DS
+.ta .5i +\w'struct vnodeops\0\0'u +\w'*v_vfsmountedhere;\0\0\0'u
+/*
+ * Vnode attributes. A field value of -1
+ * represents a field whose value is unavailable
+ * (getattr) or which is not to be changed (setattr).
+ */
+struct vattr {
+ enum vtype va_type; /* vnode type (for create) */
+ u_short va_mode; /* files access mode and type */
+\fB!\fP uid_t va_uid; /* owner user id */
+\fB!\fP gid_t va_gid; /* owner group id */
+ long va_fsid; /* file system id (dev for now) */
+\fB!\fP long va_fileid; /* file id */
+ short va_nlink; /* number of references to file */
+ u_long va_size; /* file size in bytes (quad?) */
+\fB+\fP u_long va_size1; /* reserved if not quad */
+ long va_blocksize; /* blocksize preferred for i/o */
+ struct timeval va_atime; /* time of last access */
+ struct timeval va_mtime; /* time of last modification */
+ struct timeval va_ctime; /* time file changed */
+ dev_t va_rdev; /* device the file represents */
+ u_long va_bytes; /* bytes of disk space held by file */
+\fB+\fP u_long va_bytes1; /* reserved if va_bytes not a quad */
+};
+.DE
+.NH
+Conclusions
+.PP
+The Sun VFS filesystem interface is the most widely used generic
+filesystem interface.
+Of the interfaces examined, it creates the cleanest separation
+between the filesystem-independent and -dependent layers and data structures.
+It has several flaws, but it is felt that certain changes in the interface
+can ameliorate most of them.
+The interface proposed here includes those changes.
+The proposed interface is now being implemented by the Computer Systems
+Research Group at Berkeley.
+If the design succeeds in improving the flexibility and performance
+of the filesystem layering, it will be advanced as a model interface.
+.NH
+Acknowledgements
+.PP
+The filesystem interface described here is derived from Sun's VFS interface.
+It also includes features similar to those of DEC's GFS interface.
+We are indebted to members of the Sun and DEC system groups
+for long discussions of the issues involved.
+.br
+.ne 2i
+.NH
+References
+
+.IP Brownbridge82 \w'Satyanarayanan85\0\0'u
+Brownbridge, D.R., L.F. Marshall, B. Randell,
+``The Newcastle Connection, or UNIXes of the World Unite!,''
+\fISoftware\- Practice and Experience\fP, Vol. 12, pp. 1147-1162, 1982.
+
+.IP Cole85
+Cole, C.T., P.B. Flinn, A.B. Atlas,
+``An Implementation of an Extended File System for UNIX,''
+\fIUsenix Conference Proceedings\fP,
+pp. 131-150, June, 1985.
+
+.IP Kleiman86
+``Vnodes: An Architecture for Multiple File System Types in Sun UNIX,''
+\fIUsenix Conference Proceedings\fP,
+pp. 238-247, June, 1986.
+
+.IP Leffler84
+Leffler, S., M.K. McKusick, M. Karels,
+``Measuring and Improving the Performance of 4.2BSD,''
+\fIUsenix Conference Proceedings\fP, pp. 237-252, June, 1984.
+
+.IP McKusick84
+McKusick, M.K., W.N. Joy, S.J. Leffler, R.S. Fabry,
+``A Fast File System for UNIX,'' \fITransactions on Computer Systems\fP,
+Vol. 2, pp. 181-197,
+ACM, August, 1984.
+
+.IP McKusick85
+McKusick, M.K., M. Karels, S. Leffler,
+``Performance Improvements and Functional Enhancements in 4.3BSD,''
+\fIUsenix Conference Proceedings\fP, pp. 519-531, June, 1985.
+
+.IP Rifkin86
+Rifkin, A.P., M.P. Forbes, R.L. Hamilton, M. Sabrio, S. Shah, and K. Yueh,
+``RFS Architectural Overview,'' \fIUsenix Conference Proceedings\fP,
+pp. 248-259, June, 1986.
+
+.IP Ritchie74
+Ritchie, D.M. and K. Thompson, ``The Unix Time-Sharing System,''
+\fICommunications of the ACM\fP, Vol. 17, pp. 365-375, July, 1974.
+
+.IP Rodriguez86
+Rodriguez, R., M. Koehler, R. Hyde,
+``The Generic File System,'' \fIUsenix Conference Proceedings\fP,
+pp. 260-269, June, 1986.
+
+.IP Sandberg85
+Sandberg, R., D. Goldberg, S. Kleiman, D. Walsh, B. Lyon,
+``Design and Implementation of the Sun Network Filesystem,''
+\fIUsenix Conference Proceedings\fP,
+pp. 119-130, June, 1985.
+
+.IP Satyanarayanan85
+Satyanarayanan, M., \fIet al.\fP,
+``The ITC Distributed File System: Principles and Design,''
+\fIProc. 10th Symposium on Operating Systems Principles\fP, pp. 35-50,
+ACM, December, 1985.
+
+.IP Walker85
+Walker, B.J. and S.H. Kiser, ``The LOCUS Distributed Filesystem,''
+\fIThe LOCUS Distributed System Architecture\fP,
+G.J. Popek and B.J. Walker, ed., The MIT Press, Cambridge, MA, 1985.
+
+.IP Weinberger84
+Weinberger, P.J., ``The Version 8 Network File System,''
+\fIUsenix Conference presentation\fP,
+June, 1984.
diff --git a/share/doc/papers/fsinterface/slides.t b/share/doc/papers/fsinterface/slides.t
new file mode 100644
index 0000000..3caaafb
--- /dev/null
+++ b/share/doc/papers/fsinterface/slides.t
@@ -0,0 +1,318 @@
+.\" Copyright (c) 1986 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)slides.t 5.2 (Berkeley) 4/16/91
+.\"
+.so macros
+.nf
+.LL
+Encapsulation of namei parameters
+.NP 0
+.ta .5i +\w'caddr_t\0\0'u +\w'struct\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+struct nameidata {
+ /* arguments and context: */
+ caddr_t ni_dirp;
+ enum uio_seg ni_seg;
+ short ni_nameiop;
+ struct vnode *ni_cdir;
+ struct vnode *ni_rdir;
+ struct ucred *ni_cred;
+.sp .2
+ /* shared with lookup and commit: */
+ caddr_t ni_pnbuf;
+ char *ni_ptr;
+ int ni_pathlen;
+ short ni_more;
+ short ni_loopcnt;
+.sp .2
+ /* results: */
+ struct vnode *ni_vp;
+ struct vnode *ni_dvp;
+.sp .2
+/* BEGIN UFS SPECIFIC */
+ struct diroffcache {
+ struct vnode *nc_prevdir;
+ long nc_id;
+ off_t nc_prevoffset;
+ } ni_nc;
+/* END UFS SPECIFIC */
+};
+.bp
+
+
+.LL
+Namei operations and modifiers
+
+.NP 0
+.ta \w'#define\0\0'u +\w'WANTPARENT\0\0'u +\w'0x40\0\0\0\0\0\0\0'u
+#define LOOKUP 0 /* name lookup only */
+#define CREATE 1 /* setup for creation */
+#define DELETE 2 /* setup for deletion */
+#define WANTPARENT 0x10 /* return parent vnode also */
+#define NOCACHE 0x20 /* remove name from cache */
+#define FOLLOW 0x40 /* follow symbolic links */
+.bp
+
+.LL
+Namei operations and modifiers
+
+.NP 0
+.ta \w'#define\0\0'u +\w'WANTPARENT\0\0'u +\w'0x40\0\0\0\0\0\0\0'u
+#define LOOKUP 0
+#define CREATE 1
+#define DELETE 2
+#define WANTPARENT 0x10
+#define NOCACHE 0x20
+#define FOLLOW 0x40
+.bp
+
+
+.LL
+Credentials
+
+.NP 0
+.ta .5i +\w'caddr_t\0\0\0'u +\w'struct\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+struct ucred {
+ u_short cr_ref;
+ uid_t cr_uid;
+ short cr_ngroups;
+ gid_t cr_groups[NGROUPS];
+ /*
+ * The following either should not be here,
+ * or should be treated as opaque.
+ */
+ uid_t cr_ruid;
+ gid_t cr_svgid;
+};
+.bp
+.LL
+Scatter-gather I/O
+.NP 0
+.ta .5i +\w'caddr_t\0\0\0'u +\w'struct\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+struct uio {
+ struct iovec *uio_iov;
+ int uio_iovcnt;
+ off_t uio_offset;
+ int uio_resid;
+ enum uio_rw uio_rw;
+};
+
+enum uio_rw { UIO_READ, UIO_WRITE };
+
+
+
+.ta .5i +\w'caddr_t\0\0\0'u +\w'vnode *nc_prevdir;\0\0\0\0\0'u
+struct iovec {
+ caddr_t iov_base;
+ int iov_len;
+ enum uio_seg iov_segflg;
+ int (*iov_op)();
+};
+.bp
+.LL
+Per-filesystem information
+.NP 0
+.ta .25i +\w'struct vfsops\0\0\0'u +\w'*vfs_vnodecovered;\0\0\0\0\0'u
+struct vfs {
+ struct vfs *vfs_next;
+\fB+\fP struct vfs *vfs_prev;
+ struct vfsops *vfs_op;
+ struct vnode *vfs_vnodecovered;
+ int vfs_flag;
+\fB!\fP int vfs_fsize;
+\fB+\fP int vfs_bsize;
+\fB!\fP uid_t vfs_exroot;
+ short vfs_exflags;
+ caddr_t vfs_data;
+};
+
+.NP 0
+.ta \w'\fB+\fP 'u +\w'#define\0\0'u +\w'VFS_EXPORTED\0\0'u +\w'0x40\0\0\0\0\0'u
+ /* vfs flags: */
+ #define VFS_RDONLY 0x01
+\fB+\fP #define VFS_NOEXEC 0x02
+ #define VFS_MLOCK 0x04
+ #define VFS_MWAIT 0x08
+ #define VFS_NOSUID 0x10
+ #define VFS_EXPORTED 0x20
+
+ /* exported vfs flags: */
+ #define EX_RDONLY 0x01
+.bp
+
+
+.LL
+Operations supported on virtual file system.
+
+.NP 0
+.ta .25i +\w'int\0\0'u +\w'*vfs_mountroot();\0'u
+struct vfsops {
+\fB!\fP int (*vfs_mount)(vfs, path, data, len);
+\fB!\fP int (*vfs_unmount)(vfs, forcibly);
+\fB+\fP int (*vfs_mountroot)();
+ int (*vfs_root)(vfs, vpp);
+ int (*vfs_statfs)(vfs, sbp);
+\fB!\fP int (*vfs_sync)(vfs, waitfor);
+\fB+\fP int (*vfs_fhtovp)(vfs, fhp, vpp);
+\fB+\fP int (*vfs_vptofh)(vp, fhp);
+};
+.bp
+
+
+.LL
+Dynamic file system information
+
+.NP 0
+.ta .5i +\w'struct\0\0\0'u +\w'*vfs_vnodecovered;\0\0\0\0\0'u
+struct statfs {
+\fB!\fP short f_type;
+\fB+\fP short f_flags;
+\fB!\fP long f_fsize;
+\fB+\fP long f_bsize;
+ long f_blocks;
+ long f_bfree;
+ long f_bavail;
+ long f_files;
+ long f_ffree;
+ fsid_t f_fsid;
+\fB+\fP char *f_mntonname;
+\fB+\fP char *f_mntfromname;
+ long f_spare[7];
+};
+
+typedef long fsid_t[2];
+.bp
+.LL
+Filesystem objects (vnodes)
+.NP 0
+.ta .25i +\w'struct vnodeops\0\0'u +\w'*v_vfsmountedhere;\0\0\0'u
+enum vtype { VNON, VREG, VDIR, VBLK, VCHR, VLNK, VSOCK };
+
+struct vnode {
+ u_short v_flag;
+ u_short v_count;
+ u_short v_shlockc;
+ u_short v_exlockc;
+ struct vfs *v_vfsmountedhere;
+ struct vfs *v_vfsp;
+ struct vnodeops *v_op;
+\fB+\fP struct text *v_text;
+ enum vtype v_type;
+ caddr_t v_data;
+};
+.ta \w'#define\0\0'u +\w'NOFOLLOW\0\0'u +\w'0x40\0\0\0\0\0\0\0'u
+
+/* vnode flags */
+#define VROOT 0x01
+#define VTEXT 0x02
+#define VEXLOCK 0x10
+#define VSHLOCK 0x20
+#define VLWAIT 0x40
+.bp
+.LL
+Operations on vnodes
+
+.NP 0
+.ta .25i +\w'int\0\0'u +\w'(*vn_getattr)(\0\0\0\0\0'u
+struct vnodeops {
+\fB!\fP int (*vn_lookup)(ndp);
+\fB!\fP int (*vn_create)(ndp, vap, fflags);
+\fB+\fP int (*vn_mknod)(ndp, vap, fflags);
+\fB!\fP int (*vn_open)(vp, fflags, cred);
+ int (*vn_close)(vp, fflags, cred);
+ int (*vn_access)(vp, fflags, cred);
+ int (*vn_getattr)(vp, vap, cred);
+ int (*vn_setattr)(vp, vap, cred);
+.sp .5
+\fB+\fP int (*vn_read)(vp, uiop,
+ offp, ioflag, cred);
+\fB+\fP int (*vn_write)(vp, uiop,
+ offp, ioflag, cred);
+\fB!\fP int (*vn_ioctl)(vp, com,
+ data, fflag, cred);
+ int (*vn_select)(vp, which, cred);
+\fB+\fP int (*vn_mmap)(vp, ..., cred);
+ int (*vn_fsync)(vp, cred);
+\fB+\fP int (*vn_seek)(vp, offp, off,
+ whence);
+.bp
+.LL
+Operations on vnodes (cont)
+
+.NP 0
+.ta .25i +\w'int\0\0'u +\w'(*vn_getattr)(\0\0\0\0\0'u
+
+\fB!\fP int (*vn_remove)(ndp);
+\fB!\fP int (*vn_link)(vp, ndp);
+\fB!\fP int (*vn_rename)(sndp, tndp);
+\fB!\fP int (*vn_mkdir)(ndp, vap);
+\fB!\fP int (*vn_rmdir)(ndp);
+\fB!\fP int (*vn_symlink)(ndp, vap, nm);
+\fB!\fP int (*vn_readdir)(vp, uiop,
+ offp, ioflag, cred);
+\fB!\fP int (*vn_readlink)(vp, uiop,
+ offp, ioflag, cred);
+.sp .5
+\fB+\fP int (*vn_abortop)(ndp);
+\fB!\fP int (*vn_inactive)(vp);
+};
+
+.NP 0
+.ta \w'#define\0\0'u +\w'NOFOLLOW\0\0'u +\w'0x40\0\0\0\0\0'u
+/* flags for ioflag */
+#define IO_UNIT 0x01
+#define IO_APPEND 0x02
+#define IO_SYNC 0x04
+.bp
+
+.LL
+Vnode attributes
+
+.NP 0
+.ta .5i +\w'struct timeval\0\0'u +\w'*v_vfsmountedhere;\0\0\0'u
+struct vattr {
+ enum vtype va_type;
+ u_short va_mode;
+\fB!\fP uid_t va_uid;
+\fB!\fP gid_t va_gid;
+ long va_fsid;
+\fB!\fP long va_fileid;
+ short va_nlink;
+ u_long va_size;
+\fB+\fP u_long va_size1;
+ long va_blocksize;
+ struct timeval va_atime;
+ struct timeval va_mtime;
+ struct timeval va_ctime;
+ dev_t va_rdev;
+\fB!\fP u_long va_bytes;
+\fB+\fP u_long va_bytes1;
+};
diff --git a/share/doc/papers/hwpmc/Makefile b/share/doc/papers/hwpmc/Makefile
new file mode 100644
index 0000000..d24fe06
--- /dev/null
+++ b/share/doc/papers/hwpmc/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+VOLUME= papers
+DOC= hwpmc
+SRCS= hwpmc.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/hwpmc/hwpmc.ms b/share/doc/papers/hwpmc/hwpmc.ms
new file mode 100644
index 0000000..9061bb7
--- /dev/null
+++ b/share/doc/papers/hwpmc/hwpmc.ms
@@ -0,0 +1,34 @@
+.\" Copyright (c) 2004 Joseph Koshy.
+.\"
+.\" 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 JOSEPH KOSHY 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 JOSEPH KOSHY 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$
+.\"
+.OH '''Using Hardware Performance Monitoring Counters'
+.EH 'HWPMC'''
+.TL
+Using Hardware Performance Monitoring Counters in FreeBSD
+.sp
+\s-2FreeBSD 5.2.1\s+2
+.sp
+\fRJuly, 2004\fR
+.PP
diff --git a/share/doc/papers/jail/Makefile b/share/doc/papers/jail/Makefile
new file mode 100644
index 0000000..5d49354
--- /dev/null
+++ b/share/doc/papers/jail/Makefile
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+VOLUME= papers
+DOC= jail
+SRCS= paper.ms-patched
+EXTRA= implementation.ms mgt.ms future.ms jail01.eps
+MACROS= -ms
+USE_SOELIM=
+CLEANFILES= paper.ms-patched
+
+paper.ms-patched: paper.ms
+ sed "s;jail01\.eps;${.CURDIR}/&;" ${.ALLSRC} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/jail/future.ms b/share/doc/papers/jail/future.ms
new file mode 100644
index 0000000..01c325d
--- /dev/null
+++ b/share/doc/papers/jail/future.ms
@@ -0,0 +1,104 @@
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Future Directions
+.PP
+The jail facility has already been deployed in numerous capacities and
+a few opportunities for improvement have manifested themselves.
+.NH 2
+Improved Virtualisation
+.PP
+As it stands, the jail code provides a strict subset of system resources
+to the jail environment, based on access to processes, files, network
+resources, and privileged services.
+Virtualisation, or making the jail environments appear to be fully
+functional FreeBSD systems, allows maximum application support and the
+ability to offer a wide range of services within a jail environment.
+However, there are a number of limitations on the degree of virtualisation
+in the current code, and removing these limitations will enhance the
+ability to offer services in a jail environment.
+Two areas that deserve greater attention are the virtualisation of
+network resources, and management of scheduling resources.
+.PP
+Currently, a single IP address may be allocated to each jail, and all
+communication from the jail is limited to that IP address.
+In particular, these addresses are IPv4 addresses.
+There has been substantial interest in improving interface virtualisation,
+allowing one or more addresses to be assigned to an interface, and
+removing the requirement that the address be an IPv4 address, allowing
+the use of IPv6.
+Also, access to raw sockets is currently prohibited, as the current
+implementation of raw sockets allows access to raw IP packets associated
+with all interfaces.
+Limiting the scope of the raw socket would allow its safe use within
+a jail, re-enabling support for ping, and other network debugging and
+evaluation tools.
+.PP
+Another area of great interest to the current consumers of the jail code
+is the ability to limit the impact of one jail on the CPU resources
+available for other jails.
+Specifically, this would require that the jail of a process play a rule in
+its scheduling parameters.
+Prior work in the area of lottery scheduling, currently available as
+patches on FreeBSD 2.2.x, might be leveraged to allow some degree of
+partitioning between jail environments \s-2[LOTTERY1] [LOTTERY2]\s+2.
+However, as the current scheduling mechanism is targeted at time
+sharing, and FreeBSD does not currently support real time preemption
+of processes in kernel, complete partitioning is not possible within the
+current framework.
+.NH 2
+Improved Management
+.PP
+Management of jail environments is currently somewhat ad hoc--creating
+and starting jails is a well-documented procedure, but day-to-day
+management of jails, as well as special case procedures such as shutdown,
+are not well analysed and documented.
+The current kernel process management infrastructure does not have the
+ability to manage pools of processes in a jail-centric way.
+For example, it is possible to, within a jail, deliver a signal to all
+processes in a jail, but it is not possibly to atomically target all
+processes within a jail from outside of the jail.
+If the jail code is to effectively limit the behaviour of a jail, the
+ability to shut it down cleanly is paramount.
+Similarly, shutting down a jail cleanly from within is also not well
+defined, the traditional shutdown utilities having been written with
+a host environment in mind.
+This suggests a number of improvements, both in the kernel and in the
+user-land utility set.
+.PP
+First, the ability to address kernel-centric management mechanisms at
+jails is important.
+One way in which this might be done is to assign a unique jail id, not
+unlike a process id or process group id, at jail creation time.
+A new jailkill() syscall would permit the direction of signals to
+specific jailids, allowing for the effective termination of all processes
+in the jail.
+A unique jailid could also supplant the hostname as the unique
+identifier for a jail, allowing the hostname to be changed by the
+processes in the jail without interfering with jail management.
+.PP
+More carefully defining the user-land semantics of a jail during startup
+and shutdown is also important.
+The traditional FreeBSD environment makes use of an init process to
+bring the system up during the boot process, and to assist in shutdown.
+A similar technique might be used for jail, in effect a jailinit,
+formulated to handle the clean startup and shutdown, including calling
+out to jail-local /etc/rc.shutdown, and other useful shutdown functions.
+A jailinit would also present a central location for delivering
+management requests to within a jail from the host environment, allowing
+the host environment to request the shutdown of the jail cleanly, before
+resorting to terminating processes, in the same style as the host
+environment shutting down before killing all processes and halting the
+kernel.
+.PP
+Improvements in the host environment would also assist in improving
+jail management, possibly including automated runtime jail management tools,
+tools to more easily construct the per-jail file system area, and
+include jail shutdown as part of normal system shutdown.
+.PP
+These improvements in the jail framework would improve both raw
+functionality and usability from a management perspective.
+The jail code has raised significant interest in the FreeBSD community,
+and it is hoped that this type of improved functionality will be
+available in upcoming releases of FreeBSD.
diff --git a/share/doc/papers/jail/implementation.ms b/share/doc/papers/jail/implementation.ms
new file mode 100644
index 0000000..eafc8f2
--- /dev/null
+++ b/share/doc/papers/jail/implementation.ms
@@ -0,0 +1,126 @@
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Implementation jail in the FreeBSD kernel.
+.NH 2
+The jail(2) system call, allocation, refcounting and deallocation of
+\fCstruct prison\fP.
+.PP
+The jail(2) system call is implemented as a non-optional system call
+in FreeBSD. Other system calls are controlled by compile time options
+in the kernel configuration file, but due to the minute footprint of
+the jail implementation, it was decided to make it a standard
+facility in FreeBSD.
+.PP
+The implementation of the system call is straightforward: a data structure
+is allocated and populated with the arguments provided. The data structure
+is attached to the current process' \fCstruct proc\fP, its reference count
+set to one and a call to the
+chroot(2) syscall implementation completes the task.
+.PP
+Hooks in the code implementing process creation and destruction maintains
+the reference count on the data structure and free it when the last reference
+is lost.
+Any new process created by a process in a jail will inherit a reference
+to the jail, which effectively puts the new process in the same jail.
+.PP
+There is no way to modify the contents of the data structure describing
+the jail after its creation, and no way to attach a process to an existing
+jail if it was not created from the inside that jail.
+.NH 2
+Fortification of the chroot(2) facility for filesystem name scoping.
+.PP
+A number of ways to escape the confines of a chroot(2)-created subscope
+of the filesystem view have been identified over the years.
+chroot(2) was never intended to be security mechanism as such, but even
+then the ftp daemon largely depended on the security provided by
+chroot(2) to provide the ``anonymous ftp'' access method.
+.PP
+Three classes of escape routes existed: recursive chroot(2) escapes,
+``..'' based escapes and fchdir(2) based escapes.
+All of these exploited the fact that chroot(2) didn't try sufficiently
+hard to enforce the new root directory.
+.PP
+New code were added to detect and thwart these escapes, amongst
+other things by tracking the directory of the first level of chroot(2)
+experienced by a process and refusing backwards traversal across
+this directory, as well as additional code to refuse chroot(2) if
+file-descriptors were open referencing directories.
+.NH 2
+Restriction of process visibility and interaction.
+.PP
+A macro was already in available in the kernel to determine if one process
+could affect another process. This macro did the rather complex checking
+of uid and gid values. It was felt that the complexity of the macro were
+approaching the lower edge of IOCCC entrance criteria, and it was therefore
+converted to a proper function named \fCp_trespass(p1, p2)\fP which does
+all the previous checks and additionally checks the jail aspect of the access.
+The check is implemented such that access fails if the origin process is jailed
+but the target process is not in the same jail.
+.PP
+Process visibility is provided through two mechanisms in FreeBSD,
+the \fCprocfs\fP file system and a sub-tree of the \fCsysctl\fP tree.
+Both of these were modified to report only the processes in the same
+jail to a jailed process.
+.NH 2
+Restriction to one IP number.
+.PP
+Restricting TCP and UDP access to just one IP number was done almost
+entirely in the code which manages ``protocol control blocks''.
+When a jailed process binds to a socket, the IP number provided by
+the process will not be used, instead the pre-configured IP number of
+the jail is used.
+.PP
+BSD based TCP/IP network stacks sport a special interface, the loop-back
+interface, which has the ``magic'' IP number 127.0.0.1.
+This is often used by processes to contact servers on the local machine,
+and consequently special handling for jails were needed.
+To handle this case it was necessary to also intercept and modify the
+behaviour of connection establishment, and when the 127.0.0.1 address
+were seen from a jailed process, substitute the jails configured IP number.
+.PP
+Finally the APIs through which the network configuration and connection
+state may be queried were modified to report only information relevant
+to the configured IP number of a jailed process.
+.NH 2
+Adding jail awareness to selected device drivers.
+.PP
+A couple of device drivers needed to be taught about jails, the ``pty''
+driver is one of them. The pty driver provides ``virtual terminals'' to
+services like telnet, ssh, rlogin and X11 terminal window programs.
+Therefore jails need access to the pty driver, and code had to be added
+to enforce that a particular virtual terminal were not accessed from more
+than one jail at the same time.
+.NH 2
+General restriction of super-users powers for jailed super-users.
+.PP
+This item proved to be the simplest but most tedious to implement.
+Tedious because a manual review of all places where the kernel allowed
+the super user special powers were called for,
+simple because very few places were required to let a jailed root through.
+Of the approximately 260 checks in the FreeBSD 4.0 kernel, only
+about 35 will let a jailed root through.
+.PP
+Since the default is for jailed roots to not receive privilege, new
+code or drivers in the FreeBSD kernel are automatically jail-aware: they
+will refuse jailed roots privilege.
+The other part of this protection comes from the fact that a jailed
+root cannot create new device nodes with the mknod(2) systemcall, so
+unless the machine administrator creates device nodes for a particular
+device inside the jails filesystem tree, the driver in effect does
+not exist in the jail.
+.PP
+As a side-effect of this work the suser(9) API were cleaned up and
+extended to cater for not only the jail facility, but also to make room
+for future partitioning facilities.
+.NH 2
+Implementation statistics
+.PP
+The change of the suser(9) API modified approx 350 source lines
+distributed over approx. 100 source files. The vast majority of
+these changes were generated automatically with a script.
+.PP
+The implementation of the jail facility added approx 200 lines of
+code in total, distributed over approx. 50 files. and about 200 lines
+in two new kernel files.
diff --git a/share/doc/papers/jail/jail01.eps b/share/doc/papers/jail/jail01.eps
new file mode 100644
index 0000000..ffcfa30
--- /dev/null
+++ b/share/doc/papers/jail/jail01.eps
@@ -0,0 +1,234 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: jail01.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 1
+%%CreationDate: Fri Mar 24 20:37:59 2000
+%%For: $FreeBSD$
+%%Orientation: Portrait
+%%BoundingBox: 0 0 425 250
+%%Pages: 0
+%%BeginSetup
+%%EndSetup
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+-117.0 298.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+%%EndProlog
+
+$F2psBegin
+10 setmiterlimit
+n -1000 5962 m -1000 -1000 l 10022 -1000 l 10022 5962 l cp clip
+ 0.06000 0.06000 sc
+/Courier-BoldOblique ff 180.00 scf sf
+7725 3600 m
+gs 1 -1 sc (10.0.0.2) dup sw pop neg 0 rm col0 sh gr
+% Polyline
+15.000 slw
+n 9000 3300 m 9000 4275 l gs col0 s gr
+% Polyline
+2 slc
+n 7875 3225 m 7800 3225 l gs col0 s gr
+% Polyline
+0 slc
+n 7875 4125 m 7800 4125 l gs col0 s gr
+% Polyline
+n 7875 3225 m 7875 4425 l gs col0 s gr
+% Polyline
+n 7875 3825 m 7800 3825 l gs col0 s gr
+% Polyline
+n 7875 3525 m 7800 3525 l gs col0 s gr
+% Polyline
+n 8175 3825 m 7875 3825 l gs col0 s gr
+% Polyline
+2 slc
+n 7875 4425 m 7800 4425 l gs col0 s gr
+/Courier-Bold ff 180.00 scf sf
+8700 3900 m
+gs 1 -1 sc (fxp0) dup sw pop neg 0 rm col0 sh gr
+% Polyline
+0 slc
+7.500 slw
+n 2925 1425 m 3075 1425 l gs col0 s gr
+% Polyline
+15.000 slw
+n 2475 1350 m 2472 1347 l 2465 1342 l 2453 1334 l 2438 1323 l 2420 1311 l
+ 2401 1299 l 2383 1289 l 2366 1281 l 2351 1275 l 2338 1274 l
+ 2325 1275 l 2314 1279 l 2303 1285 l 2291 1293 l 2278 1303 l
+ 2264 1314 l 2250 1326 l 2236 1339 l 2222 1353 l 2209 1366 l
+ 2198 1379 l 2188 1391 l 2181 1403 l 2177 1414 l 2175 1425 l
+ 2177 1436 l 2181 1447 l 2188 1459 l 2198 1471 l 2209 1484 l
+ 2222 1497 l 2236 1511 l 2250 1524 l 2264 1536 l 2278 1547 l
+ 2291 1557 l 2303 1565 l 2314 1571 l 2325 1575 l 2338 1576 l
+ 2351 1575 l 2366 1569 l 2383 1561 l 2401 1551 l 2420 1539 l
+ 2438 1527 l 2453 1516 l 2465 1508 l 2472 1503 l 2475 1500 l gs col0 s gr
+/Courier-Bold ff 180.00 scf sf
+2550 1500 m
+gs 1 -1 sc (lo0) col0 sh gr
+/Courier-BoldOblique ff 180.00 scf sf
+3075 1500 m
+gs 1 -1 sc (127.0.0.1) col0 sh gr
+% Polyline
+7.500 slw
+n 2100 3525 m 2250 3525 l gs col0 s gr
+% Polyline
+n 2550 2100 m 2250 2400 l 2250 4500 l 2550 4800 l gs col0 s gr
+/Courier-Bold ff 180.00 scf sf
+1950 3600 m
+gs 1 -1 sc (/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 3900 m
+gs 1 -1 sc (jail_1/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 4200 m
+gs 1 -1 sc (jail_2/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 4500 m
+gs 1 -1 sc (jail_3/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 2400 m
+gs 1 -1 sc (dev/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 2700 m
+gs 1 -1 sc (etc/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 3000 m
+gs 1 -1 sc (usr/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 3300 m
+gs 1 -1 sc (var/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+2550 3600 m
+gs 1 -1 sc (home/) col0 sh gr
+% Polyline
+n 3375 3825 m 3900 3825 l 4950 1800 l 5100 1800 l gs col0 s gr
+% Polyline
+n 3375 4125 m 3900 4125 l 4950 3900 l 5100 3900 l gs col0 s gr
+% Polyline
+n 5400 900 m 5100 1200 l 5100 2400 l 5400 2700 l gs col0 s gr
+% Polyline
+n 5400 3000 m 5100 3300 l 5100 4500 l 5400 4800 l gs col0 s gr
+% Polyline
+n 4650 825 m 4650 2775 l 6675 2775 l 6675 3375 l 7950 3375 l 7950 825 l
+ cp gs col0 s gr
+% Polyline
+n 4650 2775 m 4650 4950 l 6300 4950 l 6300 3675 l 7950 3675 l 7950 3375 l
+ 6675 3375 l 6675 2775 l cp gs col0 s gr
+/Courier-Bold ff 180.00 scf sf
+5400 1200 m
+gs 1 -1 sc (dev/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 1500 m
+gs 1 -1 sc (etc/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 1800 m
+gs 1 -1 sc (usr/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 2100 m
+gs 1 -1 sc (var/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 2400 m
+gs 1 -1 sc (home/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 3300 m
+gs 1 -1 sc (dev/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 3600 m
+gs 1 -1 sc (etc/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 3900 m
+gs 1 -1 sc (usr/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 4200 m
+gs 1 -1 sc (var/) col0 sh gr
+/Courier-Bold ff 180.00 scf sf
+5400 4500 m
+gs 1 -1 sc (home/) col0 sh gr
+/Courier-BoldOblique ff 180.00 scf sf
+7725 3300 m
+gs 1 -1 sc (10.0.0.1) dup sw pop neg 0 rm col0 sh gr
+/Courier-BoldOblique ff 180.00 scf sf
+7725 4500 m
+gs 1 -1 sc (10.0.0.5) dup sw pop neg 0 rm col0 sh gr
+/Courier-BoldOblique ff 180.00 scf sf
+7725 4200 m
+gs 1 -1 sc (10.0.0.4) dup sw pop neg 0 rm col0 sh gr
+/Courier-BoldOblique ff 180.00 scf sf
+7725 3900 m
+gs 1 -1 sc (10.0.0.3) dup sw pop neg 0 rm col0 sh gr
+% Polyline
+15.000 slw
+n 9000 3825 m 8775 3825 l gs col0 s gr
+$F2psEnd
+rs
diff --git a/share/doc/papers/jail/jail01.fig b/share/doc/papers/jail/jail01.fig
new file mode 100644
index 0000000..d4ef165
--- /dev/null
+++ b/share/doc/papers/jail/jail01.fig
@@ -0,0 +1,86 @@
+#FIG 3.2
+# $FreeBSD$
+Landscape
+Center
+Inches
+A4
+100.00
+Single
+-2
+1200 2
+6 7725 3150 9075 4500
+6 8700 3225 9075 4350
+2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 9000 3825 8775 3825
+2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 9000 3300 9000 4275
+-6
+2 1 0 2 0 7 100 0 -1 0.000 0 2 -1 0 0 2
+ 7875 3225 7800 3225
+2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 7875 4125 7800 4125
+2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 7875 3225 7875 4425
+2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 7875 3825 7800 3825
+2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 7875 3525 7800 3525
+2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 8175 3825 7875 3825
+2 1 0 2 0 7 100 0 -1 0.000 0 2 -1 0 0 2
+ 7875 4425 7800 4425
+4 2 0 100 0 14 12 0.0000 4 180 420 8700 3900 fxp0\001
+-6
+6 2100 1200 4050 1650
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 2925 1425 3075 1425
+3 2 0 2 0 7 100 0 -1 0.000 0 0 0 5
+ 2475 1350 2325 1275 2175 1425 2325 1575 2475 1500
+ 0.000 -1.000 -1.000 -1.000 0.000
+4 0 0 100 0 14 12 0.0000 4 135 315 2550 1500 lo0\001
+4 0 0 100 0 15 12 0.0000 4 135 945 3075 1500 127.0.0.1\001
+-6
+6 1950 2100 3300 4800
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 2100 3525 2250 3525
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 2550 2100 2250 2400 2250 4500 2550 4800
+4 0 0 100 0 14 12 0.0000 4 150 105 1950 3600 /\001
+4 0 0 100 0 14 12 0.0000 4 180 735 2550 3900 jail_1/\001
+4 0 0 100 0 14 12 0.0000 4 180 735 2550 4200 jail_2/\001
+4 0 0 100 0 14 12 0.0000 4 180 735 2550 4500 jail_3/\001
+4 0 0 100 0 14 12 0.0000 4 165 420 2550 2400 dev/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 2550 2700 etc/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 2550 3000 usr/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 2550 3300 var/\001
+4 0 0 100 0 14 12 0.0000 4 165 525 2550 3600 home/\001
+-6
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 3375 3825 3900 3825 4950 1800 5100 1800
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 3375 4125 3900 4125 4950 3900 5100 3900
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 5400 900 5100 1200 5100 2400 5400 2700
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 4
+ 5400 3000 5100 3300 5100 4500 5400 4800
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 7
+ 4650 825 4650 2775 6675 2775 6675 3375 7950 3375 7950 825
+ 4650 825
+2 3 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 9
+ 4650 2775 4650 4950 6300 4950 6300 3675 7950 3675 7950 3375
+ 6675 3375 6675 2775 4650 2775
+4 0 0 100 0 14 12 0.0000 4 165 420 5400 1200 dev/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 5400 1500 etc/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 5400 1800 usr/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 5400 2100 var/\001
+4 0 0 100 0 14 12 0.0000 4 165 525 5400 2400 home/\001
+4 0 0 100 0 14 12 0.0000 4 165 420 5400 3300 dev/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 5400 3600 etc/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 5400 3900 usr/\001
+4 0 0 100 0 14 12 0.0000 4 150 420 5400 4200 var/\001
+4 0 0 100 0 14 12 0.0000 4 165 525 5400 4500 home/\001
+4 2 0 100 0 15 12 0.0000 4 135 840 7725 3300 10.0.0.1\001
+4 2 0 100 0 15 12 0.0000 4 135 840 7725 4500 10.0.0.5\001
+4 2 0 100 0 15 12 0.0000 4 135 840 7725 4200 10.0.0.4\001
+4 2 0 100 0 15 12 0.0000 4 135 840 7725 3900 10.0.0.3\001
+4 2 0 100 0 15 12 0.0000 4 135 840 7725 3600 10.0.0.2\001
diff --git a/share/doc/papers/jail/mgt.ms b/share/doc/papers/jail/mgt.ms
new file mode 100644
index 0000000..e2835d7
--- /dev/null
+++ b/share/doc/papers/jail/mgt.ms
@@ -0,0 +1,218 @@
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Managing Jails and the Jail File System Environment
+.NH 2
+Creating a Jail Environment
+.PP
+While the jail(2) call could be used in a number of ways, the expected
+configuration creates a complete FreeBSD installation for each jail.
+This includes copies of all relevant system binaries, data files, and its
+own \fC/etc\fP directory.
+Such a configuration maximises the independence of various jails,
+and reduces the chances of interference between jails being possible,
+especially when it is desirable to provide root access within a jail to
+a less trusted user.
+.PP
+On a box making use of the jail facility, we refer to two types of
+environment: the host environment, and the jail environment.
+The host environment is the real operating system environment, which is
+used to configure interfaces, and start up the jails.
+There are then one or more jail environments, effectively virtual
+FreeBSD machines.
+When configuring Jail for use, it is necessary to configure both the
+host and jail environments to prevent overlap.
+.PP
+As jailed virtual machines are generally bound to an IP address configured
+using the normal IP alias mechanism, those jail IP addresses are also
+accessible to host environment applications to use.
+If the accessibility of some host applications in the jail environment is
+not desirable, it is necessary to configure those applications to only
+listen on appropriate addresses.
+.PP
+In most of the production environments where jail is currently in use,
+one IP address is allocated to the host environment, and then a number
+are allocated to jail boxes, with each jail box receiving a unique IP.
+In this situation, it is sufficient to configure the networking applications
+on the host to listen only on the host IP.
+Generally, this consists of specifying the appropriate IP address to be
+used by inetd and SSH, and disabling applications that are not capable
+of limiting their address scope, such as sendmail, the port mapper, and
+syslogd.
+Other third party applications that have been installed on the host must also be
+configured in this manner, or users connecting to the jailbox will
+discover the host environment service, unless the jailbox has
+specifically bound a service to that port.
+In some situations, this can actually be the desirable behaviour.
+.PP
+The jail environments must also be custom-configured.
+This consists of building and installing a miniature version of the
+FreeBSD file system tree off of a subdirectory in the host environment,
+usually \fC/usr/jail\fP, or \fC/data/jail\fP, with a subdirectory per jail.
+Appropriate instructions for generating this tree are included in the
+jail(8) man page, but generally this process may be automated using the
+FreeBSD build environment.
+.PP
+One notable difference from the default FreeBSD install is that only
+a limited set of device nodes should be created.
+MAKEDEV(8) has been modified to accept a ``jail'' argument that creates
+the correct set of nodes.
+.PP
+To improve storage efficiency, a fair number of the binaries in the system tree
+may be deleted, as they are not relevant in a jail environment.
+This includes the kernel, boot loader, and related files, as well as
+hardware and network configuration tools.
+.PP
+After the creation of the jail tree, the easiest way to configure it is
+to start up the jail in single-user mode.
+The sysinstall admin tool may be used to help with the task, although
+it is not installed by default as part of the system tree.
+These tools should be run in the jail environment, or they will affect
+the host environment's configuration.
+.DS
+.ft C
+.ps -2
+# mkdir /data/jail/192.168.11.100/stand
+# cp /stand/sysinstall /data/jail/192.168.11.100/stand
+# jail /data/jail/192.168.11.100 testhostname 192.168.11.100 \e
+ /bin/sh
+.ps +2
+.R
+.DE
+.PP
+After running the jail command, the shell is now within the jail environment,
+and all further commands
+will be limited to the scope of the jail until the shell exits.
+If the network alias has not yet been configured, then the jail will be
+unable to access the network.
+.PP
+The startup configuration of the jail environment may be configured so
+as to quell warnings from services that cannot run in the jail.
+Also, any per-system configuration required for a normal FreeBSD system
+is also required for each jailbox.
+Typically, this includes:
+.IP "" 5n
+\(bu Create empty /etc/fstab
+.IP
+\(bu Disable portmapper
+.IP
+\(bu Run newaliases
+.IP
+\(bu Disabling interface configuration
+.IP
+\(bu Configure the resolver
+.IP
+\(bu Set root password
+.IP
+\(bu Set timezone
+.IP
+\(bu Add any local accounts
+.IP
+\(bu Install any packets
+.NH 2
+Starting Jails
+.PP
+Jails are typically started by executing their /etc/rc script in much
+the same manner a shell was started in the previous section.
+Before starting the jail, any relevant networking configuration
+should also be performed.
+Typically, this involves adding an additional IP address to the
+appropriate network interface, setting network properties for the
+IP address using IP filtering, forwarding, and bandwidth shaping,
+and mounting a process file system for the jail, if the ability to
+debug processes from within the jail is desired.
+.DS
+.ft C
+.ps -2
+# ifconfig ed0 inet add 192.168.11.100 netmask 255.255.255.255
+# mount -t procfs proc /data/jail/192.168.11.100/proc
+# jail /data/jail/192.168.11.100 testhostname 192.168.11.100 \e
+ /bin/sh /etc/rc
+.ps +2
+.ft P
+.DE
+.PP
+A few warnings are generated for sysctl's that are not permitted
+to be set within the jail, but the end result is a set of processes
+in an isolated process environment, bound to a single IP address.
+Normal procedures for accessing a FreeBSD machine apply: telneting in
+through the network reveals a telnet prompt, login, and shell.
+.DS
+.ft C
+.ps -2
+% ps ax
+ PID TT STAT TIME COMMAND
+ 228 ?? SsJ 0:18.73 syslogd
+ 247 ?? IsJ 0:00.05 inetd -wW
+ 249 ?? IsJ 0:28.43 cron
+ 252 ?? SsJ 0:30.46 sendmail: accepting connections on port 25
+ 291 ?? IsJ 0:38.53 /usr/local/sbin/sshd
+93694 ?? SJ 0:01.01 sshd: rwatson@ttyp0 (sshd)
+93695 p0 SsJ 0:00.06 -csh (csh)
+93700 p0 R+J 0:00.00 ps ax
+.ps +2
+.ft P
+.DE
+.PP
+It is immediately obvious that the environment is within a jailbox: there
+is no init process, no kernel daemons, and a J flag is present beside all
+processes indicating the presence of a jail.
+.PP
+As with any FreeBSD system, accounts may be created and deleted,
+mail is delivered, logs are generated, packages may be added, and the
+system may be hacked into if configured incorrectly, or running a buggy
+version of a piece of software.
+However, all of this happens strictly within the scope of the jail.
+.NH 2
+Jail Management
+.PP
+Jail management is an interesting prospect, as there are two perspectives
+from which a jail environment may be administered: from within the jail,
+and from the host environment.
+From within the jail, as described above, the process is remarkably similar
+to any regular FreeBSD install, although certain actions are prohibited,
+such as mounting file systems, modifying system kernel properties, etc.
+The only area that really differs are that of shutting
+the system down: the processes within the jail may deliver signals
+between them, allowing all processes to be killed, but bringing the
+system back up requires intervention from outside of the jailbox.
+.PP
+From outside of the jail, there are a range of capabilities, as well
+as limitations.
+The jail environment is, in effect, a subset of the host environment:
+the jail file system appears as part of the host file system, and may
+be directly modified by processes in the host environment.
+Processes within the jail appear in the process listing of the host,
+and may likewise be signalled or debugged.
+The host process file system makes the hostname of the jail environment
+accessible in /proc/procnum/status, allowing utilities in the host
+environment to manage processes based on jailname.
+However, the default configuration allows privileged processes within
+jails to set the hostname of the jail, which makes the status file less
+useful from a management perspective if the contents of the jail are
+malicious.
+To prevent a jail from changing its hostname, the
+"security.jail.set_hostname_allowed" sysctl may be set to 0 prior to
+starting any jails.
+.PP
+One aspect immediately observable in an environment with multiple jails
+is that uids and gids are local to each jail environment: the uid associated
+with a process in one jail may be for a different user than in another
+jail.
+This collision of identifiers is only visible in the host environment,
+as normally processes from one jail are never visible in an environment
+with another scope for user/uid and group/gid mapping.
+Managers in the host environment should understand these scoping issues,
+or confusion and unintended consequences may result.
+.PP
+Jailed processes are subject to the normal restrictions present for
+any processes, including resource limits, and limits placed by the network
+code, including firewall rules.
+By specifying firewall rules for the IP address bound to a jail, it is
+possible to place connectivity and bandwidth limitations on individual
+jails, restricting services that may be consumed or offered.
+.PP
+Management of jails is an area that will see further improvement in
+future versions of FreeBSD. Some of these potential improvements are
+discussed later in this paper.
diff --git a/share/doc/papers/jail/paper.ms b/share/doc/papers/jail/paper.ms
new file mode 100644
index 0000000..60be9f2
--- /dev/null
+++ b/share/doc/papers/jail/paper.ms
@@ -0,0 +1,438 @@
+.\"
+.\" $FreeBSD$
+.\"
+.if n .ftr C R
+.ig TL
+.ds CH "
+.nr PI 2n
+.nr PS 12
+.nr LL 15c
+.nr PO 3c
+.nr FM 3.5c
+.po 3c
+.TL
+Jails: Confining the omnipotent root.
+.FS
+This paper was presented at the 2nd International System Administration and Networking Conference "SANE 2000" May 22-25, 2000 in Maastricht, The Netherlands and is published in the proceedings.
+.FE
+.AU
+Poul-Henning Kamp <phk@FreeBSD.org>
+.AU
+Robert N. M. Watson <rwatson@FreeBSD.org>
+.AI
+The FreeBSD Project
+.FS
+This work was sponsored by \fChttp://www.servetheweb.com/\fP and
+donated to the FreeBSD Project for inclusion in the FreeBSD
+OS. FreeBSD 4.0-RELEASE was the first release including this
+code.
+Follow-on work was sponsored by Safeport Network Services,
+\fChttp://www.safeport.com/\fP
+.FE
+.AB
+The traditional UNIX security model is simple but inexpressive.
+Adding fine-grained access control improves the expressiveness,
+but often dramatically increases both the cost of system management
+and implementation complexity.
+In environments with a more complex management model, with delegation
+of some management functions to parties under varying degrees of trust,
+the base UNIX model and most natural
+extensions are inappropriate at best.
+Where multiple mutually un-trusting parties are introduced,
+``inappropriate'' rapidly transitions to ``nightmarish'', especially
+with regards to data integrity and privacy protection.
+.PP
+The FreeBSD ``Jail'' facility provides the ability to partition
+the operating system environment, while maintaining the simplicity
+of the UNIX ``root'' model.
+In Jail, users with privilege find that the scope of their requests
+is limited to the jail, allowing system administrators to delegate
+management capabilities for each virtual machine
+environment.
+Creating virtual machines in this manner has many potential uses; the
+most popular thus far has been for providing virtual machine services
+in Internet Service Provider environments.
+.AE
+.NH
+Introduction
+.PP
+The UNIX access control mechanism is designed for an environment with two
+types of users: those with, and without administrative privilege.
+Within this framework, every attempt is made to provide an open
+system, allowing easy sharing of files and inter-process communication.
+As a member of the UNIX family, FreeBSD inherits these
+security properties.
+Users of FreeBSD in non-traditional UNIX environments must balance
+their need for strong application support, high network performance
+and functionality, and low total cost of ownership with the need
+for alternative security models that are difficult or impossible to
+implement with the UNIX security mechanisms.
+.PP
+One such consideration is the desire to delegate some (but not all)
+administrative functions to untrusted or less trusted parties, and
+simultaneously impose system-wide mandatory policies on process
+interaction and sharing.
+Attempting to create such an environment in the current-day FreeBSD
+security environment is both difficult and costly: in many cases,
+the burden of implementing these policies falls on user
+applications, which means an increase in the size and complexity
+of the code base, in turn translating to higher development
+and maintenance cost, as well as less overall flexibility.
+.PP
+This abstract risk becomes more clear when applied to a practical,
+real-world example:
+many web service providers turn to the FreeBSD
+operating system to host customer web sites, as it provides a
+high-performance, network-centric server environment.
+However, these providers have a number of concerns on their plate, both in
+terms of protecting the integrity and confidentiality of their own
+files and services from their customers, as well as protecting the files
+and services of one customer from (accidental or
+intentional) access by any other customer.
+At the same time, a provider would like to provide
+substantial autonomy to customers, allowing them to install and
+maintain their own software, and to manage their own services,
+such as web servers and other content-related daemon programs.
+.PP
+This problem space points strongly in the direction of a partitioning
+solution, in which customer processes and storage are isolated from those of
+other customers, both in terms of accidental disclosure of data or process
+information, but also in terms of the ability to modify files or processes
+outside of a compartment.
+Delegation of management functions within the system must
+be possible, but not at the cost of system-wide requirements, including
+integrity and privacy protection between partitions.
+.PP
+However, UNIX-style access control makes it notoriously difficult to
+compartmentalise functionality.
+While mechanisms such as chroot(2) provide a modest
+level compartmentalisation, it is well known
+that these mechanisms have serious shortcomings, both in terms of the
+scope of their functionality, and effectiveness at what they provide \s-2[CHROOT]\s+2.
+.PP
+In the case of the chroot(2) call, a process's visibility of
+the file system name-space is limited to a single subtree.
+However, the compartmentalisation does not extend to the process
+or networking spaces and therefore both observation of and interference
+with processes outside their compartment is possible.
+.PP
+To this end, we describe the new FreeBSD ``Jail'' facility, which
+provides a strong partitioning solution, leveraging existing
+mechanisms, such as chroot(2), to what effectively amounts to a
+virtual machine environment. Processes in a jail are provided
+full access to the files that they may manipulate, processes they
+may influence, and network services they can make use of, and neither
+access nor visibility of files, processes or network services outside
+their partition.
+.PP
+Unlike other fine-grained security solutions, Jail does not
+substantially increase the policy management requirements for the
+system administrator, as each Jail is a virtual FreeBSD environment
+permitting local policy to be independently managed, with much the
+same properties as the main system itself, making Jail easy to use
+for the administrator, and far more compatible with applications.
+.NH
+Traditional UNIX Security, or, ``God, root, what difference?" \s-2[UF]\s+2.
+.PP
+The traditional UNIX access model assigns numeric uids to each user of the
+system. In turn, each process ``owned'' by a user will be tagged with that
+user's uid in an unforgeable manner. The uids serve two purposes: first,
+they determine how discretionary access control mechanisms will be applied, and
+second, they are used to determine whether special privileges are accorded.
+.PP
+In the case of discretionary access controls, the primary object protected is
+a file. The uid (and related gids indicating group membership) are mapped to
+a set of rights for each object, courtesy the UNIX file mode, in effect acting
+as a limited form of access control list. Jail is, in general, not concerned
+with modifying the semantics of discretionary access control mechanisms,
+although there are important implications from a management perspective.
+.PP
+For the purposes of determining whether special privileges are accorded to a
+process, the check is simple: ``is the numeric uid equal to 0 ?''.
+If so, the
+process is acting with ``super-user privileges'', and all access checks are
+granted, in effect allowing the process the ability to do whatever it wants
+to \**.
+.FS
+\&... no matter how patently stupid it may be.
+.FE
+.PP
+For the purposes of human convenience, uid 0 is canonically allocated
+to the ``root'' user \s-2[ROOT]\s+2.
+For the purposes of jail, this behaviour is extremely relevant: many of
+these privileged operations can be used to manage system hardware and
+configuration, file system name-space, and special network operations.
+.PP
+Many limitations to this model are immediately clear: the root user is a
+single, concentrated source of privilege that is exposed to many pieces of
+software, and as such an immediate target for attacks. In the event of a
+compromise of the root capability set, the attacker has complete control over
+the system. Even without an attacker, the risks of a single administrative
+account are serious: delegating a narrow scope of capability to an
+inexperienced administrator is difficult, as the granularity of delegation is
+that of all system management abilities. These features make the omnipotent
+root account a sharp, efficient and extremely dangerous tool.
+.PP
+The BSD family of operating systems have implemented the ``securelevel''
+mechanism which allows the administrator to block certain configuration
+and management functions from being performed by root,
+until the system is restarted and brought up into single-user mode.
+While this does provide some amount of protection in the case of a root
+compromise of the machine, it does nothing to address the need for
+delegation of certain root abilities.
+.NH
+Other Solutions to the Root Problem
+.PP
+Many operating systems attempt to address these limitations by providing
+fine-grained access controls for system resources \s-2[BIBA]\s+2.
+These efforts vary in
+degrees of success, but almost all suffer from at least three serious
+limitations:
+.PP
+First, increasing the granularity of security controls increases the
+complexity of the administration process, in turn increasing both the
+opportunity for incorrect configuration, as well as the demand on
+administrator time and resources. In many cases, the increased complexity
+results in significant frustration for the administrator, which may result
+in two
+disastrous types of policy: ``all doors open as it's too much trouble'', and
+``trust that the system is secure, when in fact it isn't''.
+.PP
+The extent of the trouble is best illustrated by the fact that an entire
+niche industry has emerged providing tools to manage fine grained security
+controls \s-2[UAS]\s+2.
+.PP
+Second, usefully segregating capabilities and assigning them to running code
+and users is very difficult. Many privileged operations in UNIX seem
+independent, but are in fact closely related, and the handing out of one
+privilege may, in effect, be transitive to the many others. For example, in
+some trusted operating systems, a system capability may be assigned to a
+running process to allow it to read any file, for the purposes of backup.
+However, this capability is, in effect, equivalent to the ability to switch to
+any other account, as the ability to access any file provides access to system
+keying material, which in turn provides the ability to authenticate as any
+user. Similarly, many operating systems attempt to segregate management
+capabilities from auditing capabilities. In a number of these operating
+systems, however, ``management capabilities'' permit the administrator to
+assign ``auditing capabilities'' to itself, or another account, circumventing
+the segregation of capability.
+.PP
+Finally, introducing new security features often involves introducing new
+security management APIs. When fine-grained capabilities are introduced to
+replace the setuid mechanism in UNIX-like operating systems, applications that
+previously did an ``appropriateness check'' to see if they were running as
+root before executing must now be changed to know that they need not run as
+root. In the case of applications running with privilege and executing other
+programs, there is now a new set of privileges that must be voluntarily given
+up before executing another program. These change can introduce significant
+incompatibility for existing applications, and make life more difficult for
+application developers who may not be aware of differing security semantics on
+different systems \s-2[POSIX1e]\s+2.
+.NH
+The Jail Partitioning Solution
+.PP
+Jail neatly side-steps the majority of these problems through partitioning.
+Rather
+than introduce additional fine-grained access control mechanism, we partition
+a FreeBSD environment (processes, file system, network resources) into a
+management environment, and optionally subset Jail environments. In doing so,
+we simultaneously maintain the existing UNIX security model, allowing
+multiple users and a privileged root user in each jail, while
+limiting the scope of root's activities to his jail.
+Consequently the administrator of a
+FreeBSD machine can partition the machine into separate jails, and provide
+access to the super-user account in each of these without losing control of
+the over-all environment.
+.PP
+A process in a partition is referred to as ``in jail''. When a FreeBSD
+system is booted up after a fresh install, no processes will be in jail.
+When
+a process is placed in a jail, it, and any descendents of the process created
+after the jail creation, will be in that jail. A process may be in only one
+jail, and after creation, it can not leave the jail.
+Jails are created when a
+privileged process calls the jail(2) syscall, with a description of the jail as an
+argument to the call. Each call to jail(2) creates a new jail; the only way
+for a new process to enter the jail is by inheriting access to the jail from
+another process already in that jail.
+Processes may never
+leave the jail they created, or were created in.
+.KF
+.if t .PSPIC jail01.eps 4i
+.ce 1
+Fig. 1 \(em Schematic diagram of machine with two configured jails
+.sp
+.KE
+.PP
+Membership in a jail involves a number of restrictions: access to the file
+name-space is restricted in the style of chroot(2), the ability to bind network
+resources is limited to a specific IP address, the ability to manipulate
+system resources and perform privileged operations is sharply curtailed, and
+the ability to interact with other processes is limited to only processes
+inside the same jail.
+.PP
+Jail takes advantage of the existing chroot(2) behaviour to limit access to the
+file system name-space for jailed processes. When a jail is created, it is
+bound to a particular file system root.
+Processes are unable to manipulate files that they cannot address,
+and as such the integrity and confidentiality of files outside of the jail
+file system root are protected. Traditional mechanisms for breaking out of
+chroot(2) have been blocked.
+In the expected and documented configuration, each jail is provided
+with its exclusive file system root, and standard FreeBSD directory layout,
+but this is not mandated by the implementation.
+.PP
+Each jail is bound to a single IP address: processes within the jail may not
+make use of any other IP address for outgoing or incoming connections; this
+includes the ability to restrict what network services a particular jail may
+offer. As FreeBSD distinguishes attempts to bind all IP addresses from
+attempts to bind a particular address, bind requests for all IP addresses are
+redirected to the individual Jail address. Some network functionality
+associated with privileged calls are wholesale disabled due to the nature of the
+functionality offered, in particular facilities which would allow ``spoofing''
+of IP numbers or disruptive traffic to be generated have been disabled.
+.PP
+Processes running without root privileges will notice few, if any differences
+between a jailed environment or un-jailed environment. Processes running with
+root privileges will find that many restrictions apply to the privileged calls
+they may make. Some calls will now return an access error \(em for example, an
+attempt to create a device node will now fail. Others will have a more
+limited scope than normal \(em attempts to bind a reserved port number on all
+available addresses will result in binding only the address associated with
+the jail. Other calls will succeed as normal: root may read a file owned by
+any uid, as long as it is accessible through the jail file system name-space.
+.PP
+Processes within the jail will find that they are unable to interact or
+even verify the existence of
+processes outside the jail \(em processes within the jail are
+prevented from delivering signals to processes outside the jail, as well as
+connecting to those processes with debuggers, or even see them in the
+sysctl or process file system monitoring mechanisms. Jail does not prevent,
+nor is it intended to prevent, the use of covert channels or communications
+mechanisms via accepted interfaces \(em for example, two processes may communicate
+via sockets over the IP network interface. Nor does it attempt to provide
+scheduling services based on the partition; however, it does prevent calls
+that interfere with normal process operation.
+.PP
+As a result of these attempts to retain the standard FreeBSD API and
+framework, almost all applications will run unaffected. Standard system
+services such as Telnet, FTP, and SSH all behave normally, as do most third
+party applications, including the popular Apache web server.
+.NH
+Jail Implementation
+.PP
+Processes running with root privileges in the jail find that there are serious
+restrictions on what it is capable of doing \(em in particular, activities that
+would extend outside of the jail:
+.IP "" 5n
+\(bu Modifying the running kernel by direct access and loading kernel
+modules is prohibited.
+.IP
+\(bu Modifying any of the network configuration, interfaces, addresses, and
+routing table is prohibited.
+.IP
+\(bu Mounting and unmounting file systems is prohibited.
+.IP
+\(bu Creating device nodes is prohibited.
+.IP
+\(bu Accessing raw, divert, or routing sockets is prohibited.
+.IP
+\(bu Modifying kernel runtime parameters, such as most sysctl settings, is
+prohibited.
+.IP
+\(bu Changing securelevel-related file flags is prohibited.
+.IP
+\(bu Accessing network resources not associated with the jail is prohibited.
+.PP
+Other privileged activities are permitted as long as they are limited to the
+scope of the jail:
+.IP "" 5n
+\(bu Signalling any process within the jail is permitted.
+.IP
+\(bu Changing the ownership and mode of any file within the jail is permitted, as
+long as the file flags permit this.
+.IP
+\(bu Deleting any file within the jail is permitted, as long as the file flags
+permit this.
+.IP
+\(bu Binding reserved TCP and UDP port numbers on the jails IP address is
+permitted. (Attempts to bind TCP and UDP ports using INADDR_ANY will be
+redirected to the jails IP address.)
+.IP
+\(bu Functions which operate on the uid/gid space are all permitted since they
+act as labels for filesystem objects of proceses
+which are partitioned off by other mechanisms.
+.PP
+These restrictions on root access limit the scope of root processes, enabling
+most applications to run un-hindered, but preventing calls that might allow an
+application to reach beyond the jail and influence other processes or
+system-wide configuration.
+.PP
+.so implementation.ms
+.so mgt.ms
+.so future.ms
+.NH
+Conclusion
+.PP
+The jail facility provides FreeBSD with a conceptually simple security
+partitioning mechanism, allowing the delegation of administrative rights
+within virtual machine partitions.
+.PP
+The implementation relies on
+restricting access within the jail environment to a well-defined subset
+of the overall host environment. This includes limiting interaction
+between processes, and to files, network resources, and privileged
+operations. Administrative overhead is reduced through avoiding
+fine-grained access control mechanisms, and maintaining a consistent
+administrative interface across partitions and the host environment.
+.PP
+The jail facility has already seen widespread deployment in particular as
+a vehicle for delivering "virtual private server" services.
+.PP
+The jail code is included in the base system as part of FreeBSD 4.0-RELEASE,
+and fully documented in the jail(2) and jail(8) man-pages.
+.bp
+.SH
+Notes & References
+.IP \s-2[BIBA]\s+2 .5i
+K. J. Biba, Integrity Considerations for Secure
+Computer Systems, USAF Electronic Systems Division, 1977
+.IP \s-2[CHROOT]\s+2 .5i
+Dr. Marshall Kirk Mckusick, private communication:
+``According to the SCCS logs, the chroot call was added by Bill Joy
+on March 18, 1982 approximately 1.5 years before 4.2BSD was released.
+That was well before we had ftp servers of any sort (ftp did not
+show up in the source tree until January 1983). My best guess as
+to its purpose was to allow Bill to chroot into the /4.2BSD build
+directory and build a system using only the files, include files,
+etc contained in that tree. That was the only use of chroot that
+I remember from the early days.''
+.IP \s-2[LOTTERY1]\s+2 .5i
+David Petrou and John Milford. Proportional-Share Scheduling:
+Implementation and Evaluation in a Widely-Deployed Operating System,
+December 1997.
+.nf
+\s-2\fChttp://www.cs.cmu.edu/~dpetrou/papers/freebsd_lottery_writeup98.ps\fP\s+2
+\s-2\fChttp://www.cs.cmu.edu/~dpetrou/code/freebsd_lottery_code.tar.gz\fP\s+2
+.IP \s-2[LOTTERY2]\s+2 .5i
+Carl A. Waldspurger and William E. Weihl. Lottery Scheduling: Flexible Proportional-Share Resource Management, Proceedings of the First Symposium on Operating Systems Design and Implementation (OSDI '94), pages 1-11, Monterey, California, November 1994.
+.nf
+\s-2\fChttp://www.research.digital.com/SRC/personal/caw/papers.html\fP\s+2
+.IP \s-2[POSIX1e]\s+2 .5i
+Draft Standard for Information Technology \(em
+Portable Operating System Interface (POSIX) \(em
+Part 1: System Application Program Interface (API) \(em Amendment:
+Protection, Audit and Control Interfaces [C Language]
+IEEE Std 1003.1e Draft 17 Editor Casey Schaufler
+.IP \s-2[ROOT]\s+2 .5i
+Historically other names have been used at times, Zilog for instance
+called the super-user account ``zeus''.
+.IP \s-2[UAS]\s+2 .5i
+One such niche product is the ``UAS'' system to maintain and audit
+RACF configurations on MVS systems.
+.nf
+\s-2\fChttp://www.entactinfo.com/products/uas/\fP\s+2
+.IP \s-2[UF]\s+2 .5i
+Quote from the User-Friendly cartoon by Illiad.
+.nf
+\s-2\fChttp://www.userfriendly.org/cartoons/archives/98nov/19981111.html\fP\s+2
diff --git a/share/doc/papers/kernmalloc/Makefile b/share/doc/papers/kernmalloc/Makefile
new file mode 100644
index 0000000..e706f0a
--- /dev/null
+++ b/share/doc/papers/kernmalloc/Makefile
@@ -0,0 +1,18 @@
+# From: @(#)Makefile 1.8 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= kernmalloc
+SRCS= kernmalloc.t appendix.ms
+EXTRA= alloc.fig usage.tbl
+MACROS= -ms
+USE_EQN=
+USE_PIC=
+USE_SOELIM=
+USE_TBL=
+CLEANFILES= appendix.ms
+
+appendix.ms: appendix.t
+ ${GRIND} < ${.ALLSRC} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/kernmalloc/alloc.fig b/share/doc/papers/kernmalloc/alloc.fig
new file mode 100644
index 0000000..1ef260b
--- /dev/null
+++ b/share/doc/papers/kernmalloc/alloc.fig
@@ -0,0 +1,115 @@
+.\" Copyright (c) 1988 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)alloc.fig 5.1 (Berkeley) 4/16/91
+.\"
+.PS
+scale=100
+define m0 |
+[ box invis ht 16 wid 32 with .sw at 0,0
+line from 4,12 to 4,4
+line from 8,12 to 8,4
+line from 12,12 to 12,4
+line from 16,12 to 16,4
+line from 20,12 to 20,4
+line from 24,12 to 24,4
+line from 28,12 to 28,4
+line from 0,16 to 0,0
+line from 0,8 to 32,8
+] |
+
+define m1 |
+[ box invis ht 16 wid 32 with .sw at 0,0
+line from 8,12 to 8,4
+line from 16,12 to 16,4
+line from 24,12 to 24,4
+line from 0,8 to 32,8
+line from 0,16 to 0,0
+] |
+
+define m2 |
+[ box invis ht 16 wid 32 with .sw at 0,0
+line from 0,8 to 32,8
+line from 0,16 to 0,0
+] |
+
+define m3 |
+[ box invis ht 16 wid 31 with .sw at 0,0
+line from 15,12 to 15,4
+line from 0,8 to 31,8
+line from 0,16 to 0,0
+] |
+
+box invis ht 212 wid 580 with .sw at 0,0
+"\f1\s10\&kernel memory pages\f1\s0" at 168,204
+"\f1\s10\&Legend:\f1\s0" at 36,144
+"\f1\s10\&cont \- continuation of previous page\f1\s0" at 28,112 ljust
+"\f1\s10\&free \- unused page\f1\s0" at 28,128 ljust
+"\f1\s10\&Usage:\f1\s0" at 34,87
+"\f1\s10\&memsize(addr)\f1\s0" at 36,71 ljust
+"\f1\s10\&char *addr;\f1\s0" at 66,56 ljust
+"\f1\s10\&{\f1\s0" at 36,43 ljust
+"\f1\s10\&return(kmemsizes[(addr \- kmembase) \- \s-1PAGESIZE\s+1]);\f1" at 66,29 ljust
+"\f1\s10\&}\f1\s0" at 36,8 ljust
+line from 548,192 to 548,176
+line from 548,184 to 580,184 dotted
+"\f1\s10\&1024,\f1\s0" at 116,168
+"\f1\s10\&256,\f1\s0" at 148,168
+"\f1\s10\&512,\f1\s0" at 180,168
+"\f1\s10\&3072,\f1\s0" at 212,168
+"\f1\s10\&cont,\f1\s0" at 276,168
+"\f1\s10\&cont,\f1\s0" at 244,168
+"\f1\s10\&128,\f1\s0" at 308,168
+"\f1\s10\&128,\f1\s0" at 340,168
+"\f1\s10\&free,\f1\s0" at 372,168
+"\f1\s10\&cont,\f1\s0" at 404,168
+"\f1\s10\&128,\f1\s0" at 436,168
+"\f1\s10\&1024,\f1\s0" at 468,168
+"\f1\s10\&free,\f1\s0" at 500,168
+"\f1\s10\&cont,\f1\s0" at 532,168
+"\f1\s10\&cont,\f1\s0" at 564,168
+m2 with .nw at 100,192
+m1 with .nw at 132,192
+m3 with .nw at 164,192
+m2 with .nw at 196,192
+m2 with .nw at 228,192
+m2 with .nw at 260,192
+m0 with .nw at 292,192
+m0 with .nw at 324,192
+m2 with .nw at 356,192
+m2 with .nw at 388,192
+m0 with .nw at 420,192
+m2 with .nw at 452,192
+m2 with .nw at 484,192
+m2 with .nw at 516,192
+"\f1\s10\&kmemsizes[] = {\f1\s0" at 100,168 rjust
+"\f1\s10\&char *kmembase\f1\s0" at 97,184 rjust
+.PE
diff --git a/share/doc/papers/kernmalloc/appendix.t b/share/doc/papers/kernmalloc/appendix.t
new file mode 100644
index 0000000..bcd3e8c
--- /dev/null
+++ b/share/doc/papers/kernmalloc/appendix.t
@@ -0,0 +1,137 @@
+.\" Copyright (c) 1988 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)appendix.t 5.1 (Berkeley) 4/16/91
+.\"
+.bp
+.H 1 "Appendix A - Implementation Details"
+.LP
+.nf
+.vS
+/*
+ * Constants for setting the parameters of the kernel memory allocator.
+ *
+ * 2 ** MINBUCKET is the smallest unit of memory that will be
+ * allocated. It must be at least large enough to hold a pointer.
+ *
+ * Units of memory less or equal to MAXALLOCSAVE will permanently
+ * allocate physical memory; requests for these size pieces of memory
+ * are quite fast. Allocations greater than MAXALLOCSAVE must
+ * always allocate and free physical memory; requests for these size
+ * allocations should be done infrequently as they will be slow.
+ * Constraints: CLBYTES <= MAXALLOCSAVE <= 2 ** (MINBUCKET + 14)
+ * and MAXALLOCSIZE must be a power of two.
+ */
+#define MINBUCKET 4 /* 4 => min allocation of 16 bytes */
+#define MAXALLOCSAVE (2 * CLBYTES)
+
+/*
+ * Maximum amount of kernel dynamic memory.
+ * Constraints: must be a multiple of the pagesize.
+ */
+#define MAXKMEM (1024 * PAGESIZE)
+
+/*
+ * Arena for all kernel dynamic memory allocation.
+ * This arena is known to start on a page boundary.
+ */
+extern char kmembase[MAXKMEM];
+
+/*
+ * Array of descriptors that describe the contents of each page
+ */
+struct kmemsizes {
+ short ks_indx; /* bucket index, size of small allocations */
+ u_short ks_pagecnt; /* for large allocations, pages allocated */
+} kmemsizes[MAXKMEM / PAGESIZE];
+
+/*
+ * Set of buckets for each size of memory block that is retained
+ */
+struct kmembuckets {
+ caddr_t kb_next; /* list of free blocks */
+} bucket[MINBUCKET + 16];
+.bp
+/*
+ * Macro to convert a size to a bucket index. If the size is constant,
+ * this macro reduces to a compile time constant.
+ */
+#define MINALLOCSIZE (1 << MINBUCKET)
+#define BUCKETINDX(size) \
+ (size) <= (MINALLOCSIZE * 128) \
+ ? (size) <= (MINALLOCSIZE * 8) \
+ ? (size) <= (MINALLOCSIZE * 2) \
+ ? (size) <= (MINALLOCSIZE * 1) \
+ ? (MINBUCKET + 0) \
+ : (MINBUCKET + 1) \
+ : (size) <= (MINALLOCSIZE * 4) \
+ ? (MINBUCKET + 2) \
+ : (MINBUCKET + 3) \
+ : (size) <= (MINALLOCSIZE* 32) \
+ ? (size) <= (MINALLOCSIZE * 16) \
+ ? (MINBUCKET + 4) \
+ : (MINBUCKET + 5) \
+ : (size) <= (MINALLOCSIZE * 64) \
+ ? (MINBUCKET + 6) \
+ : (MINBUCKET + 7) \
+ : (size) <= (MINALLOCSIZE * 2048) \
+ /* etc ... */
+
+/*
+ * Macro versions for the usual cases of malloc/free
+ */
+#define MALLOC(space, cast, size, flags) { \
+ register struct kmembuckets *kbp = &bucket[BUCKETINDX(size)]; \
+ long s = splimp(); \
+ if (kbp->kb_next == NULL) { \
+ (space) = (cast)malloc(size, flags); \
+ } else { \
+ (space) = (cast)kbp->kb_next; \
+ kbp->kb_next = *(caddr_t *)(space); \
+ } \
+ splx(s); \
+}
+
+#define FREE(addr) { \
+ register struct kmembuckets *kbp; \
+ register struct kmemsizes *ksp = \
+ &kmemsizes[((addr) - kmembase) / PAGESIZE]; \
+ long s = splimp(); \
+ if (1 << ksp->ks_indx > MAXALLOCSAVE) { \
+ free(addr); \
+ } else { \
+ kbp = &bucket[ksp->ks_indx]; \
+ *(caddr_t *)(addr) = kbp->kb_next; \
+ kbp->kb_next = (caddr_t)(addr); \
+ } \
+ splx(s); \
+}
+.vE
diff --git a/share/doc/papers/kernmalloc/kernmalloc.t b/share/doc/papers/kernmalloc/kernmalloc.t
new file mode 100644
index 0000000..d074c9e
--- /dev/null
+++ b/share/doc/papers/kernmalloc/kernmalloc.t
@@ -0,0 +1,653 @@
+.\" Copyright (c) 1988 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)kernmalloc.t 5.1 (Berkeley) 4/16/91
+.\" $FreeBSD$
+.\"
+.\" reference a system routine name
+.de RN
+\fI\\$1\fP\^(\h'1m/24u')\\$2
+..
+.\" reference a header name
+.de H
+.NH \\$1
+\\$2
+..
+.\" begin figure
+.\" .FI "title"
+.nr Fn 0 1
+.de FI
+.ds Lb Figure \\n+(Fn
+.ds Lt \\$1
+.KF
+.DS B
+.nf
+..
+.\"
+.\" end figure
+.de Fe
+.DE
+.ce
+\\*(Lb. \\*(Lt
+.sp
+.KE
+..
+.EQ
+delim $$
+.EN
+.ds CH "
+.pn 295
+.sp
+.rs
+.ps -1
+.sp -1
+.fi
+Reprinted from:
+\fIProceedings of the San Francisco USENIX Conference\fP,
+pp. 295-303, June 1988.
+.ps
+.\".sp |\n(HMu
+.rm CM
+.nr PO 1.25i
+.TL
+Design of a General Purpose Memory Allocator for the 4.3BSD UNIX\(dg Kernel
+.ds LF Summer USENIX '88
+.ds CF "%
+.ds RF San Francisco, June 20-24
+.EH 'Design of a General Purpose Memory ...''McKusick, Karels'
+.OH 'McKusick, Karels''Design of a General Purpose Memory ...'
+.FS
+\(dgUNIX is a registered trademark of AT&T in the US and other countries.
+.FE
+.AU
+Marshall Kirk McKusick
+.AU
+Michael J. Karels
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.AB
+The 4.3BSD UNIX kernel uses many memory allocation mechanisms,
+each designed for the particular needs of the utilizing subsystem.
+This paper describes a general purpose dynamic memory allocator
+that can be used by all of the kernel subsystems.
+The design of this allocator takes advantage of known memory usage
+patterns in the UNIX kernel and a hybrid strategy that is time-efficient
+for small allocations and space-efficient for large allocations.
+This allocator replaces the multiple memory allocation interfaces
+with a single easy-to-program interface,
+results in more efficient use of global memory by eliminating
+partitioned and specialized memory pools,
+and is quick enough that no performance loss is observed
+relative to the current implementations.
+The paper concludes with a discussion of our experience in using
+the new memory allocator,
+and directions for future work.
+.AE
+.LP
+.H 1 "Kernel Memory Allocation in 4.3BSD
+.PP
+The 4.3BSD kernel has at least ten different memory allocators.
+Some of them handle large blocks,
+some of them handle small chained data structures,
+and others include information to describe I/O operations.
+Often the allocations are for small pieces of memory that are only
+needed for the duration of a single system call.
+In a user process such short-term
+memory would be allocated on the run-time stack.
+Because the kernel has a limited run-time stack,
+it is not feasible to allocate even moderate blocks of memory on it.
+Consequently, such memory must be allocated through a more dynamic mechanism.
+For example,
+when the system must translate a pathname,
+it must allocate a one kilobye buffer to hold the name.
+Other blocks of memory must be more persistent than a single system call
+and really have to be allocated from dynamic memory.
+Examples include protocol control blocks that remain throughout
+the duration of the network connection.
+.PP
+Demands for dynamic memory allocation in the kernel have increased
+as more services have been added.
+Each time a new type of memory allocation has been required,
+a specialized memory allocation scheme has been written to handle it.
+Often the new memory allocation scheme has been built on top
+of an older allocator.
+For example, the block device subsystem provides a crude form of
+memory allocation through the allocation of empty buffers [Thompson78].
+The allocation is slow because of the implied semantics of
+finding the oldest buffer, pushing its contents to disk if they are dirty,
+and moving physical memory into or out of the buffer to create
+the requested size.
+To reduce the overhead, a ``new'' memory allocator was built in 4.3BSD
+for name translation that allocates a pool of empty buffers.
+It keeps them on a free list so they can
+be quickly allocated and freed [McKusick85].
+.PP
+This memory allocation method has several drawbacks.
+First, the new allocator can only handle a limited range of sizes.
+Second, it depletes the buffer pool, as it steals memory intended
+to buffer disk blocks to other purposes.
+Finally, it creates yet another interface of
+which the programmer must be aware.
+.PP
+A generalized memory allocator is needed to reduce the complexity
+of writing code inside the kernel.
+Rather than providing many semi-specialized ways of allocating memory,
+the kernel should provide a single general purpose allocator.
+With only a single interface,
+programmers do not need to figure
+out the most appropriate way to allocate memory.
+If a good general purpose allocator is available,
+it helps avoid the syndrome of creating yet another special
+purpose allocator.
+.PP
+To ease the task of understanding how to use it,
+the memory allocator should have an interface similar to the interface
+of the well-known memory allocator provided for
+applications programmers through the C library routines
+.RN malloc
+and
+.RN free .
+Like the C library interface,
+the allocation routine should take a parameter specifying the
+size of memory that is needed.
+The range of sizes for memory requests should not be constrained.
+The free routine should take a pointer to the storage being freed,
+and should not require additional information such as the size
+of the piece of memory being freed.
+.H 1 "Criteria for a Kernel Memory Allocator
+.PP
+The design specification for a kernel memory allocator is similar to,
+but not identical to,
+the design criteria for a user level memory allocator.
+The first criterion for a memory allocator is that it make good use
+of the physical memory.
+Good use of memory is measured by the amount of memory needed to hold
+a set of allocations at any point in time.
+Percentage utilization is expressed as:
+.ie t \{\
+.EQ
+utilization~=~requested over required
+.EN
+.\}
+.el \{\
+.sp
+.ce
+\fIutilization\fP=\fIrequested\fP/\fIrequired\fP
+.sp
+.\}
+Here, ``requested'' is the sum of the memory that has been requested
+and not yet freed.
+``Required'' is the amount of memory that has been
+allocated for the pool from which the requests are filled.
+An allocator requires more memory than requested because of fragmentation
+and a need to have a ready supply of free memory for future requests.
+A perfect memory allocator would have a utilization of 100%.
+In practice,
+having a 50% utilization is considered good [Korn85].
+.PP
+Good memory utilization in the kernel is more important than
+in user processes.
+Because user processes run in virtual memory,
+unused parts of their address space can be paged out.
+Thus pages in the process address space
+that are part of the ``required'' pool that are not
+being ``requested'' need not tie up physical memory.
+Because the kernel is not paged,
+all pages in the ``required'' pool are held by the kernel and
+cannot be used for other purposes.
+To keep the kernel utilization percentage as high as possible,
+it is desirable to release unused memory in the ``required'' pool
+rather than to hold it as is typically done with user processes.
+Because the kernel can directly manipulate its own page maps,
+releasing unused memory is fast;
+a user process must do a system call to release memory.
+.PP
+The most important criterion for a memory allocator is that it be fast.
+Because memory allocation is done frequently,
+a slow memory allocator will degrade the system performance.
+Speed of allocation is more critical when executing in the
+kernel than in user code,
+because the kernel must allocate many data structure that user
+processes can allocate cheaply on their run-time stack.
+In addition, the kernel represents the platform on which all user
+processes run,
+and if it is slow, it will degrade the performance of every process
+that is running.
+.PP
+Another problem with a slow memory allocator is that programmers
+of frequently-used kernel interfaces will feel that they
+cannot afford to use it as their primary memory allocator.
+Instead they will build their own memory allocator on top of the
+original by maintaining their own pool of memory blocks.
+Multiple allocators reduce the efficiency with which memory is used.
+The kernel ends up with many different free lists of memory
+instead of a single free list from which all allocation can be drawn.
+For example,
+consider the case of two subsystems that need memory.
+If they have their own free lists,
+the amount of memory tied up in the two lists will be the
+sum of the greatest amount of memory that each of
+the two subsystems has ever used.
+If they share a free list,
+the amount of memory tied up in the free list may be as low as the
+greatest amount of memory that either subsystem used.
+As the number of subsystems grows,
+the savings from having a single free list grow.
+.H 1 "Existing User-level Implementations
+.PP
+There are many different algorithms and
+implementations of user-level memory allocators.
+A survey of those available on UNIX systems appeared in [Korn85].
+Nearly all of the memory allocators tested made good use of memory,
+though most of them were too slow for use in the kernel.
+The fastest memory allocator in the survey by nearly a factor of two
+was the memory allocator provided on 4.2BSD originally
+written by Chris Kingsley at California Institute of Technology.
+Unfortunately,
+the 4.2BSD memory allocator also wasted twice as much memory
+as its nearest competitor in the survey.
+.PP
+The 4.2BSD user-level memory allocator works by maintaining a set of lists
+that are ordered by increasing powers of two.
+Each list contains a set of memory blocks of its corresponding size.
+To fulfill a memory request,
+the size of the request is rounded up to the next power of two.
+A piece of memory is then removed from the list corresponding
+to the specified power of two and returned to the requester.
+Thus, a request for a block of memory of size 53 returns
+a block from the 64-sized list.
+A typical memory allocation requires a roundup calculation
+followed by a linked list removal.
+Only if the list is empty is a real memory allocation done.
+The free operation is also fast;
+the block of memory is put back onto the list from which it came.
+The correct list is identified by a size indicator stored
+immediately preceding the memory block.
+.H 1 "Considerations Unique to a Kernel Allocator
+.PP
+There are several special conditions that arise when writing a
+memory allocator for the kernel that do not apply to a user process
+memory allocator.
+First, the maximum memory allocation can be determined at
+the time that the machine is booted.
+This number is never more than the amount of physical memory on the machine,
+and is typically much less since a machine with all its
+memory dedicated to the operating system is uninteresting to use.
+Thus, the kernel can statically allocate a set of data structures
+to manage its dynamically allocated memory.
+These data structures never need to be
+expanded to accommodate memory requests;
+yet, if properly designed, they need not be large.
+For a user process, the maximum amount of memory that may be allocated
+is a function of the maximum size of its virtual memory.
+Although it could allocate static data structures to manage
+its entire virtual memory,
+even if they were efficiently encoded they would potentially be huge.
+The other alternative is to allocate data structures as they are needed.
+However, that adds extra complications such as new
+failure modes if it cannot allocate space for additional
+structures and additional mechanisms to link them all together.
+.PP
+Another special condition of the kernel memory allocator is that it
+can control its own address space.
+Unlike user processes that can only grow and shrink their heap at one end,
+the kernel can keep an arena of kernel addresses and allocate
+pieces from that arena which it then populates with physical memory.
+The effect is much the same as a user process that has parts of
+its address space paged out when they are not in use,
+except that the kernel can explicitly control the set of pages
+allocated to its address space.
+The result is that the ``working set'' of pages in use by the
+kernel exactly corresponds to the set of pages that it is really using.
+.FI "One day memory usage on a Berkeley time-sharing machine"
+.so usage.tbl
+.Fe
+.PP
+A final special condition that applies to the kernel is that
+all of the different uses of dynamic memory are known in advance.
+Each one of these uses of dynamic memory can be assigned a type.
+For each type of dynamic memory that is allocated,
+the kernel can provide allocation limits.
+One reason given for having separate allocators is that
+no single allocator could starve the rest of the kernel of all
+its available memory and thus a single runaway
+client could not paralyze the system.
+By putting limits on each type of memory,
+the single general purpose memory allocator can provide the same
+protection against memory starvation.\(dg
+.FS
+\(dgOne might seriously ask the question what good it is if ``only''
+one subsystem within the kernel hangs if it is something like the
+network on a diskless workstation.
+.FE
+.PP
+\*(Lb shows the memory usage of the kernel over a one day period
+on a general timesharing machine at Berkeley.
+The ``In Use'', ``Free'', and ``Mem Use'' fields are instantaneous values;
+the ``Requests'' field is the number of allocations since system startup;
+the ``High Use'' field is the maximum value of
+the ``Mem Use'' field since system startup.
+The figure demonstrates that most
+allocations are for small objects.
+Large allocations occur infrequently,
+and are typically for long-lived objects
+such as buffers to hold the superblock for
+a mounted file system.
+Thus, a memory allocator only needs to be
+fast for small pieces of memory.
+.H 1 "Implementation of the Kernel Memory Allocator
+.PP
+In reviewing the available memory allocators,
+none of their strategies could be used without some modification.
+The kernel memory allocator that we ended up with is a hybrid
+of the fast memory allocator found in the 4.2BSD C library
+and a slower but more-memory-efficient first-fit allocator.
+.PP
+Small allocations are done using the 4.2BSD power-of-two list strategy;
+the typical allocation requires only a computation of
+the list to use and the removal of an element if it is available,
+so it is quite fast.
+Macros are provided to avoid the cost of a subroutine call.
+Only if the request cannot be fulfilled from a list is a call
+made to the allocator itself.
+To ensure that the allocator is always called for large requests,
+the lists corresponding to large allocations are always empty.
+Appendix A shows the data structures and implementation of the macros.
+.PP
+Similarly, freeing a block of memory can be done with a macro.
+The macro computes the list on which to place the request
+and puts it there.
+The free routine is called only if the block of memory is
+considered to be a large allocation.
+Including the cost of blocking out interrupts,
+the allocation and freeing macros generate respectively
+only nine and sixteen (simple) VAX instructions.
+.PP
+Because of the inefficiency of power-of-two allocation strategies
+for large allocations,
+a different strategy is used for allocations larger than two kilobytes.
+The selection of two kilobytes is derived from our statistics on
+the utilization of memory within the kernel,
+that showed that 95 to 98% of allocations are of size one kilobyte or less.
+A frequent caller of the memory allocator
+(the name translation function)
+always requests a one kilobyte block.
+Additionally the allocation method for large blocks is based on allocating
+pieces of memory in multiples of pages.
+Consequently the actual allocation size for requests of size
+$2~times~pagesize$ or less are identical.\(dg
+.FS
+\(dgTo understand why this number is $size 8 {2~times~pagesize}$ one
+observes that the power-of-two algorithm yields sizes of 1, 2, 4, 8, \&...
+pages while the large block algorithm that allocates in multiples
+of pages yields sizes of 1, 2, 3, 4, \&... pages.
+Thus for allocations of sizes between one and two pages
+both algorithms use two pages;
+it is not until allocations of sizes between two and three pages
+that a difference emerges where the power-of-two algorithm will use
+four pages while the large block algorithm will use three pages.
+.FE
+In 4.3BSD on the VAX, the (software) page size is one kilobyte,
+so two kilobytes is the smallest logical cutoff.
+.PP
+Large allocations are first rounded up to be a multiple of the page size.
+The allocator then uses a first-fit algorithm to find space in the
+kernel address arena set aside for dynamic allocations.
+Thus a request for a five kilobyte piece of memory will use exactly
+five pages of memory rather than eight kilobytes as with
+the power-of-two allocation strategy.
+When a large piece of memory is freed,
+the memory pages are returned to the free memory pool,
+and the address space is returned to the kernel address arena
+where it is coalesced with adjacent free pieces.
+.PP
+Another technique to improve both the efficiency of memory utilization
+and the speed of allocation
+is to cluster same-sized small allocations on a page.
+When a list for a power-of-two allocation is empty,
+a new page is allocated and divided into pieces of the needed size.
+This strategy speeds future allocations as several pieces of memory
+become available as a result of the call into the allocator.
+.PP
+.FI "Calculation of allocation size"
+.so alloc.fig
+.Fe
+Because the size is not specified when a block of memory is freed,
+the allocator must keep track of the sizes of the pieces it has handed out.
+The 4.2BSD user-level allocator stores the size of each block
+in a header just before the allocation.
+However, this strategy doubles the memory requirement for allocations that
+require a power-of-two-sized block.
+Therefore,
+instead of storing the size of each piece of memory with the piece itself,
+the size information is associated with the memory page.
+\*(Lb shows how the kernel determines
+the size of a piece of memory that is being freed,
+by calculating the page in which it resides,
+and looking up the size associated with that page.
+Eliminating the cost of the overhead per piece improved utilization
+far more than expected.
+The reason is that many allocations in the kernel are for blocks of
+memory whose size is exactly a power of two.
+These requests would be nearly doubled if the user-level strategy were used.
+Now they can be accommodated with no wasted memory.
+.PP
+The allocator can be called both from the top half of the kernel,
+which is willing to wait for memory to become available,
+and from the interrupt routines in the bottom half of the kernel
+that cannot wait for memory to become available.
+Clients indicate their willingness (and ability) to wait with a flag
+to the allocation routine.
+For clients that are willing to wait,
+the allocator guarrentees that their request will succeed.
+Thus, these clients can need not check the return value from the allocator.
+If memory is unavailable and the client cannot wait,
+the allocator returns a null pointer.
+These clients must be prepared to cope with this
+(hopefully infrequent) condition
+(usually by giving up and hoping to do better later).
+.H 1 "Results of the Implementation
+.PP
+The new memory allocator was written about a year ago.
+Conversion from the old memory allocators to the new allocator
+has been going on ever since.
+Many of the special purpose allocators have been eliminated.
+This list includes
+.RN calloc ,
+.RN wmemall ,
+and
+.RN zmemall .
+Many of the special purpose memory allocators built on
+top of other allocators have also been eliminated.
+For example, the allocator that was built on top of the buffer pool allocator
+.RN geteblk
+to allocate pathname buffers in
+.RN namei
+has been eliminated.
+Because the typical allocation is so fast,
+we have found that none of the special purpose pools are needed.
+Indeed, the allocation is about the same as the previous cost of
+allocating buffers from the network pool (\fImbuf\fP\^s).
+Consequently applications that used to allocate network
+buffers for their own uses have been switched over to using
+the general purpose allocator without increasing their running time.
+.PP
+Quantifying the performance of the allocator is difficult because
+it is hard to measure the amount of time spent allocating
+and freeing memory in the kernel.
+The usual approach is to compile a kernel for profiling
+and then compare the running time of the routines that
+implemented the old abstraction versus those that implement the new one.
+The old routines are difficult to quantify because
+individual routines were used for more than one purpose.
+For example, the
+.RN geteblk
+routine was used both to allocate one kilobyte memory blocks
+and for its intended purpose of providing buffers to the filesystem.
+Differentiating these uses is often difficult.
+To get a measure of the cost of memory allocation before
+putting in our new allocator,
+we summed up the running time of all the routines whose
+exclusive task was memory allocation.
+To this total we added the fraction
+of the running time of the multi-purpose routines that could
+clearly be identified as memory allocation usage.
+This number showed that approximately three percent of
+the time spent in the kernel could be accounted to memory allocation.
+.PP
+The new allocator is difficult to measure
+because the usual case of the memory allocator is implemented as a macro.
+Thus, its running time is a small fraction of the running time of the
+numerous routines in the kernel that use it.
+To get a bound on the cost,
+we changed the macro always to call the memory allocation routine.
+Running in this mode, the memory allocator accounted for six percent
+of the time spent in the kernel.
+Factoring out the cost of the statistics collection and the
+subroutine call overhead for the cases that could
+normally be handled by the macro,
+we estimate that the allocator would account for
+at most four percent of time in the kernel.
+These measurements show that the new allocator does not introduce
+significant new run-time costs.
+.PP
+The other major success has been in keeping the size information
+on a per-page basis.
+This technique allows the most frequently requested sizes to be
+allocated without waste.
+It also reduces the amount of bookkeeping information associated
+with the allocator to four kilobytes of information
+per megabyte of memory under management (with a one kilobyte page size).
+.H 1 "Future Work
+.PP
+Our next project is to convert many of the static
+kernel tables to be dynamically allocated.
+Static tables include the process table, the file table,
+and the mount table.
+Making these tables dynamic will have two benefits.
+First, it will reduce the amount of memory
+that must be statically allocated at boot time.
+Second, it will eliminate the arbitrary upper limit imposed
+by the current static sizing
+(although a limit will be retained to constrain runaway clients).
+Other researchers have already shown the memory savings
+achieved by this conversion [Rodriguez88].
+.PP
+Under the current implementation,
+memory is never moved from one size list to another.
+With the 4.2BSD memory allocator this causes problems,
+particularly for large allocations where a process may use
+a quarter megabyte piece of memory once,
+which is then never available for any other size request.
+In our hybrid scheme,
+memory can be shuffled between large requests so that large blocks
+of memory are never stranded as they are with the 4.2BSD allocator.
+However, pages allocated to small requests are allocated once
+to a particular size and never changed thereafter.
+If a burst of requests came in for a particular size,
+that size would acquire a large amount of memory
+that would then not be available for other future requests.
+.PP
+In practice, we do not find that the free lists become too large.
+However, we have been investigating ways to handle such problems
+if they occur in the future.
+Our current investigations involve a routine
+that can run as part of the idle loop that would sort the elements
+on each of the free lists into order of increasing address.
+Since any given page has only one size of elements allocated from it,
+the effect of the sorting would be to sort the list into distinct pages.
+When all the pieces of a page became free,
+the page itself could be released back to the free pool so that
+it could be allocated to another purpose.
+Although there is no guarantee that all the pieces of a page would ever
+be freed,
+most allocations are short-lived, lasting only for the duration of
+an open file descriptor, an open network connection, or a system call.
+As new allocations would be made from the page sorted to
+the front of the list,
+return of elements from pages at the back would eventually
+allow pages later in the list to be freed.
+.PP
+Two of the traditional UNIX
+memory allocators remain in the current system.
+The terminal subsystem uses \fIclist\fP\^s (character lists).
+That part of the system is expected to undergo major revision within
+the next year or so, and it will probably be changed to use
+\fImbuf\fP\^s as it is merged into the network system.
+The other major allocator that remains is
+.RN getblk ,
+the routine that manages the filesystem buffer pool memory
+and associated control information.
+Only the filesystem uses
+.RN getblk
+in the current system;
+it manages the constant-sized buffer pool.
+We plan to merge the filesystem buffer cache into the virtual memory system's
+page cache in the future.
+This change will allow the size of the buffer pool to be changed
+according to memory load,
+but will require a policy for balancing memory needs
+with filesystem cache performance.
+.H 1 "Acknowledgments
+.PP
+In the spirit of community support,
+we have made various versions of our allocator available to our test sites.
+They have been busily burning it in and giving
+us feedback on their experiences.
+We acknowledge their invaluable input.
+The feedback from the Usenix program committee on the initial draft of
+our paper suggested numerous important improvements.
+.H 1 "References
+.LP
+.IP Korn85 \w'Rodriguez88\0\0'u
+David Korn, Kiem-Phong Vo,
+``In Search of a Better Malloc''
+\fIProceedings of the Portland Usenix Conference\fP,
+pp 489-506, June 1985.
+.IP McKusick85
+M. McKusick, M. Karels, S. Leffler,
+``Performance Improvements and Functional Enhancements in 4.3BSD''
+\fIProceedings of the Portland Usenix Conference\fP,
+pp 519-531, June 1985.
+.IP Rodriguez88
+Robert Rodriguez, Matt Koehler, Larry Palmer, Ricky Palmer,
+``A Dynamic UNIX Operating System''
+\fIProceedings of the San Francisco Usenix Conference\fP,
+June 1988.
+.IP Thompson78
+Ken Thompson,
+``UNIX Implementation''
+\fIBell System Technical Journal\fP, volume 57, number 6,
+pp 1931-1946, 1978.
diff --git a/share/doc/papers/kernmalloc/spell.ok b/share/doc/papers/kernmalloc/spell.ok
new file mode 100644
index 0000000..10c3ab7
--- /dev/null
+++ b/share/doc/papers/kernmalloc/spell.ok
@@ -0,0 +1,57 @@
+BUCKETINDX
+CLBYTES
+CM
+Karels
+Kiem
+Koehler
+Korn
+Korn85
+MAXALLOCSAVE
+MAXALLOCSIZE
+MAXKMEM
+MINALLOCSIZE
+MINBUCKET
+Matt
+McKusick
+McKusick85
+Mem
+Phong
+Ricky
+Rodriguez88
+S.Leffler
+Thompson78
+ULTRIX
+Usenix
+VAX
+Vo
+arptbl
+caddr
+devbuf
+extern
+fragtbl
+freelist
+geteblk
+indx
+ioctlops
+kb
+kbp
+kmembase
+kmembuckets
+kmemsizes
+ks
+ksp
+mbuf
+mbufs
+namei
+pagecnt
+pathname
+pcb
+pp
+routetbl
+runtime
+splimp
+splx
+superblk
+temp
+wmemall
+zmemall
diff --git a/share/doc/papers/kernmalloc/usage.tbl b/share/doc/papers/kernmalloc/usage.tbl
new file mode 100644
index 0000000..c5ebdfe
--- /dev/null
+++ b/share/doc/papers/kernmalloc/usage.tbl
@@ -0,0 +1,75 @@
+.\" Copyright (c) 1988 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)usage.tbl 5.1 (Berkeley) 4/16/91
+.\"
+.TS
+box;
+c s s s
+c c c c
+n n n n.
+Memory statistics by bucket size
+=
+Size In Use Free Requests
+_
+128 329 39 3129219
+256 0 0 0
+512 4 0 16
+1024 17 5 648771
+2048 13 0 13
+2049\-4096 0 0 157
+4097\-8192 2 0 103
+8193\-16384 0 0 0
+16385\-32768 1 0 1
+.TE
+.DE
+.DS B
+.TS
+box;
+c s s s s
+c c c c c
+c n n n n.
+Memory statistics by type
+=
+Type In Use Mem Use High Use Requests
+_
+mbuf 6 1K 17K 3099066
+devbuf 13 53K 53K 13
+socket 37 5K 6K 1275
+pcb 55 7K 8K 1512
+routetbl 229 29K 29K 2424
+fragtbl 0 0K 1K 404
+zombie 3 1K 1K 24538
+namei 0 0K 5K 648754
+ioctlops 0 0K 1K 12
+superblk 24 34K 34K 24
+temp 0 0K 8K 258
+.TE
diff --git a/share/doc/papers/kerntune/0.t b/share/doc/papers/kerntune/0.t
new file mode 100644
index 0000000..90fa2bf
--- /dev/null
+++ b/share/doc/papers/kerntune/0.t
@@ -0,0 +1,129 @@
+.\" Copyright (c) 1984 M. K. McKusick
+.\" Copyright (c) 1984 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 1.2 (Berkeley) 11/8/90
+.\"
+.EQ
+delim $$
+.EN
+.if n .ND
+.TL
+Using gprof to Tune the 4.2BSD Kernel
+.AU
+Marshall Kirk McKusick
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.AB
+This paper describes how the \fIgprof\fP profiler
+accounts for the running time of called routines
+in the running time of the routines that call them.
+It then explains how to configure a profiling kernel on
+the 4.2 Berkeley Software Distribution of
+.UX
+for the VAX\(dd
+.FS
+\(dd VAX is a trademark of Digital Equipment Corporation.
+.FE
+and discusses tradeoffs in techniques for collecting
+profile data.
+\fIGprof\fP identifies problems
+that severely affects the overall performance of the kernel.
+Once a potential problem areas is identified
+benchmark programs are devised to highlight the bottleneck.
+These benchmarks verify that the problem exist and provide
+a metric against which to validate proposed solutions.
+Two caches are added to the kernel to alleviate the bottleneck
+and \fIgprof\fP is used to validates their effectiveness.
+.AE
+.LP
+.de PT
+.lt \\n(LLu
+.pc %
+.nr PN \\n%
+.tl '\\*(LH'\\*(CH'\\*(RH'
+.lt \\n(.lu
+..
+.af PN i
+.ds LH 4.2BSD Performance
+.ds RH Contents
+.bp 1
+.if t .ds CF May 21, 1984
+.if t .ds LF
+.if t .ds RF McKusick
+.ce
+.B "TABLE OF CONTENTS"
+.LP
+.sp 1
+.nf
+.B "1. Introduction"
+.LP
+.sp .5v
+.nf
+.B "2. The \fIgprof\fP Profiler"
+\0.1. Data Presentation"
+\0.1.1. The Flat Profile
+\0.1.2. The Call Graph Profile
+\0.2 Profiling the Kernel
+.LP
+.sp .5v
+.nf
+.B "3. Using \fIgprof\fP to Improve Performance
+\0.1. Using the Profiler
+\0.2. An Example of Tuning
+.LP
+.sp .5v
+.nf
+.B "4. Conclusions"
+.LP
+.sp .5v
+.nf
+.B Acknowledgements
+.LP
+.sp .5v
+.nf
+.B References
+.af PN 1
+.bp 1
+.de _d
+.if t .ta .6i 2.1i 2.6i
+.\" 2.94 went to 2.6, 3.64 to 3.30
+.if n .ta .84i 2.6i 3.30i
+..
+.de _f
+.if t .ta .5i 1.25i 2.5i
+.\" 3.5i went to 3.8i
+.if n .ta .7i 1.75i 3.8i
+..
diff --git a/share/doc/papers/kerntune/1.t b/share/doc/papers/kerntune/1.t
new file mode 100644
index 0000000..49b653f5
--- /dev/null
+++ b/share/doc/papers/kerntune/1.t
@@ -0,0 +1,49 @@
+.\" Copyright (c) 1984 M. K. McKusick
+.\" Copyright (c) 1984 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 1.2 (Berkeley) 11/8/90
+.\" $FreeBSD$
+.\"
+.ds RH Introduction
+.NH 1
+Introduction
+.PP
+The purpose of this paper is to describe the tools and techniques
+that are available for improving the performance of the kernel.
+The primary tool used to measure the kernel is the hierarchical
+profiler \fIgprof\fP.
+The profiler enables the user to measure the cost of
+the abstractions that the kernel provides to the user.
+Once the expensive abstractions are identified,
+optimizations are postulated to help improve their performance.
+These optimizations are each individually
+verified to insure that they are producing a measurable improvement.
diff --git a/share/doc/papers/kerntune/2.t b/share/doc/papers/kerntune/2.t
new file mode 100644
index 0000000..2857dc2
--- /dev/null
+++ b/share/doc/papers/kerntune/2.t
@@ -0,0 +1,234 @@
+.\" Copyright (c) 1984 M. K. McKusick
+.\" Copyright (c) 1984 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 1.3 (Berkeley) 11/8/90
+.\"
+.ds RH The \fIgprof\fP Profiler
+.NH 1
+The \fIgprof\fP Profiler
+.PP
+The purpose of the \fIgprof\fP profiling tool is to
+help the user evaluate alternative implementations
+of abstractions.
+The \fIgprof\fP design takes advantage of the fact that the kernel
+though large, is structured and hierarchical.
+We provide a profile in which the execution time
+for a set of routines that implement an
+abstraction is collected and charged
+to that abstraction.
+The profile can be used to compare and assess the costs of
+various implementations [Graham82] [Graham83].
+.NH 2
+Data presentation
+.PP
+The data is presented to the user in two different formats.
+The first presentation simply lists the routines
+without regard to the amount of time their descendants use.
+The second presentation incorporates the call graph of the
+kernel.
+.NH 3
+The Flat Profile
+.PP
+The flat profile consists of a list of all the routines
+that are called during execution of the kernel,
+with the count of the number of times they are called
+and the number of seconds of execution time for which they
+are themselves accountable.
+The routines are listed in decreasing order of execution time.
+A list of the routines that are never called during execution of
+the kernel is also available
+to verify that nothing important is omitted by
+this profiling run.
+The flat profile gives a quick overview of the routines that are used,
+and shows the routines that are themselves responsible
+for large fractions of the execution time.
+In practice,
+this profile usually shows that no single function
+is overwhelmingly responsible for
+the total time of the kernel.
+Notice that for this profile,
+the individual times sum to the total execution time.
+.NH 3
+The Call Graph Profile
+.PP
+Ideally, we would like to print the call graph of the kernel,
+but we are limited by the two-dimensional nature of our output
+devices.
+We cannot assume that a call graph is planar,
+and even if it is, that we can print a planar version of it.
+Instead, we choose to list each routine,
+together with information about
+the routines that are its direct parents and children.
+This listing presents a window into the call graph.
+Based on our experience,
+both parent information and child information
+is important,
+and should be available without searching
+through the output.
+Figure 1 shows a sample \fIgprof\fP entry.
+.KF
+.DS L
+.TS
+box center;
+c c c c c l l
+c c c c c l l
+c c c c c l l
+l n n n c l l.
+ called/total \ \ parents
+index %time self descendants called+self name index
+ called/total \ \ children
+_
+ 0.20 1.20 4/10 \ \ \s-1CALLER1\s+1 [7]
+ 0.30 1.80 6/10 \ \ \s-1CALLER2\s+1 [1]
+[2] 41.5 0.50 3.00 10+4 \s-1EXAMPLE\s+1 [2]
+ 1.50 1.00 20/40 \ \ \s-1SUB1\s+1 <cycle1> [4]
+ 0.00 0.50 1/5 \ \ \s-1SUB2\s+1 [9]
+ 0.00 0.00 0/5 \ \ \s-1SUB3\s+1 [11]
+.TE
+.ce
+Figure 1. Profile entry for \s-1EXAMPLE\s+1.
+.DE
+.KE
+.PP
+The major entries of the call graph profile are the entries from the
+flat profile, augmented by the time propagated to each
+routine from its descendants.
+This profile is sorted by the sum of the time for the routine
+itself plus the time inherited from its descendants.
+The profile shows which of the higher level routines
+spend large portions of the total execution time
+in the routines that they call.
+For each routine, we show the amount of time passed by each child
+to the routine, which includes time for the child itself
+and for the descendants of the child
+(and thus the descendants of the routine).
+We also show the percentage these times represent of the total time
+accounted to the child.
+Similarly, the parents of each routine are listed,
+along with time,
+and percentage of total routine time,
+propagated to each one.
+.PP
+Cycles are handled as single entities.
+The cycle as a whole is shown as though it were a single routine,
+except that members of the cycle are listed in place of the children.
+Although the number of calls of each member
+from within the cycle are shown,
+they do not affect time propagation.
+When a child is a member of a cycle,
+the time shown is the appropriate fraction of the time
+for the whole cycle.
+Self-recursive routines have their calls broken
+down into calls from the outside and self-recursive calls.
+Only the outside calls affect the propagation of time.
+.PP
+The example shown in Figure 2 is the fragment of a call graph
+corresponding to the entry in the call graph profile listing
+shown in Figure 1.
+.KF
+.DS L
+.so fig2.pic
+.ce
+Figure 2. Example call graph fragment.
+.DE
+.KE
+.PP
+The entry is for routine \s-1EXAMPLE\s+1, which has
+the Caller routines as its parents,
+and the Sub routines as its children.
+The reader should keep in mind that all information
+is given \fIwith respect to \s-1EXAMPLE\s+1\fP.
+The index in the first column shows that \s-1EXAMPLE\s+1
+is the second entry in the profile listing.
+The \s-1EXAMPLE\s+1 routine is called ten times, four times by \s-1CALLER1\s+1,
+and six times by \s-1CALLER2\s+1.
+Consequently 40% of \s-1EXAMPLE\s+1's time is propagated to \s-1CALLER1\s+1,
+and 60% of \s-1EXAMPLE\s+1's time is propagated to \s-1CALLER2\s+1.
+The self and descendant fields of the parents
+show the amount of self and descendant time \s-1EXAMPLE\s+1
+propagates to them (but not the time used by
+the parents directly).
+Note that \s-1EXAMPLE\s+1 calls itself recursively four times.
+The routine \s-1EXAMPLE\s+1 calls routine \s-1SUB1\s+1 twenty times, \s-1SUB2\s+1 once,
+and never calls \s-1SUB3\s+1.
+Since \s-1SUB2\s+1 is called a total of five times,
+20% of its self and descendant time is propagated to \s-1EXAMPLE\s+1's
+descendant time field.
+Because \s-1SUB1\s+1 is a member of \fIcycle 1\fR,
+the self and descendant times
+and call count fraction
+are those for the cycle as a whole.
+Since cycle 1 is called a total of forty times
+(not counting calls among members of the cycle),
+it propagates 50% of the cycle's self and descendant
+time to \s-1EXAMPLE\s+1's descendant time field.
+Finally each name is followed by an index that shows
+where on the listing to find the entry for that routine.
+.NH 2
+Profiling the Kernel
+.PP
+It is simple to build a 4.2BSD kernel that will automatically
+collect profiling information as it operates simply by specifying the
+.B \-p
+option to \fIconfig\fP\|(8) when configuring a kernel.
+The program counter sampling can be driven by the system clock,
+or by an alternate real time clock.
+The latter is highly recommended as use of the system clock results
+in statistical anomalies in accounting for
+the time spent in the kernel clock routine.
+.PP
+Once a profiling system has been booted statistic gathering is
+handled by \fIkgmon\fP\|(8).
+\fIKgmon\fP allows profiling to be started and stopped
+and the internal state of the profiling buffers to be dumped.
+\fIKgmon\fP can also be used to reset the state of the internal
+buffers to allow multiple experiments to be run without
+rebooting the machine.
+The profiling data can then be processed with \fIgprof\fP\|(1)
+to obtain information regarding the system's operation.
+.PP
+A profiled system is about 5-10% larger in its text space because of
+the calls to count the subroutine invocations.
+When the system executes,
+the profiling data is stored in a buffer that is 1.2
+times the size of the text space.
+All the information is summarized in memory,
+it is not necessary to have a trace file
+being continuously dumped to disk.
+The overhead for running a profiled system varies;
+under normal load we see anywhere from 5-25%
+of the system time spent in the profiling code.
+Thus the system is noticeably slower than an unprofiled system,
+yet is not so bad that it cannot be used in a production environment.
+This is important since it allows us to gather data
+in a real environment rather than trying to
+devise synthetic work loads.
diff --git a/share/doc/papers/kerntune/3.t b/share/doc/papers/kerntune/3.t
new file mode 100644
index 0000000..e03236b
--- /dev/null
+++ b/share/doc/papers/kerntune/3.t
@@ -0,0 +1,290 @@
+.\" Copyright (c) 1984 M. K. McKusick
+.\" Copyright (c) 1984 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)3.t 1.2 (Berkeley) 11/8/90
+.\"
+.ds RH Techniques for Improving Performance
+.NH 1
+Techniques for Improving Performance
+.PP
+This section gives several hints on general optimization techniques.
+It then proceeds with an example of how they can be
+applied to the 4.2BSD kernel to improve its performance.
+.NH 2
+Using the Profiler
+.PP
+The profiler is a useful tool for improving
+a set of routines that implement an abstraction.
+It can be helpful in identifying poorly coded routines,
+and in evaluating the new algorithms and code that replace them.
+Taking full advantage of the profiler
+requires a careful examination of the call graph profile,
+and a thorough knowledge of the abstractions underlying
+the kernel.
+.PP
+The easiest optimization that can be performed
+is a small change
+to a control construct or data structure.
+An obvious starting point
+is to expand a small frequently called routine inline.
+The drawback to inline expansion is that the data abstractions
+in the kernel may become less parameterized,
+hence less clearly defined.
+The profiling will also become less useful since the loss of
+routines will make its output more granular.
+.PP
+Further potential for optimization lies in routines that
+implement data abstractions whose total execution
+time is long.
+If the data abstraction function cannot easily be speeded up,
+it may be advantageous to cache its results,
+and eliminate the need to rerun
+it for identical inputs.
+These and other ideas for program improvement are discussed in
+[Bentley81].
+.PP
+This tool is best used in an iterative approach:
+profiling the kernel,
+eliminating one bottleneck,
+then finding some other part of the kernel
+that begins to dominate execution time.
+.PP
+A completely different use of the profiler is to analyze the control
+flow of an unfamiliar section of the kernel.
+By running an example that exercises the unfamiliar section of the kernel,
+and then using \fIgprof\fR, you can get a view of the
+control structure of the unfamiliar section.
+.NH 2
+An Example of Tuning
+.PP
+The first step is to come up with a method for generating
+profile data.
+We prefer to run a profiling system for about a one day
+period on one of our general timesharing machines.
+While this is not as reproducible as a synthetic workload,
+it certainly represents a realistic test.
+We have run one day profiles on several
+occasions over a three month period.
+Despite the long period of time that elapsed
+between the test runs the shape of the profiles,
+as measured by the number of times each system call
+entry point was called, were remarkably similar.
+.PP
+A second alternative is to write a small benchmark
+program to repeated exercise a suspected bottleneck.
+While these benchmarks are not useful as a long term profile
+they can give quick feedback on whether a hypothesized
+improvement is really having an effect.
+It is important to realize that the only real assurance
+that a change has a beneficial effect is through
+long term measurements of general timesharing.
+We have numerous examples where a benchmark program
+suggests vast improvements while the change
+in the long term system performance is negligible,
+and conversely examples in which the benchmark program run more slowly,
+but the long term system performance improves significantly.
+.PP
+An investigation of our long term profiling showed that
+the single most expensive function performed by the kernel
+is path name translation.
+We find that our general time sharing systems do about
+500,000 name translations per day.
+The cost of doing name translation in the original 4.2BSD
+is 24.2 milliseconds,
+representing 40% of the time processing system calls,
+which is 19% of the total cycles in the kernel,
+or 11% of all cycles executed on the machine.
+The times are shown in Figure 3.
+.KF
+.DS L
+.TS
+center box;
+l r r.
+part time % of kernel
+_
+self 14.3 ms/call 11.3%
+child 9.9 ms/call 7.9%
+_
+total 24.2 ms/call 19.2%
+.TE
+.ce
+Figure 3. Call times for \fInamei\fP.
+.DE
+.KE
+.PP
+The system measurements collected showed the
+pathname translation routine, \fInamei\fP,
+was clearly worth optimizing.
+An inspection of \fInamei\fP shows that
+it consists of two nested loops.
+The outer loop is traversed once per pathname component.
+The inner loop performs a linear search through a directory looking
+for a particular pathname component.
+.PP
+Our first idea was to observe that many programs
+step through a directory performing an operation on
+each entry in turn.
+This caused us to modify \fInamei\fP to cache
+the directory offset of the last pathname
+component looked up by a process.
+The cached offset is then used
+as the point at which a search in the same directory
+begins. Changing directories invalidates the cache, as
+does modifying the directory.
+For programs that step sequentially through a directory with
+$N$ files, search time decreases from $O ( N sup 2 )$
+to $O(N)$.
+.PP
+The cost of the cache is about 20 lines of code
+(about 0.2 kilobytes)
+and 16 bytes per process, with the cached data
+stored in a process's \fIuser\fP vector.
+.PP
+As a quick benchmark to verify the effectiveness of the
+cache we ran ``ls \-l''
+on a directory containing 600 files.
+Before the per-process cache this command
+used 22.3 seconds of system time.
+After adding the cache the program used the same amount
+of user time, but the system time dropped to 3.3 seconds.
+.PP
+This change prompted our rerunning a profiled system
+on a machine containing the new \fInamei\fP.
+The results showed that the time in \fInamei\fP
+dropped by only 2.6 ms/call and
+still accounted for 36% of the system call time,
+18% of the kernel, or about 10% of all the machine cycles.
+This amounted to a drop in system time from 57% to about 55%.
+The results are shown in Figure 4.
+.KF
+.DS L
+.TS
+center box;
+l r r.
+part time % of kernel
+_
+self 11.0 ms/call 9.2%
+child 10.6 ms/call 8.9%
+_
+total 21.6 ms/call 18.1%
+.TE
+.ce
+Figure 4. Call times for \fInamei\fP with per-process cache.
+.DE
+.KE
+.PP
+The small performance improvement
+was caused by a low cache hit ratio.
+Although the cache was 90% effective when hit,
+it was only usable on about 25% of the names being translated.
+An additional reason for the small improvement was that
+although the amount of time spent in \fInamei\fP itself
+decreased substantially,
+more time was spent in the routines that it called
+since each directory had to be accessed twice;
+once to search from the middle to the end,
+and once to search from the beginning to the middle.
+.PP
+Most missed names were caused by path name components
+other than the last.
+Thus Robert Elz introduced a system wide cache of most recent
+name translations.
+The cache is keyed on a name and the
+inode and device number of the directory that contains it.
+Associated with each entry is a pointer to the corresponding
+entry in the inode table.
+This has the effect of short circuiting the outer loop of \fInamei\fP.
+For each path name component,
+\fInamei\fP first looks in its cache of recent translations
+for the needed name.
+If it exists, the directory search can be completely eliminated.
+If the name is not recognized,
+then the per-process cache may still be useful in
+reducing the directory search time.
+The two cacheing schemes complement each other well.
+.PP
+The cost of the name cache is about 200 lines of code
+(about 1.2 kilobytes)
+and 44 bytes per cache entry.
+Depending on the size of the system,
+about 200 to 1000 entries will normally be configured,
+using 10-44 kilobytes of physical memory.
+The name cache is resident in memory at all times.
+.PP
+After adding the system wide name cache we reran ``ls \-l''
+on the same directory.
+The user time remained the same,
+however the system time rose slightly to 3.7 seconds.
+This was not surprising as \fInamei\fP
+now had to maintain the cache,
+but was never able to make any use of it.
+.PP
+Another profiled system was created and measurements
+were collected over a one day period. These measurements
+showed a 6 ms/call decrease in \fInamei\fP, with
+\fInamei\fP accounting for only 31% of the system call time,
+16% of the time in the kernel,
+or about 7% of all the machine cycles.
+System time dropped from 55% to about 49%.
+The results are shown in Figure 5.
+.KF
+.DS L
+.TS
+center box;
+l r r.
+part time % of kernel
+_
+self 9.5 ms/call 9.6%
+child 6.1 ms/call 6.1%
+_
+total 15.6 ms/call 15.7%
+.TE
+.ce
+Figure 5. Call times for \fInamei\fP with both caches.
+.DE
+.KE
+.PP
+Statistics on the performance of both caches show
+the large performance improvement is
+caused by the high hit ratio.
+On the profiled system a 60% hit rate was observed in
+the system wide cache. This, coupled with the 25%
+hit rate in the per-process offset cache yielded an
+effective cache hit rate of 85%.
+While the system wide cache reduces both the amount of time in
+the routines that \fInamei\fP calls as well as \fInamei\fP itself
+(since fewer directories need to be accessed or searched),
+it is interesting to note that the actual percentage of system
+time spent in \fInamei\fP itself increases even though the
+actual time per call decreases.
+This is because less total time is being spent in the kernel,
+hence a smaller absolute time becomes a larger total percentage.
diff --git a/share/doc/papers/kerntune/4.t b/share/doc/papers/kerntune/4.t
new file mode 100644
index 0000000..38bae43
--- /dev/null
+++ b/share/doc/papers/kerntune/4.t
@@ -0,0 +1,99 @@
+.\" Copyright (c) 1984 M. K. McKusick
+.\" Copyright (c) 1984 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)4.t 1.2 (Berkeley) 11/8/90
+.\"
+.ds RH Conclusions
+.NH 1
+Conclusions
+.PP
+We have created a profiler that aids in the evaluation
+of the kernel.
+For each routine in the kernel,
+the profile shows the extent to which that routine
+helps support various abstractions,
+and how that routine uses other abstractions.
+The profile assesses the cost of routines
+at all levels of the kernel decomposition.
+The profiler is easily used,
+and can be compiled into the kernel.
+It adds only five to thirty percent execution overhead to the kernel
+being profiled,
+produces no additional output while the kernel is running
+and allows the kernel to be measured in its real environment.
+Kernel profiles can be used to identify bottlenecks in performance.
+We have shown how to improve performance
+by caching recently calculated name translations.
+The combined caches added to the name translation process
+reduce the average cost of translating a pathname to an inode by 35%.
+These changes reduce the percentage of time spent running
+in the system by nearly 9%.
+.nr H2 1
+.ds RH Acknowledgements
+.NH
+\s+2Acknowledgements\s0
+.PP
+I would like to thank Robert Elz for sharing his ideas and
+his code for cacheing system wide names.
+Thanks also to all the users at Berkeley who provided all the
+input to generate the kernel profiles.
+This work was supported by
+the Defense Advance Research Projects Agency (DoD) under
+Arpa Order No. 4031 monitored by Naval Electronic System Command under
+Contract No. N00039-82-C-0235.
+.ds RH References
+.nr H2 1
+.sp 2
+.NH
+\s+2References\s-2
+.LP
+.IP [Bentley81] 20
+Bentley, J. L.,
+``Writing Efficient Code'',
+Department of Computer Science,
+Carnegie-Mellon University,
+Pittsburgh, Pennsylvania,
+CMU-CS-81-116, 1981.
+.IP [Graham82] 20
+Graham, S., Kessler, P., McKusick, M.,
+``gprof: A Call Graph Execution Profiler'',
+Proceedings of the SIGPLAN '82 Symposium on Compiler Construction,
+Volume 17, Number 6, June 1982. pp 120-126
+.IP [Graham83] 20
+Graham, S., Kessler, P., McKusick, M.,
+``An Execution Profiler for Modular Programs''
+Software - Practice and Experience,
+Volume 13, 1983. pp 671-685
+.IP [Ritchie74] 20
+Ritchie, D. M. and Thompson, K.,
+``The UNIX Time-Sharing System'',
+CACM 17, 7. July 1974. pp 365-375
diff --git a/share/doc/papers/kerntune/Makefile b/share/doc/papers/kerntune/Makefile
new file mode 100644
index 0000000..33416d6
--- /dev/null
+++ b/share/doc/papers/kerntune/Makefile
@@ -0,0 +1,14 @@
+# From: @(#)Makefile 1.5 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= kerntune
+SRCS= 0.t 1.t 2.t 3.t 4.t
+EXTRA= fig2.pic
+MACROS= -ms
+USE_EQN=
+USE_PIC=
+USE_SOELIM=
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/kerntune/fig2.pic b/share/doc/papers/kerntune/fig2.pic
new file mode 100644
index 0000000..6731ca9
--- /dev/null
+++ b/share/doc/papers/kerntune/fig2.pic
@@ -0,0 +1,57 @@
+.\" Copyright (c) 1987 M. K. McKusick
+.\" Copyright (c) 1987 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)fig2.pic 1.2 (Berkeley) 11/8/90
+.\"
+.PS
+ellipse ht .3i wid .75i "\s-1CALLER1\s+1"
+ellipse ht .3i wid .75i "\s-1CALLER2\s+1" at 1st ellipse + (2i,0i)
+ellipse ht .3i wid .8i "\s-1EXAMPLE\s+1" at 1st ellipse + (1i,-.5i)
+ellipse ht .3i wid .5i "\s-1SUB1\s+1" at 1st ellipse - (0i,1i)
+ellipse ht .3i wid .5i "\s-1SUB2\s+1" at 3rd ellipse - (0i,.5i)
+ellipse ht .3i wid .5i "\s-1SUB3\s+1" at 2nd ellipse - (0i,1i)
+line <- from 1st ellipse up .5i left .5i chop .1875i
+line <- from 1st ellipse up .5i right .5i chop .1875i
+line <- from 2nd ellipse up .5i left .5i chop .1875i
+line <- from 2nd ellipse up .5i right .5i chop .1875i
+arrow from 1st ellipse to 3rd ellipse chop
+arrow from 2nd ellipse to 3rd ellipse chop
+arrow from 3rd ellipse to 4th ellipse chop
+arrow from 3rd ellipse to 5th ellipse chop .15i chop .15i
+arrow from 3rd ellipse to 6th ellipse chop
+arrow from 4th ellipse down .5i left .5i chop .1875i
+arrow from 4th ellipse down .5i right .5i chop .1875i
+arrow from 5th ellipse down .5i left .5i chop .1875i
+arrow from 5th ellipse down .5i right .5i chop .1875i
+arrow from 6th ellipse down .5i left .5i chop .1875i
+arrow from 6th ellipse down .5i right .5i chop .1875i
+.PE
diff --git a/share/doc/papers/malloc/Makefile b/share/doc/papers/malloc/Makefile
new file mode 100644
index 0000000..00e1e3d
--- /dev/null
+++ b/share/doc/papers/malloc/Makefile
@@ -0,0 +1,10 @@
+# From: @(#)Makefile 6.3 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= malloc
+SRCS= abs.ms intro.ms kernel.ms malloc.ms problems.ms alternatives.ms \
+ performance.ms implementation.ms conclusion.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/malloc/abs.ms b/share/doc/papers/malloc/abs.ms
new file mode 100644
index 0000000..f58d719
--- /dev/null
+++ b/share/doc/papers/malloc/abs.ms
@@ -0,0 +1,35 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.if n .ND
+.TL
+Malloc(3) in modern Virtual Memory environments.
+.sp
+Revised
+Fri Apr 5 12:50:07 1996
+.AU
+Poul-Henning Kamp
+.AI
+<phk@FreeBSD.org>
+Den Andensidste Viking
+Valbygaardsvej 8
+DK-4200 Slagelse
+Denmark
+.AB
+Malloc/free is one of the oldest parts of the C language environment
+and obviously the world has changed a bit since it was first made.
+The fact that most UNIX kernels have changed from swap/segment to
+virtual memory/page based memory management has not been sufficiently
+reflected in the implementations of the malloc/free API.
+.PP
+A new implementation was designed, written, tested and bench-marked
+with an eye on the workings and performance characteristics of modern
+Virtual Memory systems.
+.AE
diff --git a/share/doc/papers/malloc/alternatives.ms b/share/doc/papers/malloc/alternatives.ms
new file mode 100644
index 0000000..5a46f95
--- /dev/null
+++ b/share/doc/papers/malloc/alternatives.ms
@@ -0,0 +1,45 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Alternative implementations
+.NH
+Alternative implementations
+.PP
+These problems were actually the inspiration for the first alternative
+malloc implementations.
+Since their main aim was debugging, they would often use techniques
+like allocating a guard zone before and after the chunk,
+and possibly filling these guard zones
+with some pattern, so accesses outside the allocated chunk could be detected
+with some decent probability.
+Another widely used technique is to use tables to keep track of which
+chunks are actually in which state and so on.
+.PP
+This class of debugging has been taken to its practical extreme by
+the product "Purify" which does the entire memory-coloring exercise
+and not only keeps track of what is in use and what isn't, but also
+detects if the first reference is a read (which would return undefined
+values) and other such violations.
+.PP
+Later actual complete implementations of malloc arrived, but many of
+these still based their workings on the basic schema mentioned previously,
+disregarding that in the meantime virtual memory and paging have
+become the standard environment.
+.PP
+The most widely used "alternative" malloc is undoubtedly ``gnumalloc''
+which has received wide acclaim and certainly runs faster than
+most stock mallocs. It does, however, tend to fare badly in
+cases where paging is the norm rather than the exception.
+.PP
+The particular malloc that prompted this work basically didn't bother
+reusing storage until the kernel forced it to do so by refusing
+further allocations with sbrk(2).
+That may make sense if you work alone on your own personal mainframe,
+but as a general policy it is less than optimal.
diff --git a/share/doc/papers/malloc/conclusion.ms b/share/doc/papers/malloc/conclusion.ms
new file mode 100644
index 0000000..da7d7e9
--- /dev/null
+++ b/share/doc/papers/malloc/conclusion.ms
@@ -0,0 +1,48 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Conclusion and experience.
+.NH
+Conclusion and experience.
+.PP
+In general the performance differences between gnumalloc and this
+malloc are not that big.
+The major difference comes when primary storage is seriously
+over-committed, in which case gnumalloc
+wastes time paging in pages it's not going to use.
+In such cases as much as a factor of five in wall-clock time has
+been seen in difference.
+Apart from that gnumalloc and this implementation are pretty
+much head-on performance-wise.
+.PP
+Several legacy programs in the BSD 4.4 Lite distribution had
+code that depended on the memory returned from malloc
+being zeroed. In a couple of cases, free(3) was called more than
+once for the same allocation, and a few cases even called free(3)
+with pointers to objects in the data section or on the stack.
+.PP
+A couple of users have reported that using this malloc on other
+platforms yielded "pretty impressive results", but no hard benchmarks
+have been made.
+.ds RH Acknowledgements & references.
+.NH
+Acknowledgements & references.
+.PP
+The first implementation of this algorithm was actually a file system,
+done in assembler using 5-hole ``Baudot'' paper tape for a drum storage
+device attached to a 20 bit germanium transistor computer with 2000 words
+of memory, but that was many years ago.
+.PP
+Peter Wemm <peter@FreeBSD.org> came up with the idea to store the
+page-directory in mmap(2)'ed memory instead of in the heap.
+This has proven to be a good move.
+.PP
+Lars Fredriksen <fredriks@mcs.com> found and identified a
+fence-post bug in the code.
diff --git a/share/doc/papers/malloc/implementation.ms b/share/doc/papers/malloc/implementation.ms
new file mode 100644
index 0000000..2507e4c
--- /dev/null
+++ b/share/doc/papers/malloc/implementation.ms
@@ -0,0 +1,225 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Implementation
+.NH
+Implementation
+.PP
+A new malloc(3) implementation was written to meet the goals,
+and to the extent possible to address the shortcomings listed previously.
+.PP
+The source is 1218 lines of C code, and can be found in FreeBSD 2.2
+(and probably later versions as well) as src/lib/libc/stdlib/malloc.c.
+.PP
+The main data structure is the
+.I page-directory
+which contains a
+.B void*
+for each page we have control over.
+The value can be one of:
+.IP
+.B MALLOC_NOT_MINE
+Another part of the code may call brk(2) to get a piece of the cake.
+Consequently, we cannot rely on the memory we get from the kernel
+being one consecutive piece of memory, and therefore we need a way to
+mark such pages as "untouchable".
+.IP
+.B MALLOC_FREE
+This is a free page.
+.IP
+.B MALLOC_FIRST
+This is the first page in a (multi-)page allocation.
+.IP
+.B MALLOC_FOLLOW
+This is a subsequent page in a multi-page allocation.
+.IP
+.B
+struct pginfo*
+.R
+A pointer to a structure describing a partitioned page.
+.PP
+In addition, there exists a linked list of small data structures that
+describe the free space as runs of free pages.
+.PP
+Notice that these structures are not part of the free pages themselves,
+but rather allocated with malloc so that the free pages themselves
+are never referenced while they are free.
+.PP
+When a request for storage comes in, it will be treated as a ``page''
+allocation if it is bigger than half a page.
+The free list will be searched and the first run of free pages that
+can satisfy the request is used. The first page gets set to
+.B MALLOC_FIRST
+status. If more than that one page is needed, the rest of them get
+.B MALLOC_FOLLOW
+status in the page-directory.
+.PP
+If there were no pages on the free list, brk(2) will be called, and
+the pages will get added to the page-directory with status
+.B MALLOC_FREE
+and the search restarts.
+.PP
+Freeing a number of pages is done by changing their state in the
+page directory to MALLOC_FREE, and then traversing the free-pages list to
+find the right place for this run of pages, possibly collapsing
+with the two neighboring runs into one run and, if possible,
+releasing some memory back to the kernel by calling brk(2).
+.PP
+If the request is less than or equal to half of a page, its size will be
+rounded up to the nearest power of two before being processed
+and if the request is less than some minimum size, it is rounded up to
+that size.
+.PP
+These sub-page allocations are served from pages which are split up
+into some number of equal size chunks.
+For each of these pages a
+.B
+struct pginfo
+.R
+describes the size of the chunks on this page, how many there are,
+how many are free and so on.
+The description consist of a bitmap of used chunks, and various counters
+and numbers used to keep track of the stuff in the page.
+.PP
+For each size of sub-page allocation, the pginfo structures for the
+pages that have free chunks in them form a list.
+The heads of these lists are stored in predetermined slots at
+the beginning of the page directory to make access fast.
+.PP
+To allocate a chunk of some size, the head of the list for the
+corresponding size is examined, and a free chunk found. The number
+of free chunks on that page is decreased by one and, if zero, the
+pginfo structure is unlinked from the list.
+.PP
+To free a chunk, the page is derived from the pointer, the page table
+for that page contains a pointer to the pginfo structure, where the
+free bit is set for the chunk, the number of free chunks increased by
+one, and if equal to one, the pginfo structure is linked into the
+proper place on the list for this size of chunks.
+If the count increases to match the number of chunks on the page, the
+pginfo structure is unlinked from the list and free(3)'ed and the
+actual page itself is free(3)'ed too.
+.PP
+To be 100% correct performance-wise these lists should be ordered
+according to the recent number of accesses to that page. This
+information is not available and it would essentially mean a reordering
+of the list on every memory reference to keep it up-to-date.
+Instead they are ordered according to the address of the pages.
+Interestingly enough, in practice this comes out to almost the same
+thing performance-wise.
+.PP
+It's not that surprising after all, it's the difference between
+following the crowd or actively directing where it can go, in both
+ways you can end up in the middle of it all.
+.PP
+The side effect of this compromise is that it also uses less storage,
+and the list never has to be reordered, all the ordering happens when
+pages are added or deleted.
+.PP
+It is an interesting twist to the implementation that the
+.B
+struct pginfo
+.R
+is allocated with malloc.
+That is, "as with malloc" to be painfully correct.
+The code knows the special case where the first (couple) of allocations on
+the page is actually the pginfo structure and deals with it accordingly.
+This avoids some silly "chicken and egg" issues.
+.ds RH Bells and whistles.
+.NH
+Bells and whistles.
+.PP
+brk(2) is actually not a very fast system call when you ask for storage.
+This is mainly because of the need by the kernel to zero the pages before
+handing them over, so therefore this implementation does not release
+heap pages until there is a large chunk to release back to the kernel.
+Chances are pretty good that we will need it again pretty soon anyway.
+Since these pages are not accessed at all, they will soon be paged out
+and don't affect anything but swap-space usage.
+.PP
+The page directory is actually kept in a mmap(2)'ed piece of
+anonymous memory. This avoids some rather silly cases that
+would otherwise have to be handled when the page directory
+has to be extended.
+.PP
+One particularly nice feature is that all pointers passed to free(3)
+and realloc(3) can be checked conclusively for validity:
+First the pointer is masked to find the page. The page directory
+is then examined, it must contain either MALLOC_FIRST, in which
+case the pointer must point exactly at the page, or it can contain
+a struct pginfo*, in which case the pointer must point to one of
+the chunks described by that structure.
+Warnings will be printed on
+.B stderr
+and nothing will be done with
+the pointer if it is found to be invalid.
+.PP
+An environment variable
+.B MALLOC_OPTIONS
+allows the user some control over the behavior of malloc.
+Some of the more interesting options are:
+.IP
+.B Abort
+If malloc fails to allocate storage, core-dump the process with
+a message rather than expect it handle this correctly.
+It's amazing how few programs actually handle this condition correctly,
+and consequently the havoc they can create is the more creative or
+destructive.
+.IP
+.B Dump
+Writes malloc statistics to a file called ``malloc.out'' prior
+to process termination.
+.IP
+.B Hint
+Pass a hint to the kernel about pages we no longer need through the
+madvise(2) system call. This can help performance on machines that
+page heavily by eliminating unnecessary page-ins and page-outs of
+unused data.
+.IP
+.B Realloc
+Always do a free and malloc when realloc(3) is called.
+For programs doing garbage collection using realloc(3), this makes the
+heap collapse faster since malloc will reallocate from the
+lowest available address.
+The default
+is to leave things alone if the size of the allocation is still in
+the same size-class.
+.IP
+.B Junk
+will explicitly fill the allocated area with a particular value
+to try to detect if programs rely on it being zero.
+.IP
+.B Zero
+will explicitly zero out the allocated chunk of memory, while any
+space after the allocation in the chunk will be filled with the
+junk value to try to catch out of the chunk references.
+.ds RH The road not taken.
+.NH
+The road not yet taken.
+.PP
+A couple of avenues were explored that could be interesting in some
+set of circumstances.
+.PP
+Using mmap(2) instead of brk(2) was actually slower, since brk(2)
+knows a lot of the things that mmap has to find out first.
+.PP
+In general there is little room for further improvement of the
+time-overhead of the malloc, further improvements will have to
+be in the area of improving paging behavior.
+.PP
+It is still under consideration to add a feature such that
+if realloc is called with two zero arguments, the internal
+allocations will be reallocated to perform a garbage collect.
+This could be used in certain types of programs to collapse
+the memory use, but so far it doesn't seem to be worth the effort.
+.PP
+Malloc/Free can be a significant point of contention in multi-threaded
+programs. Low-grain locking of the data-structures inside the
+implementation should be implemented to avoid excessive spin-waiting.
diff --git a/share/doc/papers/malloc/intro.ms b/share/doc/papers/malloc/intro.ms
new file mode 100644
index 0000000..0ee87c9
--- /dev/null
+++ b/share/doc/papers/malloc/intro.ms
@@ -0,0 +1,74 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Introduction
+.NH
+Introduction
+.PP
+Most programs need to allocate storage dynamically in addition
+to whatever static storage the compiler reserved at compile-time.
+To C programmers this fact is rather obvious, but for many years
+this was not an accepted and recognized fact, and many languages
+still used today don't support this notion adequately.
+.PP
+The classic UNIX kernel provides two very simple and powerful
+mechanisms for obtaining dynamic storage, the execution stack
+and the heap.
+The stack is usually put at the far upper end of the address-space,
+from where it grows down as far as needed, though this may depend on
+the CPU design.
+The heap starts at the end of the
+.B bss
+segment and grows upwards as needed.
+.PP
+There isn't really a kernel-interface to the stack as such.
+The kernel will allocate some amount of memory for it,
+not even telling the process the exact size.
+If the process needs more space than that, it will simply try to access
+it, hoping that the kernel will detect that an access has been
+attempted outside the allocated memory, and try to extend it.
+If the kernel fails to extend the stack, this could be because of lack
+of resources or permissions or because it may just be impossible
+to do in the first place, the process will usually be shot down by the
+kernel.
+.PP
+In the C language, there exists a little used interface to the stack,
+.B alloca(3) ,
+which will explicitly allocate space on the stack.
+This is not an interface to the kernel, but merely an adjustment
+done to the stack-pointer such that space will be available and
+unharmed by any subroutine calls yet to be made while the context
+of the current subroutine is intact.
+.PP
+Due to the nature of normal use of the stack, there is no corresponding
+"free" operator, but instead the space is returned when the current
+function returns to its caller and the stack frame is dismantled.
+This is the cause of much grief, and probably the single most important
+reason that alloca(3) is not, and should not be, used widely.
+.PP
+The heap on the other hand has an explicit kernel-interface in the
+system call
+.B brk(2) .
+The argument to brk(2) is a pointer to where the process wants the
+heap to end.
+There is also an interface called
+.B sbrk(2)
+taking an increment to the current end of the heap, but this is merely a
+.B libc
+front for brk(2).
+.PP
+In addition to these two memory resources, modern virtual memory kernels
+provide the mmap(2)/munmap(2) interface which allows almost complete
+control over any bit of virtual memory in the process address space.
+.PP
+Because of the generality of the mmap(2) interface and the way the
+data structures representing the regions are laid out, sbrk(2) is actually
+faster in use than the equivalent mmap(2) call, simply because
+mmap(2) has to search for information that is implicit in the sbrk(2) call.
diff --git a/share/doc/papers/malloc/kernel.ms b/share/doc/papers/malloc/kernel.ms
new file mode 100644
index 0000000..952e95c
--- /dev/null
+++ b/share/doc/papers/malloc/kernel.ms
@@ -0,0 +1,56 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH The kernel and memory
+.NH
+The kernel and memory
+.PP
+Brk(2) isn't a particularly convenient interface,
+it was probably made more to fit the memory model of the
+hardware being used, than to fill the needs of the programmers.
+.PP
+Before paged and/or virtual memory systems became
+common, the most popular memory management facility used for
+UNIX was segments.
+This was also very often the only vehicle for imposing protection on
+various parts of memory.
+Depending on the hardware, segments can be anything, and consequently
+how the kernels exploited them varied a lot from UNIX to UNIX and from
+machine to machine.
+.PP
+Typically a process would have one segment for the text section, one
+for the data and bss section combined and one for the stack.
+On some systems the text shared a segment with the data and bss, and was
+consequently just as writable as them.
+.PP
+In this setup all the brk(2) system call has to do is to find the
+right amount of free storage, possibly moving things around in physical
+memory, maybe even swapping out a segment or two to make space,
+and change the upper limit on the data segment according to the address given.
+.PP
+In a more modern page based virtual memory implementation this is still
+pretty much the situation, except that the granularity is now pages:
+The kernel finds the right number of free pages, possibly paging some
+pages out to free them up, and then plugs them into the page-table of
+the process.
+.PP
+As such the difference is very small, the real difference is that in
+the old world of swapping, either the entire process was in primary
+storage or it wouldn't be selected to be run. In a modern VM kernel,
+a process might only have a subset of its pages in primary memory,
+the rest will be paged in, if and when the process tries to access them.
+.PP
+Only very few programs deal with the brk(2) interface directly.
+The few that do usually have their own memory management facilities.
+LISP or FORTH interpreters are good examples.
+Most other programs use the
+.B malloc(3)
+interface instead, and leave it to the malloc implementation to
+use brk(2) to get storage allocated from the kernel.
diff --git a/share/doc/papers/malloc/malloc.ms b/share/doc/papers/malloc/malloc.ms
new file mode 100644
index 0000000..4f3cf7d
--- /dev/null
+++ b/share/doc/papers/malloc/malloc.ms
@@ -0,0 +1,72 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Malloc and free
+.NH
+Malloc and free
+.PP
+The job of malloc(3) is to turn the rather simple
+brk(2) facility into a service programs can
+actually use without getting hurt.
+.PP
+The archetypical malloc(3) implementation keeps track of the memory between
+the end of the bss section, as defined by the
+.B _end
+symbol, and the current brk(2) point using a linked list of chunks of memory.
+Each item on the list has a status as either free or used, a pointer
+to the next entry and in most cases to the previous as well, to speed
+up inserts and deletes in the list.
+.PP
+When a malloc(3) request comes in, the list is traversed from the
+front and if a free chunk big enough to hold the request is found,
+it is returned, if the free chunk is bigger than the size requested,
+a new free chunk is made from the excess and put back on the list.
+.PP
+When a chunk is
+.B free(3) 'ed,
+the chunk is found in the list, its status
+is changed to free and if one or both of the surrounding chunks
+are free, they are collapsed to one.
+.PP
+A third kind of request,
+.B realloc(3) ,
+will resize
+a chunk, trying to avoid copying the contents if possible.
+It is seldom used, and has only had a significant impact on performance
+in a few special situations.
+The typical pattern of use is to malloc(3) a chunk of the maximum size
+needed, read in the data and adjust the size of the chunk to match the
+size of the data read using realloc(3).
+.PP
+For reasons of efficiency, the original implementation of malloc(3)
+put the small structure used to contain the next and previous pointers
+plus the state of the chunk right before the chunk itself.
+.PP
+As a matter of fact, the canonical malloc(3) implementation can be
+studied in the ``Old testament'', chapter 8 verse 7 [Kernighan & Ritchie]
+.PP
+Various optimisations can be applied to the above basic algorithm:
+.IP
+If in freeing a chunk, we end up with the last chunk on the list being
+free, we can return that to the kernel by calling brk(2) with the first
+address of that chunk and then make the previous chunk the last on the
+chain by terminating its ``next'' pointer.
+.IP
+A best-fit algorithm can be used instead of first-fit at an expense
+of memory, because statistically fewer chances to brk(2) backwards will
+present themselves.
+.IP
+Splitting the list in two, one for used and one for free chunks, to
+speed the searching.
+.IP
+Putting free chunks on one of several free lists, depending on their size,
+to speed allocation.
+.IP
+\&...
diff --git a/share/doc/papers/malloc/performance.ms b/share/doc/papers/malloc/performance.ms
new file mode 100644
index 0000000..773f92a
--- /dev/null
+++ b/share/doc/papers/malloc/performance.ms
@@ -0,0 +1,113 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Performance
+.NH
+Performance
+.PP
+Performance for a malloc(3) implementation comes as two variables:
+.IP
+A: How much time does it use for searching and manipulating data structures.
+We will refer to this as ``overhead time''.
+.IP
+B: How well does it manage the storage.
+This rather vague metric we call ``quality of allocation''.
+.PP
+The overhead time is easy to measure, just do a lot of malloc/free calls
+of various kinds and combination, and compare the results.
+.PP
+The quality of allocation is not quite as simple as that.
+One measure of quality is the size of the process, that should obviously
+be minimized.
+Another measure is the execution time of the process.
+This is not an obvious indicator of quality, but people will generally
+agree that it should be minimized as well, and if malloc(3) can do
+anything to do so, it should.
+Explanation why it is still a good metric follows:
+.PP
+In a traditional segment/swap kernel, the desirable behavior of a process
+is to keep the brk(2) as low as possible, thus minimizing the size of the
+data/bss/heap segment, which in turn translates to a smaller process and
+a smaller probability of the process being swapped out, qed: faster
+execution time as an average.
+.PP
+In a paging environment this is not a bad choice for a default, but
+a couple of details needs to be looked at much more carefully.
+.PP
+First of all, the size of a process becomes a more vague concept since
+only the pages that are actually used need to be in primary storage
+for execution to progress, and they only need to be there when used.
+That implies that many more processes can fit in the same amount of
+primary storage, since most processes have a high degree of locality
+of reference and thus only need some fraction of their pages to actually
+do their job.
+.PP
+From this it follows that the interesting size of the process, is some
+subset of the total amount of virtual memory occupied by the process.
+This number isn't a constant, it varies depending on the whereabouts
+of the process, and it may indeed fluctuate wildly over the lifetime
+of the process.
+.PP
+One of the names for this vague concept is ``current working set''.
+It has been defined many different ways over the years, mostly to
+satisfy and support claims in marketing or benchmark contexts.
+.PP
+For now we can simply say that it is the number of pages the process
+needs in order to run at a sufficiently low paging rate in a congested
+primary storage.
+(If primary storage isn't congested, this is not really important
+of course, but most systems would be better off using the pages for
+disk-cache or similar functions, so from that perspective it will
+always be congested.)
+If the number of pages is too small, the process will wait for its
+pages to be read from secondary storage much of the time, if it's too
+big, the space could be used better for something else.
+.PP
+From the view of any single process, this number of pages is
+"all of my pages", but from the point of view of the OS it should
+be tuned to maximise the total throughput of all the processes on
+the machine at the time.
+This is usually done using various kinds of least-recently-used
+replacement algorithms to select page candidates for replacement.
+.PP
+With this knowledge, can we decide what the performance goal is for
+a modern malloc(3) ?
+Well, it's almost as simple as it used to be:
+.B
+Minimize the number of pages accessed.
+.R
+.PP
+This really is the core of it all.
+If the number of accessed pages is smaller, then locality of reference is
+higher, and all kinds of caches (which is essentially what the
+primary storage is in a VM system) work better.
+.PP
+It's interesting to notice that the classical malloc fails on this one
+because the information about free chunks is kept with the free
+chunks themselves. In some of the benchmarks this came out as all the
+pages being paged in every time a malloc call was made, because malloc
+had to traverse the free list to find a suitable chunk for the allocation.
+If memory is not in use, then you shouldn't access it.
+.PP
+The secondary goal is more evident:
+.B
+Try to work in pages.
+.R
+.PP
+That makes it easier for the kernel, and wastes less virtual memory.
+Most modern implementations do this when they interact with the
+kernel, but few try to avoid objects spanning pages.
+.PP
+If an object's size
+is less than or equal to a page, there is no reason for it to span two pages.
+Having objects span pages means that two pages must be
+paged in, if that object is accessed.
+.PP
+With this analysis in the luggage, we can start coding.
diff --git a/share/doc/papers/malloc/problems.ms b/share/doc/papers/malloc/problems.ms
new file mode 100644
index 0000000..980f2e9
--- /dev/null
+++ b/share/doc/papers/malloc/problems.ms
@@ -0,0 +1,54 @@
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.org> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH The problems
+.NH
+The problems
+.PP
+Even though malloc(3) is a lot simpler to use
+than the raw brk(2)/sbrk(2) interface,
+or maybe exactly because
+of that,
+a lot of problems arise from its use.
+.IP
+Writing to memory outside the allocated chunk.
+The most likely result being that the data structure used to hold
+the links and flags about this chunk or the next one gets thrashed.
+.IP
+Freeing a pointer to memory not allocated by malloc.
+This is often a pointer that points to an object on the stack or in the
+data-section, in newer implementations of C it may even be in the text-
+section where it is likely to be readonly.
+Some malloc implementations detect this, some don't.
+.IP
+Freeing a modified pointer. This is a very common mistake, freeing
+not the pointer malloc(3) returned, but rather some offset from it.
+Some mallocs will handle this correctly if the offset is positive.
+.IP
+Freeing the same pointer more than once.
+.IP
+Accessing memory in a chunk after it has been free(3)'ed.
+.PP
+The handling of these problems have traditionally been weak.
+A core-dump was the most common form for "handling", but in rare
+cases one could experience the famous "malloc: corrupt arena."
+message before the core-dump.
+Even worse though, very often the program will just continue,
+possibly giving wrong results.
+.PP
+An entirely different form of problem is that
+the memory returned by malloc(3) can contain any value.
+Unfortunately most kernels, correctly, zero out the storage they
+provide with brk(2), and thus the storage malloc returns will be zeroed
+in many cases as well, so programmers are not particular apt to notice
+that their code depends on malloc'ed storage being zeroed.
+.PP
+With problems this big and error handling this weak, it is not
+surprising that problems are hard and time consuming to find and fix.
diff --git a/share/doc/papers/newvm/0.t b/share/doc/papers/newvm/0.t
new file mode 100644
index 0000000..e23a95d
--- /dev/null
+++ b/share/doc/papers/newvm/0.t
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1986 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 5.1 (Berkeley) 4/16/91
+.\"
+.rm CM
+.TL
+A New Virtual Memory Implementation for Berkeley
+.UX
+.AU
+Marshall Kirk McKusick
+Michael J. Karels
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.AB
+With the cost per byte of memory approaching that of the cost per byte
+for disks, and with file systems increasingly distant from the host
+machines, a new approach to the implementation of virtual memory is
+necessary. Rather than preallocating swap space which limits the
+maximum virtual memory that can be supported to the size of the swap
+area, the system should support virtual memory up to the sum of the
+sizes of physical memory plus swap space. For systems with a local swap
+disk, but remote file systems, it may be useful to use some of the memory
+to keep track of the contents of the swap space to avoid multiple fetches
+of the same data from the file system.
+.PP
+The new implementation should also add new functionality. Processes
+should be allowed to have large sparse address spaces, to map files
+into their address spaces, to map device memory into their address
+spaces, and to share memory with other processes. The shared address
+space may either be obtained by mapping a file into (possibly
+different) parts of their address space, or by arranging to share
+``anonymous memory'' (that is, memory that is zero fill on demand, and
+whose contents are lost when the last process unmaps the memory) with
+another process as is done in System V.
+.PP
+One use of shared memory is to provide a high-speed
+Inter-Process Communication (IPC) mechanism between two or more
+cooperating processes. To insure the integrity of data structures
+in a shared region, processes must be able to use semaphores to
+coordinate their access to these shared structures. In System V,
+these semaphores are provided as a set of system calls. Unfortunately,
+the use of system calls reduces the throughput of the shared memory
+IPC to that of existing IPC mechanisms. We are proposing a scheme
+that places the semaphores in the shared memory segment, so that
+machines that have a test-and-set instruction can handle the usual
+uncontested lock and unlock without doing a system call. Only in
+the unusual case of trying to lock an already-locked lock or in
+releasing a wanted lock will a system call be required. The
+interface will allow a user-level implementation of the System V
+semaphore interface on most machines with a much lower runtime cost.
+.AE
+.LP
+.bp
diff --git a/share/doc/papers/newvm/1.t b/share/doc/papers/newvm/1.t
new file mode 100644
index 0000000..02ac8be
--- /dev/null
+++ b/share/doc/papers/newvm/1.t
@@ -0,0 +1,378 @@
+.\" Copyright (c) 1986 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 5.1 (Berkeley) 4/16/91
+.\" $FreeBSD$
+.\"
+.NH
+Motivations for a New Virtual Memory System
+.PP
+The virtual memory system distributed with Berkeley UNIX has served
+its design goals admirably well over the ten years of its existence.
+However the relentless advance of technology has begun to render it
+obsolete.
+This section of the paper describes the current design,
+points out the current technological trends,
+and attempts to define the new design considerations that should
+be taken into account in a new virtual memory design.
+.NH 2
+Implementation of 4.3BSD virtual memory
+.PP
+All Berkeley Software Distributions through 4.3BSD
+have used the same virtual memory design.
+All processes, whether active or sleeping, have some amount of
+virtual address space associated with them.
+This virtual address space
+is the combination of the amount of address space with which they initially
+started plus any stack or heap expansions that they have made.
+All requests for address space are allocated from available swap space
+at the time that they are first made;
+if there is insufficient swap space left to honor the allocation,
+the system call requesting the address space fails synchronously.
+Thus, the limit to available virtual memory is established by the
+amount of swap space allocated to the system.
+.PP
+Memory pages are used in a sort of shell game to contain the
+contents of recently accessed locations.
+As a process first references a location
+a new page is allocated and filled either with initialized data or
+zeros (for new stack and break pages).
+As the supply of free pages begins to run out, dirty pages are
+pushed to the previously allocated swap space so that they can be reused
+to contain newly faulted pages.
+If a previously accessed page that has been pushed to swap is once
+again used, a free page is reallocated and filled from the swap area
+[Babaoglu79], [Someren84].
+.NH 2
+Design assumptions for 4.3BSD virtual memory
+.PP
+The design criteria for the current virtual memory implementation
+were made in 1979.
+At that time the cost of memory was about a thousand times greater per
+byte than magnetic disks.
+Most machines were used as centralized time sharing machines.
+These machines had far more disk storage than they had memory
+and given the cost tradeoff between memory and disk storage,
+wanted to make maximal use of the memory even at the cost of
+wasting some of the disk space or generating extra disk I/O.
+.PP
+The primary motivation for virtual memory was to allow the
+system to run individual programs whose address space exceeded
+the memory capacity of the machine.
+Thus the virtual memory capability allowed programs to be run that
+could not have been run on a swap based system.
+Equally important in the large central timesharing environment
+was the ability to allow the sum of the memory requirements of
+all active processes to exceed the amount of physical memory on
+the machine.
+The expected mode of operation for which the system was tuned
+was to have the sum of active virtual memory be one and a half
+to two times the physical memory on the machine.
+.PP
+At the time that the virtual memory system was designed,
+most machines ran with little or no networking.
+All the file systems were contained on disks that were
+directly connected to the machine.
+Similarly all the disk space devoted to swap space was also
+directly connected.
+Thus the speed and latency with which file systems could be accessed
+were roughly equivalent to the speed and latency with which swap
+space could be accessed.
+Given the high cost of memory there was little incentive to have
+the kernel keep track of the contents of the swap area once a process
+exited since it could almost as easily and quickly be reread from the
+file system.
+.NH 2
+New influences
+.PP
+In the ten years since the current virtual memory system was designed,
+many technological advances have occurred.
+One effect of the technological revolution is that the
+micro-processor has become powerful enough to allow users to have their
+own personal workstations.
+Thus the computing environment is moving away from a purely centralized
+time sharing model to an environment in which users have a
+computer on their desk.
+This workstation is linked through a network to a centralized
+pool of machines that provide filing, computing, and spooling services.
+The workstations tend to have a large quantity of memory,
+but little or no disk space.
+Because users do not want to be bothered with backing up their disks,
+and because of the difficulty of having a centralized administration
+backing up hundreds of small disks, these local disks are typically
+used only for temporary storage and as swap space.
+Long term storage is managed by the central file server.
+.PP
+Another major technical advance has been in all levels of storage capacity.
+In the last ten years we have experienced a factor of four decrease in the
+cost per byte of disk storage.
+In this same period of time the cost per byte of memory has dropped
+by a factor of a hundred!
+Thus the cost per byte of memory compared to the cost per byte of disk is
+approaching a difference of only about a factor of ten.
+The effect of this change is that the way in which a machine is used
+is beginning to change dramatically.
+As the amount of physical memory on machines increases and the number of
+users per machine decreases, the expected
+mode of operation is changing from that of supporting more active virtual
+memory than physical memory to that of having a surplus of memory that can
+be used for other purposes.
+.PP
+Because many machines will have more physical memory than they do swap
+space (with diskless workstations as an extreme example!),
+it is no longer reasonable to limit the maximum virtual memory
+to the amount of swap space as is done in the current design.
+Consequently, the new design will allow the maximum virtual memory
+to be the sum of physical memory plus swap space.
+For machines with no swap space, the maximum virtual memory will
+be governed by the amount of physical memory.
+.PP
+Another effect of the current technology is that the latency and overhead
+associated with accessing the file system is considerably higher
+since the access must be over the network
+rather than to a locally-attached disk.
+One use of the surplus memory would be to
+maintain a cache of recently used files;
+repeated uses of these files would require at most a verification from
+the file server that the data was up to date.
+Under the current design, file caching is done by the buffer pool,
+while the free memory is maintained in a separate pool.
+The new design should have only a single memory pool so that any
+free memory can be used to cache recently accessed files.
+.PP
+Another portion of the memory will be used to keep track of the contents
+of the blocks on any locally-attached swap space analogously
+to the way that memory pages are handled.
+Thus inactive swap blocks can also be used to cache less-recently-used
+file data.
+Since the swap disk is locally attached, it can be much more quickly
+accessed than a remotely located file system.
+This design allows the user to simply allocate their entire local disk
+to swap space, thus allowing the system to decide what files should
+be cached to maximize its usefulness.
+This design has two major benefits.
+It relieves the user of deciding what files
+should be kept in a small local file system.
+It also insures that all modified files are migrated back to the
+file server in a timely fashion, thus eliminating the need to dump
+the local disk or push the files manually.
+.NH
+User Interface
+.PP
+This section outlines our new virtual memory interface as it is
+currently envisioned.
+The details of the system call interface are contained in Appendix A.
+.NH 2
+Regions
+.PP
+The virtual memory interface is designed to support both large,
+sparse address spaces as well as small, densely-used address spaces.
+In this context, ``small'' is an address space roughly the
+size of the physical memory on the machine,
+while ``large'' may extend up to the maximum addressability of the machine.
+A process may divide its address space up into a number of regions.
+Initially a process begins with four regions;
+a shared read-only fill-on-demand region with its text,
+a private fill-on-demand region for its initialized data,
+a private zero-fill-on-demand region for its uninitialized data and heap,
+and a private zero-fill-on-demand region for its stack.
+In addition to these regions, a process may allocate new ones.
+The regions may not overlap and the system may impose an alignment
+constraint, but the size of the region should not be limited
+beyond the constraints of the size of the virtual address space.
+.PP
+Each new region may be mapped either as private or shared.
+When it is privately mapped, changes to the contents of the region
+are not reflected to any other process that map the same region.
+Regions may be mapped read-only or read-write.
+As an example, a shared library would be implemented as two regions;
+a shared read-only region for the text, and a private read-write
+region for the global variables associated with the library.
+.PP
+A region may be allocated with one of several allocation strategies.
+It may map some memory hardware on the machine such as a frame buffer.
+Since the hardware is responsible for storing the data,
+such regions must be exclusive use if they are privately mapped.
+.PP
+A region can map all or part of a file.
+As the pages are first accessed, the region is filled in with the
+appropriate part of the file.
+If the region is mapped read-write and shared, changes to the
+contents of the region are reflected back into the contents of the file.
+If the region is read-write but private,
+changes to the region are copied to a private page that is not
+visible to other processes mapping the file,
+and these modified pages are not reflected back to the file.
+.PP
+The final type of region is ``anonymous memory''.
+Uninitialed data uses such a region, privately mapped;
+it is zero-fill-on-demand and its contents are abandoned
+when the last reference is dropped.
+Unlike a region that is mapped from a file,
+the contents of an anonymous region will never be read from or
+written to a disk unless memory is short and part of the region
+must be paged to a swap area.
+If one of these regions is mapped shared,
+then all processes see the changes in the region.
+This difference has important performance considerations;
+the overhead of reading, flushing, and possibly allocating a file
+is much higher than simply zeroing memory.
+.PP
+If several processes wish to share a region,
+then they must have some way of rendezvousing.
+For a mapped file this is easy;
+the name of the file is used as the rendezvous point.
+However, processes may not need the semantics of mapped files
+nor be willing to pay the overhead associated with them.
+For anonymous memory they must use some other rendezvous point.
+Our current interface allows processes to associate a
+descriptor with a region, which it may then pass to other
+processes that wish to attach to the region.
+Such a descriptor may be bound into the UNIX file system
+name space so that other processes can find it just as
+they would with a mapped file.
+.NH 2
+Shared memory as high speed interprocess communication
+.PP
+The primary use envisioned for shared memory is to
+provide a high speed interprocess communication (IPC) mechanism
+between cooperating processes.
+Existing IPC mechanisms (\fIi.e.\fP pipes, sockets, or streams)
+require a system call to hand off a set
+of data destined for another process, and another system call
+by the recipient process to receive the data.
+Even if the data can be transferred by remapping the data pages
+to avoid a memory to memory copy, the overhead of doing the system
+calls limits the throughput of all but the largest transfers.
+Shared memory, by contrast, allows processes to share data at any
+level of granularity without system intervention.
+.PP
+However, to maintain all but the simplest of data structures,
+the processes must serialize their modifications to shared
+data structures if they are to avoid corrupting them.
+This serialization is typically done with semaphores.
+Unfortunately, most implementations of semaphores are
+done with system calls.
+Thus processes are once again limited by the need to do two
+system calls per transaction, one to lock the semaphore, the
+second to release it.
+The net effect is that the shared memory model provides little if
+any improvement in interprocess bandwidth.
+.PP
+To achieve a significant improvement in interprocess bandwidth
+requires a large decrease in the number of system calls needed to
+achieve the interaction.
+In profiling applications that use
+serialization locks such as the UNIX kernel,
+one typically finds that most locks are not contested.
+Thus if one can find a way to avoid doing a system call in the case
+in which a lock is not contested,
+one would expect to be able to dramatically reduce the number
+of system calls needed to achieve serialization.
+.PP
+In our design, cooperating processes manage their semaphores
+in their own address space.
+In the typical case, a process executes an atomic test-and-set instruction
+to acquire a lock, finds it free, and thus is able to get it.
+Only in the (rare) case where the lock is already set does the process
+need to do a system call to wait for the lock to clear.
+When a process is finished with a lock,
+it can clear the lock itself.
+Only if the ``WANT'' flag for the lock has been set is
+it necessary for the process to do a system call to cause the other
+process(es) to be awakened.
+.PP
+Another issue that must be considered is portability.
+Some computers require access to special hardware to implement
+atomic interprocessor test-and-set.
+For such machines the setting and clearing of locks would
+all have to be done with system calls;
+applications could still use the same interface without change,
+though they would tend to run slowly.
+.PP
+The other issue of compatibility is with System V's semaphore
+implementation.
+Since the System V interface has been in existence for several years,
+and applications have been built that depend on this interface,
+it is important that this interface also be available.
+Although the interface is based on system calls for both setting and
+clearing locks,
+the same interface can be obtained using our interface without
+system calls in most cases.
+.PP
+This implementation can be achieved as follows.
+System V allows entire sets of semaphores to be set concurrently.
+If any of the locks are unavailable, the process is put to sleep
+until they all become available.
+Under our paradigm, a single additional semaphore is defined
+that serializes access to the set of semaphores being simulated.
+Once obtained in the usual way, the set of semaphores can be
+inspected to see if the desired ones are available.
+If they are available, they are set, the guardian semaphore
+is released and the process proceeds.
+If one or more of the requested set is not available,
+the guardian semaphore is released and the process selects an
+unavailable semaphores for which to wait.
+On being reawakened, the whole selection process must be repeated.
+.PP
+In all the above examples, there appears to be a race condition.
+Between the time that the process finds that a semaphore is locked,
+and the time that it manages to call the system to sleep on the
+semaphore another process may unlock the semaphore and issue a wakeup call.
+Luckily the race can be avoided.
+The insight that is critical is that the process and the kernel agree
+on the physical byte of memory that is being used for the semaphore.
+The system call to put a process to sleep takes a pointer
+to the desired semaphore as its argument so that once inside
+the kernel, the kernel can repeat the test-and-set.
+If the lock has cleared
+(and possibly the wakeup issued) between the time that the process
+did the test-and-set and eventually got into the sleep request system call,
+then the kernel immediately resumes the process rather than putting
+it to sleep.
+Thus the only problem to solve is how the kernel interlocks between testing
+a semaphore and going to sleep;
+this problem has already been solved on existing systems.
+.NH
+References
+.sp
+.IP [Babaoglu79] 20
+Babaoglu, O., and Joy, W.,
+``Data Structures Added in the Berkeley Virtual Memory Extensions
+to the UNIX Operating System''
+Computer Systems Research Group, Dept of EECS, University of California,
+Berkeley, CA 94720, USA, November 1979.
+.IP [Someren84] 20
+Someren, J. van,
+``Paging in Berkeley UNIX'',
+Laboratorium voor schakeltechniek en techneik v.d.
+informatieverwerkende machines,
+Codenummer 051560-44(1984)01, February 1984.
diff --git a/share/doc/papers/newvm/Makefile b/share/doc/papers/newvm/Makefile
new file mode 100644
index 0000000..6b1a9e3
--- /dev/null
+++ b/share/doc/papers/newvm/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 1.4 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= newvm
+SRCS= 0.t 1.t a.t
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/newvm/a.t b/share/doc/papers/newvm/a.t
new file mode 100644
index 0000000..bb20df1
--- /dev/null
+++ b/share/doc/papers/newvm/a.t
@@ -0,0 +1,240 @@
+.\" Copyright (c) 1986 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)a.t 5.1 (Berkeley) 4/16/91
+.\" $FreeBSD$
+.\"
+.sp 2
+.ne 2i
+.NH
+Appendix A \- Virtual Memory Interface
+.NH 2
+Mapping pages
+.PP
+The system supports sharing of data between processes
+by allowing pages to be mapped into memory. These mapped
+pages may be \fIshared\fP with other processes or \fIprivate\fP
+to the process.
+Protection and sharing options are defined in \fI<sys/mman.h>\fP as:
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* protections are chosen from these bits, or-ed together */
+#define PROT_READ 0x04 /* pages can be read */
+#define PROT_WRITE 0x02 /* pages can be written */
+#define PROT_EXEC 0x01 /* pages can be executed */
+.DE
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* flags contain mapping type, sharing type and options */
+/* mapping type; choose one */
+#define MAP_FILE 0x0001 /* mapped from a file or device */
+#define MAP_ANON 0x0002 /* allocated from memory, swap space */
+#define MAP_TYPE 0x000f /* mask for type field */
+.DE
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* sharing types; choose one */
+#define MAP_SHARED 0x0010 /* share changes */
+#define MAP_PRIVATE 0x0000 /* changes are private */
+.DE
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* other flags */
+#define MAP_FIXED 0x0020 /* map addr must be exactly as requested */
+#define MAP_INHERIT 0x0040 /* region is retained after exec */
+#define MAP_HASSEMAPHORE 0x0080 /* region may contain semaphores */
+.DE
+The cpu-dependent size of a page is returned by the
+\fIgetpagesize\fP system call:
+.DS
+pagesize = getpagesize();
+result int pagesize;
+.DE
+.LP
+The call:
+.DS
+maddr = mmap(addr, len, prot, flags, fd, pos);
+result caddr_t maddr; caddr_t addr; int *len, prot, flags, fd; off_t pos;
+.DE
+causes the pages starting at \fIaddr\fP and continuing
+for at most \fIlen\fP bytes to be mapped from the object represented by
+descriptor \fIfd\fP, starting at byte offset \fIpos\fP.
+The starting address of the region is returned;
+for the convenience of the system,
+it may differ from that supplied
+unless the MAP_FIXED flag is given,
+in which case the exact address will be used or the call will fail.
+The actual amount mapped is returned in \fIlen\fP.
+The \fIaddr\fP, \fIlen\fP, and \fIpos\fP parameters
+must all be multiples of the pagesize.
+A successful \fImmap\fP will delete any previous mapping
+in the allocated address range.
+The parameter \fIprot\fP specifies the accessibility
+of the mapped pages.
+The parameter \fIflags\fP specifies
+the type of object to be mapped,
+mapping options, and
+whether modifications made to
+this mapped copy of the page
+are to be kept \fIprivate\fP, or are to be \fIshared\fP with
+other references.
+Possible types include MAP_FILE,
+mapping a regular file or character-special device memory,
+and MAP_ANON, which maps memory not associated with any specific file.
+The file descriptor used for creating MAP_ANON regions is used only
+for naming, and may be given as \-1 if no name
+is associated with the region.\(dg
+.FS
+\(dg The current design does not allow a process
+to specify the location of swap space.
+In the future we may define an additional mapping type, MAP_SWAP,
+in which the file descriptor argument specifies a file
+or device to which swapping should be done.
+.FE
+The MAP_INHERIT flag allows a region to be inherited after an \fIexec\fP.
+The MAP_HASSEMAPHORE flag allows special handling for
+regions that may contain semaphores.
+.PP
+A facility is provided to synchronize a mapped region with the file
+it maps; the call
+.DS
+msync(addr, len);
+caddr_t addr; int len;
+.DE
+writes any modified pages back to the filesystem and updates
+the file modification time.
+If \fIlen\fP is 0, all modified pages within the region containing \fIaddr\fP
+will be flushed;
+if \fIlen\fP is non-zero, only the pages containing \fIaddr\fP and \fIlen\fP
+succeeding locations will be examined.
+Any required synchronization of memory caches
+will also take place at this time.
+Filesystem operations on a file that is mapped for shared modifications
+are unpredictable except after an \fImsync\fP.
+.PP
+A mapping can be removed by the call
+.DS
+munmap(addr, len);
+caddr_t addr; int len;
+.DE
+This call deletes the mappings for the specified address range,
+and causes further references to addresses within the range
+to generate invalid memory references.
+.NH 2
+Page protection control
+.PP
+A process can control the protection of pages using the call
+.DS
+mprotect(addr, len, prot);
+caddr_t addr; int len, prot;
+.DE
+This call changes the specified pages to have protection \fIprot\fP\|.
+Not all implementations will guarantee protection on a page basis;
+the granularity of protection changes may be as large as an entire region.
+.NH 2
+Giving and getting advice
+.PP
+A process that has knowledge of its memory behavior may
+use the \fImadvise\fP call:
+.DS
+madvise(addr, len, behav);
+caddr_t addr; int len, behav;
+.DE
+\fIBehav\fP describes expected behavior, as given
+in \fI<sys/mman.h>\fP:
+.DS
+.ta \w'#define\ \ 'u +\w'MADV_SEQUENTIAL\ \ 'u +\w'00\ \ \ \ 'u
+#define MADV_NORMAL 0 /* no further special treatment */
+#define MADV_RANDOM 1 /* expect random page references */
+#define MADV_SEQUENTIAL 2 /* expect sequential references */
+#define MADV_WILLNEED 3 /* will need these pages */
+#define MADV_DONTNEED 4 /* don't need these pages */
+#define MADV_SPACEAVAIL 5 /* insure that resources are reserved */
+.DE
+Finally, a process may obtain information about whether pages are
+core resident by using the call
+.DS
+mincore(addr, len, vec)
+caddr_t addr; int len; result char *vec;
+.DE
+Here the current core residency of the pages is returned
+in the character array \fIvec\fP, with a value of 1 meaning
+that the page is in-core.
+.NH 2
+Synchronization primitives
+.PP
+Primitives are provided for synchronization using semaphores in shared memory.
+Semaphores must lie within a MAP_SHARED region with at least modes
+PROT_READ and PROT_WRITE.
+The MAP_HASSEMAPHORE flag must have been specified when the region was created.
+To acquire a lock a process calls:
+.DS
+value = mset(sem, wait)
+result int value; semaphore *sem; int wait;
+.DE
+\fIMset\fP indivisibly tests and sets the semaphore \fIsem\fP.
+If the previous value is zero, the process has acquired the lock
+and \fImset\fP returns true immediately.
+Otherwise, if the \fIwait\fP flag is zero,
+failure is returned.
+If \fIwait\fP is true and the previous value is non-zero,
+\fImset\fP relinquishes the processor until notified that it should retry.
+.LP
+To release a lock a process calls:
+.DS
+mclear(sem)
+semaphore *sem;
+.DE
+\fIMclear\fP indivisibly tests and clears the semaphore \fIsem\fP.
+If the ``WANT'' flag is zero in the previous value,
+\fImclear\fP returns immediately.
+If the ``WANT'' flag is non-zero in the previous value,
+\fImclear\fP arranges for waiting processes to retry before returning.
+.PP
+Two routines provide services analogous to the kernel
+\fIsleep\fP and \fIwakeup\fP functions interpreted in the domain of
+shared memory.
+A process may relinquish the processor by calling \fImsleep\fP
+with a set semaphore:
+.DS
+msleep(sem)
+semaphore *sem;
+.DE
+If the semaphore is still set when it is checked by the kernel,
+the process will be put in a sleeping state
+until some other process issues an \fImwakeup\fP for the same semaphore
+within the region using the call:
+.DS
+mwakeup(sem)
+semaphore *sem;
+.DE
+An \fImwakeup\fP may awaken all sleepers on the semaphore,
+or may awaken only the next sleeper on a queue.
diff --git a/share/doc/papers/newvm/spell.ok b/share/doc/papers/newvm/spell.ok
new file mode 100644
index 0000000..543dc7e
--- /dev/null
+++ b/share/doc/papers/newvm/spell.ok
@@ -0,0 +1,56 @@
+ANON
+Babaoglu
+Babaoglu79
+Behav
+CM
+Codenummer
+DONTNEED
+Dept
+EECS
+Filesystem
+HASSEMAPHORE
+IPC
+Karels
+Laboratorium
+MADV
+McKusick
+Mclear
+Mset
+NOEXTEND
+PROT
+SPACEAVAIL
+Someren
+Someren84
+WILLNEED
+addr
+behav
+caching
+caddr
+es
+fd
+filesystem
+getpagesize
+informatieverwerkende
+len
+maddr
+madvise
+mclear
+mincore
+mman.h
+mmap
+mprotect
+mset
+msleep
+msync
+munmap
+mwakeup
+pagesize
+pos
+prot
+runtime
+schakeltechniek
+sem
+techneik
+v.d
+vec
+voor
diff --git a/share/doc/papers/relengr/0.t b/share/doc/papers/relengr/0.t
new file mode 100644
index 0000000..569be69
--- /dev/null
+++ b/share/doc/papers/relengr/0.t
@@ -0,0 +1,92 @@
+.\" Copyright (c) 1989 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 5.1 (Berkeley) 4/17/91
+.\" $FreeBSD$
+.\"
+.rm CM
+.nr PO 1.25i
+.ds CH "
+.ds CF "%
+.nr Fn 0 1
+.ds b3 4.3\s-1BSD\s+1
+.de KI
+.ds Lb "Fig. \\n+(Fn
+.KF
+.ce 1
+Figure \\n(Fn - \\$1.
+..
+.de SM
+\\s-1\\$1\\s+1\\$2
+..
+.de NM
+\&\fI\\$1\fP\\$2
+..
+.de RN
+\&\fI\\$1\fP\^(\^)\\$2
+..
+.de PN
+\&\fB\\$1\fP\\$2
+..
+.TL
+The Release Engineering of 4.3\s-1BSD\s0
+.AU
+Marshall Kirk McKusick
+.AU
+Michael J. Karels
+.AU
+Keith Bostic
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.AB
+This paper describes an approach used by a small group of people
+to develop and integrate a large software system.
+It details the development and release engineering strategy
+used during the preparation of the \*(b3 version of the UNIX\(dg
+.FS
+\(dgUNIX is a registered trademark of AT&T in the US and other countries.
+.FE
+operating system.
+Each release cycle is divided into an initial development phase
+followed by a release engineering phase.
+The release engineering of the distribution is done in three steps.
+The first step has an informal control policy for tracking modifications;
+it results in an alpha distribution.
+The second step has more rigid change mechanisms in place;
+it results in a beta release.
+During the final step changes are tracked very closely;
+the result is the final distribution.
+.AE
+.LP
diff --git a/share/doc/papers/relengr/1.t b/share/doc/papers/relengr/1.t
new file mode 100644
index 0000000..6fbe287
--- /dev/null
+++ b/share/doc/papers/relengr/1.t
@@ -0,0 +1,69 @@
+.\" Copyright (c) 1989 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 5.1 (Berkeley) 4/17/91
+.\"
+.NH
+Introduction
+.PP
+The Computer Systems Research Group (\c
+.SM CSRG )
+has always been a small group of software developers.
+This resource limitation requires careful software-engineering management
+as well as careful coordination of both
+.SM CSRG
+personnel and the members of the general community who
+contribute to the development of the system.
+.PP
+Releases from Berkeley alternate between those that introduce
+major new facilities and those that provide bug fixes and efficiency
+improvements.
+This alternation allows timely releases, while providing for refinement,
+tuning, and correction of the new facilities.
+The timely followup of ``cleanup'' releases reflects the importance
+.SM CSRG
+places on providing a reliable and robust system on which its
+user community can depend.
+.PP
+The development of the Berkeley Software Distribution (\c
+.SM BSD )
+illustrates an \fIadvantage\fP of having a few
+principal developers:
+the developers all understand the entire system thoroughly enough
+to be able to coordinate their own work with
+that of other people to produce a coherent final system.
+Companies with large development organizations find
+this result difficult to duplicate.
+This paper describes the process by which
+the development effort for \*(b3 was managed.
+.[
+design and implementation
+.]
diff --git a/share/doc/papers/relengr/2.t b/share/doc/papers/relengr/2.t
new file mode 100644
index 0000000..0c3ce8c
--- /dev/null
+++ b/share/doc/papers/relengr/2.t
@@ -0,0 +1,146 @@
+.\" Copyright (c) 1989 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 5.1 (Berkeley) 4/17/91
+.\"
+.NH
+System Development
+.PP
+The first phase of each Berkeley system is its development.
+.SM CSRG
+maintains a continuously evolving list of projects that are candidates
+for integration into the system.
+Some of these are prompted by emerging ideas from the research world,
+such as the availability of a new technology, while other additions
+are suggested by the commercial world, such as the introduction of
+new standards like
+.SM POSIX ,
+and still other projects are emergency responses to situations like
+the Internet Worm.
+.PP
+These projects are ordered based on the perceived benefit of the
+project as opposed to its difficulty;
+the most important are selected for inclusion in each new release.
+Often there is a prototype available from a group outside
+.SM CSRG .
+Because of the limited staff at
+.SM CSRG ,
+this prototype is obtained to use as a starting base
+for integration into the
+.SM BSD
+system.
+Only if no prototype is available is the project begun in-house.
+In either case, the design of the facility is forced to conform to the
+.SM CSRG
+style.
+.PP
+Unlike other development groups, the staff of
+.SM CSRG
+specializes by projects rather than by particular parts
+of the system;
+a staff person will be responsible for all aspects of a project.
+This responsibility starts at the associated kernel device drivers;
+it proceeds up through the rest of the kernel,
+through the C library and system utility programs,
+ending at the user application layer.
+This staff person is also responsible for related documentation,
+including manual pages.
+Many projects proceed in parallel,
+interacting with other projects as their paths cross.
+.PP
+All source code, documentation, and auxiliary files are kept
+under a source code control system.
+During development,
+this control system is critical for notifying people
+when they are colliding with other ongoing projects.
+Even more important, however,
+is the audit trail maintained by the control system that
+is critical to the release engineering phase of the project
+described in the next section.
+.PP
+Much of the development of
+.SM BSD
+is done by personnel that are located at other institutions.
+Many of these people not only have interim copies of the release
+running on their own machines,
+but also have user accounts on the main development
+machine at Berkeley.
+Such users are commonly found logged in at Berkeley over the
+Internet, or sometimes via telephone dialup, from places as far away
+as Massachusetts or Maryland, as well as from closer places, such as
+Stanford.
+For the \*(b3 release,
+certain users had permission to modify the master copy of the
+system source directly.
+People given access to the master sources
+are carefully screened beforehand,
+but are not closely supervised.
+Their work is checked at the end of the beta-test period by
+.SM CSRG
+personnel who back out inappropriate changes.
+Several facilities, including the
+Fortran and C compilers,
+as well as important system programs, for example,
+.PN telnet
+and
+.PN ftp ,
+include significant contributions from people who did not work
+directly for
+.SM CSRG .
+One important exception to this approach is that changes to the kernel
+are made only by
+.SM CSRG
+personnel, although the changes are often suggested by the larger community.
+.PP
+The development phase continues until
+.SM CSRG
+decides that it is appropriate to make a release.
+The decision to halt development and transition to release mode
+is driven by several factors.
+The most important is that enough projects have been completed
+to make the system significantly superior to the previously released
+version of the system.
+For example,
+\*(b3 was released primarily because of the need for
+the improved networking capabilities and the markedly
+improved system performance.
+Of secondary importance is the issue of timing.
+If the releases are too infrequent, then
+.SM CSRG
+will be inundated with requests for interim releases.
+Conversely,
+if systems are released too frequently,
+the integration cost for many vendors will be too high,
+causing them to ignore the releases.
+Finally,
+the process of release engineering is long and tedious.
+Frequent releases slow the rate of development and
+cause undue tedium to the staff.
diff --git a/share/doc/papers/relengr/3.t b/share/doc/papers/relengr/3.t
new file mode 100644
index 0000000..8d89ded
--- /dev/null
+++ b/share/doc/papers/relengr/3.t
@@ -0,0 +1,390 @@
+.\" Copyright (c) 1989 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)3.t 5.1 (Berkeley) 4/17/91
+.\"
+.NH
+System Release
+.PP
+Once the decision has been made to halt development
+and begin release engineering,
+all currently unfinished projects are evaluated.
+This evaluation involves computing the time required to complete
+the project as opposed to how important the project is to the
+upcoming release.
+Projects that are not selected for completion are
+removed from the distribution branch of the source code control system
+and saved on branch deltas so they can be retrieved,
+completed, and merged into a future release;
+the remaining unfinished projects are brought to orderly completion.
+.PP
+Developments from
+.SM CSRG
+are released in three steps: alpha, beta, and final.
+Alpha and beta releases are not true distributions\(emthey
+are test systems.
+Alpha releases are normally available to only a few sites,
+usually those working closely with
+.SM CSRG .
+More sites are given beta releases,
+as the system is closer to completion,
+and needs wider testing to find more obscure problems.
+For example, \*(b3 alpha was distributed to about fifteen
+sites, while \*(b3 beta ran at more than a hundred.
+.NH 2
+Alpha Distribution Development
+.PP
+The first step in creating an alpha distribution is to evaluate the
+existing state of the system and to decide what software should be
+included in the release.
+This decision process includes not only deciding what software should
+be added, but also what obsolete software ought to be retired from the
+distribution.
+The new software includes the successful projects that have been
+completed at
+.SM CSRG
+and elsewhere, as well as some portion of the vast quantity of
+contributed software that has been offered during the development
+period.
+.PP
+Once an initial list has been created,
+a prototype filesystem corresponding to the distribution
+is constructed, typically named
+.PN /nbsd .
+This prototype will eventually turn into the master source tree for the
+final distribution.
+During the period that the alpha distribution is being created,
+.PN /nbsd
+is mounted read-write, and is highly fluid.
+Programs are created and deleted,
+old versions of programs are completely replaced,
+and the correspondence between the sources and binaries
+is only loosely tracked.
+People outside
+.SM CSRG
+who are helping with the distribution are free to
+change their parts of the distribution at will.
+.PP
+During this period the newly forming distribution is
+checked for interoperability.
+For example,
+in \*(b3 the output of context differences from
+.PN diff
+was changed to merge overlapping sections.
+Unfortunately, this change broke the
+.PN patch
+program which could no longer interpret the output of
+.PN diff .
+Since the change to
+.PN diff
+and the
+.PN patch
+program had originated outside Berkeley,
+.SM CSRG
+had to coordinate the efforts of the respective authors
+to make the programs work together harmoniously.
+.PP
+Once the sources have stabilized,
+an attempt is made to compile the entire source tree.
+Often this exposes errors caused by changed header files,
+or use of obsoleted C library interfaces.
+If the incompatibilities affect too many programs,
+or require excessive amounts of change in the programs
+that are affected,
+the incompatibility is backed out or some backward-compatible
+interface is provided.
+The incompatibilities that are found and left in are noted
+in a list that is later incorporated into the release notes.
+Thus, users upgrading to the new system can anticipate problems
+in their own software that will require change.
+.PP
+Once the source tree compiles completely,
+it is installed and becomes the running system that
+.SM CSRG
+uses on its main development machine.
+Once in day-to-day use,
+other interoperability problems become apparent
+and are resolved.
+When all known problems have been resolved, and the system has been
+stable for some period of time, an alpha distribution tape is made
+from the contents of
+.PN /nbsd .
+.PP
+The alpha distribution is sent out to a small set of test sites.
+These test sites are selected as having a
+sophisticated user population, not only capable of finding bugs,
+but also of determining their cause and developing a fix for the problem.
+These sites are usually composed of groups that are contributing
+software to the distribution or groups that have a particular expertise
+with some portion of the system.
+.NH 2
+Beta Distribution Development
+.PP
+After the alpha tape is created,
+the distribution filesystem is mounted read-only.
+Further changes are requested in a change log rather than
+being made directly to the distribution.
+The change requests are inspected and implemented by a
+.SM CSRG
+staff person, followed by a compilation of the affected
+programs to ensure that they still build correctly.
+Once the alpha tape has been cut,
+changes to the distribution are no longer made by people outside
+.SM CSRG .
+.PP
+As the alpha sites install and begin running the alpha distribution,
+they monitor the problems that they encounter.
+For minor bugs, they typically report back the bug along with
+a suggested fix.
+Since many of the alpha sites are selected from among the people
+working closely with
+.SM CSRG ,
+they often have accounts on, and access to, the primary
+.SM CSRG
+development machine.
+Thus, they are able to directly install the fix themselves,
+and simply notify
+.SM CSRG
+when they have fixed the problem.
+After verifying the fix, the affected files are added to
+the list to be updated on
+.PN /nbsd .
+.PP
+The more important task of the alpha sites is to test out the
+new facilities that have been added to the system.
+The alpha sites often find major design flaws
+or operational shortcomings of the facilities.
+When such problems are found,
+the person in charge of that facility is responsible
+for resolving the problem.
+Occasionally this requires redesigning and reimplementing
+parts of the affected facility.
+For example,
+in 4.2\s-1BSD\s+1,
+the alpha release of the networking system did not have connection queueing.
+This shortcoming prevented the network from handling many
+connections to a single server.
+The result was that the networking interface had to be
+redesigned to provide this functionality.
+.PP
+The alpha sites are also responsible for ferreting out interoperability
+problems between different utilities.
+The user populations of the test sites differ from the user population at
+.SM CSRG ,
+and, as a result, the utilities are exercised in ways that differ
+from the ways that they are used at
+.SM CSRG .
+These differences in usage patterns turn up problems that
+do not occur in our initial test environment.
+.PP
+The alpha sites frequently redistribute the alpha tape to several
+of their own alpha sites that are particularly interested
+in parts of the new system.
+These additional sites are responsible for reporting
+problems back to the site from which they received the distribution,
+not to
+.SM CSRG .
+Often these redistribution sites are less sophisticated than the
+direct alpha sites, so their reports need to be filtered
+to avoid spurious, or site dependent, bug reports.
+The direct alpha sites sift through the reports to find those that
+are relevant, and usually verify the suggested fix if one is given,
+or develop a fix if none is provided.
+This hierarchical testing process forces
+bug reports, fixes, and new software
+to be collected, evaluated, and checked for inaccuracies
+by first-level sites before being forwarded to
+.SM CSRG ,
+allowing the developers at
+.SM CSRG
+to concentrate on tracking the changes being made to the system
+rather than sifting through information (often voluminous) from every
+alpha-test site.
+.PP
+Once the major problems have been attended to,
+the focus turns to getting the documentation synchronized
+with the code that is being shipped.
+The manual pages need to be checked to be sure that
+they accurately reflect any changes to the programs that
+they describe.
+Usually the manual pages are kept up to date as
+the program they describe evolves.
+However, the supporting documents frequently do not get changed,
+and must be edited to bring them up to date.
+During this review, the need for other documents becomes evident.
+For example, it was
+during this phase of \*(b3 that it was decided
+to add a tutorial document on how to use the socket
+interprocess communication primitives.
+.PP
+Another task during this period is to contact the people that
+have contributed complete software packages
+(such as
+.PN RCS
+or
+.PN MH )
+in previous releases to see if they wish to
+make any revisions to their software.
+For those who do,
+the new software has to be obtained,
+and tested to verify that it compiles and runs
+correctly on the system to be released.
+Again, this integration and testing can often be done by the
+contributors themselves by logging directly into the master machine.
+.PP
+After the stream of bug reports has slowed down
+to a reasonable level,
+.SM CSRG
+begins a careful review of all the changes to the
+system since the previous release.
+The review is done by running a recursive
+.PN diff
+of the entire source tree\(emhere, of
+.PN /nbsd
+with 4.2\s-1BSD\s+1.
+All the changes are checked to ensure that they are reasonable,
+and have been properly documented.
+The process often turns up questionable changes.
+When such a questionable change is found,
+the source code control system log is examined to find
+out who made the change and what their explanation was
+for the change.
+If the log does not resolve the problem,
+the person responsible for the change is asked for an explanation
+of what they were trying to accomplish.
+If the reason is not compelling,
+the change is backed out.
+Facilities deemed inappropriate in \*(b3 included new options to
+the directory-listing command and a changed return value for the
+.RN fseek
+library routine;
+the changes were removed from the source before final distribution.
+Although this process is long and tedious,
+it forces the developers to obtain a coherent picture of the entire set of
+changes to the system.
+This exercise often turns up inconsistencies that would
+otherwise never be found.
+.PP
+The outcome of the comparison results in
+a pair of documents detailing
+changes to every user-level command
+.[
+Bug Fixes and Changes
+.]
+and to every kernel source file.
+.[
+Changes to the Kernel
+.]
+These documents are delivered with the final distribution.
+A user can look up any command by name and see immediately
+what has changed,
+and a developer can similarly look up any kernel
+file by name and get a summary of the changes to that file.
+.PP
+Having completed the review of the entire system,
+the preparation of the beta distribution is started.
+Unlike the alpha distribution, where pieces of the system
+may be unfinished and the documentation incomplete,
+the beta distribution is put together as if it were
+going to be the final distribution.
+All known problems are fixed, and any remaining development
+is completed.
+Once the beta tape has been prepared,
+no further changes are permitted to
+.PN /nbsd
+without careful review,
+as spurious changes made after the system has been
+.PN diff ed
+are unlikely to be caught.
+.NH 2
+Final Distribution Development
+.PP
+The beta distribution goes to more sites than the
+alpha distribution for three main reasons.
+First, as it is closer to the final release, more sites are willing
+to run it in a production environment without fear of catastrophic failures.
+Second, more commercial sites delivering
+.SM BSD -\c
+derived systems are interested in getting a preview of the
+upcoming changes in preparation for merging them into their
+own systems.
+Finally, because the beta tape has fewer problems,
+it is beneficial to offer it to more sites in hopes of
+finding as many of the remaining problems as possible.
+Also, by handing the system out to less sophisticated sites,
+issues that would be ignored by the users of the alpha sites
+become apparent.
+.PP
+The anticipation is that the beta tape will not require
+extensive changes to either the programs or the documentation.
+Most of the work involves sifting through the reported bugs
+to find those that are relevant and devising the minimal
+reasonable set of changes to fix them.
+After throughly testing the fix, it is listed in the update log for
+.PN /nbsd .
+One person at
+.SM CSRG
+is responsible for doing the update of
+.PN /nbsd
+and ensuring that everything affected by the change is rebuilt and tested.
+Thus, a change to a C library routine requires that the entire
+system be rebuilt.
+.PP
+During this period, the documentation is all printed and proofread.
+As minor changes are made to the manual pages and documentation,
+the affected pages must be reprinted.
+.PP
+The final step in the release process is to check the distribution tree
+to ensure that it is in a consistent state.
+This step includes verification that every file and directory
+on the distribution has the proper owner, group, and modes.
+All source files must be checked to be sure that they have
+appropriate copyright notices and source code control system headers.
+Any extraneous files must be removed.
+Finally, the installed binaries must be checked to ensure that they correspond
+exactly to the sources and libraries that are on the distribution.
+.PP
+This checking is a formidable task given that there are over 20,000 files on
+a typical distribution.
+Much of the checking can be done by a set of programs set to scan
+over the distribution tree.
+Unfortunately, the exception list is long, and requires
+hours of tedious hand checking; this has caused
+.SM CSRG
+to develop even
+more comprehensive validation programs for use in our next release.
+.PP
+Once the final set of checks has been run,
+the master tape can be made, and the official distribution started.
+As for the staff of
+.SM CSRG ,
+we usually take a brief vacation before plunging back into
+a new development phase.
diff --git a/share/doc/papers/relengr/Makefile b/share/doc/papers/relengr/Makefile
new file mode 100644
index 0000000..88ab5af
--- /dev/null
+++ b/share/doc/papers/relengr/Makefile
@@ -0,0 +1,15 @@
+# From: @(#)Makefile 1.6 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= releng
+SRCS= stubs 0.t 1.t 2.t 3.t
+EXTRA= ref.bib
+MACROS= -ms
+USE_REFER=
+CLEANFILES= stubs
+
+stubs:
+ @(echo .R1; echo database ${.CURDIR}/ref.bib; echo .R2) > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/relengr/ref.bib b/share/doc/papers/relengr/ref.bib
new file mode 100644
index 0000000..6f33cd7
--- /dev/null
+++ b/share/doc/papers/relengr/ref.bib
@@ -0,0 +1,26 @@
+%A M. K. McKusick
+%A J. M. Bloom
+%A M. J. Karels
+%T Bug Fixes and Changes in 4.3BSD
+%B \s-1UNIX\s0 System Manager's Manual, 4.3 Berkeley Software Distribution, Virtual VAX-11 Version
+%I \s-1USENIX\s0 Association
+%C Berkeley, CA
+%P 12:1\-22
+%D 1986
+
+%A M. J. Karels
+%T Changes to the Kernel in 4.3BSD
+%B \s-1UNIX\s0 System Manager's Manual, 4.3 Berkeley Software Distribution, Virtual VAX-11 Version
+%I \s-1USENIX\s0 Association
+%C Berkeley, CA
+%P 13:1\-32
+%D 1986
+
+%A S. J. Leffler
+%A M. K. McKusick
+%A M. J. Karels
+%A J. S. Quarterman
+%T The Design and Implementation of the 4.3BSD UNIX Operating System
+%I Addison-Wesley
+%C Reading, MA
+%D 1989
diff --git a/share/doc/papers/relengr/spell.ok b/share/doc/papers/relengr/spell.ok
new file mode 100644
index 0000000..13f5cf8
--- /dev/null
+++ b/share/doc/papers/relengr/spell.ok
@@ -0,0 +1,15 @@
+BSD
+Bostic
+CH
+CM
+CSRG
+Fn
+Karels
+Lb
+McKusick
+POSIX
+editted
+filesystem
+followup
+mothballed
+nbsd
diff --git a/share/doc/papers/sysperf/0.t b/share/doc/papers/sysperf/0.t
new file mode 100644
index 0000000..0c27a34
--- /dev/null
+++ b/share/doc/papers/sysperf/0.t
@@ -0,0 +1,247 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 5.1 (Berkeley) 4/17/91
+.\"
+.if n .ND
+.TL
+Measuring and Improving the Performance of Berkeley UNIX*
+.sp
+April 17, 1991
+.AU
+Marshall Kirk McKusick,
+Samuel J. Leffler\(dg,
+Michael J. Karels
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, CA 94720
+.AB
+.FS
+* UNIX is a trademark of AT&T Bell Laboratories.
+.FE
+.FS
+\(dg Samuel J. Leffler is currently employed by:
+Silicon Graphics, Inc.
+.FE
+.FS
+This work was done under grants from
+the National Science Foundation under grant MCS80-05144,
+and the Defense Advance Research Projects Agency (DoD) under
+ARPA Order No. 4031 monitored by Naval Electronic System Command under
+Contract No. N00039-82-C-0235.
+.FE
+The 4.2 Berkeley Software Distribution of
+.UX
+for the VAX\(dd
+.FS
+\(dd VAX, MASSBUS, UNIBUS, and DEC are trademarks of
+Digital Equipment Corporation.
+.FE
+had several problems that could severely affect the overall
+performance of the system.
+These problems were identified with
+kernel profiling and system tracing during day to day use.
+Once potential problem areas had been identified
+benchmark programs were devised to highlight the bottlenecks.
+These benchmarks verified that the problems existed and provided
+a metric against which to validate proposed solutions.
+This paper examines
+the performance problems encountered and describes
+modifications that have been made
+to the system since the initial distribution.
+.PP
+The changes to the system have consisted of improvements to the
+performance of the existing facilities,
+as well as enhancements to the current facilities.
+Performance improvements in the kernel include cacheing of path name
+translations, reductions in clock handling and scheduling overhead,
+and improved throughput of the network subsystem.
+Performance improvements in the libraries and utilities include replacement of
+linear searches of system databases with indexed lookup,
+merging of most network services into a single daemon,
+and conversion of system utilities to use the more efficient
+facilities available in 4.2BSD.
+Enhancements in the kernel include the addition of subnets and gateways,
+increases in many kernel limits,
+cleanup of the signal and autoconfiguration implementations,
+and support for windows and system logging.
+Functional extensions in the libraries and utilities include
+the addition of an Internet name server,
+new system management tools,
+and extensions to \fIdbx\fP to work with Pascal.
+The paper concludes with a brief discussion of changes made to
+the system to enhance security.
+All of these enhancements are present in Berkeley UNIX 4.3BSD.
+.AE
+.LP
+.sp 2
+CR Categories and Subject Descriptors:
+D.4.3
+.B "[Operating Systems]":
+File Systems Management \-
+.I "file organization, directory structures, access methods";
+D.4.8
+.B "[Operating Systems]":
+Performance \-
+.I "measurements, operational analysis";
+.sp
+Additional Keywords and Phrases:
+Berkeley UNIX,
+system performance,
+application program interface.
+.sp
+General Terms:
+UNIX operating system,
+measurement,
+performance.
+.de PT
+.lt \\n(LLu
+.pc %
+.nr PN \\n%
+.tl '\\*(LH'\\*(CH'\\*(RH'
+.lt \\n(.lu
+..
+.af PN i
+.ds LH Performance
+.ds RH Contents
+.bp 1
+.if t .ds CF April 17, 1991
+.if t .ds LF DRAFT
+.if t .ds RF McKusick, et. al.
+.ce
+.B "TABLE OF CONTENTS"
+.LP
+.sp 1
+.nf
+.B "1. Introduction"
+.LP
+.sp .5v
+.nf
+.B "2. Observation techniques
+\0.1. System maintenance tools
+\0.2. Kernel profiling
+\0.3. Kernel tracing
+\0.4. Benchmark programs
+.LP
+.sp .5v
+.nf
+.B "3. Results of our observations
+\0.1. User programs
+\0.1.1. Mail system
+\0.1.2. Network servers
+\0.2. System overhead
+\0.2.1. Micro-operation benchmarks
+\0.2.2. Path name translation
+\0.2.3. Clock processing
+\0.2.4. Terminal multiplexors
+\0.2.5. Process table management
+\0.2.6. File system buffer cache
+\0.2.7. Network subsystem
+\0.2.8. Virtual memory subsystem
+.LP
+.sp .5v
+.nf
+.B "4. Performance Improvements
+\0.1. Performance Improvements in the Kernel
+\0.1.1. Name Cacheing
+\0.1.2. Intelligent Auto Siloing
+\0.1.3. Process Table Management
+\0.1.4. Scheduling
+\0.1.5. Clock Handling
+\0.1.6. File System
+\0.1.7. Network
+\0.1.8. Exec
+\0.1.9. Context Switching
+\0.1.10. Setjmp and Longjmp
+\0.1.11. Compensating for Lack of Compiler Technology
+\0.2. Improvements to Libraries and Utilities
+\0.2.1. Hashed Databases
+\0.2.2. Buffered I/O
+\0.2.3. Mail System
+\0.2.4. Network Servers
+\0.2.5. The C Run-time Library
+\0.2.6. Csh
+.LP
+.sp .5v
+.nf
+.B "5. Functional Extensions
+\0.1. Kernel Extensions
+\0.1.1. Subnets, Broadcasts, and Gateways
+\0.1.2. Interface Addressing
+\0.1.3. User Control of Network Buffering
+\0.1.4. Number of File Descriptors
+\0.1.5. Kernel Limits
+\0.1.6. Memory Management
+\0.1.7. Signals
+\0.1.8. System Logging
+\0.1.9. Windows
+\0.1.10. Configuration of UNIBUS Devices
+\0.1.11. Disk Recovery from Errors
+\0.2. Functional Extensions to Libraries and Utilities
+\0.2.1. Name Server
+\0.2.2. System Management
+\0.2.3. Routing
+\0.2.4. Compilers
+.LP
+.sp .5v
+.nf
+.B "6. Security Tightening
+\0.1. Generic Kernel
+\0.2. Security Problems in Utilities
+.LP
+.sp .5v
+.nf
+.B "7. Conclusions
+.LP
+.sp .5v
+.nf
+.B Acknowledgements
+.LP
+.sp .5v
+.nf
+.B References
+.LP
+.sp .5v
+.nf
+.B "Appendix \- Benchmark Programs"
+.de _d
+.if t .ta .6i 2.1i 2.6i
+.\" 2.94 went to 2.6, 3.64 to 3.30
+.if n .ta .84i 2.6i 3.30i
+..
+.de _f
+.if t .ta .5i 1.25i 2.5i
+.\" 3.5i went to 3.8i
+.if n .ta .7i 1.75i 3.8i
+..
diff --git a/share/doc/papers/sysperf/1.t b/share/doc/papers/sysperf/1.t
new file mode 100644
index 0000000..88608ee
--- /dev/null
+++ b/share/doc/papers/sysperf/1.t
@@ -0,0 +1,81 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 5.1 (Berkeley) 4/17/91
+.\"
+.ds RH Introduction
+.af PN 1
+.bp 1
+.NH
+Introduction
+.PP
+The Berkeley Software Distributions of
+.UX
+for the VAX have added many new capabilities that were
+previously unavailable under
+.UX .
+The development effort for 4.2BSD concentrated on providing new
+facilities, and in getting them to work correctly.
+Many new data structures were added to the system to support
+these new capabilities.
+In addition,
+many of the existing data structures and algorithms
+were put to new uses or their old functions placed under increased demand.
+The effect of these changes was that
+mechanisms that were well tuned under 4.1BSD
+no longer provided adequate performance for 4.2BSD.
+The increased user feedback that came with the release of
+4.2BSD and a growing body of experience with the system
+highlighted the performance shortcomings of 4.2BSD.
+.PP
+This paper details the work that we have done since
+the release of 4.2BSD to measure the performance of the system,
+detect the bottlenecks,
+and find solutions to remedy them.
+Most of our tuning has been in the context of the real
+timesharing systems in our environment.
+Rather than using simulated workloads,
+we have sought to analyze our tuning efforts under
+realistic conditions.
+Much of the work has been done in the machine independent parts
+of the system, hence these improvements could be applied to
+other variants of UNIX with equal success.
+All of the changes made have been included in 4.3BSD.
+.PP
+Section 2 of the paper describes the tools and techniques
+available to us for measuring system performance.
+In Section 3 we present the results of using these tools, while Section 4
+has the performance improvements
+that have been made to the system based on our measurements.
+Section 5 highlights the functional enhancements that have
+been made to Berkeley UNIX 4.2BSD.
+Section 6 discusses some of the security problems that
+have been addressed.
diff --git a/share/doc/papers/sysperf/2.t b/share/doc/papers/sysperf/2.t
new file mode 100644
index 0000000..703cbb6
--- /dev/null
+++ b/share/doc/papers/sysperf/2.t
@@ -0,0 +1,258 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 5.1 (Berkeley) 4/17/91
+.\"
+.ds RH Observation techniques
+.NH
+Observation techniques
+.PP
+There are many tools available for monitoring the performance
+of the system.
+Those that we found most useful are described below.
+.NH 2
+System maintenance tools
+.PP
+Several standard maintenance programs are invaluable in
+observing the basic actions of the system.
+The \fIvmstat\fP(1)
+program is designed to be an aid to monitoring
+systemwide activity. Together with the
+\fIps\fP\|(1)
+command (as in ``ps av''), it can be used to investigate systemwide
+virtual memory activity.
+By running \fIvmstat\fP
+when the system is active you can judge the system activity in several
+dimensions: job distribution, virtual memory load, paging and swapping
+activity, disk and cpu utilization.
+Ideally, to have a balanced system in activity,
+there should be few blocked (b) jobs,
+there should be little paging or swapping activity, there should
+be available bandwidth on the disk devices (most single arms peak
+out at 25-35 tps in practice), and the user cpu utilization (us) should
+be high (above 50%).
+.PP
+If the system is busy, then the count of active jobs may be large,
+and several of these jobs may often be blocked (b). If the virtual
+memory is active, then the paging demon will be running (sr will
+be non-zero). It is healthy for the paging demon to free pages when
+the virtual memory gets active; it is triggered by the amount of free
+memory dropping below a threshold and increases its pace as free memory
+goes to zero.
+.PP
+If you run \fIvmstat\fP
+when the system is busy (a ``vmstat 5'' gives all the
+numbers computed by the system), you can find
+imbalances by noting abnormal job distributions. If many
+processes are blocked (b), then the disk subsystem
+is overloaded or imbalanced. If you have several non-dma
+devices or open teletype lines that are ``ringing'', or user programs
+that are doing high-speed non-buffered input/output, then the system
+time may go high (60-80% or higher).
+It is often possible to pin down the cause of high system time by
+looking to see if there is excessive context switching (cs), interrupt
+activity (in) or system call activity (sy). Long term measurements
+on one of
+our large machines show
+an average of 60 context switches and interrupts
+per second and an average of 90 system calls per second.
+.PP
+If the system is heavily loaded, or if you have little memory
+for your load (1 megabyte is little in our environment), then the system
+may be forced to swap. This is likely to be accompanied by a noticeable
+reduction in the system responsiveness and long pauses when interactive
+jobs such as editors swap out.
+.PP
+A second important program is \fIiostat\fP\|(1).
+\fIIostat\fP
+iteratively reports the number of characters read and written to terminals,
+and, for each disk, the number of transfers per second, kilobytes
+transferred per second,
+and the milliseconds per average seek.
+It also gives the percentage of time the system has
+spent in user mode, in user mode running low priority (niced) processes,
+in system mode, and idling.
+.PP
+To compute this information, for each disk, seeks and data transfer completions
+and the number of words transferred are counted;
+for terminals collectively, the number
+of input and output characters are counted.
+Also, every 100 ms,
+the state of each disk is examined
+and a tally is made if the disk is active.
+From these numbers and the transfer rates
+of the devices it is possible to determine
+average seek times for each device.
+.PP
+When filesystems are poorly placed on the available
+disks, figures reported by \fIiostat\fP can be used
+to pinpoint bottlenecks. Under heavy system load, disk
+traffic should be spread out among the drives with
+higher traffic expected to the devices where the root, swap, and
+/tmp filesystems are located. When multiple disk drives are
+attached to the same controller, the system will
+attempt to overlap seek operations with I/O transfers. When
+seeks are performed, \fIiostat\fP will show
+non-zero average seek times. Most modern disk drives should
+exhibit an average seek time of 25-35 ms.
+.PP
+Terminal traffic reported by \fIiostat\fP should be heavily
+output oriented unless terminal lines are being used for
+data transfer by programs such as \fIuucp\fP. Input and
+output rates are system specific. Screen editors
+such as \fIvi\fP and \fIemacs\fP tend to exhibit output/input
+ratios of anywhere from 5/1 to 8/1. On one of our largest
+systems, 88 terminal lines plus 32 pseudo terminals, we observed
+an average of 180 characters/second input and 450 characters/second
+output over 4 days of operation.
+.NH 2
+Kernel profiling
+.PP
+It is simple to build a 4.2BSD kernel that will automatically
+collect profiling information as it operates simply by specifying the
+.B \-p
+option to \fIconfig\fP\|(8) when configuring a kernel.
+The program counter sampling can be driven by the system clock,
+or by an alternate real time clock.
+The latter is highly recommended as use of the system clock results
+in statistical anomalies in accounting for
+the time spent in the kernel clock routine.
+.PP
+Once a profiling system has been booted statistic gathering is
+handled by \fIkgmon\fP\|(8).
+\fIKgmon\fP allows profiling to be started and stopped
+and the internal state of the profiling buffers to be dumped.
+\fIKgmon\fP can also be used to reset the state of the internal
+buffers to allow multiple experiments to be run without
+rebooting the machine.
+.PP
+The profiling data is processed with \fIgprof\fP\|(1)
+to obtain information regarding the system's operation.
+Profiled systems maintain histograms of the kernel program counter,
+the number of invocations of each routine,
+and a dynamic call graph of the executing system.
+The postprocessing propagates the time spent in each
+routine along the arcs of the call graph.
+\fIGprof\fP then generates a listing for each routine in the kernel,
+sorted according to the time it uses
+including the time of its call graph descendents.
+Below each routine entry is shown its (direct) call graph children,
+and how their times are propagated to this routine.
+A similar display above the routine shows how this routine's time and the
+time of its descendents is propagated to its (direct) call graph parents.
+.PP
+A profiled system is about 5-10% larger in its text space because of
+the calls to count the subroutine invocations.
+When the system executes,
+the profiling data is stored in a buffer that is 1.2
+times the size of the text space.
+All the information is summarized in memory,
+it is not necessary to have a trace file
+being continuously dumped to disk.
+The overhead for running a profiled system varies;
+under normal load we see anywhere from 5-25%
+of the system time spent in the profiling code.
+Thus the system is noticeably slower than an unprofiled system,
+yet is not so bad that it cannot be used in a production environment.
+This is important since it allows us to gather data
+in a real environment rather than trying to
+devise synthetic work loads.
+.NH 2
+Kernel tracing
+.PP
+The kernel can be configured to trace certain operations by
+specifying ``options TRACE'' in the configuration file. This
+forces the inclusion of code that records the occurrence of
+events in \fItrace records\fP in a circular buffer in kernel
+memory. Events may be enabled/disabled selectively while the
+system is operating. Each trace record contains a time stamp
+(taken from the VAX hardware time of day clock register), an
+event identifier, and additional information that is interpreted
+according to the event type. Buffer cache operations, such as
+initiating a read, include
+the disk drive, block number, and transfer size in the trace record.
+Virtual memory operations, such as a pagein completing, include
+the virtual address and process id in the trace record. The circular
+buffer is normally configured to hold 256 16-byte trace records.\**
+.FS
+\** The standard trace facilities distributed with 4.2
+differ slightly from those described here. The time stamp in the
+distributed system is calculated from the kernel's time of day
+variable instead of the VAX hardware register, and the buffer cache
+trace points do not record the transfer size.
+.FE
+.PP
+Several user programs were written to sample and interpret the
+tracing information. One program runs in the background and
+periodically reads the circular buffer of trace records. The
+trace information is compressed, in some instances interpreted
+to generate additional information, and a summary is written to a
+file. In addition, the sampling program can also record
+information from other kernel data structures, such as those
+interpreted by the \fIvmstat\fP program. Data written out to
+a file is further buffered to minimize I/O load.
+.PP
+Once a trace log has been created, programs that compress
+and interpret the data may be run to generate graphs showing the
+data and relationships between traced events and
+system load.
+.PP
+The trace package was used mainly to investigate the operation of
+the file system buffer cache. The sampling program maintained a
+history of read-ahead blocks and used the trace information to
+calculate, for example, percentage of read-ahead blocks used.
+.NH 2
+Benchmark programs
+.PP
+Benchmark programs were used in two ways. First, a suite of
+programs was constructed to calculate the cost of certain basic
+system operations. Operations such as system call overhead and
+context switching time are critically important in evaluating the
+overall performance of a system. Because of the drastic changes in
+the system between 4.1BSD and 4.2BSD, it was important to verify
+the overhead of these low level operations had not changed appreciably.
+.PP
+The second use of benchmarks was in exercising
+suspected bottlenecks.
+When we suspected a specific problem with the system,
+a small benchmark program was written to repeatedly use
+the facility.
+While these benchmarks are not useful as a general tool
+they can give quick feedback on whether a hypothesized
+improvement is really having an effect.
+It is important to realize that the only real assurance
+that a change has a beneficial effect is through
+long term measurements of general timesharing.
+We have numerous examples where a benchmark program
+suggests vast improvements while the change
+in the long term system performance is negligible,
+and conversely examples in which the benchmark program run more slowly,
+but the long term system performance improves significantly.
diff --git a/share/doc/papers/sysperf/3.t b/share/doc/papers/sysperf/3.t
new file mode 100644
index 0000000..832ad42
--- /dev/null
+++ b/share/doc/papers/sysperf/3.t
@@ -0,0 +1,694 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)3.t 5.1 (Berkeley) 4/17/91
+.\"
+.ds RH Results of our observations
+.NH
+Results of our observations
+.PP
+When 4.2BSD was first installed on several large timesharing systems
+the degradation in performance was significant.
+Informal measurements showed 4.2BSD providing 80% of the throughput
+of 4.1BSD (based on load averages observed under a normal timesharing load).
+Many of the initial problems found were because of programs that were
+not part of 4.1BSD. Using the techniques described in the previous
+section and standard process profiling several problems were identified.
+Later work concentrated on the operation of the kernel itself.
+In this section we discuss the problems uncovered; in the next
+section we describe the changes made to the system.
+.NH 2
+User programs
+.PP
+.NH 3
+Mail system
+.PP
+The mail system was the first culprit identified as a major
+contributor to the degradation in system performance.
+At Lucasfilm the mail system is heavily used
+on one machine, a VAX-11/780 with eight megabytes of memory.\**
+.FS
+\** During part of these observations the machine had only four
+megabytes of memory.
+.FE
+Message
+traffic is usually between users on the same machine and ranges from
+person-to-person telephone messages to per-organization distribution
+lists. After conversion to 4.2BSD, it was
+immediately noticed that mail to distribution lists of 20 or more people
+caused the system load to jump by anywhere from 3 to 6 points.
+The number of processes spawned by the \fIsendmail\fP program and
+the messages sent from \fIsendmail\fP to the system logging
+process, \fIsyslog\fP, generated significant load both from their
+execution and their interference with basic system operation. The
+number of context switches and disk transfers often doubled while
+\fIsendmail\fP operated; the system call rate jumped dramatically.
+System accounting information consistently
+showed \fIsendmail\fP as the top cpu user on the system.
+.NH 3
+Network servers
+.PP
+The network services provided in 4.2BSD add new capabilities to the system,
+but are not without cost. The system uses one daemon process to accept
+requests for each network service provided. The presence of many
+such daemons increases the numbers of active processes and files,
+and requires a larger configuration to support the same number of users.
+The overhead of the routing and status updates can consume
+several percent of the cpu.
+Remote logins and shells incur more overhead
+than their local equivalents.
+For example, a remote login uses three processes and a
+pseudo-terminal handler in addition to the local hardware terminal
+handler. When using a screen editor, sending and echoing a single
+character involves four processes on two machines.
+The additional processes, context switching, network traffic, and
+terminal handler overhead can roughly triple the load presented by one
+local terminal user.
+.NH 2
+System overhead
+.PP
+To measure the costs of various functions in the kernel,
+a profiling system was run for a 17 hour
+period on one of our general timesharing machines.
+While this is not as reproducible as a synthetic workload,
+it certainly represents a realistic test.
+This test was run on several occasions over a three month period.
+Despite the long period of time that elapsed
+between the test runs the shape of the profiles,
+as measured by the number of times each system call
+entry point was called, were remarkably similar.
+.PP
+These profiles turned up several bottlenecks that are
+discussed in the next section.
+Several of these were new to 4.2BSD,
+but most were caused by overloading of mechanisms
+which worked acceptably well in previous BSD systems.
+The general conclusion from our measurements was that
+the ratio of user to system time had increased from
+45% system / 55% user in 4.1BSD to 57% system / 43% user
+in 4.2BSD.
+.NH 3
+Micro-operation benchmarks
+.PP
+To compare certain basic system operations
+between 4.1BSD and 4.2BSD a suite of benchmark
+programs was constructed and run on a VAX-11/750 with 4.5 megabytes
+of physical memory and two disks on a MASSBUS controller.
+Tests were run with the machine operating in single user mode
+under both 4.1BSD and 4.2BSD. Paging was localized to the drive
+where the root file system was located.
+.PP
+The benchmark programs were modeled after the Kashtan benchmarks,
+[Kashtan80], with identical sources compiled under each system.
+The programs and their intended purpose are described briefly
+before the presentation of the results. The benchmark scripts
+were run twice with the results shown as the average of
+the two runs.
+The source code for each program and the shell scripts used during
+the benchmarks are included in the Appendix.
+.PP
+The set of tests shown in Table 1 was concerned with
+system operations other than paging. The intent of most
+benchmarks is clear. The result of running \fIsignocsw\fP is
+deducted from the \fIcsw\fP benchmark to calculate the context
+switch overhead. The \fIexec\fP tests use two different jobs to gauge
+the cost of overlaying a larger program with a smaller one
+and vice versa. The
+``null job'' and ``big job'' differ solely in the size of their data
+segments, 1 kilobyte versus 256 kilobytes. In both cases the
+text segment of the parent is larger than that of the child.\**
+.FS
+\** These tests should also have measured the cost of expanding the
+text segment; unfortunately time did not permit running additional tests.
+.FE
+All programs were compiled into the default load format that causes
+the text segment to be demand paged out of the file system and shared
+between processes.
+.KF
+.DS L
+.TS
+center box;
+l | l.
+Test Description
+_
+syscall perform 100,000 \fIgetpid\fP system calls
+csw perform 10,000 context switches using signals
+signocsw send 10,000 signals to yourself
+pipeself4 send 10,000 4-byte messages to yourself
+pipeself512 send 10,000 512-byte messages to yourself
+pipediscard4 send 10,000 4-byte messages to child who discards
+pipediscard512 send 10,000 512-byte messages to child who discards
+pipeback4 exchange 10,000 4-byte messages with child
+pipeback512 exchange 10,000 512-byte messages with child
+forks0 fork-exit-wait 1,000 times
+forks1k sbrk(1024), fault page, fork-exit-wait 1,000 times
+forks100k sbrk(102400), fault pages, fork-exit-wait 1,000 times
+vforks0 vfork-exit-wait 1,000 times
+vforks1k sbrk(1024), fault page, vfork-exit-wait 1,000 times
+vforks100k sbrk(102400), fault pages, vfork-exit-wait 1,000 times
+execs0null fork-exec ``null job''-exit-wait 1,000 times
+execs0null (1K env) execs0null above, with 1K environment added
+execs1knull sbrk(1024), fault page, fork-exec ``null job''-exit-wait 1,000 times
+execs1knull (1K env) execs1knull above, with 1K environment added
+execs100knull sbrk(102400), fault pages, fork-exec ``null job''-exit-wait 1,000 times
+vexecs0null vfork-exec ``null job''-exit-wait 1,000 times
+vexecs1knull sbrk(1024), fault page, vfork-exec ``null job''-exit-wait 1,000 times
+vexecs100knull sbrk(102400), fault pages, vfork-exec ``null job''-exit-wait 1,000 times
+execs0big fork-exec ``big job''-exit-wait 1,000 times
+execs1kbig sbrk(1024), fault page, fork-exec ``big job''-exit-wait 1,000 times
+execs100kbig sbrk(102400), fault pages, fork-exec ``big job''-exit-wait 1,000 times
+vexecs0big vfork-exec ``big job''-exit-wait 1,000 times
+vexecs1kbig sbrk(1024), fault pages, vfork-exec ``big job''-exit-wait 1,000 times
+vexecs100kbig sbrk(102400), fault pages, vfork-exec ``big job''-exit-wait 1,000 times
+.TE
+.ce
+Table 1. Kernel Benchmark programs.
+.DE
+.KE
+.PP
+The results of these tests are shown in Table 2. If the 4.1BSD results
+are scaled to reflect their being run on a VAX-11/750, they
+correspond closely to those found in [Joy80].\**
+.FS
+\** We assume that a VAX-11/750 runs at 60% of the speed of a VAX-11/780
+(not considering floating point operations).
+.FE
+.KF
+.DS L
+.TS
+center box;
+c s s s s s s s s s
+c || c s s || c s s || c s s
+c || c s s || c s s || c s s
+c || c | c | c || c | c | c || c | c | c
+l || n | n | n || n | n | n || n | n | n.
+Berkeley Software Distribution UNIX Systems
+_
+Test Elapsed Time User Time System Time
+\^ _ _ _
+\^ 4.1 4.2 4.3 4.1 4.2 4.3 4.1 4.2 4.3
+=
+syscall 28.0 29.0 23.0 4.5 5.3 3.5 23.9 23.7 20.4
+csw 45.0 60.0 45.0 3.5 4.3 3.3 19.5 25.4 19.0
+signocsw 16.5 23.0 16.0 1.9 3.0 1.1 14.6 20.1 15.2
+pipeself4 21.5 29.0 26.0 1.1 1.1 0.8 20.1 28.0 25.6
+pipeself512 47.5 59.0 55.0 1.2 1.2 1.0 46.1 58.3 54.2
+pipediscard4 32.0 42.0 36.0 3.2 3.7 3.0 15.5 18.8 15.6
+pipediscard512 61.0 76.0 69.0 3.1 2.1 2.0 29.7 36.4 33.2
+pipeback4 57.0 75.0 66.0 2.9 3.2 3.3 25.1 34.2 29.7
+pipeback512 110.0 138.0 125.0 3.1 3.4 2.2 52.2 65.7 57.7
+forks0 37.5 41.0 22.0 0.5 0.3 0.3 34.5 37.6 21.5
+forks1k 40.0 43.0 22.0 0.4 0.3 0.3 36.0 38.8 21.6
+forks100k 217.5 223.0 176.0 0.7 0.6 0.4 214.3 218.4 175.2
+vforks0 34.5 37.0 22.0 0.5 0.6 0.5 27.3 28.5 17.9
+vforks1k 35.0 37.0 22.0 0.6 0.8 0.5 27.2 28.6 17.9
+vforks100k 35.0 37.0 22.0 0.6 0.8 0.6 27.6 28.9 17.9
+execs0null 97.5 92.0 66.0 3.8 2.4 0.6 68.7 82.5 48.6
+execs0null (1K env) 197.0 229.0 75.0 4.1 2.6 0.9 167.8 212.3 62.6
+execs1knull 99.0 100.0 66.0 4.1 1.9 0.6 70.5 86.8 48.7
+execs1knull (1K env) 199.0 230.0 75.0 4.2 2.6 0.7 170.4 214.9 62.7
+execs100knull 283.5 278.0 216.0 4.8 2.8 1.1 251.9 269.3 202.0
+vexecs0null 100.0 92.0 66.0 5.1 2.7 1.1 63.7 76.8 45.1
+vexecs1knull 100.0 91.0 66.0 5.2 2.8 1.1 63.2 77.1 45.1
+vexecs100knull 100.0 92.0 66.0 5.1 3.0 1.1 64.0 77.7 45.6
+execs0big 129.0 201.0 101.0 4.0 3.0 1.0 102.6 153.5 92.7
+execs1kbig 130.0 202.0 101.0 3.7 3.0 1.0 104.7 155.5 93.0
+execs100kbig 318.0 385.0 263.0 4.8 3.1 1.1 286.6 339.1 247.9
+vexecs0big 128.0 200.0 101.0 4.6 3.5 1.6 98.5 149.6 90.4
+vexecs1kbig 125.0 200.0 101.0 4.7 3.5 1.3 98.9 149.3 88.6
+vexecs100kbig 126.0 200.0 101.0 4.2 3.4 1.3 99.5 151.0 89.0
+.TE
+.ce
+Table 2. Kernel Benchmark results (all times in seconds).
+.DE
+.KE
+.PP
+In studying the measurements we found that the basic system call
+and context switch overhead did not change significantly
+between 4.1BSD and 4.2BSD. The \fIsignocsw\fP results were caused by
+the changes to the \fIsignal\fP interface, resulting
+in an additional subroutine invocation for each call, not
+to mention additional complexity in the system's implementation.
+.PP
+The times for the use of pipes are significantly higher under
+4.2BSD because of their implementation on top of the interprocess
+communication facilities. Under 4.1BSD pipes were implemented
+without the complexity of the socket data structures and with
+simpler code. Further, while not obviously a factor here,
+4.2BSD pipes have less system buffer space provided them than
+4.1BSD pipes.
+.PP
+The \fIexec\fP tests shown in Table 2 were performed with 34 bytes of
+environment information under 4.1BSD and 40 bytes under 4.2BSD.
+To figure the cost of passing data through the environment,
+the execs0null and execs1knull tests were rerun with
+1065 additional bytes of data. The results are show in Table 3.
+.KF
+.DS L
+.TS
+center box;
+c || c s || c s || c s
+c || c s || c s || c s
+c || c | c || c | c || c | c
+l || n | n || n | n || n | n.
+Test Real User System
+\^ _ _ _
+\^ 4.1 4.2 4.1 4.2 4.1 4.2
+=
+execs0null 197.0 229.0 4.1 2.6 167.8 212.3
+execs1knull 199.0 230.0 4.2 2.6 170.4 214.9
+.TE
+.ce
+Table 3. Benchmark results with ``large'' environment (all times in seconds).
+.DE
+.KE
+These results show that passing argument data is significantly
+slower than under 4.1BSD: 121 ms/byte versus 93 ms/byte. Even using
+this factor to adjust the basic overhead of an \fIexec\fP system
+call, this facility is more costly under 4.2BSD than under 4.1BSD.
+.NH 3
+Path name translation
+.PP
+The single most expensive function performed by the kernel
+is path name translation.
+This has been true in almost every UNIX kernel [Mosher80];
+we find that our general time sharing systems do about
+500,000 name translations per day.
+.PP
+Name translations became more expensive in 4.2BSD for several reasons.
+The single most expensive addition was the symbolic link.
+Symbolic links
+have the effect of increasing the average number of components
+in path names to be translated.
+As an insidious example,
+consider the system manager that decides to change /tmp
+to be a symbolic link to /usr/tmp.
+A name such as /tmp/tmp1234 that previously required two component
+translations,
+now requires four component translations plus the cost of reading
+the contents of the symbolic link.
+.PP
+The new directory format also changes the characteristics of
+name translation.
+The more complex format requires more computation to determine
+where to place new entries in a directory.
+Conversely the additional information allows the system to only
+look at active entries when searching,
+hence searches of directories that had once grown large
+but currently have few active entries are checked quickly.
+The new format also stores the length of each name so that
+costly string comparisons are only done on names that are the
+same length as the name being sought.
+.PP
+The net effect of the changes is that the average time to
+translate a path name in 4.2BSD is 24.2 milliseconds,
+representing 40% of the time processing system calls,
+that is 19% of the total cycles in the kernel,
+or 11% of all cycles executed on the machine.
+The times are shown in Table 4. We have no comparable times
+for \fInamei\fP under 4.1 though they are certain to
+be significantly less.
+.KF
+.DS L
+.TS
+center box;
+l r r.
+part time % of kernel
+_
+self 14.3 ms/call 11.3%
+child 9.9 ms/call 7.9%
+_
+total 24.2 ms/call 19.2%
+.TE
+.ce
+Table 4. Call times for \fInamei\fP in 4.2BSD.
+.DE
+.KE
+.NH 3
+Clock processing
+.PP
+Nearly 25% of the time spent in the kernel is spent in the clock
+processing routines.
+(This is a clear indication that to avoid sampling bias when profiling the
+kernel with our tools
+we need to drive them from an independent clock.)
+These routines are responsible for implementing timeouts,
+scheduling the processor,
+maintaining kernel statistics,
+and tending various hardware operations such as
+draining the terminal input silos.
+Only minimal work is done in the hardware clock interrupt
+routine (at high priority), the rest is performed (at a lower priority)
+in a software interrupt handler scheduled by the hardware interrupt
+handler.
+In the worst case, with a clock rate of 100 Hz
+and with every hardware interrupt scheduling a software
+interrupt, the processor must field 200 interrupts per second.
+The overhead of simply trapping and returning
+is 3% of the machine cycles,
+figuring out that there is nothing to do
+requires an additional 2%.
+.NH 3
+Terminal multiplexors
+.PP
+The terminal multiplexors supported by 4.2BSD have programmable receiver
+silos that may be used in two ways.
+With the silo disabled, each character received causes an interrupt
+to the processor.
+Enabling the receiver silo allows the silo to fill before
+generating an interrupt, allowing multiple characters to be read
+for each interrupt.
+At low rates of input, received characters will not be processed
+for some time unless the silo is emptied periodically.
+The 4.2BSD kernel uses the input silos of each terminal multiplexor,
+and empties each silo on each clock interrupt.
+This allows high input rates without the cost of per-character interrupts
+while assuring low latency.
+However, as character input rates on most machines are usually
+low (about 25 characters per second),
+this can result in excessive overhead.
+At the current clock rate of 100 Hz, a machine with 5 terminal multiplexors
+configured makes 500 calls to the receiver interrupt routines per second.
+In addition, to achieve acceptable input latency
+for flow control, each clock interrupt must schedule
+a software interrupt to run the silo draining routines.\**
+.FS
+\** It is not possible to check the input silos at
+the time of the actual clock interrupt without modifying the terminal
+line disciplines, as the input queues may not be in a consistent state \**.
+.FE
+\** This implies that the worst case estimate for clock processing
+is the basic overhead for clock processing.
+.NH 3
+Process table management
+.PP
+In 4.2BSD there are numerous places in the kernel where a linear search
+of the process table is performed:
+.IP \(bu 3
+in \fIexit\fP to locate and wakeup a process's parent;
+.IP \(bu 3
+in \fIwait\fP when searching for \fB\s-2ZOMBIE\s+2\fP and
+\fB\s-2STOPPED\s+2\fP processes;
+.IP \(bu 3
+in \fIfork\fP when allocating a new process table slot and
+counting the number of processes already created by a user;
+.IP \(bu 3
+in \fInewproc\fP, to verify
+that a process id assigned to a new process is not currently
+in use;
+.IP \(bu 3
+in \fIkill\fP and \fIgsignal\fP to locate all processes to
+which a signal should be delivered;
+.IP \(bu 3
+in \fIschedcpu\fP when adjusting the process priorities every
+second; and
+.IP \(bu 3
+in \fIsched\fP when locating a process to swap out and/or swap
+in.
+.LP
+These linear searches can incur significant overhead. The rule
+for calculating the size of the process table is:
+.ce
+nproc = 20 + 8 * maxusers
+.sp
+that means a 48 user system will have a 404 slot process table.
+With the addition of network services in 4.2BSD, as many as a dozen
+server processes may be maintained simply to await incoming requests.
+These servers are normally created at boot time which causes them
+to be allocated slots near the beginning of the process table. This
+means that process table searches under 4.2BSD are likely to take
+significantly longer than under 4.1BSD. System profiling shows
+that as much as 20% of the time spent in the kernel on a loaded
+system (a VAX-11/780) can be spent in \fIschedcpu\fP and, on average,
+5-10% of the kernel time is spent in \fIschedcpu\fP.
+The other searches of the proc table are similarly affected.
+This shows the system can no longer tolerate using linear searches of
+the process table.
+.NH 3
+File system buffer cache
+.PP
+The trace facilities described in section 2.3 were used
+to gather statistics on the performance of the buffer cache.
+We were interested in measuring the effectiveness of the
+cache and the read-ahead policies.
+With the file system block size in 4.2BSD four to
+eight times that of a 4.1BSD file system, we were concerned
+that large amounts of read-ahead might be performed without
+being used. Also, we were interested in seeing if the
+rules used to size the buffer cache at boot time were severely
+affecting the overall cache operation.
+.PP
+The tracing package was run over a three hour period during
+a peak mid-afternoon period on a VAX 11/780 with four megabytes
+of physical memory.
+This resulted in a buffer cache containing 400 kilobytes of memory
+spread among 50 to 200 buffers
+(the actual number of buffers depends on the size mix of
+disk blocks being read at any given time).
+The pertinent configuration information is shown in Table 5.
+.KF
+.DS L
+.TS
+center box;
+l l l l.
+Controller Drive Device File System
+_
+DEC MASSBUS DEC RP06 hp0d /usr
+ hp0b swap
+Emulex SC780 Fujitsu Eagle hp1a /usr/spool/news
+ hp1b swap
+ hp1e /usr/src
+ hp1d /u0 (users)
+ Fujitsu Eagle hp2a /tmp
+ hp2b swap
+ hp2d /u1 (users)
+ Fujitsu Eagle hp3a /
+.TE
+.ce
+Table 5. Active file systems during buffer cache tests.
+.DE
+.KE
+.PP
+During the test period the load average ranged from 2 to 13
+with an average of 5.
+The system had no idle time, 43% user time, and 57% system time.
+The system averaged 90 interrupts per second
+(excluding the system clock interrupts),
+220 system calls per second,
+and 50 context switches per second (40 voluntary, 10 involuntary).
+.PP
+The active virtual memory (the sum of the address space sizes of
+all jobs that have run in the previous twenty seconds)
+over the period ranged from 2 to 6 megabytes with an average
+of 3.5 megabytes.
+There was no swapping, though the page daemon was inspecting
+about 25 pages per second.
+.PP
+On average 250 requests to read disk blocks were initiated
+per second.
+These include read requests for file blocks made by user
+programs as well as requests initiated by the system.
+System reads include requests for indexing information to determine
+where a file's next data block resides,
+file system layout maps to allocate new data blocks,
+and requests for directory contents needed to do path name translations.
+.PP
+On average, an 85% cache hit rate was observed for read requests.
+Thus only 37 disk reads were initiated per second.
+In addition, 5 read-ahead requests were made each second
+filling about 20% of the buffer pool.
+Despite the policies to rapidly reuse read-ahead buffers
+that remain unclaimed, more than 90% of the read-ahead
+buffers were used.
+.PP
+These measurements showed that the buffer cache was working
+effectively. Independent tests have also showed that the size
+of the buffer cache may be reduced significantly on memory-poor
+system without severe effects;
+we have not yet tested this hypothesis [Shannon83].
+.NH 3
+Network subsystem
+.PP
+The overhead associated with the
+network facilities found in 4.2BSD is often
+difficult to gauge without profiling the system.
+This is because most input processing is performed
+in modules scheduled with software interrupts.
+As a result, the system time spent performing protocol
+processing is rarely attributed to the processes that
+really receive the data. Since the protocols supported
+by 4.2BSD can involve significant overhead this was a serious
+concern. Results from a profiled kernel show an average
+of 5% of the system time is spent
+performing network input and timer processing in our environment
+(a 3Mb/s Ethernet with most traffic using TCP).
+This figure can vary significantly depending on
+the network hardware used, the average message
+size, and whether packet reassembly is required at the network
+layer. On one machine we profiled over a 17 hour
+period (our gateway to the ARPANET)
+206,000 input messages accounted for 2.4% of the system time,
+while another 0.6% of the system time was spent performing
+protocol timer processing.
+This machine was configured with an ACC LH/DH IMP interface
+and a DMA 3Mb/s Ethernet controller.
+.PP
+The performance of TCP over slower long-haul networks
+was degraded substantially by two problems.
+The first problem was a bug that prevented round-trip timing measurements
+from being made, thus increasing retransmissions unnecessarily.
+The second was a problem with the maximum segment size chosen by TCP,
+that was well-tuned for Ethernet, but was poorly chosen for
+the ARPANET, where it causes packet fragmentation. (The maximum
+segment size was actually negotiated upwards to a value that
+resulted in excessive fragmentation.)
+.PP
+When benchmarked in Ethernet environments the main memory buffer management
+of the network subsystem presented some performance anomalies.
+The overhead of processing small ``mbufs'' severely affected throughput for a
+substantial range of message sizes.
+In spite of the fact that most system ustilities made use of the throughput
+optimal 1024 byte size, user processes faced large degradations for some
+arbitrary sizes. This was specially true for TCP/IP transmissions [Cabrera84,
+Cabrera85].
+.NH 3
+Virtual memory subsystem
+.PP
+We ran a set of tests intended to exercise the virtual
+memory system under both 4.1BSD and 4.2BSD.
+The tests are described in Table 6.
+The test programs dynamically allocated
+a 7.3 Megabyte array (using \fIsbrk\fP\|(2)) then referenced
+pages in the array either: sequentially, in a purely random
+fashion, or such that the distance between
+successive pages accessed was randomly selected from a Gaussian
+distribution. In the last case, successive runs were made with
+increasing standard deviations.
+.KF
+.DS L
+.TS
+center box;
+l | l.
+Test Description
+_
+seqpage sequentially touch pages, 10 iterations
+seqpage-v as above, but first make \fIvadvise\fP\|(2) call
+randpage touch random page 30,000 times
+randpage-v as above, but first make \fIvadvise\fP call
+gausspage.1 30,000 Gaussian accesses, standard deviation of 1
+gausspage.10 as above, standard deviation of 10
+gausspage.30 as above, standard deviation of 30
+gausspage.40 as above, standard deviation of 40
+gausspage.50 as above, standard deviation of 50
+gausspage.60 as above, standard deviation of 60
+gausspage.80 as above, standard deviation of 80
+gausspage.inf as above, standard deviation of 10,000
+.TE
+.ce
+Table 6. Paging benchmark programs.
+.DE
+.KE
+.PP
+The results in Table 7 show how the additional
+memory requirements
+of 4.2BSD can generate more work for the paging system.
+Under 4.1BSD,
+the system used 0.5 of the 4.5 megabytes of physical memory
+on the test machine;
+under 4.2BSD it used nearly 1 megabyte of physical memory.\**
+.FS
+\** The 4.1BSD system used for testing was really a 4.1a
+system configured
+with networking facilities and code to support
+remote file access. The
+4.2BSD system also included the remote file access code.
+Since both
+systems would be larger than similarly configured ``vanilla''
+4.1BSD or 4.2BSD system, we consider out conclusions to still be valid.
+.FE
+This resulted in more page faults and, hence, more system time.
+To establish a common ground on which to compare the paging
+routines of each system, we check instead the average page fault
+service times for those test runs that had a statistically significant
+number of random page faults. These figures, shown in Table 8, show
+no significant difference between the two systems in
+the area of page fault servicing. We currently have
+no explanation for the results of the sequential
+paging tests.
+.KF
+.DS L
+.TS
+center box;
+l || c s || c s || c s || c s
+l || c s || c s || c s || c s
+l || c | c || c | c || c | c || c | c
+l || n | n || n | n || n | n || n | n.
+Test Real User System Page Faults
+\^ _ _ _ _
+\^ 4.1 4.2 4.1 4.2 4.1 4.2 4.1 4.2
+=
+seqpage 959 1126 16.7 12.8 197.0 213.0 17132 17113
+seqpage-v 579 812 3.8 5.3 216.0 237.7 8394 8351
+randpage 571 569 6.7 7.6 64.0 77.2 8085 9776
+randpage-v 572 562 6.1 7.3 62.2 77.5 8126 9852
+gausspage.1 25 24 23.6 23.8 0.8 0.8 8 8
+gausspage.10 26 26 22.7 23.0 3.2 3.6 2 2
+gausspage.30 34 33 25.0 24.8 8.6 8.9 2 2
+gausspage.40 42 81 23.9 25.0 11.5 13.6 3 260
+gausspage.50 113 175 24.2 26.2 19.6 26.3 784 1851
+gausspage.60 191 234 27.6 26.7 27.4 36.0 2067 3177
+gausspage.80 312 329 28.0 27.9 41.5 52.0 3933 5105
+gausspage.inf 619 621 82.9 85.6 68.3 81.5 8046 9650
+.TE
+.ce
+Table 7. Paging benchmark results (all times in seconds).
+.DE
+.KE
+.KF
+.DS L
+.TS
+center box;
+c || c s || c s
+c || c s || c s
+c || c | c || c | c
+l || n | n || n | n.
+Test Page Faults PFST
+\^ _ _
+\^ 4.1 4.2 4.1 4.2
+=
+randpage 8085 9776 791 789
+randpage-v 8126 9852 765 786
+gausspage.inf 8046 9650 848 844
+.TE
+.ce
+Table 8. Page fault service times (all times in microseconds).
+.DE
+.KE
diff --git a/share/doc/papers/sysperf/4.t b/share/doc/papers/sysperf/4.t
new file mode 100644
index 0000000..373a0d0
--- /dev/null
+++ b/share/doc/papers/sysperf/4.t
@@ -0,0 +1,776 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)4.t 5.1 (Berkeley) 4/17/91
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Performance Improvements
+.NH
+Performance Improvements
+.PP
+This section outlines the changes made to the system
+since the 4.2BSD distribution.
+The changes reported here were made in response
+to the problems described in Section 3.
+The improvements fall into two major classes;
+changes to the kernel that are described in this section,
+and changes to the system libraries and utilities that are
+described in the following section.
+.NH 2
+Performance Improvements in the Kernel
+.PP
+Our goal has been to optimize system performance
+for our general timesharing environment.
+Since most sites running 4.2BSD have been forced to take
+advantage of declining
+memory costs rather than replace their existing machines with
+ones that are more powerful, we have
+chosen to optimize running time at the expense of memory.
+This tradeoff may need to be reconsidered for personal workstations
+that have smaller memories and higher latency disks.
+Decreases in the running time of the system may be unnoticeable
+because of higher paging rates incurred by a larger kernel.
+Where possible, we have allowed the size of caches to be controlled
+so that systems with limited memory may reduce them as appropriate.
+.NH 3
+Name Cacheing
+.PP
+Our initial profiling studies showed that more than one quarter
+of the time in the system was spent in the
+pathname translation routine, \fInamei\fP,
+translating path names to inodes\u\s-21\s0\d\**.
+.FS
+\** \u\s-21\s0\d Inode is an abbreviation for ``Index node''.
+Each file on the system is described by an inode;
+the inode maintains access permissions, and an array of pointers to
+the disk blocks that hold the data associated with the file.
+.FE
+An inspection of \fInamei\fP shows that
+it consists of two nested loops.
+The outer loop is traversed once per pathname component.
+The inner loop performs a linear search through a directory looking
+for a particular pathname component.
+.PP
+Our first idea was to reduce the number of iterations
+around the inner loop of \fInamei\fP by observing that many programs
+step through a directory performing an operation on each entry in turn.
+To improve performance for processes doing directory scans,
+the system keeps track of the directory offset of the last component of the
+most recently translated path name for each process.
+If the next name the process requests is in the same directory,
+the search is started from the offset that the previous name was found
+(instead of from the beginning of the directory).
+Changing directories invalidates the cache, as
+does modifying the directory.
+For programs that step sequentially through a directory with
+.EQ
+delim $$
+.EN
+$N$ files, search time decreases from $O ( N sup 2 )$ to $O(N)$.
+.EQ
+delim off
+.EN
+.PP
+The cost of the cache is about 20 lines of code
+(about 0.2 kilobytes)
+and 16 bytes per process, with the cached data
+stored in a process's \fIuser\fP vector.
+.PP
+As a quick benchmark to verify the maximum effectiveness of the
+cache we ran ``ls \-l''
+on a directory containing 600 files.
+Before the per-process cache this command
+used 22.3 seconds of system time.
+After adding the cache the program used the same amount
+of user time, but the system time dropped to 3.3 seconds.
+.PP
+This change prompted our rerunning a profiled system
+on a machine containing the new \fInamei\fP.
+The results showed that the time in \fInamei\fP
+dropped by only 2.6 ms/call and
+still accounted for 36% of the system call time,
+18% of the kernel, or about 10% of all the machine cycles.
+This amounted to a drop in system time from 57% to about 55%.
+The results are shown in Table 9.
+.KF
+.DS L
+.TS
+center box;
+l r r.
+part time % of kernel
+_
+self 11.0 ms/call 9.2%
+child 10.6 ms/call 8.9%
+_
+total 21.6 ms/call 18.1%
+.TE
+.ce
+Table 9. Call times for \fInamei\fP with per-process cache.
+.DE
+.KE
+.PP
+The small performance improvement
+was caused by a low cache hit ratio.
+Although the cache was 90% effective when hit,
+it was only usable on about 25% of the names being translated.
+An additional reason for the small improvement was that
+although the amount of time spent in \fInamei\fP itself
+decreased substantially,
+more time was spent in the routines that it called
+since each directory had to be accessed twice;
+once to search from the middle to the end,
+and once to search from the beginning to the middle.
+.PP
+Frequent requests for a small set of names are best handled
+with a cache of recent name translations\**.
+.FS
+\** The cache is keyed on a name and the
+inode and device number of the directory that contains it.
+Associated with each entry is a pointer to the corresponding
+entry in the inode table.
+.FE
+This has the effect of eliminating the inner loop of \fInamei\fP.
+For each path name component,
+\fInamei\fP first looks in its cache of recent translations
+for the needed name.
+If it exists, the directory search can be completely eliminated.
+.PP
+The system already maintained a cache of recently accessed inodes,
+so the initial name cache
+maintained a simple name-inode association that was used to
+check each component of a path name during name translations.
+We considered implementing the cache by tagging each inode
+with its most recently translated name,
+but eventually decided to have a separate data structure that
+kept names with pointers to the inode table.
+Tagging inodes has two drawbacks;
+many inodes such as those associated with login ports remain in
+the inode table for a long period of time, but are never looked
+up by name.
+Other inodes, such as those describing directories are looked up
+frequently by many different names (\fIe.g.\fP ``..'').
+By keeping a separate table of names, the cache can
+truly reflect the most recently used names.
+An added benefit is that the table can be sized independently
+of the inode table, so that machines with small amounts of memory
+can reduce the size of the cache (or even eliminate it)
+without modifying the inode table structure.
+.PP
+Another issue to be considered is how the name cache should
+hold references to the inode table.
+Normally processes hold ``hard references'' by incrementing the
+reference count in the inode they reference.
+Since the system reuses only inodes with zero reference counts,
+a hard reference insures that the inode pointer will remain valid.
+However, if the name cache holds hard references,
+it is limited to some fraction of the size of the inode table,
+since some inodes must be left free for new files.
+It also makes it impossible for other parts of the kernel
+to verify sole use of a device or file.
+These reasons made it impractical to use hard references
+without affecting the behavior of the inode caching scheme.
+Thus, we chose instead to keep ``soft references'' protected
+by a \fIcapability\fP \- a 32-bit number
+guaranteed to be unique\u\s-22\s0\d \**.
+.FS
+\** \u\s-22\s0\d When all the numbers have been exhausted, all outstanding
+capabilities are purged and numbering starts over from scratch.
+Purging is possible as all capabilities are easily found in kernel memory.
+.FE
+When an entry is made in the name cache,
+the capability of its inode is copied to the name cache entry.
+When an inode is reused it is issued a new capability.
+When a name cache hit occurs,
+the capability of the name cache entry is compared
+with the capability of the inode that it references.
+If the capabilities do not match, the name cache entry is invalid.
+Since the name cache holds only soft references,
+it may be sized independent of the size of the inode table.
+A final benefit of using capabilities is that all
+cached names for an inode may be invalidated without
+searching through the entire cache;
+instead all you need to do is assign a new capability to the inode.
+.PP
+The cost of the name cache is about 200 lines of code
+(about 1.2 kilobytes)
+and 48 bytes per cache entry.
+Depending on the size of the system,
+about 200 to 1000 entries will normally be configured,
+using 10-50 kilobytes of physical memory.
+The name cache is resident in memory at all times.
+.PP
+After adding the system wide name cache we reran ``ls \-l''
+on the same directory.
+The user time remained the same,
+however the system time rose slightly to 3.7 seconds.
+This was not surprising as \fInamei\fP
+now had to maintain the cache,
+but was never able to make any use of it.
+.PP
+Another profiled system was created and measurements
+were collected over a 17 hour period. These measurements
+showed a 13 ms/call decrease in \fInamei\fP, with
+\fInamei\fP accounting for only 26% of the system call time,
+13% of the time in the kernel,
+or about 7% of all the machine cycles.
+System time dropped from 55% to about 49%.
+The results are shown in Table 10.
+.KF
+.DS L
+.TS
+center box;
+l r r.
+part time % of kernel
+_
+self 4.2 ms/call 6.2%
+child 4.4 ms/call 6.6%
+_
+total 8.6 ms/call 12.8%
+.TE
+.ce
+Table 10. Call times for \fInamei\fP with both caches.
+.DE
+.KE
+.PP
+On our general time sharing systems we find that during the twelve
+hour period from 8AM to 8PM the system does 500,000 to 1,000,000
+name translations.
+Statistics on the performance of both caches show that
+the large performance improvement is
+caused by the high hit ratio.
+The name cache has a hit rate of 70%-80%;
+the directory offset cache gets a hit rate of 5%-15%.
+The combined hit rate of the two caches almost always adds up to 85%.
+With the addition of the two caches,
+the percentage of system time devoted to name translation has
+dropped from 25% to less than 13%.
+While the system wide cache reduces both the amount of time in
+the routines that \fInamei\fP calls as well as \fInamei\fP itself
+(since fewer directories need to be accessed or searched),
+it is interesting to note that the actual percentage of system
+time spent in \fInamei\fP itself increases even though the
+actual time per call decreases.
+This is because less total time is being spent in the kernel,
+hence a smaller absolute time becomes a larger total percentage.
+.NH 3
+Intelligent Auto Siloing
+.PP
+Most terminal input hardware can run in two modes:
+it can either generate an interrupt each time a character is received,
+or collect characters in a silo that the system then periodically drains.
+To provide quick response for interactive input and flow control,
+a silo must be checked 30 to 50 times per second.
+Ascii terminals normally exhibit
+an input rate of less than 30 characters per second.
+At this input rate
+they are most efficiently handled with interrupt per character mode,
+since this generates fewer interrupts than draining the input silos
+of the terminal multiplexors at each clock interrupt.
+When input is being generated by another machine
+or a malfunctioning terminal connection, however,
+the input rate is usually more than 50 characters per second.
+It is more efficient to use a device's silo input mode,
+since this generates fewer interrupts than handling each character
+as a separate interrupt.
+Since a given dialup port may switch between uucp logins and user logins,
+it is impossible to statically select the most efficient input mode to use.
+.PP
+We therefore changed the terminal multiplexor handlers
+to dynamically choose between the use of the silo and the use of
+per-character interrupts.
+At low input rates the handler processes characters on an
+interrupt basis, avoiding the overhead
+of checking each interface on each clock interrupt.
+During periods of sustained input, the handler enables the silo
+and starts a timer to drain input.
+This timer runs less frequently than the clock interrupts,
+and is used only when there is a substantial amount of input.
+The transition from using silos to an interrupt per character is
+damped to minimize the number of transitions with bursty traffic
+(such as in network communication).
+Input characters serve to flush the silo, preventing long latency.
+By switching between these two modes of operation dynamically,
+the overhead of checking the silos is incurred only
+when necessary.
+.PP
+In addition to the savings in the terminal handlers,
+the clock interrupt routine is no longer required to schedule
+a software interrupt after each hardware interrupt to drain the silos.
+The software-interrupt level portion of the clock routine is only
+needed when timers expire or the current user process is collecting
+an execution profile.
+Thus, the number of interrupts attributable to clock processing
+is substantially reduced.
+.NH 3
+Process Table Management
+.PP
+As systems have grown larger, the size of the process table
+has grown far past 200 entries.
+With large tables, linear searches must be eliminated
+from any frequently used facility.
+The kernel process table is now multi-threaded to allow selective searching
+of active and zombie processes.
+A third list threads unused process table slots.
+Free slots can be obtained in constant time by taking one
+from the front of the free list.
+The number of processes used by a given user may be computed by scanning
+only the active list.
+Since the 4.2BSD release,
+the kernel maintained linked lists of the descendents of each process.
+This linkage is now exploited when dealing with process exit;
+parents seeking the exit status of children now avoid linear search
+of the process table, but examine only their direct descendents.
+In addition, the previous algorithm for finding all descendents of an exiting
+process used multiple linear scans of the process table.
+This has been changed to follow the links between child process and siblings.
+.PP
+When forking a new process,
+the system must assign it a unique process identifier.
+The system previously scanned the entire process table each time it created
+a new process to locate an identifier that was not already in use.
+Now, to avoid scanning the process table for each new process,
+the system computes a range of unused identifiers
+that can be directly assigned.
+Only when the set of identifiers is exhausted is another process table
+scan required.
+.NH 3
+Scheduling
+.PP
+Previously the scheduler scanned the entire process table
+once per second to recompute process priorities.
+Processes that had run for their entire time slice had their
+priority lowered.
+Processes that had not used their time slice, or that had
+been sleeping for the past second had their priority raised.
+On systems running many processes,
+the scheduler represented nearly 20% of the system time.
+To reduce this overhead,
+the scheduler has been changed to consider only
+runnable processes when recomputing priorities.
+To insure that processes sleeping for more than a second
+still get their appropriate priority boost,
+their priority is recomputed when they are placed back on the run queue.
+Since the set of runnable process is typically only a small fraction
+of the total number of processes on the system,
+the cost of invoking the scheduler drops proportionally.
+.NH 3
+Clock Handling
+.PP
+The hardware clock interrupts the processor 100 times per second
+at high priority.
+As most of the clock-based events need not be done at high priority,
+the system schedules a lower priority software interrupt to do the less
+time-critical events such as cpu scheduling and timeout processing.
+Often there are no such events, and the software interrupt handler
+finds nothing to do and returns.
+The high priority event now checks to see if there are low priority
+events to process;
+if there is nothing to do, the software interrupt is not requested.
+Often, the high priority interrupt occurs during a period when the
+machine had been running at low priority.
+Rather than posting a software interrupt that would occur as
+soon as it returns,
+the hardware clock interrupt handler simply lowers the processor priority
+and calls the software clock routines directly.
+Between these two optimizations, nearly 80 of the 100 software
+interrupts per second can be eliminated.
+.NH 3
+File System
+.PP
+The file system uses a large block size, typically 4096 or 8192 bytes.
+To allow small files to be stored efficiently, the large blocks can
+be broken into smaller fragments, typically multiples of 1024 bytes.
+To minimize the number of full-sized blocks that must be broken
+into fragments, the file system uses a best fit strategy.
+Programs that slowly grow files using write of 1024 bytes or less
+can force the file system to copy the data to
+successively larger and larger fragments until it finally
+grows to a full sized block.
+The file system still uses a best fit strategy the first time
+a fragment is written.
+However, the first time that the file system is forced to copy a growing
+fragment it places it at the beginning of a full sized block.
+Continued growth can be accommodated without further copying
+by using up the rest of the block.
+If the file ceases to grow, the rest of the block is still
+available for holding other fragments.
+.PP
+When creating a new file name,
+the entire directory in which it will reside must be scanned
+to insure that the name does not already exist.
+For large directories, this scan is time consuming.
+Because there was no provision for shortening directories,
+a directory that is once over-filled will increase the cost
+of file creation even after the over-filling is corrected.
+Thus, for example, a congested uucp connection can leave a legacy long
+after it is cleared up.
+To alleviate the problem, the system now deletes empty blocks
+that it finds at the end of a directory while doing a complete
+scan to create a new name.
+.NH 3
+Network
+.PP
+The default amount of buffer space allocated for stream sockets (including
+pipes) has been increased to 4096 bytes.
+Stream sockets and pipes now return their buffer sizes in the block size field
+of the stat structure.
+This information allows the standard I/O library to use more optimal buffering.
+Unix domain stream sockets also return a dummy device and inode number
+in the stat structure to increase compatibility
+with other pipe implementations.
+The TCP maximum segment size is calculated according to the destination
+and interface in use; non-local connections use a more conservative size
+for long-haul networks.
+.PP
+On multiply-homed hosts, the local address bound by TCP now always corresponds
+to the interface that will be used in transmitting data packets for the
+connection.
+Several bugs in the calculation of round trip timing have been corrected.
+TCP now switches to an alternate gateway when an existing route fails,
+or when an ICMP redirect message is received.
+ICMP source quench messages are used to throttle the transmission
+rate of TCP streams by temporarily creating an artificially small
+send window, and retransmissions send only a single packet
+rather than resending all queued data.
+A send policy has been implemented
+that decreases the number of small packets outstanding
+for network terminal traffic [Nagle84],
+providing additional reduction of network congestion.
+The overhead of packet routing has been decreased by changes in the routing
+code and by caching the most recently used route for each datagram socket.
+.PP
+The buffer management strategy implemented by \fIsosend\fP has been
+changed to make better use of the increased size of the socket buffers
+and a better tuned delayed acknowledgement algorithm.
+Routing has been modified to include a one element cache of the last
+route computed.
+Multiple messages send with the same destination now require less processing.
+Performance deteriorates because of load in
+either the sender host, receiver host, or ether.
+Also, any CPU contention degrades substantially
+the throughput achievable by user processes [Cabrera85].
+We have observed empty VAX 11/750s using up to 90% of their cycles
+transmitting network messages.
+.NH 3
+Exec
+.PP
+When \fIexec\fP-ing a new process, the kernel creates the new
+program's argument list by copying the arguments and environment
+from the parent process's address space into the system, then back out
+again onto the stack of the newly created process.
+These two copy operations were done one byte at a time, but
+are now done a string at a time.
+This optimization reduced the time to process
+an argument list by a factor of ten;
+the average time to do an \fIexec\fP call decreased by 25%.
+.NH 3
+Context Switching
+.PP
+The kernel used to post a software event when it wanted to force
+a process to be rescheduled.
+Often the process would be rescheduled for other reasons before
+exiting the kernel, delaying the event trap.
+At some later time the process would again
+be selected to run and would complete its pending system call,
+finally causing the event to take place.
+The event would cause the scheduler to be invoked a second time
+selecting the same process to run.
+The fix to this problem is to cancel any software reschedule
+events when saving a process context.
+This change doubles the speed with which processes
+can synchronize using pipes or signals.
+.NH 3
+Setjmp/Longjmp
+.PP
+The kernel routine \fIsetjmp\fP, that saves the current system
+context in preparation for a non-local goto used to save many more
+registers than necessary under most circumstances.
+By trimming its operation to save only the minimum state required,
+the overhead for system calls decreased by an average of 13%.
+.NH 3
+Compensating for Lack of Compiler Technology
+.PP
+The current compilers available for C do not
+do any significant optimization.
+Good optimizing compilers are unlikely to be built;
+the C language is not well suited to optimization
+because of its rampant use of unbound pointers.
+Thus, many classical optimizations such as common subexpression
+analysis and selection of register variables must be done
+by hand using ``exterior'' knowledge of when such optimizations are safe.
+.PP
+Another optimization usually done by optimizing compilers
+is inline expansion of small or frequently used routines.
+In past Berkeley systems this has been done by using \fIsed\fP to
+run over the assembly language and replace calls to small
+routines with the code for the body of the routine, often
+a single VAX instruction.
+While this optimization eliminated the cost of the subroutine
+call and return,
+it did not eliminate the pushing and popping of several arguments
+to the routine.
+The \fIsed\fP script has been replaced by a more intelligent expander,
+\fIinline\fP, that merges the pushes and pops into moves to registers.
+For example, if the C code
+.DS
+if (scanc(map[i], 1, 47, i - 63))
+.DE
+is compiled into assembly language it generates the code shown
+in the left hand column of Table 11.
+The \fIsed\fP inline expander changes this code to that
+shown in the middle column.
+The newer optimizer eliminates most of the stack
+operations to generate the code shown in the right hand column.
+.KF
+.TS
+center, box;
+c s s s s s
+c s | c s | c s
+l l | l l | l l.
+Alternative C Language Code Optimizations
+_
+cc sed inline
+_
+subl3 $64,_i,\-(sp) subl3 $64,_i,\-(sp) subl3 $64,_i,r5
+pushl $47 pushl $47 movl $47,r4
+pushl $1 pushl $1 pushl $1
+mull2 $16,_i,r3 mull2 $16,_i,r3 mull2 $16,_i,r3
+pushl \-56(fp)[r3] pushl \-56(fp)[r3] movl \-56(fp)[r3],r2
+calls $4,_scanc movl (sp)+,r5 movl (sp)+,r3
+tstl r0 movl (sp)+,r4 scanc r2,(r3),(r4),r5
+jeql L7 movl (sp)+,r3 tstl r0
+ movl (sp)+,r2 jeql L7
+ scanc r2,(r3),(r4),r5
+ tstl r0
+ jeql L7
+.TE
+.ce
+Table 11. Alternative inline code expansions.
+.KE
+.PP
+Another optimization involved reevaluating
+existing data structures in the context of the current system.
+For example, disk buffer hashing was implemented when the system
+typically had thirty to fifty buffers.
+Most systems today have 200 to 1000 buffers.
+Consequently, most of the hash chains contained
+ten to a hundred buffers each!
+The running time of the low level buffer management primitives was
+dramatically improved simply by enlarging the size of the hash table.
+.NH 2
+Improvements to Libraries and Utilities
+.PP
+Intuitively, changes to the kernel would seem to have the greatest
+payoff since they affect all programs that run on the system.
+However, the kernel has been tuned many times before, so the
+opportunity for significant improvement was small.
+By contrast, many of the libraries and utilities had never been tuned.
+For example, we found utilities that spent 90% of their
+running time doing single character read system calls.
+Changing the utility to use the standard I/O library cut the
+running time by a factor of five!
+Thus, while most of our time has been spent tuning the kernel,
+more than half of the speedups are because of improvements in
+other parts of the system.
+Some of the more dramatic changes are described in the following
+subsections.
+.NH 3
+Hashed Databases
+.PP
+UNIX provides a set of database management routines, \fIdbm\fP,
+that can be used to speed lookups in large data files
+with an external hashed index file.
+The original version of dbm was designed to work with only one
+database at a time. These routines were generalized to handle
+multiple database files, enabling them to be used in rewrites
+of the password and host file lookup routines. The new routines
+used to access the password file significantly improve the running
+time of many important programs such as the mail subsystem,
+the C-shell (in doing tilde expansion), \fIls \-l\fP, etc.
+.NH 3
+Buffered I/O
+.PP
+The new filesystem with its larger block sizes allows better
+performance, but it is possible to degrade system performance
+by performing numerous small transfers rather than using
+appropriately-sized buffers.
+The standard I/O library
+automatically determines the optimal buffer size for each file.
+Some C library routines and commonly-used programs use low-level
+I/O or their own buffering, however.
+Several important utilities that did not use the standard I/O library
+and were buffering I/O using the old optimal buffer size,
+1Kbytes; the programs were changed to buffer I/O according to the
+optimal file system blocksize.
+These include the editor, the assembler, loader, remote file copy,
+the text formatting programs, and the C compiler.
+.PP
+The standard error output has traditionally been unbuffered
+to prevent delay in presenting the output to the user,
+and to prevent it from being lost if buffers are not flushed.
+The inordinate expense of sending single-byte packets through
+the network led us to impose a buffering scheme on the standard
+error stream.
+Within a single call to \fIfprintf\fP, all output is buffered temporarily.
+Before the call returns, all output is flushed and the stream is again
+marked unbuffered.
+As before, the normal block or line buffering mechanisms can be used
+instead of the default behavior.
+.PP
+It is possible for programs with good intentions to unintentionally
+defeat the standard I/O library's choice of I/O buffer size by using
+the \fIsetbuf\fP call to assign an output buffer.
+Because of portability requirements, the default buffer size provided
+by \fIsetbuf\fP is 1024 bytes; this can lead, once again, to added
+overhead.
+One such program with this problem was \fIcat\fP;
+there are undoubtedly other standard system utilities with similar problems
+as the system has changed much since they were originally written.
+.NH 3
+Mail System
+.PP
+The problems discussed in section 3.1.1 prompted significant work
+on the entire mail system. The first problem identified was a bug
+in the \fIsyslog\fP program. The mail delivery program, \fIsendmail\fP
+logs all mail transactions through this process with the 4.2BSD interprocess
+communication facilities. \fISyslog\fP then records the information in
+a log file. Unfortunately, \fIsyslog\fP was performing a \fIsync\fP
+operation after each message it received, whether it was logged to a file
+or not. This wreaked havoc on the effectiveness of the
+buffer cache and explained, to a large
+extent, why sending mail to large distribution lists generated such a
+heavy load on the system (one syslog message was generated for each
+message recipient causing almost a continuous sequence of sync operations).
+.PP
+The hashed data base files were
+installed in all mail programs, resulting in an order of magnitude
+speedup on large distribution lists. The code in \fI/bin/mail\fP
+that notifies the \fIcomsat\fP program when mail has been delivered to
+a user was changed to cache host table lookups, resulting in a similar
+speedup on large distribution lists.
+.PP
+Next, the file locking facilities
+provided in 4.2BSD, \fIflock\fP\|(2), were used in place of the old
+locking mechanism.
+The mail system previously used \fIlink\fP and \fIunlink\fP in
+implementing file locking primitives.
+Because these operations usually modify the contents of directories
+they require synchronous disk operations and cannot take
+advantage of the name cache maintained by the system.
+Unlink requires that the entry be found in the directory so that
+it can be removed;
+link requires that the directory be scanned to insure that the name
+does not already exist.
+By contrast the advisory locking facility in 4.2BSD is
+efficient because it is all done with in-memory tables.
+Thus, the mail system was modified to use the file locking primitives.
+This yielded another 10% cut in the basic overhead of delivering mail.
+Extensive profiling and tuning of \fIsendmail\fP and
+compiling it without debugging code reduced the overhead by another 20%.
+.NH 3
+Network Servers
+.PP
+With the introduction of the network facilities in 4.2BSD,
+a myriad of services became available, each of which
+required its own daemon process.
+Many of these daemons were rarely if ever used,
+yet they lay asleep in the process table consuming
+system resources and generally slowing down response.
+Rather than having many servers started at boot time, a single server,
+\fIinetd\fP was substituted.
+This process reads a simple configuration file
+that specifies the services the system is willing to support
+and listens for service requests on each service's Internet port.
+When a client requests service the appropriate server is created
+and passed a service connection as its standard input. Servers
+that require the identity of their client may use the \fIgetpeername\fP
+system call; likewise \fIgetsockname\fP may be used to find out
+a server's local address without consulting data base files.
+This scheme is attractive for several reasons:
+.IP \(bu 3
+it eliminates
+as many as a dozen processes, easing system overhead and
+allowing the file and text tables to be made smaller,
+.IP \(bu 3
+servers need not contain the code required to handle connection
+queueing, simplifying the programs, and
+.IP \(bu 3
+installing and replacing servers becomes simpler.
+.PP
+With an increased numbers of networks, both local and external to Berkeley,
+we found that the overhead of the routing process was becoming
+inordinately high.
+Several changes were made in the routing daemon to reduce this load.
+Routes to external networks are no longer exchanged by routers
+on the internal machines, only a route to a default gateway.
+This reduces the amount of network traffic and the time required
+to process routing messages.
+In addition, the routing daemon was profiled
+and functions responsible for large amounts
+of time were optimized.
+The major changes were a faster hashing scheme,
+and inline expansions of the ubiquitous byte-swapping functions.
+.PP
+Under certain circumstances, when output was blocked,
+attempts by the remote login process
+to send output to the user were rejected by the system,
+although a prior \fIselect\fP call had indicated that data could be sent.
+This resulted in continuous attempts to write the data until the remote
+user restarted output.
+This problem was initially avoided in the remote login handler,
+and the original problem in the kernel has since been corrected.
+.NH 3
+The C Run-time Library
+.PP
+Several people have found poorly tuned code
+in frequently used routines in the C library [Lankford84].
+In particular the running time of the string routines can be
+cut in half by rewriting them using the VAX string instructions.
+The memory allocation routines have been tuned to waste less
+memory for memory allocations with sizes that are a power of two.
+Certain library routines that did file input in one-character reads
+have been corrected.
+Other library routines including \fIfread\fP and \fIfwrite\fP
+have been rewritten for efficiency.
+.NH 3
+Csh
+.PP
+The C-shell was converted to run on 4.2BSD by
+writing a set of routines to simulate the old jobs library.
+While this provided a functioning C-shell,
+it was grossly inefficient, generating up
+to twenty system calls per prompt.
+The C-shell has been modified to use the new signal
+facilities directly,
+cutting the number of system calls per prompt in half.
+Additional tuning was done with the help of profiling
+to cut the cost of frequently used facilities.
diff --git a/share/doc/papers/sysperf/5.t b/share/doc/papers/sysperf/5.t
new file mode 100644
index 0000000..ff008c3
--- /dev/null
+++ b/share/doc/papers/sysperf/5.t
@@ -0,0 +1,287 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)5.t 5.1 (Berkeley) 4/17/91
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH Functional Extensions
+.NH
+Functional Extensions
+.PP
+Some of the facilities introduced in 4.2BSD were not completely
+implemented. An important part of the effort that went into
+4.3BSD was to clean up and unify both new and old facilities.
+.NH 2
+Kernel Extensions
+.PP
+A significant effort went into improving
+the networking part of the kernel.
+The work consisted of fixing bugs,
+tuning the algorithms,
+and revamping the lowest levels of the system
+to better handle heterogeneous network topologies.
+.NH 3
+Subnets, Broadcasts and Gateways
+.PP
+To allow sites to expand their network in an autonomous
+and orderly fashion, subnetworks have been introduced in 4.3BSD [GADS85].
+This facility allows sites to subdivide their local Internet address
+space into multiple subnetwork address spaces that are visible
+only by hosts at that site. To off-site hosts machines on a site's
+subnetworks appear to reside on a single network. The routing daemon
+has been reworked to provide routing support in this type of
+environment.
+.PP
+The default Internet broadcast address is now specified with a host part
+of all one's, rather than all zero's.
+The broadcast address may be set at boot time on a per-interface basis.
+.NH 3
+Interface Addressing
+.PP
+The organization of network interfaces has been
+reworked to more cleanly support multiple
+network protocols. Network interfaces no longer
+contain a host's address on that network; instead
+each interface contains a pointer to a list of addresses
+assigned to that interface. This permits a single
+interface to support, for example, Internet protocols
+at the same time as XNS protocols.
+.PP
+The Address Resolution Protocol (ARP) support
+for 10 megabyte/second Ethernet\(dg
+.FS
+\(dg Ethernet is a trademark of Xerox.
+.FE
+has been made more flexible by allowing hosts to
+act as a ``clearing house'' for hosts that do
+not support ARP. In addition, system managers have
+more control over the contents of the ARP translation
+cache and may interactively interrogate and modify
+the cache's contents.
+.NH 3
+User Control of Network Buffering
+.PP
+Although the system allocates reasonable default amounts of buffering
+for most connections, certain operations such as file system dumps
+to remote machines benefit from significant increases in buffering [Walsh84].
+The \fIsetsockopt\fP system call has been extended to allow such requests.
+In addition, \fIgetsockopt\fP and \fIsetsockopt\fP,
+are now interfaced to the protocol level allowing protocol-specific
+options to be manipulated by the user.
+.NH 3
+Number of File Descriptors
+.PP
+To allow full use of the many descriptor based services available,
+the previous hard limit of 30 open files per process has been relaxed.
+The changes entailed generalizing \fIselect\fP to handle arrays of
+32-bit words, removing the dependency on file descriptors from
+the page table entries,
+and limiting most of the linear scans of a process's file table.
+The default per-process descriptor limit was raised from 20 to 64,
+though there are no longer any hard upper limits on the number
+of file descriptors.
+.NH 3
+Kernel Limits
+.PP
+Many internal kernel configuration limits have been increased by suitable
+modifications to data structures.
+The limit on physical memory has been changed from 8 megabyte to 64 megabyte,
+and the limit of 15 mounted file systems has been changed to 255.
+The maximum file system size has been increased to 8 gigabyte,
+number of processes to 65536,
+and per process size to 64 megabyte of data and 64 megabyte of stack.
+Note that these are upper bounds,
+the default limits for these quantities are tuned for systems
+with 4-8 megabyte of physical memory.
+.NH 3
+Memory Management
+.PP
+The global clock page replacement algorithm used to have a single
+hand that was used both to mark and to reclaim memory.
+The first time that it encountered a page it would clear its reference bit.
+If the reference bit was still clear on its next pass across the page,
+it would reclaim the page.
+The use of a single hand does not work well with large physical
+memories as the time to complete a single revolution of the hand
+can take up to a minute or more.
+By the time the hand gets around to the marked pages,
+the information is usually no longer pertinent.
+During periods of sudden shortages,
+the page daemon will not be able to find any reclaimable pages until
+it has completed a full revolution.
+To alleviate this problem,
+the clock hand has been split into two separate hands.
+The front hand clears the reference bits,
+the back hand follows a constant number of pages behind
+reclaiming pages that still have cleared reference bits.
+While the code has been written to allow the distance between
+the hands to be varied, we have not found any algorithms
+suitable for determining how to dynamically adjust this distance.
+.PP
+The configuration of the virtual memory system used to require
+a significant understanding of its operation to do such
+simple tasks as increasing the maximum process size.
+This process has been significantly improved so that the most
+common configuration parameters, such as the virtual memory sizes,
+can be specified using a single option in the configuration file.
+Standard configurations support data and stack segments
+of 17, 33 and 64 megabytes.
+.NH 3
+Signals
+.PP
+The 4.2BSD signal implementation would push several words
+onto the normal run-time stack before switching to an
+alternate signal stack.
+The 4.3BSD implementation has been corrected so that
+the entire signal handler's state is now pushed onto the signal stack.
+Another limitation in the original signal implementation was
+that it used an undocumented system call to return from signals.
+Users could not write their own return from exceptions;
+4.3BSD formally specifies the \fIsigreturn\fP system call.
+.PP
+Many existing programs depend on interrupted system calls.
+The restartable system call semantics of 4.2BSD signals caused
+many of these programs to break.
+To simplify porting of programs from inferior versions of
+.UX
+the \fIsigvec\fP system call has been extended so that
+programmers may specify that system calls are not to be
+restarted after particular signals.
+.NH 3
+System Logging
+.PP
+A system logging facility has been added
+that sends kernel messages to the
+syslog daemon for logging in /usr/adm/messages and possibly for
+printing on the system console.
+The revised scheme for logging messages
+eliminates the time lag in updating the messages file,
+unifies the format of kernel messages,
+provides a finer granularity of control over the messages
+that get printed on the console,
+and eliminates the degradation in response during the printing of
+low-priority kernel messages.
+Recoverable system errors and common resource limitations are logged
+using this facility.
+Most system utilities such as init and login,
+have been modified to log errors to syslog
+rather than writing directly on the console.
+.NH 3
+Windows
+.PP
+The tty structure has been augmented to hold
+information about the size
+of an associated window or terminal.
+These sizes can be obtained by programs such as editors that want
+to know the size of the screen they are manipulating.
+When these sizes are changed,
+a new signal, SIGWINCH, is sent the current process group.
+The editors have been modified to catch this signal and reshape
+their view of the world, and the remote login program and server
+now cooperate to propagate window sizes and window size changes
+across a network.
+Other programs and libraries such as curses that need the width
+or height of the screen have been modified to use this facility as well.
+.NH 3
+Configuration of UNIBUS Devices
+.PP
+The UNIBUS configuration routines have been extended to allow auto-configuration
+of dedicated UNIBUS memory held by devices.
+The new routines simplify the configuration of memory-mapped devices
+and correct problems occurring on reset of the UNIBUS.
+.NH 3
+Disk Recovery from Errors
+.PP
+The MASSBUS disk driver's error recovery routines have been fixed to
+retry before correcting ECC errors, support ECC on bad-sector replacements,
+and correctly attempt retries after earlier
+corrective actions in the same transfer.
+The error messages are more accurate.
+.NH 2
+Functional Extensions to Libraries and Utilities
+.PP
+Most of the changes to the utilities and libraries have been to
+allow them to handle a more general set of problems,
+or to handle the same set of problems more quickly.
+.NH 3
+Name Server
+.PP
+In 4.2BSD the name resolution routines (\fIgethostbyname\fP,
+\fIgetservbyname\fP,
+etc.) were implemented by a set of database files maintained on the
+local machine.
+Inconsistencies or obsolescence in these files resulted in inaccessibility of
+hosts or services.
+In 4.3BSD these files may be replaced by a network name server that can
+insure a consistent view of the name space in a multimachine environment.
+This name server operates in accordance with Internet standards
+for service on the ARPANET [Mockapetris83].
+.NH 3
+System Management
+.PP
+A new utility, \fIrdist\fP,
+has been provided to assist system managers in keeping
+all their machines up to date with a consistent set of sources and binaries.
+A master set of sources may reside on a single central machine,
+or be distributed at (known) locations throughout the environment.
+New versions of \fIgetty\fP, \fIinit\fP, and \fIlogin\fP
+merge the functions of several
+files into a single place, and allow more flexibility in the
+startup of processes such as window managers.
+.PP
+The new utility \fItimed\fP keeps the time on a group of cooperating machines
+(within a single LAN) synchronized to within 30 milliseconds.
+It does its corrections using a new system call that changes
+the rate of time advance without stopping or reversing the system clock.
+It normally selects one machine to act as a master.
+If the master dies or is partitioned, a new master is elected.
+Other machines may participate in a purely slave role.
+.NH 3
+Routing
+.PP
+Many bugs in the routing daemon have been fixed;
+it is considerably more robust,
+and now understands how to properly deal with
+subnets and point-to-point networks.
+Its operation has been made more efficient by tuning with the use
+of execution profiles, along with inline expansion of common operations
+using the kernel's \fIinline\fP optimizer.
+.NH 3
+Compilers
+.PP
+The symbolic debugger \fIdbx\fP has had many new features added,
+and all the known bugs fixed. In addition \fIdbx\fP
+has been extended to work with the Pascal compiler.
+The fortran compiler \fIf77\fP has had numerous bugs fixed.
+The C compiler has been modified so that it can, optionally,
+generate single precision floating point instructions when operating
+on single precision variables.
diff --git a/share/doc/papers/sysperf/6.t b/share/doc/papers/sysperf/6.t
new file mode 100644
index 0000000..a445ee1
--- /dev/null
+++ b/share/doc/papers/sysperf/6.t
@@ -0,0 +1,70 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)6.t 5.1 (Berkeley) 4/17/91
+.\"
+.ds RH Security Tightening
+.NH
+Security Tightening
+.PP
+Since we do not wish to encourage rampant system cracking,
+we describe only briefly the changes made to enhance security.
+.NH 2
+Generic Kernel
+.PP
+Several loopholes in the process tracing facility have been corrected.
+Programs being traced may not be executed;
+executing programs may not be traced.
+Programs may not provide input to terminals to which they do not
+have read permission.
+The handling of process groups has been tightened to eliminate
+some problems.
+When a program attempts to change its process group,
+the system checks to see if the process with the pid of the process
+group was started by the same user.
+If it exists and was started by a different user the process group
+number change is denied.
+.NH 2
+Security Problems in Utilities
+.PP
+Setuid utilities no longer use the \fIpopen\fP or \fIsystem\fP library routines.
+Access to the kernel's data structures through the kmem device
+is now restricted to programs that are set group id ``kmem''.
+Thus many programs that used to run with root privileges
+no longer need to do so.
+Access to disk devices is now controlled by an ``operator'' group id;
+this permission allows operators to function without being the super-user.
+Only users in group wheel can do ``su root''; this restriction
+allows administrators to define a super-user access list.
+Numerous holes have been closed in the shell to prevent
+users from gaining privileges from set user id shell scripts,
+although use of such scripts is still highly discouraged on systems
+that are concerned about security.
diff --git a/share/doc/papers/sysperf/7.t b/share/doc/papers/sysperf/7.t
new file mode 100644
index 0000000..68f5717
--- /dev/null
+++ b/share/doc/papers/sysperf/7.t
@@ -0,0 +1,164 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)7.t 5.1 (Berkeley) 4/17/91
+.\"
+.ds RH Conclusions
+.NH
+Conclusions
+.PP
+4.2BSD, while functionally superior to 4.1BSD, lacked much of the
+performance tuning required of a good system. We found that
+the distributed system spent 10-20% more time in the kernel than
+4.1BSD. This added overhead combined with problems with several
+user programs severely limited the overall performance of the
+system in a general timesharing environment.
+.PP
+Changes made to the system since the 4.2BSD distribution have
+eliminated most of the
+added system overhead by replacing old algorithms
+or introducing additional cacheing schemes.
+The combined caches added to the name translation process
+reduce the average cost of translating a pathname to an inode by more than 50%.
+These changes reduce the percentage of time spent running
+in the system by nearly 9%.
+.PP
+The use of silo input on terminal ports only when necessary
+has allowed the system to avoid a large amount of software interrupt
+processing. Observations show that the system is forced to
+field about 25% fewer interrupts than before.
+.PP
+The kernel
+changes, combined with many bug fixes, make the system much more
+responsive in a general timesharing environment.
+The 4.3BSD Berkeley UNIX system now appears
+capable of supporting loads at least as large as those supported under
+4.1BSD while providing all the new interprocess communication, networking,
+and file system facilities.
+.nr H2 1
+.ds RH Acknowledgements
+.SH
+\s+2Acknowledgements\s0
+.PP
+We would like to thank Robert Elz for sharing his ideas and
+his code for cacheing system wide names and searching the process table.
+We thank Alan Smith for initially suggesting the use of a
+capability based cache.
+We also acknowledge
+George Goble who dropped many of our changes
+into his production system and reported back fixes to the
+disasters that they caused.
+The buffer cache read-ahead trace package was based
+on a program written by Jim Lawson. Ralph Campbell
+implemented several of the C library changes. The original
+version of the Internet daemon was written by Bill Joy.
+In addition,
+we would like to thank the many other people that contributed
+ideas, information, and work while the system was undergoing change.
+.ds RH References
+.nr H2 1
+.sp 2
+.SH
+\s+2References\s-2
+.LP
+.IP [Cabrera84] 20
+Luis Felipe Cabrera, Eduard Hunter, Michael J. Karels, and David Mosher,
+``A User-Process Oriented Performance Study of Ethernet Networking Under
+Berkeley UNIX 4.2BSD,''
+Research Report No. UCB/CSD 84/217, University of California,
+Berkeley, December 1984.
+.IP [Cabrera85] 20
+Luis Felipe Cabrera, Michael J. Karels, and David Mosher,
+``The Impact of Buffer Management on Networking Software Performance
+in Berkeley UNIX 4.2BSD: A Case Study,''
+Proceedings of the Summer Usenix Conference, Portland, Oregon,
+June 1985, pp. 507-517.
+.IP [GADS85] 20
+GADS (Gateway Algorithms and Data Structures Task Force),
+``Toward an Internet Standard for Subnetting,'' RFC-940,
+Network Information Center, SRI International,
+April 1985.
+.IP [Joy80] 20
+Joy, William,
+``Comments on the performance of UNIX on the VAX'',
+Computer System Research Group, U.C. Berkeley.
+April 1980.
+.IP [Kashtan80] 20
+Kashtan, David L.,
+``UNIX and VMS, Some Performance Comparisons'',
+SRI International. February 1980.
+.IP [Lankford84] 20
+Jeffrey Lankford,
+``UNIX System V and 4BSD Performance,''
+\fIProceedings of the Salt Lake City Usenix Conference\fP,
+pp 228-236, June 1984.
+.IP [Leffler84] 20
+Sam Leffler, Mike Karels, and M. Kirk McKusick,
+``Measuring and Improving the Performance of 4.2BSD,''
+\fIProceedings of the Salt Lake City Usenix Conference\fP,
+pp 237-252, June 1984.
+.IP [McKusick85]
+M. Kirk McKusick, Mike Karels, and Samual Leffler,
+``Performance Improvements and Functional Enhancements in 4.3BSD''
+\fIProceedings of the Portland Usenix Conference\fP,
+pp 519-531, June 1985.
+.IP [Mockapetris83] 20
+Paul Mockapetris, ``Domain Names \- Implementation and Schedule,''
+Network Information Center, SRI International,
+RFC-883,
+November 1983.
+.IP [Mogul84] 20
+Jeffrey Mogul, ``Broadcasting Internet Datagrams,'' RFC-919,
+Network Information Center, SRI International,
+October 1984.
+.IP [Mosher80] 20
+Mosher, David,
+``UNIX Performance, an Introspection'',
+Presented at the Boulder, Colorado Usenix Conference, January 1980.
+Copies of the paper are available from
+Computer System Research Group, U.C. Berkeley.
+.IP [Nagle84] 20
+John Nagle, ``Congestion Control in IP/TCP Internetworks,'' RFC-896,
+Network Information Center, SRI International,
+January 1984.
+.IP [Ritchie74] 20
+Ritchie, D. M. and Thompson, K.,
+``The UNIX Time-Sharing System'',
+CACM 17, 7. July 1974. pp 365-375
+.IP [Shannon83] 20
+Shannon, W.,
+private communication,
+July 1983
+.IP [Walsh84] 20
+Robert Walsh and Robert Gurwitz,
+``Converting BBN TCP/IP to 4.2BSD,''
+\fIProceedings of the Salt Lake City Usenix Conference\fP,
+pp 52-61, June 1984.
diff --git a/share/doc/papers/sysperf/Makefile b/share/doc/papers/sysperf/Makefile
new file mode 100644
index 0000000..9ddbc9d
--- /dev/null
+++ b/share/doc/papers/sysperf/Makefile
@@ -0,0 +1,19 @@
+# From: @(#)Makefile 1.6 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= papers
+DOC= sysperf
+SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t 7.t appendix.tmp
+EXTRA= a1.t a2.t
+MACROS= -ms
+USE_EQN=
+USE_TBL=
+CLEANFILES= appendix.tmp
+
+appendix.tmp: a1.t a2.t
+ ${GRIND} ${.CURDIR}/a1.t | awk '/\.\(\)/{ cnt = 2 } \
+ { if (cnt) cnt -= 1; else print $$0; } ' > appendix.tmp
+ ${GRIND} -lcsh ${.CURDIR}/a2.t | awk '/\.\(\)/{ cnt = 2 } \
+ { if (cnt) cnt -= 1; else print $$0; } ' >> appendix.tmp
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/sysperf/a1.t b/share/doc/papers/sysperf/a1.t
new file mode 100644
index 0000000..b94f6aa
--- /dev/null
+++ b/share/doc/papers/sysperf/a1.t
@@ -0,0 +1,668 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)a1.t 5.1 (Berkeley) 4/17/91
+.\"
+.ds RH Appendix A \- Benchmark sources
+.nr H2 1
+.sp 2
+.de vS
+.nf
+..
+.de vE
+.fi
+..
+.bp
+.SH
+\s+2Appendix A \- Benchmark sources\s-2
+.LP
+The programs shown here run under 4.2 with only routines
+from the standard libraries. When run under 4.1 they were augmented
+with a \fIgetpagesize\fP routine and a copy of the \fIrandom\fP
+function from the C library. The \fIvforks\fP and \fIvexecs\fP
+programs are constructed from the \fIforks\fP and \fIexecs\fP programs,
+respectively, by substituting calls to \fIfork\fP with calls to
+\fIvfork\fP.
+.SH
+syscall
+.LP
+.vS
+/*
+ * System call overhead benchmark.
+ */
+main(argc, argv)
+ char *argv[];
+{
+ register int ncalls;
+
+ if (argc < 2) {
+ printf("usage: %s #syscalls\n", argv[0]);
+ exit(1);
+ }
+ ncalls = atoi(argv[1]);
+ while (ncalls-- > 0)
+ (void) getpid();
+}
+.vE
+.SH
+csw
+.LP
+.vS
+/*
+ * Context switching benchmark.
+ *
+ * Force system to context switch 2*nsigs
+ * times by forking and exchanging signals.
+ * To calculate system overhead for a context
+ * switch, the signocsw program must be run
+ * with nsigs. Overhead is then estimated by
+ * t1 = time csw <n>
+ * t2 = time signocsw <n>
+ * overhead = t1 - 2 * t2;
+ */
+#include <signal.h>
+
+int sigsub();
+int otherpid;
+int nsigs;
+
+main(argc, argv)
+ char *argv[];
+{
+ int pid;
+
+ if (argc < 2) {
+ printf("usage: %s nsignals\n", argv[0]);
+ exit(1);
+ }
+ nsigs = atoi(argv[1]);
+ signal(SIGALRM, sigsub);
+ otherpid = getpid();
+ pid = fork();
+ if (pid != 0) {
+ otherpid = pid;
+ kill(otherpid, SIGALRM);
+ }
+ for (;;)
+ sigpause(0);
+}
+
+sigsub()
+{
+
+ signal(SIGALRM, sigsub);
+ kill(otherpid, SIGALRM);
+ if (--nsigs <= 0)
+ exit(0);
+}
+.vE
+.SH
+signocsw
+.LP
+.vS
+/*
+ * Signal without context switch benchmark.
+ */
+#include <signal.h>
+
+int pid;
+int nsigs;
+int sigsub();
+
+main(argc, argv)
+ char *argv[];
+{
+ register int i;
+
+ if (argc < 2) {
+ printf("usage: %s nsignals\n", argv[0]);
+ exit(1);
+ }
+ nsigs = atoi(argv[1]);
+ signal(SIGALRM, sigsub);
+ pid = getpid();
+ for (i = 0; i < nsigs; i++)
+ kill(pid, SIGALRM);
+}
+
+sigsub()
+{
+
+ signal(SIGALRM, sigsub);
+}
+.vE
+.SH
+pipeself
+.LP
+.vS
+/*
+ * IPC benchmark,
+ * write to self using pipes.
+ */
+
+main(argc, argv)
+ char *argv[];
+{
+ char buf[512];
+ int fd[2], msgsize;
+ register int i, iter;
+
+ if (argc < 3) {
+ printf("usage: %s iterations message-size\n", argv[0]);
+ exit(1);
+ }
+ argc--, argv++;
+ iter = atoi(*argv);
+ argc--, argv++;
+ msgsize = atoi(*argv);
+ if (msgsize > sizeof (buf) || msgsize <= 0) {
+ printf("%s: Bad message size.\n", *argv);
+ exit(2);
+ }
+ if (pipe(fd) < 0) {
+ perror("pipe");
+ exit(3);
+ }
+ for (i = 0; i < iter; i++) {
+ write(fd[1], buf, msgsize);
+ read(fd[0], buf, msgsize);
+ }
+}
+.vE
+.SH
+pipediscard
+.LP
+.vS
+/*
+ * IPC benchmarkl,
+ * write and discard using pipes.
+ */
+
+main(argc, argv)
+ char *argv[];
+{
+ char buf[512];
+ int fd[2], msgsize;
+ register int i, iter;
+
+ if (argc < 3) {
+ printf("usage: %s iterations message-size\n", argv[0]);
+ exit(1);
+ }
+ argc--, argv++;
+ iter = atoi(*argv);
+ argc--, argv++;
+ msgsize = atoi(*argv);
+ if (msgsize > sizeof (buf) || msgsize <= 0) {
+ printf("%s: Bad message size.\n", *argv);
+ exit(2);
+ }
+ if (pipe(fd) < 0) {
+ perror("pipe");
+ exit(3);
+ }
+ if (fork() == 0)
+ for (i = 0; i < iter; i++)
+ read(fd[0], buf, msgsize);
+ else
+ for (i = 0; i < iter; i++)
+ write(fd[1], buf, msgsize);
+}
+.vE
+.SH
+pipeback
+.LP
+.vS
+/*
+ * IPC benchmark,
+ * read and reply using pipes.
+ *
+ * Process forks and exchanges messages
+ * over a pipe in a request-response fashion.
+ */
+
+main(argc, argv)
+ char *argv[];
+{
+ char buf[512];
+ int fd[2], fd2[2], msgsize;
+ register int i, iter;
+
+ if (argc < 3) {
+ printf("usage: %s iterations message-size\n", argv[0]);
+ exit(1);
+ }
+ argc--, argv++;
+ iter = atoi(*argv);
+ argc--, argv++;
+ msgsize = atoi(*argv);
+ if (msgsize > sizeof (buf) || msgsize <= 0) {
+ printf("%s: Bad message size.\n", *argv);
+ exit(2);
+ }
+ if (pipe(fd) < 0) {
+ perror("pipe");
+ exit(3);
+ }
+ if (pipe(fd2) < 0) {
+ perror("pipe");
+ exit(3);
+ }
+ if (fork() == 0)
+ for (i = 0; i < iter; i++) {
+ read(fd[0], buf, msgsize);
+ write(fd2[1], buf, msgsize);
+ }
+ else
+ for (i = 0; i < iter; i++) {
+ write(fd[1], buf, msgsize);
+ read(fd2[0], buf, msgsize);
+ }
+}
+.vE
+.SH
+forks
+.LP
+.vS
+/*
+ * Benchmark program to calculate fork+wait
+ * overhead (approximately). Process
+ * forks and exits while parent waits.
+ * The time to run this program is used
+ * in calculating exec overhead.
+ */
+
+main(argc, argv)
+ char *argv[];
+{
+ register int nforks, i;
+ char *cp;
+ int pid, child, status, brksize;
+
+ if (argc < 2) {
+ printf("usage: %s number-of-forks sbrk-size\n", argv[0]);
+ exit(1);
+ }
+ nforks = atoi(argv[1]);
+ if (nforks < 0) {
+ printf("%s: bad number of forks\n", argv[1]);
+ exit(2);
+ }
+ brksize = atoi(argv[2]);
+ if (brksize < 0) {
+ printf("%s: bad size to sbrk\n", argv[2]);
+ exit(3);
+ }
+ cp = (char *)sbrk(brksize);
+ if ((int)cp == -1) {
+ perror("sbrk");
+ exit(4);
+ }
+ for (i = 0; i < brksize; i += 1024)
+ cp[i] = i;
+ while (nforks-- > 0) {
+ child = fork();
+ if (child == -1) {
+ perror("fork");
+ exit(-1);
+ }
+ if (child == 0)
+ _exit(-1);
+ while ((pid = wait(&status)) != -1 && pid != child)
+ ;
+ }
+ exit(0);
+}
+.vE
+.SH
+execs
+.LP
+.vS
+/*
+ * Benchmark program to calculate exec
+ * overhead (approximately). Process
+ * forks and execs "null" test program.
+ * The time to run the fork program should
+ * then be deducted from this one to
+ * estimate the overhead for the exec.
+ */
+
+main(argc, argv)
+ char *argv[];
+{
+ register int nexecs, i;
+ char *cp, *sbrk();
+ int pid, child, status, brksize;
+
+ if (argc < 3) {
+ printf("usage: %s number-of-execs sbrk-size job-name\n",
+ argv[0]);
+ exit(1);
+ }
+ nexecs = atoi(argv[1]);
+ if (nexecs < 0) {
+ printf("%s: bad number of execs\n", argv[1]);
+ exit(2);
+ }
+ brksize = atoi(argv[2]);
+ if (brksize < 0) {
+ printf("%s: bad size to sbrk\n", argv[2]);
+ exit(3);
+ }
+ cp = sbrk(brksize);
+ if ((int)cp == -1) {
+ perror("sbrk");
+ exit(4);
+ }
+ for (i = 0; i < brksize; i += 1024)
+ cp[i] = i;
+ while (nexecs-- > 0) {
+ child = fork();
+ if (child == -1) {
+ perror("fork");
+ exit(-1);
+ }
+ if (child == 0) {
+ execv(argv[3], argv);
+ perror("execv");
+ _exit(-1);
+ }
+ while ((pid = wait(&status)) != -1 && pid != child)
+ ;
+ }
+ exit(0);
+}
+.vE
+.SH
+nulljob
+.LP
+.vS
+/*
+ * Benchmark "null job" program.
+ */
+
+main(argc, argv)
+ char *argv[];
+{
+
+ exit(0);
+}
+.vE
+.SH
+bigjob
+.LP
+.vS
+/*
+ * Benchmark "null big job" program.
+ */
+/* 250 here is intended to approximate vi's text+data size */
+char space[1024 * 250] = "force into data segment";
+
+main(argc, argv)
+ char *argv[];
+{
+
+ exit(0);
+}
+.vE
+.bp
+.SH
+seqpage
+.LP
+.vS
+/*
+ * Sequential page access benchmark.
+ */
+#include <sys/vadvise.h>
+
+char *valloc();
+
+main(argc, argv)
+ char *argv[];
+{
+ register i, niter;
+ register char *pf, *lastpage;
+ int npages = 4096, pagesize, vflag = 0;
+ char *pages, *name;
+
+ name = argv[0];
+ argc--, argv++;
+again:
+ if (argc < 1) {
+usage:
+ printf("usage: %s [ -v ] [ -p #pages ] niter\n", name);
+ exit(1);
+ }
+ if (strcmp(*argv, "-p") == 0) {
+ argc--, argv++;
+ if (argc < 1)
+ goto usage;
+ npages = atoi(*argv);
+ if (npages <= 0) {
+ printf("%s: Bad page count.\n", *argv);
+ exit(2);
+ }
+ argc--, argv++;
+ goto again;
+ }
+ if (strcmp(*argv, "-v") == 0) {
+ argc--, argv++;
+ vflag++;
+ goto again;
+ }
+ niter = atoi(*argv);
+ pagesize = getpagesize();
+ pages = valloc(npages * pagesize);
+ if (pages == (char *)0) {
+ printf("Can't allocate %d pages (%2.1f megabytes).\n",
+ npages, (npages * pagesize) / (1024. * 1024.));
+ exit(3);
+ }
+ lastpage = pages + (npages * pagesize);
+ if (vflag)
+ vadvise(VA_SEQL);
+ for (i = 0; i < niter; i++)
+ for (pf = pages; pf < lastpage; pf += pagesize)
+ *pf = 1;
+}
+.vE
+.SH
+randpage
+.LP
+.vS
+/*
+ * Random page access benchmark.
+ */
+#include <sys/vadvise.h>
+
+char *valloc();
+int rand();
+
+main(argc, argv)
+ char *argv[];
+{
+ register int npages = 4096, pagesize, pn, i, niter;
+ int vflag = 0, debug = 0;
+ char *pages, *name;
+
+ name = argv[0];
+ argc--, argv++;
+again:
+ if (argc < 1) {
+usage:
+ printf("usage: %s [ -d ] [ -v ] [ -p #pages ] niter\n", name);
+ exit(1);
+ }
+ if (strcmp(*argv, "-p") == 0) {
+ argc--, argv++;
+ if (argc < 1)
+ goto usage;
+ npages = atoi(*argv);
+ if (npages <= 0) {
+ printf("%s: Bad page count.\n", *argv);
+ exit(2);
+ }
+ argc--, argv++;
+ goto again;
+ }
+ if (strcmp(*argv, "-v") == 0) {
+ argc--, argv++;
+ vflag++;
+ goto again;
+ }
+ if (strcmp(*argv, "-d") == 0) {
+ argc--, argv++;
+ debug++;
+ goto again;
+ }
+ niter = atoi(*argv);
+ pagesize = getpagesize();
+ pages = valloc(npages * pagesize);
+ if (pages == (char *)0) {
+ printf("Can't allocate %d pages (%2.1f megabytes).\n",
+ npages, (npages * pagesize) / (1024. * 1024.));
+ exit(3);
+ }
+ if (vflag)
+ vadvise(VA_ANOM);
+ for (i = 0; i < niter; i++) {
+ pn = random() % npages;
+ if (debug)
+ printf("touch page %d\n", pn);
+ pages[pagesize * pn] = 1;
+ }
+}
+.vE
+.SH
+gausspage
+.LP
+.vS
+/*
+ * Random page access with
+ * a gaussian distribution.
+ *
+ * Allocate a large (zero fill on demand) address
+ * space and fault the pages in a random gaussian
+ * order.
+ */
+
+float sqrt(), log(), rnd(), cos(), gauss();
+char *valloc();
+int rand();
+
+main(argc, argv)
+ char *argv[];
+{
+ register int pn, i, niter, delta;
+ register char *pages;
+ float sd = 10.0;
+ int npages = 4096, pagesize, debug = 0;
+ char *name;
+
+ name = argv[0];
+ argc--, argv++;
+again:
+ if (argc < 1) {
+usage:
+ printf(
+"usage: %s [ -d ] [ -p #pages ] [ -s standard-deviation ] iterations\n", name);
+ exit(1);
+ }
+ if (strcmp(*argv, "-s") == 0) {
+ argc--, argv++;
+ if (argc < 1)
+ goto usage;
+ sscanf(*argv, "%f", &sd);
+ if (sd <= 0) {
+ printf("%s: Bad standard deviation.\n", *argv);
+ exit(2);
+ }
+ argc--, argv++;
+ goto again;
+ }
+ if (strcmp(*argv, "-p") == 0) {
+ argc--, argv++;
+ if (argc < 1)
+ goto usage;
+ npages = atoi(*argv);
+ if (npages <= 0) {
+ printf("%s: Bad page count.\n", *argv);
+ exit(2);
+ }
+ argc--, argv++;
+ goto again;
+ }
+ if (strcmp(*argv, "-d") == 0) {
+ argc--, argv++;
+ debug++;
+ goto again;
+ }
+ niter = atoi(*argv);
+ pagesize = getpagesize();
+ pages = valloc(npages*pagesize);
+ if (pages == (char *)0) {
+ printf("Can't allocate %d pages (%2.1f megabytes).\n",
+ npages, (npages*pagesize) / (1024. * 1024.));
+ exit(3);
+ }
+ pn = 0;
+ for (i = 0; i < niter; i++) {
+ delta = gauss(sd, 0.0);
+ while (pn + delta < 0 || pn + delta > npages)
+ delta = gauss(sd, 0.0);
+ pn += delta;
+ if (debug)
+ printf("touch page %d\n", pn);
+ else
+ pages[pn * pagesize] = 1;
+ }
+}
+
+float
+gauss(sd, mean)
+ float sd, mean;
+{
+ register float qa, qb;
+
+ qa = sqrt(log(rnd()) * -2.0);
+ qb = 3.14159 * rnd();
+ return (qa * cos(qb) * sd + mean);
+}
+
+float
+rnd()
+{
+ static int seed = 1;
+ static int biggest = 0x7fffffff;
+
+ return ((float)rand(seed) / (float)biggest);
+}
+.vE
diff --git a/share/doc/papers/sysperf/a2.t b/share/doc/papers/sysperf/a2.t
new file mode 100644
index 0000000..e1882cf
--- /dev/null
+++ b/share/doc/papers/sysperf/a2.t
@@ -0,0 +1,117 @@
+.\" Copyright (c) 1985 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)a2.t 5.1 (Berkeley) 4/17/91
+.\"
+.SH
+run (shell script)
+.LP
+.vS
+#! /bin/csh -fx
+# Script to run benchmark programs.
+#
+date
+make clean; time make
+time syscall 100000
+time seqpage -p 7500 10
+time seqpage -v -p 7500 10
+time randpage -p 7500 30000
+time randpage -v -p 7500 30000
+time gausspage -p 7500 -s 1 30000
+time gausspage -p 7500 -s 10 30000
+time gausspage -p 7500 -s 30 30000
+time gausspage -p 7500 -s 40 30000
+time gausspage -p 7500 -s 50 30000
+time gausspage -p 7500 -s 60 30000
+time gausspage -p 7500 -s 80 30000
+time gausspage -p 7500 -s 10000 30000
+time csw 10000
+time signocsw 10000
+time pipeself 10000 512
+time pipeself 10000 4
+time udgself 10000 512
+time udgself 10000 4
+time pipediscard 10000 512
+time pipediscard 10000 4
+time udgdiscard 10000 512
+time udgdiscard 10000 4
+time pipeback 10000 512
+time pipeback 10000 4
+time udgback 10000 512
+time udgback 10000 4
+size forks
+time forks 1000 0
+time forks 1000 1024
+time forks 1000 102400
+size vforks
+time vforks 1000 0
+time vforks 1000 1024
+time vforks 1000 102400
+countenv
+size nulljob
+time execs 1000 0 nulljob
+time execs 1000 1024 nulljob
+time execs 1000 102400 nulljob
+time vexecs 1000 0 nulljob
+time vexecs 1000 1024 nulljob
+time vexecs 1000 102400 nulljob
+size bigjob
+time execs 1000 0 bigjob
+time execs 1000 1024 bigjob
+time execs 1000 102400 bigjob
+time vexecs 1000 0 bigjob
+time vexecs 1000 1024 bigjob
+time vexecs 1000 102400 bigjob
+# fill environment with ~1024 bytes
+setenv a 012345678901234567890123456789012345678901234567890123456780123456789
+setenv b 012345678901234567890123456789012345678901234567890123456780123456789
+setenv c 012345678901234567890123456789012345678901234567890123456780123456789
+setenv d 012345678901234567890123456789012345678901234567890123456780123456789
+setenv e 012345678901234567890123456789012345678901234567890123456780123456789
+setenv f 012345678901234567890123456789012345678901234567890123456780123456789
+setenv g 012345678901234567890123456789012345678901234567890123456780123456789
+setenv h 012345678901234567890123456789012345678901234567890123456780123456789
+setenv i 012345678901234567890123456789012345678901234567890123456780123456789
+setenv j 012345678901234567890123456789012345678901234567890123456780123456789
+setenv k 012345678901234567890123456789012345678901234567890123456780123456789
+setenv l 012345678901234567890123456789012345678901234567890123456780123456789
+setenv m 012345678901234567890123456789012345678901234567890123456780123456789
+setenv n 012345678901234567890123456789012345678901234567890123456780123456789
+setenv o 012345678901234567890123456789012345678901234567890123456780123456789
+countenv
+time execs 1000 0 nulljob
+time execs 1000 1024 nulljob
+time execs 1000 102400 nulljob
+time execs 1000 0 bigjob
+time execs 1000 1024 bigjob
+time execs 1000 102400 bigjob
+.vE
+.bp
diff --git a/share/doc/papers/timecounter/Makefile b/share/doc/papers/timecounter/Makefile
new file mode 100644
index 0000000..f6d158b
--- /dev/null
+++ b/share/doc/papers/timecounter/Makefile
@@ -0,0 +1,20 @@
+# $FreeBSD$
+
+# You really want:
+# PRINTERDEVICE=ps
+# or you will not get the illustration.
+VOLUME= papers
+DOC= timecounter
+SRCS= tmac.usenix timecounter.ms-patched
+EXTRA= fig1.eps fig2.eps fig3.eps fig4.eps fig5.eps gps.ps intr.ps
+MACROS= -ms
+CLEANFILES= timecounter.ms-patched
+USE_PIC=
+USE_EQN=
+USE_TBL=
+
+timecounter.ms-patched: timecounter.ms
+ sed -E -e 's;(gps|intr).ps;${.CURDIR}/&;' -e 's;fig[0-9].eps;${.CURDIR}/&;' \
+ ${.ALLSRC} > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/papers/timecounter/fig1.eps b/share/doc/papers/timecounter/fig1.eps
new file mode 100644
index 0000000..012fed2
--- /dev/null
+++ b/share/doc/papers/timecounter/fig1.eps
@@ -0,0 +1,227 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: fig1.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: $FreeBSD$
+%%For: phk@critter.freebsd.dk (Poul-Henning Kamp)
+%%BoundingBox: 0 0 191 194
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 194 moveto 0 0 lineto 191 0 lineto 191 194 lineto closepath clip newpath
+-7.6 201.2 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+/Times-Roman ff 180.00 scf sf
+750 3300 m
+gs 1 -1 sc (Imprecise) dup sw pop 2 div neg 0 rm col0 sh gr
+15.000 slw
+% Ellipse
+n 750 750 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 750 750 450 450 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 750 750 600 600 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 750 2250 150 150 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 750 2250 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 750 2250 450 450 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 750 2250 600 600 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 2250 150 150 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 2250 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 2250 450 450 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 2250 600 600 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 750 150 150 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 750 300 300 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 750 450 450 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2250 750 600 600 0 360 DrawEllipse gs col0 s gr
+
+% Ellipse
+n 2280 2197 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2152 2212 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2145 2332 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2265 2325 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2370 2295 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 292 2002 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 367 1905 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 390 2040 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 180 1950 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 1965 472 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2355 517 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2505 870 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 907 1170 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 1282 1305 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 975 825 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2071 1074 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2550 600 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 1350 675 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 1350 1050 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 225 2100 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+/Times-Roman ff 180.00 scf sf
+3300 750 m
+gs 1 -1 sc 90.0 rot (Unstable) dup sw pop 2 div neg 0 rm col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3300 2250 m
+gs 1 -1 sc 90.0 rot (Stable) dup sw pop 2 div neg 0 rm col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 3300 m
+gs 1 -1 sc (Precise) dup sw pop 2 div neg 0 rm col0 sh gr
+% Ellipse
+n 750 750 150 150 0 360 DrawEllipse gs col0 s gr
+
+$F2psEnd
+rs
diff --git a/share/doc/papers/timecounter/fig2.eps b/share/doc/papers/timecounter/fig2.eps
new file mode 100644
index 0000000..6771435
--- /dev/null
+++ b/share/doc/papers/timecounter/fig2.eps
@@ -0,0 +1,150 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: fig2.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: $FreeBSD$
+%%For: phk@critter.freebsd.dk (Poul-Henning Kamp)
+%%BoundingBox: 0 0 191 194
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 194 moveto 0 0 lineto 191 0 lineto 191 194 lineto closepath clip newpath
+-7.7 201.2 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+/Times-Roman ff 180.00 scf sf
+750 3300 m
+gs 1 -1 sc (Imprecise) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+15.000 slw
+n 150 750 m
+ 1350 750 l gs 0.00 setgray ef gr gs col0 s gr
+% Polyline
+n 1650 150 m
+ 1650 1350 l gs 0.00 setgray ef gr gs col0 s gr
+% Polyline
+n 1650 750 m
+ 2850 750 l gs 0.00 setgray ef gr gs col0 s gr
+% Polyline
+n 1650 1650 m
+ 1650 2850 l gs 0.00 setgray ef gr gs col0 s gr
+% Polyline
+n 1650 2250 m
+ 2850 2250 l gs 0.00 setgray ef gr gs col0 s gr
+% Polyline
+n 150 1650 m
+ 150 2850 l gs 0.00 setgray ef gr gs col0 s gr
+% Polyline
+n 150 2250 m
+ 1350 2250 l gs 0.00 setgray ef gr gs col0 s gr
+% Polyline
+n 1665 2205 m 1792 2182 l 1942 2220 l 2100 2295 l 2257 2212 l 2392 2205 l
+ 2460 2280 l 2520 2295 l 2617 2197 l
+ 2850 2212 l gs col0 s gr
+% Polyline
+n 165 2565 m 360 2490 l 487 2362 l 615 2347 l 705 2250 l 825 2212 l
+ 915 2130 l 1057 2085 l 1155 1980 l 1237 1972 l 1297 1920 l
+
+ 1342 1897 l gs col0 s gr
+% Polyline
+n 1657 465 m 1770 637 l 1927 705 l 2002 1020 l 2107 862 l 2190 525 l
+ 2227 652 l 2272 555 l 2362 982 l 2475 1147 l 2512 832 l
+ 2557 427 l 2587 502 l 2647 277 l 2677 630 l 2775 967 l
+
+ 2850 525 l gs col0 s gr
+% Polyline
+n 150 232 m 352 307 l 375 637 l 562 577 l 622 982 l 690 622 l
+ 780 870 l 885 622 l 945 1207 l 1035 952 l 1080 1140 l
+ 1140 1080 l 1192 1372 l
+ 1350 1185 l gs col0 s gr
+/Times-Roman ff 180.00 scf sf
+3300 750 m
+gs 1 -1 sc 90.0 rot (Unstable) dup sw pop 2 div neg 0 rm col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3300 2250 m
+gs 1 -1 sc 90.0 rot (Stable) dup sw pop 2 div neg 0 rm col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 3300 m
+gs 1 -1 sc (Precise) dup sw pop 2 div neg 0 rm col0 sh gr
+% Polyline
+n 150 150 m
+ 150 1350 l gs 0.00 setgray ef gr gs col0 s gr
+$F2psEnd
+rs
diff --git a/share/doc/papers/timecounter/fig3.eps b/share/doc/papers/timecounter/fig3.eps
new file mode 100644
index 0000000..9972823
--- /dev/null
+++ b/share/doc/papers/timecounter/fig3.eps
@@ -0,0 +1,126 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: fig3.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: $FreeBSD$
+%%For: phk@critter.freebsd.dk (Poul-Henning Kamp)
+%%BoundingBox: 0 0 181 56
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 56 moveto 0 0 lineto 181 0 lineto 181 56 lineto closepath clip newpath
+-16.7 81.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+7.500 slw
+gs clippath
+1740 780 m 1740 720 l 1588 720 l 1708 750 l 1588 780 l cp
+eoclip
+n 1200 750 m
+ 1725 750 l gs col0 s gr gr
+
+% arrowhead
+n 1588 780 m 1708 750 l 1588 720 l col0 s
+% Arc
+n 900.0 750.0 150.0 180.0 0.0 arcn
+gs col0 s gr
+
+% Polyline
+15.000 slw
+n 300 450 m 1200 450 l 1200 1050 l 300 1050 l
+ cp gs col0 s gr
+% Arc
+7.500 slw
+n 600.0 750.0 150.0 180.0 0.0 arc
+gs col0 s gr
+
+% Polyline
+15.000 slw
+n 1725 600 m 3225 600 l 3225 900 l 1725 900 l
+ cp gs col0 s gr
+/Times-Roman ff 180.00 scf sf
+1725 1350 m
+gs 1 -1 sc (Oscillator + Counter = Clock) dup sw pop 2 div neg 0 rm col0 sh gr
+/Helvetica-Bold ff 180.00 scf sf
+2475 825 m
+gs 1 -1 sc (1 0 3 7 5 4 2 5 0 0) dup sw pop 2 div neg 0 rm col0 sh gr
+$F2psEnd
+rs
diff --git a/share/doc/papers/timecounter/fig4.eps b/share/doc/papers/timecounter/fig4.eps
new file mode 100644
index 0000000..7a5684f
--- /dev/null
+++ b/share/doc/papers/timecounter/fig4.eps
@@ -0,0 +1,259 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: fig4.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: $FreeBSD$
+%%For: phk@critter.freebsd.dk (Poul-Henning Kamp)
+%%BoundingBox: 0 0 119 203
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 203 moveto 0 0 lineto 119 0 lineto 119 203 lineto closepath clip newpath
+-8.3 207.7 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+/Times-Roman ff 180.00 scf sf
+300 450 m
+gs 1 -1 sc (*volatile timehands;) col0 sh gr
+% Polyline
+7.500 slw
+n 1005 750 m 900 750 900 1095 105 arcto 4 {pop} repeat
+ 900 1200 1245 1200 105 arcto 4 {pop} repeat
+ 1350 1200 1350 855 105 arcto 4 {pop} repeat
+ 1350 750 1005 750 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 1755 750 m 1650 750 1650 1095 105 arcto 4 {pop} repeat
+ 1650 1200 1995 1200 105 arcto 4 {pop} repeat
+ 2100 1200 2100 855 105 arcto 4 {pop} repeat
+ 2100 750 1755 750 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 1755 1500 m 1650 1500 1650 1845 105 arcto 4 {pop} repeat
+ 1650 1950 1995 1950 105 arcto 4 {pop} repeat
+ 2100 1950 2100 1605 105 arcto 4 {pop} repeat
+ 2100 1500 1755 1500 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 1755 2250 m 1650 2250 1650 2595 105 arcto 4 {pop} repeat
+ 1650 2700 1995 2700 105 arcto 4 {pop} repeat
+ 2100 2700 2100 2355 105 arcto 4 {pop} repeat
+ 2100 2250 1755 2250 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 1755 3000 m 1650 3000 1650 3345 105 arcto 4 {pop} repeat
+ 1650 3450 1995 3450 105 arcto 4 {pop} repeat
+ 2100 3450 2100 3105 105 arcto 4 {pop} repeat
+ 2100 3000 1755 3000 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 1005 3000 m 900 3000 900 3345 105 arcto 4 {pop} repeat
+ 900 3450 1245 3450 105 arcto 4 {pop} repeat
+ 1350 3450 1350 3105 105 arcto 4 {pop} repeat
+ 1350 3000 1005 3000 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 255 3000 m 150 3000 150 3345 105 arcto 4 {pop} repeat
+ 150 3450 495 3450 105 arcto 4 {pop} repeat
+ 600 3450 600 3105 105 arcto 4 {pop} repeat
+ 600 3000 255 3000 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 255 2250 m 150 2250 150 2595 105 arcto 4 {pop} repeat
+ 150 2700 495 2700 105 arcto 4 {pop} repeat
+ 600 2700 600 2355 105 arcto 4 {pop} repeat
+ 600 2250 255 2250 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+n 255 1500 m 150 1500 150 1845 105 arcto 4 {pop} repeat
+ 150 1950 495 1950 105 arcto 4 {pop} repeat
+ 600 1950 600 1605 105 arcto 4 {pop} repeat
+ 600 1500 255 1500 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+% Polyline
+gs clippath
+915 1005 m 915 945 l 763 945 l 883 975 l 763 1005 l cp
+eoclip
+n 600 975 m
+ 900 975 l gs col0 s gr gr
+
+% arrowhead
+n 763 1005 m 883 975 l 763 945 l col0 s
+% Polyline
+gs clippath
+1665 1005 m 1665 945 l 1513 945 l 1633 975 l 1513 1005 l cp
+eoclip
+n 1350 975 m
+ 1650 975 l gs col0 s gr gr
+
+% arrowhead
+n 1513 1005 m 1633 975 l 1513 945 l col0 s
+% Polyline
+gs clippath
+1845 1515 m 1905 1515 l 1905 1363 l 1875 1483 l 1845 1363 l cp
+eoclip
+n 1875 1200 m
+ 1875 1500 l gs col0 s gr gr
+
+% arrowhead
+n 1845 1363 m 1875 1483 l 1905 1363 l col0 s
+% Polyline
+gs clippath
+1845 2265 m 1905 2265 l 1905 2113 l 1875 2233 l 1845 2113 l cp
+eoclip
+n 1875 1950 m
+ 1875 2250 l gs col0 s gr gr
+
+% arrowhead
+n 1845 2113 m 1875 2233 l 1905 2113 l col0 s
+% Polyline
+gs clippath
+1845 3015 m 1905 3015 l 1905 2863 l 1875 2983 l 1845 2863 l cp
+eoclip
+n 1875 2700 m
+ 1875 3000 l gs col0 s gr gr
+
+% arrowhead
+n 1845 2863 m 1875 2983 l 1905 2863 l col0 s
+% Polyline
+gs clippath
+1335 3195 m 1335 3255 l 1487 3255 l 1367 3225 l 1487 3195 l cp
+eoclip
+n 1650 3225 m
+ 1350 3225 l gs col0 s gr gr
+
+% arrowhead
+n 1487 3195 m 1367 3225 l 1487 3255 l col0 s
+% Polyline
+gs clippath
+585 3195 m 585 3255 l 737 3255 l 617 3225 l 737 3195 l cp
+eoclip
+n 900 3225 m
+ 600 3225 l gs col0 s gr gr
+
+% arrowhead
+n 737 3195 m 617 3225 l 737 3255 l col0 s
+% Polyline
+gs clippath
+405 2685 m 345 2685 l 345 2837 l 375 2717 l 405 2837 l cp
+eoclip
+n 375 3000 m
+ 375 2700 l gs col0 s gr gr
+
+% arrowhead
+n 405 2837 m 375 2717 l 345 2837 l col0 s
+% Polyline
+gs clippath
+405 1935 m 345 1935 l 345 2087 l 375 1967 l 405 2087 l cp
+eoclip
+n 375 2250 m
+ 375 1950 l gs col0 s gr gr
+
+% arrowhead
+n 405 2087 m 375 1967 l 345 2087 l col0 s
+% Polyline
+gs clippath
+405 1185 m 345 1185 l 345 1337 l 375 1217 l 405 1337 l cp
+eoclip
+n 375 1500 m
+ 375 1200 l gs col0 s gr gr
+
+% arrowhead
+n 405 1337 m 375 1217 l 345 1337 l col0 s
+% Polyline
+gs clippath
+1845 765 m 1905 765 l 1905 613 l 1875 733 l 1845 613 l cp
+eoclip
+n 1800 375 m 1875 375 l
+ 1875 750 l gs col0 s gr gr
+
+% arrowhead
+n 1845 613 m 1875 733 l 1905 613 l col0 s
+/Times-Roman ff 180.00 scf sf
+150 225 m
+gs 1 -1 sc (struct timehands) col0 sh gr
+% Polyline
+n 255 750 m 150 750 150 1095 105 arcto 4 {pop} repeat
+ 150 1200 495 1200 105 arcto 4 {pop} repeat
+ 600 1200 600 855 105 arcto 4 {pop} repeat
+ 600 750 255 750 105 arcto 4 {pop} repeat
+ cp gs col0 s gr
+$F2psEnd
+rs
diff --git a/share/doc/papers/timecounter/fig5.eps b/share/doc/papers/timecounter/fig5.eps
new file mode 100644
index 0000000..b6274c1
--- /dev/null
+++ b/share/doc/papers/timecounter/fig5.eps
@@ -0,0 +1,211 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: fig5.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: $FreeBSD$
+%%For: phk@critter.freebsd.dk (Poul-Henning Kamp)
+%%BoundingBox: 0 0 140 225
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 225 moveto 0 0 lineto 140 0 lineto 140 225 lineto closepath clip newpath
+-7.7 234.7 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+/Times-Roman ff 180.00 scf sf
+1950 600 m
+gs 1 -1 sc (PPS#1) col0 sh gr
+% Polyline
+7.500 slw
+gs clippath
+915 2130 m 915 2070 l 763 2070 l 883 2100 l 763 2130 l cp
+eoclip
+n 600 2100 m
+ 900 2100 l gs col0 s gr gr
+
+% arrowhead
+n 763 2130 m 883 2100 l 763 2070 l col0 s
+% Polyline
+gs clippath
+1665 2130 m 1665 2070 l 1513 2070 l 1633 2100 l 1513 2130 l cp
+eoclip
+n 1350 2100 m
+ 1650 2100 l gs col0 s gr gr
+
+% arrowhead
+n 1513 2130 m 1633 2100 l 1513 2070 l col0 s
+% Polyline
+15.000 slw
+n 900 1050 m 1350 1050 l 1350 3000 l 900 3000 l
+ cp gs col0 s gr
+% Polyline
+n 1650 1050 m 2100 1050 l 2100 3000 l 1650 3000 l
+ cp gs col0 s gr
+% Polyline
+7.500 slw
+gs clippath
+345 3465 m 405 3465 l 405 3313 l 375 3433 l 345 3313 l cp
+eoclip
+n 375 3000 m
+ 375 3450 l gs col0 s gr gr
+
+% arrowhead
+n 345 3313 m 375 3433 l 405 3313 l col0 s
+% Polyline
+gs clippath
+1095 3465 m 1155 3465 l 1155 3313 l 1125 3433 l 1095 3313 l cp
+eoclip
+n 1125 3000 m
+ 1125 3450 l gs col0 s gr gr
+
+% arrowhead
+n 1095 3313 m 1125 3433 l 1155 3313 l col0 s
+% Polyline
+gs clippath
+1845 3465 m 1905 3465 l 1905 3313 l 1875 3433 l 1845 3313 l cp
+eoclip
+n 1875 3000 m
+ 1875 3450 l gs col0 s gr gr
+
+% arrowhead
+n 1845 3313 m 1875 3433 l 1905 3313 l col0 s
+% Polyline
+gs clippath
+2070 3915 m 2130 3915 l 2130 3763 l 2100 3883 l 2070 3763 l cp
+eoclip
+n 150 3450 m 2100 3450 l
+ 2100 3900 l gs col0 s gr gr
+
+% arrowhead
+n 2070 3763 m 2100 3883 l 2130 3763 l col0 s
+% Polyline
+gs clippath
+1845 1065 m 1905 1065 l 1905 913 l 1875 1033 l 1845 913 l cp
+eoclip
+n 1875 600 m
+ 1875 1050 l gs col0 s gr gr
+
+% arrowhead
+n 1845 913 m 1875 1033 l 1905 913 l col0 s
+% Polyline
+gs clippath
+1095 1065 m 1155 1065 l 1155 913 l 1125 1033 l 1095 913 l cp
+eoclip
+n 1125 450 m
+ 1125 1050 l gs col0 s gr gr
+
+% arrowhead
+n 1095 913 m 1125 1033 l 1155 913 l col0 s
+% Polyline
+gs clippath
+345 1065 m 405 1065 l 405 913 l 375 1033 l 345 913 l cp
+eoclip
+n 375 300 m
+ 375 1050 l gs col0 s gr gr
+
+% arrowhead
+n 345 913 m 375 1033 l 405 913 l col0 s
+/Times-Roman ff 180.00 scf sf
+450 2850 m
+gs 1 -1 sc 90.0 rot (26 bit binary counter.) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 2025 m
+gs 1 -1 sc (...) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1200 2850 m
+gs 1 -1 sc 90.0 rot (26 bit latch) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1950 2850 m
+gs 1 -1 sc 90.0 rot (26 bit latch) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+450 3675 m
+gs 1 -1 sc (PCI system bus) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+450 300 m
+gs 1 -1 sc (Clock) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1200 450 m
+gs 1 -1 sc (PPS#0) col0 sh gr
+% Polyline
+15.000 slw
+n 150 1050 m 600 1050 l 600 3000 l 150 3000 l
+ cp gs col0 s gr
+$F2psEnd
+rs
diff --git a/share/doc/papers/timecounter/gps.ps b/share/doc/papers/timecounter/gps.ps
new file mode 100644
index 0000000..aaaae81
--- /dev/null
+++ b/share/doc/papers/timecounter/gps.ps
@@ -0,0 +1,1488 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: _.ps
+%%Creator: gnuplot 3.7 patchlevel 1
+%%CreationDate: $FreeBSD$
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 266 201
+%%Orientation: Portrait
+%%EndComments
+/gnudict 256 dict def
+gnudict begin
+/Color false def
+/Solid false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/vshift -46 def
+/dl {10 mul} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow { currentpoint stroke M
+ 0 vshift R show } def
+/Rshow { currentpoint stroke M
+ dup stringwidth pop neg vshift R show } def
+/Cshow { currentpoint stroke M
+ dup stringwidth pop -2 div vshift R show } def
+/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+ /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def
+/DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
+ {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
+/BL { stroke userlinewidth 2 mul setlinewidth } def
+/AL { stroke userlinewidth 2 div setlinewidth } def
+/UL { dup gnulinewidth mul /userlinewidth exch def
+ 10 mul /udl exch def } def
+/PL { stroke userlinewidth setlinewidth } def
+/LTb { BL [] 0 0 0 DL } def
+/LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def
+/LT0 { PL [] 1 0 0 DL } def
+/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def
+/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def
+/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
+/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
+/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
+/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
+/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
+/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
+/Pnt { stroke [] 0 setdash
+ gsave 1 setlinecap M 0 0 V stroke grestore } def
+/Dia { stroke [] 0 setdash 2 copy vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath stroke
+ Pnt } def
+/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V
+ currentpoint stroke M
+ hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath stroke
+ Pnt } def
+/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M
+ hpt2 vpt2 neg V currentpoint stroke M
+ hpt2 neg 0 R hpt2 vpt2 V stroke } def
+/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath stroke
+ Pnt } def
+/Star { 2 copy Pls Crs } def
+/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath fill } def
+/TriUF { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath fill } def
+/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath stroke
+ Pnt } def
+/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath fill } def
+/Pent { stroke [] 0 setdash 2 copy gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath stroke grestore Pnt } def
+/PentF { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath fill grestore } def
+/Circle { stroke [] 0 setdash 2 copy
+ hpt 0 360 arc stroke Pnt } def
+/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def
+/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def
+/C1 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C2 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C3 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C4 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 180 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C5 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc
+ 2 copy moveto
+ 2 copy vpt 180 270 arc closepath fill
+ vpt 0 360 arc } bind def
+/C6 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C7 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C8 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 270 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C9 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 270 450 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 90 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C11 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 180 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 270 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C12 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 180 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C13 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 180 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C14 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 360 arc closepath fill
+ vpt 0 360 arc } bind def
+/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } bind def
+/Square { dup Rec } bind def
+/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def
+/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def
+/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def
+/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
+/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def
+/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
+/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill
+ exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
+/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def
+/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+ 2 copy vpt Square fill
+ Bsquare } bind def
+/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def
+/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def
+/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+ Bsquare } bind def
+/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+ Bsquare } bind def
+/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def
+/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+ 2 copy vpt Square fill Bsquare } bind def
+/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+ 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
+/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def
+/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def
+/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def
+/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def
+/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def
+/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def
+/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def
+/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def
+/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def
+/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def
+/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def
+/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def
+/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def
+/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def
+/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def
+/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def
+/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def
+/DiaE { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath stroke } def
+/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath stroke } def
+/TriUE { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath stroke } def
+/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath stroke } def
+/PentE { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath stroke grestore } def
+/CircE { stroke [] 0 setdash
+ hpt 0 360 arc stroke } def
+/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
+/DiaW { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V Opaque stroke } def
+/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V Opaque stroke } def
+/TriUW { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V Opaque stroke } def
+/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V Opaque stroke } def
+/PentW { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ Opaque stroke grestore } def
+/CircW { stroke [] 0 setdash
+ hpt 0 360 arc Opaque stroke } def
+/BoxFill { gsave Rec 1 setgray fill grestore } def
+end
+%%EndProlog
+gnudict begin
+gsave
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTa
+630 420 M
+3452 0 V
+1.000 UL
+LTb
+630 420 M
+63 0 V
+3389 0 R
+-63 0 V
+546 420 M
+(-20) Rshow
+1.000 UL
+LTa
+630 826 M
+3452 0 V
+1.000 UL
+LTb
+630 826 M
+63 0 V
+3389 0 R
+-63 0 V
+546 826 M
+(-15) Rshow
+1.000 UL
+LTa
+630 1232 M
+3452 0 V
+1.000 UL
+LTb
+630 1232 M
+63 0 V
+3389 0 R
+-63 0 V
+-3473 0 R
+(-10) Rshow
+1.000 UL
+LTa
+630 1638 M
+3452 0 V
+1.000 UL
+LTb
+630 1638 M
+63 0 V
+3389 0 R
+-63 0 V
+-3473 0 R
+(-5) Rshow
+1.000 UL
+LTa
+630 2044 M
+3452 0 V
+1.000 UL
+LTb
+630 2044 M
+63 0 V
+3389 0 R
+-63 0 V
+-3473 0 R
+(0) Rshow
+1.000 UL
+LTa
+630 2450 M
+3452 0 V
+1.000 UL
+LTb
+630 2450 M
+63 0 V
+3389 0 R
+-63 0 V
+-3473 0 R
+(5) Rshow
+1.000 UL
+LTa
+630 2856 M
+3452 0 V
+1.000 UL
+LTb
+630 2856 M
+63 0 V
+3389 0 R
+-63 0 V
+-3473 0 R
+(10) Rshow
+1.000 UL
+LTa
+630 420 M
+0 2436 V
+1.000 UL
+LTb
+630 420 M
+0 63 V
+0 2373 R
+0 -63 V
+630 280 M
+(0) Cshow
+1.000 UL
+LTa
+975 420 M
+0 2436 V
+1.000 UL
+LTb
+975 420 M
+0 63 V
+0 2373 R
+0 -63 V
+975 280 M
+(100) Cshow
+1.000 UL
+LTa
+1320 420 M
+0 2436 V
+1.000 UL
+LTb
+1320 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(200) Cshow
+1.000 UL
+LTa
+1666 420 M
+0 2436 V
+1.000 UL
+LTb
+1666 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(300) Cshow
+1.000 UL
+LTa
+2011 420 M
+0 2436 V
+1.000 UL
+LTb
+2011 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(400) Cshow
+1.000 UL
+LTa
+2356 420 M
+0 2436 V
+1.000 UL
+LTb
+2356 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(500) Cshow
+1.000 UL
+LTa
+2701 420 M
+0 2436 V
+1.000 UL
+LTb
+2701 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(600) Cshow
+1.000 UL
+LTa
+3046 420 M
+0 2436 V
+1.000 UL
+LTb
+3046 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(700) Cshow
+1.000 UL
+LTa
+3392 420 M
+0 2436 V
+1.000 UL
+LTb
+3392 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(800) Cshow
+1.000 UL
+LTa
+3737 420 M
+0 2373 V
+0 63 V
+1.000 UL
+LTb
+3737 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(900) Cshow
+1.000 UL
+LTa
+4082 420 M
+0 2436 V
+1.000 UL
+LTb
+4082 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(1000) Cshow
+1.000 UL
+LTb
+630 420 M
+3452 0 V
+0 2436 V
+-3452 0 V
+630 420 L
+140 1638 M
+currentpoint gsave translate 90 rotate 0 0 M
+(nanoseconds) Cshow
+grestore
+2356 70 M
+(seconds) Cshow
+1.000 UL
+LT0
+631 2125 M
+3 -81 V
+4 0 V
+3 -162 V
+4 0 V
+3 162 V
+3 0 V
+4 0 V
+3 -244 V
+4 0 V
+3 244 V
+4 -162 V
+3 0 V
+4 -163 V
+3 0 V
+4 163 V
+3 -163 V
+3 0 V
+4 731 V
+3 -812 V
+4 162 V
+3 650 V
+4 -812 V
+3 731 V
+4 81 V
+3 -731 V
+4 650 V
+3 -812 V
+3 731 V
+4 81 V
+3 -731 V
+4 650 V
+3 0 V
+4 -82 V
+3 82 V
+4 81 V
+3 -81 V
+4 0 V
+3 -163 V
+3 81 V
+4 82 V
+3 -163 V
+4 0 V
+3 -81 V
+4 81 V
+3 81 V
+4 -81 V
+3 0 V
+3 -81 V
+4 0 V
+3 81 V
+4 -81 V
+3 0 V
+4 -162 V
+3 162 V
+4 568 V
+3 -568 V
+4 0 V
+3 568 V
+3 -730 V
+4 568 V
+3 -568 V
+4 0 V
+3 649 V
+4 -731 V
+3 569 V
+4 162 V
+3 -812 V
+4 731 V
+3 81 V
+3 -243 V
+4 162 V
+3 -731 V
+4 569 V
+3 81 V
+4 -244 V
+3 163 V
+4 -731 V
+3 568 V
+3 0 V
+4 -243 V
+3 162 V
+4 0 V
+3 -244 V
+4 82 V
+3 -244 V
+4 162 V
+3 82 V
+4 -244 V
+3 81 V
+3 -243 V
+4 243 V
+3 81 V
+4 -243 V
+3 81 V
+4 -162 V
+3 162 V
+4 81 V
+3 -243 V
+4 81 V
+3 -163 V
+3 163 V
+4 81 V
+3 -162 V
+4 81 V
+3 -244 V
+4 163 V
+3 162 V
+4 -244 V
+3 82 V
+3 -163 V
+4 81 V
+3 163 V
+4 -244 V
+3 81 V
+4 -162 V
+3 81 V
+4 81 V
+3 -162 V
+4 0 V
+3 -81 V
+3 81 V
+4 81 V
+3 -81 V
+4 0 V
+3 650 V
+4 -569 V
+3 0 V
+4 -162 V
+3 162 V
+4 569 V
+3 -731 V
+3 162 V
+4 -162 V
+3 81 V
+4 812 V
+3 0 V
+4 -731 V
+3 731 V
+4 -893 V
+3 731 V
+4 0 V
+3 -650 V
+3 812 V
+4 0 V
+3 -244 V
+4 82 V
+3 162 V
+4 -244 V
+3 82 V
+4 -244 V
+3 81 V
+3 163 V
+4 -163 V
+3 81 V
+4 -162 V
+3 0 V
+4 244 V
+3 -244 V
+4 81 V
+3 -162 V
+4 81 V
+3 162 V
+3 -243 V
+4 162 V
+3 -162 V
+4 0 V
+3 162 V
+4 -162 V
+3 81 V
+4 650 V
+3 -812 V
+4 162 V
+3 650 V
+3 -731 V
+4 649 V
+3 -812 V
+4 731 V
+3 163 V
+4 -812 V
+3 649 V
+4 0 V
+3 -81 V
+4 162 V
+3 -812 V
+3 650 V
+4 81 V
+3 -243 V
+4 162 V
+3 -812 V
+4 650 V
+3 162 V
+4 -325 V
+3 81 V
+4 0 V
+3 -81 V
+3 81 V
+4 -243 V
+3 162 V
+4 0 V
+3 -81 V
+4 81 V
+3 -162 V
+4 162 V
+3 81 V
+3 -162 V
+4 81 V
+3 -243 V
+4 243 V
+3 81 V
+4 -243 V
+3 81 V
+4 -162 V
+3 162 V
+4 0 V
+3 -244 V
+3 82 V
+4 -82 V
+3 82 V
+4 81 V
+3 -163 V
+4 0 V
+3 -81 V
+4 81 V
+3 82 V
+4 -163 V
+3 0 V
+3 -162 V
+4 162 V
+3 0 V
+4 -81 V
+3 0 V
+4 650 V
+3 -569 V
+4 0 V
+3 -162 V
+3 81 V
+4 650 V
+3 -731 V
+4 162 V
+3 569 V
+4 -650 V
+3 650 V
+4 0 V
+3 -569 V
+3 569 V
+4 162 V
+3 -162 V
+4 0 V
+3 162 V
+4 0 V
+3 0 V
+4 -162 V
+3 162 V
+4 0 V
+3 0 V
+3 0 V
+4 -162 V
+3 162 V
+4 0 V
+3 0 V
+4 0 V
+3 -244 V
+4 244 V
+3 0 V
+4 -162 V
+3 162 V
+3 -162 V
+4 162 V
+3 -325 V
+4 325 V
+3 0 V
+4 -162 V
+3 162 V
+4 -244 V
+3 244 V
+4 0 V
+3 -162 V
+3 162 V
+4 -244 V
+3 244 V
+4 0 V
+3 -162 V
+4 162 V
+3 -325 V
+4 163 V
+3 162 V
+4 -244 V
+3 82 V
+3 568 V
+4 -650 V
+3 82 V
+4 649 V
+3 -731 V
+4 569 V
+3 162 V
+4 -649 V
+3 568 V
+3 -731 V
+4 569 V
+3 162 V
+4 -650 V
+3 569 V
+4 81 V
+3 -162 V
+4 81 V
+3 -650 V
+4 650 V
+3 81 V
+3 -162 V
+4 0 V
+3 243 V
+4 -243 V
+3 162 V
+4 -162 V
+3 0 V
+4 243 V
+3 -243 V
+4 81 V
+3 -81 V
+3 0 V
+4 162 V
+3 -162 V
+4 81 V
+3 -163 V
+4 0 V
+3 244 V
+4 -244 V
+3 82 V
+3 -82 V
+4 0 V
+3 163 V
+4 -244 V
+3 163 V
+4 -163 V
+3 0 V
+4 -81 V
+3 81 V
+4 81 V
+3 -81 V
+3 0 V
+4 -81 V
+3 0 V
+4 81 V
+3 -81 V
+4 -162 V
+3 -163 V
+4 81 V
+3 82 V
+4 -244 V
+3 0 V
+3 -162 V
+4 81 V
+3 81 V
+4 -81 V
+3 0 V
+4 649 V
+3 -649 V
+4 0 V
+3 -81 V
+3 0 V
+4 649 V
+3 -649 V
+4 0 V
+3 730 V
+4 -812 V
+3 650 V
+4 244 V
+3 -812 V
+4 649 V
+3 -812 V
+3 731 V
+4 81 V
+3 -731 V
+4 650 V
+3 81 V
+4 -243 V
+3 162 V
+4 0 V
+3 -162 V
+4 162 V
+3 -244 V
+3 244 V
+4 0 V
+3 -244 V
+4 82 V
+3 -244 V
+4 162 V
+3 82 V
+4 -163 V
+3 81 V
+4 -243 V
+3 243 V
+3 82 V
+4 -244 V
+3 81 V
+4 -162 V
+3 162 V
+4 81 V
+3 569 V
+currentpoint stroke M
+4 -731 V
+3 731 V
+3 81 V
+4 -731 V
+3 650 V
+4 -731 V
+3 650 V
+4 0 V
+3 -650 V
+4 568 V
+3 163 V
+4 -163 V
+3 0 V
+3 163 V
+4 -81 V
+3 -82 V
+4 -81 V
+3 81 V
+4 82 V
+3 -163 V
+4 0 V
+3 -81 V
+4 81 V
+3 81 V
+3 -162 V
+4 0 V
+3 0 V
+4 0 V
+3 81 V
+4 -81 V
+3 0 V
+4 -162 V
+3 162 V
+4 0 V
+3 -162 V
+3 0 V
+4 -163 V
+3 81 V
+4 82 V
+3 -82 V
+4 0 V
+3 650 V
+4 -731 V
+3 163 V
+3 649 V
+4 -812 V
+3 650 V
+4 81 V
+3 -650 V
+4 650 V
+3 -812 V
+4 650 V
+3 81 V
+4 -731 V
+3 650 V
+3 81 V
+4 -163 V
+3 82 V
+4 81 V
+3 -163 V
+4 82 V
+3 -163 V
+4 81 V
+3 -162 V
+4 81 V
+3 163 V
+3 -244 V
+4 81 V
+3 -81 V
+4 0 V
+3 81 V
+4 -81 V
+3 0 V
+4 -244 V
+3 244 V
+3 0 V
+4 -162 V
+3 0 V
+4 649 V
+3 -731 V
+4 82 V
+3 649 V
+4 -812 V
+3 650 V
+4 81 V
+3 -731 V
+3 650 V
+4 81 V
+3 -162 V
+4 81 V
+3 -731 V
+4 650 V
+3 0 V
+4 -163 V
+3 163 V
+4 81 V
+3 -163 V
+3 0 V
+4 -162 V
+3 81 V
+4 81 V
+3 -81 V
+4 0 V
+3 -81 V
+4 81 V
+3 0 V
+3 -81 V
+4 0 V
+3 -244 V
+4 244 V
+3 0 V
+4 -244 V
+3 0 V
+4 650 V
+3 -650 V
+4 0 V
+3 731 V
+3 -812 V
+4 650 V
+3 162 V
+4 -812 V
+3 650 V
+4 -812 V
+3 731 V
+4 162 V
+3 0 V
+4 -162 V
+3 0 V
+3 -82 V
+4 163 V
+3 0 V
+4 -163 V
+3 0 V
+4 -81 V
+3 163 V
+4 0 V
+3 -163 V
+4 0 V
+3 -81 V
+3 81 V
+4 81 V
+3 -162 V
+4 81 V
+3 -81 V
+4 0 V
+3 81 V
+4 -81 V
+3 0 V
+4 650 V
+3 0 V
+3 -650 V
+4 650 V
+3 -650 V
+4 568 V
+3 0 V
+4 -568 V
+3 650 V
+4 0 V
+3 -163 V
+3 0 V
+4 163 V
+3 -163 V
+4 0 V
+3 -81 V
+4 0 V
+3 162 V
+4 -162 V
+3 0 V
+4 -81 V
+3 0 V
+3 162 V
+4 -325 V
+3 82 V
+4 -163 V
+3 0 V
+4 163 V
+3 -244 V
+4 81 V
+3 -81 V
+4 0 V
+3 81 V
+3 569 V
+4 -650 V
+3 487 V
+4 81 V
+3 -568 V
+4 487 V
+3 -731 V
+4 650 V
+3 0 V
+3 -650 V
+4 569 V
+3 81 V
+4 -162 V
+3 0 V
+4 162 V
+3 -162 V
+4 0 V
+3 -82 V
+4 0 V
+3 163 V
+3 -244 V
+4 81 V
+3 -162 V
+4 0 V
+3 162 V
+4 -162 V
+3 0 V
+4 -162 V
+3 162 V
+4 81 V
+3 -243 V
+3 162 V
+4 487 V
+3 -731 V
+4 82 V
+3 730 V
+4 -730 V
+3 568 V
+4 81 V
+3 -731 V
+3 650 V
+4 81 V
+3 -162 V
+4 81 V
+3 81 V
+4 -162 V
+3 81 V
+4 -244 V
+3 82 V
+4 162 V
+3 -244 V
+3 82 V
+4 -244 V
+3 81 V
+4 163 V
+3 -163 V
+4 81 V
+3 -162 V
+4 0 V
+3 81 V
+4 -81 V
+3 0 V
+3 -244 V
+4 82 V
+3 162 V
+4 -162 V
+3 0 V
+4 730 V
+3 -730 V
+4 568 V
+3 162 V
+3 -812 V
+4 650 V
+3 162 V
+4 -243 V
+3 162 V
+4 -812 V
+3 650 V
+4 81 V
+3 -162 V
+4 81 V
+3 0 V
+3 -81 V
+4 81 V
+3 -244 V
+4 163 V
+3 81 V
+4 -163 V
+3 82 V
+4 -244 V
+3 162 V
+4 0 V
+3 -162 V
+3 0 V
+4 -244 V
+3 244 V
+4 0 V
+3 -325 V
+4 0 V
+3 -243 V
+4 162 V
+3 -81 V
+4 -81 V
+3 -82 V
+3 731 V
+4 -649 V
+3 0 V
+4 649 V
+3 -812 V
+4 731 V
+3 162 V
+4 -812 V
+3 731 V
+3 -812 V
+4 731 V
+3 162 V
+4 -812 V
+3 731 V
+4 0 V
+3 -81 V
+4 162 V
+3 -812 V
+4 650 V
+3 81 V
+3 -81 V
+4 81 V
+3 0 V
+4 -81 V
+3 81 V
+4 -243 V
+3 162 V
+4 162 V
+3 -162 V
+4 0 V
+3 -244 V
+3 244 V
+4 0 V
+3 -162 V
+4 162 V
+3 -244 V
+4 82 V
+3 162 V
+4 -325 V
+3 81 V
+3 -162 V
+4 81 V
+3 163 V
+4 -244 V
+3 162 V
+4 -162 V
+3 0 V
+4 244 V
+3 -244 V
+4 162 V
+3 -162 V
+3 0 V
+4 244 V
+3 -244 V
+4 81 V
+3 -81 V
+4 0 V
+3 162 V
+4 -81 V
+3 0 V
+4 -81 V
+3 81 V
+3 81 V
+4 -81 V
+3 0 V
+4 -81 V
+3 81 V
+4 163 V
+3 -163 V
+4 81 V
+3 -162 V
+3 81 V
+4 650 V
+3 -650 V
+4 81 V
+3 650 V
+4 -731 V
+3 731 V
+4 -731 V
+3 81 V
+4 569 V
+3 -650 V
+3 650 V
+4 -731 V
+3 162 V
+4 650 V
+3 -731 V
+4 650 V
+3 81 V
+4 -731 V
+3 731 V
+4 -812 V
+3 650 V
+3 243 V
+4 -812 V
+3 650 V
+4 0 V
+3 -81 V
+4 81 V
+3 81 V
+4 -162 V
+3 81 V
+4 -244 V
+3 163 V
+3 0 V
+4 -82 V
+3 82 V
+4 -244 V
+3 81 V
+4 0 V
+3 -81 V
+4 -162 V
+3 -244 V
+3 81 V
+4 -81 V
+currentpoint stroke M
+3 -406 V
+4 -325 V
+3 0 V
+4 325 V
+3 0 V
+4 -81 V
+3 0 V
+4 -81 V
+3 81 V
+3 0 V
+4 -163 V
+3 -81 V
+4 -162 V
+3 162 V
+4 0 V
+3 -81 V
+4 81 V
+3 -162 V
+4 162 V
+3 0 V
+3 -162 V
+4 81 V
+3 -162 V
+4 162 V
+3 81 V
+4 -243 V
+3 162 V
+4 -162 V
+3 162 V
+3 81 V
+4 -162 V
+3 81 V
+4 812 V
+3 -812 V
+4 244 V
+3 -163 V
+4 0 V
+3 731 V
+4 -731 V
+3 81 V
+3 731 V
+4 -731 V
+3 731 V
+4 0 V
+3 -649 V
+4 649 V
+3 -731 V
+4 731 V
+3 0 V
+4 -649 V
+3 649 V
+3 81 V
+4 -162 V
+3 162 V
+4 -730 V
+3 730 V
+4 82 V
+3 -163 V
+4 81 V
+3 -162 V
+3 162 V
+4 82 V
+3 -163 V
+4 81 V
+3 -162 V
+4 81 V
+3 81 V
+4 -81 V
+3 0 V
+4 -81 V
+3 162 V
+3 0 V
+4 -81 V
+3 0 V
+4 -162 V
+3 243 V
+4 0 V
+3 -81 V
+4 81 V
+3 -162 V
+4 162 V
+3 82 V
+3 -244 V
+4 81 V
+3 569 V
+4 -650 V
+3 81 V
+4 569 V
+3 -731 V
+4 731 V
+3 81 V
+4 -731 V
+3 650 V
+3 81 V
+4 -81 V
+3 0 V
+4 -650 V
+3 731 V
+4 0 V
+3 -163 V
+4 82 V
+3 162 V
+3 -81 V
+4 0 V
+3 -163 V
+4 82 V
+3 81 V
+4 -81 V
+3 0 V
+4 -163 V
+3 81 V
+4 82 V
+3 -163 V
+3 163 V
+4 -244 V
+3 81 V
+4 81 V
+3 -81 V
+4 81 V
+3 -162 V
+4 0 V
+3 81 V
+4 -81 V
+3 81 V
+3 650 V
+4 -731 V
+3 81 V
+4 -81 V
+3 0 V
+4 650 V
+3 -650 V
+4 0 V
+3 731 V
+4 -731 V
+3 568 V
+3 82 V
+4 -163 V
+3 163 V
+4 81 V
+3 -244 V
+4 81 V
+3 -162 V
+4 81 V
+3 81 V
+3 -243 V
+4 81 V
+3 -162 V
+4 81 V
+3 81 V
+4 -244 V
+3 82 V
+4 -163 V
+3 81 V
+4 82 V
+3 -244 V
+3 81 V
+4 -243 V
+3 243 V
+4 81 V
+3 -162 V
+4 0 V
+3 568 V
+4 -568 V
+3 0 V
+4 568 V
+3 -730 V
+3 649 V
+4 81 V
+3 -812 V
+4 650 V
+3 -731 V
+4 569 V
+3 162 V
+4 0 V
+3 -162 V
+3 81 V
+4 -244 V
+3 163 V
+4 0 V
+3 -82 V
+4 82 V
+3 -244 V
+4 162 V
+3 82 V
+4 -244 V
+3 81 V
+3 -81 V
+4 0 V
+3 81 V
+4 -81 V
+3 0 V
+4 568 V
+3 -568 V
+4 0 V
+3 487 V
+4 81 V
+3 -243 V
+3 162 V
+4 -731 V
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/share/doc/papers/timecounter/intr.ps b/share/doc/papers/timecounter/intr.ps
new file mode 100644
index 0000000..a6bb7ce
--- /dev/null
+++ b/share/doc/papers/timecounter/intr.ps
@@ -0,0 +1,1501 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: _.ps
+%%Creator: gnuplot 3.7 patchlevel 1
+%%CreationDate: $FreeBSD$
+%%DocumentFonts: (atend)
+%%BoundingBox: 50 50 266 201
+%%Orientation: Portrait
+%%EndComments
+/gnudict 256 dict def
+gnudict begin
+/Color false def
+/Solid false def
+/gnulinewidth 5.000 def
+/userlinewidth gnulinewidth def
+/vshift -46 def
+/dl {10 mul} def
+/hpt_ 31.5 def
+/vpt_ 31.5 def
+/hpt hpt_ def
+/vpt vpt_ def
+/M {moveto} bind def
+/L {lineto} bind def
+/R {rmoveto} bind def
+/V {rlineto} bind def
+/vpt2 vpt 2 mul def
+/hpt2 hpt 2 mul def
+/Lshow { currentpoint stroke M
+ 0 vshift R show } def
+/Rshow { currentpoint stroke M
+ dup stringwidth pop neg vshift R show } def
+/Cshow { currentpoint stroke M
+ dup stringwidth pop -2 div vshift R show } def
+/UP { dup vpt_ mul /vpt exch def hpt_ mul /hpt exch def
+ /hpt2 hpt 2 mul def /vpt2 vpt 2 mul def } def
+/DL { Color {setrgbcolor Solid {pop []} if 0 setdash }
+ {pop pop pop Solid {pop []} if 0 setdash} ifelse } def
+/BL { stroke userlinewidth 2 mul setlinewidth } def
+/AL { stroke userlinewidth 2 div setlinewidth } def
+/UL { dup gnulinewidth mul /userlinewidth exch def
+ 10 mul /udl exch def } def
+/PL { stroke userlinewidth setlinewidth } def
+/LTb { BL [] 0 0 0 DL } def
+/LTa { AL [1 udl mul 2 udl mul] 0 setdash 0 0 0 setrgbcolor } def
+/LT0 { PL [] 1 0 0 DL } def
+/LT1 { PL [4 dl 2 dl] 0 1 0 DL } def
+/LT2 { PL [2 dl 3 dl] 0 0 1 DL } def
+/LT3 { PL [1 dl 1.5 dl] 1 0 1 DL } def
+/LT4 { PL [5 dl 2 dl 1 dl 2 dl] 0 1 1 DL } def
+/LT5 { PL [4 dl 3 dl 1 dl 3 dl] 1 1 0 DL } def
+/LT6 { PL [2 dl 2 dl 2 dl 4 dl] 0 0 0 DL } def
+/LT7 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 1 0.3 0 DL } def
+/LT8 { PL [2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 2 dl 4 dl] 0.5 0.5 0.5 DL } def
+/Pnt { stroke [] 0 setdash
+ gsave 1 setlinecap M 0 0 V stroke grestore } def
+/Dia { stroke [] 0 setdash 2 copy vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath stroke
+ Pnt } def
+/Pls { stroke [] 0 setdash vpt sub M 0 vpt2 V
+ currentpoint stroke M
+ hpt neg vpt neg R hpt2 0 V stroke
+ } def
+/Box { stroke [] 0 setdash 2 copy exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath stroke
+ Pnt } def
+/Crs { stroke [] 0 setdash exch hpt sub exch vpt add M
+ hpt2 vpt2 neg V currentpoint stroke M
+ hpt2 neg 0 R hpt2 vpt2 V stroke } def
+/TriU { stroke [] 0 setdash 2 copy vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath stroke
+ Pnt } def
+/Star { 2 copy Pls Crs } def
+/BoxF { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath fill } def
+/TriUF { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath fill } def
+/TriD { stroke [] 0 setdash 2 copy vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath stroke
+ Pnt } def
+/TriDF { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath fill} def
+/DiaF { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath fill } def
+/Pent { stroke [] 0 setdash 2 copy gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath stroke grestore Pnt } def
+/PentF { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath fill grestore } def
+/Circle { stroke [] 0 setdash 2 copy
+ hpt 0 360 arc stroke Pnt } def
+/CircleF { stroke [] 0 setdash hpt 0 360 arc fill } def
+/C0 { BL [] 0 setdash 2 copy moveto vpt 90 450 arc } bind def
+/C1 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C2 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C3 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C4 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 180 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C5 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc
+ 2 copy moveto
+ 2 copy vpt 180 270 arc closepath fill
+ vpt 0 360 arc } bind def
+/C6 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C7 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 270 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C8 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 270 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C9 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 270 450 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C10 { BL [] 0 setdash 2 copy 2 copy moveto vpt 270 360 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 90 180 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C11 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 180 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 270 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C12 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 180 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C13 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 0 90 arc closepath fill
+ 2 copy moveto
+ 2 copy vpt 180 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/C14 { BL [] 0 setdash 2 copy moveto
+ 2 copy vpt 90 360 arc closepath fill
+ vpt 0 360 arc } bind def
+/C15 { BL [] 0 setdash 2 copy vpt 0 360 arc closepath fill
+ vpt 0 360 arc closepath } bind def
+/Rec { newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto
+ neg 0 rlineto closepath } bind def
+/Square { dup Rec } bind def
+/Bsquare { vpt sub exch vpt sub exch vpt2 Square } bind def
+/S0 { BL [] 0 setdash 2 copy moveto 0 vpt rlineto BL Bsquare } bind def
+/S1 { BL [] 0 setdash 2 copy vpt Square fill Bsquare } bind def
+/S2 { BL [] 0 setdash 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
+/S3 { BL [] 0 setdash 2 copy exch vpt sub exch vpt2 vpt Rec fill Bsquare } bind def
+/S4 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
+/S5 { BL [] 0 setdash 2 copy 2 copy vpt Square fill
+ exch vpt sub exch vpt sub vpt Square fill Bsquare } bind def
+/S6 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill Bsquare } bind def
+/S7 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt vpt2 Rec fill
+ 2 copy vpt Square fill
+ Bsquare } bind def
+/S8 { BL [] 0 setdash 2 copy vpt sub vpt Square fill Bsquare } bind def
+/S9 { BL [] 0 setdash 2 copy vpt sub vpt vpt2 Rec fill Bsquare } bind def
+/S10 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt Square fill
+ Bsquare } bind def
+/S11 { BL [] 0 setdash 2 copy vpt sub vpt Square fill 2 copy exch vpt sub exch vpt2 vpt Rec fill
+ Bsquare } bind def
+/S12 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill Bsquare } bind def
+/S13 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+ 2 copy vpt Square fill Bsquare } bind def
+/S14 { BL [] 0 setdash 2 copy exch vpt sub exch vpt sub vpt2 vpt Rec fill
+ 2 copy exch vpt sub exch vpt Square fill Bsquare } bind def
+/S15 { BL [] 0 setdash 2 copy Bsquare fill Bsquare } bind def
+/D0 { gsave translate 45 rotate 0 0 S0 stroke grestore } bind def
+/D1 { gsave translate 45 rotate 0 0 S1 stroke grestore } bind def
+/D2 { gsave translate 45 rotate 0 0 S2 stroke grestore } bind def
+/D3 { gsave translate 45 rotate 0 0 S3 stroke grestore } bind def
+/D4 { gsave translate 45 rotate 0 0 S4 stroke grestore } bind def
+/D5 { gsave translate 45 rotate 0 0 S5 stroke grestore } bind def
+/D6 { gsave translate 45 rotate 0 0 S6 stroke grestore } bind def
+/D7 { gsave translate 45 rotate 0 0 S7 stroke grestore } bind def
+/D8 { gsave translate 45 rotate 0 0 S8 stroke grestore } bind def
+/D9 { gsave translate 45 rotate 0 0 S9 stroke grestore } bind def
+/D10 { gsave translate 45 rotate 0 0 S10 stroke grestore } bind def
+/D11 { gsave translate 45 rotate 0 0 S11 stroke grestore } bind def
+/D12 { gsave translate 45 rotate 0 0 S12 stroke grestore } bind def
+/D13 { gsave translate 45 rotate 0 0 S13 stroke grestore } bind def
+/D14 { gsave translate 45 rotate 0 0 S14 stroke grestore } bind def
+/D15 { gsave translate 45 rotate 0 0 S15 stroke grestore } bind def
+/DiaE { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V closepath stroke } def
+/BoxE { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V closepath stroke } def
+/TriUE { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V closepath stroke } def
+/TriDE { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V closepath stroke } def
+/PentE { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ closepath stroke grestore } def
+/CircE { stroke [] 0 setdash
+ hpt 0 360 arc stroke } def
+/Opaque { gsave closepath 1 setgray fill grestore 0 setgray closepath } def
+/DiaW { stroke [] 0 setdash vpt add M
+ hpt neg vpt neg V hpt vpt neg V
+ hpt vpt V hpt neg vpt V Opaque stroke } def
+/BoxW { stroke [] 0 setdash exch hpt sub exch vpt add M
+ 0 vpt2 neg V hpt2 0 V 0 vpt2 V
+ hpt2 neg 0 V Opaque stroke } def
+/TriUW { stroke [] 0 setdash vpt 1.12 mul add M
+ hpt neg vpt -1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt 1.62 mul V Opaque stroke } def
+/TriDW { stroke [] 0 setdash vpt 1.12 mul sub M
+ hpt neg vpt 1.62 mul V
+ hpt 2 mul 0 V
+ hpt neg vpt -1.62 mul V Opaque stroke } def
+/PentW { stroke [] 0 setdash gsave
+ translate 0 hpt M 4 {72 rotate 0 hpt L} repeat
+ Opaque stroke grestore } def
+/CircW { stroke [] 0 setdash
+ hpt 0 360 arc Opaque stroke } def
+/BoxFill { gsave Rec 1 setgray fill grestore } def
+end
+%%EndProlog
+gnudict begin
+gsave
+50 50 translate
+0.050 0.050 scale
+0 setgray
+newpath
+(Helvetica) findfont 140 scalefont setfont
+1.000 UL
+LTb
+1.000 UL
+LTa
+882 420 M
+3200 0 V
+1.000 UL
+LTb
+882 420 M
+63 0 V
+3137 0 R
+-63 0 V
+798 420 M
+(0) Rshow
+1.000 UL
+LTa
+882 768 M
+3200 0 V
+1.000 UL
+LTb
+882 768 M
+63 0 V
+3137 0 R
+-63 0 V
+798 768 M
+(20000) Rshow
+1.000 UL
+LTa
+882 1116 M
+3200 0 V
+1.000 UL
+LTb
+882 1116 M
+63 0 V
+3137 0 R
+-63 0 V
+-3221 0 R
+(40000) Rshow
+1.000 UL
+LTa
+882 1464 M
+3200 0 V
+1.000 UL
+LTb
+882 1464 M
+63 0 V
+3137 0 R
+-63 0 V
+-3221 0 R
+(60000) Rshow
+1.000 UL
+LTa
+882 1812 M
+3200 0 V
+1.000 UL
+LTb
+882 1812 M
+63 0 V
+3137 0 R
+-63 0 V
+-3221 0 R
+(80000) Rshow
+1.000 UL
+LTa
+882 2160 M
+3200 0 V
+1.000 UL
+LTb
+882 2160 M
+63 0 V
+3137 0 R
+-63 0 V
+-3221 0 R
+(100000) Rshow
+1.000 UL
+LTa
+882 2508 M
+3200 0 V
+1.000 UL
+LTb
+882 2508 M
+63 0 V
+3137 0 R
+-63 0 V
+-3221 0 R
+(120000) Rshow
+1.000 UL
+LTa
+882 2856 M
+3200 0 V
+1.000 UL
+LTb
+882 2856 M
+63 0 V
+3137 0 R
+-63 0 V
+-3221 0 R
+(140000) Rshow
+1.000 UL
+LTa
+882 420 M
+0 2436 V
+1.000 UL
+LTb
+882 420 M
+0 63 V
+0 2373 R
+0 -63 V
+882 280 M
+(0) Cshow
+1.000 UL
+LTa
+1202 420 M
+0 2436 V
+1.000 UL
+LTb
+1202 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(100) Cshow
+1.000 UL
+LTa
+1522 420 M
+0 2436 V
+1.000 UL
+LTb
+1522 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(200) Cshow
+1.000 UL
+LTa
+1842 420 M
+0 2436 V
+1.000 UL
+LTb
+1842 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(300) Cshow
+1.000 UL
+LTa
+2162 420 M
+0 2436 V
+1.000 UL
+LTb
+2162 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(400) Cshow
+1.000 UL
+LTa
+2482 420 M
+0 2436 V
+1.000 UL
+LTb
+2482 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(500) Cshow
+1.000 UL
+LTa
+2802 420 M
+0 2436 V
+1.000 UL
+LTb
+2802 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(600) Cshow
+1.000 UL
+LTa
+3122 420 M
+0 2436 V
+1.000 UL
+LTb
+3122 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(700) Cshow
+1.000 UL
+LTa
+3442 420 M
+0 2373 V
+0 63 V
+1.000 UL
+LTb
+3442 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(800) Cshow
+1.000 UL
+LTa
+3762 420 M
+0 2373 V
+0 63 V
+1.000 UL
+LTb
+3762 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(900) Cshow
+1.000 UL
+LTa
+4082 420 M
+0 2436 V
+1.000 UL
+LTb
+4082 420 M
+0 63 V
+0 2373 R
+0 -63 V
+0 -2513 R
+(1000) Cshow
+1.000 UL
+LTb
+882 420 M
+3200 0 V
+0 2436 V
+-3200 0 V
+882 420 L
+140 1638 M
+currentpoint gsave translate 90 rotate 0 0 M
+(nanoseconds) Cshow
+grestore
+2482 70 M
+(seconds) Cshow
+1.000 UL
+LT0
+883 628 M
+3 589 V
+3 -538 V
+3 -63 V
+4 51 V
+3 -42 V
+3 458 V
+3 -424 V
+3 19 V
+4 -31 V
+3 30 V
+3 10 V
+3 65 V
+3 -89 V
+4 -39 V
+3 33 V
+3 13 V
+3 -10 V
+3 23 V
+3 -18 V
+4 25 V
+3 -17 V
+3 232 V
+3 -248 V
+4 19 V
+3 -35 V
+3 8 V
+3 -46 V
+3 9 V
+4 19 V
+3 -17 V
+3 9 V
+3 243 V
+3 -226 V
+4 -41 V
+3 38 V
+3 0 V
+3 5 V
+3 -40 V
+4 571 V
+3 823 V
+3 -1311 V
+3 -44 V
+3 7 V
+4 4 V
+3 9 V
+3 11 V
+3 13 V
+3 -81 V
+3 54 V
+4 -27 V
+3 30 V
+3 -8 V
+3 -21 V
+4 -2 V
+3 19 V
+3 -14 V
+3 13 V
+3 -25 V
+4 27 V
+3 15 V
+3 1888 V
+3 -1558 V
+3 -413 V
+4 38 V
+3 2 V
+3 -6 V
+3 15 V
+3 -42 V
+4 24 V
+3 -27 V
+3 19 V
+3 -8 V
+3 1236 V
+3 -1232 V
+4 3 V
+3 -15 V
+3 9 V
+3 10 V
+3 -27 V
+4 -31 V
+3 40 V
+3 17 V
+3 -20 V
+3 2 V
+4 3 V
+3 15 V
+3 -27 V
+3 15 V
+4 -37 V
+3 42 V
+3 1 V
+3 -10 V
+3 -10 V
+4 -22 V
+3 11 V
+3 34 V
+3 -33 V
+3 -6 V
+4 3 V
+3 13 V
+3 17 V
+3 -30 V
+3 13 V
+4 15 V
+3 -26 V
+3 341 V
+3 -321 V
+3 26 V
+4 -25 V
+3 39 V
+3 -26 V
+3 -10 V
+3 -23 V
+4 14 V
+3 24 V
+3 -14 V
+3 3 V
+3 -32 V
+3 41 V
+4 -24 V
+3 18 V
+3 -28 V
+3 38 V
+4 -24 V
+3 28 V
+3 -30 V
+3 5 V
+3 -7 V
+4 -7 V
+3 9 V
+3 37 V
+3 -43 V
+3 19 V
+4 -9 V
+3 -16 V
+3 39 V
+3 -22 V
+3 -29 V
+4 126 V
+3 1183 V
+3 -1283 V
+3 -30 V
+3 -6 V
+4 20 V
+3 -18 V
+3 28 V
+3 -15 V
+3 3 V
+3 34 V
+4 -27 V
+3 18 V
+3 -48 V
+3 55 V
+3 -23 V
+4 14 V
+3 10 V
+3 -21 V
+3 22 V
+4 -23 V
+3 12 V
+3 -15 V
+3 25 V
+3 -49 V
+4 54 V
+3 -30 V
+3 27 V
+3 -18 V
+3 10 V
+4 -24 V
+3 58 V
+3 -42 V
+3 12 V
+3 784 V
+4 -765 V
+3 -15 V
+3 56 V
+3 -64 V
+3 2 V
+4 39 V
+3 -32 V
+3 -11 V
+3 26 V
+3 -15 V
+4 7 V
+3 -30 V
+3 46 V
+3 -7 V
+3 16 V
+4 -39 V
+3 -9 V
+3 -7 V
+3 22 V
+3 -32 V
+4 16 V
+3 0 V
+3 1 V
+3 -13 V
+3 14 V
+4 10 V
+3 -39 V
+3 10 V
+3 -7 V
+3 29 V
+4 -28 V
+3 35 V
+3 686 V
+3 -531 V
+3 -97 V
+4 26 V
+3 -31 V
+3 -58 V
+3 45 V
+3 27 V
+3 -38 V
+4 30 V
+3 -80 V
+3 83 V
+3 -7 V
+3 20 V
+4 -26 V
+3 108 V
+3 -101 V
+3 27 V
+4 -49 V
+3 41 V
+3 -24 V
+3 4 V
+3 7 V
+4 -3 V
+3 -7 V
+3 26 V
+3 -9 V
+3 33 V
+4 132 V
+3 204 V
+3 -416 V
+3 26 V
+3 -37 V
+4 23 V
+3 1264 V
+3 -1299 V
+3 7 V
+3 -11 V
+3 21 V
+4 -40 V
+3 41 V
+3 -28 V
+3 28 V
+3 -24 V
+4 18 V
+3 -12 V
+3 6 V
+3 -3 V
+4 5 V
+3 -22 V
+3 24 V
+3 3 V
+3 10 V
+4 -26 V
+3 26 V
+3 -16 V
+3 12 V
+3 -16 V
+4 8 V
+3 -30 V
+3 3 V
+3 -1 V
+3 28 V
+4 0 V
+3 -1 V
+3 -3 V
+3 -28 V
+3 341 V
+3 -287 V
+4 -42 V
+3 38 V
+3 -22 V
+3 20 V
+3 -19 V
+4 39 V
+3 -24 V
+3 16 V
+3 -9 V
+3 20 V
+4 -18 V
+3 -21 V
+3 14 V
+3 -37 V
+3 47 V
+4 -21 V
+3 20 V
+3 -36 V
+3 38 V
+4 8 V
+3 -20 V
+3 -6 V
+3 5 V
+3 -21 V
+4 30 V
+3 -29 V
+3 5 V
+3 -8 V
+3 15 V
+4 -18 V
+3 17 V
+3 138 V
+3 949 V
+3 -1087 V
+4 -14 V
+3 -4 V
+3 17 V
+3 -16 V
+3 5 V
+3 -16 V
+4 15 V
+3 -7 V
+3 23 V
+3 -37 V
+4 43 V
+3 -14 V
+3 -2 V
+3 -3 V
+3 36 V
+4 -66 V
+3 41 V
+3 8 V
+3 -17 V
+3 16 V
+4 2 V
+3 9 V
+3 -34 V
+3 50 V
+3 -48 V
+4 18 V
+3 -10 V
+3 6 V
+3 -2 V
+3 12 V
+4 -23 V
+3 782 V
+3 -758 V
+3 50 V
+3 -31 V
+4 27 V
+3 -4 V
+3 29 V
+3 -32 V
+3 -2 V
+4 0 V
+3 2 V
+3 4 V
+3 -7 V
+3 -48 V
+4 15 V
+3 -15 V
+3 6 V
+3 -52 V
+3 71 V
+4 -15 V
+3 12 V
+3 -4 V
+3 30 V
+3 -28 V
+4 19 V
+3 -21 V
+3 15 V
+3 -17 V
+3 11 V
+4 1 V
+3 -21 V
+3 34 V
+3 -27 V
+3 140 V
+4 1432 V
+3 -1456 V
+3 -52 V
+3 59 V
+3 -36 V
+3 15 V
+4 -9 V
+3 15 V
+3 -17 V
+3 4 V
+3 -2 V
+4 4 V
+3 -4 V
+3 -2 V
+3 -29 V
+3 31 V
+4 2 V
+3 -2 V
+3 21 V
+3 -11 V
+4 -6 V
+3 16 V
+3 13 V
+3 -34 V
+3 39 V
+4 -13 V
+currentpoint stroke M
+3 -21 V
+3 54 V
+3 -33 V
+3 24 V
+4 -29 V
+3 64 V
+3 447 V
+3 757 V
+3 -1299 V
+4 549 V
+3 -428 V
+3 -128 V
+3 0 V
+3 14 V
+3 -40 V
+4 1 V
+3 23 V
+3 -41 V
+3 50 V
+4 -21 V
+3 20 V
+3 -15 V
+3 -1 V
+3 -6 V
+4 -1 V
+3 -19 V
+3 26 V
+3 -9 V
+3 21 V
+4 -28 V
+3 29 V
+3 1 V
+3 -8 V
+3 1 V
+4 0 V
+3 -7 V
+3 12 V
+3 -21 V
+3 19 V
+3 -15 V
+4 256 V
+3 -228 V
+3 2 V
+3 -3 V
+3 2 V
+4 -25 V
+3 38 V
+3 -3 V
+3 21 V
+3 -28 V
+4 42 V
+3 -24 V
+3 -10 V
+3 -10 V
+3 -7 V
+4 19 V
+3 -14 V
+3 7 V
+3 -29 V
+4 -3 V
+3 -4 V
+3 28 V
+3 -18 V
+3 10 V
+4 3 V
+3 23 V
+3 -51 V
+3 15 V
+3 -29 V
+4 36 V
+3 -19 V
+3 18 V
+3 4 V
+3 220 V
+4 835 V
+3 -1079 V
+3 -18 V
+3 7 V
+3 17 V
+3 -11 V
+4 3 V
+3 8 V
+3 -11 V
+3 24 V
+3 -9 V
+4 -1 V
+3 4 V
+3 5 V
+3 -15 V
+4 6 V
+3 8 V
+3 26 V
+3 -26 V
+3 0 V
+4 5 V
+3 27 V
+3 -24 V
+3 -2 V
+3 3 V
+4 -2 V
+3 22 V
+3 -38 V
+3 28 V
+3 -36 V
+4 29 V
+3 -15 V
+3 28 V
+3 601 V
+3 -596 V
+4 -36 V
+3 6 V
+3 27 V
+3 -1 V
+3 -41 V
+3 56 V
+4 -67 V
+3 16 V
+3 -30 V
+3 -7 V
+3 2108 V
+4 -2072 V
+3 -28 V
+3 10 V
+3 20 V
+4 1 V
+3 -125 V
+3 130 V
+3 -46 V
+3 5 V
+4 33 V
+3 8 V
+3 -21 V
+3 -9 V
+3 56 V
+4 -5 V
+3 -38 V
+3 36 V
+3 -49 V
+3 31 V
+4 4 V
+3 640 V
+3 564 V
+3 -1162 V
+3 46 V
+3 -53 V
+4 40 V
+3 -32 V
+3 16 V
+3 2 V
+3 7 V
+4 17 V
+3 -26 V
+3 4 V
+3 -1 V
+3 -19 V
+4 18 V
+3 -13 V
+3 35 V
+3 -15 V
+4 -19 V
+3 3 V
+3 25 V
+3 -34 V
+3 37 V
+4 -28 V
+3 31 V
+3 -18 V
+3 31 V
+3 -56 V
+4 -4 V
+3 -24 V
+3 -30 V
+3 20 V
+3 33 V
+4 1300 V
+3 -1283 V
+3 1 V
+3 6 V
+3 -18 V
+3 20 V
+4 -21 V
+3 -10 V
+3 35 V
+3 -20 V
+3 498 V
+4 -391 V
+3 -145 V
+3 3 V
+3 8 V
+3 -58 V
+4 50 V
+3 -12 V
+3 6 V
+3 -1 V
+4 -9 V
+3 -1 V
+3 5 V
+3 10 V
+3 14 V
+4 -23 V
+3 20 V
+3 -2 V
+3 -9 V
+3 4 V
+4 -1 V
+3 -7 V
+3 2 V
+3 246 V
+3 -249 V
+4 10 V
+3 9 V
+3 -28 V
+3 47 V
+3 -16 V
+3 -9 V
+4 3 V
+3 22 V
+3 -26 V
+3 21 V
+3 -5 V
+4 33 V
+3 -50 V
+3 -21 V
+3 40 V
+4 -18 V
+3 14 V
+3 -29 V
+3 29 V
+3 -24 V
+4 29 V
+3 -38 V
+3 41 V
+3 -24 V
+3 41 V
+4 -49 V
+3 19 V
+3 -14 V
+3 10 V
+3 -2 V
+4 9 V
+3 192 V
+3 903 V
+3 -1091 V
+3 8 V
+4 -21 V
+3 16 V
+3 -13 V
+3 12 V
+3 -9 V
+3 18 V
+4 -9 V
+3 -7 V
+3 4 V
+3 12 V
+4 -5 V
+3 0 V
+3 -5 V
+3 14 V
+3 -11 V
+4 26 V
+3 -34 V
+3 -53 V
+3 66 V
+3 35 V
+4 -39 V
+3 16 V
+3 4 V
+3 -43 V
+3 52 V
+4 -36 V
+3 22 V
+3 -26 V
+3 28 V
+3 -15 V
+4 199 V
+3 -180 V
+3 32 V
+3 -19 V
+3 -10 V
+4 -11 V
+3 -39 V
+3 48 V
+3 -26 V
+3 20 V
+3 24 V
+4 -43 V
+3 26 V
+3 -36 V
+3 22 V
+3 3 V
+4 -7 V
+3 -12 V
+3 14 V
+3 -24 V
+4 16 V
+3 -6 V
+3 4 V
+3 13 V
+3 -26 V
+4 29 V
+3 3 V
+3 9 V
+3 -16 V
+3 4 V
+4 22 V
+3 -45 V
+3 45 V
+3 -31 V
+3 1300 V
+4 -1245 V
+3 -27 V
+3 29 V
+3 -29 V
+3 20 V
+4 -20 V
+3 37 V
+3 -32 V
+3 42 V
+3 -40 V
+4 23 V
+3 -5 V
+3 -70 V
+3 32 V
+3 24 V
+4 -11 V
+3 36 V
+3 -12 V
+3 -17 V
+3 1 V
+4 7 V
+3 -1 V
+3 -33 V
+3 -3 V
+3 -45 V
+4 30 V
+3 -10 V
+3 16 V
+3 -1 V
+3 -1 V
+4 -1 V
+3 7 V
+3 790 V
+3 -631 V
+3 -117 V
+4 -9 V
+3 28 V
+3 -15 V
+3 28 V
+3 -45 V
+3 36 V
+4 -20 V
+3 -22 V
+3 47 V
+3 -40 V
+3 24 V
+4 -33 V
+3 50 V
+3 -20 V
+3 453 V
+4 46 V
+3 -544 V
+3 -2 V
+3 1 V
+3 -6 V
+4 -42 V
+3 24 V
+3 21 V
+3 -8 V
+3 -2 V
+4 -22 V
+3 30 V
+3 -2 V
+3 1 V
+3 -20 V
+4 -3 V
+3 1284 V
+3 -1273 V
+3 18 V
+3 -39 V
+3 40 V
+4 -3 V
+3 -10 V
+3 -3 V
+3 -16 V
+3 15 V
+4 5 V
+3 11 V
+3 -18 V
+3 -8 V
+4 3 V
+3 38 V
+3 -43 V
+3 24 V
+3 -8 V
+4 -16 V
+3 21 V
+3 -16 V
+3 -10 V
+3 -22 V
+4 51 V
+currentpoint stroke M
+3 -29 V
+3 22 V
+3 -31 V
+3 15 V
+4 -10 V
+3 30 V
+3 -53 V
+3 19 V
+3 400 V
+4 -415 V
+3 3 V
+3 15 V
+3 -14 V
+3 -1 V
+3 3 V
+4 -12 V
+3 20 V
+3 -2 V
+3 -7 V
+3 -22 V
+4 19 V
+3 -4 V
+3 22 V
+3 -3 V
+3 -10 V
+4 -1 V
+3 -10 V
+3 15 V
+3 5 V
+4 -18 V
+3 7 V
+3 30 V
+3 -18 V
+3 19 V
+4 -34 V
+3 11 V
+3 5 V
+3 -20 V
+3 15 V
+4 -31 V
+3 34 V
+3 224 V
+3 1103 V
+3 -1388 V
+4 47 V
+3 -14 V
+3 5 V
+3 5 V
+3 -6 V
+4 -14 V
+3 22 V
+3 -8 V
+3 -22 V
+3 13 V
+4 17 V
+3 3 V
+3 -18 V
+3 -12 V
+3 7 V
+4 2 V
+3 -14 V
+3 12 V
+3 -2 V
+3 -10 V
+4 12 V
+3 2 V
+3 -9 V
+3 15 V
+3 -6 V
+4 -3 V
+3 4 V
+3 3 V
+3 12 V
+3 -31 V
+4 30 V
+3 780 V
+3 -707 V
+3 -49 V
+3 32 V
+4 -1 V
+3 -18 V
+3 1 V
+3 -14 V
+3 22 V
+4 7 V
+3 -43 V
+3 18 V
+3 32 V
+3 -17 V
+3 1 V
+4 -29 V
+3 7 V
+3 33 V
+3 -14 V
+4 -35 V
+3 -6 V
+3 -24 V
+3 23 V
+3 -6 V
+4 -4 V
+3 15 V
+3 -37 V
+3 2 V
+3 5 V
+4 -9 V
+3 29 V
+3 -26 V
+3 11 V
+3 728 V
+4 -606 V
+3 -32 V
+3 -16 V
+3 10 V
+3 -12 V
+3 -2 V
+4 28 V
+3 -13 V
+3 -26 V
+3 9 V
+4 5 V
+3 14 V
+3 -18 V
+3 32 V
+3 -16 V
+4 -7 V
+3 -20 V
+3 24 V
+3 -24 V
+3 30 V
+4 -51 V
+3 45 V
+3 516 V
+3 -101 V
+3 -450 V
+4 20 V
+3 -10 V
+3 -20 V
+3 7 V
+3 1 V
+4 3 V
+3 13 V
+3 45 V
+3 1128 V
+3 -1227 V
+4 -52 V
+3 -5 V
+3 42 V
+3 -11 V
+3 15 V
+4 -12 V
+3 26 V
+3 -18 V
+3 3 V
+3 -10 V
+4 -49 V
+3 45 V
+3 -1 V
+3 28 V
+3 -22 V
+4 1 V
+3 1 V
+3 -12 V
+3 26 V
+3 -20 V
+4 3 V
+3 22 V
+3 -20 V
+3 9 V
+3 -32 V
+4 28 V
+3 -27 V
+3 18 V
+3 -9 V
+3 14 V
+4 -30 V
+3 1081 V
+3 268 V
+3 -1320 V
+3 -15 V
+4 10 V
+3 -20 V
+3 44 V
+3 -18 V
+3 -5 V
+3 -17 V
+4 10 V
+3 5 V
+3 -4 V
+3 -3 V
+3 -9 V
+4 4 V
+3 9 V
+3 12 V
+3 -15 V
+4 12 V
+3 -28 V
+3 16 V
+3 46 V
+3 -45 V
+stroke
+grestore
+end
+showpage
+%%Trailer
+%%DocumentFonts: Helvetica
diff --git a/share/doc/papers/timecounter/timecounter.ms b/share/doc/papers/timecounter/timecounter.ms
new file mode 100644
index 0000000..097ab65
--- /dev/null
+++ b/share/doc/papers/timecounter/timecounter.ms
@@ -0,0 +1,1076 @@
+.EQ
+delim øø
+.EN
+.\"
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@login.dknet.dk> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.if n .ND
+.TI
+Timecounters: Efficient and precise timekeeping in SMP kernels.
+.AA
+.A "Poul-Henning Kamp" "The FreeBSD Project"
+.AB
+.PP
+The FreeBSD timecounters are an architecture-independent implementation
+of a binary timescale using whatever hardware support is at hand
+for tracking time. The binary timescale converts using simple
+multiplication to canonical timescales based on micro- or nano-seconds
+and can interface seamlessly to the NTP PLL/FLL facilities for clock
+synchronisation. Timecounters are implemented using lock-less
+stable-storage based primitives which scale efficiently in SMP
+systems. The math and implementation behind timecounters will
+be detailed as well as the mechanisms used for synchronisation. \**
+.AE
+.FS
+This paper was presented at the EuroBSDcon 2002 conference in Amsterdam.
+.FE
+.SH
+Introduction
+.PP
+Despite digging around for it, I have not been able to positively
+identify the first computer which knew the time of day.
+The feature probably arrived either from the commercial side
+so service centres could bill computer cycles to customers or from
+the technical side so computers could timestamp external events,
+but I have not been able to conclusively nail the first implementation down.
+.LP
+But there is no doubt that it happened very early in the development
+of computers
+and if systems like the ``SAGE'' [SAGE] did not know what time
+it was I would be amazed.
+.LP
+On the other hand, it took a long time for a real time clock to
+become a standard feature:
+.LP
+The ``Apple ]['' computer
+had neither in hardware or software any notion what time it was.
+.LP
+The original ``IBM PC'' did know what time it was, provided you typed
+it in when you booted it, but it forgot when you turned it off.
+.LP
+One of the ``advanced technologies'' in the ``IBM PC/AT'' was a battery
+backed CMOS chip which kept track of time even when the computer
+was powered off.
+.LP
+Today we expect our computers to know the time, and with network
+protocols like NTP we will usually find that they do, give and
+take some milliseconds.
+.LP
+This article is about the code in the FreeBSD kernel which keeps
+track of time.
+.SH
+Time and timescale basics
+.PP
+Despite the fact that time is the physical quantity (or maybe entity
+?) about which we know the least, it is at the same time [sic!] what we
+can measure with the highest precision of all physical quantities.
+.LP
+The current crop of atomic clocks will neither gain nor lose a
+second in the next couple hundred million years, provided we
+stick to the preventative maintenance schedules. This is a feat
+roughly in line with to knowing the circumference of the Earth
+with one micrometer precision, in real time.
+.LP
+While it is possible to measure time by means other than oscillations,
+for instance transport or consumption of a substance at a well-known
+rate, such designs play no practical role in time measurement because
+their performance is significantly inferior to oscillation based
+designs.
+.LP
+In other words, it is pretty fair to say that all relevant
+timekeeping is based on oscillating phenomena:
+.TS
+center;
+l l.
+sun-dial Earths rotation about its axis.
+calendar Ditto + Earths orbit around the sun.
+clockwork Mechanical oscillation of pendulum.
+crystals Mechanical resonance in quartz.
+atomic Quantum-state transitions in atoms.
+.TE
+.LP
+We can therefore with good fidelity define ``a clock'' to be the
+combination of an oscillator and a counting mechanism:
+.LP
+.if t .PSPIC fig3.eps
+.LP
+The standard second is currently defined as
+.QP
+The duration of 9,192,631,770 periods of the radiation corresponding to the transition between the two hyperfine levels of the ground state of the caesium 133 atom.
+.LP
+and we have frequency standards which are able to mark a sequence of
+such seconds
+with an error less than ø2 cdot 10 sup{-15}ø [DMK2001] with commercially
+available products doing better than ø1 cdot 10 sup{-14}ø [AG2002].
+.LP
+Unlike other physical units with a conventionally defined origin,
+longitude for instance, the ephemeral nature of time prevents us
+from putting a stake in the ground, so to speak, and measure from
+there. For measuring time we have to rely on ``dead reckoning'',
+just like the navigators before Harrison built his clocks [RGO2002]:
+We have to tally how far we went from our reference point, keeping a
+running total at all times, and use that as our estimated position.
+.LP
+The upshot of this is, that we cannot define a timescale by any
+other means than some other timescale(s).
+.LP
+``Relative time'' is a time interval between two events, and for this
+we only need to agree on the rate of the oscillator.
+.LP
+``Absolute time'' consists of a well defined point in time and the
+time interval since then, this is a bit more tricky.
+.LP
+The Internationally agreed upon TAI and the UTC timescales
+starts at (from a physics point of view) arbitrary points in time
+and progresses in integral intervals of the standard second, with the
+difference being that UTC does tricks to the counting to stay roughly
+in sync with Earths rotation \**.
+.FS
+The first atomic based definition actually operated in a different way:
+each year would have its own value determined for the frequency of the
+caesium resonance, selected so as to match the revolution rate of the
+Earth. This resulted in time-intervals being very unwieldy business,
+and more and more scientists realized that that the caesium resonance
+was many times more stable than the angular momentum of the Earth.
+Eventually the new leap-second method were introduced in 1972.
+It is interesting to note that the autumn leaves falling on the
+northern hemisphere affects the angular momentum enough to change
+the Earths rotational rate measurably.
+.FE
+.LP
+TAI is defined as a sequence of standard seconds (the first timescale),
+counted from January 1st 1958 (the second timescale).
+.LP
+UTC is defined basically the same way, but every so often a leap-second
+is inserted (or theoretically deleted) to keep UTC synchronised
+with Earths rotation.
+.LP
+Both the implementation of these two, and a few others speciality
+timescales are the result of the
+combined efforts of several hundred atomic frequency standards in
+various laboratories and institutions throughout the world, all
+reporting to the BIPM in Paris who calculate the ``paper clock'' which
+TAI and UTC really are using a carefully designed weighting algorithm \**.
+.FS
+The majority of these clocks are model 5071A from Agilent (the test
+and measurement company formerly known as ``Hewlett-Packard'') which
+count for as much as 85% of the combined weight.
+A fact the company deservedly is proud of.
+The majority of the remaining weight is assigned to a handful of big
+custom-design units like the PTB2 and NIST7.
+.FE
+.LP
+Leap seconds are typically announced six to nine months in advance,
+based on precise observations of median transit times of stars and VLBI
+radio astronomy of very distant quasars.
+.LP
+The perceived wisdom of leap-seconds have been gradually decreasing
+in recent years, as devices and products with built-in calendar
+functionality becomes more and more common and people realize that
+user input or software upgrades are necessary to instruct the
+calendar functionality about upcoming leap seconds.
+.SH
+UNIX timescales
+.PP
+UNIX systems use a timescale which pretends to be UTC, but defined
+as the count of standard seconds since 00:00:00 01-01-1970 UTC,
+ignoring the leap-seconds. This definition has never been perceived
+as wise.
+.LP
+Ignoring leap seconds means that unless some trickery is performed
+when a leap second happens on the UTC scale, UNIX clocks would be
+one second off. Another implication is that the length of a
+time interval calculated on UNIX time_t variables, can be up to 22
+(and counting) seconds wrong relative to the same time interval
+measured on the UTC timescale.
+.LP
+Recent efforts have tried to make the NTP protocol make up for this
+deficiency by transmitting the UTC-TAI offset as part of the protocol.
+[MILLS2000A]
+.LP
+Fractional seconds are represented two ways in UNIX, ``timeval'' and
+``timespec''. Both of these formats are two-component structures
+which record the number of seconds, and the number of microseconds
+or nanoseconds respectively.
+.LP
+This unfortunate definition makes arithmetic on these two formats
+quite expensive to perform in terms of computer instructions:
+.DS
+.ps -1
+/* Subtract timeval from timespec */
+t3.tv_sec = t1.tv_sec - t2.tv_sec;
+t3.tv_nsec = t1.tv_nsec -
+ t2.tv_usec * 1000;
+if (t3.tv_nsec >= 1000000000) {
+ t3.tv_sec++;
+ t3.tv_nsec -= 1000000000;
+} else if (t3.tv_nsec < 0) {
+ t3.tv_sec--;
+ t3.tv_nsec += 1000000000;
+}
+.ps +1
+.DE
+.LP
+While nanoseconds will probably be enough for most timestamping
+tasks faced by UNIX computers for a number of years, it is an
+increasingly uncomfortable situation that CPU clock periods and
+instruction timings are already not representable in the standard
+time formats available on UNIX for consumer grade hardware,
+and the first POSIX mandated API, \fCclock_getres(3)\fP has
+already effectively reached end of life as a result of this.
+.LP
+Hopefully the various standards bodies will address this issue
+better in the future.
+.SH
+Precision, Stability and Resolution
+.PP
+Three very important terms in timekeeping are ``precision'',
+``stability'' and ``resolution''.
+While the three words may seem to describe somewhat the
+same property in most uses, their use in timekeeping covers three
+very distinct and well defined properties of a clock.
+.LP
+Resolution in clocks is simply a matter of the step-size of the
+counter or in other words: the rate at which it steps.
+A counter running on a 1 MHz frequency will have a resolution
+of 1 microsecond.
+.LP
+Precision talks about how close to the intended rate the clock runs,
+stability about how much the rate varies and resolution about the
+size of the smallest timeinterval we can measure.
+.LP
+From a quality point of view, Stability is a much more
+valuable property than precision, this is probably best explained
+using a graphic illustration of the difference between the two
+concepts:
+.LP
+.if t .PSPIC fig1.eps
+.LP
+In the top row we have instability, the bullet holes are spread over
+a large fraction of the target area.
+In the bottom row, the bullets all hit in a very small area.
+.LP
+On the left side, we have lack of precision, the holes obviously are
+not centred on the target, a systematic offset exists.
+In the right side we have precision, the bullets are centred on
+the target \**.
+.FS
+We cannot easily get resolution into this analogy, the obvious
+representation as the diameter of the bullet-hole is not correct,
+it would have to be the grid or other pattern of locations where
+the bullet could possibly penetrate the target material, but this
+gets too quantum-mechanical-oid to serve the instructional purpose.
+.FE
+.LP
+Transposing these four targets to actual clocks, the situation
+could look like the following plots:
+.LP
+.if t .PSPIC fig2.eps
+.LP
+On the x-axis we have time and on the y-axis how wrong the clock
+was at a given point in time.
+.LP
+The reason atomic standards are such a big deal in timekeeping is
+that they are incredibly stable: they are able to generate an oscillation
+where the period varies by roughly a millionth of a billonth of a
+second in long term measurements.
+.LP
+They are in fact not nearly as precise as they are stable, but as
+one can see from the graphic above, a stable clock which is not
+precise can be easily corrected for the offset and thus calibrated
+is as good as any clock.
+.LP
+This lack of precision is not necessarily a flaw in these kinds of
+devices, once you get into the ø10 cdot 10 sup{-15}ø territory
+things like the blackbody spectrum at the particular absolute
+temperature of the clocks hardware and general relativistic
+effects mostly dependent on the altitude above earths center
+has to be corrected for \**.
+.FS
+This particularly becomes an issue with space-based atomic standards
+as those found on the ``Navstar'' GPS satellites.
+.FE
+.SH
+Design goals of timecounters
+.PP
+After this brief description of the major features of the local
+landscape, we can look at the design goals of timecounters in detail:
+.LP
+.I "Provide timestamps in timeval and timespec formats,"
+.IP
+This is obviously the basic task we have to solve, but as was noted
+earlier, this is in no way the performance requirement.
+.LP
+.I "on both the ``uptime'' and the POSIX timescales,"
+.IP
+The ``uptime'' timescale is convenient for time intervals which are
+not anchored in UTC time: the run time of processes, the access
+time of disks and similar.
+.IP
+The uptime timescale counts seconds starting from when the system
+is booted. The POSIX/UTC timescale is implemented by adding an
+estimate of the POSIX time when the system booted to the uptime
+timescale.
+.LP
+.I "using whatever hardware we have available at the time,"
+.IP
+Which in a subtle way also implies ``be able to switch from one
+piece of hardware to another on the fly'' since we may not know
+right up front what hardware we have access to and which is
+preferable to use.
+.LP
+.I "while supporting time the NTP PLL/FLL discipline code,"
+.IP
+The NTP kernel PLL/FLL code allows the local clock and timescale
+to be synchronised or syntonised to an external timescale either
+via network packets or hardware connection. This also implies
+that the rate and phase of the timescale must be manoeuvrable
+with sufficient resolution.
+.LP
+.I "and providing support for the RFC 2783 PPS API,"
+.IP
+This is mainly for the benefit of the NTPD daemons communication
+with external clock or frequency hardware, but it has many other
+interesting uses as well [PHK2001].
+.LP
+.I "in a SMP efficient way."
+.IP
+Timestamps are used many places in the kernel and often at pretty
+high rate so it is important that the timekeeping facility
+does not become a point of CPU or lock contention.
+.SH
+Timecounter timestamp format.
+.PP
+Choosing the fundamental timestamp format for the timecounters is
+mostly a question of the resolution and steer-ability requirements.
+.LP
+There are two basic options on contemporary hardware: use a 32 bit
+integer for the fractional part of seconds, or use a 64 bit which
+is computationally more expensive.
+.LP
+The question therefore reduced to the somewhat simpler: can we get
+away with using only 32 bit ?
+.LP
+Since 32 bits fractional seconds have a resolution of slightly
+better than quarter of a nanosecond (.2328 nsec) it can obviously
+be converted to nanosecond resolution struct timespec timestamps
+with no loss of precision, but unfortunately not with pure 32 bit
+arithmetic as that would result in unacceptable rounding errors.
+.LP
+But timecounters also need to represent the clock period of the
+chosen hardware and this hardware might be the GHz range CPU-clock.
+The list of clock frequencies we could support with 32 bits are:
+.TS
+center;
+l l n l.
+ø2 sup{32} / 1ø ø=ø 4.294 GHz
+ø2 sup{32} / 2ø ø=ø 2.147 GHz
+ø2 sup{32} / 3ø ø=ø 1.432 GHz
+\&...
+ø2 sup{32} / (2 sup{32}-1)ø ø=ø 1.000 Hz
+.TE
+We can immediately see that 32 bit is insufficient to faithfully
+represent clock frequencies even in the low GHz area, much less in
+the range of frequencies which have already been vapourwared by
+both IBM, Intel and AMD.
+QED: 32 bit fractions are not enough.
+.LP
+With 64 bit fractions the same table looks like:
+.TS
+center;
+l l r l.
+ø2 sup{64} / 1ø ø=ø ø 18.45 cdot 10 sup{9}ø GHz
+ø2 sup{64} / 2ø ø=ø ø 9.223 cdot 10 sup{9}ø GHz
+\&...
+ø2 sup{64} / 2 sup{32}ø ø=ø 4.294 GHz
+\&...
+ø2 sup{64} / (2 sup{64}-1)ø ø=ø 1.000 Hz
+.TE
+And the resolution in the 4 GHz frequency range is approximately one Hz.
+.LP
+The following format have therefore been chosen as the basic format
+for timecounters operations:
+.DS
+.ps -1
+struct bintime {
+ time_t sec;
+ uint64_t frac;
+};
+.ps +1
+.DE
+Notice that the format will adapt to any size of time_t variable,
+keeping timecounters safely out of the ``We SHALL prepare for the
+Y2.038K problem'' war zone.
+.LP
+One beauty of the bintime format, compared to the timeval and
+timespec formats is that it is a binary number, not a pseudo-decimal
+number. If compilers and standards allowed, the representation
+would have been ``int128_t'' or at least ``int96_t'', but since this
+is currently not possible, we have to express the simple concept
+of multiword addition in the C language which has no concept of a
+``carry bit''.
+.LP
+To add two bintime values, the code therefore looks like this \**:
+.FS
+If the reader suspects the '>' is a typo, further study is suggested.
+.FE
+.LP
+.DS
+.ps -1
+uint64_t u;
+
+u = bt1->frac;
+bt3->frac = bt1->frac + bt2->frac;
+bt3->sec = bt1->sec + bt2->sec;
+if (u > bt3->frac)
+ bt3->sec += 1;
+.ps +1
+.DE
+.LP
+An important property of the bintime format is that it can be
+converted to and from timeval and timespec formats with simple
+multiplication and shift operations as shown in these two
+actual code fragments:
+.DS
+.ps -1
+void
+bintime2timespec(struct bintime *bt,
+ struct timespec *ts)
+{
+
+ ts->tv_sec = bt->sec;
+ ts->tv_nsec =
+ ((uint64_t)1000000000 *
+ (uint32_t)(bt->frac >> 32)) >> 32;
+}
+.ps +1
+.DE
+.DS
+.ps -1
+void
+timespec2bintime(struct timespec *ts,
+ struct bintime *bt)
+{
+
+ bt->sec = ts->tv_sec;
+ /* 18446744073 =
+ int(2^64 / 1000000000) */
+ bt->frac = ts->tv_nsec *
+ (uint64_t)18446744073LL;
+}
+.ps +1
+.DE
+.LP
+.SH
+How timecounters work
+.PP
+To produce a current timestamp the timecounter code
+reads the hardware counter, subtracts a reference
+count to find the number of steps the counter has
+progressed since the reference timestamp.
+This number of steps is multiplied with a factor
+derived from the counters frequency, taking into account
+any corrections from the NTP PLL/FLL and this product
+is added to the reference timestamp to get a timestamp.
+.LP
+This timestamp is on the ``uptime'' time scale, so if
+UNIX/UTC time is requested, the estimated time of boot is
+added to the timestamp and finally it is scaled to the
+timeval or timespec if that is the desired format.
+.LP
+A fairly large number of functions are provided to produce
+timestamps, depending on the desired timescale and output
+format:
+.TS
+center;
+l r r.
+Desired uptime UTC/POSIX
+Format timescale timescale
+_
+bintime binuptime() bintime()
+timespec nanouptime() nanotime()
+timeval microuptime() microtime()
+.TE
+.LP
+Some applications need to timestamp events, but are not
+particular picky about the precision.
+In many cases a precision of tenths or hundreds of
+seconds is sufficient.
+.LP
+A very typical case is UNIX file timestamps:
+There is little point in spending computational resources getting an
+exact nanosecond timestamp, when the data is written to
+a mechanical device which has several milliseconds of unpredictable
+delay before the operation is completed.
+.LP
+Therefore a complementary shadow family of timestamping functions
+with the prefix ``get'' have been added.
+.LP
+These functions return the reference
+timestamp from the current timehands structure without going to the
+hardware to determine how much time has elapsed since then.
+These timestamps are known to be correct to within rate at which
+the periodic update runs, which in practice means 1 to 10 milliseconds.
+.SH
+Timecounter math
+.LP
+The delta-count operation is straightforward subtraction, but we
+need to logically AND the result with a bit-mask with the same number
+(or less) bits as the counter implements,
+to prevent higher order bits from getting set when the counter rolls over:
+.DS
+.ce
+.EQ
+Delta Count = (Count sub{now} - Count sub{ref}) ~ BITAND ~ mask
+.EN
+.DE
+The scaling step is straightforward.
+.DS
+.ce
+.EQ
+T sub{now} = Delta Count cdot R sub{counter} + T sub{ref}
+.EN
+.DE
+The scaling factor øR sub{counter}ø will be described below.
+.LP
+At regular intervals, scheduled by \fChardclock()\fP, a housekeeping
+routine is run which does the following:
+.LP
+A timestamp with associated hardware counter reading is elevated
+to be the new reference timecount:
+.DS
+
+.ce
+.EQ
+Delta Count = (Count sub{now} - Count sub{ref}) ~ BITAND ~ mask
+.EN
+
+.ce
+.EQ
+T sub{now} = Delta Count cdot R sub{counter}
+.EN
+
+.ce
+.EQ
+Count sub{ref} = Count sub{now}
+.EN
+
+.ce
+.EQ
+T sub{ref} = T sub{now}
+.EN
+.DE
+.LP
+If a new second has started, the NTP processing routines are called
+and the correction they return and the counters frequency is used
+to calculate the new scaling factor øR sub{counter}ø:
+.DS
+.ce
+.EQ
+R sub{counter} = {2 sup{64} over Freq sub{counter}} cdot ( 1 + R sub{NTP} )
+.EN
+.DE
+Since we only have access to 64 bit arithmetic, dividing something
+into ø2 sup{64}ø is a problem, so in the name of code clarity
+and efficiency, we sacrifice the low order bit and instead calculate:
+.DS
+.ce
+.EQ
+R sub{counter} = 2 cdot {2 sup{63} over Freq sub{counter}} cdot ( 1 + R sub{NTP} )
+.EN
+.DE
+The øR sub{NTP}ø correct factor arrives as the signed number of
+nanoseconds (with 32 bit binary fractions) to adjust per second.
+This quasi-decimal number is a bit of a square peg in our round binary
+hole, and a conversion factor is needed.
+Ideally we want to multiply this factor by:
+.DS
+.ce
+.EQ
+2 sup {64} over {10 sup{9} cdot 2 sup{32}} = 4.294967296
+.EN
+.DE
+This is not a nice number to work with.
+Fortunately, the precision of this correction is not critical, we are
+within an factor of a million of the ø10 sup{-15}ø performance level
+of state of the art atomic clocks, so we can use an approximation
+on this term without anybody noticing.
+.LP
+Deciding which fraction to use as approximation needs to carefully
+consider any possible overflows that could happen.
+In this case the correction may be as large as \(+- 5000 PPM which
+leaves us room to multiply with about 850 in a multiply-before-divide
+setting.
+Unfortunately, there are no good fractions which multiply with less
+than 850 and at the same time divide by a power of two, which is
+desirable since it can be implemented as a binary shift instead of
+an expensive full division.
+.LP
+A divide-before-multiply approximation necessarily results in a loss
+of lower order bits, but in this case dividing by 512 and multiplying
+by 2199 gives a good approximation where the lower order bit loss is
+not a concern:
+.DE
+.EQ
+2199 over 512 = 4.294921875
+.EN
+.DE
+The resulting error is an systematic under compensation of 10.6PPM
+of the requested change, or ø1.06 cdot 10 sup -14ø per nanosecond
+of correction.
+This is perfectly acceptable.
+.LP
+Putting it all together, including the one bit we put on the alter for the
+Goddess of code clarity, the formula looks like this:
+.DS
+.ce
+.EQ
+R sub{counter} = 2 cdot {{2 sup{63} + 2199 cdot {R sub{NTP}} over 1024} over Freq sub{counter}}
+.EN
+.DE
+Presented here in slightly unorthodox format to show the component arithmetic
+operations as they are carried out in the code.
+.SH
+Frequency of the periodic update
+.PP
+The hardware counter should have a long enough
+period, ie, number of distinct counter values divided by
+frequency, to not roll over before our periodic update function
+has had a chance to update the reference timestamp data.
+.LP
+The periodic update function is called from \fChardclock()\fP which
+runs at a rate which is controlled by the kernel parameter
+.I HZ .
+.LP
+By default HZ is 100 which means that only hardware with a period
+longer than 10 msec is usable.
+If HZ is configured higher than 1000, an internal divider is
+activated to keep the timecounter periodic update running
+no more often than 2000 times per second.
+.LP
+Let us take an example:
+At HZ=100 a 16 bit counter can run no faster than:
+.DS
+.ce
+.EQ
+2 sup{16} cdot {100 Hz} = 6.5536 MHz
+.EN
+.DE
+Similarly, if the counter runs at 10MHz, the minimum HZ is
+.DS
+.ce
+.EQ
+{10 MHz} over {2 sup{16}} = 152.6 Hz
+.EN
+.DE
+.LP
+Some amount of margin is of course always advisable,
+and a factor two is considered prudent.
+.LP
+.SH
+Locking, lack of ...
+.PP
+Provided our hardware can be read atomically, that our arithmetic
+has enough bits to not roll over and that our clock frequency is
+perfectly, or at least sufficiently, stable, we could avoid the
+periodic update function, and consequently disregard the entire
+issue of locking.
+We are seldom that lucky in practice.
+.LP
+The straightforward way of dealing with meta data updates is to
+put a lock of some kind on the data and grab hold of that before
+doing anything.
+This would however be a very heavy-handed approach. First of
+all, the updates are infrequent compared to simple references,
+second it is not important which particular state of meta data
+a consumer gets hold of, as long as it is consistent: as long
+as the øCount sub{ref}ø and øT sub{ref}ø are a matching pair,
+and not old enough to cause an ambiguity with hardware counter
+rollover, a valid timestamp can be derived from them.
+.LP
+A pseudo-stable-storage with generation count method has been
+chosen instead.
+A ring of ten ``timehands'' data structures are used to hold the
+state of the timecounter system, the periodic update function
+updates the next structure with the new reference data and
+scaling factor and makes it the current timehands.
+.LP
+The beauty of this arrangement lies in the fact that even though
+a particular ``timehands'' data structure has been bumped from being
+the ``currents state'' by its successor, it still contains valid data
+for some amount of time into the future.
+.LP
+Therefore, a process which has started the timestamping process but
+suffered an interrupt which resulted in the above periodic processing
+can continue unaware of this afterwards and not suffer corruption
+or miscalculation even though it holds no locks on the shared
+meta-data.
+.if t .PSPIC fig4.eps
+.LP
+This scheme has an inherent risk that a process may be de-scheduled for
+so long time that it will not manage to complete the timestamping
+process before the entire ring of timehands have been recycled.
+This case is covered by each timehand having a private generation number
+which is temporarily set to zero during the periodic processing, to
+mark inconsistent data, and incremented to one more than the
+previous value when the update has finished and the timehands
+is again consistent.
+.LP
+The timestamping code will grab a copy of this generation number and
+compare this copy to the generation in the timehands after completion
+and if they differ it will restart the timestamping calculation.
+.DS
+.ps -1
+do {
+ th = timehands;
+ gen = th->th_generation;
+ /* calculate timestamp */
+} while (gen == 0 ||
+ gen != th->th_generation);
+.ps +1
+.DE
+.LP
+Each hardware device supporting timecounting is represented by a
+small data structure called a timecounter, which documents the
+frequency, the number of bits implemented by the counter and a method
+function to read the counter.
+.LP
+Part of the state in the timehands structure is a pointer to the
+relevant timecounter structure, this makes it possible to change
+to a one piece of hardware to another ``on the fly'' by updating
+the current timehands pointer in a manner similar to the periodic
+update function.
+.LP
+In practice this can be done with sysctl(8):
+.DS
+.ps -1
+sysctl kern.timecounter.hardware=TSC
+.ps +1
+.DE
+.LP
+at any time while the system is running.
+.SH
+Suitable hardware
+.PP
+A closer look on ``suitable hardware'' is warranted
+at this point.
+It is obvious from the above description that the ideal hardware
+for timecounting is a wide binary counter running at a constant
+high frequency
+and atomically readable by all CPUs in the system with a fast
+instruction(-sequence).
+.LP
+When looking at the hardware support on the PC platform, one
+is somewhat tempted to sigh deeply and mutter ``so much for theory'',
+because none of the above parameters seems to have been on the
+drawing board together yet.
+.LP
+All IBM PC derivatives contain a device more or less compatible
+with the venerable Intel i8254 chip.
+This device contains 3 counters of 16 bits each,
+one of which is wired so it can interrupt the CPU when the
+programmable terminal count is reached.
+.LP
+The problem with this device is that it only has 8bit bus-width,
+so reading a 16 bit timestamp takes 3 I/O operations: one to latch
+the count in an internal register, and two to read the high and
+low parts of that register respectively.
+.LP
+Obviously, on multi-CPU systems this cannot be done without some
+kind of locking mechanism preventing the other CPUs from trying
+to do the same thing at the same time.
+.LP
+Less obviously we find it is even worse than that:
+Since a low priority kernel thread
+might be reading a timestamp when an interrupt comes in, and since
+the interrupt thread might also attempt to generate a timestamp,
+we need to totally block interrupts out while doing those three
+I/O instructions.
+.LP
+And just to make life even more complicated, FreeBSD uses the same
+counter to provide the periodic interrupts which schedule the
+\fChardclock()\fP routine, so in addition the code has to deal with the
+fact that the counter does not count down from a power of two and
+that an interrupt is generated right after the reloading of the
+counter when it reaches zero.
+.LP
+Ohh, and did I mention that the interrupt rate for hardclock() will
+be set to a higher frequency if profiling is active ? \**
+.FS
+I will not even mention the fact that it can be set also to ridiculous
+high frequencies in order to be able to use the binary driven ``beep''
+speaker in the PC in a PCM fashion to output ``real sounds''.
+.FE
+.LP
+It hopefully doesn't ever get more complicated than that, but it
+shows, in its own bizarre and twisted way, just how little help the
+timecounter code needs from the actual hardware.
+.LP
+The next kind of hardware support to materialise was the ``CPU clock
+counter'' called ``TSC'' in official data-sheets.
+This is basically a on-CPU counter, which counts at the rate
+of the CPU clock.
+.LP
+Unfortunately, the electrical power needed to run a CPU is pretty
+precisely proportional with the clock frequency for the
+prevailing CMOS chip technology, so
+the advent of computers powered by batteries prompted technologies
+like APM, ACPI, SpeedStep and others which varies or throttles the
+CPU clock to match computing demand in order to minimise the power
+consumption \**.
+.FS
+This technology also found ways into stationary computers from
+two different vectors.
+The first vector was technical: Cheaper cooling solutions can be used
+for the CPU if they are employed resulting in cheaper commodity
+hardware.
+The second vector was political: For reasons beyond reason, energy
+conservation became an issue with personal computers, despite the fact
+that practically all north American households contains 4 to 5 household
+items which through inefficient designs waste more power than a
+personal computer use.
+.FE
+.LP
+Another wiggle for the TSC is that it is not usable on multi-CPU
+systems because the counter is implemented inside the CPU and
+not readable from other CPUs in the system.
+.LP
+The counters on different CPUs are not guaranteed
+to run syntonously (ie: show the same count at the same time).
+For some architectures like the DEC/alpha architecture they do not even
+run synchronously (ie: at the same rate) because the CPU clock frequency
+is generated by a small SAW device on the chip which is very sensitive
+to temperature changes.
+.LP
+The ACPI specification finally brings some light:
+it postulates the existence of a 24 or 32 bit
+counter running at a standardised constant frequency and
+specifically notes that this is intended to be used for timekeeping.
+.LP
+The frequency chosen, 3.5795454... MHz\**
+.FS
+The reason for this odd-ball frequency has to be sought in the ghastly
+colours offered by the original IBM PC Color Graphics Adapter: It
+delivered NTSC format output and therefore introduced the NTSC colour
+sync frequency into personal computers.
+.FE
+ is not quite as high as one
+could have wished for, but it is certainly a big improvement over
+the i8254 hardware in terms of access path.
+.LP
+But trust it to Murphys Law: The majority of implementations so far
+have failed to provide latching suitable to avoid meta-stability
+problems, and several readings from the counter is necessary to
+get a reliable timestamp.
+In difference from the i8254 mentioned above, we do not need to
+any locking while doing so, since each individual read is atomic.
+.LP
+An initialization routine tries to test if the ACPI counter is properly
+latched by examining the width of a histogram over read delta-values.
+.LP
+Other architectures are similarly equipped with means for timekeeping,
+but generally more carefully thought out compared to the haphazard
+developments of the IBM PC architecture.
+.LP
+One final important wiggle of all this, is that it may not be possible
+to determine which piece of hardware is best suited for clock
+use until well into or even after the bootstrap process.
+.LP
+One example of this is the Loran-C receiver designed by Prof. Dave Mills
+[MILLS1992]
+which is unsuitable as timecounter until the daemon program which
+implements the software-half of the receiver has properly initialised
+and locked onto a Loran-C signal.
+.SH
+Ideal timecounter hardware
+.LP
+As proof of concept, a sort of an existentialist protest against
+the sorry state describe above, the author undertook a project to
+prove that it is possible to do better than that, since none of
+the standard hardware offered a way to fully validate the timecounter
+design.
+.LP
+Using a COTS product, ``HOT1'', from Virtual Computers Corporation
+[VCC2002] containing a FPGA chip on a PCI form factor card, a 26
+bit timecounter running at 100MHz was successfully implemented.
+.LP
+.if t .PSPIC fig5.eps
+.LP
+.LP
+In order to show that timestamping does not necessarily have to
+be done using unpredictable and uncalibratable interrupts, an
+array of latches were implemented as well, which allow up to 10
+external signals to latch the reading of the counter when
+an external PPS signal transitions from logic high to logic
+low or vice versa.
+.LP
+Using this setup, a standard 133 MHz Pentium based PC is able to
+timestamp the PPS output of the Motorola UT+ GPS receiver with
+a precision of \(+- 10 nanoseconds \(+- one count which in practice
+averages out to roughly \(+- 15 nanoseconds\**:
+.FS
+The reason the plot does not show a very distinct 10 nanosecond
+quantization is that the GPS receiver produces the PPS signal from
+a clock with a roughly 55 nanosecond period and then predicts in
+the serial data stream how many nanoseconds this will be offset
+from the ideal time.
+This plot shows the timestamps corrected for this ``negative
+sawtooth correction''.
+.FE
+.LP
+.if t .PSPIC gps.ps
+.LP
+It shold be noted that the author is no hardware wizard and
+a number of issues in the implementation results in less than
+ideal noise performance.
+.LP
+Now compare this to ``ideal'' timecounter to the normal setup
+where the PPS signal is used
+to trigger an interrupt via the DCD pin on a serial port, and
+the interrupt handler calls \fCnanotime()\fP to timestamp
+the external event \**:
+.FS
+In both cases, the computers clock frequency controlled
+with a Rubidium Frequency standard.
+The average quality of crystals used for computers would
+totally obscure the curves due to their temperature coefficient.
+.FE
+.LP
+.if t .PSPIC intr.ps
+.LP
+It is painfully obvious that the interrupt latency is the
+dominant noise factor in PPS timestamping in the second case.
+The asymetric distribution of the noise in the second plot
+also more or less entirely invalidates the design assumption
+in the NTP PLL/FLL kernel code that timestamps are dominated
+by gaussian noise with few spikes.
+.SH
+Status and availability
+.PP
+The timecounter code has been developed and used in FreeBSD
+for a number of years and has now reached maturity.
+The source-code is located almost entirely in the kernel source file
+kern_tc.c, with a few necessary adaptations in code which
+interfaces to it, primarily the NTP PLL/FLL code.
+.LP
+The code runs on all FreeBSD platforms including i386, alpha,
+PC98, sparc64, ia64 and s/390 and contains no wordsize or
+endianess issues not specifically handled in the sourcecode.
+.LP
+The timecounter implementation is distributed under the ``BSD''
+open source license or the even more free ``Beer-ware'' license.
+.LP
+While the ability to accurately model and compensate for
+inaccuracies typical of atomic frequency standards are not
+catering to the larger userbase, but this ability and precision
+of the code guarntees solid support for the widespread deployment
+of NTP as a time synchronization protocol, without rounding
+or accumulative errors.
+.LP
+Adding support for new hardware and platforms have been
+done several times by other developers without any input from the
+author, so this particular aspect of timecounters design
+seems to work very well.
+.SH
+Future work
+.PP
+At this point in time, no specific plans exist for further
+development of the timecounters code.
+.LP
+Various micro-optimizations, mostly to compensate for inadequate
+compiler optimization could be contemplated, but the author
+resists these on the basis that they significantly decrease
+the readability of the source code.
+.SH
+Acknowledgements
+.PP
+.EQ
+delim ññ
+.EN
+The author would like to thank:
+.LP
+Bruce Evans
+for his invaluable assistance
+in taming the evil i8254 timecounter, as well as the enthusiastic
+resistance he has provided throughout.
+.PP
+Professor Dave Mills of University of Delaware for his work on
+NTP, for lending out the neglected twin Loran-C receiver and for
+picking up the glove when timecounters made it clear
+that the old ``microkernel'' NTP timekeeping code were not up to snuff
+[MILLS2000B].
+.PP
+Tom Van Baak for helping out, despite the best efforts of the National
+Danish Posts center for Customs and Dues to prevent it.
+.PP
+Corby Dawson for helping with the care and feeding for caesium standards.
+.PP
+The staff at the NELS Loran-C control station in Bø, Norway for providing
+information about step-changes.
+.PP
+The staff at NELS Loran-C station Eiðe, Faeroe
+Islands for permission to tour their installation.
+.PP
+The FreeBSD users for putting up with ``micro uptime went backwards''.
+.SH
+References
+.LP
+[AG2002]
+Published specifications for Agilent model 5071A Primary Frequency
+Standard on
+.br
+http://www.agilent.com
+.LP
+[DMK2001]
+"Accuracy Evaluation of a Cesium Fountain Primary Frequency Standard at NIST."
+D. M. Meekhof, S. R. Jefferts, M. Stephanovic, and T. E. Parker
+IEEE Transactions on instrumentation and measurement, VOL. 50, NO. 2,
+APRIL 2001.
+.LP
+[PHK2001]
+"Monitoring Natural Gas Usage"
+Poul-Henning Kamp
+http://phk.freebsd.dk/Gasdims/
+.LP
+[MILLS1992]
+"A computer-controlled LORAN-C receiver for precision timekeeping."
+Mills, D.L.
+Electrical Engineering Department Report 92-3-1, University of Delaware, March 1992, 63 pp.
+.LP
+[MILLS2000A]
+Levine, J., and D. Mills. "Using the Network Time Protocol to transmit International Atomic Time (TAI)". Proc. Precision Time and Time Interval (PTTI) Applications and Planning Meeting (Reston VA, November 2000), 431-439.
+.LP
+[MILLS2000B]
+"The nanokernel."
+Mills, D.L., and P.-H. Kamp.
+Proc. Precision Time and Time Interval (PTTI) Applications and Planning Meeting (Reston VA, November 2000), 423-430.
+.LP
+[RGO2002]
+For an introduction to Harrison and his clocks, see for
+instance
+.br
+http://www.rog.nmm.ac.uk/museum/harrison/
+.br
+or for
+a more detailed and possibly better researched account: Dava
+Sobels excellent book, "Longitude: The True Story of a Lone
+Genius Who Solved the Greatest Scientific Problem of His
+Time" Penguin USA (Paper); ISBN: 0140258795.
+.LP
+[SAGE]
+This ``gee-wiz'' kind of article in Dr. Dobbs Journal is a good place to
+start:
+.br
+http://www.ddj.com/documents/s=1493/ddj0001hc/0085a.htm
+.LP
+[VCC2002]
+Please consult Virtual Computer Corporations homepage:
+.br
+http://www.vcc.com
diff --git a/share/doc/papers/timecounter/tmac.usenix b/share/doc/papers/timecounter/tmac.usenix
new file mode 100644
index 0000000..c0c13c2
--- /dev/null
+++ b/share/doc/papers/timecounter/tmac.usenix
@@ -0,0 +1,953 @@
+.\" $FreeBSD$
+.ds CC "
+.nr PS 10
+.nr FU 0.0i \" priniter prints this much too low
+.nr VS 11
+.ds Q `\h'-0.02i'`
+.ds U '\h'-0.02i''
+.ds `` `\h'-0.02i'`
+.ds '' '\h'-0.02i''
+.\" footnote stuff
+.nr * 0 1
+.ds [. \|[
+.ds .] ]
+.if t .ds [, \s-2\v'-.4m'\f2
+.if n .ds [, [
+.if t .ds ,] \v'.4m'\s+2\fP
+.if n .ds ,] ]
+.ds * \*([,\\n+*\*(,]
+.ds [o ``
+.ds [c ''
+.ev 1
+.ps \n(PS
+.vs \n(VS
+.ev
+.de pp
+.PP
+..
+.de PP
+.LP
+.if t .ti 0.3i
+.if n .ti 5
+..
+.de LP
+.if t .sp 0.3
+.if n .sp
+.ne 1
+.in 0
+.nr Ia 0
+.nr Ic 0
+.fi
+..
+.de IP
+.if t .sp 0.3
+.if n .sp
+.\" Ia = total indent for this guy
+.\" Ib = .ti value for this guy
+.\" Ic = auxiliary indent
+.nr Ib 0.0i
+.if \\n(Ia=0 .nr Ia 0.2i
+.if !\\$1 \{\
+. nr Ia \w\\$1\ \ u
+. nr Ib \\n(Ia
+.\}
+.if !\\$2 .nr Ia \\$2n
+.in \\n(Iau
+.in +\\n(Icu
+.ti -\\n(Ibu
+.if !\\$1 \{\
+\&\\$1\ \ \c
+.\}
+..
+.de QP
+.IP
+..
+.de RS
+.nr Ic +0.2i
+..
+.de RE
+.nr Ic -0.2i
+..
+.de PN
+.rs
+'sp |10.4i-\\n(FUu
+.rs
+'sp |10.4i-\\n(FUu \" how many traps could there be?
+.rs
+'sp |10.4i-\\n(FUu
+.PO
+'ie e \{\
+.ev 2
+.\".if t 'tl \s10\f3%\\*(CC\fP\s0
+.ev
+'\}
+'el \{\
+.ev 2
+.\".if t 'tl \s10\f3\\*(CC%\fP\s0
+.ev
+'\}
+.po
+.wh 0 hh
+'bp
+..
+.de ff
+.nr dn 0
+.if \\nx \{\
+. ev 1
+. vs \\n(VVu
+. mk QR
+' nr QS 11i+0.5v-1u+\\nyu
+' if \\n(QS>\\n(QR 'if t 'sp |\\n(QSu
+. nf
+. FN \" print the footnotes
+. vs
+. rm FN
+. if \\n(.zfy .br\" end overflow diversion
+. if \\n(.zfy .di\" end overflow diversion
+. nr x 0 1
+. ev
+.\}
+.nr N +1
+.if \n(dn .fz \" leftover footnote
+.ie \\nN<\\nC \{\
+' if t 'sp |\\nTu
+' ns
+' po +3.12i \" postition of 2nd column
+.\}
+.el \{\
+. rF
+. PN
+. PO
+. nr N 0
+.\}
+.nr y 0-\\nb
+.nr QQ 11i-\\nb
+.ch fx
+.ch ff
+.if t .wh \\n(QQu ff
+.if n .wh 66 ff
+.wh 12i fx
+.ch fx \\n(QQu
+.if \\n(dn .fz
+..
+.de fz \" get leftover footnote
+.FS \&
+.nf
+.fy
+.FE
+..
+.de fx \" footnote overflow processing
+.if \\nx .di fy
+..
+.de FS \" start a footnote
+.if \\n(.t<=1.7v .ne 2
+.da FN
+.nr YY \\n(.lu
+.ev 1
+.if t .ll \\n(YYu
+.if n .ll 70
+.if \\n+x=1 .fs
+.fi
+.ie \\$1 \ \ \*([,\\n*\*(,]\c
+.el \ \ \*([,\\$1\*(,]\c
+.ps -1
+.vs -1
+.nr VV \\n(.v
+..
+.de FE
+.br
+.ps +1
+.vs +1
+.ev
+.da
+.nr y -\\n(dn
+.nr QR 11i-1v-1u+\\nyu \" y is negative
+.ie \\n(nlu+1v<\\n(QRu .ch ff \\n(QRu
+.el .ch ff \\n(nlu+1v
+..
+.de fs
+.br
+.vs \\n(VS
+\v'-0.4v'\s16\D'l 1.5i 0'\s0
+.sp -0.4v
+.vs
+..
+.de PO
+.if t \{\
+.ie e .po 1.20i
+.el .po 1.20i
+.\}
+.if n .po 0
+..
+.de NC
+'PO
+.if t 'll \\n(LLu
+.if n 'll 78
+'nr N 0
+..
+.de 2C
+.br
+.nr LL 2.85i
+'NC
+'nr C 2
+'mk T
+'ns
+..
+.de 1C
+.br
+.if t .nr LL 6.5i
+.if n .nr LL 78
+.NC
+'nr C 1
+'mk T
+'ns
+..
+.de rF \" reset footer to nominal
+.nr b 1.0i+\\n(FUu \" nominal footer place
+..
+.rF
+'nr x 0 1 \" init:
+.nr y 0-\nb
+.pl 11i
+.nr QQ 11i+\ny
+.wh \n(QQu ff
+.wh 12i fx
+.ch fx \n(QQu
+.de hh
+'rs
+'if t 'sp |0.5i-\\n(FUu
+.PO
+'ie e \{\
+.ev 2
+'if t 'tl \s10\f3\\*(T2\\*(A2\fP\s0
+.ev
+'\}
+'el \{\
+.ev 2
+'if t 'tl \s10\f3\\*(A2\\*(T2\fP\s0
+.ev
+'\}
+'if t 'sp |1i-\\n(FUu
+'mk T
+'ns
+'nr x 0 1 \" number of footnotes
+.nr y 0-\\nb
+.nr QQ 11i+\\ny
+.ch ff
+.wh \\n(QQu ff
+.ch fx
+.wh 12i fx
+.ch fx \\n(QQu
+..
+.\"-------------------
+.de TI
+.nh
+.rs
+.in 0i
+.nr % \\$1
+.fi
+.nr QS \\n(.lu
+.ll 100i
+.ps 14
+.vs 17
+.ft 3
+.ds TT \\
+..
+.de AA
+.nr DL \w\\*(TT
+.nr NN 1
+.nr NL \\n(QSu-1i \" a nice line length for title
+.if \\n(NLu*\\n(NNu<\\n(DLu .nr NN +1
+.if \\n(NLu*\\n(NNu<\\n(DLu .nr NN +1
+.if \\n(NLu*\\n(NNu<\\n(DLu .nr NN +1
+.if \\n(NLu*\\n(NNu<\\n(DLu .nr NN +1
+.if \\n(NLu*\\n(NNu<\\n(DLu .nr NN +1
+.nr QR (\\n(DLu/\\n(NNu)+0.75i \" +.75 cuz words don't always balance
+.ll \\n(QRu
+.di TU
+.ad l
+\\*(TT
+.br
+.di
+.sp |1.0i-\\n(FUu
+.nr NP 0
+.if \\n(QSu>\\n(QRu .nr NP (\\n(QSu-\\n(QRu)/2u
+.po +\\n(NPu
+.ce 999
+.TU
+.ce 0
+.po
+.ll \\n(QSu
+.sp 0.1i
+.ft 1
+.ps 12
+.vs 14
+.sp 0.5
+..
+.de A \" .A "Brian Author" "Affiliation"
+.in 0
+.ie !\\$2 \{\
+.ce
+\f1\\$1
+.ce
+\f2\\$2
+.\}
+.el \{\
+.ce
+\f1\\$1\f2
+.\}
+..
+.de AB
+.sp 0.20i
+.po +0.5i
+.ll -1.125i
+.ce
+\f3\s12ABSTRACT\s0\f1
+.sp 0.5
+.ps \\n(PS
+.vs \\n(VS
+.ad b
+.fi
+..
+.de EA
+.sp
+.if t .2C
+.if n .1C
+.hy 14
+..
+.de AE
+.EA
+..
+.de SH
+.br
+.in 0
+.di St
+.ft 3
+.it 1 S2
+..
+.de SH
+.NH "\\$1" "\\$2" "\\$3"
+..
+.de S2
+.br
+.di
+.sp 0.75
+.ne 3
+.ce
+.St
+.br
+.ft 1
+.sp 0.5
+.ns
+..
+.de NH
+.br
+.ne 2
+.in 0
+.nr Ia 0
+.nr Ic 0
+.fi
+.nr L 1
+.if !\\$1 .nr L \\$1\" level
+.if \\nL1 .ft 3
+.if \\nL2 .ft 3
+.if \\nL3 .ft 2
+.di Nt
+.in 0.3i
+.ti 0
+.it 1 N2
+..
+.de N2
+.br
+.in 0
+.di
+.if t .if \\nL1 .sp 0.75
+.if t .if \\nL2 .sp 0.25
+.if t .if \\nL3 .sp 0.25
+.if t .if \\nL4 .sp 0.25
+.if n .sp
+.ne 3
+.if \\nL1 .ce
+.Nt
+.br
+.ft 1
+.if t .if \\nL1 .sp 0.50
+.if t .if \\nL2 .sp 0.25
+.if t .if \\nL3 .sp 0.25
+.if t .if \\nL4 .sp 0.25
+.if n .sp
+.ns
+..
+.de XP
+.sp 0.5
+.ne 2
+.in \w[3]\ \ u
+.ti 0
+.ns
+..
+.de I
+.nr PQ \\n(.f
+.ft 2
+.if !"\\$1"" \&\\$1\\f\\n(PQ\\$2
+..
+.de R
+.ft 1
+..
+.de B
+.nr PQ \\n(.f
+.ft 3
+.if !\\$1 \&\\$1\\f\\n(PQ\\$2
+..
+.de T
+.nr PQ \\n(.f
+.if !\\$1 \&\\$3\f(CW\\$1\\f\\n(PQ\\$2
+..
+.de Ds
+'sp 0.4
+'nr DY \\n(.i
+'in 0.1i
+.if !\\$1 .in \\$1
+.ft CW
+.nf
+..
+.de DS
+.br
+.Ds \\$1
+..
+.de DE
+.br
+.De
+..
+.de De
+'sp 0.4
+.in \\n(DYu
+.ft 1
+.fi
+..
+.de np
+.br
+.in \w\(bu\ \ u
+.ti -\w\(bu\ \ u
+\(bu\ \ \c
+..
+.de lp
+.br
+.in 0
+..
+.de TS
+.br
+.ul 0
+.sp 0.5
+..
+.de TE
+.sp 0.5
+..
+.de RT
+.ft 1
+.ce 0
+.ul 0
+.if t 'll \\n(LLu
+.if n 'll \\n(LL
+.ps \\n(PS
+.vs \\n(VS
+.in 0
+.\"bd 1
+.ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n 80n
+.fi
+..
+.de KF
+'sp 0.4
+.ev 2
+.nr Zs \\n(.s
+.nr Zv \\n(.v
+.ll \\n(LLu
+.in 0
+..
+.de KE
+.br
+.ps \\n(Zs
+.vs \\n(Zvu
+.ev
+'sp 0.4
+..
+.de UX
+\\$3\s-2UNIX\s0\\$1\\$2
+..
+.de SM
+.ps -2
+..
+. \" LG - larger
+.de LG
+.ps +2
+..
+.de EB
+.nr QQ 11i-\\nb-\\$1
+.nr b +\\n(QQu
+.nr y 0+\\nyu-\\n(QQu
+.nr QQ 11i+\\ny
+.ch ff
+.wh \\n(QQu ff
+.ch fx
+.wh 12i fx
+.ch fx \\n(QQu
+..
+.\"==============================================
+.de Zz
+.if \\nN=1 'ch Zz
+'sp 11i
+..
+.de Z
+.br
+.mk Qz
+.ev 2
+.nr Qy \\n(.l
+.ll 6.5i
+.di J
+.in 0
+.ft 1
+..
+.de ZZ
+.br
+.if !\\$1 \{\
+. if !\\$2 .ll \\$2
+. sp 0.4
+. ce
+. ft 1
+\\$1
+. ft
+. if !\\$2 .ll
+.\}
+.di
+.ev
+.nr QQ \\n(.t-\\n(dn-10u
+.if \\n(QQ<0 .tm oops -- called Z too late on page \\n%!
+.if \\n(QQ<0 .ex
+.sp \\n(QQu
+.mk Q2
+.ev 2
+.in 0
+.nf
+.J
+.fi
+.rm J
+.ll \\n(.lu
+.ev
+.sp |\\n(Qzu
+.nr QQ \\n(Q2-0.8v
+.EB \\n(QQu
+..
+.\"======================================================
+.de KS
+.\".tm KS: Not implemented yet
+..
+.de KE
+.\".tm KE: Not implemented yet
+..
+.de KF
+.\".tm KF: Not implemented yet
+..
+.ds ' \h'\w'e'u*4/10'\z\(aa\h'-\w'e'u*4/10'
+.de BE
+.br
+..
+.lt 6.5i
+.de T1
+.ds T2 \\$1
+..
+.de A1
+.ds A2 \\$1
+..
+.nr P1 1.1i \" picture width
+.nr P2 14u*\n(P1u/10u \" picture depth
+.de BB
+.in 0
+.\".nr QQ \\n(P2+0.1i
+.\".ne \\n(QQu
+.\".rs
+.\".ll -\\n(P1u
+.\".ll -0.1i
+.\".po +\\n(.lu+0.1i
+.\".sp 0.3
+.\"
+.\".sp -0.8
+.\"\!H\\n(.o
+.\".mk QQ
+.\"\!V\\n(QQ
+.\"\!DZ \\n(P1 \\n(P2
+.\".ie \\$1 .tm Picture not yet inserted for .BB
+.\".el \!P \\$1
+.\".sp -0.3
+.\".po
+.\".sp -1
+.\".if \\$1 \{\
+.\"\h'0.1i'\h'\\n(.lu'\D'l \\n(P1u 0'\D'l 0 \\n(P2u'\D'l -\\n(P1u 0'\D'l 0 -\\n(P2u'
+.\".sp -1
+.\".\}
+.\".sp 0.8
+.\".mk QQ
+.\".nr QQ +\\n(P2u
+.\".wh \\n(QQu Bb
+.\"=====
+.\" ::: .sp 1
+.\" ::: .ne 2
+.if \\n(SB=0 \{\
+.NH 1
+Author Information
+.\}
+.nr SB 1
+.PP
+..
+.de Bb
+'ch Bb
+'ll +\\n(P1u
+'ll +0.1i
+..
+.de GS
+.br
+..
+.de GE
+..
+.nr SL 0.3
+.nr LI 0.28i
+.de BL \" begin list
+.br
+.sp \\n(SL
+.in +\\n(LIu
+.ll -0.1i
+.if \\n(Ld \{\
+. ds Z\\n(Ld \\*(LT
+. af LN 1
+. nr N\\n(Ld \\n(LN
+. ds C\\n(Ld \\*(LC
+.\}
+.nr Ld +1
+.ds LT \\$1\" LT is the List Type: 1, a, or a bulletchar
+.if \\$1 .if '\\n(Ld'1'.ds LT \(bu
+.if \\$1 .if '\\n(Ld'2'.ds LT \(ci
+.if \\$1 .if '\\n(Ld'3'.ds LT \(sq
+.if '\\*(LT'1' .af LN \\$1
+.if '\\*(LT'i' .af LN \\$1
+.if '\\*(LT'I' .af LN \\$1
+.if '\\*(LT'a' .af LN \\$1
+.if '\\*(LT'A' .af LN \\$1
+.nr LN 0 \" LN is the list element number
+.ds LC\\$2
+.\" LC is the optional bullet trailer...
+..
+.de LE \" list element
+.br
+.ie '\\$1'' .nr LN +1
+.el \{\
+. nr LN 0
+. nr LN \\$1
+.\}
+.ds LX \\*(LT\\*(LC
+.if \\*(LT1 .ds LX \\n(LN\\*(LC
+.if \\*(LTa .ds LX \\n(LN\\*(LC
+.if \\*(LTA .ds LX \\n(LN\\*(LC
+.if \\*(LTi .ds LX \\n(LN\\*(LC
+.if \\*(LTI .ds LX \\n(LN\\*(LC
+.if \\n(LN=0 \{\
+. if !'\\$1'' .ds LX \\$1\\*(LC
+.\}
+.nr QQ 3u*\w' 'u/2u
+.ti -\\w'\\*(LX\h'\\n(QQu''u
+\\*(LX\h'\\n(QQu'\c
+..
+.de EL \" end list
+.br
+.nr Ld -1
+.if \\n(Ld>=0 \{\
+. ds LT \\*(Z\\n(Ld
+. nr LN \\n(N\\n(Ld
+. ds LC \\*(C\\n(Ld
+.if '\\*(LT'1' .af LN \\*(LT
+.if '\\*(LT'i' .af LN \\*(LT
+.if '\\*(LT'I' .af LN \\*(LT
+.if '\\*(LT'a' .af LN \\*(LT
+.if '\\*(LT'A' .af LN \\*(LT
+. \}
+.in -\\n(LIu
+.ll +0.1i
+..
+.de F1
+.in 0
+\v'-0.4'\D'l \\n(.lu 0'
+.sp -0.7
+.in
+..
+.de F2
+.mk QQ
+.if !'\\nT'\\n(QQ' \{\
+.in 0
+\v'-0.4'\D'l \\n(.lu 0'
+.sp -0.4
+.in
+.\}
+..
+.de EM
+.br
+.if o \{\
+.ds A2
+.ds T2
+.rs
+.bp
+.ch ff
+.ch fx
+.PO
+.rs
+.sp |10.4i-\\n(FUu
+.mk QQ
+'ie e \{\
+. ev 2
+.if t 'tl \s10\f3%\\*(CC\fP\s0
+. ev
+' \}
+'el \{\
+. ev 2
+.if t 'tl \s10\f3\\*(CC%\fP\s0
+. ev
+' \}
+.\}
+..
+.de RF
+.sp 0.1
+.in 0.3i
+.ie !\\$1 \{\
+.nr QQ \w'\\$1\ '
+.ti -\\n(QQu
+\\$1\ \c
+.\}
+.el .ti 0
+..
+.de RZ
+.sp 0.1
+.in 0.3i
+.nr QQ \w'\\$1\ '
+.ti -\\n(QQu
+\\$1\ \c
+..
+.de zz
+.tm note: .zz is not implemented.
+.ex
+.nr Z1 \\$1
+.nr Z2 \\$2
+.if \\n(.t<\\n(Z2 .tm note that figure ``\\$3'' does not fit at column bottom ------------------------ on page \\n%
+.ie '\\n(.z'' \{\
+.sp 0.2
+.ne \\n(Z2u
+\\!H\\n(.o
+.mk QQ
+.nr QQ +0.25v
+\\!V\\n(QQ
+\\!DZ \\n(Z1 \\n(Z2
+\\!P \\$3
+.rs
+.sp \\n(Z2u
+.sp 0.2
+.\}
+.el \{\
+.sp 0.2
+\\!.z3 \\n(Z1 \\n(Z2 "\\$3" \\n(.o
+.sp \\n(Z2u
+.sp 0.2
+.\}
+..
+.de z2
+.nr Z1 \\$1
+.nr Z2 \\$2
+.sp 0.2
+.ne \\n(Z2u
+.nr QQ (\\n(.lu-\\$1)/2u
+.sp \\n(Z2u
+.vs 0
+.po +\\n(QQu
+\X'ps: import \\$3 0 0 1 1 \\n(Z1 \\n(Z2'
+.br
+.po -\\n(QQu
+.vs
+.rs
+.sp 0.2
+..
+.de sz
+.vs \\$1
+.ps \\$1
+..
+.de M
+\f2\\$1\f1\|(\\$2)\\$3
+..
+.de B1
+.br
+.mk Bz
+..
+.de B2
+.br
+.mk By
+.nr D \\n(Byu-\\n(Bzu
+.nr L \\n(.lu+0.2i-\\n(.iu
+\h'-0.1i'\v'-0.7v'\D'l \\nLu 0'\D'l 0 -\\nDu'\D'l -\\nLu 0'\D'l 0 \\nDu'
+.sp -1
+..
+.de []
+.][ \\$1
+..
+.de ][
+.if \\$1>5 .tm Bad arg to []
+.[\\$1
+..
+.de [5 \" tm style
+.FS
+\\*([A, \\f2\\*([T\\f1,
+.ie \\n(TN \\*([M.
+.el Bell Laboratories internal memorandum (\\*([D).
+.RT
+.FE
+..
+.de [0 \" other
+.FS
+.nr [: 0
+.if !\\*([F .FP \\*([F
+.if !\\*([Q \{\
+.nr [: 1
+\\*([Q\c
+.\}
+.if !\\*([A \{\
+.nr [: 1
+\\*([A\c
+.\}
+.if !\\*([T \{\
+.if \\n([:>0 ,
+.nr [: 1
+\f2\\*([T\f1\c
+.\}
+.if !\\*([S , \\*([S\c
+.if !\\*([V , \\*([V\c
+.if !\\*([P \{\
+.ie \\n([P>0 , pp. \\*([P\c
+.el , p. \\*([P\c
+.\}
+.if !\\*([C , \\*([C\c
+.if !\\*([D , \\*([D\c
+.if \\n([:>0 \&.
+.if !\\*([O \\*([O
+.FE
+..
+.de [1
+.FS
+.if !\\*([F .FP \\*([F
+.if !\\*([Q \\*([Q,
+.if !\\*([A \\*([A,
+.if !\\*([T \\*([o\\*([T,\\*([c
+\f2\\*([J\f1\c
+.if !\\*([V , vol. \\*([V\c
+.if !\\*([N , no. \\*([N\c
+.if !\\*([P \{\
+.ie \\n([P>0 , pp. \\*([P\c
+.el , p. \\*([P\c
+.\}
+.if !\\*([I , \\*([I\c
+.if !\\*([C , \\*([C\c
+.if !\\*([D , \\*([D\c
+\&.
+.if !\\*([O \\*([O
+.FE
+..
+.de [2 \" book
+.FS
+.if !\\*([F .FP \\*([F
+.if !\\*([Q \\*([Q,
+.if !\\*([A \\*([A,
+.if !\\*([T \f2\\*([T,\f1
+.if !\\*([S \\*([S,
+.if !\\*([V \\*([V,
+.if !\\*([P \{\
+.ie \\n([P>0 pp. \\*([P,
+.el p. \\*([P,
+.\}
+\\*([I\c
+.if !\\*([C , \\*([C\c
+.if !\\*([D , \\*([D\c
+\&.
+.if !\\*([O \\*([O
+.FE
+..
+.de [4 \" report
+.FS
+.if !\\*([F .FP \\*([F
+.if !\\*([Q \\*([Q,
+.if !\\*([A \\*([A,
+.if !\\*([T \\*([o\\*([T,\\*([c
+.if !\\*([R \\*([R\c
+.if !\\*([G \& (\\*([G)\c
+.if !\\*([P \{\
+.ie \\n([P>0 , pp. \\*([P\c
+.el , p. \\*([P\c
+.\}
+.if !\\*([I , \\*([I\c
+.if !\\*([C , \\*([C\c
+.if !\\*([D , \\*([D\c
+\&.
+.if !\\*([O \\*([O
+.FE
+..
+.de [3 \" article in book
+.FS
+.if !\\*([F .FP \\*([F
+.if !\\*([Q \\*([Q,
+.if !\\*([A \\*([A,
+.if !\\*([T \\*([o\\*([T,\\*([c
+in \f2\\*([B\f1\c
+.if !\\*([E , ed. \\*([E\c
+.if !\\*([S , \\*([S\c
+.if !\\*([V , vol. \\*([V\c
+.if !\\*([P \{\
+.ie \\n([P>0 , pp. \\*([P\c
+.el , p. \\*([P\c
+.\}
+.if !\\*([I , \\*([I\c
+.if !\\*([C , \\*([C\c
+.if !\\*([D , \\*([D\c
+\&.
+.if !\\*([O \\*([O
+.FE
+..
+.de [<
+.]>
+..
+.de ]<
+.SH
+References
+.LP
+.de FP
+.\".IP \\\\$1.
+.RZ \\\\$1.
+\\..
+.rm FS FE
+..
+.de [>
+.]>
+..
+.de ]>
+.sp
+..
+.de [-
+.]-
+..
+.de ]-
+.rm [Q [A [T [J [B [E [S [V
+.rm [N [P [I [C [D [O [R [G
+..
+.de FG
+.ds QQ \fB\\$1\\fP: \\$2
+.ie \w\\*(QQ>\\n(.l \{\
+.in +0.25i
+.ti 0
+\\*(QQ
+.in 0
+.\}
+.el \{\
+.ce
+\\*(QQ
+.\}
+..
+.1C
diff --git a/share/doc/psd/01.cacm/Makefile b/share/doc/psd/01.cacm/Makefile
new file mode 100644
index 0000000..14a2f70
--- /dev/null
+++ b/share/doc/psd/01.cacm/Makefile
@@ -0,0 +1,16 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/01.cacm
+SRCS= stubs p.mac p1 p2 p3 p4 p5 p6
+EXTRA= ref.bib
+MACROS= -ms
+USE_REFER=
+USE_TBL=
+CLEANFILES= stubs
+
+stubs:
+ @(echo .R1; echo database ${.CURDIR}/ref.bib; \
+ echo accumulate; echo .R2) > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/01.cacm/p.mac b/share/doc/psd/01.cacm/p.mac
new file mode 100644
index 0000000..5450b5d
--- /dev/null
+++ b/share/doc/psd/01.cacm/p.mac
@@ -0,0 +1,31 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)p.mac 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.de P1
+.DS
+..
+.de P2
+.DE
+..
+.de UL
+.lg 0
+.if n .ul
+\%\&\\$3\f3\\$1\fR\&\\$2
+.lg
+..
+.de UC
+\&\\$3\s-1\\$1\\s0\&\\$2
+..
+.de IT
+.lg 0
+.if n .ul
+\%\&\\$3\f2\\$1\fR\&\\$2
+.lg
+..
+.de SP
+.sp \\$1
+..
diff --git a/share/doc/psd/01.cacm/p1 b/share/doc/psd/01.cacm/p1
new file mode 100644
index 0000000..88987e0
--- /dev/null
+++ b/share/doc/psd/01.cacm/p1
@@ -0,0 +1,567 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)p1 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.OH 'The UNIX Time-Sharing System''PSD:1-%'
+.EH 'PSD:1-%''The UNIX Time-Sharing System'
+.ds n \s+2
+.hw above-mentioned
+.ds s \s-2
+.ds m \v'-.3'.\v'.3'
+.TL
+The UNIX
+Time-Sharing System\f1\s10\v'-.2n'*\v'.2n'\s0\fP
+.AU
+D. M. Ritchie and K. Thompson
+.AB
+.FS
+* Copyright 1974,
+Association for Computing Machinery, Inc.,
+reprinted by permission.
+This is a revised version of an article
+that appeared in Communications of the \*sACM\*n,
+.IT 17 ,
+No. 7 (July 1974), pp. 365-375.
+That article was a
+revised version of a paper presented
+at the Fourth \*sACM\*n Symposium on Operating
+Systems Principles,
+\*sIBM\*n Thomas J. Watson Research Center,
+Yorktown Heights,
+New York,
+October 15-17, 1973.
+.FE
+.UX
+is a general-purpose, multi-user, interactive
+operating system for the larger Digital Equipment Corporation
+\*sPDP\*n-11 and
+the Interdata 8/32 computers.
+It offers a number of features
+seldom found even in larger operating
+systems, including
+.IP i
+A hierarchical file system incorporating
+demountable volumes,
+.IP ii
+Compatible file, device, and inter-process I/O,
+.IP iii
+The ability to initiate asynchronous processes,
+.IP iv
+System command language selectable on a per-user basis,
+.IP v
+Over 100 subsystems including a dozen languages,
+.IP vi
+High degree of portability.
+.LP
+This paper discusses the nature
+and implementation of the file system
+and of the user command interface.
+.AE
+.NH
+INTRODUCTION
+.PP
+There have been four versions of
+the
+.UX
+time-sharing system.
+.hy 12
+The earliest (circa 1969-70) ran on
+the Digital Equipment Corporation \*sPDP\*n-7 and -9 computers.
+The second version ran on the unprotected
+\*sPDP\*n-11/20 computer.
+The third incorporated multiprogramming and ran
+on the \*sPDP\*n-11/34, /40, /45, /60, and /70 computers;
+it is the one described in the previously published version
+of this paper, and is also the most widely used today.
+.hy 14
+This paper describes only the
+fourth, current
+system that runs on the \*sPDP\*n-11/70 and the
+Interdata 8/32 computers.
+In fact, the differences among the various systems is
+rather small;
+most of the revisions made to the originally published version of this
+paper,
+aside from those concerned with style,
+had to do with details of the implementation of the file system.
+.PP
+Since
+\*sPDP\*n-11
+.UX
+became operational
+in February, 1971,
+over 600 installations have been put into service.
+Most of them are engaged in applications such as
+computer science education,
+the preparation and formatting of documents
+and other textual material,
+the collection and processing of trouble data
+from various switching machines within the Bell System,
+and recording and checking telephone service
+orders.
+Our own installation is used mainly for research
+in operating systems, languages,
+computer networks,
+and other topics in computer science, and also for
+document preparation.
+.PP
+Perhaps the most important achievement of
+.UX
+is to demonstrate
+that
+a powerful operating system for interactive use
+need not be expensive either in equipment or in human
+effort:
+it
+can run on hardware costing as little as $40,000, and
+less than two man-years were spent on the main system
+software.
+We hope, however, that users find
+that the
+most important characteristics of the system
+are its simplicity, elegance, and ease of use.
+.PP
+Besides the operating system proper, some major programs
+available under
+.UX
+are
+.DS
+.nf
+C compiler
+Text editor based on \*sQED\*n
+.[
+qed lampson
+.]
+Assembler, linking loader, symbolic debugger
+Phototypesetting and equation setting programs
+.[
+cherry kernighan typesetting mathematics cacm
+.]
+.[
+kernighan lesk ossanna document preparation bstj
+%Q This issue
+.]
+.fi
+.in +3n
+.ll -5n
+.ti -3n
+Dozens of languages including
+Fortran 77, Basic, Snobol, \*sAPL\*n, Algol 68, M6, \*sTMG\*n, Pascal
+.in
+.ll
+.DE
+There is a host of maintenance, utility, recreation and novelty programs,
+all written locally.
+The
+.UX
+user community, which numbers in the thousands,
+has contributed many more programs and languages.
+It is worth noting that the system is totally self-supporting.
+All
+.UX
+software is maintained on
+the
+system;
+likewise, this paper and all other
+documents
+in this issue
+were generated and formatted by the
+.UX
+editor and text formatting
+programs.
+.SH
+II. HARDWARE AND SOFTWARE ENVIRONMENT
+.PP
+The \*sPDP\*n-11/70 on which the Research
+.UX
+system is installed is a 16-bit
+word (8-bit byte) computer with 768K bytes of core memory;
+the system kernel
+occupies 90K bytes
+about equally divided between code
+and data tables.
+This system, however, includes a very large number of
+device drivers
+and enjoys a generous allotment
+of space for I/O buffers and system tables;
+a minimal system capable of running the software
+mentioned above can
+require as little as 96K bytes
+of core altogether.
+There are even larger installations;
+see the description of the
+\*sPWB/UNIX\*n systems,
+.[
+dolotta mashey workbench software engineering
+.]
+.[
+dolotta haight mashey workbench bstj
+%Q This issue
+.]
+for example.
+There are also much smaller, though somewhat restricted,
+versions of the system.
+.[
+lycklama microprocessor bstj
+%Q This issue
+.]
+.PP
+Our own \*sPDP\*n-11 has two
+200-Mb moving-head disks
+for file system storage and swapping.
+There are 20 variable-speed
+communications interfaces
+attached to 300- and 1200-baud data sets,
+and an additional 12 communication lines
+hard-wired to 9600-baud terminals and
+satellite computers.
+There are also several 2400- and 4800-baud
+synchronous communication interfaces
+used for machine-to-machine file transfer.
+Finally, there is a variety
+of miscellaneous
+devices including
+nine-track magnetic tape,
+a line printer,
+a voice synthesizer,
+a phototypesetter,
+a digital switching network,
+and a chess machine.
+.PP
+The preponderance of
+.UX
+software is written in the
+abovementioned C language.
+.[
+c programming language kernighan ritchie prentice-hall
+.]
+Early versions of the operating system were written in assembly language,
+but during the summer of 1973, it was rewritten in C.
+The size of the new system was about one-third greater
+than that of the old.
+Since the new system not only became much easier to
+understand and to modify but also
+included
+many functional improvements,
+including multiprogramming and the ability to
+share reentrant code among several user programs,
+we consider this increase in size quite acceptable.
+.SH
+III. THE FILE SYSTEM
+.PP
+The most important role of
+the system
+is to provide
+a file system.
+From the point of view of the user, there
+are three kinds of files: ordinary disk files,
+directories, and special files.
+.SH
+3.1 Ordinary files
+.PP
+A file
+contains whatever information the user places on it,
+for example, symbolic or binary
+(object) programs.
+No particular structuring is expected by the system.
+A file of text consists simply of a string
+of characters, with lines demarcated by the newline character.
+Binary programs are sequences of words as
+they will appear in core memory when the program
+starts executing.
+A few user programs manipulate files with more
+structure;
+for example, the assembler generates, and the loader
+expects, an object file in a particular format.
+However,
+the structure of files is controlled by
+the programs that use them, not by the system.
+.SH
+3.2 Directories
+.PP
+Directories provide
+the mapping between the names of files
+and the files themselves, and thus
+induce a structure on the file system as a whole.
+Each user has a directory of his own files;
+he may also create subdirectories to contain
+groups of files conveniently treated together.
+A directory behaves exactly like an ordinary file except that it
+cannot be written on by unprivileged programs, so that the system
+controls the contents of directories.
+However, anyone with
+appropriate permission may read a directory just like any other file.
+.PP
+The system maintains several directories
+for its own use.
+One of these is the
+.UL root
+directory.
+All files in the system can be found by tracing
+a path through a chain of directories
+until the desired file is reached.
+The starting point for such searches is often the
+.UL root .
+Other system directories contain all the programs provided
+for general use; that is, all the
+.IT commands .
+As will be seen, however, it is by no means necessary
+that a program reside in one of these directories for it
+to be executed.
+.PP
+Files are named by sequences of 14 or
+fewer characters.
+When the name of a file is specified to the
+system, it may be in the form of a
+.IT path
+.IT name ,
+which
+is a sequence of directory names separated by slashes, ``/\^'',
+and ending in a file name.
+If the sequence begins with a slash, the search begins in the
+root directory.
+The name
+.UL /alpha/beta/gamma
+causes the system to search
+the root for directory
+.UL alpha ,
+then to search
+.UL alpha
+for
+.UL beta ,
+finally to find
+.UL gamma
+in
+.UL beta .
+.UL \&gamma
+may be an ordinary file, a directory, or a special
+file.
+As a limiting case, the name ``/\^'' refers to the root itself.
+.PP
+A path name not starting with ``/\^'' causes the system to begin the
+search in the user's current directory.
+Thus, the name
+.UL alpha/beta
+specifies the file named
+.UL beta
+in
+subdirectory
+.UL alpha
+of the current
+directory.
+The simplest kind of name, for example,
+.UL alpha ,
+refers to a file that itself is found in the current
+directory.
+As another limiting case, the null file name refers
+to the current directory.
+.PP
+The same non-directory file may appear in several directories under
+possibly different names.
+This feature is called
+.IT linking ;
+a directory entry for a file is sometimes called a link.
+The
+.UX
+system
+differs from other systems in which linking is permitted
+in that all links to a file have equal status.
+That is, a file does not exist within a particular directory;
+the directory entry for a file consists merely
+of its name and a pointer to the information actually
+describing the file.
+Thus a file exists independently of any
+directory entry, although in practice a file is made to
+disappear along with the last link to it.
+.PP
+Each directory always has at least two entries.
+The name
+``\|\fB.\|\fP'' in each directory refers to the directory itself.
+Thus a program
+may read the current directory under the name ``\fB\|.\|\fP'' without knowing
+its complete path name.
+The name ``\fB\|.\|.\|\fP'' by convention refers to the parent of the
+directory in which it appears, that is, to the directory in which
+it was created.
+.PP
+The directory structure is constrained to have the form
+of a rooted tree.
+Except for the special entries ``\|\fB\|.\|\fP'' and ``\fB\|.\|.\|\fP'', each directory
+must appear as an entry in exactly one other directory, which is its
+parent.
+The reason for this is to simplify the writing of programs
+that visit subtrees of the directory structure, and more
+important, to avoid the separation of portions of the hierarchy.
+If arbitrary links to directories were permitted, it would
+be quite difficult to detect when the last connection from
+the root to a directory was severed.
+.SH
+3.3 Special files
+.PP
+Special files constitute the most unusual feature of the
+.UX
+file system.
+Each supported I/O device
+is associated with at least one such file.
+Special files are read and written just like ordinary
+disk files, but requests to read or write result in activation of the associated
+device.
+An entry for each special file resides in directory
+.UL /dev ,
+although a link may be made to one of these files
+just as it may to an ordinary file.
+Thus, for example,
+to write on a magnetic tape
+one may write on the file
+.UL /dev/mt .
+Special files exist for each communication line, each disk,
+each tape drive,
+and for physical main memory.
+Of course,
+the active disks
+and the memory special file are protected from
+indiscriminate access.
+.PP
+There is a threefold advantage in treating
+I/O devices this way:
+file and device I/O
+are as similar as possible;
+file and device names have the same
+syntax and meaning, so that
+a program expecting a file name
+as a parameter can be passed a device
+name; finally,
+special files are subject to the same
+protection mechanism as regular files.
+.SH
+3.4 Removable file systems
+.PP
+Although the root of the file system is always stored on the same
+device,
+it is not necessary that the entire file system hierarchy
+reside on this device.
+There is a
+.UL mount
+system request with two arguments:
+the name of an existing ordinary file, and the name of a special
+file whose associated
+storage volume (e.g., a disk pack) should have the structure
+of an independent file system
+containing its own directory hierarchy.
+The effect of
+.UL mount
+is to cause
+references to the heretofore ordinary file
+to refer instead to the root directory
+of the file system on the removable volume.
+In effect,
+.UL mount
+replaces a leaf of the hierarchy tree (the ordinary file)
+by a whole new subtree (the hierarchy stored on the
+removable volume).
+After the
+.UL mount ,
+there is virtually no distinction
+between files on the removable volume and those in the
+permanent file system.
+In our installation, for example,
+the root directory resides
+on a small partition of one of
+our disk drives,
+while the other drive,
+which contains the user's files,
+is mounted by the system initialization
+sequence.
+A mountable file system is generated by
+writing on its corresponding special file.
+A utility program is available to create
+an empty file system,
+or one may simply copy an existing file system.
+.PP
+There is only one exception to the rule of identical
+treatment of files on different devices:
+no link may exist between one file system hierarchy and
+another.
+This restriction is enforced so as to avoid
+the elaborate bookkeeping
+that would otherwise be required to assure removal of the links
+whenever the removable volume is dismounted.
+.SH
+3.5 Protection
+.PP
+Although the access control scheme
+is quite simple, it has some unusual features.
+Each user of the system is assigned a unique
+user identification number.
+When a file is created, it is marked with
+the user \*sID\*n of its owner.
+Also given for new files
+is a set of ten protection bits.
+Nine of these specify
+independently read, write, and execute permission
+for the
+owner of the file,
+for other members of his group,
+and for all remaining users.
+.PP
+If the tenth bit is on, the system
+will temporarily change the user identification
+(hereafter, user \*sID\*n)
+of the current user to that of the creator of the file whenever
+the file is executed as a program.
+This change in user \*sID\*n is effective only
+during the execution of the program that calls for it.
+The set-user-\*sID\*n feature provides
+for privileged programs that may use files
+inaccessible to other users.
+For example, a program may keep an accounting file
+that should neither be read nor changed
+except by the program itself.
+If the set-user-\*sID\*n bit is on for the
+program, it may access the file although
+this access might be forbidden to other programs
+invoked by the given program's user.
+Since the actual user \*sID\*n
+of the invoker of any program
+is always available,
+set-user-\*sID\*n programs
+may take any measures desired to satisfy themselves
+as to their invoker's credentials.
+This mechanism is used to allow users to execute
+the carefully written
+commands
+that call privileged system entries.
+For example, there is a system entry
+invokable only by the ``super-user'' (below)
+that creates
+an empty directory.
+As indicated above, directories are expected to
+have entries for ``\fB\|.\|\fP'' and ``\fB\|.\|.\|\fP''.
+The command which creates a directory
+is owned by the super-user
+and has the set-user-\*sID\*n bit set.
+After it checks its invoker's authorization to
+create the specified directory,
+it creates it and makes the entries
+for ``\fB\|.\|\fP'' and ``\fB\|.\|.\|\fP''.
+.PP
+Because anyone may set the set-user-\*sID\*n
+bit on one of his own files,
+this mechanism is generally
+available without administrative intervention.
+For example,
+this protection scheme easily solves the \*sMOO\*n
+accounting problem posed by ``Aleph-null.''
+.[
+aleph null software practice
+.]
+.PP
+The system recognizes one particular user \*sID\*n (that of the ``super-user'') as
+exempt from the usual constraints on file access; thus (for example),
+programs may be written to dump and reload the file
+system without
+unwanted interference from the protection
+system.
diff --git a/share/doc/psd/01.cacm/p2 b/share/doc/psd/01.cacm/p2
new file mode 100644
index 0000000..8373c0e
--- /dev/null
+++ b/share/doc/psd/01.cacm/p2
@@ -0,0 +1,448 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)p2 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+3.6 I/O calls
+.PP
+The system calls to do I/O are designed to eliminate
+the differences between the various devices and styles of
+access.
+There is no distinction between ``random''
+and ``sequential'' I/O, nor is any logical record size imposed
+by the system.
+The size of an ordinary file is determined
+by the number of bytes written on it;
+no predetermination of the size of a file is necessary
+or possible.
+.PP
+To illustrate the essentials of I/O,
+some of the basic calls are
+summarized below
+in an anonymous language that will
+indicate the required parameters without getting into the
+underlying
+complexities.
+Each call to the system may potentially result in an error
+return, which for simplicity is not represented
+in the calling sequence.
+.PP
+To read or write a file assumed to exist already, it must
+be opened by the following call:
+.P1
+filep = open\|(\|name, flag\|)
+.P2
+where
+.UL name
+indicates the name of the file.
+An arbitrary path name may be given.
+The
+.UL flag
+argument indicates whether the file is to be read, written,
+or ``updated,'' that is, read and written simultaneously.
+.PP
+The returned value
+.UL filep
+is called a
+.IT "file descriptor" .
+It is a small integer used to identify the file
+in subsequent calls to read, write,
+or otherwise manipulate the file.
+.PP
+To create a new file or completely rewrite an old one,
+there is a
+.UL create
+system call that
+creates the given file if it does not exist,
+or truncates it to zero length
+if it does exist;
+.UL create
+also opens the new file for writing
+and, like
+.UL open ,
+returns a file descriptor.
+.PP
+The file system maintains no locks visible to the user, nor is there any
+restriction on the number of users who may have a file
+open for reading or writing.
+Although it is possible for the contents of a file
+to become scrambled when two users write on it simultaneously,
+in practice difficulties do not arise.
+We take the view that locks are neither
+necessary nor sufficient, in our environment,
+to prevent interference between users of the same file.
+They are unnecessary because we are not
+faced with large, single-file data bases
+maintained by independent processes.
+They are insufficient because
+locks in the ordinary sense, whereby
+one user is prevented from writing on a file that another
+user is reading,
+cannot prevent confusion
+when, for example, both users are editing
+a file with an editor that makes
+a copy of the file being edited.
+.PP
+There are, however,
+sufficient internal interlocks to maintain
+the logical consistency of the file system
+when two users engage simultaneously in
+activities such as writing on
+the same file,
+creating files in the same directory,
+or deleting each other's open files.
+.PP
+Except as indicated below, reading and writing
+are sequential.
+This means that if a particular
+byte in the file was the last byte written (or read),
+the next I/O call implicitly refers to the
+immediately following byte.
+For each open file there is a pointer, maintained
+inside the system,
+that indicates the next byte to be read
+or written.
+If
+.IT n
+bytes are read or written, the pointer advances
+by
+.IT n
+bytes.
+.PP
+Once a file is open, the following calls
+may be used:
+.P1
+n = read\|(\|filep, buffer, count\|)
+n = write\|(\|filep, buffer, count\|)
+.P2
+Up to
+.UL count
+bytes are transmitted between the file specified
+by
+.UL filep
+and the byte array
+specified by
+.UL buffer .
+The returned value
+.UL n
+is the number of bytes actually transmitted.
+In the
+.UL write
+case,
+.UL n
+is the same as
+.UL count
+except under exceptional conditions, such as I/O errors or
+end of physical medium on special files;
+in a
+.UL read ,
+however,
+.UL n
+may without error be less than
+.UL count .
+If the read pointer is so near the end of the
+file that reading
+.UL count
+characters
+would cause reading beyond the end, only sufficient
+bytes are transmitted to reach the end of the
+file;
+also, typewriter-like terminals
+never return more than one line of input.
+When a
+.UL read
+call returns with
+.UL n
+equal
+to zero, the end of the file has been reached.
+For disk files this occurs when the read pointer
+becomes equal to the current
+size of the file.
+It is possible to generate an end-of-file
+from a terminal by use of an escape
+sequence that depends on the device used.
+.PP
+Bytes written affect only those parts of a file implied by
+the position of the write pointer and the
+count; no other part of the file
+is changed.
+If the last byte lies beyond the end of the file, the
+file is made to grow as needed.
+.PP
+To do random (direct-access) I/O
+it is only necessary to move the read or write pointer
+to the appropriate location in the file.
+.P1
+location = lseek\|(\|filep, offset, base\|)
+.P2
+The pointer
+associated with
+.UL filep
+is moved to a position
+.UL offset
+bytes from the beginning of the file, from the current position
+of the pointer, or from the end of the file,
+depending on
+.UL base.
+.UL \&offset
+may be negative.
+For some devices (e.g., paper
+tape and
+terminals) seek calls are
+ignored.
+The actual offset from the beginning of the file
+to which the pointer was moved is returned
+in
+.UL location .
+.PP
+There are several additional system entries
+having to do with I/O and with the file
+system that will not be discussed.
+For example:
+close a file,
+get the status of a file,
+change the protection mode or the owner
+of a file,
+create a directory,
+make a link to an existing file,
+delete a file.
+.SH
+IV. IMPLEMENTATION OF THE FILE SYSTEM
+.PP
+As mentioned in Section 3.2 above, a directory entry contains
+only a name for the associated file and a pointer to the
+file itself.
+This pointer is an integer called the
+.IT i-number
+(for index number)
+of the file.
+When the file is accessed,
+its i-number is used as an index into
+a system table (the
+.IT i-list \|)
+stored in a known
+part of the device on which
+the directory resides.
+The entry found thereby (the file's
+.IT i-node \|)
+contains
+the description of the file:
+.IP i
+the user and group-\*sID\*n of its owner
+.IP ii
+its protection bits
+.IP iii
+the physical disk or tape addresses for the file contents
+.IP iv
+its size
+.IP v
+time of creation, last use, and last modification
+.IP vi
+the number of links to the file, that is, the number of times it appears in a directory
+.IP vii
+a code indicating whether the file is a directory, an ordinary file, or a special file.
+.LP
+The purpose of an
+.UL open
+or
+.UL create
+system call is to turn the path name given by the user
+into an i-number
+by searching the explicitly or implicitly named directories.
+Once a file is open,
+its device, i-number, and read/write pointer are stored in a system table
+indexed by the file descriptor returned by the
+.UL open
+or
+.UL create .
+Thus, during a subsequent
+call to read or write the
+file,
+the descriptor
+may be easily related to the information necessary to access the file.
+.PP
+When a new file is created,
+an i-node is allocated for it and a directory entry is made
+that contains the name of the file and the i-node
+number.
+Making a link to an existing file involves
+creating a directory entry with the new name,
+copying the i-number from the original file entry,
+and incrementing the link-count field of the i-node.
+Removing (deleting) a file is done by
+decrementing the
+link-count of the i-node specified by its directory entry
+and erasing the directory entry.
+If the link-count drops to 0,
+any disk blocks in the file
+are freed and the i-node is de-allocated.
+.PP
+The space on all disks that
+contain a file system is divided into a number of
+512-byte
+blocks logically addressed from 0 up to a limit that
+depends on the device.
+There is space in the i-node of each file for 13 device addresses.
+For nonspecial files,
+the first 10 device addresses point at the first
+10 blocks of the file.
+If the file is larger than 10 blocks,
+the 11 device address points to an
+indirect block containing up to 128 addresses
+of additional blocks in the file.
+Still larger files use the twelfth device address
+of the i-node to point to
+a double-indirect block naming
+128 indirect blocks,
+each
+pointing to 128 blocks of the file.
+If required,
+the thirteenth device address is
+a triple-indirect block.
+Thus files may conceptually grow to
+[\|(10+128+128\u\s62\s0\d+128\u\s63\s0\d)\*m512\|] bytes.
+Once opened,
+bytes numbered below 5120 can be read with a single
+disk access;
+bytes in the range 5120 to 70,656
+require two accesses;
+bytes in the range 70,656
+to 8,459,264
+require three accesses;
+bytes from there to the
+largest file
+(1,082,201,088)
+require four accesses.
+In practice,
+a device cache mechanism
+(see below)
+proves effective in eliminating
+most of the indirect fetches.
+.PP
+The foregoing discussion applies to ordinary files.
+When an I/O request is made to a file whose i-node indicates that it
+is special,
+the last 12 device address words are immaterial,
+and the first specifies
+an internal
+.IT "device name" ,
+which is interpreted as a pair of numbers
+representing,
+respectively, a device type
+and subdevice number.
+The device type indicates which
+system routine will deal with I/O on that device;
+the subdevice number selects, for example, a disk drive
+attached to a particular controller or one of several
+similar terminal interfaces.
+.PP
+In this environment, the implementation of the
+.UL mount
+system call (Section 3.4) is quite straightforward.
+.UL \&mount
+maintains a system table whose
+argument is the i-number and device name of the
+ordinary file specified
+during the
+.UL mount ,
+and whose corresponding value is the
+device name of the indicated special file.
+This table is searched for each i-number/device pair
+that turns up while a path name is being scanned
+during an
+.UL open
+or
+.UL create ;
+if a match is found,
+the i-number is replaced by the i-number of the root
+directory
+and the device name is replaced by the table value.
+.PP
+To the user, both reading and writing of files appear to
+be synchronous and unbuffered.
+That is, immediately after
+return from a
+.UL read
+call the data are available; conversely,
+after a
+.UL write
+the user's workspace may be reused.
+In fact, the system maintains a rather complicated
+buffering mechanism that reduces greatly the number
+of I/O operations required to access a file.
+Suppose a
+.UL write
+call is made specifying transmission
+of a single byte.
+The system
+will search its buffers to see
+whether the affected disk block currently resides in main memory;
+if not, it will be read in from the device.
+Then the affected byte is replaced in the buffer and an
+entry is made in a list of blocks to be written.
+The return from the
+.UL write
+call may then take place,
+although the actual I/O may not be completed until a later time.
+Conversely, if a single byte is read, the system determines
+whether the secondary storage block in which the byte is located is already
+in one of the system's buffers; if so, the byte can be returned immediately.
+If not, the block is read into a buffer and the byte picked out.
+.PP
+The system recognizes when
+a program has
+made accesses to
+sequential blocks of a file,
+and asynchronously
+pre-reads the next block.
+This significantly reduces
+the running time of most programs
+while adding little to
+system overhead.
+.PP
+A program that reads or writes files in units of 512 bytes
+has an advantage over a program that reads or writes
+a single byte at a time, but the gain is not immense;
+it comes mainly from the avoidance of system overhead.
+If a program is used rarely or does
+no great volume of I/O, it may quite reasonably
+read and write in units as small as it wishes.
+.PP
+The notion of the i-list is an unusual feature
+of
+.UX .
+In practice, this method of organizing the file system
+has proved quite reliable and easy to deal with.
+To the system itself, one of its strengths is
+the fact that each file has a short, unambiguous name
+related in a simple way to the protection, addressing,
+and other information needed to access the file.
+It also permits a quite simple and rapid
+algorithm for checking the consistency of a file system,
+for example, verification
+that the portions of each device containing useful information
+and those free to be allocated are disjoint and together
+exhaust the space on the device.
+This algorithm is independent
+of the directory hierarchy, because it need only scan
+the linearly organized i-list.
+At the same time the notion of the i-list induces certain
+peculiarities not found in other file system organizations.
+For example, there is the question of who is to be charged
+for the space a file occupies,
+because all directory entries for a file have equal status.
+Charging the owner of a file is unfair in general,
+for one user may create a file, another may link to
+it, and the first user may delete the file.
+The first user is still the owner of the
+file, but it should be charged
+to the second user.
+The simplest reasonably fair algorithm
+seems to be to spread the charges
+equally among users who have links to a file.
+Many installations
+avoid the
+issue by not charging any fees at all.
diff --git a/share/doc/psd/01.cacm/p3 b/share/doc/psd/01.cacm/p3
new file mode 100644
index 0000000..2dc86d2
--- /dev/null
+++ b/share/doc/psd/01.cacm/p3
@@ -0,0 +1,190 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)p3 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+V. PROCESSES AND IMAGES
+.PP
+An
+.IT image
+is a computer execution environment.
+It includes a memory image,
+general register values,
+status of open files,
+current directory and the like.
+An image is the current state of a pseudo-computer.
+.PP
+A
+.IT process
+is the execution of an image.
+While the processor is executing on behalf of a process,
+the image must reside in main memory;
+during the execution of other processes it remains in main memory
+unless the appearance of an active, higher-priority
+process
+forces it to be swapped out to the disk.
+.PP
+The user-memory part of an image is divided into three logical segments.
+The program text segment begins at location 0 in the virtual address space.
+During execution, this segment is write-protected
+and a single copy of it is shared among
+all processes executing the same program.
+At the first hardware protection byte boundary above the program text segment in the
+virtual address space begins a non-shared, writable data segment,
+the size of which may be extended by a system call.
+Starting at the highest
+address in the virtual address space is a stack segment,
+which automatically grows downward
+as the stack pointer fluctuates.
+.SH
+5.1 Processes
+.PP
+Except while
+the system
+is bootstrapping itself into operation, a new
+process can come into existence only
+by use of the
+.UL fork
+system call:
+.P1
+processid = fork\|(\|\|)\|
+.P2
+When
+.UL fork
+is executed, the process
+splits into two independently executing processes.
+The two processes have independent
+copies of the original memory image,
+and share all open files.
+The new processes differ only in that one is considered
+the parent process:
+in the parent,
+the returned
+.UL processid
+actually identifies the child process
+and is never 0,
+while in the child,
+the returned value is always 0.
+.PP
+Because the values returned by
+.UL fork
+in the parent and child process are distinguishable,
+each process may determine whether
+it is the parent or child.
+.SH
+5.2 Pipes
+.PP
+Processes may communicate
+with related processes using the same system
+.UL read
+and
+.UL write
+calls that are used for file-system I/O.
+The call:
+.P1
+filep = pipe\|(\|\|)\|
+.P2
+returns a file descriptor
+.UL filep
+and
+creates an inter-process channel called a
+.IT pipe .
+This channel, like other open files, is passed from parent to child process in
+the image by the
+.UL fork
+call.
+A
+.UL read
+using a pipe file descriptor
+waits until another process writes using the
+file descriptor for the same pipe.
+At this point, data are passed between the images of the
+two processes.
+Neither process need know that a pipe,
+rather than an ordinary file,
+is involved.
+.PP
+Although
+inter-process communication
+via pipes is a quite valuable tool
+(see Section 6.2),
+it is not a completely general
+mechanism,
+because the pipe must be set up by a common ancestor
+of the processes involved.
+.SH
+5.3 Execution of programs
+.PP
+Another major system primitive
+is invoked by
+.P1
+execute\|(\|file, arg\*s\d1\u\*n, arg\*s\d2\u\*n, .\|.\|. , arg\*s\dn\u\*n\|)\|
+.P2
+which requests the system to read in and execute the program
+named by
+.UL file ,
+passing it string arguments
+.UL arg\v'.3'\*s1\*n\v'-.3'\| ,
+.UL arg\v'.3'\*s2\*n\v'-.3'\| ,
+.UL .\|.\|.\|\| ,
+.UL arg\v'.3'\*sn\*n\v'-.3' .
+All the code and data in the process invoking
+.UL execute
+is replaced from the
+.UL file ,
+but
+open files, current directory, and
+inter-process relationships are unaltered.
+Only if the call fails, for example
+because
+.UL file
+could not be found or because
+its execute-permission bit was not set, does a return
+take place from the
+.UL execute
+primitive;
+it resembles a ``jump'' machine instruction
+rather than a subroutine call.
+.SH
+5.4 Process synchronization
+.PP
+Another process control system call:
+.P1
+processid = wait\|(\|status\|)\|
+.P2
+causes its caller to suspend
+execution until one of its children has completed execution.
+Then
+.UL wait
+returns the
+.UL processid
+of the terminated process.
+An error return is taken if the calling process has no
+descendants.
+Certain status from the child process
+is also available.
+.SH
+5.5 Termination
+.PP
+Lastly:
+.P1
+exit\|(\|status\|)\|
+.P2
+terminates a process,
+destroys its image,
+closes its open files,
+and generally obliterates it.
+The parent is notified through
+the
+.UL wait
+primitive,
+and
+.UL status
+is made available
+to it.
+Processes may also terminate as a result of
+various illegal actions or user-generated signals
+(Section VII below).
diff --git a/share/doc/psd/01.cacm/p4 b/share/doc/psd/01.cacm/p4
new file mode 100644
index 0000000..09adb2b
--- /dev/null
+++ b/share/doc/psd/01.cacm/p4
@@ -0,0 +1,524 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)p4 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+VI. THE SHELL
+.PP
+For most users,
+communication with
+the system
+is carried on with the
+aid of a program called the \&shell.
+The \&shell is a
+command-line interpreter: it reads lines typed by the user and
+interprets them as requests to execute
+other programs.
+(The \&shell is described fully elsewhere,
+.[
+bourne shell bstj
+%Q This issue
+.]
+so this section will discuss only the theory of its operation.)
+In simplest form, a command line consists of the command
+name followed by arguments to the command, all separated
+by spaces:
+.P1
+command arg\*s\d1\u\*n arg\*s\d2\u\*n .\|.\|. arg\*s\dn\u\*n
+.P2
+The \&shell splits up the command name and the arguments into
+separate strings.
+Then a file with name
+.UL command
+is sought;
+.UL command
+may be a path name including the ``/'' character to
+specify any file in the system.
+If
+.UL command
+is found, it is brought into
+memory and executed.
+The arguments
+collected by the \&shell are accessible
+to the command.
+When the command is finished, the \&shell
+resumes its own execution, and indicates its readiness
+to accept another command by typing a prompt character.
+.PP
+If file
+.UL command
+cannot be found,
+the \&shell generally prefixes a string
+such as
+.UL /\|bin\|/
+to
+.UL command
+and
+attempts again to find the file.
+Directory
+.UL /\|bin
+contains commands
+intended to be generally used.
+(The sequence of directories to be searched
+may be changed by user request.)
+.SH
+6.1 Standard I/O
+.PP
+The discussion of I/O in Section III above seems to imply that
+every file used by a program must be opened or created by the program in
+order to get a file descriptor for the file.
+Programs executed by the \&shell, however, start off with
+three open files with file descriptors
+0, 1, and 2.
+As such a program begins execution, file 1 is open for writing,
+and is best understood as the standard output file.
+Except under circumstances indicated below, this file
+is the user's terminal.
+Thus programs that wish to write informative
+information ordinarily use file descriptor 1.
+Conversely, file 0 starts off open for reading, and programs that
+wish to read messages typed by the user
+read this file.
+.PP
+The \&shell is able to change the standard assignments of
+these file descriptors from the
+user's terminal printer and keyboard.
+If one of the
+arguments to a command is prefixed by ``>'', file descriptor
+1 will, for the duration of the command, refer to the
+file named after the ``>''.
+For example:
+.P1
+ls
+.P2
+ordinarily lists, on the typewriter, the names of the files in the current
+directory.
+The command:
+.P1
+ls >there
+.P2
+creates a file called
+.UL there
+and places the listing there.
+Thus the argument
+.UL >there
+means
+``place output on
+.UL there .''
+On the other hand:
+.P1
+ed
+.P2
+ordinarily enters the editor, which takes requests from the
+user via his keyboard.
+The command
+.P1
+ed <script
+.P2
+interprets
+.UL script
+as a file of editor commands;
+thus
+.UL <script
+means ``take input from
+.UL script .''
+.PP
+Although the file name following ``<'' or ``>'' appears
+to be an argument to the command, in fact it is interpreted
+completely by the \&shell and is not passed to the
+command at all.
+Thus no special coding to handle I/O redirection is needed within each
+command; the command need merely use the standard file
+descriptors 0 and 1 where appropriate.
+.PP
+File descriptor 2 is, like file 1,
+ordinarily associated with the terminal output stream.
+When an output-diversion request with ``>'' is specified,
+file 2 remains attached to the terminal, so that commands
+may produce diagnostic messages that
+do not silently end up in the output file.
+.SH
+6.2 Filters
+.PP
+An extension of the standard I/O notion is used
+to direct output from one command to
+the input of another.
+A sequence of commands separated by
+vertical bars causes the \&shell to
+execute all the commands simultaneously and to arrange
+that the standard output of each command
+be delivered to the standard input of
+the next command in the sequence.
+Thus in the command line:
+.P1
+ls | pr \(mi2 | opr
+.P2
+.UL ls
+lists the names of the files in the current directory;
+its output is passed to
+.UL pr ,
+which
+paginates its input with dated headings.
+(The argument ``\(mi2'' requests
+double-column output.)
+Likewise, the output from
+.UL pr
+is input to
+.UL opr ;
+this command spools its input onto a file for off-line
+printing.
+.PP
+This procedure could have been carried out
+more clumsily by:
+.P1
+ls >temp1
+pr \(mi2 <temp1 >temp2
+opr <temp2
+.P2
+followed by removal of the temporary files.
+In the absence of the ability
+to redirect output and input,
+a still clumsier method would have been to
+require the
+.UL ls
+command
+to accept user requests to paginate its output,
+to print in multi-column format, and to arrange
+that its output be delivered off-line.
+Actually it would be surprising, and in fact
+unwise for efficiency reasons,
+to expect authors of
+commands such as
+.UL ls
+to provide such a wide variety of output options.
+.PP
+A program
+such as
+.UL pr
+which copies its standard input to its standard output
+(with processing)
+is called a
+.IT filter .
+Some filters that we have found useful
+perform
+character transliteration,
+selection of lines according to a pattern,
+sorting of the input,
+and encryption and decryption.
+.SH
+6.3 Command separators; multitasking
+.PP
+Another feature provided by the \&shell is relatively straightforward.
+Commands need not be on different lines; instead they may be separated
+by semicolons:
+.P1
+ls; ed
+.P2
+will first list the contents of the current directory, then enter
+the editor.
+.PP
+A related feature is more interesting.
+If a command is followed
+by ``\f3&\f1,'' the \&shell will not wait for the command to finish before
+prompting again; instead, it is ready immediately
+to accept a new command.
+For example:
+.bd 3
+.P1
+as source >output &
+.P2
+causes
+.UL source
+to be assembled, with diagnostic
+output going to
+.UL output ;
+no matter how long the
+assembly takes, the \&shell returns immediately.
+When the \&shell does not wait for
+the completion of a command,
+the identification number of the
+process running that command is printed.
+This identification may be used to
+wait for the completion of the command or to
+terminate it.
+The ``\f3&\f1'' may be used
+several times in a line:
+.P1
+as source >output & ls >files &
+.P2
+does both the assembly and the listing in the background.
+In these examples, an output file
+other than the terminal was provided; if this had not been
+done, the outputs of the various commands would have been
+intermingled.
+.PP
+The \&shell also allows parentheses in the above operations.
+For example:
+.P1
+(\|date; ls\|) >x &
+.P2
+writes the current date and time followed by
+a list of the current directory onto the file
+.UL x .
+The \&shell also returns immediately for another request.
+.SH 1
+6.4 The \&shell as a command; command files
+.PP
+The \&shell is itself a command, and may be called recursively.
+Suppose file
+.UL tryout
+contains the lines:
+.P1
+as source
+mv a.out testprog
+testprog
+.P2
+The
+.UL mv
+command causes the file
+.UL a.out
+to be renamed
+.UL testprog.
+.UL \&a.out
+is the (binary) output of the assembler, ready to be executed.
+Thus if the three lines above were typed on the keyboard,
+.UL source
+would be assembled, the resulting program renamed
+.UL testprog ,
+and
+.UL testprog
+executed.
+When the lines are in
+.UL tryout ,
+the command:
+.P1
+sh <tryout
+.P2
+would cause the \&shell
+.UL sh
+to execute the commands
+sequentially.
+.PP
+The \&shell has further capabilities, including the
+ability to substitute parameters
+and
+to construct argument lists from a specified
+subset of the file names in a directory.
+It also provides general conditional and looping constructions.
+.SH 1
+6.5 Implementation of the \&shell
+.PP
+The outline of the operation of the \&shell can now be understood.
+Most of the time, the \&shell
+is waiting for the user to type a command.
+When the
+newline character ending the line
+is typed, the \&shell's
+.UL read
+call returns.
+The \&shell analyzes the command line, putting the
+arguments in a form appropriate for
+.UL execute .
+Then
+.UL fork
+is called.
+The child process, whose code
+of course is still that of the \&shell, attempts
+to perform an
+.UL execute
+with the appropriate arguments.
+If successful, this will bring in and start execution of the program whose name
+was given.
+Meanwhile, the other process resulting from the
+.UL fork ,
+which is the
+parent process,
+.UL wait s
+for the child process to die.
+When this happens, the \&shell knows the command is finished, so
+it types its prompt and reads the keyboard to obtain another
+command.
+.PP
+Given this framework, the implementation of background processes
+is trivial; whenever a command line contains ``\f3&\f1,''
+the \&shell merely refrains from waiting for the process
+that it created
+to execute the command.
+.PP
+Happily, all of this mechanism meshes very nicely with
+the notion of standard input and output files.
+When a process is created by the
+.UL fork
+primitive, it
+inherits not only the memory image of its parent
+but also all the files currently open in its parent,
+including those with file descriptors 0, 1, and 2.
+The \&shell, of course, uses these files to read command
+lines and to write its prompts and diagnostics, and in the ordinary case
+its children\(emthe command programs\(eminherit them automatically.
+When an argument with ``<'' or ``>'' is given, however, the
+offspring process, just before it performs
+.UL execute,
+makes the standard I/O
+file descriptor (0 or 1, respectively) refer to the named file.
+This is easy
+because, by agreement,
+the smallest unused file descriptor is assigned
+when a new file is
+.UL open ed
+(or
+.UL create d);
+it is only necessary to close file 0 (or 1)
+and open the named file.
+Because the process in which the command program runs simply terminates
+when it is through, the association between a file
+specified after ``<'' or ``>'' and file descriptor 0 or 1 is ended
+automatically when the process dies.
+Therefore
+the \&shell need not know the actual names of the files
+that are its own standard input and output, because it need
+never reopen them.
+.PP
+Filters are straightforward extensions
+of standard I/O redirection with pipes used
+instead of files.
+.PP
+In ordinary circumstances, the main loop of the \&shell never
+terminates.
+(The main loop includes the
+branch of the return from
+.UL fork
+belonging to the
+parent process; that is, the branch that does a
+.UL wait ,
+then
+reads another command line.)
+The one thing that causes the \&shell to terminate is
+discovering an end-of-file condition on its input file.
+Thus, when the \&shell is executed as a command with
+a given input file, as in:
+.P1
+sh <comfile
+.P2
+the commands in
+.UL comfile
+will be executed until
+the end of
+.UL comfile
+is reached; then the instance of the \&shell
+invoked by
+.UL sh
+will terminate.
+Because this \&shell process
+is the child of another instance of the \&shell, the
+.UL wait
+executed in the latter will return, and another
+command may then be processed.
+.SH
+6.6 Initialization
+.PP
+The instances of the \&shell to which users type
+commands are themselves children of another process.
+The last step in the initialization of
+the system
+is the creation of
+a single process and the invocation (via
+.UL execute )
+of a program called
+.UL init .
+The role of
+.UL init
+is to create one process
+for each terminal channel.
+The various subinstances of
+.UL init
+open the appropriate terminals
+for input and output
+on files 0, 1, and 2,
+waiting, if necessary, for carrier to be established on dial-up lines.
+Then a message is typed out requesting that the user log in.
+When the user types a name or other identification,
+the appropriate instance of
+.UL init
+wakes up, receives the log-in
+line, and reads a password file.
+If the user's name is found, and if
+he is able to supply the correct password,
+.UL init
+changes to the user's default current directory, sets
+the process's user \*sID\*n to that of the person logging in, and performs
+an
+.UL execute
+of the \&shell.
+At this point, the \&shell is ready to receive commands
+and the logging-in protocol is complete.
+.PP
+Meanwhile, the mainstream path of
+.UL init
+(the parent of all
+the subinstances of itself that will later become \&shells)
+does a
+.UL wait .
+If one of the child processes terminates, either
+because a \&shell found an end of file or because a user
+typed an incorrect name or password, this path of
+.UL init
+simply recreates the defunct process, which in turn reopens the appropriate
+input and output files and types another log-in message.
+Thus a user may log out simply by typing the end-of-file
+sequence to the \&shell.
+.SH
+6.7 Other programs as \&shell
+.PP
+The \&shell as described above is designed to allow users
+full access to the facilities of the system, because it will
+invoke the execution of any program
+with appropriate protection mode.
+Sometimes, however, a different interface to the system
+is desirable, and this feature is easily arranged for.
+.PP
+Recall that after a user has successfully logged in by supplying
+a name and password,
+.UL init
+ordinarily invokes the \&shell
+to interpret command lines.
+The user's entry
+in the password file may contain the name
+of a program to be invoked after log-in instead of the \&shell.
+This program is free to interpret the user's messages
+in any way it wishes.
+.PP
+For example, the password file entries
+for users of a secretarial editing system
+might
+specify that the
+editor
+.UL ed
+is to be used instead of the \&shell.
+Thus when users of the editing system log in, they are inside the editor and
+can begin work immediately; also, they can be prevented from
+invoking
+programs not intended for their use.
+In practice, it has proved desirable to allow a temporary
+escape from the editor
+to execute the formatting program and other utilities.
+.PP
+Several of the games (e.g., chess, blackjack, 3D tic-tac-toe)
+available on
+the system
+illustrate
+a much more severely restricted environment.
+For each of these, an entry exists
+in the password file specifying that the appropriate game-playing
+program is to be invoked instead of the \&shell.
+People who log in as a player
+of one of these games find themselves limited to the
+game and unable to investigate the (presumably more interesting)
+offerings of
+the
+.UX
+system
+as a whole.
diff --git a/share/doc/psd/01.cacm/p5 b/share/doc/psd/01.cacm/p5
new file mode 100644
index 0000000..cf40f2d
--- /dev/null
+++ b/share/doc/psd/01.cacm/p5
@@ -0,0 +1,235 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)p5 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+VII. TRAPS
+.PP
+The \*sPDP\*n-11 hardware detects a number of program faults,
+such as references to non-existent memory, unimplemented instructions,
+and odd addresses used where an even address is required.
+Such faults cause the processor to trap to a system routine.
+Unless other arrangements have been made,
+an illegal action causes the system
+to terminate the process and to write its
+image
+on file
+.UL core
+in the current directory.
+A debugger can be used to determine
+the state of the program at the time of the fault.
+.PP
+Programs that are looping, that produce unwanted output, or about which
+the user has second thoughts may be halted by the use of the
+.UL interrupt
+signal, which is generated by typing the ``delete''
+character.
+Unless special action has been taken, this
+signal simply causes the program to cease execution
+without producing a
+.UL core
+file.
+There is also a
+.UL quit
+signal
+used to force an image file to be produced.
+Thus programs that loop unexpectedly may be
+halted and the remains inspected without prearrangement.
+.PP
+The hardware-generated faults
+and the interrupt and quit signals
+can, by request, be either ignored or caught by a process.
+For example,
+the \&shell ignores quits to prevent
+a quit from logging the user out.
+The editor catches interrupts and returns
+to its command level.
+This is useful for stopping long printouts
+without losing work in progress (the editor
+manipulates a copy of the file it is editing).
+In systems without floating-point hardware,
+unimplemented instructions are caught
+and floating-point instructions are
+interpreted.
+.SH
+VIII. PERSPECTIVE
+.PP
+Perhaps paradoxically,
+the success of
+the
+.UX
+system
+is largely due to the fact that it was not
+designed to meet any
+predefined objectives.
+The first version was written when one of us
+(Thompson),
+dissatisfied with the available computer facilities,
+discovered a little-used \*sPDP\*n-7
+and set out to create a more
+hospitable environment.
+This (essentially personal) effort was
+sufficiently successful
+to gain the interest of the other author
+and several colleagues,
+and later to justify the acquisition
+of the \*sPDP\*n-11/20, specifically to support
+a text editing and formatting system.
+When in turn the 11/20 was outgrown,
+the system
+had proved useful enough to persuade management to
+invest in the \*sPDP\*n-11/45,
+and later in the
+\*sPDP\*n-11/70 and Interdata 8/32 machines,
+upon which it developed to its present form.
+Our goals throughout the effort,
+when articulated at all, have always been to build
+a comfortable relationship with the machine
+and to explore ideas and inventions in operating systems
+and other software.
+We have not been faced with the need to satisfy someone
+else's requirements,
+and for this freedom we are grateful.
+.PP
+Three considerations that influenced the design of
+.UX
+are visible in retrospect.
+.PP
+First:
+because we are programmers,
+we naturally designed the system to make it easy to
+write, test, and run programs.
+The most important expression of our desire for
+programming convenience
+was that the system
+was arranged for interactive use,
+even though the original version only
+supported one user.
+We believe that a properly designed
+interactive system is much more
+productive
+and satisfying to use than a ``batch'' system.
+Moreover, such a system is rather easily
+adaptable to noninteractive use, while the converse is not true.
+.PP
+Second:
+there have always been fairly severe size constraints
+on the system and its software.
+Given the partially antagonistic desires for reasonable efficiency and
+expressive power,
+the size constraint has encouraged
+not only economy, but also a certain elegance of design.
+This may be a thinly disguised version of the ``salvation
+through suffering'' philosophy,
+but in our case it worked.
+.PP
+Third: nearly from the start, the system was able to, and did, maintain itself.
+This fact is more important than it might seem.
+If designers of a system are forced to use that system,
+they quickly become aware of its functional and superficial deficiencies
+and are strongly motivated to correct them before it is too late.
+Because all source programs were always available
+and easily modified on-line,
+we were willing to revise and rewrite the system and its software
+when new ideas were invented, discovered,
+or suggested by others.
+.PP
+The aspects of
+.UX
+discussed in this paper exhibit clearly
+at least the first two of these
+design considerations.
+The interface to the file
+system, for example, is extremely convenient from
+a programming standpoint.
+The lowest possible interface level is designed
+to eliminate distinctions
+between
+the various devices and files and between
+direct and sequential access.
+No large ``access method'' routines
+are required
+to insulate the programmer from the
+system calls;
+in fact, all user programs either call the system
+directly or
+use a small library program, less than a page long,
+that buffers a number of characters
+and reads or writes them all at once.
+.PP
+Another important aspect of programming
+convenience is that there are no ``control blocks''
+with a complicated structure partially maintained by
+and depended on by the file system or other system calls.
+Generally speaking, the contents of a program's address space
+are the property of the program, and we have tried to
+avoid placing restrictions
+on the data structures within that address space.
+.PP
+Given the requirement
+that all programs should be usable with any file or
+device as input or output,
+it is also desirable
+to push device-dependent considerations
+into the operating system itself.
+The only alternatives seem to be to load,
+with all programs,
+routines for dealing with each device,
+which is expensive in space,
+or to depend on some means of dynamically linking to
+the routine appropriate to each device when it is actually
+needed,
+which is expensive either in overhead or in hardware.
+.PP
+Likewise,
+the process-control scheme and the command interface
+have proved both convenient and efficient.
+Because the \&shell operates as an ordinary, swappable
+user program,
+it consumes no ``wired-down'' space in the system proper,
+and it may be made as powerful as desired
+at little cost.
+In particular,
+given the framework in which the \&shell executes
+as a process that spawns other processes to
+perform commands,
+the notions of I/O redirection, background processes,
+command files, and user-selectable system interfaces
+all become essentially trivial to implement.
+.SH
+Influences
+.PP
+The success of
+.UX
+lies
+not so much in new inventions
+but rather in the full exploitation of a carefully selected
+set of fertile ideas,
+and especially in showing that
+they can be keys to the implementation of a small
+yet powerful operating system.
+.PP
+The
+.UL fork
+operation, essentially as we implemented it, was
+present in the \*sGENIE\*n time-sharing system.
+.[
+lampson deutsch 930 manual 1965 system preliminary
+.]
+On a number of points we were influenced by Multics,
+which suggested the particular form of the I/O system calls
+.[
+multics input output feiertag organick
+.]
+and both the name of the \&shell and its general functions.
+The notion that the \&shell should create a process
+for each command was also suggested to us by
+the early design of Multics, although in that
+system it was later dropped for efficiency reasons.
+A similar scheme is used by \*sTENEX\*n.
+.[
+bobrow burchfiel tenex
+.]
diff --git a/share/doc/psd/01.cacm/p6 b/share/doc/psd/01.cacm/p6
new file mode 100644
index 0000000..77af7e7
--- /dev/null
+++ b/share/doc/psd/01.cacm/p6
@@ -0,0 +1,72 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)p6 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+IX. STATISTICS
+.PP
+The following numbers
+are presented to suggest the scale of the Research
+.UX
+operation.
+Those of our users
+not involved in document preparation
+tend to use the system for
+program development, especially language work.
+There are few important
+``applications'' programs.
+.PP
+Overall, we have today:
+.PP
+.SP .5
+.TS
+center;
+r5 l.
+125 user population
+33 maximum simultaneous users
+1,630 directories
+28,300 files
+301,700 512-byte secondary storage blocks used
+.TE
+.SP .5
+There is a ``background'' process that
+runs at the lowest possible priority; it is used
+to soak up any idle \*sCPU\*n time.
+It has been used to produce a million-digit
+approximation to the constant \fIe\fR,
+and other semi-infinite problems.
+Not counting this background work, we average daily:
+.SP .5
+.TS
+center;
+r 5 l.
+13,500 commands
+9.6 \*sCPU\*n hours
+230 connect hours
+62 different users
+240 log-ins
+.TE
+.SP .5
+.SH
+X. ACKNOWLEDGMENTS
+.PP
+The contributors to
+.UX
+are, in the traditional but here especially apposite
+phrase, too numerous to mention.
+Certainly, collective salutes are due to our colleagues in the
+Computing Science Research Center.
+R. H. Canaday contributed much to the basic design of the
+file system.
+We are particularly appreciative
+of the inventiveness,
+thoughtful criticism,
+and constant support of
+R. Morris, M. D. McIlroy,
+and J. F. Ossanna.
+.[
+$LIST$
+.]
diff --git a/share/doc/psd/01.cacm/ref.bib b/share/doc/psd/01.cacm/ref.bib
new file mode 100644
index 0000000..c4283b5
--- /dev/null
+++ b/share/doc/psd/01.cacm/ref.bib
@@ -0,0 +1,113 @@
+# $FreeBSD$
+
+%A L. P. Deutsch
+%A B. W. Lampson
+%T An online editor
+%J Comm. Assoc. Comp. Mach.
+%V 10
+%N 12
+%D December 1967
+%P 793-799, 803
+%K qed
+
+%K cstr
+%R Comp. Sci. Tech. Rep. No. 17
+%I Bell Laboratories
+%C Murray Hill, New Jersey
+%A B. W. Kernighan
+%A L. L. Cherry
+%T A System for Typesetting Mathematics
+%d May 1974, revised April 1977
+%J Comm. Assoc. Comp. Mach.
+%K acm cacm
+%V 18
+%P 151-157
+%D March 1975
+
+%T U\s-2NIX\s0 Time-Sharing System: Document Preparation
+%K unix bstj
+%A B. W. Kernighan
+%A M. E. Lesk
+%A J. F. Ossanna
+%J Bell Sys. Tech. J.
+%V 57
+%N 6
+%P 2115-2135
+%D 1978
+
+%A T. A. Dolotta
+%A J. R. Mashey
+%T An Introduction to the Programmer's Workbench
+%J Proc. 2nd Int. Conf. on Software Engineering
+%D October 13-15, 1976
+%P 164-168
+
+%T U\s-2NIX\s0 Time-Sharing System: The Programmer's Workbench
+%A T. A. Dolotta
+%A R. C. Haight
+%A J. R. Mashey
+%J Bell Sys. Tech. J.
+%V 57
+%N 6
+%P 2177-2200
+%D 1978
+%K unix bstj
+
+%T U\s-2NIX\s0 Time-Sharing System: U\s-2NIX\s0 on a Microprocessor
+%K unix bstj
+%A H. Lycklama
+%J Bell Sys. Tech. J.
+%V 57
+%N 6
+%P 2087-2101
+%D 1978
+
+%T The C Programming Language
+%A B. W. Kernighan
+%A D. M. Ritchie
+%I Prentice-Hall
+%C Englewood Cliffs, New Jersey
+%D 1978
+
+%T Computer Recreations
+%A Aleph-null
+%J Software Practice and Experience
+%V 1
+%N 2
+%D April-June 1971
+%P 201-204
+
+%T U\s-2NIX\s0 Time-Sharing System: The U\s-2NIX\s0 Shell
+%A S. R. Bourne
+%K unix bstj
+%J Bell Sys. Tech. J.
+%V 57
+%N 6
+%P 1971-1990
+%D 1978
+
+%A L. P. Deutsch
+%A B. W. Lampson
+%T \*sSDS\*n 930 time-sharing system preliminary reference manual
+%R Doc. 30.10.10, Project \*sGENIE\*n
+%C Univ. Cal. at Berkeley
+%D April 1965
+
+%A R. J. Feiertag
+%A E. I. Organick
+%T The Multics input-output system
+%J Proc. Third Symposium on Operating Systems Principles
+%D October 18-20, 1971
+%P 35-41
+
+%A D. G. Bobrow
+%A J. D. Burchfiel
+%A D. L. Murphy
+%A R. S. Tomlinson
+%T \*sTENEX\*n, a Paged Time Sharing System for the \*sPDP\*n-10
+%J Comm. Assoc. Comp. Mach.
+%V 15
+%N 3
+%D March 1972
+%K tenex
+%P 135-143
diff --git a/share/doc/psd/02.implement/Makefile b/share/doc/psd/02.implement/Makefile
new file mode 100644
index 0000000..89d0dc3
--- /dev/null
+++ b/share/doc/psd/02.implement/Makefile
@@ -0,0 +1,17 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/02.implement
+SRCS= stubs implement
+EXTRA= ref.bib
+MACROS= -ms
+USE_PIC=
+USE_REFER=
+USE_SOELIM=
+CLEANFILES= stubs
+
+stubs:
+ @(echo .R1; echo database ${.CURDIR}/ref.bib; \
+ echo accumulate; echo .R2) > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/02.implement/fig1.pic b/share/doc/psd/02.implement/fig1.pic
new file mode 100644
index 0000000..2d4b3d3
--- /dev/null
+++ b/share/doc/psd/02.implement/fig1.pic
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1986, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)fig1.pic 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.PS
+.ps 9
+[
+ PT: [
+ T: box invis ht .2i "Process Table"; move down .125i
+ A: box ht .25i; down
+ PTE: box "Process" "Table" "Entry"; down
+ C: box ht .25i
+ ]
+ move right 1.5i
+ TT: [
+ T: box invis ht .2i "Text Table"; move down .125i
+ A: box ht .25i; down
+ TTE: box "Text" "Table" "Entry"; down
+ C: box ht .25i
+ ]
+ move down 1i from TT.C.s
+ move right 0.5i
+ UTS: [
+ box ht 0.75i wid 0.75i "User" "Text" "Segment"
+ ]
+ move left 1.5i from UTS.w
+ DS: [
+ SDS: box "System" "Data" "Segment" ; move down .5i from SDS.n ;
+ UDS: box ht 0.75i "User" "Data" "Segment"
+ ]
+ move left 1i from DS.UDS.w
+ move down 0.25i
+ UAS: [
+ box invis "User" "Address" "Space"
+ ]
+ line from UAS.ne to UAS.se
+ line from UAS.nw to UAS.sw
+ line right 0.15i from UAS.nw
+ line right 0.15i from UAS.sw
+ line left 0.15i from UAS.ne
+ line left 0.15i from UAS.se
+ arrow from 1/4 of the way between PT.PTE.ne and PT.PTE.se right 1.875i
+ arrow from TT.TTE.e right .5i then down to UTS.n
+ arrow from PT.PTE.e right .875i then down to DS.SDS.n
+ arrow from 3/4 of the way between PT.PTE.ne and PT.PTE.se right .25i then down 1.5i then right .25i
+ arrow from 1/4 of the way between UAS.ne and UAS.se right .375i then up .25i then right .25i
+ arrow from 3/4 of the way between UAS.ne and UAS.se right 2.375i then up .875i then right .5i
+ move up 1.3175i from UAS.nw
+ move left .75i
+ line right 5.625i
+ move left 5.25i
+ move up .3125i
+ RS: [
+ box invis ht 0.2i "Resident"
+ ]
+ move down .8i
+ SW: [
+ box invis ht 0.2i "Swapped"
+ ]
+ arrow <-> from RS.s to SW.n
+]
+.PE
diff --git a/share/doc/psd/02.implement/fig2.pic b/share/doc/psd/02.implement/fig2.pic
new file mode 100644
index 0000000..2dc2915
--- /dev/null
+++ b/share/doc/psd/02.implement/fig2.pic
@@ -0,0 +1,110 @@
+.\" Copyright (c) 1986, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)fig2.pic 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.PS
+.ps 9
+[
+ PUOFT: [
+ A: box invis ht .4i wid 1i "Per-User Open" "File Table"
+ B: box ht .25i with .n at A.s
+ C: box with .n at B.s
+ D: box ht .25i with .n at C.s
+ ]
+ move down 1.0625i left 1.25i from PUOFT.D.s
+ OFT: [
+ A: box invis ht .4i wid 1i "Open File" "Table"
+ B: box ht .25i with .n at A.s
+ C: box with .n at B.s
+ D: box ht .25i with .n at C.s
+ ]
+ move down 1.0625i right 1.25i from PUOFT.D.s
+ AIT: [
+ A: box invis ht .4i wid 1i "Active I-node" "Table"
+ B: box ht .25i with .n at A.s
+ C: box with .n at B.s
+ D: box ht .25i with .n at C.s
+ ]
+ move down 2.5i from PUOFT.D.s
+ IF: [
+ A: box ht .25i
+ B: box ht .25i "I-node" with .n at A.s
+ C: box ht .25i with .n at B.s
+ D: box ht .25i "File" with .n at C.s
+ E: box ht .25i with .n at D.s
+ ]
+ move right 1.5i from IF.D.w
+ FMA: [
+ box invis "File" "Mapping" "Algorithms"
+ ]
+ line from FMA.ne to FMA.se
+ line from FMA.nw to FMA.sw
+ line left .15i from FMA.se
+ line left .15i from FMA.ne
+ line right .15i from FMA.nw
+ line right .15i from FMA.sw
+
+ arrow from FMA.w to IF.D.e
+ arrow from AIT.C.e right .25i then down 2.125i then left .5i
+ arrow from OFT.C.e to AIT.C.w
+ arrow from PUOFT.C.w left .5i then down 1.625i then left .5i
+ arrow <-> from IF.B.e right .5i then up 1.5i then right .5i
+
+ move up .1875i from OFT.A.nw
+ line right 5i
+ move left 5i down 1.9375i
+ line right 5i
+
+ move up 1.63475i right 2.75i from PUOFT.D.s
+ line right .1i down .1i then down .6i then right .1i down .1i then left .1i down .1i then down .6i then left .1i down .1i
+ move down .34375i right 2.75i from PUOFT.D.s
+ line right .1i down .1i then down .6i then right .1i down .1i then left .1i down .1i then down .6i then left .1i down .1i
+ move down 2.34375i right 2.75i from PUOFT.D.s
+ line right .1i down .1i then down .6i then right .1i down .1i then left .1i down .1i then down .6i then left .1i down .1i
+
+ move up 0.817375i right 2.9i from PUOFT.D.s
+ box invis "Swapped" "Per User"
+ move down 1.15625i right 2.9i from PUOFT.D.s
+ box invis wid 1i "Resident" "Per System"
+ move down 3.15675i right 2.9i from PUOFT.D.s
+ box invis ht 1i wid 1i "Secondary" "Storage" "Per" "File System"
+]
+.PE
diff --git a/share/doc/psd/02.implement/implement b/share/doc/psd/02.implement/implement
new file mode 100644
index 0000000..f6ad7d7
--- /dev/null
+++ b/share/doc/psd/02.implement/implement
@@ -0,0 +1,1282 @@
+.\" Copyright (c) 1986, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)implement 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.EH 'PSD:2-%''UNIX Implementation'
+.OH 'UNIX Implementation''PSD:2-%'
+.de P1
+.DS
+..
+.de P2
+.DE
+..
+.de UL
+.lg 0
+.if n .ul
+\%\&\\$3\f3\\$1\fR\&\\$2
+.lg
+..
+.de UC
+\&\\$3\s-1\\$1\\s0\&\\$2
+..
+.de IT
+.lg 0
+.if n .ul
+\%\&\\$3\f2\\$1\fR\&\\$2
+.lg
+..
+.de SP
+.sp \\$1
+..
+.hw device
+.TL
+UNIX Implementation
+.AU "MH 2C-523" 2394
+K. Thompson
+.AI
+AT&T Bell Laboratories
+Murray Hill, NJ
+.AB
+This paper describes in high-level terms the
+implementation of the resident
+.UX
+kernel.
+This discussion is broken into three parts.
+The first part describes
+how the
+.UX
+system views processes, users, and programs.
+The second part describes the I/O system.
+The last part describes the
+.UX
+file system.
+.AE
+.NH
+INTRODUCTION
+.PP
+The
+.UX
+kernel consists of about 10,000
+lines of C code and about 1,000 lines of assembly code.
+The assembly code can be further broken down into
+200 lines included for
+the sake of efficiency
+(they could have been written in C)
+and 800 lines to perform hardware
+functions not possible in C.
+.PP
+This code represents 5 to 10 percent of what has
+been lumped into the broad expression
+``the
+.UX
+operating system.''
+The kernel is the only
+.UX
+code that
+cannot be substituted by a user to his
+own liking.
+For this reason,
+the kernel should make as few real
+decisions as possible.
+This does not mean to allow the user
+a million options to do the same thing.
+Rather, it means to allow only one way to
+do one thing,
+but have that way be the least-common divisor
+of all the options that might have been provided.
+.PP
+What is or is not implemented in the kernel
+represents both a great responsibility and a great power.
+It is a soap-box platform on
+``the way things should be done.''
+Even so, if
+``the way'' is too radical,
+no one will follow it.
+Every important decision was weighed
+carefully.
+Throughout,
+simplicity has been substituted for efficiency.
+Complex algorithms are used only if
+their complexity can be localized.
+.NH
+PROCESS CONTROL
+.PP
+In the
+.UX
+system,
+a user executes programs in an
+environment called a user process.
+When a system function is required,
+the user process calls the system
+as a subroutine.
+At some point in this call,
+there is a distinct switch of environments.
+After this,
+the process is said to be a system process.
+In the normal definition of processes,
+the user and system processes are different
+phases of the same process
+(they never execute simultaneously).
+For protection,
+each system process has its own stack.
+.PP
+The user process may execute
+from a read-only text segment,
+which is shared by all processes
+executing the same code.
+There is no
+.IT functional
+benefit
+from shared-text segments.
+An
+.IT efficiency
+benefit comes from the fact
+that there is no need to swap read-only
+segments out because the original
+copy on secondary memory is still current.
+This is a great benefit to interactive
+programs that tend to be swapped while
+waiting for terminal input.
+Furthermore,
+if two processes are
+executing
+simultaneously
+from the same copy of a read-only segment,
+only one copy needs to reside in
+primary memory.
+This is a secondary effect,
+because
+simultaneous execution of a program
+is not common.
+It is ironic that this effect,
+which reduces the use of primary memory,
+only comes into play when there is
+an overabundance of primary memory,
+that is,
+when there is enough memory
+to keep waiting processes loaded.
+.PP
+All current read-only text segments in the
+system are maintained from the
+.IT "text table" .
+A text table entry holds the location of the
+text segment on secondary memory.
+If the segment is loaded,
+that table also holds the primary memory location
+and the count of the number of processes
+sharing this entry.
+When this count is reduced to zero,
+the entry is freed along with any
+primary and secondary memory holding the segment.
+When a process first executes a shared-text segment,
+a text table entry is allocated and the
+segment is loaded onto secondary memory.
+If a second process executes a text segment
+that is already allocated,
+the entry reference count is simply incremented.
+.PP
+A user process has some strictly private
+read-write data
+contained in its
+data segment.
+As far as possible,
+the system does not use the user's
+data segment to hold system data.
+In particular,
+there are no I/O buffers in the
+user address space.
+.PP
+The user data segment has two growing boundaries.
+One, increased automatically by the system
+as a result of memory faults,
+is used for a stack.
+The second boundary is only grown (or shrunk) by
+explicit requests.
+The contents of newly allocated primary memory
+is initialized to zero.
+.PP
+Also associated and swapped with
+a process is a small fixed-size
+system data segment.
+This segment contains all
+the data about the process
+that the system needs only when the
+process is active.
+Examples of the kind of data contained
+in the system data segment are:
+saved central processor registers,
+open file descriptors,
+accounting information,
+scratch data area,
+and the stack for the system phase
+of the process.
+The system data segment is not
+addressable from the user process
+and is therefore protected.
+.PP
+Last,
+there is a process table with
+one entry per process.
+This entry contains all the data
+needed by the system when the process
+is
+.IT not
+active.
+Examples are
+the process's name,
+the location of the other segments,
+and scheduling information.
+The process table entry is allocated
+when the process is created, and freed
+when the process terminates.
+This process entry is always directly
+addressable by the kernel.
+.PP
+Figure 1 shows the relationships
+between the various process control
+data.
+In a sense,
+the process table is the
+definition of all processes,
+because
+all the data associated with a process
+may be accessed
+starting from the process table entry.
+.KF
+.if t .in .375i
+.so fig1.pic
+.if t .in -.375i
+.sp 2v
+.ce
+Fig. 1\(emProcess control data structure.
+.KE
+.NH 2
+Process creation and program execution
+.PP
+Processes are created by the system primitive
+.UL fork .
+The newly created process (child) is a copy of the original process (parent).
+There is no detectable sharing of primary memory between the two processes.
+(Of course,
+if the parent process was executing from a read-only
+text segment,
+the child will share the text segment.)
+Copies of all writable data segments
+are made for the child process.
+Files that were open before the
+.UL fork
+are
+truly shared after the
+.UL fork .
+The processes are informed as to their part in the
+relationship to
+allow them to select their own
+(usually non-identical)
+destiny.
+The parent may
+.UL wait
+for the termination of
+any of its children.
+.PP
+A process may
+.UL exec
+a file.
+This consists of exchanging the current text and data
+segments of the process for new text and data
+segments specified in the file.
+The old segments are lost.
+Doing an
+.UL exec
+does
+.IT not
+change processes;
+the process that did the
+.UL exec
+persists,
+but
+after the
+.UL exec
+it is executing a different program.
+Files that were open
+before the
+.UL exec
+remain open after the
+.UL exec .
+.PP
+If a program,
+say the first pass of a compiler,
+wishes to overlay itself with another program,
+say the second pass,
+then it simply
+.UL exec s
+the second program.
+This is analogous
+to a ``goto.''
+If a program wishes to regain control
+after
+.UL exec ing
+a second program,
+it should
+.UL fork
+a child process,
+have the child
+.UL exec
+the second program, and
+have the parent
+.UL wait
+for the child.
+This is analogous to a ``call.''
+Breaking up the call into a binding followed by
+a transfer is similar to the subroutine linkage in
+SL-5.
+.[
+griswold hanson sl5 overview
+.]
+.NH 2
+Swapping
+.PP
+The major data associated with a process
+(the user data segment,
+the system data segment, and
+the text segment)
+are swapped to and from secondary
+memory, as needed.
+The user data segment and the system data segment
+are kept in contiguous primary memory to reduce
+swapping latency.
+(When low-latency devices, such as bubbles,
+.UC CCD s,
+or scatter/gather devices,
+are used,
+this decision will have to be reconsidered.)
+Allocation of both primary
+and secondary memory is performed
+by the same simple first-fit algorithm.
+When a process grows,
+a new piece of primary memory is allocated.
+The contents of the old memory is copied to the new memory.
+The old memory is freed
+and the tables are updated.
+If there is not enough primary memory,
+secondary memory is allocated instead.
+The process is swapped out onto the
+secondary memory,
+ready to be swapped in with
+its new size.
+.PP
+One separate process in the kernel,
+the swapping process,
+simply swaps the other
+processes in and out of primary memory.
+It examines the
+process table looking for a process
+that is swapped out and is
+ready to run.
+It allocates primary memory for that
+process and
+reads its segments into
+primary memory, where that process competes for the
+central processor with other loaded processes.
+If no primary memory is available,
+the swapping process makes memory available
+by examining the process table for processes
+that can be swapped out.
+It selects a process to swap out,
+writes it to secondary memory,
+frees the primary memory,
+and then goes back to look for a process
+to swap in.
+.PP
+Thus there are two specific algorithms
+to the swapping process.
+Which of the possibly many processes that
+are swapped out is to be swapped in?
+This is decided by secondary storage residence
+time.
+The one with the longest time out is swapped in first.
+There is a slight penalty for larger processes.
+Which of the possibly many processes that
+are loaded is to be swapped out?
+Processes that are waiting for slow events
+(i.e., not currently running or waiting for
+disk I/O)
+are picked first,
+by age in primary memory,
+again with size penalties.
+The other processes are examined
+by the same age algorithm,
+but are not taken out unless they are
+at least of some age.
+This adds
+hysteresis to the swapping and
+prevents total thrashing.
+.PP
+These swapping algorithms are the
+most suspect in the system.
+With limited primary memory,
+these algorithms cause total swapping.
+This is not bad in itself, because
+the swapping does not impact the
+execution of the resident processes.
+However, if the swapping device must
+also be used for file storage,
+the swapping traffic severely
+impacts the file system traffic.
+It is exactly these small systems
+that tend to double usage of limited disk
+resources.
+.NH 2
+Synchronization and scheduling
+.PP
+Process synchronization is accomplished by having processes
+wait for events.
+Events are represented by arbitrary integers.
+By convention,
+events are chosen to be addresses of
+tables associated with those events.
+For example, a process that is waiting for
+any of its children to terminate will wait
+for an event that is the address of
+its own process table entry.
+When a process terminates,
+it signals the event represented by
+its parent's process table entry.
+Signaling an event on which no process
+is waiting has no effect.
+Similarly,
+signaling an event on which many processes
+are waiting will wake all of them up.
+This differs considerably from
+Dijkstra's P and V
+synchronization operations,
+.[
+dijkstra sequential processes 1968
+.]
+in that
+no memory is associated with events.
+Thus there need be no allocation of events
+prior to their use.
+Events exist simply by being used.
+.PP
+On the negative side,
+because there is no memory associated with events,
+no notion of ``how much''
+can be signaled via the event mechanism.
+For example,
+processes that want memory might
+wait on an event associated with
+memory allocation.
+When any amount of memory becomes available,
+the event would be signaled.
+All the competing processes would then wake
+up to fight over the new memory.
+(In reality,
+the swapping process is the only process
+that waits for primary memory to become available.)
+.PP
+If an event occurs
+between the time a process decides
+to wait for that event and the
+time that process enters the wait state,
+then
+the process will wait on an event that has
+already happened (and may never happen again).
+This race condition happens because there is no memory associated with
+the event to indicate that the event has occurred;
+the only action of an event is to change a set of processes
+from wait state to run state.
+This problem is relieved largely
+by the fact that process switching can
+only occur in the kernel by explicit calls
+to the event-wait mechanism.
+If the event in question is signaled by another
+process,
+then there is no problem.
+But if the event is signaled by a hardware
+interrupt,
+then special care must be taken.
+These synchronization races pose the biggest
+problem when
+.UX
+is adapted to multiple-processor configurations.
+.[
+hawley meyer multiprocessing unix
+.]
+.PP
+The event-wait code in the kernel
+is like a co-routine linkage.
+At any time,
+all but one of the processes has called event-wait.
+The remaining process is the one currently executing.
+When it calls event-wait,
+a process whose event has been signaled
+is selected and that process
+returns from its call to event-wait.
+.PP
+Which of the runable processes is to run next?
+Associated with each process is a priority.
+The priority of a system process is assigned by the code
+issuing the wait on an event.
+This is roughly equivalent to the response
+that one would expect on such an event.
+Disk events have high priority,
+teletype events are low,
+and time-of-day events are very low.
+(From observation,
+the difference in system process priorities
+has little or no performance impact.)
+All user-process priorities are lower than the
+lowest system priority.
+User-process priorities are assigned
+by an algorithm based on the
+recent ratio of the amount of compute time to real time consumed
+by the process.
+A process that has used a lot of
+compute time in the last real-time
+unit is assigned a low user priority.
+Because interactive processes are characterized
+by low ratios of compute to real time,
+interactive response is maintained without any
+special arrangements.
+.PP
+The scheduling algorithm simply picks
+the process with the highest priority,
+thus
+picking all system processes first and
+user processes second.
+The compute-to-real-time ratio is updated
+every second.
+Thus,
+all other things being equal,
+looping user processes will be
+scheduled round-robin with a
+1-second quantum.
+A high-priority process waking up will
+preempt a running, low-priority process.
+The scheduling algorithm has a very desirable
+negative feedback character.
+If a process uses its high priority
+to hog the computer,
+its priority will drop.
+At the same time, if a low-priority
+process is ignored for a long time,
+its priority will rise.
+.NH
+I/O SYSTEM
+.PP
+The I/O system
+is broken into two completely separate systems:
+the block I/O system and the character I/O system.
+In retrospect,
+the names should have been ``structured I/O''
+and ``unstructured I/O,'' respectively;
+while the term ``block I/O'' has some meaning,
+``character I/O'' is a complete misnomer.
+.PP
+Devices are characterized by a major device number,
+a minor device number, and
+a class (block or character).
+For each class,
+there is an array of entry points into the device drivers.
+The major device number is used to index the array
+when calling the code for a particular device driver.
+The minor device number is passed to the
+device driver as an argument.
+The minor number has no significance other
+than that attributed to it by the driver.
+Usually,
+the driver uses the minor number to access
+one of several identical physical devices.
+.PP
+The use of the array of entry points
+(configuration table)
+as the only connection between the
+system code and the device drivers is
+very important.
+Early versions of the system had a much
+less formal connection with the drivers,
+so that it was extremely hard to handcraft
+differently configured systems.
+Now it is possible to create new
+device drivers in an average of a few hours.
+The configuration table in most cases
+is created automatically by a program
+that reads the system's parts list.
+.NH 2
+Block I/O system
+.PP
+The model block I/O device consists
+of randomly addressed, secondary
+memory blocks of 512 bytes each.
+The blocks are uniformly addressed
+0, 1, .\|.\|. up to the size of the device.
+The block device driver has the job of
+emulating this model on a
+physical device.
+.PP
+The block I/O devices are accessed
+through a layer of buffering software.
+The system maintains a list of buffers
+(typically between 10 and 70)
+each assigned a device name and
+a device address.
+This buffer pool constitutes a data cache
+for the block devices.
+On a read request,
+the cache is searched for the desired block.
+If the block is found,
+the data are made available to the
+requester without any physical I/O.
+If the block is not in the cache,
+the least recently used block in the cache is renamed,
+the correct device driver is called to
+fill up the renamed buffer, and then the
+data are made available.
+Write requests are handled in an analogous manner.
+The correct buffer is found
+and relabeled if necessary.
+The write is performed simply by marking
+the buffer as ``dirty.''
+The physical I/O is then deferred until
+the buffer is renamed.
+.PP
+The benefits in reduction of physical I/O
+of this scheme are substantial,
+especially considering the file system implementation.
+There are,
+however,
+some drawbacks.
+The asynchronous nature of the
+algorithm makes error reporting
+and meaningful user error handling
+almost impossible.
+The cavalier approach to I/O error
+handling in the
+.UX
+system is partly due to the asynchronous
+nature of the block I/O system.
+A second problem is in the delayed writes.
+If the system stops unexpectedly,
+it is almost certain that there is a
+lot of logically complete,
+but physically incomplete,
+I/O in the buffers.
+There is a system primitive to
+flush all outstanding I/O activity
+from the buffers.
+Periodic use of this primitive helps,
+but does not solve, the problem.
+Finally,
+the associativity in the buffers
+can alter the physical I/O sequence
+from that of the logical I/O sequence.
+This means that there are times
+when data structures on disk are inconsistent,
+even though the software is careful
+to perform I/O in the correct order.
+On non-random devices,
+notably magnetic tape,
+the inversions of writes can be disastrous.
+The problem with magnetic tapes is ``cured'' by
+allowing only one outstanding write request
+per drive.
+.NH 2
+Character I/O system
+.PP
+The character I/O system consists of all
+devices that do not fall into the block I/O model.
+This includes the ``classical'' character devices
+such as communications lines, paper tape, and
+line printers.
+It also includes magnetic tape and disks when
+they are not used in a stereotyped way,
+for example, 80-byte physical records on tape
+and track-at-a-time disk copies.
+In short,
+the character I/O interface
+means ``everything other than block.''
+I/O requests from the user are sent to the
+device driver essentially unaltered.
+The implementation of these requests is, of course,
+up to the device driver.
+There are guidelines and conventions
+to help the implementation of
+certain types of device drivers.
+.NH 3
+Disk drivers
+.PP
+Disk drivers are implemented
+with a queue of transaction records.
+Each record holds a read/write flag,
+a primary memory address,
+a secondary memory address, and
+a transfer byte count.
+Swapping is accomplished by passing
+such a record to the swapping device driver.
+The block I/O interface is implemented by
+passing such records with requests to
+fill and empty system buffers.
+The character I/O interface to the disk
+drivers create a transaction record that
+points directly into the user area.
+The routine that creates this record also insures
+that the user is not swapped during this
+I/O transaction.
+Thus by implementing the general disk driver,
+it is possible to use the disk
+as a block device,
+a character device, and a swap device.
+The only really disk-specific code in normal
+disk drivers is the pre-sort of transactions to
+minimize latency for a particular device, and
+the actual issuing of the I/O request.
+.NH 3
+Character lists
+.PP
+Real character-oriented devices may
+be implemented using the common
+code to handle character lists.
+A character list is a queue of characters.
+One routine puts a character on a queue.
+Another gets a character from a queue.
+It is also possible to ask how many
+characters are currently on a queue.
+Storage for all queues in the system comes
+from a single common pool.
+Putting a character on a queue will allocate
+space from the common pool and link the
+character onto the data structure defining the queue.
+Getting a character from a queue returns
+the corresponding space to the pool.
+.PP
+A typical character-output device
+(paper tape punch, for example)
+is implemented by passing characters
+from the user onto a character queue until
+some maximum number of characters is on the queue.
+The I/O is prodded to start as
+soon as there is anything on the queue
+and, once started,
+it is sustained by hardware completion interrupts.
+Each time there is a completion interrupt,
+the driver gets the next character from the queue
+and sends it to the hardware.
+The number of characters on the queue is checked and,
+as the count falls through some intermediate level,
+an event (the queue address) is signaled.
+The process that is passing characters from
+the user to the queue can be waiting on the event, and
+refill the queue to its maximum
+when the event occurs.
+.PP
+A typical character input device
+(for example, a paper tape reader)
+is handled in a very similar manner.
+.PP
+Another class of character devices is the terminals.
+A terminal is represented by three
+character queues.
+There are two input queues (raw and canonical)
+and an output queue.
+Characters going to the output of a terminal
+are handled by common code exactly as described
+above.
+The main difference is that there is also code
+to interpret the output stream as
+.UC ASCII
+characters and to perform some translations,
+e.g., escapes for deficient terminals.
+Another common aspect of terminals is code
+to insert real-time delay after certain control characters.
+.PP
+Input on terminals is a little different.
+Characters are collected from the terminal and
+placed on a raw input queue.
+Some device-dependent code conversion and
+escape interpretation is handled here.
+When a line is complete in the raw queue,
+an event is signaled.
+The code catching this signal then copies a
+line from the raw queue to a canonical queue
+performing the character erase and line kill editing.
+User read requests on terminals can be
+directed at either the raw or canonical queues.
+.NH 3
+Other character devices
+.PP
+Finally,
+there are devices that fit no general category.
+These devices are set up as character I/O drivers.
+An example is a driver that reads and writes
+unmapped primary memory as an I/O device.
+Some devices are too
+fast to be treated a character at time,
+but do not fit the disk I/O mold.
+Examples are fast communications lines and
+fast line printers.
+These devices either have their own buffers
+or ``borrow'' block I/O buffers for a while and
+then give them back.
+.NH
+THE FILE SYSTEM
+.PP
+In the
+.UX
+system,
+a file is a (one-dimensional) array of bytes.
+No other structure of files is implied by the
+system.
+Files are attached anywhere
+(and possibly multiply)
+onto a hierarchy of directories.
+Directories are simply files that
+users cannot write.
+For a further discussion
+of the external view of files and directories,
+see Ref.\0
+.[
+ritchie thompson unix bstj 1978
+%Q This issue
+.].
+.PP
+The
+.UX
+file system is a disk data structure
+accessed completely through
+the block I/O system.
+As stated before,
+the canonical view of a ``disk'' is
+a randomly addressable array of
+512-byte blocks.
+A file system breaks the disk into
+four self-identifying regions.
+The first block (address 0)
+is unused by the file system.
+It is left aside for booting procedures.
+The second block (address 1)
+contains the so-called ``super-block.''
+This block,
+among other things,
+contains the size of the disk and
+the boundaries of the other regions.
+Next comes the i-list,
+a list of file definitions.
+Each file definition is
+a 64-byte structure, called an i-node.
+The offset of a particular i-node
+within the i-list is called its i-number.
+The combination of device name
+(major and minor numbers) and i-number
+serves to uniquely name a particular file.
+After the i-list,
+and to the end of the disk,
+come free storage blocks that
+are available for the contents of files.
+.PP
+The free space on a disk is maintained
+by a linked list of available disk blocks.
+Every block in this chain contains a disk address
+of the next block in the chain.
+The remaining space contains the address of up to
+50 disk blocks that are also free.
+Thus with one I/O operation,
+the system obtains 50 free blocks and a
+pointer where to find more.
+The disk allocation algorithms are
+very straightforward.
+Since all allocation is in fixed-size
+blocks and there is strict accounting of
+space,
+there is no need to compact or garbage collect.
+However,
+as disk space becomes dispersed,
+latency gradually increases.
+Some installations choose to occasionally compact
+disk space to reduce latency.
+.PP
+An i-node contains 13 disk addresses.
+The first 10 of these addresses point directly at
+the first 10 blocks of a file.
+If a file is larger than 10 blocks (5,120 bytes),
+then the eleventh address points at a block
+that contains the addresses of the next 128 blocks of the file.
+If the file is still larger than this
+(70,656 bytes),
+then the twelfth block points at up to 128 blocks,
+each pointing to 128 blocks of the file.
+Files yet larger
+(8,459,264 bytes)
+use the thirteenth address for a ``triple indirect'' address.
+The algorithm ends here with the maximum file size
+of 1,082,201,087 bytes.
+.PP
+A logical directory hierarchy is added
+to this flat physical structure simply
+by adding a new type of file, the directory.
+A directory is accessed exactly as an ordinary file.
+It contains 16-byte entries consisting of
+a 14-byte name and an i-number.
+The root of the hierarchy is at a known i-number
+(\fIviz.,\fR 2).
+The file system structure allows an arbitrary, directed graph
+of directories with regular files linked in
+at arbitrary places in this graph.
+In fact,
+very early
+.UX
+systems used such a structure.
+Administration of such a structure became so
+chaotic that later systems were restricted
+to a directory tree.
+Even now,
+with regular files linked multiply
+into arbitrary places in the tree,
+accounting for space has become a problem.
+It may become necessary to restrict the entire
+structure to a tree,
+and allow a new form of linking that
+is subservient to the tree structure.
+.PP
+The file system allows
+easy creation,
+easy removal,
+easy random accessing,
+and very easy space allocation.
+With most physical addresses confined
+to a small contiguous section of disk,
+it is also easy to dump, restore, and
+check the consistency of the file system.
+Large files suffer from indirect addressing,
+but the cache prevents most of the implied physical I/O
+without adding much execution.
+The space overhead properties of this scheme are quite good.
+For example,
+on one particular file system,
+there are 25,000 files containing 130M bytes of data-file content.
+The overhead (i-node, indirect blocks, and last block breakage)
+is about 11.5M bytes.
+The directory structure to support these files
+has about 1,500 directories containing 0.6M bytes of directory content
+and about 0.5M bytes of overhead in accessing the directories.
+Added up any way,
+this comes out to less than a 10 percent overhead for actual
+stored data.
+Most systems have this much overhead in
+padded trailing blanks alone.
+.NH 2
+File system implementation
+.PP
+Because the i-node defines a file,
+the implementation of the file system centers
+around access to the i-node.
+The system maintains a table of all active
+i-nodes.
+As a new file is accessed,
+the system locates the corresponding i-node,
+allocates an i-node table entry, and reads
+the i-node into primary memory.
+As in the buffer cache,
+the table entry is considered to be the current
+version of the i-node.
+Modifications to the i-node are made to
+the table entry.
+When the last access to the i-node goes
+away,
+the table entry is copied back to the
+secondary store i-list and the table entry is freed.
+.KF
+.if t .in .25i
+.so fig2.pic
+.if t .in -.25i
+.sp 2v
+.ce
+Fig. 2\(emFile system data structure.
+.sp
+.KE
+.PP
+All I/O operations on files are carried out
+with the aid of the corresponding i-node table entry.
+The accessing of a file is a straightforward
+implementation of the algorithms mentioned previously.
+The user is not aware of i-nodes and i-numbers.
+References to the file system are made in terms of
+path names of the directory tree.
+Converting a path name into an i-node table entry
+is also straightforward.
+Starting at some known i-node
+(the root or the current directory of some process),
+the next component of the path name is
+searched by reading the directory.
+This gives an i-number and an implied device
+(that of the directory).
+Thus the next i-node table entry can be accessed.
+If that was the last component of the path name,
+then this i-node is the result.
+If not,
+this i-node is the directory needed to look up
+the next component of the path name, and the
+algorithm is repeated.
+.PP
+The user process accesses the file system with
+certain primitives.
+The most common of these are
+.UL open ,
+.UL create ,
+.UL read ,
+.UL write ,
+.UL seek ,
+and
+.UL close .
+The data structures maintained are shown in Fig. 2.
+In the system data segment associated with a user,
+there is room for some (usually between 10 and 50) open files.
+This open file table consists of pointers that can be used to access
+corresponding i-node table entries.
+Associated with each of these open files is
+a current I/O pointer.
+This is a byte offset of
+the next read/write operation on the file.
+The system treats each read/write request
+as random with an implied seek to the
+I/O pointer.
+The user usually thinks of the file as
+sequential with the I/O pointer
+automatically counting the number of bytes
+that have been read/written from the file.
+The user may,
+of course,
+perform random I/O by setting the I/O pointer
+before reads/writes.
+.PP
+With file sharing,
+it is necessary to allow related
+processes to share a common I/O pointer
+and yet have separate I/O pointers
+for independent processes
+that access the same file.
+With these two conditions,
+the I/O pointer cannot reside
+in the i-node table nor can
+it reside in the list of
+open files for the process.
+A new table
+(the open file table)
+was invented for the sole purpose
+of holding the I/O pointer.
+Processes that share the same open
+file
+(the result of
+.UL fork s)
+share a common open file table entry.
+A separate open of the same file will
+only share the i-node table entry,
+but will have distinct open file table entries.
+.PP
+The main file system primitives are implemented as follows.
+.UL \&open
+converts a file system path name into an i-node
+table entry.
+A pointer to the i-node table entry is placed in a
+newly created open file table entry.
+A pointer to the file table entry is placed in the
+system data segment for the process.
+.UL \&create
+first creates a new i-node entry,
+writes the i-number into a directory, and
+then builds the same structure as for an
+.UL open .
+.UL \&read
+and
+.UL write
+just access the i-node entry as described above.
+.UL \&seek
+simply manipulates the I/O pointer.
+No physical seeking is done.
+.UL \&close
+just frees the structures built by
+.UL open
+and
+.UL create .
+Reference counts are kept on the open file table entries and
+the i-node table entries to free these structures after
+the last reference goes away.
+.UL \&unlink
+simply decrements the count of the
+number of directories pointing at the given i-node.
+When the last reference to an i-node table entry
+goes away,
+if the i-node has no directories pointing to it,
+then the file is removed and the i-node is freed.
+This delayed removal of files prevents
+problems arising from removing active files.
+A file may be removed while still open.
+The resulting unnamed file vanishes
+when the file is closed.
+This is a method of obtaining temporary files.
+.PP
+There is a type of unnamed
+.UC FIFO
+file called a
+.UL pipe.
+Implementation of
+.UL pipe s
+consists of implied
+.UL seek s
+before each
+.UL read
+or
+.UL write
+in order to implement
+first-in-first-out.
+There are also checks and synchronization
+to prevent the
+writer from grossly outproducing the
+reader and to prevent the reader from
+overtaking the writer.
+.NH 2
+Mounted file systems
+.PP
+The file system of a
+.UX
+system
+starts with some designated block device
+formatted as described above to contain
+a hierarchy.
+The root of this structure is the root of
+the
+.UX
+file system.
+A second formatted block device may be
+mounted
+at any leaf of
+the current hierarchy.
+This logically extends the current hierarchy.
+The implementation of
+mounting
+is trivial.
+A mount table is maintained containing
+pairs of designated leaf i-nodes and
+block devices.
+When converting a path name into an i-node,
+a check is made to see if the new i-node is a
+designated leaf.
+If it is,
+the i-node of the root
+of the block device replaces it.
+.PP
+Allocation of space for a file is taken
+from the free pool on the device on which the
+file lives.
+Thus a file system consisting of many
+mounted devices does not have a common pool of
+free secondary storage space.
+This separation of space on different
+devices is necessary to allow easy
+unmounting
+of a device.
+.NH 2
+Other system functions
+.PP
+There are some other things that the system
+does for the user\-a
+little accounting,
+a little tracing/debugging,
+and a little access protection.
+Most of these things are not very
+well developed
+because our use of the system in computing science research
+does not need them.
+There are some features that are missed in some
+applications, for example, better inter-process communication.
+.PP
+The
+.UX
+kernel is an I/O multiplexer more than
+a complete operating system.
+This is as it should be.
+Because of this outlook,
+many features are
+found in most
+other operating systems that are missing from the
+.UX
+kernel.
+For example,
+the
+.UX
+kernel does not support
+file access methods,
+file disposition,
+file formats,
+file maximum size,
+spooling,
+command language,
+logical records,
+physical records,
+assignment of logical file names,
+logical file names,
+more than one character set,
+an operator's console,
+an operator,
+log-in,
+or log-out.
+Many of these things are symptoms rather than features.
+Many of these things are implemented
+in user software
+using the kernel as a tool.
+A good example of this is the command language.
+.[
+bourne shell 1978 bstj
+%Q This issue
+.]
+Each user may have his own command language.
+Maintenance of such code is as easy as
+maintaining user code.
+The idea of implementing ``system'' code with general
+user primitives
+comes directly from
+.UC MULTICS .
+.[
+organick multics 1972
+.]
+.LP
+.[
+$LIST$
+.]
diff --git a/share/doc/psd/02.implement/ref.bib b/share/doc/psd/02.implement/ref.bib
new file mode 100644
index 0000000..3414064
--- /dev/null
+++ b/share/doc/psd/02.implement/ref.bib
@@ -0,0 +1,54 @@
+# $FreeBSD$
+
+%T U\s-2NIX\s0 Time-Sharing System: The U\s-2NIX\s0 Shell
+%A S. R. Bourne
+%K unix bstj
+%J Bell Sys. Tech. J.
+%V 57
+%N 6
+%P 1971-1990
+%D 1978
+
+%A R. E. Griswold
+%A D. R. Hanson
+%T An Overview of SL5
+%J SIGPLAN Notices
+%V 12
+%N 4
+%D April 1977
+%P 40-50
+
+%A E. W. Dijkstra
+%T Cooperating Sequential Processes
+%B Programming Languages
+%E F. Genuys
+%I Academic Press
+%C New York
+%D 1968
+%P 43-112
+
+%A J. A. Hawley
+%A W. B. Meyer
+%T M\s-2UNIX\s0, A Multiprocessing Version of U\s-2NIX\s0
+%K munix unix
+%R M.S. Thesis
+%I Naval Postgraduate School
+%C Monterey, Cal.
+%D 1975
+
+%T The U\s-2NIX\s0 Time-Sharing System
+%K unix bstj
+%A D. M. Ritchie
+%A K. Thompson
+%J Bell Sys. Tech. J.
+%V 57
+%N 6
+%P 1905-1929
+%D 1978
+
+%A E. I. Organick
+%T The M\s-2ULTICS\s0 System
+%K multics
+%I M.I.T. Press
+%C Cambridge, Mass.
+%D 1972
diff --git a/share/doc/psd/03.iosys/Makefile b/share/doc/psd/03.iosys/Makefile
new file mode 100644
index 0000000..113bf90
--- /dev/null
+++ b/share/doc/psd/03.iosys/Makefile
@@ -0,0 +1,8 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/03.iosys
+SRCS= iosys
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/03.iosys/iosys b/share/doc/psd/03.iosys/iosys
new file mode 100644
index 0000000..ce63bc2
--- /dev/null
+++ b/share/doc/psd/03.iosys/iosys
@@ -0,0 +1,1086 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)iosys 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.EH 'PSD:3-%''The UNIX I/O System'
+.OH 'The UNIX I/O System''PSD:3-%'
+.TL
+The UNIX I/O System
+.AU
+Dennis M. Ritchie
+.AI
+AT&T Bell Laboratories
+Murray Hill, NJ
+.PP
+This paper gives an overview of the workings of the UNIX\(dg
+.FS
+\(dgUNIX is a Trademark of Bell Laboratories.
+.FE
+I/O system.
+It was written with an eye toward providing
+guidance to writers of device driver routines,
+and is oriented more toward describing the environment
+and nature of device drivers than the implementation
+of that part of the file system which deals with
+ordinary files.
+.PP
+It is assumed that the reader has a good knowledge
+of the overall structure of the file system as discussed
+in the paper ``The UNIX Time-sharing System.''
+A more detailed discussion
+appears in
+``UNIX Implementation;''
+the current document restates parts of that one,
+but is still more detailed.
+It is most useful in
+conjunction with a copy of the system code,
+since it is basically an exegesis of that code.
+.SH
+Device Classes
+.PP
+There are two classes of device:
+.I block
+and
+.I character.
+The block interface is suitable for devices
+like disks, tapes, and DECtape
+which work, or can work, with addressible 512-byte blocks.
+Ordinary magnetic tape just barely fits in this category,
+since by use of forward
+and
+backward spacing any block can be read, even though
+blocks can be written only at the end of the tape.
+Block devices can at least potentially contain a mounted
+file system.
+The interface to block devices is very highly structured;
+the drivers for these devices share a great many routines
+as well as a pool of buffers.
+.PP
+Character-type devices have a much
+more straightforward interface, although
+more work must be done by the driver itself.
+.PP
+Devices of both types are named by a
+.I major
+and a
+.I minor
+device number.
+These numbers are generally stored as an integer
+with the minor device number
+in the low-order 8 bits and the major device number
+in the next-higher 8 bits;
+macros
+.I major
+and
+.I minor
+are available to access these numbers.
+The major device number selects which driver will deal with
+the device; the minor device number is not used
+by the rest of the system but is passed to the
+driver at appropriate times.
+Typically the minor number
+selects a subdevice attached to
+a given controller, or one of
+several similar hardware interfaces.
+.PP
+The major device numbers for block and character devices
+are used as indices in separate tables;
+they both start at 0 and therefore overlap.
+.SH
+Overview of I/O
+.PP
+The purpose of
+the
+.I open
+and
+.I creat
+system calls is to set up entries in three separate
+system tables.
+The first of these is the
+.I u_ofile
+table,
+which is stored in the system's per-process
+data area
+.I u.
+This table is indexed by
+the file descriptor returned by the
+.I open
+or
+.I creat,
+and is accessed during
+a
+.I read,
+.I write,
+or other operation on the open file.
+An entry contains only
+a pointer to the corresponding
+entry of the
+.I file
+table,
+which is a per-system data base.
+There is one entry in the
+.I file
+table for each
+instance of
+.I open
+or
+.I creat.
+This table is per-system because the same instance
+of an open file must be shared among the several processes
+which can result from
+.I forks
+after the file is opened.
+A
+.I file
+table entry contains
+flags which indicate whether the file
+was open for reading or writing or is a pipe, and
+a count which is used to decide when all processes
+using the entry have terminated or closed the file
+(so the entry can be abandoned).
+There is also a 32-bit file offset
+which is used to indicate where in the file the next read
+or write will take place.
+Finally, there is a pointer to the
+entry for the file in the
+.I inode
+table,
+which contains a copy of the file's i-node.
+.PP
+Certain open files can be designated ``multiplexed''
+files, and several other flags apply to such
+channels.
+In such a case, instead of an offset,
+there is a pointer to an associated multiplex channel table.
+Multiplex channels will not be discussed here.
+.PP
+An entry in the
+.I file
+table corresponds precisely to an instance of
+.I open
+or
+.I creat;
+if the same file is opened several times,
+it will have several
+entries in this table.
+However,
+there is at most one entry
+in the
+.I inode
+table for a given file.
+Also, a file may enter the
+.I inode
+table not only because it is open,
+but also because it is the current directory
+of some process or because it
+is a special file containing a currently-mounted
+file system.
+.PP
+An entry in the
+.I inode
+table differs somewhat from the
+corresponding i-node as stored on the disk;
+the modified and accessed times are not stored,
+and the entry is augmented
+by a flag word containing information about the entry,
+a count used to determine when it may be
+allowed to disappear,
+and the device and i-number
+whence the entry came.
+Also, the several block numbers that give addressing
+information for the file are expanded from
+the 3-byte, compressed format used on the disk to full
+.I long
+quantities.
+.PP
+During the processing of an
+.I open
+or
+.I creat
+call for a special file,
+the system always calls the device's
+.I open
+routine to allow for any special processing
+required (rewinding a tape, turning on
+the data-terminal-ready lead of a modem, etc.).
+However,
+the
+.I close
+routine is called only when the last
+process closes a file,
+that is, when the i-node table entry
+is being deallocated.
+Thus it is not feasible
+for a device to maintain, or depend on,
+a count of its users, although it is quite
+possible to
+implement an exclusive-use device which cannot
+be reopened until it has been closed.
+.PP
+When a
+.I read
+or
+.I write
+takes place,
+the user's arguments
+and the
+.I file
+table entry are used to set up the
+variables
+.I u.u_base,
+.I u.u_count,
+and
+.I u.u_offset
+which respectively contain the (user) address
+of the I/O target area, the byte-count for the transfer,
+and the current location in the file.
+If the file referred to is
+a character-type special file, the appropriate read
+or write routine is called; it is responsible
+for transferring data and updating the
+count and current location appropriately
+as discussed below.
+Otherwise, the current location is used to calculate
+a logical block number in the file.
+If the file is an ordinary file the logical block
+number must be mapped (possibly using indirect blocks)
+to a physical block number; a block-type
+special file need not be mapped.
+This mapping is performed by the
+.I bmap
+routine.
+In any event, the resulting physical block number
+is used, as discussed below, to
+read or write the appropriate device.
+.SH
+Character Device Drivers
+.PP
+The
+.I cdevsw
+table specifies the interface routines present for
+character devices.
+Each device provides five routines:
+open, close, read, write, and special-function
+(to implement the
+.I ioctl
+system call).
+Any of these may be missing.
+If a call on the routine
+should be ignored,
+(e.g.
+.I open
+on non-exclusive devices that require no setup)
+the
+.I cdevsw
+entry can be given as
+.I nulldev;
+if it should be considered an error,
+(e.g.
+.I write
+on read-only devices)
+.I nodev
+is used.
+For terminals,
+the
+.I cdevsw
+structure also contains a pointer to the
+.I tty
+structure associated with the terminal.
+.PP
+The
+.I open
+routine is called each time the file
+is opened with the full device number as argument.
+The second argument is a flag which is
+non-zero only if the device is to be written upon.
+.PP
+The
+.I close
+routine is called only when the file
+is closed for the last time,
+that is when the very last process in
+which the file is open closes it.
+This means it is not possible for the driver to
+maintain its own count of its users.
+The first argument is the device number;
+the second is a flag which is non-zero
+if the file was open for writing in the process which
+performs the final
+.I close.
+.PP
+When
+.I write
+is called, it is supplied the device
+as argument.
+The per-user variable
+.I u.u_count
+has been set to
+the number of characters indicated by the user;
+for character devices, this number may be 0
+initially.
+.I u.u_base
+is the address supplied by the user from which to start
+taking characters.
+The system may call the
+routine internally, so the
+flag
+.I u.u_segflg
+is supplied that indicates,
+if
+.I on,
+that
+.I u.u_base
+refers to the system address space instead of
+the user's.
+.PP
+The
+.I write
+routine
+should copy up to
+.I u.u_count
+characters from the user's buffer to the device,
+decrementing
+.I u.u_count
+for each character passed.
+For most drivers, which work one character at a time,
+the routine
+.I "cpass( )"
+is used to pick up characters
+from the user's buffer.
+Successive calls on it return
+the characters to be written until
+.I u.u_count
+goes to 0 or an error occurs,
+when it returns \(mi1.
+.I Cpass
+takes care of interrogating
+.I u.u_segflg
+and updating
+.I u.u_count.
+.PP
+Write routines which want to transfer
+a probably large number of characters into an internal
+buffer may also use the routine
+.I "iomove(buffer, offset, count, flag)"
+which is faster when many characters must be moved.
+.I Iomove
+transfers up to
+.I count
+characters into the
+.I buffer
+starting
+.I offset
+bytes from the start of the buffer;
+.I flag
+should be
+.I B_WRITE
+(which is 0) in the write case.
+Caution:
+the caller is responsible for making sure
+the count is not too large and is non-zero.
+As an efficiency note,
+.I iomove
+is much slower if any of
+.I "buffer+offset, count"
+or
+.I u.u_base
+is odd.
+.PP
+The device's
+.I read
+routine is called under conditions similar to
+.I write,
+except that
+.I u.u_count
+is guaranteed to be non-zero.
+To return characters to the user, the routine
+.I "passc(c)"
+is available; it takes care of housekeeping
+like
+.I cpass
+and returns \(mi1 as the last character
+specified by
+.I u.u_count
+is returned to the user;
+before that time, 0 is returned.
+.I Iomove
+is also usable as with
+.I write;
+the flag should be
+.I B_READ
+but the same cautions apply.
+.PP
+The ``special-functions'' routine
+is invoked by the
+.I stty
+and
+.I gtty
+system calls as follows:
+.I "(*p) (dev, v)"
+where
+.I p
+is a pointer to the device's routine,
+.I dev
+is the device number,
+and
+.I v
+is a vector.
+In the
+.I gtty
+case,
+the device is supposed to place up to 3 words of status information
+into the vector; this will be returned to the caller.
+In the
+.I stty
+case,
+.I v
+is 0;
+the device should take up to 3 words of
+control information from
+the array
+.I "u.u_arg[0...2]."
+.PP
+Finally, each device should have appropriate interrupt-time
+routines.
+When an interrupt occurs, it is turned into a C-compatible call
+on the devices's interrupt routine.
+The interrupt-catching mechanism makes
+the low-order four bits of the ``new PS'' word in the
+trap vector for the interrupt available
+to the interrupt handler.
+This is conventionally used by drivers
+which deal with multiple similar devices
+to encode the minor device number.
+After the interrupt has been processed,
+a return from the interrupt handler will
+return from the interrupt itself.
+.PP
+A number of subroutines are available which are useful
+to character device drivers.
+Most of these handlers, for example, need a place
+to buffer characters in the internal interface
+between their ``top half'' (read/write)
+and ``bottom half'' (interrupt) routines.
+For relatively low data-rate devices, the best mechanism
+is the character queue maintained by the
+routines
+.I getc
+and
+.I putc.
+A queue header has the structure
+.DS
+struct {
+ int c_cc; /* character count */
+ char *c_cf; /* first character */
+ char *c_cl; /* last character */
+} queue;
+.DE
+A character is placed on the end of a queue by
+.I "putc(c, &queue)"
+where
+.I c
+is the character and
+.I queue
+is the queue header.
+The routine returns \(mi1 if there is no space
+to put the character, 0 otherwise.
+The first character on the queue may be retrieved
+by
+.I "getc(&queue)"
+which returns either the (non-negative) character
+or \(mi1 if the queue is empty.
+.PP
+Notice that the space for characters in queues is
+shared among all devices in the system
+and in the standard system there are only some 600
+character slots available.
+Thus device handlers,
+especially write routines, must take
+care to avoid gobbling up excessive numbers of characters.
+.PP
+The other major help available
+to device handlers is the sleep-wakeup mechanism.
+The call
+.I "sleep(event, priority)"
+causes the process to wait (allowing other processes to run)
+until the
+.I event
+occurs;
+at that time, the process is marked ready-to-run
+and the call will return when there is no
+process with higher
+.I priority.
+.PP
+The call
+.I "wakeup(event)"
+indicates that the
+.I event
+has happened, that is, causes processes sleeping
+on the event to be awakened.
+The
+.I event
+is an arbitrary quantity agreed upon
+by the sleeper and the waker-up.
+By convention, it is the address of some data area used
+by the driver, which guarantees that events
+are unique.
+.PP
+Processes sleeping on an event should not assume
+that the event has really happened;
+they should check that the conditions which
+caused them to sleep no longer hold.
+.PP
+Priorities can range from 0 to 127;
+a higher numerical value indicates a less-favored
+scheduling situation.
+A distinction is made between processes sleeping
+at priority less than the parameter
+.I PZERO
+and those at numerically larger priorities.
+The former cannot
+be interrupted by signals, although it
+is conceivable that it may be swapped out.
+Thus it is a bad idea to sleep with
+priority less than PZERO on an event which might never occur.
+On the other hand, calls to
+.I sleep
+with larger priority
+may never return if the process is terminated by
+some signal in the meantime.
+Incidentally, it is a gross error to call
+.I sleep
+in a routine called at interrupt time, since the process
+which is running is almost certainly not the
+process which should go to sleep.
+Likewise, none of the variables in the user area
+``\fIu\fB.\fR''
+should be touched, let alone changed, by an interrupt routine.
+.PP
+If a device driver
+wishes to wait for some event for which it is inconvenient
+or impossible to supply a
+.I wakeup,
+(for example, a device going on-line, which does not
+generally cause an interrupt),
+the call
+.I "sleep(&lbolt, priority)
+may be given.
+.I Lbolt
+is an external cell whose address is awakened once every 4 seconds
+by the clock interrupt routine.
+.PP
+The routines
+.I "spl4( ), spl5( ), spl6( ), spl7( )"
+are available to
+set the processor priority level as indicated to avoid
+inconvenient interrupts from the device.
+.PP
+If a device needs to know about real-time intervals,
+then
+.I "timeout(func, arg, interval)
+will be useful.
+This routine arranges that after
+.I interval
+sixtieths of a second, the
+.I func
+will be called with
+.I arg
+as argument, in the style
+.I "(*func)(arg).
+Timeouts are used, for example,
+to provide real-time delays after function characters
+like new-line and tab in typewriter output,
+and to terminate an attempt to
+read the 201 Dataphone
+.I dp
+if there is no response within a specified number
+of seconds.
+Notice that the number of sixtieths of a second is limited to 32767,
+since it must appear to be positive,
+and that only a bounded number of timeouts
+can be going on at once.
+Also, the specified
+.I func
+is called at clock-interrupt time, so it should
+conform to the requirements of interrupt routines
+in general.
+.SH
+The Block-device Interface
+.PP
+Handling of block devices is mediated by a collection
+of routines that manage a set of buffers containing
+the images of blocks of data on the various devices.
+The most important purpose of these routines is to assure
+that several processes that access the same block of the same
+device in multiprogrammed fashion maintain a consistent
+view of the data in the block.
+A secondary but still important purpose is to increase
+the efficiency of the system by
+keeping in-core copies of blocks that are being
+accessed frequently.
+The main data base for this mechanism is the
+table of buffers
+.I buf.
+Each buffer header contains a pair of pointers
+.I "(b_forw, b_back)"
+which maintain a doubly-linked list
+of the buffers associated with a particular
+block device, and a
+pair of pointers
+.I "(av_forw, av_back)"
+which generally maintain a doubly-linked list of blocks
+which are ``free,'' that is,
+eligible to be reallocated for another transaction.
+Buffers that have I/O in progress
+or are busy for other purposes do not appear in this list.
+The buffer header
+also contains the device and block number to which the
+buffer refers, and a pointer to the actual storage associated with
+the buffer.
+There is a word count
+which is the negative of the number of words
+to be transferred to or from the buffer;
+there is also an error byte and a residual word
+count used to communicate information
+from an I/O routine to its caller.
+Finally, there is a flag word
+with bits indicating the status of the buffer.
+These flags will be discussed below.
+.PP
+Seven routines constitute
+the most important part of the interface with the
+rest of the system.
+Given a device and block number,
+both
+.I bread
+and
+.I getblk
+return a pointer to a buffer header for the block;
+the difference is that
+.I bread
+is guaranteed to return a buffer actually containing the
+current data for the block,
+while
+.I getblk
+returns a buffer which contains the data in the
+block only if it is already in core (whether it is
+or not is indicated by the
+.I B_DONE
+bit; see below).
+In either case the buffer, and the corresponding
+device block, is made ``busy,''
+so that other processes referring to it
+are obliged to wait until it becomes free.
+.I Getblk
+is used, for example,
+when a block is about to be totally rewritten,
+so that its previous contents are
+not useful;
+still, no other process can be allowed to refer to the block
+until the new data is placed into it.
+.PP
+The
+.I breada
+routine is used to implement read-ahead.
+it is logically similar to
+.I bread,
+but takes as an additional argument the number of
+a block (on the same device) to be read asynchronously
+after the specifically requested block is available.
+.PP
+Given a pointer to a buffer,
+the
+.I brelse
+routine
+makes the buffer again available to other processes.
+It is called, for example, after
+data has been extracted following a
+.I bread.
+There are three subtly-different write routines,
+all of which take a buffer pointer as argument,
+and all of which logically release the buffer for
+use by others and place it on the free list.
+.I Bwrite
+puts the
+buffer on the appropriate device queue,
+waits for the write to be done,
+and sets the user's error flag if required.
+.I Bawrite
+places the buffer on the device's queue, but does not wait
+for completion, so that errors cannot be reflected directly to
+the user.
+.I Bdwrite
+does not start any I/O operation at all,
+but merely marks
+the buffer so that if it happens
+to be grabbed from the free list to contain
+data from some other block, the data in it will
+first be written
+out.
+.PP
+.I Bwrite
+is used when one wants to be sure that
+I/O takes place correctly, and that
+errors are reflected to the proper user;
+it is used, for example, when updating i-nodes.
+.I Bawrite
+is useful when more overlap is desired
+(because no wait is required for I/O to finish)
+but when it is reasonably certain that the
+write is really required.
+.I Bdwrite
+is used when there is doubt that the write is
+needed at the moment.
+For example,
+.I bdwrite
+is called when the last byte of a
+.I write
+system call falls short of the end of a
+block, on the assumption that
+another
+.I write
+will be given soon which will re-use the same block.
+On the other hand,
+as the end of a block is passed,
+.I bawrite
+is called, since probably the block will
+not be accessed again soon and one might as
+well start the writing process as soon as possible.
+.PP
+In any event, notice that the routines
+.I "getblk"
+and
+.I bread
+dedicate the given block exclusively to the
+use of the caller, and make others wait,
+while one of
+.I "brelse, bwrite, bawrite,"
+or
+.I bdwrite
+must eventually be called to free the block for use by others.
+.PP
+As mentioned, each buffer header contains a flag
+word which indicates the status of the buffer.
+Since they provide
+one important channel for information between the drivers and the
+block I/O system, it is important to understand these flags.
+The following names are manifest constants which
+select the associated flag bits.
+.IP B_READ 10
+This bit is set when the buffer is handed to the device strategy routine
+(see below) to indicate a read operation.
+The symbol
+.I B_WRITE
+is defined as 0 and does not define a flag; it is provided
+as a mnemonic convenience to callers of routines like
+.I swap
+which have a separate argument
+which indicates read or write.
+.IP B_DONE 10
+This bit is set
+to 0 when a block is handed to the the device strategy
+routine and is turned on when the operation completes,
+whether normally as the result of an error.
+It is also used as part of the return argument of
+.I getblk
+to indicate if 1 that the returned
+buffer actually contains the data in the requested block.
+.IP B_ERROR 10
+This bit may be set to 1 when
+.I B_DONE
+is set to indicate that an I/O or other error occurred.
+If it is set the
+.I b_error
+byte of the buffer header may contain an error code
+if it is non-zero.
+If
+.I b_error
+is 0 the nature of the error is not specified.
+Actually no driver at present sets
+.I b_error;
+the latter is provided for a future improvement
+whereby a more detailed error-reporting
+scheme may be implemented.
+.IP B_BUSY 10
+This bit indicates that the buffer header is not on
+the free list, i.e. is
+dedicated to someone's exclusive use.
+The buffer still remains attached to the list of
+blocks associated with its device, however.
+When
+.I getblk
+(or
+.I bread,
+which calls it) searches the buffer list
+for a given device and finds the requested
+block with this bit on, it sleeps until the bit
+clears.
+.IP B_PHYS 10
+This bit is set for raw I/O transactions that
+need to allocate the Unibus map on an 11/70.
+.IP B_MAP 10
+This bit is set on buffers that have the Unibus map allocated,
+so that the
+.I iodone
+routine knows to deallocate the map.
+.IP B_WANTED 10
+This flag is used in conjunction with the
+.I B_BUSY
+bit.
+Before sleeping as described
+just above,
+.I getblk
+sets this flag.
+Conversely, when the block is freed and the busy bit
+goes down (in
+.I brelse)
+a
+.I wakeup
+is given for the block header whenever
+.I B_WANTED
+is on.
+This strategem avoids the overhead
+of having to call
+.I wakeup
+every time a buffer is freed on the chance that someone
+might want it.
+.IP B_AGE
+This bit may be set on buffers just before releasing them; if it
+is on,
+the buffer is placed at the head of the free list, rather than at the
+tail.
+It is a performance heuristic
+used when the caller judges that the same block will not soon be used again.
+.IP B_ASYNC 10
+This bit is set by
+.I bawrite
+to indicate to the appropriate device driver
+that the buffer should be released when the
+write has been finished, usually at interrupt time.
+The difference between
+.I bwrite
+and
+.I bawrite
+is that the former starts I/O, waits until it is done, and
+frees the buffer.
+The latter merely sets this bit and starts I/O.
+The bit indicates that
+.I relse
+should be called for the buffer on completion.
+.IP B_DELWRI 10
+This bit is set by
+.I bdwrite
+before releasing the buffer.
+When
+.I getblk,
+while searching for a free block,
+discovers the bit is 1 in a buffer it would otherwise grab,
+it causes the block to be written out before reusing it.
+.SH
+Block Device Drivers
+.PP
+The
+.I bdevsw
+table contains the names of the interface routines
+and that of a table for each block device.
+.PP
+Just as for character devices, block device drivers may supply
+an
+.I open
+and a
+.I close
+routine
+called respectively on each open and on the final close
+of the device.
+Instead of separate read and write routines,
+each block device driver has a
+.I strategy
+routine which is called with a pointer to a buffer
+header as argument.
+As discussed, the buffer header contains
+a read/write flag, the core address,
+the block number, a (negative) word count,
+and the major and minor device number.
+The role of the strategy routine
+is to carry out the operation as requested by the
+information in the buffer header.
+When the transaction is complete the
+.I B_DONE
+(and possibly the
+.I B_ERROR)
+bits should be set.
+Then if the
+.I B_ASYNC
+bit is set,
+.I brelse
+should be called;
+otherwise,
+.I wakeup.
+In cases where the device
+is capable, under error-free operation,
+of transferring fewer words than requested,
+the device's word-count register should be placed
+in the residual count slot of
+the buffer header;
+otherwise, the residual count should be set to 0.
+This particular mechanism is really for the benefit
+of the magtape driver;
+when reading this device
+records shorter than requested are quite normal,
+and the user should be told the actual length of the record.
+.PP
+Although the most usual argument
+to the strategy routines
+is a genuine buffer header allocated as discussed above,
+all that is actually required
+is that the argument be a pointer to a place containing the
+appropriate information.
+For example the
+.I swap
+routine, which manages movement
+of core images to and from the swapping device,
+uses the strategy routine
+for this device.
+Care has to be taken that
+no extraneous bits get turned on in the
+flag word.
+.PP
+The device's table specified by
+.I bdevsw
+has a
+byte to contain an active flag and an error count,
+a pair of links which constitute the
+head of the chain of buffers for the device
+.I "(b_forw, b_back),"
+and a first and last pointer for a device queue.
+Of these things, all are used solely by the device driver
+itself
+except for the buffer-chain pointers.
+Typically the flag encodes the state of the
+device, and is used at a minimum to
+indicate that the device is currently engaged in
+transferring information and no new command should be issued.
+The error count is useful for counting retries
+when errors occur.
+The device queue is used to remember stacked requests;
+in the simplest case it may be maintained as a first-in
+first-out list.
+Since buffers which have been handed over to
+the strategy routines are never
+on the list of free buffers,
+the pointers in the buffer which maintain the free list
+.I "(av_forw, av_back)"
+are also used to contain the pointers
+which maintain the device queues.
+.PP
+A couple of routines
+are provided which are useful to block device drivers.
+.I "iodone(bp)"
+arranges that the buffer to which
+.I bp
+points be released or awakened,
+as appropriate,
+when the
+strategy module has finished with the buffer,
+either normally or after an error.
+(In the latter case the
+.I B_ERROR
+bit has presumably been set.)
+.PP
+The routine
+.I "geterror(bp)"
+can be used to examine the error bit in a buffer header
+and arrange that any error indication found therein is
+reflected to the user.
+It may be called only in the non-interrupt
+part of a driver when I/O has completed
+.I (B_DONE
+has been set).
+.SH
+Raw Block-device I/O
+.PP
+A scheme has been set up whereby block device drivers may
+provide the ability to transfer information
+directly between the user's core image and the device
+without the use of buffers and in blocks as large as
+the caller requests.
+The method involves setting up a character-type special file
+corresponding to the raw device
+and providing
+.I read
+and
+.I write
+routines which set up what is usually a private,
+non-shared buffer header with the appropriate information
+and call the device's strategy routine.
+If desired, separate
+.I open
+and
+.I close
+routines may be provided but this is usually unnecessary.
+A special-function routine might come in handy, especially for
+magtape.
+.PP
+A great deal of work has to be done to generate the
+``appropriate information''
+to put in the argument buffer for
+the strategy module;
+the worst part is to map relocated user addresses to physical addresses.
+Most of this work is done by
+.I "physio(strat, bp, dev, rw)
+whose arguments are the name of the
+strategy routine
+.I strat,
+the buffer pointer
+.I bp,
+the device number
+.I dev,
+and a read-write flag
+.I rw
+whose value is either
+.I B_READ
+or
+.I B_WRITE.
+.I Physio
+makes sure that the user's base address and count are
+even (because most devices work in words)
+and that the core area affected is contiguous
+in physical space;
+it delays until the buffer is not busy, and makes it
+busy while the operation is in progress;
+and it sets up user error return information.
diff --git a/share/doc/psd/04.uprog/Makefile b/share/doc/psd/04.uprog/Makefile
new file mode 100644
index 0000000..f149dcf
--- /dev/null
+++ b/share/doc/psd/04.uprog/Makefile
@@ -0,0 +1,8 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/04.uprog
+SRCS= p.mac p0 p1 p2 p3 p4 p5 p6 p8 p9
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/04.uprog/p.mac b/share/doc/psd/04.uprog/p.mac
new file mode 100644
index 0000000..7f9295c
--- /dev/null
+++ b/share/doc/psd/04.uprog/p.mac
@@ -0,0 +1,71 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p.mac 8.1 (Berkeley) 6/8/93
+.de UC
+\&\\$3\s-1\\$1\\s0\&\\$2
+..
+.de IT
+\&\\$3\fI\\$1\fR\^\&\\$2
+..
+.de UL
+\%\&\\$3\f(CW\s-1\\$1\s0\fR\&\\$2
+..
+.de P1
+.DS I .5i
+.nf
+.ft CW
+.ps \\n(PS-1
+.vs \\n(VS-1
+..
+.de P2
+.ps \\n(PS
+.vs \\n(VS
+.ft R
+.DE
+..
+.hy 14 \"2=not last lines; 4= no -xx; 8=no xx-
+.am SH
+.ft R
+..
+.am NH
+.ft R
+..
+.am TL
+.ft R
+..
diff --git a/share/doc/psd/04.uprog/p0 b/share/doc/psd/04.uprog/p0
new file mode 100644
index 0000000..5aaf325
--- /dev/null
+++ b/share/doc/psd/04.uprog/p0
@@ -0,0 +1,82 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p0 8.1 (Berkeley) 6/8/93
+.\"
+.if n .ls 1
+.\" .TM 78-1273-9 39199 39199-11
+.\" .ND October 2, 1978
+.\" .old TM 75-1273-11 October 22, 1975
+.OH 'UNIX Programming \(em Second Edition''PSD:4-%'
+.EH 'PSD:4-%''UNIX Programming \(em Second Edition'
+.TL
+UNIX Programming \(em Second Edition
+.AU "MH 2C-518" 6021
+Brian W. Kernighan
+.AU "MH 2C-517" 3770
+Dennis M. Ritchie
+.AI
+AT&T Bell Laboratories
+Murray Hill, NJ 07974
+.AB
+.PP
+This paper is an introduction to programming on
+the
+.UX
+system.
+The emphasis is on how to write programs that interface
+to the operating system,
+either directly or through the standard I/O library.
+The topics discussed include
+.IP " \(bu"
+handling command arguments
+.IP " \(bu"
+rudimentary I/O; the standard input and output
+.IP " \(bu"
+the standard I/O library; file system access
+.IP " \(bu"
+low-level I/O: open, read, write, close, seek
+.IP " \(bu"
+processes: exec, fork, pipes
+.IP " \(bu"
+signals \(em interrupts, etc.
+.PP
+There is also an appendix which describes
+the standard I/O library in detail.
+.AE
+.\" .CS 17 0 17 0 0 4
diff --git a/share/doc/psd/04.uprog/p1 b/share/doc/psd/04.uprog/p1
new file mode 100644
index 0000000..848862e
--- /dev/null
+++ b/share/doc/psd/04.uprog/p1
@@ -0,0 +1,88 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p1 8.1 (Berkeley) 6/8/93
+.\"
+.if n .ls 2
+.if t .tr |\(or
+.NH
+INTRODUCTION
+.PP
+This paper describes how to write
+programs
+that interface with the
+.UC UNIX
+operating system in a non-trivial way.
+This includes programs that use files by name,
+that use pipes,
+that invoke other commands as they run,
+or that attempt to catch interrupts and other signals
+during execution.
+.PP
+The document collects material which is scattered
+throughout several sections of
+.I
+The
+.UC UNIX
+Programmer's Manual
+.R
+[1]
+for Version 7
+.UC UNIX .
+There is no attempt to be complete;
+only generally useful material is dealt with.
+It is assumed that you will be programming in C,
+so you must be able to read the language
+roughly up to the level of
+.I
+The C Programming Language
+.R
+[2].
+Some of the material in sections 2 through 4
+is based on
+topics covered more carefully there.
+You should also be familiar with
+.UC UNIX
+itself
+at least
+to the level of
+.I
+.UC UNIX
+for Beginners
+.R
+[3].
diff --git a/share/doc/psd/04.uprog/p2 b/share/doc/psd/04.uprog/p2
new file mode 100644
index 0000000..280f65c
--- /dev/null
+++ b/share/doc/psd/04.uprog/p2
@@ -0,0 +1,275 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p2 8.1 (Berkeley) 6/8/93
+.\"
+.NH
+BASICS
+.NH 2
+Program Arguments
+.PP
+When a C program is run as a command,
+the arguments on the command line are made available
+to the
+function
+.UL main
+as an argument count
+.UL argc
+and an array
+.UL argv
+of
+pointers to
+character strings
+that contain
+the arguments.
+By convention,
+.UL argv[0]
+is the command name itself,
+so
+.UL argc
+is always greater than 0.
+.PP
+The following program illustrates the mechanism:
+it simply echoes its arguments
+back to the terminal.
+(This is essentially the
+.UL echo
+command.)
+.P1
+main(argc, argv) /* echo arguments */
+int argc;
+char *argv[];
+{
+ int i;
+
+ for (i = 1; i < argc; i++)
+ printf("%s%c", argv[i], (i<argc-1) ? ' ' : '\en');
+}
+.P2
+.UL argv
+is a pointer to an array
+whose individual elements are pointers to arrays of characters;
+each is terminated by
+.UL \e0 ,
+so they can be treated as strings.
+The program starts by printing
+.UL argv[1]
+and loops until it has printed them all.
+.PP
+The argument count and the arguments
+are parameters to
+.UL main .
+If you want to keep them around so other
+routines can get at them, you must
+copy them to external variables.
+.NH 2
+The ``Standard Input'' and ``Standard Output''
+.PP
+The simplest input mechanism is to read the ``standard input,''
+which is generally the user's terminal.
+The function
+.UL getchar
+returns the next input character each time it is called.
+A file may be substituted for the terminal by
+using the
+.UL <
+convention:
+if
+.UL prog
+uses
+.UL getchar ,
+then
+the command line
+.P1
+prog <file
+.P2
+causes
+.UL prog
+to read
+.UL file
+instead of the terminal.
+.UL prog
+itself need know nothing about where its input
+is coming from.
+This is also true if the input comes from another program via
+the
+.U
+pipe mechanism:
+.P1
+otherprog | prog
+.P2
+provides the standard input for
+.UL prog
+from the standard output of
+.UL otherprog.
+.PP
+.UL getchar
+returns the value
+.UL EOF
+when it encounters the end of file
+(or an error)
+on whatever you are reading.
+The value of
+.UL EOF
+is normally defined to be
+.UL -1 ,
+but it is unwise to take any advantage
+of that knowledge.
+As will become clear shortly,
+this value is automatically defined for you when
+you compile a program,
+and need not be of any concern.
+.PP
+Similarly,
+.UL putchar(c)
+puts the character
+.UL c
+on the ``standard output,''
+which is also by default the terminal.
+The output can be captured on a file
+by using
+.UL > :
+if
+.UL prog
+uses
+.UL putchar ,
+.P1
+prog >outfile
+.P2
+writes the standard output on
+.UL outfile
+instead of the terminal.
+.UL outfile
+is created if it doesn't exist;
+if it already exists, its previous contents are overwritten.
+And a pipe can be used:
+.P1
+prog | otherprog
+.P2
+puts the standard output of
+.UL prog
+into the standard input of
+.UL otherprog.
+.PP
+The function
+.UL printf ,
+which formats output in various ways,
+uses
+the same mechanism as
+.UL putchar
+does,
+so calls to
+.UL printf
+and
+.UL putchar
+may be intermixed in any order;
+the output will appear in the order of the calls.
+.PP
+Similarly, the function
+.UL scanf
+provides for formatted input conversion;
+it will read the standard input and break it
+up into strings, numbers, etc.,
+as desired.
+.UL scanf
+uses the same mechanism as
+.UL getchar ,
+so calls to them may also be intermixed.
+.PP
+Many programs
+read only one input and write one output;
+for such programs I/O
+with
+.UL getchar ,
+.UL putchar ,
+.UL scanf ,
+and
+.UL printf
+may be entirely adequate,
+and it is almost always enough to get started.
+This is particularly true if
+the
+.UC UNIX
+pipe facility is used to connect the output of
+one program to the input of the next.
+For example, the following program
+strips out all ascii control characters
+from its input
+(except for newline and tab).
+.P1
+#include <stdio.h>
+
+main() /* ccstrip: strip non-graphic characters */
+{
+ int c;
+ while ((c = getchar()) != EOF)
+ if ((c >= ' ' && c < 0177) || c == '\et' || c == '\en')
+ putchar(c);
+ exit(0);
+}
+.P2
+The line
+.P1
+#include <stdio.h>
+.P2
+should appear at the beginning of each source file.
+It causes the C compiler to read a file
+.IT /usr/include/stdio.h ) (
+of
+standard routines and symbols
+that includes the definition of
+.UL EOF .
+.PP
+If it is necessary to treat multiple files,
+you can use
+.UL cat
+to collect the files for you:
+.P1
+cat file1 file2 ... | ccstrip >output
+.P2
+and thus avoid learning how to access files from a program.
+By the way,
+the call to
+.UL exit
+at the end is not necessary to make the program work
+properly,
+but it assures that any caller
+of the program will see a normal termination status
+(conventionally 0)
+from the program when it completes.
+Section 6 discusses status returns in more detail.
diff --git a/share/doc/psd/04.uprog/p3 b/share/doc/psd/04.uprog/p3
new file mode 100644
index 0000000..201c4a9
--- /dev/null
+++ b/share/doc/psd/04.uprog/p3
@@ -0,0 +1,469 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p3 8.1 (Berkeley) 6/8/93
+.\"
+.NH
+THE STANDARD I/O LIBRARY
+.PP
+The ``Standard I/O Library''
+is a collection of routines
+intended to provide
+efficient
+and portable
+I/O services
+for most C programs.
+The standard I/O library is available on each system that supports C,
+so programs that confine
+their system interactions
+to its facilities
+can be transported from one system to another essentially without change.
+.PP
+In this section, we will discuss the basics of the standard I/O library.
+The appendix contains a more complete description of its capabilities.
+.NH 2
+File Access
+.PP
+The programs written so far have all
+read the standard input and written the standard output,
+which we have assumed are magically pre-defined.
+The next step
+is to write a program that accesses
+a file that is
+.ul
+not
+already connected to the program.
+One simple example is
+.IT wc ,
+which counts the lines, words and characters
+in a set of files.
+For instance, the command
+.P1
+wc x.c y.c
+.P2
+prints the number of lines, words and characters
+in
+.UL x.c
+and
+.UL y.c
+and the totals.
+.PP
+The question is how to arrange for the named files
+to be read \(em
+that is, how to connect the file system names
+to the I/O statements which actually read the data.
+.PP
+The rules are simple.
+Before it can be read or written
+a file has to be
+.ul
+opened
+by the standard library function
+.UL fopen .
+.UL fopen
+takes an external name
+(like
+.UL x.c
+or
+.UL y.c ),
+does some housekeeping and negotiation with the operating system,
+and returns an internal name
+which must be used in subsequent
+reads or writes of the file.
+.PP
+This internal name is actually a pointer,
+called a
+.IT file
+.IT pointer ,
+to a structure
+which contains information about the file,
+such as the location of a buffer,
+the current character position in the buffer,
+whether the file is being read or written,
+and the like.
+Users don't need to know the details,
+because part of the standard I/O definitions
+obtained by including
+.UL stdio.h
+is a structure definition called
+.UL FILE .
+The only declaration needed for a file pointer
+is exemplified by
+.P1
+FILE *fp, *fopen();
+.P2
+This says that
+.UL fp
+is a pointer to a
+.UL FILE ,
+and
+.UL fopen
+returns a pointer to
+a
+.UL FILE .
+.UL FILE \& (
+is a type name, like
+.UL int ,
+not a structure tag.
+.PP
+The actual call to
+.UL fopen
+in a program
+is
+.P1
+fp = fopen(name, mode);
+.P2
+The first argument of
+.UL fopen
+is the
+name
+of the file,
+as a character string.
+The second argument is the
+mode,
+also as a character string,
+which indicates how you intend to
+use the file.
+The only allowable modes are
+read
+.UL \&"r" ), (
+write
+.UL \&"w" ), (
+or append
+.UL \&"a" ). (
+.PP
+If a file that you open for writing or appending does not exist,
+it is created
+(if possible).
+Opening an existing file for writing causes the old contents
+to be discarded.
+Trying to read a file that does not exist
+is an error,
+and there may be other causes of error
+as well
+(like trying to read a file
+when you don't have permission).
+If there is any error,
+.UL fopen
+will return the null pointer
+value
+.UL NULL
+(which is defined as zero in
+.UL stdio.h ).
+.PP
+The next thing needed is a way to read or write the file
+once it is open.
+There are several possibilities,
+of which
+.UL getc
+and
+.UL putc
+are the simplest.
+.UL getc
+returns the next character from a file;
+it needs the file pointer to tell it what file.
+Thus
+.P1
+c = getc(fp)
+.P2
+places in
+.UL c
+the next character from the file referred to by
+.UL fp ;
+it returns
+.UL EOF
+when it reaches end of file.
+.UL putc
+is the inverse of
+.UL getc :
+.P1
+putc(c, fp)
+.P2
+puts the character
+.UL c
+on the file
+.UL fp
+and returns
+.UL c .
+.UL getc
+and
+.UL putc
+return
+.UL EOF
+on error.
+.PP
+When a program is started, three files are opened automatically,
+and file pointers are provided for them.
+These files are the standard input,
+the standard output,
+and the standard error output;
+the corresponding file pointers are
+called
+.UL stdin ,
+.UL stdout ,
+and
+.UL stderr .
+Normally these are all connected to the terminal,
+but
+may be redirected to files or pipes as described in
+Section 2.2.
+.UL stdin ,
+.UL stdout
+and
+.UL stderr
+are pre-defined in the I/O library
+as the standard input, output and error files;
+they may be used anywhere an object of type
+.UL FILE\ *
+can be.
+They are
+constants, however,
+.ul
+not
+variables,
+so don't try to assign to them.
+.PP
+With some of the preliminaries out of the way,
+we can now write
+.IT wc .
+The basic design
+is one that has been found
+convenient for many programs:
+if there are command-line arguments, they are processed in order.
+If there are no arguments, the standard input
+is processed.
+This way the program can be used stand-alone
+or as part of a larger process.
+.P1
+#include <stdio.h>
+
+main(argc, argv) /* wc: count lines, words, chars */
+int argc;
+char *argv[];
+{
+ int c, i, inword;
+ FILE *fp, *fopen();
+ long linect, wordct, charct;
+ long tlinect = 0, twordct = 0, tcharct = 0;
+
+ i = 1;
+ fp = stdin;
+ do {
+ if (argc > 1 && (fp=fopen(argv[i], "r")) == NULL) {
+ fprintf(stderr, "wc: can't open %s\en", argv[i]);
+ continue;
+ }
+ linect = wordct = charct = inword = 0;
+ while ((c = getc(fp)) != EOF) {
+ charct++;
+ if (c == '\en')
+ linect++;
+ if (c == ' ' || c == '\et' || c == '\en')
+ inword = 0;
+ else if (inword == 0) {
+ inword = 1;
+ wordct++;
+ }
+ }
+ printf("%7ld %7ld %7ld", linect, wordct, charct);
+ printf(argc > 1 ? " %s\en" : "\en", argv[i]);
+ fclose(fp);
+ tlinect += linect;
+ twordct += wordct;
+ tcharct += charct;
+ } while (++i < argc);
+ if (argc > 2)
+ printf("%7ld %7ld %7ld total\en", tlinect, twordct, tcharct);
+ exit(0);
+}
+.P2
+The function
+.UL fprintf
+is identical to
+.UL printf ,
+save that the first argument is a file pointer
+that specifies the file to be
+written.
+.PP
+The function
+.UL fclose
+is the inverse of
+.UL fopen ;
+it breaks the connection between the file pointer and the external name
+that was established by
+.UL fopen ,
+freeing the
+file pointer for another file.
+Since there is a limit on the number
+of files
+that a program may have open simultaneously,
+it's a good idea to free things when they are no longer needed.
+There is also another reason to call
+.UL fclose
+on an output file
+\(em it flushes the buffer
+in which
+.UL putc
+is collecting output.
+.UL fclose \& (
+is called automatically for each open file
+when a program terminates normally.)
+.NH 2
+Error Handling \(em Stderr and Exit
+.PP
+.UL stderr
+is assigned to a program in the same way that
+.UL stdin
+and
+.UL stdout
+are.
+Output written on
+.UL stderr
+appears on the user's terminal
+even if the standard output is redirected.
+.IT wc
+writes its diagnostics on
+.UL stderr
+instead of
+.UL stdout
+so that if one of the files can't
+be accessed for some reason,
+the message
+finds its way to the user's terminal instead of disappearing
+down a pipeline
+or into an output file.
+.PP
+The program actually signals errors in another way,
+using the function
+.UL exit
+to terminate program execution.
+The argument of
+.UL exit
+is available to whatever process
+called it (see Section 6),
+so the success or failure
+of the program can be tested by another program
+that uses this one as a sub-process.
+By convention, a return value of 0
+signals that all is well;
+non-zero values signal abnormal situations.
+.PP
+.UL exit
+itself
+calls
+.UL fclose
+for each open output file,
+to flush out any buffered output,
+then calls
+a routine named
+.UL _exit .
+The function
+.UL _exit
+causes immediate termination without any buffer flushing;
+it may be called directly if desired.
+.NH 2
+Miscellaneous I/O Functions
+.PP
+The standard I/O library provides several other I/O functions
+besides those we have illustrated above.
+.PP
+Normally output with
+.UL putc ,
+etc., is buffered (except to
+.UL stderr );
+to force it out immediately, use
+.UL fflush(fp) .
+.PP
+.UL fscanf
+is identical to
+.UL scanf ,
+except that its first argument is a file pointer
+(as with
+.UL fprintf )
+that specifies the file from which the input comes;
+it returns
+.UL EOF
+at end of file.
+.PP
+The functions
+.UL sscanf
+and
+.UL sprintf
+are identical to
+.UL fscanf
+and
+.UL fprintf ,
+except that the first argument names a character string
+instead of a file pointer.
+The conversion is done from the string
+for
+.UL sscanf
+and into it for
+.UL sprintf .
+.PP
+.UL fgets(buf,\ size,\ fp)
+copies the next line from
+.UL fp ,
+up to and including a newline,
+into
+.UL buf ;
+at most
+.UL size-1
+characters are copied;
+it returns
+.UL NULL
+at end of file.
+.UL fputs(buf,\ fp)
+writes the string in
+.UL buf
+onto file
+.UL fp .
+.PP
+The function
+.UL ungetc(c,\ fp)
+``pushes back'' the character
+.UL c
+onto the input stream
+.UL fp ;
+a subsequent call to
+.UL getc ,
+.UL fscanf ,
+etc.,
+will encounter
+.UL c .
+Only one character of pushback per file is permitted.
diff --git a/share/doc/psd/04.uprog/p4 b/share/doc/psd/04.uprog/p4
new file mode 100644
index 0000000..fe23ac3
--- /dev/null
+++ b/share/doc/psd/04.uprog/p4
@@ -0,0 +1,600 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p4 8.1 (Berkeley) 6/8/93
+.\"
+.NH
+LOW-LEVEL I/O
+.PP
+This section describes the
+bottom level of I/O on the
+.UC UNIX
+system.
+The lowest level of I/O in
+.UC UNIX
+provides no buffering or any other services;
+it is in fact a direct entry into the operating system.
+You are entirely on your own,
+but on the other hand,
+you have the most control over what happens.
+And since the calls and usage are quite simple,
+this isn't as bad as it sounds.
+.NH 2
+File Descriptors
+.PP
+In the
+.UC UNIX
+operating system,
+all input and output is done
+by reading or writing files,
+because all peripheral devices, even the user's terminal,
+are files in the file system.
+This means that a single, homogeneous interface
+handles all communication between a program and peripheral devices.
+.PP
+In the most general case,
+before reading or writing a file,
+it is necessary to inform the system
+of your intent to do so,
+a process called
+``opening'' the file.
+If you are going to write on a file,
+it may also be necessary to create it.
+The system checks your right to do so
+(Does the file exist?
+Do you have permission to access it?),
+and if all is well,
+returns a small positive integer
+called a
+.ul
+file descriptor.
+Whenever I/O is to be done on the file,
+the file descriptor is used instead of the name to identify the file.
+(This is roughly analogous to the use of
+.UC READ(5,...)
+and
+.UC WRITE(6,...)
+in Fortran.)
+All
+information about an open file is maintained by the system;
+the user program refers to the file
+only
+by the file descriptor.
+.PP
+The file pointers discussed in section 3
+are similar in spirit to file descriptors,
+but file descriptors are more fundamental.
+A file pointer is a pointer to a structure that contains,
+among other things, the file descriptor for the file in question.
+.PP
+Since input and output involving the user's terminal
+are so common,
+special arrangements exist to make this convenient.
+When the command interpreter (the
+``shell'')
+runs a program,
+it opens
+three files, with file descriptors 0, 1, and 2,
+called the standard input,
+the standard output, and the standard error output.
+All of these are normally connected to the terminal,
+so if a program reads file descriptor 0
+and writes file descriptors 1 and 2,
+it can do terminal I/O
+without worrying about opening the files.
+.PP
+If I/O is redirected
+to and from files with
+.UL <
+and
+.UL > ,
+as in
+.P1
+prog <infile >outfile
+.P2
+the shell changes the default assignments for file descriptors
+0 and 1
+from the terminal to the named files.
+Similar observations hold if the input or output is associated with a pipe.
+Normally file descriptor 2 remains attached to the terminal,
+so error messages can go there.
+In all cases,
+the file assignments are changed by the shell,
+not by the program.
+The program does not need to know where its input
+comes from nor where its output goes,
+so long as it uses file 0 for input and 1 and 2 for output.
+.NH 2
+Read and Write
+.PP
+All input and output is done by
+two functions called
+.UL read
+and
+.UL write .
+For both, the first argument is a file descriptor.
+The second argument is a buffer in your program where the data is to
+come from or go to.
+The third argument is the number of bytes to be transferred.
+The calls are
+.P1
+n_read = read(fd, buf, n);
+
+n_written = write(fd, buf, n);
+.P2
+Each call returns a byte count
+which is the number of bytes actually transferred.
+On reading,
+the number of bytes returned may be less than
+the number asked for,
+because fewer than
+.UL n
+bytes remained to be read.
+(When the file is a terminal,
+.UL read
+normally reads only up to the next newline,
+which is generally less than what was requested.)
+A return value of zero bytes implies end of file,
+and
+.UL -1
+indicates an error of some sort.
+For writing, the returned value is the number of bytes
+actually written;
+it is generally an error if this isn't equal
+to the number supposed to be written.
+.PP
+The number of bytes to be read or written is quite arbitrary.
+The two most common values are
+1,
+which means one character at a time
+(``unbuffered''),
+and
+512,
+which corresponds to a physical blocksize on many peripheral devices.
+This latter size will be most efficient,
+but even character at a time I/O
+is not inordinately expensive.
+.PP
+Putting these facts together,
+we can write a simple program to copy
+its input to its output.
+This program will copy anything to anything,
+since the input and output can be redirected to any file or device.
+.P1
+#define BUFSIZE 512 /* best size for PDP-11 UNIX */
+
+main() /* copy input to output */
+{
+ char buf[BUFSIZE];
+ int n;
+
+ while ((n = read(0, buf, BUFSIZE)) > 0)
+ write(1, buf, n);
+ exit(0);
+}
+.P2
+If the file size is not a multiple of
+.UL BUFSIZE ,
+some
+.UL read
+will return a smaller number of bytes
+to be written by
+.UL write ;
+the next call to
+.UL read
+after that
+will return zero.
+.PP
+It is instructive to see how
+.UL read
+and
+.UL write
+can be used to construct
+higher level routines like
+.UL getchar ,
+.UL putchar ,
+etc.
+For example,
+here is a version of
+.UL getchar
+which does unbuffered input.
+.P1
+#define CMASK 0377 /* for making char's > 0 */
+
+getchar() /* unbuffered single character input */
+{
+ char c;
+
+ return((read(0, &c, 1) > 0) ? c & CMASK : EOF);
+}
+.P2
+.UL c
+.ul
+must
+be declared
+.UL char ,
+because
+.UL read
+accepts a character pointer.
+The character being returned must be masked with
+.UL 0377
+to ensure that it is positive;
+otherwise sign extension may make it negative.
+(The constant
+.UL 0377
+is appropriate for the
+.UC PDP -11
+but not necessarily for other machines.)
+.PP
+The second version of
+.UL getchar
+does input in big chunks,
+and hands out the characters one at a time.
+.P1
+#define CMASK 0377 /* for making char's > 0 */
+#define BUFSIZE 512
+
+getchar() /* buffered version */
+{
+ static char buf[BUFSIZE];
+ static char *bufp = buf;
+ static int n = 0;
+
+ if (n == 0) { /* buffer is empty */
+ n = read(0, buf, BUFSIZE);
+ bufp = buf;
+ }
+ return((--n >= 0) ? *bufp++ & CMASK : EOF);
+}
+.P2
+.NH 2
+Open, Creat, Close, Unlink
+.PP
+Other than the default
+standard input, output and error files,
+you must explicitly open files in order to
+read or write them.
+There are two system entry points for this,
+.UL open
+and
+.UL creat
+[sic].
+.PP
+.UL open
+is rather like the
+.UL fopen
+discussed in the previous section,
+except that instead of returning a file pointer,
+it returns a file descriptor,
+which is just an
+.UL int .
+.P1
+int fd;
+
+fd = open(name, rwmode);
+.P2
+As with
+.UL fopen ,
+the
+.UL name
+argument
+is a character string corresponding to the external file name.
+The access mode argument
+is different, however:
+.UL rwmode
+is 0 for read, 1 for write, and 2 for read and write access.
+.UL open
+returns
+.UL -1
+if any error occurs;
+otherwise it returns a valid file descriptor.
+.PP
+It is an error to
+try to
+.UL open
+a file that does not exist.
+The entry point
+.UL creat
+is provided to create new files,
+or to re-write old ones.
+.P1
+fd = creat(name, pmode);
+.P2
+returns a file descriptor
+if it was able to create the file
+called
+.UL name ,
+and
+.UL -1
+if not.
+If the file
+already exists,
+.UL creat
+will truncate it to zero length;
+it is not an error to
+.UL creat
+a file that already exists.
+.PP
+If the file is brand new,
+.UL creat
+creates it with the
+.ul
+protection mode
+specified by
+the
+.UL pmode
+argument.
+In the
+.UC UNIX
+file system,
+there are nine bits of protection information
+associated with a file,
+controlling read, write and execute permission for
+the owner of the file,
+for the owner's group,
+and for all others.
+Thus a three-digit octal number
+is most convenient for specifying the permissions.
+For example,
+0755
+specifies read, write and execute permission for the owner,
+and read and execute permission for the group and everyone else.
+.PP
+To illustrate,
+here is a simplified version of
+the
+.UC UNIX
+utility
+.IT cp ,
+a program which copies one file to another.
+(The main simplification is that our version
+copies only one file,
+and does not permit the second argument
+to be a directory.)
+.P1
+#define NULL 0
+#define BUFSIZE 512
+#define PMODE 0644 /* RW for owner, R for group, others */
+
+main(argc, argv) /* cp: copy f1 to f2 */
+int argc;
+char *argv[];
+{
+ int f1, f2, n;
+ char buf[BUFSIZE];
+
+ if (argc != 3)
+ error("Usage: cp from to", NULL);
+ if ((f1 = open(argv[1], 0)) == -1)
+ error("cp: can't open %s", argv[1]);
+ if ((f2 = creat(argv[2], PMODE)) == -1)
+ error("cp: can't create %s", argv[2]);
+
+ while ((n = read(f1, buf, BUFSIZE)) > 0)
+ if (write(f2, buf, n) != n)
+ error("cp: write error", NULL);
+ exit(0);
+}
+.P2
+.P1
+error(s1, s2) /* print error message and die */
+char *s1, *s2;
+{
+ printf(s1, s2);
+ printf("\en");
+ exit(1);
+}
+.P2
+.PP
+As we said earlier,
+there is a limit (typically 15-25)
+on the number of files which a program
+may have open simultaneously.
+Accordingly, any program which intends to process
+many files must be prepared to re-use
+file descriptors.
+The routine
+.UL close
+breaks the connection between a file descriptor
+and an open file,
+and frees the
+file descriptor for use with some other file.
+Termination of a program
+via
+.UL exit
+or return from the main program closes all open files.
+.PP
+The function
+.UL unlink(filename)
+removes the file
+.UL filename
+from the file system.
+.NH 2
+Random Access \(em Seek and Lseek
+.PP
+File I/O is normally sequential:
+each
+.UL read
+or
+.UL write
+takes place at a position in the file
+right after the previous one.
+When necessary, however,
+a file can be read or written in any arbitrary order.
+The
+system call
+.UL lseek
+provides a way to move around in
+a file without actually reading
+or writing:
+.P1
+lseek(fd, offset, origin);
+.P2
+forces the current position in the file
+whose descriptor is
+.UL fd
+to move to position
+.UL offset ,
+which is taken relative to the location
+specified by
+.UL origin .
+Subsequent reading or writing will begin at that position.
+.UL offset
+is
+a
+.UL long ;
+.UL fd
+and
+.UL origin
+are
+.UL int 's.
+.UL origin
+can be 0, 1, or 2 to specify that
+.UL offset
+is to be
+measured from
+the beginning, from the current position, or from the
+end of the file respectively.
+For example,
+to append to a file,
+seek to the end before writing:
+.P1
+lseek(fd, 0L, 2);
+.P2
+To get back to the beginning (``rewind''),
+.P1
+lseek(fd, 0L, 0);
+.P2
+Notice the
+.UL 0L
+argument;
+it could also be written as
+.UL (long)\ 0 .
+.PP
+With
+.UL lseek ,
+it is possible to treat files more or less like large arrays,
+at the price of slower access.
+For example, the following simple function reads any number of bytes
+from any arbitrary place in a file.
+.P1
+get(fd, pos, buf, n) /* read n bytes from position pos */
+int fd, n;
+long pos;
+char *buf;
+{
+ lseek(fd, pos, 0); /* get to pos */
+ return(read(fd, buf, n));
+}
+.P2
+.PP
+In pre-version 7
+.UC UNIX ,
+the basic entry point to the I/O system
+is called
+.UL seek .
+.UL seek
+is identical to
+.UL lseek ,
+except that its
+.UL offset
+argument is an
+.UL int
+rather than a
+.UL long .
+Accordingly,
+since
+.UC PDP -11
+integers have only 16 bits,
+the
+.UL offset
+specified
+for
+.UL seek
+is limited to 65,535;
+for this reason,
+.UL origin
+values of 3, 4, 5 cause
+.UL seek
+to multiply the given offset by 512
+(the number of bytes in one physical block)
+and then interpret
+.UL origin
+as if it were 0, 1, or 2 respectively.
+Thus to get to an arbitrary place in a large file
+requires two seeks, first one which selects
+the block, then one which
+has
+.UL origin
+equal to 1 and moves to the desired byte within the block.
+.NH 2
+Error Processing
+.PP
+The routines discussed in this section,
+and in fact all the routines which are direct entries into the system
+can incur errors.
+Usually they indicate an error by returning a value of \-1.
+Sometimes it is nice to know what sort of error occurred;
+for this purpose all these routines, when appropriate,
+leave an error number in the external cell
+.UL errno .
+The meanings of the various error numbers are
+listed
+in the introduction to Section II
+of the
+.I
+.UC UNIX
+Programmer's Manual,
+.R
+so your program can, for example, determine if
+an attempt to open a file failed because it did not exist
+or because the user lacked permission to read it.
+Perhaps more commonly,
+you may want to print out the
+reason for failure.
+The routine
+.UL perror
+will print a message associated with the value
+of
+.UL errno ;
+more generally,
+.UL sys\_errno
+is an array of character strings which can be indexed
+by
+.UL errno
+and printed by your program.
diff --git a/share/doc/psd/04.uprog/p5 b/share/doc/psd/04.uprog/p5
new file mode 100644
index 0000000..652641f
--- /dev/null
+++ b/share/doc/psd/04.uprog/p5
@@ -0,0 +1,577 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p5 8.1 (Berkeley) 6/8/93
+.\"
+.NH
+PROCESSES
+.PP
+It is often easier to use a program written
+by someone else than to invent one's own.
+This section describes how to
+execute a program from within another.
+.NH 2
+The ``System'' Function
+.PP
+The easiest way to execute a program from another
+is to use
+the standard library routine
+.UL system .
+.UL system
+takes one argument, a command string exactly as typed
+at the terminal
+(except for the newline at the end)
+and executes it.
+For instance, to time-stamp the output of a program,
+.P1
+main()
+{
+ system("date");
+ /* rest of processing */
+}
+.P2
+If the command string has to be built from pieces,
+the in-memory formatting capabilities of
+.UL sprintf
+may be useful.
+.PP
+Remember than
+.UL getc
+and
+.UL putc
+normally buffer their input;
+terminal I/O will not be properly synchronized unless
+this buffering is defeated.
+For output, use
+.UL fflush ;
+for input, see
+.UL setbuf
+in the appendix.
+.NH 2
+Low-Level Process Creation \(em Execl and Execv
+.PP
+If you're not using the standard library,
+or if you need finer control over what
+happens,
+you will have to construct calls to other programs
+using the more primitive routines that the standard
+library's
+.UL system
+routine is based on.
+.PP
+The most basic operation is to execute another program
+.ul
+without
+.IT returning ,
+by using the routine
+.UL execl .
+To print the date as the last action of a running program,
+use
+.P1
+execl("/bin/date", "date", NULL);
+.P2
+The first argument to
+.UL execl
+is the
+.ul
+file name
+of the command; you have to know where it is found
+in the file system.
+The second argument is conventionally
+the program name
+(that is, the last component of the file name),
+but this is seldom used except as a place-holder.
+If the command takes arguments, they are strung out after
+this;
+the end of the list is marked by a
+.UL NULL
+argument.
+.PP
+The
+.UL execl
+call
+overlays the existing program with
+the new one,
+runs that, then exits.
+There is
+.ul
+no
+return to the original program.
+.PP
+More realistically,
+a program might fall into two or more phases
+that communicate only through temporary files.
+Here it is natural to make the second pass
+simply an
+.UL execl
+call from the first.
+.PP
+The one exception to the rule that the original program never gets control
+back occurs when there is an error, for example if the file can't be found
+or is not executable.
+If you don't know where
+.UL date
+is located, say
+.P1
+execl("/bin/date", "date", NULL);
+execl("/usr/bin/date", "date", NULL);
+fprintf(stderr, "Someone stole 'date'\en");
+.P2
+.PP
+A variant of
+.UL execl
+called
+.UL execv
+is useful when you don't know in advance how many arguments there are going to be.
+The call is
+.P1
+execv(filename, argp);
+.P2
+where
+.UL argp
+is an array of pointers to the arguments;
+the last pointer in the array must be
+.UL NULL
+so
+.UL execv
+can tell where the list ends.
+As with
+.UL execl ,
+.UL filename
+is the file in which the program is found, and
+.UL argp[0]
+is the name of the program.
+(This arrangement is identical to the
+.UL argv
+array for program arguments.)
+.PP
+Neither of these routines provides the niceties of normal command execution.
+There is no automatic search of multiple directories \(em
+you have to know precisely where the command is located.
+Nor do you get the expansion of metacharacters like
+.UL < ,
+.UL > ,
+.UL * ,
+.UL ? ,
+and
+.UL []
+in the argument list.
+If you want these, use
+.UL execl
+to invoke the shell
+.UL sh ,
+which then does all the work.
+Construct a string
+.UL commandline
+that contains the complete command as it would have been typed
+at the terminal, then say
+.P1
+execl("/bin/sh", "sh", "-c", commandline, NULL);
+.P2
+The shell is assumed to be at a fixed place,
+.UL /bin/sh .
+Its argument
+.UL -c
+says to treat the next argument
+as a whole command line, so it does just what you want.
+The only problem is in constructing the right information
+in
+.UL commandline .
+.NH 2
+Control of Processes \(em Fork and Wait
+.PP
+So far what we've talked about isn't really all that useful by itself.
+Now we will show how to regain control after running
+a program with
+.UL execl
+or
+.UL execv .
+Since these routines simply overlay the new program on the old one,
+to save the old one requires that it first be split into
+two copies;
+one of these can be overlaid, while the other waits for the new,
+overlaying program to finish.
+The splitting is done by a routine called
+.UL fork :
+.P1
+proc_id = fork();
+.P2
+splits the program into two copies, both of which continue to run.
+The only difference between the two is the value of
+.UL proc_id ,
+the ``process id.''
+In one of these processes (the ``child''),
+.UL proc_id
+is zero.
+In the other
+(the ``parent''),
+.UL proc_id
+is non-zero; it is the process number of the child.
+Thus the basic way to call, and return from,
+another program is
+.P1
+if (fork() == 0)
+ execl("/bin/sh", "sh", "-c", cmd, NULL); /* in child */
+.P2
+And in fact, except for handling errors, this is sufficient.
+The
+.UL fork
+makes two copies of the program.
+In the child, the value returned by
+.UL fork
+is zero, so it calls
+.UL execl
+which does the
+.UL command
+and then dies.
+In the parent,
+.UL fork
+returns non-zero
+so it skips the
+.UL execl.
+(If there is any error,
+.UL fork
+returns
+.UL -1 ).
+.PP
+More often, the parent wants to wait for the child to terminate
+before continuing itself.
+This can be done with
+the function
+.UL wait :
+.P1
+int status;
+
+if (fork() == 0)
+ execl(...);
+wait(&status);
+.P2
+This still doesn't handle any abnormal conditions, such as a failure
+of the
+.UL execl
+or
+.UL fork ,
+or the possibility that there might be more than one child running simultaneously.
+(The
+.UL wait
+returns the
+process id
+of the terminated child, if you want to check it against the value
+returned by
+.UL fork .)
+Finally, this fragment doesn't deal with any
+funny behavior on the part of the child
+(which is reported in
+.UL status ).
+Still, these three lines
+are the heart of the standard library's
+.UL system
+routine,
+which we'll show in a moment.
+.PP
+The
+.UL status
+returned by
+.UL wait
+encodes in its low-order eight bits
+the system's idea of the child's termination status;
+it is 0 for normal termination and non-zero to indicate
+various kinds of problems.
+The next higher eight bits are taken from the argument
+of the call to
+.UL exit
+which caused a normal termination of the child process.
+It is good coding practice
+for all programs to return meaningful
+status.
+.PP
+When a program is called by the shell,
+the three file descriptors
+0, 1, and 2 are set up pointing at the right files,
+and all other possible file descriptors
+are available for use.
+When this program calls another one,
+correct etiquette suggests making sure the same conditions
+hold.
+Neither
+.UL fork
+nor the
+.UL exec
+calls affects open files in any way.
+If the parent is buffering output
+that must come out before output from the child,
+the parent must flush its buffers
+before the
+.UL execl .
+Conversely,
+if a caller buffers an input stream,
+the called program will lose any information
+that has been read by the caller.
+.NH 2
+Pipes
+.PP
+A
+.ul
+pipe
+is an I/O channel intended for use
+between two cooperating processes:
+one process writes into the pipe,
+while the other reads.
+The system looks after buffering the data and synchronizing
+the two processes.
+Most pipes are created by the shell,
+as in
+.P1
+ls | pr
+.P2
+which connects the standard output of
+.UL ls
+to the standard input of
+.UL pr .
+Sometimes, however, it is most convenient
+for a process to set up its own plumbing;
+in this section, we will illustrate how
+the pipe connection is established and used.
+.PP
+The system call
+.UL pipe
+creates a pipe.
+Since a pipe is used for both reading and writing,
+two file descriptors are returned;
+the actual usage is like this:
+.P1
+int fd[2];
+
+stat = pipe(fd);
+if (stat == -1)
+ /* there was an error ... */
+.P2
+.UL fd
+is an array of two file descriptors, where
+.UL fd[0]
+is the read side of the pipe and
+.UL fd[1]
+is for writing.
+These may be used in
+.UL read ,
+.UL write
+and
+.UL close
+calls just like any other file descriptors.
+.PP
+If a process reads a pipe which is empty,
+it will wait until data arrives;
+if a process writes into a pipe which
+is too full, it will wait until the pipe empties somewhat.
+If the write side of the pipe is closed,
+a subsequent
+.UL read
+will encounter end of file.
+.PP
+To illustrate the use of pipes in a realistic setting,
+let us write a function called
+.UL popen(cmd,\ mode) ,
+which creates a process
+.UL cmd
+(just as
+.UL system
+does),
+and returns a file descriptor that will either
+read or write that process, according to
+.UL mode .
+That is,
+the call
+.P1
+fout = popen("pr", WRITE);
+.P2
+creates a process that executes
+the
+.UL pr
+command;
+subsequent
+.UL write
+calls using the file descriptor
+.UL fout
+will send their data to that process
+through the pipe.
+.PP
+.UL popen
+first creates the
+the pipe with a
+.UL pipe
+system call;
+it then
+.UL fork s
+to create two copies of itself.
+The child decides whether it is supposed to read or write,
+closes the other side of the pipe,
+then calls the shell (via
+.UL execl )
+to run the desired process.
+The parent likewise closes the end of the pipe it does not use.
+These closes are necessary to make end-of-file tests work properly.
+For example, if a child that intends to read
+fails to close the write end of the pipe, it will never
+see the end of the pipe file, just because there is one writer
+potentially active.
+.P1
+#include <stdio.h>
+
+#define READ 0
+#define WRITE 1
+#define tst(a, b) (mode == READ ? (b) : (a))
+static int popen_pid;
+
+popen(cmd, mode)
+char *cmd;
+int mode;
+{
+ int p[2];
+
+ if (pipe(p) < 0)
+ return(NULL);
+ if ((popen_pid = fork()) == 0) {
+ close(tst(p[WRITE], p[READ]));
+ close(tst(0, 1));
+ dup(tst(p[READ], p[WRITE]));
+ close(tst(p[READ], p[WRITE]));
+ execl("/bin/sh", "sh", "-c", cmd, 0);
+ _exit(1); /* disaster has occurred if we get here */
+ }
+ if (popen_pid == -1)
+ return(NULL);
+ close(tst(p[READ], p[WRITE]));
+ return(tst(p[WRITE], p[READ]));
+}
+.P2
+The sequence of
+.UL close s
+in the child
+is a bit tricky.
+Suppose
+that the task is to create a child process that will read data from the parent.
+Then the first
+.UL close
+closes the write side of the pipe,
+leaving the read side open.
+The lines
+.P1
+close(tst(0, 1));
+dup(tst(p[READ], p[WRITE]));
+.P2
+are the conventional way to associate the pipe descriptor
+with the standard input of the child.
+The
+.UL close
+closes file descriptor 0,
+that is, the standard input.
+.UL dup
+is a system call that
+returns a duplicate of an already open file descriptor.
+File descriptors are assigned in increasing order
+and the first available one is returned,
+so
+the effect of the
+.UL dup
+is to copy the file descriptor for the pipe (read side)
+to file descriptor 0;
+thus the read side of the pipe becomes the standard input.
+(Yes, this is a bit tricky, but it's a standard idiom.)
+Finally, the old read side of the pipe is closed.
+.PP
+A similar sequence of operations takes place
+when the child process is supposed to write
+from the parent instead of reading.
+You may find it a useful exercise to step through that case.
+.PP
+The job is not quite done,
+for we still need a function
+.UL pclose
+to close the pipe created by
+.UL popen .
+The main reason for using a separate function rather than
+.UL close
+is that it is desirable to wait for the termination of the child process.
+First, the return value from
+.UL pclose
+indicates whether the process succeeded.
+Equally important when a process creates several children
+is that only a bounded number of unwaited-for children
+can exist, even if some of them have terminated;
+performing the
+.UL wait
+lays the child to rest.
+Thus:
+.P1
+#include <signal.h>
+
+pclose(fd) /* close pipe fd */
+int fd;
+{
+ register r, (*hstat)(), (*istat)(), (*qstat)();
+ int status;
+ extern int popen_pid;
+
+ close(fd);
+ istat = signal(SIGINT, SIG_IGN);
+ qstat = signal(SIGQUIT, SIG_IGN);
+ hstat = signal(SIGHUP, SIG_IGN);
+ while ((r = wait(&status)) != popen_pid && r != -1);
+ if (r == -1)
+ status = -1;
+ signal(SIGINT, istat);
+ signal(SIGQUIT, qstat);
+ signal(SIGHUP, hstat);
+ return(status);
+}
+.P2
+The calls to
+.UL signal
+make sure that no interrupts, etc.,
+interfere with the waiting process;
+this is the topic of the next section.
+.PP
+The routine as written has the limitation that only one pipe may
+be open at once, because of the single shared variable
+.UL popen_pid ;
+it really should be an array indexed by file descriptor.
+A
+.UL popen
+function, with slightly different arguments and return value is available
+as part of the standard I/O library discussed below.
+As currently written, it shares the same limitation.
diff --git a/share/doc/psd/04.uprog/p6 b/share/doc/psd/04.uprog/p6
new file mode 100644
index 0000000..c323d94
--- /dev/null
+++ b/share/doc/psd/04.uprog/p6
@@ -0,0 +1,361 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p6 8.1 (Berkeley) 6/8/93
+.\"
+.NH
+SIGNALS \(em INTERRUPTS AND ALL THAT
+.PP
+This section is concerned with how to
+deal gracefully with signals from
+the outside world (like interrupts), and with program faults.
+Since there's nothing very useful that
+can be done from within C about program
+faults, which arise mainly from illegal memory references
+or from execution of peculiar instructions,
+we'll discuss only the outside-world signals:
+.IT interrupt ,
+which is sent when the
+.UC DEL
+character is typed;
+.IT quit ,
+generated by the
+.UC FS
+character;
+.IT hangup ,
+caused by hanging up the phone;
+and
+.IT terminate ,
+generated by the
+.IT kill
+command.
+When one of these events occurs,
+the signal is sent to
+.IT all
+processes which were started
+from the corresponding terminal;
+unless other arrangements have been made,
+the signal
+terminates the process.
+In the
+.IT quit
+case, a core image file is written for debugging
+purposes.
+.PP
+The routine which alters the default action
+is
+called
+.UL signal .
+It has two arguments: the first specifies the signal, and the second
+specifies how to treat it.
+The first argument is just a number code, but the second is the
+address is either a function, or a somewhat strange code
+that requests that the signal either be ignored, or that it be
+given the default action.
+The include file
+.UL signal.h
+gives names for the various arguments, and should always be included
+when signals are used.
+Thus
+.P1
+#include <signal.h>
+ ...
+signal(SIGINT, SIG_IGN);
+.P2
+causes interrupts to be ignored, while
+.P1
+signal(SIGINT, SIG_DFL);
+.P2
+restores the default action of process termination.
+In all cases,
+.UL signal
+returns the previous value of the signal.
+The second argument to
+.UL signal
+may instead be the name of a function
+(which has to be declared explicitly if
+the compiler hasn't seen it already).
+In this case, the named routine will be called
+when the signal occurs.
+Most commonly this facility is used
+to allow the program to clean up
+unfinished business before terminating, for example to
+delete a temporary file:
+.P1
+#include <signal.h>
+
+main()
+{
+ int onintr();
+
+ if (signal(SIGINT, SIG_IGN) != SIG_IGN)
+ signal(SIGINT, onintr);
+
+ /* Process ... */
+
+ exit(0);
+}
+
+onintr()
+{
+ unlink(tempfile);
+ exit(1);
+}
+.P2
+.PP
+Why the test and the double call to
+.UL signal ?
+Recall that signals like interrupt are sent to
+.ul
+all
+processes started from a particular terminal.
+Accordingly, when a program is to be run
+non-interactively
+(started by
+.UL & ),
+the shell turns off interrupts for it
+so it won't be stopped by interrupts intended for foreground processes.
+If this program began by announcing that all interrupts were to be sent
+to the
+.UL onintr
+routine regardless,
+that would undo the shell's effort to protect it
+when run in the background.
+.PP
+The solution, shown above, is to test the state of interrupt handling,
+and to continue to ignore interrupts if they are already being ignored.
+The code as written
+depends on the fact that
+.UL signal
+returns the previous state of a particular signal.
+If signals were already being ignored, the process should continue to ignore them;
+otherwise, they should be caught.
+.PP
+A more sophisticated program may wish to intercept
+an interrupt and interpret it as a request
+to stop what it is doing
+and return to its own command-processing loop.
+Think of a text editor:
+interrupting a long printout should not cause it
+to terminate and lose the work
+already done.
+The outline of the code for this case is probably best written like this:
+.P1
+#include <signal.h>
+#include <setjmp.h>
+jmp_buf sjbuf;
+
+main()
+{
+ int (*istat)(), onintr();
+
+ istat = signal(SIGINT, SIG_IGN); /* save original status */
+ setjmp(sjbuf); /* save current stack position */
+ if (istat != SIG_IGN)
+ signal(SIGINT, onintr);
+
+ /* main processing loop */
+}
+.P2
+.P1
+onintr()
+{
+ printf("\enInterrupt\en");
+ longjmp(sjbuf); /* return to saved state */
+}
+.P2
+The include file
+.UL setjmp.h
+declares the type
+.UL jmp_buf
+an object in which the state
+can be saved.
+.UL sjbuf
+is such an object; it is an array of some sort.
+The
+.UL setjmp
+routine then saves
+the state of things.
+When an interrupt occurs,
+a call is forced to the
+.UL onintr
+routine,
+which can print a message, set flags, or whatever.
+.UL longjmp
+takes as argument an object stored into by
+.UL setjmp ,
+and restores control
+to the location after the call to
+.UL setjmp ,
+so control (and the stack level) will pop back
+to the place in the main routine where
+the signal is set up and the main loop entered.
+Notice, by the way, that
+the signal
+gets set again after an interrupt occurs.
+This is necessary; most signals are automatically
+reset to their default action when they occur.
+.PP
+Some programs that want to detect signals simply can't be stopped
+at an arbitrary point,
+for example in the middle of updating a linked list.
+If the routine called on occurrence of a signal
+sets a flag and then
+returns instead of calling
+.UL exit
+or
+.UL longjmp ,
+execution will continue
+at the exact point it was interrupted.
+The interrupt flag can then be tested later.
+.PP
+There is one difficulty associated with this
+approach.
+Suppose the program is reading the
+terminal when the interrupt is sent.
+The specified routine is duly called; it sets its flag
+and returns.
+If it were really true, as we said
+above, that ``execution resumes at the exact point it was interrupted,''
+the program would continue reading the terminal
+until the user typed another line.
+This behavior might well be confusing, since the user
+might not know that the program is reading;
+he presumably would prefer to have the signal take effect instantly.
+The method chosen to resolve this difficulty
+is to terminate the terminal read when execution
+resumes after the signal, returning an error code
+which indicates what happened.
+.PP
+Thus programs which catch and resume
+execution after signals should be prepared for ``errors''
+which are caused by interrupted
+system calls.
+(The ones to watch out for are reads from a terminal,
+.UL wait ,
+and
+.UL pause .)
+A program
+whose
+.UL onintr
+program just sets
+.UL intflag ,
+resets the interrupt signal, and returns,
+should usually include code like the following when it reads
+the standard input:
+.P1
+if (getchar() == EOF)
+ if (intflag)
+ /* EOF caused by interrupt */
+ else
+ /* true end-of-file */
+.P2
+.PP
+A final subtlety to keep in mind becomes important
+when signal-catching is combined with execution of other programs.
+Suppose a program catches interrupts, and also includes
+a method (like ``!'' in the editor)
+whereby other programs can be executed.
+Then the code should look something like this:
+.P1
+if (fork() == 0)
+ execl(...);
+signal(SIGINT, SIG_IGN); /* ignore interrupts */
+wait(&status); /* until the child is done */
+signal(SIGINT, onintr); /* restore interrupts */
+.P2
+Why is this?
+Again, it's not obvious but not really difficult.
+Suppose the program you call catches its own interrupts.
+If you interrupt the subprogram,
+it will get the signal and return to its
+main loop, and probably read your terminal.
+But the calling program will also pop out of
+its wait for the subprogram and read your terminal.
+Having two processes reading
+your terminal is very unfortunate,
+since the system figuratively flips a coin to decide
+who should get each line of input.
+A simple way out is to have the parent program
+ignore interrupts until the child is done.
+This reasoning is reflected in the standard I/O library function
+.UL system :
+.P1
+#include <signal.h>
+
+system(s) /* run command string s */
+char *s;
+{
+ int status, pid, w;
+ register int (*istat)(), (*qstat)();
+
+ if ((pid = fork()) == 0) {
+ execl("/bin/sh", "sh", "-c", s, 0);
+ _exit(127);
+ }
+ istat = signal(SIGINT, SIG_IGN);
+ qstat = signal(SIGQUIT, SIG_IGN);
+ while ((w = wait(&status)) != pid && w != -1)
+ ;
+ if (w == -1)
+ status = -1;
+ signal(SIGINT, istat);
+ signal(SIGQUIT, qstat);
+ return(status);
+}
+.P2
+.PP
+As an aside on declarations,
+the function
+.UL signal
+obviously has a rather strange second argument.
+It is in fact a pointer to a function delivering an integer,
+and this is also the type of the signal routine itself.
+The two values
+.UL SIG_IGN
+and
+.UL SIG_DFL
+have the right type, but are chosen so they coincide with
+no possible actual functions.
+For the enthusiast, here is how they are defined for the PDP-11;
+the definitions should be sufficiently ugly
+and nonportable to encourage use of the include file.
+.P1
+#define SIG_DFL (int (*)())0
+#define SIG_IGN (int (*)())1
+.P2
diff --git a/share/doc/psd/04.uprog/p8 b/share/doc/psd/04.uprog/p8
new file mode 100644
index 0000000..3c7c7b4
--- /dev/null
+++ b/share/doc/psd/04.uprog/p8
@@ -0,0 +1,62 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p8 8.1 (Berkeley) 6/8/93
+.\"
+.SH
+References
+.LP
+.IP [1]
+K. L. Thompson and D. M. Ritchie,
+.ul
+The
+.ul
+.UC UNIX
+.ul
+Programmer's Manual,
+Bell Laboratories, 1978.
+.IP [2]
+B. W. Kernighan and D. M. Ritchie,
+.ul
+The C Programming Language,
+Prentice-Hall, Inc., 1978.
+.IP [3]
+B. W. Kernighan,
+.UC UNIX \& ``
+for Beginners \(em Second Edition.''
+Bell Laboratories, 1978.
diff --git a/share/doc/psd/04.uprog/p9 b/share/doc/psd/04.uprog/p9
new file mode 100644
index 0000000..2366444
--- /dev/null
+++ b/share/doc/psd/04.uprog/p9
@@ -0,0 +1,680 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.\" @(#)p9 8.1 (Berkeley) 6/8/93
+.\"
+.sp 100
+.TL
+.ft R
+Appendix \(em The Standard I/O Library
+.AU
+D. M. Ritchie
+.AI
+AT&T Bell Laboratories
+Murray Hill, NJ 07974
+.PP
+The standard I/O library
+was designed with the following goals in mind.
+.IP 1.
+It must be as efficient as possible, both in time and in space,
+so that there will be no hesitation in using it
+no matter how critical the application.
+.IP 2.
+It must be simple to use, and also free of the magic
+numbers and mysterious calls
+whose use mars the understandability and portability
+of many programs using older packages.
+.IP 3.
+The interface provided should be applicable on all machines,
+whether or not the programs which implement it are directly portable
+to other systems,
+or to machines other than the PDP-11 running a version of
+.UC UNIX .
+.SH
+1. General Usage
+.PP
+Each program using the library must have the line
+.P1
+ #include <stdio.h>
+.P2
+which defines certain macros and variables.
+The routines are in the normal C library,
+so no special library argument is needed for loading.
+All names in the include file intended only for internal use begin
+with an underscore
+.UL _
+to reduce the possibility
+of collision with a user name.
+The names intended to be visible outside the package are
+.IP \f3stdin\f1 10
+The name of the standard input file
+.IP \f3stdout\f1 10
+The name of the standard output file
+.IP \f3stderr\f1 10
+The name of the standard error file
+.IP \f3EOF\f1 10
+is actually \-1, and is the value returned by
+the read routines on end-of-file or error.
+.IP \f3NULL\f1 10
+is a notation for the null pointer, returned by
+pointer-valued functions
+to indicate an error
+.IP \f3FILE\f1 10
+expands to
+.UL struct
+.UL _iob
+and is a useful
+shorthand when declaring pointers
+to streams.
+.IP \f3BUFSIZ\f1 10
+is a number (viz. 512)
+of the size suitable for an I/O buffer supplied by the user.
+See
+.UL setbuf ,
+below.
+.IP \f3getc,\ getchar,\ putc,\ putchar,\ feof,\ ferror,\ f\&ileno\f1 10
+.br
+are defined as macros.
+Their actions are described below;
+they are mentioned here
+to point out that it is not possible to
+redeclare them
+and that they are not actually functions;
+thus, for example, they may not have breakpoints set on them.
+.PP
+The routines in this package
+offer the convenience of automatic buffer allocation
+and output flushing where appropriate.
+The names
+.UL stdin ,
+.UL stdout ,
+and
+.UL stderr
+are in effect constants and may not be assigned to.
+.SH
+2. Calls
+.nr PD .4v
+.LP
+.UL FILE\ *fopen(filename,\ type)\ char\ *filename,\ *type;
+.nr PD 0
+.IP
+.br
+opens the file and, if needed, allocates a buffer for it.
+.UL filename
+is a character string specifying the name.
+.UL type
+is a character string (not a single character).
+It may be
+.UL \&"r" ,
+.UL \&"w" ,
+or
+.UL \&"a"
+to indicate
+intent to read, write, or append.
+The value returned is a file pointer.
+If it is
+.UL NULL
+the attempt to open failed.
+.ne 3
+.nr PD .4v
+.LP
+.UL FILE\ *freopen(filename,\ type,\ ioptr)\ char\ *filename,\ *type;\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+The stream named by
+.UL ioptr
+is closed, if necessary, and then reopened
+as if by
+.UL fopen .
+If the attempt to open fails,
+.UL NULL
+is returned,
+otherwise
+.UL ioptr ,
+which will now refer to the new file.
+Often the reopened stream is
+.UL stdin
+or
+.UL stdout .
+.nr PD .4v
+.LP
+.UL int\ getc(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+returns the next character from the stream named by
+.UL ioptr ,
+which is a pointer to a file such as returned by
+.UL fopen ,
+or the name
+.UL stdin .
+The integer
+.UL EOF
+is returned on end-of-file or when
+an error occurs.
+The null character
+.UL \e0
+is a legal character.
+.nr PD .4v
+.LP
+.UL int\ fgetc(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+acts like
+.UL getc
+but is a genuine function,
+not a macro,
+so it can be pointed to, passed as an argument, etc.
+.nr PD .4v
+.LP
+.UL putc(c,\ ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+.UL putc
+writes the character
+.UL c
+on the output stream named by
+.UL ioptr ,
+which is a value returned from
+.UL fopen
+or perhaps
+.UL stdout
+or
+.UL stderr .
+The character is returned as value,
+but
+.UL EOF
+is returned on error.
+.nr PD .4v
+.LP
+.UL fputc(c,\ ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+acts like
+.UL putc
+but is a genuine
+function, not a macro.
+.nr PD .4v
+.LP
+.UL fclose(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+The file corresponding to
+.UL ioptr
+is closed after any buffers are emptied.
+A buffer allocated by the I/O system is freed.
+.UL fclose
+is automatic on normal termination of the program.
+.nr PD .4v
+.LP
+.UL fflush(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+Any buffered information on the (output) stream named by
+.UL ioptr
+is written out.
+Output files are normally buffered
+if and only if they are not directed to the terminal;
+however,
+.UL stderr
+always starts off unbuffered and remains so unless
+.UL setbuf
+is used, or unless it is reopened.
+.nr PD .4v
+.LP
+.UL exit(errcode);
+.nr PD 0
+.IP
+.br
+terminates the process and returns its argument as status
+to the parent.
+This is a special version of the routine
+which calls
+.UL fflush
+for each output file.
+To terminate without flushing,
+use
+.UL _exit .
+.nr PD .4v
+.LP
+.UL feof(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+returns non-zero when end-of-file
+has occurred on the specified input stream.
+.nr PD .4v
+.LP
+.UL ferror(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+returns non-zero when an error has occurred while reading
+or writing the named stream.
+The error indication lasts until the file has been closed.
+.nr PD .4v
+.LP
+.UL getchar();
+.nr PD 0
+.IP
+.br
+is identical to
+.UL getc(stdin) .
+.nr PD .4v
+.LP
+.UL putchar(c);
+.nr PD 0
+.IP
+.br
+is identical to
+.UL putc(c,\ stdout) .
+.nr PD .4v
+.nr PD .4v
+.ne 2
+.LP
+.UL char\ *fgets(s,\ n,\ ioptr)\ char\ *s;\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+reads up to
+.UL n-1
+characters from the stream
+.UL ioptr
+into the character pointer
+.UL s .
+The read terminates with a newline character.
+The newline character is placed in the buffer
+followed by a null character.
+.UL fgets
+returns the first argument,
+or
+.UL NULL
+if error or end-of-file occurred.
+.nr PD .4v
+.nr PD .4v
+.LP
+.UL fputs(s,\ ioptr)\ char\ *s;\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+writes the null-terminated string (character array)
+.UL s
+on the stream
+.UL ioptr .
+No newline is appended.
+No value is returned.
+.nr PD .4v
+.LP
+.UL ungetc(c,\ ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+The argument character
+.UL c
+is pushed back on the input stream named by
+.UL ioptr .
+Only one character may be pushed back.
+.ne 5
+.nr PD .4v
+.LP
+.UL printf(format,\ a1,\ ...)\ char\ *format;
+.br
+.UL fprintf(ioptr,\ format,\ a1,\ ...)\ FILE\ *ioptr;\ char\ *format;
+.br
+.UL sprintf(s,\ format,\ a1,\ ...)char\ *s,\ *format;
+.br
+.nr PD 0
+.IP
+.UL printf
+writes on the standard output.
+.UL fprintf
+writes on the named output stream.
+.UL sprintf
+puts characters in the character array (string)
+named by
+.UL s .
+The specifications are as described in section
+.UL printf (3)
+of the
+.ul
+.UC UNIX
+.ul
+Programmer's Manual.
+.nr PD .4v
+.LP
+.UL scanf(format,\ a1,\ ...)\ char\ *format;
+.br
+.UL fscanf(ioptr,\ format,\ a1,\ ...)\ FILE\ *ioptr;\ char\ *format;
+.br
+.UL sscanf(s,\ format,\ a1,\ ...)\ char\ *s,\ *format;
+.nr PD 0
+.IP
+.br
+.UL scanf
+reads from the standard input.
+.UL fscanf
+reads from the named input stream.
+.UL sscanf
+reads from the character string
+supplied as
+.UL s .
+.UL scanf
+reads characters, interprets
+them according to a format, and stores the results in its arguments.
+Each routine expects as arguments
+a control string
+.UL format ,
+and a set of arguments,
+.I
+each of which must be a pointer,
+.R
+indicating where the converted input should be stored.
+.if t .sp .4v
+.UL scanf
+returns as its value the number of successfully matched and assigned input
+items.
+This can be used to decide how many input items were found.
+On end of file,
+.UL EOF
+is returned; note that this is different
+from 0, which means that the next input character does not
+match what was called for in the control string.
+.nr PD .4v
+.LP
+.UL fread(ptr,\ sizeof(*ptr),\ nitems,\ ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+reads
+.UL nitems
+of data beginning at
+.UL ptr
+from file
+.UL ioptr .
+No advance notification
+that binary I/O is being done is required;
+when, for portability reasons,
+it becomes required, it will be done
+by adding an additional character to the mode-string on the
+.UL fopen
+call.
+.nr PD .4v
+.LP
+.UL fwrite(ptr,\ sizeof(*ptr),\ nitems,\ ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+Like
+.UL fread ,
+but in the other direction.
+.nr PD .4v
+.LP
+.UL rewind(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+rewinds the stream
+named by
+.UL ioptr .
+It is not very useful except on input,
+since a rewound output file is still open only for output.
+.nr PD .4v
+.LP
+.UL system(string)\ char\ *string;
+.nr PD 0
+.IP
+.br
+The
+.UL string
+is executed by the shell as if typed at the terminal.
+.nr PD .4v
+.LP
+.UL getw(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+returns the next word from the input stream named by
+.UL ioptr .
+.UL EOF
+is returned on end-of-file or error,
+but since this a perfectly good
+integer
+.UL feof
+and
+.UL ferror
+should be used.
+A ``word'' is 16 bits on the
+.UC PDP-11.
+.nr PD .4v
+.LP
+.UL putw(w,\ ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+writes the integer
+.UL w
+on the named output stream.
+.nr PD .4v
+.LP
+.UL setbuf(ioptr,\ buf)\ FILE\ *ioptr;\ char\ *buf;
+.nr PD 0
+.IP
+.br
+.UL setbuf
+may be used after a stream has been opened
+but before I/O has started.
+If
+.UL buf
+is
+.UL NULL ,
+the stream will be unbuffered.
+Otherwise the buffer supplied will be used.
+It must be a character array of sufficient size:
+.P1
+char buf[BUFSIZ];
+.P2
+.nr PD .4v
+.LP
+.UL fileno(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+returns the integer file descriptor associated with the file.
+.nr PD .4v
+.LP
+.UL fseek(ioptr,\ offset,\ ptrname)\ FILE\ *ioptr;\ long\ offset;
+.nr PD 0
+.IP
+.br
+The location of the next byte in the stream
+named by
+.UL ioptr
+is adjusted.
+.UL offset
+is a long integer.
+If
+.UL ptrname
+is 0, the offset is measured from the beginning of the file;
+if
+.UL ptrname
+is 1, the offset is measured from the current read or
+write pointer;
+if
+.UL ptrname
+is 2, the offset is measured from the end of the file.
+The routine accounts properly for any buffering.
+(When this routine is used on
+.UC UNIX \& non-
+systems,
+the offset must be a value returned from
+.UL ftell
+and the ptrname must be 0).
+.ne 3
+.nr PD .4v
+.LP
+.UL long\ ftell(ioptr)\ FILE\ *ioptr;
+.nr PD 0
+.IP
+.br
+The byte offset, measured from the beginning of the file,
+associated with the named stream is returned.
+Any buffering is properly accounted for.
+(On
+.UC UNIX \& non-
+systems the value of this call is useful only
+for handing to
+.UL fseek ,
+so as to position the file to the same place it was when
+.UL ftell
+was called.)
+.nr PD .4v
+.LP
+.UL getpw(uid,\ buf)\ char\ *buf;
+.nr PD 0
+.IP
+.br
+The password file is searched for the given integer user ID.
+If an appropriate line is found, it is copied into
+the character array
+.UL buf ,
+and 0 is returned.
+If no line is found corresponding to the user ID
+then 1 is returned.
+.nr PD .4v
+.LP
+.UL char\ *malloc(num);
+.nr PD 0
+.IP
+.br
+allocates
+.UL num
+bytes.
+The pointer returned is sufficiently well aligned to be usable for any purpose.
+.UL NULL
+is returned if no space is available.
+.nr PD .4v
+.LP
+.UL char\ *calloc(num,\ size);
+.nr PD 0
+.IP
+.br
+allocates space for
+.UL num
+items each of size
+.UL size .
+The space is guaranteed to be set to 0 and the pointer is
+sufficiently well aligned to be usable for any purpose.
+.UL NULL
+is returned if no space is available .
+.nr PD .4v
+.LP
+.UL cfree(ptr)\ char\ *ptr;
+.nr PD 0
+.IP
+.br
+Space is returned to the pool used by
+.UL calloc .
+Disorder can be expected if the pointer was not obtained
+from
+.UL calloc .
+.nr PD .4v
+.LP
+The following are macros whose definitions may be obtained by including
+.UL <ctype.h> .
+.nr PD .4v
+.LP
+.UL isalpha(c)
+returns non-zero if the argument is alphabetic.
+.nr PD .4v
+.LP
+.UL isupper(c)
+returns non-zero if the argument is upper-case alphabetic.
+.nr PD .4v
+.LP
+.UL islower(c)
+returns non-zero if the argument is lower-case alphabetic.
+.nr PD .4v
+.LP
+.UL isdigit(c)
+returns non-zero if the argument is a digit.
+.nr PD .4v
+.LP
+.UL isspace(c)
+returns non-zero if the argument is a spacing character:
+tab, newline, carriage return, vertical tab,
+form feed, space.
+.nr PD .4v
+.LP
+.UL ispunct(c)
+returns non-zero if the argument is
+any punctuation character, i.e., not a space, letter,
+digit or control character.
+.nr PD .4v
+.LP
+.UL isalnum(c)
+returns non-zero if the argument is a letter or a digit.
+.nr PD .4v
+.LP
+.UL isprint(c)
+returns non-zero if the argument is printable \(em
+a letter, digit, or punctuation character.
+.nr PD .4v
+.LP
+.UL iscntrl(c)
+returns non-zero if the argument is a control character.
+.nr PD .4v
+.LP
+.UL isascii(c)
+returns non-zero if the argument is an ascii character, i.e., less than octal 0200.
+.nr PD .4v
+.LP
+.UL toupper(c)
+returns the upper-case character corresponding to the lower-case
+letter
+.UL c.
+.nr PD .4v
+.LP
+.UL tolower(c)
+returns the lower-case character corresponding to the upper-case
+letter
+.UL c .
diff --git a/share/doc/psd/05.sysman/0.t b/share/doc/psd/05.sysman/0.t
new file mode 100644
index 0000000..865e8ff
--- /dev/null
+++ b/share/doc/psd/05.sysman/0.t
@@ -0,0 +1,292 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 8.1 (Berkeley) 6/8/93
+.\"
+.if n .ND
+.TL
+Berkeley Software Architecture Manual
+.br
+4.4BSD Edition
+.AU
+William Joy, Robert Fabry,
+.AU
+Samuel Leffler, M. Kirk McKusick,
+.AU
+Michael Karels
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, CA 94720
+.EH 'PSD:5-%''4.4BSD Architecture Manual'
+.OH '4.4BSD Architecture Manual''PSD:5-%'
+.AB
+.FS
+* UNIX is a trademark of Bell Laboratories.
+.FE
+This document summarizes the facilities
+provided by the 4.4BSD version of the UNIX\|* operating system.
+It does not attempt to act as a tutorial for use of the system
+nor does it attempt to explain or justify the design of the
+system facilities.
+It gives neither motivation nor implementation details,
+in favor of brevity.
+.PP
+The first section describes the basic kernel functions
+provided to a UNIX process: process naming and protection,
+memory management, software interrupts,
+object references (descriptors), time and statistics functions,
+and resource controls.
+These facilities, as well as facilities for
+bootstrap, shutdown and process accounting,
+are provided solely by the kernel.
+.PP
+The second section describes the standard system
+abstractions for
+files and file systems,
+communication,
+terminal handling,
+and process control and debugging.
+These facilities are implemented by the operating system or by
+network server processes.
+.AE
+.LP
+.bp
+.ft B
+.br
+.sv 2
+.ce
+TABLE OF CONTENTS
+.ft R
+.LP
+.sp 1
+.nf
+.B "Introduction."
+.LP
+.if t .sp .5v
+.nf
+.B "0. Notation and types"
+.LP
+.if t .sp .5v
+.nf
+.B "1. Kernel primitives"
+.LP
+.if t .sp .5v
+.nf
+.nf
+\fB1.1. Processes and protection\fP
+1.1.1. Host and process identifiers
+1.1.2. Process creation and termination
+1.1.3. User and group ids
+1.1.4. Process groups
+.LP
+.nf
+\fB1.2. Memory management\fP
+1.2.1. Text, data and stack
+1.2.2. Mapping pages
+1.2.3. Page protection control
+1.2.4. Giving and getting advice
+1.2.5. Protection primitives
+.LP
+.if t .sp .5v
+.nf
+\fB1.3. Signals\fP
+1.3.1. Overview
+1.3.2. Signal types
+1.3.3. Signal handlers
+1.3.4. Sending signals
+1.3.5. Protecting critical sections
+1.3.6. Signal stacks
+.LP
+.if t .sp .5v
+.nf
+\fB1.4. Timing and statistics\fP
+1.4.1. Real time
+1.4.2. Interval time
+.LP
+.if t .sp .5v
+.nf
+\fB1.5. Descriptors\fP
+1.5.1. The reference table
+1.5.2. Descriptor properties
+1.5.3. Managing descriptor references
+1.5.4. Multiplexing requests
+1.5.5. Descriptor wrapping
+.LP
+.if t .sp .5v
+.nf
+\fB1.6. Resource controls\fP
+1.6.1. Process priorities
+1.6.2. Resource utilization
+1.6.3. Resource limits
+.LP
+.if t .sp .5v
+.nf
+\fB1.7. System operation support\fP
+1.7.1. Bootstrap operations
+1.7.2. Shutdown operations
+1.7.3. Accounting
+.bp
+.LP
+.if t .sp .5v
+.sp 1
+.nf
+\fB2. System facilities\fP
+.LP
+.if t .sp .5v
+.nf
+\fB2.1. Generic operations\fP
+2.1.1. Read and write
+2.1.2. Input/output control
+2.1.3. Non-blocking and asynchronous operations
+.LP
+.if t .sp .5v
+.nf
+\fB2.2. File system\fP
+2.2.1 Overview
+2.2.2. Naming
+2.2.3. Creation and removal
+2.2.3.1. Directory creation and removal
+2.2.3.2. File creation
+2.2.3.3. Creating references to devices
+2.2.3.4. Portal creation
+2.2.3.6. File, device, and portal removal
+2.2.4. Reading and modifying file attributes
+2.2.5. Links and renaming
+2.2.6. Extension and truncation
+2.2.7. Checking accessibility
+2.2.8. Locking
+2.2.9. Disc quotas
+.LP
+.if t .sp .5v
+.nf
+\fB2.3. Interprocess communication\fP
+2.3.1. Interprocess communication primitives
+2.3.1.1.\0 Communication domains
+2.3.1.2.\0 Socket types and protocols
+2.3.1.3.\0 Socket creation, naming and service establishment
+2.3.1.4.\0 Accepting connections
+2.3.1.5.\0 Making connections
+2.3.1.6.\0 Sending and receiving data
+2.3.1.7.\0 Scatter/gather and exchanging access rights
+2.3.1.8.\0 Using read and write with sockets
+2.3.1.9.\0 Shutting down halves of full-duplex connections
+2.3.1.10.\0 Socket and protocol options
+2.3.2. UNIX domain
+2.3.2.1. Types of sockets
+2.3.2.2. Naming
+2.3.2.3. Access rights transmission
+2.3.3. INTERNET domain
+2.3.3.1. Socket types and protocols
+2.3.3.2. Socket naming
+2.3.3.3. Access rights transmission
+2.3.3.4. Raw access
+.LP
+.if t .sp .5v
+.nf
+\fB2.4. Terminals and devices\fP
+2.4.1. Terminals
+2.4.1.1. Terminal input
+2.4.1.1.1 Input modes
+2.4.1.1.2 Interrupt characters
+2.4.1.1.3 Line editing
+2.4.1.2. Terminal output
+2.4.1.3. Terminal control operations
+2.4.1.4. Terminal hardware support
+2.4.2. Structured devices
+2.4.3. Unstructured devices
+.LP
+.if t .sp .5v
+.nf
+\fB2.5. Process control and debugging\fP
+.LP
+.if t .sp .5v
+.nf
+\fBI. Summary of facilities\fP
+.LP
+.de sh
+.ds RH \\$1
+.bp
+.NH \\*(ss
+\s+2\\$1\s0
+.PP
+.PP
+..
+.bp
+.ds ss 1
+.de _d
+.if t .ta .6i 2.1i 2.6i
+.\" 2.94 went to 2.6, 3.64 to 3.30
+.if n .ta .84i 2.6i 3.30i
+..
+.de _f
+.if t .ta .5i 1.25i 2.5i 3.5i
+.\" 3.5i went to 3.8i
+.if n .ta .7i 1.75i 3.8i 4.8i
+..
+.nr H1 -1
+.sh "Notation and types
+.PP
+The notation used to describe system calls is a variant of a
+C language call, consisting of a prototype call followed by
+declaration of parameters and results.
+An additional keyword \fBresult\fP, not part of the normal C language,
+is used to indicate which of the declared entities receive results.
+As an example, consider the \fIread\fP call, as described in
+section 2.1:
+.DS
+cc = read(fd, buf, nbytes);
+result int cc; int fd; result char *buf; int nbytes;
+.DE
+The first line shows how the \fIread\fP routine is called, with
+three parameters.
+As shown on the second line \fIcc\fP is an integer and \fIread\fP also
+returns information in the parameter \fIbuf\fP.
+.PP
+Description of all error conditions arising from each system call
+is not provided here; they appear in the programmer's manual.
+In particular, when accessed from the C language,
+many calls return a characteristic \-1 value
+when an error occurs, returning the error code in the global variable
+\fIerrno\fP.
+Other languages may present errors in different ways.
+.PP
+A number of system standard types are defined in the include file
+.I <sys/types.h>
+and used in the specifications here and in many C programs.
+These include \fBcaddr_t\fP giving a memory address (typically as
+a character pointer),
+\fBoff_t\fP giving a file offset (typically as a long integer),
+and a set of unsigned types \fBu_char\fP, \fBu_short\fP, \fBu_int\fP
+and \fBu_long\fP, shorthand names for \fBunsigned char\fP, \fBunsigned
+short\fP, etc.
diff --git a/share/doc/psd/05.sysman/1.0.t b/share/doc/psd/05.sysman/1.0.t
new file mode 100644
index 0000000..5a465a7
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.0.t
@@ -0,0 +1,56 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.0.t 8.1 (Berkeley) 6/8/93
+.\"
+.ds ss 1
+.sh "Kernel primitives
+.PP
+The facilities available to a UNIX user process are logically
+divided into two parts: kernel facilities directly implemented by
+UNIX code running in the operating system, and system facilities
+implemented either by the system, or in cooperation with a
+\fIserver process\fP. These kernel facilities are described in
+this section 1.
+.PP
+The facilities implemented in the kernel are those which define the
+\fIUNIX virtual machine\fP in which each process runs.
+Like many real machines, this virtual machine has memory management hardware,
+an interrupt facility, timers and counters. The UNIX
+virtual machine also allows access to files and other objects through a set of
+\fIdescriptors\fP. Each descriptor resembles a device controller,
+and supports a set of operations. Like devices on real machines, some
+of which are internal to the machine and some of which are external,
+parts of the descriptor machinery are built-in to the operating system, while
+other parts are often implemented in server processes on other machines.
+The facilities provided through the descriptor machinery are described in
+section 2.
+.ds ss 2
diff --git a/share/doc/psd/05.sysman/1.1.t b/share/doc/psd/05.sysman/1.1.t
new file mode 100644
index 0000000..223cf83
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.1.t
@@ -0,0 +1,216 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.1.t 8.1 (Berkeley) 6/8/93
+.\" $FreeBSD$
+.\"
+.sh "Processes and protection
+.NH 3
+Host and process identifiers
+.PP
+Each UNIX host has associated with it a 32-bit host id, and a host
+name of up to 256 characters (as defined by MAXHOSTNAMELEN in
+\fI<sys/param.h>\fP).
+These are set (by a privileged user)
+and returned by the calls:
+.DS
+sethostid(hostid)
+long hostid;
+
+hostid = gethostid();
+result long hostid;
+
+sethostname(name, len)
+char *name; int len;
+
+len = gethostname(buf, buflen)
+result int len; result char *buf; int buflen;
+.DE
+On each host runs a set of \fIprocesses\fP.
+Each process is largely independent of other processes,
+having its own protection domain, address space, timers, and
+an independent set of references to system or user implemented objects.
+.PP
+Each process in a host is named by an integer
+called the \fIprocess id\fP. This number is
+in the range 1-30000
+and is returned by
+the \fIgetpid\fP routine:
+.DS
+pid = getpid();
+result int pid;
+.DE
+On each UNIX host this identifier is guaranteed to be unique;
+in a multi-host environment, the (hostid, process id) pairs are
+guaranteed unique.
+.NH 3
+Process creation and termination
+.PP
+A new process is created by making a logical duplicate of an
+existing process:
+.DS
+pid = fork();
+result int pid;
+.DE
+The \fIfork\fP call returns twice, once in the parent process, where
+\fIpid\fP is the process identifier of the child,
+and once in the child process where \fIpid\fP is 0.
+The parent-child relationship induces a hierarchical structure on
+the set of processes in the system.
+.PP
+A process may terminate by executing an \fIexit\fP call:
+.DS
+exit(status)
+int status;
+.DE
+returning 8 bits of exit status to its parent.
+.PP
+When a child process exits or
+terminates abnormally, the parent process receives
+information about any
+event which caused termination of the child process. A
+second call provides a non-blocking interface and may also be used
+to retrieve information about resources consumed by the process during its
+lifetime.
+.DS
+#include <sys/wait.h>
+
+pid = wait(astatus);
+result int pid; result union wait *astatus;
+
+pid = wait3(astatus, options, arusage);
+result int pid; result union waitstatus *astatus;
+int options; result struct rusage *arusage;
+.DE
+.PP
+A process can overlay itself with the memory image of another process,
+passing the newly created process a set of parameters, using the call:
+.DS
+execve(name, argv, envp)
+char *name, **argv, **envp;
+.DE
+The specified \fIname\fP must be a file which is in a format recognized
+by the system, either a binary executable file or a file which causes
+the execution of a specified interpreter program to process its contents.
+.NH 3
+User and group ids
+.PP
+Each process in the system has associated with it two user-id's:
+a \fIreal user id\fP and a \fIeffective user id\fP, both 16 bit
+unsigned integers (type \fBuid_t\fP).
+Each process has an \fIreal accounting group id\fP and an \fIeffective
+accounting group id\fP and a set of
+\fIaccess group id's\fP. The group id's are 16 bit unsigned integers
+(type \fBgid_t\fP).
+Each process may be in several different access groups, with the maximum
+concurrent number of access groups a system compilation parameter,
+the constant NGROUPS in the file \fI<sys/param.h>\fP,
+guaranteed to be at least 8.
+.PP
+The real and effective user ids associated with a process are returned by:
+.DS
+ruid = getuid();
+result uid_t ruid;
+
+euid = geteuid();
+result uid_t euid;
+.DE
+the real and effective accounting group ids by:
+.DS
+rgid = getgid();
+result gid_t rgid;
+
+egid = getegid();
+result gid_t egid;
+.DE
+The access group id set is returned by a \fIgetgroups\fP call*:
+.DS
+ngroups = getgroups(gidsetsize, gidset);
+result int ngroups; int gidsetsize; result int gidset[gidsetsize];
+.DE
+.FS
+* The type of the gidset array in getgroups and setgroups
+remains integer for compatibility with 4.2BSD.
+It may change to \fBgid_t\fP in future releases.
+.FE
+.PP
+The user and group id's
+are assigned at login time using the \fIsetreuid\fP, \fIsetregid\fP,
+and \fIsetgroups\fP calls:
+.DS
+setreuid(ruid, euid);
+int ruid, euid;
+
+setregid(rgid, egid);
+int rgid, egid;
+
+setgroups(gidsetsize, gidset)
+int gidsetsize; int gidset[gidsetsize];
+.DE
+The \fIsetreuid\fP call sets both the real and effective user-id's,
+while the \fIsetregid\fP call sets both the real
+and effective accounting group id's.
+Unless the caller is the super-user, \fIruid\fP
+must be equal to either the current real or effective user-id,
+and \fIrgid\fP equal to either the current real or effective
+accounting group id. The \fIsetgroups\fP call is restricted
+to the super-user.
+.NH 3
+Process groups
+.PP
+Each process in the system is also normally associated with a \fIprocess
+group\fP. The group of processes in a process group is sometimes
+referred to as a \fIjob\fP and manipulated by high-level system
+software (such as the shell).
+The current process group of a process is returned by the
+\fIgetpgrp\fP call:
+.DS
+pgrp = getpgrp(pid);
+result int pgrp; int pid;
+.DE
+When a process is in a specific process group it may receive
+software interrupts affecting the group, causing the group to
+suspend or resume execution or to be interrupted or terminated.
+In particular, a system terminal has a process group and only processes
+which are in the process group of the terminal may read from the
+terminal, allowing arbitration of terminals among several different jobs.
+.PP
+The process group associated with a process may be changed by
+the \fIsetpgrp\fP call:
+.DS
+setpgrp(pid, pgrp);
+int pid, pgrp;
+.DE
+Newly created processes are assigned process id's distinct from all
+processes and process groups, and the same process group as their
+parent. A normal (unprivileged) process may set its process group equal
+to its process id. A privileged process may set the process group of any
+process to any value.
diff --git a/share/doc/psd/05.sysman/1.2.t b/share/doc/psd/05.sysman/1.2.t
new file mode 100644
index 0000000..8527a75
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.2.t
@@ -0,0 +1,273 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.2.t 8.1 (Berkeley) 6/8/93
+.\" $FreeBSD$
+.\"
+.sh "Memory management\(dg
+.NH 3
+Text, data and stack
+.PP
+.FS
+\(dg This section represents the interface planned for later
+releases of the system. Of the calls described in this section,
+only \fIsbrk\fP and \fIgetpagesize\fP are included in 4.3BSD.
+.FE
+Each process begins execution with three logical areas of memory
+called text, data and stack.
+The text area is read-only and shared, while the data and stack
+areas are private to the process. Both the data and stack areas may
+be extended and contracted on program request. The call
+.DS
+addr = sbrk(incr);
+result caddr_t addr; int incr;
+.DE
+changes the size of the data area by \fIincr\fP bytes and
+returns the new end of the data area, while
+.DS
+addr = sstk(incr);
+result caddr_t addr; int incr;
+.DE
+changes the size of the stack area.
+The stack area is also automatically extended as needed.
+On the VAX the text and data areas are adjacent in the P0 region,
+while the stack section is in the P1 region, and grows downward.
+.NH 3
+Mapping pages
+.PP
+The system supports sharing of data between processes
+by allowing pages to be mapped into memory. These mapped
+pages may be \fIshared\fP with other processes or \fIprivate\fP
+to the process.
+Protection and sharing options are defined in \fI<sys/mman.h>\fP as:
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* protections are chosen from these bits, or-ed together */
+#define PROT_READ 0x04 /* pages can be read */
+#define PROT_WRITE 0x02 /* pages can be written */
+#define PROT_EXEC 0x01 /* pages can be executed */
+.DE
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* flags contain mapping type, sharing type and options */
+/* mapping type; choose one */
+#define MAP_FILE 0x0001 /* mapped from a file or device */
+#define MAP_ANON 0x0002 /* allocated from memory, swap space */
+#define MAP_TYPE 0x000f /* mask for type field */
+.DE
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* sharing types; choose one */
+#define MAP_SHARED 0x0010 /* share changes */
+#define MAP_PRIVATE 0x0000 /* changes are private */
+.DE
+.DS
+.ta \w'#define\ \ 'u +\w'MAP_HASSEMAPHORE\ \ 'u +\w'0x0080\ \ 'u
+/* other flags */
+#define MAP_FIXED 0x0020 /* map addr must be exactly as requested */
+#define MAP_INHERIT 0x0040 /* region is retained after exec */
+#define MAP_HASSEMAPHORE 0x0080 /* region may contain semaphores */
+#define MAP_NOPREALLOC 0x0100 /* do not preallocate space */
+.DE
+The cpu-dependent size of a page is returned by the
+\fIgetpagesize\fP system call:
+.DS
+pagesize = getpagesize();
+result int pagesize;
+.DE
+.LP
+The call:
+.DS
+maddr = mmap(addr, len, prot, flags, fd, pos);
+result caddr_t maddr; caddr_t addr; int *len, prot, flags, fd; off_t pos;
+.DE
+causes the pages starting at \fIaddr\fP and continuing
+for at most \fIlen\fP bytes to be mapped from the object represented by
+descriptor \fIfd\fP, starting at byte offset \fIpos\fP.
+The starting address of the region is returned;
+for the convenience of the system,
+it may differ from that supplied
+unless the MAP_FIXED flag is given,
+in which case the exact address will be used or the call will fail.
+The actual amount mapped is returned in \fIlen\fP.
+The \fIaddr\fP, \fIlen\fP, and \fIpos\fP parameters
+must all be multiples of the pagesize.
+A successful \fImmap\fP will delete any previous mapping
+in the allocated address range.
+The parameter \fIprot\fP specifies the accessibility
+of the mapped pages.
+The parameter \fIflags\fP specifies
+the type of object to be mapped,
+mapping options, and
+whether modifications made to
+this mapped copy of the page
+are to be kept \fIprivate\fP, or are to be \fIshared\fP with
+other references.
+Possible types include MAP_FILE,
+mapping a regular file or character-special device memory,
+and MAP_ANON, which maps memory not associated with any specific file.
+The file descriptor used for creating MAP_ANON regions is used only
+for naming, and may be given as \-1 if no name
+is associated with the region.\(dd
+.FS
+\(dd The current design does not allow a process
+to specify the location of swap space.
+In the future we may define an additional mapping type, MAP_SWAP,
+in which the file descriptor argument specifies a file
+or device to which swapping should be done.
+.FE
+The MAP_INHERIT flag allows a region to be inherited after an \fIexec\fP.
+The MAP_HASSEMAPHORE flag allows special handling for
+regions that may contain semaphores.
+The MAP_NOPREALLOC flag allows processes to allocate regions whose
+virtual address space, if fully allocated,
+would exceed the available memory plus swap resources.
+Such regions may get a SIGSEGV signal if they page fault and resources
+are not available to service their request;
+typically they would free up some resources via \fIunmap\fP so that
+when they return from the signal the page
+fault could be successfully completed.
+.PP
+A facility is provided to synchronize a mapped region with the file
+it maps; the call
+.DS
+msync(addr, len);
+caddr_t addr; int len;
+.DE
+writes any modified pages back to the filesystem and updates
+the file modification time.
+If \fIlen\fP is 0, all modified pages within the region containing \fIaddr\fP
+will be flushed;
+if \fIlen\fP is non-zero, only the pages containing \fIaddr\fP and \fIlen\fP
+succeeding locations will be examined.
+Any required synchronization of memory caches
+will also take place at this time.
+Filesystem operations on a file that is mapped for shared modifications
+are unpredictable except after an \fImsync\fP.
+.PP
+A mapping can be removed by the call
+.DS
+munmap(addr, len);
+caddr_t addr; int len;
+.DE
+This call deletes the mappings for the specified address range,
+and causes further references to addresses within the range
+to generate invalid memory references.
+.NH 3
+Page protection control
+.PP
+A process can control the protection of pages using the call
+.DS
+mprotect(addr, len, prot);
+caddr_t addr; int len, prot;
+.DE
+This call changes the specified pages to have protection \fIprot\fP\|.
+Not all implementations will guarantee protection on a page basis;
+the granularity of protection changes may be as large as an entire region.
+.NH 3
+Giving and getting advice
+.PP
+A process that has knowledge of its memory behavior may
+use the \fImadvise\fP call:
+.DS
+madvise(addr, len, behav);
+caddr_t addr; int len, behav;
+.DE
+\fIBehav\fP describes expected behavior, as given
+in \fI<sys/mman.h>\fP:
+.DS
+.ta \w'#define\ \ 'u +\w'MADV_SEQUENTIAL\ \ 'u +\w'00\ \ \ \ 'u
+#define MADV_NORMAL 0 /* no further special treatment */
+#define MADV_RANDOM 1 /* expect random page references */
+#define MADV_SEQUENTIAL 2 /* expect sequential references */
+#define MADV_WILLNEED 3 /* will need these pages */
+#define MADV_DONTNEED 4 /* don't need these pages */
+#define MADV_SPACEAVAIL 5 /* insure that resources are reserved */
+.DE
+Finally, a process may obtain information about whether pages are
+core resident by using the call
+.DS
+mincore(addr, len, vec)
+caddr_t addr; int len; result char *vec;
+.DE
+Here the current core residency of the pages is returned
+in the character array \fIvec\fP, with a value of 1 meaning
+that the page is in-core.
+.NH 3
+Synchronization primitives
+.PP
+Primitives are provided for synchronization using semaphores in shared memory.
+Semaphores must lie within a MAP_SHARED region with at least modes
+PROT_READ and PROT_WRITE.
+The MAP_HASSEMAPHORE flag must have been specified when the region was created.
+To acquire a lock a process calls:
+.DS
+value = mset(sem, wait)
+result int value; semaphore *sem; int wait;
+.DE
+\fIMset\fP indivisibly tests and sets the semaphore \fIsem\fP.
+If the previous value is zero, the process has acquired the lock
+and \fImset\fP returns true immediately.
+Otherwise, if the \fIwait\fP flag is zero,
+failure is returned.
+If \fIwait\fP is true and the previous value is non-zero,
+\fImset\fP relinquishes the processor until notified that it should retry.
+.LP
+To release a lock a process calls:
+.DS
+mclear(sem)
+semaphore *sem;
+.DE
+\fIMclear\fP indivisibly tests and clears the semaphore \fIsem\fP.
+If the ``WANT'' flag is zero in the previous value,
+\fImclear\fP returns immediately.
+If the ``WANT'' flag is non-zero in the previous value,
+\fImclear\fP arranges for waiting processes to retry before returning.
+.PP
+Two routines provide services analogous to the kernel
+\fIsleep\fP and \fIwakeup\fP functions interpreted in the domain of
+shared memory.
+A process may relinquish the processor by calling \fImsleep\fP
+with a set semaphore:
+.DS
+msleep(sem)
+semaphore *sem;
+.DE
+If the semaphore is still set when it is checked by the kernel,
+the process will be put in a sleeping state
+until some other process issues an \fImwakeup\fP for the same semaphore
+within the region using the call:
+.DS
+mwakeup(sem)
+semaphore *sem;
+.DE
+An \fImwakeup\fP may awaken all sleepers on the semaphore,
+or may awaken only the next sleeper on a queue.
diff --git a/share/doc/psd/05.sysman/1.3.t b/share/doc/psd/05.sysman/1.3.t
new file mode 100644
index 0000000..f81a185
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.3.t
@@ -0,0 +1,254 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.3.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "Signals
+.PP
+.NH 3
+Overview
+.PP
+The system defines a set of \fIsignals\fP that may be delivered
+to a process. Signal delivery resembles the occurrence of a hardware
+interrupt: the signal is blocked from further occurrence,
+the current process context is saved, and a new one
+is built. A process may specify
+the \fIhandler\fP to which a signal is delivered, or specify that
+the signal is to be \fIblocked\fP or \fIignored\fP. A process may
+also specify that a
+\fIdefault\fP action is to be taken when signals occur.
+.PP
+Some signals
+will cause a process to exit when they are not caught. This
+may be accompanied by creation of a \fIcore\fP image file, containing
+the current memory image of the process for use in post-mortem debugging.
+A process may choose to have signals delivered on a special
+stack, so that sophisticated software stack manipulations are possible.
+.PP
+All signals have the same \fIpriority\fP. If multiple signals
+are pending simultaneously, the order in which they are delivered
+to a process is implementation specific. Signal routines execute
+with the signal that caused their invocation \fIblocked\fP, but other
+signals may yet occur. Mechanisms are provided whereby critical sections
+of code may protect themselves against the occurrence of specified signals.
+.NH 3
+Signal types
+.PP
+The signals defined by the system fall into one of
+five classes: hardware conditions,
+software conditions, input/output notification, process control, or
+resource control.
+The set of signals is defined in the file \fI<signal.h>\fP.
+.PP
+Hardware signals are derived from exceptional conditions which
+may occur during
+execution. Such signals include SIGFPE representing floating
+point and other arithmetic exceptions, SIGILL for illegal instruction
+execution, SIGSEGV for addresses outside the currently assigned
+area of memory, and SIGBUS for accesses that violate memory
+protection constraints.
+Other, more cpu-specific hardware signals exist,
+such as those for the various customer-reserved instructions on
+the VAX (SIGIOT, SIGEMT, and SIGTRAP).
+.PP
+Software signals reflect interrupts generated by user request:
+SIGINT for the normal interrupt signal; SIGQUIT for the more
+powerful \fIquit\fP signal, that normally causes a core image
+to be generated; SIGHUP and SIGTERM that cause graceful
+process termination, either because a user has ``hung up'', or
+by user or program request; and SIGKILL, a more powerful termination
+signal which a process cannot catch or ignore.
+Programs may define their own asynchronous events using SIGUSR1
+and SIGUSR2.
+Other software signals (SIGALRM, SIGVTALRM, SIGPROF)
+indicate the expiration of interval timers.
+.PP
+A process can request notification via a SIGIO signal
+when input or output is possible
+on a descriptor, or when a \fInon-blocking\fP operation completes.
+A process may request to receive a SIGURG signal when an
+urgent condition arises.
+.PP
+A process may be \fIstopped\fP by a signal sent to it or the members
+of its process group. The SIGSTOP signal is a powerful stop
+signal, because it cannot be caught. Other stop signals
+SIGTSTP, SIGTTIN, and SIGTTOU are used when a user request, input
+request, or output request respectively is the reason for stopping the process.
+A SIGCONT signal is sent to a process when it is
+continued from a stopped state.
+Processes may receive notification with a SIGCHLD signal when
+a child process changes state, either by stopping or by terminating.
+.PP
+Exceeding resource limits may cause signals to be generated.
+SIGXCPU occurs when a process nears its CPU time limit and SIGXFSZ
+warns that the limit on file size creation has been reached.
+.NH 3
+Signal handlers
+.PP
+A process has a handler associated with each signal.
+The handler controls the way the signal is delivered.
+The call
+.DS
+#include <signal.h>
+
+._f
+struct sigvec {
+ int (*sv_handler)();
+ int sv_mask;
+ int sv_flags;
+};
+
+sigvec(signo, sv, osv)
+int signo; struct sigvec *sv; result struct sigvec *osv;
+.DE
+assigns interrupt handler address \fIsv_handler\fP to signal \fIsigno\fP.
+Each handler address
+specifies either an interrupt routine for the signal, that the
+signal is to be ignored,
+or that a default action (usually process termination) is to occur
+if the signal occurs.
+The constants
+SIG_IGN and SIG_DEF used as values for \fIsv_handler\fP
+cause ignoring or defaulting of a condition.
+The \fIsv_mask\fP value specifies the
+signal mask to be used when the handler is invoked; it implicitly includes
+the signal which invoked the handler.
+Signal masks include one bit for each signal;
+the mask for a signal \fIsigno\fP is provided by the macro
+\fIsigmask\fP(\fIsigno\fP), from \fI<signal.h>\fP.
+\fISv_flags\fP specifies whether system calls should be
+restarted if the signal handler returns and
+whether the handler should operate on the normal run-time
+stack or a special signal stack (see below). If \fIosv\fP
+is non-zero, the previous signal vector is returned.
+.PP
+When a signal condition arises for a process, the signal
+is added to a set of signals pending for the process.
+If the signal is not currently \fIblocked\fP by the process
+then it will be delivered. The process of signal delivery
+adds the signal to be delivered and those signals
+specified in the associated signal
+handler's \fIsv_mask\fP to a set of those \fImasked\fP
+for the process, saves the current process context,
+and places the process in the context of the signal
+handling routine. The call is arranged so that if the signal
+handling routine exits normally the signal mask will be restored
+and the process will resume execution in the original context.
+If the process wishes to resume in a different context, then
+it must arrange to restore the signal mask itself.
+.PP
+The mask of \fIblocked\fP signals is independent of handlers for
+signals. It delays signals from being delivered much as a
+raised hardware interrupt priority level delays hardware interrupts.
+Preventing an interrupt from occurring by changing the handler is analogous to
+disabling a device from further interrupts.
+.PP
+The signal handling routine \fIsv_handler\fP is called by a C call
+of the form
+.DS
+(*sv_handler)(signo, code, scp);
+int signo; long code; struct sigcontext *scp;
+.DE
+The \fIsigno\fP gives the number of the signal that occurred, and
+the \fIcode\fP, a word of information supplied by the hardware.
+The \fIscp\fP parameter is a pointer to a machine-dependent
+structure containing the information for restoring the
+context before the signal.
+.NH 3
+Sending signals
+.PP
+A process can send a signal to another process or group of processes
+with the calls:
+.DS
+kill(pid, signo)
+int pid, signo;
+
+killpgrp(pgrp, signo)
+int pgrp, signo;
+.DE
+Unless the process sending the signal is privileged,
+it must have the same effective user id as the process receiving the signal.
+.PP
+Signals are also sent implicitly from a terminal device to the
+process group associated with the terminal when certain input characters
+are typed.
+.NH 3
+Protecting critical sections
+.PP
+To block a section of code against one or more signals, a \fIsigblock\fP
+call may be used to add a set of signals to the existing mask, returning
+the old mask:
+.DS
+oldmask = sigblock(mask);
+result long oldmask; long mask;
+.DE
+The old mask can then be restored later with \fIsigsetmask\fP\|,
+.DS
+oldmask = sigsetmask(mask);
+result long oldmask; long mask;
+.DE
+The \fIsigblock\fP call can be used to read the current mask
+by specifying an empty \fImask\fP\|.
+.PP
+It is possible to check conditions with some signals blocked,
+and then to pause waiting for a signal and restoring the mask, by using:
+.DS
+sigpause(mask);
+long mask;
+.DE
+.NH 3
+Signal stacks
+.PP
+Applications that maintain complex or fixed size stacks can use
+the call
+.DS
+._f
+struct sigstack {
+ caddr_t ss_sp;
+ int ss_onstack;
+};
+
+sigstack(ss, oss)
+struct sigstack *ss; result struct sigstack *oss;
+.DE
+to provide the system with a stack based at \fIss_sp\fP for delivery
+of signals. The value \fIss_onstack\fP indicates whether the
+process is currently on the signal stack,
+a notion maintained in software by the system.
+.PP
+When a signal is to be delivered, the system checks whether
+the process is on a signal stack. If not, then the process is switched
+to the signal stack for delivery, with the return from the signal
+arranged to restore the previous stack.
+.PP
+If the process wishes to take a non-local exit from the signal routine,
+or run code from the signal stack that uses a different stack,
+a \fIsigstack\fP call should be used to reset the signal stack.
diff --git a/share/doc/psd/05.sysman/1.4.t b/share/doc/psd/05.sysman/1.4.t
new file mode 100644
index 0000000..a67a5ce
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.4.t
@@ -0,0 +1,137 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.4.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "Timers
+.NH 3
+Real time
+.PP
+The system's notion of the current Greenwich time and the current time
+zone is set and returned by the call by the calls:
+.DS
+#include <sys/time.h>
+
+settimeofday(tvp, tzp);
+struct timeval *tp;
+struct timezone *tzp;
+
+gettimeofday(tp, tzp);
+result struct timeval *tp;
+result struct timezone *tzp;
+.DE
+where the structures are defined in \fI<sys/time.h>\fP as:
+.DS
+._f
+struct timeval {
+ long tv_sec; /* seconds since Jan 1, 1970 */
+ long tv_usec; /* and microseconds */
+};
+
+struct timezone {
+ int tz_minuteswest; /* of Greenwich */
+ int tz_dsttime; /* type of dst correction to apply */
+};
+.DE
+The precision of the system clock is hardware dependent.
+Earlier versions of UNIX contained only a 1-second resolution version
+of this call, which remains as a library routine:
+.DS
+time(tvsec)
+result long *tvsec;
+.DE
+returning only the tv_sec field from the \fIgettimeofday\fP call.
+.NH 3
+Interval time
+.PP
+The system provides each process with three interval timers,
+defined in \fI<sys/time.h>\fP:
+.DS
+._d
+#define ITIMER_REAL 0 /* real time intervals */
+#define ITIMER_VIRTUAL 1 /* virtual time intervals */
+#define ITIMER_PROF 2 /* user and system virtual time */
+.DE
+The ITIMER_REAL timer decrements
+in real time. It could be used by a library routine to
+maintain a wakeup service queue. A SIGALRM signal is delivered
+when this timer expires.
+.PP
+The ITIMER_VIRTUAL timer decrements in process virtual time.
+It runs only when the process is executing. A SIGVTALRM signal
+is delivered when it expires.
+.PP
+The ITIMER_PROF timer decrements both in process virtual time and when
+the system is running on behalf of the process.
+It is designed to be used by processes to statistically profile
+their execution.
+A SIGPROF signal is delivered when it expires.
+.PP
+A timer value is defined by the \fIitimerval\fP structure:
+.DS
+._f
+struct itimerval {
+ struct timeval it_interval; /* timer interval */
+ struct timeval it_value; /* current value */
+};
+.DE
+and a timer is set or read by the call:
+.DS
+getitimer(which, value);
+int which; result struct itimerval *value;
+
+setitimer(which, value, ovalue);
+int which; struct itimerval *value; result struct itimerval *ovalue;
+.DE
+The third argument to \fIsetitimer\fP specifies an optional structure
+to receive the previous contents of the interval timer.
+A timer can be disabled by specifying a timer value of 0.
+.PP
+The system rounds argument timer intervals to be not less than the
+resolution of its clock. This clock resolution can be determined
+by loading a very small value into a timer and reading the timer back to
+see what value resulted.
+.PP
+The \fIalarm\fP system call of earlier versions of UNIX is provided
+as a library routine using the ITIMER_REAL timer. The process
+profiling facilities of earlier versions of UNIX
+remain because
+it is not always possible to guarantee
+the automatic restart of system calls after
+receipt of a signal.
+The \fIprofil\fP call arranges for the kernel to begin gathering
+execution statistics for a process:
+.DS
+profil(buf, bufsize, offset, scale);
+result char *buf; int bufsize, offset, scale;
+.DE
+This begins sampling of the program counter, with statistics maintained
+in the user-provided buffer.
diff --git a/share/doc/psd/05.sysman/1.5.t b/share/doc/psd/05.sysman/1.5.t
new file mode 100644
index 0000000..e642e2d
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.5.t
@@ -0,0 +1,225 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.5.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh Descriptors
+.PP
+.NH 3
+The reference table
+.PP
+Each process has access to resources through
+\fIdescriptors\fP. Each descriptor is a handle allowing
+the process to reference objects such as files, devices
+and communications links.
+.PP
+Rather than allowing processes direct access to descriptors, the system
+introduces a level of indirection, so that descriptors may be shared
+between processes. Each process has a \fIdescriptor reference table\fP,
+containing pointers to the actual descriptors. The descriptors
+themselves thus have multiple references, and are reference counted by the
+system.
+.PP
+Each process has a fixed size descriptor reference table, where
+the size is returned by the \fIgetdtablesize\fP call:
+.DS
+nds = getdtablesize();
+result int nds;
+.DE
+and guaranteed to be at least 20. The entries in the descriptor reference
+table are referred to by small integers; for example if there
+are 20 slots they are numbered 0 to 19.
+.NH 3
+Descriptor properties
+.PP
+Each descriptor has a logical set of properties maintained
+by the system and defined by its \fItype\fP.
+Each type supports a set of operations;
+some operations, such as reading and writing, are common to several
+abstractions, while others are unique.
+The generic operations applying to many of these types are described
+in section 2.1. Naming contexts, files and directories are described in
+section 2.2. Section 2.3 describes communications domains and sockets.
+Terminals and (structured and unstructured) devices are described
+in section 2.4.
+.NH 3
+Managing descriptor references
+.PP
+A duplicate of a descriptor reference may be made by doing
+.DS
+new = dup(old);
+result int new; int old;
+.DE
+returning a copy of descriptor reference \fIold\fP indistinguishable from
+the original. The \fInew\fP chosen by the system will be the
+smallest unused descriptor reference slot.
+A copy of a descriptor reference may be made in a specific slot
+by doing
+.DS
+dup2(old, new);
+int old, new;
+.DE
+The \fIdup2\fP call causes the system to deallocate the descriptor reference
+current occupying slot \fInew\fP, if any, replacing it with a reference
+to the same descriptor as old.
+This deallocation is also performed by:
+.DS
+close(old);
+int old;
+.DE
+.NH 3
+Multiplexing requests
+.PP
+The system provides a
+standard way to do
+synchronous and asynchronous multiplexing of operations.
+.PP
+Synchronous multiplexing is performed by using the \fIselect\fP call
+to examine the state of multiple descriptors simultaneously,
+and to wait for state changes on those descriptors.
+Sets of descriptors of interest are specified as bit masks,
+as follows:
+.DS
+#include <sys/types.h>
+
+nds = select(nd, in, out, except, tvp);
+result int nds; int nd; result fd_set *in, *out, *except;
+struct timeval *tvp;
+
+FD_ZERO(&fdset);
+FD_SET(fd, &fdset);
+FD_CLR(fd, &fdset);
+FD_ISSET(fd, &fdset);
+int fs; fs_set fdset;
+.DE
+The \fIselect\fP call examines the descriptors
+specified by the
+sets \fIin\fP, \fIout\fP and \fIexcept\fP, replacing
+the specified bit masks by the subsets that select true for input,
+output, and exceptional conditions respectively (\fInd\fP
+indicates the number of file descriptors specified by the bit masks).
+If any descriptors meet the following criteria,
+then the number of such descriptors is returned in \fInds\fP and the
+bit masks are updated.
+.if n .ds bu *
+.if t .ds bu \(bu
+.IP \*(bu
+A descriptor selects for input if an input oriented operation
+such as \fIread\fP or \fIreceive\fP is possible, or if a
+connection request may be accepted (see section 2.3.1.4).
+.IP \*(bu
+A descriptor selects for output if an output oriented operation
+such as \fIwrite\fP or \fIsend\fP is possible, or if an operation
+that was ``in progress'', such as connection establishment,
+has completed (see section 2.1.3).
+.IP \*(bu
+A descriptor selects for an exceptional condition if a condition
+that would cause a SIGURG signal to be generated exists (see section 1.3.2),
+or other device-specific events have occurred.
+.LP
+If none of the specified conditions is true, the operation
+waits for one of the conditions to arise,
+blocking at most the amount of time specified by \fItvp\fP.
+If \fItvp\fP is given as 0, the \fIselect\fP waits indefinitely.
+.PP
+Options affecting I/O on a descriptor
+may be read and set by the call:
+.DS
+._d
+dopt = fcntl(d, cmd, arg)
+result int dopt; int d, cmd, arg;
+
+/* interesting values for cmd */
+#define F_SETFL 3 /* set descriptor options */
+#define F_GETFL 4 /* get descriptor options */
+#define F_SETOWN 5 /* set descriptor owner (pid/pgrp) */
+#define F_GETOWN 6 /* get descriptor owner (pid/pgrp) */
+.DE
+The F_SETFL \fIcmd\fP may be used to set a descriptor in
+non-blocking I/O mode and/or enable signaling when I/O is
+possible. F_SETOWN may be used to specify a process or process
+group to be signaled when using the latter mode of operation
+or when urgent indications arise.
+.PP
+Operations on non-blocking descriptors will
+either complete immediately,
+note an error EWOULDBLOCK,
+partially complete an input or output operation returning a partial count,
+or return an error EINPROGRESS noting that the requested operation is
+in progress.
+A descriptor which has signalling enabled will cause the specified process
+and/or process group
+be signaled, with a SIGIO for input, output, or in-progress
+operation complete, or
+a SIGURG for exceptional conditions.
+.PP
+For example, when writing to a terminal
+using non-blocking output,
+the system will accept only as much data as there is buffer space for
+and return; when making a connection on a \fIsocket\fP, the operation may
+return indicating that the connection establishment is ``in progress''.
+The \fIselect\fP facility can be used to determine when further
+output is possible on the terminal, or when the connection establishment
+attempt is complete.
+.NH 3
+Descriptor wrapping.\(dg
+.PP
+.FS
+\(dg The facilities described in this section are not included
+in 4.3BSD.
+.FE
+A user process may build descriptors of a specified type by
+\fIwrapping\fP a communications channel with a system supplied protocol
+translator:
+.DS
+new = wrap(old, proto)
+result int new; int old; struct dprop *proto;
+.DE
+Operations on the descriptor \fIold\fP are then translated by the
+system provided protocol translator into requests on the underlying
+object \fIold\fP in a way defined by the protocol.
+The protocols supported by the kernel may vary from system to system
+and are described in the programmers manual.
+.PP
+Protocols may be based on communications multiplexing or a rights-passing
+style of handling multiple requests made on the same object. For instance,
+a protocol for implementing a file abstraction may or may not include
+locally generated ``read-ahead'' requests. A protocol that provides for
+read-ahead may provide higher performance but have a more difficult
+implementation.
+.PP
+Another example is the terminal driving facilities. Normally a terminal
+is associated with a communications line, and the terminal type
+and standard terminal access protocol are wrapped around a synchronous
+communications line and given to the user. If a virtual terminal
+is required, the terminal driver can be wrapped around a communications
+link, the other end of which is held by a virtual terminal protocol
+interpreter.
diff --git a/share/doc/psd/05.sysman/1.6.t b/share/doc/psd/05.sysman/1.6.t
new file mode 100644
index 0000000..109d271
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.6.t
@@ -0,0 +1,135 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.6.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "Resource controls
+.NH 3
+Process priorities
+.PP
+The system gives CPU scheduling priority to processes that have not used
+CPU time recently. This tends to favor interactive processes and
+processes that execute only for short periods.
+It is possible to determine the priority currently
+assigned to a process, process group, or the processes of a specified user,
+or to alter this priority using the calls:
+.DS
+._d
+#define PRIO_PROCESS 0 /* process */
+#define PRIO_PGRP 1 /* process group */
+#define PRIO_USER 2 /* user id */
+
+prio = getpriority(which, who);
+result int prio; int which, who;
+
+setpriority(which, who, prio);
+int which, who, prio;
+.DE
+The value \fIprio\fP is in the range \-20 to 20.
+The default priority is 0; lower priorities cause more
+favorable execution.
+The \fIgetpriority\fP call returns the highest priority (lowest numerical value)
+enjoyed by any of the specified processes.
+The \fIsetpriority\fP call sets the priorities of all of the
+specified processes to the specified value.
+Only the super-user may lower priorities.
+.NH 3
+Resource utilization
+.PP
+The resources used by a process are returned by a \fIgetrusage\fP call,
+returning information in a structure defined in \fI<sys/resource.h>\fP:
+.DS
+._d
+#define RUSAGE_SELF 0 /* usage by this process */
+#define RUSAGE_CHILDREN -1 /* usage by all children */
+
+getrusage(who, rusage)
+int who; result struct rusage *rusage;
+
+._f
+struct rusage {
+ struct timeval ru_utime; /* user time used */
+ struct timeval ru_stime; /* system time used */
+ int ru_maxrss; /* maximum core resident set size: kbytes */
+ int ru_ixrss; /* integral shared memory size (kbytes*sec) */
+ int ru_idrss; /* unshared data memory size */
+ int ru_isrss; /* unshared stack memory size */
+ int ru_minflt; /* page-reclaims */
+ int ru_majflt; /* page faults */
+ int ru_nswap; /* swaps */
+ int ru_inblock; /* block input operations */
+ int ru_oublock; /* block output operations */
+ int ru_msgsnd; /* messages sent */
+ int ru_msgrcv; /* messages received */
+ int ru_nsignals; /* signals received */
+ int ru_nvcsw; /* voluntary context switches */
+ int ru_nivcsw; /* involuntary context switches */
+};
+.DE
+The \fIwho\fP parameter specifies whose resource usage is to be returned.
+The resources used by the current process, or by all
+the terminated children of the current process may be requested.
+.NH 3
+Resource limits
+.PP
+The resources of a process for which limits are controlled by the
+kernel are defined in \fI<sys/resource.h>\fP, and controlled by the
+\fIgetrlimit\fP and \fIsetrlimit\fP calls:
+.DS
+._d
+#define RLIMIT_CPU 0 /* cpu time in milliseconds */
+#define RLIMIT_FSIZE 1 /* maximum file size */
+#define RLIMIT_DATA 2 /* maximum data segment size */
+#define RLIMIT_STACK 3 /* maximum stack segment size */
+#define RLIMIT_CORE 4 /* maximum core file size */
+#define RLIMIT_RSS 5 /* maximum resident set size */
+
+#define RLIM_NLIMITS 6
+
+#define RLIM_INFINITY 0x7f\&f\&f\&f\&f\&f\&f
+
+._f
+struct rlimit {
+ int rlim_cur; /* current (soft) limit */
+ int rlim_max; /* hard limit */
+};
+
+getrlimit(resource, rlp)
+int resource; result struct rlimit *rlp;
+
+setrlimit(resource, rlp)
+int resource; struct rlimit *rlp;
+.DE
+.PP
+Only the super-user can raise the maximum limits.
+Other users may only
+alter \fIrlim_cur\fP within the range from 0 to \fIrlim_max\fP
+or (irreversibly) lower \fIrlim_max\fP.
diff --git a/share/doc/psd/05.sysman/1.7.t b/share/doc/psd/05.sysman/1.7.t
new file mode 100644
index 0000000..09e1a02
--- /dev/null
+++ b/share/doc/psd/05.sysman/1.7.t
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.7.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "System operation support
+.PP
+Unless noted otherwise,
+the calls in this section are permitted only to a privileged user.
+.NH 3
+Bootstrap operations
+.PP
+The call
+.DS
+mount(blkdev, dir, ronly);
+char *blkdev, *dir; int ronly;
+.DE
+extends the UNIX name space. The \fImount\fP call specifies
+a block device \fIblkdev\fP containing a UNIX file system
+to be made available starting at \fIdir\fP. If \fIronly\fP is
+set then the file system is read-only; writes to the file system
+will not be permitted and access times will not be updated
+when files are referenced.
+\fIDir\fP is normally a name in the root directory.
+.PP
+The call
+.DS
+swapon(blkdev, size);
+char *blkdev; int size;
+.DE
+specifies a device to be made available for paging and swapping.
+.PP
+.NH 3
+Shutdown operations
+.PP
+The call
+.DS
+unmount(dir);
+char *dir;
+.DE
+unmounts the file system mounted on \fIdir\fP.
+This call will succeed only if the file system is
+not currently being used.
+.PP
+The call
+.DS
+sync();
+.DE
+schedules input/output to clean all system buffer caches.
+(This call does not require privileged status.)
+.PP
+The call
+.DS
+reboot(how)
+int how;
+.DE
+causes a machine halt or reboot. The call may request a reboot
+by specifying \fIhow\fP as RB_AUTOBOOT, or that the machine be halted
+with RB_HALT. These constants are defined in \fI<sys/reboot.h>\fP.
+.NH 3
+Accounting
+.PP
+The system optionally keeps an accounting record in a file
+for each process that exits on the system.
+The format of this record is beyond the scope of this document.
+The accounting may be enabled to a file \fIname\fP by doing
+.DS
+acct(path);
+char *path;
+.DE
+If \fIpath\fP is null, then accounting is disabled. Otherwise,
+the named file becomes the accounting file.
diff --git a/share/doc/psd/05.sysman/2.0.t b/share/doc/psd/05.sysman/2.0.t
new file mode 100644
index 0000000..ca44bc2
--- /dev/null
+++ b/share/doc/psd/05.sysman/2.0.t
@@ -0,0 +1,83 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.0.t 8.1 (Berkeley) 6/8/93
+.\"
+.ds ss 1
+.sh "System facilities
+This section discusses the system facilities that
+are not considered part of the kernel.
+.PP
+The system abstractions described are:
+.IP "Directory contexts
+.br
+A directory context is a position in the UNIX file system name
+space. Operations on files and other named objects in a file system are
+always specified relative to such a context.
+.IP "Files
+.br
+Files are used to store uninterpreted sequence of bytes on which
+random access \fIreads\fP and \fIwrites\fP may occur.
+Pages from files may also be mapped into process address space.\(dg
+A directory may be read as a file.
+.FS
+\(dg Support for mapping files is not included in the 4.3 release.
+.FE
+.IP "Communications domains
+.br
+A communications domain represents
+an interprocess communications environment, such as the communications
+facilities of the UNIX system,
+communications in the INTERNET, or the resource sharing protocols
+and access rights of a resource sharing system on a local network.
+.IP "Sockets
+.br
+A socket is an endpoint of communication and the focal
+point for IPC in a communications domain. Sockets may be created in pairs,
+or given names and used to rendezvous with other sockets
+in a communications domain, accepting connections from these
+sockets or exchanging messages with them. These operations model
+a labeled or unlabeled communications graph, and can be used in a
+wide variety of communications domains. Sockets can have different
+\fItypes\fP\| to provide different semantics of communication,
+increasing the flexibility of the model.
+.IP "Terminals and other devices
+.br
+Devices include
+terminals, providing input editing and interrupt generation
+and output flow control and editing, magnetic tapes,
+disks and other peripherals. They often support the generic
+\fIread\fP and \fIwrite\fP operations as well as a number of \fIioctl\fP\|s.
+.IP "Processes
+.br
+Process descriptors provide facilities for control and debugging of
+other processes.
+.ds ss 2
diff --git a/share/doc/psd/05.sysman/2.1.t b/share/doc/psd/05.sysman/2.1.t
new file mode 100644
index 0000000..ef25887
--- /dev/null
+++ b/share/doc/psd/05.sysman/2.1.t
@@ -0,0 +1,138 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.1.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "Generic operations
+.PP
+.PP
+Many system abstractions support the
+operations \fIread\fP, \fIwrite\fP and \fIioctl\fP. We describe
+the basics of these common primitives here.
+Similarly, the mechanisms whereby normally synchronous operations
+may occur in a non-blocking or asynchronous fashion are
+common to all system-defined abstractions and are described here.
+.NH 3
+Read and write
+.PP
+The \fIread\fP and \fIwrite\fP system calls can be applied
+to communications channels, files, terminals and devices.
+They have the form:
+.DS
+cc = read(fd, buf, nbytes);
+result int cc; int fd; result caddr_t buf; int nbytes;
+
+cc = write(fd, buf, nbytes);
+result int cc; int fd; caddr_t buf; int nbytes;
+.DE
+The \fIread\fP call transfers as much data as possible from the
+object defined by \fIfd\fP to the buffer at address \fIbuf\fP of
+size \fInbytes\fP. The number of bytes transferred is
+returned in \fIcc\fP, which is \-1 if a return occurred before
+any data was transferred because of an error or use of non-blocking
+operations.
+.PP
+The \fIwrite\fP call transfers data from the buffer to the
+object defined by \fIfd\fP. Depending on the type of \fIfd\fP,
+it is possible that the \fIwrite\fP call will accept some portion
+of the provided bytes; the user should resubmit the other bytes
+in a later request in this case.
+Error returns because of interrupted or otherwise incomplete operations
+are possible.
+.PP
+Scattering of data on input or gathering of data for output
+is also possible using an array of input/output vector descriptors.
+The type for the descriptors is defined in \fI<sys/uio.h>\fP as:
+.DS
+._f
+struct iovec {
+ caddr_t iov_msg; /* base of a component */
+ int iov_len; /* length of a component */
+};
+.DE
+The calls using an array of descriptors are:
+.DS
+cc = readv(fd, iov, iovlen);
+result int cc; int fd; struct iovec *iov; int iovlen;
+
+cc = writev(fd, iov, iovlen);
+result int cc; int fd; struct iovec *iov; int iovlen;
+.DE
+Here \fIiovlen\fP is the count of elements in the \fIiov\fP array.
+.NH 3
+Input/output control
+.PP
+Control operations on an object are performed by the \fIioctl\fP
+operation:
+.DS
+ioctl(fd, request, buffer);
+int fd, request; caddr_t buffer;
+.DE
+This operation causes the specified \fIrequest\fP to be performed
+on the object \fIfd\fP. The \fIrequest\fP parameter specifies
+whether the argument buffer is to be read, written, read and written,
+or is not needed, and also the size of the buffer, as well as the
+request.
+Different descriptor types and subtypes within descriptor types
+may use distinct \fIioctl\fP requests. For example,
+operations on terminals control flushing of input and output
+queues and setting of terminal parameters; operations on
+disks cause formatting operations to occur; operations on tapes
+control tape positioning.
+.PP
+The names for basic control operations are defined in \fI<sys/ioctl.h>\fP.
+.NH 3
+Non-blocking and asynchronous operations
+.PP
+A process that wishes to do non-blocking operations on one of
+its descriptors sets the descriptor in non-blocking mode as
+described in section 1.5.4. Thereafter the \fIread\fP call will
+return a specific EWOULDBLOCK error indication if there is no data to be
+\fIread\fP. The process may
+\fIselect\fP the associated descriptor to determine when a read is
+possible.
+.PP
+Output attempted when a descriptor can accept less than is requested
+will either accept some of the provided data, returning a shorter than normal
+length, or return an error indicating that the operation would block.
+More output can be performed as soon as a \fIselect\fP call indicates
+the object is writeable.
+.PP
+Operations other than data input or output
+may be performed on a descriptor in a non-blocking fashion.
+These operations will return with a characteristic error indicating
+that they are in progress
+if they cannot complete immediately. The descriptor
+may then be \fIselect\fPed for \fIwrite\fP to find out
+when the operation has been completed. When \fIselect\fP indicates
+the descriptor is writeable, the operation has completed.
+Depending on the nature of the descriptor and the operation,
+additional activity may be started or the new state may be tested.
diff --git a/share/doc/psd/05.sysman/2.2.t b/share/doc/psd/05.sysman/2.2.t
new file mode 100644
index 0000000..996e9b5
--- /dev/null
+++ b/share/doc/psd/05.sysman/2.2.t
@@ -0,0 +1,470 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.2.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "File system
+.NH 3
+Overview
+.PP
+The file system abstraction provides access to a hierarchical
+file system structure.
+The file system contains directories (each of which may contain
+other sub-directories) as well as files and references to other
+objects such as devices and inter-process communications sockets.
+.PP
+Each file is organized as a linear array of bytes. No record
+boundaries or system related information is present in
+a file.
+Files may be read and written in a random-access fashion.
+The user may read the data in a directory as though
+it were an ordinary file to determine the names of the contained files,
+but only the system may write into the directories.
+The file system stores only a small amount of ownership, protection and usage
+information with a file.
+.NH 3
+Naming
+.PP
+The file system calls take \fIpath name\fP arguments.
+These consist of a zero or more component \fIfile names\fP
+separated by ``/\^'' characters, where each file name
+is up to 255 ASCII characters excluding null and ``/\^''.
+.PP
+Each process always has two naming contexts: one for the
+root directory of the file system and one for the
+current working directory. These are used
+by the system in the filename translation process.
+If a path name begins with a ``/\^'', it is called
+a full path name and interpreted relative to the root directory context.
+If the path name does not begin with a ``/\^'' it is called
+a relative path name and interpreted relative to the current directory
+context.
+.PP
+The system limits
+the total length of a path name to 1024 characters.
+.PP
+The file name ``..'' in each directory refers to
+the parent directory of that directory.
+The parent directory of the root of the file system is always that directory.
+.PP
+The calls
+.DS
+chdir(path);
+char *path;
+
+chroot(path)
+char *path;
+.DE
+change the current working directory and root directory context of a process.
+Only the super-user can change the root directory context of a process.
+.NH 3
+Creation and removal
+.PP
+The file system allows directories, files, special devices,
+and ``portals'' to be created and removed from the file system.
+.NH 4
+Directory creation and removal
+.PP
+A directory is created with the \fImkdir\fP system call:
+.DS
+mkdir(path, mode);
+char *path; int mode;
+.DE
+where the mode is defined as for files (see below).
+Directories are removed with the \fIrmdir\fP system call:
+.DS
+rmdir(path);
+char *path;
+.DE
+A directory must be empty if it is to be deleted.
+.NH 4
+File creation
+.PP
+Files are created with the \fIopen\fP system call,
+.DS
+fd = open(path, oflag, mode);
+result int fd; char *path; int oflag, mode;
+.DE
+The \fIpath\fP parameter specifies the name of the
+file to be created. The \fIoflag\fP parameter must
+include O_CREAT from below to cause the file to be created.
+Bits for \fIoflag\fP are
+defined in \fI<sys/file.h>\fP:
+.DS
+._d
+#define O_RDONLY 000 /* open for reading */
+#define O_WRONLY 001 /* open for writing */
+#define O_RDWR 002 /* open for read & write */
+#define O_NDELAY 004 /* non-blocking open */
+#define O_APPEND 010 /* append on each write */
+#define O_CREAT 01000 /* open with file create */
+#define O_TRUNC 02000 /* open with truncation */
+#define O_EXCL 04000 /* error on create if file exists */
+.DE
+.PP
+One of O_RDONLY, O_WRONLY and O_RDWR should be specified,
+indicating what types of operations are desired to be performed
+on the open file. The operations will be checked against the user's
+access rights to the file before allowing the \fIopen\fP to succeed.
+Specifying O_APPEND causes writes to automatically append to the
+file.
+The flag O_CREAT causes the file to be created if it does not
+exist, owned by the current user
+and the group of the containing directory.
+The protection for the new file is specified in \fImode\fP.
+The file mode is used as a three digit octal number.
+Each digit encodes read access as 4, write access as 2 and execute
+access as 1, or'ed together. The 0700 bits describe owner
+access, the 070 bits describe the access rights for processes in the same
+group as the file, and the 07 bits describe the access rights
+for other processes.
+.PP
+If the open specifies to create the file with O_EXCL
+and the file already exists, then the \fIopen\fP will fail
+without affecting the file in any way. This provides a
+simple exclusive access facility.
+If the file exists but is a symbolic link, the open will fail
+regardless of the existence of the file specified by the link.
+.NH 4
+Creating references to devices
+.PP
+The file system allows entries which reference peripheral devices.
+Peripherals are distinguished as \fIblock\fP or \fIcharacter\fP
+devices according by their ability to support block-oriented
+operations.
+Devices are identified by their ``major'' and ``minor''
+device numbers. The major device number determines the kind
+of peripheral it is, while the minor device number indicates
+one of possibly many peripherals of that kind.
+Structured devices have all operations performed internally
+in ``block'' quantities while
+unstructured devices often have a number of
+special \fIioctl\fP operations, and may have input and output
+performed in varying units.
+The \fImknod\fP call creates special entries:
+.DS
+mknod(path, mode, dev);
+char *path; int mode, dev;
+.DE
+where \fImode\fP is formed from the object type
+and access permissions. The parameter \fIdev\fP is a configuration
+dependent parameter used to identify specific character or
+block I/O devices.
+.NH 4
+Portal creation\(dg
+.PP
+.FS
+\(dg The \fIportal\fP call is not implemented in 4.3BSD.
+.FE
+The call
+.DS
+fd = portal(name, server, param, dtype, protocol, domain, socktype)
+result int fd; char *name, *server, *param; int dtype, protocol;
+int domain, socktype;
+.DE
+places a \fIname\fP in the file system name space that causes connection to a
+server process when the name is used.
+The portal call returns an active portal in \fIfd\fP as though an
+access had occurred to activate an inactive portal, as now described.
+.PP
+When an inactive portal is accessed, the system sets up a socket
+of the specified \fIsocktype\fP in the specified communications
+\fIdomain\fP (see section 2.3), and creates the \fIserver\fP process,
+giving it the specified \fIparam\fP as argument to help it identify
+the portal, and also giving it the newly created socket as descriptor
+number 0. The accessor of the portal will create a socket in the same
+\fIdomain\fP and \fIconnect\fP to the server. The user will then
+\fIwrap\fP the socket in the specified \fIprotocol\fP to create an object of
+the required descriptor type \fIdtype\fP and proceed with the
+operation which was in progress before the portal was encountered.
+.PP
+While the server process holds the socket (which it received as \fIfd\fP
+from the \fIportal\fP call on descriptor 0 at activation) further references
+will result in connections being made to the same socket.
+.NH 4
+File, device, and portal removal
+.PP
+A reference to a file, special device or portal may be removed with the
+\fIunlink\fP call,
+.DS
+unlink(path);
+char *path;
+.DE
+The caller must have write access to the directory in which
+the file is located for this call to be successful.
+.NH 3
+Reading and modifying file attributes
+.PP
+Detailed information about the attributes of a file
+may be obtained with the calls:
+.DS
+#include <sys/stat.h>
+
+stat(path, stb);
+char *path; result struct stat *stb;
+
+fstat(fd, stb);
+int fd; result struct stat *stb;
+.DE
+The \fIstat\fP structure includes the file
+type, protection, ownership, access times,
+size, and a count of hard links.
+If the file is a symbolic link, then the status of the link
+itself (rather than the file the link references)
+may be found using the \fIlstat\fP call:
+.DS
+lstat(path, stb);
+char *path; result struct stat *stb;
+.DE
+.PP
+Newly created files are assigned the user id of the
+process that created it and the group id of the directory
+in which it was created. The ownership of a file may
+be changed by either of the calls
+.DS
+chown(path, owner, group);
+char *path; int owner, group;
+
+fchown(fd, owner, group);
+int fd, owner, group;
+.DE
+.PP
+In addition to ownership, each file has three levels of access
+protection associated with it. These levels are owner relative,
+group relative, and global (all users and groups). Each level
+of access has separate indicators for read permission, write
+permission, and execute permission.
+The protection bits associated with a file may be set by either
+of the calls:
+.DS
+chmod(path, mode);
+char *path; int mode;
+
+fchmod(fd, mode);
+int fd, mode;
+.DE
+where \fImode\fP is a value indicating the new protection
+of the file, as listed in section 2.2.3.2.
+.PP
+Finally, the access and modify times on a file may be set by the call:
+.DS
+utimes(path, tvp)
+char *path; struct timeval *tvp[2];
+.DE
+This is particularly useful when moving files between media, to
+preserve relationships between the times the file was modified.
+.NH 3
+Links and renaming
+.PP
+Links allow multiple names for a file
+to exist. Links exist independently of the file linked to.
+.PP
+Two types of links exist, \fIhard\fP links and \fIsymbolic\fP
+links. A hard link is a reference counting mechanism that
+allows a file to have multiple names within the same file
+system. Symbolic links cause string substitution
+during the pathname interpretation process.
+.PP
+Hard links and symbolic links have different
+properties. A hard link insures the target
+file will always be accessible, even after its original
+directory entry is removed; no such guarantee exists for a symbolic link.
+Symbolic links can span file systems boundaries.
+.PP
+The following calls create a new link, named \fIpath2\fP,
+to \fIpath1\fP:
+.DS
+link(path1, path2);
+char *path1, *path2;
+
+symlink(path1, path2);
+char *path1, *path2;
+.DE
+The \fIunlink\fP primitive may be used to remove
+either type of link.
+.PP
+If a file is a symbolic link, the ``value'' of the
+link may be read with the \fIreadlink\fP call,
+.DS
+len = readlink(path, buf, bufsize);
+result int len; result char *path, *buf; int bufsize;
+.DE
+This call returns, in \fIbuf\fP, the null-terminated string
+substituted into pathnames passing through \fIpath\fP\|.
+.PP
+Atomic renaming of file system resident objects is possible
+with the \fIrename\fP call:
+.DS
+rename(oldname, newname);
+char *oldname, *newname;
+.DE
+where both \fIoldname\fP and \fInewname\fP must be
+in the same file system.
+If \fInewname\fP exists and is a directory, then it must be empty.
+.NH 3
+Extension and truncation
+.PP
+Files are created with zero length and may be extended
+simply by writing or appending to them. While a file is
+open the system maintains a pointer into the file
+indicating the current location in the file associated with
+the descriptor. This pointer may be moved about in the
+file in a random access fashion.
+To set the current offset into a file, the \fIlseek\fP
+call may be used,
+.DS
+oldoffset = lseek(fd, offset, type);
+result off_t oldoffset; int fd; off_t offset; int type;
+.DE
+where \fItype\fP is given in \fI<sys/file.h>\fP as one of:
+.DS
+._d
+#define L_SET 0 /* set absolute file offset */
+#define L_INCR 1 /* set file offset relative to current position */
+#define L_XTND 2 /* set offset relative to end-of-file */
+.DE
+The call ``lseek(fd, 0, L_INCR)''
+returns the current offset into the file.
+.PP
+Files may have ``holes'' in them. Holes are void areas in the
+linear extent of the file where data has never been
+written. These may be created by seeking to
+a location in a file past the current end-of-file and writing.
+Holes are treated by the system as zero valued bytes.
+.PP
+A file may be truncated with either of the calls:
+.DS
+truncate(path, length);
+char *path; int length;
+
+ftruncate(fd, length);
+int fd, length;
+.DE
+reducing the size of the specified file to \fIlength\fP bytes.
+.NH 3
+Checking accessibility
+.PP
+A process running with
+different real and effective user ids
+may interrogate the accessibility of a file to the
+real user by using
+the \fIaccess\fP call:
+.DS
+accessible = access(path, how);
+result int accessible; char *path; int how;
+.DE
+Here \fIhow\fP is constructed by or'ing the following bits, defined
+in \fI<sys/file.h>\fP:
+.DS
+._d
+#define F_OK 0 /* file exists */
+#define X_OK 1 /* file is executable */
+#define W_OK 2 /* file is writable */
+#define R_OK 4 /* file is readable */
+.DE
+The presence or absence of advisory locks does not affect the
+result of \fIaccess\fP\|.
+.NH 3
+Locking
+.PP
+The file system provides basic facilities that allow cooperating processes
+to synchronize their access to shared files. A process may
+place an advisory \fIread\fP or \fIwrite\fP lock on a file,
+so that other cooperating processes may avoid interfering
+with the process' access. This simple mechanism
+provides locking with file granularity. More granular
+locking can be built using the IPC facilities to provide a lock
+manager.
+The system does not force processes to obey the locks;
+they are of an advisory nature only.
+.PP
+Locking is performed after an \fIopen\fP call by applying the
+\fIflock\fP primitive,
+.DS
+flock(fd, how);
+int fd, how;
+.DE
+where the \fIhow\fP parameter is formed from bits defined in \fI<sys/file.h>\fP:
+.DS
+._d
+#define LOCK_SH 1 /* shared lock */
+#define LOCK_EX 2 /* exclusive lock */
+#define LOCK_NB 4 /* don't block when locking */
+#define LOCK_UN 8 /* unlock */
+.DE
+Successive lock calls may be used to increase or
+decrease the level of locking. If an object is currently
+locked by another process when a \fIflock\fP call is made,
+the caller will be blocked until the current lock owner
+releases the lock; this may be avoided by including LOCK_NB
+in the \fIhow\fP parameter.
+Specifying LOCK_UN removes all locks associated with the descriptor.
+Advisory locks held by a process are automatically deleted when
+the process terminates.
+.NH 3
+Disk quotas
+.PP
+As an optional facility, each file system may be requested to
+impose limits on a user's disk usage.
+Two quantities are limited: the total amount of disk space which
+a user may allocate in a file system and the total number of files
+a user may create in a file system. Quotas are expressed as
+\fIhard\fP limits and \fIsoft\fP limits. A hard limit is
+always imposed; if a user would exceed a hard limit, the operation
+which caused the resource request will fail. A soft limit results
+in the user receiving a warning message, but with allocation succeeding.
+Facilities are provided to turn soft limits into hard limits if a
+user has exceeded a soft limit for an unreasonable period of time.
+.PP
+To enable disk quotas on a file system the \fIsetquota\fP call
+is used:
+.DS
+setquota(special, file)
+char *special, *file;
+.DE
+where \fIspecial\fP refers to a structured device file where
+a mounted file system exists, and
+\fIfile\fP refers to a disk quota file (residing on the file
+system associated with \fIspecial\fP) from which user quotas
+should be obtained. The format of the disk quota file is
+implementation dependent.
+.PP
+To manipulate disk quotas the \fIquota\fP call is provided:
+.DS
+#include <sys/quota.h>
+
+quota(cmd, uid, arg, addr)
+int cmd, uid, arg; caddr_t addr;
+.DE
+The indicated \fIcmd\fP is applied to the user ID \fIuid\fP.
+The parameters \fIarg\fP and \fIaddr\fP are command specific.
+The file \fI<sys/quota.h>\fP contains definitions pertinent to the
+use of this call.
diff --git a/share/doc/psd/05.sysman/2.3.t b/share/doc/psd/05.sysman/2.3.t
new file mode 100644
index 0000000..edf3e10
--- /dev/null
+++ b/share/doc/psd/05.sysman/2.3.t
@@ -0,0 +1,413 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.3.t 8.1 (Berkeley) 6/8/93
+.\" $FreeBSD$
+.\"
+.sh "Interprocess communications
+.NH 3
+Interprocess communication primitives
+.NH 4
+Communication domains
+.PP
+The system provides access to an extensible set of
+communication \fIdomains\fP. A communication domain
+is identified by a manifest constant defined in the
+file \fI<sys/socket.h>\fP.
+Important standard domains supported by the system are the ``unix''
+domain, AF_UNIX, for communication within the system, the ``Internet''
+domain for communication in the DARPA Internet, AF_INET,
+and the ``NS'' domain, AF_NS, for communication
+using the Xerox Network Systems protocols.
+Other domains can be added to the system.
+.NH 4
+Socket types and protocols
+.PP
+Within a domain, communication takes place between communication endpoints
+known as \fIsockets\fP. Each socket has the potential to exchange
+information with other sockets of an appropriate type within the domain.
+.PP
+Each socket has an associated
+abstract type, which describes the semantics of communication using that
+socket. Properties such as reliability, ordering, and prevention
+of duplication of messages are determined by the type.
+The basic set of socket types is defined in \fI<sys/socket.h>\fP:
+.DS
+/* Standard socket types */
+._d
+#define SOCK_DGRAM 1 /* datagram */
+#define SOCK_STREAM 2 /* virtual circuit */
+#define SOCK_RAW 3 /* raw socket */
+#define SOCK_RDM 4 /* reliably-delivered message */
+#define SOCK_SEQPACKET 5 /* sequenced packets */
+.DE
+The SOCK_DGRAM type models the semantics of datagrams in network communication:
+messages may be lost or duplicated and may arrive out-of-order.
+A datagram socket may send messages to and receive messages from multiple
+peers.
+The SOCK_RDM type models the semantics of reliable datagrams: messages
+arrive unduplicated and in-order, the sender is notified if
+messages are lost.
+The \fIsend\fP and \fIreceive\fP operations (described below)
+generate reliable/unreliable datagrams.
+The SOCK_STREAM type models connection-based virtual circuits: two-way
+byte streams with no record boundaries.
+Connection setup is required before data communication may begin.
+The SOCK_SEQPACKET type models a connection-based,
+full-duplex, reliable, sequenced packet exchange;
+the sender is notified if messages are lost, and messages are never
+duplicated or presented out-of-order.
+Users of the last two abstractions may use the facilities for
+out-of-band transmission to send out-of-band data.
+.PP
+SOCK_RAW is used for unprocessed access to internal network layers
+and interfaces; it has no specific semantics.
+.PP
+Other socket types can be defined.
+.PP
+Each socket may have a specific \fIprotocol\fP associated with it.
+This protocol is used within the domain to provide the semantics
+required by the socket type.
+Not all socket types are supported by each domain;
+support depends on the existence and the implementation
+of a suitable protocol within the domain.
+For example, within the ``Internet'' domain, the SOCK_DGRAM type may be
+implemented by the UDP user datagram protocol, and the SOCK_STREAM
+type may be implemented by the TCP transmission control protocol, while
+no standard protocols to provide SOCK_RDM or SOCK_SEQPACKET sockets exist.
+.NH 4
+Socket creation, naming and service establishment
+.PP
+Sockets may be \fIconnected\fP or \fIunconnected\fP. An unconnected
+socket descriptor is obtained by the \fIsocket\fP call:
+.DS
+s = socket(domain, type, protocol);
+result int s; int domain, type, protocol;
+.DE
+The socket domain and type are as described above,
+and are specified using the definitions from \fI<sys/socket.h>\fP.
+The protocol may be given as 0, meaning any suitable protocol.
+One of several possible protocols may be selected using identifiers
+obtained from a library routine, \fIgetprotobyname\fP.
+.PP
+An unconnected socket descriptor of a connection-oriented type
+may yield a connected socket descriptor
+in one of two ways: either by actively connecting to another socket,
+or by becoming associated with a name in the communications domain and
+\fIaccepting\fP a connection from another socket.
+Datagram sockets need not establish connections before use.
+.PP
+To accept connections or to receive datagrams,
+a socket must first have a binding
+to a name (or address) within the communications domain.
+Such a binding may be established by a \fIbind\fP call:
+.DS
+bind(s, name, namelen);
+int s; struct sockaddr *name; int namelen;
+.DE
+Datagram sockets may have default bindings established when first
+sending data if not explicitly bound earlier.
+In either case,
+a socket's bound name may be retrieved with a \fIgetsockname\fP call:
+.DS
+getsockname(s, name, namelen);
+int s; result struct sockaddr *name; result int *namelen;
+.DE
+while the peer's name can be retrieved with \fIgetpeername\fP:
+.DS
+getpeername(s, name, namelen);
+int s; result struct sockaddr *name; result int *namelen;
+.DE
+Domains may support sockets with several names.
+.NH 4
+Accepting connections
+.PP
+Once a binding is made to a connection-oriented socket,
+it is possible to \fIlisten\fP for connections:
+.DS
+listen(s, backlog);
+int s, backlog;
+.DE
+The \fIbacklog\fP specifies the maximum count of connections
+that can be simultaneously queued awaiting acceptance.
+.PP
+An \fIaccept\fP call:
+.DS
+t = accept(s, name, anamelen);
+result int t; int s; result struct sockaddr *name; result int *anamelen;
+.DE
+returns a descriptor for a new, connected, socket
+from the queue of pending connections on \fIs\fP.
+If no new connections are queued for acceptance,
+the call will wait for a connection unless non-blocking I/O has been enabled.
+.NH 4
+Making connections
+.PP
+An active connection to a named socket is made by the \fIconnect\fP call:
+.DS
+connect(s, name, namelen);
+int s; struct sockaddr *name; int namelen;
+.DE
+Although datagram sockets do not establish connections,
+the \fIconnect\fP call may be used with such sockets
+to create an \fIassociation\fP with the foreign address.
+The address is recorded for use in future \fIsend\fP calls,
+which then need not supply destination addresses.
+Datagrams will be received only from that peer,
+and asynchronous error reports may be received.
+.PP
+It is also possible to create connected pairs of sockets without
+using the domain's name space to rendezvous; this is done with the
+\fIsocketpair\fP call\(dg:
+.FS
+\(dg 4.3BSD supports \fIsocketpair\fP creation only in the ``unix''
+communication domain.
+.FE
+.DS
+socketpair(domain, type, protocol, sv);
+int domain, type, protocol; result int sv[2];
+.DE
+Here the returned \fIsv\fP descriptors correspond to those obtained with
+\fIaccept\fP and \fIconnect\fP.
+.PP
+The call
+.DS
+pipe(pv)
+result int pv[2];
+.DE
+creates a pair of SOCK_STREAM sockets in the UNIX domain,
+with pv[0] only writable and pv[1] only readable.
+.NH 4
+Sending and receiving data
+.PP
+Messages may be sent from a socket by:
+.DS
+cc = sendto(s, buf, len, flags, to, tolen);
+result int cc; int s; caddr_t buf; int len, flags; caddr_t to; int tolen;
+.DE
+if the socket is not connected or:
+.DS
+cc = send(s, buf, len, flags);
+result int cc; int s; caddr_t buf; int len, flags;
+.DE
+if the socket is connected.
+The corresponding receive primitives are:
+.DS
+msglen = recvfrom(s, buf, len, flags, from, fromlenaddr);
+result int msglen; int s; result caddr_t buf; int len, flags;
+result caddr_t from; result int *fromlenaddr;
+.DE
+and
+.DS
+msglen = recv(s, buf, len, flags);
+result int msglen; int s; result caddr_t buf; int len, flags;
+.DE
+.PP
+In the unconnected case,
+the parameters \fIto\fP and \fItolen\fP
+specify the destination or source of the message, while
+the \fIfrom\fP parameter stores the source of the message,
+and \fI*fromlenaddr\fP initially gives the size of the \fIfrom\fP
+buffer and is updated to reflect the true length of the \fIfrom\fP
+address.
+.PP
+All calls cause the message to be received in or sent from
+the message buffer of length \fIlen\fP bytes, starting at address \fIbuf\fP.
+The \fIflags\fP specify
+peeking at a message without reading it or sending or receiving
+high-priority out-of-band messages, as follows:
+.DS
+._d
+#define MSG_PEEK 0x1 /* peek at incoming message */
+#define MSG_OOB 0x2 /* process out-of-band data */
+.DE
+.NH 4
+Scatter/gather and exchanging access rights
+.PP
+It is possible scatter and gather data and to exchange access rights
+with messages. When either of these operations is involved,
+the number of parameters to the call becomes large.
+Thus the system defines a message header structure, in \fI<sys/socket.h>\fP,
+which can be
+used to conveniently contain the parameters to the calls:
+.DS
+.if t .ta .5i 1.25i 2i 2.7i
+.if n ._f
+struct msghdr {
+ caddr_t msg_name; /* optional address */
+ int msg_namelen; /* size of address */
+ struct iov *msg_iov; /* scatter/gather array */
+ int msg_iovlen; /* # elements in msg_iov */
+ caddr_t msg_accrights; /* access rights sent/received */
+ int msg_accrightslen; /* size of msg_accrights */
+};
+.DE
+Here \fImsg_name\fP and \fImsg_namelen\fP specify the source or destination
+address if the socket is unconnected; \fImsg_name\fP may be given as
+a null pointer if no names are desired or required.
+The \fImsg_iov\fP and \fImsg_iovlen\fP describe the scatter/gather
+locations, as described in section 2.1.3.
+Access rights to be sent along with the message are specified
+in \fImsg_accrights\fP, which has length \fImsg_accrightslen\fP.
+In the ``unix'' domain these are an array of integer descriptors,
+taken from the sending process and duplicated in the receiver.
+.PP
+This structure is used in the operations \fIsendmsg\fP and \fIrecvmsg\fP:
+.DS
+sendmsg(s, msg, flags);
+int s; struct msghdr *msg; int flags;
+
+msglen = recvmsg(s, msg, flags);
+result int msglen; int s; result struct msghdr *msg; int flags;
+.DE
+.NH 4
+Using read and write with sockets
+.PP
+The normal UNIX \fIread\fP and \fIwrite\fP calls may be
+applied to connected sockets and translated into \fIsend\fP and \fIreceive\fP
+calls from or to a single area of memory and discarding any rights
+received. A process may operate on a virtual circuit socket, a terminal
+or a file with blocking or non-blocking input/output
+operations without distinguishing the descriptor type.
+.NH 4
+Shutting down halves of full-duplex connections
+.PP
+A process that has a full-duplex socket such as a virtual circuit
+and no longer wishes to read from or write to this socket can
+give the call:
+.DS
+shutdown(s, direction);
+int s, direction;
+.DE
+where \fIdirection\fP is 0 to not read further, 1 to not
+write further, or 2 to completely shut the connection down.
+If the underlying protocol supports unidirectional or bidirectional shutdown,
+this indication will be passed to the peer.
+For example, a shutdown for writing might produce an end-of-file
+condition at the remote end.
+.NH 4
+Socket and protocol options
+.PP
+Sockets, and their underlying communication protocols, may
+support \fIoptions\fP. These options may be used to manipulate
+implementation- or protocol-specific facilities.
+The \fIgetsockopt\fP
+and \fIsetsockopt\fP calls are used to control options:
+.DS
+getsockopt(s, level, optname, optval, optlen)
+int s, level, optname; result caddr_t optval; result int *optlen;
+
+setsockopt(s, level, optname, optval, optlen)
+int s, level, optname; caddr_t optval; int optlen;
+.DE
+The option \fIoptname\fP is interpreted at the indicated
+protocol \fIlevel\fP for socket \fIs\fP. If a value is specified
+with \fIoptval\fP and \fIoptlen\fP, it is interpreted by
+the software operating at the specified \fIlevel\fP. The \fIlevel\fP
+SOL_SOCKET is reserved to indicate options maintained
+by the socket facilities. Other \fIlevel\fP values indicate
+a particular protocol which is to act on the option request;
+these values are normally interpreted as a ``protocol number''.
+.NH 3
+UNIX domain
+.PP
+This section describes briefly the properties of the UNIX communications
+domain.
+.NH 4
+Types of sockets
+.PP
+In the UNIX domain,
+the SOCK_STREAM abstraction provides pipe-like
+facilities, while SOCK_DGRAM provides (usually)
+reliable message-style communications.
+.NH 4
+Naming
+.PP
+Socket names are strings and may appear in the UNIX file
+system name space through portals\(dg.
+.FS
+\(dg The 4.3BSD implementation of the UNIX domain embeds
+bound sockets in the UNIX file system name space;
+this may change in future releases.
+.FE
+.NH 4
+Access rights transmission
+.PP
+The ability to pass UNIX descriptors with messages in this domain
+allows migration of service within the system and allows
+user processes to be used in building system facilities.
+.NH 3
+INTERNET domain
+.PP
+This section describes briefly how the Internet domain is
+mapped to the model described in this section. More
+information will be found in the document describing the
+network implementation in 4.3BSD.
+.NH 4
+Socket types and protocols
+.PP
+SOCK_STREAM is supported by the Internet TCP protocol;
+SOCK_DGRAM by the UDP protocol.
+Each is layered atop the transport-level Internet Protocol (IP).
+The Internet Control Message Protocol is implemented atop/beside IP
+and is accessible via a raw socket.
+The SOCK_SEQPACKET
+has no direct Internet family analogue; a protocol
+based on one from the XEROX NS family and layered on
+top of IP could be implemented to fill this gap.
+.NH 4
+Socket naming
+.PP
+Sockets in the Internet domain have names composed of the 32 bit
+Internet address, and a 16 bit port number.
+Options may be used to
+provide IP source routing or security options.
+The 32-bit address is composed of network and host parts;
+the network part is variable in size and is frequency encoded.
+The host part may optionally be interpreted as a subnet field
+plus the host on subnet; this is enabled by setting a network address
+mask at boot time.
+.NH 4
+Access rights transmission
+.PP
+No access rights transmission facilities are provided in the Internet domain.
+.NH 4
+Raw access
+.PP
+The Internet domain allows the super-user access to the raw facilities
+of IP.
+These interfaces are modeled as SOCK_RAW sockets.
+Each raw socket is associated with one IP protocol number,
+and receives all traffic received for that protocol.
+This allows administrative and debugging
+functions to occur,
+and enables user-level implementations of special-purpose protocols
+such as inter-gateway routing protocols.
diff --git a/share/doc/psd/05.sysman/2.4.t b/share/doc/psd/05.sysman/2.4.t
new file mode 100644
index 0000000..cd7dcb9
--- /dev/null
+++ b/share/doc/psd/05.sysman/2.4.t
@@ -0,0 +1,174 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.4.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "Terminals and Devices
+.NH 3
+Terminals
+.PP
+Terminals support \fIread\fP and \fIwrite\fP I/O operations,
+as well as a collection of terminal specific \fIioctl\fP operations,
+to control input character interpretation and editing,
+and output format and delays.
+.NH 4
+Terminal input
+.PP
+Terminals are handled according to the underlying communication
+characteristics such as baud rate and required delays,
+and a set of software parameters.
+.NH 5
+Input modes
+.PP
+A terminal is in one of three possible modes: \fIraw\fP, \fIcbreak\fP,
+or \fIcooked\fP.
+In raw mode all input is passed through to the
+reading process immediately and without interpretation.
+In cbreak mode, the handler interprets input only by looking
+for characters that cause interrupts or output flow control;
+all other characters are made available as in raw mode.
+In cooked mode, input
+is processed to provide standard line-oriented local editing functions,
+and input is presented on a line-by-line basis.
+.NH 5
+Interrupt characters
+.PP
+Interrupt characters are interpreted by the terminal handler only in
+cbreak and cooked modes, and
+cause a software interrupt to be sent to all processes in the process
+group associated with the terminal. Interrupt characters exist
+to send SIGINT
+and SIGQUIT signals,
+and to stop a process group
+with the SIGTSTP signal either immediately, or when
+all input up to the stop character has been read.
+.NH 5
+Line editing
+.PP
+When the terminal is in cooked mode, editing of an input line
+is performed. Editing facilities allow deletion of the previous
+character or word, or deletion of the current input line.
+In addition, a special character may be used to reprint the current
+input line after some number of editing operations have been applied.
+.PP
+Certain other characters are interpreted specially when a process is
+in cooked mode. The \fIend of line\fP character determines
+the end of an input record. The \fIend of file\fP character simulates
+an end of file occurrence on terminal input. Flow control is provided
+by \fIstop output\fP and \fIstart output\fP control characters. Output
+may be flushed with the \fIflush output\fP character; and a \fIliteral
+character\fP may be used to force literal input of the immediately
+following character in the input line.
+.PP
+Input characters may be echoed to the terminal as they are received.
+Non-graphic ASCII input characters may be echoed as a two-character
+printable representation, ``^character.''
+.NH 4
+Terminal output
+.PP
+On output, the terminal handler provides some simple formatting services.
+These include converting the carriage return character to the
+two character return-linefeed sequence,
+inserting delays after certain standard control characters,
+expanding tabs, and providing translations
+for upper-case only terminals.
+.NH 4
+Terminal control operations
+.PP
+When a terminal is first opened it is initialized to a standard
+state and configured with a set of standard control, editing,
+and interrupt characters. A process
+may alter this configuration with certain
+control operations, specifying parameters in a standard structure:\(dg
+.FS
+\(dg The control interface described here is an internal interface only
+in 4.3BSD. Future releases will probably use a modified interface
+based on currently-proposed standards.
+.FE
+.DS
+._f
+struct ttymode {
+ short tt_ispeed; /* input speed */
+ int tt_iflags; /* input flags */
+ short tt_ospeed; /* output speed */
+ int tt_oflags; /* output flags */
+};
+.DE
+and ``special characters'' are specified with the
+\fIttychars\fP structure,
+.DS
+._f
+struct ttychars {
+ char tc_erasec; /* erase char */
+ char tc_killc; /* erase line */
+ char tc_intrc; /* interrupt */
+ char tc_quitc; /* quit */
+ char tc_startc; /* start output */
+ char tc_stopc; /* stop output */
+ char tc_eofc; /* end-of-file */
+ char tc_brkc; /* input delimiter (like nl) */
+ char tc_suspc; /* stop process signal */
+ char tc_dsuspc; /* delayed stop process signal */
+ char tc_rprntc; /* reprint line */
+ char tc_flushc; /* flush output (toggles) */
+ char tc_werasc; /* word erase */
+ char tc_lnextc; /* literal next character */
+};
+.DE
+.NH 4
+Terminal hardware support
+.PP
+The terminal handler allows a user to access basic
+hardware related functions; e.g. line speed,
+modem control, parity, and stop bits. A special signal,
+SIGHUP, is automatically
+sent to processes in a terminal's process
+group when a carrier transition is detected. This is
+normally associated with a user hanging up on a modem
+controlled terminal line.
+.NH 3
+Structured devices
+.PP
+Structures devices are typified by disks and magnetic
+tapes, but may represent any random-access device.
+The system performs read-modify-write type buffering actions on block
+devices to allow them to be read and written in a totally random
+access fashion like ordinary files.
+File systems are normally created in block devices.
+.NH 3
+Unstructured devices
+.PP
+Unstructured devices are those devices which
+do not support block structure. Familiar unstructured devices
+are raw communications lines (with
+no terminal handler), raster plotters, magnetic tape and disks unfettered
+by buffering and permitting large block input/output and positioning
+and formatting commands.
diff --git a/share/doc/psd/05.sysman/2.5.t b/share/doc/psd/05.sysman/2.5.t
new file mode 100644
index 0000000..109eb6a
--- /dev/null
+++ b/share/doc/psd/05.sysman/2.5.t
@@ -0,0 +1,39 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.5.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh "Process and kernel descriptors
+.PP
+The status of the facilities in this section is still under discussion.
+The \fIptrace\fP facility of earlier UNIX systems
+remains in 4.3BSD.
+Planned enhancements would allow a descriptor-based process control facility.
diff --git a/share/doc/psd/05.sysman/Makefile b/share/doc/psd/05.sysman/Makefile
new file mode 100644
index 0000000..2c0ec7b
--- /dev/null
+++ b/share/doc/psd/05.sysman/Makefile
@@ -0,0 +1,10 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/05.sysman
+SRCS= 0.t 1.0.t 1.1.t 1.2.t 1.3.t 1.4.t 1.5.t 1.6.t 1.7.t \
+ 2.0.t 2.1.t 2.2.t 2.3.t 2.4.t 2.5.t a.t
+MACROS= -ms
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/05.sysman/a.t b/share/doc/psd/05.sysman/a.t
new file mode 100644
index 0000000..dd9cfd9
--- /dev/null
+++ b/share/doc/psd/05.sysman/a.t
@@ -0,0 +1,235 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)a.t 8.1 (Berkeley) 6/8/93
+.\"
+.ds RH Summary of facilities
+.bp
+.SH
+\s+2I. Summary of facilities\s0
+.PP
+.de h
+.br
+.if n .ne 8
+\fB\\$1 \\$2\fP
+.br
+..
+.nr H1 0
+.NH
+Kernel primitives
+.LP
+.h 1.1. "Process naming and protection
+.in +5
+.TS
+lw(1.6i) aw(3i).
+sethostid set UNIX host id
+gethostid get UNIX host id
+sethostname set UNIX host name
+gethostname get UNIX host name
+getpid get process id
+fork create new process
+exit terminate a process
+execve execute a different process
+getuid get user id
+geteuid get effective user id
+setreuid set real and effective user id's
+getgid get accounting group id
+getegid get effective accounting group id
+getgroups get access group set
+setregid set real and effective group id's
+setgroups set access group set
+getpgrp get process group
+setpgrp set process group
+.TE
+.in -5
+.h 1.2 "Memory management
+.in +5
+.TS
+lw(1.6i) aw(3i).
+<sys/mman.h> memory management definitions
+sbrk change data section size
+sstk\(dg change stack section size
+getpagesize get memory page size
+mmap\(dg map pages of memory
+msync\(dg flush modified mapped pages to filesystem
+munmap\(dg unmap memory
+mprotect\(dg change protection of pages
+madvise\(dg give memory management advice
+mincore\(dg determine core residency of pages
+msleep\(dg sleep on a lock
+mwakeup\(dg wakeup process sleeping on a lock
+.TE
+.FS
+\(dg Not supported in 4.3BSD.
+.FE
+.in -5
+.h 1.3 "Signals
+.in +5
+.TS
+lw(1.6i) aw(3i).
+<signal.h> signal definitions
+sigvec set handler for signal
+kill send signal to process
+killpgrp send signal to process group
+sigblock block set of signals
+sigsetmask restore set of blocked signals
+sigpause wait for signals
+sigstack set software stack for signals
+.TE
+.in -5
+.h 1.4 "Timing and statistics
+.in +5
+.TS
+lw(1.6i) aw(3i).
+<sys/time.h> time-related definitions
+gettimeofday get current time and timezone
+settimeofday set current time and timezone
+getitimer read an interval timer
+setitimer get and set an interval timer
+profil profile process
+.TE
+.in -5
+.h 1.5 "Descriptors
+.in +5
+.TS
+lw(1.6i) aw(3i).
+getdtablesize descriptor reference table size
+dup duplicate descriptor
+dup2 duplicate to specified index
+close close descriptor
+select multiplex input/output
+fcntl control descriptor options
+wrap\(dg wrap descriptor with protocol
+.TE
+.FS
+\(dg Not supported in 4.3BSD.
+.FE
+.in -5
+.h 1.6 "Resource controls
+.in +5
+.TS
+lw(1.6i) aw(3i).
+<sys/resource.h> resource-related definitions
+getpriority get process priority
+setpriority set process priority
+getrusage get resource usage
+getrlimit get resource limitations
+setrlimit set resource limitations
+.TE
+.in -5
+.h 1.7 "System operation support
+.in +5
+.TS
+lw(1.6i) aw(3i).
+mount mount a device file system
+swapon add a swap device
+umount umount a file system
+sync flush system caches
+reboot reboot a machine
+acct specify accounting file
+.TE
+.in -5
+.NH
+System facilities
+.LP
+.h 2.1 "Generic operations
+.in +5
+.TS
+lw(1.6i) aw(3i).
+read read data
+write write data
+<sys/uio.h> scatter-gather related definitions
+readv scattered data input
+writev gathered data output
+<sys/ioctl.h> standard control operations
+ioctl device control operation
+.TE
+.in -5
+.h 2.2 "File system
+.PP
+Operations marked with a * exist in two forms: as shown,
+operating on a file name, and operating on a file descriptor,
+when the name is preceded with a ``f''.
+.in +5
+.TS
+lw(1.6i) aw(3i).
+<sys/file.h> file system definitions
+chdir change directory
+chroot change root directory
+mkdir make a directory
+rmdir remove a directory
+open open a new or existing file
+mknod make a special file
+portal\(dg make a portal entry
+unlink remove a link
+stat* return status for a file
+lstat returned status of link
+chown* change owner
+chmod* change mode
+utimes change access/modify times
+link make a hard link
+symlink make a symbolic link
+readlink read contents of symbolic link
+rename change name of file
+lseek reposition within file
+truncate* truncate file
+access determine accessibility
+flock lock a file
+.TE
+.in -5
+.h 2.3 "Communications
+.in +5
+.TS
+lw(1.6i) aw(3i).
+<sys/socket.h> standard definitions
+socket create socket
+bind bind socket to name
+getsockname get socket name
+listen allow queuing of connections
+accept accept a connection
+connect connect to peer socket
+socketpair create pair of connected sockets
+sendto send data to named socket
+send send data to connected socket
+recvfrom receive data on unconnected socket
+recv receive data on connected socket
+sendmsg send gathered data and/or rights
+recvmsg receive scattered data and/or rights
+shutdown partially close full-duplex connection
+getsockopt get socket option
+setsockopt set socket option
+.TE
+.in -5
+.h 2.4 "Terminals, block and character devices
+.in +5
+.in -5
+.h 2.5 "Processes and kernel hooks
+.in +5
diff --git a/share/doc/psd/05.sysman/spell.ok b/share/doc/psd/05.sysman/spell.ok
new file mode 100644
index 0000000..b0cbd9c
--- /dev/null
+++ b/share/doc/psd/05.sysman/spell.ok
@@ -0,0 +1,332 @@
+AF
+ANON
+AUTOBOOT
+Behav
+CLR
+DEF
+DGRAM
+DONTNEED
+Datagram
+Datagrams
+EINPROGRESS
+EWOULDBLOCK
+EXCL
+FD
+FSIZE
+Fabry
+GETFL
+GETOWN
+HASSEMAPHORE
+HASSEMPHORE
+IGN
+INCR
+INET
+IP
+IPC
+ISSET
+ITIMER
+Karels
+Leffler
+MADV
+MAXHOSTNAMELEN
+MSG
+Manual''PS1:6
+McKusick
+Mclear
+Mset
+NB
+NDELAY
+NGROUPS
+NLIMITS
+NOEXTEND
+NS
+OOB
+PGRP
+PRIO
+PROT
+PS1:6
+RB
+RDM
+RDONLY
+RDWR
+RH
+RLIM
+RLIMIT
+RSS
+RUSAGE
+SEQPACKET
+SETFL
+SETOWN
+SIG
+SIGALRM
+SIGBUS
+SIGCHLD
+SIGCONT
+SIGEMT
+SIGFPE
+SIGHUP
+SIGILL
+SIGINT
+SIGIO
+SIGIOT
+SIGKILL
+SIGPROF
+SIGQUIT
+SIGSEGV
+SIGSTOP
+SIGTERM
+SIGTRAP
+SIGTSTP
+SIGTTIN
+SIGTTOU
+SIGURG
+SIGUSR1
+SIGUSR2
+SIGVTALRM
+SIGXCPU
+SIGXFSZ
+Sem
+Sv
+TCP
+TRUNC
+UDP
+VAX
+WILLNEED
+WRONLY
+XTND
+accessor
+accrights
+accrightslen
+addr
+anamelen
+arg
+argv
+arusage
+astatus
+behav
+blkdev
+brkc
+bu
+buf
+buflen
+bufsize
+caddr
+cbreak
+chroot
+cmd
+datagram
+datagrams
+dev
+dopt
+dprop
+ds
+dst
+dsttime
+dsuspc
+dtype
+dup2
+egid
+envp
+eofc
+erasec
+errno
+euid
+fchmod
+fchown
+fcntl
+fd
+fdset
+file.h
+filename
+filesystem
+flushc
+fromlenaddr
+fs
+fstat
+ftruncate
+getdtablesize
+getegid
+geteuid
+getgid
+getgroups
+gethostid
+gethostname
+getitimer
+getpagesize
+getpeername
+getpriority
+getprotobyname
+getrlimit
+getrusage
+getsockname
+getsockopt
+gettimeofday
+gid
+gidset
+gidsetsize
+hostid
+idrss
+iflags
+inblock
+incr
+intrc
+ioctl.h
+iov
+iovec
+iovlen
+ispeed
+isrss
+itimerval
+ixrss
+kbytes
+killc
+killpgrp
+len
+linefeed
+lnextc
+lstat
+maddr
+madvise
+majflt
+maxrss
+mclear
+mincore
+minflt
+minuteswest
+mman.h
+mmap
+mprotect
+mremap
+mset
+msg
+msghdr
+msglen
+msgrcv
+msgsnd
+msleep
+msync
+munmap
+mwakeup
+namelen
+nbytes
+nd
+nds
+newname
+ngroups
+nivcsw
+nl
+nsignals
+nswap
+nvcsw
+oflag
+oflags
+oldmask
+oldname
+oldoffset
+onstack
+optlen
+optname
+optval
+or'ed
+or'ing
+ospeed
+oss
+osv
+oublock
+ovalue
+pagesize
+param
+param.h
+path1
+path2
+pathname
+pathnames
+pgrp
+pid
+pos
+prio
+prot
+proto
+pv
+quitc
+quota.h
+readlink
+readv
+reboot.h
+recv
+recvfrom
+recvmsg
+resource.h
+rgid
+rlim
+rlimit
+rlp
+ronly
+rprntc
+ru
+ruid
+rusage
+sbrk
+scp
+sem
+sendmsg
+sendto
+setgroups
+sethostid
+sethostname
+setitimer
+setpriority
+setquota
+setregid
+setreuid
+setrlimit
+setsockopt
+settimeofday
+sigblock
+sigcontext
+sigmask
+signal.h
+signo
+sigpause
+sigsetmask
+sigstack
+sigvec
+sockaddr
+socket.h
+socketpair
+socktype
+sp
+ss
+sstk
+startc
+stat.h
+stb
+stopc
+suspc
+sv
+sw
+symlink
+ta
+time.h
+timeval
+timezone
+tolen
+tt
+ttychars
+ttymode
+tv
+tvp
+tvsec
+types.h
+tz
+tzp
+uid
+uio.h
+umount
+usec
+vec
+wait.h
+waitstatus
+werasc
+writeable
+writev
diff --git a/share/doc/psd/06.Clang/Clang.ms b/share/doc/psd/06.Clang/Clang.ms
new file mode 100644
index 0000000..6395913
--- /dev/null
+++ b/share/doc/psd/06.Clang/Clang.ms
@@ -0,0 +1,4575 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)Clang.ms 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.nr Cl 2
+.TL
+The C Programming Language - Reference Manual
+.AU
+Dennis M. Ritchie
+.AI
+AT&T Bell Laboratories
+Murray Hill, NJ 07974
+.PP
+This manual is a reprint, with updates to the current C standard, from
+\fIThe C Programming Language\fR,
+by Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall, Inc., 1978.
+.PP
+\fBThis document is of historical interest only. Do not use it as a reference
+for modern implementations of C.\fP
+.EH 'PSD:6-%''The C Programming Language - Reference Manual'
+.OH 'The C Programming Language - Reference Manual''PSD:6-%'
+.NH 1
+Introduction
+.PP
+This manual describes the C language on the DEC PDP-11\(dg, the DEC VAX-11,
+.FS
+.LP
+\(dg DEC PDP-11, and DEC VAX-11 are trademarks of Digital Equipment Corporation.
+.LP
+\(dd 3B 20 is a trademark of AT&T.
+.FE
+and the AT&T 3B 20\(dd.
+Where differences exist, it concentrates on the VAX, but tries to point
+out implementation-dependent details. With few exceptions, these dependencies
+follow directly from the underlying properties of the hardware; the various
+compilers are generally quite compatible.
+.NH 1
+Lexical Conventions
+.PP
+There are six classes of tokens\ -\
+identifiers, keywords, constants, strings, operators, and other separators.
+Blanks, tabs, new\(hylines,
+and comments (collectively, ``white space'') as described below
+are ignored except as they serve to separate
+tokens.
+Some white space is required to separate
+otherwise adjacent identifiers,
+keywords, and constants.
+.PP
+If the input stream has been parsed into tokens
+up to a given character, the next token is taken
+to include the longest string of characters
+which could possibly constitute a token.
+.NH 2
+Comments
+.PP
+The characters
+.B
+/*
+.R
+introduce a comment which terminates
+with the characters
+\fB\(**/\fR.
+Comments do not nest.
+.NH 2
+Identifiers (Names)
+.PP
+An identifier is a sequence of letters and digits.
+The first character must be a letter.
+The underscore
+(\fB_\fR)
+counts as a letter.
+Uppercase and lowercase letters
+are different.
+Although there is no limit on the length of a name,
+only initial characters are significant: at least
+eight characters of a non-external name, and perhaps
+fewer for external names.
+Moreover, some implementations may collapse case
+distinctions for external names.
+The external name sizes include:
+.DS
+.TS
+l l.
+PDP-11 7 characters, 2 cases
+VAX-11 >100 characters, 2 cases
+AT&T 3B 20 >100 characters, 2 cases
+.TE
+.fi
+.DE
+.NH 2
+Keywords
+.PP
+The following identifiers are reserved for use
+as keywords and may not be used otherwise:
+.DS
+.ta 0.8i 1.6i 2.4i 3.2i 4.0i
+\fBauto do for return typedef
+break double goto short union
+case else if sizeof unsigned
+char enum int static void
+continue external long struct while
+default float register switch\fR
+.ta 0.5i
+.DE
+.PP
+Some implementations also reserve the words
+.B
+fortran, asm, gfloat, hfloat
+.R
+and
+.B quad
+.R
+.NH 2
+Constants
+.PP
+There are several kinds
+of constants.
+Each has a type; an introduction to types is given in ``NAMES.''
+Hardware characteristics that affect sizes are summarized in
+``Hardware Characteristics'' under ``LEXICAL CONVENTIONS.''
+.NH 3
+Integer Constants
+.br
+.PP
+An integer constant consisting of a sequence of digits
+is taken
+to be octal if it begins with
+.B
+0
+.R
+(digit zero).
+An octal constant consists of the digits \fB0\fR through \fB7\fR only.
+A sequence of digits preceded by
+.B
+0x
+.R
+or
+.B
+0X
+.R
+(digit zero) is taken to be a hexadecimal integer.
+The hexadecimal digits include
+.B
+a
+.R
+or
+.B
+A
+.R
+through
+.B
+f
+.R
+or
+.B
+F
+.R
+with values 10 through 15.
+Otherwise, the integer constant is taken to be decimal.
+A decimal constant whose value exceeds the largest
+signed machine integer is taken to be
+\fBlong\fR;
+an octal or hex constant which exceeds the largest unsigned machine integer
+is likewise taken to be
+.B
+long\fR.
+.R
+Otherwise, integer constants are \fBint\fR.
+.NH 3
+Explicit Long Constants
+.br
+.PP
+A decimal, octal, or hexadecimal integer constant immediately followed
+by
+.B
+l
+.R
+(letter ell)
+or
+.B
+L
+.R
+is a long constant.
+As discussed below,
+on some machines
+integer and long values may be considered identical.
+.NH 3
+Character Constants
+.br
+.PP
+A character constant is a character enclosed in single quotes,
+as in '\fBx\fR'.
+The value of a character constant is the numerical value of the
+character in the machine's character set.
+.PP
+Certain nongraphic characters,
+the single quote
+(\fB'\fR)
+and the backslash
+(\fB\e\fR),
+may be represented according to the following table
+of escape sequences:
+.DS
+.TS
+l l l.
+new\(hyline NL (LF) \en
+horizontal tab HT \et
+vertical tab VT \ev
+backspace BS \eb
+carriage return CR \er
+form feed FF \ef
+backslash \e \e\e
+single quote ' \e'
+bit pattern \fIddd\fR\^ \e\fIddd\fR\^
+.TE
+.DE
+.PP
+The escape
+\e\fIddd\fR
+consists of the backslash followed by 1, 2, or 3 octal digits
+which are taken to specify the value of the
+desired character.
+A special case of this construction is
+.B
+\e0
+.R
+(not followed
+by a digit), which indicates the character
+.B
+NUL\fR.
+.R
+If the character following a backslash is not one
+of those specified, the
+behavior is undefined.
+A new-line character is illegal in a character constant.
+The type of a character constant is \fBint\fR.
+.NH 3
+Floating Constants
+.br
+.PP
+A floating constant consists of
+an integer part, a decimal point, a fraction part,
+an
+.B
+e
+.R
+or
+\fBE\fR,
+and an optionally signed integer exponent.
+The integer and fraction parts both consist of a sequence
+of digits.
+Either the integer part or the fraction
+part (not both) may be missing.
+Either the decimal point or
+the
+.B
+e
+.R
+and the exponent (not both) may be missing.
+Every floating constant has type \fBdouble\fR.
+.NH 3
+Enumeration Constants
+.br
+.PP
+Names declared as enumerators
+(see ``Structure, Union, and Enumeration Declarations'' under
+``DECLARATIONS'')
+have type \fBint\fR.
+.NH 2
+Strings
+.PP
+A string is a sequence of characters surrounded by
+double quotes,
+as in
+\fB"..."\fR.
+A string has type
+``array of \fBchar\fR'' and storage class
+\fBstatic\fR
+(see ``NAMES'')
+and is initialized with
+the given characters.
+The compiler places
+a null byte
+(\fB\e0\fR)
+at the end of each string so that programs
+which scan the string can
+find its end.
+In a string, the double quote character
+(\fB"\fR)
+must be preceded by
+a
+\fB\e\fR;
+in addition, the same escapes as described for character
+constants may be used.
+.PP
+A
+.B
+\e
+.R
+and
+the immediately following new\(hyline are ignored.
+All strings, even when written identically, are distinct.
+.NH 2
+Hardware Characteristics
+.PP
+The following figure summarize
+certain hardware properties that vary from machine to machine.
+.DS
+.TS
+center box;
+c cfB s cfB s cfB s
+c c s c s c s
+l | l1 lp8 | l1 lp8 | l1 lp8.
+ DEC PDP\-11 DEC VAX-11 AT&T 3B
+ (ASCII) (ASCII) (ASCII)
+.sp
+_
+char 8 bits 8 bits 8bits
+int 16 32 32
+short 16 16 16
+long 32 32 32
+float 32 32 32
+double 64 64 64
+float range \(+-10 \(+-38 \(+-10 \(+-38 \(+-10 \(+-38
+\^ \^ \^ \^
+double range \(+-10 \(+-38 \(+-10 \(+-38 \(+-10 \(+-308
+\^ \^ \^ \^
+.TE
+.\" .FG 4 4 1 "DEC PDP-11 HARDWARE CHARACTERISTICS"
+.DE
+.PP
+.NH 1
+Syntax Notation
+.PP
+Syntactic categories are indicated by
+.I
+italic
+.R
+type
+and literal words and characters
+in
+\fBbold\fR
+type.
+Alternative categories are listed on separate lines.
+An optional terminal or nonterminal symbol is
+indicated by the subscript ``opt,'' so that
+.DS
+{ \fIexpression\v'0.5'\s-2opt\s0\v'-0.5'\fR }
+.DE
+.LP
+indicates an optional expression enclosed in braces.
+The syntax is summarized in ``SYNTAX SUMMARY''.
+.NH 1
+Names
+.PP
+The C language bases the interpretation of an
+identifier upon two attributes of the identifier \(mi its
+.I
+storage class
+.R
+and its
+.I
+type\fR.
+The storage class determines the location and lifetime
+of the storage associated with an identifier;
+the type determines
+the meaning of the values
+found in the identifier's storage.
+.NH 2
+Storage Class
+.PP
+.\" The original text had borrowed BL, LI and LE from the mm macros.
+.\" That way madness lies.
+There are four declarable storage classes:
+.RS
+.br
+\(bu Automatic
+.br
+\(bu Static
+.br
+\(bu External
+.br
+\(bu Register.
+.RE
+.PP
+Automatic variables are local to each invocation of
+a block (see ``Compound Statement or Block'' in
+``STATEMENTS'') and are discarded upon exit from the block.
+Static variables are local to a block but retain
+their values upon reentry to a block even after control
+has left the block.
+External variables exist and retain their values throughout
+the execution of the entire program and
+may be used for communication between
+functions, even separately compiled functions.
+Register variables are (if possible) stored in the fast registers
+of the machine; like automatic
+variables, they are local to each block and disappear on exit from the block.
+.NH 2
+Type
+.PP
+The C language supports several
+fundamental
+types of objects.
+Objects declared as characters
+(\fBchar\fR)
+are large enough to store any member of the implementation's
+character set.
+If a genuine character from that character set is
+stored in a \fBchar\fR variable,
+its value is equivalent to the integer code for that character.
+Other quantities may be stored into character variables, but
+the implementation is machine dependent.
+In particular, \fBchar\fR may be signed or unsigned by default.
+.PP
+Up to three sizes of integer, declared
+.B
+short
+.R
+\fBint\fR,
+\fBint\fR,
+and
+.B
+long
+.R
+\fBint\fR,
+are available.
+Longer integers provide no less storage than shorter ones,
+but the implementation may make either short integers or long integers,
+or both, equivalent to plain integers.
+``Plain'' integers have the natural size suggested
+by the host machine architecture.
+The other sizes are provided to meet special needs.
+.PP
+The properties of \fBenum\fR types (see ``Structure, Union, and Enumeration Declarations''
+under ``DECLARATIONS'')
+are identical to those of
+some integer types.
+The implementation may use the range of values to
+determine how to allocate storage.
+.PP
+Unsigned
+integers, declared
+.B
+unsigned,
+.R
+obey the laws of arithmetic modulo
+2\v'-0.5'\fIn\fR\v'0.5'
+where \fIn\fR is the number of bits in the representation.
+(On the
+PDP-11,
+unsigned long quantities are not supported.)
+.PP
+Single-precision floating point
+(\fBfloat\fR)
+and double precision floating point
+(\fBdouble\fR)
+may be synonymous in some implementations.
+.PP
+Because objects of the foregoing types can usefully be interpreted
+as numbers, they will be referred to as
+.I
+arithmetic
+.R
+types.
+\fBChar\fR,
+.B
+int
+.R
+of all sizes whether \fBunsigned\fR or not, and
+.B
+enum
+.R
+will collectively be called
+.I
+integral
+.R
+types.
+The
+.B
+float
+.R
+and
+.B
+double
+.R
+types will collectively be called
+.I
+floating
+.R
+types.
+.PP
+The
+.B
+void
+.R
+type
+specifies an empty set of values.
+It is used as the type returned by functions that
+generate no value.
+.PP
+Besides the fundamental arithmetic types, there is a
+conceptually infinite class of derived types constructed
+from the fundamental types in the following ways:
+.IP \fIArrays\fR
+of objects of most types
+.IP \fIFunctions\fR
+which return objects of a given type
+.IP \fIPointers\fR
+to objects of a given type
+.IP \fIStructures\fR
+containing a sequence of objects of various types
+.IP \fIUnions\fR
+capable of containing any one of several objects of various types.
+.LP
+In general these methods
+of constructing objects can
+be applied recursively.
+.NH 1
+Objects and Lvalues
+.PP
+An
+.I
+object
+.R
+is a manipulatable region of storage.
+An
+.I
+lvalue
+.R
+is an expression referring to an object.
+An obvious example of an lvalue
+expression is an identifier.
+There are operators which yield lvalues:
+for example,
+if
+.B
+E
+.R
+is an expression of pointer type, then
+.B
+\(**E
+.R
+is an lvalue
+expression referring to the object to which
+.B
+E
+.R
+points.
+The name ``lvalue'' comes from the assignment expression
+.B
+E1\ =\ E2
+.R
+in which the left operand
+.B
+E1
+.R
+must be
+an lvalue expression.
+The discussion of each operator
+below indicates whether it expects lvalue operands and whether it
+yields an lvalue.
+.NH 1
+Conversions
+.PP
+A number of operators may, depending on their operands,
+cause conversion of the value of an operand from one type to another.
+This part explains the result to be expected from such
+conversions.
+The conversions demanded by most ordinary operators are summarized under
+``Arithmetic Conversions.''
+The summary will be supplemented
+as required by the discussion
+of each operator.
+.NH 2
+Characters and Integers
+.PP
+A character or a short integer may be used wherever an
+integer may be used.
+In all cases
+the value is converted to an integer.
+Conversion of a shorter integer
+to a longer preserves sign.
+Whether or not sign-extension occurs for characters is machine
+dependent, but it is guaranteed that a member of the
+standard character set is non-negative.
+Of the machines treated here,
+only the
+PDP-11
+and
+VAX-11
+sign-extend.
+On these machines,
+.B
+char
+.R
+variables range in value from
+\(mi128 to 127.
+The more explicit type
+.B
+unsigned
+.R
+.B
+char
+.R
+forces the values to range from 0 to 255.
+.PP
+On machines that treat characters as signed,
+the characters of the
+ASCII
+set are all non-negative.
+However, a character constant specified
+with an octal escape suffers sign extension
+and may appear negative;
+for example,
+\fB\'\e377\'\fR
+\fRhas the value
+.B
+\(mi1\fR.
+.PP
+When a longer integer is converted to a shorter
+integer
+or to a
+.B
+char,
+.R
+it is truncated on the left.
+Excess bits are simply discarded.
+.NH 2
+Float and Double
+.PP
+All floating arithmetic in C is carried out in double precision.
+Whenever a
+.B
+float
+.R
+appears in an expression it is lengthened to
+.B
+double
+.R
+by zero padding its fraction.
+When a
+.B
+double
+.R
+must be
+converted to
+\fBfloat\fR,
+for example by an assignment,
+the
+.B
+double
+.R
+is rounded before
+truncation to
+.B
+float
+.R
+length.
+This result is undefined if it cannot be represented as a float.
+On the VAX, the compiler can be directed to use single precision for expressions
+containing only float and integer operands.
+.NH 2
+Floating and Integral
+.PP
+Conversions of floating values to integral type
+are rather machine dependent.
+In particular, the direction of truncation of negative numbers
+varies.
+The result is undefined if
+it will not fit in the space provided.
+.PP
+Conversions of integral values to floating type
+are well behaved.
+Some loss of accuracy occurs
+if the destination lacks sufficient bits.
+.NH 2
+Pointers and Integers
+.PP
+An expression of integral type may be added to or subtracted from
+a pointer; in such a case,
+the first is converted as
+specified in the discussion of the addition operator.
+Two pointers to objects of the same type may be subtracted;
+in this case, the result is converted to an integer
+as specified in the discussion of the subtraction
+operator.
+.NH 2
+Unsigned
+.PP
+Whenever an unsigned integer and a plain integer
+are combined, the plain integer is converted to unsigned
+and the result is unsigned.
+The value
+is the least unsigned integer congruent to the signed
+integer (modulo 2\v'-0.3'\s-2wordsize\s+2\v'0.3').
+In a 2's complement representation,
+this conversion is conceptual; and there is no actual change in the
+bit pattern.
+.PP
+When an unsigned \fBshort\fR integer is converted to
+\fBlong\fR,
+the value of the result is the same numerically as that of the
+unsigned integer.
+Thus the conversion amounts to padding with zeros on the left.
+.NH 2
+Arithmetic Conversions
+.PP
+A great many operators cause conversions
+and yield result types in a similar way.
+This pattern will be called the ``usual arithmetic conversions.''
+.IP 1.
+First, any operands of type
+.B
+char
+.R
+or
+.B
+short
+.R
+are converted to
+\fBint\fR,
+and any operands of type \fBunsigned char\fR
+or \fBunsigned short\fR are converted
+to \fBunsigned int\fR.
+.IP 2.
+Then, if either operand is
+.B
+double,
+.R
+the other is converted to
+.B
+double
+.R
+and that is the type of the result.
+.IP 3.
+Otherwise, if either operand is \fBunsigned long\fR,
+the other is converted to \fBunsigned long\fR and that
+is the type of the result.
+.IP 4.
+Otherwise, if either operand is
+\fBlong\fR,
+the other is converted to
+.B
+long
+.R
+and that is the type of the result.
+.IP 5.
+Otherwise, if one operand is \fBlong\fR, and
+the other is \fBunsigned int\fR, they are both
+converted to \fBunsigned long\fR and that is
+the type of the result.
+.IP 6.
+Otherwise, if either operand is
+.B
+unsigned,
+.R
+the other is converted to
+.B
+unsigned
+.R
+and that is the type of the result.
+.IP 7.
+Otherwise, both operands must be
+\fBint\fR,
+and that is the type of the result.
+.LP
+.NH 2
+Void
+.PP
+The (nonexistent) value of a
+.B
+void
+.R
+object may not be used in any way,
+and neither explicit nor implicit conversion may be applied.
+Because a void expression denotes a nonexistent value,
+such an expression may be used only
+as an expression statement
+(see ``Expression Statement'' under ``STATEMENTS'')
+or as the left operand
+of a comma expression (see ``Comma Operator'' under ``EXPRESSIONS'').
+.PP
+An expression may be converted to
+type
+.B
+void
+.R
+by use of a cast.
+For example, this makes explicit the discarding of the value
+of a function call used as an expression statement.
+.NH 1
+Expressions
+.PP
+The precedence of expression operators is the same
+as the order of the major
+subsections of this section, highest precedence first.
+Thus, for example, the expressions referred to as the operands of
+.B
+\(pl
+.R
+(see ``Additive Operators'')
+are those expressions defined under ``Primary Expressions'',
+``Unary Operators'', and ``Multiplicative Operators''.
+Within each subpart, the operators have the same
+precedence.
+Left- or right-associativity is specified
+in each subsection for the operators
+discussed therein.
+The precedence and associativity of all the expression
+operators are summarized in the
+grammar of ``SYNTAX SUMMARY''.
+.PP
+Otherwise, the order of evaluation of expressions
+is undefined. In particular, the compiler
+considers itself free to
+compute subexpressions in the order it believes
+most efficient
+even if the subexpressions
+involve side effects.
+The order in which subexpression evaluation takes place is unspecified.
+Expressions involving a commutative and associative
+operator
+(\fB\(**,\fR
+\fB\(pl\fR,
+\fB&\fR,
+\fB|\fR,
+\fB^\fR)
+may be rearranged arbitrarily even in the presence
+of parentheses;
+to force a particular order of evaluation,
+an explicit temporary must be used.
+.PP
+The handling of overflow and divide check
+in expression evaluation
+is undefined.
+Most existing implementations of C ignore integer overflows;
+treatment of
+division by 0 and all floating-point exceptions
+varies between machines and is usually
+adjustable by a library function.
+.NH 2
+Primary Expressions
+.PP
+Primary expressions
+involving \fB\.\fR,
+\fB\(mi>\fR,
+subscripting, and function calls
+group left to right.
+.DS
+\fIprimary-expression:
+ identifier
+ constant
+ string
+ ( expression )
+ primary-expression [ expression ]
+ primary-expression ( expression-list\v'0.5'\s-2opt\s0\v'-0.5' )
+ primary-expression . identifier
+ primary-expression \(mi> identifier\fR
+.DE
+.DS
+\fIexpression-list:
+ expression
+ expression-list , expression\fR
+.DE
+.PP
+An identifier is a primary expression provided it has been
+suitably declared as discussed below.
+Its type is specified by its declaration.
+If the type of the identifier is ``array of .\|.\|.'',
+then the value of the identifier expression
+is a pointer
+to the first object in the array; and the
+type of the expression is
+``pointer to .\|.\|.''.
+Moreover, an array identifier is not an lvalue
+expression.
+Likewise, an identifier which is declared
+``function returning .\|.\|.'',
+when used except in the function-name position
+of a call, is converted to ``pointer to function returning .\|.\|.''.
+.PP
+A
+constant is a primary expression.
+Its type may be
+\fBint\fR,
+\fBlong\fR,
+or
+.B
+double
+.R
+depending on its form.
+Character constants have type
+.B
+int
+.R
+and floating constants have type
+.B
+double\fR.
+.R
+.PP
+A string is a primary expression.
+Its type is originally ``array of
+\fBchar\fR'',
+but following
+the same rule given above for identifiers,
+this is modified to ``pointer to
+\fBchar\fR'' and
+the
+result is a pointer to the first character
+in the string.
+(There is an exception in certain initializers;
+see ``Initialization'' under ``DECLARATIONS.'')
+.PP
+A parenthesized expression is a primary expression
+whose type and value are identical
+to those of the unadorned expression.
+The presence of parentheses does
+not affect whether the expression is an
+lvalue.
+.PP
+A primary expression followed by an expression in square
+brackets is a primary expression.
+The intuitive meaning is that of a subscript.
+Usually, the primary expression has type ``pointer to .\|.\|.'',
+the subscript expression is
+\fBint\fR,
+and the type of the result is ``\|.\|.\|.\|''.
+The expression
+.B
+E1[E2]
+.R
+is
+identical (by definition) to
+.B
+\(**((E1)\(plE2))\fR.
+All the clues
+needed to understand
+this notation are contained in this subpart together
+with the discussions
+in ``Unary Operators'' and ``Additive Operators'' on identifiers,
+.B
+\(**
+.R
+and
+.B
+\(pl
+.R
+respectively.
+The implications are summarized under ``Arrays, Pointers, and Subscripting''
+under ``TYPES REVISITED.''
+.PP
+A function call is a primary expression followed by parentheses
+containing a possibly
+empty, comma-separated list of expressions
+which constitute the actual arguments to the
+function.
+The primary expression must be of type ``function returning .\|.\|.,''
+and the result of the function call is of type ``\|.\|.\|.\|''.
+As indicated
+below, a hitherto unseen identifier followed
+immediately by a left parenthesis
+is contextually declared
+to represent a function returning
+an integer;
+thus in the most common case, integer-valued functions
+need not be declared.
+.PP
+Any actual arguments of type
+.B
+float
+.R
+are
+converted to
+.B
+double
+.R
+before the call.
+Any of type
+.B
+char
+.R
+or
+.B
+short
+.R
+are converted to
+.B
+int\fR.
+.R
+Array names are converted to pointers.
+No other conversions are performed automatically;
+in particular, the compiler does not compare
+the types of actual arguments with those of formal
+arguments.
+If conversion is needed, use a cast;
+see ``Unary Operators'' and ``Type Names'' under
+``DECLARATIONS.''
+.PP
+In preparing for the call to a function,
+a copy is made of each actual parameter.
+Thus, all argument passing in C is strictly by value.
+A function may
+change the values of its formal parameters, but
+these changes cannot affect the values
+of the actual parameters.
+It is possible
+to pass a pointer on the understanding
+that the function may change the value
+of the object to which the pointer points.
+An array name is a pointer expression.
+The order of evaluation of arguments is undefined by the language;
+take note that the various compilers differ.
+Recursive calls to any
+function are permitted.
+.PP
+A primary expression followed by a dot followed by an identifier
+is an expression.
+The first expression must be a structure or a union, and the identifier
+must name a member of the structure or union.
+The value is the named member of the structure or union, and it is
+an lvalue if the first expression is an lvalue.
+.PP
+A primary expression followed by an arrow (built from
+.B
+\(mi
+.R
+and
+.B
+>
+.R
+)
+followed by an identifier
+is an expression.
+The first expression must be a pointer to a structure or a union
+and the identifier must name a member of that structure or union.
+The result is an lvalue referring to the named member
+of the structure or union
+to which the pointer expression points.
+Thus the expression
+.B
+E1\(mi>MOS
+.R
+is the same as
+.B
+(\(**E1).MOS\fR.
+.R
+Structures and unions are discussed in
+``Structure, Union, and Enumeration Declarations'' under
+``DECLARATIONS.''
+.NH 2
+Unary Operators
+.PP
+Expressions with unary operators
+group right to left.
+.tr ~~
+.DS
+\fIunary-expression:
+ \(** expression
+ & lvalue
+ \(mi expression
+ ! expression
+ \s+2~\s0 expression
+ \(pl\(pl lvalue
+ \(mi\(milvalue
+ lvalue \(pl\(pl
+ lvalue \(mi\(mi
+ ( type-name ) expression\fR
+ sizeof\fI expression\fR
+ sizeof\fI ( type-name )\fR
+.DE
+.PP
+The unary
+.B
+\(**
+.R
+operator
+means
+.I
+indirection
+.R
+;
+the expression must be a pointer, and the result
+is an lvalue referring to the object to
+which the expression points.
+If the type of the expression is ``pointer to .\|.\|.,''
+the type of the result is ``\|.\|.\|.\|''.
+.PP
+The result of the unary
+.B
+&
+.R
+operator is a pointer
+to the object referred to by the
+lvalue.
+If the type of the lvalue is ``\|.\|.\|.\|'',
+the type of the result is ``pointer to .\|.\|.''.
+.PP
+The result
+of the unary
+.B
+\(mi
+.R
+operator
+is the negative of its operand.
+The usual arithmetic conversions are performed.
+The negative of an unsigned quantity is computed by
+subtracting its value from
+2\v'-0.5'\fIn\fR\^\v'0.5' where \fIn\fR\^ is the number of bits in
+the corresponding signed type.
+.sp
+.tr ~~
+There is no unary
+.B
+\(pl
+.R
+operator.
+.PP
+The result of the logical negation operator
+.B
+!
+.R
+is one if the value of its operand is zero, zero if the value of its
+operand is nonzero.
+The type of the result is
+.B
+int\fR.
+.R
+It is applicable to any arithmetic type
+or to pointers.
+.PP
+The
+.B
+\s+2~\s0
+.R
+operator yields the one's complement of its operand.
+The usual arithmetic conversions are performed.
+The type of the operand must be integral.
+.PP
+The object referred to by the lvalue operand of prefix
+.B
+\(pl\(pl
+.R
+is incremented.
+The value is the new value of the operand
+but is not an lvalue.
+The expression
+.B
+\(pl\(plx
+.R
+is equivalent to
+\fBx=x\(pl1\fR.
+See the discussions ``Additive Operators'' and ``Assignment
+Operators'' for information on conversions.
+.PP
+The lvalue operand of prefix
+.B
+\(mi\(mi
+.R
+is decremented
+analogously to the
+prefix
+.B
+\(pl\(pl
+.R
+operator.
+.PP
+When postfix
+.B
+\(pl\(pl
+.R
+is applied to an lvalue,
+the result is the value of the object referred to by the lvalue.
+After the result is noted, the object
+is incremented in the same
+manner as for the prefix
+.B
+\(pl\(pl
+.R
+operator.
+The type of the result is the same as the type of the lvalue expression.
+.PP
+When postfix
+.B
+\(mi\(mi
+.R
+is applied to an lvalue,
+the result is the value of the object referred to by the lvalue.
+After the result is noted, the object
+is decremented in the manner as for the prefix
+.B
+\(mi\(mi
+.R
+operator.
+The type of the result is the same as the type of the lvalue
+expression.
+.PP
+An expression preceded by the parenthesized name of a data type
+causes conversion of the value of the expression to the named type.
+This construction is called a
+.I
+cast\fR.
+.R
+Type names are described in ``Type Names'' under ``Declarations.''
+.PP
+The
+.B
+sizeof
+.R
+operator yields the size
+in bytes of its operand.
+(A
+.I
+byte
+.R
+is undefined by the language
+except in terms of the value of
+.B
+sizeof\fR.
+.R
+However, in all existing implementations,
+a byte is the space required to hold a
+\fBchar.\fR)
+When applied to an array, the result is the total
+number of bytes in the array.
+The size is determined from
+the declarations of
+the objects in the expression.
+This expression is semantically an
+.B
+unsigned
+.R
+constant and may
+be used anywhere a constant is required.
+Its major use is in communication with routines
+like storage allocators and I/O systems.
+.PP
+The
+.B
+sizeof
+.R
+operator
+may also be applied to a parenthesized type name.
+In that case it yields the size in bytes of an object
+of the indicated type.
+.PP
+The construction
+\fBsizeof(\fItype\|\fR\^)\fR\^
+is taken to be a unit,
+so the expression
+\fBsizeof(\fItype\|\fB)-2\fR
+is the same as
+\fB(sizeof(\fItype\|\fB))-2\fR.
+.NH 2
+Multiplicative Operators
+.PP
+The multiplicative operators
+\fB\(**\fR,
+\fB/\fR,
+and
+.B
+%
+.R
+group left to right.
+The usual arithmetic conversions are performed.
+.DS
+\fImultiplicative expression:
+ expression \(** expression
+ expression / expression
+ expression % expression\fR
+.DE
+.PP
+The binary
+.B
+\(**
+.R
+operator indicates multiplication.
+The
+.B
+\(**
+.R
+operator is associative,
+and expressions with several multiplications at the same
+level may be rearranged by the compiler.
+The binary
+.B
+/
+.R
+operator indicates division.
+.PP
+The binary
+.B
+%
+.R
+operator yields the remainder
+from the division of the first expression by the second.
+The operands must be integral.
+.PP
+When positive integers are divided, truncation is toward 0;
+but the form of truncation is machine-dependent
+if either operand is negative.
+On all machines covered by this manual,
+the remainder has the same sign as the dividend.
+It is always true that
+.B
+(a/b)\(**b\ \(pl a%b
+.R
+is equal to
+.B
+a
+.R
+(if
+.B
+b
+.R
+is not 0).
+.NH 2
+Additive Operators
+.PP
+The additive operators
+.B
+\(pl
+.R
+and
+.B
+\(mi
+.R
+group left to right.
+The usual arithmetic conversions are performed.
+There are some additional type possibilities for each operator.
+.DS
+\fIadditive-expression:
+ expression \(pl expression
+ expression \(mi expression\fR
+.DE
+.PP
+The result of the
+.B
+\(pl
+.R
+operator is the sum of the operands.
+A pointer to an object in an array and
+a value of any integral type
+may be added.
+The latter is in all cases converted to
+an address offset
+by multiplying it
+by the length of the object to which the
+pointer points.
+The result is a pointer
+of the same type as the original pointer
+which points to another object in the same array,
+appropriately offset from the original object.
+Thus if
+.B
+P
+.R
+is a pointer
+to an object in an array, the expression
+.B
+P\(pl1
+.R
+is a pointer
+to the next object in the array.
+No further type combinations are allowed for pointers.
+.PP
+The
+.B
+\(pl
+.R
+operator is associative,
+and expressions with several additions at the same level may
+be rearranged by the compiler.
+.PP
+The result of the
+.B
+\(mi
+.R
+operator is the difference of the operands.
+The usual arithmetic conversions are performed.
+Additionally,
+a value of any integral type
+may be subtracted from a pointer,
+and then the same conversions for addition apply.
+.PP
+If two pointers to objects of the same type are subtracted,
+the result is converted
+(by division by the length of the object)
+to an
+.B
+int
+.R
+representing the number of
+objects separating
+the pointed-to objects.
+This conversion will in general give unexpected
+results unless the pointers point
+to objects in the same array, since pointers, even
+to objects of the same type, do not necessarily differ
+by a multiple of the object length.
+.NH 2
+Shift Operators
+.PP
+The shift operators
+.B
+<<
+.R
+and
+.B
+>>
+.R
+group left to right.
+Both perform the usual arithmetic conversions on their operands,
+each of which must be integral.
+Then the right operand is converted to
+\fBint\fR;
+the type of the result is that of the left operand.
+The result is undefined if the right operand is negative
+or greater than or equal to the length of the object in bits.
+On the VAX a negative right operand is interpreted as reversing
+the direction of the shift.
+.DS
+\fIshift-expression:
+ expression << expression
+ expression >> expression\fR
+.DE
+.PP
+The value of
+.B
+E1<<E2
+.R
+is
+.B
+E1
+.R
+(interpreted as a bit
+pattern) left-shifted
+.B
+E2
+.R
+bits.
+Vacated bits are 0 filled.
+The value of
+.B
+E1>>E2
+.R
+is
+.B
+E1
+.R
+right-shifted
+.B
+E2
+.R
+bit positions.
+The right shift is guaranteed to be logical
+(0 fill)
+if
+.B
+E1
+.R
+is
+\fBunsigned\fR;
+otherwise, it may be
+arithmetic.
+.NH 2
+Relational Operators
+.PP
+The relational operators group left to right.
+.DS
+\fIrelational-expression:
+ expression < expression
+ expression > expression
+ expression <= expression
+ expression >= expression\fR
+.DE
+.PP
+The operators
+.B
+<
+.R
+(less than),
+.B
+>
+.R
+(greater than), \fB<=\fR
+(less than
+or equal to), and
+.B
+>=
+.R
+(greater than or equal to)
+all yield 0 if the specified relation is false
+and 1 if it is true.
+The type of the result is
+.B
+int\fR.
+The usual arithmetic conversions are performed.
+Two pointers may be compared;
+the result depends on the relative locations in the address space
+of the pointed-to objects.
+Pointer comparison is portable only when the pointers point to objects
+in the same array.
+.NH 2
+Equality Operators
+.PP
+.DS
+\fIequality-expression:
+ expression == expression
+ expression != expression\fR
+.DE
+.PP
+The
+.B
+==
+.R
+(equal to) and the
+.B
+!=
+.R
+(not equal to) operators
+are exactly analogous to the relational
+operators except for their lower
+precedence.
+(Thus
+.B
+a<b\ ==\ c<d
+.R
+is 1 whenever
+.B
+a<b
+.R
+and
+.B
+c<d
+.R
+have the same truth value).
+.PP
+A pointer may be compared to an integer
+only if the
+integer is the constant 0.
+A pointer to which 0 has been assigned is guaranteed
+not to point to any object
+and will appear to be equal to 0.
+In conventional usage, such a pointer is considered to be null.
+.NH 2
+Bitwise \s-1AND\s0 Operator
+.PP
+.DS
+\fIand-expression:
+ expression & expression\fR
+.DE
+.PP
+The
+.B
+&
+.R
+operator is associative,
+and expressions involving
+.B
+&
+.R
+may be rearranged.
+The usual arithmetic conversions are performed.
+The result is the bitwise
+AND
+function of the operands.
+The operator applies only to integral
+operands.
+.NH 2
+Bitwise Exclusive \s-1OR\s0 Operator
+.DS
+\fIexclusive-or-expression:
+ expression ^ expression\fR
+.DE
+.PP
+The
+.B
+^
+.R
+operator is associative,
+and expressions involving
+.B
+^
+.R
+may be rearranged.
+The usual arithmetic conversions are performed;
+the result is
+the bitwise exclusive
+OR
+function of
+the operands.
+The operator applies only to integral
+operands.
+.NH 2
+Bitwise Inclusive \s-1OR\s0 Operator
+.DS
+\fIinclusive-or-expression:
+ expression | expression\fR
+.DE
+.PP
+The
+.B
+|
+.R
+operator is associative,
+and expressions involving
+.B
+|
+.R
+may be rearranged.
+The usual arithmetic conversions are performed;
+the result is the bitwise inclusive
+OR
+function of its operands.
+The operator applies only to integral
+operands.
+.NH 2
+Logical \s-1AND\s0 Operator
+.DS
+\fIlogical-and-expression:
+ expression && expression\fR
+.DE
+.PP
+The
+.B
+&&
+.R
+operator groups left to right.
+It returns 1 if both its operands
+evaluate to nonzero, 0 otherwise.
+Unlike
+\fB&\fR,
+.B
+&&
+.R
+guarantees left to right
+evaluation; moreover, the second operand is not evaluated
+if the first operand is 0.
+.PP
+The operands need not have the same type, but each
+must have one of the fundamental
+types or be a pointer.
+The result is always
+.B
+int\fR.
+.R
+.NH 2
+Logical \s-1OR\s0 Operator
+.DS
+\fIlogical-or-expression:
+ expression || expression\fR
+.DE
+.PP
+The
+.B
+||
+.R
+operator groups left to right.
+It returns 1 if either of its operands
+evaluates to nonzero, 0 otherwise.
+Unlike
+\fB|\fR,
+.B
+||
+.R
+guarantees left to right evaluation; moreover,
+the second operand is not evaluated
+if the value of the first operand is nonzero.
+.PP
+The operands need not have the same type, but each
+must
+have one of the fundamental types
+or be a pointer.
+The result is always
+.B
+int\fR.
+.R
+.NH 2
+Conditional Operator
+.DS
+\fIconditional-expression:
+ expression ? expression : expression\fR
+.DE
+.PP
+Conditional expressions group right to left.
+The first expression is evaluated;
+and if it is nonzero, the result is the value of the
+second expression, otherwise that of third expression.
+If possible, the usual arithmetic conversions are performed
+to bring the second and third expressions to a common type.
+If both are structures or unions of the same type,
+the result has the type of the structure or union.
+If both pointers are of the same type,
+the result has the common type.
+Otherwise, one must be a pointer and the other the constant 0,
+and the result has the type of the pointer.
+Only one of the second and third
+expressions is evaluated.
+.NH 2
+Assignment Operators
+.PP
+There are a number of assignment operators,
+all of which group right to left.
+All require an lvalue as their left operand,
+and the type of an assignment expression is that
+of its left operand.
+The value is the value stored in the
+left operand after the assignment has taken place.
+The two parts of a compound assignment operator are separate
+tokens.
+.DS
+\fIassignment-expression:
+ lvalue = expression
+ lvalue \(pl= expression
+ lvalue \(mi= expression
+ lvalue \(**= expression
+ lvalue /= expression
+ lvalue %= expression
+ lvalue >>= expression
+ lvalue <<= expression
+ lvalue &= expression
+ lvalue ^= expression
+ lvalue |= expression\fR
+.DE
+.PP
+In the simple assignment with
+\fB=\fR,
+the value of the expression replaces that of the object
+referred
+to by the lvalue.
+If both operands have arithmetic type,
+the right operand is converted to the type of the left
+preparatory to the assignment.
+Second, both operands may be structures or unions of the same type.
+Finally, if the left operand is a pointer, the right operand must in general be a pointer
+of the same type.
+However, the constant 0 may be assigned to a pointer;
+it is guaranteed that this value will produce a null
+pointer distinguishable from a pointer to any object.
+.PP
+The behavior of an expression
+of the form
+\fBE1\fR\^ \fIop\fR\^ = \fBE2\fR\^
+may be inferred by
+taking it as equivalent to
+\fBE1 = E1 \fIop\fR\^ (\fBE2\fR\^);
+however,
+.B
+E1
+.R
+is evaluated only once.
+In
+.B
+\(pl=
+.R
+and
+\fB\(mi=\fR,
+the left operand may be a pointer; in which case, the (integral) right
+operand is converted as explained
+in ``Additive Operators.''
+All right operands and all nonpointer left operands must
+have arithmetic type.
+.NH 2
+Comma Operator
+.DS
+\fIcomma-expression:
+ expression , expression\fR
+.DE
+.PP
+A pair of expressions separated by a comma is evaluated
+left to right, and the value of the left expression is
+discarded.
+The type and value of the result are the
+type and value of the right operand.
+This operator groups left to right.
+In contexts where comma is given a special meaning,
+e.g., in lists of actual arguments
+to functions (see ``Primary Expressions'') and lists
+of initializers (see ``Initialization'' under ``DECLARATIONS''),
+the comma operator as described in this subpart
+can only appear in parentheses. For example,
+.DS
+\fBf(a, (t=3, t\(pl2), c)\fR
+.DE
+.LP
+has three arguments, the second of which has the value 5.
+.NH 1
+Declarations
+.PP
+Declarations are used to specify the interpretation
+which C gives to each identifier; they do not necessarily
+reserve storage associated with the identifier.
+Declarations have the form
+.DS
+\fIdeclaration:
+ decl-specifiers declarator-list\v'0.5'\s-2opt\s0\v'-0.5' ;\fR
+.DE
+.PP
+The declarators in the declarator-list
+contain the identifiers being declared.
+The decl-specifiers
+consist of a sequence of type and storage class specifiers.
+.DS
+\fIdecl-specifiers:
+ type-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5'
+ sc-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5'\fR
+.DE
+.PP
+The list must be self-consistent in a way described below.
+.NH 2
+Storage Class Specifiers
+.PP
+The sc-specifiers are:
+.DS
+\fIsc-specifier:\fB
+ auto
+ static
+ extern
+ register
+ typedef\fR
+.DE
+.PP
+The
+.B
+typedef
+.R
+specifier does not reserve storage
+and is called a ``storage class specifier'' only for syntactic convenience.
+See ``Typedef'' for more information.
+The meanings of the various storage classes were discussed in ``Names.''
+.PP
+The
+\fBauto\fR,
+\fBstatic\fR,
+and
+.B
+register
+.R
+declarations also serve as definitions
+in that they cause an appropriate amount of storage to be reserved.
+In the
+.B
+extern
+.R
+case,
+there must be an external definition (see ``External Definitions'')
+for the given identifiers
+somewhere outside the function in which they are declared.
+.PP
+A
+.B
+register
+.R
+declaration is best thought of as an
+.B
+auto
+.R
+declaration, together with a hint to the compiler
+that the variables declared will be heavily used.
+Only the first few
+such declarations in each function are effective.
+Moreover, only variables of certain types will be stored in registers;
+on the
+PDP-11,
+they are
+.B
+int
+.R
+or pointer.
+One other restriction applies to register variables:
+the address-of operator
+.B
+&
+.R
+cannot be applied to them.
+Smaller, faster programs can be expected if register declarations
+are used appropriately,
+but future improvements in code generation
+may render them unnecessary.
+.PP
+At most, one sc-specifier may be given in a declaration.
+If the sc-specifier is missing from a declaration, it
+is taken to be
+.B
+auto
+.R
+inside a function,
+.B
+extern
+.R
+outside.
+Exception:
+functions are never
+automatic.
+.NH 2
+Type Specifiers
+.PP
+The type-specifiers are
+.DS
+\fItype-specifier:
+ struct-or-union-specifier
+ typedef-name
+ enum-specifier
+basic-type-specifier:
+ basic-type
+ basic-type basic-type-specifiers
+basic-type:\fB
+ char
+ short
+ int
+ long
+ unsigned
+ float
+ double
+ void\fR
+.DE
+.PP
+At most one of the words \fBlong\fR or \fBshort\fR
+may be specified in conjunction with \fBint\fR;
+the meaning is the same as if \fBint\fR were not mentioned.
+The word \fBlong\fR may be specified in conjunction with
+\fBfloat\fR;
+the meaning is the same as \fBdouble\fR.
+The word \fBunsigned\fR may be specified alone, or
+in conjunction with \fBint\fR or any of its short
+or long varieties, or with \fBchar\fR.
+.PP
+Otherwise, at most on type-specifier may be
+given in a declaration.
+In particular, adjectival use of \fBlong\fR,
+\fBshort\fR, or \fBunsigned\fR is not permitted
+with \fBtypedef\fR names.
+If the type-specifier is missing from a declaration,
+it is taken to be \fBint\fR.
+.PP
+Specifiers for structures, unions, and enumerations are discussed in
+``Structure, Union, and Enumeration Declarations.''
+Declarations with
+.B
+typedef
+.R
+names are discussed in ``Typedef.''
+.NH 2
+Declarators
+.PP
+The declarator-list appearing in a declaration
+is a comma-separated sequence of declarators,
+each of which may have an initializer.
+.DS
+\fIdeclarator-list:
+ init-declarator
+ init-declarator , declarator-list
+.DE
+.DS
+\fIinit-declarator:
+ declarator initializer\v'0.5'\s-2opt\s0\v'-0.5'\fR
+.DE
+.PP
+Initializers are discussed in ``Initialization''.
+The specifiers in the declaration
+indicate the type and storage class of the objects to which the
+declarators refer.
+Declarators have the syntax:
+.DS
+\fIdeclarator:
+ identifier
+ ( declarator )
+ \(** declarator
+ declarator ()
+ declarator [ constant-expression\v'0.5'\s-2opt\s0\v'-0.5' ]\fR
+.DE
+.PP
+The grouping is
+the same as in expressions.
+.NH 2
+Meaning of Declarators
+.PP
+Each declarator is taken to be
+an assertion that when a construction of
+the same form as the declarator appears in an expression,
+it yields an object of the indicated
+type and storage class.
+.PP
+Each declarator contains exactly one identifier; it is this identifier that
+is declared.
+If an unadorned identifier appears
+as a declarator, then it has the type
+indicated by the specifier heading the declaration.
+.PP
+A declarator in parentheses is identical to the unadorned declarator,
+but the binding of complex declarators may be altered by parentheses.
+See the examples below.
+.PP
+Now imagine a declaration
+.DS
+\fBT D1\fR
+.DE
+.LP
+where
+.B
+T
+.R
+is a type-specifier (like
+\fBint\fR,
+etc.)
+and
+.B
+D1
+.R
+is a declarator.
+Suppose this declaration makes the identifier have type
+``\|.\|.\|.\|
+.B
+T
+.R
+,''
+where the ``\|.\|.\|.\|'' is empty if
+.B
+D1
+.R
+is just a plain identifier
+(so that the type of
+.B
+x
+.R
+in
+\fB`int x''\fR
+is just
+\fBint\fR).
+Then if
+.B
+D1
+.R
+has the form
+.DS
+\fB\(**D\fR
+.DE
+.LP
+the type of the contained identifier is
+``\|.\|.\|.\| pointer to
+.B
+T
+.R
+\&.''
+.PP
+If
+.B
+D1
+.R
+has the form
+.DS
+\fBD\|(\|\|)\|\fR
+.DE
+.LP
+then the contained identifier has the type
+``\|.\|.\|. function returning
+\fBT\fR.''
+.LP
+If
+.B
+D1
+.R
+has the form
+.DS
+\fBD\|[\|\fIconstant-expression\fB\|]\fR
+.DE
+.LP
+or
+.DS
+\fBD\|[\|]\|\fR
+.DE
+.LP
+then the contained identifier has type
+``\|.\|.\|.\| array of
+\fBT\fR.''
+In the first case, the constant
+expression
+is an expression
+whose value is determinable at compile time
+, whose type is
+.B
+int\fR,
+and whose value is positive.
+(Constant expressions are defined precisely in ``Constant Expressions.'')
+When several ``array of'' specifications are adjacent, a multidimensional
+array is created;
+the constant expressions which specify the bounds
+of the arrays may be missing only for the first member of the sequence.
+This elision is useful when the array is external
+and the actual definition, which allocates storage,
+is given elsewhere.
+The first constant expression may also be omitted
+when the declarator is followed by initialization.
+In this case the size is calculated from the number
+of initial elements supplied.
+.PP
+An array may be constructed from one of the basic types, from a pointer,
+from a structure or union,
+or from another array (to generate a multidimensional array).
+.PP
+Not all the possibilities
+allowed by the syntax above are actually
+permitted.
+The restrictions are as follows:
+functions may not return
+arrays or functions
+although they may return pointers;
+there are no arrays of functions although
+there may be arrays of pointers to functions.
+Likewise, a structure or union may not contain a function;
+but it may contain a pointer to a function.
+.PP
+As an example, the declaration
+.DS
+\fBint i, \(**ip, f(), \(**fip(), (\(**pfi)();\fR
+.DE
+.LP
+declares an integer
+\fBi\fR,
+a pointer
+.B
+ip
+.R
+to an integer,
+a function
+.B
+f
+.R
+returning an integer,
+a function
+.B
+fip
+.R
+returning a pointer to an integer,
+and a pointer
+.B
+pfi
+.R
+to a function which
+returns an integer.
+It is especially useful to compare the last two.
+The binding of
+.B
+\(**fip()
+.R
+is
+.B
+\(**(fip())\fR.
+.R
+The declaration suggests,
+and the same construction in an expression
+requires, the calling of a function
+.B
+fip\fR.
+.R
+Using indirection through the (pointer) result
+to yield an integer.
+In the declarator
+\fB(\(**pfi)()\fR,
+the extra parentheses are necessary, as they are also
+in an expression, to indicate that indirection through
+a pointer to a function yields a function, which is then called;
+it returns an integer.
+.PP
+As another example,
+.DS
+\fBfloat fa[17], \(**afp[17];\fR
+.DE
+.LP
+declares an array of
+.B
+float
+.R
+numbers and an array of
+pointers to
+.B
+float
+.R
+numbers.
+Finally,
+.DS
+\fBstatic int x3d[3][5][7];\fR
+.DE
+.LP
+declares a static 3-dimensional array of integers,
+with rank 3\(mu5\(mu7.
+In complete detail,
+.B
+x3d
+.R
+is an array of three items;
+each item is an array of five arrays;
+each of the latter arrays is an array of seven
+integers.
+Any of the expressions
+\fBx3d\fR,
+\fBx3d[i]\fR,
+\fBx3d[i][j]\fR,
+.B
+x3d[i][j][k]
+.R
+may reasonably appear in an expression.
+The first three have type ``array''
+and the last has type
+.B
+int\fR.
+.R
+.NH 2
+Structure and Union Declarations
+.PP
+A structure
+is an object consisting of a sequence of named members.
+Each member may have any type.
+A union is an object which may, at a given time, contain any one
+of several members.
+Structure and union specifiers have the same form.
+.DS
+\fIstruct-or-union-specifier:
+ struct-or-union { struct-decl-list }
+ struct-or-union identifier { struct-decl-list }
+ struct-or-union identifier
+.DE
+.DS
+\fIstruct-or-union:\fB
+ struct
+ union\fR
+.DE
+.PP
+The
+struct-decl-list
+.ne 4
+is a sequence of declarations for the members of the structure or union:
+.DS
+\fIstruct-decl-list:
+ struct-declaration
+ struct-declaration struct-decl-list
+.DE
+.DS
+\fIstruct-declaration:
+ type-specifier struct-declarator-list ;
+.DE
+.DS
+\fIstruct-declarator-list:
+ struct-declarator
+ struct-declarator , struct-declarator-list\fR
+.DE
+.PP
+In the usual case, a struct-declarator is just a declarator
+for a member of a structure or union.
+A structure member may also consist of a specified number of bits.
+Such a member is also called a
+.I
+field ;
+.R
+its length,
+a non-negative constant expression,
+is set off from the field name by a colon.
+.DS
+\fIstruct-declarator:
+ declarator
+ declarator : constant-expression
+ : constant-expression\fR
+.DE
+.PP
+Within a structure, the objects declared
+have addresses which increase as the declarations
+are read left to right.
+Each nonfield member of a structure
+begins on an addressing boundary appropriate
+to its type;
+therefore, there may
+be unnamed holes in a structure.
+Field members are packed into machine integers;
+they do not straddle words.
+A field which does not fit into the space remaining in a word
+is put into the next word.
+No field may be wider than a word.
+.PP
+Fields are assigned right to left
+on the
+PDP-11
+and
+VAX-11,
+left to right on the 3B 20.
+.PP
+A struct-declarator with no declarator, only a colon and a width,
+indicates an unnamed field useful for padding to conform
+to externally-imposed layouts.
+As a special case, a field with a width of 0
+specifies alignment of the next field at an implementation dependent boundary.
+.PP
+The language does not restrict the types of things that
+are declared as fields,
+but implementations are not required to support any but
+integer fields.
+Moreover,
+even
+.B
+int
+.R
+fields may be considered to be unsigned.
+On the
+PDP-11,
+fields are not signed and have only integer values;
+on the
+VAX-11,
+fields declared with
+.B
+int
+.R
+are treated as containing a sign.
+For these reasons,
+it is strongly recommended that fields be declared as
+.B
+unsigned\fR.
+.R
+In all implementations,
+there are no arrays of fields,
+and the address-of operator
+.B
+&
+.R
+may not be applied to them, so that there are no pointers to
+fields.
+.PP
+A union may be thought of as a structure all of whose members
+begin at offset 0 and whose size is sufficient to contain
+any of its members.
+At most, one of the members can be stored in a union
+at any time.
+.PP
+A structure or union specifier of the second form, that is, one of
+.DS
+ \fBstruct \fIidentifier { struct-decl-list \fR}
+ \fBunion \fIidentifier { struct-decl-list \fR}
+.DE
+.LP
+declares the identifier to be the
+.I
+structure tag
+.R
+(or union tag)
+of the structure specified by the list.
+A subsequent declaration may then use
+the third form of specifier, one of
+.DS
+ \fBstruct \fIidentifier\fR
+ \fBunion \fIidentifier\fR
+.DE
+.PP
+Structure tags allow definition of self-referential
+structures. Structure tags also
+permit the long part of the declaration to be
+given once and used several times.
+It is illegal to declare a structure or union
+which contains an instance of
+itself, but a structure or union may contain a pointer to an instance of itself.
+.PP
+The third form of a structure or union specifier may be
+used prior to a declaration which gives the complete specification
+of the structure or union in situations in which the size
+of the structure or union is unnecessary.
+The size is unnecessary in two situations: when a
+pointer to a structure or union is being declared and
+when a \fBtypedef\fR name is declared to be a synonym
+for a structure or union.
+This, for example, allows the declaration of a pair
+of structures which contain pointers to each other.
+.PP
+The names of members and tags do not conflict
+with each other or with ordinary variables.
+A particular name may not be used twice
+in the same structure,
+but the same name may be used in several different structures in the same scope.
+.PP
+A simple but important example of a structure declaration is
+the following binary tree structure:
+.DS
+\fBstruct tnode
+{
+ char tword[20];
+ int count;
+ struct tnode \(**left;
+ struct tnode \(**right;
+};\fR
+.DE
+.LP
+which contains an array of 20 characters, an integer, and two pointers
+to similar structures.
+Once this declaration has been given, the
+declaration
+.DS
+\fBstruct tnode s, \(**sp;\fR
+.DE
+.LP
+declares
+.B
+s
+.R
+to be a structure of the given sort
+and
+.B
+sp
+.R
+to be a pointer to a structure
+of the given sort.
+With these declarations, the expression
+.DS
+\fBsp->count\fR
+.DE
+.LP
+refers to the
+.B
+count
+.R
+field of the structure to which
+.B
+sp
+.R
+points;
+.DS
+\fBs.left\fR
+.DE
+.LP
+refers to the left subtree pointer
+of the structure
+\fBs\fR;
+and
+.DS
+\fBs.right->tword[0]\fR
+.DE
+.LP
+refers to the first character of the
+.B
+tword
+.R
+member of the right subtree of
+.B
+s\fR.
+.R
+.PP
+.NH 2
+Enumeration Declarations
+.PP
+Enumeration variables and constants have integral type.
+.DS
+\fIenum-specifier:\fB
+ enum\fI { enum-list \fR}\fB
+ enum \fIidentifier { enum-list \fR}\fB
+ enum \fIidentifier
+.sp
+enum-list:
+ enumerator
+ enum-list , enumerator
+.sp
+enumerator:
+ identifier
+ identifier = constant-expression\fR
+.DE
+.PP
+The identifiers in an enum-list are declared as constants
+and may appear wherever constants are required.
+If no enumerators with
+.B
+=
+.R
+appear, then the values of the
+corresponding constants begin at 0 and increase by 1 as the declaration is
+read from left to right.
+An enumerator with
+.B
+=
+.R
+gives the associated identifier the value
+indicated; subsequent identifiers continue the progression from the assigned value.
+.PP
+The names of enumerators in the same scope must all be distinct
+from each other and from those of ordinary variables.
+.PP
+The role of the identifier in the enum-specifier
+is entirely analogous to that of the structure tag
+in a struct-specifier; it names a particular enumeration.
+For example,
+.DS L
+\fBenum color { chartreuse, burgundy, claret=20, winedark };
+\&...
+enum color *cp, col;
+\&...
+col = claret;
+cp = &col;
+\&...
+if (*cp == burgundy) ...\fR
+.DE
+.LP
+makes
+.B
+color
+.R
+the enumeration-tag of a type describing various colors,
+and then declares
+.B
+cp
+.R
+as a pointer to an object of that type,
+and
+.B
+col
+.R
+as an object of that type.
+The possible values are drawn from the set {0,1,20,21}.
+.NH 2
+Initialization
+.PP
+A declarator may specify an initial value for the
+identifier being declared.
+The initializer is preceded by
+.B
+=
+.R
+and
+consists of an expression or a list of values nested in braces.
+.DS
+\fIinitializer:
+ = expression
+ = { initializer-list }
+ = { initializer-list , }
+.DE
+.DS
+\fIinitializer-list:
+ expression
+ initializer-list , initializer-list\fR
+ { \fIinitializer-list \fR}
+ { \fIinitializer-list\fR , }
+.DE
+.PP
+All the expressions in an initializer
+for a static or external variable must be constant
+expressions, which are described in ``CONSTANT EXPRESSIONS'',
+or expressions which reduce to the address of a previously
+declared variable, possibly offset by a constant expression.
+Automatic or register variables may be initialized by arbitrary
+expressions involving constants and previously declared variables and functions.
+.PP
+Static and external variables that are not initialized are
+guaranteed to start off as zero.
+Automatic and register variables that are not initialized
+are guaranteed to start off as garbage.
+.PP
+When an initializer applies to a
+.I
+scalar
+.R
+(a pointer or an object of arithmetic type),
+it consists of a single expression, perhaps in braces.
+The initial value of the object is taken from
+the expression; the same conversions as for assignment are performed.
+.PP
+When the declared variable is an
+.I
+aggregate
+.R
+(a structure or array),
+the initializer consists of a brace-enclosed, comma-separated list of
+initializers for the members of the aggregate
+written in increasing subscript or member order.
+If the aggregate contains subaggregates, this rule
+applies recursively to the members of the aggregate.
+If there are fewer initializers in the list than there are members of the aggregate,
+then the aggregate is padded with zeros.
+It is not permitted to initialize unions or automatic aggregates.
+.PP
+Braces may in some cases be omitted.
+If the initializer begins with a left brace, then
+the succeeding comma-separated list of initializers initializes
+the members of the aggregate;
+it is erroneous for there to be more initializers than members.
+If, however, the initializer does not begin with a left brace,
+then only enough elements from the list are taken to account
+for the members of the aggregate; any remaining members
+are left to initialize the next member of the aggregate of which
+the current aggregate is a part.
+.PP
+A final abbreviation allows a
+.B
+char
+.R
+array to be initialized by a string.
+In this case successive characters of the string
+initialize the members of the array.
+.PP
+For example,
+.DS
+\fBint x[] = { 1, 3, 5 };\fR
+.DE
+.LP
+declares and initializes
+.B
+x
+.R
+as a one-dimensional array which has three members, since no size was specified
+and there are three initializers.
+.DS
+\fBfloat y[4][3] =
+{
+ { 1, 3, 5 },
+ { 2, 4, 6 },
+ { 3, 5, 7 },
+};\fR
+.DE
+.LP
+is a completely-bracketed initialization:
+1, 3, and 5 initialize the first row of
+the array
+\fBy[0]\fR,
+namely
+\fBy[0][0]\fR,
+\fBy[0][1]\fR,
+and
+.B
+y[0][2]\fR.
+.R
+Likewise, the next two lines initialize
+.B
+y[1]
+.R
+and
+.B
+y[2]\fR.
+.R
+The initializer ends early and therefore
+.B
+y[3]
+.R
+is initialized with 0.
+Precisely, the same effect could have been achieved by
+.DS
+\fBfloat y[4][3] =
+{
+ 1, 3, 5, 2, 4, 6, 3, 5, 7
+};\fR
+.DE
+.PP
+The initializer for
+.B
+y
+.R
+begins with a left brace but that for
+.B
+y[0]
+.R
+does not;
+therefore, three elements from the list are used.
+Likewise, the next three are taken successively for
+.B
+y[1]
+.R
+and
+.B
+y[2]\fR.
+.R
+Also,
+.DS
+\fBfloat y[4][3] =
+{
+ { 1 }, { 2 }, { 3 }, { 4 }
+};\fR
+.DE
+.LP
+initializes the first column of
+.B
+y
+.R
+(regarded as a two-dimensional array)
+and leaves the rest 0.
+.PP
+Finally,
+.DS
+\fBchar msg[] = "Syntax error on line %s\en";\fR
+.DE
+.LP
+shows a character array whose members are initialized
+with a string.
+.NH 2
+Type Names
+.PP
+In two contexts (to specify type conversions explicitly
+by means of a cast
+and as an argument of
+\fBsizeof\fR),
+it is desired to supply the name of a data type.
+This is accomplished using a ``type name'', which in essence
+is a declaration for an object of that type which omits the name of
+the object.
+.DS
+\fItype-name:
+ type-specifier abstract-declarator
+.DE
+.DS
+\fIabstract-declarator:
+ empty
+ ( abstract-declarator )
+ \(** abstract-declarator
+ abstract-declarator ()
+ abstract-declarator\fR\^ [ \fIconstant-expression\v'0.5'\s-2opt\s0\v'-0.5' \fR\^]
+.DE
+.PP
+To avoid ambiguity,
+in the construction
+.DS
+ \fI( abstract-declarator \fR)
+.DE
+.LP
+the
+abstract-declarator
+is required to be nonempty.
+Under this restriction,
+it is possible to identify uniquely the location in the abstract-declarator
+where the identifier would appear if the construction were a declarator
+in a declaration.
+The named type is then the same as the type of the
+hypothetical identifier.
+For example,
+.DS
+\fBint
+int \(**
+int \(**[3]
+int (\(**)[3]
+int \(**()
+int (\(**)()
+int (\(**[3])()\fR
+.DE
+.LP
+name respectively the types ``integer,'' ``pointer to integer,''
+``array of three pointers to integers,''
+``pointer to an array of three integers,''
+``function returning pointer to integer,''
+``pointer to function returning an integer,''
+and ``array of three pointers to functions returning an integer.''
+.NH 2
+Typedef
+.PP
+Declarations whose ``storage class'' is
+.B
+typedef
+.R
+do not define storage but instead
+define identifiers which can be used later
+as if they were type keywords naming fundamental
+or derived types.
+.DS
+\fItypedef-name:\fR
+ \fIidentifier\fR
+.DE
+.PP
+Within the scope of a declaration involving
+\fBtypedef\fR,
+each identifier appearing as part of
+any declarator therein becomes syntactically
+equivalent to the type keyword
+naming the type
+associated with the identifier
+in the way described in ``Meaning of Declarators.''
+For example,
+after
+.DS
+\fBtypedef int MILES, \(**KLICKSP;
+typedef struct { double re, im; } complex;\fR
+.DE
+.LP
+the constructions
+.DS
+\fBMILES distance;
+extern KLICKSP metricp;
+complex z, \(**zp;\fR
+.DE
+.LP
+are all legal declarations; the type of
+.B
+distance
+.R
+is
+\fBint\fR,
+that of
+.B
+metricp
+.R
+is ``pointer to \fBint\fR, ''
+and that of
+.B
+z
+.R
+is the specified structure.
+The
+.B
+zp
+.R
+is a pointer to such a structure.
+.PP
+The
+.B
+typedef
+.R
+does not introduce brand-new types, only synonyms for
+types which could be specified in another way.
+Thus
+in the example above
+.B
+distance
+.R
+is considered to have exactly the same type as
+any other
+.B
+int
+.R
+object.
+.NH 1
+Statements
+.PP
+Except as indicated, statements are executed in sequence.
+.NH 2
+Expression Statement
+.PP
+Most statements are expression statements, which have
+the form
+.DS
+\fIexpression \fR;
+.DE
+.PP
+Usually expression statements are assignments or function
+calls.
+.NH 2
+Compound Statement or Block
+.PP
+So that several statements can be used where one is expected,
+the compound statement (also, and equivalently, called ``block'') is provided:
+.DS
+\fIcompound-statement:
+ { declaration-list\v'0.5'\s-2opt\s0\v'-0.5' statement-list\v'0.5'\s-2opt\s0\v'-0.5' }
+.DE
+.DS
+\fIdeclaration-list:
+ declaration
+ declaration declaration-list
+.DE
+.DS
+\fIstatement-list:
+ statement
+ statement statement-list\fR
+.DE
+.PP
+If any of the identifiers
+in the declaration-list were previously declared,
+the outer declaration is pushed down for the duration of the block,
+after which it resumes its force.
+.PP
+Any initializations of
+.B
+auto
+.R
+or
+.B
+register
+.R
+variables are performed each time the block is entered at the top.
+It is currently possible
+(but a bad practice)
+to transfer into a block;
+in that case the initializations are not performed.
+Initializations of
+.B
+static
+.R
+variables are performed only once when the program
+begins execution.
+Inside a block,
+.B
+extern
+.R
+declarations do not reserve storage
+so initialization is not permitted.
+.NH 2
+Conditional Statement
+.PP
+The two forms of the conditional statement are
+.DS
+\fBif\fR\^ ( \fIexpression\fR\^ ) \fIstatement\fR\^
+\fBif\fR\^ ( \fIexpression\fR\^ ) \fIstatement \fBelse \fIstatement\fR\^
+.DE
+.PP
+In both cases, the expression is evaluated;
+and if it is nonzero, the first substatement
+is executed.
+In the second case, the second substatement is executed
+if the expression is 0.
+The ``else'' ambiguity is resolved by connecting
+an
+.B
+else
+.R
+with the last encountered
+\fBelse\fR-less
+.B
+if\fR.
+.R
+.NH 2
+While Statement
+.PP
+The
+.B
+while
+.R
+statement has the form
+.DS
+\fBwhile\fR\^ ( \fIexpression\fR\^ ) \fIstatement\fR\^
+.DE
+.PP
+The substatement is executed repeatedly
+so long as the value of the
+expression remains nonzero.
+The test takes place before each execution of the
+statement.
+.NH 2
+Do Statement
+.PP
+The
+.B
+do
+.R
+statement has the form
+.DS
+\fBdo \fIstatement \fBwhile\fR\^ ( \fIexpression \fR\^) ;
+.DE
+.PP
+The substatement is executed repeatedly until
+the value of the expression becomes 0.
+The test takes place after each execution of the
+statement.
+.NH 2
+For Statement
+.PP
+The
+.B
+for
+.R
+statement has the form:
+.DS
+\fBfor\fI ( exp-1\v'0.5'\s-2opt\s0\v'-0.5' ; exp-2\v'0.5'\s-2opt\s0\v'-0.5' ; exp-3\v'0.5'\s-2opt\s0\v'-0.5' ) statement\fR
+.DE
+.PP
+.sp
+Except for the behavior of \fBcontinue\fR,
+this statement is equivalent to
+.DS
+\fIexp-1 \fR;
+\fBwhile\fR\^ ( \fIexp-2\ ) \fR\^
+{
+ \fIstatement
+ exp-3 ;\fR
+}
+.DE
+.PP
+Thus the first expression specifies initialization
+for the loop; the second specifies
+a test, made before each iteration, such
+that the loop is exited when the expression becomes
+0.
+The third expression often specifies an incrementing
+that is performed after each iteration.
+.PP
+Any or all of the expressions may be dropped.
+A missing
+.I
+exp-2
+.R
+makes the
+implied
+.B
+while
+.R
+clause equivalent to
+\fBwhile(1)\fR;
+other missing expressions are simply
+dropped from the expansion above.
+.NH 2
+Switch Statement
+.PP
+The
+.B
+switch
+.R
+statement causes control to be transferred
+to one of several statements depending on
+the value of an expression.
+It has the form
+.DS
+\fBswitch\fR\^ ( \fIexpression\fR\^ ) \fIstatement\fR\^
+.DE
+.PP
+The usual arithmetic conversion is performed on the
+expression, but the result must be
+.B
+int\fR.
+.R
+The statement is typically compound.
+Any statement within the statement
+may be labeled with one or more case prefixes
+as follows:
+.DS
+\fBcase \fIconstant-expression \fR:
+.DE
+.LP
+where the constant
+expression
+must be
+.B
+int\fR.
+.R
+No two of the case constants in the same switch
+may have the same value.
+Constant expressions are precisely defined in ``CONSTANT EXPRESSIONS.''
+.PP
+There may also be at most one statement prefix of the
+form
+.DS
+\fBdefault :\fR
+.DE
+.PP
+When the
+.B
+switch
+.R
+statement is executed, its expression
+is evaluated and compared with each case constant.
+If one of the case constants is
+equal to the value of the expression,
+control is passed to the statement
+following the matched case prefix.
+If no case constant matches the expression
+and if there is a
+\fBdefault\fR,
+prefix, control
+passes to the prefixed
+statement.
+If no case matches and if there is no
+\fBdefault\fR,
+then
+none of the statements in the
+switch is executed.
+.PP
+The prefixes
+.B
+case
+.R
+and
+.B
+default
+.R
+do not alter the flow of control,
+which continues unimpeded across such prefixes.
+To exit from a switch, see
+``Break Statement.''
+.PP
+Usually, the statement that is the subject of a switch is compound.
+Declarations may appear at the head of this
+statement,
+but
+initializations of automatic or register variables
+are ineffective.
+.NH 2
+Break Statement
+.PP
+The statement
+.DS
+\fBbreak ;\fR
+.DE
+.LP
+causes termination of the smallest enclosing
+\fBwhile\fR,
+\fBdo\fR,
+\fBfor\fR,
+or
+\fBswitch\fR
+statement;
+control passes to the
+statement following the terminated statement.
+.NH 2
+Continue Statement
+.PP
+The statement
+.DS
+\fBcontinue ;\fR
+.DE
+.LP
+causes control to pass to the loop-continuation portion of the
+smallest enclosing
+\fBwhile\fR,
+\fBdo\fR,
+or
+\fBfor\fR
+statement; that is to the end of the loop.
+More precisely, in each of the statements
+.DS
+.TS
+lw(2i) lw(2i) lw(2i).
+\fBwhile (\|.\|.\|.\|) { do { for (\|.\|.\|.\|) {\fR
+ \fIstatement ; statement ; statement ;\fR
+ \fBcontin: ; contin: ; contin: ;
+} } while (...); }\fR
+.TE
+.DE
+.LP
+a
+.B
+continue
+.R
+is equivalent to
+.B
+goto\ contin\fR.
+.R
+(Following the
+.B
+contin:
+.R
+is a null statement, see ``Null Statement''.)
+.NH 2
+Return Statement
+.PP
+A function returns to its caller by means of
+the
+.B
+return
+.R
+statement which has one of the
+forms
+.DS
+\fBreturn ;
+return \fIexpression \fR;
+.DE
+.PP
+In the first case, the returned value is undefined.
+In the second case, the value of the expression
+is returned to the caller
+of the function.
+If required, the expression is converted,
+as if by assignment, to the type of
+function in which it appears.
+Flowing off the end of a function is
+equivalent to a return with no returned value.
+The expression may be parenthesized.
+.NH 2
+Goto Statement
+.PP
+Control may be transferred unconditionally by means of
+the statement
+.DS
+\fBgoto \fIidentifier \fR;
+.DE
+.PP
+The identifier must be a label
+(see ``Labeled Statement'')
+located in the current function.
+.NH 2
+Labeled Statement
+.PP
+Any statement may be preceded by
+label prefixes of the form
+.DS
+\fIidentifier \fR:
+.DE
+.LP
+which serve to declare the identifier
+as a label.
+The only use of a label is as a target of a
+.B
+goto\fR.
+.R
+The scope of a label is the current function,
+excluding any subblocks in which the same identifier has been redeclared.
+See ``SCOPE RULES.''
+.NH 2
+Null Statement
+.PP
+The null statement has the form
+.DS
+ \fB;\fR
+.DE
+.PP
+A null statement is useful to carry a label just before the
+.B
+}
+.R
+of a compound statement or to supply a null
+body to a looping statement such as
+.B
+while\fR.
+.R
+.NH 1
+External Definitions
+.PP
+A C program consists of a sequence of external definitions.
+An external definition declares an identifier to
+have storage class
+.B
+extern
+.R
+(by default)
+or perhaps
+\fBstatic\fR,
+and
+a specified type.
+The type-specifier (see ``Type Specifiers'' in
+``DECLARATIONS'') may also be empty, in which
+case the type is taken to be
+.B
+int\fR.
+.R
+The scope of external definitions persists to the end
+of the file in which they are declared just as the effect
+of declarations persists to the end of a block.
+The syntax of external definitions is the same
+as that of all declarations except that
+only at this level may the code for functions be given.
+.NH 2
+External Function Definitions
+.PP
+Function definitions have the form
+.DS
+\fIfunction-definition:
+ decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5' function-declarator function-body\fR
+.DE
+.PP
+The only sc-specifiers
+allowed
+among the decl-specifiers
+are
+.B
+extern
+.R
+or
+\fBstatic\fR;
+see ``Scope of Externals'' in
+``SCOPE RULES'' for the distinction between them.
+A function declarator is similar to a declarator
+for a ``function returning .\|.\|.\|'' except that
+it lists the formal parameters of
+the function being defined.
+.DS
+\fIfunction-declarator:
+ declarator ( parameter-list\v'0.5'\s-2opt\s0\v'-0.5' )
+.DE
+.DS
+\fIparameter-list:
+ identifier
+ identifier , parameter-list\fR
+.DE
+.PP
+The function-body
+has the form
+.DS
+\fIfunction-body:
+ declaration-list\v'0.5'\s-2opt\s0\v'-0.5' compound-statement\fR
+.DE
+.PP
+The identifiers in the parameter list, and only those identifiers,
+may be declared in the declaration list.
+Any identifiers whose type is not given are taken to be
+.B
+int\fR.
+.R
+The only storage class which may be specified is
+\fBregister\fR;
+if it is specified, the corresponding actual parameter
+will be copied, if possible, into a register
+at the outset of the function.
+.PP
+A simple example of a complete function definition is
+.DS
+\fBint max(a, b, c)
+ int a, b, c;
+{
+ int m;
+.sp
+ m = (a > b) ? a : b;
+ return((m > c) ? m : c);
+}\fR
+.DE
+.PP
+Here
+.B
+int
+.R
+is the type-specifier;
+.B
+max(a,\ b,\ c)
+.R
+is the function-declarator;
+.B
+int\ a,\ b,\ c;
+.R
+is the declaration-list for
+the formal
+parameters;
+\fB{\ ...\ }\fR
+is the
+block giving the code for the statement.
+.PP
+The C program converts all
+.B
+float
+.R
+actual parameters
+to
+\fBdouble\fR,
+so formal parameters declared
+.B
+float
+.R
+have their declaration adjusted to read
+.B
+double\fR.
+.R
+All \fBchar\fR and \fBshort\fR formal parameter
+declarations are similarly adjusted
+to read \fBint\fR.
+Also, since a reference to an array in any context
+(in particular as an actual parameter)
+is taken to mean
+a pointer to the first element of the array,
+declarations of formal parameters declared ``array of .\|.\|.\|''
+are adjusted to read ``pointer to .\|.\|.\|.''
+.NH 2
+External Data Definitions
+.PP
+An external data definition has the form
+.DS
+\fIdata-definition:
+ declaration\fR
+.DE
+.PP
+The storage class of such data may be
+.B
+extern
+.R
+(which is the default)
+or
+.B
+static
+.R
+but not
+.B
+auto
+.R
+or
+\fBregister\fR.
+.NH 1
+Scope Rules
+.PP
+A C program need not all
+be compiled at the same time. The source text of the
+program
+may be kept in several files, and precompiled
+routines may be loaded from
+libraries.
+Communication among the functions of a program
+may be carried out both through explicit calls
+and through manipulation of external data.
+.PP
+Therefore, there are two kinds of scopes to consider:
+first, what may be called the
+.UL lexical
+.UL scope
+of an identifier, which is essentially the
+region of a program during which it may
+be used without drawing ``undefined identifier''
+diagnostics;
+and second, the scope
+associated with external identifiers,
+which is characterized by the rule
+that references to the same external
+identifier are references to the same object.
+.NH 2
+Lexical Scope
+.PP
+The lexical scope of identifiers declared in external definitions
+persists from the definition through
+the end of the source file
+in which they appear.
+The lexical scope of identifiers which are formal parameters
+persists through the function with which they are
+associated.
+The lexical scope of identifiers declared at the head of a block
+persists until the end of the block.
+The lexical scope of labels is the whole of the
+function in which they appear.
+.PP
+In all cases, however,
+if an identifier is explicitly declared at the head of a block,
+including the block constituting a function,
+any declaration of that identifier outside the block
+is suspended until the end of the block.
+.PP
+Remember also (see ``Structure, Union, and Enumeration Declarations'' in
+``DECLARATIONS'') that tags, identifiers associated with
+ordinary variables,
+and identities associated with structure and union members
+form three disjoint classes
+which do not conflict.
+Members and tags follow the same scope rules
+as other identifiers.
+The \fBenum\fR constants are in the same
+class as ordinary variables and follow the same scope rules.
+The
+.B
+typedef
+.R
+names are in the same class as ordinary identifiers.
+They may be redeclared in inner blocks, but an explicit
+type must be given in the inner declaration:
+.DS
+\fBtypedef float distance;
+\&...
+{
+ auto int distance;
+ ...\fR
+}
+.DE
+.PP
+The
+.B
+int
+.R
+must be present in the second declaration,
+or it would be taken to be
+a declaration with no declarators and type
+.B
+distance\fR.
+.R
+.NH 2
+Scope of Externals
+.PP
+If a function refers to an identifier declared to be
+\fBextern\fR,
+then somewhere among the files or libraries
+constituting the complete program
+there must be at least one external definition
+for the identifier.
+All functions in a given program which refer to the same
+external identifier refer to the same object,
+so care must be taken that the type and size
+specified in the definition
+are compatible with those specified
+by each function which references the data.
+.PP
+It is illegal to explicitly initialize any external
+identifier more than once in the set of files and libraries
+comprising a multi-file program.
+It is legal to have more than one data definition
+for any external non-function identifier;
+explicit use of \fBextern\fR does not
+change the meaning of an external declaration.
+.PP
+In restricted environments, the use of the \fBextern\fR
+storage class takes on an additional meaning.
+In these environments, the explicit appearance of the
+\fBextern\fR keyword in external data declarations of
+identities without initialization indicates that
+the storage for the identifiers is allocated elsewhere,
+either in this file or another file.
+It is required that there be exactly one definition of
+each external identifier (without \fBextern\fR)
+in the set of files and libraries
+comprising a mult-file program.
+.PP
+Identifiers declared
+.B
+static
+.R
+at the top level in external definitions
+are not visible in other files.
+Functions may be declared
+.B
+static\fR.
+.R
+.nr Hu 1
+.NH 1
+Compiler Control Lines
+.PP
+The C compiler contains a preprocessor capable
+of macro substitution, conditional compilation,
+and inclusion of named files.
+Lines beginning with
+.B
+#
+.R
+communicate
+with this preprocessor.
+There may be any number of blanks and horizontal tabs
+between the \fB#\fR and the directive.
+These lines have syntax independent of the rest of the language;
+they may appear anywhere and have effect which lasts (independent of
+scope) until the end of the source program file.
+.nr Hu 1
+.NH 2
+Token Replacement
+.PP
+A compiler-control line of the form
+.DS
+\fB#define \fIidentifier token-string\v'0.5'\s-2opt\s0\v'-0.5'\fR
+.DE
+.LP
+causes the preprocessor to replace subsequent instances
+of the identifier with the given string of tokens.
+Semicolons in or at the end of the token-string are part of that string.
+A line of the form
+.DS
+\fB#define \fIidentifier(identifier, ... )token-string\v'0.5'\s-2opt\s0\v'-0.5'\fR
+.DE
+.LP
+where there is no space between the first identifier
+and the
+\fB(\fR,
+is a macro definition with arguments.
+There may be zero or more formal parameters.
+Subsequent instances of the first identifier followed
+by a
+\fB(\fR,
+a sequence of tokens delimited by commas, and a
+\fB)\fR
+are replaced
+by the token string in the definition.
+Each occurrence of an identifier mentioned in the formal parameter list
+of the definition is replaced by the corresponding token string from the call.
+The actual arguments in the call are token strings separated by commas;
+however, commas in quoted strings or protected by
+parentheses do not separate arguments.
+The number of formal and actual parameters must be the same.
+Strings and character constants in the token-string are scanned
+for formal parameters, but
+strings and character constants in the rest of the program are
+not scanned for defined identifiers
+to replacement.
+.PP
+In both forms the replacement string is rescanned for more
+defined identifiers.
+In both forms
+a long definition may be continued on another line
+by writing
+.B
+\e
+.R
+at the end of the line to be continued.
+.PP
+This facility is most valuable for definition of ``manifest constants,''
+as in
+.DS
+\fB#define TABSIZE 100
+.sp
+int table\|[\|TABSIZE\|]\|;\fR
+.DE
+.PP
+A control line of the form
+.DS
+\fB#undef \fIidentifier\fR
+.DE
+.LP
+causes the
+identifier's preprocessor definition (if any) to be forgotten.
+.PP
+If a \fB#define\fRd identifier is the subject of a subsequent
+\fB#define\fR with no intervening \fB#undef\fR, then
+the two token-strings are compared textually.
+If the two token-strings are not identical
+(all white space is considered as equivalent), then
+the identifier is considered to be redefined.
+.nr Hu 1
+.NH 2
+File Inclusion
+.PP
+A compiler control line of
+the form
+.DS
+\fB#include\fI "filename\|\fR"
+.DE
+.LP
+causes the replacement of that
+line by the entire contents of the file
+.I
+filename\fR.
+.R
+The named file is searched for first in the directory
+of the file containing the \fB#include\fR,
+and then in a sequence of specified or standard places.
+Alternatively, a control line of the form
+.DS
+\fB#include\fI <filename\|\fR>
+.DE
+.LP
+searches only the specified or standard places
+and not the directory of the \fB#include\fR.
+(How the places are specified is not part of the language.)
+.PP
+\fB#include\fRs
+may be nested.
+.nr Hu 1
+.NH 2
+Conditional Compilation
+.PP
+A compiler control line of the form
+.DS
+\fB#if \fIrestricted-constant-expression\fR
+.DE
+.LP
+checks whether the restricted-constant expression evaluates to nonzero.
+(Constant expressions are discussed in ``CONSTANT EXPRESSIONS'';
+the following additional restrictions apply here:
+the constant expression may not contain
+.B
+sizeof
+.R
+casts, or an enumeration constant.)
+.PP
+A restricted constant expression may also contain the
+additional unary expression
+.PP
+\fBdefined \fIidentifier\fR
+.LP
+or
+.PP
+\fBdefined( \fIidentifier )\fR
+.LP
+which evaluates to one if the identifier is currently
+defined in the preprocessor and zero if it is not.
+.PP
+All currently defined identifiers in restricted-constant-expressions
+are replaced by their token-strings (except those identifiers
+modified by \fBdefined\fR) just as in normal text.
+The restricted constant expression will be evaluated only
+after all expressions have finished.
+During this evaluation, all undefined (to the procedure)
+identifiers evaluate to zero.
+.PP
+A control line of the form
+.DS
+\fB#ifdef \fIidentifier\fR
+.DE
+.LP
+checks whether the identifier is currently defined
+in the preprocessor; i.e., whether it has been the
+subject of a
+.B
+#define
+.R
+control line.
+It is equivalent to \fB#ifdef(\fIidentifier\fB)\fR.
+A control line of the form
+.DS
+\fB#ifndef \fIidentifier\fR
+.DE
+.LP
+checks whether the identifier is currently undefined
+in the preprocessor.
+It is equivalent to
+.DS
+\fB#if !\|defined(\fIidentifier\fB)\fR.
+.DE
+.PP
+All three forms are followed by an arbitrary number of lines,
+possibly containing a control line
+.DS
+\fB#else\fR
+.DE
+.LP
+and then by a control line
+.DS
+\fB#endif\fR
+.DE
+.PP
+If the checked condition is true,
+then any lines
+between
+.B
+#else
+.R
+and
+.B
+#endif
+.R
+are ignored.
+If the checked condition is false, then any lines between
+the test and a
+.B
+#else
+.R
+or, lacking a
+\fB#else\fR,
+the
+.B
+#endif
+.R
+are ignored.
+.PP
+These constructions may be nested.
+.nr Hu 1
+.NH 2
+Line Control
+.PP
+For the benefit of other preprocessors which generate C programs,
+a line of the form
+.DS
+\fB#line \fIconstant "filename\fR"
+.DE
+.LP
+causes the compiler to believe, for purposes of error
+diagnostics,
+that the line number of the next source line is given by the constant and the current input
+file is named by "\fIfilename\fR".
+If "\fIfilename\fR" is absent, the remembered file name does not change.
+.nr Hu 1
+.NH 1
+Implicit Declarations
+.PP
+It is not always necessary to specify
+both the storage class and the type
+of identifiers in a declaration.
+The storage class is supplied by
+the context in external definitions
+and in declarations of formal parameters
+and structure members.
+In a declaration inside a function,
+if a storage class but no type
+is given, the identifier is assumed
+to be
+\fBint\fR;
+if a type but no storage class is indicated,
+the identifier is assumed to
+be
+.B
+auto\fR.
+.R
+An exception to the latter rule is made for
+functions because
+.B
+auto
+.R
+functions do not exist.
+If the type of an identifier is ``function returning .\|.\|.\|,''
+it is implicitly declared to be
+.B
+extern\fR.
+.R
+.PP
+In an expression, an identifier
+followed by
+.B
+(
+.R
+and not already declared
+is contextually
+declared to be ``function returning
+.B
+int\fR.''
+.nr Hu 1
+.NH 1
+Types Revisited
+.PP
+This part summarizes the operations
+which can be performed on objects of certain types.
+.nr Hu 1
+.NH 2
+Structures and Unions
+.PP
+Structures and unions may be assigned, passed as arguments to functions,
+and returned by functions.
+Other plausible operators, such as equality comparison
+and structure casts,
+are not implemented.
+.PP
+In a reference
+to a structure or union member, the
+name on the right
+of the \fB->\fR or the \fB.\fR
+must specify a member of the aggregate
+named or pointed to by the expression
+on the left.
+In general, a member of a union may not be inspected
+unless the value of the union has been assigned using that same member.
+However, one special guarantee is made by the language in order
+to simplify the use of unions:
+if a union contains several structures that share a common initial sequence
+and if the union currently contains one of these structures,
+it is permitted to inspect the common initial part of any of
+the contained structures.
+For example, the following is a legal fragment:
+.DS
+\fBunion
+{
+ struct
+ {
+ int type;
+ } n;
+ struct
+ {
+ int type;
+ int intnode;
+ } ni;
+ struct
+ {
+ int type;
+ float floatnode;
+ } nf;
+} u;
+\&...
+u.nf.type = FLOAT;
+u.nf.floatnode = 3.14;
+\&...
+if (u.n.type == FLOAT)
+ ... sin(u.nf.floatnode) ...\fR
+.DE
+.PP
+.nr Hu 1
+.NH 2
+Functions
+.PP
+There are only two things that
+can be done with a function \fBm\fR,
+call it or take its address.
+If the name of a function appears in an
+expression not in the function-name position of a call,
+a pointer to the function is generated.
+Thus, to pass one function to another, one
+might say
+.DS
+\fBint f();
+\&...
+g(f);\fR
+.DE
+.PP
+.ne 8
+Then the definition of
+.B
+g
+.R
+might read
+.DS
+\fBg(funcp)
+ int (\(**funcp)();
+{
+ ...
+ (\(**funcp)();
+ ...
+}\fR
+.DE
+.PP
+Notice that
+.B
+f
+.R
+must be declared
+explicitly in the calling routine since its appearance
+in
+.B
+g(f)
+.R
+was not followed by
+.B
+(.
+.R
+.nr Hu 1
+.NH 2
+Arrays, Pointers, and Subscripting
+.PP
+Every time an identifier of array type appears
+in an expression, it is converted into a pointer
+to the first member of the array.
+Because of this conversion, arrays are not
+lvalues.
+By definition, the subscript operator
+.B
+[]
+.R
+is interpreted
+in such a way that
+.B
+E1[E2]
+.R
+is identical to
+.B
+\(**((E1)\(plE2))\fR.
+.R
+Because of the conversion rules
+which apply to
+\fB\(pl\fR,
+if
+.B
+E1
+.R
+is an array and
+.B
+E2
+.R
+an integer,
+then
+.B
+E1[E2]
+.R
+refers to the
+.B
+E2-th
+.R
+member of
+.B
+E1\fR.
+.R
+Therefore,
+despite its asymmetric
+appearance, subscripting is a commutative operation.
+.PP
+A consistent rule is followed in the case of
+multidimensional arrays.
+If
+.B
+E
+.R
+is an
+\fIn\fR-dimensional
+array
+of rank
+i\(muj\(mu...\(muk,
+then
+.B
+E
+.R
+appearing in an expression is converted to
+a pointer to an (n-1)-dimensional
+array with rank
+j\(mu...\(muk.
+If the
+.B
+\(**
+.R
+operator, either explicitly
+or implicitly as a result of subscripting,
+is applied to this pointer,
+the result is the pointed-to (n-1)-dimensional array,
+which itself is immediately converted into a pointer.
+.PP
+For example, consider
+.DS
+\fBint x[3][5];\fR
+.DE
+.PP
+Here
+.B
+x
+.R
+is a 3\(mu5 array of integers.
+When
+.B
+x
+.R
+appears in an expression, it is converted
+to a pointer to (the first of three) 5-membered arrays of integers.
+In the expression
+\fBx[i]\fR,
+which is equivalent to
+\fB\(**(x\(pli)\fR,
+.B
+x
+.R
+is first converted to a pointer as described;
+then
+.B
+i
+.R
+is converted to the type of
+\fBx\fR,
+which involves multiplying
+.B
+i
+.R
+by the
+length the object to which the pointer points,
+namely 5-integer objects.
+The results are added and indirection applied to
+yield an array (of five integers) which in turn is converted to
+a pointer to the first of the integers.
+If there is another subscript, the same argument applies
+again; this time the result is an integer.
+.PP
+Arrays in C are stored
+row-wise (last subscript varies fastest)
+and the first subscript in the declaration helps determine
+the amount of storage consumed by an array.
+Arrays play no other part in subscript calculations.
+.nr Hu 1
+.NH 2
+Explicit Pointer Conversions
+.PP
+Certain conversions involving pointers are permitted
+but have implementation-dependent aspects.
+They are all specified by means of an explicit type-conversion
+operator, see ``Unary Operators'' under``EXPRESSIONS'' and
+``Type Names''under ``DECLARATIONS.''
+.PP
+A pointer may be converted to any of the integral types large
+enough to hold it.
+Whether an
+.B
+int
+.R
+or
+.B
+long
+.R
+is required is machine dependent.
+The mapping function is also machine dependent but is intended
+to be unsurprising to those who know the addressing structure
+of the machine.
+Details for some particular machines are given below.
+.PP
+An object of integral type may be explicitly converted to a pointer.
+The mapping always carries an integer converted from a pointer back to the same pointer
+but is otherwise machine dependent.
+.PP
+A pointer to one type may be converted to a pointer to another type.
+The resulting pointer may cause addressing exceptions
+upon use if
+the subject pointer does not refer to an object suitably aligned in storage.
+It is guaranteed that
+a pointer to an object of a given size may be converted to a pointer to an object
+of a smaller size
+and back again without change.
+.PP
+For example,
+a storage-allocation routine
+might accept a size (in bytes)
+of an object to allocate, and return a
+.B
+char
+.R
+pointer;
+it might be used in this way.
+.DS
+\fBextern char \(**malloc();
+double \(**dp;
+.sp
+dp = (double \(**) malloc(sizeof(double));
+\(**dp = 22.0 / 7.0;\fR
+.DE
+.PP
+The
+.B
+alloc
+.R
+must ensure (in a machine-dependent way)
+that its return value is suitable for conversion to a pointer to
+\fBdouble\fR;
+then the
+.I
+use
+.R
+of the function is portable.
+.PP
+The pointer
+representation on the
+PDP-11
+corresponds to a 16-bit integer and
+measures bytes.
+The
+.B
+char\fR's
+have no alignment requirements; everything else must have an even address.
+.PP
+On the
+VAX-11,
+pointers are 32 bits long and measure bytes.
+Elementary objects are aligned on a boundary equal to their
+length, except that
+.B
+double
+.R
+quantities need be aligned only on even 4-byte boundaries.
+Aggregates are aligned on the strictest boundary required by
+any of their constituents.
+.PP
+The 3B 20 computer has 24-bit pointers placed into 32-bit quantities.
+Most objects are
+aligned on 4-byte boundaries. \fBShort\fRs are aligned in all cases on
+2-byte boundaries. Arrays of characters, all structures,
+\fBint\fR\^s, \fBlong\fR\^s, \fBfloat\fR\^s, and \fBdouble\fR\^s are aligned on 4-byte
+boundaries; but structure members may be packed tighter.
+.nr Hu 1
+.NH 2
+CONSTANT EXPRESSIONS
+.PP
+In several places C requires expressions that evaluate to
+a constant:
+after
+\fBcase\fR,
+as array bounds, and in initializers.
+In the first two cases, the expression can
+involve only integer constants, character constants,
+casts to integral types,
+enumeration constants,
+and
+.B
+sizeof
+.R
+expressions, possibly
+connected by the binary operators
+.ne 10
+.DS
+\(pl \(mi \(** / % & | ^ << >> == != < > <= >= && ||
+.DE
+.LP
+or by the unary operators
+.DS
+\(mi \s+2~\s0
+.DE
+.LP
+or by the ternary operator
+.DS
+?:
+.DE
+.PP
+Parentheses can be used for grouping
+but not for function calls.
+.PP
+More latitude is permitted for initializers;
+besides constant expressions as discussed above,
+one can also use floating constants
+and arbitrary casts and
+can also apply the unary
+.B
+&
+.R
+operator to external or static objects
+and to external or static arrays subscripted
+with a constant expression.
+The unary
+.B
+&
+.R
+can also
+be applied implicitly
+by appearance of unsubscripted arrays and functions.
+The basic rule is that initializers must
+evaluate either to a constant or to the address
+of a previously declared external or static object plus or minus a constant.
+.nr Hu 1
+.NH 1
+Portability Considerations
+.PP
+Certain parts of C are inherently machine dependent.
+The following list of potential trouble spots
+is not meant to be all-inclusive
+but to point out the main ones.
+.PP
+Purely hardware issues like
+word size and the properties of floating point arithmetic and integer division
+have proven in practice to be not much of a problem.
+Other facets of the hardware are reflected
+in differing implementations.
+Some of these,
+particularly sign extension
+(converting a negative character into a negative integer)
+and the order in which bytes are placed in a word,
+are nuisances that must be carefully watched.
+Most of the others are only minor problems.
+.PP
+The number of
+.B
+register
+.R
+variables that can actually be placed in registers
+varies from machine to machine
+as does the set of valid types.
+Nonetheless, the compilers all do things properly for their own machine;
+excess or invalid
+.B
+register
+.R
+declarations are ignored.
+.PP
+Some difficulties arise only when
+dubious coding practices are used.
+It is exceedingly unwise to write programs
+that depend
+on any of these properties.
+.PP
+The order of evaluation of function arguments
+is not specified by the language.
+The order in which side effects take place
+is also unspecified.
+.PP
+Since character constants are really objects of type
+\fBint\fR,
+multicharacter character constants may be permitted.
+The specific implementation
+is very machine dependent
+because the order in which characters
+are assigned to a word
+varies from one machine to another.
+.PP
+Fields are assigned to words and characters to integers right to left
+on some machines
+and left to right on other machines.
+These differences are invisible to isolated programs
+that do not indulge in type punning (e.g.,
+by converting an
+.B
+int
+.R
+pointer to a
+.B
+char
+.R
+pointer and inspecting the pointed-to storage)
+but must be accounted for when conforming to externally-imposed
+storage layouts.
+.nr Hu 1
+.NH 1
+Syntax Summary
+.PP
+This summary of C syntax is intended more for aiding comprehension
+than as an exact statement of the language.
+.nr Hu 1
+.ne 18
+.NH 2
+Expressions
+.PP
+The basic expressions are:
+.tr ~~
+.DS
+ \fIexpression:
+ primary
+ \(** expression\fR
+ &\fIlvalue
+ \(mi expression
+ ! expression
+ \s+2~\s0 expression
+ \(pl\(pl lvalue
+ \(mi\(milvalue
+ lvalue \(pl\(pl
+ lvalue \(mi\(mi
+ \fBsizeof\fI expression
+ \fBsizeof (\fItype-name\fB)\fI
+ ( type-name ) expression
+ expression binop expression
+ expression ? expression : expression
+ lvalue asgnop expression
+ expression , expression
+.DE
+.DS
+ \fIprimary:
+ identifier
+ constant
+ string
+ ( expression )
+ primary ( expression-list\v'0.5'\s-2opt\s0\v'-0.5' )
+ primary [ expression ]
+ primary . identifier
+ primary \(mi identifier
+.DE
+.DS
+ \fIlvalue:
+ identifier
+ primary [ expression ]
+ lvalue . identifier
+ primary \(mi identifier
+ \(** expression
+ ( lvalue )\fR
+.DE
+.PP
+.PP
+The primary-expression operators
+.DS
+ () [] . \(mi
+.tr ~~
+.DE
+.LP
+have highest priority and group left to right.
+The unary operators
+.DS
+ \(** & \(mi ! \s+2~\s0 \(pl\(pl \(mi\(mi \fBsizeof\fI ( type-name \fR)
+.DE
+.LP
+have priority below the primary operators
+but higher than any binary operator
+and group right to left.
+Binary operators
+group left to right; they have priority
+decreasing
+as indicated below.
+.DS
+ \fIbinop:\fR
+ \(** / %
+ \(pl \(mi
+ >> <<
+ < > <= >=
+ == !=
+ &
+ ^
+ |
+ &&
+ ||
+.DE
+The conditional operator groups right to left.
+.PP
+Assignment operators all have the same
+priority and all group right to left.
+.DS
+ \fIasgnop:\fR
+ = \(pl= \(mi= \(**= /= %= >>= <<= &= ^= |=
+.DE
+.PP
+The comma operator has the lowest priority and groups left to right.
+.nr Hu 1
+.NH 2
+Declarations
+.PP
+.DS
+ \fIdeclaration:
+ decl-specifiers init-declarator-list\v'0.5'\s-2opt\s0\v'-0.5' ;
+.DE
+.DS
+ \fIdecl-specifiers:
+ type-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5'
+ sc-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5'
+.DE
+.DS
+ \fIsc-specifier:\fB
+ auto
+ static
+ extern
+ register
+ typedef
+.DE
+.DS
+ \fItype-specifier:
+ struct-or-union-specifier
+ typedef-name
+ enum-specifier
+ basic-type-specifier:
+ basic-type
+ basic-type basic-type-specifiers
+ basic-type:\fB
+ char
+ short
+ int
+ long
+ unsigned
+ float
+ double
+ void\fR
+.DE
+.DS
+\fIenum-specifier:\fB
+ enum\fI { enum-list }\fB
+ enum \fIidentifier { enum-list }\fB
+ enum \fIidentifier
+.DE
+.DS
+ \fIenum-list:
+ enumerator
+ enum-list , enumerator
+.DE
+.DS
+ \fIenumerator:
+ identifier
+ identifier = constant-expression
+.DE
+.DS
+ \fIinit-declarator-list:
+ init-declarator
+ init-declarator , init-declarator-list
+.DE
+.DS
+ \fIinit-declarator:
+ declarator initializer\v'0.5'\s-2opt\s0\v'-0.5'
+.DE
+.DS
+ \fIdeclarator:
+ identifier
+ ( declarator )
+ \(** declarator
+ declarator ()
+ declarator [ constant-expression\v'0.5'\s-2opt\s0\v'-0.5' ]
+.DE
+.DS
+ \fIstruct-or-union-specifier:\fB
+ struct\fI { struct-decl-list }\fB
+ struct \fIidentifier { struct-decl-list }\fB
+ struct \fIidentifier\fB
+ union { \fIstruct-decl-list }\fB
+ union \fIidentifier { struct-decl-list }\fB
+ union \fIidentifier
+.DE
+.DS
+ \fIstruct-decl-list:
+ struct-declaration
+ struct-declaration struct-decl-list
+.DE
+.DS
+ \fIstruct-declaration:
+ type-specifier struct-declarator-list ;
+.DE
+.DS
+ \fIstruct-declarator-list:
+ struct-declarator
+ struct-declarator , struct-declarator-list
+.DE
+.DS
+ \fIstruct-declarator:
+ declarator
+ declarator : constant-expression
+ : constant-expression
+.DE
+.DS
+ \fIinitializer:
+ = expression
+ = { initializer-list }
+ = { initializer-list , }
+.DE
+.DS
+ \fIinitializer-list:
+ expression
+ initializer-list , initializer-list
+ { initializer-list }
+ { initializer-list , }
+.DE
+.DS
+ \fItype-name:
+ type-specifier abstract-declarator
+.DE
+.DS
+ \fIabstract-declarator:
+ empty
+ ( abstract-declarator )
+ \(** abstract-declarator
+ abstract-declarator ()
+ abstract-declarator [ constant-expression\v'0.5'\s-2opt\s0\v'-0.5' ]
+.DE
+.DS
+ \fItypedef-name:
+ identifier
+.nr Hu 1
+.DE
+.NH 2
+Statements
+.PP
+.DS
+ \fIcompound-statement:
+ { declaration-list\v'0.5'\s-2opt\s0\v'-0.5' statement-list\v'0.5'\s-2opt\s0\v'-0.5' }
+.DE
+.DS
+ \fIdeclaration-list:
+ declaration
+ declaration declaration-list
+.DE
+.DS
+ \fIstatement-list:
+ statement
+ statement statement-list
+.DE
+.DS
+ \fIstatement:
+ compound-statement
+ expression ;
+ \fBif\fI ( expression ) statement
+ \fBif\fI ( expression ) statement \fBelse\fI statement
+ \fBwhile\fI ( expression ) statement
+ \fBdo\fI statement \fBwhile\fI ( expression ) ;
+ \fBfor\fI (exp\v'0.3'\s-2opt\s0\v'-0.3'\fB;\fIexp\v'0.3'\s-2opt\s0\v'-0.3'\fB;\fIexp\v'0.3'\s-2opt\s0\v'-0.3'\fI) statement
+ \fBswitch\fI ( expression ) statement
+ \fBcase\fI constant-expression : statement
+ \fBdefault\fI : statement
+ \fBbreak ;
+ continue ;
+ return ;
+ return\fI expression ;
+ \fBgoto\fI identifier ;
+ identifier : statement
+ ;\fR
+.nr Hu 1
+.DE
+.NH 2
+External definitions
+.PP
+.DS
+ \fIprogram:
+ external-definition
+ external-definition program
+.DE
+.DS
+ \fIexternal-definition:
+ function-definition
+ data-definition
+.DE
+.DS
+ \fIfunction-definition:
+ decl-specifier\v'0.5'\s-2opt\s0\v'-0.5' function-declarator function-body
+.DE
+.DS
+ \fIfunction-declarator:
+ declarator ( parameter-list\v'0.5'\s-2opt\s0\v'-0.5' )
+.DE
+.DS
+ \fIparameter-list:
+ identifier
+ identifier , parameter-list
+.DE
+.DS
+ \fIfunction-body:
+ declaration-list\v'0.5'\s-2opt\s0\v'-0.5' compound-statement
+.DE
+.DS
+ \fIdata-definition:
+ \fBextern\fI declaration\fB ;
+ \fBstatic\fI declaration\fB ;
+.DE
+.NH
+Preprocessor
+.DS
+ \fB#define\fI identifier token-string\v'0.3'\s-2opt\s0\v'-0.3'\fB
+ \fB#define\fI identifier\fB(\fIidentifier\fB,...)\fItoken-string\v'0.5'\s-2opt\s0\v'-0.5'\fB
+ \fB#undef\fI identifier\fB
+ \fB#include "\fIfilename\|\fB"
+ #include <\fIfilename\|\fB>
+ \fB#if\fI restricted-constant-expression\fB
+ \fB#ifdef\fI identifier\fB
+ \fB#ifndef\fI identifier\fB
+ \fB#else
+ \fB#endif
+ \fB#line\fI constant \fB"\fIfilename\|\fB"
+.sp 5
+.DE
+.\" .TC 2 1 3 0
diff --git a/share/doc/psd/06.Clang/Makefile b/share/doc/psd/06.Clang/Makefile
new file mode 100644
index 0000000..877a97c
--- /dev/null
+++ b/share/doc/psd/06.Clang/Makefile
@@ -0,0 +1,9 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/06.Clang
+SRCS= Clang.ms
+MACROS= -ms
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/12.make/Makefile b/share/doc/psd/12.make/Makefile
new file mode 100644
index 0000000..fdc38a7
--- /dev/null
+++ b/share/doc/psd/12.make/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
+# $FreeBSD$
+
+VOLUME= psd/12.make
+SRCS= stubs tutorial.ms
+MACROS= -ms
+SRCDIR= ${.CURDIR}/../../../../usr.bin/make/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/13.rcs/Makefile b/share/doc/psd/13.rcs/Makefile
new file mode 100644
index 0000000..ed497da
--- /dev/null
+++ b/share/doc/psd/13.rcs/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+SUBDIR= rcs rcs_func
+
+.include <bsd.subdir.mk>
+
diff --git a/share/doc/psd/13.rcs/Makefile.inc b/share/doc/psd/13.rcs/Makefile.inc
new file mode 100644
index 0000000..666dbd8
--- /dev/null
+++ b/share/doc/psd/13.rcs/Makefile.inc
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+VOLUME= psd/13.rcs
+MACROS= -ms
+SRCDIR= ${.CURDIR}/../../../../../gnu/usr.bin/rcs/doc
diff --git a/share/doc/psd/13.rcs/rcs/Makefile b/share/doc/psd/13.rcs/rcs/Makefile
new file mode 100644
index 0000000..6d94aed
--- /dev/null
+++ b/share/doc/psd/13.rcs/rcs/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+SRCS= rcs.ms
+USE_PIC=
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/13.rcs/rcs_func/Makefile b/share/doc/psd/13.rcs/rcs_func/Makefile
new file mode 100644
index 0000000..09e5a9b
--- /dev/null
+++ b/share/doc/psd/13.rcs/rcs_func/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+DOC= rcs_func
+SRCS= rcs_func.ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/15.yacc/Makefile b/share/doc/psd/15.yacc/Makefile
new file mode 100644
index 0000000..4381c98
--- /dev/null
+++ b/share/doc/psd/15.yacc/Makefile
@@ -0,0 +1,16 @@
+# @(#)Makefile 8.1 (Berkeley) 8/14/93
+# $FreeBSD$
+
+VOLUME= psd/15.yacc
+SRCS= stubs ss.. ss0 ss1 ss2 ss3 ss4 ss5 ss6 ss7 ss8 ss9 \
+ ssA ssB ssa ssb ssc ssd
+EXTRA= ref.bib
+MACROS= -ms
+USE_REFER=
+CLEANFILES= stubs
+
+stubs:
+ @(echo .R1; echo database ${.CURDIR}/ref.bib; \
+ echo accumulate; echo .R2) > ${.TARGET}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/15.yacc/ref.bib b/share/doc/psd/15.yacc/ref.bib
new file mode 100644
index 0000000..a1364f6
--- /dev/null
+++ b/share/doc/psd/15.yacc/ref.bib
@@ -0,0 +1,71 @@
+# $FreeBSD$
+
+%T The C Programming Language
+%A B. W. Kernighan
+%A D. M. Ritchie
+%I Prentice-Hall
+%C Englewood Cliffs, New Jersey
+%D 1978
+
+%T LR Parsing
+%A A. V. Aho
+%A S. C. Johnson
+%J Comp. Surveys
+%V 6
+%N 2
+%P 99-124
+%D June 1974
+
+%T Deterministic Parsing of Ambiguous Grammars
+%A A. V. Aho
+%A S. C. Johnson
+%A J. D. Ullman
+%J Comm. Assoc. Comp. Mach.
+%K acm cacm
+%V 18
+%N 8
+%P 441-452
+%D August 1975
+
+%A A. V. Aho
+%A J. D. Ullman
+%T Principles of Compiler Design
+%I Addison-Wesley
+%C Reading, Mass.
+%D 1977
+
+%R Comp. Sci. Tech. Rep. No. 65
+%K CSTR
+%A S. C. Johnson
+%T Lint, a C Program Checker
+%D December 1977
+%O updated version TM 78-1273-3
+%D 1978
+
+%T A Portable Compiler: Theory and Practice
+%A S. C. Johnson
+%J Proc. 5th ACM Symp. on Principles of Programming Languages
+%P 97-104
+%D January 1978
+
+%K cstr
+%R Comp. Sci. Tech. Rep. No. 17
+%I Bell Laboratories
+%C Murray Hill, New Jersey
+%A B. W. Kernighan
+%A L. L. Cherry
+%T A System for Typesetting Mathematics
+%d May 1974, revised April 1977
+%J Comm. Assoc. Comp. Mach.
+%K acm cacm
+%V 18
+%P 151-157
+%D March 1975
+
+%K CSTR
+%R Comp. Sci. Tech. Rep. No. 39
+%I Bell Laboratories
+%C Murray Hill, New Jersey
+%A M. E. Lesk
+%T Lex \(em A Lexical Analyzer Generator
+%D October 1975
diff --git a/share/doc/psd/15.yacc/ss.. b/share/doc/psd/15.yacc/ss..
new file mode 100644
index 0000000..7dd9ea8
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss..
@@ -0,0 +1,94 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss.. 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.EH 'PSD:15-%''Yacc: Yet Another Compiler-Compiler'
+.OH 'Yacc: Yet Another Compiler-Compiler''PSD:15-%'
+.\".RP
+.ND "July 31, 1978"
+.TL
+Yacc:
+Yet Another Compiler-Compiler
+.AU "MH 2C-559" 3968
+Stephen C. Johnson
+AT&T Bell Laboratories
+Murray Hill, New Jersey 07974
+.AI
+.AB
+.PP
+Computer program input generally has some structure;
+in fact, every computer program that does input can be thought of as defining
+an ``input language'' which it accepts.
+An input language may be as complex as a programming language, or as simple as
+a sequence of numbers.
+Unfortunately, usual input facilities
+are limited, difficult to use,
+and often are lax about checking their inputs for validity.
+.PP
+Yacc provides a general tool for describing
+the input to a computer program.
+The Yacc user specifies the structures
+of his input, together with code to be invoked as
+each such structure is recognized.
+Yacc turns such a specification into a subroutine that
+handles the input process;
+frequently, it is convenient and appropriate to have most
+of the flow of control in the user's application
+handled by this subroutine.
+.PP
+The input subroutine produced by Yacc calls a user-supplied routine to
+return the next basic input item.
+Thus, the user can specify his input in terms of individual input characters, or
+in terms of higher level constructs such as names and numbers.
+The user-supplied routine may also handle idiomatic features such as
+comment and continuation conventions, which typically defy easy grammatical specification.
+.PP
+Yacc is written in portable C.
+The class of specifications accepted is a very general one: LALR(1)
+grammars with disambiguating rules.
+.PP
+In addition to compilers for C, APL, Pascal, RATFOR, etc., Yacc
+has also been used for less conventional languages,
+including a phototypesetter language, several desk calculator languages, a document retrieval system,
+and a Fortran debugging system.
+.AE
+.\" .OK
+.\"Computer Languages
+.\"Compilers
+.\"Formal Language Theory
+.\" .CS 23 11 34 0 0 8
diff --git a/share/doc/psd/15.yacc/ss0 b/share/doc/psd/15.yacc/ss0
new file mode 100644
index 0000000..223e90fb
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss0
@@ -0,0 +1,238 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss0 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+0: Introduction
+.PP
+Yacc provides a general tool for imposing structure on the input to a computer program.
+The Yacc user prepares a
+specification of the input process; this includes rules
+describing the input structure, code to be invoked when these
+rules are recognized, and a low-level routine to do the
+basic input.
+Yacc then generates a function to control the input process.
+This function, called a
+.I parser ,
+calls the user-supplied low-level input routine
+(the
+.I "lexical analyzer" )
+to pick up the basic items
+(called
+.I tokens )
+from the input stream.
+These tokens are organized according to the input structure rules,
+called
+.I "grammar rules" \|;
+when one of these rules has been recognized,
+then user code supplied for this rule, an
+.I action ,
+is invoked; actions have the ability to return values and
+make use of the values of other actions.
+.PP
+Yacc is written in a portable dialect of C
+.[
+Ritchie Kernighan Language Prentice
+.]
+and the actions, and output subroutine, are in C as well.
+Moreover, many of the syntactic conventions of Yacc follow C.
+.PP
+The heart of the input specification is a collection of grammar rules.
+Each rule describes an allowable structure and gives it a name.
+For example, one grammar rule might be
+.DS
+date : month\_name day \',\' year ;
+.DE
+Here,
+.I date ,
+.I month\_name ,
+.I day ,
+and
+.I year
+represent structures of interest in the input process;
+presumably,
+.I month\_name ,
+.I day ,
+and
+.I year
+are defined elsewhere.
+The comma ``,'' is enclosed in single quotes; this implies that the
+comma is to appear literally in the input.
+The colon and semicolon merely serve as punctuation in the rule, and have
+no significance in controlling the input.
+Thus, with proper definitions, the input
+.DS
+July 4, 1776
+.DE
+might be matched by the above rule.
+.PP
+An important part of the input process is carried out by the
+lexical analyzer.
+This user routine reads the input stream, recognizing the lower level structures,
+and communicates these tokens
+to the parser.
+For historical reasons, a structure recognized by the lexical analyzer is called a
+.I "terminal symbol" ,
+while the structure recognized by the parser is called a
+.I "nonterminal symbol" .
+To avoid confusion, terminal symbols will usually be referred to as
+.I tokens .
+.PP
+There is considerable leeway in deciding whether to recognize structures using the lexical
+analyzer or grammar rules.
+For example, the rules
+.DS
+month\_name : \'J\' \'a\' \'n\' ;
+month\_name : \'F\' \'e\' \'b\' ;
+
+ . . .
+
+month\_name : \'D\' \'e\' \'c\' ;
+.DE
+might be used in the above example.
+The lexical analyzer would only need to recognize individual letters, and
+.I month\_name
+would be a nonterminal symbol.
+Such low-level rules tend to waste time and space, and may
+complicate the specification beyond Yacc's ability to deal with it.
+Usually, the lexical analyzer would
+recognize the month names,
+and return an indication that a
+.I month\_name
+was seen; in this case,
+.I month\_name
+would be a token.
+.PP
+Literal characters such as ``,'' must also be passed through the lexical
+analyzer, and are also considered tokens.
+.PP
+Specification files are very flexible.
+It is realively easy to add to the above example the rule
+.DS
+date : month \'/\' day \'/\' year ;
+.DE
+allowing
+.DS
+7 / 4 / 1776
+.DE
+as a synonym for
+.DS
+July 4, 1776
+.DE
+In most cases, this new rule could be ``slipped in'' to a working system with minimal effort,
+and little danger of disrupting existing input.
+.PP
+The input being read may not conform to the
+specifications.
+These input errors are detected as early as is theoretically possible with a
+left-to-right scan;
+thus, not only is the chance of reading and computing with bad
+input data substantially reduced, but the bad data can usually be quickly found.
+Error handling,
+provided as part of the input specifications,
+permits the reentry of bad data,
+or the continuation of the input process after skipping over the bad data.
+.PP
+In some cases, Yacc fails to produce a parser when given a set of
+specifications.
+For example, the specifications may be self contradictory, or they may
+require a more powerful recognition mechanism than that available to Yacc.
+The former cases represent design errors;
+the latter cases
+can often be corrected
+by making
+the lexical analyzer
+more powerful, or by rewriting some of the grammar rules.
+While Yacc cannot handle all possible specifications, its power
+compares favorably with similar systems;
+moreover, the
+constructions which are difficult for Yacc to handle are
+also frequently difficult for human beings to handle.
+Some users have reported that the discipline of formulating valid
+Yacc specifications for their input revealed errors of
+conception or design early in the program development.
+.PP
+The theory underlying Yacc has been described elsewhere.
+.[
+Aho Johnson Surveys LR Parsing
+.]
+.[
+Aho Johnson Ullman Ambiguous Grammars
+.]
+.[
+Aho Ullman Principles Compiler Design
+.]
+Yacc has been extensively used in numerous practical applications,
+including
+.I lint ,
+.[
+Johnson Lint
+.]
+the Portable C Compiler,
+.[
+Johnson Portable Compiler Theory
+.]
+and a system for typesetting mathematics.
+.[
+Kernighan Cherry typesetting system CACM
+.]
+.PP
+The next several sections describe the
+basic process of preparing a Yacc specification;
+Section 1 describes the preparation of grammar rules,
+Section 2 the preparation of the user supplied actions associated with these rules,
+and Section 3 the preparation of lexical analyzers.
+Section 4 describes the operation of the parser.
+Section 5 discusses various reasons why Yacc may be unable to produce a
+parser from a specification, and what to do about it.
+Section 6 describes a simple mechanism for
+handling operator precedences in arithmetic expressions.
+Section 7 discusses error detection and recovery.
+Section 8 discusses the operating environment and special features
+of the parsers Yacc produces.
+Section 9 gives some suggestions which should improve the
+style and efficiency of the specifications.
+Section 10 discusses some advanced topics, and Section 11 gives
+acknowledgements.
+Appendix A has a brief example, and Appendix B gives a
+summary of the Yacc input syntax.
+Appendix C gives an example using some of the more advanced
+features of Yacc, and, finally,
+Appendix D describes mechanisms and syntax
+no longer actively supported, but
+provided for historical continuity with older versions of Yacc.
diff --git a/share/doc/psd/15.yacc/ss1 b/share/doc/psd/15.yacc/ss1
new file mode 100644
index 0000000..f9369fb
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss1
@@ -0,0 +1,175 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss1 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.tr *\(**
+.tr |\(or
+.SH
+1: Basic Specifications
+.PP
+Names refer to either tokens or nonterminal symbols.
+Yacc requires
+token names to be declared as such.
+In addition, for reasons discussed in Section 3, it is often desirable
+to include the lexical analyzer as part of the specification file;
+it may be useful to include other programs as well.
+Thus, every specification file consists of three sections:
+the
+.I declarations ,
+.I "(grammar) rules" ,
+and
+.I programs .
+The sections are separated by double percent ``%%'' marks.
+(The percent ``%'' is generally used in Yacc specifications as an escape character.)
+.PP
+In other words, a full specification file looks like
+.DS
+declarations
+%%
+rules
+%%
+programs
+.DE
+.PP
+The declaration section may be empty.
+Moreover, if the programs section is omitted, the second %% mark may be omitted also;
+thus, the smallest legal Yacc specification is
+.DS
+%%
+rules
+.DE
+.PP
+Blanks, tabs, and newlines are ignored except
+that they may not appear in names or multi-character reserved symbols.
+Comments may appear wherever a name is legal; they are enclosed
+in /* . . . */, as in C and PL/I.
+.PP
+The rules section is made up of one or more grammar rules.
+A grammar rule has the form:
+.DS
+A : BODY ;
+.DE
+A represents a nonterminal name, and BODY represents a sequence of zero or more names and literals.
+The colon and the semicolon are Yacc punctuation.
+.PP
+Names may be of arbitrary length, and may be made up of letters, dot ``.'', underscore ``\_'', and
+non-initial digits.
+Upper and lower case letters are distinct.
+The names used in the body of a grammar rule may represent tokens or nonterminal symbols.
+.PP
+A literal consists of a character enclosed in single quotes ``\'''.
+As in C, the backslash ``\e'' is an escape character within literals, and all the C escapes
+are recognized.
+Thus
+.DS
+\'\en\' newline
+\'\er\' return
+\'\e\'\' single quote ``\'''
+\'\e\e\' backslash ``\e''
+\'\et\' tab
+\'\eb\' backspace
+\'\ef\' form feed
+\'\exxx\' ``xxx'' in octal
+.DE
+For a number of technical reasons, the
+\s-2NUL\s0
+character (\'\e0\' or 0) should never
+be used in grammar rules.
+.PP
+If there are several grammar rules with the same left hand side, the vertical bar ``|''
+can be used to avoid rewriting the left hand side.
+In addition,
+the semicolon at the end of a rule can be dropped before a vertical bar.
+Thus the grammar rules
+.DS
+A : B C D ;
+A : E F ;
+A : G ;
+.DE
+can be given to Yacc as
+.DS
+A : B C D
+ | E F
+ | G
+ ;
+.DE
+It is not necessary that all grammar rules with the same left side appear together in the grammar rules section,
+although it makes the input much more readable, and easier to change.
+.PP
+If a nonterminal symbol matches the empty string, this can be indicated in the obvious way:
+.DS
+empty : ;
+.DE
+.PP
+Names representing tokens must be declared; this is most simply done by writing
+.DS
+%token name1 name2 . . .
+.DE
+in the declarations section.
+(See Sections 3 , 5, and 6 for much more discussion).
+Every name not defined in the declarations section is assumed to represent a nonterminal symbol.
+Every nonterminal symbol must appear on the left side of at least one rule.
+.PP
+Of all the nonterminal symbols, one, called the
+.I "start symbol" ,
+has particular importance.
+The parser is designed to recognize the start symbol; thus,
+this symbol represents the largest,
+most general structure described by the grammar rules.
+By default,
+the start symbol is taken to be the left hand side of the first
+grammar rule in the rules section.
+It is possible, and in fact desirable, to declare the start
+symbol explicitly in the declarations section using the %start keyword:
+.DS
+%start symbol
+.DE
+.PP
+The end of the input to the parser is signaled by a special token, called the
+.I endmarker .
+If the tokens up to, but not including, the endmarker form a structure
+which matches the start symbol, the parser function returns to its caller
+after the endmarker is seen; it
+.I accepts
+the input.
+If the endmarker is seen in any other context, it is an error.
+.PP
+It is the job of the user-supplied lexical analyzer
+to return the endmarker when appropriate; see section 3, below.
+Usually the endmarker represents some reasonably obvious
+I/O status, such as ``end-of-file'' or ``end-of-record''.
diff --git a/share/doc/psd/15.yacc/ss2 b/share/doc/psd/15.yacc/ss2
new file mode 100644
index 0000000..f1fdb44
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss2
@@ -0,0 +1,190 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss2 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+2: Actions
+.PP
+With each grammar rule, the user may associate actions to be performed each time
+the rule is recognized in the input process.
+These actions may return values, and may obtain the values returned by previous
+actions.
+Moreover, the lexical analyzer can return values
+for tokens, if desired.
+.PP
+An action is an arbitrary C statement, and as such can do
+input and output, call subprograms, and alter
+external vectors and variables.
+An action is specified by
+one or more statements, enclosed in curly braces ``{'' and ``}''.
+For example,
+.DS
+A : \'(\' B \')\'
+ { hello( 1, "abc" ); }
+.DE
+and
+.DS
+XXX : YYY ZZZ
+ { printf("a message\en");
+ flag = 25; }
+.DE
+are grammar rules with actions.
+.PP
+To facilitate easy communication between the actions and the parser, the action statements are altered
+slightly.
+The symbol ``dollar sign'' ``$'' is used as a signal to Yacc in this context.
+.PP
+To return a value, the action normally sets the
+pseudo-variable ``$$'' to some value.
+For example, an action that does nothing but return the value 1 is
+.DS
+ { $$ = 1; }
+.DE
+.PP
+To obtain the values returned by previous actions and the lexical analyzer, the
+action may use the pseudo-variables $1, $2, . . .,
+which refer to the values returned by the
+components of the right side of a rule, reading from left to right.
+Thus, if the rule is
+.DS
+A : B C D ;
+.DE
+for example, then $2 has the value returned by C, and $3 the value returned by D.
+.PP
+As a more concrete example, consider the rule
+.DS
+expr : \'(\' expr \')\' ;
+.DE
+The value returned by this rule is usually the value of the
+.I expr
+in parentheses.
+This can be indicated by
+.DS
+expr : \'(\' expr \')\' { $$ = $2 ; }
+.DE
+.PP
+By default, the value of a rule is the value of the first element in it ($1).
+Thus, grammar rules of the form
+.DS
+A : B ;
+.DE
+frequently need not have an explicit action.
+.PP
+In the examples above, all the actions came at the end of their rules.
+Sometimes, it is desirable to get control before a rule is fully parsed.
+Yacc permits an action to be written in the middle of a rule as well
+as at the end.
+This rule is assumed to return a value, accessible
+.\" XXX What does this mean? Nobody seems to understand it.
+.\" through the usual \$ mechanism by the actions to
+through the usual mechanism by the actions to
+the right of it.
+In turn, it may access the values
+returned by the symbols to its left.
+Thus, in the rule
+.DS
+A : B
+ { $$ = 1; }
+ C
+ { x = $2; y = $3; }
+ ;
+.DE
+the effect is to set
+.I x
+to 1, and
+.I y
+to the value returned by C.
+.PP
+Actions that do not terminate a rule are actually
+handled by Yacc by manufacturing a new nonterminal
+symbol name, and a new rule matching this
+name to the empty string.
+The interior action is the action triggered off by recognizing
+this added rule.
+Yacc actually treats the above example as if
+it had been written:
+.DS
+$ACT : /* empty */
+ { $$ = 1; }
+ ;
+
+A : B $ACT C
+ { x = $2; y = $3; }
+ ;
+.DE
+.PP
+In many applications, output is not done directly by the actions;
+rather, a data structure, such as a parse tree, is constructed in memory,
+and transformations are applied to it before output is generated.
+Parse trees are particularly easy to
+construct, given routines to build and maintain the tree
+structure desired.
+For example, suppose there is a C function
+.I node ,
+written so that the call
+.DS
+node( L, n1, n2 )
+.DE
+creates a node with label L, and descendants n1 and n2, and returns the index of
+the newly created node.
+Then parse tree can be built by supplying actions such as:
+.DS
+expr : expr \'+\' expr
+ { $$ = node( \'+\', $1, $3 ); }
+.DE
+in the specification.
+.PP
+The user may define other variables to be used by the actions.
+Declarations and definitions can appear in
+the declarations section,
+enclosed in the marks ``%{'' and ``%}''.
+These declarations and definitions have global scope,
+so they are known to the action statements and the lexical analyzer.
+For example,
+.DS
+%{ int variable = 0; %}
+.DE
+could be placed in the declarations section,
+making
+.I variable
+accessible to all of the actions.
+The Yacc parser uses only names beginning in ``yy'';
+the user should avoid such names.
+.PP
+In these examples, all the values are integers: a discussion of
+values of other types will be found in Section 10.
diff --git a/share/doc/psd/15.yacc/ss3 b/share/doc/psd/15.yacc/ss3
new file mode 100644
index 0000000..fa06acb
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss3
@@ -0,0 +1,141 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss3 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+3: Lexical Analysis
+.PP
+The user must supply a lexical analyzer to read the input stream and communicate tokens
+(with values, if desired) to the parser.
+The lexical analyzer is an integer-valued function called
+.I yylex .
+The function returns an integer, the
+.I "token number" ,
+representing the kind of token read.
+If there is a value associated with that token, it should be assigned
+to the external variable
+.I yylval .
+.PP
+The parser and the lexical analyzer must agree on these token numbers in order for
+communication between them to take place.
+The numbers may be chosen by Yacc, or chosen by the user.
+In either case, the ``# define'' mechanism of C is used to allow the lexical analyzer
+to return these numbers symbolically.
+For example, suppose that the token name DIGIT has been defined in the declarations section of the
+Yacc specification file.
+The relevant portion of the lexical analyzer might look like:
+.DS
+yylex(){
+ extern int yylval;
+ int c;
+ . . .
+ c = getchar();
+ . . .
+ switch( c ) {
+ . . .
+ case \'0\':
+ case \'1\':
+ . . .
+ case \'9\':
+ yylval = c\-\'0\';
+ return( DIGIT );
+ . . .
+ }
+ . . .
+.DE
+.PP
+The intent is to return a token number of DIGIT, and a value equal to the numerical value of the
+digit.
+Provided that the lexical analyzer code is placed in the programs section of the specification file,
+the identifier DIGIT will be defined as the token number associated
+with the token DIGIT.
+.PP
+This mechanism leads to clear,
+easily modified lexical analyzers; the only pitfall is the need
+to avoid using any token names in the grammar that are reserved
+or significant in C or the parser; for example, the use of
+token names
+.I if
+or
+.I while
+will almost certainly cause severe
+difficulties when the lexical analyzer is compiled.
+The token name
+.I error
+is reserved for error handling, and should not be used naively
+(see Section 7).
+.PP
+As mentioned above, the token numbers may be chosen by Yacc or by the user.
+In the default situation, the numbers are chosen by Yacc.
+The default token number for a literal
+character is the numerical value of the character in the local character set.
+Other names are assigned token numbers
+starting at 257.
+.PP
+To assign a token number to a token (including literals),
+the first appearance of the token name or literal
+.I
+in the declarations section
+.R
+can be immediately followed by
+a nonnegative integer.
+This integer is taken to be the token number of the name or literal.
+Names and literals not defined by this mechanism retain their default definition.
+It is important that all token numbers be distinct.
+.PP
+For historical reasons, the endmarker must have token
+number 0 or negative.
+This token number cannot be redefined by the user; thus, all
+lexical analyzers should be prepared to return 0 or negative as a token number
+upon reaching the end of their input.
+.PP
+A very useful tool for constructing lexical analyzers is
+the
+.I Lex
+program developed by Mike Lesk.
+.[
+Lesk Lex
+.]
+These lexical analyzers are designed to work in close
+harmony with Yacc parsers.
+The specifications for these lexical analyzers
+use regular expressions instead of grammar rules.
+Lex can be easily used to produce quite complicated lexical analyzers,
+but there remain some languages (such as FORTRAN) which do not
+fit any theoretical framework, and whose lexical analyzers
+must be crafted by hand.
diff --git a/share/doc/psd/15.yacc/ss4 b/share/doc/psd/15.yacc/ss4
new file mode 100644
index 0000000..e548d53
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss4
@@ -0,0 +1,367 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss4 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+4: How the Parser Works
+.PP
+Yacc turns the specification file into a C program, which
+parses the input according to the specification given.
+The algorithm used to go from the
+specification to the parser is complex, and will not be discussed
+here (see
+the references for more information).
+The parser itself, however, is relatively simple,
+and understanding how it works, while
+not strictly necessary, will nevertheless make
+treatment of error recovery and ambiguities much more
+comprehensible.
+.PP
+The parser produced by Yacc consists
+of a finite state machine with a stack.
+The parser is also capable of reading and remembering the next
+input token (called the
+.I lookahead
+token).
+The
+.I "current state"
+is always the one on the top of the stack.
+The states of the finite state machine are given
+small integer labels; initially, the machine is in state 0,
+the stack contains only state 0, and no lookahead token has been read.
+.PP
+The machine has only four actions available to it, called
+.I shift ,
+.I reduce ,
+.I accept ,
+and
+.I error .
+A move of the parser is done as follows:
+.IP 1.
+Based on its current state, the parser decides
+whether it needs a lookahead token to decide
+what action should be done; if it needs one, and does
+not have one, it calls
+.I yylex
+to obtain the next token.
+.IP 2.
+Using the current state, and the lookahead token
+if needed, the parser decides on its next action, and
+carries it out.
+This may result in states being pushed onto the stack, or popped off of
+the stack, and in the lookahead token being processed
+or left alone.
+.PP
+The
+.I shift
+action is the most common action the parser takes.
+Whenever a shift action is taken, there is always
+a lookahead token.
+For example, in state 56 there may be
+an action:
+.DS
+ IF shift 34
+.DE
+which says, in state 56, if the lookahead token is IF,
+the current state (56) is pushed down on the stack,
+and state 34 becomes the current state (on the
+top of the stack).
+The lookahead token is cleared.
+.PP
+The
+.I reduce
+action keeps the stack from growing without
+bounds.
+Reduce actions are appropriate when the parser has seen
+the right hand side of a grammar rule,
+and is prepared to announce that it has seen
+an instance of the rule, replacing the right hand side
+by the left hand side.
+It may be necessary to consult the lookahead token
+to decide whether to reduce, but
+usually it is not; in fact, the default
+action (represented by a ``.'') is often a reduce action.
+.PP
+Reduce actions are associated with individual grammar rules.
+Grammar rules are also given small integer
+numbers, leading to some confusion.
+The action
+.DS
+ \fB.\fR reduce 18
+.DE
+refers to
+.I "grammar rule"
+18, while the action
+.DS
+ IF shift 34
+.DE
+refers to
+.I state
+34.
+.PP
+Suppose the rule being reduced is
+.DS
+A \fB:\fR x y z ;
+.DE
+The reduce action depends on the
+left hand symbol (A in this case), and the number of
+symbols on the right hand side (three in this case).
+To reduce, first pop off the top three states
+from the stack
+(In general, the number of states popped equals the number of symbols on the
+right side of the rule).
+In effect, these states were the ones
+put on the stack while recognizing
+.I x ,
+.I y ,
+and
+.I z ,
+and no longer serve any useful purpose.
+After popping these states, a state is uncovered
+which was the state the parser was in before beginning to
+process the rule.
+Using this uncovered state, and the symbol
+on the left side of the rule, perform what is in
+effect a shift of A.
+A new state is obtained, pushed onto the stack, and parsing continues.
+There are significant differences between the processing of
+the left hand symbol and an ordinary shift of a token,
+however, so this action is called a
+.I goto
+action.
+In particular, the lookahead token is cleared by a shift, and
+is not affected by a goto.
+In any case, the uncovered state contains an entry such as:
+.DS
+ A goto 20
+.DE
+causing state 20 to be pushed
+onto the stack, and become the current state.
+.PP
+In effect, the reduce action ``turns back the clock'' in the parse,
+popping the states off the stack to go back to the
+state where the right hand side of the rule was first seen.
+The parser then behaves as if it had seen the left side at that time.
+If the right hand side of the rule is empty,
+no states are popped off of the stack: the uncovered state
+is in fact the current state.
+.PP
+The reduce action is also important in the treatment of user-supplied
+actions and values.
+When a rule is reduced, the code supplied with the rule is executed
+before the stack is adjusted.
+In addition to the stack holding the states, another stack,
+running in parallel with it, holds the values returned
+from the lexical analyzer and the actions.
+When a shift takes place, the external variable
+.I yylval
+is copied onto the value stack.
+After the return from the user code, the reduction is carried out.
+When the
+.I goto
+action is done, the external variable
+.I yyval
+is copied onto the value stack.
+The pseudo-variables $1, $2, etc., refer to the value stack.
+.PP
+The other two parser actions are conceptually much simpler.
+The
+.I accept
+action indicates that the entire input has been seen and
+that it matches the specification.
+This action appears only when the lookahead token is
+the endmarker, and indicates that the parser has successfully
+done its job.
+The
+.I error
+action, on the other hand, represents a place where the parser
+can no longer continue parsing according to the specification.
+The input tokens it has seen, together with the lookahead token,
+cannot be followed by anything that would result
+in a legal input.
+The parser reports an error, and attempts to recover the situation and
+resume parsing: the error recovery (as opposed to the detection of error)
+will be covered in Section 7.
+.PP
+It is time for an example!
+Consider the specification
+.DS
+%token DING DONG DELL
+%%
+rhyme : sound place
+ ;
+sound : DING DONG
+ ;
+place : DELL
+ ;
+.DE
+.PP
+When Yacc is invoked with the
+.B \-v
+option, a file called
+.I y.output
+is produced, with a human-readable description of the parser.
+The
+.I y.output
+file corresponding to the above grammar (with some statistics
+stripped off the end) is:
+.DS
+state 0
+ $accept : \_rhyme $end
+
+ DING shift 3
+ . error
+
+ rhyme goto 1
+ sound goto 2
+
+state 1
+ $accept : rhyme\_$end
+
+ $end accept
+ . error
+
+state 2
+ rhyme : sound\_place
+
+ DELL shift 5
+ . error
+
+ place goto 4
+
+state 3
+ sound : DING\_DONG
+
+ DONG shift 6
+ . error
+
+state 4
+ rhyme : sound place\_ (1)
+
+ . reduce 1
+
+state 5
+ place : DELL\_ (3)
+
+ . reduce 3
+
+state 6
+ sound : DING DONG\_ (2)
+
+ . reduce 2
+.DE
+Notice that, in addition to the actions for each state, there is a
+description of the parsing rules being processed in each
+state. The \_ character is used to indicate
+what has been seen, and what is yet to come, in each rule.
+Suppose the input is
+.DS
+DING DONG DELL
+.DE
+It is instructive to follow the steps of the parser while
+processing this input.
+.PP
+Initially, the current state is state 0.
+The parser needs to refer to the input in order to decide
+between the actions available in state 0, so
+the first token,
+.I DING ,
+is read, becoming the lookahead token.
+The action in state 0 on
+.I DING
+is
+is ``shift 3'', so state 3 is pushed onto the stack,
+and the lookahead token is cleared.
+State 3 becomes the current state.
+The next token,
+.I DONG ,
+is read, becoming the lookahead token.
+The action in state 3 on the token
+.I DONG
+is ``shift 6'',
+so state 6 is pushed onto the stack, and the lookahead is cleared.
+The stack now contains 0, 3, and 6.
+In state 6, without even consulting the lookahead,
+the parser reduces by rule 2.
+.DS
+ sound : DING DONG
+.DE
+This rule has two symbols on the right hand side, so
+two states, 6 and 3, are popped off of the stack, uncovering state 0.
+Consulting the description of state 0, looking for a goto on
+.I sound ,
+.DS
+ sound goto 2
+.DE
+is obtained; thus state 2 is pushed onto the stack,
+becoming the current state.
+.PP
+In state 2, the next token,
+.I DELL ,
+must be read.
+The action is ``shift 5'', so state 5 is pushed onto the stack, which now has
+0, 2, and 5 on it, and the lookahead token is cleared.
+In state 5, the only action is to reduce by rule 3.
+This has one symbol on the right hand side, so one state, 5,
+is popped off, and state 2 is uncovered.
+The goto in state 2 on
+.I place ,
+the left side of rule 3,
+is state 4.
+Now, the stack contains 0, 2, and 4.
+In state 4, the only action is to reduce by rule 1.
+There are two symbols on the right, so the top two states are popped off,
+uncovering state 0 again.
+In state 0, there is a goto on
+.I rhyme
+causing the parser to enter state 1.
+In state 1, the input is read; the endmarker is obtained,
+indicated by ``$end'' in the
+.I y.output
+file.
+The action in state 1 when the endmarker is seen is to accept,
+successfully ending the parse.
+.PP
+The reader is urged to consider how the parser works
+when confronted with such incorrect strings as
+.I "DING DONG DONG" ,
+.I "DING DONG" ,
+.I "DING DONG DELL DELL" ,
+etc.
+A few minutes spend with this and other simple examples will
+probably be repaid when problems arise in more complicated contexts.
diff --git a/share/doc/psd/15.yacc/ss5 b/share/doc/psd/15.yacc/ss5
new file mode 100644
index 0000000..e2c3462
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss5
@@ -0,0 +1,339 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss5 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+5: Ambiguity and Conflicts
+.PP
+A set of grammar rules is
+.I ambiguous
+if there is some input string that can be structured in two or more different ways.
+For example, the grammar rule
+.DS
+expr : expr \'\-\' expr
+.DE
+is a natural way of expressing the fact that one way of forming an arithmetic expression
+is to put two other expressions together with a minus sign between them.
+Unfortunately, this grammar rule does not
+completely specify the way that all complex inputs
+should be structured.
+For example, if the input is
+.DS
+expr \- expr \- expr
+.DE
+the rule allows this input to be structured as either
+.DS
+( expr \- expr ) \- expr
+.DE
+or as
+.DS
+expr \- ( expr \- expr )
+.DE
+(The first is called
+.I "left association" ,
+the second
+.I "right association" ).
+.PP
+Yacc detects such ambiguities when it is attempting to build the parser.
+It is instructive to consider the problem that confronts the parser when it is
+given an input such as
+.DS
+expr \- expr \- expr
+.DE
+When the parser has read the second expr, the input that it has seen:
+.DS
+expr \- expr
+.DE
+matches the right side of the grammar rule above.
+The parser could
+.I reduce
+the input by applying this rule;
+after applying the rule;
+the input is reduced to
+.I expr (the
+left side of the rule).
+The parser would then read the final part of the input:
+.DS
+\- expr
+.DE
+and again reduce.
+The effect of this is to take the left associative interpretation.
+.PP
+Alternatively, when the parser has seen
+.DS
+expr \- expr
+.DE
+it could defer the immediate application of the rule, and continue reading
+the input until it had seen
+.DS
+expr \- expr \- expr
+.DE
+It could then apply the rule to the rightmost three symbols, reducing them to
+.I expr
+and leaving
+.DS
+expr \- expr
+.DE
+Now the rule can be reduced once more; the effect is to
+take the right associative interpretation.
+Thus, having read
+.DS
+expr \- expr
+.DE
+the parser can do two legal things, a shift or a reduction, and has no way of
+deciding between them.
+This is called a
+.I "shift / reduce conflict" .
+It may also happen that the parser has a choice of two legal reductions;
+this is called a
+.I "reduce / reduce conflict" .
+Note that there are never any ``Shift/shift'' conflicts.
+.PP
+When there are shift/reduce or reduce/reduce conflicts, Yacc still produces a parser.
+It does this by selecting one of the valid steps wherever it has a choice.
+A rule describing which choice to make in a given situation is called
+a
+.I "disambiguating rule" .
+.PP
+Yacc invokes two disambiguating rules by default:
+.IP 1.
+In a shift/reduce conflict, the default is to do the shift.
+.IP 2.
+In a reduce/reduce conflict, the default is to reduce by the
+.I earlier
+grammar rule (in the input sequence).
+.PP
+Rule 1 implies that reductions are deferred whenever there is a choice,
+in favor of shifts.
+Rule 2 gives the user rather crude control over the behavior of the parser
+in this situation, but reduce/reduce conflicts should be avoided whenever possible.
+.PP
+Conflicts may arise because of mistakes in input or logic, or because the grammar rules, while consistent,
+require a more complex parser than Yacc can construct.
+The use of actions within rules can also cause conflicts, if the action must
+be done before the parser can be sure which rule is being recognized.
+In these cases, the application of disambiguating rules is inappropriate,
+and leads to an incorrect parser.
+For this reason, Yacc
+always reports the number of shift/reduce and reduce/reduce conflicts resolved by Rule 1 and Rule 2.
+.PP
+In general, whenever it is possible to apply disambiguating rules to produce a correct parser, it is also
+possible to rewrite the grammar rules so that the same inputs are read but there are no
+conflicts.
+For this reason, most previous parser generators
+have considered conflicts to be fatal errors.
+Our experience has suggested that this rewriting is somewhat unnatural,
+and produces slower parsers; thus, Yacc will produce parsers even in the presence of conflicts.
+.PP
+As an example of the power of disambiguating rules, consider a fragment from a programming
+language involving an ``if-then-else'' construction:
+.DS
+stat : IF \'(\' cond \')\' stat
+ | IF \'(\' cond \')\' stat ELSE stat
+ ;
+.DE
+In these rules,
+.I IF
+and
+.I ELSE
+are tokens,
+.I cond
+is a nonterminal symbol describing
+conditional (logical) expressions, and
+.I stat
+is a nonterminal symbol describing statements.
+The first rule will be called the
+.ul
+simple-if
+rule, and the
+second the
+.ul
+if-else
+rule.
+.PP
+These two rules form an ambiguous construction, since input of the form
+.DS
+IF ( C1 ) IF ( C2 ) S1 ELSE S2
+.DE
+can be structured according to these rules in two ways:
+.DS
+IF ( C1 ) {
+ IF ( C2 ) S1
+ }
+ELSE S2
+.DE
+or
+.DS
+IF ( C1 ) {
+ IF ( C2 ) S1
+ ELSE S2
+ }
+.DE
+The second interpretation is the one given in most programming languages
+having this construct.
+Each
+.I ELSE
+is associated with the last preceding
+``un-\fIELSE'\fRd''
+.I IF .
+In this example, consider the situation where the parser has seen
+.DS
+IF ( C1 ) IF ( C2 ) S1
+.DE
+and is looking at the
+.I ELSE .
+It can immediately
+reduce
+by the simple-if rule to get
+.DS
+IF ( C1 ) stat
+.DE
+and then read the remaining input,
+.DS
+ELSE S2
+.DE
+and reduce
+.DS
+IF ( C1 ) stat ELSE S2
+.DE
+by the if-else rule.
+This leads to the first of the above groupings of the input.
+.PP
+On the other hand, the
+.I ELSE
+may be shifted,
+.I S2
+read, and then the right hand portion of
+.DS
+IF ( C1 ) IF ( C2 ) S1 ELSE S2
+.DE
+can be reduced by the if-else rule to get
+.DS
+IF ( C1 ) stat
+.DE
+which can be reduced by the simple-if rule.
+This leads to the second of the above groupings of the input, which
+is usually desired.
+.PP
+Once again the parser can do two valid things \- there is a shift/reduce conflict.
+The application of disambiguating rule 1 tells the parser to shift in this case,
+which leads to the desired grouping.
+.PP
+This shift/reduce conflict arises only when there is a particular current input symbol,
+.I ELSE ,
+and particular inputs already seen, such as
+.DS
+IF ( C1 ) IF ( C2 ) S1
+.DE
+In general, there may be many conflicts, and each one
+will be associated with an input symbol and
+a set of previously read inputs.
+The previously read inputs are characterized by the
+state
+of the parser.
+.PP
+The conflict messages of Yacc are best understood
+by examining the verbose (\fB\-v\fR) option output file.
+For example, the output corresponding to the above
+conflict state might be:
+.DS L
+23: shift/reduce conflict (shift 45, reduce 18) on ELSE
+
+state 23
+
+ stat : IF ( cond ) stat\_ (18)
+ stat : IF ( cond ) stat\_ELSE stat
+
+ ELSE shift 45
+ . reduce 18
+
+.DE
+The first line describes the conflict, giving the state and the input symbol.
+The ordinary state description follows, giving
+the grammar rules active in the state, and the parser actions.
+Recall that the underline marks the
+portion of the grammar rules which has been seen.
+Thus in the example, in state 23 the parser has seen input corresponding
+to
+.DS
+IF ( cond ) stat
+.DE
+and the two grammar rules shown are active at this time.
+The parser can do two possible things.
+If the input symbol is
+.I ELSE ,
+it is possible to shift into state
+45.
+State 45 will have, as part of its description, the line
+.DS
+stat : IF ( cond ) stat ELSE\_stat
+.DE
+since the
+.I ELSE
+will have been shifted in this state.
+Back in state 23, the alternative action, described by ``\fB.\fR'',
+is to be done if the input symbol is not mentioned explicitly in the above actions; thus,
+in this case, if the input symbol is not
+.I ELSE ,
+the parser reduces by grammar rule 18:
+.DS
+stat : IF \'(\' cond \')\' stat
+.DE
+Once again, notice that the numbers following ``shift'' commands refer to other states,
+while the numbers following ``reduce'' commands refer to grammar
+rule numbers.
+In the
+.I y.output
+file, the rule numbers are printed after those rules which can be reduced.
+In most one states, there will be at most reduce action possible in the
+state, and this will be the default command.
+The user who encounters unexpected shift/reduce conflicts will probably want to
+look at the verbose output to decide whether the default actions are appropriate.
+In really tough cases, the user might need to know more about
+the behavior and construction of the parser than can be covered here.
+In this case, one of the theoretical references
+.[
+Aho Johnson Surveys Parsing
+.]
+.[
+Aho Johnson Ullman Deterministic Ambiguous
+.]
+.[
+Aho Ullman Principles Design
+.]
+might be consulted; the services of a local guru might also be appropriate.
diff --git a/share/doc/psd/15.yacc/ss6 b/share/doc/psd/15.yacc/ss6
new file mode 100644
index 0000000..513d042
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss6
@@ -0,0 +1,183 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss6 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+6: Precedence
+.PP
+There is one common situation
+where the rules given above for resolving conflicts are not sufficient;
+this is in the parsing of arithmetic expressions.
+Most of the commonly used constructions for arithmetic expressions can be naturally
+described by the notion of
+.I precedence
+levels for operators, together with information about left
+or right associativity.
+It turns out that ambiguous grammars with appropriate disambiguating rules
+can be used to create parsers that are faster and easier to
+write than parsers constructed from unambiguous grammars.
+The basic notion is to write grammar rules
+of the form
+.DS
+expr : expr OP expr
+.DE
+and
+.DS
+expr : UNARY expr
+.DE
+for all binary and unary operators desired.
+This creates a very ambiguous grammar, with many parsing conflicts.
+As disambiguating rules, the user specifies the precedence, or binding
+strength, of all the operators, and the associativity
+of the binary operators.
+This information is sufficient to allow Yacc to resolve the parsing conflicts
+in accordance with these rules, and construct a parser that realizes the desired
+precedences and associativities.
+.PP
+The precedences and associativities are attached to tokens in the declarations section.
+This is done by a series of lines beginning with a Yacc keyword: %left, %right,
+or %nonassoc, followed by a list of tokens.
+All of the tokens on the same line are assumed to have the same precedence level
+and associativity; the lines are listed in
+order of increasing precedence or binding strength.
+Thus,
+.DS
+%left \'+\' \'\-\'
+%left \'*\' \'/\'
+.DE
+describes the precedence and associativity of the four arithmetic operators.
+Plus and minus are left associative, and have lower precedence than
+star and slash, which are also left associative.
+The keyword %right is used to describe right associative operators,
+and the keyword %nonassoc is used to describe operators, like
+the operator .LT. in Fortran, that may not associate with themselves; thus,
+.DS
+A .LT. B .LT. C
+.DE
+is illegal in Fortran, and such an operator would be described with the keyword
+%nonassoc in Yacc.
+As an example of the behavior of these declarations, the description
+.DS
+%right \'=\'
+%left \'+\' \'\-\'
+%left \'*\' \'/\'
+
+%%
+
+expr : expr \'=\' expr
+ | expr \'+\' expr
+ | expr \'\-\' expr
+ | expr \'*\' expr
+ | expr \'/\' expr
+ | NAME
+ ;
+.DE
+might be used to structure the input
+.DS
+a = b = c*d \- e \- f*g
+.DE
+as follows:
+.DS
+a = ( b = ( ((c*d)\-e) \- (f*g) ) )
+.DE
+When this mechanism is used,
+unary operators must, in general, be given a precedence.
+Sometimes a unary operator and a binary operator
+have the same symbolic representation, but different precedences.
+An example is unary and binary \'\-\'; unary minus may be given the same
+strength as multiplication, or even higher, while binary minus has a lower strength than
+multiplication.
+The keyword, %prec, changes the precedence level associated with a particular grammar rule.
+%prec appears immediately after the body of the grammar rule, before the action or closing semicolon,
+and is followed by a token name or literal.
+It
+causes the precedence of the grammar rule to become that of the following token name or literal.
+For example, to make unary minus have the same precedence as multiplication the rules might resemble:
+.DS
+%left \'+\' \'\-\'
+%left \'*\' \'/\'
+
+%%
+
+expr : expr \'+\' expr
+ | expr \'\-\' expr
+ | expr \'*\' expr
+ | expr \'/\' expr
+ | \'\-\' expr %prec \'*\'
+ | NAME
+ ;
+.DE
+.PP
+A token declared
+by %left, %right, and %nonassoc need not be, but may be, declared by %token as well.
+.PP
+The precedences and associativities are used by Yacc to
+resolve parsing conflicts; they give rise to disambiguating rules.
+Formally, the rules work as follows:
+.IP 1.
+The precedences and associativities are recorded for those tokens and literals
+that have them.
+.IP 2.
+A precedence and associativity is associated with each grammar rule; it is the precedence
+and associativity of the last token or literal in the body of the rule.
+If the %prec construction is used, it overrides this default.
+Some grammar rules may have no precedence and associativity associated with them.
+.IP 3.
+When there is a reduce/reduce conflict, or there is a shift/reduce conflict
+and either the input symbol or the grammar rule has no precedence and associativity,
+then the two disambiguating rules given at the beginning of the section are used,
+and the conflicts are reported.
+.IP 4.
+If there is a shift/reduce conflict, and both the grammar rule and the input character
+have precedence and associativity associated with them, then the conflict is resolved
+in favor of the action (shift or reduce) associated with the higher precedence.
+If the precedences are the same, then the associativity is used; left
+associative implies reduce, right associative implies shift, and nonassociating
+implies error.
+.PP
+Conflicts resolved by precedence are not counted in the number of shift/reduce and reduce/reduce
+conflicts reported by Yacc.
+This means that mistakes in the specification of precedences may
+disguise errors in the input grammar; it is a good idea to be sparing
+with precedences, and use them in an essentially ``cookbook'' fashion,
+until some experience has been gained.
+The
+.I y.output
+file
+is very useful in deciding whether the parser is actually doing
+what was intended.
diff --git a/share/doc/psd/15.yacc/ss7 b/share/doc/psd/15.yacc/ss7
new file mode 100644
index 0000000..b6440c7
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss7
@@ -0,0 +1,161 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss7 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+7: Error Handling
+.PP
+Error handling is an extremely difficult area, and many of the problems are semantic ones.
+When an error is found, for example, it may be necessary to reclaim parse tree storage,
+delete or alter symbol table entries, and, typically, set switches to avoid generating any further output.
+.PP
+It is seldom acceptable to stop all processing when an error is found; it is more useful to continue
+scanning the input to find further syntax errors.
+This leads to the problem of getting the parser ``restarted'' after an error.
+A general class of algorithms to do this involves discarding a number of tokens
+from the input string, and attempting to adjust the parser so that input can continue.
+.PP
+To allow the user some control over this process,
+Yacc provides a simple, but reasonably general, feature.
+The token name ``error'' is reserved for error handling.
+This name can be used in grammar rules;
+in effect, it suggests places where errors are expected, and recovery might take place.
+The parser pops its stack until it enters a state where the token ``error'' is legal.
+It then behaves as if the token ``error'' were the current lookahead token,
+and performs the action encountered.
+The lookahead token is then reset to the token that caused the error.
+If no special error rules have been specified, the processing halts when an error is detected.
+.PP
+In order to prevent a cascade of error messages, the parser, after
+detecting an error, remains in error state until three tokens have been successfully
+read and shifted.
+If an error is detected when the parser is already in error state,
+no message is given, and the input token is quietly deleted.
+.PP
+As an example, a rule of the form
+.DS
+stat : error
+.DE
+would, in effect, mean that on a syntax error the parser would attempt to skip over the statement
+in which the error was seen.
+More precisely, the parser will
+scan ahead, looking for three tokens that might legally follow
+a statement, and start processing at the first of these; if
+the beginnings of statements are not sufficiently distinctive, it may make a
+false start in the middle of a statement, and end up reporting a
+second error where there is in fact no error.
+.PP
+Actions may be used with these special error rules.
+These actions might attempt to reinitialize tables, reclaim symbol table space, etc.
+.PP
+Error rules such as the above are very general, but difficult to control.
+Somewhat easier are rules such as
+.DS
+stat : error \';\'
+.DE
+Here, when there is an error, the parser attempts to skip over the statement, but
+will do so by skipping to the next \';\'.
+All tokens after the error and before the next \';\' cannot be shifted, and are discarded.
+When the \';\' is seen, this rule will be reduced, and any ``cleanup''
+action associated with it performed.
+.PP
+Another form of error rule arises in interactive applications, where
+it may be desirable to permit a line to be reentered after an error.
+A possible error rule might be
+.DS
+input : error \'\en\' { printf( "Reenter last line: " ); } input
+ { $$ = $4; }
+.DE
+There is one potential difficulty with this approach;
+the parser must correctly process three input tokens before it
+admits that it has correctly resynchronized after the error.
+If the reentered line contains an error
+in the first two tokens, the parser deletes the offending tokens,
+and gives no message; this is clearly unacceptable.
+For this reason, there is a mechanism that
+can be used to force the parser
+to believe that an error has been fully recovered from.
+The statement
+.DS
+yyerrok ;
+.DE
+in an action
+resets the parser to its normal mode.
+The last example is better written
+.DS
+input : error \'\en\'
+ { yyerrok;
+ printf( "Reenter last line: " ); }
+ input
+ { $$ = $4; }
+ ;
+.DE
+.PP
+As mentioned above, the token seen immediately
+after the ``error'' symbol is the input token at which the
+error was discovered.
+Sometimes, this is inappropriate; for example, an
+error recovery action might
+take upon itself the job of finding the correct place to resume input.
+In this case,
+the previous lookahead token must be cleared.
+The statement
+.DS
+yyclearin ;
+.DE
+in an action will have this effect.
+For example, suppose the action after error
+were to call some sophisticated resynchronization routine,
+supplied by the user, that attempted to advance the input to the
+beginning of the next valid statement.
+After this routine was called, the next token returned by yylex would presumably
+be the first token in a legal statement;
+the old, illegal token must be discarded, and the error state reset.
+This could be done by a rule like
+.DS
+stat : error
+ { resynch();
+ yyerrok ;
+ yyclearin ; }
+ ;
+.DE
+.PP
+These mechanisms are admittedly crude, but do allow for a simple, fairly effective recovery of the parser
+from many errors;
+moreover, the user can get control to deal with
+the error actions required by other portions of the program.
diff --git a/share/doc/psd/15.yacc/ss8 b/share/doc/psd/15.yacc/ss8
new file mode 100644
index 0000000..75c66ab
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss8
@@ -0,0 +1,130 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss8 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+8: The Yacc Environment
+.PP
+When the user inputs a specification
+to Yacc, the output is a file of C programs, called
+.I y.tab.c
+on most
+systems
+(due to local file system conventions, the names may differ from
+installation to installation).
+The function produced by Yacc is called
+.I yyparse \|;
+it is an integer valued function.
+When it is called, it in turn repeatedly calls
+.I yylex ,
+the lexical analyzer
+supplied by the user (see Section 3)
+to obtain input tokens.
+Eventually, either an error is detected, in which case
+(if no error recovery is possible)
+.I yyparse
+returns the value 1,
+or the lexical analyzer returns the endmarker token
+and the parser accepts.
+In this case,
+.I yyparse
+returns the value 0.
+.PP
+The user must provide a certain amount of environment for this
+parser in order to obtain a working program.
+For example, as with every C program, a program called
+.I main
+must be defined, that eventually calls
+.I yyparse .
+In addition, a routine called
+.I yyerror
+prints a message
+when a syntax error is detected.
+.PP
+These two routines must be supplied in one form or another by the
+user.
+To ease the initial effort of using Yacc, a library has been
+provided with default versions of
+.I main
+and
+.I yyerror .
+The name of this library is system dependent;
+on many systems the library is accessed by a
+.B \-ly
+argument to the loader.
+To show the triviality of these default programs, the source is
+given below:
+.DS
+main(){
+ return( yyparse() );
+ }
+.DE
+and
+.DS
+# include <stdio.h>
+
+yyerror(s) char *s; {
+ fprintf( stderr, "%s\en", s );
+ }
+.DE
+The argument to
+.I yyerror
+is a string containing an error message, usually
+the string ``syntax error''.
+The average application will want to do better than this.
+Ordinarily, the program should keep track of the input line number, and print it
+along with the message when a syntax error is detected.
+The external integer variable
+.I yychar
+contains the lookahead token number at the time the error was detected;
+this may be of some interest in giving better diagnostics.
+Since the
+.I main
+program is probably supplied by the user (to read arguments, etc.)
+the Yacc library is useful only in small
+projects, or in the earliest stages of larger ones.
+.PP
+The external integer variable
+.I yydebug
+is normally set to 0.
+If it is set to a nonzero value, the parser will output a
+verbose description of its actions, including
+a discussion of which input symbols have been read, and
+what the parser actions are.
+Depending on the operating environment,
+it may be possible to set this variable by using a debugging system.
diff --git a/share/doc/psd/15.yacc/ss9 b/share/doc/psd/15.yacc/ss9
new file mode 100644
index 0000000..9d05fec
--- /dev/null
+++ b/share/doc/psd/15.yacc/ss9
@@ -0,0 +1,206 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ss9 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+9: Hints for Preparing Specifications
+.PP
+This section contains miscellaneous hints on preparing efficient, easy to change,
+and clear specifications.
+The individual subsections are more or less
+independent.
+.SH
+Input Style
+.PP
+It is difficult to
+provide rules with substantial actions
+and still have a readable specification file.
+The following style hints owe much to Brian Kernighan.
+.IP a.
+Use all capital letters for token names, all lower case letters for
+nonterminal names.
+This rule comes under the heading of ``knowing who to blame when
+things go wrong.''
+.IP b.
+Put grammar rules and actions on separate lines.
+This allows either to be changed without
+an automatic need to change the other.
+.IP c.
+Put all rules with the same left hand side together.
+Put the left hand side in only once, and let all
+following rules begin with a vertical bar.
+.IP d.
+Put a semicolon only after the last rule with a given left hand side,
+and put the semicolon on a separate line.
+This allows new rules to be easily added.
+.IP e.
+Indent rule bodies by two tab stops, and action bodies by three
+tab stops.
+.PP
+The example in Appendix A is written following this style, as are
+the examples in the text of this paper (where space permits).
+The user must make up his own mind about these stylistic questions;
+the central problem, however, is to make the rules visible through
+the morass of action code.
+.SH
+Left Recursion
+.PP
+The algorithm used by the Yacc parser encourages so called ``left recursive''
+grammar rules: rules of the form
+.DS
+name : name rest_of_rule ;
+.DE
+These rules frequently arise when
+writing specifications of sequences and lists:
+.DS
+list : item
+ | list \',\' item
+ ;
+.DE
+and
+.DS
+seq : item
+ | seq item
+ ;
+.DE
+In each of these cases, the first rule
+will be reduced for the first item only, and the second rule
+will be reduced for the second and all succeeding items.
+.PP
+With right recursive rules, such as
+.DS
+seq : item
+ | item seq
+ ;
+.DE
+the parser would be a bit bigger, and the items would be seen, and reduced,
+from right to left.
+More seriously, an internal stack in the parser
+would be in danger of overflowing if a very long sequence were read.
+Thus, the user should use left recursion wherever reasonable.
+.PP
+It is worth considering whether a sequence with zero
+elements has any meaning, and if so, consider writing
+the sequence specification with an empty rule:
+.DS
+seq : /* empty */
+ | seq item
+ ;
+.DE
+Once again, the first rule would always be reduced exactly once, before the
+first item was read,
+and then the second rule would be reduced once for each item read.
+Permitting empty sequences
+often leads to increased generality.
+However, conflicts might arise if Yacc is asked to decide
+which empty sequence it has seen, when it hasn't seen enough to
+know!
+.SH
+Lexical Tie-ins
+.PP
+Some lexical decisions depend on context.
+For example, the lexical analyzer might want to
+delete blanks normally, but not within quoted strings.
+Or names might be entered into a symbol table in declarations,
+but not in expressions.
+.PP
+One way of handling this situation is
+to create a global flag that is
+examined by the lexical analyzer, and set by actions.
+For example, suppose a program
+consists of 0 or more declarations, followed by 0 or more statements.
+Consider:
+.DS
+%{
+ int dflag;
+%}
+ ... other declarations ...
+
+%%
+
+prog : decls stats
+ ;
+
+decls : /* empty */
+ { dflag = 1; }
+ | decls declaration
+ ;
+
+stats : /* empty */
+ { dflag = 0; }
+ | stats statement
+ ;
+
+ ... other rules ...
+.DE
+The flag
+.I dflag
+is now 0 when reading statements, and 1 when reading declarations,
+.ul
+except for the first token in the first statement.
+This token must be seen by the parser before it can tell that
+the declaration section has ended and the statements have
+begun.
+In many cases, this single token exception does not
+affect the lexical scan.
+.PP
+This kind of ``backdoor'' approach can be elaborated
+to a noxious degree.
+Nevertheless, it represents a way of doing some things
+that are difficult, if not impossible, to
+do otherwise.
+.SH
+Reserved Words
+.PP
+Some programming languages
+permit the user to
+use words like ``if'', which are normally reserved,
+as label or variable names, provided that such use does not
+conflict with the legal use of these names in the programming language.
+This is extremely hard to do in the framework of Yacc;
+it is difficult to pass information to the lexical analyzer
+telling it ``this instance of `if' is a keyword, and that instance is a variable''.
+The user can make a stab at it, using the
+mechanism described in the last subsection,
+but it is difficult.
+.PP
+A number of ways of making this easier are under advisement.
+Until then, it is better that the keywords be
+.I reserved \|;
+that is, be forbidden for use as variable names.
+There are powerful stylistic reasons for preferring this, anyway.
diff --git a/share/doc/psd/15.yacc/ssA b/share/doc/psd/15.yacc/ssA
new file mode 100644
index 0000000..f6f1702
--- /dev/null
+++ b/share/doc/psd/15.yacc/ssA
@@ -0,0 +1,221 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ssA 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+10: Advanced Topics
+.PP
+This section discusses a number of advanced features
+of Yacc.
+.SH
+Simulating Error and Accept in Actions
+.PP
+The parsing actions of error and accept can be simulated
+in an action by use of macros YYACCEPT and YYERROR.
+YYACCEPT causes
+.I yyparse
+to return the value 0;
+YYERROR causes
+the parser to behave as if the current input symbol
+had been a syntax error;
+.I yyerror
+is called, and error recovery takes place.
+These mechanisms can be used to simulate parsers
+with multiple endmarkers or context-sensitive syntax checking.
+.SH
+Accessing Values in Enclosing Rules.
+.PP
+An action may refer to values
+returned by actions to the left of the current rule.
+The mechanism is simply the same as with ordinary actions,
+a dollar sign followed by a digit, but in this case the
+digit may be 0 or negative.
+Consider
+.DS
+sent : adj noun verb adj noun
+ { \fIlook at the sentence\fR . . . }
+ ;
+
+adj : THE { $$ = THE; }
+ | YOUNG { $$ = YOUNG; }
+ . . .
+ ;
+
+noun : DOG
+ { $$ = DOG; }
+ | CRONE
+ { if( $0 == YOUNG ){
+ printf( "what?\en" );
+ }
+ $$ = CRONE;
+ }
+ ;
+ . . .
+.DE
+In the action following the word CRONE, a check is made that the
+preceding token shifted was not YOUNG.
+Obviously, this is only possible when a great deal is known about
+what might precede the symbol
+.I noun
+in the input.
+There is also a distinctly unstructured flavor about this.
+Nevertheless, at times this mechanism will save a great
+deal of trouble, especially when a few combinations are to
+be excluded from an otherwise regular structure.
+.SH
+Support for Arbitrary Value Types
+.PP
+By default, the values returned by actions and the lexical analyzer are integers.
+Yacc can also support
+values of other types, including structures.
+In addition, Yacc keeps track of the types, and inserts
+appropriate union member names so that the resulting parser will
+be strictly type checked.
+The Yacc value stack (see Section 4)
+is declared to be a
+.I union
+of the various types of values desired.
+The user declares the union, and associates union member names
+to each token and nonterminal symbol having a value.
+When the value is referenced through a $$ or $n construction,
+Yacc will automatically insert the appropriate union name, so that
+no unwanted conversions will take place.
+In addition, type checking commands such as
+.I Lint\|
+.[
+Johnson Lint Checker 1273
+.]
+will be far more silent.
+.PP
+There are three mechanisms used to provide for this typing.
+First, there is a way of defining the union; this must be
+done by the user since other programs, notably the lexical analyzer,
+must know about the union member names.
+Second, there is a way of associating a union member name with tokens
+and nonterminals.
+Finally, there is a mechanism for describing the type of those
+few values where Yacc can not easily determine the type.
+.PP
+To declare the union, the user includes in the declaration section:
+.DS
+%union {
+ body of union ...
+ }
+.DE
+This declares the Yacc value stack,
+and the external variables
+.I yylval
+and
+.I yyval ,
+to have type equal to this union.
+If Yacc was invoked with the
+.B \-d
+option, the union declaration
+is copied onto the
+.I y.tab.h
+file.
+Alternatively,
+the union may be declared in a header file, and a typedef
+used to define the variable YYSTYPE to represent
+this union.
+Thus, the header file might also have said:
+.DS
+typedef union {
+ body of union ...
+ } YYSTYPE;
+.DE
+The header file must be included in the declarations
+section, by use of %{ and %}.
+.PP
+Once YYSTYPE is defined,
+the union member names must be associated
+with the various terminal and nonterminal names.
+The construction
+.DS
+< name >
+.DE
+is used to indicate a union member name.
+If this follows
+one of the
+keywords %token,
+%left, %right, and %nonassoc,
+the union member name is associated with the tokens listed.
+Thus, saying
+.DS
+%left <optype> \'+\' \'\-\'
+.DE
+will cause any reference to values returned by these two tokens to be
+tagged with
+the union member name
+.I optype .
+Another keyword, %type, is
+used similarly to associate
+union member names with nonterminals.
+Thus, one might say
+.DS
+%type <nodetype> expr stat
+.DE
+.PP
+There remain a couple of cases where these mechanisms are insufficient.
+If there is an action within a rule, the value returned
+by this action has no
+.I "a priori"
+type.
+Similarly, reference to left context values (such as $0 \- see the
+previous subsection ) leaves Yacc with no easy way of knowing the type.
+In this case, a type can be imposed on the reference by inserting
+a union member name, between < and >, immediately after
+the first $.
+An example of this usage is
+.DS
+rule : aaa { $<intval>$ = 3; } bbb
+ { fun( $<intval>2, $<other>0 ); }
+ ;
+.DE
+This syntax has little to recommend it, but the situation arises rarely.
+.PP
+A sample specification is given in Appendix C.
+The facilities in this subsection are not triggered until they are used:
+in particular, the use of %type will turn on these mechanisms.
+When they are used, there is a fairly strict level of checking.
+For example, use of $n or $$ to refer to something with no defined type
+is diagnosed.
+If these facilities are not triggered, the Yacc value stack is used to
+hold
+.I int' s,
+as was true historically.
diff --git a/share/doc/psd/15.yacc/ssB b/share/doc/psd/15.yacc/ssB
new file mode 100644
index 0000000..c16bb52
--- /dev/null
+++ b/share/doc/psd/15.yacc/ssB
@@ -0,0 +1,63 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ssB 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+11: Acknowledgements
+.PP
+Yacc owes much to a
+most stimulating collection of users, who have goaded
+me beyond my inclination, and frequently beyond my
+ability, in their endless search for ``one more feature''.
+Their irritating unwillingness to learn how to
+do things my way has usually led to my doing things their way;
+most of the time, they have been right.
+B. W. Kernighan, P. J. Plauger, S. I. Feldman, C. Imagna,
+M. E. Lesk,
+and A. Snyder will recognize some of their ideas in the current version
+of Yacc.
+C. B. Haley contributed to the error recovery algorithm.
+D. M. Ritchie, B. W. Kernighan, and M. O. Harris helped translate this document into English.
+Al Aho also deserves special credit for bringing
+the mountain to Mohammed, and other favors.
+.\" .SG "MH-1273-SCJ-unix"
+.bp
+.[
+$LIST$
+.]
+.bp
diff --git a/share/doc/psd/15.yacc/ssa b/share/doc/psd/15.yacc/ssa
new file mode 100644
index 0000000..17e815e
--- /dev/null
+++ b/share/doc/psd/15.yacc/ssa
@@ -0,0 +1,150 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ssa 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+Appendix A: A Simple Example
+.PP
+This example gives the complete Yacc specification for a small desk calculator;
+the desk calculator has 26 registers, labeled ``a'' through ``z'', and accepts
+arithmetic expressions made up of the operators +, \-, *, /,
+% (mod operator), & (bitwise and), | (bitwise or), and assignment.
+If an expression at the top level is an assignment, the value is not
+printed; otherwise it is.
+As in C, an integer that begins with 0 (zero) is assumed to be octal;
+otherwise, it is assumed to be decimal.
+.PP
+As an example of a Yacc specification, the desk calculator
+does a reasonable job of showing how precedences and ambiguities
+are used, and demonstrating simple error recovery.
+The major oversimplifications are that the
+lexical analysis phase is much simpler than for most applications, and the
+output is produced immediately, line by line.
+Note the way that decimal and octal integers are read in by the grammar rules;
+This job is probably better done by the lexical analyzer.
+.sp
+.nf
+.ta .5i 1i 1.5i 2i 2.5i
+
+%{
+# include <stdio.h>
+# include <ctype.h>
+
+int regs[26];
+int base;
+
+%}
+
+%start list
+
+%token DIGIT LETTER
+
+%left \'|\'
+%left \'&\'
+%left \'+\' \'\-\'
+%left \'*\' \'/\' \'%\'
+%left UMINUS /* supplies precedence for unary minus */
+
+%% /* beginning of rules section */
+
+list : /* empty */
+ | list stat \'\en\'
+ | list error \'\en\'
+ { yyerrok; }
+ ;
+
+stat : expr
+ { printf( "%d\en", $1 ); }
+ | LETTER \'=\' expr
+ { regs[$1] = $3; }
+ ;
+
+expr : \'(\' expr \')\'
+ { $$ = $2; }
+ | expr \'+\' expr
+ { $$ = $1 + $3; }
+ | expr \'\-\' expr
+ { $$ = $1 \- $3; }
+ | expr \'*\' expr
+ { $$ = $1 * $3; }
+ | expr \'/\' expr
+ { $$ = $1 / $3; }
+ | expr \'%\' expr
+ { $$ = $1 % $3; }
+ | expr \'&\' expr
+ { $$ = $1 & $3; }
+ | expr \'|\' expr
+ { $$ = $1 | $3; }
+ | \'\-\' expr %prec UMINUS
+ { $$ = \- $2; }
+ | LETTER
+ { $$ = regs[$1]; }
+ | number
+ ;
+
+number : DIGIT
+ { $$ = $1; base = ($1==0) ? 8 : 10; }
+ | number DIGIT
+ { $$ = base * $1 + $2; }
+ ;
+
+%% /* start of programs */
+
+yylex() { /* lexical analysis routine */
+ /* returns LETTER for a lower case letter, yylval = 0 through 25 */
+ /* return DIGIT for a digit, yylval = 0 through 9 */
+ /* all other characters are returned immediately */
+
+ int c;
+
+ while( (c=getchar()) == \' \' ) { /* skip blanks */ }
+
+ /* c is now nonblank */
+
+ if( islower( c ) ) {
+ yylval = c \- \'a\';
+ return ( LETTER );
+ }
+ if( isdigit( c ) ) {
+ yylval = c \- \'0\';
+ return( DIGIT );
+ }
+ return( c );
+ }
+.fi
+.bp
diff --git a/share/doc/psd/15.yacc/ssb b/share/doc/psd/15.yacc/ssb
new file mode 100644
index 0000000..2dba020
--- /dev/null
+++ b/share/doc/psd/15.yacc/ssb
@@ -0,0 +1,147 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)ssb 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+Appendix B: Yacc Input Syntax
+.PP
+This Appendix has a description of the Yacc input syntax, as a Yacc specification.
+Context dependencies, etc., are not considered.
+Ironically, the Yacc input specification language
+is most naturally specified as an LR(2) grammar; the sticky
+part comes when an identifier is seen in a rule, immediately
+following an action.
+If this identifier is followed by a colon, it is the start of the
+next rule; otherwise
+it is a continuation of the current rule, which just happens to have
+an action embedded in it.
+As implemented, the lexical analyzer looks
+ahead after seeing an identifier, and
+decide whether the next token (skipping blanks, newlines, comments, etc.)
+is a colon.
+If so, it returns the token C_IDENTIFIER.
+Otherwise, it returns IDENTIFIER.
+Literals (quoted strings) are also returned as IDENTIFIERS,
+but never as part of C_IDENTIFIERs.
+.sp
+.nf
+.ta .6i 1.2i 1.8i 2.4i 3i 3.6i
+
+ /* grammar for the input to Yacc */
+
+ /* basic entities */
+%token IDENTIFIER /* includes identifiers and literals */
+%token C_IDENTIFIER /* identifier (but not literal) followed by colon */
+%token NUMBER /* [0-9]+ */
+
+ /* reserved words: %type => TYPE, %left => LEFT, etc. */
+
+%token LEFT RIGHT NONASSOC TOKEN PREC TYPE START UNION
+
+%token MARK /* the %% mark */
+%token LCURL /* the %{ mark */
+%token RCURL /* the %} mark */
+
+ /* ascii character literals stand for themselves */
+
+%start spec
+
+%%
+
+spec : defs MARK rules tail
+ ;
+
+tail : MARK { \fIIn this action, eat up the rest of the file\fR }
+ | /* empty: the second MARK is optional */
+ ;
+
+defs : /* empty */
+ | defs def
+ ;
+
+def : START IDENTIFIER
+ | UNION { \fICopy union definition to output\fR }
+ | LCURL { \fICopy C code to output file\fR } RCURL
+ | ndefs rword tag nlist
+ ;
+
+rword : TOKEN
+ | LEFT
+ | RIGHT
+ | NONASSOC
+ | TYPE
+ ;
+
+tag : /* empty: union tag is optional */
+ | \'<\' IDENTIFIER \'>\'
+ ;
+
+nlist : nmno
+ | nlist nmno
+ | nlist \',\' nmno
+ ;
+
+nmno : IDENTIFIER /* NOTE: literal illegal with %type */
+ | IDENTIFIER NUMBER /* NOTE: illegal with %type */
+ ;
+
+ /* rules section */
+
+rules : C_IDENTIFIER rbody prec
+ | rules rule
+ ;
+
+rule : C_IDENTIFIER rbody prec
+ | '|' rbody prec
+ ;
+
+rbody : /* empty */
+ | rbody IDENTIFIER
+ | rbody act
+ ;
+
+act : \'{\' { \fICopy action, translate $$, etc.\fR } \'}\'
+ ;
+
+prec : /* empty */
+ | PREC IDENTIFIER
+ | PREC IDENTIFIER act
+ | prec \';\'
+ ;
+.fi
+.bp
diff --git a/share/doc/psd/15.yacc/ssc b/share/doc/psd/15.yacc/ssc
new file mode 100644
index 0000000..95fca5c
--- /dev/null
+++ b/share/doc/psd/15.yacc/ssc
@@ -0,0 +1,347 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\" @(#)ssc 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.SH
+Appendix C: An Advanced Example
+.PP
+This Appendix gives an example of a grammar using some
+of the advanced features discussed in Section 10.
+The desk calculator example in Appendix A is
+modified to provide a desk calculator that
+does floating point interval arithmetic.
+The calculator understands floating point
+constants, the arithmetic operations +, \-, *, /,
+unary \-, and = (assignment), and has 26 floating
+point variables, ``a'' through ``z''.
+Moreover, it also understands
+.I intervals ,
+written
+.DS
+ ( x , y )
+.DE
+where
+.I x
+is less than or equal to
+.I y .
+There are 26 interval valued variables ``A'' through ``Z''
+that may also be used.
+The usage is similar to that in Appendix A; assignments
+return no value, and print nothing, while expressions print
+the (floating or interval) value.
+.PP
+This example explores a number of interesting features
+of Yacc and C.
+Intervals are represented by a structure, consisting of the
+left and right endpoint values, stored as
+.I double 's.
+This structure is given a type name, INTERVAL, by using
+.I typedef .
+The Yacc value stack can also contain floating point scalars, and
+integers (used to index into the arrays holding the variable values).
+Notice that this entire strategy depends strongly on being able to
+assign structures and unions in C.
+In fact, many of the actions call functions that return structures
+as well.
+.PP
+It is also worth noting the use of YYERROR to handle error conditions:
+division by an interval containing 0, and an interval presented in
+the wrong order.
+In effect, the error recovery mechanism of Yacc is used to throw away the
+rest of the offending line.
+.PP
+In addition to the mixing of types on the value stack,
+this grammar also demonstrates an interesting use of syntax to
+keep track of the type (e.g. scalar or interval) of intermediate
+expressions.
+Note that a scalar can be automatically promoted to an interval if
+the context demands an interval value.
+This causes a large number of conflicts when the grammar is run through
+Yacc: 18 Shift/Reduce and 26 Reduce/Reduce.
+The problem can be seen by looking at the two input lines:
+.DS
+ 2.5 + ( 3.5 \- 4. )
+.DE
+and
+.DS
+ 2.5 + ( 3.5 , 4. )
+.DE
+Notice that the 2.5 is to be used in an interval valued expression
+in the second example, but this fact is not known until
+the ``,'' is read; by this time, 2.5 is finished, and the parser cannot go back
+and change its mind.
+More generally, it might be necessary to look ahead an arbitrary number of
+tokens to decide whether to convert a scalar to an interval.
+This problem is evaded by having two rules for each binary interval
+valued operator: one when the left operand is a scalar, and one when
+the left operand is an interval.
+In the second case, the right operand must be an interval,
+so the conversion will be applied automatically.
+Despite this evasion, there are still many cases where the
+conversion may be applied or not, leading to the above
+conflicts.
+They are resolved by listing the rules that yield scalars first
+in the specification file; in this way, the conflicts will
+be resolved in the direction of keeping scalar
+valued expressions scalar valued until they are forced to become
+intervals.
+.PP
+This way of handling multiple types is very instructive, but not very general.
+If there were many kinds of expression types, instead of just two,
+the number of rules needed would increase dramatically, and the conflicts
+even more dramatically.
+Thus, while this example is instructive, it is better practice in a
+more normal programming language environment to
+keep the type information as part of the value, and not as part
+of the grammar.
+.PP
+Finally, a word about the lexical analysis.
+The only unusual feature is the treatment of floating point constants.
+The C library routine
+.I atof
+is used to do the actual conversion from a character string
+to a double precision value.
+If the lexical analyzer detects an error,
+it responds by returning a token that
+is illegal in the grammar, provoking a syntax error
+in the parser, and thence error recovery.
+.LD
+
+%{
+
+# include <stdio.h>
+# include <ctype.h>
+
+typedef struct interval {
+ double lo, hi;
+ } INTERVAL;
+
+INTERVAL vmul(), vdiv();
+
+double atof();
+
+double dreg[ 26 ];
+INTERVAL vreg[ 26 ];
+
+%}
+
+%start lines
+
+%union {
+ int ival;
+ double dval;
+ INTERVAL vval;
+ }
+
+%token <ival> DREG VREG /* indices into dreg, vreg arrays */
+
+%token <dval> CONST /* floating point constant */
+
+%type <dval> dexp /* expression */
+
+%type <vval> vexp /* interval expression */
+
+ /* precedence information about the operators */
+
+%left \'+\' \'\-\'
+%left \'*\' \'/\'
+%left UMINUS /* precedence for unary minus */
+
+%%
+
+lines : /* empty */
+ | lines line
+ ;
+
+line : dexp \'\en\'
+ { printf( "%15.8f\en", $1 ); }
+ | vexp \'\en\'
+ { printf( "(%15.8f , %15.8f )\en", $1.lo, $1.hi ); }
+ | DREG \'=\' dexp \'\en\'
+ { dreg[$1] = $3; }
+ | VREG \'=\' vexp \'\en\'
+ { vreg[$1] = $3; }
+ | error \'\en\'
+ { yyerrok; }
+ ;
+
+dexp : CONST
+ | DREG
+ { $$ = dreg[$1]; }
+ | dexp \'+\' dexp
+ { $$ = $1 + $3; }
+ | dexp \'\-\' dexp
+ { $$ = $1 \- $3; }
+ | dexp \'*\' dexp
+ { $$ = $1 * $3; }
+ | dexp \'/\' dexp
+ { $$ = $1 / $3; }
+ | \'\-\' dexp %prec UMINUS
+ { $$ = \- $2; }
+ | \'(\' dexp \')\'
+ { $$ = $2; }
+ ;
+
+vexp : dexp
+ { $$.hi = $$.lo = $1; }
+ | \'(\' dexp \',\' dexp \')\'
+ {
+ $$.lo = $2;
+ $$.hi = $4;
+ if( $$.lo > $$.hi ){
+ printf( "interval out of order\en" );
+ YYERROR;
+ }
+ }
+ | VREG
+ { $$ = vreg[$1]; }
+ | vexp \'+\' vexp
+ { $$.hi = $1.hi + $3.hi;
+ $$.lo = $1.lo + $3.lo; }
+ | dexp \'+\' vexp
+ { $$.hi = $1 + $3.hi;
+ $$.lo = $1 + $3.lo; }
+ | vexp \'\-\' vexp
+ { $$.hi = $1.hi \- $3.lo;
+ $$.lo = $1.lo \- $3.hi; }
+ | dexp \'\-\' vexp
+ { $$.hi = $1 \- $3.lo;
+ $$.lo = $1 \- $3.hi; }
+ | vexp \'*\' vexp
+ { $$ = vmul( $1.lo, $1.hi, $3 ); }
+ | dexp \'*\' vexp
+ { $$ = vmul( $1, $1, $3 ); }
+ | vexp \'/\' vexp
+ { if( dcheck( $3 ) ) YYERROR;
+ $$ = vdiv( $1.lo, $1.hi, $3 ); }
+ | dexp \'/\' vexp
+ { if( dcheck( $3 ) ) YYERROR;
+ $$ = vdiv( $1, $1, $3 ); }
+ | \'\-\' vexp %prec UMINUS
+ { $$.hi = \-$2.lo; $$.lo = \-$2.hi; }
+ | \'(\' vexp \')\'
+ { $$ = $2; }
+ ;
+
+%%
+
+# define BSZ 50 /* buffer size for floating point numbers */
+
+ /* lexical analysis */
+
+yylex(){
+ register c;
+
+ while( (c=getchar()) == \' \' ){ /* skip over blanks */ }
+
+ if( isupper( c ) ){
+ yylval.ival = c \- \'A\';
+ return( VREG );
+ }
+ if( islower( c ) ){
+ yylval.ival = c \- \'a\';
+ return( DREG );
+ }
+
+ if( isdigit( c ) || c==\'.\' ){
+ /* gobble up digits, points, exponents */
+
+ char buf[BSZ+1], *cp = buf;
+ int dot = 0, exp = 0;
+
+ for( ; (cp\-buf)<BSZ ; ++cp,c=getchar() ){
+
+ *cp = c;
+ if( isdigit( c ) ) continue;
+ if( c == \'.\' ){
+ if( dot++ || exp ) return( \'.\' ); /* will cause syntax error */
+ continue;
+ }
+
+ if( c == \'e\' ){
+ if( exp++ ) return( \'e\' ); /* will cause syntax error */
+ continue;
+ }
+
+ /* end of number */
+ break;
+ }
+ *cp = \'\e0\';
+ if( (cp\-buf) >= BSZ ) printf( "constant too long: truncated\en" );
+ else ungetc( c, stdin ); /* push back last char read */
+ yylval.dval = atof( buf );
+ return( CONST );
+ }
+ return( c );
+ }
+
+INTERVAL hilo( a, b, c, d ) double a, b, c, d; {
+ /* returns the smallest interval containing a, b, c, and d */
+ /* used by *, / routines */
+ INTERVAL v;
+
+ if( a>b ) { v.hi = a; v.lo = b; }
+ else { v.hi = b; v.lo = a; }
+
+ if( c>d ) {
+ if( c>v.hi ) v.hi = c;
+ if( d<v.lo ) v.lo = d;
+ }
+ else {
+ if( d>v.hi ) v.hi = d;
+ if( c<v.lo ) v.lo = c;
+ }
+ return( v );
+ }
+
+INTERVAL vmul( a, b, v ) double a, b; INTERVAL v; {
+ return( hilo( a*v.hi, a*v.lo, b*v.hi, b*v.lo ) );
+ }
+
+dcheck( v ) INTERVAL v; {
+ if( v.hi >= 0. && v.lo <= 0. ){
+ printf( "divisor interval contains 0.\en" );
+ return( 1 );
+ }
+ return( 0 );
+ }
+
+INTERVAL vdiv( a, b, v ) double a, b; INTERVAL v; {
+ return( hilo( a/v.hi, a/v.lo, b/v.hi, b/v.lo ) );
+ }
+.DE
+.bp
diff --git a/share/doc/psd/15.yacc/ssd b/share/doc/psd/15.yacc/ssd
new file mode 100644
index 0000000..988e0a0
--- /dev/null
+++ b/share/doc/psd/15.yacc/ssd
@@ -0,0 +1,76 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\" @(#)ssd 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.SH
+Appendix D: Old Features Supported but not Encouraged
+.PP
+This Appendix mentions synonyms and features which are supported for historical
+continuity, but, for various reasons, are not encouraged.
+.IP 1.
+Literals may also be delimited by double quotes ``"''.
+.IP 2.
+Literals may be more than one character long.
+If all the characters are alphabetic, numeric, or \_, the type number of the literal is defined,
+just as if the literal did not have the quotes around it.
+Otherwise, it is difficult to find the value for such literals.
+.IP
+The use of multi-character literals is likely to mislead those unfamiliar with
+Yacc, since it suggests that Yacc is doing a job which must be actually done by the lexical analyzer.
+.IP 3.
+Most places where % is legal, backslash ``\e'' may be used.
+In particular, \e\e is the same as %%, \eleft the same as %left, etc.
+.IP 4.
+There are a number of other synonyms:
+.DS
+%< is the same as %left
+%> is the same as %right
+%binary and %2 are the same as %nonassoc
+%0 and %term are the same as %token
+%= is the same as %prec
+.DE
+.IP 5.
+Actions may also have the form
+.DS
+={ . . . }
+.DE
+and the curly braces can be dropped if the action is a
+single C statement.
+.IP 6.
+C code between %{ and %} used to be permitted at the
+head of the rules section, as well as in the
+declaration section.
diff --git a/share/doc/psd/16.lex/Makefile b/share/doc/psd/16.lex/Makefile
new file mode 100644
index 0000000..6dea7c0
--- /dev/null
+++ b/share/doc/psd/16.lex/Makefile
@@ -0,0 +1,9 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/16.lex
+SRCS= lex.ms
+MACROS= -ms
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/16.lex/lex.ms b/share/doc/psd/16.lex/lex.ms
new file mode 100644
index 0000000..8b3c82e
--- /dev/null
+++ b/share/doc/psd/16.lex/lex.ms
@@ -0,0 +1,2345 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)lex.ms 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.nr tm 0
+.de MH
+Bell Laboratories, Murray Hill, NJ 07974.
+..
+.EH 'PSD:16-%''Lex \- A Lexical Analyzer Generator'
+.OH 'Lex \- A Lexical Analyzer Generator''PSD:16-%'
+.hc ~
+.bd I 2
+.de TS
+.br
+.nf
+.sp 1v
+.ul 0
+..
+.de TE
+.sp 1v
+.fi
+..
+.\".de PT
+.\".if \\n%>1 'tl ''\s7LEX\s0\s9\(mi%\s0''
+.\".if \\n%>1 'sp
+.\"..
+.ND July 21, 1975
+.\".RP
+.\".TM 75-1274-15 39199 39199-11
+.TL
+Lex \- A Lexical Analyzer ~Generator~
+.AU ``MH 2C-569'' 6377
+M. E. Lesk and E. Schmidt
+.AI
+.MH
+.AB
+.ps +1
+NOTE: This document describes the historical Unix version of \fIlex\fP.
+FreeBSD is supplied with \fIflex\fP\| which is a compatible replacement.
+See the extensive documentation in \fIflex(1)\fP\| for details.
+.ps
+.sp
+.bd I 2
+.\".nr PS 8
+.\".nr VS 9
+.\".ps 8
+.\".vs 9p
+Lex helps write programs whose control flow
+is directed by instances of regular
+expressions in the input stream.
+It is well suited for editor-script type transformations and
+for segmenting input in preparation for
+a parsing routine.
+.PP
+Lex source is a table of regular expressions and corresponding program fragments.
+The table is translated to a program
+which reads an input stream, copying it to an output stream
+and partitioning the input
+into strings which match the given expressions.
+As each such string is recognized the corresponding
+program fragment is executed.
+The recognition of the expressions
+is performed by a deterministic finite automaton
+generated by Lex.
+The program fragments written by the user are executed in the order in which the
+corresponding regular expressions occur in the input stream.
+.PP
+The lexical analysis
+programs written with Lex accept ambiguous specifications
+and choose the longest
+match possible at each input point.
+If necessary, substantial look~ahead
+is performed on the input, but the
+input stream will be backed up to the
+end of the current partition, so that the user
+has general freedom to manipulate it.
+.PP
+Lex can generate analyzers in either C or Ratfor, a language
+which can be translated automatically to portable Fortran.
+It is available on the PDP-11 UNIX, Honeywell GCOS,
+and IBM OS systems.
+This manual, however, will only discuss generating analyzers
+in C on the UNIX system, which is the only supported
+form of Lex under UNIX Version 7.
+Lex is designed to simplify
+interfacing with Yacc, for those
+with access to this compiler-compiler system.
+.\".nr PS 9
+.\".nr VS 11
+.AE
+.2C
+.NH
+Introduction.
+.PP
+Lex is a program generator designed for
+lexical processing of character input streams.
+It accepts a high-level, problem oriented specification
+for character string matching,
+and
+produces a program in a general purpose language which recognizes
+regular expressions.
+The regular expressions are specified by the user in the
+source specifications given to Lex.
+The Lex written code recognizes these expressions
+in an input stream and partitions the input stream into
+strings matching the expressions. At the bound~aries
+between strings
+program sections
+provided by the user are executed.
+The Lex source file associates the regular expressions and the
+program fragments.
+As each expression appears in the input to the program written by Lex,
+the corresponding fragment is executed.
+.PP
+The user supplies the additional code
+beyond expression matching
+needed to complete his tasks, possibly
+including code written by other generators.
+The program that recognizes the expressions is generated in the
+general purpose programming language employed for the
+user's program fragments.
+Thus, a high level expression
+language is provided to write the string expressions to be
+matched while the user's freedom to write actions
+is unimpaired.
+This avoids forcing the user who wishes to use a string manipulation
+language for input analysis to write processing programs in the same
+and often inappropriate string handling language.
+.PP
+Lex is not a complete language, but rather a generator representing
+a new language feature which can be added to
+different programming languages, called ``host languages.''
+Just as general purpose languages
+can produce code to run on different computer hardware,
+Lex can write code in different host languages.
+The host language is used for the output code generated by Lex
+and also for the program fragments added by the user.
+Compatible run-time libraries for the different host languages
+are also provided.
+This makes Lex adaptable to different environments and
+different users.
+Each application
+may be directed to the combination of hardware and host language appropriate
+to the task, the user's background, and the properties of local
+implementations.
+At present, the only supported host language is C,
+although Fortran (in the form of Ratfor [2] has been available
+in the past.
+Lex itself exists on UNIX, GCOS, and OS/370; but the
+code generated by Lex may be taken anywhere the appropriate
+compilers exist.
+.PP
+Lex turns the user's expressions and actions
+(called
+.ul
+source
+in this memo) into the host general-purpose language;
+the generated program is named
+.ul
+yylex.
+The
+.ul
+yylex
+program
+will recognize expressions
+in a stream
+(called
+.ul
+input
+in this memo)
+and perform the specified actions for each expression as it is detected.
+See Figure 1.
+.\" .GS
+.TS
+center;
+l _ r
+l|c|r
+l _ r
+l _ r
+l|c|r
+l _ r
+c s s
+c s s.
+
+Source \(-> Lex \(-> yylex
+
+.sp 2
+
+Input \(-> yylex \(-> Output
+
+.sp
+An overview of Lex
+Figure 1
+.TE
+.\" .GE
+.PP
+For a trivial example, consider a program to delete
+from the input
+all blanks or tabs at the ends of lines.
+.TS
+center;
+l l.
+%%
+[ \et]+$ ;
+.TE
+is all that is required.
+The program
+contains a %% delimiter to mark the beginning of the rules, and
+one rule.
+This rule contains a regular expression
+which matches one or more
+instances of the characters blank or tab
+(written \et for visibility, in accordance with the C language convention)
+just prior to the end of a line.
+The brackets indicate the character
+class made of blank and tab; the + indicates ``one or more ...'';
+and the $ indicates ``end of line,'' as in QED.
+No action is specified,
+so the program generated by Lex (yylex) will ignore these characters.
+Everything else will be copied.
+To change any remaining
+string of blanks or tabs to a single blank,
+add another rule:
+.TS
+center;
+l l.
+%%
+[ \et]+$ ;
+[ \et]+ printf(" ");
+.TE
+The finite automaton generated for this
+source will scan for both rules at once,
+observing at
+the termination of the string of blanks or tabs
+whether or not there is a newline character, and executing
+the desired rule action.
+The first rule matches all strings of blanks or tabs
+at the end of lines, and the second
+rule all remaining strings of blanks or tabs.
+.PP
+Lex can be used alone for simple transformations, or
+for analysis and statistics gathering on a lexical level.
+Lex can also be used with a parser generator
+to perform the lexical analysis phase; it is particularly
+easy to interface Lex and Yacc [3].
+Lex programs recognize only regular expressions;
+Yacc writes parsers that accept a large class of context free grammars,
+but require a lower level analyzer to recognize input tokens.
+Thus, a combination of Lex and Yacc is often appropriate.
+When used as a preprocessor for a later parser generator,
+Lex is used to partition the input stream,
+and the parser generator assigns structure to
+the resulting pieces.
+The flow of control
+in such a case (which might be the first half of a compiler,
+for example) is shown in Figure 2.
+Additional programs,
+written by other generators
+or by hand, can
+be added easily to programs written by Lex.
+.\" .BS 2
+.ps 9
+.vs 11
+.TS
+center;
+l c c c l
+l c c c l
+l c c c l
+l _ c _ l
+l|c|c|c|l
+l _ c _ l
+l c c c l
+l _ c _ l
+l|c|c|c|l
+l _ c _ l
+l c s s l
+l c s s l.
+ lexical grammar
+ rules rules
+ \(da \(da
+
+ Lex Yacc
+
+ \(da \(da
+
+Input \(-> yylex \(-> yyparse \(-> Parsed input
+
+.sp
+ Lex with Yacc
+ Figure 2
+.TE
+.ps 10
+.vs 12
+.\" .BE
+Yacc users
+will realize that the name
+.ul
+yylex
+is what Yacc expects its lexical analyzer to be named,
+so that the use of this name by Lex simplifies
+interfacing.
+.PP
+Lex generates a deterministic finite automaton from the regular expressions
+in the source [4].
+The automaton is interpreted, rather than compiled, in order
+to save space.
+The result is still a fast analyzer.
+In particular, the time taken by a Lex program
+to recognize and partition an input stream is
+proportional to the length of the input.
+The number of Lex rules or
+the complexity of the rules is
+not important in determining speed,
+unless rules which include
+forward context require a significant amount of re~scanning.
+What does increase with the number and complexity of rules
+is the size of the finite
+automaton, and therefore the size of the program
+generated by Lex.
+.PP
+In the program written by Lex, the user's fragments
+(representing the
+.ul
+actions
+to be performed as each regular expression
+is found)
+are gathered
+as cases of a switch.
+The automaton interpreter directs the control flow.
+Opportunity is provided for the user to insert either
+declarations or additional statements in the routine containing
+the actions, or to
+add subroutines outside this action routine.
+.PP
+Lex is not limited to source which can
+be interpreted on the basis of one character
+look~ahead.
+For example,
+if there are two rules, one looking for
+.I ab
+and another for
+.I abcdefg ,
+and the input stream is
+.I abcdefh ,
+Lex will recognize
+.I ab
+and leave
+the input pointer just before
+.I "cd. . ."
+Such backup is more costly
+than the processing of simpler languages.
+.2C
+.NH
+Lex Source.
+.PP
+The general format of Lex source is:
+.TS
+center;
+l.
+{definitions}
+%%
+{rules}
+%%
+{user subroutines}
+.TE
+where the definitions and the user subroutines
+are often omitted.
+The second
+.I %%
+is optional, but the first is required
+to mark the beginning of the rules.
+The absolute minimum Lex program is thus
+.TS
+center;
+l.
+%%
+.TE
+(no definitions, no rules) which translates into a program
+which copies the input to the output unchanged.
+.PP
+In the outline of Lex programs shown above, the
+.I
+rules
+.R
+represent the user's control
+decisions; they are a table, in which the left column
+contains
+.I
+regular expressions
+.R
+(see section 3)
+and the right column contains
+.I
+actions,
+.R
+program fragments to be executed when the expressions
+are recognized.
+Thus an individual rule might appear
+.TS
+center;
+l l.
+integer printf("found keyword INT");
+.TE
+to look for the string
+.I integer
+in the input stream and
+print the message ``found keyword INT'' whenever it appears.
+In this example the host procedural language is C and
+the C library function
+.I
+printf
+.R
+is used to print the string.
+The end
+of the expression is indicated by the first blank or tab character.
+If the action is merely a single C expression,
+it can just be given on the right side of the line; if it is
+compound, or takes more than a line, it should be enclosed in
+braces.
+As a slightly more useful example, suppose it is desired to
+change a number of words from British to American spelling.
+Lex rules such as
+.TS
+center;
+l l.
+colour printf("color");
+mechanise printf("mechanize");
+petrol printf("gas");
+.TE
+would be a start. These rules are not quite enough,
+since
+the word
+.I petroleum
+would become
+.I gaseum ;
+a way of dealing
+with this will be described later.
+.2C
+.NH
+Lex Regular Expressions.
+.PP
+The definitions of regular expressions are very similar to those
+in QED [5].
+A regular
+expression specifies a set of strings to be matched.
+It contains text characters (which match the corresponding
+characters in the strings being compared)
+and operator characters (which specify
+repetitions, choices, and other features).
+The letters of the alphabet and the digits are
+always text characters; thus the regular expression
+.TS
+center;
+l l.
+integer
+.TE
+matches the string
+.ul
+integer
+wherever it appears
+and the expression
+.TS
+center;
+l.
+a57D
+.TE
+looks for the string
+.ul
+a57D.
+.PP
+.I
+Operators.
+.R
+The operator characters are
+.TS
+center;
+l.
+" \e [ ] ^ \- ? . \(** + | ( ) $ / { } % < >
+.TE
+and if they are to be used as text characters, an escape
+should be used.
+The quotation mark operator (")
+indicates that whatever is contained between a pair of quotes
+is to be taken as text characters.
+Thus
+.TS
+center;
+l.
+xyz"++"
+.TE
+matches the string
+.I xyz++
+when it appears. Note that a part of a string may be quoted.
+It is harmless but unnecessary to quote an ordinary
+text character; the expression
+.TS
+center;
+l.
+"xyz++"
+.TE
+is the same as the one above.
+Thus by quoting every non-alphanumeric character
+being used as a text character, the user can avoid remembering
+the list above of current
+operator characters, and is safe should further extensions to Lex
+lengthen the list.
+.PP
+An operator character may also be turned into a text character
+by preceding it with \e as in
+.TS
+center;
+l.
+xyz\e+\e+
+.TE
+which
+is another, less readable, equivalent of the above expressions.
+Another use of the quoting mechanism is to get a blank into
+an expression; normally, as explained above, blanks or tabs end
+a rule.
+Any blank character not contained within [\|] (see below) must
+be quoted.
+Several normal C escapes with \e
+are recognized: \en is newline, \et is tab, and \eb is backspace.
+To enter \e itself, use \e\e.
+Since newline is illegal in an expression, \en must be used;
+it is not
+required to escape tab and backspace.
+Every character but blank, tab, newline and the list above is always
+a text character.
+.PP
+.I
+Character classes.
+.R
+Classes of characters can be specified using the operator pair [\|].
+The construction
+.I [abc]
+matches a
+single character, which may be
+.I a ,
+.I b ,
+or
+.I c .
+Within square brackets,
+most operator meanings are ignored.
+Only three characters are special:
+these are \e \(mi and ^. The \(mi character
+indicates ranges. For example,
+.TS
+center;
+l.
+[a\(miz0\(mi9<>_]
+.TE
+indicates the character class containing all the lower case letters,
+the digits,
+the angle brackets, and underline.
+Ranges may be given in either order.
+Using \(mi between any pair of characters which are
+not both upper case letters, both lower case letters, or both digits
+is implementation dependent and will get a warning message.
+(E.g., [0\-z] in ASCII is many more characters
+than it is in EBCDIC).
+If it is desired to include the
+character \(mi in a character class, it should be first or
+last; thus
+.TS
+center;
+l.
+[\(mi+0\(mi9]
+.TE
+matches all the digits and the two signs.
+.PP
+In character classes,
+the ^ operator must appear as the first character
+after the left bracket; it indicates that the resulting string
+is to be complemented with respect to the computer character set.
+Thus
+.TS
+center;
+l.
+[^abc]
+.TE
+matches all characters except a, b, or c, including
+all special or control characters; or
+.TS
+center;
+l.
+[^a\-zA\-Z]
+.TE
+is any character which is not a letter.
+The \e character provides the usual escapes within
+character class brackets.
+.PP
+.I
+Arbitrary character.
+.R
+To match almost any character, the operator character
+.TS
+center;
+l.
+\&.
+.TE
+is the class of all characters except newline.
+Escaping into octal is possible although non-portable:
+.TS
+center;
+l.
+[\e40\-\e176]
+.TE
+matches all printable characters in the ASCII character set, from octal
+40 (blank) to octal 176 (tilde).
+.PP
+.I
+Optional expressions.
+.R
+The operator
+.I ?
+indicates
+an optional element of an expression.
+Thus
+.TS
+center;
+l.
+ab?c
+.TE
+matches either
+.I ac
+or
+.I abc .
+.PP
+.I
+Repeated expressions.
+.R
+Repetitions of classes are indicated by the operators
+.I \(**
+and
+.I + .
+.TS
+center;
+l.
+\f2a\(**\f1
+.TE
+is any number of consecutive
+.I a
+characters, including zero; while
+.TS
+center;
+l.
+a+
+.TE
+is one or more instances of
+.I a.
+For example,
+.TS
+center;
+l.
+[a\-z]+
+.TE
+is all strings of lower case letters.
+And
+.TS
+center;
+l.
+[A\(miZa\(miz][A\(miZa\(miz0\(mi9]\(**
+.TE
+indicates all alphanumeric strings with a leading
+alphabetic character.
+This is a typical expression for recognizing identifiers in
+computer languages.
+.PP
+.I
+Alternation and Grouping.
+.R
+The operator |
+indicates alternation:
+.TS
+center;
+l.
+(ab\||\|cd)
+.TE
+matches either
+.ul
+ab
+or
+.ul
+cd.
+Note that parentheses are used for grouping, although
+they are
+not necessary on the outside level;
+.TS
+center;
+l.
+ab\||\|cd
+.TE
+would have sufficed.
+Parentheses
+can be used for more complex expressions:
+.TS
+center;
+l.
+(ab\||\|cd+)?(ef)\(**
+.TE
+matches such strings as
+.I abefef ,
+.I efefef ,
+.I cdef ,
+or
+.I cddd\| ;
+but not
+.I abc ,
+.I abcd ,
+or
+.I abcdef .
+.PP
+.I
+Context sensitivity.
+.R
+Lex will recognize a small amount of surrounding
+context. The two simplest operators for this are
+.I ^
+and
+.I $ .
+If the first character of an expression is
+.I ^ ,
+the expression will only be matched at the beginning
+of a line (after a newline character, or at the beginning of
+the input stream).
+This can never conflict with the other meaning of
+.I ^ ,
+complementation
+of character classes, since that only applies within
+the [\|] operators.
+If the very last character is
+.I $ ,
+the expression will only be matched at the end of a line (when
+immediately followed by newline).
+The latter operator is a special case of the
+.I /
+operator character,
+which indicates trailing context.
+The expression
+.TS
+center;
+l.
+ab/cd
+.TE
+matches the string
+.I ab ,
+but only if followed by
+.ul
+cd.
+Thus
+.TS
+center;
+l.
+ab$
+.TE
+is the same as
+.TS
+center;
+l.
+ab/\en
+.TE
+Left context is handled in Lex by
+.I
+start conditions
+.R
+as explained in section 10. If a rule is only to be executed
+when the Lex automaton interpreter is in start condition
+.I
+x,
+.R
+the rule should be prefixed by
+.TS
+center;
+l.
+<x>
+.TE
+using the angle bracket operator characters.
+If we considered ``being at the beginning of a line'' to be
+start condition
+.I ONE ,
+then the ^ operator
+would be equivalent to
+.TS
+center;
+l.
+<ONE>
+.TE
+Start conditions are explained more fully later.
+.PP
+.I
+Repetitions and Definitions.
+.R
+The operators {} specify
+either repetitions (if they enclose numbers)
+or
+definition expansion (if they enclose a name). For example
+.TS
+center;
+l.
+{digit}
+.TE
+looks for a predefined string named
+.I digit
+and inserts it
+at that point in the expression.
+The definitions are given in the first part of the Lex
+input, before the rules.
+In contrast,
+.TS
+center;
+l.
+a{1,5}
+.TE
+looks for 1 to 5 occurrences of
+.I a .
+.PP
+Finally, initial
+.I %
+is special, being the separator
+for Lex source segments.
+.2C
+.NH
+Lex Actions.
+.PP
+When an expression written as above is matched, Lex
+executes the corresponding action. This section describes
+some features of Lex which aid in writing actions. Note
+that there is a default action, which
+consists of copying the input to the output. This
+is performed on all strings not otherwise matched. Thus
+the Lex user who wishes to absorb the entire input, without
+producing any output, must provide rules to match everything.
+When Lex is being used with Yacc, this is the normal
+situation.
+One may consider that actions are what is done instead of
+copying the input to the output; thus, in general,
+a rule which merely copies can be omitted.
+Also, a character combination
+which is omitted from the rules
+and which appears as input
+is likely to be printed on the output, thus calling
+attention to the gap in the rules.
+.PP
+One of the simplest things that can be done is to ignore
+the input. Specifying a C null statement, \fI;\fR as an action
+causes this result. A frequent rule is
+.TS
+center;
+l l.
+[ \et\en] ;
+.TE
+which causes the three spacing characters (blank, tab, and newline)
+to be ignored.
+.PP
+Another easy way to avoid writing actions is the action character
+|, which indicates that the action for this rule is the action
+for the next rule.
+The previous example could also have been written
+.TS
+center, tab(#);
+l l.
+" "#|
+"\et"#|
+"\en"#;
+.TE
+with the same result, although in different style.
+The quotes around \en and \et are not required.
+.PP
+In more complex actions, the user
+will
+often want to know the actual text that matched some expression
+like
+.I [a\(miz]+ .
+Lex leaves this text in an external character
+array named
+.I
+yytext.
+.R
+Thus, to print the name found,
+a rule like
+.TS
+center;
+l l.
+[a\-z]+ printf("%s", yytext);
+.TE
+will print
+the string in
+.I
+yytext.
+.R
+The C function
+.I
+printf
+.R
+accepts a format argument and data to be printed;
+in this case, the format is ``print string'' (% indicating
+data conversion, and
+.I s
+indicating string type),
+and the data are the characters
+in
+.I
+yytext.
+.R
+So this just places
+the matched string
+on the output.
+This action
+is so common that
+it may be written as ECHO:
+.TS
+center;
+l l.
+[a\-z]+ ECHO;
+.TE
+is the same as the above.
+Since the default action is just to
+print the characters found, one might ask why
+give a rule, like this one, which merely specifies
+the default action?
+Such rules are often required
+to avoid matching some other rule
+which is not desired. For example, if there is a rule
+which matches
+.I read
+it will normally match the instances of
+.I read
+contained in
+.I bread
+or
+.I readjust ;
+to avoid
+this,
+a rule
+of the form
+.I [a\(miz]+
+is needed.
+This is explained further below.
+.PP
+Sometimes it is more convenient to know the end of what
+has been found; hence Lex also provides a count
+.I
+yyleng
+.R
+of the number of characters matched.
+To count both the number
+of words and the number of characters in words in the input, the user might write
+.TS
+center;
+l l.
+[a\-zA\-Z]+ {words++; chars += yyleng;}
+.TE
+which accumulates in
+.ul
+chars
+the number
+of characters in the words recognized.
+The last character in the string matched can
+be accessed by
+.TS
+center;
+l.
+yytext[yyleng\-1]
+.TE
+.PP
+Occasionally, a Lex
+action may decide that a rule has not recognized the correct
+span of characters.
+Two routines are provided to aid with this situation.
+First,
+.I
+yymore()
+.R
+can be called to indicate that the next input expression recognized is to be
+tacked on to the end of this input. Normally,
+the next input string would overwrite the current
+entry in
+.I
+yytext.
+.R
+Second,
+.I
+yyless (n)
+.R
+may be called to indicate that not all the characters matched
+by the currently successful expression are wanted right now.
+The argument
+.I
+n
+.R
+indicates the number of characters
+in
+.I
+yytext
+.R
+to be retained.
+Further characters previously matched
+are
+returned to the input. This provides the same sort of
+look~ahead offered by the / operator,
+but in a different form.
+.PP
+.I
+Example:
+.R
+Consider a language which defines
+a string as a set of characters between quotation (") marks, and provides that
+to include a " in a string it must be preceded by a \e. The
+regular expression which matches that is somewhat confusing,
+so that it might be preferable to write
+.TS
+center;
+l l.
+\e"[^"]\(** {
+ if (yytext[yyleng\-1] == \(fm\e\e\(fm)
+ yymore();
+ else
+ ... normal user processing
+ }
+.TE
+which will, when faced with a string such as
+.I
+"abc\e"def\|"
+.R
+first match
+the five characters
+\fI"abc\e\|\fR;
+then
+the call to
+.I yymore()
+will
+cause the next part of the string,
+\fI"def\|\fR,
+to be tacked on the end.
+Note that the final quote terminating the string should be picked
+up in the code labeled ``normal processing''.
+.PP
+The function
+.I
+yyless()
+.R
+might be used to reprocess
+text in various circumstances. Consider the C problem of distinguishing
+the ambiguity of ``=\(mia''.
+Suppose it is desired to treat this as ``=\(mi a''
+but print a message. A rule might be
+.ps 9
+.vs 11
+.TS
+center;
+l l.
+=\(mi[a\-zA\-Z] {
+ printf("Op (=\(mi) ambiguous\en");
+ yyless(yyleng\-1);
+ ... action for =\(mi ...
+ }
+.TE
+.ps 10
+.vs 12
+which prints a message, returns the letter after the
+operator to the input stream, and treats the operator as ``=\(mi''.
+Alternatively it might be desired to treat this as ``= \(mia''.
+To do this, just return the minus
+sign as well as the letter to the input:
+.ps 9
+.vs 11
+.TS
+center;
+l l.
+=\(mi[a\-zA\-Z] {
+ printf("Op (=\(mi) ambiguous\en");
+ yyless(yyleng\-2);
+ ... action for = ...
+ }
+.TE
+.ps 10
+.vs 12
+will perform the other interpretation.
+Note that the expressions for the two cases might more easily
+be written
+.TS
+center;
+l l.
+=\(mi/[A\-Za\-z]
+.TE
+in the first case and
+.TS
+center;
+l.
+=/\-[A\-Za\-z]
+.TE
+in the second;
+no backup would be required in the rule action.
+It is not necessary to recognize the whole identifier
+to observe the ambiguity.
+The
+possibility of ``=\(mi3'', however, makes
+.TS
+center;
+l.
+=\(mi/[^ \et\en]
+.TE
+a still better rule.
+.PP
+In addition to these routines, Lex also permits
+access to the I/O routines
+it uses.
+They are:
+.IP 1)
+.I
+input()
+.R
+which returns the next input character;
+.IP 2)
+.I
+output(c)
+.R
+which writes the character
+.I
+c
+.R
+on the output; and
+.IP 3)
+.I
+unput(c)
+.R
+pushes the character
+.I
+c
+.R
+back onto the input stream to be read later by
+.I
+input().
+.R
+.LP
+By default these routines are provided as macro definitions,
+but the user can override them and supply private versions.
+These routines
+define the relationship between external files and
+internal characters, and must all be retained
+or modified consistently.
+They may be redefined, to
+cause input or output to be transmitted to or from strange
+places, including other programs or internal memory;
+but the character set used must be consistent in all routines;
+a value of zero returned by
+.I
+input
+.R
+must mean end of file; and
+the relationship between
+.I
+unput
+.R
+and
+.I
+input
+.R
+must be retained
+or the Lex look~ahead will not work.
+Lex does not look ahead at all if it does not have to,
+but every rule ending in
+.ft I
++ \(** ?
+.ft R
+or
+.ft I
+$
+.ft R
+or containing
+.ft I
+/
+.ft R
+implies look~ahead.
+Look~ahead is also necessary to match an expression that is a prefix
+of another expression.
+See below for a discussion of the character set used by Lex.
+The standard Lex library imposes
+a 100 character limit on backup.
+.PP
+Another Lex library routine that the user will sometimes want
+to redefine is
+.I
+yywrap()
+.R
+which is called whenever Lex reaches an end-of-file.
+If
+.I
+yywrap
+.R
+returns a 1, Lex continues with the normal wrapup on end of input.
+Sometimes, however, it is convenient to arrange for more
+input to arrive
+from a new source.
+In this case, the user should provide
+a
+.I
+yywrap
+.R
+which
+arranges for new input and
+returns 0. This instructs Lex to continue processing.
+The default
+.I
+yywrap
+.R
+always returns 1.
+.PP
+This routine is also a convenient place
+to print tables, summaries, etc. at the end
+of a program. Note that it is not
+possible to write a normal rule which recognizes
+end-of-file; the only access to this condition is
+through
+.I
+yywrap.
+.R
+In fact, unless a private version of
+.I
+input()
+.R
+is supplied
+a file containing nulls
+cannot be handled,
+since a value of 0 returned by
+.I
+input
+.R
+is taken to be end-of-file.
+.PP
+.2C
+.NH
+Ambiguous Source Rules.
+.PP
+Lex can handle ambiguous specifications.
+When more than one expression can match the
+current input, Lex chooses as follows:
+.IP 1)
+The longest match is preferred.
+.IP 2)
+Among rules which matched the same number of characters,
+the rule given first is preferred.
+.LP
+Thus, suppose the rules
+.TS
+center;
+l l.
+integer keyword action ...;
+[a\-z]+ identifier action ...;
+.TE
+to be given in that order. If the input is
+.I integers ,
+it is taken as an identifier, because
+.I [a\-z]+
+matches 8 characters while
+.I integer
+matches only 7.
+If the input is
+.I integer ,
+both rules match 7 characters, and
+the keyword rule is selected because it was given first.
+Anything shorter (e.g. \fIint\fR\|) will
+not match the expression
+.I integer
+and so the identifier interpretation is used.
+.PP
+The principle of preferring the longest
+match makes rules containing
+expressions like
+.I \&.\(**
+dangerous.
+For example,
+.TS
+center;
+l.
+\&\(fm.\(**\(fm
+.TE
+might seem a good way of recognizing
+a string in single quotes.
+But it is an invitation for the program to read far
+ahead, looking for a distant
+single quote.
+Presented with the input
+.TS
+center;
+l l.
+\&\(fmfirst\(fm quoted string here, \(fmsecond\(fm here
+.TE
+the above expression will match
+.TS
+center;
+l l.
+\&\(fmfirst\(fm quoted string here, \(fmsecond\(fm
+.TE
+which is probably not what was wanted.
+A better rule is of the form
+.TS
+center;
+l.
+\&\(fm[^\(fm\en]\(**\(fm
+.TE
+which, on the above input, will stop
+after
+.I \(fmfirst\(fm .
+The consequences
+of errors like this are mitigated by the fact
+that the
+.I \&.
+operator will not match newline.
+Thus expressions like
+.I \&.\(**
+stop on the
+current line.
+Don't try to defeat this with expressions like
+.I (.|\en)+
+or
+equivalents;
+the Lex generated program will try to read
+the entire input file, causing
+internal buffer overflows.
+.PP
+Note that Lex is normally partitioning
+the input stream, not searching for all possible matches
+of each expression.
+This means that each character is accounted for
+once and only once.
+For example, suppose it is desired to
+count occurrences of both \fIshe\fR and \fIhe\fR in an input text.
+Some Lex rules to do this might be
+.TS
+center;
+l l.
+she s++;
+he h++;
+\en |
+\&. ;
+.TE
+where the last two rules ignore everything besides \fIhe\fR and \fIshe\fR.
+Remember that . does not include newline.
+Since \fIshe\fR includes \fIhe\fR, Lex will normally
+.I
+not
+.R
+recognize
+the instances of \fIhe\fR included in \fIshe\fR,
+since once it has passed a \fIshe\fR those characters are gone.
+.PP
+Sometimes the user would like to override this choice. The action
+REJECT
+means ``go do the next alternative.''
+It causes whatever rule was second choice after the current
+rule to be executed.
+The position of the input pointer is adjusted accordingly.
+Suppose the user really wants to count the included instances of \fIhe\fR:
+.TS
+center;
+l l.
+she {s++; REJECT;}
+he {h++; REJECT;}
+\en |
+\&. ;
+.TE
+these rules are one way of changing the previous example
+to do just that.
+After counting each expression, it is rejected; whenever appropriate,
+the other expression will then be counted. In this example, of course,
+the user could note that \fIshe\fR includes \fIhe\fR but not
+vice versa, and omit the REJECT action on \fIhe\fR;
+in other cases, however, it
+would not be possible a priori to tell
+which input characters
+were in both classes.
+.PP
+Consider the two rules
+.TS
+center;
+l l.
+a[bc]+ { ... ; REJECT;}
+a[cd]+ { ... ; REJECT;}
+.TE
+If the input is
+.I ab ,
+only the first rule matches,
+and on
+.I ad
+only the second matches.
+The input string
+.I accb
+matches the first rule for four characters
+and then the second rule for three characters.
+In contrast, the input
+.I accd
+agrees with
+the second rule for four characters and then the first
+rule for three.
+.PP
+In general, REJECT is useful whenever
+the purpose of Lex is not to partition the input
+stream but to detect all examples of some items
+in the input, and the instances of these items
+may overlap or include each other.
+Suppose a digram table of the input is desired;
+normally the digrams overlap, that is the word
+.I the
+is considered to contain
+both
+.I th
+and
+.I he .
+Assuming a two-dimensional array named
+.ul
+digram
+to be incremented, the appropriate
+source is
+.TS
+center;
+l l.
+%%
+[a\-z][a\-z] {
+ digram[yytext[0]][yytext[1]]++;
+ REJECT;
+ }
+\&. ;
+\en ;
+.TE
+where the REJECT is necessary to pick up
+a letter pair beginning at every character, rather than at every
+other character.
+.2C
+.NH
+Lex Source Definitions.
+.PP
+Remember the format of the Lex
+source:
+.TS
+center;
+l.
+{definitions}
+%%
+{rules}
+%%
+{user routines}
+.TE
+So far only the rules have been described. The user needs
+additional options,
+though, to define variables for use in his program and for use
+by Lex.
+These can go either in the definitions section
+or in the rules section.
+.PP
+Remember that Lex is turning the rules into a program.
+Any source not intercepted by Lex is copied
+into the generated program. There are three classes
+of such things.
+.IP 1)
+Any line which is not part of a Lex rule or action
+which begins with a blank or tab is copied into
+the Lex generated program.
+Such source input prior to the first %% delimiter will be external
+to any function in the code; if it appears immediately after the first
+%%,
+it appears in an appropriate place for declarations
+in the function written by Lex which contains the actions.
+This material must look like program fragments,
+and should precede the first Lex rule.
+.IP
+As a side effect of the above, lines which begin with a blank
+or tab, and which contain a comment,
+are passed through to the generated program.
+This can be used to include comments in either the Lex source or
+the generated code. The comments should follow the host
+language convention.
+.IP 2)
+Anything included between lines containing
+only
+.I %{
+and
+.I %}
+is
+copied out as above. The delimiters are discarded.
+This format permits entering text like preprocessor statements that
+must begin in column 1,
+or copying lines that do not look like programs.
+.IP 3)
+Anything after the third %% delimiter, regardless of formats, etc.,
+is copied out after the Lex output.
+.PP
+Definitions intended for Lex are given
+before the first %% delimiter. Any line in this section
+not contained between %{ and %}, and begining
+in column 1, is assumed to define Lex substitution strings.
+The format of such lines is
+.TS
+center;
+l l.
+name translation
+.TE
+and it
+causes the string given as a translation to
+be associated with the name.
+The name and translation
+must be separated by at least one blank or tab, and the name must begin with a letter.
+The translation can then be called out
+by the {name} syntax in a rule.
+Using {D} for the digits and {E} for an exponent field,
+for example, might abbreviate rules to recognize numbers:
+.TS
+center, tab(#);
+l l.
+D#[0\-9]
+E#[DEde][\-+]?{D}+
+%%
+{D}+#printf("integer");
+{D}+"."{D}\(**({E})?#|
+{D}\(**"."{D}+({E})?#|
+{D}+{E}#printf("real");
+.TE
+Note the first two rules for real numbers;
+both require a decimal point and contain
+an optional exponent field,
+but the first requires at least one digit before the
+decimal point and the second requires at least one
+digit after the decimal point.
+To correctly handle the problem
+posed by a Fortran expression such as
+.I 35.EQ.I ,
+which does not contain a real number, a context-sensitive
+rule such as
+.TS
+center;
+l l.
+[0\-9]+/"."EQ printf("integer");
+.TE
+could be used in addition to the normal rule for integers.
+.PP
+The definitions
+section may also contain other commands, including the
+selection of a host language, a character set table,
+a list of start conditions, or adjustments to the default
+size of arrays within Lex itself for larger source programs.
+These possibilities
+are discussed below under ``Summary of Source Format,''
+section 12.
+.2C
+.NH
+Usage.
+.PP
+There are two steps in
+compiling a Lex source program.
+First, the Lex source must be turned into a generated program
+in the host general purpose language.
+Then this program must be compiled and loaded, usually with
+a library of Lex subroutines.
+The generated program
+is on a file named
+.I lex.yy.c .
+The I/O library is defined in terms of the C standard
+library [6].
+.PP
+The C programs generated by Lex are slightly different
+on OS/370, because the
+OS compiler is less powerful than the UNIX or GCOS compilers,
+and does less at compile time.
+C programs generated on GCOS and UNIX are the same.
+.PP
+.I
+UNIX.
+.R
+The library is accessed by the loader flag
+.I \-ll .
+So an appropriate
+set of commands is
+.KS
+.in 5
+lex source
+cc lex.yy.c \-ll
+.in 0
+.KE
+The resulting program is placed on the usual file
+.I
+a.out
+.R
+for later execution.
+To use Lex with Yacc see below.
+Although the default Lex I/O routines use the C standard library,
+the Lex automata themselves do not do so;
+if private versions of
+.I
+input,
+output
+.R
+and
+.I unput
+are given, the library can be avoided.
+.PP
+.2C
+.NH
+Lex and Yacc.
+.PP
+If you want to use Lex with Yacc, note that what Lex writes is a program
+named
+.I
+yylex(),
+.R
+the name required by Yacc for its analyzer.
+Normally, the default main program on the Lex library
+calls this routine, but if Yacc is loaded, and its main
+program is used, Yacc will call
+.I
+yylex().
+.R
+In this case each Lex rule should end with
+.TS
+center;
+l.
+return(token);
+.TE
+where the appropriate token value is returned.
+An easy way to get access
+to Yacc's names for tokens is to
+compile the Lex output file as part of
+the Yacc output file by placing the line
+.TS
+center;
+l.
+# include "lex.yy.c"
+.TE
+in the last section of Yacc input.
+Supposing the grammar to be
+named ``good'' and the lexical rules to be named ``better''
+the UNIX command sequence can just be:
+.TS
+center;
+l.
+yacc good
+lex better
+cc y.tab.c \-ly \-ll
+.TE
+The Yacc library (\-ly) should be loaded before the Lex library,
+to obtain a main program which invokes the Yacc parser.
+The generations of Lex and Yacc programs can be done in
+either order.
+.2C
+.NH
+Examples.
+.PP
+As a trivial problem, consider copying an input file while
+adding 3 to every positive number divisible by 7.
+Here is a suitable Lex source program
+.TS
+center;
+l l.
+%%
+ int k;
+[0\-9]+ {
+ k = atoi(yytext);
+ if (k%7 == 0)
+ printf("%d", k+3);
+ else
+ printf("%d",k);
+ }
+.TE
+to do just that.
+The rule [0\-9]+ recognizes strings of digits;
+.I
+atoi
+.R
+converts the digits to binary
+and stores the result in
+.ul
+k.
+The operator % (remainder) is used to check whether
+.ul
+k
+is divisible by 7; if it is,
+it is incremented by 3 as it is written out.
+It may be objected that this program will alter such
+input items as
+.I 49.63
+or
+.I X7 .
+Furthermore, it increments the absolute value
+of all negative numbers divisible by 7.
+To avoid this, just add a few more rules after the active one,
+as here:
+.TS
+center;
+l l.
+%%
+ int k;
+\-?[0\-9]+ {
+ k = atoi(yytext);
+ printf("%d",
+ k%7 == 0 ? k+3 : k);
+ }
+\-?[0\-9.]+ ECHO;
+[A-Za-z][A-Za-z0-9]+ ECHO;
+.TE
+Numerical strings containing
+a ``.'' or preceded by a letter will be picked up by
+one of the last two rules, and not changed.
+The
+.I if\-else
+has been replaced by
+a C conditional expression to save space;
+the form
+.ul
+a?b:c
+means ``if
+.I a
+then
+.I b
+else
+.I c ''.
+.PP
+For an example of statistics gathering, here
+is a program which histograms the lengths
+of words, where a word is defined as a string of letters.
+.TS
+center;
+l l.
+ int lengs[100];
+%%
+[a\-z]+ lengs[yyleng]++;
+\&. |
+\en ;
+%%
+.T&
+l s.
+yywrap()
+{
+int i;
+printf("Length No. words\en");
+for(i=0; i<100; i++)
+ if (lengs[i] > 0)
+ printf("%5d%10d\en",i,lengs[i]);
+return(1);
+}
+.TE
+This program
+accumulates the histogram, while producing no output. At the end
+of the input it prints the table.
+The final statement
+.I
+return(1);
+.R
+indicates that Lex is to perform wrapup. If
+.I
+yywrap
+.R
+returns zero (false)
+it implies that further input is available
+and the program is
+to continue reading and processing.
+To provide a
+.I
+yywrap
+.R
+that never
+returns true causes an infinite loop.
+.PP
+As a larger example,
+here are some parts of a program written by N. L. Schryer
+to convert double precision Fortran to single precision Fortran.
+Because Fortran does not distinguish upper and lower case letters,
+this routine begins by defining a set of classes including
+both cases of each letter:
+.TS
+center;
+l l.
+a [aA]
+b [bB]
+c [cC]
+\&...
+z [zZ]
+.TE
+An additional class recognizes white space:
+.TS
+center;
+l l.
+W [ \et]\(**
+.TE
+The first rule changes
+``double precision'' to ``real'', or ``DOUBLE PRECISION'' to ``REAL''.
+.TS
+center;
+l.
+{d}{o}{u}{b}{l}{e}{W}{p}{r}{e}{c}{i}{s}{i}{o}{n} {
+ printf(yytext[0]==\(fmd\(fm? "real" : "REAL");
+ }
+.TE
+Care is taken throughout this program to preserve the case
+(upper or lower)
+of the original program.
+The conditional operator is used to
+select the proper form of the keyword.
+The next rule copies continuation card indications to
+avoid confusing them with constants:
+.TS
+center;
+l l.
+^" "[^ 0] ECHO;
+.TE
+In the regular expression, the quotes surround the
+blanks.
+It is interpreted as
+``beginning of line, then five blanks, then
+anything but blank or zero.''
+Note the two different meanings of
+.I ^ .
+There follow some rules to change double precision
+constants to ordinary floating constants.
+.TS
+center;
+l.
+[0\-9]+{W}{d}{W}[+\-]?{W}[0\-9]+ |
+[0\-9]+{W}"."{W}{d}{W}[+\-]?{W}[0\-9]+ |
+"."{W}[0\-9]+{W}{d}{W}[+\-]?{W}[0\-9]+ {
+ /\(** convert constants \(**/
+ for(p=yytext; \(**p != 0; p++)
+ {
+ if (\(**p == \(fmd\(fm || \(**p == \(fmD\(fm)
+ \(**p=+ \(fme\(fm\- \(fmd\(fm;
+ ECHO;
+ }
+.TE
+After the floating point constant is recognized, it is
+scanned by the
+.ul
+for
+loop
+to find the letter
+.I d
+or
+.I D .
+The program then adds
+.I \(fme\(fm\-\(fmd\(fm ,
+which converts
+it to the next letter of the alphabet.
+The modified constant, now single-precision,
+is written out again.
+There follow a series of names which must be respelled to remove
+their initial \fId\fR.
+By using the
+array
+.I
+yytext
+.R
+the same action suffices for all the names (only a sample of
+a rather long list is given here).
+.TS
+center;
+l l.
+{d}{s}{i}{n} |
+{d}{c}{o}{s} |
+{d}{s}{q}{r}{t} |
+{d}{a}{t}{a}{n} |
+\&...
+{d}{f}{l}{o}{a}{t} printf("%s",yytext+1);
+.TE
+Another list of names must have initial \fId\fR changed to initial \fIa\fR:
+.TS
+center;
+l l.
+{d}{l}{o}{g} |
+{d}{l}{o}{g}10 |
+{d}{m}{i}{n}1 |
+{d}{m}{a}{x}1 {
+ yytext[0] =+ \(fma\(fm \- \(fmd\(fm;
+ ECHO;
+ }
+.TE
+And one routine
+must have initial \fId\fR changed to initial \fIr\fR:
+.TS
+center, tab(#);
+l l.
+{d}1{m}{a}{c}{h}#{yytext[0] =+ \(fmr\(fm \- \(fmd\(fm;
+#ECHO;
+#}
+.TE
+To avoid such names as \fIdsinx\fR being detected as instances
+of \fIdsin\fR, some final rules pick up longer words as identifiers
+and copy some surviving characters:
+.TS
+center;
+l l.
+[A\-Za\-z][A\-Za\-z0\-9]\(** |
+[0\-9]+ |
+\en |
+\&. ECHO;
+.TE
+Note that this program is not complete; it
+does not deal with the spacing problems in Fortran or
+with the use of keywords as identifiers.
+.br
+.2C
+.NH
+Left Context Sensitivity.
+.PP
+Sometimes
+it is desirable to have several sets of lexical rules
+to be applied at different times in the input.
+For example, a compiler preprocessor might distinguish
+preprocessor statements and analyze them differently
+from ordinary statements.
+This requires
+sensitivity
+to prior context, and there are several ways of handling
+such problems.
+The \fI^\fR operator, for example, is a prior context operator,
+recognizing immediately preceding left context just as \fI$\fR recognizes
+immediately following right context.
+Adjacent left context could be extended, to produce a facility similar to
+that for adjacent right context, but it is unlikely
+to be as useful, since often the relevant left context
+appeared some time earlier, such as at the beginning of a line.
+.PP
+This section describes three means of dealing
+with different environments: a simple use of flags,
+when only a few rules change from one environment to another,
+the use of
+.I
+start conditions
+.R
+on rules,
+and the possibility of making multiple lexical analyzers all run
+together.
+In each case, there are rules which recognize the need to change the
+environment in which the
+following input text is analyzed, and set some parameter
+to reflect the change. This may be a flag explicitly tested by
+the user's action code; such a flag is the simplest way of dealing
+with the problem, since Lex is not involved at all.
+It may be more convenient,
+however,
+to have Lex remember the flags as initial conditions on the rules.
+Any rule may be associated with a start condition. It will only
+be recognized when Lex is in
+that start condition.
+The current start condition may be changed at any time.
+Finally, if the sets of rules for the different environments
+are very dissimilar,
+clarity may be best achieved by writing several distinct lexical
+analyzers, and switching from one to another as desired.
+.PP
+Consider the following problem: copy the input to the output,
+changing the word \fImagic\fR to \fIfirst\fR on every line which began
+with the letter \fIa\fR, changing \fImagic\fR to \fIsecond\fR on every line
+which began with the letter \fIb\fR, and changing
+\fImagic\fR to \fIthird\fR on every line which began
+with the letter \fIc\fR. All other words and all other lines
+are left unchanged.
+.PP
+These rules are so simple that the easiest way
+to do this job is with a flag:
+.TS
+center;
+l l.
+ int flag;
+%%
+^a {flag = \(fma\(fm; ECHO;}
+^b {flag = \(fmb\(fm; ECHO;}
+^c {flag = \(fmc\(fm; ECHO;}
+\en {flag = 0 ; ECHO;}
+magic {
+ switch (flag)
+ {
+ case \(fma\(fm: printf("first"); break;
+ case \(fmb\(fm: printf("second"); break;
+ case \(fmc\(fm: printf("third"); break;
+ default: ECHO; break;
+ }
+ }
+.TE
+should be adequate.
+.PP
+To handle the same problem with start conditions, each
+start condition must be introduced to Lex in the definitions section
+with a line reading
+.TS
+center;
+l l.
+%Start name1 name2 ...
+.TE
+where the conditions may be named in any order.
+The word \fIStart\fR may be abbreviated to \fIs\fR or \fIS\fR.
+The conditions may be referenced at the
+head of a rule with the <> brackets:
+.TS
+center;
+l.
+<name1>expression
+.TE
+is a rule which is only recognized when Lex is in the
+start condition \fIname1\fR.
+To enter a start condition,
+execute the action statement
+.TS
+center;
+l.
+BEGIN name1;
+.TE
+which changes the start condition to \fIname1\fR.
+To resume the normal state,
+.TS
+center;
+l.
+BEGIN 0;
+.TE
+resets the initial condition
+of the Lex automaton interpreter.
+A rule may be active in several
+start conditions:
+.TS
+center;
+l.
+<name1,name2,name3>
+.TE
+is a legal prefix. Any rule not beginning with the
+<> prefix operator is always active.
+.PP
+The same example as before can be written:
+.TS
+center;
+l l.
+%START AA BB CC
+%%
+^a {ECHO; BEGIN AA;}
+^b {ECHO; BEGIN BB;}
+^c {ECHO; BEGIN CC;}
+\en {ECHO; BEGIN 0;}
+<AA>magic printf("first");
+<BB>magic printf("second");
+<CC>magic printf("third");
+.TE
+where the logic is exactly the same as in the previous
+method of handling the problem, but Lex does the work
+rather than the user's code.
+.2C
+.NH
+Character Set.
+.PP
+The programs generated by Lex handle
+character I/O only through the routines
+.I
+input,
+output,
+.R
+and
+.I
+unput.
+.R
+Thus the character representation
+provided in these routines
+is accepted by Lex and employed to return
+values in
+.I
+yytext.
+.R
+For internal use
+a character is represented as a small integer
+which, if the standard library is used,
+has a value equal to the integer value of the bit
+pattern representing the character on the host computer.
+Normally, the letter
+.I a
+is represented as the same form as the character constant
+.I \(fma\(fm .
+If this interpretation is changed, by providing I/O
+routines which translate the characters,
+Lex must be told about
+it, by giving a translation table.
+This table must be in the definitions section,
+and must be bracketed by lines containing only
+``%T''.
+The table contains lines of the form
+.TS
+center;
+l.
+{integer} {character string}
+.TE
+which indicate the value associated with each character.
+Thus the next example
+.\" .GS 2
+.TS
+center;
+l l.
+%T
+ 1 Aa
+ 2 Bb
+\&...
+26 Zz
+27 \en
+28 +
+29 \-
+30 0
+31 1
+\&...
+39 9
+%T
+.TE
+.sp
+.ce 1
+Sample character table.
+.\" .GE
+maps the lower and upper case letters together into the integers 1 through 26,
+newline into 27, + and \- into 28 and 29, and the
+digits into 30 through 39.
+Note the escape for newline.
+If a table is supplied, every character that is to appear either
+in the rules or in any valid input must be included
+in the table.
+No character
+may be assigned the number 0, and no character may be
+assigned a bigger number than the size of the hardware character set.
+.2C
+.NH
+Summary of Source Format.
+.PP
+The general form of a Lex source file is:
+.TS
+center;
+l.
+{definitions}
+%%
+{rules}
+%%
+{user subroutines}
+.TE
+The definitions section contains
+a combination of
+.IP 1)
+Definitions, in the form ``name space translation''.
+.IP 2)
+Included code, in the form ``space code''.
+.IP 3)
+Included code, in the form
+.TS
+center;
+l.
+%{
+code
+%}
+.TE
+.ns
+.IP 4)
+Start conditions, given in the form
+.TS
+center;
+l.
+%S name1 name2 ...
+.TE
+.ns
+.IP 5)
+Character set tables, in the form
+.TS
+center;
+l.
+%T
+number space character-string
+\&...
+%T
+.TE
+.ns
+.IP 6)
+Changes to internal array sizes, in the form
+.TS
+center;
+l.
+%\fIx\fR\0\0\fInnn\fR
+.TE
+where \fInnn\fR is a decimal integer representing an array size
+and \fIx\fR selects the parameter as follows:
+.TS
+center;
+c c
+c l.
+Letter Parameter
+p positions
+n states
+e tree nodes
+a transitions
+k packed character classes
+o output array size
+.TE
+.LP
+Lines in the rules section have the form ``expression action''
+where the action may be continued on succeeding
+lines by using braces to delimit it.
+.PP
+Regular expressions in Lex use the following
+operators:
+.br
+.TS
+center;
+l l.
+x the character "x"
+"x" an "x", even if x is an operator.
+\ex an "x", even if x is an operator.
+[xy] the character x or y.
+[x\-z] the characters x, y or z.
+[^x] any character but x.
+\&. any character but newline.
+^x an x at the beginning of a line.
+<y>x an x when Lex is in start condition y.
+x$ an x at the end of a line.
+x? an optional x.
+x\(** 0,1,2, ... instances of x.
+x+ 1,2,3, ... instances of x.
+x|y an x or a y.
+(x) an x.
+x/y an x but only if followed by y.
+{xx} the translation of xx from the
+ definitions section.
+x{m,n} \fIm\fR through \fIn\fR occurrences of x
+.TE
+.NH
+Caveats and Bugs.
+.PP
+There are pathological expressions which
+produce exponential growth of the tables when
+converted to deterministic machines;
+fortunately, they are rare.
+.PP
+REJECT does not rescan the input; instead it remembers the results of the previous
+scan. This means that if a rule with trailing context is found, and
+REJECT executed, the user
+must not have used
+.ul
+unput
+to change the characters forthcoming
+from the input stream.
+This is the only restriction on the user's ability to manipulate
+the not-yet-processed input.
+.PP
+.2C
+.NH
+Acknowledgments.
+.PP
+As should
+be obvious from the above, the outside of Lex
+is patterned
+on Yacc and the inside on Aho's string matching routines.
+Therefore, both S. C. Johnson and A. V. Aho
+are really originators
+of much of Lex,
+as well as debuggers of it.
+Many thanks are due to both.
+.PP
+The code of the current version of Lex was designed, written,
+and debugged by Eric Schmidt.
+.if 0 .SG MH-1274-MEL-unix
+.sp 1
+.2C
+.NH
+References.
+.sp 1v
+.IP 1.
+B. W. Kernighan and D. M. Ritchie,
+.I
+The C Programming Language,
+.R
+Prentice-Hall, N. J. (1978).
+.IP 2.
+B. W. Kernighan,
+.I
+Ratfor: A Preprocessor for a Rational Fortran,
+.R
+Software \- Practice and Experience,
+\fB5\fR, pp. 395-496 (1975).
+.IP 3.
+S. C. Johnson,
+.I
+Yacc: Yet Another Compiler Compiler,
+.R
+Computing Science Technical Report No. 32,
+1975,
+.MH
+.if \n(tm (also TM 75-1273-6)
+.IP 4.
+A. V. Aho and M. J. Corasick,
+.I
+Efficient String Matching: An Aid to Bibliographic Search,
+.R
+Comm. ACM
+.B
+18,
+.R
+333-340 (1975).
+.IP 5.
+B. W. Kernighan, D. M. Ritchie and K. L. Thompson,
+.I
+QED Text Editor,
+.R
+Computing Science Technical Report No. 5,
+1972,
+.MH
+.IP 6.
+D. M. Ritchie,
+private communication.
+See also
+M. E. Lesk,
+.I
+The Portable C Library,
+.R
+Computing Science Technical Report No. 31,
+.MH
+.if \n(tm (also TM 75-1274-11)
diff --git a/share/doc/psd/17.m4/Makefile b/share/doc/psd/17.m4/Makefile
new file mode 100644
index 0000000..c48921f
--- /dev/null
+++ b/share/doc/psd/17.m4/Makefile
@@ -0,0 +1,8 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/17.m4
+SRCS= m4.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/17.m4/m4.ms b/share/doc/psd/17.m4/m4.ms
new file mode 100644
index 0000000..c7a2fd9
--- /dev/null
+++ b/share/doc/psd/17.m4/m4.ms
@@ -0,0 +1,973 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m4.ms 6.3 (Berkeley) 6/5/93
+.\"
+.\" $FreeBSD$
+.de MH
+Bell Laboratories, Murray Hill, NJ 07974.
+..
+.EH 'PSD:17-%''The M4 Macro Processor'
+.OH 'The M4 Macro Processor''PSD:17-%'
+.if n .ls 2
+.tr _\(em
+.tr *\(**
+.de UC
+\&\\$3\s-1\\$1\\s0\&\\$2
+..
+.de IT
+.if n .ul
+\&\\$3\f2\\$1\fP\&\\$2
+..
+.de UL
+.if n .ul
+\&\\$3\f3\\$1\fP\&\\$2
+..
+.de P1
+.DS I 3n
+.if n .ls 2
+.nf
+.if n .ta 5 10 15 20 25 30 35 40 45 50 55 60
+.if t .ta .4i .8i 1.2i 1.6i 2i 2.4i 2.8i 3.2i 3.6i 4i 4.4i 4.8i 5.2i 5.6i
+.if t .tr -\(mi|\(bv'\(fm^\(no*\(**
+.tr `\(ga'\(aa
+.if t .tr _\(ul
+.ft 3
+.lg 0
+..
+.de P2
+.ps \\n(PS
+.vs \\n(VSp
+.ft R
+.if n .ls 2
+.tr --||''^^!!
+.if t .tr _\(em
+.fi
+.lg
+.DE
+.if t .tr _\(em
+..
+.hw semi-colon
+.hw estab-lished
+.hy 14
+. \"2=not last lines; 4= no -xx; 8=no xx-
+. \"special chars in programs
+. \" start of text
+.\".RP
+.\" .....TR 59
+.\" .....TM 77-1273-6 39199 39199-11
+.ND "July 1, 1977"
+.TL
+The M4 Macro Processor
+.AU "MH 2C-518" 6021
+Brian W. Kernighan
+.AU "MH 2C-517" 3770
+Dennis M. Ritchie
+.AI
+.MH
+.AB
+.PP
+M4 is a macro processor available on
+.UX
+and
+.UC GCOS .
+Its primary use has been as a
+front end for Ratfor for those
+cases where parameterless macros
+are not adequately powerful.
+It has also been used for languages as disparate as C and Cobol.
+M4 is particularly suited for functional languages like Fortran, PL/I and C
+since macros are specified in a functional notation.
+.PP
+M4 provides features seldom found even in much larger
+macro processors,
+including
+.IP " \(bu"
+arguments
+.IP " \(bu"
+condition testing
+.IP " \(bu"
+arithmetic capabilities
+.IP " \(bu"
+string and substring functions
+.IP " \(bu"
+file manipulation
+.LP
+.PP
+This paper is a user's manual for M4.
+.AE
+.\" .CS 6 0 6 0 0 1
+.if t .2C
+.SH
+Introduction
+.PP
+A macro processor is a useful way to enhance a programming language,
+to make it more palatable
+or more readable,
+or to tailor it to a particular application.
+The
+.UL #define
+statement in C
+and the analogous
+.UL define
+in Ratfor
+are examples of the basic facility provided by
+any macro processor _
+replacement of text by other text.
+.PP
+The M4 macro processor is an extension of a macro processor called M3
+which was written by D. M. Ritchie
+for the AP-3 minicomputer;
+M3 was in turn based on a macro processor implemented for [1].
+Readers unfamiliar with the basic ideas of macro processing
+may wish to read some of the discussion there.
+.PP
+M4 is a suitable front end for Ratfor and C,
+and has also been used successfully with Cobol.
+Besides the straightforward replacement of one string of text by another,
+it provides
+macros with arguments,
+conditional macro expansion,
+arithmetic,
+file manipulation,
+and some specialized string processing functions.
+.PP
+The basic operation of M4
+is to copy its input to its output.
+As the input is read, however, each alphanumeric ``token''
+(that is, string of letters and digits) is checked.
+If it is the name of a macro,
+then the name of the macro is replaced by its defining text,
+and the resulting string is pushed back onto the
+input to be rescanned.
+Macros may be called with arguments, in which case the arguments are collected
+and substituted into the right places in the defining text
+before it is rescanned.
+.PP
+M4 provides a collection of about twenty built-in
+macros
+which perform various useful operations;
+in addition, the user can define new macros.
+Built-ins and user-defined macros work exactly the same way, except that
+some of the built-in macros have side effects
+on the state of the process.
+.SH
+Usage
+.PP
+On
+.UC UNIX ,
+use
+.P1
+m4 [files]
+.P2
+Each argument file is processed in order;
+if there are no arguments, or if an argument
+is `\-',
+the standard input is read at that point.
+The processed text is written on the standard output,
+which may be captured for subsequent processing with
+.P1
+m4 [files] >outputfile
+.P2
+On
+.UC GCOS ,
+usage is identical, but the program is called
+.UL \&./m4 .
+.SH
+Defining Macros
+.PP
+The primary built-in function of M4
+is
+.UL define ,
+which is used to define new macros.
+The input
+.P1
+define(name, stuff)
+.P2
+causes the string
+.UL name
+to be defined as
+.UL stuff .
+All subsequent occurrences of
+.UL name
+will be replaced by
+.UL stuff .
+.UL name
+must be alphanumeric and must begin with a letter
+(the underscore \(ul counts as a letter).
+.UL stuff
+is any text that contains balanced parentheses;
+it may stretch over multiple lines.
+.PP
+Thus, as a typical example,
+.P1
+define(N, 100)
+ ...
+if (i > N)
+.P2
+defines
+.UL N
+to be 100, and uses this ``symbolic constant'' in a later
+.UL if
+statement.
+.PP
+The left parenthesis must immediately follow the word
+.UL define ,
+to signal that
+.UL define
+has arguments.
+If a macro or built-in name is not followed immediately by `(',
+it is assumed to have no arguments.
+This is the situation for
+.UL N
+above;
+it is actually a macro with no arguments,
+and thus when it is used there need be no (...) following it.
+.PP
+You should also notice that a macro name is only recognized as such
+if it appears surrounded by non-alphanumerics.
+For example, in
+.P1
+define(N, 100)
+ ...
+if (NNN > 100)
+.P2
+the variable
+.UL NNN
+is absolutely unrelated to the defined macro
+.UL N ,
+even though it contains a lot of
+.UL N 's.
+.PP
+Things may be defined in terms of other things.
+For example,
+.P1
+define(N, 100)
+define(M, N)
+.P2
+defines both M and N to be 100.
+.PP
+What happens if
+.UL N
+is redefined?
+Or, to say it another way, is
+.UL M
+defined as
+.UL N
+or as 100?
+In M4,
+the latter is true _
+.UL M
+is 100, so even if
+.UL N
+subsequently changes,
+.UL M
+does not.
+.PP
+This behavior arises because
+M4 expands macro names into their defining text as soon as it possibly can.
+Here, that means that when the string
+.UL N
+is seen as the arguments of
+.UL define
+are being collected, it is immediately replaced by 100;
+it's just as if you had said
+.P1
+define(M, 100)
+.P2
+in the first place.
+.PP
+If this isn't what you really want, there are two ways out of it.
+The first, which is specific to this situation,
+is to interchange the order of the definitions:
+.P1
+define(M, N)
+define(N, 100)
+.P2
+Now
+.UL M
+is defined to be the string
+.UL N ,
+so when you ask for
+.UL M
+later, you'll always get the value of
+.UL N
+at that time
+(because the
+.UL M
+will be replaced by
+.UL N
+which will be replaced by 100).
+.SH
+Quoting
+.PP
+The more general solution is to delay the expansion of
+the arguments of
+.UL define
+by
+.ul
+quoting
+them.
+Any text surrounded by the single quotes \(ga and \(aa
+is not expanded immediately, but has the quotes stripped off.
+If you say
+.P1
+define(N, 100)
+define(M, `N')
+.P2
+the quotes around the
+.UL N
+are stripped off as the argument is being collected,
+but they have served their purpose, and
+.UL M
+is defined as
+the string
+.UL N ,
+not 100.
+The general rule is that M4 always strips off
+one level of single quotes whenever it evaluates
+something.
+This is true even outside of
+macros.
+If you want the word
+.UL define
+to appear in the output,
+you have to quote it in the input,
+as in
+.P1
+ `define' = 1;
+.P2
+.PP
+As another instance of the same thing, which is a bit more surprising,
+consider redefining
+.UL N :
+.P1
+define(N, 100)
+ ...
+define(N, 200)
+.P2
+Perhaps regrettably, the
+.UL N
+in the second definition is
+evaluated as soon as it's seen;
+that is, it is
+replaced by
+100, so it's as if you had written
+.P1
+define(100, 200)
+.P2
+This statement is ignored by M4, since you can only define things that look
+like names, but it obviously doesn't have the effect you wanted.
+To really redefine
+.UL N ,
+you must delay the evaluation by quoting:
+.P1
+define(N, 100)
+ ...
+define(`N', 200)
+.P2
+In M4,
+it is often wise to quote the first argument of a macro.
+.PP
+If \` and \' are not convenient for some reason,
+the quote characters can be changed with the built-in
+.UL changequote :
+.P1
+changequote([, ])
+.P2
+makes the new quote characters the left and right brackets.
+You can restore the original characters with just
+.P1
+changequote
+.P2
+.PP
+There are two additional built-ins related to
+.UL define .
+.UL undefine
+removes the definition of some macro or built-in:
+.P1
+undefine(`N')
+.P2
+removes the definition of
+.UL N .
+(Why are the quotes absolutely necessary?)
+Built-ins can be removed with
+.UL undefine ,
+as in
+.P1
+undefine(`define')
+.P2
+but once you remove one, you can never get it back.
+.PP
+The built-in
+.UL ifdef
+provides a way to determine if a macro is currently defined.
+In particular, M4 has pre-defined the names
+.UL unix
+and
+.UL gcos
+on the corresponding systems, so you can
+tell which one you're using:
+.P1
+ifdef(`unix', `define(wordsize,16)' )
+ifdef(`gcos', `define(wordsize,36)' )
+.P2
+makes a definition appropriate for the particular machine.
+Don't forget the quotes!
+.PP
+.UL ifdef
+actually permits three arguments;
+if the name is undefined, the value of
+.UL ifdef
+is then the third argument, as in
+.P1
+ifdef(`unix', on UNIX, not on UNIX)
+.P2
+.SH
+Arguments
+.PP
+So far we have discussed the simplest form of macro processing _
+replacing one string by another (fixed) string.
+User-defined macros may also have arguments, so different invocations
+can have different results.
+Within the replacement text for a macro
+(the second argument of its
+.UL define )
+any occurrence of
+.UL $n
+will be replaced by the
+.UL n th
+argument when the macro
+is actually used.
+Thus, the macro
+.UL bump ,
+defined as
+.P1
+define(bump, $1 = $1 + 1)
+.P2
+generates code to increment its argument by 1:
+.P1
+bump(x)
+.P2
+is
+.P1
+x = x + 1
+.P2
+.PP
+A macro can have as many arguments as you want,
+but only the first nine are accessible,
+through
+.UL $1
+to
+.UL $9 .
+(The macro name itself is
+.UL $0 ,
+although that is less commonly used.)
+Arguments that are not supplied are replaced by null strings,
+so
+we can define a macro
+.UL cat
+which simply concatenates its arguments, like this:
+.P1
+define(cat, $1$2$3$4$5$6$7$8$9)
+.P2
+Thus
+.P1
+cat(x, y, z)
+.P2
+is equivalent to
+.P1
+xyz
+.P2
+.UL $4
+through
+.UL $9
+are null, since no corresponding arguments were provided.
+.PP
+.PP
+Leading unquoted blanks, tabs, or newlines that occur during argument collection
+are discarded.
+All other white space is retained.
+Thus
+.P1
+define(a, b c)
+.P2
+defines
+.UL a
+to be
+.UL b\ \ \ c .
+.PP
+Arguments are separated by commas, but parentheses are counted properly,
+so a comma ``protected'' by parentheses does not terminate an argument.
+That is, in
+.P1
+define(a, (b,c))
+.P2
+there are only two arguments;
+the second is literally
+.UL (b,c) .
+And of course a bare comma or parenthesis can be inserted by quoting it.
+.SH
+Arithmetic Built-ins
+.PP
+M4 provides two built-in functions for doing arithmetic
+on integers (only).
+The simplest is
+.UL incr ,
+which increments its numeric argument by 1.
+Thus to handle the common programming situation
+where you want a variable to be defined as ``one more than N'',
+write
+.P1
+define(N, 100)
+define(N1, `incr(N)')
+.P2
+Then
+.UL N1
+is defined as one more than the current value of
+.UL N .
+.PP
+The more general mechanism for arithmetic is a built-in
+called
+.UL eval ,
+which is capable of arbitrary arithmetic on integers.
+It provides the operators
+(in decreasing order of precedence)
+.DS
+unary + and \(mi
+** or ^ (exponentiation)
+* / % (modulus)
++ \(mi
+== != < <= > >=
+! (not)
+& or && (logical and)
+\(or or \(or\(or (logical or)
+.DE
+Parentheses may be used to group operations where needed.
+All the operands of
+an expression given to
+.UL eval
+must ultimately be numeric.
+The numeric value of a true relation
+(like 1>0)
+is 1, and false is 0.
+The precision in
+.UL eval
+is
+32 bits on
+.UC UNIX
+and 36 bits on
+.UC GCOS .
+.PP
+As a simple example, suppose we want
+.UL M
+to be
+.UL 2**N+1 .
+Then
+.P1
+define(N, 3)
+define(M, `eval(2**N+1)')
+.P2
+As a matter of principle, it is advisable
+to quote the defining text for a macro
+unless it is very simple indeed
+(say just a number);
+it usually gives the result you want,
+and is a good habit to get into.
+.SH
+File Manipulation
+.PP
+You can include a new file in the input at any time by
+the built-in function
+.UL include :
+.P1
+include(filename)
+.P2
+inserts the contents of
+.UL filename
+in place of the
+.UL include
+command.
+The contents of the file is often a set of definitions.
+The value
+of
+.UL include
+(that is, its replacement text)
+is the contents of the file;
+this can be captured in definitions, etc.
+.PP
+It is a fatal error if the file named in
+.UL include
+cannot be accessed.
+To get some control over this situation, the alternate form
+.UL sinclude
+can be used;
+.UL sinclude
+(``silent include'')
+says nothing and continues if it can't access the file.
+.PP
+It is also possible to divert the output of M4 to temporary files during processing,
+and output the collected material upon command.
+M4 maintains nine of these diversions, numbered 1 through 9.
+If you say
+.P1
+divert(n)
+.P2
+all subsequent output is put onto the end of a temporary file
+referred to as
+.UL n .
+Diverting to this file is stopped by another
+.UL divert
+command;
+in particular,
+.UL divert
+or
+.UL divert(0)
+resumes the normal output process.
+.PP
+Diverted text is normally output all at once
+at the end of processing,
+with the diversions output in numeric order.
+It is possible, however, to bring back diversions
+at any time,
+that is, to append them to the current diversion.
+.P1
+undivert
+.P2
+brings back all diversions in numeric order, and
+.UL undivert
+with arguments brings back the selected diversions
+in the order given.
+The act of undiverting discards the diverted stuff,
+as does diverting into a diversion
+whose number is not between 0 and 9 inclusive.
+.PP
+The value of
+.UL undivert
+is
+.ul
+not
+the diverted stuff.
+Furthermore, the diverted material is
+.ul
+not
+rescanned for macros.
+.PP
+The built-in
+.UL divnum
+returns the number of the currently active diversion.
+This is zero during normal processing.
+.SH
+System Command
+.PP
+You can run any program in the local operating system
+with the
+.UL syscmd
+built-in.
+For example,
+.P1
+syscmd(date)
+.P2
+on
+.UC UNIX
+runs the
+.UL date
+command.
+Normally
+.UL syscmd
+would be used to create a file
+for a subsequent
+.UL include .
+.PP
+To facilitate making unique file names, the built-in
+.UL maketemp
+is provided, with specifications identical to the system function
+.ul
+mktemp:
+a string of XXXXX in the argument is replaced
+by the process id of the current process.
+.SH
+Conditionals
+.PP
+There is a built-in called
+.UL ifelse
+which enables you to perform arbitrary conditional testing.
+In the simplest form,
+.P1
+ifelse(a, b, c, d)
+.P2
+compares the two strings
+.UL a
+and
+.UL b .
+If these are identical,
+.UL ifelse
+returns
+the string
+.UL c ;
+otherwise it returns
+.UL d .
+Thus we might define a macro called
+.UL compare
+which compares two strings and returns ``yes'' or ``no''
+if they are the same or different.
+.P1
+define(compare, `ifelse($1, $2, yes, no)')
+.P2
+Note the quotes,
+which prevent too-early evaluation of
+.UL ifelse .
+.PP
+If the fourth argument is missing, it is treated as empty.
+.PP
+.UL ifelse
+can actually have any number of arguments,
+and thus provides a limited form of multi-way decision capability.
+In the input
+.P1
+ifelse(a, b, c, d, e, f, g)
+.P2
+if the string
+.UL a
+matches the string
+.UL b ,
+the result is
+.UL c .
+Otherwise, if
+.UL d
+is the same as
+.UL e ,
+the result is
+.UL f .
+Otherwise the result is
+.UL g .
+If the final argument
+is omitted, the result is null,
+so
+.P1
+ifelse(a, b, c)
+.P2
+is
+.UL c
+if
+.UL a
+matches
+.UL b ,
+and null otherwise.
+.SH
+String Manipulation
+.PP
+The built-in
+.UL len
+returns the length of the string that makes up its argument.
+Thus
+.P1
+len(abcdef)
+.P2
+is 6, and
+.UL len((a,b))
+is 5.
+.PP
+The built-in
+.UL substr
+can be used to produce substrings of strings.
+.UL substr(s,\ i,\ n)
+returns the substring of
+.UL s
+that starts at the
+.UL i th
+position
+(origin zero),
+and is
+.UL n
+characters long.
+If
+.UL n
+is omitted, the rest of the string is returned,
+so
+.P1
+substr(`now is the time', 1)
+.P2
+is
+.P1
+ow is the time
+.P2
+If
+.UL i
+or
+.UL n
+are out of range, various sensible things happen.
+.PP
+.UL index(s1,\ s2)
+returns the index (position) in
+.UL s1
+where the string
+.UL s2
+occurs, or \-1
+if it doesn't occur.
+As with
+.UL substr ,
+the origin for strings is 0.
+.PP
+The built-in
+.UL translit
+performs character transliteration.
+.P1
+translit(s, f, t)
+.P2
+modifies
+.UL s
+by replacing any character found in
+.UL f
+by the corresponding character of
+.UL t .
+That is,
+.P1
+translit(s, aeiou, 12345)
+.P2
+replaces the vowels by the corresponding digits.
+If
+.UL t
+is shorter than
+.UL f ,
+characters which don't have an entry in
+.UL t
+are deleted; as a limiting case,
+if
+.UL t
+is not present at all,
+characters from
+.UL f
+are deleted from
+.UL s .
+So
+.P1
+translit(s, aeiou)
+.P2
+deletes vowels from
+.UL s .
+.PP
+There is also a built-in called
+.UL dnl
+which deletes all characters that follow it up to
+and including the next newline;
+it is useful mainly for throwing away
+empty lines that otherwise tend to clutter up M4 output.
+For example, if you say
+.P1
+define(N, 100)
+define(M, 200)
+define(L, 300)
+.P2
+the newline at the end of each line is not part of the definition,
+so it is copied into the output, where it may not be wanted.
+If you add
+.UL dnl
+to each of these lines, the newlines will disappear.
+.PP
+Another way to achieve this, due to J. E. Weythman,
+is
+.P1
+divert(-1)
+ define(...)
+ ...
+divert
+.P2
+.SH
+Printing
+.PP
+The built-in
+.UL errprint
+writes its arguments out on the standard error file.
+Thus you can say
+.P1
+errprint(`fatal error')
+.P2
+.PP
+.UL dumpdef
+is a debugging aid which
+dumps the current definitions of defined terms.
+If there are no arguments, you get everything;
+otherwise you get the ones you name as arguments.
+Don't forget to quote the names!
+.SH
+Summary of Built-ins
+.PP
+Each entry is preceded by the
+page number where it is described.
+.DS
+.tr '\'`\`
+.ta .25i
+3 changequote(L, R)
+1 define(name, replacement)
+4 divert(number)
+4 divnum
+5 dnl
+5 dumpdef(`name', `name', ...)
+5 errprint(s, s, ...)
+4 eval(numeric expression)
+3 ifdef(`name', this if true, this if false)
+5 ifelse(a, b, c, d)
+4 include(file)
+3 incr(number)
+5 index(s1, s2)
+5 len(string)
+4 maketemp(...XXXXX...)
+4 sinclude(file)
+5 substr(string, position, number)
+4 syscmd(s)
+5 translit(str, from, to)
+3 undefine(`name')
+4 undivert(number,number,...)
+.DE
+.SH
+Acknowledgements
+.PP
+We are indebted to Rick Becker, John Chambers,
+Doug McIlroy,
+and especially Jim Weythman,
+whose pioneering use of M4 has led to several valuable improvements.
+We are also deeply grateful to Weythman for several substantial contributions
+to the code.
+.\" .SG
+.SH
+References
+.LP
+.IP [1]
+B. W. Kernighan and P. J. Plauger,
+.ul
+Software Tools,
+Addison-Wesley, Inc., 1976.
diff --git a/share/doc/psd/18.gprof/Makefile b/share/doc/psd/18.gprof/Makefile
new file mode 100644
index 0000000..1097072
--- /dev/null
+++ b/share/doc/psd/18.gprof/Makefile
@@ -0,0 +1,15 @@
+# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
+# $FreeBSD$
+
+VOLUME= psd/18.gprof
+SRCS= header.me abstract.me intro.me profiling.me gathering.me \
+ postp.me present.me refs.me
+EXTRA= postp1.pic postp2.pic postp3.pic pres1.pic pres2.pic
+MACROS= -me
+USE_SOELIM=
+USE_PIC=
+USE_TBL=
+USE_EQN=
+SRCDIR= ${.CURDIR}/../../../../usr.bin/gprof/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/20.ipctut/Makefile b/share/doc/psd/20.ipctut/Makefile
new file mode 100644
index 0000000..934cdea
--- /dev/null
+++ b/share/doc/psd/20.ipctut/Makefile
@@ -0,0 +1,14 @@
+# From: @(#)Makefile 8.1 (Berkeley) 8/14/93
+# $FreeBSD$
+
+VOLUME= psd/20.ipctut
+SRCS= tutor.me
+MACROS= -me
+EXTRA= dgramread.c dgramsend.c fig2.pic fig3.pic fig8.pic pipe.c \
+ socketpair.c strchkread.c streamread.c streamwrite.c \
+ udgramread.c udgramsend.c ustreamread.c ustreamwrite.c
+USE_SOELIM=
+USE_PIC=
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/20.ipctut/dgramread.c b/share/doc/psd/20.ipctut/dgramread.c
new file mode 100644
index 0000000..193fca9
--- /dev/null
+++ b/share/doc/psd/20.ipctut/dgramread.c
@@ -0,0 +1,83 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)dgramread.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <stdio.h>
+
+/*
+ * In the included file <netinet/in.h> a sockaddr_in is defined as follows:
+ * struct sockaddr_in {
+ * short sin_family;
+ * u_short sin_port;
+ * struct in_addr sin_addr;
+ * char sin_zero[8];
+ * };
+ *
+ * This program creates a datagram socket, binds a name to it, then reads
+ * from the socket.
+ */
+main()
+{
+ int sock, length;
+ struct sockaddr_in name;
+ char buf[1024];
+
+ /* Create socket from which to read. */
+ sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sock < 0) {
+ perror("opening datagram socket");
+ exit(1);
+ }
+ /* Create name with wildcards. */
+ name.sin_family = AF_INET;
+ name.sin_addr.s_addr = INADDR_ANY;
+ name.sin_port = 0;
+ if (bind(sock, &name, sizeof(name))) {
+ perror("binding datagram socket");
+ exit(1);
+ }
+ /* Find assigned port value and print it out. */
+ length = sizeof(name);
+ if (getsockname(sock, &name, &length)) {
+ perror("getting socket name");
+ exit(1);
+ }
+ printf("Socket has port #%d\en", ntohs(name.sin_port));
+ /* Read from the socket */
+ if (read(sock, buf, 1024) < 0)
+ perror("receiving datagram packet");
+ printf("-->%s\en", buf);
+ close(sock);
+}
diff --git a/share/doc/psd/20.ipctut/dgramsend.c b/share/doc/psd/20.ipctut/dgramsend.c
new file mode 100644
index 0000000..4bd1e5a
--- /dev/null
+++ b/share/doc/psd/20.ipctut/dgramsend.c
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)dgramsend.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <stdio.h>
+
+#define DATA "The sea is calm tonight, the tide is full . . ."
+
+/*
+ * Here I send a datagram to a receiver whose name I get from the command
+ * line arguments. The form of the command line is dgramsend hostname
+ * portnumber
+ */
+
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ int sock;
+ struct sockaddr_in name;
+ struct hostent *hp, *gethostbyname();
+
+ /* Create socket on which to send. */
+ sock = socket(AF_INET, SOCK_DGRAM, 0);
+ if (sock < 0) {
+ perror("opening datagram socket");
+ exit(1);
+ }
+ /*
+ * Construct name, with no wildcards, of the socket to send to.
+ * Gethostbyname() returns a structure including the network address
+ * of the specified host. The port number is taken from the command
+ * line.
+ */
+ hp = gethostbyname(argv[1]);
+ if (hp == 0) {
+ fprintf(stderr, "%s: unknown host\en", argv[1]);
+ exit(2);
+ }
+ bcopy(hp->h_addr, &name.sin_addr, hp->h_length);
+ name.sin_family = AF_INET;
+ name.sin_port = htons(atoi(argv[2]));
+ /* Send message. */
+ if (sendto(sock, DATA, sizeof(DATA), 0, &name, sizeof(name)) < 0)
+ perror("sending datagram message");
+ close(sock);
+}
diff --git a/share/doc/psd/20.ipctut/fig2.pic b/share/doc/psd/20.ipctut/fig2.pic
new file mode 100644
index 0000000..ffbc193
--- /dev/null
+++ b/share/doc/psd/20.ipctut/fig2.pic
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" @(#)fig2.pic 8.1 (Berkeley) 8/14/93
+.PS
+.ps
+.ps 10
+arc at 5.407,4.723 from 5.375,4.838 to 5.362,4.612 cw
+arc at 5.907,7.973 from 5.875,8.088 to 5.862,7.862 cw
+line from 5.963,5.513 to 6.925,5.513
+line from 5.963,5.650 to 6.925,5.650
+line from 5.963,5.787 to 6.925,5.787
+line from 5.963,5.912 to 6.925,5.912
+line from 5.963,6.050 to 6.925,6.050
+line from 5.963,6.200 to 6.925,6.200 to 6.925,5.375 to 5.963,5.375 to 5.963,6.200
+ellipse at 6.388,6.713 wid 0.475 ht 0.475
+line from 6.388,6.463 to 6.388,6.200
+line from 3.150,6.200 to 4.112,6.200 to 4.112,5.375 to 3.150,5.375 to 3.150,6.200
+line from 3.150,6.050 to 4.112,6.050
+line from 3.150,5.912 to 4.112,5.912
+line from 3.150,5.787 to 4.112,5.787
+line from 3.150,5.650 to 4.112,5.650
+line from 3.150,5.513 to 4.112,5.513
+ellipse at 3.575,6.713 wid 0.475 ht 0.475
+line from 3.575,6.463 to 3.575,6.200
+line from 3.650,8.762 to 4.612,8.762
+line from 3.650,8.900 to 4.612,8.900
+line from 3.650,9.037 to 4.612,9.037
+line from 3.650,9.162 to 4.612,9.162
+line from 3.650,9.300 to 4.612,9.300
+line from 3.650,9.450 to 4.612,9.450 to 4.612,8.625 to 3.650,8.625 to 3.650,9.450
+ellipse at 4.075,9.963 wid 0.475 ht 0.475
+ellipse at 3.950,4.725 wid 0.225 ht 0.225
+ellipse at 4.450,7.975 wid 0.225 ht 0.225
+dashwid = 0.037i
+line dotted from 1.925,7.513 to 8.238,7.513
+line from 6.050,6.138 to 5.737,6.138 to 5.737,4.700 to 5.550,4.700
+line from 5.650,4.725 to 5.550,4.700 to 5.650,4.675
+line from 6.050,6.013 to 4.050,4.888
+line from 4.125,4.958 to 4.050,4.888 to 4.149,4.915
+line from 3.975,6.000 to 4.525,5.987 to 3.925,4.875
+line from 3.950,4.975 to 3.925,4.875 to 3.994,4.951
+line from 3.975,6.112 to 5.650,6.112 to 5.650,4.750 to 5.550,4.763
+line from 5.652,4.775 to 5.550,4.763 to 5.646,4.725
+line from 4.075,9.713 to 4.075,9.450
+line from 4.475,9.363 to 6.150,9.363 to 6.150,8.000 to 6.050,8.012
+line from 6.152,8.025 to 6.050,8.012 to 6.146,7.975
+line from 4.475,9.250 to 5.025,9.238 to 4.425,8.125
+line from 4.450,8.225 to 4.425,8.125 to 4.494,8.201
+.ps
+.ps 20
+line from 4.362,4.775 to 4.162,4.725 to 4.362,4.675
+line from 4.162,4.725 to 4.838,4.725
+.ps
+.ps 10
+line from 3.962,4.600 to 5.375,4.600
+line from 3.950,4.838 to 5.375,4.838
+line from 4.450,8.088 to 5.875,8.088
+line from 4.463,7.850 to 5.875,7.850
+.ps
+.ps 20
+line from 4.862,8.025 to 4.662,7.975 to 4.862,7.925
+line from 4.662,7.975 to 5.338,7.975
+.ps
+.ps 11
+.ft
+.ft R
+"Child" at 6.362,7.106
+.ps
+.ps 12
+"Parent" at 3.362,7.096 ljust
+"Parent" at 3.862,10.346 ljust
+"PIPE" at 4.987,4.671 ljust
+"PIPE" at 5.425,7.921 ljust
+.ps
+.ft
+.PE
diff --git a/share/doc/psd/20.ipctut/fig2.xfig b/share/doc/psd/20.ipctut/fig2.xfig
new file mode 100644
index 0000000..59b46be
--- /dev/null
+++ b/share/doc/psd/20.ipctut/fig2.xfig
@@ -0,0 +1,100 @@
+#FIG 2.0
+80 2
+5 1 0 1 0 0 0 0 0.000 0 0 0 432.554 462.170 430 453 442 461 429 471
+5 1 0 1 0 0 0 0 0.000 0 0 0 472.554 202.170 470 193 482 201 469 211
+6 414 279 589 424
+6 473 340 557 414
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 399 554 399 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 388 554 388 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 377 554 377 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 367 554 367 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 356 554 356 9999 9999
+2 2 0 1 0 0 0 0 0.000 0 0
+ 477 344 554 344 554 410 477 410 477 344 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 511 303 19 19 511 303 525 317
+2 1 0 1 0 0 0 0 0.000 0 0
+ 511 323 511 344 9999 9999
+-6
+6 189 279 364 424
+6 248 340 332 414
+2 2 0 1 0 0 0 0 0.000 0 0
+ 252 344 329 344 329 410 252 410 252 344 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 356 329 356 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 367 329 367 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 377 329 377 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 388 329 388 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 399 329 399 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 286 303 19 19 286 303 300 317
+2 1 0 1 0 0 0 0 0.000 0 0
+ 286 323 286 344 9999 9999
+-6
+6 288 80 372 154
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 139 369 139 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 128 369 128 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 117 369 117 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 107 369 107 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 96 369 96 9999 9999
+2 2 0 1 0 0 0 0 0.000 0 0
+ 292 84 369 84 369 150 292 150 292 84 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 326 43 19 19 326 43 340 57
+1 3 0 1 0 0 0 0 0.000 1 0.000 316 462 9 9 316 462 322 469
+1 3 0 1 0 0 0 0 0.000 1 0.000 356 202 9 9 356 202 362 209
+2 1 2 1 0 0 0 0 3.000 0 0
+ 154 239 659 239 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 484 349 459 349 459 464 444 464 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 484 359 324 449 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 318 360 362 361 314 450 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 318 351 452 351 452 460 444 459 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 326 63 326 84 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 358 91 492 91 492 200 484 199 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 358 100 402 101 354 190 9999 9999
+2 1 0 2 0 0 0 0 0.000 0 1
+ 0 0 2.000 8.000 16.000
+ 333 462 387 462 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 317 472 430 472 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 316 453 430 453 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 356 193 470 193 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 357 212 470 212 9999 9999
+2 1 0 2 0 0 0 0 0.000 0 1
+ 0 0 2.000 8.000 16.000
+ 373 202 427 202 9999 9999
+4 1 0 11 0 0 0 0.000 1 7 24 509 274 Child
+4 0 0 12 0 0 0 0.000 1 9 33 269 275 Parent
+4 0 0 12 0 0 0 0.000 1 9 33 309 15 Parent
+4 0 0 12 0 0 0 0.000 1 9 26 399 469 PIPE
+4 0 0 12 0 0 0 0.000 1 9 26 434 209 PIPE
diff --git a/share/doc/psd/20.ipctut/fig3.pic b/share/doc/psd/20.ipctut/fig3.pic
new file mode 100644
index 0000000..15a4a73
--- /dev/null
+++ b/share/doc/psd/20.ipctut/fig3.pic
@@ -0,0 +1,69 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" @(#)fig3.pic 8.1 (Berkeley) 8/14/93
+.PS
+.ps
+.ps 10
+ellipse at 5.787,8.012 wid 0.275 ht 0.275
+ellipse at 4.175,8.012 wid 0.275 ht 0.275
+dashwid = 0.037i
+line dotted from 5.550,8.012 to 4.362,8.012
+line from 4.462,8.037 to 4.362,8.012 to 4.462,7.987
+line dotted from 4.362,7.950 to 5.550,7.950
+line from 5.450,7.925 to 5.550,7.950 to 5.450,7.975
+ellipse at 3.737,4.763 wid 0.275 ht 0.275
+ellipse at 5.350,4.763 wid 0.275 ht 0.275
+line dotted from 3.925,4.700 to 5.112,4.700
+line from 5.013,4.675 to 5.112,4.700 to 5.013,4.725
+line dotted from 5.112,4.763 to 3.925,4.763
+line from 4.025,4.788 to 3.925,4.763 to 4.025,4.737
+line from 5.963,5.513 to 6.925,5.513
+line from 5.963,5.650 to 6.925,5.650
+line from 5.963,5.787 to 6.925,5.787
+line from 5.963,5.912 to 6.925,5.912
+line from 5.963,6.050 to 6.925,6.050
+line from 5.963,6.200 to 6.925,6.200 to 6.925,5.375 to 5.963,5.375 to 5.963,6.200
+ellipse at 6.388,6.713 wid 0.475 ht 0.475
+line from 6.388,6.463 to 6.388,6.200
+line from 3.150,6.200 to 4.112,6.200 to 4.112,5.375 to 3.150,5.375 to 3.150,6.200
+line from 3.150,6.050 to 4.112,6.050
+line from 3.150,5.912 to 4.112,5.912
+line from 3.150,5.787 to 4.112,5.787
+line from 3.150,5.650 to 4.112,5.650
+line from 3.150,5.513 to 4.112,5.513
+ellipse at 3.575,6.713 wid 0.475 ht 0.475
+line from 3.575,6.463 to 3.575,6.200
+line from 3.650,8.762 to 4.612,8.762
+line from 3.650,8.900 to 4.612,8.900
+line from 3.650,9.037 to 4.612,9.037
+line from 3.650,9.162 to 4.612,9.162
+line from 3.650,9.300 to 4.612,9.300
+line from 3.650,9.450 to 4.612,9.450 to 4.612,8.625 to 3.650,8.625 to 3.650,9.450
+ellipse at 4.075,9.963 wid 0.475 ht 0.475
+line from 3.975,6.112 to 5.650,6.112 to 5.650,4.750 to 5.550,4.763
+line from 5.652,4.775 to 5.550,4.763 to 5.646,4.725
+line from 6.050,6.138 to 5.737,6.138 to 5.737,4.700 to 5.550,4.700
+line from 5.650,4.725 to 5.550,4.700 to 5.650,4.675
+line dotted from 1.925,7.513 to 8.238,7.513
+line from 6.050,6.013 to 4.050,4.888
+line from 4.125,4.958 to 4.050,4.888 to 4.149,4.915
+line from 3.975,6.000 to 4.525,5.987 to 3.925,4.875
+line from 3.950,4.975 to 3.925,4.875 to 3.994,4.951
+line from 4.075,9.713 to 4.075,9.450
+line from 4.475,9.363 to 6.150,9.363 to 6.150,8.000 to 6.050,8.012
+line from 6.152,8.025 to 6.050,8.012 to 6.146,7.975
+line from 4.475,9.250 to 5.025,9.238 to 4.425,8.125
+line from 4.450,8.225 to 4.425,8.125 to 4.494,8.201
+.ps
+.ps 11
+.ft
+.ft R
+"Child" at 6.362,7.106
+.ps
+.ps 12
+"Parent" at 3.362,7.096 ljust
+"Parent" at 3.862,10.346 ljust
+.ps
+.ft
+.PE
diff --git a/share/doc/psd/20.ipctut/fig3.xfig b/share/doc/psd/20.ipctut/fig3.xfig
new file mode 100644
index 0000000..ed65b70
--- /dev/null
+++ b/share/doc/psd/20.ipctut/fig3.xfig
@@ -0,0 +1,100 @@
+#FIG 2.0
+80 2
+6 309 184 479 214
+1 3 0 1 0 0 0 0 0.000 1 0.000 463 199 11 11 463 199 468 209
+1 3 0 1 0 0 0 0 0.000 1 0.000 334 199 11 11 334 199 339 209
+2 1 2 1 0 0 0 0 3.000 1 0
+ 0 0 1.000 4.000 8.000
+ 444 199 349 199 9999 9999
+2 1 2 1 0 0 0 0 3.000 1 0
+ 0 0 1.000 4.000 8.000
+ 349 204 444 204 9999 9999
+-6
+6 274 444 444 474
+1 3 0 1 0 0 0 0 0.000 1 0.000 299 459 11 11 299 459 304 469
+1 3 0 1 0 0 0 0 0.000 1 0.000 428 459 11 11 428 459 433 469
+2 1 2 1 0 0 0 0 3.000 1 0
+ 0 0 1.000 4.000 8.000
+ 314 464 409 464 9999 9999
+2 1 2 1 0 0 0 0 3.000 1 0
+ 0 0 1.000 4.000 8.000
+ 409 459 314 459 9999 9999
+-6
+6 414 279 589 424
+6 473 340 557 414
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 399 554 399 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 388 554 388 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 377 554 377 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 367 554 367 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 356 554 356 9999 9999
+2 2 0 1 0 0 0 0 0.000 0 0
+ 477 344 554 344 554 410 477 410 477 344 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 511 303 19 19 511 303 525 317
+2 1 0 1 0 0 0 0 0.000 0 0
+ 511 323 511 344 9999 9999
+-6
+6 189 279 364 424
+6 248 340 332 414
+2 2 0 1 0 0 0 0 0.000 0 0
+ 252 344 329 344 329 410 252 410 252 344 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 356 329 356 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 367 329 367 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 377 329 377 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 388 329 388 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 399 329 399 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 286 303 19 19 286 303 300 317
+2 1 0 1 0 0 0 0 0.000 0 0
+ 286 323 286 344 9999 9999
+-6
+6 288 80 372 154
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 139 369 139 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 128 369 128 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 117 369 117 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 107 369 107 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 292 96 369 96 9999 9999
+2 2 0 1 0 0 0 0 0.000 0 0
+ 292 84 369 84 369 150 292 150 292 84 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 326 43 19 19 326 43 340 57
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 318 351 452 351 452 460 444 459 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 484 349 459 349 459 464 444 464 9999 9999
+2 1 2 1 0 0 0 0 3.000 0 0
+ 154 239 659 239 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 484 359 324 449 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 318 360 362 361 314 450 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 326 63 326 84 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 358 91 492 91 492 200 484 199 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 358 100 402 101 354 190 9999 9999
+4 1 0 11 0 0 0 0.000 1 7 24 509 274 Child
+4 0 0 12 0 0 0 0.000 1 9 33 269 275 Parent
+4 0 0 12 0 0 0 0.000 1 9 33 309 15 Parent
diff --git a/share/doc/psd/20.ipctut/fig8.pic b/share/doc/psd/20.ipctut/fig8.pic
new file mode 100644
index 0000000..92b8833
--- /dev/null
+++ b/share/doc/psd/20.ipctut/fig8.pic
@@ -0,0 +1,79 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" @(#)fig8.pic 8.1 (Berkeley) 8/14/93
+.PS
+.ps
+.ps 11
+.ft
+.ft R
+"Process 1" at 3.800,7.106 rjust
+"Process 2" at 6.612,7.106 rjust
+.ps
+.ps 10
+line from 3.150,6.200 to 4.112,6.200 to 4.112,5.375 to 3.150,5.375 to 3.150,6.200
+line from 3.150,6.050 to 4.112,6.050
+line from 3.150,5.912 to 4.112,5.912
+line from 3.150,5.787 to 4.112,5.787
+line from 3.150,5.650 to 4.112,5.650
+line from 3.150,5.513 to 4.112,5.513
+ellipse at 3.575,6.713 wid 0.475 ht 0.475
+line from 3.575,6.463 to 3.575,6.200
+line from 5.963,5.513 to 6.925,5.513
+line from 5.963,5.650 to 6.925,5.650
+line from 5.963,5.787 to 6.925,5.787
+line from 5.963,5.912 to 6.925,5.912
+line from 5.963,6.050 to 6.925,6.050
+line from 5.963,6.200 to 6.925,6.200 to 6.925,5.375 to 5.963,5.375 to 5.963,6.200
+ellipse at 6.388,6.713 wid 0.475 ht 0.475
+line from 6.388,6.463 to 6.388,6.200
+line from 3.087,8.637 to 4.050,8.637
+line from 3.087,8.775 to 4.050,8.775
+line from 3.087,8.912 to 4.050,8.912
+line from 3.087,9.037 to 4.050,9.037
+line from 3.087,9.175 to 4.050,9.175
+line from 3.087,9.325 to 4.050,9.325 to 4.050,8.500 to 3.087,8.500 to 3.087,9.325
+ellipse at 3.513,9.838 wid 0.475 ht 0.475
+line from 3.513,9.588 to 3.513,9.325
+line from 5.900,9.325 to 6.862,9.325 to 6.862,8.500 to 5.900,8.500 to 5.900,9.325
+line from 5.900,9.175 to 6.862,9.175
+line from 5.900,9.037 to 6.862,9.037
+line from 5.900,8.912 to 6.862,8.912
+line from 5.900,8.775 to 6.862,8.775
+line from 5.900,8.637 to 6.862,8.637
+ellipse at 6.325,9.838 wid 0.475 ht 0.475
+line from 6.325,9.588 to 6.325,9.325
+.ps
+.ps 11
+"Process 2" at 6.550,10.231 rjust
+"Process 1" at 3.737,10.231 rjust
+.ps
+.ps 10
+ellipse at 6.112,4.888 wid 0.275 ht 0.275
+ellipse at 5.350,4.763 wid 0.275 ht 0.275
+ellipse at 3.737,4.763 wid 0.275 ht 0.275
+ellipse at 4.550,7.950 wid 0.275 ht 0.275
+ellipse at 5.487,7.950 wid 0.275 ht 0.275
+line from 6.050,6.013 to 5.175,6.013 to 5.987,5.013
+line from 5.905,5.074 to 5.987,5.013 to 5.944,5.106
+line from 6.050,6.138 to 5.737,6.138 to 5.737,4.700 to 5.550,4.700
+line from 5.650,4.725 to 5.550,4.700 to 5.650,4.675
+dashwid = 0.037i
+line dotted from 1.925,7.513 to 8.238,7.513
+line from 3.975,6.000 to 4.525,5.987 to 3.925,4.875
+line from 3.950,4.975 to 3.925,4.875 to 3.994,4.951
+line dotted from 5.112,4.763 to 3.925,4.763
+line from 4.025,4.788 to 3.925,4.763 to 4.025,4.737
+line dotted from 3.925,4.700 to 5.112,4.700
+line from 5.013,4.675 to 5.112,4.700 to 5.013,4.725
+line from 6.050,9.012 to 5.487,9.012 to 5.487,8.137
+line from 5.462,8.237 to 5.487,8.137 to 5.513,8.237
+line from 3.737,9.137 to 4.550,9.137 to 4.550,8.137
+line from 4.525,8.237 to 4.550,8.137 to 4.575,8.237
+.ps
+.ps 11
+"NAME" at 6.737,4.918 rjust
+"NAME" at 6.112,8.043 rjust
+.ps
+.ft
+.PE
diff --git a/share/doc/psd/20.ipctut/fig8.xfig b/share/doc/psd/20.ipctut/fig8.xfig
new file mode 100644
index 0000000..f1a5257
--- /dev/null
+++ b/share/doc/psd/20.ipctut/fig8.xfig
@@ -0,0 +1,116 @@
+#FIG 2.0
+80 2
+6 224 254 589 279
+4 2 0 11 0 0 0 0.000 1 7 38 304 274 Process 1
+4 2 0 11 0 0 0 0.000 1 7 38 529 274 Process 2
+-6
+6 189 279 364 424
+6 248 340 332 414
+2 2 0 1 0 0 0 0 0.000 0 0
+ 252 344 329 344 329 410 252 410 252 344 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 356 329 356 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 367 329 367 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 377 329 377 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 388 329 388 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 252 399 329 399 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 286 303 19 19 286 303 300 317
+2 1 0 1 0 0 0 0 0.000 0 0
+ 286 323 286 344 9999 9999
+-6
+6 414 279 589 424
+6 473 340 557 414
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 399 554 399 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 388 554 388 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 377 554 377 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 367 554 367 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 477 356 554 356 9999 9999
+2 2 0 1 0 0 0 0 0.000 0 0
+ 477 344 554 344 554 410 477 410 477 344 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 511 303 19 19 511 303 525 317
+2 1 0 1 0 0 0 0 0.000 0 0
+ 511 323 511 344 9999 9999
+-6
+6 184 29 359 174
+6 243 90 327 164
+2 1 0 1 0 0 0 0 0.000 0 0
+ 247 149 324 149 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 247 138 324 138 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 247 127 324 127 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 247 117 324 117 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 247 106 324 106 9999 9999
+2 2 0 1 0 0 0 0 0.000 0 0
+ 247 94 324 94 324 160 247 160 247 94 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 281 53 19 19 281 53 295 67
+2 1 0 1 0 0 0 0 0.000 0 0
+ 281 73 281 94 9999 9999
+-6
+6 409 29 584 174
+6 468 90 552 164
+2 2 0 1 0 0 0 0 0.000 0 0
+ 472 94 549 94 549 160 472 160 472 94 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 472 106 549 106 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 472 117 549 117 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 472 127 549 127 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 472 138 549 138 9999 9999
+2 1 0 1 0 0 0 0 0.000 0 0
+ 472 149 549 149 9999 9999
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 506 53 19 19 506 53 520 67
+2 1 0 1 0 0 0 0 0.000 0 0
+ 506 73 506 94 9999 9999
+-6
+6 219 4 584 29
+4 2 0 11 0 0 0 0.000 1 7 38 524 24 Process 2
+4 2 0 11 0 0 0 0.000 1 7 38 299 24 Process 1
+-6
+1 3 0 1 0 0 0 0 0.000 1 0.000 489 449 11 11 489 449 494 459
+1 3 0 1 0 0 0 0 0.000 1 0.000 428 459 11 11 428 459 433 469
+1 3 0 1 0 0 0 0 0.000 1 0.000 299 459 11 11 299 459 304 469
+1 3 0 1 0 0 0 0 0.000 1 0.000 364 204 11 11 364 204 369 214
+1 3 0 1 0 0 0 0 0.000 1 0.000 439 204 11 11 439 204 444 214
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 484 359 414 359 479 439 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 484 349 459 349 459 464 444 464 9999 9999
+2 1 2 1 0 0 0 0 3.000 0 0
+ 154 239 659 239 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 318 360 362 361 314 450 9999 9999
+2 1 2 1 0 0 0 0 3.000 1 0
+ 0 0 1.000 4.000 8.000
+ 409 459 314 459 9999 9999
+2 1 2 1 0 0 0 0 3.000 1 0
+ 0 0 1.000 4.000 8.000
+ 314 464 409 464 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 484 119 439 119 439 189 9999 9999
+2 1 0 1 0 0 0 0 0.000 1 0
+ 0 0 1.000 4.000 8.000
+ 299 109 364 109 364 189 9999 9999
+4 2 0 11 0 0 0 0.000 1 7 32 539 449 NAME
+4 2 0 11 0 0 0 0.000 1 7 32 489 199 NAME
diff --git a/share/doc/psd/20.ipctut/pipe.c b/share/doc/psd/20.ipctut/pipe.c
new file mode 100644
index 0000000..86cb663
--- /dev/null
+++ b/share/doc/psd/20.ipctut/pipe.c
@@ -0,0 +1,74 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)pipe.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <stdio.h>
+
+#define DATA "Bright star, would I were steadfast as thou art . . ."
+
+/*
+ * This program creates a pipe, then forks. The child communicates to the
+ * parent over the pipe. Notice that a pipe is a one-way communications
+ * device. I can write to the output socket (sockets[1], the second socket
+ * of the array returned by pipe()) and read from the input socket
+ * (sockets[0]), but not vice versa.
+ */
+
+main()
+{
+ int sockets[2], child;
+
+ /* Create a pipe */
+ if (pipe(sockets) < 0) {
+ perror("opening stream socket pair");
+ exit(10);
+ }
+
+ if ((child = fork()) == -1)
+ perror("fork");
+ else if (child) {
+ char buf[1024];
+
+ /* This is still the parent. It reads the child's message. */
+ close(sockets[1]);
+ if (read(sockets[0], buf, 1024) < 0)
+ perror("reading message");
+ printf("-->%s\en", buf);
+ close(sockets[0]);
+ } else {
+ /* This is the child. It writes a message to its parent. */
+ close(sockets[0]);
+ if (write(sockets[1], DATA, sizeof(DATA)) < 0)
+ perror("writing message");
+ close(sockets[1]);
+ }
+}
diff --git a/share/doc/psd/20.ipctut/socketpair.c b/share/doc/psd/20.ipctut/socketpair.c
new file mode 100644
index 0000000..f525c76
--- /dev/null
+++ b/share/doc/psd/20.ipctut/socketpair.c
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)socketpair.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <stdio.h>
+
+#define DATA1 "In Xanadu, did Kublai Khan . . ."
+#define DATA2 "A stately pleasure dome decree . . ."
+
+/*
+ * This program creates a pair of connected sockets then forks and
+ * communicates over them. This is very similar to communication with pipes,
+ * however, socketpairs are two-way communications objects. Therefore I can
+ * send messages in both directions.
+ */
+
+main()
+{
+ int sockets[2], child;
+ char buf[1024];
+
+ if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) < 0) {
+ perror("opening stream socket pair");
+ exit(1);
+ }
+
+ if ((child = fork()) == -1)
+ perror("fork");
+ else if (child) { /* This is the parent. */
+ close(sockets[0]);
+ if (read(sockets[1], buf, 1024, 0) < 0)
+ perror("reading stream message");
+ printf("-->%s\en", buf);
+ if (write(sockets[1], DATA2, sizeof(DATA2)) < 0)
+ perror("writing stream message");
+ close(sockets[1]);
+ } else { /* This is the child. */
+ close(sockets[1]);
+ if (write(sockets[0], DATA1, sizeof(DATA1)) < 0)
+ perror("writing stream message");
+ if (read(sockets[0], buf, 1024, 0) < 0)
+ perror("reading stream message");
+ printf("-->%s\en", buf);
+ close(sockets[0]);
+ }
+}
diff --git a/share/doc/psd/20.ipctut/strchkread.c b/share/doc/psd/20.ipctut/strchkread.c
new file mode 100644
index 0000000..a1e148b
--- /dev/null
+++ b/share/doc/psd/20.ipctut/strchkread.c
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)strchkread.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/time.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <stdio.h>
+#define TRUE 1
+
+/*
+ * This program uses select() to check that someone is trying to connect
+ * before calling accept().
+ */
+
+main()
+{
+ int sock, length;
+ struct sockaddr_in server;
+ int msgsock;
+ char buf[1024];
+ int rval;
+ fd_set ready;
+ struct timeval to;
+
+ /* Create socket */
+ sock = socket(AF_INET, SOCK_STREAM, 0);
+ if (sock < 0) {
+ perror("opening stream socket");
+ exit(1);
+ }
+ /* Name socket using wildcards */
+ server.sin_family = AF_INET;
+ server.sin_addr.s_addr = INADDR_ANY;
+ server.sin_port = 0;
+ if (bind(sock, &server, sizeof(server))) {
+ perror("binding stream socket");
+ exit(1);
+ }
+ /* Find out assigned port number and print it out */
+ length = sizeof(server);
+ if (getsockname(sock, &server, &length)) {
+ perror("getting socket name");
+ exit(1);
+ }
+ printf("Socket has port #%d\en", ntohs(server.sin_port));
+
+ /* Start accepting connections */
+ listen(sock, 5);
+ do {
+ FD_ZERO(&ready);
+ FD_SET(sock, &ready);
+ to.tv_sec = 5;
+ if (select(sock + 1, &ready, 0, 0, &to) < 0) {
+ perror("select");
+ continue;
+ }
+ if (FD_ISSET(sock, &ready)) {
+ msgsock = accept(sock, (struct sockaddr *)0, (int *)0);
+ if (msgsock == -1)
+ perror("accept");
+ else do {
+ bzero(buf, sizeof(buf));
+ if ((rval = read(msgsock, buf, 1024)) < 0)
+ perror("reading stream message");
+ else if (rval == 0)
+ printf("Ending connection\en");
+ else
+ printf("-->%s\en", buf);
+ } while (rval > 0);
+ close(msgsock);
+ } else
+ printf("Do something else\en");
+ } while (TRUE);
+}
diff --git a/share/doc/psd/20.ipctut/streamread.c b/share/doc/psd/20.ipctut/streamread.c
new file mode 100644
index 0000000..ffad802
--- /dev/null
+++ b/share/doc/psd/20.ipctut/streamread.c
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)streamread.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <stdio.h>
+#define TRUE 1
+
+/*
+ * This program creates a socket and then begins an infinite loop. Each time
+ * through the loop it accepts a connection and prints out messages from it.
+ * When the connection breaks, or a termination message comes through, the
+ * program accepts a new connection.
+ */
+
+main()
+{
+ int sock, length;
+ struct sockaddr_in server;
+ int msgsock;
+ char buf[1024];
+ int rval;
+ int i;
+
+ /* Create socket */
+ sock = socket(AF_INET, SOCK_STREAM, 0);
+ if (sock < 0) {
+ perror("opening stream socket");
+ exit(1);
+ }
+ /* Name socket using wildcards */
+ server.sin_family = AF_INET;
+ server.sin_addr.s_addr = INADDR_ANY;
+ server.sin_port = 0;
+ if (bind(sock, &server, sizeof(server))) {
+ perror("binding stream socket");
+ exit(1);
+ }
+ /* Find out assigned port number and print it out */
+ length = sizeof(server);
+ if (getsockname(sock, &server, &length)) {
+ perror("getting socket name");
+ exit(1);
+ }
+ printf("Socket has port #%d\en", ntohs(server.sin_port));
+
+ /* Start accepting connections */
+ listen(sock, 5);
+ do {
+ msgsock = accept(sock, 0, 0);
+ if (msgsock == -1)
+ perror("accept");
+ else do {
+ bzero(buf, sizeof(buf));
+ if ((rval = read(msgsock, buf, 1024)) < 0)
+ perror("reading stream message");
+ i = 0;
+ if (rval == 0)
+ printf("Ending connection\en");
+ else
+ printf("-->%s\en", buf);
+ } while (rval != 0);
+ close(msgsock);
+ } while (TRUE);
+ /*
+ * Since this program has an infinite loop, the socket "sock" is
+ * never explicitly closed. However, all sockets will be closed
+ * automatically when a process is killed or terminates normally.
+ */
+}
diff --git a/share/doc/psd/20.ipctut/streamwrite.c b/share/doc/psd/20.ipctut/streamwrite.c
new file mode 100644
index 0000000..6205f13
--- /dev/null
+++ b/share/doc/psd/20.ipctut/streamwrite.c
@@ -0,0 +1,81 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)streamwrite.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+#include <stdio.h>
+
+#define DATA "Half a league, half a league . . ."
+
+/*
+ * This program creates a socket and initiates a connection with the socket
+ * given in the command line. One message is sent over the connection and
+ * then the socket is closed, ending the connection. The form of the command
+ * line is streamwrite hostname portnumber
+ */
+
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ int sock;
+ struct sockaddr_in server;
+ struct hostent *hp, *gethostbyname();
+ char buf[1024];
+
+ /* Create socket */
+ sock = socket(AF_INET, SOCK_STREAM, 0);
+ if (sock < 0) {
+ perror("opening stream socket");
+ exit(1);
+ }
+ /* Connect socket using name specified by command line. */
+ server.sin_family = AF_INET;
+ hp = gethostbyname(argv[1]);
+ if (hp == 0) {
+ fprintf(stderr, "%s: unknown host\en", argv[1]);
+ exit(2);
+ }
+ bcopy(hp->h_addr, &server.sin_addr, hp->h_length);
+ server.sin_port = htons(atoi(argv[2]));
+
+ if (connect(sock, &server, sizeof(server)) < 0) {
+ perror("connecting stream socket");
+ exit(1);
+ }
+ if (write(sock, DATA, sizeof(DATA)) < 0)
+ perror("writing on stream socket");
+ close(sock);
+}
diff --git a/share/doc/psd/20.ipctut/tutor.me b/share/doc/psd/20.ipctut/tutor.me
new file mode 100644
index 0000000..fba4583
--- /dev/null
+++ b/share/doc/psd/20.ipctut/tutor.me
@@ -0,0 +1,939 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)tutor.me 8.1 (Berkeley) 8/14/93
+.\"
+.oh 'Introductory 4.4BSD IPC''PSD:20-%'
+.eh 'PSD:20-%''Introductory 4.4BSD IPC'
+.rs
+.sp 2
+.sz 14
+.ft B
+.ce 2
+An Introductory 4.4BSD
+Interprocess Communication Tutorial
+.sz 10
+.sp 2
+.ce
+.i "Stuart Sechrest"
+.ft
+.sp
+.ce 4
+Computer Science Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+.sp 2
+.ce
+.i ABSTRACT
+.sp
+.(c
+.pp
+Berkeley UNIX\(dg 4.4BSD offers several choices for interprocess communication.
+To aid the programmer in developing programs which are comprised of
+cooperating
+processes, the different choices are discussed and a series of example
+programs are presented. These programs
+demonstrate in a simple way the use of pipes, socketpairs, sockets
+and the use of datagram and stream communication. The intent of this
+document is to present a few simple example programs, not to describe the
+networking system in full.
+.)c
+.sp 2
+.(f
+\(dg\|UNIX is a trademark of AT&T Bell Laboratories.
+.)f
+.b
+.sh 1 "Goals"
+.r
+.pp
+Facilities for interprocess communication (IPC) and networking
+were a major addition to UNIX in the Berkeley UNIX 4.2BSD release.
+These facilities required major additions and some changes
+to the system interface.
+The basic idea of this interface is to make IPC similar to file I/O.
+In UNIX a process has a set of I/O descriptors, from which one reads
+and to which one writes.
+Descriptors may refer to normal files, to devices (including terminals),
+or to communication channels.
+The use of a descriptor has three phases: its creation,
+its use for reading and writing, and its destruction. By using descriptors
+to write files, rather than simply naming the target file in the write
+call, one gains a surprising amount of flexibility. Often, the program that
+creates a descriptor will be different from the program that uses the
+descriptor. For example the shell can create a descriptor for the output
+of the `ls'
+command that will cause the listing to appear in a file rather than
+on a terminal.
+Pipes are another form of descriptor that have been used in UNIX
+for some time.
+Pipes allow one-way data transmission from one process
+to another; the two processes and the pipe must be set up by a common
+ancestor.
+.pp
+The use of descriptors is not the only communication interface
+provided by UNIX.
+The signal mechanism sends a tiny amount of information from one
+process to another.
+The signaled process receives only the signal type,
+not the identity of the sender,
+and the number of possible signals is small.
+The signal semantics limit the flexibility of the signaling mechanism
+as a means of interprocess communication.
+.pp
+The identification of IPC with I/O is quite longstanding in UNIX and
+has proved quite successful. At first, however, IPC was limited to
+processes communicating within a single machine. With Berkeley UNIX
+4.2BSD this expanded to include IPC between machines. This expansion
+has necessitated some change in the way that descriptors are created.
+Additionally, new possibilities for the meaning of read and write have
+been admitted. Originally the meanings, or semantics, of these terms
+were fairly simple. When you wrote something it was delivered. When
+you read something, you were blocked until the data arrived.
+Other possibilities exist,
+however. One can write without full assurance of delivery if one can
+check later to catch occasional failures. Messages can be kept as
+discrete units or merged into a stream.
+One can ask to read, but insist on not waiting if nothing is immediately
+available. These new possibilities are allowed in the Berkeley UNIX IPC
+interface.
+.pp
+Thus Berkeley UNIX 4.4BSD offers several choices for IPC.
+This paper presents simple examples that illustrate some of
+the choices.
+The reader is presumed to be familiar with the C programming language
+[Kernighan & Ritchie 1978],
+but not necessarily with the system calls of the UNIX system or with
+processes and interprocess communication.
+The paper reviews the notion of a process and the types of
+communication that are supported by Berkeley UNIX 4.4BSD.
+A series of examples are presented that create processes that communicate
+with one another. The programs show different ways of establishing
+channels of communication.
+Finally, the calls that actually transfer data are reviewed.
+To clearly present how communication can take place,
+the example programs have been cleared of anything that
+might be construed as useful work.
+They can, therefore, serve as models
+for the programmer trying to construct programs which are comprised of
+cooperating processes.
+.b
+.sh 1 "Processes"
+.pp
+A \fIprogram\fP is both a sequence of statements and a rough way of referring
+to the computation that occurs when the compiled statements are run.
+A \fIprocess\fP can be thought of as a single line of control in a program.
+Most programs execute some statements, go through a few loops, branch in
+various directions and then end. These are single process programs.
+Programs can also have a point where control splits into two independent lines,
+an action called \fIforking.\fP
+In UNIX these lines can never join again. A call to the system routine
+\fIfork()\fP, causes a process to split in this way.
+The result of this call is that two independent processes will be
+running, executing exactly the same code.
+Memory values will be the same for all values set before the fork, but,
+subsequently, each version will be able to change only the
+value of its own copy of each variable.
+Initially, the only difference between the two will be the value returned by
+\fIfork().\fP The parent will receive a process id for the child,
+the child will receive a zero.
+Calls to \fIfork(),\fP
+therefore, typically precede, or are included in, an if-statement.
+.pp
+A process views the rest of the system through a private table of descriptors.
+The descriptors can represent open files or sockets (sockets are communication
+objects that will be discussed below). Descriptors are referred to
+by their index numbers in the table. The first three descriptors are often
+known by special names, \fI stdin, stdout\fP and \fIstderr\fP.
+These are the standard input, output and error.
+When a process forks, its descriptor table is copied to the child.
+Thus, if the parent's standard input is being taken from a terminal
+(devices are also treated as files in UNIX), the child's input will
+be taken from the
+same terminal. Whoever reads first will get the input. If, before forking,
+the parent changes its standard input so that it is reading from a
+new file, the child will take its input from the new file. It is
+also possible to take input from a socket, rather than from a file.
+.b
+.sh 1 "Pipes"
+.r
+.pp
+Most users of UNIX know that they can pipe the output of a
+program ``prog1'' to the input of another, ``prog2,'' by typing the command
+\fI``prog1 | prog2.''\fP
+This is called ``piping'' the output of one program
+to another because the mechanism used to transfer the output is called a
+pipe.
+When the user types a command, the command is read by the shell, which
+decides how to execute it. If the command is simple, for example,
+.i "``prog1,''"
+the shell forks a process, which executes the program, prog1, and then dies.
+The shell waits for this termination and then prompts for the next
+command.
+If the command is a compound command,
+.i "``prog1 | prog2,''"
+the shell creates two processes connected by a pipe. One process
+runs the program, prog1, the other runs prog2. The pipe is an I/O
+mechanism with two ends, or sockets. Data that is written into one socket
+can be read from the other.
+.(z
+.ft CW
+.so pipe.c
+.ft
+.ce 1
+Figure 1\ \ Use of a pipe
+.)z
+.pp
+Since a program specifies its input and output only by the descriptor table
+indices, which appear as variables or constants,
+the input source and output destination can be changed without
+changing the text of the program.
+It is in this way that the shell is able to set up pipes. Before executing
+prog1, the process can close whatever is at \fIstdout\fP
+and replace it with one
+end of a pipe. Similarly, the process that will execute prog2 can substitute
+the opposite end of the pipe for
+\fIstdin.\fP
+.pp
+Let us now examine a program that creates a pipe for communication between
+its child and itself (Figure 1).
+A pipe is created by a parent process, which then forks.
+When a process forks, the parent's descriptor table is copied into
+the child's.
+.pp
+In Figure 1, the parent process makes a call to the system routine
+\fIpipe().\fP
+This routine creates a pipe and places descriptors for the sockets
+for the two ends of the pipe in the process's descriptor table.
+\fIPipe()\fP
+is passed an array into which it places the index numbers of the
+sockets it created.
+The two ends are not equivalent. The socket whose index is
+returned in the low word of the array is opened for reading only,
+while the socket in the high end is opened only for writing.
+This corresponds to the fact that the standard input is the first
+descriptor of a process's descriptor table and the standard output
+is the second. After creating the pipe, the parent creates the child
+with which it will share the pipe by calling \fIfork().\fP
+Figure 2 illustrates the effect of a fork.
+The parent process's descriptor table points to both ends of the pipe.
+After the fork, both parent's and child's descriptor tables point to
+the pipe.
+The child can then use the pipe to send a message to the parent.
+.(z
+.so fig2.pic
+.ce 2
+Figure 2\ \ Sharing a pipe between parent and child
+.ce 0
+.)z
+.pp
+Just what is a pipe?
+It is a one-way communication mechanism, with one end opened
+for reading and the other end for writing.
+Therefore, parent and child need to agree on which way to turn
+the pipe, from parent to child or the other way around.
+Using the same pipe for communication both from parent to child and
+from child to parent would be possible (since both processes have
+references to both ends), but very complicated.
+If the parent and child are to have a two-way conversation,
+the parent creates two pipes, one for use in each direction.
+(In accordance with their plans, both parent and child in the example above
+close the socket that they will not use. It is not required that unused
+descriptors be closed, but it is good practice.)
+A pipe is also a \fIstream\fP communication mechanism; that
+is, all messages sent through the pipe are placed in order
+and reliably delivered. When the reader asks for a certain
+number of bytes from this
+stream, he is given as many bytes as are available, up
+to the amount of the request. Note that these bytes may have come from
+the same call to \fIwrite()\fR or from several calls to \fIwrite()\fR
+which were concatenated.
+.b
+.sh 1 "Socketpairs"
+.r
+.pp
+Berkeley UNIX 4.4BSD provides a slight generalization of pipes. A pipe is a
+pair of connected sockets for one-way stream communication. One may
+obtain a pair of connected sockets for two-way stream communication
+by calling the routine \fIsocketpair().\fP
+The program in Figure 3 calls \fIsocketpair()\fP
+to create such a connection. The program uses the link for
+communication in both directions. Since socketpairs are
+an extension of pipes, their use resembles that of pipes.
+Figure 4 illustrates the result of a fork following a call to
+\fIsocketpair().\fP
+.pp
+\fISocketpair()\fP
+takes as
+arguments a specification of a domain, a style of communication, and a
+protocol.
+These are the parameters shown in the example.
+Domains and protocols will be discussed in the next section.
+Briefly,
+a domain is a space of names that may be bound
+to sockets and implies certain other conventions.
+Currently, socketpairs have only been implemented for one
+domain, called the UNIX domain.
+The UNIX domain uses UNIX path names for naming sockets.
+It only allows communication
+between sockets on the same machine.
+.pp
+Note that the header files
+.i "<sys/socket.h>"
+and
+.i "<sys/types.h>."
+are required in this program.
+The constants AF_UNIX and SOCK_STREAM are defined in
+.i "<sys/socket.h>,"
+which in turn requires the file
+.i "<sys/types.h>"
+for some of its definitions.
+.(z
+.ft CW
+.so socketpair.c
+.ft
+.ce 1
+Figure 3\ \ Use of a socketpair
+.)z
+.(z
+.so fig3.pic
+.ce 1
+Figure 4\ \ Sharing a socketpair between parent and child
+.)z
+.b
+.sh 1 "Domains and Protocols"
+.r
+.pp
+Pipes and socketpairs are a simple solution for communicating between
+a parent and child or between child processes.
+What if we wanted to have processes that have no common ancestor
+with whom to set up communication?
+Neither standard UNIX pipes nor socketpairs are
+the answer here, since both mechanisms require a common ancestor to
+set up the communication.
+We would like to have two processes separately create sockets
+and then have messages sent between them. This is often the
+case when providing or using a service in the system. This is
+also the case when the communicating processes are on separate machines.
+In Berkeley UNIX 4.4BSD one can create individual sockets, give them names and
+send messages between them.
+.pp
+Sockets created by different programs use names to refer to one another;
+names generally must be translated into addresses for use.
+The space from which an address is drawn is referred to as a
+.i domain.
+There are several domains for sockets.
+Two that will be used in the examples here are the UNIX domain (or AF_UNIX,
+for Address Format UNIX) and the Internet domain (or AF_INET).
+UNIX domain IPC is an experimental facility in 4.2BSD and 4.3BSD.
+In the UNIX domain, a socket is given a path name within the file system
+name space.
+A file system node is created for the socket and other processes may
+then refer to the socket by giving the proper pathname.
+UNIX domain names, therefore, allow communication between any two processes
+that work in the same file system.
+The Internet domain is the UNIX implementation of the DARPA Internet
+standard protocols IP/TCP/UDP.
+Addresses in the Internet domain consist of a machine network address
+and an identifying number, called a port.
+Internet domain names allow communication between machines.
+.pp
+Communication follows some particular ``style.''
+Currently, communication is either through a \fIstream\fP
+or by \fIdatagram.\fP
+Stream communication implies several things. Communication takes
+place across a connection between two sockets. The communication
+is reliable, error-free, and, as in pipes, no message boundaries are
+kept. Reading from a stream may result in reading the data sent from
+one or several calls to \fIwrite()\fP
+or only part of the data from a single call, if there is not enough room
+for the entire message, or if not all the data from a large message
+has been transferred.
+The protocol implementing such a style will retransmit messages
+received with errors. It will also return error messages if one tries to
+send a message after the connection has been broken.
+Datagram communication does not use connections. Each message is
+addressed individually. If the address is correct, it will generally
+be received, although this is not guaranteed. Often datagrams are
+used for requests that require a response from the
+recipient. If no response
+arrives in a reasonable amount of time, the request is repeated.
+The individual datagrams will be kept separate when they are read, that
+is, message boundaries are preserved.
+.pp
+The difference in performance between the two styles of communication is
+generally less important than the difference in semantics. The
+performance gain that one might find in using datagrams must be weighed
+against the increased complexity of the program, which must now concern
+itself with lost or out of order messages. If lost messages may simply be
+ignored, the quantity of traffic may be a consideration. The expense
+of setting up a connection is best justified by frequent use of the connection.
+Since the performance of a protocol changes as it is tuned for different
+situations, it is best to seek the most up-to-date information when
+making choices for a program in which performance is crucial.
+.pp
+A protocol is a set of rules, data formats and conventions that regulate the
+transfer of data between participants in the communication.
+In general, there is one protocol for each socket type (stream,
+datagram, etc.) within each domain.
+The code that implements a protocol
+keeps track of the names that are bound to sockets,
+sets up connections and transfers data between sockets,
+perhaps sending the data across a network.
+This code also keeps track of the names that are bound to sockets.
+It is possible for several protocols, differing only in low level
+details, to implement the same style of communication within
+a particular domain. Although it is possible to select
+which protocol should be used, for nearly all uses it is sufficient to
+request the default protocol. This has been done in all of the example
+programs.
+.pp
+One specifies the domain, style and protocol of a socket when
+it is created. For example, in Figure 5a the call to \fIsocket()\fP
+causes the creation of a datagram socket with the default protocol
+in the UNIX domain.
+.b
+.sh 1 "Datagrams in the UNIX Domain"
+.r
+.(z
+.ft CW
+.so udgramread.c
+.ft
+.ce 1
+Figure 5a\ \ Reading UNIX domain datagrams
+.)z
+.pp
+Let us now look at two programs that create sockets separately.
+The programs in Figures 5a and 5b use datagram communication
+rather than a stream.
+The structure used to name UNIX domain sockets is defined
+in the file \fI<sys/un.h>.\fP
+The definition has also been included in the example for clarity.
+.pp
+Each program creates a socket with a call to \fIsocket().\fP
+These sockets are in the UNIX domain.
+Once a name has been decided upon it is attached to a socket by the
+system call \fIbind().\fP
+The program in Figure 5a uses the name ``socket'',
+which it binds to its socket.
+This name will appear in the working directory of the program.
+The routines in Figure 5b use its
+socket only for sending messages. It does not create a name for
+the socket because no other process has to refer to it.
+.(z
+.ft CW
+.so udgramsend.c
+.ft
+.ce 1
+Figure 5b\ \ Sending a UNIX domain datagrams
+.)z
+.pp
+Names in the UNIX domain are path names. Like file path names they may
+be either absolute (e.g. ``/dev/imaginary'') or relative (e.g. ``socket'').
+Because these names are used to allow processes to rendezvous, relative
+path names can pose difficulties and should be used with care.
+When a name is bound into the name space, a file (inode) is allocated in the
+file system. If
+the inode is not deallocated, the name will continue to exist even after
+the bound socket is closed. This can cause subsequent runs of a program
+to find that a name is unavailable, and can cause
+directories to fill up with these
+objects. The names are removed by calling \fIunlink()\fP or using
+the \fIrm\fP\|(1) command.
+Names in the UNIX domain are only used for rendezvous. They are not used
+for message delivery once a connection is established. Therefore, in
+contrast with the Internet domain, unbound sockets need not be (and are
+not) automatically given addresses when they are connected.
+.pp
+There is no established means of communicating names to interested
+parties. In the example, the program in Figure 5b gets the
+name of the socket to which it will send its message through its
+command line arguments. Once a line of communication has been created,
+one can send the names of additional, perhaps new, sockets over the link.
+Facilities will have to be built that will make the distribution of
+names less of a problem than it now is.
+.b
+.sh 1 "Datagrams in the Internet Domain"
+.r
+.(z
+.ft CW
+.so dgramread.c
+.ft
+.ce 1
+Figure 6a\ \ Reading Internet domain datagrams
+.)z
+.pp
+The examples in Figure 6a and 6b are very close to the previous example
+except that the socket is in the Internet domain.
+The structure of Internet domain addresses is defined in the file
+\fI<netinet/in.h>\fP.
+Internet addresses specify a host address (a 32-bit number)
+and a delivery slot, or port, on that
+machine. These ports are managed by the system routines that implement
+a particular protocol.
+Unlike UNIX domain names, Internet socket names are not entered into
+the file system and, therefore,
+they do not have to be unlinked after the socket has been closed.
+When a message must be sent between machines it is sent to
+the protocol routine on the destination machine, which interprets the
+address to determine to which socket the message should be delivered.
+Several different protocols may be active on
+the same machine, but, in general, they will not communicate with one another.
+As a result, different protocols are allowed to use the same port numbers.
+Thus, implicitly, an Internet address is a triple including a protocol as
+well as the port and machine address.
+An \fIassociation\fP is a temporary or permanent specification
+of a pair of communicating sockets.
+An association is thus identified by the tuple
+<\fIprotocol, local machine address, local port,
+remote machine address, remote port\fP>.
+An association may be transient when using datagram sockets;
+the association actually exists during a \fIsend\fP operation.
+.(z
+.ft CW
+.so dgramsend.c
+.ft
+.ce 1
+Figure 6b\ \ Sending an Internet domain datagram
+.)z
+.pp
+The protocol for a socket is chosen when the socket is created. The
+local machine address for a socket can be any valid network address of the
+machine, if it has more than one, or it can be the wildcard value
+INADDR_ANY.
+The wildcard value is used in the program in Figure 6a.
+If a machine has several network addresses, it is likely
+that messages sent to any of the addresses should be deliverable to
+a socket. This will be the case if the wildcard value has been chosen.
+Note that even if the wildcard value is chosen, a program sending messages
+to the named socket must specify a valid network address. One can be willing
+to receive from ``anywhere,'' but one cannot send a message ``anywhere.''
+The program in Figure 6b is given the destination host name as a command
+line argument.
+To determine a network address to which it can send the message, it looks
+up
+the host address by the call to \fIgethostbyname()\fP.
+The returned structure includes the host's network address,
+which is copied into the structure specifying the
+destination of the message.
+.pp
+The port number can be thought of as the number of a mailbox, into
+which the protocol places one's messages. Certain daemons, offering
+certain advertised services, have reserved
+or ``well-known'' port numbers. These fall in the range
+from 1 to 1023. Higher numbers are available to general users.
+Only servers need to ask for a particular number.
+The system will assign an unused port number when an address
+is bound to a socket.
+This may happen when an explicit \fIbind\fP
+call is made with a port number of 0, or
+when a \fIconnect\fP or \fIsend\fP
+is performed on an unbound socket.
+Note that port numbers are not automatically reported back to the user.
+After calling \fIbind(),\fP asking for port 0, one may call
+\fIgetsockname()\fP to discover what port was actually assigned.
+The routine \fIgetsockname()\fP
+will not work for names in the UNIX domain.
+.pp
+The format of the socket address is specified in part by standards within the
+Internet domain. The specification includes the order of the bytes in
+the address. Because machines differ in the internal representation
+they ordinarily use
+to represent integers, printing out the port number as returned by
+\fIgetsockname()\fP may result in a misinterpretation. To
+print out the number, it is necessary to use the routine \fIntohs()\fP
+(for \fInetwork to host: short\fP) to convert the number from the
+network representation to the host's representation. On some machines,
+such as 68000-based machines, this is a null operation. On others,
+such as VAXes, this results in a swapping of bytes. Another routine
+exists to convert a short integer from the host format to the network format,
+called \fIhtons()\fP; similar routines exist for long integers.
+For further information, refer to the
+entry for \fIbyteorder\fP in section 3 of the manual.
+.b
+.sh 1 "Connections"
+.r
+.pp
+To send data between stream sockets (having communication style SOCK_STREAM),
+the sockets must be connected.
+Figures 7a and 7b show two programs that create such a connection.
+The program in 7a is relatively simple.
+To initiate a connection, this program simply creates
+a stream socket, then calls \fIconnect()\fP,
+specifying the address of the socket to which
+it wishes its socket connected. Provided that the target socket exists and
+is prepared to handle a connection, connection will be complete,
+and the program can begin to send
+messages. Messages will be delivered in order without message
+boundaries, as with pipes. The connection is destroyed when either
+socket is closed (or soon thereafter). If a process persists
+in sending messages after the connection is closed, a SIGPIPE signal
+is sent to the process by the operating system. Unless explicit action
+is taken to handle the signal (see the manual page for \fIsignal\fP
+or \fIsigvec\fP),
+the process will terminate and the shell
+will print the message ``broken pipe.''
+.(z
+.ft CW
+.so streamwrite.c
+.ft
+.ce 1
+Figure 7a\ \ Initiating an Internet domain stream connection
+.)z
+.(z
+.ft CW
+.so streamread.c
+.ft
+.ce 1
+Figure 7b\ \ Accepting an Internet domain stream connection
+.sp 2
+.ft CW
+.so strchkread.c
+.ft
+.ce 1
+Figure 7c\ \ Using select() to check for pending connections
+.)z
+.(z
+.so fig8.pic
+.sp
+.ce 1
+Figure 8\ \ Establishing a stream connection
+.)z
+.pp
+Forming a connection is asymmetrical; one process, such as the
+program in Figure 7a, requests a connection with a particular socket,
+the other process accepts connection requests.
+Before a connection can be accepted a socket must be created and an address
+bound to it. This
+situation is illustrated in the top half of Figure 8. Process 2
+has created a socket and bound a port number to it. Process 1 has created an
+unnamed socket.
+The address bound to process 2's socket is then made known to process 1 and,
+perhaps to several other potential communicants as well.
+If there are several possible communicants,
+this one socket might receive several requests for connections.
+As a result, a new socket is created for each connection. This new socket
+is the endpoint for communication within this process for this connection.
+A connection may be destroyed by closing the corresponding socket.
+.pp
+The program in Figure 7b is a rather trivial example of a server. It
+creates a socket to which it binds a name, which it then advertises.
+(In this case it prints out the socket number.) The program then calls
+\fIlisten()\fP for this socket.
+Since several clients may attempt to connect more or less
+simultaneously, a queue of pending connections is maintained in the system
+address space. \fIListen()\fP
+marks the socket as willing to accept connections and initializes the queue.
+When a connection is requested, it is listed in the queue. If the
+queue is full, an error status may be returned to the requester.
+The maximum length of this queue is specified by the second argument of
+\fIlisten()\fP; the maximum length is limited by the system.
+Once the listen call has been completed, the program enters
+an infinite loop. On each pass through the loop, a new connection is
+accepted and removed from the queue, and, hence, a new socket for the
+connection is created. The bottom half of Figure 8 shows the result of
+Process 1 connecting with the named socket of Process 2, and Process 2
+accepting the connection. After the connection is created, the
+service, in this case printing out the messages, is performed and the
+connection socket closed. The \fIaccept()\fP
+call will take a pending connection
+request from the queue if one is available, or block waiting for a request.
+Messages are read from the connection socket.
+Reads from an active connection will normally block until data is available.
+The number of bytes read is returned. When a connection is destroyed,
+the read call returns immediately. The number of bytes returned will
+be zero.
+.pp
+The program in Figure 7c is a slight variation on the server in Figure 7b.
+It avoids blocking when there are no pending connection requests by
+calling \fIselect()\fP
+to check for pending requests before calling \fIaccept().\fP
+This strategy is useful when connections may be received
+on more than one socket, or when data may arrive on other connected
+sockets before another connection request.
+.pp
+The programs in Figures 9a and 9b show a program using stream communication
+in the UNIX domain. Streams in the UNIX domain can be used for this sort
+of program in exactly the same way as Internet domain streams, except for
+the form of the names and the restriction of the connections to a single
+file system. There are some differences, however, in the functionality of
+streams in the two domains, notably in the handling of
+\fIout-of-band\fP data (discussed briefly below). These differences
+are beyond the scope of this paper.
+.(z
+.ft CW
+.so ustreamwrite.c
+.ft
+.ce 1
+Figure 9a\ \ Initiating a UNIX domain stream connection
+.sp 2
+.ft CW
+.so ustreamread.c
+.ft
+.ce 1
+Figure 9b\ \ Accepting a UNIX domain stream connection
+.)z
+.b
+.sh 1 "Reads, Writes, Recvs, etc."
+.r
+.pp
+UNIX 4.4BSD has several system calls for reading and writing information.
+The simplest calls are \fIread() \fP and \fIwrite().\fP \fIWrite()\fP
+takes as arguments the index of a descriptor, a pointer to a buffer
+containing the data and the size of the data.
+The descriptor may indicate either a file or a connected socket.
+``Connected'' can mean either a connected stream socket (as described
+in Section 8) or a datagram socket for which a \fIconnect()\fP
+call has provided a default destination (see the \fIconnect()\fP manual page).
+\fIRead()\fP also takes a descriptor that indicates either a file or a socket.
+\fIWrite()\fP requires a connected socket since no destination is
+specified in the parameters of the system call.
+\fIRead()\fP can be used for either a connected or an unconnected socket.
+These calls are, therefore, quite flexible and may be used to
+write applications that require no assumptions about the source of
+their input or the destination of their output.
+There are variations on \fIread() \fP and \fIwrite()\fP
+that allow the source and destination of the input and output to use
+several separate buffers, while retaining the flexibility to handle
+both files and sockets. These are \fIreadv()\fP and \fI writev(),\fP
+for read and write \fIvector.\fP
+.pp
+It is sometimes necessary to send high priority data over a
+connection that may have unread low priority data at the
+other end. For example, a user interface process may be interpreting
+commands and sending them on to another process through a stream connection.
+The user interface may have filled the stream with as yet unprocessed
+requests when the user types
+a command to cancel all outstanding requests.
+Rather than have the high priority data wait
+to be processed after the low priority data, it is possible to
+send it as \fIout-of-band\fP
+(OOB) data. The notification of pending OOB data results in the generation of
+a SIGURG signal, if this signal has been enabled (see the manual
+page for \fIsignal\fP or \fIsigvec\fP).
+See [Leffler 1986] for a more complete description of the OOB mechanism.
+There are a pair of calls similar to \fIread\fP and \fIwrite\fP
+that allow options, including sending
+and receiving OOB information; these are \fI send()\fP
+and \fIrecv().\fP
+These calls are used only with sockets; specifying a descriptor for a file will
+result in the return of an error status. These calls also allow
+\fIpeeking\fP at data in a stream.
+That is, they allow a process to read data without removing the data from
+the stream. One use of this facility is to read ahead in a stream
+to determine the size of the next item to be read.
+When not using these options, these calls have the same functions as
+\fIread()\fP and \fIwrite().\fP
+.pp
+To send datagrams, one must be allowed to specify the destination.
+The call \fIsendto()\fP
+takes a destination address as an argument and is therefore used for
+sending datagrams. The call \fIrecvfrom()\fP
+is often used to read datagrams, since this call returns the address
+of the sender, if it is available, along with the data.
+If the identity of the sender does not matter, one may use \fIread()\fP
+or \fIrecv().\fP
+.pp
+Finally, there are a pair of calls that allow the sending and
+receiving of messages from multiple buffers, when the address of the
+recipient must be specified. These are \fIsendmsg()\fP and
+\fIrecvmsg().\fP
+These calls are actually quite general and have other uses,
+including, in the UNIX domain, the transmission of a file descriptor from one
+process to another.
+.pp
+The various options for reading and writing are shown in Figure 10,
+together with their parameters. The parameters for each system call
+reflect the differences in function of the different calls.
+In the examples given in this paper, the calls \fIread()\fP and
+\fIwrite()\fP have been used whenever possible.
+.(z
+.ft CW
+ /*
+ * The variable descriptor may be the descriptor of either a file
+ * or of a socket.
+ */
+ cc = read(descriptor, buf, nbytes)
+ int cc, descriptor; char *buf; int nbytes;
+
+ /*
+ * An iovec can include several source buffers.
+ */
+ cc = readv(descriptor, iov, iovcnt)
+ int cc, descriptor; struct iovec *iov; int iovcnt;
+
+ cc = write(descriptor, buf, nbytes)
+ int cc, descriptor; char *buf; int nbytes;
+
+ cc = writev(descriptor, iovec, ioveclen)
+ int cc, descriptor; struct iovec *iovec; int ioveclen;
+
+ /*
+ * The variable ``sock'' must be the descriptor of a socket.
+ * Flags may include MSG_OOB and MSG_PEEK.
+ */
+ cc = send(sock, msg, len, flags)
+ int cc, sock; char *msg; int len, flags;
+
+ cc = sendto(sock, msg, len, flags, to, tolen)
+ int cc, sock; char *msg; int len, flags;
+ struct sockaddr *to; int tolen;
+
+ cc = sendmsg(sock, msg, flags)
+ int cc, sock; struct msghdr msg[]; int flags;
+
+ cc = recv(sock, buf, len, flags)
+ int cc, sock; char *buf; int len, flags;
+
+ cc = recvfrom(sock, buf, len, flags, from, fromlen)
+ int cc, sock; char *buf; int len, flags;
+ struct sockaddr *from; int *fromlen;
+
+ cc = recvmsg(sock, msg, flags)
+ int cc, socket; struct msghdr msg[]; int flags;
+.ft
+.sp 1
+.ce 1
+Figure 10\ \ Varieties of read and write commands
+.)z
+.b
+.sh 1 "Choices"
+.r
+.pp
+This paper has presented examples of some of the forms
+of communication supported by
+Berkeley UNIX 4.4BSD. These have been presented in an order chosen for
+ease of presentation. It is useful to review these options emphasizing the
+factors that make each attractive.
+.pp
+Pipes have the advantage of portability, in that they are supported in all
+UNIX systems. They also are relatively
+simple to use. Socketpairs share this simplicity and have the additional
+advantage of allowing bidirectional communication. The major shortcoming
+of these mechanisms is that they require communicating processes to be
+descendants of a common process. They do not allow intermachine communication.
+.pp
+The two communication domains, UNIX and Internet, allow processes with no common
+ancestor to communicate.
+Of the two, only the Internet domain allows
+communication between machines.
+This makes the Internet domain a necessary
+choice for processes running on separate machines.
+.pp
+The choice between datagrams and stream communication is best made by
+carefully considering the semantic and performance
+requirements of the application.
+Streams can be both advantageous and disadvantageous. One disadvantage
+is that a process is only allowed a limited number of open streams,
+as there are usually only 64 entries available in the open descriptor
+table. This can cause problems if a single server must talk with a large
+number of clients.
+Another is that for delivering a short message the stream setup and
+teardown time can be unnecessarily long. Weighed against this are
+the reliability built into the streams. This will often be the
+deciding factor in favor of streams.
+.b
+.sh 1 "What to do Next"
+.r
+.pp
+Many of the examples presented here can serve as models for multiprocess
+programs and for programs distributed across several machines.
+In developing a new multiprocess program, it is often easiest to
+first write the code to create the processes and communication paths.
+After this code is debugged, the code specific to the application can
+be added.
+.pp
+An introduction to the UNIX system and programming using UNIX system calls
+can be found in [Kernighan and Pike 1984].
+Further documentation of the Berkeley UNIX 4.4BSD IPC mechanisms can be
+found in [Leffler et al. 1986].
+More detailed information about particular calls and protocols
+is provided in sections
+2, 3 and 4 of the
+UNIX Programmer's Manual [CSRG 1986].
+In particular the following manual pages are relevant:
+.(b
+.TS
+l l.
+creating and naming sockets socket(2), bind(2)
+establishing connections listen(2), accept(2), connect(2)
+transferring data read(2), write(2), send(2), recv(2)
+addresses inet(4F)
+protocols tcp(4P), udp(4P).
+.TE
+.)b
+.(b
+.sp
+.b
+Acknowledgements
+.pp
+I would like to thank Sam Leffler and Mike Karels for their help in
+understanding the IPC mechanisms and all the people whose comments
+have helped in writing and improving this report.
+.pp
+This work was sponsored by the Defense Advanced Research Projects Agency
+(DoD), ARPA Order No. 4031, monitored by the Naval Electronics Systems
+Command under contract No. N00039-C-0235.
+The views and conclusions contained in this document are those of the
+author and should not be interpreted as representing official policies,
+either expressed or implied, of the Defense Research Projects Agency
+or of the US Government.
+.)b
+.(b
+.sp
+.b
+References
+.r
+.sp
+.ls 1
+B.W. Kernighan & R. Pike, 1984,
+.i "The UNIX Programming Environment."
+Englewood Cliffs, N.J.: Prentice-Hall.
+.sp
+.ls 1
+B.W. Kernighan & D.M. Ritchie, 1978,
+.i "The C Programming Language,"
+Englewood Cliffs, N.J.: Prentice-Hall.
+.sp
+.ls 1
+S.J. Leffler, R.S. Fabry, W.N. Joy, P. Lapsley, S. Miller & C. Torek, 1986,
+.i "An Advanced 4.4BSD Interprocess Communication Tutorial."
+Computer Systems Research Group,
+Department of Electrical Engineering and Computer Science,
+University of California, Berkeley.
+.sp
+.ls 1
+Computer Systems Research Group, 1986,
+.i "UNIX Programmer's Manual, 4.4 Berkeley Software Distribution."
+Computer Systems Research Group,
+Department of Electrical Engineering and Computer Science,
+University of California, Berkeley.
+.)b
diff --git a/share/doc/psd/20.ipctut/udgramread.c b/share/doc/psd/20.ipctut/udgramread.c
new file mode 100644
index 0000000..2cb605d
--- /dev/null
+++ b/share/doc/psd/20.ipctut/udgramread.c
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)udgramread.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+
+/*
+ * In the included file <sys/un.h> a sockaddr_un is defined as follows
+ * struct sockaddr_un {
+ * short sun_family;
+ * char sun_path[108];
+ * };
+ */
+
+#include <stdio.h>
+
+#define NAME "socket"
+
+/*
+ * This program creates a UNIX domain datagram socket, binds a name to it,
+ * then reads from the socket.
+ */
+main()
+{
+ int sock, length;
+ struct sockaddr_un name;
+ char buf[1024];
+
+ /* Create socket from which to read. */
+ sock = socket(AF_UNIX, SOCK_DGRAM, 0);
+ if (sock < 0) {
+ perror("opening datagram socket");
+ exit(1);
+ }
+ /* Create name. */
+ name.sun_family = AF_UNIX;
+ strcpy(name.sun_path, NAME);
+ if (bind(sock, &name, sizeof(struct sockaddr_un))) {
+ perror("binding name to datagram socket");
+ exit(1);
+ }
+ printf("socket -->%s\en", NAME);
+ /* Read from the socket */
+ if (read(sock, buf, 1024) < 0)
+ perror("receiving datagram packet");
+ printf("-->%s\en", buf);
+ close(sock);
+ unlink(NAME);
+}
diff --git a/share/doc/psd/20.ipctut/udgramsend.c b/share/doc/psd/20.ipctut/udgramsend.c
new file mode 100644
index 0000000..3e3ba93
--- /dev/null
+++ b/share/doc/psd/20.ipctut/udgramsend.c
@@ -0,0 +1,68 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)udgramsend.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <stdio.h>
+
+#define DATA "The sea is calm tonight, the tide is full . . ."
+
+/*
+ * Here I send a datagram to a receiver whose name I get from the command
+ * line arguments. The form of the command line is udgramsend pathname
+ */
+
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ int sock;
+ struct sockaddr_un name;
+
+ /* Create socket on which to send. */
+ sock = socket(AF_UNIX, SOCK_DGRAM, 0);
+ if (sock < 0) {
+ perror("opening datagram socket");
+ exit(1);
+ }
+ /* Construct name of socket to send to. */
+ name.sun_family = AF_UNIX;
+ strcpy(name.sun_path, argv[1]);
+ /* Send message. */
+ if (sendto(sock, DATA, sizeof(DATA), 0,
+ &name, sizeof(struct sockaddr_un)) < 0) {
+ perror("sending datagram message");
+ }
+ close(sock);
+}
diff --git a/share/doc/psd/20.ipctut/ustreamread.c b/share/doc/psd/20.ipctut/ustreamread.c
new file mode 100644
index 0000000..97fadb9
--- /dev/null
+++ b/share/doc/psd/20.ipctut/ustreamread.c
@@ -0,0 +1,96 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)ustreamread.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <stdio.h>
+
+#define NAME "socket"
+
+/*
+ * This program creates a socket in the UNIX domain and binds a name to it.
+ * After printing the socket's name it begins a loop. Each time through the
+ * loop it accepts a connection and prints out messages from it. When the
+ * connection breaks, or a termination message comes through, the program
+ * accepts a new connection.
+ */
+main()
+{
+ int sock, msgsock, rval;
+ struct sockaddr_un server;
+ char buf[1024];
+
+ /* Create socket */
+ sock = socket(AF_UNIX, SOCK_STREAM, 0);
+ if (sock < 0) {
+ perror("opening stream socket");
+ exit(1);
+ }
+ /* Name socket using file system name */
+ server.sun_family = AF_UNIX;
+ strcpy(server.sun_path, NAME);
+ if (bind(sock, &server, sizeof(struct sockaddr_un))) {
+ perror("binding stream socket");
+ exit(1);
+ }
+ printf("Socket has name %s\en", server.sun_path);
+ /* Start accepting connections */
+ listen(sock, 5);
+ for (;;) {
+ msgsock = accept(sock, 0, 0);
+ if (msgsock == -1)
+ perror("accept");
+ else do {
+ bzero(buf, sizeof(buf));
+ if ((rval = read(msgsock, buf, 1024)) < 0)
+ perror("reading stream message");
+ else if (rval == 0)
+ printf("Ending connection\en");
+ else
+ printf("-->%s\en", buf);
+ } while (rval > 0);
+ close(msgsock);
+ }
+ /*
+ * The following statements are not executed, because they follow an
+ * infinite loop. However, most ordinary programs will not run
+ * forever. In the UNIX domain it is necessary to tell the file
+ * system that one is through using NAME. In most programs one uses
+ * the call unlink() as below. Since the user will have to kill this
+ * program, it will be necessary to remove the name by a command from
+ * the shell.
+ */
+ close(sock);
+ unlink(NAME);
+}
diff --git a/share/doc/psd/20.ipctut/ustreamwrite.c b/share/doc/psd/20.ipctut/ustreamwrite.c
new file mode 100644
index 0000000..bdc0b95
--- /dev/null
+++ b/share/doc/psd/20.ipctut/ustreamwrite.c
@@ -0,0 +1,71 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)ustreamwrite.c 8.1 (Berkeley) 6/8/93
+.\"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <stdio.h>
+
+#define DATA "Half a league, half a league . . ."
+
+/*
+ * This program connects to the socket named in the command line and sends a
+ * one line message to that socket. The form of the command line is
+ * ustreamwrite pathname
+ */
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ int sock;
+ struct sockaddr_un server;
+ char buf[1024];
+
+ /* Create socket */
+ sock = socket(AF_UNIX, SOCK_STREAM, 0);
+ if (sock < 0) {
+ perror("opening stream socket");
+ exit(1);
+ }
+ /* Connect socket using name specified by command line. */
+ server.sun_family = AF_UNIX;
+ strcpy(server.sun_path, argv[1]);
+
+ if (connect(sock, &server, sizeof(struct sockaddr_un)) < 0) {
+ close(sock);
+ perror("connecting stream socket");
+ exit(1);
+ }
+ if (write(sock, DATA, sizeof(DATA)) < 0)
+ perror("writing on stream socket");
+}
diff --git a/share/doc/psd/21.ipc/0.t b/share/doc/psd/21.ipc/0.t
new file mode 100644
index 0000000..d28199a
--- /dev/null
+++ b/share/doc/psd/21.ipc/0.t
@@ -0,0 +1,93 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 8.1 (Berkeley) 6/8/93
+.\"
+.EH 'PSD:21-%''Advanced 4.4BSD IPC Tutorial'
+.OH 'Advanced 4.4BSD IPC Tutorial''PSD:21-%'
+.ds lq ``
+.ds rq ''
+.de DT
+.if t .ta .5i 1.25i 2.5i 3.75i
+.\" 3.5i went to 3.8i
+.if n .ta .7i 1.75i 3.8i
+..
+.bd S B 3
+.TL
+An Advanced 4.4BSD Interprocess Communication Tutorial
+.AU
+Samuel J. Leffler
+.AU
+Robert S. Fabry
+.AU
+William N. Joy
+.AU
+Phil Lapsley
+.AI
+Computer Systems Research Group
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+.sp 2
+.AU
+Steve Miller
+.AU
+Chris Torek
+.AI
+Heterogeneous Systems Laboratory
+Department of Computer Science
+University of Maryland, College Park
+College Park, Maryland 20742
+.de IR
+\fI\\$1\fP\\$2
+..
+.de UX
+UNIX\\$1
+..
+.AB
+.PP
+.FS
+* \s-2UNIX\s0 is a trademark of UNIX System Laboratories, Inc.
+in the US and some other countries.
+.FE
+This document provides an introduction to the interprocess
+communication facilities included in the
+4.4BSD release of the
+.UX *
+system.
+.PP
+It discusses the overall model for interprocess communication
+and introduces the interprocess communication primitives
+which have been added to the system. The majority of the
+document considers the use of these primitives in developing
+applications. The reader is expected to be familiar with
+the C programming language as all examples are written in C.
+.AE
diff --git a/share/doc/psd/21.ipc/1.t b/share/doc/psd/21.ipc/1.t
new file mode 100644
index 0000000..f4e48ff
--- /dev/null
+++ b/share/doc/psd/21.ipc/1.t
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 8.1 (Berkeley) 8/14/93
+.\"
+.\".ds LH "4.4BSD IPC Primer
+.\".ds RH Introduction
+.\".ds RF "Leffler/Fabry/Joy
+.\".ds LF "\*(DY
+.\".ds CF "
+.nr H1 1
+.LP
+.bp
+.LG
+.B
+.ce
+1. INTRODUCTION
+.sp 2
+.R
+.NL
+One of the most important additions to UNIX in 4.2BSD was interprocess
+communication.
+These facilities were the result of
+more than two years of discussion and research. The facilities
+provided in 4.2BSD incorporated many of the ideas from current
+research, while trying to maintain the UNIX philosophy of
+simplicity and conciseness.
+The 4.3BSD release of Berkeley UNIX
+improved upon some of the IPC facilities
+while providing an upward-compatible interface.
+4.4BSD adds support for ISO protocols and IP multicasting.
+The BSD interprocess communication
+facilities have become a defacto standard for UNIX.
+.PP
+UNIX has previously been very weak in the area of interprocess
+communication. Prior to the 4BSD facilities, the only
+standard mechanism which allowed two processes to communicate were
+pipes (the mpx files which were part of Version 7 were
+experimental). Unfortunately, pipes are very restrictive
+in that
+the two communicating processes must be related through a
+common ancestor.
+Further, the semantics of pipes makes them almost impossible
+to maintain in a distributed environment.
+.PP
+Earlier attempts at extending the IPC facilities of UNIX have
+met with mixed reaction. The majority of the problems have
+been related to the fact that these facilities have been tied to
+the UNIX file system, either through naming or implementation.
+Consequently, the IPC facilities provided in 4.2BSD were
+designed as a totally independent subsystem. The BSD IPC
+allows processes to rendezvous in many ways.
+Processes may rendezvous through a UNIX file system-like
+name space (a space where all names are path names)
+as well as through a
+network name space. In fact, new name spaces may
+be added at a future time with only minor changes visible
+to users. Further, the communication facilities
+have been extended to include more than the simple byte stream
+provided by a pipe. These extensions have resulted
+in a completely new part of the system which users will need
+time to familiarize themselves with. It is likely that as
+more use is made of these facilities they will be refined;
+only time will tell.
+.PP
+This document provides a high-level description
+of the IPC facilities in 4.4BSD and their use.
+It is designed to complement the manual pages for the IPC primitives
+by examples of their use.
+The remainder of this document is organized in four sections.
+Section 2 introduces the IPC-related system calls and the basic model
+of communication. Section 3 describes some of the supporting
+library routines users may find useful in constructing distributed
+applications. Section 4 is concerned with the client/server model
+used in developing applications and includes examples of the
+two major types of servers. Section 5 delves into advanced topics
+which sophisticated users are likely to encounter when using
+the IPC facilities.
diff --git a/share/doc/psd/21.ipc/2.t b/share/doc/psd/21.ipc/2.t
new file mode 100644
index 0000000..6f08454
--- /dev/null
+++ b/share/doc/psd/21.ipc/2.t
@@ -0,0 +1,714 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 8.1 (Berkeley) 8/14/93
+.\"
+.\".ds RH "Basics
+.bp
+.nr H1 2
+.nr H2 0
+.\" The next line is a major hack to get around internal changes in the groff
+.\" implementation of .NH.
+.nr nh*hl 1
+.bp
+.LG
+.B
+.ce
+2. BASICS
+.sp 2
+.R
+.NL
+.PP
+The basic building block for communication is the \fIsocket\fP.
+A socket is an endpoint of communication to which a name may
+be \fIbound\fP. Each socket in use has a \fItype\fP
+and one or more associated processes. Sockets exist within
+\fIcommunication domains\fP.
+A communication domain is an
+abstraction introduced to bundle common properties of
+processes communicating through sockets.
+One such property is the scheme used to name sockets. For
+example, in the UNIX communication domain sockets are
+named with UNIX path names; e.g. a
+socket may be named \*(lq/dev/foo\*(rq. Sockets normally
+exchange data only with
+sockets in the same domain (it may be possible to cross domain
+boundaries, but only if some translation process is
+performed). The
+4.4BSD IPC facilities support four separate communication domains:
+the UNIX domain, for on-system communication;
+the Internet domain, which is used by
+processes which communicate
+using the Internet standard communication protocols;
+the NS domain, which is used by processes which
+communicate using the Xerox standard communication
+protocols*;
+.FS
+* See \fIInternet Transport Protocols\fP, Xerox System Integration
+Standard (XSIS)028112 for more information. This document is
+almost a necessity for one trying to write NS applications.
+.FE
+and the ISO OSI protocols, which are not documented in this tutorial.
+The underlying communication
+facilities provided by these domains have a significant influence
+on the internal system implementation as well as the interface to
+socket facilities available to a user. An example of the
+latter is that a socket \*(lqoperating\*(rq in the UNIX domain
+sees a subset of the error conditions which are possible
+when operating in the Internet (or NS) domain.
+.NH 2
+Socket types
+.PP
+Sockets are
+typed according to the communication properties visible to a
+user.
+Processes are presumed to communicate only between sockets of
+the same type, although there is
+nothing that prevents communication between sockets of different
+types should the underlying communication
+protocols support this.
+.PP
+Four types of sockets currently are available to a user.
+A \fIstream\fP socket provides for the bidirectional, reliable,
+sequenced, and unduplicated flow of data without record boundaries.
+Aside from the bidirectionality of data flow, a pair of connected
+stream sockets provides an interface nearly identical to that of pipes\(dg.
+.FS
+\(dg In the UNIX domain, in fact, the semantics are identical and,
+as one might expect, pipes have been implemented internally
+as simply a pair of connected stream sockets.
+.FE
+.PP
+A \fIdatagram\fP socket supports bidirectional flow of data which
+is not promised to be sequenced, reliable, or unduplicated.
+That is, a process
+receiving messages on a datagram socket may find messages duplicated,
+and, possibly,
+in an order different from the order in which it was sent.
+An important characteristic of a datagram
+socket is that record boundaries in data are preserved. Datagram
+sockets closely model the facilities found in many contemporary
+packet switched networks such as the Ethernet.
+.PP
+A \fIraw\fP socket provides users access to
+the underlying communication
+protocols which support socket abstractions.
+These sockets are normally datagram oriented, though their
+exact characteristics are dependent on the interface provided by
+the protocol. Raw sockets are not intended for the general user; they
+have been provided mainly for those interested in developing new
+communication protocols, or for gaining access to some of the more
+esoteric facilities of an existing protocol. The use of raw sockets
+is considered in section 5.
+.PP
+A \fIsequenced packet\fP socket is similar to a stream socket,
+with the exception that record boundaries are preserved. This
+interface is provided only as part of the NS socket abstraction,
+and is very important in most serious NS applications.
+Sequenced-packet sockets allow the user to manipulate the
+SPP or IDP headers on a packet or a group of packets either
+by writing a prototype header along with whatever data is
+to be sent, or by specifying a default header to be used with
+all outgoing data, and allows the user to receive the headers
+on incoming packets. The use of these options is considered in
+section 5.
+.PP
+Another potential socket type which has interesting properties is
+the \fIreliably delivered
+message\fP socket.
+The reliably delivered message socket has
+similar properties to a datagram socket, but with
+reliable delivery. There is currently no support for this
+type of socket, but a reliably delivered message protocol
+similar to Xerox's Packet Exchange Protocol (PEX) may be
+simulated at the user level. More information on this topic
+can be found in section 5.
+.NH 2
+Socket creation
+.PP
+To create a socket the \fIsocket\fP system call is used:
+.DS
+s = socket(domain, type, protocol);
+.DE
+This call requests that the system create a socket in the specified
+\fIdomain\fP and of the specified \fItype\fP. A particular protocol may
+also be requested. If the protocol is left unspecified (a value
+of 0), the system will select an appropriate protocol from those
+protocols which comprise the communication domain and which
+may be used to support the requested socket type. The user is
+returned a descriptor (a small integer number) which may be used
+in later system calls which operate on sockets. The domain is specified as
+one of the manifest constants defined in the file <\fIsys/socket.h\fP>.
+For the UNIX domain the constant is AF_UNIX*; for the Internet
+.FS
+* The manifest constants are named AF_whatever as they indicate
+the ``address format'' to use in interpreting names.
+.FE
+domain AF_INET; and for the NS domain, AF_NS.
+The socket types are also defined in this file
+and one of SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, or SOCK_SEQPACKET
+must be specified.
+To create a stream socket in the Internet domain the following
+call might be used:
+.DS
+s = socket(AF_INET, SOCK_STREAM, 0);
+.DE
+This call would result in a stream socket being created with the TCP
+protocol providing the underlying communication support. To
+create a datagram socket for on-machine use the call might
+be:
+.DS
+s = socket(AF_UNIX, SOCK_DGRAM, 0);
+.DE
+.PP
+The default protocol (used when the \fIprotocol\fP argument to the
+\fIsocket\fP call is 0) should be correct for most every
+situation. However, it is possible to specify a protocol
+other than the default; this will be covered in
+section 5.
+.PP
+There are several reasons a socket call may fail. Aside from
+the rare occurrence of lack of memory (ENOBUFS), a socket
+request may fail due to a request for an unknown protocol
+(EPROTONOSUPPORT), or a request for a type of socket for
+which there is no supporting protocol (EPROTOTYPE).
+.NH 2
+Binding local names
+.PP
+A socket is created without a name. Until a name is bound
+to a socket, processes have no way to reference it and, consequently,
+no messages may be received on it.
+Communicating processes are bound
+by an \fIassociation\fP. In the Internet and NS domains,
+an association
+is composed of local and foreign
+addresses, and local and foreign ports,
+while in the UNIX domain, an association is composed of
+local and foreign path names (the phrase ``foreign pathname''
+means a pathname created by a foreign process, not a pathname
+on a foreign system).
+In most domains, associations must be unique.
+In the Internet domain there
+may never be duplicate <protocol, local address, local port, foreign
+address, foreign port> tuples. UNIX domain sockets need not always
+be bound to a name, but when bound
+there may never be duplicate <protocol, local pathname, foreign
+pathname> tuples.
+The pathnames may not refer to files
+already existing on the system
+in 4.3; the situation may change in future releases.
+.PP
+The \fIbind\fP system call allows a process to specify half of
+an association, <local address, local port>
+(or <local pathname>), while the \fIconnect\fP
+and \fIaccept\fP primitives are used to complete a socket's association.
+.PP
+In the Internet domain,
+binding names to sockets can be fairly complex.
+Fortunately, it is usually not necessary to specifically bind an
+address and port number to a socket, because the
+\fIconnect\fP and \fIsend\fP calls will automatically
+bind an appropriate address if they are used with an
+unbound socket. The process of binding names to NS
+sockets is similar in most ways to that of
+binding names to Internet sockets.
+.PP
+The \fIbind\fP system call is used as follows:
+.DS
+bind(s, name, namelen);
+.DE
+The bound name is a variable length byte string which is interpreted
+by the supporting protocol(s). Its interpretation may vary from
+communication domain to communication domain (this is one of
+the properties which comprise the \*(lqdomain\*(rq).
+As mentioned, in the
+Internet domain names contain an Internet address and port
+number. NS domain names contain an NS address and
+port number. In the UNIX domain, names contain a path name and
+a family, which is always AF_UNIX. If one wanted to bind
+the name \*(lq/tmp/foo\*(rq to a UNIX domain socket, the
+following code would be used*:
+.FS
+* Note that, although the tendency here is to call the \*(lqaddr\*(rq
+structure \*(lqsun\*(rq, doing so would cause problems if the code
+were ever ported to a Sun workstation.
+.FE
+.DS
+#include <sys/un.h>
+ ...
+struct sockaddr_un addr;
+ ...
+strcpy(addr.sun_path, "/tmp/foo");
+addr.sun_family = AF_UNIX;
+bind(s, (struct sockaddr *) &addr, strlen(addr.sun_path) +
+ sizeof (addr.sun_len) + sizeof (addr.sun_family));
+.DE
+Note that in determining the size of a UNIX domain address null
+bytes are not counted, which is why \fIstrlen\fP is used. In
+the current implementation of UNIX domain IPC,
+the file name
+referred to in \fIaddr.sun_path\fP is created as a socket
+in the system file space.
+The caller must, therefore, have
+write permission in the directory where
+\fIaddr.sun_path\fP is to reside, and this file should be deleted by the
+caller when it is no longer needed. Future versions of 4BSD
+may not create this file.
+.PP
+In binding an Internet address things become more
+complicated. The actual call is similar,
+.DS
+#include <sys/types.h>
+#include <netinet/in.h>
+ ...
+struct sockaddr_in sin;
+ ...
+bind(s, (struct sockaddr *) &sin, sizeof (sin));
+.DE
+but the selection of what to place in the address \fIsin\fP
+requires some discussion. We will come back to the problem
+of formulating Internet addresses in section 3 when
+the library routines used in name resolution are discussed.
+.PP
+Binding an NS address to a socket is even more
+difficult,
+especially since the Internet library routines do not
+work with NS hostnames. The actual call is again similar:
+.DS
+#include <sys/types.h>
+#include <netns/ns.h>
+ ...
+struct sockaddr_ns sns;
+ ...
+bind(s, (struct sockaddr *) &sns, sizeof (sns));
+.DE
+Again, discussion of what to place in a \*(lqstruct sockaddr_ns\*(rq
+will be deferred to section 3.
+.NH 2
+Connection establishment
+.PP
+Connection establishment is usually asymmetric,
+with one process a \*(lqclient\*(rq and the other a \*(lqserver\*(rq.
+The server, when willing to offer its advertised services,
+binds a socket to a well-known address associated with the service
+and then passively \*(lqlistens\*(rq on its socket.
+It is then possible for an unrelated process to rendezvous
+with the server.
+The client requests services from the server by initiating a
+\*(lqconnection\*(rq to the server's socket.
+On the client side the \fIconnect\fP call is
+used to initiate a connection. Using the UNIX domain, this
+might appear as,
+.DS
+struct sockaddr_un server;
+ ...
+connect(s, (struct sockaddr *)&server, strlen(server.sun_path) +
+ sizeof (server.sun_family));
+.DE
+while in the Internet domain,
+.DS
+struct sockaddr_in server;
+ ...
+connect(s, (struct sockaddr *)&server, sizeof (server));
+.DE
+and in the NS domain,
+.DS
+struct sockaddr_ns server;
+ ...
+connect(s, (struct sockaddr *)&server, sizeof (server));
+.DE
+where \fIserver\fP in the example above would contain either the UNIX
+pathname, Internet address and port number, or NS address and
+port number of the server to which the
+client process wishes to speak.
+If the client process's socket is unbound at the time of
+the connect call,
+the system will automatically select and bind a name to
+the socket if necessary; c.f. section 5.4.
+This is the usual way that local addresses are bound
+to a socket.
+.PP
+An error is returned if the connection was unsuccessful
+(any name automatically bound by the system, however, remains).
+Otherwise, the socket is associated with the server and
+data transfer may begin. Some of the more common errors returned
+when a connection attempt fails are:
+.IP ETIMEDOUT
+.br
+After failing to establish a connection for a period of time,
+the system decided there was no point in retrying the
+connection attempt any more. This usually occurs because
+the destination host is down, or because problems in
+the network resulted in transmissions being lost.
+.IP ECONNREFUSED
+.br
+The host refused service for some reason.
+This is usually
+due to a server process
+not being present at the requested name.
+.IP "ENETDOWN or EHOSTDOWN"
+.br
+These operational errors are
+returned based on status information delivered to
+the client host by the underlying communication services.
+.IP "ENETUNREACH or EHOSTUNREACH"
+.br
+These operational errors can occur either because the network
+or host is unknown (no route to the network or host is present),
+or because of status information returned by intermediate
+gateways or switching nodes. Many times the status returned
+is not sufficient to distinguish a network being down from a
+host being down, in which case the system
+indicates the entire network is unreachable.
+.PP
+For the server to receive a client's connection it must perform
+two steps after binding its socket.
+The first is to indicate a willingness to listen for
+incoming connection requests:
+.DS
+listen(s, 5);
+.DE
+The second parameter to the \fIlisten\fP call specifies the maximum
+number of outstanding connections which may be queued awaiting
+acceptance by the server process; this number
+may be limited by the system. Should a connection be
+requested while the queue is full, the connection will not be
+refused, but rather the individual messages which comprise the
+request will be ignored. This gives a harried server time to
+make room in its pending connection queue while the client
+retries the connection request. Had the connection been returned
+with the ECONNREFUSED error, the client would be unable to tell
+if the server was up or not. As it is now it is still possible
+to get the ETIMEDOUT error back, though this is unlikely. The
+backlog figure supplied with the listen call is currently limited
+by the system to a maximum of 5 pending connections on any
+one queue. This avoids the problem of processes hogging system
+resources by setting an infinite backlog, then ignoring
+all connection requests.
+.PP
+With a socket marked as listening, a server may \fIaccept\fP
+a connection:
+.DS
+struct sockaddr_in from;
+ ...
+fromlen = sizeof (from);
+newsock = accept(s, (struct sockaddr *)&from, &fromlen);
+.DE
+(For the UNIX domain, \fIfrom\fP would be declared as a
+\fIstruct sockaddr_un\fP, and for the NS domain, \fIfrom\fP
+would be declared as a \fIstruct sockaddr_ns\fP,
+but nothing different would need
+to be done as far as \fIfromlen\fP is concerned. In the examples
+which follow, only Internet routines will be discussed.) A new
+descriptor is returned on receipt of a connection (along with
+a new socket). If the server wishes to find out who its client is,
+it may supply a buffer for the client socket's name. The value-result
+parameter \fIfromlen\fP is initialized by the server to indicate how
+much space is associated with \fIfrom\fP, then modified on return
+to reflect the true size of the name. If the client's name is not
+of interest, the second parameter may be a null pointer.
+.PP
+\fIAccept\fP normally blocks. That is, \fIaccept\fP
+will not return until a connection is available or the system call
+is interrupted by a signal to the process. Further, there is no
+way for a process to indicate it will accept connections from only
+a specific individual, or individuals. It is up to the user process
+to consider who the connection is from and close down the connection
+if it does not wish to speak to the process. If the server process
+wants to accept connections on more than one socket, or wants to avoid blocking
+on the accept call, there are alternatives; they will be considered
+in section 5.
+.NH 2
+Data transfer
+.PP
+With a connection established, data may begin to flow. To send
+and receive data there are a number of possible calls.
+With the peer entity at each end of a connection
+anchored, a user can send or receive a message without specifying
+the peer. As one might expect, in this case, then
+the normal \fIread\fP and \fIwrite\fP system calls are usable,
+.DS
+write(s, buf, sizeof (buf));
+read(s, buf, sizeof (buf));
+.DE
+In addition to \fIread\fP and \fIwrite\fP,
+the new calls \fIsend\fP and \fIrecv\fP
+may be used:
+.DS
+send(s, buf, sizeof (buf), flags);
+recv(s, buf, sizeof (buf), flags);
+.DE
+While \fIsend\fP and \fIrecv\fP are virtually identical to
+\fIread\fP and \fIwrite\fP,
+the extra \fIflags\fP argument is important. The flags,
+defined in \fI<sys/socket.h>\fP, may be
+specified as a non-zero value if one or more
+of the following is required:
+.DS
+.TS
+l l.
+MSG_OOB send/receive out of band data
+MSG_PEEK look at data without reading
+MSG_DONTROUTE send data without routing packets
+.TE
+.DE
+Out of band data is a notion specific to stream sockets, and one
+which we will not immediately consider. The option to have data
+sent without routing applied to the outgoing packets is currently
+used only by the routing table management process, and is
+unlikely to be of interest to the casual user. The ability
+to preview data is, however, of interest. When MSG_PEEK
+is specified with a \fIrecv\fP call, any data present is returned
+to the user, but treated as still \*(lqunread\*(rq. That
+is, the next \fIread\fP or \fIrecv\fP call applied to the socket will
+return the data previously previewed.
+.NH 2
+Discarding sockets
+.PP
+Once a socket is no longer of interest, it may be discarded
+by applying a \fIclose\fP to the descriptor,
+.DS
+close(s);
+.DE
+If data is associated with a socket which promises reliable delivery
+(e.g. a stream socket) when a close takes place, the system will
+continue to attempt to transfer the data.
+However, after a fairly long period of
+time, if the data is still undelivered, it will be discarded.
+Should a user have no use for any pending data, it may
+perform a \fIshutdown\fP on the socket prior to closing it.
+This call is of the form:
+.DS
+shutdown(s, how);
+.DE
+where \fIhow\fP is 0 if the user is no longer interested in reading
+data, 1 if no more data will be sent, or 2 if no data is to
+be sent or received.
+.NH 2
+Connectionless sockets
+.PP
+To this point we have been concerned mostly with sockets which
+follow a connection oriented model. However, there is also
+support for connectionless interactions typical of the datagram
+facilities found in contemporary packet switched networks.
+A datagram socket provides a symmetric interface to data
+exchange. While processes are still likely to be client
+and server, there is no requirement for connection establishment.
+Instead, each message includes the destination address.
+.PP
+Datagram sockets are created as before.
+If a particular local address is needed,
+the \fIbind\fP operation must precede the first data transmission.
+Otherwise, the system will set the local address and/or port
+when data is first sent.
+To send data, the \fIsendto\fP primitive is used,
+.DS
+sendto(s, buf, buflen, flags, (struct sockaddr *)&to, tolen);
+.DE
+The \fIs\fP, \fIbuf\fP, \fIbuflen\fP, and \fIflags\fP
+parameters are used as before.
+The \fIto\fP and \fItolen\fP
+values are used to indicate the address of the intended recipient of the
+message. When
+using an unreliable datagram interface, it is
+unlikely that any errors will be reported to the sender. When
+information is present locally to recognize a message that can
+not be delivered (for instance when a network is unreachable),
+the call will return \-1 and the global value \fIerrno\fP will
+contain an error number.
+.PP
+To receive messages on an unconnected datagram socket, the
+\fIrecvfrom\fP primitive is provided:
+.DS
+recvfrom(s, buf, buflen, flags, (struct sockaddr *)&from, &fromlen);
+.DE
+Once again, the \fIfromlen\fP parameter is handled in
+a value-result fashion, initially containing the size of
+the \fIfrom\fP buffer, and modified on return to indicate
+the actual size of the address from which the datagram was received.
+.PP
+In addition to the two calls mentioned above, datagram
+sockets may also use the \fIconnect\fP call to associate
+a socket with a specific destination address. In this case, any
+data sent on the socket will automatically be addressed
+to the connected peer, and only data received from that
+peer will be delivered to the user. Only one connected
+address is permitted for each socket at one time;
+a second connect will change the destination address,
+and a connect to a null address (family AF_UNSPEC)
+will disconnect.
+Connect requests on datagram sockets return immediately,
+as this simply results in the system recording
+the peer's address (as compared to a stream socket, where a
+connect request initiates establishment of an end to end
+connection). \fIAccept\fP and \fIlisten\fP are not
+used with datagram sockets.
+.PP
+While a datagram socket socket is connected,
+errors from recent \fIsend\fP calls may be returned
+asynchronously.
+These errors may be reported on subsequent operations
+on the socket,
+or a special socket option used with \fIgetsockopt\fP, SO_ERROR,
+may be used to interrogate the error status.
+A \fIselect\fP for reading or writing will return true
+when an error indication has been received.
+The next operation will return the error, and the error status is cleared.
+Other of the less
+important details of datagram sockets are described
+in section 5.
+.NH 2
+Input/Output multiplexing
+.PP
+One last facility often used in developing applications
+is the ability to multiplex i/o requests among multiple
+sockets and/or files. This is done using the \fIselect\fP
+call:
+.DS
+#include <sys/time.h>
+#include <sys/types.h>
+ ...
+
+fd_set readmask, writemask, exceptmask;
+struct timeval timeout;
+ ...
+select(nfds, &readmask, &writemask, &exceptmask, &timeout);
+.DE
+\fISelect\fP takes as arguments pointers to three sets, one for
+the set of file descriptors for which the caller wishes to
+be able to read data on, one for those descriptors to which
+data is to be written, and one for which exceptional conditions
+are pending; out-of-band data is the only
+exceptional condition currently implemented by the socket
+If the user is not interested
+in certain conditions (i.e., read, write, or exceptions),
+the corresponding argument to the \fIselect\fP should
+be a null pointer.
+.PP
+Each set is actually a structure containing an array of
+long integer bit masks; the size of the array is set
+by the definition FD_SETSIZE.
+The array is be
+long enough to hold one bit for each of FD_SETSIZE file descriptors.
+.PP
+The macros FD_SET(\fIfd, &mask\fP) and
+FD_CLR(\fIfd, &mask\fP)
+have been provided for adding and removing file descriptor
+\fIfd\fP in the set \fImask\fP. The
+set should be zeroed before use, and
+the macro FD_ZERO(\fI&mask\fP) has been provided
+to clear the set \fImask\fP.
+The parameter \fInfds\fP in the \fIselect\fP call specifies the range
+of file descriptors (i.e. one plus the value of the largest
+descriptor) to be examined in a set.
+.PP
+A timeout value may be specified if the selection
+is not to last more than a predetermined period of time. If
+the fields in \fItimeout\fP are set to 0, the selection takes
+the form of a
+\fIpoll\fP, returning immediately. If the last parameter is
+a null pointer, the selection will block indefinitely*.
+.FS
+* To be more specific, a return takes place only when a
+descriptor is selectable, or when a signal is received by
+the caller, interrupting the system call.
+.FE
+\fISelect\fP normally returns the number of file descriptors selected;
+if the \fIselect\fP call returns due to the timeout expiring, then
+the value 0 is returned.
+If the \fIselect\fP terminates because of an error or interruption,
+a \-1 is returned with the error number in \fIerrno\fP,
+and with the file descriptor masks unchanged.
+.PP
+Assuming a successful return, the three sets will
+indicate which
+file descriptors are ready to be read from, written to, or
+have exceptional conditions pending.
+The status of a file descriptor in a select mask may be
+tested with the \fIFD_ISSET(fd, &mask)\fP macro, which
+returns a non-zero value if \fIfd\fP is a member of the set
+\fImask\fP, and 0 if it is not.
+.PP
+To determine if there are connections waiting
+on a socket to be used with an \fIaccept\fP call,
+\fIselect\fP can be used, followed by
+a \fIFD_ISSET(fd, &mask)\fP macro to check for read
+readiness on the appropriate socket. If \fIFD_ISSET\fP
+returns a non-zero value, indicating permission to read, then a
+connection is pending on the socket.
+.PP
+As an example, to read data from two sockets, \fIs1\fP and
+\fIs2\fP as it is available from each and with a one-second
+timeout, the following code
+might be used:
+.DS
+#include <sys/time.h>
+#include <sys/types.h>
+ ...
+fd_set read_template;
+struct timeval wait;
+ ...
+for (;;) {
+ wait.tv_sec = 1; /* one second */
+ wait.tv_usec = 0;
+
+ FD_ZERO(&read_template);
+
+ FD_SET(s1, &read_template);
+ FD_SET(s2, &read_template);
+
+ nb = select(FD_SETSIZE, &read_template, (fd_set *) 0, (fd_set *) 0, &wait);
+ if (nb <= 0) {
+ \fIAn error occurred during the \fPselect\fI, or
+ the \fPselect\fI timed out.\fP
+ }
+
+ if (FD_ISSET(s1, &read_template)) {
+ \fISocket #1 is ready to be read from.\fP
+ }
+
+ if (FD_ISSET(s2, &read_template)) {
+ \fISocket #2 is ready to be read from.\fP
+ }
+}
+.DE
+.PP
+In 4.2, the arguments to \fIselect\fP were pointers to integers
+instead of pointers to \fIfd_set\fPs. This type of call
+will still work as long as the number of file descriptors
+being examined is less than the number of bits in an
+integer; however, the methods illustrated above should
+be used in all current programs.
+.PP
+\fISelect\fP provides a synchronous multiplexing scheme.
+Asynchronous notification of output completion, input availability,
+and exceptional conditions is possible through use of the
+SIGIO and SIGURG signals described in section 5.
diff --git a/share/doc/psd/21.ipc/3.t b/share/doc/psd/21.ipc/3.t
new file mode 100644
index 0000000..6e7eb06
--- /dev/null
+++ b/share/doc/psd/21.ipc/3.t
@@ -0,0 +1,411 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)3.t 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.\"
+.\".ds RH "Network Library Routines
+.bp
+.nr H1 3
+.nr H2 0
+.bp
+.LG
+.B
+.ce
+3. NETWORK LIBRARY ROUTINES
+.sp 2
+.R
+.NL
+.PP
+The discussion in section 2 indicated the possible need to
+locate and construct network addresses when using the
+interprocess communication facilities in a distributed
+environment. To aid in this task a number of routines
+have been added to the standard C run-time library.
+In this section we will consider the new routines provided
+to manipulate network addresses. While the 4.4BSD networking
+facilities support the Internet protocols
+and the Xerox NS protocols,
+most of the routines presented
+in this section do not apply to the NS domain. Unless otherwise
+stated, it should be assumed that the routines presented in this
+section do not apply to the NS domain.
+.PP
+Locating a service on a remote host requires many levels of
+mapping before client and server may
+communicate. A service is assigned a name which is intended
+for human consumption; e.g. \*(lqthe \fIlogin server\fP on host
+monet\*(rq.
+This name, and the name of the peer host, must then be translated
+into network \fIaddresses\fP which are not necessarily suitable
+for human consumption. Finally, the address must then used in locating
+a physical \fIlocation\fP and \fIroute\fP to the service. The
+specifics of these three mappings are likely to vary between
+network architectures. For instance, it is desirable for a network
+to not require hosts to
+be named in such a way that their physical location is known by
+the client host. Instead, underlying services in the network
+may discover the actual location of the host at the time a client
+host wishes to communicate. This ability to have hosts named in
+a location independent manner may induce overhead in connection
+establishment, as a discovery process must take place,
+but allows a host to be physically mobile without requiring it to
+notify its clientele of its current location.
+.PP
+Standard routines are provided for: mapping host names
+to network addresses, network names to network numbers,
+protocol names to protocol numbers, and service names
+to port numbers and the appropriate protocol to
+use in communicating with the server process. The
+file <\fInetdb.h\fP> must be included when using any of these
+routines.
+.NH 2
+Host names
+.PP
+An Internet host name to address mapping is represented by
+the \fIhostent\fP structure:
+.DS
+.if t .ta 0.6i 1.1i 2.6i
+struct hostent {
+ char *h_name; /* official name of host */
+ char **h_aliases; /* alias list */
+ int h_addrtype; /* host address type (e.g., AF_INET) */
+ int h_length; /* length of address */
+ char **h_addr_list; /* list of addresses, null terminated */
+};
+
+#define h_addr h_addr_list[0] /* first address, network byte order */
+.DE
+The routine \fIgethostbyname\fP(3N) takes an Internet host name
+and returns a \fIhostent\fP structure,
+while the routine \fIgethostbyaddr\fP(3N)
+maps Internet host addresses into a \fIhostent\fP structure.
+.PP
+The official name of the host and its public aliases are
+returned by these routines,
+along with the address type (family) and a null terminated list of
+variable length address. This list of addresses is
+required because it is possible
+for a host to have many addresses, all having the same name.
+The \fIh_addr\fP definition is provided for backward compatibility,
+and is defined to be the first address in the list of addresses
+in the \fIhostent\fP structure.
+.PP
+The database for these calls is provided either by the
+file \fI/etc/hosts\fP (\fIhosts\fP\|(5)),
+or by use of a nameserver, \fInamed\fP\|(8).
+Because of the differences in these databases and their access protocols,
+the information returned may differ.
+When using the host table version of \fIgethostbyname\fP,
+only one address will be returned, but all listed aliases will be included.
+The nameserver version may return alternate addresses,
+but will not provide any aliases other than one given as argument.
+.PP
+Unlike Internet names, NS names are always mapped into host
+addresses by the use of a standard NS \fIClearinghouse service\fP,
+a distributed name and authentication server. The algorithms
+for mapping NS names to addresses via a Clearinghouse are
+rather complicated, and the routines are not part of the
+standard libraries. The user-contributed Courier (Xerox
+remote procedure call protocol) compiler contains routines
+to accomplish this mapping; see the documentation and
+examples provided therein for more information. It is
+expected that almost all software that has to communicate
+using NS will need to use the facilities of
+the Courier compiler.
+.PP
+An NS host address is represented by the following:
+.DS
+union ns_host {
+ u_char c_host[6];
+ u_short s_host[3];
+};
+
+union ns_net {
+ u_char c_net[4];
+ u_short s_net[2];
+};
+
+struct ns_addr {
+ union ns_net x_net;
+ union ns_host x_host;
+ u_short x_port;
+};
+.DE
+The following code fragment inserts a known NS address into
+a \fIns_addr\fP:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netns/ns.h>
+ ...
+u_long netnum;
+struct sockaddr_ns dst;
+ ...
+bzero((char *)&dst, sizeof(dst));
+
+/*
+ * There is no convenient way to assign a long
+ * integer to a ``union ns_net'' at present; in
+ * the future, something will hopefully be provided,
+ * but this is the portable way to go for now.
+ * The network number below is the one for the NS net
+ * that the desired host (gyre) is on.
+ */
+netnum = htonl(2266);
+dst.sns_addr.x_net = *(union ns_net *) &netnum;
+dst.sns_family = AF_NS;
+
+/*
+ * host 2.7.1.0.2a.18 == "gyre:Computer Science:UofMaryland"
+ */
+dst.sns_addr.x_host.c_host[0] = 0x02;
+dst.sns_addr.x_host.c_host[1] = 0x07;
+dst.sns_addr.x_host.c_host[2] = 0x01;
+dst.sns_addr.x_host.c_host[3] = 0x00;
+dst.sns_addr.x_host.c_host[4] = 0x2a;
+dst.sns_addr.x_host.c_host[5] = 0x18;
+dst.sns_addr.x_port = htons(75);
+.DE
+.NH 2
+Network names
+.PP
+As for host names, routines for mapping network names to numbers,
+and back, are provided. These routines return a \fInetent\fP
+structure:
+.DS
+.DT
+/*
+ * Assumption here is that a network number
+ * fits in 32 bits -- probably a poor one.
+ */
+struct netent {
+ char *n_name; /* official name of net */
+ char **n_aliases; /* alias list */
+ int n_addrtype; /* net address type */
+ int n_net; /* network number, host byte order */
+};
+.DE
+The routines \fIgetnetbyname\fP(3N), \fIgetnetbynumber\fP(3N),
+and \fIgetnetent\fP(3N) are the network counterparts to the
+host routines described above. The routines extract their
+information from \fI/etc/networks\fP.
+.PP
+NS network numbers are determined either by asking your local
+Xerox Network Administrator (and hardcoding the information
+into your code), or by querying the Clearinghouse for addresses.
+The internetwork router is the only process
+that needs to manipulate network numbers on a regular basis; if
+a process wishes to communicate with a machine, it should ask the
+Clearinghouse for that machine's address (which will include
+the net number).
+.NH 2
+Protocol names
+.PP
+For protocols, which are defined in \fI/etc/protocols\fP,
+the \fIprotoent\fP structure defines the
+protocol-name mapping
+used with the routines \fIgetprotobyname\fP(3N),
+\fIgetprotobynumber\fP(3N),
+and \fIgetprotoent\fP(3N):
+.DS
+.DT
+struct protoent {
+ char *p_name; /* official protocol name */
+ char **p_aliases; /* alias list */
+ int p_proto; /* protocol number */
+};
+.DE
+.PP
+In the NS domain, protocols are indicated by the "client type"
+field of an IDP header. No protocol database exists; see section
+5 for more information.
+.NH 2
+Service names
+.PP
+Information regarding services is a bit more complicated. A service
+is expected to reside at a specific \*(lqport\*(rq and employ
+a particular communication protocol. This view is consistent with
+the Internet domain, but inconsistent with other network architectures.
+Further, a service may reside on multiple ports.
+If this occurs, the higher level library routines
+will have to be bypassed or extended.
+Services available are contained in the file \fI/etc/services\fP.
+A service mapping is described by the \fIservent\fP structure,
+.DS
+.DT
+struct servent {
+ char *s_name; /* official service name */
+ char **s_aliases; /* alias list */
+ int s_port; /* port number, network byte order */
+ char *s_proto; /* protocol to use */
+};
+.DE
+The routine \fIgetservbyname\fP(3N) maps service
+names to a servent structure by specifying a service name and,
+optionally, a qualifying protocol. Thus the call
+.DS
+sp = getservbyname("telnet", (char *) 0);
+.DE
+returns the service specification for a telnet server using
+any protocol, while the call
+.DS
+sp = getservbyname("telnet", "tcp");
+.DE
+returns only that telnet server which uses the TCP protocol.
+The routines \fIgetservbyport\fP(3N) and \fIgetservent\fP(3N) are
+also provided. The \fIgetservbyport\fP routine has an interface similar
+to that provided by \fIgetservbyname\fP; an optional protocol name may
+be specified to qualify lookups.
+.PP
+In the NS domain, services are handled by a central dispatcher
+provided as part of the Courier remote procedure call facilities.
+Again, the reader is referred to the Courier compiler documentation
+and to the Xerox standard*
+.FS
+* \fICourier: The Remote Procedure Call Protocol\fP, XSIS 038112.
+.FE
+for further details.
+.NH 2
+Miscellaneous
+.PP
+With the support routines described above, an Internet application program
+should rarely have to deal directly
+with addresses. This allows
+services to be developed as much as possible in a network independent
+fashion. It is clear, however, that purging all network dependencies
+is very difficult. So long as the user is required to supply network
+addresses when naming services and sockets there will always some
+network dependency in a program. For example, the normal
+code included in client programs, such as the remote login program,
+is of the form shown in Figure 1.
+(This example will be considered in more detail in section 4.)
+.PP
+If we wanted to make the remote login program independent of the
+Internet protocols and addressing scheme we would be forced to add
+a layer of routines which masked the network dependent aspects from
+the mainstream login code. For the current facilities available in
+the system this does not appear to be worthwhile.
+.PP
+Aside from the address-related data base routines, there are several
+other routines available in the run-time library which are of interest
+to users. These are intended mostly to simplify manipulation of
+names and addresses. Table 1 summarizes the routines
+for manipulating variable length byte strings and handling byte
+swapping of network addresses and values.
+.KF
+.DS B
+.TS
+box;
+l | l
+l | l.
+Call Synopsis
+_
+bcmp(s1, s2, n) compare byte-strings; 0 if same, not 0 otherwise
+bcopy(s1, s2, n) copy n bytes from s1 to s2
+bzero(base, n) zero-fill n bytes starting at base
+htonl(val) convert 32-bit quantity from host to network byte order
+htons(val) convert 16-bit quantity from host to network byte order
+ntohl(val) convert 32-bit quantity from network to host byte order
+ntohs(val) convert 16-bit quantity from network to host byte order
+.TE
+.DE
+.ce
+Table 1. C run-time routines.
+.KE
+.PP
+The byte swapping routines are provided because the operating
+system expects addresses to be supplied in network order (aka ``big-endian'' order). On
+``little-endian'' architectures, such as Intel x86 and VAX,
+host byte ordering is different than
+network byte ordering. Consequently,
+programs are sometimes required to byte swap quantities. The
+library routines which return network addresses provide them
+in network order so that they may simply be copied into the structures
+provided to the system. This implies users should encounter the
+byte swapping problem only when \fIinterpreting\fP network addresses.
+For example, if an Internet port is to be printed out the following
+code would be required:
+.DS
+printf("port number %d\en", ntohs(sp->s_port));
+.DE
+On machines where unneeded these routines are defined as null
+macros.
+.DS
+.if t .ta .5i 1.0i 1.5i 2.0i
+.if n .ta .7i 1.4i 2.1i 2.8i
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <stdio.h>
+#include <netdb.h>
+ ...
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ struct sockaddr_in server;
+ struct servent *sp;
+ struct hostent *hp;
+ int s;
+ ...
+ sp = getservbyname("login", "tcp");
+ if (sp == NULL) {
+ fprintf(stderr, "rlogin: login/tcp: unknown service\en");
+ exit(1);
+ }
+ hp = gethostbyname(argv[1]);
+ if (hp == NULL) {
+ fprintf(stderr, "rlogin: %s: unknown host\en", argv[1]);
+ exit(2);
+ }
+ bzero((char *)&server, sizeof (server));
+ bcopy(hp->h_addr, (char *)&server.sin_addr, hp->h_length);
+ server.sin_family = hp->h_addrtype;
+ server.sin_port = sp->s_port;
+ s = socket(AF_INET, SOCK_STREAM, 0);
+ if (s < 0) {
+ perror("rlogin: socket");
+ exit(3);
+ }
+ ...
+ /* Connect does the bind() for us */
+
+ if (connect(s, (char *)&server, sizeof (server)) < 0) {
+ perror("rlogin: connect");
+ exit(5);
+ }
+ ...
+}
+.DE
+.ce
+Figure 1. Remote login client code.
diff --git a/share/doc/psd/21.ipc/4.t b/share/doc/psd/21.ipc/4.t
new file mode 100644
index 0000000..22e6836
--- /dev/null
+++ b/share/doc/psd/21.ipc/4.t
@@ -0,0 +1,515 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)4.t 8.1 (Berkeley) 6/8/93
+.\" $FreeBSD$
+.\"
+.\".ds RH "Client/Server Model
+.bp
+.nr H1 4
+.nr H2 0
+.sp 8i
+.bp
+.LG
+.B
+.ce
+4. CLIENT/SERVER MODEL
+.sp 2
+.R
+.NL
+.PP
+The most commonly used paradigm in constructing distributed applications
+is the client/server model. In this scheme client applications request
+services from a server process. This implies an asymmetry in establishing
+communication between the client and server which has been examined
+in section 2. In this section we will look more closely at the interactions
+between client and server, and consider some of the problems in developing
+client and server applications.
+.PP
+The client and server require a well known set of conventions before
+service may be rendered (and accepted). This set of conventions
+comprises a protocol which must be implemented at both ends of a
+connection. Depending on the situation, the protocol may be symmetric
+or asymmetric. In a symmetric protocol, either side may play the
+master or slave roles. In an asymmetric protocol, one side is
+immutably recognized as the master, with the other as the slave.
+An example of a symmetric protocol is the TELNET protocol used in
+the Internet for remote terminal emulation. An example
+of an asymmetric protocol is the Internet file transfer protocol,
+FTP. No matter whether the specific protocol used in obtaining
+a service is symmetric or asymmetric, when accessing a service there
+is a \*(lqclient process\*(rq and a \*(lqserver process\*(rq. We
+will first consider the properties of server processes, then
+client processes.
+.PP
+A server process normally listens at a well known address for
+service requests. That is, the server process remains dormant
+until a connection is requested by a client's connection
+to the server's address. At such a time
+the server process ``wakes up'' and services the client,
+performing whatever appropriate actions the client requests of it.
+.PP
+Alternative schemes which use a service server
+may be used to eliminate a flock of server processes clogging the
+system while remaining dormant most of the time. For Internet
+servers in 4.4BSD,
+this scheme has been implemented via \fIinetd\fP, the so called
+``internet super-server.'' \fIInetd\fP listens at a variety
+of ports, determined at start-up by reading a configuration file.
+When a connection is requested to a port on which \fIinetd\fP is
+listening, \fIinetd\fP executes the appropriate server program to handle the
+client. With this method, clients are unaware that an
+intermediary such as \fIinetd\fP has played any part in the
+connection. \fIInetd\fP will be described in more detail in
+section 5.
+.PP
+A similar alternative scheme is used by most Xerox services. In general,
+the Courier dispatch process (if used) accepts connections from
+processes requesting services of some sort or another. The client
+processes request a particular <program number, version number, procedure
+number> triple. If the dispatcher knows of such a program, it is
+started to handle the request; if not, an error is reported to the
+client. In this way, only one port is required to service a large
+variety of different requests. Again, the Courier facilities are
+not available without the use and installation of the Courier
+compiler. The information presented in this section applies only
+to NS clients and services that do not use Courier.
+.NH 2
+Servers
+.PP
+In 4.4BSD most servers are accessed at well known Internet addresses
+or UNIX domain names. For
+example, the remote login server's main loop is of the form shown
+in Figure 2.
+.KF
+.if t .ta .5i 1.0i 1.5i 2.0i 2.5i 3.0i 3.5i
+.if n .ta .7i 1.4i 2.1i 2.8i 3.5i 4.2i 4.9i
+.sp 0.5i
+.DS
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ int f;
+ struct sockaddr_in from;
+ struct servent *sp;
+
+ sp = getservbyname("login", "tcp");
+ if (sp == NULL) {
+ fprintf(stderr, "rlogind: login/tcp: unknown service\en");
+ exit(1);
+ }
+ ...
+#ifndef DEBUG
+ /* Disassociate server from controlling terminal */
+ ...
+#endif
+
+ sin.sin_port = sp->s_port; /* Restricted port -- see section 5 */
+ ...
+ f = socket(AF_INET, SOCK_STREAM, 0);
+ ...
+ if (bind(f, (struct sockaddr *) &sin, sizeof (sin)) < 0) {
+ ...
+ }
+ ...
+ listen(f, 5);
+ for (;;) {
+ int g, len = sizeof (from);
+
+ g = accept(f, (struct sockaddr *) &from, &len);
+ if (g < 0) {
+ if (errno != EINTR)
+ syslog(LOG_ERR, "rlogind: accept: %m");
+ continue;
+ }
+ if (fork() == 0) {
+ close(f);
+ doit(g, &from);
+ }
+ close(g);
+ }
+}
+.DE
+.ce
+Figure 2. Remote login server.
+.sp 0.5i
+.KE
+.PP
+The first step taken by the server is look up its service
+definition:
+.sp 1
+.nf
+.in +5
+.if t .ta .5i 1.0i 1.5i 2.0i
+.if n .ta .7i 1.4i 2.1i 2.8i
+sp = getservbyname("login", "tcp");
+if (sp == NULL) {
+ fprintf(stderr, "rlogind: login/tcp: unknown service\en");
+ exit(1);
+}
+.sp 1
+.in -5
+.fi
+The result of the \fIgetservbyname\fP call
+is used in later portions of the code to
+define the Internet port at which it listens for service
+requests (indicated by a connection).
+.KS
+.PP
+Step two is to disassociate the server from the controlling
+terminal of its invoker:
+.DS
+ for (i = 0; i < 3; ++i)
+ close(i);
+
+ open("/", O_RDONLY);
+ dup2(0, 1);
+ dup2(0, 2);
+
+ i = open("/dev/tty", O_RDWR);
+ if (i >= 0) {
+ ioctl(i, TIOCNOTTY, 0);
+ close(i);
+ }
+.DE
+.KE
+This step is important as the server will
+likely not want to receive signals delivered to the process
+group of the controlling terminal. Note, however, that
+once a server has disassociated itself it can no longer
+send reports of errors to a terminal, and must log errors
+via \fIsyslog\fP.
+.PP
+Once a server has established a pristine environment, it
+creates a socket and begins accepting service requests.
+The \fIbind\fP call is required to insure the server listens
+at its expected location. It should be noted that the
+remote login server listens at a restricted port number, and must
+therefore be run
+with a user-id of root.
+This concept of a ``restricted port number'' is 4BSD
+specific, and is covered in section 5.
+.PP
+The main body of the loop is fairly simple:
+.DS
+.if t .ta .5i 1.0i 1.5i 2.0i
+.if n .ta .7i 1.4i 2.1i 2.8i
+for (;;) {
+ int g, len = sizeof (from);
+
+ g = accept(f, (struct sockaddr *)&from, &len);
+ if (g < 0) {
+ if (errno != EINTR)
+ syslog(LOG_ERR, "rlogind: accept: %m");
+ continue;
+ }
+ if (fork() == 0) { /* Child */
+ close(f);
+ doit(g, &from);
+ }
+ close(g); /* Parent */
+}
+.DE
+An \fIaccept\fP call blocks the server until
+a client requests service. This call could return a
+failure status if the call is interrupted by a signal
+such as SIGCHLD (to be discussed in section 5). Therefore,
+the return value from \fIaccept\fP is checked to insure
+a connection has actually been established, and
+an error report is logged via \fIsyslog\fP if an error
+has occurred.
+.PP
+With a connection
+in hand, the server then forks a child process and invokes
+the main body of the remote login protocol processing. Note
+how the socket used by the parent for queuing connection
+requests is closed in the child, while the socket created as
+a result of the \fIaccept\fP is closed in the parent. The
+address of the client is also handed the \fIdoit\fP routine
+because it requires it in authenticating clients.
+.NH 2
+Clients
+.PP
+The client side of the remote login service was shown
+earlier in Figure 1.
+One can see the separate, asymmetric roles of the client
+and server clearly in the code. The server is a passive entity,
+listening for client connections, while the client process is
+an active entity, initiating a connection when invoked.
+.PP
+Let us consider more closely the steps taken
+by the client remote login process. As in the server process,
+the first step is to locate the service definition for a remote
+login:
+.DS
+sp = getservbyname("login", "tcp");
+if (sp == NULL) {
+ fprintf(stderr, "rlogin: login/tcp: unknown service\en");
+ exit(1);
+}
+.DE
+Next the destination host is looked up with a
+\fIgethostbyname\fP call:
+.DS
+hp = gethostbyname(argv[1]);
+if (hp == NULL) {
+ fprintf(stderr, "rlogin: %s: unknown host\en", argv[1]);
+ exit(2);
+}
+.DE
+With this accomplished, all that is required is to establish a
+connection to the server at the requested host and start up the
+remote login protocol. The address buffer is cleared, then filled
+in with the Internet address of the foreign host and the port
+number at which the login process resides on the foreign host:
+.DS
+bzero((char *)&server, sizeof (server));
+bcopy(hp->h_addr, (char *) &server.sin_addr, hp->h_length);
+server.sin_family = hp->h_addrtype;
+server.sin_port = sp->s_port;
+.DE
+A socket is created, and a connection initiated. Note
+that \fIconnect\fP implicitly performs a \fIbind\fP
+call, since \fIs\fP is unbound.
+.DS
+s = socket(hp->h_addrtype, SOCK_STREAM, 0);
+if (s < 0) {
+ perror("rlogin: socket");
+ exit(3);
+}
+ ...
+if (connect(s, (struct sockaddr *) &server, sizeof (server)) < 0) {
+ perror("rlogin: connect");
+ exit(4);
+}
+.DE
+The details of the remote login protocol will not be considered here.
+.NH 2
+Connectionless servers
+.PP
+While connection-based services are the norm, some services
+are based on the use of datagram sockets. One, in particular,
+is the \*(lqrwho\*(rq service which provides users with status
+information for hosts connected to a local area
+network. This service, while predicated on the ability to
+\fIbroadcast\fP information to all hosts connected to a particular
+network, is of interest as an example usage of datagram sockets.
+.PP
+A user on any machine running the rwho server may find out
+the current status of a machine with the \fIruptime\fP(1) program.
+The output generated is illustrated in Figure 3.
+.KF
+.DS B
+.TS
+l r l l l l l.
+arpa up 9:45, 5 users, load 1.15, 1.39, 1.31
+cad up 2+12:04, 8 users, load 4.67, 5.13, 4.59
+calder up 10:10, 0 users, load 0.27, 0.15, 0.14
+dali up 2+06:28, 9 users, load 1.04, 1.20, 1.65
+degas up 25+09:48, 0 users, load 1.49, 1.43, 1.41
+ear up 5+00:05, 0 users, load 1.51, 1.54, 1.56
+ernie down 0:24
+esvax down 17:04
+ingres down 0:26
+kim up 3+09:16, 8 users, load 2.03, 2.46, 3.11
+matisse up 3+06:18, 0 users, load 0.03, 0.03, 0.05
+medea up 3+09:39, 2 users, load 0.35, 0.37, 0.50
+merlin down 19+15:37
+miro up 1+07:20, 7 users, load 4.59, 3.28, 2.12
+monet up 1+00:43, 2 users, load 0.22, 0.09, 0.07
+oz down 16:09
+statvax up 2+15:57, 3 users, load 1.52, 1.81, 1.86
+ucbvax up 9:34, 2 users, load 6.08, 5.16, 3.28
+.TE
+.DE
+.ce
+Figure 3. ruptime output.
+.sp
+.KE
+.PP
+Status information for each host is periodically broadcast
+by rwho server processes on each machine. The same server
+process also receives the status information and uses it
+to update a database. This database is then interpreted
+to generate the status information for each host. Servers
+operate autonomously, coupled only by the local network and
+its broadcast capabilities.
+.PP
+Note that the use of broadcast for such a task is fairly inefficient,
+as all hosts must process each message, whether or not using an rwho server.
+Unless such a service is sufficiently universal and is frequently used,
+the expense of periodic broadcasts outweighs the simplicity.
+.PP
+Multicasting is an alternative to broadcasting.
+Setting up multicast sockets is described in Section 5.10.
+.PP
+The rwho server, in a simplified form, is pictured in Figure
+4. There are two separate tasks performed by the server. The
+first task is to act as a receiver of status information broadcast
+by other hosts on the network. This job is carried out in the
+main loop of the program. Packets received at the rwho port
+are interrogated to insure they've been sent by another rwho
+server process, then are time stamped with their arrival time
+and used to update a file indicating the status of the host.
+When a host has not been heard from for an extended period of
+time, the database interpretation routines assume the host is
+down and indicate such on the status reports. This algorithm
+is prone to error as a server may be down while a host is actually
+up, but serves our current needs.
+.KF
+.DS
+.if t .ta .5i 1.0i 1.5i 2.0i
+.if n .ta .7i 1.4i 2.1i 2.8i
+main()
+{
+ ...
+ sp = getservbyname("who", "udp");
+ net = getnetbyname("localnet");
+ sin.sin_addr = inet_makeaddr(INADDR_ANY, net);
+ sin.sin_port = sp->s_port;
+ ...
+ s = socket(AF_INET, SOCK_DGRAM, 0);
+ ...
+ on = 1;
+ if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) < 0) {
+ syslog(LOG_ERR, "setsockopt SO_BROADCAST: %m");
+ exit(1);
+ }
+ bind(s, (struct sockaddr *) &sin, sizeof (sin));
+ ...
+ signal(SIGALRM, onalrm);
+ onalrm();
+ for (;;) {
+ struct whod wd;
+ int cc, whod, len = sizeof (from);
+
+ cc = recvfrom(s, (char *)&wd, sizeof (struct whod), 0,
+ (struct sockaddr *)&from, &len);
+ if (cc <= 0) {
+ if (cc < 0 && errno != EINTR)
+ syslog(LOG_ERR, "rwhod: recv: %m");
+ continue;
+ }
+ if (from.sin_port != sp->s_port) {
+ syslog(LOG_ERR, "rwhod: %d: bad from port",
+ ntohs(from.sin_port));
+ continue;
+ }
+ ...
+ if (!verify(wd.wd_hostname)) {
+ syslog(LOG_ERR, "rwhod: malformed host name from %x",
+ ntohl(from.sin_addr.s_addr));
+ continue;
+ }
+ (void) sprintf(path, "%s/whod.%s", RWHODIR, wd.wd_hostname);
+ whod = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+ ...
+ (void) time(&wd.wd_recvtime);
+ (void) write(whod, (char *)&wd, cc);
+ (void) close(whod);
+ }
+}
+.DE
+.ce
+Figure 4. rwho server.
+.sp
+.KE
+.PP
+The second task performed by the server is to supply information
+regarding the status of its host. This involves periodically
+acquiring system status information, packaging it up in a message
+and broadcasting it on the local network for other rwho servers
+to hear. The supply function is triggered by a timer and
+runs off a signal. Locating the system status
+information is somewhat involved, but uninteresting. Deciding
+where to transmit the resultant packet
+is somewhat problematical, however.
+.PP
+Status information must be broadcast on the local network.
+For networks which do not support the notion of broadcast another
+scheme must be used to simulate or
+replace broadcasting. One possibility is to enumerate the
+known neighbors (based on the status messages received
+from other rwho servers). This, unfortunately,
+requires some bootstrapping information,
+for a server will have no idea what machines are its
+neighbors until it receives status messages from them.
+Therefore, if all machines on a net are freshly booted,
+no machine will have any
+known neighbors and thus never receive, or send, any status information.
+This is the identical problem faced by the routing table management
+process in propagating routing status information. The standard
+solution, unsatisfactory as it may be, is to inform one or more servers
+of known neighbors and request that they always communicate with
+these neighbors. If each server has at least one neighbor supplied
+to it, status information may then propagate through
+a neighbor to hosts which
+are not (possibly) directly neighbors. If the server is able to
+support networks which provide a broadcast capability, as well as
+those which do not, then networks with an
+arbitrary topology may share status information*.
+.FS
+* One must, however, be concerned about \*(lqloops\*(rq.
+That is, if a host is connected to multiple networks, it
+will receive status information from itself. This can lead
+to an endless, wasteful, exchange of information.
+.FE
+.PP
+It is important that software operating in a distributed
+environment not have any site-dependent information compiled into it.
+This would require a separate copy of the server at each host and
+make maintenance a severe headache. 4.4BSD attempts to isolate
+host-specific information from applications by providing system
+calls which return the necessary information*.
+.FS
+* An example of such a system call is the \fIgethostname\fP(2)
+call which returns the host's \*(lqofficial\*(rq name.
+.FE
+A mechanism exists, in the form of an \fIioctl\fP call,
+for finding the collection
+of networks to which a host is directly connected.
+Further, a local network broadcasting mechanism
+has been implemented at the socket level.
+Combining these two features allows a process
+to broadcast on any directly connected local
+network which supports the notion of broadcasting
+in a site independent manner. This allows 4.4BSD
+to solve the problem of deciding how to propagate
+status information in the case of \fIrwho\fP, or
+more generally in broadcasting:
+Such status information is broadcast to connected
+networks at the socket level, where the connected networks
+have been obtained via the appropriate \fIioctl\fP
+calls.
+The specifics of
+such broadcastings are complex, however, and will
+be covered in section 5.
diff --git a/share/doc/psd/21.ipc/5.t b/share/doc/psd/21.ipc/5.t
new file mode 100644
index 0000000..8ce44b2
--- /dev/null
+++ b/share/doc/psd/21.ipc/5.t
@@ -0,0 +1,1668 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)5.t 8.1 (Berkeley) 8/14/93
+.\" $FreeBSD$
+.\"
+.\".ds RH "Advanced Topics
+.bp
+.nr H1 5
+.nr H2 0
+.LG
+.B
+.ce
+5. ADVANCED TOPICS
+.sp 2
+.R
+.NL
+.PP
+A number of facilities have yet to be discussed. For most users
+of the IPC the mechanisms already
+described will suffice in constructing distributed
+applications. However, others will find the need to utilize some
+of the features which we consider in this section.
+.NH 2
+Out of band data
+.PP
+The stream socket abstraction includes the notion of \*(lqout
+of band\*(rq data. Out of band data is a logically independent
+transmission channel associated with each pair of connected
+stream sockets. Out of band data is delivered to the user
+independently of normal data.
+The abstraction defines that the out of band data facilities
+must support the reliable delivery of at least one
+out of band message at a time. This message may contain at least one
+byte of data, and at least one message may be pending delivery
+to the user at any one time. For communications protocols which
+support only in-band signaling (i.e. the urgent data is
+delivered in sequence with the normal data), the system normally extracts
+the data from the normal data stream and stores it separately.
+This allows users to choose between receiving the urgent data
+in order and receiving it out of sequence without having to
+buffer all the intervening data. It is possible
+to ``peek'' (via MSG_PEEK) at out of band data.
+If the socket has a process group, a SIGURG signal is generated
+when the protocol is notified of its existence.
+A process can set the process group
+or process id to be informed by the SIGURG signal via the
+appropriate \fIfcntl\fP call, as described below for
+SIGIO.
+If multiple sockets may have out of band data awaiting
+delivery, a \fIselect\fP call for exceptional conditions
+may be used to determine those sockets with such data pending.
+Neither the signal nor the select indicate the actual arrival
+of the out-of-band data, but only notification that it is pending.
+.PP
+In addition to the information passed, a logical mark is placed in
+the data stream to indicate the point at which the out
+of band data was sent. The remote login and remote shell
+applications use this facility to propagate signals between
+client and server processes. When a signal
+flushs any pending output from the remote process(es), all
+data up to the mark in the data stream is discarded.
+.PP
+To send an out of band message the MSG_OOB flag is supplied to
+a \fIsend\fP or \fIsendto\fP calls,
+while to receive out of band data MSG_OOB should be indicated
+when performing a \fIrecvfrom\fP or \fIrecv\fP call.
+To find out if the read pointer is currently pointing at
+the mark in the data stream, the SIOCATMARK ioctl is provided:
+.DS
+ioctl(s, SIOCATMARK, &yes);
+.DE
+If \fIyes\fP is a 1 on return, the next read will return data
+after the mark. Otherwise (assuming out of band data has arrived),
+the next read will provide data sent by the client prior
+to transmission of the out of band signal. The routine used
+in the remote login process to flush output on receipt of an
+interrupt or quit signal is shown in Figure 5.
+It reads the normal data up to the mark (to discard it),
+then reads the out-of-band byte.
+.KF
+.DS
+#include <sys/ioctl.h>
+#include <sys/file.h>
+ ...
+oob()
+{
+ int out = FWRITE, mark;
+ char waste[BUFSIZ];
+
+ /* flush local terminal output */
+ ioctl(1, TIOCFLUSH, (char *)&out);
+ for (;;) {
+ if (ioctl(rem, SIOCATMARK, &mark) < 0) {
+ perror("ioctl");
+ break;
+ }
+ if (mark)
+ break;
+ (void) read(rem, waste, sizeof (waste));
+ }
+ if (recv(rem, &mark, 1, MSG_OOB) < 0) {
+ perror("recv");
+ ...
+ }
+ ...
+}
+.DE
+.ce
+Figure 5. Flushing terminal I/O on receipt of out of band data.
+.sp
+.KE
+.PP
+A process may also read or peek at the out-of-band data
+without first reading up to the mark.
+This is more difficult when the underlying protocol delivers
+the urgent data in-band with the normal data, and only sends
+notification of its presence ahead of time (e.g., the TCP protocol
+used to implement streams in the Internet domain).
+With such protocols, the out-of-band byte may not yet have arrived
+when a \fIrecv\fP is done with the MSG_OOB flag.
+In that case, the call will return an error of EWOULDBLOCK.
+Worse, there may be enough in-band data in the input buffer
+that normal flow control prevents the peer from sending the urgent data
+until the buffer is cleared.
+The process must then read enough of the queued data
+that the urgent data may be delivered.
+.PP
+Certain programs that use multiple bytes of urgent data and must
+handle multiple urgent signals (e.g., \fItelnet\fP\|(1C))
+need to retain the position of urgent data within the stream.
+This treatment is available as a socket-level option, SO_OOBINLINE;
+see \fIsetsockopt\fP\|(2) for usage.
+With this option, the position of urgent data (the \*(lqmark\*(rq)
+is retained, but the urgent data immediately follows the mark
+within the normal data stream returned without the MSG_OOB flag.
+Reception of multiple urgent indications causes the mark to move,
+but no out-of-band data are lost.
+.NH 2
+Non-Blocking Sockets
+.PP
+It is occasionally convenient to make use of sockets
+which do not block; that is, I/O requests which
+cannot complete immediately and
+would therefore cause the process to be suspended awaiting completion are
+not executed, and an error code is returned.
+Once a socket has been created via
+the \fIsocket\fP call, it may be marked as non-blocking
+by \fIfcntl\fP as follows:
+.DS
+#include <fcntl.h>
+ ...
+int s;
+ ...
+s = socket(AF_INET, SOCK_STREAM, 0);
+ ...
+if (fcntl(s, F_SETFL, FNDELAY) < 0)
+ perror("fcntl F_SETFL, FNDELAY");
+ exit(1);
+}
+ ...
+.DE
+.PP
+When performing non-blocking I/O on sockets, one must be
+careful to check for the error EWOULDBLOCK (stored in the
+global variable \fIerrno\fP), which occurs when
+an operation would normally block, but the socket it
+was performed on is marked as non-blocking.
+In particular, \fIaccept\fP, \fIconnect\fP, \fIsend\fP, \fIrecv\fP,
+\fIread\fP, and \fIwrite\fP can
+all return EWOULDBLOCK, and processes should be prepared
+to deal with such return codes.
+If an operation such as a \fIsend\fP cannot be done in its entirety,
+but partial writes are sensible (for example, when using a stream socket),
+the data that can be sent immediately will be processed,
+and the return value will indicate the amount actually sent.
+.NH 2
+Interrupt driven socket I/O
+.PP
+The SIGIO signal allows a process to be notified
+via a signal when a socket (or more generally, a file
+descriptor) has data waiting to be read. Use of
+the SIGIO facility requires three steps: First,
+the process must set up a SIGIO signal handler
+by use of the \fIsignal\fP or \fIsigvec\fP calls. Second,
+it must set the process id or process group id which is to receive
+notification of pending input to its own process id,
+or the process group id of its process group (note that
+the default process group of a socket is group zero).
+This is accomplished by use of an \fIfcntl\fP call.
+Third, it must enable asynchronous notification of pending I/O requests
+with another \fIfcntl\fP call. Sample code to
+allow a given process to receive information on
+pending I/O requests as they occur for a socket \fIs\fP
+is given in Figure 6. With the addition of a handler for SIGURG,
+this code can also be used to prepare for receipt of SIGURG signals.
+.KF
+.DS
+#include <fcntl.h>
+ ...
+int io_handler();
+ ...
+signal(SIGIO, io_handler);
+
+/* Set the process receiving SIGIO/SIGURG signals to us */
+
+if (fcntl(s, F_SETOWN, getpid()) < 0) {
+ perror("fcntl F_SETOWN");
+ exit(1);
+}
+
+/* Allow receipt of asynchronous I/O signals */
+
+if (fcntl(s, F_SETFL, FASYNC) < 0) {
+ perror("fcntl F_SETFL, FASYNC");
+ exit(1);
+}
+.DE
+.ce
+Figure 6. Use of asynchronous notification of I/O requests.
+.sp
+.KE
+.NH 2
+Signals and process groups
+.PP
+Due to the existence of the SIGURG and SIGIO signals each socket has an
+associated process number, just as is done for terminals.
+This value is initialized to zero,
+but may be redefined at a later time with the F_SETOWN
+\fIfcntl\fP, such as was done in the code above for SIGIO.
+To set the socket's process id for signals, positive arguments
+should be given to the \fIfcntl\fP call. To set the socket's
+process group for signals, negative arguments should be
+passed to \fIfcntl\fP. Note that the process number indicates
+either the associated process id or the associated process
+group; it is impossible to specify both at the same time.
+A similar \fIfcntl\fP, F_GETOWN, is available for determining the
+current process number of a socket.
+.PP
+Another signal which is useful when constructing server processes
+is SIGCHLD. This signal is delivered to a process when any
+child processes have changed state. Normally servers use
+the signal to \*(lqreap\*(rq child processes that have exited
+without explicitly awaiting their termination
+or periodic polling for exit status.
+For example, the remote login server loop shown in Figure 2
+may be augmented as shown in Figure 7.
+.KF
+.DS
+int reaper();
+ ...
+signal(SIGCHLD, reaper);
+listen(f, 5);
+for (;;) {
+ int g, len = sizeof (from);
+
+ g = accept(f, (struct sockaddr *)&from, &len,);
+ if (g < 0) {
+ if (errno != EINTR)
+ syslog(LOG_ERR, "rlogind: accept: %m");
+ continue;
+ }
+ ...
+}
+ ...
+#include <wait.h>
+reaper()
+{
+ union wait status;
+
+ while (wait3(&status, WNOHANG, 0) > 0)
+ ;
+}
+.DE
+.sp
+.ce
+Figure 7. Use of the SIGCHLD signal.
+.sp
+.KE
+.PP
+If the parent server process fails to reap its children,
+a large number of \*(lqzombie\*(rq processes may be created.
+.NH 2
+Pseudo terminals
+.PP
+Many programs will not function properly without a terminal
+for standard input and output. Since sockets do not provide
+the semantics of terminals,
+it is often necessary to have a process communicating over
+the network do so through a \fIpseudo-terminal\fP. A pseudo-
+terminal is actually a pair of devices, master and slave,
+which allow a process to serve as an active agent in communication
+between processes and users. Data written on the slave side
+of a pseudo-terminal is supplied as input to a process reading
+from the master side, while data written on the master side are
+processed as terminal input for the slave.
+In this way, the process manipulating
+the master side of the pseudo-terminal has control over the
+information read and written on the slave side
+as if it were manipulating the keyboard and reading the screen
+on a real terminal.
+The purpose of this abstraction is to
+preserve terminal semantics over a network connection\(em
+that is, the slave side appears as a normal terminal to
+any process reading from or writing to it.
+.PP
+For example, the remote
+login server uses pseudo-terminals for remote login sessions.
+A user logging in to a machine across the network is provided
+a shell with a slave pseudo-terminal as standard input, output,
+and error. The server process then handles the communication
+between the programs invoked by the remote shell and the user's
+local client process.
+When a user sends a character that generates an interrupt
+on the remote machine that flushes terminal output,
+the pseudo-terminal generates a control message for the server process.
+The server then sends an out of band message
+to the client process to signal a flush of data at the real terminal
+and on the intervening data buffered in the network.
+.PP
+Under 4.4BSD, the name of the slave side of a pseudo-terminal is of the form
+\fI/dev/ttyxy\fP, where \fIx\fP is a single letter
+starting at `p' and continuing to `t'.
+\fIy\fP is a hexadecimal digit (i.e., a single
+character in the range 0 through 9 or `a' through `f').
+The master side of a pseudo-terminal is \fI/dev/ptyxy\fP,
+where \fIx\fP and \fIy\fP correspond to the
+slave side of the pseudo-terminal.
+.PP
+In general, the method of obtaining a pair of master and
+slave pseudo-terminals is to
+find a pseudo-terminal which
+is not currently in use.
+The master half of a pseudo-terminal is a single-open device;
+thus, each master may be opened in turn until an open succeeds.
+The slave side of the pseudo-terminal is then opened,
+and is set to the proper terminal modes if necessary.
+The process then \fIfork\fPs; the child closes
+the master side of the pseudo-terminal, and \fIexec\fPs the
+appropriate program. Meanwhile, the parent closes the
+slave side of the pseudo-terminal and begins reading and
+writing from the master side. Sample code making use of
+pseudo-terminals is given in Figure 8; this code assumes
+that a connection on a socket \fIs\fP exists, connected
+to a peer who wants a service of some kind, and that the
+process has disassociated itself from any previous controlling terminal.
+.KF
+.DS
+gotpty = 0;
+for (c = 'p'; !gotpty && c <= 's'; c++) {
+ line = "/dev/ptyXX";
+ line[sizeof("/dev/pty")-1] = c;
+ line[sizeof("/dev/ptyp")-1] = '0';
+ if (stat(line, &statbuf) < 0)
+ break;
+ for (i = 0; i < 16; i++) {
+ line[sizeof("/dev/ptyp")-1] = "0123456789abcdef"[i];
+ master = open(line, O_RDWR);
+ if (master > 0) {
+ gotpty = 1;
+ break;
+ }
+ }
+}
+if (!gotpty) {
+ syslog(LOG_ERR, "All network ports in use");
+ exit(1);
+}
+
+line[sizeof("/dev/")-1] = 't';
+slave = open(line, O_RDWR); /* \fIslave\fP is now slave side */
+if (slave < 0) {
+ syslog(LOG_ERR, "Cannot open slave pty %s", line);
+ exit(1);
+}
+
+ioctl(slave, TIOCGETP, &b); /* Set slave tty modes */
+b.sg_flags = CRMOD|XTABS|ANYP;
+ioctl(slave, TIOCSETP, &b);
+
+i = fork();
+if (i < 0) {
+ syslog(LOG_ERR, "fork: %m");
+ exit(1);
+} else if (i) { /* Parent */
+ close(slave);
+ ...
+} else { /* Child */
+ (void) close(s);
+ (void) close(master);
+ dup2(slave, 0);
+ dup2(slave, 1);
+ dup2(slave, 2);
+ if (slave > 2)
+ (void) close(slave);
+ ...
+}
+.DE
+.ce
+Figure 8. Creation and use of a pseudo terminal
+.sp
+.KE
+.NH 2
+Selecting specific protocols
+.PP
+If the third argument to the \fIsocket\fP call is 0,
+\fIsocket\fP will select a default protocol to use with
+the returned socket of the type requested.
+The default protocol is usually correct, and alternate choices are not
+usually available.
+However, when using ``raw'' sockets to communicate directly with
+lower-level protocols or hardware interfaces,
+the protocol argument may be important for setting up demultiplexing.
+For example, raw sockets in the Internet family may be used to implement
+a new protocol above IP, and the socket will receive packets
+only for the protocol specified.
+To obtain a particular protocol one determines the protocol number
+as defined within the communication domain. For the Internet
+domain one may use one of the library routines
+discussed in section 3, such as \fIgetprotobyname\fP:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+ ...
+pp = getprotobyname("newtcp");
+s = socket(AF_INET, SOCK_STREAM, pp->p_proto);
+.DE
+This would result in a socket \fIs\fP using a stream
+based connection, but with protocol type of ``newtcp''
+instead of the default ``tcp.''
+.PP
+In the NS domain, the available socket protocols are defined in
+<\fInetns/ns.h\fP>. To create a raw socket for Xerox Error Protocol
+messages, one might use:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netns/ns.h>
+ ...
+s = socket(AF_NS, SOCK_RAW, NSPROTO_ERROR);
+.DE
+.NH 2
+Address binding
+.PP
+As was mentioned in section 2,
+binding addresses to sockets in the Internet and NS domains can be
+fairly complex. As a brief reminder, these associations
+are composed of local and foreign
+addresses, and local and foreign ports. Port numbers are
+allocated out of separate spaces, one for each system and one
+for each domain on that system.
+Through the \fIbind\fP system call, a
+process may specify half of an association, the
+<local address, local port> part, while the
+\fIconnect\fP
+and \fIaccept\fP
+primitives are used to complete a socket's association by
+specifying the <foreign address, foreign port> part.
+Since the association is created in two steps the association
+uniqueness requirement indicated previously could be violated unless
+care is taken. Further, it is unrealistic to expect user
+programs to always know proper values to use for the local address
+and local port since a host may reside on multiple networks and
+the set of allocated port numbers is not directly accessible
+to a user.
+.PP
+To simplify local address binding in the Internet domain the notion of a
+\*(lqwildcard\*(rq address has been provided. When an address
+is specified as INADDR_ANY (a manifest constant defined in
+<netinet/in.h>), the system interprets the address as
+\*(lqany valid address\*(rq. For example, to bind a specific
+port number to a socket, but leave the local address unspecified,
+the following code might be used:
+.DS
+#include <sys/types.h>
+#include <netinet/in.h>
+ ...
+struct sockaddr_in sin;
+ ...
+s = socket(AF_INET, SOCK_STREAM, 0);
+sin.sin_family = AF_INET;
+sin.sin_addr.s_addr = htonl(INADDR_ANY);
+sin.sin_port = htons(MYPORT);
+bind(s, (struct sockaddr *) &sin, sizeof (sin));
+.DE
+Sockets with wildcarded local addresses may receive messages
+directed to the specified port number, and sent to any
+of the possible addresses assigned to a host. For example,
+if a host has addresses 128.32.0.4 and 10.0.0.78, and a socket is bound as
+above, the process will be
+able to accept connection requests which are addressed to
+128.32.0.4 or 10.0.0.78.
+If a server process wished to only allow hosts on a
+given network connect to it, it would bind
+the address of the host on the appropriate network.
+.PP
+In a similar fashion, a local port may be left unspecified
+(specified as zero), in which case the system will select an
+appropriate port number for it. This shortcut will work
+both in the Internet and NS domains. For example, to
+bind a specific local address to a socket, but to leave the
+local port number unspecified:
+.DS
+hp = gethostbyname(hostname);
+if (hp == NULL) {
+ ...
+}
+bcopy(hp->h_addr, (char *) sin.sin_addr, hp->h_length);
+sin.sin_port = htons(0);
+bind(s, (struct sockaddr *) &sin, sizeof (sin));
+.DE
+The system selects the local port number based on two criteria.
+The first is that on 4BSD systems,
+Internet ports below IPPORT_RESERVED (1024) (for the Xerox domain,
+0 through 3000) are reserved
+for privileged users (i.e., the super user);
+Internet ports above IPPORT_USERRESERVED (50000) are reserved
+for non-privileged servers. The second is
+that the port number is not currently bound to some other
+socket. In order to find a free Internet port number in the privileged
+range the \fIrresvport\fP library routine may be used as follows
+to return a stream socket in with a privileged port number:
+.DS
+int lport = IPPORT_RESERVED \- 1;
+int s;
+\&...
+s = rresvport(&lport);
+if (s < 0) {
+ if (errno == EAGAIN)
+ fprintf(stderr, "socket: all ports in use\en");
+ else
+ perror("rresvport: socket");
+ ...
+}
+.DE
+The restriction on allocating ports was done to allow processes
+executing in a \*(lqsecure\*(rq environment to perform authentication
+based on the originating address and port number. For example,
+the \fIrlogin\fP(1) command allows users to log in across a network
+without being asked for a password, if two conditions hold:
+First, the name of the system the user
+is logging in from is in the file
+\fI/etc/hosts.equiv\fP on the system he is logging
+in to (or the system name and the user name are in
+the user's \fI.rhosts\fP file in the user's home
+directory), and second, that the user's rlogin
+process is coming from a privileged port on the machine from which he is
+logging. The port number and network address of the
+machine from which the user is logging in can be determined either
+by the \fIfrom\fP result of the \fIaccept\fP call, or
+from the \fIgetpeername\fP call.
+.PP
+In certain cases the algorithm used by the system in selecting
+port numbers is unsuitable for an application. This is because
+associations are created in a two step process. For example,
+the Internet file transfer protocol, FTP, specifies that data
+connections must always originate from the same local port. However,
+duplicate associations are avoided by connecting to different foreign
+ports. In this situation the system would disallow binding the
+same local address and port number to a socket if a previous data
+connection's socket still existed. To override the default port
+selection algorithm, an option call must be performed prior
+to address binding:
+.DS
+ ...
+int on = 1;
+ ...
+setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
+bind(s, (struct sockaddr *) &sin, sizeof (sin));
+.DE
+With the above call, local addresses may be bound which
+are already in use. This does not violate the uniqueness
+requirement as the system still checks at connect time to
+be sure any other sockets with the same local address and
+port do not have the same foreign address and port.
+If the association already exists, the error EADDRINUSE is returned.
+A related socket option, SO_REUSEPORT, which allows completely
+duplicate bindings, is described in the IP multicasting section.
+.NH 2
+Socket Options
+.PP
+It is possible to set and get a number of options on sockets
+via the \fIsetsockopt\fP and \fIgetsockopt\fP system calls.
+These options include such things as marking a socket for
+broadcasting, not to route, to linger on close, etc.
+In addition, there are protocol-specific options for IP and TCP,
+as described in
+.IR ip (4),
+.IR tcp (4),
+and in the section on multicasting below.
+.PP
+The general forms of the calls are:
+.DS
+setsockopt(s, level, optname, optval, optlen);
+.DE
+and
+.DS
+getsockopt(s, level, optname, optval, optlen);
+.DE
+.PP
+The parameters to the calls are as follows: \fIs\fP
+is the socket on which the option is to be applied.
+\fILevel\fP specifies the protocol layer on which the
+option is to be applied; in most cases this is
+the ``socket level'', indicated by the symbolic constant
+SOL_SOCKET, defined in \fI<sys/socket.h>.\fP
+The actual option is specified in \fIoptname\fP, and is
+a symbolic constant also defined in \fI<sys/socket.h>\fP.
+\fIOptval\fP and \fIOptlen\fP point to the value of the
+option (in most cases, whether the option is to be turned
+on or off), and the length of the value of the option,
+respectively.
+For \fIgetsockopt\fP, \fIoptlen\fP is
+a value-result parameter, initially set to the size of
+the storage area pointed to by \fIoptval\fP, and modified
+upon return to indicate the actual amount of storage used.
+.PP
+An example should help clarify things. It is sometimes
+useful to determine the type (e.g., stream, datagram, etc.)
+of an existing socket; programs
+under \fIinetd\fP (described below) may need to perform this
+task. This can be accomplished as follows via the
+SO_TYPE socket option and the \fIgetsockopt\fP call:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+
+int type, size;
+
+size = sizeof (int);
+
+if (getsockopt(s, SOL_SOCKET, SO_TYPE, (char *) &type, &size) < 0) {
+ ...
+}
+.DE
+After the \fIgetsockopt\fP call, \fItype\fP will be set
+to the value of the socket type, as defined in
+\fI<sys/socket.h>\fP. If, for example, the socket were
+a datagram socket, \fItype\fP would have the value
+corresponding to SOCK_DGRAM.
+.NH 2
+Broadcasting and determining network configuration
+.PP
+By using a datagram socket, it is possible to send broadcast
+packets on many networks supported by the system.
+The network itself must support broadcast; the system
+provides no simulation of broadcast in software.
+Broadcast messages can place a high load on a network since they force
+every host on the network to service them. Consequently,
+the ability to send broadcast packets has been limited
+to sockets which are explicitly marked as allowing broadcasting.
+Broadcast is typically used for one of two reasons:
+it is desired to find a resource on a local network without prior
+knowledge of its address,
+or important functions such as routing require that information
+be sent to all accessible neighbors.
+.PP
+Multicasting is an alternative to broadcasting.
+Setting up IP multicast sockets is described in the next section.
+.PP
+To send a broadcast message, a datagram socket
+should be created:
+.DS
+s = socket(AF_INET, SOCK_DGRAM, 0);
+.DE
+or
+.DS
+s = socket(AF_NS, SOCK_DGRAM, 0);
+.DE
+The socket is marked as allowing broadcasting,
+.DS
+int on = 1;
+
+setsockopt(s, SOL_SOCKET, SO_BROADCAST, &on, sizeof (on));
+.DE
+and at least a port number should be bound to the socket:
+.DS
+sin.sin_family = AF_INET;
+sin.sin_addr.s_addr = htonl(INADDR_ANY);
+sin.sin_port = htons(MYPORT);
+bind(s, (struct sockaddr *) &sin, sizeof (sin));
+.DE
+or, for the NS domain,
+.DS
+sns.sns_family = AF_NS;
+netnum = htonl(net);
+sns.sns_addr.x_net = *(union ns_net *) &netnum; /* insert net number */
+sns.sns_addr.x_port = htons(MYPORT);
+bind(s, (struct sockaddr *) &sns, sizeof (sns));
+.DE
+The destination address of the message to be broadcast
+depends on the network(s) on which the message is to be broadcast.
+The Internet domain supports a shorthand notation for broadcast
+on the local network, the address INADDR_BROADCAST (defined in
+<\fInetinet/in.h\fP>.
+To determine the list of addresses for all reachable neighbors
+requires knowledge of the networks to which the host is connected.
+Since this information should
+be obtained in a host-independent fashion and may be impossible
+to derive, 4.4BSD provides a method of
+retrieving this information from the system data structures.
+The SIOCGIFCONF \fIioctl\fP call returns the interface
+configuration of a host in the form of a
+single \fIifconf\fP structure; this structure contains
+a ``data area'' which is made up of an array of
+of \fIifreq\fP structures, one for each network interface
+to which the host is connected.
+These structures are defined in
+\fI<net/if.h>\fP as follows:
+.DS
+.if t .ta .5i 1.0i 1.5i 3.5i
+.if n .ta .7i 1.4i 2.1i 3.4i
+struct ifconf {
+ int ifc_len; /* size of associated buffer */
+ union {
+ caddr_t ifcu_buf;
+ struct ifreq *ifcu_req;
+ } ifc_ifcu;
+};
+
+#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
+#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
+
+#define IFNAMSIZ 16
+
+struct ifreq {
+ char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ union {
+ struct sockaddr ifru_addr;
+ struct sockaddr ifru_dstaddr;
+ struct sockaddr ifru_broadaddr;
+ short ifru_flags;
+ caddr_t ifru_data;
+ } ifr_ifru;
+};
+
+.if t .ta \w' #define'u +\w' ifr_broadaddr'u +\w' ifr_ifru.ifru_broadaddr'u
+#define ifr_addr ifr_ifru.ifru_addr /* address */
+#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
+#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
+#define ifr_flags ifr_ifru.ifru_flags /* flags */
+#define ifr_data ifr_ifru.ifru_data /* for use by interface */
+.DE
+The actual call which obtains the
+interface configuration is
+.DS
+struct ifconf ifc;
+char buf[BUFSIZ];
+
+ifc.ifc_len = sizeof (buf);
+ifc.ifc_buf = buf;
+if (ioctl(s, SIOCGIFCONF, (char *) &ifc) < 0) {
+ ...
+}
+.DE
+After this call \fIbuf\fP will contain one \fIifreq\fP structure for
+each network to which the host is connected, and
+\fIifc.ifc_len\fP will have been modified to reflect the number
+of bytes used by the \fIifreq\fP structures.
+.PP
+For each structure
+there exists a set of ``interface flags'' which tell
+whether the network corresponding to that interface is
+up or down, point to point or broadcast, etc. The
+SIOCGIFFLAGS \fIioctl\fP retrieves these
+flags for an interface specified by an \fIifreq\fP
+structure as follows:
+.DS
+struct ifreq *ifr;
+
+ifr = ifc.ifc_req;
+
+for (n = ifc.ifc_len / sizeof (struct ifreq); --n >= 0; ifr++) {
+ /*
+ * We must be careful that we don't use an interface
+ * devoted to an address family other than those intended;
+ * if we were interested in NS interfaces, the
+ * AF_INET would be AF_NS.
+ */
+ if (ifr->ifr_addr.sa_family != AF_INET)
+ continue;
+ if (ioctl(s, SIOCGIFFLAGS, (char *) ifr) < 0) {
+ ...
+ }
+ /*
+ * Skip boring cases.
+ */
+ if ((ifr->ifr_flags & IFF_UP) == 0 ||
+ (ifr->ifr_flags & IFF_LOOPBACK) ||
+ (ifr->ifr_flags & (IFF_BROADCAST | IFF_POINTTOPOINT)) == 0)
+ continue;
+.DE
+.PP
+Once the flags have been obtained, the broadcast address
+must be obtained. In the case of broadcast networks this is
+done via the SIOCGIFBRDADDR \fIioctl\fP, while for point-to-point networks
+the address of the destination host is obtained with SIOCGIFDSTADDR.
+.DS
+struct sockaddr dst;
+
+if (ifr->ifr_flags & IFF_POINTTOPOINT) {
+ if (ioctl(s, SIOCGIFDSTADDR, (char *) ifr) < 0) {
+ ...
+ }
+ bcopy((char *) ifr->ifr_dstaddr, (char *) &dst, sizeof (ifr->ifr_dstaddr));
+} else if (ifr->ifr_flags & IFF_BROADCAST) {
+ if (ioctl(s, SIOCGIFBRDADDR, (char *) ifr) < 0) {
+ ...
+ }
+ bcopy((char *) ifr->ifr_broadaddr, (char *) &dst, sizeof (ifr->ifr_broadaddr));
+}
+.DE
+.PP
+After the appropriate \fIioctl\fP's have obtained the broadcast
+or destination address (now in \fIdst\fP), the \fIsendto\fP call may be
+used:
+.DS
+ sendto(s, buf, buflen, 0, (struct sockaddr *)&dst, sizeof (dst));
+}
+.DE
+In the above loop one \fIsendto\fP occurs for every
+interface to which the host is connected that supports the notion of
+broadcast or point-to-point addressing.
+If a process only wished to send broadcast
+messages on a given network, code similar to that outlined above
+would be used, but the loop would need to find the
+correct destination address.
+.PP
+Received broadcast messages contain the senders address
+and port, as datagram sockets are bound before
+a message is allowed to go out.
+.NH 2
+IP Multicasting
+.PP
+IP multicasting is the transmission of an IP datagram to a "host
+group", a set of zero or more hosts identified by a single IP
+destination address. A multicast datagram is delivered to all
+members of its destination host group with the same "best-efforts"
+reliability as regular unicast IP datagrams, i.e., the datagram is
+not guaranteed to arrive intact at all members of the destination
+group or in the same order relative to other datagrams.
+.PP
+The membership of a host group is dynamic; that is, hosts may join
+and leave groups at any time. There is no restriction on the
+location or number of members in a host group. A host may be a
+member of more than one group at a time. A host need not be a member
+of a group to send datagrams to it.
+.PP
+A host group may be permanent or transient. A permanent group has a
+well-known, administratively assigned IP address. It is the address,
+not the membership of the group, that is permanent; at any time a
+permanent group may have any number of members, even zero. Those IP
+multicast addresses that are not reserved for permanent groups are
+available for dynamic assignment to transient groups which exist only
+as long as they have members.
+.PP
+In general, a host cannot assume that datagrams sent to any host
+group address will reach only the intended hosts, or that datagrams
+received as a member of a transient host group are intended for the
+recipient. Misdelivery must be detected at a level above IP, using
+higher-level identifiers or authentication tokens. Information
+transmitted to a host group address should be encrypted or governed
+by administrative routing controls if the sender is concerned about
+unwanted listeners.
+.PP
+IP multicasting is currently supported only on AF_INET sockets of type
+SOCK_DGRAM and SOCK_RAW, and only on subnetworks for which the interface
+driver has been modified to support multicasting.
+.PP
+The next subsections describe how to send and receive multicast datagrams.
+.NH 3
+Sending IP Multicast Datagrams
+.PP
+To send a multicast datagram, specify an IP multicast address in the range
+224.0.0.0 to 239.255.255.255 as the destination address
+in a
+.IR sendto (2)
+call.
+.PP
+The definitions required for the multicast-related socket options are
+found in \fI<netinet/in.h>\fP.
+All IP addresses are passed in network byte-order.
+.PP
+By default, IP multicast datagrams are sent with a time-to-live (TTL) of 1,
+which prevents them from being forwarded beyond a single subnetwork. A new
+socket option allows the TTL for subsequent multicast datagrams to be set to
+any value from 0 to 255, in order to control the scope of the multicasts:
+.DS
+u_char ttl;
+setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl));
+.DE
+Multicast datagrams with a TTL of 0 will not be transmitted on any subnet,
+but may be delivered locally if the sending host belongs to the destination
+group and if multicast loopback has not been disabled on the sending socket
+(see below). Multicast datagrams with TTL greater than one may be delivered
+to more than one subnet if there are one or more multicast routers attached
+to the first-hop subnet. To provide meaningful scope control, the multicast
+routers support the notion of TTL "thresholds", which prevent datagrams with
+less than a certain TTL from traversing certain subnets. The thresholds
+enforce the following convention:
+.TS
+center;
+l | l
+l | n.
+_
+Scope Initial TTL
+=
+restricted to the same host 0
+restricted to the same subnet 1
+restricted to the same site 32
+restricted to the same region 64
+restricted to the same continent 128
+unrestricted 255
+_
+.TE
+"Sites" and "regions" are not strictly defined, and sites may be further
+subdivided into smaller administrative units, as a local matter.
+.PP
+An application may choose an initial TTL other than the ones listed above.
+For example, an application might perform an "expanding-ring search" for a
+network resource by sending a multicast query, first with a TTL of 0, and
+then with larger and larger TTLs, until a reply is received, perhaps using
+the TTL sequence 0, 1, 2, 4, 8, 16, 32.
+.PP
+The multicast router
+.IR mrouted (8),
+refuses to forward any
+multicast datagram with a destination address between 224.0.0.0 and
+224.0.0.255, inclusive, regardless of its TTL. This range of addresses is
+reserved for the use of routing protocols and other low-level topology
+discovery or maintenance protocols, such as gateway discovery and group
+membership reporting.
+.PP
+The address 224.0.0.0 is
+guaranteed not to be assigned to any group, and 224.0.0.1 is assigned
+to the permanent group of all IP hosts (including gateways). This is
+used to address all multicast hosts on the directly connected
+network. There is no multicast address (or any other IP address) for
+all hosts on the total Internet. The addresses of other well-known,
+permanent groups are published in the "Assigned Numbers" RFC,
+which is available from the InterNIC.
+.PP
+Each multicast transmission is sent from a single network interface, even if
+the host has more than one multicast-capable interface. (If the host is
+also serving as a multicast router,
+a multicast may be \fIforwarded\fP to interfaces
+other than originating interface, provided that the TTL is greater than 1.)
+The default interface to be used for multicasting is the primary network
+interface on the system.
+A socket option
+is available to override the default for subsequent transmissions from a
+given socket:
+.DS
+struct in_addr addr;
+setsockopt(sock, IPPROTO_IP, IP_MULTICAST_IF, &addr, sizeof(addr));
+.DE
+where "addr" is the local IP address of the desired outgoing interface.
+An address of INADDR_ANY may be used to revert to the default interface.
+The local IP address of an interface can be obtained via the SIOCGIFCONF
+ioctl. To determine if an interface supports multicasting, fetch the
+interface flags via the SIOCGIFFLAGS ioctl and see if the IFF_MULTICAST
+flag is set. (Normal applications should not need to use this option; it
+is intended primarily for multicast routers and other system services
+specifically concerned with internet topology.)
+The SIOCGIFCONF and SIOCGIFFLAGS ioctls are described in the previous section.
+.PP
+If a multicast datagram is sent to a group to which the sending host itself
+belongs (on the outgoing interface), a copy of the datagram is, by default,
+looped back by the IP layer for local delivery. Another socket option gives
+the sender explicit control over whether or not subsequent datagrams are
+looped back:
+.DS
+u_char loop;
+setsockopt(sock, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop));
+.DE
+where \f2loop\f1 is set to 0 to disable loopback,
+and set to 1 to enable loopback.
+This option
+improves performance for applications that may have no more than one
+instance on a single host (such as a router demon), by eliminating
+the overhead of receiving their own transmissions. It should generally not
+be used by applications for which there may be more than one instance on a
+single host (such as a conferencing program) or for which the sender does
+not belong to the destination group (such as a time querying program).
+.PP
+A multicast datagram sent with an initial TTL greater than 1 may be delivered
+to the sending host on a different interface from that on which it was sent,
+if the host belongs to the destination group on that other interface. The
+loopback control option has no effect on such delivery.
+.NH 3
+Receiving IP Multicast Datagrams
+.PP
+Before a host can receive IP multicast datagrams, it must become a member
+of one or more IP multicast groups. A process can ask the host to join
+a multicast group by using the following socket option:
+.DS
+struct ip_mreq mreq;
+setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq))
+.DE
+where "mreq" is the following structure:
+.DS
+struct ip_mreq {
+ struct in_addr imr_multiaddr; /* \fImulticast group to join\fP */
+ struct in_addr imr_interface; /* \fIinterface to join on\fP */
+}
+.DE
+Every membership is associated with a single interface, and it is possible
+to join the same group on more than one interface. "imr_interface" should
+be INADDR_ANY to choose the default multicast interface, or one of the
+host's local addresses to choose a particular (multicast-capable) interface.
+Up to IP_MAX_MEMBERSHIPS (currently 20) memberships may be added on a
+single socket.
+.PP
+To drop a membership, use:
+.DS
+struct ip_mreq mreq;
+setsockopt(sock, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq));
+.DE
+where "mreq" contains the same values as used to add the membership. The
+memberships associated with a socket are also dropped when the socket is
+closed or the process holding the socket is killed. However, more than
+one socket may claim a membership in a particular group, and the host
+will remain a member of that group until the last claim is dropped.
+.PP
+The memberships associated with a socket do not necessarily determine which
+datagrams are received on that socket. Incoming multicast packets are
+accepted by the kernel IP layer if any socket has claimed a membership in the
+destination group of the datagram; however, delivery of a multicast datagram
+to a particular socket is based on the destination port (or protocol type, for
+raw sockets), just as with unicast datagrams.
+To receive multicast datagrams
+sent to a particular port, it is necessary to bind to that local port,
+leaving the local address unspecified (i.e., INADDR_ANY).
+To receive multicast datagrams
+sent to a particular group and port, bind to the local port, with
+the local address set to the multicast group address.
+Once bound to a multicast address, the socket cannot be used for sending data.
+.PP
+More than one process may bind to the same SOCK_DGRAM UDP port
+or the same multicast group and port if the
+.I bind
+call is preceded by:
+.DS
+int on = 1;
+setsockopt(sock, SOL_SOCKET, SO_REUSEPORT, &on, sizeof(on));
+.DE
+All processes sharing the port must enable this option.
+Every incoming multicast or broadcast UDP datagram destined to
+the shared port is delivered to all sockets bound to the port.
+For backwards compatibility reasons, this does not apply to incoming
+unicast datagrams. Unicast
+datagrams are never delivered to more than one socket, regardless of
+how many sockets are bound to the datagram's destination port.
+.PP
+A final multicast-related extension is independent of IP: two new ioctls,
+SIOCADDMULTI and SIOCDELMULTI, are available to add or delete link-level
+(e.g., Ethernet) multicast addresses accepted by a particular interface.
+The address to be added or deleted is passed as a sockaddr structure of
+family AF_UNSPEC, within the standard ifreq structure.
+.PP
+These ioctls are
+for the use of protocols other than IP, and require superuser privileges.
+A link-level multicast address added via SIOCADDMULTI is not automatically
+deleted when the socket used to add it goes away; it must be explicitly
+deleted. It is inadvisable to delete a link-level address that may be
+in use by IP.
+.NH 3
+Sample Multicast Program
+.PP
+The following program sends or receives multicast packets.
+If invoked with one argument, it sends a packet containing the current
+time to an arbitrarily-chosen multicast group and UDP port.
+If invoked with no arguments, it receives and prints these packets.
+Start it as a sender on just one host and as a receiver on all the other hosts.
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <time.h>
+#include <stdio.h>
+
+#define EXAMPLE_PORT 60123
+#define EXAMPLE_GROUP "224.0.0.250"
+
+main(argc)
+ int argc;
+{
+ struct sockaddr_in addr;
+ int addrlen, fd, cnt;
+ struct ip_mreq mreq;
+ char message[50];
+
+ fd = socket(AF_INET, SOCK_DGRAM, 0);
+ if (fd < 0) {
+ perror("socket");
+ exit(1);
+ }
+
+ bzero(&addr, sizeof(addr));
+ addr.sin_family = AF_INET;
+ addr.sin_addr.s_addr = htonl(INADDR_ANY);
+ addr.sin_port = htons(EXAMPLE_PORT);
+ addrlen = sizeof(addr);
+
+ if (argc > 1) { /* Send */
+ addr.sin_addr.s_addr = inet_addr(EXAMPLE_GROUP);
+ while (1) {
+ time_t t = time(0);
+ sprintf(message, "time is %-24.24s", ctime(&t));
+ cnt = sendto(fd, message, sizeof(message), 0,
+ (struct sockaddr *)&addr, addrlen);
+ if (cnt < 0) {
+ perror("sendto");
+ exit(1);
+ }
+ sleep(5);
+ }
+ } else { /* Receive */
+ if (bind(fd, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
+ perror("bind");
+ exit(1);
+ }
+
+ mreq.imr_multiaddr.s_addr = inet_addr(EXAMPLE_GROUP);
+ mreq.imr_interface.s_addr = htonl(INADDR_ANY);
+ if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP,
+ &mreq, sizeof(mreq)) < 0) {
+ perror("setsockopt mreq");
+ exit(1);
+ }
+
+ while (1) {
+ cnt = recvfrom(fd, message, sizeof(message), 0,
+ (struct sockaddr *)&addr, &addrlen);
+ if (cnt <= 0) {
+ if (cnt == 0) {
+ break;
+ }
+ perror("recvfrom");
+ exit(1);
+ }
+ printf("%s: message = \e"%s\e"\en",
+ inet_ntoa(addr.sin_addr), message);
+ }
+ }
+}
+.DE
+.\"----------------------------------------------------------------------
+.NH 2
+NS Packet Sequences
+.PP
+The semantics of NS connections demand that
+the user both be able to look inside the network header associated
+with any incoming packet and be able to specify what should go
+in certain fields of an outgoing packet.
+Using different calls to \fIsetsockopt\fP, it is possible
+to indicate whether prototype headers will be associated by
+the user with each outgoing packet (SO_HEADERS_ON_OUTPUT),
+to indicate whether the headers received by the system should be
+delivered to the user (SO_HEADERS_ON_INPUT), or to indicate
+default information that should be associated with all
+outgoing packets on a given socket (SO_DEFAULT_HEADERS).
+.PP
+The contents of a SPP header (minus the IDP header) are:
+.DS
+.if t .ta \w" #define"u +\w" u_short"u +2.0i
+struct sphdr {
+ u_char sp_cc; /* connection control */
+#define SP_SP 0x80 /* system packet */
+#define SP_SA 0x40 /* send acknowledgement */
+#define SP_OB 0x20 /* attention (out of band data) */
+#define SP_EM 0x10 /* end of message */
+ u_char sp_dt; /* datastream type */
+ u_short sp_sid; /* source connection identifier */
+ u_short sp_did; /* destination connection identifier */
+ u_short sp_seq; /* sequence number */
+ u_short sp_ack; /* acknowledge number */
+ u_short sp_alo; /* allocation number */
+};
+.DE
+Here, the items of interest are the \fIdatastream type\fP and
+the \fIconnection control\fP fields. The semantics of the
+datastream type are defined by the application(s) in question;
+the value of this field is, by default, zero, but it can be
+used to indicate things such as Xerox's Bulk Data Transfer
+Protocol (in which case it is set to one). The connection control
+field is a mask of the flags defined just below it. The user may
+set or clear the end-of-message bit to indicate
+that a given message is the last of a given substream type,
+or may set/clear the attention bit as an alternate way to
+indicate that a packet should be sent out-of-band.
+As an example, to associate prototype headers with outgoing
+SPP packets, consider:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netns/ns.h>
+#include <netns/sp.h>
+ ...
+struct sockaddr_ns sns, to;
+int s, on = 1;
+struct databuf {
+ struct sphdr proto_spp; /* prototype header */
+ char buf[534]; /* max. possible data by Xerox std. */
+} buf;
+ ...
+s = socket(AF_NS, SOCK_SEQPACKET, 0);
+ ...
+bind(s, (struct sockaddr *) &sns, sizeof (sns));
+setsockopt(s, NSPROTO_SPP, SO_HEADERS_ON_OUTPUT, &on, sizeof(on));
+ ...
+buf.proto_spp.sp_dt = 1; /* bulk data */
+buf.proto_spp.sp_cc = SP_EM; /* end-of-message */
+strcpy(buf.buf, "hello world\en");
+sendto(s, (char *) &buf, sizeof(struct sphdr) + strlen("hello world\en"),
+ (struct sockaddr *) &to, sizeof(to));
+ ...
+.DE
+Note that one must be careful when writing headers; if the prototype
+header is not written with the data with which it is to be associated,
+the kernel will treat the first few bytes of the data as the
+header, with unpredictable results.
+To turn off the above association, and to indicate that packet
+headers received by the system should be passed up to the user,
+one might use:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netns/ns.h>
+#include <netns/sp.h>
+ ...
+struct sockaddr sns;
+int s, on = 1, off = 0;
+ ...
+s = socket(AF_NS, SOCK_SEQPACKET, 0);
+ ...
+bind(s, (struct sockaddr *) &sns, sizeof (sns));
+setsockopt(s, NSPROTO_SPP, SO_HEADERS_ON_OUTPUT, &off, sizeof(off));
+setsockopt(s, NSPROTO_SPP, SO_HEADERS_ON_INPUT, &on, sizeof(on));
+ ...
+.DE
+.PP
+Output is handled somewhat differently in the IDP world.
+The header of an IDP-level packet looks like:
+.DS
+.if t .ta \w'struct 'u +\w" struct ns_addr"u +2.0i
+struct idp {
+ u_short idp_sum; /* Checksum */
+ u_short idp_len; /* Length, in bytes, including header */
+ u_char idp_tc; /* Transport Control (i.e., hop count) */
+ u_char idp_pt; /* Packet Type (i.e., level 2 protocol) */
+ struct ns_addr idp_dna; /* Destination Network Address */
+ struct ns_addr idp_sna; /* Source Network Address */
+};
+.DE
+The primary field of interest in an IDP header is the \fIpacket type\fP
+field. The standard values for this field are (as defined
+in <\fInetns/ns.h\fP>):
+.DS
+.if t .ta \w" #define"u +\w" NSPROTO_ERROR"u +1.0i
+#define NSPROTO_RI 1 /* Routing Information */
+#define NSPROTO_ECHO 2 /* Echo Protocol */
+#define NSPROTO_ERROR 3 /* Error Protocol */
+#define NSPROTO_PE 4 /* Packet Exchange */
+#define NSPROTO_SPP 5 /* Sequenced Packet */
+.DE
+For SPP connections, the contents of this field are
+automatically set to NSPROTO_SPP; for IDP packets,
+this value defaults to zero, which means ``unknown''.
+.PP
+Setting the value of that field with SO_DEFAULT_HEADERS is
+easy:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netns/ns.h>
+#include <netns/idp.h>
+ ...
+struct sockaddr sns;
+struct idp proto_idp; /* prototype header */
+int s, on = 1;
+ ...
+s = socket(AF_NS, SOCK_DGRAM, 0);
+ ...
+bind(s, (struct sockaddr *) &sns, sizeof (sns));
+proto_idp.idp_pt = NSPROTO_PE; /* packet exchange */
+setsockopt(s, NSPROTO_IDP, SO_DEFAULT_HEADERS, (char *) &proto_idp,
+ sizeof(proto_idp));
+ ...
+.DE
+.PP
+Using SO_HEADERS_ON_OUTPUT is somewhat more difficult. When
+SO_HEADERS_ON_OUTPUT is turned on for an IDP socket, the socket
+becomes (for all intents and purposes) a raw socket. In this
+case, all the fields of the prototype header (except the
+length and checksum fields, which are computed by the kernel)
+must be filled in correctly in order for the socket to send and
+receive data in a sensible manner. To be more specific, the
+source address must be set to that of the host sending the
+data; the destination address must be set to that of the
+host for whom the data is intended; the packet type must be
+set to whatever value is desired; and the hopcount must be
+set to some reasonable value (almost always zero). It should
+also be noted that simply sending data using \fIwrite\fP
+will not work unless a \fIconnect\fP or \fIsendto\fP call
+is used, in spite of the fact that it is the destination
+address in the prototype header that is used, not the one
+given in either of those calls. For almost
+all IDP applications , using SO_DEFAULT_HEADERS is easier and
+more desirable than writing headers.
+.NH 2
+Three-way Handshake
+.PP
+The semantics of SPP connections indicates that a three-way
+handshake, involving changes in the datastream type, should \(em
+but is not absolutely required to \(em take place before a SPP
+connection is closed. Almost all SPP connections are
+``well-behaved'' in this manner; when communicating with
+any process, it is best to assume that the three-way handshake
+is required unless it is known for certain that it is not
+required. In a three-way close, the closing process
+indicates that it wishes to close the connection by sending
+a zero-length packet with end-of-message set and with
+datastream type 254. The other side of the connection
+indicates that it is OK to close by sending a zero-length
+packet with end-of-message set and datastream type 255. Finally,
+the closing process replies with a zero-length packet with
+substream type 255; at this point, the connection is considered
+closed. The following code fragments are simplified examples
+of how one might handle this three-way handshake at the user
+level; in the future, support for this type of close will
+probably be provided as part of the C library or as part of
+the kernel. The first code fragment below illustrates how a process
+might handle three-way handshake if it sees that the process it
+is communicating with wants to close the connection:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netns/ns.h>
+#include <netns/sp.h>
+ ...
+#ifndef SPPSST_END
+#define SPPSST_END 254
+#define SPPSST_ENDREPLY 255
+#endif
+struct sphdr proto_sp;
+int s;
+ ...
+read(s, buf, BUFSIZE);
+if (((struct sphdr *)buf)->sp_dt == SPPSST_END) {
+ /*
+ * SPPSST_END indicates that the other side wants to
+ * close.
+ */
+ proto_sp.sp_dt = SPPSST_ENDREPLY;
+ proto_sp.sp_cc = SP_EM;
+ setsockopt(s, NSPROTO_SPP, SO_DEFAULT_HEADERS, (char *)&proto_sp,
+ sizeof(proto_sp));
+ write(s, buf, 0);
+ /*
+ * Write a zero-length packet with datastream type = SPPSST_ENDREPLY
+ * to indicate that the close is OK with us. The packet that we
+ * don't see (because we don't look for it) is another packet
+ * from the other side of the connection, with SPPSST_ENDREPLY
+ * on it it, too. Once that packet is sent, the connection is
+ * considered closed; note that we really ought to retransmit
+ * the close for some time if we do not get a reply.
+ */
+ close(s);
+}
+ ...
+.DE
+To indicate to another process that we would like to close the
+connection, the following code would suffice:
+.DS
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netns/ns.h>
+#include <netns/sp.h>
+ ...
+#ifndef SPPSST_END
+#define SPPSST_END 254
+#define SPPSST_ENDREPLY 255
+#endif
+struct sphdr proto_sp;
+int s;
+ ...
+proto_sp.sp_dt = SPPSST_END;
+proto_sp.sp_cc = SP_EM;
+setsockopt(s, NSPROTO_SPP, SO_DEFAULT_HEADERS, (char *)&proto_sp,
+ sizeof(proto_sp));
+write(s, buf, 0); /* send the end request */
+proto_sp.sp_dt = SPPSST_ENDREPLY;
+setsockopt(s, NSPROTO_SPP, SO_DEFAULT_HEADERS, (char *)&proto_sp,
+ sizeof(proto_sp));
+/*
+ * We assume (perhaps unwisely)
+ * that the other side will send the
+ * ENDREPLY, so we'll just send our final ENDREPLY
+ * as if we'd seen theirs already.
+ */
+write(s, buf, 0);
+close(s);
+ ...
+.DE
+.NH 2
+Packet Exchange
+.PP
+The Xerox standard protocols include a protocol that is both
+reliable and datagram-oriented. This protocol is known as
+Packet Exchange (PEX or PE) and, like SPP, is layered on top
+of IDP. PEX is important for a number of things: Courier
+remote procedure calls may be expedited through the use
+of PEX, and many Xerox servers are located by doing a PEX
+``BroadcastForServers'' operation. Although there is no
+implementation of PEX in the kernel,
+it may be simulated at the user level with some clever coding
+and the use of one peculiar \fIgetsockopt\fP. A PEX packet
+looks like:
+.DS
+.if t .ta \w'struct 'u +\w" struct idp"u +2.0i
+/*
+ * The packet-exchange header shown here is not defined
+ * as part of any of the system include files.
+ */
+struct pex {
+ struct idp p_idp; /* idp header */
+ u_short ph_id[2]; /* unique transaction ID for pex */
+ u_short ph_client; /* client type field for pex */
+};
+.DE
+The \fIph_id\fP field is used to hold a ``unique id'' that
+is used in duplicate suppression; the \fIph_client\fP
+field indicates the PEX client type (similar to the packet
+type field in the IDP header). PEX reliability stems from the
+fact that it is an idempotent (``I send a packet to you, you
+send a packet to me'') protocol. Processes on each side of
+the connection may use the unique id to determine if they have
+seen a given packet before (the unique id field differs on each
+packet sent) so that duplicates may be detected, and to indicate
+which message a given packet is in response to. If a packet with
+a given unique id is sent and no response is received in a given
+amount of time, the packet is retransmitted until it is decided
+that no response will ever be received. To simulate PEX, one
+must be able to generate unique ids -- something that is hard to
+do at the user level with any real guarantee that the id is really
+unique. Therefore, a means (via \fIgetsockopt\fP) has been provided
+for getting unique ids from the kernel. The following code fragment
+indicates how to get a unique id:
+.DS
+long uniqueid;
+int s, idsize = sizeof(uniqueid);
+ ...
+s = socket(AF_NS, SOCK_DGRAM, 0);
+ ...
+/* get id from the kernel -- only on IDP sockets */
+getsockopt(s, NSPROTO_PE, SO_SEQNO, (char *)&uniqueid, &idsize);
+ ...
+.DE
+The retransmission and duplicate suppression code required to
+simulate PEX fully is left as an exercise for the reader.
+.NH 2
+Inetd
+.PP
+One of the daemons provided with 4.4BSD is \fIinetd\fP, the
+so called ``internet super-server.''
+Having one daemon listen for requests for many daemons
+instead of having each daemon listen for its own requests
+reduces the number of idle daemons and simplies their implementation.
+.I Inetd
+handles
+two types of services: standard and TCPMUX.
+A standard service has a well-known port assigned to it and
+is listed in
+.I /etc/services
+(see \f2services\f1(5));
+it may be a service that implements an official Internet standard or is a
+BSD-specific service.
+TCPMUX services are nonstandard and do not have a
+well-known port assigned to them.
+They are invoked from
+.I inetd
+when a program connects to the "tcpmux" well-known port and specifies
+the service name.
+This is useful for adding locally-developed servers.
+.PP
+\fIInetd\fP is invoked at boot
+time, and determines from the file \fI/etc/inetd.conf\fP the
+servers for which it is to listen. Once this information has been
+read and a pristine environment created, \fIinetd\fP proceeds
+to create one socket for each service it is to listen for,
+binding the appropriate port number to each socket.
+.PP
+\fIInetd\fP then performs a \fIselect\fP on all these
+sockets for read availability, waiting for somebody wishing
+a connection to the service corresponding to
+that socket. \fIInetd\fP then performs an \fIaccept\fP on
+the socket in question, \fIfork\fPs, \fIdup\fPs the new
+socket to file descriptors 0 and 1 (stdin and
+stdout), closes other open file
+descriptors, and \fIexec\fPs the appropriate server.
+.PP
+Servers making use of \fIinetd\fP are considerably simplified,
+as \fIinetd\fP takes care of the majority of the IPC work
+required in establishing a connection. The server invoked
+by \fIinetd\fP expects the socket connected to its client
+on file descriptors 0 and 1, and may immediately perform
+any operations such as \fIread\fP, \fIwrite\fP, \fIsend\fP,
+or \fIrecv\fP. Indeed, servers may use
+buffered I/O as provided by the ``stdio'' conventions, as
+long as they remember to use \fIfflush\fP when appropriate.
+.PP
+One call which may be of interest to individuals writing
+servers under \fIinetd\fP is the \fIgetpeername\fP call,
+which returns the address of the peer (process) connected
+on the other end of the socket. For example, to log the
+Internet address in ``dot notation'' (e.g., ``128.32.0.4'')
+of a client connected to a server under
+\fIinetd\fP, the following code might be used:
+.DS
+struct sockaddr_in name;
+int namelen = sizeof (name);
+ ...
+if (getpeername(0, (struct sockaddr *)&name, &namelen) < 0) {
+ syslog(LOG_ERR, "getpeername: %m");
+ exit(1);
+} else
+ syslog(LOG_INFO, "Connection from %s", inet_ntoa(name.sin_addr));
+ ...
+.DE
+While the \fIgetpeername\fP call is especially useful when
+writing programs to run with \fIinetd\fP, it can be used
+under other circumstances. Be warned, however, that \fIgetpeername\fP will
+fail on UNIX domain sockets.
+.PP
+Standard TCP
+services are assigned unique well-known port numbers in the range of
+0 to 1023 by the
+Internet Assigned Numbers Authority (IANA@ISI.EDU).
+The limited number of ports in this range are
+assigned to official Internet protocols.
+The TCPMUX service allows you to add
+locally-developed protocols without needing an official TCP port assignment.
+The TCPMUX protocol described in RFC-1078 is simple:
+.QP
+``A TCP client connects to a foreign host on TCP port 1. It sends the
+service name followed by a carriage-return line-feed <CRLF>.
+The service name is never case sensitive.
+The server replies with a
+single character indicating positive ("+") or negative ("\-")
+acknowledgment, immediately followed by an optional message of
+explanation, terminated with a <CRLF>. If the reply was positive,
+the selected protocol begins; otherwise the connection is closed.''
+.LP
+In 4.4BSD, the TCPMUX service is built into
+.IR inetd ,
+that is,
+.IR inetd
+listens on TCP port 1 for requests for TCPMUX services listed
+in \f2inetd.conf\f1.
+.IR inetd (8)
+describes the format of TCPMUX entries for \f2inetd.conf\f1.
+.PP
+The following is an example TCPMUX server and its \f2inetd.conf\f1 entry.
+More sophisticated servers may want to do additional processing
+before returning the positive or negative acknowledgement.
+.DS
+#include <sys/types.h>
+#include <stdio.h>
+
+main()
+{
+ time_t t;
+
+ printf("+Go\er\en");
+ fflush(stdout);
+ time(&t);
+ printf("%d = %s", t, ctime(&t));
+ fflush(stdout);
+}
+.DE
+The \f2inetd.conf\f1 entry is:
+.DS
+tcpmux/current_time stream tcp nowait nobody /d/curtime curtime
+.DE
+Here's the portion of the client code that handles the TCPMUX handshake:
+.DS
+char line[BUFSIZ];
+FILE *fp;
+ ...
+
+/* Use stdio for reading data from the server */
+fp = fdopen(sock, "r");
+if (fp == NULL) {
+ fprintf(stderr, "Can't create file pointer\en");
+ exit(1);
+}
+
+/* Send service request */
+sprintf(line, "%s\er\en", "current_time");
+if (write(sock, line, strlen(line)) < 0) {
+ perror("write");
+ exit(1);
+}
+
+/* Get ACK/NAK response from the server */
+if (fgets(line, sizeof(line), fp) == NULL) {
+ if (feof(fp)) {
+ die();
+ } else {
+ fprintf(stderr, "Error reading response\en");
+ exit(1);
+ }
+}
+
+/* Delete <CR> */
+if ((lp = index(line, '\r')) != NULL) {
+ *lp = '\0';
+}
+
+switch (line[0]) {
+ case '+':
+ printf("Got ACK: %s\en", &line[1]);
+ break;
+ case '-':
+ printf("Got NAK: %s\en", &line[1]);
+ exit(0);
+ default:
+ printf("Got unknown response: %s\en", line);
+ exit(1);
+}
+
+/* Get rest of data from the server */
+while ((fgets(line, sizeof(line), fp)) != NULL) {
+ fputs(line, stdout);
+}
+.DE
diff --git a/share/doc/psd/21.ipc/Makefile b/share/doc/psd/21.ipc/Makefile
new file mode 100644
index 0000000..67c3d6c
--- /dev/null
+++ b/share/doc/psd/21.ipc/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= psd/21.ipc
+SRCS= 0.t 1.t 2.t 3.t 4.t 5.t
+MACROS= -ms
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/21.ipc/spell.ok b/share/doc/psd/21.ipc/spell.ok
new file mode 100644
index 0000000..02b45d4
--- /dev/null
+++ b/share/doc/psd/21.ipc/spell.ok
@@ -0,0 +1,347 @@
+4.2bsd
+AF
+ANYP
+BUFSIZ
+BUFSIZE
+BroadcastForServers
+CF
+CLR
+CRMOD
+Clearinghouse
+DARPA
+DESTPORT
+DGRAM
+DONTROUTE
+Datagram
+EADDRINUSE
+EADDRNOTAVAIL
+EAGAIN
+ECONNREFUSED
+EHOSTDOWN
+EHOSTUNREACH
+EINTR
+ENDREPLY
+ENETDOWN
+ENETUNREACH
+ENOBUFS
+EPROTONOSUPPORT
+EPROTOTYPE
+ETIMEDOUT
+EWOULDBLOCK
+Ethernet
+FASYNC
+FCREATE
+FD
+FNDELAY
+FTP
+FTRUNCATE
+FWRITE
+FWRONLY
+Fabry
+GETOWN
+Gethostybyname
+IDP
+IFF
+IFNAMSIZ
+INADDR
+INET
+INFO
+IP
+IPC
+IPPORT
+ISSET
+Inetd
+LF
+LH
+LOOPBACK
+Lapsley
+Leffler
+MSG
+MYADDRESS
+MYPORT
+NS
+NSPROTO
+OB
+OOB
+OOBINLINE
+Optlen
+Optval
+PE
+PEX
+POINTTOPOINT
+PS1:8
+RDONLY
+RDWR
+REUSEADDR
+RF
+RH
+RWHODIR
+SEQNO
+SEQPACKET
+SETFL
+SETOWN
+SETSIZE
+SIGALRM
+SIGCHLD
+SIGIO
+SIGURG
+SIOCATMARK
+SIOCGIFBRDADDR
+SIOCGIFCONF
+SIOCGIFDSTADDR
+SIOCGIFFLAGS
+SIOCGPGRP
+SIOCSPGRP
+SOF
+SP
+SPP
+SPPSST
+Science:UofMaryland
+TCP
+TELNET
+TIOCFLUSH
+TIOCGETP
+TIOCNOTTY
+TIOCSETP
+TRUNC
+Torek
+Tutorial''PS1:8
+USERRESERVED
+VAX
+WNOHANG
+WRONLY
+XSIS
+XTABS
+ack
+addr
+addr.s
+addr.sa
+addr.sun
+addr.x
+addrtype
+alo
+argc
+argv
+arpa
+b.sg
+bcmp
+bcopy
+broadaddr
+buf
+buf.buf
+buf.proto
+buflen
+bzero
+c.f
+cad
+caddr
+calder
+daemons
+dali
+databuf
+datagram
+datastream
+dev
+dna
+doit
+dst
+dst.sin
+dst.sns
+dstaddr
+dt
+dup2
+en0
+endhostent
+endif
+ernie
+errno
+es
+esvax
+exceptmask
+execptfds
+fcntl
+fcntl.h
+fd
+fflush
+file.h
+foo
+fprintf
+from.sin
+fromlen
+gethostbyaddr
+gethostbyname
+gethostbynameandnet
+gethostent
+gethostname
+getnetbyname
+getnetbynumber
+getnetent
+getpeername
+getprotobyname
+getprotobynumber
+getprotoent
+getservbyname
+getservbyport
+getservent
+getsockopt
+goto
+gotpty
+gyre
+gyre:Computer
+hardcoding
+hopcount
+host.c
+hostent
+hostname
+hostnames
+hosts.equiv
+htonl
+htons
+idp
+idp.h
+idp.idp
+idsize
+if.h
+ifc
+ifc.ifc
+ifconf
+ifcu
+ifcu.ifcu
+ifndef
+ifr
+ifreq
+ifru
+ifru.ifru
+in.h
+inet
+inetd
+inetd.conf
+ing
+ingres
+io
+ioctl.h
+ipc
+kim
+len
+localnet
+lport
+lq
+makeaddr
+matisse
+medea
+miro
+monet
+name.sin
+namelen
+nameserver
+nb
+netdb.h
+netent
+netinet
+netns
+netnum
+netof
+newsock
+newtcp
+nfds
+ns
+ns.h
+ntoa
+ntohl
+ntohs
+onalrm
+oob
+optlen
+optname
+optval
+oz
+pathname
+pathnames
+pex
+pgrp
+ph
+pp
+proto
+protoent
+pt
+pty
+ptyXX
+ptyp
+ptyxy
+queueing
+readfds
+readmask
+recv
+recvfrom
+recvtime
+rem
+req
+rhosts
+rlogin
+rlogind
+rq
+rresvport
+ruptime
+rwho
+rwhod
+sendto
+servent
+server.sin
+server.sun
+sethostent
+setsockopt
+sid
+sigvec
+sin.sin
+sizeof
+sna
+snew
+sns
+sns.sns
+sockaddr
+socket.h
+sp
+sp.h
+sp.sp
+sphdr
+spp
+spp.sp
+sprintf
+statbuf
+statvax
+std
+stderr
+stdin
+stdio.h
+stdout
+strcmp
+strcpy
+strlen
+syslog
+ta
+tcp
+telnet
+time.h
+timeval
+tmp
+tolen
+ttyxy
+tuples
+types.h
+ucbvax
+udp
+un
+un.h
+uniqueid
+useable
+usec
+val
+wait.h
+wait.tv
+wd
+wd.wd
+whod
+wildcard
+wildcarded
+writefds
+writemask
diff --git a/share/doc/psd/22.rpcgen/Makefile b/share/doc/psd/22.rpcgen/Makefile
new file mode 100644
index 0000000..4c38add
--- /dev/null
+++ b/share/doc/psd/22.rpcgen/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+VOLUME= psd/22.rpcgen
+SRCS= stubs rpcgen.ms
+MACROS= -ms
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../lib/libc/rpc/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/23.rpc/Makefile b/share/doc/psd/23.rpc/Makefile
new file mode 100644
index 0000000..77849b6
--- /dev/null
+++ b/share/doc/psd/23.rpc/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+VOLUME= psd/23.rpc
+SRCS= stubs rpc.prog.ms
+MACROS= -ms
+USE_TBL=
+USE_PIC=
+SRCDIR= ${.CURDIR}/../../../../lib/libc/rpc/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/24.xdr/Makefile b/share/doc/psd/24.xdr/Makefile
new file mode 100644
index 0000000..878dca1
--- /dev/null
+++ b/share/doc/psd/24.xdr/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+VOLUME= psd/24.xdr
+SRCS= stubs xdr.nts.ms
+MACROS= -ms
+USE_EQN=
+SRCDIR= ${.CURDIR}/../../../../lib/libc/rpc/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/25.xdrrfc/Makefile b/share/doc/psd/25.xdrrfc/Makefile
new file mode 100644
index 0000000..105135e
--- /dev/null
+++ b/share/doc/psd/25.xdrrfc/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+VOLUME= psd/25.xdrrfc
+SRCS= stubs xdr.rfc.ms
+MACROS= -ms
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../lib/libc/rpc/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/26.rpcrfc/Makefile b/share/doc/psd/26.rpcrfc/Makefile
new file mode 100644
index 0000000..79214f1
--- /dev/null
+++ b/share/doc/psd/26.rpcrfc/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+VOLUME= psd/26.rpcrfc
+SRCS= stubs rpc.rfc.ms
+MACROS= -ms
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../lib/libc/rpc/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/27.nfsrpc/Makefile b/share/doc/psd/27.nfsrpc/Makefile
new file mode 100644
index 0000000..5904787
--- /dev/null
+++ b/share/doc/psd/27.nfsrpc/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+VOLUME= psd/27.nfsrfc
+SRCS= stubs nfs.rfc.ms
+MACROS= -ms
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../lib/libc/rpc/PSD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/28.cvs/Makefile b/share/doc/psd/28.cvs/Makefile
new file mode 100644
index 0000000..a624732
--- /dev/null
+++ b/share/doc/psd/28.cvs/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+VOLUME= psd/28.cvs
+SRCS= cvs-paper.ms
+MACROS= -ms
+USE_PIC=
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../contrib/cvs/doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/Makefile b/share/doc/psd/Makefile
new file mode 100644
index 0000000..d50f05b
--- /dev/null
+++ b/share/doc/psd/Makefile
@@ -0,0 +1,41 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+# The following modules do not build/install:
+# 10.gdb
+
+# The following modules do not apply to FreeBSD:
+# 07.pascal 08.f77 09.f77io
+
+# The following previously encumbered files have not yet been added to
+# the tree:
+# 11.adb
+
+SUBDIR= title \
+ contents \
+ 01.cacm \
+ 02.implement \
+ 03.iosys \
+ 04.uprog \
+ 05.sysman \
+ 06.Clang \
+ 12.make \
+ 13.rcs \
+ 15.yacc \
+ 16.lex \
+ 17.m4 \
+ 18.gprof \
+ 20.ipctut \
+ 21.ipc
+
+# The following modules don't appear in the O'Reilly book, but
+# are in the 4.4BSD distribution.
+SUBDIR+=22.rpcgen \
+ 23.rpc \
+ 24.xdr \
+ 25.xdrrfc \
+ 26.rpcrfc \
+ 27.nfsrpc \
+ 28.cvs
+
+.include <bsd.subdir.mk>
diff --git a/share/doc/psd/contents/Makefile b/share/doc/psd/contents/Makefile
new file mode 100644
index 0000000..38864e9
--- /dev/null
+++ b/share/doc/psd/contents/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+VOLUME= psd
+DOC= contents
+SRCS= contents.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/contents/contents.ms b/share/doc/psd/contents/contents.ms
new file mode 100644
index 0000000..9f374dc
--- /dev/null
+++ b/share/doc/psd/contents/contents.ms
@@ -0,0 +1,289 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)00.contents 8.1 (Berkeley) 6/8/93
+.\" $FreeBSD$
+.\"
+.OH '''PSD Contents'
+.EH 'PSD Contents'''
+.TL
+UNIX Programmer's Supplementary Documents (PSD)
+.if !r.U .nr .U 0
+.if \n(.U \{\
+.br
+.>> <a href="Title.html">Title.html</a>
+.\}
+.sp
+\s-2 4.4 Berkeley Software Distribution\s+2
+.sp
+\fRJune, 1993\fR
+.PP
+This volume contains documents which supplement the manual pages in
+.I
+The
+.UX
+Programmer's Reference Manual
+.R
+for the FreeBSD system as distributed by the FreeBSD Project.
+.SH
+Documents of Historical Interest
+.IP
+.tl 'The Unix Time\-Sharing System''PSD:1'
+.QP
+Dennis Ritchie and Ken Thompson's original paper about UNIX, reprinted
+from Communications of the ACM.
+.sp
+.IP
+.tl 'Unix Implementation''PSD:2'
+.QP
+Ken Thompson's description of the implementation of the Version 7
+kernel and file system.
+.sp
+.IP
+.tl 'The Unix I/O System''PSD:3'
+.QP
+Dennis Ritchie's overview of the I/O System of Version 7; still helpful for
+those writing device drivers.
+.sp
+.IP
+.tl 'Unix Programming \- Second Edition ''PSD:4'
+.QP
+Describes the programming interface to the UNIX version 7 operating
+system and the standard I/O library. Should be supplemented by
+Kernighan and Pike, ``The UNIX Programming Environment'',
+Prentice-Hall, 1984 and especially by the Programmer Reference Manual
+section 2 (system calls) and 3 (library routines).
+.sp
+.IP
+.tl 'Berkeley Software Architecture Manual (4.4 Edition)''PSD:5'
+.if \n(.U \{\
+.br
+.>> <a href="05.sysman/paper.html">05.sysman/paper.html</a>
+.\}
+.QP
+A concise and terse description of the system call interface
+provided in Berkeley Unix, as revised for 4.4BSD.
+This will never be a best seller.
+
+.SH
+Languages in common use
+.IP
+.tl 'The C Programming Language \- Reference Manual''PSD:6'
+.QP
+Official statement of the syntax of C.
+Should be supplemented by ``The C Programming Language,''
+B.W. Kernighan and D.M. Ritchie, Prentice-Hall, 1978, that
+contains a tutorial introduction and many examples.
+.sp
+.IP
+.tl 'Berkeley Pascal User\'s Manual''PSD:7'
+.QP
+An implementation of this language popular for learning to program.
+(Not provided in FreeBSD.)
+.sp
+.IP
+.tl 'A Portable Fortran 77 Compiler''PSD:8'
+.QP
+A revised version of the document which originally appeared in
+Volume 2b of the Bell Labs documentation;
+this version reflects the work done at Berkeley.
+(Not provided in FreeBSD.)
+.sp
+.IP
+.tl 'Introduction to the f77 I/O Library''PSD:9'
+.QP
+A description of the revised input/output library for Fortran 77,
+reflecting work carried out at Berkeley. (Not provided in FreeBSD.)
+
+.SH
+Programming Tools
+.IP
+.tl 'Debugging with GDB: The GNU Source-Level Debugger''PSD:10'
+.QP
+How to debug programs using the source level \fIgdb\fP debugger
+(or how to debug programs without having to know much about machine language).
+(A TeXinfo version is provided separately.)
+.sp
+.IP
+.tl 'A Tutorial Introduction to ADB''PSD:11'
+.QP
+How to debug programs using the assembly-language level \fIadb\fP debugger.
+(Not provided in FreeBSD.)
+.sp
+.IP
+.tl 'Make \- A Program for Maintaining Computer Programs''PSD:12'
+.if \n(.U \{\
+.br
+.>> <a href="12.make/paper.html">12.make/paper.html</a>
+.\}
+.QP
+Indispensable tool for making sure large programs are properly
+compiled with minimal effort.
+.sp
+.IP
+.tl 'An Introduction to the Revision Control System''PSD:13'
+.if \n(.U \{\
+.br
+.>> <a href="13.rcs/paper.html">13.rcs/paper.html</a>
+.\}
+.QP
+RCS is a user-contributed tool for working together with other people
+without stepping on each other's toes.
+An alternative to \fIsccs\fR for controlling software changes.
+.sp
+.IP
+.tl 'An Introduction to the Source Code Control System''PSD:14'
+.QP
+A useful introductory article for those users with
+installations licensed for SCCS.
+.sp
+.IP
+.tl 'YACC: Yet Another Compiler-Compiler''PSD:15'
+.QP
+Converts a BNF specification of a language and semantic actions
+written in C into a compiler for that language.
+.sp
+.IP
+.tl 'LEX \- A Lexical Analyzer Generator''PSD:16'
+.QP
+Creates a recognizer for a set of regular expressions:
+each regular expression can be followed by arbitrary C code
+to be executed upon finding the regular expression.
+.sp
+.IP
+.tl 'The M4 Macro Processor''PSD:17'
+.QP
+M4 is a macro processor useful in its own right and as a
+front-end for C, Ratfor, and Cobol.
+.sp
+.IP
+.tl 'gprof: a Call Graph Execution Profiler''PSD:18'
+.if \n(.U \{\
+.br
+.>> <a href="18.gprof/paper.html">18.gprof/paper.html
+.\}
+.QP
+A program to show the call graph and execution time of a program.
+Indispensable aid for improving the running time of almost everything.
+
+.SH
+General Reference
+.IP
+.tl 'An Introductory 4.4BSD Interprocess Communication Tutorial''PSD:20'
+.if \n(.U \{\
+.br
+.>> <a href="20.ipctut/paper.html">20.ipctut/paper.html
+.\}
+.QP
+How to write programs that use the Interprocess Communication Facilities
+of 4.4BSD.
+.sp
+.IP
+.tl 'An Advanced 4.4BSD Interprocess Communication Tutorial''PSD:21'
+.if \n(.U \{\
+.br
+.>> <a href="21.ipc/paper.html">21.ipc/paper.html
+.\}
+.QP
+The reference document (with some examples) for the Interprocess Communication
+Facilities of 4.4BSD.
+.sp
+.IP
+.tl 'RPCGEN Programming Guide''PSD:22'
+.if \n(.U \{\
+.br
+.>> <a href="22.rpcgen/paper.html">22.rpcgen/paper.html
+.\}
+.QP
+Manual for the ONC RPC stub-generating program, provided by Sun Microsystems.
+.sp
+.IP
+.tl 'Remote Procedure Call Programming Guide''PSD:23'
+.if \n(.U \{\
+.br
+.>> <a href="23.rpc/paper.html">23.rpc/paper.html
+.\}
+.QP
+A tutorial introduction to programming the ONC RPC system, provided by
+Sun Microsystems.
+.sp
+.IP
+.tl 'External Data Representation: Sun Technical Notes''PSD:24'
+.if \n(.U \{\
+.br
+.>> <a href="24.xdr/paper.html">24.xdr/paper.html
+.\}
+.QP
+Technical details about the design of the XDR component of ONC RPC,
+provided by Sun Microsystems.
+.sp
+.IP
+.tl 'External Data Representation Standard: Protocol Specification''PSD:25'
+.if \n(.U \{\
+.br
+.>> <a href="25.xdrrfc/paper.html">25.xdrrfc/paper.html
+.\}
+.QP
+The Internet RFC specifying ONC XDR, provided by Sun Microsystems.
+.sp
+.IP
+.tl 'Remote Procedure Calls: Protocol Specification''PSD:26'
+.if \n(.U \{\
+.br
+.>> <a href="26.rpcrfc/paper.html">26.rpcrfc/paper.html
+.\}
+.QP
+The Internet RFC specifying ONC RPC, RFC 1050, as provided by Sun
+Microsystems.
+.sp
+.IP
+.tl 'Network File System: Version 2 Protocol Specification''PSD:27'
+.if \n(.U \{\
+.br
+.>> <a href="27.nfsrpc/paper.html">27.nfsrpc/paper.html
+.\}
+.QP
+The Internet RFC specifying NFS, as provided by Sun Microsystems.
+Note that the NFS-compatible filesystem itself, while
+compliant with this specification, was not provided by Sun.
+.sp
+.IP
+.tl 'CVS II: Parallelizing Software Development''PSD:28'
+.if \n(.U \{\
+.br
+.>> <a href="28.cvs/paper.html">28.cvs/paper.html
+.\}
+.QP
+CVS (Concurrent Versions System) is a front end to the
+RCS revision control system which extends the notion of
+revision control from a collection of files in a single
+directory to a hierarchical collection of directories each
+containing revision controlled files.
diff --git a/share/doc/psd/title/Makefile b/share/doc/psd/title/Makefile
new file mode 100644
index 0000000..d073730
--- /dev/null
+++ b/share/doc/psd/title/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+VOLUME= psd
+DOC= Title
+SRCS= Title
+
+.include <bsd.doc.mk>
diff --git a/share/doc/psd/title/Title b/share/doc/psd/title/Title
new file mode 100644
index 0000000..014b3d5
--- /dev/null
+++ b/share/doc/psd/title/Title
@@ -0,0 +1,132 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)Title 8.2 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.ps 18
+.vs 22
+.sp 2.75i
+.ft B
+.ce 3
+UNIX Programmer's Supplementary Documents
+(PSD)
+.ps 14
+.vs 16
+.sp |4i
+.ce 2
+4.4 Berkeley Software Distribution
+.sp |5.75i
+.ft R
+.ps 12
+.vs 16
+.ce
+June, 1993
+.sp |8.2i
+.ce 5
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California
+Berkeley, California 94720
+.bp
+\&
+.sp |1i
+.hy 0
+.ps 10
+.vs 12p
+Copyright 1979, 1980, 1983, 1986, 1993
+The Regents of the University of California. All rights reserved.
+.sp 2
+Other than the specific documents listed below as copyrighted by AT&T,
+redistribution and use of this manual in source and binary forms,
+with or without modification, are permitted provided that the
+following conditions are met:
+.sp 0.5
+.in +0.2i
+.ta 0.2i
+.ti -0.2i
+1) Redistributions of this manual must retain the copyright
+notices on this page, this list of conditions and the following disclaimer.
+.ti -0.2i
+2) Software or documentation that incorporates part of this manual must
+reproduce the copyright notices on this page, this list of conditions and
+the following disclaimer in the documentation and/or other materials
+provided with the distribution.
+.ti -0.2i
+3) All advertising materials mentioning features or use of this software
+must display the following acknowledgement:
+``This product includes software developed by the University of
+California, Berkeley and its contributors.''
+.ti -0.2i
+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.
+.in -0.2i
+.sp
+\fB\s-1THIS 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.\s+1\fP
+.sp 2
+Documents PSD:1, 2, 3, 4, 6, 11, 15, 16, and 17
+are copyright 1979, AT&T Bell Laboratories, Incorporated.
+Document PSD:8 is a modification of an earlier document that
+is copyrighted 1979 by AT&T Bell Laboratories, Incorporated.
+Holders of \x'-1p'UNIX\v'-4p'\s-3TM\s0\v'4p'/32V,
+System III, or System V software licenses are
+permitted to copy these documents, or any portion of them,
+as necessary for licensed use of the software,
+provided this copyright notice and statement of permission
+are included.
+.sp 2
+Document PSD:10 is part of the user contributed software and is
+copyright 1992 by the Free Software Foundation, Inc.
+Permission is granted to make and distribute verbatim copies of
+this document provided the copyright notice and this permission notice
+are preserved on all copies.
+.sp 2
+Document PSD:13 is part of the user contributed software and is
+copyright 1983 by Walter F. Tichy.
+Permission to copy the RCS documentation or any portion thereof as
+necessary for licensed use of the software is granted to licensees
+of this software, provided this copyright notice is included.
+.sp 2
+The views and conclusions contained in this manual are those of the
+authors and should not be interpreted as representing official policies,
+either expressed or implied, of the Regents of the University of California.
diff --git a/share/doc/smm/01.setup/0.t b/share/doc/smm/01.setup/0.t
new file mode 100644
index 0000000..1951cd0
--- /dev/null
+++ b/share/doc/smm/01.setup/0.t
@@ -0,0 +1,133 @@
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 8.1 (Berkeley) 7/27/93
+.\" $FreeBSD$
+.\"
+.ds Ux \s-1UNIX\s0
+.ds Bs \s-1BSD\s0
+.\" Current version:
+.ds 4B 4.4\*(Bs
+.ds Ps 4.3\*(Bs
+.\" tape and disk naming
+.ds Mt mt
+.ds Dk sd
+.ds Dn disk
+.ds Pa c
+.\" block size used on the tape
+.ds Bb 10240
+.ds Bz 20
+.\" document date
+.ds Dy July 27, 1993
+.de Sm
+\s-1\\$1\s0\\$2
+..
+.de Pn \" pathname
+.ie n \fI\\$1\fP\\$2
+.el \f(CW\\$1\fP\\$2
+..
+.de Li \" literal
+\f(CW\\$1\fP\\$2
+..
+.de I \" italicize first arg
+\fI\\$1\fP\^\\$2
+..
+.de Xr \" manual reference
+\fI\\$1\fP\^\\$2
+..
+.de Fn \" function
+\fI\\$1\fP\^()\\$2
+..
+.bd S B 3
+.EH 'SMM:1-%''Installing and Operating \*(4B UNIX'
+.OH 'Installing and Operating \*(4B UNIX''SMM:1-%'
+.de Sh
+.NH \\$1
+\\$2
+.nr PD .1v
+.XS \\n%
+.ta 0.6i
+\\*(SN \\$2
+.XE
+.nr PD .3v
+..
+.TL
+Installing and Operating \*(4B UNIX
+.br
+\*(Dy
+.AU
+Marshall Kirk McKusick
+.AU
+Keith Bostic
+.AU
+Michael J. Karels
+.AU
+Samuel J. Leffler
+.AI
+Computer Systems Research Group
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, California 94720
+(415) 642-7780
+.AU
+Mike Hibler
+.AI
+Center for Software Science
+Department of Computer Science
+University of Utah
+Salt Lake City, Utah 84112
+(801) 581-5017
+.AB
+.PP
+This document contains instructions for the
+installation and operation of the
+\*(4B release of UNIX\**
+as distributed by The University of California at Berkeley.
+.FS
+UNIX is a registered trademark of USL in the USA and some other countries.
+.FE
+.PP
+It discusses procedures for installing UNIX on a new machine,
+and for upgrading an existing \*(Ps UNIX system to the new release.
+An explanation of how to lay out filesystems on available disks
+and the space requirements for various parts of the system are given.
+A brief overview of the major changes to
+the system between \*(Ps and \*(4B are outlined.
+An explanation of how to set up terminal lines and user accounts,
+and how to do system-specific tailoring is provided.
+A description of how to install and configure the \*(4B networking
+facilities is included.
+Finally, the document details system operation procedures:
+shutdown and startup, filesystem backup procedures,
+resource control, performance monitoring, and procedures for recompiling
+and reinstalling system software.
+.AE
+.bp +3
diff --git a/share/doc/smm/01.setup/1.t b/share/doc/smm/01.setup/1.t
new file mode 100644
index 0000000..2f71b77
--- /dev/null
+++ b/share/doc/smm/01.setup/1.t
@@ -0,0 +1,172 @@
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 8.1 (Berkeley) 7/27/93
+.\"
+.ds lq ``
+.ds rq ''
+.ds LH "Installing/Operating \*(4B
+.ds RH Introduction
+.ds CF \*(Dy
+.LP
+.bp
+.Sh 1 "Introduction"
+.PP
+This document explains how to install the \*(4B Berkeley
+version of UNIX on your system.
+The filesystem format is compatible with \*(Ps
+and it will only be necessary for you to do a full bootstrap
+procedure if you are installing the release on a new machine.
+The object file formats are completely different from the System
+V release, so the most straightforward procedure for upgrading
+a System V system is to do a full bootstrap.
+.PP
+The full bootstrap procedure
+is outlined in section 2; the process starts with copying a filesystem
+image onto a new disk.
+This filesystem is then booted and used to extract the remainder of the
+system binaries and sources from the archives on the tape(s).
+.PP
+The technique for upgrading a \*(Ps system is described
+in section 3 of this document.
+The upgrade procedure involves extracting system binaries
+onto new root and
+.Pn /usr
+filesystems and merging local
+configuration files into the new system.
+User filesystems may be upgraded in place.
+Most \*(Ps binaries may be used with \*(4B in the course
+of the conversion.
+It is desirable to recompile local sources after the conversion,
+as the new compiler (GCC) provides superior code optimization.
+Consult section 3.5 for a description of some of the differences
+between \*(Ps and \*(4B.
+.Sh 2 "Distribution format"
+.PP
+The distribution comes in two formats:
+.DS
+(3)\0\0 6250bpi 2400' 9-track magnetic tapes, or
+(1)\0\0 8mm Exabyte tape
+.DE
+.PP
+If you have the facilities, we \fBstrongly\fP recommend copying the
+magnetic tape(s) in the distribution kit to guard against disaster.
+The tapes contain \*(Bb-byte records.
+There are interspersed tape marks;
+end-of-tape is signaled by a double end-of-file.
+The first file on the tape is architecture dependent.
+Additional files on the tape(s)
+contain tape archive images of the system binaries and sources (see
+.Xr tar (1)\**).
+.FS
+References of the form \fIX\fP(Y) mean the entry named
+\fIX\fP in section Y of the ``UNIX Programmer's Manual''.
+.FE
+See the tape label for a description of the contents
+and format of each individual tape.
+.Sh 2 "UNIX device naming"
+.PP
+Device names have a different syntax depending on whether you are talking
+to the standalone system or a running UNIX kernel.
+The standalone system syntax is currently architecture dependent and is
+described in the various architecture specific sections as applicable.
+When not running standalone, devices are available via files in the
+.Pn /dev/
+directory.
+The file name typically encodes the device type, its logical unit and
+a partition within that unit.
+For example,
+.Pn /dev/sd2b
+refers to the second partition (``b'') of
+SCSI (``sd'') drive number ``2'', while
+.Pn /dev/rmt0
+refers to the raw (``r'') interface of 9-track tape (``mt'') unit ``0''.
+.PP
+The mapping of physical addressing information (e.g. controller, target)
+to a logical unit number is dependent on the system configuration.
+In all simple cases, where only a single controller is present, a drive
+with physical unit number 0 (e.g., as determined by its unit
+specification, either unit plug or other selection mechanism)
+will be called unit 0 in its UNIX file name.
+This is not, however, strictly
+necessary, since the system has a level of indirection in this naming.
+If there are multiple controllers, the disk unit numbers will normally
+be counted sequentially across controllers. This can be taken
+advantage of to make the system less dependent on the interconnect
+topology, and to make reconfiguration after hardware failure easier.
+.PP
+Each UNIX physical disk is divided into at most 8 logical disk partitions,
+each of which may occupy any consecutive cylinder range on the physical
+device. The cylinders occupied by the 8 partitions for each drive type
+are specified initially in the disk description file
+.Pn /etc/disktab
+(c.f.
+.Xr disktab (5)).
+The partition information and description of the
+drive geometry are written in one of the first sectors of each disk with the
+.Xr disklabel (8)
+program. Each partition may be used for either a
+raw data area such as a paging area or to store a UNIX filesystem.
+It is conventional for the first partition on a disk to be used
+to store a root filesystem, from which UNIX may be bootstrapped.
+The second partition is traditionally used as a paging area, and the
+rest of the disk is divided into spaces for additional ``mounted
+filesystems'' by use of one or more additional partitions.
+.Sh 2 "UNIX devices: block and raw"
+.PP
+UNIX makes a distinction between ``block'' and ``raw'' (character)
+devices. Each disk has a block device interface where
+the system makes the device byte addressable and you can write
+a single byte in the middle of the disk. The system will read
+out the data from the disk sector, insert the byte you gave it
+and put the modified data back. The disks with the names
+.Pn /dev/xx0[a-h] ,
+etc., are block devices.
+There are also raw devices available.
+These have names like
+.Pn /dev/rxx0[a-h] ,
+the ``r'' here standing for ``raw''.
+Raw devices bypass the buffer cache and use DMA directly to/from
+the program's I/O buffers;
+they are normally restricted to full-sector transfers.
+In the bootstrap procedures we
+will often suggest using the raw devices, because these tend
+to work faster.
+Raw devices are used when making new filesystems,
+when checking unmounted filesystems,
+or for copying quiescent filesystems.
+The block devices are used to mount filesystems.
+.PP
+You should be aware that it is sometimes important whether to use
+the character device (for efficiency) or not (because it would not
+work, e.g. to write a single byte in the middle of a sector).
+Do not change the instructions by using the wrong type of device
+indiscriminately.
diff --git a/share/doc/smm/01.setup/2.t b/share/doc/smm/01.setup/2.t
new file mode 100644
index 0000000..4220a6d
--- /dev/null
+++ b/share/doc/smm/01.setup/2.t
@@ -0,0 +1,1659 @@
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 8.1 (Berkeley) 7/27/93
+.\" $FreeBSD$
+.\"
+.ds lq ``
+.ds rq ''
+.ds LH "Installing/Operating \*(4B
+.ds RH Bootstrapping
+.ds CF \*(Dy
+.Sh 1 "Bootstrap procedure"
+.PP
+This section explains the bootstrap procedure that can be used
+to get the kernel supplied with this distribution running on your machine.
+If you are not currently running \*(Ps you will
+have to do a full bootstrap.
+Section 3 describes how to upgrade a \*(Ps system.
+An understanding of the operations used in a full bootstrap
+is helpful in doing an upgrade as well.
+In either case, it is highly desirable to read and understand
+the remainder of this document before proceeding.
+.PP
+The distribution supports a somewhat wider set of machines than
+those for which we have built binaries.
+The architectures that are supported only in source form include:
+.IP \(bu
+Intel 386/486-based machines (ISA/AT or EISA bus only)
+.IP \(bu
+Sony News MIPS-based workstations
+.IP \(bu
+Omron Luna 68000-based workstations
+.LP
+If you wish to run one of these architectures,
+you will have to build a cross compilation environment.
+Note that the distribution does
+.B not
+include the machine support for the Tahoe and VAX architectures
+found in previous BSD distributions.
+Our primary development environment is the HP9000/300 series machines.
+The other architectures are developed and supported by
+people outside the university.
+Consequently, we are not able to directly test or maintain these
+other architectures, so cannot comment on their robustness,
+reliability, or completeness.
+.Sh 2 "Bootstrapping from the tape"
+.LP
+The set of files on the distribution tape are as follows:
+.IP 1)
+A
+.Xr dd (1)
+(HP300),
+.Xr tar (1)
+(DECstation), or
+.Xr dump (8)
+(SPARC) image of the root filesystem
+.IP 2)
+A
+.Xr tar
+image of the
+.Pn /var
+filesystem
+.IP 3)
+A
+.Xr tar
+image of the
+.Pn /usr
+filesystem
+.IP 4)
+A
+.Xr tar
+image of
+.Pn /usr/src/sys
+.IP 5)
+A
+.Xr tar
+image of
+.Pn /usr/src
+except sys and contrib
+.IP 6)
+A
+.Xr tar
+image of
+.Pn /usr/src/contrib
+.IP 7)
+(8mm Exabyte tape distributions only)
+A
+.Xr tar
+image of
+.Pn /usr/src/X11R5
+.LP
+The tape bootstrap procedure used to create a
+working system involves the following major steps:
+.IP 1)
+Transfer a bootable root filesystem from the tape to a disk
+and get it booted and running.
+.IP 2)
+Build and restore the
+.Pn /var
+and
+.Pn /usr
+filesystems from tape with
+.Xr tar (1).
+.IP 3)
+Extract the system and utility source files as desired.
+.PP
+The following sections describe the above steps in detail.
+The details of the first step vary between architectures.
+The specific steps for the HP300, SPARC, and DECstation are
+given in the next three sections respectively.
+You should follow the instructions for your particular architecture.
+In all sections,
+commands you are expected to type are shown in italics, while that
+information printed by the system is shown emboldened.
+.Sh 2 "Booting the HP300"
+.Sh 3 "Supported hardware"
+.LP
+The hardware supported by \*(4B for the HP300/400 is as follows:
+.TS
+center box;
+lw(1i) lw(4i).
+CPU's T{
+68020 based (318, 319, 320, 330 and 350),
+68030 based (340, 345, 360, 370, 375, 400) and
+68040 based (380, 425, 433).
+T}
+_
+DISK's T{
+HP-IB/CS80 (7912, 7914, 7933, 7936, 7945, 7957, 7958, 7959, 2200, 2203)
+and SCSI-I (including magneto-optical).
+T}
+_
+TAPE's T{
+Low-density CS80 cartridge (7914, 7946, 9144),
+high-density CS80 cartridge (9145),
+HP SCSI DAT and
+SCSI Exabyte.
+T}
+_
+RS232 T{
+98644 built-in single-port, 98642 4-port and 98638 8-port interfaces.
+T}
+_
+NETWORK T{
+98643 internal and external LAN cards.
+T}
+_
+GRAPHICS T{
+Terminal emulation and raw frame buffer support for
+98544 / 98545 / 98547 (Topcat color & monochrome),
+98548 / 98549 / 98550 (Catseye color & monochrome),
+98700 / 98710 (Gatorbox),
+98720 / 98721 (Renaissance),
+98730 / 98731 (DaVinci) and
+A1096A (Hyperion monochrome).
+T}
+_
+INPUT T{
+General interface supporting all HIL devices.
+(e.g. keyboard, 2 and 3 button mice, ID module, ...)
+T}
+_
+MISC T{
+Battery-backed real time clock,
+builtin and 98625A/B HP-IB interfaces,
+builtin and 98658A SCSI interfaces,
+serial printers and plotters on HP-IB,
+and SCSI autochanger device.
+T}
+.TE
+.LP
+Major items that are not supported
+include the 310 and 332 CPU's, 400 series machines
+configured for Domain/OS, EISA and VME bus adaptors, audio, the centronics
+port, 1/2" tape drives (7980), CD-ROM, and the PVRX/TVRX 3D graphics displays.
+.Sh 3 "Standalone device file naming"
+.LP
+The standalone system device name syntax on the HP300 is of the form:
+.DS
+xx(a,c,u,p)
+.DE
+where
+\fIxx\fP is the device type,
+\fIa\fP specifies the adaptor to use,
+\fIc\fP the controller,
+\fIu\fP the unit, and
+\fIp\fP a partition.
+The \fIdevice type\fP differentiates the various disks and tapes and is one of:
+``rd'' for HP-IB CS80 disks,
+``ct'' for HP-IB CS80 cartridge tapes, or
+``sd'' for SCSI-I disks
+(SCSI-I tapes are currently not supported).
+The \fIadaptor\fP field is a logical HP-IB or SCSI bus adaptor card number.
+This will typically be
+0 for SCSI disks,
+0 for devices on the ``slow'' HP-IB interface (usually tapes) and
+1 for devices on the ``fast'' HP-IB interface (usually disks).
+To get a complete mapping of physical (select-code) to logical card numbers
+just type a ^C at the standalone prompt.
+The \fIcontroller\fP field is the disk or tape's target number on the
+HP-IB or SCSI bus.
+For SCSI the range is 0 to 6 (7 is the adaptor address) and
+for HP-IB the range is 0 to 7.
+The \fIunit\fP field is unused and should be 0.
+The \fIpartition\fP field is interpreted differently for tapes
+and disks: for disks it is a disk partition (in the range 0-7),
+and for tapes it is a file number offset on the tape.
+Thus, partition 2 of a SCSI disk drive at target 3 on SCSI bus 1
+would be ``sd(1,3,0,2)''.
+If you have only one of any type bus adaptor, you may omit the adaptor
+and controller numbers;
+e.g. ``sd(0,2)'' could be used instead of ``sd(0,0,0,2)''.
+The following examples always use the full syntax for clarity.
+.Sh 3 "The procedure"
+.LP
+The basic steps involved in bringing up the HP300 are as follows:
+.IP 1)
+Obtain a second disk and format it, if necessary.
+.IP 2)
+Copy a root filesystem from the
+tape onto the beginning of the disk.
+.IP 3)
+Boot the UNIX system on the new disk.
+.IP 4)
+(Optional) Build a root filesystem optimized for your disk.
+.IP 5)
+Label the disks with the
+.Xr disklabel (8)
+program.
+.Sh 4 "Step 1: selecting and formatting a disk"
+.PP
+For your first system you will have to obtain a formatted disk
+of a type given in the ``supported hardware'' list above.
+If you want to load an entire binary system
+(i.e., everything except
+.Pn /usr/src ),
+on the single disk you will need a minimum of 290MB,
+ruling out anything smaller than a 7959B/S disk.
+The disklabel included in the bootstrap root image is laid out
+to accommodate this scenario.
+Note that an HP SCSI magneto-optical disk will work fine for this case.
+\*(4B will boot and run (albeit slowly) using one.
+If you want to load source on a single disk system,
+you will need at least 640MB (at least a 2213A SCSI or 2203A HP-IB disk).
+A disk as small as the 7945A (54MB) can be used for the bootstrap
+procedure but will hold only the root and primary swap partitions.
+If you plan to use multiple disks,
+refer to section 2.5 for suggestions on partitioning.
+.PP
+After selecting a disk, you may need to format it.
+Since most HP disk drives come pre-formatted
+(except optical media)
+you probably will not, but if necessary,
+you can format a disk under HP-UX using the
+.Xr mediainit (1m)
+program.
+Once you have \*(4B up and running on one machine you can use the
+.Xr scsiformat (8)
+program to format additional SCSI disks.
+Any additional HP-IB disks will have to be formatted using HP-UX.
+.Sh 4 "Step 2: copying the root filesystem from tape to disk"
+.PP
+Once you have a formatted second disk you can use the
+.Xr dd (1)
+command under HP-UX to copy the root filesystem image from
+the tape to the beginning of the second disk.
+For HP's, the root filesystem image is the first file on the tape.
+It includes a disklabel and bootblock along with the root filesystem.
+An example command to copy the image from tape to the beginning of a disk is:
+.DS
+.ft CW
+dd if=/dev/rmt/0m of=/dev/rdsk/1s0 bs=\*(Bzb
+.DE
+The actual special file syntax may vary depending on unit numbers and
+the version of HP-UX that is running.
+Consult the HP-UX
+.Xr mt (7)
+and
+.Xr disk (7)
+man pages for details.
+.PP
+Note that if you have a SCSI disk, you don't necessarily have to use
+HP-UX (or an HP) to create the boot disk.
+Any machine and operating system that will allow you to copy the
+raw disk image out to block 0 of the disk will do.
+.PP
+If you have only a single machine with a single disk,
+you may still be able to install and boot \*(4B if you have an
+HP-IB cartridge tape drive.
+If so, you can use a more difficult approach of booting a
+standalone copy program from the tape, and using that to copy the
+root filesystem image from the tape to the disk.
+To do this, you need to extract the first file of the distribution tape
+(the root image), copy it over to a machine with a cartridge drive
+and then copy the image onto tape.
+For example:
+.DS
+.ft CW
+dd if=/dev/rst0 of=bootimage bs=\*(Bzb
+rcp bootimage foo:/tmp/bootimage
+<login to foo>
+dd if=/tmp/bootimage of=/dev/rct/0m bs=\*(Bzb
+.DE
+Once this tape is created you can boot and run the standalone tape
+copy program from it.
+The copy program is loaded just as any other program would be loaded
+by the bootrom in ``attended'' mode:
+reset the CPU,
+hold down the space bar until the word ``Keyboard'' appears in the
+installed interface list, and
+enter the menu selection for SYS_TCOPY.
+Once loaded and running:
+.DS
+.TS
+lw(2i) l.
+\fBFrom:\fP \fI^C\fP (control-C to see logical adaptor assignments)
+\fBhpib0 at sc7\fP
+\fBscsi0 at sc14\fP
+\fBFrom:\fP \fIct(0,7,0,0)\fP (HP-IB tape, target 7, first tape file)
+\fBTo:\fP \fIsd(0,0,0,2)\fP (SCSI disk, target 0, third partition)
+\fBCopy completed: 1728 records copied\fP
+.TE
+.DE
+.LP
+This copy will likely take 30 minutes or more.
+.Sh 4 "Step 3: booting the root filesystem"
+.PP
+You now have a bootable root filesystem on the disk.
+If you were previously running with two disks,
+it would be best if you shut down the machine and turn off power on
+the HP-UX drive.
+It will be less confusing and it will eliminate any chance of accidentally
+destroying the HP-UX disk.
+If you used a cartridge tape for booting you should also unload the tape
+at this point.
+Whether you booted from tape or copied from disk you should now reboot
+the machine and do another attended boot (see previous section),
+this time with SYS_TBOOT.
+Once loaded and running the boot program will display the CPU type and
+prompt for a kernel file to boot:
+.DS
+.B
+HP433 CPU
+Boot
+.R
+\fB:\fP \fI/kernel\fP
+.DE
+.LP
+After providing the kernel name, the machine will boot \*(4B with
+output that looks about like this:
+.DS
+.B
+597480+34120+139288 start 0xfe8019ec
+Copyright (c) 1982, 1986, 1989, 1991, 1993
+ The Regents of the University of California.
+Copyright (c) 1992 Hewlett-Packard Company
+Copyright (c) 1992 Motorola Inc.
+All rights reserved.
+
+4.4BSD UNIX #1: Tue Jul 20 11:40:36 PDT 1993
+ mckusick@vangogh.CS.Berkeley.EDU:/usr/obj/sys/compile/GENERIC.hp300
+HP9000/433 (33MHz MC68040 CPU+MMU+FPU, 4k on-chip physical I/D caches)
+real mem = xxx
+avail mem = ###
+using ### buffers containing ### bytes of memory
+(... information about available devices ...)
+root device?
+.R
+.DE
+.PP
+The first three numbers are printed out by the bootstrap program and
+are the sizes of different parts of the system (text, initialized and
+uninitialized data). The system also allocates several system data
+structures after it starts running. The sizes of these structures are
+based on the amount of available memory and the maximum count of active
+users expected, as declared in a system configuration description. This
+will be discussed later.
+.PP
+UNIX itself then runs for the first time and begins by printing out a banner
+identifying the release and
+version of the system that is in use and the date that it was compiled.
+.PP
+Next the
+.I mem
+messages give the
+amount of real (physical) memory and the
+memory available to user programs
+in bytes.
+For example, if your machine has 16Mb bytes of memory, then
+\fBxxx\fP will be 16777216.
+.PP
+The messages that come out next show what devices were found on
+the current processor. These messages are described in
+.Xr autoconf (4).
+The distributed system may not have
+found all the communications devices you have
+or all the mass storage peripherals you have, especially
+if you have more than
+two of anything. You will correct this when you create
+a description of your machine from which to configure a site-dependent
+version of UNIX.
+The messages printed at boot here contain much of the information
+that will be used in creating the configuration.
+In a correctly configured system most of the information
+present in the configuration description
+is printed out at boot time as the system verifies that each device
+is present.
+.PP
+The \*(lqroot device?\*(rq prompt was printed by the system
+to ask you for the name of the root filesystem to use.
+This happens because the distribution system is a \fIgeneric\fP
+system, i.e., it can be bootstrapped on a cpu with its root device
+and paging area on any available disk drive.
+You will most likely respond to the root device question with ``sd0''
+if you are booting from a SCSI disk,
+or with ``rd0'' if you are booting from an HP-IB disk.
+This response shows that the disk it is running
+on is drive 0 of type ``sd'' or ``rd'' respectively.
+If you have other disks attached to the system,
+it is possible that the drive you are using will not be configured
+as logical drive 0.
+Check the autoconfiguration messages printed out by the kernel to
+make sure.
+These messages will show the type of every logical drive
+and their associated controller and slave addresses.
+You will later build a system tailored to your configuration
+that will not prompt you for a root device when it is bootstrapped.
+.DS
+\fBroot device?\fP \fI\*(Dk0\fP
+\fBWARNING: preposterous time in filesystem \-\- CHECK AND RESET THE DATE!\fP
+\fBerase ^?, kill ^U, intr ^C\fP
+\fB#\fP
+.DE
+.PP
+The \*(lqerase ...\*(rq message is part of the
+.Pn /.profile
+that was executed by the root shell when it started. This message
+tells you about the settings of the character erase,
+line erase, and interrupt characters.
+.PP
+UNIX is now running,
+and the \fIUNIX Programmer's Manual\fP applies. The ``#'' is the prompt
+from the Bourne shell, and lets you know that you are the super-user,
+whose login name is \*(lqroot\*(rq.
+.PP
+At this point, the root filesystem is mounted read-only.
+Before continuing the installation, the filesystem needs to be ``updated''
+to allow writing and device special files for the following steps need
+to be created.
+This is done as follows:
+.DS
+.TS
+lw(2i) l.
+\fB#\fP \fImount_mfs -s 1000 -T type /dev/null /tmp\fP (create a writable filesystem)
+(\fItype\fP is the disk type as determined from /etc/disktab)
+\fB#\fP \fIcd /tmp\fP (connect to that directory)
+\fB#\fP \fI../dev/MAKEDEV \*(Dk#\fP (create special files for root disk)
+(\fI\*(Dk\fP is the disk type, \fI#\fP is the unit number)
+(ignore warning from ``sh'')
+\fB#\fP \fImount \-uw /tmp/\*(Dk#a /\fP (read-write mount root filesystem)
+\fB#\fP \fIcd /dev\fP (go to device directory)
+\fB#\fP \fI./MAKEDEV \*(Dk#\fP (create permanent special files for root disk)
+(again, ignore warning from ``sh'')
+.TE
+.DE
+.Sh 4 "Step 4: (optional) restoring the root filesystem"
+.PP
+The root filesystem that you are currently running on is complete,
+however it probably is not optimally laid out for the disk on
+which you are running.
+If you will be cloning copies of the system onto multiple disks for
+other machines, you are advised to connect one of these disks to
+this machine, and build and restore a properly laid out root filesystem
+onto it.
+If this is the only machine on which you will be running \*(4B
+or peak performance is not an issue, you can skip this step and
+proceed directly to step 5.
+.PP
+Connect a second disk to your machine.
+If you bootstrapped using the two disk method, you can
+overwrite your initial HP-UX disk, as it will no longer
+be needed (assuming you have no plans to run HP-UX again).
+.PP
+To really create the root filesystem on drive 1
+you should first label the disk as described in step 5 below.
+Then run the following commands:
+.DS
+\fB#\fP \fIcd /dev\fP
+\fB#\fP \fI./MAKEDEV \*(Dk1a\fP
+\fB#\fP\|\fInewfs /dev/r\*(Dk1a\fP
+\fB#\fP\|\fImount /dev/\*(Dk1a /mnt\fP
+\fB#\fP\|\fIcd /mnt\fP
+\fB#\fP\|\fIdump 0f \- /dev/r\*(Dk0a | restore xf \-\fP
+(Note: restore will ask if you want to ``set owner/mode for '.'''
+to which you should reply ``yes''.)
+.DE
+.PP
+When this completes,
+you should then shut down the system, and boot on the disk that
+you just created following the procedure in step (3) above.
+.Sh 4 "Step 5: placing labels on the disks"
+.PP
+For each disk on the HP300, \*(4B places information about the geometry
+of the drive and the partition layout at byte offset 1024.
+This information is written with
+.Xr disklabel (8).
+.PP
+The root image just loaded includes a ``generic'' label intended to allow
+easy installation of the root and
+.Pn /usr
+and may not be suitable for the actual
+disk on which it was installed.
+In particular,
+it may make your disk appear larger or smaller than its real size.
+In the former case, you lose some capacity.
+In the latter, some of the partitions may map non-existent sectors
+leading to errors if those partitions are used.
+It is also possible that the defined geometry will interact poorly with
+the filesystem code resulting in reduced performance.
+However, as long as you are willing to give up a little space,
+not use certain partitions or suffer minor performance degradation,
+you might want to avoid this step;
+especially if you do not know how to use
+.Xr ed (1).
+.PP
+If you choose to edit this label,
+you can fill in correct geometry information from
+.Pn /etc/disktab .
+You may also want to rework the ``e'' and ``f'' partitions used for loading
+.Pn /usr
+and
+.Pn /var .
+You should not attempt to, and
+.Xr disklabel
+will not let you, modify the ``a'', ``b'' and ``d'' partitions.
+To edit a label:
+.DS
+\fB#\fP \fIEDITOR=ed\fP
+\fB#\fP \fIexport EDITOR\fP
+\fB#\fP \fIdisklabel -r -e /dev/r\fBXX#\fPd
+.DE
+where \fBXX\fP is the type and \fB#\fP is the logical drive number; e.g.
+.Pn /dev/rsd0d
+or
+.Pn /dev/rrd0d .
+Note the explicit use of the ``d'' partition.
+This partition includes the bootblock as does ``c''
+and using it allows you to change the size of ``c''.
+.PP
+If you wish to label any additional disks, run the following command for each:
+.DS
+\fB#\|\fP\fIdisklabel -rw \fBXX# type\fP \fI"optional_pack_name"\fP
+.DE
+where \fBXX#\fP is the same as in the previous command
+and \fBtype\fP is the HP300 disk device name as listed in
+.Pn /etc/disktab .
+The optional information may contain any descriptive name for the
+contents of a disk, and may be up to 16 characters long. This procedure
+will place the label on the disk using the information found in
+.Pn /etc/disktab
+for the disk type named.
+If you have changed the disk partition sizes,
+you may wish to add entries for the modified configuration in
+.Pn /etc/disktab
+before labeling the affected disks.
+.PP
+You have now completed the HP300 specific part of the installation.
+Now proceed to the generic part of the installation
+described starting in section 2.5 below.
+Note that where the disk name ``sd'' is used throughout section 2.5,
+you should substitute the name ``rd'' if you are running on an HP-IB disk.
+Also, if you are loading on a single disk with the default disklabel,
+.Pn /var
+should be restored to the ``f'' partition and
+.Pn /usr
+to the ``e'' partition.
+.Sh 2 "Booting the SPARC"
+.Sh 3 "Supported hardware"
+.LP
+The hardware supported by \*(4B for the SPARC is as follows:
+.TS
+center box;
+lw(1i) lw(4i).
+CPU's T{
+SPARCstation 1 series (1, 1+, SLC, IPC) and
+SPARCstation 2 series (2, IPX).
+T}
+_
+DISK's T{
+SCSI.
+T}
+_
+TAPE's T{
+none.
+T}
+_
+NETWORK T{
+SPARCstation Lance (le).
+T}
+_
+GRAPHICS T{
+bwtwo and cgthree.
+T}
+_
+INPUT T{
+Keyboard and mouse.
+T}
+_
+MISC T{
+Battery-backed real time clock,
+built-in serial devices,
+Sbus SCSI controller,
+and audio device.
+T}
+.TE
+.LP
+Major items that are not supported include
+anything VME-based,
+the GX (cgsix) display,
+the floppy disk, and SCSI tapes.
+.Sh 3 "Limitations"
+.LP
+There are several important limitations on the \*(4B distribution
+for the SPARC:
+.IP 1)
+You
+.B must
+have SunOS 4.1.x or Solaris to bring up \*(4B.
+There is no SPARCstation bootstrap code in this distribution. The
+Sun-supplied boot loader will be used to boot \*(4B; you must copy
+this from your SunOS distribution. This imposes several
+restrictions on the system, as detailed below.
+.IP 2)
+The \*(4B SPARC kernel does not remap SCSI IDs. A SCSI disk at
+target 0 will become ``sd0'', where in SunOS the same disk will
+normally be called ``sd3''. If your existing SunOS system is
+diskful, it will be least painful to have SunOS running on the disk
+on target 0 lun 0 and put \*(4B on the disk on target 3 lun 0. Both
+systems will then think they are running on ``sd0'', and you can
+boot either system as needed simply by changing the EEPROM's boot
+device.
+.IP 3)
+There is no SCSI tape driver.
+You must have another system for tape reading and backups.
+.IP 4)
+Although the \*(4B SPARC kernel will handle existing SunOS shared
+libraries, it does not use or create them itself, and therefore
+requires much more disk space than SunOS does.
+.IP 5)
+It is currently difficult (though not completely impossible) to
+run \*(4B diskless. These instructions assume you will have a local
+boot, swap, and root filesystem.
+.IP 6)
+When using a serial port rather than a graphics display as the console,
+only port
+.Pn ttya
+can be used.
+Attempts to use port
+.Pn ttyb
+will fail when the kernel tries
+to print the boot up messages to the console.
+.Sh 3 "The procedure"
+.PP
+You must have a spare disk on which to place \*(4B.
+The steps involved in bootstrapping this tape are as follows:
+.IP 1)
+Bring up SunOS (preferably SunOS 4.1.x or Solaris 1.x, although
+Solaris 2 may work \(em this is untested).
+.IP 2)
+Attach auxiliary SCSI disk(s). Format and label using the
+SunOS formatting and labeling programs as needed.
+Note that the root filesystem currently requires at least 10 MB; 16 MB
+or more is recommended. The b partition will be used for swap;
+this should be at least 32 MB.
+.IP 3)
+Use the SunOS
+.Xr newfs
+to build the root filesystem. You may also
+want to build other filesystems at the same time. (By default, the
+\*(4B
+.Xr newfs
+builds a filesystem that SunOS will not handle; if you
+plan to switch OSes back and forth you may want to sacrifice the
+performance gain from the new filesystem format for compatibility.)
+You can build an old-format filesystem on \*(4B by giving the \-O
+option to
+.Xr newfs (8).
+.Xr Fsck (8)
+can convert old format filesystems to new format
+filesystems, but not vice versa,
+so you may want to initially build old format filesystems so that they
+can be mounted under SunOS,
+and then later convert them to new format filesystems when you are
+satisfied that \*(4B is running properly.
+In any case,
+.B
+you must build an old-style root filesystem
+.R
+so that the SunOS boot program will work.
+.IP 4)
+Mount the new root, then copy the SunOS
+.Pn /boot
+into place and use the SunOS ``installboot'' program
+to enable disk-based booting.
+Note that the filesystem must be mounted when you do the ``installboot'':
+.DS
+.ft CW
+# mount /dev/sd3a /mnt
+# cp /boot /mnt/boot
+# cd /usr/kvm/mdec
+# installboot /mnt/boot bootsd /dev/rsd3a
+.DE
+The SunOS
+.Pn /boot
+will load \*(4B kernels; there is no SPARCstation
+bootstrap code on the distribution. Note that the SunOS
+.Pn /boot
+does not handle the new \*(4B filesystem format.
+.IP 5)
+Restore the contents of the \*(4B root filesystem.
+.DS
+.ft CW
+# cd /mnt
+# rrestore xf tapehost:/dev/nrst0
+.DE
+.IP 6)
+Boot the supplied kernel:
+.DS
+.ft CW
+# halt
+ok boot sd(0,3)kernel -s [for old proms] OR
+ok boot disk3 -s [for new proms]
+\&... [\*(4B boot messages]
+.DE
+.LP
+To install the remaining filesystems, use the procedure described
+starting in section 2.5.
+In these instructions,
+.Pn /usr
+should be loaded into the ``e'' partition and
+.Pn /var
+in the ``f'' partition.
+.LP
+After completing the filesystem installation you may want
+to set up \*(4B to reboot automatically:
+.DS
+.ft CW
+# halt
+ok setenv boot-from sd(0,3)kernel [for old proms] OR
+ok setenv boot-device disk3 [for new proms]
+.DE
+If you build backwards-compatible filesystems, either with the SunOS
+newfs or with the \*(4B ``\-O'' option, you can mount these under
+SunOS. The SunOS fsck will, however, always think that these filesystems
+are corrupted, as there are several new (previously unused)
+superblock fields that are updated in \*(4B. Running ``fsck \-b32''
+and letting it ``fix'' the superblock will take care of this.
+.sp 0.5
+If you wish to run SunOS binaries that use SunOS shared libraries, you
+simply need to copy all the dynamic linker files from an existing
+SunOS system:
+.DS
+.ft CW
+# rcp sunos-host:/etc/ld.so.cache /etc/
+# rcp sunos-host:'/usr/lib/*.so*' /usr/lib/
+.DE
+The SunOS compiler and linker should be able to produce SunOS binaries
+under \*(4B, but this has not been tested. If you plan to try it you
+will need the appropriate .sa files as well.
+.Sh 2 "Booting the DECstation"
+.Sh 3 "Supported hardware"
+.LP
+The hardware supported by \*(4B for the DECstation is as follows:
+.TS
+center box;
+lw(1i) lw(4i).
+CPU's T{
+R2000 based (3100) and
+R3000 based (5000/200, 5000/20, 5000/25, 5000/1xx).
+T}
+_
+DISK's T{
+SCSI-I (tested RZ23, RZ55, RZ57, Maxtor 8760S).
+T}
+_
+TAPE's T{
+SCSI-I (tested DEC TK50, Archive DAT, Emulex MT02).
+T}
+_
+RS232 T{
+Internal DEC dc7085 and AMD 8530 based interfaces.
+T}
+_
+NETWORK T{
+TURBOchannel PMAD-AA and internal LANCE based interfaces.
+T}
+_
+GRAPHICS T{
+Terminal emulation and raw frame buffer support for
+3100 (color & monochrome),
+TURBOchannel PMAG-AA, PMAG-BA, PMAG-DV.
+T}
+_
+INPUT T{
+Standard DEC keyboard (LK201) and mouse.
+T}
+_
+MISC T{
+Battery-backed real time clock,
+internal and TURBOchannel PMAZ-AA SCSI interfaces.
+T}
+.TE
+.LP
+Major items that are not supported include the 5000/240
+(there is code but not compiled in or tested),
+R4000 based machines, FDDI and audio interfaces.
+Diskless machines are not supported but booting kernels and bootstrapping
+over the network is supported on the 5000 series.
+.Sh 3 "The procedure"
+.PP
+The first file on the distribution tape is a tar file that contains
+four files.
+The first step requires a running UNIX (or ULTRIX) system that can
+be used to extract the tar archive from the first file on the tape.
+The command:
+.DS
+.ft CW
+tar xf /dev/rmt0
+.DE
+will extract the following four files:
+.DS
+A) root.image: \fIdd\fP image of the root filesystem
+B) kernel.tape: \fIdd\fP image for creating boot tapes
+C) kernel.net: file for booting over the network
+D) root.dump: \fIdump\fP image of the root filesystem
+.DE
+There are three basic ways a system can be bootstrapped corresponding to the
+first three files.
+You may want to read the section on bootstrapping the HP300
+since many of the steps are similar.
+A spare, formatted SCSI disk is also useful.
+.Sh 4 "Procedure A: copy root filesystem to disk"
+.PP
+This procedure is similar to the HP300.
+If you have an extra disk, the easiest approach is to use \fIdd\fP\|(1)
+under ULTRIX to copy the root filesystem image to the beginning
+of the spare disk.
+The root filesystem image includes a disklabel and bootblock along with the
+root filesystem.
+An example command to copy the image to the beginning of a disk is:
+.DS
+.ft CW
+dd if=root.image of=/dev/rz1c bs=\*(Bzb
+.DE
+The actual special file syntax will vary depending on unit numbers and
+the version of ULTRIX that is running.
+This system is now ready to boot. You can boot the kernel with one of the
+following PROM commands. If you are booting on a 3100, the disk must be SCSI
+id zero because of a bug.
+.DS
+.ft CW
+DEC 3100: boot \-f rz(0,0,0)kernel
+DEC 5000: boot 5/rz0/kernel
+.DE
+You can then proceed to section 2.5
+to create reasonable disk partitions for your machine
+and then install the rest of the system.
+.Sh 4 "Procedure B: bootstrap from tape"
+.PP
+If you have only a single machine with a single disk,
+you need to use the more difficult approach of booting a
+kernel and mini-root from tape or the network, and using it to restore
+the root filesystem.
+.PP
+First, you will need to create a boot tape. This can be done using
+\fIdd\fP as in the following example.
+.DS
+.ft CW
+dd if=kernel.tape of=/dev/nrmt0 bs=1b
+dd if=root.dump of=/dev/nrmt0 bs=\*(Bzb
+.DE
+The actual special file syntax for the tape drive will vary depending on
+unit numbers, tape device and the version of ULTRIX that is running.
+.PP
+The first file on the boot tape contains a boot header, kernel, and
+mini-root filesystem that the PROM can copy into memory.
+Installing from tape has only been tested
+on a 3100 and a 5000/200 using a TK50 tape drive. Here are two example
+PROM commands to boot from tape.
+.DS
+.ft CW
+DEC 3100: boot \-f tz(0,5,0) m # 5 is the SCSI id of the TK50
+DEC 5000: boot 5/tz6 m # 6 is the SCSI id of the TK50
+.DE
+The `m' argument tells the kernel to look for a root filesystem in memory.
+Next you should proceed to section 2.4.3 to build a disk-based root filesystem.
+.Sh 4 "Procedure C: bootstrap over the network"
+.PP
+You will need a host machine that is running the \fIbootp\fP server
+with the
+.Pn kernel.net
+file installed in the default directory defined by the
+configuration file for
+.Xr bootp .
+Here are two example PROM commands to boot across the net:
+.DS
+.ft CW
+DEC 3100: boot \-f tftp()kernel.net m
+DEC 5000: boot 6/tftp/kernel.net m
+.DE
+This command should load the kernel and mini-root into memory and
+run the same as the tape install (procedure B).
+The rest of the steps are the same except
+you will need to start the network
+(if you are unsure how to fill in the <name> fields below,
+see sections 4.4 and 5).
+Execute the following to start the networking:
+.DS
+.ft CW
+# mount \-uw /
+# echo 127.0.0.1 localhost >> /etc/hosts
+# echo <your.host.inet.number> myname.my.domain myname >> /etc/hosts
+# echo <friend.host.inet.number> myfriend.my.domain myfriend >> /etc/hosts
+# ifconfig le0 inet myname
+.DE
+Next you should proceed to section 2.4.3 to build a disk-based root filesystem.
+.Sh 3 "Label disk and create the root filesystem"
+.LP
+There are five steps to create a disk-based root filesystem.
+.IP 1)
+Label the disk.
+.DS
+.ft CW
+# disklabel -W /dev/rrz?c # This enables writing the label
+# disklabel -w -r -B /dev/rrz?c $DISKTYPE
+# newfs /dev/rrz?a
+\&...
+# fsck /dev/rrz?a
+\&...
+.DE
+Supported disk types are listed in
+.Pn /etc/disktab .
+.IP 2)
+Restore the root filesystem.
+.DS
+.ft CW
+# mount \-uw /
+# mount /dev/rz?a /a
+# cd /a
+.DE
+.ti +0.4i
+If you are restoring locally (procedure B), run:
+.DS
+.ft CW
+# mt \-f /dev/nrmt0 rew
+# restore \-xsf 2 /dev/rmt0
+.DE
+.ti +0.4i
+If you are restoring across the net (procedure c), run:
+.DS
+.ft CW
+# rrestore xf myfriend:/path/to/root.dump
+.DE
+.ti +0.4i
+When the restore finishes, clean up with:
+.DS
+.ft CW
+# cd /
+# sync
+# umount /a
+# fsck /dev/rz?a
+.DE
+.IP 3)
+Reset the system and initialize the PROM monitor to boot automatically.
+.DS
+.ft CW
+DEC 3100: setenv bootpath boot \-f rz(0,?,0)kernel
+DEC 5000: setenv bootpath 5/rz?/kernel -a
+.DE
+.IP 4)
+After booting UNIX, you will need to create
+.Pn /dev/mouse
+to run X Window System as in the following example.
+.DS
+.ft CW
+rm /dev/mouse
+ln /dev/xx /dev/mouse
+.DE
+The 'xx' should be one of the following:
+.DS
+pm0 raw interface to PMAX graphics devices
+cfb0 raw interface to TURBOchannel PMAG-BA color frame buffer
+xcfb0 raw interface to maxine graphics devices
+mfb0 raw interface to mono graphics devices
+.DE
+You can then proceed to section 2.5 to install the rest of the system.
+Note that where the disk name ``sd'' is used throughout section 2.5,
+you should substitute the name ``rz''.
+.Sh 2 "Disk configuration"
+.PP
+All architectures now have a root filesystem up and running and
+proceed from this point to layout filesystems to make use
+of the available space and to balance disk load for better system
+performance.
+.Sh 3 "Disk naming and divisions"
+.PP
+Each physical disk drive can be divided into up to 8 partitions;
+UNIX typically uses only 3 or 4 partitions.
+For instance, the first partition, \*(Dk0a,
+is used for a root filesystem, a backup thereof,
+or a small filesystem like,
+.Pn /var/tmp ;
+the second partition, \*(Dk0b,
+is used for paging and swapping; and
+a third partition, typically \*(Dk0e,
+holds a user filesystem.
+.PP
+The space available on a disk varies per device.
+Each disk typically has a paging area of 30 to 100 megabytes
+and a root filesystem of about 17 megabytes.
+.\" XXX check
+The distributed system binaries occupy about 150 (180 with X11R5) megabytes
+.\" XXX check
+while the major sources occupy another 250 (340 with X11R5) megabytes.
+The
+.Pn /var
+filesystem as delivered on the tape is only 2Mb,
+however it should have at least 50Mb allocated to it just for
+normal system activity.
+Usually it is allocated the last partition on the disk
+so that it can provide as much space as possible to the
+.Pn /var/users
+filesystem.
+See section 2.5.4 for further details on disk layouts.
+.PP
+Be aware that the disks have their sizes
+measured in disk sectors (usually 512 bytes), while the UNIX filesystem
+blocks are variable sized.
+If
+.Sm BLOCKSIZE=1k
+is set in the user's environment, all user programs report
+disk space in kilobytes, otherwise,
+disk sizes are always reported in units of 512-byte sectors\**.
+.FS
+You can thank System V intransigence and POSIX duplicity for
+requiring that 512-byte blocks be the units that programs report.
+.FE
+The
+.Pn /etc/disktab
+file used in labelling disks and making filesystems
+specifies disk partition sizes in sectors.
+.Sh 3 "Layout considerations"
+.PP
+There are several considerations in deciding how
+to adjust the arrangement of things on your disks.
+The most important is making sure that there is adequate space
+for what is required; secondarily, throughput should be maximized.
+Paging space is an important parameter.
+The system, as distributed, sizes the configured
+paging areas each time the system is booted. Further,
+multiple paging areas of different sizes may be interleaved.
+.PP
+Many common system programs (C, the editor, the assembler etc.)
+create intermediate files in the
+.Pn /tmp
+directory, so the filesystem where this is stored also should be made
+large enough to accommodate most high-water marks.
+Typically,
+.Pn /tmp
+is constructed from a memory-based filesystem (see
+.Xr mount_mfs (8)).
+Programs that want their temporary files to persist
+across system reboots (such as editors) should use
+.Pn /var/tmp .
+If you plan to use a disk-based
+.Pn /tmp
+filesystem to avoid loss across system reboots, it makes
+sense to mount this in a ``root'' (i.e. first partition)
+filesystem on another disk.
+All the programs that create files in
+.Pn /tmp
+take care to delete them, but are not immune to rare events
+and can leave dregs.
+The directory should be examined every so often and the old
+files deleted.
+.PP
+The efficiency with which UNIX is able to use the CPU
+is often strongly affected by the configuration of disk controllers;
+it is critical for good performance to balance disk load.
+There are at least five components of the disk load that you can
+divide between the available disks:
+.IP 1)
+The root filesystem.
+.IP 2)
+The
+.Pn /var
+and
+.Pn /var/tmp
+filesystems.
+.IP 3)
+The
+.Pn /usr
+filesystem.
+.IP 4)
+The user filesystems.
+.IP 5)
+The paging activity.
+.LP
+The following possibilities are ones we have used at times
+when we had 2, 3 and 4 disks:
+.TS
+center doublebox;
+l | c s s
+l | lw(5) | lw(5) | lw(5).
+ disks
+what 2 3 4
+_
+root 0 0 0
+var 1 2 3
+usr 1 1 1
+paging 0+1 0+2 0+2+3
+users 0 0+2 0+2
+archive x x 3
+.TE
+.PP
+The most important things to consider are to
+even out the disk load as much as possible, and to do this by
+decoupling filesystems (on separate arms) between which heavy copying occurs.
+Note that a long term average balanced load is not important; it is
+much more important to have an instantaneously balanced
+load when the system is busy.
+.PP
+Intelligent experimentation with a few filesystem arrangements can
+pay off in much improved performance. It is particularly easy to
+move the root, the
+.Pn /var
+and
+.Pn /var/tmp
+filesystems and the paging areas. Place the
+user files and the
+.Pn /usr
+directory as space needs dictate and experiment
+with the other, more easily moved filesystems.
+.Sh 3 "Filesystem parameters"
+.PP
+Each filesystem is parameterized according to its block size,
+fragment size, and the disk geometry characteristics of the
+medium on which it resides. Inaccurate specification of the disk
+characteristics or haphazard choice of the filesystem parameters
+can result in substantial throughput degradation or significant
+waste of disk space. As distributed,
+filesystems are configured according to the following table.
+.DS
+.TS
+center;
+l l l.
+Filesystem Block size Fragment size
+_
+root 8 kbytes 1 kbytes
+usr 8 kbytes 1 kbytes
+users 4 kbytes 512 bytes
+.TE
+.DE
+.PP
+The root filesystem block size is
+made large to optimize bandwidth to the associated disk.
+The large block size is important as many of the most
+heavily used programs are demand paged out of the
+.Pn /bin
+directory.
+The fragment size of 1 kbyte is a ``nominal'' value to use
+with a filesystem. With a 1 kbyte fragment size
+disk space utilization is about the same
+as with the earlier versions of the filesystem.
+.PP
+The filesystems for users have a 4 kbyte block
+size with 512 byte fragment size. These parameters
+have been selected based on observations of the
+performance of our user filesystems. The 4 kbyte
+block size provides adequate bandwidth while the
+512 byte fragment size provides acceptable space compaction
+and disk fragmentation.
+.PP
+Other parameters may be chosen in constructing filesystems,
+but the factors involved in choosing a block
+size and fragment size are many and interact in complex
+ways. Larger block sizes result in better
+throughput to large files in the filesystem as
+larger I/O requests will then be done by the
+system. However,
+consideration must be given to the average file sizes
+found in the filesystem and the performance of the
+internal system buffer cache. The system
+currently provides space in the inode for
+12 direct block pointers, 1 single indirect block
+pointer, 1 double indirect block pointer,
+and 1 triple indirect block pointer.
+If a file uses only direct blocks, access time to
+it will be optimized by maximizing the block size.
+If a file spills over into an indirect block,
+increasing the block size of the filesystem may
+decrease the amount of space used
+by eliminating the need to allocate an indirect block.
+However, if the block size is increased and an indirect
+block is still required, then more disk space will be
+used by the file because indirect blocks are allocated
+according to the block size of the filesystem.
+.PP
+In selecting a fragment size for a filesystem, at least
+two considerations should be given. The major performance
+tradeoffs observed are between an 8 kbyte block filesystem
+and a 4 kbyte block filesystem. Because of implementation
+constraints, the block size versus fragment size ratio can not
+be greater than 8. This means that an 8 kbyte filesystem
+will always have a fragment size of at least 1 kbytes. If
+a filesystem is created with a 4 kbyte block size and a
+1 kbyte fragment size, then upgraded to an 8 kbyte block size
+and 1 kbyte fragment size, identical space compaction will be
+observed. However, if a filesystem has a 4 kbyte block size
+and 512 byte fragment size, converting it to an 8K/1K
+filesystem will result in 4-8% more space being
+used. This implies that 4 kbyte block filesystems that
+might be upgraded to 8 kbyte blocks for higher performance should
+use fragment sizes of at least 1 kbytes to minimize the amount
+of work required in conversion.
+.PP
+A second, more important, consideration when selecting the
+fragment size for a filesystem is the level of fragmentation
+on the disk. With an 8:1 fragment to block ratio, storage fragmentation
+occurs much sooner, particularly with a busy filesystem running
+near full capacity. By comparison, the level of fragmentation in a
+4:1 fragment to block ratio filesystem is one tenth as severe. This
+means that on filesystems where many files are created and
+deleted, the 512 byte fragment size is more likely to result in apparent
+space exhaustion because of fragmentation. That is, when the filesystem
+is nearly full, file expansion that requires locating a
+contiguous area of disk space is more likely to fail on a 512
+byte filesystem than on a 1 kbyte filesystem. To minimize
+fragmentation problems of this sort, a parameter in the super
+block specifies a minimum acceptable free space threshold. When
+normal users (i.e. anyone but the super-user) attempt to allocate
+disk space and the free space threshold is exceeded, the user is
+returned an error as if the filesystem were really full. This
+parameter is nominally set to 5%; it may be changed by supplying
+a parameter to
+.Xr newfs (8),
+or by updating the super block of an existing filesystem using
+.Xr tunefs (8).
+.PP
+Finally, a third, less common consideration is the attributes of
+the disk itself. The fragment size should not be smaller than the
+physical sector size of the disk. As an example, the HP magneto-optical
+disks have 1024 byte physical sectors. Using a 512 byte fragment size
+on such disks will work but is extremely inefficient.
+.PP
+Note that the above discussion considers block sizes of up to only 8k.
+As of the 4.4 release, the maximum block size has been increased to 64k.
+This allows an entirely new set of block/fragment combinations for which
+there is little experience to date.
+In general though, unless a filesystem is to be used
+for a special purpose application (for example, storing
+image processing data), we recommend using the
+values supplied above.
+Remember that the current
+implementation limits the block size to at most 64 kbytes
+and the ratio of block size versus fragment size must be 1, 2, 4, or 8.
+.PP
+The disk geometry information used by the filesystem
+affects the block layout policies employed. The file
+.Pn /etc/disktab ,
+as supplied, contains the data for most
+all drives supported by the system. Before constructing
+a filesystem with
+.Xr newfs (8)
+you should label the disk (if it has not yet been labeled,
+and the driver supports labels).
+If labels cannot be used, you must instead
+specify the type of disk on which the filesystem resides;
+.Xr newfs
+then reads
+.Pn /etc/disktab
+instead of the pack label.
+This file also contains the default
+filesystem partition
+sizes, and default block and fragment sizes. To
+override any of the default values you can modify the file,
+edit the disk label,
+or use an option to
+.Xr newfs .
+.Sh 3 "Implementing a layout"
+.PP
+To put a chosen disk layout into effect, you should use the
+.Xr newfs (8)
+command to create each new filesystem.
+Each filesystem must also be added to the file
+.Pn /etc/fstab
+so that it will be checked and mounted when the system is bootstrapped.
+.PP
+First we will consider a system with a single disk.
+There is little real choice on how to do the layout;
+the root filesystem goes in the ``a'' partition,
+.Pn /usr
+goes in the ``e'' partition, and
+.Pn /var
+fills out the remainder of the disk in the ``f'' partition.
+This is the organization used if you loaded the disk-image root filesystem.
+With the addition of a memory-based
+.Pn /tmp
+filesystem, its fstab entry would be as follows:
+.TS
+center;
+lfC lfC l l n n.
+/dev/\*(Dk0a / ufs rw 1 1
+/dev/\*(Dk0b none swap sw 0 0
+/dev/\*(Dk0b /tmp mfs rw,-s=14000,-b=8192,-f=1024,-T=sd660 0 0
+/dev/\*(Dk0e /usr ufs ro 1 2
+/dev/\*(Dk0f /var ufs rw 1 2
+.TE
+.PP
+If we had a second disk, we would split the load between the drives.
+On the second disk, we place the
+.Pn /usr
+and
+.Pn /var
+filesystems in their usual \*(Dk1e and \*(Dk1f
+partitions respectively.
+The \*(Dk1b partition would be used as a second paging area,
+and the \*(Dk1a partition left as a spare root filesystem
+(alternatively \*(Dk1a could be used for
+.Pn /var/tmp ).
+The first disk still holds the
+the root filesystem in \*(Dk0a, and the primary swap area in \*(Dk0b.
+The \*(Dk0e partition is used to hold home directories in
+.Pn /var/users .
+The \*(Dk0f partition can be used for
+.Pn /usr/src
+or alternately the \*(Dk0e partition can be extended to cover
+the rest of the disk with
+.Xr disklabel (8).
+As before, the
+.Pn /tmp
+directory is a memory-based filesystem.
+Note that to interleave the paging between the two disks
+you must build a system configuration that specifies:
+.DS
+config kernel root on \*(Dk0 swap on \*(Dk0 and \*(Dk1
+.DE
+The
+.Pn /etc/fstab
+file would then contain
+.TS
+center;
+lfC lfC l l n n.
+/dev/\*(Dk0a / ufs rw 1 1
+/dev/\*(Dk0b none swap sw 0 0
+/dev/\*(Dk1b none swap sw 0 0
+/dev/\*(Dk0b /tmp mfs rw,-s=14000,-b=8192,-f=1024,-T=sd660 0 0
+/dev/\*(Dk1e /usr ufs ro 1 2
+/dev/\*(Dk0f /usr/src ufs rw 1 2
+/dev/\*(Dk1f /var ufs rw 1 2
+/dev/\*(Dk0e /var/users ufs rw 1 2
+.TE
+.PP
+To make the
+.Pn /var
+filesystem we would do:
+.DS
+\fB#\fP \fIcd /dev\fP
+\fB#\fP \fIMAKEDEV \*(Dk1\fP
+\fB#\fP \fIdisklabel -wr \*(Dk1 "disk type" "disk name"\fP
+\fB#\fP \fInewfs \*(Dk1f\fP
+(information about filesystem prints out)
+\fB#\fP \fImkdir /var\fP
+\fB#\fP \fImount /dev/\*(Dk1f /var\fP
+.DE
+.Sh 2 "Installing the rest of the system"
+.PP
+At this point you should have your disks partitioned.
+The next step is to extract the rest of the data from the tape.
+At a minimum you need to set up the
+.Pn /var
+and
+.Pn /usr
+filesystems.
+You may also want to extract some or all the program sources.
+Since not all architectures support tape drives or don't support the
+correct ones, you may need to extract the files indirectly using
+.Xr rsh (1).
+For example, for a directly connected tape drive you might do:
+.DS
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP
+\fB#\fP \fItar xbpf \*(Bz /dev/nr\*(Mt0\fP
+.DE
+The equivalent indirect procedure (where the tape drive is on machine ``foo'')
+is:
+.DS
+\fB#\fP \fIrsh foo mt -f /dev/nr\*(Mt0 fsf\fP
+\fB#\fP \fIrsh foo dd if=/dev/nr\*(Mt0 bs=\*(Bzb | tar xbpf \*(Bz -\fP
+.DE
+Obviously, the target machine must be connected to the local network
+for this to work.
+To do this:
+.DS
+\fB#\fP \fIecho 127.0.0.1 localhost >> /etc/hosts\fP
+\fB#\fP \fIecho \fPyour.host.inet.number myname.my.domain myname\fI >> /etc/hosts\fP
+\fB#\fP \fIecho \fPfriend.host.inet.number myfriend.my.domain myfriend\fI >> /etc/hosts\fP
+\fB#\fP \fIifconfig le0 inet \fPmyname
+.DE
+where the ``host.inet.number'' fields are the IP addresses for your host and
+the host with the tape drive
+and the ``my.domain'' fields are the names of your machine and the tape-hosting
+machine.
+See sections 4.4 and 5 for more information on setting up the network.
+.PP
+Assuming a directly connected tape drive, here is how to extract and
+install
+.Pn /var
+and
+.Pn /usr :
+.br
+.ne 5
+.TS
+lw(2i) l.
+\fB#\fP \fImount \-uw /dev/\*(Dk#a /\fP (read-write mount root filesystem)
+\fB#\fP \fIdate yymmddhhmm\fP (set date, see \fIdate\fP\|(1))
+\&....
+\fB#\fP \fIpasswd -l root\fP (set password for super-user)
+\fBNew password:\fP (password will not echo)
+\fBRetype new password:\fP
+\fB#\fP \fIpasswd -l toor\fP (set password for super-user)
+\fBNew password:\fP (password will not echo)
+\fBRetype new password:\fP
+\fB#\fP \fIhostname mysitename\fP (set your hostname)
+\fB#\fP \fInewfs r\*(Dk#p\fP (create empty user filesystem)
+(\fI\*(Dk\fP is the disk type, \fI#\fP is the unit number,
+\fIp\fP is the partition; this takes a few minutes)
+\fB#\fP \fImount /dev/\*(Dk#p /var\fP (mount the var filesystem)
+\fB#\fP \fIcd /var\fP (make /var the current directory)
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
+\fB#\fP \fItar xbpf \*(Bz /dev/nr\*(Mt0\fP (extract all of var)
+(this takes a few minutes)
+\fB#\fP \fInewfs r\*(Dk#p\fP (create empty user filesystem)
+(as before \fI\*(Dk\fP is the disk type, \fI#\fP is the unit number,
+\fIp\fP is the partition)
+\fB#\fP \fImount /dev/\*(Dk#p /mnt\fP (mount the new /usr in temporary location)
+\fB#\fP \fIcd /mnt\fP (make /mnt the current directory)
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
+\fB#\fP \fItar xbpf \*(Bz /dev/nr\*(Mt0\fP (extract all of usr except usr/src)
+(this takes about 15-20 minutes)
+\fB#\fP \fIcd /\fP (make / the current directory)
+\fB#\fP \fIumount /mnt\fP (unmount from temporary mount point)
+\fB#\fP \fIrm -r /usr/*\fP (remove excess bootstrap binaries)
+\fB#\fP \fImount /dev/\*(Dk#p /usr\fP (remount /usr)
+.TE
+If no disk label has been installed on the disk, the
+.Xr newfs
+command will require a third argument to specify the disk type,
+using one of the names in
+.Pn /etc/disktab .
+If the tape had been rewound or positioned incorrectly before the
+.Xr tar ,
+to extract
+.Pn /var
+it may be repositioned by the following commands.
+.DS
+\fB#\fP \fImt -f /dev/nr\*(Mt0 rew\fP
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf 1\fP
+.DE
+The data on the second and third tape files has now been extracted.
+If you are using 6250bpi tapes, the first reel of the
+distribution is no longer needed; you should now mount the second
+reel instead. The installation procedure continues from this
+point on the 8mm tape.
+The next step is to extract the sources.
+As previously noted,
+.Pn /usr/src
+.\" XXX Check
+requires about 250-340Mb of space.
+Ideally sources should be in a separate filesystem;
+if you plan to put them into your
+.Pn /usr
+filesystem, it will need at least 500Mb of space.
+Assuming that you will be using a separate filesystem on \*(Dk0f for
+.Pn /usr/src ,
+you will start by creating and mounting it:
+.DS
+\fB#\fP \fInewfs \*(Dk0f\fP
+(information about filesystem prints out)
+\fB#\fP \fImkdir /usr/src\fP
+\fB#\fP \fImount /dev/\*(Dk0f /usr/src\fP
+.DE
+.LP
+First you will extract the kernel source:
+.DS
+.TS
+lw(2i) l.
+\fB#\fP \fIcd /usr/src\fP
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
+(this should only be done on Exabyte distributions)
+\fB#\fP \fItar xpbf \*(Bz /dev/nr\*(Mt0\fP (extract the kernel sources)
+(this takes about 15-30 minutes)
+.TE
+.DE
+.LP
+The next tar file contains the sources for the utilities.
+It is extracted as follows:
+.DS
+.TS
+lw(2i) l.
+\fB#\fP \fIcd /usr/src\fP
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
+\fB#\fP \fItar xpbf \*(Bz /dev/rmt12\fP (extract the utility source)
+(this takes about 30-60 minutes)
+.TE
+.DE
+.PP
+If you are using 6250bpi tapes, the second reel of the
+distribution is no longer needed; you should now mount the third
+reel instead. The installation procedure continues from this
+point on the 8mm tape.
+.PP
+The next tar file contains the sources for the contributed software.
+It is extracted as follows:
+.DS
+.TS
+lw(2i) l.
+\fB#\fP \fIcd /usr/src\fP
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
+(this should only be done on Exabyte distributions)
+\fB#\fP \fItar xpbf \*(Bz /dev/rmt12\fP (extract the contributed software source)
+(this takes about 30-60 minutes)
+.TE
+.DE
+.PP
+If you received a distribution on 8mm Exabyte tape,
+there is one additional tape file on the distribution tape
+that has not been installed to this point; it contains the
+sources for X11R5 in
+.Xr tar (1)
+format. As distributed, X11R5 should be placed in
+.Pn /usr/src/X11R5 .
+.DS
+.TS
+lw(2i) l.
+\fB#\fP \fIcd /usr/src\fP
+\fB#\fP \fImt -f /dev/nr\*(Mt0 fsf\fP (space to end of previous tape file)
+\fB#\fP \fItar xpbf \*(Bz /dev/nr\*(Mt0\fP (extract the X11R5 source)
+(this takes about 30-60 minutes)
+.TE
+.DE
+Many of the X11 utilities search using the path
+.Pn /usr/X11 ,
+so be sure that you have a symbolic link that points at
+the location of your X11 binaries (here, X11R5).
+.PP
+Having now completed the extraction of the sources,
+you may want to verify that your
+.Pn /usr/src
+filesystem is consistent.
+To do so, you must unmount it, and run
+.Xr fsck (8);
+assuming that you used \*(Dk0f you would proceed as follows:
+.DS
+.TS
+lw(2i) l.
+\fB#\fP \fIcd /\fP (change directory, back to the root)
+\fB#\fP \fIumount /usr/src\fP (unmount /usr/src)
+\fB#\fP \fIfsck /dev/r\*(Dk0f\fP
+.TE
+.DE
+The output from
+.Xr fsck
+should look something like:
+.DS
+.B
+** /dev/r\*(Dk0f
+** Last Mounted on /usr/src
+** Phase 1 - Check Blocks and Sizes
+** Phase 2 - Check Pathnames
+** Phase 3 - Check Connectivity
+** Phase 4 - Check Reference Counts
+** Phase 5 - Check Cyl groups
+23000 files, 261000 used, 39000 free (2200 frags, 4600 blocks)
+.R
+.DE
+.PP
+If there are inconsistencies in the filesystem, you may be prompted
+to apply corrective action; see the
+.Xr fsck (8)
+or \fIFsck \(en The UNIX File System Check Program\fP (SMM:3) for more details.
+.PP
+To use the
+.Pn /usr/src
+filesystem, you should now remount it with:
+.DS
+\fB#\fP \fImount /dev/\*(Dk0f /usr/src\fP
+.DE
+or if you have made an entry for it in
+.Pn /etc/fstab
+you can remount it with:
+.DS
+\fB#\fP \fImount /usr/src\fP
+.DE
+.Sh 2 "Additional conversion information"
+.PP
+After setting up the new \*(4B filesystems, you may restore the user
+files that were saved on tape before beginning the conversion.
+Note that the \*(4B
+.Xr restore
+program does its work on a mounted filesystem using normal system operations.
+This means that filesystem dumps may be restored even
+if the characteristics of the filesystem changed.
+To restore a dump tape for, say, the
+.Pn /a
+filesystem something like the following would be used:
+.DS
+\fB#\fP \fImkdir /a\fP
+\fB#\fP \fInewfs \*(Dk#p\fI
+\fB#\fP \fImount /dev/\*(Dk#p /a\fP
+\fB#\fP \fIcd /a\fP
+\fB#\fP \fIrestore x\fP
+.DE
+.PP
+If
+.Xr tar
+images were written instead of doing a dump, you should
+be sure to use its `\-p' option when reading the files back. No matter
+how you restore a filesystem, be sure to unmount it and check its
+integrity with
+.Xr fsck (8)
+when the job is complete.
diff --git a/share/doc/smm/01.setup/3.t b/share/doc/smm/01.setup/3.t
new file mode 100644
index 0000000..5b0afd4
--- /dev/null
+++ b/share/doc/smm/01.setup/3.t
@@ -0,0 +1,1996 @@
+.\" Copyright (c) 1980, 1986, 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\" @(#)3.t 8.1 (Berkeley) 7/27/93
+.\"
+.ds lq ``
+.ds rq ''
+.ds RH "Upgrading a \*(Ps System
+.ds CF \*(Dy
+.Sh 1 "Upgrading a \*(Ps system"
+.PP
+This section describes the procedure for upgrading a \*(Ps
+system to \*(4B. This procedure may vary according to the version of
+the system running before conversion.
+If you are converting from a
+System V system, some of this section will still apply (in particular,
+the filesystem conversion). However, many of the system configuration
+files are different, and the executable file formats are completely
+incompatible.
+.PP
+In particular be wary when using this information to upgrade
+a \*(Ps HP300 system.
+There are at least four different versions of ``\*(Ps'' out there:
+.IP 1)
+HPBSD 1.x from Utah.
+.br
+This was the original version of \*(Ps for HP300s from which the
+other variants (and \*(4B) are derived.
+It is largely a \*(Ps system with Sun's NFS 3.0 filesystem code and
+some \*(Ps-Tahoe features (e.g. networking code).
+Since the filesystem code is 4.2/4.3 vintage and the filesystem
+hierarchy is largely \*(Ps, most of this section should apply.
+.IP 2)
+MORE/bsd from Mt. Xinu.
+.br
+This is a \*(Ps-Tahoe vintage system with Sun's NFS 4.0 filesystem code
+upgraded with Tahoe UFS features.
+The instructions for \*(Ps-Tahoe should largely apply.
+.IP 3)
+\*(Ps-Reno from CSRG.
+.br
+At least one site bootstrapped HP300 support from the Reno distribution.
+The Reno filesystem code was somewhere between \*(Ps and \*(4B: the VFS switch
+had been added but many of the UFS features (e.g. ``inline'' symlinks)
+were missing.
+The filesystem hierarchy reorganization first appeared in this release.
+Be extremely careful following these instructions if you are
+upgrading from the Reno distribution.
+.IP 4)
+HPBSD 2.0 from Utah.
+.br
+As if things were not bad enough already,
+this release has the \*(4B filesystem and networking code
+as well as some utilities, but still has a \*(Ps hierarchy.
+No filesystem conversions are necessary for this upgrade,
+but files will still need to be moved around.
+.Sh 2 "Installation overview"
+.PP
+If you are running \*(Ps, upgrading your system
+involves replacing your kernel and system utilities.
+In general, there are three possible ways to install a new \*(Bs distribution:
+(1) boot directly from the distribution tape, use it to load new binaries
+onto empty disks, and then merge or restore any existing configuration files
+and filesystems;
+(2) use an existing \*(Ps or later system to extract the root and
+.Pn /usr
+filesystems from the distribution tape,
+boot from the new system, then merge or restore existing
+configuration files and filesystems; or
+(3) extract the sources from the distribution tape onto an existing system,
+and use that system to cross-compile and install \*(4B.
+For this release, the second alternative is strongly advised,
+with the third alternative reserved as a last resort.
+In general, older binaries will continue to run under \*(4B,
+but there are many exceptions that are on the critical path
+for getting the system running.
+Ideally, the new system binaries (root and
+.Pn /usr
+filesystems) should be installed on spare disk partitions,
+then site-specific files should be merged into them.
+Once the new system is up and fully merged, the previous root and
+.Pn /usr
+filesystems can be reused.
+Other existing filesystems can be retained and used,
+except that (as usual) the new
+.Xr fsck
+should be run before they are mounted.
+.PP
+It is \fBSTRONGLY\fP advised that you make full dumps of each filesystem
+before beginning, especially any that you intend to modify in place
+during the merge.
+It is also desirable to run filesystem checks
+of all filesystems to be converted to \*(4B before shutting down.
+This is an excellent time to review your disk configuration
+for possible tuning of the layout.
+Most systems will need to provide a new filesystem for system use
+mounted on
+.Pn /var
+(see below).
+However, the
+.Pn /tmp
+filesystem can be an MFS virtual-memory-resident filesystem,
+potentially freeing an existing disk partition.
+(Additional swap space may be desirable as a consequence.)
+See
+.Xr mount_mfs (8).
+.PP
+The recommended installation procedure includes the following steps.
+The order of these steps will probably vary according to local needs.
+.IP \(bu
+Extract root and
+.Pn /usr
+filesystems from the distribution tapes.
+.IP \(bu
+Extract kernel and/or user-level sources from the distribution tape
+if space permits.
+This can serve as the backup documentation as needed.
+.IP \(bu
+Configure and boot a kernel for the local system.
+This can be delayed if the generic kernel from the distribution
+supports enough hardware to proceed.
+.IP \(bu
+Build a skeletal
+.Pn /var
+filesystem (see
+.Xr mtree (8)).
+.IP \(bu
+Merge site-dependent configuration files from
+.Pn /etc
+and
+.Pn /usr/lib
+into the new
+.Pn /etc
+directory.
+Note that many file formats and contents have changed; see section 3.4
+of this document.
+.IP \(bu
+Copy or merge files from
+.Pn /usr/adm ,
+.Pn /usr/spool ,
+.Pn /usr/preserve ,
+.Pn /usr/lib ,
+and other locations into
+.Pn /var .
+.IP \(bu
+Merge local macros, dictionaries, etc. into
+.Pn /usr/share .
+.IP \(bu
+Merge and update local software to reflect the system changes.
+.IP \(bu
+Take off the rest of the morning, you've earned it!
+.PP
+Section 3.2 lists the files to be saved as part of the conversion process.
+Section 3.3 describes the bootstrap process.
+Section 3.4 discusses the merger of the saved files back into the new system.
+Section 3.5 gives an overview of the major
+bug fixes and changes between \*(Ps and \*(4B.
+Section 3.6 provides general hints on possible problems to be
+aware of when converting from \*(Ps to \*(4B.
+.Sh 2 "Files to save"
+.PP
+The following list enumerates the standard set of files you will want to
+save and suggests directories in which site-specific files should be present.
+This list will likely be augmented with non-standard files you
+have added to your system.
+If you do not have enough space to create parallel
+filesystems, you should create a
+.Xr tar
+image of the following files before the new filesystems are created.
+The rest of this subsection describes where theses files
+have moved and how they have changed.
+.TS
+lfC c l.
+/.cshrc \(dg root csh startup script (moves to \f(CW/root/.cshrc\fP)
+/.login \(dg root csh login script (moves to \f(CW/root/.login\fP)
+/.profile \(dg root sh startup script (moves to \f(CW/root/.profile\fP)
+/.rhosts \(dg for trusted machines and users (moves to \f(CW/root/.rhosts\fP)
+/etc/disktab \(dd in case you changed disk partition sizes
+/etc/fstab * disk configuration data
+/etc/ftpusers \(dg for local additions
+/etc/gettytab \(dd getty database
+/etc/group * group data base
+/etc/hosts \(dg for local host information
+/etc/hosts.equiv \(dg for local host equivalence information
+/etc/hosts.lpd \(dg printer access file
+/etc/inetd.conf * Internet services configuration data
+/etc/named* \(dg named configuration files
+/etc/netstart \(dg network initialization
+/etc/networks \(dg for local network information
+/etc/passwd * user data base
+/etc/printcap * line printer database
+/etc/protocols \(dd in case you added any local protocols
+/etc/rc * for any local additions
+/etc/rc.local * site specific system startup commands
+/etc/remote \(dg auto-dialer configuration
+/etc/services \(dd for local additions
+/etc/shells \(dd list of valid shells
+/etc/syslog.conf * system logger configuration
+/etc/securettys * merged into ttys
+/etc/ttys * terminal line configuration data
+/etc/ttytype * merged into ttys
+/etc/termcap \(dd for any local entries that may have been added
+/lib \(dd for any locally developed language processors
+/usr/dict/* \(dd for local additions to words and papers
+/usr/include/* \(dd for local additions
+/usr/lib/aliases * mail forwarding data base (moves to \f(CW/etc/aliases\fP)
+/usr/lib/crontab * cron daemon data base (moves to \f(CW/etc/crontab\fP)
+/usr/lib/crontab.local * local cron daemon data base (moves to \f(CW/etc/crontab.local\fP)
+/usr/lib/lib*.a \(dg for local libraries
+/usr/lib/mail.rc \(dg system-wide mail(1) initialization (moves to \f(CW/etc/mail.rc\fP)
+/usr/lib/sendmail.cf * sendmail configuration (moves to \f(CW/etc/sendmail.cf\fP)
+/usr/lib/tmac/* \(dd for locally developed troff/nroff macros (moves to \f(CW/usr/share/tmac/*\fP)
+/usr/lib/uucp/* \(dg for local uucp configuration files
+/usr/man/manl * for manual pages for locally developed programs (moves to \f(CW/usr/local/man\fP)
+/usr/spool/* \(dg for current mail, news, uucp files, etc. (moves to \f(CW/var/spool\fP)
+/usr/src/local \(dg for source for locally developed programs
+/sys/conf/HOST \(dg configuration file for your machine (moves to \f(CW/sys/<arch>/conf\fP)
+/sys/conf/files.HOST \(dg list of special files in your kernel (moves to \f(CW/sys/<arch>/conf\fP)
+/*/quotas * filesystem quota files (moves to \f(CW/*/quotas.user\fP)
+.TE
+.DS
+\(dg\|Files that can be used from \*(Ps without change.
+\(dd\|Files that need local changes merged into \*(4B files.
+*\|Files that require special work to merge and are discussed in section 3.4.
+.DE
+.Sh 2 "Installing \*(4B"
+.PP
+The next step is to build a working \*(4B system.
+This can be done by following the steps in section 2 of
+this document for extracting the root and
+.Pn /usr
+filesystems from the distribution tape onto unused disk partitions.
+For the SPARC, the root filesystem dump on the tape could also be
+extracted directly.
+For the HP300 and DECstation, the raw disk image can be copied
+into an unused partition and this partition can then be dumped
+to create an image that can be restored.
+The exact procedure chosen will depend on the disk configuration
+and the number of suitable disk partitions that may be used.
+It is also desirable to run filesystem checks
+of all filesystems to be converted to \*(4B before shutting down.
+In any case, this is an excellent time to review your disk configuration
+for possible tuning of the layout.
+Section 2.5 and
+.Xr config (8)
+are required reading.
+.LP
+The filesystem in \*(4B has been reorganized in an effort to
+meet several goals:
+.IP 1)
+The root filesystem should be small.
+.IP 2)
+There should be a per-architecture centrally-shareable read-only
+.Pn /usr
+filesystem.
+.IP 3)
+Variable per-machine directories should be concentrated below
+a single mount point named
+.Pn /var .
+.IP 4)
+Site-wide machine independent shareable text files should be separated
+from architecture specific binary files and should be concentrated below
+a single mount point named
+.Pn /usr/share .
+.LP
+These goals are realized with the following general layouts.
+The reorganized root filesystem has the following directories:
+.TS
+lfC l.
+/etc (config files)
+/bin (user binaries needed when single-user)
+/sbin (root binaries needed when single-user)
+/local (locally added binaries used only by this machine)
+/tmp (mount point for memory based filesystem)
+/dev (local devices)
+/home (mount point for AMD)
+/var (mount point for per-machine variable directories)
+/usr (mount point for multiuser binaries and files)
+.TE
+.LP
+The reorganized
+.Pn /usr
+filesystem has the following directories:
+.TS
+lfC l.
+/usr/bin (user binaries)
+/usr/contrib (software contributed to \*(4B)
+/usr/games (binaries for games, score files in \f(CW/var\fP)
+/usr/include (standard include files)
+/usr/lib (lib*.a from old \f(CW/usr/lib\fP)
+/usr/libdata (databases from old \f(CW/usr/lib\fP)
+/usr/libexec (executables from old \f(CW/usr/lib\fP)
+/usr/local (locally added binaries used site-wide)
+/usr/old (deprecated binaries)
+/usr/sbin (root binaries)
+/usr/share (mount point for site-wide shared text)
+/usr/src (mount point for sources)
+.TE
+.LP
+The reorganized
+.Pn /usr/share
+filesystem has the following directories:
+.TS
+lfC l.
+/usr/share/calendar (various useful calendar files)
+/usr/share/dict (dictionaries)
+/usr/share/doc (\*(4B manual sources)
+/usr/share/games (games text files)
+/usr/share/groff_font (groff font information)
+/usr/share/man (typeset manual pages)
+/usr/share/misc (dumping ground for random text files)
+/usr/share/mk (templates for \*(4B makefiles)
+/usr/share/skel (template user home directory files)
+/usr/share/tmac (various groff macro packages)
+/usr/share/zoneinfo (information on time zones)
+.TE
+.LP
+The reorganized
+.Pn /var
+filesystem has the following directories:
+.TS
+lfC l.
+/var/account (accounting files, formerly \f(CW/usr/adm\fP)
+/var/at (\fIat\fP\|(1) spooling area)
+/var/backups (backups of system files)
+/var/crash (crash dumps)
+/var/db (system-wide databases, e.g. tags)
+/var/games (score files)
+/var/log (log files)
+/var/mail (users mail)
+/var/obj (hierarchy to build \f(CW/usr/src\fP)
+/var/preserve (preserve area for vi)
+/var/quotas (directory to store quota files)
+/var/run (directory to store *.pid files)
+/var/rwho (rwho databases)
+/var/spool/ftp (home directory for anonymous ftp)
+/var/spool/mqueue (sendmail spooling directory)
+/var/spool/news (news spooling area)
+/var/spool/output (printer spooling area)
+/var/spool/uucp (uucp spooling area)
+/var/tmp (disk-based temporary directory)
+/var/users (root of per-machine user home directories)
+.TE
+.PP
+The \*(4B bootstrap routines pass the identity of the boot device
+through to the kernel.
+The kernel then uses that device as its root filesystem.
+Thus, for example, if you boot from
+.Pn /dev/\*(Dk1a ,
+the kernel will use
+.Pn \*(Dk1a
+as its root filesystem. If
+.Pn /dev/\*(Dk1b
+is configured as a swap partition,
+it will be used as the initial swap area,
+otherwise the normal primary swap area (\c
+.Pn /dev/\*(Dk0b )
+will be used.
+The \*(4B bootstrap is backward compatible with \*(Ps,
+so you can replace your old bootstrap if you use it
+to boot your first \*(4B kernel.
+However, the \*(Ps bootstrap cannot access \*(4B filesystems,
+so if you plan to convert your filesystems to \*(4B,
+you must install a new bootstrap \fIbefore\fP doing the conversion.
+Note that SPARC users cannot build a \*(4B compatible version
+of the bootstrap, so must \fInot\fP convert their root filesystem
+to the new \*(4B format.
+.PP
+Once you have extracted the \*(4B system and booted from it,
+you will have to build a kernel customized for your configuration.
+If you have any local device drivers,
+they will have to be incorporated into the new kernel.
+See section 4.1.3 and ``Building 4.3BSD UNIX Systems with Config'' (SMM:2).
+.PP
+If converting from \*(Ps, your old filesystems should be converted.
+If you've modified the partition
+sizes from the original \*(Ps ones, and are not already using the
+\*(4B disk labels, you will have to modify the default disk partition
+tables in the kernel. Make the necessary table changes and boot
+your custom kernel \fBBEFORE\fP trying to access any of your old
+filesystems! After doing this, if necessary, the remaining filesystems
+may be converted in place by running the \*(4B version of
+.Xr fsck (8)
+on each filesystem and allowing it to make the necessary corrections.
+The new version of
+.Xr fsck
+is more strict about the size of directories than
+the version supplied with \*(Ps.
+Thus the first time that it is run on a \*(Ps filesystem,
+it will produce messages of the form:
+.DS
+\fBDIRECTORY ...: LENGTH\fP xx \fBNOT MULTIPLE OF 512 (ADJUSTED)\fP
+.DE
+Length ``xx'' will be the size of the directory;
+it will be expanded to the next multiple of 512 bytes.
+The new
+.Xr fsck
+will also set default \fIinterleave\fP and
+\fInpsect\fP (number of physical sectors per track) values on older
+filesystems, in which these fields were unused spares; this correction
+will produce messages of the form:
+.DS
+\fBIMPOSSIBLE INTERLEAVE=0 IN SUPERBLOCK (SET TO DEFAULT)\fP\**
+\fBIMPOSSIBLE NPSECT=0 IN SUPERBLOCK (SET TO DEFAULT)\fP
+.DE
+.FS
+The defaults are to set \fIinterleave\fP to 1 and
+\fInpsect\fP to \fInsect\fP.
+This is correct on most drives;
+it affects only performance (usually virtually unmeasurably).
+.FE
+Filesystems that have had their interleave and npsect values
+set will be diagnosed by the old
+.Xr fsck
+as having a bad superblock; the old
+.Xr fsck
+will run only if given an alternate superblock
+(\fIfsck \-b32\fP),
+in which case it will re-zero these fields.
+The \*(4B kernel will internally set these fields to their defaults
+if fsck has not done so; again, the \fI\-b32\fP option may be
+necessary for running the old
+.Xr fsck .
+.PP
+In addition, \*(4B removes several limits on filesystem sizes
+that were present in \*(Ps.
+The limited filesystems
+continue to work in \*(4B, but should be converted
+as soon as it is convenient
+by running
+.Xr fsck
+with the \fI\-c 2\fP option.
+The sequence \fIfsck \-p \-c 2\fP will update them all,
+fix the interleave and npsect fields,
+fix any incorrect directory lengths,
+expand maximum uid's and gid's to 32-bits,
+place symbolic links less than 60 bytes into their inode,
+and fill in directory type fields all at once.
+The new filesystem formats are incompatible with older systems.
+If you wish to continue using these filesystems with the older
+systems you should make only the compatible changes using
+\fIfsck \-c 1\fP.
+.Sh 2 "Merging your files from \*(Ps into \*(4B"
+.PP
+When your system is booting reliably and you have the \*(4B root and
+.Pn /usr
+filesystems fully installed you will be ready
+to continue with the next step in the conversion process,
+merging your old files into the new system.
+.PP
+If you saved the files on a
+.Xr tar
+tape, extract them into a scratch directory, say
+.Pn /usr/convert :
+.DS
+\fB#\fP \fImkdir /usr/convert\fP
+\fB#\fP \fIcd /usr/convert\fP
+\fB#\fP \fItar xp\fP
+.DE
+.PP
+The data files marked in the previous table with a dagger (\(dg)
+may be used without change from the previous system.
+Those data files marked with a double dagger (\(dd) have syntax
+changes or substantial enhancements.
+You should start with the \*(4B version and carefully
+integrate any local changes into the new file.
+Usually these local changes can be incorporated
+without conflict into the new file;
+some exceptions are noted below.
+The files marked with an asterisk (*) require
+particular attention and are discussed below.
+.PP
+As described in section 3.3,
+the most immediately obvious change in \*(4B is the reorganization
+of the system filesystems.
+Users of certain recent vendor releases have seen this general organization,
+although \*(4B takes the reorganization a bit further.
+The directories most affected are
+.Pn /etc ,
+that now contains only system configuration files;
+.Pn /var ,
+a new filesystem containing per-system spool and log files; and
+.Pn /usr/share,
+that contains most of the text files shareable across architectures
+such as documentation and macros.
+System administration programs formerly in
+.Pn /etc
+are now found in
+.Pn /sbin
+and
+.Pn /usr/sbin .
+Various programs and data files formerly in
+.Pn /usr/lib
+are now found in
+.Pn /usr/libexec
+and
+.Pn /usr/libdata ,
+respectively.
+Administrative files formerly in
+.Pn /usr/adm
+are in
+.Pn /var/account
+and, similarly, log files are now in
+.Pn /var/log .
+The directory
+.Pn /usr/ucb
+has been merged into
+.Pn /usr/bin ,
+and the sources for programs in
+.Pn /usr/bin
+are in
+.Pn /usr/src/usr.bin .
+Other source directories parallel the destination directories;
+.Pn /usr/src/etc
+has been greatly expanded, and
+.Pn /usr/src/share
+is new.
+The source for the manual pages, in general, are with the source
+code for the applications they document.
+Manual pages not closely corresponding to an application program
+are found in
+.Pn /usr/src/share/man .
+The locations of all man pages is listed in
+.Pn /usr/src/share/man/man0/man[1-8] .
+The manual page
+.Xr hier (7)
+has been updated and made more detailed;
+it is included in the printed documentation.
+You should review it to familiarize yourself with the new layout.
+.PP
+A new utility,
+.Xr mtree (8),
+is provided to build and check filesystem hierarchies
+with the proper contents, owners and permissions.
+Scripts are provided in
+.Pn /etc/mtree
+(and
+.Pn /usr/src/etc/mtree )
+for the root,
+.Pn /usr
+and
+.Pn /var
+filesystems.
+Once a filesystem has been made for
+.Pn /var ,
+.Xr mtree
+can be used to create a directory hierarchy there
+or you can simply use tar to extract the prototype from
+the second file of the distribution tape.
+.Sh 3 "Changes in the \f(CW/etc\fP directory"
+.PP
+The
+.Pn /etc
+directory now contains nearly all the host-specific configuration
+files.
+Note that some file formats have changed,
+and those configuration files containing pathnames are nearly all affected
+by the reorganization.
+See the examples provided in
+.Pn /etc
+(installed from
+.Pn /usr/src/etc )
+as a guide.
+The following table lists some of the local configuration files
+whose locations and/or contents have changed.
+.TS
+l l l
+lfC lfC l.
+\*(Ps and Earlier \*(4B Comments
+_ _ _
+/etc/fstab /etc/fstab new format; see below
+/etc/inetd.conf /etc/inetd.conf pathnames of executables changed
+/etc/printcap /etc/printcap pathnames changed
+/etc/syslog.conf /etc/syslog.conf pathnames of log files changed
+/etc/ttys /etc/ttys pathnames of executables changed
+/etc/passwd /etc/master.passwd new format; see below
+/usr/lib/sendmail.cf /etc/sendmail.cf changed pathnames
+/usr/lib/aliases /etc/aliases may contain changed pathnames
+/etc/*.pid /var/run/*.pid
+
+.T&
+l l l
+lfC lfC l.
+New in \*(Ps-Tahoe \*(4B Comments
+_ _ _
+/usr/games/dm.config /etc/dm.conf configuration for games (see \fIdm\fP\|(8))
+/etc/zoneinfo/localtime /etc/localtime timezone configuration
+/etc/zoneinfo /usr/share/zoneinfo timezone configuration
+.TE
+.ne 1.5i
+.TS
+l l l
+lfC lfC l.
+ New in \*(4B Comments
+_ _ _
+ /etc/aliases.db database version of the aliases file
+ /etc/amd-home location database of home directories
+ /etc/amd-vol location database of exported filesystems
+ /etc/changelist \f(CW/etc/security\fP files to back up
+ /etc/csh.cshrc system-wide csh(1) initialization file
+ /etc/csh.login system-wide csh(1) login file
+ /etc/csh.logout system-wide csh(1) logout file
+ /etc/disklabels directory for saving disklabels
+ /etc/exports NFS list of export permissions
+ /etc/ftpwelcome message displayed for ftp users; see ftpd(8)
+ /etc/man.conf lists directories searched by \fIman\fP\|(1)
+ /etc/mtree directory for local mtree files; see mtree(8)
+ /etc/netgroup NFS group list used in \f(CW/etc/exports\fP
+ /etc/pwd.db non-secure hashed user data base file
+ /etc/spwd.db secure hashed user data base file
+ /etc/security daily system security checker
+.TE
+.PP
+System security changes require adding several new ``well-known'' groups to
+.Pn /etc/group .
+The groups that are needed by the system as distributed are:
+.TS
+l n l.
+name number purpose
+_
+wheel 0 users allowed superuser privilege
+daemon 1 processes that need less than wheel privilege
+kmem 2 read access to kernel memory
+sys 3 access to kernel sources
+tty 4 access to terminals
+operator 5 read access to raw disks
+bin 7 group for system binaries
+news 8 group for news
+wsrc 9 write access to sources
+games 13 access to games
+staff 20 system staff
+guest 31 system guests
+nobody 39 the least privileged group
+utmp 45 access to utmp files
+dialer 117 access to remote ports and dialers
+.TE
+Only users in the ``wheel'' group are permitted to
+.Xr su
+to ``root''.
+Most programs that manage directories in
+.Pn /var/spool
+now run set-group-id to ``daemon'' so that users cannot
+directly access the files in the spool directories.
+The special files that access kernel memory,
+.Pn /dev/kmem
+and
+.Pn /dev/mem ,
+are made readable only by group ``kmem''.
+Standard system programs that require this access are
+made set-group-id to that group.
+The group ``sys'' is intended to control access to kernel sources,
+and other sources belong to group ``wsrc.''
+Rather than make user terminals writable by all users,
+they are now placed in group ``tty'' and made only group writable.
+Programs that should legitimately have access to write on user terminals
+such as
+.Xr talkd
+and
+.Xr write
+now run set-group-id to ``tty''.
+The ``operator'' group controls access to disks.
+By default, disks are readable by group ``operator'',
+so that programs such as
+.Xr dump
+can access the filesystem information without being set-user-id to ``root''.
+The
+.Xr shutdown (8)
+program is executable only by group operator
+and is setuid to root so that members of group operator may shut down
+the system without root access.
+.PP
+The ownership and modes of some directories have changed.
+The
+.Xr at
+programs now run set-user-id ``root'' instead of ``daemon.''
+Also, the uucp directory no longer needs to be publicly writable,
+as
+.Xr tip
+reverts to privileged status to remove its lock files.
+After copying your version of
+.Pn /var/spool ,
+you should do:
+.DS
+\fB#\fP \fIchown \-R root /var/spool/at\fP
+\fB#\fP \fIchown \-R uucp:daemon /var/spool/uucp\fP
+\fB#\fP \fIchmod \-R o\-w /var/spool/uucp\fP
+.DE
+.PP
+The format of the cron table,
+.Pn /etc/crontab ,
+has been changed to specify the user-id that should be used to run a process.
+The userid ``nobody'' is frequently useful for non-privileged programs.
+Local changes are now put in a separate file,
+.Pn /etc/crontab.local .
+.PP
+Some of the commands previously in
+.Pn /etc/rc.local
+have been moved to
+.Pn /etc/rc ;
+several new functions are now handled by
+.Pn /etc/rc ,
+.Pn /etc/netstart
+and
+.Pn /etc/rc.local .
+You should look closely at the prototype version of these files
+and read the manual pages for the commands contained in it
+before trying to merge your local copy.
+Note in particular that
+.Xr ifconfig
+has had many changes,
+and that host names are now fully specified as domain-style names
+(e.g., vangogh.CS.Berkeley.EDU) for the benefit of the name server.
+.PP
+Some of the commands previously in
+.Pn /etc/daily
+have been moved to
+.Pn /etc/security ,
+and several new functions have been added to
+.Pn /etc/security
+to do nightly security checks on the system.
+The script
+.Pn /etc/daily
+runs
+.Pn /etc/security
+each night, and mails the output to the super-user.
+Some of the checks done by
+.Pn /etc/security
+are:
+.DS
+\(bu Syntax errors in the password and group files.
+\(bu Duplicate user and group names and id's.
+\(bu Dangerous search paths and umask values for the superuser.
+\(bu Dangerous values in various initialization files.
+\(bu Dangerous .rhosts files.
+\(bu Dangerous directory and file ownership or permissions.
+\(bu Globally exported filesystems.
+\(bu Dangerous owners or permissions for special devices.
+.DE
+In addition, it reports any changes to setuid and setgid files, special
+devices, or the files in
+.Pn /etc/changelist
+since the last run of
+.Pn /etc/security .
+Backup copies of the files are saved in
+.Pn /var/backups .
+Finally, the system binaries are checksummed and their permissions
+validated against the
+.Xr mtree (8)
+specifications in
+.Pn /etc/mtree .
+.PP
+The C-library and system binaries on the distribution tape
+are compiled with new versions of
+.Xr gethostbyname
+and
+.Xr gethostbyaddr
+that use the name server,
+.Xr named (8).
+If you have only a small network and are not connected
+to a large network, you can use the distributed library routines without
+any problems; they use a linear scan of the host table
+.Pn /etc/hosts
+if the name server is not running.
+If you are on the Internet or have a large local network,
+it is recommend that you set up
+and use the name server.
+For instructions on how to set up the necessary configuration files,
+refer to ``Name Server Operations Guide for BIND'' (SMM:10).
+Several programs rely on the host name returned by
+.Xr gethostname
+to determine the local domain name.
+.PP
+If you are using the name server, your
+.Xr sendmail
+configuration file will need some updates to accommodate it.
+See the ``Sendmail Installation and Operation Guide'' (SMM:8) and
+the sample
+.Xr sendmail
+configuration files in
+.Pn /usr/src/usr.sbin/sendmail/cf .
+The aliases file,
+.Pn /etc/aliases
+has also been changed to add certain well-known addresses.
+.Sh 3 "Shadow password files"
+.PP
+The password file format adds change and expiration fields
+and its location has changed to protect
+the encrypted passwords stored there.
+The actual password file is now stored in
+.Pn /etc/master.passwd .
+The hashed dbm password files do not contain encrypted passwords,
+but contain the file offset to the entry with the password in
+.Pn /etc/master.passwd
+(that is readable only by root).
+Thus, the
+.Fn getpwnam
+and
+.Fn getpwuid
+functions will no longer return an encrypted password string to non-root
+callers.
+An old-style passwd file is created in
+.Pn /etc/passwd
+by the
+.Xr vipw (8)
+and
+.Xr pwd_mkdb (8)
+programs.
+See also
+.Xr passwd (5).
+.PP
+Several new users have also been added to the group of ``well-known'' users in
+.Pn /etc/passwd .
+The current list is:
+.DS
+.TS
+l c.
+name number
+_
+root 0
+daemon 1
+operator 2
+bin 3
+games 7
+uucp 66
+nobody 32767
+.TE
+.DE
+The ``daemon'' user is used for daemon processes that
+do not need root privileges.
+The ``operator'' user-id is used as an account for dumpers
+so that they can log in without having the root password.
+By placing them in the ``operator'' group,
+they can get read access to the disks.
+The ``uucp'' login has existed long before \*(4B,
+and is noted here just to provide a common user-id.
+The password entry ``nobody'' has been added to specify
+the user with least privilege. The ``games'' user is a pseudo-user
+that controls access to game programs.
+.PP
+After installing your updated password file, you must run
+.Xr pwd_mkdb (8)
+to create the password database.
+Note that
+.Xr pwd_mkdb (8)
+is run whenever
+.Xr vipw (8)
+is run.
+.Sh 3 "The \f(CW/var\fP filesystem"
+.PP
+The spooling directories saved on tape may be restored in their
+eventual resting places without too much concern. Be sure to
+use the `\-p' option to
+.Xr tar (1)
+so that files are recreated with the same file modes.
+The following commands provide a guide for copying spool and log files from
+an existing system into a new
+.Pn /var
+filesystem.
+At least the following directories should already exist on
+.Pn /var :
+.Pn output ,
+.Pn log ,
+.Pn backups
+and
+.Pn db .
+.LP
+.DS
+.ft CW
+SRC=/oldroot/usr
+
+cd $SRC; tar cf - msgs preserve | (cd /var && tar xpf -)
+.DE
+.DS
+.ft CW
+# copy $SRC/spool to /var
+cd $SRC/spool
+tar cf - at mail rwho | (cd /var && tar xpf -)
+tar cf - ftp mqueue news secretmail uucp uucppublic | \e
+ (cd /var/spool && tar xpf -)
+.DE
+.DS
+.ft CW
+# everything else in spool is probably a printer area
+mkdir .save
+mv at ftp mail mqueue rwho secretmail uucp uucppublic .save
+tar cf - * | (cd /var/spool/output && tar xpf -)
+mv .save/* .
+rmdir .save
+.DE
+.DS
+.ft CW
+cd /var/spool/mqueue
+mv syslog.7 /var/log/maillog.7
+mv syslog.6 /var/log/maillog.6
+mv syslog.5 /var/log/maillog.5
+mv syslog.4 /var/log/maillog.4
+mv syslog.3 /var/log/maillog.3
+mv syslog.2 /var/log/maillog.2
+mv syslog.1 /var/log/maillog.1
+mv syslog.0 /var/log/maillog.0
+mv syslog /var/log/maillog
+.DE
+.DS
+.ft CW
+# move $SRC/adm to /var
+cd $SRC/adm
+tar cf - . | (cd /var/account && tar xpf -)
+cd /var/account
+rm -f msgbuf
+mv messages messages.[0-9] ../log
+mv wtmp wtmp.[0-9] ../log
+mv lastlog ../log
+.DE
+.Sh 2 "Bug fixes and changes between \*(Ps and \*(4B"
+.PP
+The major new facilities available in the \*(4B release are
+a new virtual memory system,
+the addition of ISO/OSI networking support,
+a new virtual filesystem interface supporting filesystem stacking,
+a freely redistributable implementation of NFS,
+a log-structured filesystem,
+enhancement of the local filesystems to support
+files and filesystems that are up to 2^63 bytes in size,
+enhanced security and system management support,
+and the conversion to and addition of the IEEE Std1003.1 (``POSIX'')
+facilities and many of the IEEE Std1003.2 facilities.
+In addition, many new utilities and additions to the C
+library are present as well.
+The kernel sources have been reorganized to collect all machine-dependent
+files for each architecture under one directory,
+and most of the machine-independent code is now free of code
+conditional on specific machines.
+The user structure and process structure have been reorganized
+to eliminate the statically-mapped user structure and to make most
+of the process resources shareable by multiple processes.
+The system and include files have been converted to be compatible
+with ANSI C, including function prototypes for most of the exported
+functions.
+There are numerous other changes throughout the system.
+.Sh 3 "Changes to the kernel"
+.PP
+This release includes several important structural kernel changes.
+The kernel uses a new internal system call convention;
+the use of global (``u-dot'') variables for parameters and error returns
+has been eliminated,
+and interrupted system calls no longer abort using non-local goto's (longjmp's).
+A new sleep interface separates signal handling from scheduling priority,
+returning characteristic errors to abort or restart the current system call.
+This sleep call also passes a string describing the process state,
+that is used by the ps(1) program.
+The old sleep interface can be used only for non-interruptible sleeps.
+The sleep interface (\fItsleep\fP) can be used at any priority,
+but is only interruptible if the PCATCH flag is set.
+When interrupted, \fItsleep\fP returns EINTR or ERESTART.
+.PP
+Many data structures that were previously statically allocated
+are now allocated dynamically.
+These structures include mount entries, file entries,
+user open file descriptors, the process entries, the vnode table,
+the name cache, and the quota structures.
+.PP
+To protect against indiscriminate reading or writing of kernel
+memory, all writing and most reading of kernel data structures
+must be done using a new ``sysctl'' interface.
+The information to be accessed is described through an extensible
+``Management Information Base'' (MIB) style name,
+described as a dotted set of components.
+A new utility,
+.Xr sysctl (8),
+retrieves kernel state and allows processes with appropriate
+privilege to set kernel state.
+.Sh 3 "Security"
+.PP
+The kernel runs with four different levels of security.
+Any superuser process can raise the security level, but only
+.Fn init (8)
+can lower it.
+Security levels are defined as follows:
+.IP \-1
+Permanently insecure mode \- always run system in level 0 mode.
+.IP " 0"
+Insecure mode \- immutable and append-only flags may be turned off.
+All devices may be read or written subject to their permissions.
+.IP " 1"
+Secure mode \- immutable and append-only flags may not be cleared;
+disks for mounted filesystems,
+.Pn /dev/mem ,
+and
+.Pn /dev/kmem
+are read-only.
+.IP " 2"
+Highly secure mode \- same as secure mode, plus disks are always
+read-only whether mounted or not.
+This level precludes tampering with filesystems by unmounting them,
+but also inhibits running
+.Xr newfs (8)
+while the system is multi-user.
+See
+.Xr chflags (1)
+and the \-\fBo\fP option to
+.Xr ls (1)
+for information on setting and displaying the immutable and append-only
+flags.
+.PP
+Normally, the system runs in level 0 mode while single user
+and in level 1 mode while multiuser.
+If the level 2 mode is desired while running multiuser,
+it can be set in the startup script
+.Pn /etc/rc
+using
+.Xr sysctl (1).
+If it is desired to run the system in level 0 mode while multiuser,
+the administrator must build a kernel with the variable
+.Li securelevel
+in the kernel source file
+.Pn /sys/kern/kern_sysctl.c
+initialized to \-1.
+.Sh 4 "Virtual memory changes"
+.PP
+The new virtual memory implementation is derived from the Mach
+operating system developed at Carnegie-Mellon,
+and was ported to the BSD kernel at the University of Utah.
+It is based on the 2.0 release of Mach
+(with some bug fixes from the 2.5 and 3.0 releases)
+and retains many of its essential features such as
+the separation of the machine dependent and independent layers
+(the ``pmap'' interface),
+efficient memory utilization using copy-on-write
+and other lazy-evaluation techniques,
+and support for large, sparse address spaces.
+It does not include the ``external pager'' interface instead using
+a primitive internal pager interface.
+The Mach virtual memory system call interface has been replaced with the
+``mmap''-based interface described in the ``Berkeley Software
+Architecture Manual'' (see UNIX Programmer's Manual,
+Supplementary Documents, PSD:5).
+The interface is similar to the interfaces shipped
+by several commercial vendors such as Sun, USL, and Convex Computer Corp.
+The integration of the new virtual memory is functionally complete,
+but still has serious performance problems under heavy memory load.
+The internal kernel interfaces have not yet been completed
+and the memory pool and buffer cache have not been merged.
+Some additional caveats:
+.IP \(bu
+Since the code is based on the 2.0 release of Mach,
+bugs and misfeatures of the BSD version should not be considered
+short-comings of the current Mach virtual memory system.
+.IP \(bu
+Because of the disjoint virtual memory (page) and IO (buffer) caches,
+it is possible to see inconsistencies if using both the mmap and
+read/write interfaces on the same file simultaneously.
+.IP \(bu
+Swap space is allocated on-demand rather than up front and no
+allocation checks are performed so it is possible to over-commit
+memory and eventually deadlock.
+.IP \(bu
+The semantics of the
+.Xr vfork (2)
+system call are slightly different.
+The synchronization between parent and child is preserved,
+but the memory sharing aspect is not.
+In practice this has been enough for backward compatibility,
+but newer code should just use
+.Xr fork (2).
+.Sh 4 "Networking additions and changes"
+.PP
+The ISO/OSI Networking consists of a kernel implementation of
+transport class 4 (TP-4),
+connectionless networking protocol (CLNP),
+and 802.3-based link-level support (hardware-compatible with Ethernet\**).
+.FS
+Ethernet is a trademark of the Xerox Corporation.
+.FE
+We also include support for ISO Connection-Oriented Network Service,
+X.25, TP-0.
+The session and presentation layers are provided outside
+the kernel using the ISO Development Environment by Marshall Rose,
+that is available via anonymous FTP
+(but is not included on the distribution tape).
+Included in this development environment are file
+transfer and management (FTAM), virtual terminals (VT),
+a directory services implementation (X.500),
+and miscellaneous other utilities.
+.PP
+Kernel support for the ISO OSI protocols is enabled with the ISO option
+in the kernel configuration file.
+The
+.Xr iso (4)
+manual page describes the protocols and addressing;
+see also
+.Xr clnp (4),
+.Xr tp (4)
+and
+.Xr cltp (4).
+The OSI equivalent to ARP is ESIS (End System to Intermediate System Routing
+Protocol); running this protocol is mandatory, however one can manually add
+translations for machines that do not participate by use of the
+.Xr route (8)
+command.
+Additional information is provided in the manual page describing
+.Xr esis (4).
+.PP
+The command
+.Xr route (8)
+has a new syntax and several new capabilities:
+it can install routes with a specified destination and mask,
+and can change route characteristics such as hop count, packet size
+and window size.
+.PP
+Several important enhancements have been added to the TCP/IP
+protocols including TCP header prediction and
+serial line IP (SLIP) with header compression.
+The routing implementation has been completely rewritten
+to use a hierarchical routing tree with a mask per route
+to support the arbitrary levels of routing found in the ISO protocols.
+The routing table also stores and caches route characteristics
+to speed the adaptation of the throughput and congestion avoidance
+algorithms.
+.PP
+The format of the
+.I sockaddr
+structure (the structure used to describe a generic network address with an
+address family and family-specific data)
+has changed from previous releases,
+as have the address family-specific versions of this structure.
+The
+.I sa_family
+family field has been split into a length,
+.Pn sa_len ,
+and a family,
+.Pn sa_family .
+System calls that pass a
+.I sockaddr
+structure into the kernel (e.g.
+.Fn sendto
+and
+.Fn connect )
+have a separate parameter that specifies the
+.I sockaddr
+length, and thus it is not necessary to fill in the
+.I sa_len
+field for those system calls.
+System calls that pass a
+.I sockaddr
+structure back from the kernel (e.g.
+.Fn recvfrom
+and
+.Fn accept )
+receive a completely filled-in
+.I sockaddr
+structure, thus the length field is valid.
+Because this would not work for old binaries,
+the new library uses a different system call number.
+Thus, most networking programs compiled under \*(4B are incompatible
+with older systems.
+.PP
+Although this change is mostly source and binary compatible
+with old programs, there are three exceptions.
+Programs with statically initialized
+.I sockaddr
+structures
+(usually the Internet form, a
+.I sockaddr_in )
+are not compatible.
+Generally, such programs should be changed to fill in the structure
+at run time, as C allows no way to initialize a structure without
+assuming the order and number of fields.
+Also, programs with use structures to describe a network packet format
+that contain embedded
+.I sockaddr
+structures also require change; a definition of an
+.I osockaddr
+structure is provided for this purpose.
+Finally, programs that use the
+.Sm SIOCGIFCONF
+ioctl to get a complete list of interface addresses
+need to check the
+.I sa_len
+field when iterating through the array of addresses returned,
+as not all the structures returned have the same length
+(this variance in length is nearly guaranteed by the presence of link-layer
+address structures).
+.Sh 4 "Additions and changes to filesystems"
+.PP
+The \*(4B distribution contains most of the interfaces
+specified in the IEEE Std1003.1 system interface standard.
+Filesystem additions include IEEE Std1003.1 FIFOs,
+byte-range file locking, and saved user and group identifiers.
+.PP
+A new virtual filesystem interface has been added to the
+kernel to support multiple filesystems.
+In comparison with other interfaces,
+the Berkeley interface has been structured for more efficient support
+of filesystems that maintain state (such as the local filesystem).
+The interface has been extended with support for stackable
+filesystems done at UCLA.
+These extensions allow for filesystems to be layered on top of each
+other and allow new vnode operations to be added without requiring
+changes to existing filesystem implementations.
+For example,
+the umap filesystem (see
+.Xr mount_umap (8))
+is used to mount a sub-tree of an existing filesystem
+that uses a different set of uids and gids than the local system.
+Such a filesystem could be mounted from a remote site via NFS or it
+could be a filesystem on removable media brought from some foreign
+location that uses a different password file.
+.PP
+Other new filesystems that may be stacked include the loopback filesystem
+.Xr mount_lofs (8),
+the kernel filesystem
+.Xr mount_kernfs (8),
+and the portal filesystem
+.Xr mount_portal (8).
+.PP
+The buffer cache in the kernel is now organized as a file block cache
+rather than a device block cache.
+As a consequence, cached blocks from a file
+and from the corresponding block device would no longer be kept consistent.
+The block device thus has little remaining value.
+Three changes have been made for these reasons:
+.IP 1)
+block devices may not be opened while they are mounted,
+and may not be mounted while open, so that the two versions of cached
+file blocks cannot be created,
+.IP 2)
+filesystem checks of the root now use the raw device
+to access the root filesystem, and
+.IP 3)
+the root filesystem is initially mounted read-only
+so that nothing can be written back to disk during or after change to
+the raw filesystem by
+.Xr fsck .
+.LP
+The root filesystem may be made writable while in single-user mode
+with the command:
+.DS
+.ft CW
+mount \-uw /
+.DE
+The mount command has an option to update the flags on a mounted filesystem,
+including the ability to upgrade a filesystem from read-only to read-write
+or downgrade it from read-write to read-only.
+.PP
+In addition to the local ``fast filesystem'',
+we have added an implementation of the network filesystem (NFS)
+that fully interoperates with the NFS shipped by Sun and its licensees.
+Because our NFS implementation was implemented
+by Rick Macklem of the University of Guelph
+using only the publicly available NFS specification,
+it does not require a license from Sun to use in source or binary form.
+By default it runs over UDP to be compatible with Sun's implementation.
+However, it can be configured on a per-mount basis to run over TCP.
+Using TCP allows it to be used quickly and efficiently through
+gateways and over long-haul networks.
+Using an extended protocol, it supports Leases to allow a limited
+callback mechanism that greatly reduces the network traffic necessary
+to maintain cache consistency between the server and its clients.
+Its use will be familiar to users of other implementations of NFS.
+See the manual pages
+.Xr mount (8),
+.Xr mountd (8),
+.Xr fstab (5),
+.Xr exports (5),
+.Xr netgroup (5),
+.Xr nfsd (8),
+.Xr nfsiod (8),
+and
+.Xr nfssvc (8).
+and the document ``The 4.4BSD NFS Implementation'' (SMM:6)
+for further information.
+The format of
+.Pn /etc/fstab
+has changed from previous \*(Bs releases
+to a blank-separated format to allow colons in pathnames.
+.PP
+A new local filesystem, the log-structured filesystem (LFS),
+has been added to the system.
+It provides near disk-speed output and fast crash recovery.
+This work is based, in part, on the LFS filesystem created
+for the Sprite operating system at Berkeley.
+While the kernel implementation is almost complete,
+only some of the utilities to support the
+filesystem have been written,
+so we do not recommend it for production use.
+See
+.Xr newlfs (8),
+.Xr mount_lfs (8)
+and
+.Xr lfs_cleanerd (8)
+for more information.
+For an in-depth description of the implementation and performance
+characteristics of log-structured filesystems in general,
+and this one in particular, see Dr. Margo Seltzer's doctoral thesis,
+available from the University of California Computer Science Department.
+.PP
+We have also added a memory-based filesystem that runs in
+pageable memory, allowing large temporary filesystems without
+requiring dedicated physical memory.
+.PP
+The local ``fast filesystem'' has been enhanced to do
+clustering that allows large pieces of files to be
+allocated contiguously resulting in near doubling
+of filesystem throughput.
+The filesystem interface has been extended to allow
+files and filesystems to grow to 2^63 bytes in size.
+The quota system has been rewritten to support both
+user and group quotas (simultaneously if desired).
+Quota expiration is based on time rather than
+the previous metric of number of logins over quota.
+This change makes quotas more useful on fileservers
+onto which users seldom login.
+.PP
+The system security has been greatly enhanced by the
+addition of additional file flags that permit a file to be
+marked as immutable or append only.
+Once set, these flags can only be cleared by the super-user
+when the system is running in insecure mode (normally, single-user).
+In addition to the immutable and append-only flags,
+the filesystem supports a new user-settable flag ``nodump''.
+(File flags are set using the
+.Xr chflags (1)
+utility.)
+When set on a file,
+.Xr dump (8)
+will omit the file from incremental backups
+but retain them on full backups.
+See the ``-h'' flag to
+.Xr dump (8)
+for details on how to change this default.
+The ``nodump'' flag is usually set on core dumps,
+system crash dumps, and object files generated by the compiler.
+Note that the flag is not preserved when files are copied
+so that installing an object file will cause it to be preserved.
+.PP
+The filesystem format used in \*(4B has several additions.
+Directory entries have an additional field,
+.Pn d_type ,
+that identifies the type of the entry
+(normally found in the
+.Pn st_mode
+field of the
+.Pn stat
+structure).
+This field is particularly useful for identifying
+directories without the need to use
+.Xr stat (2).
+.PP
+Short (less than sixty byte) symbolic links are now stored
+in the inode itself rather than in a separate data block.
+This saves disk space and makes access of symbolic links faster.
+Short symbolic links are not given a special type,
+so a user-level application is unaware of their special treatment.
+Unlike pre-\*(4B systems, symbolic links do
+not have an owner, group, access mode, times, etc.
+Instead, these attributes are taken from the directory that contains the link.
+The only attributes returned from an
+.Xr lstat (2)
+that refer to the symbolic link itself are the file type (S_IFLNK),
+size, blocks, and link count (always 1).
+.PP
+An implementation of an auto-mounter daemon,
+.Xr amd ,
+was contributed by Jan-Simon Pendry of the
+Imperial College of Science, Technology & Medicine.
+See the document ``AMD \- The 4.4BSD Automounter'' (SMM:13)
+for further information.
+.PP
+The directory
+.Pn /dev/fd
+contains special files
+.Pn 0
+through
+.Pn 63
+that, when opened, duplicate the corresponding file descriptor.
+The names
+.Pn /dev/stdin ,
+.Pn /dev/stdout
+and
+.Pn /dev/stderr
+refer to file descriptors 0, 1 and 2.
+See
+.Xr fd (4)
+and
+.Xr mount_fdesc (8)
+for more information.
+.Sh 4 "POSIX terminal driver changes"
+.PP
+The \*(4B system uses the IEEE P1003.1 (POSIX.1) terminal interface
+rather than the previous \*(Bs terminal interface.
+The terminal driver is similar to the System V terminal driver
+with the addition of the necessary extensions to get the
+functionality previously available in the \*(Ps terminal driver.
+Both the old
+.Xr ioctl
+calls and old options to
+.Xr stty (1)
+are emulated.
+This emulation is expected to be unavailable in many vendors releases,
+so conversion to the new interface is encouraged.
+.PP
+\*(4B also adds the IEEE Std1003.1 job control interface,
+that is similar to the \*(Ps job control interface,
+but adds a security model that was missing in the
+\*(Ps job control implementation.
+A new system call,
+.Fn setsid ,
+creates a job-control session consisting of a single process
+group with one member, the caller, that becomes a session leader.
+Only a session leader may acquire a controlling terminal.
+This is done explicitly via a
+.Sm TIOCSCTTY
+.Fn ioctl
+call, not implicitly by an
+.Fn open
+call.
+The call fails if the terminal is in use.
+Programs that allocate controlling terminals (or pseudo-terminals)
+require change to work in this environment.
+The versions of
+.Xr xterm
+provided in the X11R5 release includes the necessary changes.
+New library routines are available for allocating and initializing
+pseudo-terminals and other terminals as controlling terminal; see
+.Pn /usr/src/lib/libutil/pty.c
+and
+.Pn /usr/src/lib/libutil/login_tty.c .
+.PP
+The POSIX job control model formalizes the previous conventions
+used in setting up a process group.
+Unfortunately, this requires that changes be made in a defined order
+and with some synchronization that were not necessary in the past.
+Older job control shells (csh, ksh) will generally not operate correctly
+with the new system.
+.PP
+Most of the other kernel interfaces have been changed to correspond
+with the POSIX.1 interface, although that work is not complete.
+See the relevant manual pages and the IEEE POSIX standard.
+.Sh 4 "Native operating system compatibility"
+.PP
+Both the HP300 and SPARC ports feature the ability to run binaries
+built for the native operating system (HP-UX or SunOS) by emulating
+their system calls.
+Building an HP300 kernel with the HPUXCOMPAT and COMPAT_OHPUX options
+or a SPARC kernel with the COMPAT_SUNOS option will enable this feature
+(on by default in the generic kernel provided in the root filesystem image).
+Though this native operating system compatibility was provided by the
+developers as needed for their purposes and is by no means complete,
+it is complete enough to run several non-trivial applications including
+those that require HP-UX or SunOS shared libraries.
+For example, the vendor supplied X11 server and windowing environment
+can be used on both the HP300 and SPARC.
+.PP
+It is important to remember that merely copying over a native binary
+and executing it (or executing it directly across NFS) does not imply
+that it will run.
+All but the most trivial of applications are likely to require access
+to auxiliary files that do not exist under \*(4B (e.g.
+.Pn /etc/ld.so.cache )
+or have a slightly different format (e.g.
+.Pn /etc/passwd ).
+However, by using system call tracing and
+through creative use of symlinks,
+many problems can be tracked down and corrected.
+.PP
+The DECstation port also has code for ULTRIX emulation
+(kernel option ULTRIXCOMPAT, not compiled into the generic kernel)
+but it was used primarily for initially bootstrapping the port and
+has not been used since.
+Hence, some work may be required to make it generally useful.
+.Sh 3 "Changes to the utilities"
+.PP
+We have been tracking the IEEE Std1003.2 shell and utility work
+and have included prototypes of many of the proposed utilities
+based on draft 12 of the POSIX.2 Shell and Utilities document.
+Because most of the traditional utilities have been replaced
+with implementations conformant to the POSIX standards,
+you should realize that the utility software may not be as stable,
+reliable or well documented as in traditional Berkeley releases.
+In particular, almost the entire manual suite has been rewritten to
+reflect the POSIX defined interfaces, and in some instances
+it does not correctly reflect the current state of the software.
+It is also worth noting that, in rewriting this software, we have generally
+been rewarded with significant performance improvements.
+Most of the libraries and header files have been converted
+to be compliant with ANSI C.
+The shipped compiler (gcc) is a superset of ANSI C,
+but supports traditional C as a command-line option.
+The system libraries and utilities all compile
+with either ANSI or traditional C.
+.Sh 4 "Make and Makefiles"
+.PP
+This release uses a completely new version of the
+.Xr make
+program derived from the
+.Xr pmake
+program developed by the Sprite project at Berkeley.
+It supports existing makefiles, although certain incorrect makefiles
+may fail.
+The makefiles for the \*(4B sources make extensive use of the new
+facilities, especially conditionals and file inclusion, and are thus
+completely incompatible with older versions of
+.Xr make
+(but nearly all the makefiles are now trivial!).
+The standard include files for
+.Xr make
+are in
+.Pn /usr/share/mk .
+There is a
+.Pn bsd.README
+file in
+.Pn /usr/src/share/mk .
+.PP
+Another global change supported by the new
+.Xr make
+is designed to allow multiple architectures to share a copy of the sources.
+If a subdirectory named
+.Pn obj
+is present in the current directory,
+.Xr make
+descends into that directory and creates all object and other files there.
+We use this by building a directory hierarchy in
+.Pn /var/obj
+that parallels
+.Pn /usr/src .
+We then create the
+.Pn obj
+subdirectories in
+.Pn /usr/src
+as symbolic links to the corresponding directories in
+.Pn /var/obj .
+(This step is automated.
+The command ``make obj'' in
+.Pn /usr/src
+builds both the local symlink and the shadow directory,
+using
+.Pn /usr/obj ,
+that may be a symbolic link, as the root of the shadow tree.
+The use of
+.Pn /usr/obj
+is for historic reasons only, and the system make configuration files in
+.Pn /usr/share/mk
+can trivially be modified to use
+.Pn /var/obj
+instead.)
+We have one
+.Pn /var/obj
+hierarchy on the local system, and another on each
+system that shares the source filesystem.
+All the sources in
+.Pn /usr/src
+except for
+.Pn /usr/src/contrib
+and portions of
+.Pn /usr/src/old
+have been converted to use the new make and
+.Pn obj
+subdirectories;
+this change allows compilation for multiple
+architectures from the same source tree
+(that may be mounted read-only).
+.Sh 4 "Kerberos"
+.PP
+The Kerberos authentication system designed by MIT (version 5)
+is included in this release.
+See
+.Xr kerberos (8)
+for a general introduction.
+Pluggable Authentication Modules (PAM) can use Kerberos
+at the system administrator's discretion.
+If it is configured,
+apps such as
+.Xr login (1),
+.Xr passwd (1),
+.Xr ftp (1)
+and
+.Xr ssh (1)
+can use it automatically.
+The file
+Each system needs the file
+.Pn /etc/krb5.conf
+to set its realm and local servers,
+and a private key stored in
+.Pn /etc/krb5.keytab
+(see
+.Xr ktutil (8)).
+The Kerberos server should be set up on a single,
+physically secure,
+server machine.
+Users and hosts may be added and modified with
+.Xr kadmin (8).
+.PP
+Note that the password-changing program
+.Xr passwd (1)
+can change the Kerberos password,
+if configured by the administrator using PAM.
+The
+.Li \-l
+option to
+.Xr passwd (1)
+changes the ``local'' password if one exists.
+.Sh 4 "Timezone support"
+.PP
+The timezone conversion code in the C library uses data files installed in
+.Pn /usr/share/zoneinfo
+to convert from ``GMT'' to various timezones. The data file for the default
+timezone for the system should be copied to
+.Pn /etc/localtime .
+Other timezones can be selected by setting the TZ environment variable.
+.PP
+The data files initially installed in
+.Pn /usr/share/zoneinfo
+include corrections for leap seconds since the beginning of 1970.
+Thus, they assume that the
+kernel will increment the time at a constant rate during a leap second;
+that is, time just keeps on ticking. The conversion routines will then
+name a leap second 23:59:60. For purists, this effectively means that
+the kernel maintains TAI (International Atomic Time) rather than UTC
+(Coordinated Universal Time, aka GMT).
+.PP
+For systems that run current NTP (Network Time Protocol) implementations
+or that wish to conform to the letter of the POSIX.1 law, it is possible
+to rebuild the timezone data files so that leap seconds are not counted.
+(NTP causes the time to jump over a leap second, and POSIX effectively
+requires the clock to be reset by hand when a leap second occurs.
+In this mode, the kernel effectively runs UTC rather than TAI.)
+.PP
+The data files without leap second information
+are constructed from the source directory,
+.Pn /usr/src/share/zoneinfo .
+Change the variable REDO in Makefile
+from ``right'' to ``posix'', and then do
+.DS
+make obj (if necessary)
+make
+make install
+.DE
+.PP
+You will then need to copy the correct default zone file to
+.Pn /etc/localtime ,
+as the old one would still have used leap seconds, and because the Makefile
+installs a default
+.Pn /etc/localtime
+each time ``make install'' is done.
+.PP
+It is possible to install both sets of timezone data files. This results
+in subdirectories
+.Pn /usr/share/zoneinfo/right
+and
+.Pn /usr/share/zoneinfo/posix .
+Each contain a complete set of zone files.
+See
+.Pn /usr/src/share/zoneinfo/Makefile
+for details.
+.Sh 4 "Additions and changes to the libraries"
+.PP
+Notable additions to the libraries include functions to traverse a
+filesystem hierarchy, database interfaces to btree and hashing functions,
+a new, faster implementation of stdio and a radix and merge sort
+functions.
+.PP
+The
+.Xr fts (3)
+functions will do either physical or logical traversal of
+a file hierarchy as well as handle essentially infinite depth
+filesystems and filesystems with cycles.
+All the utilities in \*(4B which traverse file hierarchies
+have been converted to use
+.Xr fts (3).
+The conversion has always resulted in a significant performance
+gain, often of four or five to one in system time.
+.PP
+The
+.Xr dbopen (3)
+functions are intended to be a family of database access methods.
+Currently, they consist of
+.Xr hash (3),
+an extensible, dynamic hashing scheme,
+.Xr btree (3),
+a sorted, balanced tree structure (B+tree's), and
+.Xr recno (3),
+a flat-file interface for fixed or variable length records
+referenced by logical record number.
+Each of the access methods stores associated key/data pairs and
+uses the same record oriented interface for access.
+.PP
+The
+.Xr qsort (3)
+function has been rewritten for additional performance.
+In addition, three new types of sorting functions,
+.Xr heapsort (3),
+.Xr mergesort (3)
+and
+.Xr radixsort (3)
+have been added to the system.
+The
+.Xr mergesort
+function is optimized for data with pre-existing order,
+in which case it usually significantly outperforms
+.Xr qsort .
+The
+.Xr radixsort (3)
+functions are variants of most-significant-byte radix sorting.
+They take time linear to the number of bytes to be
+sorted, usually significantly outperforming
+.Xr qsort
+on data that can be sorted in this fashion.
+An implementation of the POSIX 1003.2 standard
+.Xr sort (1),
+based on
+.Xr radixsort ,
+is included in
+.Pn /usr/src/contrib/sort .
+.PP
+Some additional comments about the \*(4B C library:
+.IP \(bu
+The floating point support in the C library has been replaced
+and is now accurate.
+.IP \(bu
+The C functions specified by both ANSI C, POSIX 1003.1 and
+1003.2 are now part of the C library.
+This includes support for file name matching, shell globbing
+and both basic and extended regular expressions.
+.IP \(bu
+ANSI C multibyte and wide character support has been integrated.
+The rune functionality from the Bell Labs' Plan 9 system is provided
+as well.
+.IP \(bu
+The
+.Xr termcap (3)
+functions have been generalized and replaced with a general
+purpose interface named
+.Xr getcap (3).
+.IP \(bu
+The
+.Xr stdio (3)
+routines have been replaced, and are usually much faster.
+In addition, the
+.Xr funopen (3)
+interface permits applications to provide their own I/O stream
+function support.
+.PP
+The
+.Xr curses (3)
+library has been largely rewritten.
+Important additional features include support for scrolling and
+.Xr termios (3).
+.PP
+An application front-end editing library, named libedit, has been
+added to the system.
+.PP
+A superset implementation of the SunOS kernel memory interface library,
+libkvm, has been integrated into the system.
+.PP
+.Sh 4 "Additions and changes to other utilities"
+.PP
+There are many new utilities, offering many new capabilities,
+in \*(4B.
+Skimming through the section 1 and section 8 manual pages is sure
+to be useful.
+The additions to the utility suite include greatly enhanced versions of
+programs that display system status information, implementations of
+various traditional tools described in the IEEE Std1003.2 standard,
+new tools not previous available on Berkeley UNIX systems,
+and many others.
+Also, with only a very few exceptions, all the utilities from
+\*(Ps that included proprietary source code have been replaced,
+and their \*(4B counterparts are freely redistributable.
+Normally, this replacement resulted in significant performance
+improvements and the increase of the limits imposed on data by
+the utility as well.
+.PP
+A summary of specific additions and changes are as follows:
+.TS
+lfC l.
+amd An auto-mounter implementation.
+ar Replacement of the historic archive format with a new one.
+awk Replaced by gawk; see /usr/src/old/awk for the historic version.
+bdes Utility implementing DES modes of operation described in FIPS PUB 81.
+calendar Addition of an interface for system calendars.
+cap_mkdb Utility for building hashed versions of termcap style databases.
+cc Replacement of pcc with gcc suite.
+chflags A utility for setting the per-file user and system flags.
+chfn An editor based replacement for changing user information.
+chpass An editor based replacement for changing user information.
+chsh An editor based replacement for changing user information.
+cksum The POSIX 1003.2 checksum utility; compatible with sum.
+column A columnar text formatting utility.
+cp POSIX 1003.2 compatible, able to copy special files.
+csh Freely redistributable and 8-bit clean.
+date User specified formats added.
+dd New EBCDIC conversion tables, major performance improvements.
+dev_mkdb Hashed interface to devices.
+dm Dungeon master.
+find Several new options and primaries, major performance improvements.
+fstat Utility displaying information on files open on the system.
+ftpd Connection logging added.
+hexdump A binary dump utility, superseding od.
+id The POSIX 1003.2 user identification utility.
+inetd Tcpmux added.
+jot A text formatting utility.
+kdump A system-call tracing facility.
+ktrace A system-call tracing facility.
+kvm_mkdb Hashed interface to the kernel name list.
+lam A text formatting utility.
+lex A new, freely redistributable, significantly faster version.
+locate A database of the system files, by name, constructed weekly.
+logname The POSIX 1003.2 user identification utility.
+mail.local New local mail delivery agent, replacing mail.
+make Replaced with a new, more powerful make, supporting include files.
+man Added support for man page location configuration.
+mkdep A new utility for generating make dependency lists.
+mkfifo The POSIX 1003.2 FIFO creation utility.
+mtree A new utility for mapping file hierarchies to a file.
+nfsstat An NFS statistics utility.
+nvi A freely redistributable replacement for the ex/vi editors.
+pax The POSIX 1003.2 replacement for cpio and tar.
+printf The POSIX 1003.2 replacement for echo.
+roff Replaced by groff; see /usr/src/old/roff for the historic versions.
+rs New utility for text formatting.
+shar An archive building utility.
+sysctl MIB-style interface to system state.
+tcopy Fast tape-to-tape copying and verification.
+touch Time and file reference specifications.
+tput The POSIX 1003.2 terminal display utility.
+tr Addition of character classes.
+uname The POSIX 1003.2 system identification utility.
+vis A filter for converting and displaying non-printable characters.
+xargs The POSIX 1003.2 argument list constructor utility.
+yacc A new, freely redistributable, significantly faster version.
+.TE
+.PP
+The new versions of
+.Xr lex (1)
+(``flex'') and
+.Xr yacc (1)
+(``zoo'') should be installed early on if attempting to
+cross-compile \*(4B on another system.
+Note that the new
+.Xr lex
+program is not completely backward compatible with historic versions of
+.Xr lex ,
+although it is believed that all documented features are supported.
+.PP
+The
+.Xr find
+utility has two new options that are important to be aware of if you
+intend to use NFS.
+The ``fstype'' and ``prune'' options can be used together to prevent
+find from crossing NFS mount points.
+See
+.Pn /etc/daily
+for an example of their use.
+.Sh 2 "Hints on converting from \*(Ps to \*(4B"
+.PP
+This section summarizes changes between
+\*(Ps and \*(4B that are likely to
+cause difficulty in doing the conversion.
+It does not include changes in the network;
+see section 5 for information on setting up the network.
+.PP
+Since the stat st_size field is now 64-bits instead of 32,
+doing something like:
+.DS
+.ft CW
+foo(st.st_size);
+.DE
+and then (improperly) defining foo with an ``int'' or ``long'' parameter:
+.DS
+.ft CW
+foo(size)
+ int size;
+{
+ ...
+}
+.DE
+will fail miserably (well, it might work on a little endian machine).
+This problem showed up in
+.Xr emacs (1)
+as well as several other programs.
+A related problem is improperly casting (or failing to cast)
+the second argument to
+.Xr lseek (2),
+.Xr truncate (2),
+or
+.Xr ftruncate (2)
+ala:
+.DS
+.ft CW
+lseek(fd, (long)off, 0);
+.DE
+or
+.DS
+.ft CW
+lseek(fd, 0, 0);
+.DE
+The best solution is to include
+.Pn <unistd.h>
+which has prototypes that catch these types of errors.
+.PP
+Determining the ``namelen'' parameter for a
+.Xr connect (2)
+call on a unix domain socket should use the ``SUN_LEN'' macro from
+.Pn <sys/un.h> .
+One old way that was used:
+.DS
+.ft CW
+addrlen = strlen(unaddr.sun_path) + sizeof(unaddr.sun_family);
+.DE
+no longer works as there is an additional
+.Pn sun_len
+field.
+.PP
+The kernel's limit on the number of open files has been
+increased from 20 to 64.
+It is now possible to change this limit almost arbitrarily.
+The standard I/O library
+autoconfigures to the kernel limit.
+Note that file (``_iob'') entries may be allocated by
+.Xr malloc
+from
+.Xr fopen ;
+this allocation has been known to cause problems with programs
+that use their own memory allocators.
+Memory allocation does not occur until after 20 files have been opened
+by the standard I/O library.
+.PP
+.Xr Select
+can be used with more than 32 descriptors
+by using arrays of \fBint\fPs for the bit fields rather than single \fBint\fPs.
+Programs that used
+.Xr getdtablesize
+as their first argument to
+.Xr select
+will no longer work correctly.
+Usually the program can be modified to correctly specify the number
+of bits in an \fBint\fP.
+Alternatively the program can be modified to use an array of \fBint\fPs.
+There are a set of macros available in
+.Pn <sys/types.h>
+to simplify this.
+See
+.Xr select (2).
+.PP
+Old core files will not be intelligible by the current debuggers
+because of numerous changes to the user structure
+and because the kernel stack has been enlarged.
+The
+.Xr a.out
+header that was in the user structure is no longer present.
+Locally-written debuggers that try to check the magic number
+will need to be changed.
+.PP
+Files may not be deleted from directories having the ``sticky'' (ISVTX) bit
+set in their modes
+except by the owner of the file or of the directory, or by the superuser.
+This is primarily to protect users' files in publicly-writable directories
+such as
+.Pn /tmp
+and
+.Pn /var/tmp .
+All publicly-writable directories should have their ``sticky'' bits set
+with ``chmod +t.''
+.PP
+The following two sections contain additional notes about
+changes in \*(4B that affect the installation of local files;
+be sure to read them as well.
diff --git a/share/doc/smm/01.setup/4.t b/share/doc/smm/01.setup/4.t
new file mode 100644
index 0000000..d26dac7
--- /dev/null
+++ b/share/doc/smm/01.setup/4.t
@@ -0,0 +1,713 @@
+.\" Copyright (c) 1980, 1986, 1988 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)4.t 8.1 (Berkeley) 7/29/93
+.\"
+.ds LH "Installing/Operating \*(4B
+.ds CF \*(Dy
+.ds RH "System setup
+.Sh 1 "System setup"
+.PP
+This section describes procedures used to set up a \*(4B UNIX system.
+These procedures are used when a system is first installed
+or when the system configuration changes. Procedures for normal
+system operation are described in the next section.
+.Sh 2 "Kernel configuration"
+.PP
+This section briefly describes the layout of the kernel code and
+how files for devices are made.
+For a full discussion of configuring
+and building system images, consult the document ``Building
+4.3BSD UNIX Systems with Config'' (SMM:2).
+.Sh 3 "Kernel organization"
+.PP
+As distributed, the kernel source is in a
+separate tar image. The source may be physically
+located anywhere within any filesystem so long as
+a symbolic link to the location is created for the file
+.Pn /sys
+(many files in
+.Pn /usr/include
+are normally symbolic links relative to
+.Pn /sys ).
+In further discussions of the system source all path names
+will be given relative to
+.Pn /sys .
+.LP
+The kernel is made up of several large generic parts:
+.TS
+l l l.
+sys main kernel header files
+kern kernel functions broken down as follows
+ init system startup, syscall dispatching, entry points
+ kern scheduling, descriptor handling and generic I/O
+ sys process management, signals
+ tty terminal handling and job control
+ vfs filesystem management
+ uipc interprocess communication (sockets)
+ subr miscellaneous support routines
+vm virtual memory management
+ufs local filesystems broken down as follows
+ ufs common local filesystem routines
+ ffs fast filesystem
+ lfs log-based filesystem
+ mfs memory based filesystem
+nfs Sun-compatible network filesystem
+miscfs miscellaneous filesystems broken down as follows
+ deadfs where rejected vnodes go to die
+ fdesc access to per-process file descriptors
+ fifofs IEEE Std1003.1 FIFOs
+ kernfs filesystem access to kernel data structures
+ lofs loopback filesystem
+ nullfs another loopback filesystem
+ portal associate processes with filesystem locations
+ specfs device special files
+ umapfs provide alternate uid/gid mappings
+dev generic device drivers (SCSI, vnode, concatenated disk)
+.TE
+.LP
+The networking code is organized by protocol
+.TS
+l l.
+net routing and generic interface drivers
+netinet Internet protocols (TCP, UDP, IP, etc)
+netiso ISO protocols (TP-4, CLNP, CLTP, etc)
+netns Xerox network systems protocols (IDP, SPP, etc)
+netx25 CCITT X.25 protocols (X.25 Packet Level, HDLC/LAPB)
+.TE
+.LP
+A separate subdirectory is provided for each machine architecture
+.TS
+l l.
+hp300 HP 9000/300 series of Motorola 68000-based machines
+hp code common to both HP 68k and (non-existent) PA-RISC ports
+i386 Intel 386/486-based PC machines
+luna68k Omron 68000-based workstations
+news3400 Sony News MIPS-based workstations
+pmax Digital 3100/5000 MIPS-based workstations
+sparc Sun Microsystems SPARCstation 1, 1+, and 2
+tahoe (deprecated) CCI Power 6-series machines
+vax (deprecated) Digital VAX machines
+.TE
+.LP
+Each machine directory is subdivided by function;
+for example the hp300 directory contains
+.TS
+l l.
+include exported machine-dependent header files
+hp300 machine-dependent support code and private header files
+dev device drivers
+conf configuration files
+stand machine-dependent standalone code
+.TE
+.LP
+Other kernel related directories
+.TS
+l l.
+compile area to compile kernels
+conf machine-independent configuration files
+stand machine-independent standalone code
+.TE
+.Sh 3 "Devices and device drivers"
+.PP
+Devices supported by UNIX are implemented in the kernel
+by drivers whose source is kept in
+.Pn /sys/<architecture>/dev .
+These drivers are loaded
+into the system when included in a cpu specific configuration file
+kept in the conf directory. Devices are accessed through special
+files in the filesystem, made by the
+.Xr mknod (8)
+program and normally kept in the
+.Pn /dev
+directory.
+For all the devices supported by the distribution system, the
+files in
+.Pn /dev
+are created by the
+.Pn /dev/MAKEDEV
+shell script.
+.PP
+Determine the set of devices that you have and create a new
+.Pn /dev
+directory by running the MAKEDEV script.
+First create a new directory
+.Pn /newdev ,
+copy MAKEDEV into it, edit the file MAKEDEV.local
+to provide an entry for local needs,
+and run it to generate a
+.Pn /newdev directory.
+For instance,
+.DS
+\fB#\fP \fIcd /\fP
+\fB#\fP \fImkdir newdev\fP
+\fB#\fP \fIcp dev/MAKEDEV newdev/MAKEDEV\fP
+\fB#\fP \fIcd newdev\fP
+\fB#\fP \fIMAKEDEV \*(Dk0 pt0 std LOCAL\fP
+.DE
+Note the ``std'' argument causes standard devices such as
+.Pn /dev/console ,
+the machine console, to be created.
+.PP
+You can then do
+.DS
+\fB#\fP \fIcd /\fP
+\fB#\fP \fImv dev olddev ; mv newdev dev\fP
+\fB#\fP \fIsync\fP
+.DE
+to install the new device directory.
+.Sh 3 "Building new system images"
+.PP
+The kernel configuration of each UNIX system is described by
+a single configuration file, stored in the
+.Pn /sys/<architecture>/conf
+directory.
+To learn about the format of this file and the procedure used
+to build system images,
+start by reading ``Building 4.3BSD UNIX Systems with Config'' (SMM:2),
+look at the manual pages in section 4
+of the UNIX manual for the devices you have,
+and look at the sample configuration files in the
+.Pn /sys/<architecture>/conf
+directory.
+.PP
+The configured system image
+.Pn kernel
+should be copied to the root, and then booted to try it out.
+It is best to name it
+.Pn /newkernel
+so as not to destroy the working system until you are sure it does work:
+.DS
+\fB#\fP \fIcp kernel /newkernel\fP
+\fB#\fP \fIsync\fP
+.DE
+It is also a good idea to keep the previous system around under some other
+name. In particular, we recommend that you save the generic distribution
+version of the system permanently as
+.Pn /genkernel
+for use in emergencies.
+To boot the new version of the system you should follow the
+bootstrap procedures outlined in section 6.1.
+After having booted and tested the new system, it should be installed as
+.Pn /kernel
+before going into multiuser operation.
+A systematic scheme for numbering and saving old versions
+of the system may be useful.
+.Sh 2 "Configuring terminals"
+.PP
+If UNIX is to support simultaneous
+access from directly-connected terminals other than the console,
+the file
+.Pn /etc/ttys
+(see
+.Xr ttys (5))
+must be edited.
+.PP
+To add a new terminal device, be sure the device is configured into the system
+and that the special files for the device have been made by
+.Pn /dev/MAKEDEV .
+Then, enable the appropriate lines of
+.Pn /etc/ttys
+by setting the ``status''
+field to \fBon\fP (or add new lines).
+Note that lines in
+.Pn /etc/ttys
+are one-for-one with entries in the file of current users
+(see
+.Pn /var/run/utmp ),
+and therefore it is best to make changes
+while running in single-user mode
+and to add all the entries for a new device at once.
+.PP
+Each line in the
+.Pn /etc/ttys
+file is broken into four tab separated
+fields (comments are shown by a `#' character and extend to
+the end of the line). For each terminal line the four fields
+are:
+the device (without a leading
+.Pn /dev ),
+the program
+.Pn /sbin/init
+should startup to service the line
+(or \fBnone\fP if the line is to be left alone),
+the terminal type (found in
+.Pn /usr/share/misc/termcap ),
+and optional status information describing if the terminal is
+enabled or not and if it is ``secure'' (i.e. the super user should
+be allowed to login on the line).
+If the console is marked as ``insecure'',
+then the root password is required to bring the machine up single-user.
+All fields are character strings
+with entries requiring embedded white space enclosed in double
+quotes.
+Thus a newly added terminal
+.Pn /dev/tty00
+could be added as
+.DS
+tty00 "/usr/libexec/getty std.9600" vt100 on secure # mike's office
+.DE
+The std.9600 parameter provided to
+.Pn /usr/libexec/getty
+is used in searching the file
+.Pn /etc/gettytab ;
+it specifies a terminal's characteristics (such as baud rate).
+To make custom terminal types, consult
+.Xr gettytab (5)
+before modifying
+.Pn /etc/gettytab .
+.PP
+Dialup terminals should be wired so that carrier is asserted only when the
+phone line is dialed up.
+For non-dialup terminals, from which modem control is not available,
+you must wire back the signals so that
+the carrier appears to always be present. For further details,
+find your terminal driver in section 4 of the manual.
+.PP
+For network terminals (i.e. pseudo terminals), no program should
+be started up on the lines. Thus, the normal entry in
+.Pn /etc/ttys
+would look like
+.DS
+ttyp0 none network
+.DE
+(Note, the fourth field is not needed here.)
+.PP
+When the system is running multi-user, all terminals that are listed in
+.Pn /etc/ttys
+as \fBon\fP have their line enabled.
+If, during normal operations, you wish
+to disable a terminal line, you can edit the file
+.Pn /etc/ttys
+to change the terminal's status to \fBoff\fP and
+then send a hangup signal to the
+.Xr init
+process, by doing
+.DS
+\fB#\fP \fIkill \-1 1\fP
+.DE
+Terminals can similarly be enabled by changing the status field
+from \fBoff\fP to \fBon\fP and sending a hangup signal to
+.Xr init .
+.PP
+Note that if a special file is inaccessible when
+.Xr init
+tries to create a process for it,
+.Xr init
+will log a message to the
+system error logging process (see
+.Xr syslogd (8))
+and try to reopen the terminal every minute, reprinting the warning
+message every 10 minutes. Messages of this sort are normally
+printed on the console, though other actions may occur depending
+on the configuration information found in
+.Pn /etc/syslog.conf .
+.PP
+Finally note that you should change the names of any dialup
+terminals to ttyd?
+where ? is in [0-9a-zA-Z], as some programs use this property of the
+names to determine if a terminal is a dialup.
+Shell commands to do this should be put in the
+.Pn /dev/MAKEDEV.local
+script.
+.PP
+While it is possible to use truly arbitrary strings for terminal names,
+the accounting and noticeably the
+.Xr ps (1)
+command make good use of the convention that tty names
+(by default, and also after dialups are named as suggested above)
+are distinct in the last 2 characters.
+Change this and you may be sorry later, as the heuristic
+.Xr ps (1)
+uses based on these conventions will then break down and
+.Xr ps
+will run MUCH slower.
+.Sh 2 "Adding users"
+.PP
+The procedure for adding a new user is described in
+.Xr adduser (8).
+You should add accounts for the initial user community, giving
+each a directory and a password, and putting users who will wish
+to share software in the same groups.
+.PP
+Several guest accounts have been provided on the distribution
+system; these accounts are for people at Berkeley,
+Bell Laboratories, and others
+who have done major work on UNIX in the past. You can delete these accounts,
+or leave them on the system if you expect that these people would have
+occasion to login as guests on your system.
+.Sh 2 "Site tailoring"
+.PP
+All programs that require the site's name, or some similar
+characteristic, obtain the information through system calls
+or from files located in
+.Pn /etc .
+Aside from parts of the
+system related to the network, to tailor the system to your
+site you must simply select a site name, then edit the file
+.DS
+/etc/netstart
+.DE
+The first lines in
+.Pn /etc/netstart
+use a variable to set the hostname,
+.DS
+hostname=\fImysitename\fP
+/bin/hostname $hostname
+.DE
+to define the value returned by the
+.Xr gethostname (2)
+system call. If you are running the name server, your site
+name should be your fully qualified domain name. Programs such as
+.Xr getty (8),
+.Xr mail (1),
+.Xr wall (1),
+and
+.Xr uucp (1)
+use this system call so that the binary images are site
+independent.
+.PP
+You will also need to edit
+.Pn /etc/netstart
+to do the network interface initialization using
+.Xr ifconfig (8).
+If you are not sure how to do this, see sections 5.1, 5.2, and 5.3.
+If you are not running a routing daemon and have
+more than one Ethernet in your environment
+you will need to set up a default route;
+see section 5.4 for details.
+Before bringing your system up multiuser,
+you should ensure that the networking is properly configured.
+The network is started by running
+.Pn /etc/netstart .
+Once started, you should test connectivity using
+.Xr ping (8).
+You should first test connectivity to yourself,
+then another host on your Ethernet,
+and finally a host on another Ethernet.
+The
+.Xr netstat (8)
+program can be used to inspect and debug
+your routes; see section 5.4.
+.Sh 2 "Setting up the line printer system"
+.PP
+The line printer system consists of at least
+the following files and commands:
+.DS
+.TS
+l l.
+/usr/bin/lpq spooling queue examination program
+/usr/bin/lprm program to delete jobs from a queue
+/usr/bin/lpr program to enter a job in a printer queue
+/etc/printcap printer configuration and capability database
+/usr/sbin/lpd line printer daemon, scans spooling queues
+/usr/sbin/lpc line printer control program
+/etc/hosts.lpd list of host allowed to use the printers
+.TE
+.DE
+.PP
+The file
+.Pn /etc/printcap
+is a master database describing line
+printers directly attached to a machine and, also, printers
+accessible across a network. The manual page
+.Xr printcap (5)
+describes the format of this database and also
+shows the default values for such things as the directory
+in which spooling is performed. The line printer system handles
+multiple printers, multiple spooling queues, local and remote
+printers, and also printers attached via serial lines that require
+line initialization such as the baud rate. Raster output devices
+such as a Varian or Versatec, and laser printers such as an Imagen,
+are also supported by the line printer system.
+.PP
+Remote spooling via the network is handled with two spooling
+queues, one on the local machine and one on the remote machine.
+When a remote printer job is started with
+.Xr lpr ,
+the job is queued locally and a daemon process created to oversee the
+transfer of the job to the remote machine. If the destination
+machine is unreachable, the job will remain queued until it is
+possible to transfer the files to the spooling queue on the
+remote machine. The
+.Xr lpq
+program shows the contents of spool
+queues on both the local and remote machines.
+.PP
+To configure your line printers, consult the printcap manual page
+and the accompanying document, ``4.3BSD Line Printer Spooler Manual'' (SMM:7).
+A call to the
+.Xr lpd
+program should be present in
+.Pn /etc/rc .
+.Sh 2 "Setting up the mail system"
+.PP
+The mail system consists of the following commands:
+.DS
+.TS
+l l.
+/usr/bin/mail UCB mail program, described in \fImail\fP\|(1)
+/usr/sbin/sendmail mail routing program
+/var/spool/mail mail spooling directory
+/var/spool/secretmail secure mail directory
+/usr/bin/xsend secure mail sender
+/usr/bin/xget secure mail receiver
+/etc/aliases mail forwarding information
+/usr/bin/newaliases command to rebuild binary forwarding database
+/usr/bin/biff mail notification enabler
+/usr/libexec/comsat mail notification daemon
+.TE
+.DE
+Mail is normally sent and received using the
+.Xr mail (1)
+command (found in
+.Pn /usr/bin/mail ),
+which provides a front-end to edit the messages sent
+and received, and passes the messages to
+.Xr sendmail (8)
+for routing.
+The routing algorithm uses knowledge of the network name syntax,
+aliasing and forwarding information, and network topology, as
+defined in the configuration file
+.Pn /usr/lib/sendmail.cf ,
+to process each piece of mail.
+Local mail is delivered by giving it to the program
+.Pn /usr/libexec/mail.local
+that adds it to the mailboxes in the directory
+.Pn /var/spool/mail/<username> ,
+using a locking protocol to avoid problems with simultaneous updates.
+After the mail is delivered, the local mail delivery daemon
+.Pn /usr/libexec/comsat
+is notified, which in turn notifies users who have issued a
+``\fIbiff\fP y'' command that mail has arrived.
+.PP
+Mail queued in the directory
+.Pn /var/spool/mail
+is normally readable only by the recipient.
+To send mail that is secure against perusal
+(except by a code-breaker) you should use the secret mail facility,
+which encrypts the mail.
+.PP
+To set up the mail facility you should read the instructions in the
+file READ_ME in the directory
+.Pn /usr/src/usr.sbin/sendmail
+and then adjust the necessary configuration files.
+You should also set up the file
+.Pn /etc/aliases
+for your installation, creating mail groups as appropriate.
+For more informations see
+``Sendmail Installation and Operation Guide'' (SMM:8) and
+``Sendmail \- An Internetwork Mail Router'' (SMM:9).
+.Sh 3 "Setting up a UUCP connection"
+.LP
+The version of
+.Xr uucp
+included in \*(4B has the following features:
+.IP \(bu 3
+support for many auto call units and dialers
+in addition to the DEC DN11,
+.IP \(bu 3
+breakup of the spooling area into multiple subdirectories,
+.IP \(bu 3
+addition of an
+.Pn L.cmds
+file to control the set
+of commands that may be executed by a remote site,
+.IP \(bu 3
+enhanced ``expect-send'' sequence capabilities when
+logging in to a remote site,
+.IP \(bu 3
+new commands to be used in polling sites and
+obtaining snap shots of
+.Xr uucp
+activity,
+.IP \(bu 3
+additional protocols for different communication media.
+.LP
+This section gives a brief overview of
+.Xr uucp
+and points out the most important steps in its installation.
+.PP
+To connect two UNIX machines with a
+.Xr uucp
+network link using modems,
+one site must have an automatic call unit
+and the other must have a dialup port.
+It is better if both sites have both.
+.PP
+You should first read the paper in the UNIX System Manager's Manual:
+``Uucp Implementation Description'' (SMM:14).
+It describes in detail the file formats and conventions,
+and will give you a little context.
+In addition,
+the document ``setup.tblms'',
+located in the directory
+.Pn /usr/src/usr.bin/uucp/UUAIDS ,
+may be of use in tailoring the software to your needs.
+.PP
+The
+.Xr uucp
+support is located in three major directories:
+.Pn /usr/bin,
+.Pn /usr/lib/uucp,
+and
+.Pn /var/spool/uucp .
+User commands are kept in
+.Pn /usr/bin,
+operational commands in
+.Pn /usr/lib/uucp ,
+and
+.Pn /var/spool/uucp
+is used as a spooling area.
+The commands in
+.Pn /usr/bin
+are:
+.DS
+.TS
+l l.
+/usr/bin/uucp file-copy command
+/usr/bin/uux remote execution command
+/usr/bin/uusend binary file transfer using mail
+/usr/bin/uuencode binary file encoder (for \fIuusend\fP)
+/usr/bin/uudecode binary file decoder (for \fIuusend\fP)
+/usr/bin/uulog scans session log files
+/usr/bin/uusnap gives a snap-shot of \fIuucp\fP activity
+/usr/bin/uupoll polls remote system until an answer is received
+/usr/bin/uuname prints a list of known uucp hosts
+/usr/bin/uuq gives information about the queue
+.TE
+.DE
+The important files and commands in
+.Pn /usr/lib/uucp
+are:
+.DS
+.TS
+l l.
+/usr/lib/uucp/L-devices list of dialers and hard-wired lines
+/usr/lib/uucp/L-dialcodes dialcode abbreviations
+/usr/lib/uucp/L.aliases hostname aliases
+/usr/lib/uucp/L.cmds commands remote sites may execute
+/usr/lib/uucp/L.sys systems to communicate with, how to connect, and when
+/usr/lib/uucp/SEQF sequence numbering control file
+/usr/lib/uucp/USERFILE remote site pathname access specifications
+/usr/lib/uucp/uucico \fIuucp\fP protocol daemon
+/usr/lib/uucp/uuclean cleans up garbage files in spool area
+/usr/lib/uucp/uuxqt \fIuucp\fP remote execution server
+.TE
+.DE
+while the spooling area contains the following important files and directories:
+.DS
+.TS
+l l.
+/var/spool/uucp/C. directory for command, ``C.'' files
+/var/spool/uucp/D. directory for data, ``D.'', files
+/var/spool/uucp/X. directory for command execution, ``X.'', files
+/var/spool/uucp/D.\fImachine\fP directory for local ``D.'' files
+/var/spool/uucp/D.\fImachine\fPX directory for local ``X.'' files
+/var/spool/uucp/TM. directory for temporary, ``TM.'', files
+/var/spool/uucp/LOGFILE log file of \fIuucp\fP activity
+/var/spool/uucp/SYSLOG log file of \fIuucp\fP file transfers
+.TE
+.DE
+.PP
+To install
+.Xr uucp
+on your system,
+start by selecting a site name
+(shorter than 14 characters).
+A
+.Xr uucp
+account must be created in the password file and a password set up.
+Then,
+create the appropriate spooling directories with mode 755
+and owned by user
+.Xr uucp ,
+group \fIdaemon\fP.
+.PP
+If you have an auto-call unit,
+the L.sys, L-dialcodes, and L-devices files should be created.
+The L.sys file should contain
+the phone numbers and login sequences
+required to establish a connection with a
+.Xr uucp
+daemon on another machine.
+For example, our L.sys file looks something like:
+.DS
+adiron Any ACU 1200 out0123456789- ogin-EOT-ogin uucp
+cbosg Never Slave 300
+cbosgd Never Slave 300
+chico Never Slave 1200 out2010123456
+.DE
+The first field is the name of a site,
+the second shows when the machine may be called,
+the third field specifies how the host is connected
+(through an ACU, a hard-wired line, etc.),
+then comes the phone number to use in connecting through an auto-call unit,
+and finally a login sequence.
+The phone number
+may contain common abbreviations that are defined in the L-dialcodes file.
+The device specification should refer to devices
+specified in the L-devices file.
+Listing only ACU causes the
+.Xr uucp
+daemon,
+.Xr uucico ,
+to search for any available auto-call unit in L-devices.
+Our L-dialcodes file is of the form:
+.DS
+ucb 2
+out 9%
+.DE
+while our L-devices file is:
+.DS
+ACU cul0 unused 1200 ventel
+.DE
+Refer to the README file in the
+.Xr uucp
+source directory for more information about installation.
+.PP
+As
+.Xr uucp
+operates it creates (and removes) many small
+files in the directories underneath
+.Pn /var/spool/uucp .
+Sometimes files are left undeleted;
+these are most easily purged with the
+.Xr uuclean
+program.
+The log files can grow without bound unless trimmed back;
+.Xr uulog
+maintains these files.
+Many useful aids in maintaining your
+.Xr uucp
+installation are included in a subdirectory UUAIDS beneath
+.Pn /usr/src/usr.bin/uucp .
+Peruse this directory and read the ``setup'' instructions also located there.
diff --git a/share/doc/smm/01.setup/5.t b/share/doc/smm/01.setup/5.t
new file mode 100644
index 0000000..10b86dd
--- /dev/null
+++ b/share/doc/smm/01.setup/5.t
@@ -0,0 +1,586 @@
+.\" Copyright (c) 1980, 1986, 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)5.t 8.1 (Berkeley) 7/27/93
+.\"
+.ds lq ``
+.ds rq ''
+.ds LH "Installing/Operating \*(4B
+.ds RH Network setup
+.ds CF \*(Dy
+.Sh 1 "Network setup"
+.PP
+\*(4B provides support for the standard Internet
+protocols IP, ICMP, TCP, and UDP. These protocols may be used
+on top of a variety of hardware devices ranging from
+serial lines to local area network controllers
+for the Ethernet. Network services are split between the
+kernel (communication protocols) and user programs (user
+services such as TELNET and FTP). This section describes
+how to configure your system to use the Internet networking support.
+\*(4B also supports the Xerox Network Systems (NS) protocols.
+IDP and SPP are implemented in the kernel,
+and other protocols such as Courier run at the user level.
+\*(4B provides some support for the ISO OSI protocols CLNP
+TP4, and ESIS. User level process
+complete the application protocols such as X.400 and X.500.
+.Sh 2 "System configuration"
+.PP
+To configure the kernel to include the Internet communication
+protocols, define the INET option.
+Xerox NS support is enabled with the NS option.
+ISO OSI support is enabled with the ISO option.
+In either case, include the pseudo-devices
+``pty'', and ``loop'' in your machine's configuration
+file.
+The ``pty'' pseudo-device forces the pseudo terminal device driver
+to be configured into the system, see
+.Xr pty (4),
+while the ``loop'' pseudo-device forces inclusion of the software loopback
+interface driver.
+The loop driver is used in network testing
+and also by the error logging system.
+.PP
+If you are planning to use the Internet network facilities on a 10Mb/s
+Ethernet, the pseudo-device ``ether'' should also be included
+in the configuration; this forces inclusion of the Address Resolution
+Protocol module used in mapping between 48-bit Ethernet
+and 32-bit Internet addresses.
+.PP
+Before configuring the appropriate networking hardware, you should
+consult the manual pages in section 4 of the Programmer's Manual
+selecting the appropriate interfaces for your architecture.
+.PP
+All network interface drivers including the loopback interface,
+require that their host address(es) be defined at boot time.
+This is done with
+.Xr ifconfig (8)
+commands included in the
+.Pn /etc/netstart
+file.
+Interfaces that are able to dynamically deduce the host
+part of an address may check that the host part of the address is correct.
+The manual page for each network interface
+describes the method used to establish a host's address.
+.Xr Ifconfig (8)
+can also be used to set options for the interface at boot time.
+Options are set independently for each interface, and
+apply to all packets sent using that interface.
+Alternatively, translations for such hosts may be set in advance
+or ``published'' by a \*(4B host by use of the
+.Xr arp (8)
+command.
+Note that the use of trailer link-level is now negotiated between \*(4B hosts
+using ARP,
+and it is thus no longer necessary to disable the use of trailers
+with
+.Xr ifconfig .
+.PP
+The OSI equivalent to ARP is ESIS (End System to Intermediate System Routing
+Protocol); running this protocol is mandatory, however one can manually add
+translations for machines that do not participate by use of the
+.Xr route (8)
+command.
+Additional information is provided in the manual page describing
+.Xr ESIS (4).
+.PP
+To use the pseudo terminals just configured, device
+entries must be created in the
+.Pn /dev
+directory. To create 32
+pseudo terminals (plenty, unless you have a heavy network load)
+execute the following commands.
+.DS
+\fB#\fP \fIcd /dev\fP
+\fB#\fP \fIMAKEDEV pty0 pty1\fP
+.DE
+More pseudo terminals may be made by specifying
+.Pn pty2 ,
+.Pn pty3 ,
+etc. The kernel normally includes support for 32 pseudo terminals
+unless the configuration file specifies a different number.
+Each pseudo terminal really consists of two files in
+.Pn /dev :
+a master and a slave. The master pseudo terminal file is named
+.Pn /dev/ptyp? ,
+while the slave side is
+.Pn /dev/ttyp? .
+Pseudo terminals are also used by several programs not related to the network.
+In addition to creating the pseudo terminals,
+be sure to install them in the
+.Pn /etc/ttys
+file (with a `none' in the second column so no
+.Xr getty
+is started).
+.Sh 2 "Local subnets"
+.PP
+In \*(4B the Internet support
+includes the notion of ``subnets''. This is a mechanism
+by which multiple local networks may appears as a single Internet
+network to off-site hosts. Subnetworks are useful because
+they allow a site to hide their local topology, requiring only a single
+route in external gateways;
+it also means that local network numbers may be locally administered.
+The standard describing this change in Internet addressing is RFC-950.
+.PP
+To set up local subnets one must first decide how the available
+address space (the Internet ``host part'' of the 32-bit address)
+is to be partitioned.
+Sites with a class A network
+number have a 24-bit host address space with which to work, sites with a
+class B network number have a 16-bit host address space, while sites with
+a class C network number have an 8-bit host address space\**.
+.FS
+If you are unfamiliar with the Internet addressing structure, consult
+``Address Mappings'', Internet RFC-796, J. Postel; available from
+the Internet Network Information Center at SRI.
+.FE
+To define local subnets you must steal some bits
+from the local host address space for use in extending the network
+portion of the Internet address. This reinterpretation of Internet
+addresses is done only for local networks; i.e. it is not visible
+to hosts off-site. For example, if your site has a class B network
+number, hosts on this network have an Internet address that contains
+the network number, 16 bits, and the host number, another
+16 bits. To define 254 local subnets, each
+possessing at most 255 hosts, 8 bits may be taken from the local part.
+(The use of subnets 0 and all-1's, 255 in this example, is discouraged
+to avoid confusion about broadcast addresses.)
+These new network
+numbers are then constructed by concatenating the original 16-bit network
+number with the extra 8 bits containing the local subnet number.
+.PP
+The existence of local subnets is communicated to the system at the time a
+network interface is configured with the
+.I netmask
+option to the
+.Xr ifconfig
+program. A ``network mask'' is specified to define the
+portion of the Internet address that is to be considered the network part
+for that network.
+This mask normally contains the bits corresponding to the standard
+network part as well as the portion of the local part
+that has been assigned to subnets.
+If no mask is specified when the address is set,
+it will be set according to the class of the network.
+For example, at Berkeley (class B network 128.32) 8 bits
+of the local part have been reserved for defining subnets;
+consequently the
+.Pn /etc/netstart
+file contains lines of the form
+.DS
+.ft CW
+/sbin/ifconfig le0 netmask 0xffffff00 128.32.1.7
+.DE
+This specifies that for interface ``le0'', the upper 24 bits of
+the Internet address should be used in calculating network numbers
+(netmask 0xffffff00), and the interface's Internet address is
+``128.32.1.7'' (host 7 on network 128.32.1). Hosts \fIm\fP on
+sub-network \fIn\fP of this network would then have addresses of
+the form ``128.32.\fIn\fP.\fIm\fP''; for example, host
+99 on network 129 would have an address ``128.32.129.99''.
+For hosts with multiple interfaces, the network mask should
+be set for each interface,
+although in practice only the mask of the first interface on each network
+is really used.
+.Sh 2 "Internet broadcast addresses"
+.PP
+The address defined as the broadcast address for Internet networks
+according to RFC-919 is the address with a host part of all 1's.
+The address used by 4.2BSD was the address with a host part of 0.
+\*(4B uses the standard broadcast address (all 1's) by default,
+but allows the broadcast address to be set (with
+.Xr ifconfig )
+for each interface.
+This allows networks consisting of both 4.2BSD, \*(Ps and \*(4B hosts
+to coexist while the upgrade process proceeds.
+In the presence of subnets, the broadcast address uses the subnet field
+as for normal host addresses, with the remaining host part set to 1's
+(or 0's, on a network that has not yet been converted).
+\*(4B hosts recognize and accept packets
+sent to the logical-network broadcast address as well as those sent
+to the subnet broadcast address, and when using an all-1's broadcast,
+also recognize and receive packets sent to host 0 as a broadcast.
+.Sh 2 "Routing"
+.PP
+If your environment allows access to networks not directly
+attached to your host you will need to set up routing information
+to allow packets to be properly routed. Two schemes are
+supported by the system. The first scheme
+employs a routing table management daemon.
+Optimally, you should use the routing daemon
+.Xr gated
+available from Cornell university.
+We use it on our systems and it works well,
+especially for multi-homed hosts using Serial Line IP (SLIP).
+Unfortunately, we were not able to obtain permission to
+include it on \*(4B.
+.PP
+If you do not wish to or cannot obtain
+.Xr gated ,
+the distribution does include
+.Xr routed (8)
+to maintain the system routing tables. The routing daemon
+uses a variant of the Xerox Routing Information Protocol
+to maintain up to date routing tables in a cluster of local
+area networks. By using the
+.Pn /etc/gateways
+file, the routing daemon can also be used to initialize static routes
+to distant networks (see the next section for further discussion).
+When the routing daemon is started up
+(usually from
+.Pn /etc/rc )
+it reads
+.Pn /etc/gateways
+if it exists and installs those routes defined there,
+then broadcasts on each local network
+to which the host is attached to find other instances of the routing
+daemon. If any responses are received, the routing daemons
+cooperate in maintaining a globally consistent view of routing
+in the local environment. This view can be extended to include
+remote sites also running the routing daemon by setting up suitable
+entries in
+.Pn /etc/gateways ;
+consult
+.Xr routed (8)
+for a more thorough discussion.
+.PP
+The second approach is to define a default or wildcard
+route to a smart
+gateway and depend on the gateway to provide ICMP routing
+redirect information to dynamically create a routing data
+base. This is done by adding an entry of the form
+.DS
+.ft CW
+/sbin/route add default \fIsmart-gateway\fP 1
+.DE
+to
+.Pn /etc/netstart ;
+see
+.Xr route (8)
+for more information. The default route
+will be used by the system as a ``last resort''
+in routing packets to their destination. Assuming the gateway
+to which packets are directed is able to generate the proper
+routing redirect messages, the system will then add routing
+table entries based on the information supplied. This approach
+has certain advantages over the routing daemon, but is
+unsuitable in an environment where there are only bridges (i.e.
+pseudo gateways that, for instance, do not generate routing
+redirect messages). Further, if the
+smart gateway goes down there is no alternative, save manual
+alteration of the routing table entry, to maintaining service.
+.PP
+The system always listens, and processes, routing redirect
+information, so it is possible to combine both of the above
+facilities. For example, the routing table management process
+might be used to maintain up to date information about routes
+to geographically local networks, while employing the wildcard
+routing techniques for ``distant'' networks. The
+.Xr netstat (1)
+program may be used to display routing table contents as well
+as various routing oriented statistics. For example,
+.DS
+\fB#\fP \fInetstat \-r\fP
+.DE
+will display the contents of the routing tables, while
+.DS
+\fB#\fP \fInetstat \-r \-s\fP
+.DE
+will show the number of routing table entries dynamically
+created as a result of routing redirect messages, etc.
+.Sh 2 "Use of \*(4B machines as gateways"
+.PP
+Several changes have been made in \*(4B in the area of gateway support
+(or packet forwarding, if one prefers).
+A new configuration option, GATEWAY, is used when configuring
+a machine to be used as a gateway.
+This option increases the size of the routing hash tables in the kernel.
+Unless configured with that option,
+hosts with only a single non-loopback interface never attempt
+to forward packets or to respond with ICMP error messages to misdirected
+packets.
+This change reduces the problems that may occur when different hosts
+on a network disagree on the network number or broadcast address.
+Another change is that \*(4B machines that forward packets back through
+the same interface on which they arrived
+will send ICMP redirects to the source host if it is on the same network.
+This improves the interaction of \*(4B gateways with hosts that configure
+their routes via default gateways and redirects.
+The generation of redirects may be disabled with the configuration option
+IPSENDREDIRECTS=0 or while the system is running by using the command:
+.DS
+.ft CW
+sysctl -w net.inet.ip.redirect=0
+.DE
+in environments where it may cause difficulties.
+.Sh 2 "Network databases"
+.PP
+Several data files are used by the network library routines
+and server programs. Most of these files are host independent
+and updated only rarely.
+.br
+.ne 1i
+.TS
+lfC l l.
+File Manual reference Use
+_
+/etc/hosts \fIhosts\fP\|(5) local host names
+/etc/networks \fInetworks\fP\|(5) network names
+/etc/services \fIservices\fP\|(5) list of known services
+/etc/protocols \fIprotocols\fP\|(5) protocol names
+/etc/hosts.equiv \fIrshd\fP\|(8) list of ``trusted'' hosts
+/etc/netstart \fIrc\fP\|(8) command script for initializing network
+/etc/rc \fIrc\fP\|(8) command script for starting standard servers
+/etc/rc.local \fIrc\fP\|(8) command script for starting local servers
+/etc/ftpusers \fIftpd\fP\|(8) list of ``unwelcome'' ftp users
+/etc/hosts.lpd \fIlpd\fP\|(8) list of hosts allowed to access printers
+/etc/inetd.conf \fIinetd\fP\|(8) list of servers started by \fIinetd\fP
+.TE
+The files distributed are set up for Internet hosts.
+Local networks and hosts should be added to describe the local
+configuration; the Berkeley entries may serve as examples
+(see also the section on
+.Pn /etc/hosts ).
+Network numbers will have to be chosen for each Ethernet.
+For sites connected to the Internet,
+the normal channels should be used for allocation of network
+numbers (contact hostmaster@SRI-NIC.ARPA).
+For other sites,
+these could be chosen more or less arbitrarily,
+but it is generally better to request official numbers
+to avoid conversion if a connection to the Internet (or others on the Internet)
+is ever established.
+.Sh 3 "Network servers"
+.PP
+Most network servers are automatically started up at boot time
+by the command file
+.Pn /etc/rc
+or by the Internet daemon (see below).
+These include the following:
+.TS
+lfC l l.
+Program Server Started by
+_
+/usr/sbin/syslogd error logging server \f(CW/etc/rc\fP
+/usr/sbin/named Internet name server \f(CW/etc/rc\fP
+/sbin/routed routing table management daemon \f(CW/etc/rc\fP
+/usr/sbin/rwhod system status daemon \f(CW/etc/rc\fP
+/usr/sbin/timed time synchronization daemon \f(CW/etc/rc\fP
+/usr/sbin/sendmail SMTP server \f(CW/etc/rc\fP
+/usr/libexec/rshd shell server inetd
+/usr/libexec/rexecd exec server inetd
+/usr/libexec/rlogind login server inetd
+/usr/libexec/telnetd TELNET server inetd
+/usr/libexec/ftpd FTP server inetd
+/usr/libexec/fingerd Finger server inetd
+/usr/libexec/tftpd TFTP server inetd
+.TE
+Consult the manual pages and accompanying documentation (particularly
+for named and sendmail) for details about their operation.
+.PP
+The use of
+.Xr routed
+and
+.Xr rwhod
+is controlled by shell
+variables set in
+.Pn /etc/netstart .
+By default,
+.Xr routed
+is used, but
+.Xr rwhod
+is not; they are enabled by setting the variables \fIroutedflags\fP and
+.Xr rwhod
+to strings other than ``NO.''
+The value of \fIroutedflags\fP provides host-specific options to
+.Xr routed .
+For example,
+.DS
+.ft CW
+routedflags=-q
+rwhod=NO
+.DE
+would run
+.Xr "routed -q"
+and would not run
+.Xr rwhod .
+.PP
+To have other network servers started as well,
+commands of the following sort should be placed in the site-dependent file
+.Pn /etc/rc.local .
+.DS
+.ft CW
+if [ -f /usr/sbin/timed ]; then
+ /usr/sbin/timed & echo -n ' timed' >/dev/console
+f\&i
+.DE
+.Sh 3 "Internet daemon"
+.PP
+In \*(4B most of the servers for user-visible services are started up by a
+``super server'', the Internet daemon. The Internet
+daemon,
+.Pn /usr/sbin/inetd ,
+acts as a master server for
+programs specified in its configuration file,
+.Pn /etc/inetd.conf ,
+listening for service requests for these servers, and starting
+up the appropriate program whenever a request is received.
+The configuration file contains lines containing a service
+name (as found in
+.Pn /etc/services ),
+the type of socket the
+server expects (e.g. stream or dgram), the protocol to be
+used with the socket (as found in
+.Pn /etc/protocols ),
+whether to wait for each server to complete before starting up another,
+the user name by which the server should run, the server
+program's name, and at most five arguments to pass to the
+server program.
+Some trivial services are implemented internally in
+.Xr inetd ,
+and their servers are listed as ``internal.''
+For example, an entry for the file
+transfer protocol server would appear as
+.DS
+.ft CW
+ftp stream tcp nowait root /usr/libexec/ftpd ftpd
+.DE
+Consult
+.Xr inetd (8)
+for more detail on the format of the configuration file
+and the operation of the Internet daemon.
+.Sh 3 "The \f(CW/etc/hosts.equiv\fP file"
+.PP
+The remote login and shell servers use an
+authentication scheme based on trusted hosts. The
+.Pn hosts.equiv
+file contains a list of hosts that are considered trusted
+and, under a single administrative control. When a user
+contacts a remote login or shell server requesting service,
+the client process passes the user's name and the official
+name of the host on which the client is located. In the simple
+case, if the host's name is located in
+.Pn hosts.equiv
+and the user has an account on the server's machine, then service
+is rendered (i.e. the user is allowed to log in, or the command
+is executed). Users may expand this ``equivalence'' of
+machines by installing a
+.Pn \&.rhosts
+file in their login directory.
+The root login is handled specially, bypassing the
+.Pn hosts.equiv
+file, and using only the
+.Pn /.rhosts
+file.
+.PP
+Thus, to create a class of equivalent machines, the
+.Pn hosts.equiv
+file should contain the \fIofficial\fP names for those machines.
+If you are running the name server, you may omit the domain part
+of the host name for machines in your local domain.
+For example, four machines on our local
+network are considered trusted, so the
+.Pn hosts.equiv
+file is of the form:
+.DS
+.ft CW
+vangogh.CS.Berkeley.EDU
+picasso.CS.Berkeley.EDU
+okeeffe.CS.Berkeley.EDU
+.DE
+.Sh 3 "The \f(CW/etc/ftpusers\fP file"
+.PP
+The FTP server included in the system provides support for an
+anonymous FTP account. Because of the inherent security problems
+with such a facility you should read this section carefully if
+you consider providing such a service.
+.PP
+An anonymous account is enabled by creating a user
+.Xr ftp .
+When a client uses the anonymous account a
+.Xr chroot (2)
+system call is performed by the server to restrict the client
+from moving outside that part of the filesystem where the
+user ftp home directory is located. Because a
+.Xr chroot
+call is used, certain programs and files used by the server
+process must be placed in the ftp home directory.
+Further, one must be
+sure that all directories and executable images are unwritable.
+The following directory setup is recommended. The
+use of the
+.Xr awk
+commands to copy the
+.Pn /etc/passwd
+and
+.Pn /etc/group
+files are \fBSTRONGLY\fP recommended.
+.DS
+\fB#\fP \fIcd ~ftp\fP
+\fB#\fP \fIchmod 555 .; chown ftp .; chgrp ftp .\fP
+\fB#\fP \fImkdir bin etc pub\fP
+\fB#\fP \fIchown root bin etc\fP
+\fB#\fP \fIchmod 555 bin etc\fP
+\fB#\fP \fIchown ftp pub\fP
+\fB#\fP \fIchmod 777 pub\fP
+\fB#\fP \fIcd bin\fP
+\fB#\fP \fIcp /bin/sh /bin/ls .\fP
+\fB#\fP \fIchmod 111 sh ls\fP
+\fB#\fP \fIcd ../etc\fP
+\fB#\fP \fIawk -F: '{$2="*";print$1":"$2":"$3":"$4":"$5":"$6":"}' < /etc/passwd > passwd\fP
+\fB#\fP \fIawk -F: '{$2="*";print$1":"$2":"}' < /etc/group > group\fP
+\fB#\fP \fIchmod 444 passwd group\fP
+.DE
+When local users wish to place files in the anonymous
+area, they must be placed in a subdirectory. In the
+setup here, the directory
+.Pn ~ftp/pub
+is used.
+.PP
+Aside from the problems of directory modes and such,
+the ftp server may provide a loophole for interlopers
+if certain user accounts are allowed.
+The file
+.Pn /etc/ftpusers
+is checked on each connection.
+If the requested user name is located in the file, the
+request for service is denied. This file normally has
+the following names on our systems.
+.DS
+uucp
+root
+.DE
+Accounts without passwords need not be listed in this file as the ftp
+server will refuse service to these users.
+Accounts with nonstandard shells (any not listed in
+.Pn /etc/shells )
+will also be denied access via ftp.
diff --git a/share/doc/smm/01.setup/6.t b/share/doc/smm/01.setup/6.t
new file mode 100644
index 0000000..d043474
--- /dev/null
+++ b/share/doc/smm/01.setup/6.t
@@ -0,0 +1,663 @@
+.\" Copyright (c) 1980, 1986, 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)6.t 8.1 (Berkeley) 7/27/93
+.\"
+.ds LH "Installing/Operating \*(4B
+.ds CF \*(Dy
+.Sh 1 "System operation"
+.PP
+This section describes procedures used to operate a \*(4B UNIX system.
+Procedures described here are used periodically, to reboot the system,
+analyze error messages from devices, do disk backups, monitor
+system performance, recompile system software and control local changes.
+.Sh 2 "Bootstrap and shutdown procedures"
+.PP
+In a normal reboot, the system checks the disks and comes up multi-user
+without intervention at the console.
+Such a reboot
+can be stopped (after it prints the date) with a ^C (interrupt).
+This will leave the system in single-user mode, with only the console
+terminal active.
+(If the console has been marked ``insecure'' in
+.Pn /etc/ttys
+you must enter the root password to bring the machine to single-user mode.)
+It is also possible to allow the filesystem checks to complete
+and then to return to single-user mode by signaling
+.Xr fsck (8)
+with a QUIT signal (^\|\e).
+.PP
+To bring the system up to a multi-user configuration from the single-user
+status,
+all you have to do is hit ^D on the console. The system
+will then execute
+.Pn /etc/rc ,
+a multi-user restart script (and
+.Pn /etc/rc.local ),
+and come up on the terminals listed as
+active in the file
+.Pn /etc/ttys .
+See
+.Xr init (8)
+and
+.Xr ttys (5) for more details.
+Note, however, that this does not cause a filesystem check to be done.
+Unless the system was taken down cleanly, you should run
+``fsck \-p'' or force a reboot with
+.Xr reboot (8)
+to have the disks checked.
+.PP
+To take the system down to a single user state you can use
+.DS
+\fB#\fP \fIkill 1\fP
+.DE
+or use the
+.Xr shutdown (8)
+command (which is much more polite, if there are other users logged in)
+when you are running multi-user.
+Either command will kill all processes and give you a shell on the console,
+as if you had just booted. Filesystems remain mounted after the
+system is taken single-user. If you wish to come up multi-user again, you
+should do this by:
+.DS
+\fB#\fP \fIcd /\fP
+\fB#\fP \fI/sbin/umount -a\fP
+\fB#\fP \fI^D\fP
+.DE
+.PP
+Each system shutdown, crash, processor halt and reboot
+is recorded in the system log
+with its cause.
+.Sh 2 "Device errors and diagnostics"
+.PP
+When serious errors occur on peripherals or in the system, the system
+prints a warning diagnostic on the console.
+These messages are collected
+by the system error logging process
+.Xr syslogd (8)
+and written into a system error log file
+.Pn /var/log/messages .
+Less serious errors are sent directly to
+.Xr syslogd ,
+which may log them on the console.
+The error priorities that are logged and the locations to which they are logged
+are controlled by
+.Pn /etc/syslog.conf .
+See
+.Xr syslogd (8)
+for further details.
+.PP
+Error messages printed by the devices in the system are described with the
+drivers for the devices in section 4 of the programmer's manual.
+If errors occur suggesting hardware problems, you should contact
+your hardware support group or field service. It is a good idea to
+examine the error log file regularly
+(e.g. with the command \fItail \-r /var/log/messages\fP).
+.Sh 2 "Filesystem checks, backups, and disaster recovery"
+.PP
+Periodically (say every week or so in the absence of any problems)
+and always (usually automatically) after a crash,
+all the filesystems should be checked for consistency
+by
+.Xr fsck (1).
+The procedures of
+.Xr reboot (8)
+should be used to get the system to a state where a filesystem
+check can be done manually or automatically.
+.PP
+Dumping of the filesystems should be done regularly,
+since once the system is going it is easy to
+become complacent.
+Complete and incremental dumps are easily done with
+.Xr dump (8).
+You should arrange to do a towers-of-hanoi dump sequence; we tune
+ours so that almost all files are dumped on two tapes and kept for at
+least a week in most every case. We take full dumps every month (and keep
+these indefinitely).
+Operators can execute ``dump w'' at login that will tell them what needs
+to be dumped
+(based on the
+.Pn /etc/fstab
+information).
+Be sure to create a group
+.B operator
+in the file
+.Pn /etc/group
+so that dump can notify logged-in operators when it needs help.
+.PP
+More precisely, we have three sets of dump tapes: 10 daily tapes,
+5 weekly sets of 2 tapes, and fresh sets of three tapes monthly.
+We do daily dumps circularly on the daily tapes with sequence
+`3 2 5 4 7 6 9 8 9 9 9 ...'.
+Each weekly is a level 1 and the daily dump sequence level
+restarts after each weekly dump.
+Full dumps are level 0 and the daily sequence restarts after each full dump
+also.
+.PP
+Thus a typical dump sequence would be:
+.br
+.ne 6
+.TS
+center;
+c c c c c
+n n n l l.
+tape name level number date opr size
+_
+FULL 0 Nov 24, 1992 operator 137K
+D1 3 Nov 28, 1992 operator 29K
+D2 2 Nov 29, 1992 operator 34K
+D3 5 Nov 30, 1992 operator 19K
+D4 4 Dec 1, 1992 operator 22K
+W1 1 Dec 2, 1992 operator 40K
+D5 3 Dec 4, 1992 operator 15K
+D6 2 Dec 5, 1992 operator 25K
+D7 5 Dec 6, 1992 operator 15K
+D8 4 Dec 7, 1992 operator 19K
+W2 1 Dec 9, 1992 operator 118K
+D9 3 Dec 11, 1992 operator 15K
+D10 2 Dec 12, 1992 operator 26K
+D1 5 Dec 15, 1992 operator 14K
+W3 1 Dec 17, 1992 operator 71K
+D2 3 Dec 18, 1992 operator 13K
+FULL 0 Dec 22, 1992 operator 135K
+.TE
+We do weekly dumps often enough that daily dumps always fit on one tape.
+.PP
+Dumping of files by name is best done by
+.Xr tar (1)
+but the amount of data that can be moved in this way is limited
+to a single tape.
+Finally if there are enough drives entire
+disks can be copied with
+.Xr dd (1)
+using the raw special files and an appropriate
+blocking factor; the number of sectors per track is usually
+a good value to use, consult
+.Pn /etc/disktab .
+.PP
+It is desirable that full dumps of the root filesystem be
+made regularly.
+This is especially true when only one disk is available.
+Then, if the
+root filesystem is damaged by a hardware or software failure, you
+can rebuild a workable disk doing a restore in the
+same way that the initial root filesystem was created.
+.PP
+Exhaustion of user-file space is certain to occur
+now and then; disk quotas may be imposed, or if you
+prefer a less fascist approach, try using the programs
+.Xr du (1),
+.Xr df (1),
+and
+.Xr quot (8),
+combined with threatening
+messages of the day, and personal letters.
+.Sh 2 "Moving filesystem data"
+.PP
+If you have the resources,
+the best way to move a filesystem
+is to dump it to a spare disk partition, or magtape, using
+.Xr dump (8),
+use
+.Xr newfs (8)
+to create the new filesystem,
+and restore the filesystem using
+.Xr restore (8).
+Filesystems may also be moved by piping the output of
+.Xr dump
+to
+.Xr restore .
+The
+.Xr restore
+program uses an ``in-place'' algorithm that
+allows filesystem dumps to be restored without concern for the
+original size of the filesystem. Further, portions of a
+filesystem may be selectively restored using a method similar
+to the tape archive program.
+.PP
+If you have to merge a filesystem into another, existing one,
+the best bet is to use
+.Xr tar (1).
+If you must shrink a filesystem, the best bet is to dump
+the original and restore it onto the new filesystem.
+If you
+are playing with the root filesystem and only have one drive,
+the procedure is more complicated.
+If the only drive is a Winchester disk, this procedure may not be used
+without overwriting the existing root or another partition.
+What you do is the following:
+.IP 1.
+GET A SECOND PACK, OR USE ANOTHER DISK DRIVE!!!!
+.IP 2.
+Dump the root filesystem to tape using
+.Xr dump (8).
+.IP 3.
+Bring the system down.
+.IP 4.
+Mount the new pack in the correct disk drive, if
+using removable media.
+.IP 5.
+Load the distribution tape and install the new
+root filesystem as you did when first installing the system.
+Boot normally
+using the newly created disk filesystem.
+.PP
+Note that if you change the disk partition tables or add new disk
+drivers they should also be added to the standalone system in
+.Pn /sys/<architecture>/stand ,
+and the default disk partition tables in
+.Pn /etc/disktab
+should be modified.
+.Sh 2 "Monitoring system performance"
+.PP
+The
+.Xr systat
+program provided with the system is designed to be an aid to monitoring
+systemwide activity. The default ``pigs'' mode shows a dynamic ``ps''.
+By running in the ``vmstat'' mode
+when the system is active you can judge the system activity in several
+dimensions: job distribution, virtual memory load, paging and swapping
+activity, device interrupts, and disk and cpu utilization.
+Ideally, there should be few blocked (b) jobs,
+there should be little paging or swapping activity, there should
+be available bandwidth on the disk devices (most single arms peak
+out at 20-30 tps in practice), and the user cpu utilization (us) should
+be high (above 50%).
+.PP
+If the system is busy, then the count of active jobs may be large,
+and several of these jobs may often be blocked (b). If the virtual
+memory is active, then the paging demon will be running (sr will
+be non-zero). It is healthy for the paging demon to free pages when
+the virtual memory gets active; it is triggered by the amount of free
+memory dropping below a threshold and increases its pace as free memory
+goes to zero.
+.PP
+If you run in the ``vmstat'' mode
+when the system is busy, you can find
+imbalances by noting abnormal job distributions. If many
+processes are blocked (b), then the disk subsystem
+is overloaded or imbalanced. If you have several non-dma
+devices or open teletype lines that are ``ringing'', or user programs
+that are doing high-speed non-buffered input/output, then the system
+time may go high (60-70% or higher).
+It is often possible to pin down the cause of high system time by
+looking to see if there is excessive context switching (cs), interrupt
+activity (in) and per-device interrupt counts,
+or system call activity (sy). Cumulatively on one of
+our large machines we average about 60-200 context switches and interrupts
+per second and about 50-500 system calls per second.
+.PP
+If the system is heavily loaded, or if you have little memory
+for your load (2M is little in most any case), then the system
+may be forced to swap. This is likely to be accompanied by a noticeable
+reduction in system performance and pregnant pauses when interactive
+jobs such as editors swap out.
+If you expect to be in a memory-poor environment
+for an extended period you might consider administratively
+limiting system load.
+.Sh 2 "Recompiling and reinstalling system software"
+.PP
+It is easy to regenerate either the entire system or a single utility,
+and it is a good idea to try rebuilding pieces of the system to build
+confidence in the procedures.
+.LP
+In general, there are six well-known targets supported by
+all the makefiles on the system:
+.IP all 9
+This entry is the default target, the same as if no target is specified.
+This target builds the kernel, binary or library, as well as its
+associated manual pages.
+This target \fBdoes not\fP build the dependency files.
+Some of the utilities require that a \fImake depend\fP be done before
+a \fImake all\fP can succeed.
+.IP depend
+Build the include file dependency file, ``.depend'', which is
+read by
+.Xr make .
+See
+.Xr mkdep (1)
+for further details.
+.IP install
+Install the kernel, binary or library, as well as its associated
+manual pages.
+See
+.Xr install (1)
+for further details.
+.IP clean
+Remove the kernel, binary or library, as well as any object files
+created when building it.
+.IP cleandir
+The same as clean, except that the dependency files and formatted
+manual pages are removed as well.
+.IP obj
+Build a shadow directory structure in the area referenced by
+.Pn /usr/obj
+and create a symbolic link in the current source directory to
+referenced it, named ``obj''.
+Once this shadow structure has been created, all the files created by
+.Xr make
+will live in the shadow structure, and
+.Pn /usr/src
+may be mounted read-only by multiple machines.
+Doing a \fImake obj\fP in
+.Pn /usr/src
+will build the shadow directory structure for everything on the
+system except for the contributed, old, and kernel software.
+.PP
+The system consists of three major parts:
+the kernel itself, found in
+.Pn /usr/src/sys ,
+the libraries , found in
+.Pn /usr/src/lib ,
+and the user programs (the rest of
+.Pn /usr/src ).
+.PP
+Deprecated software, found in
+.Pn /usr/src/old ,
+often has old style makefiles;
+some of it does not compile under \*(4B at all.
+.PP
+Contributed software, found in
+.Pn /usr/src/contrib ,
+usually does not support the ``cleandir'', ``depend'', or ``obj'' targets.
+.PP
+The kernel does not support the ``obj'' shadow structure.
+All kernels are compiled in subdirectories of
+.Pn /usr/src/sys/compile
+which is usually abbreviated as
+.Pn /sys/compile .
+If you want to mount your source tree read-only,
+.Pn /usr/src/sys/compile
+will have to be on a separate filesystem from
+.Pn /usr/src .
+Separation from
+.Pn /usr/src
+can be done by making
+.Pn /usr/src/sys/compile
+a symbolic link that references
+.Pn /usr/obj/sys/compile .
+If it is a symbolic link, the \fIS\fP variable in the kernel
+Makefile must be changed from
+.Pn \&../..
+to the absolute pathname needed to locate the kernel sources, usually
+.Pn /usr/src/sys .
+The symbolic link created by
+.Xr config (8)
+for
+.Pn machine
+must also be manually changed to an absolute pathname.
+Finally, the
+.Pn /usr/src/sys/libkern/obj
+directory must be located in
+.Pn /usr/obj/sys/libkern .
+.PP
+Each of the standard utilities and libraries may be built and
+installed by changing directories into the correct location and
+doing:
+.DS
+\fB#\fP \fImake\fP
+\fB#\fP \fImake install\fP
+.DE
+Note, if system include files have changed between compiles,
+.Xr make
+will not do the correct dependency checks if the dependency
+files have not been built using the ``depend'' target.
+.PP
+The entire library and utility suite for the system may be recompiled
+from scratch by changing directory to
+.Pn /usr/src
+and doing:
+.DS
+\fB#\fP \fImake build\fP
+.DE
+This target installs the system include files, cleans the source
+tree, builds and installs the libraries, and builds and installs
+the system utilities.
+.PP
+To recompile a specific program, first determine where the binary
+resides with the
+.Xr whereis (1)
+command, then change to the corresponding source directory and build
+it with the Makefile in the directory.
+For instance, to recompile ``passwd'',
+all one has to do is:
+.DS
+\fB#\fP \fIwhereis passwd\fP
+\fB/usr/bin/passwd\fP
+\fB#\fP \fIcd /usr/src/usr.bin/passwd\fP
+\fB#\fP \fImake\fP
+\fB#\fP \fImake install\fP
+.DE
+this will compile and install the
+.Xr passwd
+utility.
+.PP
+If you wish to recompile and install all programs into a particular
+target area you can override the default path prefix by doing:
+.DS
+\fB#\fP \fImake\fP
+\fB#\fP \fImake DESTDIR=\fPpathname \fIinstall\fP
+.DE
+Similarly, the mode, owner, group, and other characteristics of
+the installed object can be modified by changing other default
+make variables.
+See
+.Xr make (1),
+.Pn /usr/src/share/mk/bsd.README ,
+and the ``.mk'' scripts in the
+.Pn /usr/share/mk
+directory for more information.
+.PP
+If you modify the C library or system include files, to change a
+system call for example, and want to rebuild and install everything,
+you have to be a little careful.
+You must ensure that the include files are installed before anything
+is compiled, and that the libraries are installed before the remainder
+of the source, otherwise the loaded images will not contain the new
+routine from the library.
+If include files have been modified, the following commands should
+be done first:
+.DS
+\fB#\fP \fIcd /usr/src/include\fP
+\fB#\fP \fImake install\fP
+.DE
+Then, if, for example, C library files have been modified, the
+following commands should be executed:
+.DS
+\fB#\fP \fIcd /usr/src/lib/libc\fP
+\fB#\fP \fImake depend\fP
+\fB#\fP \fImake\fP
+\fB#\fP \fImake install\fP
+\fB#\fP \fIcd /usr/src\fP
+\fB#\fP \fImake depend\fP
+\fB#\fP \fImake\fP
+\fB#\fP \fImake install\fP
+.DE
+Alternatively, the \fImake build\fP command described above will
+accomplish the same tasks.
+This takes several hours on a reasonably configured machine.
+.Sh 2 "Making local modifications"
+.PP
+The source for locally written commands is normally stored in
+.Pn /usr/src/local ,
+and their binaries are kept in
+.Pn /usr/local/bin .
+This isolation of local binaries allows
+.Pn /usr/bin ,
+and
+.Pn /bin
+to correspond to the distribution tape (and to the manuals that
+people can buy).
+People using local commands should be made aware that they are not
+in the base manual.
+Manual pages for local commands should be installed in
+.Pn /usr/local/man/cat[1-8].
+The
+.Xr man (1)
+command automatically finds manual pages placed in
+/usr/local/man/cat[1-8] to encourage this practice (see
+.Xr man.conf (5)).
+.Sh 2 "Accounting"
+.PP
+UNIX optionally records two kinds of accounting information:
+connect time accounting and process resource accounting. The connect
+time accounting information is stored in the file
+.Pn /var/log/wtmp ,
+which is summarized by the program
+.Xr ac (8).
+The process time accounting information is stored in the file
+.Pn /var/account/acct
+after it is enabled by
+.Xr accton (8),
+and is analyzed and summarized by the program
+.Xr sa (8).
+.PP
+If you need to recharge for computing time, you can develop
+procedures based on the information provided by these commands.
+A convenient way to do this is to give commands to the clock daemon
+.Pn /usr/sbin/cron
+to be executed every day at a specified time.
+This is done by adding lines to
+.Pn /etc/crontab.local ;
+see
+.Xr cron (8)
+for details.
+.Sh 2 "Resource control"
+.PP
+Resource control in the current version of UNIX is more
+elaborate than in most UNIX systems. The disk quota
+facilities developed at the University of Melbourne have
+been incorporated in the system and allow control over the
+number of files and amount of disk space each user and/or group may use
+on each filesystem. In addition, the resources consumed
+by any single process can be limited by the mechanisms of
+.Xr setrlimit (2).
+As distributed, the latter mechanism
+is voluntary, though sites may choose to modify the login
+mechanism to impose limits not covered with disk quotas.
+.PP
+To use the disk quota facilities, the system must be
+configured with ``options QUOTA''. Filesystems may then
+be placed under the quota mechanism by creating a null file
+.Pn quota.user
+and/or
+.Pn quota.group
+at the root of the filesystem, running
+.Xr quotacheck (8),
+and modifying
+.Pn /etc/fstab
+to show that the filesystem is to run
+with disk quotas (options userquota and/or groupquota).
+The
+.Xr quotaon (8)
+program may then be run to enable quotas.
+.PP
+Individual quotas are applied by using the quota editor
+.Xr edquota (8).
+Users may view their quotas (but not those of other users) with the
+.Xr quota (1)
+program. The
+.Xr repquota (8)
+program may be used to summarize the quotas and current
+space usage on a particular filesystem or filesystems.
+.PP
+Quotas are enforced with \fIsoft\fP and \fIhard\fP limits.
+When a user and/or group first reaches a soft limit on a resource, a
+message is generated on their terminal. If the user and/or group fails to
+lower the resource usage below the soft limit
+for longer than the time limit established for that filesystem
+(default seven days) the system then treats the soft limit as a
+\fIhard\fP limit and disallows any allocations until enough space is
+reclaimed to bring the user and/or group back below the soft limit.
+Hard limits are enforced strictly resulting in errors when a user
+and/or group tries to create or write a file. Each time a hard limit is
+exceeded the system will generate a message on the user's terminal.
+.PP
+Consult the auxiliary document, ``Disc Quotas in a UNIX Environment'' (SMM:4)
+and the appropriate manual entries for more information.
+.Sh 2 "Network troubleshooting"
+.PP
+If you have anything more than a trivial network configuration,
+from time to time you are bound to run into problems. Before
+blaming the software, first check your network connections. On
+networks such as the Ethernet a
+loose cable tap or misplaced power cable can result in severely
+deteriorated service. The
+.Xr netstat (1)
+program may be of aid in tracking down hardware malfunctions.
+In particular, look at the \fB\-i\fP and \fB\-s\fP options in the manual page.
+.PP
+Should you believe a communication protocol problem exists,
+consult the protocol specifications and attempt to isolate the
+problem in a packet trace. The SO_DEBUG option may be supplied
+before establishing a connection on a socket, in which case the
+system will trace all traffic and internal actions (such as timers
+expiring) in a circular trace buffer.
+This buffer may then be printed out with the
+.Xr trpt (8)
+program.
+Most of the servers distributed with the system
+accept a \fB\-d\fP option forcing
+all sockets to be created with debugging turned on.
+Consult the appropriate manual pages for more information.
+.Sh 2 "Files that need periodic attention"
+.PP
+We conclude the discussion of system operations by listing
+the files that require periodic attention or are system specific:
+.TS
+center;
+lfC l.
+/etc/fstab how disk partitions are used
+/etc/disktab default disk partition sizes/labels
+/etc/printcap printer database
+/etc/gettytab terminal type definitions
+/etc/remote names and phone numbers of remote machines for \fItip\fP(1)
+/etc/group group memberships
+/etc/motd message of the day
+/etc/master.passwd password file; each account has a line
+/etc/rc.local local system restart script; runs reboot; starts daemons
+/etc/inetd.conf local internet servers
+/etc/hosts local host name database
+/etc/networks network name database
+/etc/services network services database
+/etc/hosts.equiv hosts under same administrative control
+/etc/syslog.conf error log configuration for \fIsyslogd\fP\|(8)
+/etc/ttys enables/disables ports
+/etc/crontab commands that are run periodically
+/etc/crontab.local local commands that are run periodically
+/etc/aliases mail forwarding and distribution groups
+/var/account/acct raw process account data
+/var/log/messages system error log
+/var/log/wtmp login session accounting
+.TE
+.pn 2
+.bp
+.PX
diff --git a/share/doc/smm/01.setup/Makefile b/share/doc/smm/01.setup/Makefile
new file mode 100644
index 0000000..b2d9c30
--- /dev/null
+++ b/share/doc/smm/01.setup/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 8.1 (Berkeley) 7/27/93
+# $FreeBSD$
+
+VOLUME= smm/01.setup
+SRCS= stubs 0.t 1.t 2.t 3.t 4.t 5.t 6.t
+MACROS= -ms
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/01.setup/spell.ok b/share/doc/smm/01.setup/spell.ok
new file mode 100644
index 0000000..daedb66
--- /dev/null
+++ b/share/doc/smm/01.setup/spell.ok
@@ -0,0 +1,618 @@
+A1096A
+AA
+ACU
+AMD
+Automounter
+BA
+BLOCKSIZE
+BSD
+Bb
+Bostic
+Bourne
+Bs
+Bz
+CCI
+CCITT
+CLNP
+CLTP
+COMPAT
+CPU's
+CS80
+CSRG
+CW
+Catseye
+Cyl
+DAT
+DECstation
+DESTDIR
+DISK's
+DISKTYPE
+DMA
+DN11
+DV
+DaVinci
+Dk
+Dn
+Dy
+EBCDIC
+EEPROM's
+EINTR
+EISA
+EOT
+ERESTART
+ESIS
+Emulex
+Exabyte
+FDDI
+FIPS
+FPU
+FTAM
+Filesystem
+Filesystems
+GCC
+GENERIC.hp300
+GX
+Gatorbox
+HDLC
+HIL
+HP
+HP's
+HP300
+HP300s
+HP433
+HP9000
+HPBSD
+HPUXCOMPAT
+Hibler
+IB
+ICMP
+IDP
+IDs
+IFLNK
+IP
+IPC
+IPSENDREDIRECTS
+IPX
+ISA
+ISO
+ISVTX
+Intel
+Jul
+Karels
+Kerberos
+L.aliases
+L.cmds
+L.sys
+LAN
+LAPB
+LFS
+LH
+LK201
+LOGFILE
+Leffler
+Luna
+MAKEDEV.local
+MB
+MC68040
+MFS
+MIB
+MIPS
+MISC
+MMU
+MT02
+Macklem
+Makefile
+Makefiles
+Maxtor
+McKusick
+NFS
+NIC.ARPA
+NPSECT
+NTP
+OHPUX
+OS
+OSI
+OSes
+Omron
+PCATCH
+PDT
+PMAD
+PMAG
+PMAX
+PMAZ
+POSIX
+POSIX.1
+POSIX.2
+PSD:5
+PVRX
+Pathnames
+Pendry
+Postel
+README
+RFC
+RH
+RISC
+ROM
+RS232
+RZ23
+RZ55
+RZ57
+SCSI
+SEQF
+SIOCGIFCONF
+SLC
+SMM:1
+SMM:10
+SMM:13
+SMM:14
+SMM:2
+SMM:3
+SMM:4
+SMM:6
+SMM:7
+SMM:8
+SMM:9
+SMTP
+SPARC
+SPARCstation
+SPP
+SRC
+SUNOS
+Sbus
+Solaris
+Standalone
+Std1003.1
+Std1003.2
+SunOS
+TAI
+TAPE's
+TBOOT
+TCP
+TIOCSCTTY
+TK50
+TM
+TP4
+TURBOchannel
+TVRX
+TZ
+Tcpmux
+Topcat
+Tue
+UCB
+UDP
+UFS
+ULTRIX
+ULTRIXCOMPAT
+UNIX''SMM:1
+USERFILE
+USL
+UTC
+UUAIDS
+UX
+Ux
+VAX
+VFS
+VME
+X11R5
+XX
+Xinu
+a,c,u,p
+a.out
+adaptor
+adaptors
+addrlen
+adiron
+adm
+aka
+aliases.db
+amd
+autochanger
+autoconf
+autoconfiguration
+autoconfigures
+bdes
+bootblock
+bootimage
+bootp
+bootpath
+bootrom
+bootsd
+bootstrapped
+bs
+bsd
+bsd.README
+btree
+bwtwo
+c.f
+callback
+cbosg
+cbosgd
+centronics
+cfb0
+cgsix
+cgthree
+changelist
+chflags
+chico
+chpass
+cksum
+cleandir
+cleanerd
+clnp
+cltp
+conf
+conformant
+contrib
+cpio
+crontab
+crontab.local
+cs
+csh.cshrc
+csh.login
+csh.logout
+cshrc
+ct
+cul0
+db
+dbopen
+dc7085
+deadfs
+dev
+dgram
+dialcode
+dialcodes
+dict
+disk3
+diskful
+disklabel
+disklabels
+disktab
+dm
+dm.conf
+dm.config
+dma
+doc
+endian
+es
+esis
+ext
+fd
+fdesc
+fifofs
+files.HOST
+fileservers
+filesystem
+filesystems
+foo
+frags
+friend.host.inet.number
+fsf
+fstab
+fstype
+ftpusers
+ftpwelcome
+fts
+funopen
+gcc
+genkernel
+getcap
+gettytab
+gid
+gid's
+gids
+groff
+groupquota
+hangup
+hanoi
+heapsort
+hexdump
+hier
+host.inet.number
+hostmaster
+hosts.equiv
+hosts.lpd
+hp
+hp300
+hpib0
+inetd.conf
+inline
+inode
+int
+intr
+iob
+iso
+kbyte
+kbytes
+kdb
+kdump
+kerberos
+kerberosIV
+kernfs
+kmem
+krb.conf
+ksh
+ktrace
+kvm
+labelling
+lastlog
+ld.so.cache
+le
+le0
+lfs
+lib
+libc
+libdata
+libedit
+libexec
+libkern
+libkvm
+libutil
+localhost
+lofs
+logname
+loopback
+lq
+lun
+luna68k
+magtape
+mail.local
+mail.rc
+maillog
+maillog.0
+maillog.1
+maillog.2
+maillog.3
+maillog.4
+maillog.5
+maillog.6
+maillog.7
+makefiles
+man.conf
+man0
+manl
+master.passwd
+maxine
+mckusick
+mdec
+mediainit
+mem
+mergesort
+mfb0
+mfs
+misc
+miscfs
+mk
+mkdb
+mkdep
+mkfifo
+mmap
+mnt
+mono
+motd
+mountd
+mqueue
+msgbuf
+mtree
+my.domain
+myfriend
+myfriend.my.domain
+myname
+myname.my.domain
+mysitename
+namelen
+net.inet.ip.redirect
+netgroup
+netinet
+netiso
+netmask
+netns
+netstart
+netx25
+newdev
+newlfs
+news3400
+newkernel
+nfs
+nfsd
+nfsiod
+nfsstat
+nfssvc
+nodump
+nowait
+npsect
+nr
+nrmt0
+nrst0
+nsect
+nullfs
+nvi
+obj
+ogin
+ok
+okeeffe.CS.Berkeley.EDU
+olddev
+oldroot
+opr
+osockaddr
+out0123456789
+out2010123456
+pageable
+pathname
+pathnames
+pcc
+picasso.CS.Berkeley.EDU
+pid
+pm0
+pmake
+pmap
+pmax
+posix
+printcap
+pt0
+pty
+pty.c
+pty0
+pty1
+pty2
+pty3
+ptyp
+pwd.db
+quota.group
+quota.user
+quotas.user
+radixsort
+rc.local
+rct
+rd
+rd0
+rdsk
+recno
+rew
+rf
+rhosts
+rmt0
+rmt12
+ro
+roff
+root.dump
+root.image
+routedflags
+rq
+rrd0d
+rrz?a
+rrz?c
+rsd0d
+rsd3a
+rsf
+rst0
+rw
+rxx0
+rz
+rz0
+rz1c
+rz?a
+sbin
+sc14
+sc7
+scsi0
+scsiformat
+sd
+sd0
+sd2b
+sd3
+sd3a
+sd660
+secretmail
+securelevel
+securettys
+sendmail.cf
+setsid
+setup.tblms
+shar
+shareable
+sizeof
+skel
+sockaddr
+sparc
+specfs
+spwd.db
+sr
+src
+srvtab
+st
+st.st
+standalone
+std
+std.9600
+stderr
+stdin
+stdout
+subr
+sunos
+sw
+sy
+sysctl
+sysctl.c
+syslog.0
+syslog.1
+syslog.2
+syslog.3
+syslog.4
+syslog.5
+syslog.6
+syslog.7
+syslog.conf
+tahoe
+tapehost
+tcp
+termios
+tmac
+tmp
+toor
+tps
+tput
+tsleep
+tty.c
+tty00
+ttya
+ttyb
+ttyd
+ttyp
+ttyp0
+ttytype
+types.h
+tz
+tz6
+ucb
+ufs
+uid
+uid's
+uids
+uipc
+umap
+umapfs
+un.h
+unaddr.sun
+uname
+unistd.h
+userid
+username
+userquota
+usr.bin
+usr.sbin
+utmp
+uucp.daemon
+uucppublic
+uw
+vangogh.CS.Berkeley.EDU
+var
+vax
+ventel
+vfs
+vm
+kernel
+kernel.net
+kernel.tape
+vnode
+vnodes
+vol
+vt100
+wildcard
+wr
+wsrc
+wtmp
+xargs
+xbpf
+xcfb0
+xf
+xp
+xpbf
+xpf
+xsf
+xx
+xx0
+xxx
+your.host.inet.number
+yymmddhhmm
+zA
+zoneinfo
diff --git a/share/doc/smm/01.setup/stubs b/share/doc/smm/01.setup/stubs
new file mode 100644
index 0000000..b26f4d5
--- /dev/null
+++ b/share/doc/smm/01.setup/stubs
@@ -0,0 +1,6 @@
+.\" $FreeBSD$
+.\"
+.if n \{\
+. ftr CW R
+. ftr C R
+.\}
diff --git a/share/doc/smm/02.config/Makefile b/share/doc/smm/02.config/Makefile
new file mode 100644
index 0000000..26ed70a
--- /dev/null
+++ b/share/doc/smm/02.config/Makefile
@@ -0,0 +1,10 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= smm/02.config
+SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t a.t b.t c.t d.t e.t
+MACROS= -ms
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../usr.sbin/config/SMM.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/03.fsck/Makefile b/share/doc/smm/03.fsck/Makefile
new file mode 100644
index 0000000..fbdc009
--- /dev/null
+++ b/share/doc/smm/03.fsck/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= smm/03.fsck
+SRCS= 0.t 1.t 2.t 3.t 4.t
+MACROS= -ms
+SRCDIR= ${.CURDIR}/../../../../sbin/fsck_ffs/SMM.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/04.quotas/Makefile b/share/doc/smm/04.quotas/Makefile
new file mode 100644
index 0000000..e3c68ff
--- /dev/null
+++ b/share/doc/smm/04.quotas/Makefile
@@ -0,0 +1,8 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= smm/04.quotas
+SRCS= quotas.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/04.quotas/quotas.ms b/share/doc/smm/04.quotas/quotas.ms
new file mode 100644
index 0000000..3691830
--- /dev/null
+++ b/share/doc/smm/04.quotas/quotas.ms
@@ -0,0 +1,318 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)quotas.ms 8.1 (Berkeley) 6/8/93
+.\"
+.EH 'SMM:4-%''Disc Quotas in a \s-2UNIX\s+2 Environment'
+.OH 'Disc Quotas in a \s-2UNIX\s+2 Environment''SMM:4-%'
+.ND 5th July, 1983
+.TL
+Disc Quotas in a \s-2UNIX\s+2\s-3\u*\d\s0 Environment
+.FS
+* UNIX is a trademark of Bell Laboratories.
+.FE
+.AU
+Robert Elz
+.AI
+Department of Computer Science
+University of Melbourne,
+Parkville,
+Victoria,
+Australia.
+.AB
+.PP
+In most computing environments, disc space is not
+infinite.
+The disc quota system provides a mechanism
+to control usage of disc space, on an
+individual basis.
+.PP
+Quotas may be set for each individual user, on any, or
+all filesystems.
+.PP
+The quota system will warn users when they
+exceed their allotted limit, but allow some
+extra space for current work.
+Repeatedly remaining over quota at logout,
+will cause a fatal over quota condition eventually.
+.PP
+The quota system is an optional part of
+\s-2VMUNIX\s0 that may be included when the
+system is configured.
+.AE
+.NH 1
+Users' view of disc quotas
+.PP
+To most users, disc quotas will either be of no concern,
+or a fact of life that cannot be avoided.
+The
+\fIquota\fP\|(1)
+command will provide information on any disc quotas
+that may have been imposed upon a user.
+.PP
+There are two individual possible quotas that may be
+imposed, usually if one is, both will be.
+A limit can be set on the amount of space a user
+can occupy, and there may be a limit on the number
+of files (inodes) he can own.
+.PP
+.I Quota
+provides information on the quotas that have
+been set by the system administrators, in each
+of these areas, and current usage.
+.PP
+There are four numbers for each limit, the current
+usage, soft limit (quota), hard limit, and number
+of remaining login warnings.
+The soft limit is the number of 1K blocks (or files)
+that the user is expected to remain below.
+Each time the user's usage goes past this limit,
+he will be warned.
+The hard limit cannot be exceeded.
+If a user's usage reaches this number, further
+requests for space (or attempts to create a file)
+will fail with an EDQUOT error, and the first time
+this occurs, a message will be written to the user's
+terminal.
+Only one message will be output, until space occupied
+is reduced below the limit, and reaches it again,
+in order to avoid continual noise from those
+programs that ignore write errors.
+.PP
+Whenever a user logs in with a usage greater than
+his soft limit, he will be warned, and his login
+warning count decremented.
+When he logs in under quota, the counter is reset
+to its maximum value (which is a system configuration
+parameter, that is typically 3).
+If the warning count should ever reach zero (caused
+by three successive logins over quota), the
+particular limit that has been exceeded will be treated
+as if the hard limit has been reached, and no
+more resources will be allocated to the user.
+The \fBonly\fP way to reset this condition is
+to reduce usage below quota, then log in again.
+.NH 2
+Surviving when quota limit is reached
+.PP
+In most cases, the only way to recover from over
+quota conditions, is to abort whatever activity was in progress
+on the filesystem that has reached its limit, remove
+sufficient files to bring the limit back below quota,
+and retry the failed program.
+.PP
+However, if you are in the editor and a write fails
+because of an over quota situation, that is not
+a suitable course of action, as it is most likely
+that initially attempting to write the file
+will have truncated its previous contents, so should
+the editor be aborted without correctly writing the
+file not only will the recent changes be lost, but
+possibly much, or even all, of the data
+that previously existed.
+.PP
+There are several possible safe exits for a user
+caught in this situation.
+He may use the editor \fB!\fP shell escape command to
+examine his file space, and remove surplus files.
+Alternatively, using \fIcsh\fP, he may suspend the
+editor, remove some files, then resume it.
+A third possibility, is to write the file to
+some other filesystem (perhaps to a file on /tmp)
+where the user's quota has not been exceeded.
+Then after rectifying the quota situation,
+the file can be moved back to the filesystem
+it belongs on.
+.NH 1
+Administering the quota system
+.PP
+To set up and establish the disc quota system,
+there are several steps necessary to be performed
+by the system administrator.
+.PP
+First, the system must be configured to include
+the disc quota sub-system.
+This is done by including the line:
+.DS
+options QUOTA
+.DE
+in the system configuration file, then running
+\fIconfig\fP\|(8)
+followed by a system configuration\s-3\u*\d\s0.
+.FS
+* See also the document ``Building 4.2BSD UNIX Systems with Config''.
+.FE
+.PP
+Second, a decision as to what filesystems need to have
+quotas applied needs to be made.
+Usually, only filesystems that house users' home directories,
+or other user files, will need to be subjected to
+the quota system, though it may also prove useful to
+also include \fB/usr\fR.
+If possible, \fB/tmp\fP should usually be free of quotas.
+.PP
+Having decided on which filesystems quotas need to be
+set upon, the administrator should then allocate the
+available space amongst the competing needs. How this
+should be done is (way) beyond the scope of this document.
+.PP
+Then, the
+\fIedquota\fP\|(8)
+command can be used to actually set the limits desired upon
+each user. Where a number of users are to be given the
+same quotas (a common occurrence) the \fB\-p\fP switch
+to edquota will allow this to be easily accomplished.
+.PP
+Once the quotas are set, ready to operate, the system
+must be informed to enforce quotas on the desired filesystems.
+This is accomplished with the
+\fIquotaon\fP\|(8)
+command.
+.I Quotaon
+will either enable quotas for a particular filesystem, or
+with the \fB\-a\fP switch, will enable quotas for each
+filesystem indicated in \fB/etc/fstab\fP as using quotas.
+See
+\fIfstab\fP\|(5)
+for details.
+Most sites using the quota system, will include the
+line
+.DS C
+/etc/quotaon -a
+.DE
+in \fB/etc/rc.local\fP.
+.PP
+Should quotas need to be disabled, the
+\fIquotaoff\fP(8)
+command will do that, however, should the filesystem be
+about to be dismounted, the
+\fIumount\fP\|(8)
+command will disable quotas immediately before the
+filesystem is unmounted.
+This is actually an effect of the
+\fIumount\fP\|(2)
+system call, and it guarantees that the quota system
+will not be disabled if the umount would fail
+because the filesystem is not idle.
+.PP
+Periodically (certainly after each reboot, and when quotas
+are first enabled for a filesystem), the records retained
+in the quota file should be checked for consistency with
+the actual number of blocks and files allocated to
+the user.
+The
+\fIquotacheck\fP\|(8)
+command can be used to accomplish this.
+It is not necessary to dismount the filesystem, or disable
+the quota system to run this command, though on
+active filesystems inaccurate results may occur.
+This does no real harm in most cases, another run of
+.I quotacheck
+when the filesystem is idle will certainly correct any inaccuracy.
+.PP
+The super-user may use the
+\fIquota\fP\|(1)
+command to examine the usage and quotas of any user, and
+the
+\fIrepquota\fP\|(8)
+command may be used to check the usages and limits for
+all users on a filesystem.
+.NH 1
+Some implementation detail.
+.PP
+Disc quota usage and information is stored in a file on the
+filesystem that the quotas are to be applied to.
+Conventionally, this file is \fBquotas\fR in the root of
+the filesystem.
+While this name is not known to the system in any way,
+several of the user level utilities "know" it, and
+choosing any other name would not be wise.
+.PP
+The data in the file comprises an array of structures, indexed
+by uid, one structure for each user on the system (whether
+the user has a quota on this filesystem or not).
+If the uid space is sparse, then the file may have holes
+in it, which would be lost by copying, so it is best to
+avoid this.
+.PP
+The system is informed of the existence of the quota
+file by the
+\fIsetquota\fP\|(2)
+system call.
+It then reads the quota entries for each user currently
+active, then for any files open owned by users who
+are not currently active.
+Each subsequent open of a file on the filesystem, will
+be accompanied by a pairing with its quota information.
+In most cases this information will be retained in core,
+either because the user who owns the file is running some
+process, because other files are open owned by the same
+user, or because some file (perhaps this one) was recently
+accessed.
+In memory, the quota information is kept hashed by user-id
+and filesystem, and retained in an LRU chain so recently
+released data can be easily reclaimed.
+Information about those users whose last process has
+recently terminated is also retained in this way.
+.PP
+Each time a block is accessed or released, and each time an inode
+is allocated or freed, the quota system gets told
+about it, and in the case of allocations, gets the
+opportunity to object.
+.PP
+Measurements have shown
+that the quota code uses a very small percentage of the system
+cpu time consumed in writing a new block to disc.
+.NH 1
+Acknowledgments
+.PP
+The current disc quota system is loosely based upon a very
+early scheme implemented at the University of New South
+Wales, and Sydney University in the mid 70's. That system
+implemented a single combined limit for both files and blocks
+on all filesystems.
+.PP
+A later system was implemented at the University of Melbourne
+by the author, but was not kept highly accurately, eg:
+chown's (etc) did not affect quotas, nor did i/o to a file
+other than one owned by the instigator.
+.PP
+The current system has been running (with only minor modifications)
+since January 82 at Melbourne.
+It is actually just a small part of a much broader resource
+control scheme, which is capable of controlling almost
+anything that is usually uncontrolled in unix. The rest
+of this is, as yet, still in a state where it is far too
+subject to change to be considered for distribution.
+.PP
+For the 4.2BSD release, much work has been done to clean
+up and sanely incorporate the quota code by Sam Leffler and
+Kirk McKusick at The University of California at Berkeley.
diff --git a/share/doc/smm/05.fastfs/0.t b/share/doc/smm/05.fastfs/0.t
new file mode 100644
index 0000000..9cc759b
--- /dev/null
+++ b/share/doc/smm/05.fastfs/0.t
@@ -0,0 +1,159 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 8.1 (Berkeley) 6/8/93
+.\"
+.EQ
+delim $$
+.EN
+.if n .ND
+.TL
+A Fast File System for UNIX*
+.EH 'SMM:05-%''A Fast File System for \s-2UNIX\s+2'
+.OH 'A Fast File System for \s-2UNIX\s+2''SMM:05-%'
+.AU
+Marshall Kirk McKusick, William N. Joy\(dg,
+Samuel J. Leffler\(dd, Robert S. Fabry
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, CA 94720
+.AB
+.FS
+* UNIX is a trademark of Bell Laboratories.
+.FE
+.FS
+\(dg William N. Joy is currently employed by:
+Sun Microsystems, Inc, 2550 Garcia Avenue, Mountain View, CA 94043
+.FE
+.FS
+\(dd Samuel J. Leffler is currently employed by:
+Lucasfilm Ltd., PO Box 2009, San Rafael, CA 94912
+.FE
+.FS
+This work was done under grants from
+the National Science Foundation under grant MCS80-05144,
+and the Defense Advance Research Projects Agency (DoD) under
+ARPA Order No. 4031 monitored by Naval Electronic System Command under
+Contract No. N00039-82-C-0235.
+.FE
+A reimplementation of the UNIX file system is described.
+The reimplementation provides substantially higher throughput
+rates by using more flexible allocation policies
+that allow better locality of reference and can
+be adapted to a wide range of peripheral and processor characteristics.
+The new file system clusters data that is sequentially accessed
+and provides two block sizes to allow fast access to large files
+while not wasting large amounts of space for small files.
+File access rates of up to ten times faster than the traditional
+UNIX file system are experienced.
+Long needed enhancements to the programmers'
+interface are discussed.
+These include a mechanism to place advisory locks on files,
+extensions of the name space across file systems,
+the ability to use long file names,
+and provisions for administrative control of resource usage.
+.sp
+.LP
+Revised February 18, 1984
+.AE
+.LP
+.sp 2
+CR Categories and Subject Descriptors:
+D.4.3
+.B "[Operating Systems]":
+File Systems Management \-
+.I "file organization, directory structures, access methods";
+D.4.2
+.B "[Operating Systems]":
+Storage Management \-
+.I "allocation/deallocation strategies, secondary storage devices";
+D.4.8
+.B "[Operating Systems]":
+Performance \-
+.I "measurements, operational analysis";
+H.3.2
+.B "[Information Systems]":
+Information Storage \-
+.I "file organization"
+.sp
+Additional Keywords and Phrases:
+UNIX,
+file system organization,
+file system performance,
+file system design,
+application program interface.
+.sp
+General Terms:
+file system,
+measurement,
+performance.
+.bp
+.ce
+.B "TABLE OF CONTENTS"
+.LP
+.sp 1
+.nf
+.B "1. Introduction"
+.LP
+.sp .5v
+.nf
+.B "2. Old file system
+.LP
+.sp .5v
+.nf
+.B "3. New file system organization
+3.1. Optimizing storage utilization
+3.2. File system parameterization
+3.3. Layout policies
+.LP
+.sp .5v
+.nf
+.B "4. Performance
+.LP
+.sp .5v
+.nf
+.B "5. File system functional enhancements
+5.1. Long file names
+5.2. File locking
+5.3. Symbolic links
+5.4. Rename
+5.5. Quotas
+.LP
+.sp .5v
+.nf
+.B Acknowledgements
+.LP
+.sp .5v
+.nf
+.B References
diff --git a/share/doc/smm/05.fastfs/1.t b/share/doc/smm/05.fastfs/1.t
new file mode 100644
index 0000000..dbdafc4
--- /dev/null
+++ b/share/doc/smm/05.fastfs/1.t
@@ -0,0 +1,112 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 8.1 (Berkeley) 6/8/93
+.\"
+.ds RH Introduction
+.NH
+Introduction
+.PP
+This paper describes the changes from the original 512 byte UNIX file
+system to the new one released with the 4.2 Berkeley Software Distribution.
+It presents the motivations for the changes,
+the methods used to effect these changes,
+the rationale behind the design decisions,
+and a description of the new implementation.
+This discussion is followed by a summary of
+the results that have been obtained,
+directions for future work,
+and the additions and changes
+that have been made to the facilities that are
+available to programmers.
+.PP
+The original UNIX system that runs on the PDP-11\(dg
+.FS
+\(dg DEC, PDP, VAX, MASSBUS, and UNIBUS are
+trademarks of Digital Equipment Corporation.
+.FE
+has simple and elegant file system facilities. File system input/output
+is buffered by the kernel;
+there are no alignment constraints on
+data transfers and all operations are made to appear synchronous.
+All transfers to the disk are in 512 byte blocks, which can be placed
+arbitrarily within the data area of the file system. Virtually
+no constraints other than available disk space are placed on file growth
+[Ritchie74], [Thompson78].*
+.FS
+* In practice, a file's size is constrained to be less than about
+one gigabyte.
+.FE
+.PP
+When used on the VAX-11 together with other UNIX enhancements,
+the original 512 byte UNIX file
+system is incapable of providing the data throughput rates
+that many applications require.
+For example,
+applications
+such as VLSI design and image processing
+do a small amount of processing
+on a large quantities of data and
+need to have a high throughput from the file system.
+High throughput rates are also needed by programs
+that map files from the file system into large virtual
+address spaces.
+Paging data in and out of the file system is likely
+to occur frequently [Ferrin82b].
+This requires a file system providing
+higher bandwidth than the original 512 byte UNIX
+one that provides only about
+two percent of the maximum disk bandwidth or about
+20 kilobytes per second per arm [White80], [Smith81b].
+.PP
+Modifications have been made to the UNIX file system to improve
+its performance.
+Since the UNIX file system interface
+is well understood and not inherently slow,
+this development retained the abstraction and simply changed
+the underlying implementation to increase its throughput.
+Consequently, users of the system have not been faced with
+massive software conversion.
+.PP
+Problems with file system performance have been dealt with
+extensively in the literature; see [Smith81a] for a survey.
+Previous work to improve the UNIX file system performance has been
+done by [Ferrin82a].
+The UNIX operating system drew many of its ideas from Multics,
+a large, high performance operating system [Feiertag71].
+Other work includes Hydra [Almes78],
+Spice [Thompson80],
+and a file system for a LISP environment [Symbolics81].
+A good introduction to the physical latencies of disks is
+described in [Pechura83].
+.ds RH Old file system
+.sp 2
+.ne 1i
diff --git a/share/doc/smm/05.fastfs/2.t b/share/doc/smm/05.fastfs/2.t
new file mode 100644
index 0000000..33d9ade
--- /dev/null
+++ b/share/doc/smm/05.fastfs/2.t
@@ -0,0 +1,143 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 8.1 (Berkeley) 6/8/93
+.\"
+.ds RH Old file system
+.NH
+Old File System
+.PP
+In the file system developed at Bell Laboratories
+(the ``traditional'' file system),
+each disk drive is divided into one or more
+partitions. Each of these disk partitions may contain
+one file system. A file system never spans multiple
+partitions.\(dg
+.FS
+\(dg By ``partition'' here we refer to the subdivision of
+physical space on a disk drive. In the traditional file
+system, as in the new file system, file systems are really
+located in logical disk partitions that may overlap. This
+overlapping is made available, for example,
+to allow programs to copy entire disk drives containing multiple
+file systems.
+.FE
+A file system is described by its super-block,
+which contains the basic parameters of the file system.
+These include the number of data blocks in the file system,
+a count of the maximum number of files,
+and a pointer to the \fIfree list\fP, a linked
+list of all the free blocks in the file system.
+.PP
+Within the file system are files.
+Certain files are distinguished as directories and contain
+pointers to files that may themselves be directories.
+Every file has a descriptor associated with it called an
+.I "inode".
+An inode contains information describing ownership of the file,
+time stamps marking last modification and access times for the file,
+and an array of indices that point to the data blocks for the file.
+For the purposes of this section, we assume that the first 8 blocks
+of the file are directly referenced by values stored
+in an inode itself*.
+.FS
+* The actual number may vary from system to system, but is usually in
+the range 5-13.
+.FE
+An inode may also contain references to indirect blocks
+containing further data block indices.
+In a file system with a 512 byte block size, a singly indirect
+block contains 128 further block addresses,
+a doubly indirect block contains 128 addresses of further singly indirect
+blocks,
+and a triply indirect block contains 128 addresses of further doubly indirect
+blocks.
+.PP
+A 150 megabyte traditional UNIX file system consists
+of 4 megabytes of inodes followed by 146 megabytes of data.
+This organization segregates the inode information from the data;
+thus accessing a file normally incurs a long seek from the
+file's inode to its data.
+Files in a single directory are not typically allocated
+consecutive slots in the 4 megabytes of inodes,
+causing many non-consecutive blocks of inodes
+to be accessed when executing
+operations on the inodes of several files in a directory.
+.PP
+The allocation of data blocks to files is also suboptimum.
+The traditional
+file system never transfers more than 512 bytes per disk transaction
+and often finds that the next sequential data block is not on the same
+cylinder, forcing seeks between 512 byte transfers.
+The combination of the small block size,
+limited read-ahead in the system,
+and many seeks severely limits file system throughput.
+.PP
+The first work at Berkeley on the UNIX file system attempted to improve both
+reliability and throughput.
+The reliability was improved by staging modifications
+to critical file system information so that they could
+either be completed or repaired cleanly by a program
+after a crash [Kowalski78].
+The file system performance was improved by a factor of more than two by
+changing the basic block size from 512 to 1024 bytes.
+The increase was because of two factors:
+each disk transfer accessed twice as much data,
+and most files could be described without need to access
+indirect blocks since the direct blocks contained twice as much data.
+The file system with these changes will henceforth be referred to as the
+.I "old file system."
+.PP
+This performance improvement gave a strong indication that
+increasing the block size was a good method for improving
+throughput.
+Although the throughput had doubled,
+the old file system was still using only about
+four percent of the disk bandwidth.
+The main problem was that although the free list was initially
+ordered for optimal access,
+it quickly became scrambled as files were created and removed.
+Eventually the free list became entirely random,
+causing files to have their blocks allocated randomly over the disk.
+This forced a seek before every block access.
+Although old file systems provided transfer rates of up
+to 175 kilobytes per second when they were first created,
+this rate deteriorated to 30 kilobytes per second after a
+few weeks of moderate use because of this
+randomization of data block placement.
+There was no way of restoring the performance of an old file system
+except to dump, rebuild, and restore the file system.
+Another possibility, as suggested by [Maruyama76],
+would be to have a process that periodically
+reorganized the data on the disk to restore locality.
+.ds RH New file system
+.sp 2
+.ne 1i
diff --git a/share/doc/smm/05.fastfs/3.t b/share/doc/smm/05.fastfs/3.t
new file mode 100644
index 0000000..23db86a
--- /dev/null
+++ b/share/doc/smm/05.fastfs/3.t
@@ -0,0 +1,598 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)3.t 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.\"
+.ds RH New file system
+.NH
+New file system organization
+.PP
+In the new file system organization (as in the
+old file system organization),
+each disk drive contains one or more file systems.
+A file system is described by its super-block,
+located at the beginning of the file system's disk partition.
+Because the super-block contains critical data,
+it is replicated to protect against catastrophic loss.
+This is done when the file system is created;
+since the super-block data does not change,
+the copies need not be referenced unless a head crash
+or other hard disk error causes the default super-block
+to be unusable.
+.PP
+To insure that it is possible to create files as large as
+.if n 2 ** 32
+.if t $2 sup 32$
+bytes with only two levels of indirection,
+the minimum size of a file system block is 4096 bytes.
+The size of file system blocks can be any power of two
+greater than or equal to 4096.
+The block size of a file system is recorded in the
+file system's super-block
+so it is possible for file systems with different block sizes
+to be simultaneously accessible on the same system.
+The block size must be decided at the time that
+the file system is created;
+it cannot be subsequently changed without rebuilding the file system.
+.PP
+The new file system organization divides a disk partition
+into one or more areas called
+.I "cylinder groups".
+A cylinder group is comprised of one or more consecutive
+cylinders on a disk.
+Associated with each cylinder group is some bookkeeping information
+that includes a redundant copy of the super-block,
+space for inodes,
+a bit map describing available blocks in the cylinder group,
+and summary information describing the usage of data blocks
+within the cylinder group.
+The bit map of available blocks in the cylinder group replaces
+the traditional file system's free list.
+For each cylinder group a static number of inodes
+is allocated at file system creation time.
+The default policy is to allocate one inode for each 2048
+bytes of space in the cylinder group, expecting this
+to be far more than will ever be needed.
+.PP
+All the cylinder group bookkeeping information could be
+placed at the beginning of each cylinder group.
+However if this approach were used,
+all the redundant information would be on the top platter.
+A single hardware failure that destroyed the top platter
+could cause the loss of all redundant copies of the super-block.
+Thus the cylinder group bookkeeping information
+begins at a varying offset from the beginning of the cylinder group.
+The offset for each successive cylinder group is calculated to be
+about one track further from the beginning of the cylinder group
+than the preceding cylinder group.
+In this way the redundant
+information spirals down into the pack so that any single track, cylinder,
+or platter can be lost without losing all copies of the super-block.
+Except for the first cylinder group,
+the space between the beginning of the cylinder group
+and the beginning of the cylinder group information
+is used for data blocks.\(dg
+.FS
+\(dg While it appears that the first cylinder group could be laid
+out with its super-block at the ``known'' location,
+this would not work for file systems
+with blocks sizes of 16 kilobytes or greater.
+This is because of a requirement that the first 8 kilobytes of the disk
+be reserved for a bootstrap program and a separate requirement that
+the cylinder group information begin on a file system block boundary.
+To start the cylinder group on a file system block boundary,
+file systems with block sizes larger than 8 kilobytes
+would have to leave an empty space between the end of
+the boot block and the beginning of the cylinder group.
+Without knowing the size of the file system blocks,
+the system would not know what roundup function to use
+to find the beginning of the first cylinder group.
+.FE
+.NH 2
+Optimizing storage utilization
+.PP
+Data is laid out so that larger blocks can be transferred
+in a single disk transaction, greatly increasing file system throughput.
+As an example, consider a file in the new file system
+composed of 4096 byte data blocks.
+In the old file system this file would be composed of 1024 byte blocks.
+By increasing the block size, disk accesses in the new file
+system may transfer up to four times as much information per
+disk transaction.
+In large files, several
+4096 byte blocks may be allocated from the same cylinder so that
+even larger data transfers are possible before requiring a seek.
+.PP
+The main problem with
+larger blocks is that most UNIX
+file systems are composed of many small files.
+A uniformly large block size wastes space.
+Table 1 shows the effect of file system
+block size on the amount of wasted space in the file system.
+The files measured to obtain these figures reside on
+one of our time sharing
+systems that has roughly 1.2 gigabytes of on-line storage.
+The measurements are based on the active user file systems containing
+about 920 megabytes of formatted space.
+.KF
+.DS B
+.TS
+box;
+l|l|l
+a|n|l.
+Space used % waste Organization
+_
+775.2 Mb 0.0 Data only, no separation between files
+807.8 Mb 4.2 Data only, each file starts on 512 byte boundary
+828.7 Mb 6.9 Data + inodes, 512 byte block UNIX file system
+866.5 Mb 11.8 Data + inodes, 1024 byte block UNIX file system
+948.5 Mb 22.4 Data + inodes, 2048 byte block UNIX file system
+1128.3 Mb 45.6 Data + inodes, 4096 byte block UNIX file system
+.TE
+Table 1 \- Amount of wasted space as a function of block size.
+.DE
+.KE
+The space wasted is calculated to be the percentage of space
+on the disk not containing user data.
+As the block size on the disk
+increases, the waste rises quickly, to an intolerable
+45.6% waste with 4096 byte file system blocks.
+.PP
+To be able to use large blocks without undue waste,
+small files must be stored in a more efficient way.
+The new file system accomplishes this goal by allowing the division
+of a single file system block into one or more
+.I "fragments".
+The file system fragment size is specified
+at the time that the file system is created;
+each file system block can optionally be broken into
+2, 4, or 8 fragments, each of which is addressable.
+The lower bound on the size of these fragments is constrained
+by the disk sector size,
+typically 512 bytes.
+The block map associated with each cylinder group
+records the space available in a cylinder group
+at the fragment level;
+to determine if a block is available, aligned fragments are examined.
+Figure 1 shows a piece of a map from a 4096/1024 file system.
+.KF
+.DS B
+.TS
+box;
+l|c c c c.
+Bits in map XXXX XXOO OOXX OOOO
+Fragment numbers 0-3 4-7 8-11 12-15
+Block numbers 0 1 2 3
+.TE
+Figure 1 \- Example layout of blocks and fragments in a 4096/1024 file system.
+.DE
+.KE
+Each bit in the map records the status of a fragment;
+an ``X'' shows that the fragment is in use,
+while an ``O'' shows that the fragment is available for allocation.
+In this example,
+fragments 0\-5, 10, and 11 are in use,
+while fragments 6\-9, and 12\-15 are free.
+Fragments of adjoining blocks cannot be used as a full block,
+even if they are large enough.
+In this example,
+fragments 6\-9 cannot be allocated as a full block;
+only fragments 12\-15 can be coalesced into a full block.
+.PP
+On a file system with a block size of 4096 bytes
+and a fragment size of 1024 bytes,
+a file is represented by zero or more 4096 byte blocks of data,
+and possibly a single fragmented block.
+If a file system block must be fragmented to obtain
+space for a small amount of data,
+the remaining fragments of the block are made
+available for allocation to other files.
+As an example consider an 11000 byte file stored on
+a 4096/1024 byte file system.
+This file would uses two full size blocks and one
+three fragment portion of another block.
+If no block with three aligned fragments is
+available at the time the file is created,
+a full size block is split yielding the necessary
+fragments and a single unused fragment.
+This remaining fragment can be allocated to another file as needed.
+.PP
+Space is allocated to a file when a program does a \fIwrite\fP
+system call.
+Each time data is written to a file, the system checks to see if
+the size of the file has increased*.
+.FS
+* A program may be overwriting data in the middle of an existing file
+in which case space would already have been allocated.
+.FE
+If the file needs to be expanded to hold the new data,
+one of three conditions exists:
+.IP 1)
+There is enough space left in an already allocated
+block or fragment to hold the new data.
+The new data is written into the available space.
+.IP 2)
+The file contains no fragmented blocks (and the last
+block in the file
+contains insufficient space to hold the new data).
+If space exists in a block already allocated,
+the space is filled with new data.
+If the remainder of the new data contains more than
+a full block of data, a full block is allocated and
+the first full block of new data is written there.
+This process is repeated until less than a full block
+of new data remains.
+If the remaining new data to be written will
+fit in less than a full block,
+a block with the necessary fragments is located,
+otherwise a full block is located.
+The remaining new data is written into the located space.
+.IP 3)
+The file contains one or more fragments (and the
+fragments contain insufficient space to hold the new data).
+If the size of the new data plus the size of the data
+already in the fragments exceeds the size of a full block,
+a new block is allocated.
+The contents of the fragments are copied
+to the beginning of the block
+and the remainder of the block is filled with new data.
+The process then continues as in (2) above.
+Otherwise, if the new data to be written will
+fit in less than a full block,
+a block with the necessary fragments is located,
+otherwise a full block is located.
+The contents of the existing fragments
+appended with the new data
+are written into the allocated space.
+.PP
+The problem with expanding a file one fragment at a
+a time is that data may be copied many times as a
+fragmented block expands to a full block.
+Fragment reallocation can be minimized
+if the user program writes a full block at a time,
+except for a partial block at the end of the file.
+Since file systems with different block sizes may reside on
+the same system,
+the file system interface has been extended to provide
+application programs the optimal size for a read or write.
+For files the optimal size is the block size of the file system
+on which the file is being accessed.
+For other objects, such as pipes and sockets,
+the optimal size is the underlying buffer size.
+This feature is used by the Standard
+Input/Output Library,
+a package used by most user programs.
+This feature is also used by
+certain system utilities such as archivers and loaders
+that do their own input and output management
+and need the highest possible file system bandwidth.
+.PP
+The amount of wasted space in the 4096/1024 byte new file system
+organization is empirically observed to be about the same as in the
+1024 byte old file system organization.
+A file system with 4096 byte blocks and 512 byte fragments
+has about the same amount of wasted space as the 512 byte
+block UNIX file system.
+The new file system uses less space
+than the 512 byte or 1024 byte
+file systems for indexing information for
+large files and the same amount of space
+for small files.
+These savings are offset by the need to use
+more space for keeping track of available free blocks.
+The net result is about the same disk utilization
+when a new file system's fragment size
+equals an old file system's block size.
+.PP
+In order for the layout policies to be effective,
+a file system cannot be kept completely full.
+For each file system there is a parameter, termed
+the free space reserve, that
+gives the minimum acceptable percentage of file system
+blocks that should be free.
+If the number of free blocks drops below this level
+only the system administrator can continue to allocate blocks.
+The value of this parameter may be changed at any time,
+even when the file system is mounted and active.
+The transfer rates that appear in section 4 were measured on file
+systems kept less than 90% full (a reserve of 10%).
+If the number of free blocks falls to zero,
+the file system throughput tends to be cut in half,
+because of the inability of the file system to localize
+blocks in a file.
+If a file system's performance degrades because
+of overfilling, it may be restored by removing
+files until the amount of free space once again
+reaches the minimum acceptable level.
+Access rates for files created during periods of little
+free space may be restored by moving their data once enough
+space is available.
+The free space reserve must be added to the
+percentage of waste when comparing the organizations given
+in Table 1.
+Thus, the percentage of waste in
+an old 1024 byte UNIX file system is roughly
+comparable to a new 4096/512 byte file system
+with the free space reserve set at 5%.
+(Compare 11.8% wasted with the old file system
+to 6.9% waste + 5% reserved space in the
+new file system.)
+.NH 2
+File system parameterization
+.PP
+Except for the initial creation of the free list,
+the old file system ignores the parameters of the underlying hardware.
+It has no information about either the physical characteristics
+of the mass storage device,
+or the hardware that interacts with it.
+A goal of the new file system is to parameterize the
+processor capabilities and
+mass storage characteristics
+so that blocks can be allocated in an
+optimum configuration-dependent way.
+Parameters used include the speed of the processor,
+the hardware support for mass storage transfers,
+and the characteristics of the mass storage devices.
+Disk technology is constantly improving and
+a given installation can have several different disk technologies
+running on a single processor.
+Each file system is parameterized so that it can be
+adapted to the characteristics of the disk on which
+it is placed.
+.PP
+For mass storage devices such as disks,
+the new file system tries to allocate new blocks
+on the same cylinder as the previous block in the same file.
+Optimally, these new blocks will also be
+rotationally well positioned.
+The distance between ``rotationally optimal'' blocks varies greatly;
+it can be a consecutive block
+or a rotationally delayed block
+depending on system characteristics.
+On a processor with an input/output channel that does not require
+any processor intervention between mass storage transfer requests,
+two consecutive disk blocks can often be accessed
+without suffering lost time because of an intervening disk revolution.
+For processors without input/output channels,
+the main processor must field an interrupt and
+prepare for a new disk transfer.
+The expected time to service this interrupt and
+schedule a new disk transfer depends on the
+speed of the main processor.
+.PP
+The physical characteristics of each disk include
+the number of blocks per track and the rate at which
+the disk spins.
+The allocation routines use this information to calculate
+the number of milliseconds required to skip over a block.
+The characteristics of the processor include
+the expected time to service an interrupt and schedule a
+new disk transfer.
+Given a block allocated to a file,
+the allocation routines calculate the number of blocks to
+skip over so that the next block in the file will
+come into position under the disk head in the expected
+amount of time that it takes to start a new
+disk transfer operation.
+For programs that sequentially access large amounts of data,
+this strategy minimizes the amount of time spent waiting for
+the disk to position itself.
+.PP
+To ease the calculation of finding rotationally optimal blocks,
+the cylinder group summary information includes
+a count of the available blocks in a cylinder
+group at different rotational positions.
+Eight rotational positions are distinguished,
+so the resolution of the
+summary information is 2 milliseconds for a typical 3600
+revolution per minute drive.
+The super-block contains a vector of lists called
+.I "rotational layout tables".
+The vector is indexed by rotational position.
+Each component of the vector
+lists the index into the block map for every data block contained
+in its rotational position.
+When looking for an allocatable block,
+the system first looks through the summary counts for a rotational
+position with a non-zero block count.
+It then uses the index of the rotational position to find the appropriate
+list to use to index through
+only the relevant parts of the block map to find a free block.
+.PP
+The parameter that defines the
+minimum number of milliseconds between the completion of a data
+transfer and the initiation of
+another data transfer on the same cylinder
+can be changed at any time,
+even when the file system is mounted and active.
+If a file system is parameterized to lay out blocks with
+a rotational separation of 2 milliseconds,
+and the disk pack is then moved to a system that has a
+processor requiring 4 milliseconds to schedule a disk operation,
+the throughput will drop precipitously because of lost disk revolutions
+on nearly every block.
+If the eventual target machine is known,
+the file system can be parameterized for it
+even though it is initially created on a different processor.
+Even if the move is not known in advance,
+the rotational layout delay can be reconfigured after the disk is moved
+so that all further allocation is done based on the
+characteristics of the new host.
+.NH 2
+Layout policies
+.PP
+The file system layout policies are divided into two distinct parts.
+At the top level are global policies that use file system
+wide summary information to make decisions regarding
+the placement of new inodes and data blocks.
+These routines are responsible for deciding the
+placement of new directories and files.
+They also calculate rotationally optimal block layouts,
+and decide when to force a long seek to a new cylinder group
+because there are insufficient blocks left
+in the current cylinder group to do reasonable layouts.
+Below the global policy routines are
+the local allocation routines that use a locally optimal scheme to
+lay out data blocks.
+.PP
+Two methods for improving file system performance are to increase
+the locality of reference to minimize seek latency
+as described by [Trivedi80], and
+to improve the layout of data to make larger transfers possible
+as described by [Nevalainen77].
+The global layout policies try to improve performance
+by clustering related information.
+They cannot attempt to localize all data references,
+but must also try to spread unrelated data
+among different cylinder groups.
+If too much localization is attempted,
+the local cylinder group may run out of space
+forcing the data to be scattered to non-local cylinder groups.
+Taken to an extreme,
+total localization can result in a single huge cluster of data
+resembling the old file system.
+The global policies try to balance the two conflicting
+goals of localizing data that is concurrently accessed
+while spreading out unrelated data.
+.PP
+One allocatable resource is inodes.
+Inodes are used to describe both files and directories.
+Inodes of files in the same directory are frequently accessed together.
+For example, the ``list directory'' command often accesses
+the inode for each file in a directory.
+The layout policy tries to place all the inodes of
+files in a directory in the same cylinder group.
+To ensure that files are distributed throughout the disk,
+a different policy is used for directory allocation.
+A new directory is placed in a cylinder group that has a greater
+than average number of free inodes,
+and the smallest number of directories already in it.
+The intent of this policy is to allow the inode clustering policy
+to succeed most of the time.
+The allocation of inodes within a cylinder group is done using a
+next free strategy.
+Although this allocates the inodes randomly within a cylinder group,
+all the inodes for a particular cylinder group can be read with
+8 to 16 disk transfers.
+(At most 16 disk transfers are required because a cylinder
+group may have no more than 2048 inodes.)
+This puts a small and constant upper bound on the number of
+disk transfers required to access the inodes
+for all the files in a directory.
+In contrast, the old file system typically requires
+one disk transfer to fetch the inode for each file in a directory.
+.PP
+The other major resource is data blocks.
+Since data blocks for a file are typically accessed together,
+the policy routines try to place all data
+blocks for a file in the same cylinder group,
+preferably at rotationally optimal positions in the same cylinder.
+The problem with allocating all the data blocks
+in the same cylinder group is that large files will
+quickly use up available space in the cylinder group,
+forcing a spill over to other areas.
+Further, using all the space in a cylinder group
+causes future allocations for any file in the cylinder group
+to also spill to other areas.
+Ideally none of the cylinder groups should ever become completely full.
+The heuristic solution chosen is to
+redirect block allocation
+to a different cylinder group
+when a file exceeds 48 kilobytes,
+and at every megabyte thereafter.*
+.FS
+* The first spill over point at 48 kilobytes is the point
+at which a file on a 4096 byte block file system first
+requires a single indirect block. This appears to be
+a natural first point at which to redirect block allocation.
+The other spillover points are chosen with the intent of
+forcing block allocation to be redirected when a
+file has used about 25% of the data blocks in a cylinder group.
+In observing the new file system in day to day use, the heuristics appear
+to work well in minimizing the number of completely filled
+cylinder groups.
+.FE
+The newly chosen cylinder group is selected from those cylinder
+groups that have a greater than average number of free blocks left.
+Although big files tend to be spread out over the disk,
+a megabyte of data is typically accessible before
+a long seek must be performed,
+and the cost of one long seek per megabyte is small.
+.PP
+The global policy routines call local allocation routines with
+requests for specific blocks.
+The local allocation routines will
+always allocate the requested block
+if it is free, otherwise it
+allocates a free block of the requested size that is
+rotationally closest to the requested block.
+If the global layout policies had complete information,
+they could always request unused blocks and
+the allocation routines would be reduced to simple bookkeeping.
+However, maintaining complete information is costly;
+thus the implementation of the global layout policy
+uses heuristics that employ only partial information.
+.PP
+If a requested block is not available, the local allocator uses
+a four level allocation strategy:
+.IP 1)
+Use the next available block rotationally closest
+to the requested block on the same cylinder. It is assumed
+here that head switching time is zero. On disk
+controllers where this is not the case, it may be possible
+to incorporate the time required to switch between disk platters
+when constructing the rotational layout tables. This, however,
+has not yet been tried.
+.IP 2)
+If there are no blocks available on the same cylinder,
+use a block within the same cylinder group.
+.IP 3)
+If that cylinder group is entirely full,
+quadratically hash the cylinder group number to choose
+another cylinder group to look for a free block.
+.IP 4)
+Finally if the hash fails, apply an exhaustive search
+to all cylinder groups.
+.PP
+Quadratic hash is used because of its speed in finding
+unused slots in nearly full hash tables [Knuth75].
+File systems that are parameterized to maintain at least
+10% free space rarely use this strategy.
+File systems that are run without maintaining any free
+space typically have so few free blocks that almost any
+allocation is random;
+the most important characteristic of
+the strategy used under such conditions is that the strategy be fast.
+.ds RH Performance
+.sp 2
+.ne 1i
diff --git a/share/doc/smm/05.fastfs/4.t b/share/doc/smm/05.fastfs/4.t
new file mode 100644
index 0000000..15e3923
--- /dev/null
+++ b/share/doc/smm/05.fastfs/4.t
@@ -0,0 +1,252 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)4.t 8.1 (Berkeley) 6/8/93
+.\"
+.ds RH Performance
+.NH
+Performance
+.PP
+Ultimately, the proof of the effectiveness of the
+algorithms described in the previous section
+is the long term performance of the new file system.
+.PP
+Our empirical studies have shown that the inode layout policy has
+been effective.
+When running the ``list directory'' command on a large directory
+that itself contains many directories (to force the system
+to access inodes in multiple cylinder groups),
+the number of disk accesses for inodes is cut by a factor of two.
+The improvements are even more dramatic for large directories
+containing only files,
+disk accesses for inodes being cut by a factor of eight.
+This is most encouraging for programs such as spooling daemons that
+access many small files,
+since these programs tend to flood the
+disk request queue on the old file system.
+.PP
+Table 2 summarizes the measured throughput of the new file system.
+Several comments need to be made about the conditions under which these
+tests were run.
+The test programs measure the rate at which user programs can transfer
+data to or from a file without performing any processing on it.
+These programs must read and write enough data to
+insure that buffering in the
+operating system does not affect the results.
+They are also run at least three times in succession;
+the first to get the system into a known state
+and the second two to insure that the
+experiment has stabilized and is repeatable.
+The tests used and their results are
+discussed in detail in [Kridle83]\(dg.
+.FS
+\(dg A UNIX command that is similar to the reading test that we used is
+``cp file /dev/null'', where ``file'' is eight megabytes long.
+.FE
+The systems were running multi-user but were otherwise quiescent.
+There was no contention for either the CPU or the disk arm.
+The only difference between the UNIBUS and MASSBUS tests
+was the controller.
+All tests used an AMPEX Capricorn 330 megabyte Winchester disk.
+As Table 2 shows, all file system test runs were on a VAX 11/750.
+All file systems had been in production use for at least
+a month before being measured.
+The same number of system calls were performed in all tests;
+the basic system call overhead was a negligible portion of
+the total running time of the tests.
+.KF
+.DS B
+.TS
+box;
+c c|c s s
+c c|c c c.
+Type of Processor and Read
+File System Bus Measured Speed Bandwidth % CPU
+_
+old 1024 750/UNIBUS 29 Kbytes/sec 29/983 3% 11%
+new 4096/1024 750/UNIBUS 221 Kbytes/sec 221/983 22% 43%
+new 8192/1024 750/UNIBUS 233 Kbytes/sec 233/983 24% 29%
+new 4096/1024 750/MASSBUS 466 Kbytes/sec 466/983 47% 73%
+new 8192/1024 750/MASSBUS 466 Kbytes/sec 466/983 47% 54%
+.TE
+.ce 1
+Table 2a \- Reading rates of the old and new UNIX file systems.
+.TS
+box;
+c c|c s s
+c c|c c c.
+Type of Processor and Write
+File System Bus Measured Speed Bandwidth % CPU
+_
+old 1024 750/UNIBUS 48 Kbytes/sec 48/983 5% 29%
+new 4096/1024 750/UNIBUS 142 Kbytes/sec 142/983 14% 43%
+new 8192/1024 750/UNIBUS 215 Kbytes/sec 215/983 22% 46%
+new 4096/1024 750/MASSBUS 323 Kbytes/sec 323/983 33% 94%
+new 8192/1024 750/MASSBUS 466 Kbytes/sec 466/983 47% 95%
+.TE
+.ce 1
+Table 2b \- Writing rates of the old and new UNIX file systems.
+.DE
+.KE
+.PP
+Unlike the old file system,
+the transfer rates for the new file system do not
+appear to change over time.
+The throughput rate is tied much more strongly to the
+amount of free space that is maintained.
+The measurements in Table 2 were based on a file system
+with a 10% free space reserve.
+Synthetic work loads suggest that throughput deteriorates
+to about half the rates given in Table 2 when the file
+systems are full.
+.PP
+The percentage of bandwidth given in Table 2 is a measure
+of the effective utilization of the disk by the file system.
+An upper bound on the transfer rate from the disk is calculated
+by multiplying the number of bytes on a track by the number
+of revolutions of the disk per second.
+The bandwidth is calculated by comparing the data rates
+the file system is able to achieve as a percentage of this rate.
+Using this metric, the old file system is only
+able to use about 3\-5% of the disk bandwidth,
+while the new file system uses up to 47%
+of the bandwidth.
+.PP
+Both reads and writes are faster in the new system than in the old system.
+The biggest factor in this speedup is because of the larger
+block size used by the new file system.
+The overhead of allocating blocks in the new system is greater
+than the overhead of allocating blocks in the old system,
+however fewer blocks need to be allocated in the new system
+because they are bigger.
+The net effect is that the cost per byte allocated is about
+the same for both systems.
+.PP
+In the new file system, the reading rate is always at least
+as fast as the writing rate.
+This is to be expected since the kernel must do more work when
+allocating blocks than when simply reading them.
+Note that the write rates are about the same
+as the read rates in the 8192 byte block file system;
+the write rates are slower than the read rates in the 4096 byte block
+file system.
+The slower write rates occur because
+the kernel has to do twice as many disk allocations per second,
+making the processor unable to keep up with the disk transfer rate.
+.PP
+In contrast the old file system is about 50%
+faster at writing files than reading them.
+This is because the write system call is asynchronous and
+the kernel can generate disk transfer
+requests much faster than they can be serviced,
+hence disk transfers queue up in the disk buffer cache.
+Because the disk buffer cache is sorted by minimum seek distance,
+the average seek between the scheduled disk writes is much
+less than it would be if the data blocks were written out
+in the random disk order in which they are generated.
+However when the file is read,
+the read system call is processed synchronously so
+the disk blocks must be retrieved from the disk in the
+non-optimal seek order in which they are requested.
+This forces the disk scheduler to do long
+seeks resulting in a lower throughput rate.
+.PP
+In the new system the blocks of a file are more optimally
+ordered on the disk.
+Even though reads are still synchronous,
+the requests are presented to the disk in a much better order.
+Even though the writes are still asynchronous,
+they are already presented to the disk in minimum seek
+order so there is no gain to be had by reordering them.
+Hence the disk seek latencies that limited the old file system
+have little effect in the new file system.
+The cost of allocation is the factor in the new system that
+causes writes to be slower than reads.
+.PP
+The performance of the new file system is currently
+limited by memory to memory copy operations
+required to move data from disk buffers in the
+system's address space to data buffers in the user's
+address space. These copy operations account for
+about 40% of the time spent performing an input/output operation.
+If the buffers in both address spaces were properly aligned,
+this transfer could be performed without copying by
+using the VAX virtual memory management hardware.
+This would be especially desirable when transferring
+large amounts of data.
+We did not implement this because it would change the
+user interface to the file system in two major ways:
+user programs would be required to allocate buffers on page boundaries,
+and data would disappear from buffers after being written.
+.PP
+Greater disk throughput could be achieved by rewriting the disk drivers
+to chain together kernel buffers.
+This would allow contiguous disk blocks to be read
+in a single disk transaction.
+Many disks used with UNIX systems contain either
+32 or 48 512 byte sectors per track.
+Each track holds exactly two or three 8192 byte file system blocks,
+or four or six 4096 byte file system blocks.
+The inability to use contiguous disk blocks
+effectively limits the performance
+on these disks to less than 50% of the available bandwidth.
+If the next block for a file cannot be laid out contiguously,
+then the minimum spacing to the next allocatable
+block on any platter is between a sixth and a half a revolution.
+The implication of this is that the best possible layout without
+contiguous blocks uses only half of the bandwidth of any given track.
+If each track contains an odd number of sectors,
+then it is possible to resolve the rotational delay to any number of sectors
+by finding a block that begins at the desired
+rotational position on another track.
+The reason that block chaining has not been implemented is because it
+would require rewriting all the disk drivers in the system,
+and the current throughput rates are already limited by the
+speed of the available processors.
+.PP
+Currently only one block is allocated to a file at a time.
+A technique used by the DEMOS file system
+when it finds that a file is growing rapidly,
+is to preallocate several blocks at once,
+releasing them when the file is closed if they remain unused.
+By batching up allocations, the system can reduce the
+overhead of allocating at each write,
+and it can cut down on the number of disk writes needed to
+keep the block pointers on the disk
+synchronized with the block allocation [Powell79].
+This technique was not included because block allocation
+currently accounts for less than 10% of the time spent in
+a write system call and, once again, the
+current throughput rates are already limited by the speed
+of the available processors.
+.ds RH Functional enhancements
+.sp 2
+.ne 1i
diff --git a/share/doc/smm/05.fastfs/5.t b/share/doc/smm/05.fastfs/5.t
new file mode 100644
index 0000000..96d721a
--- /dev/null
+++ b/share/doc/smm/05.fastfs/5.t
@@ -0,0 +1,293 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)5.t 8.1 (Berkeley) 6/8/93
+.\"
+.ds RH Functional enhancements
+.NH
+File system functional enhancements
+.PP
+The performance enhancements to the
+UNIX file system did not require
+any changes to the semantics or
+data structures visible to application programs.
+However, several changes had been generally desired for some
+time but had not been introduced because they would require users to
+dump and restore all their file systems.
+Since the new file system already
+required all existing file systems to
+be dumped and restored,
+these functional enhancements were introduced at this time.
+.NH 2
+Long file names
+.PP
+File names can now be of nearly arbitrary length.
+Only programs that read directories are affected by this change.
+To promote portability to UNIX systems that
+are not running the new file system, a set of directory
+access routines have been introduced to provide a consistent
+interface to directories on both old and new systems.
+.PP
+Directories are allocated in 512 byte units called chunks.
+This size is chosen so that each allocation can be transferred
+to disk in a single operation.
+Chunks are broken up into variable length records termed
+directory entries. A directory entry
+contains the information necessary to map the name of a
+file to its associated inode.
+No directory entry is allowed to span multiple chunks.
+The first three fields of a directory entry are fixed length
+and contain: an inode number, the size of the entry, and the length
+of the file name contained in the entry.
+The remainder of an entry is variable length and contains
+a null terminated file name, padded to a 4 byte boundary.
+The maximum length of a file name in a directory is
+currently 255 characters.
+.PP
+Available space in a directory is recorded by having
+one or more entries accumulate the free space in their
+entry size fields. This results in directory entries
+that are larger than required to hold the
+entry name plus fixed length fields. Space allocated
+to a directory should always be completely accounted for
+by totaling up the sizes of its entries.
+When an entry is deleted from a directory,
+its space is returned to a previous entry
+in the same directory chunk by increasing the size of the
+previous entry by the size of the deleted entry.
+If the first entry of a directory chunk is free, then
+the entry's inode number is set to zero to indicate
+that it is unallocated.
+.NH 2
+File locking
+.PP
+The old file system had no provision for locking files.
+Processes that needed to synchronize the updates of a
+file had to use a separate ``lock'' file.
+A process would try to create a ``lock'' file.
+If the creation succeeded, then the process
+could proceed with its update;
+if the creation failed, then the process would wait and try again.
+This mechanism had three drawbacks.
+Processes consumed CPU time by looping over attempts to create locks.
+Locks left lying around because of system crashes had
+to be manually removed (normally in a system startup command script).
+Finally, processes running as system administrator
+are always permitted to create files,
+so were forced to use a different mechanism.
+While it is possible to get around all these problems,
+the solutions are not straight forward,
+so a mechanism for locking files has been added.
+.PP
+The most general schemes allow multiple processes
+to concurrently update a file.
+Several of these techniques are discussed in [Peterson83].
+A simpler technique is to serialize access to a file with locks.
+To attain reasonable efficiency,
+certain applications require the ability to lock pieces of a file.
+Locking down to the byte level has been implemented in the
+Onyx file system by [Bass81].
+However, for the standard system applications,
+a mechanism that locks at the granularity of a file is sufficient.
+.PP
+Locking schemes fall into two classes,
+those using hard locks and those using advisory locks.
+The primary difference between advisory locks and hard locks is the
+extent of enforcement.
+A hard lock is always enforced when a program tries to
+access a file;
+an advisory lock is only applied when it is requested by a program.
+Thus advisory locks are only effective when all programs accessing
+a file use the locking scheme.
+With hard locks there must be some override
+policy implemented in the kernel.
+With advisory locks the policy is left to the user programs.
+In the UNIX system, programs with system administrator
+privilege are allowed override any protection scheme.
+Because many of the programs that need to use locks must
+also run as the system administrator,
+we chose to implement advisory locks rather than
+create an additional protection scheme that was inconsistent
+with the UNIX philosophy or could
+not be used by system administration programs.
+.PP
+The file locking facilities allow cooperating programs to apply
+advisory
+.I shared
+or
+.I exclusive
+locks on files.
+Only one process may have an exclusive
+lock on a file while multiple shared locks may be present.
+Both shared and exclusive locks cannot be present on
+a file at the same time.
+If any lock is requested when
+another process holds an exclusive lock,
+or an exclusive lock is requested when another process holds any lock,
+the lock request will block until the lock can be obtained.
+Because shared and exclusive locks are advisory only,
+even if a process has obtained a lock on a file,
+another process may access the file.
+.PP
+Locks are applied or removed only on open files.
+This means that locks can be manipulated without
+needing to close and reopen a file.
+This is useful, for example, when a process wishes
+to apply a shared lock, read some information
+and determine whether an update is required, then
+apply an exclusive lock and update the file.
+.PP
+A request for a lock will cause a process to block if the lock
+can not be immediately obtained.
+In certain instances this is unsatisfactory.
+For example, a process that
+wants only to check if a lock is present would require a separate
+mechanism to find out this information.
+Consequently, a process may specify that its locking
+request should return with an error if a lock can not be immediately
+obtained.
+Being able to conditionally request a lock
+is useful to ``daemon'' processes
+that wish to service a spooling area.
+If the first instance of the
+daemon locks the directory where spooling takes place,
+later daemon processes can
+easily check to see if an active daemon exists.
+Since locks exist only while the locking processes exist,
+lock files can never be left active after
+the processes exit or if the system crashes.
+.PP
+Almost no deadlock detection is attempted.
+The only deadlock detection done by the system is that the file
+to which a lock is applied must not already have a
+lock of the same type (i.e. the second of two successive calls
+to apply a lock of the same type will fail).
+.NH 2
+Symbolic links
+.PP
+The traditional UNIX file system allows multiple
+directory entries in the same file system
+to reference a single file. Each directory entry
+``links'' a file's name to an inode and its contents.
+The link concept is fundamental;
+inodes do not reside in directories, but exist separately and
+are referenced by links.
+When all the links to an inode are removed,
+the inode is deallocated.
+This style of referencing an inode does
+not allow references across physical file
+systems, nor does it support inter-machine linkage.
+To avoid these limitations
+.I "symbolic links"
+similar to the scheme used by Multics [Feiertag71] have been added.
+.PP
+A symbolic link is implemented as a file that contains a pathname.
+When the system encounters a symbolic link while
+interpreting a component of a pathname,
+the contents of the symbolic link is prepended to the rest
+of the pathname, and this name is interpreted to yield the
+resulting pathname.
+In UNIX, pathnames are specified relative to the root
+of the file system hierarchy, or relative to a process's
+current working directory. Pathnames specified relative
+to the root are called absolute pathnames. Pathnames
+specified relative to the current working directory are
+termed relative pathnames.
+If a symbolic link contains an absolute pathname,
+the absolute pathname is used,
+otherwise the contents of the symbolic link is evaluated
+relative to the location of the link in the file hierarchy.
+.PP
+Normally programs do not want to be aware that there is a
+symbolic link in a pathname that they are using.
+However certain system utilities
+must be able to detect and manipulate symbolic links.
+Three new system calls provide the ability to detect, read, and write
+symbolic links; seven system utilities required changes
+to use these calls.
+.PP
+In future Berkeley software distributions
+it may be possible to reference file systems located on
+remote machines using pathnames. When this occurs,
+it will be possible to create symbolic links that span machines.
+.NH 2
+Rename
+.PP
+Programs that create a new version of an existing
+file typically create the
+new version as a temporary file and then rename the temporary file
+with the name of the target file.
+In the old UNIX file system renaming required three calls to the system.
+If a program were interrupted or the system crashed between these calls,
+the target file could be left with only its temporary name.
+To eliminate this possibility the \fIrename\fP system call
+has been added. The rename call does the rename operation
+in a fashion that guarantees the existence of the target name.
+.PP
+Rename works both on data files and directories.
+When renaming directories,
+the system must do special validation checks to insure
+that the directory tree structure is not corrupted by the creation
+of loops or inaccessible directories.
+Such corruption would occur if a parent directory were moved
+into one of its descendants.
+The validation check requires tracing the descendents of the target
+directory to insure that it does not include the directory being moved.
+.NH 2
+Quotas
+.PP
+The UNIX system has traditionally attempted to share all available
+resources to the greatest extent possible.
+Thus any single user can allocate all the available space
+in the file system.
+In certain environments this is unacceptable.
+Consequently, a quota mechanism has been added for restricting the
+amount of file system resources that a user can obtain.
+The quota mechanism sets limits on both the number of inodes
+and the number of disk blocks that a user may allocate.
+A separate quota can be set for each user on each file system.
+Resources are given both a hard and a soft limit.
+When a program exceeds a soft limit,
+a warning is printed on the users terminal;
+the offending program is not terminated
+unless it exceeds its hard limit.
+The idea is that users should stay below their soft limit between
+login sessions,
+but they may use more resources while they are actively working.
+To encourage this behavior,
+users are warned when logging in if they are over
+any of their soft limits.
+If users fails to correct the problem for too many login sessions,
+they are eventually reprimanded by having their soft limit
+enforced as their hard limit.
+.ds RH Acknowledgements
+.sp 2
+.ne 1i
diff --git a/share/doc/smm/05.fastfs/6.t b/share/doc/smm/05.fastfs/6.t
new file mode 100644
index 0000000..40be6aa
--- /dev/null
+++ b/share/doc/smm/05.fastfs/6.t
@@ -0,0 +1,159 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)6.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.ds RH Acknowledgements
+.SH
+\s+2Acknowledgements\s0
+.PP
+We thank Robert Elz for his ongoing interest in the new file system,
+and for adding disk quotas in a rational and efficient manner.
+We also acknowledge Dennis Ritchie for his suggestions
+on the appropriate modifications to the user interface.
+We appreciate Michael Powell's explanations on how
+the DEMOS file system worked;
+many of his ideas were used in this implementation.
+Special commendation goes to Peter Kessler and Robert Henry for acting
+like real users during the early debugging stage when file systems were
+less stable than they should have been.
+The criticisms and suggestions by the reviews contributed significantly
+to the coherence of the paper.
+Finally we thank our sponsors,
+the National Science Foundation under grant MCS80-05144,
+and the Defense Advance Research Projects Agency (DoD) under
+ARPA Order No. 4031 monitored by Naval Electronic System Command under
+Contract No. N00039-82-C-0235.
+.ds RH References
+.nr H2 1
+.sp 2
+.SH
+\s+2References\s0
+.LP
+.IP [Almes78] 20
+Almes, G., and Robertson, G.
+"An Extensible File System for Hydra"
+Proceedings of the Third International Conference on Software Engineering,
+IEEE, May 1978.
+.IP [Bass81] 20
+Bass, J.
+"Implementation Description for File Locking",
+Onyx Systems Inc, 73 E. Trimble Rd, San Jose, CA 95131
+Jan 1981.
+.IP [Feiertag71] 20
+Feiertag, R. J. and Organick, E. I.,
+"The Multics Input-Output System",
+Proceedings of the Third Symposium on Operating Systems Principles,
+ACM, Oct 1971. pp 35-41
+.IP [Ferrin82a] 20
+Ferrin, T.E.,
+"Performance and Robustness Improvements in Version 7 UNIX",
+Computer Graphics Laboratory Technical Report 2,
+School of Pharmacy, University of California,
+San Francisco, January 1982.
+Presented at the 1982 Winter Usenix Conference, Santa Monica, California.
+.IP [Ferrin82b] 20
+Ferrin, T.E.,
+"Performance Issuses of VMUNIX Revisited",
+;login: (The Usenix Association Newsletter), Vol 7, #5, November 1982. pp 3-6
+.IP [Kridle83] 20
+Kridle, R., and McKusick, M.,
+"Performance Effects of Disk Subsystem Choices for
+VAX Systems Running 4.2BSD UNIX",
+Computer Systems Research Group, Dept of EECS, Berkeley, CA 94720,
+Technical Report #8.
+.IP [Kowalski78] 20
+Kowalski, T.
+"FSCK - The UNIX System Check Program",
+Bell Laboratory, Murray Hill, NJ 07974. March 1978
+.IP [Knuth75] 20
+Kunth, D.
+"The Art of Computer Programming",
+Volume 3 - Sorting and Searching,
+Addison-Wesley Publishing Company Inc, Reading, Mass, 1975. pp 506-549
+.IP [Maruyama76]
+Maruyama, K., and Smith, S.
+"Optimal reorganization of Distributed Space Disk Files",
+CACM, 19, 11. Nov 1976. pp 634-642
+.IP [Nevalainen77] 20
+Nevalainen, O., Vesterinen, M.
+"Determining Blocking Factors for Sequential Files by Heuristic Methods",
+The Computer Journal, 20, 3. Aug 1977. pp 245-247
+.IP [Pechura83] 20
+Pechura, M., and Schoeffler, J.
+"Estimating File Access Time of Floppy Disks",
+CACM, 26, 10. Oct 1983. pp 754-763
+.IP [Peterson83] 20
+Peterson, G.
+"Concurrent Reading While Writing",
+ACM Transactions on Programming Languages and Systems,
+ACM, 5, 1. Jan 1983. pp 46-55
+.IP [Powell79] 20
+Powell, M.
+"The DEMOS File System",
+Proceedings of the Sixth Symposium on Operating Systems Principles,
+ACM, Nov 1977. pp 33-42
+.IP [Ritchie74] 20
+Ritchie, D. M. and Thompson, K.,
+"The UNIX Time-Sharing System",
+CACM 17, 7. July 1974. pp 365-375
+.IP [Smith81a] 20
+Smith, A.
+"Input/Output Optimization and Disk Architectures: A Survey",
+Performance and Evaluation 1. Jan 1981. pp 104-117
+.IP [Smith81b] 20
+Smith, A.
+"Bibliography on File and I/O System Optimization and Related Topics",
+Operating Systems Review, 15, 4. Oct 1981. pp 39-54
+.IP [Symbolics81] 20
+"Symbolics File System",
+Symbolics Inc, 9600 DeSoto Ave, Chatsworth, CA 91311
+Aug 1981.
+.IP [Thompson78] 20
+Thompson, K.
+"UNIX Implementation",
+Bell System Technical Journal, 57, 6, part 2. pp 1931-1946
+July-August 1978.
+.IP [Thompson80] 20
+Thompson, M.
+"Spice File System",
+Carnegie-Mellon University,
+Department of Computer Science, Pittsburg, PA 15213
+#CMU-CS-80, Sept 1980.
+.IP [Trivedi80] 20
+Trivedi, K.
+"Optimal Selection of CPU Speed, Device Capabilities, and File Assignments",
+Journal of the ACM, 27, 3. July 1980. pp 457-473
+.IP [White80] 20
+White, R. M.
+"Disk Storage Technology",
+Scientific American, 243(2), August 1980.
diff --git a/share/doc/smm/05.fastfs/Makefile b/share/doc/smm/05.fastfs/Makefile
new file mode 100644
index 0000000..d63aae2
--- /dev/null
+++ b/share/doc/smm/05.fastfs/Makefile
@@ -0,0 +1,10 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= smm/05.fastfs
+SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t
+MACROS= -ms
+USE_TBL=
+USE_EQN=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/06.nfs/0.t b/share/doc/smm/06.nfs/0.t
new file mode 100644
index 0000000..4d77f56
--- /dev/null
+++ b/share/doc/smm/06.nfs/0.t
@@ -0,0 +1,75 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This document is derived from software contributed to Berkeley by
+.\" Rick Macklem at The University of Guelph.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 8.1 (Berkeley) 6/8/93
+.\"
+.(l C
+.sz 14
+.b "The 4.4BSD NFS Implementation"
+.sp
+.sz 10
+Rick Macklem
+.i "University of Guelph"
+.)l
+.sp 2
+.ce 1
+.sz 12
+.b "ABSTRACT"
+.eh 'SMM:06-%''The 4.4BSD NFS Implementation'
+.oh 'The 4.4BSD NFS Implementation''SMM:06-%'
+.pp
+The 4.4BSD implementation of the Network File System (NFS)\** is
+intended to interoperate with
+.(f
+\**Network File System (NFS) is believed to be a registered trademark of
+Sun Microsystems Inc.
+.)f
+other NFS Version 2 Protocol (RFC1094) implementations but also
+allows use of an alternate protocol that is hoped to provide better
+performance in certain environments.
+This paper will informally discuss these various protocol features and
+their use.
+There is a brief overview of the implementation followed
+by several sections on various problem areas related to NFS
+and some hints on how to deal with them.
+.pp
+Not Quite NFS (NQNFS) is an NFS like protocol designed to maintain full cache
+consistency between clients in a crash tolerant manner. It is an adaptation
+of the NFS protocol such that the server supports both NFS
+and NQNFS clients while maintaining full consistency between the server and
+NQNFS clients.
+It borrows heavily from work done on Spritely-NFS [Srinivasan89], but uses
+Leases [Gray89] to avoid the need to recover server state information
+after a crash.
+.sp
diff --git a/share/doc/smm/06.nfs/1.t b/share/doc/smm/06.nfs/1.t
new file mode 100644
index 0000000..96415da
--- /dev/null
+++ b/share/doc/smm/06.nfs/1.t
@@ -0,0 +1,555 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This document is derived from software contributed to Berkeley by
+.\" Rick Macklem at The University of Guelph.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.\"
+.sh 1 "NFS Implementation"
+.pp
+The 4.4BSD implementation of NFS and the alternate protocol nicknamed
+Not Quite NFS (NQNFS) are kernel resident, but make use of a few system
+daemons.
+The kernel implementation does not use an RPC library, handling the RPC
+request and reply messages directly in \fImbuf\fR data areas. NFS
+interfaces to the network using
+sockets via. the kernel interface available in
+\fIsys/kern/uipc_syscalls.c\fR as \fIsosend(), soreceive(),\fR...
+There are connection management routines for support of sockets for connection
+oriented protocols and timeout/retransmit support for datagram sockets on
+the client side.
+For connection oriented transport protocols,
+such as TCP/IP, there is one connection
+for each client to server mount point that is maintained until an umount.
+If the connection breaks, the client will attempt a reconnect with a new
+socket.
+The client side can operate without any daemons running, but performance
+will be improved by running nfsiod daemons that perform read-aheads
+and write-behinds.
+For the server side to function, the daemons portmap, mountd and
+nfsd must be running.
+The mountd daemon performs two important functions.
+.ip 1)
+Upon startup and after a hangup signal, mountd reads the exports
+file and pushes the export information for each local file system down
+into the kernel via. the mount system call.
+.ip 2)
+Mountd handles remote mount protocol (RFC1094, Appendix A) requests.
+.lp
+The nfsd master daemon forks off children that enter the kernel
+via. the nfssvc system call. The children normally remain kernel
+resident, providing a process context for the NFS RPC servers.
+Meanwhile, the master nfsd waits to accept new connections from clients
+using connection oriented transport protocols and passes the new sockets down
+into the kernel.
+The client side mount_nfs along with portmap and
+mountd are the only parts of the NFS subsystem that make any
+use of the Sun RPC library.
+.sh 1 "Mount Problems"
+.pp
+There are several problems that can be encountered at the time of an NFS
+mount, ranging from an unresponsive NFS server (crashed, network partitioned
+from client, etc.) to various interoperability problems between different
+NFS implementations.
+.pp
+On the server side,
+if the 4.4BSD NFS server will be handling any PC clients, mountd will
+require the \fB-n\fR option to enable non-root mount request servicing.
+Running of a pcnfsd\** daemon will also be necessary.
+.(f
+\** Pcnfsd is available in source form from Sun Microsystems and many
+anonymous ftp sites.
+.)f
+The server side requires that the daemons
+mountd and nfsd be running and that
+they be registered with portmap properly.
+If problems are encountered,
+the safest fix is to kill all the daemons and then restart them in
+the order portmap, mountd and nfsd.
+Other server side problems are normally caused by problems with the format
+of the exports file, which is covered under
+Security and in the exports man page.
+.pp
+On the client side, there are several mount options useful for dealing
+with server problems.
+In cases where a file system is not critical for system operation, the
+\fB-b\fR
+mount option may be specified so that mount_nfs will go into the
+background for a mount attempt on an unresponsive server.
+This is useful for mounts specified in
+\fIfstab(5)\fR,
+so that the system will not get hung while booting doing
+\fBmount -a\fR
+because a file server is not responsive.
+On the other hand, if the file system is critical to system operation, this
+option should not be used so that the client will wait for the server to
+come up before completing bootstrapping.
+There are also three mount options to help deal with interoperability issues
+with various non-BSD NFS servers. The
+\fB-P\fR
+option specifies that the NFS
+client use a reserved IP port number to satisfy some servers' security
+requirements.\**
+.(f
+\**Any security benefit of this is highly questionable and as
+such the BSD server does not require a client to use a reserved port number.
+.)f
+The
+\fB-c\fR
+option stops the NFS client from doing a \fIconnect\fR on the UDP
+socket, so that the mount works with servers that send NFS replies from
+port numbers other than the standard 2049.\**
+.(f
+\**The Encore Multimax is known
+to require this.
+.)f
+Finally, the
+\fB-g=\fInum\fR
+option sets the maximum size of the group list in the credentials passed
+to an NFS server in every RPC request. Although RFC1057 specifies a maximum
+size of 16 for the group list, some servers can't handle that many.
+If a user, particularly root doing a mount,
+keeps getting access denied from a file server, try temporarily
+reducing the number of groups that user is in to less than 5
+by editing /etc/group. If the user can then access the file system, slowly
+increase the number of groups for that user until the limit is found and
+then peg the limit there with the
+\fB-g=\fInum\fR
+option.
+This implies that the server will only see the first \fInum\fR
+groups that the user is in, which can cause some accessibility problems.
+.pp
+For sites that have many NFS servers, amd [Pendry93]
+is a useful administration tool.
+It also reduces the number of actual NFS mount points, alleviating problems
+with commands such as df(1) that hang when any of the NFS servers is
+unreachable.
+.sh 1 "Dealing with Hung Servers"
+.pp
+There are several mount options available to help a client deal with
+being hung waiting for response from a crashed or unreachable\** server.
+.(f
+\**Due to a network partitioning or similar.
+.)f
+By default, a hard mount will continue to try to contact the server
+``forever'' to complete the system call. This type of mount is appropriate
+when processes on the client that access files in the file system do not
+tolerate file I/O systems calls that return -1 with \fIerrno == EINTR\fR
+and/or access to the file system is critical for normal system operation.
+.lp
+There are two other alternatives:
+.ip 1)
+A soft mount (\fB-s\fR option) retries an RPC \fIn\fR
+times and then the corresponding
+system call returns -1 with errno set to EINTR.
+For TCP transport, the actual RPC request is not retransmitted, but the
+timeout intervals waiting for a reply from the server are done
+in the same manner as UDP for this purpose.
+The problem with this type of mount is that most applications do not
+expect an EINTR error return from file I/O system calls (since it never
+occurs for a local file system) and get confused by the error return
+from the I/O system call.
+The option
+\fB-x=\fInum\fR
+is used to set the RPC retry limit and if set too low, the error returns
+will start occurring whenever the NFS server is slow due to heavy load.
+Alternately, a large retry limit can result in a process hung for a long
+time, due to a crashed server or network partitioning.
+.ip 2)
+An interruptible mount (\fB-i\fR option) checks to see if a termination signal
+is pending for the process when waiting for server response and if it is,
+the I/O system call posts an EINTR. Normally this results in the process
+being terminated by the signal when returning from the system call.
+This feature allows you to ``^C'' out of processes that are hung
+due to unresponsive servers.
+The problem with this approach is that signals that are caught by
+a process are not recognized as termination signals
+and the process will remain hung.\**
+.(f
+\**Unfortunately, there are also some resource allocation situations in the
+BSD kernel where the termination signal will be ignored and the process
+will not terminate.
+.)f
+.sh 1 "RPC Transport Issues"
+.pp
+The NFS Version 2 protocol runs over UDP/IP transport by
+sending each Sun Remote Procedure Call (RFC1057)
+request/reply message in a single UDP
+datagram. Since UDP does not guarantee datagram delivery, the
+Remote Procedure Call (RPC) layer
+times out and retransmits an RPC request if
+no RPC reply has been received. Since this round trip timeout (RTO) value
+is for the entire RPC operation, including RPC message transmission to the
+server, queuing at the server for an nfsd, performing the RPC and
+sending the RPC reply message back to the client, it can be highly variable
+for even a moderately loaded NFS server.
+As a result, the RTO interval must be a conservation (large) estimate, in
+order to avoid extraneous RPC request retransmits.\**
+.(f
+\**At best, an extraneous RPC request retransmit increases
+the load on the server and at worst can result in damaged files
+on the server when non-idempotent RPCs are redone [Juszczak89].
+.)f
+Also, with an 8Kbyte read/write data size
+(the default), the read/write reply/request will be an 8+Kbyte UDP datagram
+that must normally be fragmented at the IP layer for transmission.\**
+.(f
+\**6 IP fragments for an Ethernet,
+which has a maximum transmission unit of 1500bytes.
+.)f
+For IP fragments to be successfully reassembled into
+the IP datagram at the receive end, all
+fragments must be received within a fairly short ``time to live''.
+If one fragment is lost/damaged in transit,
+the entire RPC must be retransmitted and redone.
+This problem can be exaggerated by a network interface on the receiver that
+cannot handle the reception of back to back network packets. [Kent87a]
+.pp
+There are several tuning mount
+options on the client side that can prove useful when trying to
+alleviate performance problems related to UDP RPC transport.
+The options
+\fB-r=\fInum\fR
+and
+\fB-w=\fInum\fR
+specify the maximum read or write data size respectively.
+The size \fInum\fR
+should be a power of 2 (4K, 2K, 1K) and adjusted downward from the
+maximum of 8Kbytes
+whenever IP fragmentation is causing problems. The best indicator of
+IP fragmentation problems is a significant number of
+\fIfragments dropped after timeout\fR
+reported by the \fIip:\fR section of a \fBnetstat -s\fR
+command on either the client or server.
+Of course, if the fragments are being dropped at the server, it can be
+fun figuring out which client(s) are involved.
+The most likely candidates are clients that are not
+on the same local area network as the
+server or have network interfaces that do not receive several
+back to back network packets properly.
+.pp
+By default, the 4.4BSD NFS client dynamically estimates the retransmit
+timeout interval for the RPC and this appears to work reasonably well for
+many environments. However, the
+\fB-d\fR
+flag can be specified to turn off
+the dynamic estimation of retransmit timeout, so that the client will
+use a static initial timeout interval.\**
+.(f
+\**After the first retransmit timeout, the initial interval is backed off
+exponentially.
+.)f
+The
+\fB-t=\fInum\fR
+option can be used with
+\fB-d\fR
+to set the initial timeout interval to other than the default of 2 seconds.
+The best indicator that dynamic estimation should be turned off would
+be a significant number\** in the \fIX Replies\fR field and a
+.(f
+\**Even 0.1% of the total RPCs is probably significant.
+.)f
+large number in the \fIRetries\fR field
+in the \fIRpc Info:\fR section as reported
+by the \fBnfsstat\fR command.
+On the server, there would be significant numbers of \fIInprog\fR recent
+request cache hits in the \fIServer Cache Stats:\fR section as reported
+by the \fBnfsstat\fR command, when run on the server.
+.pp
+The tradeoff is that a smaller timeout interval results in a better
+average RPC response time, but increases the risk of extraneous retries
+that in turn increase server load and the possibility of damaged files
+on the server. It is probably best to err on the safe side and use a large
+(>= 2sec) fixed timeout if the dynamic retransmit timeout estimation
+seems to be causing problems.
+.pp
+An alternative to all this fiddling is to run NFS over TCP transport instead
+of UDP.
+Since the 4.4BSD TCP implementation provides reliable
+delivery with congestion control, it avoids all of the above problems.
+It also permits the use of read and write data sizes greater than the 8Kbyte
+limit for UDP transport.\**
+.(f
+\**Read/write data sizes greater than 8Kbytes will not normally improve
+performance unless the kernel constant MAXBSIZE is increased and the
+file system on the server has a block size greater than 8Kbytes.
+.)f
+NFS over TCP usually delivers comparable to significantly better performance
+than NFS over UDP
+unless the client or server processor runs at less than 5-10MIPS. For a
+slow processor, the extra CPU overhead of using TCP transport will become
+significant and TCP transport may only be useful when the client
+to server interconnect traverses congested gateways.
+The main problem with using TCP transport is that it is only supported
+between BSD clients and servers.\**
+.(f
+\**There are rumors of commercial NFS over TCP implementations on the horizon
+and these may well be worth exploring.
+.)f
+.sh 1 "Other Tuning Tricks"
+.pp
+Another mount option that may improve performance over
+certain network interconnects is \fB-a=\fInum\fR
+which sets the number of blocks that the system will
+attempt to read-ahead during sequential reading of a file. The default value
+of 1 seems to be appropriate for most situations, but a larger value might
+achieve better performance for some environments, such as a mount to a server
+across a ``high bandwidth * round trip delay'' interconnect.
+.pp
+For the adventurous, playing with the size of the buffer cache
+can also improve performance for some environments that use NFS heavily.
+Under some workloads, a buffer cache of 4-6Mbytes can result in significant
+performance improvements over 1-2Mbytes, both in client side system call
+response time and reduced server RPC load.
+The buffer cache size defaults to 10% of physical memory,
+but this can be overridden by specifying the BUFPAGES option
+in the machine's config file.\**
+.(f
+BUFPAGES is the number of physical machine pages allocated to the buffer cache.
+ie. BUFPAGES * NBPG = buffer cache size in bytes
+.)f
+When increasing the size of BUFPAGES, it is also advisable to increase the
+number of buffers NBUF by a corresponding amount.
+Note that there is a tradeoff of memory allocated to the buffer cache versus
+available for paging, which implies that making the buffer cache larger
+will increase paging rate, with possibly disastrous results.
+.sh 1 "Security Issues"
+.pp
+When a machine is running an NFS server it opens up a great big security hole.
+For ordinary NFS, the server receives client credentials
+in the RPC request as a user id
+and a list of group ids and trusts them to be authentic!
+The only tool available to restrict remote access to
+file systems with is the exports(5) file,
+so file systems should be exported with great care.
+The exports file is read by mountd upon startup and after a hangup signal
+is posted for it and then as much of the access specifications as possible are
+pushed down into the kernel for use by the nfsd(s).
+The trick here is that the kernel information is stored on a per
+local file system mount point and client host address basis and cannot refer to
+individual directories within the local server file system.
+It is best to think of the exports file as referring to the various local
+file systems and not just directory paths as mount points.
+A local file system may be exported to a specific host, all hosts that
+match a subnet mask or all other hosts (the world). The latter is very
+dangerous and should only be used for public information. It is also
+strongly recommended that file systems exported to ``the world'' be exported
+read-only.
+For each host or group of hosts, the file system can be exported read-only or
+read/write.
+You can also define one of three client user id to server credential
+mappings to help control access.
+Root (user id == 0) can be mapped to some default credentials while all other
+user ids are accepted as given.
+If the default credentials for user id equal zero
+are root, then there is essentially no remapping.
+Most NFS file systems are exported this way, most commonly mapping
+user id == 0 to the credentials for the user nobody.
+Since the client user id and group id list is used unchanged on the server
+(except for root), this also implies that
+the user id and group id space must be common between the client and server.
+(ie. user id N on the client must refer to the same user on the server)
+All user ids can be mapped to a default set of credentials, typically that of
+the user nobody. This essentially gives world access to all
+users on the corresponding hosts.
+.pp
+As well as the standard NFS Version 2 protocol (RFC1094) implementation, BSD
+systems can use a variant of the protocol called Not Quite NFS (NQNFS) that
+supports a variety of protocol extensions.
+This protocol uses 64bit file offsets
+and sizes, an \fIaccess rpc\fR, an \fIappend\fR option on the write rpc
+and extended file attributes to support 4.4BSD file system functionality
+more fully.
+It also makes use of a variant of short term
+\fIleases\fR [Gray89] with delayed write client caching,
+in an effort to provide full cache consistency and better performance.
+This protocol is available between 4.4BSD systems only and is used when
+the \fB-q\fR mount option is specified.
+It can be used with any of the aforementioned options for NFS, such as TCP
+transport (\fB-T\fR).
+Although this protocol is experimental, it is recommended over NFS for
+mounts between 4.4BSD systems.\**
+.(f
+\**I would appreciate email from anyone who can provide
+NFS vs. NQNFS performance measurements,
+particularly fast clients, many clients or over an internetwork
+connection with a large ``bandwidth * RTT'' product.
+.)f
+.sh 1 "Monitoring NFS Activity"
+.pp
+The basic command for monitoring NFS activity on clients and servers is
+nfsstat. It reports cumulative statistics of various NFS activities,
+such as counts of the various different RPCs and cache hit rates on the client
+and server. Of particular interest on the server are the fields in the
+\fIServer Cache Stats:\fR section, which gives numbers for RPC retries received
+in the first three fields and total RPCs in the fourth. The first three fields
+should remain a very small percentage of the total. If not, it
+would indicate one or more clients doing retries too aggressively and the fix
+would be to isolate these clients,
+disable the dynamic RTO estimation on them and
+make their initial timeout interval a conservative (ie. large) value.
+.pp
+On the client side, the fields in the \fIRpc Info:\fR section are of particular
+interest, as they give an overall picture of NFS activity.
+The \fITimedOut\fR field is the number of I/O system calls that returned -1
+for ``soft'' mounts and can be reduced
+by increasing the retry limit or changing
+the mount type to ``intr'' or ``hard''.
+The \fIInvalid\fR field is a count of trashed RPC replies that are received
+and should remain zero.\**
+.(f
+\**Some NFS implementations run with UDP checksums disabled, so garbage RPC
+messages can be received.
+.)f
+The \fIX Replies\fR field counts the number of repeated RPC replies received
+from the server and is a clear indication of a too aggressive RTO estimate.
+Unfortunately, a good NFS server implementation will use a ``recent request
+cache'' [Juszczak89] that will suppress the extraneous replies.
+A large value for \fIRetries\fR indicates a problem, but
+it could be any of:
+.ip \(bu
+a too aggressive RTO estimate
+.ip \(bu
+an overloaded NFS server
+.ip \(bu
+IP fragments being dropped (gateway, client or server)
+.lp
+and requires further investigation.
+The \fIRequests\fR field is the total count of RPCs done on all servers.
+.pp
+The \fBnetstat -s\fR comes in useful during investigation of RPC transport
+problems.
+The field \fIfragments dropped after timeout\fR in
+the \fIip:\fR section indicates IP fragments are
+being lost and a significant number of these occurring indicates that the
+use of TCP transport or a smaller read/write data size is in order.
+A significant number of \fIbad checksums\fR reported in the \fIudp:\fR
+section would suggest network problems of a more generic sort.
+(cabling, transceiver or network hardware interface problems or similar)
+.pp
+There is a RPC activity logging facility for both the client and
+server side in the kernel.
+When logging is enabled by setting the kernel variable nfsrtton to
+one, the logs in the kernel structures nfsrtt (for the client side)
+and nfsdrt (for the server side) are updated upon the completion
+of each RPC in a circular manner.
+The pos element of the structure is the index of the next element
+of the log array to be updated.
+In other words, elements of the log array from \fIlog\fR[pos] to
+\fIlog\fR[pos - 1] are in chronological order.
+The include file <sys/nfsrtt.h> should be consulted for details on the
+fields in the two log structures.\**
+.(f
+\**Unfortunately, a monitoring tool that uses these logs is still in the
+planning (dreaming) stage.
+.)f
+.sh 1 "Diskless Client Support"
+.pp
+The NFS client does include kernel support for diskless/dataless operation
+where the root file system and optionally the swap area is remote NFS mounted.
+A diskless/dataless client is configured using a version of the
+``swapkernel.c'' file as provided in the directory \fIcontrib/diskless.nfs\fR.
+If the swap device == NODEV, it specifies an NFS mounted swap area and should
+be configured the same size as set up by diskless_setup when run on the server.
+This file must be put in the \fIsys/compile/<machine_name>\fR kernel build
+directory after the config command has been run, since config does
+not know about specifying NFS root and swap areas.
+The kernel variable mountroot must be set to nfs_mountroot instead of
+ffs_mountroot and the kernel structure nfs_diskless must be filled in
+properly.
+There are some primitive system administration tools in the \fIcontrib/diskless.nfs\fR directory to assist in filling in
+the nfs_diskless structure and in setting up an NFS server for
+diskless/dataless clients.
+The tools were designed to provide a bare bones capability, to allow maximum
+flexibility when setting up different servers.
+.lp
+The tools are as follows:
+.ip \(bu
+diskless_offset.c - This little program reads a ``kernel'' object file and
+writes the file byte offset of the nfs_diskless structure in it to
+standard out. It was kept separate because it sometimes has to
+be compiled/linked in funny ways depending on the client architecture.
+(See the comment at the beginning of it.)
+.ip \(bu
+diskless_setup.c - This program is run on the server and sets up files for a
+given client. It mostly just fills in an nfs_diskless structure and
+writes it out to either the "kernel" file or a separate file called
+/var/diskless/setup.<official-hostname>
+.ip \(bu
+diskless_boot.c - There are two functions in here that may be used
+by a bootstrap server such as tftpd to permit sharing of the ``kernel''
+object file for similar clients. This saves disk space on the bootstrap
+server and simplify organization, but are not critical for correct operation.
+They read the ``kernel''
+file, but optionally fill in the nfs_diskless structure from a
+separate "setup.<official-hostname>" file so that there is only
+one copy of "kernel" for all similar (same arch etc.) clients.
+These functions use a text file called
+/var/diskless/boot.<official-hostname> to control the netboot.
+.lp
+The basic setup steps are:
+.ip \(bu
+make a "kernel" for the client(s) with mountroot() == nfs_mountroot()
+and swdevt[0].sw_dev == NODEV if it is to do nfs swapping as well
+(See the same swapkernel.c file)
+.ip \(bu
+run diskless_offset on the kernel file to find out the byte offset
+of the nfs_diskless structure
+.ip \(bu
+Run diskless_setup on the server to set up the server and fill in the
+nfs_diskless structure for that client.
+The nfs_diskless structure can either be written into the
+kernel file (the -x option) or
+saved in /var/diskless/setup.<official-hostname>.
+.ip \(bu
+Set up the bootstrap server. If the nfs_diskless structure was written into
+the ``kernel'' file, any vanilla bootstrap protocol such as bootp/tftp can
+be used. If the bootstrap server has been modified to use the functions in
+diskless_boot.c, then a
+file called /var/diskless/boot.<official-hostname>
+must be created.
+It is simply a two line text file, where the first line is the pathname
+of the correct ``kernel'' file and the second line has the pathname of
+the nfs_diskless structure file and its byte offset in it.
+For example:
+.br
+ /var/diskless/kernel.pmax
+.br
+ /var/diskless/setup.rickers.cis.uoguelph.ca 642308
+.br
+.ip \(bu
+Create a /var subtree for each client in an appropriate place on the server,
+such as /var/diskless/var/<client-hostname>/...
+By using the <client-hostname> to differentiate /var for each host,
+/etc/rc can be modified to mount the correct /var from the server.
diff --git a/share/doc/smm/06.nfs/2.t b/share/doc/smm/06.nfs/2.t
new file mode 100644
index 0000000..85e2896
--- /dev/null
+++ b/share/doc/smm/06.nfs/2.t
@@ -0,0 +1,532 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This document is derived from software contributed to Berkeley by
+.\" Rick Macklem at The University of Guelph.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.\"
+.sh 1 "Not Quite NFS, Crash Tolerant Cache Consistency for NFS"
+.pp
+Not Quite NFS (NQNFS) is an NFS like protocol designed to maintain full cache
+consistency between clients in a crash tolerant manner.
+It is an adaptation of the NFS protocol such that the server supports both NFS
+and NQNFS clients while maintaining full consistency between the server and
+NQNFS clients.
+This section borrows heavily from work done on Spritely-NFS [Srinivasan89],
+but uses Leases [Gray89] to avoid the need to recover server state information
+after a crash.
+The reader is strongly encouraged to read these references before
+trying to grasp the material presented here.
+.sh 2 "Overview"
+.pp
+The protocol maintains cache consistency by using a somewhat
+Sprite [Nelson88] like protocol,
+but is based on short term leases\** instead of hard state information
+about open files.
+.(f
+\** A lease is a ticket permitting an activity that is
+valid until some expiry time.
+.)f
+The basic principal is that the protocol will disable client caching of a
+file whenever that file is write shared\**.
+.(f
+\** Write sharing occurs when at least one client is modifying a file while
+other client(s) are reading the file.
+.)f
+Whenever a client wishes to cache data for a file it must hold a valid lease.
+There are three types of leases: read caching, write caching and non-caching.
+The latter type requires that all file operations be done synchronously with
+the server via. RPCs.
+A read caching lease allows for client data caching, but no file modifications
+may be done.
+A write caching lease allows for client caching of writes,
+but requires that all writes be pushed to the server when the lease expires.
+If a client has dirty buffers\**
+.(f
+\** Cached write data is not yet pushed (written) to the server.
+.)f
+when a write cache lease has almost expired, it will attempt to
+extend the lease but is required to push the dirty buffers if extension fails.
+A client gets leases by either doing a \fBGetLease RPC\fR or by piggybacking
+a \fBGetLease Request\fR onto another RPC. Piggybacking is supported for the
+frequent RPCs Getattr, Setattr, Lookup, Readlink, Read, Write and Readdir
+in an effort to minimize the number of \fBGetLease RPCs\fR required.
+All leases are at the granularity of a file, since all NFS RPCs operate on
+individual files and NFS has no intrinsic notion of a file hierarchy.
+Directories, symbolic links and file attributes may be read cached but
+are not write cached.
+The exception here is the attribute file_size, which is updated during cached
+writing on the client to reflect a growing file.
+.pp
+It is the server's responsibility to ensure that consistency is maintained
+among the NQNFS clients by disabling client caching whenever a server file
+operation would cause inconsistencies.
+The possibility of inconsistencies occurs whenever a client has
+a write caching lease and any other client,
+or local operations on the server,
+tries to access the file or when
+a modify operation is attempted on a file being read cached by client(s).
+At this time, the server sends an \fBeviction notice\fR to all clients holding
+the lease and then waits for lease termination.
+Lease termination occurs when a \fBvacated the premises\fR message has been
+received from all the clients that have signed the lease or when the lease
+expires via. timeout.
+The message pair \fBeviction notice\fR and \fBvacated the premises\fR roughly
+correspond to a Sprite server\(->client callback, but are not implemented as an
+actual RPC, to avoid the server waiting indefinitely for a reply from a dead
+client.
+.pp
+Server consistency checking can be viewed as issuing intrinsic leases for a
+file operation for the duration of the operation only. For example, the
+\fBCreate RPC\fR will get an intrinsic write lease on the directory in which
+the file is being created, disabling client read caches for that directory.
+.pp
+By relegating this responsibility to the server, consistency between the
+server and NQNFS clients is maintained when NFS clients are modifying the
+file system as well.\**
+.(f
+\** The NFS clients will continue to be \fIapproximately\fR consistent with
+the server.
+.)f
+.pp
+The leases are issued as time intervals to avoid the requirement of time of day
+clock synchronization. There are three important time constants known to
+the server. The \fBmaximum_lease_term\fR sets an upper bound on lease duration.
+The \fBclock_skew\fR is added to all lease terms on the server to correct for
+differing clock speeds between the client and server and \fBwrite_slack\fR is
+the number of seconds the server is willing to wait for a client with
+an expired write caching lease to push dirty writes.
+.pp
+The server maintains a \fBmodify_revision\fR number for each file. It is
+defined as an unsigned quadword integer that is never zero and that must
+increase whenever the corresponding file is modified on the server.
+It is used
+by the client to determine whether or not cached data for the file is
+stale.
+Generating this value is easier said than done. The current implementation
+uses the following technique, which is believed to be adequate.
+The high order longword is stored in the ufs inode and is initialized to one
+when an inode is first allocated.
+The low order longword is stored in main memory only and is initialized to
+zero when an inode is read in from disk.
+When the file is modified for the first time within a given second of
+wall clock time, the high order longword is incremented by one and
+the low order longword reset to zero.
+For subsequent modifications within the same second of wall clock
+time, the low order longword is incremented. If the low order longword wraps
+around to zero, the high order longword is incremented again.
+Since the high order longword only increments once per second and the inode
+is pushed to disk frequently during file modification, this implies
+0 \(<= Current\(miDisk \(<= 5.
+When the inode is read in from disk, 10
+is added to the high order longword, which ensures that the quadword
+is greater than any value it could have had before a crash.
+This introduces apparent modifications every time the inode falls out of
+the LRU inode cache, but this should only reduce the client caching performance
+by a (hopefully) small margin.
+.sh 2 "Crash Recovery and other Failure Scenarios"
+.pp
+The server must maintain the state of all the current leases held by clients.
+The nice thing about short term leases is that maximum_lease_term seconds
+after the server stops issuing leases, there are no current leases left.
+As such, server crash recovery does not require any state recovery. After
+rebooting, the server refuses to service any RPCs except for writes until
+write_slack seconds after the last lease would have expired\**.
+.(f
+\** The last lease expiry time may be safely estimated as
+"boottime+maximum_lease_term+clock_skew" for machines that cannot store
+it in nonvolatile RAM.
+.)f
+By then, the server would not have any outstanding leases to recover the
+state of and the clients have had at least write_slack seconds to push dirty
+writes to the server and get the server sync'd up to date. After this, the
+server simply services requests in a manner similar to NFS.
+In an effort to minimize the effect of "recovery storms" [Baker91],
+the server replies \fBtry_again_later\fR to the RPCs it is not
+yet ready to service.
+.pp
+After a client crashes, the server may have to wait for a lease to timeout
+before servicing a request if write sharing of a file with a cachable lease
+on the client is about to occur.
+As for the client, it simply starts up getting any leases it now needs. Any
+outstanding leases for that client on the server prior to the crash will either be renewed or expire
+via timeout.
+.pp
+Certain network partitioning failures are more problematic. If a client to
+server network connection is severed just before a write caching lease expires,
+the client cannot push the dirty writes to the server. After the lease expires
+on the server, the server permits other clients to access the file with the
+potential of getting stale data. Unfortunately I believe this failure scenario
+is intrinsic in any delay write caching scheme unless the server is required to
+wait \fBforever\fR for a client to regain contact\**.
+.(f
+\** Gray and Cheriton avoid this problem by using a \fBwrite through\fR policy.
+.)f
+Since the write caching lease has expired on the client,
+it will sync up with the
+server as soon as the network connection has been re-established.
+.pp
+There is another failure condition that can occur when the server is congested.
+The worst case scenario would have the client pushing dirty writes to the server
+but a large request queue on the server delays these writes for more than
+\fBwrite_slack\fR seconds. It is hoped that a congestion control scheme using
+the \fBtry_again_later\fR RPC reply after booting combined with
+the following lease termination rule for write caching leases
+can minimize the risk of this occurrence.
+A write caching lease is only terminated on the server when there are have
+been no writes to the file and the server has not been overloaded during
+the previous write_slack seconds. The server has not been overloaded
+is approximated by a test for sleeping nfsd(s) at the end of the write_slack
+period.
+.sh 2 "Server Disk Full"
+.pp
+There is a serious unresolved problem for delayed write caching with respect to
+server disk space allocation.
+When the disk on the file server is full, delayed write RPCs can fail
+due to "out of space".
+For NFS, this occurrence results in an error return from the close system
+call on the file, since the dirty blocks are pushed on close.
+Processes writing important files can check for this error return
+to ensure that the file was written successfully.
+For NQNFS, the dirty blocks are not pushed on close and as such the client
+may not attempt the write RPC until after the process has done the close
+which implies no error return from the close.
+For the current prototype,
+the only solution is to modify programs writing important
+file(s) to call fsync and check for an error return from it instead of close.
+.sh 2 "Protocol Details"
+.pp
+The protocol specification is identical to that of NFS [Sun89] except for
+the following changes.
+.ip \(bu
+RPC Information
+.(l
+ Program Number 300105
+ Version Number 1
+.)l
+.ip \(bu
+Readdir_and_Lookup RPC
+.(l
+ struct readdirlookargs {
+ fhandle file;
+ nfscookie cookie;
+ unsigned count;
+ unsigned duration;
+ };
+
+ struct entry {
+ unsigned cachable;
+ unsigned duration;
+ modifyrev rev;
+ fhandle entry_fh;
+ nqnfs_fattr entry_attrib;
+ unsigned fileid;
+ filename name;
+ nfscookie cookie;
+ entry *nextentry;
+ };
+
+ union readdirlookres switch (stat status) {
+ case NFS_OK:
+ struct {
+ entry *entries;
+ bool eof;
+ } readdirlookok;
+ default:
+ void;
+ };
+
+ readdirlookres
+ NQNFSPROC_READDIRLOOK(readdirlookargs) = 18;
+.)l
+Reads entries in a directory in a manner analogous to the NFSPROC_READDIR RPC
+in NFS, but returns the file handle and attributes of each entry as well.
+This allows the attribute and lookup caches to be primed.
+.ip \(bu
+Get Lease RPC
+.(l
+ struct getleaseargs {
+ fhandle file;
+ cachetype readwrite;
+ unsigned duration;
+ };
+
+ union getleaseres switch (stat status) {
+ case NFS_OK:
+ bool cachable;
+ unsigned duration;
+ modifyrev rev;
+ nqnfs_fattr attributes;
+ default:
+ void;
+ };
+
+ getleaseres
+ NQNFSPROC_GETLEASE(getleaseargs) = 19;
+.)l
+Gets a lease for "file" valid for "duration" seconds from when the lease
+was issued on the server\**.
+.(f
+\** To be safe, the client may only assume that the lease is valid
+for ``duration'' seconds from when the RPC request was sent to the server.
+.)f
+The lease permits client caching if "cachable" is true.
+The modify revision level and attributes for the file are also returned.
+.ip \(bu
+Eviction Message
+.(l
+ void
+ NQNFSPROC_EVICTED (fhandle) = 21;
+.)l
+This message is sent from the server to the client. When the client receives
+the message, it should flush data associated with the file represented by
+"fhandle" from its caches and then send the \fBVacated Message\fR back to
+the server. Flushing includes pushing any dirty writes via. write RPCs.
+.ip \(bu
+Vacated Message
+.(l
+ void
+ NQNFSPROC_VACATED (fhandle) = 20;
+.)l
+This message is sent from the client to the server in response to the
+\fBEviction Message\fR. See above.
+.ip \(bu
+Access RPC
+.(l
+ struct accessargs {
+ fhandle file;
+ bool read_access;
+ bool write_access;
+ bool exec_access;
+ };
+
+ stat
+ NQNFSPROC_ACCESS(accessargs) = 22;
+.)l
+The access RPC does permission checking on the server for the given type
+of access required by the client for the file.
+Use of this RPC avoids accessibility problems caused by client->server uid
+mapping.
+.ip \(bu
+Piggybacked Get Lease Request
+.pp
+The piggybacked get lease request is functionally equivalent to the Get Lease
+RPC except that is attached to one of the other NQNFS RPC requests as follows.
+A getleaserequest is prepended to all of the request arguments for NQNFS
+and a getleaserequestres is inserted in all NFS result structures just after
+the "stat" field only if "stat == NFS_OK".
+.(l
+ union getleaserequest switch (cachetype type) {
+ case NQLREAD:
+ case NQLWRITE:
+ unsigned duration;
+ default:
+ void;
+ };
+
+ union getleaserequestres switch (cachetype type) {
+ case NQLREAD:
+ case NQLWRITE:
+ bool cachable;
+ unsigned duration;
+ modifyrev rev;
+ default:
+ void;
+ };
+.)l
+The get lease request applies to the file that the attached RPC operates on
+and the file attributes remain in the same location as for the NFS RPC reply
+structure.
+.ip \(bu
+Three additional "stat" values
+.pp
+Three additional values have been added to the enumerated type "stat".
+.(l
+ NQNFS_EXPIRED=500
+ NQNFS_TRYLATER=501
+ NQNFS_AUTHERR=502
+.)l
+The "expired" value indicates that a lease has expired.
+The "try later"
+value is returned by the server when it wishes the client to retry the
+RPC request after a short delay. It is used during crash recovery (Section 2)
+and may also be useful for server congestion control.
+The "authetication error" value is returned for kerberized mount points to
+indicate that there is no cached authentication mapping and a Kerberos ticket
+for the principal is required.
+.sh 2 "Data Types"
+.ip \(bu
+cachetype
+.(l
+ enum cachetype {
+ NQLNONE = 0,
+ NQLREAD = 1,
+ NQLWRITE = 2
+ };
+.)l
+Type of lease requested. NQLNONE is used to indicate no piggybacked lease
+request.
+.ip \(bu
+modifyrev
+.(l
+ typedef unsigned hyper modifyrev;
+.)l
+The "modifyrev" is an unsigned quadword integer value that is never zero
+and increases every time the corresponding file is modified on the server.
+.ip \(bu
+nqnfs_time
+.(l
+ struct nqnfs_time {
+ unsigned seconds;
+ unsigned nano_seconds;
+ };
+.)l
+For NQNFS times are handled at nano second resolution instead of micro second
+resolution for NFS.
+.ip \(bu
+nqnfs_fattr
+.(l
+ struct nqnfs_fattr {
+ ftype type;
+ unsigned mode;
+ unsigned nlink;
+ unsigned uid;
+ unsigned gid;
+ unsigned hyper size;
+ unsigned blocksize;
+ unsigned rdev;
+ unsigned hyper bytes;
+ unsigned fsid;
+ unsigned fileid;
+ nqnfs_time atime;
+ nqnfs_time mtime;
+ nqnfs_time ctime;
+ unsigned flags;
+ unsigned generation;
+ modifyrev rev;
+ };
+.)l
+The nqnfs_fattr structure is modified from the NFS fattr so that it stores
+the file size as a 64bit quantity and the storage occupied as a 64bit number
+of bytes. It also has fields added for the 4.4BSD va_flags and va_gen fields
+as well as the file's modify rev level.
+.ip \(bu
+nqnfs_sattr
+.(l
+ struct nqnfs_sattr {
+ unsigned mode;
+ unsigned uid;
+ unsigned gid;
+ unsigned hyper size;
+ nqnfs_time atime;
+ nqnfs_time mtime;
+ unsigned flags;
+ unsigned rdev;
+ };
+.)l
+The nqnfs_sattr structure is modified from the NFS sattr structure in the
+same manner as fattr.
+.lp
+The arguments to several of the NFS RPCs have been modified as well. Mostly,
+these are minor changes to use 64bit file offsets or similar. The modified
+argument structures follow.
+.ip \(bu
+Lookup RPC
+.(l
+ struct lookup_diropargs {
+ unsigned duration;
+ fhandle dir;
+ filename name;
+ };
+
+ union lookup_diropres switch (stat status) {
+ case NFS_OK:
+ struct {
+ union getleaserequestres lookup_lease;
+ fhandle file;
+ nqnfs_fattr attributes;
+ } lookup_diropok;
+ default:
+ void;
+ };
+
+.)l
+The additional "duration" argument tells the server to get a lease for the
+name being looked up if it is non-zero and the lease is specified
+in "lookup_lease".
+.ip \(bu
+Read RPC
+.(l
+ struct nqnfs_readargs {
+ fhandle file;
+ unsigned hyper offset;
+ unsigned count;
+ };
+.)l
+.ip \(bu
+Write RPC
+.(l
+ struct nqnfs_writeargs {
+ fhandle file;
+ unsigned hyper offset;
+ bool append;
+ nfsdata data;
+ };
+.)l
+The "append" argument is true for apeend only write operations.
+.ip \(bu
+Get Filesystem Attributes RPC
+.(l
+ union nqnfs_statfsres (stat status) {
+ case NFS_OK:
+ struct {
+ unsigned tsize;
+ unsigned bsize;
+ unsigned blocks;
+ unsigned bfree;
+ unsigned bavail;
+ unsigned files;
+ unsigned files_free;
+ } info;
+ default:
+ void;
+ };
+.)l
+The "files" field is the number of files in the file system and the "files_free"
+is the number of additional files that can be created.
+.sh 1 "Summary"
+.pp
+The configuration and tuning of an NFS environment tends to be a bit of a
+mystic art, but hopefully this paper along with the man pages and other
+reading will be helpful. Good Luck.
diff --git a/share/doc/smm/06.nfs/Makefile b/share/doc/smm/06.nfs/Makefile
new file mode 100644
index 0000000..99f0762
--- /dev/null
+++ b/share/doc/smm/06.nfs/Makefile
@@ -0,0 +1,8 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= smm/06.nfs
+SRCS= 0.t 1.t 2.t ref.t
+MACROS= -me
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/06.nfs/ref.t b/share/doc/smm/06.nfs/ref.t
new file mode 100644
index 0000000..039363b
--- /dev/null
+++ b/share/doc/smm/06.nfs/ref.t
@@ -0,0 +1,123 @@
+.\" Copyright (c) 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This document is derived from software contributed to Berkeley by
+.\" Rick Macklem at The University of Guelph.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)ref.t 8.1 (Berkeley) 6/8/93
+.\"
+.sh 1 "Bibliography"
+.ip [Baker91] 16
+Mary Baker and John Ousterhout, Availability in the Sprite Distributed
+File System, In \fIOperating System Review\fR, (25)2, pg. 95-98,
+April 1991.
+.ip [Baker91a] 16
+Mary Baker, Private Email Communication, May 1991.
+.ip [Burrows88] 16
+Michael Burrows, Efficient Data Sharing, Technical Report #153,
+Computer Laboratory, University of Cambridge, Dec. 1988.
+.ip [Gray89] 16
+Cary G. Gray and David R. Cheriton, Leases: An Efficient Fault-Tolerant
+Mechanism for Distributed File Cache Consistency, In \fIProc. of the
+Twelfth ACM Symposium on Operating Systems Principals\fR, Litchfield Park,
+AZ, Dec. 1989.
+.ip [Howard88] 16
+John H. Howard, Michael L. Kazar, Sherri G. Menees, David A. Nichols,
+M. Satyanarayanan, Robert N. Sidebotham and Michael J. West,
+Scale and Performance in a Distributed File System, \fIACM Trans. on
+Computer Systems\fR, (6)1, pg 51-81, Feb. 1988.
+.ip [Juszczak89] 16
+Chet Juszczak, Improving the Performance and Correctness of an NFS Server,
+In \fIProc. Winter 1989 USENIX Conference,\fR pg. 53-63, San Diego, CA, January 1989.
+.ip [Keith90] 16
+Bruce E. Keith, Perspectives on NFS File Server Performance Characterization,
+In \fIProc. Summer 1990 USENIX Conference\fR, pg. 267-277, Anaheim, CA,
+June 1990.
+.ip [Kent87] 16
+Christopher. A. Kent, \fICache Coherence in Distributed Systems\fR,
+Research Report 87/4,
+Digital Equipment Corporation Western Research Laboratory, April 1987.
+.ip [Kent87a] 16
+Christopher. A. Kent and Jeffrey C. Mogul,
+\fIFragmentation Considered Harmful\fR, Research Report 87/3,
+Digital Equipment Corporation Western Research Laboratory, Dec. 1987.
+.ip [Macklem91] 16
+Rick Macklem, Lessons Learned Tuning the 4.3BSD Reno Implementation of the
+NFS Protocol, In \fIProc. Winter USENIX Conference\fR, pg. 53-64,
+Dallas, TX, January 1991.
+.ip [Nelson88] 16
+Michael N. Nelson, Brent B. Welch, and John K. Ousterhout, Caching in the
+Sprite Network File System, \fIACM Transactions on Computer Systems\fR (6)1
+pg. 134-154, February 1988.
+.ip [Nowicki89] 16
+Bill Nowicki, Transport Issues in the Network File System, In
+\fIComputer Communication Review\fR, pg. 16-20, Vol. 19, Number 2, April 1989.
+.ip [Ousterhout90] 16
+John K. Ousterhout, Why Aren't Operating Systems Getting Faster As Fast as
+Hardware? In \fIProc. Summer 1990 USENIX Conference\fR, pg. 247-256, Anaheim,
+CA, June 1990.
+.ip [Pendry93] 16
+Jan-Simon Pendry, 4.4 BSD Automounter Reference Manual, In
+\fIsrc/usr.sbin/amd/doc directory of 4.4 BSD distribution tape\fR.
+.ip [Reid90] 16
+Jim Reid, N(e)FS: the Protocol is the Problem, In
+\fIProc. Summer 1990 UKUUG Conference\fR,
+London, England, July 1990.
+.ip [Sandberg85] 16
+Russel Sandberg, David Goldberg, Steve Kleiman, Dan Walsh, and Bob Lyon,
+Design and Implementation of the Sun Network filesystem, In \fIProc. Summer
+1985 USENIX Conference\fR, pages 119-130, Portland, OR, June 1985.
+.ip [Schroeder85] 16
+Michael D. Schroeder, David K. Gifford and Roger M. Needham, A Caching
+File System For A Programmer's Workstation, In \fIProc. of the Tenth
+ACM Symposium on Operating Systems Principals\fR, pg. 25-34, Orcas Island,
+WA, Dec. 1985.
+.ip [Srinivasan89] 16
+V. Srinivasan and Jeffrey. C. Mogul, \fISpritely NFS: Implementation and
+Performance of Cache-Consistency Protocols\fR, Research Report 89/5,
+Digital Equipment Corporation Western Research Laboratory, May 1989.
+.ip [Steiner88] 16
+Jennifer G. Steiner, Clifford Neuman and Jeffrey I. Schiller,
+Kerberos: An Authentication Service for Open Network Systems, In
+\fIProc. Winter 1988 USENIX Conference\fR, Dallas, TX, February 1988.
+.ip [Stern] 16
+Hal Stern, \fIManaging NFS and NIS\fR, O'Reilly and Associates,
+ISBN 0-937175-75-7.
+.ip [Sun87] 16
+Sun Microsystems Inc., \fIXDR: External Data Representation Standard\fR,
+RFC1014, Network Information Center, SRI International, June 1987.
+.ip [Sun88] 16
+Sun Microsystems Inc., \fIRPC: Remote Procedure Call Protocol Specification Version 2\fR,
+RFC1057, Network Information Center, SRI International, June 1988.
+.ip [Sun89] 16
+Sun Microsystems Inc., \fINFS: Network File System Protocol Specification\fR,
+ARPANET Working Group Requests for Comment, DDN Network Information Center,
+SRI International, Menlo Park, CA, March 1989, RFC-1094.
diff --git a/share/doc/smm/08.sendmailop/Makefile b/share/doc/smm/08.sendmailop/Makefile
new file mode 100644
index 0000000..482ed79
--- /dev/null
+++ b/share/doc/smm/08.sendmailop/Makefile
@@ -0,0 +1,11 @@
+# From: @(#)Makefile 8.2 (Berkeley) 2/28/94
+# $FreeBSD$
+
+VOLUME= smm/08.sendmailop
+SRCS= op.me
+MACROS= -me
+USE_PIC=
+USE_EQN=
+SRCDIR= ${.CURDIR}/../../../../contrib/sendmail/doc/op
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/11.timedop/Makefile b/share/doc/smm/11.timedop/Makefile
new file mode 100644
index 0000000..ad09e78
--- /dev/null
+++ b/share/doc/smm/11.timedop/Makefile
@@ -0,0 +1,9 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= smm/11.timedop
+SRCS= timed.ms
+MACROS= -ms
+SRCDIR= ${.CURDIR}/../../../../usr.sbin/timed/SMM.doc/timedop
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/12.timed/Makefile b/share/doc/smm/12.timed/Makefile
new file mode 100644
index 0000000..1d9ed5c
--- /dev/null
+++ b/share/doc/smm/12.timed/Makefile
@@ -0,0 +1,12 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= smm/12.timed
+SRCS= timed.ms
+EXTRA= date loop time unused
+MACROS= -ms
+USE_SOELIM=
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../usr.sbin/timed/SMM.doc/timed
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/18.net/0.t b/share/doc/smm/18.net/0.t
new file mode 100644
index 0000000..d16e56f
--- /dev/null
+++ b/share/doc/smm/18.net/0.t
@@ -0,0 +1,184 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)0.t 8.1 (Berkeley) 6/10/93
+.\"
+.de IR
+\fI\\$1\fP\\$2
+..
+.if n .ND
+.TL
+Networking Implementation Notes
+.br
+4.4BSD Edition
+.AU
+Samuel J. Leffler, William N. Joy, Robert S. Fabry, and Michael J. Karels
+.AI
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California, Berkeley
+Berkeley, CA 94720
+.AB
+.FS
+* UNIX is a trademark of Bell Laboratories.
+.FE
+This report describes the internal structure of the
+networking facilities developed for the 4.4BSD version
+of the UNIX* operating system
+for the VAX\(dg. These facilities
+.FS
+\(dg DEC, VAX, DECnet, and UNIBUS are trademarks of
+Digital Equipment Corporation.
+.FE
+are based on several central abstractions which
+structure the external (user) view of network communication
+as well as the internal (system) implementation.
+.PP
+The report documents the internal structure of the networking system.
+The ``Berkeley Software Architecture Manual, 4.4BSD Edition'' (PSD:5)
+provides a description of the user interface to the networking facilities.
+.sp
+.LP
+Revised June 10, 1993
+.AE
+.LP
+.\".de PT
+.\".lt \\n(LLu
+.\".pc %
+.\".nr PN \\n%
+.\".tl '\\*(LH'\\*(CH'\\*(RH'
+.\".lt \\n(.lu
+.\"..
+.\".ds RH Contents
+.OH 'Networking Implementation Notes''SMM:18-%'
+.EH 'SMM:18-%''Networking Implementation Notes'
+.bp
+.ce
+.B "TABLE OF CONTENTS"
+.LP
+.sp 1
+.nf
+.B "1. Introduction"
+.LP
+.sp .5v
+.nf
+.B "2. Overview"
+.LP
+.sp .5v
+.nf
+.B "3. Goals
+.LP
+.sp .5v
+.nf
+.B "4. Internal address representation"
+.LP
+.sp .5v
+.nf
+.B "5. Memory management"
+.LP
+.sp .5v
+.nf
+.B "6. Internal layering
+6.1. Socket layer
+6.1.1. Socket state
+6.1.2. Socket data queues
+6.1.3. Socket connection queuing
+6.2. Protocol layer(s)
+6.3. Network-interface layer
+6.3.1. UNIBUS interfaces
+.LP
+.sp .5v
+.nf
+.B "7. Socket/protocol interface"
+.LP
+.sp .5v
+.nf
+.B "8. Protocol/protocol interface"
+8.1. pr_output
+8.2. pr_input
+8.3. pr_ctlinput
+8.4. pr_ctloutput
+.LP
+.sp .5v
+.nf
+.B "9. Protocol/network-interface interface"
+9.1. Packet transmission
+9.2. Packet reception
+.LP
+.sp .5v
+.nf
+.B "10. Gateways and routing issues
+10.1. Routing tables
+10.2. Routing table interface
+10.3. User level routing policies
+.LP
+.sp .5v
+.nf
+.B "11. Raw sockets"
+11.1. Control blocks
+11.2. Input processing
+11.3. Output processing
+.LP
+.sp .5v
+.nf
+.B "12. Buffering and congestion control"
+12.1. Memory management
+12.2. Protocol buffering policies
+12.3. Queue limiting
+12.4. Packet forwarding
+.LP
+.sp .5v
+.nf
+.B "13. Out of band data"
+.LP
+.sp .5v
+.nf
+.B "14. Trailer protocols"
+.LP
+.sp .5v
+.nf
+.B Acknowledgements
+.LP
+.sp .5v
+.nf
+.B References
+.bp
+.de _d
+.if t .ta .6i 2.1i 2.6i
+.\" 2.94 went to 2.6, 3.64 to 3.30
+.if n .ta .84i 2.6i 3.30i
+..
+.de _f
+.if t .ta .5i 1.25i 2.5i
+.\" 3.5i went to 3.8i
+.if n .ta .7i 1.75i 3.8i
+..
diff --git a/share/doc/smm/18.net/1.t b/share/doc/smm/18.net/1.t
new file mode 100644
index 0000000..ba5adb5
--- /dev/null
+++ b/share/doc/smm/18.net/1.t
@@ -0,0 +1,66 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)1.t 8.1 (Berkeley) 6/8/93
+.\"
+.\".ds RH Introduction
+.br
+.ne 2i
+.NH
+\s+2Introduction\s0
+.PP
+This report describes the internal structure of
+facilities added to the
+4.2BSD version of the UNIX operating system for
+the VAX,
+as modified in the 4.4BSD release.
+The system facilities provide
+a uniform user interface to networking
+within UNIX. In addition, the implementation
+introduces a structure for network communications which may be
+used by system implementors in adding new networking
+facilities. The internal structure is not visible
+to the user, rather it is intended to aid implementors
+of communication protocols and network services by
+providing a framework which
+promotes code sharing and minimizes implementation effort.
+.PP
+The reader is expected to be familiar with the C programming
+language and system interface, as described in the
+\fIBerkeley Software Architecture Manual, 4.4BSD Edition\fP [Joy86].
+Basic understanding of network
+communication concepts is assumed; where required
+any additional ideas are introduced.
+.PP
+The remainder of this document
+provides a description of the system internals,
+avoiding, when possible, those portions which are utilized only
+by the interprocess communication facilities.
diff --git a/share/doc/smm/18.net/2.t b/share/doc/smm/18.net/2.t
new file mode 100644
index 0000000..f504889
--- /dev/null
+++ b/share/doc/smm/18.net/2.t
@@ -0,0 +1,85 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)2.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH Overview
+.br
+.ne 2i
+.NH
+\s+2Overview\s0
+.PP
+If we consider
+the International Standards Organization's (ISO)
+Open System Interconnection (OSI) model of
+network communication [ISO81] [Zimmermann80],
+the networking facilities
+described here correspond to a portion of the
+session layer (layer 3) and all of the transport and
+network layers (layers 2 and 1, respectively).
+.PP
+The network layer provides possibly imperfect
+data transport services with minimal addressing
+structure.
+Addressing at this level is normally host to host,
+with implicit or explicit routing optionally supported
+by the communicating agents.
+.PP
+At the transport
+layer the notions of reliable transfer, data sequencing,
+flow control, and service addressing are normally
+included. Reliability is usually managed by
+explicit acknowledgement of data delivered. Failure
+to acknowledge a transfer results in retransmission of
+the data. Sequencing may be handled by tagging
+each message handed to the network layer by a
+\fIsequence number\fP and maintaining
+state at the endpoints of communication to utilize
+received sequence numbers in reordering data which
+arrives out of order.
+.PP
+The session layer facilities may provide forms of
+addressing which are mapped into formats required
+by the transport layer, service authentication
+and client authentication, etc. Various systems
+also provide services such as data encryption and
+address and protocol translation.
+.PP
+The following sections begin by describing some of the common
+data structures and utility routines, then examine
+the internal layering. The contents of each layer
+and its interface are considered. Certain of the
+interfaces are protocol implementation specific. For
+these cases examples have been drawn from the Internet [Cerf78]
+protocol family. Later sections cover routing issues,
+the design of the raw socket interface and other
+miscellaneous topics.
diff --git a/share/doc/smm/18.net/3.t b/share/doc/smm/18.net/3.t
new file mode 100644
index 0000000..1d1fddd
--- /dev/null
+++ b/share/doc/smm/18.net/3.t
@@ -0,0 +1,59 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)3.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH Goals
+.br
+.ne 2i
+.NH
+\s+2Goals\s0
+.PP
+The networking system was designed with the goal of supporting
+multiple \fIprotocol families\fP and addressing styles. This required
+information to be ``hidden'' in common data structures which
+could be manipulated by all the pieces of the system, but which
+required interpretation only by the protocols which ``controlled''
+it. The system described here attempts to minimize
+the use of shared data structures to those kept by a suite of
+protocols (a \fIprotocol family\fP), and those used for rendezvous
+between ``synchronous'' and ``asynchronous'' portions of the
+system (e.g. queues of data packets are filled at interrupt
+time and emptied based on user requests).
+.PP
+A major goal of the system was to provide a framework within
+which new protocols and hardware could be easily be supported.
+To this end, a great deal of effort has been extended to
+create utility routines which hide many of the more
+complex and/or hardware dependent chores of networking.
+Later sections describe the utility routines and the underlying
+data structures they manipulate.
diff --git a/share/doc/smm/18.net/4.t b/share/doc/smm/18.net/4.t
new file mode 100644
index 0000000..afa6913
--- /dev/null
+++ b/share/doc/smm/18.net/4.t
@@ -0,0 +1,67 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)4.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Address representation
+.br
+.ne 2i
+.NH
+\s+2Internal address representation\s0
+.PP
+Common to all portions of the system are two data structures.
+These structures are used to represent
+addresses and various data objects.
+Addresses, internally are described by the \fIsockaddr\fP structure,
+.DS
+._f
+struct sockaddr {
+ short sa_family; /* data format identifier */
+ char sa_data[14]; /* address */
+};
+.DE
+All addresses belong to one or more \fIaddress families\fP
+which define their format and interpretation.
+The \fIsa_family\fP field indicates the address family to which the address
+belongs, and the \fIsa_data\fP field contains the actual data value.
+The size of the data field, 14 bytes, was selected based on a study
+of current address formats.*
+Specific address formats use private structure definitions
+that define the format of the data field.
+The system interface supports larger address structures,
+although address-family-independent support facilities, for example routing
+and raw socket interfaces, provide only 14 bytes for address storage.
+Protocols that do not use those facilities (e.g, the current Unix domain)
+may use larger data areas.
+.FS
+* Later versions of the system may support variable length addresses.
+.FE
diff --git a/share/doc/smm/18.net/5.t b/share/doc/smm/18.net/5.t
new file mode 100644
index 0000000..d4fb8e3
--- /dev/null
+++ b/share/doc/smm/18.net/5.t
@@ -0,0 +1,184 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)5.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Memory management
+.br
+.ne 2i
+.NH
+\s+2Memory management\s0
+.PP
+A single mechanism is used for data storage: memory buffers, or
+\fImbuf\fP's. An mbuf is a structure of the form:
+.DS
+._f
+struct mbuf {
+ struct mbuf *m_next; /* next buffer in chain */
+ u_long m_off; /* offset of data */
+ short m_len; /* amount of data in this mbuf */
+ short m_type; /* mbuf type (accounting) */
+ u_char m_dat[MLEN]; /* data storage */
+ struct mbuf *m_act; /* link in higher-level mbuf list */
+};
+.DE
+The \fIm_next\fP field is used to chain mbufs together on linked
+lists, while the \fIm_act\fP field allows lists of mbuf chains to be
+accumulated. By convention, the mbufs common to a single object
+(for example, a packet) are chained together with the \fIm_next\fP
+field, while groups of objects are linked via the \fIm_act\fP
+field (possibly when in a queue).
+.PP
+Each mbuf has a small data area for storing information, \fIm_dat\fP.
+The \fIm_len\fP field indicates the amount of data, while the \fIm_off\fP
+field is an offset to the beginning of the data from the base of the
+mbuf. Thus, for example, the macro \fImtod\fP, which converts a pointer
+to an mbuf to a pointer to the data stored in the mbuf, has the form
+.DS
+._d
+#define mtod(\fIx\fP,\fIt\fP) ((\fIt\fP)((int)(\fIx\fP) + (\fIx\fP)->m_off))
+.DE
+(note the \fIt\fP parameter, a C type cast, which is used to cast
+the resultant pointer for proper assignment).
+.PP
+In addition to storing data directly in the mbuf's data area, data
+of page size may be also be stored in a separate area of memory.
+The mbuf utility routines maintain
+a pool of pages for this purpose and manipulate a private page map
+for such pages.
+An mbuf with an external data area may be recognized by the larger
+offset to the data area;
+this is formalized by the macro M_HASCL(\fIm\fP), which is true
+if the mbuf whose address is \fIm\fP has an external page cluster.
+An array of reference counts on pages is also maintained
+so that copies of pages may be made without core to core
+copying (copies are created simply by duplicating the reference to the data
+and incrementing the associated reference counts for the pages).
+Separate data pages are currently used only
+when copying data from a user process into the kernel,
+and when bringing data in at the hardware level. Routines which
+manipulate mbufs are not normally aware whether data is stored directly in
+the mbuf data array, or if it is kept in separate pages.
+.PP
+The following may be used to allocate and free mbufs:
+.LP
+m = m_get(wait, type);
+.br
+MGET(m, wait, type);
+.IP
+The subroutine \fIm_get\fP and the macro \fIMGET\fP
+each allocate an mbuf, placing its address in \fIm\fP.
+The argument \fIwait\fP is either M_WAIT or M_DONTWAIT according
+to whether allocation should block or fail if no mbuf is available.
+The \fItype\fP is one of the predefined mbuf types for use in accounting
+of mbuf allocation.
+.IP "MCLGET(m);"
+This macro attempts to allocate an mbuf page cluster
+to associate with the mbuf \fIm\fP.
+If successful, the length of the mbuf is set to CLSIZE,
+the size of the page cluster.
+.LP
+n = m_free(m);
+.br
+MFREE(m,n);
+.IP
+The routine \fIm_free\fP and the macro \fIMFREE\fP
+each free a single mbuf, \fIm\fP, and any associated external storage area,
+placing a pointer to its successor in the chain it heads, if any, in \fIn\fP.
+.IP "m_freem(m);"
+This routine frees an mbuf chain headed by \fIm\fP.
+.PP
+The following utility routines are available for manipulating mbuf
+chains:
+.IP "m = m_copy(m0, off, len);"
+.br
+The \fIm_copy\fP routine create a copy of all, or part, of a
+list of the mbufs in \fIm0\fP. \fILen\fP bytes of data, starting
+\fIoff\fP bytes from the front of the chain, are copied.
+Where possible, reference counts on pages are used instead
+of core to core copies. The original mbuf chain must have at
+least \fIoff\fP + \fIlen\fP bytes of data. If \fIlen\fP is
+specified as M_COPYALL, all the data present, offset
+as before, is copied.
+.IP "m_cat(m, n);"
+.br
+The mbuf chain, \fIn\fP, is appended to the end of \fIm\fP.
+Where possible, compaction is performed.
+.IP "m_adj(m, diff);"
+.br
+The mbuf chain, \fIm\fP is adjusted in size by \fIdiff\fP
+bytes. If \fIdiff\fP is non-negative, \fIdiff\fP bytes
+are shaved off the front of the mbuf chain. If \fIdiff\fP
+is negative, the alteration is performed from back to front.
+No space is reclaimed in this operation; alterations are
+accomplished by changing the \fIm_len\fP and \fIm_off\fP
+fields of mbufs.
+.IP "m = m_pullup(m0, size);"
+.br
+After a successful call to \fIm_pullup\fP, the mbuf at
+the head of the returned list, \fIm\fP, is guaranteed
+to have at least \fIsize\fP
+bytes of data in contiguous memory within the data area of the mbuf
+(allowing access via a pointer, obtained using the \fImtod\fP macro,
+and allowing the mbuf to be located from a pointer to the data area
+using \fIdtom\fP, defined below).
+If the original data was less than \fIsize\fP bytes long,
+\fIlen\fP was greater than the size of an mbuf data
+area (112 bytes), or required resources were unavailable,
+\fIm\fP is 0 and the original mbuf chain is deallocated.
+.IP
+This routine is particularly useful when verifying packet
+header lengths on reception. For example, if a packet is
+received and only 8 of the necessary 16 bytes required
+for a valid packet header are present at the head of the list
+of mbufs representing the packet, the remaining 8 bytes
+may be ``pulled up'' with a single \fIm_pullup\fP call.
+If the call fails the invalid packet will have been discarded.
+.PP
+By insuring that mbufs always reside on 128 byte boundaries,
+it is always possible to locate the mbuf associated with a data
+area by masking off the low bits of the virtual address.
+This allows modules to store data structures in mbufs and
+pass them around without concern for locating the original
+mbuf when it comes time to free the structure.
+Note that this works only with objects stored in the internal data
+buffer of the mbuf.
+The \fIdtom\fP macro is used to convert a pointer into an mbuf's
+data area to a pointer to the mbuf,
+.DS
+#define dtom(x) ((struct mbuf *)((int)x & ~(MSIZE-1)))
+.DE
+.PP
+Mbufs are used for dynamically allocated data structures such as
+sockets as well as memory allocated for packets and headers. Statistics are
+maintained on mbuf usage and can be viewed by users using the
+\fInetstat\fP\|(1) program.
diff --git a/share/doc/smm/18.net/6.t b/share/doc/smm/18.net/6.t
new file mode 100644
index 0000000..601988c
--- /dev/null
+++ b/share/doc/smm/18.net/6.t
@@ -0,0 +1,664 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)6.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Internal layering
+.br
+.ne 2i
+.NH
+\s+2Internal layering\s0
+.PP
+The internal structure of the network system is divided into
+three layers. These
+layers correspond to the services provided by the socket
+abstraction, those provided by the communication protocols,
+and those provided by the hardware interfaces. The communication
+protocols are normally layered into two or more individual
+cooperating layers, though they are collectively viewed
+in the system as one layer providing services supportive
+of the appropriate socket abstraction.
+.PP
+The following sections describe the properties of each layer
+in the system and the interfaces to which each must conform.
+.NH 2
+Socket layer
+.PP
+The socket layer deals with the interprocess communication
+facilities provided by the system. A socket is a bidirectional
+endpoint of communication which is ``typed'' by the semantics
+of communication it supports. The system calls described in
+the \fIBerkeley Software Architecture Manual\fP [Joy86]
+are used to manipulate sockets.
+.PP
+A socket consists of the following data structure:
+.DS
+._f
+struct socket {
+ short so_type; /* generic type */
+ short so_options; /* from socket call */
+ short so_linger; /* time to linger while closing */
+ short so_state; /* internal state flags */
+ caddr_t so_pcb; /* protocol control block */
+ struct protosw *so_proto; /* protocol handle */
+ struct socket *so_head; /* back pointer to accept socket */
+ struct socket *so_q0; /* queue of partial connections */
+ short so_q0len; /* partials on so_q0 */
+ struct socket *so_q; /* queue of incoming connections */
+ short so_qlen; /* number of connections on so_q */
+ short so_qlimit; /* max number queued connections */
+ struct sockbuf so_rcv; /* receive queue */
+ struct sockbuf so_snd; /* send queue */
+ short so_timeo; /* connection timeout */
+ u_short so_error; /* error affecting connection */
+ u_short so_oobmark; /* chars to oob mark */
+ short so_pgrp; /* pgrp for signals */
+};
+.DE
+.PP
+Each socket contains two data queues, \fIso_rcv\fP and \fIso_snd\fP,
+and a pointer to routines which provide supporting services.
+The type of the socket,
+\fIso_type\fP is defined at socket creation time and used in selecting
+those services which are appropriate to support it. The supporting
+protocol is selected at socket creation time and recorded in
+the socket data structure for later use. Protocols are defined
+by a table of procedures, the \fIprotosw\fP structure, which will
+be described in detail later. A pointer to a protocol-specific
+data structure,
+the ``protocol control block,'' is also present in the socket structure.
+Protocols control this data structure, which normally includes a
+back pointer to the parent socket structure to allow easy
+lookup when returning information to a user
+(for example, placing an error number in the \fIso_error\fP
+field). The other entries in the socket structure are used in
+queuing connection requests, validating user requests, storing
+socket characteristics (e.g.
+options supplied at the time a socket is created), and maintaining
+a socket's state.
+.PP
+Processes ``rendezvous at a socket'' in many instances. For instance,
+when a process wishes to extract data from a socket's receive queue
+and it is empty, or lacks sufficient data to satisfy the request,
+the process blocks, supplying the address of the receive queue as
+a ``wait channel' to be used in notification. When data arrives
+for the process and is placed in the socket's queue, the blocked
+process is identified by the fact it is waiting ``on the queue.''
+.NH 3
+Socket state
+.PP
+A socket's state is defined from the following:
+.DS
+.ta \w'#define 'u +\w'SS_ISDISCONNECTING 'u +\w'0x000 'u
+#define SS_NOFDREF 0x001 /* no file table ref any more */
+#define SS_ISCONNECTED 0x002 /* socket connected to a peer */
+#define SS_ISCONNECTING 0x004 /* in process of connecting to peer */
+#define SS_ISDISCONNECTING 0x008 /* in process of disconnecting */
+#define SS_CANTSENDMORE 0x010 /* can't send more data to peer */
+#define SS_CANTRCVMORE 0x020 /* can't receive more data from peer */
+#define SS_RCVATMARK 0x040 /* at mark on input */
+
+#define SS_PRIV 0x080 /* privileged */
+#define SS_NBIO 0x100 /* non-blocking ops */
+#define SS_ASYNC 0x200 /* async i/o notify */
+.DE
+.PP
+The state of a socket is manipulated both by the protocols
+and the user (through system calls).
+When a socket is created, the state is defined based on the type of socket.
+It may change as control actions are performed, for example connection
+establishment.
+It may also change according to the type of
+input/output the user wishes to perform, as indicated by options
+set with \fIfcntl\fP. ``Non-blocking'' I/O implies that
+a process should never be blocked to await resources. Instead, any
+call which would block returns prematurely
+with the error EWOULDBLOCK, or the service request may be partially
+fulfilled, e.g. a request for more data than is present.
+.PP
+If a process requested ``asynchronous'' notification of events
+related to the socket, the SIGIO signal is posted to the process
+when such events occur.
+An event is a change in the socket's state;
+examples of such occurrences are: space
+becoming available in the send queue, new data available in the
+receive queue, connection establishment or disestablishment, etc.
+.PP
+A socket may be marked ``privileged'' if it was created by the
+super-user. Only privileged sockets may
+bind addresses in privileged portions of an address space
+or use ``raw'' sockets to access lower levels of the network.
+.NH 3
+Socket data queues
+.PP
+A socket's data queue contains a pointer to the data stored in
+the queue and other entries related to the management of
+the data. The following structure defines a data queue:
+.DS
+._f
+struct sockbuf {
+ u_short sb_cc; /* actual chars in buffer */
+ u_short sb_hiwat; /* max actual char count */
+ u_short sb_mbcnt; /* chars of mbufs used */
+ u_short sb_mbmax; /* max chars of mbufs to use */
+ u_short sb_lowat; /* low water mark */
+ short sb_timeo; /* timeout */
+ struct mbuf *sb_mb; /* the mbuf chain */
+ struct proc *sb_sel; /* process selecting read/write */
+ short sb_flags; /* flags, see below */
+};
+.DE
+.PP
+Data is stored in a queue as a chain of mbufs.
+The actual count of data characters as well as high and low water marks are
+used by the protocols in controlling the flow of data.
+The amount of buffer space (characters of mbufs and associated data pages)
+is also recorded along with the limit on buffer allocation.
+The socket routines cooperate in implementing the flow control
+policy by blocking a process when it requests to send data and
+the high water mark has been reached, or when it requests to
+receive data and less than the low water mark is present
+(assuming non-blocking I/O has not been specified).*
+.FS
+* The low-water mark is always presumed to be 0
+in the current implementation.
+.FE
+.PP
+When a socket is created, the supporting protocol ``reserves'' space
+for the send and receive queues of the socket.
+The limit on buffer allocation is set somewhat higher than the limit
+on data characters
+to account for the granularity of buffer allocation.
+The actual storage associated with a
+socket queue may fluctuate during a socket's lifetime, but it is assumed
+that this reservation will always allow a protocol to acquire enough memory
+to satisfy the high water marks.
+.PP
+The timeout and select values are manipulated by the socket routines
+in implementing various portions of the interprocess communications
+facilities and will not be described here.
+.PP
+Data queued at a socket is stored in one of two styles.
+Stream-oriented sockets queue data with no addresses, headers
+or record boundaries.
+The data are in mbufs linked through the \fIm_next\fP field.
+Buffers containing access rights may be present within the chain
+if the underlying protocol supports passage of access rights.
+Record-oriented sockets, including datagram sockets,
+queue data as a list of packets; the sections of packets are distinguished
+by the types of the mbufs containing them.
+The mbufs which comprise a record are linked through the \fIm_next\fP field;
+records are linked from the \fIm_act\fP field of the first mbuf
+of one packet to the first mbuf of the next.
+Each packet begins with an mbuf containing the ``from'' address
+if the protocol provides it,
+then any buffers containing access rights, and finally any buffers
+containing data.
+If a record contains no data,
+no data buffers are required unless neither address nor access rights
+are present.
+.PP
+A socket queue has a number of flags used in synchronizing access
+to the data and in acquiring resources:
+.DS
+._d
+#define SB_LOCK 0x01 /* lock on data queue (so_rcv only) */
+#define SB_WANT 0x02 /* someone is waiting to lock */
+#define SB_WAIT 0x04 /* someone is waiting for data/space */
+#define SB_SEL 0x08 /* buffer is selected */
+#define SB_COLL 0x10 /* collision selecting */
+.DE
+The last two flags are manipulated by the system in implementing
+the select mechanism.
+.NH 3
+Socket connection queuing
+.PP
+In dealing with connection oriented sockets (e.g. SOCK_STREAM)
+the two ends are considered distinct. One end is termed
+\fIactive\fP, and generates connection requests. The other
+end is called \fIpassive\fP and accepts connection requests.
+.PP
+From the passive side, a socket is marked with
+SO_ACCEPTCONN when a \fIlisten\fP call is made,
+creating two queues of sockets: \fIso_q0\fP for connections
+in progress and \fIso_q\fP for connections already made and
+awaiting user acceptance.
+As a protocol is preparing incoming connections, it creates
+a socket structure queued on \fIso_q0\fP by calling the routine
+\fIsonewconn\fP(). When the connection
+is established, the socket structure is then transferred
+to \fIso_q\fP, making it available for an \fIaccept\fP.
+.PP
+If an SO_ACCEPTCONN socket is closed with sockets on either
+\fIso_q0\fP or \fIso_q\fP, these sockets are dropped,
+with notification to the peers as appropriate.
+.NH 2
+Protocol layer(s)
+.PP
+Each socket is created in a communications domain,
+which usually implies both an addressing structure (address family)
+and a set of protocols which implement various socket types within the domain
+(protocol family).
+Each domain is defined by the following structure:
+.DS
+.ta .5i +\w'struct 'u +\w'(*dom_externalize)(); 'u
+struct domain {
+ int dom_family; /* PF_xxx */
+ char *dom_name;
+ int (*dom_init)(); /* initialize domain data structures */
+ int (*dom_externalize)(); /* externalize access rights */
+ int (*dom_dispose)(); /* dispose of internalized rights */
+ struct protosw *dom_protosw, *dom_protoswNPROTOSW;
+ struct domain *dom_next;
+};
+.DE
+.PP
+At boot time, each domain configured into the kernel
+is added to a linked list of domain.
+The initialization procedure of each domain is then called.
+After that time, the domain structure is used to locate protocols
+within the protocol family.
+It may also contain procedure references
+for externalization of access rights at the receiving socket
+and the disposal of access rights that are not received.
+.PP
+Protocols are described by a set of entry points and certain
+socket-visible characteristics, some of which are used in
+deciding which socket type(s) they may support.
+.PP
+An entry in the ``protocol switch'' table exists for each
+protocol module configured into the system. It has the following form:
+.DS
+.ta .5i +\w'struct 'u +\w'domain *pr_domain; 'u
+struct protosw {
+ short pr_type; /* socket type used for */
+ struct domain *pr_domain; /* domain protocol a member of */
+ short pr_protocol; /* protocol number */
+ short pr_flags; /* socket visible attributes */
+/* protocol-protocol hooks */
+ int (*pr_input)(); /* input to protocol (from below) */
+ int (*pr_output)(); /* output to protocol (from above) */
+ int (*pr_ctlinput)(); /* control input (from below) */
+ int (*pr_ctloutput)(); /* control output (from above) */
+/* user-protocol hook */
+ int (*pr_usrreq)(); /* user request */
+/* utility hooks */
+ int (*pr_init)(); /* initialization routine */
+ int (*pr_fasttimo)(); /* fast timeout (200ms) */
+ int (*pr_slowtimo)(); /* slow timeout (500ms) */
+ int (*pr_drain)(); /* flush any excess space possible */
+};
+.DE
+.PP
+A protocol is called through the \fIpr_init\fP entry before any other.
+Thereafter it is called every 200 milliseconds through the
+\fIpr_fasttimo\fP entry and
+every 500 milliseconds through the \fIpr_slowtimo\fP for timer based actions.
+The system will call the \fIpr_drain\fP entry if it is low on space and
+this should throw away any non-critical data.
+.PP
+Protocols pass data between themselves as chains of mbufs using
+the \fIpr_input\fP and \fIpr_output\fP routines. \fIPr_input\fP
+passes data up (towards
+the user) and \fIpr_output\fP passes it down (towards the network); control
+information passes up and down on \fIpr_ctlinput\fP and \fIpr_ctloutput\fP.
+The protocol is responsible for the space occupied by any of the
+arguments to these entries and must either pass it onward or dispose of it.
+(On output, the lowest level reached must free buffers storing the arguments;
+on input, the highest level is responsible for freeing buffers.)
+.PP
+The \fIpr_usrreq\fP routine interfaces protocols to the socket
+code and is described below.
+.PP
+The \fIpr_flags\fP field is constructed from the following values:
+.DS
+.ta \w'#define 'u +\w'PR_CONNREQUIRED 'u +8n
+#define PR_ATOMIC 0x01 /* exchange atomic messages only */
+#define PR_ADDR 0x02 /* addresses given with messages */
+#define PR_CONNREQUIRED 0x04 /* connection required by protocol */
+#define PR_WANTRCVD 0x08 /* want PRU_RCVD calls */
+#define PR_RIGHTS 0x10 /* passes capabilities */
+.DE
+Protocols which are connection-based specify the PR_CONNREQUIRED
+flag so that the socket routines will never attempt to send data
+before a connection has been established. If the PR_WANTRCVD flag
+is set, the socket routines will notify the protocol when the user
+has removed data from the socket's receive queue. This allows
+the protocol to implement acknowledgement on user receipt, and
+also update windowing information based on the amount of space
+available in the receive queue. The PR_ADDR field indicates that any
+data placed in the socket's receive queue will be preceded by the
+address of the sender. The PR_ATOMIC flag specifies that each \fIuser\fP
+request to send data must be performed in a single \fIprotocol\fP send
+request; it is the protocol's responsibility to maintain record
+boundaries on data to be sent. The PR_RIGHTS flag indicates that the
+protocol supports the passing of capabilities; this is currently
+used only by the protocols in the UNIX protocol family.
+.PP
+When a socket is created, the socket routines scan the protocol
+table for the domain
+looking for an appropriate protocol to support the type of
+socket being created. The \fIpr_type\fP field contains one of the
+possible socket types (e.g. SOCK_STREAM), while the \fIpr_domain\fP
+is a back pointer to the domain structure.
+The \fIpr_protocol\fP field contains the protocol number of the
+protocol, normally a well-known value.
+.NH 2
+Network-interface layer
+.PP
+Each network-interface configured into a system defines a
+path through which packets may be sent and received.
+Normally a hardware device is associated with this interface,
+though there is no requirement for this (for example, all
+systems have a software ``loopback'' interface used for
+debugging and performance analysis).
+In addition to manipulating the hardware device, an interface
+module is responsible
+for encapsulation and decapsulation of any link-layer header
+information required to deliver a message to its destination.
+The selection of which interface to use in delivering packets
+is a routing decision carried out at a
+higher level than the network-interface layer.
+An interface may have addresses in one or more address families.
+The address is set at boot time using an \fIioctl\fP on a socket
+in the appropriate domain; this operation is implemented by the protocol
+family, after verifying the operation through the device \fIioctl\fP entry.
+.PP
+An interface is defined by the following structure,
+.DS
+.ta .5i +\w'struct 'u +\w'ifaddr *if_addrlist; 'u
+struct ifnet {
+ char *if_name; /* name, e.g. ``en'' or ``lo'' */
+ short if_unit; /* sub-unit for lower level driver */
+ short if_mtu; /* maximum transmission unit */
+ short if_flags; /* up/down, broadcast, etc. */
+ short if_timer; /* time 'til if_watchdog called */
+ struct ifaddr *if_addrlist; /* list of addresses of interface */
+ struct ifqueue if_snd; /* output queue */
+ int (*if_init)(); /* init routine */
+ int (*if_output)(); /* output routine */
+ int (*if_ioctl)(); /* ioctl routine */
+ int (*if_reset)(); /* bus reset routine */
+ int (*if_watchdog)(); /* timer routine */
+ int if_ipackets; /* packets received on interface */
+ int if_ierrors; /* input errors on interface */
+ int if_opackets; /* packets sent on interface */
+ int if_oerrors; /* output errors on interface */
+ int if_collisions; /* collisions on csma interfaces */
+ struct ifnet *if_next;
+};
+.DE
+Each interface address has the following form:
+.DS
+.ta \w'#define 'u +\w'struct 'u +\w'struct 'u +\w'sockaddr ifa_addr; 'u-\w'struct 'u
+struct ifaddr {
+ struct sockaddr ifa_addr; /* address of interface */
+ union {
+ struct sockaddr ifu_broadaddr;
+ struct sockaddr ifu_dstaddr;
+ } ifa_ifu;
+ struct ifnet *ifa_ifp; /* back-pointer to interface */
+ struct ifaddr *ifa_next; /* next address for interface */
+};
+.ta \w'#define 'u +\w'ifa_broadaddr 'u +\w'ifa_ifu.ifu_broadaddr 'u
+#define ifa_broadaddr ifa_ifu.ifu_broadaddr /* broadcast address */
+#define ifa_dstaddr ifa_ifu.ifu_dstaddr /* other end of p-to-p link */
+.DE
+The protocol generally maintains this structure as part of a larger
+structure containing additional information concerning the address.
+.PP
+Each interface has a send queue and routines used for
+initialization, \fIif_init\fP, and output, \fIif_output\fP.
+If the interface resides on a system bus, the routine \fIif_reset\fP
+will be called after a bus reset has been performed.
+An interface may also
+specify a timer routine, \fIif_watchdog\fP;
+if \fIif_timer\fP is non-zero, it is decremented once per second
+until it reaches zero, at which time the watchdog routine is called.
+.PP
+The state of an interface and certain characteristics are stored in
+the \fIif_flags\fP field. The following values are possible:
+.DS
+._d
+#define IFF_UP 0x1 /* interface is up */
+#define IFF_BROADCAST 0x2 /* broadcast is possible */
+#define IFF_DEBUG 0x4 /* turn on debugging */
+#define IFF_LOOPBACK 0x8 /* is a loopback net */
+#define IFF_POINTOPOINT 0x10 /* interface is point-to-point link */
+#define IFF_NOTRAILERS 0x20 /* avoid use of trailers */
+#define IFF_RUNNING 0x40 /* resources allocated */
+#define IFF_NOARP 0x80 /* no address resolution protocol */
+.DE
+If the interface is connected to a network which supports transmission
+of \fIbroadcast\fP packets, the IFF_BROADCAST flag will be set and
+the \fIifa_broadaddr\fP field will contain the address to be used in
+sending or accepting a broadcast packet. If the interface is associated
+with a point-to-point hardware link (for example, a DEC DMR-11), the
+IFF_POINTOPOINT flag will be set and \fIifa_dstaddr\fP will contain the
+address of the host on the other side of the connection. These addresses
+and the local address of the interface, \fIif_addr\fP, are used in
+filtering incoming packets. The interface sets IFF_RUNNING after
+it has allocated system resources and posted an initial read on the
+device it manages. This state bit is used to avoid multiple allocation
+requests when an interface's address is changed. The IFF_NOTRAILERS
+flag indicates the interface should refrain from using a \fItrailer\fP
+encapsulation on outgoing packets, or (where per-host negotiation
+of trailers is possible) that trailer encapsulations should not be requested;
+\fItrailer\fP protocols are described
+in section 14. The IFF_NOARP flag indicates the interface should not
+use an ``address resolution protocol'' in mapping internetwork addresses
+to local network addresses.
+.PP
+Various statistics are also stored in the interface structure. These
+may be viewed by users using the \fInetstat\fP(1) program.
+.PP
+The interface address and flags may be set with the SIOCSIFADDR and
+SIOCSIFFLAGS \fIioctl\fP\^s. SIOCSIFADDR is used initially to define each
+interface's address; SIOGSIFFLAGS can be used to mark
+an interface down and perform site-specific configuration.
+The destination address of a point-to-point link is set with SIOCSIFDSTADDR.
+Corresponding operations exist to read each value.
+Protocol families may also support operations to set and read the broadcast
+address.
+In addition, the SIOCGIFCONF \fIioctl\fP retrieves a list of interface
+names and addresses for all interfaces and protocols on the host.
+.NH 3
+UNIBUS interfaces
+.PP
+All hardware related interfaces currently reside on the UNIBUS.
+Consequently a common set of utility routines for dealing
+with the UNIBUS has been developed. Each UNIBUS interface
+utilizes a structure of the following form:
+.DS
+.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
+struct ifubinfo {
+ short iff_uban; /* uba number */
+ short iff_hlen; /* local net header length */
+ struct uba_regs *iff_uba; /* uba regs, in vm */
+ short iff_flags; /* used during uballoc's */
+};
+.DE
+Additional structures are associated with each receive and transmit buffer,
+normally one each per interface; for read,
+.DS
+.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
+struct ifrw {
+ caddr_t ifrw_addr; /* virt addr of header */
+ short ifrw_bdp; /* unibus bdp */
+ short ifrw_flags; /* type, etc. */
+#define IFRW_W 0x01 /* is a transmit buffer */
+ int ifrw_info; /* value from ubaalloc */
+ int ifrw_proto; /* map register prototype */
+ struct pte *ifrw_mr; /* base of map registers */
+};
+.DE
+and for write,
+.DS
+.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
+struct ifxmt {
+ struct ifrw ifrw;
+ caddr_t ifw_base; /* virt addr of buffer */
+ struct pte ifw_wmap[IF_MAXNUBAMR]; /* base pages for output */
+ struct mbuf *ifw_xtofree; /* pages being dma'd out */
+ short ifw_xswapd; /* mask of clusters swapped */
+ short ifw_nmr; /* number of entries in wmap */
+};
+.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
+#define ifw_addr ifrw.ifrw_addr
+#define ifw_bdp ifrw.ifrw_bdp
+#define ifw_flags ifrw.ifrw_flags
+#define ifw_info ifrw.ifrw_info
+#define ifw_proto ifrw.ifrw_proto
+#define ifw_mr ifrw.ifrw_mr
+.DE
+One of each of these structures is conveniently packaged for interfaces
+with single buffers for each direction, as follows:
+.DS
+.ta \w'#define 'u +\w'ifw_xtofree 'u +\w'pte ifu_wmap[IF_MAXNUBAMR]; 'u
+struct ifuba {
+ struct ifubinfo ifu_info;
+ struct ifrw ifu_r;
+ struct ifxmt ifu_xmt;
+};
+.ta \w'#define 'u +\w'ifw_xtofree 'u
+#define ifu_uban ifu_info.iff_uban
+#define ifu_hlen ifu_info.iff_hlen
+#define ifu_uba ifu_info.iff_uba
+#define ifu_flags ifu_info.iff_flags
+#define ifu_w ifu_xmt.ifrw
+#define ifu_xtofree ifu_xmt.ifw_xtofree
+.DE
+.PP
+The \fIif_ubinfo\fP structure contains the general information needed
+to characterize the I/O-mapped buffers for the device.
+In addition, there is a structure describing each buffer, including
+UNIBUS resources held by the interface.
+Sufficient memory pages and bus map registers are allocated to each buffer
+upon initialization according to the maximum packet size and header length.
+The kernel virtual address of the buffer is held in \fIifrw_addr\fP,
+and the map registers begin
+at \fIifrw_mr\fP. UNIBUS map register \fIifrw_mr\fP\^[\-1]
+maps the local network header
+ending on a page boundary. UNIBUS data paths are
+reserved for read and for
+write, given by \fIifrw_bdp\fP. The prototype of the map
+registers for read and for write is saved in \fIifrw_proto\fP.
+.PP
+When write transfers are not at least half-full pages on page boundaries,
+the data are just copied into the pages mapped on the UNIBUS
+and the transfer is started.
+If a write transfer is at least half a page long and on a page
+boundary, UNIBUS page table entries are swapped to reference
+the pages, and then the initial pages are
+remapped from \fIifw_wmap\fP when the transfer completes.
+The mbufs containing the mapped pages are placed on the \fIifw_xtofree\fP
+queue to be freed after transmission.
+.PP
+When read transfers give at least half a page of data to be input, page
+frames are allocated from a network page list and traded
+with the pages already containing the data, mapping the allocated
+pages to replace the input pages for the next UNIBUS data input.
+.PP
+The following utility routines are available for use in
+writing network interface drivers; all use the
+structures described above.
+.LP
+if_ubaminit(ifubinfo, uban, hlen, nmr, ifr, nr, ifx, nx);
+.br
+if_ubainit(ifuba, uban, hlen, nmr);
+.IP
+\fIif_ubaminit\fP allocates resources on UNIBUS adapter \fIuban\fP,
+storing the information in the \fIifubinfo\fP, \fIifrw\fP and \fIifxmt\fP
+structures referenced.
+The \fIifr\fP and \fIifx\fP parameters are pointers to arrays
+of \fIifrw\fP and \fIifxmt\fP structures whose dimensions
+are \fInr\fP and \fInx\fP, respectively.
+\fIif_ubainit\fP is a simpler, backwards-compatible interface used
+for hardware with single buffers of each type.
+They are called only at boot time or after a UNIBUS reset.
+One data path (buffered or unbuffered,
+depending on the \fIifu_flags\fP field) is allocated for each buffer.
+The \fInmr\fP parameter indicates
+the number of UNIBUS mapping registers required to map a maximal
+sized packet onto the UNIBUS, while \fIhlen\fP specifies the size
+of a local network header, if any, which should be mapped separately
+from the data (see the description of trailer protocols in chapter 14).
+Sufficient UNIBUS mapping registers and pages of memory are allocated
+to initialize the input data path for an initial read. For the output
+data path, mapping registers and pages of memory are also allocated
+and mapped onto the UNIBUS. The pages associated with the output
+data path are held in reserve in the event a write requires copying
+non-page-aligned data (see \fIif_wubaput\fP below).
+If \fIif_ubainit\fP is called with memory pages already allocated,
+they will be used instead of allocating new ones (this normally
+occurs after a UNIBUS reset).
+A 1 is returned when allocation and initialization are successful,
+0 otherwise.
+.LP
+m = if_ubaget(ifubinfo, ifr, totlen, off0, ifp);
+.br
+m = if_rubaget(ifuba, totlen, off0, ifp);
+.IP
+\fIif_ubaget\fP and \fIif_rubaget\fP pull input data
+out of an interface receive buffer and into an mbuf chain.
+The first interface passes pointers to the \fIifubinfo\fP structure
+for the interface and the \fIifrw\fP structure for the receive buffer;
+the second call may be used for single-buffered devices.
+\fItotlen\fP specifies the length of data to be obtained, not counting the
+local network header. If \fIoff0\fP is non-zero, it indicates
+a byte offset to a trailing local network header which should be
+copied into a separate mbuf and prepended to the front of the resultant mbuf
+chain. When the data amount to at least a half a page,
+the previously mapped data pages are remapped
+into the mbufs and swapped with fresh pages, thus avoiding
+any copy.
+The receiving interface is recorded as \fIifp\fP, a pointer to an \fIifnet\fP
+structure, for the use of the receiving network protocol.
+A 0 return value indicates a failure to allocate resources.
+.LP
+if_wubaput(ifubinfo, ifx, m);
+.br
+if_wubaput(ifuba, m);
+.IP
+\fIif_ubaput\fP and \fIif_wubaput\fP map a chain of mbufs
+onto a network interface in preparation for output.
+The first interface is used by devices with multiple transmit buffers.
+The chain includes any local network
+header, which is copied so that it resides in the mapped and
+aligned I/O space.
+Page-aligned data that are page-aligned in the output buffer
+are mapped to the UNIBUS in place of the normal buffer page,
+and the corresponding mbuf is placed on a queue to be freed after transmission.
+Any other mbufs which contained non-page-sized
+data portions are copied to the I/O space and then freed.
+Pages mapped from a previous output operation (no longer needed)
+are unmapped.
diff --git a/share/doc/smm/18.net/7.t b/share/doc/smm/18.net/7.t
new file mode 100644
index 0000000..e165de0
--- /dev/null
+++ b/share/doc/smm/18.net/7.t
@@ -0,0 +1,258 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)7.t 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.\"
+.nr H2 1
+.br
+.ne 30v
+.\".ds RH "Socket/protocol interface
+.NH
+\s+2Socket/protocol interface\s0
+.PP
+The interface between the socket routines and the communication
+protocols is through the \fIpr_usrreq\fP routine defined in the
+protocol switch table. The following requests to a protocol
+module are possible:
+.DS
+._d
+#define PRU_ATTACH 0 /* attach protocol */
+#define PRU_DETACH 1 /* detach protocol */
+#define PRU_BIND 2 /* bind socket to address */
+#define PRU_LISTEN 3 /* listen for connection */
+#define PRU_CONNECT 4 /* establish connection to peer */
+#define PRU_ACCEPT 5 /* accept connection from peer */
+#define PRU_DISCONNECT 6 /* disconnect from peer */
+#define PRU_SHUTDOWN 7 /* won't send any more data */
+#define PRU_RCVD 8 /* have taken data; more room now */
+#define PRU_SEND 9 /* send this data */
+#define PRU_ABORT 10 /* abort (fast DISCONNECT, DETATCH) */
+#define PRU_CONTROL 11 /* control operations on protocol */
+#define PRU_SENSE 12 /* return status into m */
+#define PRU_RCVOOB 13 /* retrieve out of band data */
+#define PRU_SENDOOB 14 /* send out of band data */
+#define PRU_SOCKADDR 15 /* fetch socket's address */
+#define PRU_PEERADDR 16 /* fetch peer's address */
+#define PRU_CONNECT2 17 /* connect two sockets */
+/* begin for protocols internal use */
+#define PRU_FASTTIMO 18 /* 200ms timeout */
+#define PRU_SLOWTIMO 19 /* 500ms timeout */
+#define PRU_PROTORCV 20 /* receive from below */
+#define PRU_PROTOSEND 21 /* send to below */
+.DE
+A call on the user request routine is of the form,
+.DS
+._f
+error = (*protosw[].pr_usrreq)(so, req, m, addr, rights);
+int error; struct socket *so; int req; struct mbuf *m, *addr, *rights;
+.DE
+The mbuf data chain \fIm\fP is supplied for output operations
+and for certain other operations where it is to receive a result.
+The address \fIaddr\fP is supplied for address-oriented requests
+such as PRU_BIND and PRU_CONNECT.
+The \fIrights\fP parameter is an optional pointer to an mbuf
+chain containing user-specified capabilities (see the \fIsendmsg\fP
+and \fIrecvmsg\fP system calls). The protocol is responsible for
+disposal of the data mbuf chains on output operations.
+A non-zero return value gives a
+UNIX error number which should be passed to higher level software.
+The following paragraphs describe each
+of the requests possible.
+.IP PRU_ATTACH
+.br
+When a protocol is bound to a socket (with the \fIsocket\fP
+system call) the protocol module is called with this
+request. It is the responsibility of the protocol module to
+allocate any resources necessary.
+The ``attach'' request
+will always precede any of the other requests, and should not
+occur more than once.
+.IP PRU_DETACH
+.br
+This is the antithesis of the attach request, and is used
+at the time a socket is deleted. The protocol module may
+deallocate any resources assigned to the socket.
+.IP PRU_BIND
+.br
+When a socket is initially created it has no address bound
+to it. This request indicates that an address should be bound to
+an existing socket. The protocol module must verify that the
+requested address is valid and available for use.
+.IP PRU_LISTEN
+.br
+The ``listen'' request indicates the user wishes to listen
+for incoming connection requests on the associated socket.
+The protocol module should perform any state changes needed
+to carry out this request (if possible). A ``listen'' request
+always precedes a request to accept a connection.
+.IP PRU_CONNECT
+.br
+The ``connect'' request indicates the user wants to establish
+an association. The \fIaddr\fP parameter supplied describes
+the peer to be connected to. The effect of a connect request
+may vary depending on the protocol. Virtual circuit protocols,
+such as TCP [Postel81b], use this request to initiate establishment of a
+TCP connection. Datagram protocols, such as UDP [Postel80], simply
+record the peer's address in a private data structure and use
+it to tag all outgoing packets. There are no restrictions
+on how many times a connect request may be used after an attach.
+If a protocol supports the notion of \fImulti-casting\fP, it
+is possible to use multiple connects to establish a multi-cast
+group. Alternatively, an association may be broken by a
+PRU_DISCONNECT request, and a new association created with a
+subsequent connect request; all without destroying and creating
+a new socket.
+.IP PRU_ACCEPT
+.br
+Following a successful PRU_LISTEN request and the arrival
+of one or more connections, this request is made to
+indicate the user
+has accepted the first connection on the queue of
+pending connections. The protocol module should fill
+in the supplied address buffer with the address of the
+connected party.
+.IP PRU_DISCONNECT
+.br
+Eliminate an association created with a PRU_CONNECT request.
+.IP PRU_SHUTDOWN
+.br
+This call is used to indicate no more data will be sent and/or
+received (the \fIaddr\fP parameter indicates the direction of
+the shutdown, as encoded in the \fIsoshutdown\fP system call).
+The protocol may, at its discretion, deallocate any data
+structures related to the shutdown and/or notify a connected peer
+of the shutdown.
+.IP PRU_RCVD
+.br
+This request is made only if the protocol entry in the protocol
+switch table includes the PR_WANTRCVD flag.
+When a user removes data from the receive queue this request
+will be sent to the protocol module. It may be used to trigger
+acknowledgements, refresh windowing information, initiate
+data transfer, etc.
+.IP PRU_SEND
+.br
+Each user request to send data is translated into one or more
+PRU_SEND requests (a protocol may indicate that a single user
+send request must be translated into a single PRU_SEND request by
+specifying the PR_ATOMIC flag in its protocol description).
+The data to be sent is presented to the protocol as a list of
+mbufs and an address is, optionally, supplied in the \fIaddr\fP
+parameter. The protocol is responsible for preserving the data
+in the socket's send queue if it is not able to send it immediately,
+or if it may need it at some later time (e.g. for retransmission).
+.IP PRU_ABORT
+.br
+This request indicates an abnormal termination of service. The
+protocol should delete any existing association(s).
+.IP PRU_CONTROL
+.br
+The ``control'' request is generated when a user performs a
+UNIX \fIioctl\fP system call on a socket (and the ioctl is not
+intercepted by the socket routines). It allows protocol-specific
+operations to be provided outside the scope of the common socket
+interface. The \fIaddr\fP parameter contains a pointer to a static
+kernel data area where relevant information may be obtained or returned.
+The \fIm\fP parameter contains the actual \fIioctl\fP request code
+(note the non-standard calling convention).
+The \fIrights\fP parameter contains a pointer to an \fIifnet\fP structure
+if the \fIioctl\fP operation pertains to a particular network interface.
+.IP PRU_SENSE
+.br
+The ``sense'' request is generated when the user makes an \fIfstat\fP
+system call on a socket; it requests status of the associated socket.
+This currently returns a standard \fIstat\fP structure.
+It typically contains only the
+optimal transfer size for the connection (based on buffer size,
+windowing information and maximum packet size).
+The \fIm\fP parameter contains a pointer
+to a static kernel data area where the status buffer should be placed.
+.IP PRU_RCVOOB
+.br
+Any ``out-of-band'' data presently available is to be returned. An
+mbuf is passed to the protocol module, and the protocol
+should either place
+data in the mbuf or attach new mbufs to the one supplied if there is
+insufficient space in the single mbuf.
+An error may be returned if out-of-band data is not (yet) available
+or has already been consumed.
+The \fIaddr\fP parameter contains any options such as MSG_PEEK
+to examine data without consuming it.
+.IP PRU_SENDOOB
+.br
+Like PRU_SEND, but for out-of-band data.
+.IP PRU_SOCKADDR
+.br
+The local address of the socket is returned, if any is currently
+bound to it. The address (with protocol specific format) is returned
+in the \fIaddr\fP parameter.
+.IP PRU_PEERADDR
+.br
+The address of the peer to which the socket is connected is returned.
+The socket must be in a SS_ISCONNECTED state for this request to
+be made to the protocol. The address format (protocol specific) is
+returned in the \fIaddr\fP parameter.
+.IP PRU_CONNECT2
+.br
+The protocol module is supplied two sockets and requested to
+establish a connection between the two without binding any
+addresses, if possible. This call is used in implementing
+the
+.IR socketpair (2)
+system call.
+.PP
+The following requests are used internally by the protocol modules
+and are never generated by the socket routines. In certain instances,
+they are handed to the \fIpr_usrreq\fP routine solely for convenience
+in tracing a protocol's operation (e.g. PRU_SLOWTIMO).
+.IP PRU_FASTTIMO
+.br
+A ``fast timeout'' has occurred. This request is made when a timeout
+occurs in the protocol's \fIpr_fastimo\fP routine. The \fIaddr\fP
+parameter indicates which timer expired.
+.IP PRU_SLOWTIMO
+.br
+A ``slow timeout'' has occurred. This request is made when a timeout
+occurs in the protocol's \fIpr_slowtimo\fP routine. The \fIaddr\fP
+parameter indicates which timer expired.
+.IP PRU_PROTORCV
+.br
+This request is used in the protocol-protocol interface, not by the
+routines. It requests reception of data destined for the protocol and
+not the user. No protocols currently use this facility.
+.IP PRU_PROTOSEND
+.br
+This request allows a protocol to send data destined for another
+protocol module, not a user. The details of how data is marked
+``addressed to protocol'' instead of ``addressed to user'' are
+left to the protocol modules. No protocols currently use this facility.
diff --git a/share/doc/smm/18.net/8.t b/share/doc/smm/18.net/8.t
new file mode 100644
index 0000000..e65e656
--- /dev/null
+++ b/share/doc/smm/18.net/8.t
@@ -0,0 +1,166 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)8.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Protocol/protocol interface
+.br
+.ne 2i
+.NH
+\s+2Protocol/protocol interface\s0
+.PP
+The interface between protocol modules is through the \fIpr_usrreq\fP,
+\fIpr_input\fP, \fIpr_output\fP, \fIpr_ctlinput\fP, and
+\fIpr_ctloutput\fP routines. The calling conventions for all
+but the \fIpr_usrreq\fP routine are expected to be specific to
+the protocol
+modules and are not guaranteed to be consistent across protocol
+families. We
+will examine the conventions used for some of the Internet
+protocols in this section as an example.
+.NH 2
+pr_output
+.PP
+The Internet protocol UDP uses the convention,
+.DS
+error = udp_output(inp, m);
+int error; struct inpcb *inp; struct mbuf *m;
+.DE
+where the \fIinp\fP, ``\fIin\fP\^ternet
+\fIp\fP\^rotocol \fIc\fP\^ontrol \fIb\fP\^lock'',
+passed between modules conveys per connection state information, and
+the mbuf chain contains the data to be sent. UDP
+performs consistency checks, appends its header, calculates a
+checksum, etc. before passing the packet on.
+UDP is based on the Internet Protocol, IP [Postel81a], as its transport.
+UDP passes a packet to the IP module for output as follows:
+.DS
+error = ip_output(m, opt, ro, flags);
+int error; struct mbuf *m, *opt; struct route *ro; int flags;
+.DE
+.PP
+The call to IP's output routine is more complicated than that for
+UDP, as befits the additional work the IP module must do.
+The \fIm\fP parameter is the data to be sent, and the \fIopt\fP
+parameter is an optional list of IP options which should
+be placed in the IP packet header. The \fIro\fP parameter is
+is used in making routing decisions (and passing them back to the
+caller for use in subsequent calls). The
+final parameter, \fIflags\fP contains flags indicating whether the
+user is allowed to transmit a broadcast packet
+and if routing is to be performed. The broadcast flag may
+be inconsequential if the underlying hardware does not support the
+notion of broadcasting.
+.PP
+All output routines return 0 on success and a UNIX error number
+if a failure occurred which could be detected immediately
+(no buffer space available, no route to destination, etc.).
+.NH 2
+pr_input
+.PP
+Both UDP and TCP use the following calling convention,
+.DS
+(void) (*protosw[].pr_input)(m, ifp);
+struct mbuf *m; struct ifnet *ifp;
+.DE
+Each mbuf list passed is a single packet to be processed by
+the protocol module.
+The interface from which the packet was received is passed as the second
+parameter.
+.PP
+The IP input routine is a VAX software interrupt level routine,
+and so is not called with any parameters. It instead communicates
+with network interfaces through a queue, \fIipintrq\fP, which is
+identical in structure to the queues used by the network interfaces
+for storing packets awaiting transmission.
+The software interrupt is enabled by the network interfaces
+when they place input data on the input queue.
+.NH 2
+pr_ctlinput
+.PP
+This routine is used to convey ``control'' information to a
+protocol module (i.e. information which might be passed to the
+user, but is not data).
+.PP
+The common calling convention for this routine is,
+.DS
+(void) (*protosw[].pr_ctlinput)(req, addr);
+int req; struct sockaddr *addr;
+.DE
+The \fIreq\fP parameter is one of the following,
+.DS
+.ta \w'#define 'u +\w'PRC_UNREACH_NEEDFRAG 'u +8n
+#define PRC_IFDOWN 0 /* interface transition */
+#define PRC_ROUTEDEAD 1 /* select new route if possible */
+#define PRC_QUENCH 4 /* some said to slow down */
+#define PRC_MSGSIZE 5 /* message size forced drop */
+#define PRC_HOSTDEAD 6 /* normally from IMP */
+#define PRC_HOSTUNREACH 7 /* ditto */
+#define PRC_UNREACH_NET 8 /* no route to network */
+#define PRC_UNREACH_HOST 9 /* no route to host */
+#define PRC_UNREACH_PROTOCOL 10 /* dst says bad protocol */
+#define PRC_UNREACH_PORT 11 /* bad port # */
+#define PRC_UNREACH_NEEDFRAG 12 /* IP_DF caused drop */
+#define PRC_UNREACH_SRCFAIL 13 /* source route failed */
+#define PRC_REDIRECT_NET 14 /* net routing redirect */
+#define PRC_REDIRECT_HOST 15 /* host routing redirect */
+#define PRC_REDIRECT_TOSNET 14 /* redirect for type of service & net */
+#define PRC_REDIRECT_TOSHOST 15 /* redirect for tos & host */
+#define PRC_TIMXCEED_INTRANS 18 /* packet lifetime expired in transit */
+#define PRC_TIMXCEED_REASS 19 /* lifetime expired on reass q */
+#define PRC_PARAMPROB 20 /* header incorrect */
+.DE
+while the \fIaddr\fP parameter is the address to which the condition applies.
+Many of the requests have obviously been
+derived from ICMP (the Internet Control Message Protocol [Postel81c]),
+and from error messages defined in the 1822 host/IMP convention
+[BBN78]. Mapping tables exist to convert
+control requests to UNIX error codes which are delivered
+to a user.
+.NH 2
+pr_ctloutput
+.PP
+This is the routine that implements per-socket options at the protocol
+level for \fIgetsockopt\fP and \fIsetsockopt\fP.
+The calling convention is,
+.DS
+error = (*protosw[].pr_ctloutput)(op, so, level, optname, mp);
+int op; struct socket *so; int level, optname; struct mbuf **mp;
+.DE
+where \fIop\fP is one of PRCO_SETOPT or PRCO_GETOPT,
+\fIso\fP is the socket from whence the call originated,
+and \fIlevel\fP and \fIoptname\fP are the protocol level and option name
+supplied by the user.
+The results of a PRCO_GETOPT call are returned in an mbuf whose address
+is placed in \fImp\fP before return.
+On a PRCO_SETOPT call, \fImp\fP contains the address of an mbuf
+containing the option data; the mbuf should be freed before return.
diff --git a/share/doc/smm/18.net/9.t b/share/doc/smm/18.net/9.t
new file mode 100644
index 0000000..506037a
--- /dev/null
+++ b/share/doc/smm/18.net/9.t
@@ -0,0 +1,124 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)9.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Protocol/network-interface
+.br
+.ne 2i
+.NH
+\s+2Protocol/network-interface interface\s0
+.PP
+The lowest layer in the set of protocols which comprise a
+protocol family must interface itself to one or more network
+interfaces in order to transmit and receive
+packets. It is assumed that
+any routing decisions have been made before handing a packet
+to a network interface, in fact this is absolutely necessary
+in order to locate any interface at all (unless, of course,
+one uses a single ``hardwired'' interface). There are two
+cases with which to be concerned, transmission of a packet
+and receipt of a packet; each will be considered separately.
+.NH 2
+Packet transmission
+.PP
+Assuming a protocol has a handle on an interface, \fIifp\fP,
+a (struct ifnet\ *),
+it transmits a fully formatted packet with the following call,
+.DS
+error = (*ifp->if_output)(ifp, m, dst)
+int error; struct ifnet *ifp; struct mbuf *m; struct sockaddr *dst;
+.DE
+The output routine for the network interface transmits the packet
+\fIm\fP to the \fIdst\fP address, or returns an error indication
+(a UNIX error number). In reality transmission may
+not be immediate or successful; normally the output
+routine simply queues the packet on its send queue and primes
+an interrupt driven routine to actually transmit the packet.
+For unreliable media, such as the Ethernet, ``successful''
+transmission simply means that the packet has been placed on the cable
+without a collision. On the other hand, an 1822 interface guarantees
+proper delivery or an error indication for each message transmitted.
+The model employed in the networking system attaches no promises
+of delivery to the packets handed to a network interface, and thus
+corresponds more closely to the Ethernet. Errors returned by the
+output routine are only those that can be detected immediately,
+and are normally trivial in nature (no buffer space,
+address format not handled, etc.).
+No indication is received if errors are detected after the call has returned.
+.NH 2
+Packet reception
+.PP
+Each protocol family must have one or more ``lowest level'' protocols.
+These protocols deal with internetwork addressing and are responsible
+for the delivery of incoming packets to the proper protocol processing
+modules. In the PUP model [Boggs78] these protocols are termed Level
+1 protocols,
+in the ISO model, network layer protocols. In this system each such
+protocol module has an input packet queue assigned to it. Incoming
+packets received by a network interface are queued for the protocol
+module, and a VAX software interrupt is posted to initiate processing.
+.PP
+Three macros are available for queuing and dequeuing packets:
+.IP "IF_ENQUEUE(ifq, m)"
+.br
+This places the packet \fIm\fP at the tail of the queue \fIifq\fP.
+.IP "IF_DEQUEUE(ifq, m)"
+.br
+This places a pointer to the packet at the head of queue \fIifq\fP
+in \fIm\fP
+and removes the packet from the queue.
+A zero value will be returned in \fIm\fP if the queue is empty.
+.IP "IF_DEQUEUEIF(ifq, m, ifp)"
+.br
+Like IF_DEQUEUE, this removes the next packet from the head of a queue
+and returns it in \fIm\fP.
+A pointer to the interface on which the packet was received
+is placed in \fIifp\fP, a (struct ifnet\ *).
+.IP "IF_PREPEND(ifq, m)"
+.br
+This places the packet \fIm\fP at the head of the queue \fIifq\fP.
+.PP
+Each queue has a maximum length associated with it as a simple form
+of congestion control. The macro IF_QFULL(ifq) returns 1 if the queue
+is filled, in which case the macro IF_DROP(ifq) should be used to
+increment the count of the number of packets dropped, and the offending
+packet is dropped. For example, the following code fragment is commonly
+found in a network interface's input routine,
+.DS
+._f
+if (IF_QFULL(inq)) {
+ IF_DROP(inq);
+ m_freem(m);
+} else
+ IF_ENQUEUE(inq, m);
+.DE
diff --git a/share/doc/smm/18.net/Makefile b/share/doc/smm/18.net/Makefile
new file mode 100644
index 0000000..47e7e11
--- /dev/null
+++ b/share/doc/smm/18.net/Makefile
@@ -0,0 +1,8 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/10/93
+# $FreeBSD$
+
+VOLUME= smm/18.net
+SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t 7.t 8.t 9.t a.t b.t c.t d.t e.t f.t
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/18.net/a.t b/share/doc/smm/18.net/a.t
new file mode 100644
index 0000000..dddba57
--- /dev/null
+++ b/share/doc/smm/18.net/a.t
@@ -0,0 +1,219 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)a.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Gateways and routing
+.br
+.ne 2i
+.NH
+\s+2Gateways and routing issues\s0
+.PP
+The system has been designed with the expectation that it will
+be used in an internetwork environment. The ``canonical''
+environment was envisioned to be a collection of local area
+networks connected at one or more points through hosts with
+multiple network interfaces (one on each local area network),
+and possibly a connection to a long haul network (for example,
+the ARPANET). In such an environment, issues of
+gatewaying and packet routing become very important. Certain
+of these issues, such as congestion
+control, have been handled in a simplistic manner or specifically
+not addressed.
+Instead, where possible, the network system
+attempts to provide simple mechanisms upon which more involved
+policies may be implemented. As some of these problems become
+better understood, the solutions developed will be incorporated
+into the system.
+.PP
+This section will describe the facilities provided for packet
+routing. The simplistic mechanisms provided for congestion
+control are described in chapter 12.
+.NH 2
+Routing tables
+.PP
+The network system maintains a set of routing tables for
+selecting a network interface to use in delivering a
+packet to its destination. These tables are of the form:
+.DS
+.ta \w'struct 'u +\w'u_long 'u +\w'sockaddr rt_gateway; 'u
+struct rtentry {
+ u_long rt_hash; /* hash key for lookups */
+ struct sockaddr rt_dst; /* destination net or host */
+ struct sockaddr rt_gateway; /* forwarding agent */
+ short rt_flags; /* see below */
+ short rt_refcnt; /* no. of references to structure */
+ u_long rt_use; /* packets sent using route */
+ struct ifnet *rt_ifp; /* interface to give packet to */
+};
+.DE
+.PP
+The routing information is organized in two separate tables, one
+for routes to a host and one for routes to a network. The
+distinction between hosts and networks is necessary so
+that a single mechanism may be used
+for both broadcast and multi-drop type networks, and
+also for networks built from point-to-point links (e.g
+DECnet [DEC80]).
+.PP
+Each table is organized as a hashed set of linked lists.
+Two 32-bit hash values are calculated by routines defined for
+each address family; one based on the destination being
+a host, and one assuming the target is the network portion
+of the address. Each hash value is used to
+locate a hash chain to search (by taking the value modulo the
+hash table size) and the entire 32-bit value is then
+used as a key in scanning the list of routes. Lookups are
+applied first to the routing
+table for hosts, then to the routing table for networks.
+If both lookups fail, a final lookup is made for a ``wildcard''
+route (by convention, network 0).
+The first appropriate route discovered is used.
+By doing this, routes to a specific host on a network may be
+present as well as routes to the network. This also allows a
+``fall back'' network route to be defined to a ``smart'' gateway
+which may then perform more intelligent routing.
+.PP
+Each routing table entry contains a destination (the desired final destination),
+a gateway to which to send the packet,
+and various flags which indicate the route's status and type (host or
+network). A count
+of the number of packets sent using the route is kept, along
+with a count of ``held references'' to the dynamically
+allocated structure to insure that memory reclamation
+occurs only when the route is not in use. Finally, a pointer to the
+a network interface is kept; packets sent using
+the route should be handed to this interface.
+.PP
+Routes are typed in two ways: either as host or network, and as
+``direct'' or ``indirect''. The host/network
+distinction determines how to compare the \fIrt_dst\fP field
+during lookup. If the route is to a network, only a packet's
+destination network is compared to the \fIrt_dst\fP entry stored
+in the table. If the route is to a host, the addresses must
+match bit for bit.
+.PP
+The distinction between ``direct'' and ``indirect'' routes indicates
+whether the destination is directly connected to the source.
+This is needed when performing local network encapsulation. If
+a packet is destined for a peer at a host or network which is
+not directly connected to the source, the internetwork packet
+header will
+contain the address of the eventual destination, while
+the local network header will address the intervening
+gateway. Should the destination be directly connected, these addresses
+are likely to be identical, or a mapping between the two exists.
+The RTF_GATEWAY flag indicates that the route is to an ``indirect''
+gateway agent, and that the local network header should be filled in
+from the \fIrt_gateway\fP field instead of
+from the final internetwork destination address.
+.PP
+It is assumed that multiple routes to the same destination will not
+be present; only one of multiple routes, that most recently installed,
+will be used.
+.PP
+Routing redirect control messages are used to dynamically
+modify existing routing table entries as well as dynamically
+create new routing table entries. On hosts where exhaustive
+routing information is too expensive to maintain (e.g. work
+stations), the
+combination of wildcard routing entries and routing redirect
+messages can be used to provide a simple routing management
+scheme without the use of a higher level policy process.
+Current connections may be rerouted after notification of the protocols
+by means of their \fIpr_ctlinput\fP entries.
+Statistics are kept by the routing table routines
+on the use of routing redirect messages and their
+affect on the routing tables. These statistics may be viewed using
+.IR netstat (1).
+.PP
+Status information other than routing redirect control messages
+may be used in the future, but at present they are ignored.
+Likewise, more intelligent ``metrics'' may be used to describe
+routes in the future, possibly based on bandwidth and monetary
+costs.
+.NH 2
+Routing table interface
+.PP
+A protocol accesses the routing tables through
+three routines,
+one to allocate a route, one to free a route, and one
+to process a routing redirect control message.
+The routine \fIrtalloc\fP performs route allocation; it is
+called with a pointer to the following structure containing
+the desired destination:
+.DS
+._f
+struct route {
+ struct rtentry *ro_rt;
+ struct sockaddr ro_dst;
+};
+.DE
+The route returned is assumed ``held'' by the caller until
+released with an \fIrtfree\fP call. Protocols which implement
+virtual circuits, such as TCP, hold onto routes for the duration
+of the circuit's lifetime, while connection-less protocols,
+such as UDP, allocate and free routes whenever their destination address
+changes.
+.PP
+The routine \fIrtredirect\fP is called to process a routing redirect
+control message. It is called with a destination address,
+the new gateway to that destination, and the source of the redirect.
+Redirects are accepted only from the current router for the destination.
+If a non-wildcard route
+exists to the destination, the gateway entry in the route is modified
+to point at the new gateway supplied. Otherwise, a new routing
+table entry is inserted reflecting the information supplied. Routes
+to interfaces and routes to gateways which are not directly accessible
+from the host are ignored.
+.NH 2
+User level routing policies
+.PP
+Routing policies implemented in user processes manipulate the
+kernel routing tables through two \fIioctl\fP calls. The
+commands SIOCADDRT and SIOCDELRT add and delete routing entries,
+respectively; the tables are read through the /dev/kmem device.
+The decision to place policy decisions in a user process implies
+that routing table updates may lag a bit behind the identification of
+new routes, or the failure of existing routes, but this period
+of instability is normally very small with proper implementation
+of the routing process. Advisory information, such as ICMP
+error messages and IMP diagnostic messages, may be read from
+raw sockets (described in the next section).
+.PP
+Several routing policy processes have already been implemented. The
+system standard
+``routing daemon'' uses a variant of the Xerox NS Routing Information
+Protocol [Xerox82] to maintain up-to-date routing tables in our local
+environment. Interaction with other existing routing protocols,
+such as the Internet EGP (Exterior Gateway Protocol), has been
+accomplished using a similar process.
diff --git a/share/doc/smm/18.net/b.t b/share/doc/smm/18.net/b.t
new file mode 100644
index 0000000..2e39a8a
--- /dev/null
+++ b/share/doc/smm/18.net/b.t
@@ -0,0 +1,145 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)b.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Raw sockets
+.br
+.ne 2i
+.NH
+\s+2Raw sockets\s0
+.PP
+A raw socket is an object which allows users direct access
+to a lower-level protocol. Raw sockets are intended for knowledgeable
+processes which wish to take advantage of some protocol
+feature not directly accessible through the normal interface, or
+for the development of new protocols built atop existing lower level
+protocols. For example, a new version of TCP might be developed at the
+user level by utilizing a raw IP socket for delivery of packets.
+The raw IP socket interface attempts to provide an identical interface
+to the one a protocol would have if it were resident in the kernel.
+.PP
+The raw socket support is built around a generic raw socket interface,
+(possibly) augmented by protocol-specific processing routines.
+This section will describe the core of the raw socket interface.
+.NH 2
+Control blocks
+.PP
+Every raw socket has a protocol control block of the following form:
+.DS
+.ta \w'struct 'u +\w'caddr_t 'u +\w'sockproto rcb_proto; 'u
+struct rawcb {
+ struct rawcb *rcb_next; /* doubly linked list */
+ struct rawcb *rcb_prev;
+ struct socket *rcb_socket; /* back pointer to socket */
+ struct sockaddr rcb_faddr; /* destination address */
+ struct sockaddr rcb_laddr; /* socket's address */
+ struct sockproto rcb_proto; /* protocol family, protocol */
+ caddr_t rcb_pcb; /* protocol specific stuff */
+ struct mbuf *rcb_options; /* protocol specific options */
+ struct route rcb_route; /* routing information */
+ short rcb_flags;
+};
+.DE
+All the control blocks are kept on a doubly linked list for
+performing lookups during packet dispatch. Associations may
+be recorded in the control block and used by the output routine
+in preparing packets for transmission.
+The \fIrcb_proto\fP structure contains the protocol family and protocol
+number with which the raw socket is associated.
+The protocol, family and addresses are
+used to filter packets on input; this will be described in more
+detail shortly. If any protocol-specific information is required,
+it may be attached to the control block using the \fIrcb_pcb\fP
+field.
+Protocol-specific options for transmission in outgoing packets
+may be stored in \fIrcb_options\fP.
+.PP
+A raw socket interface is datagram oriented. That is, each send
+or receive on the socket requires a destination address. This
+address may be supplied by the user or stored in the control block
+and automatically installed in the outgoing packet by the output
+routine. Since it is not possible to determine whether an address
+is present or not in the control block, two flags, RAW_LADDR and
+RAW_FADDR, indicate if a local and foreign address are present.
+Routing is expected to be performed by the underlying protocol
+if necessary.
+.NH 2
+Input processing
+.PP
+Input packets are ``assigned'' to raw sockets based on a simple
+pattern matching scheme. Each network interface or protocol
+gives unassigned packets
+to the raw input routine with the call:
+.DS
+raw_input(m, proto, src, dst)
+struct mbuf *m; struct sockproto *proto, struct sockaddr *src, *dst;
+.DE
+The data packet then has a generic header prepended to it of the
+form
+.DS
+._f
+struct raw_header {
+ struct sockproto raw_proto;
+ struct sockaddr raw_dst;
+ struct sockaddr raw_src;
+};
+.DE
+and it is placed in a packet queue for the ``raw input protocol'' module.
+Packets taken from this queue are copied into any raw sockets that
+match the header according to the following rules,
+.IP 1)
+The protocol family of the socket and header agree.
+.IP 2)
+If the protocol number in the socket is non-zero, then it agrees
+with that found in the packet header.
+.IP 3)
+If a local address is defined for the socket, the address format
+of the local address is the same as the destination address's and
+the two addresses agree bit for bit.
+.IP 4)
+The rules of 3) are applied to the socket's foreign address and the packet's
+source address.
+.LP
+A basic assumption is that addresses present in the
+control block and packet header (as constructed by the network
+interface and any raw input protocol module) are in a canonical
+form which may be ``block compared''.
+.NH 2
+Output processing
+.PP
+On output the raw \fIpr_usrreq\fP routine
+passes the packet and a pointer to the raw control block to the
+raw protocol output routine for any processing required before
+it is delivered to the appropriate network interface. The
+output routine is normally the only code required to implement
+a raw socket interface.
diff --git a/share/doc/smm/18.net/c.t b/share/doc/smm/18.net/c.t
new file mode 100644
index 0000000..2c7f752
--- /dev/null
+++ b/share/doc/smm/18.net/c.t
@@ -0,0 +1,151 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)c.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Buffering and congestion control
+.br
+.ne 2i
+.NH
+\s+2Buffering and congestion control\s0
+.PP
+One of the major factors in the performance of a protocol is
+the buffering policy used. Lack of a proper buffering policy
+can force packets to be dropped, cause falsified windowing
+information to be emitted by protocols, fragment host memory,
+degrade the overall host performance, etc. Due to problems
+such as these, most systems allocate a fixed pool of memory
+to the networking system and impose
+a policy optimized for ``normal'' network operation.
+.PP
+The networking system developed for UNIX is little different in this
+respect. At boot time a fixed amount of memory is allocated by
+the networking system. At later times more system memory
+may be requested as the need arises, but at no time is
+memory ever returned to the system. It is possible to
+garbage collect memory from the network, but difficult. In
+order to perform this garbage collection properly, some
+portion of the network will have to be ``turned off'' as
+data structures are updated. The interval over which this
+occurs must kept small compared to the average inter-packet
+arrival time, or too much traffic may
+be lost, impacting other hosts on the network, as well as
+increasing load on the interconnecting mediums. In our
+environment we have not experienced a need for such compaction,
+and thus have left the problem unresolved.
+.PP
+The mbuf structure was introduced in chapter 5. In this
+section a brief description will be given of the allocation
+mechanisms, and policies used by the protocols in performing
+connection level buffering.
+.NH 2
+Memory management
+.PP
+The basic memory allocation routines manage a private page map,
+the size of which determines the maximum amount of memory
+that may be allocated by the network.
+A small amount of memory is allocated at boot time
+to initialize the mbuf and mbuf page cluster free lists.
+When the free lists are exhausted, more memory is requested
+from the system memory allocator if space remains in the map.
+If memory cannot be allocated,
+callers may block awaiting free memory,
+or the failure may be reflected to the caller immediately.
+The allocator will not block awaiting free map entries, however,
+as exhaustion of the page map usually indicates that buffers have been lost
+due to a ``leak.''
+The private page table is used by the network buffer management
+routines in remapping pages to
+be logically contiguous as the need arises. In addition, an
+array of reference counts parallels the page table and is used
+when multiple references to a page are present.
+.PP
+Mbufs are 128 byte structures, 8 fitting in a 1Kbyte
+page of memory. When data is placed in mbufs,
+it is copied or remapped into logically contiguous pages of
+memory from the network page pool if possible.
+Data smaller than half of the size
+of a page is copied into one or more 112 byte mbuf data areas.
+.NH 2
+Protocol buffering policies
+.PP
+Protocols reserve fixed amounts of
+buffering for send and receive queues at socket creation time. These
+amounts define the high and low water marks used by the socket routines
+in deciding when to block and unblock a process. The reservation
+of space does not currently
+result in any action by the memory management
+routines.
+.PP
+Protocols which provide connection level flow control do this
+based on the amount of space in the associated socket queues. That
+is, send windows are calculated based on the amount of free space
+in the socket's receive queue, while receive windows are adjusted
+based on the amount of data awaiting transmission in the send queue.
+Care has been taken to avoid the ``silly window syndrome'' described
+in [Clark82] at both the sending and receiving ends.
+.NH 2
+Queue limiting
+.PP
+Incoming packets from the network are always received unless
+memory allocation fails. However, each Level 1 protocol
+input queue
+has an upper bound on the queue's length, and any packets
+exceeding that bound are discarded. It is possible for a host to be
+overwhelmed by excessive network traffic (for instance a host
+acting as a gateway from a high bandwidth network to a low bandwidth
+network). As a ``defensive'' mechanism the queue limits may be
+adjusted to throttle network traffic load on a host.
+Consider a host willing to devote some percentage of
+its machine to handling network traffic.
+If the cost of handling an
+incoming packet can be calculated so that an acceptable
+``packet handling rate''
+can be determined, then input queue lengths may be dynamically
+adjusted based on a host's network load and the number of packets
+awaiting processing. Obviously, discarding packets is
+not a satisfactory solution to a problem such as this
+(simply dropping packets is likely to increase the load on a network);
+the queue lengths were incorporated mainly as a safeguard mechanism.
+.NH 2
+Packet forwarding
+.PP
+When packets can not be forwarded because of memory limitations,
+the system attempts to generate a ``source quench'' message. In addition,
+any other problems encountered during packet forwarding are also
+reflected back to the sender in the form of ICMP packets. This
+helps hosts avoid unneeded retransmissions.
+.PP
+Broadcast packets are never forwarded due to possible dire
+consequences. In an early stage of network development, broadcast
+packets were forwarded and a ``routing loop'' resulted in network
+saturation and every host on the network crashing.
diff --git a/share/doc/smm/18.net/d.t b/share/doc/smm/18.net/d.t
new file mode 100644
index 0000000..675bece
--- /dev/null
+++ b/share/doc/smm/18.net/d.t
@@ -0,0 +1,73 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)d.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Out of band data
+.br
+.ne 2i
+.NH
+\s+2Out of band data\s0
+.PP
+Out of band data is a facility peculiar to the stream socket
+abstraction defined. Little agreement appears to exist as
+to what its semantics should be. TCP defines the notion of
+``urgent data'' as in-line, while the NBS protocols [Burruss81]
+and numerous others provide a fully independent logical
+transmission channel along which out of band data is to be
+sent.
+In addition, the amount of the data which may be sent as an out
+of band message varies from protocol to protocol; everything
+from 1 bit to 16 bytes or more.
+.PP
+A stream socket's notion of out of band data has been defined
+as the lowest reasonable common denominator (at least reasonable
+in our minds);
+clearly this is subject to debate. Out of band data is expected
+to be transmitted out of the normal sequencing and flow control
+constraints of the data stream. A minimum of 1 byte of out of
+band data and one outstanding out of band message are expected to
+be supported by the protocol supporting a stream socket.
+It is a protocol's prerogative to support larger-sized messages, or
+more than one outstanding out of band message at a time.
+.PP
+Out of band data is maintained by the protocol and is usually not
+stored in the socket's receive queue.
+A socket-level option, SO_OOBINLINE,
+is provided to force out-of-band data to be placed in the normal
+receive queue when urgent data is received;
+this sometimes amelioriates problems due to loss of data
+when multiple out-of-band
+segments are received before the first has been passed to the user.
+The PRU_SENDOOB and PRU_RCVOOB
+requests to the \fIpr_usrreq\fP routine are used in sending and
+receiving data.
diff --git a/share/doc/smm/18.net/e.t b/share/doc/smm/18.net/e.t
new file mode 100644
index 0000000..77e8a2a
--- /dev/null
+++ b/share/doc/smm/18.net/e.t
@@ -0,0 +1,129 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)e.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH "Trailer protocols
+.br
+.ne 2i
+.NH
+\s+2Trailer protocols\s0
+.PP
+Core to core copies can be expensive.
+Consequently, a great deal of effort was spent
+in minimizing such operations. The VAX architecture
+provides virtual memory hardware organized in
+page units. To cut down on copy operations, data
+is kept in page-sized units on page-aligned
+boundaries whenever possible. This allows data
+to be moved in memory simply by remapping the page
+instead of copying. The mbuf and network
+interface routines perform page table manipulations
+where needed, hiding the complexities of the VAX
+virtual memory hardware from higher level code.
+.PP
+Data enters the system in two ways: from the user,
+or from the network (hardware interface). When data
+is copied from the user's address space
+into the system it is deposited in pages (if sufficient
+data is present).
+This encourages the user to transmit information in
+messages which are a multiple of the system page size.
+.PP
+Unfortunately, performing a similar operation when taking
+data from the network is very difficult.
+Consider the format of an incoming packet. A packet
+usually contains a local network header followed by
+one or more headers used by the high level protocols.
+Finally, the data, if any, follows these headers. Since
+the header information may be variable length, DMA'ing the eventual
+data for the user into a page aligned area of
+memory is impossible without
+\fIa priori\fP knowledge of the format (e.g., by supporting
+only a single protocol header format).
+.PP
+To allow variable length header information to
+be present and still ensure page alignment of data,
+a special local network encapsulation may be used.
+This encapsulation, termed a \fItrailer protocol\fP [Leffler84],
+places the variable length header information after
+the data. A fixed size local network
+header is then prepended to the resultant packet.
+The local network header contains the size of the
+data portion (in units of 512 bytes), and a new \fItrailer protocol
+header\fP, inserted before the variable length
+information, contains the size of the variable length
+header information. The following trailer
+protocol header is used to store information
+regarding the variable length protocol header:
+.DS
+._f
+struct {
+ short protocol; /* original protocol no. */
+ short length; /* length of trailer */
+};
+.DE
+.PP
+The processing of the trailer protocol is very
+simple. On output, the local network header indicates that
+a trailer encapsulation is being used.
+The header also includes an indication
+of the number of data pages present before the trailer
+protocol header. The trailer protocol header is
+initialized to contain the actual protocol identifier and the
+variable length header size, and is appended to the data
+along with the variable length header information.
+.PP
+On input, the interface routines identify the
+trailer encapsulation
+by the protocol type stored in the local network header,
+then calculate the number of
+pages of data to find the beginning of the trailer.
+The trailing information is copied into a separate
+mbuf and linked to the front of the resultant packet.
+.PP
+Clearly, trailer protocols require cooperation between
+source and destination. In addition, they are normally
+cost effective only when sizable packets are used. The
+current scheme works because the local network encapsulation
+header is a fixed size, allowing DMA operations
+to be performed at a known offset from the first data page
+being received. Should the local network header be
+variable length this scheme fails.
+.PP
+Statistics collected indicate that as much as 200Kb/s
+can be gained by using a trailer protocol with
+1Kbyte packets. The average size of the variable
+length header was 40 bytes (the size of a
+minimal TCP/IP packet header). If hardware
+supports larger sized packets, even greater gains
+may be realized.
diff --git a/share/doc/smm/18.net/f.t b/share/doc/smm/18.net/f.t
new file mode 100644
index 0000000..18995fd
--- /dev/null
+++ b/share/doc/smm/18.net/f.t
@@ -0,0 +1,117 @@
+.\" Copyright (c) 1983, 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)f.t 8.1 (Berkeley) 6/8/93
+.\"
+.nr H2 1
+.\".ds RH Acknowledgements
+.br
+.ne 2i
+.SH
+\s+2Acknowledgements\s0
+.PP
+The internal structure of the system is patterned
+after the Xerox PUP architecture [Boggs79], while in certain
+places the Internet
+protocol family has had a great deal of influence in the design.
+The use of software interrupts for process invocation
+is based on similar facilities found in
+the VMS operating system.
+Many of the
+ideas related to protocol modularity, memory management, and network
+interfaces are based on Rob Gurwitz's TCP/IP implementation for the
+4.1BSD version of UNIX on the VAX [Gurwitz81].
+Greg Chesson explained his use of trailer encapsulations in Datakit,
+instigating their use in our system.
+.\".ds RH References
+.nr H2 1
+.sp 2
+.ne 2i
+.SH
+\s+2References\s0
+.LP
+.IP [Boggs79] 20
+Boggs, D. R., J. F. Shoch, E. A. Taft, and R. M. Metcalfe;
+\fIPUP: An Internetwork Architecture\fP. Report CSL-79-10.
+XEROX Palo Alto Research Center, July 1979.
+.IP [BBN78] 20
+Bolt Beranek and Newman;
+Specification for the Interconnection of Host and IMP.
+BBN Technical Report 1822. May 1978.
+.IP [Cerf78] 20
+Cerf, V. G.; The Catenet Model for Internetworking.
+Internet Working Group, IEN 48. July 1978.
+.IP [Clark82] 20
+Clark, D. D.; Window and Acknowledgement Strategy in TCP, RFC-813.
+Network Information Center, SRI International. July 1982.
+.IP [DEC80] 20
+Digital Equipment Corporation; \fIDECnet DIGITAL Network
+Architecture \- General Description\fP. Order No.
+AA-K179A-TK. October 1980.
+.IP [Gurwitz81] 20
+Gurwitz, R. F.; VAX-UNIX Networking Support Project \- Implementation
+Description. Internetwork Working Group, IEN 168.
+January 1981.
+.IP [ISO81] 20
+International Organization for Standardization.
+\fIISO Open Systems Interconnection \- Basic Reference Model\fP.
+ISO/TC 97/SC 16 N 719. August 1981.
+.IP [Joy86] 20
+Joy, W.; Fabry, R.; Leffler, S.; McKusick, M.; and Karels, M.;
+Berkeley Software Architecture Manual, 4.4BSD Edition.
+\fIUNIX Programmer's Supplementary Documents\fP, Vol. 1 (PSD:5).
+Computer Systems Research Group,
+University of California, Berkeley.
+May, 1986.
+.IP [Leffler84] 20
+Leffler, S.J. and Karels, M.J.; Trailer Encapsulations, RFC-893.
+Network Information Center, SRI International.
+April 1984.
+.IP [Postel80] 20
+Postel, J. User Datagram Protocol, RFC-768.
+Network Information Center, SRI International. May 1980.
+.IP [Postel81a] 20
+Postel, J., ed. Internet Protocol, RFC-791.
+Network Information Center, SRI International. September 1981.
+.IP [Postel81b] 20
+Postel, J., ed. Transmission Control Protocol, RFC-793.
+Network Information Center, SRI International. September 1981.
+.IP [Postel81c] 20
+Postel, J. Internet Control Message Protocol, RFC-792.
+Network Information Center, SRI International. September 1981.
+.IP [Xerox81] 20
+Xerox Corporation. \fIInternet Transport Protocols\fP.
+Xerox System Integration Standard 028112. December 1981.
+.IP [Zimmermann80] 20
+Zimmermann, H. OSI Reference Model \- The ISO Model of
+Architecture for Open Systems Interconnection.
+\fIIEEE Transactions on Communications\fP. Com-28(4); 425-432.
+April 1980.
diff --git a/share/doc/smm/18.net/spell.ok b/share/doc/smm/18.net/spell.ok
new file mode 100644
index 0000000..f9a387b
--- /dev/null
+++ b/share/doc/smm/18.net/spell.ok
@@ -0,0 +1,307 @@
+A,1986A
+AA
+ACCEPTCONN
+ADDR
+ARPANET
+ASYNC
+BBN
+BBN78
+Beranek
+Boggs
+Boggs78
+Boggs79
+Burruss81
+CANTRCVMORE
+CANTSENDMORE
+CLSIZE
+COLL
+CONNECT2
+CONNREQUIRED
+COPYALL
+CSL
+Catenet
+Cerf
+Cerf78
+Chesson
+Clark82
+Com
+DEC80
+DECnet
+DEQUEUE
+DEQUEUEIF
+DETATCH
+DMA
+DMA'ing
+DMR
+DONTWAIT
+Datagram
+Datakit
+EGP
+EWOULDBLOCK
+Ethernet
+FADDR
+FASTTIMO
+Fabry
+GETOPT
+Gurwitz
+Gurwitz's
+Gurwitz81
+HASCL
+HOSTDEAD
+HOSTUNREACH
+ICMP
+IEN
+IFDOWN
+IFF
+IFRW
+INTRANS
+IP
+IP's
+ISCONNECTED
+ISCONNECTING
+ISDISCONNECTING
+ISO
+ISO81
+Ircb
+Joy86
+K179A
+Karels
+LADDR
+LOOPBACK
+Leffler
+Leffler84
+M.J
+MAXNUBAMR
+MCLGET
+MFREE
+MGET
+MLEN
+MSG
+MSGSIZE
+MSIZE
+Mbufs
+McKusick
+Metcalfe
+NBIO
+NEEDFRAG
+NOARP
+NOFDREF
+NOTRAILERS
+NS
+Notes''SMM:15
+OOBINLINE
+OSI
+PARAMPROB
+PEERADDR
+PF
+POINTOPOINT
+PRC
+PRCO
+PRIV
+PROTORCV
+PROTOSEND
+PRU
+PS1:6
+Postel
+Postel80
+Postel81a
+Postel81b
+Postel81c
+QFULL
+RCVATMARK
+RCVD
+RCVOOB
+RFC
+RH
+ROUTEDEAD
+RTF
+S.J
+SB
+SEL
+SENDOOB
+SETOPT
+SIGIO
+SIOCADDRT
+SIOCDELRT
+SIOCGIFCONF
+SIOCSIFADDR
+SIOCSIFDSTADDR
+SIOCSIFFLAGS
+SIOGSIFFLAGS
+SLOWTIMO
+SMM:15
+SOCKADDR
+SRCFAIL
+SS
+Shoch
+TCP
+TIMXCEED
+TOSHOST
+TOSNET
+UDP
+UNIBUS
+VAX
+VMS
+Vol
+WANTRCVD
+Xerox81
+Xerox82
+Zimmermann
+Zimmermann80
+addr
+addrlist
+adj
+amelioriates
+async
+bdp
+broadaddr
+caddr
+csma
+ctlinput
+ctloutput
+daemon
+dat
+datagram
+decapsulation
+dequeuing
+dev
+dma'd
+dom
+dst
+dstaddr
+dtom
+faddr
+fastimo
+fasttimo
+fcntl
+freem
+fstat
+getsockopt
+hardwired
+hiwat
+hlen
+ierrors
+ifa
+ifaddr
+iff
+ifnet
+ifp
+ifq
+ifqueue
+ifr
+ifrw
+ifrw.ifrw
+ifu
+ifu.ifu
+ifuba
+ifubinfo
+ifw
+ifx
+ifxmt
+info
+info.iff
+init
+inp
+inpcb
+inq
+ip
+ipackets
+ipintrq
+laddr
+len
+loopback
+lowat
+m,n
+mb
+mbcnt
+mbmax
+mbuf
+mbuf's
+mbufs
+mp
+mr
+mtod
+mtu
+netstat
+nmr
+nr
+nx
+oerrors
+off0
+ontrol
+oob
+oobmark
+op
+opackets
+ops
+optname
+pcb
+pgrp
+prev
+proc
+proto
+protosw
+protoswNPROTOSW
+pte
+pullup
+q0len
+qlen
+qlimit
+rawcb
+rcb
+rcv
+recvmsg
+ref
+refcnt
+regs
+req
+rerouted
+ro
+rotocol
+rt
+rtalloc
+rtentry
+rtfree
+rtredirect
+rubaget
+sb
+sel
+sendmsg
+setsockopt
+slowtimo
+snd
+sockaddr
+sockbuf
+socketpair
+sockproto
+sonewconn
+soshutdown
+src
+ta
+ternet
+timeo
+totlen
+uba
+ubaalloc
+ubaget
+ubainit
+uballoc's
+ubaminit
+uban
+ubaput
+ubinfo
+udp
+unibus
+usrreq
+virt
+vm
+wildcard
+wmap
+wubaput
+x,t
+xmt
+xmt.ifrw
+xmt.ifw
+xswapd
+xtofree
+xxx
diff --git a/share/doc/smm/Makefile b/share/doc/smm/Makefile
new file mode 100644
index 0000000..e6ceda1
--- /dev/null
+++ b/share/doc/smm/Makefile
@@ -0,0 +1,33 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/10/93
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+# The following modules do not describe FreeBSD:
+# 14.uucpimpl, 15.uucpnet
+
+# The following modules do not build/install:
+# 13.amd (documentation is TeXinfo)
+# 16.security 17.password (encumbered)
+
+# The following modules are built with their programs:
+# 07.lpd
+
+SUBDIR= title \
+ contents \
+ 01.setup \
+ 02.config \
+ 03.fsck \
+ 04.quotas \
+ 05.fastfs \
+ 06.nfs \
+ ${_08.sendmailop} \
+ 11.timedop \
+ 12.timed \
+ 18.net
+
+.if ${MK_SENDMAIL} != "no"
+_08.sendmailop= 08.sendmailop
+.endif
+
+.include <bsd.subdir.mk>
diff --git a/share/doc/smm/contents/Makefile b/share/doc/smm/contents/Makefile
new file mode 100644
index 0000000..aa73faa
--- /dev/null
+++ b/share/doc/smm/contents/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+VOLUME= smm
+DOC= contents
+SRCS= contents.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/contents/contents.ms b/share/doc/smm/contents/contents.ms
new file mode 100644
index 0000000..1b8038a
--- /dev/null
+++ b/share/doc/smm/contents/contents.ms
@@ -0,0 +1,195 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)00.contents 8.1 (Berkeley) 7/5/93
+.\" $FreeBSD$
+.\"
+.OH '''SMM Contents'
+.EH 'SMM Contents'''
+.TL
+UNIX System Manager's Manual (SMM)
+.if !r.U .nr .U 0
+.if \n(.U \{\
+.br
+.>> <a href="Title.html">Title.html</a>
+.\}
+.sp
+\s-2 4.4 Berkeley Software Distribution\s+2
+.sp
+\fRJune, 1993\fR
+.PP
+This volume contains manual pages and supplementary documents useful to system
+administrators.
+The information in these documents applies to
+the 4.4BSD system as distributed by U.C. Berkeley.
+.SH
+Reference Manual \- Section 8
+.tl '''(8)'
+.IP
+Section 8 of the UNIX Programmer's Manual contains information related to
+system operation, administration, and maintenance.
+.SH
+System Installation and Administration
+.IP
+.tl 'Installing and Operating 4.4BSD''SMM:1'
+.if \n(.U \{\
+.br
+.>> <a href="01.setup/paper.html">01.setup/paper.html</a>
+.\}
+.QP
+The definitive reference document for those occasions when
+you find you need to start over again.
+
+.IP
+.tl 'Building 4.4BSD Kernels with \fIConfig\fP''SMM:2'
+.if \n(.U \{\
+.br
+.>> <a href="02.config/paper.html">02.config/paper.html</a>
+.\}
+.QP
+In-depth discussions of the use and operation of the \fIconfig\fP
+program, and how to build your very own Unix kernel.
+
+.IP
+.tl 'Fsck \- The UNIX File System Check Program''SMM:3'
+.if \n(.U \{\
+.br
+.>> <a href="03.fsck/paper.html">03.fsck/paper.html</a>
+.\}
+.QP
+A reference document for using the \fIfsck\fP program during
+times of file system distress.
+
+.IP
+.tl 'Disc Quotas in a UNIX Environment''SMM:4'
+.if \n(.U \{\
+.br
+.>> <a href="04.quotas/paper.html">04.quotas/paper.html</a>
+.\}
+.QP
+A light introduction to the techniques
+for limiting the use of disc resources.
+
+.IP
+.tl 'A Fast File System for UNIX''SMM:5'
+.if \n(.U \{\
+.br
+.>> <a href="05.fastfs/paper.html">05.fastfs/paper.html</a>
+.\}
+.QP
+A description of the 4.4BSD file system organization,
+design and implementation.
+
+.IP
+.tl 'The 4.4BSD NFS Implementation''SMM:6'
+.if \n(.U \{\
+.br
+.>> <a href="06.nfs/paper.html">06.nfs/paper.html</a>
+.\}
+.QP
+An overview of the design, implementation, and use of NFS on 4.4BSD.
+
+.IP
+.tl 'Line Printer Spooler Manual''SMM:7'
+.QP
+This document describes the structure and installation procedure
+for the line printer spooling system.
+
+.IP
+.tl 'Sendmail Installation and Operation Guide''SMM:8'
+.if \n(.U \{\
+.br
+.>> <a href="08.sendmailop/paper.html">08.sendmailop/paper.html</a>
+.\}
+.QP
+The last word in installing and operating the \fIsendmail\fP program.
+
+.IP
+.tl 'Timed Installation and Operation Guide''SMM:11'
+.if \n(.U \{\
+.br
+.>> <a href="11.timedop/paper.html">11.timedop/paper.html</a>
+.\}
+.QP
+Describes how to maintain time synchronization between machines
+in a local network.
+
+.IP
+.tl 'The Berkeley UNIX Time Synchronization Protocol''SMM:12'
+.if \n(.U \{\
+.br
+.>> <a href="12.timed/paper.html">12.timed/paper.html</a>
+.\}
+.QP
+The protocols and algorithms used by timed,
+the network time synchronization daemon.
+
+.IP
+.tl 'AMD \- The 4.4BSD Automounter''SMM:13'
+.QP
+Automatically mounting file systems on demand.
+
+.IP
+.tl 'Installation and Operation of UUCP''SMM:14'
+.QP
+Describes the implementation of uucp; for the installer and administrator.
+
+.IP
+.tl 'A Dial\-Up Network of UNIX Systems''SMM:15'
+.QP
+Describes UUCP, a program for communicating files between UNIX systems.
+
+.IP
+.tl 'On the Security of UNIX''SMM:16'
+.QP
+Hints on how to break UNIX, and how to avoid your system being broken.
+
+.IP
+.tl 'Password Security \- A Case History''SMM:17'
+.QP
+How the bad guys used to be able to break the password algorithm, and why
+they cannot now (at least not so easily).
+
+.IP
+.tl 'Networking Implementation Notes, 4.4BSD Edition''SMM:18'
+.if \n(.U \{\
+.br
+.>> <a href="18.net/paper.html">18.net/paper.html</a>
+.\}
+.QP
+A concise description of the system interfaces used within the
+networking subsystem.
+
+.IP
+.tl 'The PERL Programming Language''SMM:19'
+.QP
+The Practical Extraction and Report Language is ideal for
+writing those pesky adminitration scripts.
diff --git a/share/doc/smm/title/Makefile b/share/doc/smm/title/Makefile
new file mode 100644
index 0000000..c1f1c9b
--- /dev/null
+++ b/share/doc/smm/title/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+VOLUME= smm
+DOC= Title
+SRCS= Title
+
+.include <bsd.doc.mk>
diff --git a/share/doc/smm/title/Title b/share/doc/smm/title/Title
new file mode 100644
index 0000000..5faa11f
--- /dev/null
+++ b/share/doc/smm/title/Title
@@ -0,0 +1,146 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)Title 8.2 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.ps 18
+.vs 22
+.sp 2.75i
+.ft B
+.ce 2
+UNIX System Manager's Manual
+(SMM)
+.ps 14
+.vs 16
+.sp |4i
+.ce 2
+4.4 Berkeley Software Distribution
+.sp |5.75i
+.ft R
+.ps 12
+.vs 16
+.ce
+June, 1993
+.sp |8.2i
+.ce 5
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California
+Berkeley, California 94720
+.bp
+\&
+.sp |1i
+.hy 0
+.ps 10
+.vs 12p
+Copyright 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993
+The Regents of the University of California. All rights reserved.
+.sp 2
+Other than the specific manual pages and documents listed below
+as copyrighted by AT&T,
+redistribution and use of this manual in source and binary forms,
+with or without modification, are permitted provided that the
+following conditions are met:
+.sp 0.5
+.in +0.2i
+.ta 0.2i
+.ti -0.2i
+1) Redistributions of this manual must retain the copyright
+notices on this page, this list of conditions and the following disclaimer.
+.ti -0.2i
+2) Software or documentation that incorporates part of this manual must
+reproduce the copyright notices on this page, this list of conditions and
+the following disclaimer in the documentation and/or other materials
+provided with the distribution.
+.ti -0.2i
+3) All advertising materials mentioning features or use of this software
+must display the following acknowledgement:
+``This product includes software developed by the University of
+California, Berkeley and its contributors.''
+.ti -0.2i
+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.
+.in -0.2i
+.sp
+\fB\s-1THIS 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.\s+1\fP
+.sp 2
+The Institute of Electrical and Electronics Engineers and the American
+National Standards Committee X3, on Information Processing Systems have
+given us permission to reprint portions of their documentation.
+.sp
+In the following statement, the phrase ``this text'' refers to portions
+of the system documentation.
+.sp 0.5
+``Portions of this text are reprinted and reproduced in
+electronic form in 4.4BSD from IEEE Std 1003.1-1988, IEEE
+Standard Portable Operating System Interface for Computer Environments
+(POSIX), copyright 1988 by the Institute of Electrical and Electronics
+Engineers, Inc. In the event of any discrepancy between these versions
+and the original IEEE Standard, the original IEEE Standard is the referee
+document.''
+.sp
+In the following statement, the phrase ``This material'' refers to portions
+of the system documentation.
+.sp 0.5
+``This material is reproduced with permission from American National
+Standards Committee X3, on Information Processing Systems. Computer and
+Business Equipment Manufacturers Association (CBEMA), 311 First St., NW,
+Suite 500, Washington, DC 20001-2178. The developmental work of
+Programming Language C was completed by the X3J11 Technical Committee.''
+.sp 2
+Manual pages cron.8, icheck.8, ncheck.8, and sa.8
+and documents SMM:15, 16, and 17
+are copyright 1979, AT&T Bell Laboratories, Incorporated.
+Document SMM:14 is a modification of an earlier document that
+is copyrighted 1979 by AT&T Bell Laboratories, Incorporated.
+Holders of \x'-1p'UNIX\v'-4p'\s-3TM\s0\v'4p'/32V,
+System III, or System V software licenses are
+permitted to copy these documents, or any portion of them,
+as necessary for licensed use of the software,
+provided this copyright notice and statement of permission
+are included.
+.sp 2
+The views and conclusions contained in this manual are those of the
+authors and should not be interpreted as representing official policies,
+either expressed or implied, of the Regents of the University of California.
diff --git a/share/doc/usd/04.csh/Makefile b/share/doc/usd/04.csh/Makefile
new file mode 100644
index 0000000..d22a7b9
--- /dev/null
+++ b/share/doc/usd/04.csh/Makefile
@@ -0,0 +1,10 @@
+# @(#)Makefile 8.1 (Berkeley) 8/14/93
+# $FreeBSD$
+
+VOLUME= usd/04.csh
+SRCS= tabs csh.1 csh.2 csh.3 csh.4 csh.a csh.g
+MACROS= -ms
+USE_SOELIM=
+SRCDIR= ${.CURDIR}/../../../../bin/csh/USD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/07.mail/Makefile b/share/doc/usd/07.mail/Makefile
new file mode 100644
index 0000000..d5a6d3c
--- /dev/null
+++ b/share/doc/usd/07.mail/Makefile
@@ -0,0 +1,11 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= usd/07.mail
+SRCS= mail0.nr mail1.nr mail2.nr mail3.nr mail4.nr mail5.nr mail6.nr \
+ mail7.nr mail8.nr mail9.nr maila.nr
+MACROS= -me
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../usr.bin/mail/USD.doc
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/10.exref/Makefile b/share/doc/usd/10.exref/Makefile
new file mode 100644
index 0000000..8df4f72
--- /dev/null
+++ b/share/doc/usd/10.exref/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+SUBDIR= exref summary
+
+.include <bsd.subdir.mk>
+
diff --git a/share/doc/usd/10.exref/Makefile.inc b/share/doc/usd/10.exref/Makefile.inc
new file mode 100644
index 0000000..c5c2f55
--- /dev/null
+++ b/share/doc/usd/10.exref/Makefile.inc
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+VOLUME= usd/10.exref
+MACROS= -ms
+SRCDIR= ${.CURDIR}/../../../../../contrib/nvi/docs/USD.doc/exref
diff --git a/share/doc/usd/10.exref/exref/Makefile b/share/doc/usd/10.exref/exref/Makefile
new file mode 100644
index 0000000..7af18f9
--- /dev/null
+++ b/share/doc/usd/10.exref/exref/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SRCS= ex.rm
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/10.exref/summary/Makefile b/share/doc/usd/10.exref/summary/Makefile
new file mode 100644
index 0000000..143333f
--- /dev/null
+++ b/share/doc/usd/10.exref/summary/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+DOC= summary
+SRCS= ex.summary
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/11.vitut/Makefile b/share/doc/usd/11.vitut/Makefile
new file mode 100644
index 0000000..f412b62
--- /dev/null
+++ b/share/doc/usd/11.vitut/Makefile
@@ -0,0 +1,18 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= usd/11.edit
+SRCS= edittut.ms
+MACROS= -ms
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../contrib/nvi/docs/USD.doc/edit
+
+# index for versatec is different from the one in edit.tut
+# because the fonts are different and entries reference page
+# rather than section numbers. if you have a typesetter
+# you should just use the index in edit.tut, and ignore editvindex.
+
+#editvindex:
+# ${TROFF} ${MACROS} -n22 edit.vindex
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/12.vi/Makefile b/share/doc/usd/12.vi/Makefile
new file mode 100644
index 0000000..7b2c080
--- /dev/null
+++ b/share/doc/usd/12.vi/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+SUBDIR= vi viapwh summary
+
+.include <bsd.subdir.mk>
+
diff --git a/share/doc/usd/12.vi/Makefile.inc b/share/doc/usd/12.vi/Makefile.inc
new file mode 100644
index 0000000..42d417f
--- /dev/null
+++ b/share/doc/usd/12.vi/Makefile.inc
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+VOLUME= usd/12.vi
+MACROS= -ms
+SRCDIR= ${.CURDIR}/../../../../../contrib/nvi/docs/USD.doc/vitut
diff --git a/share/doc/usd/12.vi/summary/Makefile b/share/doc/usd/12.vi/summary/Makefile
new file mode 100644
index 0000000..425536d
--- /dev/null
+++ b/share/doc/usd/12.vi/summary/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+DOC= summary
+SRCS= vi.summary
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/12.vi/vi/Makefile b/share/doc/usd/12.vi/vi/Makefile
new file mode 100644
index 0000000..6021b09
--- /dev/null
+++ b/share/doc/usd/12.vi/vi/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+SRCS= vi.in vi.chars
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/12.vi/viapwh/Makefile b/share/doc/usd/12.vi/viapwh/Makefile
new file mode 100644
index 0000000..f20582d
--- /dev/null
+++ b/share/doc/usd/12.vi/viapwh/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+DOC= viapwh
+SRCS= vi.apwh.ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/13.viref/Makefile b/share/doc/usd/13.viref/Makefile
new file mode 100644
index 0000000..d7bb392
--- /dev/null
+++ b/share/doc/usd/13.viref/Makefile
@@ -0,0 +1,35 @@
+# From: @(#)Makefile 8.16 (Berkeley) 8/15/94
+# $FreeBSD$
+
+VOLUME= usd/13.viref
+SRCS= vi.ref-patched
+EXTRA= ex.cmd.roff ref.so set.opt.roff vi.cmd.roff
+MACROS= -me
+CLEANFILES= vi.ref-patched index
+TRFLAGS= -U # this is to hide warnings only
+USE_SOELIM=
+USE_TBL=
+SRCDIR= ${.CURDIR}/../../../../contrib/nvi/docs/USD.doc/vi.ref
+
+vi.ref-patched: vi.ref
+ sed -e 's:^\.so index.so$$:&.\\*[.T]:' ${.ALLSRC} > ${.TARGET}
+
+PRINTERDEVICE?= ascii
+.for _dev in ${PRINTERDEVICE}
+EXTRA+= index.so.${_dev}
+CLEANFILES+= index.so.${_dev}
+
+# Build index.so as a side-effect of building the paper.
+index.so.${_dev}: ${SRCS} ${EXTRA:Nindex.so.${_dev}}
+ sed -e 's:^\.so index\.so\.\\\*\[\.T\]$$::' vi.ref-patched | \
+ ${ROFF.${_dev}} -U -z
+ sed -e 's/MINUSSIGN/-/' \
+ -e 's/DOUBLEQUOTE/""/' \
+ -e "s/SQUOTE/'/" \
+ -e 's/ /__SPACE/g' < index | \
+ sort -u '-t ' -k 1,1 -k 2n | awk -f ${SRCDIR}/merge.awk | \
+ sed -e 's/__SPACE/ /g' \
+ -e "s/^\\(['\\.]\\)/\\\\\&\\1/" > ${.TARGET}
+.endfor
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/18.msdiffs/Makefile b/share/doc/usd/18.msdiffs/Makefile
new file mode 100644
index 0000000..faf76bb
--- /dev/null
+++ b/share/doc/usd/18.msdiffs/Makefile
@@ -0,0 +1,8 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= usd/18.msdiffs
+SRCS= ms.diffs
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/18.msdiffs/ms.diffs b/share/doc/usd/18.msdiffs/ms.diffs
new file mode 100644
index 0000000..be6883f
--- /dev/null
+++ b/share/doc/usd/18.msdiffs/ms.diffs
@@ -0,0 +1,288 @@
+.\" Copyright (c) 1983, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)ms.diffs 8.1 (Berkeley) 6/8/93
+.\"
+.\" $FreeBSD$
+.\"
+.nr LL 6.5i
+.nr FL 6.0i
+.if t .nr PD .5v
+.if t .ds m \u\(ul\dm
+.if n .ds m -m
+.AM
+.OH 'A Revised Version of \*ms''USD:18-%'
+.EH 'USD:18-%''A Revised Version of \*ms'
+.TL
+A Revised Version of \*ms
+.AU
+Bill Tuthill
+.AI
+Computing Services
+University of California
+Berkeley, CA 94720
+.PP
+The \*ms macros have been slightly revised and re\%arranged for the
+Berkeley Unix distribution.
+Because of the rearrangement,
+the new macros can be read by the computer
+in about half the time required by the previous version of \*ms.
+This means that output will begin to appear between ten seconds
+and several minutes more quickly, depending on the system load.
+On long files, however, the savings in total time are not substantial.
+The old version of \*ms is still available as \*mos.
+.PP
+Several bugs in \*ms have been fixed, including
+a bad problem with the .1C macro,
+minor difficulties with boxed text,
+a break induced by .EQ before initialization,
+the failure to set tab stops in displays,
+and several bothersome errors in the \fBrefer\fP macros.
+Macros used only at Bell Laboratories have been removed.
+There are a few extensions to previous \*ms macros,
+and a number of new macros, but all the documented \*ms macros
+still work exactly as they did before, and have the same names as before.
+Output produced with \*ms should look like output produced with \*mos.
+.PP
+One important new feature is automatically numbered footnotes.
+Footnote numbers are printed by means of a pre-defined string
+(\e\(**\(**), which you invoke separately from .FS and .FE.
+Each time it is used, this string increases the footnote number by one,
+whether or not you use .FS and .FE in your text.
+Footnote numbers will be superscripted on the phototypesetter
+and on daisy-wheel terminals, but on low-resolution devices
+(such as the lpr and a crt), they will be bracketed.
+If you use \e\(**\(** to indicate numbered footnotes,
+then the .FS macro will automatically include
+the footnote number at the bottom of the page.
+This footnote, for example, was produced as follows:\**
+.DS
+This footnote, for example, was produced as follows:\e\(**\(**
+\&.FS
+.sp -.2
+ ...
+\&.FE
+.DE
+.FS
+If you never use the ``\e\(**\(**'' string,
+no footnote numbers will appear anywhere in the text,
+including down here.
+The output footnotes will look exactly like
+footnotes produced with \*mos.
+.FE
+If you are using \e\(**\(** to number footnotes,
+but want a particular footnote to be marked with an asterisk or a dagger,
+then give that mark as the first argument to .FS: \(dg
+.DS
+then give that mark as the first argument to .FS: \e(dg
+\&.FS \e(dg
+.sp -.2
+ ...
+\&.FE
+.DE
+.FS \(dg
+In the footnote, the dagger will appear where the footnote
+number would otherwise appear, as on the left.
+.FE
+Footnote numbering will be temporarily suspended,
+because the \e\(**\(** string is not used.
+Instead of a dagger, you could use an asterisk *
+or double dagger \(dd, represented as \|\e(dd.
+.PP
+Another new feature is a macro for printing theses
+according to Berkeley standards.
+This macro is called .TM, which stands for thesis mode.
+(It is much like the .th macro in \*me.)
+It will put page numbers in the upper right-hand corner;
+number the first page; suppress the date;
+and doublespace everything except quotes, displays, and keeps.
+Use it at the top of each file making up your thesis.
+Calling .TM defines the .CT macro for chapter titles,
+which skips to a new page and moves the pagenumber to the center footer.
+The .P1 (P one) macro can be used even without thesis mode
+to print the header on page 1,
+which is suppressed except in thesis mode.
+If you want roman numeral page numbering,
+use an ``.af\0PN\0i'' request.
+.PP
+There is a new macro especially for bibliography entries,
+called .XP, which stands for exdented paragraph.
+It will exdent the first line of the paragraph by \en(PI units,
+usually 5n (the same as the indent for the first line of a .PP).
+Most bibliographies are printed this way.
+Here are some examples of exdented paragraphs:
+.XP
+Lumley, Lyle S., \fISex in Crustaceans: Shell Fish Habits,\fP\|
+Harbinger Press, Tampa Bay and San Diego, October 1979.
+243 pages.
+The pioneering work in this field.
+.XP
+Leffadinger, Harry A., ``Mollusk Mating Season: 52 Weeks, or All Year?''
+in \fIActa Biologica,\fP\| vol. 42, no. 11, November 1980.
+A provocative thesis, but the conclusions are wrong.
+.LP
+Of course, you will have to take care of
+italicizing the book title and journal,
+and quoting the title of the journal article.
+Indentation or exdentation can be changed
+by setting the value of number register PI.
+.PP
+If you need to produce endnotes rather than footnotes,
+put the references in a file of their own.
+This is similar to what you would do if you were
+typing the paper on a conventional typewriter.
+Note that you can use automatic footnote numbering
+without actually having .FS and .FE pairs in your text.
+If you place footnotes in a separate file,
+you can use .IP macros with \e\(**\(**\| as a hanging tag;
+this will give you numbers at the left-hand margin.
+With some styles of endnotes,
+you would want to use .PP rather then .IP macros,
+and specify \e\(**\(** before the reference begins.
+.PP
+There are four new macros to help produce a table of contents.
+Table of contents entries must be enclosed in .XS and .XE pairs,
+with optional .XA macros for additional entries;
+arguments to .XS and .XA specify the page number,
+to be printed at the right.
+A final .PX macro prints out the table of contents.
+Here is a sample of typical input and output text:
+.DS
+\&.XS ii
+Introduction
+\&.XA 1
+Chapter 1: Review of the Literature
+\&.XA 23
+Chapter 2: Experimental Evidence
+\&.XE
+\&.PX
+.sp .5
+.lt 5.5i
+.tl ''\fBTable of Contents\fP''
+.ta 5i 5.5iR
+.sp
+Introduction  ii\|
+Chapter 1: Review of the Literature  1
+Chapter 2: Experimental Evidence  23
+.sp .5
+.DE
+The .XS and .XE pairs may also be used in the text,
+after a section header for instance,
+in which case page numbers are supplied automatically.
+However, most documents that require a table of contents
+are too long to produce in one run,
+which is necessary if this method is to work.
+It is recommended that you do a table of contents
+after finishing your document.
+To print out the table of contents, use the .PX macro;
+if you forget it, nothing will happen.
+.PP
+As an aid in producing text that will format correctly
+with both \fBnroff\fP and \fBtroff\fP,
+there are some new string definitions that define quotation marks
+and dashes for each of these two formatting programs.
+The \e\(**\^\u_\d string will yield two hyphens in \fBnroff\fP,
+but in \fBtroff\fP it will produce an em dash\*-
+like this one.
+The \e\(**Q and \e\(**U strings will produce
+`` and '' in \fBtroff\fP, but " in \fBnroff\fP.
+(In typesetting, the double quote is traditionally considered bad form.)
+.PP
+There are now a large number of optional
+foreign accent marks defined by the \*ms macros.
+All the accent marks available in \*mos are present,
+and they all work just as they always did.
+However, there are better definitions available
+by placing .AM at the beginning of your document.
+Unlike the \*mos accent marks,
+the accent strings should come \fIafter\fP\| the letter being accented.
+Here is a list of the diacritical marks,
+with examples of what they look like.
+.DS
+.ta 2i 3i
+name of accent input output
+\l'3.5i'
+acute accent e\e\(**\' e\*'
+grave accent e\e\(**\` e\*`
+circumflex o\e\(**\d^\u o\*^
+cedilla c\e\(**, c\*,
+tilde n\e\(**\d~\u n\*~
+question \e\(**? \*?
+exclamation \e\(**! \*!
+umlaut u\e\(**: u\*:
+digraph s \e\(**8 \*8
+hac\*vek c\e\(**v c\*v
+macron a\e\(**_ a\*_
+underdot s\e\(**. s\*.
+o-slash o\e\(**/ o\*/
+angstrom a\e\(**o a\*o
+yogh kni\e\(**3t kni\*3t
+Thorn \e\(**(Th \*(Th
+thorn \e\(**(th \*(th
+Eth \e\(**(D- \*(D-
+eth \e\(**(d- \*(d-
+hooked o \e\(**q \*q
+ae ligature \e\(**(ae \*(ae
+AE ligature \e\(**(Ae \*(Ae
+oe ligature \e\(**(oe \*(oe
+OE ligature \e\(**(Oe \*(Oe
+.DE
+If you want to use these new diacritical marks,
+don't forget the .AM at the top of your file.
+Without it, some will not print at all,
+and others will be placed on the wrong letter.
+.PP
+It is also possible to produce custom headers and footers
+that are different on even and odd pages.
+The .OH and .EH macros define odd and even headers,
+while .OF and .EF define odd and even footers.
+Arguments to these four macros are specified as with .tl.
+This document was produced with:
+.DS
+\&.OH \'\ef\^IThe -mx Macros\'\'Page %\ef\^P\'
+\&.EH \'\ef\^IPage %\'\'The -mx Macros\ef\^P\'
+.DE
+Note that it would be an error to have an apostrophe in the header text;
+if you need one, you will have to use a different delimiter
+around the left, center, and right portions of the title.
+You can use any character as a delimiter, provided it doesn't appear
+elsewhere in the argument to .OH, .EH, .OF, or EF.
+.PP
+The \*ms macros work in conjunction with
+the \fBtbl\fR, \fBeqn\fR, and \fBrefer\fR preprocessors.
+Macros to deal with these items are read in only as needed,
+as are the thesis macros (.TM),
+the special accent mark definitions (.AM),
+table of contents macros (.XS and .XE),
+and macros to format the optional cover page.
+The code for the \*ms package lives in /usr/lib/tmac/tmac.s,
+and sourced files reside in the directory /usr/ucb/lib/ms.
+.sp
diff --git a/share/doc/usd/19.memacros/Makefile b/share/doc/usd/19.memacros/Makefile
new file mode 100644
index 0000000..4966e36
--- /dev/null
+++ b/share/doc/usd/19.memacros/Makefile
@@ -0,0 +1,18 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= usd/19.memacros
+SRCS= meintro.me-sed
+MACROS= -me
+GROFFDIR= ${.CURDIR}/../../../../contrib/groff
+SRCDIR= ${GROFFDIR}/doc
+
+version=`cat ${GROFFDIR}/VERSION`
+revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' ${GROFFDIR}/REVISION`
+
+meintro.me-sed: meintro.me
+ sed -e "s;@VERSION@;$(version)$(revision);" ${.ALLSRC} > ${.TARGET}
+
+CLEANFILES= ${SRCS}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/20.meref/Makefile b/share/doc/usd/20.meref/Makefile
new file mode 100644
index 0000000..af30e9b
--- /dev/null
+++ b/share/doc/usd/20.meref/Makefile
@@ -0,0 +1,18 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+VOLUME= usd/20.meref
+SRCS= meref.me-sed
+MACROS= -me
+GROFFDIR= ${.CURDIR}/../../../../contrib/groff
+SRCDIR= ${GROFFDIR}/doc
+
+version=`cat ${GROFFDIR}/VERSION`
+revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' ${GROFFDIR}/REVISION`
+
+meref.me-sed: meref.me
+ sed -e "s;@VERSION@;$(version)$(revision);" ${.ALLSRC} > ${.TARGET}
+
+CLEANFILES= ${SRCS}
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/21.troff/Makefile b/share/doc/usd/21.troff/Makefile
new file mode 100644
index 0000000..92ed429
--- /dev/null
+++ b/share/doc/usd/21.troff/Makefile
@@ -0,0 +1,8 @@
+# @(#)Makefile 8.1 (Berkeley) 8/14/93
+# $FreeBSD$
+
+VOLUME= usd/21.troff
+SRCS= m.mac m0 m0a m1 m2 m3 m4 m5 table1 table2
+USE_TBL=
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/21.troff/m.mac b/share/doc/usd/21.troff/m.mac
new file mode 100644
index 0000000..6e68c4e
--- /dev/null
+++ b/share/doc/usd/21.troff/m.mac
@@ -0,0 +1,288 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m.mac 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.if \n(mo=1 .ds mo January
+.if \n(mo=2 .ds mo February
+.if \n(mo=3 .ds mo March
+.if \n(mo=4 .ds mo April
+.if \n(mo=5 .ds mo May
+.if \n(mo=6 .ds mo June
+.if \n(mo=7 .ds mo July
+.if \n(mo=8 .ds mo August
+.if \n(mo=9 .ds mo September
+.if \n(mo=10 .ds mo October
+.if \n(mo=11 .ds mo November
+.if \n(mo=12 .ds mo December
+.if \n(dw=1 .ds dw Sunday
+.if \n(dw=2 .ds dw Monday
+.if \n(dw=3 .ds dw Tuesday
+.if \n(dw=4 .ds dw Wednesday
+.if \n(dw=5 .ds dw Thursday
+.if \n(dw=6 .ds dw Friday
+.if \n(dw=7 .ds dw Saturday
+.\"
+.bd S B 3
+.ds NR "\s-1NROFF\s+1
+.ds TR "\s-1TROFF\s+1
+.ds Nr "N\s-2ROFF\s+2
+.ds Tr "T\s-2ROFF\s+2
+.nr PS 10
+.hy 14
+.ds u \v'-0.3m'\s-2
+.ds d \s0\v'0.3m'
+.nr 2C 0
+.ds H
+.nr a .8i
+.nr b 1.6i
+.nr c 2.4i
+.nr d 2.9i
+.nr e 0.25i
+.nr p 0 1
+.nr s 0 1
+.af p 1
+.af s 1
+.nr m -1i
+.nr x 0 1
+.nr y 0+\nmu
+.ev 1
+.ps \n(PS-2
+.vs \n(PS
+.ll 6.5i
+'in 0
+.ev
+.tr &.
+.de xx
+.sp 0.4
+..
+.de ht
+.tl `\*(Nr/\*(Tr User's Manual``USD:21-%`
+.\" .tl 'updated to May 15, 1977'''\".tl 'Version \n(mo/\n(dy/\n(yr'''
+..
+.de he
+.tl `USD:21-%``\*(Nr/\*(Tr User's Manual`
+.\" .tl 'updated to May 15, 1977'''\".tl 'Version \n(mo/\n(dy/\n(yr'''
+..
+.de hd
+.\".tl '\(rn'''
+.if \\n%>1 \{'sp |.30i
+.if e .he
+.if o .ht
+.ps \\n(S2
+.ps \\n(S1
+.ft
+'sp |.9i\}
+.nr x 0 1
+.nr y 0+\\nmu
+.ch fo \\nmu
+.if \\n(dn .fz
+.ns
+.if dmx .mx
+.nr cl 0 1
+.mk
+..
+.de fz
+.fn
+.nf
+.fy
+.fi
+.ef
+..
+.de fx
+.if \\nx .di fy
+..
+.de fo
+.if dcx .cx
+.nr dn 0
+.if \\nx .xf
+.nr x 0 \"disable fx
+.ie \\n(2C&(\\n+(cl<2) \{\
+.po +3.4i
+.rt
+.nr y 0+\\nmu
+.ch fo \\nmu
+.if \\n(dn .fz
+.ns \}
+.el \{\
+.po 26i/27u
+.nr S1 \\n(.s
+.ps
+.nr S2 \\n(.s
+.ps 10
+'bp
+.\}
+..
+.de 2C
+.br
+.mk
+.nr 2C 1
+.ll 3.1i
+.ev 1
+.ll 3.1i
+.ev
+..
+.de 1C
+.br
+.nr 2C 0
+.ll 6.5i
+.ev 1
+.ll 6.5i
+.ev
+..
+.de co
+.de cx
+.br
+\fI(Continued next page.)\fP
+.br
+.rm cx
+\\..
+..
+.de pp
+'ps \\n(PS
+.ft R
+.\"'tl ''- % -''
+'bp
+..
+.wh 0 hd
+.wh 12i fo
+.wh \nmu fx
+.ch fo \nmu
+.de fn
+.da FN
+.ev 1
+.if \\n+x=1 .fs
+.fi
+.ti 0
+..
+.de xf
+.ev 1
+.nf
+.FN
+.rm FN
+.di
+.ev
+..
+.de fs
+.ti 0
+\l'1i'
+.br
+..
+.de ef
+.br
+.ev
+.di
+.nr y -\\n(dn
+.if \\nx=1 .nr y -2p
+.ch fo \\nyu
+.if \\n(nl+\\n(.v-\\n(.p-\\ny .ch fo \\n(nlu+\\n(.vu
+..
+.wh -.6i pp
+.de h1
+.xx
+.ne 5
+.nf
+.ta \\nau \\nbu \\ncu \\ndu +\\neu
+.ft I
+.bd I 3
+Request Initial If No
+Form Value\\$2 Argument Notes\\$1 Explanation
+.bd I
+.ft R
+.ft
+.fi
+.in \\ndu
+..
+.de bt
+.ft R
+.xx
+.ne 1.1
+.ti 0
+..
+.de b1
+.br
+.ti 0
+..
+.de pg
+.ft R
+.fi
+.in 0
+.xx
+.ne 1.1
+..
+.de sc
+.pg
+\fI\\*H\\np.\\n+s.\|\\c
+.ft R
+.ul
+..
+.de mh
+.nr s 0
+.in 0
+.xx
+.ne 2.5
+.ft B
+\\*H\\n+p.
+..
+.de x1
+.xx
+.in .5i
+.nf
+..
+.de x2
+.xx
+.in 0
+.fi
+..
+.de EM
+.br
+\&\c
+.pl 2i
+..
+.em EM
+.de TS
+.sp
+..
+.de TE
+.sp
+.ce 0
+.ft R
+.ps \n(PS
+.ta \\nau \\nbu \\ncu \\ndu +\\neu
+..
+.de T&
+..
diff --git a/share/doc/usd/21.troff/m0 b/share/doc/usd/21.troff/m0
new file mode 100644
index 0000000..d91c08f
--- /dev/null
+++ b/share/doc/usd/21.troff/m0
@@ -0,0 +1,290 @@
+.\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode!
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m0 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.br
+.rs
+.sp |1.0i
+.ce 1000
+.ps 12
+.ft B
+\*(Nr\(sl\*(Tr User's Manual
+.sp .2i
+.ft I
+.ps 10
+Joseph F. Ossanna
+(updated for 4.3BSD by Mark Seiden)
+.ft R
+.sp
+Bell Laboratories
+Murray Hill, New Jersey 07974
+.ce 0
+.sp 2
+.ps \n(PS
+.fi
+.ft B
+.ps +1
+NOTE: This document in its current form describes the \fItroff\fP\| program
+supplied with 4.4BSD. The \fIgroff\fP\| program supplied with FreeBSD has a
+number of additional features and a couple of small incompatibilities. See
+\fIgroff(1)\fP\| for more details.
+.ps
+.sp 1
+Introduction
+.pg
+\*(NR and \*(TR are text processors under
+the \s-1UNIX\s+1 Time-Sharing System
+that format text for typewriter-like terminals and
+for a \%Graphic Systems phototypesetter, respectively.
+(Device-independent \*(TR, part of the Documenter's Workbench,
+supports additional output devices.)
+They accept lines of text interspersed with lines of
+format control information and
+format the text into a printable, paginated document
+having a user-designed style.
+\*(NR and \*(TR offer
+unusual freedom in document styling,
+including:
+arbitrary style headers and footers;
+arbitrary style footnotes;
+multiple automatic sequence numbering for paragraphs, sections, etc;
+multiple column output;
+dynamic font and point-size control;
+arbitrary horizontal and vertical local motions at any point;
+and
+a family of automatic overstriking, bracket construction, and
+line drawing functions.
+.pg
+\*(NR and \*(TR are highly compatible with each other and it is almost always
+possible to prepare input acceptable to both.
+Conditional input is provided that enables
+the user to embed input expressly destined for either program.
+\*(NR can prepare output directly for a variety of terminal types and
+is capable of utilizing the full resolution of each terminal.
+.pg
+.ft B
+Usage
+.pg
+The general form of invoking \*(NR (or \*(TR) at \s-1UNIX\s+1 command level is
+.x1
+\fBnroff \fIoptions files\fR\
+\h'|2i'(or \fBtroff \fIoptions files\fR)
+.x2
+where \fIoptions\fR represents any of a number of option arguments
+and \fIfiles\fR represents the list of files containing the document
+to be formatted.
+An argument consisting of a single minus (\fB\-\fR) is taken to be
+a file name corresponding to the standard input.
+If no file names are given input is taken from the standard input.
+The options, which may appear in any order so long as they appear
+before the files, are:
+.sp
+.ta .2i 1.0i
+.ft I
+.bd I 3
+ Option Effect
+.br
+.bd I
+.ft R
+.ta .3i 1.0i
+.in 1.0i
+.ll -.3i
+.bt
+ \fB\-i\fP Read standard input after the input files are exhausted.
+.bt
+ \fB\-m\fIname\fR Prepends the macro file
+\fB\(slusr\(sllib\(sltmac.\fIname\fR
+to the input \fIfiles\fR.
+.bt
+ \fB\-n\fIN\fR Number first generated page \fIN\fR.
+.bt
+ \fB\-o\fIlist\fR \
+Print only pages whose page numbers appear in \fIlist\fR,
+which consists of comma-separated numbers and number ranges.
+A number range has the form \fIN\-M\fR
+and means pages \fIN\fR through \fIM;\fR
+a initial \fI\-N\fR means
+from the beginning to page \fIN;\fR and a final \fIN\-\fR means
+from \fIN\fR to the end.
+.bt
+ \fB\-q\fR \
+Invoke the simultaneous input-output mode of the \fBrd\fR request.
+.bt
+ \fB\-r\fIaN\fR Number register \fIa\fR (one-character) is set to \fIN\fR.
+.bt
+ \fB\-s\fIN\fR Stop every \fIN\fR pages.
+\*(NR will halt prior to every \fIN\fR pages (default \fIN\fR=1)
+to allow paper loading or
+changing, and will resume upon receipt of a newline.
+\*(TR will stop the phototypesetter every \fIN\fR pages,
+produce a trailer to allow changing cassettes,
+and will resume after the phototypesetter \s-1START\s+1 button is pressed.
+.bt
+ \fB\-z\fR Efficiently suppress formatted output.
+Only produce output to standard error (from \fBtm\fP requests or
+diagnostics).
+.sp
+.ne 5
+.ft I
+.bd I 3
+ \*(NR Only
+.br
+.bd I
+.ft
+.bt
+ \fB\-T\fIname\fR Specifies
+the name of the output terminal type.
+Currently defined names are \fB37\fR for the (default) Model 37 Teletype\(rg,
+\fBtn300\fR for the GE TermiNet\ 300 (or any terminal without half-line
+capabilities),
+\fB300S\fR for the \s-1DASI\s+1-300S,
+\fB300\fR for the \s-1DASI\s+1-300,
+and
+\fB450\fR for the \s-1DASI\s+1-450 (Diablo Hyterm).
+.bt
+ \fB\-e\fR \
+Produce equally-spaced words in adjusted
+lines, using full terminal resolution.
+.bt
+ \fB\-h\fR \
+On output, use tabs during horizontal spacing to increase speed.
+Device tabs setting are assumed to be (and input tabs are initially
+set to) every 8 character widths.
+.sp
+.ne 3
+.ft I
+.bd I 3
+ \*(TR Only
+.br
+.bd I
+.ft
+.bt
+ \fB\-a\fP Send a printable \s-1(ASCII)\s+1 approximation
+of the results to the standard output.
+.bt
+ \fB\-b\fR \*(TR will report whether the phototypesetter
+is busy or available.
+No text processing is done.
+.bt
+ \fB\-f\fP Refrain from feeding out paper and stopping
+phototypesetter at the end of the run.
+.bt
+ \fB\-t\fP Direct output to the standard output instead
+of the phototypesetter.
+.bt
+ \fB\-w\fP Wait until phototypesetter is available, if
+currently busy.
+.ll
+.in 0
+.xx
+.pg
+Each option is invoked as a separate argument;
+for example,
+.x1
+\fBnroff \-o\fI4,8\-10 \fB\-T\fI300S \fB\-m\fIabc file1 file2\fR
+.x2
+requests formatting of pages 4, 8, 9, and 10 of a document contained in the files
+named \fIfile1\fR and \fIfile2\fR,
+specifies the output terminal as a \s-1DASI\s+1-300S,
+and invokes the macro package \fIabc\fR.
+.pg
+Various pre- and post-processors are available for use with \*(NR and \*(TR.
+These include the equation preprocessors \s-1NEQN\s+1 and \s-1EQN\s+1\*u1\*d
+(for \*(NR and \*(TR respectively),
+and the table-construction preprocessor \s-1TBL\s+1\*u2\*d.
+A reverse-line postprocessor \s-1COL\s+1\*u3\*d
+is available for multiple-column \*(NR output on terminals without reverse-line ability;
+\s-1COL\s+1 expects the Model 37 Teletype
+escape sequences that \*(NR produces by default.
+\s-1TK\s+1\*u3\*d
+is a 37 Teletype simulator postprocessor for printing \*(NR output on a Tektronix 4014.
+\s-1TC\s+1\*u5\*d
+is a phototypesetter-simulator postprocessor
+for \*(TR that produces an approximation of phototypesetter output
+on a Tektronix 4014.
+For example, in
+.x1
+\fBtbl \fIfiles \fB| eqn | troff \-t \fIoptions \fB| tc\fR
+.x2
+the first \|\fB|\fR\| indicates the piping of \s-1TBL\s+1's output to \s-1EQN\s+1's input;
+the second the piping of \s-1EQN\s+1's output to \*(TR's input;
+and the third indicates the piping of \*(TR's output to \s-1TC\s+1.
+.br
+.pg
+The remainder of this manual consists of:
+a Summary and outline;
+a Reference Manual keyed to the outline;
+and
+a set of Tutorial Examples.
+Another tutorial is [5].
+.sp .4
+.ps -1
+.vs -1p
+.pg
+.ft B
+References
+.pg
+.ta .3i
+.in .3i
+.ti 0
+[1] B. W. Kernighan, L. L. Cherry,
+.ul
+Typesetting Mathematics \(em User's Guide (Second Edition),
+Bell Laboratories.
+.sp .4
+.ti 0
+[2] M. E. Lesk,
+.ul
+Tbl \(em A Program to Format Tables,
+Bell Laboratories internal memorandum.
+.sp .4
+.ti 0
+[3] Internal on-line documentation (\fIman\fP pages) on \s-1UNIX\s+1.
+.sp .4
+.ti 0
+[4] B. W. Kernighan, \fIA TROFF Tutorial\fR,
+Bell Laboratories.
+.sp .4
+.ti 0
+[5] Your site may have similar programs for more modern displays.
+.in 0
+.ps 10
+.vs 12
+.ft R
+.bp
diff --git a/share/doc/usd/21.troff/m0a b/share/doc/usd/21.troff/m0a
new file mode 100644
index 0000000..1a0be6c
--- /dev/null
+++ b/share/doc/usd/21.troff/m0a
@@ -0,0 +1,607 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m0a 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.br
+.tr |
+.ce
+.ft B
+SUMMARY OF REQUESTS AND OUTLINE OF THIS MANUAL
+.ft R
+.de mx
+.ev 2
+.nf
+.h1
+.in
+.sp
+.fi
+.ev
+.ns
+..
+.xx
+.h1 \s-1#\s+1 *
+.fn
+.sp .3
+*Values separated by "\fB;\fR" are for \*(NR and \*(TR respectively.
+.sp .2
+\s-1#\s+1Notes are explained at the end of this Summary and Index
+.ef
+.mh
+General Explanation
+.mh
+Font and Character Size Control
+.bt
+\fB&ps\fI\|\(+-N\fR 10\|point previous E Point size; also \fB\es\fI\(+-N\fR.\(dg
+.b1
+\fB&fz\fI|F|\(+-N\fR off - E font \fIF\fR to point size \fI\(+-N\fR.
+.b1
+\fB&fz|S|\fIF|\(+-N\fR off - E Special Font characters to point size \fI\(+-N\fR.
+.b1
+\fB&ss\fI|N\fR 12\(sl36\|em ignored E Space-character size
+set to \fIN\fR\(sl36\|em.\(dg
+.b1
+\fB&cs\fI|F\|N\|M\fR off - P Constant character
+space (width)
+mode (font \fIF\^\fR\^).\(dg
+.b1
+\fB&bd\fI|F|N\fR off - P Embolden font \fIF\fR by \fIN\fR\(mi1 units.\(dg
+.b1
+\fB&bd|S|\fIF|N\fR off - P Embolden Special Font when current font is \fIF\fR.\(dg
+.fn
+.sp .2
+\(dgNo effect in \*(NR.
+.ef
+.b1
+\fB&ft\fI|F\fR Roman previous E Change to font
+\fIF\fR|= \fIx\fR, \fIxx\fR, or 1-4.
+Also \fB\ef\fIx\fR,\|\fB\ef(\fIxx\fR,\|\fB\ef\fIN\fR.
+.b1
+\fB&fp\fI|N|F\fR R,I,B,S ignored - Font named \fIF\fR mounted on physical position 1\(<=\fIN\fR\(<=4.
+.mh
+Page Control
+.bt
+\fB&pl\fI|\(+-N\fR 11\|in 11\|in \fBv\fR Page length.
+.b1
+\fB&bp|\fI\(+-N\fR \fIN\(eq\fR1 - B\(dd,\fBv\fR \
+Eject current page; next page number \fIN\fR.
+.fn
+.sp .2
+\(ddThe use of "\ \fB\'\fR\ " as control character (instead of "\fB.\fR")
+suppresses the break function.
+.ef
+.b1
+\fB&pn\fI|\(+-N N\(eq\fR1 ignored - Next page number \fIN\fR.
+.b1
+\fB&po\fI|\(+-N\fR 0;|26\(sl27\|in previous \fBv\fR Page offset.
+.b1
+\fB&ne\fI|N\fR - \fIN\(eq\fR1\fIV\fR D,\fBv\fR Need \fIN\fR vertical space (\fIV\fR = vertical spacing).
+.b1
+\fB&mk|\fIR\fR none internal D Mark current vertical place in register \fIR\fR.
+.b1
+\fB&rt\fI|\(+-N\fR none internal D,\fBv\fR Return \fI(upward only)\fR to marked vertical place.
+.mh
+Text Filling, Adjusting, and Centering
+.bt
+\fB&br\fR - - B Break.
+.b1
+.lg 0
+\fB&fi\fR \(fill - B,E Fill output lines.
+.lg
+.b1
+\fB&nf\fR fill - B,E No filling or adjusting of output lines.
+.b1
+\fB&ad\fI|c\fR adj,both adjust E Adjust output lines with mode \fIc\fR.
+.b1
+\fB&na\fR adjust - E No output line adjusting.
+.b1
+\fB&ce\fI|N\fR off \fIN\(eq\fR1 B,E Center following \fIN\fR input text lines.
+.mh
+Vertical Spacing
+.bt
+\fB&vs\fI|N\fR 1\(sl6in;12pts previous E,\fBp\fR Vertical base line spacing (\fIV\fR\^).
+.b1
+\fB&ls\fI|N N\(eq\fR1 previous E Output \fIN\(mi\fR1 \fIV\^\fRs after each text output line.
+.b1
+\fB&sp\fI|N\fR - \fIN\(eq\fR1\fIV\fR B,\fBv\fR Space \
+vertical distance \fIN\fR \fIin either direction\fR.
+.b1
+\fB&sv\fI|N\fR - \fIN\(eq\fR1\fIV\fR \fBv\fR Save vertical distance \fIN\fR.
+.b1
+\fB&os\fR - - - Output saved vertical distance.
+.b1
+\fB&ns\fR space - D Turn no-space mode on.
+.b1
+\fB&rs\fR - - D Restore spacing; turn no-space mode off.
+.mh
+Line Length and Indenting
+.bt
+\fB&ll\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Line length.
+.b1
+\fB&in\fI|\(+-N\fR \fIN\(eq\fR\^0 previous B,E,\fBm\fR Indent.
+.b1
+\fB&ti\fI|\(+-N\fR - ignored B,E,\fBm\fR Temporary indent.
+.mh
+Macros, Strings, Diversion, and Position Traps
+.bt
+\fB&de\fI|xx|yy\fR - \fI.yy=\fB..\fR - Define or redefine macro \fIxx;\fR end at call of \fIyy\fR.
+.b1
+\fB&am\fI|xx|yy\fR - \fI.yy=\fB..\fR - Append to a macro.
+.b1
+\fB&ds\fI|xx|string\fR - ignored - Define a string \fIxx\fR containing \fIstring\fR.
+.b1
+\fB&as\fI|xx|string\fR - ignored - Append \fIstring\fR to string \fIxx\fR.
+.b1
+\fB&rm\fI|xx\fR - ignored - Remove request, macro, or string.
+.b1
+\fB&rn\fI|xx|yy\fR - ignored - Rename request, macro, or string \fIxx\fR to \fIyy\fR.
+.b1
+\fB&di\fI|xx\fR - end D Divert output to macro \fIxx\fR.
+.b1
+\fB&da\fI|xx\fR - end D Divert and append to \fIxx\fR.
+.b1
+\fB&wh\fI|N|xx\fR - - \fBv\fR Set location trap; negative is w.r.t. page bottom.
+.b1
+\fB&ch\fI|xx|N\fR - - \fBv\fR Change trap location.
+.b1
+\fB&dt\fI|N|xx\fR - off D,\fBv\fR Set a diversion trap.
+.b1
+\fB&it\fI|N|xx\fR - off E Set an input-line count trap.
+.b1
+\fB&em\fI|xx\fR none none - End macro is \fIxx\fI.
+.mh
+Number Registers
+.bt
+\fB&nr\fI|R|\(+-N|M\fR - - \fBu\fR Define and set number register \fIR\fR; auto-increment by \fIM\fR.
+.b1
+\fB&af\fI|R|c\fR arabic - - Assign format to register \fIR\fR (\fIc=\fB1\fR, \fBi\fR, \fBI\fR, \fBa\fR, \fBA\fR).
+.b1
+\fB&rr\fI|R\fR - - - Remove register \fIR\fR.
+.mh
+Tabs, Leaders, and Fields
+.bt
+\fB&ta\fI|Nt|...\fR 0.8;|0.5in none E,\fBm\fR Tab settings; \fIleft\fR type, unless \fIt=\fBR\fR(right), \fBC\fR(centered).
+.b1
+\fB&tc\fI|c\fR none none E Tab repetition character.
+.b1
+\fB&lc\fI|c\fR \fB.\fR none E Leader repetition character.
+.b1
+\fB&fc\fI|a|b\fR off off - Set field delimiter \fIa\fR and pad character \fIb\fR.
+.mh
+Input and Output Conventions and Character Translations
+.bt
+\fB&ec\fI|c\fR \e \e - Set escape character.
+.b1
+\fB&eo\fR on - - Turn off escape character mechanism.
+.b1
+\fB&lg\fI|N\fR -;\|on on - Ligature mode
+on if \fIN\fR>0.
+.b1
+\fB&ul\fI|N\fR off \fIN\(eq\fR1 E Underline (italicize in \*(TR) \fIN\fR input lines.
+.b1
+\fB&cu\fI|N\fR off \fIN\(eq\fR1 E Continuous underline in \*(NR; like \fBul\fR in \*(TR.
+.b1
+\fB&uf\fI|F\fR Italic Italic - Underline font set to \fIF\fR (to be switched to by \fBul\fR).
+.b1
+\fB&cc\fI|c\fR \fB. .\fR E Set control character to \fIc\fR.
+.b1
+\fB&c2\fI|c\fR \fB\' \'\fR E Set nobreak control character to \fIc\fR.
+.b1
+\fB&tr\fI|abcd....\fR none - O Translate \fIa\fR to \fIb\fR, etc. on output.
+.mh
+Local Horizontal and Vertical Motions, and the Width Function
+.mh
+Overstrike, Bracket, Line-drawing, and Zero-width Functions
+.mh
+Hyphenation.
+.bt
+\fB&nh\fR hyphenate - E No hyphenation.
+.b1
+\fB&hy\fI|N\fR hyphenate hyphenate E Hyphenate; \fIN =\fR mode.
+.b1
+\fB&hc\fI|c\fR \fB\e% \e%\fR E Hyphenation indicator character \fIc\fR.
+.b1
+\fB&hw\fI|word1|...\fR ignored - Exception words.
+.mh
+Three Part Titles.
+.bt
+\fB&tl\fI|\'left\|\'center\|\'right\|\'\fR - - Three part title.
+.b1
+\fB&pc\fI|c\fR \fB%\fR off - Page number character.
+.b1
+\fB&lt\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Length of title.
+.mh
+Output Line Numbering.
+.bt
+\fB&nm\fI|\(+-N|M|S|I\fR off E Number mode on or off, set parameters.
+.b1
+\fB&nn\fI|N\fR - \fIN\(eq\fR1 E Do not number next \fIN\fR lines.
+.mh
+Conditional Acceptance of Input
+.bt
+\fB&if\fI|c|anything\fR - - If condition \fIc\fR true, accept \fIanything\fR as input,
+.b1
+ for multi-line use \fI\e{anything\|\e}\fR.
+.b1
+\fB&if|!\fIc|anything\fR - - If condition \fIc\fR false, accept \fIanything\fR.
+.b1
+\fB&if\fI|N|anything\fR - \fBu\fR If expression \fIN\fR > 0, accept \fIanything\fR.
+.b1
+\fB&if|!\fIN|anything\fR - \fBu\fR If expression \fIN\fR \(<= 0, accept \fIanything\fR.
+.b1
+\fB&if\fI|\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR identical to \fIstring2\fR,
+accept \fIanything\fR.
+.b1
+\fB&if|!\fI\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR not identical to \fIstring2\fR,
+accept \fIanything\fR.
+.b1
+\fB&ie\fI|c|anything\fR - \fBu\fR If portion of if-else; all above forms (like \fBif\fR).
+.b1
+\fB&el\fI|anything\fR - - Else portion of if-else.
+.mh
+Environment Switching.
+.bt
+\fB&ev\fI|N\fR \fIN\(eq\fR0 previous - Environment switched (\fIpush down\fR).
+.mh
+Insertions from the Standard Input
+.bt
+\fB&rd\fI|prompt\fR\fR - \fIprompt=\s-1\fRBEL\s+1 Read insertion.
+.b1
+\fB&ex\fR - - - \
+Exit from \*(NR\(sl\*(TR.
+.mh
+Input\(slOutput File Switching
+.bt
+\fB&so\fI|filename\fR - - Switch source file \fI(push down)\fR.
+.b1
+\fB&nx\fI|filename\fR end-of-file - Next file.
+.b1
+\fB&pi\fI|program\fR - - Pipe output to \fIprogram\fR (\*(NR only).
+.mh
+Miscellaneous
+.bt
+\fB&mc\fI|c|N\fR - off E,\fBm\fR Set margin character \fIc\fR and separation \fIN\fR.
+.b1
+\fB&tm\fI|string\fR - newline - Print \fIstring\fR on terminal \
+(\s-1UNIX\s+1 standard error output).
+.b1
+\fB&ig\fI|yy\fR - \fI.yy=\fB..\fR - Ignore till call of \fIyy\fR.
+.b1
+\fB&pm\fI|t\fR - all - Print macro names and sizes;
+.b1
+ if \fIt\fR present, print only total of sizes.
+.b1
+\fB&ab\fI|string\fR - - - Print a message and abort.
+.b1
+.lg 0
+\fB&fl\fR - - B Flush output buffer.
+.lg
+.mh
+Output and Error Messages
+.xx
+.nf
+.rm mx
+.ft R
+\l'\n(.lu'
+.ft B
+.xx
+.ta .3iC .6i
+ Notes-
+.xx
+.ft R
+ B Request normally causes a break.
+ D Mode or relevant parameters associated with current diversion level.
+ E Relevant parameters are a part of the current environment.
+ O Must stay in effect until logical output.
+ P Mode must be still or again in effect at the time of physical output.
+ \fBv\fR,\fBp\fR,\fBm\fR,\fBu\fR Default scale indicator; if not specified, scale indicators are \fIignored\fR.
+.br
+.nr zz 11
+.de cl
+.ie \\n+(cl<\n(zz \{\
+. po +\\n(.lu/\n(zzu
+. rt
+.\}
+.el \{\
+.po 26i/27u
+.\}
+..
+.nr cl 0 1
+.di zz
+.ta .3iR
+.nf
+.ps 8
+.vs 10
+ab 20
+ad 4
+af 8
+am 7
+as 7
+bd 2
+bp 3
+br 4
+c2 10
+cc 10
+ce 4
+ch 7
+cs 2
+cu 10
+da 7
+de 7
+di 7
+ds 7
+dt 7
+ec 10
+el 16
+em 7
+eo 10
+ev 17
+ex 18
+fc 9
+fi 4
+fl 20
+fp 2
+ft 2
+fz 2
+hc 13
+hw 13
+hy 13
+ie 16
+if 16
+ig 20
+in 6
+it 7
+lc 9
+lg 10
+li 10
+ll 6
+ls 5
+lt 14
+mc 20
+mk 3
+na 4
+ne 3
+nf 4
+nh 13
+nm 15
+nn 15
+nr 8
+ns 5
+nx 19
+os 5
+pc 14
+pi 19
+pl 3
+pm 20
+pn 3
+po 3
+ps 2
+rd 18
+rm 7
+rn 7
+rr 8
+rs 5
+rt 3
+so 19
+sp 5
+ss 2
+sv 5
+ta 9
+tc 9
+ti 6
+tl 14
+tm 20
+tr 10
+uf 10
+ul 10
+vs 5
+wh 7
+.di
+.nr aa \n(dn/\n(zz
+.ne \n(aau+10p
+.sp
+.ft B
+Alphabetical Request and Section Number Cross Reference
+.ft
+.sp .3
+.wh \n(nlu+\n(aau cl
+.nr qq \n(nlu+\n(aau
+.ps
+.vs
+.mk
+.zz
+.rt
+.sp \n(.tu
+.ch cl 12i
+.sp
+.bp
+.nf
+.ft B
+Escape Sequences for Characters, Indicators, and Functions
+.ft R
+.xx
+.TS
+c2l
+c2l2l
+n2l2l.
+.ft I
+.bd I 3
+Section Escape
+Reference Sequence Meaning
+.ft R
+.bd I
+.xx
+10.1 \fB\e\e\fR \e (to prevent or delay the interpretation of \e\|)
+10.1 \fB\ee\fR Printable version of the \fIcurrent\fR escape character.
+2.1 \fB\e\'\fR \' (acute accent); equivalent to \fB\e(aa\fR
+2.1 \fB\e\`\fR \` (grave accent); equivalent to \fB\e(ga\fR
+2.1 \fB\e\-\fR \- Minus sign in the \fIcurrent\fR font
+7 \fB\e\^.\fR Period (dot) (see \fBde\fR)
+11.1 \fB\e\fR(space) Unpaddable space-size space character
+11.1 \fB\e0\fR Digit width space
+.tr ||
+11.1 \fB\e\||\fR 1\(sl6\|em narrow space character (zero width in \*(NR)
+.tr |
+11.1 \fB\e^\fR 1\(sl12\|em half-narrow space character (zero width in \*(NR)
+.tr &&
+4.1 \fB\e&\fR Non-printing, zero width character
+.tr &.
+10.6 \fB\e!\fR Transparent line indicator
+10.7 \fB\e"\fR Beginning of comment
+7.3 \fB\e$\fIN\fR Interpolate argument 1\(<=\fIN\fR\(<=9
+13 \fB\e%\fR Default optional hyphenation character
+2.1 \fB\e(\fIxx\fR Character named \fIxx\fR
+7.1 \fB\e\(**\fIx\fR,|\fB\e\(**(\fIxx\fR Interpolate string \fIx\fR or \fIxx\fR
+9.1 \fB\ea\fR Non-interpreted leader character
+12.3 \fB\eb\fI\'abc...\|\'\fR Bracket building function
+4.2 \fB\ec\fR Interrupt text processing
+11.1 \fB\ed\fR Forward (down) 1\(sl2\|em vertical motion (1\(sl2 line in \*(NR)
+2.2 \fB\ef\fIx\fR,\fB\ef(\fIxx\fR,\fB\ef\fIN\fR Change to font named \fIx\fR or \fIxx\fR, or position \fIN\fR
+11.1 \fB\eh\fI\'N|\'\fR Local horizontal motion; move right \fIN\fR \fI(negative left)\fR
+11.3 \fB\ek\fIx\fR Mark horizontal \fIinput\fR place in register \fIx\fR
+12.4 \fB\el\fI\|\'Nc\|\'\fR Horizontal line drawing function (optionally with \fIc\fR\|)
+12.4 \fB\eL\fI\'Nc\|\'\fR Vertical line drawing function (optionally with \fIc\fR\|)
+8 \fB\en\fIx\fR,\fB\en(\fIxx\fR Interpolate number register \fIx\fR or \fIxx\fR
+12.1 \fB\eo\fI\'abc...\|\'\fR Overstrike characters \fIa, b, c, ...\fR
+4.1 \fB\ep\fR Break and spread output line
+11.1 \fB\er\fR Reverse 1\|em vertical motion (reverse line in \*(NR)
+2.3 \fB\es\fIN\fR,\|\fB\es\fI\(+-N\fR Point-size change function
+9.1 \fB\et\fR Non-interpreted horizontal tab
+11.1 \fB\eu\fR Reverse (up) 1\(sl2\|em vertical motion (1\(sl2 line in \*(NR)
+11.1 \fB\ev\fI\'N\|\|\'\fR Local vertical motion; move down \fIN\fR \fI(negative up)\fR
+11.2 \fB\ew\fI\'string\|\'\fR Interpolate width of \fIstring\fR
+5.2 \fB\ex\fI\'N\|\|\'\fR Extra line-space function \fI(negative before, positive after)\fR
+12.2 \fB\ez\fIc\fR Print \fIc\fR with zero width (without spacing)
+16 \fB\e{\fR Begin conditional input
+16 \fB\e}\fR End conditional input
+10.7 \fB\e\fR(newline) Concealed (ignored) newline
+- \fB\e\fIX\fR \fIX\fR, any character \fInot\fR listed above
+.TE
+.fi
+.sp
+The escape sequences
+\fB\e\e\fR,
+\fB\e\^.\fR,
+\fB\e"\fR,
+\fB\e$\fR,
+\fB\e\(**\fR,
+\fB\ea\fR,
+\fB\en\fR,
+\fB\et\fR,
+and
+\fB\e\fR(newline) are interpreted in \fIcopy mode\fR (\(sc7.2).
+.bp
+.ft B
+.nf
+Predefined General Number Registers
+.ft
+.TS
+c2l
+c2l2l
+n2l2l.
+.ft I
+.bd I 3
+Section Register
+Reference Name Description
+.ft R
+.bd I
+.xx
+3 \fB%\fR Current page number.
+19 \fBc&\fR Number of \fIlines\fR read from current input file.
+11.2 \fBct\fR Character type (set by \fIwidth\fR function).
+7.4 \fBdl\fR Width (maximum) of last completed diversion.
+7.4 \fBdn\fR Height (vertical size) of last completed diversion.
+- \fBdw\fR Current day of the week (1-7).
+- \fBdy\fR Current day of the month (1-31).
+11.3 \fBhp\fR Current horizontal place on \fIinput\fR line (not in ditroff)
+15 \fBln\fR Output line number.
+- \fBmo\fR Current month (1-12).
+4.1 \fBnl\fR Vertical position of last printed text base-line.
+11.2 \fBsb\fR Depth of string below base line (generated by \fIwidth\fR function).
+11.2 \fBst\fR Height of string above base line (generated by \fIwidth\fR function).
+- \fByr\fR Last two digits of current year.
+.TE
+.sp
+.ft B
+Predefined Read-Only Number Registers
+.ft R
+.TS
+c2l
+c2l2l
+n2l2l.
+.ft I
+.bd I 3
+Section Register
+Reference Name Description
+.ft R
+.bd I
+.xx
+7.3 \fB&$\fR Number of arguments available at the current macro level.
+- \fB&A\fR Set to 1 in \*(TR, if \fB\-a\fR option used; always 1 in \*(NR.
+11.1 \fB&H\fR Available horizontal resolution in basic units.
+5.3 \fB&L\fR Set to current \fIline-spacing\fR (\fBls\fR) parameter
+- \fB&P\fR Set to 1 if the current page is being printed; otherwise 0.
+- \fB&T\fR Set to 1 in \*(NR, if \fB\-T\fR option used; always 0 in \*(TR.
+11.1 \fB&V\fR Available vertical resolution in basic units.
+5.2 \fB&a\fR Post-line extra line-space most recently utilized \
+using \fB\ex\fI\'N\|\'\fR.
+19 \fB&c\fR Number of \fIlines\fR read from current input file.
+7.4 \fB&d\fR Current vertical place in current diversion; equal to \fBnl\fR, if no diversion.
+2.2 \fB&f\fR Current font as physical quadrant (1-4).
+4 \fB&h\fR Text base-line high-water mark on current page or diversion.
+6 \fB&i\fR Current indent.
+4.2 \fB&j\fR Current adjustment mode and type.
+4.1 \fB&k\fR Length of text portion on current partial output line.
+6 \fB&l\fR Current line length.
+4 \fB&n\fR Length of text portion on previous output line.
+3 \fB&o\fR Current page offset.
+3 \fB&p\fR Current page length.
+2.3 \fB&s\fR Current point size.
+7.5 \fB&t\fR Distance to the next trap.
+4.1 \fB&u\fR Equal to 1 in fill mode and 0 in nofill mode.
+5.1 \fB&v\fR Current vertical line spacing.
+11.2 \fB&w\fR Width of previous character.
+- \fB&x\fR Reserved version-dependent register.
+- \fB&y\fR Reserved version-dependent register.
+7.4 \fB&z\fR Name of current diversion.
+.TE
+.in 0
+.fi
+.ps 10
+.vs 12
+.ft R
+.bp
diff --git a/share/doc/usd/21.troff/m1 b/share/doc/usd/21.troff/m1
new file mode 100644
index 0000000..0df1d52
--- /dev/null
+++ b/share/doc/usd/21.troff/m1
@@ -0,0 +1,746 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m1 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.nr p 0 1
+.tr |
+.tr ~|
+.rm mx
+.br
+.ce
+.ft B
+.ps +2
+.rs
+.\".sp1.0i
+REFERENCE MANUAL
+.ft R
+.ps -2
+.sp
+.mh
+General Explanation
+.sc
+Form of input.
+Input consists of \fItext lines\fR, which are destined to be printed,
+interspersed with \fIcontrol lines\fR,
+which set parameters or otherwise control subsequent processing.
+Control lines begin with a \fIcontrol character\fR\(em\
+normally \fB.\fR (period) or \fB\'\fR (acute accent)\(em\
+followed by a one or two character name that specifies
+a basic \fIrequest\fR or the substitution of
+a user-defined \fImacro\fR in place of the control line.
+The control character \fB\'\fR suppresses the \fIbreak\fR function\(em\
+the forced output of a partially filled line\(em\
+caused by certain requests.
+The control character may be separated from the request/macro name by
+white space (spaces and/or tabs) for \(aesthetic reasons.
+Names must be followed by either
+space or newline.
+Control lines with unrecognized names are ignored.
+.pg
+Various special functions may be introduced anywhere in the input by
+means of an \fIescape\fR character, normally \fB\e\fR.
+For example, the function
+\fB\en\fIR\fR
+causes the interpolation (insertion in place) of the contents of the
+\fInumber register R\fR
+in place of the function;
+here \fIR\fR is either a single character name
+as in \fB\en\fIx\fR,
+or left-parenthesis-introduced, two-character name as in \fB\en(\fIxx\fR.
+.sc
+Formatter and device resolution.
+\*(TR internally uses 432 units\(slinch, (for historical reasons, corresponding to
+the Graphic Systems phototypesetter
+which had a horizontal resolution of
+1\(sl432 inch and a vertical resolution
+of 1\(sl144 inch.)
+\*(NR internally uses 240 units\(slinch,
+corresponding to the least common multiple of the
+horizontal and vertical resolutions of various
+typewriter-like output devices.
+\*(TR rounds horizontal\(slvertical numerical parameter input to its own
+internal horizontal\(slvertical resolution.
+\*(NR similarly rounds numerical input to the actual resolution
+of the output device indicated by the \fB\(miT\fR option
+(default Model 37 Teletype).
+.sc
+Numerical parameter input.
+Both \*(NR and \*(TR
+accept numerical input with the scale
+indicator suffixes
+shown in the following table,
+where
+\fIS\fR is the current type size in points,
+\fIV\fR is the current vertical line spacing in
+basic units,
+and
+\fIC\fR is a \fInominal character width\fR in basic units.
+.TS
+center box;
+c|c|ls
+c|c|ll
+c|l|l|l.
+Scale Number of basic units
+Indicator Meaning \*(TR \*(NR
+_
+\fBi\fR Inch 432 240
+\fBc\fR Centimeter 432\(mu50\(sl127 240\(mu50\(sl127
+\fBP\fR Pica = 1\(sl6 inch 72 240\(sl6
+\fBm\fR Em = \fIS\fR points 6\(mu\fIS\fR \fIC\fR
+\fBn\fR En = Em\(sl2 3\(mu\fIS\fR \fIC, same as Em\fR
+\fBp\fR Point = 1\(sl72 inch 6 240\(sl72
+\fBu\fR Basic unit 1 1
+\fBv\fR Vertical line space \fIV\fR \fIV\fR
+none Default, see below
+.TE
+In \*(NR, \fIboth\fR the em and the en are taken to be equal to the \fIC\fR,
+which is output-device dependent;
+common values are 1\(sl10 and 1\(sl12 inch.
+Actual character widths in \*(NR need not be all the same and constructed characters
+such as \(mi> (\(->) are often extra wide.
+The default scaling is ems for the horizontally-oriented requests
+and functions
+\fBll\fR,
+\fBin\fR,
+\fBti\fR,
+\fBta\fR,
+\fBlt\fR,
+\fBpo\fR,
+\fBmc\fR,
+\fB\eh\fR,
+and
+\fB\el\fR;
+\fIV\^\fRs
+for the vertically-oriented requests and functions
+\fBpl\fR,
+\fBwh\fR,
+\fBch\fR,
+\fBdt\fR,
+\fBsp\fR,
+\fBsv\fR,
+\fBne\fR,
+\fBrt\fR,
+\fB\ev\fR,
+\fB\ex\fR,
+and
+\fB\eL\fR;
+\fBp\fR for the \fBvs\fR request;
+and \fBu\fR for the requests
+\fBnr\fR,
+\fBif\fR,
+and
+\fBie\fR.
+\fIAll\fR other requests ignore any scale indicators.
+When a number register containing an already appropriately scaled number
+is interpolated to provide numerical input,
+the unit scale indicator
+\fBu\fR may need to be appended to prevent
+an additional inappropriate default scaling.
+The number, \fIN\fR, may be specified in decimal-fraction form
+but the parameter finally stored is rounded to an integer number of basic units.
+.pg
+The \fIabsolute position\fR indicator \fB~\fR may be prefixed
+to a number \fIN\fR
+to generate the distance to the vertical or horizontal place \fIN\fR.
+For vertically-oriented requests and functions, \fB~\|\fIN\fR
+becomes the distance in basic units from the current vertical place on the page or in a \fIdiversion\fR (\(sc7.4)
+to the vertical place \fIN\fR.
+For \fIall\fR other requests and functions,
+\fB~\|\fIN\fR
+becomes the distance from
+the current horizontal place on the \fIinput\fR line to the horizontal place \fIN\fR.
+For example,
+.x1
+\&\fB.sp ~\|3.2c\fR
+.x2
+will space \fIin the required direction\fR to 3.2 centimeters from the top of the page.
+.sc
+.tr &&
+Numerical expressions.
+Wherever numerical input is expected, an expression involving parentheses,
+the arithmetic operators \fB\(pl\fR, \fB\(mi\fR, \fB\(sl\fR, \fB\(**\fR, \fB%\fR (mod),
+and the logical operators
+\fB<\fR,
+\fB>\fR,
+\fB<\(eq\fR,
+\fB>\(eq\fR,
+\fB\(eq\fR (or \fB\(eq\(eq\fR),
+\fB&\fR\ (and),
+\fB:\fR\ (or)
+may be used.
+Except where controlled by parentheses, evaluation of expressions is left-to-right;
+there is no operator precedence.
+In the case of certain requests, an initial \fB\(pl\fR or \fB\(mi\fR is stripped
+and interpreted as an increment or decrement indicator respectively.
+In the presence of default scaling, the desired scale indicator must be
+attached to \fIevery\fR number in an expression
+for which the desired and default scaling differ.
+For example,
+if the number register \fBx\fR contains 2
+and the current point size is 10,
+then
+.br
+.tr &.
+.x1
+.ft B
+\&.ll (4.25i\(pl\enxP\(pl3)\(sl2u
+.ft R
+.x2
+will set the line length to 1\(sl2 the sum of 4.25 inches \(pl 2 picas \(pl 30 points.
+.sc
+Notation.
+Numerical parameters are indicated in this manual in two ways.
+\(+-\fIN\fR means that the argument may take the forms \fIN\fR, \(pl\fIN\fR, or \(mi\fIN\fR and
+that the corresponding effect is to set the affected parameter
+to \fIN\fR, to increment it by \fIN\fR, or to decrement it by \fIN\fR respectively.
+Plain \fIN\fR means that an initial algebraic sign is \fInot\fR
+an increment indicator,
+but merely the sign of \fIN\fR.
+Generally, unreasonable numerical input is either ignored
+or truncated to a reasonable value.
+For example,
+most requests expect to set parameters to non-negative
+values;
+exceptions are
+\fBsp\fR,
+\fBwh\fR,
+\fBch\fR,
+\fBnr\fR,
+and
+\fBif\fR.
+The requests
+\fBps\fR,
+\fBft\fR,
+\fBpo\fR,
+\fBvs\fR,
+\fBls\fR,
+\fBll\fR,
+\fBin\fR,
+and
+\fBlt\fR
+restore the \fIprevious\fR parameter value in the \fIabsence\fR
+of an argument.
+.pg
+Single character arguments are indicated by single lower case letters
+and
+one/two character arguments are indicated by a pair of lower case letters.
+Character string arguments are indicated by multi-character mnemonics.
+.mh
+Font and Character Size Control
+.sc
+Character set.
+The \*(TR character set consists of a typesetter-dependent basic
+character set plus a Special Mathematical Font character
+set\(emeach having 102 characters.
+An example of these character sets is shown in the Appendix Table|I.
+All printable \s-1ASCII\s+1 characters are included,
+with some on the Special Font.
+With three exceptions, these \s-1ASCII\s+1 characters are input as themselves,
+and non-\s-1ASCII\s+1 characters are input in the form \fB\e(\fIxx\fR where
+\fIxx\fR is a two-character name given in the Appendix Table|II.
+The three \s-1ASCII\s+1 exceptions are mapped as follows:
+.TS
+center box;
+cs|cs
+cc|cc
+cl|cl.
+\s-1ASCII\s+1 Input Printed by \*(TR
+Character Name Character Name
+_
+\' acute accent ' close quote
+\` grave accent ` open quote
+\(mi minus - hyphen
+.TE
+.tr ~~
+The characters
+\fB\'\fR,
+\fB\`\fR,
+and
+\fB\-\fR
+may be input
+by \fB\e\'\fR, \fB\e\`\fR, and \fB\e\-\fR respectively or by their names (Table II).
+The \s-1ASCII\s+1 characters \fB@\fR, \fB#\fR, \fB"\fR, \fB\(aa\fR, \fB\(ga\fR, \fB<\fR, \fB>\fR, \fB\e\fR, \fB{\fR, \fB}\fR, \fB~\fR, \fB^\fR, and \fB\(ul\fR exist
+only on the Special Font and are printed as a 1-em space if that font
+is not mounted.
+.pg
+.tr ~|
+\*(NR understands the entire \*(TR character set,
+but can in general print only \s-1ASCII\s+1
+characters,
+additional characters as may be available on
+the output device,
+such characters as may be able to be constructed
+by overstriking or other combination,
+and those that can reasonably be mapped
+into other printable characters.
+The exact behavior is determined by a driving
+table prepared for each device.
+The characters
+\fB\'\fR,
+\fB\`\fR,
+and
+\fB\(ul\fR
+print
+as themselves.
+.sc
+Fonts.
+The default mounted fonts are
+Times Roman (\fBR\fR),
+Times Italic (\fBI\fR),
+Times Bold (\fBB\fR),
+and the Special Mathematical Font (\fBS\fR)
+on physical typesetter positions 1, 2, 3, and 4 respectively.
+These fonts are used in this document.
+The \fIcurrent\fR font, initially Roman, may be changed
+(among the mounted fonts)
+by use of the \fBft\fR request,
+or by imbedding at any desired point
+either \fB\ef\fIx\fR, \fB\ef(\fIxx\fR, or \fB\ef\fIN\fR
+where
+\fIx\fR and \fIxx\fR are the name of a mounted font
+and \fIN\fR is a numerical font position.
+It is \fInot\fR necessary to change to the Special Font;
+characters on that font are automatically handled.
+A request for a named but not-mounted font is \fIignored\fR.
+\*(TR can be informed that any particular font is mounted
+by use of the \fBfp\fR request.
+The list of known fonts is installation dependent.
+In the subsequent discussion of font-related requests,
+\fIF\fR represents either a one\(sltwo-character
+font name or the numerical font position, 1-4.
+The current font is available (as numerical position) in the read-only number register \fB.f\fR.
+.pg
+\*(NR understands font control
+and normally underlines Italic characters (see \(sc10.5).
+.sc
+Character size.
+Character point sizes available are typesetter dependent, but often include
+6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 28, and 36.
+This is a range of 1\(sl12 inch to 1\(sl2 inch.
+The \fBps\fR request is used to change or restore the point size.
+Alternatively the point size may be changed between any two characters
+by imbedding a \fB\es\fIN\fR
+at the desired point
+to set the size to \fIN\fR,
+or a \fB\es\fI\(+-N\fR (1\(<=\fIN\fR\(<=9)
+to increment\(sldecrement the size by \fIN\fR;
+\fB\es0\fR restores the \fIprevious\fR size.
+Requested point size values that are between two valid
+sizes yield the larger of the two.
+The current size is available in the \fB.s\fR register.
+\*(NR ignores type size control.
+.h1 *
+.fn
+.xx
+*Notes are explained at the end of the Summary and Index above.
+.ef
+.bt
+\fB&ps\fI|\(+-N\fR 10\|point previous E Point size
+set to \(+-\fIN\fR.
+Alternatively imbed \fB\es\fIN\fR or \fB\es\fI\(+-N\fR.
+Any positive size value may be requested;
+if invalid, the next larger valid size will result, with a
+maximum of 36.
+A paired sequence
+\(pl\fIN\fR,\|\(mi\fIN\fR
+will work because the previous requested value is also remembered.
+Ignored in \*(NR.
+.bt
+\fB&fz\fI|F|\(+-N\fR off - E The characters in font \fIF\fR will be adjusted to
+be in size \(+-\fIN\fR. Characters in the Special Font encountered during the
+use of font \fIF\fR will have the same size modification. (Use the \fB&fz S\fR
+request if different treatment of Special Font characters is required). \fB&fz\fR
+must follow any \fB&fp\fR request for the position.
+.bt
+\fB&fz|S|\fIF|\(+-N\fR off - E The characters in the Special Font
+will be in size \(+-\fIN\fR independent of previous \fB&fz\fR requests.
+.bt
+\fB&ss\fI|N\fR 12\(sl36\|em ignored E Space-character size
+is set to \fIN\fR\(sl36\|ems.
+This size is the minimum word spacing in adjusted text.
+Ignored in \*(NR.
+.bt
+\fB&cs|\fIF\|N\|M\fR off - P Constant character space
+(width) mode is
+set on for font \fIF\fR (if mounted); the width of every character will be
+taken to be \fIN\fR\(sl36 ems.
+If \fIM\fR is absent,
+the em is that of the character's point size;
+if \fIM\fR is given,
+the em is \fIM\fR-points.
+All affected characters
+are centered in this space, including those with an actual width
+larger than this space.
+Special Font characters occurring while the current font
+is \fIF\fR are also so treated.
+If \fIN\fR is absent, the mode is turned off.
+The mode must be still or again in effect when the characters are physically printed.
+Ignored in \*(NR.
+.bt
+\fB&bd\fI|F|N\fR off - P The characters in font \fIF\fR will be artificially
+emboldened by printing each one twice, separated by \fIN\fR\^\(mi1 basic units.
+A reasonable value for \fIN\fR is 3 when the character size is in the vicinity
+of 10 points.
+If \fIN\fR is missing the embolden mode is turned off.
+The column heads above were printed with \fB.bd|I|3\fR.
+The mode must be still or again in effect when the characters are physically printed.
+Ignored in \*(NR.
+.bt
+\fB&bd|S|\fIF|N\fR off - P The characters in the Special Font
+will be emboldened whenever the current font is \fIF\fR.
+This manual was printed with \fB.bd\|S\|B\|3\fR.
+The mode must be still or again in effect when the characters are physically printed.
+.bt
+\fB&ft|\fIF\fR Roman previous E Font changed to
+\fIF\fR.
+Alternatively, imbed \fB\ef\fIF\fR.
+The font name \fBP\fR is reserved to mean the previous font.
+.bt
+\fB&fp|\fIN|F\fR R,I,B,S ignored - Font position.
+This is a statement
+that a font named \fIF\fR is mounted on position \fIN\fR (1-4).
+It is a fatal error if \fIF\fR is not known.
+The phototypesetter has four fonts physically mounted.
+Each font consists of a film strip which can be mounted on a numbered
+quadrant of a wheel.
+The default mounting sequence assumed by \*(TR is
+R, I, B, and S on positions 1, 2, 3 and 4.
+.mh
+Page control
+.pg
+Top and bottom margins are \fInot\fR automatically provided;
+it is conventional to define two \fImacros\fR and to set \fItraps\fR
+for them at vertical positions 0 (top) and \fI\(miN\fR (\fIN\fR from the bottom).
+See \(sc7 and Tutorial Examples \(scT2.
+A pseudo-page transition onto the \fIfirst\fR page occurs
+either when the first \fIbreak\fR occurs or
+when the first \fInon-diverted\fR text processing occurs.
+Arrangements
+for a trap to occur at the top of the first page
+must be completed before this transition.
+In the following, references to the \fIcurrent diversion\fR (\(sc7.4)
+mean that the mechanism being described works during both
+ordinary and diverted output (the former considered as the top diversion level).
+.pg
+The usable page width on the Graphic Systems phototypesetter
+was about 7.54|inches,
+beginning about 1\(sl27|inch from the left edge of the
+8|inch wide, continuous roll paper, but these characteristics are typesetter-
+dependent.
+The physical limitations on \*(NR output
+are output-device dependent.
+.h1
+.bt
+\fB&pl\fI|\(+-N\fR 11\|in 11\|in \fBv\fR Page length set to \fI\(+-N\fR.
+The internal limitation is about 75|inches in \*(TR and
+about 136|inches in \*(NR.
+The current page length is available in the \fB.p\fR register.
+.bt
+\fB&bp\fI|\(+-N\fR \fIN\(eq\fR1 - B*,\fBv\fR Begin page.
+.fn
+.xx
+*The use of "\ \fB\'\fR\ " as control character (instead of "\fB.\fR")
+suppresses the break function.
+.ef
+The current page is ejected and a new page is begun.
+If \fI\(+-N\fR is given, the new page number will be \fI\(+-N\fR.
+Also see request \fBns\fR.
+.bt
+\fB&pn\fI|\(+-N\fR \fIN\fR\(eq1 ignored - Page number.
+The next page (when it occurs) will have the page number \fI\(+-N\fR.
+A \fBpn\fR must occur before the initial pseudo-page transition
+to affect the page number of the first page.
+The current page number is in the \fB%\fR register.
+.bt
+\fB&po\fI|\(+-N\fR 0;|26\(sl27\|in\(dg previous \fBv\fR Page offset.
+.fn
+.xx
+\(dgValues separated by ";" are for \*(NR and \*(TR respectively.
+.ef
+The current \fIleft margin\fR is set to \fI\(+-N\fR.
+The \*(TR initial value provides about 1|inch of paper margin
+including the physical typesetter margin of 1\(sl27|inch.
+In \*(TR the maximum (line-length)+(page-offset) is about 7.54 inches.
+See \(sc6.
+The current page offset is available in the \fB.o\fR register.
+.bt
+\fB&ne\fI|N\fR - \fIN\(eq\fR1\|\fIV\fR D,\fBv\fR Need \fIN\fR vertical space.
+If the distance, \fID\fR, to the next trap position (see \(sc7.5) is less than \fIN\fR,
+a forward vertical space of size \fID\fR occurs,
+which will spring the trap.
+If there are no remaining
+traps on the page,
+\fID\fR is the distance to the bottom of the page.
+If \fID\|<\|V\fR, another line could still be output
+and spring the trap.
+In a diversion, \fID\fR is the distance to the \fIdiversion trap\fR, if any,
+or is very large.
+.bt
+\fB&mk\fI|R\fR none internal D Mark the \fIcurrent\fR vertical place
+in an internal register (both associated with the current diversion level),
+or in register \fIR\fR, if given.
+See \fBrt\fR request.
+.bt
+\fB&rt\fI|\(+-N\fR none internal D,\fBv\fR Return \fIupward only\fR to a marked vertical place
+in the current diversion.
+If \fI\(+-N\fR (w.r.t. current place) is given,
+the place is \fI\(+-N\fR from the top of the page or diversion
+or, if \fIN\fR is absent, to a
+place marked by a previous \fBmk\fR.
+Note that the \fBsp\fR request (\(sc5.3) may be used
+in all cases instead of \fBrt\fR
+by spacing to the absolute place stored in an explicit register;
+e.|g. using the sequence \fB.mk|\fIR\fR ... \fB.sp|~\|\en\fIR\fBu\fR.
+.mh
+Text Filling, Adjusting, and Centering
+.sc
+Filling and adjusting.
+Normally,
+words are collected from input text lines
+and assembled into an output text line
+until some word doesn't fit.
+An attempt is then made
+to hyphenate the word to assemble a part
+of it into the output line.
+The spaces between the words on the output line
+are then increased to spread out the line
+to the current \fIline length\fR
+minus any current \fIindent\fR.
+A \fIword\fR is any string of characters delimited by
+the \fIspace\fR character or the beginning/end of the input line.
+Any adjacent pair of words that must be kept together
+(neither split across output lines nor spread apart
+in the adjustment process)
+can be tied together by separating them with the
+\fIunpaddable space\fR character
+"\fB\e\ \ \fR" (backslash-space).
+The adjusted word spacings are uniform in \*(TR
+and the minimum interword spacing can be controlled
+with the \fBss\fR request (\(sc2).
+In \*(NR, they are normally nonuniform because of
+quantization to character-size spaces;
+however,
+the command line option \fB\-e\fR causes uniform
+spacing with full output device resolution.
+Filling, adjustment, and hyphenation (\(sc13) can all be
+prevented or controlled.
+The \fItext length\fR on the last line output is available in the \fB.n\fR register,
+and text base-line position on the page for this line is in the \fBnl\fR register.
+The text base-line high-water mark (lowest place) on the current page is in
+the \fB.h\fR register. The \fB.k\fR register (read-only) contains the horizontal size of
+the text portion (without indent) of the current partially-collected output
+line (if any) in the current environment.
+.pg
+An input text line ending with \fB.\fR\^, \fB?\fR, or \fB!\fR is taken
+to be the end of a \fIsentence\fR, and an additional space character is
+automatically provided during filling.
+Multiple inter-word space characters found in the input are retained,
+except for trailing spaces;
+initial spaces also cause a \fIbreak\fR.
+.pg
+When filling is in effect, a \fB\ep\fR may be imbedded or attached to a word to
+cause a \fIbreak\fR at the \fIend\fR of the word and have the resulting output
+line \fIspread out\fR to fill the current line length.
+.pg
+.tr &&
+A text input line that happens to begin
+with a control character (\(sc10.4) can
+be made to not look like a control line
+by preceding it by
+the non-printing, zero-width filler character \fB\e&\fR.
+Still another way is to specify output translation of some
+convenient character into the control character
+using \fBtr\fR (\(sc10.5).
+.tr &.
+.sc
+Interrupted text.
+The copying of an input line in \fInofill\fR
+(non-fill) mode can be \fIinterrupted\fR by terminating
+the partial line with a \fB\ec\fR.
+The \fInext\fR encountered input text line will be considered to be a continuation
+of the same line of input text.
+Similarly,
+a word within \fIfilled\fR text may be interrupted by terminating the
+word (and line) with \fB\ec\fR;
+the next encountered text will be taken as a continuation of the
+interrupted word.
+If the intervening control lines cause a break,
+any partial line will be forced out along with any partial word.
+.h1
+.bt
+\fB&br\fR - - B Break.
+The filling of the line currently
+being collected is stopped and
+the line is output without adjustment.
+Text lines beginning with space characters
+and empty text lines (blank lines) also cause a break.
+.bt
+.lg 0
+\fB&fi\fR \(fill|on - B,E Fill subsequent output lines.
+.lg
+The register \fB.u\fR is 1 in fill mode and 0 in nofill mode.
+.bt
+\fB&nf\fR fill|on - B,E Nofill.
+Subsequent output lines are \fIneither\fR filled \fInor\fR adjusted.
+Input text lines are copied directly to output lines
+\fIwithout regard\fR for the current line length.
+.bt
+\fB&ad\fI|c\fR adj,both adjust E \
+Line adjustment is begun.
+If fill mode is not on, adjustment will be deferred until
+fill mode is back on.
+If the type indicator \fIc\fR is present,
+the adjustment type is changed as shown in the following table.
+The type indicator can also be a value saved from the read-only \fB.j\fR number
+register, which is set to contain the current adjustment mode and type.
+.TS
+center box;
+c|c
+c|l.
+Indicator Adjust Type
+_
+\fBl\fR adjust left margin only
+\fBr\fR adjust right margin only
+\fBc\fR center
+\fBb\fR or \fBn\fR adjust both margins
+absent unchanged
+.TE
+.bt
+\fB&na\fR adjust - E Noadjust.
+Adjustment is turned off;
+the right margin will be ragged.
+The adjustment type for \fBad\fR is not changed.
+Output line filling still occurs if fill mode is on.
+.bt
+\fB&ce\fI|N\fR off \fIN\fR\(eq1 B,E Center the next \fIN\fR input text lines
+within the current (line-length minus indent).
+If \fIN\fR\(eq\^0, any residual count is cleared.
+A break occurs after each of the \fIN\fR input lines.
+If the input line is too long,
+it will be left adjusted.
+.mh
+Vertical Spacing
+.sc
+Base-line spacing.
+The vertical spacing \fI(V)\fR between the base-lines of successive
+output lines can be set
+using the \fBvs\fR request
+with a resolution of 1\(sl144\|inch\|\(eq\|1\(sl2|point
+in \*(TR,
+and to the output device resolution in \*(NR.
+\fIV\fR must be large enough to accommodate the character sizes
+on the affected output lines.
+For the common type sizes (9-12 points),
+usual typesetting practice is to set \fIV\fR to 2\ points greater than the
+point size;
+\*(TR default is 10-point type on a 12-point spacing
+(as in this document).
+The current \fIV\fR is available in the \fB.v\fR register.
+Multiple-\fIV\|\fR line separation (e.\|g. double spacing) may be requested
+with \fBls\fR.
+.sc
+Extra line-space.
+If a word contains a vertically tall construct requiring
+the output line containing it to have extra vertical space
+before and\(slor after it,
+the \fIextra-line-space\fR function \fB\ex\fI\'N\|\|\'\fR
+can be imbedded in or attached to that word.
+In this and other functions having a pair of delimiters around
+their parameter (here \fB\'\fR\|),
+the delimiter choice is arbitrary,
+except that it can't look like the continuation of a number expression for \fIN\fR.
+If \fIN\fR is negative,
+the output line containing the word will
+be preceded by \fIN\fR extra vertical space;
+if \fIN\fR is positive,
+the output line containing the word
+will be followed by \fIN\fR extra vertical space.
+If successive requests for extra space apply to the same line,
+the maximum values are used.
+The most recently utilized post-line extra line-space is available in the \fB.a\fR register.
+.sc
+Blocks of vertical space.
+A block of vertical space is ordinarily requested using \fBsp\fR,
+which honors the \fIno-space\fR mode and which does
+not space \fIpast\fR a trap.
+A contiguous block of vertical space may be reserved using \fBsv\fR.
+.h1
+.bt
+\fB&vs\fI|N\fR 1\(sl6in;12pts previous E,\fBp\fR Set vertical base-line spacing size \fIV\fR.
+Transient \fIextra\fR vertical space available with \fB\ex\fI\'N\|\|\'\fR (see above).
+.bt
+\fB&ls\fI|N\fR \fIN\(eq\^\fR1 previous E \fILine\fR spacing
+set to \fI\(+-N\fR.
+\fIN\(mi\fR1 \fIV\fR\^s \fI(blank lines)\fR are
+appended to each output text line. The (read-only) number register \fB.L\fR
+is set to contain the current line-spacing value.
+Appended blank lines are omitted, if the text or previous appended blank line reached a trap position.
+.bt
+\fB&sp\fI|N\fR - \fIN\fR\(eq1\fIV\fR B,\fBv\fR Space vertically in \fIeither\fR direction.
+If \fIN\fR is negative, the motion is \fIbackward\fR (upward)
+and is limited to the distance to the top of the page.
+Forward (downward) motion is truncated to the distance to the
+nearest trap.
+If the no-space mode is on,
+no spacing occurs (see \fBns\fR, and \fBrs\fR below).
+.bt
+\fB&sv\fI|N\fR - \fIN\(eq\fR1\fIV\fR \fBv\fR Save a contiguous vertical block of size \fIN\fR.
+If the distance to the next trap is greater
+than \fIN\fR, \fIN\fR vertical space is output.
+No-space mode has \fIno\fR effect.
+If this distance is less than \fIN\fR,
+no vertical space is immediately output,
+but \fIN\fR is remembered for later output (see \fBos\fR).
+Subsequent \fBsv\fR requests will overwrite any still remembered \fIN\fR.
+.bt
+\fB&os\fR - - - Output saved vertical space.
+No-space mode has \fIno\fR effect.
+Used to finally output a block of vertical space requested
+by an earlier \fBsv\fR request.
+.bt
+\fB&ns\fR space - D No-space mode turned on.
+When on, the no-space mode inhibits \fBsp\fR requests and
+\fBbp\fR requests \fIwithout\fR a next page number.
+The no-space mode is turned off when a line of
+output occurs, or with \fBrs\fR.
+.bt
+\fB&rs\fR space - D Restore spacing.
+The no-space mode is turned off.
+.bt
+Blank|text|line. - B Causes a break and
+outputs a blank line just like \fBsp|1\fR.
diff --git a/share/doc/usd/21.troff/m2 b/share/doc/usd/21.troff/m2
new file mode 100644
index 0000000..b94f478
--- /dev/null
+++ b/share/doc/usd/21.troff/m2
@@ -0,0 +1,400 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m2 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.tr |
+.rm mx
+.br
+.mh
+Line Length and Indenting
+.pg
+The maximum line length for fill mode may be set with \fBll\fR.
+The indent may be set with \fBin\fR;
+an indent applicable to \fIonly\fR the \fInext\fR output line may be set with \fBti\fR.
+The line length includes indent space but \fInot\fR
+page offset space.
+The line-length minus the indent is the basis for centering with \fBce\fR.
+The effect of \fBll\fR, \fBin\fR, or \fBti\fR
+is delayed, if a partially collected line exists,
+until after that line is output.
+In fill mode the length of text on an output line is less than or equal to
+the line length minus the indent.
+The current line length and indent are available in registers \fB.l\fR and \fB.i\fR respectively.
+The length of \fIthree-part titles\fR produced by \fBtl\fR
+(see \(sc14) is \fIindependently\fR set by \fBlt\fR.
+.h1
+.bt
+\fB&ll\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Line length is set to \(+-\fIN\fR.
+In \*(TR the maximum (line-length)+(page-offset) is about 7.54 inches.
+.bt
+\fB&in\fI|\(+-N\fR \fIN\(eq\^\fR0 previous B,E,\fBm\fR Indent is set to \fI\(+-N\fR.
+The indent is prepended to each output line.
+.bt
+\fB&ti\fI|\(+-N\fR - ignored B,E,\fBm\fR Temporary indent.
+The \fInext\fR output text line will be indented a distance \fI\(+-N\fR
+with respect to the current indent.
+The resulting total indent may not be negative.
+The current indent is not changed.
+.mh
+Macros, Strings, Diversion, and Position Traps
+.sc
+Macros and strings.
+A \fImacro\fR is a named set of arbitrary \fIlines\fR that may be invoked by name or
+with a \fItrap\fR.
+A \fIstring\fR is a named string of \fIcharacters\fR,
+\fInot\fR including a newline character,
+that may be interpolated by name at any point.
+Request, macro, and string names share the \fIsame\fR name list.
+Macro and string names
+may be one or two characters long and may usurp previously defined
+request, macro, or string names.
+Any of these entities may be renamed with \fBrn\fR
+or removed with \fBrm\fR.
+Macros are created by \fBde\fR and \fBdi\fR, and appended to by \fBam\fR and \fBda\fR;
+\fBdi\fR and \fBda\fR cause normal output to be stored in a macro.
+Strings are created by \fBds\fR and appended to by \fBas\fR.
+A macro is invoked in the same way as a request;
+a control line beginning \fB.\fIxx\fR will interpolate the contents of macro \fIxx\fR.
+The remainder of the line may contain up to nine \fIarguments\fR.
+The strings \fIx\fR and \fIxx\fR are interpolated at any desired point with
+\fB\e\(**\fIx\fR and \fB\e\(**(\fIxx\fR respectively.
+String references and macro invocations may be nested.
+.sc
+Copy mode input interpretation.
+During the definition and extension
+of strings and macros (not by diversion)
+the input is read in \fIcopy mode\fR.
+The input is copied without interpretation
+\fIexcept\fR that:
+.x1
+.ds + \v'-.1m'\s-4\(bu\s+4\v'+.1m'
+\(bu The contents of number registers indicated by \fB\en\fR are interpolated.
+\(bu Strings indicated by \fB\e\(**\fR are interpolated.
+\(bu Arguments indicated by \fB\e$\fR are interpolated.
+\(bu Concealed newlines indicated by \fB\e\fR(newline) are eliminated.
+\(bu Comments indicated by \fB\e"\fR are eliminated.
+\(bu \fB\et\fR and \fB\ea\fR are interpreted as \s-1ASCII\s+1 horizontal tab and \s-1SOH\s+1 respectively (\(sc9).
+\(bu \fB\e\e\fR is interpreted as \fB\e\fR.
+\(bu \fB\e.\fR is interpreted as "\fB.\fR".
+.x2
+These interpretations can be suppressed by
+prepending
+a \fB\e\fR.
+For example, since \fB\e\e\fR maps into a \fB\e\fR, \fB\e\en\fR will copy as \fB\en\fR which
+will be interpreted as a number register indicator when the
+macro or string is reread.
+.sc
+Arguments.
+When a macro is invoked by name, the remainder of the line is
+taken to contain up to nine arguments.
+The argument separator is the space character, and arguments
+may be surrounded by double-quotes to permit imbedded space characters.
+Pairs of double-quotes may be imbedded in double-quoted arguments to
+represent a single double-quote.
+If the desired arguments won't fit on a line,
+a concealed newline may be used to continue on the next line.
+.pg
+When a macro is invoked the \fIinput level\fR is \fIpushed down\fR and
+any arguments available at the previous level become unavailable
+until the macro is completely read and the previous level is restored.
+A macro's own arguments can be interpolated at \fIany\fR point
+within the macro with \fB\e$\fIN\fR, which interpolates the \fIN\fR\^th
+argument
+(1\(<=\fIN\fR\^\(<=9).
+If an invoked argument doesn't exist,
+a null string results.
+For example, the macro \fIxx\fR may be defined by
+.x1
+.ft B
+.ta .75i
+&de xx \e"begin definition
+Today is \e\e$1 the \e\e$2.
+&. \e"end definition
+.ft R
+.x2
+and called by
+.x1
+.ft B
+&xx Monday 14th
+.ft R
+.x2
+to produce the text
+.x1
+.ft B
+Today is Monday the 14th.
+.ft R
+.x2
+Note that the \fB\e$\fR
+was concealed in the definition with a prepended \fB\e\fR.
+The number of currently available
+arguments is in the \fB.$\fR register.
+.pg
+No arguments are available at the top (non-macro) level
+in this implementation.
+Because string referencing is implemented
+as an input-level push down,
+no arguments are available from \fIwithin\fR a string.
+No arguments are available within a trap-invoked macro.
+.pg
+Arguments are copied in \fIcopy mode\fR onto a stack
+where they are available for reference.
+The mechanism does not allow an argument to contain
+a direct reference to a \fIlong\fR string
+(interpolated at copy time) and it is advisable to
+conceal string references (with an extra \fB\e\fR\|)
+to delay interpolation until argument reference time.
+.sc
+Diversions.
+Processed output may be diverted into a macro for purposes
+such as footnote processing (see Tutorial \(scT5)
+or determining the horizontal and vertical size of some text for
+conditional changing of pages or columns.
+A single diversion trap may be set at a specified vertical position.
+The number registers \fBdn\fR and \fBdl\fR respectively contain the
+vertical and horizontal size of the most
+recently ended diversion.
+Processed text that is diverted into a macro
+retains the vertical size of each of its lines when reread
+in \fInofill\fR mode
+regardless of the current \fIV\fR.
+Constant-spaced (\fBcs\fR) or emboldened (\fBbd\fR) text that is diverted
+can be reread correctly only if these modes are again or still in effect
+at reread time.
+One way to do this is to imbed in the diversion the appropriate
+\fBcs\fR or \fBbd\fR requests with the \fItransparent\fR
+mechanism described in \(sc10.6.
+.pg
+Diversions may be nested
+and certain parameters and registers
+are associated
+with the current diversion level
+(the top non-diversion level may be thought of as the
+0th diversion level).
+These are the diversion trap and associated macro,
+no-space mode,
+the internally-saved marked place (see \fBmk\fR and \fBrt\fR),
+the current vertical place (\fB.d\fR register),
+the current high-water text base-line (\fB.h\fR register),
+and the current diversion name (\fB.z\fR register).
+.sc
+Traps.
+Three types of trap mechanisms are available\(empage traps, a diversion trap, and
+an input-line-count trap.
+Macro-invocation traps may be planted using \fBwh\fR at any page position including the top.
+This trap position may be changed using \fBch\fR.
+Trap positions at or below the bottom of the page
+have no effect unless or until
+moved to within the page or rendered effective by an increase in page length.
+Two traps may be planted at the \fIsame\fR position only by first planting them at different
+positions and then moving one of the traps;
+the first planted trap will conceal the second unless and until the first one is moved
+(see Tutorial Examples \(scT5).
+If the first one is moved back, it again conceals the second trap.
+The macro associated with a page trap is automatically
+invoked when a line of text is output whose vertical size \fIreaches\fR
+or \fIsweeps past\fR the trap position.
+Reaching the bottom of a page springs the top-of-page trap, if any,
+provided there is a next page.
+The distance to the next trap position is available in the \fB.t\fR register;
+if there are no traps between the current position and the bottom of the page,
+the distance returned is the distance to the page bottom.
+.pg
+A macro-invocation trap effective in the current diversion may be planted using \fBdt\fR.
+The \fB.t\fR register works in a diversion; if there is no subsequent trap a \fIlarge\fR
+distance is returned.
+For a description of input-line-count traps, see the \fBit\fR request below.
+.h1
+.bt
+\fB&de\fI|xx|yy\fR - \fI.yy=\fB..\fR - Define or redefine the macro \fIxx\fR.
+The contents of the macro begin on the next input line.
+Input lines are copied in \fIcopy mode\fR until the definition is terminated by a
+line beginning with \fB.\fIyy\fR,
+whereupon the macro \fIyy\fR is called.
+In the absence of \fIyy\fR, the definition
+is terminated by a
+line beginning with "\fB..\fR".
+A macro may contain \fBde\fR requests
+provided the terminating macros differ
+or the contained definition terminator is concealed.
+\&"\fB..\fR" can be concealed as
+\fB\e\e..\fR which will copy as \fB\e..\fR and be reread as "\fB..\fR".
+.bt
+\fB&am\fI|xx|yy\fR - \fI.yy=\fB..\fR - Append to macro (append version of \fBde\fR).
+.bt
+\fB&ds\fI|xx|string\fR - ignored - Define a string
+\fIxx\fR containing \fIstring\fR.
+Any initial double-quote in \fIstring\fR is stripped off to permit
+initial blanks.
+.bt
+\fB&as\fI|xx|string\fR - ignored - Append
+\fIstring\fR to string \fIxx\fR
+(append version of \fBds\fR).
+.bt
+\fB&rm\fI|xx\fR - ignored - Remove
+request, macro, or string.
+The name \fIxx\fR is removed from the name list and
+any related storage space is freed.
+Subsequent references will have no effect.
+.bt
+\fB&rn\fI|xx|yy\fR - ignored - Rename request, macro, or string
+\fIxx\fR to \fIyy\fR.
+If \fIyy\fR exists, it is first removed.
+.bt
+\fB&di|\fIxx\fR - end D Divert output to macro \fIxx\fR.
+Normal text processing occurs during diversion
+except that page offsetting is not done.
+The diversion ends when the request \fBdi\fR or \fBda\fR is encountered without an argument;
+extraneous
+requests of this type should not appear when nested diversions are being used.
+.bt
+\fB&da|\fIxx\fR - end D Divert, appending to \fIxx\fR
+(append version of \fBdi\fR).
+.bt
+\fB&wh\fI|N|xx\fR - - \fBv\fR Install
+a trap to invoke \fIxx\fR at page position \fIN;\fR
+a \fInegative N\fR will be interpreted with respect to the
+page \fIbottom\fR.
+Any macro previously planted at \fIN\fR is replaced by \fIxx\fR.
+A zero \fIN\fR refers to the \fItop\fR of a page.
+In the absence of \fIxx\fR, the first found trap at \fIN\fR, if any, is removed.
+.bt
+\fB&ch\fI|xx|N\fR - - \fBv\fR Change
+the trap position for macro \fIxx\fR to be \fIN\fR.
+In the absence of \fIN\fR, the trap, if any, is removed.
+.bt
+\fB&dt\fI|N|xx\fR - off D,\fBv\fR Install a diversion trap
+at position \fIN\fR in the \fIcurrent\fR diversion to invoke
+macro \fIxx\fR.
+Another \fBdt\fR will redefine the diversion trap.
+If no arguments are given, the diversion trap is removed.
+.bt
+\fB&it\fI|N|xx\fR - off E Set an input-line-count trap
+to invoke the macro \fIxx\fR after \fIN\fR lines of \fItext\fR input
+have been read
+(control or request lines don't count).
+The text may be in-line text or
+text interpolated by inline or trap-invoked macros.
+.bt
+\fB&em\fI|xx\fR none none - The
+macro \fIxx\fR will be invoked
+when all input has ended.
+The effect is the same as if the contents of \fIxx\fR had been at the end
+of the last file processed.
+.mh
+Number Registers
+.pg
+A variety of parameters are available to the user as
+predefined, named \fInumber registers\fR (see Summary and Index, page 7).
+In addition, the user may define his own named registers.
+Register names are one or two characters long and \fIdo not\fR conflict
+with request, macro, or string names.
+Except for certain predefined read-only registers,
+a number register can be read, written, automatically
+incremented or decremented, and interpolated
+into the input in a variety of formats.
+One common use of user-defined registers is to
+automatically number sections, paragraphs, lines, etc.
+A number register may be used any time numerical input is expected or desired
+and may be used in numerical \fIexpressions\fR (\(sc1.4).
+.pg
+Number registers are created and modified using \fBnr\fR, which
+specifies the name, numerical value, and the auto-increment size.
+Registers are also modified, if accessed
+with an auto-incrementing sequence.
+If the registers \fIx\fR and \fIxx\fR both contain
+\fIN\fR and have the auto-increment size \fIM\fR,
+the following access sequences have the effect shown:
+.TS
+center box;
+c2|c2|c
+c2|c2|c
+l2|c2|c
+l2|c2|c
+l2|l2|c.
+ Effect on Value
+Sequence Register Interpolated
+_
+\fB\en\fIx\fR none \fIN\fR
+\fB\en(\fIxx\fR none \fIN\fR
+\fB\en+\fIx\fR \fIx\fR incremented by \fIM\fR \fIN+M\fR
+\fB\en\-\fIx\fR \fIx\fR decremented by \fIM\fR \fIN\-M\fR
+\fB\en+(\fIxx\fR \fIxx\fR incremented by \fIM\fR \fIN+M\fR
+\fB\en\-(\fIxx\fR \fIxx\fR decremented by \fIM\fR \fIN\-M\fR
+.TE
+When interpolated, a number register is converted to
+decimal (default),
+decimal with leading zeros,
+lower-case Roman,
+upper-case Roman,
+lower-case sequential alphabetic,
+or
+upper-case sequential alphabetic
+according to the format specified by \fBaf\fR.
+.h1
+.bt
+\fB&nr\fI|R|\(+-N|M\fR - - \fBu\fR \
+The number register \fIR\fR is assigned the value \fI\(+-N\fR
+with respect to the previous value, if any.
+The increment for auto-incrementing is set to \fIM\fR.
+.bt
+\fB&af\fI|R|c\fR arabic - - Assign format \fIc\fR to register \fIR\fR.
+The available formats are:
+.TS
+center box;
+c2|c
+c2|c
+c2|l.
+ Numbering
+Format Sequence
+_
+\fB1\fR 0,1,2,3,4,5,...
+\fB001\fR 000,001,002,003,004,005,...
+\fBi\fR 0,i,ii,iii,iv,v,...
+\fBI\fR 0,I,II,III,IV,V,...
+\fBa\fR 0,a,b,c,...,z,aa,ab,...,zz,aaa,...
+\fBA\fR 0,A,B,C,...,Z,AA,AB,...,ZZ,AAA,...
+.TE
+An arabic format having \fIN\fR digits
+specifies a field width of \fIN\fR digits (example 2 above).
+The read-only registers and the \fIwidth\fR function (\(sc11.2)
+are always arabic.
+.bt
+\fB&rr\fI|R\fR - ignored - Remove register \fIR\fR.
+If many registers are being created dynamically, it
+may become necessary to remove no longer used registers
+to recapture internal storage space for newer registers.
diff --git a/share/doc/usd/21.troff/m3 b/share/doc/usd/21.troff/m3
new file mode 100644
index 0000000..01e0023
--- /dev/null
+++ b/share/doc/usd/21.troff/m3
@@ -0,0 +1,521 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m3 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.tr |
+.rm mx
+.mh
+Tabs, Leaders, and Fields
+.sc
+Tabs and leaders.
+The \s-1ASCII\s+1 horizontal tab character and the \s-1ASCII\s+1
+\s-1SOH\s+1 (hereafter known as the \fIleader\fR character)
+can both be used to generate either horizontal motion or
+a string of repeated characters.
+The length of the generated entity is governed
+by internal \fItab stops\fR specifiable
+with \fBta\fR.
+The default difference is that tabs generate motion and leaders generate
+a string of periods;
+\fBtc\fR and \fBlc\fR
+offer the choice of repeated character or motion.
+There are three types of internal tab stops\(em\
+\fIleft\fR adjusting, \fIright\fR adjusting,
+and \fIcentering\fR.
+In the following table:
+\fID\fR is the distance from the current position on the \fIinput\fR line
+(where a tab or leader was found)
+to the next tab stop;
+\fInext-string\fR consists
+of the input characters following the tab (or leader) up to the next tab (or leader) or end of line;
+and
+\fIW\fR is the width of \fInext-string\fR.
+.TS
+center box;
+c2|c2|c
+c2|c2|c
+c2|c2|l.
+Tab Length of motion or Location of
+type repeated characters \fInext-string\fR
+_
+Left \fID\fR Following \fID\fR
+Right \fID\-W\fR Right adjusted within \fID\fR
+Centered \fID\-W\(sl\fR2 Centered on right end of \fID\fR
+.TE
+The length of generated motion is allowed to be negative, but
+that of a repeated character string cannot be.
+Repeated character strings contain an integer number of characters, and
+any residual distance is prepended as motion.
+Tabs or leaders found after the last tab stop are ignored, but may be used
+as \fInext-string\fR terminators.
+.pg
+Tabs and leaders are not interpreted in \fIcopy mode\fR.
+\fB\et\fR and \fB\ea\fR always generate a non-interpreted
+tab and leader respectively, and
+are equivalent to actual tabs and leaders in \fIcopy mode\fR.
+.sc
+Fields.
+A \fIfield\fR is contained between
+a \fIpair\fR of \fIfield delimiter\fR characters,
+and consists of sub-strings
+separated by \fIpadding\fR indicator characters.
+The field length is the distance on the
+\fIinput\fR line from the position where the field begins to the next tab stop.
+The difference between the total length of all the sub-strings
+and the field length is incorporated as horizontal
+padding space that is divided among the indicated
+padding places.
+The incorporated padding is allowed to be negative.
+For example,
+if the field delimiter is \fB#\fR and the padding indicator is \fB^\fR,
+\fB#^\fIxxx\fB^\fIright\|\fB#\fR
+specifies a right-adjusted string with the string \fIxxx\fR centered
+in the remaining space.
+.h1
+.bt
+\fB&ta\fI|Nt|...\fR 8n;|0.5in none E,\fBm\fR \
+Set tab stops and types.
+\fIt=\fBR\fR, right adjusting;
+\fIt=\fBC\fR, centering;
+\fIt\fR absent, left adjusting.
+\*(TR tab stops are preset every 0.5in.;
+\*(NR every 8 character widths.
+The stop values are separated by spaces, and
+a value preceded by \fB+\fR
+is treated as an increment to the previous stop value.
+.bt
+\fB&tc\fI|c\fR none none E \
+The tab repetition character becomes \fIc\fR,
+or is removed specifying motion.
+.bt
+\fB&lc\fI|c\fR \fB.\fR none E \
+The leader repetition character becomes \fIc\fR,
+or is removed specifying motion.
+.bt
+\fB&fc\fI|a|b\fR off off - \
+The field delimiter is set to \fIa\fR;
+the padding indicator is set to the \fIspace\fR character or to
+\fIb\fR, if given.
+In the absence of arguments the field mechanism is turned off.
+.mh
+Input and Output Conventions and Character Translations
+.sc
+Input character translations.
+Ways of inputting the graphic character set were
+discussed in \(sc2.1.
+The \s-1ASCII\s+1 control characters horizontal tab (\(sc9.1),
+\s-1SOH\s+1 (\(sc9.1), and backspace (\(sc10.3) are discussed elsewhere.
+The newline delimits input lines.
+In addition,
+\s-1STX\s+1, \s-1ETX\s+1, \s-1ENQ\s+1, \s-1ACK\s+1, and \s-1BEL\s+1
+are accepted,
+and may be used as delimiters or translated into a graphic with \fBtr\fR (\(sc10.5).
+\fIAll\fR others are ignored.
+.pg
+The \fIescape\fR character \fB\e\fR
+introduces \fIescape sequences\fR\(em\
+causes the following character to mean
+another character, or to indicate
+some function.
+A complete list of such sequences is given in the Summary and Index on page 6.
+\fB\e\fR
+should not be confused with the \s-1ASCII\s+1 control character \s-1ESC\s+1 of the
+same name.
+The escape character \fB\e\fR can be input with the sequence \fB\e\e\fR.
+The escape character can be changed with \fBec\fR,
+and all that has been said about the default \fB\e\fR becomes true
+for the new escape character.
+\fB\ee\fR can be used to print whatever the current escape character is.
+If necessary or convenient, the escape mechanism may be turned off with \fBeo\fR,
+and restored with \fBec\fR.
+.h1
+.bt
+\fB&ec\fI|c\fR \fB\e\fR \fB\e\fR - \
+Set escape character to \fB\e\fR, or to \fIc\fR, if given.
+.bt
+\fB&eo\fR on - - Turn escape mechanism off.
+.sc
+Ligatures.
+.lg 0
+Five ligatures are available
+in the current \*(TR character set \(em
+\fB\(fi\fR, \fB\(fl\fR, \fB\(ff\fR, \fB\(Fi\fR, and \fB\(Fl\fR.
+They may be input (even in \*(NR) by
+\fB\e(fi\fR, \fB\e(fl\fR, \fB\e(ff\fR, \fB\e(Fi\fR, and \fB\e(Fl\fR respectively.
+.lg
+The ligature mode is normally on in \*(TR, and \fIautomatically\fR invokes
+ligatures during input.
+.h1
+.bt
+\fB&lg\fI|N\fR off;|on on - Ligature mode
+is turned on if \fIN\fR is absent or non-zero,
+and turned off if \fIN\(eq\^\fR0.
+If \fIN\fR\(eq\^2, only the two-character ligatures are automatically invoked.
+Ligature mode is inhibited for
+request, macro, string, register, or file names,
+and in \fIcopy mode\fR.
+No effect in \*(NR.
+.sc
+Backspacing, underlining, overstriking, etc.
+Unless in \fIcopy mode\fR, the \s-1ASCII\s+1 backspace character is replaced
+by a backward horizontal motion having the width of the
+space character.
+Underlining as a form of line-drawing is discussed in \(sc12.4.
+A generalized overstriking function is described in \(sc12.1.
+.pg
+\*(NR automatically underlines
+characters in the \fIunderline\fR font,
+specifiable with \fBuf\fR,
+normally Times Italic on font position 2 (see \(sc2.2).
+In addition to \fBft\fR and \fB\ef\fIF\fR,
+the underline font may be selected by \fBul\fR and \fBcu\fR.
+Underlining is restricted to an output-device-dependent
+subset of \fIreasonable\fR characters.
+.h1
+.bt
+\fB&ul\fI|N\fR off \fIN\(eq\fR1 E \
+Underline in \*(NR (italicize in \*(TR) the next \fIN\fR
+input text lines.
+Actually, switch to \fIunderline\fR font, saving the
+current font for later restoration;
+\fIother\fR font changes within the span of a \fBul\fR
+will take effect,
+but the restoration will undo the last change.
+Output generated by \fBtl\fR (\(sc14) \fIis\fR affected by the
+font change, but does \fInot\fR decrement \fIN\fR.
+If \fIN\fR\^>\^1, there is the risk that
+a trap interpolated macro may provide text
+lines within the span;
+environment switching can prevent this.
+.bt
+\fB&cu\fI|N\fR off \fIN\(eq\fR1 E \
+A variant of \fBul\fR that causes \fIevery\fR character to be underlined in \*(NR.
+Identical to \fBul\fR in \*(TR.
+.bt
+\fB&uf\fI|F\fR Italic Italic - \
+Underline font set to \fIF\fR.
+In \*(NR,
+\fIF\fR may \fInot\fR be on position 1 (initially Times Roman).
+.sc
+Control characters.
+Both the control character \fB.\fR and the \fIno-break\fR
+control character \fB\'\fR may be changed, if desired.
+Such a change must be compatible with the design
+of any macros used in the span of the change,
+and
+particularly of any trap-invoked macros.
+.h1
+.bt
+\fB&cc\fI|c\fR \fB.\fR \fB.\fR E \
+The basic control character is set to \fIc\fR,
+or reset to "\fB.\fR".
+.bt
+\fB&c2\fI|c\fR \fB\' \'\fR E The \fInobreak\fR control character is set
+to \fIc\fR, or reset to "\fB\'\fR".
+.sc
+Output translation.
+One character can be made a stand-in for another character using \fBtr\fR.
+All text processing (e. g. character comparisons) takes place
+with the input (stand-in) character which appears to have the width of the final
+character.
+The graphic translation occurs at the moment of output
+(including diversion).
+.h1
+.bt
+\fB&tr\fI|abcd....\fR none - O Translate \
+\fIa\fR into \fIb\fR, \fIc\fR into \fId\fR, etc.
+If an odd number of characters is given,
+the last one will be mapped into the space character.
+To be consistent, a particular translation
+must stay in effect from \fIinput\fR to \fIoutput\fR time.
+.sc
+Transparent throughput.
+An input line beginning with a \fB\e!\fR is read in \fIcopy mode\fR and \fItransparently\fR output
+(without the initial \fB\e!\fR);
+the text processor is otherwise unaware of the line's presence.
+This mechanism may be used to pass control information to a post-processor
+or to imbed control lines in a macro created by a diversion.
+.sc
+Comments and concealed newlines.
+An uncomfortably long input line that must stay
+one line (e. g. a string definition, or nofilled text)
+can be split into many physical lines by ending all but
+the last one with the escape \fB\e\fR.
+The sequence \fB\e\fR(newline) is \fIalways\fR ignored\(em\
+except in a comment.
+Comments may be imbedded at the \fIend\fR of any line by
+prefacing them with \fB\e"\fR.
+The newline at the end of a comment cannot be concealed.
+A line beginning with \fB\e"\fR will appear as a blank line and
+behave like \fB.sp|1\fR;
+a comment can be on a line by itself by beginning the line with \fB.\e"\fR.
+.mh
+Local Horizontal and Vertical Motions, and the Width Function
+.sc
+Local Motions.
+The functions \fB\ev\'\fIN\fB\|\'\fR and
+\fB\eh\'\fIN\fB\|\'\fR
+can be used for \fIlocal\fR vertical and horizontal motion respectively.
+The distance \fIN\fR may be negative; the \fIpositive\fR directions
+are \fIrightward\fR and \fIdownward\fR.
+A \fIlocal\fR motion is one contained \fIwithin\fR a line.
+To avoid unexpected vertical dislocations, it is necessary that
+the \fInet\fR vertical local motion within a word in filled text
+and otherwise within a line balance to zero.
+The above and certain other escape sequences providing local motion are
+summarized in the following table.
+.tr ||
+.ds X \0\0\0
+.TS
+center box;
+c2|cs2||c2|cs
+c1|c2c2||c2|c2c.
+Vertical Effect in Horizontal Effect in
+Local Motion \*(TR \*(NR Local Motion \*(TR \*(NR
+_
+.sp .4
+.T&
+l2|ls2||l2|ls.
+\fB\*X\ev\'\fIN\|\^\fB\'\fR Move distance \fIN\fR \
+\fB\*X\eh\'\fIN\|\^\fB\'\fR Move distance \fIN\fR
+.T&
+_2|_2_2||l2|ls.
+ \fB\*X\e\fR(space) Unpaddable space-size space
+.T&
+l2|l2|l2||l2|ls.
+\fB\*X\eu\fR \(12 em up \(12 line up \fB\*X\e0\fR Digit-size space
+.T&
+l2|l2|l2||_2|_2_.
+\fB\*X\ed\fR \(12 em down \(12 line down
+.T&
+l2|l2|l2||l2|l2|l.
+\fB\*X\er\fR 1 em up 1 line up \fB\*X\e\||\fR 1\(sl6 em space ignored
+ \fB\*X\e^\fR 1\(sl12 em space ignored
+.sp .4
+.TE
+.rm X
+.tr |
+As an example,
+\fBE\s-2\v'-.4m'2\v'.4m'\s+2\fR
+could be generated by the sequence
+\fBE\es\-2\ev\'\-0.4m\'2\ev\'0.4m\'\es+2\fR;
+it should be noted in this example that
+the 0.4|em vertical motions are at the smaller size.
+.sc
+Width Function.
+The \fIwidth\fR function \fB\ew\'\fIstring\fB\|\'\fR
+generates the numerical width of \fIstring\fR (in basic units).
+Size and font changes may be safely imbedded in \fIstring\fR,
+and will not affect the current environment.
+For example,
+\&\fB.ti|\-\\w\'1.|\'u\fR could be used to
+temporarily indent leftward a distance equal to the
+size of the string "\fB1.|\fR".
+.pg
+The width function also sets three number registers.
+The registers \fBst\fR and \fBsb\fR are set respectively to the highest and
+lowest extent of \fIstring\fR relative to the baseline;
+then, for example,
+the total \fIheight\fR of the string is \fB\en(stu\-\en(sbu\fR.
+In \*(TR the number register \fBct\fR is set to a value
+between 0|and|3:
+0 means that all of the characters in \fIstring\fR were short lower
+case characters without descenders (like \fBe\fR);
+1 means that at least one character has a descender (like \fBy\fR);
+2 means that at least one character is tall (like \fBH\fR);
+and 3 means that both tall characters and characters with
+descenders are present.
+.sc
+Mark horizontal place.
+The escape sequence \fB\ek\fIx\fR will cause the \fIcurrent\fR horizontal
+position in the \fIinput line\fR to be stored in register \fIx\fR.
+As an example,
+the construction \fB\ekx\fIword\|\fB\eh\'\|~\|\enxu+2u\'\fIword\fB\fR
+will embolden \fIword\fR by backing up to almost its beginning and overprinting it,
+resulting in \kz\fIword\fR\h'|\nzu+2u'\fIword\fR.
+.mh
+Overstrike, Bracket, Line-drawing, and Zero-width Functions
+.sc
+Overstriking.
+Automatically centered overstriking of up to nine characters
+is provided by the \fIoverstrike\fR function
+\fB\eo\'\fIstring\fB\|\'\fR.
+The characters in \fIstring\fR are overprinted with centers aligned; the total width
+is that of the widest character.
+\fIstring\fR should \fInot\fR contain local vertical motion.
+As examples,
+\fB\eo\'e\e\'\'\fR produces \fB\o'e\''\fR, and
+\fB\eo\'\e(mo\e(sl\'\fR produces \fB\o'\(mo\(sl'\fR.
+.sc
+Zero-width characters.
+The function \fB\ez\fIc\fR will output \fIc\fR without spacing over
+it, and can be used to produce left-aligned overstruck
+combinations.
+As examples,
+\fB\ez\e(ci\e(pl\fR will produce \fB\z\(ci\(pl\fR, and
+\fB\e(br\ez\e(rn\e(ul\e(br\fR will produce the smallest possible
+constructed box \fB\(br\z\(rn\(ul\(br\fR\|.
+.sc
+Large Brackets.
+The Special Mathematical Font contains a number of bracket construction pieces
+(\|\|\|\(lt\|\|\|\(lb\|\|\|\(rt\|\|\|\(rb\|\|\|\(lk\|\|\|\(rk\|\|\|\(bv\|\|\|\(lf\|\|\|\(rf\|\|\|\(lc\|\|\|\(rc\|\|)
+that can be combined into various bracket styles.
+The function \fB\eb\'\fIstring\fB\|\'\fR may be used to pile
+up vertically the characters in \fIstring\fR
+(the first character on top and the last at the bottom);
+the characters are vertically separated by 1|em and the total
+pile is centered 1\(sl2\|em above the current baseline
+(\(12 line in \*(NR).
+For example,
+\fB\eb\'\|\e(lc\e(lf\|\'E\e\|~\|\eb\'\|\e(rc\e(rf\|\'\|\ex\'\|\-0.5m\'\|\ex\'0.5m\'\|\fR
+produces
+\x'-.5m'\x'.5m'\fB\b'\(lc\(lf'E\|\b'\(rc\(rf'\fR.
+.sc
+Line drawing.
+.tr &&
+The function \fB\e\|l\|\'\fINc\fB\|\'\fR will draw a string of repeated \fIc\fR\|'s towards the right for a distance \fIN\fR.
+(\|\fB\el\fR is \fB\e\fR(lower case L).
+If \fIc\fR looks like a continuation of
+an expression for \fIN\fR, it may insulated from \fIN\fR with a \fB\e&\fR.
+If \fIc\fR is not specified, the \fB\(ru\fR (baseline rule) is used
+(underline character in \*(NR).
+If \fIN\fR is negative, a backward horizontal motion
+of size \fIN\fR is made \fIbefore\fR drawing the string.
+Any space resulting from \fIN\fR\|\(sl(size of \fIc\fR) having a remainder is put at the beginning (left end)
+of the string.
+In the case of characters
+that are designed to be connected such as
+baseline-rule\ \fB\(ru\fR\|,
+underrule\ \fB\(ul\fR\|,
+and
+root-en\ \fB\(rn\fR\|,
+the remainder space is covered by over-lapping.
+If \fIN\fR is \fIless\fR than the width of \fIc\fR,
+a single \fIc\fR is centered on a distance \fIN\fR.
+As an example, a macro to underscore a string can be written
+.br
+.tr &.
+.x1
+.ft B
+.ne 2.1
+&de us
+\e\e$1\e\|l\|\'\|~\|0\e(ul\'
+&&
+.ft R
+.x2
+.ne 2.1
+.de xu
+\\$1\l'|0\(ul'
+..
+or one to draw a box around a string
+.x1
+.ft B
+&de bx
+\e(br\e\|~\|\e\e$1\e\|~\|\e(br\e\|l\|\'\|~\|0\e(rn\'\e\|l\|\'\|~\|0\e(ul\'
+&&
+.ft R
+.x2
+.de bx
+\(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
+..
+such that
+.x1
+.ft B
+&us "underlined words"
+.ft R
+.x2
+and
+.x1
+.ft B
+&bx "words in a box"
+.ft R
+.x2
+yield
+.xu "underlined words"
+and
+.bx "words in a box"
+\h'-\w'.'u'.
+.pg
+The function \fB\eL\'\|\fINc\fB\|\'\fR will draw a vertical line consisting
+of the (optional) character \fIc\fR stacked vertically apart 1\|em
+(1 line in \*(NR),
+with the first two characters overlapped,
+if necessary, to form a continuous line.
+The default character is the \fIbox rule\fR |\(br| (\fB\|\e(br\fR);
+the other suitable character is the \fIbold vertical\fR \|\(bv\| (\fB\|\e(bv\fR).
+The line is begun without any initial motion relative to the
+current base line.
+A positive \fIN\fR specifies a line drawn downward and
+a negative \fIN\fR specifies a line drawn upward.
+After the line is drawn \fIno\fR compensating
+motions are made;
+the instantaneous baseline is at the \fIend\fR of the line.
+.pg
+.de eb
+.sp -1
+.nf
+\h'-.5n'\L'|\\nzu-1'\l'\\n(.lu+1n\(ul'\L'-|\\nzu+1'\l'|0u-.5n\(ul'
+.fi
+..
+.ne 2i
+.mk z
+The horizontal and vertical line drawing functions may be used
+in combination to produce large boxes.
+The zero-width \fIbox-rule\fR and the \(12-em wide \fIunderrule\fR
+were \fIdesigned\fR to form corners when using 1-em vertical
+spacings.
+For example the macro
+.x1
+.ft B
+\&.de eb
+\&.sp \-1 \e"compensate for next automatic base-line spacing
+\&.nf \e"avoid possibly overflowing word buffer
+.tr ||
+\&\eh\'\-.5n\'\eL\'\||\|\e\enau\-1\'\el\'\e\en(.lu+1n\e(ul\'\eL\'\-\||\|\e\enau+1\'\el\'\||\|0u\-.5n\e(ul\' \e"draw box
+.tr |
+.lg 0
+\&.fi
+.lg
+\&..
+.ft R
+.x2
+will draw a box around some text whose beginning vertical place was
+saved in number register \fIa\fR
+(e. g. using \fB.mk|a\fR)
+as done for this paragraph.
+.eb
diff --git a/share/doc/usd/21.troff/m4 b/share/doc/usd/21.troff/m4
new file mode 100644
index 0000000..931ac48
--- /dev/null
+++ b/share/doc/usd/21.troff/m4
@@ -0,0 +1,416 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m4 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.tr |
+.mh
+Hyphenation.
+.pg
+The automatic hyphenation may be switched off and on.
+When switched on with \fBhy\fR,
+several variants may be set.
+A \fIhyphenation indicator\fR character may be imbedded in a word to
+specify desired hyphenation points,
+or may be prepended to suppress hyphenation.
+In addition,
+the user may specify a small exception word list.
+.pg
+Only words that consist of a central alphabetic string
+surrounded by (usually null) non-alphabetic strings
+are considered candidates for automatic hyphenation.
+Words that were input containing hyphens
+(minus),
+em-dashes (\fB\e(em\fR),
+or hyphenation indicator characters\
+\(emsuch as mother-in-law\(em\
+are \fIalways\fR subject to splitting after those characters,
+whether or not automatic hyphenation is on or off.
+.h1
+.bt
+\fB&nh\fR hyphenate - E \
+Automatic hyphenation is turned off.
+.bt
+\fB&hy\fIN\fR on,\fIN=\fR1 on,\fIN=\fR1 E \
+Automatic hyphenation is turned on
+for \fIN\fR\|\(>=1, or off for \fIN=\fR\|0.
+If \fIN=\fR\|2, \fIlast\fR lines (ones that will cause a trap)
+are not hyphenated.
+For \fIN=\fR\|4 and 8, the last and first two characters
+respectively of a word are not split off.
+These values are additive;
+i.|e. \fIN=\fR\|14 will invoke all three restrictions.
+.bt
+\fB&hc\fI|c\fR \fB\e% \e%\fR E Hyphenation indicator character is set
+to \fIc\fR or to the default \fB\e%\fR.
+The indicator does not appear in the output.
+.bt
+\fB&hw\fI|word1|...\fR ignored - Specify hyphenation points in words
+with imbedded minus signs.
+Versions of a word with terminal \fIs\fR are implied;
+i.|e. \fIdig\-it\fR implies \fIdig\-its\fR.
+This list is examined initially \fIand\fR after
+each suffix stripping.
+The space available is small\(emabout 128 characters.
+.mh
+Three Part Titles.
+.pg
+The titling function \fBtl\fR provides for automatic placement
+of three fields at the left, center, and right of a line
+with a title-length
+specifiable with \fBlt\fR.
+\fBtl\fR may be used anywhere, and is independent of the
+normal text collecting process.
+A common use is in header and footer macros.
+.h1
+.bt
+\fB&tl\fI|\'left\|\'center\|\'right\|\'\fR - - \
+The strings \fIleft\fR, \fIcenter\fR, and \fIright\fR are
+respectively left-adjusted, centered, and right-adjusted
+in the current title-length.
+Any of the strings may be empty,
+and overlapping is permitted.
+If the page-number character (initially \fB%\fR) is found within any of the fields it is replaced
+by the current page number having the format assigned to register \fB%\fR.
+Any character may be used as the string delimiter.
+.bt
+\fB&pc\fI|c\fR \fB%\fR off - The page number character is set to \fIc\fR,
+or removed.
+The page-number register remains \fB%\fR.
+.bt
+\fB&lt\fI|\(+-N\fR 6.5\|in previous E,\fBm\fR Length of title set to \fI\(+-N\fR.
+The line-length and the title-length are \fIindependent\fR.
+Indents do not apply to titles; page-offsets do.
+.mh
+Output Line Numbering.
+.pg
+.ll -\w'0000'u
+.nm 1 3
+Automatic sequence numbering of output lines may be
+requested with \fBnm\fR.
+When in effect,
+a three-digit, arabic number plus a digit-space
+is prepended to output text lines.
+The text lines are thus offset by four digit-spaces,
+and otherwise retain their line length;
+a reduction in line length may be desired to keep the right margin
+aligned with an earlier margin.
+Blank lines, other vertical spaces, and lines generated by \fBtl\fR
+are \fInot\fR numbered.
+Numbering can be temporarily suspended with \fBnn\fR,
+or with an \fB.nm\fR followed by a later \fB.nm|+0\fR.
+In addition,
+a line number indent \fII\fR, and the number-text separation \fIS\fR
+may be specified in digit-spaces.
+Further, it can be specified that only those line numbers that are
+multiples of some number \fIM\fR are to be printed (the others will appear
+as blank number fields).
+.br
+.nm
+.ll
+.h1
+.bt
+\fB&nm\fI|\(+-N|M|S|I\fR off E \
+Line number mode.
+If \fI\(+-N\fR is given,
+line numbering is turned on,
+and the next output line numbered is numbered \fI\(+-N\fR.
+Default values are \fIM=\fR\|1, \fIS=\fR\|1, and \fII=\fR\|0.
+Parameters corresponding to missing arguments are unaffected;
+a non-numeric argument is considered missing.
+In the absence of all arguments, numbering is turned off;
+the next line number is preserved for possible further use
+in number register \fBln\fR.
+.bt
+\fB&nn\fI|N\fR - \fIN=\fR1 E The next \fIN\fR text output lines are not
+numbered.
+.pg
+.ll -\w'0000'u
+.nm +0
+As an example, the paragraph portions of this section
+are numbered with \fIM=\fR\|3:
+\&\fB.nm|1|3\fR was placed at the beginning;
+\&\fB.nm\fR was placed at the end of the first paragraph;
+and \fB.nm|+0\fR was placed in front of this paragraph;
+and \fB.nm\fR finally placed at the end.
+Line lengths were also changed (by \fB\ew\'0000\'u\fR) to keep the right side aligned.
+Another example is
+\&\fB.nm|+5|5|x|3\fR which turns on numbering with the line number of the next
+line to be five greater than the last numbered line,
+with \fIM=\fR\|5, with spacing \fIS\fR untouched, and with the indent \fII\fR set to 3.
+.br
+.ll
+.nm
+.mh
+Conditional Acceptance of Input
+.pg
+In the following,
+\fIc\fR is a one-character, built-in \fIcondition\fR name,
+\fB!\fR signifies \fInot\fR,
+\fIN\fR is a numerical expression,
+\fIstring1\fR and \fIstring2\fR are strings delimited by any non-blank, non-numeric character \fInot\fR in the strings,
+and
+\fIanything\fR represents what is conditionally accepted.
+.h1
+.bt
+\fB&if\fI|c|anything\fR - - If condition \fIc\fR true, accept \fIanything\fR as input;
+in multi-line case use \fI\e{anything\|\e}\fR.
+.bt
+\fB&if|!\fIc|anything\fR - - If condition \fIc\fR false, accept \fIanything\fR.
+.bt
+\fB&if\fI|N|anything\fR - \fBu\fR If expression \fIN\fR > 0, accept \fIanything\fR.
+.bt
+\fB&if|!\fIN|anything\fR - \fBu\fR If expression \fIN\fR \(<= 0, accept \fIanything\fR.
+.bt
+\fB&if\fI|\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR identical to \fIstring2\fR,
+accept \fIanything\fR.
+.bt
+\fB&if|!\fI\|\'string1\|\'string2\|\'|anything\fR - If \fIstring1\fR not identical to \fIstring2\fR,
+accept \fIanything\fR.
+.bt
+\fB&ie\fI|c|anything\fR - \fBu\fR If portion of if-else; all above forms (like \fBif\fR).
+.bt
+\fB&el\fI|anything\fR - - Else portion of if-else.
+.pg
+The built-in condition names are:
+.TS
+center box;
+c2|c
+c2|c
+c2|l.
+Condition
+Name True If
+_
+\fBo\fR Current page number is odd
+\fBe\fR Current page number is even
+\fBt\fR Formatter is \*(TR
+\fBn\fR Formatter is \*(NR
+.TE
+If the condition \fIc\fR is \fItrue\fR, or if the number \fIN\fR is greater than zero,
+or if the strings compare identically (including motions and character size and font),
+\fIanything\fR is accepted as input.
+If a \fB!\fR precedes the condition, number, or string comparison,
+the sense of the acceptance is reversed.
+.pg
+Any spaces between the condition and the beginning of \fIanything\fR are skipped over.
+The \fIanything\fR can be either a single input line (text, macro, or whatever)
+or a number of input lines.
+In the multi-line case,
+the first line must begin with a left delimiter \fB\e{\fR and
+the last line must end with a right delimiter \fB\e}\fR.
+.pg
+The request \fBie\fR (if-else) is identical to \fBif\fR
+except that the acceptance state is remembered.
+A subsequent and matching \fBel\fR (else) request then uses the reverse sense of that state.
+\fBie\fR|-|\fBel\fR pairs may be nested.
+.pg
+Some examples are:
+.x1
+.ft B
+.ne 1
+&if e .tl \'\|Even Page %\'\'\'
+.ft R
+.x2
+which outputs a title if the page number is even; and
+.x1
+.ft B
+.ne 3.1
+&ie \en%>1 \e{\e
+\&\'sp 0.5i
+&tl \'\|Page %\'\'\'
+\&\'sp ~\|1.2i|\e}
+&el .sp ~\|2.5i
+.ft R
+.x2
+which treats page 1 differently from other pages.
+.mh
+Environment Switching.
+.pg
+A number of the parameters that
+control the text processing are gathered together into an
+\fIenvironment\fR, which can be switched by the user.
+The environment parameters are those associated
+with requests noting E in their \fINotes\fR column;
+in addition, partially collected lines and words are in the environment.
+Everything else is global; examples are page-oriented parameters,
+diversion-oriented parameters, number registers, and macro and string definitions.
+All environments are initialized with default parameter values.
+.h1
+.bt
+\fB&ev\fI|N\fR \fIN\(eq\fR0 previous - Environment switched to
+environment 0\(<=\fIN\fR\(<=2.
+Switching is done in push-down fashion so that
+restoring a previous environment \fImust\fR be done with \fB.ev\fR
+rather than specific reference.
+.mh
+Insertions from the Standard Input
+.pg
+The input can be temporarily switched to the system \fIstandard input\fR
+with \fBrd\fR,
+which will switch back when \fItwo\fR newlines
+in a row are found (the \fIextra\fR blank line is not used).
+This mechanism is intended for insertions in form-letter-like documentation.
+On \s-1UNIX\s+1, the \fIstandard input\fR can be the user's keyboard,
+a \fIpipe\fR, or a \fIfile\fR.
+.h1
+.bt
+\fB&rd\fI|prompt\fR - \fIprompt=\fR\s-1BEL\s+1 \
+Read insertion from the standard input until two newlines in a row are found.
+If the standard input is the user's keyboard, \fIprompt\fR (or a \s-1BEL\s+1)
+is written onto the user's terminal.
+\fBrd\fR behaves like a macro,
+and arguments may be placed after \fIprompt\fR.
+.bt
+\fB&ex\fR - - - Exit from \*(NR\(sl\*(TR.
+Text processing is terminated exactly as if all input had ended.
+.pg
+If insertions are to be
+taken from the terminal keyboard \fIwhile\fR output is being printed
+on the terminal, the command line option \fB\-q\fR will turn off the echoing
+of keyboard input and prompt only with \s-1BEL\s+1.
+The regular input and insertion input \fIcannot\fR
+simultaneously come from the standard input.
+.pg
+As an example,
+multiple copies of a form letter may be prepared by entering the insertions
+for all the copies in one file to be used as the standard input,
+and causing the file containing the letter to reinvoke itself using \fBnx\fR (\(sc19);
+the process would ultimately be ended by an \fBex\fR in the insertion file.
+.mh
+Input\(slOutput File Switching
+.pg
+The (read-only) number register \fB.c\fR contains the input line number in
+the current input file. The number register \fBc.\fR is a general register
+serving the same purpose.
+.h1
+.bt
+\fB&so\fI|filename\fR - - Switch source file.
+The top input (file reading) level is switched to \fIfilename\fR.
+The effect of an \fBso\fR encountered in a macro
+occurs immediately.
+When the new file ends,
+input is again taken from the original file.
+\fBso\fR's may be nested.
+.bt
+\fB&nx\fI|filename\fR end-of-file - Next file is \fIfilename\fR.
+The current file is considered ended, and the input is immediately switched
+to \fIfilename\fR.
+.bt
+\fB&pi\fI|program\fR - - Pipe output to \fIprogram\fR (\*(NR only).
+This request must occur \fIbefore\fR any printing occurs.
+No arguments are transmitted to \fIprogram\fR.
+.mh
+Miscellaneous
+.pg
+.h1
+.bt
+.mc \s12\(br\s0
+\fB&mc\fI|c|N\fR - off E,\fBm\fR \
+Specifies that a \fImargin\fR character \fIc\fR appear a distance
+\fIN\fR to the right of the right margin
+after each non-empty text line (except those produced by \fBtl\fR).
+If the output line is too-long (as can happen in nofill mode)
+the character will be appended to the line.
+If \fIN\fR is not given, the previous \fIN\fR is used; the initial \fIN\fR is
+0.2|inches in \*(NR and 1\|em in \*(TR.
+The margin character used with this paragraph was a 12-point box-rule.
+.br
+.mc
+.bt
+\fB&tm\fI|string\fR - newline - \
+After skipping initial blanks, \fIstring\fR (rest of the line) is read in \fIcopy mode\fR
+and written on the user's terminal. (see \(sc21).
+.bt
+\fB&ig\fI|yy\fR - \fI.yy=\fB..\fR - Ignore \
+input lines.
+\fBig\fR behaves exactly like \fBde\fR (\(sc7) except that the
+input is discarded.
+The input is read in \fIcopy mode\fR, and any auto-incremented
+registers will be affected.
+.bt
+\fB&pm\fI|t\fR - all - \
+Print macros.
+The names and sizes of all of the defined macros and strings are printed
+on the user's terminal;
+if \fIt\fR is given, only the total of the sizes is printed.
+The sizes is given in \fIblocks\fR
+of 128 characters.
+.bt
+\fB&ab\fI|string\fR - - - \
+Print \fIstring\fR on standard error and terminate immediately. The
+default \fIstring\fR is "User Abort". Does not cause a break. Only output
+preceding the last break is written.
+.bt
+.lg 0
+\fB&fl\fR - - B \c
+.lg
+Flush output buffer.
+Used in interactive debugging to force output.
+.mh
+Output and Error Messages.
+.pg
+The output from \fBtm\fR, \fBpm\fR, \fBab\fR and the prompt from \fBrd\fR,
+as well as various \fIerror\fR messages are written onto
+\s-1UNIX\s+1's \fIstandard error\fR output.
+The latter is different from the \fIstandard output\fR,
+where \*(NR formatted output goes.
+By default, both are written onto the user's terminal,
+but they can be independently redirected.
+.pg
+Various \fIerror\fR conditions may occur during
+the operation of \*(NR and \*(TR.
+Certain less serious errors having only local impact do not
+cause processing to terminate.
+Two examples are \fIword overflow\fR, caused by a word that is too large
+to fit into the word buffer (in fill mode), and
+\fIline overflow\fR, caused by an output line that grew too large
+to fit in the line buffer;
+in both cases, a message is printed, the offending excess
+is discarded,
+and the affected word or line is marked at the point of truncation
+with a \(** in \*(NR and a \(lh in \*(TR.
+The philosophy is to continue processing, if possible,
+on the grounds that output useful for debugging may be produced.
+If a serious error occurs, processing terminates,
+and an appropriate message is printed.
+Examples are the inability to create, read, or write files,
+and the exceeding of certain internal limits that
+make future output unlikely to be useful.
+.ps 10
+.vs 12
+.ft R
+.bp
diff --git a/share/doc/usd/21.troff/m5 b/share/doc/usd/21.troff/m5
new file mode 100644
index 0000000..692db28
--- /dev/null
+++ b/share/doc/usd/21.troff/m5
@@ -0,0 +1,462 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)m5 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.ds H T
+.tr |
+.tr ~|
+.de x1
+.xx
+.ft B
+.in .2i
+.nf
+.ne 2.1
+.ta 1i
+..
+.de x2
+.fi
+.in 0
+.ft R
+.xx
+..
+.br
+.ce
+.ft B
+.rs
+.sp 0.5i
+TUTORIAL EXAMPLES
+.ft R
+.sp 2
+.nr p 0
+.2C
+.ns
+.mh
+.mk
+Introduction
+.pg
+Although \*(NR and \*(TR
+have by design a syntax reminiscent
+of earlier text processors*
+.fn
+.xx
+*For example:
+P.|A.|Crisman, Ed.,
+.ul
+The Compatible Time-Sharing System,
+MIT Press, 1965, Section|AH9.01
+(Description of RUNOFF program on MIT's CTSS system).
+.ef
+with the intent of easing their use,
+it is almost always necessary to
+prepare at least a small set of macro definitions
+to describe most documents.
+Such common formatting needs
+as page margins and footnotes
+are deliberately not built into \*(NR and \*(TR.
+Instead,
+the macro and string definition, number register, diversion,
+environment switching, page-position trap, and conditional input mechanisms
+provide the basis for user-defined implementations.
+.pg
+The examples to be discussed are intended to be useful and somewhat realistic,
+but won't necessarily cover all relevant contingencies.
+Explicit numerical parameters are used
+in the examples
+to make them easier to read and to
+illustrate typical values.
+In many cases, number registers would really be used
+to reduce the number of places where numerical
+information is kept,
+and to concentrate conditional parameter initialization
+like that which depends on whether \*(TR or \*(NR is being used.
+.mh
+Page Margins
+.pg
+As discussed in \(sc3,
+\fIheader\fR and \fIfooter\fR macros are usually defined
+to describe the top and bottom page margin areas respectively.
+A trap is planted at page position 0 for the header, and at
+\fI\-N\fR (\fIN\fR from the page bottom) for the footer.
+The simplest such definitions might be
+.x1
+&de hd \e"define header
+\'sp 1i
+&& \e"end definition
+&de fo \e"define footer
+\'bp
+&& \e"end definition
+&wh 0 hd
+&wh \-1i fo
+.x2
+which provide blank 1|inch top and bottom margins.
+The header will occur on the \fIfirst\fR page,
+only if the definition and trap exist prior to
+the initial pseudo-page transition (\(sc3).
+In fill mode, the output line that springs the footer trap
+was typically forced out because some part or whole word didn't fit on it.
+If anything in the footer and header that follows causes a \fIbreak\fR,
+that word or part word will be forced out.
+In this and other examples,
+requests like \fBbp\fR and \fBsp\fR that normally cause breaks are invoked using
+the \fIno-break\fR control character \fB\'\fR
+to avoid this.
+When the header\(slfooter design contains material
+requiring independent text processing, the
+environment may be switched, avoiding
+most interaction with the running text.
+.pg
+A more realistic example would be
+.x1
+&de hd \e"header
+&if t .tl \'\|\e(rn\'\'\e(rn\' \e"troff cut mark
+&if \e\en%>1 \e{\e
+\'sp ~\|0.5i\-1 \e"tl base at 0.5i
+&tl \'\'\- % \-\'\' \e"centered page number
+&ps \e"restore size
+&ft \e"restore font
+&vs \e} \e"restore vs
+\'sp ~\|1.0i \e"space to 1.0i
+&ns \e"turn on no-space mode
+&&
+&de fo \e"footer
+&ps 10 \e"set footer\(slheader size
+&ft R \e"set font
+&vs 12p \e"set base-line spacing
+&if \e\en%=1 \e{\e
+\'sp ~\|\e\en(.pu\-0.5i\-1 \e"tl base 0.5i up
+&tl \'\'\- % \-\'\' \e} \e"first page number
+\'bp
+&&
+&wh 0 hd
+&wh \-1i fo
+.x2
+which sets the size, font, and base-line spacing for the
+header\(slfooter material, and ultimately restores them.
+The material in this case is a page number at the bottom of the
+first page and at the top of the remaining pages.
+If \*(TR is used, a \fIcut mark\fR is drawn in the form
+of \fIroot-en\fR's at each margin.
+The \fBsp\fR's refer to absolute positions to avoid
+dependence on the base-line spacing.
+Another reason for this in the footer
+is that the footer is invoked by printing a line whose
+vertical spacing swept past the trap position by possibly
+as much as the base-line spacing.
+The \fIno-space\fR mode is turned on at the end of \fBhd\fR
+to render ineffective
+accidental occurrences of \fBsp\fR at the top of the running text.
+.pg
+The above method of restoring size, font, etc. presupposes
+that such requests (that set \fIprevious\fR value) are \fInot\fR
+used in the running text.
+A better scheme is save and restore both the current \fIand\fR
+previous values as shown for size in the following:
+.x1
+&de fo
+&nr s1 \e\en(.s \e"current size
+&ps
+&nr s2 \e\en(.s \e"previous size
+& --- \e"rest of footer
+&&
+&de hd
+& --- \e"header stuff
+&ps \e\en(s2 \e"restore previous size
+&ps \e\en(s1 \e"restore current size
+&&
+.x2
+Page numbers may be printed in the bottom margin
+by a separate macro triggered during the footer's
+page ejection:
+.x1
+&de bn \e"bottom number
+&tl \'\'\- % \-\'\' \e"centered page number
+&&
+&wh \-0.5i\-1v bn \e"tl base 0.5i up
+.x2
+.mh
+Paragraphs and Headings
+.pg
+The housekeeping
+associated with starting a new paragraph should be collected
+in a paragraph macro
+that, for example,
+does the desired preparagraph spacing,
+forces the correct font, size, base-line spacing, and indent,
+checks that enough space remains for \fImore than one\fR line,
+and
+requests a temporary indent.
+.x1
+&de pg \e"paragraph
+&br \e"break
+&ft R \e"force font,
+&ps 10 \e"size,
+&vs 12p \e"spacing,
+&in 0 \e"and indent
+&sp 0.4 \e"prespace
+&ne 1+\e\en(.Vu \e"want more than 1 line
+&ti 0.2i \e"temp indent
+&&
+.x2
+The first break in \fBpg\fR
+will force out any previous partial lines,
+and must occur before the \fBvs\fR.
+The forcing of font, etc. is
+partly a defense against prior error and
+partly to permit
+things like section heading macros to
+set parameters only once.
+The prespacing parameter is suitable for \*(TR;
+a larger space, at least as big as the output device vertical resolution, would be
+more suitable in \*(NR.
+The choice of remaining space to test for in the \fBne\fR
+is the smallest amount greater than one line
+(the \fB.V\fR is the available vertical resolution).
+.pg
+A macro to automatically number section headings
+might look like:
+.x1
+&de sc \e"section
+& --- \e"force font, etc.
+&sp 0.4 \e"prespace
+&ne 2.4+\e\en(.Vu \e"want 2.4+ lines
+.lg 0
+&fi
+.lg
+\e\en+S.
+&&
+&nr S 0 1 \e"init S
+.x2
+The usage is \fB.sc\fR,
+followed by the section heading text,
+followed by \fB.pg\fR.
+The \fBne\fR test value includes one line of heading,
+0.4 line in the following \fBpg\fR, and
+one line of the paragraph text.
+A word consisting of the next section number and a period is
+produced to begin the heading line.
+The format of the number may be set by \fBaf\fR (\(sc8).
+.pg
+Another common form is the labeled, indented paragraph,
+where the label protrudes left into the indent space.
+.x1
+&de lp \e"labeled paragraph
+&pg
+&in 0.5i \e"paragraph indent
+&ta 0.2i 0.5i \e"label, paragraph
+&ti 0
+\et\e\e$1\et\ec \e"flow into paragraph
+&&
+.x2
+The intended usage is "\fB.lp\fR \fIlabel\fR\|";
+\fIlabel\fR will begin at 0.2\|inch, and
+cannot exceed a length of 0.3\|inch without intruding into
+the paragraph.
+The label could be right adjusted against 0.4\|inch by
+setting the tabs instead with \fB.ta|0.4iR|0.5i\fR.
+The last line of \fBlp\fR ends with \fB\ec\fR so that
+it will become a part of the first line of the text
+that follows.
+.mh
+Multiple Column Output
+.pg
+The production of multiple column pages requires
+the footer macro to decide whether it was
+invoked by other than the last column,
+so that it will begin a new column rather than
+produce the bottom margin.
+The header can initialize a column register that
+the footer will increment and test.
+The following is arranged for two columns, but
+is easily modified for more.
+.x1
+&de hd \e"header
+& ---
+&nr cl 0 1 \e"init column count
+&mk \e"mark top of text
+&&
+&de fo \e"footer
+&ie \e\en+(cl<2 \e{\e
+&po +3.4i \e"next column; 3.1+0.3
+&rt \e"back to mark
+&ns \e} \e"no-space mode
+&el \e{\e
+&po \e\enMu \e"restore left margin
+& ---
+\'bp \e}
+&&
+&ll 3.1i \e"column width
+&nr M \e\en(.o \e"save left margin
+.x2
+Typically a portion of the top of the first page
+contains full width text;
+the request for the narrower line length,
+as well as another \fB.mk\fR would
+be made where the two column output was to begin.
+.mh
+Footnote Processing
+.pg
+The footnote mechanism to be described is used by
+imbedding the footnotes in the input text at the
+point of reference,
+demarcated by an initial \fB.fn\fR and a terminal \fB.ef\fR:
+.x1
+&fn
+\fIFootnote text and control lines...\fP
+&ef
+.x2
+In the following,
+footnotes are processed in a separate environment and diverted
+for later printing in the space immediately prior to the bottom
+margin.
+There is provision for the case where the last collected
+footnote doesn't completely fit in the available space.
+.x1
+&de hd \e"header
+& ---
+&nr x 0 1 \e"init footnote count
+&nr y 0\-\e\enb \e"current footer place
+&ch fo \-\e\enbu \e"reset footer trap
+&if \e\en(dn .fz \e"leftover footnote
+&&
+&de fo \e"footer
+&nr dn 0 \e"zero last diversion size
+&if \e\enx \e{\e
+&ev 1 \e"expand footnotes in ev1
+&nf \e"retain vertical size
+&FN \e"footnotes
+&rm FN \e"delete it
+&if "\e\en(.z"fy" .di \e"end overflow diversion
+&nr x 0 \e"disable fx
+&ev \e} \e"pop environment
+& ---
+\'bp
+&&
+&de fx \e"process footnote overflow
+&if \e\enx .di fy \e"divert overflow
+&&
+&de fn \e"start footnote
+&da FN \e"divert (append) footnote
+&ev 1 \e"in environment 1
+&if \e\en+x=1 .fs \e"if first, include separator
+.lg 0
+&fi \e"fill mode
+.lg
+&&
+&de ef \e"end footnote
+&br \e"finish output
+&nr z \e\en(.v \e"save spacing
+&ev \e"pop ev
+&di \e"end diversion
+&nr y \-\e\en(dn \e"new footer position,
+&if \e\enx=1 .nr y \-(\e\en(.v\-\e\enz) \e
+ \e"uncertainty correction
+&ch fo \e\enyu \e"y is negative
+&if (\|\e\en(nl+1v)>(\|\e\en(.p+\e\eny) \e
+&ch fo \e\en(nlu+1v \e"it didn't fit
+&&
+&de fs \e"separator
+\el\'\|1i\' \e"1 inch rule
+&br
+&&
+&de fz \e"get leftover footnote
+&fn
+&nf \e"retain vertical size
+&fy \e"where fx put it
+&ef
+&&
+&nr b 1.0i \e"bottom margin size
+&wh 0 hd \e"header trap
+&wh 12i fo \e"footer trap, temp position
+&wh \-\e\enbu fx \e"fx at footer position
+&ch fo \-\e\enbu \e"conceal fx with fo
+.x2
+The header \fBhd\fR initializes a footnote count register \fBx\fR,
+and sets both the current footer trap position register \fBy\fR and
+the footer trap itself to a nominal position specified in
+register \fBb\fR.
+In addition, if the register \fBdn\fR indicates a leftover footnote,
+\fBfz\fR is invoked to reprocess it.
+The footnote start macro \fBfn\fR begins a diversion (append) in environment 1,
+and increments the count \fBx\fR; if the count is one, the footnote separator \fBfs\fR
+is interpolated.
+The separator is kept in a separate macro to permit user redefinition.
+The footnote end macro \fBef\fR restores
+the previous environment and ends the diversion after saving the spacing size in register \fBz\fR.
+\fBy\fR is then decremented by the size of the footnote, available in \fBdn\fR;
+then on the first footnote, \fBy\fR is further decremented by the difference
+in vertical base-line spacings of the two environments, to
+prevent the late triggering the footer trap from causing the last
+line of the combined footnotes to overflow.
+The footer trap is then set to the lower (on the page) of \fBy\fR or the current page position (\fBnl\fR)
+plus one line, to allow for printing the reference line.
+If indicated by \fBx\fR, the footer \fBfo\fR rereads the footnotes from \fBFN\fR in nofill mode
+in environment 1,
+and deletes \fBFN\fR.
+If the footnotes were too large to fit, the macro \fBfx\fR will be trap-invoked to redivert
+the overflow into \fBfy\fR,
+and the register \fBdn\fR will later indicate to the header whether \fBfy\fR is empty.
+Both \fBfo\fR and \fBfx\fR are planted in the nominal footer trap position in an order
+that causes \fBfx\fR to be concealed unless the \fBfo\fR trap is moved.
+The footer then terminates the overflow diversion, if necessary, and
+zeros \fBx\fR to disable \fBfx\fR,
+because the uncertainty correction
+together with a not-too-late triggering of the footer can result
+in the footnote rereading finishing before reaching the \fBfx\fR trap.
+.pg
+A good exercise for the student is to combine the multiple-column and footnote mechanisms.
+.mh
+The Last Page
+.pg
+After the last input file has ended, \*(NR and \*(TR
+invoke the \fIend macro\fR (\(sc7), if any,
+and when it finishes, eject the remainder of the page.
+During the eject, any traps encountered are processed normally.
+At the \fIend\fR of this last page, processing terminates
+\fIunless\fR a partial line, word, or partial word remains.
+If it is desired that another page be started, the end-macro
+.x1
+&de en \e"end-macro
+\ec
+\'bp
+&&
+&em en
+.x2
+will deposit a null partial word,
+and effect another last page.
+.1C
+'bp
diff --git a/share/doc/usd/21.troff/table1 b/share/doc/usd/21.troff/table1
new file mode 100644
index 0000000..d0fad8f
--- /dev/null
+++ b/share/doc/usd/21.troff/table1
@@ -0,0 +1,129 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)table1 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.pn 30
+.rm mx
+.br
+.tr &&
+.tr ||
+.tr ~~
+.de aa
+.nf
+abcdefghijklmnopqrstuvwxyz
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+1234567890
+.ss 9
+! $ % & ( ) ` ' * + \- . , / : ; = ? [ ] |
+.fi
+\(bu \(sq \(em \(hy \(ru \(14 \(12 \(34 \(fi \(fl \(ff
+\(Fi \(Fl
+\(de \(dg \(fm
+\(ct \(rg \(co
+.ss 12
+..
+.de bb
+.ss 9
+.fi
+.ll 5i
+" \' \e ^ \_ \` ~ \(sl < > { } # @ \(pl \(mi \(eq \(**
+.br
+\(*a \(*b \(*g \(*d \(*e \(*z \(*y \(*h \(*i \(*k \(*l \(*m
+\(*n \(*c \(*o \(*p \(*r \(*s \(ts \(*t \(*u \(*f \(*x \(*q \(*w
+.br
+\(*G \(*D \(*H \(*L \(*C \(*P \(*S \(*U \(*F \(*Q \(*W
+.br
+\(sr \(rn \(>= \(<= \(== \(ap \(~= \(!=
+\(-> \(<- \(ua \(da \(mu
+\(di \(+- \(cu \(ca \(sb \(sp \(ib \(ip \(if \(pd
+.br
+\(sc \(gr \(no \(is \(pt \(es \(mo
+\(dd \(rh \(lh \(or \(ci
+\(lt \(lb \(rt \(rb \(lk \(rk \(bv \(lf \(rf \(lc \(rc
+\(br
+.br
+.ss 12
+.nf
+..
+.nf
+.ps 12
+.vs 14p
+.ft B
+.ce
+.sp 3
+Table I
+.sp
+.ce
+Font Style Examples
+.sp .5i
+.ft R
+.ps 10
+.fi
+.vs 12p
+.na
+The following fonts are printed in 12-point, with a vertical spacing of 14-point,
+and with
+non-alphanumeric characters separated by \(14\|em space (all measurements
+on 8.5 \(mu 11 inch paper prior to photoreduction).
+This font sample is printed on an Apple Laserwriter
+at University of California, Berkeley.
+.sp .5i
+.ps 12
+.vs 14p
+.ft R
+Times Roman
+.sp .5
+.aa
+.sp
+.ft I
+Times Italic
+.sp .5
+.aa
+.sp
+.ft B
+Times Bold
+.sp .5
+.aa
+.sp
+.ft R
+Special Mathematical Font
+.sp .5
+.fi
+.ll 5i
+.bb
+.bp
diff --git a/share/doc/usd/21.troff/table2 b/share/doc/usd/21.troff/table2
new file mode 100644
index 0000000..7d212c0
--- /dev/null
+++ b/share/doc/usd/21.troff/table2
@@ -0,0 +1,253 @@
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" @(#)table2 8.1 (Berkeley) 8/14/93
+.\"
+.\" $FreeBSD$
+.sp 100
+.br
+.de mx
+.nf
+.ft I
+.ta .25iC .5i +.45i 3.25iC +.25i +.45i
+ Input Character Input Character
+ Char Name Name Char Name Name
+.ft R
+.sp .2
+.nr cl 0
+.mk
+..
+.br
+.tr ~~
+.nf
+.ps 12
+.vs 14p
+.ft B
+.ce
+Table II
+.sp
+.ce 2
+Input Naming Conventions for \', \`, and \-
+and for Non-ASCII Special Characters
+.sp .5i
+.ft R
+.ps 10
+.vs 12p
+.ft B
+.bd I 3
+Non-\s-1ASCII\s+1 characters and \fIminus\fP on the standard fonts.
+.sp
+.ft R
+.de cl
+.ie \\n+(cl<2 \{\
+.po +3.0i
+.rt
+.\}
+.el .sc
+..
+.de sc
+.po 26i/27u
+.nr cl 0
+..
+.nr cl 0 1
+.de qq
+ \&' \' close quote
+ ` \` open quote
+ \(em \e\|(em 3\(sl4 Em dash
+ - \- hyphen or
+ \(hy \e\|(hy hyphen
+ \- \e\- current font minus
+ \(bu \e\|(bu bullet
+ \(sq \e\|(sq square
+ \(ru \e\|(ru rule
+ \(14 \e\|(14 1\(sl4
+ \(12 \e\|(12 1\(sl2
+ \(34 \e\|(34 3\(sl4
+ \(fi \e\|(fi fi
+ \(fl \e\|(fl fl
+ \(ff \e\|(ff ff
+ \(Fi \e\|(Fi ffi
+ \(Fl \e\|(Fl ffl
+ \(de \e\|(de degree
+ \(dg \e\|(dg dagger
+ \(fm \e\|(fm foot mark
+ \(ct \e\|(ct cent sign
+ \(rg \e\|(rg registered
+ \(co \e\|(co copyright
+..
+.di zz
+.lg 0
+.qq
+.di
+.lg
+.mx
+.nr aa \n(dn/2
+.ne \n(aau+1
+.nr bb \n(nl+\n(aa
+.wh \n(bbu cl
+.qq
+.sp |\n(bbu
+.ch cl 12i
+.fi
+.sp 2
+.ft B
+.bd I
+Non-\s-1ASCII\s+1 characters and \', \`, \_\|, \(pl, \(mi, \(eq, and \(** on the special font.
+.sp .4
+.ft R
+.fi
+.ps 10
+The ASCII characters @, #, ", \', \`, <, >, \\, {, }, ~, ^, and \(ul exist
+\fIonly\fR on the special font and are printed as a 1-em space if that font
+is not mounted.
+The following characters exist only on the special font except
+for the upper case Greek letter names followed by \(dg which are mapped into
+upper case English letters in
+whatever font is mounted on font position one (default Times Roman).
+The special math plus, minus, and equals are provided to
+insulate the appearance of equations from the choice of standard fonts.
+.bd I 3
+.nf
+.ps 10
+.sp
+.ch cl \nmu-\n(.vu-1u
+.mx
+.lg 0
+ \(pl \e\|(pl math plus
+ \(mi \e\|(mi math minus
+ \(eq \e\|(eq math equals
+ \(** \e\|(** math star
+ \(sc \e\|(sc section
+ \(aa \e\|(aa acute accent
+ \(ga \e\|(ga grave accent
+ \(ul \e\|(ul underrule
+ \(sl \e\|(sl slash (matching backslash)
+ \(*a \e\|(*a alpha
+ \(*b \e\|(*b beta
+ \(*g \e\|(*g gamma
+ \(*d \e\|(*d delta
+ \(*e \e\|(*e epsilon
+ \(*z \e\|(*z zeta
+ \(*y \e\|(*y eta
+ \(*h \e\|(*h theta
+ \(*i \e\|(*i iota
+ \(*k \e\|(*k kappa
+ \(*l \e\|(*l lambda
+ \(*m \e\|(*m mu
+ \(*n \e\|(*n nu
+ \(*c \e\|(*c xi
+ \(*o \e\|(*o omicron
+ \(*p \e\|(*p pi
+ \(*r \e\|(*r rho
+ \(*s \e\|(*s sigma
+ \(ts \e\|(ts terminal sigma
+ \(*t \e\|(*t tau
+ \(*u \e\|(*u upsilon
+ \(*f \e\|(*f phi
+ \(*x \e\|(*x chi
+ \(*q \e\|(*q psi
+ \(*w \e\|(*w omega
+ \(*A \e\|(*A Alpha\(dg
+ \(*B \e\|(*B Beta\(dg
+ \(*G \e\|(*G Gamma
+ \(*D \e\|(*D Delta
+ \(*E \e\|(*E Epsilon\(dg
+ \(*Z \e\|(*Z Zeta\(dg
+ \(*Y \e\|(*Y Eta\(dg
+ \(*H \e\|(*H Theta
+ \(*I \e\|(*I Iota\(dg
+ \(*K \e\|(*K Kappa\(dg
+ \(*L \e\|(*L Lambda
+ \(*M \e\|(*M Mu\(dg
+ \(*N \e\|(*N Nu\(dg
+ \(*C \e\|(*C Xi
+ \(*O \e\|(*O Omicron\(dg
+ \(*P \e\|(*P Pi
+ \(*R \e\|(*R Rho\(dg
+ \(*S \e\|(*S Sigma
+ \(*T \e\|(*T Tau\(dg
+ \(*U \e\|(*U Upsilon
+ \(*F \e\|(*F Phi
+ \(*X \e\|(*X Chi\(dg
+ \(*Q \e\|(*Q Psi
+ \(*W \e\|(*W Omega
+ \(sr \e\|(sr square root
+ \(rn \e\|(rn root en extender
+ \(>= \e\|(>= >=
+ \(<= \e\|(<= <=
+ \(== \e\|(== identically equal
+ \(~= \e\|(~= approx =
+ \(ap \e\|(ap approximates
+ \(!= \e\|(!= not equal
+ \(-> \e\|(\(mi> right arrow
+ \(<- \e\|(<\(mi left arrow
+ \(ua \e\|(ua up arrow
+ \(da \e\|(da down arrow
+ \(mu \e\|(mu multiply
+ \(di \e\|(di divide
+ \(+- \e\|(+\(mi plus-minus
+ \(cu \e\|(cu cup (union)
+ \(ca \e\|(ca cap (intersection)
+ \(sb \e\|(sb subset of
+ \(sp \e\|(sp superset of
+ \(ib \e\|(ib improper subset
+ \(ip \e\|(ip improper superset
+ \(if \e\|(if infinity
+ \(pd \e\|(pd partial derivative
+ \(gr \e\|(gr gradient
+ \(no \e\|(no not
+ \(is \e\|(is integral sign
+ \(pt \e\|(pt proportional to
+ \(es \e\|(es empty set
+ \(mo \e\|(mo member of
+ \(br \e\|(br box vertical rule
+ \(dd \e\|(dd double dagger
+ \(rh \e\|(rh right hand
+ \(lh \e\|(lh left hand
+ \(or \e\|(or or
+ \(ci \e\|(ci circle
+ \(lt \e\|(lt left top of big curly bracket
+ \(lb \e\|(lb left bottom
+ \(rt \e\|(rt right top
+ \(rb \e\|(rb right bot
+ \(lk \e\|(lk left center of big curly bracket
+ \(rk \e\|(rk right center of big curly bracket
+ \(bv \e\|(bv bold vertical
+ \(lf \e\|(lf left floor (left bottom of big
+ square bracket)
+ \(rf \e\|(rf right floor (right bottom)
+ \(lc \e\|(lc left ceiling (left top)
+ \(rc \e\|(rc right ceiling (right top)
diff --git a/share/doc/usd/22.trofftut/Makefile b/share/doc/usd/22.trofftut/Makefile
new file mode 100644
index 0000000..a3f32fd
--- /dev/null
+++ b/share/doc/usd/22.trofftut/Makefile
@@ -0,0 +1,45 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# Redistributions of source code and documentation must retain the above
+# copyright notice, this list of conditions and the following
+# disclaimer.
+#
+# 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.
+#
+# All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+#
+# This product includes software developed or owned by Caldera
+# International, Inc. Neither the name of Caldera International, Inc.
+# nor the names of other contributors may be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+# INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+# IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# $FreeBSD$
+
+VOLUME= usd/22.trofftut
+SRCS= tt.mac tt00 tt01 tt02 tt03 tt04 tt05 tt06 tt07 tt08 tt09 tt10 \
+ tt11 tt12 tt13 tt14 ttack ttcharset ttindex
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/22.trofftut/tt.mac b/share/doc/usd/22.trofftut/tt.mac
new file mode 100644
index 0000000..4bc3bb7
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt.mac
@@ -0,0 +1,111 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt.mac 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.tr _\(em
+.tr *\(**
+.de UL
+.if n .ul
+.if n \\$3\\$1\\$2
+.if t \\$3\f3\\$1\fP\\$2
+..
+.de UC
+\\$3\s-1\\$1\s+1\\$2
+..
+.de C
+.if n .ul
+.if n \\$3\\$1\\$2
+.if t \\$3\f3\\$1\fP\\$2
+..
+.de IT
+.if t \\$3\f2\\$1\fP\\$2
+.if n .ul
+.if n \\$3\\$1\\$2
+..
+.de UI
+\f3\\$1\fI\\$2\fR\\$3
+..
+.de P1
+.if n .ls 1
+.nf
+.\" use first argument as indent if present
+.if \\n(.$ .DS I \\$1
+.if !\\n(.$ .DS I 5
+.ta .75i 1.5i 2.25i 3i 3.75i
+.tr '\'
+..
+.de P2
+.tr ''
+.DE
+.if n .ls 2
+.lg
+..
+.if t .ds m \(mi
+.if n .ds m -
+.if t .ds n \(no
+.if n .ds n -
+.if t .ds s \v'.41m'\s+4*\s-4\v'-.41m'
+.if n .ds s *
+.if t .ds S \(sl
+.if n .ds S /
+.if t .ds d \s+4\&.\&\s-4
+.if n .ds d \&.\&
+.if t .ds a \z@@
+.if n .ds a @
+.hy 14
+.\" XXX is this supposed to be a comment? . 2=not last lines; 4= no -xx; 8=no xx-
+.de WS
+.sp \\$1
+..
+.\" ACCENTS say \*'e or \*`e to get e acute or e grave
+.ds ' \h'\w'e'u*4/10'\z\(aa\h'-\w'e'u*4/10'
+.ds e \o"e\'"
+.ds ` \h'\w'e'u*4/10'\z\(ga\h'-\w'e'u*4/10'
+.\" UMLAUT \*:u, etc.
+.ds : \v'-0.6m'\h'(1u-(\\n(.fu%2u))*0.13m+0.06m'\z.\h'0.2m'\z.\h'-((1u-(\\n(.fu%2u))*0.13m+0.26m)'\v'0.6m'
+.\" TILDE and CIRCUMFLEX
+.ds ^ \\k:\h'-\\n(.fu+1u/2u*2u+\\n(.fu-1u*0.13m+0.06m'\z^\h'|\\n:u'
+.ds ~ \\k:\h'-\\n(.fu+1u/2u*2u+\\n(.fu-1u*0.13m+0.06m'\z~\h'|\\n:u'
+.de BD
+\&\\$3\f1\\$1\h\(ts-\w\(ts\\$1\(tsu+1u\(ts\\$1\fP\\$2\&
+..
+.hw semi-colon
diff --git a/share/doc/usd/22.trofftut/tt00 b/share/doc/usd/22.trofftut/tt00
new file mode 100644
index 0000000..f8c5ea7
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt00
@@ -0,0 +1,122 @@
+.\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode!
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt00 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.EH 'USD:22-%''A TROFF Tutorial'
+.OH 'A TROFF Tutorial''USD:22-%'
+.\".RP
+.\" .....TM 76-1273-7 39199 39199-11
+.TL
+A TROFF Tutorial
+.AU "MH 2C-518" 6021
+Brian W. Kernighan
+(updated for 4.3BSD by Mark Seiden)
+.AI
+.\" What's this? .MH
+.\" And this? .OK
+\"Typesetting
+\"Text formatting
+\"NROFF
+.AB
+.PP
+.UL troff
+is a text-formatting program for
+typesetting on the
+.UX
+operating system.
+This device is capable of producing high quality
+text;
+this paper is an example of
+.UL troff
+output.
+.PP
+The phototypesetter itself normally runs with four fonts,
+containing roman, italic and bold letters
+(as on this page),
+a full greek alphabet, and a substantial number of
+special characters and mathematical symbols.
+Characters can be printed in a range of sizes,
+and placed anywhere on the page.
+.PP
+.UL troff
+allows the user full control over fonts,
+sizes, and character positions,
+as well as the usual features of a formatter _
+right-margin justification, automatic hyphenation,
+page titling and numbering, and so on.
+It also provides macros, arithmetic variables and operations,
+and conditional testing, for complicated formatting tasks.
+.PP
+This document is an introduction to the most basic use of
+.UL troff .
+It presents just enough information to enable the user
+to do simple formatting
+tasks like making viewgraphs,
+and to make incremental changes to existing packages
+of
+.UL troff
+commands.
+In most respects, the
+.UC UNIX
+formatter
+.UL nroff
+and a more recent version
+.ul
+(device-independent
+.UL troff)
+are identical to
+the version described here, so this document also serves as a tutorial for
+them as well.
+.PP
+.vs 12p
+\fB\s+1NOTE: This document refers to the historical \f(BItroff\fB program, and
+not to \f(BIgroff\fB. This is a first cut at importing the tutorial from
+4.4BSD, now that the code has been released. It should at some time be modified
+to describe \f(BIgroff\fR.\s0
+.AE
+.nr LL 6.5i
+.nr LT 6.5i
+.\" Unknown macro .CS 13 1 14 0 0 5
+.if t .2C
+.nr PS 9
+.nr VS 11
diff --git a/share/doc/usd/22.trofftut/tt01 b/share/doc/usd/22.trofftut/tt01
new file mode 100644
index 0000000..ff6fb83
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt01
@@ -0,0 +1,223 @@
+.\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode!
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt01 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Introduction
+.tr ^.
+.PP
+.UL troff
+[1]
+is a text-formatting program,
+written originally by J. F. Ossanna,
+for producing
+high-quality printed output from the phototypesetter
+on the
+.UC UNIX
+operating system.
+This document is an example of
+.UL troff
+output.
+.PP
+The single most important rule
+of using
+.UL troff
+is
+not to use it directly, but through some intermediary.
+In many ways,
+.UL troff
+resembles an assembly language _
+a remarkably powerful and flexible one _
+but nonetheless such that many operations must be specified
+at a level of detail and in a form that is too hard
+for most people to use effectively.
+.PP
+For two special applications, there are programs that provide
+an interface to
+.UL troff
+for the majority of users.
+.UL eqn
+[2]
+provides an easy to learn language for typesetting mathematics;
+the
+.UL eqn
+user
+need know no
+.UL troff
+whatsoever
+to typeset mathematics.
+.UL tbl
+[3]
+provides the same convenience for producing tables of arbitrary
+complexity.
+.PP
+For producing straight text (which may well contain mathematics or tables), there are a number of `macro packages'
+that define formatting rules and operations for specific styles
+of documents,
+and reduce the amount of
+direct contact with
+.UL troff .
+In particular, the `\-ms'
+[4],
+PWB/MM [5], and `\-me' [6]
+packages
+for internal memoranda and external papers
+provide most of the facilities needed
+for a wide range of document preparation.\(dg
+.FS
+\(dg Most Berkeley Unix sites only have \-ms and \-me.
+.FE
+(This memo was prepared with `\-ms'.)
+There are also packages for viewgraphs,
+for simulating the older
+.UL roff
+formatters,
+and for other special applications.
+Typically you will find these packages easier to use
+than
+.UL troff
+once you get beyond the most trivial operations;
+you should always consider them first.
+.PP
+In the few cases where existing packages don't do the whole job,
+the solution is
+.ul
+not
+to write an entirely new set of
+.UL troff
+instructions from scratch, but to make small changes
+to adapt packages that already exist.
+.WS
+.PP
+In accordance with this philosophy of letting someone else
+do the work,
+the part of
+.UL troff
+described here is only a small part of the whole,
+although it tries to concentrate on the more useful parts.
+In any case, there is no attempt to be complete.
+Rather, the emphasis is on showing how to do simple things,
+and how to make incremental changes to what already exists.
+The contents of the remaining sections are:
+.sp
+.nf
+.in .1i
+.ta .3i
+\02. Point sizes and line spacing
+\03. Fonts and special characters
+\04. Indents and line length
+\05. Tabs
+\06. Local motions: Drawing lines and characters
+\07. Strings
+\08. Introduction to macros
+\09. Titles, pages and numbering
+10. Number registers and arithmetic
+11. Macros with arguments
+12. Conditionals
+13. Environments
+14. Diversions
+ Appendix: Typesetter character set
+.sp
+.in 0
+.fi
+The
+.UL troff
+described here is the C-language version supplied with
+.UC UNIX
+Version 7 and 32V as documented in [1].
+.WS
+.PP
+To use
+.UL troff
+you have to prepare not only the actual text you want printed,
+but some information that tells
+.ul
+how
+you want it printed.
+(Readers who use
+.UL roff
+will find the approach familiar.)
+For
+.UL troff
+the text
+and
+the formatting information are often intertwined quite intimately.
+Most commands to
+.UL troff
+are placed on a line separate from the text itself,
+beginning with a period (one command per line).
+For example,
+.P1
+Some text.
+^ps 14
+Some more text.
+.P2
+will change the `point size',
+that is,
+the size of the letters being printed,
+to `14 point' (one point is 1/72 inch) like this:
+.P1
+.fi
+Some text.
+.ps 14
+Some more text.
+.ps 10
+.P2
+.PP
+Occasionally, though,
+something special occurs in the middle of a line _
+to produce
+.P1
+Area = \(*p\fIr\fR\|\s8\u2\d\s0
+.P2
+you have to type
+.P1
+Area = \e(*p\efIr\efR\e\^|\^\es8\eu2\ed\es0
+.P2
+(which we will explain shortly).
+The backslash character
+.BD \e
+is used
+to introduce
+.UL troff
+commands and special characters within a line of text.
diff --git a/share/doc/usd/22.trofftut/tt02 b/share/doc/usd/22.trofftut/tt02
new file mode 100644
index 0000000..4d14a52
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt02
@@ -0,0 +1,244 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt02 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Point Sizes; Line Spacing
+.PP
+As mentioned above,
+the command
+.BD .ps
+sets the point size.
+One point is 1/72 inch,
+so 6-point characters are at most 1/12 inch high,
+and 36-point characters are \(12 inch.
+There are 15 point sizes, listed below.
+.P1 1
+.ps 6
+6 point: Pack my box with five dozen liquor jugs.
+.ps 7
+.vs 8p
+7 point: Pack my box with five dozen liquor jugs.
+.vs 9p
+.ps 8
+8 point: Pack my box with five dozen liquor jugs.
+.vs 10p
+.ps 9
+9 point: Pack my box with five dozen liquor jugs.
+.vs 11p
+.ps 10
+10 point: Pack my box with five dozen liquor
+.vs 12p
+.ps 11
+11 point: Pack my box with five dozen
+.vs 14p
+.ps 12
+12 point: Pack my box with five dozen
+.vs 16p
+.ps 14
+14 point: Pack my box with five
+.vs 24p
+\s1616 point\s18 18 point\s20 20 point
+.vs 40p
+\s2222\s24 24\s28 28\s36 36
+.ps 10
+.vs 12p
+.P2
+.PP
+If the number after
+.BD .ps
+is not one of these
+legal sizes,
+it is rounded up to the next valid value,
+with a maximum of 36.
+If no number follows
+.BD .ps ,
+.UL troff
+reverts to the previous size, whatever it was.
+.UL troff
+begins with point size 10,
+which is usually fine.
+The original of this document (on 8.5 by 11 inch paper) is in 9 point.
+.PP
+The point size can also be changed in the middle of a line
+or even a word
+with the in-line command
+.BD \es .
+To produce
+.P1
+\s8UNIX\s10 runs on a \s8PDP-\s1011/45
+.P2
+type
+.P1
+\es8UNIX\es10 runs on a \es8PDP-\es1011/45
+.P2
+As above,
+.BD \es
+should be followed by a legal point size,
+except that
+.BD \es0
+causes the size to revert to
+its previous value.
+Notice that
+.BD \es1011
+can be understood correctly as `size 10, followed by an 11', if the size is legal,
+but not otherwise.
+Be cautious with similar constructions.
+.PP
+Relative size changes are also legal and useful:
+.P1
+\es\-2UNIX\es+2
+.P2
+temporarily decreases the size, whatever it is, by two points, then
+restores it.
+Relative size changes have the advantage that the size difference
+is independent of the starting size of the document.
+The amount of the relative change is restricted
+to a single digit.
+.WS
+.PP
+The other parameter that determines what the type looks like
+is the spacing between lines,
+which is set independently of the point size.
+Vertical spacing is measured from the bottom of one line to
+the bottom of the next.
+The command to control vertical spacing is
+.BD .vs .
+For running text, it is usually best to set the vertical spacing
+about 20% bigger than the character size.
+For example, so far in this document, we have used
+``9 on 11'', that is,
+.P1
+^ps 9
+^vs 11p
+.P2
+If we changed to
+.P1
+^ps 9
+^vs 9p
+.P2
+.vs 9p
+.ne 3
+the running text would look like this.
+After a few lines, you will agree it looks a little cramped.
+The right vertical spacing is partly a matter of taste, depending on how
+much text you want to squeeze into a given space,
+and partly a matter of traditional printing style.
+By default,
+.UL troff
+uses 10 on 12.
+.PP
+.vs 14p
+.ps 12
+Point size and vertical spacing make a substantial difference in the amount of text
+per square inch.
+This is 12 on 14.
+.ne 2
+.PP
+.ne 2
+.ps 6
+.vs 7p
+Point size and vertical spacing make a substantial difference in the amount of text
+per square inch.
+For example,
+10 on 12 uses about twice as much space as 7 on 8.
+This is 6 on 7, which is even smaller.
+It packs a lot more words per line,
+but you can go blind trying to read it.
+.PP
+When used without arguments,
+.BD .ps
+and
+.BD .vs
+revert to the previous size and vertical spacing
+respectively.
+.WS
+.PP
+The command
+.BD .sp
+is used to get extra vertical space.
+Unadorned,
+it gives you one extra blank line (one
+.BD .vs ,
+whatever that has been set to).
+Typically, that's more or less than you want,
+so
+.BD .sp
+can be followed by
+information about how much space you want _
+.P1
+^sp 2i
+.P2
+means `two inches of vertical space'.
+.P1
+^sp 2p
+.P2
+means `two points of vertical space';
+and
+.P1
+^sp 2
+.P2
+means `two vertical spaces' _ two of whatever
+.BD .vs
+is set to
+(this can also be made explicit with
+.BD .sp\ 2v );
+.UL troff
+also understands decimal fractions in most places,
+so
+.P1
+^sp 1.5i
+.P2
+is a space of 1.5 inches.
+These same scale factors can be used after
+.BD .vs
+to define line spacing, and in fact after most commands
+that deal with physical dimensions.
+.PP
+It should be noted that all size numbers are converted internally
+to `machine units', which are 1/432 inch
+(1/6 point).
+For most purposes, this is enough resolution
+that you don't have to worry about the accuracy of the representation.
+The situation is not quite so good vertically,
+where resolution is 1/144 inch
+(1/2 point).
diff --git a/share/doc/usd/22.trofftut/tt03 b/share/doc/usd/22.trofftut/tt03
new file mode 100644
index 0000000..e475d45
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt03
@@ -0,0 +1,240 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt03 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Fonts and Special Characters
+.PP
+.UL troff
+and the typesetter allow four different fonts at any one time.
+Normally three fonts (Times roman, italic and bold) and one collection of special characters
+are permanently
+mounted.
+.P1 2
+.ft R
+abcdefghijklmnopqrstuvwxyz 0123456789
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+.ft I
+abcdefghijklmnopqrstuvwxyz 0123456789
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+.ft B
+abcdefghijklmnopqrstuvwxyz 0123456789
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+.ft R
+.P2
+The
+greek, mathematical symbols and miscellany
+of the special font are
+listed in Appendix A.
+.PP
+.UL troff
+prints in roman unless told otherwise.
+To switch into bold, use
+the
+.BD .ft
+command
+.P1
+^ft B
+.P2
+and for italics,
+.P1
+^ft I
+.P2
+To return to roman, use
+.BD .ft\ R ;
+to return to the previous font,
+whatever it was,
+use either
+.BD .ft\ P
+or just
+.BD .ft .
+The `underline' command
+.P1
+^ul
+.P2
+causes the next input line to print in italics.
+.BD .ul
+can be followed by a count to
+indicate that more than one line is to be italicized.
+.PP
+Fonts can also be changed within a line or word
+with the in-line command
+.BD \ef :
+.P1
+\fBbold\fIface\fR text
+.P2
+is produced by
+.P1
+\efBbold\efIface\efR text
+.P2
+If you want to do this so the previous font, whatever it was,
+is left undisturbed, insert extra
+.BD \efP
+commands, like this:
+.P1
+\efBbold\efP\efIface\efP\efR text\efP
+.P2
+Because only the immediately previous font is remembered,
+you have to restore the previous font after each change
+or you can lose it.
+The same is true of
+.BD .ps
+and
+.BD .vs
+when used without an argument.
+.PP
+There are other fonts available besides the standard set,
+although you can still use only four at any given time.
+The command
+.BD .fp
+tells
+.UL troff
+what fonts are physically mounted on the typesetter:
+.P1
+^fp 3 H
+.P2
+says that the Helvetica font is mounted on position 3.
+(The complete list of font sizes and styles depends on
+your typesetter or laser printer.)
+Appropriate
+.BD .fp
+commands should appear at the beginning of your document
+if you do not use the standard fonts.
+.PP
+It is possible to make a document relatively independent
+of the actual fonts used to print it
+by using font numbers instead of names;
+for example,
+.BD \ef3
+and
+.BD .ft\ 3
+mean `whatever font is mounted at position 3',
+and thus work for any setting.
+Normal settings are roman font on 1, italic on 2,
+bold on 3,
+and special on 4.
+.PP
+There is also a way to get `synthetic' bold fonts
+by overstriking letters with a slight offset.
+Look at the
+.BD .bd
+command in [1].
+.WS
+.PP
+Special characters have four-character names beginning with
+.BD \e( ,
+and they may be inserted anywhere.
+For example,
+.P1
+\(14 + \(12 = \(34
+.P2
+is produced by
+.P1
+\e(14 + \e(12 = \e(34
+.P2
+In particular,
+greek letters are all of the form
+.BD \e(*\- ,
+where
+.BD \-
+is an upper or lower case roman letter
+reminiscent of the greek.
+Thus
+to get
+.P1
+\(*S(\(*a\(mu\(*b) \(-> \(if
+.P2
+in bare
+.UL troff
+we have to type
+.P1
+\e(*S(\e(*a\e(mu\e(*b) \e(\(mi> \e(if
+.P2
+That line is unscrambled as follows:
+.P1
+.ta 1i 2i 3i
+\e(*S \(*S
+( (
+\e(*a \(*a
+\e(mu \(mu
+\e(*b \(*b
+) )
+\e(\(mi> \(->
+\e(if \(if
+.P2
+A complete list of these special names occurs in Appendix A.
+.PP
+In
+.UL eqn
+[2]
+the same effect can be achieved with the input
+.P1
+SIGMA ( alpha times beta ) \-> inf
+.P2
+which is less concise, but clearer to the uninitiated.
+.PP
+Notice that
+each
+four-character name is a single character
+as far as
+.UL troff
+is concerned _
+the
+`translate' command
+.P1
+^tr \e(mi\e(em
+.P2
+is perfectly clear, meaning
+.P1
+^tr \(mi\(em
+.P2
+that is, to translate \(mi into \(em.
+.PP
+Some characters are automatically translated into others:
+grave \(ga and acute \(aa accents (apostrophes) become open and close single quotes
+`\|'\|;
+the combination of ``...'' is generally preferable to the double quotes "...".
+Similarly a typed minus sign becomes a hyphen -.
+To print an explicit \- sign, use
+.BD \e\|- .
+To get a backslash printed, use
+.BD \ee .
diff --git a/share/doc/usd/22.trofftut/tt04 b/share/doc/usd/22.trofftut/tt04
new file mode 100644
index 0000000..c44c94b
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt04
@@ -0,0 +1,189 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt04 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Indents and Line Lengths
+.PP
+.UL troff
+starts with a line length of 6.5 inches,
+which some people think is too wide for 8\(12\(mu11 paper.
+To reset the line length,
+use
+the
+.BD .ll
+command, as in
+.P1
+^ll 6i
+.P2
+As with
+.BD .sp ,
+the actual length can be specified in several ways;
+inches are probably the most intuitive.
+.PP
+The maximum line length provided by the typesetter is 7.5 inches, by the way.
+To use the full width, you will have to reset the default physical left margin (``page offset''),
+which is normally slightly less than one inch from the left edge
+of the paper.
+This is done by the
+.BD .po
+command.
+.P1
+^po 0
+.P2
+sets the offset as far to the left as it will go.
+.WS
+.PP
+The indent command
+.BD .in
+causes the left margin to be indented
+by some specified amount from the page offset.
+If we use
+.BD .in
+to move the left margin in,
+and
+.BD .ll
+to move the right margin to the left,
+we can
+make offset blocks of text:
+.P1
+^in 0.3i
+^ll \(mi0.3i
+text to be set into a block
+^ll +0.3i
+^in \(mi0.3i
+.P2
+will create a block that looks like this:
+.P1
+.fi
+.ll -0.3i
+Pater noster qui est in caelis sanctificetur nomen tuum;
+adveniat regnum tuum; fiat voluntas tua, sicut in caelo,
+et in terra. ...
+Amen.
+.ll +0.3i
+.P2
+Notice the use of `+' and `\(mi'
+to specify the amount of change.
+These change the previous setting by the specified amount,
+rather than just overriding it.
+The distinction is quite important:
+.BD .ll\ +1i
+makes lines one inch longer;
+.BD .ll\ 1i
+makes them one inch
+.ul
+long.
+.PP
+With
+.BD .in ,
+.BD .ll
+and
+.BD .po ,
+the previous value is used if no argument is specified.
+.PP
+To indent a single line, use the `temporary indent'
+command
+.BD .ti .
+For example, all paragraphs in this memo
+effectively begin with the command
+.P1
+^ti 3
+.P2
+Three of what?
+The default unit for
+.BD .ti ,
+as for most horizontally oriented commands
+.BD .ll , (
+.BD .in ,
+.BD .po ),
+is ems;
+an em is roughly the width of the letter `m'
+in the current point size.
+(Precisely, an em in size
+.ul
+p
+is
+.ul
+p
+points.)
+Although inches are usually clearer than ems to people who don't set type
+for a living,
+ems have a place:
+they are a measure of size that is proportional to the current point size.
+If you want to make text that keeps its proportions
+regardless of point size,
+you should use ems for all dimensions.
+Ems can be specified as scale factors directly,
+as in
+.BD .ti\ 2.5m .
+.PP
+Lines can also be indented negatively
+if the indent is already positive:
+.P1
+^ti \(mi0.3i
+.P2
+causes the next line to be moved back three tenths of an inch.
+Thus to make a decorative initial capital,
+we indent the whole paragraph, then move the letter `P' back with
+a
+.BD .ti
+command:
+.P1
+.ll -0.3i
+.fi
+.in +.3i
+.ti -0.3i
+\s36\v'2'P\v'-2'\s0ater noster qui est in caelis sanctificetur
+nomen tuum;
+adveniat regnum tuum;
+'in -.3i
+fiat voluntas tua,
+sicut in caelo, et in terra. ...
+Amen.
+.ll +0.3i
+.P2
+Of course, there is also some trickery to make the `P'
+bigger (just a `\es36P\es0'),
+and to move it
+down from its normal position
+(see the section on local motions).
diff --git a/share/doc/usd/22.trofftut/tt05 b/share/doc/usd/22.trofftut/tt05
new file mode 100644
index 0000000..b7bff82
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt05
@@ -0,0 +1,130 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt05 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Tabs
+.PP
+Tabs
+(the \s8ASCII\s0 `horizontal tab' character)
+can be used to produce output in columns,
+or to set the horizontal position of output.
+Typically
+tabs are used only in unfilled text.
+Tab stops are set by default every half inch from the
+current indent,
+but
+can be changed by the
+.BD .ta
+command.
+To set stops every inch, for example,
+.P1
+^ta 1i 2i 3i 4i 5i 6i
+.P2
+.PP
+Unfortunately the stops are left-justified only
+(as on a typewriter),
+so lining up columns of right-justified numbers can be painful.
+If you have many numbers,
+or if you need more complicated table layout,
+.ul
+don't
+use
+.UL troff
+directly;
+use the
+.UL tbl
+program described in [3].
+.PP
+For a handful of numeric columns, you can do it this way:
+Precede every number by enough blanks to make it line up
+when typed.
+.P1
+^nf
+^ta 1i 2i 3i
+\0\01\0\fItab\fR\0\0\02\0\fItab\fR\0\0\03
+\040\0\fItab\fR\0\050\0\fItab\fR\0\060
+700\0\fItab\fR\0800\0\fItab\fR\0900
+^fi
+.P2
+Then change each leading blank into the string
+.BD \e0 .
+This is a character that does not print, but that has
+the same width as a digit.
+When printed, this will produce
+.P1
+.ta 1i 2i 3i
+\0\01 \0\02 \0\03
+\040 \050 \060
+700 800 900
+.P2
+.PP
+It is also possible to fill up tabbed-over space with
+some character other than blanks by setting the `tab replacement character'
+with the
+.BD .tc
+command:
+.P1
+^ta 1.5i 2.5i
+^tc \e(ru (\e(ru is "\(ru")
+Name \fItab\fR Age \fItab\fR
+.P2
+produces
+.P1 3
+.ta 1.5i 2.5i
+.tc \(ru
+Name Age
+.tc
+.P2
+To reset the tab replacement character to a blank, use
+.BD .tc
+with no argument.
+(Lines can also be drawn with the
+.BD \el
+command, described in Section 6.)
+.PP
+.UL troff
+also provides a very general mechanism called `fields'
+for setting up complicated columns.
+(This is used by
+.UL tbl ).
+We will not go into it in this paper.
diff --git a/share/doc/usd/22.trofftut/tt06 b/share/doc/usd/22.trofftut/tt06
new file mode 100644
index 0000000..3f73958
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt06
@@ -0,0 +1,351 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt06 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Local Motions: Drawing lines and characters
+.PP
+Remember `Area = \(*pr\u2\d' and the big `P'
+in the Paternoster.
+How are they done?
+.UL troff
+provides a host of commands for placing characters of any size
+at any place.
+You can use them to draw special characters
+or to tune your output for a particular appearance.
+Most of these commands are straightforward, but messy to read
+and tough to type correctly.
+.PP
+If you won't use
+.UL eqn ,
+subscripts and superscripts are most easily done with
+the half-line local motions
+.BD \eu
+and
+.BD \ed .
+To go back up the page half a point-size, insert a
+.BD \eu
+at the desired place;
+to go down, insert a
+.BD \ed .
+.BD \eu \& (
+and
+.BD \ed
+should always
+be used in pairs, as explained below.)
+Thus
+.P1
+Area = \e(*pr\eu2\ed
+.P2
+produces
+.P1
+Area = \(*pr\u2\d
+.P2
+To make the `2' smaller, bracket it with
+.BD \es\-2...\es0 .
+Since
+.BD \eu
+and
+.BD \ed
+refer to the current point size,
+be sure to put them either both inside or both outside
+the size changes,
+or you will get an unbalanced vertical motion.
+.PP
+Sometimes the space given by
+.BD \eu
+and
+.BD \ed
+isn't the right amount.
+The
+.BD \ev
+command can be used to request an arbitrary amount of vertical motion.
+The in-line command
+.P1
+\ev'(amount)'
+.P2
+causes motion up or down the page by the amount specified in
+`(amount)'.
+For example, to move the `P' down, we used
+.P1 2
+.ta 1i
+^in +0.6i (move paragraph in)
+^ll \-0.3i (shorten lines)
+^ti \-0.3i (move P back)
+\ev'2'\es36P\es0\ev'\-2'ater noster qui est
+in caelis ...
+.P2
+A minus sign causes upward motion, while
+no sign or a plus sign means down the page.
+Thus
+.BD \ev\(fm\-2\(fm
+causes an upward vertical motion
+of two line spaces.
+.PP
+There are many other ways to specify the amount of motion _
+.P1
+\ev'0.1i'
+\ev'3p'
+\ev'\-0.5m'
+.P2
+and so on are all legal.
+Notice that the scale specifier
+.BD i
+or
+.BD p
+or
+.BD m
+goes inside the quotes.
+Any character can be used in place of the quotes;
+this is also true of all other
+.UL troff
+commands described in this section.
+.PP
+Since
+.UL troff
+does not take within-the-line vertical motions into account
+when figuring out where it is on the page,
+output lines can have unexpected positions
+if the left and right ends aren't at the same
+vertical position.
+Thus
+.BD \ev ,
+like
+.BD \eu
+and
+.BD \ed ,
+should always balance upward vertical motion in a line with
+the same amount in the downward direction.
+.PP
+Arbitrary horizontal motions are also available _
+.BD \eh
+is quite analogous to
+.BD \ev ,
+except that the default scale factor is ems instead of line spaces.
+As an example,
+.P1
+\eh'\-0.1i'
+.P2
+causes a backwards motion of a tenth of an inch.
+As a practical matter, consider printing the mathematical symbol
+`>>'.
+The default spacing is too wide, so
+.UL eqn
+replaces this by
+.P1
+>\eh'\-0.3m'>
+.P2
+to produce >\h'-.3m'>.
+.PP
+Frequently
+.BD \eh
+is used with the `width function'
+.BD \ew
+to generate motions equal to the width
+of some character string.
+The construction
+.P1
+\ew'thing'
+.P2
+is a number equal to the width of `thing' in machine units
+(1/432 inch).
+All
+.UL troff
+computations are ultimately done in these units.
+To move horizontally the width of an `x',
+we can say
+.P1
+\eh'\ew'x'u'
+.P2
+As we mentioned above,
+the default scale factor for
+all horizontal dimensions is
+.BD m ,
+ems, so here we must have the
+.BD u
+for machine units,
+or the motion produced will be far too large.
+.UL troff
+is quite happy with the nested quotes, by the way,
+so long as you don't leave any out.
+.PP
+As a live example of this kind of construction,
+all of the command names in the text, like
+.BD .sp ,
+were done by overstriking with a slight offset.
+The commands for
+.BD .sp
+are
+.P1
+^sp\eh'\-\ew'.sp'u'\eh'1u'.sp
+.P2
+That is, put out `.sp', move left by the width of `.sp',
+move right 1 unit, and print
+`.sp' again.
+(Of course there is a way to avoid typing that much input
+for each command name, which we will discuss in Section 11.)
+.WS
+.PP
+There are also several special-purpose
+.UL troff
+commands for local motion.
+We have already seen
+.BD \e0 ,
+which is an unpaddable white space
+of the same width as a digit.
+`Unpaddable' means that it will never be widened
+or split across a line by line justification and filling.
+There is also
+.BD \e (blank),
+.tr ^^
+which is an unpaddable character the width of a space,
+.BD \e| ,
+which is half that width,
+.BD \e^ ,
+which is one quarter of the width of a space,
+and
+.BD \e& ,
+which has zero width.
+.tr ^.
+(This last one is useful, for example, in entering
+a text line which would otherwise begin with a `.'.)
+.PP
+The command
+.BD \eo ,
+used like
+.P1
+\eo'set of characters'
+.P2
+causes (up to 9)
+characters to be overstruck,
+centered on the widest.
+This is nice for accents, as in
+.P1 2
+syst\eo"e\e(ga"me t\eo"e\e(aa"l\eo"e\e(aa"phonique
+.P2
+which makes
+.P1
+syst\o"e\(ga"me t\o"e\(aa"l\o"e\(aa"phonique
+.P2
+The accents are
+.BD \e(ga
+and
+.BD \e(aa ,
+or
+.BD \e\`
+and
+.BD \e\' ;
+remember that each is just one character to
+.UL troff .
+.PP
+You can make your own overstrikes with another special convention,
+.BD \ez ,
+the zero-motion command.
+.BD \ezx
+suppresses the normal horizontal motion
+after printing the single character
+.BD x ,
+so another character can be laid on top of it.
+Although sizes can be changed within
+.BD \eo ,
+it centers the characters on the widest,
+and
+there can be no horizontal or vertical motions,
+so
+.BD \ez
+may be the only way to get what you want:
+.P1
+.sp 2
+\s8\z\(sq\s14\z\(sq\s22\z\(sq\s36\(sq
+.P2
+is produced by
+.P1
+^sp 2
+\es8\ez\e(sq\es14\ez\e(sq\es22\ez\e(sq\es36\e(sq
+.P2
+The
+.BD .sp
+is needed to leave room for the result.
+.PP
+As another example, an extra-heavy semicolon
+that looks like
+.P1
+\s+6\z,\v'-0.25m'.\v'0.25m'\s0 instead of ; or \s+6;\s0
+.P2
+can be constructed with a big comma and a big period above it:
+.P1
+\es+6\ez,\ev'\(mi0.25m'.\ev'0.25m'\es0
+.P2
+`0.25m' is an experimentally-derived constant.
+.PP
+A more ornate overstrike is given by the bracketing function
+.BD \eb ,
+which piles up characters vertically,
+centered on the current baseline.
+Thus we can get big brackets,
+constructing them with piled-up smaller pieces:
+.P1
+.sp
+.ne 3
+\b'\(lt\(lk\(lb' \b'\(lc\(lf' x \b'\(rc\(rf' \b'\(rt\(rk\(rb'
+.sp
+.P2
+by typing in only this:
+.P1 0
+\&^sp
+\eb\(fm\e(lt\e(lk\e(lb\(fm \eb\(fm\e(lc\e(lf\(fm x \eb\(fm\e(rc\e(rf\(fm \eb\(fm\e(rt\e(rk\e(rb\(fm
+.P2
+.PP
+.UL troff
+also provides a convenient facility for drawing horizontal and vertical
+lines of arbitrary length with arbitrary characters.
+.BD \el\(fm1i\(fm
+draws a line one inch long, like this:
+\l'1i'\|.
+The length can be followed by
+the character to use if the \(ru isn't appropriate;
+.BD \el\(fm0.5i.\(fm
+draws a half-inch line of dots: \l'.5i.'.
+The construction
+.BD \eL
+is entirely analogous,
+except that it draws a vertical line instead of horizontal.
diff --git a/share/doc/usd/22.trofftut/tt07 b/share/doc/usd/22.trofftut/tt07
new file mode 100644
index 0000000..3a8cf57
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt07
@@ -0,0 +1,124 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt07 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Strings
+.PP
+Obviously if a paper contains a large number of occurrences
+of an acute accent over a letter `e',
+typing
+.BD \eo"e\e\'"
+for each \*e
+would be a great nuisance.
+.PP
+Fortunately,
+.UL troff
+provides a way in which you can store an arbitrary
+collection of text in a `string',
+and thereafter use the string name as a shorthand
+for its contents.
+Strings are one of several
+.UL troff
+mechanisms whose judicious use
+lets you type a document
+with less effort and organize
+it
+so that extensive format changes
+can be made with few editing changes.
+.PP
+A reference to a string is replaced by whatever
+text
+the string was defined as.
+Strings are defined with the command
+.BD .ds .
+The line
+.P1
+\&^ds e \eo"e\e'"
+.P2
+defines the string
+.BD e
+to have the value
+.BD \eo"e\e\'"
+.PP
+String names may be either one or two characters long,
+and are referred to by
+.BD \e*x
+for one character names or
+.BD \e*(xy
+for two character names.
+Thus to get
+t\*el\*ephone,
+given the definition of the string
+.BD e
+as above,
+we can say
+t\e*el\e*ephone.
+.PP
+If a string must begin with blanks, define it as
+.P1
+\&.ds xx " text
+.P2
+The double quote signals the beginning of the definition.
+There is no trailing quote;
+the end of the line terminates the string.
+.PP
+A string may actually be several lines long;
+if
+.UL troff
+encounters a
+.BD \e
+at the end of
+.ul
+any
+line, it is thrown away and the next line
+added to the current one.
+So you can make a long string simply by ending each line
+but the last with a backslash:
+.P1
+\&^ds xx this \e
+is a very \e
+long string
+.P2
+.PP
+Strings may be defined in terms of other strings, or even in terms of themselves;
+we will discuss some of these possibilities later.
diff --git a/share/doc/usd/22.trofftut/tt08 b/share/doc/usd/22.trofftut/tt08
new file mode 100644
index 0000000..8f5075d9
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt08
@@ -0,0 +1,199 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt08 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Introduction to Macros
+.PP
+Before we can go much further in
+.UL troff ,
+we need to learn a bit about the
+macro
+facility.
+In its simplest form, a macro is just a shorthand notation
+quite similar to a string.
+Suppose we want every paragraph to start
+in exactly the same way _
+with a space and a temporary indent of two ems:
+.P1
+^sp
+^ti +2m
+.P2
+Then to save typing, we would like to collapse these into
+one shorthand line,
+a
+.UL troff
+`command' like
+.P1
+^PP
+.P2
+that would be treated by
+.UL troff
+exactly as
+.P1
+^sp
+^ti +2m
+.P2
+.BD .PP
+is called a
+.ul
+macro.
+The way we tell
+.UL troff
+what
+.BD .PP
+means is to
+.ul
+define
+it with the
+.BD .de
+command:
+.P1
+^de PP
+^sp
+^ti +2m
+^^
+.P2
+The first line names the macro
+(we used
+.BD .PP ' `
+for `paragraph',
+and upper case so it wouldn't conflict with
+any name that
+.UL troff
+might
+already know about).
+The last line
+.BD ..
+marks the end of the definition.
+In between is the text,
+which is simply inserted whenever
+.UL troff
+sees the `command'
+or macro call
+.P1
+^PP
+.P2
+A macro
+can contain any mixture of text and formatting commands.
+.PP
+The definition of
+.BD .PP
+has to precede its first use;
+undefined macros are simply ignored.
+Names are restricted to one or two characters.
+.PP
+Using macros for commonly occurring sequences of commands
+is critically important.
+Not only does it save typing,
+but it makes later changes much easier.
+Suppose we decide that the paragraph indent is too small,
+the vertical space is much too big,
+and roman font should be forced.
+Instead of changing the whole document,
+we need only change the definition of
+.BD .PP
+to
+something like
+.P1
+^de PP \e" paragraph macro
+^sp 2p
+^ti +3m
+^ft R
+^^
+.P2
+and the change takes
+effect everywhere we used
+.BD .PP .
+.PP
+.BD \e"
+is a
+.UL troff
+command that causes the rest of the line to be ignored.
+We use it here to add comments to the macro
+definition
+(a wise idea once definitions get complicated).
+.PP
+As another example of macros,
+consider these two which start and end a block of offset,
+unfilled text, like most of the examples in this paper:
+.P1
+^de BS \e" start indented block
+^sp
+^nf
+^in +0.3i
+^^
+^de BE \e" end indented block
+^sp
+^fi
+^in \(mi0.3i
+^^
+.P2
+Now we can surround text like
+.P1
+Copy to
+John Doe
+Richard Roberts
+Stanley Smith
+.P2
+by the commands
+.BD .BS
+and
+.BD .BE ,
+and it will come out as it did above.
+Notice that we indented by
+.BD .in\ +0.3i
+instead of
+.BD .in\ 0.3i .
+This way we can nest our uses of
+.BD .BS
+and
+.BD BE
+to get blocks within blocks.
+.PP
+If later on we decide that the indent
+should be 0.5i, then it is only necessary to
+change the definitions of
+.BD .BS
+and
+.BD .BE ,
+not the whole paper.
diff --git a/share/doc/usd/22.trofftut/tt09 b/share/doc/usd/22.trofftut/tt09
new file mode 100644
index 0000000..4a44d34
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt09
@@ -0,0 +1,322 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt09 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Titles, Pages and Numbering
+.PP
+This is an area where things get tougher,
+because nothing is done for you automatically.
+Of necessity, some of this section is a cookbook,
+to be copied literally until you get some experience.
+.PP
+Suppose you want a title at the top of each page,
+saying just
+.sp 3p
+.lt 2.8i
+.tl 'left top'center top'right top'
+.lt
+.sp 3p
+In
+.UL roff ,
+one can say
+.P1 2
+^he 'left top'center top'right top'
+^fo 'left bottom'center bottom'right bottom'
+.P2
+to get headers and footers automatically on every page.
+Alas, this doesn't work so easily in
+.UL troff ,
+a serious hardship for the novice.
+Instead you have to do a lot of specification (or use
+a macro package, which makes it effortless).
+.PP
+You have to say what the actual title is (easy);
+when to print it (easy enough);
+and what to do at and around the title line (harder).
+Taking these in reverse order,
+first we define a macro
+.BD .NP
+(for `new page') to process
+titles and the like at the end of one page
+and the beginning of the next:
+.P1
+^de NP
+\(fmbp
+\(fmsp 0.5i
+\&.tl 'left top'center top'right top'
+\(fmsp 0.3i
+^^
+.P2
+To make sure we're at the top of a page,
+we issue a `begin page' command
+.BD \(fmbp ,
+which causes a skip to top-of-page
+(we'll explain the
+.BD \(fm
+shortly).
+Then we space down half an inch,
+print the title
+(the use of
+.BD .tl
+should be self explanatory; later we will discuss parameterizing the titles),
+space another 0.3 inches,
+and we're done.
+.PP
+To ask for
+.BD .NP
+at the bottom of each page,
+we have to say something like
+`when the text is within an inch
+of the bottom of the page,
+start the processing
+for a new page.'
+This is done with a `when' command
+.BD .wh :
+.P1
+^wh \-1i NP
+.P2
+(No `.' is used before NP;
+this is simply the name of a macro, not a macro call.)
+The minus sign means
+`measure up from the bottom of the page',
+so
+`\-1i' means `one inch from the bottom'.
+.PP
+The
+.BD .wh
+command appears in the input outside the definition of
+.BD .NP ;
+typically the input would be
+.P1
+^de NP
+^^^
+^^
+^wh \-1i NP
+.P2
+.PP
+Now what happens?
+As text is actually being output,
+.UL troff
+keeps track of its vertical position on the page,
+and after a line is printed within one inch from the bottom,
+the
+.BD .NP
+macro is activated.
+(In the jargon, the
+.BD .wh
+command sets a
+.ul
+trap
+at the specified place,
+which is `sprung' when that point is passed.)
+.BD .NP
+causes a skip to the top of the next page
+(that's what the
+.BD \(fmbp
+was for),
+then prints the title with the appropriate margins.
+.PP
+Why
+.BD \(fmbp
+and
+.BD \(fmsp
+instead of
+.BD .bp
+and
+.BD .sp ?
+The answer is that
+.BD .sp
+and
+.BD .bp ,
+like several other commands,
+cause a
+.ul
+break
+to take place.
+That is, all the input text collected but not yet printed
+is flushed out as soon as possible,
+and the next input line is guaranteed to start
+a new line of output.
+If we had used
+.BD .sp
+or
+.BD .bp
+in the
+.BD .NP
+macro,
+this would cause a break in the middle
+of the current output line when a new page is started.
+The effect would be to print the left-over part of that line
+at the top of the page, followed by the next input line on a new output line.
+This is
+.ul
+not
+what we want.
+Using
+.BD \(fm
+instead of
+.BD .
+for a command
+tells
+.UL troff
+that
+no break is to take place _
+the output line
+currently being filled
+should
+.ul
+not
+be forced out before the space or new page.
+.PP
+The list of commands that cause a break
+is short and natural:
+.P1
+^bp ^br ^ce ^fi ^nf ^sp ^in ^ti
+.P2
+All others cause
+.ul
+no
+break,
+regardless of whether you use a
+.BD .
+or a
+.BD \(fm .
+If you really need a break, add a
+.BD .br
+command at the appropriate place.
+.PP
+One other thing to beware of _
+if you're changing fonts or point sizes a lot,
+you may find that
+if you cross a page boundary
+in an unexpected font or size,
+your titles come out in that size and font
+instead of what you intended.
+Furthermore, the length of a title is independent of the current line length,
+so titles will come out at the default length of 6.5 inches
+unless you change it,
+which is done with the
+.BD .lt
+command.
+.PP
+There are several ways to fix the problems of point sizes
+and fonts in titles.
+For the simplest applications, we can change
+.BD .NP
+to set the proper size and font for the title,
+then restore the previous values, like this:
+.P1 2
+.ta .8i
+^de NP
+\(fmbp
+\(fmsp 0.5i
+^ft R \e" set title font to roman
+^ps 10 \e" and size to 10 point
+^lt 6i \e" and length to 6 inches
+^tl 'left'center'right'
+^ps \e" revert to previous size
+^ft P \e" and to previous font
+\(fmsp 0.3i
+^^
+.P2
+.PP
+This version of
+.BD .NP
+does
+.ul
+not
+work if the fields in the
+.BD .tl
+command contain size or font changes.
+To cope with that
+requires
+.UL troff 's
+`environment' mechanism,
+which we will discuss in Section 13.
+.PP
+To get a footer at the bottom of a page,
+you can modify
+.BD .NP
+so it does
+some processing before
+the
+.BD \(fmbp
+command,
+or split the job into a footer macro invoked
+at the bottom margin and a header macro invoked
+at the top of the page.
+These variations are left as exercises.
+.WS
+.PP
+Output page numbers are computed automatically
+as each page is produced (starting at 1),
+but no numbers are printed unless you ask for them explicitly.
+To get page numbers printed,
+include the character
+.BD %
+in the
+.BD .tl
+line at
+the position where you want the number to appear.
+For example
+.P1
+^tl ''- % -''
+.P2
+centers the page number inside hyphens, as on this page.
+You can set the page number at any time
+with either
+.BD .bp\ n ,
+which immediately starts a new page numbered
+.BD n ,
+or with
+.BD .pn\ n ,
+which sets the page number for the next page
+but doesn't cause a skip to the new page.
+Again,
+.BD .bp\ +n
+sets the page number to
+.BD n
+more than its current value;
+.BD .bp
+means
+.BD .bp\ +1 .
diff --git a/share/doc/usd/22.trofftut/tt10 b/share/doc/usd/22.trofftut/tt10
new file mode 100644
index 0000000..a63bebd
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt10
@@ -0,0 +1,256 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt10 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Number Registers and Arithmetic
+.PP
+.UL troff
+has a facility for doing arithmetic,
+and for defining and using variables with numeric values,
+called
+.ul
+number registers.
+Number registers, like strings and macros, can be useful in setting up a document
+so it is easy to change later.
+And of course they serve for any sort of arithmetic computation.
+.PP
+Like strings, number registers have one or two character names.
+They are set by the
+.BD .nr
+command,
+and are referenced anywhere by
+.BD \enx
+(one character name) or
+.BD \en(xy
+(two character name).
+.PP
+There are quite a few pre-defined number registers maintained by
+.UL troff ,
+among them
+.BD %
+for the current page number;
+.BD nl
+for the current vertical position on the page;
+.BD dy ,
+.BD mo
+and
+.BD yr
+for the current day, month and year; and
+.BD .s
+and
+.BD .f
+for the current size and font.
+(The font is a number from 1 to 4.)
+Any of these can be used in computations like any other register,
+but some, like
+.BD .s
+and
+.BD .f ,
+cannot be changed with
+.BD .nr .
+.PP
+As an example of the use of number registers,
+in the
+.BD \-ms
+macro package [4],
+most significant parameters are defined in terms of the values
+of a handful of number registers.
+These include the point size for text, the vertical spacing,
+and the line and title lengths.
+To set the point size and vertical spacing for the following paragraphs, for example, a user may say
+.P1
+^nr PS 9
+^nr VS 11
+.P2
+The paragraph macro
+.BD .PP
+is defined (roughly) as follows:
+.P1
+.ta 1i
+^de PP
+^ps \e\en(PS \e" reset size
+^vs \e\en(VSp \e" spacing
+^ft R \e" font
+^sp 0.5v \e" half a line
+^ti +3m
+^^
+.P2
+This sets the font to Roman and the point size and line spacing
+to whatever values are stored in the number registers
+.BD PS
+and
+.BD VS .
+.PP
+Why are there two backslashes?
+This is the eternal problem of how to quote a quote.
+When
+.UL troff
+originally reads the macro definition,
+it peels off one backslash
+to see what's coming next.
+To ensure that another is left in the definition when the
+macro is
+.ul
+used,
+we have to put in two backslashes in the definition.
+If only one backslash is used,
+point size and vertical spacing will be frozen at the time the macro
+is defined, not when it is used.
+.PP
+Protecting by an extra layer of backslashes
+is only needed for
+.BD \en ,
+.BD \e* ,
+.BD \e$
+(which we haven't come to yet),
+and
+.BD \e
+itself.
+Things like
+.BD \es ,
+.BD \ef ,
+.BD \eh ,
+.BD \ev ,
+and so on do not need an extra backslash,
+since they are converted by
+.UL troff
+to an internal code immediately upon being seen.
+.WS
+.PP
+Arithmetic expressions can appear anywhere that
+a number is expected.
+As a trivial example,
+.P1
+^nr PS \e\en(PS\-2
+.P2
+decrements PS by 2.
+Expressions can use the arithmetic operators +, \-, *, /, % (mod),
+the relational operators >, >=, <, <=, =, and != (not equal),
+and parentheses.
+.PP
+Although the arithmetic we have done so far
+has been straightforward,
+more complicated things are somewhat tricky.
+First,
+number registers hold only integers.
+.UL troff
+arithmetic uses truncating integer division, just like Fortran.
+Second, in the absence of parentheses,
+evaluation is done left-to-right
+without any operator precedence
+(including relational operators).
+Thus
+.P1
+7*\-4+3/13
+.P2
+becomes `\-1'.
+Number registers can occur anywhere in an expression,
+and so can scale indicators like
+.BD p ,
+.BD i ,
+.BD m ,
+and so on (but no spaces).
+Although integer division causes truncation,
+each number and its scale indicator is converted
+to machine units (1/432 inch) before any arithmetic is done,
+so
+1i/2u
+evaluates to
+0.5i
+correctly.
+.PP
+The scale indicator
+.BD u
+often has to appear
+when you wouldn't expect it _
+in particular, when arithmetic is being done
+in a context that implies horizontal or vertical dimensions.
+For example,
+.P1
+^ll 7/2i
+.P2
+would seem obvious enough _
+3\(12 inches.
+Sorry.
+Remember that the default units for horizontal parameters like
+.BD .ll
+are ems.
+That's really `7 ems / 2 inches',
+and when translated into machine units, it becomes zero.
+How about
+.P1
+^ll 7i/2
+.P2
+Sorry, still no good _
+the `2' is `2 ems', so `7i/2' is small,
+although not zero.
+You
+.ul
+must
+use
+.P1
+^ll 7i/2u
+.P2
+So again, a safe rule is to
+attach a scale indicator to every number,
+even constants.
+.PP
+For arithmetic done within a
+.BD .nr
+command,
+there is no implication of horizontal or vertical dimension,
+so the default units are `units',
+and 7i/2 and 7i/2u
+mean the same thing.
+Thus
+.P1
+^nr ll 7i/2
+^ll \e\en(llu
+.P2
+does just what you want,
+so long as you
+don't forget the
+.BD u
+on the
+.BD .ll
+command.
diff --git a/share/doc/usd/22.trofftut/tt11 b/share/doc/usd/22.trofftut/tt11
new file mode 100644
index 0000000..538fac7
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt11
@@ -0,0 +1,233 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt11 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Macros with arguments
+.PP
+The next step is to define macros that can change from one
+use to the next
+according to parameters supplied as arguments.
+To make this work, we need two things:
+first, when we define the macro, we have to indicate that some
+parts of it will be provided as arguments when the macro is called.
+Then when the macro is
+called
+we have to provide actual arguments
+to be plugged into the definition.
+.PP
+Let us illustrate by defining a macro
+.BD .SM
+that will print its argument two points
+smaller than the surrounding text.
+That is, the macro call
+.P1
+^SM TROFF
+.P2
+will produce
+.UC TROFF .
+.PP
+The definition of
+.BD .SM
+is
+.P1
+^de SM
+\es\-2\e\e$1\es+2
+^^
+.P2
+Within a macro definition,
+the symbol
+.BD \e\e$n
+refers to the
+.BD n th
+argument
+that the macro was called with.
+Thus
+.BD \e\e$1
+is the string to be placed in a smaller point
+size when
+.BD .SM
+is called.
+.PP
+As a slightly more complicated version, the following definition of
+.BD .SM
+permits optional second and third arguments
+that will be printed in the normal size:
+.P1
+^de SM
+\e\e$3\es\-2\e\e$1\es+2\e\e$2
+^^
+.P2
+Arguments not provided when the macro is called are treated
+as empty,
+so
+.P1
+^SM TROFF ),
+.P2
+produces
+.UC TROFF ),
+while
+.P1
+^SM TROFF ). (
+.P2
+produces
+.UC TROFF ). (
+It is convenient to reverse
+the order of arguments because trailing punctuation
+is much more common than leading.
+.PP
+By the way, the number of arguments that a macro was called with
+is available in number register
+.BD .$ .
+.PP
+The following macro
+.BD ^BD
+is the one used to make the
+`bold roman' we have been using for
+.UL troff
+command names in text.
+It combines horizontal motions, width computations,
+and argument rearrangement.
+.P1 2
+\&.de BD
+\e&\e\e$3\ef1\e\e$1\eh'\-\ew'\e\e$1'u+1u'\e\e$1\efP\e\e$2
+\&..
+.P2
+The
+.BD \eh
+and
+.BD \ew
+commands need no extra backslash, as we discussed above.
+The
+.BD \e&
+is there in case the argument begins with a period.
+.WS
+.PP
+Two backslashes are needed with the
+.BD \e\e$n
+commands, though,
+to protect one of them when the macro is
+being defined.
+Perhaps a second example will make this clearer.
+Consider a macro called
+.BD .SH
+which
+produces section headings rather like those in this paper,
+with the sections numbered automatically,
+and the title in bold in a smaller size.
+The use is
+.P1
+^SH "Section title ..."
+.P2
+(If the argument to a macro is to contain blanks,
+then it must be
+.ul
+surrounded
+by double quotes,
+unlike a string, where only one leading quote is permitted.)
+.PP
+Here is the definition of the
+.BD .SH
+macro:
+.P1
+.ta .75i 1.15i
+^nr SH 0 \e" initialize section number
+^de SH
+^sp 0.3i
+^ft B
+^nr SH \e\en(SH+1 \e" increment number
+^ps \e\en(PS\-1 \e" decrease PS
+\e\en(SH. \e\e$1 \e" number. title
+^ps \e\en(PS \e" restore PS
+^sp 0.3i
+^ft R
+^^
+.P2
+The section number is kept in number register SH, which is incremented each
+time just before it is used.
+(A number register may have the same name as a macro
+without conflict but a string may not.)
+.PP
+We used
+.BD \e\en(SH
+instead of
+.BD \en(SH
+and
+.BD \e\en(PS
+instead of
+.BD \en(PS .
+If we had used
+.BD \en(SH ,
+we would get the value of the register at the time the macro was
+.ul
+defined,
+not at the time it was
+.ul
+used.
+If that's what you want, fine,
+but not here.
+Similarly,
+by using
+.BD \e\en(PS ,
+we get the point size at the time the macro is called.
+.WS
+.PP
+As an example that does not involve numbers,
+recall our
+.BD .NP
+macro which had a
+.P1
+^tl 'left'center'right'
+.P2
+We could make these into parameters by using instead
+.P1
+^tl '\e\e*(LT'\e\e*(CT'\e\e*(RT'
+.P2
+so the title comes from three strings called LT, CT and RT.
+If these are empty, then the title will be a blank line.
+Normally CT would be set with something like
+.P1
+\&^ds CT - % -
+.P2
+to give just the page number between hyphens (as on the top of this page),
+but a user could supply private definitions for
+any of the strings.
diff --git a/share/doc/usd/22.trofftut/tt12 b/share/doc/usd/22.trofftut/tt12
new file mode 100644
index 0000000..8cb3893
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt12
@@ -0,0 +1,164 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt12 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Conditionals
+.PP
+Suppose we want the
+.BD .SH
+macro to leave two extra inches of space just before section 1,
+but nowhere else.
+The cleanest way to do that is to test inside the
+.BD .SH
+macro
+whether
+the section number is 1,
+and add some space if it is.
+The
+.BD .if
+command provides the conditional test
+that we can add
+just before the heading line is output:
+.P1 4
+^if \e\en(SH=1 ^sp 2i \e" first section only
+.P2
+.PP
+The condition after the
+.BD .if
+can be any arithmetic or logical expression.
+If the condition is logically true, or arithmetically greater than zero,
+the rest of the line is treated as if
+it were text _
+here a command.
+If the condition is false, or zero or negative,
+the rest of the line is skipped.
+.PP
+It is possible to do more than one command if a condition is true.
+Suppose several operations are to be done before section 1.
+One possibility is to define a macro
+.BD .S1
+and invoke it
+if we are about to do section 1
+(as determined by an
+.BD .if ).
+.P1
+^de S1
+--- processing for section 1 ---
+^^
+^de SH
+^^^
+^if \e\en(SH=1 ^S1
+^^^
+^^
+.P2
+.PP
+An alternate way is to use the
+extended form of the
+.BD .if ,
+like this:
+.P1
+^if \e\en(SH=1 \e{--- processing
+for section 1 ----\e}
+.P2
+The braces
+.BD \e{
+and
+.BD \e}
+must occur in the positions shown
+or you will get unexpected extra lines in your output.
+.UL troff
+also provides
+an `if-else' construction,
+which we will not go into here.
+.PP
+A condition can be negated by preceding it with
+.BD ! ;
+we get the same effect as above (but less clearly) by using
+.P1
+^if !\e\en(SH>1 ^S1
+.P2
+.PP
+There are a handful of
+other conditions that can be tested with
+.BD .if .
+For example, is the current page even or odd?
+.P1
+^if o ^tl 'odd page title''- % -'
+^if e ^tl '- % -''even page title'
+.P2
+gives facing pages different titles and page numbers on the
+outside edge when used inside an appropriate new page macro.
+.PP
+Two other conditions
+are
+.BD t
+and
+.BD n ,
+which tell you whether the formatter is
+.UL troff
+or
+.UL nroff .
+.P1
+^if t troff stuff ...
+^if n nroff stuff ...
+.P2
+.PP
+Finally, string comparisons may be made in an
+.BD .if :
+.P1
+^if 'string1'string2' stuff
+.P2
+does `stuff' if
+.ul
+string1
+is the same as
+.ul
+string2.
+The character separating the strings can be anything
+reasonable that is
+not contained in either string.
+The strings themselves can reference strings with
+.BD \e* ,
+arguments with
+.BD \e$ ,
+and so on.
diff --git a/share/doc/usd/22.trofftut/tt13 b/share/doc/usd/22.trofftut/tt13
new file mode 100644
index 0000000..67c97e2
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt13
@@ -0,0 +1,99 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt13 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Environments
+.PP
+As we mentioned, there is a potential problem
+when going across a page boundary:
+parameters like size and font
+for a page title may well be different from those
+in effect in the text when the page boundary occurs.
+.UL troff
+provides a very general way to deal with this and
+similar situations.
+There are three `environments',
+each of which has independently settable versions of
+many of the parameters associated with processing,
+including size, font, line and title lengths,
+fill/nofill mode, tab stops, and even partially collected lines.
+Thus the titling problem may be readily solved by processing the main text
+in one environment and titles in a separate one
+with its own suitable parameters.
+.PP
+The command
+.BD .ev\ n
+shifts to environment
+.BD n ;
+.BD n
+must be 0, 1 or 2.
+The command
+.BD .ev
+with no argument returns to the
+previous environment.
+Environment names are maintained in a stack, so calls
+for different environments may be nested and unwound consistently.
+.PP
+Suppose we say that the main text is processed in environment 0,
+which is where
+.UL troff
+begins by default.
+Then we can modify the new page macro
+.BD .NP
+to process titles in environment 1 like this:
+.P1 2
+^de NP
+^ev 1 \e" shift to new environment
+^lt 6i \e" set parameters here
+^ft R
+^ps 10
+\&... any other processing ...
+^ev \e" return to previous environment
+^^
+.P2
+It is also possible to initialize the parameters for an environment
+outside the
+.BD .NP
+macro,
+but the version shown keeps all the processing in one place
+and is thus easier to understand and change.
diff --git a/share/doc/usd/22.trofftut/tt14 b/share/doc/usd/22.trofftut/tt14
new file mode 100644
index 0000000..6a83f51
--- /dev/null
+++ b/share/doc/usd/22.trofftut/tt14
@@ -0,0 +1,155 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)tt14 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.NH
+Diversions
+.PP
+There are numerous occasions in page layout when it is necessary to store some text
+for a period of time without actually printing it.
+Footnotes are the most obvious example:
+the text of the footnote usually appears in the input well before the place
+on the page where it is to be printed is reached.
+In fact,
+the place where it is output normally depends on how big it is,
+which implies that there must be a way
+to process the footnote at least
+enough to decide its size
+without printing it.
+.PP
+.UL troff
+provides a mechanism called a diversion
+for doing this processing.
+Any part of the output may be diverted into a macro instead
+of being printed,
+and then at some convenient time the macro may be put back into
+the input.
+.PP
+The command
+.BD .di\ xy
+begins a diversion _ all subsequent output is collected into the macro
+.BD xy
+until the command
+.BD .di
+with no arguments is encountered.
+This terminates the diversion.
+The processed text is available at any time thereafter, simply
+by giving the command
+.P1
+^xy
+.P2
+The vertical size of the last finished diversion is contained in
+the built-in number register
+.BD dn .
+.PP
+As a simple example,
+suppose we want to implement a `keep-release'
+operation,
+so that text between the commands
+.BD .KS
+and
+.BD .KE
+will not be split across a page boundary
+(as for a figure or table).
+Clearly, when a
+.BD .KS
+is encountered, we have to begin diverting
+the output so we can find out how big it is.
+Then when a
+.BD .KE
+is seen, we decide
+whether the diverted text will fit on the current page,
+and print it either there if it fits, or at the top of the next page if it doesn't.
+So:
+.P1 2
+.ta .6i
+^de KS \e" start keep
+^br \e" start fresh line
+^ev 1 \e" collect in new environment
+^fi \e" make it filled text
+^di XX \e" collect in XX
+^^
+.P2
+.P1 2
+.ta .6i
+^de KE \e" end keep
+^br \e" get last partial line
+^di \e" end diversion
+^if \e\en(dn>=\e\en(.t .bp \e" bp if doesn't fit
+^nf \e" bring it back in no-fill
+^XX \e" text
+^ev \e" return to normal environment
+^^
+.P2
+Recall that number register
+.BD nl
+is the current position
+on the output page.
+Since output was being diverted, this remains
+at its value when the diversion started.
+.BD dn
+is the amount of text in the diversion;
+.BD .t
+(another built-in register)
+is the distance to the next trap,
+which we assume is at the bottom margin of the page.
+If the diversion is large enough to go past the trap,
+the
+.BD .if
+is satisfied, and
+a
+.BD .bp
+is issued.
+In either case, the diverted output is then brought back with
+.BD .XX .
+It is essential to bring it back in no-fill mode so
+.UL troff
+will do no further processing on it.
+.PP
+This is not the most general keep-release,
+nor is it robust in the face of all conceivable inputs,
+but it would require more space than we have here to write it
+in full generality.
+This section is not intended
+to teach everything about diversions,
+but to sketch out enough that you can read
+existing macro packages with some comprehension.
diff --git a/share/doc/usd/22.trofftut/ttack b/share/doc/usd/22.trofftut/ttack
new file mode 100644
index 0000000..ee633f7
--- /dev/null
+++ b/share/doc/usd/22.trofftut/ttack
@@ -0,0 +1,100 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)ttack 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.SH
+Acknowledgements
+.PP
+I am deeply indebted to J. F. Ossanna,
+the author of
+.UL troff ,
+for his repeated patient explanations
+of
+fine points,
+and for his continuing willingness to
+adapt
+.UL troff
+to make other uses easier.
+I am also grateful to Jim Blinn, Ted Dolotta,
+Doug McIlroy, Mike Lesk and Joel Sturman
+for helpful comments on this paper.
+.SH
+References
+.LP
+.IP [1]
+J. F. Ossanna,
+.ul
+.UC NROFF/TROFF
+User's Manual,
+Bell Laboratories
+Computing Science Technical Report 54, 1976.
+.IP [2]
+B. W. Kernighan,
+.ul
+A System for Typesetting Mathematics _ User's Guide
+.ul
+(Second Edition),
+Bell Laboratories
+Computing Science Technical Report 17, 1977.
+.IP [3]
+M. E. Lesk,
+.ul
+TBL _ A Program to Format Tables,
+Bell Laboratories
+Computing Science Technical Report 49, 1976.
+.IP [4]
+M. E. Lesk,
+.ul
+Typing Documents on UNIX,
+Bell Laboratories, 1978.
+.IP [5]
+J. R. Mashey and D. W. Smith,
+.ul
+PWB/MM _
+.ul
+Programmer's Workbench Memorandum Macros,
+Bell Laboratories internal memorandum.
+.IP [6]
+Eric P. Allman,
+.ul
+Writing Papers with NROFF using -me,
+University of California, Berkeley.
diff --git a/share/doc/usd/22.trofftut/ttcharset b/share/doc/usd/22.trofftut/ttcharset
new file mode 100644
index 0000000..551e79d
--- /dev/null
+++ b/share/doc/usd/22.trofftut/ttcharset
@@ -0,0 +1,135 @@
+.\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode!
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)ttcharset 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.bp
+.tr __
+.nr VS 12
+.vs 12p
+.1C
+.SH
+Appendix A: Phototypesetter Character Set (APS-5)
+.LP
+These characters exist in roman, italic, and bold.
+To get the one on the left, type the
+four-character name on the right.
+.sp
+.ta .2i .8i 1i 1.6i 1.8i 2.4i 2.6i 3.2i 3.4i 4.0i 4.2i 4.8i 5i 5.6i 5.8i
+.nf
+.in 0.5i
+\(ff \\(ff \(fi \\(fi \(fl \\(fl \(Fi \\(Fi \(Fl \\(Fl
+\(ru \\(ru \(em \\(em \(14 \\(14 \(12 \\(12 \(34 \\(34
+\(co \\(co \(de \\(de \(dg \\(dg \(fm \\(fm \(ct \\(ct
+\(rg \\(rg \(bu \\(bu \(sq \\(sq \(hy \\(hy
+ (In bold, \e(sq is \fB\(sq\fP.)
+.sp
+.in 0
+.tr ~~
+.ps 9
+.fi
+The following are special-font characters:
+.sp
+.in 0.5i
+.tr ~~
+.nf
+.ta .3i 1i 1.3i 2i 2.3i 3i 3.3i
+\(pl \\(pl \(mi \\(mi \(mu \\(mu \(di \\(di
+\(eq \\(eq \(== \\(== \(>= \\(>= \(<= \\(<=
+\(!= \\(!= \(+- \\(+- \(no \\(no \(sl \\(sl
+\(ap \\(ap \(~= \\(~= \(pt \\(pt \(gr \\(gr
+\(-> \\(-> \(<- \\(<- \(ua \\(ua \(da \\(da
+\(is \\(is \(pd \\(pd \(if \\(if \(sr \\(sr
+\(sb \\(sb \(sp \\(sp \(cu \\(cu \(ca \\(ca
+\(ib \\(ib \(ip \\(ip \(mo \\(mo \(es \\(es
+\(aa \\(aa \(ga \\(ga \(ci \\(ci (gone) \\(bs
+\(sc \\(sc \(dd \\(dd \(lh \\(lh \(rh \\(rh
+\(lt \\(lt \(rt \\(rt \(lc \\(lc \(rc \\(rc
+\(lb \\(lb \(rb \\(rb \(lf \\(lf \(rf \\(rf
+\(lk \\(lk \(rk \\(rk \(bv \\(bv \(ts \\(ts
+\(br \\(br \(or \\(or \(ul \\(ul \(rn \\(rn
+\(** \\(**
+.sp
+.in 0
+.ps 9
+.fi
+These
+four
+characters also have two-character names.
+The \' is the apostrophe on terminals;
+the \` is the other quote mark.
+.sp
+.in .5i
+\' \e\(aa \` \e\(ga \(mi \e\(mi \_ \e\_
+.sp
+.in 0
+These
+characters exist only on the special font,
+but they do not have four-character names:
+.sp
+.in .5i
+.nf
+.tr ^^
+" { } < > ~ ^ \e # @
+.sp
+.in 0
+.fi
+For greek, precede the roman letter by
+.BD \e(*
+to get the corresponding greek;
+for example,
+.BD \e(*a
+is
+\(*a.
+.sp
+.in 0.5i
+.nf
+.cs R 36
+abgdezyhiklmncoprstufxqw
+\(*a\(*b\(*g\(*d\(*e\(*z\(*y\(*h\(*i\(*k\(*l\(*m\(*n\(*c\(*o\(*p\(*r\(*s\(*t\(*u\(*f\(*x\(*q\(*w
+.sp
+ABGDEZYHIKLMNCOPRSTUFXQW
+\(*A\(*B\(*G\(*D\(*E\(*Z\(*Y\(*H\(*I\(*K\(*L\(*M\(*N\(*C\(*O\(*P\(*R\(*S\(*T\(*U\(*F\(*X\(*Q\(*W
+.ps 9
+.cs R
+.in 0
+.fi
diff --git a/share/doc/usd/22.trofftut/ttindex b/share/doc/usd/22.trofftut/ttindex
new file mode 100644
index 0000000..ca032e8
--- /dev/null
+++ b/share/doc/usd/22.trofftut/ttindex
@@ -0,0 +1,200 @@
+.\" This module is believed to contain source code proprietary to AT&T.
+.\" Use and redistribution is subject to the Berkeley Software License
+.\" Agreement and your Software Agreement with AT&T (Western Electric).
+.\"
+.\" @(#)ttindex 8.1 (Berkeley) 6/8/93
+.\" Copyright (C) Caldera International Inc. 2001-2002. All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions are
+.\" met:
+.\"
+.\" Redistributions of source code and documentation must retain the above
+.\" copyright notice, this list of conditions and the following
+.\" disclaimer.
+.\"
+.\" 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.
+.\"
+.\" All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\"
+.\" This product includes software developed or owned by Caldera
+.\" International, Inc. Neither the name of Caldera International, Inc.
+.\" nor the names of other contributors may be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" USE OF THE SOFTWARE PROVIDED FOR UNDER THIS LICENSE BY CALDERA
+.\" INTERNATIONAL, 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 CALDERA INTERNATIONAL, INC. 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) RISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
+.\" IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.bp
+.2C
+.SH
+Index
+.LP
+.nf
+.ps 8
+.vs 9p
+! (negating conditionals) 17
+#$ (macro argument) 16
+#*x, #(xy (invoke string macro) 14
+#b (bracketing function) 13
+#d (subscript) 11
+#f (font change) 5
+#h (horizontal motion) 12
+#nx, #n(xy (number register) 15
+#o (overstrike) 13
+#s (size change) 3
+#u (superscript) 11
+#v (vertical motion) 11
+#w (width function) 12
+#z (zero motion) 13
+\(fmcommand instead of ^command 9
+% (page number register) 10,15
+^^ (end of macro definition) 7
+^bp 9,10
+^br (break) 9
+^ce (center) 2
+^ds (define string macro) 7,14
+^fi (fill) 2
+^ft (change font) 5
+^if (conditional test) 16
+^in (indent) 6
+^lg (set ligatures 5
+^ll (line length) 6
+^nf (nofill) 2
+^nr (set number register) 14
+^pn (page number) 10
+^ps (change point size) 1,3
+^sp (space) 4
+^ss (set space size) 10
+^ta (set tab stops) 11
+^tc (set tab character) 10
+^tl (title) 9
+^tr (translate characters) 2,6
+^ul (italicize) 6
+^vs (vertical spacing) 3
+^wh (when conditional) 9,17
+accents 6,13
+apostrophes 6
+arithmetic 15
+backslash 1,3,5,14,16
+begin page (^bp) 9
+block macros (B1,B2) 8
+bold font (.ft B) 5
+boustrophedon 12
+bracketing function (##b) 13
+break (^br) 9
+break-causing commmands 9
+centering (^ce) 2
+changing fonts (^ft, #f) 5
+changing macros 15
+character set 4,5,19
+character translation (^tr) 2,6
+columnated output 10
+commands 1
+commands that cause break 9
+conditionals (^if) 16
+constant proportion 7
+default break list 9
+define macro (^de) 7
+define string macro (^ds) 14
+drawing lines 11
+em 7,11
+end of macro (^^) 7
+even page test (e) 17
+fill (^fi) 2
+fonts (^ft) 4,19
+Greek (#(*-) 5,19
+hanging indent (^ti) 12
+hints 20
+horizontal motion (#h) 12
+hp (horizontal position register) 15
+hyphen 6
+i scale indicator 4
+indent (^in) 6
+index 21
+italic font (.ft I) 4
+italicize (^ul) 6
+legal point sizes 3
+ligatures (ff,fi,fl; ^lg) 5
+line length (^ll) 6
+line spacing (^vs) 3
+local motions (#u,#d,#v,#h,#w,#o,#z,#b) 11 ff
+m scale indicator 7
+machine units 4,12
+macro arguments 15
+macros 7
+macros that change 15
+multiple backslashes 14
+negating conditionals (!) 17
+new page macro (NP) 8
+nl (current vertical position register) 15
+nofill (^nf) 2
+NROFF test (n) 17
+nested quotes 12
+number registers (^nr,#n) 14
+numbered paragraphs 12
+odd page test (o) 17
+order of evaluation 14
+overstrike (#o) 13
+p scale indicator 3
+page number register (%) 10
+page numbers (^pn, ^bp) 10
+paragraph macro (PG) 7
+Paternoster 6
+point size (^ps) 1,3
+previous font (#fP, ^ft P) 5
+previous point size (#s0,^ps) 3
+quotes 6
+relative change (\(+-) 6
+ROFF 1
+ROFF header and footer 8
+Roman font (.ft R) 4
+scale indicator i 4
+scale indicator m 7
+scale indicator p 3
+scale indicator u 12
+scale indicators in arithmetic 15
+section heading macro (SC) 15
+set space size (^ss) 10
+size _ see point size
+space (^sp) 4
+space between lines (^vs) 3
+special characters (#(xx) 5,19
+string macros (^ds,#*) 14
+subscripts (#d) 11
+superscripts (#u) 11
+tab character (^tc) 11
+tabs (^ta) 10
+temporary indent (^ti) 7
+titles (^tl) 8
+translate (^tr) 2,6,12
+TROFF examples 19
+TROFF test (t) 17
+truncating division 15
+type faces _ see fonts
+u scale indicator 12
+underline (^ul) 6
+valid point sizes 3
+vertical motion (#v) 11
+vertical position on page 9
+vertical spacing (^vs) 3
+when (^wh) 9,17
+width function (#w) 12
+width of digits 10
+zero motion (#z) 13
diff --git a/share/doc/usd/Makefile b/share/doc/usd/Makefile
new file mode 100644
index 0000000..e7939fe
--- /dev/null
+++ b/share/doc/usd/Makefile
@@ -0,0 +1,21 @@
+# From: @(#)Makefile 8.2 (Berkeley) 4/20/94
+# $FreeBSD$
+
+# The following modules are not provided:
+# 14.jove
+
+SUBDIR= title \
+ contents \
+ 04.csh \
+ 07.mail \
+ 10.exref \
+ 11.vitut \
+ 12.vi \
+ 13.viref \
+ 18.msdiffs \
+ 19.memacros \
+ 20.meref \
+ 21.troff \
+ 22.trofftut
+
+.include <bsd.subdir.mk>
diff --git a/share/doc/usd/contents/Makefile b/share/doc/usd/contents/Makefile
new file mode 100644
index 0000000..ec0c508
--- /dev/null
+++ b/share/doc/usd/contents/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+VOLUME= usd
+DOC= contents
+SRCS= contents.ms
+MACROS= -ms
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/contents/contents.ms b/share/doc/usd/contents/contents.ms
new file mode 100644
index 0000000..15bc07a
--- /dev/null
+++ b/share/doc/usd/contents/contents.ms
@@ -0,0 +1,312 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)00.contents 8.2 (Berkeley) 4/20/94
+.\" $FreeBSD$
+.\"
+.de ND
+.KE
+.sp
+.KS
+..
+.OH '''USD Contents'
+.EH 'USD Contents'''
+.TL
+UNIX User's Supplementary Documents (USD)
+.if !r.U .nr .U 0
+.if \n(.U \{\
+.br
+.>> <a href="Title.html">Title.html</a>
+.\}
+.sp
+\s-2 4.4 Berkeley Software Distribution\s+2
+.sp
+\fRJune, 1993\fR
+.PP
+This volume contains documents which supplement the manual pages in
+.I
+The Unix User's Reference Manual
+.R
+for the 4.4BSD system as distributed by U.C. Berkeley.
+.sp
+.KS
+.SH
+Getting Started
+.ND
+.IP
+.tl 'Unix for Beginners \- Second Edition''USD:1'
+.QP
+An introduction to the most basic uses of the system.
+.ND
+.IP
+.tl 'Learn \- Computer\-Aided Instruction on UNIX (Second Edition)''USD:2'
+.QP
+Describes a computer-aided instruction program that walks new users through
+the basics of files, the editor, and document prepararation software.
+.ND
+.SH
+Basic Utilities
+.ND
+.IP
+.tl 'An Introduction to the UNIX Shell''USD:3'
+.QP
+Steve Bourne's introduction to the capabilities of
+.I sh,
+a command interpreter especially popular for writing shell scripts.
+.ND
+.IP
+.tl 'An Introduction to the C shell''USD:4'
+.if \n(.U \{\
+.br
+.>> <a href="04.csh/paper.html">04.csh/paper.html</a>
+.\}
+.QP
+This introduction to
+.I csh,
+(a command interpreter popular for interactive work) describes many
+commonly used UNIX commands, assumes little prior knowledge of UNIX,
+and has a glossary useful for beginners.
+.ND
+.IP
+.tl 'DC \- An Interactive Desk Calculator''USD:5'
+.QP
+A super HP calculator, if you do not need floating point.
+.ND
+.IP
+.tl 'BC \- An Arbitrary Precision Desk-Calculator Language''USD:6'
+.QP
+A front end for DC that provides infix notation, control flow, and
+built\-in functions.
+.ND
+.SH
+Communicating with the World
+.ND
+.IP
+.tl 'Mail Reference Manual''USD:7'
+.if \n(.U \{\
+.br
+.>> <a href="07.mail/paper.html">07.mail/paper.html</a>
+.\}
+.QP
+Complete details on one of the programs for sending and reading your mail.
+.ND
+.IP
+.tl 'The Rand MH Message Handling System''USD:8'
+.QP
+This system for managing your computer mail uses lots of small programs,
+instead of one large one.
+.ND
+.SH
+Text Editing
+.ND
+.IP
+.tl 'A Tutorial Introduction to the Unix Text Editor''USD:9'
+.QP
+An easy way to get started with the line editor,
+.I ed.
+.ND
+.IP
+.tl 'Advanced Editing on Unix''USD:10'
+.if \n(.U \{\
+.br
+.>> <a href="10.exref/paper.html">10.exref/paper.html</a>
+.\}
+.QP
+The next step.
+.ND
+.IP
+.tl 'An Introduction to Display Editing with Vi''USD:11'
+.if \n(.U \{\
+.br
+.>> <a href="11.vitut/paper.html">11.vitut/paper.html</a>
+.\}
+.QP
+The document to learn to use the \fIvi\fR screen editor.
+.ND
+.IP
+.tl 'Ex Reference Manual (Version 3.7)''USD:12'
+.if \n(.U \{\
+.br
+.>> <a href="12.vi/paper.html">12.vi/paper.html</a>
+.\}
+.QP
+The final reference for the \fIex\fR editor.
+.ND
+.IP
+.tl 'Vi Reference Manual''USD:13'
+.if \n(.U \{\
+.br
+.>> <a href="13.viref/paper.html">13.viref/paper.html</a>
+.\}
+.QP
+The definitive reference for the \fInvi\fR editor.
+.ND
+.IP
+.tl 'Jove Manual for UNIX Users''USD:14'
+.QP
+Jove is a small, self-documenting, customizable display editor, based on
+EMACS. A plausible alternative to
+.I vi.
+.ND
+.IP
+.tl 'SED \- A Non-interactive Text Editor''USD:15'
+.QP
+Describes a one-pass variant of
+.I ed
+useful as a filter for processing large files.
+.ND
+.IP
+.tl 'AWK \- A Pattern Scanning and Processing Language (Second Edition)''USD:16'
+.QP
+A program for data selection and transformation.
+.ND
+.SH
+Document Preparation
+.ND
+.IP
+.tl 'Typing Documents on UNIX: Using the \-ms Macros with Troff and Nroff''USD:17'
+.QP
+Describes and gives examples of the basic use of the typesetting tools and
+``-ms'', a frequently used package of formatting requests that make it easier
+to lay out most documents.
+.ND
+.IP
+.tl 'A Revised Version of \-ms''USD:18'
+.if \n(.U \{\
+.br
+.>> <a href="18.msdiffs/paper.html">18.msdiffs/paper.html</a>
+.\}
+.QP
+A brief description of the Berkeley revisions made to the \-ms formatting
+macros for nroff and troff.
+.ND
+.IP
+.tl 'Writing Papers with \fInroff\fR using \-me''USD:19'
+.if \n(.U \{\
+.br
+.>> <a href="19.memacros/paper.html">19.memacros/paper.html</a>
+.\}
+.QP
+Another popular macro package for
+.I nroff.
+.ND
+.IP
+.tl '\-me Reference Manual''USD:20'
+.if \n(.U \{\
+.br
+.>> <a href="20.meref/paper.html">20.meref/paper.html</a>
+.\}
+.QP
+The final word on \-me.
+.ND
+.IP
+.tl 'NROFF/TROFF User\'s Manual''USD:21'
+.QP
+Extremely detailed information about these document formatting programs.
+.ND
+.IP
+.tl 'A TROFF Tutorial''USD:22'
+.QP
+An introduction to the most basic uses of
+.I troff
+for those who really want to know such things, or want to write their
+own macros.
+.ND
+.IP
+.tl 'A System for Typesetting Mathematics''USD:23'
+.QP
+Describes
+.I eqn,
+an easy-to-learn language for high-quality mathematical typesetting.
+.ND
+.IP
+.tl 'Typesetting Mathematics \- User\'s Guide (Second Edition)''USD:24'
+.QP
+More details about how to use
+.I eqn.
+.ND
+.IP
+.tl 'Tbl \- A Program to Format Tables''USD:25'
+.QP
+A program for easily typesetting tabular material.
+.ND
+.IP
+.tl 'Refer \- A Bibliography System''USD:26'
+.QP
+An introduction to one set of tools used to maintain bibliographic databases.
+The major program,
+.I refer,
+is used to automatically retrieve and format the references
+based on document citations.
+.ND
+.IP
+.tl 'Some Applications of Inverted Indexes on the UNIX System''USD:27'
+.QP
+Mike Lesk's paper describes the
+.I refer
+programs in a somewhat larger context.
+.ND
+.IP
+.tl 'BIB \- A Program for Formatting Bibliographies''USD:28'
+.QP
+This is an alternative to
+.I refer
+for expanding citations in documents.
+.ND
+.IP
+.tl 'Writing Tools \- The STYLE and DICTION Programs''USD:29'
+.QP
+These are programs which can help you understand and improve your
+writing style.
+.ND
+.SH
+Amusements
+.ND
+.IP
+.tl 'A Guide to the Dungeons of Doom''USD:30'
+.if \n(.U \{\
+.br
+.>> <a href="30.rogue/paper.html">30.rogue/paper.html</a>
+.\}
+.QP
+An introduction to the popular game of \fIrogue\fP, a fantasy game
+which is one of the biggest known users of VAX cycles.
+.ND
+.IP
+.tl 'Star Trek''USD:31'
+.if \n(.U \{\
+.br
+.>> <a href="31.trek/paper.html">31.trek/paper.html</a>
+.\}
+.QP
+You are the Captain of the Starship Enterprise. Wipe out the
+Klingons and save the Federation.
+.KE
diff --git a/share/doc/usd/title/Makefile b/share/doc/usd/title/Makefile
new file mode 100644
index 0000000..b773fc3
--- /dev/null
+++ b/share/doc/usd/title/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+VOLUME= usd
+DOC= Title
+SRCS= Title
+
+.include <bsd.doc.mk>
diff --git a/share/doc/usd/title/Title b/share/doc/usd/title/Title
new file mode 100644
index 0000000..1de7297
--- /dev/null
+++ b/share/doc/usd/title/Title
@@ -0,0 +1,121 @@
+.\" Copyright (c) 1986, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)Title 8.2 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.ps 18
+.vs 22
+.sp 2.75i
+.ft B
+.ce 2
+UNIX User's Supplementary Documents
+(USD)
+.ps 14
+.vs 16
+.sp |4i
+.ce 2
+4.4 Berkeley Software Distribution
+.sp |5.75i
+.ft R
+.ps 12
+.vs 16
+.ce
+June, 1993
+.sp |8.2i
+.ce 5
+Computer Systems Research Group
+Computer Science Division
+Department of Electrical Engineering and Computer Science
+University of California
+Berkeley, California 94720
+.bp
+\&
+.sp |1i
+.hy 0
+.ps 10
+.vs 12p
+Copyright 1979, 1980, 1983, 1986, 1993
+The Regents of the University of California. All rights reserved.
+.sp 2
+Other than the specific documents listed below as copyrighted by AT&T,
+redistribution and use of this manual in source and binary forms,
+with or without modification, are permitted provided that the
+following conditions are met:
+.sp 0.5
+.in +0.2i
+.ta 0.2i
+.ti -0.2i
+1) Redistributions of this manual must retain the copyright
+notices on this page, this list of conditions and the following disclaimer.
+.ti -0.2i
+2) Software or documentation that incorporates part of this manual must
+reproduce the copyright notices on this page, this list of conditions and
+the following disclaimer in the documentation and/or other materials
+provided with the distribution.
+.ti -0.2i
+3) All advertising materials mentioning features or use of this software
+must display the following acknowledgement:
+``This product includes software developed by the University of
+California, Berkeley and its contributors.''
+.ti -0.2i
+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.
+.in -0.2i
+.sp
+\fB\s-1THIS 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.\s+1\fP
+.sp 2
+Documents USD:1, 2, 3, 5, 6, 9, 10, 15, 16, 17, 21, 22, 23, 24, 25, 26, 27,
+and 29 are copyright 1979, AT&T Bell Laboratories, Incorporated.
+Holders of \x'-1p'UNIX\v'-4p'\s-3TM\s0\v'4p'/32V,
+System III, or System V software licenses are
+permitted to copy these documents, or any portion of them,
+as necessary for licensed use of the software,
+provided this copyright notice and statement of permission
+are included.
+.sp 2
+Documents USD:8, 14, and 28 are part of the
+user contributed software.
+.sp 2
+The views and conclusions contained in this manual are those of the
+authors and should not be interpreted as representing official policies,
+either expressed or implied, of the Regents of the University of California.
diff --git a/share/examples/BSD_daemon/FreeBSD.pfa b/share/examples/BSD_daemon/FreeBSD.pfa
new file mode 100644
index 0000000..bcd7c70
--- /dev/null
+++ b/share/examples/BSD_daemon/FreeBSD.pfa
@@ -0,0 +1,32 @@
+%!PS-AdobeFont-1.0: (FreeBSD) 001.003
+%$FreeBSD$
+%Created by NRB Systems
+10 dict begin
+/FontInfo 9 dict dup begin
+/version (001.003) readonly def
+/FullName (FreeBSD Bold) readonly def
+/FamilyName (FreeBSD) readonly def
+/Weight (Bold) readonly def
+/ItalicAngle 0 def
+/isFixedPitch false def
+/UnderlinePosition -113 def
+/UnderlineThickness 96 def
+/Notice (Free font with FreeBSD.) readonly def
+end readonly def
+/FontName /FreeBSD def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {-167 -236 1410 963 }readonly def
+/Encoding StandardEncoding def
+currentdict end
+currentfile eexec
+f0f0f0f011ee838241a0cec525a60ce01562fd01753ef17c08b804c2190d1aa4d3d7a12f3062687674aa2a92cf8242c0f344f7c7ff68f4dfea2890ffb217b7cfa0dc6862b09b5ec7382b9d9919be8dfa2ad48e471b50ed4f50092fd1b56974c018419c73755c5dd5db8b4a67edc9172c690e4d9554f8e038edbdaeca3f244f0f3f6f82fe5413751afdc1ff2ef33bc43f20a9b5db88ca37c067e2579f6237b5a64aff20041d5aa4a925c9f299ba942510249706a455aeb0441beb17ff67c90c618b823b3b9293fe399139c747d6675013b85dd4d7d53e532028c93e07edc9c1735332b79106ae1f6f0a2a421d2a10dfe430cc505331f5285400bac5b960c568e46bc60424cc7556af3ab80eed5068afa949d01aefa15a3635553b4d965c83f5321a0bab542b3ad3f05ca5a4e80771ea7dac758b3fb0281cd6473439050c4f3e7885bcdef7ed3d9be1528d2c035f25cda0ff44ab6d715cfa66af54087cdcc7cbcc8e92b3336acffc0486603c1bed8575b54104fb7aa35a3468aa96e14575833f832bd9c8ac4b41547fd5611878fba5911a73e2d96ed3d59abef1f0a250f0cefcee604733a7f538e5cda3c343401c6ca1bcc4948dd1d4cd045021df7ea5210a5f251a26202a24a16b6ae59ea7ef139883199bd2a490557aa0c2390283e10c826084239c39f6ea1b1e72f374ef7a6ce53480ddb967b2b2324834fe0419ea2c384b5e78ca3cc603cd05e18747fa2ca764904b60244cedc0fa74e54798785f812417c1770b4957ec91a2a25409bdb6f0b0af166f49d28f9c0774a589ba28526bbd0f665c339dd6cdb25e642beb864e1662f9ace50434fb76cd5546a78f8194f802b0ea4ce5f70e3b3dc05f80449b6f10bd78e3fae5a72f5428080e27bc58bc9905b8484973d53e6a6a41e0ca8e436629e4f649775d7e8a0a88c81940e22e332300b9475c66f25369840e0f72cd01c070c8667d5c0f8c8112af0f1aa6db12206b0722787891641c1e727c2e87cc401fa57340ae78e592ad8e2bc3b53657faf641973565fbaf90a44eab3388c0600dbf26a8d3405ec28f0fb9b82a4d3542000663d09224b7796d5881643cfb04bbee1b1c42528bdb2050b07c5a069a38d9dccdede2403dcd9b4573f53c4b37bb400c5f8f09c48e0edf917b1b38ee8871f61f289a4953b529adc4a2215f25770d0a4a2042a0fa54aca3afc4e6d4160ab84621f15c186c054169bcda02740d0a75201a68dc12f774826fe6fecde716fae9aafecbe5a10d0a732027439113c180e348426805353eb7448230c4611b0d0a7420949fb81757802e694b71a36a3f4d7235720d0a20204bf97720c2077fd1f95f57638711e28c333fda3ef2715c3329fc0d0a6b206238bf6952f35dd90c1a82c221915394abc594c83725697b35e3fdb00e6d5249bfe459a56f9b92fa8f0d0a65204b9711ad986dcdad852ce1b3fee159a7bd1bc1b8d4d40f800d0a65209ca7a2e007d4c7baf438865a2e88246978e9b1770d0a7020c396208dc65cb425042298200de19882b5a30db439654e06b1190d0a2020711958391b2c7f46c3adfb6e97b42a679029d8912ad08cc15fbd810215967e4fd40d0a6520fc7afc363bd4fd6bebce2630021597309113785b7dc875a0e71958b00d0a7820cc40b6c2e94a5977ebae9525a0f64d98a0d0401ad315690d4b9f6d550fe60d0a61209db21491114b877e71a69d674a6ea17eb8110d0a6d20289e64fa978047f8bd11704c674e0adf52624a7974f93ead75fc26b7c15ee0ea5b9a3ff90d0a6920ca27e2872590202d9e6e099ea9facbc85ead0964f8b737d0db9a5dc7384f5cbc6d79fe0d0a6e206bcc41e1962873d6c7f74453c82f5f25f7b311683dfd6f145d930d0a69205b0bd00c62cb912b1ce63f83dc6331456da0aeb62bf9f89d2f003cecad652e6d0d0a6e20d5af618d1e41770b42b9a269a587593874c4b35e31e6f1e40c7f0d0a6720714b7e71ab6e47018b51ed68c2bd71e4c491c6c99ebde984af511ec5fe31379ae9ec40920f7e0d0a2020beb1bdde2adef7119a3e9eeea099a51232af8e99613b84d3efeb0ae280268130de65ac30e90d0a6520ea14ee07dbee79a7012a045ff72e07a6aada6252690d0a7620c755ad4338be2fd18651a9d59bcae5b796dd0d0a652034cddd542863a58c6206b1eeaef9ff6645372af3f12872a0d18df926b5c0e69337b68e1bbb0d0a7220edc4e7f756f1d3be73aba324ad4ccdce0cd13f54f0f6fa6cfd46a4849d900d0a79207c571000f99aa9868eadfca224c4256a7cec0d0a2020ceddbb7223bce0d304d061286369a7305c696ae58d19d8317b77dcb77f7619eedabeab560d0a6c208b55bb029cfc67ec7b00cd034d2f82c1d450a5ec384e9b78fa5a7a611d88f9a856e64b0d0a6f20d2f751deba1aeb0a213347487f00081a0c911f1eee6bb7537935a10f4d0d0a772078a005da145704f706e9b46496e6d4530e353e5270d5fa6599b8d532625a2d0d0a20206ef91fbfe46fcb9dcf84d90b96ed207bdde15164357c900c9724010d0a6220681e686171539643482a58049f71949a181fa5e76b01c282fe0d0a69204e253812773456c004e417b9df2607b03971671426567a6aaa2eff0d0a642096817660b4418060acb4d05c25dbf155221dc14f9c9d582ecc0d0a2020401b77185cfecda1a53e81c8846980ec5c1483030f68f5a508330d0a71200f91ce6d9bdea78b2dff4a307354bef1b3f1b828f05bf3cb50c3c6e5f571a5469cd4d86874f0d4020d0a75207e73563dc4e2094c7d30749f93af8ef33485035bd4c4788a6af06a0c0cbae60d0a6f209efdbc6cff3aca5f89463ef6d0cdd24db08ad0716603d80d0a74203c4d00ee3f42b3bb134b62fcd6ca9744270fbe2879fefac07d2da7decbd612e1931ec9198b0d0a6520617f2a7e967646965e5b1ff71f130c31ed8eee2707268900c878160d0a642044af9dd9b1a5673f929db0b130e9f217ed926d3c7739e2ee3d0d0a20204e6bafd2d4e82b074ad64010ef0d1a0c716b559a93ff1f34fd30c6a7ed4b0d0a6620c06cdf04a317aa801a46bca9e0ae096546ea03e3ed75650d0a6f2064675d5c812a37771bb20adcfa37c13eee756870a340c251373f0d0a722020f707cdac1ba6f97723db63fea574cbe1d268bc7ced3522a6031e0d0a20203e442d77f6f3317c610da752063cd81e9dfed1533d2d2e65e322d148dc010d177b13c552efa8389b1af013ebcbff2cf16df3f7322a8a210d0a7a2064aa30c077b23638ccb725d4ab0c34044dee581c375598b6c439a2e90bae42b9102a77305b0d0a6920a28fdc09e4ca1b0f9675755a34d5e82516c126b833389426702996af7158d205862f670d0a6e20238224b151c8f2a2fa481dfdf6327ee29107319d27f74411dbf04b2d213c0d0a63205808f3022b12a49af53e8860eaacba07e9ae56ab54d683c2409564bb0d0a202054832f18a697a20e14fa1570f35ac823df21a5eeba2f510fcbade4fbe09b0d0a6520236c97f67cb16f5ddfc1d597f36e8f834e7fcc4c523d9411aa8091d5b8840d0a74209b6858fe1699fd9be7654683a71df52411e11b9948e08a8d95120d0a63206f111b8a97eb1d4a853769204cb0e85e66c882c0aab0e95e2885e9683ecd0d0a682029e71b2021a94e5bdd6463981c89f3ecdc31ced1210b5f052cec0d0a6920bcb172b7c7994a2095cf040c623904f7532f2e9bac4f5d247ca12e0f53320d0a6e205dcd3a1e9e199c8d90d16426cc72060175b779f7de91ae16475d750d0a6720b62a0b4b00f7d31388b33cae14e14eca3dcf7dc05e387525a1cc57f5487d49230d0a7320775879199c3fe2b076be7853626f8ffe3b37117cd9df45307e3bd40d0a2e20fb4c5d75432834b6bd2a8470fc28d07872f48fed69c952c161e78d92b60d0a2020f30a96881a9f8578430ffe17198f61b19cb6c0d61eadf947422dc17116fb0d0a4a20705c2c50d222e0f0708be5292433ccdcc16facbc63298523e06a0d0a75209749d4125822a56a992e6f5ec0c552439fc2e9f2adb1ee82359d110d0a73207590a638f70ae3b506f1f32ad76bed42d978a47b6b18bf044389c3a82e0879c50d0a7420b985b62542b9d3e4407c96840957e36a27e1e0990a63dfed6d0d0a2020b2cfba0c9408786d9eecd33897a2efe1d3ce7310630d01c326dc041bfc4ef4c0e9650d0a6b20db3c72d9c54a158d0f1ca934928ed76911c7c46ceaf94cf4ba24fd9579482aba98160d0a6520415f99b810ce393c53f0576ccb3a9636b29e7b01a6e258d28d885ea9330568e486db0d0a6520b9e74020f8363590ddb460084a67efe6eab1bab95a33180b0aebe5cfe6f77353b0780d0a7020f729a94c445f285cf40dc3c8276325ce6eeba334e42e05c376cc230448c72fb8cd0f0d0a202036249a76565ab7b261fb1af10ac8db6380dd6d146116acef6302e40ad309b8f2973ab871820d0a65203c2af0303b49f5b8013486e63805c16af5cbe8b1a574bb0d0a782050069303613b18697460a67772278c68c7caa60c3a169ef902f42b299118f95ac90d0a6120375c5338d58fc253b045a426a8c15ae4cfe14d7ad4f72a7be90332536712c259fe6777d60d0a6d20cd106f121b002f9ee47af6b37f6befbcdc93093ac6516f43e6c280fdde30941fe8cbd37e0d0a6920cebeb84dc4505d5a811722b5af2d0609b888cf8adc8e402f8a7548ae2717694177f8fdd40d0a6e20d8cf4836f492ca7f8c8cfc43a6f6081ee0a2d9e59a4a3b90ee6ad37be7f2e2b0ad90ec600d0a692075dc3ce64ef0cb4913e9167fd54b8ecc37eaf5f56c8b079945873eddd60d0a6e206b037f2573baa6c8687aee0bd2fb6d547ed3d559049ed04c64151184db0d0a6720b419249d4614a01a57524e2b163ac9894c524d7abead0ad5e00b395fbe0d0a2020e72499b2b9ad2575c7429be917246d4c8c41d27cd8ffe37c47987a445a0d0a65202f4f07ee4d49d554f3e75180b0f8c99ea6e6074df497a0a78c628fb8104b5cbfb20ce20d0a7620d5ce376f1995cca71984202c6ff0d58f7b27354234dee2c2587b4f6fb4beff43a9e26c290d0a652044a84169c41a31436886ed52cefd2b2e09eef40671adf319aa50f05d76fc79eeddd98b550d0a72202a4ba5beb4aba03e5bd7dabef1e75cba34bb5739e1deff4db50714e34feb33ace1eb3e340d0a7920cab3c3192a3236c0265f1b2b02d50df6c80ca1c15a096749f478b3b69a5b56e8b4c75eb70d0a20205cbaab4ffda32a87348bf3d85f168ad49171edb42a4bc5d8ccbb2812e2699c9b20a80b440d0a6c20937dbc6457ad6302e87945148cf96df25b01c042c98a8f7c911b616de1c9280bdeb064bb5e0d0a6f2096153950a73c0dc0c9956c0046d8422a41a6d2305b2e4947877eb1f3ac4d8a8f26a262ae0e0d0a7720e6a03e3d2cae6fc6200e53a0d4d5c0b0940737aceb48e6f7656db91671360d0a2020a8e8be9c80d64a1c12f01f591763f16fe1d94057dc01a0e23fa20d0a6220c9c050dd5f91c2bdbc4c188092d603730e6a7b729380bef8aaed7ade46b227a0c18d0d0a6920ebbf9670981bbb142957ae40a1dec346201908a1cfc28178b036ac8106a2a6ff81dcf0f7022c0d0a642085a7defa9a767cde5e1b2e9b6b52f036404675bbee155e86f09efa9f768e20c425b7ee1d90b00d0a2020028887e96da15a4529efdb2e203788196ddb821f2d44f5afac1cc00f6cb39226bf15091c9b890d0a71209a592827dbb280c2cb90df58e318ac0a183f0f6ef54f5687ce3fbe72992d996ee766b490133d0d0a7520b8aeeb47e68d9e5edcbe7652c21f1a2e2960392a61656397f0fb0d9f6d1d84049b6e0c091a7a0d0a6f2024624a82df9ad6a43434dc7510d3aba86dcfb98dc8888051eda7c92639d3c027920d0a742039d54073eb456a2c3b4984d3ae8d72560247b4d041902fe70e9da0e045cb80270d0a6520ff501dc22e9344f07fc5f7f4a698f82fc1672593365bd95d620ca9436fd81908a37d12f2c862270d0a6420ef494b5976d137e30d5fffa04705f470f48236ef3e0ea8446be6f8bc46ad9f076493dad0dc4fc1e20d0a20201e3aea24f0ab348f8c0513078e0ff81937678bf61595b5efc3a96e559d73541805da9d82d32b76d80d0a66209f400278ddd1f549e7e55e24848252393f0e66eaad40a59afe302efdc971e3d23ffc0e262debd6430d0a6f20028595d51f8b68f2ef83ce2cc8900d6346957b84caa3790981f852daa01d0d0a722037a2a4b7b5f6560384c5ae4271ca953316830481497f215d5f584d1370dd0d0a2020b4cbb202c5a9606050b8e064a4db8f69d76c3bbb41ec4ce53ed9625ef5cc0d0a7a20a83eab5609873ca3614858f9fcf642b945a85944a0248f31839e4a5f752e0d0a69200dd663a24042f0a6a6618b7b3f1d4a55272712d7dee63c22ce05df489428421c0106de0d0a6e2070ac1208aaf2ebed0819e8cca4daf7d623eab02132ab246522eec2280d0a6320d670756672aa7826ca4b637d403806bcdf318e6fae0c263d604e0d0a202085e153ba77648acfdc241096ecbe085932da2d3f540a8f49487216d483d86ae791ee5762020d0a652057dbcfad9c4e6f45cb6aca49bfb8afe9ec89c1af2133a00a362456fc9034adaffb95c829ba0d0a7420a7d20fd33af595b94d5616ef95bc08cfaf8f2ced5734080b57e132599d7f1d39ecae014c260d0a63203e2864fc552f48c4cf532630fe186f67ed5fbe644c10a722a014371dc44607bc8b9476d0630d0a682090db3f64fcf979f22fbf341a53ba241fc311c95dfd27aec3abc7b173aca6d6269dcb0489100d0a692031709c8432a44e1f158fdbbe7b328d31e19e9357ad63f032ae8668dfba741f0d0a6e20488e0f642668a35505017f8190b7e53d1ff320ebf19bd44dfae5dc9a7404930d0a6720de728173e284bd4618d916a30ec7084a0282e85fe32f98480d0a7320ed2b5cf2e589a14f0b4d9316e882c1d449cb46ee4e8a5542a96df79ed2c0e70d0a2e20be7c05bd4057c32eb1770df804f83e7c0f58421a0c367b7bd67e5f88d8ab730d0a2020a7cddc1c77ce5d83ee6af31befb5c5f4ae737ed9ad6445d20d0a4a20d48e8e8a4659250cdb50be64b2c7f710232e7e9df8620a41dfbeaf485f34f8970d0a7520f8b5fe2a8f5264a3c3a397d74dbd95cb51be7ff107e4c4641db7ca0e55abacca0d0a7320077fde251da7ec82e1f5ce6a4a9d6548d87316170a909c01cf4bbe1260b6a5a40d0a7420925c5ceed7d521a7841d140ad73e199ee437fb9426b3e0b0da099434d7fe957deee67f726c9f052d0d0a2020332781d61f01f6e6874f88c6135b4aa8db2d6abfef53638c065ef056061afe58389ea9000334d2130d0a6b20dafd87cb69dda55ab7d32c1133f8e1545359fca44a65a4d2fbf20e0d0a6520ff4ae7a28a5ed011c877bb0b175ea87dd3836d107d823e3385aad19f4e0d0a652016054f393dbb34ff565e188a64d400ba670a5110d8770d968df2720730b79153b07236eaf2b2df72a23802616dfc31696051edf2a7e602d3b466dab1190cf5bf869e0ceff0280d0d0a5420f69e6b0a456124addb2cf41806cc9d8a1180cf082ed0990d0a68204292ebee557183698938fcaae5b83a1764c38e76e9e093bb6c5b04b4902c945c55df64937da01e133549bb496aa04191cd3a9d66bd71a5e2da79657af875ebf7508146f47789836cf1a823b63cf314c295799f11430287f9d6c72df4f75b35fe1821397770ecb7c62a28ea0d0a65208c4ea4caf3776d82c6fdec9eacfcc6e7ea62639d0f71d6298cf233f92930aaa0c6efa85ecd563ca9da6f24db43f71669fd2a9dc30cda309933b569369ac51fa462badf760d0a202045c24f0e039f0f6573d84589510a36a00cab6fa1282c09c905d0bed077bc783f4d42d00cccce6cc4516f621e28d70e50e21ab052891ad25eea6eeede07f82a3c71bdb3bd147aaab617a6773542bb247a89fa01717cd2754ebba640da94964d6c521ed65aa1e4d6b7d63a53f1fe0141fb5efa5b1a3700d9c78be08c5fa7a6457a913e07f51e686b59c1518071b79d58b46de5e1a6039ce3965ef4132ce90865160d0a6d2029c38412a72b52bfa82fdd33b56b4848735d96cae2eb409c2b7b58dfada1766b7068178dbcc71e9fd96877e02452e4b1f774da425bafe6f89b7ea5684f3a2905f2ca3c5d98ccc3891420f4ead0d985ef232b880fda400151d484d86b6e0ca41938e3455d14e797ab2a66060a0838f51d6025020d4414d939d13418f0951eca9802f11ab7da52ef7474f515bfe73f578edcc1ad33562d05b7cc11517fe238556b0809c9af560938dbed27b6ccf33ba4e3f973e53292c8742999b955e0c9d6102f0d0a61204d8d9924fca6d40b7b9c35b9adb0b41dc10a4f750a36f1fa13aa8bcc624d2bc0a6e391a2b8541f5976bd95dca3dcbdbf0c72af08cc632efa811bc7945ca6073cd236af52aef868bae1f521e0d0633f6e813b59ed2479a8b9d748ccdab92cd5f92f1ceef0e96d6b84f4593168b750b73dafd419d087c62355bad1965be357d8bfc5275ebf360565a8edfcaf28e26ed7605b146a27d4594ef8f6f66e1e146679f484b4e3a40faeb10893db86c810a62dc3241612720e49edc5de5257780d0a69200b2379c14c4a8ae0c4a18aeaf1394b6fb6beae15d7ced918e24632482c9ce8a6a2b3b5c93b75fb3f66995a865d1445473dae7f6b6c500bb3bc48fd5cb02f2e9057005c82d1fe9faf70c51d2f994102ed725ab12512dd159ff947cd7113f2b048a6aecc846a3b2f43ff4c0b9e0fef72026196e3beffd11aa00922aed7e4567d22326a8a42c915aec64c85846f624dd227908d5b51d60c2f07dd720d4bceae7241729ed797b9bdb3c6f49058c1713612886def731a2e3c8e024705707937a19bcbf4f19e6cbab387f03ea32be529afb285706aca103a0d0a6e2052d47eeb2892d03c2a271f5c0653c010fa4e0188739295b39b2dc4ff05414f68068c109a988a506ecd91b4e9212797bb0d0a2020501ec10488391a2f7579465405dfca54b3c9e017ceeb6a3b12c25bd198afdbe88409e807df692d5955dab71b044fa8e9137e62ba4b7bfd9b2eeca5afe3f9ad28246b74b006ab41f590365155dd41c0656c4a4c8a50837b2d55996f60a11b850d0a61205b433512163a92c04c0012c2062ce734bca8dfc56096f34fe215786e28b897423a24dd6c3ab9550140c814b1c1ebb1b208c6d5c37e6888546af8cbe0f6b968c2c12dcff5404f8760614189fb731d55a89c2e7c1f24d16e4f4cb1a11235280d0a6420b2535c884be264b645c6c83af14749bf58372d5eec3a10f2e9f84ffd8f130ec429cc0f0d68309a771e9846f8ee78bb586c6478064d65155458a77d9bb8e6b75a727c9fa109955da6541950d1cd79873879acc79879266f64aba43f5a5d5e9cfc69bc400e173e206c33b1f206112701c57326d1e79def9c03f80d0a7620fa1fd7dfe04cb709fc4da7e35032e4d32db2140c8caddbc28c8498d840bab6b47c42ed8141a599bd95e5d19e5c94a959b1f17faefeac50f09952306fedd5a197d9990dd9b40d0a6120a6a313f738bddc30c0a1b117153f685258a87b83c798b5758ad94d4b2165da94ace23605ec7e5fa7341c50d3987226b7d5b66932ac28af6569c64b9cb8c495d2c5a00218cb9944962e0d0a6e202320bf2038fd3a186b6724f4dd1d5f6a3d592c00e70cd24a999c15703c9f52d0bd8b613428376e16f86d69541a27d6670d0a7420ff870c92b8e58e12f8bb83fdcc2984eb7c339c19145c5fbbf002386dd3f65f81254f31fb8635578b79266b08391191249c93e2ceac0d0a61209be4f9b198830b431b2657b211b470e2c5c869f2af5dec7363279024ed7795a7fa93f25d8aebc395dd3178b30ec3f00013bf0d0a6720f2fe0b0e82b8731889a4f1574470989c6125e932e1a6617045b6b36a4555136d32e389301b6a31d04c4ce58c83dbc881f70376b66ba213afd65e609a3e2985907e7ec38cd42fe431f84e2473492ee38d9331101cdf9f58cf7066413059cae726ea13e021ed660d0a6520e2e86c939cc58cbdc7f45f5597d1efa2a17587d06c95bcfa96d2ee0a0d72f0c7b9a6b45eee1da7cd1319bf8471d2e90d0a7320ff3bbf9a4d7ed10415a353c252e8a762687439500b2d13c0b0c7d04934332404163b1d89264f340bf1ba2f6adc50f8e5aa2c6a9c3fcf2bb2a55ec888ca10b8931b782eefc957c86b33ed68854ce4265f1ddcf2123c6109450ae17f5038d88531ff601db30d0a20202f95dfca5f7e4b8854fe2227100e2b91e80595dc147e8e095e9adf380fdc70e240e90fd7fa27c62c9e0b386ab458dcf4fce9197f6c22ebb1c342397e0eba1f82bd23b8ffc7e1d468e5dfd664b455dd2dc468b04c787dc725f11d29a41db99d8c003f873c01bc463b8b515298f3840d9299a5b257c2e35bf1bbd995cf004b54ecab22a41552c07117d70d0a6f2011b08bdaed6101ef6d0541d189e0ed88d188840db164d9e58e464ed904970ca81fb89b401a5ae830ec595bd7ad8f13e7a9400e3730ee72b8a5748ba72a090780fde5cbcee46b1c20d93190e51e4936514aa12b2f6086180f110d0a662053aa125db3464ae890fbd4843177c43d93460be33a42bedd50b214f6cb4371176c86209fdc3b9795e74f3b350389538db53c8a908db5ac0d6293752e80d49e935ee8dee4bdb66dbf2d844cb22f62451d3ce669e2623bc7e3a039aeea8cfc86f9169721f6929b6346ae14336abd78841c182d26e160e65d0d0a2020bfbc006e4f845c4f2fcf482e4b28e09fd20e2fee0855d6f6448d9362fcd8f896c8d7badda6d5551f3beea144619b5114fcd127b90a6c348bff10f5a0d7989ddcadf40211557114da12d742bff155ae56c0374ee92d2a1f5ae0e61c9f74fc7c62915b1d289687b6be28ac3ff81275ad56ec080520642f310ca9d8fde025a33ddb021a40b44a0d0a6120d5eb639120cb3b060782a0e95b5fea2d7354d6ffa0044df25a0b7e1ffc5693a2b472c762937b12ed5a93a61557afd2f75d43bff12f88801b23ba424ace821d0d0a202050084cf2ab7a590434882bc714cbc1d254175c60ee807f4b80302a948a720bb787d8d82c7747e6420a84e0fa62cc528a70c182802d293c3872275559661852b533e336805a0ddbd98ea554188eb529d2395641fe1c6ddd9fa9076e0fb3b91b8bc6a0457f05ac678ef32d24d6fac7461aca7d3a32f65457c34395a93fc87dc1b4336007f60e264400e76a93154928b65a6698f824d9eb596061fb1e5ffbdf2a5b52e3fcdd84cd735ef7591691d2db518d010d0a6420276acc70e256104396fe961964d62830e6aaee75da7ae9a71e26a264c26df317644afc91920d46b146bbe440e7db0dc7bcac65a5c16ace7a7ff23e37045b36f9d83d6a46457c4b30f5d365a274e35aad051873138ef50861d18c2d9eb5fb294f3a85d2c2b483e7557cb2b7f2f7ffbd4a651b5cddd277ec66f5404e87c2fad4e8c442f9c4c00d0a6920ab28736f70f02d27ee108fe3e752c846dfec15ee4e8d7b73278d96141f625dd76f0fc148ef06f9b4ae4ed971a255dcf8ecf0260a64586d781b25836a620dddf7817a773dd8484f7263564c48b091ffaf9d7f52e1c1d20d0a6720729021fa1722d3b929b88b76b787577c4eb52e5f704649053763dbbea06cb0036a0cc70514ebcbbb4a595380f7ab7a8211ed0cb3430a1230d896e0219fe9087d0c6c5e94da4bba82ddbd012291bcfd1b3f8f9dbd85a0a646952d24a64dc1ec3d0cc1cfcf0d0a6920b562ff2484e0f03dc0754dcbd4ad92cabcb3056ea49b639a76df7fe06dd4d8d20236b7001d9b398ee5e96627d39e45f8cf29b2a4721e50880de18af3871a6801020d0a7420ba5afa2d563accb973b7b5b5e9dbec290678a21ad7a75f13ed0e1089f129cd4b788f262242c703df0f7dcc6748404647e026411143e8f08d0ad5742c7941a9c9a40d0a6120ed61c4724be086144cd4394127879f18f6c3ae2a1517a18745a567d4df32a9fa0abb2d2377b69cda25eedc22bce867e7332502658cb298e481b7ddbff2f32ee884540d0a6c20afc1d7dcb2a7473bf006ac50f8788def7d188ff00c9e0360baa6245d73ad42db74a2706558bea5733707a718cd550c38d4c5dbc4c39543ad5bb1e1a58d5049d551a5c11279ec0d0ad893162ac5c51a74c2aa410f25b3feec0dfce33dc9366ffd3c4f47f6bcb8195bab6a4212b9532f973dee1d720a6f390478167d3bfa8601960fe0f453e08cfbf00d0a202038f7859cb5cc0bb441658695df18d5109589d4423e0ef71a00be32ca90fc255197848065d87c566caa01446bb4f4c65a523f8fec878f72106d9505800c028818bc0c099f9f1755728a3a29ae6b7371b21011d5ac6a0e2ed6a4ee5a559433f9ccbe300d2eb0dd3a9fa602d5a7726ab1df0b917ab399829469938d98bd0cc0d3e82a6c898d61e5a67b04abc2e324031738db2280727242a1a3d8b383743a3da83d94e1a5a14a8ffb4386d900be9868150b1f528f0002b8006f20423ce5b2c6aca801a8507322e5171dd9d3996f6f88275306f6706b70f210f45fa76043ba1af53f0e09f28e77d2db6aa1aaade541611bf9d1b612c89cf9a529e48f9229f850735c542f414c388d54f605ecc00b582f30c6df0d0a64207918079bd8033c5c6d88858dc110c6ddcdc4d515f9961c1a9f54a5b653eb1b4640b5cc2a7af730f4db53be1f8ecaa4d7c992cfa79172f8601625a79ca7ca309593bae51037ce07ce87044bd4c152414be99bb4116c0d0a6120c926c4b086ef2dff3c38b15ea858c758ae3dd38dea8d1fac44270fa7354ccf2708f2b8ec1d9a93f446e64c466f371aea6cf60c298a0a5bb4c888b01d33b6d4b2ac7508ae2c591ed624618151d589436777c19183f0e95abfd92c927a266e4757764568d716826d2c6a7d260ebb3ce4817f7c5020596ef54469a6a42fbb0d5046d4a333a00a763d99e2ee37965b3505ddbe0d0a74208e29ab773e3d625ec81ab4acd1b46a6a7cadd8d6ffa6660895bc825f8594063e5ca6bbb33eeb90698c3ce1d826b81fd361f6e6616c516fc8966cbc0134dce50bffd9503438bf81328704d9ad1c884ed223bb8f790c8393f978aa69c291e5035c9d9aa548772a8d012b7f858600c70d0a6120d50c8e685776c6c46f551900090a66a26ca0d1daf761ac6b96215dcc4d850c134d2fcd13f500f9e22a4695bc8d819ae8ee078dc70d42a2b6d10b5e2d92474ebfac22748d49f59ebeea6928cba19942cd1cc85a57b146ebdc50cb1c2a778ec08d314e94e90c2701c4ccd931490d0a2020c9398326471525c772bd912fe207caa074ee330f83c1e6f76290c70a98b29ea35b49b743dfb6ca74a31d65c4c42b0fbff46027941542885b22ca577e65238bb91c663c55e74007df616fa00d0a7320158b710b661e877329726b8c71527e3e28e52bf13f2e25f176ab5bc34f228ca4ed007c8c80adb5b4aaa80868cc3bd07132b4e88d15fa6e26c6b26e3d73753447accf34c3400d0a742048f70c877e5040fa8798518637ba040cc17effe536ca576cf71f7ed2f69365a980052d57772af07d48c551fc328729e8b5764a9331eeaea9d562c09b2f709fc372eaac3a874c9b4a9869f865ffd6b094147ff1214e3f7111ff408dd4eef6b28b3eafc5b5289083341a0b8987ff0e527ee7487a95ab3800ccf3efb2be480bb726d61e550d0a722062cc68235cb0ccb2103491922cf5cf1198c62fabb39507932ce4adc3bb98e129616027b7d7a562d6a89605c7fec45423515211da7426abcadef59c16cef33215a2ae407623b1969597bc310080cd0d0a652052946808d22f61742b7f8f277dcac79c497e655f8512203f56f054bc0db2e642ad43a1385c717099d9ec60160d0a612075862a576494ff79ba653eec778ad0cf0cb071ed87b7acbafea90c113536a3cca3c99f8b17c997960a5c8defda1d972cd21b46e554f96bad17cc22f42736a00d0a6d200184707d3aa2901b59336c71276dbbd599db6d5b3a4849300cfed57cf370be84c240114e1ec05d620a6b8e98942985575e0f5bf27a1b904f9b99a40d875e1797d1f3e54c13ef1b88970d0a20204956b8172c834398f56760c11531331fb876a0f1a5a3e3bd29a76bc26a16370d8deb3ad404c404544e752b046f2a4787386ccd0d0a6120a99b45f0f43139aa5e003337b4d211e0840b57fd4af34474247494dd02f8441d6c7ada218bc380450b3fb9abf5dcaeb4613eba492ab55d854a165027f6ff35ef7446d5a886605d57fd7987993422a5eaa00d0a722024bfde2ccbad9d06af42a88a77bb97c490d4ea880c9284b014f9ccb55a442c301b42abf2878780cef0096d021c323273f9ca91da60549e8a93f99b12b20c578f7250d29a545c674a73b8b7860d0a652032bcb294bb63f24cf1e31bb163ebc4cdaea3586a2d915e9502d732c25c2fe738c4456c77d1f4530c1613bd7595d3583bc971731c39d0924d7887ea75ec4848e49fa8afe410ff02e9f751ef1234b3414b0f8a4aab4ab6859418b0c6919109fc8a8583ac1b89afa01ab6536b9cb3a5fe37b8bd930fc34365580fe15e73d81df053016cbc620d0a202021fadd888abb83894fbb84707e333a6af2447302c3ace25d1eb8cc379a705ba8add551815117bd632983bd4f43c694768e661da35e88c29c688445c91652c1d9ffaa9f3658df567332c7c531a0074a56ee635c74a8e1db9fea90af489f03f90d0a63208488f03d3eb6c514fa3d94066ab684f260cca5506f4d7f99c599536bb5c242f38ed97f209c1b52845872249d80e337c73dec051137bf0e2741a4d4a4af4dd387d22d69e2f7cc1cc91f6ba1d334b8a8923c67491d69f60460c8b0791a314fa5dfc25c1b54c031095a8234b36589d0a7ad317952f78857cf2323e7cd53ff61dac3e7d8a00bd9e6c3333009e22da75410121a62c9945e91655bda6dd76eb1acc00d0a6c200415be4058093de9aa2316cceed4e1e31f33b352df0f3a5665e4b82a18ed60711eeb3a0ca53a942ace3aaafaee9ec442cd4549c0779dbb354a10c3882bed259c749b268e7028d21fbc13bf9464541edd8d7c960617303c1648dc28e63e665a6671885a136b67fdf2ba67f3a50e806d9a53f0ccbb7f7225aaad5838f4d4f30d0a61207e720f01fc9c5f0fa38d35a1063bfd5127fb36de943cc5d0e3cbcd3d617ba56369e49f49bb240cd65bd20894e7bc3115035a2009f5d3ac1efef14a4ba758d2f78854eb2ae878a4c8be93583f800f49238ce507c75d51a708ab4484f765ba416571abc98fb038e03556aa19cb30ccaf803ae0332eef25df23eb4306452a4e92ef530b4968ab7e1f3b0d0a7220cb744f6b008094d69881af23c7e33d3506a3405a20487d17aa51a679cf734f91aea14a5a7c1a0337878dc28d06130f795d52822f715d5986f0126a0d0a692024f94ea80b80b9fbc33778f8bc82cb60a5c6892edb8102041ab3ea236692e1583709f096f18a4a1e8e8e534ba1c1908a5ccdfb588e080a239212eeff33ca0763a0183be73ea3d8bb9d62303e7bf49fbf593d719863f52d09cd85a90d0a74208d3ebe4fddd8dd9979094c906c85a5a96cb240e5be6c36a9e3de5768c0dbede0707ad6ea1df5c8f907f1d65982a3b9b8d1c20ac781c2f9198dcee68bfa77530d0a79200c3ab52318b338558f737e0a14283d4a08c2c0e9745f46cb57f1d7e68057543175dbeccaab8de82a8983fc48231a97f761edff290046a58dcfa5b78d912702778b6300954f5500f2544c48654170300f82be7254dc152b2c0d0a2c2031804cffee53e36ef173067f30170bf95a73096321d91ff86b303303b8875394d480710dbf8269e74adb8830380c53aea2caa50039b6a3cbc10bfaed05bd67b186d9c3ebcdcb619a571c6504ac3b2a29439fdc8f0d0a2020c6699929db1bb745c643eff9f51e8f65ec5f211c70e713228df39295dbe2ca9c2efecaab338d77095a081ace85fc72cb444e8e0d9fc1ae30fab92dcef43e8445f108eddb1b0d0a7220ecf1826f5d96c901c62726d9e141eeff8a2a410dab110a6286aaa706a5f53ec1f0168d69f3e6168ca9527cd3f2068abb5138c96540981bfde3a2581e7fd2e2b273241e2f44b4d6e40d0a6520d00509576abd328e2e715698997ab82b6070fbc94ce9d17921d57ad65684f5bdff26ff0d7e10b3a9728c3588f2d7f4975d83d852133b1dbc21ce46c9a1085d6e805a23070d0a6120ae79995e1ca0a1a0008d34a50b9f28bbb37ec71b32bce14bb0af83a919abe1fafb54c24e42800b8046e13f909ea588a3336a296cd7171bd9aa0d0a642017ea3593bcd590f325779a69e597a4c7ab9b8030ee4714578470a4b7085e8dbae56031b94cef069855a3a4b86d5965ac1e1f1fd81c9d481e3cddeaaf1d3e2d2a12b39e0de7417f26090d0a61202ad7433c150e0613d7d5067ca205502505663f5bf781037e42ea9c649962225173bb20819df4b984205ad6359ce4d7e7937c4a1fae3859a5c13decdff428a794800fb0fdec62467e0d0a6220ce16e26b0aad61c694c26178a2cc086c249b609595ac2834233cb27e92c9c7146f44ca4e557533bf99ca64a80d0a69200202da67e274a694c6202b46d601e79ed784bfa7c3d068ba44d23a6c4821d659e9346760c73cc2a8bd502ebb6b3274d5cd2d0d0a6c20e87a875e9e430ca30e536d2db39f665f9b07cfcfb7a64456e7c72c5bc49893fe86a29be8ff769cdc0d1f8dc1a366fc407ba65d1222e6d4e316d853c02770d2e7a7d71204827690429c0facd704145d445206b597a503c4c77181e2e05d82b92b2d9f7fadd14af71ffa2eb684eac3b6596e30c9e9a5d855a6d66ff074651ca4d411ea97756338e5f7171a12497fc9b5e023a88723fd17fae998be0ddbd3960d0a69201048b3cc3544e7ac0fc23ecb356de1a4369050c5f0e0b20b127fa3cfd99e4f64ba775987a6c5aba8cf032ec1dda95ef0758f81e5b4c19e252285b62b89e4077c033a90fd5cadb5d9515de054d94a941d8cbe15d8ba19b7ee99c7f21ce7d080e010aa7ea3590a0b19320e0eb3ee52466d0d0a74201c64f425bb2169df311a2f5597270edf99ca9649e0e7b309d11a30647342f61aaf5293858da0bf69b3279470faf7267088b9914ce3dfe9b24eb9196f0f18cc91b9c3559555c48510971ffe8a7b8ef129a01829d8dce55afd03b470e6ab06e89b0d0a79209083a1c2bdf8e16aa3165c310cfbbecaf18b5fa1eba09f16cc06358001374bb3b3ee06af037d43421e99a19d33ba4088ba999c8cd207a74c737bf32490902b7730ce78b4ca848dc2534277781312298eb0e2f2887747195363b57fb951429bcd95888ffce4359a5cb9ae6a8b7ecd6ee67a4935974ced934d36d52333553cd08c3570c3f68c1da63a495464ebdb1f0d0a202003e91a62346717298bff3cbdf1ecc18a9e53867aeb9b9f19106fc20b843836e419e299f98a3c9ce0d93084d90d7aa8cdc81fa25766a17b659aa2e52985ab19c99322483d840c04d6c2d029195c235af6fe0771e7df0899b84968a861e0f150fd62b31f02a8891464fb126177223c0c93b27d15d6c70d0a6120252fbc5de63dc9375766a4b2073005eadf1995705bfb3d7de706ce838e1540ebb4a25c989990f0b41ffa7909f10fe3e0d90f99082543bd7341d812a413a6bd015bf2ca372f9070f5e18d7e009847e3cf514bc9abefb147567c2703370d0a6e2020a8d4ac234409caa1c9d598dd328e229bd10365903a7504cd8997b23dcd06e503468ef2115e7ba397ddcc82ad81d267a8ed08ca80ca7b7b3cc1a3f4ca12d572d9e4a32c2ad17550efd3ce38e840bf1dd736c25bbf8ae87dad30018040bf4bc6575b26b2775b28d7d722d5f293bc856cfd437bcec2023907e8dba2f02ae69261ecc065397d1768acfea754bd351e55d3cbf3cd3b76271636e173359da81b0aa4e7b1716e2321c49a800ee30a3537533cec680c3030292128152da97e2c9757834c1c04fb21152fe267803685abca8839bd9b5dc81527b90d0a642088b4640b8a707a89ac671452912fbe5cab38fd866fc1fceea9232f739bdc46eb3123fde09cf62d45c8bafebed615057d1d6c74eaa8ff08e2bc7da50dd88462e13986493974fbb6446ea692e364208675f8f2ab161c73469dd7f60d0a2020fdd0622da8333890bcfad4720eed78eac5861fbcf77b270595c1e30d49d86599910d7fc96a369a14ec23aa1ea6c4f6431175fe792ee93e48f6c279dc3aa3152113b0c16134872cb1c1a7e9460d0a652096e05b928c62d916ace0271d7328a119fe165496ca0cfb3ed544864093cfcd48e53ad5c2ebfd70fa4dc9269f2087a43052f2e93fb122d9d4fc0dad4e6c98c8bc9d40831497b059fbc98b9fb37314ab6589c45a4edab176f362cc6ce5caa30d0a61201b2067c0706ade699715ae36027e3812c721b10a3c54d05af56f6f6c9136e8cab69b1d268649baa4f97ed3cea1ae8b96400d797cb9e391931189c607a9f653b10058773a3c4a7f4ba5af600c4ded0d0a7320080bbef2729d0dd4bdaca4c6f133545062f55e3abd13c04924dcd0614e7bdd1c99eac038a1f0ae7fa0789b74a80d0a652025a9ba65e4484c4ca9261b30a5d0d2c9581ecde45ee60fe6819920556e46d449d281acf686d4bf3ee16091d3b3d5e4dbe82307044006938d43b84e4bdfa4c8746e1ad97dcc9ae61c95b3bbb47fc4ccd06ee15c04f0091998b1a176d8c8181a435b05465469d4d1334aa28af892d28569afe26c02228a52a59a0bed56d76c87446fe27139d732d993e487df38e40d0a20205d1c4ae4d90b7576d6f5dfd6cf58a2b23aba655c320cf8ab28506e3b0277f054cd77ef6540b5f09bfe59e8a52d4c2432db40b23dd93b506c897249f08488994985b720eeb7458e268366eeb89b2f9c7b457a80cc99b0c91788c3712579e04b874eff0f41bf0d0a6f20cecf59d0237445adef1e61090a1c63533780e25f252998333986c0a7f44eb262c7767f28fc41a51856b360e724973c3f0a8c70b4c24e6933eecb17240a1ca579e803391ccd01a304c17595e27df95a8251d1a57a467ea7eb1ea6117d660d0a66202dedf71f7a6457cca206d9d9f8198119acaedc29a521ea4a25509ac49ebb93cb17ed252097ea4083a01907175923d0616bcbd57f31fed51c0b68534f06840707265caf28798a70fb9f8eb82bb703ebdcceaa210eacacb6f847bcfd1420ee66a87a8c251e00dec80ea4183c1cbb14a430a97fcc6f45cd091d9e76b4bedb4660c476c8748a150cef520d0a2020687b4b93f6c1a7361ae79e082698197fe451fcb7c3e08b7cd645b82a8b7d2464e29a69f95b476c92fabf4b9aecf1a305dd94b90d1fc71b1632506572eb2a7209ea4b10fb3e55ef63f79b947980d02cc219de590e0f1d171a88cfdaa8213868cdeafb6b2c7dc5f8974c8039fc841ae34de1108966a0a6f33273018d307d81ccb3e650509fb60d0a752068e1658613d75b5c49086484aa8f476276daa4cf09ca2d2eec45a333340cd3a3aa712ef4b4e82de51e1aeeb207687a3aec203dc2af65e610010038ba92579ac4c61f36e3e5d3a914ff6befce08ad736486b87501b6f0b5d4d9669da9e829bdf6220d0a6e206c46d50506eac42ad6b3196d0d0e04ab75df8bb59984fdede47f75cb94a96497502a7ab6ce82175b56598bf7ebdef99680eeebee4c9cbd9cd1dbc1ba6f682ac8891d84d068453dd95a32d1f8ee714e9fe588890687ee061ae65cdbff7e8bb6947c8e63c5376e8e0673c7a5aa9e5315c952610a32a7ffe6e3260d0a642086a9ad508b454d43295a12c340b3839c5c19061fd89e245acd14492ad55df9f27214907a5a2fba2932fa1023ee8fe2edef76c89642ee24aaf2e9048039eaafb17e549de90586848ae39ba3095c9e75583b1a45fd8cbd46606be46e7e210d0a6520d5cbc5f346e18c96491593531b24894075e56e80a05ecfebe0d1d35dcc0c587a4dd451b73d9740ecd10794be5b371ea9d23639fd756bc7578c064e73bda35d2faf544cc3602f0071ae637bf000b73b28e36127465780f78de0c9d9e247864b66c94e840d0a7220b383911d102ca8b133cf60788955143b1a22ba5cd4aeadac73f40776e5e8543138db4f5b0c59e9d5896d12f8c1a139f0ddaa8c4536d66274c55d5519590d0a73205c7f46b8618dc52191ccd43a56ec9cbfbb35345acc94b172c888d79b7b967bb9ab7df03f7f2242a6670b50fbc8ffb4270b772978ecdfb6554242b34d13295aa433dccf35ceb9ae1bcfcb9b0eb701393cf2c2f4870d0a74205e256914c56201bade90466be9a34e8fb97025e744f29e9f661029af0037ec83208571ae9d13c9666cda67692fa88a5d89ecc934e346760f96b9f081b03a8134980e6a60761224df65b7944e538eefba0d0a6120157b667be8e539a57b7a29dad22480022634a628d5bc33d6bf91186ee569af513cf20228187ebdea378e780498e0e0f4d6f632c7c0b0e57910d0c955653de703e65b9ba0d70d0a6e2010dd198922365136f8c873a18a504077cc2c5ec6448c8f5bdc89907f0df22ac6375c84fd07936a02032874ef78bda9c29706131e1bacecadf889139a98965a7b787b492b50f8b70d0a6420b792faa3ff43a09849069c6a22dcf047b34f696e790483a88b0ca602b91ebb172a1ec56c4a3aef090a58f5859fc5a4c91fa7d9eccf7a228fa6899a17572e3d6e1db1ed51ed018529f94e28e26ee194896d95b52776f228fa59c1365999c6d33fe3d2ecc5f9b96545f2d869e63d599548142d565612c06a49e0c9a568a49abb22825038add6260e8d97dd80cc6717e59700f038be4afc7970b5ed765cb1efee6579755c4cbd0d0a692028ff62d0979d36cdad5432ef66900a6ae16c5cb3d91191ec142d36f8c4fb51ddc1b3700f249ce50a6a85e3f1f15f986de69c6e87ae9b0d0a6e20a46063cc6f01188ac466ae7495560199061bc621b53ff30c321c28c14874f7f796a2913ae36b7ddba7bf759419b3cebfea71bc8ad5bb9d65b9ba06c21400f844172300c8dad123fad55fa64809e61ce05b22b51a7f4467bc55eab3e7f958730a2bb6c04af4a49f606faf0aca8ecaf4fb9cf1c85c0fd99e8b53671f0ed8f78d95b933b496e930bf9e314a38fad611ea418007326b537de3ea7d316a8893950d0a6720a6aa83643d6fc8e800d7c94cf2783123de5fbb187ce581a87d1a357b9aaa94641df0334d28fc54dada438913ce69e7da968e5f4ac240b6e915a907d770b3118a9ffb18bb5a5edd39b31e6f27732a3b1556daee5fca110ac3436116483f31e5dc4d59aad60120fb9e20e21159ae626c1b0f87025e6e64360d0a2e202df8d388f4a98eda8dfd74c40b4ae1b3573bf1eab3b9ec161c7d2d5f25ebfd6abcfe0033832779c8439d4b64e0d3f2cbf5731a635a9d551347d1520c3df31a4442581337f5271267beed0d0a20201e444f2e6ae5c5a075fec3e0fcae8a87953265037502055a972bfa716206514b4e1a37e80976d4f60ccd4a2745ae98a239967b7fc52c70048133086b3316f4da819e44e0ea68afdb291951f14d5b33c0d0170727f2592319cce3e0069a5cf1eddf898a40188993833306282e7a357efe033b04d55e0d3992262d48a20be64483c333865ad7329c19c62e49f19caaa37c0d0a4c202feded620f8653b2d06c9b816dd80518c9d1dce1cbcc0875f928821471fee26472ad6cc2ae2a4b75f05dfae4a9654f1625301fbb2784d9080e85c7448551cc1ade66fd97329581f9e1b36fe1287cdeee645f87e416901062cea4e3bdb042f5d9c17a0e511b66f378fa3dccf3f809d5dad2164d00ab271cc20d0a692069f06059fa598ea32d104e014219ae8ccc3e14788fb79b35dcfff963df6ed228fbe22f4573b6f042c55497d70b7e90c1bc6d610fabdb83e0e53f1626815884f580dce278024a6ca81d62598e947e6bed51bd41764462a14441046d4fc436cd44f9fc3c0d4cd9af41ae7e7239cd79e139640d0a6b20202a6ff2bbb3241e3ff1199145a803f734acacf1c0cf3394b2a3f7349ff46d37e16248d5048fee5f26a4386e7fba4f35df18a431be05ebcccc89b16c310acde47f9b2541a380b6adcac07f02d539d76bb1fa56cb34482caf857bf97a9c53de2c383b0d0a6520b68f0dfb8f8f5c401b8fcc5c2533cf7f926f63a7785ab6f1e52de7a92667da9e4cb5162b2234469e2cd77427e9421d0b5ce3d90a545765a8662bd1ff043743234ffeb36d50f0e46d9d9095bc69bfb66b3f091c88b443da23a9c6ec36d021c55e2e48e0ccc9f10bea5c0d831b3ca20b7c6051346e7015ed7bbec794854b63b1511b4e7617c734cb9d91854cfd0d0a20204ed12678159bb0e870122a76c4694a76a913a56eb23cb21ad2f6283f52953356903c5ff32430042ffb50ac84674c52937dc7a3aff7a588ac830b9c9432af0d0a7420f3e9ada42cc8665f85fce50b09b94da70b38e887b26026c9dee1615529519bc4379b404bb94e2b10bdd1502a861bca1c39a838ef4674d9ae3f65171ee93b9510baa05546ae773584205f60589a5ca6be5005d61d5cbd2cb4ebefd3e20fdd7d5b3dd0e5a1483a2bec0bcc0f0ba58af57ce12eb8962f093d1316d645e8a37b9963cf1c46331f2a3f9a91e1a3dfbb4d496628e405a767b1e5c1e530eb7eb3fae099b5f375860fcabd00ce4c0cefa36484299a64579b1aec880d89496d0dc5bed8b00352c982a9c75f13f909df2300c9e6c79305ad19a32637d19207fe58530969433948307dbf812a82201112564fd52dffd8ea200d0a6820423ed19773461c4afead5daccb42a2e266538660d147e77f3450d8237eaa708fe49b6d9481ec5dc7121da411f11f4a0685812e84d6a9d7b5b740abcac0bd7953d0789bc2fc21354c369f7f9323882b5688368829894010230644e816e3dc41e98c341da3c2c1cc719b42d4b3f3e9ba8fe16dbf26f6bed22a3ca0aef9d07d93d92067719ad7a58fd63489a1637b5752011f579aaeb74e58dc5f08270e553793d26914f9d96180872677c1e3027a59d60d0a692049aee780f7781691ca0c0751d677f481addb0ab637864b92f9fdb962e7f4f45b6bb0488e8e0a2729d93a40323b8a11d5a58e33a57ea02c69a271d5e4922e000d0a73209ec862189cba31549faf7f8a92c1ce32773aae6cb940f6f7c67c961573a9cd4ff965a2d87f2fb0f4ef8e03c50ab1ebac0ec0cf6d09f57654cc795dfda8afe912bc4b011a4c47598fb7963df1302e75bcad5a4a41e50e6dd0191978af5cd60f1325bc1d4e7a8e6d8416cb0585194509eadfec9096d989ad676157d7d0913d51a063b1b479935ef888fb22036fc3fc7293b3b4bc3320f4a15e8ffc1af9f693d40d0a2e20c549c228021255f3ffa568da1de61d9e9918dd9ffd678de224671ce11ee7f0ccc1edff459ba94e4e32586355fa674fff47d484d8c7e4cec9a197266ececb882272047f38886716abbd413b176d760d0a2020b58940833421df4bbf670f91236063f2580937a825b43c386b50df0fb6a2d2195ba8e2c6c51563303d3c35bf3d687bff1fd6b6ffb9dddf72286ae8a015a434cfc02c1f8686ba53d56fbecf1132923ace050d0a3a29bd6b6e4ef6b489fee76441feb12d389e7cb40c0d257b13f194f7e4fc384351174c378b85a5252147e951ae8411bea60899bab63314777932c83e1270437a0b67373fceecd96a280d1045856715eaadcee254110b3b7aca46c41914f2d21654272d124de275b59729024d47ff8ab89b22fe7852477c2cbe8bac525ad9518eaa0d0a20208dd25ae30a86b787a86dfdcb430078d74ec3267a243791881ecc0b5bead8cae9b4178322240882f56dabebf7c661515dc38229a1381ecf2194884f9127a12d96c29af1f3f94962748b42be9896a62ee3e5ef808a5b66a3fa1f33f2e5b338c2cb8f60184394f6f2efe9ae1f48a639b15cf5034df7b7687f0d0a5420ed5c6e5dded93b7310a645ecf311ab939c3a486d511ece8bfb2be92fab60403d249e62f06fddf17753c454ab14b80ac4761de0bb9cef9f5c3f0d0a68204b53388a72e04c61be8f19db704a23e64df9bdabe4d704cf081c16a9c577675462b736eecb27ad8575a861f64c0d0a6520444386efd170fad91d8d9d8936ed576c7554d5cebbf18191d858e0417a874a99ef45613b1f80326b40b4a6be0d0a2020644d21522c5ad49c6f06d75270f0c599066b4708e324ff499e5ab5d321742aaf33b36685e7dd9735ed1815c54c159db55f34eeed1bab87d4bef941677f439b048f559a997f8941b76d52bc3b2b63d5f1b21f227ac9c264314bd327037d00b8c7338b472b59ffaaa242d8c2d80d0a6d20d531096696d128efc37f518d9e9e6aa4699686751bd26fb3beecd352f49664e77d84cb2b362eccd159bf981b4a8114494f33164c90e94aa50dc7540fdc0a8cbd372be4bcc8054b6568c971bf920acf39dc73e64200365382698454d18ae894c75544855d658779e10d0a6120c86cfaebccd9cc3838d447652063382df27807a6f805a3725a60b84aa121ec23a8d2cf2d8da27975c9a60afbda150864bba9d37804ac8f4338b801ef6c5bac3852f4e84048c6f72564345668501dce6b7dd6ef76f11471e7456b501e8b258b4f72e649b45dd8c2bacd04b1c299c422ccafa0f3c00e470a70c56a978297e49a072ce4b235a9a7d41a64c760c1163af16bfdb2712dffcc255bb9df4123f57ea45f944ca20d0a6920c322cefe8772fefe54881cbf0041b7851c6b93d678c4575e18243381eb714e242e2d272ac7d101a0d53f1ad82d6c00bb8d99d9065c58cc1078a969a50d0a6e20a12d37ce4348fcfd601188d842da25855b2188fe46c86dd4ad962abe6327f3423f2d51febdf7aeb0323df97f42682c0693186aa043ecd18dc1496cc1f0b78bad4a22beead3db4659b34abd7fec095eebb6c96a8e766482a887d7ceca3f67d1f938eb2d8eccbf5dfc5774f792d4d4f8179ce17991303dc511782861056675386e2e948149e98042560120b7eea7185296ccff114364269114430e1548fb97ab5f05c0b903a32bdadf4d9a9a5bd2fbf54df5707d58ee14b7390d0a2020a2b082febb143fc54d0fb300401517b70a81a3c523b20e552b076edccf4d50eb41abd68df4e5d973dec9e5bad5338640e93c73ce0896b72028dc7ff4a0e4bc1f198ffb19d10b3dfe847cdec453bd02882d115a29e657c7b5e0564e0f377f2fb20a8dddc18d360299e440efa4b60145219d2ae07fb8b150be6cd68b00f2f624d69a5be89b9aba6c3b0a3f10080c0d0a6120cb8fbc85c160203f39649d36eb817bd7d53081f3a838e4761bfa94f04f58d1e431f2276e411608db6b59f31d96ecde3e818b489ee1489ff9fd558e124856857a7bc5270b26896b1721749ce1b5a0c922b7ce4413603d1b749173bbdc191411fa4ab542def6644c499bc60d0a64209a301e1b9cdecf4ec29afc1a407d688236ce6b6ecdc311f88e3da601d720174700f66d28646480a6db83d7a9eed22e0dde0e4458a7db1b8467ee46285a4a93cfdc10f21d4dd64afef123e87a11113786de50668bfd979f93b7aae014e3f309eb6489aa0b58d9c291e17af7d6ad72b65b69b6d4bee849fa358fba208407e051f80f24d07d45b7fd41a0b9771da1caa7cc77bffe995a2e2c0dbc1b9e0e0b73a514a84ddb2f6194b77a0e400d0a7620c3ee56f272667f9d49dfa1bdd9020b738f4cb57995b999eef66c5104432a00616d23249bfafa4001e1669fcc25dbf997508a4a701c8c631fb74b20c58e2e91532c628726aa2973f73c8ddf31f01082584f85692ea5212451ab1de77232ee85d2e6d487b2585fa635cd911ae389ea51930aea15e32a54feab22c7e1462dc58f38705ed4a922dc969f463cff60bca6e5139ce54d544e0d0a6120acc62baf053e52ec5df71ea2f3f7dbc443b8e9529243880b4376f51160baaffdcfb33e1e9658a20ad2c5adc447793439020db0ac7f001459c7f65c382191bc16b54d4b3f7a38445e57337111d9fbdd1c9383ac280451b03d52e416b39a5ff91bb66bb4925f7c5bdb7bfa62def65b5f21a3bc34b8ba335e88c50fb6a4afd8bbccd874b961a6d4aec278b3ca7fd4fdfede0f69e4a410f1279ce11c8b6a20247b0d0a6e207eb70bb633a6f1d6d8efb853b7a02b729a9a2e2f5520e953dfb10928614a53063aeba01674d82bda97e8d12e41ec15c4ed2b8ea6892f696e8b9e2d0becc6c9b18d87be6f9134d3ce964b928af7ba8606b83ae3d314ff1d61048dbfeaa3893f86279f272b1c247df2fefaaf286154af8aa1458cb2f2a2456a870d0a74209763b352d43543781c8abc626a642a923e41dca0a3099c7a6bad5042a4f472f28ff1c56e8dcfa149257be840573d62e17b9355785d52d57ed42c92743ebdab64fd37e42b64f10d0a61203b634d9c6bd4ad654dd9a46d90478c1c378eb877c66e82d4751a1d53284a867b7b1f5441f160fdcff3f6735979f26d8529a0fb9ecd6368e4956c082bbd623ece0645dabb6f49fde66dcc9f1432e3c18d569baacc2a429d5109fd77d135de797ca7c805760af594938293ddaf711b991ada1a39adc06c4c62e4b6be39da7c4b1dde1120898af64d7fe2f43f4d42541c76b9b0de9365d0aeb4a2f4d20d0fc41630ec032334e07c0cb51fcb67daadc920bde27f5189b289c730196bdf99c59c9ed4a2d9131bee88e98c0d0a6720362ce1ea9c95ae5ed7b7ee5e9366355aefbf1c9d2d590adf113ed2ade0ac99739da03a21579e4151c55f972e510ca6a283456e8d779b18ae427554aea9f4083aa39bf85d1a356bc5a8a830c4c3ecc7c233f99815d552c3ed6a0d0a652009faec42d61bcc1089187b4f311111cefef0daca7131395e9d79012f3d1dd3cd848e80c81e5c36a4cef5019d9fd6b32a75dda4988fd2e3ff9cefa66a17382f800158472e0c2e182852d0a2fe5869361a574c70f397b10201908090f69581789418a2fe58f9bd3bd82217dfd34f5392b2bb182106efc458c19f878a76c08dd8c5238ba325744e5b40dd1ced6548e4ea36e896bf4c84ff3d9fe6b2e33eed1be4755ef99c02490c76708ce9694a939c5266a0773d6d39c33c8500a1745325299ad27ed8e995dd4a1878398b928c7842e05debf3823906b5c45550f22046bbb5c72181c0a19e82adf12f40326fa60ff9418332f2350d0a73204ad1d75dccca2b189073b340e724a7400431ebfa565493bfa299abd71e1906dff641fc45552f41b89695bdfb2cb8edcffab810c4a065f1d9afd2e13197a959501a9a4be65e0de7d00e300a3b848d359464b852897508beb6c84272b56ba994c4b5fba0eaee1a740316c1cae1b2c7cbc9a1551fbf51a2806789cef7602dc0bd09a03b3cc5c88f019e70e06c677fc1695165737bccf8cb150cd52438b39c21ef790b40aa376c080e0d0a20201f89710ac2330a7155bd332883260401ec8b82679b862c5caf37bf3e7f643c93e3dc7638019d6d712f3dfb4e1a33ab846120a29401ed9cce2f04c7e6b632727b1ff5a63e64a41dc043b8c22c4898f79b10a87a1eff12463ed7ab279374d454a61ef18d2eede31bbf9a6bda0d0a6f20952e6bff47e012a5b57039af3aedbb3423302c1ef445652d6728212138e46338abccd0103fb6f8039609f68e432723fa57c0bd0d0a66207e8cee6b0d534c26329f93b6148eb4ccfef411547ba1f743285c007c998cc7814d7ffbe36cdc59b60d026139c1fb4e28e32fb30d0a20209c8c71041ac5e70c9d376442ca65745dc5dd9b02203db168a3ca53d31b9649104976be6e1e2d8d6a703306413035e857029f9486fc970016f2e1f89de52b737402e354e258cbb6d45c0c6c1952d6b92aedd025e0e4c52fa5f88527bfea82970bb659a03a2d5b0c81d5123d1867a69d77bdbb1fca950676d82ce3755300a10df309407305829ef2d80d9cf602ee7d6f41fdb541b99d42e98489b24d614162bbbd8fffd08b2d18a220fc3d113b9f1f50e25ab782f53c40e58cfc5e59e6bdd66a21e3986e5e5c4f31e43d90c809c8abf8c6b4754bce3d5b1a663f200e328e8c710a599d636599847188b4e47f190ed198b7d00d0a612091e5f33a11a04e689f9d649caa1b9a90da7f557de136a8e61653a0aa104eaf330ac6367a87f99d48d8db517431690d0a202084ffd16c7c24c0fbdda88692a46f93a66e9b9cbab4aeae5c090dd61be08e7b3ba38727e94eae2bd889e2e5c6a8c3b0ed9fcdea8aba91736a452010d5096f30ac4cb9a2998ca85bbbc2bc132f76cafa531429fc8eb7561e63d8380d0a6420c3659b0977fe471d026d28bb331d1bf2247a1e99d9f9d48b00f61e0473c06290d0cc1adfa569ab7dad0730395d07f3a849e185e4fc8b2de97df2ed374b133c947ed6e5bddcb0689f7d17580adec68bc21d57d77d0a449426cdea7e7ac8e90d0a692066e62a5566731d67d8d6bcc43bf81905c7d7e8c97f1b5a196b3e98c712f4b651fa85136f9c1f7a2529806235b89346b00207af3877db29208ddaafd17e9243eed830fa80d45fd8f99063a3799adeeb06001fb6b88e9bac523dcaa8a5d9a26f7aacd46df7130d0a6720a6a45d20e2b21a34b22c17759fe3a1ff1d5928b87333a201fd005e3e43657247064b37a360b2a3a2628bc376e5778b0697f321cd15ad2a85c6a5ef9ea33219e784a64e917b6ec63e1c3a29f4b50ec40e91d5cc3157dbaee9a9309e0526617264f46a911b8eb5c193b44f1ff7d8acbb5a51e86738dbb1f42fde8f2714dbb7ab65d6f1417ebd0d0a6920848ca071dcd66a149fc305f9f1f0c3634a3f3b9b24bb980e85e60683561c5db783c76eea3bf704c4ae71598d76f4b9e40d0a7420413b2daa0a25d83a46bf55e20f64c7157887f02705e1c551f53a3197290fad606b5b0214c3cca613b3df3043f7da2b8abbd5996a6e847c701b86bb1f4a7633f2b958260da722c76425e77b962567cea6bc2c94450fc6a09b1170e4b53cc0249f67431290586ad7e07bb8528c70e25f3134b929016886c9a468ce271be5fb2c6b47070d0a6120af85faef8e71447b6b90a10ccc17cd8962b33c093b0928508c6e6186fea923e78c430d5e00e7d4d7217d01d1fdb651415f573e7bf472249055ac017c4afd86718cece36859f316981dc0222562650a681a8f503bfebe8a162c7fa80d0a6c203a3587ef3312427a1f33244412c74368acb4f00b26ff8e9cdaa0f89658fda195f31f37e3b16a292ff33a46cff8ce9fab623a0932a70c3b94700d0a2020983efc342f3e9ddb7b84c902b62dc3a71d3f0388f4859a03b1537881f36fd02ecc0bdda9f7009c0dd8e7877448c2c23cc07766e57cc0e84786780ac62187088e6185fd938f667d37c067fab76495f85c80aa5ff08e26ddcbc72cdcfd87c163765f589b4bee1a0d0a6420b01f522bbd57144fa04f6bc2b8b6c6a07a3822429525bfa14be94c442f7e6d9c945807a09708e84170b36d8dce7f4652a6cc4e84f452f5610d0a6120c0bd8ea00e1a2cbecf3466d9f5826a35bf0e8d77471bfa7d348e87613e4279e848646dc7593d8b761dc27f854a5244e7ece059f6dec39632dff07aa7df53dc39f0ad61ac31c12d806f9c1a7a5e786909e47b702b89f640cb8447a9139185367fc947743fdd0d0a74209df964bde9e9d401dc6c4b3ea5dee2b99433cfbf55db5c72c4bd30ccb19714dfd27898609c05cfc913c8531a4645b36d470a97e78a7edb17e80e69814db4815d5b8abac67485cd578a1c14c9e21fba771471ec828d16078fc810caa791e82e606f24eb3cebdf2279dfb15b310d0a61200999c496ae6b2beea515a9c27070a80c88c4cb94372225ef73bd969a6b864db7344a4710b8a0a4fce1e7a6f6b942b8298748407507db695e05c7c36673794ce9e8ff89c9d5b16b3930ae3989bc29d597b79eaecfb3f05e883fd00ed3f3ff41006421023d16a263d55a6e4e163b062232ac2b4aee521e96d90f46a5d5f4287775259c6e7484630d0a2020ee75b750481297393144bf444adac55b3513fbc15cb463365774e511d150ae908aeb505e65df7b6c71fff120512e61c15c526ce50a08d63387bd02a794d8b08edf2eda3a30869a2a74e6491b740c44f2df51d8757bdf91e12616b9e2b3e5d40df4d4337c2fa5f92d2f107f36163b52bf3cbca4b5284af1cfb3b1f5d21936c92b7260625c08d631cd8b659a678d327c38b1a1ab2accaa630d0a73204e34c9aed34ee564ebc974430327796ace0632eb4c861815cfeecc69946ffca904af8b761d7da78bdd0653bc3aef44f996518c5838851249d6abfe2a5a946f05a7733f906624be72df50a23da61f13b539d87baf6f9bdfd672c45be6c585d7e5f9c082c7b877ef1abb2be00b55b8c03cb265503d201126f7088b6117da28a301418fbf42fe0a7c8dfe8f7a629382c526c6899e0d3d45e947dc4aaf961539b1be3ce59a6793d3bda358725d527964a1a9a50313a590328ff78ccbc15e1abd63bf1dae75d3892a9bc5072f0bbbffac8621e7ab661e33e8f868e91a782f0cbd350d0a7420f6555fe503464d09267f2db9328d7521e0fca7eb1d32d5cd459c3b609d1aff4574d72a247b2463fc0ecdae1928a0e6bc0c8dffb5e290285942224ed6e348aea98c3d35a15a18310602365ac81315824cafb3c351ae3f0b7030759ff36abd135d3958b1e83928b2176bae93ac396888bd6eb64fb418ca037efc0975f095251aa5aa3ce767495400e5801adea52e0d0a72207a4ea0f8256dd47d3d40ccf6fe1cad20df157ad3f15b15fbc076f3144631cee25c5c1a98f168555bab6a55bab90d8cdeacb9afe724f9bb16c6cd771ffe9893f0ff0324892c45f6360e25cf169523bd393fc9e829eb872d70595619a5cc8cfaa4aacf13bbdd7e086aae2886b8cec116a13e707e0d0a65207b97550659ff4decc16d143a53afbae032c4375d62437045ceaf14ec6f1d0c6dcc7b666e9db69c528a7afa15da8ed657c050ae662c16a09eb9c1845f27f238f79960faaae677b6f9f3e23d20250be482291b9873d49c3cf50aa279ca952fc96882177eb3e5d9f1a994545f90592cca1f589b4080a377db2d0d0a61203a568dc3c64de5d828033e1d39a1cc97b6a07476273afe70e855599115af6ff242f712f9f14256a59d934bf17fbc84b17f0015694e6f5eb9fcf727349a0eaa0a15b94499206e3f2f8fb40f3db3230d6ad1aebd7865671d8ec3a1f0bc1b2f9afea019560b8d03b46d46be344ae52a610d6421edfc0cecfcab9a0d0a6d208978679f49857f4700fb49fbf3b5cc679a54887e5b47a4be889a85e2f367dc8a6ca9ba3f32ac1a9f23ea95799ed3654b978bdbef4660fad214a2d72d7404943ee24f795d6290673aea995ce0e65a9effbacc5b6aa31f3b3bbaadbf3830426f44cd814346e9e24e0fccf47fb506000a919f51a9b0abef9d617a2ef11736b102ee53b2b4d384b74f53d64adb5afbabf8a2ee8993fa4c10e0fa73263c6f31f1f909f6e4e245cfed6a289c010d0a202006a7bd4e663e2245d613628077aa10cec85eb8c16f1b18e6419734f84b3af451b166ad2c254642823b544a6edc144e6c26482b9b7518a8dc0783cc35d2b649fce24254d0a31951f11a0ba5ae310b67265b7468ef163d65ee44b15a4b1e2311a385289401ba4360576109c8bd9e5d63aee055017b9029618efd5b5775c8e4b0de809ac5266fc57dc2decb2d19e936178239f5665a9e0d0a6120077510931dcd7d855bb461c608ddb07fb111abb97496e47b192fa02cc24d679f9896222d96d188ad204afc5a2e701cdf6fdd59e38a6d0921d09c7cffd210464603bcf025a918b1e75998211aff991e0faa3b1d0209de83e505a5f18fd27838fca08eaa57451d4d66edb2d140b568bcf7965cea8e762d759f4c95db1a6be6dccab9bb3cb67387a49adeb719d52c334690315848f1a808f1dd0d0a7220567d92751dd5a270f46d92be6616d649a1ce1fdd36226c5f810d4dc72f6ee0c5ad1e8b2230173ff8a534ab87303e36db11ad54b90ae9036e85888567aead28f17aca48ff09bb4327c596f9ce8b0027184aae005d8b847494c883905600054573e31e1d09348fe37a5482617dc252bb0a936a7d7785ac76bca94294948ef30b0d5ef70d0a6520ce7a6132c19e77238d007bcc30737306f57f58a5542f8554c82dba91d8f1622cabb50bd9e6fd9722e7cd4cd690ccc343ea8eb6fb4d05246f87e457f8f635220acdf8bd373fbc4fd72bf9bc607557ac0a0a4f5858b6f36990bd113d66178af836aca98c4b48f83d89b124cf7602a7c795f43b162ebf9908e4d708505a26cb177e204a07ff940fc8a0c850d27692708145295983a7c931d07383cd079132755019d735890e6b4bc7493b847df2615f4076b53cbc82db00febb0d0a2020c4118525613e87b5bf89fdf7b89aa3c6c57db937cbc65528afa1d0fe0e7b39f9b0dbf8243dfcc8df6c76ea192d5e4f74df147f9796724f13a5fba24641877d3848f4864eaa04689b230639aecc7f667b801514a0e1d28cca2481a64df89c584c9225e52e971f6a0d0a63203f8ae53b47209a24359517bfb2dd4034e86ad73dacd1e0806a252169a62fb9914345a38cdf6e5227f755fa2e415df05e62ecd76a17f7666645019a36011498f3a479bdbd1104e7264d7ed1d83007a6c34621dc853c48491c1fa25c63b9279c401a67a51878ffbb7a232ea5940d0a6c20c0054b7a036bd92aea66c07fdd1e18d6a7c4895522d179ec444ea2cfb647f019963e2904d243c72a159bd6800b81a1f79a984d30ae4066a8ad9df1acecad0240e57e3c9ae04254e86e41f28687c62668cac4d27f98e120ddabed76502f0ba22b2ab9f9e721eb1f6b420c7856d5400d0a6120e4832be3558b5ec9a426eb798e50b50cf3c905c5c3461584796b17bf69087f09f85f77f354ad25e5424673f2662f117061f179259eabd1f6c4678cf42e22adb31e17e65009b9cc5e159b1aa9ca8fe16fc2c52b57a2d170bd2ee91ccb99dda9d78b48b623b611a7c70f7eb9f83c28ca8d3a39cd78699bc65cf9518f6959d522d2c5e46efc479350b20d0a7220ba97ccd6b5c159b8a44635855c860c0c4a718584fc60a1a50391862d9be3645dfee5fa9d71c6cf6646299d3888b88bf4723c5d98a1a3adbae1ea8b675e73b48540bc72762a7511393eb8e3231dd1e10d0a692062fa25468d4c7d0296517b9cdb5691e31857af79fac43522101e210915e1b84f09a9ecc05e355c6c2da603e4d172a7512fa5c6d438987185300cc349c6819f69fa2976352dfe7b431867807d63873189ad0d0a742029a137ea0756b4d411c2e7b048cc0465a185915e735592075697bdb048fc9f97a33a17d824b8b7521effcb86504237363429682305058be85166b8a3cc6e6a7d34b534da92ddc5df4a76cb5f799ce418d7920dabd20d0a79208510cdf6fc33c67d4114dd161e64b5f1c85f02b55e1a5cc8bef6d0bf705f98fec4be34ce38f25c27d61e1403eb59acf65e6e3b9ac0d508c4fc7dc9c2bc3a192c12c9b967b888722c2bbfc621ec88aedf0e4151f6ea6700974031e3d0475035b442ecba202c498434b9977f8fffa80d0a2c200ce15b24ba56eea5884e1ded5d64b9dafe0f978e93ed8c37901c21af4f63697f19493dae37a4289b08f9beaf56d45fbc40559c9de7b02828c7456ff219e9a0b90822e32004447f90819ee810dfa999d08c1f0ee395a3de3b5a7341ec577f18f7e3263a51b774d4c10677e964951195d152aa0330d50e2eaeb4dbd48e6244640ff057ca19235d46495d182e0c12e8430d0a202005f4c66bc6c871a67ca42a5682a793077d67676319d3941e4495fe5c5553f78f285fe0e1384ac9220f77b772adade6a618d095e86fc1e2f7511ccfe51acc4c8f6fed2703c2827122b412e435a3eba575db63190f4a015677e33bd815f102712ccdc9ef199496187b6198032be829ebd52d6c48163b87bbe7247251138e77ace60c1f9668ba39116b24d1c2eb2e18b82528ff712b6f76b59de1a90d0a722060fbd6549fba215c5519cc58a494f0b51c1ce1e5ca2474eab509365e490c03794103c496446f524fa7ff55b89a0113de0d673ce2f73846e606713819ac52aec59bc7910f88eb7e4a5a51de35187176f64a1d266de5f336c2694c3d975bd4bebda548fb3460ffadd3aa4c2e8df6bf440731e6bafac8dc5c76bf64d9e91e69e1efd57e0712a4d5246b28a09d9175f7268bcb751835e7ac76351d3bd5de472490620d0a6520d368bf687d6942fe025ab4258b403dee8b4f458056a6650d93c508383629d65b5103675130b50c6da685088990a8ba89b877808aac4a78225cd9300b4f56813925a7fd3454c40b1e69f7233e9ff00ca3ab2a9a5dfcc78d191cbc534f8442974a22be04d00a43eb6749edcb342ffd24a1dc9dc2f770f066c73e2b3a5d233969f2928e401064f1c9e8a420efd1a628d4a56008b29b53987e2bccfd7253b5d4ac4ebe46ba45090d0a6120f5c3068758c2f30599e9947c5ebbf02e8f7f5321d8acfeb2ba0f6e7644466ce85a624e17edabda187022ae3dcee937b95a19869d0f575735fc982a445da0cb18eb63965bb15e9bc00df46d927d70ce1fbe26e2fbfed19cb352a35d480ec73a87f6dc05c33f5c5c75d07d27227cd5c32ca267de3951a318e8fd4e40d1fd35c27d272403d96445b0dcc4f8bb057286467ebcbab76ad52ce372cac94bc1e2484ec0ee5aac00aa0c0d0a64207ab408a47ac6a643c2153baa19af7a166c4174d24cbfa4d572cd7d086828de49b655d00710595bf06d0ce848ef4c1ed7b9603245e0e21210bc43870ce792842b5b97ae0f426df9e57221ce68f174b2c9d857fb119288a51a4328fb9a8e0d92bb862e42348db78a02d5c49ce65bed181ac578551e67eca5ba3f2d94858378a53a31375fdbbfad5d4a4bda0f08a398b779ca4449cc7d47c892621035307705ae13ed326a83102958fae85af00d83d6fa4040ed7d10017bd88705e11434318b31b7c379615acb0c6423a206f5d1851528057eb91a52fc3ff10d0a61203ab9bde3659650bb7d4f2392c8a9b8be1bee7543f9d176b9082c3311e0a1d9845b7a0b3ebb40928f83a916fff58ae81fdd4dc27afc9960251ab8485ed97937f214a4e60caaf2639fa71139b1d7558a1411903ffca31ef1df61d8d81e18d2b720d200db314e9d74ed79044ac463ff4eeb27daa31bb0b7e22a0ec0e9225d8f0980009df47627105d51208c6edfa718c894d7ea92ef6e06fbad37985952038e240f3943f09e9eacab84797f0468215640f5a9f3f4b0092b374f2cdc60200fff98c513c9f61c0d0a62203e2292df4d03f1b4b7c7dc7da08cc4f73ddf99002cfc72b9ddf545b2e256dbda08167290732305d4bd42eba3d366c182e4b1714bc6ef1b9b687c5bf36090cbde3e1867d901e4e483e34005732410bc882aa45d55c87c85d243b72b0d0a69204f7a0facb3c7fd8667203faba600a0754aa13f01c2fdef444ca7d6eb456b62ea36dd8fdf9eb85cd0fea7f92931f901245b2256b71f06403b231f3a3693a6acf8d5b9bf3e1151326337aae294a0b823910aa2935cf75954eac6c67b8a1be39845d753ba61fcaba66b2cbc6155c85d867e353c62653995fe4faae5a8559b783199b7805287fc9ae1e12d0fa61a3e3bdf19e9eb6767f3324f922c6e62c0d3ca99f2867331b1fffa4aa383da4510eb78fa82213b70b07a0d0a6c20c22d550dddb53a9de08f3a4c8c5caa7e85c00dac045715c80f5331125ffc4ea6582bc008cd5a7d94efa94d0cf158d059b2109f7cb21e2df6ff42c03af7b47113017965423983a5c532637f124ae9cc4001d357a62991de2876567569aa7e058696725ce1cf977579f10c7ce3561bb34f9c93780d0a69204984c3fc7922aaa9b443000c5c898f08bd2ca34a8ac5a78a1ca9de20396ba00ae6e3161739c32cef663d9d55edb0fa82e8cf06c2c6dd7ad981e2cdbb0bb2759511a9e465fee4b0c9c6a6e39d30ec0d373f67476dea79a41a3ed7b658a98588adf06c0ff6729a0cd3d06e07e1baa5fc1a26b424ff722bb5ce303b2d41288a37a1bb1390bbc0b70d0a7420633b1a45cf71df1da79d2b7347a6d74f2203f688a9769bcb6debee88a4dd333b51550ea57afd98ea3b2ccd117d86b41b53a45574d0e98588b1a3b2d3dd570259851896eeede3e61eb4527577d36d37eea91ffdfe9513c2cea1594c3cc16e33df8dcc3e6d91ed7eff4ecc14cd41919926bff2b90d0a79208f71dfb91623d5eaa9a453a05e7f48bee3dd09267b37358b6cf1df16c9be20bcb38954b541fc9f6488d3049046027013fc11c129c8fa1fc6c942bb1568113f5285ac0c00c4ee9ec95e41e5e3e55a23c2e65abaaa0d71c71eef6e3fbf00299d86abd587d415ff2d8d66b96b99d68438fce8345a9bb792105fb5243ee10bb0900c95b352f028c4b6100b35e1b52b4dfd475a140d55d1860d0a2020d900cdd1b3a97e3b1d0f7b1f714e43649f5075c5634a8fcd54c0b846ee285a224cfac5e674a697be7c575c7c66fc611384d447f86813bd602c4abca2351e8f1413eb4f10273101c1f398eef224a9dd0dd5cf49273bb4811f17f1dc9381cce27012c6d4590d0a6120823b838f94a4b71bab513e9ae4b36f9724d0c9694db74ca546671c14deed786ff63c502aff3396b8ad576bcd76d84aeb26f68c72e8635b4ba6ea9ac6a8cdb8b4769beddeb10862b316359aa93c95a08dc7105eb74b7ef02c7bde86a1b8c8b3a41738676779978ee1f0abbcb9daf0f7022c0d0a6e2012c6853733da2cddb7c7a58f79c77a9bb2358fbb170ec124834f0c4bd55eaaf0cc1109bd0aae1bfd0d85524742a818d0b1baee8e49de15b26d0233ce050221f9e07e2f75b676a67ceca104429ddc76dbef9053e4c9f935fe865a49eb232c98568e74ab2eae757fd122ab58629289b9b2387bad7302c5b0604b27e5e4c411f0c884196d9f419998652259ea2f0bd6ef1f822efa660d0a64205e35abb814d0a87de631fcf0770dc873b1ac7533be34b4743e8b3f7e890299299c057ea5fa7bc38ff767fe9c46ebe5ab62bb29463208e239797e3353bf559b81b551d8890ba97eba5318321f288f4b3d047a49a391407929faf7e94d4d91239de55bbbdb00a140d01fc9e60f18a07b42331f759e1b10355bcfef57c9e83b397d5205a3e4b80860cc4ab712bff37a90c5234ecc941bc46c58f86c7694f1835daeee77b207b47d96b658c1d1801b3ab6fb1a9e1c54a10d0a2020894e5b722dc3d1f3a0bd306de6afd137dbb463990e773a6c9f6cc087af6845ca68e5e815006309c3f2360831c3175148b1ef65e4cec0354df0037146a8ca49201fdadbab4be559e3aa2e6ca07dc97ba73e31753f2b7325df8dff461a8350bc80f277d75f37c2c2eb80ed7f85c13e33f057200635c397668b579171415d1dd58b4561b2df2c61fab3172f61ef832ac2405f57517e1922dee8ba0f70f77450b6c1bb863f6a62ec05dc4e9aa0669e0b8d6c53a31fa2c55b223ca2d7ac0d0a65202d52efe9c927413205fe447b055d8d3f5ab36fe0bdfd85bd2a418f11ceb5b0f9180e08db00e4852ae063e5b37d30eb5ebd969709ef9d71f5f6878d56f38072e865310fbe7db01df412f700625da7fb7442055098252a2d2f8ff9d3fb984f4ebc1c1480de5a39b5a807c5392362537b724935ad92b77b841ee3cc6f102299ecdf32fde87651972444d908f8483ea071d99f865c1e47e5861e53577d32ace31ae093ea8360ce5debbe53df1ddabb460c08fbf36052523978c47bf80d0a612027c752b38854e93e460c3f8966ba3662ee1874338638f12dddae70ea9cc5be2f80c90ee4abc2286e64e1cc8789ed7ba29129b20fabbd3f6a3e1cdad4cabf09206605b3969ed8f574565e9557bdef47556cfc5d34e36e097268699d0fa5004ad84de530bd99b8acbf046de63636772944d285921aeb3d7c8b0bea2505981f453da101d2e6fdfe2a527e5fc28ab87fb52347982863086f4cf4a8b2262ff5b96ceab6fbcde257abd6c2e7eaf76b0f2b40cae11628ae72aff2ed172e727897bedf5c51fa8bc6219571fe01523e5ec882a62e1e6a15a7d0e87e2c1a02297ba1a06356e8476d1af04eea0d884877d00d0a732011d45f56e22fbe0795930925c5e643a72cf701d4b348779f3a7b03c5e6984631f7afc76bc11b599cb1f698e8abc69c8081c3fdb8c26827ab698b15ed4daace45b8930a83e86cafa4be2a974f92e5ffd684b38e11fca2d6ee43ec5d4204d1504b390c3be4f95e9f4edb754ae649ef7b06dc65f3210c8d621200498c905760a75c09445a6ee361cbed1d6d5e90a3fd497d4da9e024993e01f88cd9359488007779f8470ca381d6ce49128256ce88ad27ad949a7ff0e25b6839e09ee7e803dd2648912c002600a08af49aed472c5b31bac47a6f9f7bb80d0a65206af63cd5e96f774041e85a40d85f085ff647639ec907e6facc4998b3201591cbacc1c3527d05b8d0233f4b7dba2c542d66ad9c401f845f587a553938116165642c572b032a2111e809d9138816fed5eb722dcd02c730685516d8067b91403af5a776e0a056219595750e7b915f6f11c5d1eb1bb6a8f89726ae0efc82521736d53cf9c2587961844faa7a10acb00267ffe95845871c1e2130dbb64b74d0a2ef55b95b61f99137d4d2c1b78f18cccd8d5f490090749f780d672b9103acfc92188c06d79997fdd023924a0df69cbf5b647ee336461a3f0b28f471170d0a2020e722cffe1ea849b5aaa80ba7f1f26ad7bb0ded862ad99c4c15b1478c91f76f83f82154175acd033999e2b64ce5f805f301118abfb76f13ee2fdadf9becd2685da928732ffc094209c5e096504c5fcce0d8485735b47d548544178efae1aaf9a56e53003170c9eabc906a619c6467fda8c811b161aaecf2dc98f1255599c7104692e401b6eece678e552e228e781f9670e374a0de8fc8f15e354bc5bbcf9bfbdbcda316d1c84844a4b67a4424bd3d731938af334ea097c067106a9eb210008cb6afd258eee097084e4da11d4b57dc32854871210d0a6f20b16c8ee7abec8854d61cba7ee4bb60a69ba1e2a2c5adc3313c6e9fbbc9ba440ff315a4b9c07936790a975d57e90440374ddabfd14467395b8969dd68dd7eaf341c9510735b757ca7ffa5e3228ff0ac42a8a1af8fdd645efcd07a463c3eb681e7779e970b80092343d15aa93d5ac35d94bfbf597aeae2fe5da2f4517152fde8d4090baa3cfa6fd9f593ae112166f0dc384eb0fd13d0267750648799555f0804d555385f3de31e2edc39ff0d0a66206704b4ba924132a3e0c7ade69964c58d1b0e559767efc0e3ac73a47100095a11ee0091a0a88885293ea76be5b8427613205568f18c039e8be1d67b545c1ad31275ad780a52ee5be8afde7823e2636be5fb73098614716d98a8515dbe758cd1f67edd30d33264fb8c216957837b34f7fa818d603d5b4bc5f73076db3b1b1a48c6b37f9cce8953ae7f67f613380d0a2020f03904b8054c357ae60ec837e4eb1a9d152a0c7597e8bb99e3df4f59efa3c486b8e551e403fb267b967573a3377bcfe5c6005f6f865673889d8d8c7f6a0376f8afbcf39e78227261c116a832b5fe52d001612a36107162f81147b8a172ef2599a9376d475a98eeca6d48bc49a30d83ea935c7cae8b875186a3d12b8be6688090d061d4f6a1e5b14fe71891d973e898030d0a752099c07a05826c9eaa0f00e94268b8b4d76f2746725bb319c0041874a704dbd08cff37eced6f2d1a2c397ca36d49697b210b63a969405e88fef16c58fd6832a89255291de37aa4cc72c2a73d6157b86a5b779112ddc39382edd9333ba36d0ee96c7a859594c704ec5c290c6dd4fb86e6db7f4bff57660554e7138b7d6188bb4b77996f9e8225e02cb5fe6d109b6370fed27e3d0d0a6e20469c411026fe9816cf9ed22fb7b20b31ec11b964a508fbf099296771952baffdf597d90438e4e53714926d971aca68ca83a459eaabae572a5f7dcd37a452ef4c171ae492293454a97d21f5378a5903c086c4b692749214f25857d6849544ef12b10230b087b395348f615a044c165df80649f1ea46de553b82389ad307df29edc8d94a94a648964461edc693f86d47ffa9a81b3cbdf7e6e2e96136c1f6d5a231be03844d624d59e33b37fdf80d0a6420509801d74c88442dea5290ccaecfb341de0a0f33bedffabf2c91113cf8570db02720603423890f7b834e2dd0c8dc6f90da816eaceb1c7dd684214fe6a3bf3af22ae70539f4fb3b2f41911030371ffa0d0a652026fcc39b3a037ee05b72d5104e22081aa303754ef3afc157dd48dd9e18c1c889c3556033e3ea385b05fa28c49c3b0783b8af685b02063ce4b145d124659b8ec52f07159e302135e7f5cd237e5b19f525180d0a722057b98f5841dd11e9a7ee56cff9293bb382d082b78918c59a3934e78889d7ed3f8828930bf6e9deee084eba8caa9bf589a5acab305d9eb07cc8c3e765570ac78fa3a5098e484f9610083b1ce23ecbb01f629c29348a0d0a73201162c1601cde400947fd52913ea8401f06c03402593dd35b01652fafa547836dde6a94bff5166d07e06e4ebc760648660687a38118d540e7cc7464f221fa9f8000bf593a585c2dc3e07f084c4facca98d0701c227b67ee0ed302569c493b5660c421ae17062f81c38b50ddf90d0a7420c4d02934e558b3e19e1c7cd1ab61578e494e0f0bd3448a4a3c9de3465eb5b4ce71b9555443918320446263890d26b7c494b21447c013edaccf1d7ddbc1a25f38f21398bb36547c1c976a472c3b733014cff09b176fb8bbd1360f2f57b1da5509b09689b3b6845b65843516e418873c9fa1271a7c622d6f9d3b3d7b49f2ca3cb466fe76da3bed0b7597fdfebefc4b5c0cef015081a4d1ae3518348210060d0a6120fef0e6eaa94a61588e8403d09b4f233e1aa1e5ec82ab24c3594524e0ea21e473896a2414a8df276d712a45525f263aeff0c0a85dc01ad631dd00093151ea9f89be5045cd1b1a1b96ba2b38b1d7cc89972f9dcf570ca700d97e3828ba5f33c922f130b9382fedea2c54e0652c0a51da7e3dd6ed6e42a1150f86b18e62eff03d715b86e5052afcdf3d4dd294d99eee841b90a26d9268b73232fe8bf556071f2a0f7f88fe0a13d948adf1dbdb9d6910d43fa9739e751050953fac0d0a6e20318b7ed1cd842378e41e5ef5c0ac515c7366345e7c430458857eec676e55550cf4d7450a296928b98fa03fa75281e18f08c3b4c63620b64e431f53a5712f3c9cf7b864e2ce9aef1413b72f1f28391b90308a7e06503fea894763abf65ce0e36bdfd0a71b039684506f7c22c31f8f5b58f7e9e2bc6e9d1546480d0a6420e1f39b229f140387977acf2defad5d687e5199a25fc7e3e54dd2023036df7e68746bf1bf923d6e44d9bc581ae99bb28d0b3ad0fbdf0fd54914a6826fa12d07ff49fc539d11e90cab9fb2812b09ba3626a0a5a8d2cb02482a747e14587e6ec6f66a854ebcf754112d5d66772651786eec2fb87102fbdfe3dbc672263c4c2d0d0a69203376b674f634c799ec83ee3b1fd5a73284d66fec50447fba32c8b70ff2d136a3205c83dc2fda0e37a0e9f97713630d94d569e5400031629514cad66da8ad2cff1a07b0a7c73365a686e8771477275096707b3af22e614a4d7720237350e28d674410c753f211abad545e8a1a276b8ddd2966f46e5a0d01d80d267cbf2f6c660d0a6e2069effc528ae49e4112ce0881ae09339024667d4431ddfa0a968bef88505de574d01ebe2870e2bd68c368e29285f41a6834cff7a0b5d794f447d6ab005211a759bc98af052578cd944a3f10b62582d4a9c3a0820750eb4b9fb05562054a5cc23344dbbaf8bca6c7ec5f0962682e0873755b1962eeeed4b1204c64cfa755f7901042429e88c1c2b610f47090cf07bc86d55841c41544a1c8dda414f42db0736e9dbc019dd46e18126d0bb79a88c67e58ab0d0a6720a4a7b983c1d3fe4808911c0130c210a3ba0019c4ac9a0470afd48d688eebfab00647a1c865572e54ce89b2b9905456d4baa83eae45be83709d0473ea5b3e80f89f4d0ccf9d929c31b5ce3531d3bff2e540eb0967e974874c0f3dbd144fa55233337a7740b57f2044886c947bde4330c446a12f5a81a06c8fb26fd789f359b7ddc3716c2199e7d45e75332f1c89e518bf71e339219351ef2a4a0d0a2e20e4ef514ef69eb2cc196ebf8611334ec1aff587371a8e91e21d640cfec661c27ba31e0db979109ce958e9187bc31a9a3f51d176d56b6c5b10f1691f2bb6b4a8c41a55e1d9b3c1712c83131d3ef6cfb1cf5ee61eaefd203d0988d5d88fa410c61ce48f3d05a60065915f089f0db66e6cad0d0a20203e7cc17ff531668a03e8ba840e5440a992bce538f94ddbb81e8c4966383468329c0fc689e65e46d4b18488be8b00b7f14d29ef53761a516dd741157a80b9609dfd78c3f0b219d22bfe1cdc617e2dd194e5807eef68cd9caf6ac7c059bb6c5f26b7cd81614d5be7f82030c8450489ed9eef4ad5e335466e4e76315e40a6cbafaa7e9dfcd7e0b87394a3817ba3fca9fc4a09f2b84b280bc184fb96e78357027a24d36ba2e11f0d0a4c20b93445f22110cda9200b54daaf1f0bfad67b3ec2470b8f205213fc864fa82e12b14992b64dd8232e9ea3953c410bbd9642162df9938d644b25111a8368e8cb757ce26b4ba700e51e3d1afae490a7f7e6e4d9af9b282a834455ca2cc87b6c577c0cf72846b222f561982919c0276a2066cf13184024e40cb5965b6678f2e1328f1e067ec47fb00d0a6920554ca17873089acb6d298dcc0a99504e527fa35710343ae378a332c28542f316b9076aaee0ff9f5b61683d31022740e4e47e5c200ac2d32376dd043d6f47d8e0b583e9947ae06da7e337a456273e0acdf59d23263d7974411008162e49aa62bc06abdbf848ea47b534715758c042c18709f49c701ce7c48b3a32361696fedc4749dc0d0a6b20f7916ea5374052277b8473d149459fd49b42ce04d0e3c84db44eb15db4ca420381279f3326db892f24608929619f8bc76007a77b1cf9b6567eee5f1d76d8abe84ea5de64654a5f409d36f4fc9f24fc9c846928250ec917b930e47aa073b717bba66521c58e75a8ffff43c31dcab3080d0a65207eede4f65df954a2d57ebb2ffe290ec1d32b9c7e71004349161cd7c2e227265597fdf6ca0eae35058cc2d8e964bb81a750339aa600574095b4dbf0091a6e57146069c76f2df30178fd81f54bef9b2a1b11d912f9dc1f0638e55f68388ebf29d4a017bfd265106eaea8b3e68fa023338604bd9d7b3a776981dbbc83d699c8c8bcad7dfc6df86a7ac247484d6288e9a8e376428063b3f51b92aa19e841fba12859863e9fe6b5410d0a2020257c4b62f1e51555ffb134087a11acd287a4b8d033590240faf1cf857a79d5da73115118621869bcaf30953e02044097344db0f749b7cd3df6a5f65f2db35ffffe198ced24412a5e61ec3b3b30bbcca94d45b371f1a8bf5961db810ced1a078e5c8ec90d0a74206903e7d157671c18a0aeded00e387b64e629856732d487903ea7e5ee8e15045d4201b2907efc298e952983e27ccda2824e6f74a6e84eeda9cd1aa39e39eb9b4470ee92e184b7d1d8330461e4af0f233c4dd5b20ffc3364464db8625fd5904211c4b677f79a5c29f6d785ef0ab3df70069a791a4e1c3902b71d2214a33eabb1e90ca9125a3b0d0a6820f88f524fd0323808d6855c4c2f71c5db2f2af7fb4c8d3d33c09d3fc734963051213604dfee03b313e5208fdb740d186c193c6967c8a88aecb8a2822dc60c1b008d87f1542f0854edc33c47861442d79f8d556b903a1e689e536fbf2142f24407ba4222d8d7a9868412a9a9aa74fa0aed6b1ac8167eb08347cdc00389ccb29c6debce71f80d0a69208c23c1f0b8d92eb72b7c25b7239f24e6d4d467b26758180d0a7320690c5772a50f6dca26bfab7d1c168953fa9d5dae1cdbf6c89cc93f45a2faf6078b5348ef8081943cf005b8f6a5f5860750baa81a45f2befdc40e8dd064b3b029c8cd823fb2e53a18c0251f65bc26b7064eaa0d0a2e20489119e7391040a09191d70ff16dd52961a73fbb74913b1fbf29fc344ed575ae8994f070f14485c1da28371a823050ada4cc03a318f28f1f9ca98d467840bf71dd9b1746489442aa05de87b1780971c74b0f35e7bfe6f1ccdf29c1378ee6b7462ddaf5e2610d0a202050a69b7d9ce2d67914c85e92ecc72c1e1097235cee395b02257f175259ac93730ea2becd4f1895282fc14aa0f98806c2155624633364dae4277305ce483104d0e76ed59f3e0d0a3a290e917bf68aade88056316e361684e59ad4925b7e3cd675aa61836027e1c056f555a117d2bd4fd45cf507760abd6363f94149c566eb86b180e3498ae8e4ed0d0a2020b74016ba601b19300f6f6dd300f0b4d7119db0fe263ad3ee9f7dc4175b36a843d6b983cbfb5c381d781ea61d27102576ed07330a1cc9923f93bebf0d0a54208ae7ab43255173c03ad0bbd41a8fa6348d1ddeb9114a8463871308448fd0384bbac154aec1e4a4efe433c4ee8a4a0d0a6820df01f7578cb080f588cf6b3141867094c9765f3b1245bbebfe185581c80dfb7ab002ca47cef7e9ea5c5a1b9a65db4defcce1c9a6bbb41ed1b78bc3c6cf84fb1b38aff6712201ee69b58280337da9d2ede8868bc371359ebe10aaa681d460f375d08295a3038a28b4e6846f5c9de34aaf9aa8e4a75cb78c19a7db607bd97b96c8a79cfe10ef942743e068118f330d0a65208c63706d10716f3a638556dca971e905fafe65fb046c8da4bd5ab88517da789501f4a9f23e655154a053df358068de90deb919c0a74a5cfc74f632e6ff1f0772ee570a76d2431b8c0735431462de5bedcaed963e97cb7cbad2324a52408d91cccf8a6730ad281b3d1940ff933d93efe37dcbe1cfa00218c86ec92fa90d0a2020e6b2d2c1e783954de27288e778e76b835ce72d922bb5143c860f7c964bdcc2ad1cce4c8d65d9a6c9815ee38c6058b03bef18b8b3dd88e268700d0a6d205c52a0dc69c8cb3b736f0ca20f3ae6b78049c47268d3a777266b2f0b21480f59fcb5d9870be4e7d2e07b4c0d60d9970f79d81b03444fbd2477e60d71e86ed656749e89239710c610d73673710d0a6120d2bdcad090f6f9a0b4e0b030d233e0287a1d8593d75dc9f0b986fbdead4568b524815cb03074f76b4881badcd4976f4e420ad93bd350589d6003aa02e9d6e54cfc73018df041280d0a6920f24b22af03b00b2a61d577e3b9688cdecea331fcb5409a8edda7952899692a88c88e15521ff4ef30c25363efd03618ed432c326477e81424db17ee63175b9d3fa2d3a7c70d0a6e20632fa8c0376c0e15e278e8ab2dfa992c6946826c534e7897175529d8e8677cf44d46cb9f725ad428f40f2842059310f155e5124e1ae7f1f803b04b01033b0cf8d3b071b616bda9fb3a3896d78d239361c8efc436173d5d0d0a202063a50c95d4f103448a782e167218c45a68ae44ab75c3c19367ab89df6c6159f20ab9562ef87fc35739bacd07b44d6edc951afd019f82d1bee874f4eef7f33eaf8055affa89948e74b514591ce348c0304f8738ec4a0538a65c2cc18bc6ec102e3ed360ff5857b625481947d4857060e12a97e214273df03f7de2d1e9b79231afbe1c5a8cc90934cadefe9b600fb36febd71f107b9275b22c130af4723a92a00c2a67b2583d1b4d5c03a6721bab338631cc34c7465015af934c57da63c10000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
diff --git a/share/examples/BSD_daemon/README b/share/examples/BSD_daemon/README
new file mode 100644
index 0000000..9aa1173
--- /dev/null
+++ b/share/examples/BSD_daemon/README
@@ -0,0 +1,76 @@
+# ----------------------------------------------------------------------------
+# "THE BEER-WARE LICENSE" (Revision 42):
+# <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
+# can do whatever you want with this stuff. If we meet some day, and you think
+# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+# ----------------------------------------------------------------------------
+#
+# $FreeBSD$
+#
+
+This directory contains various stuff relating to the FreeBSD daemon
+logo "beastie" and graphic profile.
+
+Kirk Mckusick <mckusick@FreeBSD.org> holds the copyright to the
+BSD Daemon and you may need to get his explicit permission before
+you use it. Please see his web-page on the subject:
+ http://www.mckusick.com/beastie/mainpage/copyright.html
+
+beastie.fig
+ An Xfig(1) drawing of the 4.3 daemon.
+
+ This rendering of "beastie" was produced by Poul-Henning
+ Kamp <phk@FreeBSD.org> and is released under the "beerware"
+ license. In addition to beer Poul-Henning collects FreeBSD
+ merchandise ("nudge nudge, wink wink, he said knowingly.")
+
+ In difference from the rasterized renderings of beastie,
+ this vector-based beastie can be rendered in any size and
+ still look great.
+
+beastie.eps
+ Created from the beastie.fig with
+ fig2dev -L eps beastie.fig beastie.eps
+ patch < eps.patch
+ Before committing this, clean out the comment brought
+ over from the .fig file to avoid Dollar-FreeBSD-Dollar junk
+
+eps.patch
+ Add some comments about tweakables in the .eps file and set
+ the linecaps to round to improve visual appearance.
+
+FreeBSD.pfa
+ This is the font used for the "FreeBSD" text on the CDrom
+ products from BSDi / (Walnut Creek). It was originally
+ found on the on the WC/BSDi CDROM "Font Garden" under the
+ name "NRBWelshGillianBold", but the designer of the font,
+
+ Neil Beshoori
+ NRB Systems
+ + 44 1273 581366
+ besh@cix.compulink.co.uk
+
+ has donated a FreeBSD version of the font to us and allowed
+ us to include it in FreeBSD with no strings attached.
+
+poster.sh
+ An example of how to use the stuff above. Outputs a simple
+ FreeBSD poster suitable for A4 paper.
+
+ If you want it in A3 format instead insert the line
+ 1.41 dup scale
+ above the "/mm" definition. You can scale it to any
+ other size in similar ways.
+
+
+If you want a GIF with transparent background:
+
+ fig2dev -L gif -g '#f0f0f0' -t '#f0f0f0' beastie.fig beastie.gif
+
+If you want a PNG file:
+
+ fig2dev -L png beastie.fig beastie.png
+
+enjoy
+
+/Poul-Henning
diff --git a/share/examples/BSD_daemon/beastie.eps b/share/examples/BSD_daemon/beastie.eps
new file mode 100644
index 0000000..587fe50
--- /dev/null
+++ b/share/examples/BSD_daemon/beastie.eps
@@ -0,0 +1,1507 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: beastie.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel
+%%CreationDate: Sat Mar 3 15:57:53 2001
+%%For: $FreeBSD$
+%%BoundingBox: 0 0 384 417
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+
+% This controls the linethickness. I think large posters look better if
+% you use a value of 2. Small daemons looks better with a value of 1.
+/linethickness 1 def
+
+% If you want to fiddle the colors:
+% col0 below is black (the lines)
+% col3 below is cyan (the shoelaces)
+% col7 below is white (eyes, shoes)
+% col13 below is green (the shooes)
+% col20 below is red (the daemon)
+% col31 below is gold (the pitchfork)
+
+% This sets round ends on the lines, this looks better than sharp edges
+% but I have not found a way to convince xfig to do this.
+1 setlinecap
+
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 417 moveto 0 0 lineto 384 0 lineto 384 417 lineto closepath clip newpath
+-51.0 455.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {linethickness mul setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+% Polyline
+30.000 slw
+n 2174 2967 m 2179 2956 l 2183 2946 l 2189 2935 l 2195 2923 l 2202 2911 l
+ 2210 2898 l 2219 2886 l 2227 2873 l 2236 2861 l 2246 2848 l
+ 2254 2839 l 2262 2829 l 2270 2818 l 2280 2807 l 2289 2795 l
+ 2299 2783 l 2309 2770 l 2319 2756 l 2329 2743 l 2338 2730 l
+ 2347 2718 l 2355 2705 l 2362 2693 l 2369 2681 l 2374 2669 l
+ 2380 2657 l 2385 2644 l 2390 2631 l 2394 2617 l 2399 2603 l
+ 2403 2588 l 2406 2573 l 2410 2558 l 2414 2543 l 2417 2528 l
+ 2420 2513 l 2423 2498 l 2427 2484 l 2430 2469 l 2434 2453 l
+ 2439 2436 l 2443 2419 l 2448 2401 l 2452 2383 l 2457 2365 l
+ 2461 2347 l 2466 2329 l 2470 2313 l 2473 2297 l 2476 2282 l
+ 2479 2269 l 2481 2256 l 2483 2240 l 2485 2224 l 2485 2209 l
+ 2485 2194 l 2485 2180 l 2483 2167 l 2482 2155 l 2480 2143 l
+ 2478 2132 l 2476 2122 l 2474 2113 l 2472 2104 l 2470 2094 l
+ 2468 2083 l 2466 2071 l 2463 2059 l 2461 2046 l 2458 2032 l
+ 2456 2019 l 2453 2005 l 2450 1990 l 2448 1975 l 2445 1962 l
+ 2442 1947 l 2439 1932 l 2437 1916 l 2433 1898 l 2430 1880 l
+ 2427 1862 l 2424 1844 l 2421 1826 l 2419 1808 l 2416 1791 l
+ 2414 1775 l 2412 1760 l 2411 1746 l 2409 1730 l 2408 1715 l
+ 2407 1699 l 2406 1684 l 2406 1668 l 2407 1653 l 2408 1638 l
+ 2409 1624 l 2410 1610 l 2412 1597 l 2415 1584 l 2418 1571 l
+ 2421 1559 l 2424 1545 l 2428 1532 l 2432 1517 l 2437 1503 l
+ 2442 1489 l 2446 1475 l 2451 1462 l 2455 1450 l 2459 1439 l
+ 2463 1429 l 2466 1420 l 2469 1411 l 2472 1403 l 2475 1395 l
+ 2479 1386 l 2483 1378 l 2489 1369 l 2495 1359 l 2502 1349 l
+ 2511 1338 l 2521 1325 l 2529 1316 l 2537 1306 l 2546 1295 l
+ 2556 1283 l 2568 1270 l 2580 1255 l 2593 1241 l 2607 1225 l
+ 2621 1209 l 2636 1193 l 2651 1178 l 2665 1162 l 2680 1147 l
+ 2694 1132 l 2709 1117 l 2723 1103 l 2735 1091 l 2748 1078 l
+ 2762 1066 l 2775 1053 l 2789 1041 l 2804 1028 l 2819 1015 l
+ 2834 1002 l 2849 989 l 2864 976 l 2879 964 l 2894 951 l
+ 2909 940 l 2924 929 l 2938 918 l 2951 908 l 2964 898 l
+ 2978 889 l 2992 878 l 3008 868 l 3023 857 l 3039 847 l
+ 3055 836 l 3071 826 l 3088 815 l 3104 805 l 3121 795 l
+ 3136 786 l 3152 777 l 3167 768 l 3181 760 l 3194 753 l
+ 3207 746 l 3219 740 l 3234 731 l 3250 724 l 3265 716 l
+ 3281 709 l 3296 703 l 3311 697 l 3325 692 l 3339 688 l
+ 3351 685 l 3363 683 l 3374 682 l 3384 682 l 3393 683 l
+ 3402 684 l 3412 687 l 3420 690 l 3429 694 l 3436 698 l
+ 3443 703 l 3448 709 l 3453 715 l 3456 720 l 3457 726 l
+ 3458 732 l 3457 738 l 3455 745 l 3450 753 l 3444 761 l
+ 3437 770 l 3429 779 l 3419 788 l 3410 797 l 3400 805 l
+ 3391 815 l 3382 822 l 3374 831 l 3365 840 l 3355 850 l
+ 3345 860 l 3335 871 l 3325 882 l 3315 893 l 3305 904 l
+ 3296 915 l 3287 925 l 3278 936 l 3269 946 l 3260 957 l
+ 3251 969 l 3242 981 l 3232 993 l 3223 1005 l 3214 1017 l
+ 3205 1029 l 3197 1040 l 3189 1050 l 3182 1060 l 3176 1069 l
+ 3168 1080 l 3161 1090 l 3154 1100 l 3148 1110 l 3141 1120 l
+ 3136 1130 l 3131 1139 l 3126 1148 l 3123 1156 l 3120 1164 l
+ 3116 1174 l 3113 1185 l 3111 1196 l 3109 1209 l 3108 1221 l
+ 3107 1233 l 3106 1245 l 3106 1257 l 3106 1268 l 3107 1281 l
+ 3107 1294 l 3109 1308 l 3110 1321 l 3112 1334 l 3114 1345 l
+ 3117 1356 l 3120 1365 l 3124 1375 l 3128 1383 l 3133 1392 l
+ 3139 1399 l 3145 1405 l 3152 1410 l 3159 1414 l 3166 1416 l
+ 3175 1418 l 3185 1419 l 3196 1418 l 3208 1416 l 3221 1414 l
+ 3234 1410 l 3248 1405 l 3258 1401 l 3268 1397 l 3280 1392 l
+ 3292 1387 l 3305 1381 l 3319 1375 l 3334 1368 l 3348 1362 l
+ 3363 1356 l 3378 1350 l 3392 1344 l 3407 1339 l 3419 1334 l
+ 3432 1329 l 3446 1325 l 3461 1320 l 3476 1316 l 3492 1311 l
+ 3509 1307 l 3525 1303 l 3542 1299 l 3559 1296 l 3575 1292 l
+ 3591 1289 l 3607 1287 l 3622 1285 l 3638 1282 l 3654 1280 l
+ 3671 1279 l 3688 1277 l 3707 1275 l 3726 1274 l 3745 1273 l
+ 3764 1272 l 3784 1272 l 3803 1271 l 3822 1271 l 3840 1272 l
+ 3858 1272 l 3875 1273 l 3890 1273 l 3906 1274 l 3923 1275 l
+ 3940 1277 l 3958 1278 l 3976 1281 l 3996 1283 l 4016 1286 l
+ 4036 1289 l 4057 1293 l 4078 1297 l 4099 1301 l 4120 1306 l
+ 4141 1311 l 4162 1317 l 4183 1323 l 4201 1328 l 4219 1333 l
+ 4238 1339 l 4257 1345 l 4278 1352 l 4299 1359 l 4320 1366 l
+ 4342 1374 l 4364 1383 l 4386 1391 l 4408 1400 l 4430 1409 l
+ 4451 1417 l 4472 1426 l 4491 1435 l 4510 1443 l 4528 1452 l
+ 4545 1460 l 4561 1468 l 4576 1476 l 4596 1487 l 4616 1499 l
+ 4634 1511 l 4652 1523 l 4669 1535 l 4686 1547 l 4701 1560 l
+ 4715 1572 l 4728 1583 l 4740 1594 l 4751 1604 l 4760 1614 l
+ 4769 1623 l 4777 1631 l 4787 1642 l 4797 1653 l 4807 1663 l
+ 4817 1672 l 4827 1681 l 4836 1689 l 4846 1696 l 4855 1701 l
+ 4864 1705 l 4874 1709 l 4882 1711 l 4891 1712 l 4902 1713 l
+ 4913 1713 l 4925 1712 l 4938 1710 l 4952 1708 l 4966 1705 l
+ 4981 1701 l 4996 1697 l 5011 1692 l 5026 1686 l 5040 1681 l
+ 5055 1675 l 5070 1668 l 5086 1661 l 5103 1653 l 5120 1644 l
+ 5136 1636 l 5153 1627 l 5169 1618 l 5184 1609 l 5198 1601 l
+ 5210 1593 l 5221 1585 l 5231 1578 l 5241 1570 l 5250 1562 l
+ 5258 1553 l 5264 1545 l 5270 1536 l 5274 1526 l 5278 1516 l
+ 5280 1505 l 5282 1494 l 5283 1483 l 5284 1471 l 5284 1459 l
+ 5285 1447 l 5285 1434 l 5284 1420 l 5284 1405 l 5283 1388 l
+ 5282 1371 l 5281 1353 l 5279 1335 l 5277 1316 l 5274 1298 l
+ 5271 1280 l 5267 1263 l 5263 1246 l 5259 1230 l 5254 1214 l
+ 5248 1198 l 5241 1181 l 5234 1165 l 5227 1148 l 5219 1131 l
+ 5210 1115 l 5202 1098 l 5193 1083 l 5185 1069 l 5178 1055 l
+ 5170 1043 l 5164 1031 l 5158 1021 l 5150 1007 l 5143 993 l
+ 5136 981 l 5131 969 l 5126 957 l 5123 947 l 5121 938 l
+ 5120 929 l 5121 922 l 5122 916 l 5125 910 l 5129 905 l
+ 5135 899 l 5141 894 l 5149 890 l 5158 886 l 5167 883 l
+ 5177 880 l 5187 879 l 5197 878 l 5208 877 l 5219 877 l
+ 5232 878 l 5245 880 l 5259 883 l 5273 887 l 5287 891 l
+ 5300 896 l 5314 902 l 5326 908 l 5335 913 l 5345 918 l
+ 5354 925 l 5365 932 l 5375 940 l 5386 949 l 5398 958 l
+ 5410 969 l 5422 980 l 5434 992 l 5446 1004 l 5458 1016 l
+ 5470 1030 l 5482 1044 l 5492 1055 l 5502 1067 l 5513 1080 l
+ 5524 1093 l 5536 1108 l 5548 1123 l 5560 1139 l 5573 1155 l
+ 5585 1172 l 5598 1189 l 5610 1206 l 5622 1223 l 5633 1240 l
+ 5644 1256 l 5654 1272 l 5663 1287 l 5673 1302 l 5681 1317 l
+ 5690 1333 l 5699 1349 l 5707 1365 l 5715 1382 l 5723 1399 l
+ 5730 1416 l 5737 1434 l 5744 1451 l 5750 1468 l 5756 1485 l
+ 5762 1502 l 5767 1518 l 5771 1534 l 5776 1549 l 5780 1563 l
+ 5783 1578 l 5787 1592 l 5790 1607 l 5794 1622 l 5797 1637 l
+ 5800 1653 l 5804 1670 l 5806 1687 l 5809 1704 l 5811 1721 l
+ 5813 1738 l 5815 1754 l 5816 1771 l 5817 1786 l 5817 1802 l
+ 5817 1817 l 5816 1832 l 5815 1847 l 5814 1862 l 5812 1877 l
+ 5810 1893 l 5807 1910 l 5803 1928 l 5799 1945 l 5794 1964 l
+ 5788 1982 l 5782 2000 l 5775 2019 l 5768 2037 l 5760 2055 l
+ 5752 2072 l 5744 2089 l 5735 2107 l 5726 2122 l 5717 2138 l
+ 5707 2155 l 5697 2172 l 5686 2190 l 5674 2208 l 5661 2227 l
+ 5647 2245 l 5634 2264 l 5619 2283 l 5605 2302 l 5590 2320 l
+ 5576 2338 l 5561 2355 l 5547 2371 l 5532 2387 l 5518 2402 l
+ 5504 2417 l 5490 2431 l 5475 2445 l 5460 2458 l 5445 2472 l
+ 5429 2486 l 5412 2500 l 5396 2514 l 5379 2527 l 5362 2540 l
+ 5346 2553 l 5330 2566 l 5314 2577 l 5299 2589 l 5284 2599 l
+ 5270 2609 l 5257 2618 l 5245 2627 l 5233 2636 l 5216 2648 l
+ 5199 2659 l 5183 2671 l 5168 2681 l 5153 2692 l 5139 2701 l
+ 5126 2710 l 5115 2718 l 5105 2724 l 5097 2730 l 5090 2734 l
+ 5085 2737 l 5081 2739 l 5078 2741 l 5075 2743 l 5073 2744 l
+ 5072 2746 l 5071 2747 l 5070 2750 l 5070 2753 l 5070 2756 l
+ 5071 2761 l 5071 2766 l 5072 2772 l 5073 2780 l 5073 2789 l
+ 5074 2798 l 5074 2809 l 5074 2821 l 5074 2834 l 5074 2849 l
+ 5074 2865 l 5073 2883 l 5073 2901 l 5072 2921 l 5070 2940 l
+ 5069 2960 l 5067 2979 l 5066 2999 l 5064 3018 l 5061 3036 l
+ 5059 3055 l 5056 3073 l 5053 3092 l 5050 3111 l 5046 3130 l
+ 5042 3150 l 5037 3170 l 5032 3190 l 5026 3211 l 5021 3231 l
+ 5015 3251 l 5008 3270 l 5002 3289 l 4996 3307 l 4989 3324 l
+ 4982 3340 l 4976 3356 l 4968 3372 l 4961 3387 l 4953 3403 l
+ 4944 3419 l 4935 3436 l 4925 3452 l 4915 3469 l 4904 3486 l
+ 4893 3503 l 4882 3519 l 4870 3535 l 4859 3550 l 4847 3565 l
+ 4835 3580 l 4823 3594 l 4812 3608 l 4799 3622 l 4786 3636 l
+ 4773 3650 l 4759 3665 l 4744 3680 l 4730 3695 l 4714 3710 l
+ 4699 3726 l 4684 3741 l 4670 3756 l 4656 3770 l 4643 3783 l
+ 4630 3796 l 4619 3808 l 4608 3819 l 4599 3830 l 4587 3843 l
+ 4576 3856 l 4565 3869 l 4556 3882 l 4547 3895 l 4539 3907 l
+ 4532 3919 l 4526 3930 l 4521 3941 l 4517 3951 l 4513 3961 l
+ 4510 3970 l 4506 3981 l 4503 3992 l 4501 4004 l 4498 4016 l
+ 4496 4029 l 4494 4042 l 4493 4054 l 4493 4066 l 4493 4078 l
+ 4493 4089 l 4493 4100 l 4494 4112 l 4496 4124 l 4498 4137 l
+ 4501 4150 l 4504 4164 l 4507 4177 l 4511 4189 l 4515 4200 l
+ 4520 4212 l 4525 4223 l 4530 4234 l 4537 4246 l 4543 4259 l
+ 4551 4272 l 4558 4284 l 4565 4297 l 4572 4309 l 4579 4320 l
+ 4585 4331 l 4591 4343 l 4597 4354 l 4603 4367 l 4609 4380 l
+ 4615 4394 l 4621 4408 l 4626 4422 l 4631 4436 l 4636 4450 l
+ 4640 4464 l 4643 4474 l 4646 4485 l 4649 4496 l 4652 4508 l
+ 4654 4521 l 4657 4534 l 4660 4549 l 4663 4563 l 4665 4579 l
+ 4667 4594 l 4669 4610 l 4671 4625 l 4673 4641 l 4675 4658 l
+ 4676 4672 l 4677 4688 l 4678 4704 l 4679 4721 l 4680 4739 l
+ 4681 4757 l 4682 4776 l 4682 4795 l 4683 4814 l 4683 4832 l
+ 4683 4851 l 4684 4868 l 4684 4884 l 4683 4900 l 4683 4915 l
+ 4683 4929 l 4682 4946 l 4682 4963 l 4681 4980 l 4679 4996 l
+ 4678 5012 l 4676 5028 l 4674 5043 l 4671 5056 l 4669 5069 l
+ 4666 5081 l 4663 5092 l 4661 5103 l 4657 5115 l 4652 5128 l
+ 4648 5141 l 4643 5154 l 4638 5168 l 4633 5181 l 4628 5194 l
+ 4624 5206 l 4621 5218 l 4618 5229 l 4616 5238 l 4615 5247 l
+ 4614 5257 l 4613 5268 l 4613 5280 l 4614 5292 l 4616 5305 l
+ 4618 5319 l 4620 5334 l 4624 5349 l 4628 5365 l 4632 5382 l
+ 4636 5395 l 4640 5410 l 4645 5425 l 4650 5442 l 4656 5460 l
+ 4663 5479 l 4670 5498 l 4677 5519 l 4685 5540 l 4693 5560 l
+ 4702 5581 l 4710 5602 l 4719 5621 l 4728 5641 l 4737 5660 l
+ 4746 5678 l 4754 5694 l 4762 5711 l 4771 5727 l 4780 5744 l
+ 4790 5762 l 4801 5779 l 4812 5797 l 4823 5814 l 4834 5832 l
+ 4846 5849 l 4859 5866 l 4871 5883 l 4883 5899 l 4895 5914 l
+ 4908 5929 l 4920 5943 l 4932 5957 l 4944 5970 l 4957 5983 l
+ 4970 5996 l 4984 6009 l 4998 6021 l 5013 6034 l 5028 6048 l
+ 5044 6061 l 5061 6074 l 5078 6087 l 5095 6099 l 5113 6112 l
+ 5130 6124 l 5147 6135 l 5164 6146 l 5181 6156 l 5198 6167 l
+ 5214 6176 l 5230 6186 l 5247 6195 l 5264 6204 l 5281 6213 l
+ 5299 6222 l 5318 6232 l 5337 6241 l 5357 6250 l 5378 6260 l
+ 5399 6269 l 5420 6278 l 5441 6287 l 5462 6295 l 5483 6303 l
+ 5503 6311 l 5523 6318 l 5543 6325 l 5563 6332 l 5582 6338 l
+ 5600 6344 l 5618 6350 l 5637 6355 l 5656 6361 l 5676 6366 l
+ 5697 6372 l 5718 6377 l 5740 6383 l 5762 6389 l 5785 6394 l
+ 5807 6400 l 5830 6405 l 5853 6410 l 5875 6416 l 5898 6421 l
+ 5919 6425 l 5941 6430 l 5962 6435 l 5983 6439 l 6004 6444 l
+ 6025 6448 l 6046 6453 l 6068 6457 l 6090 6462 l 6113 6467 l
+ 6136 6472 l 6160 6477 l 6185 6482 l 6209 6487 l 6233 6492 l
+ 6258 6497 l 6282 6502 l 6305 6507 l 6328 6512 l 6350 6517 l
+ 6371 6522 l 6391 6526 l 6411 6531 l 6430 6535 l 6448 6539 l
+ 6470 6544 l 6491 6549 l 6513 6555 l 6535 6560 l 6556 6565 l
+ 6578 6571 l 6599 6576 l 6620 6582 l 6640 6587 l 6659 6593 l
+ 6678 6598 l 6695 6603 l 6712 6608 l 6727 6613 l 6742 6618 l
+ 6756 6622 l 6772 6627 l 6788 6632 l 6803 6638 l 6819 6643 l
+ 6835 6649 l 6851 6655 l 6867 6662 l 6882 6668 l 6897 6674 l
+ 6912 6681 l 6925 6687 l 6938 6694 l 6951 6700 l 6963 6707 l
+ 6975 6713 l 6987 6721 l 7000 6728 l 7012 6736 l 7025 6745 l
+ 7038 6754 l 7051 6763 l 7063 6773 l 7075 6783 l 7086 6792 l
+ 7096 6802 l 7106 6811 l 7115 6820 l 7123 6829 l 7132 6840 l
+ 7140 6851 l 7148 6863 l 7156 6875 l 7163 6888 l 7170 6901 l
+ 7176 6914 l 7181 6927 l 7186 6940 l 7189 6951 l 7193 6963 l
+ 7196 6974 l 7198 6987 l 7200 7000 l 7202 7014 l 7203 7029 l
+ 7202 7043 l 7201 7058 l 7198 7072 l 7194 7086 l 7189 7099 l
+ 7183 7111 l 7177 7122 l 7170 7132 l 7162 7144 l 7153 7155 l
+ 7143 7167 l 7132 7179 l 7120 7190 l 7108 7201 l 7097 7211 l
+ 7085 7221 l 7074 7230 l 7063 7238 l 7054 7245 l 7044 7252 l
+ 7034 7258 l 7023 7265 l 7012 7271 l 6999 7277 l 6986 7284 l
+ 6973 7290 l 6958 7295 l 6943 7301 l 6928 7306 l 6912 7311 l
+ 6895 7316 l 6878 7321 l 6862 7325 l 6844 7330 l 6826 7334 l
+ 6806 7339 l 6786 7343 l 6764 7348 l 6742 7352 l 6720 7357 l
+ 6699 7361 l 6677 7366 l 6657 7370 l 6638 7373 l 6620 7377 l
+ 6604 7380 l 6589 7383 l 6576 7385 l 6560 7388 l 6546 7391 l
+ 6534 7393 l 6524 7396 l 6515 7398 l 6507 7400 l 6502 7403 l
+ 6498 7405 l 6495 7408 l 6493 7411 l 6493 7414 l 6493 7417 l
+ 6494 7425 l 6496 7436 l 6499 7448 l 6502 7460 l 6504 7471 l
+ 6504 7480 l 6502 7484 l 6500 7487 l 6497 7491 l 6491 7493 l
+ 6484 7495 l 6475 7497 l 6464 7499 l 6450 7500 l 6435 7500 l
+ 6418 7501 l 6408 7501 l 6396 7502 l 6384 7502 l 6370 7502 l
+ 6355 7502 l 6338 7503 l 6321 7503 l 6302 7503 l 6282 7504 l
+ 6262 7504 l 6241 7505 l 6219 7505 l 6198 7505 l 6176 7506 l
+ 6154 7506 l 6131 7507 l 6109 7507 l 6087 7508 l 6066 7509 l
+ 6044 7509 l 6022 7510 l 5999 7511 l 5975 7511 l 5951 7512 l
+ 5925 7513 l 5900 7514 l 5873 7515 l 5847 7516 l 5821 7517 l
+ 5795 7518 l 5770 7519 l 5745 7520 l 5722 7521 l 5699 7522 l
+ 5677 7523 l 5656 7524 l 5636 7525 l 5617 7526 l 5594 7527 l
+ 5571 7528 l 5549 7530 l 5528 7531 l 5506 7532 l 5485 7533 l
+ 5465 7535 l 5446 7536 l 5428 7537 l 5410 7538 l 5394 7539 l
+ 5380 7539 l 5367 7540 l 5355 7540 l 5344 7541 l 5334 7541 l
+ 5320 7541 l 5307 7541 l 5296 7540 l 5286 7539 l 5277 7538 l
+ 5270 7536 l 5266 7534 l 5262 7532 l 5261 7530 l 5260 7527 l
+ 5260 7525 l 5262 7522 l 5265 7518 l 5270 7514 l 5277 7508 l
+ 5286 7502 l 5298 7494 l 5313 7485 l 5330 7474 l 5350 7462 l
+ 5373 7449 l 5399 7435 l 5414 7426 l 5431 7417 l 5449 7407 l
+ 5468 7396 l 5488 7385 l 5510 7373 l 5533 7361 l 5556 7348 l
+ 5581 7334 l 5606 7321 l 5632 7306 l 5657 7292 l 5683 7278 l
+ 5708 7264 l 5733 7251 l 5758 7237 l 5781 7224 l 5804 7212 l
+ 5825 7200 l 5846 7189 l 5865 7178 l 5884 7168 l 5908 7154 l
+ 5932 7141 l 5954 7128 l 5975 7116 l 5996 7104 l 6016 7092 l
+ 6035 7081 l 6052 7071 l 6069 7061 l 6084 7052 l 6098 7043 l
+ 6111 7035 l 6122 7028 l 6133 7021 l 6142 7015 l 6151 7010 l
+ 6163 7001 l 6175 6993 l 6187 6985 l 6197 6977 l 6207 6971 l
+ 6217 6965 l 6225 6961 l 6232 6958 l 6238 6956 l 6244 6956 l
+ 6249 6956 l 6254 6957 l 6259 6960 l 6264 6964 l 6269 6968 l
+ 6274 6974 l 6279 6980 l 6284 6986 l 6288 6992 l 6293 6999 l
+ 6298 7007 l 6304 7016 l 6310 7026 l 6316 7036 l 6322 7046 l
+ 6328 7057 l 6333 7066 l 6338 7076 l 6342 7085 l 6346 7095 l
+ 6351 7105 l 6355 7115 l 6359 7125 l 6363 7134 l 6367 7142 l
+ 6370 7150 l 6373 7156 l 6377 7162 l 6381 7167 l 6386 7172 l
+ 6392 7177 l 6399 7182 l 6406 7185 l 6415 7188 l 6424 7190 l
+ 6435 7191 l 6444 7191 l 6455 7191 l 6467 7190 l 6481 7189 l
+ 6495 7187 l 6510 7185 l 6526 7183 l 6542 7180 l 6557 7177 l
+ 6572 7173 l 6586 7170 l 6599 7167 l 6613 7163 l 6626 7159 l
+ 6639 7155 l 6653 7151 l 6667 7146 l 6680 7141 l 6694 7136 l
+ 6706 7131 l 6719 7126 l 6730 7121 l 6741 7116 l 6752 7111 l
+ 6764 7104 l 6776 7098 l 6789 7090 l 6801 7083 l 6813 7075 l
+ 6825 7066 l 6835 7058 l 6844 7050 l 6851 7043 l 6857 7036 l
+ 6861 7030 l 6864 7024 l 6867 7017 l 6869 7010 l 6870 7004 l
+ 6870 6996 l 6869 6989 l 6867 6982 l 6865 6975 l 6862 6968 l
+ 6858 6961 l 6853 6954 l 6848 6947 l 6842 6939 l 6835 6931 l
+ 6826 6923 l 6817 6914 l 6807 6905 l 6796 6896 l 6784 6888 l
+ 6773 6879 l 6761 6871 l 6748 6864 l 6736 6857 l 6726 6852 l
+ 6716 6847 l 6705 6842 l 6694 6837 l 6681 6831 l 6667 6826 l
+ 6652 6821 l 6636 6816 l 6620 6811 l 6602 6806 l 6584 6801 l
+ 6565 6797 l 6546 6792 l 6526 6788 l 6506 6784 l 6485 6780 l
+ 6467 6777 l 6448 6774 l 6428 6770 l 6407 6767 l 6384 6764 l
+ 6361 6760 l 6337 6757 l 6312 6753 l 6286 6749 l 6259 6746 l
+ 6232 6742 l 6206 6738 l 6179 6735 l 6153 6731 l 6127 6728 l
+ 6102 6724 l 6078 6721 l 6054 6717 l 6031 6714 l 6009 6711 l
+ 5986 6707 l 5964 6704 l 5942 6700 l 5920 6696 l 5897 6693 l
+ 5874 6689 l 5851 6685 l 5828 6681 l 5805 6676 l 5783 6672 l
+ 5760 6668 l 5738 6664 l 5717 6660 l 5696 6655 l 5676 6651 l
+ 5657 6647 l 5639 6644 l 5622 6640 l 5605 6636 l 5588 6633 l
+ 5568 6628 l 5547 6623 l 5527 6619 l 5507 6614 l 5486 6609 l
+ 5465 6603 l 5444 6598 l 5423 6593 l 5402 6587 l 5382 6582 l
+ 5363 6577 l 5344 6571 l 5326 6566 l 5309 6561 l 5292 6557 l
+ 5276 6552 l 5260 6547 l 5243 6542 l 5227 6537 l 5210 6531 l
+ 5192 6526 l 5175 6520 l 5157 6514 l 5140 6508 l 5122 6502 l
+ 5105 6496 l 5089 6491 l 5073 6485 l 5058 6480 l 5044 6475 l
+ 5030 6470 l 5017 6465 l 5003 6460 l 4988 6454 l 4974 6449 l
+ 4959 6443 l 4944 6437 l 4929 6431 l 4915 6425 l 4900 6419 l
+ 4887 6413 l 4873 6407 l 4861 6401 l 4849 6395 l 4838 6389 l
+ 4827 6383 l 4814 6375 l 4801 6368 l 4788 6360 l 4775 6351 l
+ 4762 6342 l 4748 6333 l 4735 6324 l 4722 6315 l 4710 6306 l
+ 4698 6298 l 4687 6290 l 4676 6283 l 4666 6275 l 4655 6268 l
+ 4644 6260 l 4633 6252 l 4621 6244 l 4610 6236 l 4598 6227 l
+ 4587 6219 l 4577 6211 l 4566 6203 l 4557 6195 l 4547 6187 l
+ 4536 6177 l 4525 6167 l 4513 6156 l 4501 6145 l 4490 6133 l
+ 4478 6123 l 4467 6113 l 4457 6105 l 4448 6098 l 4440 6093 l
+ 4433 6089 l 4427 6086 l 4419 6085 l 4410 6084 l 4400 6086 l
+ 4388 6088 l 4373 6092 l 4356 6097 l 4337 6104 l 4316 6113 l
+ 4292 6122 l 4265 6133 l 4250 6139 l 4234 6146 l 4217 6153 l
+ 4198 6160 l 4179 6167 l 4158 6175 l 4136 6183 l 4112 6191 l
+ 4088 6199 l 4062 6207 l 4036 6215 l 4009 6223 l 3982 6230 l
+ 3954 6237 l 3926 6243 l 3897 6248 l 3869 6253 l 3841 6257 l
+ 3814 6261 l 3787 6263 l 3760 6265 l 3733 6265 l 3707 6265 l
+ 3681 6264 l 3655 6261 l 3629 6258 l 3603 6254 l 3577 6248 l
+ 3550 6242 l 3523 6235 l 3496 6227 l 3469 6218 l 3441 6208 l
+ 3414 6198 l 3387 6187 l 3361 6176 l 3335 6165 l 3310 6153 l
+ 3286 6141 l 3263 6130 l 3242 6118 l 3221 6107 l 3201 6096 l
+ 3183 6085 l 3166 6075 l 3151 6066 l 3136 6057 l 3123 6048 l
+ 3102 6035 l 3083 6022 l 3067 6011 l 3052 6000 l 3039 5990 l
+ 3028 5980 l 3019 5971 l 3010 5963 l 3003 5955 l 2997 5947 l
+ 2992 5939 l 2987 5932 l 2982 5924 l 2977 5916 l 2972 5907 l
+ 2966 5897 l 2959 5886 l 2952 5874 l 2944 5862 l 2936 5849 l
+ 2927 5835 l 2918 5821 l 2910 5807 l 2902 5793 l 2894 5780 l
+ 2886 5767 l 2879 5755 l 2873 5744 l 2865 5730 l 2858 5717 l
+ 2852 5704 l 2845 5690 l 2839 5676 l 2834 5663 l 2828 5649 l
+ 2824 5636 l 2820 5624 l 2816 5612 l 2813 5600 l 2811 5589 l
+ 2809 5578 l 2807 5566 l 2805 5554 l 2804 5541 l 2803 5528 l
+ 2802 5515 l 2801 5502 l 2801 5489 l 2801 5477 l 2801 5465 l
+ 2802 5454 l 2802 5444 l 2803 5431 l 2805 5418 l 2806 5406 l
+ 2808 5392 l 2810 5379 l 2813 5366 l 2816 5354 l 2819 5343 l
+ 2822 5332 l 2825 5322 l 2830 5309 l 2835 5297 l 2840 5284 l
+ 2846 5271 l 2852 5259 l 2857 5248 l 2862 5239 l 2866 5231 l
+ 2870 5221 l 2874 5212 l 2876 5205 l 2877 5197 l 2878 5191 l
+ 2877 5186 l 2875 5181 l 2872 5175 l 2867 5168 l 2862 5161 l
+ 2855 5154 l 2848 5146 l 2841 5139 l 2834 5131 l 2826 5122 l
+ 2817 5113 l 2809 5103 l 2802 5093 l 2795 5083 l 2789 5074 l
+ 2785 5064 l 2781 5054 l 2778 5043 l 2775 5032 l 2774 5022 l
+ 2773 5012 l 2773 5003 l 2774 4995 l 2774 4988 l 2776 4981 l
+ 2777 4974 l 2778 4968 l 2778 4962 l 2777 4957 l 2775 4953 l
+ 2772 4951 l 2766 4948 l 2756 4945 l 2745 4944 l 2732 4942 l
+ 2720 4941 l 2709 4940 l 2700 4938 l 2691 4936 l 2682 4933 l
+ 2675 4929 l 2668 4925 l 2663 4921 l 2658 4916 l 2652 4910 l
+ 2647 4904 l 2641 4898 l 2635 4892 l 2628 4888 l 2624 4885 l
+ 2620 4882 l 2614 4878 l 2607 4873 l 2599 4866 l 2589 4857 l
+ 2578 4846 l 2565 4832 l 2551 4816 l 2536 4796 l 2526 4784 l
+ 2516 4770 l 2505 4755 l 2493 4739 l 2481 4722 l 2469 4703 l
+ 2456 4683 l 2443 4663 l 2431 4643 l 2418 4622 l 2407 4601 l
+ 2396 4580 l 2386 4561 l 2377 4542 l 2369 4524 l 2363 4507 l
+ 2358 4491 l 2354 4476 l 2352 4463 l 2351 4451 l 2351 4439 l
+ 2352 4428 l 2354 4417 l 2357 4407 l 2361 4397 l 2366 4388 l
+ 2372 4379 l 2379 4370 l 2387 4362 l 2395 4355 l 2404 4348 l
+ 2414 4342 l 2424 4337 l 2434 4331 l 2445 4327 l 2455 4323 l
+ 2466 4319 l 2477 4315 l 2492 4311 l 2507 4307 l 2522 4304 l
+ 2539 4301 l 2556 4298 l 2574 4295 l 2592 4292 l 2611 4290 l
+ 2630 4288 l 2649 4287 l 2668 4285 l 2686 4284 l 2703 4284 l
+ 2720 4283 l 2736 4283 l 2752 4283 l 2769 4284 l 2787 4284 l
+ 2805 4285 l 2823 4286 l 2841 4287 l 2860 4289 l 2878 4291 l
+ 2895 4292 l 2912 4294 l 2928 4296 l 2943 4298 l 2957 4300 l
+ 2970 4302 l 2983 4304 l 2999 4306 l 3015 4308 l 3030 4311 l
+ 3046 4312 l 3061 4314 l 3075 4314 l 3088 4314 l 3099 4313 l
+ 3110 4311 l 3119 4308 l 3128 4304 l 3137 4299 l 3146 4292 l
+ 3155 4285 l 3163 4276 l 3170 4267 l 3177 4257 l 3183 4248 l
+ 3188 4238 l 3193 4229 l 3196 4219 l 3200 4209 l 3203 4199 l
+ 3205 4188 l 3207 4177 l 3208 4166 l 3208 4155 l 3208 4145 l
+ 3208 4135 l 3207 4126 l 3205 4114 l 3201 4102 l 3197 4090 l
+ 3192 4078 l 3186 4066 l 3179 4056 l 3172 4046 l 3165 4039 l
+ 3157 4031 l 3147 4025 l 3137 4019 l 3126 4013 l 3114 4007 l
+ 3102 4002 l 3091 3997 l 3081 3992 l 3072 3988 l 3063 3984 l
+ 3053 3979 l 3043 3974 l 3033 3969 l 3023 3963 l 3013 3957 l
+ 3003 3950 l 2993 3944 l 2984 3938 l 2975 3931 l 2965 3923 l
+ 2955 3915 l 2943 3906 l 2932 3897 l 2920 3888 l 2908 3879 l
+ 2896 3870 l 2885 3861 l 2873 3853 l 2863 3846 l 2853 3840 l
+ 2842 3833 l 2831 3826 l 2819 3818 l 2807 3811 l 2795 3804 l
+ 2783 3797 l 2771 3790 l 2761 3784 l 2751 3777 l 2741 3772 l
+ 2730 3764 l 2719 3757 l 2707 3750 l 2696 3743 l 2684 3735 l
+ 2672 3728 l 2660 3721 l 2649 3715 l 2638 3710 l 2627 3705 l
+ 2618 3701 l 2608 3697 l 2597 3693 l 2586 3689 l 2574 3685 l
+ 2562 3681 l 2550 3677 l 2537 3672 l 2525 3668 l 2513 3663 l
+ 2501 3659 l 2490 3654 l 2478 3649 l 2466 3643 l 2454 3636 l
+ 2441 3629 l 2428 3621 l 2414 3613 l 2401 3604 l 2388 3595 l
+ 2375 3585 l 2363 3576 l 2352 3567 l 2342 3557 l 2331 3547 l
+ 2321 3537 l 2311 3526 l 2300 3514 l 2290 3502 l 2280 3490 l
+ 2270 3477 l 2261 3465 l 2252 3454 l 2244 3443 l 2237 3433 l
+ 2231 3424 l 2223 3413 l 2216 3402 l 2209 3391 l 2202 3380 l
+ 2195 3368 l 2189 3357 l 2184 3346 l 2178 3335 l 2174 3325 l
+ 2170 3314 l 2166 3303 l 2162 3291 l 2158 3278 l 2154 3265 l
+ 2151 3251 l 2148 3237 l 2145 3223 l 2142 3211 l 2141 3199 l
+ 2139 3188 l 2138 3177 l 2137 3166 l 2136 3156 l 2136 3145 l
+ 2136 3133 l 2136 3122 l 2137 3112 l 2138 3101 l 2140 3092 l
+ 2141 3082 l 2143 3072 l 2145 3061 l 2148 3049 l 2151 3037 l
+ 2154 3025 l 2158 3012 l 2162 3000 l 2166 2988 l 2170 2977 l
+
+ cp gs col20 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 2420 6449 m 2432 6448 l 2444 6448 l 2457 6447 l 2471 6446 l 2484 6446 l
+ 2498 6445 l 2511 6445 l 2524 6445 l 2536 6445 l 2548 6445 l
+ 2560 6444 l 2572 6444 l 2584 6444 l 2597 6444 l 2610 6444 l
+ 2623 6444 l 2635 6444 l 2647 6444 l 2658 6444 l 2669 6444 l
+ 2679 6443 l 2689 6443 l 2700 6443 l 2711 6442 l 2722 6441 l
+ 2733 6440 l 2743 6439 l 2752 6437 l 2761 6435 l 2770 6433 l
+ 2780 6429 l 2790 6424 l 2801 6419 l 2812 6413 l 2822 6407 l
+ 2833 6401 l 2843 6396 l 2854 6391 l 2864 6386 l 2875 6382 l
+ 2887 6377 l 2900 6372 l 2913 6368 l 2925 6364 l 2936 6360 l
+ 2947 6356 l 2957 6352 l 2967 6348 l 2977 6344 l 2987 6339 l
+ 2997 6335 l 3006 6330 l 3013 6326 l 3021 6323 l 3029 6318 l
+ 3037 6312 l 3045 6306 l 3051 6300 l 3056 6292 l 3060 6285 l
+ 3061 6278 l 3062 6270 l 3062 6261 l 3062 6251 l 3061 6241 l
+ 3059 6232 l 3057 6223 l 3055 6215 l 3052 6207 l 3049 6198 l
+ 3046 6190 l 3042 6181 l 3038 6173 l 3034 6164 l 3030 6156 l
+ 3027 6148 l 3023 6139 l 3019 6129 l 3015 6119 l 3011 6108 l
+ 3008 6096 l 3004 6086 l 3001 6075 l 2999 6066 l 2995 6054 l
+ 2992 6041 l 2990 6029 l 2989 6018 l 2989 6009 l 2990 6003 l
+ 2991 6000 l 2992 5998 l 2995 5996 l 2997 5994 l 3001 5994 l
+ 3004 5993 l 3008 5994 l 3012 5995 l 3017 5996 l 3021 5998 l
+ 3029 6001 l 3037 6006 l 3047 6012 l 3057 6018 l 3065 6025 l
+ 3073 6031 l 3080 6038 l 3088 6044 l 3095 6051 l 3103 6057 l
+ 3110 6062 l 3118 6065 l 3126 6066 l 3136 6066 l 3147 6065 l
+ 3158 6064 l 3169 6062 l 3180 6061 l 3188 6060 l 3197 6059 l
+ 3206 6059 l 3215 6059 l 3224 6059 l 3233 6059 l 3241 6060 l
+ 3249 6060 l 3258 6060 l 3268 6061 l 3279 6062 l 3289 6064 l
+ 3297 6066 l 3305 6068 l 3312 6071 l 3320 6075 l 3327 6081 l
+ 3335 6087 l 3342 6093 l 3348 6100 l 3355 6106 l 3362 6114 l
+ 3370 6122 l 3378 6129 l 3387 6134 l 3395 6138 l 3404 6140 l
+ 3413 6140 l 3424 6140 l 3434 6138 l 3443 6137 l 3452 6136 l
+ 3460 6135 l 3468 6134 l 3477 6135 l 3484 6137 l 3491 6139 l
+ 3496 6143 l 3501 6148 l 3505 6154 l 3510 6162 l 3514 6171 l
+ 3517 6180 l 3520 6189 l 3522 6196 l 3524 6204 l 3526 6212 l
+ 3528 6221 l 3530 6229 l 3532 6238 l 3533 6245 l 3534 6253 l
+ 3535 6262 l 3536 6271 l 3538 6279 l 3539 6285 l 3541 6288 l
+ 3543 6288 l 3545 6285 l 3548 6279 l 3552 6270 l 3556 6259 l
+ 3560 6247 l 3564 6236 l 3567 6227 l 3571 6218 l 3574 6208 l
+ 3578 6198 l 3582 6188 l 3586 6178 l 3590 6169 l 3594 6161 l
+ 3598 6152 l 3602 6143 l 3607 6134 l 3612 6126 l 3617 6117 l
+ 3623 6109 l 3628 6103 l 3634 6097 l 3639 6091 l 3646 6086 l
+ 3653 6081 l 3661 6076 l 3670 6072 l 3678 6069 l 3686 6066 l
+ 3694 6064 l 3701 6062 l 3710 6060 l 3719 6059 l 3728 6058 l
+ 3737 6057 l 3746 6057 l 3755 6057 l 3763 6058 l 3770 6058 l
+ 3778 6059 l 3787 6061 l 3795 6063 l 3804 6065 l 3812 6068 l
+ 3820 6070 l 3828 6074 l 3835 6077 l 3843 6081 l 3851 6086 l
+ 3860 6091 l 3869 6096 l 3877 6102 l 3885 6107 l 3893 6112 l
+ 3900 6117 l 3908 6123 l 3916 6129 l 3924 6135 l 3931 6141 l
+ 3938 6147 l 3944 6153 l 3950 6159 l 3956 6166 l 3962 6173 l
+ 3967 6179 l 3971 6184 l 3974 6188 l 3977 6189 l 3979 6187 l
+ 3981 6182 l 3983 6175 l 3986 6168 l 3989 6161 l 3992 6157 l
+ 3995 6154 l 3999 6151 l 4004 6148 l 4010 6146 l 4016 6144 l
+ 4023 6142 l 4030 6141 l 4038 6140 l 4046 6139 l 4056 6139 l
+ 4067 6138 l 4078 6138 l 4089 6138 l 4099 6137 l 4110 6137 l
+ 4120 6137 l 4131 6136 l 4142 6135 l 4154 6134 l 4166 6133 l
+ 4177 6132 l 4188 6130 l 4198 6128 l 4208 6126 l 4218 6123 l
+ 4229 6120 l 4240 6117 l 4251 6113 l 4261 6110 l 4271 6107 l
+ 4280 6104 l 4288 6101 l 4296 6098 l 4305 6095 l 4314 6091 l
+ 4323 6088 l 4332 6085 l 4340 6081 l 4348 6078 l 4356 6074 l
+ 4365 6071 l 4374 6067 l 4383 6064 l 4392 6062 l 4401 6062 l
+ 4409 6063 l 4416 6066 l 4423 6070 l 4429 6077 l 4436 6086 l
+ 4443 6097 l 4450 6109 l 4456 6122 l 4462 6134 l 4468 6147 l
+ 4473 6157 l 4478 6168 l 4483 6180 l 4489 6192 l 4495 6205 l
+ 4501 6218 l 4507 6231 l 4513 6243 l 4518 6255 l 4524 6267 l
+ 4528 6277 l 4533 6287 l 4537 6298 l 4542 6310 l 4548 6321 l
+ 4553 6334 l 4558 6346 l 4563 6358 l 4567 6370 l 4572 6381 l
+ 4576 6392 l 4580 6403 l 4584 6414 l 4588 6425 l 4592 6437 l
+ 4596 6449 l 4600 6461 l 4604 6474 l 4608 6486 l 4611 6498 l
+ 4615 6510 l 4618 6521 l 4622 6531 l 4625 6542 l 4629 6553 l
+ 4633 6565 l 4637 6578 l 4641 6590 l 4645 6602 l 4649 6614 l
+ 4653 6625 l 4657 6635 l 4660 6644 l 4663 6653 l 4665 6660 l
+ 4667 6668 l 4669 6675 l 4670 6682 l 4670 6690 l 4669 6698 l
+ 4667 6705 l 4663 6713 l 4659 6720 l 4653 6728 l 4647 6734 l
+ 4641 6740 l 4633 6747 l 4625 6755 l 4614 6763 l 4602 6771 l
+ 4589 6781 l 4574 6790 l 4558 6800 l 4540 6810 l 4522 6820 l
+ 4503 6831 l 4482 6841 l 4461 6852 l 4447 6858 l 4431 6866 l
+ 4415 6873 l 4398 6880 l 4380 6888 l 4361 6896 l 4341 6905 l
+ 4320 6913 l 4299 6922 l 4276 6931 l 4253 6940 l 4230 6949 l
+ 4206 6957 l 4183 6966 l 4159 6974 l 4136 6982 l 4112 6990 l
+ 4089 6997 l 4067 7004 l 4045 7011 l 4022 7018 l 4001 7024 l
+ 3979 7030 l 3956 7036 l 3934 7042 l 3910 7047 l 3887 7053 l
+ 3862 7058 l 3837 7063 l 3812 7068 l 3786 7073 l 3759 7078 l
+ 3732 7083 l 3705 7087 l 3679 7091 l 3652 7095 l 3625 7098 l
+ 3599 7102 l 3573 7105 l 3547 7107 l 3522 7110 l 3497 7112 l
+ 3473 7114 l 3448 7116 l 3425 7118 l 3402 7119 l 3378 7120 l
+ 3354 7121 l 3330 7122 l 3305 7123 l 3279 7124 l 3253 7125 l
+ 3226 7125 l 3199 7125 l 3172 7126 l 3146 7126 l 3119 7125 l
+ 3092 7125 l 3066 7125 l 3041 7124 l 3016 7123 l 2992 7123 l
+ 2969 7122 l 2947 7121 l 2925 7119 l 2904 7118 l 2884 7117 l
+ 2865 7115 l 2839 7113 l 2814 7110 l 2790 7107 l 2765 7104 l
+ 2741 7101 l 2717 7097 l 2693 7092 l 2669 7087 l 2646 7082 l
+ 2624 7077 l 2603 7071 l 2582 7065 l 2563 7058 l 2545 7051 l
+ 2527 7044 l 2511 7037 l 2496 7030 l 2481 7022 l 2467 7014 l
+ 2453 7005 l 2438 6996 l 2424 6986 l 2410 6975 l 2396 6964 l
+ 2382 6952 l 2368 6939 l 2354 6926 l 2340 6913 l 2326 6899 l
+ 2313 6885 l 2300 6872 l 2288 6858 l 2276 6844 l 2264 6831 l
+ 2252 6817 l 2241 6804 l 2228 6788 l 2215 6772 l 2202 6755 l
+ 2188 6738 l 2175 6721 l 2162 6703 l 2149 6685 l 2137 6667 l
+ 2127 6650 l 2117 6633 l 2109 6617 l 2102 6602 l 2098 6588 l
+ 2094 6575 l 2093 6564 l 2094 6553 l 2096 6542 l 2101 6532 l
+ 2108 6523 l 2118 6514 l 2129 6506 l 2142 6499 l 2157 6493 l
+ 2173 6487 l 2189 6482 l 2205 6478 l 2221 6475 l 2236 6472 l
+ 2251 6470 l 2265 6468 l 2280 6465 l 2295 6463 l 2310 6461 l
+ 2324 6459 l 2338 6457 l 2352 6456 l 2365 6454 l 2377 6453 l
+ 2389 6452 l 2400 6451 l 2410 6450 l
+ cp gs col13 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 2452 4170 m 2451 4170 l 2448 4167 l 2439 4160 l 2424 4149 l 2405 4135 l
+ 2384 4118 l 2362 4102 l 2341 4086 l 2322 4071 l 2305 4059 l
+ 2290 4047 l 2277 4037 l 2265 4028 l 2254 4020 l 2242 4010 l
+ 2230 4000 l 2218 3991 l 2206 3981 l 2195 3972 l 2184 3963 l
+ 2174 3954 l 2164 3946 l 2155 3939 l 2147 3932 l 2140 3926 l
+ 2134 3920 l 2125 3912 l 2117 3905 l 2110 3897 l 2103 3891 l
+ 2098 3884 l 2093 3879 l 2090 3874 l 2088 3869 l 2087 3863 l
+ 2087 3858 l 2089 3852 l 2091 3846 l 2095 3840 l 2098 3834 l
+ 2102 3829 l 2107 3822 l 2112 3815 l 2117 3807 l 2122 3798 l
+ 2126 3790 l 2129 3784 l 2132 3776 l 2135 3768 l 2137 3760 l
+ 2140 3751 l 2142 3743 l 2144 3735 l 2146 3728 l 2147 3719 l
+ 2149 3710 l 2150 3700 l 2151 3689 l 2152 3679 l 2152 3669 l
+ 2152 3660 l 2152 3651 l 2152 3641 l 2151 3630 l 2151 3619 l
+ 2150 3609 l 2149 3598 l 2148 3589 l 2147 3579 l 2145 3570 l
+ 2143 3559 l 2140 3549 l 2138 3538 l 2135 3528 l 2132 3518 l
+ 2129 3508 l 2126 3499 l 2123 3489 l 2119 3478 l 2114 3466 l
+ 2109 3455 l 2104 3444 l 2098 3434 l 2091 3424 l 2086 3416 l
+ 2079 3408 l 2072 3400 l 2064 3392 l 2056 3384 l 2048 3376 l
+ 2040 3369 l 2032 3363 l 2025 3358 l 2018 3353 l 2010 3348 l
+ 2002 3344 l 1994 3340 l 1988 3337 l 1982 3333 l 1979 3329 l
+ 1978 3326 l 1978 3321 l 1981 3316 l 1985 3310 l 1990 3302 l
+ 1996 3294 l 2001 3286 l 2005 3277 l 2006 3269 l 2005 3262 l
+ 2002 3255 l 1995 3248 l 1985 3241 l 1974 3234 l 1961 3227 l
+ 1948 3221 l 1935 3216 l 1923 3211 l 1912 3207 l 1901 3202 l
+ 1891 3198 l 1880 3194 l 1870 3190 l 1860 3185 l 1851 3182 l
+ 1843 3178 l 1835 3174 l 1826 3170 l 1817 3165 l 1807 3160 l
+ 1797 3154 l 1787 3149 l 1777 3144 l 1767 3140 l 1759 3136 l
+ 1750 3132 l 1741 3127 l 1730 3123 l 1720 3118 l 1709 3113 l
+ 1698 3109 l 1687 3104 l 1677 3099 l 1667 3095 l 1655 3089 l
+ 1642 3083 l 1629 3077 l 1616 3072 l 1605 3067 l 1597 3065 l
+ 1590 3064 l 1586 3065 l 1585 3068 l 1585 3073 l 1588 3080 l
+ 1593 3089 l 1599 3098 l 1605 3108 l 1612 3118 l 1619 3127 l
+ 1625 3135 l 1632 3144 l 1639 3153 l 1646 3162 l 1652 3171 l
+ 1659 3180 l 1665 3189 l 1671 3198 l 1676 3207 l 1682 3217 l
+ 1688 3228 l 1694 3240 l 1700 3251 l 1706 3262 l 1711 3272 l
+ 1716 3282 l 1721 3291 l 1725 3300 l 1730 3309 l 1735 3319 l
+ 1740 3329 l 1744 3340 l 1748 3350 l 1752 3360 l 1756 3372 l
+ 1760 3384 l 1764 3397 l 1768 3410 l 1773 3422 l 1778 3433 l
+ 1782 3441 l 1787 3447 l 1791 3450 l 1795 3451 l 1800 3451 l
+ 1805 3451 l 1810 3449 l 1816 3446 l 1821 3442 l 1826 3438 l
+ 1831 3434 l 1836 3430 l 1845 3423 l 1854 3416 l 1863 3410 l
+ 1873 3405 l 1882 3402 l 1891 3402 l 1897 3403 l 1903 3406 l
+ 1910 3411 l 1917 3416 l 1924 3423 l 1931 3430 l 1938 3437 l
+ 1944 3445 l 1951 3452 l 1958 3461 l 1965 3470 l 1972 3479 l
+ 1979 3489 l 1986 3498 l 1991 3507 l 1996 3516 l 2000 3525 l
+ 2004 3534 l 2008 3544 l 2011 3554 l 2013 3564 l 2015 3574 l
+ 2017 3582 l 2018 3590 l 2020 3599 l 2021 3608 l 2021 3618 l
+ 2021 3627 l 2021 3636 l 2020 3644 l 2018 3653 l 2016 3662 l
+ 2013 3672 l 2009 3681 l 2005 3690 l 2000 3698 l 1994 3704 l
+ 1987 3711 l 1979 3718 l 1971 3724 l 1963 3730 l 1957 3735 l
+ 1950 3740 l 1944 3745 l 1937 3749 l 1931 3753 l 1924 3755 l
+ 1918 3756 l 1912 3754 l 1905 3751 l 1897 3747 l 1889 3742 l
+ 1881 3736 l 1874 3730 l 1868 3725 l 1861 3719 l 1853 3713 l
+ 1846 3707 l 1839 3701 l 1833 3696 l 1826 3691 l 1819 3686 l
+ 1812 3680 l 1804 3674 l 1796 3668 l 1789 3663 l 1784 3659 l
+ 1778 3654 l 1771 3649 l 1764 3643 l 1757 3637 l 1749 3632 l
+ 1742 3627 l 1735 3622 l 1728 3616 l 1721 3611 l 1713 3605 l
+ 1706 3598 l 1700 3592 l 1695 3585 l 1692 3578 l 1691 3571 l
+ 1691 3564 l 1693 3556 l 1697 3548 l 1702 3539 l 1707 3530 l
+ 1712 3522 l 1717 3515 l 1721 3509 l 1722 3507 l 1723 3505 l
+ 1724 3502 l 1725 3500 l 1726 3498 l 1726 3496 l 1726 3494 l
+ 1726 3493 l 1726 3491 l 1725 3489 l 1724 3487 l 1722 3486 l
+ 1720 3485 l 1718 3483 l 1716 3482 l 1713 3481 l 1709 3480 l
+ 1706 3479 l 1702 3478 l 1697 3477 l 1689 3476 l 1679 3475 l
+ 1668 3473 l 1654 3471 l 1639 3469 l 1623 3466 l 1605 3462 l
+ 1587 3457 l 1568 3452 l 1550 3446 l 1531 3439 l 1512 3431 l
+ 1495 3423 l 1477 3414 l 1459 3405 l 1440 3394 l 1421 3384 l
+ 1402 3373 l 1383 3362 l 1365 3352 l 1349 3343 l 1334 3336 l
+ 1321 3329 l 1310 3325 l 1301 3322 l 1294 3321 l 1288 3322 l
+ 1285 3325 l 1283 3330 l 1283 3337 l 1285 3346 l 1288 3356 l
+ 1292 3368 l 1297 3380 l 1304 3394 l 1310 3407 l 1317 3421 l
+ 1324 3435 l 1332 3448 l 1339 3462 l 1346 3477 l 1354 3492 l
+ 1362 3507 l 1370 3523 l 1378 3538 l 1386 3554 l 1393 3569 l
+ 1400 3583 l 1406 3597 l 1411 3609 l 1416 3620 l 1420 3631 l
+ 1426 3645 l 1430 3660 l 1434 3674 l 1438 3687 l 1441 3699 l
+ 1443 3709 l 1446 3718 l 1448 3725 l 1450 3732 l 1452 3737 l
+ 1455 3743 l 1458 3747 l 1461 3751 l 1464 3754 l 1467 3755 l
+ 1470 3756 l 1475 3756 l 1480 3754 l 1486 3750 l 1493 3746 l
+ 1500 3740 l 1507 3733 l 1513 3728 l 1519 3722 l 1526 3715 l
+ 1533 3709 l 1541 3703 l 1548 3699 l 1555 3695 l 1562 3694 l
+ 1568 3693 l 1575 3695 l 1582 3697 l 1590 3702 l 1598 3707 l
+ 1606 3713 l 1614 3719 l 1622 3726 l 1630 3733 l 1639 3740 l
+ 1649 3748 l 1660 3757 l 1670 3766 l 1680 3774 l 1689 3782 l
+ 1698 3789 l 1706 3795 l 1714 3802 l 1721 3810 l 1729 3817 l
+ 1736 3825 l 1743 3833 l 1748 3840 l 1754 3848 l 1758 3856 l
+ 1762 3865 l 1766 3874 l 1769 3885 l 1771 3895 l 1772 3904 l
+ 1772 3913 l 1770 3921 l 1767 3929 l 1762 3936 l 1756 3944 l
+ 1747 3952 l 1736 3959 l 1724 3966 l 1711 3973 l 1696 3980 l
+ 1687 3984 l 1677 3988 l 1666 3992 l 1654 3996 l 1641 4000 l
+ 1628 4004 l 1613 4008 l 1598 4011 l 1582 4014 l 1566 4016 l
+ 1551 4017 l 1535 4018 l 1519 4018 l 1503 4018 l 1487 4017 l
+ 1470 4015 l 1453 4012 l 1435 4008 l 1416 4004 l 1398 4000 l
+ 1380 3995 l 1362 3989 l 1346 3984 l 1331 3978 l 1318 3972 l
+ 1306 3967 l 1297 3962 l 1289 3957 l 1284 3953 l 1280 3950 l
+ 1277 3946 l 1274 3943 l 1272 3940 l 1271 3936 l 1270 3933 l
+ 1270 3930 l 1270 3927 l 1271 3923 l 1273 3920 l 1274 3917 l
+ 1277 3914 l 1279 3911 l 1282 3909 l 1285 3906 l 1288 3904 l
+ 1291 3901 l 1294 3899 l 1297 3897 l 1305 3892 l 1313 3886 l
+ 1321 3881 l 1329 3875 l 1336 3869 l 1343 3863 l 1348 3857 l
+ 1352 3852 l 1354 3848 l 1355 3843 l 1356 3839 l 1356 3834 l
+ 1356 3829 l 1354 3824 l 1351 3819 l 1348 3814 l 1343 3809 l
+ 1338 3805 l 1331 3801 l 1323 3797 l 1314 3794 l 1304 3790 l
+ 1292 3786 l 1278 3782 l 1263 3777 l 1247 3772 l 1229 3767 l
+ 1212 3761 l 1194 3755 l 1176 3748 l 1159 3740 l 1141 3732 l
+ 1126 3724 l 1111 3716 l 1095 3706 l 1079 3696 l 1062 3686 l
+ 1046 3675 l 1029 3664 l 1014 3654 l 998 3644 l 984 3635 l
+ 972 3627 l 960 3620 l 950 3614 l 941 3610 l 936 3608 l
+ 932 3607 l 928 3606 l 924 3605 l 921 3605 l 917 3605 l
+ 914 3605 l 912 3606 l 909 3607 l 907 3608 l 905 3610 l
+ 903 3612 l 902 3615 l 901 3618 l 900 3621 l 900 3624 l
+ 899 3628 l 899 3632 l 900 3636 l 900 3641 l 901 3645 l
+ 902 3650 l 903 3655 l 905 3660 l 906 3665 l 908 3671 l
+ 912 3681 l 916 3692 l 921 3705 l 928 3718 l 935 3733 l
+ 943 3748 l 951 3764 l 961 3781 l 970 3797 l 980 3814 l
+ 991 3830 l 1001 3846 l 1012 3862 l 1022 3878 l 1032 3891 l
+ 1042 3905 l 1053 3919 l 1064 3934 l 1076 3948 l 1089 3963 l
+ 1101 3978 l 1115 3993 l 1128 4008 l 1141 4022 l 1154 4035 l
+ 1167 4047 l 1180 4059 l 1192 4069 l 1204 4079 l 1216 4088 l
+ 1229 4098 l 1242 4107 l 1256 4115 l 1271 4123 l 1285 4131 l
+ 1301 4138 l 1316 4144 l 1331 4150 l 1347 4155 l 1362 4159 l
+ 1376 4163 l 1391 4167 l 1405 4170 l 1419 4173 l 1432 4175 l
+ 1447 4177 l 1462 4180 l 1477 4182 l 1493 4184 l 1510 4185 l
+ 1526 4186 l 1542 4187 l 1558 4188 l 1574 4188 l 1589 4188 l
+ 1603 4187 l 1616 4186 l 1629 4185 l 1643 4183 l 1658 4180 l
+ 1672 4177 l 1687 4173 l 1702 4168 l 1716 4163 l 1730 4158 l
+ 1744 4152 l 1757 4146 l 1769 4141 l 1781 4135 l 1792 4130 l
+ 1805 4124 l 1818 4117 l 1831 4110 l 1845 4103 l 1858 4096 l
+ 1871 4089 l 1882 4082 l 1893 4076 l 1902 4071 l 1909 4066 l
+ 1916 4062 l 1923 4057 l 1929 4053 l 1935 4050 l 1941 4047 l
+ 1947 4046 l 1952 4045 l 1958 4045 l 1964 4046 l 1971 4049 l
+ 1978 4052 l 1987 4057 l 1996 4064 l 2007 4071 l 2019 4080 l
+ 2031 4089 l 2043 4099 l 2055 4109 l 2067 4120 l 2079 4130 l
+ 2089 4139 l 2100 4148 l 2111 4158 l 2122 4168 l 2134 4178 l
+ 2146 4189 l 2158 4199 l 2170 4210 l 2181 4220 l 2192 4229 l
+ 2202 4238 l 2212 4246 l 2222 4254 l 2232 4262 l 2242 4271 l
+ 2254 4280 l 2267 4290 l 2281 4300 l 2296 4312 l 2309 4322 l
+ 2321 4331 l 2328 4336 l 2331 4339 l
+ 2332 4339 l gs col31 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 2876 5202 m 2877 5203 l 2880 5207 l 2887 5217 l 2897 5231 l 2908 5246 l
+ 2919 5259 l 2928 5271 l 2936 5281 l 2943 5289 l 2949 5296 l
+ 2957 5304 l 2965 5312 l 2974 5320 l 2983 5327 l 2993 5334 l
+ 3002 5341 l 3011 5347 l 3020 5352 l 3029 5358 l 3039 5364 l
+ 3050 5370 l 3062 5377 l 3073 5383 l 3084 5389 l 3094 5393 l
+ 3104 5398 l 3113 5401 l 3122 5405 l 3132 5408 l 3141 5411 l
+ 3151 5413 l 3159 5415 l 3168 5417 l 3175 5419 l 3183 5421 l
+ 3191 5423 l 3199 5424 l 3208 5426 l 3217 5428 l 3226 5430 l
+ 3234 5431 l 3242 5432 l 3250 5433 l 3259 5434 l 3268 5435 l
+ 3277 5436 l 3286 5436 l 3294 5436 l 3302 5437 l 3309 5437 l
+ 3317 5437 l 3325 5436 l 3335 5436 l 3345 5435 l 3351 5434 l
+
+ 3352 5434 l gs col0 s gr
+% Polyline
+n 3161 5427 m 3162 5427 l 3166 5430 l 3176 5436 l 3192 5446 l 3211 5457 l
+ 3231 5469 l 3249 5480 l 3266 5489 l 3280 5497 l 3293 5504 l
+ 3303 5509 l 3314 5514 l 3325 5519 l 3336 5524 l 3347 5528 l
+ 3359 5532 l 3370 5535 l 3381 5538 l 3392 5540 l 3402 5543 l
+ 3412 5544 l 3422 5546 l 3432 5548 l 3442 5550 l 3454 5551 l
+ 3466 5553 l 3478 5554 l 3491 5556 l 3503 5556 l 3514 5557 l
+ 3525 5557 l 3536 5557 l 3546 5556 l 3556 5555 l 3566 5553 l
+ 3577 5551 l 3588 5549 l 3599 5546 l 3610 5543 l 3620 5540 l
+ 3630 5537 l 3640 5534 l 3650 5531 l 3661 5528 l 3672 5525 l
+ 3683 5521 l 3695 5518 l 3707 5514 l 3719 5511 l 3731 5507 l
+ 3741 5504 l 3752 5501 l 3762 5497 l 3773 5494 l 3784 5490 l
+ 3796 5487 l 3808 5483 l 3820 5479 l 3833 5476 l 3845 5473 l
+ 3856 5470 l 3868 5468 l 3879 5465 l 3892 5463 l 3905 5461 l
+ 3919 5459 l 3934 5457 l 3949 5455 l 3963 5453 l 3977 5452 l
+ 3990 5450 l 4002 5449 l 4015 5448 l 4027 5446 l 4041 5444 l
+ 4055 5442 l 4069 5440 l 4083 5438 l 4097 5435 l 4111 5431 l
+ 4125 5428 l 4138 5424 l 4149 5420 l 4160 5416 l 4173 5412 l
+ 4186 5407 l 4199 5401 l 4213 5396 l 4226 5390 l 4239 5384 l
+ 4252 5378 l 4265 5373 l 4276 5367 l 4288 5362 l 4301 5356 l
+ 4314 5350 l 4328 5344 l 4342 5338 l 4356 5332 l 4370 5326 l
+ 4383 5320 l 4395 5315 l 4407 5310 l 4418 5305 l 4429 5300 l
+ 4441 5296 l 4452 5291 l 4464 5286 l 4476 5280 l 4487 5275 l
+ 4498 5270 l 4508 5265 l 4517 5260 l 4525 5256 l 4535 5249 l
+ 4545 5242 l 4554 5235 l 4564 5227 l 4573 5218 l 4582 5209 l
+ 4590 5200 l 4597 5191 l 4603 5183 l 4609 5174 l 4616 5164 l
+ 4624 5152 l 4633 5137 l 4643 5122 l 4651 5108 l 4658 5098 l
+ 4661 5094 l
+ 4661 5093 l gs col0 s gr
+% Polyline
+n 2640 4897 m 2643 4902 l 2647 4907 l 2652 4912 l 2656 4917 l 2661 4921 l
+ 2666 4925 l 2672 4928 l 2678 4931 l 2685 4934 l 2692 4936 l
+ 2699 4938 l 2706 4939 l 2713 4940 l 2721 4941 l 2729 4942 l
+ 2736 4943 l 2743 4944 l 2750 4944 l 2756 4945 l 2763 4946 l
+ 2770 4947 l 2776 4947 l 2781 4948 l 2786 4947 l 2792 4947 l
+ 2798 4946 l 2805 4945 l 2813 4943 l 2821 4942 l 2828 4940 l
+ 2836 4939 l 2844 4937 l 2854 4935 l 2864 4933 l 2873 4930 l
+ 2881 4928 l 2889 4925 l 2899 4921 l 2908 4916 l 2918 4911 l
+ 2926 4905 l 2934 4899 l 2940 4894 l 2946 4889 l 2952 4883 l
+ 2958 4876 l 2964 4870 l 2969 4863 l 2974 4856 l 2980 4849 l
+ 2986 4841 l 2992 4832 l 2999 4822 l 3005 4813 l 3012 4805 l
+ 3018 4796 l 3024 4787 l 3031 4778 l 3038 4770 l 3044 4762 l
+ 3050 4756 l 3055 4751 l 3059 4745 l 3064 4740 l 3068 4736 l
+ 3071 4731 l 3074 4727 l 3076 4722 l 3077 4715 l 3077 4708 l
+ 3077 4701 l 3076 4695 l 3075 4689 l 3073 4682 l 3071 4674 l
+ 3069 4667 l 3066 4661 l 3064 4656 l 3062 4650 l 3059 4644 l
+ 3056 4639 l 3054 4633 l 3051 4628 l 3048 4623 l 3044 4617 l
+ 3041 4611 l 3037 4605 l 3033 4599 l 3029 4593 l 3028 4591 l
+ 3026 4589 l 3024 4587 l 3022 4585 l 3020 4583 l 3017 4582 l
+ 3013 4581 l 3008 4581 l 3003 4582 l 2997 4584 l 2991 4586 l
+ 2983 4589 l 2975 4593 l 2966 4598 l 2956 4605 l 2945 4612 l
+ 2934 4619 l 2923 4627 l 2910 4637 l 2896 4647 l 2881 4658 l
+ 2866 4670 l 2850 4683 l 2833 4697 l 2816 4710 l 2800 4724 l
+ 2783 4738 l 2767 4751 l 2752 4764 l 2738 4776 l 2725 4788 l
+ 2713 4799 l 2702 4809 l 2692 4818 l 2679 4830 l 2668 4841 l
+ 2659 4851 l 2651 4860 l 2646 4868 l 2641 4875 l 2639 4880 l
+ 2637 4885 l 2637 4889 l 2637 4892 l 2638 4895 l
+ cp gs col20 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 2891 5190 m 2893 5191 l 2902 5194 l 2915 5198 l 2928 5203 l 2938 5206 l
+ 2947 5209 l 2955 5212 l 2964 5215 l 2974 5218 l 2983 5221 l
+ 2992 5224 l 3001 5226 l 3009 5228 l 3018 5230 l 3028 5231 l
+ 3037 5232 l 3046 5234 l 3054 5235 l 3062 5235 l 3070 5236 l
+ 3078 5237 l 3086 5237 l 3094 5238 l 3101 5238 l 3108 5239 l
+ 3115 5239 l 3123 5239 l 3131 5239 l 3139 5239 l 3145 5239 l
+ 3153 5239 l 3161 5239 l 3169 5239 l 3176 5239 l 3180 5238 l
+ 3182 5238 l 3183 5238 l 3184 5238 l 3185 5237 l 3186 5237 l
+ 3186 5236 l 3187 5236 l
+ 3187 5235 l gs col0 s gr
+% Polyline
+n 2468 6609 m 2462 6602 l 2456 6595 l 2448 6588 l 2440 6581 l 2432 6573 l
+ 2423 6566 l 2415 6559 l 2408 6553 l 2400 6547 l 2391 6540 l
+ 2382 6534 l 2373 6527 l 2363 6521 l 2353 6515 l 2344 6510 l
+ 2335 6506 l 2325 6501 l 2314 6497 l 2303 6494 l 2290 6490 l
+ 2278 6487 l 2265 6484 l 2253 6482 l 2242 6480 l 2232 6479 l
+ 2222 6478 l 2212 6476 l 2201 6476 l 2190 6475 l 2178 6474 l
+ 2167 6474 l 2155 6474 l 2144 6473 l 2134 6474 l 2122 6474 l
+ 2111 6474 l 2098 6475 l 2085 6475 l 2071 6476 l 2058 6477 l
+ 2044 6479 l 2031 6480 l 2018 6482 l 2006 6484 l 1996 6485 l
+ 1985 6487 l 1974 6489 l 1963 6491 l 1951 6493 l 1938 6496 l
+ 1926 6499 l 1913 6502 l 1900 6505 l 1887 6508 l 1875 6511 l
+ 1862 6515 l 1851 6517 l 1839 6521 l 1826 6524 l 1813 6527 l
+ 1799 6531 l 1785 6535 l 1770 6540 l 1755 6544 l 1740 6549 l
+ 1726 6553 l 1711 6558 l 1697 6563 l 1684 6567 l 1671 6572 l
+ 1656 6578 l 1640 6584 l 1624 6590 l 1608 6596 l 1592 6603 l
+ 1575 6611 l 1560 6618 l 1545 6625 l 1531 6631 l 1519 6637 l
+ 1508 6643 l 1498 6649 l 1484 6657 l 1472 6665 l 1461 6673 l
+ 1450 6682 l 1442 6690 l 1435 6697 l 1429 6704 l 1424 6710 l
+ 1418 6718 l 1413 6727 l 1409 6737 l 1406 6747 l 1404 6757 l
+ 1403 6767 l 1403 6775 l 1403 6783 l 1404 6793 l 1406 6803 l
+ 1408 6813 l 1410 6824 l 1412 6833 l 1415 6843 l 1418 6852 l
+ 1421 6861 l 1425 6871 l 1430 6881 l 1435 6891 l 1441 6901 l
+ 1446 6910 l 1453 6918 l 1459 6925 l 1467 6933 l 1476 6941 l
+ 1486 6949 l 1496 6956 l 1507 6963 l 1518 6969 l 1529 6975 l
+ 1538 6979 l 1548 6984 l 1558 6988 l 1570 6992 l 1582 6996 l
+ 1594 7000 l 1606 7004 l 1618 7007 l 1630 7010 l 1642 7013 l
+ 1654 7015 l 1667 7017 l 1680 7019 l 1695 7021 l 1710 7022 l
+ 1726 7024 l 1741 7025 l 1756 7026 l 1770 7027 l 1785 7028 l
+ 1796 7028 l 1809 7029 l 1822 7029 l 1835 7030 l 1849 7030 l
+ 1863 7030 l 1877 7031 l 1891 7031 l 1904 7031 l 1916 7032 l
+ 1928 7032 l 1939 7033 l 1952 7033 l 1965 7033 l 1979 7034 l
+ 1992 7034 l 2006 7035 l 2020 7035 l 2032 7036 l 2044 7036 l
+ 2056 7037 l 2067 7037 l 2077 7037 l 2088 7037 l 2099 7038 l
+ 2111 7038 l 2123 7038 l 2136 7038 l 2148 7038 l 2160 7038 l
+ 2172 7038 l 2183 7038 l 2191 7038 l 2200 7038 l 2209 7037 l
+ 2219 7036 l 2229 7035 l 2240 7033 l 2251 7029 l 2262 7025 l
+ 2273 7020 l 2284 7013 l 2295 7006 l 2306 6997 l 2317 6987 l
+ 2328 6976 l 2337 6964 l 2347 6951 l 2357 6937 l 2367 6922 l
+ 2377 6905 l 2388 6887 l 2398 6868 l 2408 6849 l 2418 6830 l
+ 2428 6811 l 2437 6793 l 2445 6775 l 2452 6759 l 2458 6743 l
+ 2464 6729 l 2469 6717 l 2474 6701 l 2478 6687 l 2481 6674 l
+ 2483 6663 l 2483 6653 l 2483 6643 l 2482 6635 l 2480 6628 l
+ 2478 6622 l 2475 6617 l 2472 6613 l
+ cp gs col7 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 4102 4658 m 4100 4659 l 4092 4665 l 4080 4673 l 4068 4681 l 4059 4686 l
+ 4051 4690 l 4044 4693 l 4036 4696 l 4027 4698 l 4018 4700 l
+ 4009 4701 l 4001 4702 l 3994 4703 l 3986 4703 l 3978 4704 l
+ 3969 4704 l 3960 4705 l 3952 4705 l 3944 4705 l 3936 4706 l
+ 3927 4706 l 3917 4706 l 3907 4706 l 3897 4705 l 3888 4704 l
+ 3880 4703 l 3871 4701 l 3861 4699 l 3850 4696 l 3839 4693 l
+ 3829 4690 l 3819 4686 l 3811 4683 l 3802 4680 l 3793 4676 l
+ 3783 4672 l 3773 4668 l 3764 4663 l 3755 4658 l 3746 4654 l
+ 3737 4648 l 3728 4642 l 3719 4636 l 3709 4629 l 3699 4622 l
+ 3690 4615 l 3682 4609 l 3674 4603 l 3667 4597 l 3659 4591 l
+ 3651 4585 l 3643 4579 l 3635 4573 l 3627 4567 l 3619 4562 l
+ 3611 4557 l 3603 4552 l 3594 4547 l 3585 4541 l 3575 4536 l
+ 3564 4530 l 3554 4525 l 3544 4521 l 3535 4516 l 3525 4512 l
+ 3515 4507 l 3504 4503 l 3492 4499 l 3480 4494 l 3468 4490 l
+ 3456 4487 l 3445 4484 l 3435 4481 l 3425 4479 l 3414 4477 l
+ 3403 4475 l 3391 4473 l 3379 4471 l 3367 4469 l 3356 4468 l
+ 3345 4466 l 3335 4465 l 3325 4464 l 3314 4464 l 3303 4463 l
+ 3292 4462 l 3281 4462 l 3270 4462 l 3259 4462 l 3248 4462 l
+ 3238 4463 l 3229 4463 l 3217 4465 l 3204 4466 l 3192 4468 l
+ 3179 4471 l 3167 4474 l 3156 4476 l 3146 4479 l 3137 4482 l
+ 3129 4485 l 3122 4489 l 3114 4493 l 3106 4497 l 3099 4502 l
+ 3091 4506 l 3083 4511 l 3075 4517 l 3068 4521 l 3060 4526 l
+ 3050 4532 l 3039 4539 l 3025 4547 l 3010 4556 l 2996 4565 l
+ 2986 4571 l 2982 4574 l
+ 2981 4574 l gs col0 s gr
+% Polyline
+n 2940 2986 m 2939 2985 l 2932 2981 l 2920 2973 l 2905 2963 l 2891 2954 l
+ 2879 2947 l 2869 2941 l 2859 2937 l 2849 2933 l 2839 2930 l
+ 2827 2927 l 2816 2924 l 2804 2922 l 2792 2920 l 2781 2919 l
+ 2770 2918 l 2760 2918 l 2748 2917 l 2736 2918 l 2724 2918 l
+ 2712 2919 l 2700 2921 l 2689 2923 l 2679 2925 l 2669 2928 l
+ 2659 2932 l 2648 2936 l 2637 2941 l 2627 2946 l 2617 2952 l
+ 2608 2957 l 2601 2963 l 2593 2969 l 2586 2976 l 2579 2983 l
+ 2572 2991 l 2566 2999 l 2560 3008 l 2556 3016 l 2552 3024 l
+ 2548 3033 l 2545 3042 l 2542 3053 l 2540 3063 l 2538 3074 l
+ 2536 3085 l 2535 3095 l 2534 3105 l 2534 3114 l 2534 3124 l
+ 2534 3135 l 2534 3145 l 2536 3156 l 2537 3166 l 2540 3175 l
+ 2542 3184 l 2546 3193 l 2550 3202 l 2555 3212 l 2560 3222 l
+ 2567 3231 l 2573 3240 l 2579 3248 l 2586 3255 l 2592 3262 l
+ 2599 3268 l 2607 3275 l 2616 3281 l 2624 3288 l 2632 3293 l
+ 2640 3298 l 2648 3303 l 2656 3307 l 2664 3311 l 2673 3315 l
+ 2683 3319 l 2693 3323 l 2702 3326 l 2712 3329 l 2721 3331 l
+ 2730 3333 l 2740 3335 l 2750 3336 l 2762 3338 l 2773 3339 l
+ 2783 3340 l 2794 3340 l 2803 3341 l 2812 3341 l 2822 3341 l
+ 2832 3342 l 2842 3342 l 2852 3341 l 2862 3341 l 2871 3341 l
+ 2880 3340 l 2889 3339 l 2898 3339 l 2907 3337 l 2917 3336 l
+ 2926 3335 l 2935 3334 l 2944 3332 l 2951 3331 l 2961 3329 l
+ 2970 3328 l 2980 3326 l 2989 3324 l 2997 3323 l 3005 3323 l
+ 3012 3322 l 3019 3322 l 3026 3323 l 3033 3324 l 3040 3326 l
+ 3047 3329 l 3053 3332 l 3061 3336 l 3070 3340 l 3079 3344 l
+ 3088 3348 l 3097 3350 l 3107 3352 l 3117 3353 l 3129 3352 l
+ 3140 3352 l 3150 3351 l 3159 3349 l 3167 3348 l 3175 3346 l
+ 3182 3343 l 3188 3340 l 3193 3336 l 3197 3331 l 3200 3325 l
+ 3203 3317 l 3205 3308 l 3206 3298 l 3206 3287 l 3206 3278 l
+ 3205 3268 l 3204 3257 l 3201 3246 l 3198 3235 l 3195 3225 l
+ 3191 3217 l 3187 3210 l 3181 3203 l 3173 3195 l 3164 3187 l
+ 3158 3182 l
+ 3157 3181 l gs col0 s gr
+% Polyline
+n 3309 2031 m 3318 2017 l 3328 2004 l 3338 1992 l 3349 1979 l 3360 1967 l
+ 3371 1955 l 3382 1943 l 3394 1932 l 3405 1922 l 3417 1913 l
+ 3428 1904 l 3440 1895 l 3452 1886 l 3466 1878 l 3480 1869 l
+ 3495 1861 l 3511 1853 l 3528 1845 l 3544 1839 l 3561 1834 l
+ 3577 1830 l 3592 1828 l 3607 1828 l 3621 1829 l 3632 1831 l
+ 3644 1835 l 3656 1839 l 3668 1845 l 3679 1853 l 3691 1861 l
+ 3702 1871 l 3713 1882 l 3723 1893 l 3733 1904 l 3741 1916 l
+ 3749 1928 l 3756 1940 l 3762 1952 l 3767 1965 l 3772 1978 l
+ 3777 1991 l 3781 2006 l 3785 2021 l 3788 2037 l 3791 2054 l
+ 3793 2071 l 3795 2088 l 3797 2106 l 3798 2123 l 3798 2140 l
+ 3799 2157 l 3799 2174 l 3799 2189 l 3799 2205 l 3798 2222 l
+ 3798 2239 l 3797 2258 l 3796 2277 l 3795 2296 l 3793 2316 l
+ 3792 2336 l 3790 2356 l 3787 2376 l 3785 2395 l 3783 2414 l
+ 3780 2433 l 3777 2451 l 3774 2469 l 3770 2486 l 3767 2504 l
+ 3763 2522 l 3758 2541 l 3753 2560 l 3748 2580 l 3743 2599 l
+ 3737 2619 l 3731 2638 l 3724 2657 l 3718 2676 l 3711 2693 l
+ 3705 2710 l 3698 2726 l 3692 2741 l 3685 2756 l 3677 2773 l
+ 3669 2789 l 3661 2805 l 3651 2821 l 3641 2837 l 3631 2853 l
+ 3620 2869 l 3609 2884 l 3597 2899 l 3586 2912 l 3574 2925 l
+ 3562 2936 l 3551 2947 l 3539 2957 l 3527 2967 l 3514 2976 l
+ 3500 2985 l 3486 2993 l 3471 3001 l 3455 3009 l 3439 3016 l
+ 3422 3022 l 3405 3027 l 3389 3031 l 3373 3034 l 3358 3036 l
+ 3343 3037 l 3328 3038 l 3313 3037 l 3298 3036 l 3283 3033 l
+ 3267 3030 l 3251 3025 l 3235 3019 l 3219 3013 l 3204 3005 l
+ 3189 2997 l 3175 2988 l 3162 2979 l 3150 2969 l 3139 2958 l
+ 3129 2948 l 3120 2936 l 3111 2924 l 3103 2911 l 3095 2896 l
+ 3087 2881 l 3080 2865 l 3074 2849 l 3068 2832 l 3063 2816 l
+ 3059 2799 l 3055 2784 l 3052 2768 l 3049 2754 l 3047 2740 l
+ 3045 2726 l 3044 2712 l 3043 2697 l 3042 2683 l 3042 2667 l
+ 3042 2652 l 3043 2636 l 3044 2620 l 3046 2604 l 3048 2588 l
+ 3051 2572 l 3055 2557 l 3058 2542 l 3062 2526 l 3066 2512 l
+ 3071 2498 l 3076 2483 l 3081 2467 l 3088 2451 l 3094 2433 l
+ 3101 2416 l 3109 2398 l 3116 2379 l 3124 2361 l 3132 2344 l
+ 3140 2326 l 3148 2309 l 3156 2293 l 3164 2277 l 3172 2262 l
+ 3180 2247 l 3188 2231 l 3196 2216 l 3204 2200 l 3213 2184 l
+ 3222 2168 l 3232 2152 l 3241 2136 l 3250 2120 l 3260 2105 l
+ 3269 2091 l 3277 2077 l 3286 2065 l 3294 2053 l 3301 2041 l
+
+ cp gs col7 1.00 shd ef gr gs col0 s gr
+% Polyline
+45.000 slw
+n 2498 3459 m 2499 3459 l 2505 3459 l 2517 3459 l 2532 3460 l 2545 3461 l
+ 2555 3461 l 2563 3462 l 2571 3464 l 2579 3467 l 2587 3471 l
+ 2595 3476 l 2603 3481 l 2610 3488 l 2617 3495 l 2623 3501 l
+ 2629 3507 l 2636 3514 l 2643 3522 l 2651 3530 l 2658 3538 l
+ 2665 3546 l 2672 3553 l 2679 3560 l 2686 3568 l 2693 3576 l
+ 2701 3584 l 2708 3592 l 2716 3599 l 2723 3606 l 2730 3613 l
+ 2737 3620 l 2744 3627 l 2752 3634 l 2761 3642 l 2769 3649 l
+ 2777 3657 l 2785 3664 l 2792 3672 l 2799 3679 l 2807 3687 l
+ 2815 3695 l 2824 3704 l 2833 3713 l 2841 3722 l 2850 3730 l
+ 2859 3737 l 2866 3743 l 2874 3749 l 2883 3756 l 2892 3762 l
+ 2902 3769 l 2911 3775 l 2921 3781 l 2931 3787 l 2940 3793 l
+ 2950 3798 l 2959 3803 l 2969 3809 l 2979 3814 l 2990 3820 l
+ 3001 3826 l 3012 3831 l 3024 3836 l 3035 3841 l 3045 3845 l
+ 3056 3849 l 3066 3853 l 3077 3856 l 3089 3859 l 3101 3862 l
+ 3114 3865 l 3127 3868 l 3141 3870 l 3154 3872 l 3166 3874 l
+ 3179 3876 l 3189 3877 l 3201 3878 l 3212 3879 l 3225 3879 l
+ 3238 3880 l 3251 3880 l 3264 3881 l 3277 3881 l 3289 3881 l
+ 3301 3881 l 3312 3880 l 3323 3880 l 3336 3879 l 3349 3878 l
+ 3362 3876 l 3376 3875 l 3390 3872 l 3404 3870 l 3417 3867 l
+ 3430 3864 l 3442 3860 l 3454 3857 l 3466 3852 l 3478 3848 l
+ 3491 3843 l 3504 3837 l 3518 3831 l 3531 3825 l 3544 3818 l
+ 3556 3813 l 3568 3807 l 3579 3802 l 3590 3796 l 3601 3791 l
+ 3612 3785 l 3624 3780 l 3636 3774 l 3647 3768 l 3659 3762 l
+ 3670 3756 l 3681 3750 l 3692 3744 l 3703 3738 l 3715 3731 l
+ 3727 3724 l 3739 3717 l 3751 3709 l 3764 3701 l 3775 3693 l
+ 3785 3686 l 3795 3680 l 3803 3673 l 3812 3666 l 3821 3658 l
+ 3829 3650 l 3837 3643 l 3844 3637 l 3852 3631 l 3859 3626 l
+ 3866 3622 l 3873 3619 l 3881 3617 l 3891 3614 l 3901 3613 l
+ 3910 3612 l 3920 3611 l 3928 3610 l 3936 3610 l 3945 3610 l
+ 3954 3609 l 3964 3609 l 3975 3609 l 3982 3609 l
+ 3983 3609 l gs col0 s gr
+% Polyline
+30.000 slw
+n 2870 2736 m 2876 2727 l 2882 2719 l 2888 2710 l 2895 2701 l 2901 2690 l
+ 2907 2679 l 2913 2667 l 2919 2654 l 2925 2640 l 2931 2625 l
+ 2935 2612 l 2940 2599 l 2945 2585 l 2950 2569 l 2956 2552 l
+ 2962 2534 l 2967 2515 l 2973 2496 l 2979 2477 l 2985 2459 l
+ 2991 2440 l 2996 2423 l 3001 2406 l 3006 2390 l 3011 2374 l
+ 3016 2359 l 3021 2343 l 3026 2327 l 3031 2311 l 3036 2295 l
+ 3041 2279 l 3046 2264 l 3051 2249 l 3056 2235 l 3061 2222 l
+ 3065 2210 l 3069 2199 l 3073 2188 l 3078 2175 l 3083 2163 l
+ 3088 2151 l 3092 2139 l 3097 2127 l 3102 2114 l 3107 2102 l
+ 3112 2091 l 3117 2080 l 3121 2070 l 3125 2060 l 3129 2051 l
+ 3133 2039 l 3138 2028 l 3142 2016 l 3147 2003 l 3152 1991 l
+ 3156 1979 l 3160 1968 l 3164 1957 l 3167 1948 l 3170 1939 l
+ 3173 1929 l 3176 1919 l 3179 1909 l 3180 1899 l 3181 1889 l
+ 3180 1879 l 3179 1869 l 3176 1859 l 3173 1851 l 3170 1844 l
+ 3166 1836 l 3161 1827 l 3155 1819 l 3149 1811 l 3141 1803 l
+ 3133 1796 l 3125 1790 l 3116 1785 l 3107 1782 l 3098 1780 l
+ 3088 1778 l 3077 1778 l 3066 1780 l 3053 1782 l 3040 1785 l
+ 3027 1789 l 3014 1794 l 3001 1800 l 2989 1805 l 2978 1811 l
+ 2967 1816 l 2958 1822 l 2947 1829 l 2936 1836 l 2926 1843 l
+ 2916 1851 l 2906 1860 l 2896 1870 l 2886 1880 l 2876 1891 l
+ 2866 1902 l 2856 1915 l 2848 1924 l 2840 1934 l 2831 1946 l
+ 2822 1958 l 2812 1971 l 2801 1986 l 2790 2000 l 2780 2016 l
+ 2769 2031 l 2758 2047 l 2748 2062 l 2738 2077 l 2729 2092 l
+ 2720 2107 l 2711 2122 l 2702 2137 l 2693 2153 l 2684 2169 l
+ 2675 2185 l 2666 2202 l 2658 2219 l 2650 2235 l 2642 2251 l
+ 2635 2265 l 2628 2279 l 2622 2292 l 2616 2304 l 2611 2315 l
+ 2605 2327 l 2600 2339 l 2595 2350 l 2591 2361 l 2586 2373 l
+ 2582 2385 l 2578 2396 l 2575 2408 l 2572 2421 l 2569 2433 l
+ 2566 2446 l 2564 2460 l 2562 2472 l 2560 2486 l 2558 2500 l
+ 2557 2516 l 2555 2533 l 2554 2551 l 2553 2568 l 2552 2586 l
+ 2551 2604 l 2551 2621 l 2552 2637 l 2552 2652 l 2553 2666 l
+ 2555 2680 l 2558 2697 l 2562 2713 l 2567 2728 l 2573 2742 l
+ 2579 2756 l 2586 2768 l 2593 2779 l 2600 2788 l 2607 2796 l
+ 2614 2803 l 2622 2810 l 2630 2817 l 2639 2824 l 2648 2829 l
+ 2658 2834 l 2667 2838 l 2677 2841 l 2686 2843 l 2696 2845 l
+ 2708 2845 l 2720 2845 l 2733 2844 l 2747 2841 l 2760 2838 l
+ 2772 2832 l 2783 2826 l 2792 2820 l 2802 2813 l 2811 2804 l
+ 2821 2795 l 2830 2785 l 2839 2774 l 2848 2764 l 2856 2754 l
+ 2863 2744 l
+ cp gs col7 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 3489 1649 m 3490 1649 l 3494 1646 l 3504 1640 l 3520 1632 l 3539 1622 l
+ 3559 1611 l 3578 1601 l 3596 1593 l 3612 1586 l 3626 1581 l
+ 3639 1577 l 3652 1573 l 3665 1571 l 3678 1569 l 3692 1568 l
+ 3706 1568 l 3721 1568 l 3736 1569 l 3751 1571 l 3766 1573 l
+ 3780 1576 l 3793 1580 l 3805 1584 l 3817 1588 l 3829 1593 l
+ 3840 1599 l 3852 1605 l 3863 1612 l 3875 1621 l 3886 1630 l
+ 3897 1640 l 3907 1650 l 3917 1661 l 3925 1672 l 3933 1684 l
+ 3940 1696 l 3946 1707 l 3952 1719 l 3957 1733 l 3962 1748 l
+ 3968 1765 l 3974 1785 l 3980 1807 l 3986 1830 l 3992 1852 l
+ 3998 1873 l 4002 1888 l 4004 1897 l 4005 1901 l
+ 4005 1902 l gs col0 s gr
+% Polyline
+n 3278 1680 m 3278 1679 l 3277 1674 l 3274 1664 l 3270 1650 l 3265 1634 l
+ 3260 1620 l 3256 1607 l 3251 1598 l 3246 1589 l 3241 1583 l
+ 3234 1576 l 3227 1571 l 3219 1566 l 3209 1561 l 3199 1557 l
+ 3188 1553 l 3177 1550 l 3165 1548 l 3154 1546 l 3143 1545 l
+ 3132 1544 l 3120 1543 l 3107 1543 l 3093 1544 l 3079 1545 l
+ 3064 1547 l 3050 1550 l 3037 1554 l 3024 1558 l 3011 1563 l
+ 3001 1569 l 2991 1575 l 2980 1582 l 2969 1590 l 2957 1599 l
+ 2945 1609 l 2933 1620 l 2920 1631 l 2908 1643 l 2896 1654 l
+ 2885 1666 l 2873 1678 l 2864 1688 l 2854 1697 l 2844 1708 l
+ 2834 1719 l 2823 1730 l 2812 1742 l 2801 1755 l 2789 1768 l
+ 2778 1782 l 2766 1795 l 2755 1809 l 2744 1823 l 2734 1836 l
+ 2724 1849 l 2714 1862 l 2705 1876 l 2696 1889 l 2687 1903 l
+ 2678 1917 l 2669 1932 l 2660 1948 l 2651 1964 l 2642 1980 l
+ 2633 1997 l 2624 2014 l 2616 2030 l 2608 2046 l 2601 2062 l
+ 2594 2077 l 2588 2092 l 2582 2106 l 2576 2119 l 2570 2134 l
+ 2564 2150 l 2558 2165 l 2553 2181 l 2547 2197 l 2541 2213 l
+ 2536 2229 l 2531 2244 l 2526 2260 l 2521 2274 l 2517 2288 l
+ 2512 2301 l 2508 2313 l 2504 2325 l 2499 2338 l 2495 2352 l
+ 2489 2366 l 2484 2380 l 2479 2394 l 2473 2409 l 2467 2423 l
+ 2462 2437 l 2456 2451 l 2451 2464 l 2446 2477 l 2441 2490 l
+ 2437 2503 l 2432 2517 l 2426 2532 l 2420 2549 l 2413 2568 l
+ 2406 2590 l 2398 2613 l 2391 2635 l 2385 2652 l 2381 2664 l
+ 2379 2669 l
+ 2379 2670 l gs col0 s gr
+% Polyline
+n 4036 5613 m 4048 5621 l 4060 5629 l 4071 5637 l 4083 5644 l 4095 5652 l
+ 4106 5659 l 4117 5666 l 4128 5673 l 4138 5679 l 4147 5685 l
+ 4157 5691 l 4165 5696 l 4176 5703 l 4187 5710 l 4198 5717 l
+ 4210 5724 l 4221 5732 l 4233 5739 l 4245 5747 l 4255 5754 l
+ 4265 5760 l 4275 5767 l 4284 5773 l 4294 5779 l 4304 5785 l
+ 4314 5792 l 4323 5798 l 4333 5805 l 4342 5810 l 4350 5816 l
+ 4357 5820 l 4363 5824 l 4373 5831 l 4382 5836 l 4391 5841 l
+ 4399 5845 l 4406 5848 l 4412 5850 l 4419 5851 l 4426 5851 l
+ 4433 5851 l 4440 5850 l 4446 5848 l 4451 5846 l 4457 5844 l
+ 4462 5840 l 4467 5837 l 4471 5834 l 4475 5830 l 4479 5826 l
+ 4482 5821 l 4486 5816 l 4490 5811 l 4493 5806 l 4497 5801 l
+ 4501 5796 l 4506 5790 l 4509 5785 l 4512 5780 l 4516 5774 l
+ 4519 5767 l 4521 5760 l 4523 5753 l 4524 5747 l 4524 5740 l
+ 4524 5734 l 4523 5727 l 4522 5719 l 4521 5713 l 4520 5707 l
+ 4518 5702 l 4515 5697 l 4512 5691 l 4508 5686 l 4504 5682 l
+ 4499 5677 l 4494 5673 l 4489 5668 l 4482 5663 l 4475 5658 l
+ 4468 5653 l 4461 5648 l 4454 5643 l 4446 5638 l 4437 5632 l
+ 4427 5626 l 4417 5620 l 4408 5614 l 4400 5609 l 4391 5604 l
+ 4382 5598 l 4371 5591 l 4361 5584 l 4351 5578 l 4341 5571 l
+ 4332 5565 l 4322 5559 l 4313 5553 l 4303 5546 l 4292 5540 l
+ 4283 5534 l 4274 5528 l 4266 5523 l 4258 5519 l 4252 5515 l
+ 4245 5511 l 4238 5507 l 4231 5503 l 4224 5499 l 4217 5495 l
+ 4210 5491 l 4203 5486 l 4195 5480 l 4186 5474 l 4177 5468 l
+ 4167 5460 l 4158 5453 l 4149 5447 l 4142 5442 l 4136 5437 l
+ 4131 5434 l 4127 5431 l 4124 5429 l 4120 5428 l 4116 5428 l
+ 4112 5428 l 4106 5428 l 4100 5429 l 4093 5430 l 4085 5431 l
+ 4076 5433 l 4066 5434 l 4054 5436 l 4042 5438 l 4029 5440 l
+ 4017 5441 l 4005 5443 l 3993 5445 l 3981 5447 l 3969 5449 l
+ 3957 5450 l 3944 5452 l 3932 5455 l 3920 5457 l 3910 5459 l
+ 3900 5460 l 3892 5462 l 3885 5464 l 3882 5465 l 3880 5465 l
+ 3878 5466 l 3876 5467 l 3874 5468 l 3872 5468 l 3871 5469 l
+ 3869 5470 l 3868 5471 l 3867 5472 l 3867 5474 l 3866 5475 l
+ 3866 5476 l 3866 5478 l 3866 5479 l 3867 5481 l 3868 5483 l
+ 3869 5485 l 3870 5487 l 3872 5489 l 3874 5491 l 3876 5493 l
+ 3878 5496 l 3881 5498 l 3884 5501 l 3887 5504 l 3894 5510 l
+ 3904 5517 l 3914 5526 l 3926 5535 l 3939 5545 l 3954 5555 l
+ 3968 5566 l 3983 5576 l 3997 5586 l 4011 5596 l 4024 5605 l
+
+ cp gs col31 1.00 shd ef gr gs col0 s gr
+7.500 slw
+% Rotated Ellipse
+gs
+3291 2663 tr
+-345.998 rot
+n 0 0 179 279 0 360 DrawEllipse 345.998 rot
+gs 0.00 setgray ef gr gs col0 s gr
+gr
+
+% Polyline
+30.000 slw
+n 2303 4762 m 2309 4770 l 2316 4777 l 2323 4784 l 2330 4792 l 2337 4799 l
+ 2344 4805 l 2350 4811 l 2356 4816 l 2364 4823 l 2372 4830 l
+ 2381 4837 l 2390 4843 l 2399 4848 l 2408 4852 l 2415 4854 l
+ 2423 4857 l 2432 4859 l 2441 4861 l 2451 4863 l 2461 4864 l
+ 2471 4866 l 2480 4867 l 2489 4867 l 2500 4868 l 2510 4869 l
+ 2522 4869 l 2533 4869 l 2543 4869 l 2554 4869 l 2563 4868 l
+ 2572 4867 l 2582 4866 l 2592 4865 l 2602 4863 l 2613 4861 l
+ 2623 4859 l 2633 4857 l 2642 4855 l 2651 4853 l 2661 4850 l
+ 2672 4848 l 2682 4845 l 2693 4842 l 2703 4839 l 2712 4836 l
+ 2720 4833 l 2728 4831 l 2736 4827 l 2744 4824 l 2751 4820 l
+ 2759 4816 l 2766 4812 l 2773 4807 l 2779 4802 l 2785 4797 l
+ 2792 4791 l 2799 4784 l 2807 4777 l 2815 4769 l 2823 4760 l
+ 2830 4752 l 2838 4744 l 2844 4737 l 2851 4730 l 2858 4723 l
+ 2865 4715 l 2873 4706 l 2880 4698 l 2888 4690 l 2895 4682 l
+ 2901 4674 l 2908 4667 l 2915 4658 l 2923 4649 l 2931 4640 l
+ 2939 4630 l 2947 4621 l 2953 4612 l 2960 4604 l 2965 4597 l
+ 2970 4589 l 2975 4582 l 2979 4574 l 2984 4566 l 2987 4558 l
+ 2990 4551 l 2993 4544 l 2994 4537 l 2996 4530 l 2996 4522 l
+ 2997 4514 l 2997 4506 l 2997 4497 l 2996 4488 l 2996 4480 l
+ 2995 4472 l 2994 4464 l 2993 4455 l 2991 4446 l 2989 4437 l
+ 2987 4427 l 2984 4418 l 2981 4410 l 2977 4403 l 2972 4395 l
+ 2967 4388 l 2961 4381 l 2954 4373 l 2947 4367 l 2939 4360 l
+ 2932 4354 l 2926 4349 l 2919 4344 l 2912 4340 l 2904 4335 l
+ 2896 4330 l 2888 4326 l 2881 4322 l 2873 4318 l 2866 4315 l
+ 2859 4311 l 2851 4308 l 2843 4305 l 2834 4302 l 2825 4300 l
+ 2817 4297 l 2809 4295 l 2801 4294 l 2793 4293 l 2785 4292 l
+ 2776 4291 l 2767 4291 l 2758 4291 l 2750 4291 l 2742 4292 l
+ 2734 4293 l 2724 4294 l 2714 4296 l 2704 4298 l 2693 4302 l
+ 2684 4305 l 2676 4309 l 2672 4312 l 2667 4315 l 2661 4320 l
+ 2654 4326 l 2645 4333 l 2635 4342 l 2623 4353 l 2609 4366 l
+ 2593 4380 l 2575 4397 l 2564 4407 l 2552 4418 l 2538 4430 l
+ 2524 4443 l 2509 4457 l 2493 4472 l 2477 4487 l 2460 4503 l
+ 2443 4519 l 2426 4535 l 2410 4552 l 2394 4567 l 2380 4582 l
+ 2366 4597 l 2353 4610 l 2342 4623 l 2331 4635 l 2322 4646 l
+ 2314 4658 l 2306 4668 l 2300 4679 l 2295 4688 l 2291 4698 l
+ 2288 4706 l 2287 4714 l 2286 4722 l 2286 4729 l 2287 4735 l
+ 2289 4741 l 2291 4746 l 2294 4750 l 2297 4755 l 2300 4759 l
+
+ cp gs col20 1.00 shd ef gr gs col0 s gr
+7.500 slw
+% Rotated Ellipse
+gs
+2748 2543 tr
+-345.998 rot
+n 0 0 130 238 0 360 DrawEllipse 345.998 rot
+gs 0.00 setgray ef gr gs col0 s gr
+gr
+
+% Rotated Ellipse
+gs
+2738 2495 tr
+-350.003 rot
+n 0 0 55 105 0 360 DrawEllipse 350.003 rot
+gs col7 1.00 shd ef gr gs col0 s gr
+gr
+
+% Polyline
+30.000 slw
+n 2288 6848 m 2292 6837 l 2298 6827 l 2305 6815 l 2313 6804 l 2322 6793 l
+ 2332 6783 l 2342 6773 l 2351 6764 l 2360 6757 l 2369 6750 l
+ 2378 6743 l 2386 6738 l 2395 6732 l 2403 6726 l 2413 6721 l
+ 2422 6716 l 2430 6711 l 2439 6707 l 2448 6703 l 2456 6699 l
+ 2465 6694 l 2474 6689 l 2484 6684 l 2495 6679 l 2506 6674 l
+ 2518 6668 l 2529 6663 l 2540 6658 l 2550 6653 l 2560 6649 l
+ 2570 6645 l 2580 6641 l 2591 6637 l 2602 6633 l 2614 6629 l
+ 2626 6626 l 2637 6622 l 2648 6619 l 2659 6616 l 2670 6614 l
+ 2681 6611 l 2692 6608 l 2705 6606 l 2718 6603 l 2731 6601 l
+ 2744 6598 l 2757 6596 l 2770 6594 l 2782 6592 l 2794 6591 l
+ 2805 6589 l 2817 6588 l 2829 6586 l 2842 6585 l 2855 6584 l
+ 2868 6583 l 2880 6583 l 2892 6582 l 2903 6582 l 2914 6582 l
+ 2925 6581 l 2936 6582 l 2948 6582 l 2960 6582 l 2972 6583 l
+ 2985 6584 l 2997 6585 l 3008 6586 l 3020 6587 l 3031 6589 l
+ 3041 6590 l 3053 6592 l 3065 6594 l 3077 6597 l 3090 6599 l
+ 3102 6602 l 3114 6605 l 3126 6607 l 3136 6610 l 3146 6613 l
+ 3158 6617 l 3170 6620 l 3182 6625 l 3195 6629 l 3207 6634 l
+ 3218 6639 l 3228 6644 l 3238 6650 l 3248 6655 l 3258 6661 l
+ 3268 6668 l 3279 6676 l 3290 6684 l 3300 6692 l 3309 6700 l
+ 3318 6709 l 3325 6715 l 3332 6722 l 3339 6730 l 3346 6738 l
+ 3353 6746 l 3360 6755 l 3367 6763 l 3373 6772 l 3378 6780 l
+ 3383 6788 l 3389 6797 l 3394 6808 l 3399 6820 l 3404 6832 l
+ 3409 6844 l 3413 6856 l 3416 6868 l 3420 6879 l 3422 6888 l
+ 3424 6898 l 3426 6908 l 3428 6919 l 3430 6930 l 3432 6940 l
+ 3433 6951 l 3435 6960 l 3436 6970 l 3437 6978 l 3437 6983 l
+ 3437 6988 l 3437 6993 l 3436 6998 l 3435 7004 l 3433 7009 l
+ 3431 7014 l 3427 7020 l 3422 7025 l 3417 7030 l 3410 7036 l
+ 3402 7041 l 3393 7046 l 3382 7050 l 3371 7055 l 3358 7060 l
+ 3346 7064 l 3333 7068 l 3319 7072 l 3303 7076 l 3287 7080 l
+ 3268 7084 l 3248 7088 l 3227 7091 l 3205 7095 l 3182 7098 l
+ 3157 7101 l 3133 7104 l 3107 7106 l 3081 7108 l 3056 7109 l
+ 3030 7109 l 3004 7110 l 2978 7109 l 2952 7108 l 2926 7107 l
+ 2902 7105 l 2877 7102 l 2852 7099 l 2826 7096 l 2800 7092 l
+ 2773 7088 l 2746 7083 l 2718 7077 l 2690 7071 l 2662 7065 l
+ 2634 7059 l 2607 7052 l 2581 7045 l 2556 7038 l 2531 7031 l
+ 2508 7024 l 2486 7017 l 2466 7010 l 2447 7003 l 2429 6996 l
+ 2413 6990 l 2398 6983 l 2381 6976 l 2366 6968 l 2352 6960 l
+ 2339 6952 l 2328 6944 l 2318 6936 l 2309 6928 l 2302 6920 l
+ 2296 6912 l 2291 6904 l 2288 6896 l 2285 6888 l 2284 6881 l
+ 2283 6874 l 2283 6867 l 2284 6861 l 2286 6854 l
+ cp gs col7 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 2232 4239 m 2224 4242 l 2216 4247 l 2207 4251 l 2198 4256 l 2190 4261 l
+ 2183 4267 l 2176 4272 l 2169 4278 l 2162 4286 l 2154 4294 l
+ 2147 4303 l 2140 4313 l 2135 4320 l 2130 4329 l 2125 4338 l
+ 2119 4349 l 2114 4359 l 2110 4369 l 2106 4379 l 2104 4387 l
+ 2101 4396 l 2099 4405 l 2098 4414 l 2097 4423 l 2096 4432 l
+ 2096 4441 l 2096 4449 l 2095 4458 l 2095 4466 l 2095 4475 l
+ 2095 4484 l 2095 4495 l 2095 4505 l 2096 4514 l 2096 4523 l
+ 2098 4532 l 2099 4540 l 2102 4548 l 2105 4557 l 2109 4566 l
+ 2114 4575 l 2119 4583 l 2125 4591 l 2131 4599 l 2138 4606 l
+ 2147 4614 l 2156 4622 l 2166 4630 l 2176 4638 l 2186 4645 l
+ 2196 4651 l 2204 4656 l 2213 4661 l 2222 4665 l 2231 4668 l
+ 2240 4671 l 2250 4674 l 2260 4676 l 2269 4677 l 2279 4679 l
+ 2289 4680 l 2300 4681 l 2312 4683 l 2325 4684 l 2338 4685 l
+ 2351 4686 l 2362 4686 l 2373 4687 l 2384 4688 l 2395 4688 l
+ 2407 4688 l 2418 4688 l 2430 4688 l 2442 4686 l 2452 4685 l
+ 2463 4683 l 2472 4680 l 2481 4677 l 2490 4674 l 2500 4670 l
+ 2510 4665 l 2521 4660 l 2530 4655 l 2540 4650 l 2548 4644 l
+ 2557 4639 l 2567 4632 l 2577 4624 l 2587 4616 l 2597 4607 l
+ 2606 4598 l 2614 4589 l 2620 4581 l 2626 4573 l 2631 4565 l
+ 2635 4558 l 2639 4550 l 2642 4541 l 2645 4533 l 2647 4526 l
+ 2648 4519 l 2650 4512 l 2651 4504 l 2653 4494 l 2654 4484 l
+ 2654 4473 l 2654 4462 l 2653 4451 l 2651 4442 l 2649 4432 l
+ 2647 4421 l 2644 4410 l 2641 4398 l 2637 4387 l 2633 4377 l
+ 2630 4368 l 2626 4359 l 2621 4351 l 2616 4342 l 2610 4334 l
+ 2604 4326 l 2597 4319 l 2591 4312 l 2584 4306 l 2577 4301 l
+ 2571 4296 l 2563 4291 l 2554 4286 l 2544 4281 l 2533 4276 l
+ 2521 4271 l 2509 4266 l 2496 4262 l 2483 4257 l 2471 4254 l
+ 2458 4250 l 2444 4247 l 2429 4244 l 2413 4240 l 2397 4237 l
+ 2381 4234 l 2365 4232 l 2351 4230 l 2337 4228 l 2325 4227 l
+ 2314 4226 l 2299 4225 l 2286 4225 l 2274 4226 l 2263 4228 l
+ 2253 4230 l 2245 4233 l 2238 4236 l
+ cp gs col20 1.00 shd ef gr gs col0 s gr
+7.500 slw
+% Rotated Ellipse
+gs
+3260 2603 tr
+-350.003 rot
+n 0 0 55 105 0 360 DrawEllipse 350.003 rot
+gs col7 1.00 shd ef gr gs col0 s gr
+gr
+
+% Polyline
+30.000 slw
+n 2246 4048 m 2247 4040 l 2248 4030 l 2251 4020 l 2254 4009 l 2259 3999 l
+ 2263 3989 l 2268 3983 l 2272 3976 l 2278 3969 l 2284 3963 l
+ 2291 3957 l 2298 3951 l 2304 3946 l 2311 3941 l 2317 3937 l
+ 2324 3932 l 2331 3928 l 2339 3924 l 2346 3920 l 2354 3916 l
+ 2362 3913 l 2369 3911 l 2377 3908 l 2385 3906 l 2394 3903 l
+ 2404 3901 l 2413 3899 l 2423 3898 l 2431 3896 l 2440 3896 l
+ 2448 3895 l 2456 3894 l 2465 3894 l 2474 3893 l 2483 3893 l
+ 2492 3893 l 2499 3893 l 2507 3892 l 2517 3892 l 2527 3892 l
+ 2538 3891 l 2548 3891 l 2558 3891 l 2567 3891 l 2576 3891 l
+ 2585 3892 l 2594 3893 l 2604 3895 l 2612 3897 l 2620 3899 l
+ 2628 3901 l 2637 3905 l 2646 3909 l 2655 3913 l 2665 3919 l
+ 2674 3925 l 2681 3929 l 2688 3935 l 2697 3941 l 2705 3948 l
+ 2713 3955 l 2721 3962 l 2727 3969 l 2733 3975 l 2738 3981 l
+ 2743 3988 l 2747 3996 l 2751 4003 l 2754 4011 l 2757 4019 l
+ 2759 4026 l 2761 4033 l 2763 4040 l 2765 4048 l 2767 4057 l
+ 2768 4066 l 2770 4076 l 2771 4085 l 2772 4095 l 2772 4105 l
+ 2773 4115 l 2773 4125 l 2772 4137 l 2771 4149 l 2770 4161 l
+ 2768 4173 l 2765 4184 l 2762 4193 l 2758 4202 l 2754 4211 l
+ 2748 4220 l 2741 4228 l 2733 4236 l 2725 4243 l 2717 4250 l
+ 2708 4255 l 2701 4259 l 2693 4263 l 2684 4267 l 2674 4270 l
+ 2664 4274 l 2654 4277 l 2643 4280 l 2633 4282 l 2622 4284 l
+ 2612 4286 l 2602 4287 l 2591 4288 l 2579 4289 l 2566 4290 l
+ 2553 4291 l 2540 4292 l 2527 4292 l 2515 4292 l 2503 4292 l
+ 2492 4292 l 2481 4291 l 2470 4291 l 2458 4290 l 2447 4289 l
+ 2435 4287 l 2423 4285 l 2412 4283 l 2402 4281 l 2392 4278 l
+ 2383 4275 l 2373 4270 l 2362 4265 l 2351 4259 l 2341 4251 l
+ 2331 4243 l 2322 4235 l 2314 4227 l 2306 4219 l 2299 4211 l
+ 2292 4202 l 2286 4192 l 2279 4182 l 2273 4172 l 2268 4162 l
+ 2264 4153 l 2261 4145 l 2257 4135 l 2254 4125 l 2252 4115 l
+ 2251 4106 l 2250 4098 l 2249 4091 l 2248 4085 l 2247 4078 l
+ 2246 4071 l 2246 4063 l 2246 4056 l
+ cp gs col20 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 1481 6669 m 1482 6670 l 1487 6673 l 1499 6680 l 1516 6690 l 1534 6700 l
+ 1551 6710 l 1567 6719 l 1580 6726 l 1593 6732 l 1605 6737 l
+ 1615 6741 l 1626 6745 l 1637 6749 l 1649 6752 l 1661 6756 l
+ 1674 6759 l 1687 6762 l 1700 6765 l 1713 6767 l 1725 6770 l
+ 1737 6771 l 1749 6773 l 1762 6775 l 1774 6776 l 1788 6778 l
+ 1802 6779 l 1817 6780 l 1833 6781 l 1848 6782 l 1864 6783 l
+ 1879 6783 l 1894 6784 l 1908 6784 l 1922 6784 l 1934 6784 l
+ 1946 6784 l 1959 6784 l 1973 6784 l 1987 6784 l 2002 6783 l
+ 2017 6783 l 2032 6783 l 2047 6782 l 2062 6782 l 2077 6781 l
+ 2092 6780 l 2107 6780 l 2121 6779 l 2138 6779 l 2156 6778 l
+ 2175 6777 l 2194 6776 l 2213 6776 l 2232 6775 l 2250 6774 l
+ 2267 6773 l 2282 6773 l 2295 6772 l 2306 6772 l 2315 6771 l
+ 2317 6771 l 2319 6771 l 2321 6771 l 2323 6771 l 2325 6771 l
+ 2326 6771 l 2328 6771 l 2329 6771 l 2330 6771 l 2331 6771 l
+ 2332 6770 l 2333 6770 l 2334 6770 l 2335 6770 l 2334 6771 l
+ 2333 6771 l 2332 6771 l 2331 6771 l 2330 6771 l 2329 6771 l
+ 2328 6771 l
+ 2327 6771 l gs col0 s gr
+% Polyline
+n 3533 6267 m 3533 6268 l 3534 6275 l 3535 6289 l 3536 6305 l 3537 6320 l
+ 3538 6331 l 3538 6341 l 3538 6349 l 3536 6359 l 3535 6368 l
+ 3532 6377 l 3529 6385 l 3525 6392 l 3522 6398 l 3517 6404 l
+ 3512 6410 l 3506 6417 l 3500 6423 l 3493 6428 l 3486 6433 l
+ 3480 6436 l 3474 6440 l 3466 6443 l 3458 6447 l 3448 6450 l
+ 3439 6453 l 3429 6456 l 3419 6459 l 3410 6461 l 3400 6463 l
+ 3390 6466 l 3377 6469 l 3364 6472 l 3350 6476 l 3335 6480 l
+ 3319 6485 l 3304 6489 l 3287 6495 l 3275 6499 l 3261 6504 l
+ 3246 6509 l 3229 6516 l 3210 6523 l 3188 6531 l 3164 6541 l
+ 3139 6551 l 3114 6560 l 3091 6569 l 3075 6576 l 3064 6580 l
+ 3060 6582 l
+ 3059 6582 l gs col0 s gr
+% Polyline
+n 3983 6181 m 3983 6182 l 3983 6186 l 3984 6196 l 3986 6211 l 3987 6230 l
+ 3989 6250 l 3991 6268 l 3992 6284 l 3993 6299 l 3994 6311 l
+ 3995 6322 l 3996 6333 l 3997 6345 l 3997 6357 l 3998 6369 l
+ 3998 6380 l 3998 6392 l 3998 6403 l 3998 6413 l 3997 6423 l
+ 3997 6431 l 3996 6439 l 3994 6448 l 3991 6457 l 3988 6465 l
+ 3984 6474 l 3979 6481 l 3974 6488 l 3968 6494 l 3962 6499 l
+ 3955 6503 l 3947 6507 l 3937 6511 l 3927 6516 l 3915 6520 l
+ 3903 6523 l 3892 6527 l 3880 6531 l 3869 6533 l 3859 6537 l
+ 3847 6540 l 3834 6544 l 3821 6547 l 3807 6551 l 3793 6555 l
+ 3779 6558 l 3766 6561 l 3753 6564 l 3742 6566 l 3730 6569 l
+ 3718 6571 l 3704 6573 l 3690 6576 l 3675 6579 l 3660 6583 l
+ 3645 6586 l 3629 6590 l 3614 6595 l 3598 6599 l 3582 6604 l
+ 3570 6609 l 3557 6613 l 3543 6618 l 3528 6624 l 3511 6631 l
+ 3493 6639 l 3472 6648 l 3449 6658 l 3426 6668 l 3403 6679 l
+ 3381 6688 l 3363 6696 l 3350 6702 l 3343 6705 l
+ 3339 6707 l gs col0 s gr
+% Polyline
+n 2263 6883 m 2260 6890 l 2258 6899 l 2256 6908 l 2254 6916 l 2254 6925 l
+ 2253 6933 l 2253 6942 l 2252 6951 l 2252 6962 l 2252 6972 l
+ 2253 6982 l 2253 6991 l 2254 7000 l 2254 7009 l 2256 7018 l
+ 2257 7027 l 2259 7036 l 2262 7044 l 2264 7049 l 2267 7055 l
+ 2271 7062 l 2277 7069 l 2284 7076 l 2292 7084 l 2301 7091 l
+ 2312 7099 l 2320 7104 l 2330 7109 l 2340 7115 l 2352 7122 l
+ 2364 7128 l 2378 7135 l 2392 7142 l 2406 7148 l 2420 7155 l
+ 2433 7160 l 2446 7166 l 2459 7171 l 2472 7175 l 2485 7179 l
+ 2498 7184 l 2512 7188 l 2527 7192 l 2542 7195 l 2558 7199 l
+ 2574 7202 l 2590 7205 l 2606 7208 l 2623 7210 l 2639 7212 l
+ 2654 7214 l 2669 7215 l 2686 7217 l 2703 7219 l 2721 7220 l
+ 2741 7222 l 2760 7223 l 2780 7225 l 2799 7226 l 2818 7227 l
+ 2837 7229 l 2854 7230 l 2871 7231 l 2887 7232 l 2903 7232 l
+ 2919 7233 l 2935 7234 l 2951 7235 l 2968 7236 l 2985 7237 l
+ 3002 7237 l 3020 7238 l 3037 7239 l 3054 7240 l 3071 7240 l
+ 3088 7241 l 3104 7242 l 3121 7243 l 3135 7243 l 3151 7244 l
+ 3166 7244 l 3183 7245 l 3201 7246 l 3219 7246 l 3237 7247 l
+ 3256 7247 l 3274 7248 l 3293 7248 l 3311 7249 l 3328 7249 l
+ 3345 7249 l 3361 7249 l 3377 7249 l 3392 7249 l 3408 7249 l
+ 3425 7248 l 3442 7248 l 3459 7247 l 3476 7246 l 3494 7245 l
+ 3512 7244 l 3530 7242 l 3548 7241 l 3566 7239 l 3583 7238 l
+ 3600 7236 l 3617 7234 l 3634 7232 l 3649 7230 l 3664 7228 l
+ 3680 7226 l 3697 7224 l 3715 7222 l 3733 7220 l 3752 7217 l
+ 3771 7215 l 3789 7212 l 3807 7209 l 3825 7207 l 3842 7204 l
+ 3859 7202 l 3874 7199 l 3889 7197 l 3903 7195 l 3918 7192 l
+ 3933 7189 l 3948 7186 l 3963 7183 l 3978 7180 l 3993 7177 l
+ 4007 7174 l 4021 7171 l 4035 7167 l 4049 7164 l 4061 7160 l
+ 4074 7157 l 4085 7153 l 4097 7150 l 4109 7146 l 4121 7143 l
+ 4133 7138 l 4146 7134 l 4160 7129 l 4174 7124 l 4188 7119 l
+ 4203 7114 l 4217 7108 l 4232 7103 l 4246 7097 l 4260 7092 l
+ 4273 7086 l 4287 7081 l 4300 7075 l 4314 7070 l 4329 7063 l
+ 4344 7057 l 4359 7050 l 4375 7044 l 4391 7037 l 4407 7030 l
+ 4423 7023 l 4437 7017 l 4452 7010 l 4465 7004 l 4478 6999 l
+ 4490 6994 l 4503 6988 l 4516 6982 l 4529 6976 l 4542 6970 l
+ 4555 6964 l 4567 6959 l 4578 6954 l 4589 6949 l 4598 6944 l
+ 4607 6940 l 4615 6937 l 4622 6934 l 4634 6928 l 4644 6922 l
+ 4654 6917 l 4662 6912 l 4668 6907 l 4673 6902 l 4677 6897 l
+ 4682 6890 l 4686 6883 l 4689 6876 l 4692 6869 l 4694 6862 l
+ 4695 6856 l 4696 6849 l 4696 6842 l 4697 6835 l 4696 6828 l
+ 4696 6822 l 4695 6816 l 4695 6809 l 4694 6802 l 4693 6795 l
+ 4693 6788 l 4692 6782 l 4692 6775 l 4691 6768 l 4691 6760 l
+ 4690 6751 l 4690 6743 l 4689 6734 l 4688 6729 l 4688 6723 l
+ 4686 6717 l 4684 6712 l 4682 6706 l 4679 6701 l 4675 6698 l
+ 4671 6695 l 4666 6693 l 4660 6693 l 4653 6693 l 4645 6695 l
+ 4635 6699 l 4624 6703 l 4612 6709 l 4598 6715 l 4584 6722 l
+ 4570 6730 l 4556 6737 l 4542 6745 l 4529 6751 l 4516 6758 l
+ 4502 6765 l 4487 6772 l 4471 6779 l 4455 6787 l 4439 6794 l
+ 4424 6802 l 4408 6808 l 4394 6815 l 4380 6821 l 4368 6826 l
+ 4355 6831 l 4342 6836 l 4329 6841 l 4316 6846 l 4303 6851 l
+ 4289 6856 l 4276 6860 l 4262 6864 l 4250 6869 l 4237 6873 l
+ 4225 6876 l 4213 6880 l 4202 6883 l 4191 6886 l 4179 6890 l
+ 4167 6893 l 4154 6897 l 4140 6901 l 4126 6905 l 4111 6908 l
+ 4096 6912 l 4081 6916 l 4067 6919 l 4052 6923 l 4038 6926 l
+ 4023 6930 l 4008 6933 l 3992 6936 l 3976 6939 l 3959 6943 l
+ 3941 6946 l 3922 6950 l 3903 6953 l 3884 6957 l 3865 6960 l
+ 3846 6963 l 3829 6965 l 3812 6968 l 3795 6970 l 3780 6973 l
+ 3764 6974 l 3748 6976 l 3732 6978 l 3716 6980 l 3700 6982 l
+ 3683 6983 l 3666 6985 l 3649 6986 l 3633 6987 l 3617 6988 l
+ 3601 6989 l 3587 6990 l 3572 6991 l 3558 6992 l 3544 6993 l
+ 3529 6994 l 3514 6994 l 3498 6995 l 3481 6996 l 3463 6997 l
+ 3445 6997 l 3426 6998 l 3407 6999 l 3388 7000 l 3369 7000 l
+ 3350 7001 l 3331 7001 l 3312 7002 l 3296 7002 l 3280 7003 l
+ 3263 7003 l 3245 7004 l 3226 7004 l 3207 7005 l 3187 7005 l
+ 3167 7006 l 3146 7006 l 3125 7006 l 3104 7006 l 3084 7007 l
+ 3064 7007 l 3044 7007 l 3025 7007 l 3007 7007 l 2989 7007 l
+ 2972 7007 l 2953 7006 l 2934 7006 l 2915 7005 l 2895 7005 l
+ 2875 7004 l 2856 7003 l 2836 7002 l 2817 7001 l 2798 7000 l
+ 2780 6999 l 2763 6997 l 2746 6996 l 2731 6995 l 2717 6993 l
+ 2703 6992 l 2691 6991 l 2674 6988 l 2658 6986 l 2643 6984 l
+ 2628 6982 l 2613 6979 l 2598 6976 l 2584 6973 l 2571 6970 l
+ 2559 6967 l 2548 6965 l 2538 6962 l 2528 6959 l 2517 6956 l
+ 2505 6952 l 2493 6948 l 2482 6944 l 2470 6940 l 2459 6936 l
+ 2449 6932 l 2439 6928 l 2431 6924 l 2424 6920 l 2415 6915 l
+ 2406 6910 l 2398 6904 l 2390 6899 l 2382 6893 l 2375 6888 l
+ 2369 6883 l 2364 6878 l 2356 6872 l 2348 6866 l 2340 6860 l
+ 2332 6855 l 2325 6850 l 2320 6846 l 2316 6843 l 2312 6840 l
+ 2308 6838 l 2305 6836 l 2301 6835 l 2298 6835 l 2295 6836 l
+ 2292 6838 l 2287 6842 l 2282 6848 l 2276 6856 l 2271 6865 l
+ 2267 6874 l
+ cp gs col7 1.00 shd ef gr gs col0 s gr
+% Polyline
+n 3095 6246 m 3096 6246 l 3100 6246 l 3109 6246 l 3123 6247 l 3141 6248 l
+ 3159 6248 l 3177 6249 l 3193 6251 l 3207 6252 l 3220 6253 l
+ 3232 6255 l 3244 6257 l 3256 6260 l 3269 6263 l 3283 6266 l
+ 3299 6271 l 3317 6276 l 3337 6282 l 3358 6289 l 3378 6295 l
+ 3394 6301 l 3405 6304 l 3409 6306 l
+ 3410 6306 l gs col3 s gr
+% Polyline
+n 3599 6276 m 3600 6276 l 3605 6277 l 3616 6278 l 3633 6279 l 3654 6281 l
+ 3676 6283 l 3697 6285 l 3717 6287 l 3734 6289 l 3749 6291 l
+ 3763 6293 l 3777 6295 l 3791 6297 l 3805 6300 l 3821 6302 l
+ 3838 6306 l 3858 6309 l 3879 6314 l 3902 6318 l 3924 6323 l
+ 3942 6326 l 3953 6329 l 3958 6330 l
+ 3959 6330 l gs col3 s gr
+% Polyline
+15.000 slw
+n 4281 6302 m 4288 6296 l 4297 6291 l 4305 6287 l 4314 6283 l 4322 6281 l
+ 4330 6280 l 4337 6279 l 4344 6279 l 4352 6280 l 4359 6282 l
+ 4366 6284 l 4373 6287 l 4380 6290 l 4387 6294 l 4394 6300 l
+ 4401 6306 l 4408 6312 l 4414 6319 l 4420 6326 l 4426 6334 l
+ 4432 6343 l 4437 6353 l 4441 6363 l 4444 6373 l 4445 6380 l
+ 4446 6388 l 4447 6397 l 4447 6407 l 4446 6417 l 4445 6426 l
+ 4444 6435 l 4443 6444 l 4441 6452 l 4439 6461 l 4436 6470 l
+ 4433 6479 l 4430 6489 l 4426 6497 l 4422 6505 l 4418 6513 l
+ 4413 6519 l 4408 6526 l 4401 6533 l 4395 6540 l 4387 6546 l
+ 4380 6551 l 4373 6554 l 4366 6558 l 4357 6560 l 4346 6562 l
+ 4336 6562 l 4325 6561 l 4315 6559 l 4306 6557 l 4297 6554 l
+ 4288 6550 l 4279 6545 l 4271 6541 l 4263 6536 l 4257 6531 l
+ 4250 6526 l 4245 6521 l 4239 6516 l 4234 6510 l 4230 6504 l
+ 4227 6499 l 4224 6492 l 4221 6486 l 4219 6478 l 4218 6470 l
+ 4217 6462 l 4217 6454 l 4216 6446 l 4217 6437 l 4217 6428 l
+ 4218 6418 l 4220 6409 l 4221 6402 l 4223 6394 l 4224 6386 l
+ 4227 6378 l 4230 6370 l 4234 6361 l 4238 6354 l 4242 6347 l
+ 4246 6341 l 4251 6333 l 4257 6326 l 4263 6319 l 4269 6312 l
+ 4275 6306 l
+ cp gs col7 1.00 shd ef gr gs col0 s gr
+% Polyline
+30.000 slw
+n 3248 6546 m 3249 6546 l 3254 6546 l 3265 6547 l 3280 6548 l 3296 6550 l
+ 3312 6552 l 3326 6553 l 3338 6555 l 3349 6557 l 3359 6560 l
+ 3369 6562 l 3380 6566 l 3392 6570 l 3406 6576 l 3422 6582 l
+ 3438 6589 l 3453 6596 l 3464 6600 l 3469 6603 l
+ 3470 6603 l gs col3 s gr
+% Polyline
+n 3440 6504 m 3441 6504 l 3445 6504 l 3456 6504 l 3470 6504 l 3485 6504 l
+ 3500 6505 l 3513 6505 l 3525 6506 l 3535 6507 l 3545 6508 l
+ 3555 6510 l 3565 6512 l 3577 6515 l 3590 6518 l 3606 6523 l
+ 3622 6528 l 3637 6532 l 3647 6535 l 3652 6537 l
+ 3653 6537 l gs col3 s gr
+% Polyline
+n 3560 6402 m 3561 6402 l 3566 6403 l 3578 6404 l 3597 6405 l 3620 6407 l
+ 3644 6409 l 3666 6411 l 3686 6413 l 3704 6415 l 3720 6417 l
+ 3734 6419 l 3747 6421 l 3760 6423 l 3774 6425 l 3787 6428 l
+ 3803 6431 l 3819 6434 l 3838 6439 l 3857 6443 l 3875 6447 l
+ 3890 6451 l 3899 6453 l 3903 6454 l
+ 3904 6454 l gs col3 s gr
+% Polyline
+n 2861 6429 m 2863 6429 l 2866 6430 l 2872 6431 l 2881 6432 l 2887 6433 l
+ 2894 6434 l 2902 6435 l 2912 6437 l 2923 6439 l 2935 6442 l
+ 2947 6444 l 2959 6447 l 2971 6450 l 2983 6454 l 2993 6457 l
+ 3004 6460 l 3016 6464 l 3029 6469 l 3044 6474 l 3060 6480 l
+ 3078 6487 l 3095 6493 l 3109 6499 l 3117 6502 l 3121 6504 l
+
+ 3122 6504 l gs col3 s gr
+% Polyline
+n 2594 6492 m 2595 6492 l 2600 6492 l 2611 6493 l 2628 6493 l 2649 6494 l
+ 2671 6495 l 2692 6497 l 2712 6498 l 2729 6499 l 2745 6501 l
+ 2759 6502 l 2774 6504 l 2786 6506 l 2799 6508 l 2813 6511 l
+ 2828 6514 l 2845 6517 l 2864 6521 l 2884 6526 l 2906 6531 l
+ 2927 6536 l 2945 6540 l 2959 6543 l 2968 6545 l 2971 6546 l
+
+ 2972 6546 l gs col3 s gr
+% Polyline
+n 3023 6360 m 3024 6360 l 3028 6361 l 3037 6362 l 3052 6365 l 3070 6368 l
+ 3089 6371 l 3107 6374 l 3123 6377 l 3138 6380 l 3151 6383 l
+ 3163 6385 l 3175 6388 l 3187 6391 l 3200 6395 l 3213 6399 l
+ 3228 6403 l 3246 6409 l 3265 6415 l 3285 6421 l 3304 6428 l
+ 3320 6433 l 3330 6436 l 3334 6438 l
+ 3335 6438 l gs col3 s gr
+$F2psEnd
+rs
diff --git a/share/examples/BSD_daemon/beastie.fig b/share/examples/BSD_daemon/beastie.fig
new file mode 100644
index 0000000..1c156ca
--- /dev/null
+++ b/share/examples/BSD_daemon/beastie.fig
@@ -0,0 +1,269 @@
+#FIG 3.2
+# ----------------------------------------------------------------------------
+# "THE BEER-WARE LICENSE" (Revision 42):
+# <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
+# can do whatever you want with this stuff. If we meet some day, and you think
+# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+# ----------------------------------------------------------------------------
+#
+# $FreeBSD$
+#
+Landscape
+Center
+Inches
+A4
+100.00
+Single
+-2
+1200 2
+1 1 0 1 0 0 47 0 20 0.000 1 6.0388 2748 2543 130 238 2748 2543 2878 2305
+1 1 0 1 0 7 46 0 20 0.000 1 6.1087 2738 2495 55 105 2738 2495 2793 2495
+1 1 0 1 0 0 47 0 20 0.000 1 6.0388 3291 2663 179 279 3291 2663 3470 2384
+1 1 0 1 0 7 46 0 20 0.000 1 6.1087 3260 2603 55 105 3260 2603 3315 2603
+3 0 0 3 0 7 49 0 -1 0.000 0 0 0 16
+ 4102 4658 4050 4695 4005 4703 3933 4706 3881 4706 3821 4688
+ 3746 4658 3671 4601 3615 4556 3536 4515 3450 4481 3333 4463
+ 3228 4459 3127 4481 3086 4511 2981 4574
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
+3 1 0 3 0 20 50 0 20 0.000 0 0 0 18
+ 2628 4864 2636 4898 2666 4928 2696 4939 2745 4943 2782 4950
+ 2812 4943 2895 4928 2943 4894 2973 4860 3011 4804 3052 4751
+ 3078 4729 3078 4695 3067 4661 3052 4628 3030 4594 3003 4553
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000
+3 1 0 3 0 20 47 0 20 0.000 0 0 0 21
+ 2250 4691 2302 4766 2358 4819 2403 4856 2478 4868 2565 4871
+ 2640 4856 2726 4834 2778 4808 2835 4748 2910 4665 2970 4594
+ 3000 4538 2996 4474 2985 4399 2925 4346 2868 4313 2801 4290
+ 2733 4290 2673 4305 2632 4346
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000
+3 1 0 3 0 20 46 0 20 0.000 0 0 0 19
+ 2287 4215 2231 4238 2182 4264 2141 4305 2096 4391 2096 4455
+ 2092 4534 2122 4598 2208 4665 2272 4680 2377 4688 2460 4691
+ 2561 4643 2636 4571 2651 4511 2658 4459 2632 4361 2591 4305
+ 2505 4256
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000
+3 1 0 3 0 20 45 0 20 0.000 0 0 0 20
+ 2250 4088 2242 4054 2257 3986 2310 3938 2366 3908 2441 3893
+ 2508 3893 2568 3889 2621 3896 2670 3919 2741 3975 2763 4031
+ 2775 4099 2771 4200 2715 4260 2617 4290 2490 4294 2377 4283
+ 2302 4223 2253 4140
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000
+3 0 0 3 0 7 49 0 -1 0.000 0 0 0 22
+ 2940 2986 2861 2930 2771 2915 2677 2919 2595 2960 2546 3020
+ 2531 3106 2535 3185 2583 3260 2647 3305 2718 3335 2805 3342
+ 2880 3342 2955 3331 3007 3320 3045 3324 3093 3357 3165 3350
+ 3202 3339 3210 3279 3195 3211 3157 3181
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 0.000
+3 0 0 3 0 7 50 0 -1 0.000 0 0 0 8
+ 2891 5190 2947 5209 3000 5228 3056 5235 3101 5239 3146 5239
+ 3187 5239 3187 5235
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
+3 0 0 3 0 7 50 0 -1 0.000 0 0 0 8
+ 2876 5202 2951 5306 3015 5351 3108 5404 3176 5419 3240 5434
+ 3315 5438 3352 5434
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
+3 0 0 3 0 7 50 0 -1 0.000 0 0 0 14
+ 3161 5427 3326 5528 3416 5546 3540 5565 3637 5535 3753 5501
+ 3862 5464 4005 5449 4132 5434 4293 5359 4421 5303 4533 5258
+ 4597 5198 4661 5093
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 0.000
+3 1 0 3 0 31 48 0 20 0.000 0 0 0 22
+ 3851 5483 4050 5625 4166 5696 4278 5768 4372 5831 4413 5854
+ 4447 5850 4473 5835 4488 5813 4515 5779 4526 5749 4522 5704
+ 4503 5678 4462 5648 4413 5618 4331 5565 4252 5513 4211 5494
+ 4121 5426 4121 5426 3993 5445 3866 5464
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000
+3 1 0 3 0 13 51 0 20 0.000 0 0 0 55
+ 2291 6462 2420 6447 2549 6444 2672 6444 2774 6441 2849 6387
+ 2951 6357 3026 6321 3068 6294 3059 6210 3026 6153 2996 6063
+ 2981 5991 3017 5991 3077 6030 3113 6075 3179 6057 3251 6060
+ 3308 6063 3347 6096 3392 6150 3455 6132 3500 6135 3521 6186
+ 3536 6255 3539 6309 3563 6237 3593 6159 3629 6090 3692 6060
+ 3764 6054 3827 6069 3893 6111 3956 6159 3980 6204 3983 6156
+ 4022 6138 4109 6138 4199 6132 4283 6102 4346 6081 4421 6042
+ 4466 6144 4523 6264 4583 6402 4625 6546 4667 6663 4682 6717
+ 4520 6837 4004 7044 3467 7131 2816 7128 2456 7047 2246 6816
+ 2006 6510
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+3 1 0 3 0 7 49 0 20 0.000 0 0 0 13
+ 3168 2255 3315 2009 3424 1894 3629 1784 3784 1943 3806 2158
+ 3786 2470 3693 2773 3553 2975 3328 3070 3103 2971 3034 2731
+ 3043 2543
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000
+3 0 0 3 0 7 45 0 -1 0.000 0 0 0 7
+ 1481 6669 1601 6744 1744 6777 1919 6787 2111 6780 2363 6769
+ 2327 6771
+ 0.000 1.000 1.000 1.000 1.000 1.000 0.000
+3 1 0 3 0 7 44 0 20 0.000 0 0 0 36
+ 2294 6825 2258 6885 2252 6930 2252 6993 2258 7044 2288 7092
+ 2462 7179 2618 7215 2900 7233 3104 7242 3407 7254 3617 7236
+ 3926 7194 4094 7155 4280 7086 4505 6987 4637 6927 4676 6906
+ 4697 6861 4697 6822 4691 6783 4691 6738 4679 6669 4553 6741
+ 4358 6834 4220 6879 4037 6930 3770 6978 3560 6993 3338 7002
+ 2957 7011 2666 6993 2522 6960 2414 6921 2363 6876 2315 6843
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000
+3 1 0 3 0 7 49 0 20 0.000 0 0 0 21
+ 2504 6663 2474 6609 2408 6552 2339 6501 2243 6477 2138 6471
+ 2006 6480 1874 6510 1669 6567 1475 6654 1418 6711 1397 6762
+ 1412 6843 1445 6921 1523 6978 1637 7017 1781 7029 1946 7032
+ 2069 7038 2177 7038 2321 7038
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 3
+ 3599 6276 3776 6291 3959 6330
+ 0.000 1.000 0.000
+3 1 0 2 0 7 43 0 20 0.000 0 0 0 14
+ 4232 6357 4280 6294 4331 6276 4373 6282 4415 6315 4451 6369
+ 4445 6444 4424 6516 4367 6567 4304 6561 4253 6531 4223 6501
+ 4214 6456 4220 6399
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000
+3 0 0 3 0 7 45 0 -1 0.000 0 0 0 7
+ 3533 6267 3542 6357 3524 6399 3491 6435 3428 6459 3309 6482
+ 3059 6582
+ 0.000 1.000 1.000 1.000 1.000 1.000 0.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 3
+ 3440 6504 3544 6502 3653 6537
+ 0.000 1.000 0.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 3
+ 3248 6546 3359 6552 3470 6603
+ 0.000 1.000 0.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 3
+ 3560 6402 3755 6417 3904 6454
+ 0.000 1.000 0.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 4
+ 2861 6429 2861 6429 2979 6447 3122 6504
+ 0.000 1.000 1.000 0.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 3
+ 2594 6492 2769 6497 2972 6546
+ 0.000 1.000 0.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 3
+ 3023 6360 3173 6383 3335 6438
+ 0.000 1.000 0.000
+3 0 0 3 0 7 45 0 -1 0.000 0 0 0 8
+ 3983 6181 3998 6342 4001 6447 3971 6504 3887 6528 3758 6567
+ 3599 6588 3339 6707
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
+3 0 0 3 3 7 43 0 -1 0.000 0 0 0 3
+ 3095 6246 3240 6248 3410 6306
+ 0.000 1.000 0.000
+3 1 0 3 0 7 46 0 20 0.000 0 0 0 17
+ 2291 6976 2265 6844 2375 6738 2450 6702 2561 6645 2666 6612
+ 2795 6588 2915 6579 3029 6585 3152 6612 3239 6645 3320 6705
+ 3389 6786 3422 6876 3440 6984 3437 7056 2957 7152
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000
+3 0 0 4 0 7 49 0 -1 0.000 0 0 0 18
+ 2498 3459 2578 3459 2613 3489 2673 3554 2728 3614 2793 3669
+ 2853 3739 2948 3799 3053 3854 3173 3879 3328 3884 3453 3864
+ 3583 3799 3688 3749 3818 3669 3858 3614 3943 3609 3983 3609
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 0.000
+3 1 0 3 0 7 49 0 20 0.000 0 0 0 17
+ 2786 2845 2877 2727 2925 2661 3009 2376 3075 2175 3131 2050
+ 3174 1929 3192 1869 3114 1746 2940 1824 2871 1890 2712 2103
+ 2598 2340 2562 2427 2538 2709 2616 2814 2679 2850
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000
+3 1 0 3 0 20 52 0 20 0.000 0 0 0 142
+ 2136 3087 2170 2963 2229 2861 2391 2682 2418 2498 2498 2228
+ 2476 2126 2452 2000 2401 1725 2407 1577 2476 1395 2483 1365
+ 2719 1094 2978 878 3235 725 3394 659 3490 731 3394 806
+ 3277 932 3166 1080 3112 1163 3103 1253 3112 1364 3151 1425
+ 3235 1418 3397 1334 3616 1277 3871 1265 4150 1298 4628 1478
+ 4793 1646 4861 1725 5006 1706 5273 1568 5288 1490 5281 1223
+ 5141 998 5101 908 5189 866 5326 893 5465 1010 5708 1328
+ 5789 1577 5836 1830 5765 2093 5513 2438 5207 2654 5056 2760
+ 5078 2729 5072 3058 4988 3368 4829 3607 4565 3850 4502 3970
+ 4486 4088 4511 4213 4589 4330 4643 4455 4679 4633 4688 4958
+ 4667 5107 4607 5230 4613 5344 4733 5685 4928 5985 5221 6195
+ 5570 6348 5993 6443 6480 6542 6773 6623 6966 6698 7141 6825
+ 7206 6977 7208 7110 7062 7250 6923 7320 6513 7397 6481 7403
+ 6518 7493 6468 7502 6120 7505 5571 7526 5298 7547 5241 7532
+ 5298 7487 5958 7130 6174 6998 6249 6935 6291 6995 6342 7076
+ 6368 7155 6408 7205 6608 7170 6756 7115 6878 7035 6873 6959
+ 6750 6851 6543 6779 5985 6713 5568 6632 5271 6554 5003 6462
+ 4821 6389 4673 6278 4545 6194 4431 6068 4371 6089 3675 6375
+ 3016 5993 2997 5942 2859 5732 2802 5591 2798 5438 2820 5318
+ 2873 5220 2883 5186 2856 5153 2778 5075 2768 4988 2791 4943
+ 2701 4943 2661 4925 2633 4883 2577 4868 2273 4422 2457 4299
+ 2763 4274 3001 4305 3128 4328 3203 4230 3216 4124 3173 4028
+ 3081 3995 2986 3945 2880 3851 2733 3770 2634 3698 2493 3665
+ 2334 3566 2221 3413 2166 3323 2133 3179
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000
+3 0 0 3 0 7 49 0 -1 0.000 0 0 0 5
+ 3489 1649 3649 1554 3825 1575 3953 1675 4005 1902
+ 0.000 1.000 1.000 1.000 0.000
+3 0 0 3 0 7 49 0 -1 0.000 0 0 0 10
+ 3278 1680 3254 1569 3149 1539 3009 1544 2883 1665 2696 1865
+ 2564 2129 2505 2334 2441 2484 2379 2670
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 0.000
+3 0 0 3 0 31 51 0 20 0.000 0 0 0 71
+ 2452 4170 2238 4009 2122 3911 2078 3867 2096 3836 2128 3795
+ 2148 3725 2153 3675 2151 3587 2131 3510 2101 3423 2013 3341
+ 1954 3332 2041 3258 1914 3207 1843 3180 1773 3140 1668 3097
+ 1557 3040 1621 3132 1671 3192 1718 3287 1753 3350 1783 3475
+ 1836 3430 1891 3385 1943 3442 2003 3515 2021 3595 2023 3642
+ 2006 3702 1953 3735 1921 3767 1873 3730 1833 3695 1791 3665
+ 1738 3622 1669 3576 1731 3501 1731 3474 1529 3466 1222 3248
+ 1344 3469 1433 3645 1446 3735 1468 3765 1503 3740 1563 3675
+ 1616 3722 1703 3792 1758 3842 1786 3927 1718 3977 1518 4045
+ 1229 3950 1297 3894 1364 3856 1357 3792 1147 3759 903 3564
+ 884 3646 1008 3875 1218 4119 1413 4179 1641 4200 1796 4130
+ 1926 4060 1956 4027 2076 4125 2216 4253 2332 4339
+ 0.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
+ 1.000 1.000 1.000 1.000 1.000 1.000 0.000
diff --git a/share/examples/BSD_daemon/eps.patch b/share/examples/BSD_daemon/eps.patch
new file mode 100644
index 0000000..9849214
--- /dev/null
+++ b/share/examples/BSD_daemon/eps.patch
@@ -0,0 +1,36 @@
+# $FreeBSD$
+--- beastie.eps.ref Sun Feb 11 22:46:59 2001
++++ beastie.eps Sun Feb 11 23:01:43 2001
+@@ -19,6 +19,23 @@
+ %
+ /$F2psDict 200 dict def
+ $F2psDict begin
++
++% This controls the linethickness. I think large posters look better if
++% you use a value of 2. Small daemons looks better with a value of 1.
++/linethickness 1 def
++
++% If you want to fiddle the colors:
++% col0 below is black (the lines)
++% col3 below is cyan (the shoelaces)
++% col7 below is white (eyes, shoes)
++% col13 below is green (the shooes)
++% col20 below is red (the daemon)
++% col31 below is gold (the pitchfork)
++
++% This sets round ends on the lines, this looks better than sharp edges
++% but I have not found a way to convince xfig to do this.
++1 setlinecap
++
+ $F2psDict /mtrx matrix put
+ /col-1 {0 setgray} bind def
+ /col0 {0.000 0.000 0.000 srgb} bind def
+@@ -74,7 +91,7 @@
+ /sh {show} bind def
+ /slc {setlinecap} bind def
+ /slj {setlinejoin} bind def
+-/slw {setlinewidth} bind def
++/slw {linethickness mul setlinewidth} bind def
+ /srgb {setrgbcolor} bind def
+ /rot {rotate} bind def
+ /sc {scale} bind def
diff --git a/share/examples/BSD_daemon/poster.sh b/share/examples/BSD_daemon/poster.sh
new file mode 100644
index 0000000..1407701
--- /dev/null
+++ b/share/examples/BSD_daemon/poster.sh
@@ -0,0 +1,65 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# "THE BEER-WARE LICENSE" (Revision 42):
+# <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
+# can do whatever you want with this stuff. If we meet some day, and you think
+# this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+# ----------------------------------------------------------------------------
+#
+# $FreeBSD$
+#
+
+echo '%!'
+echo '/beastie {'
+cat beastie.eps
+echo '} def'
+cat FreeBSD.pfa
+
+echo '
+
+/mm {25.4 div 72 mul} def
+/FreeBSD findfont 120 scalefont setfont
+/center 210 mm 2 div def
+/top 297 mm def
+/cshow { dup stringwidth pop 2 div neg 0 rmoveto show } def
+
+% "FreeBSD" across the top.
+% 691 is "top - height of caps - (left - X("F"))"
+center 691 moveto
+(FreeBSD) cshow
+
+% Put beastie in the center
+/sc 1.25 def
+center 125 moveto
+384 sc mul 2 div neg 0 rmoveto
+gsave currentpoint translate sc sc scale beastie grestore
+
+% A box for the bottom text
+gsave
+10 30 moveto
+210 mm 20 sub 0 rlineto
+0 70 rlineto
+210 mm 20 sub neg 0 rlineto
+closepath
+.7 .7 .9 setrgbcolor
+fill
+grestore
+
+% Bottom text
+center 90 moveto
+/FreeBSD findfont 50 scalefont setfont
+
+center 50 moveto
+(http://www.FreeBSD.org) cshow
+
+% Do not forget Kirks copyright string.
+10 105 moveto
+/Times-Roman findfont 8 scalefont setfont
+(BSD Daemon ) show
+/Symbol findfont 8 scalefont setfont
+(\343 ) show
+/Times-Roman findfont 8 scalefont setfont
+(Copyright 1988 by Marshall Kirk McKusick. All Rights Reserved.) show
+
+showpage
+'
diff --git a/share/examples/FreeBSD_version/FreeBSD_version.c b/share/examples/FreeBSD_version/FreeBSD_version.c
new file mode 100644
index 0000000..036a5ae
--- /dev/null
+++ b/share/examples/FreeBSD_version/FreeBSD_version.c
@@ -0,0 +1,21 @@
+/* $FreeBSD$ */
+#if __FreeBSD__ == 0 /* 1.0 did not define __FreeBSD__ */
+#define __FreeBSD_version 199401
+#elif __FreeBSD__ == 1 /* 1.1 defined it to be 1 */
+#define __FreeBSD_version 199405
+#else /* 2.0 and higher define it to be 2 */
+#include <osreldate.h> /* and this works */
+#endif
+#include <stdio.h>
+#include <unistd.h>
+
+int
+main(void) {
+ printf("Compilation release date: %d\n", __FreeBSD_version);
+#if __FreeBSD_version >= 199408
+ printf("Execution environment release date: %d\n", getosreldate());
+#else
+ printf("Execution environment release date: can't tell\n");
+#endif
+ return (0);
+}
diff --git a/share/examples/FreeBSD_version/Makefile b/share/examples/FreeBSD_version/Makefile
new file mode 100644
index 0000000..fcfc6b3
--- /dev/null
+++ b/share/examples/FreeBSD_version/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG= FreeBSD_version
+NO_MAN=
+
+install:
+
+.include <bsd.prog.mk>
diff --git a/share/examples/FreeBSD_version/README b/share/examples/FreeBSD_version/README
new file mode 100644
index 0000000..acf9eb1
--- /dev/null
+++ b/share/examples/FreeBSD_version/README
@@ -0,0 +1,4 @@
+This is an example of how to determine the version of FreeBSD that
+a program was compiled on, and maybe running on (if 2.0 or better).
+
+This program is in the public domain.
diff --git a/share/examples/IPv6/USAGE b/share/examples/IPv6/USAGE
new file mode 100644
index 0000000..7e40f76
--- /dev/null
+++ b/share/examples/IPv6/USAGE
@@ -0,0 +1,529 @@
+ USAGE
+ KAME Project
+ $KAME: USAGE,v 1.33 2000/11/22 10:22:57 itojun Exp $
+ $FreeBSD$
+
+This is an introduction of how to use the commands provided in the KAME
+kit. For more information, please refer to each man page.
+
+
+<<<ifconfig>>>
+
+A link-local address is automatically assigned to each interface, when
+the interface becomes up for the first time. Even if you find an interface
+without a link-local address, do not panic. The link-local address will be
+assigned when it becomes up (with "ifconfig IF up").
+
+If you do not see a link-local address assigned to an interface on "ifconfig
+up", the interface does not support IPv6 for some reasons - for example,
+if the interface does not support link-layer multicast (IFF_MULTICAST is not
+set), the interface cannot be used for IPv6.
+
+Some network drivers allow an interface to become up even without a
+hardware address (for example, PCMCIA network cards). In such cases, it is
+possible that an interface has no link-local address even if the
+interface is up. If you see such situation, please disable the
+interface once and then re-enable it (i.e. do `ifconfig IF down;
+ifconfig IF up').
+
+Pseudo interfaces (like "gif" tunnel device) will borrow IPv6
+interface identifier (lowermost 64bit of the address) from
+EUI64/IEEE802 sources, like ethernet cards. Pseudo interfaces will be
+able to get an IPv6 link-local address, if you have other "real"
+interface configured beforehand. If you have no EUI64/IEEE802 sources
+on the node, we have last-resort code in the kernel, which generates
+interface identifier from MD5(hostname). MD5(hostname) may not be suitable
+for your usage (for example, if you configure same hostname on both sides of
+gif tunnel, you will be doomed), and if so, you may need to configure
+link-local address manually.
+See RFC2472 for more discussion on how to generate an interface ID for
+pseudo interfaces.
+
+If you have a router announcing Router Advertisement,
+global addresses will be assigned automatically. So, neither
+"ifconfig" nor "prefix" is necessary for your *host* (non-router node).
+(Please refer to "sysctl" section for configuring a host to accept
+Router Advertisement.)
+
+If you want to set up a router, you need to assign global addresses
+for two or more interfaces by "ifconfig" or "prefix" (prefix command
+is described at next section).
+If you want to assign a global address by "ifconfig", don't forget to
+specify the "alias" argument to keep the link-local address.
+
+# ifconfig de0 inet6 3ffe:501:808:1:200:f8ff:fe01:6317 prefixlen 64 alias
+# ifconfig de0
+de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::200:f8ff:fe01:6317%de0 prefixlen 64 scopeid 0x1
+ inet 163.221.202.12 netmask 0xffffff00 broadcast 163.221.202.255
+ inet6 3ffe:501:808:1:200:f8ff:fe01:6317 prefixlen 64
+ ether 00:00:f8:01:63:17
+ media: 100baseTX status: active
+
+See also "/etc/rc.network6" for actual examples.
+
+<<prefix>>
+
+In the IPv6 architecture, an IPv6 address of an interface can be
+generated from a prefix assigned to the interface, and a
+link-dependent identifier for the interface. So assigning a full IPv6
+address by ifconfig is not necessary anymore, because user can only
+take care of prefix, by letting system take care of interface
+identifier.
+
+The newly added "prefix" command enables user to just assign prefixes
+for interfaces, and let your system automatically generate IPv6
+addresses. Prefixes added by the "prefix" command is maintained in
+the kernel consistently with prefixes assigned by Router
+Advertisement (in case of hosts) and with prefixes assigned by Router
+Renumbering (in case of routers). Manual assignment of prefixes or
+change of prefix properties take precedence over ones assigned by
+Router Advertisement or Router Renumbering.
+
+prefix command works only on routers.
+
+If you want to assign a prefix (and consequently address) manually, do
+as follows:
+
+# ifconfig de0
+de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::200:f8ff:fe01:6317%de0 prefixlen 64 scopeid 0x1
+ inet 163.221.202.12 netmask 0xffffff00 broadcast 163.221.202.255
+ ether 00:00:f8:01:63:17
+ media: 100baseTX status: active
+# prefix de0 3ffe:501:808:1::
+# ifconfig de0
+de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::200:f8ff:fe01:6317%de0 prefixlen 64 scopeid 0x1
+ inet 163.221.202.12 netmask 0xffffff00 broadcast 163.221.202.255
+ inet6 3ffe:501:808:1:200:f8ff:fe01:6317 prefixlen 64
+ ether 00:00:f8:01:63:17
+ media: 100baseTX status: active
+
+To check assigned prefix, use the "ndp" command (See description of
+ndp command about its usage).
+
+# ndp -p
+3ffe:501:808:1::/64 if=de0
+ flags=LA, vltime=2592000, pltime=604800, expire=Never, origin=RR
+ No advertising router
+
+The "prefix" command also has node internal prefix renumbering
+ability.
+
+If you have multiple prefixes which have 3ffe:501:808:/48 at the top,
+and would like to renumber them to 3ffe:501:4819:/48, then use the
+"prefix" command with the "matchpr" argument and the "usepr" argument.
+
+Suppose that current state of before renumbering as follows:
+
+# ifconfig de0
+de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::200:f8ff:fe01:6317%de0 prefixlen 64 scopeid 0x1
+ inet 163.221.202.12 netmask 0xffffff00 broadcast 163.221.202.255
+ inet6 3ffe:501:808:1:200:f8ff:fe01:6317 prefixlen 64
+ ether 00:00:f8:01:63:17
+ media: 100baseTX status: active
+# ifconfig de1
+de1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::200:f8ff:fe55:7011%de1 prefixlen 64 scopeid 0x2
+ inet 163.221.203.12 netmask 0xffffff00 broadcast 163.221.203.255
+ inet6 3ffe:501:808:2:200:f8ff:fe55:7011 prefixlen 64
+ ether 00:00:f8:55:70:11
+ media: 100baseTX status: active
+# ndp -p
+3ffe:501:808:1::/64 if=de0
+ flags=LA, vltime=2592000, pltime=604800, expire=Never, origin=RR
+ No advertising router
+3ffe:501:808:2::/64 if=de1
+ flags=LA, vltime=2592000, pltime=604800, expire=Never, origin=RR
+ No advertising router
+
+Then do as follows:
+
+# prefix -a matchpr 3ffe:501:808:: mp_len 48 usepr 3ffe:501:4819:: up_uselen 48 change
+
+If command is successful, prefixes and addresses will be renumbered as
+follows.
+
+# ifconfig de0
+de0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::200:f8ff:fe01:6317%de0 prefixlen 64 scopeid 0x1
+ inet 163.221.202.12 netmask 0xffffff00 broadcast 163.221.202.255
+ inet6 3ffe:501:4819:1:200:f8ff:fe01:6317 prefixlen 64
+ ether 00:00:f8:01:63:17
+ media: 100baseTX status: active
+# ifconfig de1
+de1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
+ inet6 fe80::200:f8ff:fe55:7011%de0 prefixlen 64 scopeid 0x2
+ inet 163.221.203.12 netmask 0xffffff00 broadcast 163.221.203.255
+ inet6 3ffe:501:4819:2:200:f8ff:fe55:7011 prefixlen 64
+ ether 00:00:f8:55:70:11
+ media: 100baseTX status: active
+# ndp -p
+3ffe:501:4819:1::/64 if=de0
+ flags=LA, vltime=2592000, pltime=604800, expire=Never, origin=RR
+ No advertising router
+3ffe:501:4819:2::/64 if=de1
+ flags=LA, vltime=2592000, pltime=604800, expire=Never, origin=RR
+ No advertising router
+
+See also "/etc/rc.network6" for actual examples.
+
+
+<<<route>>>
+
+If there is a router announcing Router Advertisement on a subnet,
+you need not to add a default route for your host by hand
+(Please refer to "sysctl" section to accept Router Advertisement).
+
+If you want to add a default route manually, do like:
+
+# route add -inet6 default fe80::200:a2ff:fe0e:7543%ed0
+
+"default" means ::/0. In other cases, if "prefixlen" is omitted, 64
+is assumed for "prefixlen" to get along with the aggregatable address.
+
+Note that, in IPv6, a link-local address should be used as gateway
+("fe80::200:a2ff:fe0e:7543%ed0" in the above). If you use global addresses,
+ICMPv6 redirect will not work properly. Also note that we use a special form
+of link-local address as gateway. See Section 1.3 of IMPLEMENTATION for
+more details.
+For ease of configuration we recommend you to avoid static routes and run
+a routing daemon (route6d for example) instead.
+
+
+<<<ping6>>>
+
+Reachability can be checked by "ping6". This "ping6" allows multicast
+for its argument.
+
+% ping6 -n -I ed0 ff02::1
+
+PING6(56=40+8+8 bytes) fe80::5254:ff:feda:cb7d --> ff02::1%ed0
+56 bytes from fe80::5254:ff:feda:cb7d%lo0, icmp_seq=0 hlim=64 time=0.25 ms
+56 bytes from fe80::2a0:c9ff:fe84:ed6c%ed0, icmp_seq=0 hlim=64 time=1.333 ms(DUP!)
+56 bytes from fe80::5254:ff:feda:d161%ed0, icmp_seq=0 hlim=64 time=1.459 ms(DUP!)
+56 bytes from fe80::260:97ff:fec2:80bf%ed0, icmp_seq=0 hlim=64 time=1.538 ms(DUP!)
+56 bytes from 3ffe:501:4819:2000:5054:ff:fedb:aa46, icmp_seq=0 hlim=255 time=1.615 ms(DUP!)
+
+
+<<<ping6 -w>>>
+
+Name resolution is possible by ICMPv6 node information query message.
+This is very convenient for link-local addresses whose host name cannot be
+resolved by DNS. Specify the "-w" option to "ping6".
+
+% ping6 -n -I ed0 -w ff02::1
+
+64 bytes from fe80::5254:ff:feda:cb7d%lo0: fto.kame.net
+67 bytes from fe80::5254:ff:feda:d161%ed0: banana.kame.net
+69 bytes from fe80::2a0:c9ff:fe84:ebd9%ed0: paradise.kame.net
+66 bytes from fe80::260:8ff:fe8b:447f%ed0: taroh.kame.net
+66 bytes from fe80::2a0:c9ff:fe84:ed6c%ed0: ayame.kame.net
+
+
+<<<traceroute6>>>
+
+The route for a target host can be checked by "traceroute6".
+
+% traceroute6 tokyo.v6.wide.ad.jp
+
+traceroute to tokyo.v6.wide.ad.jp (3ffe:501:0:401:200:e8ff:fed5:8923), 30 hops max, 12 byte packets
+ 1 nr60.v6.kame.net 1.239 ms 0.924 ms 0.908 ms
+ 2 otemachi.v6.wide.ad.jp 28.953 ms 31.451 ms 26.567 ms
+ 3 tokyo.v6.wide.ad.jp 26.549 ms 26.58 ms 26.186 ms
+
+If the -l option is specified, both address and name are shown in each line.
+% traceroute6 -l tokyo.v6.wide.ad.jp
+
+traceroute to tokyo.v6.wide.ad.jp (3ffe:501:0:401:200:e8ff:fed5:8923), 30 hops max, 12 byte packets
+ 1 nr60.v6.kame.net (3ffe:501:4819:2000:260:97ff:fec2:80bf) 1.23 ms 0.952 ms 0.92 ms
+ 2 otemachi.v6.wide.ad.jp (3ffe:501:0:1802:260:97ff:feb6:7ff0) 27.345 ms 26.706 ms 26.563 ms
+ 3 tokyo.v6.wide.ad.jp (3ffe:501:0:401:200:e8ff:fed5:8923) 26.329 ms 26.36 ms 28.63 ms
+
+
+<<<ndp>>>
+
+To display the current Neighbor cache, use "ndp":
+
+% ndp -a
+Neighbor Linklayer Address Netif Expire St Flgs Prbs
+nr60.v6.kame.net 0:60:97:c2:80:bf ed0 expired S R
+3ffe:501:4819:2000:2c0:cff:fe 0:c0:c:10:3a:53 ed0 permanent R
+paradise.v6.kame.net 52:54:0:dc:52:17 ed0 expired S R
+fe80::200:eff:fe49:f929%ed0 0:0:e:49:f9:29 ed0 expired S R
+fe80::200:86ff:fe05:80da%ed0 0:0:86:5:80:da ed0 expired S
+fe80::200:86ff:fe05:c2d8%ed0 0:0:86:5:c2:d8 ed0 9s R
+
+To flush all of the NDP cache entries, execute the following as root.
+
+# ndp -c
+
+To display the prefix list:
+
+% ndp -p
+3ffe:501:4819:2000::/64 if=ed0
+ flags=LA, vltime=2592000, pltime=604800, expire=29d23h59m58s, origin=RA
+ advertised by
+ fe80::5254:ff:fedc:5217%ed0 (reachable)
+ fe80::260:97ff:fec2:80bf%ed0 (reachable)
+ fe80::200:eff:fe49:f929%ed0 (no neighbor state)
+
+To display the default router list:
+
+% ndp -r
+fe80::260:97ff:fec2:80bf if=ed0, flags=, expire=29m55s
+fe80::5254:ff:fedc:5217 if=ed0, flags=, expire=29m7s
+fe80::200:eff:fe49:f929 if=ed0, flags=, expire=28m47s
+
+
+<<<rtsol>>>
+
+To generate a Router Solicitation message right now to get global
+addresses, use "rtsol".
+
+# ifconfig ef0
+ef0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST>
+ link type ether 0:a0:24:ab:83:9b mtu 1500 speed 10Mbps
+ media 10baseT status active
+ inet6 fe80::2a0:24ff:feab:839b%ef0 prefixlen 64 scopeid 0x2
+# rtsol ef0
+# ifconfig ef0
+ef0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST>
+ link type ether 0:a0:24:ab:83:9b mtu 1500 speed 10Mbps
+ media 10baseT status active
+ inet6 fe80::2a0:24ff:feab:839b%ef0 prefixlen 64 scopeid 0x2
+ inet6 3ffe:501:4819:2000:2a0:24ff:feab:839b prefixlen 64
+
+
+<<<rtsold>>>
+
+rtsold is a daemon version of rtsol. If you run KAME IPv6 on a laptop
+computer and frequently move with it, the daemon is useful since it watches
+the interface and sends router solicitations when the status of the interface
+changes. Note, however, that the feature is disabled by default. Please
+add -m option when invocation of rtsold.
+
+rtsold also supports multiple interfaces. For example, you can
+invoke the daemon as follows:
+
+# rtsold -m ep0 cnw0
+
+
+<<<netstat>>>
+
+To see routing table:
+
+# netstat -nr
+# netstat -nrl
+ long format with Ref and Use. Note that bsdi4 does not support the
+ -l option. You should use the -O option instead.
+
+
+<<<sysctl>>>
+
+If "net.inet6.ip6.accept_rtadv" is 1, Router Advertisement is
+accepted. This means that global addresses and default route are
+automatically set up. Otherwise, the announcement is rejected. The
+default value is 0. To set "net.inet6.ip6.accept_rtadv" to 1, execute
+as follows:
+
+# sysctl net.inet6.ip6.accept_rtadv=1
+
+
+<<<gifconfig>>>
+
+"gif" interface enables you to perform IPv{4,6} over IPv{4,6}
+protocol tunneling. To use this interface, you must specify the
+outer IPv{4,6} address by using gifconfig, like:
+
+# gifconfig gif0 163.221.198.61 163.221.11.21
+
+"ifconfig gif0" will configure the address pair used for inner
+IPv{4,6} header.
+
+It is not required to configure inner IPv{4,6} address pair. If
+you do not configure inner IPv{4,6} address pair, tunnel link is
+considered as un-numbered link and the source address of inner
+IPv{4,6} address pair will be borrowed from other interfaces.
+
+The following example configures un-numbered IPv6-over-IPv4 tunnel:
+# gifconfig gif0 10.0.0.1 10.0.0.1 netmask 255.255.255.0
+
+The following example configures numbered IPv6-over-IPv4 tunnel:
+# gifconfig gif0 10.0.0.1 10.0.0.1 netmask 255.255.255.0
+# ifconfig gif0 inet6 3ffe:501:808:5::1 3ffe:501:808:5::2 prefixlen 64 alias
+
+IPv6 spec allows you to use point-to-point link without global IPv6
+address assigned to the interface. Routing protocol (such as RIPng)
+uses link-local addresses only. If you are to configure IPv6-over-IPv4
+tunnel, you need not to configure an address pair for inner IPv6
+header. We suggest you to use the former example (un-numbered
+IPv6-over-IPv4 tunnel) to connect to 6bone for simplicity.
+
+Note that it is so easy to make an infinite routing loop using gif
+interface, if you configure a tunnel using the same protocol family
+for inner and outer header (i.e. IPv4-over-IPv4).
+
+Refer to gifconfig(8) for more details.
+
+
+<<<6to4>>>
+
+WARNING: malicious party can abuse 6to4 relay routers/sites, read through
+internet draft draft-itojun-ipv6-transition-abuse-xx.txt before configuring it.
+
+"stf" interface enables you to perform 6to4 IPv6-over-IPv4 encapsulation,
+as documented in draft-ietf-ngtrans-6to4-06.txt. See stf(4) for details.
+
+
+<<<inetd>>>
+
+Inetd supports AF_INET and AF_INET6 sockets, with IPsec policy
+configuration support.
+
+Refer to inetd(8) for more details.
+
+
+<<<IPsec>>>
+
+IPsec requires fairly complex configuration, so here we show transport
+mode only. http://www.kame.net/newsletter/ has more comprehensive
+examples.
+
+Let us setup security association to deploy a secure channel between
+HOST A (10.2.3.4) and HOST B (10.6.7.8). Here we show a little
+complicated example. From HOST A to HOST B, only old AH is used.
+From HOST B to HOST A, new AH and new ESP are combined.
+
+Now we should choose algorithm to be used corresponding to "AH"/"new
+AH"/"ESP"/"new ESP". Please refer to the "setkey" man page to know
+algorithm names. Our choice is MD5 for AH, new-HMAC-SHA1 for new AH,
+and new-DES-expIV with 8 byte IV for new ESP.
+
+Key length highly depends on each algorithm. For example, key
+length must be equal to 16 bytes for MD5, 20 for new-HMAC-SHA1,
+and 8 for new-DES-expIV. Now we choose "MYSECRETMYSECRET",
+"KAMEKAMEKAMEKAMEKAME", "PASSWORD", respectively.
+
+OK, let us assign SPI (Security Parameter Index) for each protocol.
+Please note that we need 3 SPIs for this secure channel since three
+security headers are produced (one for from HOST A to HOST B, two for
+from HOST B to HOST A). Please also note that SPI MUST be greater
+than or equal to 256. We choose, 1000, 2000, and 3000, respectively.
+
+
+ (1)
+ HOST A ------> HOST B
+
+ (1)PROTO=AH
+ ALG=MD5(RFC1826)
+ KEY=MYSECRETMYSECRET
+ SPI=1000
+
+ (2.1)
+ HOST A <------ HOST B
+ <------
+ (2.2)
+
+ (2.1)
+ PROTO=AH
+ ALG=new-HMAC-SHA1(new AH)
+ KEY=KAMEKAMEKAMEKAMEKAME
+ SPI=2000
+
+ (2.2)
+ PROTO=ESP
+ ALG=new-DES-expIV(new ESP)
+ IV length = 8
+ KEY=PASSWORD
+ SPI=3000
+
+Now, let us setup security association. Execute "setkey" on both HOST
+A and B:
+
+# setkey -c
+add 10.2.3.4 10.6.7.8 ah 1000 -m transport -A keyed-md5 "MYSECRETMYSECRET" ;
+add 10.6.7.8 10.2.3.4 ah 2000 -m transport -A hmac-sha1 "KAMEKAMEKAMEKAMEKAME" ;
+add 10.6.7.8 10.2.3.4 esp 3000 -m transport -E des-cbc "PASSWORD" ;
+^D
+
+Actually, IPsec communication doesn't process until security policy
+entries will be defined. In this case, you must setup each host.
+
+At A:
+# setkey -c
+spdadd 10.2.3.4 10.6.7.8 any -P out ipsec
+ ah/transport/10.2.3.4-10.6.7.8/require ;
+^D
+
+At B:
+spdadd 10.6.7.8 10.2.3.4 any -P out ipsec
+ esp/transport//require
+ ah/transport//require ;
+^D
+
+To utilize the security associations installed into the kernel, you
+must set the socket security level by using setsockopt().
+This is per-application (or per-socket) security. For example,
+the "ping" command has the -P option with parameter to enable AH and/or ESP.
+
+For example:
+% ping -P "out ipsec \
+ ah/transport//use \
+ esp/tunnel/10.0.1.1-10.0.1.2/require" 10.0.2.2
+
+If there are proper SAs, this policy specification causes ICMP packet
+to be AH transport mode inner ESP tunnel mode like below.
+
+ HOST C -----------> GATEWAY D ----------> HOST E
+ 10.0.1.1 10.0.1.2 10.0.2.1 10.0.2.2
+ | | | |
+ | ======= ESP ======= |
+ ==================== AH ==================
+
+
+<<<EDNS0>>>
+
+EDNS0 is defined in RFC2671. With EDNS0, the resolver library can tell DNS
+server of its receiving buffer size, and permit DNS server to transmit large
+reply packet. EDNS0 is necessary to take advantage of larger minimum MTU
+in IPv6. KAME libinet6 includes resolver side support for EDNS0.
+Server side support for EDNS0 is included in ISC BIND9.
+
+ query packet with EDNS0
+ tells receive buffer size
+KAME box -----------------------------> BIND9 DNS server
+KAME box <----------------------------- BIND9 DNS server
+ can transmit jumbo reply, since DNS server
+ knows receive buffer size of KAME box
+
+How to play with it:
+- prepare KAME box and BIND9 DNS server (can be a same node)
+- add the following into /etc/resolv.conf on KAME box:
+ options edns0 <--- enables EDNS0
+ nameserver <IPv4 or v6 address of BIND9 box>
+- run applications compiled with libinet6 (like /usr/local/v6/bin/telnet),
+ see EDNS0 packet fly on the wire by tcpdump or some other method.
+
+Caveats:
+- BIND 4/8 DNS server will choke with EDNS0 packet, so you must not
+ turn the option on if you have BIND 4/8 DNS server. If you enable
+ "options edns0" against BIND 4/8 DNS server, you will never be able
+ to resolve names.
+- If you use IPv6 UDP as DNS transport, path MTU discovery may
+ affect the traffic. KAME box tries to fragment packet to 1280
+ bytes, however, BIND9 may not.
+- Some of our platforms do not use our extended resolver code in libinet6.
+ See COVERAGE for detail.
+
+
+<<Further readings>>
+
+http://www.netbsd.org/Documentation/network/ipv6/
+ Even if you are on non-netbsd operating system, the URL should be
+ useful.
+http://www.kame.net/
+
+ <end of USAGE>
diff --git a/share/examples/Makefile b/share/examples/Makefile
new file mode 100644
index 0000000..b5e2ab3
--- /dev/null
+++ b/share/examples/Makefile
@@ -0,0 +1,253 @@
+# $FreeBSD$
+#
+# Doing a make install builds /usr/share/examples
+
+.include <bsd.own.mk>
+
+LDIRS= BSD_daemon \
+ FreeBSD_version \
+ IPv6 \
+ bootforth \
+ cvsup \
+ diskless \
+ drivers \
+ etc \
+ find_interface \
+ ibcs2 \
+ ipfw \
+ kld \
+ libvgl \
+ mdoc \
+ netgraph \
+ nwclient \
+ perfmon \
+ portal \
+ ppi \
+ ppp \
+ pppd \
+ printing \
+ ses \
+ scsi_target \
+ slattach \
+ sliplogin \
+ startslip \
+ sunrpc
+
+XFILES= BSD_daemon/FreeBSD.pfa \
+ BSD_daemon/README \
+ BSD_daemon/beastie.eps \
+ BSD_daemon/beastie.fig \
+ BSD_daemon/eps.patch \
+ BSD_daemon/poster.sh \
+ FreeBSD_version/FreeBSD_version.c \
+ FreeBSD_version/Makefile \
+ FreeBSD_version/README \
+ IPv6/USAGE \
+ bootforth/README \
+ bootforth/boot.4th \
+ bootforth/frames.4th \
+ bootforth/loader.rc \
+ bootforth/menu.4th \
+ bootforth/menuconf.4th \
+ bootforth/screen.4th \
+ cvsup/README \
+ cvsup/cvs-supfile \
+ cvsup/doc-supfile \
+ cvsup/gnats-supfile \
+ cvsup/ports-supfile \
+ cvsup/refuse \
+ cvsup/refuse.README \
+ cvsup/stable-supfile \
+ cvsup/standard-supfile \
+ cvsup/www-supfile \
+ diskless/ME \
+ diskless/README.BOOTP \
+ diskless/README.TEMPLATING \
+ diskless/clone_root \
+ drivers/README \
+ drivers/make_device_driver.sh \
+ drivers/make_pseudo_driver.sh \
+ etc/README.examples \
+ etc/bsd-style-copyright \
+ etc/make.conf \
+ find_interface/Makefile \
+ find_interface/README \
+ find_interface/find_interface.c \
+ ibcs2/README \
+ ibcs2/hello.uu \
+ ipfw/change_rules.sh \
+ kld/Makefile \
+ kld/cdev/Makefile \
+ kld/cdev/README \
+ kld/cdev/module/Makefile \
+ kld/cdev/module/cdev.c \
+ kld/cdev/module/cdev.h \
+ kld/cdev/module/cdevmod.c \
+ kld/cdev/test/Makefile \
+ kld/cdev/test/testcdev.c \
+ kld/dyn_sysctl/Makefile \
+ kld/dyn_sysctl/README \
+ kld/dyn_sysctl/dyn_sysctl.c \
+ kld/syscall/Makefile \
+ kld/syscall/module/Makefile \
+ kld/syscall/module/syscall.c \
+ kld/syscall/test/Makefile \
+ kld/syscall/test/call.c \
+ libvgl/Makefile \
+ libvgl/demo.c \
+ mdoc/POSIX-copyright \
+ mdoc/deshallify.sh \
+ mdoc/example.1 \
+ mdoc/example.3 \
+ mdoc/example.4 \
+ mdoc/example.9 \
+ netgraph/ether.bridge \
+ netgraph/frame_relay \
+ netgraph/ngctl \
+ netgraph/raw \
+ netgraph/udp.tunnel \
+ nwclient/dot.nwfsrc \
+ nwclient/nwfs.sh.sample \
+ perfmon/Makefile \
+ perfmon/README \
+ perfmon/perfmon.c \
+ portal/README \
+ portal/portal.conf \
+ ppi/Makefile \
+ ppi/ppilcd.c \
+ ppp/chap-auth \
+ ppp/login-auth \
+ ppp/ppp.conf.sample \
+ ppp/ppp.conf.span-isp \
+ ppp/ppp.conf.span-isp.working \
+ ppp/ppp.linkdown.sample \
+ ppp/ppp.linkdown.span-isp \
+ ppp/ppp.linkdown.span-isp.working \
+ ppp/ppp.linkup.sample \
+ ppp/ppp.linkup.span-isp \
+ ppp/ppp.linkup.span-isp.working \
+ ppp/ppp.secret.sample \
+ ppp/ppp.secret.span-isp \
+ ppp/ppp.secret.span-isp.working \
+ pppd/auth-down.sample \
+ pppd/auth-up.sample \
+ pppd/chap-secrets.sample \
+ pppd/chat.sh.sample \
+ pppd/ip-down.sample \
+ pppd/ip-up.sample \
+ pppd/options.sample \
+ pppd/pap-secrets.sample \
+ pppd/ppp.deny.sample \
+ pppd/ppp.shells.sample \
+ printing/README \
+ printing/diablo-if-net \
+ printing/hpdf \
+ printing/hpif \
+ printing/hpof \
+ printing/hprf \
+ printing/hpvf \
+ printing/if-simple \
+ printing/if-simpleX \
+ printing/ifhp \
+ printing/make-ps-header \
+ printing/netprint \
+ printing/psdf \
+ printing/psdfX \
+ printing/psif \
+ printing/pstf \
+ printing/pstfX \
+ ses/Makefile \
+ ses/Makefile.inc \
+ ses/getencstat/Makefile \
+ ses/getencstat/getencstat.0 \
+ ses/sesd/Makefile \
+ ses/sesd/sesd.0 \
+ ses/setencstat/Makefile \
+ ses/setencstat/setencstat.0 \
+ ses/setobjstat/Makefile \
+ ses/setobjstat/setobjstat.0 \
+ ses/srcs/chpmon.c \
+ ses/srcs/eltsub.c \
+ ses/srcs/getencstat.c \
+ ses/srcs/getnobj.c \
+ ses/srcs/getobjmap.c \
+ ses/srcs/getobjstat.c \
+ ses/srcs/inienc.c \
+ ses/srcs/sesd.c \
+ ses/srcs/setencstat.c \
+ ses/srcs/setobjstat.c \
+ scsi_target/Makefile \
+ scsi_target/scsi_target.c \
+ scsi_target/scsi_target.h \
+ scsi_target/scsi_target.8 \
+ scsi_target/scsi_cmds.c \
+ slattach/unit-command.sh \
+ sliplogin/slip.hosts \
+ sliplogin/slip.login \
+ sliplogin/slip.logout \
+ sliplogin/slip.slparms \
+ startslip/sldown.sh \
+ startslip/slip.sh \
+ startslip/slup.sh \
+ sunrpc/Makefile \
+ sunrpc/dir/Makefile \
+ sunrpc/dir/dir.x \
+ sunrpc/dir/dir_proc.c \
+ sunrpc/dir/rls.c \
+ sunrpc/msg/Makefile \
+ sunrpc/msg/msg.x \
+ sunrpc/msg/msg_proc.c \
+ sunrpc/msg/printmsg.c \
+ sunrpc/msg/rprintmsg.c \
+ sunrpc/sort/Makefile \
+ sunrpc/sort/rsort.c \
+ sunrpc/sort/sort.x \
+ sunrpc/sort/sort_proc.c
+
+BINDIR= ${SHAREDIR}/examples
+
+NO_OBJ=
+
+# Define SHARED to indicate whether you want symbolic links to the system
+# source (``symlinks''), or a separate copy (``copies''); (latter useful
+# in environments where it's not possible to keep /sys publicly readable)
+SHARED?= copies
+
+beforeinstall: ${SHARED} etc-examples
+.ORDER: ${SHARED} etc-examples
+
+copies:
+.for i in ${LDIRS}
+ if [ -L ${DESTDIR}${BINDIR}/$i ]; then \
+ rm -f ${DESTDIR}${BINDIR}/$i; \
+ fi
+.endfor
+ mtree -deU ${MTREE_FOLLOWS_SYMLINKS} \
+ -f ${.CURDIR}/../../etc/mtree/BSD.usr.dist -p ${DESTDIR}/usr
+.for file in ${XFILES}
+ ${INSTALL} -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \
+ ${.CURDIR}/${file} ${DESTDIR}${BINDIR}/${file}
+.endfor
+
+symlinks:
+.for i in ${LDIRS}
+ rm -rf ${DESTDIR}${BINDIR}/$i
+ ln -s ${.CURDIR}/$i ${DESTDIR}${BINDIR}/$i
+.endfor
+
+etc-examples:
+.if ${SHARED} != "symlinks"
+ (cd ${.CURDIR}/../../etc; ${MAKE} etc-examples)
+.endif
+
+.if ${SHARED} != "symlinks"
+SUBDIR= smbfs
+.if ${MK_IPFILTER} != "no"
+SUBDIR+=ipfilter
+.endif
+.if ${MK_PF} != "no"
+SUBDIR+=pf
+.endif
+.endif
+
+.include <bsd.subdir.mk>
diff --git a/share/examples/autofs/driver/Makefile b/share/examples/autofs/driver/Makefile
new file mode 100644
index 0000000..7a0f159
--- /dev/null
+++ b/share/examples/autofs/driver/Makefile
@@ -0,0 +1,18 @@
+# $Id: Makefile,v 1.5 2004/09/08 08:27:12 bright Exp $
+# $FreeBSD$
+
+PROG=autodriver
+
+SRCS= autodriver.c
+NO_MAN=
+WARNS= 4
+CFLAGS+= -g
+BINDIR?= /sbin
+
+DPADD+= ${.OBJDIR}/../libautofs/libautofs.a
+#LDADD+= -lautofs
+LDADD+= ${.OBJDIR}/../libautofs/libautofs.a
+LDFLAGS+= -L${.OBJDIR}/../libautofs
+CFLAGS+= -I${.CURDIR}/../libautofs
+
+.include <bsd.prog.mk>
diff --git a/share/examples/autofs/driver/autodriver.c b/share/examples/autofs/driver/autodriver.c
new file mode 100644
index 0000000..69af0c5
--- /dev/null
+++ b/share/examples/autofs/driver/autodriver.c
@@ -0,0 +1,538 @@
+/*
+ * Copyright (c) 2004 Alfred Perlstein <alfred@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.
+ *
+ * $Id: autodriver.c,v 1.9 2004/09/08 08:12:21 bright Exp $
+ * $FreeBSD$
+ */
+#include <ctype.h>
+#include <err.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#include <sys/dirent.h>
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/mount.h>
+#include <sys/poll.h>
+#include <sys/stat.h>
+
+#include <libautofs.h>
+
+struct autoentry {
+ char *ae_mnt; /* autofs mountpoint. */
+ char *ae_path; /* path under mount. */
+ char *ae_type; /* fs to be mounted type. */
+ char *ae_opts; /* options passed to mount. */
+ char *ae_rpath; /* remote path */
+ char *ae_free; /* freeme! */
+ char *ae_fullpath; /* full path to mount */
+ int ae_line; /* line it came from in the conf. */
+ int ae_indirect; /* is this an indirect mount? */
+ int ae_direct; /* is this a direct mount? */
+ int ae_browse; /* browseable? */
+ struct autoentry *ae_next; /* next. */
+};
+
+struct autoentry *entries;
+const char *mount_prog = "mount";
+const char *fstype = "autofs";
+
+void *xmalloc(size_t);
+void *xcalloc(size_t number, size_t size);
+void parsetab(void);
+void populate_tab(void);
+void doreq(autoh_t, autoreq_t);
+void dotheneedful(autoh_t);
+void eventloop(void);
+int poll_handles(autoh_t *array, int cnt);
+int mount_indirect(struct autofs_userreq *req, struct autoentry *ent);
+int mount_direct(struct autofs_userreq *req, struct autoentry *ent);
+int mount_browse(struct autofs_userreq *req, struct autoentry *ent);
+
+#define DSTR(s) sizeof(s) - 1, s
+
+struct dirent dumbents[] = {
+ {50, sizeof(struct dirent), DT_DIR, DSTR("one") },
+ {51, sizeof(struct dirent), DT_DIR, DSTR(".") },
+ {52, sizeof(struct dirent), DT_DIR, DSTR("..") },
+ {50, sizeof(struct dirent), DT_DIR, DSTR("two") },
+};
+
+void *
+xmalloc(size_t size)
+{
+ void *ret;
+
+ ret = malloc(size);
+ if (ret == NULL)
+ err(1, "malloc %d", (int) size);
+ return (ret);
+}
+
+void *
+xcalloc(size_t number, size_t size)
+{
+ void *ret;
+
+ ret = calloc(number, size);
+ if (ret == NULL)
+ err(1, "calloc %d %d", (int)number, (int)size);
+ return (ret);
+}
+
+void
+parsetab(void)
+{
+ FILE *fp;
+ const char *tab;
+ char *cp, *p, *line, *opt;
+ size_t len;
+ struct autoentry *ent;
+ int i, lineno, x, gotopt;
+ const char *expecting = "expecting 'direct', 'indirect' or 'browse'";
+ const char *tabfiles[] = {
+ "/etc/autotab", "/usr/local/etc/autotab", "./autotab", NULL
+ };
+
+ lineno = 0;
+ for (i = 0; (tab = tabfiles[i]) != NULL; i++) {
+ tab = tabfiles[i];
+ fp = fopen(tab, "r");
+ if (fp == NULL)
+ warn("fopen %s", tab);
+ if (fp != NULL)
+ break;
+ }
+ if (fp == NULL) {
+ err(1, "no config file available.");
+ }
+
+ fprintf(stderr, "using config file: %s\n", tab);
+
+ while ((cp = fgetln(fp, &len)) != NULL) {
+ lineno++;
+ while (len > 0 && isspace(cp[len - 1]))
+ len--;
+ line = xmalloc(len + 1);
+ bcopy(cp, line, len);
+ line[len] = '\0';
+ cp = line;
+ if ((cp = strchr(line, '#')) != NULL)
+ *cp = '\0';
+ cp = line;
+ while (isspace(*cp))
+ cp++;
+ if (*cp == '\0') {
+ free(line);
+ continue;
+ }
+ ent = xcalloc(1, sizeof(*ent));
+ if ((p = strsep(&cp, " \t")) == NULL)
+ goto bad;
+ ent->ae_mnt = p;
+ if ((p = strsep(&cp, " \t")) == NULL)
+ goto bad;
+ ent->ae_path = p;
+ if ((p = strsep(&cp, " \t")) == NULL)
+ goto bad;
+ ent->ae_type = p;
+ if ((p = strsep(&cp, " \t")) == NULL)
+ goto bad;
+ ent->ae_opts = p;
+ if ((p = strsep(&cp, " \t")) == NULL)
+ goto bad;
+ ent->ae_rpath = p;
+ if ((p = strsep(&cp, " \t")) == NULL)
+ goto bad;
+ gotopt = 0;
+ opt = p;
+ while ((p = strsep(&opt, ",")) != NULL) {
+ if (strcmp(p, "indirect") == 0) {
+ ent->ae_indirect = 1;
+ gotopt = 1;
+ } else if (strcmp(p, "direct") == 0) {
+ ent->ae_direct = 1;
+ gotopt = 1;
+ } else if (strcmp(p, "browse") == 0) {
+ ent->ae_browse = 1;
+ gotopt = 1;
+ } else {
+ warnx("unreconized option '%s', %s",
+ p, expecting);
+ goto bad2;
+ }
+ }
+ if (!gotopt) {
+ warnx("no options specified %s", expecting);
+ goto bad2;
+ }
+ if (ent->ae_direct && ent->ae_indirect) {
+ warnx("direct and indirect are mutually exclusive");
+ goto bad2;
+
+ }
+ x = asprintf(&ent->ae_fullpath, "%s/%s",
+ ent->ae_mnt, ent->ae_path);
+ if (x == -1)
+ err(1, "asprintf");
+
+ if (strlen(ent->ae_fullpath) + 1 > PATH_MAX) {
+ warnx("Error in file %s, line %d, "
+ "mountpath (%s) exceeds PATH_MAX (%d)",
+ tab, lineno, ent->ae_fullpath, PATH_MAX);
+ goto bad2;
+ }
+ ent->ae_line = lineno;
+ ent->ae_free = line;
+ ent->ae_next = entries;
+ entries = ent;
+ continue;
+bad:
+ warnx("Parse error in file %s, line %d", tab, lineno);
+bad2:
+ free(ent->ae_fullpath);
+ free(line);
+ free(ent);
+ }
+ if (ferror(fp))
+ err(1, "error with file %s", tab);
+}
+
+void
+populate_tab(void)
+{
+ struct autoentry *ent;
+ char *path, *cmd;
+ int error;
+ autoh_t ah;
+
+ path = cmd = NULL;
+
+ for (ent = entries; ent != NULL; ent = ent->ae_next) {
+ free(path);
+ free(cmd);
+ error = asprintf(&path, "%s/%s", ent->ae_mnt, ent->ae_path);
+ if (error == -1)
+ err(1, "asprintf");
+ error = asprintf(&cmd, "mkdir -p %s", path);
+ if (error == -1)
+ err(1, "asprintf");
+ error = system(cmd);
+ if (error) {
+ warn("system: %s", cmd);
+ continue;
+ }
+ if (autoh_get(ent->ae_mnt, &ah)) {
+ warn("autoh_get %s", path);
+ continue;
+ }
+ error = autoh_togglepath(ah, AUTO_MOUNTER, getpid(), path);
+ if (error) {
+ err(1, "AUTO_MOUNTER %s", path);
+ continue;
+ }
+ if (ent->ae_browse) {
+ error = autoh_togglepath(ah, AUTO_BROWSE, getpid(),
+ path);
+ if (error)
+ err(1, "AUTO_BROWSE %s", path);
+ }
+ if (ent->ae_direct) {
+ error = autoh_togglepath(ah, AUTO_DIRECT, getpid(),
+ path);
+ if (error)
+ err(1, "AUTO_DIRECT %s", path);
+ }
+ if (ent->ae_indirect) {
+ error = autoh_togglepath(ah, AUTO_INDIRECT, getpid(),
+ path);
+ if (error)
+ err(1, "AUTO_INDIRECT %s", path);
+ }
+ autoh_free(ah);
+ }
+ free(path);
+ free(cmd);
+}
+
+/*
+ * Process an autofs request, scan the list of entries in the config
+ * looking for our node, if found mount it.
+ */
+void
+doreq(autoh_t ah, autoreq_t req)
+{
+ struct autoentry *ent;
+ int error;
+ int mcmp;
+ int xid;
+ const char *mnt;
+
+ mnt = autoh_mp(ah);
+
+ autoreq_seterrno(req, 0);
+ for (ent = entries; ent != NULL; ent = ent->ae_next) {
+ fprintf(stderr, "comparing {%s,%s} to {%s,%s}\n",
+ mnt, ent->ae_mnt, autoreq_getpath(req), ent->ae_path);
+ fprintf(stderr, "comparing {%d,%d} to {%d,%d}\n",
+ (int)strlen(mnt),
+ (int)strlen(ent->ae_mnt),
+ (int)strlen(autoreq_getpath(req)),
+ (int)strlen(ent->ae_path));
+ autoreq_getxid(req, &xid);
+ fprintf(stderr, "req xid %d\n", xid);
+ if ((mcmp = strcmp(mnt, ent->ae_mnt)) != 0) {
+ fprintf(stderr, "mcmp = %d\n", mcmp);
+ continue;
+ }
+ if (mount_direct(req, ent))
+ goto serve;
+ if (mount_indirect(req, ent))
+ goto serve;
+ if (mount_browse(req, ent))
+ goto serve;
+ }
+ fprintf(stderr, "no entry found...\n");
+ autoreq_seterrno(req, ENOENT);
+serve:
+ error = autoreq_serv(ah, req);
+ if (error == -1) {
+ warn("AUTOFS_CTL_SERVREQ");
+ }
+}
+
+int
+mount_indirect(req, ent)
+ struct autofs_userreq *req;
+ struct autoentry *ent;
+{
+ struct stat sb;
+ char *path, *cmd;
+ int error, x;
+
+ if (ent->ae_indirect != 1) {
+ fprintf(stderr, "not indirect.\n");
+ return (0);
+ }
+ fprintf(stderr, "indirect mount...\n");
+ /*
+ * handle lookups, fake all stat(2) requests... this is bad,
+ * but we're a driver so we don't care...
+ * If we don't care about the type of request, then just return.
+ */
+ switch (autoreq_getop(req)) {
+ case AUTOREQ_OP_LOOKUP:
+ break;
+ case AUTOREQ_OP_STAT:
+ fprintf(stderr, "stat\n");
+ return (1);
+ default:
+ fprintf(stderr, "unknown\n");
+ return (0);
+ }
+ if (stat(ent->ae_fullpath, &sb))
+ return (0);
+ if (sb.st_ino != autoreq_getdirino(req)) {
+ fprintf(stderr, "st_ino %d != dirino %d\n",
+ (int)sb.st_ino, (int)autoreq_getdirino(req));
+ return (0);
+ }
+ x = asprintf(&path, "%s/%s", ent->ae_fullpath, autoreq_getpath(req));
+ if (x > PATH_MAX) {
+ autoreq_seterrno(req, ENAMETOOLONG);
+ return (1);
+ }
+ if (mkdir(path, 0555) == -1)
+ warn("mkdir %s", path);
+ error = asprintf(&cmd, "%s -t %s -o %s %s/%s %s", mount_prog,
+ ent->ae_type, ent->ae_opts, ent->ae_rpath, autoreq_getpath(req), path);
+ fprintf(stderr, "running:\n\t%s\n", cmd);
+ error = system(cmd);
+ fprintf(stderr, "error = %d\n", error);
+ free(cmd);
+ if (error) {
+ if (rmdir(path) == -1)
+ warn("rmdir %s", path);
+ autoreq_seterrno(req, ENOENT);
+ } else {
+ if (stat(path, &sb) != -1)
+ autoreq_setino(req, sb.st_ino);
+ /* XXX !!! */
+ /* req->au_flags = 1; */
+ }
+ free(path);
+ return (1);
+}
+
+int
+mount_direct(req, ent)
+ struct autofs_userreq *req;
+ struct autoentry *ent;
+{
+ struct stat sb;
+ char *cmd;
+ int error;
+
+ if (ent->ae_direct != 1) {
+ fprintf(stderr, "not direct.\n");
+ return (0);
+ }
+ fprintf(stderr, "direct mount...\n");
+ /*
+ * handle lookups, fake all stat(2) requests... this is bad,
+ * but we're a driver so we don't care...
+ * If we don't care about the type of request, then just return.
+ */
+ switch (autoreq_getop(req)) {
+ case AUTOREQ_OP_LOOKUP:
+ break;
+ case AUTOREQ_OP_STAT:
+ return (1);
+ default:
+ return (0);
+ }
+ if (stat(ent->ae_fullpath, &sb))
+ return (0);
+ if (sb.st_ino != autoreq_getino(req))
+ return (0);
+ error = asprintf(&cmd, "%s -t %s -o %s %s %s", mount_prog,
+ ent->ae_type, ent->ae_opts, ent->ae_rpath, ent->ae_fullpath);
+ if (error == -1)
+ err(1, "asprintf");
+ fprintf(stderr, "running:\n\t%s\n", cmd);
+ error = system(cmd);
+ fprintf(stderr, "error = %d\n", error);
+ free(cmd);
+ if (error) {
+ autoreq_seterrno(req, ENOENT);
+ return (1);
+ }
+ /* XXX: fix ONLIST in kernel */
+ /* req->au_flags = 1; */
+ return (1);
+}
+
+int
+mount_browse(req, ent)
+ struct autofs_userreq *req;
+ struct autoentry *ent;
+{
+ off_t off;
+
+ if (ent->ae_browse != 1)
+ return (0);
+ if (autoreq_getop(req) != AUTOREQ_OP_READDIR)
+ return (0);
+ autoreq_getoffset(req, &off);
+ if (off < sizeof(dumbents))
+ autoreq_setaux(req, dumbents, sizeof(dumbents));
+ fprintf(stderr, "mount_browse: offset %d, size %d\n",
+ (int)off, (int)sizeof(dumbents));
+ autoreq_seteof(req, 1);
+ return (1);
+}
+
+/*
+ * Ask the filesystem passed in if it has a pending request.
+ * if so process them.
+ */
+void
+dotheneedful(autoh_t ah)
+{
+ int cnt, i;
+ autoreq_t *reqs;
+
+ if (autoreq_get(ah, &reqs, &cnt))
+ err(1, "autoreq_get");
+
+ for (i = 0; i < cnt; i++) {
+ fprintf(stderr, "processing request for '%s' '%s'\n",
+ autoh_mp(ah), autoreq_getpath(reqs[i]));
+ doreq(ah, reqs[i]);
+ }
+ free(reqs);
+}
+
+int
+poll_handles(autoh_t *array, int cnt)
+{
+ int i, saved_errno, x;
+ static struct pollfd *pfd = NULL;
+
+ pfd = reallocf(pfd, cnt * sizeof(*pfd));
+ if (pfd == NULL)
+ return (-1);
+ for (i = 0; i < cnt; i++) {
+ pfd[i].fd = autoh_fd(array[i]);
+ pfd[i].events = POLLPRI;
+ pfd[i].revents = 0;
+ }
+ fprintf(stderr, "start polling...\n");
+ x = poll(pfd, cnt, 10000);
+ saved_errno = errno;
+ fprintf(stderr, "done polling...\n");
+ errno = saved_errno;
+ if (x == -1)
+ return (-1);
+ /* at least one fs is ready... */
+ if (x > 0)
+ return (0);
+ return (0);
+}
+
+void
+eventloop(void)
+{
+ autoh_t *array;
+ int cnt, i;
+
+ fprintf(stderr, "starting event loop...\n");
+ for ( ;; ) {
+ if (autoh_getall(&array, &cnt))
+ err(1, "autoh_getall");
+ if (poll_handles(array, cnt))
+ err(1, "poll_handles");
+ for (i = 0; i < cnt; i++) {
+ dotheneedful(array[i]);
+ }
+ autoh_freeall(array);
+ }
+}
+
+int
+main(int argc __unused, char **argv __unused)
+{
+
+ if (getuid() != 0)
+ errx(1, "autodriver needs to be run as root to work.");
+ parsetab();
+ populate_tab();
+ eventloop();
+ return (0);
+}
diff --git a/share/examples/autofs/driver/autotab b/share/examples/autofs/driver/autotab
new file mode 100644
index 0000000..c56e072
--- /dev/null
+++ b/share/examples/autofs/driver/autotab
@@ -0,0 +1,7 @@
+# $Id: autotab,v 1.8 2004/09/08 08:12:21 bright Exp $
+# $FreeBSD$
+# autofs, directory, fstype, opts, path
+/auto share nfs ro,-R=1 big:/vol/share direct
+#/auto src nfs ro,-R=1 big:/vol/share/src indirect
+/auto src nfs ro,-R=1 big:/vol/share/src direct
+/auto browse nfs ro,-R=1 big:/vol/share/src browse,indirect
diff --git a/share/examples/bootforth/README b/share/examples/bootforth/README
new file mode 100644
index 0000000..b8eb8a0
--- /dev/null
+++ b/share/examples/bootforth/README
@@ -0,0 +1,35 @@
+Here you can find some simple examples how to use BootFORTH (part of the
+new bootloader) together with terminal emulation code (available when
+compiling /sys/boot/i386/libi386 with -DTERM_EMU).
+
+Normally, you can place the files in /boot as they are here, and they will be
+automatically loaded by /boot/loader. You must choose between boot.4th or
+loader.rc, though. Copy one or the other, but not both. Also, menu.4th is
+only used by boot.4th, and menuconf.4th is only used by loader.rc, so you
+don't need to copy both files.
+
+The files are:
+
+boot.4th example of file which is always loaded by /boot/loader, if
+ present in /boot/
+loader.rc example of file which is always loader by /boot/loader, if
+ present in /boot/
+screen.4th helpful words for screen manipulation.
+frames.4th basic frame drawing primitives. Requires screen.4th.
+menu.4th example of simple startup menu.
+menuconf.4th another example of simples startup menu.
+
+You're encouraged to add more features to these files - I'm not a Forth
+hacker, unfortunately...
+
+Andrzej Bialecki
+<abial@freebsd.org>
+
+If you use loader.rc/menuconf.4th, be sure to create /boot/stable.conf and
+/boot/current.conf, like described in loader.conf(5), with appropriate
+configuration to distinguish one from the other.
+
+Daniel C. Sobral
+<dcs@freebsd.org>
+
+$FreeBSD$
diff --git a/share/examples/bootforth/boot.4th b/share/examples/bootforth/boot.4th
new file mode 100644
index 0000000..8f26e0d
--- /dev/null
+++ b/share/examples/bootforth/boot.4th
@@ -0,0 +1,22 @@
+\ Example of the file which is automatically loaded by /boot/loader
+\ on startup.
+\ $FreeBSD$
+
+\ Load the screen manipulation words
+
+cr .( Loading Forth extensions:)
+
+cr .( - screen.4th...)
+s" /boot/screen.4th" O_RDONLY fopen dup fload fclose
+
+\ Load frame support
+cr .( - frames.4th...)
+s" /boot/frames.4th" O_RDONLY fopen dup fload fclose
+
+\ Load our little menu
+cr .( - menu.4th...)
+s" /boot/menu.4th" O_RDONLY fopen dup fload fclose
+
+\ Show it
+cr
+main_menu
diff --git a/share/examples/bootforth/frames.4th b/share/examples/bootforth/frames.4th
new file mode 100644
index 0000000..3b1f404
--- /dev/null
+++ b/share/examples/bootforth/frames.4th
@@ -0,0 +1,112 @@
+\ Words implementing frame drawing
+\ XXX Filled boxes are left as an exercise for the reader... ;-/
+\ $FreeBSD$
+
+marker task-frames.4th
+
+variable h_el
+variable v_el
+variable lt_el
+variable lb_el
+variable rt_el
+variable rb_el
+variable fill
+
+s" arch-pc98" environment? [if]
+ \ Single frames
+ 149 constant sh_el
+ 150 constant sv_el
+ 152 constant slt_el
+ 154 constant slb_el
+ 153 constant srt_el
+ 155 constant srb_el
+ \ Double frames
+ 149 constant dh_el
+ 150 constant dv_el
+ 152 constant dlt_el
+ 154 constant dlb_el
+ 153 constant drt_el
+ 155 constant drb_el
+ \ Fillings
+ 0 constant fill_none
+ 32 constant fill_blank
+ 135 constant fill_dark
+ 135 constant fill_med
+ 135 constant fill_bright
+[else]
+ \ Single frames
+ 196 constant sh_el
+ 179 constant sv_el
+ 218 constant slt_el
+ 192 constant slb_el
+ 191 constant srt_el
+ 217 constant srb_el
+ \ Double frames
+ 205 constant dh_el
+ 186 constant dv_el
+ 201 constant dlt_el
+ 200 constant dlb_el
+ 187 constant drt_el
+ 188 constant drb_el
+ \ Fillings
+ 0 constant fill_none
+ 32 constant fill_blank
+ 176 constant fill_dark
+ 177 constant fill_med
+ 178 constant fill_bright
+[then]
+
+: hline ( len x y -- ) \ Draw horizontal single line
+ at-xy \ move cursor
+ 0 do
+ h_el @ emit
+ loop
+;
+
+: f_single ( -- ) \ set frames to single
+ sh_el h_el !
+ sv_el v_el !
+ slt_el lt_el !
+ slb_el lb_el !
+ srt_el rt_el !
+ srb_el rb_el !
+;
+
+: f_double ( -- ) \ set frames to double
+ dh_el h_el !
+ dv_el v_el !
+ dlt_el lt_el !
+ dlb_el lb_el !
+ drt_el rt_el !
+ drb_el rb_el !
+;
+
+: vline ( len x y -- ) \ Draw vertical single line
+ 2dup 4 pick
+ 0 do
+ at-xy
+ v_el @ emit
+ 1+
+ 2dup
+ loop
+ 2drop 2drop drop
+;
+
+: box ( w h x y -- ) \ Draw a box
+ 2dup 1+ 4 pick 1- -rot
+ vline \ Draw left vert line
+ 2dup 1+ swap 5 pick + swap 4 pick 1- -rot
+ vline \ Draw right vert line
+ 2dup swap 1+ swap 5 pick 1- -rot
+ hline \ Draw top horiz line
+ 2dup swap 1+ swap 4 pick + 5 pick 1- -rot
+ hline \ Draw bottom horiz line
+ 2dup at-xy lt_el @ emit \ Draw left-top corner
+ 2dup 4 pick + at-xy lb_el @ emit \ Draw left bottom corner
+ 2dup swap 5 pick + swap at-xy rt_el @ emit \ Draw right top corner
+ 2 pick + swap 3 pick + swap at-xy rb_el @ emit
+ 2drop
+;
+
+f_single
+fill_none fill !
diff --git a/share/examples/bootforth/loader.rc b/share/examples/bootforth/loader.rc
new file mode 100644
index 0000000..617bc3d
--- /dev/null
+++ b/share/examples/bootforth/loader.rc
@@ -0,0 +1,34 @@
+\ Example of the file which is automatically loaded by /boot/loader
+\ on startup.
+\ $FreeBSD$
+
+cr .( Loading Forth extensions:)
+
+\ Load configuration file words
+
+cr .( - loader.4th...)
+
+include /boot/loader.4th
+
+\ Load the screen manipulation words
+
+cr .( - screen.4th...)
+s" /boot/screen.4th" O_RDONLY fopen dup fload fclose
+
+\ Load frame support
+cr .( - frames.4th...)
+s" /boot/frames.4th" O_RDONLY fopen dup fload fclose
+
+\ Load our little menu
+cr .( - menuconf.4th...)
+s" /boot/menuconf.4th" O_RDONLY fopen dup fload fclose
+
+\ Initialize loader.4th stuff
+
+cr cr .( Initializing loader.4th...)
+initialize drop
+
+\ Show the menu
+cr
+main_menu
+
diff --git a/share/examples/bootforth/menu.4th b/share/examples/bootforth/menu.4th
new file mode 100644
index 0000000..5c5c3e9
--- /dev/null
+++ b/share/examples/bootforth/menu.4th
@@ -0,0 +1,99 @@
+\ Simple greeting screen, presenting basic options.
+\ XXX This is far too trivial - I don't have time now to think
+\ XXX about something more fancy... :-/
+\ $FreeBSD$
+
+: title
+ f_single
+ 60 11 10 4 box
+ 29 4 at-xy 15 fg 7 bg
+ ." Welcome to BootFORTH!"
+ me
+;
+
+: menu
+ 2 fg
+ 20 7 at-xy
+ ." 1. Start FreeBSD /kernel."
+ 20 8 at-xy
+ ." 2. Interact with BootFORTH."
+ 20 9 at-xy
+ ." 3. Reboot."
+ me
+;
+
+: tkey ( d -- flag | char )
+ seconds +
+ begin 1 while
+ dup seconds u< if
+ drop
+ -1
+ exit
+ then
+ key? if
+ drop
+ key
+ exit
+ then
+ repeat
+;
+
+: prompt
+ 14 fg
+ 20 11 at-xy
+ ." Enter your option (1,2,3): "
+ 10 tkey
+ dup 32 = if
+ drop key
+ then
+ dup 0< if
+ drop 49
+ then
+ dup emit
+ me
+;
+
+: help_text
+ 10 18 at-xy ." * Choose 1 if you just want to run FreeBSD."
+ 10 19 at-xy ." * Choose 2 if you want to use bootloader facilities."
+ 12 20 at-xy ." See '?' for available commands, and 'words' for"
+ 12 21 at-xy ." complete list of Forth words."
+ 10 22 at-xy ." * Choose 3 in order to warm boot your machine."
+;
+
+: (boot) 0 boot ;
+: (reboot) 0 reboot ;
+
+: main_menu
+ begin 1 while
+ clear
+ f_double
+ 79 23 1 1 box
+ title
+ menu
+ help_text
+ prompt
+ cr cr cr
+ dup 49 = if
+ drop
+ 1 25 at-xy cr
+ ." Loading kernel. Please wait..." cr
+ ['] (boot) catch abort" Error booting"
+ then
+ dup 50 = if
+ drop
+ 1 25 at-xy cr
+ exit
+ then
+ dup 51 = if
+ drop
+ 1 25 at-xy cr
+ ['] (reboot) catch abort" Error rebooting"
+ then
+ 20 12 at-xy
+ ." Key " emit ." is not a valid option!"
+ 20 13 at-xy
+ ." Press any key to continue..."
+ key drop
+ repeat
+;
diff --git a/share/examples/bootforth/menuconf.4th b/share/examples/bootforth/menuconf.4th
new file mode 100644
index 0000000..a769f77
--- /dev/null
+++ b/share/examples/bootforth/menuconf.4th
@@ -0,0 +1,110 @@
+\ Simple greeting screen, presenting basic options.
+\ XXX This is far too trivial - I don't have time now to think
+\ XXX about something more fancy... :-/
+\ $FreeBSD$
+
+: title
+ f_single
+ 60 11 10 4 box
+ 29 4 at-xy 15 fg 7 bg
+ ." Welcome to BootFORTH!"
+ me
+;
+
+: menu
+ 2 fg
+ 20 7 at-xy
+ ." 1. Start FreeBSD with /boot/stable.conf."
+ 20 8 at-xy
+ ." 2. Start FreeBSD with /boot/current.conf."
+ 20 9 at-xy
+ ." 3. Start FreeBSD with standard configuration. "
+ 20 10 at-xy
+ ." 4. Reboot."
+ me
+;
+
+: tkey ( d -- flag | char )
+ seconds +
+ begin 1 while
+ dup seconds u< if
+ drop
+ -1
+ exit
+ then
+ key? if
+ drop
+ key
+ exit
+ then
+ repeat
+;
+
+: prompt
+ 14 fg
+ 20 12 at-xy
+ ." Enter your option (1,2,3,4): "
+ 10 tkey
+ dup 32 = if
+ drop key
+ then
+ dup 0< if
+ drop 51
+ then
+ dup emit
+ me
+;
+
+: help_text
+ 10 18 at-xy ." * Choose 1 or 2 to run special configuration file."
+ 10 19 at-xy ." * Choose 3 to proceed with standard bootstrapping."
+ 12 20 at-xy ." See '?' for available commands, and 'words' for"
+ 12 21 at-xy ." complete list of Forth words."
+ 10 22 at-xy ." * Choose 4 in order to warm boot your machine."
+;
+
+: (reboot) 0 reboot ;
+
+: main_menu
+ begin 1 while
+ clear
+ f_double
+ 79 23 1 1 box
+ title
+ menu
+ help_text
+ prompt
+ cr cr cr
+ dup 49 = if
+ drop
+ 1 25 at-xy cr
+ ." Loading /boot/stable.conf. Please wait..." cr
+ s" /boot/stable.conf" read-conf
+ 0 boot-conf exit
+ then
+ dup 50 = if
+ drop
+ 1 25 at-xy cr
+ ." Loading /boot/current.conf. Please wait..." cr
+ s" /boot/current.conf" read-conf
+ 0 boot-conf exit
+ then
+ dup 51 = if
+ drop
+ 1 25 at-xy cr
+ ." Proceeding with standard boot. Please wait..." cr
+ 0 boot-conf exit
+ then
+ dup 52 = if
+ drop
+ 1 25 at-xy cr
+ ['] (reboot) catch abort" Error rebooting"
+ then
+ 20 12 at-xy
+ ." Key " emit ." is not a valid option!"
+ 20 13 at-xy
+ ." Press any key to continue..."
+ key drop
+ repeat
+;
+
diff --git a/share/examples/bootforth/screen.4th b/share/examples/bootforth/screen.4th
new file mode 100644
index 0000000..3ea79e4
--- /dev/null
+++ b/share/examples/bootforth/screen.4th
@@ -0,0 +1,36 @@
+\ Screen manipulation related words.
+\ $FreeBSD$
+
+marker task-screen.4th
+
+: escc ( -- ) \ emit Esc-[
+ 91 27 emit emit
+;
+
+: ho ( -- ) \ Home cursor
+ escc 72 emit \ Esc-[H
+;
+
+: cld ( -- ) \ Clear from current position to end of display
+ escc 74 emit \ Esc-[J
+;
+
+: clear ( -- ) \ clear screen
+ ho cld
+;
+
+: at-xy ( x y -- ) \ move cursor to x rows, y cols (1-based coords)
+ escc .# 59 emit .# 72 emit \ Esc-[%d;%dH
+;
+
+: fg ( x -- ) \ Set foreground color
+ escc 3 .# .# 109 emit \ Esc-[3%dm
+;
+
+: bg ( x -- ) \ Set background color
+ escc 4 .# .# 109 emit \ Esc-[4%dm
+;
+
+: me ( -- ) \ Mode end (clear attributes)
+ escc 109 emit
+;
diff --git a/share/examples/cvsup/README b/share/examples/cvsup/README
new file mode 100644
index 0000000..e025e8f
--- /dev/null
+++ b/share/examples/cvsup/README
@@ -0,0 +1,37 @@
+# $FreeBSD$
+
+This directory contains sample "supfiles" for obtaining and updating
+the FreeBSD sources via the Internet. These supfiles will work
+with CVSup version 14.0 or later. For general information on CVSup
+itself, please see http://www.freebsd.org/doc/handbook/cvsup.html
+
+To maintain the sources for the FreeBSD-current release, use:
+
+ standard-supfile Main source tree
+
+ ports-supfile Ports collection
+
+To maintain the sources for the FreeBSD-stable release, use:
+
+ stable-supfile Main source tree
+
+To maintain a copy of the CVS repository containing all versions of
+FreeBSD, use:
+
+ cvs-supfile Main source tree and ports collection
+
+To maintain a copy of the FreeBSD bug database, use the file:
+
+ gnats-supfile FreeBSD bug database
+
+IMPORTANT: Before you use any of the supfiles in this directory,
+you will need to edit in an appropriate "host" setting. See:
+
+ http://www.freebsd.org/doc/handbook/mirrors.html
+
+for an up-to-date list of public CVSup mirror sites.
+
+To prevent CVSup from updating particular directories and files, use
+this file:
+
+ refuse
diff --git a/share/examples/cvsup/cvs-supfile b/share/examples/cvsup/cvs-supfile
new file mode 100644
index 0000000..c03e43a
--- /dev/null
+++ b/share/examples/cvsup/cvs-supfile
@@ -0,0 +1,207 @@
+# $FreeBSD$
+#
+# This file contains all of the "CVSup collections" that make up the
+# CVS development tree of the FreeBSD system.
+#
+# CVSup (CVS Update Protocol) allows you to download the latest CVS
+# tree (or any branch of development therefrom) to your system easily
+# and efficiently (far more so than with sup, which CVSup is aimed
+# at replacing). If you're running CVSup interactively, and are
+# currently using an X display server, you should run CVSup as follows
+# to keep your CVS tree up-to-date:
+#
+# cvsup cvs-supfile
+#
+# If not running X, or invoking cvsup from a non-interactive script, then
+# run it as follows:
+#
+# cvsup -g -L 2 cvs-supfile
+#
+# You may wish to change some of the settings in this file to better
+# suit your system:
+#
+# host=CHANGE_THIS.FreeBSD.org
+# This specifies the server host which will supply the
+# file updates. You must change it to one of the CVSup
+# mirror sites listed in the FreeBSD Handbook at
+# http://www.freebsd.org/doc/handbook/mirrors.html.
+# You can override this setting on the command line
+# with cvsup's "-h host" option.
+#
+# base=/var/db
+# This specifies the root where CVSup will store information
+# about the collections you have transferred to your system.
+# A setting of "/var/db" will generate this information in
+# /var/db/sup. You can override the "base" setting on the
+# command line with cvsup's "-b base" option. This directory
+# must exist in order to run CVSup.
+#
+# prefix=/home/ncvs
+# This specifies where to place the requested files. A
+# setting of "/home/ncvs" will place all of the files
+# requested in /home/ncvs (e.g., "/home/ncvs/src/bin",
+# "/home/ncvs/ports/archivers"). The prefix directory
+# must exist in order to run CVSup.
+
+# Defaults that apply to all the collections
+#
+# IMPORTANT: Change the next line to use one of the CVSup mirror sites
+# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
+*default host=CHANGE_THIS.FreeBSD.org
+*default base=/var/db
+*default prefix=/home/ncvs
+*default release=cvs
+*default delete use-rel-suffix
+
+# If you seem to be limited by CPU rather than network or disk bandwidth, try
+# commenting out the following line. (Normally, today's CPUs are fast enough
+# that you want to run compression.)
+*default compress
+
+## Main Source Tree.
+#
+# The easiest way to get the main source tree is to use the "src-all"
+# mega-collection. It includes all of the individual "src-*" collections.
+src-all
+
+# These are the individual collections that make up "src-all". If you
+# use these, be sure to comment out "src-all" above.
+#src-base
+#src-bin
+#src-cddl
+#src-contrib
+#src-etc
+#src-games
+#src-gnu
+#src-include
+#src-kerberos5
+#src-kerberosIV
+#src-lib
+#src-libexec
+#src-release
+#src-rescue
+#src-sbin
+#src-share
+#src-sys
+#src-tools
+#src-usrbin
+#src-usrsbin
+# These are the individual collections that make up FreeBSD's crypto
+# collection. They are no longer export-restricted and are a part of
+# src-all
+#src-crypto
+#src-eBones
+#src-secure
+#src-sys-crypto
+
+## Ports Collection.
+#
+# The easiest way to get the ports tree is to use the "ports-all"
+# mega-collection. It includes all of the individual "ports-*"
+# collections,
+ports-all
+
+# These are the individual collections that make up "ports-all". If you
+# use these, be sure to comment out "ports-all" above and always include
+# "ports-base" if you use any of the other individual collections below.
+# Your ports may not build correctly without an up-to-date "ports-base".
+#
+#ports-base
+#
+#ports-accessibility
+#ports-arabic
+#ports-archivers
+#ports-astro
+#ports-audio
+#ports-benchmarks
+#ports-biology
+#ports-cad
+#ports-chinese
+#ports-comms
+#ports-converters
+#ports-databases
+#ports-deskutils
+#ports-devel
+#ports-dns
+#ports-editors
+#ports-emulators
+#ports-finance
+#ports-french
+#ports-ftp
+#ports-games
+#ports-german
+#ports-graphics
+#ports-hebrew
+#ports-hungarian
+#ports-irc
+#ports-japanese
+#ports-java
+#ports-korean
+#ports-lang
+#ports-mail
+#ports-math
+#ports-mbone
+#ports-misc
+#ports-multimedia
+#ports-net
+#ports-net-im
+#ports-net-mgmt
+#ports-net-p2p
+#ports-news
+#ports-palm
+#ports-picobsd
+#ports-polish
+#ports-ports-mgmt
+#ports-portuguese
+#ports-print
+#ports-russian
+#ports-science
+#ports-security
+#ports-shells
+#ports-sysutils
+#ports-textproc
+#ports-ukrainian
+#ports-vietnamese
+#ports-www
+#ports-x11
+#ports-x11-clocks
+#ports-x11-drivers
+#ports-x11-fm
+#ports-x11-fonts
+#ports-x11-servers
+#ports-x11-themes
+#ports-x11-toolkits
+#ports-x11-wm
+
+## Documentation
+#
+# The easiest way to get the doc tree is to use the "doc-all"
+# mega-collection. It includes all of the individual "doc-*"
+# collections,
+doc-all
+
+## Website
+#
+# This collection retrieves the www tree of the FreeBSD
+# repository
+www
+
+## Projects
+#
+# This collection retrieves the projects tree of the FreeBSD
+# repository
+projects-all
+
+## CVSROOT control files
+#
+# This is to get the control files that cvs(1) needs and the commit logs.
+cvsroot-all
+
+# These are the individual collections that make up "cvsroot-all" If you
+# use these, be sure to comment out "cvsroot-all" above. "cvsroot-common"
+# is a synthetic CVSROOT that has all the modules from the other CVSROOT-*
+# directories merged into one, and merged commitlogs via symlinks.
+#cvsroot-common
+#cvsroot-src
+#cvsroot-ports
+#cvsroot-doc
diff --git a/share/examples/cvsup/doc-supfile b/share/examples/cvsup/doc-supfile
new file mode 100644
index 0000000..2d6c2a9
--- /dev/null
+++ b/share/examples/cvsup/doc-supfile
@@ -0,0 +1,67 @@
+# $FreeBSD$
+#
+# This file contains all of the "CVSup collections" that make up the
+# source of the FreeBSD doc tree
+#
+# CVSup (CVS Update Protocol) allows you to download the latest CVS
+# tree (or any branch of development therefrom) to your system easily
+# and efficiently (far more so than with sup, which CVSup is aimed
+# at replacing). If you're running CVSup interactively, and are
+# currently using an X display server, you should run CVSup as follows
+# to keep your CVS tree up-to-date:
+#
+# cvsup doc-supfile
+#
+# If not running X, or invoking cvsup from a non-interactive script, then
+# run it as follows:
+#
+# cvsup -g -L 2 doc-supfile
+#
+# You may wish to change some of the settings in this file to better
+# suit your system:
+#
+# host=CHANGE_THIS.FreeBSD.org
+# This specifies the server host which will supply the
+# file updates. You must change it to one of the CVSup
+# mirror sites listed in the FreeBSD Handbook at
+# http://www.freebsd.org/doc/handbook/mirrors.html.
+# You can override this setting on the command line
+# with cvsup's "-h host" option.
+#
+# base=/var/db
+# This specifies the root where CVSup will store information
+# about the collections you have transferred to your system.
+# A setting of "/var/db" will generate this information in
+# /var/db/sup. You can override the "base" setting on the
+# command line with cvsup's "-b base" option. This directory
+# must exist in order to run CVSup.
+#
+# prefix=/usr
+# This specifies where to place the requested files. A
+# setting of "/usr" will place all of the files requested
+# in "/usr/doc" (e.g., "/usr/doc/en_US.ISO8859-1").
+# The prefix directory must exist in order to run CVSup.
+
+# Defaults that apply to all the collections
+#
+# IMPORTANT: Change the next line to use one of the CVSup mirror sites
+# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
+*default host=CHANGE_THIS.FreeBSD.org
+*default base=/var/db
+*default prefix=/usr
+#
+# "tag" in the next line should always either be "." to receive the most
+# up-to-date files, or left blank (i.e., "*default release=cvs") to receive
+# the CVS ,v files. The doc collection is not branched.
+#
+*default release=cvs tag=.
+*default delete use-rel-suffix
+
+# If you seem to be limited by CPU rather than network or disk bandwidth, try
+# commenting out the following line. (Normally, today's CPUs are fast enough
+# that you want to run compression.)
+*default compress
+
+# This will retrieve the entire doc branch of the FreeBSD repository.
+# This includes the handbook, FAQ, and translations thereof.
+doc-all
diff --git a/share/examples/cvsup/gnats-supfile b/share/examples/cvsup/gnats-supfile
new file mode 100644
index 0000000..429a899
--- /dev/null
+++ b/share/examples/cvsup/gnats-supfile
@@ -0,0 +1,63 @@
+# $FreeBSD$
+#
+# This file contains all of the "CVSup collections" that make up the
+# FreeBSD GNATS bug report database.
+#
+# CVSup (CVS Update Protocol) allows you to download the latest CVS
+# tree (or any branch of development therefrom) to your system easily
+# and efficiently (far more so than with sup, which CVSup is aimed
+# at replacing). If you're running CVSup interactively, and are
+# currently using an X display server, you should run CVSup as follows
+# to keep your CVS tree up-to-date:
+#
+# cvsup gnats-supfile
+#
+# If not running X, or invoking cvsup from a non-interactive script, then
+# run it as follows:
+#
+# cvsup -g -L 2 gnats-supfile
+#
+# You may wish to change some of the settings in this file to better
+# suit your system:
+#
+# host=CHANGE_THIS.FreeBSD.org
+# This specifies the server host which will supply the
+# file updates. You must change it to one of the CVSup
+# mirror sites listed in the FreeBSD Handbook at
+# http://www.freebsd.org/doc/handbook/mirrors.html.
+# You can override this setting on the command line
+# with cvsup's "-h host" option.
+#
+# base=/var/db
+# This specifies the root where CVSup will store information
+# about the collections you have transferred to your system.
+# A setting of "/var/db" will generate this information in
+# /var/db/sup. You can override the "base" setting on the
+# command line with cvsup's "-b base" option. This directory
+# must exist in order to run CVSup.
+#
+# prefix=/usr
+# This specifies where to place the requested files. A
+# setting of "/usr" will place all of the files requested
+# in "/usr/gnats".
+# The prefix directory must exist in order to run CVSup.
+
+# Defaults that apply to all the collections
+#
+# IMPORTANT: Change the next line to use one of the CVSup mirror sites
+# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
+*default host=CHANGE_THIS.FreeBSD.org
+*default base=/var/db
+*default prefix=/usr
+*default release=current
+*default delete use-rel-suffix
+
+# If you seem to be limited by CPU rather than network or disk bandwidth, try
+# commenting out the following line. (Normally, today's CPUs are fast enough
+# that you want to run compression.)
+*default compress
+
+## GNATS database
+#
+gnats
+
diff --git a/share/examples/cvsup/ports-supfile b/share/examples/cvsup/ports-supfile
new file mode 100644
index 0000000..879e58a
--- /dev/null
+++ b/share/examples/cvsup/ports-supfile
@@ -0,0 +1,137 @@
+# $FreeBSD$
+#
+# This file contains all of the "CVSup collections" that make up the
+# FreeBSD-current ports collection.
+#
+# CVSup (CVS Update Protocol) allows you to download the latest CVS
+# tree (or any branch of development therefrom) to your system easily
+# and efficiently (far more so than with sup, which CVSup is aimed
+# at replacing). If you're running CVSup interactively, and are
+# currently using an X display server, you should run CVSup as follows
+# to keep your CVS tree up-to-date:
+#
+# cvsup ports-supfile
+#
+# If not running X, or invoking cvsup from a non-interactive script, then
+# run it as follows:
+#
+# cvsup -g -L 2 ports-supfile
+#
+# You may wish to change some of the settings in this file to better
+# suit your system:
+#
+# host=CHANGE_THIS.FreeBSD.org
+# This specifies the server host which will supply the
+# file updates. You must change it to one of the CVSup
+# mirror sites listed in the FreeBSD Handbook at
+# http://www.freebsd.org/doc/handbook/mirrors.html.
+# You can override this setting on the command line
+# with cvsup's "-h host" option.
+#
+# base=/var/db
+# This specifies the root where CVSup will store information
+# about the collections you have transferred to your system.
+# A setting of "/var/db" will generate this information in
+# /var/db/sup. You can override the "base" setting on the
+# command line with cvsup's "-b base" option. This directory
+# must exist in order to run CVSup.
+#
+# prefix=/usr
+# This specifies where to place the requested files. A
+# setting of "/usr" will place all of the files requested
+# in "/usr/ports" (e.g., "/usr/ports/devel", "/usr/ports/lang").
+# The prefix directory must exist in order to run CVSup.
+
+# Defaults that apply to all the collections
+#
+# IMPORTANT: Change the next line to use one of the CVSup mirror sites
+# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
+*default host=CHANGE_THIS.FreeBSD.org
+*default base=/var/db
+*default prefix=/usr
+*default release=cvs tag=.
+*default delete use-rel-suffix
+
+# If you seem to be limited by CPU rather than network or disk bandwidth, try
+# commenting out the following line. (Normally, today's CPUs are fast enough
+# that you want to run compression.)
+*default compress
+
+## Ports Collection.
+#
+# The easiest way to get the ports tree is to use the "ports-all"
+# mega-collection. It includes all of the individual "ports-*"
+# collections,
+ports-all
+
+# These are the individual collections that make up "ports-all". If you
+# use these, be sure to comment out "ports-all" above.
+#
+# Be sure to ALWAYS cvsup the ports-base collection if you use any of the
+# other individual collections below. ports-base is a mandatory collection
+# for the ports collection, and your ports may not build correctly if it
+# is not kept up to date.
+#ports-base
+#ports-accessibility
+#ports-arabic
+#ports-archivers
+#ports-astro
+#ports-audio
+#ports-benchmarks
+#ports-biology
+#ports-cad
+#ports-chinese
+#ports-comms
+#ports-converters
+#ports-databases
+#ports-deskutils
+#ports-devel
+#ports-dns
+#ports-editors
+#ports-emulators
+#ports-finance
+#ports-french
+#ports-ftp
+#ports-games
+#ports-german
+#ports-graphics
+#ports-hebrew
+#ports-hungarian
+#ports-irc
+#ports-japanese
+#ports-java
+#ports-korean
+#ports-lang
+#ports-mail
+#ports-math
+#ports-mbone
+#ports-misc
+#ports-multimedia
+#ports-net
+#ports-net-im
+#ports-net-mgmt
+#ports-net-p2p
+#ports-news
+#ports-palm
+#ports-polish
+#ports-ports-mgmt
+#ports-portuguese
+#ports-print
+#ports-russian
+#ports-science
+#ports-security
+#ports-shells
+#ports-sysutils
+#ports-textproc
+#ports-ukrainian
+#ports-vietnamese
+#ports-www
+#ports-x11
+#ports-x11-clocks
+#ports-x11-drivers
+#ports-x11-fm
+#ports-x11-fonts
+#ports-x11-servers
+#ports-x11-themes
+#ports-x11-toolkits
+#ports-x11-wm
diff --git a/share/examples/cvsup/refuse b/share/examples/cvsup/refuse
new file mode 100644
index 0000000..96c6cd0
--- /dev/null
+++ b/share/examples/cvsup/refuse
@@ -0,0 +1,33 @@
+doc/bn_*
+doc/da_*
+doc/de_*
+doc/el_*
+doc/es_*
+doc/fr_*
+doc/hu_*
+doc/id_*
+doc/it_*
+doc/ja_*
+doc/mn_*
+doc/nl_*
+doc/no_*
+doc/pl_*
+doc/pt_*
+doc/ro_*
+doc/ru_*
+doc/sr_*
+doc/tr_*
+doc/zh_*
+ports/arabic
+ports/chinese
+ports/french
+ports/german
+ports/hebrew
+ports/hungarian
+ports/japanese
+ports/korean
+ports/polish
+ports/portuguese
+ports/russian
+ports/ukrainian
+ports/vietnamese
diff --git a/share/examples/cvsup/refuse.README b/share/examples/cvsup/refuse.README
new file mode 100644
index 0000000..0b9bbac
--- /dev/null
+++ b/share/examples/cvsup/refuse.README
@@ -0,0 +1,65 @@
+$FreeBSD$
+
+This describes the "refuse" file found in this directory. The
+explanation cannot be put inside the file itself because:
+
+ COMMENTS ARE NOT ALLOWED IN refuse FILES!
+
+Each line of the refuse file contains one or more filename patterns
+separated by white space. Everything matched by a pattern will be
+left untouched by CVSup. If a pattern matches a directory, then
+everything beneath that directory will be left alone.
+
+You can copy "refuse" to your sup directory and add or remove
+whatever you like. The example supfiles in this directory set
+CVSup's base directory to "/usr". The sup directory is in the base
+directory; i.e., it is "/usr/sup". If you have changed your base
+directory, your sup directory is /path/to/base/sup.
+
+This file used to contain /usr/src/etc/sendmail/freebsd.mc in case
+you modified that file. However, this was removed as it can break
+buildworld. Modify /etc/mail/`hostname`.mc instead.
+
+If you are an English speaker and don't wish to receive the
+foreign-language documentation or ports, use the following patterns:
+
+ doc/bn_*
+ doc/da_*
+ doc/de_*
+ doc/el_*
+ doc/es_*
+ doc/fr_*
+ doc/hu_*
+ doc/id_*
+ doc/it_*
+ doc/ja_*
+ doc/mn_*
+ doc/nl_*
+ doc/no_*
+ doc/pl_*
+ doc/pt_*
+ doc/ro_*
+ doc/ru_*
+ doc/sr_*
+ doc/tr_*
+ doc/zh_*
+ ports/arabic
+ ports/chinese
+ ports/french
+ ports/german
+ ports/hebrew
+ ports/hungarian
+ ports/japanese
+ ports/korean
+ ports/polish
+ ports/portuguese
+ ports/russian
+ ports/ukrainian
+ ports/vietnamese
+
+Use refuse files with care. Some parts of the src distribution
+depend on files in completely different parts.
+
+For more information about refuse files see cvsup(1), which is
+installed by the "cvsup" and "cvsup-bin" ports. See also the CVSup
+FAQ at <http://www.polstra.com/projects/freeware/CVSup/>.
diff --git a/share/examples/cvsup/stable-supfile b/share/examples/cvsup/stable-supfile
new file mode 100644
index 0000000..3b0c8e9
--- /dev/null
+++ b/share/examples/cvsup/stable-supfile
@@ -0,0 +1,115 @@
+# $FreeBSD$
+#
+# This file contains all of the "CVSup collections" that make up the
+# FreeBSD-stable source tree.
+#
+# CVSup (CVS Update Protocol) allows you to download the latest CVS
+# tree (or any branch of development therefrom) to your system easily
+# and efficiently (far more so than with sup, which CVSup is aimed
+# at replacing). If you're running CVSup interactively, and are
+# currently using an X display server, you should run CVSup as follows
+# to keep your CVS tree up-to-date:
+#
+# cvsup stable-supfile
+#
+# If not running X, or invoking cvsup from a non-interactive script, then
+# run it as follows:
+#
+# cvsup -g -L 2 stable-supfile
+#
+# You may wish to change some of the settings in this file to better
+# suit your system:
+#
+# host=CHANGE_THIS.FreeBSD.org
+# This specifies the server host which will supply the
+# file updates. You must change it to one of the CVSup
+# mirror sites listed in the FreeBSD Handbook at
+# http://www.freebsd.org/doc/handbook/mirrors.html.
+# You can override this setting on the command line
+# with cvsup's "-h host" option.
+#
+# base=/var/db
+# This specifies the root where CVSup will store information
+# about the collections you have transferred to your system.
+# A setting of "/var/db" will generate this information in
+# /var/db/sup. You can override the "base" setting on the
+# command line with cvsup's "-b base" option. This directory
+# must exist in order to run CVSup.
+#
+# prefix=/usr
+# This specifies where to place the requested files. A
+# setting of "/usr" will place all of the files requested
+# in "/usr/src" (e.g., "/usr/src/bin", "/usr/src/lib").
+# The prefix directory must exist in order to run CVSup.
+#
+###############################################################################
+#
+# DANGER! WARNING! LOOK OUT! VORSICHT!
+#
+# If you add any of the ports or doc collections to this file, be sure to
+# specify them with a "tag" value set to ".", like this:
+#
+# ports-all tag=.
+# doc-all tag=.
+#
+# If you leave out the "tag=." portion, CVSup will delete all of
+# the files in your ports or doc tree. That is because the ports and doc
+# collections do not use the same tags as the main part of the FreeBSD
+# source tree.
+#
+###############################################################################
+
+# Defaults that apply to all the collections
+#
+# IMPORTANT: Change the next line to use one of the CVSup mirror sites
+# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
+*default host=CHANGE_THIS.FreeBSD.org
+*default base=/var/db
+*default prefix=/usr
+# The following line is for 7-stable. If you want 6-stable, 5-stable,
+# 4-stable, 3-stable, or 2.2-stable, change to "RELENG_6", "RELENG_5",
+# "RELENG_4", "RELENG_3", or "RELENG_2_2" respectively.
+*default release=cvs tag=RELENG_7
+*default delete use-rel-suffix
+
+# If you seem to be limited by CPU rather than network or disk bandwidth, try
+# commenting out the following line. (Normally, today's CPUs are fast enough
+# that you want to run compression.)
+*default compress
+
+## Main Source Tree.
+#
+# The easiest way to get the main source tree is to use the "src-all"
+# mega-collection. It includes all of the individual "src-*" collections.
+# Please note: If you want to track -STABLE, leave this uncommented.
+src-all
+
+# These are the individual collections that make up "src-all". If you
+# use these, be sure to comment out "src-all" above.
+#src-base
+#src-bin
+#src-cddl
+#src-contrib
+#src-etc
+#src-games
+#src-gnu
+#src-include
+#src-kerberos5
+#src-kerberosIV
+#src-lib
+#src-libexec
+#src-release
+#src-rescue
+#src-sbin
+#src-share
+#src-sys
+#src-tools
+#src-usrbin
+#src-usrsbin
+# These are the individual collections that make up FreeBSD's crypto
+# collection. They are no longer export-restricted and are a part of
+# src-all
+#src-crypto
+#src-eBones
+#src-secure
+#src-sys-crypto
diff --git a/share/examples/cvsup/standard-supfile b/share/examples/cvsup/standard-supfile
new file mode 100644
index 0000000..5eb5968
--- /dev/null
+++ b/share/examples/cvsup/standard-supfile
@@ -0,0 +1,94 @@
+# $FreeBSD$
+#
+# This file contains all of the "CVSup collections" that make up the
+# FreeBSD-current source tree.
+#
+# CVSup (CVS Update Protocol) allows you to download the latest CVS
+# tree (or any branch of development therefrom) to your system easily
+# and efficiently (far more so than with sup, which CVSup is aimed
+# at replacing). If you're running CVSup interactively, and are
+# currently using an X display server, you should run CVSup as follows
+# to keep your CVS tree up-to-date:
+#
+# cvsup standard-supfile
+#
+# If not running X, or invoking cvsup from a non-interactive script, then
+# run it as follows:
+#
+# cvsup -g -L 2 standard-supfile
+#
+# You may wish to change some of the settings in this file to better
+# suit your system:
+#
+# host=CHANGE_THIS.FreeBSD.org
+# This specifies the server host which will supply the
+# file updates. You must change it to one of the CVSup
+# mirror sites listed in the FreeBSD Handbook at
+# http://www.freebsd.org/doc/handbook/mirrors.html.
+# You can override this setting on the command line
+# with cvsup's "-h host" option.
+#
+# base=/var/db
+# This specifies the root where CVSup will store information
+# about the collections you have transferred to your system.
+# A setting of "/var/db" will generate this information in
+# /var/db/sup. You can override the "base" setting on the
+# command line with cvsup's "-b base" option. This directory
+# must exist in order to run CVSup.
+#
+# prefix=/usr
+# This specifies where to place the requested files. A
+# setting of "/usr" will place all of the files requested
+# in "/usr/src" (e.g., "/usr/src/bin", "/usr/src/lib").
+# The prefix directory must exist in order to run CVSup.
+
+# Defaults that apply to all the collections
+#
+# IMPORTANT: Change the next line to use one of the CVSup mirror sites
+# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
+*default host=CHANGE_THIS.FreeBSD.org
+*default base=/var/db
+*default prefix=/usr
+*default release=cvs tag=.
+*default delete use-rel-suffix
+
+# If you seem to be limited by CPU rather than network or disk bandwidth, try
+# commenting out the following line. (Normally, today's CPUs are fast enough
+# that you want to run compression.)
+*default compress
+
+## Main Source Tree.
+#
+# The easiest way to get the main source tree is to use the "src-all"
+# mega-collection. It includes all of the individual "src-*" collections.
+src-all
+
+# These are the individual collections that make up "src-all". If you
+# use these, be sure to comment out "src-all" above.
+#src-base
+#src-bin
+#src-cddl
+#src-contrib
+#src-etc
+#src-games
+#src-gnu
+#src-include
+#src-kerberos5
+#src-kerberosIV
+#src-lib
+#src-libexec
+#src-release
+#src-rescue
+#src-sbin
+#src-share
+#src-sys
+#src-tools
+#src-usrbin
+#src-usrsbin
+# These are the individual collections that make up FreeBSD's crypto
+# collection. They are no longer export-restricted and are a part of
+# src-all
+#src-crypto
+#src-eBones
+#src-secure
+#src-sys-crypto
diff --git a/share/examples/cvsup/www-supfile b/share/examples/cvsup/www-supfile
new file mode 100644
index 0000000..a15ece5
--- /dev/null
+++ b/share/examples/cvsup/www-supfile
@@ -0,0 +1,61 @@
+# $FreeBSD$
+#
+# This file contains all of the "CVSup collections" that make up the
+# source of the FreeBSD www tree
+#
+# CVSup (CVS Update Protocol) allows you to download the latest CVS
+# tree (or any branch of development therefrom) to your system easily
+# and efficiently (far more so than with sup, which CVSup is aimed
+# at replacing). If you're running CVSup interactively, and are
+# currently using an X display server, you should run CVSup as follows
+# to keep your CVS tree up-to-date:
+#
+# cvsup www-supfile
+#
+# If not running X, or invoking cvsup from a non-interactive script, then
+# run it as follows:
+#
+# cvsup -g -L 2 www-supfile
+#
+# You may wish to change some of the settings in this file to better
+# suit your system:
+#
+# host=CHANGE_THIS.FreeBSD.org
+# This specifies the server host which will supply the
+# file updates. You must change it to one of the CVSup
+# mirror sites listed in the FreeBSD Handbook at
+# http://www.freebsd.org/doc/handbook/mirrors.html.
+# You can override this setting on the command line
+# with cvsup's "-h host" option.
+#
+# base=/var/db
+# This specifies the root where CVSup will store information
+# about the collections you have transferred to your system.
+# A setting of "/var/db" will generate this information in
+# /var/db/sup. You can override the "base" setting on the
+# command line with cvsup's "-b base" option. This directory
+# must exist in order to run CVSup.
+#
+# prefix=/usr
+# This specifies where to place the requested files. A
+# setting of "/usr" will place all of the files requested
+# in "/usr/www" (e.g., "/usr/www/en", "/usr/www/ja").
+# The prefix directory must exist in order to run CVSup.
+
+# Defaults that apply to all the collections
+#
+# IMPORTANT: Change the next line to use one of the CVSup mirror sites
+# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
+*default host=CHANGE_THIS.FreeBSD.org
+*default base=/var/db
+*default prefix=/usr
+*default release=cvs tag=.
+*default delete use-rel-suffix
+
+# If you seem to be limited by CPU rather than network or disk bandwidth, try
+# commenting out the following line. (Normally, today's CPUs are fast enough
+# that you want to run compression.)
+*default compress
+
+# This collection retrieves the www/ tree of the FreeBSD repository
+www
diff --git a/share/examples/diskless/ME b/share/examples/diskless/ME
new file mode 100644
index 0000000..ff06be2
--- /dev/null
+++ b/share/examples/diskless/ME
@@ -0,0 +1,52 @@
+IMPORTANT NOTE:
+
+As of Feb. 11, 2002 (and indeed, for quite some time before that),
+the /etc/rc.diskless{1,2} scripts support a slightly different
+diskless boot process than the one documented in the rest of
+this file (which is 3 years old).
+
+I am not deleting the information below because it contains some
+useful background information on diskless operation, but for the
+actual details you should look at /etc/rc.diskless1, /etc/rc.diskless2,
+and the /usr/share/examples/diskless/clone_root script which can
+be useful to set up clients and server for diskless boot.
+
+--- $FreeBSD$ ---
+------------------------------------------------------------------------
+
+When templating, /conf/ME is typically a softlink to
+/conf/<appropriate-machine>. When doing a diskless boot, /conf/ME is
+retargeted by /etc/rc.diskless1 from pointing to the server to pointing
+to the client's directory, /conf/<ip-address-of-client>. The retargeting
+is accomplished through an MFS -o union mount.
+
+When templating, this softlink should be different for each machine.
+When doing a diskless boot, this softlink is typically part of the / NFS
+mount from the server and points to the server's conf directory, but gets
+retargeted during the /etc/rc.diskless1 phase.
+
+System-wide configuration files must generally be targeted through /conf/ME.
+For example, your /etc/rc.conf.local should become a softlink to
+/conf/ME/rc.conf.local and your real rc.conf.local should go into the
+appropriate /conf/<appropriate-machine> directory. This is also true of
+/etc/rc.local, /etc/fstab, /etc/syslog.conf, /etc/ccd.conf, /etc/ipfw.conf,
+/etc/motd, /etc/resolv.conf, and possibly even /etc/ttys ( if you want
+to start an X session up on boot on certain of your machines ).
+
+When templating, you duplicate your / and /usr partitions on each machine's
+local disk from a single master ( assuming /var and /home reside elsewhere ),
+EXCEPT for the /conf/ME softlink. The /conf/ME softlink is the only thing
+on / that should be different for each machine.
+
+There are often categories of configuration files. For example, all of your
+shell machines may use one resolv.conf while all of your mail proxies may
+use another. Configuration files can be categorized fairly easily through
+/conf/HT.<category> directories. You put the actual configuration file in
+/conf/HT.<category> and make a softlink from
+/conf/ME/<appropriate-machines>/config-file to "../HT.<category/config-file".
+This means that access to these files tends to run through more then one
+softlink. The advantage is that for all the complexity of your /conf
+directory hierarchy, most of your common config files exist in only one place
+in reality.
+
+
diff --git a/share/examples/diskless/README.BOOTP b/share/examples/diskless/README.BOOTP
new file mode 100644
index 0000000..5ee5343
--- /dev/null
+++ b/share/examples/diskless/README.BOOTP
@@ -0,0 +1,172 @@
+IMPORTANT NOTE:
+
+As of Feb. 11, 2002 (and indeed, for quite some time before that),
+the /etc/rc.diskless{1,2} scripts support a slightly different
+diskless boot process than the one documented in the rest of
+this file (which is 3 years old).
+
+I am not deleting the information below because it contains some
+useful background information on diskless operation, but for the
+actual details you should look at /etc/rc.diskless1, /etc/rc.diskless2,
+and the /usr/share/examples/diskless/clone_root script which can
+be useful to set up clients and server for diskless boot.
+
+--- $FreeBSD$ ---
+------------------------------------------------------------------------
+
+ BOOTP configuration mechanism
+
+ Matthew Dillon
+ dillon@backplane.com
+
+ BOOTP kernels automatically configure the machine's IP address, netmask,
+ optional NFS based swap, and NFS based root mount. The NFS server will
+ typically export a shared read-only /, /usr, and /var to any number of
+ workstations. The shared read-only root is typically either the server's
+ own root or, if you are more security conscious, a contrived root.
+
+ The key issue with starting up a BOOTP kernel is that you typically want
+ to export read-only NFS partitions from the server, yet still be able to
+ customize each workstation ( or not ).
+
+ /etc/rc.diskless1 is responsible for doing core mounts and for retargeting
+ /conf/ME ( part of the read-only root NFS mount ) to /conf/$IP_OF_CLIENT.
+ /etc/rc.conf.local and /etc/rc.local, along with other machine-specific
+ configuration files, are typically softlinks to /conf/ME/<filename>.
+
+ In the BOOTP workstation /conf/$IP/rc.conf.local, you must typically
+ turn *OFF* most of the system option defaults in /etc/rc.conf as well
+ as do additional custom configuration of your environment
+
+ The /usr/src/share/examples/diskless directory contains a typical
+ X session / sshd based workstation configuration. The directories
+ involved are HT.DISKLESS/ and 192.157.86.12/.
+
+ Essentially, the $IP/ directory ( which rc.diskless looks for in
+ /conf/$IP/ ) contains all the junk. The HT.DISKLESS directory exists
+ to hold common elements of your custom configuration so you do not have
+ to repeat those elements for each workstation. The example /conf
+ structure included here shows how to create a working sshd setup ( so
+ you can sshd into the diskless workstation ), retarget xdm's pid and error
+ files to R+W directories if /usr is mounted read-only, and retarget
+ syslogd and other programs. This example is not designed to run out of
+ the box and some modifications are required.
+
+ >> NOTE << HT.DISKLESS/ttys contains the typical configuration required
+ to bring X up at boot time. Essentially, it runs xdm in the foreground
+ with the appropriate arguments rather then a getty on ttyv0. You must
+ run xdm on ttyv0 in order to prevent xdm racing with getty on a virtual
+ terminal. Such a race can cause your keyboard to be directed away from
+ the X session, essentially making the session unusable.
+
+ Typically you should start with a clean slate by tar-copying this example
+ directory to /conf and then hack on it in /conf rather then in
+ /usr/share/examples/diskless.
+
+ BOOTP CLIENT SETUP
+
+ Here is a typical kernel configuration. If you have only one ethernet
+ interface you do not need to wire BOOTP to a specific interface name.
+ BOOTP requires NFS and NFS_ROOT, and our boot scripts require MFS. If
+ your /tmp is *not* a softlink to /var/tmp, the scripts also require NULLFS
+
+# BootP
+#
+options BOOTP # Use BOOTP to obtain IP address/hostname
+options BOOTP_NFSROOT # NFS mount root filesystem using BOOTP info
+options "BOOTP_NFSV3" # Use NFS v3 to NFS mount rootoptions
+options BOOTP_COMPAT # Workaround for broken bootp daemons.
+#options "BOOTP_WIRED_TO=de0"
+
+options MFS # Memory File System
+options NFS # Network Filesystem
+options NFS_ROOT # Nfs can be root
+options NULLFS # nullfs to map /var/tmp to /tmp
+
+ BOOTP SERVER SETUP
+
+ The BOOTP server must be running on the same logical LAN as the the
+ BOOTP client(s). You need to setup two things:
+
+ (1) You need to NFS-export /, /usr, and /var.
+
+ (2) You need to run a BOOTP server. DHCPD can do this.
+
+
+ NFS Export:
+
+ Here is an example "/etc/exports" file.
+
+/ -ro -maproot=root: -network 192.157.86.0 -mask 255.255.255.192
+/usr -ro -maproot=root: -network 192.157.86.0 -mask 255.255.255.192
+/var -ro -maproot=root: -network 192.157.86.0 -mask 255.255.255.192
+
+ In order to be an NFS server, the server must run portmap, mountd,
+ nfsd, and rpc.statd. The standard NFS server options in /etc/rc.conf
+ will work ( you should put your overrides in /etc/rc.conf.local on the
+ server and not edit the distribution /etc/rc.conf, though ).
+
+ BOOTP Server:
+
+ This configuration file "/etc/dhcpd.conf" example is for
+ the '/usr/ports/net/isc-dhcp' dhcpd port.
+
+ subnet 192.157.86.0 netmask 255.255.255.192 {
+ # range if you want to run the core dhcpd service of
+ # dynamic IP assignment, but it is not used with BOOTP
+ # workstations
+ range 192.157.86.32 192.157.86.62;
+
+ # misc configuration.
+ #
+ option routers 192.157.86.2;
+ option domain-name-servers 192.157.86.2;
+
+ server-name "apollo.fubar.com";
+ option subnet-mask 255.255.255.192;
+ option domain-name-servers 192.157.86.2;
+ option domain-name "fubar.com";
+ option broadcast-address 192.157.86.63;
+ option routers 192.157.86.2;
+ }
+
+ host test1 {
+ hardware ethernet 00:a0:c9:d3:38:25;
+ fixed-address 192.157.86.11;
+ option root-path "192.157.86.2:/";
+ option option-128 "192.157.86.2:/images/swap";
+ }
+
+ host test2 {
+ # hardware ethernet 00:e0:29:1d:16:09;
+ hardware ethernet 00:10:5a:a8:94:0e;
+ fixed-address 192.157.86.12;
+ option root-path "192.157.86.2:/";
+ option option-128 "192.157.86.2:/images/swap";
+ }
+
+ SWAP. This example includes options to automatically BOOTP configure
+ NFS swap on each workstation. In order to use this capabilities you
+ need to NFS-export a swap directory READ+WRITE to the workstations.
+
+ You must then create a swap directory for each workstation you wish to
+ assign swap to. In this example I created a dummy user 'lander' and
+ did an NFS export of /images/swap enforcing a UID of 'lander' for
+ all accesses.
+
+ apollo:/usr/ports/net# ls -la /images/swap
+ total 491786
+ drwxr-xr-x 2 root wheel 512 Dec 28 07:00 .
+ drwxr-xr-x 8 root wheel 512 Jan 20 10:54 ..
+ -rw-r--r-- 1 lander wheel 33554432 Dec 23 14:35 swap.192.157.86.11
+ -rw-r--r-- 1 lander wheel 335544320 Jan 24 16:55 swap.192.157.86.12
+ -rw-r--r-- 1 lander wheel 134217728 Jan 21 17:19 swap.192.157.86.6
+
+ A swap file is best created with dd:
+
+ # create a 32MB swap file for a BOOTP workstation
+ dd if=/dev/zero of=swap.IPADDRESS bs=1m count=32
+
+ It is generally a good idea to give your workstations some swap space,
+ but not a requirement if they have a lot of memory.
+
diff --git a/share/examples/diskless/README.TEMPLATING b/share/examples/diskless/README.TEMPLATING
new file mode 100644
index 0000000..b094267
--- /dev/null
+++ b/share/examples/diskless/README.TEMPLATING
@@ -0,0 +1,301 @@
+IMPORTANT NOTE:
+
+As of Feb. 11, 2002 (and indeed, for quite some time before that),
+the /etc/rc.diskless{1,2} scripts support a slightly different
+diskless boot process than the one documented in the rest of
+this file (which is 3 years old).
+
+I am not deleting the information below because it contains some
+useful background information on diskless operation, but for the
+actual details you should look at /etc/rc.diskless1, /etc/rc.diskless2,
+and the /usr/share/examples/diskless/clone_root script which can
+be useful to set up clients and server for diskless boot.
+
+--- $FreeBSD$ ---
+------------------------------------------------------------------------
+
+ TEMPLATING machine configurations
+
+ Matthew Dillon
+ dillon@backplane.com
+
+ This document describes a general mechanism by which you can template
+ / and /usr. That is, to keep a 'master template' of / and /usr on a
+ separate machine which is then used to update the rest of your machines.
+
+ Generally speaking, you can't simply mirror /. You might be able to
+ get away with mirroring /usr. There are two main problems involved with
+ templating:
+
+ (1) Avoiding overwriting run-time generated files
+
+ By default, the system maintains a number of files in the root
+ partition. For example, sendmail will dbm /etc/aliases into
+ /etc/aliases.db. vipw or chpass or other password related routines
+ will regenerate the password dbm's /etc/spwd.db, /etc/pwd.db, and
+ passwd. /etc/namedb/s might contain generated secondaries. And
+ so forth.
+
+ The templating mechanism must avoid copying over such files.
+
+ (2) Customizing machines.
+
+ Customizing machines is actually considerably simpler. You create
+ a configuration hierarchy and convert the configuration files that
+ have to be customized into softlinks that run through a special
+ softlink in the configuration directory. This will work for every
+ configuration file except possibly /etc/master.passwd
+
+ For example, /etc/resolv.conf would be turned into a softlink to
+ /conf/ME/resolv.conf, and /conf/ME itself would be a softlink to
+ /conf/<HOSTNAME>. The actual resolv.conf configuration file
+ would reside in /conf/<HOSTNAME>.
+
+ If you have a lot of hosts, some configuration files may be commonly
+ classified. For example, all your shell machines might have the
+ same /etc/resolv.conf. The solution is to make
+ /conf/<HOSTNAME>/resolv.conf a softlink to a common directory, say
+ /conf/HT.SHELL/resolv.conf. It may sound a little messy, but this
+ sort of categorization actually makes the sysadmins job much, much
+ easier.
+
+ The /conf/ directory hierarchy is stored on the template and
+ distributed to all the machines along with the rest of the root
+ partition.
+
+ This type of customization is taken from my direct experience
+ instituting such a system at BEST. At the time, BEST had over 45
+ machines managed from a single template.
+
+ RUN-TIME GENERATED OR MODIFIED FILES IN / or /USR
+
+ /etc/aliases.db
+ /etc/master.passwd
+ /etc/spwd.db
+ /etc/pwd.db
+ /etc/passwd
+ /etc/namedb/s
+ /root/.history
+ /root/.ssh/identity
+ /root/.ssh/identity.pub
+ /root/.ssh/random_seed
+ /root/.ssh/known_hosts
+ /conf/ME
+ /kernel* ( note 2 )
+ /dev ( note 3 )
+ /var ( note 4 )
+ /home ( note 4 )
+ /lost+found
+
+ /usr/lost+found
+ /usr/home ( note 4 )
+ /usr/crash ( note 5 )
+ /usr/obj ( note 5 )
+ /usr/ports ( note 5 )
+ /usr/src ( note 5 )
+ /usr/local/crack ( note 5 )
+ /usr/X11R6/lib/X11/xdm/xdm-errors ( note 6 )
+ /usr/X11R6/lib/X11/xdm/xdm-pid ( note 6 )
+ /usr/local/etc/ssh_host_key ( note 6 )
+ /usr/local/etc/ssh_host_key.pub ( note 6 )
+ /usr/local/etc/ssh_random_seed ( note 6 )
+
+ /conf/ME ( note 7 )
+
+ note 2: You typically want to update kernels manually and *NOT*
+ template them as a safety measure. This also allows you to run
+ different kernels on different machines or.
+
+ note 3: /dev must be updated manually. Some devices, such as tty's and
+ pty's, use the access and/or modify time and/or user/group
+ operationally and regenerating the devices on the fly would be
+ bad.
+
+ note 4: /var and /home are usually separately mounted partitions and
+ thus would not fall under the template, but as a safety measure
+ the template copier refuse to copy directories named 'home'.
+
+ note 5: These are directories that are as often created directly on
+ /usr as they are separately-mounted partitions. You typically
+ do not want to template such directories.
+
+ note 6: Note that you can solve the problem of xdm and sshd creating
+ files in /usr. With xdm, edit /usr/X11R6/lib/xdm/xdm-config
+ and change the errorLogFile and pidFile config lines.
+
+ With sshd, add 'HostKey' and 'RandomSeed' directives to specify
+ /var/db for the location of the host key and run-time sshd
+ random seed:
+
+ HostKey /var/db/ssh_host_key
+ RandomSeed /var/db/ssh_random_seed
+
+ note 7: In this example, /conf/ME is the machine customizer and must
+ be pointed to the /conf/<full-host-name>/ directory, which is
+ different for each machine. Thus, the /conf/ME softlink
+ should never be overwritten by the templating copy.
+
+
+ TYPICAL CUSTOMIZED CONFIGRATION SOFTLINKS
+
+ The following files typically need to be turned into softlinks
+ to /conf/ME/<filename>:
+
+ /etc/ccd.conf -> /conf/ME/ccd.conf
+ /etc/ipfw.conf ...
+ /etc/fstab
+ /etc/motd
+ /etc/resolv.conf
+ /etc/aliases
+ /etc/sendmail.cw
+ /etc/organization
+ /etc/named.conf
+ /etc/rc.conf.local
+ /etc/printcap
+ /etc/inetd.conf
+ /etc/login.conf
+ /etc/gettytab
+ /etc/ntp.conf
+ /etc/exports
+ /root/.k5login -> /conf/ME/root/.k5login
+
+ And, of course, /conf/ME is usually a softlink to the appropriate
+ /conf/<full-host-name>/. Depending on your system configuration,
+ there may be other files not listed above that you have to worry about.
+
+ In many cases, /conf/ME/filename is itself a softlink to
+ "../HT.xxxx/filename", where HT.xxxx is something like HT.STD ... this
+ added complexity actually makes it easier to manage multiple
+ classifications of machines.
+
+ DELETION OF FILES
+
+ Any file found on the template destination that does not exist in the
+ source and is not listed as an exception by the source should be deleted.
+ However, deletion can be dangerous and cpdup will ask for confirmation
+ by default. Once you know you aren't going to blow things up, you can
+ turn this feature off and update your systems automatically from cron.
+
+ By formalizing the delete operation, you can be 100% sure that it is
+ possible to recreate / and /usr on any machine with only the original
+ template and a backup of the ( relatively few ) explicitly-excepted
+ files. The most common mistake a sysop makes is to make a change to a
+ file in / or /usr on a target machine instead of the template machine.
+ If the target machine is updated once a night from cron, the sysop
+ quickly learns not to do this ( because his changes get overwritten
+ overnight ). With a manual update, these sorts of mistakes can propagate
+ for weeks or months before they are caught.
+
+ TEMPLATE COPYING AND SAFETY
+ THE CPDUP PROGRAM
+
+ The 'cpdup' program is a program which efficiently duplicates a directory
+ tree. The program copies source to destination, duplicating devices,
+ softlinks, hardlinks, files, modification times, uid, gid, flags, perms,
+ and so forth. The program incorporates several major features:
+
+ * The program refuses, absolutely, to cross partition boundaries.
+ i.e. if you were copying the template /usr from an NFS mount to
+ your /usr, and you had a mount point called /usr/home, the
+ template copying program would *NOT* descend into /usr/home on
+ the destination.
+
+ This is a safety.
+
+ * The program accesses a file called .cpignore in each directory
+ it descends into on the source to obtain a list of exceptions
+ for that directory -- that is, files not to copy or mess with.
+
+ This is a templating function.
+
+ * The program refuses to delete a directory on the destination
+ being replaced by a softlink or file on the source.
+
+ This is a safety mechanism
+
+ * The program is capable of maintaining MD5 check cache files and
+ doing an MD5 check between source and destination during the
+ scan.
+
+ * The program is capable of deleting files/directories on the
+ destination that do not exist on the source, but asks for
+ confirmation by default.
+
+ This is a templating and a safety mechanism.
+
+ * The program uses a copy-to-tmp-and-rename methodology allowing
+ it to be used to update live filesystems.
+
+ This is a templating mechanism.
+
+ * The program, by default, tries to determine if a copy is required
+ by checking modify times, file size, perms, and other stat
+ elements. If the elements match, it does not bother to copy
+ ( unless an MD5 check is being made, in which case it must read
+ the destination file ).
+
+ You typically run cpdup on the target machine. The target machine
+ temporarily mounts the template machine's / and /usr via NFS, read-only,
+ and runs cpdup to update / and /usr. If you use this methodology note
+ that THERE ARE SECURITY CONSIDERATIONS! See 'SECURITY CONSIDERATIONS WITH
+ NFS' below.
+
+ Whatever script you use that does the NFS mounts should ensure that the
+ mount succeeded before continuing with the cpdup.
+
+ You should create .cpignore files in the appropriate directories on the
+ template machine's / and /usr partitions so as not to overwrite active
+ files on the target. The most critical .cpignore files should be
+ protected with 'chflags schg .cpignore'. Specifically, the ones in /
+ and /etc, but possibly others as well. For example, the .cpignore
+ hierarchy for protect /root is:
+
+ # /root/.cpignore contains
+ .history
+
+ # /root/.ssh/.cpignore contains
+ random_seed
+ known_hosts
+ authorized_keys
+ identity
+ identity.pub
+
+ WHEN INITIALLY CONVERTING A TARGET MACHINE TO USE TEMPLATING, ALWAYS
+ MAKE A FULL BACKUP OF THE TARGET MACHINE FIRST! You may accidently delete
+ files on the target during the conversion due to forgetting to enter
+ items into appropriate .cpignore files on the source.
+
+ SECURITY CONSIDERATIONS WITH NFS ROOT EXPORT FROM TEMPLATE MACHINE
+ SECURITY CONSIDERATIONS WITH NFS USR EXPORT FROM TEMPLATE MACHINE
+
+ There are some serious security considerations that must be taken into
+ account when exporting / and /usr on the template machine.
+
+ * only export read-only
+
+ * the password file ( aka vipw ) may not contain any crypted passwords
+ at all. You MUST use ssh or kerberos to access the template machine.
+
+ You can get away with giving only root a crypted password, but only
+ if you disallow network root logins and only allow direct root
+ logins on the console.
+
+ * The machine's private ssh_host_key usually resides in /usr/local/etc.
+ You must move this key to /var/db. You can softlink link so no
+ modification of sshd_config is required.
+
+ * The machine's private ~root/.ssh/identity file is also exposed by
+ the NFS export, you should move this file to /var/db as well and
+ put a softlink in ~root/.ssh.
+
+ * DON'T EXPORT /var ! Either that, or don't put the private keys
+ in /var/db ... put them somewhere else.
+
+ * You may want to redirect the location of the random_seed file, which
+ can be done by editing ~root/.ssh/sshd_config and
+ /usr/local/etc/sshd_config so it is not exposed either.
+
+ -Matt
+ Matthew Dillon
+ dillon@backplane.com
+
diff --git a/share/examples/diskless/clone_root b/share/examples/diskless/clone_root
new file mode 100755
index 0000000..22bd70c
--- /dev/null
+++ b/share/examples/diskless/clone_root
@@ -0,0 +1,138 @@
+#!/bin/sh
+#
+# (C) 2001 Luigi Rizzo, Gabriele Cecchetti
+# <Standard BSD copyright>
+# Revised 2001.04.16
+#
+# $FreeBSD$
+#
+# clone root filesystem for diskless root stuff
+#
+# usage
+# clone_root all to do a full copy (e.g. bin, sbin...)
+# clone_root update to recreate /var (including devices)
+# clone_root to copy /conf and password-related files
+#
+# This script assumes that you use a shared readonly root and /usr
+# partition. The script creates a partial clone of the root partition,
+# and puts it into ${DEST} (defaults to /diskless_root ) on the server,
+# where it is read.
+#
+# To run a diskless install you need to do the following:
+#
+# create /conf/default/etc/fstab
+# this will replace the standard /etc/fstab and should contain
+# as a minimum the following lines
+# ${SERVER}:${DEST} / nfs ro 0 0
+# ${SERVER}:/usr /usr nfs ro 0 0
+# proc /proc procfs rw 0 0
+#
+# create /conf/default/etc/rc.conf
+# this will replace the standard rc.conf and should contain
+# the startup options for the diskless client. Most likely
+# you will not need to set hostname and ifconfig_* because these
+# will be already set by the startup code. You will also
+# probably need to set local_startup="" so that the server's
+# local startup files will not be used.
+#
+# create a kernel config file in /sys/i386/conf/DISKLESS with
+# options MD_ROOT
+# options BOOTP
+# options BOOTP_NFSROOT
+# options BOOTP_COMPAT
+# and do a full build of the kernel.
+# If you use the firewall, remember to default to open or your kernel
+# will not be able to send/receive the bootp packets.
+#
+# On the server:
+# enable NFS server and set /etc/exports as
+# ${DEST} -maproot=0 -alldirs <list of diskless clients>
+# /usr -alldirs
+#
+# enable bootpd by uncommenting the bootps line in /etc/inetd.conf
+# and putting at least the following entries in /etc/bootptab:
+# .default:\
+# hn:ht=1:vm=rfc1048:\
+# :sm=255.255.255.0:\
+# :sa=${SERVER}:\
+# :gw=${GATEWAY}:\
+# :rp="${SERVER}:${DEST}":
+#
+# client1:ha=0123456789ab:tc=.default
+#
+# and make sure that client1 is listed in /etc/hosts
+
+# VARIABLES:
+# some manual init is needed here.
+# DEST the diskless_root dir (goes into /etc/bootptab and /etc/exports
+# on the server)
+DEST=/diskless_root
+
+# you should not touch these vars:
+# SYSDIRS system directories and mountpoints
+# DIRS mountpoints (empty dirs)
+# PWFILES files related to passwords
+# TOCOPY files and dirs to copy from root partition
+
+SYSDIRS="dev proc root usr var"
+DIRS="cdrom home mnt"
+PWFILES="master.passwd passwd spwd.db pwd.db"
+TOCOPY="bin boot compat etc modules sbin stand sys"
+
+init_diskless_root() {
+ echo "Cleaning old diskless root ($DEST)"
+ cd /
+ rm -rf ${DEST} && echo "Old diskless root removed."
+ echo "Creating $DEST..."
+ mkdir -p $DEST && echo "New diskless root created."
+ echo "+++ Now copy original tree from / ..."
+ ex=""
+ (cd / ; tar -clf - ${TOCOPY} ) | (cd $DEST; tar xvf - )
+ #(cd / ; find -x dev | cpio -o -H newc ) | \
+ # (cd $DEST; cpio -i -H newc -d )
+ echo "+++ Fixing permissions on some objects"
+ chmod 555 $DEST/sbin/init
+}
+
+update_conf_and_pw() {
+ echo "+++ Copying files in /conf and password files"
+ (cd ${DEST} ; rm -rf conf )
+ (cd / ; tar clf - conf ) | (cd ${DEST}; tar xvf - )
+ mkdir -p ${DEST}/conf/etc # used to mount things
+ (cd /etc ; tar cvf - ${PWFILES} ) | (cd ${DEST}/etc ; tar xf - )
+}
+
+update() {
+ echo "+++ update: create mountpoints and device entries, kernel"
+ for i in ${SYSDIRS} ${DIRS}
+ do
+ rm -r -f ${DEST}/$i
+ mkdir -p ${DEST}/$i && chown root:wheel ${DEST}/$i && echo -n "$i "
+ done
+ echo "."
+ ln -s /var/tmp ${DEST}/tmp
+ echo "+++ Copying kernel from /sys/compile/DISKLESS"
+ cp /sys/compile/DISKLESS/kernel $DEST/kernel
+ echo "."
+}
+
+
+# Main entry point
+case $1 in
+ all) # clean and reinstall the whole diskless_root
+ init_diskless_root
+ update
+ update_conf_and_pw
+ ;;
+
+ update) # clean and rebuild mountpoints and device entries
+ update
+ update_conf_and_pw
+ ;;
+
+ *) # copy /conf and password files
+ update_conf_and_pw
+ ;;
+esac
+exit 0
+### end of file ###
diff --git a/share/examples/drivers/README b/share/examples/drivers/README
new file mode 100644
index 0000000..d74089b
--- /dev/null
+++ b/share/examples/drivers/README
@@ -0,0 +1,43 @@
+$FreeBSD$
+
+Author: Julian Elischer
+
+The files in this directory are shell scripts.
+
+They will, when run, create an example skeleton driver
+for you. You can use this driver as a starting point for
+writing drivers for your own devices. They have all the hooks needed
+for initialization, probing, attaching, as well as DEVFS
+node creation. They also create sample ioctl commands and a sample
+ioctl definition .h file in /sys/sys. In other words they are fully
+functional in a 'skeleton' sort of a way. They support multiple devices
+so that you may have several of your 'foobar' devices probed and attached
+at once.
+
+I expect that these scripts will improve with time.
+
+At present these scripts also link the newly created driver into
+the kernel sources in /sys. Possibly a better way would be
+to make them interactive. (and ask what kernel tree to use as well as
+a name for the driver.).
+
+There are presently two scripts.
+One for making a real device driver for ISA devices, and
+one for making a device driver for pseudo devices (e.g. /dev/null).
+Hopefully they will be joined by similar scripts for creating
+skeletons for PCI and EISA devices as well.
+
+Give them a single argument: the name of the driver.
+They will use this given name in many places within the driver,
+both in lower and upper case form. (conforming to normal usage).
+
+The skeleton driver should already link with the kernel
+and in fact the shell script will compile a kernel with the new
+drive linked in.. The new kernel should still be
+runnable and the new driver should be
+fully callable (once you get your device to probe).
+You should simply edit the driver and continue to use
+'make' (as done in the script) until your driver does what you want.
+
+The driver will end up in /sys/i386/isa for the device driver script,
+and in /sys/dev for the pseudo driver script.
diff --git a/share/examples/drivers/make_device_driver.sh b/share/examples/drivers/make_device_driver.sh
new file mode 100755
index 0000000..2acea33
--- /dev/null
+++ b/share/examples/drivers/make_device_driver.sh
@@ -0,0 +1,1015 @@
+#!/bin/sh
+# This writes a skeleton driver and puts it into the kernel tree for you.
+# It also adds FOO and files.FOO configuration files so you can compile
+# a kernel with your FOO driver linked in.
+# To do so:
+# cd /usr/src; make buildkernel KERNCONF=FOO
+#
+# More interestingly, it creates a modules/foo directory
+# which it populates, to allow you to compile a FOO module
+# which can be linked with your presently running kernel (if you feel brave).
+# To do so:
+# cd /sys/modules/foo; make depend; make; make install; kldload foo
+#
+# arg1 to this script is expected to be lowercase "foo"
+# arg2 path to the kernel sources, "/sys" if omitted
+#
+# Trust me, RUN THIS SCRIPT :)
+#
+# TODO:
+# o generate foo_isa.c, foo_pci.c, foo_pccard.c, foo_cardbus.c, and foovar.h
+# o Put pccard stuff in here.
+#
+# $FreeBSD$"
+#
+#
+if [ "X${1}" = "X" ]; then
+ echo "Hey, how about some help here... give me a device name!"
+ exit 1
+fi
+if [ "X${2}" = "X" ]; then
+ TOP=`cd /sys; pwd -P`
+ echo "Using ${TOP} as the path to the kernel sources!"
+else
+ TOP=${2}
+fi
+UPPER=`echo ${1} |tr "[:lower:]" "[:upper:]"`
+
+RCS_KEYWORD=FreeBSD
+
+if [ -d ${TOP}/modules/${1} ]; then
+ echo "There appears to already be a module called ${1}"
+ echo -n "Should it be overwritten? [Y]"
+ read VAL
+ if [ "-z" "$VAL" ]; then
+ VAL=YES
+ fi
+ case ${VAL} in
+ [yY]*)
+ echo "Cleaning up from prior runs"
+ rm -rf ${TOP}/dev/${1}
+ rm -rf ${TOP}/modules/${1}
+ rm ${TOP}/conf/files.${UPPER}
+ rm ${TOP}/i386/conf/${UPPER}
+ rm ${TOP}/sys/${1}io.h
+ ;;
+ *)
+ exit 1
+ ;;
+ esac
+fi
+
+echo "The following files will be created:"
+echo ${TOP}/modules/${1}
+echo ${TOP}/conf/files.${UPPER}
+echo ${TOP}/i386/conf/${UPPER}
+echo ${TOP}/dev/${1}
+echo ${TOP}/dev/${1}/${1}.c
+echo ${TOP}/sys/${1}io.h
+echo ${TOP}/modules/${1}
+echo ${TOP}/modules/${1}/Makefile
+
+ mkdir ${TOP}/modules/${1}
+
+#######################################################################
+#######################################################################
+#
+# Create configuration information needed to create a kernel
+# containing this driver.
+#
+# Not really needed if we are going to do this as a module.
+#######################################################################
+# First add the file to a local file list.
+#######################################################################
+
+cat >${TOP}/conf/files.${UPPER} <<DONE
+dev/${1}/${1}.c optional ${1}
+DONE
+
+#######################################################################
+# Then create a configuration file for a kernel that contains this driver.
+#######################################################################
+cat >${TOP}/i386/conf/${UPPER} <<DONE
+# Configuration file for kernel type: ${UPPER}
+# \$${RCS_KEYWORD}$
+
+files "${TOP}/conf/files.${UPPER}"
+
+include GENERIC
+
+ident ${UPPER}
+
+DONE
+
+cat >>${TOP}/i386/conf/${UPPER} <<DONE
+# trust me, you'll need this
+options KDB
+options DDB
+device ${1}
+DONE
+
+if [ ! -d ${TOP}/dev/${1} ]; then
+ mkdir -p ${TOP}/dev/${1}
+fi
+
+cat >${TOP}/dev/${1}/${1}.c <<DONE
+/*
+ * Copyright (c) [year] [your name]
+ * 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.
+ */
+
+/*
+ * http://www.daemonnews.org/200008/isa.html is required reading.
+ * hopefully it will make it's way into the handbook.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("\$${RCS_KEYWORD}$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/conf.h> /* cdevsw stuff */
+#include <sys/kernel.h> /* SYSINIT stuff */
+#include <sys/uio.h> /* SYSINIT stuff */
+#include <sys/malloc.h> /* malloc region definitions */
+#include <sys/module.h>
+#include <sys/bus.h>
+#include <sys/proc.h>
+#include <sys/time.h>
+#include <sys/${1}io.h> /* ${1} IOCTL definitions */
+
+#include <machine/bus.h>
+#include <machine/resource.h>
+#include <sys/rman.h>
+
+#include <dev/pci/pcireg.h>
+#include <dev/pci/pcivar.h>
+
+#include <isa/isavar.h>
+
+#include "isa_if.h"
+
+/* XXX These should be defined in terms of bus-space ops. */
+#define ${UPPER}_INB(port) inb(port_start)
+#define ${UPPER}_OUTB(port, val) ( port_start, (val))
+#define SOME_PORT 123
+#define EXPECTED_VALUE 0x42
+
+/*
+ * The softc is automatically allocated by the parent bus using the
+ * size specified in the driver_t declaration below.
+ */
+#define DEV2SOFTC(dev) ((struct ${1}_softc *) (dev)->si_drv1)
+#define DEVICE2SOFTC(dev) ((struct ${1}_softc *) device_get_softc(dev))
+
+/*
+ * Device specific misc defines.
+ */
+#define BUFFERSIZE 1024
+#define NUMPORTS 4
+#define MEMSIZE (4 * 1024) /* Imaginable h/w buffer size. */
+
+/*
+ * One of these per allocated device.
+ */
+struct ${1}_softc {
+ bus_space_tag_t bt;
+ bus_space_handle_t bh;
+ int rid_ioport;
+ int rid_memory;
+ int rid_irq;
+ int rid_drq;
+ struct resource* res_ioport; /* Resource for port range. */
+ struct resource* res_memory; /* Resource for mem range. */
+ struct resource* res_irq; /* Resource for irq range. */
+ struct resource* res_drq; /* Resource for dma channel. */
+ device_t device;
+ struct cdev *dev;
+ void *intr_cookie;
+ void *vaddr; /* Virtual address of mem resource. */
+ char buffer[BUFFERSIZE]; /* If we need to buffer something. */
+};
+
+/* Function prototypes (these should all be static). */
+static int ${1}_deallocate_resources(device_t device);
+static int ${1}_allocate_resources(device_t device);
+static int ${1}_attach(device_t device, struct ${1}_softc *scp);
+static int ${1}_detach(device_t device, struct ${1}_softc *scp);
+
+static d_open_t ${1}open;
+static d_close_t ${1}close;
+static d_read_t ${1}read;
+static d_write_t ${1}write;
+static d_ioctl_t ${1}ioctl;
+static d_mmap_t ${1}mmap;
+static d_poll_t ${1}poll;
+static void ${1}intr(void *arg);
+
+static struct cdevsw ${1}_cdevsw = {
+ .d_version = D_VERSION,
+ .d_open = ${1}open,
+ .d_close = ${1}close,
+ .d_read = ${1}read,
+ .d_write = ${1}write,
+ .d_ioctl = ${1}ioctl,
+ .d_poll = ${1}poll,
+ .d_mmap = ${1}mmap,
+ .d_name = "${1}",
+};
+
+static devclass_t ${1}_devclass;
+
+/*
+ ******************************************
+ * ISA Attachment structures and functions.
+ ******************************************
+ */
+static void ${1}_isa_identify (driver_t *, device_t);
+static int ${1}_isa_probe (device_t);
+static int ${1}_isa_attach (device_t);
+static int ${1}_isa_detach (device_t);
+
+static struct isa_pnp_id ${1}_ids[] = {
+ {0x12345678, "ABCco Widget"},
+ {0xfedcba98, "shining moon Widget ripoff"},
+ {0, NULL}
+};
+
+static device_method_t ${1}_methods[] = {
+ DEVMETHOD(device_identify, ${1}_isa_identify),
+ DEVMETHOD(device_probe, ${1}_isa_probe),
+ DEVMETHOD(device_attach, ${1}_isa_attach),
+ DEVMETHOD(device_detach, ${1}_isa_detach),
+ { 0, 0 }
+};
+
+static driver_t ${1}_isa_driver = {
+ "${1}",
+ ${1}_methods,
+ sizeof (struct ${1}_softc)
+};
+
+DRIVER_MODULE(${1}, isa, ${1}_isa_driver, ${1}_devclass, 0, 0);
+
+/*
+ * Here list some port addresses we might expect our widget to appear at:
+ * This list should only be used for cards that have some non-destructive
+ * (to other cards) way of probing these address. Otherwise the driver
+ * should not go looking for instances of itself, but instead rely on
+ * the hints file. Strange failures for people with other cards might
+ * result.
+ */
+static struct localhints {
+ int ioport;
+ int irq;
+ int drq;
+ int mem;
+} res[] = {
+ { 0x210, 11, 2, 0xcd000},
+ { 0x310, 12, 3, 0xdd000},
+ { 0x320, 9, 6, 0xd4000},
+ {0,0,0,0}
+};
+
+#define MAXHINTS 10 /* Just an arbitrary safety limit. */
+/*
+ * Called once when the driver is somehow connected with the bus,
+ * (Either linked in and the bus is started, or loaded as a module).
+ *
+ * The aim of this routine in an ISA driver is to add child entries to
+ * the parent bus so that it looks as if the devices were detected by
+ * some pnp-like method, or at least mentioned in the hints.
+ *
+ * For NON-PNP "dumb" devices:
+ * Add entries into the bus's list of likely devices, so that
+ * our 'probe routine' will be called for them.
+ * This is similar to what the 'hints' code achieves, except this is
+ * loadable with the driver.
+ * In the 'dumb' case we end up with more children than needed but
+ * some (or all) of them will fail probe() and only waste a little memory.
+ *
+ * For NON-PNP "Smart" devices:
+ * If the device has a NON-PNP way of being detected and setting/sensing
+ * the card, then do that here and add a child for each set of
+ * hardware found.
+ *
+ * For PNP devices:
+ * If the device is always PNP capable then this function can be removed.
+ * The ISA PNP system will have automatically added it to the system and
+ * so your identify routine needn't do anything.
+ *
+ * If the device is mentioned in the 'hints' file then this
+ * function can be removed. All devices mentioned in the hints
+ * file get added as children for probing, whether or not the
+ * driver is linked in. So even as a module it MAY still be there.
+ * See isa/isahint.c for hints being added in.
+ */
+static void
+${1}_isa_identify (driver_t *driver, device_t parent)
+{
+ u_int32_t irq=0;
+ u_int32_t ioport;
+ device_t child;
+ int i;
+
+ /*
+ * If we've already got ${UPPER} attached somehow, don't try again.
+ * Maybe it was in the hints file. or it was loaded before.
+ */
+ if (device_find_child(parent, "${1}", 0)) {
+ printf("${UPPER}: already attached\n");
+ return;
+ }
+/* XXX Look at dev/acpica/acpi_isa.c for use of ISA_ADD_CONFIG() macro. */
+/* XXX What is ISA_SET_CONFIG_CALLBACK(parent, child, pnpbios_set_config, 0)? */
+ for (i = 0; i < MAXHINTS; i++) {
+
+ ioport = res[i].ioport;
+ irq = res[i].irq;
+ if ((ioport == 0) && (irq == 0))
+ return; /* We've added all our local hints. */
+
+ child = BUS_ADD_CHILD(parent, ISA_ORDER_SPECULATIVE, "${1}", -1);
+ bus_set_resource(child, SYS_RES_IOPORT, 0, ioport, NUMPORTS);
+ bus_set_resource(child, SYS_RES_IRQ, 0, irq, 1);
+ bus_set_resource(child, SYS_RES_DRQ, 0, res[i].drq, 1);
+ bus_set_resource(child, SYS_RES_MEMORY, 0, res[i].mem, MEMSIZE);
+
+#if 0
+ /*
+ * If we wanted to pretend PNP found it
+ * we could do this, and put matching entries
+ * in the PNP table, but I think it's probably too hacky.
+ * As you see, some people have done it though.
+ * Basically EISA (remember that?) would do this I think.
+ */
+ isa_set_vendorid(child, PNP_EISAID("ESS1888"));
+ isa_set_logicalid(child, PNP_EISAID("ESS1888"));
+#endif
+ }
+#if 0
+ /*
+ * Do some smart probing (e.g. like the lnc driver)
+ * and add a child for each one found.
+ */
+#endif
+
+ return;
+}
+/*
+ * The ISA code calls this for each device it knows about,
+ * whether via the PNP code or via the hints etc.
+ * If the device nas no PNP capabilities, remove all the
+ * PNP entries, but keep the call to ISA_PNP_PROBE()
+ * As it will guard against accidentally recognising
+ * foreign hardware. This is because we will be called to check against
+ * ALL PNP hardware.
+ */
+static int
+${1}_isa_probe (device_t device)
+{
+ int error;
+ device_t parent = device_get_parent(device);
+ struct ${1}_softc *scp = DEVICE2SOFTC(device);
+ u_long port_start, port_count;
+
+ bzero(scp, sizeof(*scp));
+ scp->device = device;
+
+ /*
+ * Check this device for a PNP match in our table.
+ * There are several possible outcomes.
+ * error == 0 We match a PNP.
+ * error == ENXIO, It is a PNP device but not in our table.
+ * error == ENOENT, It is not a PNP device.. try heuristic probes.
+ * -- logic from if_ed_isa.c, added info from isa/isa_if.m:
+ *
+ * If we had a list of devices that we could handle really well,
+ * and a list which we could handle only basic functions, then
+ * we would call this twice, once for each list,
+ * and return a value of '-2' or something if we could
+ * only handle basic functions. This would allow a specific
+ * Widgetplus driver to make a better offer if it knows how to
+ * do all the extended functions. (See non-pnp part for more info).
+ */
+ error = ISA_PNP_PROBE(parent, device, ${1}_ids);
+ switch (error) {
+ case 0:
+ /*
+ * We found a PNP device.
+ * Do nothing, as it's all done in attach().
+ */
+ break;
+ case ENOENT:
+ /*
+ * Well it didn't show up in the PNP tables
+ * so look directly at known ports (if we have any)
+ * in case we are looking for an old pre-PNP card.
+ *
+ * Hopefully the 'identify' routine will have picked these
+ * up for us first if they use some proprietary detection
+ * method.
+ *
+ * The ports, irqs etc should come from a 'hints' section
+ * which is read in by code in isa/isahint.c
+ * and kern/subr_bus.c to create resource entries,
+ * or have been added by the 'identify routine above.
+ * Note that HINTS based resource requests have NO
+ * SIZE for the memory or ports requests (just a base)
+ * so we may need to 'correct' this before we
+ * do any probing.
+ */
+ /*
+ * Find out the values of any resources we
+ * need for our dumb probe. Also check we have enough ports
+ * in the request. (could be hints based).
+ * Should probably do the same for memory regions too.
+ */
+ error = bus_get_resource(device, SYS_RES_IOPORT, 0,
+ &port_start, &port_count);
+ if (port_count != NUMPORTS) {
+ bus_set_resource(device, SYS_RES_IOPORT, 0,
+ port_start, NUMPORTS);
+ }
+
+ /*
+ * Make a temporary resource reservation.
+ * If we can't get the resources we need then
+ * we need to abort. Possibly this indicates
+ * the resources were used by another device
+ * in which case the probe would have failed anyhow.
+ */
+ if ((error = (${1}_allocate_resources(device)))) {
+ error = ENXIO;
+ goto errexit;
+ }
+
+ /* Dummy heuristic type probe. */
+ if (inb(port_start) != EXPECTED_VALUE) {
+ /*
+ * It isn't what we hoped, so quit looking for it.
+ */
+ error = ENXIO;
+ } else {
+ u_long membase = bus_get_resource_start(device,
+ SYS_RES_MEMORY, 0 /*rid*/);
+ u_long memsize;
+ /*
+ * If we discover in some way that the device has
+ * XXX bytes of memory window, we can override
+ * or set the memory size in the child resource list.
+ */
+ memsize = inb(port_start + 1) * 1024; /* for example */
+ error = bus_set_resource(device, SYS_RES_MEMORY,
+ /*rid*/0, membase, memsize);
+ /*
+ * We found one, return non-positive numbers..
+ * Return -N if we cant handle it, but not well.
+ * Return -2 if we would LIKE the device.
+ * Return -1 if we want it a lot.
+ * Return 0 if we MUST get the device.
+ * This allows drivers to 'bid' for a device.
+ */
+ device_set_desc(device, "ACME Widget model 1234");
+ error = -1; /* We want it but someone else
+ may be even better. */
+ }
+ /*
+ * Unreserve the resources for now because
+ * another driver may bid for device too.
+ * If we lose the bid, but still hold the resources, we will
+ * effectively have disabled the other driver from getting them
+ * which will result in neither driver getting the device.
+ * We will ask for them again in attach if we win.
+ */
+ ${1}_deallocate_resources(device);
+ break;
+ case ENXIO:
+ /* It was PNP but not ours, leave immediately. */
+ default:
+ error = ENXIO;
+ }
+errexit:
+ return (error);
+}
+
+/*
+ * Called if the probe succeeded and our bid won the device.
+ * We can be destructive here as we know we have the device.
+ * This is the first place we can be sure we have a softc structure.
+ * You would do ISA specific attach things here, but generically there aren't
+ * any (yay new-bus!).
+ */
+static int
+${1}_isa_attach (device_t device)
+{
+ int error;
+ struct ${1}_softc *scp = DEVICE2SOFTC(device);
+
+ error = ${1}_attach(device, scp);
+ if (error)
+ ${1}_isa_detach(device);
+ return (error);
+}
+
+/*
+ * Detach the driver (e.g. module unload),
+ * call the bus independent version
+ * and undo anything we did in the ISA attach routine.
+ */
+static int
+${1}_isa_detach (device_t device)
+{
+ int error;
+ struct ${1}_softc *scp = DEVICE2SOFTC(device);
+
+ error = ${1}_detach(device, scp);
+ return (error);
+}
+
+/*
+ ***************************************
+ * PCI Attachment structures and code
+ ***************************************
+ */
+
+static int ${1}_pci_probe(device_t);
+static int ${1}_pci_attach(device_t);
+static int ${1}_pci_detach(device_t);
+
+static device_method_t ${1}_pci_methods[] = {
+ /* Device interface */
+ DEVMETHOD(device_probe, ${1}_pci_probe),
+ DEVMETHOD(device_attach, ${1}_pci_attach),
+ DEVMETHOD(device_detach, ${1}_pci_detach),
+ { 0, 0 }
+};
+
+static driver_t ${1}_pci_driver = {
+ "${1}",
+ ${1}_pci_methods,
+ sizeof(struct ${1}_softc),
+};
+
+DRIVER_MODULE(${1}, pci, ${1}_pci_driver, ${1}_devclass, 0, 0);
+/*
+ * Cardbus is a pci bus plus extra, so use the pci driver unless special
+ * things need to be done only in the cardbus case.
+ */
+DRIVER_MODULE(${1}, cardbus, ${1}_pci_driver, ${1}_devclass, 0, 0);
+
+static struct _pcsid
+{
+ u_int32_t type;
+ const char *desc;
+} pci_ids[] = {
+ { 0x1234abcd, "ACME PCI Widgetplus" },
+ { 0x1243fedc, "Happy moon brand RIPOFFplus" },
+ { 0x00000000, NULL }
+};
+
+/*
+ * See if this card is specifically mentioned in our list of known devices.
+ * Theoretically we might also put in a weak bid for some devices that
+ * report themselves to be some generic type of device if we can handle
+ * that generic type. (other PCI_XXX calls give that info).
+ * This would allow a specific driver to over-ride us.
+ *
+ * See the comments in the ISA section regarding returning non-positive
+ * values from probe routines.
+ */
+static int
+${1}_pci_probe (device_t device)
+{
+ u_int32_t type = pci_get_devid(device);
+ struct _pcsid *ep =pci_ids;
+
+ while (ep->type && ep->type != type)
+ ++ep;
+ if (ep->desc) {
+ device_set_desc(device, ep->desc);
+ return 0; /* If there might be a better driver, return -2 */
+ } else
+ return ENXIO;
+}
+
+static int
+${1}_pci_attach(device_t device)
+{
+ int error;
+ struct ${1}_softc *scp = DEVICE2SOFTC(device);
+
+ error = ${1}_attach(device, scp);
+ if (error)
+ ${1}_pci_detach(device);
+ return (error);
+}
+
+static int
+${1}_pci_detach (device_t device)
+{
+ int error;
+ struct ${1}_softc *scp = DEVICE2SOFTC(device);
+
+ error = ${1}_detach(device, scp);
+ return (error);
+}
+
+/*
+ ****************************************
+ * Common Attachment sub-functions
+ ****************************************
+ */
+static int
+${1}_attach(device_t device, struct ${1}_softc * scp)
+{
+ device_t parent = device_get_parent(device);
+ int unit = device_get_unit(device);
+
+ scp->dev = make_dev(&${1}_cdevsw, 0,
+ UID_ROOT, GID_OPERATOR, 0600, "${1}%d", unit);
+ scp->dev->si_drv1 = scp;
+
+ if (${1}_allocate_resources(device))
+ goto errexit;
+
+ scp->bt = rman_get_bustag(scp->res_ioport);
+ scp->bh = rman_get_bushandle(scp->res_ioport);
+
+ /* Register the interrupt handler. */
+ /*
+ * The type should be one of:
+ * INTR_TYPE_TTY
+ * INTR_TYPE_BIO
+ * INTR_TYPE_CAM
+ * INTR_TYPE_NET
+ * INTR_TYPE_MISC
+ * This will probably change with SMPng. INTR_TYPE_FAST may be
+ * OR'd into this type to mark the interrupt fast. However, fast
+ * interrupts cannot be shared at all so special precautions are
+ * necessary when coding fast interrupt routines.
+ */
+ if (scp->res_irq) {
+ /* Default to the tty mask for registration. */ /* XXX */
+ if (BUS_SETUP_INTR(parent, device, scp->res_irq, INTR_TYPE_TTY,
+ ${1}intr, scp, &scp->intr_cookie) == 0) {
+ /* Do something if successful. */
+ } else
+ goto errexit;
+ }
+
+ /*
+ * If we want to access the memory we will need
+ * to know where it was mapped.
+ *
+ * Use of this function is discouraged, however. You should
+ * be accessing the device with the bus_space API if at all
+ * possible.
+ */
+ scp->vaddr = rman_get_virtual(scp->res_memory);
+ return 0;
+
+errexit:
+ /*
+ * Undo anything we may have done.
+ */
+ ${1}_detach(device, scp);
+ return (ENXIO);
+}
+
+static int
+${1}_detach(device_t device, struct ${1}_softc *scp)
+{
+ device_t parent = device_get_parent(device);
+
+ /*
+ * At this point stick a strong piece of wood into the device
+ * to make sure it is stopped safely. The alternative is to
+ * simply REFUSE to detach if it's busy. What you do depends on
+ * your specific situation.
+ *
+ * Sometimes the parent bus will detach you anyway, even if you
+ * are busy. You must cope with that possibility. Your hardware
+ * might even already be gone in the case of cardbus or pccard
+ * devices.
+ */
+ /* ZAP some register */
+
+ /*
+ * Take our interrupt handler out of the list of handlers
+ * that can handle this irq.
+ */
+ if (scp->intr_cookie != NULL) {
+ if (BUS_TEARDOWN_INTR(parent, device,
+ scp->res_irq, scp->intr_cookie) != 0)
+ printf("intr teardown failed.. continuing\n");
+ scp->intr_cookie = NULL;
+ }
+
+ /*
+ * Deallocate any system resources we may have
+ * allocated on behalf of this driver.
+ */
+ scp->vaddr = NULL;
+ return ${1}_deallocate_resources(device);
+}
+
+static int
+${1}_allocate_resources(device_t device)
+{
+ int error;
+ struct ${1}_softc *scp = DEVICE2SOFTC(device);
+ int size = 16; /* SIZE of port range used. */
+
+ scp->res_ioport = bus_alloc_resource(device, SYS_RES_IOPORT,
+ &scp->rid_ioport, 0ul, ~0ul, size, RF_ACTIVE);
+ if (scp->res_ioport == NULL)
+ goto errexit;
+
+ scp->res_irq = bus_alloc_resource(device, SYS_RES_IRQ,
+ &scp->rid_irq, 0ul, ~0ul, 1, RF_SHAREABLE|RF_ACTIVE);
+ if (scp->res_irq == NULL)
+ goto errexit;
+
+ scp->res_drq = bus_alloc_resource(device, SYS_RES_DRQ,
+ &scp->rid_drq, 0ul, ~0ul, 1, RF_ACTIVE);
+ if (scp->res_drq == NULL)
+ goto errexit;
+
+ scp->res_memory = bus_alloc_resource(device, SYS_RES_MEMORY,
+ &scp->rid_memory, 0ul, ~0ul, MSIZE, RF_ACTIVE);
+ if (scp->res_memory == NULL)
+ goto errexit;
+ return (0);
+
+errexit:
+ error = ENXIO;
+ /* Cleanup anything we may have assigned. */
+ ${1}_deallocate_resources(device);
+ return (ENXIO); /* For want of a better idea. */
+}
+
+static int
+${1}_deallocate_resources(device_t device)
+{
+ struct ${1}_softc *scp = DEVICE2SOFTC(device);
+
+ if (scp->res_irq != 0) {
+ bus_deactivate_resource(device, SYS_RES_IRQ,
+ scp->rid_irq, scp->res_irq);
+ bus_release_resource(device, SYS_RES_IRQ,
+ scp->rid_irq, scp->res_irq);
+ scp->res_irq = 0;
+ }
+ if (scp->res_ioport != 0) {
+ bus_deactivate_resource(device, SYS_RES_IOPORT,
+ scp->rid_ioport, scp->res_ioport);
+ bus_release_resource(device, SYS_RES_IOPORT,
+ scp->rid_ioport, scp->res_ioport);
+ scp->res_ioport = 0;
+ }
+ if (scp->res_memory != 0) {
+ bus_deactivate_resource(device, SYS_RES_MEMORY,
+ scp->rid_memory, scp->res_memory);
+ bus_release_resource(device, SYS_RES_MEMORY,
+ scp->rid_memory, scp->res_memory);
+ scp->res_memory = 0;
+ }
+ if (scp->res_drq != 0) {
+ bus_deactivate_resource(device, SYS_RES_DRQ,
+ scp->rid_drq, scp->res_drq);
+ bus_release_resource(device, SYS_RES_DRQ,
+ scp->rid_drq, scp->res_drq);
+ scp->res_drq = 0;
+ }
+ if (scp->dev)
+ destroy_dev(scp->dev);
+ return (0);
+}
+
+static void
+${1}intr(void *arg)
+{
+ struct ${1}_softc *scp = (struct ${1}_softc *) arg;
+
+ /*
+ * Well we got an interrupt, now what?
+ *
+ * Make sure that the interrupt routine will always terminate,
+ * even in the face of "bogus" data from the card.
+ */
+ (void)scp; /* Delete this line after using scp. */
+ return;
+}
+
+static int
+${1}ioctl (struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td)
+{
+ struct ${1}_softc *scp = DEV2SOFTC(dev);
+
+ (void)scp; /* Delete this line after using scp. */
+ switch (cmd) {
+ case DHIOCRESET:
+ /* Whatever resets it. */
+#if 0
+ ${UPPER}_OUTB(SOME_PORT, 0xff);
+#endif
+ break;
+ default:
+ return ENXIO;
+ }
+ return (0);
+}
+/*
+ * You also need read, write, open, close routines.
+ * This should get you started.
+ */
+static int
+${1}open(struct cdev *dev, int oflags, int devtype, struct thread *td)
+{
+ struct ${1}_softc *scp = DEV2SOFTC(dev);
+
+ /*
+ * Do processing.
+ */
+ (void)scp; /* Delete this line after using scp. */
+ return (0);
+}
+
+static int
+${1}close(struct cdev *dev, int fflag, int devtype, struct thread *td)
+{
+ struct ${1}_softc *scp = DEV2SOFTC(dev);
+
+ /*
+ * Do processing.
+ */
+ (void)scp; /* Delete this line after using scp. */
+ return (0);
+}
+
+static int
+${1}read(struct cdev *dev, struct uio *uio, int ioflag)
+{
+ struct ${1}_softc *scp = DEV2SOFTC(dev);
+ int toread;
+
+ /*
+ * Do processing.
+ * Read from buffer.
+ */
+ (void)scp; /* Delete this line after using scp. */
+ toread = (min(uio->uio_resid, sizeof(scp->buffer)));
+ return(uiomove(scp->buffer, toread, uio));
+}
+
+static int
+${1}write(struct cdev *dev, struct uio *uio, int ioflag)
+{
+ struct ${1}_softc *scp = DEV2SOFTC(dev);
+ int towrite;
+
+ /*
+ * Do processing.
+ * Write to buffer.
+ */
+ (void)scp; /* Delete this line after using scp. */
+ towrite = (min(uio->uio_resid, sizeof(scp->buffer)));
+ return(uiomove(scp->buffer, towrite, uio));
+}
+
+static int
+${1}mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
+{
+ struct ${1}_softc *scp = DEV2SOFTC(dev);
+
+ /*
+ * Given a byte offset into your device, return the PHYSICAL
+ * page number that it would map to.
+ */
+ (void)scp; /* Delete this line after using scp. */
+#if 0 /* If we had a frame buffer or whatever... do this. */
+ if (offset > FRAMEBUFFERSIZE - PAGE_SIZE)
+ return (-1);
+ return i386_btop((FRAMEBASE + offset));
+#else
+ return (-1);
+#endif
+}
+
+static int
+${1}poll(struct cdev *dev, int which, struct thread *td)
+{
+ struct ${1}_softc *scp = DEV2SOFTC(dev);
+
+ /*
+ * Do processing.
+ */
+ (void)scp; /* Delete this line after using scp. */
+ return (0); /* This is the wrong value I'm sure. */
+}
+
+DONE
+
+cat >${TOP}/sys/${1}io.h <<DONE
+/*
+ * Definitions needed to access the ${1} device (ioctls etc)
+ * see mtio.h, ioctl.h as examples.
+ */
+#ifndef SYS_DHIO_H
+#define SYS_DHIO_H
+
+#ifndef KERNEL
+#include <sys/types.h>
+#endif
+#include <sys/ioccom.h>
+
+/*
+ * Define an ioctl here.
+ */
+#define DHIOCRESET _IO('D', 0) /* Reset the ${1} device. */
+#endif
+DONE
+
+if [ ! -d ${TOP}/modules/${1} ]; then
+ mkdir -p ${TOP}/modules/${1}
+fi
+
+cat >${TOP}/modules/${1}/Makefile <<DONE
+# ${UPPER} Loadable Kernel Module
+#
+# \$${RCS_KEYWORD}: $
+
+.PATH: \${.CURDIR}/../../dev/${1}
+KMOD = ${1}
+SRCS = ${1}.c
+SRCS += opt_inet.h device_if.h bus_if.h pci_if.h isa_if.h
+
+# You may need to do this is your device is an if_xxx driver.
+opt_inet.h:
+ echo "#define INET 1" > opt_inet.h
+
+.include <bsd.kmod.mk>
+DONE
+
+echo -n "Do you want to build the '${1}' module? [Y]"
+read VAL
+if [ "-z" "$VAL" ]; then
+ VAL=YES
+fi
+case ${VAL} in
+[yY]*)
+ (cd ${TOP}/modules/${1}; make depend; make )
+ ;;
+*)
+# exit
+ ;;
+esac
+
+echo ""
+echo -n "Do you want to build the '${UPPER}' kernel? [Y]"
+read VAL
+if [ "-z" "$VAL" ]; then
+ VAL=YES
+fi
+case ${VAL} in
+[yY]*)
+ (
+ cd ${TOP}/i386/conf; \
+ config ${UPPER}; \
+ cd ${TOP}/i386/compile/${UPPER}; \
+ make depend; \
+ make; \
+ )
+ ;;
+*)
+# exit
+ ;;
+esac
+
+#--------------end of script---------------
+#
+# Edit to your taste...
+#
+#
diff --git a/share/examples/drivers/make_pseudo_driver.sh b/share/examples/drivers/make_pseudo_driver.sh
new file mode 100644
index 0000000..ef2ad81
--- /dev/null
+++ b/share/examples/drivers/make_pseudo_driver.sh
@@ -0,0 +1,443 @@
+#!/bin/sh
+# This writes a skeleton driver and puts it into the kernel tree for you
+#
+# arg1 is lowercase "foo"
+# arg2 path to the kernel sources, "/sys" if omitted
+#
+# Trust me, RUN THIS SCRIPT :)
+#
+# $FreeBSD$
+#
+#-------cut here------------------
+
+if [ "${1}X" = "X" ]
+then
+ echo "Hey , how about some help here.. give me a device name!"
+ exit 1
+fi
+if [ "X${2}" = "X" ]; then
+ TOP=`cd /sys; pwd -P`
+ echo "Using ${TOP} as the path to the kernel sources!"
+else
+ TOP=${2}
+fi
+
+for i in "" "conf" "i386" "i386/conf" "dev" "sys" "modules"
+do
+ if [ -d ${TOP}/${i} ]
+ then
+ continue
+ fi
+ echo "${TOP}/${i}: no such directory."
+ echo "Please, correct the error and try again."
+ exit 1
+done
+
+UPPER=`echo ${1} |tr "[:lower:]" "[:upper:]"`
+
+if [ -d ${TOP}/modules/${1} ]; then
+ echo "There appears to already be a module called ${1}"
+ echo -n "Should it be overwritten? [Y]"
+ read VAL
+ if [ "-z" "$VAL" ]; then
+ VAL=YES
+ fi
+ case ${VAL} in
+ [yY]*)
+ echo "Cleaning up from prior runs"
+ rm -rf ${TOP}/dev/${1}
+ rm -rf ${TOP}/modules/${1}
+ rm ${TOP}/conf/files.${UPPER}
+ rm ${TOP}/i386/conf/${UPPER}
+ rm ${TOP}/sys/${1}io.h
+ ;;
+ *)
+ exit 1
+ ;;
+ esac
+fi
+
+echo "The following files will be created:"
+echo ${TOP}/modules/${1}
+echo ${TOP}/conf/files.${UPPER}
+echo ${TOP}/i386/conf/${UPPER}
+echo ${TOP}/dev/${1}
+echo ${TOP}/dev/${1}/${1}.c
+echo ${TOP}/sys/${1}io.h
+echo ${TOP}/modules/${1}
+echo ${TOP}/modules/${1}/Makefile
+
+mkdir ${TOP}/modules/${1}
+
+cat >${TOP}/conf/files.${UPPER} <<DONE
+dev/${1}/${1}.c optional ${1}
+DONE
+
+cat >${TOP}/i386/conf/${UPPER} <<DONE
+# Configuration file for kernel type: ${UPPER}
+# \$FreeBSD\$
+
+files "${TOP}/conf/files.${UPPER}"
+
+include GENERIC
+
+ident ${UPPER}
+
+# trust me, you'll need this
+options KDB
+options DDB
+device ${1}
+DONE
+
+if [ ! -d ${TOP}/dev/${1} ]; then
+ mkdir -p ${TOP}/dev/${1}
+fi
+
+cat >${TOP}/dev/${1}/${1}.c <<DONE
+/*
+ * Copyright (c) [year] [your name]
+ * 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.
+ *
+ * ${1} driver
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("\$FreeBSD\$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/kernel.h> /* SYSINIT stuff */
+#include <sys/uio.h> /* SYSINIT stuff */
+#include <sys/conf.h> /* cdevsw stuff */
+#include <sys/malloc.h> /* malloc region definitions */
+#include <sys/proc.h>
+#include <sys/${1}io.h> /* ${1} IOCTL definitions */
+
+#include <machine/clock.h> /* DELAY() */
+
+#define N${UPPER} 3 /* defines number of instances */
+
+/* XXX These should be defined in terms of bus-space ops. */
+#define ${UPPER}_INB(port) inb(port)
+#define ${UPPER}_OUTB(port, val) (port, (val))
+
+/* Function prototypes (these should all be static) */
+static d_open_t ${1}open;
+static d_close_t ${1}close;
+static d_read_t ${1}read;
+static d_write_t ${1}write;
+static d_ioctl_t ${1}ioctl;
+static d_mmap_t ${1}mmap;
+static d_poll_t ${1}poll;
+
+#define CDEV_MAJOR 20
+static struct cdevsw ${1}_cdevsw = {
+ .d_version = D_VERSION,
+ .d_open = ${1}open,
+ .d_close = ${1}close,
+ .d_read = ${1}read,
+ .d_write = ${1}write,
+ .d_ioctl = ${1}ioctl,
+ .d_poll = ${1}poll,
+ .d_mmap = ${1}mmap,
+ .d_name = "${1}",
+};
+
+/*
+ * device specific Misc defines
+ */
+#define BUFFERSIZE 1024
+#define UNIT(dev) dev2unit(dev) /* assume one minor number per unit */
+
+/*
+ * One of these per allocated device
+ */
+struct ${1}_softc {
+ u_long iobase;
+ char buffer[BUFFERSIZE];
+ struct cdev *dev;
+};
+
+typedef struct ${1}_softc *sc_p;
+
+static sc_p sca[N${UPPER}];
+
+/*
+ * Macro to check that the unit number is valid
+ * Often this isn't needed as once the open() is performed,
+ * the unit number is pretty much safe.. The exception would be if we
+ * implemented devices that could "go away". in which case all these routines
+ * would be wise to check the number, DIAGNOSTIC or not.
+ */
+#define CHECKUNIT(RETVAL) \
+do { /* the do-while is a safe way to do this grouping */ \
+ if (unit > N${UPPER}) { \
+ printf("%s: bad unit %d\n", __func__, unit); \
+ return (RETVAL); \
+ } \
+ if (scp == NULL) { \
+ printf("%s: unit %d not attached\n", __func__, unit); \
+ return (RETVAL); \
+ } \
+} while (0)
+
+#ifdef DIAGNOSTIC
+#define CHECKUNIT_DIAG(RETVAL) CHECKUNIT(RETVAL)
+#else /* DIAGNOSTIC */
+#define CHECKUNIT_DIAG(RETVAL)
+#endif /* DIAGNOSTIC */
+
+static int
+${1}ioctl (struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td)
+{
+ int unit = UNIT(dev);
+ sc_p scp = sca[unit];
+
+ CHECKUNIT_DIAG(ENXIO);
+
+ switch (cmd) {
+ case DHIOCRESET:
+ /* whatever resets it */
+ (void)scp; /* Delete this line after using scp. */
+#if 0
+ ${UPPER}_OUTB(scp->iobase, 0xff);
+#endif
+ break;
+ default:
+ return ENXIO;
+ }
+ return (0);
+}
+
+/*
+ * You also need read, write, open, close routines.
+ * This should get you started
+ */
+static int
+${1}open(struct cdev *dev, int oflags, int devtype, struct thread *td)
+{
+ int unit = UNIT(dev);
+ sc_p scp = sca[unit];
+
+ CHECKUNIT(ENXIO);
+
+ (void)scp; /* Delete this line after using scp. */
+ /*
+ * Do processing
+ */
+ return (0);
+}
+
+static int
+${1}close(struct cdev *dev, int fflag, int devtype, struct thread *td)
+{
+ int unit = UNIT(dev);
+ sc_p scp = sca[unit];
+
+ CHECKUNIT_DIAG(ENXIO);
+
+ (void)scp; /* Delete this line after using scp. */
+ /*
+ * Do processing
+ */
+ return (0);
+}
+
+static int
+${1}read(struct cdev *dev, struct uio *uio, int ioflag)
+{
+ int unit = UNIT(dev);
+ sc_p scp = sca[unit];
+ int toread;
+
+
+ CHECKUNIT_DIAG(ENXIO);
+
+ /*
+ * Do processing
+ * read from buffer
+ */
+ toread = (min(uio->uio_resid, sizeof(scp->buffer)));
+ return(uiomove(scp->buffer, toread, uio));
+}
+
+static int
+${1}write(struct cdev *dev, struct uio *uio, int ioflag)
+{
+ int unit = UNIT(dev);
+ sc_p scp = sca[unit];
+ int towrite;
+
+ CHECKUNIT_DIAG(ENXIO);
+
+ /*
+ * Do processing
+ * write to buffer
+ */
+ towrite = (min(uio->uio_resid, sizeof(scp->buffer)));
+ return(uiomove(scp->buffer, towrite, uio));
+}
+
+static int
+${1}mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
+{
+ int unit = UNIT(dev);
+ sc_p scp = sca[unit];
+
+ CHECKUNIT_DIAG(-1);
+
+ (void)scp; /* Delete this line after using scp. */
+ /*
+ * Do processing
+ */
+#if 0 /* if we had a frame buffer or whatever.. do this */
+ if (offset > FRAMEBUFFERSIZE - PAGE_SIZE) {
+ return (-1);
+ }
+ return i386_btop((FRAMEBASE + offset));
+#else
+ return (-1);
+#endif
+}
+
+static int
+${1}poll(struct cdev *dev, int which, struct thread *td)
+{
+ int unit = UNIT(dev);
+ sc_p scp = sca[unit];
+
+ CHECKUNIT_DIAG(ENXIO);
+
+ (void)scp; /* Delete this line after using scp. */
+ /*
+ * Do processing
+ */
+ return (0); /* this is the wrong value I'm sure */
+}
+
+/*
+ * Now for some driver initialisation.
+ * Occurs ONCE during boot (very early).
+ */
+static void
+${1}_drvinit(void *unused)
+{
+ int unit;
+ sc_p scp;
+
+ for (unit = 0; unit < N${UPPER}; unit++) {
+ /*
+ * Allocate storage for this instance .
+ */
+ scp = malloc(sizeof(*scp), M_DEVBUF, M_NOWAIT | M_ZERO);
+ if( scp == NULL) {
+ printf("${1}%d failed to allocate strorage\n", unit);
+ return;
+ }
+ sca[unit] = scp;
+ scp->dev = make_dev(&${1}_cdevsw, unit,
+ UID_ROOT, GID_KMEM, 0640, "${1}%d", unit);
+ }
+}
+
+SYSINIT(${1}dev, SI_SUB_DRIVERS, SI_ORDER_MIDDLE+CDEV_MAJOR,
+ ${1}_drvinit, NULL);
+DONE
+
+cat >${TOP}/sys/${1}io.h <<DONE
+/*
+ * Definitions needed to access the ${1} device (ioctls etc)
+ * see mtio.h , ioctl.h as examples
+ */
+#ifndef SYS_DHIO_H
+#define SYS_DHIO_H
+
+#ifndef KERNEL
+#include <sys/types.h>
+#endif
+#include <sys/ioccom.h>
+
+/*
+ * define an ioctl here
+ */
+#define DHIOCRESET _IO('D', 0) /* reset the ${1} device */
+#endif
+DONE
+
+if [ ! -d ${TOP}/modules/${1} ]; then
+ mkdir -p ${TOP}/modules/${1}
+fi
+
+cat >${TOP}/modules/${1}/Makefile <<DONE
+# ${UPPER} Loadable Kernel Module
+#
+# \$FreeBSD\$
+
+.PATH: \${.CURDIR}/../../dev/${1}
+KMOD = ${1}
+SRCS = ${1}.c
+
+.include <bsd.kmod.mk>
+DONE
+
+echo -n "Do you want to build the '${1}' module? [Y]"
+read VAL
+if [ "-z" "$VAL" ]; then
+ VAL=YES
+fi
+case ${VAL} in
+[yY]*)
+ (cd ${TOP}/modules/${1}; make depend; make )
+ ;;
+*)
+# exit
+ ;;
+esac
+
+echo ""
+echo -n "Do you want to build the '${UPPER}' kernel? [Y]"
+read VAL
+if [ "-z" "$VAL" ]; then
+ VAL=YES
+fi
+case ${VAL} in
+[yY]*)
+ (
+ cd ${TOP}/i386/conf; \
+ config ${UPPER}; \
+ cd ${TOP}/i386/compile/${UPPER}; \
+ make depend; \
+ make; \
+ )
+ ;;
+*)
+# exit
+ ;;
+esac
+
+#--------------end of script---------------
+#
+#edit to your taste..
+#
+#
diff --git a/share/examples/etc/README.examples b/share/examples/etc/README.examples
new file mode 100644
index 0000000..7ba696f
--- /dev/null
+++ b/share/examples/etc/README.examples
@@ -0,0 +1,75 @@
+$FreeBSD$
+
+The /usr/share/examples/etc directory contains the original
+distribution versions of the files which are shipped in /etc. This is
+intended to make it easy to recover when the /etc versions are
+accidentally deleted or broken beyond repair.
+
+This directory contains the following files:
+
+amd.map - filesystem automounter lookup resolution map (see amd(8))
+apmd.conf - configuration file for apmd(8)
+auth.conf - authentication capability database (see auth.conf(5))
+bsd-style-copyright - copyright style for bsd system
+crontab - system scheduled command table (see crontab(5))
+csh.cshrc - sample .cshrc (see csh(1))
+csh.login - sample .login
+csh.logout - sample .logout
+defaults/ - directory containing default configuration file
+devd.conf - configuration file for devd(8)
+devfs.conf - configuration file for devfs(8)
+dhclient.conf - configuration file for dhclient(8)
+disktab - disk description file (see disktab(5))
+fbtab - configuration file for login(1)
+ftpusers - user restriction file for ftpd(8)
+gettytab - defines port configuration for getty(8)
+group - group permissions file (see group(5))
+hosts - see hosts(5)
+hosts.allow - defines allow trusted hosts
+hosts.equiv - defines system-wide trusted hosts (see ruserok(3))
+hosts.lpd - defines trusted hosts for lpd(8)
+inetd.conf - configuration file for inetd(8)
+locate.rc - configuration file for locate(1)
+login.access - configuration file for login(8) (see login.access(5))
+login.conf - login class capabilities database (see login.conf(5))
+mac.conf - TrustedBSD MAC userland policy configuration file
+mail.rc - systemwide initialization files for mail(1)
+make.conf - example configuration variables for system builds
+manpath.config - configuration file for man(1)
+motd - sample Message of the Day
+netconfig - network configuration data base
+netstart - network startup script run from /etc/rc
+network.subr - routines for network configuration scripts
+networks - see networks(5)
+newsyslog.conf - configuration for system log file rotator newsyslog(8)
+nsmb.conf - smbfs lookups configuration file
+opieaccess - OPIE database of trusted networks
+pf.conf - pf(4) example configuration file
+pf.os - SYN fingerprint database
+phones - phone number database for tip(1)
+portsnap.conf - portsnap(8) configuration file
+printcap - configuration file for lpr(1)
+profile - system-wide .profile for sh(1)
+protocols - see protocols(5)
+rc - system startup script (see init(8))
+rc.bsdextended - startup policy for the mac_bsdextended(4) security module.
+rc.firewall - ipfw(8) setup script with basic rulesets
+rc.initdiskless - configuration file to boot a diskless machine
+rc.resume - sample run command file for APM Resume Event
+rc.sendmail - script for sendmail(8) startup
+rc.shutdown - system shutdown script (see init(8))
+rc.subr - script with functions used by various rc scripts
+rc.suspend - sample run command file for APM Resume Event
+remote - configuration file for tip(1)
+rpc - see rpc(5)
+security - script run from crontab to do nightly security checks
+services - see services(5)
+shells - list of configurable shells (see shells(5))
+snmpd.config - example configuration file for bsnmpd(1)
+sysctl.conf - configuration file for sysctl(8)
+syslog.conf - configuration file for syslogd(8)
+ttys - defines port configuration for init(8)
+defaults/bluetooth.device.conf -
+defaults/devfs.rules - default configuration rules for devfs(8)
+defaults/periodic.conf - default configuration file for periodic(8)
+defaults/rc.conf - default system configuration info (see rc.conf(5))
diff --git a/share/examples/etc/bsd-style-copyright b/share/examples/etc/bsd-style-copyright
new file mode 100644
index 0000000..e022541
--- /dev/null
+++ b/share/examples/etc/bsd-style-copyright
@@ -0,0 +1,27 @@
+/*-
+ * Copyright (c) [year] [your name]
+ * 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.
+ *
+ * [id for your version control system, if any]
+ */
diff --git a/share/examples/etc/make.conf b/share/examples/etc/make.conf
new file mode 100644
index 0000000..1e08f79
--- /dev/null
+++ b/share/examples/etc/make.conf
@@ -0,0 +1,272 @@
+# $FreeBSD$
+#
+# NOTE: Please would any committer updating this file also update the
+# make.conf(5) manual page, if necessary, which is located in
+# src/share/man/man5/make.conf.5.
+#
+# /etc/make.conf, if present, will be read by make (see
+# /usr/share/mk/sys.mk). It allows you to override macro definitions
+# to make without changing your source tree, or anything the source
+# tree installs.
+#
+# This file must be in valid Makefile syntax.
+#
+# There are additional things you can put into /etc/make.conf.
+# You have to find those in the Makefiles and documentation of
+# the source tree.
+#
+# Note, that you should not set MAKEOBJDIRPREFIX or MAKEOBJDIR
+# from make.conf (or as command line variables to make).
+# Both variables are environment variables for make and must be used as:
+#
+# env MAKEOBJDIRPREFIX=/big/directory make
+#
+#
+# The CPUTYPE variable controls which processor should be targeted for
+# generated code. This controls processor-specific optimizations in
+# certain code (currently only OpenSSL) as well as modifying the value
+# of CFLAGS to contain the appropriate optimization directive to gcc.
+# The automatic setting of CFLAGS may be overridden using the
+# NO_CPU_CFLAGS variable below.
+# Currently the following CPU types are recognized:
+# Intel x86 architecture:
+# (AMD CPUs) opteron athlon64 athlon-mp athlon-xp athlon-4
+# athlon-tbird athlon k8 k6-3 k6-2 k6 k5
+# (Intel CPUs) core2 core nocona pentium4m pentium4 prescott
+# pentium3m pentium3 pentium-m pentium2
+# pentiumpro pentium-mmx pentium i486 i386
+# (Via CPUs) c3 c3-2
+# Alpha/AXP architecture: ev67 ev6 pca56 ev56 ev5 ev45 ev4
+# AMD64 architecture: opteron, athlon64, nocona, prescott, core2
+# Intel ia64 architecture: itanium2, itanium
+#
+# (?= allows to buildworld for a different CPUTYPE.)
+#
+#CPUTYPE?=pentium3
+#NO_CPU_CFLAGS= # Don't add -march=<cpu> to CFLAGS automatically
+#NO_CPU_COPTFLAGS= # Don't add -march=<cpu> to COPTFLAGS automatically
+#
+# CFLAGS controls the compiler settings used when compiling C code.
+# Note that optimization settings other than -O and -O2 are not recommended
+# or supported for compiling the world or the kernel - please revert any
+# nonstandard optimization settings to "-O" or "-O2 -fno-strict-aliasing"
+# before submitting bug reports without patches to the developers.
+#
+# Compiling with -fstrict-aliasing optimization breaks some [notable] ports.
+# GCC turns on -fstrict-aliasing optimization at all levels above -O[1], so
+# explicitly turn it off when using compiling with the -O2 optimization level.
+#
+#CFLAGS= -O2 -fno-strict-aliasing -pipe
+#
+# CXXFLAGS controls the compiler settings used when compiling C++ code.
+# Note that CXXFLAGS is initially set to the value of CFLAGS. If you wish
+# to add to CXXFLAGS value, "+=" must be used rather than "=". Using "="
+# alone will remove the often needed contents of CFLAGS from CXXFLAGS.
+#
+#CXXFLAGS+= -fconserve-space
+#
+# MAKE_SHELL controls the shell used internally by make(1) to process the
+# command scripts in makefiles. Three shells are supported, sh, ksh, and
+# csh. Using sh is most common, and advised. Using ksh *may* work, but is
+# not guaranteed to. Using csh is absurd. The default is to use sh.
+#
+#MAKE_SHELL?=sh
+#
+# BDECFLAGS are a set of gcc warning settings that Bruce Evans has suggested
+# for use in developing FreeBSD and testing changes. They can be used by
+# putting "CFLAGS+=${BDECFLAGS}" in /etc/make.conf. -Wconversion is not
+# included here due to compiler bugs, e.g., mkdir()'s mode_t argument.
+#
+#BDECFLAGS= -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align \
+# -Wcast-qual -Wchar-subscripts -Winline \
+# -Wmissing-prototypes -Wnested-externs -Wpointer-arith \
+# -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings
+#
+# To compile just the kernel with special optimizations, you should use
+# this instead of CFLAGS (which is not applicable to kernel builds anyway).
+# There is very little to gain by using higher optimization levels, and doing
+# so can cause problems.
+#
+#COPTFLAGS= -O -pipe
+#
+# Compare before install
+#INSTALL=install -C
+#
+# Mtree will follow symlinks
+#MTREE_FOLLOWS_SYMLINKS= -L
+#
+# To enable installing ssh(1) with the setuid bit turned on
+#ENABLE_SUID_SSH=
+#
+# To enable installing newgrp(1) with the setuid bit turned on.
+# Without the setuid bit, newgrp cannot change users' groups.
+#ENABLE_SUID_NEWGRP=
+#
+# To avoid building various parts of the base system:
+#NO_MODULES= # do not build modules with the kernel
+#NO_SHARE= # do not go into the share subdir
+#NO_SHARED= # build /bin and /sbin statically linked (bad idea)
+#
+# Variables that control how ppp(8) is built.
+#PPP_NO_NAT= # do not build with NAT support (see make.conf(5))
+#PPP_NO_NETGRAPH= # do not build with Netgraph support
+#PPP_NO_RADIUS= # do not build with RADIUS support
+#PPP_NO_SUID= # build with normal permissions
+#
+#TRACEROUTE_NO_IPSEC= # do not build traceroute(8) with IPSEC support
+#
+# To build sys/modules when building the world (our old way of doing things)
+#MODULES_WITH_WORLD= # do not build modules when building kernel
+#
+# The list of modules to build instead of all of them.
+#MODULES_OVERRIDE= linux ipfw
+#
+# The list of modules to never build, applied *after* MODULES_OVERRIDE.
+#WITHOUT_MODULES= bktr plip
+#
+# If you do not want unformatted manual pages to be compressed
+# when they are installed:
+#
+#NO_MANCOMPRESS=
+#
+#
+# Default format for system documentation, depends on your printer.
+# Set this to "ascii" for simple printers or screen
+#
+#PRINTERDEVICE= ps
+#
+#
+# How long to wait for a console keypress before booting the default kernel.
+# This value is approximately in milliseconds. Keypresses are accepted by the
+# BIOS before booting from disk, making it possible to give custom boot
+# parameters even when this is set to 0.
+#
+#BOOTWAIT=0
+#BOOTWAIT=30000
+#
+# By default, the system will always use the keyboard/video card as system
+# console. However, the boot blocks may be dynamically configured to use a
+# serial port in addition to or instead of the keyboard/video console.
+#
+# By default we use COM1 as our serial console port *if* we're going to use
+# a serial port as our console at all. Alter as necessary.
+#
+# COM1: = 0x3F8, COM2: = 0x2F8, COM3: = 0x3E8, COM4: = 0x2E8
+#
+#BOOT_COMCONSOLE_PORT= 0x3F8
+#
+# The default serial console speed is 9600. Set the speed to a larger value
+# for better interactive response.
+#
+#BOOT_COMCONSOLE_SPEED= 115200
+#
+# By default the 'pxeboot' loader retrieves the kernel via NFS. Defining
+# this and recompiling /usr/src/sys/boot will cause it to retrieve the kernel
+# via TFTP. This allows pxeboot to load a custom BOOTP diskless kernel yet
+# still mount the server's '/' (i.e. rather than load the server's kernel).
+#
+#LOADER_TFTP_SUPPORT= YES
+#
+#
+# Kerberos 5 su (k5su)
+# If you want to use the k5su utility, define this to have it installed
+# set-user-ID.
+#ENABLE_SUID_K5SU=
+#
+#
+# CVSup update flags. Edit SUPFILE settings to reflect whichever distribution
+# file(s) you use on your site (see /usr/share/examples/cvsup/README for more
+# information on CVSup and these files). To use, do "make update" in /usr/src.
+#
+#SUP_UPDATE=
+#
+#SUP= /usr/bin/csup
+#SUPFLAGS= -g -L 2
+#SUPHOST= cvsup.uk.FreeBSD.org
+#SUPFILE= /usr/share/examples/cvsup/standard-supfile
+#PORTSSUPFILE= /usr/share/examples/cvsup/ports-supfile
+#DOCSUPFILE= /usr/share/examples/cvsup/doc-supfile
+#
+# top(1) uses a hash table for the user names. The size of this hash
+# can be tuned to match the number of local users. The table size should
+# be a prime number approximately twice as large as the number of lines in
+# /etc/passwd. The default number is 20011.
+#
+#TOP_TABLE_SIZE= 101
+#
+# Documentation
+#
+# The list of languages and encodings to build and install
+#
+#DOC_LANG= en_US.ISO8859-1 ru_RU.KOI8-R
+#
+#
+# sendmail
+#
+# The following sets the default m4 configuration file to use at
+# install time. Use with caution as a make install will overwrite
+# any existing /etc/mail/sendmail.cf. Note that SENDMAIL_CF is now
+# deprecated. The value should be a fully qualified path name.
+#
+#SENDMAIL_MC=/etc/mail/myconfig.mc
+#
+# The following sets the default m4 configuration file for mail
+# submission to use at install time. Use with caution as a make
+# install will overwrite any existing /etc/mail/submit.cf. The
+# value should be a fully qualified path name.
+#
+#SENDMAIL_SUBMIT_MC=/etc/mail/mysubmit.mc
+#
+# If you need to build additional .cf files during a make buildworld,
+# include the full paths to the .mc files in SENDMAIL_ADDITIONAL_MC.
+#
+#SENDMAIL_ADDITIONAL_MC=/etc/mail/foo.mc /etc/mail/bar.mc
+#
+# The following overrides the default location for the m4 configuration
+# files used to build a .cf file from a .mc file.
+#
+#SENDMAIL_CF_DIR=/usr/local/share/sendmail/cf
+#
+# Setting the following variable modifies the flags passed to m4 when
+# building a .cf file from a .mc file. It can be used to enable
+# features disabled by default.
+#
+#SENDMAIL_M4_FLAGS=
+#
+# Setting the following variables modifies the build environment for
+# sendmail and its related utilities. For example, SASL support can be
+# added with settings such as:
+#
+# with SASLv1:
+# SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
+# SENDMAIL_LDFLAGS=-L/usr/local/lib
+# SENDMAIL_LDADD=-lsasl
+#
+# with SASLv2:
+# SENDMAIL_CFLAGS=-I/usr/local/include -DSASL=2
+# SENDMAIL_LDFLAGS=-L/usr/local/lib
+# SENDMAIL_LDADD=-lsasl2
+#
+# Note: If you are using Cyrus SASL with other applications which require
+# access to the sasldb file, you should add the following to your
+# sendmail.mc file:
+#
+# define(`confDONT_BLAME_SENDMAIL',`GroupReadableSASLDBFile')
+#
+#SENDMAIL_CFLAGS=
+#SENDMAIL_LDFLAGS=
+#SENDMAIL_LDADD=
+#SENDMAIL_DPADD=
+#
+# Setting SENDMAIL_SET_USER_ID will install the sendmail binary as a
+# set-user-ID root binary instead of a set-group-ID smmsp binary and will
+# prevent the installation of /etc/mail/submit.cf.
+# This is a deprecated mode of operation. See etc/mail/README for more
+# information.
+#
+#SENDMAIL_SET_USER_ID=
+#
+# The permissions to use on alias and map databases generated using
+# /etc/mail/Makefile. Defaults to 0640.
+#
+#SENDMAIL_MAP_PERMS=
diff --git a/share/examples/find_interface/Makefile b/share/examples/find_interface/Makefile
new file mode 100644
index 0000000..ac6de9c
--- /dev/null
+++ b/share/examples/find_interface/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+PROG= find_interface
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/share/examples/find_interface/README b/share/examples/find_interface/README
new file mode 100644
index 0000000..4df4399
--- /dev/null
+++ b/share/examples/find_interface/README
@@ -0,0 +1,9 @@
+This is a simple program which demonstrates how to query the kernel
+routing mechanism using only a UDP socket. Pass it a hostname on
+the command line (sorry, it doesn't parse dotted decimal) and it will
+print out an IP address which names the interface over which UDP
+packets intended for that destination would be sent.
+A more sophisticated program might use the list obtained from SIOCGIFCONF
+to match the address with an interface name, but applications programmers
+much more often need to know the address of the interface rather than
+the name.
diff --git a/share/examples/find_interface/find_interface.c b/share/examples/find_interface/find_interface.c
new file mode 100644
index 0000000..73a7fe8
--- /dev/null
+++ b/share/examples/find_interface/find_interface.c
@@ -0,0 +1,111 @@
+/*
+ * Copyright 1994, 1995 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that both the above copyright notice and this
+ * permission notice appear in all copies, that both the above
+ * copyright notice and this permission notice appear in all
+ * supporting documentation, and that the name of M.I.T. not be used
+ * in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. M.I.T. makes
+ * no representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+ * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+ * SHALL M.I.T. 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 simple program which demonstrates how to query the kernel
+ * routing mechanism using only a UDP socket. Pass it a hostname on
+ * the command line (sorry, it doesn't parse dotted decimal) and it will
+ * print out an IP address which names the interface over which UDP
+ * packets intended for that destination would be sent.
+ * A more sophisticated program might use the list obtained from SIOCGIFCONF
+ * to match the address with an interface name, but applications programmers
+ * much more often need to know the address of the interface rather than
+ * the name.
+ */
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <unistd.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <netdb.h>
+#include <err.h>
+#include <errno.h>
+#include <string.h>
+#include <sysexits.h>
+
+int
+main(int argc, char **argv)
+{
+ struct sockaddr_in local, remote;
+ struct hostent *hp;
+ int s, rv, namelen;
+
+ argc--, argv++;
+
+ if (!*argv) {
+ errx(EX_USAGE, "must supply a hostname");
+ }
+
+ hp = gethostbyname(*argv);
+ if (!hp) {
+ errx(EX_NOHOST, "cannot resolve hostname: %s", *argv);
+ }
+
+ memcpy(&remote.sin_addr, hp->h_addr_list[0], sizeof remote.sin_addr);
+ remote.sin_port = htons(60000);
+ remote.sin_family = AF_INET;
+ remote.sin_len = sizeof remote;
+
+ local.sin_addr.s_addr = htonl(INADDR_ANY);
+ local.sin_port = htons(60000);
+ local.sin_family = AF_INET;
+ local.sin_len = sizeof local;
+
+ s = socket(PF_INET, SOCK_DGRAM, 0);
+ if (s < 0)
+ err(EX_OSERR, "socket");
+
+ do {
+ rv = bind(s, (struct sockaddr *)&local, sizeof local);
+ local.sin_port = htons(ntohs(local.sin_port) + 1);
+ } while(rv < 0 && errno == EADDRINUSE);
+
+ if (rv < 0)
+ err(EX_OSERR, "bind");
+
+ do {
+ rv = connect(s, (struct sockaddr *)&remote, sizeof remote);
+ remote.sin_port = htons(ntohs(remote.sin_port) + 1);
+ } while(rv < 0 && errno == EADDRINUSE);
+
+ if (rv < 0)
+ err(EX_OSERR, "connect");
+
+ namelen = sizeof local;
+ rv = getsockname(s, (struct sockaddr *)&local, &namelen);
+ if (rv < 0)
+ err(EX_OSERR, "getsockname");
+
+ printf("Route to %s is out %s\n", *argv, inet_ntoa(local.sin_addr));
+ return 0;
+}
diff --git a/share/examples/hwpmc/README b/share/examples/hwpmc/README
new file mode 100644
index 0000000..035e68d
--- /dev/null
+++ b/share/examples/hwpmc/README
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+Examples illustrating the use of the hwpmc(4) driver and pmc(3)
+library interface.
+
+While there is nothing here yet, the source code for pmccontrol(8)
+and pmcstat(8) could serve as examples.
+
diff --git a/share/examples/ibcs2/README b/share/examples/ibcs2/README
new file mode 100644
index 0000000..73e9281
--- /dev/null
+++ b/share/examples/ibcs2/README
@@ -0,0 +1,3 @@
+Here is a small hello world type program in iBCS2 coff format.
+You must uudecode it first to run it under the FreeBSD iBCS support.
+
diff --git a/share/examples/ibcs2/hello.uu b/share/examples/ibcs2/hello.uu
new file mode 100644
index 0000000..a4b091a
--- /dev/null
+++ b/share/examples/ibcs2/hello.uu
@@ -0,0 +1,677 @@
+begin 755 hello_world
+M3`$$`'.D"RXT2@``9@(``!P``P$+`0``/#0``)P4```H#```U````-`````,
+M!4``+G1E>'0```#0````T````#PT``#0````````````````````(````"YD
+M871A````#`5```P%0`"<%```##4``````````````````$`````N8G-S````
+M`*@90`"H&4``*`P```````````````````````"`````+F-O;6UE;G0`````
+M`````(P```"H20````````````````````(``,.0D)"#[`B+[(M%"(U4A1")
+M%0T%0`!2C54,4E#HW____V@,!4``:@'H/P@``(/$",<%"!E```````#H&0``
+M`(/$#%#H0#,``&H`N`$```":``````<`],-5B^R![`````!35U9H%`5``&AP
+M%$``Z"T-``"#Q`AH*`5``&A@%$``Z!L-``"#Q`A>7UO)PY"0D%6+[(/L"%=6
+M:BIJ`/]U#.@P,@``@\0,,_;K59"#_PY](XM%#&O.#@/!BTT(_T4(B@F(##A'
+MBT4(#[8`]H"U$$``!W78BT4(@#@`=0@SP%Y?R<.0D(O&"\!T"H/X`70UZR20
+MD)"+10C_10B`.%]U#4:#_@-]+S/_Z[R0D)"+10B`>/\N=`NX`0```%Y?R<.0
+MD$;KW)"+10C_10B`."YTT.ODD)"07E_)PU6+[(/L!%=6,_;K)6O&#HOXBT4(
+M@#PX`'46:@Z+10P#QU"+10@#QU#H'PT``(/$#$:#_@-\UEY?R<.0D%6+[&H1
+M:.0'0`!J`NCC,0``@\0,_W4,Z,`Q``"#Q`10_W4,:@+HRC$``(/$#&H":/@'
+M0`!J`NBY,0``@\0,BT4(@^@!@_@'#X>_````+O\DA5P#``"0D)#'10S\!T``
+M_W4,Z'4Q``"#Q`10_W4,:@+H?S$``(/$#&HB:`0(0`!J`NAN,0``@\0,Z:H`
+M``"0D&H/:"@(0`!J`NA6,0``@\0,:A%H/`5``.O5D)!J`V@X"$``:@+H.C$`
+M`(/$#&H%:%`%0`!J`N@I,0``@\0,:@EH/`A``.O`D&H%:%`%0`!J`N@.,0``
+M@\0,:A%H2`A``.NED)!J%VA<"$``ZX*0D)!J$VAT"$``Z7/___]J#6B("$``
+MZ6?___^C`@``G`(``-0"``#P`@``'`,``#@#``!$`P``1`,``&H!:)8(0`!J
+M`NBN,```R<-5B^R#[#1HF`A``/]U".A5"P``@\0("\!U!\=%"%`'0`#_=1#_
+M=0CHJ/W__X/$"`O`=`FX`0```,G#D)"+11"`.`!T$(!X#@!T"H!X'``/A3X"
+M``#_=0SHJ`L``(/$!(E%_`O`=#&-1=!0_W7\Z&+]__^#Q`@+P'0/_W4,:@'H
+M-?[__^L/D)"0C4704/]U$.CH_?__@\0(BT40@#@`=!"`>`X`=`J`>!P`#X7C
+M`0``:)P(0`#H2PL``(/$!(E%_`O`=#"-1=!0_W7\Z`7]__^#Q`@+P'0._W4,
+M:@+HV/W__^L.D)"-1=!0_W40Z(S]__^#Q`B+11"`.`!T$(!X#@!T"H!X'``/
+MA8<!``!H/`5``.B#`0``@\0$"\!T)(M%$(`X`'40@'@.`'4*@'@<``^$__[_
+M__]U#&H#Z1@!``"0D,=%S`````!H4`5``.B+`0``@\0$B47\"\`/A.(```"-
+M1=!0_W7\Z&G\__^#Q`@+P'02_W4,:@7H//W__X/$".FS````@'W0`'3H@'W>
+M`'3B@'WL`'3<BT40@#@`=!J-1=!0_W40Z+X)``"#Q`B#^`$;P/?8ZP>0D+@!
+M````"\!T=HM%$(!X#@!T'HU%WE"+11"#P`Y0Z(X)``"#Q`B#^`$;P/?8ZP>0
+MD+@!````"\!T1HM%$(!X'`!T'HU%[%"+11"#P!Q0Z%X)``"#Q`B#^`$;P/?8
+MZP>0D+@!````"\!T%HU%T%#_=1#H3_S__X/$",=%S`$```"#?<P`#X0&____
+M:@#H4````(/$!(-]S`!U#?]U#&H$Z%W\__^#Q`B+11"`.`!T#(!X#@!T!H!X
+M'`!U((U%T%!H4`=``.A4^___@\0(C4704/]U$.CM^___@\0(,\#)PY"058OL
+M@SUD!T```'P._S5D!T``Z'4I``"#Q`2#?0@`="!J`/]U".C6"@``@\0(HV0'
+M0``+P'T*N`$```#)PY"0D#/`R<-5B^R#[!1J`6H`_S5D!T``Z),*``"#Q`R)
+M1?C_=0CHE2T``(/$!(E%[&@``0``:*@90`#_-60'0`#HD@H``(/$#(E%]`O`
+M?C/'1?"H&4``BT7PB47\ZP^0BT7\@#@*=`S_1?S_3?2#??0`=>R#??0`=3*!
+M??"H&4``=04SP,G#D&H`_W7X_S5D!T``Z!@*``"#Q`R#??0`=)"+1>P#1?#)
+MPY"0D(M%_,8``(M%_"M%\$`!1?C_=>S_=?#_=0CHE@D``(/$#`O`=+?_3?2+
+M1?Q`B47PZ7?___]5B^R![(0```!6C46(4&M%"$C_L%P%0`#_=0SH+/S__X/$
+M#`O`=`4SP%[)PVBD"$``C46T4.@""@``@\0(QT6``````.LMD)!HL@A``(U%
+MM%#HM@D``(/$"&H.:T6`#HU$!8A0C46T4.A7"```@\0,_T6`@WV``WS/:+0(
+M0`"-1;10Z(4)``"#Q`AK10A(_["<!4``C46T4.AO"0``@\0(:@"-1;10Z#D)
+M``"#Q`B)A7S___]`=2F#?1``=!MK10A(_[!<!4``:@;H-OK__X/$".E1____
+MD)"XM@A``%[)PVH!C46'4/^U?/___^@'"0``@\0,@_@!?`]K10A(BDV'.(B8
+M!4``="AK10A(_[!<!4``:@?HZ_G__X/$"/^U?/___^A))P``@\0$Z?C^__^0
+M_[5\____:T4(2/^0D`5``(/$!(E%@/^U?/___^@?)P``@\0$@WV``'02:T4(
+M2/^P7`5``&H(Z5[___^0:T4(2(OP@<9@!4``Q@8`:@Z-18A05N@]!P``@\0,
+M:+@(0`!K10A(!6`%0`!0Z&X(``"#Q`AJ#HU%EE!K10A(!6`%0`!0Z`X'``"#
+MQ`QHN@A``&M%"$@%8`5``%#H/P@``(/$"&H.C46D4&M%"$@%8`5``%#HWP8`
+M`(/$#+E(````BT4(]^D%8`5``%[)PY"058OL@^P45U;'1>P`````QT7X`0``
+M`,8%J!I```"#?0P`#X7%````@WT(`0^%AP```#/VZV>0D)"XJ!I``%Y?R<.0
+MD)!HO`A``&BH&D``Z+T'``"#Q`AKQD@%8`5``%!HJ!I``.BG!P``@\0(:\9(
+MB_B#OZ0%0```="$%J`5``%"+QP5@!4``4.@K!0``@\0("\!T!\=%^`````!&
+M:\9(@[A<!4```'6<@WWX`'2*N&`%0`!>7\G#D#/VZQUKQDB+^(M%"#F'6`5`
+M`'4,B\<%8`5``%Y?R<.01FO&2(.X7`5```!UUS/`7E_)PY"#?0@!#X66````
+M:`X!``#_=0QHJ!I``.@0!0``@\0,Q@6V&T```(`]J!I``"]U$<=%^`````#'
+M1?"I&D``ZPB0QT7\J!I``#/VZQ>0:@#_=?Q6Z,'\__^#Q`R)1>P+P'281H-]
+M^`!U)(-]\`!T*HM%\(E%_&HO4.@8!```@\0(B47P"\!T!O]%\,8``&O&2(.X
+M7`5```!UM(M%#%Y?R<.0,_;K`49KQDB#N%P%0```#X1$____:\9(BTT(.8A8
+M!4``=>%J`?]U#%;H2OS__X/$#%Y?R<.0D)!5B^Q6@7T(Z`,``'PKBT4(N>@#
+M``"9]_F+\(/^!W\9BT4(F??Y4FO&2/^03`5``(/$!%[)PY"0D+B^"$``7LG#
+M58OL@WT(`'4'N/_____)P_]U"&H!Z.+]__^#Q`@+P'3H,\#)PY"0D%6+[+B_
+M"$``R<.0D%6+[('LQ`,``&C$`P``C84\_/__4/]U".BG!0``@\0,/<0#``!]
+M";@!````R<.0D`^_A3S\___1X`^_C3[\__^-!(B#P$0]Q`,``'_::,0#``"-
+MA3S\__]0:,`(0`#HJ2<``(/$##/`R<.0D%6+[(/L$&H0C47P4/]U".A$!0``
+M@\0,@_@0?0BX`0```,G#D&H0C47P4&B$#$``Z&PG``"#Q`PSP,G#D%6+[(M%
+M"`O`=`Z#^`%T$;B4#$``R<.0D+B$#$``R<.0N(P,0`#)PY!5B^R#[`AJ"(U%
+M^%#_=0CHX`0``(/$#(/X"'T(N`$```#)PY!J"(U%^%!HF`Q``.@()P``@\0,
+M,\#)PY!5B^R+10@+P'0*N*`,0`#)PY"0D+B8#$``R<.058OL@>Q8`@``5U9H
+M5@(``(V%J/W__U#_=0CH?00``(/$##U6`@``?0NX`0```%Y?R<.0D+^D#$``
+MC;6H_?__N94```#RI6:E,\!>7\G#D)!5B^R+10B#^"IW62[_)(58#0``D`^_
+M!:0,0``%^@Q``,G#D)`/OP6F#$``Z^Z0D)`/OP6J#$``Z^*0D)`/OP6H#$``
+MZ]:0D)`/OP6L#$``Z\J0D)"+10@/OP1%I`Q``.NZD)"0N/P.0`#)PY``#0``
+M$`T``!P-```H#0``-`T``$`-``!`#0``0`T``$`-``!`#0``0`T``$`-``!`
+M#0``0`T``$`-``!`#0``0`T``$`-``!`#0``0`T``$`-``!`#0``0`T``$`-
+M``!`#0``0`T``$`-``!`#0``0`T``$`-``!`#0``0`T``$`-``!`#0``0`T`
+M`$`-``!`#0``0`T``$`-``!`#0``0`T``$`-``!`#0``R<.0D%6+[(/L!&H"
+MC47^4/]U".@<`P``@\0,@_@"?0BX`0```,G#D&:+1?YFHPP90``SP,G#D)!5
+MB^R+10@+P'0.@_@!=!W&!0`/0```ZPJ@#!E``*(`#T``N``/0`#)PY"0D*`-
+M&4``Z^J058OL@^P(5HU%$(E%_(M%"/9`#`)U"O9`#(!T((!(#`+_=0C_=?S_
+M=0SHP@,``(/$#(OPBT4(]D`,('0(N/____]>R<.+QE[)PY"0D%:+="0(BE0D
+M#*PZPG0CA,!T&ZPZPG0:A,!T$JPZPG01A,!T":PZPG0(A,!UW#/`7L.+QDA>
+MPY"05U:+="0,BWPD$#O^=$"LKG5!A,!T.*RN=3F$P'0PK*YU,83`="BLKG4I
+MA,!T(*RN=2&$P'08K*YU&83`=!"LKG41A,!T"*RN=0F$P'7`,\!>7\,/ML`/
+MME?_*\)>7\.05U:+?"00BTPD%#/`\JZ+T8O/BW0D$"O.BWPD#(O!P>D"\Z6+
+MR('A`P```/.DB\HSP/.JBT0D#%Y?PY"058OL@^P(4U=6BW4(BQT-!4``"]MU
+M"C/`7E];R<.0D)"#.P!T\8/#!/]S_%;H#P```(/$"(OX"_]TYEY?6\G#D%6+
+M[%=6BW4(BWT,1XH&.$?_=0U&@'[_/77QB\=>7\G#@#X`=0:`?_\]=.\SP%Y?
+MR<.0D)"+UU:+?"0(,\"Y______*N3XOWBWPD#(M,)!#RKN,!3XO/B_Z+="0,
+M*\[SI(@/BT0D"%Z+^L.0D%6+[('L"`(``&@!`0``C87\_O__4/]U".C?````
+M@\0,/0$!``!\'F@!`0``C87X_?__4/]U".C!````@\0,/0$!``!]![@!````
+MR<-H`0$``(V%_/[__U!HM!!``.CB(@``@\0,:`$!``"-A?C]__]0:`0/0`#H
+MR2(``(/$##/`R<.0D%=6BW0D#(M\)!`[_G0QBTPD%$%)="FLKG4JA,!T(4ET
+M'JRN=1^$P'062703K*YU%(3`=`M)=`BLKG4)A,!UU#/`7E_##[;`#[97_RO"
+M7E_#N!,```":``````<`#X(J(P``PY"X!0```)H`````!P`/@A8C``##D+@#
+M````F@`````'``^"`B,``,.0B]=6BWPD"#/`N?_____RKD^+]XM\)`RY____
+M__*N]]&+_HMT)`SSI(M$)`A>B_K#5XO6BWPD##/`N?_____RKO?1BW0D#(M\
+M)`B+P<'I`O.EB\B!X0,```#SI(M$)`B+\E_#D%6+[(/L"(M%"(L`)0$```")
+M1?R+10B+`-'X)?___W^)1?BY!0```)GW^8M-"(D!BT7XN04```"9]_F*1?R-
+M!%`$,`^^P,G#D%6+[%-75HMU"(M]#(M=$(![#3QT-XM%%(L`*T,$*0.+112+
+M`(E#!%/H4QT``(/$!%-7:@%6Z/H7``"#Q!"+112+2P2)"%Y?6\G#D)!75HM%
+M%/\PZ#`A``"#Q`P#QXM-%(D!7E];R<.058OL@>P$`@``4U=6BW4(BWT0QT6@
+M`````,=%B`````#'1<0`````QT6X``````^^1PV)A0S^__^+1P2)1="#O0S^
+M__\\=0D-____?^L/D)"+A0S^__^+!(44&$``B47@B@:(1><*P'1B/"5T7HO>
+M1HH&B$7G"L!T!#PE=?*+QBO#B84,_O__`46@`T70B84(_O__.T7@=AB-1=!0
+M5_^U#/[__U/H[_[__X/$$.L=D)#_M0S^__]3_W70Z&$@``"#Q`R+A0C^__^)
+M1="`?><`=7.+1=`K1P2)A03^__\I!XM%T(E'!(M%T`,'.T7@=@^`?PT\=`E7
+MZ!T<``"#Q`3V1PQ$="?V1PP$=1C_=:!J"HM%T"M%H%#HZ1\``(/$#`O`=`E7
+MZ"P:``"#Q`3V1PP@=`NX_____UY?6\G#D(M%H%Y?6\G#,\")1:2)1;2)1<B)
+M1?2)1?!&K(A%YP^VP(/H((/X6`^'.PH``"[_)(4,'@``D)"0@$VT`NO<D)"`
+M3;0$Z]20D(!-M`CKS)"0@$VT$.O$D)"`3;1`QT64`````.NUD)"0]D6T0'4:
+M@T4,!(M%#(M`_(E%\`O`?9OW7?"`=;0$ZY*#10P$BT4,BT#\B464"\!]@>O!
+MD/9%M$1U!(!-M"`/MD7G@^@PB84$_O__ZQJ0D)`/MD7G@^@P:XT$_O__"@/!
+MB84$_O__1HH&B$7G#[9%Y_:`M1!```1UU_9%M$!T$8N%!/[__XE%E.DE____
+MD)"0BX4$_O__B47PZ13___^0D(!-M`'I"?___Y"0D/9%M`&#10P$BT4,BT#\
+MB474C9T?_O__B5WL"\!](L>%$/[__W@00`#'1?0!````/0```(`/A/L```#W
+M7=3K+)#V1;0"=`['A1#^__]Z$$``ZQ*0D/9%M`AT$<>%$/[__WP00`#'1?0!
+M````BT74B84$_O__@_@)?P\+P'54]D6T0'59ZTR0D)"+A03^__^)A0S^__^X
+M"@```(F%"/[__XN%!/[__YGWO0C^__^)A03^__^P"O:M!/[__XJ-#/[__RK(
+M@,$P2X@+@[T$_O__"7^W2XJ%!/[__P0PB`/V1;1`#X3:"0``BT64BTWL*\LK
+MP8F%!/[__PO`#X[""0``B46,B47(@$VU`NFS"0``D)"0]D6T`8-%#`2+10R+
+M0/R)1=2-G1_^__^)7>RI````@`^$-O___XU%U%#HPOO__X/$!$N(`^DB____
+MD)"0QT7`!P```,=%S`(```#K#L=%P`\```#'1<P#````]D6T`8-%#`2+10R+
+M0/R)1=2`?>=8=0>X.!!``.L%N$P00`")1;"-G1_^__^)7>R+1=2)A03^__\+
+MP'4:]D6T0'5!N`$```")18R)1<B`3;4"ZS"0D)!+BX4$_O__(T7``T6PB@"(
+M`XN%!/[__]'X)?___W^*3<S3^(F%!/[__PO`==/V1;1`=!Z+192+3>PKRRO!
+MB84$_O__"\!^"HE%C(E%R(!-M0+V1;00#X2E"```@WW4``^$FP@```^V1>>#
+M^%AT0H/X;W0-@_AX="#I@P@``)"0D&;W1;0``@^%=`@``+@!````Z:C^__^0
+MD,>%$/[__X`00`#'1?0"````Z5((``"0D,>%$/[__X000`#KYO9%M$!U!\=%
+ME`8```"#10P(BT4,5E>-?:B-</BEI5]>BT6L)0``\'\]``#P?P^%H0```/=%
+MK/__#P!U/(M%K"4```"`/0```(!U!\=%N`$```#'18@!````@'WG174)N'00
+M0`#K!Y"0N'`00`"+V(U#`^DQ!@``D(M%K"4```"`/0```(!U$<>%$/[__X@0
+M0`#'1?0!````BT6LP>`,B474QT7$!0```,=%P`\```#'1<P#````@'WG10^$
+MQ`0``,=%_&`00`#'1;!,$$``Z4'^__^0C47H4(U%^%"+191`@_@1?`6X$0``
+M`%#_=:S_=:CH@@L``(/$%(O8@WWH`'0/QX40_O__BA!``.LGD)"0]D6T`G0.
+MQX40_O__C!!``.L2D)#V1;0(=!''A1#^__^.$$``QT7T`0```(V%%/[__XE%
+M[(`[`'0'B@-#ZP20D+`PBTWL_T7LB`&#?90`=0;V1;00=`Z+1>S_1>R*#0P9
+M0`"("(M%E(F%!/[__^L7D(`[`'0:BT7L_T7LB@M#B`C_C03^__^#O03^__\`
+M?^&#O03^__\`?A"+A03^__^)1=R)1<B`3;4!B]V!Z^P!``"-19V)1;S&``#=
+M1:C<':P00`#?X)N>='F+1?A(B84$_O__"\!]*/>=!/[__^L@D)"X"@```(F%
+M"/[__XN%!/[__YGWO0C^__^)A03^__^#O03^__\)?AV+A03^__^Y"@```)GW
+M^8#",/]-O(M%O(@0Z[Z0D/]-O(M%O(J-!/[__X#!,(@(ZPJ0_TV\BT6\Q@`P
+MC46;.46\=^^#??@`?P_=1:C<':P00`#?X)N>=0:P*^L$D)"P+?]-O(M-O(@!
+M#[9%Y_:`M1!```%T!;!%ZP.0L&7_3;R+3;R(`8O%*T6\@^ACB46D`47(@$VT
+M@.F3!0``D)"0]D6T0'4'QT64!@```(-%#`B+10Q65XU]J(UP^*6E7UZ+1:PE
+M``#P?ST``/!_#X6%````]T6L__\/`'4HBT6L)0```(`]````@'4'QT6X`0``
+M`,=%B`$```"[<!!``.E8_?__D(M%K"4```"`/0```(!U$<>%$/[__Y`00`#'
+M1?0!````BT6LP>`,B474QT7$!0```,=%P`\```#'1<P#````QT6P3!!``,=%
+M_&`00`#IJ_O__Y"0D(U%Z%"-1?A0BT64@_@\?`6X/````%#_=:S_=:CH!PD`
+M`(/$%(O8@WWH`'0<BT64]]@[1?A]$H`[,'0-QX40_O__DA!``.LED/9%M`)T
+M#L>%$/[__Y000`#K$I"0]D6T"'01QX40_O__EA!``,=%]`$```"-A13^__^)
+M1>R+1?B)A03^___'19``````@[T$_O__`'X+@#L`=`:#?9`1?`2P,.L&_T60
+MB@-#BTWL_T7LB`'_C03^__^#O03^__\`?\OV1;00=0:#?90`?@Z+1>S_1>R*
+M#0P90`"("(M%E(/X/'P%N#P```")A03^__\Y191^.X!-M0&+190KA03^__^)
+M1=R)1<CK)O]%^(-]^`!^"X`[`'0&@WV0$7P$L##K!O]%D(H#0XM-[/]%[(@!
+M_XT$_O__>=*+W8'K[`$``.F5`P``D/9%M$!U"L=%E`8```#K#I"#?90`=0?'
+M190!````@T4,"(M%#%97C7VHC7#XI:5?7HM%K"4``/!_/0``\'\/A:4```#W
+M1:S__P\`=4"+1:PE````@#T```"`=0?'1;@!````@'WG1W4(N'000`#K!I"X
+M<!!``(O8C4,#B47LQT6(`0```.D+`P``D)"0BT6L)0```(`]````@'41QX40
+M_O__F!!``,=%]`$```"+1:S!X`R)1=3'1<0%````QT7`#P```,=%S`,```"`
+M?>='#X4\^___QT7\:!!``,=%L#@00`#I??G__Y"-1>A0C47X4(M%E(/X$7P%
+MN!$```!0_W6L_W6HZ+\&``"#Q!2+V-U%J-P=K!!``-_@FYYU!\=%^`$```"+
+M192)A03^___V1;00=4E3Z`L7``"#Q`2)A0S^__^+A03^__\YA0S^__]](XN%
+M#/[__XF%!/[__^L5D)"+A03^__^`?`/_,'4/_XT$_O__@[T$_O__`7WD@WWX
+M_7P(BT64.47X?A*+A03^__](B464Z;+Z__^0D)"+A03^__\K1?B)193I-?W_
+M_Y"0D(I%Y^L-D)"0@T4,!(M%#(I`_(B%%/[__XV=%/[__XO#0.LED(-%#`2+
+M10R+6/P+VW4%NYP00`#V1;1`=1-3Z%$6``"#Q`0#PXE%[.F4`0``B9T$_O__
+MBX4$_O___X4$_O__@#@`=`7_391YZHN%!/[__TCKTY"0D$[IMO3__Y"0Y!,`
+M``0>```$'@``[!,```0>``",'0``!!X```0>```$'@``!!X```04``#4$P``
+M!!X``-P3``#T$P``!!X``#@4``!"%```0A0``$(4``!"%```0A0``$(4``!"
+M%```0A0``$(4```$'@``!!X```0>```$'@``!!X```0>```$'@``!!X```0>
+M```$'@``!!X``"P7```$'@``W!L```0>```$'@``!!X```0>```$'@``!!X`
+M``0>```$'@``!!X```0>```$'@``!!X```0>```$'@``!!X```0>```,%@``
+M!!X```0>```$'@``!!X```0>```$'@``!!X```0>```$'@``!!X``)0=``"P
+M%```+!<``.`9``#<&P``MA,``+`4```$'@``!!X``*04```$'@``!!X``/P5
+M```$'@``!!X```0>``"P'0``!!X``,`5```$'@``!!X```P6``"#?8@`=%2#
+M?;@`=!S'A1#^__^D$$``QT7T`0```,=%N`````#K+9"0]D6T`G0.QX40_O__
+MIA!``.L2D)#V1;0(=!''A1#^__^H$$``QT7T`0```,=%B`````"+1>PKPXF%
+M#/[__P-%]`-%R`-%Q(E%D#E%\'\*`46@Z<4```"0D(M%\`%%H/9%M"!T+&;W
+M1;0``G4,@$VU`BM%D(E%C.L)BT7P*T60`46,BT7PB460Z8\```"0D)"0]D6T
+M!`^%@0```(M%\"M%D(F%!/[__^L;C4704%=J%&@($$``Z*?Q__^#Q!"#K03^
+M__\4@[T$_O__%'_<BX4$_O__`T70B84(_O__.T7@=AR-1=!05_^U!/[__V@(
+M$$``Z&OQ__^#Q!#K(9"0_[4$_O__:`@00`#_==#HV1(``(/$#(N%"/[__XE%
+MT(-]]`!T2(M%]`-%T(F%`/[__SM%X'8:C4704%?_=?3_M1#^___H&_'__X/$
+M$.L?D)#_=?3_M1#^____==#HBQ(``(/$#(N%`/[__XE%T(-]Q`!T18M%T(/`
+M!8F%!/[__SM%X'84C4704%=J!?]U_.C1\/__@\00ZQEJ!?]U_/]UT.A'$@``
+M@\0,BX4$_O__B470QT7$`````&;W1;0``G1_BT6,B84`_O__ZQR0C4704%=J
+M%&@@$$``Z(?P__^#Q!"#K0#^__\4@[T`_O__%'_<BX4`_O__`T70B84(_O__
+M.T7@=AR-1=!05_^U`/[__V@@$$``Z$OP__^#Q!#K(9"0_[4`_O__:"`00`#_
+M==#HN1$``(/$#(N%"/[__XE%T(.]#/[__P!^1XN%#/[__P-%T(F%!/[__SM%
+MX'88C4704%?_M0S^__]3Z/?O__^#Q!#K'9"0_[4,_O__4_]UT.AI$0``@\0,
+MBX4$_O__B4709O=%M(0!#X21\/__9O=%M``!#X2`````BT7<B84`_O__ZQV0
+MD(U%T%!7:A1H(!!``.B?[___@\00@ZT`_O__%(.]`/[__Q1_W(N%`/[__P-%
+MT(F%"/[__SM%X'8<C4704%?_M0#^__]H(!!``.AC[___@\00ZR&0D/^U`/[_
+M_V@@$$``_W70Z-$0``"#Q`R+A0C^__^)1=#V1;2`=$&+1:0#1=")A?S]__\[
+M1>!V%HU%T%!7_W6D_W6\Z!;O__^#Q!#K&Y#_=:3_=;S_==#HBA```(/$#(N%
+M_/W__XE%T/9%M`0/A+3O__^+19`Y1?`/CJCO__^+1?`K19")A0#^___K'9"0
+MC4704%=J%&@($$``Z+_N__^#Q!"#K0#^__\4@[T`_O__%'_<BX4`_O__`T70
+MB84(_O__.T7@=B"-1=!05_^U`/[__V@($$``Z(/N__^#Q!#I0^___Y"0D/^U
+M`/[__V@($$``_W70Z.T/``"#Q`R+A0C^__^)1=#I'.___U6+[&H`_W48_W44
+M_W40_W4,_W4(Z!\```#)PY!5B^QJ`?]U&/]U%/]U$/]U#/]U".@#````R<.0
+M58OL@^PH4U=6BW40BT4,B47TBT4(B47L"\!U3(-]]`!T"8%]]````(!U/8M%
+M&,<``````(M%%,<``0```(/^$7X%OA$```!6:C!HN!M``.AT#P``@\0,QH:X
+M&T```+BX&T``7E];R<.+10S!^!0E_P<``"W^`P``/0+\__]U)8U%\%#_=0S_
+M=0CH=@4``(/$#-T=N!%``+GEEP0`BT7PZQN0D)"+10S!^!0E_P<``"W^`P``
+MB47@N>67!`#WZ04;S<@=N4!"#P"9]_DM\P$``(E%\(-]'`!T`@/P"_9]`C/V
+MC5X!B\.#Z`F)1=P+P'X-NPD```"#^`E^`XE=W(O#*T7PB478_W48C47X4/]U
+MW/]UV(U%"%#HU0```(/$%(E%_(O[@<>\&T``5U#H#`L``(/$"(E%Z"O']]B)
+M1=@I7=B#?=@`?@Z+1=@!1?"#?1P`=`(#\(-]W`!^)(M%W`/'4/]U^.C4"@``
+M@\0(B478ZPG_3=B+1=C&`#`Y?=AW\HM%Z(E%W(/^$7X%OA$```"+1=P#QHOX
+MB]^`.S5_%8`[-74[BD/_L0)FF/;Y#[[$"\!T*\8#,#E=W'4;_TW<BT7<Q@`Q
+M_T7P@WT<`'0%@_X1=0Q/ZPF02_X#@#LY?]7&!P"+112+3?")"(M%W%Y?6\G#
+MD%6+[(/L.%-75HM%"(E%X(M%&(M-X(MQ!(O.P?D?@>$!````B0B+QL'X%"7_
+M!P``+?X#``")1?P]`OS__W4:C47\4(M%X/]P!/\PZ,4#``"#Q`R+1>#=&)N_
+M_S\``(M%X(LPB\;!X`,CQXE%[,'^"XO>(]_!_@Z!YG\```"+1>"+0`3!X`<#
+M\"/^P?X.@>;_'P``@<X`(```N!`````K10S!^`4+P`^$Y0```+A0`0``*T4,
+MP?@%:\`,!<010`")1>`/OT`&B47<BT7@#[]`!(E%V(M%X`^_0`*)1=2+1>`/
+MOT`(]^Z+3=0/KTWL`\&+3=@/K\L#P8M-W`^OSP/!P?@.BTW@#[\)#Z]-[`/!
+MBTW4#Z_+`\&+3=@/K\\#P8M-W`^OS@/!B47LBT7@#[\`B470BT7@#[]``HE%
+MS(M%X`^_0`3W[HM-S`^OSP/!BTW0#Z_+`\&+3>S!^0X#P8O8BT7,]^Z+3=`/
+MK\\#P8O+P?D.`\&+^(M%T/?NB\_!^0X#P8OPBT7@#[]`"@%%_.L3D)#!Y@X#
+M]XO[BUWLQT7L`````/9%#!\/A!\!``#'1<S_/P``BT7L)?\_``")1>B+PR7_
+M/P``B47LN_\_```CW[__/P``(_[!_@ZX$````"M%#"4?````:\`,!<P20`")
+M1<P/OT`&B470BT7,#[]`!(E%U(M%S`^_`(E%V(M%S`^_0`*)1=R+1<P/OT`(
+M]^Z+3=P/KTWL`\&+3=@/KTWH`\&+3=0/K\L#P8M-T`^OSP/!P?@.BTW8#Z]-
+M[`/!BTW<#Z_+`\&+3=0/K\\#P8M-T`^OS@/!B47LBT7,#[\`B47@BT7,#[]`
+M`HE%R(M%S`^_0`3W[HM-R`^OSP/!BTW@#Z_+`\&+3>S!^0X#P8O8BT7(]^Z+
+M3>`/K\\#P8O+P?D.`\&+^(M%X/?NB\_!^0X#P8OPBT7,#[]`"@%%_,=%R/\_
+M``"!Y_\_``"!X_\_``"!9>S_/P``BT7\@^@<B47("\!_'_?8B$7,B\:*3<S3
+M^(E%Y+@!````T^!((_"#1<@.ZR&+QXI-R-/@P?@.B];3X@/"B47DOO\_``#3
+M_B/WB_N+7>R#?1``?PF+1>1>7UO)PY"*3<C3YM/GT^/39>R+Q\'X#@/PB\/!
+M^`X#^(M%[,'X#@/8QT7(_S\``('F_S\``('G_S\``('C_S\``+@0````*T40
+M:\`,!<P20`")1<@/OP")1<R+1<@/OT`"B470]^^+3<P/K\L#P<'X#HM-T`^O
+MS@/!BTW,#Z_/`\&+^(M%S/?NB\_!^0X#P8OPBT7(#[]`"HE%[(/H'(E%R`O`
+M?Q6+112+UHM-R/?9T_J)$.E%____D)"+QR7_/P``BDW(T^#!^`Z+UM/B`\*+
+M312)`>DD____D%6+[-U%"-GEW^">=0N+11#'``````!=PV8E`$5T!F8]`$1U
+M%-GTV>C<P=[IV?39R=["V?W9R=W8BT40V?39R=L8V#5,%$``_P!=PY!5B^R#
+M[!!35U:+=12#?0P`=#R#?1``=#:*1@PD$CP"=1F#?@@`=!.+1@@Y1@1U&8,^
+M`'44]D8,1'4.5NC,`P``@\0$ZP60D)`SP`O`=`HSP%Y?6\G#D)"0#[Y&#8L$
+MA1080`")1?R+11#W;0R+^#E]$'?;.7T,=]:+1@0Y1@AR9_9&#`1U"('_``0`
+M`')95_]U"`^^1@U0Z'`)``"#Q`R+V#O?=`R`3@P@"\!_`C/`B]B+PRO2]W4,
+M7E];R<.0D)!6Z,("``"#Q`1`=1N+10P#QT@KTO=U#(O(BT40*\%>7UO)PY`!
+M70B+1?R+3@2)3?@KP8O8"]M^R(O'.\-R`HO#B]A3_W4(_W7XZ$8(``"#Q`PI
+M'@%>!`^^1@V+!(44&$``*T8$BPX+R7\",\D[P7T)5N@6!```@\0$*_MUI_9&
+M#$1T)_9&#`1U&(M&!"M&"%!J"O]V".C>!P``@\0,"\!T"5;H(0(``(/$!(M%
+M$%Y?6\G#D)!5B^R#[`16OE`40``Y-1`80`!W!%[)PY!6Z!(```"#Q`2#QA`Y
+M-1`80`!W[%[)PY!5B^R#[`175HMU"+______"_9T8_9&#(-T-?9&#`1T!#/`
+MZPE6Z%8```"#Q`2+^`^^1@U0Z*<#``"#Q`0+P'T/O______'!0@90``"````
+M]D8,"'02_W8(Z&L&``"#Q`3'1@@`````QD8,`,<&`````(M&"(E&!(O'7E_)
+MPY"0D%6+[%:+=0CV1@P"=2C'!@````#K-Y"0D/9&#`)T'8-^"`!T%XM&"#E&
+M!'8/5N@R`0``@\0$]D8,!'3=]D8,('0+N/____]>R<.0D)`SP%[)PY"0D%6+
+M[(/L!%:+=0R*1@PD4CQ"=3T/OD8-BTX$.0R%%!A```^&I0```(O!_T8$BDT(
+MB`B`^0H/A<X```!6Z-````"#Q`1`#X6^````Z:X```"0BD8,)!8\!G4SBD4(
+MB$7_QP8`````:@&-1?]0#[Y&#5#H'P<``(/$#(/X`0^$AP```(!.#"#K=I"0
+MD)"0BD8,)!(\`G49@WX(`'03BT8(.48$=1F#/@!U%/9&#$1U#E;HX````(/$
+M!.L%D)"0,\`+P'4[]D8,1`^%/O___U;H/@```(/$!/\.>1-6#[9%"%#H'/__
+M_X/$".L.D)"0BD4(BTX$_T8$B`'V1@P@=`NX_____U[)PY"0D`^V10A>R<.0
+M58OL@^P(4U=6BW4(BUX$BWX(B\<KV(E^!/9&#$1T!3/`ZP^0#[Y&#8L$A108
+M0``K1@B)!@^^1@V+!(44&$``*T8$BPX+R7\",\D[P7T)5NAP`0``@\0$"]M^
+M(5-7#[Y&#5#H'08``(/$##O#=`Z`3@P@N/____]>7UO)PS/`7E];R<.058OL
+M5HMU"(I&#"02/`)T&O9&#()U"KC_____7LG#D)"*1@PD[PP"B$8,@WX(`'4)
+M5NA*````@\0$BT8(.48$=3GV1@Q$=3,/OD8-BP2%%!A``"M&"(D&#[Y&#8L$
+MA1080``K1@2+#@O)?P(SR3O!?0E6Z,D```"#Q`0SP%[)PY!5B^R#[`135U:+
+M=0@/OEX-B_OV1@P$=!B-!/W@(T``B48(@\`(B02=%!A``.MND)"#_P)])PO_
+M=0>XV!]``.L%N-`;0`")1@@%``0```^^3@V)!(T4&$``ZT*0D&@(!```Z#(!
+M``"#Q`2)1@@+P'04@$X,"`^^1@V+3@B!P0`$``#K$I`/OD8-C0S]X"-``(E.
+M"(/!"(D,A1080`"+1@B)1@17Z&@```"#Q`0+P'0*]D8,!'4$@$X,0%Y?6\G#
+MD)!5B^R#[`135U:+=0@/OD8-BQR%%!A``(O#*T8$B_@+_WT*B5X$7E];R<.0
+MD#D^?@*)/EY?6\G#D+@&````F@`````'``^"B@0``#/`PY"0D%6+[(/L&*$(
+M&4``B47HC47L4&@!5```_W4(Z!T```"#Q`P+P'T.BT7HHP@90``SP,G#D)"X
+M`0```,G#D+@V````F@`````'``^"-@0``,.058OL@^P$4U=6BW4(BWT,B\:Y
+M"@```)GW^8O8L0KVZ8O.*L'VV`0P3X@'B_,+]G7?B\=>7UO)PY!5B^R#[!Q3
+M5U;'1>P`````@WT(`'0)@7T(^/O__W8),\!>7UO)PY"0@SW()4```'4VN,PE
+M0``,`:/()4``N,@E0``,`:/,)4``QP44&4``S"5``,<%$!E``,@E0`#'!1P9
+M0`#,)4``BT4(@\`'P>@"B]B+-1`90`#'1?``````]@8!=37K&I"0B340&4``
+MBP>)!CD]'!E``'4&B34<&4``BS[V!P%TX8T$GHE%Y#O'=P@[Q@^#3P$``(O^
+MBP8D_HOP._=WNCD]%!E```^%3O___X'^R"5```^%0O____]%\(-]\`%VF8LU
+M'!E``&H`Z)D"``"#Q`2+^*$4&4``@\`$.\=T/(V#_P```+D``0``F??YB47P
+MP67P"HO'N00```"9]_F)5>0+TG0ZB\$KPHE%[`/'B_B+1>P!1?#K)Y"0D*$4
+M&4``*P4<&4``P?@"*\/WV(E%\`4``0``P>@(B47PP67P"HM%\`/'.\</@J[^
+M__^+1?")1>@]`/S_?W8;:`#\_W_H!`(``(/$!$`/A(W^__^!;?``_/]__W7P
+MZ.L!``"#Q`1`=16+QRM%[%#H_P$``(/$!.EE_O__D)")/1P90`"A%!E``(DX
+MBT7H*T7LC40'_(D'H1090`"#P`0[QW0.H1090`"+R(L)@,D!B0B+!Z,4&4``
+MN<@E0`"`R0&)"(O^Z7'^__^0C02>HQ`90``[QW,0BP"C&!E``*$0&4``BPZ)
+M"*$0&4``#`&)!CDU'!E``'4*H1`90`"C'!E``(U&!%Y?6\G#D%6+[(/L!%:+
+M=0B#[@2)-1`90`"+!B3^B0:A%!E``#D&=0:)-1P90`!>R<.058OL@^P84U=6
+MBWT(]D?\`70)5^B\____@\0$@WT,`'4',\!>7UO)PXM'_"O'P?@"B47P_W4,
+MZ%']__^#Q`2+\`OV=`4Y=0AU!XO&7E];R<.+10R#P`/!Z`*)1>R+1?`Y1>QS
+M!HM%[(E%\(M%\,'@`E#_=0A6Z$(```"#Q`R+V#O?<\:+1>R-!(.)1>@[QW*Y
+M*\?!^`*+#1@90`")#(/KJ5>+3"00XQ&+?"0(BD0D#/*N=06+QTA?PS/`7\-7
+M5HM\)`R+="00BTPD%(O'B]'!Z0+SI8O*@>$#````\Z1>7\-7BWPD"(I$)`R+
+M3"00@_D4?ATE_P```(K@B]#!XA`+PHO1P>D"\ZN+RH'A`P```/.JBT0D"%_#
+MD(M4)`2%TG03`Q4@&4``4N@1````@\0$A<!U":$@&4``*T0D!,.X$0```)H`
+M````!P`/@CD```"+5"0$B14@&4``,\##5XM\)`@SP+G_____\JY!B\'WT%_#
+MD)"0N`0```":``````<`#X("````PY"C"!E``+C_____PY#HBP```.@^]___
+MBU0D!+@!````F@`````'``^"U/___\.0D)!5B^S_=0CH,0```(/$!$!U![C_
+M____R<,SP,G#58OL_W4(Z!4```"#Q`1`=0<SP,G#D)"0BT4(R<.0D)!5B^R#
+M/:090``@=0BX_____\G#D*&D&4``BTT(B0R%)!E``/\%I!E``#/`R<.0D)!5
+MB^R#[`16BS6D&4``3GD$7LG#D/\4M2090`!.>?9>R<.0D)```````````$AE
+M;&QO(%=O<FQD(2AE<G(I"@``2&5L;&\@5V]R;&0A*&]U="D*```O971C+V1E
+M9F%U;'0O;&%N9P```$Q!3D<]`````@```&@'0`!E;F=L:7-H7W5S+F%S8VEI
+M```````````````````````````````````````````\$```:`L```$```!T
+M!T```P```'P'0`!E;F=L:7-H7W5S+F%S8VEI````````````````````````
+M```````````````````(#@``/`X```(```"(!T``!````)`'0`!E;F=L:7-H
+M7W5S+F%S8VEI``````````````````````````````````````````"<#```
+M[`P```,```"8!T``!0```*`'0`!E;F=L:7-H7W5S+F%S8VEI````````````
+M``````````````````````````````!T"P``:`L```0```"L!T``!@```+0'
+M0`!E;F=L:7-H7W5S+F%S8VEI````````````````````````````````````
+M``````#@"P``'`P```4```#`!T``!P```,P'0`!E;F=L:7-H7W5S+F%S8VEI
+M``````````````````````````````````````````!$#```@`P```8```#8
+M!T``````````````````````````````````````````````````````````
+M````````````````````````````````````````96YG;&ES:%]U<RYA<V-I
+M:0````#_____3$-?0U194$4`````8W1Y<&4```!,0U].54U%4DE#``!N=6UE
+M<FEC`$Q#7U1)344`=&EM90````!,0U]#3TQ,051%``!C;VQL871E`$Q#7TU%
+M4U-!1T53`&UE<W-A9V5S`````$Q#7TU/3D5405)9`&-U<G)E;F-Y`````&QI
+M8F,Z('-E=&QO8V%L93H@````.B```$Q!3D<`````(&5N=FER;VYM96YT('9A
+M<FEA8FQE('-Y;G1A>"!E<G)O<@``=6YA8FQE('1O(&]P96X@`&YO(``@;&EN
+M92!I;B`````@<WEN=&%X(&5R<F]R(&EN(````&-A;FYO="!O<&5N(&QO8V%L
+M92!F:6QE`&-O<G)U<'0@;&]C86QE(&9I;&4`=6YK;F]W;B!E<G)O<@`*`$,`
+M``!,04Y'`````"]U<W(O;&EB+VQA;F<`+P`O````7P`N`"\``````0``````
+M````````````````````````````````````````````````````````````
+M```````````````````````!`0$"`0,!!`$%`08!!P$(`0D!"@$+`0P!#0$.
+M`0\!$`$1`1(!$P$4`14!%@$7`1@!&0$:`1L!'`$=`1X!'P$@`2$!(@$C`20!
+M)0$F`2<!*`$I`2H!*P$L`2T!+@$O`3`!,0$R`3,!-`$U`38!-P$X`3D!.@$[
+M`3P!/0$^`3\!0`%!`4(!0P%$`44!1@%'`4@!20%*`4L!3`%-`4X!3P%0`5$!
+M4@%3`50!50%6`5<!6`%9`5H!6P%<`5T!7@%?`6`!80%B`6,!9`%E`68!9P%H
+M`6D!:@%K`6P!;0%N`6\!<`%Q`7(!<P%T`74!=@%W`7@!>0%Z`7L!?`%]`7X!
+M?P&``8$!@@&#`80!A0&&`8<!B`&)`8H!BP&,`8T!C@&/`9`!D0&2`9,!E`&5
+M`98!EP&8`9D!F@&;`9P!G0&>`9\!H`&A`:(!HP&D`:4!I@&G`:@!J0&J`:L!
+MK`&M`:X!KP&P`;$!L@&S`;0!M0&V`;<!N`&Y`;H!NP&\`;T!O@&_`<`!P0'"
+M`<,!Q`'%`<8!QP'(`<D!R@'+`<P!S0'.`<\!T`'1`=(!TP'4`=4!U@'7`=@!
+MV0':`=L!W`'=`=X!WP'@`>$!X@'C`>0!Y0'F`><!Z`'I`>H!ZP'L`>T![@'O
+M`?`!\0'R`?,!]`'U`?8!]P'X`?D!^@'[`?P!_0'^`?\!````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````>0````````!N```````````````M)``````````````!
+M``H`$P`6`!D`*P`R`#D`00!+`%0`6P!D`&@`;`!P`'0`>`!\`(``B`"1`)<`
+MG0"A`*8`JP"R`+P`Q`#-`-8`V@#>`.(`Y@#J`.X`\@#V`/H`_@`"`0`E;2\E
+M9"\E>0`E2#HE33HE4P!!30!030`E82`E8B`E9"`E6"`E6B`E60!3=6YD87D`
+M36]N9&%Y`%1U97-D87D`5V5D;F5S9&%Y`%1H=7)S9&%Y`$9R:61A>0!3871U
+M<F1A>0!3=6X`36]N`%1U90!7960`5&AU`$9R:0!3870`2F%N=6%R>0!&96)R
+M=6%R>0!-87)C:`!!<')I;`!-87D`2G5N90!*=6QY`$%U9W5S=`!397!T96UB
+M97(`3V-T;V)E<@!.;W9E;6)E<@!$96-E;6)E<@!*86X`1F5B`$UA<@!!<'(`
+M36%Y`$IU;@!*=6P`075G`%-E<`!/8W0`3F]V`$1E8P``````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````0(#!`4&!P@)"@L,#0X/$!$2$Q05
+M%A<8&1H;'!T>'R`A(B,D)28G*"DJ*RPM+B\P,3(S-#4V-S@Y.CL\/3X_0&%B
+M8V1E9F=H:6IK;&UN;W!Q<G-T=79W>'EZ6UQ=7E]@04)#1$5&1TA)2DM,34Y/
+M4%%24U155E=865I[?'U^?X"!@H.$A8:'B(F*BXR-CH^0D9*3E)66EYB9FIN<
+MG9Z?H*&BHZ2EIJ>HJ:JKK*VNK["QLK.TM;:WN+FZN[R]OK_`P<+#Q,7&Q\C)
+MRLO,S<[/T-'2T]35UM?8V=K;W-W>W^#AXN/DY>;GZ.GJZ^SM[N_P\?+S]/7V
+M]_CY^OO\_?[_````("`@("`@("`@("`@("`@("`@("``````,#`P,#`P,#`P
+M,#`P,#`P,#`P,#``````,#$R,S0U-C<X.4%"0T1%1@`````P,3(S-#4V-S@Y
+M86)C9&5F`````&YA;C!X````3D%.,%@```!I;F8`24Y&`"T`*P`@````,'@`
+M`#!8```M`"T`*P`@`"T`+0`K`"``+0```"AN=6QL*0``+0`K`"``````````
+M```````@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0
+M$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!
+M`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0(```
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````PD#E!98/QAGU.B<$$VF#'^,*7Q0[!KP#/U5_'>\<O3/P!E(#*47?
+M$AD_DCG#%^@".'#Q'LDIJ@Y$-7T""ULE%/\;+PPM%1,"W4GY"`<,&1/E+ZD!
+MV7=B-2PV*39D$3X!/&'I`_X/31^@*M0`XDZU-5L!:R'Z#FH``$``````````
+M````V&?5(RDJ*3,U'97_/U1$/2D]TS.A$BO_6D1>`.L_IRJ*#<'^Z&[/""4C
+MR3E8$%;^^ED2'-L>02>N">S]_TAN,*$ZF`<_`X+]<G:=)U$BG2+4'A?]&&!D
+M*!LK,C3_'*W\]DW,&1L4BA6I.T/\@'X2%SPZ<01&*-C[H68B%#<:GB:"/F[[
+M#4<W.2`X`````#4`KW$F-0`-`````#$`\UH>!``D`````"X`PDCE'``0````
+M`"L`:G2B%````````"<`(5WH-@```````"0`@4H@'P```````"$`-7<`)0``
+M`````!T`7E\`!````````!H`2TP`$````````!<`$GH``````````!,`J&$`
+M`````````!``($X```````````T``'T```````````D``&0```````````8`
+M`%````````````,``$``````````````9F:9&68FF1EH)OS_ZU%'(84KK@<@
+M!?G_B4'2#6H\OA^T'?;_VVCK(A`'RC+K%?+_XE.(-=HX"`^)$>__&T.@-WLM
+MTQC5&NS_7VN:,BLOA30@'NC_YE7B#B,,G0.`/N7_N$3H"[4)2RF:"^+_\VW9
+M'^\UJQM<'][_]5?A/UD>50E]/]O_7D:!&7H+$2'^)=C_EW!H`ET2'"B6"=3_
+M$EJ&&THHL#FK!]'_#DB>+]4Y62&)+,[_````0`````````````````$`````
+M```````````````"`0```````/`C0`#P(T``!@(`````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````````!`8
+M0````````````/@C0```````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````"XL````````````````````````
+MT"5`````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`$`H(RD@8W)T,2YS(#$N."`X.2\P-2\S,"``0"@C*2!S>7,N:3,X-B`Q+C@@
+M.#DO,#$O,38@````0"@C*2!L:6UI=',N:"`R+C,@.3`O,#$O,3<@`$`H(RD@
+M8W)T;BYS(#$N-2`X."\Q,2\Q-"``0"@C*2!S>7,N:3,X-B`Q+C@@.#DO,#$O
+M,38@````+F9I;&4````.````_O\``&<!8W)T,2YS````````````````+G1E
+M>'0```#4`````0````,!5`````<`````````````````+F1A=&$````,!4``
+M`@````,!"```````````````````````+F)S<P````"H&4```P````,!````
+M````````````````````+F-O;6UE;G0`````!`````,!.```````````````
+M````````+FEN:70```#0`````0````,!````````````````````````7VES
+M=&%R=`#0`````0````,`;G5L;'-T<@`,!4```@````,`+F9I;&4````9````
+M_O\``&<!:&5L+F,`````````````````+G1E>'0````H`0```0````,!.```
+M``8`````````````````+F1A=&$````4!4```@````,!````````````````
+M````````+F1A=&$````4!4```@````,!)P``````````````````````+F)S
+M<P````"H&4```P````,!````````````````````````1$=23U50```4!4``
+M`@````,`+F9I;&4````L````_O\``&<!<V5T;&]C86QE+F,`````````+G1E
+M>'0```!@`0```0````,!%`H``)@`````````````````+F1A=&$````\!4``
+M`@````,!+`(``!@`````````````````+F1A=&$```!H!T```@````,!6`$`
+M````````````````````+F)S<P````"H&4```P````,!#P(`````````````
+M````````1$=23U50```\!4```@````,```````0```",`P```0````,`8V]M
+M<&QA:6Y$`@```0````,```````\```!H"P```0````,`<&%R<V4```!@`0``
+M`0````,``````!H```!`!P```0````,`9&5F<F4```!H!@```0````,`9&5F
+M;W`````D!@```0````,`97AP86YD```(`@```0````,`+F9I;&4````W````
+M_O\``&<!8V]L;&%T92YC````````````+G1E>'0```!T"P```0````,!;```
+M``,`````````````````+F1A=&$```#`"$```@````,!Q`,`````````````
+M````````+F1A=&$```"$#$```@````,!````````````````````````+F)S
+M<P````"X&T```P````,!````````````````````````1$=23U50``#`"$``
+M`@````,`+F9I;&4```!"````_O\``&<!;65S<V%G92YC````````````+G1E
+M>'0```#@"P```0````,!9`````8`````````````````+F1A=&$```"$#$``
+M`@````,!$```````````````````````+F1A=&$```"4#$```@````,!`0``
+M````````````````````+F)S<P````"X&T```P````,!````````````````
+M````````1$=23U50``"$#$```@````,`+F9I;&4```!-````_O\``&<!8W5R
+M<F5N8WDN8P``````````+G1E>'0```!$#````0````,!6`````4`````````
+M````````+F1A=&$```"8#$```@````,!"```````````````````````+F1A
+M=&$```"@#$```@````,!`0``````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````1$=23U50``"8#$```@````,`+F9I
+M;&4```!8````_O\``&<!=&EM95\N8P``````````````+G1E>'0```"<#```
+M`0````,!;`$``#8`````````````````+F1A=&$```"D#$```@````,!5@(`
+M````````````````````+F1A=&$```#\#D```@````,!`0``````````````
+M````````+F)S<P````"X&T```P````,!````````````````````````1$=2
+M3U50``"D#$```@````,`+F9I;&4```!C````_O\``&<!;G5M97)I8RYC````
+M````````+G1E>'0````(#@```0````,!:`````<`````````````````+F1A
+M=&$`````#T```@````,!`@``````````````````````+F1A=&$````$#T``
+M`@````,!````````````````````````+F)S<P````"X&T```P````,!````
+M````````````````````1$=23U50````#T```@````,`+F9I;&4```!N````
+M_O\``&<!9G!R:6YT9BYC````````````+G1E>'0```!P#@```0````,!3```
+M``$`````````````````+F1A=&$````$#T```@````,!````````````````
+M````````+F1A=&$````$#T```@````,!````````````````````````+F)S
+M<P````"X&T```P````,!````````````````````````1$=23U50```$#T``
+M`@````,`+F9I;&4```!X````_O\``&<!<W1R8VAR+G,`````````````+G1E
+M>'0```"\#@```0````,!.```````````````````````+F1A=&$````$#T``
+M`@````,!````````````````````````+F)S<P````"X&T```P````,!````
+M````````````````````+F-O;6UE;G2X&T```P````,!'```````````````
+M````````+F9I;&4```""````_O\``&<!<W1R8VUP+G,`````````````+G1E
+M>'0```#T#@```0````,!8```````````````````````+F1A=&$````$#T``
+M`@````,!````````````````````````+F)S<P````"X&T```P````,!````
+M````````````````````+F-O;6UE;G2X&T```P````,!'```````````````
+M````````+F9I;&4```",````_O\``&<!<W1R;F-P>2YS````````````+G1E
+M>'0```!4#P```0````,!/```````````````````````+F1A=&$````$#T``
+M`@````,!````````````````````````+F)S<P````"X&T```P````,!````
+M````````````````````+F-O;6UE;G2X&T```P````,!(```````````````
+M````````+F9I;&4```"8````_O\``&<!9V5T96YV+F,`````````````+G1E
+M>'0```"0#P```0````,!=`````(`````````````````+F1A=&$````$#T``
+M`@````,!````````````````````````+F1A=&$````$#T```@````,!````
+M````````````````````+F)S<P````"X&T```P````,!````````````````
+M````````1$=23U50```$#T```@````,`;G9M871C:`#0#P```0````,`+F9I
+M;&4```"B````_O\``&<!<W1R;F-A="YS````````````+G1E>'0````$$```
+M`0````,!.```````````````````````+F1A=&$````$#T```@````,!````
+M````````````````````+F)S<P````"X&T```P````,!````````````````
+M````````+F-O;6UE;G2X&T```P````,!(```````````````````````+F9I
+M;&4```"M````_O\``&<!;&-?8W1Y<&4N8P``````````+G1E>'0````\$```
+M`0````,!A`````8`````````````````+F1A=&$````$#T```@````,!`0$`
+M````````````````````+F1A=&$````($$```@````,!````````````````
+M````````+F)S<P````"X&T```P````,!````````````````````````1$=2
+M3U50```$#T```@````,`+F9I;&4```"W````_O\``&<!<W1R;F-M<"YS````
+M````````+G1E>'0```#`$````0````,!4```````````````````````+F1A
+M=&$````($$```@````,!````````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````+F-O;6UE;G2X&T```P````,!(```
+M````````````````````+F9I;&4```#!````_O\``&<!;'-E96LN<P``````
+M````````+G1E>'0````0$0```0````,!%`````$`````````````````+F1A
+M=&$````($$```@````,!````````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````+F-O;6UE;G2X&T```P````,!.```
+M````````````````````+F9I;&4```#+````_O\``&<!;W!E;BYS````````
+M````````+G1E>'0````D$0```0````,!%`````$`````````````````+F1A
+M=&$````($$```@````,!````````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````+F-O;6UE;G2X&T```P````,!.```
+M````````````````````+F9I;&4```#5````_O\``&<!<F5A9"YS````````
+M````````+G1E>'0````X$0```0````,!%`````$`````````````````+F1A
+M=&$````($$```@````,!````````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````+F-O;6UE;G2X&T```P````,!.```
+M````````````````````+F9I;&4```#?````_O\``&<!<W1R8V%T+G,`````
+M````````+G1E>'0```!,$0```0````,!,```````````````````````+F1A
+M=&$````($$```@````,!````````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````+F-O;6UE;G2X&T```P````,!'```
+M````````````````````+F9I;&4```#I````_O\``&<!<W1R8W!Y+G,`````
+M````````+G1E>'0```!\$0```0````,!-```````````````````````+F1A
+M=&$````($$```@````,!````````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````+F-O;6UE;G2X&T```P````,!'```
+M````````````````````+F9I;&4```#V````_O\``&<!9&]P<FYT+F,`````
+M````````+G1E>'0```"P$0```0````,!]!$``*\`````````````````+F1A
+M=&$````($$```@````,!<```````````````````````+F1A=&$```!X$$``
+M`@````,!/```````````````````````+F)S<P````"X&T```P````,!````
+M````````````````````1$=23U50```($$```@````,``````"8```"P$0``
+M`0````,`7V1O=W)I=&7X$0```0````,`+F9I;&4````!`0``_O\``&<!8W1Y
+M<&4N8P``````````````+G1E>'0```"D(P```0````,!````````````````
+M````````+F1A=&$```"T$$```@````,!`0$`````````````````````+F1A
+M=&$```"X$4```@````,!````````````````````````+F)S<P````"X&T``
+M`P````,!````````````````````````1$=23U50``"T$$```@````,`+F9I
+M;&4````-`0``_O\``&<!96-V="YC````````````````+G1E>'0```"D(P``
+M`0````,!*`(```P`````````````````+F1A=&$```"X$4```@````,!````
+M````````````````````+F1A=&$```"X$4```@````,!````````````````
+M````````+F)S<P````"X&T```P````,!&```````````````````````1$=2
+M3U50``"X$4```@````,`8W9T``````#<(P```0````,`+F9I;&4````8`0``
+M_O\``&<!7V9A8RYC````````````````+G1E>'0```#,)0```0````,!````
+M````````````````````+F1A=&$```"X$4```@````,!"```````````````
+M````````+F1A=&$```#`$4```@````,!````````````````````````+F)S
+M<P````#0&T```P````,!````````````````````````1$=23U50``"X$4``
+M`@````,`+F9I;&4````C`0``_O\``&<!9'1O<"YC````````````````+G1E
+M>'0```#,)0```0````,!%`0```0`````````````````+F1A=&$```#`$4``
+M`@````,!````````````````````````+F1A=&$```#`$4```@````,!````
+M````````````````````+F)S<P````#0&T```P````,!````````````````
+M````````1$=23U50``#`$4```@````,`+F9I;&4````M`0``_O\``&<!9G!R
+M96%L+G,`````````````+G1E>'0```#@*0```0````,!````````````````
+M````````+F1A=&$```#`$4```@````,!!```````````````````````+F)S
+M<P````#0&T```P````,!````````````````````````+F-O;6UE;G30&T``
+M`P````,!(```````````````````````+F9I;&4```!``0``_O\``&<!8FEG
+M;&ET<&]W+G,`````````+G1E>'0```#@*0```0````,!````````````````
+M````````+F1A=&$```#$$4```@````,!B`(`````````````````````+F)S
+M<P````#0&T```P````,!````````````````````````+F-O;6UE;G30&T``
+M`P````,!(```````````````````````+G1E>'0```#@*0```0````,!3```
+M``$`````````````````+F1A=&$```!,%$```@````,!!```````````````
+M````````+F)S<P````#0&T```P````,!````````````````````````+F-O
+M;6UE;G30&T```P````,!'```````````````````````8V]N='=O``!,%$``
+M`@````,`+F9I;&4```!+`0``_O\``&<!9G=R:71E+F,`````````````+G1E
+M>'0````L*@```0````,!=`$```D`````````````````+F1A=&$```!0%$``
+M`@````,!````````````````````````+F1A=&$```!0%$```@````,!````
+M````````````````````+F)S<P````#0&T```P````,!````````````````
+M````````1$=23U50``!0%$```@````,`+F9I;&4```!6`0``_O\``&<!9FQS
+M8G5F+F,`````````````+G1E>'0```"@*P```0````,!$`0``"$`````````
+M````````+F1A=&$```!0%$```@````,!````````````````````````+F1A
+M=&$```!0%$```@````,!````````````````````````+F)S<P````#0&T``
+M`P````,!````````````````````````1$=23U50``!0%$```@````,`+F9I
+M;&4```!@`0``_O\``&<!8VQO<V4N<P``````````````+G1E>'0```"P+P``
+M`0````,!&`````$`````````````````+F1A=&$```!0%$```@````,!````
+M````````````````````+F)S<P````#0&T```P````,!````````````````
+M````````+F-O;6UE;G30&T```P````,!.```````````````````````+F9I
+M;&4```!K`0``_O\``&<!9&%T82YC````````````````+G1E>'0```#(+P``
+M`0````,!````````````````````````+F1A=&$```!0%$```@````,!N`0`
+M``0`````````````````+F1A=&$````(&4```@````,!````````````````
+M````````+F)S<P````#0&T```P````,!````````````````````````1$=2
+M3U50``!0%$```@````,`+F9I;&4```!V`0``_O\``&<!:7-A='1Y+F,`````
+M````````+G1E>'0```#(+P```0````,!/`````,`````````````````+F1A
+M=&$````(&4```@````,!````````````````````````+F1A=&$````(&4``
+M`@````,!````````````````````````+F)S<P````#0&T```P````,!````
+M````````````````````1$=23U50```(&4```@````,`+F9I;&4```"``0``
+M_O\``&<!:3,X-E]D871A+G,`````````+G1E>'0````$,````0````,!````
+M````````````````````+F1A=&$````(&4```@````,!!```````````````
+M````````+F)S<P````#0&T```P````,!````````````````````````+F-O
+M;6UE;G30&T```P````,!(```````````````````````+F9I;&4```"*`0``
+M_O\``&<!:6]C=&PN<P``````````````+G1E>'0````$,````0````,!%```
+M``$`````````````````+F1A=&$````,&4```@````,!````````````````
+M````````+F)S<P````#0&T```P````,!````````````````````````+F-O
+M;6UE;G30&T```P````,!.```````````````````````+F9I;&4```"5`0``
+M_O\``&<!;&-T7VYU;2YC````````````+G1E>'0````8,````0````,!````
+M````````````````````+F1A=&$````,&4```@````,!`@``````````````
+M````````+F1A=&$````0&4```@````,!````````````````````````+F)S
+M<P````#0&T```P````,!````````````````````````1$=23U50```,&4``
+M`@````,`+F9I;&4```"@`0``_O\``&<!;'1O<W1R+F,`````````````+G1E
+M>'0````8,````0````,!.```````````````````````+F1A=&$````0&4``
+M`@````,!````````````````````````+F1A=&$````0&4```@````,!````
+M````````````````````+F)S<P````#0&T```P````,!````````````````
+M````````1$=23U50```0&4```@````,`+F9I;&4```"K`0``_O\``&<!;6%L
+M;&]C+F,`````````````+G1E>'0```!0,````0````,!%`,``"T`````````
+M````````+F1A=&$````0&4```@````,!$```````````````````````+F1A
+M=&$````@&4```@````,!````````````````````````+F)S<P````#0&T``
+M`P````,!````````````````````````1$=23U50```0&4```@````,`+F9I
+M;&4```"U`0``_O\``&<!;65M8VAR+G,`````````````+G1E>'0```!D,P``
+M`0````,!'```````````````````````+F1A=&$````@&4```@````,!````
+M````````````````````+F)S<P````#0&T```P````,!````````````````
+M````````+F-O;6UE;G30&T```P````,!'```````````````````````+F9I
+M;&4```"_`0``_O\``&<!;65M8W!Y+G,`````````````+G1E>'0```"`,P``
+M`0````,!)```````````````````````+F1A=&$````@&4```@````,!````
+M````````````````````+F)S<P````#0&T```P````,!````````````````
+M````````+F-O;6UE;G30&T```P````,!'```````````````````````+F9I
+M;&4```#)`0``_O\``&<!;65M<V5T+G,`````````````+G1E>'0```"D,P``
+M`0````,!.```````````````````````+F1A=&$````@&4```@````,!````
+M````````````````````+F)S<P````#0&T```P````,!````````````````
+M````````+F-O;6UE;G30&T```P````,!'```````````````````````+F9I
+M;&4```#4`0``_O\``&<!<V)R:RYS````````````````+G1E>'0```#<,P``
+M`0````,!1`````4`````````````````+F1A=&$````@&4```@````,!!```
+M``$`````````````````+F)S<P````#0&T```P````,!````````````````
+M````````+F-O;6UE;G30&T```P````,!.```````````````````````;F0`
+M```````@&4```@````,`+F9I;&4```#>`0``_O\``&<!<W1R;&5N+G,`````
+M````````+G1E>'0````@-````0````,!&```````````````````````+F1A
+M=&$````D&4```@````,!````````````````````````+F)S<P````#0&T``
+M`P````,!````````````````````````+F-O;6UE;G30&T```P````,!'```
+M````````````````````+F9I;&4```#H`0``_O\``&<!=W)I=&4N<P``````
+M````````+G1E>'0````X-````0````,!%`````$`````````````````+F1A
+M=&$````D&4```@````,!````````````````````````+F)S<P````#0&T``
+M`P````,!````````````````````````+F-O;6UE;G30&T```P````,!.```
+M````````````````````+F9I;&4```#R`0``_O\``&<!8V5R<F]R+G,`````
+M````````+G1E>'0```!,-````0````,!#`````$`````````````````+F1A
+M=&$````D&4```@````,!````````````````````````+F)S<P````#0&T``
+M`P````,!````````````````````````+F-O;6UE;G30&T```P````,!'```
+M````````````````````+F9I;&4```#\`0``_O\``&<!8W5E>&ET+G,`````
+M````````+G1E>'0```!8-````0````,!)`````,`````````````````+F1A
+M=&$````D&4```@````,!````````````````````````+F)S<P````#0&T``
+M`P````,!````````````````````````+F-O;6UE;G30&T```P````,!.```
+M````````````````````+F9I;&4````2`@``_O\``&<!871E>&ET+F,`````
+M````````+G1E>'0```!\-````0````,!D`````@`````````````````+F1A
+M=&$````D&4```@````,!A```````````````````````+F1A=&$```"H&4``
+M`@````,!````````````````````````+F)S<P````#0&T```P````,!````
+M````````````````````1$=23U50```D&4```@````,`97AC;6X```"X-```
+M`0````,`+G1E>'0````,-0```0````,!````````````````````````+F1A
+M=&$```"H&4```@````,!````````````````````````+F)S<P````#0&T``
+M`P````,!````````````````````````+F-O;6UE;G14````!`````,!.```
+M````````````````````+FEN:70```#0`````0````,!!```````````````
+M````````7W-T87)T``#4`````0````(`7VUC;W5N=``G`0```0````(`96YV
+M:7)O;@`-!4```@````(``````#`````\"0```0````(`97)R;F\````(&4``
+M`@````(`;6%I;@`````H`0```0````(`97AI=`````!8-````0````(`9G!R
+M:6YT9@!P#@```0````(`7VEO8@````!0%$```@````(`<W1R;F-M<`#`$```
+M`0````(`;FQ?:6YI=`!`"P```0````(`<W1R;&5N```@-````0````(`;65M
+M<V5T``"D,P```0````(`<W1R;F-P>0!4#P```0````(``````#H````\#@``
+M`0````(``````$<````(#@```0````(``````%,```!T"P```0````(`````
+M`%\```"`#````0````(``````&T```#L#````0````(`;'-E96L````0$0``
+M`0````(``````'<```!$#````0````(``````(0`````"P```0````(`````
+M`)`````<#````0````(`7V-T>7!E``"T$$```@````(``````)X```#@"P``
+M`0````(`7VQC7W1I;66<#````0````(`9V5T96YV``"0#P```0````(`8VQO
+M<V4```"P+P```0````(`<W1R8V%T``!,$0```0````(`<F5A9``````X$0``
+M`0````(`<W1R8VAR``"\#@```0````(`<W1R8VUP``#T#@```0````(`=W)I
+M=&4````X-````0````(`<W1R;F-A=``$$````0````(`;W!E;@`````D$0``
+M`0````(``````*L````\$````0````(`<W1R8W!Y``!\$0```0````(`````
+M`+4```#`"$```@````(`;65M8W!Y``"`,P```0````(``````,(```"$#$``
+M`@````(``````-````"8#$```@````(``````-X```"D#$```@````(`````
+M`.@````,&4```@````(`7V1O<')N=`!@$@```0````(`7V-U8VQC```$#T``
+M`@````(`7V-E<G)O<@!,-````0````(`7V)U9G-Y;F-X+P```0````(`7WAF
+M;'-B=6:T+0```0````(`9G=R:71E```L*@```0````(`96-V=`````"D(P``
+M`0````(`;65M8VAR``!D,P```0````(`9F-V=`````#`(P```0````(`````
+M`/4````4&$```@````(`7V9L='5S963`$4```@````(`9G)E>'````#@*0``
+M`0````(`7V1T;W````#,)0```0````(`7V9A8P````"X$4```@````(`7VQT
+M;W-T<@`8,````0````(`7V)I9W!O=P#$$4```@````(`7VQI='!O=P#,$D``
+M`@````(`7W=R=&-H:P`X+@```0````(`7W-O8G5F``#0&T```P````(`9F-L
+M;W-E``#0*P```0````(`7V-L96%N=7"@*P```0````(`7V9L<V)U9@"D+```
+M`0````(`;6%L;&]C``!0,````0````(`7W-I8G5F``#8'T```P````(`7V9I
+M;F1B=6:X+@```0````(`9F9L=7-H``!0+````0````(`:7-A='1Y``#(+P``
+M`0````(`7W-M8G5F``#@(T```P````(`9G)E90````"8,@```0````(`7VQA
+M<W1B=680&$```@````(`:6]C=&P````$,````0````(`7V%L;&]C<P#()4``
+M`P````(`<V)R:P````#<,P```0````(`8G)K```````!-````0````(`<F5A
+M;&QO8P#$,@```0````(`96YD``````#0)4``__\```(````````!``#H-```
+M`0````(`;VYE>&ET``"8-````0````(`871E>&ET``!\-````0````(`971E
+M>'0````,-0``__\```(`961A=&$```"H&4``__\```(`#P$``&UA:V5L;V-A
+M;&4`7VQC<5]D=6UM>0!S971C871E9V]R>0!?;&]W9&EG:70`<V5T;&]C86QE
+M`%]L8W%?;G5M97)I8P!?;&-?;G5M97)I8P!?;&-?8V]L;&%T90!?;&-Q7V-U
+M<G)E;F-Y`%]L8W%?=&EM90!?;&-?8W5R<F5N8WD`;FQ?;&%N9VEN9F\`7VQC
+M<5]M97-S86=E<P!?;&-?;65S<V%G97,`7VQC7V-T>7!E`%]L8W1?8V]L;&%T
+M90!?;&-T7VUE<W-A9V5S`%]L8W1?8W5R<F5N8WD`7VQC=%]T:6UE`%]L8W1?
+B;G5M97)I8P!?8G5F96YD=&%B`%]D;U]E>&ET7V9U;F-S`%]T
+`
+end
diff --git a/share/examples/ipfilter/Makefile b/share/examples/ipfilter/Makefile
new file mode 100644
index 0000000..1175897
--- /dev/null
+++ b/share/examples/ipfilter/Makefile
@@ -0,0 +1,33 @@
+# $FreeBSD$
+
+FILES= README
+
+# dist sample files
+.PATH: ${.CURDIR}/../../../contrib/ipfilter/rules \
+ ${.CURDIR}/../../../contrib/ipfilter \
+ ${.CURDIR}/../../../contrib/ipfilter/man
+FILES+= BASIC.NAT BASIC_1.FW BASIC_2.FW \
+ example.1 example.2 example.3 example.4 example.5 \
+ example.6 example.7 example.8 example.9 example.10 \
+ example.11 example.12 example.13 example.sr firewall \
+ ftp-proxy ftppxy nat-setup nat.eg server tcpstate
+
+# ftp://ftp.OpenBSD.org/pub/OpenBSD/src/share/ipf/ sample files.
+FILES+= example.14 firewall.1 firewall.2 \
+ ipf.conf.permissive ipf.conf.restrictive \
+ ipf.conf.sample ipnat.conf.sample
+
+# http://www.obfuscation.org/ipf/ how-to
+FILES+= ipf-howto.txt
+
+# http://coombs.anu.edu.au/~avalon/ sample files
+FILES+= examples.txt rules.txt
+
+BINMODE=0755
+SCRIPTS= mkfilters
+MAN= mkfilters.1
+
+SCRIPTSDIR= ${SHAREDIR}/examples/ipfilter
+FILESDIR= ${SHAREDIR}/examples/ipfilter
+
+.include <bsd.prog.mk>
diff --git a/share/examples/ipfilter/README b/share/examples/ipfilter/README
new file mode 100644
index 0000000..aefd2cd
--- /dev/null
+++ b/share/examples/ipfilter/README
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+This directory contains various files related to ipfilter.
+
+For information on building ipf based firewalls, read the ipf-howto.txt.
+
+a more up to date version of this file may be found at:
+
+ http://www.obfuscation.org/ipf/
+
+Additional help may be found at the ipf home page:
+
+ http://coombs.anu.edu.au/~avalon/
+
+examples.txt and rules.txt come from this site.
diff --git a/share/examples/ipfilter/example.14 b/share/examples/ipfilter/example.14
new file mode 100644
index 0000000..f1f2be4
--- /dev/null
+++ b/share/examples/ipfilter/example.14
@@ -0,0 +1,62 @@
+# $FreeBSD$
+#
+# log all inbound packet on le0 which has IP options present
+#
+log in on le0 from any to any with ipopts
+#
+# block any inbound packets on le0 which are fragmented and "too short" to
+# do any meaningful comparison on. This actually only applies to TCP
+# packets which can be missing the flags/ports (depending on which part
+# of the fragment you see).
+#
+block in log quick on le0 from any to any with short frag
+#
+# log all inbound TCP packets with the SYN flag (only) set
+# (NOTE: if it were an inbound TCP packet with the SYN flag set and it
+# had IP options present, this rule and the above would cause it
+# to be logged twice).
+#
+log in on le0 proto tcp from any to any flags S/SA
+#
+# block and log any inbound ICMP unreachables
+#
+block in log on le0 proto icmp from any to any icmp-type unreach
+#
+# block and log any inbound UDP packets on le0 which are going to port 2049
+# (the NFS port).
+#
+block in log on le0 proto udp from any to any port = 2049
+#
+# quickly allow any packets to/from a particular pair of hosts
+#
+pass in quick from any to 10.1.3.2/32
+pass in quick from any to 10.1.0.13/32
+pass in quick from 10.1.3.2/32 to any
+pass in quick from 10.1.0.13/32 to any
+#
+# block (and stop matching) any packet with IP options present.
+#
+block in quick on le0 from any to any with ipopts
+#
+# allow any packet through
+#
+pass in from any to any
+#
+# block any inbound UDP packets destined for these subnets.
+#
+block in on le0 proto udp from any to 10.1.3.0/24
+block in on le0 proto udp from any to 10.1.1.0/24
+block in on le0 proto udp from any to 10.1.2.0/24
+#
+# block any inbound TCP packets with only the SYN flag set that are
+# destined for these subnets.
+#
+block in on le0 proto tcp from any to 10.1.3.0/24 flags S/SA
+block in on le0 proto tcp from any to 10.1.2.0/24 flags S/SA
+block in on le0 proto tcp from any to 10.1.1.0/24 flags S/SA
+#
+# block any inbound ICMP packets destined for these subnets.
+#
+block in on le0 proto icmp from any to 10.1.3.0/24
+block in on le0 proto icmp from any to 10.1.1.0/24
+block in on le0 proto icmp from any to 10.1.2.0/24
diff --git a/share/examples/ipfilter/examples.txt b/share/examples/ipfilter/examples.txt
new file mode 100644
index 0000000..a323a84
--- /dev/null
+++ b/share/examples/ipfilter/examples.txt
@@ -0,0 +1,515 @@
+IP Filter Examples
+
+ [Image] Permissions
+ [Image] Interface
+ [Image] Netmasks and hosts
+ [Image] IP Protocols
+ [Image] IP Options
+ [Image] IP Fragments
+ [Image] TCP/UDP Ports
+ [Image] ICMP type/code
+ [Image] TCP Flags (established)
+ [Image] Responding to a BAD packet
+ [Image] IP Security Classes
+ [Image] Packet state filtering
+ [Image] Network Address Translation (NAT)
+ [Image] Transparent Proxy Support
+ [Image] Transparent routing
+ [Image] Logging packets to network devices
+ [Image] Rule groups
+ Authenticating packets
+ Pre-authenticating packets
+
+ ------------------------------------------------------------------------
+
+Permission Specifying.
+
+To specify where to pass through or to block a packet, either block or pass
+is used. In and out are used to describe the direction in which the packet
+is travelling through a network interface. Eg:
+
+# setup default to block all packets.
+block in all
+block out all
+# pass packets from host firewall to any destination
+pass in from firewall to any
+
+ ------------------------------------------------------------------------
+
+Select network Interfaces
+
+To select which interface a packet is currently associated with, either its
+destination as a result of route processing or where it has been received
+from, the on keyword is used. Whilst not compulsory, it is recommended that
+each rule include it for clarity. Eg:
+
+# drop all inbound packets from localhost coming from ethernet
+block in on le0 from localhost to any
+
+ ------------------------------------------------------------------------
+
+Netmasks and hosts
+
+As not all networks are formed with classical network boundaries, it is
+necessary to provide a mechanism to support VLSM (Variable Length Subnet
+Masks). This package provides several ways to do this. Eg:
+
+#
+block in on le0 from mynet/26 to any
+#
+block in on le0 from mynet/255.255.255.192 to any
+#
+block in on le0 from mynet mask 255.255.255.192 to any
+#
+block in on le0 from mynet mask 0xffffffc0 to any
+
+Are all valid and legal syntax with this package. However, when regenerating
+rules (ie using ipfstat), this package will prefer to use the shortest valid
+notation (top down).
+
+The default netmask, when none is given is 255.255.255.255 or "/32".
+
+To invert the match on a hostname or network, include an ! before the name
+or number with no space between them.
+ ------------------------------------------------------------------------
+
+Protocol
+
+To filter on an individual protocol, it is possible to specify the protocol
+in a filter rule. Eg:
+
+# block all incoming ICMP packets
+block in on le0 proto icmp all
+
+The name of the protocol can be any valid name from /etc/protocols or a
+number.
+
+# allow all IP packets in which are protocol 4
+pass in on le0 proto 4 all
+
+There is one exception to this rule, being "tcp/udp". If given in a ruleset,
+it will match either of the two protocols. This is useful when setting up
+port restrictions. Eg:
+
+# prevent any packets destined for NFS from coming in
+block in on le0 proto tcp/udp from any to any port = 2049
+
+ ------------------------------------------------------------------------
+
+Filtering IP fragments
+
+IP fragments are bad news, in general. Recent study has shown that IP
+fragments can pose a large threat to IP packet filtering, IF there are rules
+used which rely on data which may be distributed across fragments. To this
+package, the threat is that the TCP flags field of the TCP packet may be in
+the 2nd or 3rd fragment or possibly be believed to be in the first when
+actually in the 2nd or 3rd.
+
+To filter out these nasties, it is possible to select fragmented packets out
+as follows:
+
+#
+# get rid of all IP fragments
+#
+block in all with frag
+
+The problem arises that fragments can actually be a non-malicious. The
+really malicious ones can be grouped under the term "short fragments" and
+can be filtered out as follows:
+
+#
+# get rid of all short IP fragments (too small for valid comparison)
+#
+block in proto tcp all with short
+
+ ------------------------------------------------------------------------
+
+IP Options
+
+IP options have a bad name for being a general security threat. They can be
+of some use, however, to programs such as traceroute but many find this
+usefulness not worth the risk.
+
+Filtering on IP options can be achieved two ways. The first is by naming
+them collectively and is done as follows:
+
+#
+# drop and log any IP packets with options set in them.
+#
+block in log all with ipopts
+#
+
+The second way is to actually list the names of the options you wish to
+filter.
+
+#
+# drop any source routing options
+#
+block in quick all with opt lsrr
+block in quick all with opt ssrr
+
+[Image] NOTE that options are matched explicitly, so if I had lsrr,ssrr it
+would only match packets with both options set.
+
+It is also possible to select packets which DON'T have various options
+present in the packet header. For example, to allow telnet connections
+without any IP options present, the following would be done:
+
+#
+# Allow anyone to telnet in so long as they don't use IP options.
+#
+pass in proto tcp from any to any port = 23 with no ipopts
+#
+# Allow packets with strict source routing and no loose source routing
+#
+pass in from any to any with opt ssrr not opt lsrr
+
+ ------------------------------------------------------------------------
+
+Filtering by ports
+
+Filtering by port number only works with the TCP and UDP IP protocols. When
+specifying port numbers, either the number or the service name from
+/etc/services may be used. If the proto field is used in a filter rule, it
+will be used in conjunction with the port name in determining the port
+number.
+
+The possible operands available for use with port numbers are:
+
+Operand Alias Parameters Result
+< lt port# true if port is less than given value
+> gt port# true if port is greater than given value
+= eq port# true if port is equal to than given value
+!= ne port# true if port is not equal to than given value
+<= le port# true if port is less than or equal to given value
+=> ge port# true if port is greater than or equal to given value
+
+Eg:
+
+#
+# allow any TCP packets from the same subnet as foo is on through to host
+# 10.1.1.2 if they are destined for port 6667.
+#
+pass in proto tcp from fubar/24 to 10.1.1.2/32 port = 6667
+#
+# allow in UDP packets which are NOT from port 53 and are destined for
+# localhost
+#
+pass in proto udp from fubar port != 53 to localhost
+
+Two range comparisons are also possible:
+
+Expression Syntax:
+port1# <> port2# true if port is less than port1 or greater than port2
+port1# >< port2# true if port is greater than port1 and less than port2
+
+[Image] NOTE that in neither case, when the port number is equal to one of
+those given, does it match. Eg:
+
+#
+# block anything trying to get to X terminal ports, X:0 to X:9
+#
+block in proto tcp from any to any port 5999 >< 6010
+#
+# allow any connections to be made, except to BSD print/r-services
+# this will also protect syslog.
+#
+block in proto tcp/udp all
+pass in proto tcp/udp from any to any port 512 <> 515
+
+Note that the last one above could just as easily be done in the reverse
+fashion: allowing everything through and blocking only a small range. Note
+that the port numbers are different, however, due to the difference in the
+way they are compared.
+
+#
+# allow any connections to be made, except to BSD print/r-services
+# this will also protect syslog.
+#
+pass in proto tcp/udp all
+block in proto tcp/udp from any to any port 511 >< 516
+
+ ------------------------------------------------------------------------
+
+TCP Flags (established)
+
+Filtering on TCP flags is useful, but fraught with danger. I'd recommend
+that before using TCP flags in your IP filtering, you become at least a
+little bit acquainted with what the role of each of them is and when they're
+used. This package will compare the flags present in each TCP packet, if
+asked, and match if those present in the TCP packet are the same as in the
+IP filter rule.
+
+Some IP filtering/firewall packages allow you to filter out TCP packets
+which belong to an "established" connection. This is, simply put, filtering
+on packets which have the ACK bit set. The ACK bit is only set in packets
+transmitted during the lifecycle of a TCP connection. It is necessary for
+this flag to be present from either end for data to be transferred. If you
+were using a rule which as worded something like:
+
+allow proto tcp 10.1.0.0 255.255.0.0 port = 23 10.2.0.0 255.255.0.0 established
+
+It could be rewritten as:
+
+pass in proto tcp 10.1.0.0/16 port = 23 10.2.0.0/16 flags A/A
+pass out proto tcp 10.1.0.0/16 port = 23 10.2.0.0/16 flags A/A
+
+A more useful flag to filter on, for TCP connections, I find, is the SYN
+flag. This is only set during the initial stages of connection negotiation,
+and for the very first packet of a new TCP connection, it is the only flag
+set. At all other times, an ACK or maybe even an URG/PUSH flag may be set.
+So, if I want to stop connections being made to my internal network
+(10.1.0.0) from the outside network, I might do something like:
+
+#
+# block incoming connection requests to my internal network from the big bad
+# internet.
+#
+block in on le0 proto tcp from any to 10.1.0.0/16 flags S/SA
+
+If you wanted to block the replies to this (the SYN-ACK's), then you might
+do:
+
+block out on le0 proto tcp from 10.1.0.0 to any flags SA/SA
+
+where SA represents the SYN-ACK flags both being set.
+
+The flags after the / represent the TCP flag mask, indicating which bits of
+the TCP flags you are interested in checking. When using the SYN bit in a
+check, you SHOULD specify a mask to ensure that your filter CANNOT be
+defeated by a packet with SYN and URG flags, for example, set (to Unix, this
+is the same as a plain SYN).
+ ------------------------------------------------------------------------
+
+ICMP Type/Code
+
+ICMP can be a source of a lot of trouble for Internet Connected networks.
+Blocking out all ICMP packets can be useful, but it will disable some
+otherwise useful programs, such as "ping". Filtering on ICMP type allows for
+pings (for example) to work. Eg:
+
+# block all ICMP packets.
+#
+block in proto icmp all
+#
+# allow in ICMP echos and echo-replies.
+#
+pass in on le1 proto icmp from any to any icmp-type echo
+pass in on le1 proto icmp from any to any icmp-type echorep
+
+To specify an ICMP code, the numeric value must be used. So, if we wanted to
+block all port-unreachables, we would do:
+
+#
+# block all ICMP destination unreachable packets which are port-unreachables
+#
+block in on le1 proto icmp from any to any icmp-type unreach code 3
+
+ ------------------------------------------------------------------------
+
+Responding to a BAD packet
+
+To provide feedback to people trying to send packets through your filter
+which you wish to disallow, you can send back either an ICMP error
+(Destination Unreachable) or, if they're sending a TCP packet, a TCP RST
+(Reset).
+
+What's the difference ? TCP/IP stacks take longer to pass the ICMP errors
+back, through to the application, as they can often be due to temporary
+problems (network was unplugged for a second) and it is `incorrect' to shut
+down a connection for this reason. Others go to the other extreme and will
+shut down all connections between the two hosts for which the ICMP error is
+received. The TCP RST, however, is for only *one* connection (cannot be used
+for more than one) and will cause the connection to immediately shut down.
+So, for example, if you're blocking port 113, and setup a rule to return a
+TCP RST rather than nothing or an ICMP packet, you won't experience any
+delay if the other end was attempting to make a connection to an identd
+service.
+
+Some examples are as follows:
+
+#
+# block all incoming TCP connections but send back a TCP-RST for ones to
+# the ident port
+#
+block in proto tcp from any to any flags S/SA
+block return-rst in quick proto tcp from any to any port = 113 flags S/SA
+#
+# block all inbound UDP packets and send back an ICMP error.
+#
+block return-icmp in proto udp from any to any
+
+When returning ICMP packets, it is also possible to specify the type of ICMP
+error return. This was requested so that traceroute traces could be forced
+to end elegantly. To do this, the requested ICMP Unreachable code is placed
+in brackets following the "return-icmp" directive:
+
+#
+# block all inbound UDP packets and send back an ICMP error.
+#
+block return-icmp (3) in proto udp from any to any port > 30000
+block return-icmp (port-unr) in proto udp from any to any port > 30000
+
+Those two examples are equivalent, and return an ICMP port unreachable error
+packet to in response to any UDP packet received destined for a port greater
+than 30,000.
+ ------------------------------------------------------------------------
+
+Filtering IP Security Classes
+
+For users who have packets which contain IP security bits, filtering on the
+defined classes and authority levels is supported. Currently, filtering on
+16bit authority flags is not supported.
+
+As with ipopts and other IP options, it is possible to say that the packet
+only matches if a certain class isn't present.
+
+Some examples of filtering on IP security options:
+
+#
+# drop all packets without IP security options
+#
+block in all with no opt sec
+#
+# only allow packets in and out on le0 which are top secret
+#
+block out on le1 all
+pass out on le1 all with opt sec-class topsecret
+block in on le1 all
+pass in on le1 all with opt sec-class topsecret
+
+ ------------------------------------------------------------------------
+
+Packet state filtering
+
+Packet state filtering can be used for any TCP flow to short-cut later
+filtering. The "short-cuts" are kept in a table, with no alterations to the
+packet filter list made. Subsequent packets, if a matching packet is found
+in the table, are not passed through the list. For TCP flows, the filter
+will follow the ack/sequence numbers of packets and only allow packets
+through which fall inside the correct window.
+
+#
+# Keep state for all outgoing telnet connections
+# and disallow all other TCP traffic.
+#
+pass out on le1 proto tcp from any to any port = telnet keep state
+block out on le1 all
+
+For UDP packets, packet exchanges are effectively stateless. However, if a
+packet is first sent out from a given port, a reply is usually expected in
+answer, in the `reverse' direction.
+
+#
+# allow UDP replies back from name servers
+#
+pass out on le1 proto udp from any to any port = domain keep state
+
+Held UDP state is timed out, as is TCP state for entries added which do not
+have the SYN flag set. If an entry is created with the SYN flag set, any
+subsequent matching packet which doesn't have this flag set (ie a SYN-ACK)
+will cause it to be "timeless" (actually, the timeout defaults to 5 days),
+until either a FIN or RST is seen.
+
+ ------------------------------------------------------------------------
+
+Network Address Translation (NAT)
+
+Network address translation is used to remap IP #'s from one address range
+to another range of network addresses. For TCP and UDP, this also can
+include the port numbers. The IP#'s/port #'s are changed when a packet is
+going out through an interface and IP Filter matches it against a NAT rules.
+
+Packets coming back in the same interface are remapped, as a matter of
+course, to their original address information.
+
+# map all tcp connections from 10.1.0.0/16 to 240.1.0.1, changing the source
+# port number to something between 10,000 and 20,000 inclusive. For all other
+# IP packets, allocate an IP # between 240.1.0.0 and 240.1.0.255, temporarily
+# for each new user. In this example, ed1 is the external interface.
+# Use ipnat, not ipf to load these rules.
+#
+map ed1 10.1.0.0/16 -> 240.1.0.1/32 portmap tcp 10000:20000
+map ed1 10.1.0.0/16 -> 240.1.0.0/24
+
+ ------------------------------------------------------------------------
+
+Transparent Proxy Suppoer
+
+Transparent proxies are supported through redirection, which works in a
+similar way to NAT, except that rules are triggered by input packets. To
+effect redirection rules, ipnat must be used (same as for NAT) rather than
+ipf.
+
+# Redirection is triggered for input packets.
+# For example, to redirect FTP connections through this box (in this case ed0
+# is the interface on the "inside" where default routes point), to the local
+# ftp port, forcing them to connect through a proxy, you would use:
+#
+rdr ed0 0.0.0.0/0 port ftp -> 127.0.0.1 port ftp
+
+ ------------------------------------------------------------------------
+
+Transparent routing
+
+Transparent routing can be performed in two ways using IP Filter. The first
+is to use the keyword "fastroute" in a rule, using the normal route lookup
+to occur or using a fixed route with "to". Both effect transparent routing
+by not causing any decrement in the TTL to occur as it passes through the
+kernel.
+
+# Route all UDP packets through transparently.
+#
+pass in quick fastroute proto udp all
+#
+# Route all ICMP packets to network 10 (on le0) out through le1, to "router"
+#
+pass in quick on le0 to le1:router proto icmp all
+
+ ------------------------------------------------------------------------
+
+Logging packets to the network
+
+Logging packets to the network devices is supported for both packets being
+passed through the filter and those being blocked. For packets being passed
+on, the "dup-to" keyword must be used, but for packets being blocked, either
+"to" (more efficient) or "dup-to" can be used.
+
+To log packets to the interface without requiring ARP to work, create a
+static arp cache for a meaningless IP# (say 10.0.0.1) and log packets to
+this IP#.
+
+# Log all short TCP packets to qe3, with "packetlog" as the intended
+# destination for the packet.
+#
+block in quick to qe3:packetlog proto tcp all with short
+#
+# Log all connection attempts for TCP
+#
+pass in quick on ppp0 dup-to le1:packetlog proto tcp all flags S/SA
+
+ ------------------------------------------------------------------------
+
+Rule groups
+
+To aide in making rule processing more efficient, it is possible to setup
+rule `groups'. By default, all rules are in group 0 and all other groups
+have it as their ultimate parent. To start a new group, a rule includes a
+`head' statement, such as this:
+
+# Process all incoming ppp packets on ppp0 with group 100, with the default for
+# this interface to block all incoming.
+#
+block in quick on ppp0 all head 100
+
+If we then wanted to allow people to connect to our WWW server, via ppp0, we
+could then just add a rule about WWW. NOTE: only packets which match the
+above rule are processed by any group 100 rules.
+
+# Allow connections to the WWW server via ppp0.
+#
+pass in quick proto tcp from any to any port = WWW keep state group 100
+
+ ------------------------------------------------------------------------
+Return to the IP Filter home page
+$FreeBSD$
diff --git a/share/examples/ipfilter/firewall.1 b/share/examples/ipfilter/firewall.1
new file mode 100644
index 0000000..47acb5c
--- /dev/null
+++ b/share/examples/ipfilter/firewall.1
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# This is an example of a very light firewall used to guard against
+# some of the most easily exploited common security holes.
+#
+# The example assumes it is running on a gateway with interface ppp0
+# attached to the outside world, and interface ed0 attached to
+# network 192.168.4.0 which needs to be protected.
+#
+#
+# Pass any packets not explicitly mentioned by subsequent rules
+#
+pass out from any to any
+pass in from any to any
+#
+# Block any inherently bad packets coming in from the outside world.
+# These include ICMP redirect packets and IP fragments so short the
+# filtering rules won't be able to examine the whole UDP/TCP header.
+#
+block in log quick on ppp0 proto icmp from any to any icmp-type redir
+block in log quick on ppp0 proto tcp/udp all with short
+#
+# Block any IP spoofing attempts. (Packets "from" our network
+# shouldn't be coming in from outside).
+#
+block in log quick on ppp0 from 192.168.4.0/24 to any
+block in log quick on ppp0 from localhost to any
+block in log quick on ppp0 from 0.0.0.0/32 to any
+block in log quick on ppp0 from 255.255.255.255/32 to any
+#
+# Block any incoming traffic to NFS ports, to the RPC portmapper, and
+# to X servers.
+#
+block in log on ppp0 proto tcp/udp from any to any port = sunrpc
+block in log on ppp0 proto tcp/udp from any to any port = 2049
+block in log on ppp0 proto tcp from any to any port = 6000
diff --git a/share/examples/ipfilter/firewall.2 b/share/examples/ipfilter/firewall.2
new file mode 100644
index 0000000..ba00504
--- /dev/null
+++ b/share/examples/ipfilter/firewall.2
@@ -0,0 +1,70 @@
+# $FreeBSD$
+#
+# This is an example of a fairly heavy firewall used to keep everyone
+# out of a particular network while still allowing people within that
+# network to get outside.
+#
+# The example assumes it is running on a gateway with interface ppp0
+# attached to the outside world, and interface ed0 attached to
+# network 192.168.4.0 which needs to be protected.
+#
+#
+# Pass any packets not explicitly mentioned by subsequent rules
+#
+pass out from any to any
+pass in from any to any
+#
+# Block any inherently bad packets coming in from the outside world.
+# These include ICMP redirect packets, IP fragments so short the
+# filtering rules won't be able to examine the whole UDP/TCP header,
+# and anything with IP options.
+#
+block in log quick on ppp0 proto icmp from any to any icmp-type redir
+block in log quick on ppp0 proto tcp/udp all with short
+block in log quick on ppp0 from any to any with ipopts
+#
+# Block any IP spoofing attempts. (Packets "from" our network
+# shouldn't be coming in from outside).
+#
+block in log quick on ppp0 from 192.168.4.0/24 to any
+block in log quick on ppp0 from localhost to any
+block in log quick on ppp0 from 0.0.0.0/32 to any
+block in log quick on ppp0 from 255.255.255.255/32 to any
+#
+# Block all incoming UDP traffic except talk and DNS traffic. NFS
+# and portmap are special-cased and logged.
+#
+block in on ppp0 proto udp from any to any
+block in log on ppp0 proto udp from any to any port = sunrpc
+block in log on ppp0 proto udp from any to any port = 2049
+pass in on ppp0 proto udp from any to any port = domain
+pass in on ppp0 proto udp from any to any port = talk
+pass in on ppp0 proto udp from any to any port = ntalk
+#
+# Block all incoming TCP traffic connections to known services,
+# returning a connection reset so things like ident don't take
+# forever timing out. Don't log ident (auth port) as it's so common.
+#
+block return-rst in log on ppp0 proto tcp from any to any flags S/SA
+block return-rst in on ppp0 proto tcp from any to any port = auth flags S/SA
+#
+# Allow incoming TCP connections to ports between 1024 and 5000, as
+# these don't have daemons listening but are used by outgoing
+# services like ftp and talk. For slightly more obscurity (though
+# not much more security), the second commented out rule can chosen
+# instead.
+#
+pass in on ppp0 proto tcp from any to any port 1024 >< 5000
+#pass in on ppp0 proto tcp from any port = ftp-data to any port 1024 >< 5000
+#
+# Now allow various incoming TCP connections to particular hosts, TCP
+# to the main nameserver so secondaries can do zone transfers, SMTP
+# to the mail host, www to the web server (which really should be
+# outside the firewall if you care about security), and ssh to a
+# hypothetical machine caled 'gatekeeper' that can be used to gain
+# access to the protected network from the outside world.
+#
+pass in on ppp0 proto tcp from any to ns1 port = domain
+pass in on ppp0 proto tcp from any to mail port = smtp
+pass in on ppp0 proto tcp from any to www port = www
+pass in on ppp0 proto tcp from any to gatekeeper port = ssh
diff --git a/share/examples/ipfilter/ipf-howto.txt b/share/examples/ipfilter/ipf-howto.txt
new file mode 100644
index 0000000..54187ae
--- /dev/null
+++ b/share/examples/ipfilter/ipf-howto.txt
@@ -0,0 +1,3168 @@
+
+
+
+
+
+
+ IP Filter Based Firewalls HOWTO
+
+ Brendan Conoboy <synk@swcp.com>
+ Erik Fichtner <emf@obfuscation.org>
+ $FreeBSD$
+
+ Fri Apr 20 09:31:14 EDT 2001
+
+
+
+
+
+
+ Abstract: This document is intended to introduce a new
+ user to the IP Filter firewalling package and, at the
+ same time, teach the user some basic fundamentals of
+ good firewall design.
+
+
+
+
+
+
+
+
+
+
+
+
+1. Introduction
+
+ IP Filter is a great little firewall package. It does
+just about everything other free firewalls (ipfwadm,
+ipchains, ipfw) do, but it's also portable and does neat
+stuff the others don't. This document is intended to make
+some cohesive sense of the sparse documentation presently
+available for ipfilter. Some prior familiarity with packet
+filtering will be useful, however too much familiarity may
+make this document a waste of your time. For greater under-
+standing of firewalls, the authors recommend reading Build-
+ing Internet Firewalls, Chapman & Zwicky, O'Reilly and Asso-
+ciates; and TCP/IP Illustrated, Volume 1, Stevens, Addison-
+Wesley.
+
+
+
+
+
+1.1. Disclaimer
+
+ The authors of this document are not responsible for
+any damages incurred due to actions taken based on this doc-
+ument. This document is meant as an introduction to building
+a firewall based on IP-Filter. If you do not feel
+
+
+
+
+
+
+
+
+
+ -2-
+
+
+comfortable taking responsibility for your own actions, you
+should stop reading this document and hire a qualified secu-
+rity professional to install your firewall for you.
+
+
+1.2. Copyright
+
+ Unless otherwise stated, HOWTO documents are copy-
+righted by their respective authors. HOWTO documents may be
+reproduced and distributed in whole or in part, in any
+medium physical or electronic, as long as this copyright
+notice is retained on all copies. Commercial redistribution
+is allowed and encouraged; however, the authors would like
+to be notified of any such distributions.
+
+ All translations, derivative works, or aggregate works
+incorporating any HOWTO documents must be covered under this
+copyright notice. That is, you may not produce a derivative
+work from a HOWTO and impose additional restrictions on its
+distribution. Exceptions to these rules may be granted under
+certain conditions; please contact the HOWTO coordinator.
+
+ In short, we wish to promote dissemination of this
+information through as many channels as possible. However,
+we do wish to retain copyright on the HOWTO documents, and
+would like to be notified of any plans to redistribute the
+HOWTOs.
+
+
+1.3. Where to obtain the important pieces
+
+ The official IPF homepage is at:
+<http://coombs.anu.edu.au/~avalon/ip-filter.html>
+
+ The most up-to-date version of this document can be
+found at: <http://www.obfuscation.org/ipf/>
+
+
+
+
+2. Basic Firewalling
+
+ This section is designed to familiarize you with ipfil-
+ter's syntax, and firewall theory in general. The features
+discussed here are features you'll find in any good firewall
+package. This section will give you a good foundation to
+make reading and understanding the advanced section very
+easy. It must be emphasized that this section alone is not
+enough to build a good firewall, and that the advanced sec-
+tion really is required reading for anybody who wants to
+build an effective security system.
+
+
+
+
+
+
+
+
+
+
+
+
+ -3-
+
+
+2.1. Config File Dynamics, Order and Precedence
+
+ IPF (IP Filter) has a config file (as opposed to say,
+running some command again and again for each new rule).
+The config file drips with Unix: There's one rule per line,
+the "#" mark denotes a comment, and you can have a rule and
+a comment on the same line. Extraneous whitespace is
+allowed, and is encouraged to keep the rules readable.
+
+
+2.2. Basic Rule Processing
+
+ The rules are processed from top to bottom, each one
+appended after another. This quite simply means that if the
+entirety of your config file is:
+
+ block in all
+ pass in all
+
+The computer sees it as:
+
+ block in all
+ pass in all
+
+Which is to say that when a packet comes in, the first thing
+IPF applies is:
+
+ block in all
+
+Should IPF deem it necessary to move on to the next rule, it
+would then apply the second rule:
+
+ pass in all
+
+ At this point, you might want to ask yourself "would
+IPF move on to the second rule?" If you're familiar with
+ipfwadm or ipfw, you probably won't ask yourself this.
+Shortly after, you will become bewildered at the weird way
+packets are always getting denied or passed when they
+shouldn't. Many packet filters stop comparing packets to
+rulesets the moment the first match is made; IPF is not one
+of them.
+
+ Unlike the other packet filters, IPF keeps a flag on
+whether or not it's going to pass the packet. Unless you
+interrupt the flow, IPF will go through the entire ruleset,
+making its decision on whether or not to pass or drop the
+packet based on the last matching rule. The scene: IP Fil-
+ter's on duty. It's been been scheduled a slice of CPU
+time. It has a checkpoint clipboard that reads:
+
+ block in all
+ pass in all
+
+
+
+
+
+
+
+
+
+
+ -4-
+
+
+A packet comes in the interface and it's time to go to work.
+It takes a look at the packet, it takes a look at the first
+rule:
+
+ block in all
+
+"So far I think I will block this packet" says IPF. It
+takes a look at the second rule:
+
+ pass in all
+
+"So far I think I will pass this packet" says IPF. It takes
+a look at a third rule. There is no third rule, so it goes
+with what its last motivation was, to pass the packet
+onward.
+
+It's a good time to point out that even if the ruleset had
+been
+
+ block in all
+ block in all
+ block in all
+ block in all
+ pass in all
+
+that the packet would still have gone through. There is no
+cumulative effect. The last matching rule always takes
+precedence.
+
+2.3. Controlling Rule Processing
+
+ If you have experience with other packet filters, you
+may find this layout to be confusing, and you may be specu-
+lating that there are problems with portability with other
+filters and speed of rule matching. Imagine if you had 100
+rules and most of the applicable ones were the first 10.
+There would be a terrible overhead for every packet coming
+in to go through 100 rules every time. Fortunately, there
+is a simple keyword you can add to any rule that makes it
+take action at that match. That keyword is quick.
+
+Here's a modified copy of the original ruleset using the
+quick keyword:
+
+ block in quick all
+ pass in all
+
+In this case, IPF looks at the first rule:
+
+ block in quick all
+
+The packet matches and the search is over. The packet is
+expunged without a peep. There are no notices, no logs, no
+memorial service. Cake will not be served. So what about
+
+
+
+
+
+
+
+
+
+ -5-
+
+
+the next rule?
+
+ pass in all
+
+ This rule is never encountered. It could just as eas-
+ily not be in the config file at all. The sweeping match of
+all and the terminal keyword quick from the previous rule
+make certain that no rules are followed afterward.
+
+ Having half a config file laid to waste is rarely a
+desirable state. On the other hand, IPF is here to block
+packets and as configured, it's doing a very good job.
+Nonetheless, IPF is also here to let some packets through,
+so a change to the ruleset to make this possible is called
+for.
+
+2.4. Basic filtering by IP address
+
+ IPF will match packets on many criteria. The one that
+we most commonly think of is the IP address. There are some
+blocks of address space from which we should never get traf-
+fic. One such block is from the unroutable networks,
+192.168.0.0/16 (/16 is the CIDR notation for a netmask. You
+may be more familiar with the dotted decimal format,
+255.255.0.0. IPF accepts both). If you wanted to block
+192.168.0.0/16, this is one way to do it:
+
+ block in quick from 192.168.0.0/16 to any
+ pass in all
+
+Now we have a less stringent ruleset that actually does
+something for us. Let's imagine a packet comes in from
+1.2.3.4. The first rule is applied:
+
+ block in quick from 192.168.0.0/16 to any
+
+The packet is from 1.2.3.4, not 192.168.*.*, so there is no
+match. The second rule is applied:
+
+ pass in all
+
+The packet from 1.2.3.4 is definitely a part of all, so the
+packet is sent to whatever it's destination happened to be.
+
+ On the other hand, suppose we have a packet that comes
+in from 192.168.1.2. The first rule is applied:
+
+ block in quick from 192.168.0.0/16 to any
+
+There's a match, the packet is dropped, and that's the end.
+Again, it doesn't move to the second rule because the first
+rule matches and contains the quick keyword.
+
+
+
+
+
+
+
+
+
+
+
+ -6-
+
+
+ At this point you can build a fairly extensive set of
+definitive addresses which are passed or blocked. Since
+we've already started blocking private address space from
+entering our firewall, let's take care of the rest of it:
+
+ block in quick from 192.168.0.0/16 to any
+ block in quick from 172.16.0.0/12 to any
+ block in quick from 10.0.0.0/8 to any
+ pass in all
+
+The first three address blocks are some of the private IP
+space.
+
+2.5. Controlling Your Interfaces
+
+ It seems very frequent that companies have internal
+networks before they want a link to the outside world. In
+fact, it's probably reasonable to say that's the main reason
+people consider firewalls in the first place. The machine
+that bridges the outside world to the inside world and vice
+versa is the router. What separates the router from any
+other machine is simple: It has more than one interface.
+
+ Every packet you receive comes from a network inter-
+face; every packet you transmit goes out a network inter-
+face. Say your machine has 3 interfaces, lo0 (loopback),
+xl0 (3com ethernet), and tun0 (FreeBSD's generic tunnel
+interface that PPP uses), but you don't want packets coming
+in on the tun0 interface?
+
+ block in quick on tun0 all
+ pass in all
+
+In this case, the on keyword means that that data is coming
+in on the named interface. If a packet comes in on tun0,
+the first rule will block it. If a packet comes in on lo0
+or in on xl0, the first rule will not match, the second rule
+will, the packet will be passed.
+
+2.6. Using IP Address and Interface Together
+
+ It's an odd state of affairs when one decides it best
+to have the tun0 interface up, but not allow any data to be
+received from it. The more criteria the firewall matches
+against, the tighter (or looser) the firewall can become.
+Maybe you want data from tun0, but not from 192.168.0.0/16?
+This is the start of a powerful firewall.
+
+ block in quick on tun0 from 192.168.0.0/16 to any
+-----------
+ See rfc1918 at
+<http://www.faqs.org/rfcs/rfc1918.html> and
+<http://www.ietf.org/internet-drafts/draft-man-
+ning-dsua-06.txt>
+
+
+
+
+
+
+
+
+
+ -7-
+
+
+ pass in all
+
+Compare this to our previous rule:
+
+ block in quick from 192.168.0.0/16 to any
+ pass in all
+
+The old way, all traffic from 192.168.0.0/16, regardless of
+interface, was completely blocked. The new way, using on
+tun0 means that it's only blocked if it comes in on the tun0
+interface. If a packet arrived on the xl0 interface from
+192.168.0.0/16, it would be passed.
+
+ At this point you can build a fairly extensive set of
+definitive addresses which are passed or blocked. Since
+we've already started blocking private address space from
+entering tun0, let's take care of the rest of it:
+
+ block in quick on tun0 from 192.168.0.0/16 to any
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ pass in all
+
+You've already seen the first three blocks, but not the
+rest. The fourth is a largely wasted class-A network used
+for loopback. Much software communicates with itself on
+127.0.0.1 so blocking it from an external source is a good
+idea. The fifth, 0.0.0.0/8, should never be seen on the
+internet. Most IP stacks treat "0.0.0.0/32" as the default
+gateway, and the rest of the 0.*.*.* network gets handled
+strangely by various systems as a byproduct of how routing
+decisions are made. You should treat 0.0.0.0/8 just like
+127.0.0.0/8. 169.254.0.0/16 has been assigned by the IANA
+for use in auto-configuration when systems have not yet been
+able to obtain an IP address via DHCP or the like. Most
+notably, Microsoft Windows will use addresses in this range
+if they are set to DHCP and cannot find a DHCP server.
+192.0.2.0/24 has also been reserved for use as an example IP
+netblock for documentation authors. We specifically do not
+use this range as it would cause confusion when we tell you
+to block it, and thus all our examples come from
+20.20.20.0/24. 204.152.64.0/23 is an odd netblock reserved
+by Sun Microsystems for private cluster interconnects, and
+blocking this is up to your own judgement. Lastly,
+224.0.0.0/3 wipes out the "Class D and E" networks which is
+used mostly for multicast traffic, although further defini-
+tion of "Class E" space can be found in RFC 1166.
+
+
+
+
+
+
+
+
+
+
+ -8-
+
+
+ There's a very important principle in packet filtering
+which has only been alluded to with the private network
+blocking and that is this: When you know there's certain
+types of data that only comes from certain places, you setup
+the system to only allow that kind of data from those
+places. In the case of the unroutable addresses, you know
+that nothing from 10.0.0.0/8 should be arriving on tun0
+because you have no way to reply to it. It's an illegiti-
+mate packet. The same goes for the other unroutables as
+well as 127.0.0.0/8.
+
+ Many pieces of software do all their authentication
+based upon the packet's originating IP address. When you
+have an internal network, say 20.20.20.0/24, you know that
+the only traffic for that internal network is going to come
+off the local ethernet. Should a packet from 20.20.20.0/24
+arrive over a PPP dialup, it's perfectly reasonable to drop
+it on the floor, or put it in a dark room for interrogation.
+It should by no means be allowed to get to its final desti-
+nation. You can accomplish this particularly easily with
+what you already know of IPF. The new ruleset would be:
+
+ block in quick on tun0 from 192.168.0.0/16 to any
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ block in quick on tun0 from 20.20.20.0/24 to any
+ pass in all
+
+2.7. Bi-Directional Filtering; The "out" Keyword
+
+ Up until now, we've been passing or blocking inbound
+traffic. To clarify, inbound traffic is all traffic that
+enters the firewall on any interface. Conversely, outbound
+traffic is all traffic that leaves on any interface (whether
+locally generated or simply passing through). This means
+that all packets coming in are not only filtered as they
+enter the firewall, they're also filtered as they exit.
+Thusfar there's been an implied pass out all that may or may
+not be desirable. Just as you may pass and block incoming
+traffic, you may do the same with outgoing traffic.
+
+ Now that we know there's a way to filter outbound pack-
+ets just like inbound, it's up to us to find a conceivable
+use for such a thing. One possible use of this idea is to
+keep spoofed packets from exiting your own network. Instead
+of passing any traffic out the router, you could instead
+limit permitted traffic to packets originating at
+
+
+
+
+
+
+
+
+
+
+ -9-
+
+
+20.20.20.0/24. You might do it like this:
+
+ pass out quick on tun0 from 20.20.20.0/24 to any
+ block out quick on tun0 from any to any
+
+If a packet comes from 20.20.20.1/32, it gets sent out by
+the first rule. If a packet comes from 1.2.3.4/32 it gets
+blocked by the second.
+
+ You can also make similar rules for the unroutable
+addresses. If some machine tries to route a packet through
+IPF with a destination in 192.168.0.0/16, why not drop it?
+The worst that can happen is that you'll spare yourself some
+bandwidth:
+
+ block out quick on tun0 from any to 192.168.0.0/16
+ block out quick on tun0 from any to 172.16.0.0/12
+ block out quick on tun0 from any to 10.0.0.0/8
+ block out quick on tun0 from any to 0.0.0.0/8
+ block out quick on tun0 from any to 127.0.0.0/8
+ block out quick on tun0 from any to 169.254.0.0/16
+ block out quick on tun0 from any to 192.0.2.0/24
+ block out quick on tun0 from any to 204.152.64.0/23
+ block out quick on tun0 from any to 224.0.0.0/3
+ block out quick on tun0 from !20.20.20.0/24 to any
+
+In the narrowest viewpoint, this doesn't enhance your secu-
+rity. It enhances everybody else's security, and that's a
+nice thing to do. As another viewpoint, one might suppose
+that because nobody can send spoofed packets from your site,
+that your site has less value as a relay for crackers, and
+as such is less of a target.
+
+ You'll likely find a number of uses for blocking out-
+bound packets. One thing to always keep in mind is that in
+and out directions are in reference to your firewall, never
+any other machine.
+
+2.8. Logging What Happens; The "log" Keyword
+
+ Up to this point, all blocked and passed packets have
+been silently blocked and silently passed. Usually you want
+to know if you're being attacked rather than wonder if that
+firewall is really buying you any added benefits. While I
+wouldn't want to log every passed packet, and in some cases
+every blocked packet, I would want to know about the blocked
+packets from 20.20.20.0/24. To do this, we add the log key-
+word:
+
+ block in quick on tun0 from 192.168.0.0/16 to any
+-----------
+ This can, of course, be changed by using -DIPFIL-
+TER_DEFAULT_BLOCK when compiling ipfilter on your
+system.
+
+
+
+
+
+
+
+
+
+ -10-
+
+
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ block in log quick on tun0 from 20.20.20.0/24 to any
+ pass in all
+
+So far, our firewall is pretty good at blocking packets com-
+ing to it from suspect places, but there's still more to be
+done. For one thing, we're accepting packets destined any-
+where. One thing we ought to do is make sure packets to
+20.20.20.0/32 and 20.20.20.255/32 get dropped on the floor.
+To do otherwise opens the internal network for a smurf
+attack. These two lines would prevent our hypothetical net-
+work from being used as a smurf relay:
+
+ block in log quick on tun0 from any to 20.20.20.0/32
+ block in log quick on tun0 from any to 20.20.20.255/32
+
+This brings our total ruleset to look something like this:
+
+ block in quick on tun0 from 192.168.0.0/16 to any
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ block in log quick on tun0 from 20.20.20.0/24 to any
+ block in log quick on tun0 from any to 20.20.20.0/32
+ block in log quick on tun0 from any to 20.20.20.255/32
+ pass in all
+
+2.9. Complete Bi-Directional Filtering By Interface
+
+ So far we have only presented fragments of a complete
+ruleset. When you're actually creating your ruleset, you
+should setup rules for every direction and every interface.
+The default state of ipfilter is to pass packets. It is as
+though there were an invisible rule at the beginning which
+states pass in all and pass out all. Rather than rely on
+some default behaviour, make everything as specific as pos-
+sible, interface by interface, until every base is covered.
+
+ First we'll start with the lo0 interface, which wants
+to run wild and free. Since these are programs talking to
+others on the local system, go ahead and keep it unre-
+stricted:
+
+
+
+
+
+
+
+
+
+ -11-
+
+
+ pass out quick on lo0
+ pass in quick on lo0
+
+Next, there's the xl0 interface. Later on we'll begin plac-
+ing restrictions on the xl0 interface, but to start with,
+we'll act as though everything on our local network is
+trustworthy and give it much the same treatment as lo0:
+
+ pass out quick on xl0
+ pass in quick on xl0
+
+Finally, there's the tun0 interface, which we've been half-
+filtering with up until now:
+
+ block out quick on tun0 from any to 192.168.0.0/16
+ block out quick on tun0 from any to 172.16.0.0/12
+ block out quick on tun0 from any to 127.0.0.0/8
+ block out quick on tun0 from any to 10.0.0.0/8
+ block out quick on tun0 from any to 0.0.0.0/8
+ block out quick on tun0 from any to 169.254.0.0/16
+ block out quick on tun0 from any to 192.0.2.0/24
+ block out quick on tun0 from any to 204.152.64.0/23
+ block out quick on tun0 from any to 224.0.0.0/3
+ pass out quick on tun0 from 20.20.20.0/24 to any
+ block out quick on tun0 from any to any
+
+ block in quick on tun0 from 192.168.0.0/16 to any
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ block in log quick on tun0 from 20.20.20.0/24 to any
+ block in log quick on tun0 from any to 20.20.20.0/32
+ block in log quick on tun0 from any to 20.20.20.255/32
+ pass in all
+
+This is a pretty significant amount of filtering already,
+protecting 20.20.20.0/24 from being spoofed or being used
+for spoofing. Future examples will continue to show one-
+sideness, but keep in mind that it's for brevity's sake, and
+when setting up your own ruleset, adding rules for every
+direction and every interface is necessary.
+
+
+2.10. Controlling Specific Protocols; The "proto" Keyword
+
+ Denial of Service attacks are as rampant as buffer
+overflow exploits. Many denial of service attacks rely on
+glitches in the OS's TCP/IP stack. Frequently, this has
+come in the form of ICMP packets. Why not block them
+
+
+
+
+
+
+
+
+
+ -12-
+
+
+entirely?
+
+ block in log quick on tun0 proto icmp from any to any
+
+Now any ICMP traffic coming in from tun0 will be logged and
+discarded.
+
+2.11. Filtering ICMP with the "icmp-type" Keyword; Merging
+Rulesets
+
+ Of course, dropping all ICMP isn't really an ideal sit-
+uation. Why not drop all ICMP? Well, because it's useful
+to have partially enabled. So maybe you want to keep some
+types of ICMP traffic and drop other kinds. If you want
+ping and traceroute to work, you need to let in ICMP types 0
+and 11. Strictly speaking, this might not be a good idea,
+but if you need to weigh security against convenience, IPF
+lets you do it.
+
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 0
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 11
+
+Remember that ruleset order is important. Since we're doing
+everything quick we must have our passes before our blocks,
+so we really want the last three rules in this order:
+
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 0
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 11
+ block in log quick on tun0 proto icmp from any to any
+
+Adding these 3 rules to the anti-spoofing rules is a bit
+tricky. One error might be to put the new ICMP rules at the
+beginning:
+
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 0
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 11
+ block in log quick on tun0 proto icmp from any to any
+ block in quick on tun0 from 192.168.0.0/16 to any
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ block in log quick on tun0 from 20.20.20.0/24 to any
+ block in log quick on tun0 from any to 20.20.20.0/32
+ block in log quick on tun0 from any to 20.20.20.255/32
+ pass in all
+
+The problem with this is that an ICMP type 0 packet from
+192.168.0.0/16 will get passed by the first rule, and never
+blocked by the fourth rule. Also, since we quickly pass an
+
+
+
+
+
+
+
+
+
+ -13-
+
+
+ICMP ECHO_REPLY (type 0) to 20.20.20.0/24, we've just opened
+ourselves back up to a nasty smurf attack and nullified
+those last two block rules. Oops. To avoid this, we place
+the ICMP rules after the anti-spoofing rules:
+
+ block in quick on tun0 from 192.168.0.0/16 to any
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ block in log quick on tun0 from 20.20.20.0/24 to any
+ block in log quick on tun0 from any to 20.20.20.0/32
+ block in log quick on tun0 from any to 20.20.20.255/32
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 0
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 11
+ block in log quick on tun0 proto icmp from any to any
+ pass in all
+
+Because we block spoofed traffic before the ICMP rules are
+processed, a spoofed packet never makes it to the ICMP rule-
+set. It's very important to keep such situations in mind
+when merging rules.
+
+2.12. TCP and UDP Ports; The "port" Keyword
+
+ Now that we've started blocking packets based on proto-
+col, we can start blocking packets based on specific aspects
+of each protocol. The most frequently used of these aspects
+is the port number. Services such as rsh, rlogin, and tel-
+net are all very convenient to have, but also hideously
+insecure against network sniffing and spoofing. One great
+compromise is to only allow the services to run internally,
+then block them externally. This is easy to do because
+rlogin, rsh, and telnet use specific TCP ports (513, 514,
+and 23 respectively). As such, creating rules to block them
+is easy:
+
+ block in log quick on tun0 proto tcp from any to 20.20.20.0/24 port = 513
+ block in log quick on tun0 proto tcp from any to 20.20.20.0/24 port = 514
+ block in log quick on tun0 proto tcp from any to 20.20.20.0/24 port = 23
+
+Make sure all 3 are before the pass in all and they'll be
+closed off from the outside (leaving out spoofing for
+brevity's sake):
+
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 0
+ pass in quick on tun0 proto icmp from any to 20.20.20.0/24 icmp-type 11
+ block in log quick on tun0 proto icmp from any to any
+ block in log quick on tun0 proto tcp from any to 20.20.20.0/24 port = 513
+ block in log quick on tun0 proto tcp from any to 20.20.20.0/24 port = 514
+
+
+
+
+
+
+
+
+
+ -14-
+
+
+ block in log quick on tun0 proto tcp from any to 20.20.20.0/24 port = 23
+ pass in all
+
+You might also want to block 514/udp (syslog), 111/tcp &
+111/udp (portmap), 515/tcp (lpd), 2049/tcp and 2049/udp
+(NFS), 6000/tcp (X11) and so on and so forth. You can get a
+complete listing of the ports being listened to by using
+netstat -a (or lsof -i, if you have it installed).
+
+ Blocking UDP instead of TCP only requires replacing
+proto tcp with proto udp. The rule for syslog would be:
+
+ block in log quick on tun0 proto udp from any to 20.20.20.0/24 port = 514
+
+IPF also has a shorthand way to write rules that apply to
+both proto tcp and proto udp at the same time, such as
+portmap or NFS. The rule for portmap would be:
+
+ block in log quick on tun0 proto tcp/udp from any to 20.20.20.0/24 port = 111
+
+
+
+
+3. Advanced Firewalling Introduction
+
+ This section is designed as an immediate followup to
+the basic section. Contained below are both concepts for
+advanced firewall design, and advanced features contained
+only within ipfilter. Once you are comfortable with this
+section, you should be able to build a very strong firewall.
+
+3.1. Rampant Paranoia; or The Default-Deny Stance
+
+ There's a big problem with blocking services by the
+port: sometimes they move. RPC based programs are terrible
+about this, lockd, statd, even nfsd listens places other
+than 2049. It's awfully hard to predict, and even worse to
+automate adjusting all the time. What if you miss a ser-
+vice? Instead of dealing with all that hassle, let's start
+over with a clean slate. The current ruleset looks like
+this:
+
+
+
+
+ Yes, we really are starting over. The first rule we're
+going to use is this:
+
+ block in all
+
+No network traffic gets through. None. Not a peep. You're
+rather secure with this setup. Not terribly useful, but
+quite secure. The great thing is that it doesn't take much
+more to make your box rather secure, yet useful too. Let's
+
+
+
+
+
+
+
+
+
+ -15-
+
+
+say the machine this is running on is a web server, nothing
+more, nothing less. It doesn't even do DNS lookups. It
+just wants to take connections on 80/tcp and that's it. We
+can do that. We can do that with a second rule, and you
+already know how:
+
+ block in on tun0 all
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 80
+
+This machine will pass in port 80 traffic for 20.20.20.1,
+and deny everything else. For basic firewalling, this is
+all one needs.
+
+3.2. Implicit Allow; The "keep state" Rule
+
+ The job of your firewall is to prevent unwanted traffic
+getting to point B from point A. We have general rules
+which say "as long as this packet is to port 23, it's okay."
+We have general rules which say "as long as this packet has
+its FIN flag set, it's okay." Our firewalls don't know the
+beginning, middle, or end of any TCP/UDP/ICMP session. They
+merely have vague rules that are applied to all packets.
+We're left to hope that the packet with its FIN flag set
+isn't really a FIN scan, mapping our services. We hope that
+the packet to port 23 isn't an attempted hijack of our tel-
+net session. What if there was a way to identify and autho-
+rize individual TCP/UDP/ICMP sessions and distinguish them
+from port scanners and DoS attacks? There is a way, it's
+called keeping state.
+
+ We want convenience and security in one. Lots of peo-
+ple do, that's why Ciscos have an "established" clause that
+lets established tcp sessions go through. Ipfw has estab-
+lished. Ipfwadm has setup/established. They all have this
+feature, but the name is very misleading. When we first saw
+it, we thought it meant our packet filter was keeping track
+of what was going on, that it knew if a connection was
+really established or not. The fact is, they're all taking
+the packet's word for it from a part of the packet anybody
+can lie about. They read the TCP packet's flags section and
+there's the reason UDP/ICMP don't work with it, they have no
+such thing. Anybody who can create a packet with bogus
+flags can get by a firewall with this setup.
+
+ Where does IPF come in to play here, you ask? Well,
+unlike the other firewalls, IPF really can keep track of
+whether or not a connection is established. And it'll do it
+with TCP, UDP and ICMP, not just TCP. Ipf calls it keeping
+state. The keyword for the ruleset is keep state.
+
+ Up until now, we've told you that packets come in, then
+the ruleset gets checked; packets go out, then the ruleset
+gets checked. Actually, what happens is packets come in,
+the state table gets checked, then *maybe* the inbound
+
+
+
+
+
+
+
+
+
+ -16-
+
+
+ruleset gets checked; packets go out, the state table gets
+checked, then *maybe* the outbound ruleset gets checked.
+The state table is a list of TCP/UDP/ICMP sessions that are
+unquestionadely passed through the firewall, circumventing
+the entire ruleset. Sound like a serious security hole?
+Hang on, it's the best thing that ever happened to your
+firewall.
+
+ All TCP/IP sessions have a start, a middle, and an end
+(even though they're sometimes all in the same packet). You
+can't have an end without a middle and you can't have a mid-
+dle without a start. This means that all you really need to
+filter on is the beginning of a TCP/UDP/ICMP session. If
+the beginning of the session is allowed by your firewall
+rules, you really want the middle and end to be allowed too
+(lest your IP stack should overflow and your machines become
+useless). Keeping state allows you to ignore the middle and
+end and simply focus on blocking/passing new sessions. If
+the new session is passed, all its subsequent packets will
+be allowed through. If it's blocked, none of its subsequent
+packets will be allowed through. Here's an example for run-
+ning an ssh server (and nothing but an ssh server):
+
+ block out quick on tun0 all
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 22 keep state
+
+The first thing you might notice is that there's no "pass
+out" provision. In fact, there's only an all-inclusive
+"block out" rule. Despite this, the ruleset is complete.
+This is because by keeping state, the entire ruleset is cir-
+cumvented. Once the first SYN packet hits the ssh server,
+state is created and the remainder of the ssh session is
+allowed to take place without interference from the fire-
+wall. Here's another example:
+
+ block in quick on tun0 all
+ pass out quick on tun0 proto tcp from 20.20.20.1/32 to any keep state
+
+In this case, the server is running no services. Infact,
+it's not a server, it's a client. And this client doesn't
+want unauthorized packets entering its IP stack at all.
+However, the client wants full access to the internet and
+the reply packets that such privledge entails. This simple
+ruleset creates state entries for every new outgoing TCP
+session. Again, since a state entry is created, these new
+TCP sessions are free to talk back and forth as they please
+without the hinderance or inspection of the firewall rule-
+set. We mentioned that this also works for UDP and ICMP:
+
+ block in quick on tun0 all
+ pass out quick on tun0 proto tcp from 20.20.20.1/32 to any keep state
+ pass out quick on tun0 proto udp from 20.20.20.1/32 to any keep state
+ pass out quick on tun0 proto icmp from 20.20.20.1/32 to any keep state
+
+
+
+
+
+
+
+
+
+
+ -17-
+
+
+Yes Virginia, we can ping. Now we're keeping state on TCP,
+UDP, ICMP. Now we can make outgoing connections as though
+there's no firewall at all, yet would-be attackers can't get
+back in. This is very handy because there's no need to
+track down what ports we're listening to, only the ports we
+want people to be able to get to.
+
+ State is pretty handy, but it's also a bit tricky. You
+can shoot yourself in the foot in strange and mysterious
+ways. Consider the following ruleset:
+
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 23
+ pass out quick on tun0 proto tcp from any to any keep state
+ block in quick all
+ block out quick all
+
+At first glance, this seems to be a good setup. We allow
+incoming sessions to port 23, and outgoing sessions any-
+where. Naturally packets going to port 23 will have reply
+packets, but the ruleset is setup in such a way that the
+pass out rule will generate a state entry and everything
+will work perfectly. At least, you'd think so.
+
+ The unfortunate truth is that after 60 seconds of idle
+time the state entry will be closed (as opposed to the nor-
+mal 5 days). This is because the state tracker never saw
+the original SYN packet destined to port 23, it only saw the
+SYN ACK. IPF is very good about following TCP sessions from
+start to finish, but it's not very good about coming into
+the middle of a connection, so rewrite the rule to look like
+this:
+
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 23 keep state
+ pass out quick on tun0 proto tcp from any to any keep state
+ block in quick all
+ block out quick all
+
+The additional of this rule will enter the very first packet
+into the state table and everything will work as expected.
+Once the 3-way handshake has been witness by the state
+engine, it is marked in 4/4 mode, which means it's setup for
+long-term data exchange until such time as the connection is
+torn down (wherein the mode changes again. You can see the
+current modes of your state table with ipfstat -s.
+
+3.3. Stateful UDP
+
+ UDP is stateless so naturally it's a bit harder to do a
+reliable job of keeping state on it. Nonetheless, ipf does
+a pretty good job. When machine A sends a UDP packet to
+machine B with source port X and destination port Y, ipf
+will allow a reply from machine B to machine A with source
+port Y and destination port X. This is a short term state
+entry, a mere 60 seconds.
+
+
+
+
+
+
+
+
+
+ -18-
+
+
+ Here's an example of what happens if we use nslookup to
+get the IP address of www.3com.com:
+
+ $ nslookup www.3com.com
+
+ A DNS packet is generated:
+
+ 17:54:25.499852 20.20.20.1.2111 > 198.41.0.5.53: 51979+
+
+The packet is from 20.20.20.1, port 2111, destined for
+198.41.0.5, port 53. A 60 second state entry is created.
+If a packet comes back from 198.41.0.5 port 53 destined for
+20.20.20.1 port 2111 within that period of time, the reply
+packet will be let through. As you can see, milliseconds
+later:
+
+ 17:54:25.501209 198.41.0.5.53 > 20.20.20.1.2111: 51979 q: www.3com.com
+
+The reply packet matches the state criteria and is let
+through. At that same moment that packet is let through,
+the state gateway is closed and no new incoming packets will
+be allowed in, even if they claim to be from the same place.
+
+3.4. Stateful ICMP
+
+ IPFilter handles ICMP states in the manner that one
+would expect from understanding how ICMP is used with TCP
+and UDP, and with your understanding of how keep state
+works. There are two general types of ICMP messages;
+requests and replies. When you write a rule such as:
+
+ pass out on tun0 proto icmp from any to any icmp-type 8 keep state
+
+to allow outbound echo requests (a typical ping), the resul-
+tant icmp-type 0 packet that comes back will be allowed in.
+This state entry has a default timeout of an incomplete 0/0
+state of 60 seconds. Thus, if you are keeping state on any
+outbound icmp message that will elicit an icmp message in
+reply, you need a proto icmp [...] keep state rule.
+
+ However, the majority of ICMP messages are status mes-
+sages generated by some failure in UDP (and sometimes TCP),
+and in 3.4.x and greater IPFilters, any ICMP error status
+message (say icmp-type 3 code 3 port unreachable, or icmp-
+type 11 time exceeded) that matches an active state table
+entry that could have generated that message, the ICMP
+packet is let in. For example, in older IPFilters, if you
+wanted traceroute to work, you needed to use:
+
+ pass out on tun0 proto udp from any to any port 33434><33690 keep state
+ pass in on tun0 proto icmp from any to any icmp-type timex
+
+whereas now you can do the right thing and just keep state
+on udp with:
+
+
+
+
+
+
+
+
+
+ -19-
+
+
+ pass out on tun0 proto udp from any to any port 33434><33690 keep state
+
+To provide some protection against a third-party sneaking
+ICMP messages through your firewall when an active connec-
+tion is known to be in your state table, the incoming ICMP
+packet is checked not only for matching source and destina-
+tion addresses (and ports, when applicable) but a tiny part
+of the payload of the packet that the ICMP message is claim-
+ing it was generated by.
+
+3.5. FIN Scan Detection; "flags" Keyword, "keep frags" Key-
+word
+
+Let's go back to the 4 rule set from the previous section:
+
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 23 keep state
+ pass out quick on tun0 proto tcp from any to any keep state
+ block in quick all
+ block out quick all
+
+This is almost, but not quite, satisfactory. The problem is
+that it's not just SYN packets that're allowed to go to port
+23, any old packet can get through. We can change this by
+using the flags option:
+
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 23 flags S keep state
+ pass out quick on tun0 proto tcp from any to any flags S keep state
+ block in quick all
+ block out quick all
+
+Now only TCP packets, destined for 20.20.20.1, at port 23,
+with a lone SYN flag will be allowed in and entered into the
+state table. A lone SYN flag is only present as the very
+first packet in a TCP session (called the TCP handshake) and
+that's really what we wanted all along. There's at least
+two advantages to this: No arbitrary packets can come in
+and make a mess of your state table. Also, FIN and XMAS
+scans will fail since they set flags other than the SYN
+flag. Now all incoming packets must either be handshakes or
+have state already. If anything else comes in, it's proba-
+bly a port scan or a forged packet. There's one exception
+to that, which is when a packet comes in that's fragmented
+from its journey. IPF has provisions for this as well, the
+-----------
+ Some examples use flags S/SA instead of flags S.
+flags S actually equates to flags S/AUPRFS and
+matches against only the SYN packet out of all six
+possible flags, while flags S/SA will allow pack-
+ets that may or may not have the URG, PSH, FIN, or
+RST flags set. Some protocols demand the URG or
+PSH flags, and S/SAFR would be a better choice for
+these, however we feel that it is less secure to
+blindly use S/SA when it isn't required. But it's
+your firewall.
+
+
+
+
+
+
+
+
+
+ -20-
+
+
+keep frags keyword. With it, IPF will notice and keep track
+of packets that are fragmented, allowing the expected frag-
+ments to to go through. Let's rewrite the 3 rules to log
+forgeries and allow fragments:
+
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 23 flags S keep state keep frags
+ pass out quick on tun0 proto tcp from any to any keep state flags S keep frags
+ block in log quick all
+ block out log quick all
+
+This works because every packet that should be allowed
+through makes it into the state table before the blocking
+rules are reached. The only scan this won't detect is a SYN
+scan itself. If you're truely worried about that, you might
+even want to log all initial SYN packets.
+
+3.6. Responding To a Blocked Packet
+
+ So far, all of our blocked packets have been dumped on
+the floor, logged or not, we've never sent anything back to
+the originating host. Sometimes this isn't the most desir-
+able of responses because in doing so, we actually tell the
+attacker that a packet filter is present. It seems a far
+better thing to misguide the attacker into believing that,
+while there's no packet filter running, there's likewise no
+services to break into. This is where fancier blocking
+comes into play.
+
+ When a service isn't running on a Unix system, it nor-
+mally lets the remote host know with some sort of return
+packet. In TCP, this is done with an RST (Reset) packet.
+When blocking a TCP packet, IPF can actually return an RST
+to the origin by using the return-rst keyword.
+
+Where once we did:
+
+ block in log on tun0 proto tcp from any to 20.20.20.0/24 port = 23
+ pass in all
+
+We might now do:
+
+ block return-rst in log proto tcp from any to 20.20.20.0/24 port = 23
+ block in log quick on tun0
+ pass in all
+
+We need two block statements since return-rst only works
+with TCP, and we still want to block protocols such as UDP,
+ICMP, and others. Now that this is done, the remote side
+will get "connection refused" instead of "connection timed
+out".
+
+ It's also possible to send an error message when some-
+body sends a packet to a UDP port on your system. Whereas
+once you might have used:
+
+
+
+
+
+
+
+
+
+ -21-
+
+
+ block in log quick on tun0 proto udp from any to 20.20.20.0/24 port = 111
+
+You could instead use the return-icmp keyword to send a
+reply:
+
+ block return-icmp(port-unr) in log quick on tun0 proto udp from any to 20.20.20.0/24 port = 111
+
+According to TCP/IP Illustrated, port-unreachable is the
+correct ICMP type to return when no service is listening on
+the port in question. You can use any ICMP type you like,
+but port-unreachable is probably your best bet. It's also
+the default ICMP type for return-icmp.
+
+ However, when using return-icmp, you'll notice that
+it's not very stealthy, and it returns the ICMP packet with
+the IP address of the firewall, not the original destination
+of the packet. This was fixed in ipfilter 3.3, and a new
+keyword; return-icmp-as-dest, has been added. The new for-
+mat is:
+
+ block return-icmp-as-dest(port-unr) in log on tun0 proto udp from any to 20.20.20.0/24 port = 111
+
+3.7. Fancy Logging Techniques
+
+ It is important to note that the presence of the log
+keyword only ensures that the packet will be available to
+the ipfilter logging device; /dev/ipl. In order to actu-
+ally see this log information, one must be running the ipmon
+utility (or some other utility that reads from /dev/ipl).
+The typical usage of log is coupled with ipmon -s to log the
+information to syslog. As of ipfilter 3.3, one can now even
+control the logging behavior of syslog by using log level
+keywords, as in rules such as this:
+
+ block in log level auth.info quick on tun0 from 20.20.20.0/24 to any
+ block in log level auth.alert quick on tun0 proto tcp from any to 20.20.20.0/24 port = 21
+
+In addition to this, you can tailor what information is
+being logged. For example, you may not be interested that
+someone attempted to probe your telnet port 500 times, but
+you are interested that they probed you once. You can use
+the log first keyword to only log the first example of a
+packet. Of course, the notion of "first-ness" only applies
+to packets in a specific session, and for the typical
+blocked packet, you will be hard pressed to encounter situa-
+tions where this does what you expect. However, if used in
+conjunction with pass and keep state, this can be a valuable
+keyword for keeping tabs on traffic.
+
+ Another useful thing you can do with the logs is to
+keep track of interesting pieces of the packet in addition
+to the header information normally being logged. Ipfilter
+will give you the first 128 bytes of the packet if you use
+the log body keyword. You should limit the use of body
+
+
+
+
+
+
+
+
+
+ -22-
+
+
+logging, as it makes your logs very verbose, but for certain
+applications, it is often handy to be able to go back and
+take a look at the packet, or to send this data to another
+application that can examine it further.
+
+3.8. Putting It All Together
+
+ So now we have a pretty tight firewall, but it can
+still be tighter. Some of the original ruleset we wiped
+clean is actually very useful. I'd suggest bringing back
+all the anti-spoofing stuff. This leaves us with:
+
+ block in on tun0
+ block in quick on tun0 from 192.168.0.0/16 to any
+ block in quick on tun0 from 172.16.0.0/12 to any
+ block in quick on tun0 from 10.0.0.0/8 to any
+ block in quick on tun0 from 127.0.0.0/8 to any
+ block in quick on tun0 from 0.0.0.0/8 to any
+ block in quick on tun0 from 169.254.0.0/16 to any
+ block in quick on tun0 from 192.0.2.0/24 to any
+ block in quick on tun0 from 204.152.64.0/23 to any
+ block in quick on tun0 from 224.0.0.0/3 to any
+ block in log quick on tun0 from 20.20.20.0/24 to any
+ block in log quick on tun0 from any to 20.20.20.0/32
+ block in log quick on tun0 from any to 20.20.20.255/32
+ pass out quick on tun0 proto tcp/udp from 20.20.20.1/32 to any keep state
+ pass out quick on tun0 proto icmp from 20.20.20.1/32 to any keep state
+ pass in quick on tun0 proto tcp from any to 20.20.20.1/32 port = 80 flags S keep state
+
+3.9. Improving Performance With Rule Groups
+
+ Let's extend our use of our firewall by creating a much
+more complicated, and we hope more applicable to the real
+world, example configuration For this example, we're going
+to change the interface names, and network numbers. Let's
+assume that we have three interfaces in our firewall with
+interfaces xl0, xl1, and xl2.
+
+xl0 is connected to our external network 20.20.20.0/26
+xl1 is connected to our "DMZ" network 20.20.20.64/26
+xl2 is connected to our protected network 20.20.20.128/25
+
+We'll define the entire ruleset in one swoop, since we fig-
+ure that you can read these rules by now:
+
+ block in quick on xl0 from 192.168.0.0/16 to any
+ block in quick on xl0 from 172.16.0.0/12 to any
+ block in quick on xl0 from 10.0.0.0/8 to any
+ block in quick on xl0 from 127.0.0.0/8 to any
+ block in quick on xl0 from 0.0.0.0/8 to any
+ block in quick on xl0 from 169.254.0.0/16 to any
+ block in quick on xl0 from 192.0.2.0/24 to any
+ block in quick on xl0 from 204.152.64.0/23 to any
+ block in quick on xl0 from 224.0.0.0/3 to any
+
+
+
+
+
+
+
+
+
+ -23-
+
+
+ block in log quick on xl0 from 20.20.20.0/24 to any
+ block in log quick on xl0 from any to 20.20.20.0/32
+ block in log quick on xl0 from any to 20.20.20.63/32
+ block in log quick on xl0 from any to 20.20.20.64/32
+ block in log quick on xl0 from any to 20.20.20.127/32
+ block in log quick on xl0 from any to 20.20.20.128/32
+ block in log quick on xl0 from any to 20.20.20.255/32
+ pass out on xl0 all
+
+ pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 80 flags S keep state
+ pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 21 flags S keep state
+ pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 20 flags S keep state
+ pass out quick on xl1 proto tcp from any to 20.20.20.65/32 port = 53 flags S keep state
+ pass out quick on xl1 proto udp from any to 20.20.20.65/32 port = 53 keep state
+ pass out quick on xl1 proto tcp from any to 20.20.20.66/32 port = 53 flags S keep state
+ pass out quick on xl1 proto udp from any to 20.20.20.66/32 port = 53 keep state
+ block out on xl1 all
+ pass in quick on xl1 proto tcp/udp from 20.20.20.64/26 to any keep state
+
+ block out on xl2 all
+ pass in quick on xl2 proto tcp/udp from 20.20.20.128/25 to any keep state
+
+From this arbitarary example, we can already see that our
+ruleset is becoming unwieldy. To make matters worse, as we
+add more specific rules to our DMZ network, we add addi-
+tional tests that must be parsed for every packet, which
+affects the performance of the xl0 <-> xl2 connections. If
+you set up a firewall with a ruleset like this, and you have
+lots of bandwidth and a moderate amount of cpu, everyone
+that has a workstation on the xl2 network is going to come
+looking for your head to place on a platter. So, to keep
+your head <-> torso network intact, you can speed things
+along by creating rule groups. Rule groups allow you to
+write your ruleset in a tree fashion, instead of as a linear
+list, so that if your packet has nothing to do with the set
+of tests (say, all those xl1 rules) those rules will never
+be consulted. It's somewhat like having multiple firewalls
+all on the same machine.
+
+Here's a simple example to get us started:
+
+ block out quick on xl1 all head 10
+ pass out quick proto tcp from any to 20.20.20.64/26 port = 80 flags S keep state group 10
+ block out on xl2 all
+
+In this simplistic example, we can see a small hint of the
+power of the rule group. If the packet is not destined for
+xl1, the head of rule group 10 will not match, and we will
+go on with our tests. If the packet does match for xl1, the
+quick keyword will short-circuit all further processing at
+the root level (rule group 0), and focus the testing on
+rules which belong to group 10; namely, the SYN check for
+80/tcp. In this way, we can re-write the above rules so
+that we can maximize performance of our firewall.
+
+
+
+
+
+
+
+
+
+ -24-
+
+
+ block in quick on xl0 all head 1
+ block in quick on xl0 from 192.168.0.0/16 to any group 1
+ block in quick on xl0 from 172.16.0.0/12 to any group 1
+ block in quick on xl0 from 10.0.0.0/8 to any group 1
+ block in quick on xl0 from 127.0.0.0/8 to any group 1
+ block in quick on xl0 from 0.0.0.0/8 to any group 1
+ block in quick on xl0 from 169.254.0.0/16 to any group 1
+ block in quick on xl0 from 192.0.2.0/24 to any group 1
+ block in quick on xl0 from 204.152.64.0/23 to any group 1
+ block in quick on xl0 from 224.0.0.0/3 to any group 1
+ block in log quick on xl0 from 20.20.20.0/24 to any group 1
+ block in log quick on xl0 from any to 20.20.20.0/32 group 1
+ block in log quick on xl0 from any to 20.20.20.63/32 group 1
+ block in log quick on xl0 from any to 20.20.20.64/32 group 1
+ block in log quick on xl0 from any to 20.20.20.127/32 group 1
+ block in log quick on xl0 from any to 20.20.20.128/32 group 1
+ block in log quick on xl0 from any to 20.20.20.255/32 group 1
+ pass in on xl0 all group 1
+
+ pass out on xl0 all
+
+ block out quick on xl1 all head 10
+ pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 80 flags S keep state group 10
+ pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 21 flags S keep state group 10
+ pass out quick on xl1 proto tcp from any to 20.20.20.64/26 port = 20 flags S keep state group 10
+ pass out quick on xl1 proto tcp from any to 20.20.20.65/32 port = 53 flags S keep state group 10
+ pass out quick on xl1 proto udp from any to 20.20.20.65/32 port = 53 keep state group 10
+ pass out quick on xl1 proto tcp from any to 20.20.20.66/32 port = 53 flags S keep state
+ pass out quick on xl1 proto udp from any to 20.20.20.66/32 port = 53 keep state group 10
+
+ pass in quick on xl1 proto tcp/udp from 20.20.20.64/26 to any keep state
+
+ block out on xl2 all
+
+ pass in quick on xl2 proto tcp/udp from 20.20.20.128/25 to any keep state
+
+Now you can see the rule groups in action. For a host on
+the xl2 network, we can completely bypass all the checks in
+group 10 when we're not communicating with hosts on that
+network.
+
+ Depending on your situation, it may be prudent to group
+your rules by protocol, or various machines, or netblocks,
+or whatever makes it flow smoothly.
+
+3.10. "Fastroute"; The Keyword of Stealthiness
+
+ Even though we're forwarding some packets, and blocking
+other packets, we're typically behaving like a well behaved
+router should by decrementing the TTL on the packet and
+acknowledging to the entire world that yes, there is a hop
+here. But we can hide our presence from inquisitive appli-
+cations like unix traceroute which uses UDP packets with
+various TTL values to map the hops between two sites. If we
+
+
+
+
+
+
+
+
+
+ -25-
+
+
+want incoming traceroutes to work, but we do not want to
+announce the presence of our firewall as a hop, we can do so
+with a rule like this:
+
+ block in quick on xl0 fastroute proto udp from any to any port 33434 >< 33465
+
+The presence of the fastroute keyword will signal ipfilter
+to not pass the packet into the Unix IP stack for routing
+which results in a TTL decrement. The packet will be placed
+gently on the output interface by ipfilter itself and no
+such decrement will happen. Ipfilter will of course use the
+system's routing table to figure out what the appropriate
+output interface really is, but it will take care of the
+actual task of routing itself.
+
+ There's a reason we used block quick in our example,
+too. If we had used pass, and if we had IP Forwarding
+enabled in our kernel, we would end up having two paths for
+a packet to come out of, and we would probably panic our
+kernel.
+
+ It should be noted, however, that most Unix kernels
+(and certainly the ones underlying the systems that ipfilter
+usually runs on) have far more efficient routing code than
+what exists in ipfilter, and this keyword should not be
+thought of as a way to improve the operating speed of your
+firewall, and should only be used in places where stealth is
+an issue.
+
+
+
+
+4. NAT and Proxies
+
+ Outside of the corporate environment, one of the
+biggest enticements of firewall technology to the end user
+is the ability to connect several computers through a common
+external interface, often without the approval, knowledge,
+or even consent of their service provider. To those famil-
+iar with Linux, this concept is called IP Masquerading, but
+to the rest of the world it is known by the more obscure
+name of Network Address Translation, or NAT for short.
+
+4.1. Mapping Many Addresses Into One Address
+
+ The basic use of NAT accomplishes much the same thing
+that Linux's IP Masquerading function does, and it does it
+-----------
+ To be pedantic, what IPFilter provides is really
+called NPAT, for Network and Port Address Transla-
+tion, which means we can change any of the source
+and destination IP Addresses and their source and
+destination ports. True NAT only allows one to
+change the addresses.
+
+
+
+
+
+
+
+
+
+ -26-
+
+
+with one simple rule:
+
+ map tun0 192.168.1.0/24 -> 20.20.20.1/32
+
+Very simple. Whenever a packet goes out the tun0 interface
+with a source address matching the CIDR network mask of
+192.168.1.0/24 this packet will be rewritten within the IP
+stack such that its source address is 20.20.20.1, and it
+will be sent on to its original destination. The system
+also keeps a list of what translated connections are in
+progress so that it can perform the reverse and remap the
+response (which will be directed to 20.20.20.1) to the
+internal host that really generated the packet.
+
+ There is a drawback to the rule we have just written,
+though. In a large number of cases, we do not happen to
+know what the IP address of our outside link is (if we're
+using tun0 or ppp0 and a typical ISP) so it makes setting up
+our NAT tables a chore. Luckily, NAT is smart enough to
+accept an address of 0/32 as a signal that it needs to go
+look at what the address of that interface really is and we
+can rewrite our rule as follows:
+
+ map tun0 192.168.1.0/24 -> 0/32
+
+Now we can load our ipnat rules with impunity and connect to
+the outside world without having to edit anything. You do
+have to run ipf -y to refresh the address if you get discon-
+nected and redial or if your DHCP lease changes, though.
+
+ Some of you may be wondering what happens to the source
+port when the mapping happens. With our current rule, the
+packet's source port is unchanged from the original source
+port. There can be instances where we do not desire this
+behavior; maybe we have another firewall further upstream we
+have to pass through, or perhaps many hosts are trying to
+use the same source port, causing a collision where the rule
+doesn't match and the packet is passed untranslated. ipnat
+helps us here with the portmap keyword:
+
+ map tun0 192.168.1.0/24 -> 0/32 portmap tcp/udp 20000:30000
+
+Our rule now shoehorns all the translated connections (which
+can be tcp, udp, or tcp/udp) into the port range of 20000 to
+30000.
+
+
+
+-----------
+ This is a typical internal address space, since
+it's non-routable on the Real Internet it is often
+used for internal networks. You should still
+block these packets coming in from the outside
+world as discussed earlier.
+
+
+
+
+
+
+
+
+
+ -27-
+
+
+4.2. Mapping Many Addresses Into a Pool of Addresses
+
+ Another use common use of NAT is to take a small stati-
+cally allocated block of addresses and map many computers
+into this smaller address space. This is easy to accom-
+plish using what you already know about the map and portmap
+keywords by writing a rule like so:
+
+ map tun0 192.168.0.0/16 -> 20.20.20.0/24 portmap tcp/udp 20000:60000
+
+Also, there may be instances where a remote application
+requires that multiple connections all come from the same IP
+address. We can help with these situations by telling NAT
+to statically map sessions from a host into the pool of
+addresses and work some magic to choose a port. This uses a
+the keyword map-block as follows:
+
+ map-block tun0 192.168.1.0/24 -> 20.20.20.0/24
+
+4.3. One to One Mappings
+
+ Occasionally it is desirable to have a system with one
+IP address behind the firewall to appear to have a com-
+pletely different IP address. One example of how this would
+work would be a lab of computers which are then attached to
+various networks that are to be put under some kind of test.
+In this example, you would not want to have to reconfigure
+the entire lab when you could place a NAT system in front
+and change the addresses in one simple place. We can do
+that with the bimap keyword, for bidirectional mapping.
+Bimap has some additional protections on it to ensure a
+known state for the connection, whereas the map keyword is
+designed to allocate an address and a source port and
+rewrite the packet and go on with life.
+
+ bimap tun0 192.168.1.1/32 -> 20.20.20.1/32
+
+will accomplish the mapping for one host.
+
+4.4. Spoofing Services
+
+ Spoofing services? What does that have to do with any-
+thing? Plenty. Let's pretend that we have a web server
+running on 20.20.20.5, and since we've gotten increasingly
+suspicious of our network security, we desire to not run
+this server on port 80 since that requires a brief lifespan
+as the root user. But how do we run it on a less
+privledged port of 8000 in this world of "anything dot com"?
+How will anyone find our server? We can use the redirection
+facilities of NAT to solve this problem by instructing it to
+remap any connections destined for 20.20.20.5:80 to really
+point to 20.20.20.5:8000. This uses the rdr keyword:
+
+ rdr tun0 20.20.20.5/32 port 80 -> 192.168.0.5 port 8000
+
+
+
+
+
+
+
+
+
+ -28-
+
+
+We can also specify the protocol here, if we wanted to redi-
+rect a UDP service, instead of a TCP service (which is the
+default). For example, if we had a honeypot on our firewall
+to impersonate the popular Back Orifice for Windows, we
+could shovel our entire network into this one place with a
+simple rule:
+
+ rdr tun0 20.20.20.0/24 port 31337 -> 127.0.0.1 port 31337 udp
+
+An extremely important point must be made about rdr: You
+cannot easily use this feature as a "reflector". E.g:
+
+ rdr tun0 20.20.20.5/32 port 80 -> 20.20.20.6 port 80 tcp
+
+will not work in the situation where .5 and .6 are on the
+same LAN segment. The rdr function is applied to packets
+that enter the firewall on the specified interface. When a
+packet comes in that matches a rdr rule, its destination
+address is then rewritten, it is pushed into ipf for filter-
+ing, and should it successfully run the gauntlet of filter
+rules, it is then sent to the unix routing code. Since this
+packet is still inbound on the same interface that it will
+need to leave the system on to reach a host, the system gets
+confused. Reflectors don't work. Neither does specifying
+the address of the interface the packet just came in on.
+Always remember that rdr destinations must exit out of the
+firewall host on a different interface.
+
+4.5. Transparent Proxy Support; Redirection Made Useful
+
+ Since you're installing a firewall, you may have
+decided that it is prudent to use a proxy for many of your
+outgoing connections so that you can further tighten your
+filter rules protecting your internal network, or you may
+have run into a situation that the NAT mapping process does
+not currently handle properly. This can also be accom-
+plished with a redirection statement:
+
+ rdr xl0 0.0.0.0/0 port 21 -> 127.0.0.1 port 21
+
+This statement says that any packet coming in on the xl0
+interface destined for any address (0.0.0.0/0) on the ftp
+port should be rewritten to connect it with a proxy that is
+running on the NAT system on port 21.
+
+-----------
+ Yes. There is a way to do this. It's so convo-
+luted that I refuse to use it, though. Smart peo-
+ple who require this functionality will transpar-
+ently redirect into something like TIS plug-gw on
+127.0.0.1. Stupid people will set up a dummy loop
+interface pair and double rewrite.
+ This includes 127.0.0.1, by the way. That's on
+lo0. Neat, huh?
+
+
+
+
+
+
+
+
+
+ -29-
+
+
+ This specific example of FTP proxying does lead to some
+complications when used with web browsers or other auto-
+matic-login type clients that are unaware of the require-
+ments of communicating with the proxy. There are patches
+for TIS Firewall Toolkit'sftp-gw to mate it with the nat
+process so that it can determine where you were trying to go
+and automatically send you there. Many proxy packages now
+work in a transparent proxy environment (Squid for example,
+located at http://squid.nlanr.net, works fine.)
+
+ This application of the rdr keyword is often more use-
+ful when you wish to force users to authenticate themselves
+with the proxy. (For example, you desire your engineers to
+be able to surf the web, but you would rather not have your
+call-center staff doing so.)
+
+4.6. Magic Hidden Within NAT; Application Proxies
+
+ Since ipnat provides a method to rewrite packets as
+they traverse the firewall, it becomes a convenient place to
+build in some application level proxies to make up for well
+known deficiencies of that application and typical fire-
+walls. For example; FTP. We can make our firewall pay
+attention to the packets going across it and when it notices
+that it's dealing with an Active FTP session, it can write
+itself some temporary rules, much like what happens with
+keep state, so that the FTP data connection works. To do
+this, we use a rule like so:
+
+ map tun0 192.168.1.0/24 -> 20.20.20.1/32 proxy port ftp ftp/tcp
+
+You must always remember to place this proxy rule before any
+portmap rules, otherwise when portmap comes along and
+matches the packet and rewrites it before the proxy gets a
+chance to work on it. Remember that ipnat rules are first-
+match.
+
+ There also exist proxies for "rcmd" (which we suspect
+is berkeley r-* commands which should be forbidden anyway,
+thus we haven't looked at what this proxy does) and "raudio"
+for Real Audio PNM streams. Likewise, both of these rules
+should be put before any portmap rules, if you're doing NAT.
+
+
+
+5. Loading and Manipulating Filter Rules; The ipf Utility
+
+ IP Filter rules are loaded by using the ipf utility.
+The filter rules can be stored in any file on the system,
+but typically these rules are stored in /etc/ipf.rules,
+/usr/local/etc/ipf.rules, or /etc/opt/ipf/ipf.rules.
+
+ IP Filter has two sets of rules, the active set and the
+inactive set. By default, all operations are performed on
+
+
+
+
+
+
+
+
+
+ -30-
+
+
+the active set. You can manipulate the inactive set by
+adding -I to the ipf command line. The two sets can be
+toggled by using the -s command line option. This is very
+useful for testing new rule sets without wiping out the old
+rule set.
+
+ Rules can also be removed from the list instead of
+added by using the -r command line option, but it is gener-
+ally a safer idea to flush the rule set that you're working
+on with -F and completely reload it when making changes.
+
+ In summary, the easiest way to load a rule set is ipf
+-Fa -f /etc/ipf.rules. For more complicated manipulations
+of the rule set, please see the ipf(1) man page.
+
+6. Loading and Manipulating NAT Rules; The ipnat Utility
+
+ NAT rules are loaded by using the ipnat utility. The
+NAT rules can be stored in any file on the system, but typi-
+cally these rules are stored in /etc/ipnat.rules,
+/usr/local/etc/ipnat.rules, or /etc/opt/ipf/ipnat.rules.
+
+ Rules can also be removed from the list instead of
+added by using the -r command line option, but it is gener-
+ally a safer idea to flush the rule set that you're working
+on with -C and completely reload it when making changes.
+Any active mappings are not affected by -C, and can be
+removed with -F.
+
+ NAT rules and active mappings can be examined with the
+-l command line option.
+
+ In summary, the easiest way to load a NAT rule set is
+ipnat -CF -f /etc/ipnat.rules.
+
+7. Monitoring and Debugging
+
+ There will come a time when you are interested in what
+your firewall is actually doing, and ipfilter would be
+incomplete if it didn't have a full suite of status monitor-
+ing tools.
+
+7.1. The ipfstat utility
+
+ In its simplest form, ipfstat displays a table of
+interesting data about how your firewall is performing, such
+as how many packets have been passed or blocked, if they
+were logged or not, how many state entries have been made,
+and so on. Here's an example of something you might see
+from running the tool:
+
+ # ipfstat
+ input packets: blocked 99286 passed 1255609 nomatch 14686 counted 0
+ output packets: blocked 4200 passed 1284345 nomatch 14687 counted 0
+
+
+
+
+
+
+
+
+
+ -31-
+
+
+ input packets logged: blocked 99286 passed 0
+ output packets logged: blocked 0 passed 0
+ packets logged: input 0 output 0
+ log failures: input 3898 output 0
+ fragment state(in): kept 0 lost 0
+ fragment state(out): kept 0 lost 0
+ packet state(in): kept 169364 lost 0
+ packet state(out): kept 431395 lost 0
+ ICMP replies: 0 TCP RSTs sent: 0
+ Result cache hits(in): 1215208 (out): 1098963
+ IN Pullups succeeded: 2 failed: 0
+ OUT Pullups succeeded: 0 failed: 0
+ Fastroute successes: 0 failures: 0
+ TCP cksum fails(in): 0 (out): 0
+ Packet log flags set: (0)
+ none
+
+ipfstat is also capable of showing you your current rule
+list. Using the -i or the -o flag will show the currently
+loaded rules for in or out, respectively. Adding a -h to
+this will provide more useful information at the same time
+by showing you a "hit count" on each rule. For example:
+
+ # ipfstat -ho
+ 2451423 pass out on xl0 from any to any
+ 354727 block out on ppp0 from any to any
+ 430918 pass out quick on ppp0 proto tcp/udp from 20.20.20.0/24 to any keep state keep frags
+
+From this, we can see that perhaps there's something abnor-
+mal going on, since we've got a lot of blocked packets out-
+bound, even with a very permissive pass out rule. Something
+here may warrant further investigation, or it may be func-
+tioning perfectly by design. ipfstat can't tell you if your
+rules are right or wrong, it can only tell you what is hap-
+pening because of your rules.
+
+To further debug your rules, you may want to use the -n
+flag, which will show the rule number next to each rule.
+
+ # ipfstat -on
+ @1 pass out on xl0 from any to any
+ @2 block out on ppp0 from any to any
+ @3 pass out quick on ppp0 proto tcp/udp from 20.20.20.0/24 to any keep state keep frags
+
+The final piece of really interesting information that ipfs-
+tat can provide us is a dump of the state table. This is
+done with the -s flag:
+
+ # ipfstat -s
+ 281458 TCP
+ 319349 UDP
+ 0 ICMP
+ 19780145 hits
+ 5723648 misses
+
+
+
+
+
+
+
+
+
+ -32-
+
+
+ 0 maximum
+ 0 no memory
+ 1 active
+ 319349 expired
+ 281419 closed
+ 100.100.100.1 -> 20.20.20.1 ttl 864000 pass 20490 pr 6 state 4/4
+ pkts 196 bytes 17394 987 -> 22 585538471:2213225493 16592:16500
+ pass in log quick keep state
+ pkt_flags & b = 2, pkt_options & ffffffff = 0
+ pkt_security & ffff = 0, pkt_auth & ffff = 0
+
+Here we see that we have one state entry for a TCP connec-
+tion. The output will vary slightly from version to ver-
+sion, but the basic information is the same. We can see in
+this connection that we have a fully established connection
+(represented by the 4/4 state. Other states are incomplete
+and will be documented fully later.) We can see that the
+state entry has a time to live of 240 hours, which is an
+absurdly long time, but is the default for an established
+TCP connection. This TTL counter is decremented every sec-
+ond that the state entry is not used, and will finally
+result in the connection being purged if it has been left
+idle. The TTL is also reset to 864000 whenever the state
+IS used, ensuring that the entry will not time out while it
+is being actively used. We can also see that we have passed
+196 packets consisting of about 17kB worth of data over this
+connection. We can see the ports for both endpoints, in
+this case 987 and 22; which means that this state entry rep-
+resents a connection from 100.100.100.1 port 987 to
+20.20.20.1 port 22. The really big numbers in the second
+line are the TCP sequence numbers for this connection, which
+helps to ensure that someone isn't easily able to inject a
+forged packet into your session. The TCP window is also
+shown. The third line is a synopsis of the implicit rule
+that was generated by the keep state code, showing that this
+connection is an inbound connection.
+
+7.2. The ipmon utility
+
+ ipfstat is great for collecting snapshots of what's
+going on on the system, but it's often handy to have some
+kind of log to look at and watch events as they happen in
+time. ipmon is this tool. ipmon is capable of watching
+the packet log (as created with the log keyword in your
+rules), the state log, or the nat log, or any combination of
+the three. This tool can either be run in the foreground,
+or as a daemon which logs to syslog or a file. If we wanted
+to watch the state table in action, ipmon -o S would show
+this:
+
+ # ipmon -o S
+ 01/08/1999 15:58:57.836053 STATE:NEW 100.100.100.1,53 -> 20.20.20.15,53 PR udp
+ 01/08/1999 15:58:58.030815 STATE:NEW 20.20.20.15,123 -> 128.167.1.69,123 PR udp
+ 01/08/1999 15:59:18.032174 STATE:NEW 20.20.20.15,123 -> 128.173.14.71,123 PR udp
+
+
+
+
+
+
+
+
+
+ -33-
+
+
+ 01/08/1999 15:59:24.570107 STATE:EXPIRE 100.100.100.1,53 -> 20.20.20.15,53 PR udp Pkts 4 Bytes 356
+ 01/08/1999 16:03:51.754867 STATE:NEW 20.20.20.13,1019 -> 100.100.100.10,22 PR tcp
+ 01/08/1999 16:04:03.070127 STATE:EXPIRE 20.20.20.13,1019 -> 100.100.100.10,22 PR tcp Pkts 63 Bytes 4604
+
+Here we see a state entry for an external dns request off
+our nameserver, two xntp pings to well-known time servers,
+and a very short lived outbound ssh connection.
+
+ ipmon is also capable of showing us what packets have
+been logged. For example, when using state, you'll often
+run into packets like this:
+
+ # ipmon -o I
+ 15:57:33.803147 ppp0 @0:2 b 100.100.100.103,443 -> 20.20.20.10,4923 PR tcp len 20 1488 -A
+
+What does this mean? The first field is obvious, it's a
+timestamp. The second field is also pretty obvious, it's
+the interface that this event happened on. The third field
+@0:2 is something most people miss. This is the rule that
+caused the event to happen. Remember ipfstat -in? If you
+wanted to know where this came from, you could look there
+for rule 2 in rule group 0. The fourth field, the little
+"b" says that this packet was blocked, and you'll generally
+ignore this unless you're logging passed packets as well,
+which would be a little "p" instead. The fifth and sixth
+fields are pretty self-explanatory, they say where this
+packet came from and where it was going. The seventh ("PR")
+and eighth fields tell you the protocol and the ninth field
+tells you the size of the packet. The last part, the "-A"
+in this case, tells you the flags that were on the packet;
+This one was an ACK packet. Why did I mention state ear-
+lier? Due to the often laggy nature of the Internet, some-
+times packets will be regenerated. Sometimes, you'll get
+two copies of the same packet, and your state rule which
+keeps track of sequence numbers will have already seen this
+packet, so it will assume that the packet is part of a dif-
+ferent connection. Eventually this packet will run into a
+real rule and have to be dealt with. You'll often see the
+last packet of a session being closed get logged because the
+keep state code has already torn down the connection before
+the last packet has had a chance to make it to your fire-
+wall. This is normal, do not be alarmed. Another example
+packet that might be logged:
+
+ 12:46:12.470951 xl0 @0:1 S 20.20.20.254 -> 255.255.255.255 PR icmp len 20 9216 icmp 9/0
+
+-----------
+ For a technical presentation of the IP Filter
+stateful inspection engine, please see the white
+paper Real Stateful TCP Packet Filtering in IP
+Filter, by Guido van Rooij. This paper may be
+found at
+<http://www.iae.nl/users/guido/papers/tcp_filter-
+ing.ps.gz>
+
+
+
+
+
+
+
+
+
+ -34-
+
+
+This is an ICMP router discovery broadcast. We can tell by
+the ICMP type 9/0.
+
+Finally, ipmon also lets us look at the NAT table in action.
+
+ # ipmon -o N
+ 01/08/1999 05:30:02.466114 @2 NAT:RDR 20.20.20.253,113 <- -> 20.20.20.253,113 [100.100.100.13,45816]
+ 01/08/1999 05:30:31.990037 @2 NAT:EXPIRE 20.20.20.253,113 <- -> 20.20.20.253,113 [100.100.100.13,45816] Pkts 10 Bytes 455
+
+This would be a redirection to an identd that lies to pro-
+vide ident service for the hosts behind our NAT, since they
+are typically unable to provide this service for themselves
+with ordinary natting.
+
+
+
+
+8. Specific Applications of IP Filter - Things that don't
+fit, but should be mentioned anyway.
+
+8.1. Keep State With Servers and Flags.
+
+ Keeping state is a good thing, but it's quite easy to
+make a mistake in the direction that you want to keep state
+in. Generally, you want to have a keep state keyword on
+the first rule that interacts with a packet for the connec-
+tion. One common mistake that is made when mixing state
+tracking with filtering on flags is this:
+
+ block in all
+ pass in quick proto tcp from any to 20.20.20.20/32 port = 23 flags S
+ pass out all keep state
+
+That certainly appears to allow a connection to be created
+to the telnet server on 20.20.20.20, and the replies to go
+back. If you try using this rule, you'll see that it does
+work--Momentarily. Since we're filtering for the SYN flag,
+the state entry never fully gets completed, and the default
+time to live for an incomplete state is 60 seconds.
+
+We can solve this by rewriting the rules in one of two ways:
+
+1)
+
+ block in all
+ pass in quick proto tcp from any to 20.20.20.20/32 port = 23 keep state
+ block out all
+
+or:
+
+2)
+
+ block in all
+ pass in quick proto tcp from any to 20.20.20.20/32 port = 23 flags S keep state
+
+
+
+
+
+
+
+
+
+ -35-
+
+
+ pass out all keep state
+
+Either of these sets of rules will result in a fully estab-
+lished state entry for a connection to your server.
+
+8.2. Coping With FTP
+
+ FTP is one of those protocols that you just have to sit
+back and ask "What the heck were they thinking?" FTP has
+many problems that the firewall administrator needs to deal
+with. What's worse, the problems the administrator must
+face are different between making ftp clients work and mak-
+ing ftp servers work.
+
+ Within the FTP protocol, there are two forms of data
+transfer, called active and passive. Active transfers are
+those where the server connects to an open port on the
+client to send data. Conversely, passive transfers are
+those where the client connects to the server to receive
+data.
+
+8.2.1. Running an FTP Server
+
+ In running an FTP server, handling Active FTP sessions
+is easy to setup. At the same time, handling Passive FTP
+sessions is a big problem. First we'll cover how to handle
+Active FTP, then move on to Passive. Generally, we can han-
+dle Active FTP sessions like we would an incoming HTTP or
+SMTP connection; just open the ftp port and let keep state
+do the rest:
+
+ pass in quick proto tcp from any to 20.20.20.20/32 port = 21 flags S keep state
+ pass out proto tcp all keep state
+
+These rules will allow Active FTP sessions, the most common
+type, to your ftp server on 20.20.20.20.
+
+ The next challenge becomes handling Passive FTP connec-
+tions. Web browsers default to this mode, so it's becoming
+quite popular and as such it should be supported. The prob-
+lem with passive connections are that for every passive con-
+nection, the server starts listening on a new port (usually
+above 1023). This is essentially like creating a new
+unknown service on the server. Assuming we have a good
+firewall with a default-deny policy, that new service will
+be blocked, and thus Active FTP sessions are broken. Don't
+despair! There's hope yet to be had.
+
+ A person's first inclination to solving this problem
+might be to just open up all ports above 1023. In truth,
+this will work:
+
+ pass in quick proto tcp from any to 20.20.20.20/32 port > 1023 flags S keep state
+ pass out proto tcp all keep state
+
+
+
+
+
+
+
+
+
+ -36-
+
+
+This is somewhat unsatisfactory, though. By letting every-
+thing above 1023 in, we actually open ourselves up for a
+number of potential problems. While 1-1023 is the desig-
+nated area for server services to run, numerous programs
+decided to use numbers higher than 1023, such as nfsd and X.
+
+ The good news is that your FTP server gets to decide
+which ports get assigned to passive sessions. This means
+that instead of opening all ports above 1023, you can allo-
+cate ports 15001-19999 as ftp ports and only open that range
+of your firewall up. In wu-ftpd, this is done with the pas-
+sive ports option in ftpaccess. Please see the man page on
+ftpaccess for details in wu-ftpd configuration. On the
+ipfilter side, all we need do is setup corresponding rules:
+
+ pass in quick proto tcp from any to 20.20.20.20/32 port 15000 >< 20000 flags S keep state
+ pass out proto tcp all keep state
+
+If even this solution doesn't satisfy you, you can always
+hack IPF support into your FTP server, or FTP server support
+into IPF.
+
+8.2.2. Running an FTP Client
+
+ While FTP server support is still less than perfect in
+IPF, FTP client support has been working well since 3.3.3.
+As with FTP servers, there are two types of ftp client
+transfers: passive and active.
+
+ The simplest type of client transfer from the fire-
+wall's standpoint is the passive transfer. Assuming you're
+keeping state on all outbound tcp sessions, passive trans-
+fers will work already. If you're not doing this already,
+please consider the following:
+
+ pass out proto tcp all keep state
+
+The second type of client transfer, active, is a bit more
+troublesome, but nonetheless a solved problem. Active
+transfers cause the server to open up a second connection
+back to the client for data to flow through. This is nor-
+mally a problem when there's a firewall in the middle, stop-
+ping outside connections from coming back in. To solve
+this, ipfilter includes an ipnat proxy which temporarily
+opens up a hole in the firewall just for the FTP server to
+get back to the client. Even if you're not using ipnat to
+do nat, the proxy is still effective. The following rules
+is the bare minimum to add to the ipnat configuration file
+(ep0 should be the interface name of the outbound network
+connection):
+
+ map ep0 0/0 -> 0/32 proxy port 21 ftp/tcp
+
+
+
+
+
+
+
+
+
+
+
+ -37-
+
+
+For more details on ipfilter's internal proxies, see section
+3.6
+
+8.3. Assorted Kernel Variables
+
+ There are some useful kernel tunes that either need to
+be set for ipf to function, or are just generally handy to
+know about for building firewalls. The first major one you
+must set is to enable IP Forwarding, otherwise ipf will do
+very little, as the underlying ip stack won't actually route
+packets.
+
+IP Forwarding:
+
+openbsd:
+ net.inet.ip.forwarding=1
+
+
+freebsd:
+ net.inet.ip.forwarding=1
+
+
+netbsd:
+ net.inet.ip.forwarding=1
+
+
+solaris:
+ ndd -set /dev/ip ip_forwarding 1
+
+Ephemeral Port Adjustment:
+
+openbsd:
+ net.inet.ip.portfirst = 25000
+
+
+freebsd:
+ net.inet.ip.portrange.first = 25000 net.inet.ip.por-
+ trange.last = 49151
+
+
+netbsd:
+ net.inet.ip.anonportmin = 25000 net.inet.ip.anonportmax
+ = 49151
+
+
+solaris:
+ ndd -set /dev/tcp tcp_smallest_anon_port 25000
+ ndd -set /dev/tcp tcp_largest_anon_port 65535
+
+Other Useful Values:
+
+openbsd:
+ net.inet.ip.sourceroute = 0
+ net.inet.ip.directed-broadcast = 0
+
+
+
+
+
+
+
+
+
+ -38-
+
+
+freebsd:
+ net.inet.ip.sourceroute=0
+ net.ip.accept_sourceroute=0
+
+
+netbsd:
+ net.inet.ip.allowsrcrt=0
+ net.inet.ip.forwsrcrt=0
+ net.inet.ip.directed-broadcast=0
+ net.inet.ip.redirect=0
+
+
+solaris:
+ ndd -set /dev/ip ip_forward_directed_broadcasts 0
+ ndd -set /dev/ip ip_forward_src_routed 0
+ ndd -set /dev/ip ip_respond_to_echo_broadcast 0
+
+In addition, freebsd has some ipf specific sysctl variables.
+
+ net.inet.ipf.fr_flags: 0
+ net.inet.ipf.fr_pass: 514
+ net.inet.ipf.fr_active: 0
+ net.inet.ipf.fr_tcpidletimeout: 864000
+ net.inet.ipf.fr_tcpclosewait: 60
+ net.inet.ipf.fr_tcplastack: 20
+ net.inet.ipf.fr_tcptimeout: 120
+ net.inet.ipf.fr_tcpclosed: 1
+ net.inet.ipf.fr_udptimeout: 120
+ net.inet.ipf.fr_icmptimeout: 120
+ net.inet.ipf.fr_defnatage: 1200
+ net.inet.ipf.fr_ipfrttl: 120
+ net.inet.ipf.ipl_unreach: 13
+ net.inet.ipf.ipl_inited: 1
+ net.inet.ipf.fr_authsize: 32
+ net.inet.ipf.fr_authused: 0
+ net.inet.ipf.fr_defaultauthage: 600
+
+
+
+
+9. Fun with ipf!
+
+ This section doesn't necessarily teach you anything new
+about ipf, but it may raise an issue or two that you haven't
+yet thought up on your own, or tickle your brain in a way
+that you invent something interesting that we haven't
+thought of.
+
+9.1. Localhost Filtering
+
+ A long time ago at a university far, far away, Wietse
+Venema created the tcp-wrapper package, and ever since, it's
+been used to add a layer of protection to network services
+all over the world. This is good. But, tcp-wrappers have
+
+
+
+
+
+
+
+
+
+ -39-
+
+
+flaws. For starters, they only protect TCP services, as the
+name suggests. Also, unless you run your service from
+inetd, or you have specifically compiled it with libwrap and
+the appropriate hooks, your service isn't protected. This
+leaves gigantic holes in your host security. We can plug
+these up by using ipf on the local host. For example, my
+laptop often gets plugged into or dialed into networks that
+I don't specifically trust, and so, I use the following rule
+set:
+
+ pass in quick on lo0 all
+ pass out quick on lo0 all
+
+ block in log all
+ block out all
+
+ pass in quick proto tcp from any to any port = 113 flags S keep state
+ pass in quick proto tcp from any to any port = 22 flags S keep state
+ pass in quick proto tcp from any port = 20 to any port 39999 >< 45000 flags S keep state
+
+ pass out quick proto icmp from any to any keep state
+ pass out quick proto tcp/udp from any to any keep state keep frags
+
+It's been like that for quite a while, and I haven't suf-
+fered any pain or anguish as a result of having ipf loaded
+up all the time. If I wanted to tighten it up more, I could
+switch to using the NAT ftp proxy and I could add in some
+rules to prevent spoofing. But even as it stands now, this
+box is far more restrictive about what it presents to the
+local network and beyond than the typical host does. This
+is a good thing if you happen to run a machine that allows a
+lot of users on it, and you want to make sure one of them
+doesn't happen to start up a service they wern't supposed
+to. It won't stop a malicious hacker with root access from
+adjusting your ipf rules and starting a service anyway, but
+it will keep the "honest" folks honest, and your weird ser-
+vices safe, cozy and warm even on a malicious LAN. A big
+win, in my opinion. Using local host filtering in addition
+to a somewhat less-restrictive "main firewall" machine can
+solve many performance issues as well as political night-
+mares like "Why doesn't ICQ work?" and "Why can't I put a
+web server on my own workstation! It's MY WORKSTATION!!"
+Another very big win. Who says you can't have security and
+convienence at the same time?
+
+9.2. What Firewall? Transparent filtering.
+
+ One major concern in setting up a firewall is the
+integrity of the firewall itself. Can somebody break into
+your firewall, thereby subverting its ruleset? This is a
+common problem administrators must face, particularly when
+they're using firewall solutions on top of their Unix/NT
+machines. Some use it as an argument for blackbox hardware
+solutions, under the flawed notion that inherent obscurity
+
+
+
+
+
+
+
+
+
+ -40-
+
+
+of their closed system increases their security. We have a
+better way.
+
+ Many network admins are familiar with the common ether-
+net bridge. This is a device that connects two separate
+ethernet segments to make them one. An ethernet bridge is
+typically used to connect separate buildings, switch network
+speeds, and extend maximum wire lengths. Hubs and switches
+are common bridges, sometimes they're just 2 ported devices
+called repeaters. Recent versions of Linux, OpenBSD,
+NetBSD, and FreeBSD include code to convert $1000 PCs into
+$10 bridges, too! What all bridges tend to have in common
+is that though they sit in the middle of a connection
+between two machines, the two machines don't know the bridge
+is there. Enter ipfilter and OpenBSD.
+
+ Ethernet bridging takes place at Layer2 on the ISO
+stack. IP takes place on Layer3. IP Filter in primarily
+concerned with Layer3, but dabbles in Layer2 by working with
+interfaces. By mixing IP filter with OpenBSD's bridge
+device, we can create a firewall that is both invisible and
+unreachable. The system needs no IP address, it doesn't
+even need to reveal its ethernet address. The only telltale
+sign that the filter might be there is that latency is some-
+what higher than a piece of cat5 would normally make it, and
+that packets don't seem to make it to their final destina-
+tion.
+
+ The setup for this sort of ruleset is surprisingly sim-
+ple, too. In OpenBSD, the first bridge device is named
+bridge0. Say we have two ethernet cards in our machine as
+well, xl0 and xl1. To turn this machine into a bridge, all
+one need do is enter the following three commands:
+
+ brconfig bridge0 add xl0 add xl1 up
+ ifconfig xl0 up
+ ifconfig xl1 up
+
+At ths point, all traffic ariving on xl0 is sent out xl1 and
+all traffic on xl1 is sent out xl0. You'll note that nei-
+ther interface has been assigned an IP address, nor do we
+need assign one. All things considered, it's likely best we
+not add one at all.
+
+ Rulesets behave essentially the as the always have.
+Though there is a bridge0 interface, we don't filter based
+on it. Rules continue to be based upon the particular
+interface we're using, making it important which network
+cable is plugged into which network card in the back of the
+machine. Let's start with some basic filtering to illis-
+trate what's happened. Assume the network used to look like
+this:
+
+
+
+
+
+
+
+
+
+
+
+ -41-
+
+
+ 20.20.20.1 <---------------------------------> 20.20.20.0/24 network hub
+
+That is, we have a router at 20.20.20.1 connected to the
+20.20.20.0/24 network. All packets from the 20.20.20.0/24
+network go through 20.20.20.1 to get to the outside world
+and vice versa. Now we add the Ipf Bridge:
+
+ 20.20.20.1 <-------/xl0 IpfBridge xl1/-------> 20.20.20.0/24 network hub
+
+We also have the following ruleset loaded on the IpfBridge
+host:
+
+ pass in quick all
+ pass out quick all
+
+With this ruleset loaded, the network is functionally iden-
+tical. As far as the 20.20.20.1 router is concerned, and as
+far as the 20.20.20.0/24 hosts are concerned, the two net-
+work diagrams are identical. Now let's change the ruleset
+some:
+
+ block in quick on xl0 proto icmp
+ pass in quick all
+ pass out quick all
+
+Still, 20.20.20.1 and 20.20.20.0/24 think the network is
+identical, but if 20.20.20.1 attempts to ping 20.20.20.2, it
+will never get a reply. What's more, 20.20.20.2 won't even
+get the packet in the first place. IPfilter will intercept
+the packet before it even gets to the other end of the vir-
+tual wire. We can put a bridged filter anywhere. Using
+this method we can shrink the network trust circle down an
+individual host level (given enough ethernet cards:-)
+
+ Blocking icmp from the world seems kind of silly, espe-
+cially if you're a sysadmin and like pinging the world, to
+traceroute, or to resize your MTU. Let's construct a better
+ruleset and take advantage of the original key feature of
+ipf: stateful inspection.
+
+ pass in quick on xl1 proto tcp keep state
+ pass in quick on xl1 proto udp keep state
+ pass in quick on xl1 proto icmp keep state
+ block in quick on xl0
+
+In this situation, the 20.20.20.0/24 network (perhaps more
+aptly called the xl1 network) can now reach the outside
+world, but the outside world can't reach it, and it can't
+figure out why, either. The router is accessible, the hosts
+are active, but the outside world just can't get in. Even
+if the router itself were compromised, the firewall would
+still be active and successful.
+
+
+
+
+
+
+
+
+
+
+
+ -42-
+
+
+ So far, we've been filtering by interface and protocol
+only. Even though bridging is concerned layer2, we can
+still discriminate based on IP address. Normally we have a
+few services running, so our ruleset may look like this:
+
+ pass in quick on xl1 proto tcp keep state
+ pass in quick on xl1 proto udp keep state
+ pass in quick on xl1 proto icmp keep state
+ block in quick on xl1 # nuh-uh, we're only passing tcp/udp/icmp sir.
+ pass in quick on xl0 proto udp from any to 20.20.20.2/32 port=53 keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.2/32 port=53 flags S keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.3/32 port=25 flags S keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.7/32 port=80 flags S keep state
+ block in quick on xl0
+
+Now we have a network where 20.20.20.2 is a zone serving
+name server, 20.20.20.3 is an incoming mail server, and
+20.20.20.7 is a web server.
+
+ Bridged IP Filter is not yet perfect, we must confess.
+
+ First, You'll note that all the rules are setup using
+the in direction instead of a combination of in and out.
+This is because the out direction is presently unimplemented
+with bridging in OpenBSD. This was originally done to pre-
+vent vast performance drops using multiple interfaces. Work
+has been done in speeding it up, but it remains unimple-
+mented. If you really want this feature, you might try your
+hand at working on the code or asking the OpenBSD people how
+you can help.
+
+ Second, using IP Filter with bridging makes the use of
+IPF's NAT features inadvisable, if not downright dangerous.
+The first problem is that it would give away that there's a
+filtering bridge. The second problem would be that the
+bridge has no IP address to masquerade with, which will most
+assuredly lead to confusion and perhaps a kernel panic to
+boot. You can, of course, put an IP address on the outbound
+interface to make NAT work, but part of the glee of bridging
+is thus diminished.
+
+9.2.1. Using Transparent Filtering to Fix Network Design
+Mistakes
+
+ Many organizations started using IP well before they
+thought a firewall or a subnet would be a good idea. Now
+they have class-C sized networks or larger that include all
+their servers, their workstations, their routers, coffee
+makers, everything. The horror! Renumbering with proper
+subnets, trust levels, filters, and so are in both time con-
+suming and expensive. The expense in hardware and man hours
+alone is enough to make most organizations unwilling to
+really solve the problem, not to mention the downtime
+involved. The typical problem network looks like this:
+
+
+
+
+
+
+
+
+
+ -43-
+
+
+ 20.20.20.1 router 20.20.20.6 unix server
+ 20.20.20.2 unix server 20.20.20.7 nt workstation
+ 20.20.20.3 unix server 20.20.20.8 nt server
+ 20.20.20.4 win98 workstation 20.20.20.9 unix workstation
+ 20.20.20.5 intelligent switch 20.20.20.10 win95 workstation
+
+Only it's about 20 times larger and messier and frequently
+undocumented. Ideally, you'd have all the trusting servers
+in one subnet, all the work- stations in another, and the
+network switches in a third. Then the router would filter
+packets between the subnets, giving the workstations limited
+access to the servers, nothing access to the switches, and
+only the sysadmin's workstation access to the coffee pot.
+I've never seen a class-C sized network with such coherence.
+IP Filter can help.
+
+ To start with, we're going to separate the router, the
+workstations, and the servers. To do this we're going to
+need 2 hubs (or switches) which we probably already have,
+and an IPF machine with 3 ethernet cards. We're going to
+put all the servers on one hub and all the workstations on
+the other. Normally we'd then connect the hubs to each
+other, then to the router. Instead, we're going to plug the
+router into IPF's xl0 interface, the servers into IPF's xl1
+interface, and the workstations into IPF's xl2 interface.
+Our network diagram looks something like this:
+
+ | 20.20.20.2 unix server
+ router (20.20.20.1) ____________| 20.20.20.3 unix server
+ | / | 20.20.20.6 unix server
+ | /xl1 | 20.20.20.7 nt server
+ ------------/xl0 IPF Bridge <
+ xl2 | 20.20.20.4 win98 workstation
+ ____________| 20.20.20.8 nt workstation
+ | 20.20.20.9 unix workstation
+ | 20.20.20.10 win95 workstation
+
+Where once there was nothing but interconnecting wires, now
+there's a filtering bridge that not a single host needs to
+be modified to take advantage of. Presumably we've already
+enabled bridging so the network is behaving perfectly nor-
+mally. Further, we're starting off with a ruleset much like
+our last ruleset:
+
+ pass in quick on xl0 proto udp from any to 20.20.20.2/32 port=53 keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.2/32 port=53 flags S keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.3/32 port=25 flags S keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.7/32 port=80 flags S keep state
+ block in quick on xl0
+ pass in quick on xl1 proto tcp keep state
+ pass in quick on xl1 proto udp keep state
+ pass in quick on xl1 proto icmp keep state
+ block in quick on xl1 # nuh-uh, we're only passing tcp/udp/icmp sir.
+ pass in quick on xl2 proto tcp keep state
+
+
+
+
+
+
+
+
+
+ -44-
+
+
+ pass in quick on xl2 proto udp keep state
+ pass in quick on xl2 proto icmp keep state
+ block in quick on xl2 # nuh-uh, we're only passing tcp/udp/icmp sir.
+
+Once again, traffic coming from the router is restricted to
+DNS, SMTP, and HTTP. At the moment, the servers and the
+workstations can exchange traffic freely. Depending on what
+kind of organization you are, there might be something about
+this network dynamic you don't like. Perhaps you don't want
+your workstations getting access to your servers at all?
+Take the xl2 ruleset of:
+
+ pass in quick on xl2 proto tcp keep state
+ pass in quick on xl2 proto udp keep state
+ pass in quick on xl2 proto icmp keep state
+ block in quick on xl2 # nuh-uh, we're only passing tcp/udp/icmp sir.
+
+And change it to:
+
+ block in quick on xl2 from any to 20.20.20.0/24
+ pass in quick on xl2 proto tcp keep state
+ pass in quick on xl2 proto udp keep state
+ pass in quick on xl2 proto icmp keep state
+ block in quick on xl2 # nuh-uh, we're only passing tcp/udp/icmp sir.
+
+Perhaps you want them to just get to the servers to get and
+send their mail with IMAP? Easily done:
+
+ pass in quick on xl2 proto tcp from any to 20.20.20.3/32 port=25
+ pass in quick on xl2 proto tcp from any to 20.20.20.3/32 port=143
+ block in quick on xl2 from any to 20.20.20.0/24
+ pass in quick on xl2 proto tcp keep state
+ pass in quick on xl2 proto udp keep state
+ pass in quick on xl2 proto icmp keep state
+ block in quick on xl2 # nuh-uh, we're only passing tcp/udp/icmp sir.
+
+Now your workstations and servers are protected from the
+outside world, and the servers are protected from your work-
+stations.
+
+ Perhaps the opposite is true, maybe you want your work-
+stations to be able to get to the servers, but not the out-
+side world. After all, the next generation of exploits is
+breaking the clients, not the servers. In this case, you'd
+change the xl2 rules to look more like this:
+
+ pass in quick on xl2 from any to 20.20.20.0/24
+ block in quick on xl2
+
+Now the servers have free reign, but the clients can only
+connect to the servers. We might want to batten down the
+hatches on the servers, too:
+
+ pass in quick on xl1 from any to 20.20.20.0/24
+
+
+
+
+
+
+
+
+
+ -45-
+
+
+ block in quick on xl1
+
+With the combination of these two, the clients and servers
+can talk to each other, but neither can access the outside
+world (though the outside world can get to the few services
+from earlier). The whole ruleset would look something like
+this:
+
+ pass in quick on xl0 proto udp from any to 20.20.20.2/32 port=53 keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.2/32 port=53 flags S keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.3/32 port=25 flags S keep state
+ pass in quick on xl0 proto tcp from any to 20.20.20.7/32 port=80 flags S keep state
+ block in quick on xl0
+ pass in quick on xl1 from any to 20.20.20.0/24
+ block in quick on xl1
+ pass in quick on xl2 from any to 20.20.20.0/24
+ block in quick on xl2
+
+So remember, when your network is a mess of twisty IP
+addresses and machine classes, transparent filtered bridges
+can solve a problem that would otherwise be lived with and
+perhaps someday exploited.
+
+9.3. Drop-Safe Logging With dup-to and to.
+
+ Until now, we've been using the filter to drop packets.
+Instead of dropping them, let's consider passing them on to
+another system that can do something useful with this infor-
+mation beyond the logging we can perform with ipmon. Our
+firewall system, be it a bridge or a router, can have as
+many interfaces as we can cram into the system. We can use
+this information to create a "drop-safe" for our packets. A
+good example of a use for this would be to implement an
+intrusion detection network. For starters, it might be
+desirable to hide the presence of our intrusion detection
+systems from our real network so that we can keep them from
+being detected.
+
+ Before we get started, there are some operational char-
+acteristics that we need to make note of. If we are only
+going to deal with blocked packets, we can use either the to
+keyword or the fastroute keyword. (We'll cover the differ-
+ences between these two later) If we're going to pass the
+packets like we normally would, we need to make a copy of
+the packet for our drop-safe log with the dup-to keyword.
+
+9.3.1. The dup-to Method
+
+ If, for example, we wanted to send a copy of everything
+going out the xl3 interface off to our drop-safe network on
+ed0, we would use this rule in our filter list:
+
+ pass out on xl3 dup-to ed0 from any to any
+
+
+
+
+
+
+
+
+
+
+ -46-
+
+
+You might also have a need to send the packet directly to a
+specific IP address on your drop-safe network instead of
+just making a copy of the packet out there and hoping for
+the best. To do this, we modify our rule slightly:
+
+ pass out on xl3 dup-to ed0:192.168.254.2 from any to any
+
+But be warned that this method will alter the copied
+packet's destination address, and may thus destroy the use-
+fulness of the log. For this reason, we recommend only
+using the known address method of logging when you can be
+certain that the address that you're logging to corresponds
+in some way to what you're logging for (e.g.: don't use
+"192.168.254.2" for logging for both your web server and
+your mail server, since you'll have a hard time later trying
+to figure out which system was the target of a specific set
+of packets.)
+
+ This technique can be used quite effectively if you
+treat an IP Address on your drop-safe network in much the
+same way that you would treat a Multicast Group on the real
+internet. (e.g.: "192.168.254.2" could be the channel for
+your http traffic analysis system, "23.23.23.23" could be
+your channel for telnet sessions, and so on.) You don't
+even need to actually have this address set as an address or
+alias on any of your analysis systems. Normally, your
+ipfilter machine would need to ARP for the new destination
+address (using dup-to ed0:192.168.254.2 style, of course)
+but we can avoid that issue by creating a static arp entry
+for this "channel" on our ipfilter system.
+
+ In general, though, dup-to ed0 is all that is required
+to get a new copy of the packet over to our drop-safe net-
+work for logging and examination.
+
+9.3.2. The to Method
+
+ The dup-to method does have an immediate drawback,
+though. Since it has to make a copy of the packet and
+optionally modify it for its new destination, it's going to
+take a while to complete all this work and be ready to deal
+with the next packet coming in to the ipfilter system.
+
+ If we don't care about passing the packet to its normal
+destination and we were going to block it anyway, we can
+just use the to keyword to push this packet past the normal
+routing table and force it to go out a different interface
+than it would normally go out.
+
+ block in quick on xl0 to ed0 proto tcp from any to any port < 1024
+
+we use block quick for to interface routing, because like
+fastroute, the to interface code will generate two packet
+paths through ipfilter when used with pass, and likely cause
+
+
+
+
+
+
+
+
+
+ -47-
+
+
+your system to panic.
+
+
+
+10. Bogus Network Filtering, the ultimate in current anti-
+spoofing technology.
+
+ We've spent a little bit of time tracking down the cur-
+rent vast tracts of IP address space that have been reserved
+by the IANA for various reasons, or are otherwise not cur-
+rently in use at the time this document was written. Since
+none of these address ranges should be in use currently,
+there should be no legitimate reason to ever see them as a
+source address, or to send them traffic as a destination
+address, right? Right!
+
+ So without further ado, the complete list of bogus net-
+works:
+
+ #
+ # s/OUTSIDE/outside-interface (eg: fxp0)
+ # s/MYNET/network-cidr-address (eg: 1.2.3.0/24)
+ #
+ block in on OUTSIDE all
+ block in quick on OUTSIDE from 0.0.0.0/7 to any
+ block in quick on OUTSIDE from 2.0.0.0/8 to any
+ block in quick on OUTSIDE from 5.0.0.0/8 to any
+ block in quick on OUTSIDE from 10.0.0.0/8 to any
+ block in quick on OUTSIDE from 23.0.0.0/8 to any
+ block in quick on OUTSIDE from 27.0.0.0/8 to any
+ block in quick on OUTSIDE from 31.0.0.0/8 to any
+ block in quick on OUTSIDE from 67.0.0.0/8 to any
+ block in quick on OUTSIDE from 68.0.0.0/6 to any
+ block in quick on OUTSIDE from 72.0.0.0/5 to any
+ block in quick on OUTSIDE from 80.0.0.0/4 to any
+ block in quick on OUTSIDE from 96.0.0.0/3 to any
+ block in quick on OUTSIDE from 127.0.0.0/8 to any
+ block in quick on OUTSIDE from 128.0.0.0/16 to any
+ block in quick on OUTSIDE from 128.66.0.0/16 to any
+ block in quick on OUTSIDE from 169.254.0.0/16 to any
+ block in quick on OUTSIDE from 172.16.0.0/12 to any
+ block in quick on OUTSIDE from 191.255.0.0/16 to any
+ block in quick on OUTSIDE from 192.0.0.0/16 to any
+ block in quick on OUTSIDE from 192.168.0.0/16 to any
+ block in quick on OUTSIDE from 197.0.0.0/8 to any
+ block in quick on OUTSIDE from 201.0.0.0/8 to any
+ block in quick on OUTSIDE from 204.152.64.0/23 to any
+ block in quick on OUTSIDE from 224.0.0.0/3 to any
+ block in quick on OUTSIDE from MYNET to any
+ # Your pass rules come here...
+
+ block out on OUTSIDE all
+ block out quick on OUTSIDE from !MYNET to any
+ block out quick on OUTSIDE from MYNET to 0.0.0.0/7
+
+
+
+
+
+
+
+
+
+ -48-
+
+
+ block out quick on OUTSIDE from MYNET to 2.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 5.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 10.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 23.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 27.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 31.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 67.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 68.0.0.0/6
+ block out quick on OUTSIDE from MYNET to 72.0.0.0/5
+ block out quick on OUTSIDE from MYNET to 80.0.0.0/4
+ block out quick on OUTSIDE from MYNET to 96.0.0.0/3
+ block out quick on OUTSIDE from MYNET to 127.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 128.0.0.0/16
+ block out quick on OUTSIDE from MYNET to 128.66.0.0/16
+ block out quick on OUTSIDE from MYNET to 169.254.0.0/16
+ block out quick on OUTSIDE from MYNET to 172.16.0.0/12
+ block out quick on OUTSIDE from MYNET to 191.255.0.0/16
+ block out quick on OUTSIDE from MYNET to 192.0.0.0/16
+ block out quick on OUTSIDE from MYNET to 192.168.0.0/16
+ block out quick on OUTSIDE from MYNET to 197.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 201.0.0.0/8
+ block out quick on OUTSIDE from MYNET to 204.152.64.0/23
+ block out quick on OUTSIDE from MYNET to 224.0.0.0/3
+ # Your pass rules come here...
+
+If you're going to use these, we suggest that you become
+familiar with whois.arin.net and keep an occasional eye on
+these, as the IANA isn't going to notify you when they allo-
+cate one of these to a new corporation or something. You
+have been warned.
+
+ We'd also like to thank Frank DiGennaro <fsd@server-
+vault.com> for greatly contributing to this filter list.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/share/examples/ipfilter/ipf.conf.permissive b/share/examples/ipfilter/ipf.conf.permissive
new file mode 100644
index 0000000..714d7d9
--- /dev/null
+++ b/share/examples/ipfilter/ipf.conf.permissive
@@ -0,0 +1,30 @@
+# $FreeBSD$
+# augmented rules generated by mkfilters
+block in log quick from any with ipopts
+block in log quick proto tcp from any to any with short
+block in log quick all with opt lsrr
+block in log quick all with opt ssrr
+#-------------------------------------------------------
+# loopback pakets left unmolested
+pass in quick on lo0 all
+pass out quick on lo0 all
+#-------------------------------------------------------
+pass out on ed1 all head 150
+block out from 127.0.0.0/8 to any group 150
+block out from any to 127.0.0.0/8 group 150
+block out from any to 192.168.1.110/32 group 150
+#-------------------------------------------------------
+pass in on ed1 all head 100
+block in from 127.0.0.0/8 to any group 100
+block in from 192.168.1.110/32 to any group 100
+block in from 192.168.0.1/24 to any group 100
+#-------------------------------------------------------
+pass out on fxp0 all head 250
+block out from 127.0.0.0/8 to any group 250
+block out from any to 127.0.0.0/8 group 250
+block out from any to 192.168.0.1/32 group 250
+#-------------------------------------------------------
+pass in on fxp0 all head 200
+block in from 127.0.0.0/8 to any group 200
+block in from 192.168.0.1/32 to any group 200
+block in from 192.168.1.110/24 to any group 200
diff --git a/share/examples/ipfilter/ipf.conf.restrictive b/share/examples/ipfilter/ipf.conf.restrictive
new file mode 100644
index 0000000..ad3de82
--- /dev/null
+++ b/share/examples/ipfilter/ipf.conf.restrictive
@@ -0,0 +1,77 @@
+# $FreeBSD$
+#--------------------------------------------------------------------------
+# ed1 - external interface
+# fxp0 - internal interface
+#--------------------------------------------------------------------------
+# First, nasty packets which we don't want near us at all
+# packets which are too short to be real except echo replies on lo0
+pass in log quick on lo0 proto icmp from 127.0.0.1/8 to 127.0.0.1/8 with short
+block in log quick all with short
+block in log quick all with opt lsrr
+block in log quick all with opt ssrr
+#--------------------------------------------------------------------------
+# loopback packets left unmolested
+pass in log quick on lo0 all
+pass out log quick on lo0 all
+#--------------------------------------------------------------------------
+# Group setup:
+# 100 incoming ed1
+# 150 outgoing ed1
+# 200 incoming fxp0
+# 250 outgoing fxp0
+#--------------------------------------------------------------------------
+block in log body on ed1 all head 100
+block out log body on ed1 all head 150
+#--------------------------------------------------------------------------
+block in log on fxp0 all head 200
+block out log on fxp0 all head 250
+#--------------------------------------------------------------------------
+# incoming ed1 traffic - group 100
+# 1) prevent localhost spoofing
+block in log quick from 127.0.0.1/32 to 192.168.0.0/24 group 100
+block in log quick from 127.0.0.1/32 to 192.168.1.0/24 group 100
+block in log quick from any to 127.0.0.1/8 group 100
+#--------------------------------------------------------------------------
+# 2) deny pakets which should not be seen on th internet (paranoid)
+block in log quick from 10.0.0.0/8 to any group 100
+block in log quick from any to 10.0.0.0/8 group 100
+block in log quick from 172.16.0.0/16 to any group 100
+block in log quick from any to 172.16.0.0/16 group 100
+block in log quick from 192.168.0.0/16 to any group 100
+block in log from any to 192.168.0.0/16 group 100
+# 3) implement policy
+# allow incoming ftp-data
+pass in log quick proto tcp/udp from any to 192.168.1.1/24 keep state group 100
+# if nothing applies, block and return icmp-replies (unreachable and rst)
+block return-icmp(net-unr) in proto udp from any to any group 100
+block return-rst in log proto tcp from any to any group 100
+#--------------------------------------------------------------------------
+# outgoing ed1 traffic - group 150
+# Setup outgoing DNS
+pass out log quick proto tcp/udp from any to 212.40.0.10 port = 53 keep state group 150
+pass out log quick proto tcp/udp from any to 212.40.5.50 port = 53 keep state group 150
+# allow outgoing http-service
+pass out log quick proto tcp from any to any port = 80 flags S/SA keep state keep frags group 150
+# allow outgoing smtp traffic
+pass out log quick proto tcp from 192.168.1.1/24 to any port = 25 flags S/SA keep state group 150
+# allow outgoing pop3 traffic
+pass out log quick proto tcp from 192.168.1.1/24 to any port = 110 flags S/SA keep state group 150
+# allow outgoing ftp traffic
+pass out log quick proto tcp/udp from 192.168.1.1/24 to any port = ftp keep state group 150
+pass out log quick proto icmp from any to any keep state keep frags group 150
+#--------------------------------------------------------------------------
+# incoming traffic on fxp0 - group 200
+#--------------------------------------------------------------------------
+# 1) prevent localhost spoofing
+block in log quick from 127.0.0.0/8 to any group 200
+block in log quick from 192.168.0.1/32 to any group 200
+block in log quick from 192.168.1.110/24 to any group 200
+pass in log quick from any to any group 200
+#--------------------------------------------------------------------------
+# outgoing traffic on fxp0 - group 250
+#--------------------------------------------------------------------------
+block out log quick from 127.0.0.0/8 to any group 250
+block out quick from any to 127.0.0.0/8 group 250
+block out log quick from any to 192.168.0.1/32 group 250
+pass out log quick from any to nay group 250
+#--------------------------------------------------------------------------
diff --git a/share/examples/ipfilter/ipf.conf.sample b/share/examples/ipfilter/ipf.conf.sample
new file mode 100644
index 0000000..c5d47bc
--- /dev/null
+++ b/share/examples/ipfilter/ipf.conf.sample
@@ -0,0 +1,19 @@
+# $FreeBSD$
+block in log quick from any with ipopts
+block in log quick proto tcp from any to any with short
+pass out on ed1 all head 150
+block out from 127.0.0.0/8 to any group 150
+block out from any to 127.0.0.0/8 group 150
+block out from any to 192.168.1.110/32 group 150
+pass in on ed1 all head 100
+block in from 127.0.0.0/8 to any group 100
+block in from 192.168.1.110/32 to any group 100
+block in from 192.168.0.1/0xffffff00 to any group 100
+pass out on fxp0 all head 250
+block out from 127.0.0.0/8 to any group 250
+block out from any to 127.0.0.0/8 group 250
+block out from any to 192.168.0.1/32 group 250
+pass in on fxp0 all head 200
+block in from 127.0.0.0/8 to any group 200
+block in from 192.168.0.1 to any group 200
+block in from 192.168.1.110/0xffffff00 to any group 200
diff --git a/share/examples/ipfilter/ipnat.conf.sample b/share/examples/ipfilter/ipnat.conf.sample
new file mode 100644
index 0000000..67956bc
--- /dev/null
+++ b/share/examples/ipfilter/ipnat.conf.sample
@@ -0,0 +1,3 @@
+# $FreeBSD$
+map ed1 192.168.0.0/24 -> 192.168.1.110/32 portmap tcp/udp 40000:65000
+map ed1 192.168.0.0/24 -> 192.168.1.110/32
diff --git a/share/examples/ipfilter/rules.txt b/share/examples/ipfilter/rules.txt
new file mode 100644
index 0000000..26a51d0
--- /dev/null
+++ b/share/examples/ipfilter/rules.txt
@@ -0,0 +1,182 @@
+# $FreeBSD$
+#
+# block all incoming TCP packets on le0 from host "foo" to any destination.
+#
+block in on le0 proto tcp from foo/32 to any
+
+ ------------------------------------------------------------------------
+
+#
+# block all outgoing TCP packets on le0 from any host to port 23 of host bar.
+#
+block out on le0 proto tcp from any to bar/32 port != 23
+
+ ------------------------------------------------------------------------
+
+#
+# block all inbound packets.
+#
+block in from any to any
+#
+# pass through packets to and from localhost.
+#
+pass in from 127.0.0.1/32 to 127.0.0.1/32
+#
+# allow a variety of individual hosts to send any type of IP packet to any
+# other host.
+#
+pass in from 10.1.3.1 to any
+pass in from 10.1.3.2 to any
+pass in from 10.1.3.3 to any
+pass in from 10.1.3.4 to any
+pass in from 10.1.3.5 to any
+pass in from 10.1.0.13/32 to any
+pass in from 10.1.1.1/32 to any
+pass in from 10.1.2.1/32 to any
+#
+#
+# block all outbound packets.
+#
+block out from any to any
+#
+# allow any packets destined for localhost out.
+#
+pass out from any to 127.0.0.1/32
+#
+# allow any host to send any IP packet out to a limited number of hosts.
+#
+pass out from any to 10.1.3.1/32
+pass out from any to 10.1.3.2/32
+pass out from any to 10.1.3.3/32
+pass out from any to 10.1.3.4/32
+pass out from any to 10.1.3.5/32
+pass out from any to 10.1.0.13/32
+pass out from any to 10.1.1.1/32
+pass out from any to 10.1.2.1/32
+
+ ------------------------------------------------------------------------
+
+#
+# block all ICMP packets.
+#
+block in proto icmp from any to any
+
+ ------------------------------------------------------------------------
+
+#
+# test ruleset
+#
+# allow packets coming from foo to bar through.
+#
+pass from foo to bar
+#
+# allow any TCP packets from the same subnet as foo is on through to host
+# 10.1.1.2 if they are destined for port 6667.
+#
+pass proto tcp from fubar/24 to 10.1.1.2/32 port = 6667
+#
+# allow in UDP packets which are NOT from port 53 and are destined for
+# localhost
+#
+pass proto udp from fubar port != 53 to localhost
+#
+# block all ICMP unreachables.
+#
+block from any to any icmp unreach
+#
+# allow packets through which have a non-standard IP header length (ie there
+# are IP options such as source-routing present).
+#
+pass from any to any with ipopts
+
+ ------------------------------------------------------------------------
+
+#
+# block all TCP packets with only the SYN flag set (this is the first
+# packet sent to establish a connection).
+#
+block in proto tcp from any to any flags S/SA
+
+ ------------------------------------------------------------------------
+
+#
+# log all inbound packet on le0 which has IP options present
+#
+log in on le0 from any to any with ipopts
+#
+# block any inbound packets on le0 which are fragmented and "too short" to
+# do any meaningful comparison on. This actually only applies to TCP
+# packets which can be missing the flags/ports (depending on which part
+# of the fragment you see).
+#
+block in log quick on le0 from any to any with short frag
+#
+# log all inbound TCP packets with the SYN flag (only) set
+# (NOTE: if it were an inbound TCP packet with the SYN flag set and it
+# had IP options present, this rule and the above would cause it
+# to be logged twice).
+#
+log in on le0 proto tcp from any to any flags S/SA
+#
+# block and log any inbound ICMP unreachables
+#
+block in log on le0 proto icmp from any to any icmp-type unreach
+#
+# block and log any inbound UDP packets on le0 which are going to port 2049
+# (the NFS port).
+#
+block in log on le0 proto udp from any to any port = 2049
+#
+# quickly allow any packets to/from a particular pair of hosts
+#
+pass in quick from any to 10.1.3.2/32
+pass in quick from any to 10.1.0.13/32
+pass in quick from 10.1.3.2/32 to any
+pass in quick from 10.1.0.13/32 to any
+#
+# block (and stop matching) any packet with IP options present.
+#
+block in quick on le0 from any to any with ipopts
+#
+# allow any packet through
+#
+pass in from any to any
+#
+# block any inbound UDP packets destined for these subnets.
+#
+block in on le0 proto udp from any to 10.1.3.0/24
+block in on le0 proto udp from any to 10.1.1.0/24
+block in on le0 proto udp from any to 10.1.2.0/24
+#
+# block any inbound TCP packets with only the SYN flag set that are
+# destined for these subnets.
+#
+block in on le0 proto tcp from any to 10.1.3.0/24 flags S/SA
+block in on le0 proto tcp from any to 10.1.2.0/24 flags S/SA
+block in on le0 proto tcp from any to 10.1.1.0/24 flags S/SA
+#
+# block any inbound ICMP packets destined for these subnets.
+#
+block in on le0 proto icmp from any to 10.1.3.0/24
+block in on le0 proto icmp from any to 10.1.1.0/24
+block in on le0 proto icmp from any to 10.1.2.0/24
+#
+# Log all short TCP packets to qe3, with "packetlog" as the intended
+# destination for the packet.
+#
+block in to qe3:packetlog proto tcp all with short
+#
+# Log all connection attempts for TCP
+#
+pass in dup-to le0:packetlog proto tcp all flags S/SA
+#
+# Route all UDP packets through transparently.
+#
+pass in fastroute proto udp all
+#
+# Route all ICMP packets to network 10 out through le1, to "router"
+#
+pass in to le1:router proto icmp all
+
+ ------------------------------------------------------------------------
+Return to the IP Filter home page
diff --git a/share/examples/ipfw/change_rules.sh b/share/examples/ipfw/change_rules.sh
new file mode 100755
index 0000000..be7f764
--- /dev/null
+++ b/share/examples/ipfw/change_rules.sh
@@ -0,0 +1,153 @@
+#!/bin/sh
+#
+# Copyright (c) 2000 Alexandre Peixoto
+# 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$
+
+# Change ipfw(8) rules with safety guarantees for remote operation
+#
+# Invoke this script to edit ${firewall_script}. It will call ${EDITOR},
+# or vi(1) if the environment variable is not set, for you to edit
+# ${firewall_script}, ask for confirmation, and then run
+# ${firewall_script}. You can then examine the output of ipfw list and
+# confirm whether you want the new version or not.
+#
+# If no answer is received in 30 seconds, the previous
+# ${firewall_script} is run, restoring the old rules (this assumes ipfw
+# flush is present in it).
+#
+# If the new rules are confirmed, they'll replace ${firewall_script} and
+# the previous ones will be copied to ${firewall_script}.{date}. Mail
+# will also be sent to root with a unified diff of the rule change.
+#
+# Unapproved rules are kept in ${firewall_script}.new, and you are
+# offered the option of changing them instead of the present rules when
+# you call this script.
+#
+# This script could be improved by using version control
+# software.
+
+if [ -r /etc/defaults/rc.conf ]; then
+ . /etc/defaults/rc.conf
+ source_rc_confs
+elif [ -r /etc/rc.conf ]; then
+ . /etc/rc.conf
+fi
+
+EDITOR=${EDITOR:-/usr/bin/vi}
+PAGER=${PAGER:-/usr/bin/more}
+
+tempfoo=`basename $0`
+TMPFILE=`mktemp -t ${tempfoo}` || exit 1
+
+get_yes_no() {
+ while true
+ do
+ echo -n "$1 (Y/N) ? "
+ read -t 30 a
+ if [ $? != 0 ]; then
+ a="No";
+ return;
+ fi
+ case $a in
+ [Yy]) a="Yes";
+ return;;
+ [Nn]) a="No";
+ return;;
+ *);;
+ esac
+ done
+}
+
+restore_rules() {
+ nohup sh ${firewall_script} </dev/null >/dev/null 2>&1
+ rm ${TMPFILE}
+ exit 1
+}
+
+case "${firewall_type}" in
+[Cc][Ll][Ii][Ee][Nn][Tt]|\
+[Cc][Ll][Oo][Ss][Ee][Dd]|\
+[Oo][Pp][Ee][Nn]|\
+[Ss][Ii][Mm][Pp][Ll][Ee]|\
+[Uu][Nn][Kk][Nn][Oo][Ww][Nn])
+ edit_file="${firewall_script}"
+ rules_edit=no
+ ;;
+*)
+ if [ -r "${firewall_type}" ]; then
+ edit_file="${firewall_type}"
+ rules_edit=yes
+ fi
+ ;;
+esac
+
+if [ -f ${edit_file}.new ]; then
+ get_yes_no "A new rules file already exists, do you want to use it"
+ [ $a = 'No' ] && cp ${edit_file} ${edit_file}.new
+else
+ cp ${edit_file} ${edit_file}.new
+fi
+
+trap restore_rules SIGHUP
+
+${EDITOR} ${edit_file}.new
+
+get_yes_no "Do you want to install the new rules"
+
+[ $a = 'No' ] && exit 1
+
+cat <<!
+The rules will be changed now. If the message 'Type y to keep the new
+rules' does not appear on the screen or the y key is not pressed in 30
+seconds, the original rules will be restored.
+The TCP/IP connections might be broken during the change. If so, restore
+the ssh/telnet connection being used.
+!
+
+if [ ${rules_edit} = yes ]; then
+ nohup sh ${firewall_script} ${firewall_type}.new \
+ < /dev/null > ${TMPFILE} 2>&1
+else
+ nohup sh ${firewall_script}.new \
+ < /dev/null > ${TMPFILE} 2>&1
+fi
+sleep 2;
+get_yes_no "Would you like to see the resulting new rules"
+[ $a = 'Yes' ] && ${PAGER} ${TMPFILE}
+get_yes_no "Type y to keep the new rules"
+[ $a != 'Yes' ] && restore_rules
+
+DATE=`date "+%Y%m%d%H%M"`
+cp ${edit_file} ${edit_file}.$DATE
+mv ${edit_file}.new ${edit_file}
+cat <<!
+The new rules are now installed. The previous rules have been preserved in
+the file ${edit_file}.$DATE
+!
+diff -F "^# .*[A-Za-z]" -u ${edit_file}.$DATE ${edit_file} \
+ | mail -s "`hostname` Firewall rule change" root
+rm ${TMPFILE}
+exit 0
diff --git a/share/examples/kld/Makefile b/share/examples/kld/Makefile
new file mode 100644
index 0000000..908f68e
--- /dev/null
+++ b/share/examples/kld/Makefile
@@ -0,0 +1,72 @@
+# 08 Nov 1998
+#
+# Makefile for sample programs for kld modules package
+#
+# 08 Nov 1998 Rajesh Vaidheeswarran - adapted from lkm Makefile
+#
+# Copyright (c) 1998 Rajesh Vaidheeswarran
+# 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 Rajesh Vaidheeswarran.
+# 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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.
+#
+# Copyright (c) 1993 Terrence R. Lambert.
+# 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 Terrence R. Lambert.
+# 4. The name Terrence R. Lambert may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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$
+#
+
+SUBDIR= cdev dyn_sysctl firmware syscall
+
+.include <bsd.subdir.mk>
diff --git a/share/examples/kld/cdev/Makefile b/share/examples/kld/cdev/Makefile
new file mode 100644
index 0000000..5c8f8f6
--- /dev/null
+++ b/share/examples/kld/cdev/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+SUBDIR= module test
+
+load unload: _SUBDIR
+
+.include <bsd.subdir.mk>
diff --git a/share/examples/kld/cdev/README b/share/examples/kld/cdev/README
new file mode 100644
index 0000000..dc650f1
--- /dev/null
+++ b/share/examples/kld/cdev/README
@@ -0,0 +1,131 @@
+# Copyright (c) 1998 Rajesh Vaidheeswarran
+# 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 Rajesh Vaidheeswarran
+# 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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.
+#
+# Copyright (c) 1993 Terrence R. Lambert.
+# 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 Terrence R. Lambert.
+# 4. The name Terrence R. Lambert may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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$
+#
+
+1.0 Overview
+
+ This is the README file for the sample kld module
+ that mimics a character device driver.
+
+ A kld module may be used to load any data or
+ program into the kernel that can be made available by
+ modifying a table, pointer, or other kernel data to inform
+ the kernel that the module should be used instead of the
+ previous code/data path.
+
+ Generally, it is assumed that a loadable module is one of
+ a set of similar modules (such as a file system or console
+ terminal emulation), and that the reference is through a
+ table (such as vfssw[]), and that a "special" value is
+ assigned to the slots which are allowed to be replaced.
+ This is not enforced, so you may use the kld module
+ any way you see fit.
+
+ As with the loadable system calls, it may be desirable to
+ allow the module loader to replace an *existing* entry to
+ try out changes to kernel code without rebuilding and
+ booting from the new kernel.
+
+ The idea behind this example is to show some interaction
+ with the device driver. Therefore the flow of the code that
+ this driver is aimed at is as follows:
+
+ open(2) -> ioctl(2) -> write(2) -> read(2) -> close(2).
+
+ We will first open the device in the /dev/ directory; then
+ we will send an ioctl message to it using ioctl(2) call;
+ then write a small string via the write(2) call. This string
+ we write to the device will be stored in a static buffer,
+ and later will be accessible via the read(2) call. Finally,
+ we will close(2) our open()'d device so that we may no
+ longer make read or write calls on it.
+
+2.0 Directions
+
+ To test the module, do the following:
+
+ cd module
+ make load
+
+ A load message (the copyright) will be printed on the console.
+
+ cd ../test
+ make load
+
+ The system call prints a message on the console when called.
+ This message will be printed when running "make load" in
+ the "test" subdirectory.
+
+
+3.0 Recovering resources
+
+ The module consumes memory when loaded; it can be freed up by
+ unloading it. To unload it, type the following from the directory
+ this file is in:
+
+ cd module
+ make unload
+
+ The miscellaneous module will be unloaded by name.
+
+
+4.0 END OF DOCUMENT
diff --git a/share/examples/kld/cdev/module/Makefile b/share/examples/kld/cdev/module/Makefile
new file mode 100644
index 0000000..a35c500
--- /dev/null
+++ b/share/examples/kld/cdev/module/Makefile
@@ -0,0 +1,7 @@
+# Makefile for kld char device driver.
+# $FreeBSD$
+
+KMOD= cdev
+SRCS= cdev.c cdevmod.c
+
+.include <bsd.kmod.mk>
diff --git a/share/examples/kld/cdev/module/cdev.c b/share/examples/kld/cdev/module/cdev.c
new file mode 100644
index 0000000..dda63c4
--- /dev/null
+++ b/share/examples/kld/cdev/module/cdev.c
@@ -0,0 +1,182 @@
+/* 08 Nov 1998*/
+/*
+ * cdev.c
+ *
+ * 08 Nov 1998 Rajesh Vaidheeswarran
+ *
+ * Copyright (c) 1998 Rajesh Vaidheeswarran
+ * 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 Rajesh Vaidheeswarran.
+ * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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.
+ *
+ * Copyright (c) 1993 Terrence R. Lambert.
+ * 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 Terrence R. Lambert.
+ * 4. The name Terrence R. Lambert may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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/proc.h>
+#include <sys/systm.h>
+#include <sys/ioccom.h>
+#include <sys/conf.h>
+
+#include "cdev.h"
+
+/*
+ * This is the actual code for the system call... it can't be static because
+ * it is exported to another part of the module... the only place it needs
+ * to be referenced is the sysent we are interested in.
+ *
+ * To write your own system call using this as a template, you could strip
+ * out this code and use the rest as a prototype module, changing only the
+ * function names and the number of arguments to the call in the module
+ * specific "sysent".
+ *
+ * You would have to use the "-R" option of "ld" to ensure a linkable file
+ * if you were to do this, since you would need to combine multiple ".o"
+ * files into a single ".o" file for use by "modload".
+ */
+
+#define CDEV_IOCTL1 _IOR('C', 1, u_int)
+
+/* Stores string recv'd by _write() */
+static char buf[512+1];
+static size_t len;
+
+int
+mydev_open(struct cdev *dev, int flag, int otyp, struct thread *td)
+{
+ struct proc *procp = td->td_proc;
+
+ printf("mydev_open: dev_t=%d, flag=%x, otyp=%x, procp=%p\n",
+ dev2udev(dev), flag, otyp, procp);
+ memset(&buf, '\0', 513);
+ len = 0;
+ return (0);
+}
+
+int
+mydev_close(struct cdev *dev, int flag, int otyp, struct thread *td)
+{
+ struct proc *procp = td->td_proc;
+
+ printf("mydev_close: dev_t=%d, flag=%x, otyp=%x, procp=%p\n",
+ dev2udev(dev), flag, otyp, procp);
+ return (0);
+}
+
+int
+mydev_ioctl(struct cdev *dev, u_long cmd, caddr_t arg, int mode,
+ struct thread *td)
+{
+ int error = 0;
+ struct proc *procp = td->td_proc;
+
+ printf("mydev_ioctl: dev_t=%d, cmd=%lx, arg=%p, mode=%x procp=%p\n",
+ dev2udev(dev), cmd, arg, mode, procp);
+
+ switch(cmd) {
+ case CDEV_IOCTL1:
+ printf("you called mydev_ioctl CDEV_IOCTL1\n");
+ break;
+ default:
+ printf("No such ioctl for me!\n");
+ error = EINVAL;
+ break;
+ }
+ return (error);
+}
+
+/*
+ * mydev_write takes in a character string and saves it
+ * to buf for later accessing.
+ */
+int
+mydev_write(struct cdev *dev, struct uio *uio, int ioflag)
+{
+ int err = 0;
+
+ printf("mydev_write: dev_t=%d, uio=%p, ioflag=%d\n",
+ dev2udev(dev), uio, ioflag);
+
+ err = copyinstr(uio->uio_iov->iov_base, &buf, 512, &len);
+ if (err != 0) {
+ printf("Write to \"cdev\" failed.\n");
+ }
+ return(err);
+}
+
+/*
+ * The mydev_read function just takes the buf that was saved
+ * via mydev_write() and returns it to userland for
+ * accessing.
+ */
+int
+mydev_read(struct cdev *dev, struct uio *uio, int ioflag)
+{
+ int err = 0;
+
+ printf("mydev_read: dev_t=%d, uio=%p, ioflag=%d\n",
+ dev2udev(dev), uio, ioflag);
+
+ if (len <= 0) {
+ err = -1;
+ } else { /* copy buf to userland */
+ copystr(&buf, uio->uio_iov->iov_base, 513, &len);
+ }
+ return(err);
+}
diff --git a/share/examples/kld/cdev/module/cdev.h b/share/examples/kld/cdev/module/cdev.h
new file mode 100644
index 0000000..b09e53a
--- /dev/null
+++ b/share/examples/kld/cdev/module/cdev.h
@@ -0,0 +1,81 @@
+/* 08 Nov 1998*/
+/*
+ * cdev.h - header for sample kld module implementing a character device
+ * driver.
+ *
+ * 08 Nov 1998 Rajesh Vaidheeswarran
+ *
+ * Copyright (c) 1998 Rajesh Vaidheeswarran
+ * 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 Rajesh Vaidheeswarran.
+ * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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.
+ *
+ * Copyright (c) 1993 Terrence R. Lambert.
+ * 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 Terrence R. Lambert.
+ * 4. The name Terrence R. Lambert may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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 __CDEV_H_
+#define __CDEV_H_
+
+d_open_t mydev_open;
+d_close_t mydev_close;
+d_ioctl_t mydev_ioctl;
+d_read_t mydev_read;
+d_write_t mydev_write;
+
+#endif
diff --git a/share/examples/kld/cdev/module/cdevmod.c b/share/examples/kld/cdev/module/cdevmod.c
new file mode 100644
index 0000000..f21723f
--- /dev/null
+++ b/share/examples/kld/cdev/module/cdevmod.c
@@ -0,0 +1,139 @@
+/* 08 Nov 1998*/
+/*
+ * cdevmod.c - a sample kld module implementing a character device driver.
+ *
+ * 08 Nov 1998 Rajesh Vaidheeswarran
+ *
+ * Copyright (c) 1998 Rajesh Vaidheeswarran
+ * 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 Rajesh Vaidheeswarran.
+ * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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.
+ *
+ * Copyright (c) 1993 Terrence R. Lambert.
+ * 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 Terrence R. Lambert.
+ * 4. The name Terrence R. Lambert may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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/systm.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/conf.h>
+
+#include "cdev.h"
+
+static struct cdevsw my_devsw = {
+ /* version */ .d_version = D_VERSION,
+ /* open */ .d_open = mydev_open,
+ /* close */ .d_close = mydev_close,
+ /* read */ .d_read = mydev_read,
+ /* write */ .d_write = mydev_write,
+ /* ioctl */ .d_ioctl = mydev_ioctl,
+ /* name */ .d_name = "cdev"
+};
+
+/*
+ * Used as the variable that is the reference to our device
+ * in devfs... we must keep this variable sane until we
+ * call kldunload.
+ */
+static struct cdev *sdev;
+
+/*
+ * This function is called each time the module is loaded or unloaded.
+ * Since we are a miscellaneous module, we have to provide whatever
+ * code is necessary to patch ourselves into the area we are being
+ * loaded to change.
+ *
+ * The stat information is basically common to all modules, so there
+ * is no real issue involved with stat; we will leave it lkm_nullcmd(),
+ * since we don't have to do anything about it.
+ */
+
+static int
+cdev_load(module_t mod, int cmd, void *arg)
+{
+ int err = 0;
+
+ switch (cmd) {
+ case MOD_LOAD:
+
+ /* Do any initialization that you should do with the kernel */
+
+ /* if we make it to here, print copyright on console*/
+ printf("\nSample Loaded kld character device driver\n");
+ printf("Copyright (c) 1998\n");
+ printf("Rajesh Vaidheeswarran\n");
+ printf("All rights reserved\n");
+ sdev = make_dev(&my_devsw, 0, UID_ROOT, GID_WHEEL, 0600, "cdev");
+ break; /* Success*/
+
+ case MOD_UNLOAD:
+ printf("Unloaded kld character device driver\n");
+ destroy_dev(sdev);
+ break; /* Success*/
+
+ default: /* we only understand load/unload*/
+ err = EOPNOTSUPP;
+ break;
+ }
+
+ return(err);
+}
+
+/* Now declare the module to the system */
+
+DEV_MODULE(cdev, cdev_load, NULL);
diff --git a/share/examples/kld/cdev/test/Makefile b/share/examples/kld/cdev/test/Makefile
new file mode 100644
index 0000000..333cdcb
--- /dev/null
+++ b/share/examples/kld/cdev/test/Makefile
@@ -0,0 +1,94 @@
+# 05 Jun 93
+#
+# Makefile for testmisc
+#
+# 05 Jun 93 Rajesh Vaidheeswarran Original
+#
+# Copyright (c) 1993 Rajesh Vaidheeswarran.
+# 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 Rajesh Vaidheeswarran.
+# 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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.
+#
+# Copyright (c) 1993 Terrence R. Lambert.
+# 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 Terrence R. Lambert.
+# 4. The name Terrence R. Lambert may not be used to endorse or promote
+# products derived from this software without specific prior written
+# permission.
+#
+# THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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$
+#
+PROG= testcdev
+NO_MAN=
+
+MODSTAT= /sbin/kldstat
+
+load:
+ @echo "This test program will call the sample kld characer device ";
+ @echo "driver."
+ @echo
+ @echo "The sample driver will display a message on the"
+ @echo "system console each time an ioctl is sent to it."
+ @echo
+ @echo
+ @echo
+ @./testcdev
+
+unload:
+ @echo "This test program will cause an error if the driver"
+ @echo "has been successfully unloaded by building 'unload' in"
+ @echo "the 'module' subdirectory."
+ @echo
+ ${MODSTAT} -n cdev
+
+install:
+
+.include <bsd.prog.mk>
diff --git a/share/examples/kld/cdev/test/testcdev.c b/share/examples/kld/cdev/test/testcdev.c
new file mode 100644
index 0000000..0a61181
--- /dev/null
+++ b/share/examples/kld/cdev/test/testcdev.c
@@ -0,0 +1,123 @@
+/* 08 Nov 1998*/
+/*
+ * testmisc.c
+ *
+ * Test program to call the sample loaded kld device driver.
+ *
+ * 05 Jun 93 Rajesh Vaidheeswarran Original
+ *
+ *
+ * Copyright (c) 1993 Rajesh Vaidheeswarran.
+ * 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 Rajesh Vaidheeswarran.
+ * 4. The name Rajesh Vaidheeswarran may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY RAJESH VAIDHEESWARRAN ``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 RAJESH VAIDHEESWARRAN 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.
+ *
+ * Copyright (c) 1993 Terrence R. Lambert.
+ * 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 Terrence R. Lambert.
+ * 4. The name Terrence R. Lambert may not be used to endorse or promote
+ * products derived from this software without specific prior written
+ * permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY TERRENCE R. LAMBERT ``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 TERRENCE R. LAMBERT 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 <fcntl.h>
+#include <paths.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/ioccom.h>
+
+#define CDEV_IOCTL1 _IOR('C', 1, u_int)
+#define CDEV_DEVICE "cdev"
+
+static char writestr[] = "Hello kernel!";
+static char buf[512+1];
+
+int
+main(int argc, char *argv[])
+{
+ int kernel_fd;
+ int one;
+ int len;
+
+ if ((kernel_fd = open("/dev/" CDEV_DEVICE, O_RDWR)) == -1) {
+ perror("/dev/" CDEV_DEVICE);
+ exit(1);
+ }
+
+ /* Send ioctl */
+ if (ioctl(kernel_fd, CDEV_IOCTL1, &one) == -1) {
+ perror("CDEV_IOCTL1");
+ } else {
+ printf( "Sent ioctl CDEV_IOCTL1 to device %s%s\n", _PATH_DEV, CDEV_DEVICE);
+ }
+
+ len = strlen(writestr) + 1;
+
+ /* Write operation */
+ if (write(kernel_fd, writestr, len) == -1) {
+ perror("write()");
+ } else {
+ printf("Written \"%s\" string to device /dev/" CDEV_DEVICE "\n", writestr);
+ }
+
+ /* Read operation */
+ if (read(kernel_fd, buf, len) == -1) {
+ perror("read()");
+ } else {
+ printf("Read \"%s\" string from device /dev/" CDEV_DEVICE "\n", buf);
+ }
+
+ exit(0);
+}
diff --git a/share/examples/kld/dyn_sysctl/Makefile b/share/examples/kld/dyn_sysctl/Makefile
new file mode 100644
index 0000000..695320d
--- /dev/null
+++ b/share/examples/kld/dyn_sysctl/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+SRCS = dyn_sysctl.c
+KMOD = dyn_sysctl
+
+.include <bsd.kmod.mk>
diff --git a/share/examples/kld/dyn_sysctl/README b/share/examples/kld/dyn_sysctl/README
new file mode 100644
index 0000000..4dfa3c6
--- /dev/null
+++ b/share/examples/kld/dyn_sysctl/README
@@ -0,0 +1,8 @@
+This example module creates partially overlapping subtrees to demonstrate
+reference counting. It also contains example of attaching a subtree to the
+wrong place, i.e. to a dynamic oid that could belong to someone else.
+The framework should deal with this case gracefully.
+
+Andrzej Bialecki <abial@freebsd.org>
+
+$FreeBSD$
diff --git a/share/examples/kld/dyn_sysctl/dyn_sysctl.c b/share/examples/kld/dyn_sysctl/dyn_sysctl.c
new file mode 100644
index 0000000..bcef7d4
--- /dev/null
+++ b/share/examples/kld/dyn_sysctl/dyn_sysctl.c
@@ -0,0 +1,168 @@
+/*-
+ * Copyright (c) 2000 Andrzej Bialecki <abial@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/types.h>
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/module.h>
+#include <sys/sysctl.h>
+#include <sys/kernel.h>
+
+
+/* Some example data */
+static long a = 100;
+static int b = 200;
+static char *c = "hi there from dyn_sysctl";
+static struct sysctl_oid *a_root, *a_root1, *b_root;
+static struct sysctl_ctx_list clist, clist1, clist2;
+
+static int
+sysctl_dyn_sysctl_test (SYSCTL_HANDLER_ARGS)
+{
+ char *buf = "let's produce some text...";
+
+ return (sysctl_handle_string(oidp, buf, strlen(buf), req));
+}
+
+/*
+ * The function called at load/unload.
+ */
+static int
+load (module_t mod, int cmd, void *arg)
+{
+ int error;
+
+ error = 0;
+ switch (cmd) {
+ case MOD_LOAD :
+ /* Initialize the contexts */
+ printf("Initializing contexts and creating subtrees.\n\n");
+ sysctl_ctx_init(&clist);
+ sysctl_ctx_init(&clist1);
+ sysctl_ctx_init(&clist2);
+ /*
+ * Create two partially overlapping subtrees, belonging
+ * to different contexts.
+ */
+ printf("TREE ROOT NAME\n");
+ a_root = SYSCTL_ADD_NODE(&clist,
+ SYSCTL_STATIC_CHILDREN(/* top of sysctl tree */),
+ OID_AUTO, "dyn_sysctl", CTLFLAG_RW, 0,
+ "dyn_sysctl root node");
+ a_root = SYSCTL_ADD_NODE(&clist1,
+ SYSCTL_STATIC_CHILDREN(/* top of sysctl tree */),
+ OID_AUTO, "dyn_sysctl", CTLFLAG_RW, 0,
+ "dyn_sysctl root node");
+ if(a_root == NULL) {
+ printf("SYSCTL_ADD_NODE failed!\n");
+ return (EINVAL);
+ }
+ SYSCTL_ADD_LONG(&clist, SYSCTL_CHILDREN(a_root),
+ OID_AUTO, "long_a", CTLFLAG_RW, &a, "just to try");
+ SYSCTL_ADD_INT(&clist, SYSCTL_CHILDREN(a_root),
+ OID_AUTO, "int_b", CTLFLAG_RW, &b, 0, "just to try 1");
+ a_root1=SYSCTL_ADD_NODE(&clist, SYSCTL_CHILDREN(a_root),
+ OID_AUTO, "nextlevel", CTLFLAG_RD, 0, "one level down");
+ SYSCTL_ADD_STRING(&clist, SYSCTL_CHILDREN(a_root1),
+ OID_AUTO, "string_c", CTLFLAG_RD, c, 0, "just to try 2");
+ printf("1. (%p) / dyn_sysctl\n", &clist);
+
+ /* Add a subtree under already existing category */
+ a_root1 = SYSCTL_ADD_NODE(&clist, SYSCTL_STATIC_CHILDREN(_kern),
+ OID_AUTO, "dyn_sysctl", CTLFLAG_RW, 0, "dyn_sysctl root node");
+ if(a_root1 == NULL) {
+ printf("SYSCTL_ADD_NODE failed!\n");
+ return (EINVAL);
+ }
+ SYSCTL_ADD_PROC(&clist, SYSCTL_CHILDREN(a_root1),
+ OID_AUTO, "procedure", CTLFLAG_RD, 0, 0,
+ sysctl_dyn_sysctl_test, "A", "I can be here, too");
+ printf(" (%p) /kern dyn_sysctl\n", &clist);
+
+ /* Overlap second tree with the first. */
+ b_root = SYSCTL_ADD_NODE(&clist1, SYSCTL_CHILDREN(a_root),
+ OID_AUTO, "nextlevel", CTLFLAG_RD, 0, "one level down");
+ SYSCTL_ADD_STRING(&clist1, SYSCTL_CHILDREN(b_root),
+ OID_AUTO, "string_c1", CTLFLAG_RD, c, 0, "just to try 2");
+ printf("2. (%p) / dyn_sysctl (overlapping #1)\n", &clist1);
+
+ /*
+ * And now do something stupid. Connect another subtree to
+ * dynamic oid.
+ * WARNING: this is an example of WRONG use of dynamic sysctls.
+ */
+ b_root=SYSCTL_ADD_NODE(&clist2, SYSCTL_CHILDREN(a_root1),
+ OID_AUTO, "bad", CTLFLAG_RW, 0, "dependent node");
+ SYSCTL_ADD_STRING(&clist2, SYSCTL_CHILDREN(b_root),
+ OID_AUTO, "string_c", CTLFLAG_RD, c, 0, "shouldn't panic");
+ printf("3. (%p) /kern/dyn_sysctl bad (WRONG!)\n", &clist2);
+ break;
+ case MOD_UNLOAD :
+ printf("1. Try to free ctx1 (%p): ", &clist);
+ if(sysctl_ctx_free(&clist))
+ printf("failed: expected. Need to remove ctx3 first.\n");
+ else
+ printf("HELP! sysctl_ctx_free(%p) succeeded. EXPECT PANIC!!!\n", &clist);
+ printf("2. Try to free ctx3 (%p): ", &clist2);
+ if(sysctl_ctx_free(&clist2)) {
+ printf("sysctl_ctx_free(%p) failed!\n", &clist2);
+ /* Remove subtree forcefully... */
+ sysctl_remove_oid(b_root, 1, 1);
+ printf("sysctl_remove_oid(%p) succeeded\n", b_root);
+ } else
+ printf("Ok\n");
+ printf("3. Try to free ctx1 (%p) again: ", &clist);
+ if(sysctl_ctx_free(&clist)) {
+ printf("sysctl_ctx_free(%p) failed!\n", &clist);
+ /* Remove subtree forcefully... */
+ sysctl_remove_oid(a_root1, 1, 1);
+ printf("sysctl_remove_oid(%p) succeeded\n", a_root1);
+ } else
+ printf("Ok\n");
+ printf("4. Try to free ctx2 (%p): ", &clist1);
+ if(sysctl_ctx_free(&clist1)) {
+ printf("sysctl_ctx_free(%p) failed!\n", &clist1);
+ /* Remove subtree forcefully... */
+ sysctl_remove_oid(a_root, 1, 1);
+ } else
+ printf("Ok\n");
+ break;
+ default :
+ error = EOPNOTSUPP;
+ break;
+ }
+ return error;
+}
+
+static moduledata_t mod_data= {
+ "dyn_sysctl",
+ load,
+ 0
+};
+
+DECLARE_MODULE(dyn_sysctl, mod_data, SI_SUB_EXEC, SI_ORDER_ANY);
diff --git a/share/examples/kld/firmware/Makefile b/share/examples/kld/firmware/Makefile
new file mode 100644
index 0000000..b4b733f
--- /dev/null
+++ b/share/examples/kld/firmware/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR= fwimage fwconsumer
+
+.include <bsd.subdir.mk>
diff --git a/share/examples/kld/firmware/README b/share/examples/kld/firmware/README
new file mode 100644
index 0000000..075c5e5
--- /dev/null
+++ b/share/examples/kld/firmware/README
@@ -0,0 +1,18 @@
+$FreeBSD$
+
+This is a simple example of the firmware(9) system. It consists of two
+parts:
+
+1) fwimage
+ This is the firmware image (the ascii art of beastie from the boot
+ menu). The Makefile lists the firmware file "firmware.img" and the
+ short handle for this firmware image "beastie".
+ Note that the module is called "beastie" as well so that it can be
+ loaded automatically if requested.
+
+2) fwconsumer
+ This module tries to get the a firmware image called "beastie",
+ checks if the data is '\0'-terminated and prints it to the console.
+ It keeps a reference to the firmware until it is unloaded.
+
+This is mainly to demonstrate how to construct firmware image modules.
diff --git a/share/examples/kld/firmware/fwconsumer/Makefile b/share/examples/kld/firmware/fwconsumer/Makefile
new file mode 100644
index 0000000..1dea0c7
--- /dev/null
+++ b/share/examples/kld/firmware/fwconsumer/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+KMOD= fw_consumer
+SRCS= fw_consumer.c
+
+.include <bsd.kmod.mk>
diff --git a/share/examples/kld/firmware/fwconsumer/fw_consumer.c b/share/examples/kld/firmware/fwconsumer/fw_consumer.c
new file mode 100644
index 0000000..97ab99a
--- /dev/null
+++ b/share/examples/kld/firmware/fwconsumer/fw_consumer.c
@@ -0,0 +1,78 @@
+/*-
+ * Copyright (c) 2006, Max Laier <mlaier@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.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/errno.h>
+#include <sys/systm.h>
+#include <sys/linker.h>
+#include <sys/firmware.h>
+#include <sys/proc.h>
+#include <sys/module.h>
+
+static struct firmware *fp;
+
+static int
+fw_consumer_modevent(module_t mod, int type, void *unused)
+{
+ switch (type) {
+ case MOD_LOAD:
+ fp = firmware_get("beastie");
+
+ if (fp == NULL)
+ return (ENOENT);
+
+ if (((const char *)fp->data)[fp->datasize - 1] != '\0') {
+ firmware_put(fp, FIRMWARE_UNLOAD);
+ return (EINVAL);
+ }
+ printf("%s", (const char *)fp->data);
+
+ return (0);
+ case MOD_UNLOAD:
+ printf("Bye!\n");
+
+ if (fp != NULL) {
+ printf("%s", (const char *)fp->data);
+ firmware_put(fp, FIRMWARE_UNLOAD);
+ }
+
+ return (0);
+ }
+ return (EINVAL);
+}
+
+static moduledata_t fw_consumer_mod = {
+ "fw_consumer",
+ fw_consumer_modevent,
+ 0
+};
+DECLARE_MODULE(fw_consumer, fw_consumer_mod, SI_SUB_DRIVERS, SI_ORDER_ANY);
+MODULE_VERSION(fw_consumer, 1);
+MODULE_DEPEND(fw_consumer, firmware, 1, 1, 1);
diff --git a/share/examples/kld/firmware/fwimage/Makefile b/share/examples/kld/firmware/fwimage/Makefile
new file mode 100644
index 0000000..5c0ad7a
--- /dev/null
+++ b/share/examples/kld/firmware/fwimage/Makefile
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+KMOD= beastie
+FIRMWS= firmware.img:beastie
+
+.include <bsd.kmod.mk>
diff --git a/share/examples/kld/firmware/fwimage/firmware.img b/share/examples/kld/firmware/fwimage/firmware.img
new file mode 100644
index 0000000..afc3c23
--- /dev/null
+++ b/share/examples/kld/firmware/fwimage/firmware.img
Binary files differ
diff --git a/share/examples/kld/syscall/Makefile b/share/examples/kld/syscall/Makefile
new file mode 100644
index 0000000..5c8f8f6
--- /dev/null
+++ b/share/examples/kld/syscall/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+SUBDIR= module test
+
+load unload: _SUBDIR
+
+.include <bsd.subdir.mk>
diff --git a/share/examples/kld/syscall/module/Makefile b/share/examples/kld/syscall/module/Makefile
new file mode 100644
index 0000000..17066d1
--- /dev/null
+++ b/share/examples/kld/syscall/module/Makefile
@@ -0,0 +1,7 @@
+# Makefile for building the sample syscall module
+# $FreeBSD$
+
+KMOD= syscall
+SRCS= syscall.c
+
+.include <bsd.kmod.mk>
diff --git a/share/examples/kld/syscall/module/syscall.c b/share/examples/kld/syscall/module/syscall.c
new file mode 100644
index 0000000..3416f3c
--- /dev/null
+++ b/share/examples/kld/syscall/module/syscall.c
@@ -0,0 +1,87 @@
+/*-
+ * Copyright (c) 1999 Assar Westerlund
+ * 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/param.h>
+#include <sys/proc.h>
+#include <sys/module.h>
+#include <sys/sysproto.h>
+#include <sys/sysent.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+
+/*
+ * The function for implementing the syscall.
+ */
+
+static int
+hello (struct thread *td, void *arg)
+{
+ printf ("hello kernel\n");
+ return 0;
+}
+
+/*
+ * The `sysent' for the new syscall
+ */
+
+static struct sysent hello_sysent = {
+ 0, /* sy_narg */
+ hello /* sy_call */
+};
+
+/*
+ * The offset in sysent where the syscall is allocated.
+ */
+
+static int offset = NO_SYSCALL;
+
+/*
+ * The function called at load/unload.
+ */
+
+static int
+load (struct module *module, int cmd, void *arg)
+{
+ int error = 0;
+
+ switch (cmd) {
+ case MOD_LOAD :
+ printf ("syscall loaded at %d\n", offset);
+ break;
+ case MOD_UNLOAD :
+ printf ("syscall unloaded from %d\n", offset);
+ break;
+ default :
+ error = EOPNOTSUPP;
+ break;
+ }
+ return error;
+}
+
+SYSCALL_MODULE(syscall, &offset, &hello_sysent, load, NULL);
diff --git a/share/examples/kld/syscall/test/Makefile b/share/examples/kld/syscall/test/Makefile
new file mode 100644
index 0000000..83ad954
--- /dev/null
+++ b/share/examples/kld/syscall/test/Makefile
@@ -0,0 +1,7 @@
+# Makefile for simple caller of syscall
+# $FreeBSD$
+
+PROG= call
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/share/examples/kld/syscall/test/call.c b/share/examples/kld/syscall/test/call.c
new file mode 100644
index 0000000..9183997
--- /dev/null
+++ b/share/examples/kld/syscall/test/call.c
@@ -0,0 +1,54 @@
+/*-
+ * Copyright (c) 1999 Assar Westerlund
+ * 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 <sys/syscall.h>
+#include <sys/types.h>
+#include <sys/module.h>
+
+static void usage (void);
+
+static void
+usage (void)
+{
+ fprintf (stderr, "call syscall-number\n");
+ exit (1);
+}
+
+int
+main(int argc, char **argv)
+{
+ char *endptr;
+ int syscall_num;
+ struct module_stat stat;
+
+ stat.version = sizeof(stat);
+ modstat(modfind("syscall"), &stat);
+ syscall_num = stat.data.intval;
+ return syscall (syscall_num);
+}
diff --git a/share/examples/libvgl/Makefile b/share/examples/libvgl/Makefile
new file mode 100644
index 0000000..6b4e916
--- /dev/null
+++ b/share/examples/libvgl/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG= demo
+NO_MAN=
+DPADD= ${LIBVGL}
+LDADD= -lvgl
+
+.include <bsd.prog.mk>
diff --git a/share/examples/libvgl/demo.c b/share/examples/libvgl/demo.c
new file mode 100644
index 0000000..781f6a1
--- /dev/null
+++ b/share/examples/libvgl/demo.c
@@ -0,0 +1,123 @@
+/*-
+ * Copyright (c) 1991-1997 Søren Schmidt
+ * 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
+ * in this position and unchanged.
+ * 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
+ *
+ * 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/types.h>
+#include <sys/fbio.h>
+#include <sys/kbio.h>
+#include <sys/consio.h>
+#include <vgl.h>
+
+int
+main(int argc, char **argv)
+{
+ int y, xsize, ysize, i,j;
+ VGLBitmap *tmp;
+
+ // set graphics mode, here 320x240 256 colors
+ // supported modes are (from <sys/consio.h>):
+ // SW_VGA_CG320: std VGA 320x200 256 colors
+ // SW_VGA_MODEX: Modex VGA 320x240 256 colors
+ // SW_VGA_VG640: std VGA 640x480 16 colors
+ VGLInit(SW_VGA_MODEX);
+
+ // initialize mouse and show pointer
+ VGLMouseInit(VGL_MOUSESHOW);
+
+ // VGLDisplay is a ptr to a struct Bitmap defined and initialized by
+ // libvgl. The Bitmap points directly to screen memory etc.
+ xsize=VGLDisplay->Xsize;
+ ysize=VGLDisplay->Ysize;
+
+ // alloc a new bitmap
+ tmp = VGLBitmapCreate(MEMBUF, 256, 256, NULL);
+ VGLBitmapAllocateBits(tmp);
+ VGLClear(tmp, 0);
+
+ // fill the screen with colored lines
+ for (y=0; y<ysize; y++)
+ VGLLine(VGLDisplay, 0, y, xsize-1, y, y/2 % 256);
+
+ // draw some lines and circles just to show off
+ VGLLine(VGLDisplay, 0, 0, xsize-1, ysize-1, 63);
+ VGLLine(VGLDisplay, 0, ysize-1, xsize-1, 0, 63);
+ VGLLine(VGLDisplay, 0, 0, 0, ysize-1, 63);
+ VGLLine(VGLDisplay, xsize-1, 0, xsize-1, ysize-1, 63);
+ VGLEllipse(VGLDisplay, 256, 0, 256, 256, 63);
+ VGLEllipse(VGLDisplay, 0, 256, 256, 256, 0);
+
+ // some text is also usefull
+ VGLBitmapString(VGLDisplay, 100,100,
+ "This is text", 63, 0, 0, VGL_DIR_RIGHT);
+ sleep(2);
+ VGLBitmapString(VGLDisplay, 100,100,
+ "This is text", 63, 0, 0, VGL_DIR_UP);
+ sleep(2);
+ VGLBitmapString(VGLDisplay, 100,100,
+ "This is text", 63, 0, 0, VGL_DIR_LEFT);
+ sleep(2);
+ VGLBitmapString(VGLDisplay, 100,100,
+ "This is text", 63, 0, 0, VGL_DIR_DOWN);
+ sleep(2);
+
+ // now show some simple bitblit
+ for (i=0; i<256; i++)
+ for (j=0; j<256; j++)
+ tmp->Bitmap[i+256*j] = i%16;
+ VGLBitmapCopy(tmp, 0, 0, VGLDisplay, 0, 0, 128, 128);
+ for (i=0; i<256; i++)
+ for (j=0; j<256; j++)
+ tmp->Bitmap[i+256*j] = j%16;
+ VGLBitmapCopy(tmp, 0, 0, VGLDisplay, 3, 128, 128, 128);
+ sleep(2);
+ VGLBitmapCopy(VGLDisplay, 237, 311, tmp, 64, 64, 128, 128);
+ VGLBitmapCopy(tmp, 32, 32, VGLDisplay, 400, 128, 128, 128);
+ sleep(2);
+ VGLBitmapCopy(VGLDisplay, 300, 300, VGLDisplay, 500, 128, 128, 128);
+ sleep(5);
+ i=0;
+
+ // loop around drawing and copying
+ while (++i) {
+ VGLBitmapCopy(VGLDisplay, rand()%xsize, rand()%ysize,
+ VGLDisplay, rand()%xsize, rand()%ysize,
+ rand()%xsize, rand()%ysize);
+ VGLLine(VGLDisplay, rand()%xsize, rand()%ysize,
+ rand()%xsize, rand()%ysize, rand()%256);
+ VGLEllipse(VGLDisplay, rand()%xsize, rand()%ysize,
+ rand()%xsize/2, rand()%ysize/2, rand()%256);
+ rand();
+ if (i > 1000) break;
+ }
+
+ // restore screen to its original mode
+ VGLEnd();
+ return 0;
+}
+
diff --git a/share/examples/mdoc/POSIX-copyright b/share/examples/mdoc/POSIX-copyright
new file mode 100644
index 0000000..d1bea59
--- /dev/null
+++ b/share/examples/mdoc/POSIX-copyright
@@ -0,0 +1,36 @@
+.\" Copyright (c) [year] [your name]
+.\" 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.
+.\"
+.\" Portions of this text are reprinted and reproduced in electronic form
+.\" from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology --
+.\" Portable Operating System Interface (POSIX), The Open Group Base
+.\" Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of
+.\" Electrical and Electronics Engineers, Inc and The Open Group. In the
+.\" event of any discrepancy between this version and the original IEEE and
+.\" The Open Group Standard, the original IEEE and The Open Group Standard is
+.\" the referee document. The original Standard can be obtained online at
+.\" http://www.opengroup.org/unix/online.html.
+.\"
+.\" $FreeBSD$
+.\"
diff --git a/share/examples/mdoc/deshallify.sh b/share/examples/mdoc/deshallify.sh
new file mode 100644
index 0000000..361753f
--- /dev/null
+++ b/share/examples/mdoc/deshallify.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Script to remove shall clauses.
+#
+# $FreeBSD$
+#
+sed -e 's/s shall define/s define/g' \
+ -e 's/shall define/defines/g' \
+ -e 's/shall attempt/attempts/g' \
+ -e 's/shall include/includes/g' \
+ -e 's/shall return zero and have/returns zero and has/g' \
+ -e 's/shall return/returns/g' \
+ -e 's/shall also include/also includes/g' \
+ -e 's/pipe or FIFO shall be /pipe of FIFO are /g' \
+ -e 's/s shall be /s are /g' \
+ -e 's/shall be /is /g' \
+ -e 's/s shall create/s create/g' \
+ -e 's/shall create /creates /g' \
+ -e 's/shall perform/performs/g' \
+ -e 's/shall affect the/affect the/g' \
+ -e 's/s shall have/s have/g' \
+ -e 's/shall have/has/g' \
+ -e 's/shall transfer/transfers/g' \
+ -e 's/shall block/blocks/g' \
+ -e 's/shall not block/does not block/g' \
+ -e 's/shall occur/occurs/g' \
+ -e 's/shall complete/complete/g' \
+ -e 's/shall mark for update/marks for update/g' \
+ -e 's/s shall fail/s fail/g' \
+ -e 's/shall fail/fails/g' \
+ -e 's/s shall generate/s generate/g' \
+ -e 's/shall generate/generates/g' \
+ -e 's/shall place/places/g' \
+ -e 's/s shall default/s default/g' \
+ -e 's/shall default/defaults/g' \
+ -e 's/pplications shall ensure/pplications must ensure/g' \
+ -e 's/pplication shall ensure/pplication must ensure/g' \
+ -e 's/shall always begin/always begins/g' \
+ -e 's/s shall begin /s begin /g' \
+ -e 's/shall begin /begins /g' \
+ -e 's/shall always contain /always contains /g' \
+ -e 's/shall produce/produces/g' \
+ -e 's/shall appear/appears/g' \
+ -e 's/s shall be$/s are/g' \
+ -e 's/shall be$/is/g' \
+ -e 's/which shall result /which results /g' \
+ -e 's/s shall not/s are not/g' \
+ -e 's/shall not be/is not/g' \
+ -e 's/shall not/is not/g' \
+ -e 's/s shall behave/s behave/g' \
+ -e 's/shall behave/behaves/g' \
+ -e 's/shall specify/specifies/g' \
+ -e 's/s shall override/s override/g' \
+ -e 's/shall override/overrides/g' \
+ -e 's/shall apply /applies /g' \
+ -e 's/s shall start/s start/g' \
+ -e 's/shall start /starts /g' \
+ -e 's/s shall affect/s affect/g' \
+ -e 's/shall affect/affects/g' \
+ -e 's/s shall indicate/s indicate/g' \
+ -e 's/shall indicate/indicates/g' \
+ -e 's/shall set /set /g' \
+ -e 's/s shall recognize/s recognize/g' \
+ -e 's/shall recognize /recognizes /g' \
+ -e 's/shall also be /is also /g' \
+ -e 's/s shall enter/s enter/g' \
+ -e 's/shall enter /enters /g' \
+ -e 's/shall take /take /g' \
+ -e 's/they shall only take /they only take /g' \
+ -e 's/shall consist /consist /g' \
+ -e 's/s shall cause/s cause/g' \
+ -e 's/shall cause/causes/g' \
+ -e 's/s shall replace/s replace/g' \
+ -e 's/shall replace/replaces/g' \
+ -e 's/shall become/becomes/g' \
+ -e 's/shall each consist/each consist/g' \
+ $1 > $1.x
diff --git a/share/examples/mdoc/example.1 b/share/examples/mdoc/example.1
new file mode 100644
index 0000000..a578502
--- /dev/null
+++ b/share/examples/mdoc/example.1
@@ -0,0 +1,155 @@
+.\" Copyright (c) [year] [your name]
+.\" 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: The date here should be updated whenever a non-trivial
+.\" change is made to the manual page.
+.Dd December 8, 1999
+.Dt EXAMPLE 1
+.Os
+.Sh NAME
+.Nm example
+.Nd "example command manual page"
+.Sh SYNOPSIS
+.Nm
+.Op Fl abc
+.Op Fl d Ar argument
+.Ar file
+.Sh DESCRIPTION
+This is an example manual page for the
+.Nm
+command.
+It is intended that this example can be used as a template
+when writing a new manual page.
+.Pp
+The options are as follows:
+.Bl -tag -width ".Fl d Ar argument"
+.It Fl a
+Example optional
+.Fl a
+option.
+.It Fl b
+Example optional
+.Fl b
+option.
+.It Fl c
+Example optional
+.Fl c
+option.
+.It Fl d Ar argument
+Example optional
+.Fl d
+option with required argument
+.Ar argument .
+.It Ar file
+Required argument
+.Ar file .
+.El
+.Sh ENVIRONMENT
+The
+.Nm
+command ignores the
+.Ev EXAMPLE
+environment variable.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/null" -compact
+.It Pa /dev/null
+Example of a file in the
+.Sx FILES
+section.
+.El
+.Sh EXIT STATUS
+.Ex -std
+.Sh EXAMPLES
+The following is an example of a typical usage
+of the
+.Nm
+command:
+.Pp
+.Dl "example -abc -d xyzzy /dev/null"
+.Sh DIAGNOSTICS
+The command may fail for one of the following reasons:
+.Bl -diag
+.It "example error message"
+An example of an error message.
+.It "another example error message."
+Self explanatory.
+.El
+.Sh COMPATIBILITY
+The
+.Nm
+command has no known compatibility issues.
+.Sh SEE ALSO
+.Xr example 3 ,
+.Xr example 4 ,
+.Xr mdoc 7 ,
+.Xr example 9
+.Rs
+.%A "A. B. Author"
+.%T "Example RFC Title"
+.%O RFC0000
+.Re
+.Rs
+.%A "A. B. Author"
+.%B "Example Book Title"
+.%O ISBN-0-000-00000-0
+.Re
+.Rs
+.%A "A. B. Author"
+.%D "January 1997"
+.%J "Example Journal Name"
+.%T "Example Article Title"
+.Re
+.Sh STANDARDS
+If the command conforms to some standard, such as
+.St -p1003.2
+or
+.St -isoC ,
+it should be noted here.
+.Sh HISTORY
+The
+.Nm
+manual page example first appeared in
+.Fx 2.2 .
+.Pp
+Some other common
+.Sx HISTORY
+section examples are:
+.Pp
+The
+.Nm
+manual page example first appeared in
+.Bx 4.4 .
+.Pp
+The
+.Nm
+manual page example first appeared in
+.At v6 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Mike Pritchard Aq mpp@FreeBSD.org .
+.Sh BUGS
+The actual code for this command is vaporware.
diff --git a/share/examples/mdoc/example.3 b/share/examples/mdoc/example.3
new file mode 100644
index 0000000..bbdd068
--- /dev/null
+++ b/share/examples/mdoc/example.3
@@ -0,0 +1,335 @@
+.\" Copyright (c) [year] [your name]
+.\" 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: The date here should be updated whenever a non-trivial
+.\" change is made to the manual page.
+.Dd July 30, 2004
+.Dt EXAMPLE 3
+.Os
+.Sh NAME
+.Nm example
+.Nd "example library function manual page"
+.Sh LIBRARY
+.\" Note: list of available libraries is available in mdoc(7)
+.Lb libc
+.Sh SYNOPSIS
+.In example.h
+.Ft int
+.Fn example "char *ptr" "int mode"
+.Sh DESCRIPTION
+This is an example library function manual page for the
+.Fn example
+function.
+It is intended that this example can be used as a template
+when writing a new manual page.
+.Pp
+The
+.Fn example
+function takes two arguments:
+.Fa ptr
+and
+.Fa mode .
+The argument
+.Fa mode
+may have one of the following values:
+.Bl -tag -width ".Dv EXAMPLE_ONE"
+.It Dv EXAMPLE_ONE
+First example of a defined variable.
+.Dv EXAMPLE_ONE
+is described below.
+.It Dv EXAMPLE_TWO
+Second example.
+.El
+.Pp
+The above values are defined in
+.In example.h
+as follows:
+.Bd -literal
+#define EXAMPLE_ONE 1
+#define EXAMPLE_TWO 2
+.Ed
+.Sh IMPLEMENTATION NOTES
+The
+.Fn example
+function is not actually implemented.
+.Sh RETURN VALUES
+.Rv -std example
+.Sh ENVIRONMENT
+The
+.Fn example
+library function ignores the
+.Ev EXAMPLE
+environment variable.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/null" -compact
+.It Pa /dev/null
+Example of a file in the
+.Sx FILES
+section.
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh COMPATIBILITY
+The
+.Fn example
+function has no known compatibility issues.
+.Sh ERRORS
+.\" Delete any errno's that are not returned by your
+.\" function or system call and then tailor the
+.\" remaining text as needed.
+The
+.Fn example
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EPERM
+Operation not permitted.
+.It Bq Er ENOENT
+No such file or directory.
+.It Bq Er ESRCH
+No such process.
+.It Bq Er EINTR
+Interrupted system call.
+.It Bq Er EIO
+Input/output error.
+.It Bq Er ENXIO
+Device not configured.
+.It Bq Er E2BIG
+Argument list too long.
+.It Bq Er ENOEXEC
+Exec format error.
+.It Bq Er EBADF
+Bad file descriptor.
+.It Bq Er ECHILD
+No child processes.
+.It Bq Er EDEADLK
+Resource deadlock avoided.
+.It Bq Er ENOMEM
+Cannot allocate memory.
+.It Bq Er EACCES
+Permission denied.
+.It Bq Er EFAULT
+Bad address.
+.It Bq Er ENOTBLK
+Block device required.
+.It Bq Er EBUSY
+Device busy.
+.It Bq Er EEXIST
+File exists.
+.It Bq Er EXDEV
+Cross-device link.
+.It Bq Er ENODEV
+Operation not supported by device.
+.It Bq Er ENOTDIR
+Not a directory.
+.It Bq Er EISDIR
+Is a directory.
+.It Bq Er EINVAL
+Invalid argument.
+.It Bq Er ENFILE
+Too many open files in system.
+.It Bq Er EMFILE
+Too many open files.
+.It Bq Er ENOTTY
+Inappropriate ioctl for device.
+.It Bq Er ETXTBSY
+Text file busy.
+.It Bq Er EFBIG
+File too large.
+.It Bq Er ENOSPC
+No space left on device.
+.It Bq Er ESPIPE
+Illegal seek.
+.It Bq Er EROFS
+Read-only file system.
+.It Bq Er EMLINK
+Too many links.
+.It Bq Er EPIPE
+Broken pipe.
+.It Bq Er EDOM
+Numerical argument out of domain.
+.It Bq Er ERANGE
+Result too large.
+.It Bq Er EAGAIN
+Resource temporarily unavailable.
+.It Bq Er EWOULDBLOCK
+Operation would block.
+.It Bq Er EINPROGRESS
+Operation now in progress.
+.It Bq Er EALREADY
+Operation already in progress.
+.It Bq Er ENOTSOCK
+Socket operation on non-socket.
+.It Bq Er EDESTADDRREQ
+Destination address required.
+.It Bq Er EMSGSIZE
+Message too long.
+.It Bq Er EPROTOTYPE
+Protocol wrong type for socket.
+.It Bq Er ENOPROTOOPT
+Protocol not available.
+.It Bq Er EPROTONOSUPPORT
+Protocol not supported.
+.It Bq Er ESOCKTNOSUPPORT
+Socket type not supported.
+.It Bq Er EOPNOTSUPP
+Operation not supported.
+.It Bq Er EPFNOSUPPORT
+Protocol family not supported.
+.It Bq Er EAFNOSUPPORT
+Address family not supported by protocol family.
+.It Bq Er EADDRINUSE
+Address already in use.
+.It Bq Er EADDRNOTAVAIL
+Cannot assign requested address.
+.It Bq Er ENETDOWN
+Network is down.
+.It Bq Er ENETUNREACH
+Network is unreachable.
+.It Bq Er ENETRESET
+Network dropped connection on reset.
+.It Bq Er ECONNABORTED
+Software causes connection abort.
+.It Bq Er ENOBUFS
+No buffer space available.
+.It Bq Er EISCONN
+Socket is already connected.
+.It Bq Er ENOTCONN
+Socket is not connected.
+.It Bq Er ESHUTDOWN
+Cannot send after socket shutdown.
+.It Bq Er ETOOMANYREFS
+Too many references: cannot splice.
+.It Bq Er ETIMEDOUT
+Operation timed out.
+.It Bq Er ECONNREFUSED
+Connection refused.
+.It Bq Er ELOOP
+Too many levels of symbolic links.
+.It Bq Er ENAMETOOLONG
+File name too long.
+.It Bq Er EHOSTDOWN
+Host is down.
+.It Bq Er EHOSTUNREACH
+No route to host.
+.It Bq Er ENOTEMPTY
+Directory not empty.
+.It Bq Er EPROCLIM
+Too many processes.
+.It Bq Er EUSERS
+Too many users.
+.It Bq Er EDQUOT
+Disc quota exceeded.
+.It Bq Er ESTALE
+Stale NFS file handle.
+.It Bq Er EREMOTE
+Too many levels of remote in path.
+.It Bq Er EBADRPC
+RPC struct is bad.
+.It Bq Er ERPCMISMATCH
+RPC version wrong.
+.It Bq Er EPROGUNAVAIL
+RPC program not available.
+.It Bq Er EPROGMISMATCH
+Program version wrong.
+.It Bq Er EPROCUNAVAIL
+Bad procedure for program.
+.It Bq Er ENOLCK
+No locks available.
+.It Bq Er ENOSYS
+Function not implemented.
+.It Bq Er EFTYPE
+Inappropriate file type or format.
+.It Bq Er EAUTH
+Authentication error.
+.It Bq Er ENEEDAUTH
+Need authenticator.
+.It Bq Er EIDRM
+Identifier removed.
+.It Bq Er ENOMSG
+No message of desired type.
+.It Bq Er EOVERFLOW
+Value too large to be stored in data type.
+.It Bq Er ECANCELED
+Operation canceled.
+.It Bq Er EILSEQ
+Illegal byte sequence.
+.It Bq Er ENOATTR
+Attribute not found.
+.It Bq Er EDOOFUS
+Programming error.
+.El
+.Sh SEE ALSO
+.Xr example 1 ,
+.Xr example 4 ,
+.Xr mdoc 7 ,
+.Xr example 9
+.Rs
+.%A "A. B. Author"
+.%T "Example RFC Title"
+.%O RFC0000
+.Re
+.Rs
+.%A "A. B. Author"
+.%B "Example Book Title"
+.%O ISBN-0-000-00000-0
+.Re
+.Rs
+.%A "A. B. Author"
+.%D "January 1997"
+.%J "Example Journal Name"
+.%T "Example Article Title"
+.Re
+.Sh STANDARDS
+If the function conforms to some standard, such as
+.St -p1003.1-2004
+or
+.St -isoC-99 ,
+it should be noted here.
+.Sh HISTORY
+The
+.Nm
+manual page example first appeared in
+.Fx 2.2 .
+.Pp
+Some other common
+.Sx HISTORY
+section examples are:
+.Pp
+The
+.Nm
+manual page example first appeared in
+.Bx 4.4 .
+.Pp
+The
+.Nm
+manual page example first appeared in
+.At v6 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Mike Pritchard Aq mpp@FreeBSD.org .
+.Sh BUGS
+The actual code for this function is vaporware.
diff --git a/share/examples/mdoc/example.4 b/share/examples/mdoc/example.4
new file mode 100644
index 0000000..a5fa1a6
--- /dev/null
+++ b/share/examples/mdoc/example.4
@@ -0,0 +1,127 @@
+.\" Copyright (c) [year] [your name]
+.\" 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: The date here should be updated whenever a non-trivial
+.\" change is made to the manual page.
+.Dd April 1, 2006
+.Dt EXAMPLE 4 i386
+.Os
+.Sh NAME
+.Nm example
+.Nd "example device driver manual page"
+.Sh SYNOPSIS
+To compile the
+.Ns Nm
+driver into the kernel,
+place the following lines in the
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device example"
+.Cd "options EXAMPLE_DEBUG"
+.Ed
+.Pp
+Alternatively, to load the
+.Ns Nm
+driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+example_load="YES"
+.Ed
+.Sh DESCRIPTION
+This is an example device driver manual page for the
+.Nm
+driver.
+It is intended that this example can be used as a template
+when writing a new manual page.
+.Pp
+The
+.Nm
+driver supports the following ioctls:
+.Bl -tag -width ".Dv EIOCNULL"
+.It Dv EIOCEX
+Example ioctl.
+.It Dv EIOCNULL
+Example ioctl.
+.El
+.Pp
+If the kernel is compiled with the
+.Dv EXAMPLE_DEBUG
+option, then additional debugging messages will be displayed.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following example hardware:
+.Pp
+.Bl -bullet -compact
+.It
+Example device 4201
+.It
+Example device 4202
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/null" -compact
+.It Pa /dev/null
+Example of a file in the
+.Sx FILES
+section.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "example%d: example diagnostic message."
+An example of a diagnostic message.
+.It "example%d: another example diagnostic message."
+Self explanatory.
+.El
+.Sh SEE ALSO
+.Xr example 1 ,
+.Xr example 3 ,
+.Xr mdoc 7 ,
+.Xr example 9
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.2 .
+.Pp
+Some other common
+.Sx HISTORY
+section examples are:
+.Pp
+The
+.Nm
+manual page example first appeared in
+.Bx 4.4 .
+.Pp
+The
+.Nm
+manual page example first appeared in
+.At v6 .
+.Sh AUTHORS
+This manual page was written by
+.An Mike Pritchard Aq mpp@FreeBSD.org .
+.Sh BUGS
+The actual code for this device driver is vaporware.
diff --git a/share/examples/mdoc/example.9 b/share/examples/mdoc/example.9
new file mode 100644
index 0000000..0fb5a10
--- /dev/null
+++ b/share/examples/mdoc/example.9
@@ -0,0 +1,343 @@
+.\" Copyright (c) [year] [your name]
+.\" 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: The date here should be updated whenever a non-trivial
+.\" change is made to the manual page.
+.Dd September 27, 2006
+.Dt EXAMPLE 9
+.Os
+.Sh NAME
+.Nm example
+.Nd "example kernel interface manual page"
+.Sh SYNOPSIS
+.In sys/example.h
+.Ft int
+.Fn example "char *ptr" "int mode"
+.Sh DESCRIPTION
+This is an example manual page for the
+.Fn example
+kernel function.
+It is intended that this example can be used as a template
+when writing a new manual page.
+.Pp
+The
+.Fn example
+function takes two arguments:
+.Fa ptr
+and
+.Fa mode .
+The argument
+.Fa mode
+may have one of the following values:
+.Bl -tag -width ".Dv EXAMPLE_ONE"
+.It Dv EXAMPLE_ONE
+First example of a defined variable.
+.Dv EXAMPLE_ONE
+is described below.
+.It Dv EXAMPLE_TWO
+Second example.
+.El
+.Pp
+The above values are defined in
+.In example.h
+as follows:
+.Bd -literal
+#define EXAMPLE_ONE 1
+#define EXAMPLE_TWO 2
+.Ed
+.Sh IMPLEMENTATION NOTES
+The
+.Fn example
+function is not actually implemented.
+.Sh LOCKING
+The
+.Va example_lock
+lock must be held before
+.Fn example
+is called.
+.Pp
+Since
+.Va example_lock
+is a
+.Xr mutex 9 ,
+no sleepable locks (i.e.,
+.Xr sx 9
+locks) can be acquired in
+.Fn example .
+.Sh RETURN VALUES
+The
+.Fn example
+function returns the value 0 if successful;
+otherwise one of the values listed in the
+.Sx ERRORS
+section is returned, to indicate the error.
+.Sh EXAMPLES
+.Bd -literal
+ int error;
+
+ mtx_lock(&example_lock);
+ if ((error = example(NULL, EXAMPLE_ONE)) != 0) {
+ mtx_unlock(&example_lock);
+ return (error);
+ }
+ mtx_unlock(&example_lock);
+.Ed
+.Sh COMPATIBILITY
+The
+.Fn example
+function has no known compatibility issues.
+.Sh ERRORS
+.\" Delete any errno's that are not returned by your
+.\" function or system call and then tailor the
+.\" remaining text as needed.
+The
+.Fn example
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EPERM
+Operation not permitted.
+.It Bq Er ENOENT
+No such file or directory.
+.It Bq Er ESRCH
+No such process.
+.It Bq Er EINTR
+Interrupted system call.
+.It Bq Er EIO
+Input/output error.
+.It Bq Er ENXIO
+Device not configured.
+.It Bq Er E2BIG
+Argument list too long.
+.It Bq Er ENOEXEC
+Exec format error.
+.It Bq Er EBADF
+Bad file descriptor.
+.It Bq Er ECHILD
+No child processes.
+.It Bq Er EDEADLK
+Resource deadlock avoided.
+.It Bq Er ENOMEM
+Cannot allocate memory.
+.It Bq Er EACCES
+Permission denied.
+.It Bq Er EFAULT
+Bad address.
+.It Bq Er ENOTBLK
+Block device required.
+.It Bq Er EBUSY
+Device busy.
+.It Bq Er EEXIST
+File exists.
+.It Bq Er EXDEV
+Cross-device link.
+.It Bq Er ENODEV
+Operation not supported by device.
+.It Bq Er ENOTDIR
+Not a directory.
+.It Bq Er EISDIR
+Is a directory.
+.It Bq Er EINVAL
+Invalid argument.
+.It Bq Er ENFILE
+Too many open files in system.
+.It Bq Er EMFILE
+Too many open files.
+.It Bq Er ENOTTY
+Inappropriate ioctl for device.
+.It Bq Er ETXTBSY
+Text file busy.
+.It Bq Er EFBIG
+File too large.
+.It Bq Er ENOSPC
+No space left on device.
+.It Bq Er ESPIPE
+Illegal seek.
+.It Bq Er EROFS
+Read-only file system.
+.It Bq Er EMLINK
+Too many links.
+.It Bq Er EPIPE
+Broken pipe.
+.It Bq Er EDOM
+Numerical argument out of domain.
+.It Bq Er ERANGE
+Result too large.
+.It Bq Er EAGAIN
+Resource temporarily unavailable.
+.It Bq Er EWOULDBLOCK
+Operation would block.
+.It Bq Er EINPROGRESS
+Operation now in progress.
+.It Bq Er EALREADY
+Operation already in progress.
+.It Bq Er ENOTSOCK
+Socket operation on non-socket.
+.It Bq Er EDESTADDRREQ
+Destination address required.
+.It Bq Er EMSGSIZE
+Message too long.
+.It Bq Er EPROTOTYPE
+Protocol wrong type for socket.
+.It Bq Er ENOPROTOOPT
+Protocol not available.
+.It Bq Er EPROTONOSUPPORT
+Protocol not supported.
+.It Bq Er ESOCKTNOSUPPORT
+Socket type not supported.
+.It Bq Er EOPNOTSUPP
+Operation not supported.
+.It Bq Er EPFNOSUPPORT
+Protocol family not supported.
+.It Bq Er EAFNOSUPPORT
+Address family not supported by protocol family.
+.It Bq Er EADDRINUSE
+Address already in use.
+.It Bq Er EADDRNOTAVAIL
+Cannot assign requested address.
+.It Bq Er ENETDOWN
+Network is down.
+.It Bq Er ENETUNREACH
+Network is unreachable.
+.It Bq Er ENETRESET
+Network dropped connection on reset.
+.It Bq Er ECONNABORTED
+Software causes connection abort.
+.It Bq Er ENOBUFS
+No buffer space available.
+.It Bq Er EISCONN
+Socket is already connected.
+.It Bq Er ENOTCONN
+Socket is not connected.
+.It Bq Er ESHUTDOWN
+Cannot send after socket shutdown.
+.It Bq Er ETOOMANYREFS
+Too many references: cannot splice.
+.It Bq Er ETIMEDOUT
+Operation timed out.
+.It Bq Er ECONNREFUSED
+Connection refused.
+.It Bq Er ELOOP
+Too many levels of symbolic links.
+.It Bq Er ENAMETOOLONG
+File name too long.
+.It Bq Er EHOSTDOWN
+Host is down.
+.It Bq Er EHOSTUNREACH
+No route to host.
+.It Bq Er ENOTEMPTY
+Directory not empty.
+.It Bq Er EPROCLIM
+Too many processes.
+.It Bq Er EUSERS
+Too many users.
+.It Bq Er EDQUOT
+Disc quota exceeded.
+.It Bq Er ESTALE
+Stale NFS file handle.
+.It Bq Er EREMOTE
+Too many levels of remote in path.
+.It Bq Er EBADRPC
+RPC struct is bad.
+.It Bq Er ERPCMISMATCH
+RPC version wrong.
+.It Bq Er EPROGUNAVAIL
+RPC program not available.
+.It Bq Er EPROGMISMATCH
+Program version wrong.
+.It Bq Er EPROCUNAVAIL
+Bad procedure for program.
+.It Bq Er ENOLCK
+No locks available.
+.It Bq Er ENOSYS
+Function not implemented.
+.It Bq Er EFTYPE
+Inappropriate file type or format.
+.It Bq Er EAUTH
+Authentication error.
+.It Bq Er ENEEDAUTH
+Need authenticator.
+.It Bq Er EIDRM
+Identifier removed.
+.It Bq Er ENOMSG
+No message of desired type.
+.It Bq Er EOVERFLOW
+Value too large to be stored in data type.
+.It Bq Er ECANCELED
+Operation canceled.
+.It Bq Er EILSEQ
+Illegal byte sequence.
+.It Bq Er ENOATTR
+Attribute not found.
+.It Bq Er EDOOFUS
+Programming error.
+.El
+.Sh SEE ALSO
+.Xr example 1 ,
+.Xr example 3 ,
+.Xr example 4 ,
+.Xr mdoc 7 ,
+.Xr mutex 9
+.Rs
+.%A "A. B. Author"
+.%T "Example RFC Title"
+.%O RFC0000
+.Re
+.Rs
+.%A "A. B. Author"
+.%B "Example Book Title"
+.%O ISBN-0-000-00000-0
+.Re
+.Rs
+.%A "A. B. Author"
+.%D "January 1997"
+.%J "Example Journal Name"
+.%T "Example Article Title"
+.Re
+.Sh HISTORY
+The
+.Nm
+manual page example first appeared in
+.Fx 6.0 .
+.Pp
+Some other common
+.Sx HISTORY
+section examples are:
+.Pp
+The
+.Nm
+manual page example first appeared in
+.Bx 4.4 .
+.Pp
+The
+.Nm
+manual page example first appeared in
+.At v6 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Giorgos Keramidas Aq keramida@FreeBSD.org .
+.Sh BUGS
+The actual code for this function is vaporware.
diff --git a/share/examples/netgraph/ether.bridge b/share/examples/netgraph/ether.bridge
new file mode 100644
index 0000000..754e760
--- /dev/null
+++ b/share/examples/netgraph/ether.bridge
@@ -0,0 +1,170 @@
+#!/bin/sh
+# $FreeBSD$
+# This script sets up an Ethernet bridging network across multiple
+# Ethernet interfaces using the ng_bridge(4) and ng_ether(4) netgraph
+# node types.
+#
+# To use this script:
+#
+# 0. Make your own copy of this example script.
+#
+# 1. Give your bridging network a name by editing the definition of
+# ${BRIDGE_NAME} below. It must be a valid netgraph node name.
+#
+# 2. Edit the definitions of ${BRIDGE_IFACES} and ${LOCAL_IFACES}
+# as described below to define your bridging interfaces.
+#
+# 3. Run this script with "start" as the command line argument.
+#
+# 4. Examine bridging statistics by running this script with "stats"
+# as the command line argument.
+#
+# 5. Stop bridging by running this script with "stop" as the
+# command line argument.
+#
+# To run multiple independent bridging networks, create multiple
+# copies of this script with different variable definitions.
+#
+# To make a "brouted" network, with IP being routed and other protocols being
+# bridged, add all the interface in the BRIDGE_IFACES to the LOCAL_IFACES.
+# If you just want a normal bridge, just one will be enough.
+# In some cases you may want some combination.
+#
+
+# Give each bridging network a unique name here.
+
+BRIDGE_NAME="bnet0"
+
+# List the names of the interfaces that you want to bridge across
+# here in ${BRIDGE_IFACES}. If you want to include the local host
+# machine as well then set ${LOCAL_IFACES} as well (they may also be
+# listed in ${BRIDGE_IFACES}). Of course, any ${LOCAL_IFACE} must
+# be ifconfig(8)ured separately. If you don't want a ${LOCAL_IFACE}
+# then assign it the emtpy string.
+
+BRIDGE_IFACES="de0 fxp0 fxp1"
+LOCAL_IFACES="fxp0 fxp1"
+
+#####################################################################
+#### Everything below this point should not need to be modified. ####
+#####################################################################
+
+# Routine to verify node's existence.
+bridge_verify() {
+ ngctl info ${BRIDGE_NAME}: >/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ echo "${BRIDGE_NAME}: bridge network not found"
+ exit 1
+ fi
+}
+
+# Routine to get and display link stats.
+bridge_linkstats() {
+ STATS=`ngctl msg ${BRIDGE_NAME}: getstats $1`
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ echo "${STATS}" | fmt 2 | awk '/=/ { fl=index($0, "="); \
+ printf "%20s = %s\n", substr($0, 0, fl - 1), substr($0, fl + 1); }'
+}
+
+# Start/restart routine.
+bridge_start() {
+
+ # Load netgraph KLD's as necessary.
+ for KLD in ng_ether ng_bridge; do
+ if ! kldstat -v | grep -qw ${KLD}; then
+ echo -n "Loading ${KLD}.ko... "
+ kldload ${KLD} || exit 1
+ echo "done"
+ fi
+ done
+
+ # Reset all interfaces.
+ bridge_stop
+
+ # Verify all interfaces exist.
+ for ETHER in ${BRIDGE_IFACES} ${LOCAL_IFACES}; do
+ if ! ngctl info ${ETHER}: >/dev/null 2>&1; then
+ echo "Error: interface ${ETHER} does not exist"
+ exit 1
+ fi
+ ifconfig ${ETHER} up || exit 1
+ done
+
+ # Create new ng_bridge(4) node, attached to the first interface.
+ FIRSTIF=`echo ${BRIDGE_IFACES} | awk '{ print $1 }'`
+ ngctl mkpeer ${FIRSTIF}: bridge lower link0 || exit 1
+ ngctl name ${FIRSTIF}:lower ${BRIDGE_NAME} || exit 1
+
+ # Attach other interfaces as well.
+ LINKNUM=0
+ for ETHER in ${BRIDGE_IFACES}; do
+ if [ ${LINKNUM} != 0 ]; then
+ ngctl connect ${ETHER}: ${BRIDGE_NAME}: \
+ lower link${LINKNUM} || exit 1
+ fi
+ LINKNUM=`expr ${LINKNUM} + 1`
+ done
+
+ # Hook up local interface, if any.
+ for LOCAL_IFACE in ${LOCAL_IFACES}; do
+ ngctl connect ${LOCAL_IFACE}: ${BRIDGE_NAME}: \
+ upper link${LINKNUM} || exit 1
+ LINKNUM=`expr ${LINKNUM} + 1`
+ done
+
+ # Set all interfaces in promiscuous mode and don't overwrite src addr.
+ for ETHER in ${BRIDGE_IFACES}; do
+ ngctl msg ${ETHER}: setpromisc 1 || exit 1
+ ngctl msg ${ETHER}: setautosrc 0 || exit 1
+ done
+}
+
+# Stop routine.
+bridge_stop() {
+ ngctl kill ${BRIDGE_NAME}: >/dev/null 2>&1
+ for ETHER in ${BRIDGE_IFACES} ${LOCAL_IFACES}; do
+ ngctl kill ${ETHER}: >/dev/null 2>&1
+ done
+}
+
+# Stats routine.
+bridge_stats() {
+
+ # Make sure node exists.
+ bridge_verify
+
+ echo ""
+ echo "Statistics for bridging network ${BRIDGE_NAME}:"
+ echo ""
+ LINKNUM=0
+ for ETHER in ${BRIDGE_IFACES}; do
+ echo "Network interface ${ETHER}:"
+ bridge_linkstats ${LINKNUM}
+ LINKNUM=`expr ${LINKNUM} + 1`
+ done
+ for LOCAL_IFACE in ${LOCAL_IFACES}; do
+ echo "Local host interface ${LOCAL_IFACE}:"
+ bridge_linkstats ${LINKNUM}
+ LINKNUM=`expr ${LINKNUM} + 1`
+ done
+}
+
+# Main entry point.
+case $1 in
+ start)
+ bridge_start
+ ;;
+ stats)
+ bridge_verify
+ bridge_stats
+ ;;
+ stop)
+ bridge_verify
+ bridge_stop
+ ;;
+ *)
+ echo "usage: $0 [ start | stop | stats ]"
+ exit 1
+esac
diff --git a/share/examples/netgraph/frame_relay b/share/examples/netgraph/frame_relay
new file mode 100644
index 0000000..0becb47
--- /dev/null
+++ b/share/examples/netgraph/frame_relay
@@ -0,0 +1,46 @@
+#!/bin/sh
+# script to set up a frame relay link on the sr card.
+# The dlci used is selected below. The default is 16
+# $FreeBSD$
+
+CARD=sr0
+DLCI=16
+
+# create a frame_relay type node and attach it to the sync port.
+ngctl mkpeer ${CARD}: frame_relay rawdata downstream
+
+# Attach the dlci output of the (de)multiplexor to a new
+# Link management protocol node.
+ngctl mkpeer ${CARD}:rawdata lmi dlci0 auto0
+
+# Also attach dlci 1023, as it needs both to try autoconfiguring.
+# The Link management protocol is now alive and probing..
+ngctl connect ${CARD}:rawdata ${CARD}:rawdata.dlci0 dlci1023 auto1023
+
+# Attach the DLCI(channel) the Telco has assigned you to
+# a node to hadle whatever protocol encapsulation your peer
+# is using. In this case rfc1490 encapsulation.
+ngctl mkpeer ${CARD}:rawdata rfc1490 dlci${DLCI} downstream
+
+
+# Attach the ip (inet) protocol output of the protocol mux to the ip (inet)
+# input of a netgraph "interface" node (ifconfig should show it as "ng0").
+#if interface ng0 needs to be created use a mkpeer command.. e.g.
+ngctl mkpeer ${CARD}:rawdata.dlci${DLCI} iface inet inet
+
+# if ng0 already exists, use a CONNECT command instead of a mkpeer. e.g.
+# ngctl connect ${CARD}:rawdata.dlci${DLCI} ng0: inet inet
+
+# Then use ifconfig on interface ng0 as usual
+
+# A variant on this whole set might use the 'name' command to make it more
+# readable. but it doesn't work if you have multiple lines or dlcis
+# e.g.
+# ngctl mkpeer ${CARD}: frame_relay rawdata downstream
+# ngctl name ${CARD}:rawdata mux
+# ngctl mkpeer mux: lmi dlci0 auto0
+# ngctl name mux:dlci0 lmi
+# ngctl connect mux: lmi: dlci1023 auto1023
+# ngctl mkpeer mux: rfc1490 dlci${DLCI} downstream
+# ngctl mux:dlci${DLCI} protomux
+# ngctl mkpeer protomux: iface inet inet
diff --git a/share/examples/netgraph/ngctl b/share/examples/netgraph/ngctl
new file mode 100644
index 0000000..80a7f22
--- /dev/null
+++ b/share/examples/netgraph/ngctl
@@ -0,0 +1,173 @@
+# $FreeBSD$
+
+#
+# This is an example that shows how to send ASCII formatted control
+# messages to a node using ngctl(8).
+#
+# What we will do here create a divert(4) tap. This simply dumps
+# out all packets diverted by some ipfw(8) divert rule to the console.
+#
+# Lines that begin with ``$'' (shell prompt) or ``+'' (ngctl prompt)
+# indicate user input
+#
+
+# First, start up ngctl in interactive mode:
+
+ $ ngctl
+ Available commands:
+ connect Connects hook <peerhook> of the node at <relpath> to <hook>
+ debug Get/set debugging verbosity level
+ help Show command summary or get more help on a specific command
+ list Show information about all nodes
+ mkpeer Create and connect a new node to the node at "path"
+ msg Send a netgraph control message to the node at "path"
+ name Assign name <name> to the node at <path>
+ read Read and execute commands from a file
+ rmhook Disconnect hook "hook" of the node at "path"
+ show Show information about the node at <path>
+ shutdown Shutdown the node at <path>
+ status Get human readable status information from the node at <path>
+ types Show information about all installed node types
+ quit Exit program
+ +
+
+# Now let's create a ng_ksocket(4) node, in the family PF_INET,
+# of type SOCK_RAW, and protocol IPPROTO_DIVERT:
+
+ + mkpeer ksocket foo inet/raw/divert
+
+# Note that ``foo'' is the hook name on the socket node, which can be
+# anything. The ``inet/raw/divert'' is the hook name on the ksocket
+# node, which tells it what kind of socket to create.
+
+# Lets give our ksocket node a global name. How about ``fred'':
+
+ + name foo fred
+
+# Note that we used ngctl's ``name'' command to do this. However,
+# the following manually constructed netgraph message would have
+# acomplished the exact same thing:
+
+ + msg foo name { name="fred" }
+
+# Here we are using the ASCII <-> binary control message conversion
+# routines. ngctl does this for us automatically when we use the
+# ``msg'' command.
+
+# Now lets bind the socket associated with the ksocket node to a port
+# supplied by the system. We do this by sending the ksocket node a
+# ``bind'' control message. Again, ngctl does the conversion of the
+# control message from ASCII to binary behind the scenes.
+
+ + msg fred: bind inet/192.168.1.1
+
+# The ksocket accepts arbitrary sockaddr structures, but also has
+# special support for the PF_LOCAL and PF_INET protocol families.
+# That is why we can specify the struct sockaddr argument to the
+# ``bind'' command as ``inet/192.168.1.1'' (since we didn't specify
+# a port number, it's assumed to be zero). We could have also
+# relied on the generic sockaddr syntax and instead said this:
+
+ + msg fred: bind { family=2 len=16 data=[ 2=192 168 1 1 ] }
+
+# This is what you would have to do for protocol families other
+# that PF_INET and PF_LOCAL, at least until special handling for
+# new ones is added.
+
+# The reason for the ``2=192'' is to skip the two byte IP port number,
+# which causes it to be set to zero, the default value for integral
+# types when parsing. Now since we didn't ask for a specific port
+# number, we need to do a ``getname'' to see what port number we got:
+
+ + msg fred: getname
+ Rec'd response "getname" (5) from "fred:":
+ Args: inet/192.168.1.1:1029
+
+# As soon as we sent the message, we got back a response. Here
+# ngctl is telling us that it received a control message with the
+# NGF_RESP (response) flag set, the reponse was to a prior ``getname''
+# control message, that the originator was the node addressable
+# as ``fred:''. The message arguments field is then displayed to
+# us in its ASCII form. In this case, what we get back is a struct
+# sockaddr, and there we see that our port number is 1029.
+
+# So now let's add the ipfw divert rule for whatever packets we
+# want to see. How about anything from 192.168.1.129.
+
+ + ^Z
+ Suspended
+ $ ipfw add 100 divert 1029 ip from 192.168.1.129 to any
+ 00100 divert 1029 ip from 192.168.1.129 to any
+ $ fg
+
+# Now watch what happens when we try to ping from that machine:
+
+ +
+ Rec'd data packet on hook "foo":
+ 0000: 45 00 00 3c 57 00 00 00 20 01 bf ee c0 a8 01 81 E..<W... .......
+ 0010: c0 a8 01 01 08 00 49 5c 03 00 01 00 61 62 63 64 ......I\....abcd
+ 0020: 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 efghijklmnopqrst
+ 0030: 75 76 77 61 62 63 64 65 66 67 68 69 uvwabcdefghi
+ +
+ Rec'd data packet on hook "foo":
+ 0000: 45 00 00 3c 58 00 00 00 20 01 be ee c0 a8 01 81 E..<X... .......
+ 0010: c0 a8 01 01 08 00 48 5c 03 00 02 00 61 62 63 64 ......H\....abcd
+ 0020: 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 efghijklmnopqrst
+ 0030: 75 76 77 61 62 63 64 65 66 67 68 69 uvwabcdefghi
+ +
+ Rec'd data packet on hook "foo":
+ 0000: 45 00 00 3c 59 00 00 00 20 01 bd ee c0 a8 01 81 E..<Y... .......
+ 0010: c0 a8 01 01 08 00 47 5c 03 00 03 00 61 62 63 64 ......G\....abcd
+ 0020: 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 efghijklmnopqrst
+ 0030: 75 76 77 61 62 63 64 65 66 67 68 69 uvwabcdefghi
+ +
+
+# So we're seeing the output from the ksocket socket appear on the ``foo''
+# hook of ngctl's socket node. Since the packets are getting diverted,
+# the 192.168.1.129 machine doesn't see any response from us.
+
+# Of course, any type of socket can be used, even TCP:
+
+ + mkpeer ksocket bar inet/stream/tcp
+ + msg bar connect inet/192.168.1.33:13
+ ngctl: send msg: Operation now in progress
+ +
+ Rec'd data packet on hook "foo":
+ 0000: 4d 6f 6e 20 4e 6f 76 20 32 39 20 31 37 3a 34 38 Mon Nov 29 17:48
+ 0010: 3a 33 37 20 31 39 39 39 0d 0a :37 1999..
+ +
+
+# Or, UNIX domain:
+
+ + mkpeer ksocket bar local/stream/0
+ + msg bar bind local/"/tmp/bar.socket"
+ +
+
+# Here's an example of a more complicated ASCII control message argument.
+# If you look in /sys/netgraph/ng_message.h, you will see that a node
+# responds to a NGM_LISTHOOKS with a struct hooklist, which contains
+# an array of struct linkinfo:
+#
+# /* Structure used for NGM_LISTHOOKS */
+# struct linkinfo {
+# char ourhook[NG_HOOKSIZ]; /* hook name */
+# char peerhook[NG_HOOKSIZ]; /* peer hook */
+# struct nodeinfo nodeinfo;
+# };
+#
+# struct hooklist {
+# struct nodeinfo nodeinfo; /* node information */
+# struct linkinfo link[0]; /* info about each hook */
+# };
+#
+# By sending a node the ``listhooks'' command using ngctl, we can see
+# this structure in ASCII form (lines wrapped for readability):
+
+ + msg bar bind local/"/tmp/bar.socket"
+ + msg bar listhooks
+ Rec'd response "listhooks" (7) from "bar":
+ Args: { nodeinfo={ type="ksocket" id=9 hooks=1 }
+ linkinfo=[ { ourhook="local/stream/0" peerhook="bar"
+ nodeinfo={ name="ngctl1327" type="socket" id=8 hooks=1 } } ] }
+
+
diff --git a/share/examples/netgraph/raw b/share/examples/netgraph/raw
new file mode 100644
index 0000000..e0970f3
--- /dev/null
+++ b/share/examples/netgraph/raw
@@ -0,0 +1,16 @@
+#!/bin/sh
+# script to connect a raw synchronous card to a system interface.
+# Assumes the file if_sr was compiled with options NETGRAPH.
+# $FreeBSD$
+
+CARD=sr0
+
+# create an interface "ng0" and attach it to the sync port.
+# The packets had jolly well better be ip because we are not discriminating.
+ngctl mkpeer ${CARD}: iface rawdata inet
+
+# if ng0 already exists, use a CONNECT command instead of a mkpeer. e.g.
+# ngctl connect ${CARD}: ng0: rawdata inet
+
+# Then use ifconfig on interface ng0 as usual
+
diff --git a/share/examples/netgraph/udp.tunnel b/share/examples/netgraph/udp.tunnel
new file mode 100644
index 0000000..fc5810b
--- /dev/null
+++ b/share/examples/netgraph/udp.tunnel
@@ -0,0 +1,53 @@
+#!/bin/sh
+# $FreeBSD$
+
+# This script sets up a virtual point-to-point WAN link between
+# two subnets, using UDP packets as the ``WAN connection.''
+# The two subnets might be non-routable addresses behind a
+# firewall.
+#
+
+# Here define the local and remote inside networks as well
+# as the local and remote outside IP addresses and UDP port
+# number that will be used for the tunnel.
+#
+LOC_INTERIOR_IP=192.168.1.1
+LOC_EXTERIOR_IP=1.1.1.1
+REM_INTERIOR_IP=192.168.2.1
+REM_EXTERIOR_IP=2.2.2.2
+REM_INSIDE_NET=192.168.2.0
+UDP_TUNNEL_PORT=4028
+
+# Create the interface node ``ng0'' if it doesn't exist already,
+# otherwise just make sure it's not connected to anything.
+# In FreeBSD, interfaces cannot be removed so it might already
+# be there from before.
+#
+if ifconfig ng0 >/dev/null 2>&1; then
+ ifconfig ng0 inet down delete >/dev/null 2>&1
+ ngctl shutdown ng0:
+else
+ ngctl mkpeer iface dummy inet
+fi
+
+# Attach a UDP socket to the ``inet'' hook of the interface node
+# using the ng_ksocket(4) node type.
+#
+ngctl mkpeer ng0: ksocket inet inet/dgram/udp
+
+# Bind the UDP socket to the local external IP address and port
+#
+ngctl msg ng0:inet bind inet/${LOC_EXTERIOR_IP}:${UDP_TUNNEL_PORT}
+
+# Connect the UDP socket to the peer's external IP address and port
+#
+ngctl msg ng0:inet connect inet/${REM_EXTERIOR_IP}:${UDP_TUNNEL_PORT}
+
+# Configure the point-to-point interface
+#
+ifconfig ng0 ${LOC_INTERIOR_IP} ${REM_INTERIOR_IP}
+
+# Add a route to the peer's interior network via the tunnel
+#
+route add ${REM_INSIDE_NET} ${REM_INTERIOR_IP}
+
diff --git a/share/examples/nwclient/dot.nwfsrc b/share/examples/nwclient/dot.nwfsrc
new file mode 100644
index 0000000..03bc1d0
--- /dev/null
+++ b/share/examples/nwclient/dot.nwfsrc
@@ -0,0 +1,78 @@
+# $FreeBSD$
+#
+# Example for .nwfsrc file
+#
+# ncplib lookups configuration files in next order:
+# 1. ~/.nwfsrc
+# 2. /etc/nwfs.conf - if this file found it will
+# override values with same keys from user files.
+#
+#
+# This file consist of a set of sections. Each section started by section name
+# surrounded by square brackets:
+# [section_name]
+#
+# End of the section marked either by new section or by the end of file.
+# Each section can contain zero or more parameters:
+# [section_name]
+# key=value
+#
+# where 'key' is a represents parameter name and 'value' a value assigned
+# to this parameter.
+#
+# NetWare library uses next forms of section names:
+# [SERVER]
+# [SERVER:USER]
+# [SERVER:QUEUE]
+#
+# When user issues any ncp* command that requires create of new connection
+# to a NetWare server, library function lookups for parameters in the
+# corresponding section. First it looks in the [SERVER] section and then in
+# the [SERVER:USER] section. Please note that server and user names should be
+# in the upper case.
+#
+
+# Following parameters are valid for [SERVER] or [SERVER:USER] section:
+[BHOME:SUPERVISOR]
+# if you don't use password leave value empty
+password=I_DONT_TELL_YOU
+
+# how many retries before error, default 10
+retry_count=10
+
+# timeout for request to complete
+timeout=5
+
+# access mode to connection, default 0700
+access_mode=0700
+
+# signature level, default 0 - no signatures
+sig_level=0
+
+# force bindery login, default no
+bindery=no
+
+# default print queue for user, default is none
+# print_queue=QE_BJ
+
+
+[ANOTHERSERVER:PLAINUSER]
+# in this case user have an empty password
+password=
+
+# Defaults for printer queues defined as [SERVER:QUEUE]
+# communication parameters taken from [SERVER:USER] section
+# see man ncprint(1) for queue parameters description
+# note: if any banner related option is specified, banner will be printed.
+[BHOME:QE_BJ]
+#path_name=/etc
+#file_name=passwd
+#banner_name=My Job
+#job_desc=Printing from FreeBSD
+
+#lines=66
+#rows=80
+copies=1
+tab_size=8
+no_form_feed=yes
+#form_number=0
diff --git a/share/examples/nwclient/nwfs.sh.sample b/share/examples/nwclient/nwfs.sh.sample
new file mode 100644
index 0000000..cb8b631
--- /dev/null
+++ b/share/examples/nwclient/nwfs.sh.sample
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Location: /usr/local/etc/rc.d/nwfs.sh
+#
+# Simple script to mount NetWare volumes at startup.
+# It assumes that all mount points described in fstab file and password
+# entries listed in /root/.nwfsrc file. See mount_nwfs(8) for details.
+#
+
+mount=/sbin/mount
+umount=/sbin/umount
+HOME=/root; export HOME
+vols="/nw/sys /nw/vol1"
+
+if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
+ echo -n "Mounting NetWare volumes: "
+ for vol in ${vols}; do
+ $mount $vol
+ echo -n "$vol "
+ done
+ echo "Done"
+elif [ "x$1" = "xstop" ]; then
+ echo -n "Unmounting NetWare mount points: "
+ for vol in ${vols}; do
+ $umount $vol
+ echo -n "$vol "
+ done
+ echo "Done"
+else
+ echo "Unknown command $1"
+fi
+
diff --git a/share/examples/perfmon/Makefile b/share/examples/perfmon/Makefile
new file mode 100644
index 0000000..de59b9e
--- /dev/null
+++ b/share/examples/perfmon/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+PROG= perfmon
+NO_MAN=
+
+install:
+
+.include <bsd.prog.mk>
diff --git a/share/examples/perfmon/README b/share/examples/perfmon/README
new file mode 100644
index 0000000..ffa2caf
--- /dev/null
+++ b/share/examples/perfmon/README
@@ -0,0 +1,25 @@
+`perfmon' is a sample program to access the performance-monitoring
+counters on Pentium and Pentium Pro CPUs. See perfmon(4) for a
+description of this facility.
+
+The program takes the following options:
+
+ -u count events in user mode
+ -o count events in kernel mode
+ (these two can be combined)
+
+ -e count events, not duration
+ -l n run `n' loops (default 50)
+ -s n sleep `n' seconds between loop iterations (default 0)
+
+The following options are not implemented on Pentium CPUs:
+
+ -m n use count mask `n'
+ -i invert sense of count mask comparison
+ -U n use unit mask `n'
+
+There is one mandatory argument, which is the event number to be
+monitored, defined in <machine/perfmon.h>. All numbers can be
+specified in any format acceptable to strtol(3).
+
+$FreeBSD$
diff --git a/share/examples/perfmon/perfmon.c b/share/examples/perfmon/perfmon.c
new file mode 100644
index 0000000..34e3884
--- /dev/null
+++ b/share/examples/perfmon/perfmon.c
@@ -0,0 +1,195 @@
+/*
+ * Copyright 1996 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that both the above copyright notice and this
+ * permission notice appear in all copies, that both the above
+ * copyright notice and this permission notice appear in all
+ * supporting documentation, and that the name of M.I.T. not be used
+ * in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. M.I.T. makes
+ * no representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+ * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+ * SHALL M.I.T. 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/ioctl.h>
+
+#include <machine/cpu.h>
+#include <machine/perfmon.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <err.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <errno.h>
+
+static int getnum(const char *, int, int);
+static void usage(const char *) __dead2;
+
+int
+main(int argc, char **argv)
+{
+ int c, fd, num;
+ int loops, i, sleeptime;
+ char *cmd;
+ struct pmc pmc;
+ struct pmc_tstamp then, now;
+ struct pmc_data value;
+ quad_t *buf;
+ double total;
+
+ pmc.pmc_num = 0;
+ pmc.pmc_event = 0;
+ pmc.pmc_unit = 0;
+ pmc.pmc_flags = 0;
+ pmc.pmc_mask = 0;
+ cmd = NULL;
+ loops = 50;
+ sleeptime = 0;
+
+ while ((c = getopt(argc, argv, "s:l:uoeiU:m:c:")) != -1) {
+ switch(c) {
+ case 'u':
+ pmc.pmc_flags |= PMCF_USR;
+ break;
+ case 'o':
+ pmc.pmc_flags |= PMCF_OS;
+ break;
+ case 'e':
+ pmc.pmc_flags |= PMCF_E;
+ break;
+ case 'i':
+ pmc.pmc_flags |= PMCF_INV;
+ break;
+ case 'U':
+ pmc.pmc_unit = getnum(optarg, 0, 256);
+ break;
+ case 'm':
+ pmc.pmc_mask = getnum(optarg, 0, 256);
+ break;
+ case 'l':
+ loops = getnum(optarg, 1, INT_MAX - 1);
+ break;
+ case 's':
+ sleeptime = getnum(optarg, 0, INT_MAX - 1);
+ break;
+ case 'c':
+ cmd = optarg;
+ break;
+ default:
+ usage(argv[0]);
+ }
+ }
+
+ if (argc - optind != 1)
+ usage(argv[0]);
+
+ pmc.pmc_event = getnum(argv[optind], 0, 255);
+
+ buf = malloc((loops + 1) * sizeof *buf);
+ if (!buf)
+ err(1, "malloc(%lu)", (unsigned long)(loops +1) * sizeof *buf);
+
+ fd = open(_PATH_PERFMON, O_RDWR, 0);
+ if (fd < 0)
+ err(1, "open: " _PATH_PERFMON);
+
+ if (ioctl(fd, PMIOSETUP, &pmc) < 0)
+ err(1, "ioctl(PMIOSETUP)");
+
+ if (ioctl(fd, PMIOTSTAMP, &then) < 0)
+ err(1, "ioctl(PMIOTSTAMP)");
+
+ num = 0;
+ if (ioctl(fd, PMIOSTART, &num) < 0)
+ err(1, "ioctl(PMIOSTART)");
+
+ value.pmcd_num = 0;
+ for (i = 0; i < loops; i++) {
+ if (ioctl(fd, PMIOSTOP, &num) < 0)
+ err(1, "ioctl(PMIOSTOP)");
+ if (ioctl(fd, PMIOREAD, &value) < 0)
+ err(1, "ioctl(PMIOREAD)");
+ buf[i] = value.pmcd_value;
+ if (ioctl(fd, PMIORESET, &value.pmcd_num) < 0)
+ err(1, "ioctl(PMIORESET)");
+ if (ioctl(fd, PMIOSTART, &num) < 0)
+ err(1, "ioctl(PMIOSTART)");
+ if (sleeptime)
+ sleep(sleeptime);
+ if (cmd)
+ system(cmd);
+ }
+
+ if (ioctl(fd, PMIOSTOP, &num) < 0)
+ err(1, "ioctl(PMIOSTOP)");
+ if (ioctl(fd, PMIOREAD, &value) < 0)
+ err(1, "ioctl(PMIOREAD)");
+ buf[i] = value.pmcd_value;
+ if (ioctl(fd, PMIOTSTAMP, &now) < 0)
+ err(1, "ioctl(PMIOTSTAMP)");
+
+ total = 0;
+ for (i = 1; i <= loops; i++) {
+ printf("%d: %qd\n", i, buf[i]);
+ total += buf[i];
+ }
+ printf("total: %f\nmean: %f\n", total, total / loops);
+
+ printf("clocks (at %d-MHz): %qd\n", now.pmct_rate,
+ now.pmct_value - then.pmct_value);
+
+ return 0;
+}
+
+static int
+getnum(const char *buf, int min, int max)
+{
+ char *ep;
+ long l;
+
+ errno = 0;
+ l = strtol(buf, &ep, 0);
+ if (*buf && !*ep && !errno) {
+ if (l < min || l > max) {
+ errx(1, "`%s': must be between %d and %d",
+ buf, min, max);
+ }
+ return (int)l;
+ } else if(errno) {
+ errx(1, "`%s': must be between %ld and %ld",
+ LONG_MIN, LONG_MAX);
+ }
+ errx(1, "`%s': parameter must be an integer");
+}
+
+static void
+usage(const char *pname)
+{
+ fprintf(stderr,
+ "usage: %s [-eiou] [-c command] [-l nloops] [-m mask] [-s sleeptime]\n"
+ " [-U unit] counter\n",
+ pname);
+ exit(1);
+}
diff --git a/share/examples/pf/Makefile b/share/examples/pf/Makefile
new file mode 100644
index 0000000..a6c4470
--- /dev/null
+++ b/share/examples/pf/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+
+NO_OBJ=
+
+FILES= faq-example1 faq-example2 faq-example3 \
+ ackpri queue1 queue2 queue3 queue4 \
+ pf.conf \
+ spamd
+
+FILESDIR= ${SHAREDIR}/examples/pf
+
+.include <bsd.prog.mk>
diff --git a/share/examples/pf/ackpri b/share/examples/pf/ackpri
new file mode 100644
index 0000000..060b761
--- /dev/null
+++ b/share/examples/pf/ackpri
@@ -0,0 +1,31 @@
+# $FreeBSD$
+# $OpenBSD: ackpri,v 1.3 2006/10/07 04:48:01 mcbride Exp $
+
+# Use a simple priority queue to prioritize empty (no payload) TCP ACKs,
+# which dramatically improves throughput on (asymmetric) links when the
+# reverse direction is saturated. The empty ACKs use an insignificant
+# part of the bandwidth, but if they get delayed, downloads suffer
+# badly, so prioritize them.
+
+# Example: 512/128 kbps ADSL. Download is 50 kB/s. When a concurrent
+# upload saturates the uplink, download drops to 7 kB/s. With the
+# priority queue below, download drops only to 48 kB/s.
+
+# Replace lo0 with your real external interface
+
+ext_if="lo0"
+
+# For a 512/128 kbps ADSL with PPPoE link, using "bandwidth 100Kb"
+# is optimal. Some experimentation might be needed to find the best
+# value. If it's set too high, the priority queue is not effective, and
+# if it's set too low, the available bandwidth is not fully used.
+# A good starting point would be real_uplink_bandwidth * 90 / 100.
+
+altq on $ext_if priq bandwidth 100Kb queue { q_pri, q_def }
+queue q_pri priority 7
+queue q_def priority 1 priq(default)
+
+pass out on $ext_if proto tcp from $ext_if to any queue (q_def, q_pri)
+
+pass in on $ext_if proto tcp from any to $ext_if queue (q_def, q_pri)
+
diff --git a/share/examples/pf/faq-example1 b/share/examples/pf/faq-example1
new file mode 100644
index 0000000..91942f6
--- /dev/null
+++ b/share/examples/pf/faq-example1
@@ -0,0 +1,51 @@
+# $FreeBSD$
+# $OpenBSD: faq-example1,v 1.5 2006/10/07 04:48:01 mcbride Exp $
+
+#
+# Firewall for Home or Small Office
+# http://www.openbsd.org/faq/pf/example1.html
+#
+
+
+# macros
+ext_if="fxp0"
+int_if="xl0"
+
+tcp_services="{ 22, 113 }"
+icmp_types="echoreq"
+
+comp3="192.168.0.3"
+
+# options
+set block-policy return
+set loginterface $ext_if
+
+set skip on lo
+
+# scrub
+scrub in
+
+# nat/rdr
+nat on $ext_if from !($ext_if) -> ($ext_if:0)
+nat-anchor "ftp-proxy/*"
+rdr-anchor "ftp-proxy/*"
+
+rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
+rdr on $ext_if proto tcp from any to any port 80 -> $comp3
+
+# filter rules
+block in
+
+pass out
+
+anchor "ftp-proxy/*"
+antispoof quick for { lo $int_if }
+
+pass in on $ext_if inet proto tcp from any to ($ext_if) port $tcp_services
+
+pass in on $ext_if inet proto tcp from any to $comp3 port 80 \
+ synproxy state
+
+pass in inet proto icmp all icmp-type $icmp_types
+
+pass quick on $int_if no state
diff --git a/share/examples/pf/faq-example2 b/share/examples/pf/faq-example2
new file mode 100644
index 0000000..eded1e8
--- /dev/null
+++ b/share/examples/pf/faq-example2
@@ -0,0 +1,89 @@
+# $FreeBSD$
+# $OpenBSD: faq-example2,v 1.4 2006/10/07 04:48:01 mcbride Exp $
+
+#
+# Small, Home Network
+# http://www.openbsd.org/faq/pf/queueing.html#example1
+#
+
+
+# enable queueing on the external interface to control traffic going to
+# the Internet. use the priq scheduler to control only priorities. set
+# the bandwidth to 610Kbps to get the best performance out of the TCP
+# ACK queue.
+
+altq on fxp0 priq bandwidth 610Kb queue { std_out, ssh_im_out, dns_out, \
+ tcp_ack_out }
+
+# define the parameters for the child queues.
+# std_out - the standard queue. any filter rule below that does not
+# explicitly specify a queue will have its traffic added
+# to this queue.
+# ssh_im_out - interactive SSH and various instant message traffic.
+# dns_out - DNS queries.
+# tcp_ack_out - TCP ACK packets with no data payload.
+
+queue std_out priq(default)
+queue ssh_im_out priority 4 priq(red)
+queue dns_out priority 5
+queue tcp_ack_out priority 6
+
+# enable queueing on the internal interface to control traffic coming in
+# from the Internet. use the cbq scheduler to control bandwidth. max
+# bandwidth is 2Mbps.
+
+altq on dc0 cbq bandwidth 2Mb queue { std_in, ssh_im_in, dns_in, bob_in }
+
+# define the parameters for the child queues.
+# std_in - the standard queue. any filter rule below that does not
+# explicitly specify a queue will have its traffic added
+# to this queue.
+# ssh_im_in - interactive SSH and various instant message traffic.
+# dns_in - DNS replies.
+# bob_in - bandwidth reserved for Bob's workstation. allow him to
+# borrow.
+
+queue std_in bandwidth 1.6Mb cbq(default)
+queue ssh_im_in bandwidth 200Kb priority 4
+queue dns_in bandwidth 120Kb priority 5
+queue bob_in bandwidth 80Kb cbq(borrow)
+
+
+# ... in the filtering section of pf.conf ...
+
+alice = "192.168.0.2"
+bob = "192.168.0.3"
+charlie = "192.168.0.4"
+local_net = "192.168.0.0/24"
+ssh_ports = "{ 22 2022 }"
+im_ports = "{ 1863 5190 5222 }"
+
+# filter rules for fxp0 inbound
+block in on fxp0 all
+
+# filter rules for fxp0 outbound
+block out on fxp0 all
+pass out on fxp0 inet proto tcp from (fxp0) to any \
+ queue(std_out, tcp_ack_out)
+pass out on fxp0 inet proto { udp icmp } from (fxp0) to any
+pass out on fxp0 inet proto { tcp udp } from (fxp0) to any port domain \
+ queue dns_out
+pass out on fxp0 inet proto tcp from (fxp0) to any port $ssh_ports \
+ queue(std_out, ssh_im_out)
+pass out on fxp0 inet proto tcp from (fxp0) to any port $im_ports \
+ queue(ssh_im_out, tcp_ack_out)
+
+# filter rules for dc0 inbound
+block in on dc0 all
+pass in on dc0 from $local_net
+
+# filter rules for dc0 outbound
+block out on dc0 all
+pass out on dc0 from any to $local_net
+pass out on dc0 proto { tcp udp } from any port domain to $local_net \
+ queue dns_in
+pass out on dc0 proto tcp from any port $ssh_ports to $local_net \
+ queue(std_in, ssh_im_in)
+pass out on dc0 proto tcp from any port $im_ports to $local_net \
+ queue ssh_im_in
+pass out on dc0 from any to $bob queue bob_in
diff --git a/share/examples/pf/faq-example3 b/share/examples/pf/faq-example3
new file mode 100644
index 0000000..61e2c93
--- /dev/null
+++ b/share/examples/pf/faq-example3
@@ -0,0 +1,117 @@
+# $FreeBSD$
+# $OpenBSD: faq-example3,v 1.4 2006/10/07 04:48:01 mcbride Exp $
+
+#
+# Company Network
+# http://www.openbsd.org/faq/pf/queueing.html#example2
+#
+
+
+# enable queueing on the external interface to queue packets going out
+# to the Internet. use the cbq scheduler so that the bandwidth use of
+# each queue can be controlled. the max outgoing bandwidth is 1.5Mbps.
+
+altq on fxp0 cbq bandwidth 1.5Mb queue { std_ext, www_ext, boss_ext }
+
+# define the parameters for the child queues.
+# std_ext - the standard queue. also the default queue for
+# outgoing traffic on fxp0.
+# www_ext - container queue for WWW server queues. limit to
+# 500Kbps.
+# www_ext_http - http traffic from the WWW server; higher priority.
+# www_ext_misc - all non-http traffic from the WWW server.
+# boss_ext - traffic coming from the boss's computer.
+
+queue std_ext bandwidth 500Kb cbq(default borrow)
+queue www_ext bandwidth 500Kb { www_ext_http, www_ext_misc }
+ queue www_ext_http bandwidth 50% priority 3 cbq(red borrow)
+ queue www_ext_misc bandwidth 50% priority 1 cbq(borrow)
+queue boss_ext bandwidth 500Kb priority 3 cbq(borrow)
+
+# enable queueing on the internal interface to control traffic coming
+# from the Internet or the DMZ. use the cbq scheduler to control the
+# bandwidth of each queue. bandwidth on this interface is set to the
+# maximum. traffic coming from the DMZ will be able to use all of this
+# bandwidth while traffic coming from the Internet will be limited to
+# 1.0Mbps (because 0.5Mbps (500Kbps) is being allocated to fxp1).
+
+altq on dc0 cbq bandwidth 100% queue { net_int, www_int }
+
+# define the parameters for the child queues.
+# net_int - container queue for traffic from the Internet. bandwidth
+# is 1.0Mbps.
+# std_int - the standard queue. also the default queue for outgoing
+# traffic on dc0.
+# it_int - traffic to the IT Dept network; reserve them 500Kbps.
+# boss_int - traffic to the boss's PC; assign a higher priority.
+# www_int - traffic from the WWW server in the DMZ; full speed.
+
+queue net_int bandwidth 1.0Mb { std_int, it_int, boss_int }
+ queue std_int bandwidth 250Kb cbq(default borrow)
+ queue it_int bandwidth 500Kb cbq(borrow)
+ queue boss_int bandwidth 250Kb priority 3 cbq(borrow)
+queue www_int bandwidth 99Mb cbq(red borrow)
+
+# enable queueing on the DMZ interface to control traffic destined for
+# the WWW server. cbq will be used on this interface since detailed
+# control of bandwidth is necessary. bandwidth on this interface is set
+# to the maximum. traffic from the internal network will be able to use
+# all of this bandwidth while traffic from the Internet will be limited
+# to 500Kbps.
+
+altq on fxp1 cbq bandwidth 100% queue { internal_dmz, net_dmz }
+
+# define the parameters for the child queues.
+# internal_dmz - traffic from the internal network.
+# net_dmz - container queue for traffic from the Internet.
+# net_dmz_http - http traffic; higher priority.
+# net_dmz_misc - all non-http traffic. this is also the default queue.
+
+queue internal_dmz bandwidth 99Mb cbq(borrow)
+queue net_dmz bandwidth 500Kb { net_dmz_http, net_dmz_misc }
+ queue net_dmz_http bandwidth 50% priority 3 cbq(red borrow)
+ queue net_dmz_misc bandwidth 50% priority 1 cbq(default borrow)
+
+
+# ... in the filtering section of pf.conf ...
+
+main_net = "192.168.0.0/24"
+it_net = "192.168.1.0/24"
+int_nets = "{ 192.168.0.0/24, 192.168.1.0/24 }"
+dmz_net = "10.0.0.0/24"
+
+boss = "192.168.0.200"
+wwwserv = "10.0.0.100"
+
+# default deny
+block on { fxp0, fxp1, dc0 } all
+
+# filter rules for fxp0 inbound
+pass in on fxp0 proto tcp from any to $wwwserv port { 21, \
+ > 49151 } queue www_ext_misc
+pass in on fxp0 proto tcp from any to $wwwserv port 80 \
+ queue www_ext_http
+
+# filter rules for fxp0 outbound
+pass out on fxp0 from $int_nets to any
+pass out on fxp0 from $boss to any queue boss_ext
+
+# filter rules for dc0 inbound
+pass in on dc0 from $int_nets to any
+pass in on dc0 from $it_net to any queue it_int
+pass in on dc0 from $boss to any queue boss_int
+pass in on dc0 proto tcp from $int_nets to $wwwserv port { 21, 80, \
+ > 49151 } queue www_int
+
+# filter rules for dc0 outbound
+pass out on dc0 from dc0 to $int_nets
+
+# filter rules for fxp1 inbound
+pass in on fxp1 proto { tcp, udp } from $wwwserv to any port 53
+
+# filter rules for fxp1 outbound
+pass out on fxp1 proto tcp from any to $wwwserv port { 21, \
+ > 49151 } queue net_dmz_misc
+pass out on fxp1 proto tcp from any to $wwwserv port 80 queue net_dmz_http
+pass out on fxp1 proto tcp from $int_nets to $wwwserv port { 80, \
+ 21, > 49151 } queue internal_dmz
diff --git a/share/examples/pf/pf.conf b/share/examples/pf/pf.conf
new file mode 100644
index 0000000..bd3091b
--- /dev/null
+++ b/share/examples/pf/pf.conf
@@ -0,0 +1,34 @@
+# $FreeBSD$
+# $OpenBSD: pf.conf,v 1.34 2007/02/24 19:30:59 millert Exp $
+#
+# See pf.conf(5) and /usr/share/examples/pf for syntax and examples.
+# Remember to set net.inet.ip.forwarding=1 and/or net.inet6.ip6.forwarding=1
+# in /etc/sysctl.conf if packets are to be forwarded between interfaces.
+
+#ext_if="ext0"
+#int_if="int0"
+
+#table <spamd-white> persist
+
+#set skip on lo
+
+#scrub in
+
+#nat-anchor "ftp-proxy/*"
+#rdr-anchor "ftp-proxy/*"
+#nat on $ext_if from !($ext_if) -> ($ext_if:0)
+#rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
+#no rdr on $ext_if proto tcp from <spamd-white> to any port smtp
+#rdr pass on $ext_if proto tcp from any to any port smtp \
+# -> 127.0.0.1 port spamd
+
+#anchor "ftp-proxy/*"
+#block in
+#pass out
+
+#pass quick on $int_if no state
+#antispoof quick for { lo $int_if }
+
+#pass in on $ext_if proto tcp to ($ext_if) port ssh
+#pass in log on $ext_if proto tcp to ($ext_if) port smtp
+#pass out log on $ext_if proto tcp from ($ext_if) to port smtp
diff --git a/share/examples/pf/queue1 b/share/examples/pf/queue1
new file mode 100644
index 0000000..5aad7c9
--- /dev/null
+++ b/share/examples/pf/queue1
@@ -0,0 +1,21 @@
+# $FreeBSD$
+# $OpenBSD: queue1,v 1.4 2006/10/07 04:48:01 mcbride Exp $
+
+ext_if = "dc0"
+
+altq on $ext_if cbq bandwidth 10Mb \
+ queue { deflt, http, ssh, mail, rsets }
+queue deflt bandwidth 10% priority 0 cbq(default ecn)
+queue http bandwidth 1.5Mb priority 3 { http_vhosts, http_cust1 }
+queue http_vhosts bandwidth 40% cbq(borrow red)
+queue http_cust1 bandwidth 0.5Mb
+queue mail bandwidth 10% priority 1
+queue ssh bandwidth 100Kb priority 7 cbq(borrow)
+queue rsets bandwidth 7500b priority 0 cbq(red)
+
+block return in on $ext_if inet all queue rsets
+pass in on $ext_if inet proto tcp from any to any port 80 queue http
+pass out on $ext_if inet proto tcp from any to any port 22 queue ssh
+pass in on $ext_if inet proto tcp from any to any port 22 queue ssh
+pass out on $ext_if inet proto tcp from any to any port 25 queue mail
+pass out on $ext_if inet all
diff --git a/share/examples/pf/queue2 b/share/examples/pf/queue2
new file mode 100644
index 0000000..c60d1c3
--- /dev/null
+++ b/share/examples/pf/queue2
@@ -0,0 +1,29 @@
+# $FreeBSD$
+# $OpenBSD: queue2,v 1.4 2006/10/07 04:48:01 mcbride Exp $
+# advanced queue example.
+# give interactive ssh traffic priority over ssh bulk transfers (scp, sftp)
+
+ext_if="dc0"
+developerhosts="192.168.2.0/24"
+employeehosts="192.168.0.0/23"
+
+altq on $ext_if cbq bandwidth 5Mb queue { std, http, mail, ssh }
+
+queue std bandwidth 10% cbq(default)
+queue http bandwidth 60% priority 2 cbq(borrow red) { employees, developers }
+queue developers bandwidth 75% cbq(borrow)
+queue employees bandwidth 15%
+queue mail bandwidth 10% priority 0 cbq(borrow ecn)
+queue ssh bandwidth 20% cbq(borrow) { ssh_interactive, ssh_bulk }
+queue ssh_interactive bandwidth 25% priority 7
+queue ssh_bulk bandwidth 75% priority 0
+
+block return out on $ext_if inet all queue std
+pass out on $ext_if inet proto tcp from $developerhosts to any port 80 \
+ queue developers
+pass out on $ext_if inet proto tcp from $employeehosts to any port 80 \
+ queue employees
+pass out on $ext_if inet proto tcp from any to any port 22 \
+ queue(ssh_bulk, ssh_interactive)
+pass out on $ext_if inet proto tcp from any to any port 25 \
+ queue mail
diff --git a/share/examples/pf/queue3 b/share/examples/pf/queue3
new file mode 100644
index 0000000..6db5eb4
--- /dev/null
+++ b/share/examples/pf/queue3
@@ -0,0 +1,16 @@
+# $FreeBSD$
+# $OpenBSD: queue3,v 1.3 2006/10/07 04:48:01 mcbride Exp $
+# simple PRIQ example
+
+ext_if="lo0"
+
+altq on $ext_if priq bandwidth 10Mb queue { pri-low pri-med pri-high }
+queue pri-low priority 0
+queue pri-med priority 1 priq(default)
+queue pri-high priority 2
+
+pass out on $ext_if proto tcp from any to any port 22 \
+ queue(pri-med, pri-high)
+pass out on $ext_if proto tcp from any to any port 80 queue pri-med
+pass in on $ext_if proto tcp from any to any port 80 queue pri-low
+
diff --git a/share/examples/pf/queue4 b/share/examples/pf/queue4
new file mode 100644
index 0000000..0a24a06
--- /dev/null
+++ b/share/examples/pf/queue4
@@ -0,0 +1,20 @@
+# $FreeBSD$
+# $OpenBSD: queue4,v 1.2 2003/08/22 21:50:34 david Exp $
+#
+# Hierarchical queueing for a university.
+# Three faculties; engineering, law and art are defined.
+# Departments under the engineering faculty are defined as child queues.
+# The total bandwidth for engineering faculty is shared between three
+# departments. CS department gets the half of the bandwidth, EE and IE
+# departments get the thirty percent and twenty percent of bandwidth
+# respectively. These sibling departments can use more than their linkshare
+# whenever there is no backlogged sibling queue but when a queue gets
+# backlogged, it is guaranteed that the queue gets its linkshare.
+
+altq on dc0 bandwidth 16Mb hfsc queue { eng law art }
+queue eng bandwidth 10Mb { cs ee ie }
+queue cs hfsc( default linkshare 50% )
+queue ee hfsc( linkshare 30% )
+queue ie hfsc( linkshare 20% )
+queue law bandwidth 3Mb
+queue art bandwidth 3Mb
diff --git a/share/examples/pf/spamd b/share/examples/pf/spamd
new file mode 100644
index 0000000..ad12268
--- /dev/null
+++ b/share/examples/pf/spamd
@@ -0,0 +1,8 @@
+# $FreeBSD$
+# $OpenBSD: spamd,v 1.2 2005/08/06 19:52:37 jmc Exp $
+
+# spamd-setup puts addresses to be redirected into table <spamd>.
+
+table <spamd> persist
+no rdr on { lo0, lo1 } from any to any
+rdr inet proto tcp from <spamd> to any port smtp -> 127.0.0.1 port spamd
diff --git a/share/examples/portal/README b/share/examples/portal/README
new file mode 100644
index 0000000..d8dc1fc
--- /dev/null
+++ b/share/examples/portal/README
@@ -0,0 +1,65 @@
+$FreeBSD$
+
+This contains a couple of examples for using the portal filing system.
+
+The portal file system provides a way of obtaining a file descriptor
+to a filesystem object (i.e. something that is accessed by open(2),
+pipe(2), socket(2) or socketpair(2)) via the filesystem namespace.
+At present the only file descriptor supported are TCP sockets and
+files.
+
+NOTE!!!! The portal file system is experimental in nature and should
+not be considered secure, use with caution.
+
+First off mount the filesystem using something like:
+
+# mount_portalfs /usr/share/examples/portal/portal.conf /p
+
+Then you should be able to do things like
+# cat /p/tcp/localhost/daytime
+Sun Nov 22 17:50:09 1998
+(assuming inetd is running the daytime service, by default it is off)
+
+Welcome to FreeBSD!
+
+# mkdir -p /tmp/root
+# cd /tmp/root
+# mkdir bin p
+# cp /bin/sh /bin/cat bin
+# mount_portalfs /usr/share/examples/portal/portal.conf /tmp/root/p
+# chroot /tmp/root
+# pwd
+/
+# echo *
+bin p
+# cat /etc/motd
+cat: /etc/motd: No such file or directory
+# cat /p/fs/etc/motd
+FreeBSD 2.2.6-RELEASE (COMPUTER) #0: Sat Aug 22 17:11:37 BST 1998
+
+Welcome to FreeBSD!
+
+Finally, a very simple example of the listening server is available,
+fire up two xterms. In the first
+
+xterm-1$ cat /p/tcplisten/ANY/6666
+(the ANY is a wildcard just like using INADDR_ANY, any resolvable host
+can be used).
+
+In the second xterm
+xterm-2$ echo "hello there" >/p/tcp/localhost/6666
+
+You should see the "hello there" string appear on the first terminal.
+
+Unprivilged users can't create servers on privalged ports.
+xterm-1$ cat /p/tcplisten/ANY/666
+cat: /p/tcplisten/ANY/666: Operation not permitted
+
+but root can
+xterm-1# cat /p/tcplisten/ANY/666
+
+In the second
+xterm-2$ echo "hello there" >/p/tcp/localhost/666
+should produce the expected response.
+
+You can also swap the client/server read and write commands etc.
diff --git a/share/examples/portal/portal.conf b/share/examples/portal/portal.conf
new file mode 100644
index 0000000..aa7e282
--- /dev/null
+++ b/share/examples/portal/portal.conf
@@ -0,0 +1,3 @@
+tcp/ tcp tcp/
+tcplisten/ tcplisten tcplisten/
+fs/ file fs/
diff --git a/share/examples/ppi/Makefile b/share/examples/ppi/Makefile
new file mode 100644
index 0000000..9b0d0d5
--- /dev/null
+++ b/share/examples/ppi/Makefile
@@ -0,0 +1,8 @@
+# Makefile to build LCD control software for ppi(4) interface.
+#
+# $FreeBSD$
+
+PROG= ppilcd
+NO_MAN=
+
+.include <bsd.prog.mk>
diff --git a/share/examples/ppi/ppilcd.c b/share/examples/ppi/ppilcd.c
new file mode 100644
index 0000000..fd2506d
--- /dev/null
+++ b/share/examples/ppi/ppilcd.c
@@ -0,0 +1,438 @@
+/*
+ * Control LCD module hung off parallel port using the
+ * ppi 'geek port' interface.
+ *
+ * $FreeBSD$
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <err.h>
+#include <sysexits.h>
+
+#include <dev/ppbus/ppbconf.h>
+#include <dev/ppbus/ppi.h>
+
+#define debug(lev, fmt, args...) if (debuglevel >= lev) fprintf(stderr, fmt "\n" , ## args);
+
+static void usage(void);
+static char *progname;
+
+#define DEFAULT_DEVICE "/dev/ppi0"
+
+/* Driver functions */
+static void hd44780_prepare(char *devname, char *options);
+static void hd44780_finish(void);
+static void hd44780_command(int cmd);
+static void hd44780_putc(int c);
+
+/*
+ * Commands
+ * Note that unrecognised command escapes are passed through with
+ * the command value set to the ASCII value of the escaped character.
+ */
+#define CMD_RESET 0
+#define CMD_BKSP 1
+#define CMD_CLR 2
+#define CMD_NL 3
+#define CMD_CR 4
+#define CMD_HOME 5
+
+#define MAX_DRVOPT 10 /* maximum driver-specific options */
+
+struct lcd_driver
+{
+ char *l_code;
+ char *l_name;
+ char *l_options[MAX_DRVOPT];
+ void (* l_prepare)(char *name, char *options);
+ void (* l_finish)(void);
+ void (* l_command)(int cmd);
+ void (* l_putc)(int c);
+};
+
+static struct lcd_driver lcd_drivertab[] = {
+ {
+ "hd44780",
+ "Hitachi HD44780 and compatibles",
+ {
+ "Reset options:",
+ " 1 1-line display (default 2)",
+ " B Cursor blink enable",
+ " C Cursor enable",
+ " F Large font select",
+ NULL
+ },
+ hd44780_prepare,
+ hd44780_finish,
+ hd44780_command,
+ hd44780_putc
+ },
+ {
+ NULL,
+ NULL,
+ {
+ NULL
+ },
+ NULL,
+ NULL
+ }
+};
+
+static void do_char(struct lcd_driver *driver, char ch);
+
+int debuglevel = 0;
+int vflag = 0;
+
+int
+main(int argc, char *argv[])
+{
+ extern char *optarg;
+ extern int optind;
+ struct lcd_driver *driver = &lcd_drivertab[0];
+ char *drivertype, *cp;
+ char *devname = DEFAULT_DEVICE;
+ char *drvopts = NULL;
+ int ch, i;
+
+ if ((progname = strrchr(argv[0], '/'))) {
+ progname++;
+ } else {
+ progname = argv[0];
+ }
+
+ drivertype = getenv("LCD_TYPE");
+
+ while ((ch = getopt(argc, argv, "Dd:f:o:v")) != -1) {
+ switch(ch) {
+ case 'D':
+ debuglevel++;
+ break;
+ case 'd':
+ drivertype = optarg;
+ break;
+ case 'f':
+ devname = optarg;
+ break;
+ case 'o':
+ drvopts = optarg;
+ break;
+ case 'v':
+ vflag = 1;
+ break;
+ default:
+ usage();
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ /* If an LCD type was specified, look it up */
+ if (drivertype != NULL) {
+ driver = NULL;
+ for (i = 0; lcd_drivertab[i].l_code != NULL; i++) {
+ if (!strcmp(drivertype, lcd_drivertab[i].l_code)) {
+ driver = &lcd_drivertab[i];
+ break;
+ }
+ }
+ if (driver == NULL) {
+ warnx("LCD driver '%s' not known", drivertype);
+ usage();
+ }
+ }
+ debug(1, "Driver selected for %s", driver->l_name);
+ driver->l_prepare(devname, drvopts);
+ atexit(driver->l_finish);
+
+ if (argc > 0) {
+ debug(2, "reading input from %d argument%s", argc, (argc > 1) ? "s" : "");
+ for (i = 0; i < argc; i++)
+ for (cp = argv[i]; *cp; cp++)
+ do_char(driver, *cp);
+ } else {
+ debug(2, "reading input from stdin");
+ setvbuf(stdin, NULL, _IONBF, 0);
+ while ((ch = fgetc(stdin)) != EOF)
+ do_char(driver, (char)ch);
+ }
+ exit(EX_OK);
+}
+
+static void
+usage(void)
+{
+ int i, j;
+
+ fprintf(stderr, "usage: %s [-v] [-d drivername] [-f device] [-o options] [args...]\n", progname);
+ fprintf(stderr, " -D Increase debugging\n");
+ fprintf(stderr, " -f Specify device, default is '%s'\n", DEFAULT_DEVICE);
+ fprintf(stderr, " -d Specify driver, one of:\n");
+ for (i = 0; lcd_drivertab[i].l_code != NULL; i++) {
+ fprintf(stderr, " %-10s (%s)%s\n",
+ lcd_drivertab[i].l_code, lcd_drivertab[i].l_name, (i == 0) ? " *default*" : "");
+ if (lcd_drivertab[i].l_options[0] != NULL) {
+
+ for (j = 0; lcd_drivertab[i].l_options[j] != NULL; j++)
+ fprintf(stderr, " %s\n", lcd_drivertab[i].l_options[j]);
+ }
+ }
+ fprintf(stderr, " -o Specify driver option string\n");
+ fprintf(stderr, " args Message strings. Embedded escapes supported:\n");
+ fprintf(stderr, " \\b Backspace\n");
+ fprintf(stderr, " \\f Clear display, home cursor\n");
+ fprintf(stderr, " \\n Newline\n");
+ fprintf(stderr, " \\r Carriage return\n");
+ fprintf(stderr, " \\R Reset display\n");
+ fprintf(stderr, " \\v Home cursor\n");
+ fprintf(stderr, " \\\\ Literal \\\n");
+ fprintf(stderr, " If args not supplied, strings are read from standard input\n");
+ exit(EX_USAGE);
+}
+
+static void
+do_char(struct lcd_driver *driver, char ch)
+{
+ static int esc = 0;
+
+ if (esc) {
+ switch(ch) {
+ case 'b':
+ driver->l_command(CMD_BKSP);
+ break;
+ case 'f':
+ driver->l_command(CMD_CLR);
+ break;
+ case 'n':
+ driver->l_command(CMD_NL);
+ break;
+ case 'r':
+ driver->l_command(CMD_CR);
+ break;
+ case 'R':
+ driver->l_command(CMD_RESET);
+ break;
+ case 'v':
+ driver->l_command(CMD_HOME);
+ break;
+ case '\\':
+ driver->l_putc('\\');
+ break;
+ default:
+ driver->l_command(ch);
+ break;
+ }
+ esc = 0;
+ } else {
+ if (ch == '\\') {
+ esc = 1;
+ } else {
+ if (vflag || isprint(ch))
+ driver->l_putc(ch);
+ }
+ }
+}
+
+
+/******************************************************************************
+ * Driver for the Hitachi HD44780. This is probably *the* most common driver
+ * to be found on one- and two-line alphanumeric LCDs.
+ *
+ * This driver assumes the following connections :
+ *
+ * Parallel Port LCD Module
+ * --------------------------------
+ * Strobe (1) Enable (6)
+ * Data (2-9) Data (7-14)
+ * Select In (17) RS (4)
+ * Auto Feed (14) R/W (5)
+ *
+ * In addition, power must be supplied to the module, normally with
+ * a circuit similar to this:
+ *
+ * VCC (+5V) O------o-------o--------O Module pin 2
+ * | | +
+ * / ---
+ * \ --- 1uF
+ * / | -
+ * \ <-----o--------O Module pin 3
+ * /
+ * \
+ * |
+ * GND O------o----------------O Module pin 1
+ *
+ * The ground line should also be connected to the parallel port, on
+ * one of the ground pins (eg. pin 25).
+ *
+ * Note that the pinning on some LCD modules has the odd and even pins
+ * arranged as though reversed; check carefully before conecting a module
+ * as it is possible to toast the HD44780 if the power is reversed.
+ */
+
+static int hd_fd;
+static u_int8_t hd_cbits;
+static int hd_lines = 2;
+static int hd_blink = 0;
+static int hd_cursor = 0;
+static int hd_font = 0;
+
+#define HD_COMMAND SELECTIN
+#define HD_DATA 0
+#define HD_READ 0
+#define HD_WRITE AUTOFEED
+
+#define HD_BF 0x80 /* internal busy flag */
+#define HD_ADDRMASK 0x7f /* DDRAM address mask */
+
+#define hd_sctrl(v) {u_int8_t _val; _val = hd_cbits | v; ioctl(hd_fd, PPISCTRL, &_val);}
+#define hd_sdata(v) {u_int8_t _val; _val = v; ioctl(hd_fd, PPISDATA, &_val);}
+#define hd_gdata(v) ioctl(hd_fd, PPIGDATA, &v)
+
+static void
+hd44780_output(int type, int data)
+{
+ debug(3, "%s -> 0x%02x", (type == HD_COMMAND) ? "cmd " : "data", data);
+ hd_sctrl(type | HD_WRITE | STROBE); /* set direction, address */
+ hd_sctrl(type | HD_WRITE); /* raise E */
+ hd_sdata((u_int8_t) data); /* drive data */
+ hd_sctrl(type | HD_WRITE | STROBE); /* lower E */
+}
+
+static int
+hd44780_input(int type)
+{
+ u_int8_t val;
+
+ hd_sctrl(type | HD_READ | STROBE); /* set direction, address */
+ hd_sctrl(type | HD_READ); /* raise E */
+ hd_gdata(val); /* read data */
+ hd_sctrl(type | HD_READ | STROBE); /* lower E */
+
+ debug(3, "0x%02x -> %s", val, (type == HD_COMMAND) ? "cmd " : "data");
+ return(val);
+}
+
+static void
+hd44780_prepare(char *devname, char *options)
+{
+ char *cp = options;
+
+ if ((hd_fd = open(devname, O_RDWR, 0)) == -1)
+ err(EX_OSFILE, "can't open '%s'", devname);
+
+ /* parse options */
+ while (cp && *cp) {
+ switch (*cp++) {
+ case '1':
+ hd_lines = 1;
+ break;
+ case 'B':
+ hd_blink = 1;
+ break;
+ case 'C':
+ hd_cursor = 1;
+ break;
+ case 'F':
+ hd_font = 1;
+ break;
+ default:
+ errx(EX_USAGE, "hd44780: unknown option code '%c'", *(cp-1));
+ }
+ }
+
+ /* Put LCD in idle state */
+ if (ioctl(hd_fd, PPIGCTRL, &hd_cbits)) /* save other control bits */
+ err(EX_IOERR, "ioctl PPIGCTRL failed (not a ppi device?)");
+ hd_cbits &= ~(STROBE | SELECTIN | AUTOFEED); /* set strobe, RS, R/W low */
+ debug(2, "static control bits 0x%x", hd_cbits);
+ hd_sctrl(STROBE);
+ hd_sdata(0);
+
+}
+
+static void
+hd44780_finish(void)
+{
+ close(hd_fd);
+}
+
+static void
+hd44780_command(int cmd)
+{
+ u_int8_t val;
+
+ switch (cmd) {
+ case CMD_RESET: /* full manual reset and reconfigure as per datasheet */
+ debug(1, "hd44780: reset to %d lines, %s font,%s%s cursor",
+ hd_lines, hd_font ? "5x10" : "5x7", hd_cursor ? "" : " no", hd_blink ? " blinking" : "");
+ val = 0x30;
+ if (hd_lines == 2)
+ val |= 0x08;
+ if (hd_font)
+ val |= 0x04;
+ hd44780_output(HD_COMMAND, val);
+ usleep(10000);
+ hd44780_output(HD_COMMAND, val);
+ usleep(1000);
+ hd44780_output(HD_COMMAND, val);
+ usleep(1000);
+ val = 0x08; /* display off */
+ hd44780_output(HD_COMMAND, val);
+ usleep(1000);
+ val |= 0x04; /* display on */
+ if (hd_cursor)
+ val |= 0x02;
+ if (hd_blink)
+ val |= 0x01;
+ hd44780_output(HD_COMMAND, val);
+ usleep(1000);
+ hd44780_output(HD_COMMAND, 0x06); /* shift cursor by increment */
+ usleep(1000);
+ /* FALLTHROUGH */
+
+ case CMD_CLR:
+ hd44780_output(HD_COMMAND, 0x01);
+ usleep(2000);
+ break;
+
+ case CMD_BKSP:
+ hd44780_output(HD_DATA, 0x10); /* shift cursor left one */
+ break;
+
+ case CMD_NL:
+ if (hd_lines == 2)
+ hd44780_output(HD_COMMAND, 0xc0); /* beginning of second line */
+ break;
+
+ case CMD_CR:
+ /* XXX will not work in 4-line mode, or where readback fails */
+ val = hd44780_input(HD_COMMAND) & 0x3f; /* mask character position, save line pos */
+ hd44780_output(HD_COMMAND, 0x80 | val);
+ break;
+
+ case CMD_HOME:
+ hd44780_output(HD_COMMAND, 0x02);
+ usleep(2000);
+ break;
+
+ default:
+ if (isprint(cmd)) {
+ warnx("unknown command %c", cmd);
+ } else {
+ warnx("unknown command 0x%x", cmd);
+ }
+ }
+ usleep(40);
+}
+
+static void
+hd44780_putc(int c)
+{
+ hd44780_output(HD_DATA, c);
+ usleep(40);
+}
+
diff --git a/share/examples/ppp/chap-auth b/share/examples/ppp/chap-auth
new file mode 100755
index 0000000..1e56b07
--- /dev/null
+++ b/share/examples/ppp/chap-auth
@@ -0,0 +1,97 @@
+#! /usr/local/bin/wish8.0 -f
+#
+# Copyright (c) 1999 Brian Somers <brian@Awfulhak.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$
+
+#
+# Display a window to request a users CHAP secret, accepting the relevant
+# values from ppp (``set authkey !thisprogram'') and passing the entered
+# ``authname'' and ``authkey'' back to ppp.
+#
+
+set pwidth 12; # Prompt field width
+set vwidth 20; # Value field width
+set fxpad 7; # Value field width
+set fypad 3; # Value field width
+
+wm title . "PPP Authentication";
+
+# We expect three lines of input from ppp
+set hostname [gets stdin];
+set challenge [gets stdin];
+set authname [gets stdin];
+
+proc mkhalfframe { n prompt } {
+ global pwidth;
+
+ frame .$n;
+ text .$n.prompt -width $pwidth -height 1 -relief flat;
+ .$n.prompt insert 1.0 $prompt;
+ pack .$n.prompt -side left;
+ .$n.prompt configure -state disabled;
+}
+
+proc mkframe { n prompt value entry } {
+ global vwidth fxpad fypad;
+
+ mkhalfframe $n $prompt;
+ text .$n.value -width $vwidth -height 1;
+ .$n.value insert 1.0 $value;
+ pack .$n.value -side right;
+ if ($entry) {
+ # Allow entry, but don't encourage it
+ .$n.value configure -state normal -takefocus 0;
+ bind .$n.value <Return> {done};
+ } else {
+ .$n.value configure -state disabled;
+ }
+ pack .$n -side top -padx $fxpad -pady $fypad;
+}
+
+# Dump our fields to stdout and exit
+proc done {} {
+ puts [.n.value get 1.0 {end - 1 char}];
+ puts [.k.value get];
+ exit 0;
+}
+
+mkframe h "Hostname:" $hostname 0;
+mkframe c "Challenge:" $challenge 0;
+mkframe n "Authname:" $authname 1;
+
+mkhalfframe k "Authkey:";
+entry .k.value -show "*" -width $vwidth;
+pack .k.value -side right;
+bind .k.value <Return> {done};
+focus .k.value;
+pack .k -side top -padx $fxpad -pady $fypad;
+
+frame .b;
+button .b.ok -default active -text "Ok" -command {done};
+pack .b.ok -side left;
+button .b.cancel -default normal -text "Cancel" -command {exit 1};
+pack .b.cancel -side right;
+pack .b -side top -padx $fxpad -pady $fypad;
diff --git a/share/examples/ppp/login-auth b/share/examples/ppp/login-auth
new file mode 100755
index 0000000..e866e1d
--- /dev/null
+++ b/share/examples/ppp/login-auth
@@ -0,0 +1,74 @@
+#! /usr/local/bin/wish8.0 -f
+#
+# Copyright (c) 1999 Brian Somers <brian@Awfulhak.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$
+
+#
+# Display a window to request a users password, expecting a login name
+# as an argument and outputting the password to stdout.
+#
+
+set pwidth 11; # Prompt field width
+set vwidth 20; # Value field width
+set fxpad 7; # Value field width
+set fypad 3; # Value field width
+
+wm title . "PPP Login";
+
+# Dump our password to stdout and exit
+proc done {} {
+ puts [.p.value get];
+ exit 0;
+}
+
+frame .l;
+text .l.prompt -width $pwidth -height 1 -relief flat;
+ .l.prompt insert 1.0 "Login:";
+pack .l.prompt -side left;
+ .l.prompt configure -state disabled;
+text .l.value -width $vwidth -height 1;
+ .l.value insert 1.0 $argv;
+pack .l.value -side right;
+ .l.value configure -state disabled;
+pack .l -side top -padx $fxpad -pady $fypad;
+
+frame .p;
+text .p.prompt -width $pwidth -height 1 -relief flat;
+ .p.prompt insert 1.0 "Password:";
+pack .p.prompt -side left;
+ .p.prompt configure -state disabled;
+entry .p.value -show "*" -width $vwidth;
+pack .p.value -side right;
+bind .p.value <Return> {done};
+focus .p.value;
+pack .p -side top -padx $fxpad -pady $fypad;
+
+frame .b;
+button .b.ok -default active -text "Ok" -takefocus 0 -command {done};
+pack .b.ok -side left;
+button .b.cancel -default normal -text "Cancel" -takefocus 0 -command {exit 1};
+pack .b.cancel -side right;
+pack .b -side top -padx $fxpad -pady $fypad;
diff --git a/share/examples/ppp/ppp.conf.sample b/share/examples/ppp/ppp.conf.sample
new file mode 100644
index 0000000..7863eaa
--- /dev/null
+++ b/share/examples/ppp/ppp.conf.sample
@@ -0,0 +1,789 @@
+#################################################################
+#
+# PPP Sample Configuration File
+#
+# Originally written by Toshiharu OHNO
+#
+# $FreeBSD$
+#
+#################################################################
+
+# This file is separated into sections. Each section is named with
+# a label starting in column 0 and followed directly by a ``:''. The
+# section continues until the next label. Blank lines and characters
+# after a ``#'' are ignored (a literal ``#'' must be escaped with a ``\''
+# or quoted with ""). All commands inside sections that do not begin
+# with ``!'' (e.g., ``!include'') *must* be indented by at least one
+# space or tab or they will not be recognized!
+#
+# Lines beginning with "!include" will ``include'' another file. You
+# may want to ``!include ~/.ppp.conf'' for backwards compatibility.
+#
+
+# Default setup. Always executed when PPP is invoked.
+# This section is *not* pre-loaded by the ``load'' or ``dial'' commands.
+#
+# This is the best place to specify your modem device, its DTR rate,
+# your dial script and any logging specification. Logging specs should
+# be done first so that the results of subsequent commands are logged.
+#
+default:
+ set log Phase Chat LCP IPCP CCP tun command
+ set device /dev/cuad1
+ set speed 115200
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT \
+ OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
+
+# Client side PPP
+#
+# Although the PPP protocol is a peer to peer protocol, we normally
+# consider the side that initiates the connection as the client and
+# the side that receives the connection as the server. Authentication
+# is required by the server either using a unix-style login procedure
+# or by demanding PAP or CHAP authentication from the client.
+#
+
+# An on demand example where we have dynamic IP addresses and wish to
+# use a unix-style login script:
+#
+# If the peer assigns us an arbitrary IP (most ISPs do this) and we
+# can't predict what their IP will be either, take a wild guess at
+# some IPs that you can't currently route to. Ppp can change this
+# when the link comes up.
+#
+# The /0 bit in "set ifaddr" says that we insist on 0 bits of the
+# specified IP actually being correct, therefore, the other side can assign
+# any IP number.
+#
+# The fourth arg to "set ifaddr" makes us send "0.0.0.0" as our requested
+# IP number, forcing the peer to make the decision. This is necessary
+# when negotiating with some (broken) ppp implementations.
+#
+# This entry also works with static IP numbers or when not in -auto mode.
+# The ``add'' line adds a `sticky' default route that will be updated if
+# and when any of the IP numbers are changed in IPCP negotiations.
+# The "set ifaddr" is required in -auto mode only.
+# It's better to put the ``add'' line in ppp.linkup when not in -auto mode.
+#
+# Finally, the ``enable dns'' line tells ppp to ask the peer for the
+# nameserver addresses that should be used. This isn't always supported
+# by the other side, but if it is, ppp will update /etc/resolv.conf with
+# the correct nameserver values at connection time.
+#
+# The login script shown says that you're expecting ``ogin:''. If you
+# don't receive that, send a ``\n'' and expect ``ogin:'' again. When
+# it's received, send ``ppp'', expect ``word:'' then send ``ppp''.
+# You *MUST* customise this login script according to your local
+# requirements.
+#
+pmdemand:
+ set phone 1234567
+ set login "ABORT NO\\sCARRIER TIMEOUT 5 ogin:--ogin: ppp word: ppp"
+ set timeout 120
+ set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
+ add default HISADDR
+ enable dns
+
+# If you want to use PAP or CHAP instead of using a unix-style login
+# procedure, do the following. Note, the peer suggests whether we
+# should send PAP or CHAP. By default, we send whatever we're asked for.
+#
+# You *MUST* customise ``MyName'' and ``MyKey'' below.
+#
+PAPorCHAPpmdemand:
+ set phone 1234567
+ set login
+ set authname "MyName"
+ set authkey "MyKey"
+ set timeout 120
+ set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
+ add default HISADDR
+ enable dns
+
+# On demand dialup example with static IP addresses:
+# Here, the local side uses 192.244.185.226 and the remote side
+# uses 192.244.176.44.
+#
+# # ppp -auto ondemand
+#
+# With static IP numbers, our setup is similar to dynamic:
+# Remember, ppp.linkup is searched for a "192.244.176.44" label, then
+# an "ondemand" label, and finally the "MYADDR" label.
+#
+ondemand:
+ set phone 1234567
+ set login "ABORT NO\\sCARRIER TIMEOUT 5 ogin:--ogin: ppp word: ppp"
+ set timeout 120
+ set ifaddr 192.244.185.226 192.244.176.44
+ add default HISADDR
+ enable dns
+
+# An on-demand dialup example using an external Terminal Adapter (TA)
+# that supports multi-link ppp itself.
+#
+# This may be specific to the AETHRA TA.
+#
+TA:
+ set phone 12345678 # Replace this with your ISPs phone number
+
+ set authname "somename" # Replace these with your login name & password.
+ set authkey "somepasswd" # This profile assumes you're using PAP or CHAP.
+
+ enable lqr echo
+ set reconnect 3 5
+ set redial 3 10
+ set lqrperiod 45
+ disable pred1 deflate mppe
+ deny pred1 deflate mppe
+
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATB41CL2048 \
+ OK-AT-OK ATB40&J3E1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
+ set login
+ set logout
+ set hangup
+
+ set timeout 60 300 # The minimum charge period is 5 minutes, so don't
+ # hangup before then
+
+ set device /dev/cuad0 # Or whatever
+ set speed 115200 # Use as high a speed as possible
+
+ enable dns # Ask the peer what to put in resolv.conf
+
+ # Take a wild guess at an IP number and let the other side decide
+ set ifaddr 172.16.0.1/0 212.0.0.0/0 0 0
+ add! default hisaddr
+
+ set mru 1504 # Some extra room for the MP header
+
+ set server /var/run/ppp/ppp-TA "" 0177 # The diagnostic port (-rw-------)
+
+
+# Example segments
+#
+# The following lines may be included as part of your configuration
+# section and aren't themselves complete. They're provided as examples
+# of how to achieve different things.
+
+examples:
+# Multi-phone example. Numbers separated by a : are used sequentially.
+# Numbers separated by a | are used if the previous dial or login script
+# failed. Usually, you will prefer to use only one of | or :, but both
+# are allowed.
+#
+ set phone 12345678|12345679:12345670|12345671
+#
+# Some phone numbers may include # characters - don't forget to escape
+# (or quote) them:
+#
+ set phone "12345##678"
+#
+# Ppp can accept control instructions from the ``pppctl'' program.
+# First, you must set up your control socket. It's safest to use
+# a UNIX domain socket, and watch the permissions:
+#
+ set server /var/run/ppp/internet MySecretPassword 0177
+#
+# Although a TCP port may be used if you want to allow control
+# connections from other machines:
+#
+ set server 6670 MySecretpassword
+#
+# If you don't like ppp's builtin chat, use an external one:
+#
+ set login "\"!chat \\-f /etc/ppp/ppp.dev.chat\""
+#
+# If we have a ``strange'' modem that must be re-initialized when we
+# hangup:
+#
+ set hangup "\"\" AT OK-AT-OK ATZ OK"
+#
+# To adjust logging without blowing away the setting in default:
+#
+ set log -command +tcp/ip
+#
+# To see log messages on the screen in interactive mode:
+#
+ set log local LCP IPCP CCP
+#
+# If you're seeing a lot of magic number problems and failed connections,
+# try this (see the man page):
+#
+ set openmode active 5
+#
+# For noisy lines, we may want to reconnect (up to 20 times) after loss
+# of carrier, with 3 second delays between each attempt:
+#
+ set reconnect 3 20
+#
+# When playing server for M$ clients, tell them who our NetBIOS name
+# servers are:
+#
+ set nbns 10.0.0.1 10.0.0.2
+#
+# Inform the client if they ask for our DNS IP numbers:
+#
+ enable dns
+#
+# If you don't want to tell them what's in your /etc/resolv.conf file
+# with `enable dns', override the values:
+#
+ set dns 10.0.0.1 10.0.0.2
+#
+# Some people like to prioritize DNS packets:
+#
+ set urgent udp +53
+#
+# If we're using the -nat switch, redirect ftp and http to an internal
+# machine:
+#
+ nat port tcp 10.0.0.2:ftp ftp
+ nat port tcp 10.0.0.2:http http
+#
+# or don't trust the outside at all
+#
+ nat deny_incoming yes
+#
+# I trust user brian to run ppp, so this goes in the `default' section:
+#
+ allow user brian
+#
+# But label `internet' contains passwords that even brian can't have, so
+# I empty out the user access list in that section so that only root can
+# have access:
+#
+ allow users
+#
+# I also may wish to set up my ppp login script so that it asks the client
+# for the label they wish to use. I may only want user ``dodgy'' to access
+# their own label in direct mode:
+#
+dodgy:
+ allow user dodgy
+ allow mode direct
+#
+# We don't want certain packets to keep our connection alive
+#
+ set filter alive 0 deny udp src eq 520 # routed
+ set filter alive 1 deny udp dst eq 520 # routed
+ set filter alive 2 deny udp src eq 513 # rwhod
+ set filter alive 3 deny udp src eq 525 # timed
+ set filter alive 4 deny udp src eq 137 # NetBIOS name service
+ set filter alive 5 deny udp src eq 138 # NetBIOS datagram service
+ set filter alive 6 deny tcp src eq 139 # NetBIOS session service
+ set filter alive 7 deny udp dst eq 137 # NetBIOS name service
+ set filter alive 8 deny udp dst eq 138 # NetBIOS datagram service
+ set filter alive 9 deny tcp dst eq 139 # NetBIOS session service
+ set filter alive 10 deny 0/0 MYADDR icmp # Ping to us from outside
+ set filter alive 11 permit 0/0 0/0
+#
+# And in auto mode, we don't want certain packets to cause a dialup
+#
+ set filter dial 0 deny udp src eq 513 # rwhod
+ set filter dial 1 deny udp src eq 525 # timed
+ set filter dial 2 deny udp src eq 137 # NetBIOS name service
+ set filter dial 3 deny udp src eq 138 # NetBIOS datagram service
+ set filter dial 4 deny tcp src eq 139 # NetBIOS session service
+ set filter dial 5 deny udp dst eq 137 # NetBIOS name service
+ set filter dial 6 deny udp dst eq 138 # NetBIOS datagram service
+ set filter dial 7 deny tcp dst eq 139 # NetBIOS session service
+ set filter dial 8 deny tcp finrst # Badly closed TCP channels
+ set filter dial 9 permit 0 0
+#
+# Once the line's up, allow these connections
+#
+ set filter in 0 permit tcp dst eq 113 # ident
+ set filter out 0 permit tcp src eq 113 # ident
+ set filter in 1 permit tcp src eq 23 estab # telnet
+ set filter out 1 permit tcp dst eq 23 # telnet
+ set filter in 2 permit tcp src eq 21 estab # ftp
+ set filter out 2 permit tcp dst eq 21 # ftp
+ set filter in 3 permit tcp src eq 20 dst gt 1023 # ftp-data
+ set filter out 3 permit tcp dst eq 20 # ftp-data
+ set filter in 4 permit udp src eq 53 # DNS
+ set filter out 4 permit udp dst eq 53 # DNS
+ set filter in 5 permit 192.244.191.0/24 0/0 # Where I work
+ set filter out 5 permit 0/0 192.244.191.0/24 # Where I work
+ set filter in 6 permit icmp # pings
+ set filter out 6 permit icmp # pings
+ set filter in 7 permit udp dst gt 33433 # traceroute
+ set filter out 7 permit udp dst gt 33433 # traceroute
+
+#
+# ``dodgynet'' is an example intended for an autodial configuration which
+# is connecting a local network to a host on an untrusted network.
+dodgynet:
+ set log Phase # Log link uptime
+ allow mode auto # For autoconnect only
+ set device /dev/cuad1 # Define modem device and speed
+ set speed 115200
+ deny lqr # Don't support LQR
+ set phone 0W1194 # Remote system phone number,
+ set authname "pppLogin" # login
+ set authkey "MyPassword" # and password
+ set dial "ABORT BUSY ABORT NO\\sCARRIER \ # Chat script to dial the peer
+ TIMEOUT 5 \"\" ATZ OK-ATZ-OK \
+ ATE1Q0M0 OK \\dATDT\\T \
+ TIMEOUT 40 CONNECT"
+ set login "TIMEOUT 10 \"\" \"\" \ # And to login to remote system
+ gin:--gin: \\U word: \\P"
+
+ # Drop the link after 15 minutes of inactivity
+ # Inactivity is defined by the `set filter alive' line below
+ set timeout 900
+
+ # Hard-code remote system to appear within local subnet and use proxy arp
+ # to make this system the gateway for the rest of the local network
+ set ifaddr 172.17.20.247 172.17.20.248 255.255.240.0
+ enable proxy
+
+ # Allow any TCP packet to keep the link alive
+ set filter alive 0 permit tcp
+
+ # Only allow dialup to be triggered by http, rlogin, rsh, telnet, ftp or
+ # private TCP ports 24 and 4000
+ set filter dial 0 7 0 0 tcp dst eq http
+ set filter dial 1 7 0 0 tcp dst eq login
+ set filter dial 2 7 0 0 tcp dst eq shell
+ set filter dial 3 7 0 0 tcp dst eq telnet
+ set filter dial 4 7 0 0 tcp dst eq ftp
+ set filter dial 5 7 0 0 tcp dst eq 24
+ set filter dial 6 deny ! 0 0 tcp dst eq 4000
+
+ # From hosts on a couple of local subnets to the remote peer
+ # If the remote host allowed IP forwarding and we wanted to use it, the
+ # following rules could be split into two groups to separately validate
+ # the source and destination addresses.
+ set filter dial 7 permit 172.17.16.0/20 172.17.20.248
+ set filter dial 8 permit 172.17.36.0/22 172.17.20.248
+ set filter dial 9 permit 172.17.118.0/26 172.17.20.248
+ set filter dial 10 permit 10.123.5.0/24 172.17.20.248
+
+ # Once the link's up, limit outgoing access to the specified hosts
+ set filter out 0 4 172.17.16.0/20 172.17.20.248
+ set filter out 1 4 172.17.36.0/22 172.17.20.248
+ set filter out 2 4 172.17.118.0/26 172.17.20.248
+ set filter out 3 deny ! 10.123.5.0/24 172.17.20.248
+
+ # Allow established TCP connections
+ set filter out 4 permit 0 0 tcp estab
+
+ # And new connections to http, rlogin, rsh, telnet, ftp and ports
+ # 24 and 4000
+ set filter out 5 permit 0 0 tcp dst eq http
+ set filter out 6 permit 0 0 tcp dst eq login
+ set filter out 7 permit 0 0 tcp dst eq shell
+ set filter out 8 permit 0 0 tcp dst eq telnet
+ set filter out 9 permit 0 0 tcp dst eq ftp
+ set filter out 10 permit 0 0 tcp dst eq 24
+ set filter out 11 permit 0 0 tcp dst eq 4000
+
+ # And outgoing icmp
+ set filter out 12 permit 0 0 icmp
+
+ # Once the link's up, limit incoming access to the specified hosts
+ set filter in 0 4 172.17.20.248 172.17.16.0/20
+ set filter in 1 4 172.17.20.248 172.17.36.0/22
+ set filter in 2 4 172.17.20.248 172.17.118.0/26
+ set filter in 3 deny ! 172.17.20.248 10.123.5.0/24
+
+ # Established TCP connections and non-PASV FTP
+ set filter in 4 permit 0/0 0/0 tcp estab
+ set filter in 5 permit 0/0 0/0 tcp src eq 20
+
+ # Useful ICMP messages
+ set filter in 6 permit 0/0 0/0 icmp src eq 3
+ set filter in 7 permit 0/0 0/0 icmp src eq 4
+ set filter in 8 permit 0/0 0/0 icmp src eq 11
+ set filter in 9 permit 0/0 0/0 icmp src eq 12
+
+ # Echo reply (local systems can ping the remote host)
+ set filter in 10 permit 0/0 0/0 icmp src eq 0
+
+ # And the remote host can ping the local gateway (only)
+ set filter in 11 permit 0/0 172.17.20.247 icmp src eq 8
+
+
+# Server side PPP
+#
+# If you want the remote system to authenticate itself, you must insist
+# that the peer uses CHAP or PAP with the "enable" keyword. Both CHAP and
+# PAP are disabled by default. You may enable either or both. If both
+# are enabled, CHAP is requested first. If the client doesn't agree, PAP
+# will then be requested.
+#
+# Note: If you use the getty/login process to authenticate users, you
+# don't need to enable CHAP or PAP, but the user that has logged
+# in *MUST* be a member of the ``network'' group (in /etc/group).
+#
+# Note: Chap80 and chap81 are Microsoft variations of standard chap (05).
+#
+# If you wish to allow any user in the passwd database ppp access, you
+# can ``enable passwdauth'', but this will only work with PAP.
+#
+# When the peer authenticates itself, we use ppp.secret for verification
+# (although refer to the ``set radius'' command below for an alternative).
+#
+# Note: We may supply a third field in ppp.secret specifying the IP
+# address for that user, a fourth field to specify the
+# ppp.link{up,down} label to use and a fifth field to specify
+# callback characteristics.
+#
+# The easiest way to allow transparent LAN access to your dialin users
+# is to assign them a number from your local LAN and tell ppp to make a
+# ``proxy'' arp entry for them. In this example, we have a local LAN
+# with IP numbers 10.0.0.1 - 10.0.0.99, and we assign numbers to our
+# ppp clients between 10.0.0.100 and 10.0.0.199. It is possible to
+# override the dynamic IP number with a static IP number specified in
+# ppp.secret.
+#
+# Ppp is launched with:
+# # ppp -direct server
+#
+server:
+ enable chap chap80 chap81 pap passwdauth
+ enable proxy
+ set ifaddr 10.0.0.1 10.0.0.100-10.0.0.199
+ accept dns
+
+# Example of a RADIUS configuration:
+# If there are one or more radius servers available, we can use them
+# instead of the ppp.secret file. Simply put then in a radius
+# configuration file (usually /etc/radius.conf) and give ppp the
+# file name.
+# Ppp will use the FRAMED characteristics supplied by the radius server
+# to configure the link.
+
+radius-server:
+ load server # load in the server config from above
+ set radius /etc/radius.conf
+
+
+# Example to connect using a null-modem cable:
+# The important thing here is to allow the lqr packets on both sides.
+# Without them enabled, we can't tell if the line's dropped - there
+# should always be carrier on a direct connection.
+# Here, the server sends lqr's every 10 seconds and quits if five in a
+# row fail.
+#
+# Make sure you don't have "deny lqr" in your default: on the client !
+# If the peer denies LQR, we still send ECHO LQR packets at the given
+# lqrperiod interval (ppp-style-pings).
+#
+direct-client:
+ set dial
+ set device /dev/cuad0
+ set sp 115200
+ set timeout 900
+ set lqrperiod 10
+ set log Phase Chat LQM
+ set login "ABORT NO\\sCARRIER TIMEOUT 5 ogin:--ogin: ppp word: ppp HELLO"
+ set ifaddr 10.0.4.2 10.0.4.1
+ enable lqr echo
+ accept lqr
+
+direct-server:
+ set timeout 0
+ set lqrperiod 10
+ set log Phase LQM
+ set ifaddr 10.0.4.1 10.0.4.2
+ enable lqr echo
+ accept lqr
+
+
+# Example to connect via compuserve
+# Compuserve insists on 7 bits even parity during the chat phase. Modem
+# parity is always reset to ``none'' after the link has been established.
+#
+compuserve:
+ set phone 1234567
+ set parity even
+ set login "TIMEOUT 100 \"\" \"\" Name: CIS ID: 999999,9999/go:pppconnect \
+ word: XXXXXXXX PPP"
+ set timeout 300
+ set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
+ delete ALL
+ add default HISADDR
+
+
+# Example for PPP over TCP.
+# We assume that inetd on tcpsrv.mynet has been
+# configured to run "ppp -direct tcp-server" when it gets a connection on
+# port 1234 with an entry something like this in /etc/inetd.conf.:
+#
+# ppp stream tcp nowait root /usr/sbin/ppp ppp -direct tcp-server
+#
+# with this in /etc/services:
+#
+# ppp 6671/tcp
+#
+# Read the man page for further details.
+#
+# Note, we assume we're using a binary-clean connection. If something
+# such as `rlogin' is involved, you may need to ``set escape 0xff''
+#
+tcp-client:
+ set device tcpsrv.mynet:1234
+ set dial
+ set login
+ set ifaddr 10.0.5.1 10.0.4.1 255.255.255.0
+
+tcp-server:
+ set ifaddr 10.0.4.1 10.0.5.1 255.255.255.0
+
+
+# Using UDP is also possible with this in /etc/inetd.conf:
+#
+# ppp dgram udp wait root /usr/sbin/ppp ppp -direct udp-server
+#
+# and this in /etc/services:
+#
+# ppp 6671/tcp
+#
+udp-client:
+ set device udpsrv.mynet:1234/udp
+ set dial
+ set login
+ set ifaddr 10.0.5.1 10.0.4.1 255.255.255.0
+
+udp-server:
+ set ifaddr 10.0.4.1 10.0.5.1 255.255.255.0
+
+
+# Example for PPP testing.
+# If you want to test ppp, do it through the loopback interface:
+#
+# Requires a line in /etc/services:
+# ppploop 6671/tcp # loopback ppp daemon
+#
+# and a line in /etc/inetd.conf:
+# ppploop stream tcp nowait root /usr/sbin/ppp ppp -direct inet-loop-in
+#
+inet-loop:
+ set timeout 0
+ set log phase chat connect lcp ipcp command
+ set device localhost:ppploop
+ set dial
+ set login
+ set ifaddr 127.0.0.2 127.0.0.3
+ set server /var/run/ppp/loop "" 0177
+
+inet-loop-in:
+ set timeout 0
+ set log phase lcp ipcp command
+ allow mode direct
+
+# Example of a VPN.
+# If you're going to create a tunnel through a public network, your VPN
+# should be set up something like this:
+#
+# You should already have set up ssh using ssh-agent & ssh-add.
+#
+sloop:
+ load inet-loop
+ # Passive mode allows ssh plenty of time to establish the connection
+ set openmode passive
+ set device "!ssh whatevermachine /usr/sbin/ppp -direct inet-loop-in"
+
+
+# or a better VPN solution (which doesn't run IP over a reliable
+# protocol like tcp) may be:
+#
+vpn-client:
+ set device udpsrv.mynet:1234/udp # PPP over UDP
+ set dial
+ set login
+ set ifaddr 10.0.5.1 10.0.4.1 255.255.255.0
+ disable deflate pred1
+ deny deflate pred1
+ enable MPPE # With encryption
+ accept MPPE
+
+vpn-server:
+ set ifaddr 10.0.4.1 10.0.5.1 255.255.255.0
+ disable deflate pred1
+ deny deflate pred1
+ enable MPPE
+ accept MPPE
+ enable chap81 # Required for MPPE
+
+# Example of non-PPP callback.
+# If you wish to connect to a server that will dial back *without* using
+# the ppp callback facility (rfc1570), take advantage of the fact that
+# ppp doesn't look for carrier 'till `set login' is complete:
+#
+# Here, we expect the server to say DIALBACK then disconnect after
+# we've authenticated ourselves. When this has happened, we wait
+# 60 seconds for a RING.
+#
+# Note, it's important that we tell ppp not to expect carrier, otherwise
+# we'll drop out at the ``NO CARRIER'' stage.
+#
+dialback:
+ set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" ATZ OK-ATZ-OK \
+ ATDT\\T TIMEOUT 60 CONNECT"
+ set cd off
+ set login "TIMEOUT 5 ogin:--ogin: ppp word: ppp TIMEOUT 15 DIALBACK \
+ \"\" NO\\sCARRIER \"\" TIMEOUT 60 RING ATA CONNECT"
+
+# Example of PPP callback.
+# Alternatively, if the peer is using the PPP callback protocol, we're
+# happy either with ``auth'' style callback where the server dials us
+# back based on what we authenticate ourselves with, ``cbcp'' style
+# callback (invented by Microsoft but not agreed by the IETF) where
+# we negotiate callback *after* authentication or E.164 callback where
+# we specify only a phone number. I would recommend only ``auth'' and/or
+# ``cbcp'' callback methods.
+# For ``cbcp'', we insist that we choose ``1234567'' as the number that
+# the server must call back.
+#
+callback:
+ load pmdemand # load in the pmdemand config
+ set callback auth cbcp e.164 1234567
+ set cbcp 1234567
+
+# If we're running a ppp server that wants to only call back microsoft
+# clients on numbers configured in /etc/ppp/ppp.secret (the 5th field):
+#
+callback-server:
+ load server
+ set callback cbcp
+ set cbcp
+ set log +cbcp
+ set redial 3 1
+ set device /dev/cuad0
+ set speed 115200
+ set dial "TIMEOUT 10 \"\" AT OK-AT-OK ATDT\\T CONNECT"
+
+# Or if we want to allow authenticated clients to specify their own
+# callback number:
+#
+callback-server-client-decides:
+ load callback-server
+ set cbcp *
+
+# Multilink mode is available (rfc1990).
+# To enable multi-link capabilities, you must specify a MRRU. 1500 is
+# a reasonable value. To create new links, use the ``clone'' command
+# to duplicate an existing link. If you already have more than one
+# link, you must specify which link you wish to run the command on via
+# the ``link'' command.
+#
+# It's worth increasing your MTU and MRU slightly in multi-link mode to
+# prevent full packets from being fragmented.
+#
+# You can now ``dial'' specific links, or even dial all links at the
+# same time. The `dial' command may also be prefixed with a specific
+# link that should do the dialing.
+#
+mloop:
+ load loop
+ set device /dev/cuad0 /dev/cuad1 /dev/cuad2 # Use any of these devices
+ set mode interactive
+ set mrru 1500
+ set mru 1504 # Room for the MP header
+ clone 1 2 3
+ link deflink remove
+ # dial
+ # link 2 dial
+ # link 3 dial
+
+mloop-in:
+ set timeout 0 # No idle timer
+ set log tun phase
+ allow mode direct
+ set mrru 1500
+ set mru 1504 # Room for the MP header
+
+# User supplied authentication:
+# It's possible to run ppp in the background while specifying a
+# program to use to obtain authentication details on demand.
+# This program would usually be a simple GUI that presents a
+# prompt to a known user. The ``chap-auth'' program is supplied
+# as an example (and requires tcl version 8.0).
+#
+CHAPprompt:
+ load PAPorCHAPpmdemand
+ set authkey !/usr/share/examples/ppp/chap-auth
+
+# It's possible to do the same sort of thing at the login prompt.
+# Here, after sending ``brian'' in response to the ``name'' prompt,
+# we're prompted with ``code:''. A window is then displayed on the
+# ``keep:0.0'' display and the typed response is sent to the peer
+# as the password. We then expect to see ``MTU'' and ``.'' in the
+# servers response.
+#
+loginprompt:
+ load pmdemand
+ set authname "brian"
+ set login "ABORT NO\\sCARRIER TIMEOUT 15 \"\" \"\" name:--name: \\U \
+ code: \"!/usr/share/examples/ppp/login-auth -display keep:0.0 \
+ AUTHNAME\" MTU \\c ."
+
+# ppp supports ppp over ethernet (PPPoE). Beware, many PPP servers cache
+# the MAC address that connects to them, making it impossible to switch
+# your PPPoE connection between machines.
+#
+# The current implementation requires Netgraph, so it doesn't work with
+# OpenBSD or NetBSD.
+#
+# The client should be something like this:
+#
+pppoe:
+ set device PPPoE:de0:pppoe-in
+ enable lqr echo
+ set cd 5
+ set dial
+ set login
+ set redial 0 0
+
+# And the server should be running
+#
+# /usr/libexec/pppoed -p pppoe-in fxp0
+#
+# See rc.conf(5)
+#
+pppoe-in:
+ allow mode direct # Only for use on server-side
+ enable lqr echo proxy # Enable LQR and proxy-arp
+ enable chap pap passwdauth # Force client authentication
+ set ifaddr 10.0.0.1 10.0.0.100-10.0.0.199 # Hand out up to 100 IP numbers
+ accept dns # Allow DNS negotiation
+
+# It's possible to run ppp back-to-back with itself. This is useful
+# for testing.
+#
+# When testing scalability and concurrency, the following profile might
+# be used.
+#
+# Note, you'll have to make some other machine adjustments:
+#
+# o Bump maxusers in your kernel configuration to about 256 so that there
+# are enough process table slots.
+# o Bump system file descriptors with ``sysctl kern.maxfiles=20480''. You'll
+# need 3 descriptors per ppp process (assuming no server socket).
+#
+# You can now create 2000 processes (1000 pairs) with:
+#
+# n=0
+# while [ $n -lt 1000 ]; do ppp -b loop; n=$(($n + 1)); done
+#
+# If you want to test concurrency, try using ``ppp -dd loop'' instead.
+#
+loop:
+ set timeout 0
+ set log
+ set device "!ppp -direct loop-in"
+ set dial
+ set login
+ set ifaddr 10.0.1.1/0 10.0.10.1-10.0.19.255
+ disable deflate pred1 mppe
+ deny deflate pred1 mppe
+
+loop-in:
+ set timeout 0
+ set log
+ allow mode direct
+ set ifaddr 10.0.10.1/0 10.0.1.1-10.0.9.255
+ disable deflate pred1 mppe
+ deny deflate pred1 mppe
diff --git a/share/examples/ppp/ppp.conf.span-isp b/share/examples/ppp/ppp.conf.span-isp
new file mode 100644
index 0000000..446cee3
--- /dev/null
+++ b/share/examples/ppp/ppp.conf.span-isp
@@ -0,0 +1,194 @@
+# $FreeBSD$
+
+# This advanced ppp configuration file explains how to implement
+# the following:
+#
+# ------------- ------------- -------------
+# | host1 | | host2 | | host3 |
+# ------------- ------------- -------------
+# | | |
+# |---------------------- LAN ----------------------|
+# |
+# -------------
+# | Gateway |
+# -------------
+# |
+# -----------------------------------
+# | | | |
+# isp1 isp2 isp3 ispN
+# | | | |
+# -----------------------------------
+# |
+# ------------
+# | Receiver |
+# ------------
+# |
+# Internet
+#
+# The connection is implemented so that any ISP connection can go down
+# without loss of connectivity between the LAN and the Internet. It is
+# of course also possible to shut down any link manually.
+#
+# There is a working example in ppp.*.span-isp.working that can be tested
+# on a single machine !
+#
+#
+# Prerequisites:
+#
+# o The Receiver machine must be in the outside world and must be willing
+# to accept a multilink ppp connection over UDP, assigning a routable IP
+# number to the Gateway machine. This probably means that it must be
+# a *BSD box as I know of no other ppp implementations that can use UDP
+# as a transport.
+#
+# o The Receiver machine must be multi-homed with at least N+1 addresses
+# where N is the maximun number of ISPs that you wish to use
+# simultaneously. We assume the IP numbers to be RIP1, RIP2 ... RIPN.
+# REAL-LOCAL-IP is the real IP number of the Receiver machine (and must
+# not be the same as any of the RIP* numbers).
+#
+# o Both the Gateway and the Receiver machines must have several tun
+# interfaces configured into the kernel (see below).
+#
+# o Both the Gateway and the Receiver machines must have the following
+# entry in /etc/services:
+#
+# ppp 6671/udp
+#
+# The port number isn't important, but it must be consistent across
+# machines.
+#
+# o The Receiver machine must have the following entry in
+# /etc/inetd.conf:
+#
+# ppp dgram udp wait root /usr/sbin/ppp ppp -direct vpn-in
+#
+# Note: Because inetd ``wait''s for ppp to finish, a single ppp
+# invocation receives all incoming packets. This creates
+# havoc with LQR magic number checks, so LQR *must not* be
+# enabled.
+# Also, -direct invocations of ppp do sendto()s using the
+# address that was last recvfrom()d. This means that the
+# returning traffic is a bit unbalanced. Perhaps ppp should
+# be smart enough to automatically clone an existing link
+# when it detects a new incoming address.... tricky !
+#
+# If you use ppp to connect to your ISPs, the isp* profiles shold be used,
+# resulting in the vpn* profiles being called from ppp.linkup.span-isp.
+# These invocations will bond together into a MP ppp invocation.
+#
+# If the link to your ISP is via another type of interface (cable modem
+# etc), simply configure the interface with a netmask of 0xffffffff and
+# add a route to RIPN via the interface address (no default). You can
+# then start ppp using the vpn-nic label.
+#
+# The Receiver machine should have N tun interfaces (where N is the maximum
+# number of ISPs that you wish to use simultaneously). The Gateway machine
+# requires N interfaces plus an additional N interfaces (total 2 * N) if
+# you're using ppp to talk to the ISPs.
+
+# Using ppp to connect to your ISPs (PPP over UDP over PPP):
+#
+# When we connect to our ISPs using ppp, we start the MP ppp invocation
+# from ppp.linkup (see ppp.linkup.span-isp) for each link. We also remove
+# the link from ppp.linkdown (see ppp.linkdown.span-isp). This is necessary
+# because relying on our LQR strategy (dropping the link after 5 missing
+# replies) is just too slow to be practical in this environment.
+#
+# This works because the MP invocations are smart enough to recognise that
+# another process is already running and to pass the link over to that
+# running version.
+#
+# Only the ISP links should be started manually. When they come up, they'll
+# start the MP invocation.
+
+default:
+ set speed 115200
+ set device /dev/cuad0 /dev/cuad1 /dev/cuad2 /dev/cuad3
+ set dial "ABORT BUSY ABORT NO\\sCARRIER ABORT NO\\sDIAL\\sTONE TIMEOUT 4 \
+ \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"
+ set login
+ set redial 3 5
+ set timeout 0
+ enable lqr echo
+ set lqrperiod 15
+
+isp1:
+ set phone "1234567"
+ set authname "isp1name"
+ set authkey "isp1key"
+ add! RIP1/32 HISADDR
+
+isp2:
+ set phone "2345678"
+ set authname "isp2name"
+ set authkey "isp2key"
+ add! RIP2/32 HISADDR
+
+ispN:
+ set phone "3456789"
+ set authname "ispNname"
+ set authkey "ispNkey"
+ add! RIPN/32 HISADDR
+
+
+# Our MP version of ppp. vpn is a generic label used by each of the
+# other vpn invocations by envoking ppp with both labels (see
+# ppp.linkup.span-isp).
+# Each ``set device'' command tells ppp to use UDP packets destined for
+# the given IP/port as the link (transport). The routing table will
+# ensure that these UDP packets use the correct ISP connection.
+
+vpn:
+ set enddisc LABEL
+ set speed sync
+ set mrru 1500
+ set mru 1504 # Room for the MP header
+ nat enable yes
+ set authname "vpnname"
+ set authkey "vpnkey"
+ add! default HISADDR
+ disable deflate pred1 lqr
+ deny deflate pred1
+
+vpn1:
+ rename 1
+ set device RIP1:ppp/udp
+
+vpn2:
+ rename 2
+ set device RIP2:ppp/udp
+
+vpnN:
+ rename N
+ set device RIPN:ppp/udp
+
+vpn-nic:
+ load vpn
+ clone 1 2 N
+ link deflink rm
+ link 1 set device RIP1:ppp/udp
+ link 2 set device RIP2:ppp/udp
+ link N set device RIPN:ppp/udp
+
+# The Receiver profile is a bit more straight forward, as it doesn't need
+# to get bogged down with sublinks. Replace REAL-ASSIGNED-IP with the
+# IP number to be assigned to the Gateway machine. Replace REAL-LOCAL-IP
+# with the real IP number of the Receiver machine.
+#
+# No other entries are required on the Receiver machine, and this entry
+# is not required on the Gateway machine. The Receiver machine also
+# requires the contents of ppp.secret.span-isp.
+#
+# Of course it's simple to assign an IP block to the client with a simple
+# ``add'' command, and then have the client use those IP numbers on its
+# LAN rather than using ``nat enable yes''.
+
+vpn-in:
+ set enddisc label
+ set speed sync
+ set mrru 1500
+ set mru 1504 # Room for the MP header
+ enable chap
+ disable lqr
+ set ifaddr REAL-LOCAL-IP REAL-ASSIGNED-IP
diff --git a/share/examples/ppp/ppp.conf.span-isp.working b/share/examples/ppp/ppp.conf.span-isp.working
new file mode 100644
index 0000000..09893b6a
--- /dev/null
+++ b/share/examples/ppp/ppp.conf.span-isp.working
@@ -0,0 +1,107 @@
+# $FreeBSD$
+
+# This is a working example of ppp.conf.span-isp that uses ppp connections
+# to the same machine through 3 null-modem serial cables.
+#
+# cuaD03 <-> cuaD04
+# cuaD01 <-> cuaD06
+# cuaD00 <-> cuaD07
+#
+# with gettys running on cuaD04, cuaD06 and cuaD07. The gettytab entry
+# for these devices has a pp= capability that references a script that
+# says:
+#
+# #! /bin/sh
+# tty=$(tty)
+# exec /usr/sbin/pppin -direct isp-in-${tty#${tty%?}}
+#
+# The whole thing is brought up with these commands:
+#
+# ppp -b isp1
+# ppp -b isp2
+# ppp -b isp3
+#
+# Something rather strange happens here.
+# If you connect to the vpn-in diagnostic socket with ``pppctl
+# /var/run/ppp/vpn-in'' and do a ``show links'', only a single link shows up.
+# If you connect to the vpn diagnostic socket (which is created in
+# ppp.linkup.span-isp.working, you see three links. This is because inetd
+# is told to ``wait'' for ppp to finish and the receiving ppp gets to
+# handle all incoming packets on the first descriptor.
+#
+# This is why enabling LQR won't work - VPN-IN has magic number problems,
+# fails to reply to LQRs and the VPN invocations end up shutting down.
+#
+# If anyone can come up with a better way of doing PPP over UDP I'd be
+# interrested to hear it. Currently, the server doesn't connect() or
+# bind().... but the client connect()s. Is there any other way ?
+#
+# Answers on a postcard please ! (to brian@Awfulhak.org)
+#
+
+default:
+ set speed 115200
+ set device /dev/cuaD00 /dev/cuaD01 /dev/cuaD03
+ set dial
+ set login
+ set redial 3 5
+ set timeout 0
+ enable lqr echo
+ set lqrperiod 15
+
+isp1:
+ set authname "isp1name"
+ set authkey "isp1key"
+
+isp2:
+ set authname "isp2name"
+ set authkey "isp2key"
+
+isp3:
+ set authname "isp3name"
+ set authkey "isp3key"
+
+
+vpn:
+ set enddisc LABEL
+ set speed sync
+ set mrru 1500
+ set mru 1504 # Room for the MP header
+ set authname "vpnname"
+ set authkey "vpnkey"
+ add! default HISADDR
+ disable deflate pred1 lqr
+ deny deflate pred1
+
+vpn1:
+ rename 1
+ set device 127.0.2.7:ppp/udp
+
+vpn2:
+ rename 2
+ set device 127.0.2.6:ppp/udp
+
+vpn3:
+ rename 3
+ set device 127.0.2.4:ppp/udp
+
+
+vpn-in:
+ set enddisc label
+ set speed sync
+ set mrru 1500
+ set mru 1504 # Room for the MP header
+ enable chap
+ disable lqr
+ set ifaddr 127.0.0.2 127.0.0.3
+ set server /var/run/ppp/vpn-in "" 0177
+
+
+isp-in-7:
+ set ifaddr 127.0.2.7 127.0.3.7
+
+isp-in-6:
+ set ifaddr 127.0.2.6 127.0.3.6
+
+isp-in-4:
+ set ifaddr 127.0.2.4 127.0.3.4
diff --git a/share/examples/ppp/ppp.linkdown.sample b/share/examples/ppp/ppp.linkdown.sample
new file mode 100644
index 0000000..c7da79e
--- /dev/null
+++ b/share/examples/ppp/ppp.linkdown.sample
@@ -0,0 +1,34 @@
+#########################################################################
+#
+# Example of ppp.linkdown file
+#
+# This file is checked when ppp closes a connection.
+# ppp searches the labels in this file as follows:
+#
+# 1) The label that matches the IP number assigned to our side.
+#
+# 2) The label specified on the command line to ppp.
+#
+# 3) If no label has been found, use MYADDR if it exists.
+#
+#
+# $FreeBSD$
+#
+#########################################################################
+
+# We don't really need to do much here. If we have notified a DNS
+# of our temporary IP number, we may want to ``un-notify'' them.
+#
+# If you're into sound effects when the link goes down, you can run
+# ``auplay'' (assuming NAS is installed and configured).
+#
+MYADDR:
+ !bg /usr/X11R6/bin/auplay /etc/ppp/linkdown.au
+
+# If you're running ``ppp -auto -nat dynamic-nat-auto'', and are
+# assigned a dynamic IP number by the peer, this may be worth while
+# to keep the interface aliases to a minimum (see ``enable iface-alias''
+# in the man page):
+#
+dynamic-nat-auto:
+ iface clear
diff --git a/share/examples/ppp/ppp.linkdown.span-isp b/share/examples/ppp/ppp.linkdown.span-isp
new file mode 100644
index 0000000..795a559
--- /dev/null
+++ b/share/examples/ppp/ppp.linkdown.span-isp
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+# Refer to ppp.conf.span-isp for a description of what this file is for.
+# This file is only required on the Gateway machine.
+
+# The ISP links start our MP version of ppp as they come up
+isp1:
+ !bg pppctl /var/run/ppp/vpn link 1 close
+
+isp2:
+ !bg pppctl /var/run/ppp/vpn link 2 close
+
+ispN:
+ !bg pppctl /var/run/ppp/vpn link N close
+
+vpn:
+ set server none
diff --git a/share/examples/ppp/ppp.linkdown.span-isp.working b/share/examples/ppp/ppp.linkdown.span-isp.working
new file mode 100644
index 0000000..ba34d05
--- /dev/null
+++ b/share/examples/ppp/ppp.linkdown.span-isp.working
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+# This is a working example of ppp.linkdown.span-isp that uses ppp connections
+# to the same machine through 3 null-modem serial cables.
+
+# The ISP links start our MP version of ppp as they come up
+isp1:
+ !bg pppctl /var/run/ppp/vpn link 1 close
+
+isp2:
+ !bg pppctl /var/run/ppp/vpn link 2 close
+
+isp3:
+ !bg pppctl /var/run/ppp/vpn link 3 close
+
+vpn:
+ set server none
diff --git a/share/examples/ppp/ppp.linkup.sample b/share/examples/ppp/ppp.linkup.sample
new file mode 100644
index 0000000..18073cf
--- /dev/null
+++ b/share/examples/ppp/ppp.linkup.sample
@@ -0,0 +1,49 @@
+#########################################################################
+#
+# Example of ppp.linkup file
+#
+# This file is checked when ppp establishes a connection.
+# ppp searches the labels in this file as follows:
+#
+# 1) The label that matches the IP number assigned to our side.
+#
+# 2) The label specified on the command line to ppp.
+#
+# 3) If no label has been found, use MYADDR if it exists.
+#
+#
+# $FreeBSD$
+#
+#########################################################################
+
+# It is no longer necessary to re-add the default route here as our
+# ppp.conf route is `sticky' (see the man page).
+# If you're into sound effects when the link comes up, you can run
+# ``auplay'' (assuming NAS is installed and configured).
+#
+MYADDR:
+ !bg /usr/X11R6/bin/auplay /etc/ppp/linkup.au
+
+# If we've got 192.244.176.32 as our address, then regard peer as a gateway
+# to 192.244.176.0 network. This may also be done in ppp.conf instead.
+#
+192.244.176.32:
+ add 192.244.176.0 0 HISADDR
+
+#You may want to execute a script after connecting. This script can do
+# nice things such as kick off "sendmail -q", "popclient my.isp" and
+# "slurp -d news". It can be passed MYADDR, HISADDR and INTERFACE
+# as arguments too - useful for informing a DNS of your assigned IP.
+#
+# You may also want some sound effects....
+#
+pmdemand:
+ !bg /etc/ppp/ppp.etherup.pmdemand
+ ! sh -c "cat /etc/ppp/linkup.au >/dev/audio"
+
+# If your minimum call charge is 5 minutes, you may as well stay on
+# the line for that amount of time. If we want a 60 second subsequent
+# timeout, set your timeout to 300 in ppp.conf and then do this:
+#
+min5minutes:
+ !bg sh -c "sleep 240; pppctl -p mypassword 3000 set timeout 60"
diff --git a/share/examples/ppp/ppp.linkup.span-isp b/share/examples/ppp/ppp.linkup.span-isp
new file mode 100644
index 0000000..8768bea
--- /dev/null
+++ b/share/examples/ppp/ppp.linkup.span-isp
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+# Refer to ppp.conf.span-isp for a description of what this file is for.
+# This file is only required on the Gateway machine.
+
+# The ISP links start our MP version of ppp as they come up
+isp1:
+ !bg ppp -background vpn1 vpn
+
+isp2:
+ !bg ppp -background vpn2 vpn
+
+ispN:
+ !bg ppp -background vpnN vpn
+
+vpn:
+ set server /var/run/ppp/vpn "" 0177
diff --git a/share/examples/ppp/ppp.linkup.span-isp.working b/share/examples/ppp/ppp.linkup.span-isp.working
new file mode 100644
index 0000000..274296e
--- /dev/null
+++ b/share/examples/ppp/ppp.linkup.span-isp.working
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+# This is a working example of ppp.linkup.span-isp that uses ppp connections
+# to the same machine through 3 null-modem serial cables.
+
+# The ISP links start our MP version of ppp as they come up
+isp1:
+ !bg ppp -background vpn1 vpn
+
+isp2:
+ !bg ppp -background vpn2 vpn
+
+isp3:
+ !bg ppp -background vpn3 vpn
+
+vpn:
+ set server /var/run/ppp/vpn "" 0177
diff --git a/share/examples/ppp/ppp.secret.sample b/share/examples/ppp/ppp.secret.sample
new file mode 100644
index 0000000..57d2375
--- /dev/null
+++ b/share/examples/ppp/ppp.secret.sample
@@ -0,0 +1,41 @@
+##################################################
+#
+# Example of ppp.secret file
+#
+# This file is used to authenticate incoming connections.
+# You must ``enable'' either PAP or CHAP in your ppp.conf file.
+# The peer may then use any of the Authname/Authkey pairs listed.
+# Additionally, if ``passwdauth'' is enabled and an entry isn't
+# found in this file, the passwd(5) database is used.
+#
+# If the password is specified as "*", look it up in passwd(5).
+# This doesn't work for CHAP connections as ppp must have access
+# to the unencrypted password for CHAP.
+#
+# If an IP address or address range is given as the third field, it
+# will be assigned to the peer. A ``*'' or an empty field may be
+# used as a placeholder if you do not wish to override the IP
+# address, but wish to specify further fields.
+#
+# If a label is given as the forth field, it is used when reading
+# the ppp.linkup and ppp.linkdown files. A ``*'' or an empty field
+# can be used as a placeholder if you do not wish to override the
+# label, but wish to specify further fields.
+#
+# If a phone number or list of phone numbers is given as the fifth
+# field, these numbers will be used to call back the client if
+# ``auth'' or ``cbcp'' callback is enabled (see ``set callback'').
+# A ``*'' specifies that the client must specify the number.
+#
+# $FreeBSD$
+#
+##################################################
+
+# Authname Authkey Peer's IP address Label Callback
+
+oscar OurSecretKey 192.2.18.34
+BigBird X4dWg9327 192.2.18.33/32
+fred * * fred
+subnet * 192.2.18.35-192.2.18.70 subnet
+admin * * * *
+homeworker * * * 1234567
diff --git a/share/examples/ppp/ppp.secret.span-isp b/share/examples/ppp/ppp.secret.span-isp
new file mode 100644
index 0000000..8370f37
--- /dev/null
+++ b/share/examples/ppp/ppp.secret.span-isp
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+# Refer to ppp.conf.span-isp for a description of what this file is for.
+# This file is only required on the Receiver machine.
+
+vpnname vpnkey
diff --git a/share/examples/ppp/ppp.secret.span-isp.working b/share/examples/ppp/ppp.secret.span-isp.working
new file mode 100644
index 0000000..cc8bc3d
--- /dev/null
+++ b/share/examples/ppp/ppp.secret.span-isp.working
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+# This is a working example of ppp.secret.span-isp that uses ppp connections
+# to the same machine through 3 null-modem serial cables.
+
+isp1name isp1key
+isp2name isp2key
+isp3name isp3key
+vpnname vpnkey
diff --git a/share/examples/pppd/auth-down.sample b/share/examples/pppd/auth-down.sample
new file mode 100644
index 0000000..b2da150
--- /dev/null
+++ b/share/examples/pppd/auth-down.sample
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Example for /etc/ppp/auth-down file.
+
+/usr/bin/logger -p daemon.notice -t pppd "User $2 is logged off"
diff --git a/share/examples/pppd/auth-up.sample b/share/examples/pppd/auth-up.sample
new file mode 100644
index 0000000..3d9c07e
--- /dev/null
+++ b/share/examples/pppd/auth-up.sample
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Example for /etc/ppp/auth-up file.
+
+/usr/bin/logger -p daemon.notice -t pppd "User $2 is logged in"
diff --git a/share/examples/pppd/chap-secrets.sample b/share/examples/pppd/chap-secrets.sample
new file mode 100644
index 0000000..40d5dfd
--- /dev/null
+++ b/share/examples/pppd/chap-secrets.sample
@@ -0,0 +1,17 @@
+# $FreeBSD$
+#
+# Example for /etc/ppp/chap-secrets file.
+#
+# This file should be owned by root and not readable or
+# writable by any other user.
+#
+# Dialin format: <remote name> <our name> <password> <allowed IP addresses>
+#
+joe server password 192.168.0.0/24 192.168.2.2
+lisa server l1z4 * !192.168.0.1
+mike server secret *
+luser server nopass -
+#
+# Dialout format: <our name> <server name> <password>
+#
+jane isp password
diff --git a/share/examples/pppd/chat.sh.sample b/share/examples/pppd/chat.sh.sample
new file mode 100644
index 0000000..6418ebf
--- /dev/null
+++ b/share/examples/pppd/chat.sh.sample
@@ -0,0 +1,33 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Example for chat.sh file.
+
+INIT='at&f'
+
+dial(){
+ /usr/bin/chat -v \
+ ABORT "ERROR" \
+ ABORT "NO DIALTONE" \
+ TIMEOUT 5 \
+ "" "AT" \
+ "OK" "${INIT}" \
+ "OK"-"+++"-"" "ATH" \
+ ABORT "BUSY" \
+ ABORT "NO ANSWER" \
+ ABORT "NO CARRIER" \
+ "OK" "ATDP$1" \
+ TIMEOUT 70 \
+ "ogin:" "username" \
+ "word:" "pasword" \
+ TIMEOUT 50 \
+ "PPP" "\c"
+
+ [ $? -eq 0 ] && exit 0
+
+ echo "$1 failed" 1>&2
+ exit 1
+}
+
+dial 1234567
diff --git a/share/examples/pppd/ip-down.sample b/share/examples/pppd/ip-down.sample
new file mode 100644
index 0000000..45b8eb4
--- /dev/null
+++ b/share/examples/pppd/ip-down.sample
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Example for /etc/ppp/ip-down file.
+
+/usr/bin/logger -p daemon.notice -t pppd "$1 is down"
diff --git a/share/examples/pppd/ip-up.sample b/share/examples/pppd/ip-up.sample
new file mode 100644
index 0000000..a0fc1b0
--- /dev/null
+++ b/share/examples/pppd/ip-up.sample
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# $FreeBSD$
+#
+# Example for /etc/ppp/ip-up file.
+
+/usr/bin/logger -p daemon.notice -t pppd "$1 is up"
+/usr/sbin/ntpdate ntpserver
diff --git a/share/examples/pppd/options.sample b/share/examples/pppd/options.sample
new file mode 100644
index 0000000..fd0a927
--- /dev/null
+++ b/share/examples/pppd/options.sample
@@ -0,0 +1,16 @@
+# $FreeBSD$
+#
+# Example for /etc/ppp/options file.
+#
+/dev/cuad4
+115200
+modem
+crtscts
+asyncmap 0
+connect '/etc/ppp/chat.sh'
+defaultroute
+noipdefault
+persist
+holdoff 5
+mtu 250
+mru 250
diff --git a/share/examples/pppd/pap-secrets.sample b/share/examples/pppd/pap-secrets.sample
new file mode 100644
index 0000000..8896bdd
--- /dev/null
+++ b/share/examples/pppd/pap-secrets.sample
@@ -0,0 +1,17 @@
+# $FreeBSD$
+#
+# Example for /etc/ppp/pap-secrets file.
+#
+# This file should be owned by root and not readable or
+# writable by any other user.
+#
+# Dialin format: <remote name> <our name> <password> <allowed IP addresses>
+#
+joe server password 192.168.0.1/24 192.168.2.2
+lisa server l1z4 * !192.168.0.1
+mike server secret *
+luser server nopass -
+#
+# Dialout format: <our name> <server name> <password>
+#
+jane isp password
diff --git a/share/examples/pppd/ppp.deny.sample b/share/examples/pppd/ppp.deny.sample
new file mode 100644
index 0000000..948e115
--- /dev/null
+++ b/share/examples/pppd/ppp.deny.sample
@@ -0,0 +1,27 @@
+# $FreeBSD$
+#
+# list of users disallowed any pppd access via 'system
+# password login'.
+# read by pppd(8).
+root
+toor
+daemon
+operator
+bin
+tty
+kmem
+games
+news
+man
+sshd
+smmsp
+mailnull
+bind
+proxy
+_pflogd
+_dhcp
+ftp
+uucp
+pop
+www
+nobody
diff --git a/share/examples/pppd/ppp.shells.sample b/share/examples/pppd/ppp.shells.sample
new file mode 100644
index 0000000..93b6840
--- /dev/null
+++ b/share/examples/pppd/ppp.shells.sample
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# List of acceptable shells for pppd(8).
+# Pppd will not accept a system password login
+# by a user whose shell is not listed below.
+
+/bin/sh
+/bin/csh
+/bin/tcsh
+/usr/local/bin/ksh
+/usr/local/bin/zsh
+/usr/local/bin/bash
+/usr/local/bin/tcsh
+/usr/local/bin/ppplogin.sh
diff --git a/share/examples/printing/README b/share/examples/printing/README
new file mode 100644
index 0000000..f83eaa9
--- /dev/null
+++ b/share/examples/printing/README
@@ -0,0 +1,7 @@
+# $FreeBSD$
+#
+# The files in this directory are generated automatically
+# from doc/handbook/printing.sgml, do not edit it here!
+#
+# Please change doc/handbook/printing.sgml or maybe
+# src/tools/tools/epfe/epfe.pl instead.
diff --git a/share/examples/printing/diablo-if-net b/share/examples/printing/diablo-if-net
new file mode 100644
index 0000000..b2ba028
--- /dev/null
+++ b/share/examples/printing/diablo-if-net
@@ -0,0 +1,7 @@
+#!/bin/sh
+#
+# diablo-if-net - Text filter for Diablo printer `scrivener' listening
+# on port 5100. Installed in /usr/local/libexec/diablo-if-net
+#
+
+exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
diff --git a/share/examples/printing/hpdf b/share/examples/printing/hpdf
new file mode 100644
index 0000000..d03c3ac
--- /dev/null
+++ b/share/examples/printing/hpdf
@@ -0,0 +1,59 @@
+#!/bin/sh
+#
+# hpdf - Print DVI data on HP/PCL printer
+# Installed in /usr/local/libexec/hpdf
+
+PATH=/usr/local/bin:$PATH; export PATH
+
+#
+# Define a function to clean up our temporary files. These exist
+# in the current directory, which will be the spooling directory
+# for the printer.
+#
+cleanup() {
+ rm -f hpdf$$.dvi
+}
+
+#
+# Define a function to handle fatal errors: print the given message
+# and exit 2. Exiting with 2 tells LPD to do not try to reprint the
+# job.
+#
+fatal() {
+ echo "$@" 1>&2
+ cleanup
+ exit 2
+}
+
+#
+# If user removes the job, LPD will send SIGINT, so trap SIGINT
+# (and a few other signals) to clean up after ourselves.
+#
+trap cleanup 1 2 15
+
+#
+# Make sure we are not colliding with any existing files.
+#
+cleanup
+
+#
+# Link the DVI input file to standard input (the file to print).
+#
+ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
+
+#
+# Make LF = CR+LF
+#
+printf "\033&k2G" || fatal "Cannot initialize printer"
+
+#
+# Convert and print. Return value from dvilj2p does not seem to be
+# reliable, so we ignore it.
+#
+dvilj2p -M1 -q -e- dfhp$$.dvi
+
+#
+# Clean up and exit
+#
+cleanup
+exit 0
diff --git a/share/examples/printing/hpif b/share/examples/printing/hpif
new file mode 100644
index 0000000..69f1f34
--- /dev/null
+++ b/share/examples/printing/hpif
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# hpif - Simple text input filter for lpd for HP-PCL based printers
+# Installed in /usr/local/libexec/hpif
+#
+# Simply copies stdin to stdout. Ignores all filter arguments.
+# Tells printer to treat LF as CR+LF. Writes a form feed character
+# after printing job.
+
+printf "\033&k2G" && cat && printf "\f" && exit 0
+exit 2
diff --git a/share/examples/printing/hpof b/share/examples/printing/hpof
new file mode 100644
index 0000000..691b07f
--- /dev/null
+++ b/share/examples/printing/hpof
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# hpof - Output filter for Hewlett Packard PCL-compatible printers
+# Installed in /usr/local/libexec/hpof
+
+
+printf "\033&k2G" || exit 2
+exec /usr/libexec/lpr/lpf
diff --git a/share/examples/printing/hprf b/share/examples/printing/hprf
new file mode 100644
index 0000000..37ad583
--- /dev/null
+++ b/share/examples/printing/hprf
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# hprf - FORTRAN text filter for LaserJet 3si:
+# Installed in /usr/local/libexec/hprf
+#
+
+printf "\033&k2G" && fpr && printf "\f" && exit 0
+exit 2
diff --git a/share/examples/printing/hpvf b/share/examples/printing/hpvf
new file mode 100644
index 0000000..233de80
--- /dev/null
+++ b/share/examples/printing/hpvf
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# hpvf - Convert GIF files into HP/PCL, then print
+# Installed in /usr/local/libexec/hpvf
+
+PATH=/usr/X11R6/bin:$PATH; export PATH
+
+giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
+ && exit 0 \
+ || exit 2
diff --git a/share/examples/printing/if-simple b/share/examples/printing/if-simple
new file mode 100644
index 0000000..7a5bf97
--- /dev/null
+++ b/share/examples/printing/if-simple
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# if-simple - Simple text input filter for lpd
+# Installed in /usr/local/libexec/if-simple
+#
+# Simply copies stdin to stdout. Ignores all filter arguments.
+
+/bin/cat && exit 0
+exit 2
diff --git a/share/examples/printing/if-simpleX b/share/examples/printing/if-simpleX
new file mode 100644
index 0000000..c14b4a2
--- /dev/null
+++ b/share/examples/printing/if-simpleX
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# if-simple - Simple text input filter for lpd
+# Installed in /usr/local/libexec/if-simple
+#
+# Simply copies stdin to stdout. Ignores all filter arguments.
+# Writes a form feed character (\f) after printing job.
+
+/bin/cat && printf "\f" && exit 0
+exit 2
diff --git a/share/examples/printing/ifhp b/share/examples/printing/ifhp
new file mode 100644
index 0000000..ace0fab
--- /dev/null
+++ b/share/examples/printing/ifhp
@@ -0,0 +1,32 @@
+#!/bin/sh
+#
+# ifhp - Print Ghostscript-simulated PostScript on a DesJet 500
+# Installed in /usr/local/libexec/hpif
+
+#
+# Treat LF as CR+LF:
+#
+printf "\033&k2G" || exit 2
+
+#
+# Read first two characters of the file
+#
+read first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # It is PostScript; use Ghostscript to scan-convert and print it
+ #
+ /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \
+ && exit 0
+
+else
+ #
+ # Plain text or HP/PCL, so just print it directly; print a form
+ # at the end to eject the last page.
+ #
+ echo "$first_line" && cat && printf "\f" && exit 0
+fi
+
+exit 2
diff --git a/share/examples/printing/make-ps-header b/share/examples/printing/make-ps-header
new file mode 100644
index 0000000..19e38ab
--- /dev/null
+++ b/share/examples/printing/make-ps-header
@@ -0,0 +1,79 @@
+#!/bin/sh
+#
+# make-ps-header - make a PostScript header page on stdout
+# Installed in /usr/local/libexec/make-ps-header
+#
+
+#
+# These are PostScript units (72 to the inch). Modify for A4 or
+# whatever size paper you are using:
+#
+page_width=612
+page_height=792
+border=72
+
+#
+# Check arguments
+#
+if [ $# -ne 3 ]; then
+ echo "Usage: `basename $0` <user> <host> <job>" 1>&2
+ exit 1
+fi
+
+#
+# Save these, mostly for readability in the PostScript, below.
+#
+user=$1
+host=$2
+job=$3
+date=`date`
+
+#
+# Send the PostScript code to stdout.
+#
+exec cat <<EOF
+%!PS
+
+%
+% Make sure we do not interfere with user's job that will follow
+%
+save
+
+%
+% Make a thick, unpleasant border around the edge of the paper.
+%
+$border $border moveto
+$page_width $border 2 mul sub 0 rlineto
+0 $page_height $border 2 mul sub rlineto
+currentscreen 3 -1 roll pop 100 3 1 roll setscreen
+$border 2 mul $page_width sub 0 rlineto closepath
+0.8 setgray 10 setlinewidth stroke 0 setgray
+
+%
+% Display user's login name, nice and large and prominent
+%
+/Helvetica-Bold findfont 64 scalefont setfont
+$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
+($user) show
+
+%
+% Now show the boring particulars
+%
+/Helvetica findfont 14 scalefont setfont
+/y 200 def
+[ (Job:) (Host:) (Date:) ] {
+ 200 y moveto show /y y 18 sub def
+} forall
+
+/Helvetica-Bold findfont 14 scalefont setfont
+/y 200 def
+[ ($job) ($host) ($date) ] {
+ 270 y moveto show /y y 18 sub def
+} forall
+
+%
+% That is it
+%
+restore
+showpage
+EOF
diff --git a/share/examples/printing/netprint b/share/examples/printing/netprint
new file mode 100644
index 0000000..9b5010c
--- /dev/null
+++ b/share/examples/printing/netprint
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+#
+# netprint - Text filter for printer attached to network
+# Installed in /usr/local/libexec/netprint
+#
+
+$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
+
+$printer_host = $ARGV[0];
+$printer_port = $ARGV[1];
+
+require 'sys/socket.ph';
+
+($ignore, $ignore, $protocol) = getprotobyname('tcp');
+($ignore, $ignore, $ignore, $ignore, $address)
+ = gethostbyname($printer_host);
+
+$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
+
+socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
+ || die "Can't create TCP/IP stream socket: $!";
+connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
+while (<STDIN>) { print PRINTER; }
+exit 0;
diff --git a/share/examples/printing/psdf b/share/examples/printing/psdf
new file mode 100644
index 0000000..e0d429b
--- /dev/null
+++ b/share/examples/printing/psdf
@@ -0,0 +1,8 @@
+#!bin/sh
+#
+# psdf - DVI to PostScript printer filter
+# Installed in /usr/local/libexec/psdf
+#
+# Invoked by lpd when user runs lpr -d
+#
+exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
diff --git a/share/examples/printing/psdfX b/share/examples/printing/psdfX
new file mode 100644
index 0000000..43bdc41
--- /dev/null
+++ b/share/examples/printing/psdfX
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# psdf - DVI to PostScript printer filter
+# Installed in /usr/local/libexec/psdf
+#
+# Invoked by lpd when user runs lpr -d
+#
+
+orig_args="$@"
+
+fail() {
+ echo "$@" 1>&2
+ exit 2
+}
+
+while getopts "x:y:n:h:" option; do
+ case $option in
+ x|y) ;; # Ignore
+ n) login=$OPTARG ;;
+ h) host=$OPTARG ;;
+ *) echo "LPD started `basename $0` wrong." 1>&2
+ exit 2
+ ;;
+ esac
+done
+
+[ "$login" ] || fail "No login name"
+[ "$host" ] || fail "No host name"
+
+( /u/kelly/freebsd/printing/filters/make-ps-header $login $host "DVI File"
+ /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args
diff --git a/share/examples/printing/psif b/share/examples/printing/psif
new file mode 100644
index 0000000..1a816f6
--- /dev/null
+++ b/share/examples/printing/psif
@@ -0,0 +1,23 @@
+#!/bin/sh
+#
+# psif - Print PostScript or plain text on a PostScript printer
+# Script version; NOT the version that comes with lprps
+# Installed in /usr/local/libexec/psif
+#
+
+read first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # PostScript job, print it.
+ #
+ echo "$first_line" && cat && printf "\004" && exit 0
+ exit 2
+else
+ #
+ # Plain text, convert it, then print it.
+ #
+ ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
+ exit 2
+fi
diff --git a/share/examples/printing/pstf b/share/examples/printing/pstf
new file mode 100644
index 0000000..308adc1
--- /dev/null
+++ b/share/examples/printing/pstf
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# pstf - Convert groff's troff data into PS, then print.
+# Installed in /usr/local/libexec/pstf
+#
+exec grops | /usr/local/libexec/lprps "$@"
diff --git a/share/examples/printing/pstfX b/share/examples/printing/pstfX
new file mode 100644
index 0000000..1af7134
--- /dev/null
+++ b/share/examples/printing/pstfX
@@ -0,0 +1,6 @@
+#!/bin/sh
+#
+# pstf - Convert groff's troff data into PS, then print.
+# Installed in /usr/local/libexec/pstf
+#
+exec grops
diff --git a/share/examples/scsi_target/Makefile b/share/examples/scsi_target/Makefile
new file mode 100644
index 0000000..bab70b2
--- /dev/null
+++ b/share/examples/scsi_target/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+PROG= scsi_target
+SRCS= scsi_target.h scsi_target.c scsi_cmds.c
+DPADD= ${LIBCAM} ${LIBSBUF}
+LDADD= -lcam -lsbuf
+
+MAN= scsi_target.8
+
+.include <bsd.prog.mk>
diff --git a/share/examples/scsi_target/scsi_cmds.c b/share/examples/scsi_target/scsi_cmds.c
new file mode 100644
index 0000000..8d5f14b
--- /dev/null
+++ b/share/examples/scsi_target/scsi_cmds.c
@@ -0,0 +1,813 @@
+/*
+ * SCSI Disk Emulator
+ *
+ * Copyright (c) 2002 Nate Lawson.
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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 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 <stddef.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <err.h>
+#include <aio.h>
+#include <unistd.h>
+#include <assert.h>
+#include <sys/param.h>
+#include <sys/types.h>
+
+#include <cam/cam.h>
+#include <cam/cam_ccb.h>
+#include <cam/scsi/scsi_all.h>
+#include <cam/scsi/scsi_targetio.h>
+#include "scsi_target.h"
+
+typedef int targ_start_func(struct ccb_accept_tio *, struct ccb_scsiio *);
+typedef void targ_done_func(struct ccb_accept_tio *, struct ccb_scsiio *,
+ io_ops);
+#ifndef REPORT_LUNS
+#define REPORT_LUNS 0xa0
+#endif
+
+struct targ_cdb_handlers {
+ u_int8_t cmd;
+ targ_start_func *start;
+ targ_done_func *done;
+#define ILLEGAL_CDB 0xFF
+};
+
+static targ_start_func tcmd_inquiry;
+static targ_start_func tcmd_req_sense;
+static targ_start_func tcmd_rd_cap;
+#ifdef READ_16
+static targ_start_func tcmd_rd_cap16;
+#endif
+static targ_start_func tcmd_rdwr;
+static targ_start_func tcmd_rdwr_decode;
+static targ_done_func tcmd_rdwr_done;
+static targ_start_func tcmd_null_ok;
+static targ_start_func tcmd_illegal_req;
+static int start_io(struct ccb_accept_tio *atio,
+ struct ccb_scsiio *ctio, int dir);
+static int init_inquiry(u_int16_t req_flags, u_int16_t sim_flags);
+static struct initiator_state *
+ tcmd_get_istate(u_int init_id);
+static void cdb_debug(u_int8_t *cdb, const char *msg, ...);
+
+static struct targ_cdb_handlers cdb_handlers[] = {
+ { READ_10, tcmd_rdwr, tcmd_rdwr_done },
+ { WRITE_10, tcmd_rdwr, tcmd_rdwr_done },
+ { READ_6, tcmd_rdwr, tcmd_rdwr_done },
+ { WRITE_6, tcmd_rdwr, tcmd_rdwr_done },
+ { INQUIRY, tcmd_inquiry, NULL },
+ { REQUEST_SENSE, tcmd_req_sense, NULL },
+ { READ_CAPACITY, tcmd_rd_cap, NULL },
+ { TEST_UNIT_READY, tcmd_null_ok, NULL },
+ { START_STOP_UNIT, tcmd_null_ok, NULL },
+ { SYNCHRONIZE_CACHE, tcmd_null_ok, NULL },
+ { MODE_SENSE_6, tcmd_illegal_req, NULL },
+ { MODE_SELECT_6, tcmd_illegal_req, NULL },
+ { REPORT_LUNS, tcmd_illegal_req, NULL },
+#ifdef READ_16
+ { READ_16, tcmd_rdwr, tcmd_rdwr_done },
+ { WRITE_16, tcmd_rdwr, tcmd_rdwr_done },
+ { SERVICE_ACTION_IN, tcmd_rd_cap16, NULL },
+#endif
+ { ILLEGAL_CDB, NULL, NULL }
+};
+
+static struct scsi_inquiry_data inq_data;
+static struct initiator_state istates[MAX_INITIATORS];
+extern int debug;
+extern uint64_t volume_size;
+extern size_t sector_size;
+extern size_t buf_size;
+
+cam_status
+tcmd_init(u_int16_t req_inq_flags, u_int16_t sim_inq_flags)
+{
+ struct initiator_state *istate;
+ int i, ret;
+
+ /* Initialize our inquiry data */
+ ret = init_inquiry(req_inq_flags, sim_inq_flags);
+ if (ret != 0)
+ return (ret);
+
+ /* We start out life with a UA to indicate power-on/reset. */
+ for (i = 0; i < MAX_INITIATORS; i++) {
+ istate = tcmd_get_istate(i);
+ bzero(istate, sizeof(*istate));
+ istate->pending_ua = UA_POWER_ON;
+ }
+
+ return (0);
+}
+
+/* Caller allocates CTIO, sets its init_id
+return 0 if done, 1 if more processing needed
+on 0, caller sets SEND_STATUS */
+int
+tcmd_handle(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio, io_ops event)
+{
+ static struct targ_cdb_handlers *last_cmd;
+ struct initiator_state *istate;
+ struct atio_descr *a_descr;
+ int ret;
+
+ if (debug) {
+ warnx("tcmd_handle atio %p ctio %p atioflags %#x", atio, ctio,
+ atio->ccb_h.flags);
+ }
+ ret = 0;
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+
+ /* Do a full lookup if one-behind cache failed */
+ if (last_cmd == NULL || last_cmd->cmd != a_descr->cdb[0]) {
+ struct targ_cdb_handlers *h;
+
+ for (h = cdb_handlers; h->cmd != ILLEGAL_CDB; h++) {
+ if (a_descr->cdb[0] == h->cmd)
+ break;
+ }
+ last_cmd = h;
+ }
+
+ /* call completion and exit */
+ if (event != ATIO_WORK) {
+ if (last_cmd->done != NULL)
+ last_cmd->done(atio, ctio, event);
+ else
+ free_ccb((union ccb *)ctio);
+ return (1);
+ }
+
+ if (last_cmd->cmd == ILLEGAL_CDB) {
+ if (event != ATIO_WORK) {
+ warnx("no done func for %#x???", a_descr->cdb[0]);
+ abort();
+ }
+ /* Not found, return illegal request */
+ warnx("cdb %#x not handled", a_descr->cdb[0]);
+ tcmd_illegal_req(atio, ctio);
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ return (0);
+ }
+
+ istate = tcmd_get_istate(ctio->init_id);
+ if (istate == NULL) {
+ tcmd_illegal_req(atio, ctio);
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ return (0);
+ }
+
+ if (istate->pending_ca == 0 && istate->pending_ua != 0 &&
+ a_descr->cdb[0] != INQUIRY) {
+ tcmd_sense(ctio->init_id, ctio, SSD_KEY_UNIT_ATTENTION,
+ 0x29, istate->pending_ua == UA_POWER_ON ? 1 : 2);
+ istate->pending_ca = CA_UNIT_ATTN;
+ if (debug) {
+ cdb_debug(a_descr->cdb, "UA active for %u: ",
+ atio->init_id);
+ }
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ return (0);
+ }
+
+ /* Store current CA and UA for later */
+ istate->orig_ua = istate->pending_ua;
+ istate->orig_ca = istate->pending_ca;
+
+ /*
+ * As per SAM2, any command that occurs
+ * after a CA is reported, clears the CA. We must
+ * also clear the UA condition, if any, that caused
+ * the CA to occur assuming the UA is not for a
+ * persistent condition.
+ */
+ istate->pending_ca = CA_NONE;
+ if (istate->orig_ca == CA_UNIT_ATTN)
+ istate->pending_ua = UA_NONE;
+
+ /* If we have a valid handler, call start or completion function */
+ if (last_cmd->cmd != ILLEGAL_CDB) {
+ ret = last_cmd->start(atio, ctio);
+ /* XXX hack */
+ if (last_cmd->start != tcmd_rdwr) {
+ a_descr->init_req += ctio->dxfer_len;
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ }
+ }
+
+ return (ret);
+}
+
+static struct initiator_state *
+tcmd_get_istate(u_int init_id)
+{
+ if (init_id >= MAX_INITIATORS) {
+ warnx("illegal init_id %d, max %d", init_id, MAX_INITIATORS - 1);
+ return (NULL);
+ } else {
+ return (&istates[init_id]);
+ }
+}
+
+void
+tcmd_sense(u_int init_id, struct ccb_scsiio *ctio, u_int8_t flags,
+ u_int8_t asc, u_int8_t ascq)
+{
+ struct initiator_state *istate;
+ struct scsi_sense_data *sense;
+
+ /* Set our initiator's istate */
+ istate = tcmd_get_istate(init_id);
+ if (istate == NULL)
+ return;
+ istate->pending_ca |= CA_CMD_SENSE; /* XXX set instead of or? */
+ sense = &istate->sense_data;
+ bzero(sense, sizeof(*sense));
+ sense->error_code = SSD_CURRENT_ERROR;
+ sense->flags = flags;
+ sense->add_sense_code = asc;
+ sense->add_sense_code_qual = ascq;
+ sense->extra_len =
+ offsetof(struct scsi_sense_data, sense_key_spec[2]) -
+ offsetof(struct scsi_sense_data, extra_len);
+
+ /* Fill out the supplied CTIO */
+ if (ctio != NULL) {
+ bcopy(sense, &ctio->sense_data, sizeof(*sense));
+ ctio->sense_len = sizeof(*sense); /* XXX */
+ ctio->ccb_h.flags &= ~CAM_DIR_MASK;
+ ctio->ccb_h.flags |= CAM_DIR_NONE | CAM_SEND_SENSE |
+ CAM_SEND_STATUS;
+ ctio->dxfer_len = 0;
+ ctio->scsi_status = SCSI_STATUS_CHECK_COND;
+ }
+}
+
+void
+tcmd_ua(u_int init_id, ua_types new_ua)
+{
+ struct initiator_state *istate;
+ u_int start, end;
+
+ if (init_id == CAM_TARGET_WILDCARD) {
+ start = 0;
+ end = MAX_INITIATORS - 1;
+ } else {
+ start = end = init_id;
+ }
+
+ for (; start <= end; start++) {
+ istate = tcmd_get_istate(start);
+ if (istate == NULL)
+ break;
+ istate->pending_ua = new_ua;
+ }
+}
+
+static int
+tcmd_inquiry(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ struct scsi_inquiry *inq;
+ struct atio_descr *a_descr;
+ struct initiator_state *istate;
+ struct scsi_sense_data *sense;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ inq = (struct scsi_inquiry *)a_descr->cdb;
+
+ if (debug)
+ cdb_debug(a_descr->cdb, "INQUIRY from %u: ", atio->init_id);
+ /*
+ * Validate the command. We don't support any VPD pages, so
+ * complain if EVPD or CMDDT is set.
+ */
+ istate = tcmd_get_istate(ctio->init_id);
+ sense = &istate->sense_data;
+ if ((inq->byte2 & SI_EVPD) != 0) {
+ tcmd_illegal_req(atio, ctio);
+ sense->sense_key_spec[0] = SSD_SCS_VALID | SSD_FIELDPTR_CMD |
+ SSD_BITPTR_VALID | /*bit value*/1;
+ sense->sense_key_spec[1] = 0;
+ sense->sense_key_spec[2] =
+ offsetof(struct scsi_inquiry, byte2);
+ } else if (inq->page_code != 0) {
+ tcmd_illegal_req(atio, ctio);
+ sense->sense_key_spec[0] = SSD_SCS_VALID | SSD_FIELDPTR_CMD;
+ sense->sense_key_spec[1] = 0;
+ sense->sense_key_spec[2] =
+ offsetof(struct scsi_inquiry, page_code);
+ } else {
+ bcopy(&inq_data, ctio->data_ptr, sizeof(inq_data));
+ ctio->dxfer_len = inq_data.additional_length + 4;
+ ctio->dxfer_len = min(ctio->dxfer_len,
+ SCSI_CDB6_LEN(inq->length));
+ ctio->ccb_h.flags |= CAM_DIR_IN | CAM_SEND_STATUS;
+ ctio->scsi_status = SCSI_STATUS_OK;
+ }
+ return (0);
+}
+
+/* Initialize the inquiry response structure with the requested flags */
+static int
+init_inquiry(u_int16_t req_flags, u_int16_t sim_flags)
+{
+ struct scsi_inquiry_data *inq;
+
+ inq = &inq_data;
+ bzero(inq, sizeof(*inq));
+ inq->device = T_DIRECT | (SID_QUAL_LU_CONNECTED << 5);
+#ifdef SCSI_REV_SPC
+ inq->version = SCSI_REV_SPC; /* was 2 */
+#else
+ inq->version = SCSI_REV_3; /* was 2 */
+#endif
+
+ /*
+ * XXX cpi.hba_inquiry doesn't support Addr16 so we give the
+ * user what they want if they ask for it.
+ */
+ if ((req_flags & SID_Addr16) != 0) {
+ sim_flags |= SID_Addr16;
+ warnx("Not sure SIM supports Addr16 but enabling it anyway");
+ }
+
+ /* Advertise only what the SIM can actually support */
+ req_flags &= sim_flags;
+ scsi_ulto2b(req_flags, &inq->spc2_flags);
+
+ inq->response_format = 2; /* SCSI2 Inquiry Format */
+ inq->additional_length = SHORT_INQUIRY_LENGTH -
+ offsetof(struct scsi_inquiry_data, additional_length);
+ bcopy("FreeBSD ", inq->vendor, SID_VENDOR_SIZE);
+ bcopy("Emulated Disk ", inq->product, SID_PRODUCT_SIZE);
+ bcopy("0.1 ", inq->revision, SID_REVISION_SIZE);
+ return (0);
+}
+
+static int
+tcmd_req_sense(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ struct scsi_request_sense *rsense;
+ struct scsi_sense_data *sense;
+ struct initiator_state *istate;
+ size_t dlen;
+ struct atio_descr *a_descr;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ rsense = (struct scsi_request_sense *)a_descr->cdb;
+
+ istate = tcmd_get_istate(ctio->init_id);
+ sense = &istate->sense_data;
+
+ if (debug) {
+ cdb_debug(a_descr->cdb, "REQ SENSE from %u: ", atio->init_id);
+ warnx("Sending sense: %#x %#x %#x", sense->flags,
+ sense->add_sense_code, sense->add_sense_code_qual);
+ }
+
+ if (istate->orig_ca == 0) {
+ tcmd_sense(ctio->init_id, NULL, SSD_KEY_NO_SENSE, 0, 0);
+ warnx("REQUEST SENSE from %u but no pending CA!",
+ ctio->init_id);
+ }
+
+ bcopy(sense, ctio->data_ptr, sizeof(struct scsi_sense_data));
+ dlen = offsetof(struct scsi_sense_data, extra_len) +
+ sense->extra_len + 1;
+ ctio->dxfer_len = min(dlen, SCSI_CDB6_LEN(rsense->length));
+ ctio->ccb_h.flags |= CAM_DIR_IN | CAM_SEND_STATUS;
+ ctio->scsi_status = SCSI_STATUS_OK;
+ return (0);
+}
+
+static int
+tcmd_rd_cap(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ struct scsi_read_capacity_data *srp;
+ struct atio_descr *a_descr;
+ uint32_t vsize;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ srp = (struct scsi_read_capacity_data *)ctio->data_ptr;
+
+ if (volume_size > 0xffffffff)
+ vsize = 0xffffffff;
+ else
+ vsize = (uint32_t)(volume_size - 1);
+
+ if (debug) {
+ cdb_debug(a_descr->cdb, "READ CAP from %u (%u, %u): ",
+ atio->init_id, vsize, sector_size);
+ }
+
+ bzero(srp, sizeof(*srp));
+ scsi_ulto4b(vsize, srp->addr);
+ scsi_ulto4b(sector_size, srp->length);
+
+ ctio->dxfer_len = sizeof(*srp);
+ ctio->ccb_h.flags |= CAM_DIR_IN | CAM_SEND_STATUS;
+ ctio->scsi_status = SCSI_STATUS_OK;
+ return (0);
+}
+
+#ifdef READ_16
+static int
+tcmd_rd_cap16(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ struct scsi_read_capacity_16 *scsi_cmd;
+ struct scsi_read_capacity_data_long *srp;
+ struct atio_descr *a_descr;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ scsi_cmd = (struct scsi_read_capacity_16 *)a_descr->cdb;
+ srp = (struct scsi_read_capacity_data_long *)ctio->data_ptr;
+
+ if (scsi_cmd->service_action != SRC16_SERVICE_ACTION) {
+ tcmd_illegal_req(atio, ctio);
+ return (0);
+ }
+
+ if (debug) {
+ cdb_debug(a_descr->cdb, "READ CAP16 from %u (%u, %u): ",
+ atio->init_id, volume_size - 1, sector_size);
+ }
+
+ bzero(srp, sizeof(*srp));
+ scsi_u64to8b(volume_size - 1, srp->addr);
+ scsi_ulto4b(sector_size, srp->length);
+
+ ctio->dxfer_len = sizeof(*srp);
+ ctio->ccb_h.flags |= CAM_DIR_IN | CAM_SEND_STATUS;
+ ctio->scsi_status = SCSI_STATUS_OK;
+ return (0);
+}
+#endif
+
+static int
+tcmd_rdwr(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ struct atio_descr *a_descr;
+ struct ctio_descr *c_descr;
+ int ret;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+
+ /* Command needs to be decoded */
+ if ((a_descr->flags & CAM_DIR_MASK) == CAM_DIR_RESV) {
+ if (debug)
+ warnx("Calling rdwr_decode");
+ ret = tcmd_rdwr_decode(atio, ctio);
+ if (ret == 0) {
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ return (0);
+ }
+ }
+ ctio->ccb_h.flags |= a_descr->flags;
+
+ /* Call appropriate work function */
+ if ((a_descr->flags & CAM_DIR_IN) != 0) {
+ ret = start_io(atio, ctio, CAM_DIR_IN);
+ if (debug)
+ warnx("Starting %p DIR_IN @" OFF_FMT ":%u",
+ a_descr, c_descr->offset, a_descr->targ_req);
+ } else {
+ ret = start_io(atio, ctio, CAM_DIR_OUT);
+ if (debug)
+ warnx("Starting %p DIR_OUT @" OFF_FMT ":%u",
+ a_descr, c_descr->offset, a_descr->init_req);
+ }
+
+ return (ret);
+}
+
+static int
+tcmd_rdwr_decode(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ uint64_t blkno;
+ uint32_t count;
+ struct atio_descr *a_descr;
+ u_int8_t *cdb;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ cdb = a_descr->cdb;
+ if (debug)
+ cdb_debug(cdb, "R/W from %u: ", atio->init_id);
+
+ switch (cdb[0]) {
+ case READ_6:
+ case WRITE_6:
+ {
+ struct scsi_rw_6 *rw_6 = (struct scsi_rw_6 *)cdb;
+ blkno = scsi_3btoul(rw_6->addr);
+ count = rw_6->length;
+ break;
+ }
+ case READ_10:
+ case WRITE_10:
+ {
+ struct scsi_rw_10 *rw_10 = (struct scsi_rw_10 *)cdb;
+ blkno = scsi_4btoul(rw_10->addr);
+ count = scsi_2btoul(rw_10->length);
+ break;
+ }
+#ifdef READ_16
+ case READ_16:
+ case WRITE_16:
+ {
+ struct scsi_rw_16 *rw_16 = (struct scsi_rw_16 *)cdb;
+ blkno = scsi_8btou64(rw_16->addr);
+ count = scsi_4btoul(rw_16->length);
+ break;
+ }
+#endif
+ default:
+ tcmd_illegal_req(atio, ctio);
+ return (0);
+ }
+ if (blkno + count > volume_size) {
+ warnx("Attempt to access past end of volume");
+ tcmd_sense(ctio->init_id, ctio,
+ SSD_KEY_ILLEGAL_REQUEST, 0x21, 0);
+ return (0);
+ }
+
+ /* Get an (overall) data length and set direction */
+ a_descr->base_off = ((off_t)blkno) * sector_size;
+ a_descr->total_len = count * sector_size;
+ if (a_descr->total_len == 0) {
+ if (debug)
+ warnx("r/w 0 blocks @ blkno " OFF_FMT, blkno);
+ tcmd_null_ok(atio, ctio);
+ return (0);
+ } else if (cdb[0] == WRITE_6 || cdb[0] == WRITE_10) {
+ a_descr->flags |= CAM_DIR_OUT;
+ if (debug)
+ warnx("write %u blocks @ blkno " OFF_FMT, count, blkno);
+ } else {
+ a_descr->flags |= CAM_DIR_IN;
+ if (debug)
+ warnx("read %u blocks @ blkno " OFF_FMT, count, blkno);
+ }
+ return (1);
+}
+
+static int
+start_io(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio, int dir)
+{
+ struct atio_descr *a_descr;
+ struct ctio_descr *c_descr;
+ int ret;
+
+ /* Set up common structures */
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+
+ if (dir == CAM_DIR_IN) {
+ c_descr->offset = a_descr->base_off + a_descr->targ_req;
+ ctio->dxfer_len = a_descr->total_len - a_descr->targ_req;
+ } else {
+ c_descr->offset = a_descr->base_off + a_descr->init_req;
+ ctio->dxfer_len = a_descr->total_len - a_descr->init_req;
+ }
+ ctio->dxfer_len = min(ctio->dxfer_len, buf_size);
+ assert(ctio->dxfer_len >= 0);
+
+ c_descr->aiocb.aio_offset = c_descr->offset;
+ c_descr->aiocb.aio_nbytes = ctio->dxfer_len;
+
+ /* If DIR_IN, start read from target, otherwise begin CTIO xfer. */
+ ret = 1;
+ if (dir == CAM_DIR_IN) {
+ if (notaio) {
+ if (debug)
+ warnx("read sync %lud @ block " OFF_FMT,
+ (unsigned long)
+ (ctio->dxfer_len / sector_size),
+ c_descr->offset / sector_size);
+ if (lseek(c_descr->aiocb.aio_fildes,
+ c_descr->aiocb.aio_offset, SEEK_SET) < 0) {
+ perror("lseek");
+ err(1, "lseek");
+ }
+ if (read(c_descr->aiocb.aio_fildes,
+ (void *)c_descr->aiocb.aio_buf,
+ ctio->dxfer_len) != ctio->dxfer_len) {
+ err(1, "read");
+ }
+ } else {
+ if (debug)
+ warnx("read async %lud @ block " OFF_FMT,
+ (unsigned long)
+ (ctio->dxfer_len / sector_size),
+ c_descr->offset / sector_size);
+ if (aio_read(&c_descr->aiocb) < 0) {
+ err(1, "aio_read"); /* XXX */
+ }
+ }
+ a_descr->targ_req += ctio->dxfer_len;
+ /* if we're done, we can mark the CCB as to send status */
+ if (a_descr->targ_req == a_descr->total_len) {
+ ctio->ccb_h.flags |= CAM_SEND_STATUS;
+ ctio->scsi_status = SCSI_STATUS_OK;
+ ret = 0;
+ }
+ if (notaio)
+ tcmd_rdwr_done(atio, ctio, AIO_DONE);
+ } else {
+ if (a_descr->targ_ack == a_descr->total_len)
+ tcmd_null_ok(atio, ctio);
+ a_descr->init_req += ctio->dxfer_len;
+ if (a_descr->init_req == a_descr->total_len &&
+ ctio->dxfer_len > 0) {
+ /*
+ * If data phase done, remove atio from workq.
+ * The completion handler will call work_atio to
+ * send the final status.
+ */
+ ret = 0;
+ }
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ }
+
+ return (ret);
+}
+
+static void
+tcmd_rdwr_done(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio,
+ io_ops event)
+{
+ struct atio_descr *a_descr;
+ struct ctio_descr *c_descr;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+
+ switch (event) {
+ case AIO_DONE:
+ if (!notaio && aio_return(&c_descr->aiocb) < 0) {
+ warn("aio_return error");
+ /* XXX */
+ tcmd_sense(ctio->init_id, ctio,
+ SSD_KEY_MEDIUM_ERROR, 0, 0);
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ break;
+ }
+ a_descr->targ_ack += ctio->dxfer_len;
+ if ((a_descr->flags & CAM_DIR_IN) != 0) {
+ if (debug) {
+ if (notaio)
+ warnx("sending CTIO for AIO read");
+ else
+ warnx("sending CTIO for sync read");
+ }
+ a_descr->init_req += ctio->dxfer_len;
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ } else {
+ /* Use work function to send final status */
+ if (a_descr->init_req == a_descr->total_len)
+ work_atio(atio);
+ if (debug)
+ warnx("AIO done freeing CTIO");
+ free_ccb((union ccb *)ctio);
+ }
+ break;
+ case CTIO_DONE:
+ switch (ctio->ccb_h.status & CAM_STATUS_MASK) {
+ case CAM_REQ_CMP:
+ break;
+ case CAM_REQUEUE_REQ:
+ warnx("requeueing request");
+ if ((a_descr->flags & CAM_DIR_MASK) == CAM_DIR_OUT) {
+ if (aio_write(&c_descr->aiocb) < 0) {
+ err(1, "aio_write"); /* XXX */
+ }
+ } else {
+ if (aio_read(&c_descr->aiocb) < 0) {
+ err(1, "aio_read"); /* XXX */
+ }
+ }
+ return;
+ default:
+ errx(1, "CTIO failed, status %#x", ctio->ccb_h.status);
+ }
+ a_descr->init_ack += ctio->dxfer_len;
+ if ((a_descr->flags & CAM_DIR_MASK) == CAM_DIR_OUT &&
+ ctio->dxfer_len > 0) {
+ a_descr->targ_req += ctio->dxfer_len;
+ if (notaio) {
+ if (debug)
+ warnx("write sync %lud @ block "
+ OFF_FMT, (unsigned long)
+ (ctio->dxfer_len / sector_size),
+ c_descr->offset / sector_size);
+ if (lseek(c_descr->aiocb.aio_fildes,
+ c_descr->aiocb.aio_offset, SEEK_SET) < 0) {
+ perror("lseek");
+ err(1, "lseek");
+ }
+ if (write(c_descr->aiocb.aio_fildes,
+ (void *) c_descr->aiocb.aio_buf,
+ ctio->dxfer_len) != ctio->dxfer_len) {
+ err(1, "write");
+ }
+ tcmd_rdwr_done(atio, ctio, AIO_DONE);
+ } else {
+ if (debug)
+ warnx("write async %lud @ block "
+ OFF_FMT, (unsigned long)
+ (ctio->dxfer_len / sector_size),
+ c_descr->offset / sector_size);
+ if (aio_write(&c_descr->aiocb) < 0) {
+ err(1, "aio_write"); /* XXX */
+ }
+ }
+ } else {
+ if (debug)
+ warnx("CTIO done freeing CTIO");
+ free_ccb((union ccb *)ctio);
+ }
+ break;
+ default:
+ warnx("Unknown completion code %d", event);
+ abort();
+ /* NOTREACHED */
+ }
+}
+
+/* Simple ok message used by TUR, SYNC_CACHE, etc. */
+static int
+tcmd_null_ok(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ if (debug) {
+ struct atio_descr *a_descr;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ cdb_debug(a_descr->cdb, "Sending null ok to %u : ", atio->init_id);
+ }
+
+ ctio->dxfer_len = 0;
+ ctio->ccb_h.flags &= ~CAM_DIR_MASK;
+ ctio->ccb_h.flags |= CAM_DIR_NONE | CAM_SEND_STATUS;
+ ctio->scsi_status = SCSI_STATUS_OK;
+ return (0);
+}
+
+/* Simple illegal request message used by MODE SENSE, etc. */
+static int
+tcmd_illegal_req(struct ccb_accept_tio *atio, struct ccb_scsiio *ctio)
+{
+ if (debug) {
+ struct atio_descr *a_descr;
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ cdb_debug(a_descr->cdb, "Sending ill req to %u: ", atio->init_id);
+ }
+
+ tcmd_sense(atio->init_id, ctio, SSD_KEY_ILLEGAL_REQUEST,
+ /*asc*/0x24, /*ascq*/0);
+ return (0);
+}
+
+static void
+cdb_debug(u_int8_t *cdb, const char *msg, ...)
+{
+ char msg_buf[512];
+ int len;
+ va_list ap;
+
+ va_start(ap, msg);
+ vsnprintf(msg_buf, sizeof(msg_buf), msg, ap);
+ va_end(ap);
+ len = strlen(msg_buf);
+ scsi_cdb_string(cdb, msg_buf + len, sizeof(msg_buf) - len);
+ warnx("%s", msg_buf);
+}
diff --git a/share/examples/scsi_target/scsi_target.8 b/share/examples/scsi_target/scsi_target.8
new file mode 100644
index 0000000..677e2b4
--- /dev/null
+++ b/share/examples/scsi_target/scsi_target.8
@@ -0,0 +1,158 @@
+.\" Copyright (c) 2002
+.\" Nate Lawson. 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. 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 Nate Lawson 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$
+.\"
+.Dd November 15, 2002
+.Dt SCSI_TARGET 8
+.Os
+.Sh NAME
+.Nm scsi_target
+.Nd usermode SCSI disk emulator
+.Sh SYNOPSIS
+.Nm
+.Op Fl AdST
+.Op Fl b Ar size
+.Op Fl c Ar size
+.Op Fl s Ar size
+.Op Fl W Ar num
+.Ar bus : Ns Ar target : Ns Ar lun
+.Ar filename
+.Sh DESCRIPTION
+The
+.Nm
+utility emulates a SCSI target device using the
+.Xr targ 4
+device driver.
+It supports the basic commands of a direct access device, like
+.Xr da 4 .
+In typical operation, it opens a control device and
+enables target mode for the specified LUN.
+It then communicates with
+the SIM using CCBs exchanged via
+.Xr read 2
+and
+.Xr write 2 .
+READ and WRITE CDBs are satisfied with the specified backing store file.
+.Pp
+For performance, all backing store accesses use
+.Xr aio 4 .
+Thus,
+.Nm
+requires a kernel compiled with
+.Cd "options VFS_AIO" .
+.Pp
+Options:
+.Bl -tag -width indent
+.It Fl A
+Enable 16 addresses if supported by the SIM.
+Default is 8.
+.It Fl S
+Enable synchronous transfers if supported by the SIM.
+Default is disabled.
+.It Fl T
+Enable tagged queuing if supported by the SIM.
+Default is no tagged queuing.
+.It Fl W Cm 8 | 16 | 32
+Enable 16 or 32 bit wide transfers if supported by the SIM.
+Default is 8.
+.It Fl b Ar bufsize
+Set buffer size for transfers.
+Transfers larger than this will be split into multiple transfers.
+.It Fl c Ar sectorsize
+Set sector size for emulated volume.
+Default is 512.
+.It Fl d
+Enable debugging output in
+.Nm
+and its associated control device.
+.It Fl s Ar volsize
+Use a different size for the emulated volume.
+Must be less than or equal to the size of
+.Ar filename .
+If the number ends with a
+.Dq Li k ,
+.Dq Li m ,
+.Dq Li g ,
+.Dq Li t ,
+.Dq Li p ,
+or
+.Dq Li e ,
+the number is multiplied by 2^10 (1K), 2^20 (1M), 2^30 (1G), 2^40 (1T),
+2^50 (1P) and 2^60 (1E)
+respectively.
+.El
+.Pp
+Required arguments:
+.Bl -tag -width indent
+.It Ar bus : Ns Ar target : Ns Ar lun
+Attach to specified bus ID, target ID, and LUN.
+.It Ar filename
+File to use as a backing store.
+.El
+.Pp
+All options default to the minimal functionality of SCSI-1.
+To be safe,
+.Nm
+checks the SIM for the requested capability before enabling target mode.
+.Sh FILES
+.Bl -tag -width ".Pa /usr/share/examples/scsi_target" -compact
+.It Pa /dev/targ*
+Control devices.
+.It Pa /usr/share/examples/scsi_target
+Source directory.
+.El
+.Sh EXAMPLES
+Create a 5 megabyte backing store file.
+.Pp
+.Dl "dd if=/dev/zero of=vol size=1m count=5"
+.Pp
+Enable target mode on bus 0, target ID 1, LUN 0, using
+.Pa vol
+as the backing store for READ6/10 and WRITE6/10 commands.
+Only the first 1000 bytes of
+.Pa vol
+will be used.
+Debugging information will be output.
+16-bit wide transfers will be used if the SIM supports them.
+.Pp
+.Dl "scsi_target -d -s 1000 -W 16 0:1:0 vol"
+.Sh SEE ALSO
+.Xr scsi 4 ,
+.Xr targ 4
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+example first appeared in
+.Fx 3.0
+and was written by
+.An Justin T. Gibbs .
+It was rewritten for
+.Fx 5.0
+by
+.An Nate Lawson Aq nate@root.org .
diff --git a/share/examples/scsi_target/scsi_target.c b/share/examples/scsi_target/scsi_target.c
new file mode 100644
index 0000000..c9686f9
--- /dev/null
+++ b/share/examples/scsi_target/scsi_target.c
@@ -0,0 +1,1001 @@
+/*
+ * SCSI Disk Emulator
+ *
+ * Copyright (c) 2002 Nate Lawson.
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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 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 <ctype.h>
+#include <errno.h>
+#include <err.h>
+#include <fcntl.h>
+#include <signal.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sysexits.h>
+#include <unistd.h>
+#include <aio.h>
+#include <assert.h>
+#include <sys/stat.h>
+#include <sys/queue.h>
+#include <sys/event.h>
+#include <sys/param.h>
+#include <sys/disk.h>
+#include <cam/cam_queue.h>
+#include <cam/scsi/scsi_all.h>
+#include <cam/scsi/scsi_targetio.h>
+#include <cam/scsi/scsi_message.h>
+#include "scsi_target.h"
+
+/* Maximum amount to transfer per CTIO */
+#define MAX_XFER MAXPHYS
+/* Maximum number of allocated CTIOs */
+#define MAX_CTIOS 64
+/* Maximum sector size for emulated volume */
+#define MAX_SECTOR 32768
+
+/* Global variables */
+int debug;
+int notaio = 0;
+off_t volume_size;
+u_int sector_size;
+size_t buf_size;
+
+/* Local variables */
+static int targ_fd;
+static int kq_fd;
+static int file_fd;
+static int num_ctios;
+static struct ccb_queue pending_queue;
+static struct ccb_queue work_queue;
+static struct ioc_enable_lun ioc_enlun = {
+ CAM_BUS_WILDCARD,
+ CAM_TARGET_WILDCARD,
+ CAM_LUN_WILDCARD
+};
+
+/* Local functions */
+static void cleanup(void);
+static int init_ccbs(void);
+static void request_loop(void);
+static void handle_read(void);
+/* static int work_atio(struct ccb_accept_tio *); */
+static void queue_io(struct ccb_scsiio *);
+static int run_queue(struct ccb_accept_tio *);
+static int work_inot(struct ccb_immed_notify *);
+static struct ccb_scsiio *
+ get_ctio(void);
+/* static void free_ccb(union ccb *); */
+static cam_status get_sim_flags(u_int16_t *);
+static void rel_simq(void);
+static void abort_all_pending(void);
+static void usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ int ch, unit;
+ char *file_name, targname[16];
+ u_int16_t req_flags, sim_flags;
+ off_t user_size;
+
+ /* Initialize */
+ debug = 0;
+ req_flags = sim_flags = 0;
+ user_size = 0;
+ targ_fd = file_fd = kq_fd = -1;
+ num_ctios = 0;
+ sector_size = SECTOR_SIZE;
+ buf_size = DFLTPHYS;
+
+ /* Prepare resource pools */
+ TAILQ_INIT(&pending_queue);
+ TAILQ_INIT(&work_queue);
+
+ while ((ch = getopt(argc, argv, "AdSTYb:c:s:W:")) != -1) {
+ switch(ch) {
+ case 'A':
+ req_flags |= SID_Addr16;
+ break;
+ case 'd':
+ debug = 1;
+ break;
+ case 'S':
+ req_flags |= SID_Sync;
+ break;
+ case 'T':
+ req_flags |= SID_CmdQue;
+ break;
+ case 'b':
+ buf_size = atoi(optarg);
+ if (buf_size < 256 || buf_size > MAX_XFER)
+ errx(1, "Unreasonable buf size: %s", optarg);
+ break;
+ case 'c':
+ sector_size = atoi(optarg);
+ if (sector_size < 512 || sector_size > MAX_SECTOR)
+ errx(1, "Unreasonable sector size: %s", optarg);
+ break;
+ case 's':
+ {
+ int last, shift = 0;
+
+ last = strlen(optarg) - 1;
+ if (last > 0) {
+ switch (tolower(optarg[last])) {
+ case 'e':
+ shift += 10;
+ /* FALLTHROUGH */
+ case 'p':
+ shift += 10;
+ /* FALLTHROUGH */
+ case 't':
+ shift += 10;
+ /* FALLTHROUGH */
+ case 'g':
+ shift += 10;
+ /* FALLTHROUGH */
+ case 'm':
+ shift += 10;
+ /* FALLTHROUGH */
+ case 'k':
+ shift += 10;
+ optarg[last] = 0;
+ break;
+ }
+ }
+ user_size = strtoll(optarg, (char **)NULL, /*base*/10);
+ user_size <<= shift;
+ if (user_size < 0)
+ errx(1, "Unreasonable volume size: %s", optarg);
+ break;
+ }
+ case 'W':
+ req_flags &= ~(SID_WBus16 | SID_WBus32);
+ switch (atoi(optarg)) {
+ case 8:
+ /* Leave req_flags zeroed */
+ break;
+ case 16:
+ req_flags |= SID_WBus16;
+ break;
+ case 32:
+ req_flags |= SID_WBus32;
+ break;
+ default:
+ warnx("Width %s not supported", optarg);
+ usage();
+ /* NOTREACHED */
+ }
+ break;
+ case 'Y':
+ notaio = 1;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ }
+ argc -= optind;
+ argv += optind;
+
+ if (argc != 2)
+ usage();
+
+ sscanf(argv[0], "%u:%u:%u", &ioc_enlun.path_id, &ioc_enlun.target_id,
+ &ioc_enlun.lun_id);
+ file_name = argv[1];
+
+ if (ioc_enlun.path_id == CAM_BUS_WILDCARD ||
+ ioc_enlun.target_id == CAM_TARGET_WILDCARD ||
+ ioc_enlun.lun_id == CAM_LUN_WILDCARD) {
+ warnx("Incomplete target path specified");
+ usage();
+ /* NOTREACHED */
+ }
+ /* We don't support any vendor-specific commands */
+ ioc_enlun.grp6_len = 0;
+ ioc_enlun.grp7_len = 0;
+
+ /* Open backing store for IO */
+ file_fd = open(file_name, O_RDWR);
+ if (file_fd < 0)
+ err(1, "open backing store file");
+
+ /* Check backing store size or use the size user gave us */
+ if (user_size == 0) {
+ struct stat st;
+
+ if (fstat(file_fd, &st) < 0)
+ err(1, "fstat file");
+#if __FreeBSD_version >= 500000
+ if ((st.st_mode & S_IFCHR) != 0) {
+ /* raw device */
+ off_t mediasize;
+ if (ioctl(file_fd, DIOCGMEDIASIZE, &mediasize) < 0)
+ err(1, "DIOCGMEDIASIZE");
+
+ /* XXX get sector size by ioctl()?? */
+ volume_size = mediasize / sector_size;
+ } else
+#endif
+ volume_size = st.st_size / sector_size;
+ } else {
+ volume_size = user_size / sector_size;
+ }
+ if (debug)
+ warnx("volume_size: %d bytes x " OFF_FMT " sectors",
+ sector_size, volume_size);
+
+ if (volume_size <= 0)
+ errx(1, "volume must be larger than %d", sector_size);
+
+ if (notaio == 0) {
+ struct aiocb aio, *aiop;
+
+ /* See if we have we have working AIO support */
+ memset(&aio, 0, sizeof(aio));
+ aio.aio_buf = malloc(sector_size);
+ if (aio.aio_buf == NULL)
+ err(1, "malloc");
+ aio.aio_fildes = file_fd;
+ aio.aio_offset = 0;
+ aio.aio_nbytes = sector_size;
+ signal(SIGSYS, SIG_IGN);
+ if (aio_read(&aio) != 0) {
+ printf("AIO support is not available- switchin to"
+ " single-threaded mode.\n");
+ notaio = 1;
+ } else {
+ if (aio_waitcomplete(&aiop, NULL) != sector_size)
+ err(1, "aio_waitcomplete");
+ assert(aiop == &aio);
+ signal(SIGSYS, SIG_DFL);
+ }
+ free((void *)aio.aio_buf);
+ if (debug && notaio == 0)
+ warnx("aio support tested ok");
+ }
+
+ /* Go through all the control devices and find one that isn't busy. */
+ unit = 0;
+ do {
+ snprintf(targname, sizeof(targname), "/dev/targ%d", unit++);
+ targ_fd = open(targname, O_RDWR);
+ } while (targ_fd < 0 && errno == EBUSY);
+
+ if (targ_fd < 0)
+ err(1, "Tried to open %d devices, none available", unit);
+
+ /* The first three are handled by kevent() later */
+ signal(SIGHUP, SIG_IGN);
+ signal(SIGINT, SIG_IGN);
+ signal(SIGTERM, SIG_IGN);
+ signal(SIGPROF, SIG_IGN);
+ signal(SIGALRM, SIG_IGN);
+ signal(SIGSTOP, SIG_IGN);
+ signal(SIGTSTP, SIG_IGN);
+
+ /* Register a cleanup handler to run when exiting */
+ atexit(cleanup);
+
+ /* Enable listening on the specified LUN */
+ if (ioctl(targ_fd, TARGIOCENABLE, &ioc_enlun) != 0)
+ err(1, "TARGIOCENABLE");
+
+ /* Enable debugging if requested */
+ if (debug) {
+ if (ioctl(targ_fd, TARGIOCDEBUG, &debug) != 0)
+ warnx("TARGIOCDEBUG");
+ }
+
+ /* Set up inquiry data according to what SIM supports */
+ if (get_sim_flags(&sim_flags) != CAM_REQ_CMP)
+ errx(1, "get_sim_flags");
+ if (tcmd_init(req_flags, sim_flags) != 0)
+ errx(1, "Initializing tcmd subsystem failed");
+
+ /* Queue ATIOs and INOTs on descriptor */
+ if (init_ccbs() != 0)
+ errx(1, "init_ccbs failed");
+
+ if (debug)
+ warnx("main loop beginning");
+ request_loop();
+
+ exit(0);
+}
+
+static void
+cleanup()
+{
+ struct ccb_hdr *ccb_h;
+
+ if (debug) {
+ warnx("cleanup called");
+ debug = 0;
+ ioctl(targ_fd, TARGIOCDEBUG, &debug);
+ }
+ ioctl(targ_fd, TARGIOCDISABLE, NULL);
+ close(targ_fd);
+
+ while ((ccb_h = TAILQ_FIRST(&pending_queue)) != NULL) {
+ TAILQ_REMOVE(&pending_queue, ccb_h, periph_links.tqe);
+ free_ccb((union ccb *)ccb_h);
+ }
+ while ((ccb_h = TAILQ_FIRST(&work_queue)) != NULL) {
+ TAILQ_REMOVE(&work_queue, ccb_h, periph_links.tqe);
+ free_ccb((union ccb *)ccb_h);
+ }
+
+ if (kq_fd != -1)
+ close(kq_fd);
+}
+
+/* Allocate ATIOs/INOTs and queue on HBA */
+static int
+init_ccbs()
+{
+ int i;
+
+ for (i = 0; i < MAX_INITIATORS; i++) {
+ struct ccb_accept_tio *atio;
+ struct atio_descr *a_descr;
+ struct ccb_immed_notify *inot;
+
+ atio = (struct ccb_accept_tio *)malloc(sizeof(*atio));
+ if (atio == NULL) {
+ warn("malloc ATIO");
+ return (-1);
+ }
+ a_descr = (struct atio_descr *)malloc(sizeof(*a_descr));
+ if (a_descr == NULL) {
+ free(atio);
+ warn("malloc atio_descr");
+ return (-1);
+ }
+ atio->ccb_h.func_code = XPT_ACCEPT_TARGET_IO;
+ atio->ccb_h.targ_descr = a_descr;
+ send_ccb((union ccb *)atio, /*priority*/1);
+
+ inot = (struct ccb_immed_notify *)malloc(sizeof(*inot));
+ if (inot == NULL) {
+ warn("malloc INOT");
+ return (-1);
+ }
+ inot->ccb_h.func_code = XPT_IMMED_NOTIFY;
+ send_ccb((union ccb *)inot, /*priority*/1);
+ }
+
+ return (0);
+}
+
+static void
+request_loop()
+{
+ struct kevent events[MAX_EVENTS];
+ struct timespec ts, *tptr;
+ int quit;
+
+ /* Register kqueue for event notification */
+ if ((kq_fd = kqueue()) < 0)
+ err(1, "init kqueue");
+
+ /* Set up some default events */
+ EV_SET(&events[0], SIGHUP, EVFILT_SIGNAL, EV_ADD|EV_ENABLE, 0, 0, 0);
+ EV_SET(&events[1], SIGINT, EVFILT_SIGNAL, EV_ADD|EV_ENABLE, 0, 0, 0);
+ EV_SET(&events[2], SIGTERM, EVFILT_SIGNAL, EV_ADD|EV_ENABLE, 0, 0, 0);
+ EV_SET(&events[3], targ_fd, EVFILT_READ, EV_ADD|EV_ENABLE, 0, 0, 0);
+ if (kevent(kq_fd, events, 4, NULL, 0, NULL) < 0)
+ err(1, "kevent signal registration");
+
+ ts.tv_sec = 0;
+ ts.tv_nsec = 0;
+ tptr = NULL;
+ quit = 0;
+
+ /* Loop until user signal */
+ while (quit == 0) {
+ int retval, i, oo;
+ struct ccb_hdr *ccb_h;
+
+ /* Check for the next signal, read ready, or AIO completion */
+ retval = kevent(kq_fd, NULL, 0, events, MAX_EVENTS, tptr);
+ if (retval < 0) {
+ if (errno == EINTR) {
+ if (debug)
+ warnx("EINTR, looping");
+ continue;
+ }
+ else {
+ err(1, "kevent failed");
+ }
+ } else if (retval > MAX_EVENTS) {
+ errx(1, "kevent returned more events than allocated?");
+ }
+
+ /* Process all received events. */
+ for (oo = i = 0; i < retval; i++) {
+ if ((events[i].flags & EV_ERROR) != 0)
+ errx(1, "kevent registration failed");
+
+ switch (events[i].filter) {
+ case EVFILT_READ:
+ if (debug)
+ warnx("read ready");
+ handle_read();
+ break;
+ case EVFILT_AIO:
+ {
+ struct ccb_scsiio *ctio;
+ struct ctio_descr *c_descr;
+ if (debug)
+ warnx("aio ready");
+
+ ctio = (struct ccb_scsiio *)events[i].udata;
+ c_descr = (struct ctio_descr *)
+ ctio->ccb_h.targ_descr;
+ c_descr->event = AIO_DONE;
+ /* Queue on the appropriate ATIO */
+ queue_io(ctio);
+ /* Process any queued completions. */
+ oo += run_queue(c_descr->atio);
+ break;
+ }
+ case EVFILT_SIGNAL:
+ if (debug)
+ warnx("signal ready, setting quit");
+ quit = 1;
+ break;
+ default:
+ warnx("unknown event %d", events[i].filter);
+ break;
+ }
+
+ if (debug)
+ warnx("event %d done", events[i].filter);
+ }
+
+ if (oo) {
+ tptr = &ts;
+ continue;
+ }
+
+ /* Grab the first CCB and perform one work unit. */
+ if ((ccb_h = TAILQ_FIRST(&work_queue)) != NULL) {
+ union ccb *ccb;
+
+ ccb = (union ccb *)ccb_h;
+ switch (ccb_h->func_code) {
+ case XPT_ACCEPT_TARGET_IO:
+ /* Start one more transfer. */
+ retval = work_atio(&ccb->atio);
+ break;
+ case XPT_IMMED_NOTIFY:
+ retval = work_inot(&ccb->cin);
+ break;
+ default:
+ warnx("Unhandled ccb type %#x on workq",
+ ccb_h->func_code);
+ abort();
+ /* NOTREACHED */
+ }
+
+ /* Assume work function handled the exception */
+ if ((ccb_h->status & CAM_DEV_QFRZN) != 0) {
+ if (debug) {
+ warnx("Queue frozen receiving CCB, "
+ "releasing");
+ }
+ rel_simq();
+ }
+
+ /* No more work needed for this command. */
+ if (retval == 0) {
+ TAILQ_REMOVE(&work_queue, ccb_h,
+ periph_links.tqe);
+ }
+ }
+
+ /*
+ * Poll for new events (i.e. completions) while we
+ * are processing CCBs on the work_queue. Once it's
+ * empty, use an infinite wait.
+ */
+ if (!TAILQ_EMPTY(&work_queue))
+ tptr = &ts;
+ else
+ tptr = NULL;
+ }
+}
+
+/* CCBs are ready from the kernel */
+static void
+handle_read()
+{
+ union ccb *ccb_array[MAX_INITIATORS], *ccb;
+ int ccb_count, i, oo;
+
+ ccb_count = read(targ_fd, ccb_array, sizeof(ccb_array));
+ if (ccb_count <= 0) {
+ warn("read ccb ptrs");
+ return;
+ }
+ ccb_count /= sizeof(union ccb *);
+ if (ccb_count < 1) {
+ warnx("truncated read ccb ptr?");
+ return;
+ }
+
+ for (i = 0; i < ccb_count; i++) {
+ ccb = ccb_array[i];
+ TAILQ_REMOVE(&pending_queue, &ccb->ccb_h, periph_links.tqe);
+
+ switch (ccb->ccb_h.func_code) {
+ case XPT_ACCEPT_TARGET_IO:
+ {
+ struct ccb_accept_tio *atio;
+ struct atio_descr *a_descr;
+
+ /* Initialize ATIO descr for this transaction */
+ atio = &ccb->atio;
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+ bzero(a_descr, sizeof(*a_descr));
+ TAILQ_INIT(&a_descr->cmplt_io);
+ a_descr->flags = atio->ccb_h.flags &
+ (CAM_DIS_DISCONNECT | CAM_TAG_ACTION_VALID);
+ /* XXX add a_descr->priority */
+ if ((atio->ccb_h.flags & CAM_CDB_POINTER) == 0)
+ a_descr->cdb = atio->cdb_io.cdb_bytes;
+ else
+ a_descr->cdb = atio->cdb_io.cdb_ptr;
+
+ /* ATIOs are processed in FIFO order */
+ TAILQ_INSERT_TAIL(&work_queue, &ccb->ccb_h,
+ periph_links.tqe);
+ break;
+ }
+ case XPT_CONT_TARGET_IO:
+ {
+ struct ccb_scsiio *ctio;
+ struct ctio_descr *c_descr;
+
+ ctio = &ccb->ctio;
+ c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+ c_descr->event = CTIO_DONE;
+ /* Queue on the appropriate ATIO */
+ queue_io(ctio);
+ /* Process any queued completions. */
+ oo += run_queue(c_descr->atio);
+ break;
+ }
+ case XPT_IMMED_NOTIFY:
+ /* INOTs are handled with priority */
+ TAILQ_INSERT_HEAD(&work_queue, &ccb->ccb_h,
+ periph_links.tqe);
+ break;
+ default:
+ warnx("Unhandled ccb type %#x in handle_read",
+ ccb->ccb_h.func_code);
+ break;
+ }
+ }
+}
+
+/* Process an ATIO CCB from the kernel */
+int
+work_atio(struct ccb_accept_tio *atio)
+{
+ struct ccb_scsiio *ctio;
+ struct atio_descr *a_descr;
+ struct ctio_descr *c_descr;
+ cam_status status;
+ int ret;
+
+ if (debug)
+ warnx("Working on ATIO %p", atio);
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+
+ /* Get a CTIO and initialize it according to our known parameters */
+ ctio = get_ctio();
+ if (ctio == NULL) {
+ return (1);
+ }
+ ret = 0;
+ ctio->ccb_h.flags = a_descr->flags;
+ ctio->tag_id = atio->tag_id;
+ ctio->init_id = atio->init_id;
+ /* XXX priority needs to be added to a_descr */
+ c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+ c_descr->atio = atio;
+ if ((a_descr->flags & CAM_DIR_IN) != 0)
+ c_descr->offset = a_descr->base_off + a_descr->targ_req;
+ else if ((a_descr->flags & CAM_DIR_MASK) == CAM_DIR_OUT)
+ c_descr->offset = a_descr->base_off + a_descr->init_req;
+ else
+ c_descr->offset = a_descr->base_off;
+
+ /*
+ * Return a check condition if there was an error while
+ * receiving this ATIO.
+ */
+ if (atio->sense_len != 0) {
+ struct scsi_sense_data *sense;
+
+ if (debug) {
+ warnx("ATIO with %u bytes sense received",
+ atio->sense_len);
+ }
+ sense = &atio->sense_data;
+ tcmd_sense(ctio->init_id, ctio, sense->flags,
+ sense->add_sense_code, sense->add_sense_code_qual);
+ send_ccb((union ccb *)ctio, /*priority*/1);
+ return (0);
+ }
+
+ status = atio->ccb_h.status & CAM_STATUS_MASK;
+ switch (status) {
+ case CAM_CDB_RECVD:
+ ret = tcmd_handle(atio, ctio, ATIO_WORK);
+ break;
+ case CAM_REQ_ABORTED:
+ warn("ATIO %p aborted", a_descr);
+ /* Requeue on HBA */
+ TAILQ_REMOVE(&work_queue, &atio->ccb_h, periph_links.tqe);
+ send_ccb((union ccb *)atio, /*priority*/1);
+ ret = 1;
+ break;
+ default:
+ warnx("ATIO completed with unhandled status %#x", status);
+ abort();
+ /* NOTREACHED */
+ break;
+ }
+
+ return (ret);
+}
+
+static void
+queue_io(struct ccb_scsiio *ctio)
+{
+ struct ccb_hdr *ccb_h;
+ struct io_queue *ioq;
+ struct ctio_descr *c_descr;
+
+ c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+ if (c_descr->atio == NULL) {
+ errx(1, "CTIO %p has NULL ATIO", ctio);
+ }
+ ioq = &((struct atio_descr *)c_descr->atio->ccb_h.targ_descr)->cmplt_io;
+
+ if (TAILQ_EMPTY(ioq)) {
+ TAILQ_INSERT_HEAD(ioq, &ctio->ccb_h, periph_links.tqe);
+ return;
+ }
+
+ TAILQ_FOREACH_REVERSE(ccb_h, ioq, io_queue, periph_links.tqe) {
+ struct ctio_descr *curr_descr =
+ (struct ctio_descr *)ccb_h->targ_descr;
+ if (curr_descr->offset <= c_descr->offset) {
+ break;
+ }
+ }
+
+ if (ccb_h) {
+ TAILQ_INSERT_AFTER(ioq, ccb_h, &ctio->ccb_h, periph_links.tqe);
+ } else {
+ TAILQ_INSERT_HEAD(ioq, &ctio->ccb_h, periph_links.tqe);
+ }
+}
+
+/*
+ * Go through all completed AIO/CTIOs for a given ATIO and advance data
+ * counts, start continuation IO, etc.
+ */
+static int
+run_queue(struct ccb_accept_tio *atio)
+{
+ struct atio_descr *a_descr;
+ struct ccb_hdr *ccb_h;
+ int sent_status, event;
+
+ if (atio == NULL)
+ return (0);
+
+ a_descr = (struct atio_descr *)atio->ccb_h.targ_descr;
+
+ while ((ccb_h = TAILQ_FIRST(&a_descr->cmplt_io)) != NULL) {
+ struct ccb_scsiio *ctio;
+ struct ctio_descr *c_descr;
+
+ ctio = (struct ccb_scsiio *)ccb_h;
+ c_descr = (struct ctio_descr *)ctio->ccb_h.targ_descr;
+
+ if (ctio->ccb_h.status == CAM_REQ_ABORTED) {
+ TAILQ_REMOVE(&a_descr->cmplt_io, ccb_h,
+ periph_links.tqe);
+ free_ccb((union ccb *)ctio);
+ send_ccb((union ccb *)atio, /*priority*/1);
+ continue;
+ }
+
+ /* If completed item is in range, call handler */
+ if ((c_descr->event == AIO_DONE &&
+ c_descr->offset == a_descr->base_off + a_descr->targ_ack)
+ || (c_descr->event == CTIO_DONE &&
+ c_descr->offset == a_descr->base_off + a_descr->init_ack)) {
+ sent_status = (ccb_h->flags & CAM_SEND_STATUS) != 0;
+ event = c_descr->event;
+
+ TAILQ_REMOVE(&a_descr->cmplt_io, ccb_h,
+ periph_links.tqe);
+ tcmd_handle(atio, ctio, c_descr->event);
+
+ /* If entire transfer complete, send back ATIO */
+ if (sent_status != 0 && event == CTIO_DONE)
+ send_ccb((union ccb *)atio, /*priority*/1);
+ } else {
+ /* Gap in offsets so wait until later callback */
+ if (/* debug */ 1)
+ warnx("IO %p:%p out of order %s", ccb_h,
+ a_descr, c_descr->event == AIO_DONE?
+ "aio" : "ctio");
+ return (1);
+ }
+ }
+ return (0);
+}
+
+static int
+work_inot(struct ccb_immed_notify *inot)
+{
+ cam_status status;
+ int sense;
+
+ if (debug)
+ warnx("Working on INOT %p", inot);
+
+ status = inot->ccb_h.status;
+ sense = (status & CAM_AUTOSNS_VALID) != 0;
+ status &= CAM_STATUS_MASK;
+
+ switch (status) {
+ case CAM_SCSI_BUS_RESET:
+ tcmd_ua(CAM_TARGET_WILDCARD, UA_BUS_RESET);
+ abort_all_pending();
+ break;
+ case CAM_BDR_SENT:
+ tcmd_ua(CAM_TARGET_WILDCARD, UA_BDR);
+ abort_all_pending();
+ break;
+ case CAM_MESSAGE_RECV:
+ switch (inot->message_args[0]) {
+ case MSG_TASK_COMPLETE:
+ case MSG_INITIATOR_DET_ERR:
+ case MSG_ABORT_TASK_SET:
+ case MSG_MESSAGE_REJECT:
+ case MSG_NOOP:
+ case MSG_PARITY_ERROR:
+ case MSG_TARGET_RESET:
+ case MSG_ABORT_TASK:
+ case MSG_CLEAR_TASK_SET:
+ default:
+ warnx("INOT message %#x", inot->message_args[0]);
+ break;
+ }
+ break;
+ case CAM_REQ_ABORTED:
+ warnx("INOT %p aborted", inot);
+ break;
+ default:
+ warnx("Unhandled INOT status %#x", status);
+ break;
+ }
+
+ /* If there is sense data, use it */
+ if (sense != 0) {
+ struct scsi_sense_data *sense;
+
+ sense = &inot->sense_data;
+ tcmd_sense(inot->initiator_id, NULL, sense->flags,
+ sense->add_sense_code, sense->add_sense_code_qual);
+ if (debug)
+ warnx("INOT has sense: %#x", sense->flags);
+ }
+
+ /* Requeue on SIM */
+ TAILQ_REMOVE(&work_queue, &inot->ccb_h, periph_links.tqe);
+ send_ccb((union ccb *)inot, /*priority*/1);
+
+ return (1);
+}
+
+void
+send_ccb(union ccb *ccb, int priority)
+{
+ if (debug)
+ warnx("sending ccb (%#x)", ccb->ccb_h.func_code);
+ ccb->ccb_h.pinfo.priority = priority;
+ if (XPT_FC_IS_QUEUED(ccb)) {
+ TAILQ_INSERT_TAIL(&pending_queue, &ccb->ccb_h,
+ periph_links.tqe);
+ }
+ if (write(targ_fd, &ccb, sizeof(ccb)) != sizeof(ccb)) {
+ warn("write ccb");
+ ccb->ccb_h.status = CAM_PROVIDE_FAIL;
+ }
+}
+
+/* Return a CTIO/descr/buf combo from the freelist or malloc one */
+static struct ccb_scsiio *
+get_ctio()
+{
+ struct ccb_scsiio *ctio;
+ struct ctio_descr *c_descr;
+ struct sigevent *se;
+
+ if (num_ctios == MAX_CTIOS) {
+ warnx("at CTIO max");
+ return (NULL);
+ }
+
+ ctio = (struct ccb_scsiio *)malloc(sizeof(*ctio));
+ if (ctio == NULL) {
+ warn("malloc CTIO");
+ return (NULL);
+ }
+ c_descr = (struct ctio_descr *)malloc(sizeof(*c_descr));
+ if (c_descr == NULL) {
+ free(ctio);
+ warn("malloc ctio_descr");
+ return (NULL);
+ }
+ c_descr->buf = malloc(buf_size);
+ if (c_descr->buf == NULL) {
+ free(c_descr);
+ free(ctio);
+ warn("malloc backing store");
+ return (NULL);
+ }
+ num_ctios++;
+
+ /* Initialize CTIO, CTIO descr, and AIO */
+ ctio->ccb_h.func_code = XPT_CONT_TARGET_IO;
+ ctio->ccb_h.retry_count = 2;
+ ctio->ccb_h.timeout = CAM_TIME_INFINITY;
+ ctio->data_ptr = c_descr->buf;
+ ctio->ccb_h.targ_descr = c_descr;
+ c_descr->aiocb.aio_buf = c_descr->buf;
+ c_descr->aiocb.aio_fildes = file_fd;
+ se = &c_descr->aiocb.aio_sigevent;
+ se->sigev_notify = SIGEV_KEVENT;
+ se->sigev_notify_kqueue = kq_fd;
+ se->sigev_value.sival_ptr = ctio;
+
+ return (ctio);
+}
+
+void
+free_ccb(union ccb *ccb)
+{
+ switch (ccb->ccb_h.func_code) {
+ case XPT_CONT_TARGET_IO:
+ {
+ struct ctio_descr *c_descr;
+
+ c_descr = (struct ctio_descr *)ccb->ccb_h.targ_descr;
+ free(c_descr->buf);
+ num_ctios--;
+ /* FALLTHROUGH */
+ }
+ case XPT_ACCEPT_TARGET_IO:
+ free(ccb->ccb_h.targ_descr);
+ /* FALLTHROUGH */
+ case XPT_IMMED_NOTIFY:
+ default:
+ free(ccb);
+ break;
+ }
+}
+
+static cam_status
+get_sim_flags(u_int16_t *flags)
+{
+ struct ccb_pathinq cpi;
+ cam_status status;
+
+ /* Find SIM capabilities */
+ bzero(&cpi, sizeof(cpi));
+ cpi.ccb_h.func_code = XPT_PATH_INQ;
+ send_ccb((union ccb *)&cpi, /*priority*/1);
+ status = cpi.ccb_h.status & CAM_STATUS_MASK;
+ if (status != CAM_REQ_CMP) {
+ fprintf(stderr, "CPI failed, status %#x\n", status);
+ return (status);
+ }
+
+ /* Can only enable on controllers that support target mode */
+ if ((cpi.target_sprt & PIT_PROCESSOR) == 0) {
+ fprintf(stderr, "HBA does not support target mode\n");
+ status = CAM_PATH_INVALID;
+ return (status);
+ }
+
+ *flags = cpi.hba_inquiry;
+ return (status);
+}
+
+static void
+rel_simq()
+{
+ struct ccb_relsim crs;
+
+ bzero(&crs, sizeof(crs));
+ crs.ccb_h.func_code = XPT_REL_SIMQ;
+ crs.release_flags = RELSIM_RELEASE_AFTER_QEMPTY;
+ crs.openings = 0;
+ crs.release_timeout = 0;
+ crs.qfrozen_cnt = 0;
+ send_ccb((union ccb *)&crs, /*priority*/0);
+}
+
+/* Cancel all pending CCBs. */
+static void
+abort_all_pending()
+{
+ struct ccb_abort cab;
+ struct ccb_hdr *ccb_h;
+
+ if (debug)
+ warnx("abort_all_pending");
+
+ bzero(&cab, sizeof(cab));
+ cab.ccb_h.func_code = XPT_ABORT;
+ TAILQ_FOREACH(ccb_h, &pending_queue, periph_links.tqe) {
+ if (debug)
+ warnx("Aborting pending CCB %p\n", ccb_h);
+ cab.abort_ccb = (union ccb *)ccb_h;
+ send_ccb((union ccb *)&cab, /*priority*/1);
+ if (cab.ccb_h.status != CAM_REQ_CMP) {
+ warnx("Unable to abort CCB, status %#x\n",
+ cab.ccb_h.status);
+ }
+ }
+}
+
+static void
+usage()
+{
+ fprintf(stderr,
+ "Usage: scsi_target [-AdSTY] [-b bufsize] [-c sectorsize]\n"
+ "\t\t[-r numbufs] [-s volsize] [-W 8,16,32]\n"
+ "\t\tbus:target:lun filename\n");
+ exit(1);
+}
diff --git a/share/examples/scsi_target/scsi_target.h b/share/examples/scsi_target/scsi_target.h
new file mode 100644
index 0000000..3d94810
--- /dev/null
+++ b/share/examples/scsi_target/scsi_target.h
@@ -0,0 +1,129 @@
+/*
+ * SCSI Target Emulator
+ *
+ * Copyright (c) 2002 Nate Lawson.
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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 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 _SCSI_TARGET_H
+#define _SCSI_TARGET_H
+
+/*
+ * Maximum number of parallel commands to accept,
+ * 1024 for Fibre Channel (SPI is 16).
+ */
+#define MAX_INITIATORS 1024
+#define SECTOR_SIZE 512
+#define MAX_EVENTS (MAX_INITIATORS + 5)
+ /* kqueue for AIO, signals */
+
+/* Additional SCSI 3 defines for inquiry response */
+#define SID_Addr16 0x0100
+
+TAILQ_HEAD(io_queue, ccb_hdr);
+
+/* Offset into the private CCB area for storing our descriptor */
+#define targ_descr periph_priv.entries[1].ptr
+
+/* Descriptor attached to each ATIO */
+struct atio_descr {
+ off_t base_off; /* Base offset for ATIO */
+ uint total_len; /* Total xfer len for this ATIO */
+ uint init_req; /* Transfer count requested to/from init */
+ uint init_ack; /* Data transferred ok to/from init */
+ uint targ_req; /* Transfer count requested to/from target */
+ uint targ_ack; /* Data transferred ok to/from target */
+ int flags; /* Flags for CTIOs */
+ u_int8_t *cdb; /* Pointer to received CDB */
+ /* List of completed AIO/CTIOs */
+ struct io_queue cmplt_io;
+};
+
+typedef enum {
+ ATIO_WORK,
+ AIO_DONE,
+ CTIO_DONE
+} io_ops;
+
+/* Descriptor attached to each CTIO */
+struct ctio_descr {
+ void *buf; /* Backing store */
+ off_t offset; /* Position in transfer (for file, */
+ /* doesn't start at 0) */
+ struct aiocb aiocb; /* AIO descriptor for this CTIO */
+ struct ccb_accept_tio *atio;
+ /* ATIO we are satisfying */
+ io_ops event; /* Event that queued this CTIO */
+};
+
+typedef enum {
+ UA_NONE = 0x00,
+ UA_POWER_ON = 0x01,
+ UA_BUS_RESET = 0x02,
+ UA_BDR = 0x04
+} ua_types;
+
+typedef enum {
+ CA_NONE = 0x00,
+ CA_UNIT_ATTN = 0x01,
+ CA_CMD_SENSE = 0x02
+} ca_types;
+
+struct initiator_state {
+ ua_types orig_ua;
+ ca_types orig_ca;
+ ua_types pending_ua;
+ ca_types pending_ca;
+ struct scsi_sense_data sense_data;
+};
+
+/* Global functions */
+extern cam_status tcmd_init(u_int16_t req_inq_flags,
+ u_int16_t sim_inq_flags);
+extern int tcmd_handle(struct ccb_accept_tio *atio,
+ struct ccb_scsiio *ctio, io_ops event);
+extern void tcmd_sense(u_int init_id, struct ccb_scsiio *ctio,
+ u_int8_t flags,
+ u_int8_t asc, u_int8_t ascq);
+extern void tcmd_ua(u_int init_id, ua_types new_ua);
+extern int work_atio(struct ccb_accept_tio *atio);
+extern void send_ccb(union ccb *ccb, int priority);
+extern void free_ccb(union ccb *ccb);
+static __inline u_int min(u_int a, u_int b) { return (a < b ? a : b); }
+
+/* Global Data */
+extern int notaio;
+
+/*
+ * Compat Defines
+ */
+#if __FreeBSD_version >= 500000
+#define OFF_FMT "%ju"
+#else
+#define OFF_FMT "%llu"
+#endif
+
+#endif /* _SCSI_TARGET_H */
diff --git a/share/examples/ses/Makefile b/share/examples/ses/Makefile
new file mode 100644
index 0000000..53bd0cb
--- /dev/null
+++ b/share/examples/ses/Makefile
@@ -0,0 +1,38 @@
+# $FreeBSD$
+#
+# Copyright (c) 2000 by Matthew Jacob
+# 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,
+# without modification, immediately at the beginning of the file.
+# 2. 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
+# the GNU Public License ("GPL").
+#
+# 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.
+#
+# Matthew Jacob
+# Feral Software
+# mjacob@feral.com
+#
+
+UNUSED = getobjmap getnobj getobjstat
+SUBDIR = getencstat setencstat setobjstat sesd
+
+.include <bsd.subdir.mk>
diff --git a/share/examples/ses/Makefile.inc b/share/examples/ses/Makefile.inc
new file mode 100644
index 0000000..5ff1cd4
--- /dev/null
+++ b/share/examples/ses/Makefile.inc
@@ -0,0 +1,42 @@
+# $FreeBSD$
+#
+# Copyright (c) 2000 by Matthew Jacob
+# 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,
+# without modification, immediately at the beginning of the file.
+# 2. 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
+# the GNU Public License ("GPL").
+#
+# 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.
+#
+# Matthew Jacob
+# Feral Software
+# mjacob@feral.com
+#
+
+CFLAGS+= -I/usr/include/cam/scsi -DSESINC="<scsi_ses.h>"
+BINDIR?= /usr/sbin
+
+CLEANFILES+= ${MAN}
+
+.SUFFIXES: .0 .8
+.0.8:
+ cat ${.IMPSRC} > ${.TARGET}
diff --git a/share/examples/ses/getencstat/Makefile b/share/examples/ses/getencstat/Makefile
new file mode 100644
index 0000000..79141b6
--- /dev/null
+++ b/share/examples/ses/getencstat/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+#
+# Copyright (c) 2000 by Matthew Jacob
+# 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,
+# without modification, immediately at the beginning of the file.
+# 2. 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
+# the GNU Public License ("GPL").
+#
+# 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.
+#
+# Matthew Jacob
+# Feral Software
+# mjacob@feral.com
+#
+
+.PATH: ${.CURDIR}/../srcs
+
+PROG= getencstat
+SRCS= getencstat.c eltsub.c
+MAN= getencstat.8
+
+.include <bsd.prog.mk>
diff --git a/share/examples/ses/getencstat/getencstat.0 b/share/examples/ses/getencstat/getencstat.0
new file mode 100644
index 0000000..45a9498
--- /dev/null
+++ b/share/examples/ses/getencstat/getencstat.0
@@ -0,0 +1,83 @@
+.\" Copyright (c) 2000 Matthew Jacob
+.\" 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,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. 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
+.\" the GNU Public License ("GPL").
+.\"
+.\" 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.
+.\"
+.\" Matthew Jacob
+.\" Feral Software
+.\" mjacob@feral.com
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 21, 2000
+.Dt GETENCSTAT 8
+.Os
+.Sh NAME
+.Nm getencstat
+.Nd get SCSI Environmental Services Device enclosure status
+.Sh SYNOPSIS
+.Nm
+.Op Fl v
+.Ar device
+.Op Ar device ...
+.Sh DESCRIPTION
+.Nm
+gets summary and detailed SCSI Environmental Services (or SAF-TE) device
+enclosure status.
+The overall status is printed out.
+If the overall status
+is considered okay, nothing else is printed out (unless the
+.Fl v
+option is used).
+.Pp
+A SCSI Environmental Services device enclosure may be either in the state
+of being \fBOK\fR, or in one or more of the states of \fBINFORMATIONAL\fR,
+\fBNON-CRITICAL\fR, \fBCRITICAL\fB or \fBUNRECOVERABLE\fR states.
+These
+overall states reflect a summary of the states of each object within
+such a device (such as power supplies or disk drives).
+.Pp
+With the
+.Fl v
+option, the status of all objects within the device is printed, whether
+\fBOK\fR or not.
+Along with the status of each object is the object identifier.
+.Pp
+The user may then use
+.Xr setencstat 8
+to try and clear overall device status, or may use
+.Xr setobjstat 8
+to set specific object status.
+.Sh FILES
+.Bl -tag -width /dev/sesN -compact
+.It Pa /dev/ses\fIN\fR
+SCSI Environmental Services Devices
+.El
+.Sh SEE ALSO
+.Xr ses 4 ,
+.Xr sesd 8 ,
+.Xr setencstat 8 ,
+.Xr setobjstat 8
+.Sh BUGS
diff --git a/share/examples/ses/sesd/Makefile b/share/examples/ses/sesd/Makefile
new file mode 100644
index 0000000..99a3b92
--- /dev/null
+++ b/share/examples/ses/sesd/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+#
+# Copyright (c) 2000 by Matthew Jacob
+# 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,
+# without modification, immediately at the beginning of the file.
+# 2. 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
+# the GNU Public License ("GPL").
+#
+# 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.
+#
+# Matthew Jacob
+# Feral Software
+# mjacob@feral.com
+#
+
+.PATH: ${.CURDIR}/../srcs
+
+PROG= sesd
+SRCS= sesd.c eltsub.c
+MAN= sesd.8
+
+.include <bsd.prog.mk>
diff --git a/share/examples/ses/sesd/sesd.0 b/share/examples/ses/sesd/sesd.0
new file mode 100644
index 0000000..29c0084
--- /dev/null
+++ b/share/examples/ses/sesd/sesd.0
@@ -0,0 +1,85 @@
+.\" Copyright (c) 2000 Matthew Jacob
+.\" 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,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. 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
+.\" the GNU Public License ("GPL").
+.\"
+.\" 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.
+.\"
+.\" Matthew Jacob
+.\" Feral Software
+.\" mjacob@feral.com
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 21, 2000
+.Dt SESD 8
+.Os
+.Sh NAME
+.Nm sesd
+.Nd monitor SCSI Environmental Services Devices
+.Sh SYNOPSIS
+.Nm
+.Op Fl d
+.Op Fl t Ar poll-interval
+.Ar device
+.Op Ar device ...
+.Sh DESCRIPTION
+.Nm
+monitors SCSI Environmental Services (or SAF-TE) devices for changes
+in state and logs such changes to the system error logger
+(see
+.Xr syslogd 8 ) .
+At least one device must be specified.
+When no other options are supplied,
+.Nm
+detached becomes a daemon, by default waking up every 30 seconds to
+poll each device for a change in state.
+.Pp
+The following options may be used:
+.Bl -tag -width Ds
+.It Fl p Ar poll-interval
+Change the interval of polling from the default 30 seconds to the number
+of seconds specified.
+.It Fl d
+Instead of detaching and becoming a daemon, stay attached to the
+controlling terminal and log changes there as well as via the system
+logger.
+.El
+.Pp
+The user may then use
+.Xr getencstat 8
+to get more detailed information about the state of the over enclosure device
+or objects within the enclosure device.
+.Sh FILES
+.Bl -tag -width /dev/sesN -compact
+.It Pa /dev/ses\fIN\fR
+SCSI Environmental Services Devices
+.El
+.Sh SEE ALSO
+.Xr ses 4 ,
+.Xr getencstat 8 ,
+.Xr setencstat 8 ,
+.Xr setobjstat 8 ,
+.Xr syslogd 8
+.Sh BUGS
+This is something of a toy, but it is better than nothing.
diff --git a/share/examples/ses/setencstat/Makefile b/share/examples/ses/setencstat/Makefile
new file mode 100644
index 0000000..bdf4e4d
--- /dev/null
+++ b/share/examples/ses/setencstat/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+#
+# Copyright (c) 2000 by Matthew Jacob
+# 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,
+# without modification, immediately at the beginning of the file.
+# 2. 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
+# the GNU Public License ("GPL").
+#
+# 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.
+#
+# Matthew Jacob
+# Feral Software
+# mjacob@feral.com
+#
+
+.PATH: ${.CURDIR}/../srcs
+
+PROG= setencstat
+SRCS= setencstat.c eltsub.c
+MAN= setencstat.8
+
+.include <bsd.prog.mk>
diff --git a/share/examples/ses/setencstat/setencstat.0 b/share/examples/ses/setencstat/setencstat.0
new file mode 100644
index 0000000..5c51757
--- /dev/null
+++ b/share/examples/ses/setencstat/setencstat.0
@@ -0,0 +1,73 @@
+.\" Copyright (c) 2000 Matthew Jacob
+.\" 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,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. 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
+.\" the GNU Public License ("GPL").
+.\"
+.\" 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.
+.\"
+.\" Matthew Jacob
+.\" Feral Software
+.\" mjacob@feral.com
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 21, 2000
+.Dt SETENCSTAT 8
+.Os
+.Sh NAME
+.Nm setencstat
+.Nd set SCSI Environmental Services Device enclosure status
+.Sh SYNOPSIS
+.Nm
+.Ar device enclosure_status
+.Sh DESCRIPTION
+.Nm
+sets summary status for a SCSI Environmental Services (or SAF-TE) device.
+The enclosure status argument may take on the values:
+.Bl -tag -width Ds
+.It 0
+Set the status to an \fBOK\fR state.
+.It 1
+Set the status to an \fBUNRECOVERABLE\fR state.
+.It 2
+Set the status to an \fBCRITICAL\fR state.
+.It 4
+Set the status to an \fBNON-CRITICAL\fR state.
+.It 8
+Set the status to an \fBINFORMATIONAL\fR state.
+.El
+.Pp
+All the non-zero options may be combined.
+.Pp
+Note that devices may simply and silently ignore the setting of these values.
+.Sh FILES
+.Bl -tag -width /dev/sesN -compact
+.It Pa /dev/ses\fIN\fR
+SCSI Environmental Services Devices
+.El
+.Sh SEE ALSO
+.Xr ses 4 ,
+.Xr getencstat 8 ,
+.Xr sesd 8 ,
+.Xr setobjstat 8
+.Sh BUGS
diff --git a/share/examples/ses/setobjstat/Makefile b/share/examples/ses/setobjstat/Makefile
new file mode 100644
index 0000000..4a223b4
--- /dev/null
+++ b/share/examples/ses/setobjstat/Makefile
@@ -0,0 +1,41 @@
+# $FreeBSD$
+#
+# Copyright (c) 2000 by Matthew Jacob
+# 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,
+# without modification, immediately at the beginning of the file.
+# 2. 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
+# the GNU Public License ("GPL").
+#
+# 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.
+#
+# Matthew Jacob
+# Feral Software
+# mjacob@feral.com
+#
+
+.PATH: ${.CURDIR}/../srcs
+
+PROG= setobjstat
+SRCS= setobjstat.c eltsub.c
+MAN= setobjstat.8
+
+.include <bsd.prog.mk>
diff --git a/share/examples/ses/setobjstat/setobjstat.0 b/share/examples/ses/setobjstat/setobjstat.0
new file mode 100644
index 0000000..f4e21d8
--- /dev/null
+++ b/share/examples/ses/setobjstat/setobjstat.0
@@ -0,0 +1,70 @@
+.\" Copyright (c) 2000 Matthew Jacob
+.\" 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,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. 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
+.\" the GNU Public License ("GPL").
+.\"
+.\" 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.
+.\"
+.\" Matthew Jacob
+.\" Feral Software
+.\" mjacob@feral.com
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 21, 2000
+.Dt SETOBJSTAT 8
+.Os
+.Sh NAME
+.Nm setobjstat
+.Nd set SCSI Environmental Services Device object status
+.Sh SYNOPSIS
+.Nm
+.Ar device objectid stat0 stat1 stat2 stat3
+.Sh DESCRIPTION
+.Nm
+sets the object status for a SCSI Environmental Services (or SAF-TE) device.
+The
+.Ar objectid
+argument may be determined by running
+.Xr getencstat 8 .
+.Pp
+The status fields are partially common (first byte only, which must
+have a value of 0x80 contained in it), but otherwise quite device
+specific.
+A complete discussion of the possible values is impractical
+here.
+Please refer to the ANSI SCSI specification (available on
+the FTP site ftp.t10.org).
+.Pp
+Note that devices may simply and silently ignore the setting of these values.
+.Sh FILES
+.Bl -tag -width /dev/sesN -compact
+.It Pa /dev/ses\fIN\fR
+SCSI Environmental Services Devices
+.El
+.Sh SEE ALSO
+.Xr ses 4 ,
+.Xr getencstat 8 ,
+.Xr sesd 8 ,
+.Xr setencstat 8
+.Sh BUGS
diff --git a/share/examples/ses/srcs/chpmon.c b/share/examples/ses/srcs/chpmon.c
new file mode 100644
index 0000000..1b537c7
--- /dev/null
+++ b/share/examples/ses/srcs/chpmon.c
@@ -0,0 +1,128 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <sys/ioctl.h>
+#include "ses.h"
+
+/*
+ * Continuously monitor all named SES devices
+ * and turn all but INFO enclosure status
+ * values into CRITICAL enclosure status.
+ */
+#define BADSTAT \
+ (SES_ENCSTAT_UNRECOV|SES_ENCSTAT_CRITICAL|SES_ENCSTAT_NONCRITICAL)
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ int fd, delay, dev;
+ ses_encstat stat, *carray;
+
+ if (a < 3) {
+ fprintf(stderr, "usage: %s polling-interval device "
+ "[ device ... ]\n", *v);
+ return (1);
+ }
+ delay = atoi(v[1]);
+ carray = malloc(a);
+ if (carray == NULL) {
+ perror("malloc");
+ return (1);
+ }
+ bzero((void *)carray, a);
+
+ for (;;) {
+ for (dev = 2; dev < a; dev++) {
+ fd = open(v[dev], O_RDWR);
+ if (fd < 0) {
+ perror(v[dev]);
+ continue;
+ }
+ /*
+ * First clear any enclosure status, in case it is
+ * a latched status.
+ */
+ stat = 0;
+ if (ioctl(fd, SESIOC_SETENCSTAT, (caddr_t) &stat) < 0) {
+ fprintf(stderr, "%s: SESIOC_SETENCSTAT1: %s\n",
+ v[dev], strerror(errno));
+ (void) close(fd);
+ continue;
+ }
+ /*
+ * Now get the actual current enclosure status.
+ */
+ if (ioctl(fd, SESIOC_GETENCSTAT, (caddr_t) &stat) < 0) {
+ fprintf(stderr, "%s: SESIOC_GETENCSTAT: %s\n",
+ v[dev], strerror(errno));
+ (void) close(fd);
+ continue;
+ }
+
+ if ((stat & BADSTAT) == 0) {
+ if (carray[dev]) {
+ fprintf(stdout, "%s: Clearing CRITICAL "
+ "condition\n", v[dev]);
+ carray[dev] = 0;
+ }
+ (void) close(fd);
+ continue;
+ }
+ carray[dev] = 1;
+ fprintf(stdout, "%s: Setting CRITICAL from:", v[dev]);
+ if (stat & SES_ENCSTAT_UNRECOV)
+ fprintf(stdout, " UNRECOVERABLE");
+
+ if (stat & SES_ENCSTAT_CRITICAL)
+ fprintf(stdout, " CRITICAL");
+
+ if (stat & SES_ENCSTAT_NONCRITICAL)
+ fprintf(stdout, " NONCRITICAL");
+ putchar('\n');
+ stat = SES_ENCSTAT_CRITICAL;
+ if (ioctl(fd, SESIOC_SETENCSTAT, (caddr_t) &stat) < 0) {
+ fprintf(stderr, "%s: SESIOC_SETENCSTAT 2: %s\n",
+ v[dev], strerror(errno));
+ }
+ (void) close(fd);
+ }
+ sleep(delay);
+ }
+ /* NOTREACHED */
+}
diff --git a/share/examples/ses/srcs/eltsub.c b/share/examples/ses/srcs/eltsub.c
new file mode 100644
index 0000000..5fae665
--- /dev/null
+++ b/share/examples/ses/srcs/eltsub.c
@@ -0,0 +1,167 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+char *
+geteltnm(type)
+ int type;
+{
+ static char rbuf[132];
+
+ switch (type) {
+ case SESTYP_UNSPECIFIED:
+ sprintf(rbuf, "Unspecified");
+ break;
+ case SESTYP_DEVICE:
+ sprintf(rbuf, "Device");
+ break;
+ case SESTYP_POWER:
+ sprintf(rbuf, "Power supply");
+ break;
+ case SESTYP_FAN:
+ sprintf(rbuf, "Cooling element");
+ break;
+ case SESTYP_THERM:
+ sprintf(rbuf, "Temperature sensors");
+ break;
+ case SESTYP_DOORLOCK:
+ sprintf(rbuf, "Door Lock");
+ break;
+ case SESTYP_ALARM:
+ sprintf(rbuf, "Audible alarm");
+ break;
+ case SESTYP_ESCC:
+ sprintf(rbuf, "Enclosure services controller electronics");
+ break;
+ case SESTYP_SCC:
+ sprintf(rbuf, "SCC controller electronics");
+ break;
+ case SESTYP_NVRAM:
+ sprintf(rbuf, "Nonvolatile cache");
+ break;
+ case SESTYP_UPS:
+ sprintf(rbuf, "Uninterruptible power supply");
+ break;
+ case SESTYP_DISPLAY:
+ sprintf(rbuf, "Display");
+ break;
+ case SESTYP_KEYPAD:
+ sprintf(rbuf, "Key pad entry device");
+ break;
+ case SESTYP_SCSIXVR:
+ sprintf(rbuf, "SCSI port/transceiver");
+ break;
+ case SESTYP_LANGUAGE:
+ sprintf(rbuf, "Language");
+ break;
+ case SESTYP_COMPORT:
+ sprintf(rbuf, "Communication Port");
+ break;
+ case SESTYP_VOM:
+ sprintf(rbuf, "Voltage Sensor");
+ break;
+ case SESTYP_AMMETER:
+ sprintf(rbuf, "Current Sensor");
+ break;
+ case SESTYP_SCSI_TGT:
+ sprintf(rbuf, "SCSI target port");
+ break;
+ case SESTYP_SCSI_INI:
+ sprintf(rbuf, "SCSI initiator port");
+ break;
+ case SESTYP_SUBENC:
+ sprintf(rbuf, "Simple sub-enclosure");
+ break;
+ default:
+ (void) sprintf(rbuf, "<Type 0x%x>", type);
+ break;
+ }
+ return (rbuf);
+}
+
+static char *
+scode2ascii(code)
+ u_char code;
+{
+ static char rbuf[32];
+ switch (code & 0xf) {
+ case SES_OBJSTAT_UNSUPPORTED:
+ sprintf(rbuf, "status not supported");
+ break;
+ case SES_OBJSTAT_OK:
+ sprintf(rbuf, "ok");
+ break;
+ case SES_OBJSTAT_CRIT:
+ sprintf(rbuf, "critical");
+ break;
+ case SES_OBJSTAT_NONCRIT:
+ sprintf(rbuf, "non-critical");
+ break;
+ case SES_OBJSTAT_UNRECOV:
+ sprintf(rbuf, "unrecoverable");
+ break;
+ case SES_OBJSTAT_NOTINSTALLED:
+ sprintf(rbuf, "not installed");
+ break;
+ case SES_OBJSTAT_UNKNOWN:
+ sprintf(rbuf, "unknown status");
+ break;
+ case SES_OBJSTAT_NOTAVAIL:
+ sprintf(rbuf, "status not available");
+ break;
+ default:
+ sprintf(rbuf, "unknown status code %x", code & 0xf);
+ break;
+ }
+ return (rbuf);
+}
+
+
+char *
+stat2ascii(eletype, cstat)
+ int eletype;
+ u_char *cstat;
+{
+ static char ebuf[256], *scode;
+
+ scode = scode2ascii(cstat[0]);
+ sprintf(ebuf, "Status=%s (bytes=0x%02x 0x%02x 0x%02x 0x%02x)",
+ scode, cstat[0], cstat[1], cstat[2], cstat[3]);
+ return (ebuf);
+}
diff --git a/share/examples/ses/srcs/getencstat.c b/share/examples/ses/srcs/getencstat.c
new file mode 100644
index 0000000..bf45e57
--- /dev/null
+++ b/share/examples/ses/srcs/getencstat.c
@@ -0,0 +1,155 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/ioctl.h>
+#include <fcntl.h>
+#include SESINC
+
+extern char *geteltnm __P((int));
+extern char *stat2ascii __P((int, u_char *));
+
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ ses_object *objp;
+ ses_objstat ob;
+ int fd, nobj, f, i, verbose, quiet, errors;
+ u_char estat;
+
+ if (a < 2) {
+ fprintf(stderr, "usage: %s [ -v ] device [ device ... ]\n", *v);
+ return (1);
+ }
+ errors = quiet = verbose = 0;
+ if (strcmp(v[1], "-V") == 0) {
+ verbose = 2;
+ v++;
+ } else if (strcmp(v[1], "-v") == 0) {
+ verbose = 1;
+ v++;
+ } else if (strcmp(v[1], "-q") == 0) {
+ quiet = 1;
+ verbose = 0;
+ v++;
+ }
+ while (*++v) {
+
+ fd = open(*v, O_RDONLY);
+ if (fd < 0) {
+ perror(*v);
+ continue;
+ }
+ if (ioctl(fd, SESIOC_GETNOBJ, (caddr_t) &nobj) < 0) {
+ perror("SESIOC_GETNOBJ");
+ (void) close(fd);
+ continue;
+ }
+ if (ioctl(fd, SESIOC_GETENCSTAT, (caddr_t) &estat) < 0) {
+ perror("SESIOC_GETENCSTAT");
+ (void) close(fd);
+ continue;
+ }
+ if ((verbose == 0 || quiet == 1) && estat == 0) {
+ if (quiet == 0)
+ fprintf(stdout, "%s: Enclosure OK\n", *v);
+ (void) close(fd);
+ continue;
+ }
+ fprintf(stdout, "%s: Enclosure Status ", *v);
+ if (estat == 0) {
+ fprintf(stdout, "<OK");
+ } else {
+ errors++;
+ f = '<';
+ if (estat & SES_ENCSTAT_INFO) {
+ fprintf(stdout, "%cINFO", f);
+ f = ',';
+ }
+ if (estat & SES_ENCSTAT_NONCRITICAL) {
+ fprintf(stdout, "%cNONCRITICAL", f);
+ f = ',';
+ }
+ if (estat & SES_ENCSTAT_CRITICAL) {
+ fprintf(stdout, "%cCRITICAL", f);
+ f = ',';
+ }
+ if (estat & SES_ENCSTAT_UNRECOV) {
+ fprintf(stdout, "%cUNRECOV", f);
+ f = ',';
+ }
+ }
+ fprintf(stdout, ">\n");
+ objp = calloc(nobj, sizeof (ses_object));
+ if (objp == NULL) {
+ perror("calloc");
+ (void) close(fd);
+ continue;
+ }
+ if (ioctl(fd, SESIOC_GETOBJMAP, (caddr_t) objp) < 0) {
+ perror("SESIOC_GETOBJMAP");
+ (void) close(fd);
+ continue;
+ }
+ for (i = 0; i < nobj; i++) {
+ ob.obj_id = objp[i].obj_id;
+ if (ioctl(fd, SESIOC_GETOBJSTAT, (caddr_t) &ob) < 0) {
+ perror("SESIOC_GETOBJSTAT");
+ (void) close(fd);
+ break;
+ }
+ if ((ob.cstat[0] & 0xf) == SES_OBJSTAT_OK) {
+ if (verbose) {
+ fprintf(stdout,
+ "Element 0x%x: %s OK (%s)\n",
+ ob.obj_id,
+ geteltnm(objp[i].object_type),
+ stat2ascii(objp[i].object_type,
+ ob.cstat));
+ }
+ continue;
+ }
+ fprintf(stdout, "Element 0x%x: %s, %s\n",
+ ob.obj_id, geteltnm(objp[i].object_type),
+ stat2ascii(objp[i].object_type, ob.cstat));
+ }
+ free(objp);
+ (void) close(fd);
+ }
+ return (errors);
+}
diff --git a/share/examples/ses/srcs/getnobj.c b/share/examples/ses/srcs/getnobj.c
new file mode 100644
index 0000000..680a6cd
--- /dev/null
+++ b/share/examples/ses/srcs/getnobj.c
@@ -0,0 +1,66 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ unsigned int nobj;
+ int fd;
+
+ while (*++argv != NULL) {
+ char *name = *argv;
+ fd = open(name, O_RDONLY);
+ if (fd < 0) {
+ perror(name);
+ continue;
+ }
+ if (ioctl(fd, SESIOC_GETNOBJ, (caddr_t) &nobj) < 0) {
+ perror("SESIOC_GETNOBJ");
+ } else {
+ fprintf(stdout, "%s: %d objects\n", name, nobj);
+ }
+ close (fd);
+ }
+ return (0);
+}
diff --git a/share/examples/ses/srcs/getobjmap.c b/share/examples/ses/srcs/getobjmap.c
new file mode 100644
index 0000000..7f4d1b7
--- /dev/null
+++ b/share/examples/ses/srcs/getobjmap.c
@@ -0,0 +1,87 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+extern char *geteltnm __P((int));
+
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ ses_object *objp;
+ int nobj, fd, i;
+
+ while (*++v) {
+ fd = open(*v, O_RDONLY);
+ if (fd < 0) {
+ perror(*v);
+ continue;
+ }
+ if (ioctl(fd, SESIOC_GETNOBJ, (caddr_t) &nobj) < 0) {
+ perror("SESIOC_GETNOBJ");
+ (void) close(fd);
+ continue;
+ }
+ fprintf(stdout, "%s: %d objects\n", *v, nobj);
+ if (nobj == 0) {
+ (void) close(fd);
+ continue;
+ }
+ objp = calloc(nobj, sizeof (ses_object));
+ if (objp == NULL) {
+ perror("calloc");
+ (void) close(fd);
+ continue;
+ }
+ if (ioctl(fd, SESIOC_GETOBJMAP, (caddr_t) objp) < 0) {
+ perror("SESIOC_GETOBJMAP");
+ (void) close(fd);
+ continue;
+ }
+ for (i = 0; i < nobj; i++) {
+ printf(" Object %d: ID 0x%x Type '%s'\n", i,
+ objp[i].obj_id, geteltnm((int)objp[i].object_type));
+ }
+ free(objp);
+ (void) close(fd);
+ }
+ return (0);
+}
diff --git a/share/examples/ses/srcs/getobjstat.c b/share/examples/ses/srcs/getobjstat.c
new file mode 100644
index 0000000..bf703cf
--- /dev/null
+++ b/share/examples/ses/srcs/getobjstat.c
@@ -0,0 +1,76 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ int fd;
+ int i;
+ ses_objstat obj;
+ long cvt;
+ char *x;
+
+ if (a != 3) {
+usage:
+ fprintf(stderr, "usage: %s device objectid\n", *v);
+ return (1);
+ }
+ fd = open(v[1], O_RDONLY);
+ if (fd < 0) {
+ perror(v[1]);
+ return (1);
+ }
+ x = v[2];
+ cvt = strtol(v[2], &x, 0);
+ if (x == v[2]) {
+ goto usage;
+ }
+ obj.obj_id = cvt;
+ if (ioctl(fd, SESIOC_GETOBJSTAT, (caddr_t) &obj) < 0) {
+ perror("SESIOC_GETOBJSTAT");
+ return (1);
+ }
+ fprintf(stdout, "Object 0x%x: 0x%x 0x%x 0x%x 0x%x\n", obj.obj_id,
+ obj.cstat[0], obj.cstat[1], obj.cstat[2], obj.cstat[3]);
+ (void) close(fd);
+ return (0);
+}
diff --git a/share/examples/ses/srcs/inienc.c b/share/examples/ses/srcs/inienc.c
new file mode 100644
index 0000000..d6fb262
--- /dev/null
+++ b/share/examples/ses/srcs/inienc.c
@@ -0,0 +1,61 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ int fd;
+
+ while (*++v) {
+ fd = open(*v, O_RDWR);
+ if (fd < 0) {
+ perror(*v);
+ continue;
+ }
+ if (ioctl(fd, SESIOC_INIT, NULL) < 0) {
+ perror("SESIOC_GETNOBJ");
+ }
+ (void) close(fd);
+ }
+ return (0);
+}
diff --git a/share/examples/ses/srcs/sesd.c b/share/examples/ses/srcs/sesd.c
new file mode 100644
index 0000000..5262b63
--- /dev/null
+++ b/share/examples/ses/srcs/sesd.c
@@ -0,0 +1,165 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <string.h>
+#include <syslog.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+#define ALLSTAT (SES_ENCSTAT_UNRECOV | SES_ENCSTAT_CRITICAL | \
+ SES_ENCSTAT_NONCRITICAL | SES_ENCSTAT_INFO)
+
+/*
+ * Monitor named SES devices and note (via syslog) any changes in status.
+ */
+
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ static char *usage =
+ "usage: %s [ -d ] [ -t pollinterval ] device [ device ]\n";
+ int fd, polltime, dev, devbase, nodaemon, bpri;
+ ses_encstat stat, *carray;
+
+ if (a < 2) {
+ fprintf(stderr, usage, *v);
+ return (1);
+ }
+
+ devbase = 1;
+
+ if (strcmp(v[1], "-d") == 0) {
+ nodaemon = 1;
+ devbase++;
+ } else {
+ nodaemon = 0;
+ }
+
+ if (a > 2 && strcmp(v[2], "-t") == 0) {
+ devbase += 2;
+ polltime = atoi(v[3]);
+ } else {
+ polltime = 30;
+ }
+
+ carray = malloc(a);
+ if (carray == NULL) {
+ perror("malloc");
+ return (1);
+ }
+ for (dev = devbase; dev < a; dev++)
+ carray[dev] = (ses_encstat) -1;
+
+ /*
+ * Check to make sure we can open all devices
+ */
+ for (dev = devbase; dev < a; dev++) {
+ fd = open(v[dev], O_RDWR);
+ if (fd < 0) {
+ perror(v[dev]);
+ return (1);
+ }
+ if (ioctl(fd, SESIOC_INIT, NULL) < 0) {
+ fprintf(stderr, "%s: SESIOC_INIT fails- %s\n",
+ v[dev], strerror(errno));
+ return (1);
+ }
+ (void) close(fd);
+ }
+ if (nodaemon == 0) {
+ if (daemon(0, 0) < 0) {
+ perror("daemon");
+ return (1);
+ }
+ openlog("sesd", LOG_CONS, LOG_USER);
+ } else {
+ openlog("sesd", LOG_CONS|LOG_PERROR, LOG_USER);
+ }
+
+ for (;;) {
+ for (dev = devbase; dev < a; dev++) {
+ char buf[128];
+ fd = open(v[dev], O_RDWR);
+ if (fd < 0) {
+ syslog(LOG_ERR, "%s: %m", v[dev]);
+ continue;
+ }
+
+ /*
+ * Get the actual current enclosure status.
+ */
+ if (ioctl(fd, SESIOC_GETENCSTAT, (caddr_t) &stat) < 0) {
+ syslog(LOG_ERR,
+ "%s: SESIOC_GETENCSTAT- %m", v[dev]);
+ (void) close(fd);
+ continue;
+ }
+ (void) close(fd);
+
+ if (stat == carray[dev])
+ continue;
+
+ carray[dev] = stat;
+ if ((stat & ALLSTAT) == 0) {
+ syslog(LOG_NOTICE,
+ "%s: Enclosure Status OK", v[dev]);
+ }
+ if (stat & SES_ENCSTAT_INFO) {
+ syslog(LOG_INFO,
+ "%s: Enclosure Status Has Information",
+ v[dev]);
+ }
+ if (stat & SES_ENCSTAT_NONCRITICAL) {
+ syslog(LOG_WARNING,
+ "%s: Enclosure Non-Critical", v[dev]);
+ }
+ if (stat & SES_ENCSTAT_CRITICAL) {
+ syslog(LOG_CRIT,
+ "%s: Enclosure Critical", v[dev]);
+ }
+ if (stat & SES_ENCSTAT_UNRECOV) {
+ syslog(LOG_ALERT,
+ "%s: Enclosure Unrecoverable", v[dev]);
+ }
+ }
+ sleep(polltime);
+ }
+ /* NOTREACHED */
+}
diff --git a/share/examples/ses/srcs/setencstat.c b/share/examples/ses/srcs/setencstat.c
new file mode 100644
index 0000000..58e0daf
--- /dev/null
+++ b/share/examples/ses/srcs/setencstat.c
@@ -0,0 +1,68 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ int fd;
+ long val;
+ ses_encstat stat;
+
+ if (a != 3) {
+ fprintf(stderr, "usage: %s device enclosure_status\n", *v);
+ return (1);
+ }
+ fd = open(v[1], O_RDWR);
+ if (fd < 0) {
+ perror(v[1]);
+ return (1);
+ }
+
+ val = strtol(v[2], NULL, 0);
+ stat = (ses_encstat) val;
+ if (ioctl(fd, SESIOC_SETENCSTAT, (caddr_t) &stat) < 0) {
+ perror("SESIOC_SETENCSTAT");
+ }
+ (void) close(fd);
+ return (0);
+}
diff --git a/share/examples/ses/srcs/setobjstat.c b/share/examples/ses/srcs/setobjstat.c
new file mode 100644
index 0000000..34e8ea6
--- /dev/null
+++ b/share/examples/ses/srcs/setobjstat.c
@@ -0,0 +1,83 @@
+/* $FreeBSD$ */
+/*
+ * Copyright (c) 2000 by Matthew Jacob
+ * 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,
+ * without modification, immediately at the beginning of the file.
+ * 2. 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
+ * the GNU Public License ("GPL").
+ *
+ * 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.
+ *
+ * Matthew Jacob
+ * Feral Software
+ * mjacob@feral.com
+ */
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <sys/ioctl.h>
+#include SESINC
+
+int
+main(a, v)
+ int a;
+ char **v;
+{
+ int fd;
+ int i;
+ ses_objstat obj;
+ long cvt;
+ char *x;
+
+ if (a != 7) {
+usage:
+ fprintf(stderr,
+ "usage: %s device objectid stat0 stat1 stat2 stat3\n", *v);
+ return (1);
+ }
+ fd = open(v[1], O_RDWR);
+ if (fd < 0) {
+ perror(v[1]);
+ return (1);
+ }
+ x = v[2];
+ cvt = strtol(v[2], &x, 0);
+ if (x == v[2]) {
+ goto usage;
+ }
+ obj.obj_id = cvt;
+ for (i = 0; i < 4; i++) {
+ x = v[3 + i];
+ cvt = strtol(v[3 + i], &x, 0);
+ if (x == v[3 + i]) {
+ goto usage;
+ }
+ obj.cstat[i] = cvt;
+ }
+ if (ioctl(fd, SESIOC_SETOBJSTAT, (caddr_t) &obj) < 0) {
+ perror("SESIOC_SETOBJSTAT");
+ }
+ (void) close(fd);
+ return (0);
+}
diff --git a/share/examples/slattach/unit-command.sh b/share/examples/slattach/unit-command.sh
new file mode 100755
index 0000000..9e97ffd
--- /dev/null
+++ b/share/examples/slattach/unit-command.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+old_unit=$1
+new_unit=$2
+
+if [ $old_unit != -1 ]; then
+ ifconfig sl$old_unit delete down
+ if [ $new_unit == -1 ]; then
+ route delete default
+ fi
+fi
+
+if [ $new_unit != -1 ]; then
+ ifconfig sl$new_unit <address1> <address2>
+ if [ $old_unit == -1 ]; then
+ route add default <address2>
+ fi
+fi
diff --git a/share/examples/sliplogin/slip.hosts b/share/examples/sliplogin/slip.hosts
new file mode 100644
index 0000000..b20d7c8
--- /dev/null
+++ b/share/examples/sliplogin/slip.hosts
@@ -0,0 +1,16 @@
+# @(#)slip.hosts 8.1 (Berkeley) 6/6/93
+#
+# option(s) consist of the following: (see the sliplogin man page)
+# normal - no header compression
+# compress - compress headers
+# autocomp - compress headers if remote end allows it
+# noicmp - disable ICMP packets (such as 'ping' or 'traceroute' packets)
+#
+#login local-address remote-address netmask option(s)
+#------ ---------- ----------- ------- ---------
+Schez vangogh chez 0xffffff00 compress
+Sjun vangogh 128.32.130.36 0xffffff00 normal
+Sleconte vangogh leconte 0xffffff00 compress
+Sleeb vangogh leeb 0xffffff00 compress
+Smjk vangogh pissaro-sl 0xffffff00 noicmp
+Soxford vangogh oxford 0xffffff00 autocomp
diff --git a/share/examples/sliplogin/slip.login b/share/examples/sliplogin/slip.login
new file mode 100644
index 0000000..8110228
--- /dev/null
+++ b/share/examples/sliplogin/slip.login
@@ -0,0 +1,18 @@
+#!/bin/sh -
+#
+# @(#)slip.login 8.1 (Berkeley) 6/6/93
+
+#
+# generic login file for a slip line. sliplogin invokes this with
+# the parameters:
+# 1 2 3 4 5 6 7-n
+# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
+#
+# Delete any arp table entries for this site, just in case
+/usr/sbin/arp -d $5
+# Bringup the line
+/sbin/ifconfig sl$1 inet $4 $5 netmask $6
+# Answer ARP request for the SLIP client with our Ethernet addr
+# XXX - Must be filled in with the ethernet address of the local machine
+# /usr/sbin/arp -s $5 00:00:c0:50:b9:0a pub
+exit
diff --git a/share/examples/sliplogin/slip.logout b/share/examples/sliplogin/slip.logout
new file mode 100644
index 0000000..b27fe09
--- /dev/null
+++ b/share/examples/sliplogin/slip.logout
@@ -0,0 +1,14 @@
+#!/bin/sh -
+#
+# slip.logout
+
+#
+# logout file for a slip line. sliplogin invokes this with
+# the parameters:
+# 1 2 3 4 5 6 7-n
+# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
+#
+/sbin/ifconfig sl$1 delete
+# Remove the ARP table entry for the host
+/usr/sbin/arp -d $5
+exit
diff --git a/share/examples/sliplogin/slip.slparms b/share/examples/sliplogin/slip.slparms
new file mode 100644
index 0000000..a87c7c3
--- /dev/null
+++ b/share/examples/sliplogin/slip.slparms
@@ -0,0 +1,12 @@
+#
+# Additional SLIP configuration (for all login names).
+# Use slip.slparms.<loginname> for particular login.
+#
+# Format:
+# keepalive [outfill [slunit]]
+# (seconds) (seconds) (number)
+#
+# Default values:
+# 0 0 <none>
+#
+600 300
diff --git a/share/examples/smbfs/Makefile b/share/examples/smbfs/Makefile
new file mode 100644
index 0000000..9e5b99a
--- /dev/null
+++ b/share/examples/smbfs/Makefile
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+NO_OBJ=
+BINDIR= /usr/share/examples/smbfs
+FILES= dot.nsmbrc
+
+.PATH: ${.CURDIR}/../../../contrib/smbfs/examples
+
+SUBDIR= print
+
+.include <bsd.prog.mk>
diff --git a/share/examples/smbfs/print/Makefile b/share/examples/smbfs/print/Makefile
new file mode 100644
index 0000000..eb66815
--- /dev/null
+++ b/share/examples/smbfs/print/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+NO_OBJ=
+BINDIR= /usr/share/examples/smbfs/print
+FILES= lj6l ljspool printcap.sample tolj
+
+.PATH: ${.CURDIR}/../../../../contrib/smbfs/examples/print
+
+.include <bsd.prog.mk>
diff --git a/share/examples/startslip/sldown.sh b/share/examples/startslip/sldown.sh
new file mode 100755
index 0000000..1f342a4
--- /dev/null
+++ b/share/examples/startslip/sldown.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+/sbin/ifconfig $1 $2
+/sbin/route delete default
diff --git a/share/examples/startslip/slip.sh b/share/examples/startslip/slip.sh
new file mode 100755
index 0000000..2b4254e
--- /dev/null
+++ b/share/examples/startslip/slip.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# $FreeBSD$
+startslip -b 57600 -U ./slup.sh -D ./sldown.sh \
+ -s atd<phone1> -s atd<phone2> -s atd<phone3> \
+ -h -t 60 -w 2 -W 20 /dev/cuad1 <login> <password>
diff --git a/share/examples/startslip/slup.sh b/share/examples/startslip/slup.sh
new file mode 100755
index 0000000..79cded3
--- /dev/null
+++ b/share/examples/startslip/slup.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+myname=<my.ip.address>
+gateway=<gateway.ip.address>
+netmask=255.255.255.248
+tune1="link0 -link2" # force headers compression
+tune2="mtu 296" # for FreeBSD 1.x host
+
+case $LINE in
+ 0) tune=$tune1;; # 1st phone connected
+ 1) tune=$tune2;; # 2nd phone connected
+ *) tune=;; # others
+esac
+
+/sbin/ifconfig $1 $2 $tune
+/sbin/ifconfig $1 inet $myname $gateway netmask $netmask
+/sbin/route add default $gateway
diff --git a/share/examples/sunrpc/Makefile b/share/examples/sunrpc/Makefile
new file mode 100644
index 0000000..ff50a3b
--- /dev/null
+++ b/share/examples/sunrpc/Makefile
@@ -0,0 +1,25 @@
+#
+# @(#)Makefile 2.1 88/08/02 4.0 RPCSRC
+#
+#
+# Build all demo services
+#
+MAKE = make
+LIB=
+
+SUBDIR= dir msg sort
+
+all: ${SUBDIR}
+
+clean cleanup:
+ cd dir; $(MAKE) ${MFLAGS} cleanup
+ cd msg; $(MAKE) ${MFLAGS} cleanup
+ cd sort; $(MAKE) ${MFLAGS} cleanup
+
+install:
+ @echo "No installations done."
+
+${SUBDIR}: FRC
+ cd $@; $(MAKE) ${MFLAGS} LIB=$(LIB)
+
+FRC:
diff --git a/share/examples/sunrpc/dir/Makefile b/share/examples/sunrpc/dir/Makefile
new file mode 100644
index 0000000..592c9d6
--- /dev/null
+++ b/share/examples/sunrpc/dir/Makefile
@@ -0,0 +1,26 @@
+#
+# @(#)Makefile 2.1 88/08/02 4.0 RPCSRC
+#
+BIN = dir_svc rls
+GEN = dir_clnt.c dir_svc.c dir_xdr.c dir.h
+LIB = -lrpclib
+RPCCOM = rpcgen
+
+all: $(BIN)
+
+$(GEN): dir.x
+ $(RPCCOM) dir.x
+
+dir_svc: dir_proc.o dir_svc.o dir_xdr.o
+ $(CC) -o $@ dir_proc.o dir_svc.o dir_xdr.o $(LIB)
+
+rls: rls.o dir_clnt.o dir_xdr.o
+ $(CC) -o $@ rls.o dir_clnt.o dir_xdr.o $(LIB)
+
+rls.o: rls.c dir.h
+
+dir_proc.o: dir_proc.c dir.h
+
+clean cleanup:
+ rm -f $(GEN) *.o $(BIN)
+
diff --git a/share/examples/sunrpc/dir/dir.x b/share/examples/sunrpc/dir/dir.x
new file mode 100644
index 0000000..db4283c
--- /dev/null
+++ b/share/examples/sunrpc/dir/dir.x
@@ -0,0 +1,37 @@
+/* @(#)dir.x 2.1 88/08/02 4.0 RPCSRC */
+/*
+ * dir.x: Remote directory listing protocol
+ */
+const MAXNAMELEN = 255; /* maximum length of a directory entry */
+
+typedef string nametype<MAXNAMELEN>; /* a directory entry */
+
+typedef struct namenode *namelist; /* a link in the listing */
+
+/*
+ * A node in the directory listing
+ */
+struct namenode {
+ nametype name; /* name of directory entry */
+ namelist next; /* next entry */
+};
+
+/*
+ * The result of a READDIR operation.
+ */
+union readdir_res switch (int errno) {
+case 0:
+ namelist list; /* no error: return directory listing */
+default:
+ void; /* error occurred: nothing else to return */
+};
+
+/*
+ * The directory program definition
+ */
+program DIRPROG {
+ version DIRVERS {
+ readdir_res
+ READDIR(nametype) = 1;
+ } = 1;
+} = 76;
diff --git a/share/examples/sunrpc/dir/dir_proc.c b/share/examples/sunrpc/dir/dir_proc.c
new file mode 100644
index 0000000..46221a2
--- /dev/null
+++ b/share/examples/sunrpc/dir/dir_proc.c
@@ -0,0 +1,55 @@
+/* @(#)dir_proc.c 2.1 88/08/02 4.0 RPCSRC */
+/*
+ * dir_proc.c: remote readdir implementation
+ */
+#include <rpc/rpc.h>
+#include <sys/dir.h>
+#include "dir.h"
+
+extern int errno;
+extern char *malloc();
+extern char *strcpy();
+
+readdir_res *
+readdir_1(dirname)
+ nametype *dirname;
+{
+ DIR *dirp;
+ struct direct *d;
+ namelist nl;
+ namelist *nlp;
+ static readdir_res res; /* must be static! */
+
+ /*
+ * Open directory
+ */
+ dirp = opendir(*dirname);
+ if (dirp == NULL) {
+ res.errno = errno;
+ return (&res);
+ }
+
+ /*
+ * Free previous result
+ */
+ xdr_free(xdr_readdir_res, &res);
+
+ /*
+ * Collect directory entries
+ */
+ nlp = &res.readdir_res_u.list;
+ while (d = readdir(dirp)) {
+ nl = *nlp = (namenode *) malloc(sizeof(namenode));
+ nl->name = malloc(strlen(d->d_name)+1);
+ strcpy(nl->name, d->d_name);
+ nlp = &nl->next;
+ }
+ *nlp = NULL;
+
+ /*
+ * Return the result
+ */
+ res.errno = 0;
+ closedir(dirp);
+ return (&res);
+}
diff --git a/share/examples/sunrpc/dir/rls.c b/share/examples/sunrpc/dir/rls.c
new file mode 100644
index 0000000..aa7f79f
--- /dev/null
+++ b/share/examples/sunrpc/dir/rls.c
@@ -0,0 +1,81 @@
+/* @(#)rls.c 2.2 88/08/12 4.0 RPCSRC */
+/*
+ * rls.c: Remote directory listing client
+ */
+#include <stdio.h>
+#include <rpc/rpc.h> /* always need this */
+#include "dir.h" /* need this too: will be generated by rpcgen*/
+
+extern int errno;
+
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ CLIENT *cl;
+ char *server;
+ char *dir;
+ readdir_res *result;
+ namelist nl;
+
+
+ if (argc != 3) {
+ fprintf(stderr, "usage: %s host directory\n", argv[0]);
+ exit(1);
+ }
+
+ /*
+ * Remember what our command line arguments refer to
+ */
+ server = argv[1];
+ dir = argv[2];
+
+ /*
+ * Create client "handle" used for calling DIRPROG on the
+ * server designated on the command line. We tell the rpc package
+ * to use the "tcp" protocol when contacting the server.
+ */
+ cl = clnt_create(server, DIRPROG, DIRVERS, "tcp");
+ if (cl == NULL) {
+ /*
+ * Couldn't establish connection with server.
+ * Print error message and die.
+ */
+ clnt_pcreateerror(server);
+ exit(1);
+ }
+
+ /*
+ * Call the remote procedure "readdir" on the server
+ */
+ result = readdir_1(&dir, cl);
+ if (result == NULL) {
+ /*
+ * An error occurred while calling the server.
+ * Print error message and die.
+ */
+ clnt_perror(cl, server);
+ exit(1);
+ }
+
+ /*
+ * Okay, we successfully called the remote procedure.
+ */
+ if (result->errno != 0) {
+ /*
+ * A remote system error occurred.
+ * Print error message and die.
+ */
+ errno = result->errno;
+ perror(dir);
+ exit(1);
+ }
+
+ /*
+ * Successfuly got a directory listing.
+ * Print it out.
+ */
+ for (nl = result->readdir_res_u.list; nl != NULL; nl = nl->next) {
+ printf("%s\n", nl->name);
+ }
+}
diff --git a/share/examples/sunrpc/msg/Makefile b/share/examples/sunrpc/msg/Makefile
new file mode 100644
index 0000000..2f3f5dd
--- /dev/null
+++ b/share/examples/sunrpc/msg/Makefile
@@ -0,0 +1,36 @@
+#
+# @(#)Makefile 2.1 88/08/11 4.0 RPCSRC
+#
+BIN = printmsg msg_svc rprintmsg
+GEN = msg_clnt.c msg_svc.c msg.h
+LIB = -lrpclib
+RPCCOM = rpcgen
+
+all: $(BIN)
+
+#
+# This is the non-networked version of the program
+#
+printmsg: printmsg.o
+ $(CC) -o $@ printmsg.o
+
+#
+# note: no xdr routines are generated here, due this service's
+# use of basic data types.
+#
+$(GEN): msg.x
+ $(RPCCOM) msg.x
+
+msg_svc: msg_proc.o msg_svc.o
+ $(CC) -o $@ msg_proc.o msg_svc.o $(LIB)
+
+rprintmsg: rprintmsg.o msg_clnt.o
+ $(CC) -o $@ rprintmsg.o msg_clnt.o $(LIB)
+
+rprintmsg.o: rprintmsg.c msg.h
+
+msg_proc.o: msg_proc.c msg.h
+
+clean cleanup:
+ rm -f $(GEN) *.o $(BIN)
+
diff --git a/share/examples/sunrpc/msg/msg.x b/share/examples/sunrpc/msg/msg.x
new file mode 100644
index 0000000..d311352
--- /dev/null
+++ b/share/examples/sunrpc/msg/msg.x
@@ -0,0 +1,9 @@
+/* @(#)msg.x 2.1 88/08/11 4.0 RPCSRC */
+/*
+ * msg.x: Remote message printing protocol
+ */
+program MESSAGEPROG {
+ version MESSAGEVERS {
+ int PRINTMESSAGE(string) = 1;
+ } = 1;
+} = 99;
diff --git a/share/examples/sunrpc/msg/msg_proc.c b/share/examples/sunrpc/msg/msg_proc.c
new file mode 100644
index 0000000..ed08883
--- /dev/null
+++ b/share/examples/sunrpc/msg/msg_proc.c
@@ -0,0 +1,30 @@
+/* @(#)msg_proc.c 2.1 88/08/11 4.0 RPCSRC */
+/* $FreeBSD$ */
+/*
+ * msg_proc.c: implementation of the remote procedure "printmessage"
+ */
+#include <paths.h>
+#include <stdio.h>
+#include <rpc/rpc.h> /* always need this here */
+#include "msg.h" /* need this too: msg.h will be generated by rpcgen */
+
+/*
+ * Remote verson of "printmessage"
+ */
+int *
+printmessage_1(msg)
+ char **msg;
+{
+ static int result; /* must be static! */
+ FILE *f;
+
+ f = fopen(_PATH_CONSOLE, "w");
+ if (f == NULL) {
+ result = 0;
+ return (&result);
+ }
+ fprintf(f, "%s\n", *msg);
+ fclose(f);
+ result = 1;
+ return (&result);
+}
diff --git a/share/examples/sunrpc/msg/printmsg.c b/share/examples/sunrpc/msg/printmsg.c
new file mode 100644
index 0000000..681007c
--- /dev/null
+++ b/share/examples/sunrpc/msg/printmsg.c
@@ -0,0 +1,45 @@
+/* @(#)printmsg.c 2.1 88/08/11 4.0 RPCSRC */
+/* $FreeBSD$ */
+/*
+ * printmsg.c: print a message on the console
+ */
+#include <paths.h>
+#include <stdio.h>
+
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ char *message;
+
+ if (argc < 2) {
+ fprintf(stderr, "usage: %s <message>\n", argv[0]);
+ exit(1);
+ }
+ message = argv[1];
+
+ if (!printmessage(message)) {
+ fprintf(stderr, "%s: sorry, couldn't print your message\n",
+ argv[0]);
+ exit(1);
+ }
+ printf("Message delivered!\n");
+}
+
+/*
+ * Print a message to the console.
+ * Return a boolean indicating whether the message was actually printed.
+ */
+printmessage(msg)
+ char *msg;
+{
+ FILE *f;
+
+ f = fopen(_PATH_CONSOLE, "w");
+ if (f == NULL) {
+ return (0);
+ }
+ fprintf(f, "%s\n", msg);
+ fclose(f);
+ return(1);
+}
diff --git a/share/examples/sunrpc/msg/rprintmsg.c b/share/examples/sunrpc/msg/rprintmsg.c
new file mode 100644
index 0000000..b9301de
--- /dev/null
+++ b/share/examples/sunrpc/msg/rprintmsg.c
@@ -0,0 +1,74 @@
+/* @(#)rprintmsg.c 2.1 88/08/11 4.0 RPCSRC */
+/*
+ * rprintmsg.c: remote version of "printmsg.c"
+ */
+#include <stdio.h>
+#include <rpc/rpc.h> /* always need this */
+#include "msg.h" /* need this too: will be generated by rpcgen*/
+
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ CLIENT *cl;
+ int *result;
+ char *server;
+ char *message;
+
+ if (argc < 3) {
+ fprintf(stderr, "usage: %s host message\n", argv[0]);
+ exit(1);
+ }
+
+ /*
+ * Remember what our command line arguments refer to
+ */
+ server = argv[1];
+ message = argv[2];
+
+ /*
+ * Create client "handle" used for calling MESSAGEPROG on the
+ * server designated on the command line. We tell the rpc package
+ * to use the "tcp" protocol when contacting the server.
+ */
+ cl = clnt_create(server, MESSAGEPROG, MESSAGEVERS, "tcp");
+ if (cl == NULL) {
+ /*
+ * Couldn't establish connection with server.
+ * Print error message and die.
+ */
+ clnt_pcreateerror(server);
+ exit(1);
+ }
+
+ /*
+ * Call the remote procedure "printmessage" on the server
+ */
+ result = printmessage_1(&message, cl);
+ if (result == NULL) {
+ /*
+ * An error occurred while calling the server.
+ * Print error message and die.
+ */
+ clnt_perror(cl, server);
+ exit(1);
+ }
+
+ /*
+ * Okay, we successfully called the remote procedure.
+ */
+ if (*result == 0) {
+ /*
+ * Server was unable to print our message.
+ * Print error message and die.
+ */
+ fprintf(stderr, "%s: sorry, %s couldn't print your message\n",
+ argv[0], server);
+ exit(1);
+ }
+
+ /*
+ * The message got printed on the server's console
+ */
+ printf("Message delivered to %s!\n", server);
+}
diff --git a/share/examples/sunrpc/sort/Makefile b/share/examples/sunrpc/sort/Makefile
new file mode 100644
index 0000000..07627fa
--- /dev/null
+++ b/share/examples/sunrpc/sort/Makefile
@@ -0,0 +1,36 @@
+#
+# @(#)Makefile 2.1 88/08/11 4.0 RPCSRC
+#
+
+BIN = rsort sort_svc
+GEN = sort_clnt.c sort_svc.c sort_xdr.c sort.h
+LIB = -lrpclib
+RPCCOM = rpcgen
+
+all: $(BIN)
+
+rsort: rsort.o sort_clnt.o sort_xdr.o
+ $(CC) $(LDFLAGS) -o $@ rsort.o sort_clnt.o sort_xdr.o $(LIB)
+
+rsort.o: rsort.c sort.h
+
+sort_clnt.c:
+ $(RPCCOM) -l sort.x >$@
+
+sort_svc: sort_proc.o sort_svc.o sort_xdr.o
+ $(CC) $(LDFLAGS) -o $@ sort_proc.o sort_svc.o sort_xdr.o $(LIB)
+
+sort_proc.o: sort_proc.c sort.h
+
+sort_svc.c:
+ $(RPCCOM) -s udp sort.x >$@
+
+sort_xdr.c:
+ $(RPCCOM) -c sort.x >$@
+
+sort.h:
+ $(RPCCOM) -h sort.x >$@
+
+clean cleanup:
+ rm -f $(GEN) *.o $(BIN)
+
diff --git a/share/examples/sunrpc/sort/rsort.c b/share/examples/sunrpc/sort/rsort.c
new file mode 100644
index 0000000..5c05ad7
--- /dev/null
+++ b/share/examples/sunrpc/sort/rsort.c
@@ -0,0 +1,43 @@
+/* @(#)rsort.c 2.1 88/08/11 4.0 RPCSRC */
+/*
+ * rsort.c
+ * Client side application which sorts argc, argv.
+ */
+#include <stdio.h>
+#include <rpc/rpc.h>
+#include "sort.h"
+
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ char *machinename;
+ struct sortstrings args, res;
+ int i;
+
+ if (argc < 3) {
+ fprintf(stderr, "usage: %s machinename [s1 ...]\n", argv[0]);
+ exit(1);
+ }
+ machinename = argv[1];
+ args.ss.ss_len = argc - 2; /* substract off progname, machinename */
+ args.ss.ss_val = &argv[2];
+ res.ss.ss_val = (char **)NULL;
+
+ if ((i = callrpc(machinename, SORTPROG, SORTVERS, SORT,
+ xdr_sortstrings, &args, xdr_sortstrings, &res)))
+ {
+ fprintf(stderr, "%s: call to sort service failed. ", argv[0]);
+ clnt_perrno(i);
+ fprintf(stderr, "\n");
+ exit(1);
+ }
+
+ for (i = 0; i < res.ss.ss_len; i++) {
+ printf("%s\n", res.ss.ss_val[i]);
+ }
+
+ /* should free res here */
+ exit(0);
+}
+
diff --git a/share/examples/sunrpc/sort/sort.x b/share/examples/sunrpc/sort/sort.x
new file mode 100644
index 0000000..629110c
--- /dev/null
+++ b/share/examples/sunrpc/sort/sort.x
@@ -0,0 +1,19 @@
+/* @(#)sort.x 2.1 88/08/11 4.0 RPCSRC */
+/*
+ * The sort procedure receives an array of strings and returns an array
+ * of strings. This toy service handles a maximum of 64 strings.
+ */
+const MAXSORTSIZE = 64;
+const MAXSTRINGLEN = 64;
+
+typedef string str<MAXSTRINGLEN>; /* the string itself */
+
+struct sortstrings {
+ str ss<MAXSORTSIZE>;
+};
+
+program SORTPROG {
+ version SORTVERS {
+ sortstrings SORT(sortstrings) = 1;
+ } = 1;
+} = 22855;
diff --git a/share/examples/sunrpc/sort/sort_proc.c b/share/examples/sunrpc/sort/sort_proc.c
new file mode 100644
index 0000000..5538faf
--- /dev/null
+++ b/share/examples/sunrpc/sort/sort_proc.c
@@ -0,0 +1,27 @@
+/* @(#)sort_proc.c 2.1 88/08/11 4.0 RPCSRC */
+#include <rpc/rpc.h>
+#include "sort.h"
+
+static int
+comparestrings(sp1, sp2)
+ char **sp1, **sp2;
+{
+ return (strcmp(*sp1, *sp2));
+}
+
+struct sortstrings *
+sort_1(ssp)
+ struct sortstrings *ssp;
+{
+ static struct sortstrings ss_res;
+
+ if (ss_res.ss.ss_val != (str *)NULL)
+ free(ss_res.ss.ss_val);
+
+ qsort(ssp->ss.ss_val, ssp->ss.ss_len, sizeof (char *), comparestrings);
+ ss_res.ss.ss_len = ssp->ss.ss_len;
+ ss_res.ss.ss_val = (str *)malloc(ssp->ss.ss_len * sizeof(str *));
+ bcopy(ssp->ss.ss_val, ss_res.ss.ss_val,
+ ssp->ss.ss_len * sizeof(str *));
+ return(&ss_res);
+}
diff --git a/share/examples/witness/lockgraphs.sh b/share/examples/witness/lockgraphs.sh
new file mode 100644
index 0000000..92a7dd2
--- /dev/null
+++ b/share/examples/witness/lockgraphs.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+################################################################################
+#
+# lockgraphs.sh by Michele Dallachiesa -- 2008-05-07 -- v0.1
+#
+# $FreeBSD$
+#
+################################################################################
+
+sysctl debug.witness.graphs | awk '
+BEGIN {
+ print "digraph lockgraphs {"
+ }
+
+NR > 1 && $0 ~ /"Giant"/ {
+ gsub(","," -> ");
+ print $0 ";"
+}
+
+END {
+ print "}"
+ }'
+
+#eof
diff --git a/share/info/Makefile b/share/info/Makefile
new file mode 100644
index 0000000..0110e02
--- /dev/null
+++ b/share/info/Makefile
@@ -0,0 +1,22 @@
+# @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+NO_OBJ=
+
+.include <bsd.prog.mk>
+
+beforeinstall:
+.if !exists(${DESTDIR}${INFODIR})
+ @echo "Warning: the directory ${DESTDIR}${INFODIR} does not exist!"
+ @echo "Perhaps the variable INFODIR is set incorrectly"
+ @echo "or your mtree database files are broken."
+ @echo ""
+ @echo "As a workaround you can create the directory by hand, e.g.:"
+ @echo -n "install -d -o ${INFOOWN} -g ${INFOGRP} "
+ @echo "-m 0755 ${DESTDIR}${INFODIR}"
+ @exit 3;
+.endif
+.if !exists(${DESTDIR}${INFODIR}/dir)
+ ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
+ dir-tmpl ${DESTDIR}${INFODIR}/dir
+.endif
diff --git a/share/info/dir-tmpl b/share/info/dir-tmpl
new file mode 100644
index 0000000..6064d3a
--- /dev/null
+++ b/share/info/dir-tmpl
@@ -0,0 +1,16 @@
+-*- Text -*-
+This is the file .../info/dir, which contains the
+topmost node of the Info hierarchy, called (dir)Top.
+The first time you invoke Info you start off looking at this node.
+
+File: dir, Node: Top This is the top of the INFO tree
+
+ This (the Directory node) gives a menu of major topics.
+ Typing "q" exits, "?" lists all Info commands, "d" returns here,
+ "h" gives a primer for first-timers,
+ "mEmacs<Return>" visits the Emacs manual, etc.
+
+ In Emacs, you can click mouse button 2 on a menu item or cross reference
+ to select it.
+
+* Menu:
diff --git a/share/man/Makefile b/share/man/Makefile
new file mode 100644
index 0000000..f1929dc
--- /dev/null
+++ b/share/man/Makefile
@@ -0,0 +1,18 @@
+# @(#)Makefile 8.2 (Berkeley) 4/16/94
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+# XXX MISSING: man3f
+SUBDIR= man1 man3 man4 man5 man6 man7 man8 man9
+
+MAKEWHATIS?= makewhatis
+
+makedb:
+ ${MAKEWHATIS} ${DESTDIR}${BINDIR}/man
+.if ${MK_OPENSSL} != "no"
+ ${MAKEWHATIS} ${DESTDIR}${BINDIR}/openssl/man
+.endif
+
+.include "${.CURDIR}/../Makefile.inc"
+.include <bsd.subdir.mk>
diff --git a/share/man/man1/Makefile b/share/man/man1/Makefile
new file mode 100644
index 0000000..43bf944
--- /dev/null
+++ b/share/man/man1/Makefile
@@ -0,0 +1,95 @@
+# @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+MAN= builtin.1 intro.1
+
+# Create MLINKS for Shell built in commands for which there are no userland
+# utilities of the same name:
+MLINKS= builtin.1 alias.1 \
+ builtin.1 alloc.1 \
+ builtin.1 bg.1 \
+ builtin.1 bind.1 \
+ builtin.1 bindkey.1 \
+ builtin.1 break.1 \
+ builtin.1 breaksw.1 \
+ builtin.1 builtins.1 \
+ builtin.1 case.1 \
+ builtin.1 cd.1 \
+ builtin.1 chdir.1 \
+ builtin.1 command.1 \
+ builtin.1 complete.1 \
+ builtin.1 continue.1 \
+ builtin.1 default.1 \
+ builtin.1 dirs.1 \
+ builtin.1 do.1 \
+ builtin.1 done.1 \
+ builtin.1 echotc.1 \
+ builtin.1 elif.1 \
+ builtin.1 else.1 \
+ builtin.1 end.1 \
+ builtin.1 endif.1 \
+ builtin.1 endsw.1 \
+ builtin.1 esac.1 \
+ builtin.1 eval.1 \
+ builtin.1 exec.1 \
+ builtin.1 exit.1 \
+ builtin.1 export.1 \
+ builtin.1 fc.1 \
+ builtin.1 fg.1 \
+ builtin.1 fi.1 \
+ builtin.1 filetest.1 \
+ builtin.1 for.1 \
+ builtin.1 foreach.1 \
+ builtin.1 getopts.1 \
+ builtin.1 glob.1 \
+ builtin.1 goto.1 \
+ builtin.1 hash.1 \
+ builtin.1 hashstat.1 \
+ builtin.1 history.1 \
+ builtin.1 hup.1 \
+ builtin.1 if.1 \
+ builtin.1 jobid.1 \
+ builtin.1 jobs.1 \
+ builtin.1 limit.1 \
+ builtin.1 log.1 \
+ builtin.1 logout.1 \
+ builtin.1 ls-F.1 \
+ builtin.1 notify.1 \
+ builtin.1 onintr.1 \
+ builtin.1 popd.1 \
+ builtin.1 pushd.1 \
+ builtin.1 read.1 \
+ builtin.1 readonly.1 \
+ builtin.1 rehash.1 \
+ builtin.1 repeat.1 \
+ builtin.1 sched.1 \
+ builtin.1 set.1 \
+ builtin.1 setenv.1 \
+ builtin.1 settc.1 \
+ builtin.1 setty.1 \
+ builtin.1 setvar.1 \
+ builtin.1 shift.1 \
+ builtin.1 source.1 \
+ builtin.1 stop.1 \
+ builtin.1 suspend.1 \
+ builtin.1 switch.1 \
+ builtin.1 telltc.1 \
+ builtin.1 then.1 \
+ builtin.1 times.1 \
+ builtin.1 trap.1 \
+ builtin.1 type.1 \
+ builtin.1 ulimit.1 \
+ builtin.1 umask.1 \
+ builtin.1 unalias.1 \
+ builtin.1 uncomplete.1 \
+ builtin.1 unhash.1 \
+ builtin.1 unlimit.1 \
+ builtin.1 unset.1 \
+ builtin.1 unsetenv.1 \
+ builtin.1 until.1 \
+ builtin.1 wait.1 \
+ builtin.1 where.1 \
+ builtin.1 while.1
+MLINKS+=intro.1 introduction.1
+
+.include <bsd.prog.mk>
diff --git a/share/man/man1/builtin.1 b/share/man/man1/builtin.1
new file mode 100644
index 0000000..0a93c21
--- /dev/null
+++ b/share/man/man1/builtin.1
@@ -0,0 +1,329 @@
+.\"
+.\" Copyright (c) 1999 Sheldon Hearn
+.\"
+.\" 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$
+.\"
+.Dd October 14, 2006
+.Dt BUILTIN 1
+.Os
+.Sh NAME
+.Nm builtin ,
+.Nm \&! ,
+.Nm % ,
+.Nm \&. ,
+.Nm \&: ,
+.Nm @ ,
+.Nm { ,
+.Nm } ,
+.Nm alias ,
+.Nm alloc ,
+.Nm bg ,
+.Nm bind ,
+.Nm bindkey ,
+.Nm break ,
+.Nm breaksw ,
+.Nm builtins ,
+.Nm case ,
+.Nm cd ,
+.Nm chdir ,
+.Nm command ,
+.Nm complete ,
+.Nm continue ,
+.Nm default ,
+.Nm dirs ,
+.Nm do ,
+.Nm done ,
+.Nm echo ,
+.Nm echotc ,
+.Nm elif ,
+.Nm else ,
+.Nm end ,
+.Nm endif ,
+.Nm endsw ,
+.Nm esac ,
+.Nm eval ,
+.Nm exec ,
+.Nm exit ,
+.Nm export ,
+.Nm false ,
+.Nm fc ,
+.Nm fg ,
+.Nm filetest ,
+.Nm fi ,
+.Nm for ,
+.Nm foreach ,
+.Nm getopts ,
+.Nm glob ,
+.Nm goto ,
+.Nm hash ,
+.Nm hashstat ,
+.Nm history ,
+.Nm hup ,
+.Nm if ,
+.Nm jobid ,
+.Nm jobs ,
+.Nm kill ,
+.Nm limit ,
+.Nm local ,
+.Nm log ,
+.Nm login ,
+.Nm logout ,
+.Nm ls-F ,
+.Nm nice ,
+.Nm nohup ,
+.Nm notify ,
+.Nm onintr ,
+.Nm popd ,
+.Nm printenv ,
+.Nm pushd ,
+.Nm pwd ,
+.Nm read ,
+.Nm readonly ,
+.Nm rehash ,
+.Nm repeat ,
+.Nm return ,
+.Nm sched ,
+.Nm set ,
+.Nm setenv ,
+.Nm settc ,
+.Nm setty ,
+.Nm setvar ,
+.Nm shift ,
+.Nm source ,
+.Nm stop ,
+.Nm suspend ,
+.Nm switch ,
+.Nm telltc ,
+.Nm test ,
+.Nm then ,
+.Nm time ,
+.Nm times ,
+.Nm trap ,
+.Nm true ,
+.Nm type ,
+.Nm ulimit ,
+.Nm umask ,
+.Nm unalias ,
+.Nm uncomplete ,
+.Nm unhash ,
+.Nm unlimit ,
+.Nm unset ,
+.Nm unsetenv ,
+.Nm until ,
+.Nm wait ,
+.Nm where ,
+.Nm which ,
+.Nm while
+.Nd shell built-in commands
+.Sh SYNOPSIS
+See the built-in command description in the appropriate shell manual page.
+.Sh DESCRIPTION
+Shell builtin commands are commands that can be executed within the
+running shell's process.
+Note that, in the case of
+.Xr csh 1
+builtin commands, the command is executed in a subshell if it occurs as
+any component of a pipeline except the last.
+.Pp
+If a command specified to the shell contains a slash
+.Ql / ,
+the shell will not execute a builtin command, even if the last component
+of the specified command matches the name of a builtin command.
+Thus, while specifying
+.Dq Li echo
+causes a builtin command to be executed under shells that support the
+.Nm echo
+builtin command,
+specifying
+.Dq Li /bin/echo
+or
+.Dq Li ./echo
+does not.
+.Pp
+While some builtin commands may exist in more than one shell, their
+operation may be different under each shell which supports them.
+Below is a table which lists shell builtin commands, the standard shells
+that support them and whether they exist as standalone utilities.
+.Pp
+Only builtin commands for the
+.Xr csh 1
+and
+.Xr sh 1
+shells are listed here.
+Consult a shell's manual page for
+details on the operation its builtin commands.
+Beware that the
+.Xr sh 1
+manual page, at least, calls some of these commands
+.Dq built-in commands
+and some of them
+.Dq reserved words .
+Users of other shells may need to consult an
+.Xr info 1
+page or other sources of documentation.
+.Pp
+Commands marked
+.Dq Li No**
+under
+.Em External
+do exist externally,
+but are implemented as scripts using a builtin command of the same name.
+.Bl -column ".Ic uncomplete" ".Em External" ".Xr csh 1" ".Xr sh 1" -offset indent
+.It Xo
+.Em "Command External" Ta Xr csh 1 Ta Xr sh 1
+.Xc
+.It Ic ! Ta \&No Ta \&No Ta Yes
+.It Ic % Ta \&No Ta Yes Ta \&No
+.It Ic . Ta \&No Ta \&No Ta Yes
+.It Ic : Ta \&No Ta Yes Ta Yes
+.It Ic @ Ta \&No Ta Yes Ta Yes
+.It Ic { Ta \&No Ta \&No Ta Yes
+.It Ic } Ta \&No Ta \&No Ta Yes
+.It Ic alias Ta No** Ta Yes Ta Yes
+.It Ic alloc Ta \&No Ta Yes Ta \&No
+.It Ic bg Ta No** Ta Yes Ta Yes
+.It Ic bind Ta \&No Ta \&No Ta Yes
+.It Ic bindkey Ta \&No Ta Yes Ta \&No
+.It Ic break Ta \&No Ta Yes Ta Yes
+.It Ic breaksw Ta \&No Ta Yes Ta \&No
+.It Ic builtin Ta \&No Ta \&No Ta Yes
+.It Ic builtins Ta \&No Ta Yes Ta \&No
+.It Ic case Ta \&No Ta Yes Ta Yes
+.It Ic cd Ta No** Ta Yes Ta Yes
+.It Ic chdir Ta \&No Ta Yes Ta Yes
+.It Ic command Ta No** Ta \&No Ta Yes
+.It Ic complete Ta \&No Ta Yes Ta \&No
+.It Ic continue Ta \&No Ta Yes Ta Yes
+.It Ic default Ta \&No Ta Yes Ta \&No
+.It Ic dirs Ta \&No Ta Yes Ta \&No
+.It Ic do Ta \&No Ta \&No Ta Yes
+.It Ic done Ta \&No Ta \&No Ta Yes
+.It Ic echo Ta Yes Ta Yes Ta Yes
+.It Ic echotc Ta \&No Ta Yes Ta \&No
+.It Ic elif Ta \&No Ta \&No Ta Yes
+.It Ic else Ta \&No Ta Yes Ta Yes
+.It Ic end Ta \&No Ta Yes Ta \&No
+.It Ic endif Ta \&No Ta Yes Ta \&No
+.It Ic endsw Ta \&No Ta Yes Ta \&No
+.It Ic esac Ta \&No Ta \&No Ta Yes
+.It Ic eval Ta \&No Ta Yes Ta Yes
+.It Ic exec Ta \&No Ta Yes Ta Yes
+.It Ic exit Ta \&No Ta Yes Ta Yes
+.It Ic export Ta \&No Ta \&No Ta Yes
+.It Ic false Ta Yes Ta \&No Ta Yes
+.It Ic fc Ta No** Ta \&No Ta Yes
+.It Ic fg Ta No** Ta Yes Ta Yes
+.It Ic filetest Ta \&No Ta Yes Ta \&No
+.It Ic fi Ta \&No Ta \&No Ta Yes
+.It Ic for Ta \&No Ta \&No Ta Yes
+.It Ic foreach Ta \&No Ta Yes Ta \&No
+.It Ic getopts Ta No** Ta \&No Ta Yes
+.It Ic glob Ta \&No Ta Yes Ta \&No
+.It Ic goto Ta \&No Ta Yes Ta \&No
+.It Ic hash Ta \&No Ta \&No Ta Yes
+.It Ic hashstat Ta \&No Ta Yes Ta \&No
+.It Ic history Ta \&No Ta Yes Ta \&No
+.It Ic hup Ta \&No Ta Yes Ta \&No
+.It Ic if Ta \&No Ta Yes Ta Yes
+.It Ic jobid Ta \&No Ta \&No Ta Yes
+.It Ic jobs Ta No** Ta Yes Ta Yes
+.It Ic kill Ta Yes Ta Yes Ta \&No
+.It Ic limit Ta \&No Ta Yes Ta \&No
+.It Ic local Ta \&No Ta \&No Ta Yes
+.It Ic log Ta \&No Ta Yes Ta \&No
+.It Ic login Ta Yes Ta Yes Ta \&No
+.It Ic logout Ta \&No Ta Yes Ta \&No
+.It Ic ls-F Ta \&No Ta Yes Ta \&No
+.It Ic nice Ta Yes Ta Yes Ta \&No
+.It Ic nohup Ta Yes Ta Yes Ta \&No
+.It Ic notify Ta \&No Ta Yes Ta \&No
+.It Ic onintr Ta \&No Ta Yes Ta \&No
+.It Ic popd Ta \&No Ta Yes Ta \&No
+.It Ic printenv Ta Yes Ta Yes Ta \&No
+.It Ic pushd Ta \&No Ta Yes Ta \&No
+.It Ic pwd Ta Yes Ta \&No Ta Yes
+.It Ic read Ta No** Ta \&No Ta Yes
+.It Ic readonly Ta \&No Ta \&No Ta Yes
+.It Ic rehash Ta \&No Ta Yes Ta \&No
+.It Ic repeat Ta \&No Ta Yes Ta \&No
+.It Ic return Ta \&No Ta \&No Ta Yes
+.It Ic sched Ta \&No Ta Yes Ta \&No
+.It Ic set Ta \&No Ta Yes Ta Yes
+.It Ic setenv Ta \&No Ta Yes Ta \&No
+.It Ic settc Ta \&No Ta Yes Ta \&No
+.It Ic setty Ta \&No Ta Yes Ta \&No
+.It Ic setvar Ta \&No Ta \&No Ta Yes
+.It Ic shift Ta \&No Ta Yes Ta Yes
+.It Ic source Ta \&No Ta Yes Ta \&No
+.It Ic stop Ta \&No Ta Yes Ta \&No
+.It Ic suspend Ta \&No Ta Yes Ta \&No
+.It Ic switch Ta \&No Ta Yes Ta \&No
+.It Ic telltc Ta \&No Ta Yes Ta \&No
+.It Ic test Ta Yes Ta \&No Ta Yes
+.It Ic then Ta \&No Ta \&No Ta Yes
+.It Ic time Ta Yes Ta Yes Ta \&No
+.It Ic times Ta \&No Ta \&No Ta Yes
+.It Ic trap Ta \&No Ta \&No Ta Yes
+.It Ic true Ta Yes Ta \&No Ta Yes
+.It Ic type Ta \&No Ta \&No Ta Yes
+.It Ic ulimit Ta \&No Ta \&No Ta Yes
+.It Ic umask Ta No** Ta Yes Ta Yes
+.It Ic unalias Ta No** Ta Yes Ta Yes
+.It Ic uncomplete Ta \&No Ta Yes Ta \&No
+.It Ic unhash Ta \&No Ta Yes Ta \&No
+.It Ic unlimit Ta \&No Ta Yes Ta \&No
+.It Ic unset Ta \&No Ta Yes Ta Yes
+.It Ic unsetenv Ta \&No Ta Yes Ta \&No
+.It Ic until Ta \&No Ta \&No Ta Yes
+.It Ic wait Ta No** Ta Yes Ta Yes
+.It Ic where Ta \&No Ta Yes Ta \&No
+.It Ic which Ta Yes Ta Yes Ta \&No
+.It Ic while Ta \&No Ta Yes Ta Yes
+.El
+.Sh SEE ALSO
+.Xr csh 1 ,
+.Xr echo 1 ,
+.Xr false 1 ,
+.Xr info 1 ,
+.Xr kill 1 ,
+.Xr login 1 ,
+.Xr nice 1 ,
+.Xr nohup 1 ,
+.Xr printenv 1 ,
+.Xr pwd 1 ,
+.Xr sh 1 ,
+.Xr test 1 ,
+.Xr time 1 ,
+.Xr true 1 ,
+.Xr which 1
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.4 .
+.Sh AUTHORS
+This manual page was written by
+.An Sheldon Hearn Aq sheldonh@FreeBSD.org .
diff --git a/share/man/man1/intro.1 b/share/man/man1/intro.1
new file mode 100644
index 0000000..c7bd089
--- /dev/null
+++ b/share/man/man1/intro.1
@@ -0,0 +1,84 @@
+.\" Copyright (c) 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)intro.1 8.2 (Berkeley) 12/30/93
+.\" $FreeBSD$
+.\"
+.Dd October 21, 2001
+.Dt INTRO 1
+.Os
+.Sh NAME
+.Nm intro
+.Nd introduction to general commands (tools and utilities)
+.Sh DESCRIPTION
+Section one of the manual contains most of the commands
+which comprise the
+.Bx
+user environment.
+Some of the commands included in section one are
+text editors, command shell interpreters,
+searching and sorting tools,
+file manipulation commands,
+system status commands,
+remote file copy commands, mail commands,
+compilers and compiler tools,
+formatted output tools,
+and line printer commands.
+.Pp
+All commands set a status value upon exit which may be tested
+to see if the command completed normally.
+Traditionally, the value 0 signifies successful
+completion of the command, while a value >0 indicates an error.
+Some commands attempt to describe the nature of the failure by using
+exit codes as defined in
+.Xr sysexits 3 ,
+while others simply set the status to an arbitrary value >0 (typically 1).
+.Sh SEE ALSO
+.Xr apropos 1 ,
+.Xr man 1 ,
+.Xr intro 2 ,
+.Xr intro 3 ,
+.Xr sysexits 3 ,
+.Xr intro 4 ,
+.Xr intro 5 ,
+.Xr intro 6 ,
+.Xr intro 7 ,
+.Xr security 7 ,
+.Xr intro 8 ,
+.Xr intro 9
+.Pp
+Tutorials in the
+.%T "UNIX User's Manual Supplementary Documents" .
+.Sh HISTORY
+The
+.Nm
+manual page appeared in
+.At v6 .
diff --git a/share/man/man3/Makefile b/share/man/man3/Makefile
new file mode 100644
index 0000000..13c5e14
--- /dev/null
+++ b/share/man/man3/Makefile
@@ -0,0 +1,272 @@
+# @(#)Makefile 8.2 (Berkeley) 12/13/93
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+MAN= assert.3 \
+ bitstring.3 \
+ end.3 \
+ fpgetround.3 \
+ intro.3 \
+ makedev.3 \
+ ${PTHREAD_MAN} \
+ queue.3 \
+ siginfo.3 \
+ stdarg.3 \
+ sysexits.3 \
+ tgmath.3 \
+ timeradd.3 \
+ tree.3
+
+MLINKS= bitstring.3 bit_alloc.3 \
+ bitstring.3 bit_clear.3 \
+ bitstring.3 bit_decl.3 \
+ bitstring.3 bit_ffc.3 \
+ bitstring.3 bit_ffs.3 \
+ bitstring.3 bit_nclear.3 \
+ bitstring.3 bit_nset.3 \
+ bitstring.3 bit_set.3 \
+ bitstring.3 bitstr_size.3 \
+ bitstring.3 bit_test.3
+MLINKS+= end.3 edata.3 \
+ end.3 etext.3
+MLINKS+= fpgetround.3 fpgetmask.3 \
+ fpgetround.3 fpgetprec.3 \
+ fpgetround.3 fpgetsticky.3 \
+ fpgetround.3 fpresetsticky.3 \
+ fpgetround.3 fpsetmask.3 \
+ fpgetround.3 fpsetprec.3 \
+ fpgetround.3 fpsetround.3
+MLINKS+= makedev.3 major.3 \
+ makedev.3 minor.3
+MLINKS+= ${PTHREAD_MLINKS}
+MLINKS+= queue.3 LIST_EMPTY.3 \
+ queue.3 LIST_ENTRY.3 \
+ queue.3 LIST_FIRST.3 \
+ queue.3 LIST_FOREACH.3 \
+ queue.3 LIST_FOREACH_SAFE.3 \
+ queue.3 LIST_HEAD.3 \
+ queue.3 LIST_HEAD_INITIALIZER.3 \
+ queue.3 LIST_INIT.3 \
+ queue.3 LIST_INSERT_AFTER.3 \
+ queue.3 LIST_INSERT_BEFORE.3 \
+ queue.3 LIST_INSERT_HEAD.3 \
+ queue.3 LIST_NEXT.3 \
+ queue.3 LIST_REMOVE.3 \
+ queue.3 SLIST_EMPTY.3 \
+ queue.3 SLIST_ENTRY.3 \
+ queue.3 SLIST_FIRST.3 \
+ queue.3 SLIST_FOREACH.3 \
+ queue.3 SLIST_FOREACH_SAFE.3 \
+ queue.3 SLIST_HEAD.3 \
+ queue.3 SLIST_HEAD_INITIALIZER.3 \
+ queue.3 SLIST_INIT.3 \
+ queue.3 SLIST_INSERT_AFTER.3 \
+ queue.3 SLIST_INSERT_HEAD.3 \
+ queue.3 SLIST_NEXT.3 \
+ queue.3 SLIST_REMOVE.3 \
+ queue.3 SLIST_REMOVE_HEAD.3 \
+ queue.3 SLIST_REMOVE_NEXT.3 \
+ queue.3 STAILQ_CONCAT.3 \
+ queue.3 STAILQ_EMPTY.3 \
+ queue.3 STAILQ_ENTRY.3 \
+ queue.3 STAILQ_FIRST.3 \
+ queue.3 STAILQ_FOREACH.3 \
+ queue.3 STAILQ_FOREACH_SAFE.3 \
+ queue.3 STAILQ_HEAD.3 \
+ queue.3 STAILQ_HEAD_INITIALIZER.3 \
+ queue.3 STAILQ_INIT.3 \
+ queue.3 STAILQ_INSERT_AFTER.3 \
+ queue.3 STAILQ_INSERT_HEAD.3 \
+ queue.3 STAILQ_INSERT_TAIL.3 \
+ queue.3 STAILQ_LAST.3 \
+ queue.3 STAILQ_NEXT.3 \
+ queue.3 STAILQ_REMOVE.3 \
+ queue.3 STAILQ_REMOVE_HEAD.3 \
+ queue.3 STAILQ_REMOVE_NEXT.3 \
+ queue.3 TAILQ_CONCAT.3 \
+ queue.3 TAILQ_EMPTY.3 \
+ queue.3 TAILQ_ENTRY.3 \
+ queue.3 TAILQ_FIRST.3 \
+ queue.3 TAILQ_FOREACH.3 \
+ queue.3 TAILQ_FOREACH_REVERSE.3 \
+ queue.3 TAILQ_FOREACH_REVERSE_SAFE.3 \
+ queue.3 TAILQ_FOREACH_SAFE.3 \
+ queue.3 TAILQ_HEAD.3 \
+ queue.3 TAILQ_HEAD_INITIALIZER.3 \
+ queue.3 TAILQ_INIT.3 \
+ queue.3 TAILQ_INSERT_AFTER.3 \
+ queue.3 TAILQ_INSERT_BEFORE.3 \
+ queue.3 TAILQ_INSERT_HEAD.3 \
+ queue.3 TAILQ_INSERT_TAIL.3 \
+ queue.3 TAILQ_LAST.3 \
+ queue.3 TAILQ_NEXT.3 \
+ queue.3 TAILQ_PREV.3 \
+ queue.3 TAILQ_REMOVE.3
+MLINKS+= stdarg.3 va_arg.3 \
+ stdarg.3 va_copy.3 \
+ stdarg.3 va_end.3 \
+ stdarg.3 varargs.3 \
+ stdarg.3 va_start.3
+MLINKS+= timeradd.3 timerclear.3 \
+ timeradd.3 timercmp.3 \
+ timeradd.3 timerisset.3 \
+ timeradd.3 timersub.3
+MLINKS+= tree.3 RB_EMPTY.3 \
+ tree.3 RB_ENTRY.3 \
+ tree.3 RB_FIND.3 \
+ tree.3 RB_FOREACH.3 \
+ tree.3 RB_FOREACH_REVERSE.3 \
+ tree.3 RB_GENERATE.3 \
+ tree.3 RB_GENERATE_STATIC.3 \
+ tree.3 RB_HEAD.3 \
+ tree.3 RB_INIT.3 \
+ tree.3 RB_INITIALIZER.3 \
+ tree.3 RB_INSERT.3 \
+ tree.3 RB_LEFT.3 \
+ tree.3 RB_MAX.3 \
+ tree.3 RB_MIN.3 \
+ tree.3 RB_NEXT.3 \
+ tree.3 RB_NFIND.3 \
+ tree.3 RB_PARENT.3 \
+ tree.3 RB_PREV.3 \
+ tree.3 RB_PROTOTYPE.3 \
+ tree.3 RB_PROTOTYPE_STATIC.3 \
+ tree.3 RB_REMOVE.3 \
+ tree.3 RB_RIGHT.3 \
+ tree.3 RB_ROOT.3 \
+ tree.3 SPLAY_EMPTY.3 \
+ tree.3 SPLAY_ENTRY.3 \
+ tree.3 SPLAY_FIND.3 \
+ tree.3 SPLAY_FOREACH.3 \
+ tree.3 SPLAY_GENERATE.3 \
+ tree.3 SPLAY_HEAD.3 \
+ tree.3 SPLAY_INIT.3 \
+ tree.3 SPLAY_INITIALIZER.3 \
+ tree.3 SPLAY_INSERT.3 \
+ tree.3 SPLAY_LEFT.3 \
+ tree.3 SPLAY_MAX.3 \
+ tree.3 SPLAY_MIN.3 \
+ tree.3 SPLAY_NEXT.3 \
+ tree.3 SPLAY_PROTOTYPE.3 \
+ tree.3 SPLAY_REMOVE.3 \
+ tree.3 SPLAY_RIGHT.3 \
+ tree.3 SPLAY_ROOT.3
+
+.if ${MK_LIBTHR} != "no"
+PTHREAD_MAN= pthread.3 \
+ pthread_atfork.3 \
+ pthread_attr.3 \
+ pthread_attr_get_np.3 \
+ pthread_attr_setcreatesuspend_np.3 \
+ pthread_barrierattr.3 \
+ pthread_barrier_destroy.3 \
+ pthread_cancel.3 \
+ pthread_cleanup_pop.3 \
+ pthread_cleanup_push.3 \
+ pthread_condattr.3 \
+ pthread_cond_broadcast.3 \
+ pthread_cond_destroy.3 \
+ pthread_cond_init.3 \
+ pthread_cond_signal.3 \
+ pthread_cond_timedwait.3 \
+ pthread_cond_wait.3 \
+ pthread_create.3 \
+ pthread_detach.3 \
+ pthread_equal.3 \
+ pthread_exit.3 \
+ pthread_getconcurrency.3 \
+ pthread_getspecific.3 \
+ pthread_join.3 \
+ pthread_key_create.3 \
+ pthread_key_delete.3 \
+ pthread_kill.3 \
+ pthread_main_np.3 \
+ pthread_multi_np.3 \
+ pthread_mutexattr.3 \
+ pthread_mutexattr_getkind_np.3 \
+ pthread_mutex_destroy.3 \
+ pthread_mutex_init.3 \
+ pthread_mutex_lock.3 \
+ pthread_mutex_timedlock.3 \
+ pthread_mutex_trylock.3 \
+ pthread_mutex_unlock.3 \
+ pthread_once.3 \
+ pthread_resume_all_np.3 \
+ pthread_resume_np.3 \
+ pthread_rwlockattr_destroy.3 \
+ pthread_rwlockattr_getpshared.3 \
+ pthread_rwlockattr_init.3 \
+ pthread_rwlockattr_setpshared.3 \
+ pthread_rwlock_destroy.3 \
+ pthread_rwlock_init.3 \
+ pthread_rwlock_rdlock.3 \
+ pthread_rwlock_timedrdlock.3 \
+ pthread_rwlock_timedwrlock.3 \
+ pthread_rwlock_unlock.3 \
+ pthread_rwlock_wrlock.3 \
+ pthread_schedparam.3 \
+ pthread_self.3 \
+ pthread_set_name_np.3 \
+ pthread_setspecific.3 \
+ pthread_sigmask.3 \
+ pthread_spin_init.3 \
+ pthread_spin_lock.3 \
+ pthread_suspend_all_np.3 \
+ pthread_suspend_np.3 \
+ pthread_switch_add_np.3 \
+ pthread_testcancel.3 \
+ pthread_yield.3
+
+PTHREAD_MLINKS= pthread_attr.3 pthread_attr_destroy.3 \
+ pthread_attr.3 pthread_attr_getdetachstate.3 \
+ pthread_attr.3 pthread_attr_getguardsize.3 \
+ pthread_attr.3 pthread_attr_getinheritsched.3 \
+ pthread_attr.3 pthread_attr_getschedparam.3 \
+ pthread_attr.3 pthread_attr_getschedpolicy.3 \
+ pthread_attr.3 pthread_attr_getscope.3 \
+ pthread_attr.3 pthread_attr_getstack.3 \
+ pthread_attr.3 pthread_attr_getstackaddr.3 \
+ pthread_attr.3 pthread_attr_getstacksize.3 \
+ pthread_attr.3 pthread_attr_init.3 \
+ pthread_attr.3 pthread_attr_setdetachstate.3 \
+ pthread_attr.3 pthread_attr_setguardsize.3 \
+ pthread_attr.3 pthread_attr_setinheritsched.3 \
+ pthread_attr.3 pthread_attr_setschedparam.3 \
+ pthread_attr.3 pthread_attr_setschedpolicy.3 \
+ pthread_attr.3 pthread_attr_setscope.3 \
+ pthread_attr.3 pthread_attr_setstack.3 \
+ pthread_attr.3 pthread_attr_setstackaddr.3 \
+ pthread_attr.3 pthread_attr_setstacksize.3
+PTHREAD_MLINKS+=pthread_barrierattr.3 pthread_barrierattr_destroy.3 \
+ pthread_barrierattr.3 pthread_barrierattr_getpshared.3 \
+ pthread_barrierattr.3 pthread_barrierattr_init.3 \
+ pthread_barrierattr.3 pthread_barrierattr_setpshared.3
+PTHREAD_MLINKS+=pthread_barrier_destroy.3 pthread_barrier_init.3 \
+ pthread_barrier_destroy.3 pthread_barrier_wait.3
+PTHREAD_MLINKS+=pthread_condattr.3 pthread_condattr_destroy.3 \
+ pthread_condattr.3 pthread_condattr_init.3
+PTHREAD_MLINKS+=pthread_getconcurrency.3 pthread_setconcurrency.3
+PTHREAD_MLINKS+=pthread_multi_np.3 pthread_single_np.3
+PTHREAD_MLINKS+=pthread_mutexattr.3 pthread_mutexattr_destroy.3 \
+ pthread_mutexattr.3 pthread_mutexattr_getprioceiling.3 \
+ pthread_mutexattr.3 pthread_mutexattr_getprotocol.3 \
+ pthread_mutexattr.3 pthread_mutexattr_gettype.3 \
+ pthread_mutexattr.3 pthread_mutexattr_init.3 \
+ pthread_mutexattr.3 pthread_mutexattr_setprioceiling.3 \
+ pthread_mutexattr.3 pthread_mutexattr_setprotocol.3 \
+ pthread_mutexattr.3 pthread_mutexattr_settype.3
+PTHREAD_MLINKS+=pthread_mutexattr_getkind_np.3 pthread_mutexattr_setkind_np.3
+PTHREAD_MLINKS+=pthread_rwlock_rdlock.3 pthread_rwlock_tryrdlock.3
+PTHREAD_MLINKS+=pthread_rwlock_wrlock.3 pthread_rwlock_trywrlock.3
+PTHREAD_MLINKS+=pthread_schedparam.3 pthread_getschedparam.3 \
+ pthread_schedparam.3 pthread_setschedparam.3
+PTHREAD_MLINKS+=pthread_spin_init.3 pthread_spin_destroy.3 \
+ pthread_spin_lock.3 pthread_spin_trylock.3 \
+ pthread_spin_lock.3 pthread_spin_unlock.3
+PTHREAD_MLINKS+=pthread_switch_add_np.3 pthread_switch_delete_np.3
+PTHREAD_MLINKS+=pthread_testcancel.3 pthread_setcancelstate.3 \
+ pthread_testcancel.3 pthread_setcanceltype.3
+.endif
+
+.include <bsd.prog.mk>
diff --git a/share/man/man3/assert.3 b/share/man/man3/assert.3
new file mode 100644
index 0000000..8880535
--- /dev/null
+++ b/share/man/man3/assert.3
@@ -0,0 +1,94 @@
+.\" Copyright (c) 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)assert.3 8.1 (Berkeley) 6/9/93
+.\" $FreeBSD$
+.\"
+.Dd January 26, 1999
+.Dt ASSERT 3
+.Os
+.Sh NAME
+.Nm assert
+.Nd expression verification macro
+.Sh SYNOPSIS
+.In assert.h
+.Fn assert expression
+.Sh DESCRIPTION
+The
+.Fn assert
+macro tests the given
+.Ar expression
+and if it is false,
+the calling process is terminated.
+A
+diagnostic message is written to
+.Dv stderr
+and the function
+.Xr abort 3
+is called, effectively terminating the program.
+.Pp
+If
+.Ar expression
+is true,
+the
+.Fn assert
+macro does nothing.
+.Pp
+The
+.Fn assert
+macro
+may be removed at compile time by defining
+.Dv NDEBUG
+as a macro
+(e.g., by using the
+.Xr cc 1
+option
+.Fl D Ns Dv NDEBUG ) .
+.Sh EXAMPLES
+The assertion:
+.Pp
+.Dl "assert(1 == 0);"
+.Pp
+generates a diagnostic message similar to the following:
+.Pp
+.Dl "Assertion failed: (1 == 0), function main, file assertion.c, line 100."
+.Sh SEE ALSO
+.Xr abort 3
+.Sh STANDARDS
+The
+.Fn assert
+macro conforms to
+.St -isoC-99 .
+.Sh HISTORY
+An
+.Nm
+macro appeared in
+.At v6 .
diff --git a/share/man/man3/bitstring.3 b/share/man/man3/bitstring.3
new file mode 100644
index 0000000..ed7b0f3
--- /dev/null
+++ b/share/man/man3/bitstring.3
@@ -0,0 +1,190 @@
+.\" Copyright (c) 1989, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" Paul Vixie.
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)bitstring.3 8.1 (Berkeley) 7/19/93
+.\" $FreeBSD$
+.\"
+.Dd July 19, 1993
+.Dt BITSTRING 3
+.Os
+.Sh NAME
+.Nm bit_alloc ,
+.Nm bit_clear ,
+.Nm bit_decl ,
+.Nm bit_ffs ,
+.Nm bit_nclear ,
+.Nm bit_nset ,
+.Nm bit_set ,
+.Nm bitstr_size ,
+.Nm bit_test
+.Nd bit-string manipulation macros
+.Sh SYNOPSIS
+.In bitstring.h
+.Ft bitstr_t *
+.Fn bit_alloc "int nbits"
+.Ft void
+.Fn bit_decl "bitstr_t *name" "int nbits"
+.Ft void
+.Fn bit_clear "bitstr_t *name" "int bit"
+.Ft void
+.Fn bit_ffc "bitstr_t *name" "int nbits" "int *value"
+.Ft void
+.Fn bit_ffs "bitstr_t *name" "int nbits" "int *value"
+.Ft void
+.Fn bit_nclear "bitstr_t *name" "int start" "int stop"
+.Ft void
+.Fn bit_nset "bitstr_t *name" "int start" "int stop"
+.Ft void
+.Fn bit_set "bitstr_t *name" "int bit"
+.Ft int
+.Fn bitstr_size "int nbits"
+.Ft int
+.Fn bit_test "bitstr_t *name" "int bit"
+.Sh DESCRIPTION
+These macros operate on strings of bits.
+.Pp
+The macro
+.Fn bit_alloc
+returns a pointer of type
+.Dq Fa "bitstr_t *"
+to sufficient space to store
+.Fa nbits
+bits, or
+.Dv NULL
+if no space is available.
+.Pp
+The macro
+.Fn bit_decl
+allocates sufficient space to store
+.Fa nbits
+bits on the stack.
+.Pp
+The macro
+.Fn bitstr_size
+returns the number of elements of type
+.Fa bitstr_t
+necessary to store
+.Fa nbits
+bits.
+This is useful for copying bit strings.
+.Pp
+The macros
+.Fn bit_clear
+and
+.Fn bit_set
+clear or set the zero-based numbered bit
+.Fa bit ,
+in the bit string
+.Ar name .
+.Pp
+The
+.Fn bit_nset
+and
+.Fn bit_nclear
+macros
+set or clear the zero-based numbered bits from
+.Fa start
+through
+.Fa stop
+in the bit string
+.Ar name .
+.Pp
+The
+.Fn bit_test
+macro
+evaluates to non-zero if the zero-based numbered bit
+.Fa bit
+of bit string
+.Fa name
+is set, and zero otherwise.
+.Pp
+The
+.Fn bit_ffs
+macro
+stores in the location referenced by
+.Fa value
+the zero-based number of the first bit set in the array of
+.Fa nbits
+bits referenced by
+.Fa name .
+If no bits are set, the location referenced by
+.Fa value
+is set to \-1.
+.Pp
+The macro
+.Fn bit_ffc
+stores in the location referenced by
+.Fa value
+the zero-based number of the first bit not set in the array of
+.Fa nbits
+bits referenced by
+.Fa name .
+If all bits are set, the location referenced by
+.Fa value
+is set to \-1.
+.Pp
+The arguments to these macros are evaluated only once and may safely
+have side effects.
+.Sh EXAMPLES
+.Bd -literal -offset indent
+#include <limits.h>
+#include <bitstring.h>
+
+\&...
+#define LPR_BUSY_BIT 0
+#define LPR_FORMAT_BIT 1
+#define LPR_DOWNLOAD_BIT 2
+\&...
+#define LPR_AVAILABLE_BIT 9
+#define LPR_MAX_BITS 10
+
+make_lpr_available()
+{
+ bitstr_t bit_decl(bitlist, LPR_MAX_BITS);
+ ...
+ bit_nclear(bitlist, 0, LPR_MAX_BITS - 1);
+ ...
+ if (!bit_test(bitlist, LPR_BUSY_BIT)) {
+ bit_clear(bitlist, LPR_FORMAT_BIT);
+ bit_clear(bitlist, LPR_DOWNLOAD_BIT);
+ bit_set(bitlist, LPR_AVAILABLE_BIT);
+ }
+}
+.Ed
+.Sh SEE ALSO
+.Xr malloc 3
+.Sh HISTORY
+The
+.Nm bitstring
+functions first appeared in
+.Bx 4.4 .
diff --git a/share/man/man3/end.3 b/share/man/man3/end.3
new file mode 100644
index 0000000..42e73fe5
--- /dev/null
+++ b/share/man/man3/end.3
@@ -0,0 +1,83 @@
+.\" Copyright (c) 1986
+.\" 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)end.3 6.4 (Berkeley) 1/24/94
+.\" $FreeBSD$
+.\"
+.Dd August 28, 2000
+.Dt END 3
+.Os
+.Sh NAME
+.Nm end ,
+.Nm etext ,
+.Nm edata
+.Nd end boundaries of image segments
+.Sh SYNOPSIS
+.Vt extern end ;
+.Vt extern etext ;
+.Vt extern edata ;
+.Sh DESCRIPTION
+The globals
+.Va end , etext
+and
+.Va edata
+are program segment end addresses.
+.Pp
+.Va etext
+is the first address after the end of the text segment.
+.Pp
+.Va edata
+is the first address after the end of the initialized data segment.
+.Pp
+.Va end
+is the first address after the end of the data segment
+.Pq Tn BSS
+when the program is loaded.
+Use the
+.Xr sbrk 2
+.\".Fn sbrk 0
+system call with zero as its argument to find the current end of the
+data segment.
+.Sh SEE ALSO
+.Xr sbrk 2 ,
+.Xr malloc 3 ,
+.Xr a.out 5
+.Sh HISTORY
+An
+.Nm
+manual page appeared in
+.At v6 .
+.Sh BUGS
+Traditionally, no variable existed that pointed to the start of the
+text segment because the text segment always started at address zero.
+Although it is no longer valid to make this assumption, no
+variable similar to the ones documented above exists to point to the
+start of the text segment.
diff --git a/share/man/man3/fpgetround.3 b/share/man/man3/fpgetround.3
new file mode 100644
index 0000000..33c94b7
--- /dev/null
+++ b/share/man/man3/fpgetround.3
@@ -0,0 +1,179 @@
+.\" Copyright (c) 1993 Andrew Moore, Talke Studio
+.\" 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 the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)fpgetround.3 1.0 (Berkeley) 9/23/93
+.\" $FreeBSD$
+.\"
+.Dd August 23, 1993
+.Dt FPGETROUND 3
+.Os
+.Sh NAME
+.Nm fpgetround ,
+.Nm fpsetround ,
+.Nm fpsetprec ,
+.Nm fpgetprec ,
+.Nm fpgetmask ,
+.Nm fpsetmask ,
+.Nm fpgetsticky ,
+.Nm fpresetsticky
+.Nd IEEE floating point interface
+.Sh SYNOPSIS
+.In ieeefp.h
+.Pp
+.Bd -literal
+typedef enum {
+ FP_RN, /* round to nearest */
+ FP_RM, /* round down to minus infinity */
+ FP_RP, /* round up to plus infinity */
+ FP_RZ /* truncate */
+} fp_rnd_t;
+.Ed
+.Ft fp_rnd_t
+.Fn fpgetround void
+.Ft fp_rnd_t
+.Fn fpsetround "fp_rnd_t direction"
+.Pp
+.Bd -literal
+typedef enum {
+ FP_PS, /* 24 bit (single-precision) */
+ FP_PRS, /* reserved */
+ FP_PD, /* 53 bit (double-precision) */
+ FP_PE /* 64 bit (extended-precision) */
+} fp_prec_t;
+.Ed
+.Ft fp_prec_t
+.Fn fpgetprec void
+.Ft fp_prec_t
+.Fn fpsetprec "fp_prec_t precision"
+.Pp
+.Bd -literal
+#define fp_except_t int
+#define FP_X_INV 0x01 /* invalid operation */
+#define FP_X_DNML 0x02 /* denormal */
+#define FP_X_DZ 0x04 /* zero divide */
+#define FP_X_OFL 0x08 /* overflow */
+#define FP_X_UFL 0x10 /* underflow */
+#define FP_X_IMP 0x20 /* (im)precision */
+#define FP_X_STK 0x40 /* stack fault */
+.Ed
+.Ft fp_except_t
+.Fn fpgetmask void
+.Ft fp_except_t
+.Fn fpsetmask "fp_except_t mask"
+.Ft fp_except_t
+.Fn fpgetsticky void
+.Ft fp_except_t
+.Fn fpresetsticky "fp_except_t sticky"
+.Sh DESCRIPTION
+The routines described herein are deprecated.
+New code should use the functionality provided by
+.Xr fenv 3 .
+.Pp
+When a floating point exception is detected, the exception sticky flag is
+set and the exception mask is tested.
+If the mask is set, then a trap
+occurs.
+These routines allow both setting the floating point exception
+masks, and resetting the exception sticky flags after an exception is
+detected.
+In addition, they allow setting the floating point rounding mode
+and precision.
+.Pp
+The
+.Fn fpgetround
+function
+returns the current floating point rounding mode.
+.Pp
+The
+.Fn fpsetround
+function
+sets the floating point rounding mode and returns
+the previous mode.
+.Pp
+The
+.Fn fpgetprec
+function
+returns the current floating point precision.
+.Pp
+The
+.Fn fpsetprec
+function
+sets the floating point precision and returns
+the previous precision.
+.Pp
+The
+.Fn fpgetmask
+function
+returns the current floating point exception masks.
+.Pp
+The
+.Fn fpsetmask
+function
+sets the floating point exception masks and returns the
+previous masks.
+.Pp
+The
+.Fn fpgetsticky
+function
+returns the current floating point sticky flags.
+.Pp
+The
+.Fn fpresetsticky
+function
+clears the floating point sticky flags and returns
+the previous flags.
+.Pp
+Sample code which prevents a trap on divide-by-zero:
+.Bd -literal -offset indent
+fpsetmask(~FP_X_DZ);
+a = 1.0;
+b = 0;
+c = a / b;
+fpresetsticky(FP_X_DZ);
+fpsetmask(FP_X_DZ);
+.Ed
+.Sh IMPLEMENTATION NOTES
+The
+.Fn fpgetprec
+and
+.Fn fpsetprec
+functions provide functionality unavailable on many platforms.
+At present, they are implemented only on the i386 and amd64 platforms.
+.Sh SEE ALSO
+.Xr fenv 3 ,
+.Xr isnan 3
+.Sh CAVEATS
+After a floating point exception and before a mask is set, the sticky
+flags must be reset.
+If another exception occurs before the sticky
+flags are reset, then a wrong exception type may be signaled.
+.Sh HISTORY
+These routines are based on SysV/386 routines of the same name.
diff --git a/share/man/man3/intro.3 b/share/man/man3/intro.3
new file mode 100644
index 0000000..5645ad9
--- /dev/null
+++ b/share/man/man3/intro.3
@@ -0,0 +1,168 @@
+.\" Copyright (c) 1980, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)intro.3 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt INTRO 3
+.Os
+.Sh NAME
+.Nm intro
+.Nd introduction to the C libraries
+.Sh DESCRIPTION
+This section provides an overview of the C
+library functions, their error returns and other
+common definitions and concepts.
+Most of these functions are available from the C library,
+.Em libc .
+.\" (see
+.\" .Xr libc 3 ) .
+Other libraries, such as the math library,
+.Em libm ,
+must be indicated at compile time with the
+.Fl l
+option of the compiler.
+.\" .Pp
+.\" A subset of the
+.\" .Xr libc functions
+.\" are available from Fortran;
+.\" they are described separately in
+.\" .Xr intro 3f .
+.Pp
+The various libraries (followed by the loader flag):
+.Bl -tag -width "libc (-lc)"
+.It Xr libc Pq Fl l Ns Ar c
+Standard C library functions.
+.\" (See
+.\" .Xr libc 3 . )
+When using the C compiler
+.Xr cc 1 ,
+it is not necessary
+to supply the loader flag
+.Fl l Ns Ar c
+for these functions.
+There are several `libraries' or groups of functions included inside of
+.Xr libc :
+the standard
+.Tn I/O
+routines,
+database routines,
+bit operators,
+string operators,
+character tests and character operators,
+des encryption routines,
+storage allocation, time functions, signal handling and more.
+.It Xr libcurses Pq Fl l Ns Ar curses Fl l Ns Ar termcap
+Terminal independent screen management routines
+for two dimensional non-bitmap display terminals.
+(See
+.Xr ncurses 3 . )
+.It Xr libcompat Pq Fl l Ns Ar compat
+Functions which are obsolete but are available for compatibility with
+.Bx 4.3 .
+In particular,
+a number of system call interfaces provided in previous releases of
+.Bx
+have been included for source code compatibility.
+Use of these routines should, for the most part, be avoided.
+The manual page entry for each compatibility routine
+indicates the proper interface to use.
+.It Xr libkvm Pq Fl l Ns Ar kvm
+Functions used to access kernel memory are in this library.
+They can be used
+against both a running system and a crash dump.
+(See
+.Xr kvm 3 . )
+.It Xr libl Pq Fl l Ns Ar l
+The library for
+.Xr lex 1 .
+.\" .It Xr libln
+.It Xr libm Pq Fl l Ns Ar m
+The math library,
+.Em libm .
+The math library is loaded as needed by the Pascal compiler,
+.\" .Xr pc 1 ,
+but not by the C compiler which requires the
+.Fl l Ns Ar m
+flag.
+(See
+.Xr math 3 . )
+.It Xr libmp Pq Fl l Ns Ar mp
+.\" .It Xr libom
+.\" Old math library.
+.\" .It Xr libplot Pq Fl l Ns Ar plot
+.\" Device independent plotting functions.
+.\" (See
+.\" .Xr plot 3 . )
+.\" .It Xr libplotf77 Pq Fl l Ns Ar plotf77
+.\" The device independent plotting functions for fortran.
+.\" (See
+.\" .Xr plot 3 . )
+.\" .It Xr libresolv Pq Fl l Ns Ar resolv
+.\" Routines for network address resolution.
+.It Xr libtermcap Pq Fl l Ns Ar termcap
+The terminal independent operation library package.
+(See
+.Xr termcap 3 . )
+.\" .It libvt0.a
+.It Xr liby Pq Fl l Ns Ar y
+The library for
+.Xr yacc 1 .
+.El
+.Sh FILES
+.Bl -tag -width /usr/lib/libm_p.a -compact
+.It Pa /usr/lib/libc.a
+the C library
+.It Pa /usr/lib/libc_p.a
+the C library compiled for profiling
+.It Pa /usr/lib/libm.a
+the math library
+.It Pa /usr/lib/libm_p.a
+the math library compiled for profiling
+.El
+.Sh SEE ALSO
+.\" .Xr libc 3 ,
+.Xr cc 1 ,
+.Xr ld 1 ,
+.Xr nm 1 ,
+.Xr intro 2 ,
+.Xr math 3 ,
+.Xr stdio 3
+.\" .Sh LIST OF FUNCTIONS
+.\" .Bl -column "strncasecmpxxx" "system"
+.\" .Sy Name Description
+.\" .El
+.Sh HISTORY
+An
+.Nm
+manual appeared in
+.At v7 .
diff --git a/share/man/man3/makedev.3 b/share/man/man3/makedev.3
new file mode 100644
index 0000000..b32d69e
--- /dev/null
+++ b/share/man/man3/makedev.3
@@ -0,0 +1,90 @@
+.\" Copyright (c) 2008 Ed Schouten <ed@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$
+.\"
+.Dd September 28, 2008
+.Dt MAKEDEV 3
+.Os
+.Sh NAME
+.Nm makedev ,
+.Nm major ,
+.Nm minor
+.Nd device number conversion
+.Sh SYNOPSIS
+.In sys/types.h
+.Ft dev_t
+.Fn makedev "int major" "int minor"
+.Ft int
+.Fn major "dev_t dev"
+.Ft int
+.Fn minor "dev_t dev"
+.Sh DESCRIPTION
+The
+.Fn makedev
+macro allows a unique device number to be generated based on its
+.Fa major
+and
+.Fa minor
+number.
+The
+.Fn major
+and
+.Fn minor
+macros can be used to obtain the original numbers from the device number
+.Fa dev .
+.Pp
+In previous implementations of
+.Fx
+all block and character devices were uniquely identified by a pair of
+major and minor numbers.
+The major number referred to a certain device class (e.g. disks, TTYs)
+while the minor number identified an instance within the device class.
+Later versions of
+.Fx
+automatically generate a unique device number for each character device
+visible in
+.Pa /dev/ .
+These numbers are not divided in device classes.
+.Pp
+On
+.Fx
+these macros are only used by utilities that need to exchange numbers
+with other operating systems that may use different encodings for
+.Vt dev_t ,
+but also applications that present these numbers to the user in a more
+conventional way.
+.Sh RETURN VALUES
+The
+.Fn major
+macro returns a device major number that has a value between 0 and 255.
+The
+.Fn minor
+macro returns a device minor number whose value can span the complete
+range of an
+.Vt int .
+.Sh SEE ALSO
+.Xr devfs 5 ,
+.Xr devname 3 ,
+.Xr mknod 2
diff --git a/share/man/man3/pthread.3 b/share/man/man3/pthread.3
new file mode 100644
index 0000000..dff3886
--- /dev/null
+++ b/share/man/man3/pthread.3
@@ -0,0 +1,548 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 19, 2007
+.Dt PTHREAD 3
+.Os
+.Sh NAME
+.Nm pthread
+.Nd POSIX thread functions
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Sh DESCRIPTION
+POSIX threads are a set of functions that support applications with
+requirements for multiple flows of control, called
+.Em threads ,
+within a process.
+Multithreading is used to improve the performance of a
+program.
+.Pp
+The POSIX thread functions are summarized in this section in the following
+groups:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+Thread Routines
+.It
+Attribute Object Routines
+.It
+Mutex Routines
+.It
+Condition Variable Routines
+.It
+Read/Write Lock Routines
+.It
+Per-Thread Context Routines
+.It
+Cleanup Routines
+.El
+.Ss Thread Routines
+.Bl -tag -width indent
+.It Xo
+.Ft int
+.Fo pthread_create
+.Fa "pthread_t *thread" "const pthread_attr_t *attr"
+.Fa "void *\*[lp]*start_routine\*[rp]\*[lp]void *\*[rp]" "void *arg"
+.Fc
+.Xc
+Creates a new thread of execution.
+.It Xo
+.Ft int
+.Fn pthread_cancel "pthread_t thread"
+.Xc
+Cancels execution of a thread.
+.It Xo
+.Ft int
+.Fn pthread_detach "pthread_t thread"
+.Xc
+Marks a thread for deletion.
+.It Xo
+.Ft int
+.Fn pthread_equal "pthread_t t1" "pthread_t t2"
+.Xc
+Compares two thread IDs.
+.It Xo
+.Ft void
+.Fn pthread_exit "void *value_ptr"
+.Xc
+Terminates the calling thread.
+.It Xo
+.Ft int
+.Fn pthread_join "pthread_t thread" "void **value_ptr"
+.Xc
+Causes the calling thread to wait for the termination of the specified thread.
+.It Xo
+.Ft int
+.Fn pthread_kill "pthread_t thread" "int sig"
+.Xc
+Delivers a signal to a specified thread.
+.It Xo
+.Ft int
+.Fn pthread_once "pthread_once_t *once_control" "void \*[lp]*init_routine\*[rp]\*[lp]void\*[rp]"
+.Xc
+Calls an initialization routine once.
+.It Xo
+.Ft pthread_t
+.Fn pthread_self void
+.Xc
+Returns the thread ID of the calling thread.
+.It Xo
+.Ft int
+.Fn pthread_setcancelstate "int state" "int *oldstate"
+.Xc
+Sets the current thread's cancelability state.
+.It Xo
+.Ft int
+.Fn pthread_setcanceltype "int type" "int *oldtype"
+.Xc
+Sets the current thread's cancelability type.
+.It Xo
+.Ft void
+.Fn pthread_testcancel void
+.Xc
+Creates a cancellation point in the calling thread.
+.It Xo
+.Ft void
+.Fn pthread_yield void
+.Xc
+Allows the scheduler to run another thread instead of the current one.
+.El
+.Ss Attribute Object Routines
+.Bl -tag -width indent
+.It Xo
+.Ft int
+.Fn pthread_attr_destroy "pthread_attr_t *attr"
+.Xc
+Destroy a thread attributes object.
+.It Xo
+.Ft int
+.Fo pthread_attr_getinheritsched
+.Fa "const pthread_attr_t *attr" "int *inheritsched"
+.Fc
+.Xc
+Get the inherit scheduling attribute from a thread attributes object.
+.It Xo
+.Ft int
+.Fo pthread_attr_getschedparam
+.Fa "const pthread_attr_t *attr" "struct sched_param *param"
+.Fc
+.Xc
+Get the scheduling parameter attribute from a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_getschedpolicy "const pthread_attr_t *attr" "int *policy"
+.Xc
+Get the scheduling policy attribute from a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_getscope "const pthread_attr_t *attr" "int *contentionscope"
+.Xc
+Get the contention scope attribute from a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_getstacksize "const pthread_attr_t *attr" "size_t *stacksize"
+.Xc
+Get the stack size attribute from a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_getstackaddr "const pthread_attr_t *attr" "void **stackaddr"
+.Xc
+Get the stack address attribute from a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_getdetachstate "const pthread_attr_t *attr" "int *detachstate"
+.Xc
+Get the detach state attribute from a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_init "pthread_attr_t *attr"
+.Xc
+Initialize a thread attributes object with default values.
+.It Xo
+.Ft int
+.Fn pthread_attr_setinheritsched "pthread_attr_t *attr" "int inheritsched"
+.Xc
+Set the inherit scheduling attribute in a thread attributes object.
+.It Xo
+.Ft int
+.Fo pthread_attr_setschedparam
+.Fa "pthread_attr_t *attr" "const struct sched_param *param"
+.Fc
+.Xc
+Set the scheduling parameter attribute in a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_setschedpolicy "pthread_attr_t *attr" "int policy"
+.Xc
+Set the scheduling policy attribute in a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_setscope "pthread_attr_t *attr" "int contentionscope"
+.Xc
+Set the contention scope attribute in a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_setstacksize "pthread_attr_t *attr" "size_t stacksize"
+.Xc
+Set the stack size attribute in a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_setstackaddr "pthread_attr_t *attr" "void *stackaddr"
+.Xc
+Set the stack address attribute in a thread attributes object.
+.It Xo
+.Ft int
+.Fn pthread_attr_setdetachstate "pthread_attr_t *attr" "int detachstate"
+.Xc
+Set the detach state in a thread attributes object.
+.El
+.Ss Mutex Routines
+.Bl -tag -width indent
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_destroy "pthread_mutexattr_t *attr"
+.Xc
+Destroy a mutex attributes object.
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_getprioceiling "pthread_mutexattr_t *attr" "int *ceiling"
+.Xc
+Obtain priority ceiling attribute of mutex attribute object.
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_getprotocol "pthread_mutexattr_t *attr" "int *protocol"
+.Xc
+Obtain protocol attribute of mutex attribute object.
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_gettype "pthread_mutexattr_t *attr" "int *type"
+.Xc
+Obtain the mutex type attribute in the specified mutex attributes object.
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_init "pthread_mutexattr_t *attr"
+.Xc
+Initialize a mutex attributes object with default values.
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_setprioceiling "pthread_mutexattr_t *attr" "int ceiling"
+.Xc
+Set priority ceiling attribute of mutex attribute object.
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_setprotocol "pthread_mutexattr_t *attr" "int protocol"
+.Xc
+Set protocol attribute of mutex attribute object.
+.It Xo
+.Ft int
+.Fn pthread_mutexattr_settype "pthread_mutexattr_t *attr" "int type"
+.Xc
+Set the mutex type attribute that is used when a mutex is created.
+.It Xo
+.Ft int
+.Fn pthread_mutex_destroy "pthread_mutex_t *mutex"
+.Xc
+Destroy a mutex.
+.It Xo
+.Ft int
+.Fo pthread_mutex_init
+.Fa "pthread_mutex_t *mutex" "const pthread_mutexattr_t *attr"
+.Fc
+.Xc
+Initialize a mutex with specified attributes.
+.It Xo
+.Ft int
+.Fn pthread_mutex_lock "pthread_mutex_t *mutex"
+.Xc
+Lock a mutex and block until it becomes available.
+.It Xo
+.Ft int
+.Fo pthread_mutex_timedlock
+.Fa "pthread_mutex_t *mutex" "const struct timespec *abstime"
+.Fc
+.Xc
+Lock a mutex and block until it becomes available or until the timeout expires.
+.It Xo
+.Ft int
+.Fn pthread_mutex_trylock "pthread_mutex_t *mutex"
+.Xc
+Try to lock a mutex, but do not block if the mutex is locked by another thread,
+including the current thread.
+.It Xo
+.Ft int
+.Fn pthread_mutex_unlock "pthread_mutex_t *mutex"
+.Xc
+Unlock a mutex.
+.El
+.Ss Condition Variable Routines
+.Bl -tag -width indent
+.It Xo
+.Ft int
+.Fn pthread_condattr_destroy "pthread_condattr_t *attr"
+.Xc
+Destroy a condition variable attributes object.
+.It Xo
+.Ft int
+.Fn pthread_condattr_init "pthread_condattr_t *attr"
+.Xc
+Initialize a condition variable attributes object with default values.
+.It Xo
+.Ft int
+.Fn pthread_cond_broadcast "pthread_cond_t *cond"
+.Xc
+Unblock all threads currently blocked on the specified condition variable.
+.It Xo
+.Ft int
+.Fn pthread_cond_destroy "pthread_cond_t *cond"
+.Xc
+Destroy a condition variable.
+.It Xo
+.Ft int
+.Fn pthread_cond_init "pthread_cond_t *cond" "const pthread_condattr_t *attr"
+.Xc
+Initialize a condition variable with specified attributes.
+.It Xo
+.Ft int
+.Fn pthread_cond_signal "pthread_cond_t *cond"
+.Xc
+Unblock at least one of the threads blocked on the specified condition variable.
+.It Xo
+.Ft int
+.Fo pthread_cond_timedwait
+.Fa "pthread_cond_t *cond" "pthread_mutex_t *mutex"
+.Fa "const struct timespec *abstime"
+.Fc
+.Xc
+Wait no longer than the specified time for a condition
+and lock the specified mutex.
+.It Xo
+.Ft int
+.Fn pthread_cond_wait "pthread_cond_t *" "pthread_mutex_t *mutex"
+.Xc
+Wait for a condition and lock the specified mutex.
+.El
+.Ss Read/Write Lock Routines
+.Bl -tag -width indent
+.It Xo
+.Ft int
+.Fn pthread_rwlock_destroy "pthread_rwlock_t *lock"
+.Xc
+Destroy a read/write lock object.
+.It Xo
+.Ft int
+.Fo pthread_rwlock_init
+.Fa "pthread_rwlock_t *lock" "const pthread_rwlockattr_t *attr"
+.Fc
+.Xc
+Initialize a read/write lock object.
+.It Xo
+.Ft int
+.Fn pthread_rwlock_rdlock "pthread_rwlock_t *lock"
+.Xc
+Lock a read/write lock for reading, blocking until the lock can be
+acquired.
+.It Xo
+.Ft int
+.Fn pthread_rwlock_tryrdlock "pthread_rwlock_t *lock"
+.Xc
+Attempt to lock a read/write lock for reading, without blocking if the
+lock is unavailable.
+.It Xo
+.Ft int
+.Fn pthread_rwlock_trywrlock "pthread_rwlock_t *lock"
+.Xc
+Attempt to lock a read/write lock for writing, without blocking if the
+lock is unavailable.
+.It Xo
+.Ft int
+.Fn pthread_rwlock_unlock "pthread_rwlock_t *lock"
+.Xc
+Unlock a read/write lock.
+.It Xo
+.Ft int
+.Fn pthread_rwlock_wrlock "pthread_rwlock_t *lock"
+.Xc
+Lock a read/write lock for writing, blocking until the lock can be
+acquired.
+.It Xo
+.Ft int
+.Fn pthread_rwlockattr_destroy "pthread_rwlockattr_t *attr"
+.Xc
+Destroy a read/write lock attribute object.
+.It Xo
+.Ft int
+.Fo pthread_rwlockattr_getpshared
+.Fa "const pthread_rwlockattr_t *attr" "int *pshared"
+.Fc
+.Xc
+Retrieve the process shared setting for the read/write lock attribute
+object.
+.It Xo
+.Ft int
+.Fn pthread_rwlockattr_init "pthread_rwlockattr_t *attr"
+.Xc
+Initialize a read/write lock attribute object.
+.It Xo
+.Ft int
+.Fn pthread_rwlockattr_setpshared "pthread_rwlockattr_t *attr" "int pshared"
+.Xc
+Set the process shared setting for the read/write lock attribute object.
+.El
+.Ss Per-Thread Context Routines
+.Bl -tag -width indent
+.It Xo
+.Ft int
+.Fn pthread_key_create "pthread_key_t *key" "void \*[lp]*routine\*[rp]\*[lp]void *\*[rp]"
+.Xc
+Create a thread-specific data key.
+.It Xo
+.Ft int
+.Fn pthread_key_delete "pthread_key_t key"
+.Xc
+Delete a thread-specific data key.
+.It Xo
+.Ft "void *"
+.Fn pthread_getspecific "pthread_key_t key"
+.Xc
+Get the thread-specific value for the specified key.
+.It Xo
+.Ft int
+.Fn pthread_setspecific "pthread_key_t key" "const void *value_ptr"
+.Xc
+Set the thread-specific value for the specified key.
+.El
+.Ss Cleanup Routines
+.Bl -tag -width indent
+.It Xo
+.Ft int
+.Fo pthread_atfork
+.Fa "void \*[lp]*prepare\*[rp]\*[lp]void\*[rp]"
+.Fa "void \*[lp]*parent\*[rp]\*[lp]void\*[rp]"
+.Fa "void \*[lp]*child\*[rp]\*[lp]void\*[rp]"
+.Fc
+.Xc
+Register fork handlers
+.It Xo
+.Ft void
+.Fn pthread_cleanup_pop "int execute"
+.Xc
+Remove the routine at the top of the calling thread's cancellation cleanup
+stack and optionally invoke it.
+.It Xo
+.Ft void
+.Fn pthread_cleanup_push "void \*[lp]*routine\*[rp]\*[lp]void *\*[rp]" "void *routine_arg"
+.Xc
+Push the specified cancellation cleanup handler onto the calling thread's
+cancellation stack.
+.El
+.Sh IMPLEMENTATION NOTES
+The current
+.Fx
+POSIX thread implementation is built in two libraries,
+.Lb libthr ,
+and
+.Lb libkse .
+They contain both thread-safe versions of
+.Lb libc
+functions and the thread functions.
+Threaded applications are linked with one of these libraries.
+.Sh SEE ALSO
+.Xr pthread_atfork 3 ,
+.Xr pthread_cancel 3 ,
+.Xr pthread_cleanup_pop 3 ,
+.Xr pthread_cleanup_push 3 ,
+.Xr pthread_condattr_destroy 3 ,
+.Xr pthread_condattr_init 3 ,
+.Xr pthread_cond_broadcast 3 ,
+.Xr pthread_cond_destroy 3 ,
+.Xr pthread_cond_init 3 ,
+.Xr pthread_cond_signal 3 ,
+.Xr pthread_cond_timedwait 3 ,
+.Xr pthread_cond_wait 3 ,
+.Xr pthread_create 3 ,
+.Xr pthread_detach 3 ,
+.Xr pthread_equal 3 ,
+.Xr pthread_exit 3 ,
+.Xr pthread_getspecific 3 ,
+.Xr pthread_join 3 ,
+.Xr pthread_key_delete 3 ,
+.Xr pthread_kill 3 ,
+.Xr pthread_mutexattr_destroy 3 ,
+.Xr pthread_mutexattr_getprioceiling 3 ,
+.Xr pthread_mutexattr_getprotocol 3 ,
+.Xr pthread_mutexattr_gettype 3 ,
+.Xr pthread_mutexattr_init 3 ,
+.Xr pthread_mutexattr_setprioceiling 3 ,
+.Xr pthread_mutexattr_setprotocol 3 ,
+.Xr pthread_mutexattr_settype 3 ,
+.Xr pthread_mutex_destroy 3 ,
+.Xr pthread_mutex_init 3 ,
+.Xr pthread_mutex_lock 3 ,
+.Xr pthread_mutex_trylock 3 ,
+.Xr pthread_mutex_unlock 3 ,
+.Xr pthread_once 3 ,
+.Xr pthread_rwlockattr_destroy 3 ,
+.Xr pthread_rwlockattr_getpshared 3 ,
+.Xr pthread_rwlockattr_init 3 ,
+.Xr pthread_rwlockattr_setpshared 3 ,
+.Xr pthread_rwlock_destroy 3 ,
+.Xr pthread_rwlock_init 3 ,
+.Xr pthread_rwlock_rdlock 3 ,
+.Xr pthread_rwlock_unlock 3 ,
+.Xr pthread_rwlock_wrlock 3 ,
+.Xr pthread_self 3 ,
+.Xr pthread_setcancelstate 3 ,
+.Xr pthread_setcanceltype 3 ,
+.Xr pthread_setspecific 3 ,
+.Xr pthread_testcancel 3
+.Sh STANDARDS
+The functions with the
+.Nm pthread_
+prefix and not
+.Nm _np
+suffix or
+.Nm pthread_rwlock
+prefix conform to
+.St -p1003.1-96 .
+.Pp
+The functions with the
+.Nm pthread_
+prefix and
+.Nm _np
+suffix are non-portable extensions to POSIX threads.
+.Pp
+The functions with the
+.Nm pthread_rwlock
+prefix are extensions created by The Open Group as part of the
+.St -susv2 .
diff --git a/share/man/man3/pthread_atfork.3 b/share/man/man3/pthread_atfork.3
new file mode 100644
index 0000000..125bb43
--- /dev/null
+++ b/share/man/man3/pthread_atfork.3
@@ -0,0 +1,117 @@
+.\" Copyright (c) 2004 Alex Vasylenko <lxv@omut.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.
+.\"
+.\" Portions of this text are reprinted and reproduced in electronic form
+.\" from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology --
+.\" Portable Operating System Interface (POSIX), The Open Group Base
+.\" Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of
+.\" Electrical and Electronics Engineers, Inc and The Open Group. In the
+.\" event of any discrepancy between this version and the original IEEE and
+.\" The Open Group Standard, the original IEEE and The Open Group Standard is
+.\" the referee document. The original Standard can be obtained online at
+.\" http://www.opengroup.org/unix/online.html.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 21, 2004
+.Dt PTHREAD_ATFORK 3
+.Os
+.Sh NAME
+.Nm pthread_atfork
+.Nd register fork handlers
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fo pthread_atfork
+.Fa "void \*[lp]*prepare\*[rp]\*[lp]void\*[rp]"
+.Fa "void \*[lp]*parent\*[rp]\*[lp]void\*[rp]"
+.Fa "void \*[lp]*child\*[rp]\*[lp]void\*[rp]"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pthread_atfork
+function declares fork handlers to be called before and after
+.Xr fork 2 ,
+in the context of the thread that called
+.Xr fork 2 .
+.Pp
+The handlers registered with
+.Fn pthread_atfork
+are called at the moments in time described below:
+.Bl -tag -width ".Fa prepare"
+.It Fa prepare
+Before
+.Xr fork 2
+processing commences in the parent process.
+If more than one
+.Fa prepare
+handler is registered they will be called in the opposite order
+they were registered.
+.It Fa parent
+After
+.Xr fork 2
+completes in the parent process.
+If more than one
+.Fa parent
+handler is registered they will be called in the same order
+they were registered.
+.It Fa child
+After
+.Xr fork 2
+processing completes in the child process.
+If more than one
+.Fa child
+handler is registered they will be called in the same order
+they were registered.
+.El
+.Pp
+If no handling is desired at one or more of these three points,
+a null pointer may be passed as the corresponding fork handler.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_atfork
+function will return zero.
+Otherwise an error number will be returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_atfork
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+Insufficient table space exists to record the fork handler addresses.
+.El
+.Sh SEE ALSO
+.Xr fork 2 ,
+.Xr pthread 3
+.Sh STANDARDS
+The
+.Fn pthread_atfork
+function is expected to conform to
+.St -p1003.1 .
+.Sh AUTHORS
+This manpage was written by
+.An Alex Vasylenko
+.Aq lxv@omut.org .
diff --git a/share/man/man3/pthread_attr.3 b/share/man/man3/pthread_attr.3
new file mode 100644
index 0000000..3253b17
--- /dev/null
+++ b/share/man/man3/pthread_attr.3
@@ -0,0 +1,238 @@
+.\" Copyright (C) 2000 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.Dd April 28, 2000
+.Dt PTHREAD_ATTR 3
+.Os
+.Sh NAME
+.Nm pthread_attr_init ,
+.Nm pthread_attr_destroy ,
+.Nm pthread_attr_setstack ,
+.Nm pthread_attr_getstack ,
+.Nm pthread_attr_setstacksize ,
+.Nm pthread_attr_getstacksize ,
+.Nm pthread_attr_setguardsize ,
+.Nm pthread_attr_getguardsize ,
+.Nm pthread_attr_setstackaddr ,
+.Nm pthread_attr_getstackaddr ,
+.Nm pthread_attr_setdetachstate ,
+.Nm pthread_attr_getdetachstate ,
+.Nm pthread_attr_setinheritsched ,
+.Nm pthread_attr_getinheritsched ,
+.Nm pthread_attr_setschedparam ,
+.Nm pthread_attr_getschedparam ,
+.Nm pthread_attr_setschedpolicy ,
+.Nm pthread_attr_getschedpolicy ,
+.Nm pthread_attr_setscope ,
+.Nm pthread_attr_getscope
+.Nd thread attribute operations
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_attr_init "pthread_attr_t *attr"
+.Ft int
+.Fn pthread_attr_destroy "pthread_attr_t *attr"
+.Ft int
+.Fn pthread_attr_setstack "pthread_attr_t *attr" " void *stackaddr" "size_t stacksize"
+.Ft int
+.Fn pthread_attr_getstack "const pthread_attr_t * restrict attr" "void ** restrict stackaddr" "size_t * restrict stacksize"
+.Ft int
+.Fn pthread_attr_setstacksize "pthread_attr_t *attr" "size_t stacksize"
+.Ft int
+.Fn pthread_attr_getstacksize "const pthread_attr_t *attr" "size_t *stacksize"
+.Ft int
+.Fn pthread_attr_setguardsize "pthread_attr_t *attr" "size_t guardsize"
+.Ft int
+.Fn pthread_attr_getguardsize "const pthread_attr_t *attr" "size_t *guardsize"
+.Ft int
+.Fn pthread_attr_setstackaddr "pthread_attr_t *attr" "void *stackaddr"
+.Ft int
+.Fn pthread_attr_getstackaddr "const pthread_attr_t *attr" "void **stackaddr"
+.Ft int
+.Fn pthread_attr_setdetachstate "pthread_attr_t *attr" "int detachstate"
+.Ft int
+.Fn pthread_attr_getdetachstate "const pthread_attr_t *attr" "int *detachstate"
+.Ft int
+.Fn pthread_attr_setinheritsched "pthread_attr_t *attr" "int inheritsched"
+.Ft int
+.Fn pthread_attr_getinheritsched "const pthread_attr_t *attr" "int *inheritsched"
+.Ft int
+.Fn pthread_attr_setschedparam "pthread_attr_t *attr" "const struct sched_param *param"
+.Ft int
+.Fn pthread_attr_getschedparam "const pthread_attr_t *attr" "struct sched_param *param"
+.Ft int
+.Fn pthread_attr_setschedpolicy "pthread_attr_t *attr" "int policy"
+.Ft int
+.Fn pthread_attr_getschedpolicy "const pthread_attr_t *attr" "int *policy"
+.Ft int
+.Fn pthread_attr_setscope "pthread_attr_t *attr" "int contentionscope"
+.Ft int
+.Fn pthread_attr_getscope "const pthread_attr_t *attr" "int *contentionscope"
+.Sh DESCRIPTION
+Thread attributes are used to specify parameters to
+.Fn pthread_create .
+One attribute object can be used in multiple calls to
+.Fn pthread_create ,
+with or without modifications between calls.
+.Pp
+The
+.Fn pthread_attr_init
+function initializes
+.Fa attr
+with all the default thread attributes.
+.Pp
+The
+.Fn pthread_attr_destroy
+function destroys
+.Fa attr .
+.Pp
+The
+.Fn pthread_attr_set*
+functions set the attribute that corresponds to each function name.
+.Pp
+The
+.Fn pthread_attr_get*
+functions copy the value of the attribute that corresponds to each function name
+to the location pointed to by the second function parameter.
+.Sh RETURN VALUES
+If successful, these functions return 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_attr_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+Out of memory.
+.El
+.Pp
+The
+.Fn pthread_attr_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.El
+.Pp
+The
+.Fn pthread_attr_setstacksize
+and
+.Fn pthread_attr_setstack
+functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+.Fa stacksize
+is less than
+.Dv PTHREAD_STACK_MIN .
+.El
+.Pp
+The
+.Fn pthread_attr_setdetachstate
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa detachstate .
+.El
+.Pp
+The
+.Fn pthread_attr_setinheritsched
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.El
+.Pp
+The
+.Fn pthread_attr_setschedparam
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.It Bq Er ENOTSUP
+Invalid value for
+.Fa param .
+.El
+.Pp
+The
+.Fn pthread_attr_setschedpolicy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.It Bq Er ENOTSUP
+Invalid or unsupported value for
+.Fa policy .
+.El
+.Pp
+The
+.Fn pthread_attr_setscope
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.It Bq Er ENOTSUP
+Invalid or unsupported value for
+.Fa contentionscope .
+.El
+.Sh SEE ALSO
+.Xr pthread_attr_get_np 3 ,
+.Xr pthread_create 3
+.Sh STANDARDS
+The
+.Fn pthread_attr_init ,
+.Fn pthread_attr_destroy ,
+.Fn pthread_attr_setstacksize ,
+.Fn pthread_attr_getstacksize ,
+.Fn pthread_attr_setstackaddr ,
+.Fn pthread_attr_getstackaddr ,
+.Fn pthread_attr_setdetachstate ,
+and
+.Fn pthread_attr_getdetachstate
+functions conform to
+.St -p1003.1-96
+.Pp
+The
+.Fn pthread_attr_setinheritsched ,
+.Fn pthread_attr_getinheritsched ,
+.Fn pthread_attr_setschedparam ,
+.Fn pthread_attr_getschedparam ,
+.Fn pthread_attr_setschedpolicy ,
+.Fn pthread_attr_getschedpolicy ,
+.Fn pthread_attr_setscope ,
+and
+.Fn pthread_attr_getscope
+functions conform to
+.St -susv2
diff --git a/share/man/man3/pthread_attr_get_np.3 b/share/man/man3/pthread_attr_get_np.3
new file mode 100644
index 0000000..774be8f
--- /dev/null
+++ b/share/man/man3/pthread_attr_get_np.3
@@ -0,0 +1,116 @@
+.\" Copyright (c) 2002,2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd January 31, 2003
+.Dt PTHREAD_ATTR_GET_NP 3
+.Os
+.Sh NAME
+.Nm pthread_attr_get_np
+.Nd get attributes of existent thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_attr_get_np "pthread_t pid" "pthread_attr_t *dst"
+.Sh DESCRIPTION
+The
+.Fn pthread_attr_get_np
+function is used to get existent thread's attributes.
+Most fields of
+.Vt pthread_attr_t
+structure are exact values of attributes provided at thread creation
+time (as parameter to
+.Xr pthread_create 3
+function), except for the stack address.
+.Pp
+Value returned as
+.Fa dst
+is supposed to be used in conjunction with
+.Fn pthread_attr_get*
+functions to retrieve individual values from
+.Vt pthread_attr_t
+structure.
+Parameter
+.Fa dst
+should point to allocated memory area big enough to fit this structure.
+.Pp
+It is HIGHLY RECOMMENDED to use
+.Xr pthread_attr_init 3
+function to allocate attribute storage.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn pthread_attr_get_np
+function will always return a pointer to the thread's real stack address,
+regardless of its value in the original attributes structure.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_attr_get_np
+function returns 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh EXAMPLES
+.Bd -literal
+size_t
+my_thread_stack_size(pthread_t pid)
+{
+ pthread_attr_t attr;
+ size_t size;
+
+ pthread_attr_init(&attr);
+ pthread_attr_get_np(pid, &attr);
+ pthread_attr_getstacksize(&attr, &size);
+ pthread_attr_destroy(&attr);
+ return(size);
+}
+.Ed
+.Sh ERRORS
+The
+.Fn pthread_attr_get_np
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for one of given parameters.
+.It Bq Er ESRC
+No thread could be found corresponding to that specified by the given
+thread ID.
+.El
+.Sh SEE ALSO
+.Xr pthread_attr_destroy 3 ,
+.Xr pthread_attr_getdetachstate 3 ,
+.Xr pthread_attr_getinheritsched 3 ,
+.Xr pthread_attr_getschedparam 3 ,
+.Xr pthread_attr_getschedpolicy 3 ,
+.Xr pthread_attr_getscope 3 ,
+.Xr pthread_attr_getstack 3 ,
+.Xr pthread_attr_getstackaddr 3 ,
+.Xr pthread_attr_getstacksize 3 ,
+.Xr pthread_attr_init 3
+.Sh AUTHORS
+The
+.Fn pthread_attr_get_np
+function and this manual page were written by
+.An Alexey Zelkin
+.Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_attr_setcreatesuspend_np.3 b/share/man/man3/pthread_attr_setcreatesuspend_np.3
new file mode 100644
index 0000000..92c2fe0
--- /dev/null
+++ b/share/man/man3/pthread_attr_setcreatesuspend_np.3
@@ -0,0 +1,72 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_ATTR_SETCREATESUSPEND_NP 3
+.Os
+.Sh NAME
+.Nm pthread_attr_setcreatesuspend_np
+.Nd prepare attribute for creation of suspended thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_attr_setcreatesuspend_np "pthread_attr_t *attr"
+.Sh DESCRIPTION
+The
+.Fn pthread_attr_setcreatesuspend_np
+instructs
+.Xr pthread_create 3
+that the thread created with the
+.Fa attr
+attribute
+should be created and left in a suspended state until explicitly resumed
+by the call to
+.Fn pthread_resume_np
+or
+.Fn pthread_resume_all_np .
+.Sh RETURN VALUES
+.Rv -std pthread_attr_setcreatesuspend_np
+.Sh ERRORS
+The
+.Fn pthread_attr_setcreatesuspend_np
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_attr_destroy 3 ,
+.Xr pthread_attr_init 3 ,
+.Xr pthread_create 3 ,
+.Xr pthread_resume_all_np 3 ,
+.Xr pthread_resume_np 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_barrier_destroy.3 b/share/man/man3/pthread_barrier_destroy.3
new file mode 100644
index 0000000..34be9d0
--- /dev/null
+++ b/share/man/man3/pthread_barrier_destroy.3
@@ -0,0 +1,158 @@
+.\" Copyright (c) 2004 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$
+.\"
+.Dd February 19, 2004
+.Dt PTHREAD_BARRIER 3
+.Os
+.Sh NAME
+.Nm pthread_barrier_destroy , pthread_barrier_init , pthread_barrier_wait
+.Nd "destroy, initialize or wait on a barrier object"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_barrier_destroy "pthread_barrier_t *barrier"
+.Ft int
+.Fn pthread_barrier_init "pthread_barrier_t *barrier" "const pthread_barrierattr_t *attr" "unsigned count"
+.Ft int
+.Fn pthread_barrier_wait "pthread_barrier_t *barrier"
+.Sh DESCRIPTION
+The
+.Fn pthread_barrier_init
+function will initialize
+.Fa barrier
+with attributes specified in
+.Fa attr ,
+or if it is
+.Dv NULL ,
+with default attributes.
+The number of threads that must call
+.Fn pthread_barrier_wait
+before any of the waiting threads can be
+released is specified by
+.Fa count .
+The
+.Fn pthread_barrier_destroy
+function will destroy
+.Fa barrier
+and release any resources that may have been allocated on its behalf.
+.Pp
+The
+.Fn pthread_barrier_wait
+function will synchronize calling threads at
+.Fa barrier .
+The threads will be blocked from
+making further progress until
+a sufficient number of threads calls this function.
+The number of threads that must call it before
+any of them will be released is determined by the
+.Fa count
+argument to
+.Fn pthread_barrier_init .
+Once the threads have been released the barrier will be reset.
+.Sh IMPLEMENTATION NOTES
+In both
+.Lb libkse
+and
+.Lb libthr
+the
+.Dv PTHREAD_BARRIER_SERIAL_THREAD
+return value will
+always be returned by the last thread to reach the barrier.
+.Sh RETURN VALUES
+If successful,
+both
+.Fn pthread_barrier_destroy
+and
+.Fn pthread_barrier_init
+will return zero.
+Otherwise, an error number will be returned to indicate the error.
+If the call to
+.Fn pthread_barrier_wait
+is successful, all but one of the threads will return zero.
+That one thread will return
+.Dv PTHREAD_BARRIER_SERIAL_THREAD .
+Otherwise, an error number will be returned to indicate the error.
+.Pp
+None of these functions will return
+.Er EINTR .
+.Sh ERRORS
+The
+.Fn pthread_barrier_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+An attempt was made to destroy
+.Fa barrier
+while it was in use.
+.El
+.Pp
+The
+.Fn pthread_barrier_destroy
+and
+.Fn pthread_barrier_wait
+functions may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa barrier
+is invalid.
+.El
+.Pp
+The
+.Fn pthread_barrier_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system lacks resources,
+other than memory,
+to initialize
+.Fa barrier .
+.It Bq Er EINVAL
+The
+.Fa count
+argument is less than 1.
+.It Bq Er ENOMEM
+Insufficient memory to initialize
+.Fa barrier .
+.El
+.Sh SEE ALSO
+.Xr pthread_barrierattr 3
+.Sh HISTORY
+The
+.Fn pthread_barrier_destroy ,
+.Fn pthread_barrier_init
+and
+.Fn pthread_barrier_wait
+functions first appeared in
+.Lb libkse
+in
+.Fx 5.2 ,
+and in
+.Lb libthr
+in
+.Fx 5.3 .
diff --git a/share/man/man3/pthread_barrierattr.3 b/share/man/man3/pthread_barrierattr.3
new file mode 100644
index 0000000..e314a0e
--- /dev/null
+++ b/share/man/man3/pthread_barrierattr.3
@@ -0,0 +1,148 @@
+.\" Copyright (c) 2004 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$
+.\"
+.Dd February 19, 2004
+.Dt PTHREAD_BARRIERATTR 3
+.Os
+.Sh NAME
+.Nm pthread_barrierattr_destroy , pthread_barrierattr_getpshared ,
+.Nm pthread_barrierattr_init , pthread_barrierattr_setpshared
+.Nd "manipulate a barrier attribute object"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_barrierattr_destroy "pthread_barrierattr_t *attr"
+.Ft int
+.Fn pthread_barrierattr_getpshared "const pthread_barrierattr_t *attr" "int *pshared"
+.Ft int
+.Fn pthread_barrierattr_init "pthread_barrierattr_t *attr"
+.Ft int
+.Fn pthread_barrierattr_setpshared "pthread_barrierattr_t *attr" "int pshared"
+.Sh DESCRIPTION
+The
+.Fn pthread_barrierattr_init
+function will initialize
+.Fa attr
+with default attributes.
+The
+.Fn pthread_barrierattr_destroy
+function will destroy
+.Fa attr
+and release any resources that may have been allocated on its behalf.
+.Pp
+The
+.Fn pthread_barrierattr_getpshared
+function will put the value of the process-shared attribute from
+.Fa attr
+into the memory area pointed to by
+.Fa pshared .
+The
+.Fn pthread_barrierattr_setpshared
+function will set the process-shared attribute of
+.Fa attr
+to the value specified in
+.Fa pshared .
+The argument
+.Fa pshared
+may have one of the following values:
+.Bl -tag -width ".Dv PTHREAD_PROCESS_PRIVATE"
+.It Dv PTHREAD_PROCESS_PRIVATE
+The barrier object it is attached to may only be accessed by
+threads in the same process as the one that created the object.
+.It Dv PTHREAD_PROCESS_SHARED
+The barrier object it is attached to may be accessed by
+threads in processes other than the one that created the object.
+.El
+.Sh RETURN VALUES
+If successful, all these functions will return zero.
+Otherwise, an error number will be returned to indicate the error.
+.Pp
+None of these functions will return
+.Er EINTR .
+.Sh ERRORS
+The
+.Fn pthread_barrierattr_destroy ,
+.Fn pthread_barrierattr_getpshared
+and
+.Fn pthread_barrierattr_setpshared
+functions may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.El
+.Pp
+The
+.Fn pthread_barrierattr_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+Insufficient memory to initialize the barrier attribute object
+.Fa attr .
+.El
+.Pp
+The
+.Fn pthread_barrierattr_setpshared
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified in
+.Fa pshared
+is not one of the allowed values.
+.El
+.Sh SEE ALSO
+.Xr pthread_barrier_destroy 3 ,
+.Xr pthread_barrier_init 3 ,
+.Xr pthread_barrier_wait 3
+.Sh HISTORY
+The
+.Fn pthread_barrierattr_*
+functions first appeared in
+.Lb libkse
+in
+.Fx 5.2 ,
+and in
+.Lb libthr
+in
+.Fx 5.3 .
+.Sh BUGS
+The implementation of
+barriers
+does not fully conform to
+.St -p1003.2
+because the process-shared attribute is ignored in
+.Lb libthr ,
+and in
+.Lb libkse ;
+if any value other than
+.Dv PTHREAD_PROCESSES_PRIVATE
+is specified in a call to
+.Fn pthread_barrierattr_setpshared ,
+it will return
+.Er EINVAL .
diff --git a/share/man/man3/pthread_cancel.3 b/share/man/man3/pthread_cancel.3
new file mode 100644
index 0000000..7ac5f9d
--- /dev/null
+++ b/share/man/man3/pthread_cancel.3
@@ -0,0 +1,81 @@
+.\" $FreeBSD$
+.Dd January 17, 1999
+.Dt PTHREAD_CANCEL 3
+.Os
+.Sh NAME
+.Nm pthread_cancel
+.Nd cancel execution of a thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_cancel "pthread_t thread"
+.Sh DESCRIPTION
+The
+.Fn pthread_cancel
+function requests that
+.Fa thread
+be canceled.
+The target thread's cancelability state and type determines
+when the cancellation takes effect.
+When the cancellation is acted on,
+the cancellation cleanup handlers for
+.Fa thread
+are called.
+When the last cancellation cleanup handler returns,
+the thread-specific data destructor functions will be called for
+.Fa thread .
+When the last destructor function returns,
+.Fa thread
+will be terminated.
+.Pp
+The cancellation processing in the target thread runs asynchronously with
+respect to the calling thread returning from
+.Fn pthread_cancel .
+.Pp
+A status of
+.Dv PTHREAD_CANCELED
+is made available to any threads joining with the target.
+The symbolic
+constant
+.Dv PTHREAD_CANCELED
+expands to a constant expression of type
+.Ft "(void *)" ,
+whose value matches no pointer to an object in memory nor the value
+.Dv NULL .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_cancel
+functions will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_cancel
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ESRCH
+No thread could be found corresponding to that specified by the given
+thread ID.
+.El
+.Sh SEE ALSO
+.Xr pthread_cleanup_pop 3 ,
+.Xr pthread_cleanup_push 3 ,
+.Xr pthread_exit 3 ,
+.Xr pthread_join 3 ,
+.Xr pthread_setcancelstate 3 ,
+.Xr pthread_setcanceltype 3 ,
+.Xr pthread_testcancel 3
+.Sh STANDARDS
+The
+.Fn pthread_cancel
+function conforms to
+.St -p1003.1-96 .
+.Sh AUTHORS
+This manual page was written by
+.An David Leonard Aq d@openbsd.org
+for the
+.Ox
+implementation of
+.Fn pthread_cancel .
diff --git a/share/man/man3/pthread_cleanup_pop.3 b/share/man/man3/pthread_cleanup_pop.3
new file mode 100644
index 0000000..519e53f
--- /dev/null
+++ b/share/man/man3/pthread_cleanup_pop.3
@@ -0,0 +1,66 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 30, 1998
+.Dt PTHREAD_CLEANUP_POP 3
+.Os
+.Sh NAME
+.Nm pthread_cleanup_pop
+.Nd call the first cleanup routine
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft void
+.Fn pthread_cleanup_pop "int execute"
+.Sh DESCRIPTION
+The
+.Fn pthread_cleanup_pop
+function pops the top cleanup routine off of the current threads cleanup
+routine stack, and, if
+.Fa execute
+is non-zero, it will execute the function.
+If there is no cleanup routine
+then
+.Fn pthread_cleanup_pop
+does nothing.
+.Sh RETURN VALUES
+The
+.Fn pthread_cleanup_pop
+function does not return any value.
+.Sh ERRORS
+None
+.Sh SEE ALSO
+.Xr pthread_cleanup_push 3 ,
+.Xr pthread_exit 3
+.Sh STANDARDS
+The
+.Fn pthread_cleanup_pop
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_cleanup_push.3 b/share/man/man3/pthread_cleanup_push.3
new file mode 100644
index 0000000..2790987
--- /dev/null
+++ b/share/man/man3/pthread_cleanup_push.3
@@ -0,0 +1,68 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 30, 1998
+.Dt PTHREAD_CLEANUP_PUSH 3
+.Os
+.Sh NAME
+.Nm pthread_cleanup_push
+.Nd add a cleanup function for thread exit
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft void
+.Fn pthread_cleanup_push "void \*[lp]*cleanup_routine\*[rp]\*[lp]void *\*[rp]" "void *arg"
+.Sh DESCRIPTION
+The
+.Fn pthread_cleanup_push
+function adds
+.Fa cleanup_routine
+to the top of the stack of cleanup handlers that
+get called when the current thread exits.
+.Pp
+When
+.Fa cleanup_routine
+is called, it is passed
+.Fa arg
+as its only argument.
+.Sh RETURN VALUES
+The
+.Fn pthread_cleanup_push
+function does not return any value.
+.Sh ERRORS
+None
+.Sh SEE ALSO
+.Xr pthread_cleanup_pop 3 ,
+.Xr pthread_exit 3
+.Sh STANDARDS
+The
+.Fn pthread_cleanup_push
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_cond_broadcast.3 b/share/man/man3/pthread_cond_broadcast.3
new file mode 100644
index 0000000..bbd2741
--- /dev/null
+++ b/share/man/man3/pthread_cond_broadcast.3
@@ -0,0 +1,72 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 28, 1998
+.Dt PTHREAD_COND_BROADCAST 3
+.Os
+.Sh NAME
+.Nm pthread_cond_broadcast
+.Nd unblock all threads waiting for a condition variable
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_cond_broadcast "pthread_cond_t *cond"
+.Sh DESCRIPTION
+The
+.Fn pthread_cond_broadcast
+function unblocks all threads waiting for the condition variable
+.Fa cond .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_cond_broadcast
+function will return zero, otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_cond_broadcast
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa cond
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_cond_destroy 3 ,
+.Xr pthread_cond_init 3 ,
+.Xr pthread_cond_signal 3 ,
+.Xr pthread_cond_timedwait 3 ,
+.Xr pthread_cond_wait 3
+.Sh STANDARDS
+The
+.Fn pthread_cond_broadcast
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_cond_destroy.3 b/share/man/man3/pthread_cond_destroy.3
new file mode 100644
index 0000000..ca435ea
--- /dev/null
+++ b/share/man/man3/pthread_cond_destroy.3
@@ -0,0 +1,76 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 28, 1998
+.Dt PTHREAD_COND_DESTROY 3
+.Os
+.Sh NAME
+.Nm pthread_cond_destroy
+.Nd destroy a condition variable
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_cond_destroy "pthread_cond_t *cond"
+.Sh DESCRIPTION
+The
+.Fn pthread_cond_destroy
+function frees the resources allocated by the condition variable
+.Fa cond .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_cond_destroy
+function will return zero, otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_cond_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa cond
+is invalid.
+.It Bq Er EBUSY
+The variable
+.Fa cond
+is locked by another thread.
+.El
+.Sh SEE ALSO
+.Xr pthread_cond_broadcast 3 ,
+.Xr pthread_cond_init 3 ,
+.Xr pthread_cond_signal 3 ,
+.Xr pthread_cond_timedwait 3 ,
+.Xr pthread_cond_wait 3
+.Sh STANDARDS
+The
+.Fn pthread_cond_destroy
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_cond_init.3 b/share/man/man3/pthread_cond_init.3
new file mode 100644
index 0000000..38843a7
--- /dev/null
+++ b/share/man/man3/pthread_cond_init.3
@@ -0,0 +1,83 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 4, 2006
+.Dt PTHREAD_COND_INIT 3
+.Os
+.Sh NAME
+.Nm pthread_cond_init
+.Nd create a condition variable
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_cond_init "pthread_cond_t *cond" "const pthread_condattr_t *attr"
+.Sh DESCRIPTION
+The
+.Fn pthread_cond_init
+function creates a new condition variable, with attributes specified with
+.Fa attr .
+If
+.Fa attr
+is NULL the default attributes are used.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_cond_init
+function will return zero and put the new condition variable id into
+.Fa cond ,
+otherwise an error number will be returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_cond_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.It Bq Er ENOMEM
+The process cannot allocate enough memory to create another condition
+variable.
+.It Bq Er EAGAIN
+The system temporarily lacks the resources to create another condition
+variable.
+.El
+.Sh SEE ALSO
+.Xr pthread_condattr 3 ,
+.Xr pthread_cond_broadcast 3 ,
+.Xr pthread_cond_destroy 3 ,
+.Xr pthread_cond_signal 3 ,
+.Xr pthread_cond_timedwait 3 ,
+.Xr pthread_cond_wait 3
+.Sh STANDARDS
+The
+.Fn pthread_cond_init
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_cond_signal.3 b/share/man/man3/pthread_cond_signal.3
new file mode 100644
index 0000000..8ab801f
--- /dev/null
+++ b/share/man/man3/pthread_cond_signal.3
@@ -0,0 +1,72 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 28, 1998
+.Dt PTHREAD_COND_SIGNAL 3
+.Os
+.Sh NAME
+.Nm pthread_cond_signal
+.Nd unblock a thread waiting for a condition variable
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_cond_signal "pthread_cond_t *cond"
+.Sh DESCRIPTION
+The
+.Fn pthread_cond_signal
+function unblocks one thread waiting for the condition variable
+.Fa cond .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_cond_signal
+function will return zero, otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_cond_signal
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa cond
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_cond_broadcast 3 ,
+.Xr pthread_cond_destroy 3 ,
+.Xr pthread_cond_init 3 ,
+.Xr pthread_cond_timedwait 3 ,
+.Xr pthread_cond_wait 3
+.Sh STANDARDS
+The
+.Fn pthread_cond_signal
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_cond_timedwait.3 b/share/man/man3/pthread_cond_timedwait.3
new file mode 100644
index 0000000..0162569
--- /dev/null
+++ b/share/man/man3/pthread_cond_timedwait.3
@@ -0,0 +1,95 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 28, 1998
+.Dt PTHREAD_COND_TIMEDWAIT 3
+.Os
+.Sh NAME
+.Nm pthread_cond_timedwait
+.Nd "wait on a condition variable for a specific amount of time"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_cond_timedwait "pthread_cond_t *cond" "pthread_mutex_t *mutex" "const struct timespec *abstime"
+.Sh DESCRIPTION
+The
+.Fn pthread_cond_timedwait
+function atomically blocks the current thread waiting on the condition
+variable specified by
+.Fa cond ,
+and releases the mutex specified by
+.Fa mutex .
+The waiting thread unblocks only after another thread calls
+.Xr pthread_cond_signal 3 ,
+or
+.Xr pthread_cond_broadcast 3
+with the same condition variable, or if the system time reaches the
+time specified in
+.Fa abstime ,
+and the current thread reacquires the lock on
+.Fa mutex .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_cond_timedwait
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_cond_timedwait
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa cond ,
+.Fa mutex
+or
+.Fa abstime
+is invalid.
+.It Bq Er ETIMEDOUT
+The system time has reached or exceeded the time specified in
+.Fa abstime .
+.It Bq Er EPERM
+The specified
+.Fa mutex
+was not locked by the calling thread.
+.El
+.Sh SEE ALSO
+.Xr pthread_cond_broadcast 3 ,
+.Xr pthread_cond_destroy 3 ,
+.Xr pthread_cond_init 3 ,
+.Xr pthread_cond_signal 3 ,
+.Xr pthread_cond_wait 3
+.Sh STANDARDS
+The
+.Fn pthread_cond_timedwait
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_cond_wait.3 b/share/man/man3/pthread_cond_wait.3
new file mode 100644
index 0000000..0727603
--- /dev/null
+++ b/share/man/man3/pthread_cond_wait.3
@@ -0,0 +1,89 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 16, 2006
+.Dt PTHREAD_COND_WAIT 3
+.Os
+.Sh NAME
+.Nm pthread_cond_wait
+.Nd wait on a condition variable
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_cond_wait "pthread_cond_t *cond" "pthread_mutex_t *mutex"
+.Sh DESCRIPTION
+The
+.Fn pthread_cond_wait
+function atomically blocks the current thread waiting on the condition
+variable specified by
+.Fa cond ,
+and releases the mutex specified by
+.Fa mutex .
+The waiting thread unblocks only after another thread calls
+.Xr pthread_cond_signal 3 ,
+or
+.Xr pthread_cond_broadcast 3
+with the same condition variable, and the current thread reacquires the lock
+on
+.Fa mutex .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_cond_wait
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_cond_wait
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa cond
+or the value specified by
+.Fa mutex
+is invalid.
+.It Bq Er EPERM
+The specified
+.Fa mutex
+was not locked by the calling thread.
+.El
+.Sh SEE ALSO
+.Xr pthread_cond_broadcast 3 ,
+.Xr pthread_cond_destroy 3 ,
+.Xr pthread_cond_init 3 ,
+.Xr pthread_cond_signal 3 ,
+.Xr pthread_cond_timedwait 3
+.Sh STANDARDS
+The
+.Fn pthread_cond_wait
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_condattr.3 b/share/man/man3/pthread_condattr.3
new file mode 100644
index 0000000..bf28987
--- /dev/null
+++ b/share/man/man3/pthread_condattr.3
@@ -0,0 +1,88 @@
+.\" Copyright (C) 2000 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.Dd April 28, 2000
+.Dt PTHREAD_CONDATTR 3
+.Os
+.Sh NAME
+.Nm pthread_condattr_init ,
+.Nm pthread_condattr_destroy
+.Nd condition attribute operations
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_condattr_init "pthread_condattr_t *attr"
+.Ft int
+.Fn pthread_condattr_destroy "pthread_condattr_t *attr"
+.Sh DESCRIPTION
+Condition attribute objects are used to specify parameters to
+.Fn pthread_cond_init .
+.Fx Ns 's
+implementation of conditions does not support any non-default
+attributes, so these functions are not very useful, though they are required
+to be present by
+.Tn POSIX .
+.Pp
+The
+.Fn pthread_condattr_init
+function initializes a condition attribute object with the default attributes.
+.Pp
+The
+.Fn pthread_condattr_destroy
+function destroys a condition attribute object.
+.Sh RETURN VALUES
+If successful, these functions return 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_condattr_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+Out of memory.
+.El
+.Pp
+The
+.Fn pthread_condattr_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.El
+.Sh SEE ALSO
+.Xr pthread_cond_init 3
+.Sh STANDARDS
+The
+.Fn pthread_condattr_init
+and
+.Fn pthread_condattr_destroy
+functions conform to
+.St -p1003.1-96
diff --git a/share/man/man3/pthread_create.3 b/share/man/man3/pthread_create.3
new file mode 100644
index 0000000..277d157
--- /dev/null
+++ b/share/man/man3/pthread_create.3
@@ -0,0 +1,129 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 4, 2006
+.Dt PTHREAD_CREATE 3
+.Os
+.Sh NAME
+.Nm pthread_create
+.Nd create a new thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_create "pthread_t *thread" "const pthread_attr_t *attr" "void *(*start_routine)(void *)" "void *arg"
+.Sh DESCRIPTION
+The
+.Fn pthread_create
+function is used to create a new thread, with attributes specified by
+.Fa attr ,
+within a process.
+If
+.Fa attr
+is
+.Dv NULL ,
+the default attributes are used.
+If the attributes specified by
+.Fa attr
+are modified later, the thread's attributes are not affected.
+Upon
+successful completion
+.Fn pthread_create
+will store the ID of the created thread in the location specified by
+.Fa thread .
+.Pp
+The thread is created executing
+.Fa start_routine
+with
+.Fa arg
+as its sole argument.
+If the
+.Fa start_routine
+returns, the effect is as if there was an implicit call to
+.Fn pthread_exit
+using the return value of
+.Fa start_routine
+as the exit status.
+Note that the thread in which
+.Fn main
+was originally invoked differs from this.
+When it returns from
+.Fn main ,
+the effect is as if there was an implicit call to
+.Fn exit
+using the return value of
+.Fn main
+as the exit status.
+.Pp
+The signal state of the new thread is initialized as:
+.Bl -bullet -offset indent
+.It
+The signal mask is inherited from the creating thread.
+.It
+The set of signals pending for the new thread is empty.
+.El
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_create
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_create
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system lacked the necessary resources to create another thread, or
+the system-imposed limit on the total number of threads in a process
+[PTHREAD_THREADS_MAX] would be exceeded.
+.It Bq Er EPERM
+The caller does not have appropriate permission to set the required scheduling
+parameters or scheduling policy.
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr fork 2 ,
+.Xr pthread_attr 3 ,
+.Xr pthread_cleanup_pop 3 ,
+.Xr pthread_cleanup_push 3 ,
+.Xr pthread_exit 3 ,
+.Xr pthread_join 3
+.Sh STANDARDS
+The
+.Fn pthread_create
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_detach.3 b/share/man/man3/pthread_detach.3
new file mode 100644
index 0000000..dba4aec
--- /dev/null
+++ b/share/man/man3/pthread_detach.3
@@ -0,0 +1,91 @@
+.\" Copyright (c) 1996-1998 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_DETACH 3
+.Os
+.Sh NAME
+.Nm pthread_detach
+.Nd detach a thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_detach "pthread_t thread"
+.Sh DESCRIPTION
+The
+.Fn pthread_detach
+function is used to indicate to the implementation that storage for the
+thread
+.Fa thread
+can be reclaimed when the thread terminates.
+If
+.Fa thread
+has not terminated,
+.Fn pthread_detach
+will not cause it to terminate.
+The effect of multiple
+.Fn pthread_detach
+calls on the same target thread is unspecified.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_detach
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+Note that the function does not change the value
+of errno as it did for some drafts of the standard.
+These early drafts
+also passed a pointer to pthread_t as the argument.
+Beware!
+.Sh ERRORS
+The
+.Fn pthread_detach
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The implementation has detected that the value specified by
+.Fa thread
+does not refer to a joinable thread.
+.It Bq Er ESRCH
+No thread could be found corresponding to that specified by the given
+thread ID,
+.Fa thread .
+.El
+.Sh SEE ALSO
+.Xr pthread_join 3
+.Sh STANDARDS
+The
+.Fn pthread_detach
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_equal.3 b/share/man/man3/pthread_equal.3
new file mode 100644
index 0000000..1ed8531
--- /dev/null
+++ b/share/man/man3/pthread_equal.3
@@ -0,0 +1,69 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_EQUAL 3
+.Os
+.Sh NAME
+.Nm pthread_equal
+.Nd compare thread IDs
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_equal "pthread_t t1" "pthread_t t2"
+.Sh DESCRIPTION
+The
+.Fn pthread_equal
+function compares the thread IDs
+.Fa t1
+and
+.Fa t2 .
+.Sh RETURN VALUES
+The
+.Fn pthread_equal
+function will return non-zero if the thread IDs
+.Fa t1
+and
+.Fa t2
+correspond to the same thread, otherwise it will return zero.
+.Sh ERRORS
+None.
+.Sh SEE ALSO
+.Xr pthread_create 3 ,
+.Xr pthread_exit 3
+.Sh STANDARDS
+The
+.Fn pthread_equal
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_exit.3 b/share/man/man3/pthread_exit.3
new file mode 100644
index 0000000..d949f19
--- /dev/null
+++ b/share/man/man3/pthread_exit.3
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_EXIT 3
+.Os
+.Sh NAME
+.Nm pthread_exit
+.Nd terminate the calling thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft void
+.Fn pthread_exit "void *value_ptr"
+.Sh DESCRIPTION
+The
+.Fn pthread_exit
+function terminates the calling thread and makes the value
+.Fa value_ptr
+available to any successful join with the terminating thread.
+Any
+cancellation cleanup handlers that have been pushed and are not yet popped
+are popped in the reverse order that they were pushed and then executed.
+After all cancellation handlers have been executed, if the thread has any
+thread-specific data, appropriate destructor functions are called in an
+unspecified order.
+Thread termination does not release any application
+visible process resources, including, but not limited to, mutexes and
+file descriptors, nor does it perform any process level cleanup
+actions, including, but not limited to, calling
+.Fn atexit
+routines that may exist.
+.Pp
+An implicit call to
+.Fn pthread_exit
+is made when a thread other than the thread in which
+.Fn main
+was first invoked returns from the start routine that was used to create
+it.
+The function's return value serves as the thread's exit status.
+.Pp
+The behavior of
+.Fn pthread_exit
+is undefined if called from a cancellation handler or destructor function
+that was invoked as the result of an implicit or explicit call to
+.Fn pthread_exit .
+.Pp
+After a thread has terminated, the result of access to local (auto)
+variables of the thread is undefined.
+Thus, references to local variables
+of the exiting thread should not be used for the
+.Fn pthread_exit
+.Fa value_ptr
+parameter value.
+.Pp
+The process will exit with an exit status of 0 after the last thread has
+been terminated.
+The behavior is as if the implementation called
+.Fn exit
+with a zero argument at thread termination time.
+.Sh RETURN VALUES
+The
+.Fn pthread_exit
+function cannot return to its caller.
+.Sh ERRORS
+None.
+.Sh SEE ALSO
+.Xr _exit 2 ,
+.Xr exit 3 ,
+.Xr pthread_create 3 ,
+.Xr pthread_join 3
+.Sh STANDARDS
+The
+.Fn pthread_exit
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_getconcurrency.3 b/share/man/man3/pthread_getconcurrency.3
new file mode 100644
index 0000000..f442ea2
--- /dev/null
+++ b/share/man/man3/pthread_getconcurrency.3
@@ -0,0 +1,115 @@
+.\" Copyright (c) 2003 Sergey Osokin <osa@FreeBSD.org.ru>
+.\" 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$
+.Dd April 11, 2003
+.Dt PTHREAD_GETCONCURRENCY 3
+.Os
+.Sh NAME
+.Nm pthread_getconcurrency ,
+.Nm pthread_setconcurrency
+.Nd get or set level of concurrency
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_getconcurrency void
+.Ft int
+.Fn pthread_setconcurrency "int new_level"
+.Sh DESCRIPTION
+The
+.Fn pthread_getconcurrency
+function allows an application to inform the threads implementation
+of its desired concurrency level,
+.Fa new_level .
+The actual level of concurrency provided by the implementation
+as a result of this function call is unspecified.
+If
+.Fa new_level
+is zero, it causes the implementation to maintain the concurrency
+level at its discretion as if
+.Fn pthread_setconcurrency
+was never called.
+The
+.Fn pthread_getconcurrency
+function returns the value set by a previous call to the
+.Fn pthread_setconcurrency
+function.
+If the
+.Fn pthread_setconcurrency
+function was not previously called, this function returns zero to
+indicate that the implementation is maintaining the concurrency
+level.
+When an application calls
+.Fn pthread_setconcurrency ,
+it is informing the implementation of its desired concurrency
+level.
+The implementation uses this as a hint, not a requirement.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_setconcurrency
+function returns zero.
+Otherwise, an error number is returned
+to indicate the error.
+The
+.Fn pthread_getconcurrency
+function always returns the concurrency level set by a previous
+call to
+.Fn pthread_setconcurrency .
+If the
+.Fn pthread_setconcurrency
+function has never been called,
+.Fn pthread_getconcurrency
+returns zero.
+.Sh ERRORS
+The
+.Fn pthread_setconcurrency
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa new_level
+is negative.
+.It Bq Er EAGAIN
+The value specified by
+.Fa new_level
+would cause a system resource to be exceeded.
+.El
+.Sh APPLICATION USAGE
+Use of these functions changes the state of the underlying
+concurrency upon which the application depends.
+Library developers are advised to not use the
+.Fn pthread_getconcurrency
+and
+.Fn pthread_setconcurrency
+functions since their use may conflict with an application's
+use of these functions.
+.Sh STANDARDS
+The
+.Fn pthread_getconcurrency
+and
+.Fn pthread_setconcurrency
+functions conform to
+.St -susv2 .
diff --git a/share/man/man3/pthread_getspecific.3 b/share/man/man3/pthread_getspecific.3
new file mode 100644
index 0000000..d59003f
--- /dev/null
+++ b/share/man/man3/pthread_getspecific.3
@@ -0,0 +1,85 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_GETSPECIFIC 3
+.Os
+.Sh NAME
+.Nm pthread_getspecific
+.Nd get a thread-specific data value
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft void *
+.Fn pthread_getspecific "pthread_key_t key"
+.Sh DESCRIPTION
+The
+.Fn pthread_getspecific
+function returns the value currently bound to the specified
+.Fa key
+on behalf of the calling thread.
+.Pp
+The effect of calling
+.Fn pthread_getspecific
+with a
+.Fa key
+value not obtained from
+.Fn pthread_key_create
+or after
+.Fa key
+has been deleted with
+.Fn pthread_key_delete
+is undefined.
+.Pp
+The
+.Fn pthread_getspecific
+function may be called from a thread-specific data destructor function.
+.Sh RETURN VALUES
+The
+.Fn pthread_getspecific
+function will return the thread-specific data value associated with the given
+.Fa key .
+If no thread-specific data value is associated with
+.Fa key ,
+then the value NULL is returned.
+.Sh ERRORS
+None.
+.Sh SEE ALSO
+.Xr pthread_key_create 3 ,
+.Xr pthread_key_delete 3 ,
+.Xr pthread_setspecific 3
+.Sh STANDARDS
+The
+.Fn pthread_getspecific
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_join.3 b/share/man/man3/pthread_join.3
new file mode 100644
index 0000000..1aa5932
--- /dev/null
+++ b/share/man/man3/pthread_join.3
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1996-1998 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_JOIN 3
+.Os
+.Sh NAME
+.Nm pthread_join
+.Nd wait for thread termination
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_join "pthread_t thread" "void **value_ptr"
+.Sh DESCRIPTION
+The
+.Fn pthread_join
+function suspends execution of the calling thread until the target
+.Fa thread
+terminates unless the target
+.Fa thread
+has already terminated.
+.Pp
+On return from a successful
+.Fn pthread_join
+call with a non-NULL
+.Fa value_ptr
+argument, the value passed to
+.Fn pthread_exit
+by the terminating thread is stored in the location referenced by
+.Fa value_ptr .
+When a
+.Fn pthread_join
+returns successfully, the target thread has been terminated.
+The results
+of multiple simultaneous calls to
+.Fn pthread_join
+specifying the same target thread are undefined.
+If the thread calling
+.Fn pthread_join
+is cancelled, then the target thread is not detached.
+.Pp
+A thread that has exited but remains unjoined counts against
+[_POSIX_THREAD_THREADS_MAX].
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_join
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_join
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The implementation has detected that the value specified by
+.Fa thread
+does not refer to a joinable thread.
+.It Bq Er ESRCH
+No thread could be found corresponding to that specified by the given
+thread ID,
+.Fa thread .
+.It Bq Er EDEADLK
+A deadlock was detected or the value of
+.Fa thread
+specifies the calling thread.
+.El
+.Sh SEE ALSO
+.Xr wait 2 ,
+.Xr pthread_create 3
+.Sh STANDARDS
+The
+.Fn pthread_join
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_key_create.3 b/share/man/man3/pthread_key_create.3
new file mode 100644
index 0000000..a818e1a
--- /dev/null
+++ b/share/man/man3/pthread_key_create.3
@@ -0,0 +1,109 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_KEY_CREATE 3
+.Os
+.Sh NAME
+.Nm pthread_key_create
+.Nd thread-specific data key creation
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_key_create "pthread_key_t *key" "void (*destructor)(void *)"
+.Sh DESCRIPTION
+The
+.Fn pthread_key_create
+function creates a thread-specific data key visible to all threads in the
+process.
+Key values provided by
+.Fn pthread_key_create
+are opaque objects used to locate thread-specific data.
+Although the same
+key value may be used by different threads, the values bound to the key
+by
+.Fn pthread_setspecific
+are maintained on a per-thread basis and persist for the life of the calling
+thread.
+.Pp
+Upon key creation, the value NULL is associated with the new key in all
+active threads.
+Upon thread creation, the value NULL is associated with all
+defined keys in the new thread.
+.Pp
+An optional destructor function may be associated with each key value.
+At
+thread exit, if a key value has a non-NULL destructor pointer, and the
+thread has a non-NULL value associated with the key, the function pointed
+to is called with the current associated value as its sole argument.
+The
+order of destructor calls is unspecified if more than one destructor exists
+for a thread when it exits.
+.Pp
+If, after all the destructors have been called for all non-NULL values
+with associated destructors, there are still some non-NULL values with
+associated destructors, then the process is repeated.
+If, after at least
+[PTHREAD_DESTRUCTOR_ITERATIONS] iterations of destructor calls for
+outstanding non-NULL values, there are still some non-NULL values with
+associated destructors, the implementation stops calling destructors.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_key_create
+function will store the newly created key value at the location specified by
+.Fa key
+and returns zero.
+Otherwise an error number will be returned to indicate
+the error.
+.Sh ERRORS
+The
+.Fn pthread_key_create
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system lacked the necessary resources to create another thread-specific
+data key, or the system-imposed limit on the total number of keys per process
+[PTHREAD_KEYS_MAX] would be exceeded.
+.It Bq Er ENOMEM
+Insufficient memory exists to create the key.
+.El
+.Sh SEE ALSO
+.Xr pthread_getspecific 3 ,
+.Xr pthread_key_delete 3 ,
+.Xr pthread_setspecific 3
+.Sh STANDARDS
+The
+.Fn pthread_key_create
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_key_delete.3 b/share/man/man3/pthread_key_delete.3
new file mode 100644
index 0000000..c7861af
--- /dev/null
+++ b/share/man/man3/pthread_key_delete.3
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_KEY_DELETE 3
+.Os
+.Sh NAME
+.Nm pthread_key_delete
+.Nd delete a thread-specific data key
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_key_delete "pthread_key_t key"
+.Sh DESCRIPTION
+The
+.Fn pthread_key_delete
+function deletes a thread-specific data key previously returned by
+.Fn pthread_key_create .
+The thread-specific data values associated with
+.Fa key
+need not be NULL at the time that
+.Fn pthread_key_delete
+is called.
+It is the responsibility of the application to free any
+application storage or perform any cleanup actions for data structures
+related to the deleted key or associated thread-specific data in any threads;
+this cleanup can be done either before or after
+.Fn pthread_key_delete
+is called.
+Any attempt to use
+.Fa key
+following the call to
+.Fn pthread_key_delete
+results in undefined behavior.
+.Pp
+The
+.Fn pthread_key_delete
+function is callable from within destructor functions.
+Destructor functions
+are not invoked by
+.Fn pthread_key_delete .
+Any destructor function that may have been associated with
+.Fa key
+will no longer be called upon thread exit.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_key_delete
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_key_delete
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa key
+value is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_getspecific 3 ,
+.Xr pthread_key_create 3 ,
+.Xr pthread_setspecific 3
+.Sh STANDARDS
+The
+.Fn pthread_key_delete
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_kill.3 b/share/man/man3/pthread_kill.3
new file mode 100644
index 0000000..1ef879a
--- /dev/null
+++ b/share/man/man3/pthread_kill.3
@@ -0,0 +1,77 @@
+.\" Copyright (C) 2000 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.Dd April 27, 2000
+.Dt PTHREAD_KILL 3
+.Os
+.Sh NAME
+.Nm pthread_kill
+.Nd send a signal to a specified thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.In signal.h
+.Ft int
+.Fn pthread_kill "pthread_t thread" "int sig"
+.Sh DESCRIPTION
+The
+.Fn pthread_kill
+function sends a signal, specified by
+.Fa sig ,
+to a thread, specified by
+.Fa thread .
+If
+.Fa sig
+is 0, error checking is performed, but no signal is actually sent.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_kill
+returns 0.
+Otherwise, an error number is returned.
+.Sh ERRORS
+The
+.Fn pthread_kill
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ESRCH
+.Fa thread
+is an invalid thread ID.
+.It Bq Er EINVAL
+.Fa sig
+is an invalid or unsupported signal number.
+.El
+.Sh SEE ALSO
+.Xr kill 2 ,
+.Xr pthread_self 3 ,
+.Xr raise 3
+.Sh STANDARDS
+The
+.Fn pthread_kill
+function conforms to
+.St -p1003.1-96
diff --git a/share/man/man3/pthread_main_np.3 b/share/man/man3/pthread_main_np.3
new file mode 100644
index 0000000..43d7292
--- /dev/null
+++ b/share/man/man3/pthread_main_np.3
@@ -0,0 +1,60 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_MAIN_NP 3
+.Os
+.Sh NAME
+.Nm pthread_main_np
+.Nd identify the initial thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_main_np void
+.Sh DESCRIPTION
+The
+.Fn pthread_main_np
+function
+is used in userland threads environment to identify the initial thread.
+Its semantics is similar to the Solaris's
+.Fn thr_main
+function.
+.Sh RETURN VALUES
+The
+.Fn pthread_main_np
+function returns
+1 if the calling thread is the initial thread,
+0 if the calling thread is not the initial thread,
+and \-1 if the thread's initialization has not yet completed.
+.Sh SEE ALSO
+.Xr pthread_create 3 ,
+.Xr pthread_equal 3 ,
+.Xr pthread_self 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_multi_np.3 b/share/man/man3/pthread_multi_np.3
new file mode 100644
index 0000000..9a42a99
--- /dev/null
+++ b/share/man/man3/pthread_multi_np.3
@@ -0,0 +1,66 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_MULTI_NP 3
+.Os
+.Sh NAME
+.Nm pthread_multi_np ,
+.Nm pthread_single_np
+.Nd "switch between multi- and single-threaded scheduling modes"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_multi_np void
+.Ft int
+.Fn pthread_single_np void
+.Sh DESCRIPTION
+The
+.Fn pthread_single_np
+function switches the process to a single-threaded mode, i.e.,
+suspends all threads except the current.
+The semantics of this function is similar to
+.Xr pthread_suspend_all_np 3 .
+.Pp
+The
+.Fn pthread_multi_np
+function switches the process to a multi-threaded mode.
+The semantics of this function is similar to
+.Xr pthread_resume_all_np 3 .
+.Sh RETURN VALUES
+The
+.Fn pthread_multi_np
+and
+.Nm pthread_single_np
+functions always return 0.
+.Sh SEE ALSO
+.Xr pthread_resume_all_np 3 ,
+.Xr pthread_suspend_all_np 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_mutex_destroy.3 b/share/man/man3/pthread_mutex_destroy.3
new file mode 100644
index 0000000..d6c4bcd
--- /dev/null
+++ b/share/man/man3/pthread_mutex_destroy.3
@@ -0,0 +1,74 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 29, 1998
+.Dt PTHREAD_MUTEX_DESTROY 3
+.Os
+.Sh NAME
+.Nm pthread_mutex_destroy
+.Nd free resources allocated for a mutex
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_mutex_destroy "pthread_mutex_t *mutex"
+.Sh DESCRIPTION
+The
+.Fn pthread_mutex_destroy
+function frees the resources allocated for
+.Fa mutex .
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_mutex_destroy
+will return zero, otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_mutex_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa mutex
+is invalid.
+.It Bq Er EBUSY
+.Fa Mutex
+is locked by another thread.
+.El
+.Sh SEE ALSO
+.Xr pthread_mutex_init 3 ,
+.Xr pthread_mutex_lock 3 ,
+.Xr pthread_mutex_trylock 3 ,
+.Xr pthread_mutex_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_mutex_destroy
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_mutex_init.3 b/share/man/man3/pthread_mutex_init.3
new file mode 100644
index 0000000..10a026b
--- /dev/null
+++ b/share/man/man3/pthread_mutex_init.3
@@ -0,0 +1,78 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 4, 2006
+.Dt PTHREAD_MUTEX_INIT 3
+.Os
+.Sh NAME
+.Nm pthread_mutex_init
+.Nd create a mutex
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_mutex_init "pthread_mutex_t *mutex" "const pthread_mutexattr_t *attr"
+.Sh DESCRIPTION
+The
+.Fn pthread_mutex_init
+function creates a new mutex, with attributes specified with
+.Fa attr .
+If
+.Fa attr
+is NULL the default attributes are used.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_mutex_init
+will return zero and put the new mutex id into
+.Fa mutex ,
+otherwise an error number will be returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_mutex_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.It Bq Er ENOMEM
+The process cannot allocate enough memory to create another mutex.
+.El
+.Sh SEE ALSO
+.Xr pthread_mutexattr 3 ,
+.Xr pthread_mutex_destroy 3 ,
+.Xr pthread_mutex_lock 3 ,
+.Xr pthread_mutex_trylock 3 ,
+.Xr pthread_mutex_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_mutex_init
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_mutex_lock.3 b/share/man/man3/pthread_mutex_lock.3
new file mode 100644
index 0000000..8479a69
--- /dev/null
+++ b/share/man/man3/pthread_mutex_lock.3
@@ -0,0 +1,76 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 31, 2006
+.Dt PTHREAD_MUTEX_LOCK 3
+.Os
+.Sh NAME
+.Nm pthread_mutex_lock
+.Nd lock a mutex
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_mutex_lock "pthread_mutex_t *mutex"
+.Sh DESCRIPTION
+The
+.Fn pthread_mutex_lock
+function locks
+.Fa mutex .
+If the mutex is already locked, the calling thread will block until the
+mutex becomes available.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_mutex_lock
+will return zero, otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_mutex_lock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa mutex
+is invalid.
+.It Bq Er EDEADLK
+A deadlock would occur if the thread blocked waiting for
+.Fa mutex .
+.El
+.Sh SEE ALSO
+.Xr pthread_mutex_destroy 3 ,
+.Xr pthread_mutex_init 3 ,
+.Xr pthread_mutex_trylock 3 ,
+.Xr pthread_mutex_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_mutex_lock
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_mutex_timedlock.3 b/share/man/man3/pthread_mutex_timedlock.3
new file mode 100644
index 0000000..abc7e2a
--- /dev/null
+++ b/share/man/man3/pthread_mutex_timedlock.3
@@ -0,0 +1,103 @@
+.\" Copyright (c) 2003 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$
+.\"
+.Dd December 30, 2003
+.Dt PTHREAD_MUTEX_TIMEDLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_mutex_timedlock
+.Nd lock a mutex without blocking indefinitely
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.In time.h
+.Ft int
+.Fn pthread_mutex_timedlock "pthread_mutex_t *mutex" "const struct timespec *abs_timeout"
+.Sh DESCRIPTION
+The
+.Fn pthread_mutex_timedlock
+function will lock
+.Fa mutex .
+If it is already locked the calling thread will block until
+the mutex becomes available or
+the timeout,
+specified by abs_timeout,
+expires.
+The time of the timeout is an absolute time and
+is not relative to the current time.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_mutex_timedlock
+will return zero, otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_mutex_timedlock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa mutex
+was created with the protocol attribute having the
+value PTHREAD_PRIO_PROTECT and
+the calling thread's priority is higher than the
+mutex's current priority ceiling.
+.It Bq Er EINVAL
+The process or thread would have blocked, and
+.Fa abs_timeout
+specified a nanosecond value less than zero or
+greater than or equal to 1 billion.
+.It Bq Er EINVAL
+The
+.Fa mutex
+parameter is invalid.
+.It Bq Er ETIMEDOUT
+The
+.Fa mutex
+could not be locked before the timeout expired.
+.It Bq Er EAGAIN
+The
+.Fa mutex
+could not be acquired because the
+maximum number of recursive locks for the
+.Fa mutex
+has been exceeded.
+.It Bq Er EDEADLK
+The current thread already owns the
+.Fa mutex .
+.El
+.Sh SEE ALSO
+.Xr pthread_mutex_destroy 3 ,
+.Xr pthread_mutex_init 3 ,
+.Xr pthread_mutex_lock 3 ,
+.Xr pthread_mutex_trylock 3 ,
+.Xr pthread_mutex_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_mutex_timedlock
+function is expected to conform to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_mutex_trylock.3 b/share/man/man3/pthread_mutex_trylock.3
new file mode 100644
index 0000000..049006f
--- /dev/null
+++ b/share/man/man3/pthread_mutex_trylock.3
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 30, 1998
+.Dt PTHREAD_MUTEX_TRYLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_mutex_trylock
+.Nd attempt to lock a mutex without blocking
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_mutex_trylock "pthread_mutex_t *mutex"
+.Sh DESCRIPTION
+The
+.Fn pthread_mutex_trylock
+function locks
+.Fa mutex .
+If the mutex is already locked,
+.Fn pthread_mutex_trylock
+will not block waiting for the mutex, but will return an error condition.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_mutex_trylock
+will return zero, otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_mutex_trylock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa mutex
+is invalid.
+.It Bq Er EBUSY
+.Fa Mutex
+is already locked.
+.El
+.Sh SEE ALSO
+.Xr pthread_mutex_destroy 3 ,
+.Xr pthread_mutex_init 3 ,
+.Xr pthread_mutex_lock 3 ,
+.Xr pthread_mutex_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_mutex_trylock
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_mutex_unlock.3 b/share/man/man3/pthread_mutex_unlock.3
new file mode 100644
index 0000000..77784e1
--- /dev/null
+++ b/share/man/man3/pthread_mutex_unlock.3
@@ -0,0 +1,76 @@
+.\" Copyright (c) 1997 Brian Cully <shmit@kublai.com>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 30, 1998
+.Dt PTHREAD_MUTEX_UNLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_mutex_unlock
+.Nd unlock a mutex
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_mutex_unlock "pthread_mutex_t *mutex"
+.Sh DESCRIPTION
+If the current thread holds the lock on
+.Fa mutex ,
+then the
+.Fn pthread_mutex_unlock
+function unlocks
+.Fa mutex .
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_mutex_unlock
+will return zero, otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_mutex_unlock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa mutex
+is invalid.
+.It Bq Er EPERM
+The current thread does not hold a lock on
+.Fa mutex .
+.El
+.Sh SEE ALSO
+.Xr pthread_mutex_destroy 3 ,
+.Xr pthread_mutex_init 3 ,
+.Xr pthread_mutex_lock 3 ,
+.Xr pthread_mutex_trylock 3
+.Sh STANDARDS
+The
+.Fn pthread_mutex_unlock
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_mutexattr.3 b/share/man/man3/pthread_mutexattr.3
new file mode 100644
index 0000000..f976026
--- /dev/null
+++ b/share/man/man3/pthread_mutexattr.3
@@ -0,0 +1,187 @@
+.\" Copyright (C) 2000 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.Dd May 1, 2000
+.Dt PTHREAD_MUTEXATTR 3
+.Os
+.Sh NAME
+.Nm pthread_mutexattr_init ,
+.Nm pthread_mutexattr_destroy ,
+.Nm pthread_mutexattr_setprioceiling ,
+.Nm pthread_mutexattr_getprioceiling ,
+.Nm pthread_mutexattr_setprotocol ,
+.Nm pthread_mutexattr_getprotocol ,
+.Nm pthread_mutexattr_settype ,
+.Nm pthread_mutexattr_gettype
+.Nd mutex attribute operations
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_mutexattr_init "pthread_mutexattr_t *attr"
+.Ft int
+.Fn pthread_mutexattr_destroy "pthread_mutexattr_t *attr"
+.Ft int
+.Fn pthread_mutexattr_setprioceiling "pthread_mutexattr_t *attr" "int prioceiling"
+.Ft int
+.Fn pthread_mutexattr_getprioceiling "pthread_mutexattr_t *attr" "int *prioceiling"
+.Ft int
+.Fn pthread_mutexattr_setprotocol "pthread_mutexattr_t *attr" "int protocol"
+.Ft int
+.Fn pthread_mutexattr_getprotocol "pthread_mutexattr_t *attr" "int *protocol"
+.Ft int
+.Fn pthread_mutexattr_settype "pthread_mutexattr_t *attr" "int type"
+.Ft int
+.Fn pthread_mutexattr_gettype "pthread_mutexattr_t *attr" "int *type"
+.Sh DESCRIPTION
+Mutex attributes are used to specify parameters to
+.Fn pthread_mutex_init .
+One attribute object can be used in multiple calls to
+.Fn pthread_mutex_init ,
+with or without modifications between calls.
+.Pp
+The
+.Fn pthread_mutexattr_init
+function initializes
+.Fa attr
+with all the default mutex attributes.
+.Pp
+The
+.Fn pthread_mutexattr_destroy
+function destroys
+.Fa attr .
+.Pp
+The
+.Fn pthread_mutexattr_set*
+functions set the attribute that corresponds to each function name.
+.Pp
+The
+.Fn pthread_mutexattr_get*
+functions copy the value of the attribute that corresponds to each function name
+to the location pointed to by the second function parameter.
+.Sh RETURN VALUES
+If successful, these functions return 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_mutexattr_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+Out of memory.
+.El
+.Pp
+The
+.Fn pthread_mutexattr_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.El
+.Pp
+The
+.Fn pthread_mutexattr_setprioceiling
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr ,
+or invalid value for
+.Fa prioceiling .
+.El
+.Pp
+The
+.Fn pthread_mutexattr_getprioceiling
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.El
+.Pp
+The
+.Fn pthread_mutexattr_setprotocol
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr ,
+or invalid value for
+.Fa protocol .
+.El
+.Pp
+The
+.Fn pthread_mutexattr_getprotocol
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.El
+.Pp
+The
+.Fn pthread_mutexattr_settype
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr ,
+or invalid value for
+.Fa type .
+.El
+.Pp
+The
+.Fn pthread_mutexattr_gettype
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa attr .
+.El
+.Sh SEE ALSO
+.Xr pthread_mutex_init 3
+.Sh STANDARDS
+The
+.Fn pthread_mutexattr_init
+and
+.Fn pthread_mutexattr_destroy
+functions conform to
+.St -p1003.1-96
+.Pp
+The
+.Fn pthread_mutexattr_setprioceiling ,
+.Fn pthread_mutexattr_getprioceiling ,
+.Fn pthread_mutexattr_setprotocol ,
+.Fn pthread_mutexattr_getprotocol ,
+.Fn pthread_mutexattr_settype ,
+and
+.Fn pthread_mutexattr_gettype
+functions conform to
+.St -susv2
diff --git a/share/man/man3/pthread_mutexattr_getkind_np.3 b/share/man/man3/pthread_mutexattr_getkind_np.3
new file mode 100644
index 0000000..548045b
--- /dev/null
+++ b/share/man/man3/pthread_mutexattr_getkind_np.3
@@ -0,0 +1,81 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_MUTEXATTR_GETKIND_NP 3
+.Os
+.Sh NAME
+.Nm pthread_mutexattr_getkind_np ,
+.Nm pthread_mutexattr_setkind_np
+.Nd mutex attribute operations (legacy)
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_mutexattr_getkind_np "pthread_mutexattr_t attr"
+.Ft int
+.Fn pthread_mutexattr_setkind_np "pthread_mutexattr_t *attr" "int kind"
+.Sh DESCRIPTION
+.Bf -symbolic
+These functions are deprecated and non-portable implementation of
+the mutex type manipulation.
+.Ef
+.Pp
+It is recommended to use the
+.Xr pthread_mutexattr_gettype 3
+and
+.Xr pthread_mutexattr_settype 3
+functions instead.
+.Sh RETURN VALUES
+The
+.Fn pthread_mutexattr_getkind_np
+function returns a positive value representing the
+.Dq kind
+of the mutex attribute
+.Fa attr
+if successful; otherwise the value \-1 is returned and the global variable
+.Va errno
+is set to indicate the error.
+.Pp
+.Rv -std pthread_mutexattr_setkind_np
+.Sh ERRORS
+The
+.Fn pthread_mutexattr_getkind_np
+and
+.Fn pthread_mutexattr_setkind_np
+functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_mutexattr_gettype 3 ,
+.Xr pthread_mutexattr_settype 3 ,
+.Xr pthread_mutex_destroy 3 ,
+.Xr pthread_mutex_init 3
diff --git a/share/man/man3/pthread_once.3 b/share/man/man3/pthread_once.3
new file mode 100644
index 0000000..fe23418
--- /dev/null
+++ b/share/man/man3/pthread_once.3
@@ -0,0 +1,107 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_ONCE 3
+.Os
+.Sh NAME
+.Nm pthread_once
+.Nd dynamic package initialization
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Pp
+pthread_once_t
+.Fa once_control
+= PTHREAD_ONCE_INIT;
+.Ft int
+.Fn pthread_once "pthread_once_t *once_control" "void (*init_routine)(void)"
+.Sh DESCRIPTION
+The first call to
+.Fn pthread_once
+by any thread in a process, with a given
+.Fa once_control ,
+will call the
+.Fn init_routine
+with no arguments.
+Subsequent calls to
+.Fn pthread_once
+with the same
+.Fa once_control
+will not call the
+.Fn init_routine .
+On return from
+.Fn pthread_once ,
+it is guaranteed that
+.Fn init_routine
+has completed.
+The
+.Fa once_control
+parameter is used to determine whether the associated initialization
+routine has been called.
+.Pp
+The function
+.Fn pthread_once
+is not a cancellation point.
+However, if
+.Fn init_routine
+is a cancellation point and is cancelled, the effect on
+.Fa once_control
+is as if
+.Fn pthread_once
+was never called.
+.Pp
+The constant
+.Fa PTHREAD_ONCE_INIT
+is defined by header
+.In pthread.h .
+.Pp
+The behavior of
+.Fn pthread_once
+is undefined if
+.Fa once_control
+has automatic storage duration or is not initialized by
+.Fa PTHREAD_ONCE_INIT .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_once
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+None.
+.Sh STANDARDS
+The
+.Fn pthread_once
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_resume_all_np.3 b/share/man/man3/pthread_resume_all_np.3
new file mode 100644
index 0000000..4c63c3b
--- /dev/null
+++ b/share/man/man3/pthread_resume_all_np.3
@@ -0,0 +1,51 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_RESUME_ALL_NP 3
+.Os
+.Sh NAME
+.Nm pthread_resume_all_np
+.Nd resume all suspended threads
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft void
+.Fn pthread_resume_all_np void
+.Sh DESCRIPTION
+The
+.Fn pthread_resume_all_np
+function causes all active threads to be scanned
+and resumes those which were previously suspended.
+.Sh SEE ALSO
+.Xr pthread_attr_setcreatesuspend_np 3 ,
+.Xr pthread_resume_np 3 ,
+.Xr pthread_suspend_all_np 3 ,
+.Xr pthread_suspend_np 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_resume_np.3 b/share/man/man3/pthread_resume_np.3
new file mode 100644
index 0000000..08f7cb9
--- /dev/null
+++ b/share/man/man3/pthread_resume_np.3
@@ -0,0 +1,72 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_RESUME_NP 3
+.Os
+.Sh NAME
+.Nm pthread_resume_np
+.Nd resume suspended thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_resume_np "pthread_t tid"
+.Sh DESCRIPTION
+The
+.Fn pthread_resume_np
+function, called on a suspended thread, causes it to resume.
+If a thread specified by the
+.Fa tid
+argument is not suspended, no actions will be performed.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_resume_np
+function returns 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_resume_np
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by the
+.Fa tid
+argument is invalid.
+.It Bq ESRC
+No thread could be found corresponding to the thread ID specified by the
+.Fa tid
+argument.
+.El
+.Sh SEE ALSO
+.Xr pthread_attr_setcreatesuspend_np 3 ,
+.Xr pthread_resume_all_np 3 ,
+.Xr pthread_suspend_all_np 3 ,
+.Xr pthread_suspend_np 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_rwlock_destroy.3 b/share/man/man3/pthread_rwlock_destroy.3
new file mode 100644
index 0000000..0129222
--- /dev/null
+++ b/share/man/man3/pthread_rwlock_destroy.3
@@ -0,0 +1,83 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCK_DESTROY 3
+.Os
+.Sh NAME
+.Nm pthread_rwlock_destroy
+.Nd destroy a read/write lock
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlock_destroy "pthread_rwlock_t *lock"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlock_destroy
+function is used to destroy a read/write lock previously created with
+.Fn pthread_rwlock_init .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlock_destroy
+function will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlock_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EPERM
+The caller does not have the privilege to perform the operation.
+.El
+.Pp
+The
+.Fn pthread_rwlock_destroy
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+The system has detected an attempt to destroy the object referenced by
+.Fa lock
+while it is locked.
+.It Bq Er EINVAL
+The value specified by
+.Fa lock
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlock_init 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlock_destroy
+function is expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlock_destroy
+function first appeared in
+.Fx 3.0 .
diff --git a/share/man/man3/pthread_rwlock_init.3 b/share/man/man3/pthread_rwlock_init.3
new file mode 100644
index 0000000..cf8cc7e
--- /dev/null
+++ b/share/man/man3/pthread_rwlock_init.3
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCK_INIT 3
+.Os
+.Sh NAME
+.Nm pthread_rwlock_init
+.Nd initialize a read/write lock
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlock_init "pthread_rwlock_t *lock" "const pthread_rwlockattr_t *attr"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlock_init
+function is used to initialize a read/write lock, with attributes
+specified by
+.Fa attr .
+If
+.Fa attr
+is NULL, the default read/write lock attributes are used.
+.Pp
+The results of calling
+.Fn pthread_rwlock_init
+with an already initialized lock are undefined.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlock_init
+function will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlock_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system lacked the necessary resources (other than memory) to
+initialize the lock.
+.It Bq Er ENOMEM
+Insufficient memory exists to initialize the lock.
+.It Bq Er EPERM
+The caller does not have sufficient privilege to perform the
+operation.
+.El
+.Pp
+The
+.Fn pthread_rwlock_init
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+The system has detected an attempt to re-initialize the object
+referenced by
+.Fa lock ,
+a previously initialized but not yet destroyed read/write lock.
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlockattr_init 3 ,
+.Xr pthread_rwlockattr_setpshared 3 ,
+.Xr pthread_rwlock_destroy 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlock_init
+function is expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlock_init
+function first appeared in
+.Fx 3.0 .
+.Sh BUGS
+The PTHREAD_PROCESS_SHARED attribute is not supported.
diff --git a/share/man/man3/pthread_rwlock_rdlock.3 b/share/man/man3/pthread_rwlock_rdlock.3
new file mode 100644
index 0000000..7a197f2
--- /dev/null
+++ b/share/man/man3/pthread_rwlock_rdlock.3
@@ -0,0 +1,127 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCK_RDLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_rwlock_rdlock ,
+.Nm pthread_rwlock_tryrdlock
+.Nd acquire a read/write lock for reading
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlock_rdlock "pthread_rwlock_t *lock"
+.Ft int
+.Fn pthread_rwlock_tryrdlock "pthread_rwlock_t *lock"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlock_rdlock
+function acquires a read lock on
+.Fa lock
+provided that
+.Fa lock
+is not presently held for writing and no writer threads are
+presently blocked on the lock.
+If the read lock cannot be
+immediately acquired, the calling thread blocks until it can
+acquire the lock.
+.Pp
+The
+.Fn pthread_rwlock_tryrdlock
+function performs the same action, but does not block if the lock
+cannot be immediately obtained (i.e., the lock is held for writing
+or there are waiting writers).
+.Pp
+A thread may hold multiple concurrent read locks.
+If so,
+.Fn pthread_rwlock_unlock
+must be called once for each lock obtained.
+.Pp
+The results of acquiring a read lock while the calling thread holds
+a write lock are undefined.
+.Sh IMPLEMENTATION NOTES
+To prevent writer starvation, writers are favored over readers.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlock_rdlock
+and
+.Fn pthread_rwlock_tryrdlock
+functions will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlock_tryrdlock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+The lock could not be acquired because a writer holds the lock or
+was blocked on it.
+.El
+.Pp
+The
+.Fn pthread_rwlock_rdlock
+and
+.Fn pthread_rwlock_tryrdlock
+functions may fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The lock could not be acquired because the maximum number of read locks
+against
+.Fa lock
+has been exceeded.
+.It Bq Er EDEADLK
+The current thread already owns
+.Fa lock
+for writing.
+.It Bq Er EINVAL
+The value specified by
+.Fa lock
+is invalid.
+.It Bq Er ENOMEM
+Insufficient memory exists to initialize the lock (applies to
+statically initialized locks only).
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlock_init 3 ,
+.Xr pthread_rwlock_trywrlock 3 ,
+.Xr pthread_rwlock_unlock 3 ,
+.Xr pthread_rwlock_wrlock 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlock_rdlock
+and
+.Fn pthread_rwlock_tryrdlock
+functions are expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlock_rdlock
+function first appeared in
+.Fx 3.0 .
diff --git a/share/man/man3/pthread_rwlock_timedrdlock.3 b/share/man/man3/pthread_rwlock_timedrdlock.3
new file mode 100644
index 0000000..78b7470
--- /dev/null
+++ b/share/man/man3/pthread_rwlock_timedrdlock.3
@@ -0,0 +1,118 @@
+.\" Copyright (c) 2004 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$
+.\"
+.Dd January 16, 2004
+.Dt PTHREAD_RWLOCK_TIMEDRDLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_rwlock_timedrdlock
+.Nd "acquire a read-write lock for reading or give up after a specified period"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlock_timedrdlock "pthread_rwlock_t *rwlock" "const struct timespec *abs_timeout"
+.Sh DESCRIPTION
+This function acquires a read lock on the read-write lock
+.Fa rwlock .
+However, if the lock cannot be
+acquired without waiting for another thread to
+unlock the lock,
+this wait shall be terminated when
+.Fa abs_timeout
+expires.
+.Pp
+A thread may hold multiple concurrent read locks.
+The
+.Xr pthread_rwlock_unlock 3
+function must be called once for each lock acquired.
+.Pp
+If the thread should be interrupted by a signal,
+the
+.Fn pthread_rwlock_timedrdlock
+function will be automatically restarted after the thread returns from
+the signal handler.
+.Pp
+The calling thread may deadlock if
+at the time the call is made it holds a write lock on
+.Fa rwlock .
+The results are undefined if this function is called with
+an uninitialized read-write lock.
+.Sh IMPLEMENTATION NOTES
+To prevent writer starvation, writers are favored over readers.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlock_timedrdlock
+function will return zero.
+Otherwise, an error number will be returned to indicate the error.
+.Pp
+This function shall not return an error code of
+.Er EINTR .
+.Sh ERRORS
+The
+.Fn pthread_rwlock_timedrdlock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ETIMEDOUT
+The lock could not be acquired before the specified timeout expired.
+.El
+.Pp
+The
+.Fn pthread_rwlock_timedrdlock
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The read lock could not be
+acquired because the maximum number of read locks for
+.Fa rwlock
+would be exceeded.
+.It Bq Er EDEADLK
+The calling thread already holds a write lock on
+.Fa rwlock .
+.It Bq Er EINVAL
+The value specified by
+.Fa rwlock
+does not refer to an initialized read-write lock object,
+or the
+.Fa abs_timeout
+nanosecond value is less than zero or
+greater than or equal to 1 billion.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlock_init 3 ,
+.Xr pthread_rwlock_timedwrlock 3 ,
+.Xr pthread_rwlock_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlock_timedrdlock
+function is expected to conform to
+.St -p1003.1-96 .
+.Sh HISTORY
+The
+.Fn pthread_rwlock_timedrdlock
+function first appeared in
+.Fx 5.2 .
diff --git a/share/man/man3/pthread_rwlock_timedwrlock.3 b/share/man/man3/pthread_rwlock_timedwrlock.3
new file mode 100644
index 0000000..9821c5b
--- /dev/null
+++ b/share/man/man3/pthread_rwlock_timedwrlock.3
@@ -0,0 +1,108 @@
+.\" Copyright (c) 2004 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$
+.\"
+.Dd January 16, 2004
+.Dt PTHREAD_RWLOCK_TIMEDWRLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_rwlock_timedwrlock
+.Nd "acquire a read-write lock for writing or give up after a specified period"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlock_timedwrlock "pthread_rwlock_t *rwlock" "const struct timespec *abs_timeout"
+.Sh DESCRIPTION
+This function acquires a write lock on the read-write lock
+.Fa rwlock .
+However, if the lock cannot be
+acquired without waiting for another thread to
+unlock the lock,
+this wait shall be terminated when
+.Fa abs_timeout
+expires.
+.Pp
+If the thread should be interrupted by a signal,
+the
+.Fn pthread_rwlock_timedwrlock
+function will be automatically restarted after the thread returns from
+the signal handler.
+.Pp
+The calling thread may deadlock if
+at the time the call is made it holds
+.Fa rwlock .
+The results are undefined if this function is called with
+an uninitialized read-write lock.
+.Sh IMPLEMENTATION NOTES
+To prevent writer starvation, writers are favored over readers.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlock_timedwrlock
+function will return zero.
+Otherwise, an error number will be returned to indicate the error.
+.Pp
+This function shall not return an error code of
+.Er EINTR .
+.Sh ERRORS
+The
+.Fn pthread_rwlock_timedwrlock
+function shall fail if:
+.Bl -tag -width Er
+.It Bq Er ETIMEDOUT
+The lock could not be acquired before the specified timeout expired.
+.El
+.Pp
+The
+.Fn pthread_rwlock_timedrwlock
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EDEADLK
+The calling thread already holds
+.Fa rwlock .
+.It Bq Er EINVAL
+The value specified by
+.Fa rwlock
+does not refer to an initialized read-write lock object,
+or the
+.Fa abs_timeout
+nanosecond value is less than zero or
+greater than or equal to 1 billion.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlock_init 3 ,
+.Xr pthread_rwlock_timedrdlock 3 ,
+.Xr pthread_rwlock_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlock_timedwrlock
+function is expected to conform to
+.St -p1003.1-96 .
+.Sh HISTORY
+The
+.Fn pthread_rwlock_timedwrlock
+function first appeared in
+.Fx 5.2 .
diff --git a/share/man/man3/pthread_rwlock_unlock.3 b/share/man/man3/pthread_rwlock_unlock.3
new file mode 100644
index 0000000..8ad891e
--- /dev/null
+++ b/share/man/man3/pthread_rwlock_unlock.3
@@ -0,0 +1,82 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCK_UNLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_rwlock_unlock
+.Nd release a read/write lock
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlock_unlock "pthread_rwlock_t *lock"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlock_unlock
+function is used to release the read/write lock previously obtained by
+.Fn pthread_rwlock_rdlock ,
+.Fn pthread_rwlock_wrlock ,
+.Fn pthread_rwlock_tryrdlock ,
+or
+.Fn pthread_rwlock_trywrlock .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlock_unlock
+function will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Pp
+The results are undefined if
+.Fa lock
+is not held by the calling thread.
+.Sh ERRORS
+The
+.Fn pthread_rwlock_unlock
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa lock
+is invalid.
+.It Bq Er EPERM
+The current thread does not own the read/write lock.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlock_rdlock 3 ,
+.Xr pthread_rwlock_wrlock 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlock_unlock
+function is expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlock_unlock
+function first appeared in
+.Fx 3.0 .
diff --git a/share/man/man3/pthread_rwlock_wrlock.3 b/share/man/man3/pthread_rwlock_wrlock.3
new file mode 100644
index 0000000..602b54f
--- /dev/null
+++ b/share/man/man3/pthread_rwlock_wrlock.3
@@ -0,0 +1,106 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCK_WRLOCK 3
+.Os
+.Sh NAME
+.Nm pthread_rwlock_wrlock ,
+.Nm pthread_rwlock_trywrlock
+.Nd acquire a read/write lock for writing
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlock_wrlock "pthread_rwlock_t *lock"
+.Ft int
+.Fn pthread_rwlock_trywrlock "pthread_rwlock_t *lock"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlock_wrlock
+function blocks until a write lock can be acquired against
+.Fa lock .
+The
+.Fn pthread_rwlock_trywrlock
+function performs the same action, but does not block if the lock
+cannot be immediately obtained.
+.Pp
+The results are undefined if the calling thread already holds the
+lock at the time the call is made.
+.Sh IMPLEMENTATION NOTES
+To prevent writer starvation, writers are favored over readers.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlock_wrlock
+and
+.Fn pthread_rwlock_trywrlock
+functions will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlock_trywrlock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+The calling thread is not able to acquire the lock without blocking.
+.El
+.Pp
+The
+.Fn pthread_rwlock_wrlock
+and
+.Fn pthread_rwlock_trywrlock
+functions may fail if:
+.Bl -tag -width Er
+.It Bq Er EDEADLK
+The calling thread already owns the read/write lock (for reading
+or writing).
+.It Bq Er EINVAL
+The value specified by
+.Fa lock
+is invalid.
+.It Bq Er ENOMEM
+Insufficient memory exists to initialize the lock (applies to
+statically initialized locks only).
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlock_init 3 ,
+.Xr pthread_rwlock_rdlock 3 ,
+.Xr pthread_rwlock_tryrdlock 3 ,
+.Xr pthread_rwlock_unlock 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlock_wrlock
+and
+.Fn pthread_rwlock_trywrlock
+functions are expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlock_wrlock
+function first appeared in
+.Fx 3.0 .
diff --git a/share/man/man3/pthread_rwlockattr_destroy.3 b/share/man/man3/pthread_rwlockattr_destroy.3
new file mode 100644
index 0000000..bff808f
--- /dev/null
+++ b/share/man/man3/pthread_rwlockattr_destroy.3
@@ -0,0 +1,72 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCKATTR_DESTROY 3
+.Os
+.Sh NAME
+.Nm pthread_rwlockattr_destroy
+.Nd destroy a read/write lock
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlockattr_destroy "pthread_rwlockattr_t *attr"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlockattr_destroy
+function is used to destroy a read/write lock attribute object
+previously created with
+.Fn pthread_rwlockattr_init .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlockattr_destroy
+function will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlockattr_destroy
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlockattr_init 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlockattr_destroy
+function is expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlockattr_destroy
+function first appeared in
+.Fx 3.0 .
diff --git a/share/man/man3/pthread_rwlockattr_getpshared.3 b/share/man/man3/pthread_rwlockattr_getpshared.3
new file mode 100644
index 0000000..3fe5de1
--- /dev/null
+++ b/share/man/man3/pthread_rwlockattr_getpshared.3
@@ -0,0 +1,86 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd March 22, 1999
+.Dt PTHREAD_RWLOCKATTR_GETPSHARED 3
+.Os
+.Sh NAME
+.Nm pthread_rwlockattr_getpshared
+.Nd get the process shared attribute
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlockattr_getpshared "const pthread_rwlockattr_t *attr" "int *pshared"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlockattr_getpshared
+function is used to get the process shared setting of a read/write
+lock attribute object.
+The setting is returned via
+.Fa pshared ,
+and may be one of two values:
+.Bl -tag -width PTHREAD_PROCESS_PRIVATE
+.It Dv PTHREAD_PROCESS_SHARED
+Any thread of any process that has access to the memory where the
+read/write lock resides can manipulate the lock.
+.It Dv PTHREAD_PROCESS_PRIVATE
+Only threads created within the same process as the thread that
+initialized the read/write lock can manipulate the lock.
+This is
+the default value.
+.El
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlockattr_getpshared
+function will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlockattr_getpshared
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlockattr_init 3 ,
+.Xr pthread_rwlockattr_setpshared 3 ,
+.Xr pthread_rwlock_init 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlockattr_getpshared
+function is expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlockattr_getpshared
+function first appeared in
+.Fx 3.0 .
diff --git a/share/man/man3/pthread_rwlockattr_init.3 b/share/man/man3/pthread_rwlockattr_init.3
new file mode 100644
index 0000000..54d319f
--- /dev/null
+++ b/share/man/man3/pthread_rwlockattr_init.3
@@ -0,0 +1,71 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCKATTR_INIT 3
+.Os
+.Sh NAME
+.Nm pthread_rwlockattr_init
+.Nd initialize a read/write lock
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlockattr_init "pthread_rwlockattr_t *attr"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlockattr_init
+function is used to initialize a read/write lock attributes object.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlockattr_init
+function will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlockattr_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+Insufficient memory exists to initialize the attribute object.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlockattr_destroy 3 ,
+.Xr pthread_rwlockattr_getpshared 3 ,
+.Xr pthread_rwlockattr_setpshared 3 ,
+.Xr pthread_rwlock_init 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlockattr_init
+function is expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlockattr_init
+function first appeared in
+.Fx 3.0 .
diff --git a/share/man/man3/pthread_rwlockattr_setpshared.3 b/share/man/man3/pthread_rwlockattr_setpshared.3
new file mode 100644
index 0000000..36bcc69
--- /dev/null
+++ b/share/man/man3/pthread_rwlockattr_setpshared.3
@@ -0,0 +1,94 @@
+.\" Copyright (c) 1998 Alex Nash
+.\" 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$
+.\"
+.Dd August 4, 1998
+.Dt PTHREAD_RWLOCKATTR_SETPSHARED 3
+.Os
+.Sh NAME
+.Nm pthread_rwlockattr_setpshared
+.Nd set the process shared attribute
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_rwlockattr_setpshared "pthread_rwlockattr_t *attr" "int pshared"
+.Sh DESCRIPTION
+The
+.Fn pthread_rwlockattr_setpshared
+function sets the process shared attribute of
+.Fa attr
+to the value referenced by
+.Fa pshared .
+The
+.Fa pshared
+argument may be one of two values:
+.Bl -tag -width PTHREAD_PROCESS_PRIVATE
+.It Dv PTHREAD_PROCESS_SHARED
+Any thread of any process that has access to the memory where the
+read/write lock resides can manipulate the lock.
+.It Dv PTHREAD_PROCESS_PRIVATE
+Only threads created within the same process as the thread that
+initialized the read/write lock can manipulate the lock.
+This is
+the default value.
+.El
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_rwlockattr_setpshared
+function will return zero.
+Otherwise an error number will be returned
+to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_rwlockattr_setpshared
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa attr
+or
+.Fa pshared
+is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_rwlockattr_getpshared 3 ,
+.Xr pthread_rwlockattr_init 3 ,
+.Xr pthread_rwlock_init 3
+.Sh STANDARDS
+The
+.Fn pthread_rwlockattr_setpshared
+function is expected to conform to
+.St -susv2 .
+.Sh HISTORY
+The
+.Fn pthread_rwlockattr_setpshared
+function first appeared in
+.Fx 3.0 .
+.Sh BUGS
+The
+.Dv PTHREAD_PROCESS_SHARED
+attribute is not supported.
diff --git a/share/man/man3/pthread_schedparam.3 b/share/man/man3/pthread_schedparam.3
new file mode 100644
index 0000000..52d72cc
--- /dev/null
+++ b/share/man/man3/pthread_schedparam.3
@@ -0,0 +1,100 @@
+.\" Copyright (C) 2000 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 16, 2006
+.Dt PTHREAD_SCHEDPARAM 3
+.Os
+.Sh NAME
+.Nm pthread_setschedparam ,
+.Nm pthread_getschedparam
+.Nd thread scheduling parameter manipulation
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_setschedparam "pthread_t thread" "int policy" "const struct sched_param *param"
+.Ft int
+.Fn pthread_getschedparam "pthread_t thread" "int *policy" "struct sched_param *param"
+.Sh DESCRIPTION
+The
+.Fn pthread_setschedparam
+and
+.Fn pthread_getschedparam
+functions set and get the scheduling parameters of individual threads.
+The scheduling policy for a thread can either be
+.Dv SCHED_FIFO
+(first in, first out),
+.Dv SCHED_RR
+(round-robin), or
+.Dv SCHED_OTHER
+(timesharing).
+Valid thread priorities (accessed via
+.Va param->sched_priority )
+must be within the range returned by the
+.Xr sched_get_priority_min 2
+and
+.Xr sched_get_priority_max 2
+system calls.
+.Sh RETURN VALUES
+If successful, these functions return 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_setschedparam
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Invalid value for
+.Fa policy .
+.It Bq Er ENOTSUP
+Invalid value for scheduling parameters.
+.It Bq Er ESRCH
+Non-existent thread
+.Fa thread .
+.El
+.Pp
+The
+.Fn pthread_getschedparam
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ESRCH
+Non-existent thread
+.Fa thread .
+.El
+.Sh SEE ALSO
+.Xr sched_get_priority_max 2 ,
+.Xr sched_get_priority_min 2
+.Sh STANDARDS
+The
+.Fn pthread_setschedparam
+and
+.Fn pthread_getschedparam
+functions conform to
+.St -susv2 .
diff --git a/share/man/man3/pthread_self.3 b/share/man/man3/pthread_self.3
new file mode 100644
index 0000000..4d6aa2b
--- /dev/null
+++ b/share/man/man3/pthread_self.3
@@ -0,0 +1,62 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_SELF 3
+.Os
+.Sh NAME
+.Nm pthread_self
+.Nd get the calling thread's ID
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft pthread_t
+.Fn pthread_self "void"
+.Sh DESCRIPTION
+The
+.Fn pthread_self
+function returns the thread ID of the calling thread.
+.Sh RETURN VALUES
+The
+.Fn pthread_self
+function returns the thread ID of the calling thread.
+.Sh ERRORS
+None.
+.Sh SEE ALSO
+.Xr pthread_create 3 ,
+.Xr pthread_equal 3
+.Sh STANDARDS
+The
+.Fn pthread_self
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_set_name_np.3 b/share/man/man3/pthread_set_name_np.3
new file mode 100644
index 0000000..3bf430a
--- /dev/null
+++ b/share/man/man3/pthread_set_name_np.3
@@ -0,0 +1,55 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_SET_NAME_NP 3
+.Os
+.Sh NAME
+.Nm pthread_set_name_np
+.Nd set the thread name
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft void
+.Fn pthread_set_name_np "pthread_t tid" "const char *name"
+.Sh DESCRIPTION
+The
+.Fn pthread_set_name_np
+function sets internal name for thread specified by
+.Fa tid
+argument to string value specified by
+.Fa name
+argument.
+.Pp
+This is a debugging interface and using it on a day-by-day basis makes
+no sense.
+.Sh ERRORS
+Because of the debugging nature of this function, all errors that may
+appear inside are silently ignored.
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_setspecific.3 b/share/man/man3/pthread_setspecific.3
new file mode 100644
index 0000000..1ea3002
--- /dev/null
+++ b/share/man/man3/pthread_setspecific.3
@@ -0,0 +1,98 @@
+.\" Copyright (c) 1996 John Birrell <jb@cimlogic.com.au>.
+.\" 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 John Birrell.
+.\" 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 4, 1996
+.Dt PTHREAD_SETSPECIFIC 3
+.Os
+.Sh NAME
+.Nm pthread_setspecific
+.Nd set a thread-specific data value
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_setspecific "pthread_key_t key" "const void *value"
+.Sh DESCRIPTION
+The
+.Fn pthread_setspecific
+function associates a thread-specific value with a
+.Fa key
+obtained via a previous call to
+.Fn pthread_key_create .
+Different threads can bind different values to the same key.
+These values are
+typically pointers to blocks of dynamically allocated memory that have been
+reserved for use by the calling thread.
+.Pp
+The effect of calling
+.Fn pthread_setspecific
+with a key value not obtained from
+.Fn pthread_key_create
+or after
+.Fa key
+has been deleted with
+.Fn pthread_key_delete
+is undefined.
+.Pp
+The
+.Fn pthread_setspecific
+function may be called from a thread-specific data destructor function,
+however this may result in lost storage or infinite loops.
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_setspecific
+function will return zero.
+Otherwise an error number will be returned to
+indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_setspecific
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+Insufficient memory exists to associate the value with the
+.Fa key .
+.It Bq Er EINVAL
+The
+.Fa key
+value is invalid.
+.El
+.Sh SEE ALSO
+.Xr pthread_getspecific 3 ,
+.Xr pthread_key_create 3 ,
+.Xr pthread_key_delete 3
+.Sh STANDARDS
+The
+.Fn pthread_setspecific
+function conforms to
+.St -p1003.1-96 .
diff --git a/share/man/man3/pthread_sigmask.3 b/share/man/man3/pthread_sigmask.3
new file mode 100644
index 0000000..c412543
--- /dev/null
+++ b/share/man/man3/pthread_sigmask.3
@@ -0,0 +1,98 @@
+.\" Copyright (C) 2000 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.Dd April 27, 2000
+.Dt PTHREAD_SIGMASK 3
+.Os
+.Sh NAME
+.Nm pthread_sigmask
+.Nd examine and/or change a thread's signal mask
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.In signal.h
+.Ft int
+.Fn pthread_sigmask "int how" "const sigset_t *set" "sigset_t *oset"
+.Sh DESCRIPTION
+The
+.Fn pthread_sigmask
+function examines and/or changes the calling thread's signal mask.
+.Pp
+If
+.Fa set
+is not
+.Dv NULL ,
+it specifies a set of signals to be modified, and
+.Fa how
+specifies what to set the signal mask to:
+.Bl -tag -width SIG_UNBLOCK
+.It Dv SIG_BLOCK
+Union of the current mask and
+.Fa set .
+.It Dv SIG_UNBLOCK
+Intersection of the current mask and the complement of
+.Fa set .
+.It Dv SIG_SETMASK
+.Fa set .
+.El
+.Pp
+If
+.Fa oset
+is not NULL, the previous signal mask is stored in the location pointed to by
+.Fa oset .
+.Pp
+.Dv SIGKILL
+and
+.Dv SIGSTOP
+cannot be blocked, and will be silently ignored if included in the signal mask.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_sigmask
+returns 0.
+Otherwise, an error is returned.
+.Sh ERRORS
+The
+.Fn pthread_sigmask
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+.Fa how
+is not one of the defined values.
+.El
+.Sh SEE ALSO
+.Xr sigaction 2 ,
+.Xr sigpending 2 ,
+.Xr sigprocmask 2 ,
+.Xr sigsuspend 2 ,
+.Xr sigsetops 3
+.Sh STANDARDS
+The
+.Fn pthread_sigmask
+function conforms to
+.St -p1003.1-96
diff --git a/share/man/man3/pthread_spin_init.3 b/share/man/man3/pthread_spin_init.3
new file mode 100644
index 0000000..1f76de1
--- /dev/null
+++ b/share/man/man3/pthread_spin_init.3
@@ -0,0 +1,138 @@
+.\" Copyright (c) 2004 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$
+.\"
+.Dd January 22, 2004
+.Dt PTHREAD_SPIN_INIT 3
+.Os
+.Sh NAME
+.Nm pthread_spin_init , pthread_spin_destroy
+.Nd "initialize or destroy a spin lock"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_spin_init "pthread_spinlock_t *lock" "int pshared"
+.Ft int
+.Fn pthread_spin_destroy "pthread_spinlock_t *lock"
+.Sh DESCRIPTION
+The
+.Fn pthread_spin_init
+function will initialize
+.Fa lock
+to an unlocked state and
+allocate any resources necessary to begin using it.
+If
+.Fa pshared
+is set to
+.Dv PTHREAD_PROCESS_SHARED ,
+any thread,
+whether belonging to the process in which the spinlock was created or not,
+that has access to the memory area where
+.Fa lock
+resides, can use
+.Fa lock .
+If it is set to
+.Dv PTHREAD_PROCESS_PRIVATE ,
+it can only be used by threads within the same process.
+.Pp
+The
+.Fn pthread_spin_destroy
+function will destroy
+.Fa lock
+and release any resources that may have been allocated on its behalf.
+.Sh RETURN VALUES
+If successful,
+both
+.Fn pthread_spin_init
+and
+.Fn pthread_spin_destroy
+will return zero.
+Otherwise, an error number will be returned to indicate the error.
+.Pp
+Neither of these functions will return
+.Er EINTR .
+.Sh ERRORS
+The
+.Fn pthread_spin_init
+and
+.Fn pthread_spin_destroy
+functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+An attempt to initialize or destroy
+.Fa lock
+while it is in use.
+.It Bq Er EINVAL
+The value specified by
+.Fa lock
+is invalid.
+.El
+.Pp
+The
+.Fn pthread_spin_init
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+Insufficient resources,
+other than memory,
+to initialize
+.Fa lock .
+.It Bq Er ENOMEM
+Insufficient memory to initialize
+.Fa lock .
+.El
+.Sh SEE ALSO
+.Xr pthread_spin_lock 3 ,
+.Xr pthread_spin_unlock 3
+.Sh HISTORY
+The
+.Fn pthread_spin_init
+and
+.Fn pthread_spin_destroy
+functions first appeared in
+.Lb libkse
+in
+.Fx 5.2 ,
+and in
+.Lb libthr
+in
+.Fx 5.3 .
+.Sh BUGS
+The implementation of
+.Fn pthread_spin_init
+does not fully conform to
+.St -p1003.2
+because the
+.Fa pshared
+argument is ignored in
+.Lb libthr ,
+and in
+.Lb libkse
+if any value other than
+.Dv PTHREAD_PROCESSES_PRIVATE
+is specified, it returns
+.Er EINVAL .
diff --git a/share/man/man3/pthread_spin_lock.3 b/share/man/man3/pthread_spin_lock.3
new file mode 100644
index 0000000..24dea92
--- /dev/null
+++ b/share/man/man3/pthread_spin_lock.3
@@ -0,0 +1,138 @@
+.\" Copyright (c) 2004 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$
+.\"
+.Dd January 22, 2004
+.Dt PTHREAD_SPIN_LOCK 3
+.Os
+.Sh NAME
+.Nm pthread_spin_lock , pthread_spin_trylock , pthread_spin_unlock
+.Nd "lock or unlock a spin lock"
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_spin_lock "pthread_spinlock_t *lock"
+.Ft int
+.Fn pthread_spin_trylock "pthread_spinlock_t *lock"
+.Ft int
+.Fn pthread_spin_unlock "pthread_spinlock_t *lock"
+.Sh DESCRIPTION
+The
+.Fn pthread_spin_lock
+function will acquire
+.Fa lock
+if it is not currently owned by another thread.
+If the lock cannot be acquired immediately, it will
+spin attempting to acquire the lock (it will not sleep) until
+it becomes available.
+.Pp
+The
+.Fn pthread_spin_trylock
+function is the same as
+.Fn pthread_spin_lock
+except that if it cannot acquire
+.Fa lock
+immediately it will return with an error.
+.Pp
+The
+.Fn pthread_spin_unlock
+function will release
+.Fa lock ,
+which must have been previously locked by a call to
+.Fn pthread_spin_lock
+or
+.Fn pthread_spin_trylock .
+.Sh RETURN VALUES
+If successful, all these functions will return zero.
+Otherwise, an error number will be returned to indicate the error.
+.Pp
+None of these functions will return
+.Er EINTR .
+.Sh ERRORS
+The
+.Fn pthread_spin_lock ,
+.Fn pthread_spin_trylock
+and
+.Fn pthread_spin_unlock
+functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The value specified by
+.Fa lock
+is invalid or is not initialized.
+.El
+.Pp
+The
+.Fn pthread_spin_lock
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EDEADLK
+The calling thread already owns the lock.
+.El
+.Pp
+The
+.Fn pthread_spin_trylock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+Another thread currently holds
+.Fa lock .
+.El
+.Pp
+The
+.Fn pthread_spin_unlock
+function may fail if:
+.Bl -tag -width Er
+.It Bq Er EPERM
+The calling thread does not own
+.Fa lock .
+.El
+.Sh SEE ALSO
+.Xr pthread_spin_destroy 3 ,
+.Xr pthread_spin_init 3
+.Sh HISTORY
+The
+.Fn pthread_spin_lock ,
+.Fn pthread_spin_trylock
+and
+.Fn pthread_spin_unlock
+functions first appeared in
+.Lb libkse
+in
+.Fx 5.2 ,
+and in
+.Lb libthr
+in
+.Fx 5.3 .
+.Sh BUGS
+The implementation of
+.Fn pthread_spin_lock ,
+.Fn pthread_spin_trylock
+and
+.Fn pthread_spin_unlock
+is expected to conform to
+.St -p1003.2 .
diff --git a/share/man/man3/pthread_suspend_all_np.3 b/share/man/man3/pthread_suspend_all_np.3
new file mode 100644
index 0000000..fdeab19
--- /dev/null
+++ b/share/man/man3/pthread_suspend_all_np.3
@@ -0,0 +1,53 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_SUSPEND_ALL_NP 3
+.Os
+.Sh NAME
+.Nm pthread_suspend_all_np
+.Nd suspend all active threads
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft void
+.Fn pthread_suspend_all_np void
+.Sh DESCRIPTION
+The
+.Fn pthread_suspend_all_np
+function causes all active threads to be suspended.
+The only exception is the current thread,
+the thread that called the
+.Fn pthread_suspend_all_np
+function.
+.Sh SEE ALSO
+.Xr pthread_resume_all_np 3 ,
+.Xr pthread_resume_np 3 ,
+.Xr pthread_suspend_np 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_suspend_np.3 b/share/man/man3/pthread_suspend_np.3
new file mode 100644
index 0000000..43d2b7d
--- /dev/null
+++ b/share/man/man3/pthread_suspend_np.3
@@ -0,0 +1,70 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_SUSPEND_NP 3
+.Os
+.Sh NAME
+.Nm pthread_suspend_np
+.Nd suspend a thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_suspend_np "pthread_t tid"
+.Sh DESCRIPTION
+The
+.Fn pthread_suspend_np
+function, called on an active thread, causes it to suspend.
+.Sh RETURN VALUES
+If successful,
+.Fn pthread_suspend_np
+function returns 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_suspend_np
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EDEADLK
+An attempt was made to suspend the current thread.
+.It Bq Er EINVAL
+The value specified by the
+.Fa tid
+argument is invalid.
+.It Bq ESRC
+No thread could be found corresponding to the thread ID specified by the
+.Fa tid
+argument.
+.El
+.Sh SEE ALSO
+.Xr pthread_resume_all_np 3 ,
+.Xr pthread_resume_np 3 ,
+.Xr pthread_suspend_all_np 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_switch_add_np.3 b/share/man/man3/pthread_switch_add_np.3
new file mode 100644
index 0000000..0c42072
--- /dev/null
+++ b/share/man/man3/pthread_switch_add_np.3
@@ -0,0 +1,87 @@
+.\" Copyright (c) 2003 Alexey Zelkin <phantom@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$
+.\"
+.Dd February 13, 2003
+.Dt PTHREAD_SWITCH_ADD_NP 3
+.Os
+.Sh NAME
+.Nm pthread_switch_add_np ,
+.Nm pthread_switch_delete_np
+.Nd thread context switches debugging primitives
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread_np.h
+.Ft int
+.Fn pthread_switch_add_np "pthread_switch_routine_t routine"
+.Ft int
+.Fn pthread_switch_delete_np "pthread_switch_routine_t routine"
+.Sh DESCRIPTION
+An application is allowed to monitor the thread context switches inside
+the threading library.
+An application can install a routine that gets called every time a thread
+(explicitly created by an application with the
+.Xr pthread_create 3
+function) gets the context switched.
+The routine is passed the thread IDs of the threads that are
+being switched in and out.
+Installation and removal of these hooks may be done using the
+.Fn pthread_switch_add_np
+and
+.Fn pthread_switch_delete_np
+functions respectively.
+.Sh RETURN VALUES
+If successful,
+these functions return 0.
+Otherwise, an error number is returned to indicate the error.
+.Sh ERRORS
+The
+.Fn pthread_switch_add_np
+may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+.Dv NULL
+pointer was passed in the
+.Fa routine
+argument.
+.El
+.Pp
+The
+.Fn pthread_switch_delete_np
+may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa routine
+argument is different from the argument previously passed to the
+.Fn pthread_switch_add_np
+function.
+.El
+.Sh SEE ALSO
+.Xr pthread_create 3
+.Sh AUTHORS
+This manual page was written by
+.An Alexey Zelkin Aq phantom@FreeBSD.org .
diff --git a/share/man/man3/pthread_testcancel.3 b/share/man/man3/pthread_testcancel.3
new file mode 100644
index 0000000..7a73cb9
--- /dev/null
+++ b/share/man/man3/pthread_testcancel.3
@@ -0,0 +1,210 @@
+.\" $FreeBSD$
+.Dd January 17, 1999
+.Dt PTHREAD_TESTCANCEL 3
+.Os
+.Sh NAME
+.Nm pthread_setcancelstate ,
+.Nm pthread_setcanceltype ,
+.Nm pthread_testcancel
+.Nd set cancelability state
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fn pthread_setcancelstate "int state" "int *oldstate"
+.Ft int
+.Fn pthread_setcanceltype "int type" "int *oldtype"
+.Ft void
+.Fn pthread_testcancel "void"
+.Sh DESCRIPTION
+The
+.Fn pthread_setcancelstate
+function atomically both sets the calling thread's cancelability state
+to the indicated
+.Fa state
+and, if
+.Fa oldstate
+is not
+.Dv NULL ,
+returns the previous cancelability state at the location referenced by
+.Fa oldstate .
+Legal values for
+.Fa state
+are
+.Dv PTHREAD_CANCEL_ENABLE
+and
+.Dv PTHREAD_CANCEL_DISABLE .
+.Pp
+The
+.Fn pthread_setcanceltype
+function atomically both sets the calling thread's cancelability type
+to the indicated
+.Fa type
+and, if
+.Fa oldtype
+is not
+.Dv NULL ,
+returns the previous cancelability type at the location referenced by
+.Fa oldtype .
+Legal values for
+.Fa type
+are
+.Dv PTHREAD_CANCEL_DEFERRED
+and
+.Dv PTHREAD_CANCEL_ASYNCHRONOUS .
+.Pp
+The cancelability state and type of any newly created threads, including the
+thread in which
+.Fn main
+was first invoked, are
+.Dv PTHREAD_CANCEL_ENABLE
+and
+.Dv PTHREAD_CANCEL_DEFERRED
+respectively.
+.Pp
+The
+.Fn pthread_testcancel
+function creates a cancellation point in the calling thread.
+The
+.Fn pthread_testcancel
+function has no effect if cancelability is disabled.
+.Pp
+.Ss Cancelability States
+The cancelability state of a thread determines the action taken upon
+receipt of a cancellation request.
+The thread may control cancellation in
+a number of ways.
+.Pp
+Each thread maintains its own
+.Dq cancelability state
+which may be encoded in two bits:
+.Bl -hang
+.It Em Cancelability Enable
+When cancelability is
+.Dv PTHREAD_CANCEL_DISABLE ,
+cancellation requests against the target thread are held pending.
+.It Em Cancelability Type
+When cancelability is enabled and the cancelability type is
+.Dv PTHREAD_CANCEL_ASYNCHRONOUS ,
+new or pending cancellation requests may be acted upon at any time.
+When cancelability is enabled and the cancelability type is
+.Dv PTHREAD_CANCEL_DEFERRED ,
+cancellation requests are held pending until a cancellation point (see
+below) is reached.
+If cancelability is disabled, the setting of the
+cancelability type has no immediate effect as all cancellation requests
+are held pending; however, once cancelability is enabled again the new
+type will be in effect.
+.El
+.Ss Cancellation Points
+Cancellation points will occur when a thread is executing the following
+functions:
+.Fn close ,
+.Fn creat ,
+.Fn fcntl ,
+.Fn fsync ,
+.Fn msync ,
+.Fn nanosleep ,
+.Fn open ,
+.Fn pause ,
+.Fn pthread_cond_timedwait ,
+.Fn pthread_cond_wait ,
+.Fn pthread_join ,
+.Fn pthread_testcancel ,
+.Fn read ,
+.Fn sigwaitinfo ,
+.Fn sigsuspend ,
+.Fn sigwait ,
+.Fn sleep ,
+.Fn system ,
+.Fn tcdrain ,
+.Fn wait ,
+.Fn waitpid ,
+.Fn write .
+.Sh RETURN VALUES
+If successful, the
+.Fn pthread_setcancelstate
+and
+.Fn pthread_setcanceltype
+functions will return zero.
+Otherwise, an error number shall be returned to
+indicate the error.
+.Pp
+The
+.Fn pthread_setcancelstate
+and
+.Fn pthread_setcanceltype
+functions are used to control the points at which a thread may be
+asynchronously canceled.
+For cancellation control to be usable in modular
+fashion, some rules must be followed.
+.Pp
+For purposes of this discussion, consider an object to be a generalization
+of a procedure.
+It is a set of procedures and global variables written as
+a unit and called by clients not known by the object.
+Objects may depend
+on other objects.
+.Pp
+First, cancelability should only be disabled on entry to an object, never
+explicitly enabled.
+On exit from an object, the cancelability state should
+always be restored to its value on entry to the object.
+.Pp
+This follows from a modularity argument: if the client of an object (or the
+client of an object that uses that object) has disabled cancelability, it is
+because the client does not want to have to worry about how to clean up if the
+thread is canceled while executing some sequence of actions.
+If an object
+is called in such a state and it enables cancelability and a cancellation
+request is pending for that thread, then the thread will be canceled,
+contrary to the wish of the client that disabled.
+.Pp
+Second, the cancelability type may be explicitly set to either
+.Em deferred
+or
+.Em asynchronous
+upon entry to an object.
+But as with the cancelability state, on exit from
+an object that cancelability type should always be restored to its value on
+entry to the object.
+.Pp
+Finally, only functions that are cancel-safe may be called from a thread that
+is asynchronously cancelable.
+.Sh ERRORS
+The function
+.Fn pthread_setcancelstate
+may fail with:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The specified state is not
+.Dv PTHREAD_CANCEL_ENABLE
+or
+.Dv PTHREAD_CANCEL_DISABLE .
+.El
+.Pp
+The function
+.Fn pthread_setcanceltype
+may fail with:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The specified state is not
+.Dv PTHREAD_CANCEL_DEFERRED
+or
+.Dv PTHREAD_CANCEL_ASYNCHRONOUS .
+.El
+.Sh SEE ALSO
+.Xr pthread_cancel 3
+.Sh STANDARDS
+The
+.Fn pthread_testcancel
+function conforms to
+.St -p1003.1-96 .
+.Sh AUTHORS
+This manual page was written by
+.An David Leonard Aq d@openbsd.org
+for the
+.Ox
+implementation of
+.Xr pthread_cancel 3 .
diff --git a/share/man/man3/pthread_yield.3 b/share/man/man3/pthread_yield.3
new file mode 100644
index 0000000..e47c033
--- /dev/null
+++ b/share/man/man3/pthread_yield.3
@@ -0,0 +1,30 @@
+.\" $OpenBSD: pthread_yield.3,v 1.3 2004/01/25 14:48:32 jmc Exp $
+.\"
+.\" PUBLIC DOMAIN: No Rights Reserved. Marco S Hyman <marc@snafu.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 18, 2006
+.Dt PTHREAD_YIELD 3
+.Os
+.Sh NAME
+.Nm pthread_yield
+.Nd yield control of the current thread
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft void
+.Fn pthread_yield void
+.Sh DESCRIPTION
+The
+.Fn pthread_yield
+forces the running thread to relinquish the processor until it again
+becomes the head of its thread list.
+.Sh SEE ALSO
+.Xr sched_yield 2
+.Sh STANDARDS
+The
+.Fn pthread_yield
+is a non-portable (but quite common) extension to
+.St -p1003.1-2001 .
diff --git a/share/man/man3/queue.3 b/share/man/man3/queue.3
new file mode 100644
index 0000000..372c4ad
--- /dev/null
+++ b/share/man/man3/queue.3
@@ -0,0 +1,1005 @@
+.\" Copyright (c) 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)queue.3 8.2 (Berkeley) 1/24/94
+.\" $FreeBSD$
+.\"
+.Dd March 24, 2006
+.Dt QUEUE 3
+.Os
+.Sh NAME
+.Nm SLIST_EMPTY ,
+.Nm SLIST_ENTRY ,
+.Nm SLIST_FIRST ,
+.Nm SLIST_FOREACH ,
+.Nm SLIST_FOREACH_SAFE ,
+.Nm SLIST_HEAD ,
+.Nm SLIST_HEAD_INITIALIZER ,
+.Nm SLIST_INIT ,
+.Nm SLIST_INSERT_AFTER ,
+.Nm SLIST_INSERT_HEAD ,
+.Nm SLIST_NEXT ,
+.Nm SLIST_REMOVE_HEAD ,
+.Nm SLIST_REMOVE_NEXT ,
+.Nm SLIST_REMOVE ,
+.Nm STAILQ_CONCAT ,
+.Nm STAILQ_EMPTY ,
+.Nm STAILQ_ENTRY ,
+.Nm STAILQ_FIRST ,
+.Nm STAILQ_FOREACH ,
+.Nm STAILQ_FOREACH_SAFE ,
+.Nm STAILQ_HEAD ,
+.Nm STAILQ_HEAD_INITIALIZER ,
+.Nm STAILQ_INIT ,
+.Nm STAILQ_INSERT_AFTER ,
+.Nm STAILQ_INSERT_HEAD ,
+.Nm STAILQ_INSERT_TAIL ,
+.Nm STAILQ_LAST ,
+.Nm STAILQ_NEXT ,
+.Nm STAILQ_REMOVE_HEAD ,
+.Nm STAILQ_REMOVE_NEXT ,
+.Nm STAILQ_REMOVE ,
+.Nm LIST_EMPTY ,
+.Nm LIST_ENTRY ,
+.Nm LIST_FIRST ,
+.Nm LIST_FOREACH ,
+.Nm LIST_FOREACH_SAFE ,
+.Nm LIST_HEAD ,
+.Nm LIST_HEAD_INITIALIZER ,
+.Nm LIST_INIT ,
+.Nm LIST_INSERT_AFTER ,
+.Nm LIST_INSERT_BEFORE ,
+.Nm LIST_INSERT_HEAD ,
+.Nm LIST_NEXT ,
+.Nm LIST_REMOVE ,
+.Nm TAILQ_CONCAT ,
+.Nm TAILQ_EMPTY ,
+.Nm TAILQ_ENTRY ,
+.Nm TAILQ_FIRST ,
+.Nm TAILQ_FOREACH ,
+.Nm TAILQ_FOREACH_SAFE ,
+.Nm TAILQ_FOREACH_REVERSE ,
+.Nm TAILQ_FOREACH_REVERSE_SAFE ,
+.Nm TAILQ_HEAD ,
+.Nm TAILQ_HEAD_INITIALIZER ,
+.Nm TAILQ_INIT ,
+.Nm TAILQ_INSERT_AFTER ,
+.Nm TAILQ_INSERT_BEFORE ,
+.Nm TAILQ_INSERT_HEAD ,
+.Nm TAILQ_INSERT_TAIL ,
+.Nm TAILQ_LAST ,
+.Nm TAILQ_NEXT ,
+.Nm TAILQ_PREV ,
+.Nm TAILQ_REMOVE
+.Nd implementations of singly-linked lists, singly-linked tail queues,
+lists and tail queues
+.Sh SYNOPSIS
+.In sys/queue.h
+.\"
+.Fn SLIST_EMPTY "SLIST_HEAD *head"
+.Fn SLIST_ENTRY "TYPE"
+.Fn SLIST_FIRST "SLIST_HEAD *head"
+.Fn SLIST_FOREACH "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME"
+.Fn SLIST_FOREACH_SAFE "TYPE *var" "SLIST_HEAD *head" "SLIST_ENTRY NAME" "TYPE *temp_var"
+.Fn SLIST_HEAD "HEADNAME" "TYPE"
+.Fn SLIST_HEAD_INITIALIZER "SLIST_HEAD head"
+.Fn SLIST_INIT "SLIST_HEAD *head"
+.Fn SLIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_INSERT_HEAD "SLIST_HEAD *head" "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_NEXT "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_REMOVE_HEAD "SLIST_HEAD *head" "SLIST_ENTRY NAME"
+.Fn SLIST_REMOVE_NEXT "SLIST_HEAD *head" "TYPE *elm" "SLIST_ENTRY NAME"
+.Fn SLIST_REMOVE "SLIST_HEAD *head" "TYPE *elm" "TYPE" "SLIST_ENTRY NAME"
+.\"
+.Fn STAILQ_CONCAT "STAILQ_HEAD *head1" "STAILQ_HEAD *head2"
+.Fn STAILQ_EMPTY "STAILQ_HEAD *head"
+.Fn STAILQ_ENTRY "TYPE"
+.Fn STAILQ_FIRST "STAILQ_HEAD *head"
+.Fn STAILQ_FOREACH "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
+.Fn STAILQ_FOREACH_SAFE "TYPE *var" "STAILQ_HEAD *head" "STAILQ_ENTRY NAME" "TYPE *temp_var"
+.Fn STAILQ_HEAD "HEADNAME" "TYPE"
+.Fn STAILQ_HEAD_INITIALIZER "STAILQ_HEAD head"
+.Fn STAILQ_INIT "STAILQ_HEAD *head"
+.Fn STAILQ_INSERT_AFTER "STAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_INSERT_HEAD "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_INSERT_TAIL "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_LAST "STAILQ_HEAD *head" "TYPE" "STAILQ_ENTRY NAME"
+.Fn STAILQ_NEXT "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_REMOVE_HEAD "STAILQ_HEAD *head" "STAILQ_ENTRY NAME"
+.Fn STAILQ_REMOVE_NEXT "STAILQ_HEAD *head" "TYPE *elm" "STAILQ_ENTRY NAME"
+.Fn STAILQ_REMOVE "STAILQ_HEAD *head" "TYPE *elm" "TYPE" "STAILQ_ENTRY NAME"
+.\"
+.Fn LIST_EMPTY "LIST_HEAD *head"
+.Fn LIST_ENTRY "TYPE"
+.Fn LIST_FIRST "LIST_HEAD *head"
+.Fn LIST_FOREACH "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME"
+.Fn LIST_FOREACH_SAFE "TYPE *var" "LIST_HEAD *head" "LIST_ENTRY NAME" "TYPE *temp_var"
+.Fn LIST_HEAD "HEADNAME" "TYPE"
+.Fn LIST_HEAD_INITIALIZER "LIST_HEAD head"
+.Fn LIST_INIT "LIST_HEAD *head"
+.Fn LIST_INSERT_AFTER "TYPE *listelm" "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_INSERT_HEAD "LIST_HEAD *head" "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_NEXT "TYPE *elm" "LIST_ENTRY NAME"
+.Fn LIST_REMOVE "TYPE *elm" "LIST_ENTRY NAME"
+.\"
+.Fn TAILQ_CONCAT "TAILQ_HEAD *head1" "TAILQ_HEAD *head2" "TAILQ_ENTRY NAME"
+.Fn TAILQ_EMPTY "TAILQ_HEAD *head"
+.Fn TAILQ_ENTRY "TYPE"
+.Fn TAILQ_FIRST "TAILQ_HEAD *head"
+.Fn TAILQ_FOREACH "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME"
+.Fn TAILQ_FOREACH_SAFE "TYPE *var" "TAILQ_HEAD *head" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+.Fn TAILQ_FOREACH_REVERSE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME"
+.Fn TAILQ_FOREACH_REVERSE_SAFE "TYPE *var" "TAILQ_HEAD *head" "HEADNAME" "TAILQ_ENTRY NAME" "TYPE *temp_var"
+.Fn TAILQ_HEAD "HEADNAME" "TYPE"
+.Fn TAILQ_HEAD_INITIALIZER "TAILQ_HEAD head"
+.Fn TAILQ_INIT "TAILQ_HEAD *head"
+.Fn TAILQ_INSERT_AFTER "TAILQ_HEAD *head" "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_INSERT_BEFORE "TYPE *listelm" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_INSERT_HEAD "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_INSERT_TAIL "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_LAST "TAILQ_HEAD *head" "HEADNAME"
+.Fn TAILQ_NEXT "TYPE *elm" "TAILQ_ENTRY NAME"
+.Fn TAILQ_PREV "TYPE *elm" "HEADNAME" "TAILQ_ENTRY NAME"
+.Fn TAILQ_REMOVE "TAILQ_HEAD *head" "TYPE *elm" "TAILQ_ENTRY NAME"
+.\"
+.Sh DESCRIPTION
+These macros define and operate on four types of data structures:
+singly-linked lists, singly-linked tail queues, lists, and tail queues.
+All four structures support the following functionality:
+.Bl -enum -compact -offset indent
+.It
+Insertion of a new entry at the head of the list.
+.It
+Insertion of a new entry after any element in the list.
+.It
+O(1) removal of an entry from the head of the list.
+.It
+Forward traversal through the list.
+.El
+.Pp
+O(n) removal of any entry in the list.
+Singly-linked lists are the simplest of the four data structures
+and support only the above functionality.
+Singly-linked lists are ideal for applications with large datasets
+and few or no removals,
+or for implementing a LIFO queue.
+Singly-linked lists add the following functionality:
+.Bl -enum -compact -offset indent
+.It
+O(n) removal of any entry in the list.
+.El
+.Pp
+Singly-linked tail queues add the following functionality:
+.Bl -enum -compact -offset indent
+.It
+Entries can be added at the end of a list.
+.It
+O(n) removal of any entry in the list.
+.It
+They may be concatenated.
+.El
+However:
+.Bl -enum -compact -offset indent
+.It
+All list insertions must specify the head of the list.
+.It
+Each head entry requires two pointers rather than one.
+.It
+Code size is about 15% greater and operations run about 20% slower
+than singly-linked lists.
+.El
+.Pp
+Singly-linked tailqs are ideal for applications with large datasets and
+few or no removals,
+or for implementing a FIFO queue.
+.Pp
+All doubly linked types of data structures (lists and tail queues)
+additionally allow:
+.Bl -enum -compact -offset indent
+.It
+Insertion of a new entry before any element in the list.
+.It
+O(1) removal of any entry in the list.
+.El
+However:
+.Bl -enum -compact -offset indent
+.It
+Each elements requires two pointers rather than one.
+.It
+Code size and execution time of operations (except for removal) is about
+twice that of the singly-linked data-structures.
+.El
+.Pp
+Linked lists are the simplest of the doubly linked data structures and support
+only the above functionality over singly-linked lists.
+.Pp
+Tail queues add the following functionality:
+.Bl -enum -compact -offset indent
+.It
+Entries can be added at the end of a list.
+.It
+They may be traversed backwards, from tail to head.
+.It
+They may be concatenated.
+.El
+However:
+.Bl -enum -compact -offset indent
+.It
+All list insertions and removals must specify the head of the list.
+.It
+Each head entry requires two pointers rather than one.
+.It
+Code size is about 15% greater and operations run about 20% slower
+than singly-linked lists.
+.El
+.Pp
+In the macro definitions,
+.Fa TYPE
+is the name of a user defined structure,
+that must contain a field of type
+.Li SLIST_ENTRY ,
+.Li STAILQ_ENTRY ,
+.Li LIST_ENTRY ,
+or
+.Li TAILQ_ENTRY ,
+named
+.Fa NAME .
+The argument
+.Fa HEADNAME
+is the name of a user defined structure that must be declared
+using the macros
+.Li SLIST_HEAD ,
+.Li STAILQ_HEAD ,
+.Li LIST_HEAD ,
+or
+.Li TAILQ_HEAD .
+See the examples below for further explanation of how these
+macros are used.
+.Sh SINGLY-LINKED LISTS
+A singly-linked list is headed by a structure defined by the
+.Nm SLIST_HEAD
+macro.
+This structure contains a single pointer to the first element
+on the list.
+The elements are singly linked for minimum space and pointer manipulation
+overhead at the expense of O(n) removal for arbitrary elements.
+New elements can be added to the list after an existing element or
+at the head of the list.
+An
+.Fa SLIST_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+SLIST_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Fa HEADNAME
+is the name of the structure to be defined, and
+.Fa TYPE
+is the type of the elements to be linked into the list.
+A pointer to the head of the list can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm SLIST_HEAD_INITIALIZER
+evaluates to an initializer for the list
+.Fa head .
+.Pp
+The macro
+.Nm SLIST_EMPTY
+evaluates to true if there are no elements in the list.
+.Pp
+The macro
+.Nm SLIST_ENTRY
+declares a structure that connects the elements in
+the list.
+.Pp
+The macro
+.Nm SLIST_FIRST
+returns the first element in the list or NULL if the list is empty.
+.Pp
+The macro
+.Nm SLIST_FOREACH
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in
+turn to
+.Fa var .
+.Pp
+The macro
+.Nm SLIST_FOREACH_SAFE
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in
+turn to
+.Fa var .
+However, unlike
+.Fn SLIST_FOREACH
+here it is permitted to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm SLIST_INIT
+initializes the list referenced by
+.Fa head .
+.Pp
+The macro
+.Nm SLIST_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the list.
+.Pp
+The macro
+.Nm SLIST_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm SLIST_NEXT
+returns the next element in the list.
+.Pp
+The macro
+.Nm SLIST_REMOVE_HEAD
+removes the element
+.Fa elm
+from the head of the list.
+For optimum efficiency,
+elements being removed from the head of the list should explicitly use
+this macro instead of the generic
+.Fa SLIST_REMOVE
+macro.
+.Pp
+The macro
+.Nm SLIST_REMOVE_NEXT
+removes the element after
+.Fa elm
+from the list. Unlike
+.Fa SLIST_REMOVE ,
+this macro does not traverse the entire list.
+.Pp
+The macro
+.Nm SLIST_REMOVE
+removes the element
+.Fa elm
+from the list.
+.Sh SINGLY-LINKED LIST EXAMPLE
+.Bd -literal
+SLIST_HEAD(slisthead, entry) head =
+ SLIST_HEAD_INITIALIZER(head);
+struct slisthead *headp; /* Singly-linked List head. */
+struct entry {
+ ...
+ SLIST_ENTRY(entry) entries; /* Singly-linked List. */
+ ...
+} *n1, *n2, *n3, *np;
+
+SLIST_INIT(&head); /* Initialize the list. */
+
+n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
+SLIST_INSERT_HEAD(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry)); /* Insert after. */
+SLIST_INSERT_AFTER(n1, n2, entries);
+
+SLIST_REMOVE(&head, n2, entry, entries);/* Deletion. */
+free(n2);
+
+n3 = SLIST_FIRST(&head);
+SLIST_REMOVE_HEAD(&head, entries); /* Deletion from the head. */
+free(n3);
+ /* Forward traversal. */
+SLIST_FOREACH(np, &head, entries)
+ np-> ...
+ /* Safe forward traversal. */
+SLIST_FOREACH_SAFE(np, &head, entries, np_temp) {
+ np->do_stuff();
+ ...
+ SLIST_REMOVE(&head, np, entry, entries);
+ free(np);
+}
+
+while (!SLIST_EMPTY(&head)) { /* List Deletion. */
+ n1 = SLIST_FIRST(&head);
+ SLIST_REMOVE_HEAD(&head, entries);
+ free(n1);
+}
+.Ed
+.Sh SINGLY-LINKED TAIL QUEUES
+A singly-linked tail queue is headed by a structure defined by the
+.Nm STAILQ_HEAD
+macro.
+This structure contains a pair of pointers,
+one to the first element in the tail queue and the other to
+the last element in the tail queue.
+The elements are singly linked for minimum space and pointer
+manipulation overhead at the expense of O(n) removal for arbitrary
+elements.
+New elements can be added to the tail queue after an existing element,
+at the head of the tail queue, or at the end of the tail queue.
+A
+.Fa STAILQ_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+STAILQ_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Li HEADNAME
+is the name of the structure to be defined, and
+.Li TYPE
+is the type of the elements to be linked into the tail queue.
+A pointer to the head of the tail queue can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm STAILQ_HEAD_INITIALIZER
+evaluates to an initializer for the tail queue
+.Fa head .
+.Pp
+The macro
+.Nm STAILQ_CONCAT
+concatenates the tail queue headed by
+.Fa head2
+onto the end of the one headed by
+.Fa head1
+removing all entries from the former.
+.Pp
+The macro
+.Nm STAILQ_EMPTY
+evaluates to true if there are no items on the tail queue.
+.Pp
+The macro
+.Nm STAILQ_ENTRY
+declares a structure that connects the elements in
+the tail queue.
+.Pp
+The macro
+.Nm STAILQ_FIRST
+returns the first item on the tail queue or NULL if the tail queue
+is empty.
+.Pp
+The macro
+.Nm STAILQ_FOREACH
+traverses the tail queue referenced by
+.Fa head
+in the forward direction, assigning each element
+in turn to
+.Fa var .
+.Pp
+The macro
+.Nm STAILQ_FOREACH_SAFE
+traverses the tail queue referenced by
+.Fa head
+in the forward direction, assigning each element
+in turn to
+.Fa var .
+However, unlike
+.Fn STAILQ_FOREACH
+here it is permitted to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm STAILQ_INIT
+initializes the tail queue referenced by
+.Fa head .
+.Pp
+The macro
+.Nm STAILQ_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the tail queue.
+.Pp
+The macro
+.Nm STAILQ_INSERT_TAIL
+inserts the new element
+.Fa elm
+at the end of the tail queue.
+.Pp
+The macro
+.Nm STAILQ_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm STAILQ_LAST
+returns the last item on the tail queue.
+If the tail queue is empty the return value is
+.Dv NULL .
+.Pp
+The macro
+.Nm STAILQ_NEXT
+returns the next item on the tail queue, or NULL this item is the last.
+.Pp
+The macro
+.Nm STAILQ_REMOVE_HEAD
+removes the element at the head of the tail queue.
+For optimum efficiency,
+elements being removed from the head of the tail queue should
+use this macro explicitly rather than the generic
+.Fa STAILQ_REMOVE
+macro.
+.Pp
+The macro
+.Nm STAILQ_REMOVE_NEXT
+removes the element after
+.Fa elm
+from the tail queue. Unlike
+.Fa STAILQ_REMOVE ,
+this macro does not traverse the entire tail queue.
+.Pp
+The macro
+.Nm STAILQ_REMOVE
+removes the element
+.Fa elm
+from the tail queue.
+.Sh SINGLY-LINKED TAIL QUEUE EXAMPLE
+.Bd -literal
+STAILQ_HEAD(stailhead, entry) head =
+ STAILQ_HEAD_INITIALIZER(head);
+struct stailhead *headp; /* Singly-linked tail queue head. */
+struct entry {
+ ...
+ STAILQ_ENTRY(entry) entries; /* Tail queue. */
+ ...
+} *n1, *n2, *n3, *np;
+
+STAILQ_INIT(&head); /* Initialize the queue. */
+
+n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
+STAILQ_INSERT_HEAD(&head, n1, entries);
+
+n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */
+STAILQ_INSERT_TAIL(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry)); /* Insert after. */
+STAILQ_INSERT_AFTER(&head, n1, n2, entries);
+ /* Deletion. */
+STAILQ_REMOVE(&head, n2, entry, entries);
+free(n2);
+ /* Deletion from the head. */
+n3 = STAILQ_FIRST(&head);
+STAILQ_REMOVE_HEAD(&head, entries);
+free(n3);
+ /* Forward traversal. */
+STAILQ_FOREACH(np, &head, entries)
+ np-> ...
+ /* Safe forward traversal. */
+STAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
+ np->do_stuff();
+ ...
+ STAILQ_REMOVE(&head, np, entry, entries);
+ free(np);
+}
+ /* TailQ Deletion. */
+while (!STAILQ_EMPTY(&head)) {
+ n1 = STAILQ_FIRST(&head);
+ STAILQ_REMOVE_HEAD(&head, entries);
+ free(n1);
+}
+ /* Faster TailQ Deletion. */
+n1 = STAILQ_FIRST(&head);
+while (n1 != NULL) {
+ n2 = STAILQ_NEXT(n1, entries);
+ free(n1);
+ n1 = n2;
+}
+STAILQ_INIT(&head);
+.Ed
+.Sh LISTS
+A list is headed by a structure defined by the
+.Nm LIST_HEAD
+macro.
+This structure contains a single pointer to the first element
+on the list.
+The elements are doubly linked so that an arbitrary element can be
+removed without traversing the list.
+New elements can be added to the list after an existing element,
+before an existing element, or at the head of the list.
+A
+.Fa LIST_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+LIST_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Fa HEADNAME
+is the name of the structure to be defined, and
+.Fa TYPE
+is the type of the elements to be linked into the list.
+A pointer to the head of the list can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm LIST_HEAD_INITIALIZER
+evaluates to an initializer for the list
+.Fa head .
+.Pp
+The macro
+.Nm LIST_EMPTY
+evaluates to true if there are no elements in the list.
+.Pp
+The macro
+.Nm LIST_ENTRY
+declares a structure that connects the elements in
+the list.
+.Pp
+The macro
+.Nm LIST_FIRST
+returns the first element in the list or NULL if the list
+is empty.
+.Pp
+The macro
+.Nm LIST_FOREACH
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in turn to
+.Fa var .
+.Pp
+The macro
+.Nm LIST_FOREACH_SAFE
+traverses the list referenced by
+.Fa head
+in the forward direction, assigning each element in turn to
+.Fa var .
+However, unlike
+.Fn LIST_FOREACH
+here it is permitted to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm LIST_INIT
+initializes the list referenced by
+.Fa head .
+.Pp
+The macro
+.Nm LIST_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the list.
+.Pp
+The macro
+.Nm LIST_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm LIST_INSERT_BEFORE
+inserts the new element
+.Fa elm
+before the element
+.Fa listelm .
+.Pp
+The macro
+.Nm LIST_NEXT
+returns the next element in the list, or NULL if this is the last.
+.Pp
+The macro
+.Nm LIST_REMOVE
+removes the element
+.Fa elm
+from the list.
+.Sh LIST EXAMPLE
+.Bd -literal
+LIST_HEAD(listhead, entry) head =
+ LIST_HEAD_INITIALIZER(head);
+struct listhead *headp; /* List head. */
+struct entry {
+ ...
+ LIST_ENTRY(entry) entries; /* List. */
+ ...
+} *n1, *n2, *n3, *np, *np_temp;
+
+LIST_INIT(&head); /* Initialize the list. */
+
+n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
+LIST_INSERT_HEAD(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry)); /* Insert after. */
+LIST_INSERT_AFTER(n1, n2, entries);
+
+n3 = malloc(sizeof(struct entry)); /* Insert before. */
+LIST_INSERT_BEFORE(n2, n3, entries);
+
+LIST_REMOVE(n2, entries); /* Deletion. */
+free(n2);
+ /* Forward traversal. */
+LIST_FOREACH(np, &head, entries)
+ np-> ...
+
+ /* Safe forward traversal. */
+LIST_FOREACH_SAFE(np, &head, entries, np_temp) {
+ np->do_stuff();
+ ...
+ LIST_REMOVE(np, entries);
+ free(np);
+}
+
+while (!LIST_EMPTY(&head)) { /* List Deletion. */
+ n1 = LIST_FIRST(&head);
+ LIST_REMOVE(n1, entries);
+ free(n1);
+}
+
+n1 = LIST_FIRST(&head); /* Faster List Deletion. */
+while (n1 != NULL) {
+ n2 = LIST_NEXT(n1, entries);
+ free(n1);
+ n1 = n2;
+}
+LIST_INIT(&head);
+.Ed
+.Sh TAIL QUEUES
+A tail queue is headed by a structure defined by the
+.Nm TAILQ_HEAD
+macro.
+This structure contains a pair of pointers,
+one to the first element in the tail queue and the other to
+the last element in the tail queue.
+The elements are doubly linked so that an arbitrary element can be
+removed without traversing the tail queue.
+New elements can be added to the tail queue after an existing element,
+before an existing element, at the head of the tail queue,
+or at the end of the tail queue.
+A
+.Fa TAILQ_HEAD
+structure is declared as follows:
+.Bd -literal -offset indent
+TAILQ_HEAD(HEADNAME, TYPE) head;
+.Ed
+.Pp
+where
+.Li HEADNAME
+is the name of the structure to be defined, and
+.Li TYPE
+is the type of the elements to be linked into the tail queue.
+A pointer to the head of the tail queue can later be declared as:
+.Bd -literal -offset indent
+struct HEADNAME *headp;
+.Ed
+.Pp
+(The names
+.Li head
+and
+.Li headp
+are user selectable.)
+.Pp
+The macro
+.Nm TAILQ_HEAD_INITIALIZER
+evaluates to an initializer for the tail queue
+.Fa head .
+.Pp
+The macro
+.Nm TAILQ_CONCAT
+concatenates the tail queue headed by
+.Fa head2
+onto the end of the one headed by
+.Fa head1
+removing all entries from the former.
+.Pp
+The macro
+.Nm TAILQ_EMPTY
+evaluates to true if there are no items on the tail queue.
+.Pp
+The macro
+.Nm TAILQ_ENTRY
+declares a structure that connects the elements in
+the tail queue.
+.Pp
+The macro
+.Nm TAILQ_FIRST
+returns the first item on the tail queue or NULL if the tail queue
+is empty.
+.Pp
+The macro
+.Nm TAILQ_FOREACH
+traverses the tail queue referenced by
+.Fa head
+in the forward direction, assigning each element in turn to
+.Fa var .
+.Fa var
+is set to
+.Dv NULL
+if the loop completes normally, or if there were no elements.
+.Pp
+The macro
+.Nm TAILQ_FOREACH_REVERSE
+traverses the tail queue referenced by
+.Fa head
+in the reverse direction, assigning each element in turn to
+.Fa var .
+.Pp
+The macros
+.Nm TAILQ_FOREACH_SAFE
+and
+.Nm TAILQ_FOREACH_REVERSE_SAFE
+traverse the list referenced by
+.Fa head
+in the forward or reverse direction respectively,
+assigning each element in turn to
+.Fa var .
+However, unlike their unsafe counterparts,
+.Nm TAILQ_FOREACH
+and
+.Nm TAILQ_FOREACH_REVERSE
+permit to both remove
+.Fa var
+as well as free it from within the loop safely without interfering with the
+traversal.
+.Pp
+The macro
+.Nm TAILQ_INIT
+initializes the tail queue referenced by
+.Fa head .
+.Pp
+The macro
+.Nm TAILQ_INSERT_HEAD
+inserts the new element
+.Fa elm
+at the head of the tail queue.
+.Pp
+The macro
+.Nm TAILQ_INSERT_TAIL
+inserts the new element
+.Fa elm
+at the end of the tail queue.
+.Pp
+The macro
+.Nm TAILQ_INSERT_AFTER
+inserts the new element
+.Fa elm
+after the element
+.Fa listelm .
+.Pp
+The macro
+.Nm TAILQ_INSERT_BEFORE
+inserts the new element
+.Fa elm
+before the element
+.Fa listelm .
+.Pp
+The macro
+.Nm TAILQ_LAST
+returns the last item on the tail queue.
+If the tail queue is empty the return value is
+.Dv NULL .
+.Pp
+The macro
+.Nm TAILQ_NEXT
+returns the next item on the tail queue, or NULL if this item is the last.
+.Pp
+The macro
+.Nm TAILQ_PREV
+returns the previous item on the tail queue, or NULL if this item
+is the first.
+.Pp
+The macro
+.Nm TAILQ_REMOVE
+removes the element
+.Fa elm
+from the tail queue.
+.Sh TAIL QUEUE EXAMPLE
+.Bd -literal
+TAILQ_HEAD(tailhead, entry) head =
+ TAILQ_HEAD_INITIALIZER(head);
+struct tailhead *headp; /* Tail queue head. */
+struct entry {
+ ...
+ TAILQ_ENTRY(entry) entries; /* Tail queue. */
+ ...
+} *n1, *n2, *n3, *np;
+
+TAILQ_INIT(&head); /* Initialize the queue. */
+
+n1 = malloc(sizeof(struct entry)); /* Insert at the head. */
+TAILQ_INSERT_HEAD(&head, n1, entries);
+
+n1 = malloc(sizeof(struct entry)); /* Insert at the tail. */
+TAILQ_INSERT_TAIL(&head, n1, entries);
+
+n2 = malloc(sizeof(struct entry)); /* Insert after. */
+TAILQ_INSERT_AFTER(&head, n1, n2, entries);
+
+n3 = malloc(sizeof(struct entry)); /* Insert before. */
+TAILQ_INSERT_BEFORE(n2, n3, entries);
+
+TAILQ_REMOVE(&head, n2, entries); /* Deletion. */
+free(n2);
+ /* Forward traversal. */
+TAILQ_FOREACH(np, &head, entries)
+ np-> ...
+ /* Safe forward traversal. */
+TAILQ_FOREACH_SAFE(np, &head, entries, np_temp) {
+ np->do_stuff();
+ ...
+ TAILQ_REMOVE(&head, np, entries);
+ free(np);
+}
+ /* Reverse traversal. */
+TAILQ_FOREACH_REVERSE(np, &head, tailhead, entries)
+ np-> ...
+ /* TailQ Deletion. */
+while (!TAILQ_EMPTY(&head)) {
+ n1 = TAILQ_FIRST(&head);
+ TAILQ_REMOVE(&head, n1, entries);
+ free(n1);
+}
+ /* Faster TailQ Deletion. */
+n1 = TAILQ_FIRST(&head);
+while (n1 != NULL) {
+ n2 = TAILQ_NEXT(n1, entries);
+ free(n1);
+ n1 = n2;
+}
+TAILQ_INIT(&head);
+.Ed
+.Sh HISTORY
+The
+.Nm queue
+functions first appeared in
+.Bx 4.4 .
diff --git a/share/man/man3/siginfo.3 b/share/man/man3/siginfo.3
new file mode 100644
index 0000000..6e6b2a4
--- /dev/null
+++ b/share/man/man3/siginfo.3
@@ -0,0 +1,309 @@
+.\" Copyright (c) 2005 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 8, 2005
+.Dt SIGINFO 3
+.Os
+.Sh NAME
+.Nm siginfo
+.Nd "signal generation information"
+.Sh SYNOPSIS
+.In signal.h
+.Sh DESCRIPTION
+A process may request signal information when it is catching a signal.
+The information specifies why the system generated that signal.
+To request signal information in a signal handler, the user can set
+.Dv SA_SIGINFO
+in
+.Va sa_flags
+before
+.Xr sigaction 2
+is called,
+otherwise the user can use
+.Xr sigwaitinfo 2
+and
+.Xr sigtimedwait 2
+to get signal information.
+In either case, the system returns the information in a structure of type
+.Vt siginfo_t ,
+which includes the following information:
+.Bl -column ".Vt union signal" ".Va si_overrun"
+.It Sy "Type Member Description"
+.It Vt int Ta Va si_signo Ta
+signal number
+.It Vt int Ta Va si_errno Ta
+error number
+.It Vt int Ta Va si_code Ta
+signal code
+.It Vt union sigval Ta Va si_value Ta
+signal value
+.It Vt pid_t Ta Va si_pid Ta
+sending process ID
+.It Vt uid_t Ta Va si_uid Ta
+sending process's real user ID
+.It Vt void Ta Va *si_addr Ta
+address of faulting instruction
+.It Vt int Ta Va si_status Ta
+exit value or signal
+.It Vt long Ta Va si_band Ta
+band event for
+.Dv SIGPOLL
+.It Vt int Ta Va si_trapno Ta
+machine trap code
+.It Vt int Ta Va si_timerid Ta
+.Tn POSIX
+timer ID
+.It Vt int Ta Va si_overrun Ta
+.Tn POSIX
+timer overrun count
+.It Vt int Ta Va si_mqd Ta
+.Tn POSIX
+message queue ID
+.El
+.Pp
+The
+.Va si_signo
+member contains the signal number.
+.Pp
+The
+.Va si_errno
+member contains an error number defined in the file
+.In errno.h .
+.Pp
+The
+.Va si_code
+member contains a code which describes the cause of the signal.
+The macros specified in the
+.Sy Code
+column of the following table are defined
+for use as values of
+.Va si_code
+that are signal-specific or non-signal-specific reasons why the signal was
+generated:
+.Bl -column ".Dv SIGPOLL" ".Dv CLD_CONTINUED"
+.It Sy "Signal Code Reason"
+.It Dv SIGILL Ta Dv ILL_ILLOPC Ta
+illegal opcode
+.It Ta Dv ILL_ILLOPN Ta
+illegal operand
+.It Ta Dv ILL_ILLADR Ta
+illegal addressing mode
+.It Ta Dv ILL_ILLTRP Ta
+illegal trap
+.It Ta Dv ILL_PRVOPC Ta
+illegal privileged opcode
+.It Ta Dv ILL_PRVREG Ta
+illegal privileged register
+.It Ta Dv ILL_COPROC Ta
+coprocessor error
+.It Ta Dv ILL_BADSTK Ta
+internal stack error
+.It Dv SIGFPE Ta Dv FPE_INTDIV Ta
+integer divide by zero
+.It Ta Dv FPE_INTOVF Ta
+integer overflow
+.It Ta Dv FPE_FLTDIV Ta
+floating-point divide by zero
+.It Ta Dv FPE_FLTOVF Ta
+floating-point overflow
+.It Ta Dv FPE_FLTUND Ta
+floating-point underflow
+.It Ta Dv FPE_FLTRES Ta
+floating-point inexact result
+.It Ta Dv FPE_FLTINV Ta
+invalid floating-point operation
+.It Ta Dv FPE_FLTSUB Ta
+subscript out of range
+.It Dv SIGSEGV Ta Dv SEGV_MAPERR Ta
+address not mapped to object
+.It Ta Dv SEGV_ACCERR Ta
+invalid permissions for mapped object
+.It Dv SIGBUS Ta Dv BUS_ADRALN Ta
+invalid address alignment
+.It Ta Dv BUS_ADRERR Ta
+nonexistent physical address
+.It Ta Dv BUS_OBJERR Ta
+object-specific hardware error
+.It Dv SIGTRAP Ta Dv TRAP_BRKPT Ta
+process breakpoint
+.It Ta Dv TRAP_TRACE Ta
+process trace trap
+.It Dv SIGCHLD Ta Dv CLD_EXITED Ta
+child has exited
+.It Ta Dv CLD_KILLED Ta
+child has terminated abnormally and did not create a core file
+.It Ta Dv CLD_DUMPED Ta
+child has terminated abnormally and created a core file
+.It Ta Dv CLD_TRAPPED Ta
+traced child has trapped
+.It Ta Dv CLD_STOPPED Ta
+child has stopped
+.It Ta Dv CLD_CONTINUED Ta
+stopped child has continued
+.It Dv SIGPOLL Ta Dv POLL_IN Ta
+data input available
+.It Ta Dv POLL_OUT Ta
+output buffers available
+.It Ta Dv POLL_MSG Ta
+input message available
+.It Ta Dv POLL_ERR Ta
+I/O error
+.It Ta Dv POLL_PRI Ta
+high priority input available
+.It Ta Dv POLL_HUP Ta
+device disconnected
+.It Any Ta Dv SI_NOINFO Ta
+Only the
+.Va si_signo
+member is meaningful; the value of all other members is unspecified.
+.It Ta Dv SI_USER Ta
+signal sent by
+.Xr kill 2
+.It Ta Dv SI_QUEUE Ta
+signal sent by
+.Xr sigqueue 2
+.It Ta Dv SI_TIMER Ta
+signal generated by expiration of a timer set by
+.Xr timer_settime 2
+.It Ta Dv SI_ASYNCIO Ta
+signal generated by completion of an asynchronous I/O request
+.It Ta Dv SI_MESGQ Ta
+signal generated by arrival of a message on an empty message queue
+.El
+.Pp
+In addition, the following signal-specific information is available:
+.Bl -column ".Dv SIGPOLL" ".Dv CLD_CONTINUED"
+.It Sy "Signal Member Value"
+.It Dv SIGILL Ta Va si_addr Ta
+address of faulting instruction
+.It Ta Va si_trapno Ta
+machine dependent of trap code
+.It Dv SIGFPE Ta Va si_addr Ta
+address of faulting instruction
+.It Ta Va si_trapno Ta
+machine dependent of trap code
+.It Dv SIGSEGV Ta Va si_addr Ta
+address of faulting memory reference
+.It Ta Va si_trapno Ta
+machine dependent of trap code
+.It Dv SIGBUS Ta Va si_addr Ta
+address of faulting instruction
+.It Ta Va si_trapno Ta
+machine dependent of trap code
+.It Dv SIGCHLD Ta Vt Va si_pid Ta
+child process ID
+.It Ta Va si_status Ta
+exit value or signal; if
+.Va si_code
+is equal to
+.Dv CLD_EXITED ,
+then it is equal to the exit value of the child process, otherwise,
+it is equal to a signal that caused the child process to change state.
+.It Ta Va si_uid Ta "real user ID of the process that sent the signal"
+.It Dv SIGPOLL Ta Va si_band Ta "band event for"
+.Dv POLL_IN , POLL_OUT ,
+or
+.Dv POLL_MSG
+.El
+.Pp
+Finally, the following code-specific information is available:
+.Bl -column ".Dv SI_QUEUE" ".Va si_overrun"
+.It Sy "Code Member Value"
+.It Dv SI_QUEUE Ta Va si_value Ta
+the value passed to
+.Xr sigqueue 2
+system call
+.It Ta Va si_pid Ta
+the process ID that sent the signal
+.It Ta Va si_uid Ta
+real user ID of the process that sent the signal
+.It Dv SI_TIMER Ta Va si_value Ta
+the value passed to
+.Xr timer_create 2
+system call
+.It Ta Va si_timerid Ta
+the timer ID returned by
+.Xr timer_create 2
+system call
+.It Ta Va si_overrun Ta
+timer overrun count corresponding to the signal
+.It Ta Va si_errno Ta
+If timer overrun will be
+.Brq Dv DELAYTIMER_MAX ,
+an error code defined in
+.In errno.h
+is set
+.It Dv SI_ASYNCIO Ta Va si_value Ta
+the value passed to aio system calls
+.It Dv SI_MESGQ Ta Va si_value Ta
+the value passed to
+.Xr mq_notify 2
+system call
+.It Ta Va si_mqd Ta
+the ID of the message queue which generated the signal
+.El
+.Sh NOTES
+Currently, the kernel never generates the
+.Dv SIGPOLL
+signal.
+Also, the
+.Xr kill 2
+system call does not queue signals, so you will not get code
+.Dv SI_USER .
+.Dv SIGCHLD
+signal is queued when a process changed its status or exited.
+.Tn POSIX
+Realtime Extensions like aio, timer, and message queue also queue
+signals.
+For some hardware architectures, the exact value of
+.Va si_addr
+might not be available.
+.Sh SEE ALSO
+.Xr aio_read 2 ,
+.Xr kill 2 ,
+.Xr mq_notify 2 ,
+.Xr sigaction 2 ,
+.Xr sigqueue 2 ,
+.Xr sigwaitinfo 2 ,
+.Xr timer_create 2 ,
+.Xr timer_settime 2 ,
+.Xr waitpid 2
+.Sh STANDARDS
+The
+.Vt siginfo_t
+type conforms to
+.St -p1003.1-2004 .
+.Sh HISTORY
+Full support for
+.Tn POSIX
+signal information first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+This manual page was written by
+.An "David Xu" Aq davidxu@FreeBSD.org .
diff --git a/share/man/man3/stdarg.3 b/share/man/man3/stdarg.3
new file mode 100644
index 0000000..92a26f7
--- /dev/null
+++ b/share/man/man3/stdarg.3
@@ -0,0 +1,232 @@
+.\" Copyright (c) 1990, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the American National Standards Committee X3, on Information
+.\" Processing Systems.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)stdarg.3 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd October 25, 2002
+.Dt STDARG 3
+.Os
+.Sh NAME
+.Nm stdarg
+.Nd variable argument lists
+.Sh SYNOPSIS
+.In stdarg.h
+.Ft void
+.Fn va_start "va_list ap" last
+.Ft type
+.Fn va_arg "va_list ap" type
+.Ft void
+.Fn va_copy "va_list dest" "va_list src"
+.Ft void
+.Fn va_end "va_list ap"
+.Sh DESCRIPTION
+A function may be called with a varying number of arguments of varying
+types.
+The include file
+.In stdarg.h
+declares a type
+.Pq Em va_list
+and defines three macros for stepping
+through a list of arguments whose number and types are not known to
+the called function.
+.Pp
+The called function must declare an object of type
+.Em va_list
+which is used by the macros
+.Fn va_start ,
+.Fn va_arg ,
+.Fn va_copy ,
+and
+.Fn va_end .
+.Pp
+The
+.Fn va_start
+macro initializes
+.Fa ap
+for subsequent use by
+.Fn va_arg
+and
+.Fn va_end ,
+and must be called first.
+.Pp
+The parameter
+.Fa last
+is the name of the last parameter before the variable argument list,
+i.e., the last parameter of which the calling function knows the type.
+.Pp
+Because the address of this parameter is used in the
+.Fn va_start
+macro, it should not be declared as a register variable, or as a
+function or an array type.
+.Pp
+The
+.Fn va_start
+macro returns no value.
+.Pp
+The
+.Fn va_arg
+macro expands to an expression that has the type and value of the next
+argument in the call.
+The parameter
+.Fa ap
+is the
+.Em va_list Fa ap
+initialized by
+.Fn va_start .
+Each call to
+.Fn va_arg
+modifies
+.Fa ap
+so that the next call returns the next argument.
+The parameter
+.Fa type
+is a type name specified so that the type of a pointer to an
+object that has the specified type can be obtained simply by
+adding a *
+to
+.Fa type .
+.Pp
+If there is no next argument, or if
+.Fa type
+is not compatible with the type of the actual next argument
+(as promoted according to the default argument promotions),
+random errors will occur.
+.Pp
+The first use of the
+.Fn va_arg
+macro after that of the
+.Fn va_start
+macro returns the argument after
+.Fa last .
+Successive invocations return the values of the remaining
+arguments.
+.Pp
+The
+.Fn va_copy
+macro copies a variable argument list, previously initialized by
+.Fn va_start ,
+from
+.Fa src
+to
+.Fa dest .
+The state is preserved such that it is equivalent to calling
+.Fn va_start
+with the same second argument used with
+.Fa src ,
+and calling
+.Fn va_arg
+the same number of times as called with
+.Fa src .
+.Pp
+The
+.Fn va_copy
+macro returns no value.
+.Pp
+The
+.Fn va_end
+macro handles a normal return from the function whose variable argument
+list was initialized by
+.Fn va_start .
+.Pp
+The
+.Fn va_end
+macro returns no value.
+.Sh EXAMPLES
+The function
+.Em foo
+takes a string of format characters and prints out the argument
+associated with each format character based on the type.
+.Bd -literal -offset indent
+void foo(char *fmt, ...)
+{
+ va_list ap;
+ int d;
+ char c, *s;
+
+ va_start(ap, fmt);
+ while (*fmt)
+ switch(*fmt++) {
+ case 's': /* string */
+ s = va_arg(ap, char *);
+ printf("string %s\en", s);
+ break;
+ case 'd': /* int */
+ d = va_arg(ap, int);
+ printf("int %d\en", d);
+ break;
+ case 'c': /* char */
+ /* Note: char is promoted to int. */
+ c = va_arg(ap, int);
+ printf("char %c\en", c);
+ break;
+ }
+ va_end(ap);
+}
+.Ed
+.Sh COMPATIBILITY
+These macros are
+.Em not
+compatible with the historic macros they replace.
+A backward compatible version can be found in the include
+file
+.In varargs.h .
+.Sh STANDARDS
+The
+.Fn va_start ,
+.Fn va_arg ,
+.Fn va_copy ,
+and
+.Fn va_end
+macros conform to
+.St -isoC-99 .
+.Sh BUGS
+Unlike the
+.Em varargs
+macros, the
+.Nm
+macros do not permit programmers to
+code a function with no fixed arguments.
+This problem generates work mainly when converting
+.Em varargs
+code to
+.Nm
+code,
+but it also creates difficulties for variadic functions that
+wish to pass all of their arguments on to a function
+that takes a
+.Em va_list
+argument, such as
+.Xr vfprintf 3 .
diff --git a/share/man/man3/sysexits.3 b/share/man/man3/sysexits.3
new file mode 100644
index 0000000..b7c006a
--- /dev/null
+++ b/share/man/man3/sysexits.3
@@ -0,0 +1,144 @@
+.\"
+.\" Copyright (c) 1996 Joerg Wunsch
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.\" "
+.Dd March 31, 1996
+.Os
+.Dt SYSEXITS 3
+.Sh NAME
+.Nm sysexits
+.Nd preferable exit codes for programs
+.Sh SYNOPSIS
+.In sysexits.h
+.Sh DESCRIPTION
+According to
+.Xr style 9 ,
+it is not a good practice to call
+.Xr exit 3
+with arbitrary values to indicate a failure condition when ending
+a program.
+Instead, the pre-defined exit codes from
+.Nm
+should be used, so the caller of the process can get a rough
+estimation about the failure class without looking up the source code.
+.Pp
+The successful exit is always indicated by a status of 0, or
+.Sy EX_OK .
+Error numbers begin at
+.Sy EX__BASE
+to reduce the possibility of clashing with other exit statuses that
+random programs may already return.
+The meaning of the codes is
+approximately as follows:
+.Bl -tag -width "EX_UNAVAILABLEXX(XX)"
+.It Sy EX_USAGE Pq 64
+The command was used incorrectly, e.g., with the wrong number of
+arguments, a bad flag, a bad syntax in a parameter, or whatever.
+.It Sy EX_DATAERR Pq 65
+The input data was incorrect in some way.
+This should only be used
+for user's data and not system files.
+.It Sy EX_NOINPUT Pq 66
+An input file (not a system file) did not exist or was not readable.
+This could also include errors like
+.Dq \&No message
+to a mailer (if it cared to catch it).
+.It Sy EX_NOUSER Pq 67
+The user specified did not exist.
+This might be used for mail
+addresses or remote logins.
+.It Sy EX_NOHOST Pq 68
+The host specified did not exist.
+This is used in mail addresses or
+network requests.
+.It Sy EX_UNAVAILABLE Pq 69
+A service is unavailable.
+This can occur if a support program or file
+does not exist.
+This can also be used as a catchall message when
+something you wanted to do does not work, but you do not know why.
+.It Sy EX_SOFTWARE Pq 70
+An internal software error has been detected.
+This should be limited
+to non-operating system related errors as possible.
+.It Sy EX_OSERR Pq 71
+An operating system error has been detected.
+This is intended to be
+used for such things as
+.Dq cannot fork ,
+.Dq cannot create pipe ,
+or the like.
+It includes things like getuid returning a user that
+does not exist in the passwd file.
+.It Sy EX_OSFILE Pq 72
+Some system file (e.g.,
+.Pa /etc/passwd ,
+.Pa /var/run/utmp ,
+etc.) does not exist, cannot be opened, or has some sort of error
+(e.g., syntax error).
+.It Sy EX_CANTCREAT Pq 73
+A (user specified) output file cannot be created.
+.It Sy EX_IOERR Pq 74
+An error occurred while doing I/O on some file.
+.It Sy EX_TEMPFAIL Pq 75
+Temporary failure, indicating something that is not really an error.
+In sendmail, this means that a mailer (e.g.) could not create a
+connection, and the request should be reattempted later.
+.It Sy EX_PROTOCOL Pq 76
+The remote system returned something that was
+.Dq not possible
+during a protocol exchange.
+.It Sy EX_NOPERM Pq 77
+You did not have sufficient permission to perform the operation.
+This
+is not intended for file system problems, which should use
+.Sy EX_NOINPUT
+or
+.Sy EX_CANTCREAT ,
+but rather for higher level permissions.
+.It Sy EX_CONFIG Pq 78
+Something was found in an unconfigured or misconfigured state.
+.El
+.Pp
+The numerical values corresponding to the symbolical ones are given in
+parenthesis for easy reference.
+.Sh SEE ALSO
+.Xr err 3 ,
+.Xr exit 3 ,
+.Xr style 9
+.Sh HISTORY
+The
+.Nm
+file appeared somewhere after
+.Bx 4.3 .
+.Sh AUTHORS
+This manual page was written by
+.An J\(:org Wunsch
+after the comments in
+.In sysexits.h .
+.Sh BUGS
+The choice of an appropriate exit value is often ambiguous.
diff --git a/share/man/man3/tgmath.3 b/share/man/man3/tgmath.3
new file mode 100644
index 0000000..4957c9b
--- /dev/null
+++ b/share/man/man3/tgmath.3
@@ -0,0 +1,153 @@
+.\" 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 14, 2004
+.Os
+.Dt TGMATH 3
+.Sh NAME
+.Nm tgmath
+.Nd "type-generic macros"
+.Sh SYNOPSIS
+.In tgmath.h
+.Sh DESCRIPTION
+The header
+.In tgmath.h
+provides type-generic macros
+for
+.In math.h
+and
+.In complex.h
+functions that have
+.Vt float
+(suffixed with
+.Sy f ) ,
+.Vt double
+and
+.Vt "long double"
+(suffixed with
+.Sy l )
+versions.
+The arguments that vary across the three functions and have type
+.Vt float , double
+and
+.Vt "long double" ,
+respectively, are called
+.Em "generic arguments" .
+.Pp
+The following rules describe which function is actually called if a
+type-generic macro is invoked.
+If any generic argument has type
+.Vt "long double"
+or
+.Vt "long double complex" ,
+the
+.Vt "long double"
+function is called.
+Else, if any generic argument has type
+.Vt double , "double complex"
+or an integer type, the
+.Vt double
+version is invoked.
+Otherwise, the macro expands to the
+.Vt float
+implementation.
+.Pp
+For the macros in the following table, both real and complex functions
+exist.
+The real functions are prototyped in
+.In math.h
+and the complex equivalents in
+.In complex.h .
+The complex function is called if any of the generic arguments is a
+complex value.
+Otherwise, the real equivalent is called.
+.Bl -column -offset indent ".Fn acosh" "Sy real function" ".Sy complex function"
+.It Sy Macro Ta Sy real function Ta Sy complex function
+.It Fn acos Ta Fn acos Ta Fn cacos
+.It Fn asin Ta Fn asin Ta Fn casin
+.It Fn atan Ta Fn atan Ta Fn catan
+.It Fn acosh Ta Fn acosh Ta Fn cacosh
+.It Fn asinh Ta Fn asinh Ta Fn casinh
+.It Fn atanh Ta Fn atanh Ta Fn catanh
+.It Fn cos Ta Fn cos Ta Fn ccos
+.It Fn sin Ta Fn sin Ta Fn csin
+.It Fn tan Ta Fn tan Ta Fn ctan
+.It Fn cosh Ta Fn cosh Ta Fn ccosh
+.It Fn sinh Ta Fn sinh Ta Fn csinh
+.It Fn tanh Ta Fn tanh Ta Fn ctanh
+.It Fn exp Ta Fn exp Ta Fn cexp
+.It Fn log Ta Fn log Ta Fn clog
+.It Fn pow Ta Fn pow Ta Fn cpow
+.It Fn sqrt Ta Fn sqrt Ta Fn csqrt
+.It Fn fabs Ta Fn fabs Ta Fn cabs
+.El
+.Pp
+No complex functions exist for the following macros, so passing a
+complex value to a generic argument invokes undefined behaviour:
+.Bl -column -offset indent ".Fn nexttoward" ".Fn nexttoward" ".Fn nexttoward" ".Fn nexttoward"
+.It Fn atan2 Ta Fn fma Ta Fn llround Ta Fn remainder
+.It Fn cbrt Ta Fn fmax Ta Fn log10 Ta Fn remquo
+.It Fn ceil Ta Fn fmin Ta Fn log1p Ta Fn rint
+.It Fn copysign Ta Fn fmod Ta Fn log2 Ta Fn round
+.It Fn erf Ta Fn frexp Ta Fn logb Ta Fn scalbn
+.It Fn erfc Ta Fn hypot Ta Fn lrint Ta Fn scalbln
+.It Fn exp2 Ta Fn ilogb Ta Fn lround Ta Fn tgamma
+.It Fn expm1 Ta Fn ldexp Ta Fn nextbyint Ta Fn trunc
+.It Fn fdim Ta Fn lgamma Ta Fn nextafter
+.It Fn floor Ta Fn llrint Ta Fn nexttoward
+.El
+.Pp
+The following macros always expand to a complex function:
+.Bl -column -offset indent ".Fn cimag" ".Fn cimag" ".Fn cimag" ".Fn cimag" ".Fn cimag"
+.It Fn carg Ta Fn cimag Ta Fn conj Ta Fn cproj Ta Fn creal
+.El
+.Pp
+This header includes
+.In complex.h
+and
+.In math.h .
+.Sh STANDARDS
+The header
+.In tgmath.h
+conforms to
+.St -isoC-99 .
+.Sh HISTORY
+The header
+.In tgmath.h
+first appeared in
+.Fx 5.3 .
+.Sh BUGS
+The header
+.In tgmath.h
+cannot be implemented with strictly conforming C code and needs
+special compiler support.
+The current implementation only works for GCC.
+.Pp
+Many of the functions mentioned here are not prototyped in
+.In math.h
+or
+.In complex.h
+as they are not yet implemented.
diff --git a/share/man/man3/timeradd.3 b/share/man/man3/timeradd.3
new file mode 100644
index 0000000..7b6293f
--- /dev/null
+++ b/share/man/man3/timeradd.3
@@ -0,0 +1,119 @@
+.\" Copyright (c) 1999 Kelly Yancey <kbyanc@posi.net>
+.\" 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. 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 JOHN BIRRELL 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 11, 1999
+.Dt TIMERADD 3
+.Os
+.Sh NAME
+.Nm timeradd ,
+.Nm timersub ,
+.Nm timerclear ,
+.Nm timerisset ,
+.Nm timercmp
+.Nd operations on timevals
+.Sh SYNOPSIS
+.In sys/time.h
+.Ft void
+.Fn timeradd "struct timeval *a" "struct timeval *b" "struct timeval *res"
+.Ft void
+.Fn timersub "struct timeval *a" "struct timeval *b" "struct timeval *res"
+.Ft void
+.Fn timerclear "struct timeval *tvp"
+.Ft int
+.Fn timerisset "struct timeval *tvp"
+.Ft int
+.Fn timercmp "struct timeval *a" "struct timeval *b" CMP
+.Sh DESCRIPTION
+These macros are provided for manipulating
+.Fa timeval
+structures for use with the
+.Xr gettimeofday 2
+and
+.Xr settimeofday 2
+calls.
+The structure is defined in
+.In sys/time.h
+as:
+.Bd -literal
+struct timeval {
+ long tv_sec; /* seconds since Jan. 1, 1970 */
+ long tv_usec; /* and microseconds */
+};
+.Ed
+.Pp
+.Fn timeradd
+adds the time information stored in
+.Fa a
+to
+.Fa b
+and stores the resulting
+.Vt timeval
+in
+.Fa res .
+The results are simplified such that the value of
+.Fa res->tv_usec
+is always less than 1,000,000 (1 second).
+.Pp
+.Fn timersub
+subtracts the time information stored in
+.Fa b
+from
+.Fa a
+and stores the resulting
+.Vt timeval
+in
+.Fa res .
+.Pp
+.Fn timerclear
+initializes
+.Fa tvp
+to midnight (0 hour) January 1st, 1970 (the Epoch).
+.Pp
+.Fn timerisset
+returns true if
+.Fa tvp
+is set to any time value other than the Epoch.
+.Pp
+.Fn timercmp
+compares
+.Fa a
+to
+.Fa b
+using the comparison operator given in
+.Fa CMP ,
+and returns the result of that comparison.
+.Sh SEE ALSO
+.Xr gettimeofday 2
+.Sh HISTORY
+The
+.Fn timeradd
+family of macros were imported from
+.Nx 1.1 ,
+and appeared in
+.Fx 2.2.6 .
diff --git a/share/man/man3/tree.3 b/share/man/man3/tree.3
new file mode 100644
index 0000000..aa53eb1
--- /dev/null
+++ b/share/man/man3/tree.3
@@ -0,0 +1,502 @@
+.\" $OpenBSD: tree.3,v 1.7 2002/06/12 01:09:20 provos Exp $
+.\"
+.\" Copyright 2002 Niels Provos <provos@citi.umich.edu>
+.\" 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 Niels Provos.
+.\" 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$
+.\"
+.Dd December 27, 2007
+.Dt TREE 3
+.Os
+.Sh NAME
+.Nm SPLAY_PROTOTYPE ,
+.Nm SPLAY_GENERATE ,
+.Nm SPLAY_ENTRY ,
+.Nm SPLAY_HEAD ,
+.Nm SPLAY_INITIALIZER ,
+.Nm SPLAY_ROOT ,
+.Nm SPLAY_EMPTY ,
+.Nm SPLAY_NEXT ,
+.Nm SPLAY_MIN ,
+.Nm SPLAY_MAX ,
+.Nm SPLAY_FIND ,
+.Nm SPLAY_LEFT ,
+.Nm SPLAY_RIGHT ,
+.Nm SPLAY_FOREACH ,
+.Nm SPLAY_INIT ,
+.Nm SPLAY_INSERT ,
+.Nm SPLAY_REMOVE ,
+.Nm RB_PROTOTYPE ,
+.Nm RB_PROTOTYPE_STATIC ,
+.Nm RB_GENERATE ,
+.Nm RB_GENERATE_STATIC ,
+.Nm RB_ENTRY ,
+.Nm RB_HEAD ,
+.Nm RB_INITIALIZER ,
+.Nm RB_ROOT ,
+.Nm RB_EMPTY ,
+.Nm RB_NEXT ,
+.Nm RB_PREV ,
+.Nm RB_MIN ,
+.Nm RB_MAX ,
+.Nm RB_FIND ,
+.Nm RB_NFIND ,
+.Nm RB_LEFT ,
+.Nm RB_RIGHT ,
+.Nm RB_PARENT ,
+.Nm RB_FOREACH ,
+.Nm RB_FOREACH_REVERSE ,
+.Nm RB_INIT ,
+.Nm RB_INSERT ,
+.Nm RB_REMOVE
+.Nd "implementations of splay and red-black trees"
+.Sh SYNOPSIS
+.In sys/tree.h
+.Fn SPLAY_PROTOTYPE NAME TYPE FIELD CMP
+.Fn SPLAY_GENERATE NAME TYPE FIELD CMP
+.Fn SPLAY_ENTRY TYPE
+.Fn SPLAY_HEAD HEADNAME TYPE
+.Ft "struct TYPE *"
+.Fn SPLAY_INITIALIZER "SPLAY_HEAD *head"
+.Fn SPLAY_ROOT "SPLAY_HEAD *head"
+.Ft bool
+.Fn SPLAY_EMPTY "SPLAY_HEAD *head"
+.Ft "struct TYPE *"
+.Fn SPLAY_NEXT NAME "SPLAY_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn SPLAY_MIN NAME "SPLAY_HEAD *head"
+.Ft "struct TYPE *"
+.Fn SPLAY_MAX NAME "SPLAY_HEAD *head"
+.Ft "struct TYPE *"
+.Fn SPLAY_FIND NAME "SPLAY_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn SPLAY_LEFT "struct TYPE *elm" "SPLAY_ENTRY NAME"
+.Ft "struct TYPE *"
+.Fn SPLAY_RIGHT "struct TYPE *elm" "SPLAY_ENTRY NAME"
+.Fn SPLAY_FOREACH VARNAME NAME "SPLAY_HEAD *head"
+.Ft void
+.Fn SPLAY_INIT "SPLAY_HEAD *head"
+.Ft "struct TYPE *"
+.Fn SPLAY_INSERT NAME "SPLAY_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn SPLAY_REMOVE NAME "SPLAY_HEAD *head" "struct TYPE *elm"
+.Fn RB_PROTOTYPE NAME TYPE FIELD CMP
+.Fn RB_PROTOTYPE_STATIC NAME TYPE FIELD CMP
+.Fn RB_GENERATE NAME TYPE FIELD CMP
+.Fn RB_GENERATE_STATIC NAME TYPE FIELD CMP
+.Fn RB_ENTRY TYPE
+.Fn RB_HEAD HEADNAME TYPE
+.Fn RB_INITIALIZER "RB_HEAD *head"
+.Ft "struct TYPE *"
+.Fn RB_ROOT "RB_HEAD *head"
+.Ft "bool"
+.Fn RB_EMPTY "RB_HEAD *head"
+.Ft "struct TYPE *"
+.Fn RB_NEXT NAME "RB_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn RB_PREV NAME "RB_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn RB_MIN NAME "RB_HEAD *head"
+.Ft "struct TYPE *"
+.Fn RB_MAX NAME "RB_HEAD *head"
+.Ft "struct TYPE *"
+.Fn RB_FIND NAME "RB_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn RB_NFIND NAME "RB_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn RB_LEFT "struct TYPE *elm" "RB_ENTRY NAME"
+.Ft "struct TYPE *"
+.Fn RB_RIGHT "struct TYPE *elm" "RB_ENTRY NAME"
+.Ft "struct TYPE *"
+.Fn RB_PARENT "struct TYPE *elm" "RB_ENTRY NAME"
+.Fn RB_FOREACH VARNAME NAME "RB_HEAD *head"
+.Fn RB_FOREACH_REVERSE VARNAME NAME "RB_HEAD *head"
+.Ft void
+.Fn RB_INIT "RB_HEAD *head"
+.Ft "struct TYPE *"
+.Fn RB_INSERT NAME "RB_HEAD *head" "struct TYPE *elm"
+.Ft "struct TYPE *"
+.Fn RB_REMOVE NAME "RB_HEAD *head" "struct TYPE *elm"
+.Sh DESCRIPTION
+These macros define data structures for different types of trees:
+splay trees and red-black trees.
+.Pp
+In the macro definitions,
+.Fa TYPE
+is the name tag of a user defined structure that must contain a field of type
+.Vt SPLAY_ENTRY ,
+or
+.Vt RB_ENTRY ,
+named
+.Fa ENTRYNAME .
+The argument
+.Fa HEADNAME
+is the name tag of a user defined structure that must be declared
+using the macros
+.Fn SPLAY_HEAD ,
+or
+.Fn RB_HEAD .
+The argument
+.Fa NAME
+has to be a unique name prefix for every tree that is defined.
+.Pp
+The function prototypes are declared with
+.Fn SPLAY_PROTOTYPE ,
+.Fn RB_PROTOTYPE ,
+or
+.Fn RB_PROTOTYPE_STATIC .
+The function bodies are generated with
+.Fn SPLAY_GENERATE ,
+.Fn RB_GENERATE ,
+or
+.Fn RB_GENERATE_STATIC .
+See the examples below for further explanation of how these macros are used.
+.Sh SPLAY TREES
+A splay tree is a self-organizing data structure.
+Every operation on the tree causes a splay to happen.
+The splay moves the requested
+node to the root of the tree and partly rebalances it.
+.Pp
+This has the benefit that request locality causes faster lookups as
+the requested nodes move to the top of the tree.
+On the other hand, every lookup causes memory writes.
+.Pp
+The Balance Theorem bounds the total access time for
+.Ar m
+operations and
+.Ar n
+inserts on an initially empty tree as
+.Fn O "\*[lp]m + n\*[rp]lg n" .
+The
+amortized cost for a sequence of
+.Ar m
+accesses to a splay tree is
+.Fn O "lg n" .
+.Pp
+A splay tree is headed by a structure defined by the
+.Fn SPLAY_HEAD
+macro.
+A
+structure is declared as follows:
+.Bd -ragged -offset indent
+.Fn SPLAY_HEAD HEADNAME TYPE
+.Va head ;
+.Ed
+.Pp
+where
+.Fa HEADNAME
+is the name of the structure to be defined, and struct
+.Fa TYPE
+is the type of the elements to be inserted into the tree.
+.Pp
+The
+.Fn SPLAY_ENTRY
+macro declares a structure that allows elements to be connected in the tree.
+.Pp
+In order to use the functions that manipulate the tree structure,
+their prototypes need to be declared with the
+.Fn SPLAY_PROTOTYPE
+macro,
+where
+.Fa NAME
+is a unique identifier for this particular tree.
+The
+.Fa TYPE
+argument is the type of the structure that is being managed
+by the tree.
+The
+.Fa FIELD
+argument is the name of the element defined by
+.Fn SPLAY_ENTRY .
+.Pp
+The function bodies are generated with the
+.Fn SPLAY_GENERATE
+macro.
+It takes the same arguments as the
+.Fn SPLAY_PROTOTYPE
+macro, but should be used only once.
+.Pp
+Finally,
+the
+.Fa CMP
+argument is the name of a function used to compare tree nodes
+with each other.
+The function takes two arguments of type
+.Vt "struct TYPE *" .
+If the first argument is smaller than the second, the function returns a
+value smaller than zero.
+If they are equal, the function returns zero.
+Otherwise, it should return a value greater than zero.
+The compare
+function defines the order of the tree elements.
+.Pp
+The
+.Fn SPLAY_INIT
+macro initializes the tree referenced by
+.Fa head .
+.Pp
+The splay tree can also be initialized statically by using the
+.Fn SPLAY_INITIALIZER
+macro like this:
+.Bd -ragged -offset indent
+.Fn SPLAY_HEAD HEADNAME TYPE
+.Va head
+=
+.Fn SPLAY_INITIALIZER &head ;
+.Ed
+.Pp
+The
+.Fn SPLAY_INSERT
+macro inserts the new element
+.Fa elm
+into the tree.
+.Pp
+The
+.Fn SPLAY_REMOVE
+macro removes the element
+.Fa elm
+from the tree pointed by
+.Fa head .
+.Pp
+The
+.Fn SPLAY_FIND
+macro can be used to find a particular element in the tree.
+.Bd -literal -offset indent
+struct TYPE find, *res;
+find.key = 30;
+res = SPLAY_FIND(NAME, head, &find);
+.Ed
+.Pp
+The
+.Fn SPLAY_ROOT ,
+.Fn SPLAY_MIN ,
+.Fn SPLAY_MAX ,
+and
+.Fn SPLAY_NEXT
+macros can be used to traverse the tree:
+.Bd -literal -offset indent
+for (np = SPLAY_MIN(NAME, &head); np != NULL; np = SPLAY_NEXT(NAME, &head, np))
+.Ed
+.Pp
+Or, for simplicity, one can use the
+.Fn SPLAY_FOREACH
+macro:
+.Bd -ragged -offset indent
+.Fn SPLAY_FOREACH np NAME head
+.Ed
+.Pp
+The
+.Fn SPLAY_EMPTY
+macro should be used to check whether a splay tree is empty.
+.Sh RED-BLACK TREES
+A red-black tree is a binary search tree with the node color as an
+extra attribute.
+It fulfills a set of conditions:
+.Bl -enum -offset indent
+.It
+Every search path from the root to a leaf consists of the same number of
+black nodes.
+.It
+Each red node (except for the root) has a black parent.
+.It
+Each leaf node is black.
+.El
+.Pp
+Every operation on a red-black tree is bounded as
+.Fn O "lg n" .
+The maximum height of a red-black tree is
+.Fn 2lg "n + 1" .
+.Pp
+A red-black tree is headed by a structure defined by the
+.Fn RB_HEAD
+macro.
+A
+structure is declared as follows:
+.Bd -ragged -offset indent
+.Fn RB_HEAD HEADNAME TYPE
+.Va head ;
+.Ed
+.Pp
+where
+.Fa HEADNAME
+is the name of the structure to be defined, and struct
+.Fa TYPE
+is the type of the elements to be inserted into the tree.
+.Pp
+The
+.Fn RB_ENTRY
+macro declares a structure that allows elements to be connected in the tree.
+.Pp
+In order to use the functions that manipulate the tree structure,
+their prototypes need to be declared with the
+.Fn RB_PROTOTYPE
+or
+.Fn RB_PROTOTYPE_STATIC
+macro,
+where
+.Fa NAME
+is a unique identifier for this particular tree.
+The
+.Fa TYPE
+argument is the type of the structure that is being managed
+by the tree.
+The
+.Fa FIELD
+argument is the name of the element defined by
+.Fn RB_ENTRY .
+.Pp
+The function bodies are generated with the
+.Fn RB_GENERATE
+or
+.Fn RB_GENERATE_STATIC
+macro.
+These macros take the same arguments as the
+.Fn RB_PROTOTYPE
+and
+.Fn RB_PROTOTYPE_STATIC
+macros, but should be used only once.
+.Pp
+Finally,
+the
+.Fa CMP
+argument is the name of a function used to compare tree noded
+with each other.
+The function takes two arguments of type
+.Vt "struct TYPE *" .
+If the first argument is smaller than the second, the function returns a
+value smaller than zero.
+If they are equal, the function returns zero.
+Otherwise, it should return a value greater than zero.
+The compare
+function defines the order of the tree elements.
+.Pp
+The
+.Fn RB_INIT
+macro initializes the tree referenced by
+.Fa head .
+.Pp
+The red-black tree can also be initialized statically by using the
+.Fn RB_INITIALIZER
+macro like this:
+.Bd -ragged -offset indent
+.Fn RB_HEAD HEADNAME TYPE
+.Va head
+=
+.Fn RB_INITIALIZER &head ;
+.Ed
+.Pp
+The
+.Fn RB_INSERT
+macro inserts the new element
+.Fa elm
+into the tree.
+.Pp
+The
+.Fn RB_REMOVE
+macro removes the element
+.Fa elm
+from the tree pointed by
+.Fa head .
+.Pp
+The
+.Fn RB_FIND
+and
+.Fn RB_NFIND
+macros can be used to find a particular element in the tree.
+.Bd -literal -offset indent
+struct TYPE find, *res;
+find.key = 30;
+res = RB_FIND(NAME, head, &find);
+.Ed
+.Pp
+The
+.Fn RB_ROOT ,
+.Fn RB_MIN ,
+.Fn RB_MAX ,
+.Fn RB_NEXT ,
+and
+.Fn RB_PREV
+macros can be used to traverse the tree:
+.Pp
+.Dl "for (np = RB_MIN(NAME, &head); np != NULL; np = RB_NEXT(NAME, &head, np))"
+.Pp
+Or, for simplicity, one can use the
+.Fn RB_FOREACH
+or
+.Fn RB_FOREACH_REVERSE
+macro:
+.Bd -ragged -offset indent
+.Fn RB_FOREACH np NAME head
+.Ed
+.Pp
+The
+.Fn RB_EMPTY
+macro should be used to check whether a red-black tree is empty.
+.Sh NOTES
+Trying to free a tree in the following way is a common error:
+.Bd -literal -offset indent
+SPLAY_FOREACH(var, NAME, head) {
+ SPLAY_REMOVE(NAME, head, var);
+ free(var);
+}
+free(head);
+.Ed
+.Pp
+Since
+.Va var
+is freed, the
+.Fn FOREACH
+macro refers to a pointer that may have been reallocated already.
+Proper code needs a second variable.
+.Bd -literal -offset indent
+for (var = SPLAY_MIN(NAME, head); var != NULL; var = nxt) {
+ nxt = SPLAY_NEXT(NAME, head, var);
+ SPLAY_REMOVE(NAME, head, var);
+ free(var);
+}
+.Ed
+.Pp
+Both
+.Fn RB_INSERT
+and
+.Fn SPLAY_INSERT
+return
+.Dv NULL
+if the element was inserted in the tree successfully, otherwise they
+return a pointer to the element with the colliding key.
+.Pp
+Accordingly,
+.Fn RB_REMOVE
+and
+.Fn SPLAY_REMOVE
+return the pointer to the removed element otherwise they return
+.Dv NULL
+to indicate an error.
+.Sh AUTHORS
+The author of the tree macros is
+.An Niels Provos .
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
new file mode 100644
index 0000000..15189b0
--- /dev/null
+++ b/share/man/man4/Makefile
@@ -0,0 +1,623 @@
+# @(#)Makefile 8.1 (Berkeley) 6/18/93
+# $FreeBSD$
+
+MAN= aac.4 \
+ acpi.4 \
+ ${_acpi_aiboost.4} \
+ ${_acpi_asus.4} \
+ ${_acpi_dock.4} \
+ ${_acpi_fujitsu.4} \
+ ${_acpi_ibm.4} \
+ ${_acpi_panasonic.4} \
+ ${_acpi_sony.4} \
+ acpi_thermal.4 \
+ ${_acpi_toshiba.4} \
+ acpi_video.4 \
+ adv.4 \
+ adw.4 \
+ ae.4 \
+ age.4 \
+ agp.4 \
+ aha.4 \
+ ahb.4 \
+ ahc.4 \
+ ahd.4 \
+ aio.4 \
+ ale.4 \
+ altq.4 \
+ amd.4 \
+ ${_amdsmb.4} \
+ amr.4 \
+ an.4 \
+ arcmsr.4 \
+ ${_asmc.4} \
+ asr.4 \
+ ata.4 \
+ atapicam.4 \
+ ataraid.4 \
+ ath.4 \
+ ath_hal.4 \
+ atkbd.4 \
+ atkbdc.4 \
+ audit.4 \
+ auditpipe.4 \
+ aue.4 \
+ axe.4 \
+ bce.4 \
+ bfe.4 \
+ bge.4 \
+ bktr.4 \
+ blackhole.4 \
+ bpf.4 \
+ bt.4 \
+ cardbus.4 \
+ carp.4 \
+ ccd.4 \
+ cd.4 \
+ cdce.4 \
+ ch.4 \
+ ciss.4 \
+ cm.4 \
+ cmx.4 \
+ coda.4 \
+ ${_coretemp.4} \
+ ${_cpuctl.4} \
+ cpufreq.4 \
+ crypto.4 \
+ cue.4 \
+ cxgb.4 \
+ cy.4 \
+ da.4 \
+ dc.4 \
+ dcons.4 \
+ dcons_crom.4 \
+ ddb.4 \
+ de.4 \
+ devctl.4 \
+ digi.4 \
+ disc.4 \
+ divert.4 \
+ dpt.4 \
+ dummynet.4 \
+ ed.4 \
+ edsc.4 \
+ ef.4 \
+ ehci.4 \
+ em.4 \
+ en.4 \
+ enc.4 \
+ esp.4 \
+ et.4 \
+ exca.4 \
+ faith.4 \
+ fatm.4 \
+ fd.4 \
+ fdc.4 \
+ firewire.4 \
+ fla.4 \
+ fpa.4 \
+ fwe.4 \
+ fwip.4 \
+ fwohci.4 \
+ fxp.4 \
+ gbde.4 \
+ gdb.4 \
+ gem.4 \
+ geom.4 \
+ geom_fox.4 \
+ geom_linux_lvm.4 \
+ geom_uzip.4 \
+ gif.4 \
+ gre.4 \
+ harp.4 \
+ hatm.4 \
+ hfa.4 \
+ hifn.4 \
+ hme.4 \
+ ${_hptiop.4} \
+ ${_hptmv.4} \
+ ${_hptrr.4} \
+ hwpmc.4 \
+ ichsmb.4 \
+ ${_ichwd.4} \
+ icmp.4 \
+ icmp6.4 \
+ ida.4 \
+ idt.4 \
+ ieee80211.4 \
+ if_bridge.4 \
+ ifmib.4 \
+ igb.4 \
+ iic.4 \
+ iicbb.4 \
+ iicbus.4 \
+ iicsmb.4 \
+ iir.4 \
+ inet.4 \
+ inet6.4 \
+ intpm.4 \
+ intro.4 \
+ ${_io.4} \
+ ip.4 \
+ ip6.4 \
+ ipfirewall.4 \
+ ${_ipmi.4} \
+ ips.4 \
+ ipsec.4 \
+ ipw.4 \
+ iscsi_initiator.4 \
+ isp.4 \
+ ispfw.4 \
+ iwi.4 \
+ iwn.4 \
+ ixgb.4 \
+ ixgbe.4 \
+ jme.4 \
+ joy.4 \
+ ${_k8temp.4} \
+ kbdmux.4 \
+ keyboard.4 \
+ kld.4 \
+ ktr.4 \
+ kue.4 \
+ lagg.4 \
+ le.4 \
+ led.4 \
+ lge.4 \
+ ${_linux.4} \
+ lmc.4 \
+ lo.4 \
+ lp.4 \
+ lpbb.4 \
+ lpt.4 \
+ mac.4 \
+ mac_biba.4 \
+ mac_bsdextended.4 \
+ mac_ifoff.4 \
+ mac_lomac.4 \
+ mac_mls.4 \
+ mac_none.4 \
+ mac_partition.4 \
+ mac_portacl.4 \
+ mac_seeotheruids.4 \
+ mac_stub.4 \
+ mac_test.4 \
+ malo.4 \
+ md.4 \
+ mem.4 \
+ meteor.4 \
+ mfi.4 \
+ miibus.4 \
+ mlx.4 \
+ mly.4 \
+ mmc.4 \
+ mmcsd.4 \
+ mn.4 \
+ mouse.4 \
+ mpt.4 \
+ msk.4 \
+ mtio.4 \
+ multicast.4 \
+ mxge.4 \
+ my.4 \
+ natm.4 \
+ natmip.4 \
+ ncr.4 \
+ ncv.4 \
+ ${_ndis.4} \
+ netgraph.4 \
+ netintro.4 \
+ ${_nfe.4} \
+ ${_nfsmb.4} \
+ ng_async.4 \
+ ng_atm.4 \
+ ngatmbase.4 \
+ ng_atmllc.4 \
+ ng_bluetooth.4 \
+ ng_bpf.4 \
+ ng_bridge.4 \
+ ng_bt3c.4 \
+ ng_btsocket.4 \
+ ng_car.4 \
+ ng_ccatm.4 \
+ ng_cisco.4 \
+ ng_deflate.4 \
+ ng_device.4 \
+ nge.4 \
+ ng_echo.4 \
+ ng_eiface.4 \
+ ng_etf.4 \
+ ng_ether.4 \
+ ng_ether_echo.4 \
+ ng_fec.4 \
+ ng_frame_relay.4 \
+ ng_gif.4 \
+ ng_gif_demux.4 \
+ ng_h4.4 \
+ ng_hci.4 \
+ ng_hole.4 \
+ ng_hub.4 \
+ ng_iface.4 \
+ ng_ipfw.4 \
+ ng_ip_input.4 \
+ ng_ksocket.4 \
+ ng_l2cap.4 \
+ ng_l2tp.4 \
+ ng_lmi.4 \
+ ng_mppc.4 \
+ ng_nat.4 \
+ ng_netflow.4 \
+ ng_one2many.4 \
+ ng_ppp.4 \
+ ng_pppoe.4 \
+ ng_pptpgre.4 \
+ ng_pred1.4 \
+ ng_rfc1490.4 \
+ ng_socket.4 \
+ ng_source.4 \
+ ng_split.4 \
+ ng_sppp.4 \
+ ng_sscfu.4 \
+ ng_sscop.4 \
+ ng_tag.4 \
+ ng_tcpmss.4 \
+ ng_tee.4 \
+ ng_tty.4 \
+ ng_ubt.4 \
+ ng_UI.4 \
+ ng_uni.4 \
+ ng_vjc.4 \
+ ng_vlan.4 \
+ nmdm.4 \
+ nsp.4 \
+ null.4 \
+ ${_nve.4} \
+ ${_nxge.4} \
+ ohci.4 \
+ orm.4 \
+ pass.4 \
+ patm.4 \
+ pccard.4 \
+ pccbb.4 \
+ pci.4 \
+ pcib.4 \
+ pcic.4 \
+ pcm.4 \
+ pcn.4 \
+ pim.4 \
+ polling.4 \
+ ppbus.4 \
+ ppc.4 \
+ ppi.4 \
+ ppp.4 \
+ psm.4 \
+ pst.4 \
+ pt.4 \
+ pts.4 \
+ pty.4 \
+ puc.4 \
+ ral.4 \
+ random.4 \
+ rc.4 \
+ re.4 \
+ rl.4 \
+ rndtest.4 \
+ route.4 \
+ rp.4 \
+ rue.4 \
+ rum.4 \
+ sa.4 \
+ safe.4 \
+ sbp.4 \
+ sbp_targ.4 \
+ scc.4 \
+ sched_4bsd.4 \
+ sched_ule.4 \
+ screen.4 \
+ scsi.4 \
+ sctp.4 \
+ sem.4 \
+ ses.4 \
+ sf.4 \
+ si.4 \
+ sio.4 \
+ sis.4 \
+ sk.4 \
+ sl.4 \
+ smb.4 \
+ smbus.4 \
+ smp.4 \
+ sn.4 \
+ snd_ad1816.4 \
+ snd_als4000.4 \
+ snd_atiixp.4 \
+ snd_cmi.4 \
+ snd_cs4281.4 \
+ snd_csa.4 \
+ snd_ds1.4 \
+ snd_emu10k1.4 \
+ snd_emu10kx.4 \
+ snd_envy24.4 \
+ snd_envy24ht.4 \
+ snd_es137x.4 \
+ snd_ess.4 \
+ snd_fm801.4 \
+ snd_gusc.4 \
+ snd_hda.4 \
+ snd_ich.4 \
+ snd_maestro3.4 \
+ snd_maestro.4 \
+ snd_mss.4 \
+ snd_neomagic.4 \
+ snd_sbc.4 \
+ snd_solo.4 \
+ snd_spicds.4 \
+ snd_t4dwave.4 \
+ snd_uaudio.4 \
+ snd_via8233.4 \
+ snd_via82c686.4 \
+ snd_vibes.4 \
+ snp.4 \
+ spic.4 \
+ ${_spkr.4} \
+ splash.4 \
+ sppp.4 \
+ ste.4 \
+ stf.4 \
+ stg.4 \
+ stge.4 \
+ sym.4 \
+ syncache.4 \
+ syncer.4 \
+ syscons.4 \
+ sysmouse.4 \
+ tap.4 \
+ targ.4 \
+ tcp.4 \
+ tdfx.4 \
+ termios.4 \
+ textdump.4 \
+ ti.4 \
+ tl.4 \
+ trm.4 \
+ tty.4 \
+ tun.4 \
+ twa.4 \
+ twe.4 \
+ tx.4 \
+ txp.4 \
+ u3g.4 \
+ uark.4 \
+ uart.4 \
+ ubsa.4 \
+ ubsec.4 \
+ ubser.4 \
+ ubtbcmfw.4 \
+ uchcom.4 \
+ ucom.4 \
+ ucycom.4 \
+ udav.4 \
+ udbp.4 \
+ udp.4 \
+ ufm.4 \
+ ufoma.4 \
+ uftdi.4 \
+ ugen.4 \
+ uhci.4 \
+ uhid.4 \
+ uipaq.4 \
+ ukbd.4 \
+ ulpt.4 \
+ umass.4 \
+ umct.4 \
+ umodem.4 \
+ ums.4 \
+ unix.4 \
+ upgt.4 \
+ uplcom.4 \
+ ural.4 \
+ urio.4 \
+ usb.4 \
+ uscanner.4 \
+ uslcom.4 \
+ utopia.4 \
+ uvisor.4 \
+ uvscom.4 \
+ vga.4 \
+ vge.4 \
+ vinum.4 \
+ vkbd.4 \
+ vlan.4 \
+ vpo.4 \
+ vr.4 \
+ watchdog.4 \
+ wb.4 \
+ wi.4 \
+ witness.4 \
+ wlan.4 \
+ wlan_acl.4 \
+ wlan_amrr.4 \
+ wlan_ccmp.4 \
+ wlan_tkip.4 \
+ wlan_wep.4 \
+ wlan_xauth.4 \
+ ${_wpi.4} \
+ xe.4 \
+ xl.4 \
+ xpt.4 \
+ zero.4 \
+ zyd.4
+
+MLINKS= ae.4 if_ae.4
+MLINKS+=age.4 if_age.4
+MLINKS+=agp.4 agpgart.4
+MLINKS+=ale.4 if_ale.4
+MLINKS+=altq.4 ALTQ.4
+MLINKS+=an.4 if_an.4
+MLINKS+=ata.4 acd.4 \
+ ata.4 ad.4 \
+ ata.4 afd.4 \
+ ata.4 ast.4
+MLINKS+=aue.4 if_aue.4
+MLINKS+=axe.4 if_axe.4
+MLINKS+=bce.4 if_bce.4
+MLINKS+=bfe.4 if_bfe.4
+MLINKS+=bge.4 if_bge.4
+MLINKS+=bktr.4 brooktree.4
+MLINKS+=crypto.4 cryptodev.4
+MLINKS+=cue.4 if_cue.4
+MLINKS+=dc.4 if_dc.4
+MLINKS+=de.4 if_de.4
+MLINKS+=disc.4 if_disc.4
+MLINKS+=ed.4 if_ed.4
+MLINKS+=edsc.4 if_edsc.4
+MLINKS+=ef.4 if_ef.4
+MLINKS+=em.4 if_em.4
+MLINKS+=en.4 if_en.4
+MLINKS+=enc.4 if_enc.4
+MLINKS+=et.4 if_et.4
+MLINKS+=faith.4 if_faith.4
+MLINKS+=fatm.4 if_fatm.4
+MLINKS+=fd.4 stderr.4 \
+ fd.4 stdin.4 \
+ fd.4 stdout.4
+MLINKS+=firewire.4 ieee1394.4
+MLINKS+=fpa.4 fea.4
+MLINKS+=fwe.4 if_fwe.4
+MLINKS+=fwip.4 if_fwip.4
+MLINKS+=fxp.4 if_fxp.4
+MLINKS+=gem.4 if_gem.4
+MLINKS+=geom.4 GEOM.4
+MLINKS+=gif.4 if_gif.4
+MLINKS+=gre.4 if_gre.4
+MLINKS+=hatm.4 if_hatm.4
+MLINKS+=hme.4 if_hme.4
+MLINKS+=${_hptrr.4} ${_rr232x.4}
+MLINKS+=idt.4 if_idt.4
+MLINKS+=if_bridge.4 bridge.4
+MLINKS+=igb.4 if_igb.4
+MLINKS+=ip.4 rawip.4
+MLINKS+=ipfirewall.4 ipaccounting.4 \
+ ipfirewall.4 ipacct.4 \
+ ipfirewall.4 ipfw.4
+MLINKS+=ipw.4 if_ipw.4
+MLINKS+=iwi.4 if_iwi.4
+MLINKS+=iwn.4 if_iwn.4
+MLINKS+=ixgb.4 if_ixgb.4
+MLINKS+=ixgbe.4 if_ixgbe.4
+MLINKS+=jme.4 if_jme.4
+MLINKS+=kue.4 if_kue.4
+MLINKS+=lagg.4 trunk.4
+MLINKS+=le.4 if_le.4
+MLINKS+=lge.4 if_lge.4
+MLINKS+=lo.4 loop.4
+MLINKS+=lp.4 plip.4
+MLINKS+=malo.4 if_malo.4
+MLINKS+=md.4 vn.4
+MLINKS+=mem.4 kmem.4
+MLINKS+=mn.4 if_mn.4
+MLINKS+=mxge.4 if_mxge.4
+MLINKS+=my.4 if_my.4
+MLINKS+=${_ndis.4} ${_if_ndis.4}
+MLINKS+=netintro.4 net.4 \
+ netintro.4 networking.4
+MLINKS+=${_nfe.4} ${_if_nfe.4}
+MLINKS+=nge.4 if_nge.4
+MLINKS+=${_nve.4} ${_if_nve.4}
+MLINKS+=${_nxge.4} ${_if_nxge.4}
+MLINKS+=patm.4 if_patm.4
+MLINKS+=pccbb.4 cbb.4
+MLINKS+=pcm.4 snd.4 \
+ pcm.4 sound.4
+MLINKS+=pcn.4 if_pcn.4
+MLINKS+=ppp.4 if_ppp.4
+MLINKS+=ral.4 if_ral.4
+MLINKS+=re.4 if_re.4
+MLINKS+=rl.4 if_rl.4
+MLINKS+=rue.4 if_rue.4
+MLINKS+=rum.4 if_rum.4
+MLINKS+=scsi.4 CAM.4 \
+ scsi.4 cam.4 \
+ scsi.4 scbus.4 \
+ scsi.4 SCSI.4
+MLINKS+=sf.4 if_sf.4
+MLINKS+=sis.4 if_sis.4
+MLINKS+=sk.4 if_sk.4
+MLINKS+=sl.4 if_sl.4
+MLINKS+=smp.4 SMP.4
+MLINKS+=sn.4 if_sn.4
+MLINKS+=snd_envy24.4 snd_ak452x.4
+MLINKS+=snd_sbc.4 snd_sb16.4 \
+ snd_sbc.4 snd_sb8.4
+MLINKS+=${_spkr.4} ${_speaker.4}
+MLINKS+=splash.4 screensaver.4
+MLINKS+=ste.4 if_ste.4
+MLINKS+=stf.4 if_stf.4
+MLINKS+=stge.4 if_stge.4
+MLINKS+=syncache.4 syncookies.4
+MLINKS+=syscons.4 sc.4
+MLINKS+=tap.4 if_tap.4
+MLINKS+=tdfx.4 tdfx_linux.4
+MLINKS+=ti.4 if_ti.4
+MLINKS+=tl.4 if_tl.4
+MLINKS+=tun.4 if_tun.4
+MLINKS+=tx.4 if_tx.4
+MLINKS+=txp.4 if_txp.4
+MLINKS+=u3g.4 u3gstub.4
+MLINKS+=udav.4 if_udav.4
+MLINKS+=upgt.4 if_upgt.4
+MLINKS+=ural.4 if_ural.4
+MLINKS+=vge.4 if_vge.4
+MLINKS+=vlan.4 if_vlan.4
+MLINKS+=vpo.4 imm.4
+MLINKS+=vr.4 if_vr.4
+MLINKS+=watchdog.4 SW_WATCHDOG.4
+MLINKS+=wb.4 if_wb.4
+MLINKS+=wi.4 if_wi.4
+MLINKS+=${_wpi.4} ${_if_wpi.4}
+MLINKS+=xe.4 if_xe.4
+MLINKS+=xl.4 if_xl.4
+MLINKS+=zyd.4 if_zyd.4
+
+.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
+_acpi_aiboost.4=acpi_aiboost.4
+_acpi_asus.4= acpi_asus.4
+_acpi_dock.4= acpi_dock.4
+_acpi_fujitsu.4=acpi_fujitsu.4
+_acpi_ibm.4= acpi_ibm.4
+_acpi_panasonic.4=acpi_panasonic.4
+_acpi_sony.4= acpi_sony.4
+_acpi_toshiba.4=acpi_toshiba.4
+_amdsmb.4= amdsmb.4
+_asmc.4= asmc.4
+_coretemp.4= coretemp.4
+_cpuctl.4= cpuctl.4
+_hptiop.4= hptiop.4
+_hptmv.4= hptmv.4
+_hptrr.4= hptrr.4
+_ichwd.4= ichwd.4
+_if_ndis.4= if_ndis.4
+_if_nfe.4= if_nfe.4
+_if_nve.4= if_nve.4
+_if_nxge.4= if_nxge.4
+_if_wpi.4= if_wpi.4
+_ipmi.4= ipmi.4
+_io.4= io.4
+_linux.4= linux.4
+_ndis.4= ndis.4
+_k8temp.4= k8temp.4
+_nfe.4= nfe.4
+_nfsmb.4= nfsmb.4
+_nve.4= nve.4
+_nxge.4= nxge.4
+_rr232x.4= rr232x.4
+_speaker.4= speaker.4
+_spkr.4= spkr.4
+_wpi.4= wpi.4
+.endif
+
+.if exists(${.CURDIR}/man4.${MACHINE_ARCH})
+SUBDIR= man4.${MACHINE_ARCH}
+.endif
+
+.include <bsd.prog.mk>
diff --git a/share/man/man4/aac.4 b/share/man/man4/aac.4
new file mode 100644
index 0000000..6ad88c2
--- /dev/null
+++ b/share/man/man4/aac.4
@@ -0,0 +1,322 @@
+.\" Copyright (c) 2000 Scott Long
+.\" 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$
+.Dd June 27, 2008
+.Dt AAC 4
+.Os
+.Sh NAME
+.Nm aac
+.Nd Adaptec AdvancedRAID Controller driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd device pci
+.Cd device aac
+.Cd device aacp
+.Pp
+To compile in debugging code:
+.Cd options AAC_DEBUG=N
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+aac_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Adaptec AAC family of SCSI Ultra2, Ultra160,
+and Ultra320, SATA and SAS RAID controllers.
+.Pp
+Access to RAID containers is available via the
+.Pa /dev/aacd?
+device nodes.
+The
+.Nm aacp
+device enables the SCSI pass-thru interface and allows devices connected
+to the card such as CD-ROMs to be available via the CAM
+.Xr scsi 4
+subsystem.
+Note that not all cards allow this interface to be enabled.
+.Pp
+The
+.Pa /dev/aac?
+device nodes provide access to the management interface of the controller.
+One node exists per installed card.
+The aliases
+.Pa /dev/afa?
+and
+.Pa /dev/hpn?
+exist for compatibility with the Dell and HP versions of management tools,
+respectively.
+If the kernel is compiled with the
+.Dv COMPAT_LINUX
+option, or the
+.Pa aac_linux.ko
+and
+.Pa linux.ko
+modules are loaded, the
+Linux-compatible
+.Xr ioctl 2
+interface for the management device will be enabled and will allow
+Linux-based management applications to control the card.
+.Ss Tuning
+The read-only sysctl
+.Va hw.aac.iosize_max
+defaults to 65536 and may be set at boot time to another value via
+.Xr loader 8 .
+This value determines the maximum data transfer size allowed
+to/from an array.
+Setting it higher will result in better performance,
+especially for large sequential access patterns.
+.Em Beware :
+internal limitations
+of the card limit this value to 64K for arrays with many members.
+While it may be safe to raise this value, this is done
+.Em at the operator's own risk .
+Note also that
+performance peaks at a value of 96K,
+and drops off dramatically at 128K,
+due to other limitations of the card.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec AAC-364
+.It
+Adaptec RAID 2045
+.It
+Adaptec RAID 2405
+.It
+Adaptec RAID 2445
+.It
+Adaptec RAID 2805
+.It
+Adaptec RAID 3085
+.It
+Adaptec RAID 31205
+.It
+Adaptec RAID 31605
+.It
+Adaptec RAID 5085
+.It
+Adaptec RAID 51205
+.It
+Adaptec RAID 51245
+.It
+Adaptec RAID 51605
+.It
+Adaptec RAID 51645
+.It
+Adaptec RAID 52445
+.It
+Adaptec RAID 5405
+.It
+Adaptec RAID 5445
+.It
+Adaptec RAID 5805
+.It
+Adaptec SAS RAID 3405
+.It
+Adaptec SAS RAID 3805
+.It
+Adaptec SAS RAID 4000SAS
+.It
+Adaptec SAS RAID 4005SAS
+.It
+Adaptec SAS RAID 4800SAS
+.It
+Adaptec SAS RAID 4805SAS
+.It
+Adaptec SATA RAID 2020SA ZCR
+.It
+Adaptec SATA RAID 2025SA ZCR
+.It
+Adaptec SATA RAID 2026ZCR
+.It
+Adaptec SATA RAID 2410SA
+.It
+Adaptec SATA RAID 2420SA
+.It
+Adaptec SATA RAID 2610SA
+.It
+Adaptec SATA RAID 2620SA
+.It
+Adaptec SATA RAID 2810SA
+.It
+Adaptec SATA RAID 2820SA
+.It
+Adaptec SATA RAID 21610SA
+.It
+Adaptec SCSI RAID 2020ZCR
+.It
+Adaptec SCSI RAID 2025ZCR
+.It
+Adaptec SCSI RAID 2120S
+.It
+Adaptec SCSI RAID 2130S
+.It
+Adaptec SCSI RAID 2130SLP
+.It
+Adaptec SCSI RAID 2230SLP
+.It
+Adaptec SCSI RAID 2200S
+.It
+Adaptec SCSI RAID 2240S
+.It
+Adaptec SCSI RAID 3230S
+.It
+Adaptec SCSI RAID 3240S
+.It
+Adaptec SCSI RAID 5400S
+.It
+Dell CERC SATA RAID 2
+.It
+Dell PERC 2/Si
+.It
+Dell PERC 2/QC
+.It
+Dell PERC 3/Si
+.It
+Dell PERC 3/Di
+.It
+Dell PERC 320/DC
+.It
+HP ML110 G2 (Adaptec SATA RAID 2610SA)
+.It
+HP NetRAID 4M
+.It
+IBM ServeRAID 8i
+.It
+IBM ServeRAID 8k
+.It
+IBM ServeRAID 8s
+.It
+ICP RAID ICP5045BL
+.It
+ICP RAID ICP5085BL
+.It
+ICP RAID ICP5085SL
+.It
+ICP RAID ICP5125BR
+.It
+ICP RAID ICP5125SL
+.It
+ICP RAID ICP5165BR
+.It
+ICP RAID ICP5165SL
+.It
+ICP RAID ICP5445SL
+.It
+ICP RAID ICP5805BL
+.It
+ICP RAID ICP5805SL
+.It
+ICP ICP5085BR SAS RAID
+.It
+ICP ICP9085LI SAS RAID
+.It
+ICP ICP9047MA SATA RAID
+.It
+ICP ICP9067MA SATA RAID
+.It
+ICP ICP9087MA SATA RAID
+.It
+ICP ICP9014RO SCSI RAID
+.It
+ICP ICP9024RO SCSI RAID
+.It
+Legend S220
+.It
+Legend S230
+.It
+Sun STK RAID REM
+.It
+Sun STK RAID EM
+.It
+SG-XPCIESAS-R-IN
+.It
+SG-XPCIESAS-R-EX
+.It
+AOC-USAS-S4i
+.It
+AOC-USAS-S8i
+.It
+AOC-USAS-S4iR
+.It
+AOC-USAS-S8iR
+.It
+AOC-USAS-S8i-LP
+.It
+AOC-USAS-S8iR-LP
+.El
+.Sh FILES
+.Bl -tag -width /boot/kernel/aac.ko -compact
+.It Pa /dev/aac?
+aac management interface
+.It Pa /dev/aacd?
+disk/container interface
+.El
+.Sh DIAGNOSTICS
+Compiling with
+.Dv AAC_DEBUG
+set to a number between 0 and 3
+will enable increasingly verbose debug messages.
+.Pp
+The adapter can send status and alert messages asynchronously
+to the driver.
+These messages are printed on the system console,
+and are also queued for retrieval by a management application.
+.Sh SEE ALSO
+.Xr kld 4 ,
+.Xr linux 4 ,
+.Xr scsi 4 ,
+.Xr kldload 8 ,
+.Xr loader 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.3 .
+.Sh AUTHORS
+.An Mike Smith
+.Aq msmith@FreeBSD.org
+.An Scott Long
+.Aq scottl@FreeBSD.org
+.Sh BUGS
+This driver is not compatible with Dell controllers that have version 1.x
+firmware.
+The firmware version is the same as the kernel version printed in the BIOS
+POST and driver attach messages.
+.Pp
+The controller is not actually paused on suspend/resume.
diff --git a/share/man/man4/acpi.4 b/share/man/man4/acpi.4
new file mode 100644
index 0000000..0b8db99
--- /dev/null
+++ b/share/man/man4/acpi.4
@@ -0,0 +1,602 @@
+.\"
+.\" Copyright (c) 2001 Michael Smith
+.\" 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$
+.\"
+.Dd July 29, 2006
+.Dt ACPI 4
+.Os
+.Sh NAME
+.Nm acpi
+.Nd Advanced Configuration and Power Management support
+.Sh SYNOPSIS
+.Cd "device acpi"
+.Pp
+.Cd "options ACPI_DEBUG"
+.Cd "options DDB"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Intel/Microsoft/Compaq/Toshiba ACPI
+standard.
+This support includes platform hardware discovery (superseding the
+PnP and PCI BIOS), as well as power management (superseding APM) and
+other features.
+ACPI core support is provided by the ACPI CA reference implementation
+from Intel.
+.Pp
+Note that the
+.Nm
+driver is automatically loaded by the
+.Xr loader 8 ,
+and should only be
+compiled into the kernel on platforms where ACPI is mandatory.
+.Sh SYSCTL VARIABLES
+The
+.Nm
+driver is intended to provide power management without user intervention.
+If the default settings are not optimal, the following sysctls can be
+used to modify or monitor
+.Nm
+behavior.
+.Bl -tag -width indent
+.It Va hw.acpi.acline
+AC line state (1 means online, 0 means on battery power).
+.It Va hw.acpi.cpu.cx_usage
+Debugging information listing the percent of total usage for each sleep state.
+The values are reset when
+.Va hw.acpi.cpu.cx_lowest
+is modified.
+.It Va hw.acpi.cpu.cx_lowest
+Lowest Cx state to use for idling the CPU.
+A scheduling algorithm will select states between
+.Li C1
+and this setting
+as system load dictates.
+To enable ACPI CPU idling control,
+.Va machdep.cpu_idle_hlt
+must be set to 1.
+.It Va hw.acpi.cpu.cx_supported
+List of supported CPU idle states and their transition latency
+in microseconds.
+Each state has a type (e.g.,
+.Li C2 ) .
+.Li C1
+is equivalent to the ia32
+.Li HLT
+instruction,
+.Li C2
+provides a deeper
+sleep with the same semantics, and
+.Li C3
+provides the deepest sleep
+but additionally requires bus mastering to be disabled.
+States greater than
+.Li C3
+provide even more power savings with the same
+semantics as the
+.Li C3
+state.
+Deeper sleeps provide more power savings but increased transition
+latency when an interrupt occurs.
+.It Va hw.acpi.disable_on_reboot
+Disable ACPI during the reboot process.
+Most systems reboot fine with ACPI still enabled, but some require
+exiting to legacy mode first.
+Default is 0, leave ACPI enabled.
+.It Va hw.acpi.handle_reboot
+Use the ACPI Reset Register capability to reboot the system.
+Default is 0, use legacy reboot support.
+Some newer systems require use of this register, while some only work
+with legacy rebooting support.
+.It Va hw.acpi.lid_switch_state
+Suspend state
+.Pq Li S1 Ns \[en] Ns Li S5
+to enter when the lid switch (i.e., a notebook screen) is closed.
+Default is
+.Dq Li NONE
+(do nothing).
+.It Va hw.acpi.power_button_state
+Suspend state
+.Pq Li S1 Ns \[en] Ns Li S5
+to enter when the power button is pressed.
+Default is
+.Li S5
+(power-off nicely).
+.It Va hw.acpi.reset_video
+Reset the video adapter from real mode during the resume path.
+Some systems need this help, others have display problems if it is enabled.
+Default is 0 (disabled).
+.It Va hw.acpi.s4bios
+Indicate whether the system supports
+.Li S4BIOS .
+This means that the BIOS can handle all the functions of suspending the
+system to disk.
+Otherwise, the OS is responsible for suspending to disk
+.Pq Li S4OS .
+Most current systems do not support
+.Li S4BIOS .
+.It Va hw.acpi.sleep_button_state
+Suspend state
+.Pq Li S1 Ns \[en] Ns Li S5
+to enter when the sleep button is pressed.
+This is usually a special function button on the keyboard.
+Default is
+.Li S3
+(suspend-to-RAM).
+.It Va hw.acpi.sleep_delay
+Wait this number of seconds between preparing the system to suspend and
+actually entering the suspend state.
+Default is 1 second.
+.It Va hw.acpi.supported_sleep_state
+Suspend states
+.Pq Li S1 Ns \[en] Ns Li S5
+supported by the BIOS.
+.Bl -tag -width indent
+.It Li S1
+Quick suspend to RAM.
+The CPU enters a lower power state, but most peripherals are left running.
+.It Li S2
+Lower power state than
+.Li S1 ,
+but with the same basic characteristics.
+Not supported by many systems.
+.It Li S3
+Suspend to RAM.
+Most devices are powered off, and the system stops running except for
+memory refresh.
+.It Li S4
+Suspend to disk.
+All devices are powered off, and the system stops running.
+When resuming, the system starts as if from a cold power on.
+Not yet supported by
+.Fx
+unless
+.Li S4BIOS
+is available.
+.It Li S5
+System shuts down cleanly and powers off.
+.El
+.It Va hw.acpi.verbose
+Enable verbose printing from the various ACPI subsystems.
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Pa /boot/loader.conf .
+Many of these tunables also have a matching
+.Xr sysctl 8
+entry for access after boot.
+.Bl -tag -width indent
+.It Va acpi_dsdt_load
+Enables loading of a custom ACPI DSDT.
+.It Va acpi_dsdt_name
+Name of the DSDT table to load, if loading is enabled.
+.It Va debug.acpi.disabled
+Selectively disables portions of ACPI for debugging purposes.
+.It Va debug.acpi.max_threads
+Specify the number of task threads that are started on boot.
+Limiting this to 1 may help work around various BIOSes that cannot
+handle parallel requests.
+The default value is 3.
+.It Va debug.acpi.quirks
+Override any automatic quirks completely.
+.It Va debug.acpi.resume_beep
+Beep the PC speaker on resume.
+This can help diagnose suspend/resume problems.
+Default is 0 (disabled).
+.It Va hint.acpi.0.disabled
+Set this to 1 to disable all of ACPI.
+If ACPI has been disabled on your system due to a blacklist entry for your
+BIOS, you can set this to 0 to re-enable ACPI for testing.
+.It Va hw.acpi.ec.poll_timeout
+Delay in milliseconds to wait for the EC to respond.
+Try increasing this number if you get the error
+.Qq Li AE_NO_HARDWARE_RESPONSE .
+.It Va hw.acpi.host_mem_start
+Override the assumed memory starting address for PCI host bridges.
+.It Va hw.acpi.reset_video
+Enables calling the VESA reset BIOS vector on the resume path.
+This can fix some graphics cards that have problems such as LCD white-out
+after resume.
+Default is 0 (disabled).
+.It Va hw.acpi.serialize_methods
+Allow override of whether methods execute in parallel or not.
+Enable this for serial behavior, which fixes
+.Qq Li AE_ALREADY_EXISTS
+errors for
+AML that really cannot handle parallel method execution.
+It is off by default since this breaks recursive methods and some IBMs use
+such code.
+.It Va hw.acpi.verbose
+Turn on verbose debugging information about what ACPI is doing.
+.It Va hw.pci.link.%s.%d.irq
+Override the interrupt to use for this link and index.
+This capability should be used carefully, and only if a device is not
+working with
+.Nm
+enabled.
+.Qq %s
+is the name of the link (e.g., LNKA).
+.Qq %d
+is the resource index when the link supports multiple IRQs.
+Most PCI links only have one IRQ resource, so the below form should be used.
+.It Va hw.pci.link.%s.irq
+Override the interrupt to use.
+This capability should be used carefully, and only if a device is not
+working with
+.Nm
+enabled.
+.Qq %s
+is the name of the link (e.g., LNKA).
+.El
+.Sh DISABLING ACPI
+Since ACPI support on different platforms varies greatly, there are many
+debugging and tuning options available.
+.Pp
+For machines known not to work with
+.Nm
+enabled, there is a BIOS blacklist.
+Currently, the blacklist only controls whether
+.Nm
+should be disabled or not.
+In the future, it will have more granularity to control features (the
+infrastructure for that is already there).
+.Pp
+To enable
+.Nm
+(for debugging purposes, etc.) on machines that are on the blacklist, set the
+kernel environment variable
+.Va hint.acpi.0.disabled
+to 0.
+Before trying this, consider updating your BIOS to a more recent version that
+may be compatible with ACPI.
+.Pp
+To disable the
+.Nm
+driver completely, set the kernel environment variable
+.Va hint.acpi.0.disabled
+to 1.
+.Pp
+Some i386 machines totally fail to operate with some or all of ACPI disabled.
+Other i386 machines fail with ACPI enabled.
+Disabling all or part of ACPI on non-i386 platforms (i.e., platforms where
+ACPI support is mandatory) may result in a non-functional system.
+.Pp
+The
+.Nm
+driver comprises a set of drivers, which may be selectively disabled
+in case of problems.
+To disable a sub-driver, list it in the kernel
+environment variable
+.Va debug.acpi.disabled .
+Multiple entries can be listed, separated by a space.
+.Pp
+ACPI sub-devices and features that can be disabled:
+.Bl -tag -width ".Li sysresource"
+.It Li all
+Disable all ACPI features and devices.
+.It Li acad
+.Pq Vt device
+Supports AC adapter.
+.It Li bus
+.Pq Vt feature
+Probes and attaches subdevices.
+Disabling will avoid scanning the ACPI namespace entirely.
+.It Li children
+.Pq Vt feature
+Attaches standard ACPI sub-drivers and devices enumerated in the
+ACPI namespace.
+Disabling this has a similar effect to disabling
+.Dq Li bus ,
+except that the
+ACPI namespace will still be scanned.
+.It Li button
+.Pq Vt device
+Supports ACPI button devices (typically power and sleep buttons).
+.It Li cmbat
+.Pq Vt device
+Control-method batteries device.
+.It Li cpu
+.Pq Vt device
+Supports CPU power-saving and speed-setting functions.
+.It Li ec
+.Pq Vt device
+Supports the ACPI Embedded Controller interface, used to communicate
+with embedded platform controllers.
+.It Li isa
+.Pq Vt device
+Supports an ISA bus bridge defined in the ACPI namespace,
+typically as a child of a PCI bus.
+.It Li lid
+.Pq Vt device
+Supports an ACPI laptop lid switch, which typically puts a
+system to sleep.
+.It Li quirks
+.Pq Vt feature
+Do not honor quirks.
+Quirks automatically disable ACPI functionality based on the XSDT table's
+OEM vendor name and revision date.
+.It Li pci
+.Pq Vt device
+Supports Host to PCI bridges.
+.It Li pci_link
+.Pq Vt feature
+Performs PCI interrupt routing.
+.It Li sysresource
+.Pq Vt device
+Pseudo-devices containing resources which ACPI claims.
+.It Li thermal
+.Pq Vt device
+Supports system cooling and heat management.
+.It Li timer
+.Pq Vt device
+Implements a timecounter using the ACPI fixed-frequency timer.
+.It Li video
+.Pq Vt device
+Supports
+.Xr acpi_video 4
+which may conflict with
+.Xr agp 4
+device.
+.El
+.Pp
+It is also possible to avoid portions of the ACPI namespace which
+may be causing problems, by listing the full path of the root of
+the region to be avoided in the kernel environment variable
+.Va debug.acpi.avoid .
+The object and all of its children will be ignored during the
+bus/children scan of the namespace.
+The ACPI CA code will still know about the avoided region.
+.Sh DEBUGGING OUTPUT
+To enable debugging output,
+.Nm
+must be compiled with
+.Cd "options ACPI_DEBUG" .
+Debugging output is separated between layers and levels, where a layer is
+a component of the ACPI subsystem, and a level is a particular kind
+of debugging output.
+.Pp
+Both layers and levels are specified as a whitespace-separated list of
+tokens, with layers listed in
+.Va debug.acpi.layer
+and levels in
+.Va debug.acpi.level .
+.Pp
+The first set of layers is for ACPI-CA components, and the second is for
+.Fx
+drivers.
+The ACPI-CA layer descriptions include the prefix for the files they
+refer to.
+The supported layers are:
+.Pp
+.Bl -tag -compact -width ".Li ACPI_CA_DISASSEMBLER"
+.It Li ACPI_UTILITIES
+Utility ("ut") functions
+.It Li ACPI_HARDWARE
+Hardware access ("hw")
+.It Li ACPI_EVENTS
+Event and GPE ("ev")
+.It Li ACPI_TABLES
+Table access ("tb")
+.It Li ACPI_NAMESPACE
+Namespace evaluation ("ns")
+.It Li ACPI_PARSER
+AML parser ("ps")
+.It Li ACPI_DISPATCHER
+Internal representation of interpreter state ("ds")
+.It Li ACPI_EXECUTER
+Execute AML methods ("ex")
+.It Li ACPI_RESOURCES
+Resource parsing ("rs")
+.It Li ACPI_CA_DEBUGGER
+Debugger implementation ("db", "dm")
+.It Li ACPI_OS_SERVICES
+Usermode support routines ("os")
+.It Li ACPI_CA_DISASSEMBLER
+Disassembler implementation (unused)
+.It Li ACPI_ALL_COMPONENTS
+All the above ACPI-CA components
+.It Li ACPI_AC_ADAPTER
+AC adapter driver
+.It Li ACPI_BATTERY
+Control-method battery driver
+.It Li ACPI_BUS
+ACPI, ISA, and PCI bus drivers
+.It Li ACPI_BUTTON
+Power and sleep button driver
+.It Li ACPI_EC
+Embedded controller driver
+.It Li ACPI_FAN
+Fan driver
+.It Li ACPI_OEM
+Platform-specific driver for hotkeys, LED, etc.
+.It Li ACPI_POWER
+Power resource driver
+.It Li ACPI_PROCESSOR
+CPU driver
+.It Li ACPI_THERMAL
+Thermal zone driver
+.It Li ACPI_TIMER
+Timer driver
+.It Li ACPI_ALL_DRIVERS
+All the above
+.Fx
+ACPI drivers
+.El
+.Pp
+The supported levels are:
+.Pp
+.Bl -tag -compact -width ".Li ACPI_LV_AML_DISASSEMBLE"
+.It Li ACPI_LV_ERROR
+Fatal error conditions
+.It Li ACPI_LV_WARN
+Warnings and potential problems
+.It Li ACPI_LV_INIT
+Initialization progress
+.It Li ACPI_LV_DEBUG_OBJECT
+Stores to objects
+.It Li ACPI_LV_INFO
+General information and progress
+.It Li ACPI_LV_ALL_EXCEPTIONS
+All the previous levels
+.It Li ACPI_LV_INIT_NAMES
+.It Li ACPI_LV_PARSE
+.It Li ACPI_LV_LOAD
+.It Li ACPI_LV_DISPATCH
+.It Li ACPI_LV_EXEC
+.It Li ACPI_LV_NAMES
+.It Li ACPI_LV_OPREGION
+.It Li ACPI_LV_BFIELD
+.It Li ACPI_LV_TABLES
+.It Li ACPI_LV_VALUES
+.It Li ACPI_LV_OBJECTS
+.It Li ACPI_LV_RESOURCES
+.It Li ACPI_LV_USER_REQUESTS
+.It Li ACPI_LV_PACKAGE
+.It Li ACPI_LV_VERBOSITY1
+All the previous levels
+.It Li ACPI_LV_ALLOCATIONS
+.It Li ACPI_LV_FUNCTIONS
+.It Li ACPI_LV_OPTIMIZATIONS
+.It Li ACPI_LV_VERBOSITY2
+.It Li ACPI_LV_ALL
+.It Li ACPI_LV_MUTEX
+.It Li ACPI_LV_THREADS
+.It Li ACPI_LV_IO
+.It Li ACPI_LV_INTERRUPTS
+.It Li ACPI_LV_VERBOSITY3
+All the previous levels
+.It Li ACPI_LV_AML_DISASSEMBLE
+.It Li ACPI_LV_VERBOSE_INFO
+.It Li ACPI_LV_FULL_TABLES
+.It Li ACPI_LV_EVENTS
+.It Li ACPI_LV_VERBOSE
+All levels after
+.Qq Li ACPI_LV_VERBOSITY3
+.El
+.Pp
+Selection of the appropriate layer and level values is important
+to avoid massive amounts of debugging output.
+For example, the following configuration is a good way to gather initial
+information.
+It enables debug output for both ACPI-CA and the
+.Nm
+driver, printing basic information about errors, warnings, and progress.
+.Bd -literal -offset indent
+debug.acpi.layer="ACPI_ALL_COMPONENTS ACPI_ALL_DRIVERS"
+debug.acpi.level="ACPI_LV_ALL_EXCEPTIONS"
+.Ed
+.Pp
+Debugging output by the ACPI CA subsystem is prefixed with the
+module name in lowercase, followed by a source line number.
+Output from the
+.Fx Ns -local
+code follows the same format, but
+the module name is uppercased.
+.Sh OVERRIDING YOUR BIOS BYTECODE
+ACPI interprets bytecode named AML
+(ACPI Machine Language)
+provided by the BIOS vendor as a memory image at boot time.
+Sometimes, the AML code contains a bug that does not appear when parsed
+by the Microsoft implementation.
+.Fx
+provides a way to override it with your own AML code to work around
+or debug such problems.
+Note that all AML in your DSDT and any SSDT tables is overridden.
+.Pp
+In order to load your AML code, you must edit
+.Pa /boot/loader.conf
+and include the following lines.
+.Bd -literal -offset indent
+acpi_dsdt_load="YES"
+acpi_dsdt_name="/boot/acpi_dsdt.aml" # You may change this name.
+.Ed
+.Pp
+In order to prepare your AML code, you will need the
+.Xr acpidump 8
+and
+.Xr iasl 8
+utilities and some ACPI knowledge.
+.Sh COMPATIBILITY
+ACPI is only found and supported on i386/ia32, ia64, and amd64.
+.Sh SEE ALSO
+.Xr kenv 1 ,
+.Xr acpi_thermal 4 ,
+.Xr device.hints 5 ,
+.Xr loader.conf 5 ,
+.Xr acpiconf 8 ,
+.Xr acpidump 8 ,
+.Xr config 8 ,
+.Xr iasl 8
+.Rs
+.%A "Compaq Computer Corporation"
+.%A "Intel Corporation"
+.%A "Microsoft Corporation"
+.%A "Phoenix Technologies Ltd."
+.%A "Toshiba Corporation"
+.%D August 25, 2003
+.%T "Advanced Configuration and Power Interface Specification"
+.%O http://acpi.info/spec.htm
+.Re
+.Sh AUTHORS
+.An -nosplit
+The ACPI CA subsystem is developed and maintained by
+Intel Architecture Labs.
+.Pp
+The following people made notable contributions to the ACPI subsystem
+in
+.Fx :
+.An Michael Smith ,
+.An Takanori Watanabe Aq takawata@jp.FreeBSD.org ,
+.An Mitsuru IWASAKI Aq iwasaki@jp.FreeBSD.org ,
+.An Munehiro Matsuda ,
+.An Nate Lawson ,
+the ACPI-jp mailing list at
+.Aq acpi-jp@jp.FreeBSD.org ,
+and many other contributors.
+.Pp
+This manual page was written by
+.An Michael Smith Aq msmith@FreeBSD.org .
+.Sh BUGS
+Many BIOS versions have serious bugs that may cause system instability,
+break suspend/resume, or prevent devices from operating properly due to
+IRQ routing problems.
+Upgrade your BIOS to the latest version available from the vendor before
+deciding it is a problem with
+.Nm .
+.Pp
+The
+.Nm
+CPU idle power management drive conflicts with the local APIC (LAPIC)
+timer.
+Disable APIC mode with
+.Va hint.apic.0.disabled
+or do not use the
+.Li C2
+and
+.Li C3
+states if APIC mode is enabled.
diff --git a/share/man/man4/acpi_aiboost.4 b/share/man/man4/acpi_aiboost.4
new file mode 100644
index 0000000..a4631a8
--- /dev/null
+++ b/share/man/man4/acpi_aiboost.4
@@ -0,0 +1,102 @@
+.\" $NetBSD: aiboost.4,v 1.2 2007/03/14 07:10:51 wiz Exp $
+.\"
+.\" Copyright (c) 2007 Takanori Watanabe
+.\" Copyright (c) 2007 Juan Romero Pardines
+.\" 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$
+.\"
+.Dd March 14, 2007
+.Dt ACPI_AIBOOST 4
+.Os
+.Sh NAME
+.Nm acpi_aiboost
+.Nd ASUS AI Booster hardware monitor
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_aiboost"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_aiboost_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for monitoring the hardware sensors in recent
+.Tn ASUS
+motherboards.
+The driver uses ACPI as the backend to fetch sensor values and
+descriptions and provides its data via the
+.Xr sysctl 8
+interface, under dev.acpi_aiboost.0 namespace.
+Descriptions for these values are available
+with sysctl -d.
+.Pp
+The
+.Nm
+driver typically has 7 sensors, depending on the motherboard and
+chipset:
+.Bl -column "Sensor" "Units" "Typical" -offset indent
+.It Sy "Sensor" Ta Sy "Units" Ta Sy "Typical Use"
+.It Li "CPU" Ta "uK" Ta "CPU Temperature"
+.It Li "MB" Ta "uK" Ta "MB Temperature"
+.It Li "VCC" Ta "uV DC" Ta "Core Voltage"
+.It Li "+3.3V" Ta "uV DC" Ta "+3.3 Voltage"
+.It Li "+5V" Ta "uV DC" Ta "+5 Voltage"
+.It Li "+12V" Ta "uV DC" Ta "+12 Voltage"
+.It Li "CPU" Ta "RPM" Ta "CPU Fan"
+.El
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr sysctl.conf 5
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Takanori Watanabe .
+This manual page was written by
+.An Juan Romero Pardines ,
+who adapted the code for
+.Nx ,
+and adopted back to FreeBSD by
+.An Takanori Watanabe .
+.Sh BUGS
+It's possible to modify voltages via the ACPI methods in the DSDT,
+but for now the driver only reports the sensors' values.
+CPU Q-Fan is another thing that is typically specified in the ACPI
+namespace, and in the future we should handle this feature (to
+enable or disable automatic/manual fan mode).
diff --git a/share/man/man4/acpi_asus.4 b/share/man/man4/acpi_asus.4
new file mode 100644
index 0000000..a966d7e
--- /dev/null
+++ b/share/man/man4/acpi_asus.4
@@ -0,0 +1,186 @@
+.\"
+.\" Copyright (c) 2004 Philip Paeps <philip@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$
+.\"
+.Dd December 17, 2008
+.Dt ACPI_ASUS 4 i386
+.Os
+.Sh NAME
+.Nm acpi_asus
+.Nd Asus Laptop Extras
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_asus"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_asus_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the extra ACPI-controlled gadgets, such as hotkeys
+and leds, found on recent Asus (and Medion) laptops.
+It allows one to use the
+.Xr sysctl 8
+interface to manipulate the brightness of the LCD panel and the display output
+state.
+Hotkey events are passed to
+.Xr devd 8
+for easy handling in userspace with the default configuration in
+.Pa /etc/devd/asus.conf .
+.Pp
+Currently, the following Asus laptops are fully supported:
+.Pp
+.Bl -item -offset indent -compact
+.It
+xxN
+.It
+A1x
+.It
+A2x
+.It
+A3N
+.It
+A4D
+.It
+A6VM
+.It
+D1x
+.It
+J1x
+.It
+L2B
+.It
+L2D
+.It
+L2E
+.It
+L3C
+.It
+L3D
+.It
+L3H
+.It
+L4E
+.It
+L4R
+.It
+L5x
+.It
+L8x
+.It
+M1A
+.It
+M2E
+.It
+M6N
+.It
+M6R
+.It
+S1x
+.It
+S2x
+.It
+V6V
+.It
+W5A
+.It
+Eee PC
+.El
+.Pp
+Additionally,
+.Nm
+also supports the Asus-compatible
+.Em ATK0100
+interface found in
+.Em Samsung P30/P35
+laptops.
+.Sh SYSCTL VARIABLES
+The following sysctls are currently implemented:
+.Bl -tag -width indent
+.It Va hw.acpi.asus.lcd_brightness
+Makes the LCD backlight brighter or dimmer (higher values are brighter).
+.It Va hw.acpi.asus.lcd_backlight
+Turns the LCD backlight on or off.
+.It Va hw.acpi.asus.video_output
+Sets the active display to use according to a bitwise OR of the following:
+.Pp
+.Bl -tag -width indent -compact
+.It Li 0
+No display
+.It Li 1
+LCD
+.It Li 2
+CRT
+.It Li 4
+TV-Out
+.El
+.Pp
+Some models also support video switching via the generic
+.Xr acpi_video 4
+driver.
+Most models do not, however.
+.El
+.Pp
+Defaults for these variables can be set in
+.Xr sysctl.conf 5 ,
+which is parsed at boot-time.
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr acpi_video 4 ,
+.Xr sysctl.conf 5 ,
+.Xr sysctl 8
+.Rs
+.%T The acpi4asus Project
+.%O http://sourceforge.net/projects/acpi4asus/
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver and this manual page were written by
+.An Philip Paeps Aq philip@FreeBSD.org .
+.Pp
+Inspiration came from the
+.Em acpi4asus project
+started by
+.An Julien Lerouge
+which maintains a driver implementing this
+functionality in the
+.Tn Linux
+kernel.
diff --git a/share/man/man4/acpi_dock.4 b/share/man/man4/acpi_dock.4
new file mode 100644
index 0000000..1fda11d
--- /dev/null
+++ b/share/man/man4/acpi_dock.4
@@ -0,0 +1,62 @@
+.\" Copyright (c) 2006 Christian Brueffer
+.\" 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$
+.\"
+.Dd May 20, 2006
+.Dt ACPI_DOCK 4
+.Os
+.Sh NAME
+.Nm acpi_dock
+.Nd "Laptop Docking Station device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_dock"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_dock_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for laptop docking stations.
+.Sh SEE ALSO
+.Xr acpi 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+The
+.Nm
+device driver was written by
+.An Mitsuru IWASAKI Aq iwasaki@FreeBSD.org .
diff --git a/share/man/man4/acpi_fujitsu.4 b/share/man/man4/acpi_fujitsu.4
new file mode 100644
index 0000000..1959bf6
--- /dev/null
+++ b/share/man/man4/acpi_fujitsu.4
@@ -0,0 +1,175 @@
+.\"
+.\" Copyright (c) 2005 Philip Paeps <philip@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$
+.\"
+.Dd March 20, 2005
+.Dt ACPI_FUJITSU 4 i386
+.Os
+.Sh NAME
+.Nm acpi_fujitsu
+.Nd Fujitsu Laptop Extras
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_fujitsu"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_fujitsu_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver enables the ACPI-controlled buttons on Fujitsu notebooks.
+The button events are sent to userspace via
+.Xr devd 8 ,
+and a
+.Xr sysctl 8
+interface is provided to simulate the hardware events.
+.Pp
+Using this driver, one can control the brightness of the display, the volume
+of the speakers, and the internal (eraserhead) mouse pointer.
+.Sh SYSCTL VARIABLES
+These sysctls are currently implemented:
+.Bl -tag -width indent
+.It Va hw.acpi.fujitsu.lcd_brightness
+Makes the LCD backlight brighter or dimmer.
+.It Va hw.acpi.fujitsu.pointer_enable
+Enables or disables the internal mouse pointer.
+.It Va hw.acpi.fujitsu.volume
+Controls the speaker volume.
+.It Va hw.acpi.fujitsu.mute
+Mutes the speakers.
+.El
+.Pp
+Defaults for these sysctls can be set in
+.Xr sysctl.conf 5 .
+.Sh EXAMPLES
+The following can be added to
+.Xr devd.conf 5
+in order to pass button events to a
+.Pa /usr/local/sbin/acpi_oem_exec.sh
+script:
+.Bd -literal -offset indent
+notify 10 {
+ match "system" "ACPI";
+ match "subsystem" "FUJITSU";
+ action "/usr/local/sbin/acpi_oem_exec.sh $notify fujitsu";
+};
+.Ed
+.Pp
+A possible
+.Pa /usr/local/sbin/acpi_oem_exec.sh
+script might look like:
+.Bd -literal -offset indent
+#!/bin/sh
+#
+if [ "$1" = "" -o "$2" = "" ]
+then
+ echo "usage: $0 notify oem_name"
+ exit 1
+fi
+NOTIFY=`echo $1`
+LOGGER="logger"
+CALC="bc"
+BC_PRECOMMANDS="scale=2"
+ECHO="echo"
+CUT="cut"
+MAX_LCD_BRIGHTNESS=7
+MAX_VOLUME=16
+OEM=$2
+DISPLAY_PIPE=/tmp/acpi_${OEM}_display
+
+case ${NOTIFY} in
+ 0x00)
+ LEVEL=`sysctl -n hw.acpi.${OEM}.mute`
+ if [ "$LEVEL" = "1" ]
+ then
+ MESSAGE="volume muted"
+ else
+ MESSAGE="volume unmuted"
+ fi
+ ;;
+ 0x01)
+ LEVEL=`sysctl -n hw.acpi.${OEM}.pointer_enable`
+ if [ "$LEVEL" = "1" ]
+ then
+ MESSAGE="pointer enabled"
+ else
+ MESSAGE="pointer disabled"
+ fi
+ ;;
+ 0x02)
+ LEVEL=`sysctl -n hw.acpi.${OEM}.lcd_brightness`
+ PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
+ ${LEVEL} / ${MAX_LCD_BRIGHTNESS} * 100" |\\
+ ${CALC} | ${CUT} -d . -f 1`
+ MESSAGE="brightness level ${PERCENT}%"
+ ;;
+ 0x03)
+ LEVEL=`sysctl -n hw.acpi.${OEM}.volume`
+ PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
+ ${LEVEL} / ${MAX_VOLUME} * 100" | \\
+ ${CALC} | ${CUT} -d . -f 1`
+ MESSAGE="volume level ${PERCENT}%"
+ ;;
+ *)
+ ;;
+ esac
+ ${LOGGER} ${MESSAGE}
+ if [ -p ${DISPLAY_PIPE} ]
+ then
+ ${ECHO} ${MESSAGE} >> ${DISPLAY_PIPE} &
+ fi
+exit 0
+.Ed
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr sysctl.conf 5 ,
+.Xr devd 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.4 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Sean Bullington Aq shegget@gmail.com ,
+.An Anish Mistry Aq mistry.7@osu.edu ,
+and
+.An Marc Santcroos Aq marks@ripe.net .
+.Pp
+This manual page was written by
+.An Philip Paeps Aq philip@FreeBSD.org .
diff --git a/share/man/man4/acpi_ibm.4 b/share/man/man4/acpi_ibm.4
new file mode 100644
index 0000000..f0c165d
--- /dev/null
+++ b/share/man/man4/acpi_ibm.4
@@ -0,0 +1,461 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" Copyright (c) 2005 Markus Brueffer
+.\" 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$
+.\"
+.Dd January 14, 2006
+.Dt ACPI_IBM 4 i386
+.Os
+.Sh NAME
+.Nm acpi_ibm
+.Nd "ACPI extras driver for IBM laptops"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_ibm"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_ibm_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for hotkeys and other components of IBM laptops.
+The main purpose of this driver is to provide an interface,
+accessible via
+.Xr sysctl 8
+and
+.Xr devd 8 ,
+through which applications can determine the status of
+various laptop components.
+.Pp
+While the
+.Xr sysctl 8
+interface is enabled automatically after loading the driver, the
+.Xr devd 8
+interface has to be enabled explicitly, as it may alter the default action of
+certain keys.
+This is done by setting the
+.Va events
+sysctl as described below.
+Specifying which keys should generate events is done by setting a bitmask,
+whereas each bit represents one key or key combination.
+This bitmask, accessible via the
+.Va eventmask
+sysctl, is set to
+.Va availmask
+by default, a value representing all possible keypress events on the specific
+ThinkPad model.
+.Ss Xr devd 8 Ss Events
+Hotkey events received by
+.Xr devd 8
+provide the following information:
+.Pp
+.Bl -tag -width "subsystem" -offset indent -compact
+.It system
+.Qq Li ACPI
+.It subsystem
+.Qq Li IBM
+.It type
+The source of the event in the ACPI namespace.
+The value depends on the model.
+.It notify
+Event code (see below).
+.El
+.Pp
+Depending on the ThinkPad model, event codes may vary.
+On a ThinkPad T41p these are as follows:
+.Pp
+.Bl -tag -width "subsystem" -offset indent -compact
+.It Li 0x01
+Fn + F1
+.It Li 0x02
+Fn + F2
+.It Li 0x03
+Fn + F3 (LCD backlight)
+.It Li 0x04
+Fn + F4 (Suspend to RAM)
+.It Li 0x05
+Fn + F5 (Bluetooth)
+.It Li 0x06
+Fn + F6
+.It Li 0x07
+Fn + F7 (Screen expand)
+.It Li 0x08
+Fn + F8
+.It Li 0x09
+Fn + F9
+.It Li 0x0a
+Fn + F10
+.It Li 0x0b
+Fn + F11
+.It Li 0x0c
+Fn + F12 (Suspend to disk)
+.It Li 0x0d
+Fn + Backspace
+.It Li 0x0e
+Fn + Insert
+.It Li 0x0f
+Fn + Delete
+.It Li 0x10
+Fn + Home (Brightness up)
+.It Li 0x11
+Fn + End (Brightness down)
+.It Li 0x12
+Fn + PageUp (ThinkLight)
+.It Li 0x13
+Fn + PageDown
+.It Li 0x14
+Fn + Space (Zoom)
+.It Li 0x15
+Volume Up
+.It Li 0x16
+Volume Down
+.It Li 0x17
+Mute
+.It Li 0x18
+Access IBM Button
+.El
+.Ss Xr led 4 Ss Interface
+The
+.Nm
+driver provides a
+.Xr led 4
+interface for the ThinkLight.
+The ThinkLight can be made to blink by writing
+.Tn ASCII
+strings to the
+.Pa /dev/led/thinklight
+device.
+.Sh SYSCTL VARIABLES
+The following sysctls are currently implemented:
+.Bl -tag -width indent
+.It Va dev.acpi_ibm.0.initialmask
+(read-only)
+Bitmask of ACPI events before the
+.Nm
+driver was loaded.
+.It Va dev.acpi_ibm.0.availmask
+(read-only)
+Bitmask of all supported ACPI events.
+.It Va dev.acpi_ibm.0.events
+Enable ACPI events and set the
+.Va eventmask
+to
+.Va availmask .
+Without the
+.Nm
+driver being loaded, only the Fn+F4 button generates an ACPI event.
+.It Va dev.acpi_ibm.0.eventmask
+Sets the ACPI events which are reported to
+.Xr devd 8 .
+Fn+F3, Fn+F4 and Fn+F12 always generate ACPI events, regardless which value
+.Va eventmask
+has.
+Depending on the ThinkPad model, the meaning of different bits in the
+.Va eventmask
+may vary.
+On a ThinkPad T41p this is a bitwise OR of the following:
+.Pp
+.Bl -tag -width indent-two -compact
+.It Li 1
+Fn + F1
+.It Li 2
+Fn + F2
+.It Li 4
+Fn + F3 (LCD backlight)
+.It Li 8
+Fn + F4 (Suspend to RAM)
+.It Li 16
+Fn + F5 (Bluetooth)
+.It Li 32
+Fn + F6
+.It Li 64
+Fn + F7 (Screen expand)
+.It Li 128
+Fn + F8
+.It Li 256
+Fn + F9
+.It Li 512
+Fn + F10
+.It Li 1024
+Fn + F11
+.It Li 2048
+Fn + F12 (Suspend to disk)
+.It Li 4096
+Fn + Backspace
+.It Li 8192
+Fn + Insert
+.It Li 16384
+Fn + Delete
+.It Li 32768
+Fn + Home (Brightness up)
+.It Li 65536
+Fn + End (Brightness down)
+.It Li 131072
+Fn + PageUp (ThinkLight)
+.It Li 262144
+Fn + PageDown
+.It Li 524288
+Fn + Space (Zoom)
+.It Li 1048576
+Volume Up
+.It Li 2097152
+Volume Down
+.It Li 4194304
+Mute
+.It Li 8388608
+Access IBM Button
+.El
+.It Va dev.acpi_ibm.0.hotkey
+(read-only)
+Status of several buttons.
+Every time a button is pressed, the respecting bit is toggled.
+It is a bitwise OR of the following:
+.Pp
+.Bl -tag -width indent-two -compact
+.It Li 1
+Home Button
+.It Li 2
+Search Button
+.It Li 4
+Mail Button
+.It Li 8
+Access IBM Button
+.It Li 16
+Zoom
+.It Li 32
+Wireless LAN Button
+.It Li 64
+Video Button
+.It Li 128
+Hibernate Button
+.It Li 256
+ThinkLight Button
+.It Li 512
+Screen Expand
+.It Li 1024
+Brightness Up/Down Button
+.It Li 2048
+Volume Up/Down/Mute Button
+.El
+.It Va dev.acpi_ibm.0.lcd_brightness
+Current brightness level of the display.
+.It Va dev.acpi_ibm.0.volume
+Speaker volume.
+.It Va dev.acpi_ibm.0.mute
+Indicates, whether the speakers are muted or not.
+.It Va dev.acpi_ibm.0.thinklight
+Indicates, whether the ThinkLight keyboard light is activated or not.
+.It Va dev.acpi_ibm.0.bluetooth
+Toggle Bluetooth chip activity.
+.It Va dev.acpi_ibm.0.wlan
+(read-only)
+Indicates whether the WLAN chip is active or not.
+.It Va dev.acpi_ibm.0.fan
+Indicates whether the fan is in automatic (1) or manual (0) mode.
+Default is automatic mode.
+This sysctl should be used with extreme precaution, since disabling automatic
+fan control might overheat the ThinkPad and lead to permanent damage if the
+.Va fan_level
+is not set accordingly.
+.It Va dev.acpi_ibm.0.fan_level
+Indicates at what speed the fan should run when being in manual mode.
+Values are ranging from 0 (off) to 7 (max).
+The resulting speed differs from model to model.
+On a T41p this is as follows:
+.Pp
+.Bl -tag -width indent-two -compact
+.It Li 0
+off
+.It Li 1, 2
+~3000 RPM
+.It Li 3, 4, 5
+~3600 RPM
+.It Li 6, 7
+~4300 RPM
+.El
+.It Va dev.acpi_ibm.0.fan_speed
+(read-only)
+Fan speed in rounds per minute.
+A few older ThinkPads report the fan speed in levels ranging from 0 (off)
+to 7 (max).
+.It Va dev.acpi_ibm.0.thermal
+(read-only)
+Shows the readings of up to eight different temperature sensors.
+Most ThinkPads include six or more temperature sensors but
+only expose the CPU temperature through
+.Xr acpi_thermal 4 .
+Some ThinkPads have the below sensor layout which might vary depending on the
+specific model:
+.Pp
+.Bl -enum -compact
+.It
+CPU
+.It
+Mini PCI Module
+.It
+HDD
+.It
+GPU
+.It
+Built-in battery
+.It
+UltraBay battery
+.It
+Built-in battery
+.It
+UltraBay battery
+.El
+.El
+.Pp
+Defaults for these sysctls can be set in
+.Xr sysctl.conf 5 .
+.Sh FILES
+.Bl -tag -width ".Pa /dev/led/thinklight"
+.It Pa /dev/led/thinklight
+ThinkLight
+.Xr led 4
+device node
+.El
+.Sh EXAMPLES
+The following can be added to
+.Xr devd.conf 5
+in order to pass button events to a
+.Pa /usr/local/sbin/acpi_oem_exec.sh
+script:
+.Bd -literal -offset indent
+notify 10 {
+ match "system" "ACPI";
+ match "subsystem" "IBM";
+ action "/usr/local/sbin/acpi_oem_exec.sh $notify ibm";
+};
+.Ed
+.Pp
+A possible
+.Pa /usr/local/sbin/acpi_oem_exec.sh
+script might look like:
+.Bd -literal -offset indent
+#!/bin/sh
+#
+if [ "$1" = "" -o "$2" = "" ]
+then
+ echo "usage: $0 notify oem_name"
+ exit 1
+fi
+NOTIFY=`echo $1`
+LOGGER="logger"
+CALC="bc"
+BC_PRECOMMANDS="scale=2"
+ECHO="echo"
+CUT="cut"
+MAX_LCD_BRIGHTNESS=7
+MAX_VOLUME=14
+OEM=$2
+DISPLAY_PIPE=/tmp/acpi_${OEM}_display
+
+case ${NOTIFY} in
+ 0x05)
+ LEVEL=`sysctl -n dev.acpi_${OEM}.0.bluetooth`
+ if [ "$LEVEL" = "1" ]
+ then
+ sysctl dev.acpi_${OEM}.0.bluetooth=0
+ MESSAGE="bluetooth disabled"
+ else
+ sysctl dev.acpi_${OEM}.0.bluetooth=1
+ MESSAGE="bluetooth enabled"
+ fi
+ ;;
+ 0x10|0x11)
+ LEVEL=`sysctl -n dev.acpi_${OEM}.0.lcd_brightness`
+ PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
+ ${LEVEL} / ${MAX_LCD_BRIGHTNESS} * 100" |\\
+ ${CALC} | ${CUT} -d . -f 1`
+ MESSAGE="brightness level ${PERCENT}%"
+ ;;
+ 0x12)
+ LEVEL=`sysctl -n dev.acpi_${OEM}.0.thinklight`
+ if [ "$LEVEL" = "1" ]
+ then
+ MESSAGE="thinklight enabled"
+ else
+ MESSAGE="thinklight disabled"
+ fi
+ ;;
+ 0x15|0x16)
+ LEVEL=`sysctl -n dev.acpi_${OEM}.0.volume`
+ PERCENT=`${ECHO} "${BC_PRECOMMANDS} ; \\
+ ${LEVEL} / ${MAX_VOLUME} * 100" | \\
+ ${CALC} | ${CUT} -d . -f 1`
+ MESSAGE="volume level ${PERCENT}%"
+ ;;
+ 0x17)
+ LEVEL=`sysctl -n dev.acpi_${OEM}.0.mute`
+ if [ "$LEVEL" = "1" ]
+ then
+ MESSAGE="volume muted"
+ else
+ MESSAGE="volume unmuted"
+ fi
+ ;;
+ *)
+ ;;
+esac
+${LOGGER} ${MESSAGE}
+if [ -p ${DISPLAY_PIPE} ]
+then
+ ${ECHO} ${MESSAGE} >> ${DISPLAY_PIPE} &
+fi
+exit 0
+.Ed
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr led 4 ,
+.Xr sysctl.conf 5 ,
+.Xr devd 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Takanori Watanabe Aq takawata@FreeBSD.org
+and later mostly rewritten by
+.An Markus Brueffer Aq markus@FreeBSD.org .
+This manual page was written by
+.An Christian Brueffer Aq brueffer@FreeBSD.org
+and
+.An Markus Brueffer Aq markus@FreeBSD.org .
diff --git a/share/man/man4/acpi_panasonic.4 b/share/man/man4/acpi_panasonic.4
new file mode 100644
index 0000000..8a8851e
--- /dev/null
+++ b/share/man/man4/acpi_panasonic.4
@@ -0,0 +1,178 @@
+.\"
+.\" Copyright (c) 2004 OGAWA Takaya <t-ogawa@triaez.kaisei.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$
+.\"
+.Dd July 11, 2004
+.Dt ACPI_PANASONIC 4 i386
+.Os
+.Sh NAME
+.Nm acpi_panasonic
+.Nd "ACPI hotkey driver for Panasonic laptops"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_panasonic"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_panasonic_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver enables such hotkey facilities of various Panasonic laptops as
+changing LCD brightness, controlling mixer volumes, entering sleep or
+suspended state and so on.
+On the following models it is reported to work: Let's note (or
+Toughbook, outside Japan) CF-R1N, CF-R2A and CF-R3.
+It may also work on other models as well.
+.Pp
+The driver consists of three functionalities.
+The first is to detect hotkey events and take corresponding actions,
+which include changing LCD luminance and speaker mute state.
+The second role is to notify occurrences of the event by way of
+.Xr devctl 4
+and eventually to
+.Xr devd 8 .
+The third and last is to provide a way to adjust LCD brightness and
+sound mute state via
+.Xr sysctl 8 .
+.Ss Hotkeys
+There are 9 hotkeys available on the supported hardwares:
+.Pp
+.Bl -tag -compact -offset indent
+.It Sy Fn+F1
+Make LCD backlight darker.
+.It Sy Fn+F2
+Make LCD backlight brighter.
+.It Sy Fn+F3
+Switch video output between LCD and CRT.
+Not supported by the
+.Nm
+driver.
+.It Sy Fn+F4
+Toggle muting the speaker.
+.It Sy Fn+F5
+Turn the mixer volume down.
+.It Sy Fn+F6
+Turn the mixer volume up.
+.It Sy Fn+F7
+Enter suspend-to-RAM state.
+.It Sy Fn+F9
+Show battery status.
+.It Sy Fn+F10
+Enter suspend-to-disk state.
+.El
+.Pp
+Actions are automatically taken within the driver for
+.Sy Fn+F1 , Fn+F2
+and
+.Sy Fn+F4 .
+For the other events such as
+mixer control and showing battery status,
+.Xr devd 8
+should take the role as described below.
+.Ss Xr devd 8 Ss Events
+When notified to
+.Xr devd 8 ,
+the hotkey event provides the following information:
+.Pp
+.Bl -tag -compact -offset indent
+.It system
+.Qq Li ACPI
+.It subsystem
+.Qq Li Panasonic
+.It type
+The source of the event in ACPI namespace.
+The value depends on the model but typically
+.Qq Li \e_SB_.HKEY .
+.It notify
+Event code (see below).
+.El
+.Pp
+Event codes to be generated are assigned as follows:
+.Bl -tag -offset indent
+.It 0x81-0x86, 0x89
+.Sy Fn+F<n>
+pressed.
+0x81 corresponds to
+.Sy Fn+F1 ,
+0x82 corresponds to
+.Sy Fn+F2 ,
+and so on.
+.It 0x01-0x07, 0x09, 0x1a
+.Sy Fn+F<n>
+released.
+0x01 corresponds to
+.Sy Fn+F1 ,
+0x02 corresponds to
+.Sy Fn+F2 ,
+and so on.
+.El
+.Sh SYSCTL VARIABLES
+The following MIBs are available:
+.Bl -tag -width indent
+.It Va hw.acpi.panasonic.lcd_brightness_max
+The maximum level of brightness.
+The value is read only and
+automatically set according to hardware model.
+.It Va hw.acpi.panasonic.lcd_brightness_max
+The minimum level of brightness.
+The value is read only and
+automatically set according to hardware model.
+.It Va hw.acpi.panasonic.lcd_brightness
+Current brightness level of the LCD (read-write).
+The value ranges from
+.Va hw.acpi.panasonic.lcd_brightness_min
+to
+.Va hw.acpi.panasonic.lcd_brightness_max .
+.It Va hw.acpi.panasonic.sound_mute
+A read-write boolean flag to control whether to mute the speaker.
+The value 1 means to mute and 0 not.
+.El
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr devd.conf 5 ,
+.Xr devd 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver and this manual page were written by
+.An OGAWA Takaya Aq t\-ogawa@triaez.kaisei.org
+and
+.An TAKAHASHI Yoshihiro Aq nyan@FreeBSD.org .
diff --git a/share/man/man4/acpi_sony.4 b/share/man/man4/acpi_sony.4
new file mode 100644
index 0000000..52a7fbe
--- /dev/null
+++ b/share/man/man4/acpi_sony.4
@@ -0,0 +1,73 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" 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$
+.\"
+.Dd September 14, 2005
+.Dt ACPI_SONY 4 i386
+.Os
+.Sh NAME
+.Nm acpi_sony
+.Nd "ACPI notebook controller driver for Sony laptops"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_sony"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_sony_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the notebook controller in Sony laptops.
+.Sh SYSCTLS
+The following sysctl is currently implemented:
+.Bl -tag -width indent
+.It Va dev.acpi_sony.0.brightness
+Current brightness level of the display.
+.It Va dev.acpi_sony.0.cdp
+Turns the CD power on or off.
+.It Va dev.acpi_sony.0.azp
+Turns the audio power on or off.
+.El
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Takanori Watanabe Aq takawata@FreeBSD.org .
diff --git a/share/man/man4/acpi_thermal.4 b/share/man/man4/acpi_thermal.4
new file mode 100644
index 0000000..d1cf8ee
--- /dev/null
+++ b/share/man/man4/acpi_thermal.4
@@ -0,0 +1,149 @@
+.\" Copyright (c) 2003 Takanori Watanabe.
+.\" 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$
+.\"
+.Dd March 17, 2007
+.Dt ACPI_THERMAL 4
+.Os
+.Sh NAME
+.Nm acpi_thermal
+.Nd ACPI thermal management subsystem
+.Sh SYNOPSIS
+.Cd "device acpi"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides the thermal management features of the ACPI module.
+This driver has a
+.Xr sysctl 8
+interface and a
+.Xr devd 8
+notification interface.
+The sysctls export properties of each ACPI thermal zone object.
+.Pp
+There can be multiple thermal zones in a system.
+For example, each CPU and the enclosure could all be separate thermal
+zones, each with its own setpoints and cooling devices.
+Thermal zones are numbered sequentially in the order they appear in
+the AML.
+.Pp
+The
+.Nm
+driver also activates the active cooling system according to
+each thermal zone's setpoints.
+.Sh SYSCTL VARIABLES
+.Bl -tag -width indent
+.It Va hw.acpi.thermal.min_runtime
+Number of seconds to continue active cooling once started.
+A new active cooling level will not be selected until this interval expires.
+.It Va hw.acpi.thermal.polling_rate
+Number of seconds between polling the current temperature.
+.It Va hw.acpi.thermal.user_override
+If set to 1, allow user override of various setpoints (below).
+The original values for these settings are obtained from the BIOS and
+system overheating and possible damage could occur if changed.
+Default is 0 (no override).
+.It Va hw.acpi.thermal.tz%d.active
+Current active cooling system state.
+If this is non-negative, the appropriate _AC%d object is running.
+Set this value to the desired active cooling level to force
+the corresponding fan object to the appropriate level.
+.It Va hw.acpi.thermal.tz%d.passive_cooling
+If set to 1, passive cooling is enabled.
+It does cooling without fans using
+.Xr cpufreq 4
+as the mechanism for controlling CPU speed.
+Default is enabled for tz0 where it is available.
+.It Va hw.acpi.thermal.tz%d.thermal_flags
+Current thermal zone status.
+These are bit-masked values.
+.It Va hw.acpi.thermal.tz%d.temperature
+Current temperature for this zone.
+.It Va hw.acpi.thermal.tz%d._PSV
+Temperature to start passive cooling by throttling down CPU, etc.
+This value can be overridden by the user.
+.It Va hw.acpi.thermal.tz%d._HOT
+Temperature to start critical suspend to disk (S4).
+This value can be overridden by the user.
+.It Va hw.acpi.thermal.tz%d._CRT
+Temperature to start critical shutdown (S5).
+This value can be overridden by the user.
+.It Va hw.acpi.thermal.tz%d._ACx
+Temperatures at which to switch to the corresponding active cooling
+level.
+The lower the _ACx value, the higher the cooling power.
+.El
+.Pp
+All temperatures are printed in Celsius.
+Values can be set in Celsius (by providing a trailing
+.Qq C )
+or Kelvin (by leaving off any trailing letter).
+When setting a value by
+.Xr sysctl 8 ,
+do not specify a trailing decimal (i.e., 90C instead of 90.0C).
+.Sh NOTIFIES
+Notifies are passed to userland via
+.Xr devd 8 .
+See
+.Pa /etc/devd.conf
+and
+.Xr devd.conf 5
+for examples.
+The
+.Nm
+driver sends events with the following attributes:
+.Pp
+.Bl -tag -width "subsystem" -compact
+.It system
+.Li ACPI
+.It subsystem
+.Li Thermal
+.It type
+The fully qualified thermal zone object path as in the ASL.
+.It notify
+An integer designating the event:
+.Pp
+.Bl -tag -width indent -compact
+.It Li 0x80
+Current temperature has changed.
+.It Li 0x81
+One or more trip points (_ACx, _PSV) have changed.
+.It Li 0x82
+One or more device lists (_ALx, _PSL, _TZD) have changed.
+.It Li 0xcc
+Non-standard notify that the system will shutdown if the temperature
+stays above _CRT or _HOT for one more poll cycle.
+.El
+.El
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr cpufreq 4 ,
+.Xr acpidump 8
+.Sh AUTHORS
+.An -nosplit
+.An Michael Smith
+.Pp
+This manual page was written by
+.An Takanori Watanabe .
diff --git a/share/man/man4/acpi_toshiba.4 b/share/man/man4/acpi_toshiba.4
new file mode 100644
index 0000000..cb26842
--- /dev/null
+++ b/share/man/man4/acpi_toshiba.4
@@ -0,0 +1,128 @@
+.\"
+.\" Copyright (c) 2003 Philip Paeps <philip@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$
+.\"
+.Dd February 19, 2004
+.Dt ACPI_TOSHIBA 4 i386
+.Os
+.Sh NAME
+.Nm acpi_toshiba
+.Nd Toshiba HCI interface
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device acpi_toshiba"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+acpi_toshiba_load="YES"
+.Ed
+.Sh DESCRIPTION
+HCI is Toshiba's
+.Em "Hardware Control Interface"
+which is somewhat uniform across their models.
+The
+.Nm
+driver allows the user to manipulate HCI-controlled hardware using a number of
+.Xr sysctl 8
+variables.
+.Sh SYSCTL VARIABLES
+The following sysctls are currently implemented:
+.Bl -tag -width indent
+.It Va hw.acpi.toshiba.force_fan
+Causes active cooling to be forcibly enabled
+.Pq Ql 1
+or disabled
+.Pq Ql 0
+regardless of the current temperature.
+.It Va hw.acpi.toshiba.video_output
+Sets the active display to use according to a bitwise OR of the following:
+.Pp
+.Bl -tag -width indent -compact
+.It Li 0
+No display
+.It Li 1
+LCD
+.It Li 2
+CRT
+.It Li 4
+TV-Out
+.El
+.Pp
+Only some systems (i.e., the Libretto L5) support video switching via
+this hardware-specific driver.
+Use the
+.Xr acpi_video 4
+driver for generic video output support.
+.It Va hw.acpi.toshiba.lcd_brightness
+Makes the LCD backlight brighter or dimmer (higher values are brighter).
+.It Va hw.acpi.toshiba.lcd_backlight
+Turns the LCD backlight on and off.
+.It Va hw.acpi.toshiba.cpu_speed
+Sets the CPU speed to the specified speed.
+This provides functionality similar to the
+.Va hw.acpi.cpu.throttle_state
+variable.
+Higher sysctl values mean lower CPU speeds.
+.El
+.Pp
+Defaults for these variables can be set in
+.Xr sysctl.conf 5 ,
+which is parsed at boot-time.
+.Sh LOADER TUNABLES
+The
+.Va hw.acpi.toshiba.enable_fn_keys
+tunable enables or disables the function keys on the keyboard.
+Function keys are enabled by default.
+.Pp
+This behaviour can be changed at the
+.Xr loader 8
+prompt or in
+.Xr loader.conf 5 .
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr acpi_video 4 ,
+.Xr loader.conf 5 ,
+.Xr sysctl.conf 5 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Hiroyuki Aizu Aq aizu@navi.org .
+This manual page was written by
+.An Philip Paeps Aq philip@FreeBSD.org .
diff --git a/share/man/man4/acpi_video.4 b/share/man/man4/acpi_video.4
new file mode 100644
index 0000000..c286784
--- /dev/null
+++ b/share/man/man4/acpi_video.4
@@ -0,0 +1,89 @@
+.\"
+.\" Copyright (c) 2004 Mark Santcroos <marks@ripe.net>
+.\" 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$
+.\"
+.Dd November 8, 2004
+.Dt ACPI_VIDEO 4
+.Os
+.Sh NAME
+.Nm acpi_video
+.Nd ACPI Video Extensions driver
+.Sh SYNOPSIS
+.Cd "device acpi_video"
+.Sh DESCRIPTION
+This driver uses the ACPI Video Extensions to control display switching and
+backlight brightness.
+The availability of the
+.Xr sysctl 8
+variables depends on the functions offered by the host's ACPI implementation.
+.Sh SYSCTL VARIABLES
+The following sysctls are currently implemented,
+where
+.Aq Ar device
+is
+.Va crt , lcd ,
+or
+.Va tv :
+.Bl -tag -width indent
+.It Va hw.acpi.video. Ns Ao Ar device Ac Ns Va .active
+Current state of the output device.
+.It Va hw.acpi.video. Ns Ao Ar device Ac Ns Va .levels
+List of supported brightness levels.
+.It Va hw.acpi.video. Ns Ao Ar device Ac Ns Va .brightness
+Current brightness level of the device.
+.It Va hw.acpi.video. Ns Ao Ar device Ac Ns Va .fullpower
+Preset brightness level to be used in full power mode.
+.It Va hw.acpi.video. Ns Ao Ar device Ac Ns Va .economy
+Preset brightness level to be used in economy mode.
+.El
+.Pp
+Defaults for these variables can be set in
+.Xr sysctl.conf 5 ,
+which is parsed at boot-time.
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr loader.conf 5 ,
+.Xr sysctl.conf 5 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Taku YAMAMOTO Aq taku@cent.saitama-u.ac.jp .
+This manual page was written by
+.An Mark Santcroos Aq marks@ripe.net .
+.Sh BUGS
+Some systems only perform output switching via SMM even though they export
+the proper information via ACPI.
+On such systems, the proper hotkeys or OEM driver (for example,
+.Xr acpi_toshiba 4 )
+must be used instead.
diff --git a/share/man/man4/adv.4 b/share/man/man4/adv.4
new file mode 100644
index 0000000..76e37a7
--- /dev/null
+++ b/share/man/man4/adv.4
@@ -0,0 +1,246 @@
+.\"
+.\" Copyright (c) 1998, 2000
+.\" Justin T. Gibbs. 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. 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$
+.\"
+.Dd August 8, 2004
+.Dt ADV 4
+.Os
+.Sh NAME
+.Nm adv
+.Nd Advansys ISA/VL/EISA/PCI 8bit SCSI Host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device adv"
+.Pp
+For one or more EISA cards:
+.Cd "device eisa"
+.Pp
+For one or more VL/ISA cards:
+.Cd "device isa"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.adv.0.at="isa"
+.Pp
+For one or more PCI cards:
+.Cd "device pci"
+.Ed
+.Sh DESCRIPTION
+This driver provides access to the 8bit
+.Tn SCSI
+bus connected to the Advanced Systems Products, Inc.
+.Tn ASC900 ,
+.Tn ASC1000 ,
+.Tn ASC1090 ,
+.Tn ASC1200 ,
+.Tn ASC3030 ,
+.Tn ASC3050 ,
+and
+.Tn ASC3150
+host adapter chips.
+The following tables list the AdvanSys products using these chips,
+their bus attachment type, maximum sync rate, and the maximum number of
+commands that can be handled by the adapter concurrently.
+.Pp
+.Bd -ragged -offset indent
+.Bl -column "ABP510/5150 " "ISA PnP " "Yes " "10MHz " "Commands " Footnotes
+Connectivity Products:
+.Pp
+.Em "Adapter Bus Floppy MaxSync Commands Footnotes"
+ABP510/5150 ISA No 10MHz 240 1
+ABP5140 ISA PnP No 10MHz 16 1, 3
+ABP5142 ISA PnP Yes 10MHz 16 4
+ABP[3]902 PCI No 10MHz 16
+ABP3905 PCI No 10MHz 16
+ABP915 PCI No 10MHz 16
+ABP920 PCI No 10MHz 16
+ABP3922 PCI No 10MHz 16
+ABP3925 PCI No 10MHz 16
+ABP930 PCI No 10MHz 16 5
+ABP930U PCI No 20MHz 16
+ABP930UA PCI No 20MHz 16
+ABP960 PCI No 10MHz 16
+ABP960U PCI No 20MHz 16
+.El
+.Pp
+Footnotes:
+.Bl -enum -compact
+.It
+This board has been shipped by HP with the 4020i CD-R drive.
+The board has no BIOS so it cannot control a boot device, but
+it can control any secondary SCSI device.
+.It
+This board has been sold by Iomega as a Jaz Jet PCI adapter.
+.It
+This board has been sold by SIIG as the i540 SpeedMaster.
+.It
+This board has been sold by SIIG as the i542 SpeedMaster.
+.It
+This board has been sold by SIIG as the Fast SCSI Pro PCI.
+.El
+.Ed
+.Pp
+.Bd -ragged -offset indent
+.Bl -column "ABP510/5150 " "ISA PnP " "Yes " "10MHz " Commands
+Single Channel Products:
+.Pp
+.Em "Adapter Bus Floppy MaxSync Commands"
+ABP542 ISA Yes 10MHz 240
+ABP742 EISA Yes 10MHz 240
+ABP842 VL Yes 10MHz 240
+ABP940 PCI No 10MHz 240
+ABP[3]940UA PCI No 20MHz 240
+ABP940U PCI No 20MHz 240
+ABP3960UA PCI No 20MHz 240
+ABP970 PCI No 10MHz 240
+ABP970U PCI No 20MHz 240
+.El
+.Ed
+.Pp
+.Bd -ragged -offset indent
+.Bl -column "ABP510/5150 " "ISA PnP " "Yes " "10MHz " "Commands " "Channels "
+Multi Channel Products (Commands are per-channel):
+.Pp
+.Em "Adapter Bus Floppy MaxSync Commands Channels"
+ABP752 EISA Yes 10MHz 240 2
+ABP852 VL Yes 10MHz 240 2
+ABP950 PCI No 10MHz 240 2
+ABP980 PCI No 10MHz 240 4
+ABP980U PCI No 20MHz 240 4
+ABP[3]980UA PCI No 20MHz 16 4
+.El
+.Ed
+.Pp
+.\" For ISA or Vesa Local Bus adapters, one kernel config entry is required
+.\" for every card to be attached by the system. Specific values for the port
+.\" address, irq, and drq may be specified. If wildcard values are used, the
+.\" driver will query the device for its current settings and use those. If
+.\" the port address is a wildcard, the driver consults an internal table of
+.\" possible port address locations and attaches to the first unattached card
+.\" it finds. The possible port addresses for these card are 0x110, 0x130,
+.\" 0x150, 0x190, 0x210, 0x230, 0x250, and 0x330.
+.\" .Pp
+Per target configuration performed in the
+.Tn AdvanceWare
+menu, which is accessible at boot,
+is honored by this driver.
+This includes synchronous/asynchronous transfers,
+maximum synchronous negotiation rate, disconnection, tagged queueing,
+and the host adapter's SCSI ID.
+The global setting for the maximum number of tagged transactions allowed
+per target is not honored as the CAM SCSI system will automatically determine
+the maximum number of tags a device can receive as well as guarantee fair
+resource allocation among devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following SCSI controllers:
+.Pp
+.Bl -bullet -compact
+.It
+AdvanSys ABP510/5150
+.It
+AdvanSys ABP5140
+.It
+AdvanSys ABP5142
+.It
+AdvanSys ABP902/3902
+.It
+AdvanSys ABP3905
+.It
+AdvanSys ABP915
+.It
+AdvanSys ABP920
+.It
+AdvanSys ABP3922
+.It
+AdvanSys ABP3925
+.It
+AdvanSys ABP930, ABP930U, ABP930UA
+.It
+AdvanSys ABP960, ABP960U
+.It
+AdvanSys ABP542
+.It
+AdvanSys ABP742
+.It
+AdvanSys ABP842
+.It
+AdvanSys ABP940
+.It
+AdvanSys ABP940UA/3940UA
+.It
+AdvanSys ABP940U
+.It
+AdvanSys ABP3960UA
+.It
+AdvanSys ABP970, ABP970U
+.It
+AdvanSys ABP752
+.It
+AdvanSys ABP852
+.It
+AdvanSys ABP950
+.It
+AdvanSys ABP980, ABP980U
+.It
+AdvanSys ABP980UA/3980UA
+.It
+MELCO IFC-USP (PC-98)
+.It
+RATOC REX-PCI30 (PC-98)
+.It
+@Nifty FNECHARD IFC-USUP-TX (PC-98)
+.El
+.Sh SEE ALSO
+.Xr adw 4 ,
+.Xr aha 4 ,
+.Xr ahb 4 ,
+.Xr ahc 4 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was ported by
+.An Justin T. Gibbs
+from the Linux driver
+written by
+.An Bob Frey
+of Advanced System Products, Inc.
+Many thanks to AdvanSys for providing the original driver under a suitable
+license for use in
+.Fx .
diff --git a/share/man/man4/adw.4 b/share/man/man4/adw.4
new file mode 100644
index 0000000..eae4a77
--- /dev/null
+++ b/share/man/man4/adw.4
@@ -0,0 +1,104 @@
+.\"
+.\" Copyright (c) 1998, 2000
+.\" Justin T. Gibbs. 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. 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$
+.\"
+.Dd July 14, 2004
+.Dt ADW 4
+.Os
+.Sh NAME
+.Nm adw
+.Nd Advansys PCI 16bit SCSI Host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device adw"
+.Ed
+.Sh DESCRIPTION
+This driver provides access to the 16bit
+.Tn SCSI
+bus connected to the Advanced Systems Products, Inc.
+.Tn ASC3550 Ultra ,
+and
+.Tn ASC38C0800 Ultra2 ,
+SCSI Host Adapter chips.
+Both chips support, synchronous transfers
+(20MHz and 40MHz max respectively),
+16bit transfers, tagged queueing,
+and up to 253 concurrent SCSI transactions.
+.Pp
+Per target configuration performed in the
+.Tn AdvanceWare
+menu, which is accessible at boot,
+is honored by this driver.
+This includes synchronous/asynchronous transfers,
+maximum synchronous negotiation rate, wide transfers, disconnection,
+tagged queueing, and the host adapter's SCSI ID.
+The global setting for the maximum number of tagged transactions allowed
+per target is not honored as the CAM SCSI system will automatically determine
+the maximum number of tags a device can receive as well as guarantee fair
+resource allocation among devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports SCSI controllers including:
+.Pp
+.Bl -bullet -compact
+.It
+AdvanSys ABP940UW/ABP3940UW
+.It
+AdvanSys ABP950UW
+.It
+AdvanSys ABP970UW
+.It
+AdvanSys ABP3940U2W
+.It
+AdvanSys ABP3950U2W
+.El
+.Sh SEE ALSO
+.Xr adv 4 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was ported by
+.An Justin T. Gibbs
+from the Linux driver written by
+.An Bob Frey
+of Advanced System Products, Inc.
+Many thanks to AdvanSys for providing the original driver
+under a suitable license for use in
+.Fx .
diff --git a/share/man/man4/ae.4 b/share/man/man4/ae.4
new file mode 100644
index 0000000..8134eb1
--- /dev/null
+++ b/share/man/man4/ae.4
@@ -0,0 +1,153 @@
+.\" Copyright (c) 2008 Stanislav Sedov <stas@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$
+.\"
+.Dd October 4, 2008
+.Dt AE 4
+.Os
+.Sh NAME
+.Nm ae
+.Nd "Attansic/Atheros L2 FastEthernet controller driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device ae"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset -indent
+if_ae_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for Attansic/Atheros L2 PCIe FastEthernet
+controllers.
+.Pp
+The controller supports hardware Ethernet checksum processing, hardware
+VLAN tag stripping/insertion and an interrupt moderation mechanism.
+Attansic L2 also features a 64-bit multicast hash filter.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override the autoselected mode by
+adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Select 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (FastEthernet) operation.
+.El
+.Pp
+The
+.Nm
+driver provides support for the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Attansic/Atheros L2 PCIe FastEthernet controllers, and
+is known to support the following hardware:
+.Pp
+.Bl -bullet -compact
+.It
+ASUS EeePC 701
+.It
+ASUS EeePC 900
+.El
+.Pp
+Other hardware may or may not work with this driver.
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width "xxxxxx"
+.It Va hw.ae.msi_disable
+This tunable disables MSI support on the Ethernet hardware.
+The default value is 0.
+.El
+.Sh SYSCTL VARIABLES
+The
+.Nm
+driver collects a number of useful MAC counter during the work.
+The statistics is available via the
+.Va dev.ae.%d.stats
+.Xr sysctl 8
+tree, where %d corresponds to the controller number.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ae%d: watchdog timeout."
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "ae%d: reset timeout."
+The card reset operation has been timed out.
+.It "ae%d: Generating random ethernet address."
+No valid ethernet address was found neither in the controller registers not in
+NVRAM.
+Random locally administered address with ASUS OUI identifier will be used
+instead.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh BUGS
+The Attansic L2 FastEthernet contoller supports DMA but do not use a descriptor
+based transfer mechanism via scatter-gather DMA.
+Thus the data should be copied to/from the controller memory on each
+transmit/receive.
+Furthermore, a lot of data alignment restrictions apply.
+This may introduce a high CPU load on systems with heavy network activity.
+Luckily enough this should not be a problem on modern hardware as L2 does
+not support speeds faster than 100Mbps.
+.Sh HISTORY
+The
+.Nm
+driver and this manual page was written by
+.An Stanislav Sedov
+.Aq stas@FreeBSD.org .
+It first appeared in
+.Fx 8.0 .
diff --git a/share/man/man4/age.4 b/share/man/man4/age.4
new file mode 100644
index 0000000..28e52c2
--- /dev/null
+++ b/share/man/man4/age.4
@@ -0,0 +1,187 @@
+.\" Copyright (c) 2008 Pyun YongHyeon
+.\" 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$
+.\"
+.Dd September 18, 2008
+.Dt AGE 4
+.Os
+.Sh NAME
+.Nm age
+.Nd Attansic/Atheros L1 Gigabit Ethernet driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device age"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_age_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for Attansic/Atheros L1 PCI Express
+Gigabit Ethernet controllers.
+.Pp
+All LOMs supported by the
+.Nm
+driver have TCP/UDP/IP checksum offload for both transmit and
+receive, TCP segmentation offload (TSO), hardware VLAN tag
+stripping/insertion features and an interrupt moderation mechanism
+as well as a 64-bit multicast hash filter.
+.Pp
+The L1 also supports Jumbo Frames (up to 10240 bytes), which can be
+configured via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver provides support for LOMs based on
+Attansic/Atheros L1 Gigabit Ethernet controller chips, including:
+.Pp
+.Bl -bullet -compact
+.It
+ASUS M2N8-VMX
+.It
+ASUS M2V
+.It
+ASUS M3A
+.It
+ASUS P2-M2A590G
+.It
+ASUS P5B-E
+.It
+ASUS P5B-MX/WIFI-AP
+.It
+ASUS P5B-VMSE
+.It
+ASUS P5K
+.It
+ASUS P5KC
+.It
+ASUS P5KPL-C
+.It
+ASUS P5KPL-VM
+.It
+ASUS P5K-SE
+.It
+ASUS P5K-V
+.It
+ASUS P5L-MX
+.It
+ASUS P5DL2-VM
+.It
+ASUS P5L-VM 1394
+.It
+ASUS G2S
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width "xxxxxx"
+.It Va hw.age.msi_disable
+This tunable disables MSI support on the Ethernet hardware.
+The default value is 0.
+.It Va hw.age.msix_disable
+This tunable disables MSI-X support on the Ethernet hardware.
+The default value is 0.
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width "xxxxxx"
+.It Va dev.age.%d.int_mod
+Maximum amount of time to delay interrupt processing in units of
+2us.
+The accepted range is 0 to 65000, the default is 50 (100us).
+Value 0 completely disables the interrupt moderation.
+.It Va dev.age.%d.process_limit
+Maximum amount of Rx events to be processed in the event loop before
+rescheduling a taskqueue.
+The accepted range is 30 to 255, the default value is 128 events.
+The interface does not need to be brought down and up again before
+a change takes effect.
+.It Va dev.age.%d.stats
+Display lots of useful MAC counters maintained in the driver.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver was written by
+.An Pyun YongHyeon
+.Aq yongari@FreeBSD.org .
+It first appeared in
+.Fx 7.1 .
diff --git a/share/man/man4/agp.4 b/share/man/man4/agp.4
new file mode 100644
index 0000000..06bee73
--- /dev/null
+++ b/share/man/man4/agp.4
@@ -0,0 +1,177 @@
+.\" Copyright (c) 2001 Yar Tikhiy
+.\" 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$
+.\"
+.Dd November 28, 2007
+.Dt AGP 4
+.Os
+.Sh NAME
+.Nm agp
+.Nd "generic interface to the Accelerated Graphics Port (AGP)"
+.Sh SYNOPSIS
+.Cd "device agp"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides uniform, abstract methods for controlling
+the following devices:
+.Pp
+.Bl -tag -width "NVIDIA:" -compact
+.It Ali:
+M1541, M1621 and M1671 host to AGP bridges
+.It AMD:
+751, 761 and 762 host to AGP bridges
+.It ATI:
+RS100, RS200, RS250 and RS300 AGP bridges
+.It Intel:
+i820, i840, i845, i850, and i860 host to AGP bridges
+.It Intel:
+i810, i810-DC100, i810E, i815, 830M, 845G, 845M, 852GM, 852GME, 855GM, 855GME, 865G, 915G and 915GM SVGA controllers
+.It Intel:
+82443BX, 82443GX, 82443LX, 82815, 82820, 82830, 82840, 82845, 82845G, 82850, 82855, 82855GM, 82860, 82865, 82875P, E7205 and E7505 host to AGP bridges
+.It NVIDIA:
+nForce and nForce2 AGP controllers
+.It SiS:
+530, 540, 550, 620, 630, 645, 645DX, 648, 650, 651, 655, 661, 730, 735, 740, 741, 745, 746, 760 and 5591 host to AGP bridges
+.It VIA:
+3296, 82C597, 82C598, 82C691, 82C694X, 82C8363, 8235, 8237, 8361, 8367, 8371, 8377, 8501, 8601, 862x, 8633, 8653, 8703, 8753, 8754, 8763, 8783, KT880, PM800, PM880, PN800, PN880, PT880, XM266 and XN266 host to PCI bridges
+.El
+.Pp
+The most common application of
+.Nm
+is for running
+.Xr X 7
+on the Intel i81x controllers.
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+operations can be performed on
+.Pa /dev/agpgart ,
+which are defined in
+.In sys/agpio.h :
+.Bl -tag -width indent
+.It Dv AGPIOC_INFO
+Returns state of the
+.Nm
+system.
+The result is a pointer to the following structure:
+.Bd -literal
+typedef struct _agp_info {
+ agp_version version; /* version of the driver */
+ u_int32_t bridge_id; /* bridge vendor/device */
+ u_int32_t agp_mode; /* mode info of bridge */
+ off_t aper_base; /* base of aperture */
+ size_t aper_size; /* size of aperture */
+ size_t pg_total; /* max pages (swap + system) */
+ size_t pg_system; /* max pages (system) */
+ size_t pg_used; /* current pages used */
+} agp_info;
+.Ed
+.It Dv AGPIOC_ACQUIRE
+Acquire control of the AGP chipset for use by this client.
+Returns
+.Er EBUSY
+if the AGP chipset is already acquired by another client.
+.It Dv AGPIOC_RELEASE
+Release control of the AGP chipset.
+This does not unbind or free any allocated memory, which is the
+responsibility of the client to handle if necessary.
+.It Dv AGPIOC_SETUP
+Enable the AGP hardware with the relevant mode.
+This
+.Xr ioctl 2
+takes the following structure:
+.Bd -literal
+typedef struct _agp_setup {
+ u_int32_t agp_mode; /* mode info of bridge */
+} agp_setup;
+.Ed
+.Pp
+The mode bits are defined in
+.In sys/agpio.h .
+.It Dv AGPIOC_ALLOCATE
+Allocate physical memory suitable for mapping into the AGP aperture.
+This
+.Xr ioctl 2
+takes the following structure:
+.Bd -literal
+typedef struct _agp_allocate {
+ int key; /* tag of allocation */
+ size_t pg_count; /* number of pages */
+ u_int32_t type; /* 0 == normal, other devspec */
+ u_int32_t physical; /* device specific (some devices
+ * need a phys address of the
+ * actual page behind the gatt
+ * table) */
+} agp_allocate;
+.Ed
+.Pp
+Returns a handle to the allocated memory.
+.It Dv AGPIOC_DEALLOCATE
+Free the previously allocated memory associated with the handle passed.
+.It Dv AGPIOC_BIND
+Bind the allocated memory at given offset with the AGP aperture.
+Returns
+.Er EINVAL
+if the memory is already bound or the offset is not at AGP page boundary.
+This
+.Xr ioctl 2
+takes the following structure:
+.Bd -literal
+typedef struct _agp_bind {
+ int key; /* tag of allocation */
+ off_t pg_start; /* starting page to populate */
+} agp_bind;
+.Ed
+.Pp
+The tag of allocation is the handle returned by
+.Dv AGPIOC_ALLOCATE .
+.It Dv AGPIOC_UNBIND
+Unbind memory from the AGP aperture.
+Returns
+.Er EINVAL
+if the memory is not bound.
+This
+.Xr ioctl 2
+takes the following structure:
+.Bd -literal
+typedef struct _agp_unbind {
+ int key; /* tag of allocation */
+ u_int32_t priority; /* priority for paging out */
+} agp_unbind;
+.Ed
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/agpgart" -compact
+.It Pa /dev/agpgart
+AGP device node.
+.El
+.Sh SEE ALSO
+.Xr X 7 Pq Pa ports/x11/xorg
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.1 .
diff --git a/share/man/man4/aha.4 b/share/man/man4/aha.4
new file mode 100644
index 0000000..f0f8aca
--- /dev/null
+++ b/share/man/man4/aha.4
@@ -0,0 +1,136 @@
+.\"
+.\" Copyright (c) 1994 Wilko Bulte
+.\" 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
+.\"
+.\" 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$
+.\"
+.Dd July 4, 2004
+.Dt AHA 4
+.Os
+.Sh NAME
+.Nm aha
+.Nd Adaptec SCSI host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device aha"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+aha_load="YES"
+.Ed
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.aha.0.at="isa"
+.Sh DESCRIPTION
+This driver provides access to the
+.Tn SCSI
+bus connected to the Adaptec AHA-154x and AHA-1640 SCSI host adapters.
+x is 0 for controllers without a floppy drive and 2 for controllers
+that have them.
+For optimum
+performance, Adaptec AHA-174x controllers should be configured in
+enhanced mode and attached via the
+.Xr ahb 4
+driver.
+.Pp
+One device hint entry for every card to be attached by the system is
+required.
+Specific values for the port address, IRQ, and DRQ may be specified.
+If wildcard values are used, the driver will query the device for its
+current settings and use those.
+If the port address
+is a wildcard, the driver consults an internal table of possible port address
+locations and attaches to the first unattached card it finds.
+The possible
+port addresses for this card are 0x330, 0x334, 0x230, 0x234, 0x130, and
+0x134.
+.Pp
+The AHA-1640 is an MCA bus card.
+Since the MCA bus is a self-identifying bus, no setting of hints is
+required.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following SCSI host adapters:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec AHA-154xB
+.It
+Adaptec AHA-154xC
+.It
+Adaptec AHA-154xCF
+.It
+Adaptec AHA-154xCP
+.It
+Adaptec AHA-1640
+.It
+Adaptec AHA-174x in 154x emulation mode
+.It
+DTC 3290 SCSI controller in 1542 emulation mode
+.It
+Tekram SCSI controllers in 154x emulation mode
+.El
+.Sh SEE ALSO
+.Xr ahb 4 ,
+.Xr ahc 4 ,
+.Xr aic 4 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.\"
+.\" .Sh DIAGNOSTICS
+.\"
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was ported by
+.An M. Warner Losh
+from the
+.Nm bt
+driver written by
+.An Justin T. Gibbs .
+.Sh BUGS
+The AHA-154xA card does not support residuals on data transfers.
+As a result, this card is no longer supported.
+.Pp
+There have been some reports that the AHA-154xB does not work well
+under heavy load.
+.Pp
+The AHA-154xCP is a plug and play controller.
+However, its resources are set using the on-board BIOS and cannot be
+moved.
+Failures to attached for this card are often caused when the resources
+set in the BIOS conflict.
diff --git a/share/man/man4/ahb.4 b/share/man/man4/ahb.4
new file mode 100644
index 0000000..6ef9993
--- /dev/null
+++ b/share/man/man4/ahb.4
@@ -0,0 +1,92 @@
+.\"
+.\" Copyright (c) 1994 Wilko Bulte
+.\" 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
+.\"
+.\" 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$
+.\"
+.Dd July 4, 2004
+.Dt AHB 4
+.Os
+.Sh NAME
+.Nm ahb
+.Nd Adaptec EISA SCSI host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device ahb"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ahb_load="YES"
+.Ed
+.Sh DESCRIPTION
+This driver provides access to the
+.Tn SCSI
+bus connected to an Adaptec
+AHA-174X host adapters in
+.Dq Em enhanced
+mode.
+Tagged queueing and synchronous SCSI transfers are supported.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following SCSI host adapters:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec AHA-1740
+.It
+Adaptec AHA-1742
+.It
+Adaptec AHA-1740A
+.It
+Adaptec AHA-1742A
+.El
+.Sh CAVEATS
+The Adaptec 174X is very sensitive to SCSI bus termination and cable
+length.
+It may also have difficulties operating with some modern devices
+that, due to their speed, expose timing problems in the controller.
+There are no known mechanisms for working around device incompatibilities of
+this nature.
+.Sh SEE ALSO
+.Xr aha 4 ,
+.Xr ahc 4 ,
+.Xr aic 4 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Justin T. Gibbs .
diff --git a/share/man/man4/ahc.4 b/share/man/man4/ahc.4
new file mode 100644
index 0000000..6bdbb56
--- /dev/null
+++ b/share/man/man4/ahc.4
@@ -0,0 +1,447 @@
+.\"
+.\" Copyright (c) 1995, 1996, 1997, 1998, 2000
+.\" Justin T. Gibbs. 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.
+.\"
+.\" 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$
+.\"
+.Dd July 13, 2008
+.Dt AHC 4
+.Os
+.Sh NAME
+.Nm ahc
+.Nd Adaptec VL/EISA/PCI SCSI host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device ahc"
+.Pp
+For one or more VL/EISA cards:
+.Cd "device eisa"
+.Pp
+For one or more PCI cards:
+.Cd "device pci"
+.Pp
+To allow PCI adapters to use memory mapped I/O if enabled:
+.Cd options AHC_ALLOW_MEMIO
+.Pp
+To configure one or more controllers to assume the target role:
+.Cd options AHC_TMODE_ENABLE <bitmask of units>
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following lines in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ahc_load="YES"
+ahc_eisa_load="YES"
+ahc_isa_load="YES"
+ahc_pci_load="YES"
+.Ed
+.Sh DESCRIPTION
+This driver provides access to the
+.Tn SCSI
+bus(es) connected to the Adaptec AIC77xx and AIC78xx
+host adapter chips.
+.Pp
+Driver features include support for twin and wide busses,
+fast, ultra or ultra2 synchronous transfers depending on controller type,
+tagged queueing, SCB paging, and target mode.
+.Pp
+Memory mapped I/O can be enabled for PCI devices with the
+.Dq Dv AHC_ALLOW_MEMIO
+configuration option.
+Memory mapped I/O is more efficient than the alternative, programmed I/O.
+Most PCI BIOSes will map devices so that either technique for communicating
+with the card is available.
+In some cases,
+usually when the PCI device is sitting behind a PCI->PCI bridge,
+the BIOS may fail to properly initialize the chip for memory mapped I/O.
+The typical symptom of this problem is a system hang if memory mapped I/O
+is attempted.
+Most modern motherboards perform the initialization correctly and work fine
+with this option enabled.
+.Pp
+Individual controllers may be configured to operate in the target role
+through the
+.Dq Dv AHC_TMODE_ENABLE
+configuration option.
+The value assigned to this option should be a bitmap
+of all units where target mode is desired.
+For example, a value of 0x25, would enable target mode on units 0, 2, and 5.
+A value of 0x8a enables it for units 1, 3, and 7.
+.Pp
+Per target configuration performed in the
+.Tn SCSI-Select
+menu, accessible at boot
+in
+.No non- Ns Tn EISA
+models,
+or through an
+.Tn EISA
+configuration utility for
+.Tn EISA
+models,
+is honored by this driver.
+This includes synchronous/asynchronous transfers,
+maximum synchronous negotiation rate,
+wide transfers,
+disconnection,
+the host adapter's SCSI ID,
+and,
+in the case of
+.Tn EISA
+Twin Channel controllers,
+the primary channel selection.
+For systems that store non-volatile settings in a system specific manner
+rather than a serial eeprom directly connected to the aic7xxx controller,
+the
+.Tn BIOS
+must be enabled for the driver to access this information.
+This restriction applies to all
+.Tn EISA
+and many motherboard configurations.
+.Pp
+Note that I/O addresses are determined automatically by the probe routines,
+but care should be taken when using a 284x
+.Pq Tn VESA No local bus controller
+in an
+.Tn EISA
+system.
+The jumpers setting the I/O area for the 284x should match the
+.Tn EISA
+slot into which the card is inserted to prevent conflicts with other
+.Tn EISA
+cards.
+.Pp
+Performance and feature sets vary throughout the aic7xxx product line.
+The following table provides a comparison of the different chips supported
+by the
+.Nm
+driver.
+Note that wide and twin channel features, although always supported
+by a particular chip, may be disabled in a particular motherboard or card
+design.
+.Pp
+.Bd -ragged -offset indent
+.Bl -column "aic7770 " "10 " "EISA/VL " "10MHz " "16bit " "SCBs " Features
+.Em "Chip MIPS Bus MaxSync MaxWidth SCBs Features"
+aic7770 10 EISA/VL 10MHz 16Bit 4 1
+aic7850 10 PCI/32 10MHz 8Bit 3
+aic7860 10 PCI/32 20MHz 8Bit 3
+aic7870 10 PCI/32 10MHz 16Bit 16
+aic7880 10 PCI/32 20MHz 16Bit 16
+aic7890 20 PCI/32 40MHz 16Bit 16 3 4 5 6 7 8
+aic7891 20 PCI/64 40MHz 16Bit 16 3 4 5 6 7 8
+aic7892 20 PCI/64 80MHz 16Bit 16 3 4 5 6 7 8
+aic7895 15 PCI/32 20MHz 16Bit 16 2 3 4 5
+aic7895C 15 PCI/32 20MHz 16Bit 16 2 3 4 5 8
+aic7896 20 PCI/32 40MHz 16Bit 16 2 3 4 5 6 7 8
+aic7897 20 PCI/64 40MHz 16Bit 16 2 3 4 5 6 7 8
+aic7899 20 PCI/64 80MHz 16Bit 16 2 3 4 5 6 7 8
+.El
+.Pp
+.Bl -enum -compact
+.It
+Multiplexed Twin Channel Device - One controller servicing two busses.
+.It
+Multi-function Twin Channel Device - Two controllers on one chip.
+.It
+Command Channel Secondary DMA Engine - Allows scatter gather list and
+SCB prefetch.
+.It
+64 Byte SCB Support - SCSI CDB is embedded in the SCB to eliminate an extra DMA.
+.It
+Block Move Instruction Support - Doubles the speed of certain sequencer
+operations.
+.It
+.Sq Bayonet
+style Scatter Gather Engine - Improves S/G prefetch performance.
+.It
+Queuing Registers - Allows queueing of new transactions without pausing the
+sequencer.
+.It
+Multiple Target IDs - Allows the controller to respond to selection as a
+target on multiple SCSI IDs.
+.El
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver supports the following
+.Tn SCSI
+host adapter chips and
+.Tn SCSI
+controller cards:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec
+.Tn AIC7770
+host adapter chip
+.It
+Adaptec
+.Tn AIC7850
+host adapter chip
+.It
+Adaptec
+.Tn AIC7860
+host adapter chip
+.It
+Adaptec
+.Tn AIC7870
+host adapter chip
+.It
+Adaptec
+.Tn AIC7880
+host adapter chip
+.It
+Adaptec
+.Tn AIC7890
+host adapter chip
+.It
+Adaptec
+.Tn AIC7891
+host adapter chip
+.It
+Adaptec
+.Tn AIC7892
+host adapter chip
+.It
+Adaptec
+.Tn AIC7895
+host adapter chip
+.It
+Adaptec
+.Tn AIC7896
+host adapter chip
+.It
+Adaptec
+.Tn AIC7897
+host adapter chip
+.It
+Adaptec
+.Tn AIC7899
+host adapter chip
+.It
+Adaptec
+.Tn 274X(W)
+.It
+Adaptec
+.Tn 274X(T)
+.It
+Adaptec
+.Tn 284X
+.It
+Adaptec
+.Tn 2910
+.It
+Adaptec
+.Tn 2915
+.It
+Adaptec
+.Tn 2920C
+.It
+Adaptec
+.Tn 2930C
+.It
+Adaptec
+.Tn 2930U2
+.It
+Adaptec
+.Tn 2940
+.It
+Adaptec
+.Tn 2940J
+.It
+Adaptec
+.Tn 2940N
+.It
+Adaptec
+.Tn 2940U
+.It
+Adaptec
+.Tn 2940AU
+.It
+Adaptec
+.Tn 2940UW
+.It
+Adaptec
+.Tn 2940UW Dual
+.It
+Adaptec
+.Tn 2940UW Pro
+.It
+Adaptec
+.Tn 2940U2W
+.It
+Adaptec
+.Tn 2940U2B
+.It
+Adaptec
+.Tn 2950U2W
+.It
+Adaptec
+.Tn 2950U2B
+.It
+Adaptec
+.Tn 19160B
+.It
+Adaptec
+.Tn 29160B
+.It
+Adaptec
+.Tn 29160N
+.It
+Adaptec
+.Tn 3940
+.It
+Adaptec
+.Tn 3940U
+.It
+Adaptec
+.Tn 3940AU
+.It
+Adaptec
+.Tn 3940UW
+.It
+Adaptec
+.Tn 3940AUW
+.It
+Adaptec
+.Tn 3940U2W
+.It
+Adaptec
+.Tn 3950U2
+.It
+Adaptec
+.Tn 3960
+.It
+Adaptec
+.Tn 39160
+.It
+Adaptec
+.Tn 3985
+.It
+Adaptec
+.Tn 4944UW
+.It
+NEC PC-9821Xt13 (PC-98)
+.It
+NEC RvII26 (PC-98)
+.It
+NEC PC-9821X-B02L/B09 (PC-98)
+.It
+NEC SV-98/2-B03 (PC-98)
+.It
+Many motherboards with on-board
+.Tn SCSI
+support
+.El
+.Sh SCSI CONTROL BLOCKS (SCBs)
+Every transaction sent to a device on the SCSI bus is assigned a
+.Sq SCSI Control Block
+(SCB).
+The SCB contains all of the information required by the
+controller to process a transaction.
+The chip feature table lists
+the number of SCBs that can be stored in on-chip memory.
+All chips
+with model numbers greater than or equal to 7870 allow for the on chip
+SCB space to be augmented with external SRAM up to a maximum of 255 SCBs.
+Very few Adaptec controller configurations have external SRAM.
+.Pp
+If external SRAM is not available, SCBs are a limited resource.
+Using the SCBs in a straight forward manner would only allow the driver to
+handle as many concurrent transactions as there are physical SCBs.
+To fully utilize the SCSI bus and the devices on it,
+requires much more concurrency.
+The solution to this problem is
+.Em SCB Paging ,
+a concept similar to memory paging.
+SCB paging takes advantage of
+the fact that devices usually disconnect from the SCSI bus for long
+periods of time without talking to the controller.
+The SCBs for disconnected transactions are only of use to the controller
+when the transfer is resumed.
+When the host queues another transaction
+for the controller to execute, the controller firmware will use a
+free SCB if one is available.
+Otherwise, the state of the most recently
+disconnected (and therefore most likely to stay disconnected) SCB is
+saved, via dma, to host memory, and the local SCB reused to start
+the new transaction.
+This allows the controller to queue up to
+255 transactions regardless of the amount of SCB space.
+Since the
+local SCB space serves as a cache for disconnected transactions, the
+more SCB space available, the less host bus traffic consumed saving
+and restoring SCB data.
+.Sh SEE ALSO
+.Xr aha 4 ,
+.Xr ahb 4 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 2.0 .
+.Sh AUTHORS
+The
+.Nm
+driver, the
+.Tn AIC7xxx
+sequencer-code assembler,
+and the firmware running on the aic7xxx chips was written by
+.An Justin T. Gibbs .
+.Sh BUGS
+Some Quantum drives (at least the Empire 2100 and 1080s) will not run on an
+.Tn AIC7870
+Rev B in synchronous mode at 10MHz.
+Controllers with this problem have a
+42 MHz clock crystal on them and run slightly above 10MHz.
+This confuses the drive and hangs the bus.
+Setting a maximum synchronous negotiation rate of 8MHz in the
+.Tn SCSI-Select
+utility will allow normal operation.
+.Pp
+Although the Ultra2 and Ultra160 products have sufficient instruction
+ram space to support both the initiator and target roles concurrently,
+this configuration is disabled in favor of allowing the target role
+to respond on multiple target ids.
+A method for configuring dual role mode should be provided.
+.Pp
+Tagged Queuing is not supported in target mode.
+.Pp
+Reselection in target mode fails to function correctly on all high
+voltage differential boards as shipped by Adaptec.
+Information on
+how to modify HVD board to work correctly in target mode is available
+from Adaptec.
diff --git a/share/man/man4/ahd.4 b/share/man/man4/ahd.4
new file mode 100644
index 0000000..e00c427
--- /dev/null
+++ b/share/man/man4/ahd.4
@@ -0,0 +1,180 @@
+.\"
+.\" Copyright (c) 1995, 1996, 1997, 1998, 2000
+.\" Justin T. Gibbs. All rights reserved.
+.\" Copyright (c) 2002
+.\" Scott Long. 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.
+.\"
+.\" 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$
+.\"
+.Dd July 4, 2004
+.Dt AHD 4
+.Os
+.Sh NAME
+.Nm ahd
+.Nd Adaptec PCI/PCI-X Ultra320 SCSI host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device ahd"
+.Pp
+To compile in debugging code:
+.Cd options AHD_DEBUG
+.Cd options AHD_DEBUG_OPTS=<bitmask of options>
+.Cd options AHD_REG_PRETTY_PRINT
+.Pp
+To configure one or more controllers to assume the target role:
+.Cd options AHD_TMODE_ENABLE=<bitmask of units>
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ahd_load="YES"
+.Ed
+.Sh DESCRIPTION
+This driver provides access to the
+.Tn SCSI
+bus(es) connected to Adaptec
+.Tn AIC79xx
+host adapter chips.
+.Pp
+Driver features include support for narrow and wide busses,
+fast, ultra, ultra2, ultra160, and ultra320 synchronous transfers,
+packetized transfers, tagged queueing, 512 SCB's, and target mode.
+.Pp
+The
+.Dv AHD_DEBUG_OPTS
+option is used to control which diagnostic messages are printed to the
+console when
+.Dv AHD_DEBUG
+is enabled.
+Logically OR the following bits together:
+.Bl -column -offset indent Value Function
+.Em "Value Function"
+0x0001 Show miscellaneous information
+0x0002 Show sense data
+0x0004 Show Serial EEPROM contents
+0x0008 Show bus termination settings
+0x0010 Show host memory usage
+0x0020 Show SCSI protocol messages
+0x0040 Show mode pointer of the chip register window
+0x0080 Show selection timeouts
+0x0100 Show FIFO usage messages
+0x0200 Show Queue Full status
+0x0400 Show SCB queue status
+0x0800 Show inbound packet information
+0x1000 Show S/G list information
+0x2000 Enable extra diagnostic code in the firmware
+.El
+.Pp
+The
+.Dv AHD_REG_PRETTY_PRINT
+option compiles in support for human-readable bit definitions for each register
+that is printed by the debugging code.
+However, it also bloats the compiled
+size of the driver by approximately 215KB.
+.Pp
+Individual controllers may be configured to operate in the target role
+through the
+.Dv AHD_TMODE_ENABLE
+configuration option.
+The value assigned to this option should be a bitmap
+of all units where target mode is desired.
+For example, a value of 0x25 would enable target mode on units 0, 2, and 5.
+Note that target mode is only supported for ultra160 speeds and below.
+.Pp
+Per target configuration performed in the
+.Tn SCSI-Select
+menu, accessible at boot,
+is honored by this driver.
+This includes synchronous/asynchronous transfers,
+maximum synchronous negotiation rate,
+wide transfers,
+disconnection,
+and the host adapter's
+.Tn SCSI
+ID.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec
+.Tn AIC7901
+host adapter chip
+.It
+Adaptec
+.Tn AIC7901A
+host adapter chip
+.It
+Adaptec
+.Tn AIC7902
+host adapter chip
+.It
+Adaptec
+.Tn 29320
+host adapter
+.It
+Adaptec
+.Tn 39320
+host adapter
+.It
+Many motherboards with on-board
+.Tn SCSI
+support
+.El
+.Sh SEE ALSO
+.Xr ahc 4 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.7 .
+.Sh AUTHORS
+The
+.Nm
+driver, the
+.Tn AIC7xxx
+sequencer-code assembler,
+and the firmware running on the aic79xx chips was written by
+.An Justin T. Gibbs .
+This manual page is based on the
+.Xr ahc 4
+manual page.
+.Sh BUGS
+The current generation of 79xx chips do not support target mode in Ultra320
+mode.
+Target mode in general has not been well tested in this driver.
diff --git a/share/man/man4/aio.4 b/share/man/man4/aio.4
new file mode 100644
index 0000000..3ea71b0
--- /dev/null
+++ b/share/man/man4/aio.4
@@ -0,0 +1,68 @@
+.\"-
+.\" Copyright (c) 2002 Dag-Erling Coïdan Smørgrav
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd October 24, 2002
+.Dt AIO 4
+.Os
+.Sh NAME
+.Nm aio
+.Nd asynchronous I/O
+.Sh SYNOPSIS
+To link into the kernel:
+.Cd "options VFS_AIO"
+.Pp
+To load as a kernel loadable module:
+.Dl kldload aio
+.Sh DESCRIPTION
+The
+.Nm
+facility provides system calls for asynchronous I/O.
+It is available both as a kernel option for static inclusion and as a
+dynamic kernel module.
+.Sh SEE ALSO
+.Xr aio_cancel 2 ,
+.Xr aio_error 2 ,
+.Xr aio_read 2 ,
+.Xr aio_return 2 ,
+.Xr aio_suspend 2 ,
+.Xr aio_waitcomplete 2 ,
+.Xr aio_write 2 ,
+.Xr lio_listio 2 ,
+.Xr config 8 ,
+.Xr kldload 8 ,
+.Xr kldunload 8
+.Sh HISTORY
+The
+.Nm
+facility appeared as a kernel option in
+.Fx 3.0 .
+The
+.Nm
+kernel module appeared in
+.Fx 5.0 .
diff --git a/share/man/man4/ale.4 b/share/man/man4/ale.4
new file mode 100644
index 0000000..d5102a1
--- /dev/null
+++ b/share/man/man4/ale.4
@@ -0,0 +1,162 @@
+.\" Copyright (c) 2008 Pyun YongHyeon
+.\" 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$
+.\"
+.Dd November 12, 2008
+.Dt ALE 4
+.Os
+.Sh NAME
+.Nm ale
+.Nd Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device ale"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ale_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for Atheros AR8121 PCI Express
+Gigabit Ethernet controllers and Atheros AR8113/AR8114 PCI
+Express Fast Ethernet controllers.
+.Pp
+All LOMs supported by the
+.Nm
+driver have TCP/UDP/IP checksum offload for both receive and transmit,
+TCP segmentation offload (TSO), hardware VLAN tag stripping/insertion
+features, Wake On Lan (WOL) and an interrupt coalescing/moderation
+mechanism as well as a 64-bit multicast hash filter.
+.Pp
+The AR8121 also supports Jumbo Frames (up to 8132 bytes), which can
+be configured via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+device driver provides support for the following Ethernet controllers:
+.Pp
+.Bl -bullet -compact
+.It
+Atheros AR8113 PCI Express Fast Ethernet controller
+.It
+Atheros AR8114 PCI Express Fast Ethernet controller
+.It
+Atheros AR8121 PCI Express Gigabit Ethernet controller
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width "xxxxxx"
+.It Va hw.ale.msi_disable
+This tunable disables MSI support on the Ethernet hardware.
+The default value is 0.
+.It Va hw.ale.msix_disable
+This tunable disables MSI-X support on the Ethernet hardware.
+The default value is 0.
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width "xxxxxx"
+.It Va dev.ale.%d.int_rx_mod
+Maximum amount of time to delay receive interrupt processing in
+units of 1us.
+The accepted range is 0 to 130000, the default is 30(30us).
+Value 0 completely disables the interrupt moderation.
+.It Va dev.ale.%d.int_tx_mod
+Maximum amount of time to delay transmit interrupt processing in
+units of 1us.
+The accepted range is 0 to 130000, the default is 1000(1ms).
+Value 0 completely disables the interrupt moderation.
+.It Va dev.ale.%d.process_limit
+Maximum amount of Rx frames to be processed in the event loop before
+rescheduling a taskqueue.
+The accepted range is 32 to 255, the default value is 128 events.
+The interface does not need to be brought down and up again before
+a change takes effect.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver was written by
+.An Pyun YongHyeon
+.Aq yongari@FreeBSD.org .
+It first appeared in
+.Fx 7.1 .
diff --git a/share/man/man4/altq.4 b/share/man/man4/altq.4
new file mode 100644
index 0000000..a2fe314
--- /dev/null
+++ b/share/man/man4/altq.4
@@ -0,0 +1,179 @@
+.\"
+.\" Copyright (c) 2004 Max Laier <mlaier@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$
+.\"
+.Dd November 12, 2008
+.Dt ALTQ 4
+.Os
+.Sh NAME
+.Nm ALTQ
+.Nd "alternate queuing of network packets"
+.Sh SYNOPSIS
+.Cd options ALTQ
+.Pp
+.Cd options ALTQ_CBQ
+.Cd options ALTQ_RED
+.Cd options ALTQ_RIO
+.Cd options ALTQ_HFSC
+.Cd options ALTQ_CDNR
+.Cd options ALTQ_PRIQ
+.Sh DESCRIPTION
+The
+.Nm
+framework provides several disciplines for queuing outgoing network packets.
+This is done by modifications to the interface packet queues.
+See
+.Xr altq 9
+for details.
+.Pp
+The user interface for
+.Nm
+is implemented by the
+.Xr pfctl 8
+utility, so please refer to the
+.Xr pfctl 8
+and the
+.Xr pf.conf 5
+manpages for a complete description of the
+.Nm
+capabilities and how to use it.
+.Ss Kernel Options
+The following options in the kernel configuration file are related to
+.Nm
+operation:
+.Pp
+.Bl -tag -width ".Dv ALTQ_DEBUG" -compact
+.It Dv ALTQ
+Enable
+.Nm .
+.It Dv ALTQ_CBQ
+Build the
+.Dq "Class Based Queuing"
+discipline.
+.It Dv ALTQ_RED
+Build the
+.Dq "Random Early Detection"
+extension.
+.It Dv ALTQ_RIO
+Build
+.Dq "Random Early Drop"
+for input and output.
+.It Dv ALTQ_HFSC
+Build the
+.Dq "Hierarchical Packet Scheduler"
+discipline.
+.It Dv ALTQ_CDNR
+Build the traffic conditioner.
+This option is meaningless at the moment as the conditioner is not used by
+any of the available disciplines or consumers.
+.It Dv ALTQ_PRIQ
+Build the
+.Dq "Priority Queuing"
+discipline.
+.It Dv ALTQ_NOPCC
+Required if the TSC is unusable.
+.It Dv ALTQ_DEBUG
+Enable additional debugging facilities.
+.El
+.Pp
+Note that
+.Nm Ns -disciplines
+cannot be loaded as kernel modules.
+In order to use a certain discipline you have to build it into a custom
+kernel.
+The
+.Xr pf 4
+interface, that is required for the configuration process of
+.Nm
+can be loaded as a module.
+.Sh SUPPORTED DEVICES
+The driver modifications described in
+.Xr altq 9
+are required to use a certain network card with
+.Nm .
+They have been applied to the following hardware drivers:
+.Xr age 4 ,
+.Xr ale 4 ,
+.Xr an 4 ,
+.Xr ath 4 ,
+.Xr aue 4 ,
+.Xt axe 4 ,
+.Xr bce 4 ,
+.Xr bfe 4 ,
+.Xr bge 4 ,
+.Xr dc 4 ,
+.Xr de 4 ,
+.Xr ed 4 ,
+.Xr em 4 ,
+.Xr ep 4 ,
+.Xr fxp 4 ,
+.Xr gem 4 ,
+.Xr hme 4 ,
+.Xr ipw 4 ,
+.Xr iwi 4 ,
+.Xr jme 4 ,
+.Xr le 4 ,
+.Xr msk 4 ,
+.Xr mxge 4 ,
+.Xr my 4 ,
+.Xr nfe 4 ,
+.Xr npe 4 ,
+.Xr nve 4 ,
+.Xr ral 4 ,
+.Xr re 4 ,
+.Xr rl 4 ,
+.Xr rum 4 ,
+.Xr sf 4 ,
+.Xr sis 4 ,
+.Xr sk 4 ,
+.Xr ste 4 ,
+.Xr stge 4 ,
+.Xr udav 4 ,
+.Xr ural 4 ,
+.Xr vge 4 ,
+.Xr vr 4 ,
+.Xr wi 4 ,
+and
+.Xr xl 4 .
+.Pp
+The
+.Xr ndis 4
+framework also has support for
+.Nm
+and thus all encapsulated drivers.
+.Pp
+The
+.Xr tun 4
+and
+.Xr ng_iface 4
+pseudo drivers also do support
+.Nm .
+.Sh SEE ALSO
+.Xr pf 4 ,
+.Xr pf.conf 5 ,
+.Xr ipfw 8 ,
+.Xr pfctl 8 ,
+.Xr altq 9
diff --git a/share/man/man4/amd.4 b/share/man/man4/amd.4
new file mode 100644
index 0000000..ee42360
--- /dev/null
+++ b/share/man/man4/amd.4
@@ -0,0 +1,78 @@
+.\"
+.\" Copyright (c) 1999 Alexey Zelkin
+.\" 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. 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$
+.\"
+.Dd August 8, 2004
+.Dt AMD 4
+.Os
+.Sh NAME
+.Nm amd
+.Nd amd53c974 PCI SCSI driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device amd"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+amd_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn amd53c974
+based SCSI cards.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+MELCO IFC-DP (PC-98)
+.It
+Tekram DC390
+.It
+Tekram DC390T
+.El
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh AUTHORS
+The
+.Nm
+driver was written and submitted to
+.Fx
+by Tekram, Inc.
diff --git a/share/man/man4/amdsmb.4 b/share/man/man4/amdsmb.4
new file mode 100644
index 0000000..eb02543
--- /dev/null
+++ b/share/man/man4/amdsmb.4
@@ -0,0 +1,54 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" 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$
+.\"
+.Dd December 31, 2005
+.Dt AMDSMB 4
+.Os
+.Sh NAME
+.Nm amdsmb
+.Nd "AMD-8111 SMBus 2.0 controller driver"
+.Sh SYNOPSIS
+.Cd "device smbus"
+.Cd "device smb"
+.Cd "device amdsmb
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to the AMD-8111 SMBus 2.0 controller.
+.Sh SEE ALSO
+.Xr smb 4 ,
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Ruslan Ermilov Aq ru@FreeBSD.org .
diff --git a/share/man/man4/amr.4 b/share/man/man4/amr.4
new file mode 100644
index 0000000..ad94ffe
--- /dev/null
+++ b/share/man/man4/amr.4
@@ -0,0 +1,241 @@
+.\"
+.\" Copyright (c) 2000 Jeroen Ruigrok van der Werven
+.\" 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. 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$
+.\"
+.Dd March 29, 2006
+.Dt AMR 4
+.Os
+.Sh NAME
+.Nm amr
+.Nd MegaRAID SCSI/ATA/SATA RAID driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device amr"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+amr_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for LSI Logic MegaRAID SCSI, ATA and SATA
+RAID controllers and legacy American Megatrends MegaRAID
+SCSI RAID controllers, including models relabeled
+and sold by Dell and Hewlett-Packard.
+.Pp
+LSI MegaRAID SAS controllers are supported by
+.Xr mfi 4
+and will not work with this driver.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+MegaRAID SATA 150-4
+.It
+MegaRAID SATA 150-6
+.It
+MegaRAID SATA 300-4X
+.It
+MegaRAID SATA 300-8X
+.It
+MegaRAID SCSI 320-1E
+.It
+MegaRAID SCSI 320-2E
+.It
+MegaRAID SCSI 320-4E
+.It
+MegaRAID SCSI 320-0X
+.It
+MegaRAID SCSI 320-2X
+.It
+MegaRAID SCSI 320-4X
+.It
+MegaRAID SCSI 320-0
+.It
+MegaRAID SCSI 320-1
+.It
+MegaRAID SCSI 320-2
+.It
+MegaRAID SCSI 320-4
+.It
+MegaRAID Series 418
+.It
+MegaRAID i4 133 RAID
+.It
+MegaRAID Elite 1500 (Series 467)
+.It
+MegaRAID Elite 1600 (Series 493)
+.It
+MegaRAID Elite 1650 (Series 4xx)
+.It
+MegaRAID Enterprise 1200 (Series 428)
+.It
+MegaRAID Enterprise 1300 (Series 434)
+.It
+MegaRAID Enterprise 1400 (Series 438)
+.It
+MegaRAID Enterprise 1500 (Series 467)
+.It
+MegaRAID Enterprise 1600 (Series 471)
+.It
+MegaRAID Express 100 (Series 466WS)
+.It
+MegaRAID Express 200 (Series 466)
+.It
+MegaRAID Express 300 (Series 490)
+.It
+MegaRAID Express 500 (Series 475)
+.It
+Dell PERC
+.It
+Dell PERC 2/SC
+.It
+Dell PERC 2/DC
+.It
+Dell PERC 3/DCL
+.It
+Dell PERC 3/QC
+.It
+Dell PERC 4/DC
+.It
+Dell PERC 4/IM
+.It
+Dell PERC 4/SC
+.It
+Dell PERC 4/Di
+.It
+Dell PERC 4e/DC
+.It
+Dell PERC 4e/Di
+.It
+Dell PERC 4e/Si
+.It
+Dell PERC 4ei
+.It
+HP NetRAID-1/Si
+.It
+HP NetRAID-3/Si (D4943A)
+.It
+HP Embedded NetRAID
+.It
+Intel RAID Controller SRCS16
+.It
+Intel RAID Controller SRCU42X
+.El
+.Sh DIAGNOSTICS
+.Ss Driver initialisation/shutdown phase
+.Bl -diag
+.It amr%d: memory window not available
+.It amr%d: I/O window not available
+.Pp
+The PCI BIOS did not allocate resources necessary for the correct operation of
+the controller.
+The driver cannot attach to this controller.
+.It amr%d: busmaster bit not set, enabling
+.Pp
+The PCI BIOS did not enable busmaster DMA,
+which is required for the correct operation of the controller.
+The driver has enabled this bit and initialisation will proceed.
+.It amr%d: can't allocate register window
+.It amr%d: can't allocate interrupt
+.It amr%d: can't set up interrupt
+.It amr%d: can't allocate parent DMA tag
+.It amr%d: can't allocate buffer DMA tag
+.It amr%d: can't allocate scatter/gather DMA tag
+.It amr%d: can't allocate s/g table
+.It amr%d: can't allocate mailbox tag
+.It amr%d: can't allocate mailbox memory
+.Pp
+A resource allocation error occurred while initialising the driver;
+initialisation has failed and the driver will not attach to this controller.
+.It amr%d: can't obtain configuration data from controller
+.It amr%d: can't obtain product data from controller
+.Pp
+The driver was unable to obtain vital configuration data from the controller.
+Initialisation has failed and the driver will not attach to this controller.
+.It amr%d: can't establish configuration hook
+.It amr%d: can't scan controller for drives
+.Pp
+The scan for logical drives managed by the controller failed.
+No drives will be attached.
+.It amr%d: device_add_child failed
+.It amr%d: bus_generic_attach returned %d
+.Pp
+Creation of the logical drive instances failed;
+attachment of one or more logical drives may have been aborted.
+.It amr%d: flushing cache...
+.Pp
+The controller cache is being flushed prior to shutdown or detach.
+.El
+.Ss Operational diagnostics
+.Bl -diag
+.It amr%d: I/O beyond end of unit (%u,%d > %u)
+.Pp
+A partitioning error or disk corruption has caused an I/O request
+beyond the end of the logical drive.
+This may also occur if FlexRAID Virtual Sizing is enabled and
+an I/O operation is attempted on a portion of the virtual drive
+beyond the actual capacity available.
+.It amr%d: polled command timeout
+.Pp
+An initialisation command timed out.
+The initialisation process may fail as a result.
+.It amr%d: bad slot %d completed
+.Pp
+The controller reported completion of a command that the driver did not issue.
+This may result in data corruption,
+and suggests a hardware or firmware problem with the system or controller.
+.It amr%d: I/O error - %x
+.Pp
+An I/O error has occurred.
+.El
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr mfi 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Mike Smith Aq msmith@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Mike Smith Aq msmith@FreeBSD.org
+and
+.An Jeroen Ruigrok van der Werven Aq asmodai@FreeBSD.org .
diff --git a/share/man/man4/an.4 b/share/man/man4/an.4
new file mode 100644
index 0000000..608a4ed
--- /dev/null
+++ b/share/man/man4/an.4
@@ -0,0 +1,144 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ee.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt AN 4
+.Os
+.Sh NAME
+.Nm an
+.Nd "Aironet Communications 4500/4800 wireless network adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device an"
+.Cd "device wlan"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_an_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Aironet Communications 4500 and 4800
+wireless network adapters and variants, including the following:
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+Aironet Communications 4500 and 4800 series
+.It
+Cisco Aironet 340 and 350 series
+.It
+Xircom Wireless Ethernet Adapter
+.El
+.Pp
+Support for these devices include the ISA, PCI and PCMCIA
+varieties.
+The Aironet 4500 series adapters operate at 1 and 2Mbps while
+the Aironet 4800 series and Cisco adapters can operate at 1, 2, 5.5 and 11Mbps.
+The ISA, PCI
+and PCMCIA devices are all based on the same core PCMCIA modules
+and all have the same programming interface, however unlike the
+Lucent WaveLAN/IEEE cards, the ISA and PCI cards appear to the
+host as normal ISA and PCI devices and do not require any PCCARD
+support.
+.Pp
+The PCMCIA Aironet cards require PC Card support, including the
+kernel
+.Xr pccard 4
+driver.
+ISA cards can either be configured to use ISA Plug and Play
+or to use a particular I/O address and IRQ
+by properly setting the DIP switches on the board.
+(The default
+switch setting is for Plug and Play.)
+The
+.Nm
+driver has Plug and Play support and will work in either configuration,
+however when using a hard-wired I/O address and IRQ, the driver
+configuration and the NIC's switch settings must agree.
+PCI cards
+require no switch settings of any kind and will be automatically
+probed and attached.
+.Pp
+All host/device interaction with the Aironet cards is via programmed I/O.
+The Aironet devices support 802.11 and 802.3 frames, power management,
+BSS (infrastructure) and IBSS (ad-hoc) operation modes.
+The
+.Nm
+driver encapsulates all IP and ARP traffic as 802.11 frames, however
+it can receive either 802.11 or 802.3 frames.
+Transmit speed is
+selectable between 1Mbps, 2Mbps, 5.5Mbps, 11Mbps or
+"auto" (the NIC automatically chooses the best speed).
+.Pp
+By default, the
+.Nm
+driver configures the Aironet card for infrastructure operation.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "an%d: init failed"
+The Aironet card failed to become ready after an initialization command was
+issued.
+.It "an%d: failed to allocate %d bytes on NIC"
+The driver was unable to allocate memory for transmit frames in the
+NIC's on-board RAM.
+.It "an%d: device timeout"
+The Aironet card failed to generate an interrupt to acknowledge a transmit
+command.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr wlan 4 ,
+.Xr ancontrol 8 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ee.columbia.edu .
diff --git a/share/man/man4/arcmsr.4 b/share/man/man4/arcmsr.4
new file mode 100644
index 0000000..bc11cb3
--- /dev/null
+++ b/share/man/man4/arcmsr.4
@@ -0,0 +1,136 @@
+.\" Copyright (c) 2005 Scott Long
+.\" 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$
+.\"
+.Dd March 28, 2008
+.Dt ARCMSR 4
+.Os
+.Sh NAME
+.Nm arcmsr
+.Nd Areca SATA II RAID Controller driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device da"
+.Cd "device arcmsr"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+arcmsr_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Areca ARC-11xx and ARC-12xx series of SATA II
+RAID controllers.
+These controllers feature RAID-0, 1, 3, 5, 6, and 10 and
+JBOD acceleration for up to 16 SATA drives.
+Raid level and stripe level
+migration, online capacity expansion, hot insertion/removal, automatic failover
+and rebuild, and SMART are also supported.
+Access to the arrays is provided
+via the SCSI CAM
+.Pa /dev/da?
+device nodes.
+A management interface is also present via the
+.Pa /dev/arcmsr?
+device node.
+Management tools for i386 and amd64 are available from Areca.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+ARC-1110
+.It
+ARC-1120
+.It
+ARC-1130
+.It
+ARC-1160
+.It
+ARC-1170
+.It
+ARC-1180
+.It
+ARC-1110ML
+.It
+ARC-1120ML
+.It
+ARC-1130ML
+.It
+ARC-1160ML
+.It
+ARC-1210
+.It
+ARC-1220
+.It
+ARC-1230
+.It
+ARC-1260
+.It
+ARC-1280
+.It
+ARC-1210ML
+.It
+ARC-1220ML
+.It
+ARC-1231ML
+.It
+ARC-1261ML
+.It
+ARC-1280ML
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/arcmsr?" -compact
+.It Pa /dev/da?
+Array block device
+.It Pa /dev/arcmsr?
+Management interface
+.El
+.Sh SEE ALSO
+.Xr da 4 ,
+.Xr scbus 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.4 .
+.Sh AUTHORS
+The driver was written by
+.An Erich Chen Aq erich@areca.com.tw .
+.Sh BUGS
+The driver has been tested on i386 and amd64.
+It likely requires additional
+work to function on big-endian architectures.
diff --git a/share/man/man4/asmc.4 b/share/man/man4/asmc.4
new file mode 100644
index 0000000..2a8d716
--- /dev/null
+++ b/share/man/man4/asmc.4
@@ -0,0 +1,156 @@
+.\"-
+.\" Copyright (c) 2007, 2008 Rui Paulo <rpaulo@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 ``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$
+.\"
+.Dd April 7, 2008
+.Dt ASMC 4
+.Os
+.Sh NAME
+.Nm asmc
+.Nd device driver for the Apple System Management Console (SMC)
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device asmc"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+asmc_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver controls the Apple System Management Console (SMC for short)
+found on Intel Apple systems.
+.Pp
+The SMC is known to be found on the following systems:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+MacBook (any generation)
+.It
+MacBook Pro (any generation)
+.It
+Intel MacMini
+.El
+.Pp
+With this driver, you can configure your keyboard backlight
+brightness, check temperatures of several sensors, check the speed of
+the internal fans and check the status of the Sudden Motion Sensor.
+.Pp
+Variables related to the SMC control and inspection are exported via
+.Xr sysctl 3
+under the device tree
+.Va dev.asmc .
+.Sh KEYBOARD BACKLIGHT
+On
+.Tn MacBook Pro
+systems, you can control the keyboard brightness by writing values to
+the
+.Va dev.asmc.%d.light.left
+or
+.Va dev.asmc.%d.light.right
+sysctl MIBs.
+.Pp
+Each of these sysctl MIBs contains the raw value returned by the left
+and right light sensors.
+.Sh TEMPERATURES
+The number of temperature sensors and their description varies among
+systems.
+You can inspect the temperature sensors on your system by traversing
+the
+.Va dev.asmc.temp
+sysctl MIB.
+.Pp
+All values are in degrees celsius.
+.Sh SYSTEM FANS
+The
+.Va dev.asmc.fan.%d
+sysctl tree contains the leaf nodes
+.Va speed ,
+.Va safespeed ,
+.Va minspeed ,
+.Va maxspeed
+and
+.Va targetspeed .
+Each of these leaf nodes represent the current fan speed, the safest
+minimum fan speed, the mininum speed and the maximum speed
+respectively.
+.Pp
+All values are in RPM.
+.Sh SUDDEN MOTION SENSOR
+The Sudden Motion Sensor (SMS for short) is a device that detects
+laptop movement and notifies the operating system via an interrupt.
+The sysctl MIBs present under
+.Va dev.asmc.sms
+all relate to the SMS.
+.Pp
+The most interesting usage of this device is to park the disk heads
+when the laptop is moved harshly.
+First, you need to install
+.Xr ataidle 8 Pq Pa ports/sysutils/ataidle
+and then configure
+.Xr devd 8
+the following way:
+.Bd -literal -offset indent
+notify 0 {
+ match "system" "ACPI";
+ match "subsystem" "asmc";
+ action "/usr/local/sbin/ataidle -s X Y";
+};
+.Ed
+.Pp
+Do not forget to change the
+.Ar X
+and
+.Ar Y
+values in the command above.
+.Pp
+Also, please note that parking the disk heads too many times can
+dramatically reduce your hard drive's life span.
+Do not rely solely on
+the SMS to protect your hard drive: good care and common sense can
+increase your hard drive's life.
+.Sh SEE ALSO
+.Xr ataidle 8 Pq Pa ports/sysutils/ataidle ,
+.Xr devd 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 8.0 .
+.Sh AUTHORS
+.An -nosplit
+.An Rui Paulo Aq rpaulo@FreeBSD.org
+(Google Summer of Code project).
+.Sh BUGS
+Support for the latest models was never tested and is most likely not
+fully working.
diff --git a/share/man/man4/asr.4 b/share/man/man4/asr.4
new file mode 100644
index 0000000..955eb0f
--- /dev/null
+++ b/share/man/man4/asr.4
@@ -0,0 +1,115 @@
+.\" Copyright (c) 2003 David E. O'Brien
+.\" Copyright (c) 2000 Adaptec, Inc.
+.\" All rights reserved.
+.\"
+.\" Manpage cleanup by: Jeroen Ruigrok van der Werven <asmodai@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 14, 2004
+.Dt ASR 4
+.Os
+.Sh NAME
+.Nm asr
+.Nd driver for Adaptec I2O based SCSI/ATA host bus adapters
+.Sh SYNOPSIS
+.Cd "device asr"
+.Sh DESCRIPTION
+The Adaptec
+.Nm
+driver provides access to disks
+and disk arrays controlled by I2O based host bus adapters and
+SmartRAID SCSI RAID adapters through the standard SCSI disk
+.Xr da 4
+interface.
+.Pp
+The supported adapters provide 64 bit PCI,
+Compact PCI, Zero Channel PCI,
+and up to four channels of Ultra2, Ultra 160, or Ultra320 SCSI,
+or two channels of 1GB Fibre.
+All support RAID-0, RAID-1, RAID-10, RAID-5 and RAID-50 arrays.
+All SCSI target types are supported.
+For the ATA based controllers, one IDE drive per channel is supported.
+Hot-swapping of IDE drives is not supported at this time.
+.Pp
+All host bus adapters must be configured
+before they can be used with any operating system.
+Please contact Adaptec directly to obtain the latest information
+on configuration utilities for the adapters.
+Currently there are both a Motif based GUI configuration utility
+and a CLI based configuration utility available from the Adaptec Web site.
+The cards and arrays can also be configured via the BIOS based configuration
+tool (SMOR).
+.Sh HARDWARE
+The adapters currently supported by the
+.Nm
+driver include the following:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec Zero-Channel SCSI RAID 2000S, 2005S, 2010S, 2015S
+.It
+Adaptec SCSI RAID 2100S, 2110S
+.It
+Adaptec ATA-100 RAID 2400A
+.It
+Adaptec SCSI RAID 3200S, 3210S
+.It
+Adaptec SCSI RAID 3400S, 3410S
+.It
+Adaptec SmartRAID PM1554
+.It
+Adaptec SmartRAID PM1564
+.It
+Adaptec SmartRAID PM2554
+.It
+Adaptec SmartRAID PM2564
+.It
+Adaptec SmartRAID PM2664
+.It
+Adaptec SmartRAID PM2754
+.It
+Adaptec SmartRAID PM2865
+.It
+Adaptec SmartRAID PM3754
+.It
+Adaptec SmartRAID PM3755U2B / SmartRAID V Millennium
+.It
+Adaptec SmartRAID PM3757
+.It
+DEC KZPCC-AC (LVD 1-ch, 4MB or 16MB cache),
+DEC KZPCC-CE (LVD 3-ch, 64MB cache),
+DEC KZPCC-XC (LVD 1-ch, 16MB cache),
+DEC KZPCC-XE (LVD 3-ch, 64MB cache) -- rebadged SmartRAID V Millennium
+.El
+.Sh FILES
+.Bl -tag -width "/dev/asr*" -compact
+.It Pa /dev/asr*
+Adaptec SCSI RAID control nodes
+.El
+.Sh NOTES
+The ATA based controllers present their devices as SCSI-like devices via CAM.
+For IDE drives attached to these cards, a subset of standard SCSI commands
+and mode pages are understood via translation performed in the card's firmware.
+.Sh SEE ALSO
+.Xr da 4
+.Sh HISTORY
+The
+.Nm
+(Adaptec SCSI RAID)
+driver first appeared as the dpti2o driver under BSDi
+.Bsx 3.2 ,
+then under
+.Fx 2.2.8
+and was ported over to the CAM layer represented in 4.0.
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was kindly donated by Adaptec
+and is maintained by
+.An Mark Salyzyn Aq mark_salyzyn@adaptec.com .
+This manual page was written by
+.An Mark Salyzyn
+and fixed up by
+.An Jeroen Ruigrok van der Werven Aq asmodai@FreeBSD.org .
diff --git a/share/man/man4/ata.4 b/share/man/man4/ata.4
new file mode 100644
index 0000000..34d782b
--- /dev/null
+++ b/share/man/man4/ata.4
@@ -0,0 +1,239 @@
+.\"
+.\" Copyright (c) 2003 Søren Schmidt <sos@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,
+.\" without modification, immediately at the beginning of the file.
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd October 4, 2008
+.Dt ATA 4
+.Os
+.Sh NAME
+.Nm ata ,
+.Nm ar ,
+.Nm acd ,
+.Nm ad ,
+.Nm afd ,
+.Nm ast
+.Nd generic ATA/ATAPI disk controller driver
+.Sh SYNOPSIS
+For ISA based ATA/ATAPI support:
+.Cd device isa
+.Cd device ata
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.ata.0.at="isa"
+.Cd hint.ata.0.port="0x1f0"
+.Cd hint.ata.0.irq="14"
+.Cd hint.ata.1.at="isa"
+.Cd hint.ata.1.port="0x170"
+.Cd hint.ata.1.irq="15"
+.Pp
+For PC98 based ATA/ATAPI support:
+.Cd device isa
+.Cd device ata
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.atacbus.0.at="isa"
+.Cd hint.atacbus.0.port="0x640"
+.Cd hint.atacbus.0.irq="9"
+.Pp
+For PCI based ATA/ATAPI support:
+.Cd device pci
+.Cd device ata
+.Pp
+To support ATA compliant disk drives:
+.Cd device atadisk
+.Pp
+To support ATA software RAID's:
+.Cd device ataraid
+.Pp
+To support ATAPI CDROM, DVD and CD/DVD burner drives:
+.Cd device atapicd
+.Pp
+To support ATAPI floppy drives:
+.Cd device atapifd
+.Pp
+To support ATAPI tape drives:
+.Cd device atapist
+.Pp
+The following tunables are settable from the loader:
+.Bl -ohang
+.It Va hw.ata.ata_dma
+set to 1 for DMA access, 0 for PIO (default is DMA).
+.It Va hw.ata.ata_dma_check_80pin
+set to 0 to disable the 80pin cable check (default is 1, check the cable)
+.It Va hw.ata.atapi_dma
+set to 1 for DMA access, 0 for PIO (default is DMA).
+.It Va hw.ata.wc
+set to 1 to enable Write Caching, 0 to disable (default is enabled).
+.Em WARNING :
+can cause data loss on power failures and crashes.
+.El
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to ATA (IDE) and SerialATA disk drives,
+ATAPI CDROM/DVD drives, ZIP/LS120 ATAPI drives and ATAPI tape drives
+connected to controllers according to the ATA/ATAPI standards.
+.Pp
+The currently supported ATA/SATA controller chips are:
+.Pp
+.Bl -tag -width "Silicon Image:" -compact
+.It Acard:
+ATP850P, ATP860A, ATP860R, ATP865A, ATP865R.
+.It ALI:
+M5229, M5281, M5287, M5288, M5289.
+.It AMD:
+AMD756, AMD766, AMD768, AMD8111, CS5536.
+.It ATI:
+IXP200, IXP300, IXP400.
+.It CMD:
+CMD646, CMD646U2, CMD648, CMD649.
+.It Cypress:
+Cypress 82C693.
+.It Cyrix:
+Cyrix 5530.
+.It HighPoint:
+HPT302, HPT366, HPT368, HPT370, HPT371, HPT372, HPT372N, HPT374.
+.It Intel:
+6300ESB, 31244, PIIX, PIIX3, PIIX4, ESB2, ICH, ICH0, ICH2, ICH3, ICH4, ICH5, ICH6, ICH7, ICH8, ICH9, ICH10.
+.It ITE:
+IT8211F, IT8212F, IT8213F.
+.It JMicron:
+JMB360, JMB361, JMB363, JMB365, JMB366, JMB368.
+.It Marvell
+88SX5040, 88SX5041, 88SX5080, 88SX5081, 88SX6041, 88SX6081, 88SX6101, 88SX6141.
+.It National:
+SC1100.
+.It NetCell:
+NC3000, NC5000.
+.It nVidia:
+nForce, nForce2, nForce2 MCP, nForce3, nForce3 MCP, nForce3 Pro, nForce4.
+.It Promise:
+PDC20246, PDC20262, PDC20263, PDC20265, PDC20267, PDC20268, PDC20269, PDC20270, PDC20271, PDC20275, PDC20276, PDC20277, PDC20318, PDC20319, PDC20371, PDC20375, PDC20376, PDC20377, PDC20378, PDC20379, PDC20571, PDC20575, PDC20579, PDC20580, PDC20617, PDC20618, PDC20619, PDC20620, PDC20621, PDC20622, PDC40518, PDC40519, PDC40718, PDC40719.
+.It ServerWorks:
+HT1000, ROSB4, CSB5, CSB6, K2, Frodo4, Frodo8.
+.It Silicon Image:
+SiI0680, SiI3112, SiI3114, SiI3124, SiI3132, SiI3512.
+.It SiS:
+SIS180, SIS181, SIS182, SIS5513, SIS530, SIS540, SIS550, SIS620, SIS630, SIS630S, SIS633, SIS635, SIS730, SIS733, SIS735, SIS745, SIS961, SIS962, SIS963, SIS964, SIS965.
+.It VIA:
+VT6410, VT6420, VT6421, VT82C586, VT82C586B, VT82C596, VT82C596B, VT82C686, VT82C686A, VT82C686B, VT8231, VT8233, VT8233A, VT8233C, VT8235, VT8237, VT8237A, VT8237S, VT8251.
+.El
+.Pp
+Unknown ATA chipsets are supported in PIO modes, and if the standard
+busmaster DMA registers are present and contain valid setup, DMA is
+also enabled, although the max mode is limited to UDMA33, as it is
+not known what the chipset can do and how to program it.
+.Pp
+The
+.Nm
+driver can change the transfer mode and various other parameters
+when the system is up and running.
+See
+.Xr atacontrol 8 .
+.Pp
+The
+.Nm
+driver sets the maximum transfer mode supported by the hardware as default.
+However the
+.Nm
+driver sometimes warns:
+.Dq Sy "DMA limited to UDMA33, non-ATA66 cable or device".
+This means that
+the
+.Nm
+driver has detected that the required 80 conductor cable is not present
+or could not be detected properly,
+or that one of the devices on the channel only accepts up
+to UDMA2/ATA33.
+The
+.Va hw.ata.ata_dma_check_80pin
+tunable can be set to 0 to disable this check.
+.Pp
+Unknown ATAPI devices are initialized to DMA mode if the
+.Va hw.ata.atapi_dma
+tunable is set to 1 and they support at least UDMA33 transfers.
+Otherwise they are set to PIO mode because severe DMA problems are
+common even if the device capabilities indicate support.
+You can always try to set DMA mode on an ATAPI device using
+.Xr atacontrol 8 ,
+but be aware that your hardware might
+.Em not
+support it and can potentially
+.Em hang
+the entire system causing data loss.
+.Sh FILES
+.Bl -tag -width ".Pa /sys/i386/conf/GENERIC" -compact
+.It Pa /dev/ad*
+ATA disk device nodes
+.It Pa /dev/ar*
+ATA RAID device nodes
+.It Pa /dev/acd*
+ATAPI CD-ROM device nodes
+.It Pa /dev/afd*
+ATAPI floppy drive device nodes
+.It Pa /dev/ast*
+ATAPI tape drive device nodes
+.It Pa /sys/i386/conf/GENERIC
+sample generic kernel config file for
+.Nm
+based systems
+.El
+.Sh NOTES
+Please remember that in order to use UDMA4/ATA66 and above modes you
+.Em must
+use 80 conductor cables.
+Please assure that ribbon cables are no longer than 45cm.
+In case of rounded ATA cables, the length depends on the
+quality of the cables.
+SATA cables can be up to 1m long according to the specification.
+.Pp
+Static device numbering
+(enabled with the
+.Dv ATA_STATIC_ID
+kernel option)
+reserves a number for each possibly connected disk,
+even when not present.
+This is useful in hotswap scenarios
+where disks should always show up as the same numbered device,
+and not depend on attach order.
+.Pp
+Native Command Queuing (NCQ) on SATA drives is not yet supported.
+.Sh SEE ALSO
+.Xr ataraid 4 ,
+.Xr atacontrol 8 ,
+.Xr burncd 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An S\(/oren Schmidt
+.Aq sos@FreeBSD.org .
diff --git a/share/man/man4/atapicam.4 b/share/man/man4/atapicam.4
new file mode 100644
index 0000000..830a4dd
--- /dev/null
+++ b/share/man/man4/atapicam.4
@@ -0,0 +1,120 @@
+.\" Copyright (c) 2002, 2004
+.\" Thomas Quinot <thomas@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.
+.\" 3. 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 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 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$
+.\"
+.Dd October 23, 2002
+.Dt ATAPICAM 4
+.Os
+.Sh NAME
+.Nm atapicam
+.Nd CAM XPT (transport) module for ATAPI devices
+.Sh SYNOPSIS
+.Cd "device atapicam"
+.Sh DESCRIPTION
+The ATAPI/CAM module allows ATAPI devices (CD-ROM, CD-RW, DVD drives,
+floppy drives such as Iomega Zip, tape drives) to be accessed through
+the SCSI subsystem,
+.Xr cam 4 .
+.Pp
+.Xr ata 4
+and
+.Xr scbus 4
+must be configured in the kernel as well.
+The SCSI target drivers
+.Xr ( cd 4 ,
+.Xr da 4 ,
+or
+.Xr st 4 )
+can then be used to access the devices.
+The generic passthrough device,
+.Xr pass 4 ,
+can also be used to send SCSI commands directly
+to the devices through the CAM API.
+.Pp
+A separate CAM bus is created for each ATA bus in the system.
+On each of these buses, target ID 0 is assigned to the master
+device, and ID 1 is assigned to the slave
+(provided they are ATAPI devices).
+.Sh IMPLEMENTATION NOTES
+Some SCSI commands are intercepted by the driver, and undergo special
+processing in order to work around limitations of ATAPI devices.
+Such limitations can be consequences of the ATAPI specification.
+For example, ATAPI devices do not implement the 6-byte versions
+of
+.Dv MODE_SELECT , MODE_SENSE , READ ,
+or
+.Dv WRITE .
+They can also be common bugs, such as hanging when queried for
+extended
+.Dv INQUIRY
+information.
+.Sh EXAMPLES
+.Bd -literal -offset indent
+device ata
+device atapicam
+device scbus
+device cd
+device pass
+.Ed
+.Pp
+Add the
+.Nm
+driver to the kernel.
+.Pp
+.Dl "camcontrol devlist"
+.Pp
+Print the list of all devices available through CAM.
+.Pp
+.Dl "mount -t cd9660 /dev/cd0 /mnt"
+.Pp
+Mount a CD-ROM from an ATAPI CD-ROM drive
+(the command above assumes that the ATAPI drive is the only CD-ROM unit).
+.Sh SEE ALSO
+.Xr ata 4 ,
+.Xr cam 4 ,
+.Xr scsi 4 ,
+.Xr atacontrol 8 ,
+.Xr camcontrol 8
+.Sh HISTORY
+The ATAPI/CAM driver first appeared in
+.Fx 4.8
+and
+.Fx 5.0 .
+.Sh AUTHORS
+The ATAPI/CAM driver was written by
+.An Thomas Quinot Aq thomas@FreeBSD.org .
+.Sh BUGS
+.Nm
+and ATAPI-specific target drivers
+.Xr ( acd 4 ,
+.Xr ast 4 ,
+and
+.Xr afd 4 )
+can be configured in the same kernel.
+Simultaneous access to the same device through the SCSI generic drivers
+and the ATAPI-specific drivers may cause problems and is strongly discouraged.
diff --git a/share/man/man4/ataraid.4 b/share/man/man4/ataraid.4
new file mode 100644
index 0000000..ee7446d
--- /dev/null
+++ b/share/man/man4/ataraid.4
@@ -0,0 +1,148 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" 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$
+.\"
+.Dd February 17, 2006
+.Dt ATARAID 4
+.Os
+.Sh NAME
+.Nm ataraid
+.Nd "ATA software RAID support"
+.Sh SYNOPSIS
+.Cd "device ata"
+.Cd "device ataraid"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for so-called software RAID
+(sometimes referred to as fake RAID or pseudo RAID).
+.Pp
+When a controller that supports software RAID is instructed to
+create a RAID array, its BIOS writes data structures in a specific
+metadata format to the disks.
+These data structures are picked up by the
+.Nm
+driver, so that
+.Fx
+can work with the array.
+The
+.Nm
+driver has to understand the specific metadata format of a
+controller BIOS in order to support its RAID capabilities.
+.Pp
+Read-only support for a metadata format means that
+.Fx
+can use the given RAID array for normal read/write operations.
+Creation and rebuild of such arrays has to be done from the
+controller BIOS.
+.Pp
+Read and write support for a metadata format means that
+.Fx
+can use the given RAID array for normal read/write operations.
+Additionally, the
+.Xr atacontrol 8
+utility can be used to create, rebuild, update and fail such
+RAID arrays.
+.Pp
+The
+.Nm
+driver can read the following metadata formats:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec HostRAID
+.It
+Highpoint V2 RocketRAID
+.It
+Highpoint V3 RocketRAID
+.It
+Intel MatrixRAID
+.It
+Integrated Technology Express (ITE)
+.It
+JMicron
+.It
+LSI Logic V2 MegaRAID
+.It
+LSI Logic V3 MegaRAID
+.It
+NVIDIA MediaShield
+.It
+Promise FastTrak
+.It
+Silicon Image Medley
+.It
+Silicon Integrated Systems (SiS)
+.It
+VIA Tech V-RAID
+.It
+FreeBSD PseudoRAID
+.El
+.Pp
+The
+.Nm
+driver can write the following metadata formats:
+.Pp
+.Bl -bullet -compact
+.It
+Highpoint V2 RocketRAID
+.It
+Intel MatrixRAID
+.It
+JMicron
+.It
+Promise FastTrak
+.It
+Silicon Integrated Systems (SiS)
+.It
+VIA Tech V-RAID
+.It
+FreeBSD PseudoRAID
+.El
+.Pp
+It is also possible to use software RAID on controllers
+that do not have special software RAID capabilities.
+See
+.Xr atacontrol 8
+for details.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ar*" -compact
+.It Pa /dev/ar*
+ATA RAID device nodes
+.El
+.Sh SEE ALSO
+.Xr ata 4 ,
+.Xr atacontrol 8
+.Sh CAVEATS
+RAID5 is not supported at this time.
+Code exists, but it neither uses nor maintains parity information.
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An S\(/oren Schmidt Aq sos@FreeBSD.org .
+This manual page was written by
+.An Christian Brueffer Aq brueffer@FreeBSD.org .
diff --git a/share/man/man4/ath.4 b/share/man/man4/ath.4
new file mode 100644
index 0000000..80d094a
--- /dev/null
+++ b/share/man/man4/ath.4
@@ -0,0 +1,294 @@
+.\"-
+.\" Copyright (c) 2002-2008 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,
+.\" without modification.
+.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
+.\" similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+.\" redistribution must be conditioned upon including a substantially
+.\" similar Disclaimer requirement for further binary redistribution.
+.\"
+.\" NO WARRANTY
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+.\" THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR 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 DAMAGES.
+.\"
+.\" $FreeBSD$
+.\"/
+.Dd April 13, 2008
+.Dt ATH 4
+.Os
+.Sh NAME
+.Nm ath
+.Nd "Atheros IEEE 802.11 wireless network driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ath"
+.Cd "device ath_hal"
+.Cd "device ath_rate_sample"
+.Cd "device wlan"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ath_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for wireless network adapters based on
+the Atheros AR5210, AR5211, and AR5212 programming APIs.
+These APIs are used by a wide variety of chips; most all chips with
+a PCI and/or CardBus interface are supported.
+Chip-specific support is provided by the Atheros Hardware Access Layer
+(HAL), that is packaged separately.
+.Pp
+Supported features include 802.11 and 802.3 frames, power management, BSS,
+IBSS, and host-based access point operation modes.
+All host/device interaction is via DMA.
+.Pp
+The
+.Nm
+driver encapsulates all IP and ARP traffic as 802.11 frames, however
+it can receive either 802.11 or 802.3 frames.
+Transmit speed and operating mode is selectable
+and depends on the specific chipset.
+AR5210-based devices support 802.11a operation with transmit speeds
+of 6 Mbps, 9 Mbps, 12 Mbps, 18 Mbps, 24 Mbps, 36 Mbps, 48 Mbps, and 54 Mbps.
+AR5211-based devices support 802.11a and 802.11b operation with transmit
+speeds as above for 802.11a operation and
+1Mbps, 2Mbps, 5.5 Mbps and 11Mbps for 802.11b operation.
+AR5212-based devices support 802.11a, 802.11b, and 802.11g operation
+with transmit speeds appropriate to each.
+Most chips also support an Atheros Turbo Mode (TM) that operates in
+the 5Ghz frequency range with 2x the transmit speeds.
+Some chips also support Turbo mode in the 2.4Ghz range with 802.11g
+though this support is not presently available due to regulatory requirements.
+(Note that Turbo modes are, however,
+only interoperable with other Atheros-based devices.)
+The actual transmit speed used is dependent on signal quality and the
+.Dq "rate control"
+algorithm employed by the driver.
+All chips support WEP encryption.
+The AR5212 has hardware support for the AES-CCM, TKIP, and Michael cryptographic
+operations required for WPA.
+To enable encryption, use
+.Xr ifconfig 8
+as shown below.
+.Pp
+The driver supports
+.Cm station ,
+.Cm adhoc ,
+.Cm adhoc-demo ,
+.Cm hostap ,
+.Cm wds ,
+and
+.Cm monitor
+mode operation.
+Multiple
+.Cm hostap
+virtual interfaces may be configured for simultaneous
+use on cards that use a 5212 part.
+When multiple interfaces are configured each may have a separate
+mac address that is formed by setting the U/L bits in the mac
+address assigned to the underlying device.
+Any number of
+.Cm wds
+virtual interfaces may be configured together with
+.Cm hostap
+interfaces.
+Multiple
+.Cm station
+interfaces may be operated together with
+.Cm hostap
+interfaces to construct a wireless repeater device.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+Devices supported by the
+.Nm
+driver come in either Cardbus or mini-PCI packages.
+Wireless cards in Cardbus slots may be inserted and ejected on the fly.
+.Sh HARDWARE
+The
+.Nm
+driver supports most Atheros Cardbus or PCI cards,
+except those that are based on the AR5005VL chipset.
+More recent parts may require a hal that is not part of
+.Fb .
+.Pp
+A list of cards that are supported can be found at
+.Pa http://customerproducts.atheros.com/customerproducts/default.asp .
+.Sh EXAMPLES
+Join an existing BSS network (ie: connect to an access point):
+.Pp
+.Dl "ifconfig ath0 inet 192.168.0.20 netmask 0xffffff00"
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig ath0 inet 192.168.0.20 netmask 0xffffff00 ssid my_net"
+.Pp
+Join a specific BSS network with WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev ath0
+ifconfig wlan0 inet 192.168.0.20 netmask 0xffffff00 ssid my_net \e
+ wepmode on wepkey 0x8736639624
+.Ed
+.Pp
+Join/create an 802.11b IBSS network with network name
+.Dq Li my_net :
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev ath0 wlanmode adhoc
+ifconfig wlan0 inet 192.168.0.22 netmask 0xffffff00 ssid my_net \e
+ mode 11b
+.Ed
+.Pp
+Create an 802.11g host-based access point:
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev ath0 wlanmode hostap
+ifconfig wlan0 inet 192.168.0.10 netmask 0xffffff00 ssid my_ap \e
+ mode 11g
+.Ed
+.Pp
+Create two virtual 802.11a host-based access points, one with
+with WEP enabled and one with no security, and bridge them to
+the fxp0 (wired) device:
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev ath0 wlanmode hostap \e
+ ssid paying-customers wepmode on wepkey 0x1234567890 \e
+ mode 11a up
+ifconfig wlan1 create wlandev ath0 wlanmode hostap bssid \e
+ ssid freeloaders up
+ifconfig bridge0 create addm wlan0 addm wlan1 addm fxp0 up
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ath%d: unable to attach hardware; HAL status %u"
+The Atheros Hardware Access Layer was unable to configure the hardware
+as requested.
+The status code is explained in the HAL include file
+.Pa sys/contrib/dev/ath/ah.h .
+.It "ath%d: failed to allocate descriptors: %d"
+The driver was unable to allocate contiguous memory for the transmit
+and receive descriptors.
+This usually indicates system memory is scarce and/or fragmented.
+.It "ath%d: unable to setup a data xmit queue!"
+The request to the HAL to set up the transmit queue for normal
+data frames failed.
+This should not happen.
+.It "ath%d: unable to setup a beacon xmit queue!"
+The request to the HAL to set up the transmit queue for 802.11 beacon frames
+frames failed.
+This should not happen.
+.It "ath%d: 802.11 address: %s"
+The MAC address programmed in the EEPROM is displayed.
+.It "ath%d: hardware error; resetting"
+An unrecoverable error in the hardware occurred.
+Errors of this sort include unrecoverable DMA errors.
+The driver will reset the hardware and continue.
+.It "ath%d: rx FIFO overrun; resetting"
+The receive FIFO in the hardware overflowed before the data could be
+transferred to the host.
+This typically occurs because the hardware ran short of receive
+descriptors and had no place to transfer received data.
+The driver will reset the hardware and continue.
+.It "ath%d: unable to reset hardware; hal status %u"
+The Atheros Hardware Access Layer was unable to reset the hardware
+as requested.
+The status code is explained in the HAL include file
+.Pa sys/contrib/dev/ath/ah.h .
+This should not happen.
+.It "ath%d: unable to start recv logic"
+The driver was unable to restart frame reception.
+This should not happen.
+.It "ath%d: device timeout"
+A frame dispatched to the hardware for transmission did not complete in time.
+The driver will reset the hardware and continue.
+This should not happen.
+.It "ath%d: bogus xmit rate 0x%x"
+An invalid transmit rate was specified for an outgoing frame.
+The frame is discarded.
+This should not happen.
+.It "ath%d: ath_chan_set: unable to reset channel %u (%u Mhz)"
+The Atheros Hardware Access Layer was unable to reset the hardware
+when switching channels during scanning.
+This should not happen.
+.It "ath%d: unable to allocate channel table"
+The driver was unable to allocate memory for the table used to hold
+the set of available channels.
+.It "ath%d: unable to collect channel list from hal"
+A problem occurred while querying the HAL to find the set of available
+channels for the device.
+This should not happen.
+.It "ath%d: failed to enable memory mapping"
+The driver was unable to enable memory-mapped I/O to the PCI device registers.
+This should not happen.
+.It "ath%d: failed to enable bus mastering"
+The driver was unable to enable the device as a PCI bus master for doing DMA.
+This should not happen.
+.It "ath%d: cannot map register space"
+The driver was unable to map the device registers into the host address space.
+This should not happen.
+.It "ath%d: could not map interrupt"
+The driver was unable to allocate an IRQ for the device interrupt.
+This should not happen.
+.It "ath%d: could not establish interrupt"
+The driver was unable to install the device interrupt handler.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr ath_hal 4 ,
+.Xr intro 4 ,
+.Xr cardbus 4 ,
+.Xr pcic 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr wlan_xauth 4 ,
+.Xr hostapd 8 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8 .
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.2 .
+.Sh CAVEATS
+Different regulatory domains have different default channels for adhoc
+mode.
+See
+.Xr ifconfig 8
+for information on how to change the channel.
+Different regulatory domains may not be able to communicate with each
+other with 802.11a as different regulatory domains do not necessarily
+have overlapping channels.
+.Pp
+Revision A1 of the D-LINK DWL-G520 and DWL-G650 are based on an
+Intersil PrismGT chip and are not supported by this driver.
+.Sh BUGS
+There is no software retransmit; only hardware retransmit is used.
+.Pp
+The driver does not fully enable power-save operation of the chip
+in station mode; consequently power use is suboptimal (e.g. on a laptop).
+.Pp
+WPA is not supported for 5210 parts.
diff --git a/share/man/man4/ath_hal.4 b/share/man/man4/ath_hal.4
new file mode 100644
index 0000000..36b189a
--- /dev/null
+++ b/share/man/man4/ath_hal.4
@@ -0,0 +1,134 @@
+.\"-
+.\" Copyright (c) 2002-2008 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,
+.\" without modification.
+.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
+.\" similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+.\" redistribution must be conditioned upon including a substantially
+.\" similar Disclaimer requirement for further binary redistribution.
+.\"
+.\" NO WARRANTY
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+.\" THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR 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 DAMAGES.
+.\"
+.\" $FreeBSD$
+.\"/
+.Dd November 30, 2008
+.Dt ATH_HAL 4
+.Os
+.Sh NAME
+.Nm ath_hal
+.Nd "Atheros Hardware Access Layer (HAL)"
+.Sh SYNOPSIS
+.Cd "device ath_hal"
+.Cd "options AH_SUPPORT_AR5416"
+or
+.Cd "device ath_ar5210"
+.Cd "device ath_ar5211"
+.Cd "device ath_ar5212"
+.Cd "device ath_rf2413"
+.Cd "device ath_rf2417"
+.Cd "device ath_rf2425"
+.Cd "device ath_rf5111"
+.Cd "device ath_rf5112"
+.Cd "device ath_rf5413"
+.Cd "device ath_ar5416"
+.\".Cd "device ath_ar5312"
+.\".Cd "device ath_rf2136"
+.\".Cd "device ath_rf2137"
+.Cd "device ath_ar9160"
+.Cd "options AH_SUPPORT_AR5416"
+.Sh DESCRIPTION
+The hal provides hardware support for wireless network adapters based on
+the Atheros AR5210, AR5211, AR5212, AR5416, and AR9160 chips.
+This code is part of the
+.Xr ath 4
+driver but configured separately to allow fine-grained control
+over the set of chips supported.
+Selecting
+.Nm
+enables support for all PCI and Cardbus devices.
+Note this includes AR5416 devices and must be accompanied by the
+AH_SUPPORT_AR5416
+option to enable the extended hardware descriptor format used by
+AR5416 and later devices.
+.Pp
+Devices supported come in either Cardbus or mini-PCI packages.
+.Pp
+Historically this code has been released in a binary-only form
+and packaged as a separate module.
+With the release of source code for the hal this is no longer true
+and the code is tightly integrated with the driver.
+.Sh HARDWARE
+The following cards are among those supported by the
+.Nm
+module:
+.Pp
+.Bl -column -compact "Samsung SWL-5200N" "AR5212" "Cardbus" "a/b/g"
+.It Em "Card Chip Bus Standard"
+.It "Aztech WL830PC AR5212 CardBus b/g"
+.It "D-Link DWL-A650 AR5210 CardBus a"
+.It "D-Link DWL-AB650 AR5211 CardBus a/b"
+.It "D-Link DWL-A520 AR5210 PCI a"
+.It "D-Link DWL-AG520 AR5212 PCI a/b/g"
+.It "D-Link DWL-AG650 AR5212 CardBus a/b/g"
+.It "D-Link DWL-G520B AR5212 PCI b/g"
+.It "D-Link DWL-G650B AR5212 CardBus b/g"
+.It "Elecom LD-WL54AG AR5212 Cardbus a/b/g"
+.It "Elecom LD-WL54 AR5211 Cardbus a"
+.It "Fujitsu E5454 AR5212 Cardbus a/b/g"
+.It "Fujitsu FMV-JW481 AR5212 Cardbus a/b/g"
+.It "Fujitsu E5454 AR5212 Cardbus a/b/g"
+.It "HP NC4000 AR5212 PCI a/b/g"
+.It "I/O Data WN-AB AR5212 CardBus a/b"
+.It "I/O Data WN-AG AR5212 CardBus a/b/g"
+.It "I/O Data WN-A54 AR5212 CardBus a"
+.It "Linksys WMP55AG AR5212 PCI a/b/g"
+.It "Linksys WPC51AB AR5211 CardBus a/b"
+.It "Linksys WPC55AG AR5212 CardBus a/b/g"
+.It "NEC PA-WL/54AG AR5212 CardBus a/b/g"
+.It "Netgear WAG311 AR5212 PCI a/b/g"
+.It "Netgear WAB501 AR5211 CardBus a/b"
+.It "Netgear WAG511 AR5212 CardBus a/b/g"
+.It "Netgear WG311 AR5212 PCI b/g"
+.It "Netgear WG511T AR5212 CardBus b/g"
+.It "Orinoco 8480 AR5212 CardBus a/b/g"
+.It "Orinoco 8470WD AR5212 CardBus a/b/g"
+.It "Proxim Skyline 4030 AR5210 CardBus a"
+.It "Proxim Skyline 4032 AR5210 PCI a"
+.It "Samsung SWL-5200N AR5212 CardBus a/b/g"
+.It "SMC SMC2735W AR5210 CardBus a"
+.It "Sony PCWA-C700 AR5212 Cardbus a/b"
+.It "Sony PCWA-C300S AR5212 Cardbus b/g"
+.It "Sony PCWA-C500 AR5210 Cardbus a"
+.It "3Com 3CRPAG175 AR5212 CardBus a/b/g"
+.El
+.Pp
+An up to date list can be found at
+.Pa http://customerproducts.atheros.com/customerproducts .
+.Sh SEE ALSO
+.Xr ath 4
+.Sh HISTORY
+The
+.Nm
+module first appeared in
+.Fx 5.2 .
+.Sh BUGS
+See
+.Xr ath 4
+for known bugs.
diff --git a/share/man/man4/atkbd.4 b/share/man/man4/atkbd.4
new file mode 100644
index 0000000..73831c2
--- /dev/null
+++ b/share/man/man4/atkbd.4
@@ -0,0 +1,231 @@
+.\"
+.\" Copyright (c) 1999
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd January 29, 2008
+.Dt ATKBD 4
+.Os
+.Sh NAME
+.Nm atkbd
+.Nd the AT keyboard interface
+.Sh SYNOPSIS
+.Cd "options ATKBD_DFLT_KEYMAP"
+.Cd "makeoptions ATKBD_DFLT_KEYMAP=_keymap_name_"
+.Cd "options KBD_DISABLE_KEYMAP_LOAD"
+.Cd "device atkbd"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.atkbd.0.at="atkbdc"
+.Cd hint.atkbd.0.irq="1"
+.Sh DESCRIPTION
+The
+.Nm
+driver, together with the
+.Nm atkbdc
+driver, provides access to the AT 84 keyboard or the AT enhanced keyboard
+which is connected to the AT keyboard controller.
+.Pp
+This driver is required for the console driver
+.Xr syscons 4 .
+.Pp
+There can be only one
+.Nm
+device defined in the kernel configuration file.
+This device also requires the
+.Nm atkbdc
+keyboard controller to be present.
+The
+.Em irq
+number must always be 1; there is no provision of changing the number.
+.Ss Function Keys
+The AT keyboard has a number of function keys.
+They are numbered as follows and can be associated with strings
+by the
+.Xr kbdcontrol 1
+command.
+You can use a keyboard map file (see
+.Xr kbdmap 5 )
+to map them to arbitrary keys, particularly
+the functions in the range from 65 to 96
+which are not used by default.
+.Pp
+.Bl -tag -width "Function Key Number" -compact
+.It "Function Key number"
+Function Key
+.It "1, 2,...12"
+F1, F2,...\& F12
+.It "13, 14,...24"
+Shift+F1, Shift+F2,...\& Shift+F12
+.It "25, 26,...36"
+Ctl+F1, Ctl+F2,...\& Ctl+F12
+.It "37, 38,...48"
+Shift+Ctl+F1, Shift+Ctl+F2,...\& Shift+Ctl+F12
+.It 49
+Home and Numpad 7 (without NumLock)
+.It 50
+Up Arrow and Numpad 8 (without NumLock)
+.It 51
+Page Up and Numpad 9 (without NumLock)
+.It 52
+Numpad -
+.It 53
+Left Arrow and Numpad 4 (without NumLock)
+.It 54
+Numpad 5 (without NumLock)
+.It 55
+Right Arrow and Numpad 6 (without NumLock)
+.It 56
+Numpad +
+.It 57
+End and Numpad 1 (without NumLock)
+.It 58
+Down Arrow and Numpad 2 (without NumLock)
+.It 59
+Page Down and Numpad 3 (without NumLock)
+.It 60
+Ins and Numpad 0 (without NumLock)
+.It 61
+Del
+.It 62
+Left GUI Key
+.It 63
+Right GUI Key
+.It 64
+Menu
+.It "65, 66,...96"
+free (not used by default)
+.El
+.Pp
+See the man page for the
+.Xr kbdcontrol 1
+command for how to assign a string to the function key.
+.Sh DRIVER CONFIGURATION
+.Ss Kernel Configuration Options
+The following kernel configuration options control the
+.Nm
+driver.
+.Bl -tag -width ATKBD_DFLT
+.It Em ATKBD_DFLT_KEYMAP
+This option sets the default, built-in keymap of the
+.Nm
+driver to the named keymap.
+See
+.Sx EXAMPLES
+below.
+.It Em KBD_DISABLE_KEYMAP_LOAD
+The keymap can be modified by the
+.Xr kbdcontrol 1
+command.
+This option will disable this feature and prevent the user from
+changing key assignment.
+.El
+.Pp
+.Ss Driver Flags
+The
+.Nm
+driver accepts the following driver flags.
+They can be set either in
+.Pa /boot/device.hints ,
+or else from within the boot loader
+(see
+.Xr loader 8 ) .
+.Bl -tag -width FAIL
+.It bit 0 (FAIL_IF_NO_KBD)
+By default the
+.Nm
+driver will install even if a keyboard is not actually connected to the
+system.
+This option prevents the driver from being installed in this situation.
+.It bit 1 (NO_RESET)
+When this option is given, the
+.Nm
+driver will not reset the keyboard when initializing it.
+It may be useful for laptop computers whose function keys
+have special functions and these functions are forgotten when the
+keyboard is reset.
+.It bit 2 (ALT_SCANCODESET)
+Certain keyboards, such as those on some ThinkPad models, behave
+like the old XT keyboard and require this option.
+.It bit 3 (NO_PROBE_TEST)
+When this option is given, the
+.Nm
+driver will not test the keyboard port during the probe routine.
+Some machines hang during boot when this test is performed.
+.El
+.\".Sh FILES
+.Sh EXAMPLES
+The
+.Nm
+driver requires the keyboard controller
+.Nm atkbdc .
+Thus, the kernel configuration file should contain the following lines.
+.Pp
+.Dl "device atkbdc"
+.Dl "device atkbd"
+.Pp
+The following example shows how to set the default, built-in keymap
+to
+.Pa jp.106.kbd .
+.Pp
+.Dl "device atkbdc"
+.Dl "options ATKBD_DFLT_KEYMAP"
+.Dl "makeoptions ATKBD_DFLT_KEYMAP=jp.106"
+.Dl "device atkbd"
+.Pp
+In both cases, you also need to have following lines in
+.Pa /boot/device.hints .
+.Pp
+.Dl hint.atkbdc.0.at="isa"
+.Dl hint.atkbdc.0.port="0x060"
+.Dl hint.atkbd.0.at="atkbdc"
+.Dl hint.atkbd.0.irq="1"
+.\".Sh DIAGNOSTICS
+.\".Sh CAVEATS
+.\".Sh BUGS
+.Sh SEE ALSO
+.Xr kbdcontrol 1 ,
+.Xr atkbdc 4 ,
+.Xr psm 4 ,
+.Xr syscons 4 ,
+.Xr kbdmap 5 ,
+.Xr loader 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An S\(/oren Schmidt Aq sos@FreeBSD.org
+and
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
+This manual page was written by
+.An Kazutaka Yokota .
diff --git a/share/man/man4/atkbdc.4 b/share/man/man4/atkbdc.4
new file mode 100644
index 0000000..46d30c1
--- /dev/null
+++ b/share/man/man4/atkbdc.4
@@ -0,0 +1,119 @@
+.\"
+.\" Copyright (c) 1999
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd February 9, 1999
+.Dt ATKBDC 4
+.Os
+.Sh NAME
+.Nm atkbdc
+.Nd the AT keyboard controller interface
+.Sh SYNOPSIS
+.Cd "options KBD_RESETDELAY=N"
+.Cd "options KBD_MAXWAIT=N"
+.Cd "options KBDIO_DEBUG=N"
+.Cd "device atkbdc"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.atkbdc.0.at="isa"
+.Cd hint.atkbdc.0.port="0x060"
+.Sh DESCRIPTION
+The keyboard controller
+.Nm
+provides I/O services for the AT keyboard and PS/2 mouse style
+pointing devices.
+This controller is required for the keyboard driver
+.Nm atkbd
+and the PS/2 pointing device driver
+.Nm psm .
+.Pp
+There can be only one
+.Nm
+device configured in the system.
+.Sh DRIVER CONFIGURATION
+.Ss Kernel Configuration Options
+The following kernel configuration options can be used to control the
+.Nm
+driver.
+They may be set in the kernel configuration file
+(see
+.Xr config 8 ) .
+.Bl -tag -width MOUSE
+.It Em KBD_RESETDELAY=X , KBD_MAXWAIT=Y
+The keyboard driver
+.Nm atkbd
+and the pointing device driver
+.Nm psm
+may ask the
+.Nm
+driver to reset these devices during the boot process.
+It sometimes takes a long time before these devices respond to
+the reset command.
+These options control how long the
+.Nm
+driver should
+wait before eventually giving up -- the driver will wait
+.Fa X
+*
+.Fa Y
+msecs at most.
+If the drivers seem unable to detect
+devices, you may want to increase these values.
+The default values are
+200 msec for
+.Fa X
+and 5
+for
+.Fa Y .
+.It Em KBDIO_DEBUG=N
+Sets the debug level to
+.Fa N .
+The default value is zero, which suppresses all debugging output.
+.El
+.\".Ss Driver Flags
+.\".Sh FILES
+.\".Sh EXAMPLE
+.\".Sh DIAGNOSTICS
+.\".Sh CAVEATS
+.\".Sh BUGS
+.Sh SEE ALSO
+.Xr atkbd 4 ,
+.Xr psm 4 ,
+.Xr config 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.1 .
+It is based on the kbdio module in
+.Fx 2.2 .
+.Sh AUTHORS
+The kbdio module, the
+.Nm
+driver and this manual page were written by
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
diff --git a/share/man/man4/audit.4 b/share/man/man4/audit.4
new file mode 100644
index 0000000..e57b4bc
--- /dev/null
+++ b/share/man/man4/audit.4
@@ -0,0 +1,146 @@
+.\" 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 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$
+.\"
+.Dd May 5, 2006
+.Os
+.Dt AUDIT 4
+.Sh NAME
+.Nm audit
+.Nd Security Event Audit
+.Sh SYNOPSIS
+.Cd "options AUDIT"
+.Sh DESCRIPTION
+Security Event Audit is a facility to provide fine-grained, configurable
+logging of security-relevant events, and is intended to meet the requirements
+of the Common Criteria (CC) Common Access Protection Profile (CAPP)
+evaluation.
+The
+.Fx
+.Nm
+facility implements the de facto industry standard BSM API, file
+formats, and command line interface, first found in the Solaris operating
+system.
+Information on the user space implementation can be found in
+.Xr libbsm 3 .
+.Pp
+Audit support is enabled at boot, if present in the kernel, using an
+.Xr rc.conf 5
+flag.
+The audit daemon,
+.Xr auditd 8 ,
+is responsible for configuring the kernel to perform
+.Nm ,
+pushing
+configuration data from the various audit configuration files into the
+kernel.
+.Ss Audit Special Device
+The kernel
+.Nm
+facility provides a special device,
+.Pa /dev/audit ,
+which is used by
+.Xr auditd 8
+to monitor for
+.Nm
+events, such as requests to cycle the log, low disk
+space conditions, and requests to terminate auditing.
+This device is not intended for use by applications.
+.Ss Audit Pipe Special Devices
+Audit pipe special devices, discussed in
+.Xr auditpipe 4 ,
+provide a configurable live tracking mechanism to allow applications to
+tee the audit trail, as well as to configure custom preselection parameters
+to track users and events in a fine-grained manner.
+.Sh SEE ALSO
+.Xr auditreduce 1 ,
+.Xr praudit 1 ,
+.Xr audit 2 ,
+.Xr auditctl 2 ,
+.Xr auditon 2 ,
+.Xr getaudit 2 ,
+.Xr getauid 2 ,
+.Xr poll 2 ,
+.Xr select 2 ,
+.Xr setaudit 2 ,
+.Xr setauid 2 ,
+.Xr libbsm 3 ,
+.Xr auditpipe 4 ,
+.Xr audit_class 5 ,
+.Xr audit_control 5 ,
+.Xr audit_event 5 ,
+.Xr audit.log 5 ,
+.Xr audit_user 5 ,
+.Xr audit_warn 5 ,
+.Xr rc.conf 5 ,
+.Xr audit 8 ,
+.Xr auditd 8
+.Sh HISTORY
+The
+.Tn OpenBSM
+implementation was created by McAfee Research, the security
+division of McAfee Inc., under contract to Apple Computer Inc.\& in 2004.
+It was subsequently adopted by the TrustedBSD Project as the foundation for
+the OpenBSM distribution.
+.Pp
+Support for kernel
+.Nm
+first appeared in
+.Fx 6.2 .
+.Sh AUTHORS
+.An -nosplit
+This software was created by McAfee Research, the security research division
+of McAfee, Inc., under contract to Apple Computer Inc.
+Additional authors include
+.An Wayne Salamon ,
+.An Robert Watson ,
+and SPARTA Inc.
+.Pp
+The Basic Security Module (BSM) interface to audit records and audit event
+stream format were defined by Sun Microsystems.
+.Pp
+This manual page was written by
+.An Robert Watson Aq rwatson@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+facility in
+.Fx
+is considered experimental, and production deployment should occur only after
+careful consideration of the risks of deploying experimental software.
+.Pp
+The
+.Fx
+kernel does not fully validate that audit records submitted by user
+applications are syntactically valid BSM; as submission of records is limited
+to privileged processes, this is not a critical bug.
+.Pp
+Instrumentation of auditable events in the kernel is not complete, as some
+system calls do not generate audit records, or generate audit records with
+incomplete argument information.
+.Pp
+Mandatory Access Control (MAC) labels, as provided by the
+.Xr mac 4
+facility, are not audited as part of records involving MAC decisions.
diff --git a/share/man/man4/auditpipe.4 b/share/man/man4/auditpipe.4
new file mode 100644
index 0000000..7ba35af
--- /dev/null
+++ b/share/man/man4/auditpipe.4
@@ -0,0 +1,256 @@
+.\" 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 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$
+.\"
+.Dd May 5, 2006
+.Os
+.Dt AUDITPIPE 4
+.Sh NAME
+.Nm auditpipe
+.Nd "pseudo-device for live audit event tracking"
+.Sh SYNOPSIS
+.Cd "options AUDIT"
+.Sh DESCRIPTION
+While audit trail files
+generated with
+.Xr audit 4
+and maintained by
+.Xr auditd 8
+provide a reliable long-term store for audit log information, current log
+files are owned by the audit daemon until terminated making them somewhat
+unwieldy for live monitoring applications such as host-based intrusion
+detection.
+For example, the log may be cycled and new records written to a new file
+without notice to applications that may be accessing the file.
+.Pp
+The audit facility provides an audit pipe facility for applications requiring
+direct access to live BSM audit data for the purposes of real-time
+monitoring.
+Audit pipes are available via a clonable special device,
+.Pa /dev/auditpipe ,
+subject to the permissions on the device node, and provide a
+.Qq tee
+of the audit event stream.
+As the device is clonable, more than one instance of the device may be opened
+at a time; each device instance will provide independent access to all
+records.
+.Pp
+The audit pipe device provides discrete BSM audit records; if the read buffer
+passed by the application is too small to hold the next record in the
+sequence, it will be dropped.
+Unlike audit data written to the audit trail, the reliability of record
+delivery is not guaranteed.
+In particular, when an audit pipe queue fills, records will be dropped.
+Audit pipe devices are blocking by default, but support non-blocking I/O,
+asynchronous I/O using
+.Dv SIGIO ,
+and polled operation via
+.Xr select 2
+and
+.Xr poll 2 .
+.Pp
+Applications may choose to track the global audit trail, or configure local
+preselection parameters independent of the global audit trail parameters.
+.Ss Audit Pipe Queue Ioctls
+The following ioctls retrieve and set various audit pipe record queue
+properties:
+.Bl -tag -width ".Dv AUDITPIPE_GET_MAXAUDITDATA"
+.It Dv AUDITPIPE_GET_QLEN
+Query the current number of records available for reading on the pipe.
+.It Dv AUDITPIPE_GET_QLIMIT
+Retrieve the current maximum number of records that may be queued for reading
+on the pipe.
+.It Dv AUDITPIPE_SET_QLIMIT
+Set the current maximum number of records that may be queued for reading on
+the pipe.
+The new limit must fall between the queue limit minimum and queue limit
+maximum queryable using the following two ioctls.
+.It Dv AUDITPIPE_GET_QLIMIT_MIN
+Query the lowest possible maximum number of records that may be queued for
+reading on the pipe.
+.It Dv AUDITPIPE_GET_QLIMIT_MAX
+Query the highest possible maximum number of records that may be queued for
+reading on the pipe.
+.It Dv AUDITPIPE_FLUSH
+Flush all outstanding records on the audit pipe; useful after setting initial
+preselection properties to delete records queued during the configuration
+process which may not match the interests of the user process.
+.It Dv AUDITPIPE_GET_MAXAUDITDATA
+Query the maximum size of an audit record, which is a useful minimum size for
+a user space buffer intended to hold audit records read from the audit pipe.
+.El
+.Ss Audit Pipe Preselection Mode Ioctls
+By default, the audit pipe facility configures pipes to present records
+matched by the system-wide audit trail, configured by
+.Xr auditd 8 .
+However, the preselection mechanism for audit pipes can be configured using
+alternative criteria, including pipe-local flags and naflags settings, as
+well as auid-specific selection masks.
+This allows applications to track events not captured in the global audit
+trail, as well as limit records presented to those of specific interest to
+the application.
+.Pp
+The following ioctls configure the preselection mode on an audit pipe:
+.Bl -tag -width ".Dv AUDITPIPE_GET_PRESELECT_MODE"
+.It Dv AUDITPIPE_GET_PRESELECT_MODE
+Return the current preselect mode on the audit pipe.
+The ioctl argument should be of type
+.Vt int .
+.It Dv AUDITPIPE_SET_PRESELECT_MODE
+Set the current preselection mode on the audit pipe.
+The ioctl argument should be of type
+.Vt int .
+.El
+.Pp
+Possible preselection mode values are:
+.Bl -tag -width ".Dv AUDITPIPE_PRESELECT_MODE_TRAIL"
+.It Dv AUDITPIPE_PRESELECT_MODE_TRAIL
+Use the global audit trail preselection parameters to select records for the
+audit pipe.
+.It Dv AUDITPIPE_PRESELECT_MODE_LOCAL
+Use local audit pipe preselection; this model is similar to the global audit
+trail configuration model, consisting of global flags and naflags parameters,
+as well as a set of per-auid masks.
+These parameters are configured using further ioctls.
+.El
+.Pp
+After changing the audit pipe preselection mode, records selected under
+earlier preselection configuration may still be in the audit pipe queue.
+The application may flush the current record queue after changing the
+configuration to remove possibly undesired records.
+.Ss Audit Pipe Local Preselection Mode Ioctls
+The following ioctls configure the preselection parameters used when an audit
+pipe is configured for the
+.Dv AUDITPIPE_PRESELECT_MODE_LOCAL
+preselection mode.
+.Bl -tag -width ".Dv AUDITPIPE_GET_PRESELECT_NAFLAGS"
+.It Dv AUDITPIPE_GET_PRESELECT_FLAGS
+Retrieve the current default preselection flags for attributable events on
+the pipe.
+These flags correspond to the
+.Va flags
+field in
+.Xr audit_control 5 .
+The ioctl argument should be of type
+.Vt u_int .
+.It Dv AUDITPIPE_SET_PRESELECT_FLAGS
+Set the current default preselection flags for attributable events on the
+pipe.
+These flags correspond to the
+.Va flags
+field in
+.Xr audit_control 5 .
+The ioctl argument should be of type
+.Vt u_int .
+.It Dv AUDITPIPE_GET_PRESELECT_NAFLAGS
+Retrieve the current default preselection flags for non-attributable events
+on the pipe.
+These flags correspond to the
+.Va naflags
+field in
+.Xr audit_control 5 .
+The ioctl argument should be of type
+.Vt u_int .
+.It Dv AUDITPIPE_SET_PRESELECT_NAFLAGS
+Set the current default preselection flags for non-attributable events on the
+pipe.
+These flags correspond to the
+.Va naflags
+field in
+.Xr audit_control 5 .
+The ioctl argument should be of type
+.Vt u_int .
+.It Dv AUDITPIPE_GET_PRESELECT_AUID
+Query the current preselection masks for a specific auid on the pipe.
+The ioctl argument should be of type
+.Vt "struct auditpipe_ioctl_preselect" .
+The auid to query is specified via the
+.Va ap_auid
+field of type
+.Vt au_id_t ;
+the mask will be returned via
+.Va ap_mask
+of type
+.Vt au_mask_t .
+.It Dv AUDITPIPE_SET_PRESELECT_AUID
+Set the current preselection masks for a specific auid on the pipe.
+Arguments are identical to
+.Dv AUDITPIPE_GET_PRESELECT_AUID ,
+except that the caller should properly initialize the
+.Va ap_mask
+field to hold the desired preselection mask.
+.It Dv AUDITPIPE_DELETE_PRESELECT_AUID
+Delete the current preselection mask for a specific auid on the pipe.
+Once called, events associated with the specified auid will use the default
+flags mask.
+The ioctl argument should be of type
+.Vt au_id_t .
+.It Dv AUDITPIPE_FLUSH_PRESELECT_AUID
+Delete all auid specific preselection specifications.
+.El
+.Sh EXAMPLES
+The
+.Xr praudit 1
+utility
+may be directly executed on
+.Pa /dev/auditpipe
+to review the default audit trail.
+.Sh SEE ALSO
+.Xr poll 2 ,
+.Xr select 2 ,
+.Xr audit 4 ,
+.Xr audit_control 5 ,
+.Xr audit 8 ,
+.Xr auditd 8
+.Sh HISTORY
+The OpenBSM implementation was created by McAfee Research, the security
+division of McAfee Inc., under contract to Apple Computer Inc.\& in 2004.
+It was subsequently adopted by the TrustedBSD Project as the foundation for
+the OpenBSM distribution.
+.Pp
+Support for kernel audit first appeared in
+.Fx 6.2 .
+.Sh AUTHORS
+The audit pipe facility was designed and implemented by
+.An Robert Watson Aq rwatson@FreeBSD.org .
+.Pp
+The Basic Security Module (BSM) interface to audit records and audit event
+stream format were defined by Sun Microsystems.
+.Sh BUGS
+See the
+.Xr audit 4
+manual page for information on audit-related bugs and limitations.
+.Pp
+The configurable preselection mechanism mirrors the selection model present
+for the global audit trail.
+It might be desirable to provided a more flexible selection model.
+.Pp
+The per-pipe audit event queue is fifo, with drops occurring if either the
+user thread provides in sufficient for the record on the queue head, or on
+enqueue if there is insufficient room.
+It might be desirable to support partial reads of records, which would be
+more compatible with buffered I/O as implemented in system libraries, and to
+allow applications to select which records are dropped, possibly in the style
+of preselection.
diff --git a/share/man/man4/aue.4 b/share/man/man4/aue.4
new file mode 100644
index 0000000..fdb5fb5
--- /dev/null
+++ b/share/man/man4/aue.4
@@ -0,0 +1,207 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ee.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd October 7, 2006
+.Dt AUE 4
+.Os
+.Sh NAME
+.Nm aue
+.Nd ADMtek AN986 Pegasus USB Ethernet driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device miibus"
+.Cd "device aue"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_aue_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB Ethernet adapters based on the ADMtek
+AN986 Pegasus chipset.
+.Pp
+The LinkSys USB10T adapters that contain the AN986 Pegasus chipset
+will operate at 100Base-TX and full-duplex.
+.Pp
+The Pegasus contains a 10/100
+Ethernet MAC with MII interface and is designed to work with both
+Ethernet and HomePNA transceivers.
+Although designed to interface with
+100Mbps peripherals, the existing USB standard specifies a maximum
+transfer speed of 12Mbps.
+Users should therefore not expect to actually
+achieve 100Mbps speeds with these devices.
+.Pp
+The Pegasus supports a 64-bit multicast hash table, single perfect
+filter entry for the station address and promiscuous mode.
+Packets are
+received and transmitted over separate USB bulk transfer endpoints.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to enable
+.Ar full-duplex
+operation.
+Not specifying
+.Ar full duplex
+implies
+.Ar half-duplex
+mode.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to enable
+.Ar full-duplex
+operation.
+Not specifying
+.Ar full duplex
+implies
+.Ar half-duplex
+mode.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation.
+The interface will operate in
+half duplex mode if this media option is not specified.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+Adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Abocom UFE1000, DSB650TX_NA
+.It
+Accton USB320-EC, SpeedStream
+.It
+ADMtek AN986, AN8511
+.It
+Billionton USB100, USB100LP, USB100EL, USBE100
+.It
+Corega Ether FEther USB-T, FEther USB-TX, FEther USB-TXS
+.It
+D-Link DSB-650, DSB-650TX, DSB-650TX-PNA
+.It
+Elecom LD-USBL/TX
+.It
+Elsa Microlink USB2Ethernet
+.It
+HP hn210e
+.It
+I-O Data USB ETTX
+.It
+Kingston KNU101TX
+.It
+LinkSys USB10T adapters that contain the AN986 Pegasus chipset,
+USB10TA, USB10TX, USB100TX, USB100H1
+.It
+MELCO LUA-TX, LUA2-TX
+.It
+Netgear FA101
+.It
+Planex UE-200TX
+.It
+Sandberg USB to Network Link (model number 133-06)
+.It
+Siemens Speedstream
+.It
+SmartBridges smartNIC
+.It
+SMC 2202USB
+.It
+SOHOware NUB100
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "aue%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, however the device failed to acknowledge the transmission
+before a timeout expired.
+.It "aue%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Rs
+.%T ADMtek AN986 data sheet
+.%O http://www.admtek.com.tw
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ee.columbia.edu .
diff --git a/share/man/man4/axe.4 b/share/man/man4/axe.4
new file mode 100644
index 0000000..b331126
--- /dev/null
+++ b/share/man/man4/axe.4
@@ -0,0 +1,213 @@
+.\" Copyright (c) 1997, 1998, 1999, 2000-2003
+.\" Bill Paul <wpaul@windriver.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd January 20, 2008
+.Dt AXE 4
+.Os
+.Sh NAME
+.Nm axe
+.Nd "ASIX Electronics AX88172/178/772 USB Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ehci"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device miibus"
+.Cd "device axe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_axe_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB Ethernet adapters based on the ASIX
+Electronics AX88172, AX88178 and AX88772 USB 2.0 chipsets.
+.Pp
+The AX88172 and AX88178 are USB 2.0 devices that contain a 10/100
+Ethernet MAC with MII interface and are designed to work with both
+Ethernet and HomePNA transceivers.
+The AX88772 will additionally support 10/100/1000 MACs.
+.Pp
+These devices will operate with
+both USB 1.x and USB 2.0 controllers, however performance with 1.x
+controllers will be limited since the USB 1.x standard specifies a
+maximum transfer speed of 12Mbps.
+Users with USB 1.x controllers should therefore not expect to actually
+achieve 100Mbps speeds with these devices.
+.Pp
+All chipsets support a 64-bit multicast hash table, single perfect
+filter entry for the station address, all-multicast mode and promiscuous mode.
+Packets are
+received and transmitted over separate USB bulk transfer endpoints.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Cm mediaopt
+option can also be used to enable
+.Cm full-duplex
+operation.
+Not specifying
+.Cm full-duplex
+implies
+.Cm half-duplex
+mode.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Cm mediaopt
+option can also be used to enable
+.Cm full-duplex
+operation.
+Not specifying
+.Cm full-duplex
+implies
+.Cm half-duplex
+mode.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm full-duplex
+Force full duplex operation.
+The interface will operate in
+half duplex mode if this media option is not specified.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports ASIX Electronics AX88172/AX88178/AX88772 based USB Ethernet
+adapters including:
+.Pp
+AX88172:
+.Bl -bullet -compact
+.It
+AboCom UF200
+.It
+Acer Communications EP1427X2
+.It
+ATen UC210T
+.It
+Billionton SnapPort
+.It
+Billionton USB2AR
+.It
+Buffalo (Melco Inc.) LUA-U2-KTX
+.It
+Corega USB2_TX
+.It
+D-Link DUBE100
+.It
+Goodway GWUSB2E
+.It
+JVC MP_PRX1
+.It
+LinkSys USB200M
+.It
+Netgear FA120
+.It
+Sitecom LN-029
+.It
+System TALKS Inc.\& SGC-X2UL
+.El
+.Pp
+AX88178:
+.Bl -bullet -compact
+.It
+Belkin F5D5055
+.It
+Planex Communications GU1000T
+.It
+Sitecom Europe LN-028
+.El
+.Pp
+AX88772:
+.Bl -bullet -compact
+.It
+Cisco-Linksys USB200Mv2
+.It
+D-Link DUBE100B1
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "axe%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, however the device failed to acknowledge the transmission
+before a timeout expired.
+.It "axe%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Rs
+.%T "ASIX AX88172 AX88178 and AX88772 data sheets"
+.%O http://www.asix.com.tw
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@windriver.com .
diff --git a/share/man/man4/bce.4 b/share/man/man4/bce.4
new file mode 100644
index 0000000..774217a
--- /dev/null
+++ b/share/man/man4/bce.4
@@ -0,0 +1,334 @@
+.\" Copyright (c) 2006 Broadcom Corporation
+.\" David Christensen <davidch@broadcom.com>. 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. Neither the name of Broadcom Corporation nor the name of its contributors
+.\" may be used to endorse or promote products derived from this software
+.\" without specific prior written consent.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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$
+.\"
+.Dd December 2, 2008
+.Dt BCE 4
+.Os
+.Sh NAME
+.Nm bce
+.Nd "Broadcom NetXtreme II (BCM5706/5708/5709/5716) PCI/PCIe Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device bce"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_bce_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports Broadcom's NetXtreme II product family, including the
+BCM5706, BCM5708, BCM5709 and BCM5716 Ethernet controllers.
+.Pp
+The NetXtreme II product family is composed of various Converged NIC (or CNIC)
+Ethernet controllers which support a TCP Offload Engine (TOE), Remote DMA (RDMA),
+and iSCSI acceleration, in addition to standard L2 Ethernet traffic, all on the
+same controller.
+.Pp
+The following features are supported in the
+.Nm
+driver under
+.Fx :
+.Pp
+.Bl -item -offset indent -compact
+.It
+IP/TCP/UDP checksum offload
+.It
+Jumbo frames (up to 9022 bytes)
+.It
+VLAN tag stripping
+.It
+Interrupt coalescing
+.It
+10/100/1000Mbps operation in full-duplex mode
+.It
+10/100Mbps operation in half-duplex mode
+.El
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+Only
+.Cm full-duplex
+mode is supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver provides support for various NICs based on the Broadcom NetXtreme II
+family of Gigabit Ethernet controllers, including the
+following:
+.Pp
+.Bl -bullet -compact
+.It
+Broadcom NetXtreme II BCM5706 1000Base-SX
+.It
+Broadcom NetXtreme II BCM5706 1000Base-T
+.It
+Broadcom NetXtreme II BCM5708 1000Base-SX
+.It
+Broadcom NetXtreme II BCM5708 1000Base-T
+.It
+Broadcom NetXtreme II BCM5709 1000Base-SX
+.It
+Broadcom NetXtreme II BCM5709 1000Base-T
+.It
+Broadcom NetXtreme II BCM5716 1000Base-T
+.It
+Dell PowerEdge 1950 integrated BCM5708 NIC
+.It
+Dell PowerEdge 2950 integrated BCM5708 NIC
+.It
+HP NC370F Multifunction Gigabit Server Adapter
+.It
+HP NC370T Multifunction Gigabit Server Adapter
+.It
+HP NC370i Multifunction Gigabit Server Adapter
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va hw.bce.msi_enable
+Whether or not MSI support is enabled in the driver.
+The default value is 1.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "bce%d: PCI memory allocation failed!"
+The driver has encountered a fatal initialization error.
+.It "bce%d: PCI map interrupt failed!"
+The driver has encountered a fatal initialization error.
+.It "bce%d: Unsupported controller revision (%c%d)"
+The driver does not support the controller revision in use.
+.It "bce%d: Controller initialization failed!"
+The driver has encountered a fatal initialization error.
+.It "bce%d: NVRAM test failed!"
+The driver could not access the controller NVRAM correctly.
+.It "bce%d: DMA resource allocation failed!"
+The driver could not allocate DMA memory to setup the controllers
+host memory data structures.
+.It "bce%d: Interface allocation failed!"
+The driver could not create a network interface for the controller.
+.It "bce%d: PHY probe failed!"
+The driver could not access the PHY used by the controller.
+.It "bce%d: Failed to setup IRQ!"
+The driver could not initialize the IRQ handler.
+.It "bce%d: Error: PHY read timeout!"
+The driver could not read a PHY register before the timeout period expired.
+.It "bce%d: PHY write timeout!"
+The driver could not write to the PHY register because a timeout occurred.
+.It "bce%d: Timeout error reading NVRAM at offset 0x%08X!"
+The driver could not write to NVRAM because a timeout occurred.
+.It "bce%d: Unknown Flash NVRAM found!"
+The driver does not recognize the NVRAM device being used and therefore
+cannot access it correctly.
+.It "bce%d: Invalid NVRAM magic value!"
+The driver cannot read NVRAM or the NVRAM is corrupt.
+.It "bce%d: Invalid Manufacturing Information NVRAM CRC!"
+The driver cannot read NVRAM or the NVRAM is corrupt.
+.It "bce%d: Invalid Feature Configuration Information NVRAM CRC!"
+The driver cannot read NVRAM or the NVRAM is corrupt.
+.It "bce%d: DMA mapping error!"
+The driver was unable to map memory into DMA addressable space required
+by the controller.
+.It "bce%d: Could not allocate parent DMA tag!"
+The driver could not allocate a PCI compatible DMA tag.
+.It "bce%d: Could not allocate status block DMA tag!"
+The driver could not allocate a DMA tag for the controller's
+status block.
+.It "bce%d: Could not allocate status block DMA memory!"
+The driver could not allocate DMA addressable memory for the controller's
+status block.
+.It "bce_d: Could not map status block DMA memory!"
+The driver could not map the status block memory into the controller's DMA
+address space.
+.It "bce%d: Could not allocate statistics block DMA tag!"
+The driver could not allocate a DMA tag for the controller's
+statistics block.
+.It "bce%d: Could not allocate statistics block DMA memory!"
+The driver could not allocate DMA addressable memory for the controller's
+statistics block.
+.It "bce%d: Could not map statistics block DMA memory!"
+The driver could not map the statistics block memory into the controller's DMA
+address space.
+.It "bce%d: Could not allocate TX descriptor chain DMA tag!"
+The driver could not allocate a DMA tag for the controller's
+TX chain.
+.It "bce%d: Could not allocate TX descriptor chain DMA memory!
+The driver could not allocate DMA addressable memory for the controller's
+TX chain.
+.It "bce%d: Could not map TX descriptor chain DMA memory!"
+The driver could not map the TX descriptor chain memory into the controller's DMA
+address space.
+.It "bce%d: Could not allocate TX mbuf DMA tag!"
+The driver could not allocate a DMA tag for the controller's
+TX mbuf memory.
+.It "bce%d: Unable to create TX mbuf DMA map!"
+The driver could not map the TX mbuf memory into the controller's DMA
+address space.
+.It "bce%d: Could not allocate RX descriptor chain DMA tag!"
+The driver could not allocate a DMA tag for the controller's
+RX chain.
+.It "bce%d: Could not allocate RX descriptor chain "
+The driver could not allocate DMA addressable memory for the controller's
+RX chain.
+.It "bce%d: Could not map RX descriptor chain DMA memory!"
+The driver could not map the RX descriptor chain memory into the controller's DMA
+address space.
+.It "bce%d: Could not allocate RX mbuf DMA tag!"
+The driver could not allocate a DMA tag for the controller's
+RX mbuf memory.
+.It "bce%d: Unable to create RX mbuf DMA map!"
+The driver could not map the RX mbuf memory into the controller's DMA
+address space.
+.It "bce%d: Firmware synchronization timeout!"
+The driver was not able to synchronize with the firmware running on the
+controller.
+The firmware may be stopped or hung.
+.It "bce%d: Invalid Ethernet address!"
+The driver was not able to read a valid Ethernet MAC address from NVRAM.
+.It "bce%d: Reset failed!"
+The driver has encountered a fatal initialization error.
+.It "bce%d: Byte swap is incorrect!"
+The driver has encountered a fatal initialization error.
+Contact the author
+with details of the CPU architecture and system chipset in use.
+.It "bce%d: Firmware did not complete initialization!"
+The driver has encountered a fatal initialization error.
+.It "bce%d: Bootcode not running!"
+The driver has encountered a fatal initialization error.
+.It "bce%d: Error mapping mbuf into RX chain!"
+The driver could not map a RX mbuf into DMA addressable memory.
+.It "bce%d: Error filling RX chain: rx_bd[0x%04X]!"
+The driver was unable to allocate enough mbufs to fill the RX chain
+during initialization.
+Try increasing the number of mbufs available in
+the system, increase system memory, or if using jumbo frames, make sure
+enough 9KB mbufs are available.
+.It "bce%d: Failed to allocate new mbuf, incoming frame dropped!"
+The driver was unable to allocate a new mbuf for the RX chain and reused
+the mbuf for the received frame, dropping the incoming frame in the process.
+Try increasing the number of mbufs available in the system or increase system
+memory.
+.It "bce%d: Controller reset failed!"
+A fatal initialization error has occurred.
+.It "bce%d: Controller initialization failed!"
+A fatal initialization error has occurred.
+.It "bce%d: Block initialization failed!"
+A fatal initialization error has occurred.
+.It "bce%d: Error mapping mbuf into TX chain!"
+The driver could not map a TX mbuf into DMA addressable memory.
+.It "bce%d: Error registering poll function!"
+The driver received an error while attempting to register the poll function.
+.It "bce%d: Changing VLAN_MTU not supported."
+Changing the VLAN MTU is not currently supported by the driver.
+.It "bce%d: Cannot change VLAN_HWTAGGING while management firmware (ASF/IPMI/UMP) is running!"
+Management firmware to support ASF/IPMI/UMP requires that VLAN
+tag stripping be enabled in the controller.
+.It "bce%d: Changing VLAN_HWTAGGING not supported!"
+Disabling VLAN tag stripping is not currently supported by the driver.
+.It "bce%d: Watchdog timeout occurred, resetting!"
+The device has stopped responding to the network, there is a problem
+with the cable connection, or a driver logic problem has occurred..
+.It "bce%d: Fatal attention detected: 0x%08X!"
+A controller hardware failure has occurred.
+If the problem continues replace the controller.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.1 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An David Christensen Aq davidch@broadcom.com .
diff --git a/share/man/man4/bfe.4 b/share/man/man4/bfe.4
new file mode 100644
index 0000000..307813b
--- /dev/null
+++ b/share/man/man4/bfe.4
@@ -0,0 +1,109 @@
+.\"
+.\" Copyright (c) 2003 Stuart Walsh
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 16, 2005
+.Dt BFE 4
+.Os
+.Sh NAME
+.Nm bfe
+.Nd "Broadcom BCM4401 Ethernet Device Driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device bfe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_bfe_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Broadcom BCM4401 based Fast Ethernet adapters.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Set full duplex operation.
+.El
+.Pp
+For further information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "bfe%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "bfe%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "bfe%d: failed to allocate DMA resources"
+There are not enough mbufs available for allocation.
+.It "bfe%d: watchdog timeout -- resetting"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An Stuart Walsh
+and
+.An Duncan Barclay .
+This manual page was written by
+.An Stuart Walsh .
diff --git a/share/man/man4/bge.4 b/share/man/man4/bge.4
new file mode 100644
index 0000000..45b4590
--- /dev/null
+++ b/share/man/man4/bge.4
@@ -0,0 +1,258 @@
+.\" Copyright (c) 2001 Wind River Systems
+.\" Copyright (c) 1997, 1998, 1999, 2000, 2001
+.\" Bill Paul <wpaul@windriver.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd December 25, 2007
+.Dt BGE 4
+.Os
+.Sh NAME
+.Nm bge
+.Nd "Broadcom BCM570x/5714/5721/5722/5750/5751/5752/5789 PCI Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device bge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_bge_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various NICs based on the Broadcom BCM570x,
+5714, 5721, 5722, 5750, 5751, 5752 and 5789 families of Gigabit Ethernet
+controller chips.
+.Pp
+All of these NICs are capable of 10, 100 and 1000Mbps speeds over CAT5
+copper cable, except for the SysKonnect SK-9D41 which supports only
+1000Mbps over multimode fiber.
+The BCM570x builds upon the technology of the Alteon Tigon II.
+It has two R4000 CPU cores and is PCI v2.2 and PCI-X v1.0 compliant.
+It supports IP, TCP
+and UDP checksum offload for both receive and transmit,
+multiple RX and TX DMA rings for QoS applications, rules-based
+receive filtering, and VLAN tag stripping/insertion as well as
+a 256-bit multicast hash filter.
+Additional features may be
+provided via value-add firmware updates.
+The BCM570x supports TBI (ten bit interface) and GMII
+transceivers, which means it can be used with either copper or 1000baseX
+fiber applications.
+Note however the device only supports a single
+speed in TBI mode.
+.Pp
+Most BCM5700-based cards also use the Broadcom BCM5401 or BCM5411 10/100/1000
+copper gigabit transceivers,
+which support autonegotiation of 10, 100 and 1000Mbps modes in
+full or half duplex.
+.Pp
+The BCM5700, BCM5701, BCM5703, BCM5704, BCM5714 and BCM5780 also support
+jumbo frames, which can be configured
+via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit jumbo frames.
+Using jumbo frames can greatly improve performance for certain tasks,
+such as file transfers and data streaming.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Ic mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Ic mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+Only
+.Cm full-duplex
+mode is supported.
+.It Cm 1000baseSX
+Set 1000Mbps (Gigabit Ethernet) operation.
+Both
+.Cm full-duplex
+and
+.Cm half-duplex
+modes are supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+The
+.Nm
+driver also supports one special link option for 1000baseTX cards:
+.Bl -tag -width ".Cm link0"
+.It Cm link0
+With 1000baseTX cards, establishing a link between two ports requires
+that one port be configured as a master and the other a slave.
+With autonegotiation,
+the master/slave settings will be chosen automatically.
+However when manually selecting the link state, it is necessary to
+force one side of the link to be a master and the other a slave.
+The
+.Nm
+driver configures the ports as slaves by default.
+Setting the
+.Cm link0
+flag with
+.Xr ifconfig 8
+will set a port as a master instead.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver provides support for various NICs based on the Broadcom BCM570x
+family of Gigabit Ethernet controller chips, including the
+following:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3c996-SX (1000baseSX)
+.It
+3Com 3c996-T (10/100/1000baseTX)
+.It
+Dell PowerEdge 1750 integrated BCM5704C NIC (10/100/1000baseTX)
+.It
+Dell PowerEdge 2550 integrated BCM5700 NIC (10/100/1000baseTX)
+.It
+Dell PowerEdge 2650 integrated BCM5703 NIC (10/100/1000baseTX)
+.It
+IBM x235 server integrated BCM5703x NIC (10/100/1000baseTX)
+.It
+HP Compaq dc7600 integrated BCM5752 NIC (10/100/1000baseTX)
+.It
+HP ProLiant NC7760 embedded Gigabit NIC (10/100/1000baseTX)
+.It
+HP ProLiant NC7770 PCI-X Gigabit NIC (10/100/1000baseTX)
+.It
+HP ProLiant NC7771 PCI-X Gigabit NIC (10/100/1000baseTX)
+.It
+HP ProLiant NC7781 embedded PCI-X Gigabit NIC (10/100/1000baseTX)
+.It
+Netgear GA302T (10/100/1000baseTX)
+.It
+SysKonnect SK-9D21 (10/100/1000baseTX)
+.It
+SysKonnect SK-9D41 (1000baseSX)
+.El
+.Sh LOADER TUNABLES
+The following tunable can be set at the
+.Xr loader 8
+prompt before booting the kernel, or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.It Va hw.bge.allow_asf
+Allow the ASF feature for cooperating with IPMI.
+Can cause system lockup problems on a small number of systems.
+Enabled by default.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "bge%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "bge%d: couldn't map ports"
+A fatal initialization error has occurred.
+.It "bge%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "bge%d: no memory for softc struct!"
+The driver failed to allocate memory for per-device instance information
+during initialization.
+.It "bge%d: failed to enable memory mapping!"
+The driver failed to initialize PCI shared memory mapping.
+This might
+happen if the card is not in a bus-master slot.
+.It "bge%d: no memory for jumbo buffers!"
+The driver failed to allocate memory for jumbo frames during
+initialization.
+.It "bge%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.5 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@windriver.com .
diff --git a/share/man/man4/bktr.4 b/share/man/man4/bktr.4
new file mode 100644
index 0000000..32baf3a
--- /dev/null
+++ b/share/man/man4/bktr.4
@@ -0,0 +1,266 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 18, 2006
+.Dt BKTR 4
+.Os
+.Sh NAME
+.Nm bktr
+.Nd Brooktree Bt848/849/878/879 and Pinnacle PCTV video capture driver
+.Sh SYNOPSIS
+.Cd device bktr
+.Pp
+.Cd device iicbus
+.Cd device iicbb
+.Cd device smbus
+.Sh DESCRIPTION
+The
+.Nm bktr
+driver provides support for PCI
+.Em video
+capture and
+.Em VBI
+capture on low cost, high performance boards.
+The driver is based on the Matrox Meteor driver and uses the same API.
+The
+.Nm
+driver should support most video cards based on the
+.Em "Brooktree Bt848/849/878/879 Video Capture Chip" .
+Also supported are most
+.Em "Pinnacle PCTV"
+video cards.
+Furthermore, the driver supports
+.Em FM Radio
+if the tuner supports it.
+.Pp
+The driver currently supports the following features:
+.Bd -unfilled -offset indent
+PCI to PCI dma transfer
+clipping
+yuv
+rgb16
+rgb24
+rgb32
+.Ed
+.Pp
+On the supported cards, tuners and other components are interconnected
+with an I2C bus.
+The Brooktree848 chips act as a master device on the bus to control them.
+Therefore,
+.Xr iicbus 4 ,
+.Xr iicbb 4
+and
+.Xr smbus 4
+controller declarations are mandatory to activate
+.Nm
+support.
+.Pp
+The following kernel parameters may be used to further configure the driver:
+.Pp
+.Em options "BROOKTREE_ALLOC_PAGES=xxx"
+specifies the number of contiguous pages to allocate when successfully
+probed.
+The default number of pages allocated by the kernel is 216.
+This means that there are (216*4096) bytes available for use.
+.Bd -unfilled
+.Cd options BROOKTREE_SYSTEM_DEFAULT=BROOKTREE_PAL
+.Cd options BROOKTREE_SYSTEM_DEFAULT=BROOKTREE_NTSC
+.Ed
+One of these options can be used to set the default video format for the driver.
+This fixed random hangs and lockups with the VideoLogic Captivator PCI card.
+.Pp
+The following sysctls may be used to further configure the driver:
+.Pp
+.Em sysctl hw.bt848.card=nnnn
+This can be used to override the card make which was detected at boot time.
+.Ql nnnn
+is set to an integer from 1 to 23 taken from the following table:
+.Pp
+.Bl -tag -compact -width 30n
+.It MIRO
+1
+.It HAUPPAUGE
+2
+.It STB
+3
+.It INTEL
+4
+.It IMS_TURBO
+5
+.It AVER_MEDIA
+6
+.It OSPREY
+7
+.It NEC_PK
+8
+.It IO_GV
+9
+.It FLYVIDEO
+10
+.It ZOLTRIX
+11
+.It KISS
+12
+.It VIDEO_HIGHWAY_XTREME
+13
+.It ASKEY_DYNALINK_MAGIC_TVIEW
+14
+.It LEADTEK
+15
+.It TERRATVPLUS
+16
+.It IO_BCTV3
+17
+.It AOPEN_VA1000
+18
+.It PINNACLE_PCTV_RAVE
+19
+.It PIXELVIEW_PLAYTV_PAK
+20
+.It TERRATVALUE
+21
+.It PIXELVIEW_PLAYTV_PRO_REV_4C
+22
+.It Bt848_MAX
+23
+.El
+.Pp
+.Em sysctl hw.bt848.tuner=nnnn
+This can be used to override the tuner make which was detected at boot time.
+.Ql nnnn
+is set to an integer from 1 to 16 taken from the following table:
+.Pp
+.Bl -tag -compact -width 22n
+.It NO_TUNER
+0
+.It TEMIC_NTSC
+1
+.It TEMIC_PAL
+2
+.It TEMIC_SECAM
+3
+.It PHILIPS_NTSC
+4
+.It PHILIPS_PAL
+5
+.It PHILIPS_SECAM
+6
+.It TEMIC_PALI
+7
+.It PHILIPS_PALI
+8
+.It PHILIPS_FR1236_NTSC
+9 /* These have FM Radio support */
+.It PHILIPS_FR1216_PAL
+10 /* These have FM Radio support */
+.It PHILIPS_FR1236_SECAM
+11 /* These have FM Radio support */
+.It ALPS_TSCH5
+12
+.It ALPS_TSBH1
+13
+.It MT2032
+14
+.It LG_TPI8PSB12P_PAL
+15
+.It Bt848_MAX
+16
+.El
+.Sh HARDWARE
+The
+.Nm
+driver supports video capture cards based on the
+Brooktree Bt848/849/878/879 chips, as well as
+Pinnacle PCTV cards, including:
+.Pp
+.Bl -bullet -compact
+.It
+AOpen VA1000
+.It
+AVerMedia AVerTV Studio
+.It
+AVerMedia TF/FM-98
+.It
+ATI TV Wonder VE
+.It
+Hauppauge WinCast/TV
+.It
+Hauppauge WinTV-Go-FM
+.It
+Hauppauge WinTV-pci
+.It
+Hauppauge WinTV-radio
+.It
+Intel Smart Video Recorder III
+.It
+KWORLD PCI TV Tuner
+.It
+Miro PC TV
+.It
+Pinnacle PCTV Pro
+.It
+Pinnacle PCTV Rave
+.It
+PixelView PlayTV PAK
+.It
+PixelView PlayTV Pro (rev 4C, 9D)
+.It
+SIGMA TV II
+.It
+STB TV PCI Television Tuner
+.It
+Super TV Tuner
+.It
+TerraTec TValue
+.It
+V-Stream XPERT TV-PVR 878
+.It
+Video Highway XTreme
+.It
+VideoLogic Captivator PCI
+.El
+.Sh FILES
+.Bl -tag -width /usr/share/examples/meteor -compact
+.It Pa /usr/share/examples/meteor
+Examples of what you can do with the (similarly designed) Meteor driver.
+.It Pa /usr/ports/multimedia/fxtv
+A TV and Camera display program utilizing the bktr driver - requires that
+.Em The X Window System
+and
+.Em The Ports Collection
+also be installed.
+.It Pa /usr/ports/misc/alevt
+A program to capture and display Teletext (VideoText) pages - requires that
+.Em The X Window System
+and
+.Em The Ports Collection
+also be installed.
+.It Pa /usr/ports/audio/xmradio
+An FM Radio Tuner for cards which have an FM Radio tuner fitted - requires that
+.Em The X Window System
+and
+.Em The Ports Collection
+also be installed.
+It also requires
+.Em Motif
+or the
+.Em lesstif
+port.
+.El
+.Sh SEE ALSO
+.Xr meteor 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+.An -nosplit
+This driver is based on the work of
+.An Jim Lowe Aq james@miller.cs.uwm.edu ,
+.An Mark Tinguely Aq tinguely@plains.nodak.edu ,
+.An Amancio Hasty Aq hasty@star-gate.com ,
+.An Roger Hardiman Aq roger@FreeBSD.org
+and a bunch of other people.
+Support for Pinnacle PCTV Rave cards was added by
+.An Branko Lankester Aq branko@euro.net .
diff --git a/share/man/man4/blackhole.4 b/share/man/man4/blackhole.4
new file mode 100644
index 0000000..2005aab
--- /dev/null
+++ b/share/man/man4/blackhole.4
@@ -0,0 +1,84 @@
+.\"
+.\" blackhole - drop refused TCP or UDP connects
+.\"
+.\" 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.
+.\"
+.\"
+.\" $FreeBSD$
+.Dd January 1, 2007
+.Dt BLACKHOLE 4
+.Os
+.Sh NAME
+.Nm blackhole
+.Nd a
+.Xr sysctl 8
+MIB for manipulating behaviour in respect of refused TCP or UDP connection
+attempts
+.Sh SYNOPSIS
+.Cd sysctl net.inet.tcp.blackhole[=[0 | 1 | 2]]
+.Cd sysctl net.inet.udp.blackhole[=[0 | 1]]
+.Sh DESCRIPTION
+The
+.Nm
+.Xr sysctl 8
+MIB is used to control system behaviour when connection requests
+are received on TCP or UDP ports where there is no socket listening.
+.Pp
+Normal behaviour, when a TCP SYN segment is received on a port where
+there is no socket accepting connections, is for the system to return
+a RST segment, and drop the connection.
+The connecting system will
+see this as a
+.Dq Connection refused .
+By setting the TCP blackhole
+MIB to a numeric value of one, the incoming SYN segment
+is merely dropped, and no RST is sent, making the system appear
+as a blackhole.
+By setting the MIB value to two, any segment arriving
+on a closed port is dropped without returning a RST.
+This provides some degree of protection against stealth port scans.
+.Pp
+In the UDP instance, enabling blackhole behaviour turns off the sending
+of an ICMP port unreachable message in response to a UDP datagram which
+arrives on a port where there is no socket listening.
+It must be noted that this behaviour will prevent remote systems from running
+.Xr traceroute 8
+to a system.
+.Pp
+The blackhole behaviour is useful to slow down anyone who is port scanning
+a system, attempting to detect vulnerable services on a system.
+It could potentially also slow down someone who is attempting a denial
+of service attack.
+.Sh WARNING
+The TCP and UDP blackhole features should not be regarded as a replacement
+for firewall solutions.
+Better security would consist of the
+.Nm
+.Xr sysctl 8
+MIB used in conjuction with one of the available firewall packages.
+.Pp
+This mechanism is not a substitute for securing a system.
+It should be used together with other security mechanisms.
+.Sh SEE ALSO
+.Xr ip 4 ,
+.Xr tcp 4 ,
+.Xr udp 4 ,
+.Xr ipf 8 ,
+.Xr ipfw 8 ,
+.Xr pfctl 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The TCP and UDP
+.Nm
+MIBs
+first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Geoffrey M. Rehmet
diff --git a/share/man/man4/bpf.4 b/share/man/man4/bpf.4
new file mode 100644
index 0000000..1db19a9
--- /dev/null
+++ b/share/man/man4/bpf.4
@@ -0,0 +1,1009 @@
+.\" Copyright (c) 2007 Seccuris Inc.
+.\" All rights reserved.
+.\"
+.\" This sofware was developed by Robert N. M. Watson under contract to
+.\" Seccuris 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 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.
+.\"
+.\" Copyright (c) 1990 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: (1) source code distributions
+.\" retain the above copyright notice and this paragraph in its entirety, (2)
+.\" distributions including binary code include the above copyright notice and
+.\" this paragraph in its entirety in the documentation or other materials
+.\" provided with the distribution, and (3) all advertising materials mentioning
+.\" features or use of this software display the following acknowledgement:
+.\" ``This product includes software developed by the University of California,
+.\" Lawrence Berkeley Laboratory and its contributors.'' 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 ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+.\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\" This document is derived in part from the enet man page (enet.4)
+.\" distributed with 4.3BSD Unix.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 26, 2007
+.Dt BPF 4
+.Os
+.Sh NAME
+.Nm bpf
+.Nd Berkeley Packet Filter
+.Sh SYNOPSIS
+.Cd device bpf
+.Sh DESCRIPTION
+The Berkeley Packet Filter
+provides a raw interface to data link layers in a protocol
+independent fashion.
+All packets on the network, even those destined for other hosts,
+are accessible through this mechanism.
+.Pp
+The packet filter appears as a character special device,
+.Pa /dev/bpf .
+After opening the device, the file descriptor must be bound to a
+specific network interface with the
+.Dv BIOCSETIF
+ioctl.
+A given interface can be shared by multiple listeners, and the filter
+underlying each descriptor will see an identical packet stream.
+.Pp
+A separate device file is required for each minor device.
+If a file is in use, the open will fail and
+.Va errno
+will be set to
+.Er EBUSY .
+.Pp
+Associated with each open instance of a
+.Nm
+file is a user-settable packet filter.
+Whenever a packet is received by an interface,
+all file descriptors listening on that interface apply their filter.
+Each descriptor that accepts the packet receives its own copy.
+.Pp
+The packet filter will support any link level protocol that has fixed length
+headers.
+Currently, only Ethernet,
+.Tn SLIP ,
+and
+.Tn PPP
+drivers have been modified to interact with
+.Nm .
+.Pp
+Since packet data is in network byte order, applications should use the
+.Xr byteorder 3
+macros to extract multi-byte values.
+.Pp
+A packet can be sent out on the network by writing to a
+.Nm
+file descriptor.
+The writes are unbuffered, meaning only one packet can be processed per write.
+Currently, only writes to Ethernets and
+.Tn SLIP
+links are supported.
+.Sh BUFFER MODES
+.Nm
+devices deliver packet data to the application via memory buffers provided by
+the application.
+The buffer mode is set using the
+.Dv BIOCSETBUFMODE
+ioctl, and read using the
+.Dv BIOCGETBUFMODE
+ioctl.
+.Ss Buffered read mode
+By default,
+.Nm
+devices operate in the
+.Dv BPF_BUFMODE_BUFFER
+mode, in which packet data is copied explicitly from kernel to user memory
+using the
+.Xr read 2
+system call.
+The user process will declare a fixed buffer size that will be used both for
+sizing internal buffers and for all
+.Xr read 2
+operations on the file.
+This size is queried using the
+.Dv BIOCGBLEN
+ioctl, and is set using the
+.Dv BIOCSBLEN
+ioctl.
+Note that an individual packet larger than the buffer size is necessarily
+truncated.
+.Ss Zero-copy buffer mode
+.Nm
+devices may also operate in the
+.Dv BPF_BUFMODE_ZEROCOPY
+mode, in which packet data is written directly into two user memory buffers
+by the kernel, avoiding both system call and copying overhead.
+Buffers are of fixed (and equal) size, page-aligned, and an even multiple of
+the page size.
+The maximum zero-copy buffer size is returned by the
+.Dv BIOCGETZMAX
+ioctl.
+Note that an individual packet larger than the buffer size is necessarily
+truncated.
+.Pp
+The user process registers two memory buffers using the
+.Dv BIOCSETZBUF
+ioctl, which accepts a
+.Vt struct bpf_zbuf
+pointer as an argument:
+.Bd -literal
+struct bpf_zbuf {
+ void *bz_bufa;
+ void *bz_bufb;
+ size_t bz_buflen;
+};
+.Ed
+.Pp
+.Vt bz_bufa
+is a pointer to the userspace address of the first buffer that will be
+filled, and
+.Vt bz_bufb
+is a pointer to the second buffer.
+.Nm
+will then cycle between the two buffers as they fill and are acknowledged.
+.Pp
+Each buffer begins with a fixed-length header to hold synchronization and
+data length information for the buffer:
+.Bd -literal
+struct bpf_zbuf_header {
+ volatile u_int bzh_kernel_gen; /* Kernel generation number. */
+ volatile u_int bzh_kernel_len; /* Length of data in the buffer. */
+ volatile u_int bzh_user_gen; /* User generation number. */
+ /* ...padding for future use... */
+};
+.Ed
+.Pp
+The header structure of each buffer, including all padding, should be zeroed
+before it is configured using
+.Dv BIOCSETZBUF .
+Remaining space in the buffer will be used by the kernel to store packet
+data, laid out in the same format as with buffered read mode.
+.Pp
+The kernel and the user process follow a simple acknowledgement protocol via
+the buffer header to synchronize access to the buffer: when the header
+generation numbers,
+.Vt bzh_kernel_gen
+and
+.Vt bzh_user_gen ,
+hold the same value, the kernel owns the buffer, and when they differ,
+userspace owns the buffer.
+.Pp
+While the kernel owns the buffer, the contents are unstable and may change
+asynchronously; while the user process owns the buffer, its contents are
+stable and will not be changed until the buffer has been acknowledged.
+.Pp
+Initializing the buffer headers to all 0's before registering the buffer has
+the effect of assigning initial ownership of both buffers to the kernel.
+The kernel signals that a buffer has been assigned to userspace by modifying
+.Vt bzh_kernel_gen ,
+and userspace acknowledges the buffer and returns it to the kernel by setting
+the value of
+.Vt bzh_user_gen
+to the value of
+.Vt bzh_kernel_gen .
+.Pp
+In order to avoid caching and memory re-ordering effects, the user process
+must use atomic operations and memory barriers when checking for and
+acknowledging buffers:
+.Bd -literal
+#include <machine/atomic.h>
+
+/*
+ * Return ownership of a buffer to the kernel for reuse.
+ */
+static void
+buffer_acknowledge(struct bpf_zbuf_header *bzh)
+{
+
+ atomic_store_rel_int(&bzh->bzh_user_gen, bzh->bzh_kernel_gen);
+}
+
+/*
+ * Check whether a buffer has been assigned to userspace by the kernel.
+ * Return true if userspace owns the buffer, and false otherwise.
+ */
+static int
+buffer_check(struct bpf_zbuf_header *bzh)
+{
+
+ return (bzh->bzh_user_gen !=
+ atomic_load_acq_int(&bzh->bzh_kernel_gen));
+}
+.Ed
+.Pp
+The user process may force the assignment of the next buffer, if any data
+is pending, to userspace using the
+.Dv BIOCROTZBUF
+ioctl.
+This allows the user process to retrieve data in a partially filled buffer
+before the buffer is full, such as following a timeout; the process must
+recheck for buffer ownership using the header generation numbers, as the
+buffer will not be assigned to userspace if no data was present.
+.Pp
+As in the buffered read mode,
+.Xr kqueue 2 ,
+.Xr poll 2 ,
+and
+.Xr select 2
+may be used to sleep awaiting the availbility of a completed buffer.
+They will return a readable file descriptor when ownership of the next buffer
+is assigned to user space.
+.Pp
+In the current implementation, the kernel may assign zero, one, or both
+buffers to the user process; however, an earlier implementation maintained
+the invariant that at most one buffer could be assigned to the user process
+at a time.
+In order to both ensure progress and high performance, user processes should
+acknowledge a completely processed buffer as quickly as possible, returning
+it for reuse, and not block waiting on a second buffer while holding another
+buffer.
+.Sh IOCTLS
+The
+.Xr ioctl 2
+command codes below are defined in
+.In net/bpf.h .
+All commands require
+these includes:
+.Bd -literal
+ #include <sys/types.h>
+ #include <sys/time.h>
+ #include <sys/ioctl.h>
+ #include <net/bpf.h>
+.Ed
+.Pp
+Additionally,
+.Dv BIOCGETIF
+and
+.Dv BIOCSETIF
+require
+.In sys/socket.h
+and
+.In net/if.h .
+.Pp
+In addition to
+.Dv FIONREAD
+and
+.Dv SIOCGIFADDR ,
+the following commands may be applied to any open
+.Nm
+file.
+The (third) argument to
+.Xr ioctl 2
+should be a pointer to the type indicated.
+.Bl -tag -width BIOCGETBUFMODE
+.It Dv BIOCGBLEN
+.Pq Li u_int
+Returns the required buffer length for reads on
+.Nm
+files.
+.It Dv BIOCSBLEN
+.Pq Li u_int
+Sets the buffer length for reads on
+.Nm
+files.
+The buffer must be set before the file is attached to an interface
+with
+.Dv BIOCSETIF .
+If the requested buffer size cannot be accommodated, the closest
+allowable size will be set and returned in the argument.
+A read call will result in
+.Er EIO
+if it is passed a buffer that is not this size.
+.It Dv BIOCGDLT
+.Pq Li u_int
+Returns the type of the data link layer underlying the attached interface.
+.Er EINVAL
+is returned if no interface has been specified.
+The device types, prefixed with
+.Dq Li DLT_ ,
+are defined in
+.In net/bpf.h .
+.It Dv BIOCPROMISC
+Forces the interface into promiscuous mode.
+All packets, not just those destined for the local host, are processed.
+Since more than one file can be listening on a given interface,
+a listener that opened its interface non-promiscuously may receive
+packets promiscuously.
+This problem can be remedied with an appropriate filter.
+.It Dv BIOCFLUSH
+Flushes the buffer of incoming packets,
+and resets the statistics that are returned by BIOCGSTATS.
+.It Dv BIOCGETIF
+.Pq Li "struct ifreq"
+Returns the name of the hardware interface that the file is listening on.
+The name is returned in the ifr_name field of
+the
+.Li ifreq
+structure.
+All other fields are undefined.
+.It Dv BIOCSETIF
+.Pq Li "struct ifreq"
+Sets the hardware interface associate with the file.
+This
+command must be performed before any packets can be read.
+The device is indicated by name using the
+.Li ifr_name
+field of the
+.Li ifreq
+structure.
+Additionally, performs the actions of
+.Dv BIOCFLUSH .
+.It Dv BIOCSRTIMEOUT
+.It Dv BIOCGRTIMEOUT
+.Pq Li "struct timeval"
+Set or get the read timeout parameter.
+The argument
+specifies the length of time to wait before timing
+out on a read request.
+This parameter is initialized to zero by
+.Xr open 2 ,
+indicating no timeout.
+.It Dv BIOCGSTATS
+.Pq Li "struct bpf_stat"
+Returns the following structure of packet statistics:
+.Bd -literal
+struct bpf_stat {
+ u_int bs_recv; /* number of packets received */
+ u_int bs_drop; /* number of packets dropped */
+};
+.Ed
+.Pp
+The fields are:
+.Bl -hang -offset indent
+.It Li bs_recv
+the number of packets received by the descriptor since opened or reset
+(including any buffered since the last read call);
+and
+.It Li bs_drop
+the number of packets which were accepted by the filter but dropped by the
+kernel because of buffer overflows
+(i.e., the application's reads are not keeping up with the packet traffic).
+.El
+.It Dv BIOCIMMEDIATE
+.Pq Li u_int
+Enable or disable
+.Dq immediate mode ,
+based on the truth value of the argument.
+When immediate mode is enabled, reads return immediately upon packet
+reception.
+Otherwise, a read will block until either the kernel buffer
+becomes full or a timeout occurs.
+This is useful for programs like
+.Xr rarpd 8
+which must respond to messages in real time.
+The default for a new file is off.
+.It Dv BIOCSETF
+.It Dv BIOCSETFNR
+.Pq Li "struct bpf_program"
+Sets the read filter program used by the kernel to discard uninteresting
+packets.
+An array of instructions and its length is passed in using
+the following structure:
+.Bd -literal
+struct bpf_program {
+ int bf_len;
+ struct bpf_insn *bf_insns;
+};
+.Ed
+.Pp
+The filter program is pointed to by the
+.Li bf_insns
+field while its length in units of
+.Sq Li struct bpf_insn
+is given by the
+.Li bf_len
+field.
+See section
+.Sx "FILTER MACHINE"
+for an explanation of the filter language.
+The only difference between
+.Dv BIOCSETF
+and
+.Dv BIOCSETFNR
+is
+.Dv BIOCSETF
+performs the actions of
+.Dv BIOCFLUSH
+while
+.Dv BIOCSETFNR
+does not.
+.It Dv BIOCSETWF
+.Pq Li "struct bpf_program"
+Sets the write filter program used by the kernel to control what type of
+packets can be written to the interface.
+See the
+.Dv BIOCSETF
+command for more
+information on the
+.Nm
+filter program.
+.It Dv BIOCVERSION
+.Pq Li "struct bpf_version"
+Returns the major and minor version numbers of the filter language currently
+recognized by the kernel.
+Before installing a filter, applications must check
+that the current version is compatible with the running kernel.
+Version numbers are compatible if the major numbers match and the application minor
+is less than or equal to the kernel minor.
+The kernel version number is returned in the following structure:
+.Bd -literal
+struct bpf_version {
+ u_short bv_major;
+ u_short bv_minor;
+};
+.Ed
+.Pp
+The current version numbers are given by
+.Dv BPF_MAJOR_VERSION
+and
+.Dv BPF_MINOR_VERSION
+from
+.In net/bpf.h .
+An incompatible filter
+may result in undefined behavior (most likely, an error returned by
+.Fn ioctl
+or haphazard packet matching).
+.It Dv BIOCSHDRCMPLT
+.It Dv BIOCGHDRCMPLT
+.Pq Li u_int
+Set or get the status of the
+.Dq header complete
+flag.
+Set to zero if the link level source address should be filled in automatically
+by the interface output routine.
+Set to one if the link level source
+address will be written, as provided, to the wire.
+This flag is initialized to zero by default.
+.It Dv BIOCSSEESENT
+.It Dv BIOCGSEESENT
+.Pq Li u_int
+These commands are obsolete but left for compatibility.
+Use
+.Dv BIOCSDIRECTION
+and
+.Dv BIOCGDIRECTION
+instead.
+Set or get the flag determining whether locally generated packets on the
+interface should be returned by BPF.
+Set to zero to see only incoming packets on the interface.
+Set to one to see packets originating locally and remotely on the interface.
+This flag is initialized to one by default.
+.It Dv BIOCSDIRECTION
+.It Dv BIOCGDIRECTION
+.Pq Li u_int
+Set or get the setting determining whether incoming, outgoing, or all packets
+on the interface should be returned by BPF.
+Set to
+.Dv BPF_D_IN
+to see only incoming packets on the interface.
+Set to
+.Dv BPF_D_INOUT
+to see packets originating locally and remotely on the interface.
+Set to
+.Dv BPF_D_OUT
+to see only outgoing packets on the interface.
+This setting is initialized to
+.Dv BPF_D_INOUT
+by default.
+.It Dv BIOCFEEDBACK
+.Pq Li u_int
+Set packet feedback mode.
+This allows injected packets to be fed back as input to the interface when
+output via the interface is successful.
+When
+.Dv BPF_D_INOUT
+direction is set, injected outgoing packet is not returned by BPF to avoid
+duplication. This flag is initialized to zero by default.
+.It Dv BIOCLOCK
+Set the locked flag on the
+.Nm
+descriptor.
+This prevents the execution of
+ioctl commands which could change the underlying operating parameters of
+the device.
+.It Dv BIOCGETBUFMODE
+.It Dv BIOCSETBUFMODE
+.Pq Li u_int
+Get or set the current
+.Nm
+buffering mode; possible values are
+.Dv BPF_BUFMODE_BUFFER ,
+buffered read mode, and
+.Dv BPF_BUFMODE_ZBUF ,
+zero-copy buffer mode.
+.It Dv BIOCSETZBUF
+.Pq Li struct bpf_zbuf
+Set the current zero-copy buffer locations; buffer locations may be
+set only once zero-copy buffer mode has been selected, and prior to attaching
+to an interface.
+Buffers must be of identical size, page-aligned, and an integer multiple of
+pages in size.
+The three fields
+.Vt bz_bufa ,
+.Vt bz_bufb ,
+and
+.Vt bz_buflen
+must be filled out.
+If buffers have already been set for this device, the ioctl will fail.
+.It Dv BIOCGETZMAX
+.Pq Li size_t
+Get the largest individual zero-copy buffer size allowed.
+As two buffers are used in zero-copy buffer mode, the limit (in practice) is
+twice the returned size.
+As zero-copy buffers consume kernel address space, conservative selection of
+buffer size is suggested, especially when there are multiple
+.Nm
+descriptors in use on 32-bit systems.
+.It Dv BIOCROTZBUF
+Force ownership of the next buffer to be assigned to userspace, if any data
+present in the buffer.
+If no data is present, the buffer will remain owned by the kernel.
+This allows consumers of zero-copy buffering to implement timeouts and
+retrieve partially filled buffers.
+In order to handle the case where no data is present in the buffer and
+therefore ownership is not assigned, the user process must check
+.Vt bzh_kernel_gen
+against
+.Vt bzh_user_gen .
+.El
+.Sh BPF HEADER
+The following structure is prepended to each packet returned by
+.Xr read 2
+or via a zero-copy buffer:
+.Bd -literal
+struct bpf_hdr {
+ struct timeval bh_tstamp; /* time stamp */
+ u_long bh_caplen; /* length of captured portion */
+ u_long bh_datalen; /* original length of packet */
+ u_short bh_hdrlen; /* length of bpf header (this struct
+ plus alignment padding */
+};
+.Ed
+.Pp
+The fields, whose values are stored in host order, and are:
+.Pp
+.Bl -tag -compact -width bh_datalen
+.It Li bh_tstamp
+The time at which the packet was processed by the packet filter.
+.It Li bh_caplen
+The length of the captured portion of the packet.
+This is the minimum of
+the truncation amount specified by the filter and the length of the packet.
+.It Li bh_datalen
+The length of the packet off the wire.
+This value is independent of the truncation amount specified by the filter.
+.It Li bh_hdrlen
+The length of the
+.Nm
+header, which may not be equal to
+.\" XXX - not really a function call
+.Fn sizeof "struct bpf_hdr" .
+.El
+.Pp
+The
+.Li bh_hdrlen
+field exists to account for
+padding between the header and the link level protocol.
+The purpose here is to guarantee proper alignment of the packet
+data structures, which is required on alignment sensitive
+architectures and improves performance on many other architectures.
+The packet filter insures that the
+.Li bpf_hdr
+and the network layer
+header will be word aligned.
+Suitable precautions
+must be taken when accessing the link layer protocol fields on alignment
+restricted machines.
+(This is not a problem on an Ethernet, since
+the type field is a short falling on an even offset,
+and the addresses are probably accessed in a bytewise fashion).
+.Pp
+Additionally, individual packets are padded so that each starts
+on a word boundary.
+This requires that an application
+has some knowledge of how to get from packet to packet.
+The macro
+.Dv BPF_WORDALIGN
+is defined in
+.In net/bpf.h
+to facilitate
+this process.
+It rounds up its argument to the nearest word aligned value (where a word is
+.Dv BPF_ALIGNMENT
+bytes wide).
+.Pp
+For example, if
+.Sq Li p
+points to the start of a packet, this expression
+will advance it to the next packet:
+.Dl p = (char *)p + BPF_WORDALIGN(p->bh_hdrlen + p->bh_caplen)
+.Pp
+For the alignment mechanisms to work properly, the
+buffer passed to
+.Xr read 2
+must itself be word aligned.
+The
+.Xr malloc 3
+function
+will always return an aligned buffer.
+.Sh FILTER MACHINE
+A filter program is an array of instructions, with all branches forwardly
+directed, terminated by a
+.Em return
+instruction.
+Each instruction performs some action on the pseudo-machine state,
+which consists of an accumulator, index register, scratch memory store,
+and implicit program counter.
+.Pp
+The following structure defines the instruction format:
+.Bd -literal
+struct bpf_insn {
+ u_short code;
+ u_char jt;
+ u_char jf;
+ u_long k;
+};
+.Ed
+.Pp
+The
+.Li k
+field is used in different ways by different instructions,
+and the
+.Li jt
+and
+.Li jf
+fields are used as offsets
+by the branch instructions.
+The opcodes are encoded in a semi-hierarchical fashion.
+There are eight classes of instructions:
+.Dv BPF_LD ,
+.Dv BPF_LDX ,
+.Dv BPF_ST ,
+.Dv BPF_STX ,
+.Dv BPF_ALU ,
+.Dv BPF_JMP ,
+.Dv BPF_RET ,
+and
+.Dv BPF_MISC .
+Various other mode and
+operator bits are or'd into the class to give the actual instructions.
+The classes and modes are defined in
+.In net/bpf.h .
+.Pp
+Below are the semantics for each defined
+.Nm
+instruction.
+We use the convention that A is the accumulator, X is the index register,
+P[] packet data, and M[] scratch memory store.
+P[i:n] gives the data at byte offset
+.Dq i
+in the packet,
+interpreted as a word (n=4),
+unsigned halfword (n=2), or unsigned byte (n=1).
+M[i] gives the i'th word in the scratch memory store, which is only
+addressed in word units.
+The memory store is indexed from 0 to
+.Dv BPF_MEMWORDS
+- 1.
+.Li k ,
+.Li jt ,
+and
+.Li jf
+are the corresponding fields in the
+instruction definition.
+.Dq len
+refers to the length of the packet.
+.Pp
+.Bl -tag -width BPF_STXx
+.It Dv BPF_LD
+These instructions copy a value into the accumulator.
+The type of the source operand is specified by an
+.Dq addressing mode
+and can be a constant
+.Pq Dv BPF_IMM ,
+packet data at a fixed offset
+.Pq Dv BPF_ABS ,
+packet data at a variable offset
+.Pq Dv BPF_IND ,
+the packet length
+.Pq Dv BPF_LEN ,
+or a word in the scratch memory store
+.Pq Dv BPF_MEM .
+For
+.Dv BPF_IND
+and
+.Dv BPF_ABS ,
+the data size must be specified as a word
+.Pq Dv BPF_W ,
+halfword
+.Pq Dv BPF_H ,
+or byte
+.Pq Dv BPF_B .
+The semantics of all the recognized
+.Dv BPF_LD
+instructions follow.
+.Pp
+.Bd -literal
+BPF_LD+BPF_W+BPF_ABS A <- P[k:4]
+BPF_LD+BPF_H+BPF_ABS A <- P[k:2]
+BPF_LD+BPF_B+BPF_ABS A <- P[k:1]
+BPF_LD+BPF_W+BPF_IND A <- P[X+k:4]
+BPF_LD+BPF_H+BPF_IND A <- P[X+k:2]
+BPF_LD+BPF_B+BPF_IND A <- P[X+k:1]
+BPF_LD+BPF_W+BPF_LEN A <- len
+BPF_LD+BPF_IMM A <- k
+BPF_LD+BPF_MEM A <- M[k]
+.Ed
+.It Dv BPF_LDX
+These instructions load a value into the index register.
+Note that
+the addressing modes are more restrictive than those of the accumulator loads,
+but they include
+.Dv BPF_MSH ,
+a hack for efficiently loading the IP header length.
+.Pp
+.Bd -literal
+BPF_LDX+BPF_W+BPF_IMM X <- k
+BPF_LDX+BPF_W+BPF_MEM X <- M[k]
+BPF_LDX+BPF_W+BPF_LEN X <- len
+BPF_LDX+BPF_B+BPF_MSH X <- 4*(P[k:1]&0xf)
+.Ed
+.It Dv BPF_ST
+This instruction stores the accumulator into the scratch memory.
+We do not need an addressing mode since there is only one possibility
+for the destination.
+.Pp
+.Bd -literal
+BPF_ST M[k] <- A
+.Ed
+.It Dv BPF_STX
+This instruction stores the index register in the scratch memory store.
+.Pp
+.Bd -literal
+BPF_STX M[k] <- X
+.Ed
+.It Dv BPF_ALU
+The alu instructions perform operations between the accumulator and
+index register or constant, and store the result back in the accumulator.
+For binary operations, a source mode is required
+.Dv ( BPF_K
+or
+.Dv BPF_X ) .
+.Pp
+.Bd -literal
+BPF_ALU+BPF_ADD+BPF_K A <- A + k
+BPF_ALU+BPF_SUB+BPF_K A <- A - k
+BPF_ALU+BPF_MUL+BPF_K A <- A * k
+BPF_ALU+BPF_DIV+BPF_K A <- A / k
+BPF_ALU+BPF_AND+BPF_K A <- A & k
+BPF_ALU+BPF_OR+BPF_K A <- A | k
+BPF_ALU+BPF_LSH+BPF_K A <- A << k
+BPF_ALU+BPF_RSH+BPF_K A <- A >> k
+BPF_ALU+BPF_ADD+BPF_X A <- A + X
+BPF_ALU+BPF_SUB+BPF_X A <- A - X
+BPF_ALU+BPF_MUL+BPF_X A <- A * X
+BPF_ALU+BPF_DIV+BPF_X A <- A / X
+BPF_ALU+BPF_AND+BPF_X A <- A & X
+BPF_ALU+BPF_OR+BPF_X A <- A | X
+BPF_ALU+BPF_LSH+BPF_X A <- A << X
+BPF_ALU+BPF_RSH+BPF_X A <- A >> X
+BPF_ALU+BPF_NEG A <- -A
+.Ed
+.It Dv BPF_JMP
+The jump instructions alter flow of control.
+Conditional jumps
+compare the accumulator against a constant
+.Pq Dv BPF_K
+or the index register
+.Pq Dv BPF_X .
+If the result is true (or non-zero),
+the true branch is taken, otherwise the false branch is taken.
+Jump offsets are encoded in 8 bits so the longest jump is 256 instructions.
+However, the jump always
+.Pq Dv BPF_JA
+opcode uses the 32 bit
+.Li k
+field as the offset, allowing arbitrarily distant destinations.
+All conditionals use unsigned comparison conventions.
+.Pp
+.Bd -literal
+BPF_JMP+BPF_JA pc += k
+BPF_JMP+BPF_JGT+BPF_K pc += (A > k) ? jt : jf
+BPF_JMP+BPF_JGE+BPF_K pc += (A >= k) ? jt : jf
+BPF_JMP+BPF_JEQ+BPF_K pc += (A == k) ? jt : jf
+BPF_JMP+BPF_JSET+BPF_K pc += (A & k) ? jt : jf
+BPF_JMP+BPF_JGT+BPF_X pc += (A > X) ? jt : jf
+BPF_JMP+BPF_JGE+BPF_X pc += (A >= X) ? jt : jf
+BPF_JMP+BPF_JEQ+BPF_X pc += (A == X) ? jt : jf
+BPF_JMP+BPF_JSET+BPF_X pc += (A & X) ? jt : jf
+.Ed
+.It Dv BPF_RET
+The return instructions terminate the filter program and specify the amount
+of packet to accept (i.e., they return the truncation amount).
+A return value of zero indicates that the packet should be ignored.
+The return value is either a constant
+.Pq Dv BPF_K
+or the accumulator
+.Pq Dv BPF_A .
+.Pp
+.Bd -literal
+BPF_RET+BPF_A accept A bytes
+BPF_RET+BPF_K accept k bytes
+.Ed
+.It Dv BPF_MISC
+The miscellaneous category was created for anything that does not
+fit into the above classes, and for any new instructions that might need to
+be added.
+Currently, these are the register transfer instructions
+that copy the index register to the accumulator or vice versa.
+.Pp
+.Bd -literal
+BPF_MISC+BPF_TAX X <- A
+BPF_MISC+BPF_TXA A <- X
+.Ed
+.El
+.Pp
+The
+.Nm
+interface provides the following macros to facilitate
+array initializers:
+.Fn BPF_STMT opcode operand
+and
+.Fn BPF_JUMP opcode operand true_offset false_offset .
+.Sh FILES
+.Bl -tag -compact -width /dev/bpf
+.It Pa /dev/bpf
+the packet filter device
+.El
+.Sh EXAMPLES
+The following filter is taken from the Reverse ARP Daemon.
+It accepts only Reverse ARP requests.
+.Bd -literal
+struct bpf_insn insns[] = {
+ BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_REVARP, 0, 3),
+ BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, REVARP_REQUEST, 0, 1),
+ BPF_STMT(BPF_RET+BPF_K, sizeof(struct ether_arp) +
+ sizeof(struct ether_header)),
+ BPF_STMT(BPF_RET+BPF_K, 0),
+};
+.Ed
+.Pp
+This filter accepts only IP packets between host 128.3.112.15 and
+128.3.112.35.
+.Bd -literal
+struct bpf_insn insns[] = {
+ BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 8),
+ BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 26),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x8003700f, 0, 2),
+ BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 30),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x80037023, 3, 4),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x80037023, 0, 3),
+ BPF_STMT(BPF_LD+BPF_W+BPF_ABS, 30),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 0x8003700f, 0, 1),
+ BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
+ BPF_STMT(BPF_RET+BPF_K, 0),
+};
+.Ed
+.Pp
+Finally, this filter returns only TCP finger packets.
+We must parse the IP header to reach the TCP header.
+The
+.Dv BPF_JSET
+instruction
+checks that the IP fragment offset is 0 so we are sure
+that we have a TCP header.
+.Bd -literal
+struct bpf_insn insns[] = {
+ BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 10),
+ BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, IPPROTO_TCP, 0, 8),
+ BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20),
+ BPF_JUMP(BPF_JMP+BPF_JSET+BPF_K, 0x1fff, 6, 0),
+ BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, 14),
+ BPF_STMT(BPF_LD+BPF_H+BPF_IND, 14),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 2, 0),
+ BPF_STMT(BPF_LD+BPF_H+BPF_IND, 16),
+ BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 0, 1),
+ BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
+ BPF_STMT(BPF_RET+BPF_K, 0),
+};
+.Ed
+.Sh SEE ALSO
+.Xr tcpdump 1 ,
+.Xr ioctl 2 ,
+.Xr kqueue 2 ,
+.Xr poll 2 ,
+.Xr select 2 ,
+.Xr byteorder 3 ,
+.Xr ng_bpf 4 ,
+.Xr bpf 9
+.Rs
+.%A McCanne, S.
+.%A Jacobson V.
+.%T "An efficient, extensible, and portable network monitor"
+.Re
+.Sh HISTORY
+The Enet packet filter was created in 1980 by Mike Accetta and
+Rick Rashid at Carnegie-Mellon University.
+Jeffrey Mogul, at
+Stanford, ported the code to
+.Bx
+and continued its development from
+1983 on.
+Since then, it has evolved into the Ultrix Packet Filter at
+.Tn DEC ,
+a
+.Tn STREAMS
+.Tn NIT
+module under
+.Tn SunOS 4.1 ,
+and
+.Tn BPF .
+.Sh AUTHORS
+.An -nosplit
+.An Steven McCanne ,
+of Lawrence Berkeley Laboratory, implemented BPF in
+Summer 1990.
+Much of the design is due to
+.An Van Jacobson .
+.Pp
+Support for zero-copy buffers was added by
+.An Robert N. M. Watson
+under contract to Seccuris Inc.
+.Sh BUGS
+The read buffer must be of a fixed size (returned by the
+.Dv BIOCGBLEN
+ioctl).
+.Pp
+A file that does not request promiscuous mode may receive promiscuously
+received packets as a side effect of another file requesting this
+mode on the same hardware interface.
+This could be fixed in the kernel with additional processing overhead.
+However, we favor the model where
+all files must assume that the interface is promiscuous, and if
+so desired, must utilize a filter to reject foreign packets.
+.Pp
+Data link protocols with variable length headers are not currently supported.
+.Pp
+The
+.Dv SEESENT ,
+.Dv DIRECTION ,
+and
+.Dv FEEDBACK
+settings have been observed to work incorrectly on some interface
+types, including those with hardware loopback rather than software loopback,
+and point-to-point interfaces.
+They appear to function correctly on a
+broad range of Ethernet-style interfaces.
diff --git a/share/man/man4/bt.4 b/share/man/man4/bt.4
new file mode 100644
index 0000000..d684ee6
--- /dev/null
+++ b/share/man/man4/bt.4
@@ -0,0 +1,205 @@
+.\"
+.\" Copyright (c) 1994 Jordan Hubbard
+.\" 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
+.\"
+.\" 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$
+.\"
+.Dd June 18, 2006
+.Dt BT 4
+.Os
+.Sh NAME
+.Nm bt
+.Nd Buslogic/Mylex MultiMaster SCSI host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device isa"
+.Cd "device scbus"
+.Cd "device bt"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.bt.0.at="isa"
+.Cd hint.bt.0.port="0x330"
+.Ed
+.Sh DESCRIPTION
+This driver provides access to the
+.Tn SCSI
+bus connected to a Buslogic/Mylex MultiMaster or compatible controller:
+.Pp
+.Bd -ragged -offset indent
+.Bl -column "BT-956CD " "ISA " "Commands " Description
+MultiMaster "W" Series Host Adapters:
+.Pp
+.Em "Adapter Bus Commands Description"
+BT-948 PCI 192 Ultra SCSI-3
+BT-958 PCI 192 Wide ULtra SCSI-3
+BT-958D PCI 192 Wide Differential Ultra SCSI-3
+.El
+.Bl -column "BT-956CD " "ISA " "Commands " Description
+MultiMaster "C" Series Host Adapters:
+.Pp
+.Em "Adapter Bus Commands Description"
+BT-946C PCI 100 Fast SCSI-2
+BT-956C PCI 100 Wide Fast SCSI-2
+BT-956CD PCI 100 Wide Differential Fast SCSI-2
+BT-445C VLB 100 Fast SCSI-2
+BT-747C EISA 100 Fast SCSI-2
+BT-757C EISA 100 Wide Fast SCSI-2
+BT-757CD EISA 100 Wide Differential Fast SCSI-2
+BT-545C ISA 50 Fast SCSI-2
+BT-540CF ISA 50 Fast SCSI-2
+.El
+.Bl -column "BT-956CD " "ISA " "Commands " Description
+MultiMaster "S" Series Host Adapters:
+.Pp
+.Em "Adapter Bus Commands Description"
+BT-445S VLB 30 Fast SCSI-2
+BT-747S EISA 30 Fast SCSI-2
+BT-747D EISA 30 Differential Fast SCSI-2
+BT-757S EISA 30 Wide Fast SCSI-2
+BT-757D EISA 30 Wide Differential Fast SCSI-2
+BT-545S ISA 30 Fast SCSI-2
+BT-542D ISA 30 Differential Fast SCSI-2
+BT-742A EISA 30 SCSI-2 (742A revision H)
+BT-542B ISA 30 SCSI-2 (542B revision H)
+.El
+.Bl -column "BT-956CD " "ISA " "Commands " Description
+MultiMaster "A" Series Host Adapters:
+.Pp
+.Em "Adapter Bus Commands Description"
+BT-742A EISA 30 SCSI-2 (742A revisions A - G)
+BT-542B ISA 30 SCSI-2 (542B revisions A - G)
+.El
+.Ed
+.Pp
+Tagged queueing is supported on 'W' series adapters, 'C' series adapters
+with firmware of rev 4.42 and higher, and 'S' series adapters with firmware
+of rev 3.35 and higher.
+.Pp
+Boards with certain firmware revisions may lock up under heavy load to
+certain devices, especially if tagged queueing is used.
+Should you encounter
+a problem with your adapter, contact Mylex technical support and ensure you
+have the latest firmware for your controller.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following BusLogic MultiMaster
+.Dq W ,
+.Dq C ,
+.Dq S ,
+and
+.Dq A
+series and compatible SCSI host adapters:
+.Pp
+.Bl -bullet -compact
+.It
+BusLogic BT-445C
+.It
+BusLogic BT-445S
+.It
+BusLogic BT-540CF
+.It
+BusLogic BT-542B
+.It
+BusLogic BT-542B
+.It
+BusLogic BT-542D
+.It
+BusLogic BT-545C
+.It
+BusLogic BT-545S
+.It
+BusLogic/BusTek BT-640
+.It
+BusLogic BT-742A
+.It
+BusLogic BT-742A
+.It
+BusLogic BT-747C
+.It
+BusLogic BT-747D
+.It
+BusLogic BT-747S
+.It
+BusLogic BT-757C
+.It
+BusLogic BT-757CD
+.It
+BusLogic BT-757D
+.It
+BusLogic BT-757S
+.It
+BusLogic BT-946C
+.It
+BusLogic BT-948
+.It
+BusLogic BT-956C
+.It
+BusLogic BT-956CD
+.It
+BusLogic BT-958
+.It
+BusLogic BT-958D
+.It
+Storage Dimensions SDC3211B / SDC3211F
+.El
+.Pp
+AMI FastDisk Host Adapters that are true BusLogic MultiMaster clones
+are also supported by the
+.Nm
+driver.
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in the
+.Bx 386
+patch kit.
+.Sh AUTHORS
+.An -nosplit
+.An Julian Elischer
+wrote a driver for the Multimaster cards that appeared in the
+.Bx 386
+patch kit.
+The driver was rewritten by
+.An Justin T. Gibbs
+to take advantage of new board features and work with the CAM SCSI framework in
+.Fx 3.0 .
+.Pp
+Special thanks to
+.An Leonard N. Zubkoff
+for writing such a complete and well documented Mylex/BusLogic MultiMaster
+driver for Linux.
+Support in this driver for the wide range of MultiMaster
+controllers and firmware revisions, with their otherwise undocumented quirks,
+would not have been possible without his efforts.
diff --git a/share/man/man4/cardbus.4 b/share/man/man4/cardbus.4
new file mode 100644
index 0000000..1c3600a
--- /dev/null
+++ b/share/man/man4/cardbus.4
@@ -0,0 +1,59 @@
+.\"
+.\" Copyright (c) 2002 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd July 9, 2002
+.Dt CARDBUS 4
+.Os
+.Sh NAME
+.Nm cardbus
+.Nd CardBus bus driver
+.Sh SYNOPSIS
+.Cd device cardbus
+.Sh DESCRIPTION
+The
+.Nm
+driver implements the CardBus bus.
+The
+.Nm
+driver supports all cardbus bridges in the system.
+.Sh TUNABLES
+The driver supports the following tunable parameters, which may be
+added to
+.Pa /boot/loader.conf
+or set via the
+.Xr sysctl 8
+command:
+.Bl -tag -width ".Cm hw.cardbus.cis_debug" -compact
+.It Cm hw.cardbus.debug
+Non-zero values cause more verbose information to be printed when a
+32-bit CardBus card is inserted or removed.
+.It Cm hw.cardbus.cis_debug
+Non-zero value causes the CIS parsing of the 32-bit CardBus card to be
+much more verbose and include a complete CIS dump.
+.El
+.Sh SEE ALSO
+.Xr pccard 4 ,
+.Xr pccbb 4
diff --git a/share/man/man4/carp.4 b/share/man/man4/carp.4
new file mode 100644
index 0000000..8333b4a
--- /dev/null
+++ b/share/man/man4/carp.4
@@ -0,0 +1,266 @@
+.\" $OpenBSD: carp.4,v 1.16 2004/12/07 23:41:35 jmc Exp $
+.\"
+.\" Copyright (c) 2003, Ryan McBride. 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 PROJECT 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 PROJECT 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$
+.\"
+.Dd June 6, 2006
+.Dt CARP 4
+.Os
+.Sh NAME
+.Nm carp
+.Nd Common Address Redundancy Protocol
+.Sh SYNOPSIS
+.Cd "device carp"
+.Sh DESCRIPTION
+The
+.Nm
+interface is a pseudo-device that implements and controls the
+CARP protocol.
+CARP allows multiple hosts on the same local network to share a set of IP addresses.
+Its primary purpose is to ensure that these
+addresses are always available, but in some configurations
+.Nm
+can also provide load balancing functionality.
+.Pp
+A
+.Nm
+interface can be created at runtime using the
+.Nm ifconfig Li carp Ns Ar N Cm create
+command or by configuring
+it via
+.Va cloned_interfaces
+in the
+.Pa /etc/rc.conf
+file.
+.Pp
+To use
+.Nm ,
+the administrator needs to configure at minimum a common virtual host ID (VHID)
+and virtual host IP address on each machine which is to take part in the virtual
+group.
+Additional parameters can also be set on a per-interface basis:
+.Cm advbase
+and
+.Cm advskew ,
+which are used to control how frequently the host sends advertisements when it
+is the master for a virtual host, and
+.Cm pass
+which is used to authenticate
+.Nm
+advertisements.
+The
+.Cm advbase
+parameter stands for
+.Dq "advertisement base" .
+It is measured in seconds and specifies the base of the advertisement interval.
+The
+.Cm advskew
+parameter stands for
+.Dq "advertisement skew" .
+It is measured in 1/256 of seconds.
+It is added to the base advertisement interval to make one host advertise
+a bit slower that the other does.
+Both
+.Cm advbase
+and
+.Cm advskew
+are put inside CARP advertisements.
+These configurations can be done using
+.Xr ifconfig 8 ,
+or through the
+.Dv SIOCSVH
+.Xr ioctl 2 .
+.Pp
+Additionally, there are a number of global parameters which can be set using
+.Xr sysctl 8 :
+.Bl -tag -width ".Va net.inet.carp.arpbalance"
+.It Va net.inet.carp.allow
+Accept incoming
+.Nm
+packets.
+Enabled by default.
+.It Va net.inet.carp.preempt
+Allow virtual hosts to preempt each other.
+It is also used to failover
+.Nm
+interfaces as a group.
+When the option is enabled and one of the
+.Nm
+enabled physical interfaces
+goes down,
+.Cm advskew
+is changed to 240 on all
+.Nm
+interfaces.
+See also the first example.
+Disabled by default.
+.It Va net.inet.carp.log
+Value of 0 disables any logging.
+Value of 1 enables logging of bad
+.Nm
+packets.
+Values above 1 enable logging state changes of
+.Nm
+interfaces.
+Default value is 1.
+.It Va net.inet.carp.arpbalance
+Balance local traffic using ARP (see below).
+Disabled by default.
+.It Va net.inet.carp.suppress_preempt
+A read only value showing the status of preemption suppression.
+Preemption can be suppressed if link on an interface is down
+or when
+.Xr pfsync 4
+interface is not synchronized.
+Value of 0 means that preemption is not suppressed, since no
+problems are detected.
+Every problem increments suppression counter.
+.El
+.Sh ARP level load balancing
+The
+.Nm
+has limited abilities for load balancing the incoming connections
+between hosts in Ethernet network.
+For load balancing operation, one needs several CARP interfaces that
+are configured to the same IP address, but to a different VHIDs.
+Once an ARP request is received, the CARP protocol will use a hashing
+function against the source IP address in the ARP request to determine
+which VHID should this request belong to.
+If the corresponding CARP interface is in master state, the ARP request
+will be replied, otherwise it will be ignored.
+See the
+.Sx EXAMPLES
+section for a practical example of load balancing.
+.Pp
+The ARP load balancing has some limitations.
+First, ARP balancing only works on the local network segment.
+It cannot balance traffic that crosses a router, because the
+router itself will always be balanced to the same virtual host.
+Second, ARP load balancing can lead to asymmetric routing
+of incoming and outgoing traffic, and thus combining it with
+.Xr pfsync 4
+is dangerous, because this creates a race condition between
+balanced routers and a host they are serving.
+Imagine an incoming packet creating state on the first router, being
+forwarded to its destination, and destination replying faster
+than the state information is packed and synced with the second router.
+If the reply would be load balanced to second router, it will be
+dropped due to no state.
+.Sh EXAMPLES
+For firewalls and routers with multiple interfaces, it is desirable to
+failover all of the
+.Nm
+interfaces together, when one of the physical interfaces goes down.
+This is achieved by the preempt option.
+Enable it on both host A and B:
+.Pp
+.Dl sysctl net.inet.carp.preempt=1
+.Pp
+Assume that host A is the preferred master and 192.168.1.x/24 is
+configured on one physical interface and 192.168.2.y/24 on another.
+This is the setup for host A:
+.Bd -literal -offset indent
+ifconfig carp0 create
+ifconfig carp0 vhid 1 pass mekmitasdigoat 192.168.1.1/24
+ifconfig carp1 create
+ifconfig carp1 vhid 2 pass mekmitasdigoat 192.168.2.1/24
+.Ed
+.Pp
+The setup for host B is identical, but it has a higher
+.Cm advskew :
+.Bd -literal -offset indent
+ifconfig carp0 create
+ifconfig carp0 vhid 1 advskew 100 pass mekmitasdigoat 192.168.1.1/24
+ifconfig carp1 create
+ifconfig carp1 vhid 2 advskew 100 pass mekmitasdigoat 192.168.2.1/24
+.Ed
+.Pp
+Because of the preempt option, when one of the physical interfaces of
+host A fails,
+.Cm advskew
+is adjusted to 240 on all its
+.Nm
+interfaces.
+This will cause host B to preempt on both interfaces instead of
+just the failed one.
+.Pp
+In order to set up an ARP balanced virtual host, it is necessary to configure
+one virtual host for each physical host which would respond to ARP requests
+and thus handle the traffic.
+In the following example, two virtual hosts are configured on two hosts to
+provide balancing and failover for the IP address 192.168.1.10.
+.Pp
+First the
+.Nm
+interfaces on host A are configured.
+The
+.Cm advskew
+of 100 on the second virtual host means that its advertisements will be sent
+out slightly less frequently.
+.Bd -literal -offset indent
+ifconfig carp0 create
+ifconfig carp0 vhid 1 pass mekmitasdigoat 192.168.1.10/24
+ifconfig carp1 create
+ifconfig carp1 vhid 2 advskew 100 pass mekmitasdigoat 192.168.1.10/24
+.Ed
+.Pp
+The configuration for host B is identical, except the
+.Cm advskew
+is on virtual host 1 rather than virtual host 2.
+.Bd -literal -offset indent
+ifconfig carp0 create
+ifconfig carp0 vhid 1 advskew 100 pass mekmitasdigoat 192.168.1.10/24
+ifconfig carp1 create
+ifconfig carp1 vhid 2 pass mekmitasdigoat 192.168.1.10/24
+.Ed
+.Pp
+Finally, the ARP balancing feature must be enabled on both hosts:
+.Pp
+.Dl sysctl net.inet.carp.arpbalance=1
+.Pp
+When the hosts receive an ARP request for 192.168.1.10, the source IP address
+of the request is used to compute which virtual host should answer the request.
+The host which is master of the selected virtual host will reply to the
+request, the other(s) will ignore it.
+.Pp
+This way, locally connected systems will receive different ARP replies and
+subsequent IP traffic will be balanced among the hosts.
+If one of the hosts fails, the other will take over the virtual MAC address,
+and begin answering ARP requests on its behalf.
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr pfsync 4 ,
+.Xr rc.conf 5 ,
+.Xr ifconfig 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+device first appeared in
+.Ox 3.5 .
+The
+.Nm
+device was imported into
+.Fx 5.4 .
diff --git a/share/man/man4/ccd.4 b/share/man/man4/ccd.4
new file mode 100644
index 0000000..8da0e36
--- /dev/null
+++ b/share/man/man4/ccd.4
@@ -0,0 +1,287 @@
+.\" $NetBSD: ccd.4,v 1.5 1995/10/09 06:09:09 thorpej Exp $
+.\"
+.\" Copyright (c) 1994 Jason Downs.
+.\" Copyright (c) 1994, 1995 Jason R. Thorpe.
+.\" 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
+.\" by Jason Downs and Jason R. Thorpe.
+.\" 4. Neither the name of the author 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 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$
+.\"
+.Dd August 9, 1995
+.Dt CCD 4
+.Os
+.Sh NAME
+.Nm ccd
+.Nd Concatenated Disk driver
+.Sh SYNOPSIS
+.Cd "device ccd"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides the capability of combining one or more disks/partitions
+into one virtual disk.
+.Pp
+This document assumes that you are familiar with how to generate kernels,
+how to properly configure disks and devices in a kernel
+configuration file, and how to partition disks.
+.Pp
+In order to compile in support for the
+.Nm ,
+you must add a line similar
+to the following to your kernel configuration file:
+.Pp
+.Dl "device ccd # concatenated disk devices"
+.Pp
+As of the
+.Fx 3.0
+release, you do not need to
+configure your kernel with
+.Nm
+but may instead use it as a kernel loadable
+module.
+Simply running
+.Xr ccdconfig 8
+will load the module into the kernel.
+.Pp
+A
+.Nm
+may be either serially concatenated or interleaved.
+To serially
+concatenate the partitions, specify the interleave factor of 0.
+Note that mirroring may not be used with an interleave factor of 0.
+.Pp
+There is a run-time utility that is used for configuring
+.Nm Ns s .
+See
+.Xr ccdconfig 8
+for more information.
+.Ss The Interleave Factor
+If a
+.Nm
+is interleaved correctly, a
+.Dq striping
+effect is achieved, which can increase sequential read/write
+performance.
+The interleave factor is expressed in units of
+.Dv DEV_BSIZE
+(usually 512 bytes).
+For large writes, the optimum interleave factor
+is typically the size of a track, while for large reads, it is about a
+quarter of a track.
+(Note that this changes greatly depending on the
+number and speed of disks.)
+For instance, with eight 7,200 RPM drives
+on two Fast-Wide SCSI buses, this translates to about 128 for writes
+and 32 for reads.
+A larger interleave tends to work better when the
+disk is taking a multitasking load by localizing the file I/O from
+any given process onto a single disk.
+You lose sequential performance when
+you do this, but sequential performance is not usually an issue with a
+multitasking load.
+.Pp
+An interleave factor must be specified when using a mirroring configuration,
+even when you have only two disks (i.e., the layout winds up being the same
+no matter what the interleave factor).
+The interleave factor will determine
+how I/O is broken up, however, and a value 128 or greater is recommended.
+.Pp
+.Nm
+has an option for a parity disk, but does not currently implement it.
+.Pp
+The best performance is achieved if all component disks have the same
+geometry and size.
+Optimum striping cannot occur with different
+disk types.
+.Pp
+For random-access oriented workloads, such as news servers, a larger
+interleave factor (e.g., 65,536) is more desirable.
+Note that there
+is not much
+.Nm
+can do to speed up applications that are seek-time limited.
+Larger
+interleave factors will at least reduce the chance of having to seek
+two disk-heads to read one directory or a file.
+.Ss Disk Mirroring
+You can configure the
+.Nm
+to
+.Dq mirror
+any even number of disks.
+See
+.Xr ccdconfig 8
+for how to specify the necessary flags.
+For example, if you have a
+.Nm
+configuration specifying four disks, the first two disks will be mirrored with
+the second two disks.
+A write will be run to both sides of
+the mirror.
+A read will be run to either side of the mirror depending
+on what the driver believes to be most optimal.
+If the read fails,
+the driver will automatically attempt to read the same sector from the
+other side of the mirror.
+Currently
+.Nm
+uses a dual seek zone model to optimize reads for a multi-tasking load
+rather than a sequential load.
+.Pp
+In an event of a disk
+failure, you can use
+.Xr dd 1
+to recover the failed disk.
+.Pp
+Note that a one-disk
+.Nm
+is not the same as the original partition.
+In particular, this means
+if you have a file system on a two-disk mirrored
+.Nm
+and one of the disks fail, you cannot mount and use the remaining
+partition as itself; you have to configure it as a one-disk
+.Nm .
+You cannot replace a disk in a mirrored
+.Nm
+partition without first backing up the partition, then replacing the disk,
+then restoring the partition.
+.Ss Linux Compatibility
+The
+.Tn Linux
+compatibility mode does not try to read the label that
+.Tn Linux Ns '
+.Xr md 4
+driver leaves on the raw devices.
+You will have to give the order
+of devices and the interleave factor on your own.
+When in
+.Tn Linux
+compatibility mode,
+.Nm
+will convert the interleave factor from
+.Tn Linux
+terminology.
+That means you give the same interleave factor that you
+gave as chunk size in
+.Tn Linux .
+.Pp
+If you have a
+.Tn Linux
+.Xr md 4
+device in
+.Dq legacy
+mode, do not use the
+.Dv CCDF_LINUX
+flag in
+.Xr ccdconfig 8 .
+Use the
+.Dv CCDF_NO_OFFSET
+flag instead.
+In that case you have to convert
+the interleave factor on your own, usually it is
+.Tn Linux Ns '
+chunk size multiplied by two.
+.Pp
+Using a
+.Tn Linux
+RAID this way is potentially dangerous and can destroy
+the data in there.
+Since
+.Fx
+does not read the label used by
+.Tn Linux ,
+changes in
+.Tn Linux
+might invalidate the compatibility layer.
+.Pp
+However, using this is reasonably safe if you test the compatibility
+before mounting a RAID read-write for the first time.
+Just using
+.Xr ccdconfig 8
+without mounting does not write anything to the
+.Tn Linux
+RAID.
+Then you do a
+.Nm fsck.ext2fs Pq Pa ports/sysutils/e2fsprogs
+on the
+.Nm
+device using the
+.Fl n
+flag.
+You can mount the file system read-only to check files in there.
+If all this works, it is unlikely that there is a problem with
+.Nm .
+Keep in mind that even when the
+.Tn Linux
+compatibility mode in
+.Nm
+is working correctly, bugs in
+.Fx Ap s
+.Nm ex2fs
+implementation would still destroy
+your data.
+.Sh WARNINGS
+If just one (or more) of the disks in a
+.Nm
+fails, the entire
+file system will be lost unless you are mirroring the disks.
+.Pp
+If one of the disks in a mirror is lost, you should still
+be able to back up your data.
+If a write error occurs, however, data
+read from that sector may be non-deterministic.
+It may return the data
+prior to the write or it may return the data that was written.
+When a
+write error occurs, you should recover and regenerate the data as soon
+as possible.
+.Pp
+Changing the interleave or other parameters for a
+.Nm
+disk usually destroys whatever data previously existed on that disk.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ccd*"
+.It Pa /dev/ccd*
+.Nm
+device special files
+.El
+.Sh SEE ALSO
+.Xr dd 1 ,
+.Xr ccdconfig 8 ,
+.Xr config 8 ,
+.Xr disklabel 8 ,
+.Xr fsck 8 ,
+.Xr mount 8 ,
+.Xr newfs 8 ,
+.Xr vinum 8
+.Sh HISTORY
+The concatenated disk driver was originally written at the University of
+Utah.
diff --git a/share/man/man4/cd.4 b/share/man/man4/cd.4
new file mode 100644
index 0000000..19113b7
--- /dev/null
+++ b/share/man/man4/cd.4
@@ -0,0 +1,520 @@
+.\" Copyright (c) 1996
+.\" Julian Elischer <julian@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$
+.\"
+.Dd September 2, 2003
+.Dt CD 4
+.Os
+.Sh NAME
+.Nm cd
+.Nd SCSI CD-ROM driver
+.Sh SYNOPSIS
+.Cd device cd
+.Cd "options ""CHANGER_MIN_BUSY_SECONDS=3"""
+.Cd "options ""CHANGER_MAX_BUSY_SECONDS=11""
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for a
+.Tn SCSI
+.Tn CD-ROM
+(Compact Disc-Read Only Memory) drive.
+In an attempt to look like a regular disk, the
+.Nm
+driver synthesizes a partition table, with one partition covering the entire
+.Tn CD-ROM .
+It is possible to modify this partition table using
+.Xr disklabel 8 ,
+but it will only last until the
+.Tn CD-ROM
+is unmounted.
+In general the interfaces are similar to those described by
+.Xr ad 4
+and
+.Xr da 4 .
+.Pp
+As the
+.Tn SCSI
+adapter is probed during boot, the
+.Tn SCSI
+bus is scanned for devices.
+Any devices found which answer as CDROM
+(type 5) or WORM (type 4) type devices will be `attached' to the
+.Nm
+driver.
+Prior to
+.Fx 2.1 ,
+the first device found will be attached as
+.Li cd0
+the next,
+.Li cd1 ,
+etc.
+Beginning in
+.Fx 2.1
+it is possible to specify what cd unit a device should
+come on line as; refer to
+.Xr scsi 4
+for details on kernel configuration.
+.Pp
+The system utility
+.Xr disklabel 8
+may be used to read the synthesized
+disk label
+structure, which will contain correct figures for the size of the
+.Tn CD-ROM
+should that information be required.
+.Sh KERNEL CONFIGURATION
+Any number of
+.Tn CD-ROM
+devices may be attached to the system regardless of system
+configuration as all resources are dynamically allocated.
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+calls which apply to
+.Tn SCSI
+.Tn CD-ROM
+drives are defined
+in the header files
+.In sys/cdio.h
+and
+.In sys/disklabel.h .
+.Pp
+.Bl -tag -width CDIOCREADSUBCHANNEL
+.It Dv DIOCGDINFO
+.It Dv DIOCSDINFO
+.Pq Li "struct disklabel"
+Read or write the in-core copy of the disklabel for the
+drive.
+The disklabel is initialized with information
+read from the scsi inquiry commands, and should be the same as
+the information printed at boot.
+This structure is defined in
+.Xr disklabel 5 .
+.It Dv CDIOCCAPABILITY
+.Pq Li "struct ioc_capability"
+Retrieve information from the drive on what features it supports.
+The information is returned in the following structure:
+.Bd -literal -offset indent
+struct ioc_capability {
+ u_long play_function;
+#define CDDOPLAYTRK 0x00000001
+ /* Can play tracks/index */
+#define CDDOPLAYMSF 0x00000002
+ /* Can play msf to msf */
+#define CDDOPLAYBLOCKS 0x00000004
+ /* Can play range of blocks */
+#define CDDOPAUSE 0x00000100
+ /* Output can be paused */
+#define CDDORESUME 0x00000200
+ /* Output can be resumed */
+#define CDDORESET 0x00000400
+ /* Drive can be completely reset */
+#define CDDOSTART 0x00000800
+ /* Audio can be started */
+#define CDDOSTOP 0x00001000
+ /* Audio can be stopped */
+#define CDDOPITCH 0x00002000
+ /* Audio pitch can be changed */
+
+ u_long routing_function;
+#define CDREADVOLUME 0x00000001
+ /* Volume settings can be read */
+#define CDSETVOLUME 0x00000002
+ /* Volume settings can be set */
+#define CDSETMONO 0x00000100
+ /* Output can be set to mono */
+#define CDSETSTEREO 0x00000200
+ /* Output can be set to stereo (def) */
+#define CDSETLEFT 0x00000400
+ /* Output can be set to left only */
+#define CDSETRIGHT 0x00000800
+ /* Output can be set to right only */
+#define CDSETMUTE 0x00001000
+ /* Output can be muted */
+#define CDSETPATCH 0x00008000
+ /* Direct routing control allowed */
+
+ u_long special_function;
+#define CDDOEJECT 0x00000001
+ /* The tray can be opened */
+#define CDDOCLOSE 0x00000002
+ /* The tray can be closed */
+#define CDDOLOCK 0x00000004
+ /* The tray can be locked */
+#define CDREADHEADER 0x00000100
+ /* Can read Table of Contents */
+#define CDREADENTRIES 0x00000200
+ /* Can read TOC Entries */
+#define CDREADSUBQ 0x00000200
+ /* Can read Subchannel info */
+#define CDREADRW 0x00000400
+ /* Can read subcodes R-W */
+#define CDHASDEBUG 0x00004000
+ /* The tray has dynamic debugging */
+};
+.Ed
+.It Dv CDIOCPLAYTRACKS
+.Pq Li "struct ioc_play_track"
+Start audio playback given a track address and length.
+The structure is defined as follows:
+.Bd -literal -offset indent
+struct ioc_play_track
+{
+ u_char start_track;
+ u_char start_index;
+ u_char end_track;
+ u_char end_index;
+};
+.Ed
+.It Dv CDIOCPLAYBLOCKS
+.Pq Li "struct ioc_play_blocks"
+Start audio playback given a block address and length.
+The structure is defined as follows:
+.Bd -literal -offset indent
+struct ioc_play_blocks
+{
+ int blk;
+ int len;
+};
+.Ed
+.It Dv CDIOCPLAYMSF
+.Pq Li "struct ioc_play_msf"
+Start audio playback given a `minutes-seconds-frames' address and
+length.
+The structure is defined as follows:
+.Bd -literal -offset indent
+struct ioc_play_msf
+{
+ u_char start_m;
+ u_char start_s;
+ u_char start_f;
+ u_char end_m;
+ u_char end_s;
+ u_char end_f;
+};
+.Ed
+.It Dv CDIOCREADSUBCHANNEL
+.Pq Li "struct ioc_read_subchannel"
+Read information from the subchannel at the location specified by this
+structure:
+.Bd -literal -offset indent
+struct ioc_read_subchannel {
+ u_char address_format;
+#define CD_LBA_FORMAT 1
+#define CD_MSF_FORMAT 2
+ u_char data_format;
+#define CD_SUBQ_DATA 0
+#define CD_CURRENT_POSITION 1
+#define CD_MEDIA_CATALOG 2
+#define CD_TRACK_INFO 3
+ u_char track;
+ int data_len;
+ struct cd_sub_channel_info *data;
+};
+.Ed
+.It Dv CDIOREADTOCHEADER
+.Pq Li "struct ioc_toc_header"
+Return summary information about the table of contents for the mounted
+.Tn CD-ROM .
+The information is returned into the following structure:
+.Bd -literal -offset indent
+struct ioc_toc_header {
+ u_short len;
+ u_char starting_track;
+ u_char ending_track;
+};
+.Ed
+.It Dv CDIOREADTOCENTRYS
+.Pq Li "struct ioc_read_toc_entry"
+Return information from the table of contents entries mentioned.
+.Pq Yes, this command name is misspelled.
+The argument structure is defined as follows:
+.Bd -literal -offset indent
+struct ioc_read_toc_entry {
+ u_char address_format;
+ u_char starting_track;
+ u_short data_len;
+ struct cd_toc_entry *data;
+};
+.Ed
+The requested data is written into an area of size
+.Li data_len
+and pointed to by
+.Li data .
+.It Dv CDIOCSETPATCH
+.Pq Li "struct ioc_patch"
+Attach various audio channels to various output channels.
+The argument structure is defined thusly:
+.Bd -literal -offset indent
+struct ioc_patch {
+ u_char patch[4];
+ /* one for each channel */
+};
+.Ed
+.It Dv CDIOCGETVOL
+.It Dv CDIOCSETVOL
+.Pq Li "struct ioc_vol"
+Get (set) information about the volume settings of the output channels.
+The argument structure is as follows:
+.Bd -literal -offset indent
+struct ioc_vol
+{
+ u_char vol[4];
+ /* one for each channel */
+};
+.Ed
+.It Dv CDIOCSETMONO
+Patch all output channels to all source channels.
+.It Dv CDIOCSETSTEREO
+Patch left source channel to the left output channel and the right
+source channel to the right output channel.
+.It Dv CDIOCSETMUTE
+Mute output without changing the volume settings.
+.It Dv CDIOCSETLEFT
+.It Dv CDIOCSETRIGHT
+Attach both output channels to the left (right) source channel.
+.It Dv CDIOCSETDEBUG
+.It Dv CDIOCCLRDEBUG
+Turn on (off) debugging for the appropriate device.
+.It Dv CDIOCPAUSE
+.It Dv CDIOCRESUME
+Pause (resume) audio play, without resetting the location of the read-head.
+.It Dv CDIOCRESET
+Reset the drive.
+.It Dv CDIOCSTART
+.It Dv CDIOCSTOP
+Tell the drive to spin-up (-down) the
+.Tn CD-ROM .
+.It Dv CDIOCALLOW
+.It Dv CDIOCPREVENT
+Tell the drive to allow (prevent) manual ejection of the
+.Tn CD-ROM
+disc.
+Not all drives support this feature.
+.It Dv CDIOCEJECT
+Eject the
+.Tn CD-ROM .
+.It Dv CDIOCCLOSE
+Tell the drive to close its door and load the media.
+Not all drives support this feature.
+.It Dv CDIOCPITCH
+.Pq Li "struct ioc_pitch"
+For drives that support it, this command instructs the drive to play
+the audio at a faster or slower rate than normal.
+Values of
+.Li speed
+between -32767 and -1 result in slower playback; a zero value
+indicates normal speed; and values from 1 to 32767 give faster
+playback.
+Drives with less than 16 bits of resolution will silently
+ignore less-significant bits.
+The structure is defined thusly:
+.Bd -literal -offset indent
+struct ioc_pitch
+{
+ short speed;
+};
+.Ed
+.El
+.Sh NOTES
+When a
+.Tn CD-ROM
+is changed in a drive controlled by the
+.Nm
+driver, then the act of changing the media will invalidate the
+disklabel and information held within the kernel.
+To stop corruption,
+all accesses to the device will be discarded until there are no more
+open file descriptors referencing the device.
+During this period, all
+new open attempts will be rejected.
+When no more open file descriptors
+reference the device, the first next open will load a new set of
+parameters (including disklabel) for the drive.
+.Pp
+The audio code in the
+.Nm
+driver only support
+.Tn SCSI-2
+standard audio commands.
+As many
+.Tn CD-ROM
+manufacturers have not followed the standard, there are many
+.Tn CD-ROM
+drives for which audio will not work.
+Some work is planned to support
+some of the more common `broken'
+.Tn CD-ROM
+drives; however, this is not yet under way.
+.Pp
+The
+.Nm
+driver attempts to automatically determine whether the drive it is talking
+to supports 6 byte or 10 byte MODE SENSE/MODE SELECT operations.
+Many
+.Tn SCSI
+drives only support 6 byte commands, and
+.Tn ATAPI
+drives only support 10 byte commands.
+The
+.Nm
+driver first attempts to determine whether the protocol in use typically
+supports 6 byte commands by issuing a CAM Path Inquiry CCB.
+It will then default to 6 byte or 10 byte commands as appropriate.
+After that, the
+.Nm
+driver defaults to using 6 byte commands (assuming the protocol the drive
+speaks claims to support 6 byte commands), until one fails with a
+.Tn SCSI
+ILLEGAL REQUEST error.
+Then it tries the 10 byte version of the command to
+see if that works instead.
+Users can change the default via per-drive
+sysctl variables and loader tunables.
+The variable names are the same in
+both instances:
+.Pp
+.Va kern.cam.cd.%d.minimum_cmd_size
+.Pp
+Where
+.Dq %d
+is the unit number of the drive in question.
+Valid minimum command sizes
+are 6 and 10.
+Any value above 6 will be rounded to 10, and any value below
+6 will be rounded to 6.
+.Sh CHANGER OPERATION
+This driver has built-in support for LUN-based CD changers.
+A LUN-based CD
+changer is a drive that can hold two or more CDs, but only has one CD
+player mechanism.
+Each CD in the drive shows up as a separate logical unit
+on the
+.Tn SCSI
+bus.
+The
+.Nm
+driver automatically recognizes LUN-based changers, and routes commands for
+changers through an internal scheduler.
+The scheduler prevents changer
+"thrashing", which is caused by sending commands to different LUNs in the
+changer at the same time.
+.Pp
+The scheduler honors minimum and maximum time
+quanta that the driver will spend on a particular LUN.
+The minimum time
+is the guaranteed minimum amount of time that the driver will spend on a
+given LUN, even if there is no outstanding I/O for that LUN.
+The maximum
+time is the maximum amount of time the changer will spend on a LUN if there
+is outstanding I/O for another LUN.
+If there is no outstanding I/O for
+another LUN, the driver will allow indefinite access to a given LUN.
+.Pp
+The minimum and maximum time quanta are configurable via kernel options and
+also via sysctl and kernel tunable variables.
+The kernel options are:
+.Pp
+.Bl -item -compact
+.It
+.Cd "options ""CHANGER_MIN_BUSY_SECONDS=3"""
+.It
+.Cd "options ""CHANGER_MAX_BUSY_SECONDS=11"""
+.El
+.Pp
+The sysctl/kernel tunable variables are:
+.Pp
+.Bl -item -compact
+.It
+.Va kern.cam.cd.changer.min_busy_seconds
+.It
+.Va kern.cam.cd.changer.max_busy_seconds
+.El
+.Pp
+It is suggested that the user try experimenting with the minimum and
+maximum timeouts via the sysctl variables to arrive at the proper values
+for your changer.
+Once you have settled on the proper timeouts for your
+changer, you can then put them in your kernel config file.
+.Pp
+If your system does have a LUN-based changer, you may notice that the
+probe messages for the various LUNs of the changer will continue to appear
+while the boot process is going on.
+This is normal, and is caused by the
+changer scheduling code.
+.Sh FILES
+.Bl -tag -width /dev/cd[0-9][a-h] -compact
+.It Pa /dev/cd[0-9][a-h]
+raw mode
+.Tn CD-ROM
+devices
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr da 4 ,
+.Xr scsi 4 ,
+.Xr disklabel 5 ,
+.Xr disklabel 8 ,
+.Xr cd 9
+.Sh HISTORY
+This
+.Nm
+driver is based upon the
+.Nm
+driver written by Julian Elischer, which appeared in
+.Bx 386 0.1 .
+The
+CAM version of the
+.Nm
+driver was written by Kenneth Merry and first appeared in
+.Fx 3.0 .
+.Sh BUGS
+The names of the structures used for the third argument to
+.Fn ioctl
+were poorly chosen, and a number of spelling errors have survived in
+the names of the
+.Fn ioctl
+commands.
+.Pp
+There is no mechanism currently to set different minimum and maximum
+timeouts for different CD changers; the timeout values set by the kernel
+options or the sysctl variables apply to all LUN-based CD changers in the
+system.
+It is possible to implement such support, but the sysctl
+implementation at least would be rather inelegant, because of the current
+inability of the sysctl code to handle the addition of nodes after compile
+time.
+Thus, it would take one dynamically sized sysctl variable and a
+userland utility to get/set the timeout values.
+Implementation of separate
+timeouts for different CD devices in the kernel config file would likely
+require modification of
+.Xr config 8
+to support the two timeouts when hardwiring
+.Nm
+devices.
diff --git a/share/man/man4/cdce.4 b/share/man/man4/cdce.4
new file mode 100644
index 0000000..d284425
--- /dev/null
+++ b/share/man/man4/cdce.4
@@ -0,0 +1,155 @@
+.\" Copyright (c) 2004 Daniel Hartmeier
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" - Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" - 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 COPYRIGHT HOLDERS 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
+.\" COPYRIGHT HOLDERS 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.
+.\"
+.\" $NetBSD: cdce.4,v 1.4 2004/12/08 18:35:56 peter Exp $
+.\" $FreeBSD$
+.\"
+.Dd September 17, 2005
+.Dt CDCE 4
+.Os
+.Sh NAME
+.Nm cdce
+.Nd "USB Communication Device Class Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device cdce"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cdce_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB Host-to-Host (aka USB-to-USB) and
+USB-to-Ethernet bridges based on the USB Communication Device Class
+(CDC) and Ethernet subclass.
+.Pp
+The USB bridge appears as a regular network interface on both sides,
+transporting Ethernet frames.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+USB 1.x bridges support speeds of up to 12Mbps, and USB 2.0 speeds of
+up to 480Mbps.
+.Pp
+Packets are
+received and transmitted over separate USB bulk transfer endpoints.
+.Pp
+The
+.Nm
+driver does not support different media types or options.
+.Sh HARDWARE
+The following devices are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+Prolific PL-2501 Host-to-Host Bridge Controller
+.It
+Sharp Zaurus PDA
+.It
+Terayon TJ-715 DOCSIS Cable Modem
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "cdce%d: no union descriptor"
+The driver could not fetch an interface descriptor from the USB
+device.
+For a manually added USB vendor/product, the CDCE_NO_UNION flag
+can be tried to work around the missing descriptor.
+.It "cdce%d: no data interface"
+.It "cdce%d: could not read endpoint descriptor"
+.It "cdce%d: unexpected endpoint"
+.It "cdce%d: could not find data bulk in/out"
+For a manually added USB vendor/product, these errors indicate
+that the bridge is not compatible with the driver.
+.It "cdce%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, however the device failed to acknowledge the transmission
+before a timeout expired.
+.It "cdce%d: no memory for rx list -- packet dropped!"
+Memory allocation through MGETHDR or MCLGET failed, the system
+is running low on mbufs.
+.It "cdce%d: abort/close rx/tx pipe failed"
+.It "cdce%d: rx/tx list init failed"
+.It "cdce%d: open rx/tx pipe failed"
+.It "cdce%d: usb error on rx/tx"
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr intro 4 ,
+.Xr netintro 4 ,
+.Xr usb 4 ,
+.\" .Xr hostname.if 5 ,
+.Xr ifconfig 8
+.Rs
+.%T "Universal Serial Bus Class Definitions for Communication Devices"
+.%O http://www.usb.org/developers/devclass_docs/usbcdc11.pdf
+.Re
+.Rs
+.%T "Data sheet Prolific PL-2501 Host-to-Host Bridge/Network Controller"
+.%O http://tech.prolific.com.tw/visitor/fcabdl.asp?fid=20679530
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Ox 3.6 ,
+.Nx 3.0
+and
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Craig Boston Aq craig@tobuj.gank.org
+based on the
+.Xr aue 4
+driver written by
+.An Bill Paul Aq wpaul@windriver.com
+and ported to
+.Ox
+by
+.An Daniel Hartmeier Aq dhartmei@openbsd.org .
+.Sh CAVEATS
+Many USB devices notoriously fail to report their class and interfaces
+correctly.
+Undetected products might work flawlessly when their vendor and product IDs
+are added to the driver manually.
diff --git a/share/man/man4/ch.4 b/share/man/man4/ch.4
new file mode 100644
index 0000000..0db548c
--- /dev/null
+++ b/share/man/man4/ch.4
@@ -0,0 +1,353 @@
+.\" $FreeBSD$
+.\" Copyright (c) 1996
+.\" Julian Elischer <julian@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.
+.\"
+.Dd May 14, 1998
+.Dt CH 4
+.Os
+.Sh NAME
+.Nm ch
+.Nd SCSI media-changer (juke box) driver
+.Sh SYNOPSIS
+.Cd device ch
+.Cd device ch1 target 4 unit 0
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for a
+.Em SCSI
+media changer.
+It allows many slots of media to be multiplexed between
+a number of drives.
+The changer device may optionally be equipped
+with a bar code reader, which reads label information attached to
+the media.
+.Pp
+A SCSI adapter must also be separately configured into the system
+before a SCSI changer can be configured.
+.Pp
+As the SCSI adapter is probed during boot, the
+.Em SCSI
+bus is scanned for devices.
+Any devices found which answer as 'Changer'
+type devices will be 'attached' to the
+.Nm
+driver.
+In
+.Fx
+releases prior to 2.1, the first found will be attached as
+.Em ch0
+and the next,
+.Em ch1
+etc.
+Beginning in 2.1 it is possible to specify what ch unit a device should
+come on line as; refer to
+.Xr scsi 4
+for details on kernel configuration.
+.Sh KERNEL CONFIGURATION
+In configuring, if an optional
+.Ar count
+is given in the specification, that number of SCSI media changers
+are configured; Most storage for them is allocated only when found
+so a large number of configured devices is cheap.
+(once the first
+has included the driver).
+.Sh IOCTLS
+User mode programs communicate with the changer driver through a
+number of ioctls which are described below.
+Changer element addresses
+used in the communication between the kernel and the changer device are
+mapped to zero-based logical addresses.
+Element types are specified as follows:
+.Bl -tag -width CHET_MT
+.It Dv CHET_MT
+Medium transport element (picker).
+.It Dv CHET_ST
+Storage element (slot).
+.It Dv CHET_IE
+Import/export element (portal).
+.It Dv CHET_DT
+Data transfer element (drive).
+.El
+.Pp
+The following
+.Xr ioctl 2
+calls apply to the changer.
+They are defined
+in the header file
+.In sys/chio.h .
+.Pp
+.Bl -tag -width CHIOEXCHANGE
+.It Dv CHIOMOVE
+.Pq Vt "struct changer_move"
+Move a medium from one element to another
+.Pq Sy "MOVE MEDIUM"
+using the current picker.
+The source and destination elements are specified
+in a changer_move structure, which includes at least the following
+fields:
+.Bd -literal -offset indent
+u_int cm_fromtype; /* element type to move from */
+u_int cm_fromunit; /* logical unit of from element */
+u_int cm_totype; /* element type to move to */
+u_int cm_tounit; /* logical unit of to element */
+u_int cm_flags; /* misc. flags */
+.Ed
+If the
+.Dv CM_INVERT
+in the
+.Va cm_flags
+field is set, the medium
+changer is instructed to flip the medium while moving it.
+.It Dv CHIOEXCHANGE
+.Pq Vt "struct changer_exchange"
+Move the medium located in the source element to the first destination
+element, and move the medium that had been in the first destination
+element to the second destination element.
+In case of a simple
+exchange, the source and second destination elements should be the
+same.
+The current picker is used to perform the operation.
+The addresses of the affected elements is specified to the ioctl in a
+.Vt changer_exchange
+structure which includes at least the following
+fields:
+.Bd -literal -offset indent
+u_int ce_srctype; /* element type of source */
+u_int ce_srcunit; /* logical unit of source */
+u_int ce_fdsttype; /* element type of first destination */
+u_int ce_fdstunit; /* logical unit of first destination */
+u_int ce_sdsttype; /* element type of second destination */
+u_int ce_sdstunit; /* logical unit of second destination */
+u_int ce_flags; /* misc. flags */
+.Ed
+In
+.Va ce_flags ,
+.Dv CM_INVERT1
+and/or
+.Dv CM_INVERT2
+may be set
+to flip the first or second medium during the exchange operation,
+respectively.
+.Pp
+.Em This operation is untested .
+.It Dv CHIOPOSITION
+.Pq Vt "struct changer_position"
+Position the current picker in front of the specified element.
+The element is specified with a changer_position structure, which includes
+at least the following elements:
+.Bd -literal -offset indent
+u_int cp_type; /* element type */
+u_int cp_unit; /* logical unit of element */
+u_int cp_flags; /* misc. flags */
+.Ed
+The
+.Va cp_flags
+field may be set to
+.Dv CP_INVERT
+to invert the picker during the operation.
+.It Dv CHIOGPICKER
+.Pq Vt int
+Return the logical address of the current picker.
+.It Dv CHIOSPICKER
+.Pq Vt int
+Select the picker specified by the given logical address.
+.It Dv CHIOGPARAMS
+.Pq Vt "struct changer_params"
+Return the configuration parameters for the media changer.
+This ioctl
+fills the changer_params structure passed by the user with at least the
+following fields:
+.Bd -literal -offset indent
+u_int cp_npickers; /* number of pickers */
+u_int cp_nslots; /* number of slots */
+u_int cp_nportals; /* number of import/export portals */
+u_int cp_ndrives; /* number of drives */
+.Ed
+.Pp
+This call can be used by applications to query the dimensions of
+the jukebox before using the
+.Dv CHIGSTATUS
+ioctl to query the jukebox' status.
+.It Dv CHIOIELEM
+Perform the
+.Sy INITIALIZE ELEMENT STATUS
+call on the media changer device.
+This forces the media changer to update its internal status
+information with respect to loaded media.
+It also scans any barcode labels provided that it has a label reader.
+The
+.Nm
+driver's status is not affected by this call.
+.It Dv CHIOGSTATUS
+.Pq Vt "struct changer_element_status_request"
+Perform the
+.Sy READ ELEMENT STATUS
+call on the media changer device.
+This call reads the element status information of the media
+changer and converts it to an array of
+.Vt changer_element_status
+structures.
+.Pp
+With each call to
+.Dv CHIOGSTATUS ,
+the status of one or more elements of one type may be queried.
+.Pp
+The application passes a
+.Vt changer_element_status_request
+structure to the
+.Nm
+driver which contains the following fields:
+.Bd -literal -offset indent
+u_int cesr_element_type;
+u_int cesr_element_base;
+u_int cesr_element_count;
+u_int cesr_flags;
+struct changer_element_status *cesr_element_status;
+.Ed
+.Pp
+This structure is read by the driver to determine the type, logical
+base address and number of elements for which information is to be
+returned in the array of
+.Vt changer_element_status
+structures pointed to by the
+.Va cesr_element_status field .
+The application must allocate enough
+memory for
+.Va cesr_element_count
+status structures (see below).
+The
+.Va cesr_flags
+can optionally be set to
+.Dv CESR_VOLTAGS
+to indicate that volume tag (bar code) information is to be read from
+the jukebox and returned.
+.Pp
+The
+.Va cesr_element_base
+and
+.Va cesr_element_count
+fields must be valid with respect to the physical configuration of the changer.
+If they are not, the
+.Dv CHIOGSTATUS
+ioctl returns the
+.Er EINVAL
+error code.
+.Pp
+The information about the elements is returned in an array of
+.Vt changer_element_status
+structures.
+This structure include at least the following fields:
+.Bd -literal -offset indent
+u_int ces_addr; /* element address in media changer */
+u_char ces_flags; /* see CESTATUS definitions below */
+u_char ces_sensecode; /* additional sense code for element */
+u_char ces_sensequal; /* additional sense code qualifier */
+u_char ces_invert; /* invert bit */
+u_char ces_svalid; /* source address (ces_source) valid */
+u_short ces_source; /* source address of medium */
+changer_voltag_t ces_pvoltag; /* primary volume tag */
+changer_voltag_t ces_avoltag; /* alternate volume tag */
+u_char ces_idvalid; /* ces_scsi_id is valid */
+u_char ces_scsi_id; /* SCSI id of element (if ces_idvalid is nonzero) */
+u_char ces_lunvalid; /* ces_scsi_lun is valid */
+u_char ces_scsi_lun; /* SCSI lun of element (if ces_lunvalid is nonzero) */
+.Ed
+.Pp
+The
+.Va ces_addr
+field contains the address of the element in the
+coordinate system of the media changer.
+It is not used by the driver,
+and should be used for diagnostic purposes only.
+.Pp
+The following flags are defined for the
+.Va ces_flags
+field:
+.Bl -tag -width CESTATUS_IMPEXP
+.It Dv CESTATUS_FULL
+A medium is present.
+.It Dv CESTATUS_IMPEXP
+The medium has been deposited by the operator (and not by a picker).
+.It Dv CESTATUS_EXCEPT
+The element is in an exceptional state (e.g.\& invalid barcode label,
+barcode not yet scanned).
+.It Dv CESTATUS_ACCESS
+The element is accessible by the picker.
+.It Dv CESTATUS_EXENAB
+The element supports medium export.
+.It Dv CESTATUS_INENAB
+The element supports medium import.
+.El
+.Pp
+Note that not all flags are valid for all element types.
+.El
+.Sh NOTES
+This version of the
+.Nm
+driver has been tested with a DEC TZ875 (5 slot, one DLT drive)
+and a Breece Hill Q47 (60 slot, four DLT drives, barcode reader).
+.Pp
+Many of the features the
+.Nm
+driver supports are not thoroughly tested due to the fact that the
+devices available for testing do not support the necessary commands.
+This is true for alternate volume tags, media flipping, import/export
+element handling, multiple picker operation and other things.
+.Sh FILES
+.Bl -tag -width /dev/ch[0-9] -compact
+.It Pa /dev/ch[0-9]
+device entries
+.El
+.Sh DIAGNOSTICS
+If the media changer does not support features requested by the
+.Nm
+driver, it will produce both console error messages and failure return
+codes to the ioctls described here.
+.Sh SEE ALSO
+.Xr chio 1 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr sa 4
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Bx 386 0.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Jason R. Thorpe Aq thorpej@and.com
+for And Communications,
+.Pa http://www.and.com/ .
+It was added to the system by
+.An Stefan Grefen Aq grefen@goofy.zdv.uni-mainz.de
+who apparently had such a device.
+It was ported to CAM by
+.An Kenneth Merry Aq ken@FreeBSD.org .
+It was updated to support volume tags by
+.An Hans Huebner Aq hans@artcom.de .
diff --git a/share/man/man4/ciss.4 b/share/man/man4/ciss.4
new file mode 100644
index 0000000..f975707
--- /dev/null
+++ b/share/man/man4/ciss.4
@@ -0,0 +1,163 @@
+.\" $FreeBSD$
+.\" Written by Tom Rhodes
+.\" This file is in the public domain.
+.\"
+.Dd November 3, 2005
+.Dt CISS 4
+.Os
+.Sh NAME
+.Nm ciss
+.Nd Common Interface for SCSI-3 Support driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device ciss"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ciss_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver claims to provide a common interface between generic SCSI
+transports and intelligent host adapters.
+.Pp
+The
+.Nm
+driver supports
+.Em CISS
+as defined in the document entitled
+.%T "CISS Command Interface for SCSI-3 Support Open Specification, Version 1.04, Valence Number 1" ,
+dated 2000/11/27, produced by Compaq Computer Corporation.
+.Pp
+We provide a shim layer between the
+.Nm
+interface and
+.Xr CAM 4 ,
+offloading most of the queueing and being-a-disk chores onto CAM.
+Entry to the driver is via the PCI bus attachment
+.Fn ciss_probe ,
+.Fn ciss_attach ,
+etc.\& and via the CAM interface
+.Fn ciss_cam_action ,
+and
+.Fn ciss_cam_poll .
+The Compaq
+.Nm
+adapters require faked responses to get reasonable
+behavior out of them.
+In addition, the
+.Nm
+command set is by no means adequate to support the functionality
+of a RAID controller,
+and thus the supported Compaq adapters utilize portions of the
+control protocol from earlier Compaq adapter families.
+.Pp
+Currently
+.Nm
+only supports the
+.Dq simple
+transport layer over PCI.
+This interface (ab)uses the I2O register set (specifically the post
+queues) to exchange commands with the adapter.
+Other interfaces are available, but we are not supposed to know about them,
+and it is dubious whether they would provide major performance improvements
+except under extreme load.
+.Pp
+Non-disk devices (such as internal DATs and devices
+attached to the external SCSI bus) are supported as normal CAM devices
+provided that they are exported by the controller firmware and are not
+marked as being masked.
+Masked devices can be exposed by setting the
+.Va hw.ciss.expose_hidden_physical
+tunable to non-zero at boot time.
+Direct Access devices (such as disk
+drives) are only exposed as
+.Xr pass 4
+devices.
+Hot-insertion and removal of devices is supported but a bus
+rescan might be necessary.
+.Pp
+The problem which adapter freezes with the message
+.Dq ADAPTER HEARTBEAT FAILED
+might be solved by updating the firmware and/or setting the
+.Va hw.ciss.nop_message_heartbeat
+tunable to non-zero at boot time.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Compaq Smart Array 5300
+.It
+Compaq Smart Array 532
+.It
+Compaq Smart Array 5i
+.It
+HP Smart Array 5312
+.It
+HP Smart Array 6i
+.It
+HP Smart Array 641
+.It
+HP Smart Array 642
+.It
+HP Smart Array 6400
+.It
+HP Smart Array 6400 EM
+.It
+HP Smart Array E200
+.It
+HP Smart Array E200i
+.It
+HP Smart Array P212
+.It
+HP Smart Array P400
+.It
+HP Smart Array P400i
+.It
+HP Smart Array P410
+.It
+HP Smart Array P410i
+.It
+HP Smart Array P411
+.It
+HP Smart Array P600
+.It
+HP Smart Array P800
+.It
+HP Smart Array P812
+.It
+HP Modular Smart Array 20 (MSA20)
+.It
+HP Modular Smart Array 500 (MSA500)
+.El
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr pass 4 ,
+.Xr xpt 4 ,
+.Xr loader.conf 5 ,
+.Xr camcontrol 8
+.Rs
+.%T "CISS Command Interface for SCSI-3 Support Open Specification, Version 1.04, Valence Number 1"
+.%D 2000/11/27
+.%Q "Compaq Computer Corporation"
+.Re
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Mike Smith Aq msmith@FreeBSD.org .
+.Pp
+This manual page is based on his comments and was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man4/cm.4 b/share/man/man4/cm.4
new file mode 100644
index 0000000..bbeee52
--- /dev/null
+++ b/share/man/man4/cm.4
@@ -0,0 +1,173 @@
+.\"
+.\" Copyright (c) 2004 Tom Rhodes
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt CM 4
+.Os
+.Sh NAME
+.Nm cm
+.Nd "SMC Arcnet Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "device isa"
+.Cd "device cm"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cm_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn Arcnet
+.Tn ISA
+network adapters.
+.Pp
+This driver also has quirks preset in the
+.Xr device.hints 5
+file for card detection.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following
+card models:
+.Pp
+.Bl -bullet -compact
+.It
+SMC90c26
+.It
+SMC90c56
+.It
+SMC90c66 in '56 compatibility mode.
+.El
+.Sh IMPLEMENTATION NOTES
+When the
+.Va NOARP
+flag is set on the
+.Nm
+interface,
+it does not employ the address resolution protocol described in
+.Xr arp 4
+to dynamically map between Internet and Ethernet addresses on
+the local network.
+Instead it uses the least significant 8 bits of the
+.Tn IP
+address as the hardware address
+like described in
+.Tn RFC
+1051
+and
+.Tn RFC
+1201.
+.Pp
+With the
+.Dv IFF_LINK0
+flag cleared
+.Tn IP/ARP/RARP
+encoding is done according to
+.Tn RFC
+1201
+that is, with Packet Header Definition Standard header and packet type
+212 / 213.
+The
+.Tn MTU
+is normally 1500.
+The
+.Dv IFF_LINK0
+flag is cleared by default.
+.Pp
+With the
+.Dv IFF_LINK0
+flag set,
+.Tn IP
+and
+.Tn ARP
+encoding is done according to the deprecated
+.Tn RFC
+1051 encoding, that is with simple header, packet type 240 / 241,
+and the
+.Tn MTU
+is 507.
+.Pp
+When switching between the two modes, use
+.Dl ifconfig interfacename down up
+to switch the
+.Tn MTU .
+.Sh DIAGNOSTICS
+The following driver specific error messages
+may be reported:
+.Bl -diag
+.It "reset: card reset, link addr = 0x%02x (cm%d)"
+The card is being reset and a new link address assigned.
+.It "srint: restarted rx on buf cm%d"
+The rx buffer has been emptied and will be reset.
+.El
+.Sh SEE ALSO
+.Xr netintro 4 ,
+.Xr watchdog 4 ,
+.Xr device.hints 5 ,
+.Xr ifconfig 8 ,
+.Xr watchdog 8
+.Sh HISTORY
+The
+.Nm
+device was ported from
+.Nx
+by
+.An Max Khon Aq fjoe@FreeBSD.org
+and first appeared in
+.Fx 4.6 .
+This manual page first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
+The
+.Sx IMPLEMENTATION NOTES
+section was submitted by
+.An Max Khon Aq fjoe@FreeBSD.org
+and originated from
+.Nx .
+.Sh BUGS
+The
+.Nm
+driver code could do with a bit of improvement,
+it would be nice if some one could come along and take care of this.
+.Pp
+The
+.Sx IMPLEMENTATION NOTES
+section is specific to all Arcnet
+devices (see
+.Pa sys/net/if_arcsubr.c )
+and should be moved to a more generic location.
diff --git a/share/man/man4/cmx.4 b/share/man/man4/cmx.4
new file mode 100644
index 0000000..b71bf66
--- /dev/null
+++ b/share/man/man4/cmx.4
@@ -0,0 +1,120 @@
+.\"
+.\" Copyright (c) 2006-2007 Daniel Roethlisberger <daniel@roe.ch>
+.\" 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 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$
+.\"
+.Dd July 7, 2007
+.Dt CMX 4
+.Os
+.Sh NAME
+.Nm cmx
+.Nd Omnikey CardMan 4040 smartcard reader device driver
+.Sh SYNOPSIS
+.Cd device cmx
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the PCCARD based
+.Em Omnikey CardMan 4040
+smartcard reader.
+The driver provides a character device special file based
+.Em Chip/Smart Card Interface Devices (CCID)
+interface. The driver implements what the vendor calls the
+.Em Synchronious API
+onto the smartcard reader device.
+.Pp
+Reading and writing is synchronious, meaning that a call to
+.Xr write 2
+directly corresponds to a complete CCID command sent to the
+device, while the following
+.Xr read 2
+will return the complete answer from the reader. There is no
+support for partial reads or writes. There is no upper limit on
+CCID request or response sizes, but the complete CCID request
+must be sent to the driver in
+.Xr write 2
+and the complete CCID response must fit into the buffer
+supplied to
+.Xr read 2 .
+.Pp
+Non-blocking I/O,
+.Xr select 2
+and
+.Xr poll 2
+are supported and work as expected. An open file descriptor
+will always be ready for writing, but only ready for reading
+if the device indicates that it has data available.
+.Sh COMPATIBILITY
+Userland smartcard code written for the vendor's Linux drivers
+should work with the
+.Nm
+driver without modification.
+.Sh FILES
+.Bl -tag -width /usr/ports/security/openct -compact
+.It Pa /dev/cmx\fBn\fP
+Character device special file.
+.It Pa /usr/ports/security/openct
+OpenCT, a userspace smartcard daemon containing a
+.Em CCID
+driver which directly supports
+.Nm
+devices.
+.\".It Pa /usr/ports/devel/pcsc-lite
+.\"PC/SC-Lite, a userspace smartcard daemon.
+.\".It Pa /usr/ports/devel/libccid
+.\"libccid, a generic
+.\".Em CCID
+.\"driver for use by PC/SC-Lite to interface to
+.\".Nm
+.\"devices.
+.El
+.Sh SEE ALSO
+.Xr pccard 4
+.Sh HISTORY
+The
+.Nm cmx
+driver first appeared in
+.Fx 7.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Daniel Roethlisberger Aq daniel@roe.ch ,
+originally based on the Linux driver v1.1.0 by
+.An Omnikey GmbH Aq www.omnikey.com .
+Early testing and bug fixes by
+.An Marcin Cieslak Aq saper@system.pl .
+.Sh BUGS
+.An -nosplit
+The way the
+.Nm
+driver talks to the CardMan 4040 is a bit rough. Due to the
+complete lack of hardware documentation other than vendor drivers
+for other operating systems, the gory details of the device's
+I/O registers are not understood very well. There may be error
+conditions which can only be solved by physically reinserting the
+reader.
diff --git a/share/man/man4/coda.4 b/share/man/man4/coda.4
new file mode 100644
index 0000000..9fd6cbb
--- /dev/null
+++ b/share/man/man4/coda.4
@@ -0,0 +1,82 @@
+.\" Copyright (c) 2008 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 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$
+.\"
+.Dd January 21, 2008
+.Os
+.Dt CODA 4
+.Sh NAME
+.Nm coda
+.Nd Coda Distributed File System
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options CODA"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+coda_load="YES"
+.Ed
+.Pp
+To load as a kernel loadable module after boot:
+.Pp
+.Dl "kldload coda"
+.Sh DESCRIPTION
+The
+.Nm
+kernel module allows the experimental, third-party Coda distributed file
+system client to be used with
+.Fx .
+The module allows the userspace Coda client daemon, Venus, to present the
+Coda distributed file system namespace via the local
+.Pa /coda
+file system mountpoint via the
+.Pa /dev/cfs0
+special device.
+.Pp
+To use Coda, the Coda client software package must also be installed; more
+information on Coda may be found in the Coda documentation distributed with
+that package.
+.Sh SEE ALSO
+.Xr loader.conf 5 ,
+.Xr kldload 8
+.Sh HISTORY
+Support for
+.Nm
+first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson Aq rwatson@FreeBSD.org .
+.Sh BUGS
+The
+Coda distributed file system is considered experimental, and production
+deployment should occur only after careful consideration of the risks of
+deploying experimental software.
diff --git a/share/man/man4/coretemp.4 b/share/man/man4/coretemp.4
new file mode 100644
index 0000000..ce4eb36
--- /dev/null
+++ b/share/man/man4/coretemp.4
@@ -0,0 +1,74 @@
+.\"-
+.\" Copyright (c) 2007 Dag-Erling Coïdan Smørgrav
+.\" 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$
+.\"
+.Dd August 23, 2007
+.Dt CORETEMP 4
+.Os
+.Sh NAME
+.Nm coretemp
+.Nd device driver for Intel Core on-die digital thermal sensor
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device coretemp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+coretemp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the on-die digital thermal sensor present
+in Intel Core and newer CPUs.
+.Pp
+The
+.Nm
+driver reports each core's temperature through a sysctl node in the
+corresponding CPU device's sysctl tree, named
+.Va dev.cpu.%d.temperature .
+.Sh SEE ALSO
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Rui Paulo Aq rpaulo@FreeBSD.org
+as part of a Google Summer of Code project.
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
diff --git a/share/man/man4/cpuctl.4 b/share/man/man4/cpuctl.4
new file mode 100644
index 0000000..a510d14
--- /dev/null
+++ b/share/man/man4/cpuctl.4
@@ -0,0 +1,152 @@
+.\" Copyright (c) 2006-2008 Stanislav Sedov <stas@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$
+.\"
+.Dd May 31, 2008
+.Dt CPUCTL 4
+.Os
+.Sh NAME
+.Nm cpuctl
+.Nd cpuctl pseudo device
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "device cpuctl"
+.Ed
+.Pp
+Alternatively, to load the driver as a module
+at boot time, place the following in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+cpuctl_load="YES"
+.Ed
+.Sh DESCRIPTION
+The special file
+.Pa /dev/cpuctl
+presents interface to the system CPU.
+It provides functionality to retrieve
+CPUID information, read/write machine specific registers (MSR) and perform
+CPU firmware updates.
+.Pp
+For each CPU present in the system, the special file
+.Pa /dev/cpuctl%d
+with the appropriate index will be created.
+For multicore CPUs the
+special file will be created for each core.
+.Pp
+Currently, only i386 and amd64 processors are
+supported.
+.Sh IOCTL INTERFACE
+All of the supported operations are invoked using the
+.Xr ioctl 2
+system call.
+Currently, the following ioctls are defined:
+.Bl -tag -width CPUCTL_UPDATE
+.It Dv CPUCTL_RDMSR Fa cpuctl_msr_args_t *args
+.It Dv CPUCTL_WRMSR Fa cpuctl_msr_args_t *args
+Read/write CPU machine specific register.
+The
+.Vt cpuctl_msr_args_t
+structure is defined in
+.In sys/cpuctl.h
+as:
+.Pp
+.Bd -literal
+typedef struct {
+ int msr; /* MSR to read */
+ uint64_t data;
+} cpuctl_msr_args_t;
+.Ed
+.It Dv CPUCTL_CPUID Fa cpuctl_cpuid_args_t *args
+Retrieve CPUID information.
+Arguments are supplied in
+the following struct:
+.Pp
+.Bd -literal
+typedef struct {
+ int level; /* CPUID level */
+ uint32_t data[4];
+} cpuctl_cpuid_args_t;
+.Ed
+.Pp
+The
+.Va level
+field indicates the CPUID level to retrieve information for, while the
+.Va data
+field is used to store the received CPUID data.
+.It Dv CPUCTL_UPDATE cpuctl_update_args_t *args
+Update CPU firmware (microcode).
+The structure is defined in
+.In sys/cpuctl.h
+as:
+.Pp
+.Bd -literal
+typedef struct {
+ void *data;
+ size_t size;
+} cpuctl_update_args_t;
+.Ed
+.Pp
+The
+.Va data
+field should point to the firmware image of size
+.Va size .
+.El
+.Pp
+For additional information refer to
+.Pa cpuctl.h .
+.Sh RETURN VALUES
+.Bl -tag -width Er
+.It Bq Er ENXIO
+The operation requested is not supported by the device (e.g. unsupported
+architecture or the CPU was disabled).
+.It Bq Er EINVAL
+Incorrect request was supplied, or microcode image is not correct.
+.It Bq Er ENOMEM
+No physical memory was available to complete the request.
+.It Bq Er EFAULT
+The firmware image address points outside the process address space.
+.El
+.Sh FILES
+.Bl -tag -width /dev/cpuctl -compact
+.It Pa /dev/cpuctl
+.El
+.Sh SEE ALSO
+.Xr hwpmc 4 ,
+.Xr cpucontrol 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 8.0 .
+.Sh BUGS
+Yes, probably, report if any.
+.Sh AUTHORS
+The
+.Nm
+module and this manual page were written by
+.An Stanislav Sedov Aq stas@FreeBSD.org .
diff --git a/share/man/man4/cpufreq.4 b/share/man/man4/cpufreq.4
new file mode 100644
index 0000000..aa1da04
--- /dev/null
+++ b/share/man/man4/cpufreq.4
@@ -0,0 +1,306 @@
+.\" Copyright (c) 2005 Nate Lawson
+.\" 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$
+.\"
+.Dd March 3, 2006
+.Dt CPUFREQ 4
+.Os
+.Sh NAME
+.Nm cpufreq
+.Nd CPU frequency control framework
+.Sh SYNOPSIS
+.Cd "device cpufreq"
+.Pp
+.In sys/cpu.h
+.Ft int
+.Fn cpufreq_levels "device_t dev" "struct cf_level *levels" "int *count"
+.Ft int
+.Fn cpufreq_set "device_t dev" "const struct cf_level *level" "int priority"
+.Ft int
+.Fn cpufreq_get "device_t dev" "struct cf_level *level"
+.Ft int
+.Fo cpufreq_drv_settings
+.Fa "device_t dev"
+.Fa "struct cf_setting *sets"
+.Fa "int *count"
+.Fc
+.Ft int
+.Fn cpufreq_drv_type "device_t dev" "int *type"
+.Ft int
+.Fn cpufreq_drv_set "device_t dev" "const struct cf_setting *set"
+.Ft int
+.Fn cpufreq_drv_get "device_t dev" "struct cf_setting *set"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a unified kernel and user interface to CPU frequency
+control drivers.
+It combines multiple drivers offering different settings into a single
+interface of all possible levels.
+Users can access this interface directly via
+.Xr sysctl 8
+or by indicating to
+.Pa /etc/rc.d/power_profile
+that it should switch settings when the AC line state changes via
+.Xr rc.conf 5 .
+.Sh SYSCTL VARIABLES
+These settings may be overridden by kernel drivers requesting alternate
+settings.
+If this occurs, the original values will be restored once the condition
+has passed (e.g., the system has cooled sufficiently).
+If a sysctl cannot be set due to an override condition, it will return
+.Er EPERM .
+.Pp
+The frequency cannot be changed if TSC is in use as the timecounter.
+This is because the timecounter system needs to use a source that has a
+constant rate.
+The timecounter source can be changed with the
+.Pa kern.timecounter.hardware
+sysctl.
+Available modes are in
+.Pa kern.timecounter.choice
+sysctl entry.
+.Bl -tag -width indent
+.It Va dev.cpu.%d.freq
+Current active CPU frequency in MHz.
+.It Va dev.cpu.%d.freq_levels
+Currently available levels for the CPU (frequency/power usage).
+Values are in units of MHz and milliwatts.
+.It Va dev.DEVICE.%d.freq_settings
+Currently available settings for the driver (frequency/power usage).
+Values are in units of MHz and milliwatts.
+This is helpful for understanding which settings are offered by which
+driver for debugging purposes.
+.It Va debug.cpufreq.lowest
+Lowest CPU frequency in MHz to offer to users.
+This setting is also accessible via a tunable with the same name.
+This can be used to disable very low levels that may be unusable on
+some systems.
+.It Va debug.cpufreq.verbose
+Print verbose messages.
+This setting is also accessible via a tunable with the same name.
+.El
+.Sh SUPPORTED DRIVERS
+The following device drivers offer absolute frequency control via the
+.Nm
+interface.
+Usually, only one of these can be active at a time.
+.Pp
+.Bl -tag -compact -width ".Pa acpi_perf"
+.It Pa acpi_perf
+ACPI CPU performance states
+.It Pa est
+Intel Enhanced SpeedStep
+.It Pa ichss
+Intel SpeedStep for ICH
+.It Pa powernow
+AMD PowerNow!\& and Cool'n'Quiet for K7 and K8
+.It Pa smist
+Intel SMI-based SpeedStep for PIIX4
+.El
+.Pp
+The following device drivers offer relative frequency control and
+have an additive effect:
+.Pp
+.Bl -tag -compact -width ".Pa acpi_throttle"
+.It Pa acpi_throttle
+ACPI CPU throttling
+.It Pa p4tcc
+Pentium 4 Thermal Control Circuitry
+.El
+.Sh KERNEL INTERFACE
+Kernel components can query and set CPU frequencies through the
+.Nm
+kernel interface.
+This involves obtaining a
+.Nm
+device, calling
+.Fn cpufreq_levels
+to get the currently available frequency levels,
+checking the current level with
+.Fn cpufreq_get ,
+and setting a new one from the list with
+.Fn cpufreq_set .
+Each level may actually reference more than one
+.Nm
+driver but kernel components do not need to be aware of this.
+The
+.Va total_set
+element of
+.Vt "struct cf_level"
+provides a summary of the frequency and power for this level.
+Unknown or irrelevant values are set to
+.Dv CPUFREQ_VAL_UNKNOWN .
+.Pp
+The
+.Fn cpufreq_levels
+method takes a
+.Nm
+device and an empty array of
+.Fa levels .
+The
+.Fa count
+value should be set to the number of levels available and after the
+function completes, will be set to the actual number of levels returned.
+If there are more levels than
+.Fa count
+will allow, it should return
+.Er E2BIG .
+.Pp
+The
+.Fn cpufreq_get
+method takes a pointer to space to store a
+.Fa level .
+After successful completion, the output will be the current active level
+and is equal to one of the levels returned by
+.Fn cpufreq_levels .
+.Pp
+The
+.Fn cpufreq_set
+method takes a pointer a
+.Fa level
+and attempts to activate it.
+The
+.Fa priority
+(i.e.,
+.Dv CPUFREQ_PRIO_KERN )
+tells
+.Nm
+whether to override previous settings while activating this level.
+If
+.Fa priority
+is higher than the current active level, that level will be saved and
+overridden with the new level.
+If a level is already saved, the new level is set without overwriting
+the older saved level.
+If
+.Fn cpufreq_set
+is called with a
+.Dv NULL
+.Fa level ,
+the saved level will be restored.
+If there is no saved level,
+.Fn cpufreq_set
+will return
+.Er ENXIO .
+If
+.Fa priority
+is lower than the current active level's priority, this method returns
+.Er EPERM .
+.Sh DRIVER INTERFACE
+Kernel drivers offering hardware-specific CPU frequency control export
+their individual settings through the
+.Nm
+driver interface.
+This involves implementing these methods:
+.Fn cpufreq_drv_settings ,
+.Fn cpufreq_drv_type ,
+.Fn cpufreq_drv_set ,
+and
+.Fn cpufreq_drv_get .
+Additionally, the driver must attach a device as a child of a CPU
+device so that these methods can be called by the
+.Nm
+framework.
+.Pp
+The
+.Fn cpufreq_drv_settings
+method returns an array of currently available settings, each of type
+.Vt "struct cf_setting" .
+The driver should set unknown or irrelevant values to
+.Dv CPUFREQ_VAL_UNKNOWN .
+All the following elements for each setting should be returned:
+.Bd -literal
+struct cf_setting {
+ int freq; /* CPU clock in Mhz or 100ths of a percent. */
+ int volts; /* Voltage in mV. */
+ int power; /* Power consumed in mW. */
+ int lat; /* Transition latency in us. */
+ device_t dev; /* Driver providing this setting. */
+};
+.Ed
+.Pp
+On entry to this method,
+.Fa count
+contains the number of settings that can be returned.
+On successful completion, the driver sets it to the actual number of
+settings returned.
+If the driver offers more settings than
+.Fa count
+will allow, it should return
+.Er E2BIG .
+.Pp
+The
+.Fn cpufreq_drv_type
+method indicates the type of settings it offers, either
+.Dv CPUFREQ_TYPE_ABSOLUTE
+or
+.Dv CPUFREQ_TYPE_RELATIVE .
+Additionally, the driver may set the
+.Dv CPUFREQ_FLAG_INFO_ONLY
+flag if the settings it provides are information for other drivers only
+and cannot be passed to
+.Fn cpufreq_drv_set
+to activate them.
+.Pp
+The
+.Fn cpufreq_drv_set
+method takes a driver setting and makes it active.
+If the setting is invalid or not currently available, it should return
+.Er EINVAL .
+.Pp
+The
+.Fn cpufreq_drv_get
+method returns the currently-active driver setting.
+The
+.Vt "struct cf_setting"
+returned must be valid for passing to
+.Fn cpufreq_drv_set ,
+including all elements being filled out correctly.
+If the driver cannot infer the current setting
+(even by estimating it with
+.Fn cpu_est_clockrate )
+then it should set all elements to
+.Dv CPUFREQ_VAL_UNKNOWN .
+.Sh SEE ALSO
+.Xr acpi 4 ,
+.Xr powerd 8 ,
+.Xr sysctl 8
+.Sh AUTHORS
+.An Nate Lawson
+.An Bruno Ducrot
+contributed the
+.Pa powernow
+driver.
+.Sh BUGS
+The following drivers have not yet been converted to the
+.Nm
+interface:
+.Xr longrun 4 .
+.Pp
+Notification of CPU and bus frequency changes is not implemented yet.
+.Pp
+When multiple CPUs offer frequency control, they cannot be set to different
+levels and must all offer the same frequency settings.
diff --git a/share/man/man4/crypto.4 b/share/man/man4/crypto.4
new file mode 100644
index 0000000..f457f3e
--- /dev/null
+++ b/share/man/man4/crypto.4
@@ -0,0 +1,124 @@
+.\" $OpenBSD: crypto.4,v 1.4 2002/09/12 07:15:03 deraadt Exp $
+.\"
+.\" Copyright (c) 2001 Theo de Raadt
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd August 1, 2007
+.Dt CRYPTO 4
+.Os
+.Sh NAME
+.Nm crypto ,
+.Nm cryptodev
+.Nd hardware crypto access driver
+.Sh SYNOPSIS
+.Cd device crypto
+.Cd device cryptodev
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a device-independent framework to support
+cryptographic operations in the kernel.
+The
+.Nm cryptodev
+driver provides userland applications access to this support
+through the
+.Pa /dev/crypto
+device.
+This node primarily operates in an
+.Xr ioctl 2
+based model, permitting a variety of applications to query device capabilities,
+submit transactions, and get results.
+.Pp
+If
+.Ar count
+given in the specification, and is greater than 0, a maximum of one
+.Nm
+device is created.
+.Pp
+The following
+.Xr ioctl 2
+calls apply only to the
+.Nm
+devices:
+.Bl -tag -width ".Dv CIOCGSESSION"
+.It Dv CIOCGSESSION
+Setup a new crypto session for a new type of operation.
+.It Dv CIOCFSESSION
+Free a previously established session.
+.It Dv CIOCCRYPT
+Perform a crypto operation against a previously setup session.
+.El
+.Sh FEATURES
+Depending on hardware being present, the following symmetric and
+asymmetric cryptographic features are potentially available from
+.Pa /dev/crypto :
+.Pp
+.Bl -tag -width ".Dv CRYPTO_RIPEMD160_HMAC" -offset indent -compact
+.It Dv CRYPTO_DES_CBC
+.It Dv CRYPTO_3DES_CBC
+.It Dv CRYPTO_BLF_CBC
+.It Dv CRYPTO_CAMELLIA_CBC
+.It Dv CRYPTO_CAST_CBC
+.It Dv CRYPTO_SKIPJACK_CBC
+.It Dv CRYPTO_MD5_HMAC
+.It Dv CRYPTO_SHA1_HMAC
+.It Dv CRYPTO_RIPEMD160_HMAC
+.It Dv CRYPTO_MD5_KPDK
+.It Dv CRYPTO_SHA1_KPDK
+.It Dv CRYPTO_AES_CBC
+.It Dv CRYPTO_ARC4
+.It Dv CRYPTO_MD5
+.It Dv CRYPTO_SHA1
+.It Dv CRK_MOD_EXP
+.It Dv CRK_MOD_EXP_CRT
+.It Dv CRK_DSA_SIGN
+.It Dv CRK_DSA_VERIFY
+.It Dv CRK_DH_COMPUTE_KEY
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/crypto" -compact
+.It Pa /dev/crypto
+crypto access device
+.El
+.Sh SEE ALSO
+.Xr hifn 4 ,
+.Xr ipsec 4 ,
+.Xr padlock 4 ,
+.Xr safe 4 ,
+.Xr ubsec 4 ,
+.Xr geli 8 ,
+.Xr crypto 9
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 3.0 .
+The
+.Nm
+driver was imported to
+.Fx 5.0 .
diff --git a/share/man/man4/cue.4 b/share/man/man4/cue.4
new file mode 100644
index 0000000..a27653c
--- /dev/null
+++ b/share/man/man4/cue.4
@@ -0,0 +1,113 @@
+.\" Copyright (c) 1997, 1998, 1999, 2000
+.\" Bill Paul <wpaul@ee.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt CUE 4
+.Os
+.Sh NAME
+.Nm cue
+.Nd "CATC USB-EL1210A USB Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device cue"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cue_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB Ethernet adapters based on the Computer
+Access Technology Corporation's USB-EL1210A chipset.
+.Pp
+The USB-EL1210A supports a 512-bit multicast hash filter, single perfect
+filter entry for the station address and promiscuous mode.
+Packets are
+received and transmitted over separate USB bulk transfer endpoints.
+.Pp
+The CATC chipset supports only 10Mbps half-duplex mode, hence there
+are no
+.Xr ifmedia 4
+modes to select.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports CATC USB-EL1210A based USB Ethernet
+adapters including:
+.Pp
+.Bl -bullet -compact
+.It
+Belkin F5U011/F5U111
+.It
+CATC Netmate
+.It
+CATC Netmate II
+.It
+SmartBridges SmartLink
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "cue%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, however the device failed to acknowledge the transmission
+before a timeout expired.
+.It "cue%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ee.columbia.edu .
diff --git a/share/man/man4/cxgb.4 b/share/man/man4/cxgb.4
new file mode 100644
index 0000000..155df38
--- /dev/null
+++ b/share/man/man4/cxgb.4
@@ -0,0 +1,136 @@
+.\" Copyright (c) 2007-2008, Chelsio 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. Neither the name of the Chelsio Inc 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+.\"
+.\" * Other names and brands may be claimed as the property of others.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 14, 2007
+.Dt CXGB 4
+.Os
+.Sh NAME
+.Nm cxgb
+.Nd "Chelsio T3 10 Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device firmware"
+.Cd "device cxgb"
+.Ed
+.Pp
+To load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cxgb_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports Transmit/Receive checksum offload,
+Jumbo Frames, TCP segmentation offload (TSO), Large Receive Offload (LRO),
+VLAN hardware insertion / extraction, and VLAN checksum offload.
+For further hardware information, see
+.Pa http://www.chelsio.com/ .
+.Pp
+For questions related to hardware requirements,
+refer to the documentation supplied with your Chelsio T3 adapter.
+All hardware requirements listed apply to use with
+.Fx .
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+The maximum MTU size for Jumbo Frames is 9000.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports 10 Gigabit and 1 Gigabit Ethernet adapters based on the T3 and T3B chipset:
+.Pp
+.Bl -bullet -compact
+.It
+Chelsio 10GBase-CX4
+.It
+Chelsio 10GBase-LR
+.It
+Chelsio 10GBase-SR
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "cxgb%d: Unable to allocate bus resource: memory"
+A fatal initialization error has occurred.
+.It "cxgb%d: Unable to allocate bus resource: interrupt"
+A fatal initialization error has occurred.
+.It "cxgb%d: Could not find firmware image %s"
+The appropriate firmware kld module was not installed.
+This is a fatal initialization error.
+.El
+.Sh SUPPORT
+For general information and support,
+go to the Chelsio support website at:
+.Pa http://www.chelsio.com/ .
+.Pp
+If an issue is identified with the released source code on the supported kernel
+with a supported adapter, email the specific information related to the
+issue to
+.Aq support@chelsio.com .
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3
+and
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Kip Macy Aq kmacy@FreeBSD.org
+with substantial support from
+.An Scott Long Aq scottl@FreeBSD.org .
diff --git a/share/man/man4/cy.4 b/share/man/man4/cy.4
new file mode 100644
index 0000000..0797473
--- /dev/null
+++ b/share/man/man4/cy.4
@@ -0,0 +1,262 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the Systems Programming Group of the University of Utah Computer
+.\" Science Department.
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91
+.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp
+.\" from: sio.4,v 1.16 1995/06/26 06:05:30 bde Exp $
+.\" $FreeBSD$
+.\"
+.Dd May 24, 2004
+.Dt CY 4
+.Os
+.Sh NAME
+.Nm cy
+.Nd Cyclades Cyclom-Y serial driver
+.Sh SYNOPSIS
+.Pp
+For one ISA card:
+.Bd -ragged -offset indent -compact
+.Cd "device cy"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.cy.0.at="isa"
+.Cd hint.cy.0.irq="10"
+.Cd hint.cy.0.maddr="0xd4000"
+.Cd hint.cy.0.msize="0x2000"
+.Ed
+.Pp
+For two ISA cards:
+.Bd -ragged -offset indent -compact
+.Cd "device cy"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.cy.0.at="isa"
+.Cd hint.cy.0.irq="10"
+.Cd hint.cy.0.maddr="0xd4000"
+.Cd hint.cy.0.msize="0x2000"
+.Cd hint.cy.1.at="isa"
+.Cd hint.cy.1.irq="11"
+.Cd hint.cy.1.maddr="0xd6000"
+.Cd hint.cy.1.msize="0x2000"
+.Ed
+.Pp
+For PCI cards:
+.Bd -ragged -offset indent -compact
+.Cd "device cy"
+.Cd "options CY_PCI_FASTINTR"
+.Pp
+No lines are required in
+.Pa /boot/device.hints
+for PCI cards.
+.Ed
+.Pp
+Minor numbering:
+.Bd -literal -offset indent -compact
+0b\fIMMMMMMMMMMMMMMMMxxxxxxxxOLIMMMMM\fR
+ call\fBO\fRut
+ \fBL\fRock
+ \fBI\fRnitial
+ \fBMMMMMMMMMMMMMMMM MMMMMM\fRinor
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Cirrus Logic CD1400-based
+.Tn EIA
+.Tn RS-232C
+.Pf ( Tn CCITT
+.Tn V.24 )
+communications interfaces (ports) on Cyclades Cyclom-Y boards.
+Each CD1400 provides 4 ports.
+Cyclom-Y boards with various numbers of CD1400's are available.
+This driver supports up to 8 CD1400's (32 ports) per board.
+.Pp
+Input and output for each line may set independently
+to the following speeds:
+50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600,
+19200, 38400, 57600, or 115200 bps.
+Other speeds of up to 150000 are supported by the termios interface
+but not by the sgttyb compatibility interface.
+The CD1400 is not fast enough to handle speeds above 115200 bps
+effectively.
+It can transmit on a single line at slightly more than 115200 bps,
+but when 4 lines are active in both directions its limit is about
+90000 bps on each line.
+.\" XXX the following should be true for all serial drivers and
+.\" should not be repeated in the man pages for all serial drivers.
+.\" It was copied from sio.4. The only change was s/sio/cy/g.
+.Pp
+Serial ports controlled by the
+.Nm
+driver can be used for both `callin' and `callout'.
+For each port there is a callin device and a callout device.
+The minor number of the callout device is 128 higher
+than that of the corresponding callin port.
+The callin device is general purpose.
+Processes opening it normally wait for carrier
+and for the callout device to become inactive.
+The callout device is used to steal the port from
+processes waiting for carrier on the callin device.
+Processes opening it do not wait for carrier
+and put any processes waiting for carrier on the callin device into
+a deeper sleep so that they do not conflict with the callout session.
+The callout device is abused for handling programs that are supposed
+to work on general ports and need to open the port without waiting
+but are too stupid to do so.
+.Pp
+The
+.Nm
+driver also supports an initial-state and a lock-state control
+device for each of the callin and the callout "data" devices.
+The minor number of the initial-state device is 32 higher
+than that of the corresponding data device.
+The minor number of the lock-state device is 64 higher
+than that of the corresponding data device.
+The termios settings of a data device are copied
+from those of the corresponding initial-state device
+on first opens and are not inherited from previous opens.
+Use
+.Xr stty 1
+in the normal way on the initial-state devices to program
+initial termios states suitable for your setup.
+.Pp
+The lock termios state acts as flags to disable changing
+the termios state.
+E.g., to lock a flag variable such as
+CRTSCTS, use
+.Em "stty crtscts"
+on the lock-state device.
+Speeds and special characters
+may be locked by setting the corresponding value in the lock-state
+device to any nonzero value.
+.Pp
+Correct programs talking to correctly wired external devices
+work with almost arbitrary initial states and almost no locking,
+but other setups may benefit from changing some of the default
+initial state and locking the state.
+In particular, the initial states for non (POSIX) standard flags
+should be set to suit the devices attached and may need to be
+locked to prevent buggy programs from changing them.
+E.g., CRTSCTS should be locked on for devices that support
+RTS/CTS handshaking at all times and off for devices that do not
+support it at all.
+CLOCAL should be locked on for devices
+that do not support carrier.
+HUPCL may be locked off if you do not
+want to hang up for some reason.
+In general, very bad things happen
+if something is locked to the wrong state, and things should not
+be locked for devices that support more than one setting.
+The
+CLOCAL flag on callin ports should be locked off for logins
+to avoid certain security holes, but this needs to be done by
+getty if the callin port is used for anything else.
+.Ss Kernel Configuration Options
+The
+.Em CY_PCI_FASTINTR
+option should be used to avoid suboptimal interrupt handling for
+PCI Cyclades boards.
+The PCI BIOS must be configured with the
+.Nm
+interrupt not shared with any other active device
+for this option to work.
+This option is not the default because it is currently harmful in
+certain cases where it does not work.
+.Sh FILES
+.\" XXX more cloning: s/d/c/g and add a ? for the card number.
+.Bl -tag -width /dev/ttyic?? -compact
+.It Pa /dev/ttyc??
+for callin ports
+.It Pa /dev/ttyic??
+.It Pa /dev/ttylc??
+corresponding callin initial-state and lock-state devices
+.Pp
+.\" XXX more cloning: s/a/c/g. No consistency :-(.
+.It Pa /dev/cuac??
+for callout ports
+.It Pa /dev/cuaic??
+.It Pa /dev/cualc??
+corresponding callout initial-state and lock-state devices
+.El
+.Pp
+.Bl -tag -width /etc/rc.serial -compact
+.It Pa /etc/rc.serial
+examples of setting the initial-state and lock-state devices
+.El
+.Pp
+The first question mark in these device names is short for the
+card number
+(a decimal number between 0 and 65535 inclusive).
+The second question mark is short for the port number
+(a letter in the range [0-9a-v]).
+.Sh DIAGNOSTICS
+.Bl -diag
+.\" XXX back to s/sio/cy/g.
+.It cy%d: silo overflow.
+Problem in the interrupt handler.
+.El
+.Bl -diag
+.It cy%d: interrupt-level buffer overflow.
+Problem in the bottom half of the driver.
+.El
+.Bl -diag
+.It cy%d: tty-level buffer overflow.
+Problem in the application.
+Input has arrived faster than the given module could process it
+and some has been lost.
+.El
+.\" .Bl -diag
+.\" .It sio%d: reduced fifo trigger level to %d.
+.\" Attempting to avoid further silo overflows.
+.\" .El
+.Sh SEE ALSO
+.Xr stty 1 ,
+.Xr termios 4 ,
+.Xr tty 4 ,
+.Xr comcontrol 8 ,
+.Xr pstat 8
+.Sh HISTORY
+The
+.Nm
+driver is derived from the
+.Nm sio
+driver and the
+.Nx
+.Nm
+driver and is
+.Ud
+.Sh BUGS
+Serial consoles are not implemented.
diff --git a/share/man/man4/da.4 b/share/man/man4/da.4
new file mode 100644
index 0000000..2ba8096
--- /dev/null
+++ b/share/man/man4/da.4
@@ -0,0 +1,216 @@
+.\" Copyright (c) 1996
+.\" Julian Elischer <julian@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$
+.\"
+.Dd September 2, 2003
+.Dt DA 4
+.Os
+.Sh NAME
+.Nm da
+.Nd SCSI Direct Access device driver
+.Sh SYNOPSIS
+.Cd device da
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for all
+.Tn SCSI
+devices of the direct access class that are attached to the system
+through a supported
+.Tn SCSI
+Host Adapter.
+The direct access class includes disk, magneto-optical,
+and solid-state devices.
+.Pp
+A
+.Tn SCSI
+Host
+adapter must also be separately configured into the system
+before a
+.Tn SCSI
+direct access device can be configured.
+.Sh CACHE EFFECTS
+Many direct access devices are equipped with read and/or write caches.
+Parameters affecting the device's cache are stored in mode page 8,
+the caching control page.
+Mode pages can be examined and modified via the
+.Xr camcontrol 8
+utility.
+.Pp
+The read cache is used to store data from device-initiated read ahead
+operations as well as frequently used data.
+The read cache is transparent
+to the user and can be enabled without any adverse effect.
+Most devices
+with a read cache come from the factory with it enabled.
+The read cache can be disabled by setting the
+.Tn RCD
+(Read Cache Disable) bit in the caching control mode page.
+.Pp
+The write cache can greatly decrease the latency of write operations
+and allows the device to reorganize writes to increase efficiency and
+performance.
+This performance gain comes at a price.
+Should the device
+lose power while its cache contains uncommitted write operations, these
+writes will be lost.
+The effect of a loss of write transactions on
+a file system is non-deterministic and can cause corruption.
+Most
+devices age write transactions to limit vulnerability to a few transactions
+recently reported as complete, but it is none-the-less recommended that
+systems with write cache enabled devices reside on an Uninterruptible
+Power Supply (UPS).
+The
+.Nm
+device driver ensures that the cache and media are synchronized upon
+final close of the device or an unexpected shutdown (panic) event.
+This ensures that it is safe to disconnect power once the operating system
+has reported that it has halted.
+The write cache can be enabled by setting the
+.Tn WCE
+(Write Cache Enable) bit in the caching control mode page.
+.Sh TAGGED QUEUING
+The
+.Nm
+device driver will take full advantage of the SCSI feature known as tagged
+queueing.
+Tagged queueing allows the device to process multiple transactions
+concurrently, often re-ordering them to reduce the number and length of
+seeks.
+To ensure that transactions to distant portions of the media,
+which may be deferred indefinitely by servicing requests nearer the current
+head position, are completed in a timely fashion, an ordered tagged
+transaction is sent every 15 seconds during continuous device operation.
+.Sh BAD BLOCK RECOVERY
+Direct Access devices have the capability of mapping out portions of
+defective media.
+Media recovery parameters are located in mode page 1,
+the Read-Write Error Recovery mode page.
+The most important media
+remapping features are 'Auto Write Reallocation' and 'Auto Read
+Reallocation' which can be enabled via the AWRE and ARRE bits,
+respectively, of the Read-Write Error Recovery page.
+Many devices do not ship from the factory with these feature enabled.
+Mode pages can be examined and modified
+via the
+.Xr camcontrol 8
+utility.
+.Sh KERNEL CONFIGURATION
+It is only necessary to explicitly configure one
+.Nm
+device; data structures are dynamically allocated as disks are found
+on the
+.Tn SCSI
+bus.
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width 12
+.It kern.cam.da.retry_count
+.Pp
+This variable determines how many times the
+.Nm
+driver will retry a READ or WRITE command.
+This does not affect the number of retries used during probe time or for
+the
+.Nm
+driver dump routine.
+This value currently defaults to 4.
+.It kern.cam.da.default_timeout
+.Pp
+This variable determines how long the
+.Nm
+driver will wait before timing out an outstanding command.
+The units for this value are seconds, and the default is currently 60
+seconds.
+.It kern.cam.da.%d.minimum_cmd_size
+.Pp
+This variable determines what the minimum READ/WRITE CDB size is for a
+given
+.Nm
+unit.
+(The %d above denotes the unit number of the
+.Nm
+driver instance, e.g.\& 1, 2, 4, 8, etc.)
+Valid minimum command size values are 6, 10, 12 and 16 bytes.
+The default is 6 bytes.
+.Pp
+The
+.Nm
+driver issues a CAM Path Inquiry CCB at probe time to determine whether the
+protocol the device in question speaks (e.g.\& ATAPI) typically does not allow
+6 byte commands.
+If it does not, the
+.Nm
+driver will default to using at least 10 byte CDBs.
+If a 6 byte READ or WRITE fails with an ILLEGAL REQUEST error, the
+.Nm
+driver will then increase the default CDB size for the device to 10 bytes and
+retry the command.
+CDB size is always
+chosen as the smallest READ/WRITE CDB that will satisfy the specified minimum
+command size, and the LBA and length of the READ or WRITE in question.
+(e.g., a write to an LBA larger than 2^32 will require a 16 byte CDB.)
+.El
+.Sh NOTES
+If a device becomes invalidated (media is removed, device becomes unresponsive)
+the disklabel and information held within the kernel about the device will
+be invalidated.
+To avoid corruption of a newly inserted piece of media or
+a replacement device, all accesses to the device will be discarded until
+the last file descriptor referencing the old device is closed.
+During this period, all new open attempts will be rejected.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/da*" -compact
+.It Pa /dev/da*
+SCSI disk device nodes
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr ad 4 ,
+.Xr geom 4 ,
+.Xr bsdlabel 8 ,
+.Xr fdisk 8
+.Sh HISTORY
+The
+.Nm
+driver was written for the
+.Tn CAM
+.Tn SCSI
+subsystem by
+.An Justin T. Gibbs .
+Many ideas were gleaned from the
+.Nm sd
+device driver written and ported from
+.Tn Mach
+2.5
+by
+.An Julian Elischer .
diff --git a/share/man/man4/dc.4 b/share/man/man4/dc.4
new file mode 100644
index 0000000..3516245
--- /dev/null
+++ b/share/man/man4/dc.4
@@ -0,0 +1,449 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ee.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt DC 4
+.Os
+.Sh NAME
+.Nm dc
+.Nd "DEC/Intel 21143 and clone 10/100 Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device dc"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_dc_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for several PCI Fast Ethernet adapters and
+embedded controllers based on the the DEC/Intel 21143 chipset and clones.
+.Pp
+All of supported chipsets have the same general register layout, DMA
+descriptor format and method of operation.
+All of the clone chips
+are based on the 21143 design with various modifications.
+The
+21143 itself has support for 10baseT, BNC, AUI, MII and symbol
+media attachments, 10 and 100Mbps speeds in full or half duplex,
+built in NWAY autonegotiation and wake on LAN.
+The 21143 also
+offers several receive filter programming options including
+perfect filtering, inverse perfect filtering and hash table
+filtering.
+.Pp
+Some clone chips duplicate the 21143 fairly closely while others
+only maintain superficial similarities.
+Some support only MII
+media attachments.
+Others use different receiver filter programming
+mechanisms.
+At least one supports only chained DMA descriptors
+(most support both chained descriptors and contiguously allocated
+fixed size rings).
+Some chips (especially the PNIC) also have
+peculiar bugs.
+The
+.Nm
+driver does its best to provide generalized support for all
+of these chipsets in order to keep special case code to a minimum.
+.Pp
+These chips are used by many vendors which makes it
+difficult to provide a complete list of all supported cards.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.Pp
+Note: the built-in NWAY autonegotiation on the original PNIC 82c168
+chip is horribly broken and is not supported by the
+.Nm
+driver at this time (see the
+.Sx BUGS
+section for details).
+The original 82c168 appears
+on very early revisions of the LinkSys LNE100TX and Matrox FastNIC.
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Cm mediaopt
+option can also be used to enable
+.Cm full-duplex
+operation.
+Not specifying
+.Cm full-duplex
+implies
+.Cm half-duplex
+mode.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Cm mediaopt
+option can also be used to enable
+.Cm full-duplex
+operation.
+Not specifying
+.Cm full-duplex
+implies
+.Cm half-duplex
+mode.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+The interface will operate in
+half duplex mode if this media option is not specified.
+.El
+.Pp
+Note that the 100baseTX media type may not be available on certain
+Intel 21143 adapters which support 10Mbps media attachments only.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the following chipsets:
+.Pp
+.Bl -bullet -compact
+.It
+DEC/Intel 21143
+.It
+ADMtek AL981 Comet, AN985 Centaur, ADM9511 Centaur II and ADM9513
+Centaur II
+.It
+ASIX Electronics AX88140A and AX88141
+.It
+Conexant LANfinity RS7112 (miniPCI)
+.It
+Davicom DM9009, DM9100, DM9102 and DM9102A
+.It
+Lite-On 82c168 and 82c169 PNIC
+.It
+Lite-On/Macronix 82c115 PNIC II
+.It
+Macronix 98713, 98713A, 98715, 98715A, 98715AEC-C, 98725, 98727 and 98732
+.It
+Xircom X3201 (cardbus only)
+.El
+.Pp
+The
+following NICs are known to work with the
+.Nm
+driver at this time:
+.Pp
+.Bl -bullet -compact
+.It
+3Com OfficeConnect 10/100B (ADMtek AN985 Centaur-P)
+.It
+Abocom FE2500
+.It
+Accton EN1217 (98715A)
+.It
+Accton EN2242 MiniPCI
+.It
+Adico AE310TX (98715A)
+.It
+Alfa Inc GFC2204 (ASIX AX88140A)
+.It
+Built in 10Mbps only Ethernet on Compaq Presario 7900 series
+desktops (21143, non-MII)
+.It
+Built in Sun DMFE 10/100 Mbps Ethernet on Sun Netra X1 and Sun Fire V100
+(DM9102A, MII)
+.It
+Built in Ethernet on LinkSys EtherFast 10/100 Instant GigaDrive (DM9102, MII)
+.It
+CNet Pro110B (ASIX AX88140A)
+.It
+CNet Pro120A (98715A or 98713A) and CNet Pro120B (98715)
+.It
+Compex RL100-TX (98713 or 98713A)
+.It
+D-Link DFE-570TX (21143, MII, quad port)
+.It
+Digital DE500-BA 10/100 (21143, non-MII)
+.It
+ELECOM Laneed LD-CBL/TXA (ADMtek AN985)
+.It
+Hawking CB102 CardBus
+.It
+IBM EtherJet Cardbus Adapter
+.It
+Intel PRO/100 Mobile Cardbus (versions that use the X3201 chipset)
+.It
+Jaton XpressNet (Davicom DM9102)
+.It
+Kingston KNE100TX (21143, MII)
+.It
+Kingston KNE110TX (PNIC 82c169)
+.It
+LinkSys LNE100TX (PNIC 82c168, 82c169)
+.It
+LinkSys LNE100TX v2.0 (PNIC II 82c115)
+.It
+LinkSys LNE100TX v4.0/4.1 (ADMtek AN985 Centaur-P)
+.It
+Matrox FastNIC 10/100 (PNIC 82c168, 82c169)
+.It
+Melco LGY-PCI-TXL
+.It
+Microsoft MN-120 10/100 CardBus (ADMTek Centaur-C)
+.It
+Microsoft MN-130 10/100 PCI (ADMTek Centaur-P)
+.It
+NDC SOHOware SFA110A (98713A)
+.It
+NDC SOHOware SFA110A Rev B4 (98715AEC-C)
+.It
+NetGear FA310-TX Rev.\& D1, D2 or D3 (PNIC 82c169)
+.It
+Netgear FA511
+.It
+PlaneX FNW-3602-T (ADMtek AN985)
+.It
+SMC EZ Card 10/100 1233A-TX (ADMtek AN985)
+.It
+SVEC PN102-TX (98713)
+.It
+Xircom Cardbus Realport
+.It
+Xircom Cardbus Ethernet 10/100
+.It
+Xircom Cardbus Ethernet II 10/100
+.El
+.Sh NOTES
+On sparc64 the
+.Nm
+driver respects the
+.Va local-mac-address?
+system configuration variable for the built in Sun DMFE 10/100 Mbps Ethernet
+interfaces on Sun Netra X1 and Sun Fire V100.
+This system configuration variable can be set in the Open Firmware boot
+monitor using the
+.Ic setenv
+command or by
+.Xr eeprom 8 .
+If set to
+.Dq Li false
+(the default), the
+.Nm
+driver will use the system's default MAC address for both of the built in
+devices.
+If set to
+.Dq Li true ,
+the unique MAC address of each interface is used rather than the system's
+default MAC address.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "dc%d: couldn't map ports/memory"
+A fatal initialization error has occurred.
+.It "dc%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "dc%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, but the device failed to acknowledge the transmission
+before a timeout expired.
+This can happen if the device is unable
+to deliver interrupts for some reason, of if there is a problem with
+the network connection (cable or network equipment) that results in a loss
+of link.
+.It "dc%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "dc%d: TX underrun -- increasing TX threshold"
+The device generated a transmit underrun error while attempting to
+DMA and transmit a packet.
+This happens if the host is not able to
+DMA the packet data into the NIC's FIFO fast enough.
+The driver
+will dynamically increase the transmit start threshold so that
+more data must be DMAed into the FIFO before the NIC will start
+transmitting it onto the wire.
+.It "dc%d: TX underrun -- using store and forward mode"
+The device continued to generate transmit underruns even after all
+possible transmit start threshold settings had been tried, so the
+driver programmed the chip for store and forward mode.
+In this mode,
+the NIC will not begin transmission until the entire packet has been
+transfered into its FIFO memory.
+.It "dc%d: chip is in D3 power state -- setting to D0"
+This message applies only to adapters which support power
+management.
+Some operating systems place the controller in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The controller loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform a second
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr eeprom 8 ,
+.Xr ifconfig 8
+.Rs
+.%T ADMtek AL981, AL983 and AL985 data sheets
+.%O http://www.admtek.com.tw
+.Re
+.Rs
+.%T ASIX Electronics AX88140A and AX88141 data sheets
+.%O http://www.asix.com.tw
+.Re
+.Rs
+.%T Davicom DM9102 data sheet
+.%O http://www.davicom8.com
+.Re
+.Rs
+.%T Intel 21143 Hardware Reference Manual
+.%O http://developer.intel.com
+.Re
+.Rs
+.%T Macronix 98713/A, 98715/A and 98725 data sheets
+.%O http://www.macronix.com
+.Re
+.Rs
+.%T Macronix 98713/A and 98715/A app notes
+.%O http://www.macronix.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ee.columbia.edu .
+.Sh BUGS
+The Macronix application notes claim that in order to put the
+chips in normal operation, the driver must write a certain magic
+number into the CSR16 register.
+The numbers are documented in
+the app notes, but the exact meaning of the bits is not.
+.Pp
+The 98713A seems to have a problem with 10Mbps full duplex mode.
+The transmitter works but the receiver tends to produce many
+unexplained errors leading to very poor overall performance.
+The
+98715A does not exhibit this problem.
+All other modes on the
+98713A seem to work correctly.
+.Pp
+The original 82c168 PNIC chip has built in NWAY support which is
+used on certain early LinkSys LNE100TX and Matrox FastNIC cards,
+however it is horribly broken and difficult to use reliably.
+Consequently, autonegotiation is not currently supported for this
+chipset: the driver defaults the NIC to 10baseT half duplex, and it is
+up to the operator to manually select a different mode if necessary.
+(Later cards use an external MII transceiver to implement NWAY
+autonegotiation and work correctly.)
+.Pp
+The
+.Nm
+driver programs 82c168 and 82c169 PNIC chips to use the store and
+forward setting for the transmit start threshold by default.
+This
+is to work around problems with some NIC/PCI bus combinations where
+the PNIC can transmit corrupt frames when operating at 100Mbps,
+probably due to PCI DMA burst transfer errors.
+.Pp
+The 82c168 and 82c169 PNIC chips also have a receiver bug that
+sometimes manifests during periods of heavy receive and transmit
+activity, where the chip will improperly DMA received frames to
+the host.
+The chips appear to upload several kilobytes of garbage
+data along with the received frame data, dirtying several RX buffers
+instead of just the expected one.
+The
+.Nm
+driver detects this condition and will salvage the frame; however,
+it incurs a serious performance penalty in the process.
+.Pp
+The PNIC chips also sometimes generate a transmit underrun error when
+the driver attempts to download the receiver filter setup frame, which
+can result in the receive filter being incorrectly programmed.
+The
+.Nm
+driver will watch for this condition and requeue the setup frame until
+it is transfered successfully.
+.Pp
+The ADMtek AL981 chip (and possibly the AN985 as well) has been observed
+to sometimes wedge on transmit: this appears to happen when the driver
+queues a sequence of frames which cause it to wrap from the end of the
+transmit descriptor ring back to the beginning.
+The
+.Nm
+driver attempts to avoid this condition by not queuing any frames past
+the end of the transmit ring during a single invocation of the
+.Fn dc_start
+routine.
+This workaround has a negligible impact on transmit performance.
diff --git a/share/man/man4/dcons.4 b/share/man/man4/dcons.4
new file mode 100644
index 0000000..fffcdf4
--- /dev/null
+++ b/share/man/man4/dcons.4
@@ -0,0 +1,125 @@
+.\" Copyright (c) 2003 Hidetoshi Shimokawa
+.\" 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$
+.\"
+.Dd January 26, 2008
+.Dt DCONS 4
+.Os
+.Sh NAME
+.Nm dcons
+.Nd dumb console device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options GDB"
+.Cd "device firewire"
+.Cd "device dcons"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time,
+place the following line in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options GDB"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -ragged -offset indent
+dcons_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device is a simple console device which just reads from and writes to
+an allocated buffer for input and output respectively.
+It is of no use by itself and it is supposed that the buffer is accessed
+via a bus like
+.Xr firewire 4
+or
+.Xr kvm 3
+for interaction.
+.Pp
+The buffer consists of 4 channels.
+There are 2 ports, one for the console TTY and another is GDB port,
+then each port has an input channel and an output channel.
+.Sh FILES
+.Bl -tag -width indent -compact
+.It Pa /dev/dcons
+.It Pa /etc/ttys
+.El
+.Sh EXAMPLES
+If you want to run
+.Xr getty 8
+on
+.Nm ,
+insert the following line into
+.Xr ttys 5
+and send a
+.Dv HUP
+signal to
+.Xr init 8
+using
+.Xr kill 1 .
+.Bd -literal -offset indent
+dcons "/usr/libexec/getty std.9600" vt100 on secure
+.Ed
+.Pp
+Once the
+.Xr fwohci 4
+device is initialized to allow physical access,
+the buffer can be accessed from another host via a
+.Xr firewire 4
+bus using the
+.Xr dconschat 8
+application.
+See
+.Xr dconschat 8
+for more details.
+.Pp
+If you want to use
+.Xr dcons 4
+as a
+.Xr gdb 1
+port, add the following line into
+.Xr loader.conf 5
+.Bd -literal -offset indent
+dcons_gdb="1"
+.Ed
+.Sh SEE ALSO
+.Xr dcons_crom 4 ,
+.Xr ddb 4 ,
+.Xr firewire 4 ,
+.Xr fwohci 4 ,
+.Xr gdb 4 ,
+.Xr ttys 5 ,
+.Xr conscontrol 8 ,
+.Xr dconschat 8 ,
+.Xr fwcontrol 8
+.Sh AUTHORS
+.An Hidetoshi Shimokawa Aq simokawa@FreeBSD.org
+.Sh BUGS
+This driver is
+.Ud .
diff --git a/share/man/man4/dcons_crom.4 b/share/man/man4/dcons_crom.4
new file mode 100644
index 0000000..b9c5ca0
--- /dev/null
+++ b/share/man/man4/dcons_crom.4
@@ -0,0 +1,61 @@
+.\" Copyright (c) 2003 Hidetoshi Shimokawa
+.\" 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$
+.\"
+.Dd June 16, 2003
+.Dt DCONS_CROM 4
+.Os
+.Sh NAME
+.Nm dcons_crom
+.Nd Configuration ROM stub for
+.Xr dcons 4
+.Sh SYNOPSIS
+.Cd device dcons_crom
+.Cd device dcons
+.Cd device firewire
+.Sh DESCRIPTION
+The
+.Nm
+exposes the buffer address of
+.Xr dcons 4
+through the Configuration ROM of
+.Xr firewire 4 .
+This address is supposed to be used by
+.Xr dconschat 8 .
+.Sh SEE ALSO
+.Xr dcons 4 ,
+.Xr firewire 4 ,
+.Xr fwohci 4 ,
+.Xr dconschat 8 ,
+.Xr fwcontrol 8
+.Sh AUTHORS
+.An Hidetoshi Shimokawa Aq simokawa@FreeBSD.org
+.Sh BUGS
+If you load
+.Pa dcons_crom.ko
+manually after the system is booted, you may
+have to initiate a bus reset using
+.Dq Nm fwcontrol Fl r
+to update the Configuration ROM.
diff --git a/share/man/man4/ddb.4 b/share/man/man4/ddb.4
new file mode 100644
index 0000000..89bfcc4
--- /dev/null
+++ b/share/man/man4/ddb.4
@@ -0,0 +1,1455 @@
+.\"
+.\" Mach Operating System
+.\" Copyright (c) 1991,1990 Carnegie Mellon University
+.\" Copyright (c) 2007 Robert N. M. Watson
+.\" All Rights Reserved.
+.\"
+.\" Permission to use, copy, modify and distribute this software and its
+.\" documentation is hereby granted, provided that both the copyright
+.\" notice and this permission notice appear in all copies of the
+.\" software, derivative works or modified versions, and any portions
+.\" thereof, and that both notices appear in supporting documentation.
+.\"
+.\" CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
+.\" CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
+.\" ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
+.\"
+.\" Carnegie Mellon requests users of this software to return to
+.\"
+.\" Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
+.\" School of Computer Science
+.\" Carnegie Mellon University
+.\" Pittsburgh PA 15213-3890
+.\"
+.\" any improvements or extensions that they make and grant Carnegie Mellon
+.\" the rights to redistribute these changes.
+.\"
+.\" changed a \# to #, since groff choked on it.
+.\"
+.\" HISTORY
+.\" ddb.4,v
+.\" Revision 1.1 1993/07/15 18:41:02 brezak
+.\" Man page for DDB
+.\"
+.\" Revision 2.6 92/04/08 08:52:57 rpd
+.\" Changes from OSF.
+.\" [92/01/17 14:19:22 jsb]
+.\" Changes for OSF debugger modifications.
+.\" [91/12/12 tak]
+.\"
+.\" Revision 2.5 91/06/25 13:50:22 rpd
+.\" Added some watchpoint explanation.
+.\" [91/06/25 rpd]
+.\"
+.\" Revision 2.4 91/06/17 15:47:31 jsb
+.\" Added documentation for continue/c, match, search, and watchpoints.
+.\" I've not actually explained what a watchpoint is; maybe Rich can
+.\" do that (hint, hint).
+.\" [91/06/17 10:58:08 jsb]
+.\"
+.\" Revision 2.3 91/05/14 17:04:23 mrt
+.\" Correcting copyright
+.\"
+.\" Revision 2.2 91/02/14 14:10:06 mrt
+.\" Changed to new Mach copyright
+.\" [91/02/12 18:10:12 mrt]
+.\"
+.\" Revision 2.2 90/08/30 14:23:15 dbg
+.\" Created.
+.\" [90/08/30 dbg]
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 29, 2008
+.Dt DDB 4
+.Os
+.Sh NAME
+.Nm ddb
+.Nd interactive kernel debugger
+.Sh SYNOPSIS
+In order to enable kernel debugging facilities include:
+.Bd -ragged -offset indent
+.Cd options KDB
+.Cd options DDB
+.Ed
+.Pp
+To prevent activation of the debugger on kernel
+.Xr panic 9 :
+.Bd -ragged -offset indent
+.Cd options KDB_UNATTENDED
+.Ed
+.Pp
+In order to print a stack trace of the current thread on the console
+for a panic:
+.Bd -ragged -offset indent
+.Cd options KDB_TRACE
+.Ed
+.Pp
+To print the numerical value of symbols in addition to the symbolic
+representation, define:
+.Bd -ragged -offset indent
+.Cd options DDB_NUMSYM
+.Ed
+.Pp
+To enable the
+.Xr gdb 1
+backend, so that remote debugging with
+.Xr kgdb 1
+is possible, include:
+.Bd -ragged -offset indent
+.Cd options GDB
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+kernel debugger is an interactive debugger with a syntax inspired by
+.Xr gdb 1 .
+If linked into the running kernel,
+it can be invoked locally with the
+.Ql debug
+.Xr keymap 5
+action.
+The debugger is also invoked on kernel
+.Xr panic 9
+if the
+.Va debug.debugger_on_panic
+.Xr sysctl 8
+MIB variable is set non-zero,
+which is the default
+unless the
+.Dv KDB_UNATTENDED
+option is specified.
+.Pp
+The current location is called
+.Va dot .
+The
+.Va dot
+is displayed with
+a hexadecimal format at a prompt.
+The commands
+.Ic examine
+and
+.Ic write
+update
+.Va dot
+to the address of the last line
+examined or the last location modified, and set
+.Va next
+to the address of
+the next location to be examined or changed.
+Other commands do not change
+.Va dot ,
+and set
+.Va next
+to be the same as
+.Va dot .
+.Pp
+The general command syntax is:
+.Ar command Ns Op Li / Ns Ar modifier
+.Ar address Ns Op Li , Ns Ar count
+.Pp
+A blank line repeats the previous command from the address
+.Va next
+with
+count 1 and no modifiers.
+Specifying
+.Ar address
+sets
+.Va dot
+to the address.
+Omitting
+.Ar address
+uses
+.Va dot .
+A missing
+.Ar count
+is taken
+to be 1 for printing commands or infinity for stack traces.
+.Pp
+The
+.Nm
+debugger has a pager feature (like the
+.Xr more 1
+command)
+for the output.
+If an output line exceeds the number set in the
+.Va lines
+variable, it displays
+.Dq Li --More--
+and waits for a response.
+The valid responses for it are:
+.Pp
+.Bl -tag -compact -width ".Li SPC"
+.It Li SPC
+one more page
+.It Li RET
+one more line
+.It Li q
+abort the current command, and return to the command input mode
+.El
+.Pp
+Finally,
+.Nm
+provides a small (currently 10 items) command history, and offers
+simple
+.Nm emacs Ns -style
+command line editing capabilities.
+In addition to
+the
+.Nm emacs
+control keys, the usual
+.Tn ANSI
+arrow keys may be used to
+browse through the history buffer, and move the cursor within the
+current line.
+.Sh COMMANDS
+.Bl -tag -width indent -compact
+.It Ic examine
+.It Ic x
+Display the addressed locations according to the formats in the modifier.
+Multiple modifier formats display multiple locations.
+If no format is specified, the last format specified for this command
+is used.
+.Pp
+The format characters are:
+.Bl -tag -compact -width indent
+.It Cm b
+look at by bytes (8 bits)
+.It Cm h
+look at by half words (16 bits)
+.It Cm l
+look at by long words (32 bits)
+.It Cm a
+print the location being displayed
+.It Cm A
+print the location with a line number if possible
+.It Cm x
+display in unsigned hex
+.It Cm z
+display in signed hex
+.It Cm o
+display in unsigned octal
+.It Cm d
+display in signed decimal
+.It Cm u
+display in unsigned decimal
+.It Cm r
+display in current radix, signed
+.It Cm c
+display low 8 bits as a character.
+Non-printing characters are displayed as an octal escape code (e.g.,
+.Ql \e000 ) .
+.It Cm s
+display the null-terminated string at the location.
+Non-printing characters are displayed as octal escapes.
+.It Cm m
+display in unsigned hex with character dump at the end of each line.
+The location is also displayed in hex at the beginning of each line.
+.It Cm i
+display as an instruction
+.It Cm I
+display as an instruction with possible alternate formats depending on the
+machine:
+.Bl -tag -width ".Tn powerpc" -compact
+.It Tn amd64
+No alternate format.
+.It Tn i386
+No alternate format.
+.It Tn ia64
+No alternate format.
+.It Tn powerpc
+No alternate format.
+.It Tn sparc64
+No alternate format.
+.El
+.It Cm S
+display a symbol name for the pointer stored at the address
+.El
+.Pp
+.It Ic xf
+Examine forward:
+execute an
+.Ic examine
+command with the last specified parameters to it
+except that the next address displayed by it is used as the start address.
+.Pp
+.It Ic xb
+Examine backward:
+execute an
+.Ic examine
+command with the last specified parameters to it
+except that the last start address subtracted by the size displayed by it
+is used as the start address.
+.Pp
+.It Ic print Ns Op Li / Ns Cm acdoruxz
+.It Ic p Ns Op Li / Ns Cm acdoruxz
+Print
+.Ar addr Ns s
+according to the modifier character (as described above for
+.Cm examine ) .
+Valid formats are:
+.Cm a , x , z , o , d , u , r ,
+and
+.Cm c .
+If no modifier is specified, the last one specified to it is used.
+The argument
+.Ar addr
+can be a string, in which case it is printed as it is.
+For example:
+.Bd -literal -offset indent
+print/x "eax = " $eax "\enecx = " $ecx "\en"
+.Ed
+.Pp
+will print like:
+.Bd -literal -offset indent
+eax = xxxxxx
+ecx = yyyyyy
+.Ed
+.Pp
+.It Xo
+.Ic write Ns Op Li / Ns Cm bhl
+.Ar addr expr1 Op Ar expr2 ...
+.Xc
+.It Xo
+.Ic w Ns Op Li / Ns Cm bhl
+.Ar addr expr1 Op Ar expr2 ...
+.Xc
+Write the expressions specified after
+.Ar addr
+on the command line at succeeding locations starting with
+.Ar addr .
+The write unit size can be specified in the modifier with a letter
+.Cm b
+(byte),
+.Cm h
+(half word) or
+.Cm l
+(long word) respectively.
+If omitted,
+long word is assumed.
+.Pp
+.Sy Warning :
+since there is no delimiter between expressions, strange
+things may happen.
+It is best to enclose each expression in parentheses.
+.Pp
+.It Ic set Li $ Ns Ar variable Oo Li = Oc Ar expr
+Set the named variable or register with the value of
+.Ar expr .
+Valid variable names are described below.
+.Pp
+.It Ic break Ns Op Li / Ns Cm u
+.It Ic b Ns Op Li / Ns Cm u
+Set a break point at
+.Ar addr .
+If
+.Ar count
+is supplied, continues
+.Ar count
+\- 1 times before stopping at the
+break point.
+If the break point is set, a break point number is
+printed with
+.Ql # .
+This number can be used in deleting the break point
+or adding conditions to it.
+.Pp
+If the
+.Cm u
+modifier is specified, this command sets a break point in user
+address space.
+Without the
+.Cm u
+option, the address is considered to be in the kernel
+space, and a wrong space address is rejected with an error message.
+This modifier can be used only if it is supported by machine dependent
+routines.
+.Pp
+.Sy Warning :
+If a user text is shadowed by a normal user space debugger,
+user space break points may not work correctly.
+Setting a break
+point at the low-level code paths may also cause strange behavior.
+.Pp
+.It Ic delete Ar addr
+.It Ic d Ar addr
+.It Ic delete Li # Ns Ar number
+.It Ic d Li # Ns Ar number
+Delete the break point.
+The target break point can be specified by a
+break point number with
+.Ql # ,
+or by using the same
+.Ar addr
+specified in the original
+.Ic break
+command.
+.Pp
+.It Ic watch Ar addr Ns Li , Ns Ar size
+Set a watchpoint for a region.
+Execution stops when an attempt to modify the region occurs.
+The
+.Ar size
+argument defaults to 4.
+If you specify a wrong space address, the request is rejected
+with an error message.
+.Pp
+.Sy Warning :
+Attempts to watch wired kernel memory
+may cause unrecoverable error in some systems such as i386.
+Watchpoints on user addresses work best.
+.Pp
+.It Ic hwatch Ar addr Ns Li , Ns Ar size
+Set a hardware watchpoint for a region if supported by the
+architecture.
+Execution stops when an attempt to modify the region occurs.
+The
+.Ar size
+argument defaults to 4.
+.Pp
+.Sy Warning :
+The hardware debug facilities do not have a concept of separate
+address spaces like the watch command does.
+Use
+.Ic hwatch
+for setting watchpoints on kernel address locations only, and avoid
+its use on user mode address spaces.
+.Pp
+.It Ic dhwatch Ar addr Ns Li , Ns Ar size
+Delete specified hardware watchpoint.
+.Pp
+.It Ic step Ns Op Li / Ns Cm p
+.It Ic s Ns Op Li / Ns Cm p
+Single step
+.Ar count
+times (the comma is a mandatory part of the syntax).
+If the
+.Cm p
+modifier is specified, print each instruction at each step.
+Otherwise, only print the last instruction.
+.Pp
+.Sy Warning :
+depending on machine type, it may not be possible to
+single-step through some low-level code paths or user space code.
+On machines with software-emulated single-stepping (e.g., pmax),
+stepping through code executed by interrupt handlers will probably
+do the wrong thing.
+.Pp
+.It Ic continue Ns Op Li / Ns Cm c
+.It Ic c Ns Op Li / Ns Cm c
+Continue execution until a breakpoint or watchpoint.
+If the
+.Cm c
+modifier is specified, count instructions while executing.
+Some machines (e.g., pmax) also count loads and stores.
+.Pp
+.Sy Warning :
+when counting, the debugger is really silently single-stepping.
+This means that single-stepping on low-level code may cause strange
+behavior.
+.Pp
+.It Ic until Ns Op Li / Ns Cm p
+Stop at the next call or return instruction.
+If the
+.Cm p
+modifier is specified, print the call nesting depth and the
+cumulative instruction count at each call or return.
+Otherwise,
+only print when the matching return is hit.
+.Pp
+.It Ic next Ns Op Li / Ns Cm p
+.It Ic match Ns Op Li / Ns Cm p
+Stop at the matching return instruction.
+If the
+.Cm p
+modifier is specified, print the call nesting depth and the
+cumulative instruction count at each call or return.
+Otherwise, only print when the matching return is hit.
+.Pp
+.It Xo
+.Ic trace Ns Op Li / Ns Cm u
+.Op Ar pid | tid
+.Op Li , Ns Ar count
+.Xc
+.It Xo
+.Ic t Ns Op Li / Ns Cm u
+.Op Ar pid | tid
+.Op Li , Ns Ar count
+.Xc
+.It Xo
+.Ic where Ns Op Li / Ns Cm u
+.Op Ar pid | tid
+.Op Li , Ns Ar count
+.Xc
+.It Xo
+.Ic bt Ns Op Li / Ns Cm u
+.Op Ar pid | tid
+.Op Li , Ns Ar count
+.Xc
+Stack trace.
+The
+.Cm u
+option traces user space; if omitted,
+.Ic trace
+only traces
+kernel space.
+The optional argument
+.Ar count
+is the number of frames to be traced.
+If
+.Ar count
+is omitted, all frames are printed.
+.Pp
+.Sy Warning :
+User space stack trace is valid
+only if the machine dependent code supports it.
+.Pp
+.It Xo
+.Ic search Ns Op Li / Ns Cm bhl
+.Ar addr
+.Ar value
+.Op Ar mask
+.Op Li , Ns Ar count
+.Xc
+Search memory for
+.Ar value .
+This command might fail in interesting
+ways if it does not find the searched-for value.
+This is because
+.Nm
+does not always recover from touching bad memory.
+The optional
+.Ar count
+argument limits the search.
+.\"
+.Pp
+.It Ic show Cm all procs Ns Op Li / Ns Cm m
+.It Ic ps Ns Op Li / Ns Cm m
+Display all process information.
+The process information may not be shown if it is not
+supported in the machine, or the bottom of the stack of the
+target process is not in the main memory at that time.
+The
+.Cm m
+modifier will alter the display to show VM map
+addresses for the process and not show other information.
+.\"
+.Pp
+.It Ic show Cm all ttys
+Show all TTY's within the system.
+Output is similar to
+.Xr pstat 8 ,
+but also includes the address of the TTY structure.
+.\"
+.Pp
+.It Ic show Cm allchains
+Show the same information like "show lockchain" does, but
+for every thread in the system.
+.\"
+.Pp
+.It Ic show Cm alllocks
+Show all locks that are currently held.
+This command is only available if
+.Xr witness 4
+is included in the kernel.
+.\"
+.Pp
+.It Ic show Cm allpcpu
+The same as "show pcpu", but for every CPU present in the system.
+.\"
+.Pp
+.It Ic show Cm allrman
+Show information related with resource management, including
+interrupt request lines, DMA request lines, I/O ports and I/O memory
+addresses.
+.\"
+.Pp
+.It Ic show Cm apic
+Dump data about APIC IDT vector mappings.
+.\"
+.Pp
+.It Ic show Cm breaks
+Show breakpoints set with the "break" command.
+.\"
+.Pp
+.It Ic show Cm buffer
+Show buffer structure of
+.Vt struct buf
+type.
+Such a structure is used within the
+.Fx
+kernel for the I/O subsystem
+implementation.
+For an exact interpretation of the output, please see the
+.Pa sys/buf.h
+header file.
+.\"
+.Pp
+.It Ic show Cm cbstat
+Show brief information about the TTY subsystem.
+.\"
+.Pp
+.It Ic show Cm conifhk
+Lists hooks currently waiting for completion in
+run_interrupt_driven_config_hooks().
+.\"
+.Pp
+.It Ic show Cm cpusets
+Print numbered root and assigned CPU affinity sets.
+See
+.Xr cpuset 2
+for more details.
+.\"
+.Pp
+.It Ic show Cm cyrixreg
+Show registers specific to the Cyrix processor.
+.\"
+.Pp
+.It Ic show Cm domain Ar addr
+Print protocol domain structure
+.Vt struct domain
+at address
+.Ar addr .
+See the
+.Pa sys/domain.h
+header file for more details on the exact meaning of the structure fields.
+.\"
+.Pp
+.It Ic show Cm ffs Op Ar addr
+Show brief information about ffs mount at the address
+.Ar addr ,
+if argument is given.
+Otherwise, provides the summary about each ffs mount.
+.\"
+.Pp
+.It Ic show Cm file Ar addr
+Show information about the file structure
+.Vt struct file
+present at address
+.Ar addr .
+.\"
+.Pp
+.It Ic show Cm files
+Show information about every file structure in the system.
+.\"
+.Pp
+.It Ic show Cm freepages
+Show the number of physical pages in each of the free lists.
+.\"
+.Pp
+.It Ic show Cm geom Op Ar addr
+If the
+.Ar addr
+argument is not given, displays the entire GEOM topology.
+If
+.Ar addr
+is given, displays details about the given GEOM object (class, geom,
+provider or consumer).
+.\"
+.Pp
+.It Ic show Cm idt
+Show IDT layout.
+The first column specifies the IDT vector.
+The second one is the name of the interrupt/trap handler.
+Those functions are machine dependent.
+.\"
+.Pp
+.It Ic show Cm inodedeps Op Ar addr
+Show brief information about each inodedep structure.
+If
+.Ar addr
+is given, only inodedeps belonging to the fs located at the
+supplied address are shown.
+.\"
+.Pp
+.It Ic show Cm inpcb Ar addr
+Show information on IP Control Block
+.Vt struct in_pcb
+present at
+.Ar addr .
+.\"
+.Pp
+.It Ic show Cm intr
+Dump information about interrupt handlers.
+.\"
+.Pp
+.It Ic show Cm intrcnt
+Dump the interrupt statistics.
+.\"
+.Pp
+.It Ic show Cm irqs
+Show interrupt lines and their respective kernel threads.
+.\"
+.Pp
+.It Ic show Cm jails
+Show the list of
+.Xr jail 8
+instances.
+In addition to what
+.Xr jls 8
+shows, also list kernel internal details.
+.\"
+.Pp
+.It Ic show Cm lapic
+Show information from the local APIC registers for this CPU.
+.\"
+.Pp
+.It Ic show Cm lock Ar addr
+Show lock structure.
+The output format is as follows:
+.Bl -tag -offset 0 -width "flags"
+.It Ic class:
+Class of the lock.
+Possible types include
+.Xr mutex 9 ,
+.Xr rmlock 9 ,
+.Xr rwlock 9 ,
+.Xr sx 9 .
+.It Ic name:
+Name of the lock.
+.It Ic flags:
+Flags passed to the lock initialization function.
+For exact possibilities see manual pages of possible lock types.
+.It Ic state:
+Current state of a lock.
+As well as
+.Ic flags
+it's lock-specific.
+.It Ic owner:
+Lock owner.
+.El
+.\"
+.Pp
+.It Ic show Cm lockchain Ar addr
+Show all threads a particular thread at address
+.Ar addr
+is waiting on based on non-sleepable and non-spin locks.
+.\"
+.Pp
+.It Ic show Cm lockedbufs
+Show the same information as "show buf", but for every locked
+.Vt struct buf
+object.
+.\"
+.Pp
+.It Ic show Cm lockedvnods
+List all locked vnodes in the system.
+.\"
+.Pp
+.It Ic show Cm locks
+Prints all locks that are currently acquired.
+This command is only available if
+.Xr witness 4
+is included in the kernel.
+.\"
+.Pp
+.It Ic show Cm locktree
+.\"
+.Pp
+.It Ic show Cm malloc
+Prints
+.Xr malloc 9
+memory allocator statistics.
+The output format is as follows:
+.Pp
+.Bl -tag -compact -offset indent -width "Requests"
+.It Ic Type
+Specifies a type of memory.
+It is the same as a description string used while defining the
+given memory type with
+.Xr MALLOC_DECLARE 9 .
+.It Ic InUse
+Number of memory allocations of the given type, for which
+.Xr free 9
+has not been called yet.
+.It Ic MemUse
+Total memory consumed by the given allocation type.
+.It Ic Requests
+Number of memory allocation requests for the given
+memory type.
+.El
+.Pp
+The same information can be gathered in userspace with
+.Dq Nm vmstat Fl m .
+.\"
+.Pp
+.It Ic show Cm map Ns Oo Li / Ns Cm f Oc Ar addr
+Prints the VM map at
+.Ar addr .
+If the
+.Cm f
+modifier is specified the
+complete map is printed.
+.\"
+.Pp
+.It Ic show Cm msgbuf
+Print the system's message buffer.
+It is the same output as in the
+.Dq Nm dmesg
+case.
+It is useful if you got a kernel panic, attached a serial cable
+to the machine and want to get the boot messages from before the
+system hang.
+.\"
+.It Ic show Cm mount
+Displays short info about all currently mounted file systems.
+.Pp
+.It Ic show Cm mount Ar addr
+Displays details about the given mount point.
+.Pp
+.\"
+.Pp
+.It Ic show Cm object Ns Oo Li / Ns Cm f Oc Ar addr
+Prints the VM object at
+.Ar addr .
+If the
+.Cm f
+option is specified the
+complete object is printed.
+.\"
+.Pp
+.It Ic show Cm page
+Show statistics on VM pages.
+.\"
+.Pp
+.It Ic show Cm pageq
+Show statistics on VM page queues.
+.\"
+.Pp
+.It Ic show Cm pciregs
+Print PCI bus registers.
+The same information can be gathered in userspace by running
+.Dq Nm pciconf Fl lv .
+.\"
+.Pp
+.It Ic show Cm pcpu
+Print current processor state.
+The output format is as follows:
+.Pp
+.Bl -tag -compact -offset indent -width "spin locks held:"
+.It Ic cpuid
+Processor identifier.
+.It Ic curthread
+Thread pointer, process identifier and the name of the process.
+.It Ic curpcb
+Control block pointer.
+.It Ic fpcurthread
+FPU thread pointer.
+.It Ic idlethread
+Idle thread pointer.
+.It Ic APIC ID
+CPU identifier coming from APIC.
+.It Ic currentldt
+LDT pointer.
+.It Ic spin locks held
+Names of spin locks held.
+.El
+.\"
+.Pp
+.It Ic show Cm pgrpdump
+Dump process groups present within the system.
+.\"
+.Pp
+.It Ic show Cm proc Op Ar addr
+If no
+.Op Ar addr
+is specified, print information about the current process.
+Otherwise, show information about the process at address
+.Ar addr .
+.\"
+.Pp
+.It Ic show Cm procvm
+Show process virtual memory layout.
+.\"
+.Pp
+.It Ic show Cm protosw Ar addr
+Print protocol switch structure
+.Vt struct protosw
+at address
+.Ar addr .
+.\"
+.Pp
+.It Ic show Cm registers Ns Op Li / Ns Cm u
+Display the register set.
+If the
+.Cm u
+modifier is specified, it displays user registers instead of
+kernel registers or the currently saved one.
+.Pp
+.Sy Warning :
+The support of the
+.Cm u
+modifier depends on the machine.
+If not supported, incorrect information will be displayed.
+.\"
+.Pp
+.It Ic show Cm rman Ar addr
+Show resource manager object
+.Vt struct rman
+at address
+.Ar addr .
+Addresses of particular pointers can be gathered with "show allrman"
+command.
+.\"
+.Pp
+.It Ic show Cm rtc
+Show real time clock value.
+Useful for long debugging sessions.
+.\"
+.Pp
+.It Ic show Cm sleepchain
+Show all the threads a particular thread is waiting on based on
+sleepable locks.
+.\"
+.Pp
+.It Ic show Cm sleepq
+.It Ic show Cm sleepqueue
+Both commands provide the same functionality.
+They show sleepqueue
+.Vt struct sleepqueue
+structure.
+Sleepqueues are used within the
+.Fx
+kernel to implement sleepable
+synchronization primitives (thread holding a lock might sleep or
+be context switched), which at the time of writing are:
+.Xr condvar 9 ,
+.Xr sx 9
+and standard
+.Xr msleep 9
+interface.
+.\"
+.Pp
+.It Ic show Cm sockbuf Ar addr
+.It Ic show Cm socket Ar addr
+Those commands print
+.Vt struct sockbuf
+and
+.Vt struct socket
+objects placed at
+.Ar addr .
+Output consists of all values present in structures mentioned.
+For exact interpretation and more details, visit
+.Pa sys/socket.h
+header file.
+.\"
+.Pp
+.It Ic show Cm sysregs
+Show system registers (e.g.,
+.Li cr0-4
+on i386.)
+Not present on some platforms.
+.\"
+.Pp
+.It Ic show Cm tcpcb Ar addr
+Print TCP control block
+.Vt struct tcpcb
+lying at address
+.Ar addr .
+For exact interpretation of output, visit
+.Pa netinet/tcp.h
+header file.
+.\"
+.Pp
+.It Ic show Cm thread Op Ar addr
+If no
+.Ar addr
+is specified, show detailed information about current thread.
+Otherwise, information about thread at
+.Ar addr
+is printed.
+.\"
+.Pp
+.It Ic show Cm threads
+Show all threads within the system.
+Output format is as follows:
+.Pp
+.Bl -tag -width "PPID" -compact -offset indent -width "Second column"
+.It Ic First column
+Thread identifier (TID)
+.It Ic Second column
+Thread structure address
+.It Ic Third column
+Backtrace.
+.El
+.\"
+.Pp
+.It Ic show Cm tty Ar addr
+Display the contents of a TTY structure in a readable form.
+.\"
+.Pp
+.It Ic show Cm turnstile Ar addr
+Show turnstile
+.Vt struct turnstile
+structure at address
+.Ar addr .
+Turnstiles are structures used within the
+.Fx
+kernel to implement
+synchronization primitives which, while holding a specific type of lock, cannot
+sleep or context switch to another thread.
+Currently, those are:
+.Xr mutex 9 ,
+.Xr rwlock 9 ,
+.Xr rmlock 9 .
+.\"
+.Pp
+.It Ic show Cm uma
+Show UMA allocator statistics.
+Output consists five columns:
+.Pp
+.Bl -tag -compact -offset indent -width "Requests"
+.It Cm "Zone"
+Name of the UMA zone.
+The same string that was passed to
+.Xr uma_zcreate 9
+as a first argument.
+.It Cm "Size"
+Size of a given memory object (slab).
+.It Cm "Used"
+Number of slabs being currently used.
+.It Cm "Free"
+Number of free slabs within the UMA zone.
+.It Cm "Requests"
+Number of allocations requests to the given zone.
+.El
+.Pp
+The very same information might be gathered in the userspace
+with the help of
+.Dq Nm vmstat Fl z
+.\"
+.Pp
+.It Ic show Cm unpcb Ar addr
+Shows UNIX domain socket private control block
+.Vt struct unpcb
+present at the address
+.Ar addr
+.\"
+.Pp
+.It Ic show Cm vmochk
+Prints, whether the internal VM objects are in a map somewhere
+and none have zero ref counts.
+.\"
+.Pp
+.It Ic show Cm vmopag
+This is supposed to show physical addresses consumed by a
+VM object.
+Currently, it is not possible to use this command when
+.Xr witness 4
+is compiled in the kernel.
+.\"
+.Pp
+.It Ic show Cm vnode Op Ar addr
+Prints vnode
+.Vt struct vnode
+structure lying at
+.Op Ar addr .
+For the exact interpretation of the output, look at the
+.Pa sys/vnode.h
+header file.
+.\"
+.Pp
+.It Ic show Cm vnodebufs Ar addr
+Shows clean/dirty buffer lists of the vnode located at
+.Ar addr .
+.\"
+.Pp
+.It Ic show Cm watches
+Displays all watchpoints.
+Shows watchpoints set with "watch" command.
+.\"
+.Pp
+.It Ic show Cm witness
+Shows information about lock acquisition coming from the
+.Xr witness 4
+subsystem.
+.\"
+.Pp
+.It Ic gdb
+Toggles between remote GDB and DDB mode.
+In remote GDB mode, another machine is required that runs
+.Xr gdb 1
+using the remote debug feature, with a connection to the serial
+console port on the target machine.
+Currently only available on the
+i386
+architecture.
+.Pp
+.It Ic halt
+Halt the system.
+.Pp
+.It Ic kill Ar sig pid
+Send signal
+.Ar sig
+to process
+.Ar pid .
+The signal is acted on upon returning from the debugger.
+This command can be used to kill a process causing resource contention
+in the case of a hung system.
+See
+.Xr signal 3
+for a list of signals.
+Note that the arguments are reversed relative to
+.Xr kill 2 .
+.Pp
+.It Ic reboot
+.It Ic reset
+Hard reset the system.
+.Pp
+.It Ic help
+Print a short summary of the available commands and command
+abbreviations.
+.Pp
+.It Ic capture on
+.It Ic capture off
+.It Ic capture reset
+.It Ic capture status
+.Nm
+supports a basic output capture facility, which can be used to retrieve the
+results of debugging commands from userpsace using
+.Xr sysctl 2 .
+.Ic capture on
+enables output capture;
+.Ic capture off
+disables capture.
+.Ic capture reset
+will clear the capture buffer and disable capture.
+.Ic capture status
+will report current buffer use, buffer size, and disposition of output
+capture.
+.Pp
+Userspace processes may inspect and manage
+.Nm
+capture state using
+.Xr sysctl 8 :
+.Pp
+.Dv debug.ddb.capture.bufsize
+may be used to query or set the current capture buffer size.
+.Pp
+.Dv debug.ddb.capture.maxbufsize
+may be used to query the compile-time limit on the capture buffer size.
+.Pp
+.Dv debug.ddb.capture.bytes
+may be used to query the number of bytes of output currently in the capture
+buffer.
+.Pp
+.Dv debug.ddb.capture.data
+returns the contents of the buffer as a string to an appropriately privileged
+process.
+.Pp
+This facility is particularly useful in concert with the scripting and
+.Xr textdump 4
+facilities, allowing scripted debugging output to be captured and
+committed to disk as part of a textdump for later analysis.
+The contents of the capture buffer may also be inspected in a kernel core dump
+using
+.Xr kgdb 1 .
+.Pp
+.It Ic run
+.It Ic script
+.It Ic scripts
+.It Ic unscript
+Run, define, list, and delete scripts.
+See the
+.Sx SCRIPTING
+section for more information on the scripting facility.
+.Pp
+.It Ic textdump set
+.It Ic textdump status
+.It Ic textdump unset
+The
+.Ic textdump set
+command may be used to force the next kernel core dump to be a textdump
+rather than a traditional memory dump or minidump.
+.Ic textdump status
+reports whether a textdump has been scheduled.
+.Ic textdump unset
+cancels a request to perform a textdump as the next kernel core dump.
+More information may be found in
+.Xr textdump 4 .
+.El
+.Sh VARIABLES
+The debugger accesses registers and variables as
+.Li $ Ns Ar name .
+Register names are as in the
+.Dq Ic show Cm registers
+command.
+Some variables are suffixed with numbers, and may have some modifier
+following a colon immediately after the variable name.
+For example, register variables can have a
+.Cm u
+modifier to indicate user register (e.g.,
+.Dq Li $eax:u ) .
+.Pp
+Built-in variables currently supported are:
+.Pp
+.Bl -tag -width ".Va tabstops" -compact
+.It Va radix
+Input and output radix.
+.It Va maxoff
+Addresses are printed as
+.Dq Ar symbol Ns Li + Ns Ar offset
+unless
+.Ar offset
+is greater than
+.Va maxoff .
+.It Va maxwidth
+The width of the displayed line.
+.It Va lines
+The number of lines.
+It is used by the built-in pager.
+.It Va tabstops
+Tab stop width.
+.It Va work Ns Ar xx
+Work variable;
+.Ar xx
+can take values from 0 to 31.
+.El
+.Sh EXPRESSIONS
+Most expression operators in C are supported except
+.Ql ~ ,
+.Ql ^ ,
+and unary
+.Ql & .
+Special rules in
+.Nm
+are:
+.Bl -tag -width ".No Identifiers"
+.It Identifiers
+The name of a symbol is translated to the value of the symbol, which
+is the address of the corresponding object.
+.Ql \&.
+and
+.Ql \&:
+can be used in the identifier.
+If supported by an object format dependent routine,
+.Sm off
+.Oo Ar filename : Oc Ar func : lineno ,
+.Sm on
+.Oo Ar filename : Oc Ns Ar variable ,
+and
+.Oo Ar filename : Oc Ns Ar lineno
+can be accepted as a symbol.
+.It Numbers
+Radix is determined by the first two letters:
+.Ql 0x :
+hex,
+.Ql 0o :
+octal,
+.Ql 0t :
+decimal; otherwise, follow current radix.
+.It Li \&.
+.Va dot
+.It Li +
+.Va next
+.It Li ..
+address of the start of the last line examined.
+Unlike
+.Va dot
+or
+.Va next ,
+this is only changed by
+.Ic examine
+or
+.Ic write
+command.
+.It Li '
+last address explicitly specified.
+.It Li $ Ns Ar variable
+Translated to the value of the specified variable.
+It may be followed by a
+.Ql \&:
+and modifiers as described above.
+.It Ar a Ns Li # Ns Ar b
+A binary operator which rounds up the left hand side to the next
+multiple of right hand side.
+.It Li * Ns Ar expr
+Indirection.
+It may be followed by a
+.Ql \&:
+and modifiers as described above.
+.El
+.Sh SCRIPTING
+.Nm
+supports a basic scripting facility to allow automating tasks or responses to
+specific events.
+Each script consists of a list of DDB commands to be executed sequentially,
+and is assigned a unique name.
+Certain script names have special meaning, and will be automatically run on
+various
+.Nm
+events if scripts by those names have been defined.
+.Pp
+The
+.Ic script
+command may be used to define a script by name.
+Scripts consist of a series of
+.Nm
+commands separated with the
+.Ic ;
+character.
+For example:
+.Bd -literal -offset indent
+script kdb.enter.panic=bt; show pcpu
+script lockinfo=show alllocks; show lockedvnods
+.Ed
+.Pp
+The
+.Ic scripts
+command lists currently defined scripts.
+.Pp
+The
+.Ic run
+command execute a script by name.
+For example:
+.Bd -literal -offset indent
+run lockinfo
+.Ed
+.Pp
+The
+.Ic unscript
+command may be used to delete a script by name.
+For example:
+.Bd -literal -offset indent
+unscript kdb.enter.panic
+.Ed
+.Pp
+These functions may also be performed from userspace using the
+.Xr ddb 8
+command.
+.Pp
+Certain scripts are run automatically, if defined, for specific
+.Nm
+events.
+The follow scripts are run when various events occur:
+.Bl -tag -width kdb.enter.powerfail
+.It Dv kdb.enter.acpi
+The kernel debugger was entered as a result of an
+.Xr acpi 4
+event.
+.It Dv kdb.enter.bootflags
+The kernel debugger was entered at boot as a result of the debugger boot
+flag being set.
+.It Dv kdb.enter.break
+The kernel debugger was entered as a result of a serial or console break.
+.It Dv kdb.enter.cam
+The kernel debugger was entered as a result of a
+.Xr CAM 4
+event.
+.It Dv kdb.enter.mac
+The kernel debugger was entered as a result of an assertion failure in the
+.Xr mac_test 4
+module of the
+TrustedBSD MAC Framework.
+.It Dv kdb.enter.ndis
+The kernel debugger was entered as a result of an
+.Xr ndis 4
+breakpoint event.
+.It Dv kdb.enter.netgraph
+The kernel debugger was entered as a result of a
+.Xr netgraph 4
+event.
+.It Dv kdb.enter.panic
+.Xr panic 9
+was called.
+.It Dv kdb.enter.powerfail
+The kernel debugger was entered as a result of a powerfail NMI on the sparc64
+platform.
+.It Dv kdb.enter.powerpc
+The kernel debugger was entered as a result of an unimplemented interrupt
+type on the powerpc platform.
+.It Dv kdb.enter.sysctl
+The kernel debugger was entered as a result of the
+.Dv debug.kdb.enter
+sysctl being set.
+.It Dv kdb.enter.trapsig
+The kernel debugger was entered as a result of a trapsig event on the sparc64
+or sun4v platform.
+.It Dv kdb.enter.unionfs
+The kernel debugger was entered as a result of an assertion failure in the
+union file system.
+.It Dv kdb.enter.unknown
+The kernel debugger was entered, but no reason has been set.
+.It Dv kdb.enter.vfslock
+The kernel debugger was entered as a result of a VFS lock violation.
+.It Dv kdb.enter.watchdog
+The kernel debugger was entered as a result of a watchdog firing.
+.It Dv kdb.enter.witness
+The kernel debugger was entered as a result of a
+.Xr witness 4
+violation.
+.El
+.Pp
+In the event that none of these scripts is found,
+.Nm
+will attempt to execute a default script:
+.Bl -tag -width kdb.enter.powerfail
+.It Dv kdb.enter.default
+The kernel debugger was entered, but a script exactly matching the reason for
+entering was not defined.
+This can be used as a catch-all to handle cases not specifically of interest;
+for example,
+.Dv kdb.enter.witness
+might be defined to have special handling, and
+.Dv kdb.enter.default
+might be defined to simply panic and reboot.
+.El
+.Sh HINTS
+On machines with an ISA expansion bus, a simple NMI generation card can be
+constructed by connecting a push button between the A01 and B01 (CHCHK# and
+GND) card fingers.
+Momentarily shorting these two fingers together may cause the bridge chipset to
+generate an NMI, which causes the kernel to pass control to
+.Nm .
+Some bridge chipsets do not generate a NMI on CHCHK#, so your mileage may vary.
+The NMI allows one to break into the debugger on a wedged machine to
+diagnose problems.
+Other bus' bridge chipsets may be able to generate NMI using bus specific
+methods.
+.Sh FILES
+Header files mention in this manual page can be found below
+.Pa /usr/include
+directory.
+.Pp
+.Bl -dash -compact
+.It
+.Pa sys/buf.h
+.It
+.Pa sys/domain.h
+.It
+.Pa netinet/in_pcb.h
+.It
+.Pa sys/socket.h
+.It
+.Pa sys/vnode.h
+.El
+.Sh SEE ALSO
+.Xr gdb 1 ,
+.Xr kgdb 1 ,
+.Xr acpi 4 ,
+.Xr CAM 4 ,
+.Xr mac_test 4 ,
+.Xr ndis 4 ,
+.Xr netgraph 4 ,
+.Xr textdump 4 ,
+.Xr witness 4 ,
+.Xr ddb 8 ,
+.Xr sysctl 8 ,
+.Xr panic 9
+.Sh HISTORY
+The
+.Nm
+debugger was developed for Mach, and ported to
+.Bx 386 0.1 .
+This manual page translated from
+.Xr man 7
+macros by
+.An Garrett Wollman .
+.Pp
+.An Robert N. M. Watson
+added support for
+.Nm
+output capture,
+.Xr textdump 4
+and scripting in
+.Fx 7.1 .
diff --git a/share/man/man4/de.4 b/share/man/man4/de.4
new file mode 100644
index 0000000..eeca376
--- /dev/null
+++ b/share/man/man4/de.4
@@ -0,0 +1,151 @@
+.\"
+.\" Copyright (c) 1997 David E. O'Brien
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 16, 2005
+.Dt DE 4
+.Os
+.Sh NAME
+.Nm de
+.Nd "DEC DC21x4x Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device de"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_de_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Ethernet adapters based on the Digital
+Equipment DC21x4x based self-contained Ethernet and Fast Ethernet
+chips.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options
+.It 10baseT/UTP
+Set 10Mbps operation on the 10baseT port
+.It 10base2/BNC
+Set 10Mbps operation on the BNC port
+.It 10base5/AUI
+Set 10Mbps operation on the AUI port
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation
+.It 100baseFX
+Set 100Mbps operation
+.It 100baseT4
+Set 100Mbps operation (4-pair cat-3 cable)
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxx
+.It full-duplex
+Set full duplex operation
+.El
+.Pp
+Note that the media types available depend on the particular card in use.
+Some cards are explicitly programmed to a particular media type by a
+setup utility and are not changeable.
+.Pp
+Use the
+.Xr ifconfig 8
+command an in particular the
+.Fl m
+flag to list the supported media types for your particular card.
+.Pp
+The old
+.Dq ifconfig linkN
+method of configuration is not supported.
+.Sh HARDWARE
+Adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec ANA-6944/TX
+.It
+Cogent EM100FX and EM440TX
+.It
+Corega FastEther PCI-TX
+.It
+D-Link DFE-500TX
+.It
+DEC DE435, DEC DE450, and DEC DE500
+.It
+ELECOM LD-PCI2T, LD-PCITS
+.It
+I-O DATA LA2/T-PCI
+.It
+SMC Etherpower 8432, 9332 and 9334
+.It
+ZNYX ZX3xx
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "de%d: waking device from sleep/snooze mode"
+The 21041 and 21140A chips support suspending the operation of the card.
+.It "de%d: error: desired IRQ of %d does not match device's actual IRQ of %d"
+The device probe detected that the board is configured for a different
+interrupt than the one specified in the kernel configuration file.
+.It "de%d: not configured; limit of %d reached or exceeded"
+There is a limit of 32
+.Nm
+devices allowed in a single machine.
+.It "de%d: not configured; 21040 pass 2.0 required (%d.%d found)"
+.It "de%d: not configured; 21140 pass 1.1 required (%d.%d found)"
+Certain revisions of the chipset are not supported by this driver.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An Matt Thomas .
+This manual page was written by
+.An David E. O'Brien .
diff --git a/share/man/man4/devctl.4 b/share/man/man4/devctl.4
new file mode 100644
index 0000000..50afee7
--- /dev/null
+++ b/share/man/man4/devctl.4
@@ -0,0 +1,128 @@
+.\"
+.\" Copyright (c) 2002 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd February 11, 2003
+.Dt DEVCTL 4
+.Os
+.Sh NAME
+.Nm devctl
+.Nd "device event reporting and device control interface"
+.Sh DESCRIPTION
+The
+.Nm
+device is used to report device events from the kernel.
+Future versions will allow for some device control as well.
+.Sh IMPLEMENTATION NOTES
+This design allows only one reader for
+.Pa /dev/devctl .
+This is not desirable
+in the long run, but will get a lot of hair out of this implementation.
+Maybe we should make this device a clonable device.
+.Pp
+Also note: we specifically do not attach a device to the
+.Vt device_t
+tree
+to avoid potential chicken and egg problems.
+One could argue that all of this belongs to the root node.
+One could also further argue that the
+.Xr sysctl 3
+interface that we have now might more properly be an
+.Xr ioctl 2
+interface.
+.Pp
+.Dv SIGIO
+support is included in the driver.
+However, the author is not sure that the
+.Dv SIGIO
+support is done correctly.
+It was copied from a driver that had
+.Dv SIGIO
+support that likely has not been
+tested since
+.Fx 3.4
+or
+.Fx 2.2.8 !
+.Pp
+The read channel for this device is used to report changes to
+userland in realtime.
+We return one record at a time.
+If you try to read this device a character at a time, you will lose
+the rest of the data.
+Listening programs are expected to cope.
+.Pp
+The sysctl and boot parameter
+.Va hw.bus.devctl_disable
+is used to disable
+.Nm
+when no
+.Xr devd 8
+is running.
+.Sh PROTOCOL
+The
+.Nm
+device
+uses an
+.Tn ASCII
+protocol.
+The driver returns one record at a time to its readers.
+Each record is terminated with a newline.
+The first character of the record is the event type.
+.Pp
+.Bl -column -compact "Type" "Description"
+.Em "Type Description"
+! A notify event, such as a link state change.
++ Device node in tree attached.
+- Device node in tree detached.
+? Unknown device detected.
+.El
+.Ss Message Formats
+Except for the first character in the record, attach and detach
+messages have the same format.
+.Pp
+.D1 Ar T Ns Ar dev Li at Ar parent Li on Ar location
+.Pp
+.Bl -column -compact "location" "Description"
+.Em "Part Description"
+.It Ar T Ta "+ or -"
+.It Ar dev Ta "The device name that was attached/detached."
+.It Ar parent Ta "The device name of the parent bus that attached the device."
+.It Ar location Ta "Bus specific location information."
+.El
+.Pp
+The nomatch messages can be used to load devices driver.
+If you load a device driver, then one of two things can happen.
+If the device driver attaches to something, you will get a device
+attached message.
+If it does not, then nothing will happen.
+.Pp
+The attach and detach messages arrive after the event.
+This means one cannot use the attach message to load an alternate
+driver.
+The attach message driver has already claimed this device.
+One cannot use the detach messages to flush data to the device.
+The device is already gone.
+.Sh SEE ALSO
+.Xr devd 8
diff --git a/share/man/man4/digi.4 b/share/man/man4/digi.4
new file mode 100644
index 0000000..e33e365
--- /dev/null
+++ b/share/man/man4/digi.4
@@ -0,0 +1,382 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the Systems Programming Group of the University of Utah Computer
+.\" Science Department.
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91
+.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp
+.\" from: sio.4,v 1.15 1994/12/06 20:14:30 bde Exp
+.\" $FreeBSD$
+.\"
+.Dd December 7, 2003
+.Dt DIGI 4
+.Os
+.Sh NAME
+.Nm digi
+.Nd DigiBoard intelligent serial cards driver
+.Sh SYNOPSIS
+.Cd "device digi"
+.Pp
+This man page was originally written for the dgb driver, and should
+likely be gone over with a fine tooth comb to reflect differences
+with the digi driver.
+.Pp
+When not defined the number is computed:
+.Pp
+.Bd -ragged -offset 4n
+default
+.Dv NDGBPORTS
+= number_of_described_DigiBoard_cards * 16
+.Ed
+.Pp
+If it is less than the actual number of ports
+the system will be able to use only the
+first
+.Dv NDGBPORTS
+ports.
+If it is greater then all ports will be usable
+but some memory will be wasted.
+.Pp
+Meaning of
+.Cm flags :
+.Bl -tag -width indent -compact
+.It 0x0001
+use alternate pinout (exchange DCD and DSR lines)
+.It 0x0002
+do not use 8K window mode of PC/Xe
+.El
+.Pp
+Device numbering:
+.Bd -literal -compact
+0b\fICC\fPmmmmmmmm\fIOLIPPPPP\fP
+ \fBCC\fPard number
+ \fRmmmmmmmm\fPajor number
+ call\fBO\fPut
+ \fBL\fPock
+ \fBI\fPnitial
+ \fBPPPPP\fPort number
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for DigiBoard PC/Xe and PC/Xi series intelligent
+serial multiport cards with asynchronous interfaces based on the
+.Tn EIA
+.Tn RS-232C
+.Pf ( Tn CCITT
+.Tn V.24 )
+standard.
+.Pp
+Input and output for each line may set to one of following baud rates;
+50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600,
+19200, 38400, 57600, or for newer versions of cards 115200.
+.Pp
+The driver does not use any interrupts, it is
+.Dq polling-based .
+This means that
+it uses clock interrupts instead of interrupts generated by DigiBoard cards and
+checks the state of cards 25 times per second.
+This is practical because the
+DigiBoard cards have large input and output buffers (more than 1Kbyte per
+port) and hardware that allows efficiently finding the port that needs
+attention.
+The only problem seen with this policy is slower
+SLIP and PPP response.
+.Pp
+Each line in the kernel configuration file describes one card, not one port
+as in the
+.Xr sio 4
+driver.
+.Pp
+The
+.Cm flags
+keyword may be used on each
+.Dq Li "device dgb"
+line in the kernel configuration file
+to change the pinout of the interface or to use new PC/Xe cards
+which can work with an 8K memory window in compatibility mode
+(with a 64K memory window).
+Note
+that using 8K memory window does not mean shorter input/output buffers, it means
+only that all buffers will be mapped to the same memory address and switched as
+needed.
+.Pp
+The
+.Cm port
+value must be the same
+as the
+port
+set on the card by jumpers.
+For PC/Xi cards the same rule is applicable to the
+.Cm iomem
+value.
+It must be the same as the memory address set on the card
+by jumpers.
+.\"Some documentation gives the address as a ``paragraph'' or ``segment'';
+.\"you can get the value of address by adding the digit "0" at end of
+.\"paragraph value, e.g., 0xfc000 -> 0xfc0000.
+For PC/Xe cards there is no need to use jumpers for this purpose.
+In fact there are no jumpers to do it.
+Just
+write the address you want as the
+.Cm iomem
+value in kernel config file and the card will be programmed
+to use this address.
+.Pp
+The same range of memory addresses may be used
+for all the DigiBoards installed
+(but not for any other card or real memory).
+DigiBoards
+with a large amount of memory (256K or 512K and perhaps
+even 128K) must be mapped
+to memory addresses outside of the first megabyte.
+If the computer
+has more than 15 megabytes of memory then there is no free address space
+outside of the first megabyte where such DigiBoards can be mapped.
+In this case you
+may need to reduce the amount of memory in the computer.
+But many machines provide a better solution.
+They have the ability to
+.Dq "turn off"
+the memory in the 16th megabyte (addresses 0xF00000 - 0xFFFFFF)
+using the
+BIOS setup.
+Then the DigiBoard's address space can be set to this
+.Dq hole .
+.\" XXX the following should be true for all serial drivers and
+.\" should not be repeated in the man pages for all serial drivers.
+.\" It was copied from sio.4. The only changes were s/sio/dgb/g.
+.Pp
+Serial ports controlled by the
+.Nm
+driver can be used for both
+.Dq callin
+and
+.Dq callout .
+For each port there is a callin device and a callout device.
+The minor number of the callout device is 128 higher
+than that of the corresponding callin port.
+The callin device is general purpose.
+Processes opening it normally wait for carrier
+and for the callout device to become inactive.
+The callout device is used to steal the port from
+processes waiting for carrier on the callin device.
+Processes opening it do not wait for carrier
+and put any processes waiting for carrier on the callin device into
+a deeper sleep so that they do not conflict with the callout session.
+The callout device is abused for handling programs that are supposed
+to work on general ports and need to open the port without waiting
+but are too stupid to do so.
+.Pp
+The
+.Nm
+driver also supports an initial-state and a lock-state control
+device for each of the callin and the callout
+.Dq data
+devices.
+The minor number of the initial-state device is 32 higher
+than that of the corresponding data device.
+The minor number of the lock-state device is 64 higher
+than that of the corresponding data device.
+The termios settings of a data device are copied
+from those of the corresponding initial-state device
+on first opens and are not inherited from previous opens.
+Use
+.Xr stty 1
+in the normal way on the initial-state devices to program
+initial termios states suitable for your setup.
+.Pp
+The lock termios state acts as flags to disable changing
+the termios state.
+E.g., to lock a flag variable such as
+.Dv CRTSCTS ,
+use
+.Dq Li "stty crtscts"
+on the lock-state device.
+Speeds and special characters
+may be locked by setting the corresponding value in the lock-state
+device to any nonzero value.
+.Pp
+Correct programs talking to correctly wired external devices
+.\" XXX change next line in other man pages too, and rewrite this paragraph.
+work with almost arbitrary initial states and no locking,
+but other setups may benefit from changing some of the default
+initial state and locking the state.
+In particular, the initial states for non (POSIX) standard flags
+should be set to suit the devices attached and may need to be
+locked to prevent buggy programs from changing them.
+E.g.,
+.Dv CRTSCTS
+should be locked on for devices that support
+RTS/CTS handshaking at all times and off for devices that do not
+support it at all.
+.Dv CLOCAL
+should be locked on for devices
+that do not support carrier.
+.Dv HUPCL
+may be locked off if you do not
+want to hang up for some reason.
+In general, very bad things happen
+if something is locked to the wrong state, and things should not
+be locked for devices that support more than one setting.
+The
+.Dv CLOCAL
+flag on callin ports should be locked off for logins
+to avoid certain security holes, but this needs to be done by
+getty if the callin port is used for anything else.
+.Sh FILES
+.Bl -tag -width /dev/ttyiD?? -compact
+.It Pa /dev/ttyD??
+for callin ports
+.It Pa /dev/ttyiD??
+.It Pa /dev/ttylD??
+corresponding callin initial-state and lock-state devices
+.Pp
+.It Pa /dev/cuaD??
+for callout ports
+.It Pa /dev/cuaiD??
+.It Pa /dev/cualD??
+corresponding callout initial-state and lock-state devices
+.El
+.Pp
+.Bl -tag -width /etc/rc.serial -compact
+.It Pa /etc/rc.serial
+examples of setting the initial-state and lock-state devices
+.El
+.Pp
+The first question mark in these device names is short for the
+card number
+(a decimal number between 0 and 65535 inclusive).
+The second question mark is short for the port number
+(a letter in the range [0-9a-v]).
+.Sh DIAGNOSTICS
+You may enable extended diagnostics by defining DEBUG at the
+start of the source file
+.Pa dgb.c .
+.Bl -diag
+.It dgb\fIX\fP: warning: address \fIN\fP truncated to \fIM\fP
+The memory address for the PC/Xe's 8K window is misaligned (it should be
+on an 8K boundary) or outside of the first megabyte.
+.It dgb\fIX\fP: 1st reset failed
+Problems with accessing I/O port of the card, probably
+the wrong
+.Cm port
+value is specified in the kernel config file.
+.It dgb\fIX\fP: 2nd reset failed
+Problems with hardware.
+.It dgb\fIX\fP: \fIN\fP[st,nd,rd,th] memory test failed
+Problems with accessing the memory of the card, probably
+the wrong
+.Cm iomem
+value is specified in the kernel config file.
+.It dgb\fIX\fP: BIOS start failed
+Problems with starting the on-board BIOS.
+Probably the memory addresses of the
+DigiBoard overlap with some other device or with RAM.
+.It dgb\fIX\fP: BIOS download failed
+Problems with the on-board BIOS.
+Probably the memory addresses of the
+DigiBoard overlap with some other device or with RAM.
+.It dgb\fIX\fP: FEP code download failed
+Problems with downloading of the Front-End Processor's micro-OS.
+Probably the memory addresses of the
+DigiBoard overlap with some other device or with RAM.
+.It dgb\fIX\fP: FEP/OS start failed
+Problems with starting of the Front-End Processor's micro-OS.
+Probably the memory addresses of the
+DigiBoard overlap with some other device or with RAM.
+.It dgb\fIX\fP: too many ports
+This DigiBoard reports that it has more than 32 ports.
+Perhaps a hardware problem or
+the memory addresses of the
+DigiBoard overlap with some other device or with RAM.
+.It dgb\fIX\fP: only \fIN\fP ports are usable
+The
+.Dv NDGBPORTS
+parameter is too small and there is only enough space allocated
+for
+.Ar N
+ports on this card.
+.It dgb\fIX\fP: port \fIY\fP is broken
+The on-board diagnostic has reported that the specified port has hardware
+problems.
+.It dgb\fIX\fP: polling of disabled board stopped
+Internal problems in the polling logic of driver.
+.It dgb\fIX\fP: event queue's head or tail is wrong!
+Internal problems in the driver or hardware.
+.It dgb\fIX\fP: port \fIY\fP: got event on nonexisting port
+Some status changed on a port that is physically present but is
+unusable due to misconfiguration.
+.It dgb\fIX\fP: port \fIY\fP: event \fIN\fP mstat \fIM\fP lstat \fIK\fP
+The driver got a strange event from card.
+Probably this means that you have a
+newer card with an extended list of events or some other hardware problem.
+.It dgb\fIX\fP: port \fIY\fP: overrun
+Input buffer has filled up.
+Problems in polling logic of driver.
+.It dgb\fIX\fP: port \fIY\fP: FEP command on disabled port
+Internal problems in driver.
+.It dgb\fIX\fP: port \fIY\fP: timeout on FEP command
+Problems in hardware.
+.El
+.Sh SEE ALSO
+.Xr stty 1 ,
+.Xr termios 4 ,
+.Xr tty 4 ,
+.Xr comcontrol 8
+.\" XXX add next line to many other drivers.
+.Sh HISTORY
+The
+.Nm
+driver is derived from the
+.Xr sio 4
+driver and the DigiBoard driver from
+.Tn Linux
+and is
+.Ud
+.Sh BUGS
+The implementation of sending
+.Dv BREAK
+is broken.
+.Dv BREAK
+of fixed length of 1/4 s
+is sent anyway.
+.Pp
+There was a bug in implementation of
+.Xr select 2 .
+It is fixed now but not widely tested yet.
+.Pp
+There is no ditty command.
+Most of its functions (alternate pinout,
+speed up to 115200 baud, etc.) are implemented in the driver itself.
+Some
+other functions are missing.
diff --git a/share/man/man4/disc.4 b/share/man/man4/disc.4
new file mode 100644
index 0000000..300e712
--- /dev/null
+++ b/share/man/man4/disc.4
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)lo.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd May 25, 2002
+.Dt DISC 4
+.Os
+.Sh NAME
+.Nm disc
+.Nd software discard network interface
+.Sh SYNOPSIS
+.Cd "device disc"
+.Sh DESCRIPTION
+The
+.Nm
+interface is a software discard mechanism which may be
+used for performance analysis and/or software testing.
+As with other network interfaces, the discard interface must have
+network addresses assigned for each address family with which it is to be used.
+These addresses
+may be set or changed with the
+.Dv SIOCSIFADDR
+.Xr ioctl 2 .
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr intro 4
+.\" .Xr ns 4
+.Sh HISTORY
+The
+.Nm
+device appears to have been derived from the
+.Xr lo 4
+device around the time of
+.Bx 4.4 .
+This manpage was adapted from
+.Xr lo 4
+and first appeared in
+.Fx 5.0 .
diff --git a/share/man/man4/divert.4 b/share/man/man4/divert.4
new file mode 100644
index 0000000..d0e6785
--- /dev/null
+++ b/share/man/man4/divert.4
@@ -0,0 +1,192 @@
+.\" $FreeBSD$
+.\"
+.Dd December 17, 2004
+.Dt DIVERT 4
+.Os
+.Sh NAME
+.Nm divert
+.Nd kernel packet diversion mechanism
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In netinet/in.h
+.Ft int
+.Fn socket PF_INET SOCK_RAW IPPROTO_DIVERT
+.Pp
+To enable support for divert sockets, place the following lines in the
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options IPFIREWALL"
+.Cd "options IPDIVERT"
+.Ed
+.Pp
+Alternatively, to load
+.Ns Nm
+as a module at boot time, add the following lines into the
+.Xr loader.conf 5
+file:
+.Bd -literal -offset indent
+ipfw_load="YES"
+ipdivert_load="YES"
+.Ed
+.Sh DESCRIPTION
+Divert sockets are similar to raw IP sockets, except that they
+can be bound to a specific
+.Nm
+port via the
+.Xr bind 2
+system call.
+The IP address in the bind is ignored; only the port
+number is significant.
+A divert socket bound to a divert port will receive all packets diverted
+to that port by some (here unspecified) kernel mechanism(s).
+Packets may also be written to a divert port, in which case they
+re-enter kernel IP packet processing.
+.Pp
+Divert sockets are normally used in conjunction with
+.Fx Ns 's
+packet filtering implementation and the
+.Xr ipfw 8
+program.
+By reading from and writing to a divert socket, matching packets
+can be passed through an arbitrary ``filter'' as they travel through
+the host machine, special routing tricks can be done, etc.
+.Sh READING PACKETS
+Packets are diverted either as they are ``incoming'' or ``outgoing.''
+Incoming packets are diverted after reception on an IP interface,
+whereas outgoing packets are diverted before next hop forwarding.
+.Pp
+Diverted packets may be read unaltered via
+.Xr read 2 ,
+.Xr recv 2 ,
+or
+.Xr recvfrom 2 .
+In the latter case, the address returned will have its port set to
+some tag supplied by the packet diverter, (usually the ipfw rule number)
+and the IP address set to the (first) address of
+the interface on which the packet was received (if the packet
+was incoming) or
+.Dv INADDR_ANY
+(if the packet was outgoing).
+The interface name (if defined
+for the packet) will be placed in the 8 bytes following the address,
+if it fits.
+.Sh WRITING PACKETS
+Writing to a divert socket is similar to writing to a raw IP socket;
+the packet is injected ``as is'' into the normal kernel IP packet
+processing using
+.Xr sendto 2
+and minimal error checking is done.
+Packets are distinguished as either incoming or outgoing.
+If
+.Xr sendto 2
+is used with a destination IP address of
+.Dv INADDR_ANY ,
+then the packet is treated as if it were outgoing, i.e., destined
+for a non-local address.
+Otherwise, the packet is assumed to be
+incoming and full packet routing is done.
+.Pp
+In the latter case, the
+IP address specified must match the address of some local interface,
+or an interface name
+must be found after the IP address.
+If an interface name is found,
+that interface will be used and the value of the IP address will be
+ignored (other than the fact that it is not
+.Dv INADDR_ANY ) .
+This is to indicate on which interface the packet
+.Dq arrived .
+.Pp
+Normally, packets read as incoming should be written as incoming;
+similarly for outgoing packets.
+When reading and then writing back
+packets, passing the same socket address supplied by
+.Xr recvfrom 2
+unmodified to
+.Xr sendto 2
+simplifies things (see below).
+.Pp
+The port part of the socket address passed to the
+.Xr sendto 2
+contains a tag that should be meaningful to the diversion module.
+In the
+case of
+.Xr ipfw 8
+the tag is interpreted as the rule number
+.Em after which
+rule processing should restart.
+.Sh LOOP AVOIDANCE
+Packets written into a divert socket
+(using
+.Xr sendto 2 )
+re-enter the packet filter at the rule number
+following the tag given in the port part of the socket address, which
+is usually already set at the rule number that caused the diversion
+(not the next rule if there are several at the same number).
+If the 'tag'
+is altered to indicate an alternative re-entry point, care should be taken
+to avoid loops, where the same packet is diverted more than once at the
+same rule.
+.Sh DETAILS
+If a packet is diverted but no socket is bound to the
+port, or if
+.Dv IPDIVERT
+is not enabled or loaded in the kernel, the packet is dropped.
+.Pp
+Incoming packet fragments which get diverted are fully reassembled
+before delivery; the diversion of any one fragment causes the entire
+packet to get diverted.
+If different fragments divert to different ports,
+then which port ultimately gets chosen is unpredictable.
+.Pp
+Note that packets arriving on the divert socket by the
+.Xr ipfw 8
+.Cm tee
+action are delivered as-is and packet fragments do not get reassembled
+in this case.
+.Pp
+Packets are received and sent unchanged, except that
+packets read as outgoing have invalid IP header checksums, and
+packets written as outgoing have their IP header checksums overwritten
+with the correct value.
+Packets written as incoming and having incorrect checksums will be dropped.
+Otherwise, all header fields are unchanged (and therefore in network order).
+.Pp
+Binding to port numbers less than 1024 requires super-user access, as does
+creating a socket of type SOCK_RAW.
+.Sh ERRORS
+Writing to a divert socket can return these errors, along with
+the usual errors possible when writing raw packets:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The packet had an invalid header, or the IP options in the packet
+and the socket options set were incompatible.
+.It Bq Er EADDRNOTAVAIL
+The destination address contained an IP address not equal to
+.Dv INADDR_ANY
+that was not associated with any interface.
+.El
+.Sh SEE ALSO
+.Xr bind 2 ,
+.Xr recvfrom 2 ,
+.Xr sendto 2 ,
+.Xr socket 2 ,
+.Xr ipfw 4 ,
+.Xr ipfw 8
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org ,
+Whistle Communications Corp.
+.Sh BUGS
+This is an attempt to provide a clean way for user mode processes
+to implement various IP tricks like address translation, but it
+could be cleaner, and it is too dependent on
+.Xr ipfw 8 .
+.Pp
+It is questionable whether incoming fragments should be reassembled
+before being diverted.
+For example, if only some fragments of a
+packet destined for another machine do not get routed through the
+local machine, the packet is lost.
+This should probably be
+a settable socket option in any case.
diff --git a/share/man/man4/dpt.4 b/share/man/man4/dpt.4
new file mode 100644
index 0000000..fecb7a5
--- /dev/null
+++ b/share/man/man4/dpt.4
@@ -0,0 +1,115 @@
+.\"
+.\" Copyright (c) 1998 Justin T. Gibbs
+.\" 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. 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$
+.\"
+.Dd June 18, 2006
+.Dt DPT 4
+.Os
+.Sh NAME
+.Nm dpt
+.Nd DPT RAID Controller SCSI driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device dpt"
+.Pp
+For one or more EISA cards:
+.Cd "device eisa"
+.Pp
+For one or more ISA cards:
+.Cd "device isa"
+.Pp
+For one or more PCI cards:
+.Cd "device pci"
+.Pp
+To allow PCI adapters to use memory mapped I/O if enabled:
+.Cd options DPT_ALLOW_MEMIO
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+dpt_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports DPT RAID SCSI controllers.
+.Pp
+SmartRAID (PM3???) are "Enterprise" class cards,
+and SmartCache (PM2???) cards are in the "Workstation" class.
+The Gen 4 Smart Cache IV products were a re-issue of the Gen 3 utilizing
+upgraded (and cheaper to produce) silicon.
+The PM3334 (Smart RAID III) was not revamped as there was no upgraded silicon
+(68040 processor) and it was using the best DPT made.
+Note there has been customer confusion over the faster enterprise class card
+supported by this driver being an older generation.
+The Gen5 cards are supported by the
+.Xr asr 4
+driver.
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the following RAID adapters:
+.Pp
+.Bl -bullet -compact
+.It
+DPT Smart Cache Plus
+.It
+Smart Cache II (PM2?2?, PM2022 [EISA], PM2024/PM2124 [PCI]) (Gen2)
+.It
+Smart RAID II (PM3?2?, PM3021, PM3222)
+.It
+Smart Cache III (PM2?3?)
+.It
+Smart RAID III (PM3?3?, PM3332 [EISA], PM3334UW [PCI]) (Gen3)
+.It
+Smart Cache IV (PM2?4?, PM2042 [EISA], PM2044/PM2144 [PCI]) (Gen4)
+.It
+Smart RAID IV
+.El
+.Sh SEE ALSO
+.Xr asr 4 ,
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 2.2.6 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Simon Shapiro
+and ported to the CAM SCSI system by
+.An Justin T. Gibbs .
diff --git a/share/man/man4/dummynet.4 b/share/man/man4/dummynet.4
new file mode 100644
index 0000000..a5d0e6c
--- /dev/null
+++ b/share/man/man4/dummynet.4
@@ -0,0 +1,79 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 28, 2002
+.Dt DUMMYNET 4
+.Os
+.Sh NAME
+.Nm dummynet
+.Nd traffic shaper, bandwidth manager and delay emulator
+.Sh DESCRIPTION
+The
+.Nm
+system facility permits the control of traffic
+going through the various network interfaces, by applying bandwidth
+and queue size limitations, implementing different scheduling and queue
+management policies, and emulating delays and losses.
+.Pp
+The user interface for
+.Nm
+is implemented by the
+.Xr ipfw 8
+utility, so please refer to the
+.Xr ipfw 8
+manpage for a complete description of the
+.Nm
+capabilities and how to use it.
+.Ss Kernel Options
+The following options in the kernel configuration file are related to
+.Nm
+operation:
+.Pp
+.Bl -tag -width ".Dv IPFIREWALL_VERBOSE_LIMIT" -offset indent -compact
+.It Dv IPFIREWALL
+enable ipfirewall (required for
+.Nm )
+.It Dv IPFIREWALL_VERBOSE
+enable firewall output
+.It Dv IPFIREWALL_VERBOSE_LIMIT
+limit firewall output
+.It Dv DUMMYNET
+enable
+.Nm
+operation
+.It Dv HZ
+set the timer granularity
+.El
+.Pp
+Generally, the following options are required:
+.Bd -literal -offset indent
+options IPFIREWALL
+options DUMMYNET
+options HZ=1000 # strongly recommended
+.Ed
+.Pp
+Additionally, one may want to increase the number
+of mbuf clusters (used to store network packets) according to the
+sum of the bandwidth-delay products and queue sizes of all configured
+pipes.
+.Sh SEE ALSO
+.Xr setsockopt 2 ,
+.Xr if_bridge 4 ,
+.Xr ip 4 ,
+.Xr ipfw 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+facility
+was initially implemented as a testing tool for
+.Tn TCP
+congestion control by
+.An Luigi Rizzo Aq luigi@iet.unipi.it ,
+as described on ACM Computer Communication Review, Jan.97 issue.
+Later it has been modified to work at the
+.Tn IP
+and bridging levels, integrated with the
+.Xr ipfw 4
+packet filter, and extended to
+support multiple queueing and scheduling policies.
diff --git a/share/man/man4/ed.4 b/share/man/man4/ed.4
new file mode 100644
index 0000000..49920e2
--- /dev/null
+++ b/share/man/man4/ed.4
@@ -0,0 +1,422 @@
+.\"
+.\" Copyright (c) 1994, David Greenman
+.\" 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 David Greenman.
+.\" 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 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$
+.\"
+.Dd January 27, 2008
+.Dt ED 4
+.Os
+.Sh NAME
+.Nm ed
+.Nd "NE-2000 and WD-80x3 Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device ed"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ed_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for 8 and 16bit Ethernet cards that are based on
+the National Semiconductor DS8390 and similar NICs manufactured by
+other companies.
+The
+.Nm
+driver also supports many PC Card chips which interface via MII to a PHY.
+Axiom's AX88790, AX88190 and AX88190A;
+DLink's DL10019 and DL10022; and
+Tamarack's TC5299J chips all support internal or external MII/PHY combinations.
+Realtek's PCI and ISA RTL80x9-based cards are also supported.
+For these chipsets, autonegotiation and status reporting are supported.
+.Pp
+The
+.Nm
+driver uses a unique multi-buffering mechanism to achieve high transmit performance.
+When using 16bit ISA cards, as high as 97% of the theoretical maximum performance of
+the IEEE 802.3 CSMA Ethernet is possible.
+.Pp
+In addition to the standard port and IRQ specifications, the
+.Nm
+driver also supports a number of
+.Cd flags
+which can force 8/16bit mode, enable/disable multi-buffering, and select the default
+interface type (AUI/BNC, and for cards with twisted pair, AUI/10BaseT).
+.Pp
+The
+.Cd flags
+are a bit field, and are summarized as follows:
+.Bl -tag -width indent
+.It Li 0x01
+Disable transceiver.
+On those cards which support it, this flag causes the transceiver to
+be disabled and the AUI connection to be used by default.
+.It Li 0x02
+Force 8bit mode.
+This flag forces the card to 8bit mode regardless of how the
+card identifies itself.
+This may be needed for some clones which incorrectly
+identify themselves as 16bit, even though they only have an 8bit interface.
+This flag takes precedence over force 16bit mode.
+.It Li 0x04
+Force 16bit mode.
+This flag forces the card to 16bit mode regardless of how the
+card identifies itself.
+This may be needed for some clones which incorrectly
+identify themselves as 8bit, even though they have a 16bit ISA interface.
+.It Li 0x08
+Disable transmitter multi-buffering.
+This flag disables the use of multiple
+transmit buffers and may be necessary in rare cases where packets are sent out
+faster than a machine on the other end can handle (as evidenced by severe packet
+lossage).
+Some
+.No ( non- Ns Fx
+:-)) machines have terrible Ethernet performance
+and simply cannot cope with 1100K+ data rates.
+Use of this flag also provides
+one more packet worth of receiver buffering, and on 8bit cards, this may help
+reduce receiver lossage.
+.El
+.Pp
+When using a 3c503 card, the AUI connection may be selected by specifying the
+.Cm link2
+option to
+.Xr ifconfig 8
+(BNC is the default).
+.Sh HARDWARE
+The
+.Nm
+driver supports the following Ethernet NICs:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3c503 Etherlink II
+.Pq Cd "options ED_3C503"
+.It
+AR-P500 Ethernet
+.It
+Accton EN1644 (old model), EN1646 (old model), EN2203 (old model) (110pin)
+(flags 0xd00000)
+.It
+Accton EN2212/EN2216/UE2216
+.It
+Allied Telesis CentreCOM LA100-PCM_V2
+.It
+Allied Telesis LA-98 (flags 0x000000) (PC-98)
+.It
+Allied Telesis SIC-98, SIC-98NOTE (110pin), SIU-98 (flags 0x600000) (PC-98)
+.It
+Allied Telesis SIU-98-D (flags 0x610000) (PC-98)
+.It
+AmbiCom 10BaseT card
+.It
+Bay Networks NETGEAR FA410TXC Fast Ethernet
+.It
+Belkin F5D5020 PC Card Fast Ethernet
+.It
+Billionton LM5LT-10B Ethernet/Modem PC Card
+.It
+Bromax iPort 10/100 Ethernet PC Card
+.It
+Bromax iPort 10 Ethernet PC Card
+.It
+Buffalo LPC2-CLT, LPC3-CLT, LPC3-CLX, LPC4-TX PC Card
+.It
+CNet BC40 adapter
+.It
+Compex Net-A adapter
+.It
+Compex RL2000
+.It
+Contec C-NET(98), RT-1007(98), C-NET(9N) (110pin) (flags 0xa00000) (PC-98)
+.It
+Contec C-NET(98)E-A, C-NET(98)L-A, C-NET(98)P (flags 0x300000) (PC-98)
+.It
+Corega Ether98-T (flags 0x000000) (PC-98)
+.It
+Corega Ether PCC-T/EtherII PCC-T/FEther PCC-TXF/PCC-TXD PCC-T/Fether II TXD
+.It
+Corega LAPCCTXD (TC5299J)
+.It
+CyQ've ELA-010
+.It
+DEC EtherWorks DE305
+.It
+Danpex EN-6200P2
+.It
+D-Link DE-298, DE-298P (flags 0x500000) (PC-98)
+.It
+D-Link DE-650/660
+.It
+D-Link IC-CARD/IC-CARD+ Ethernet
+.It
+ELECOM LD-98P (flags 0x500000) (PC-98)
+.It
+ELECOM LD-BDN, LD-NW801G (flags 0x200000) (PC-98)
+.It
+ELECOM Laneed LD-CDL/TX, LD-CDF, LD-CDS, LD-10/100CD, LD-CDWA (DP83902A)
+.It
+Hawking PN652TX PC Card (AX88790)
+.It
+HP PC Lan+ 27247B and 27252A
+.Pq Cd "options ED_HPP"
+.It
+IBM Creditcard Ethernet I/II
+.It
+ICM AD-ET2-T, DT-ET-25, DT-ET-T5, IF-2766ET, IF-2771ET, NB-ET-T (110pin)
+(flags 0x500000) (PC-98)
+.It
+I-O DATA LA/T-98, LA/T-98SB, LA2/T-98, ET/T-98 (flags 0x900000) (PC-98)
+.It
+I-O DATA ET2/T-PCI
+.It
+I-O DATA PCLATE
+.It
+Kansai KLA-98C/T (flags 0x900000) (PC-98)
+.It
+Kingston KNE-PC2, CIO10T, KNE-PCM/x Ethernet
+.It
+KTI ET32P2 PCI
+.It
+Linksys EC2T/PCMPC100/PCM100, PCMLM56
+.It
+Linksys EtherFast 10/100 PC Card, Combo PCMCIA Ethernet Card (PCMPC100 V2)
+.It
+Logitec LAN-98T (flags 0xb00000) (PC-98)
+.It
+MACNICA Ethernet ME1 for JEIDA
+.It
+MACNICA ME98 (flags 0x900000) (PC-98)
+.It
+MACNICA NE2098 (flags 0x400000) (PC-98)
+.It
+MELCO EGY-98 (flags 0x300000) (PC-98)
+.It
+MELCO LGH-98, LGY-98, LGY-98-N (110pin), IND-SP, IND-SS (flags 0x400000) (PC-98)
+.It
+MELCO LGY-PCI-TR
+.It
+MELCO LPC-T/LPC2-T/LPC2-CLT/LPC2-TX/LPC3-TX/LPC3-CLX
+.It
+NDC Ethernet Instant-Link
+.It
+NEC PC-9801-77, PC-9801-78 (flags 0x910000) (PC-98)
+.It
+NEC PC-9801-107, PC-9801-108 (flags 0x800000) (PC-98)
+.It
+National Semiconductor InfoMover NE4100
+.It
+NetGear FA-410TX
+.It
+NetVin NV5000SC
+.It
+Network Everywhere Ethernet 10BaseT PC Card
+.It
+Networld 98X3 (flags 0xd00000) (PC-98)
+.It
+Networld EC-98X, EP-98X (flags 0xd10000) (PC-98)
+.It
+New Media LANSurfer 10+56 Ethernet/Modem
+.It
+New Media LANSurfer
+.It
+Novell NE1000/NE2000/NE2100
+.It
+PLANEX ENW-8300-T
+.It
+PLANEX EN-2298-C (flags 0x200000) (PC-98)
+.It
+PLANEX EN-2298P-T, EN-2298-T (flags 0x500000) (PC-98)
+.It
+PLANEX FNW-3600-T
+.It
+Psion 10/100 LANGLOBAL Combine iT
+.It
+RealTek 8019
+.It
+RealTek 8029
+.It
+Relia Combo-L/M-56k PC Card
+.It
+SMC Elite 16 WD8013
+.It
+SMC Elite Ultra
+.It
+SMC EtherEZ98 (flags 0x000000) (PC-98)
+.It
+SMC WD8003E/WD8003EBT/WD8003S/WD8003SBT/WD8003W/WD8013EBT/WD8013W and clones
+.It
+SMC EZCard PC Card, 8040-TX, 8041-TX (AX88x90), 8041-TX V.2 (TC5299J)
+.It
+Socket LP-E, ES-1000 Ethernet/Serial, LP-E CF, LP-FE CF
+.It
+Surecom EtherPerfect EP-427
+.It
+Surecom NE-34
+.It
+TDK 3000/3400/5670 Fast Etherenet/Modem
+.It
+TDK LAK-CD031, Grey Cell GCS2000 Ethernet Card
+.It
+TDK DFL5610WS Ethernet/Modem PC Card
+.It
+Telecom Device SuperSocket RE450T
+.It
+VIA VT86C926
+.It
+Winbond W89C940
+.It
+Winbond W89C940F
+.El
+.Pp
+C-Bus, ISA, PCI and PC Card devices are supported.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ed%d: failed to clear shared memory at %x - check configuration."
+When the card was probed at system boot time, the
+.Nm
+driver found that it could not clear the card's shared memory.
+This is most commonly
+caused by a BIOS extension ROM being configured in the same address space as the
+Ethernet card's shared memory.
+Either find the offending card and change its BIOS
+ROM to be at an address that does not conflict, or change the
+settings in
+.Xr device.hints 5
+that the card's shared memory is mapped at a
+non-conflicting address.
+.It "ed%d: Invalid irq configuration (%d) must be 2-5 for 3c503."
+The IRQ number that was specified in the
+.Xr device.hints 5
+file is not valid for the 3Com 3c503 card.
+The 3c503 can only be assigned to IRQs 2 through 5.
+.It "ed%d: Cannot find start of RAM."
+.It "ed%d: Cannot find any RAM, start : %d, x = %d."
+The probe of a Gateway card was unsuccessful in configuring the card's packet memory.
+This likely indicates that the card was improperly recognized as a Gateway or that
+the card is defective.
+.It "ed: packets buffered, but transmitter idle."
+Indicates a logic problem in the driver.
+Should never happen.
+.It "ed%d: device timeout"
+Indicates that an expected transmitter interrupt did not occur.
+Usually caused by an
+interrupt conflict with another card on the ISA bus.
+This condition could also be caused if the kernel is configured for a
+different IRQ channel than the one the card is actually using.
+If that is the case, you will have to either reconfigure the card
+using a DOS utility or set the jumpers on the card appropriately.
+.It "ed%d: NIC memory corrupt - invalid packet length %d."
+Indicates that a packet was received with a packet length that was either larger than
+the maximum size or smaller than the minimum size allowed by the IEEE 802.3 standard.
+Usually
+caused by a conflict with another card on the ISA bus, but in some cases may also
+indicate faulty cabling.
+.It "ed%d: remote transmit DMA failed to complete."
+This indicates that a programmed I/O transfer to an NE1000 or NE2000 style card
+has failed to properly complete.
+Usually caused by the ISA bus speed being set
+too fast.
+.It "ed%d: Invalid irq configuration (%ld) must be %s for %s"
+Indicates the device has a different IRQ than supported or expected.
+.It "ed%d: Cannot locate my ports!"
+The device is using a different I/O port than the driver knows about.
+.It "ed%d: Cannot extract MAC address"
+Attempts to get the MAC address failed.
+.It "ed%d: Missing mii!"
+Probing for an MII bus has failed.
+.El
+.Sh CAVEATS
+Early revision DS8390 chips have problems.
+They lock up whenever the receive
+ring-buffer overflows.
+They occasionally switch the byte order
+of the length field in the packet ring header (several different causes
+of this related to an off-by-one byte alignment) - resulting in
+.Qq Li "NIC memory corrupt - invalid packet length"
+messages.
+The card is reset
+whenever these problems occur, but otherwise there is no problem with
+recovering from these conditions.
+.Pp
+The NIC memory access to 3Com and Novell cards is much slower than it is on
+WD/SMC cards; it is less than 1MB/second on 8bit boards and less than 2MB/second
+on the 16bit cards.
+This can lead to ring-buffer overruns resulting in
+dropped packets during heavy network traffic.
+.Pp
+16bit Compex cards identify themselves as being 8bit.
+While these cards will
+work in 8bit mode, much higher performance can be achieved by specifying
+.Cd "flags 0x04"
+(force 16bit mode) in your kernel config file.
+In addition, you should also specify
+.Cd "iosiz 16384"
+to take advantage of the extra 8K of shared memory that 16bit mode provides.
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr device.hints 5 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 1.0 .
+.Sh AUTHORS
+The
+.Nm
+device driver and this manual page were written by
+.An David Greenman .
+.Sh BUGS
+The
+.Nm
+driver is a bit too aggressive about resetting the card whenever any bad
+packets are received.
+As a result, it may throw out some good packets which
+have been received but not yet transferred from the card to main memory.
+.Pp
+The
+.Nm
+PC Card attachment supports the D-Link DMF650TX LAN/Modem card's Ethernet
+port only at this time.
diff --git a/share/man/man4/edsc.4 b/share/man/man4/edsc.4
new file mode 100644
index 0000000..075e736
--- /dev/null
+++ b/share/man/man4/edsc.4
@@ -0,0 +1,111 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)lo.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd March 25, 2007
+.Dt EDSC 4
+.Os
+.Sh NAME
+.Nm edsc
+.Nd Ethernet discard network interface
+.Sh SYNOPSIS
+.Cd "device edsc"
+.Sh DESCRIPTION
+The
+.Nm
+interface is a software discard mechanism which may be
+used for performance analysis and software testing.
+It imitates an Ethernet device, which
+allows for its use in conjunction with such drivers as
+.Xr if_bridge 4
+and
+.Xr vlan 4 .
+.Pp
+As with other network interfaces, an
+.Nm
+interface must have network addresses assigned for each address family
+with which it is to be used.
+These addresses may be set or changed with the
+.Dv SIOCSIFADDR
+.Xr ioctl 2
+or
+.Xr ifconfig 8
+utility.
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr arp 4 ,
+.Xr if_bridge 4 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr vlan 4 ,
+.Xr rc.conf 5 ,
+.Xr arp 8 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device was derived from the
+.Xr disc 4
+device and first appeared in
+.Fx 6.3 .
+This manpage was adapted from
+.Xr disc 4 .
+.Sh CAVEATS
+Since outgoing packets are just discarded by
+.Nm ,
+ARP requests stay unreplied.
+Consequently, an IP packet cannot be sent via
+.Nm
+until a static
+.Xr arp 4
+entry is created for its next hop using
+.Xr arp 8 .
+.Pp
+Initially an
+.Nm
+interface has a zero link level address.
+It can be changed with
+.Xr ifconfig 8
+.Cm lladdr
+if needed.
diff --git a/share/man/man4/ef.4 b/share/man/man4/ef.4
new file mode 100644
index 0000000..c93d5f1
--- /dev/null
+++ b/share/man/man4/ef.4
@@ -0,0 +1,111 @@
+.\"
+.\" Copyright (c) 1999, Boris Popov
+.\" 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$
+.\"
+.Dd June 20, 1999
+.Dt EF 4
+.Os
+.Sh NAME
+.Nm ef
+.Nd "pseudo-device driver providing support for multiple Ethernet frame types"
+.Sh SYNOPSIS
+.Cd "device ef"
+.Sh DESCRIPTION
+The
+.Nm
+pseudo-device driver clones each Ethernet type device with four
+additional interfaces.
+Each of them is capable to send or receive only
+one predefined frame type.
+.Pp
+Names for the new interfaces are created by adding a
+.Ar fN
+suffix to an existing device name.
+Where
+.Ar N
+is a device unit which can have one of the following values:
+.Bd -literal -offset indent
+0 interface with an Ethernet_II frame
+1 interface with a Novell Ethernet_802.3 frame
+2 interface with an Ethernet_802.2 frame
+3 interface with an Ethernet_802.2/SNAP frame support.
+.Ed
+.Pp
+For example, device
+.Ar ed0
+will be populated with four devices:
+.Ar ed0f0 ,
+.Ar ed0f1 ,
+.Ar ed0f2
+and
+.Ar ed0f3 .
+.Pp
+After that, each device can be configured as usual:
+.Dl # ifconfig ed0f1 ipx 0x105
+This will configure IPX protocol with network number
+.Ar 0x105
+and
+.Ar Ethernet_802.3
+frame type.
+.Pp
+Please note that it is impossible to configure the IPX protocol on the parent
+.Ar ed0
+device after the
+.Ar if_ef.ko
+driver has been loaded.
+.Pp
+If the parent interface is not configured for any other protocol
+(IP for example), subinterfaces will not function.
+To avoid that, the parent interface should be
+manually marked as
+.Dq up :
+.Dl # ifconfig ed0 up
+.Sh EXAMPLES
+The
+.Nm
+driver can be loaded via the
+.Xr loader.conf 5
+file:
+.Dl if_ef_load="YES"
+.Pp
+In this case, ordinary interface configuration commands can be used
+in the
+.Xr rc.conf 5
+file:
+.Dl network_interfaces="ed2 lo0 tun0 ed2f0 ed2f1"
+.Dl ifconfig_ed2f0_ipx="ipx 0x101"
+.Dl ifconfig_ed2f1_ipx="ipx 0x102"
+.Sh DIAGNOSTICS
+None.
+.Sh CAVEATS
+Avoid to configure the parent Ethernet device for the IPX protocol, after the
+.Nm
+driver is loaded.
+.Sh SEE ALSO
+.Xr ipx 3 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+.An Boris Popov Aq bp@FreeBSD.org .
diff --git a/share/man/man4/ehci.4 b/share/man/man4/ehci.4
new file mode 100644
index 0000000..57d47db
--- /dev/null
+++ b/share/man/man4/ehci.4
@@ -0,0 +1,91 @@
+.\" $NetBSD: ehci.4,v 1.8 2001/11/21 17:22:56 augustss Exp $
+.\"
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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$
+.\"
+.Dd March 20, 2005
+.Dt EHCI 4
+.Os
+.Sh NAME
+.Nm ehci
+.Nd USB Enhanced Host Controller driver
+.Sh SYNOPSIS
+.Cd "device ehci"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn USB
+Enhanced Host Controller Interface,
+which is used by
+.Tn USB
+2.0 controllers.
+.Pp
+.Tn EHCI
+controllers are peculiar in that they can only handle the
+.Tn USB
+2.0 protocol.
+This means that they normally have one or more companion controllers
+(i.e.,
+.Xr ohci 4
+or
+.Xr uhci 4 )
+handling USB 1.x devices.
+Consequently each
+.Tn USB
+connector is electrically connected to two
+.Tn USB
+controllers.
+The handling of this is totally automatic,
+but can be noticed since
+.Tn USB
+1.x and
+.Tn USB
+2.0 devices plugged in to the same
+connector appear to connect to different USB busses.
+.Sh SEE ALSO
+.Xr ohci 4 ,
+.Xr uhci 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.1 .
+.Sh BUGS
+The driver is not finished and is quite buggy.
+.Pp
+There is currently no support for isochronous transfers.
diff --git a/share/man/man4/em.4 b/share/man/man4/em.4
new file mode 100644
index 0000000..fa39825
--- /dev/null
+++ b/share/man/man4/em.4
@@ -0,0 +1,268 @@
+.\" Copyright (c) 2001-2003, Intel 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. Neither the name of the Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+.\"
+.\" * Other names and brands may be claimed as the property of others.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 6, 2008
+.Dt EM 4
+.Os
+.Sh NAME
+.Nm em
+.Nd "Intel(R) PRO/1000 Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device em"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_em_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Gigabit Ethernet adapters based on
+the Intel 82540, 82541ER, 82541PI, 82542, 82543, 82544, 82545, 82546,
+82546EB, 82546GB, 82547, 82571, 81572, 82573, and 82574 Ethernet
+controller chips.
+The driver supports Transmit/Receive checksum offload
+and Jumbo Frames on all but 82542-based adapters.
+Furthermore it supports TCP segmentation offload (TSO) on all adapters but
+those based on the 82543, 82544 and 82547 controller chips.
+For further hardware information, see the
+.Pa README
+included with the driver.
+.Pp
+For questions related to hardware requirements,
+refer to the documentation supplied with your Intel PRO/1000 adapter.
+All hardware requirements listed apply to use with
+.Fx .
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+The maximum MTU size for Jumbo Frames is 16114.
+.Pp
+This driver version supports VLANs.
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enables auto-negotiation for speed and duplex.
+.It Cm 10baseT/UTP
+Sets 10Mbps operation.
+Use the
+.Cm mediaopt
+option to select
+.Cm full-duplex
+mode.
+.It Cm 100baseTX
+Sets 100Mbps operation.
+Use the
+.Cm mediaopt
+option to select
+.Cm full-duplex
+mode.
+.It Cm 1000baseSX
+Sets 1000Mbps operation.
+Only
+.Cm full-duplex
+mode is supported at this speed.
+.It Cm 1000baseTX
+Sets 1000Mbps operation.
+Only
+.Cm full-duplex
+mode is supported at this speed.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Forces full-duplex operation
+.It Cm half-duplex
+Forces half-duplex operation.
+.El
+.Pp
+Only use
+.Cm mediaopt
+to set the driver to
+.Cm full-duplex .
+If
+.Cm mediaopt
+is not specified, the driver defaults to
+.Cm half-duplex .
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Gigabit Ethernet adapters based on the Intel
+82540, 82541ER, 82541PI, 82542, 82543, 82544, 82545, 82546, 82546EB,
+82546GB, 82547, 82571, 82572, 82573, and 82574 controller chips:
+.Pp
+.Bl -bullet -compact
+.It
+Intel PRO/1000 CT Network Connection (82547)
+.It
+Intel PRO/1000 F Server Adapter (82543)
+.It
+Intel PRO/1000 Gigabit Server Adapter (82542)
+.It
+Intel PRO/1000 GT Desktop Adapter (82541PI)
+.It
+Intel PRO/1000 MF Dual Port Server Adapter (82546)
+.It
+Intel PRO/1000 MF Server Adapter (82545)
+.It
+Intel PRO/1000 MF Server Adapter (LX) (82545)
+.It
+Intel PRO/1000 MT Desktop Adapter (82540)
+.It
+Intel PRO/1000 MT Desktop Adapter (82541)
+.It
+Intel PRO/1000 MT Dual Port Server Adapter (82546)
+.It
+Intel PRO/1000 MT Quad Port Server Adapter (82546EB)
+.It
+Intel PRO/1000 MT Server Adapter (82545)
+.It
+Intel PRO/1000 PF Dual Port Server Adapter (82571)
+.It
+Intel PRO/1000 PF Quad Port Server Adapter (82571)
+.It
+Intel PRO/1000 PF Server Adapter (82572)
+.It
+Intel PRO/1000 PT Desktop Adapter (82572)
+.It
+Intel PRO/1000 PT Dual Port Server Adapter (82571)
+.It
+Intel PRO/1000 PT Quad Port Server Adapter (82571)
+.It
+Intel PRO/1000 PT Server Adapter (82572)
+.It
+Intel PRO/1000 T Desktop Adapter (82544)
+.It
+Intel PRO/1000 T Server Adapter (82543)
+.It
+Intel PRO/1000 XF Server Adapter (82544)
+.It
+Intel PRO/1000 XT Server Adapter (82544)
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.It Va hw.em.rxd
+Number of receive descriptors allocated by the driver.
+The default value is 256.
+The 82542 and 82543-based adapters can handle up to 256 descriptors,
+while others can have up to 4096.
+.It Va hw.em.txd
+Number of transmit descriptors allocated by the driver.
+The default value is 256.
+The 82542 and 82543-based adapters can handle up to 256 descriptors,
+while others can have up to 4096.
+.It Va hw.em.rx_int_delay
+This value delays the generation of receive interrupts in units of
+1.024 microseconds.
+The default value is 0, since adapters may hang with this feature
+being enabled.
+.It Va hw.em.rx_abs_int_delay
+If
+.Va hw.em.rx_int_delay
+is non-zero, this tunable limits the maximum delay in which a receive
+interrupt is generated.
+.It Va hw.em.tx_int_delay
+This value delays the generation of transmit interrupts in units of
+1.024 microseconds.
+The default value is 64.
+.It Va hw.em.tx_abs_int_delay
+If
+.Va hw.em.tx_int_delay
+is non-zero, this tunable limits the maximum delay in which a transmit
+interrupt is generated.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "em%d: Unable to allocate bus resource: memory"
+A fatal initialization error has occurred.
+.It "em%d: Unable to allocate bus resource: interrupt"
+A fatal initialization error has occurred.
+.It "em%d: watchdog timeout -- resetting"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SUPPORT
+For general information and support,
+go to the Intel support website at:
+.Pa http://support.intel.com .
+.Pp
+If an issue is identified with the released source code on the supported kernel
+with a supported adapter, email the specific information related to the
+issue to
+.Aq freebsdnic@mailbox.intel.com .
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr igb 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Intel Corporation Aq freebsdnic@mailbox.intel.com .
+.Sh BUGS
+Hardware-assisted VLAN processing is disabled by default.
+You can enable it on an
+.Nm
+interface using
+.Xr ifconfig 8 .
diff --git a/share/man/man4/en.4 b/share/man/man4/en.4
new file mode 100644
index 0000000..a256b9e
--- /dev/null
+++ b/share/man/man4/en.4
@@ -0,0 +1,78 @@
+.\" $FreeBSD$
+.\"
+.Dd July 16, 2005
+.Dt EN 4
+.Os
+.Sh NAME
+.Nm en
+.Nd "device driver for Midway-based ATM interfaces"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device en"
+.Cd "device atm"
+.Cd "device utopia"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_en_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver supports Midway-based ATM interfaces including the
+Efficient Networks, Inc.\& ENI-155 and Adaptec ANA-59x0.
+Midway is an AAL5 SAR (Segmentation and Reassembly) chip.
+.Pp
+For configuring the card for IP see
+.Xr natmip 4 .
+.Pp
+The following sysctls are recognized by the driver additionally to those
+handled by
+.Xr utopia 4 :
+.Bl -tag -width indent
+.It Va hw.atm.enX.istats
+Contains an array of
+.Vt uint32_t
+with internal driver statistics.
+.It Va hw.atm.enX.debug
+This is a bit map of debugging options.
+This variable is only available when the driver is compiled with debugging
+support.
+.El
+.Pp
+The driver supports the media options
+.Cm sdh ,
+.Cm noscramb
+and
+.Cm unassigned
+(see
+.Xr utopia 4 ) .
+.Sh DIAGNOSTICS
+.Bd -literal
+en0 <Efficient Networks ENI-155p> rev 0 int a irq 5 on pci0:16
+en0: ATM midway v0, board IDs 6.0, Utopia (pipelined), 512KB on-board RAM
+en0: maximum DMA burst length = 64 bytes
+en0: 7 32KB receive buffers, 8 32KB transmit buffers allocated
+.Ed
+.Sh CAVEATS
+The driver extensively uses DMA on PCI.
+The first
+generation PCI chipsets do not work or exhibit poor performance.
+.Sh SEE ALSO
+.Xr natm 4 ,
+.Xr natmip 4 ,
+.Xr utopia 4 ,
+.Xr ifconfig 8 ,
+.Xr route 8
+.Sh AUTHORS
+.An Chuck Cranor
+of Washington University implemented
+.Nm
+driver in 1996 for
+.Nx .
diff --git a/share/man/man4/enc.4 b/share/man/man4/enc.4
new file mode 100644
index 0000000..4b05e57
--- /dev/null
+++ b/share/man/man4/enc.4
@@ -0,0 +1,133 @@
+.\" $OpenBSD: enc.4,v 1.22 2006/05/26 08:51:29 jmc Exp $
+.\"
+.\" Copyright (c) 1999 Angelos D. Keromytis
+.\" 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 Angelos D. Keromytis.
+.\" 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$
+.\"
+.Dd November 28, 2007
+.Dt ENC 4
+.Os
+.Sh NAME
+.Nm enc
+.Nd Encapsulating Interface
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device enc"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+interface is a software loopback mechanism that allows hosts or
+firewalls to filter
+.Xr ipsec 4
+traffic using any firewall package that hooks in via the
+.Xr pfil 9
+framework.
+.Pp
+The
+.Nm
+interface allows an administrator to see incoming and outgoing packets
+before and after they will be or have been processed by
+.Xr ipsec 4
+via
+.Xr tcpdump 1 .
+.Pp
+The
+.Dq Li enc0
+interface inherits all IPsec traffic.
+Thus all IPsec traffic can be filtered based on
+.Dq Li enc0 ,
+and all IPsec traffic could be seen by invoking
+.Xr tcpdump 1
+on the
+.Dq Li enc0
+interface.
+.Pp
+What can be seen with
+.Xr tcpdump 1
+and what will be passed on to the firewalls via the
+.Xr pfil 9
+framework can be independently controlled using the following
+.Xr sysctl 8
+variables:
+.Bl -column net.enc.out.ipsec_filter_mask 0x00000000 0x00000000
+.It Sy "Name Defaults Suggested"
+.It "net.enc.out.ipsec_bpf_mask" 0x00000003 0x00000001
+.It "net.enc.out.ipsec_filter_mask" 0x00000001 0x00000001
+.It "net.enc.in.ipsec_bpf_mask" 0x00000001 0x00000002
+.It "net.enc.in.ipsec_filter_mask" 0x00000001 0x00000002
+.El
+.Pp
+For the incoming path a value of
+.Li 0x1
+means
+.Dq Li before stripping off the outer header
+and
+.Li 0x2
+means
+.Dq Li after stripping off the outer header .
+For the outgoing path
+.Li 0x1
+means
+.Dq Li with only the inner header
+and
+.Li 0x2
+means
+.Dq Li with outer and inner headers .
+.Bd -literal
+incoming path |------|
+---- IPsec processing ---- (before) ---- (after) ----> | |
+ | Host |
+<--- IPsec processing ---- (after) ----- (before) ---- | |
+outgoing path |------|
+.Ed
+.Pp
+Most people will want to run with the suggested defaults for
+.Cm ipsec_filter_mask
+and rely on the security policy database for the outer headers.
+.Sh EXAMPLES
+To see the packets the processed via
+.Xr ipsec 4 ,
+adjust the
+.Xr sysctl 8
+variables according to your need and run:
+.Pp
+.Dl "tcpdump -i enc0"
+.Sh SEE ALSO
+.Xr tcpdump 1 ,
+.Xr bpf 4 ,
+.Xr ipf 4 ,
+.Xr ipfw 4 ,
+.Xr ipsec 4 ,
+.Xr pf 4 ,
+.Xr tcpdump 8
diff --git a/share/man/man4/esp.4 b/share/man/man4/esp.4
new file mode 100644
index 0000000..897ee8e
--- /dev/null
+++ b/share/man/man4/esp.4
@@ -0,0 +1,182 @@
+.\"
+.\" Copyright (c) 2004 Tom Rhodes
+.\" 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$
+.\"
+.Dd September 18, 2005
+.Dt ESP 4
+.Os
+.Sh NAME
+.Nm esp
+.Nd Qlogic FEPS and FAS366 SCSI driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device esp"
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the
+.Tn Qlogic
+FAS216 and FAS408
+.Tn SCSI
+controller chips found in a wide variety of systems and peripheral boards.
+This includes the
+.Tn Qlogic
+.Tn SCSI
+cards found in most
+.Tn Sun
+.Tn Ultra 1e
+and
+.Tn Ultra 2
+machines.
+.Pp
+For
+.Tn Qlogic
+.Tn PCI
+.Tn SCSI
+host adapters, the
+.Xr isp 4
+driver should be used in place of the
+.Nm
+driver.
+.Sh IMPLEMENTATION NOTES
+During the boot sequence, the
+.Nm
+driver
+searches the linked list for LUN info by LUN ID.
+At this point the driver will attach on that instance,
+and then attempt to attach every sub-device.
+.Pp
+There are at least 4 variations of the
+configuration 3 register.
+A second config register must be loaded to inquire the chip revision,
+otherwise the
+.Fn ncr53c9x_reset
+function will not set the defaults correctly.
+.Pp
+The drive attach routine attempts to set the appropriate
+bit to put the chip into Fast
+.Tn SCSI
+mode so that it does not
+have to be figured out each time.
+This will then be stored in the
+.Tn NCR
+registers for later use.
+.Pp
+The
+.Nm
+driver makes use of the
+.Tn LSI
+64854
+.Tn DMA
+engine which contains three independent
+channels designed to interface with
+an NCR539X
+.Tn SCSI
+controller;
+an AM7990 Ethernet controller;
+and certain types of parallel port hardware.
+As such this driver may eventually replace the
+.Xr amd 4
+driver for network hardware.
+.Sh DIAGNOSTICS
+The following driver specific error messages
+may be reported:
+.Bl -diag
+.It "esp: cannot map %d segments"
+The device was unable to map segments while mapping the
+.Tn SCSI
+devices in
+.Tn DMA
+mode.
+.It "unknown variant %d, devices not attached"
+An unknown version of the card was found and devices will
+not be attached.
+.It "Unhandled function code %d"
+The device returned a function code which the driver is
+unable to handle, most likely during negotiation.
+.It "esp:%d:%d: selection failed %d left in FIFO"
+The target left the command phase prematurely.
+If a command did not reach the device then it will
+be reported as shown above.
+.It "invalid state: %d"
+The device has reached an invalid state.
+.El
+.Sh SEE ALSO
+.Xr amd 4 ,
+.Xr isp 4 ,
+.Xr scbus 4 ,
+.Xr camcontrol 8
+.Pp
+.Bl -item -compact
+.It
+.Pa http://www.qlc.com/
+.It
+.Pa http://www.sun.com/
+.El
+.Sh HISTORY
+The
+.Nm
+driver was written for
+.Nx
+by
+.An Eric S. Hvozda .
+The
+.Nm
+driver was then ported to
+.Fx 5.3
+by
+.An Scott Long Aq scottl@FreeBSD.org .
+.Sh AUTHORS
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+instead of porting the original from
+.Nx .
+.Sh BUGS
+The
+.Nm
+driver includes the sbus front-end but lacks the
+.Tn PCI
+front-end.
+Thus it can only support the
+.Tn FEPS/FAS366
+.Tn SCSI
+found in
+.Tn Sun
+.Tn Ultra 1e
+and
+.Tn Ultra 2
+machines at this time.
+.Pp
+This driver should eventually replace the
+.Xr amd 4
+driver, but that requires porting the
+.Tn PCI
+front-end mentioned above.
diff --git a/share/man/man4/et.4 b/share/man/man4/et.4
new file mode 100644
index 0000000..2cb2ccf
--- /dev/null
+++ b/share/man/man4/et.4
@@ -0,0 +1,180 @@
+.\"
+.\" Copyright (c) 2007 The DragonFly 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.
+.\" 3. Neither the name of The DragonFly Project 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 COPYRIGHT HOLDERS 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
+.\" COPYRIGHT HOLDERS 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$
+.\"
+.Dd July 14, 2008
+.Dt ET 4
+.Os
+.Sh NAME
+.Nm et
+.Nd "Agere ET1310 10/100/Gigabit Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device et"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_et_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports PCI Express Ethernet adapters based on the Agere ET1310 chip.
+.\".Pp
+.\"Support for Jumbo Frames is provided via the interface MTU setting.
+.\"Selecting an MTU larger than 1500 bytes with the
+.\".Xr ifconfig 8
+.\"utility configures the adapter to receive and transmit Jumbo Frames.
+.\"The maximum MTU setting for Jumbo Frames is 15572.
+.\"This value coincides with the maximum Jumbo Frames size of 15594.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width 10baseT/UTP -compact
+.It autoselect
+Enable autoselection of the media types and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.Pp
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.Pp
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.Pp
+.It 1000baseT
+Set 1000Mbps (Gigabit Ethernet) operation.
+The
+.Ar mediaopt
+option can only be set to
+.Ar full-duplex
+mode.
+.El
+.Pp
+The
+.Nm
+driver supports the following
+.Ar media
+options:
+.Pp
+.Bl -tag -width full-duplex -compact
+.It full-duplex
+Force full-duplex operation.
+.Pp
+.It half-duplex
+Force half-duplex operation.
+.El
+.Pp
+Note that the 1000baseT media type is only available
+if it is supported by the adapter.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh TUNABLES
+.Bl -tag -width ".Va hw.et.rx_intr_npkts"
+.It Va hw.et.rx_intr_npkts
+This value controls how many packets should be received
+before a receive interrupt is generated.
+The default value is 32.
+It is recommended to set this value above 38 to prevent the host from being
+livelocked under a high degree of stress.
+.It Va hw.et.rx_intr_delay
+This value delays the generation of receive interrupts
+in units of ~4 microseconds.
+It is used together with
+.Va hw.et.rx_intr_npkts
+to achieve RX interrupt moderation.
+The default value is 20.
+.It Va hw.et.tx_intr_nsegs
+This value controls how many segments (not packets) should be transmitted
+before a transmit interrupt is generated.
+The default value is 126.
+It is recommended to set this value below 280 to prevent
+the TX ring from underflowing.
+.It Va hw.et.timer
+This value controls how often a timer interrupt should be generated.
+It is used together with
+.Va hw.et.tx_intr_nsegs
+to achieve TX interrupt moderation.
+The default value is 1000000000 (nanoseconds).
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Dx 1.11 .
+The first
+.Fx
+release to include it was
+.Fx 8.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Sepherosa Ziehau Aq sepherosa@gmail.com
+for
+.Dx .
+It was ported to
+.Fx
+by
+.An Xin LI Aq delphij@FreeBSD.org .
diff --git a/share/man/man4/exca.4 b/share/man/man4/exca.4
new file mode 100644
index 0000000..90b1330
--- /dev/null
+++ b/share/man/man4/exca.4
@@ -0,0 +1,40 @@
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd February 23, 2003
+.Dt EXCA 4
+.Os
+.Sh NAME
+.Nm exca
+.Nd helper module for PC Card and CardBus systems
+.Sh DESCRIPTION
+The
+.Nm
+module is used to implement the Intel ExCA interface to
+PC Cards.
+.Sh SEE ALSO
+.Xr pccbb 4 ,
+.Xr pcic 4
diff --git a/share/man/man4/faith.4 b/share/man/man4/faith.4
new file mode 100644
index 0000000..3f13cd6
--- /dev/null
+++ b/share/man/man4/faith.4
@@ -0,0 +1,134 @@
+.\" $KAME: faith.4,v 1.9 2001/04/27 17:26:35 itojun Exp $
+.\"
+.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE 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.
+.\" 3. Neither the name of the project 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 PROJECT 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 PROJECT 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$
+.\"
+.Dd April 10, 1999
+.Dt FAITH 4
+.Os
+.Sh NAME
+.Nm faith
+.Nd IPv6-to-IPv4 TCP relay capturing interface
+.Sh SYNOPSIS
+.Cd "device faith"
+.Sh DESCRIPTION
+The
+.Nm
+interface captures IPv6 TCP traffic,
+for implementing userland IPv6-to-IPv4 TCP relay
+like
+.Xr faithd 8 .
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Pp
+Special action will be taken when IPv6 TCP traffic is seen on a router,
+and routing table suggests to route it to
+.Nm
+interface.
+In this case, the packet will be accepted by the router,
+regardless of list of IPv6 interface addresses assigned to the router.
+The packet will be captured by an IPv6 TCP socket, if it has
+.Dv IN6P_FAITH
+flag turned on and it has matching address/port pairs.
+In result,
+.Nm
+will let you capture IPv6 TCP traffic to some specific destination addresses.
+Userland programs, such as
+.Xr faithd 8
+can use this behavior to relay IPv6 TCP traffic to IPv4 TCP traffic.
+The program can accept some specific IPv6 TCP traffic, perform
+.Xr getsockname 2
+to get the IPv6 destination address specified by the client,
+and perform application-specific address mapping to relay IPv6 TCP to IPv4 TCP.
+.Pp
+The
+.Dv IN6P_FAITH
+flag on IPv6 TCP socket can be set by using
+.Xr setsockopt 2 ,
+with level equals to
+.Dv IPPROTO_IPV6
+and optname equals to
+.Dv IPv6_FAITH .
+.Pp
+To handle error reports by ICMPv6, some of ICMPv6 packets routed to
+.Nm
+interface will be delivered to IPv6 TCP, as well.
+.Pp
+To understand how
+.Nm
+can be used, take a look at source code of
+.Xr faithd 8 .
+.Pp
+As
+.Nm
+interface implements potentially dangerous operation,
+great care must be taken when configuring
+.Nm
+interface.
+To avoid possible misuse,
+.Xr sysctl 8
+variable
+.Li net.inet6.ip6.keepfaith
+must be set to
+.Li 1
+prior to the use of the interface.
+When
+.Li net.inet6.ip6.keepfaith
+is
+.Li 0 ,
+no packet will be captured by
+.Nm
+interface.
+.Pp
+.Nm
+interface is intended to be used on routers, not on hosts.
+.\"
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr inet6 4 ,
+.Xr faithd 8
+.Rs
+.%A Jun-ichiro itojun Hagino
+.%A Kazu Yamamoto
+.%T "An IPv6-to-IPv4 transport relay translator"
+.%O RFC3142
+.Re
+.Sh HISTORY
+The FAITH IPv6-to-IPv4 TCP relay translator was first appeared in
+WIDE hydrangea IPv6 stack.
diff --git a/share/man/man4/fatm.4 b/share/man/man4/fatm.4
new file mode 100644
index 0000000..51dc6fc
--- /dev/null
+++ b/share/man/man4/fatm.4
@@ -0,0 +1,115 @@
+.\"
+.\" Copyright (c) 2001-2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.\" fatm(4) man page
+.\"
+.Dd May 15, 2003
+.Dt FATM 4
+.Os
+.Sh NAME
+.Nm fatm
+.Nd "device driver for Fore PCA200E ATM interfaces"
+.Sh SYNOPSIS
+.Cd device fatm
+.Cd device utopia
+.Cd device atm
+.Pp
+.Cd options NATM
+.Sh DESCRIPTION
+The
+.Nm
+device driver supports the FORE (now Marconi) PCA200E ATM interface cards.
+The driver interfaces with the
+.Xr natm 4
+framework,
+.Xr netgraph 4
+and HARP.
+It provides only PVC services.
+Signalling, ATMARP, ILMI and other
+higher layer protocols are implemented using
+.Xr netgraph 4
+or HARP.
+.Pp
+For configuring the card for IP see
+.Xr natmip 4 .
+The following sysctls are recognized by the driver additionally to those
+handled by
+.Xr utopia 4 :
+.Bl -tag -width indent
+.It Va hw.atm.fatm Ns Ar N Ns Va .stats
+Returns a device specific statistic list of
+.Vt uint32_t
+statistic counters.
+.It Va hw.atm.fatm Ns Ar N Ns Va .istats
+Returns a list of
+.Vt uint32_t
+with internal driver statistics.
+.It Va hw.atm.fatm Ns Ar N Ns Va .retry_tx
+If this is set packets are stuffed back into the interface's send queue when
+the cards transmit queue is found to be full.
+They are transmitted later.
+If this is not set the packets are dropped.
+It may be useful to set this
+if only UBR traffic is sent.
+.It Va hw.atm.fatm Ns Ar N Ns Va .debug
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+These are debugging flags.
+See
+.Pa src/sys/dev/fatm/if_fatmvar.h
+for the possible flags.
+.El
+.Pp
+The driver supports the media options
+.Cm sdh , noscramb
+and
+.Cm unassigned
+(see
+.Xr utopia 4 ) .
+.Sh DIAGNOSTICS
+.Bd -literal
+fatm0: <FORE PCA200E> mem 0xd5800000-0xd59fffff irq 9 at device 9.0 on pci0
+.Ed
+.Sh SEE ALSO
+.Xr natm 4 ,
+.Xr natmip 4 ,
+.Xr utopia 4
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
+.Sh BUGS
+These cards can CBR shape a single VCC only.
+It is currently possible to
+request more than one CBR connection.
+In this case all the timing will be
+wrong.
+See
+.Xr hatm 4
+for a better card.
diff --git a/share/man/man4/fd.4 b/share/man/man4/fd.4
new file mode 100644
index 0000000..99a0531
--- /dev/null
+++ b/share/man/man4/fd.4
@@ -0,0 +1,105 @@
+.\" Copyright (c) 1990, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)fd.4 8.1 (Berkeley) 6/9/93
+.\" $FreeBSD$
+.\"
+.Dd June 9, 1993
+.Dt FD 4
+.Os
+.Sh NAME
+.Nm fd ,
+.Nm stdin ,
+.Nm stdout ,
+.Nm stderr
+.Nd file descriptor files
+.Sh DESCRIPTION
+The files
+.Pa /dev/fd/0
+through
+.Pa /dev/fd/#
+refer to file descriptors which can be accessed through the file
+system.
+If the file descriptor is open and the mode the file is being opened
+with is a subset of the mode of the existing descriptor, the call:
+.Bd -literal -offset indent
+fd = open("/dev/fd/0", mode);
+.Ed
+.Pp
+and the call:
+.Bd -literal -offset indent
+fd = fcntl(0, F_DUPFD, 0);
+.Ed
+.Pp
+are equivalent.
+.Pp
+Opening the files
+.Pa /dev/stdin ,
+.Pa /dev/stdout
+and
+.Pa /dev/stderr
+is equivalent to the following calls:
+.Bd -literal -offset indent
+fd = fcntl(STDIN_FILENO, F_DUPFD, 0);
+fd = fcntl(STDOUT_FILENO, F_DUPFD, 0);
+fd = fcntl(STDERR_FILENO, F_DUPFD, 0);
+.Ed
+.Pp
+Flags to the
+.Xr open 2
+call other than
+.Dv O_RDONLY ,
+.Dv O_WRONLY
+and
+.Dv O_RDWR
+are ignored.
+.Sh IMPLEMENTATION NOTES
+By default,
+.Pa /dev/fd
+is provided by
+.Xr devfs 5 ,
+which provides nodes for the first three file descriptors.
+Some sites may require nodes for additional file descriptors; these can be
+made available by mounting
+.Xr fdescfs 5
+on
+.Pa /dev/fd .
+.Sh FILES
+.Bl -tag -width /dev/stderr -compact
+.It Pa /dev/fd/#
+.It Pa /dev/stdin
+.It Pa /dev/stdout
+.It Pa /dev/stderr
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr devfs 5 ,
+.Xr fdescfs 5
diff --git a/share/man/man4/fdc.4 b/share/man/man4/fdc.4
new file mode 100644
index 0000000..9ee9561
--- /dev/null
+++ b/share/man/man4/fdc.4
@@ -0,0 +1,344 @@
+.\"
+.\" Copyright (c) 1994 Wilko Bulte
+.\" Copyright (c) 2001 Joerg Wunsch
+.\" 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
+.\"
+.\" 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$
+.\"
+.Dd May 11, 2006
+.Dt FDC 4
+.Os
+.Sh NAME
+.Nm fdc
+.Nd "PC architecture floppy disk controller driver"
+.Sh SYNOPSIS
+.Cd device fdc
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.fdc.0.at="isa"
+.Cd hint.fdc.0.port="0x3F0"
+.Cd hint.fdc.0.irq="6"
+.Cd hint.fdc.0.drq="2"
+.Cd hint.fdc.0.flags="0x0"
+.Cd hint.fd.0.at="fdc0"
+.Cd hint.fd.0.drive="0"
+.Cd hint.fd.0.flags="0x0"
+.Cd hint.fd.1.at="fdc0"
+.Cd hint.fd.1.drive="1"
+.Cd hint.fd.1.flags="0x0"
+.Sh DESCRIPTION
+.Ss Device Usage
+This driver provides access to floppy disk drives.
+Floppy disks using
+either FM (single-density) or MFM (double or high-density) recording
+can be handled.
+.Pp
+Floppy disk controllers can connect up to four drives each.
+The
+.Nm
+driver can currently handle up to two drives per controller (or four
+drives on ACPI).
+Upon
+driver initialization, an attempt is made to find out the type of the
+floppy controller in use.
+The known controller types are either the
+original NE765 or i8272 chips, or alternatively
+.Em enhanced
+controllers that are compatible with the NE72065 or i82077 chips.
+These enhanced controllers (among other enhancements) implement a FIFO
+for floppy data transfers that will automatically be enabled once an
+enhanced chip has been detected.
+This FIFO activation can be disabled
+using the per-controller flags value of
+.Ar 0x1 .
+.Pp
+By default, this driver creates a single device node
+.Pa /dev/fd Ns Ar N
+for each attached drive with number
+.Ar N .
+For historical reasons, device nodes that use a trailing UFS-style
+partition letter (ranging from
+.Sq a
+through
+.Sq h )
+can also be accessed, which will be implemented as symbolic links to
+the main device node.
+.Pp
+Accessing the main device node will attempt to autodetect the density
+of the available medium for multi-density devices.
+Thus it is
+possible to use either a 720 KB medium or a 1440 KB medium in a
+high-density 3.5 inch standard floppy drive.
+Normally, this
+autodetection will only happen once at the first call to
+.Xr open 2
+for the device after inserting the medium.
+This assumes the drive
+offers proper changeline support so media changes can be detected by
+the driver.
+To indicate a drive that does not have the changeline support,
+this can be overridden using the per-drive device flags value of
+.Ar 0x10
+(causing each call to
+.Xr open 2
+to perform the autodetection).
+.Pp
+When trying to use a floppy device with special-density media, other
+device nodes can be created, of the form
+.Pa /dev/fd Ns Ar N . Ns Ar MMMM ,
+where
+.Ar N
+is the drive number, and
+.Ar MMMM
+is a number between one and four digits describing the device density.
+Up to 15 additional subdevices per drive can be created that way.
+The
+administrator is free to decide on a policy how to assign these
+numbers.
+The two common policies are to either implement subdevices
+numbered 1 through 15, or to use a number that describes the medium
+density in kilobytes.
+Initially, each of those devices will be
+configured to the maximal density that is possible for the drive type
+(like 1200 KB for 5.25 inch HD drives or 1440 KB for 3.5 inch HD
+drives).
+The desired density to be used on that subdevice needs to be
+configured using
+.Xr fdcontrol 8 .
+.Pp
+Drive types are configured using the lower four bits of the per-drive
+device flags.
+The following values can be specified:
+.Bl -tag -width 2n -offset indent
+.It Ar 1
+5.25 inch double-density device with 40 cylinders (360 KB native
+capacity)
+.It Ar 2
+5.25 inch high-density device with 80 cylinders (1200 KB native
+capacity)
+.It Ar 3
+3.5 inch double-density device with 80 cylinders (720 KB native
+capacity)
+.It Ar 4
+3.5 inch high-density device with 80 cylinders (1440 KB native
+capacity)
+.It Ar 5
+3.5 inch extra-density device with 80 cylinders (2880 KB native
+capacity, usage currently restricted to at most 1440 KB media)
+.It Ar 6
+Same as type 5, available for compatibility with some BIOSes
+.El
+.Pp
+On IA32 architectures, the drive type can be specified as 0 for the
+drives.
+In that case, the CMOS configuration memory will be
+consulted to obtain the value for that drive.
+The ACPI probe automatically determines these values via the _FDE and
+_FDI methods, but this can be overridden by specifying a drive type hint.
+.Pp
+Normally, each configured drive will be probed at initialization
+time, using a short seek sequence.
+This is intended to find out about
+drives that have been configured but are actually missing or
+otherwise not responding.
+(The ACPI probe method does not perform this seek.)
+In some environments (like laptops with
+detachable drives), it might be desirable to bypass this drive probe,
+and pretend a drive to be there so the driver autoconfiguration will
+work even if the drive is currently not present.
+For that purpose, a
+per-drive device flags value of
+.Ar 0x20
+needs to be specified.
+.Pp
+.Ss Programming Interface
+In addition to the normal read and write functionality, the
+.Nm
+driver offers a number of configurable options using
+.Xr ioctl 2 .
+In order to access any of this functionality, programmers need to
+include the header file
+.In sys/fdcio.h
+into their programs.
+The call to
+.Xr open 2
+can be performed in two possible ways.
+When opening the device
+without the
+.Dv O_NONBLOCK
+flag set, the device is opened in a normal way, which would cause the
+main device nodes to perform automatic media density selection, and which
+will yield a file descriptor that is fully available for any I/O operation
+or any of the following
+.Xr ioctl 2
+commands.
+.Pp
+When opening the device with
+.Dv O_NONBLOCK
+set, automatic media density selection will be bypassed, and the device
+remains in a half-opened state.
+No actual I/O operations are possible, but
+many of the
+.Xr ioctl 2
+commands described below can be performed.
+This mode is intended for
+access to the device without the requirement to have an accessible
+media present, like for status inquiries to the drive, or in order to
+format a medium.
+.Dv O_NONBLOCK
+needs to be cleared before I/O operations are possible on the descriptor,
+which requires a prior specification of the density using the
+.Dv FD_STYPE
+command (see below).
+Operations that are not allowed on the half-opened
+descriptor will cause an error value of
+.Er EAGAIN .
+.Pp
+The following
+.Xr ioctl 2
+commands are currently available:
+.Bl -tag -width ".Dv FD_READID"
+.It Dv FD_FORM
+Used to format a floppy disk medium.
+Third argument is a pointer to a
+.Vt "struct fd_formb"
+specifying which track to format, and which parameters to fill into
+the ID fields of the floppy disk medium.
+.It Dv FD_GTYPE
+Returns the current density definition record for the selected device.
+Third argument is a pointer to
+.Vt "struct fd_type" .
+.It Dv FD_STYPE
+Adjusts the density definition of the selected device.
+Third argument
+is a pointer to
+.Vt "struct fd_type" .
+For the fixed-density subdevices (1 through 15 per drive), this
+operation is restricted to a process with superuser privileges.
+For
+the auto-selecting subdevice 0, the operation is temporarily allowed
+to any process, but this setting will be lost again upon the next
+autoselection.
+This can be used when formatting a new medium (which
+will require to open the device using
+.Dv O_NONBLOCK ,
+and thus to later adjust the density using
+.Dv FD_STYPE ) .
+.It Dv FD_GOPTS
+Obtain the current drive options.
+Third argument is a pointer to
+.Vt int ,
+containing a bitwise union of the following possible flag values:
+.Bl -tag -width ".Dv FDOPT_NOERRLOG"
+.It Dv FDOPT_NORETRY
+Do not automatically retry operations upon failure.
+.It Dv FDOPT_NOERRLOG
+Do not cause
+.Dq "hard error"
+kernel logs for failed I/O operations.
+.It Dv FDOPT_NOERROR
+Do not indicate I/O errors when returning from
+.Xr read 2
+or
+.Xr write 2
+system calls.
+The caller is assumed to use
+.Dv FD_GSTAT
+calls in order to inquire about the success of each operation.
+This
+is intended to allow even erroneous data from bad blocks to be
+retrieved using normal I/O operations.
+.It Dv FDOPT_AUTOSEL
+Device performs automatic density selection.
+Unlike the above flags,
+this one is read-only.
+.El
+.It Dv FD_SOPTS
+Set device options, see above for their meaning.
+Third argument is a
+pointer to
+.Vt int .
+Drive options will always be cleared when closing the descriptor.
+.It Dv FD_DEBUG
+Set the driver debug level.
+Third argument is a pointer to
+.Vt int ,
+level 0 turns off all debugging.
+Only applicable if the driver has
+been configured with
+.Cd "options FDC_DEBUG" .
+.It Dv FD_CLRERR
+Clear the internal low-level error counter.
+Normally, controller-level
+I/O errors are only logged up to
+.Dv FDC_ERRMAX
+errors (currently defined to 100).
+This command resets the counter.
+Requires superuser privileges.
+.It Dv FD_READID
+Read one sector ID field from the floppy disk medium.
+Third argument is
+a pointer to
+.Vt "struct fdc_readid" ,
+where the read data will be returned.
+Can be used to analyze a floppy
+disk medium.
+.It Dv FD_GSTAT
+Return the recent floppy disk controller status, if available.
+Third
+argument is a pointer to
+.Vt "struct fdc_status" ,
+where the status registers (ST0, ST1, ST2, C, H, R, and N) are being
+returned.
+.Er EINVAL
+will be caused if no recent status is available.
+.It Dv FD_GDTYPE
+Returns the floppy disk drive type.
+Third argument is a pointer to
+.Vt "enum fd_drivetype" .
+This type is the same as being used in the per-drive configuration
+flags, or in the CMOS configuration data or ACPI namespace on IA32 systems.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/fd*" -compact
+.It Pa /dev/fd*
+floppy disk device nodes
+.El
+.Sh SEE ALSO
+.Xr fdformat 1 ,
+.Xr fdread 1 ,
+.Xr fdwrite 1 ,
+.Xr ioctl 2 ,
+.Xr open 2 ,
+.Xr read 2 ,
+.Xr write 2 ,
+.Xr fdcontrol 8
+.Sh AUTHORS
+.An -nosplit
+This man page was initially written by
+.An Wilko Bulte ,
+and later vastly rewritten by
+.An J\(:org Wunsch .
diff --git a/share/man/man4/firewire.4 b/share/man/man4/firewire.4
new file mode 100644
index 0000000..9f909f2
--- /dev/null
+++ b/share/man/man4/firewire.4
@@ -0,0 +1,119 @@
+.\" Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
+.\" 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 acknowledgement as bellow:
+.\"
+.\" This product includes software developed by K. Kobayashi and H. Shimokawa
+.\"
+.\" 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$
+.\"
+.Dd April 1, 2006
+.Dt FIREWIRE 4
+.Os
+.Sh NAME
+.Nm firewire
+.Nd IEEE1394 High-performance Serial Bus
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device firewire"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+firewire_load="YES"
+.Ed
+.Sh DESCRIPTION
+.Fx
+provides machine-independent bus support and raw drivers for
+.Nm
+interfaces.
+.Pp
+The
+.Nm
+driver consists of two layers: the controller and the
+bus layer.
+The controller attaches to a physical bus
+(like
+.Xr pci 4 ) .
+The
+.Nm
+bus attaches to the controller.
+Additional drivers can be attached to the bus.
+.Pp
+Up to 63 devices, including the host itself, can be attached to
+a
+.Nm
+bus.
+The root node is dynamically assigned with a PHY device function.
+Also, the other
+.Nm
+bus specific parameters,
+e.g., node ID, cycle master, isochronous resource manager and bus
+manager, are dynamically assigned, after bus reset is initiated.
+On the
+.Nm
+bus, every device is identified by an EUI 64 address.
+.Sh FILES
+.Bl -tag -compact
+.It Pa /dev/fw0.0
+.It Pa /dev/fwmem0.0
+.El
+.Sh SEE ALSO
+.Xr fwe 4 ,
+.Xr fwip 4 ,
+.Xr fwohci 4 ,
+.Xr pci 4 ,
+.Xr sbp 4 ,
+.Xr eui64 5 ,
+.Xr fwcontrol 8 ,
+.Xr kldload 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Katsushi Kobayashi
+and
+.An Hidetoshi Shimokawa
+for the
+.Fx
+project.
+.Sh BUGS
+See
+.Xr fwohci 4
+for security notes.
diff --git a/share/man/man4/fla.4 b/share/man/man4/fla.4
new file mode 100644
index 0000000..1a02deb
--- /dev/null
+++ b/share/man/man4/fla.4
@@ -0,0 +1,59 @@
+.\" Copyright (c) 2003 David E. O'Brien
+.\" 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 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$
+.\"
+.Dd July 13, 2003
+.Dt FLA 4
+.Os
+.Sh NAME
+.Nm fla
+.Nd M-systems DiskOnChip
+.Sh SYNOPSIS
+.Cd "device fla"
+.Sh DESCRIPTION
+DiskOnChip is a family of high-performance,
+single-chip flash disks available in a wide range of capacities.
+The
+.Nm
+driver supports the following in the family of M-systems DiskOnChip:
+.Pp
+.Bl -bullet -compact
+.It
+DiskOnChip2000 (8, 12, 24, 32, 40, 72, 144 MB)
+.It
+DiskOnChipMillenium (8 MB)
+.It
+DiskOnChipMillenium TSOP (8 MB)
+.El
+.Sh SEE ALSO
+.Xr config 8
+.Pp
+.Pa http://www.m-sys.com
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Fx 3.3 .
diff --git a/share/man/man4/fpa.4 b/share/man/man4/fpa.4
new file mode 100644
index 0000000..b751e29
--- /dev/null
+++ b/share/man/man4/fpa.4
@@ -0,0 +1,58 @@
+.\"
+.\" Copyright (c) 1995, Matt Thomas
+.\" All rights reserved.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 13, 1995
+.Dt FPA 4
+.Os
+.Sh NAME
+.Nm fpa ,
+.Nm fea
+.Nd device drivers for DEC FDDI controllers
+.Sh SYNOPSIS
+.Cd "device fpa"
+.Cd "device fea"
+.Pp
+.Fx
+only:
+.Cd "device fddi"
+.Sh DESCRIPTION
+The
+.Nm
+and
+.Nm fea
+device drivers provide support for the DEC DEFPA PCI FDDI Controller and
+the DEC DEFEA EISA FDDI Controller, respectively.
+All variants of either
+controller are supported including the DAS and SAS configurations.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "fea%d: error: desired IRQ of %d does not match device's actual IRQ (%d)"
+The device probe detected that the DEFEA board is configured for a different
+interrupt than the one specified in the kernel configuration file.
+.It "fea%d: error: memory not enabled! ECU reconfiguration required"
+The device probe found that no device memory had been configured on the
+DEFEA.
+Although the DEFEA can be configured with no device memory, this driver
+requires a minimum of 1K device memory to be set up.
+The ECU (EISA Configuration
+Utility) will need to be run to change the settings.
+.El
+.Sh CAVEATS
+Normally, the device driver will not enable the reception of SMT frames.
+However if the IFF_LINK1 flag is set, the device driver will enable the
+reception of SMT frames and pass them up to the Berkeley Packet Filter for
+processing.
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+The
+.Nm
+and
+.Nm fea
+device drivers and this manual page were written by
+.An Matt Thomas .
diff --git a/share/man/man4/fwe.4 b/share/man/man4/fwe.4
new file mode 100644
index 0000000..76fc1ac
--- /dev/null
+++ b/share/man/man4/fwe.4
@@ -0,0 +1,96 @@
+.\" Copyright (c) 2002 Hidetoshi Shimokawa
+.\" 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$
+.\"
+.\"
+.Dd July 16, 2005
+.Dt FWE 4
+.Os
+.Sh NAME
+.Nm fwe
+.Nd "Ethernet emulation driver for FireWire"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device firewire"
+.Cd "device fwe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_fwe_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides non-standard Ethernet emulation over FireWire (IEEE 1394).
+.Pp
+.Xr firewire 4
+and
+.Xr fwohci 4
+must be configured in the kernel as well.
+.Pp
+This driver exploits asynchronous stream over IEEE 1394 to carry Ethernet
+frames.
+The stream channel can be specified by
+the
+.Va hw.firewire.fwe.stream_ch
+.Xr sysctl 8 .
+.Pp
+This driver supports
+.Xr polling 4
+as well if it is compiled with the
+.Dv DEVICE_POLLING
+option.
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr firewire 4 ,
+.Xr fwip 4 ,
+.Xr fwohci 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr ifconfig 8 ,
+.Xr kldload 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+driver and this manual page were written by
+.An Hidetoshi Shimokawa .
+.Sh BUGS
+This driver emulates Ethernet in a very adhoc way and it does not reserve a
+stream channel using an isochronous manager.
+Note that this driver uses a protocol which is very different from RFC 2734
+(IPv4 over IEEE 1394).
diff --git a/share/man/man4/fwip.4 b/share/man/man4/fwip.4
new file mode 100644
index 0000000..c2c9f05
--- /dev/null
+++ b/share/man/man4/fwip.4
@@ -0,0 +1,95 @@
+.\" Copyright (c) 2004 Doug Rabson
+.\" Copyright (c) 2002 Hidetoshi Shimokawa
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt FWIP 4
+.Os
+.Sh NAME
+.Nm fwip
+.Nd "IP over FireWire driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device firewire"
+.Cd "device fwip"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following lines in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+firewire_load="YES"
+if_fwip_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides standard IP over FireWire (IEEE 1394) based on the
+protocols described in RFC 2734 and RFC 3146.
+.Pp
+The
+.Xr firewire 4
+and
+.Xr fwohci 4
+drivers
+must be configured in the kernel as well.
+.Pp
+This driver supports
+.Xr polling 4
+as well if it is compiled with the
+.Dv DEVICE_POLLING
+option.
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr firewire 4 ,
+.Xr fwe 4 ,
+.Xr fwohci 4 ,
+.Xr netintro 4 ,
+.Xr polling 4 ,
+.Xr ifconfig 8 ,
+.Xr kldload 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver and this manual page were written by
+.An Doug Rabson ,
+based on earlier work by
+.An Hidetoshi Shimokawa .
+.Sh BUGS
+This driver currently does not support the MCAP protocol for multicast
+IP over FireWire.
+Multicast packets are treated as broadcast packets which is sufficient
+for most trivial uses of multicast.
diff --git a/share/man/man4/fwohci.4 b/share/man/man4/fwohci.4
new file mode 100644
index 0000000..417aa54
--- /dev/null
+++ b/share/man/man4/fwohci.4
@@ -0,0 +1,159 @@
+.\" Copyright (c) 1998,1999,2000 Katsushi Kobayashi and Hidetoshi Shimokawa
+.\" 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 acknowledgement as bellow:
+.\"
+.\" This product includes software developed by K. Kobayashi and H. Shimokawa
+.\"
+.\" 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$
+.\"
+.\"
+.Dd March 3, 2008
+.Dt FWOHCI 4
+.Os
+.Sh NAME
+.Nm fwohci
+.Nd OHCI FireWire chipset device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device firewire"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+firewire_load="YES"
+.Ed
+.Pp
+To disable physical access (see
+.Sx BUGS
+section for detail), put the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+hw.firewire.phydma_enable=0
+.Ed
+.Pp
+.Sh HARDWARE
+The
+.Nm
+driver provides support for PCI/CardBus FireWire interface cards.
+The driver supports the following IEEE 1394 OHCI chipsets:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec AHA-894x/AIC-5800
+.It
+Apple Pangea
+.It
+Apple UniNorth
+.It
+Intel 82372FB
+.It
+IOGEAR GUF320
+.It
+Lucent / Agere FW322/323
+.It
+NEC uPD72861
+.It
+NEC uPD72870
+.It
+NEC uPD72871/2
+.It
+NEC uPD72873
+.It
+NEC uPD72874
+.It
+National Semiconductor CS4210
+.It
+Ricoh R5C551
+.It
+Ricoh R5C552
+.It
+Sony CX3022
+.It
+Sony i.LINK (CXD3222)
+.It
+Sun PCIO-2 (RIO 1394)
+.It
+Texas Instruments PCI4410A
+.It
+Texas Instruments PCI4450
+.It
+Texas Instruments PCI4451
+.It
+Texas Instruments TSB12LV22
+.It
+Texas Instruments TSB12LV23
+.It
+Texas Instruments TSB12LV26
+.It
+Texas Instruments TSB43AA22
+.It
+Texas Instruments TSB43AB21/A/AI/A-EP
+.It
+Texas Instruments TSB43AB22/A
+.It
+Texas Instruments TSB43AB23
+.It
+Texas Instruments TSB82AA2
+.It
+VIA Fire II (VT6306)
+.El
+.Sh SEE ALSO
+.Xr firewire 4 ,
+.Xr fwe 4 ,
+.Xr fwip 4 ,
+.Xr sbp 4 ,
+.Xr fwcontrol 8 ,
+.Xr kldload 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An Katsushi Kobayashi
+and
+.An Hidetoshi Shimokawa .
+.Sh BUGS
+The driver allows physical access from any nodes on the bus by default.
+This means that any devices on the bus can read and modify any memory space
+which can be accessed by an IEEE 1394 OHCI chip.
+It is allowed mostly for
+.Xr sbp 4
+devices.
+This should be changed to allow it only for specific devices.
+Anyway, FireWire is a bus and not expected to be connected with
+un-trustable devices because a node can monitor all the traffic.
diff --git a/share/man/man4/fxp.4 b/share/man/man4/fxp.4
new file mode 100644
index 0000000..5057100
--- /dev/null
+++ b/share/man/man4/fxp.4
@@ -0,0 +1,184 @@
+.\"
+.\" Copyright (c) 1997 David E. O'Brien
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd December 15, 2008
+.Dt FXP 4
+.Os
+.Sh NAME
+.Nm fxp
+.Nd "Intel EtherExpress PRO/100 Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device fxp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_fxp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Ethernet adapters based on the Intel
+i82557, i82558, i82559, i82550, and i82562 chips.
+The driver supports TCP/UDP/IP checksum offload for both transmit
+and receive on i82550 and i82551.
+On i82559 only TCP/UDP checksum offload for receive is supported.
+TCP segmentation offload (TSO) for IPv4 as well as VLAN hardware
+tag insertion/stripping is supported on i82550 and i82551.
+Wake On Lan (WOL) support is provided on all controllers
+except i82557, i82259ER and early i82558 revisions.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options
+.It 10baseT/UTP
+Set 10Mbps operation
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Set full duplex operation
+.El
+.Pp
+Note that 100baseTX media type is not available on the Pro/10.
+For further information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+The
+.Nm
+driver supports reception and transmission of extended frames
+for
+.Xr vlan 4 .
+This capability of
+.Nm
+can be controlled by means of the
+.Cm vlanmtu
+parameter
+to
+.Xr ifconfig 8 .
+.Pp
+The
+.Nm
+driver also supports a special link option:
+.Bl -tag -width link0
+.It Cm link0
+Some chip revisions have loadable microcode which can be used to reduce the
+interrupt load on the host cpu.
+Not all boards have microcode support.
+Setting the
+.Cm link0
+flag with
+.Xr ifconfig 8
+will download the microcode to the chip if it is available.
+.El
+.Sh HARDWARE
+Adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Intel EtherExpress PRO/10
+.It
+Intel InBusiness 10/100
+.It
+Intel PRO/100B / EtherExpressPRO/100 B PCI Adapter
+.It
+Intel PRO/100+ Management Adapter
+.It
+Intel PRO/100 VE Desktop Adapter
+.It
+Intel PRO/100 VM Network Connection
+.It
+Intel PRO/100 M Desktop Adapter
+.It
+Intel PRO/100 S Desktop, Server and Dual-Port Server Adapters
+.It
+Contec C-NET(PI)-100TX (PC-98)
+.It
+NEC PC-9821Ra20, Rv20, Xv13, Xv20 internal 100Base-TX (PC-98)
+.It
+NEC PC-9821X-B06 (PC-98)
+.It
+Many on-board network interfaces on Intel motherboards
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "fxp%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "fxp%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "fxp%d: Failed to malloc memory"
+There are not enough mbuf's available for allocation.
+.It "fxp%d: device timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "fxp%d: Microcode loaded, int_delay: %d usec bundle_max: %d"
+The chip has successfully downloaded the microcode, and changed the
+parameterized values to the given settings.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An David Greenman .
+It has then been updated to use the busdma API and made endian-clean by
+.An Maxime Henrion .
+This manual page was written by
+.An David E. O'Brien .
diff --git a/share/man/man4/gbde.4 b/share/man/man4/gbde.4
new file mode 100644
index 0000000..e3bc6c7
--- /dev/null
+++ b/share/man/man4/gbde.4
@@ -0,0 +1,304 @@
+.\"
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd October 19, 2002
+.Os
+.Dt GBDE 4
+.Sh NAME
+.Nm gbde
+.Nd Geom Based Disk Encryption
+.Sh SYNOPSIS
+.Cd "options GEOM_BDE"
+.Sh DESCRIPTION
+.Bf -symbolic
+NOTICE:
+Please be aware that this code has not yet received much review
+and analysis by qualified cryptographers and therefore should be considered
+a slightly suspect experimental facility.
+.Pp
+We cannot at this point guarantee that the on-disk format will not change
+in response to reviews or bug-fixes, so potential users are advised to
+be prepared that
+.Xr dump 8 Ns / Ns Xr restore 8
+based migrations may be called for in the future.
+.Ef
+.Pp
+The objective of this facility is to provide a high degree of
+denial of access to the contents of a
+.Dq cold
+storage device.
+.Pp
+Be aware that if the computer is compromised while up and running
+.Em and
+the storage device is actively attached and opened with a valid
+pass-phrase, this facility offers no protection or denial of access
+to the contents of the storage device.
+.Pp
+If, on the other hand, the device is
+.Dq cold ,
+it should present a formidable
+challenge for an attacker to gain access to the contents in the absence of
+a valid pass-phrase.
+.Pp
+Four cryptographic barriers must be passed to gain access to the data,
+and only a valid pass-phrase will yield this access.
+.Pp
+When the pass-phrase is entered, it is hashed with SHA2 into a 512 bit
+.Dq key-material .
+This is a way of producing cryptographic usable keys from a typically
+.No all- Ns Tn ASCII
+pass-phrase of an unpredictable user-selected length.
+.Ss First barrier: the location of the \&"lock-sector".
+During initialization, up to four independent but mutually aware
+.Dq lock
+sectors are written to the device in randomly chosen
+locations.
+These lock-sectors contain the 2048 random bit master-key and a number
+of parameters of the layout geometry (more on this later).
+Since the entire device will contain isotropic data, there is no
+short-cut to rapidly determine which sequence of bytes contain a lock-sector.
+.Pp
+To locate a lock-sector, a small piece of data called the
+.Dq metadata
+and the key-material must be available.
+The key-material decrypts the
+metadata, which contains the byte offset on the device where the
+corresponding lock-sector is located.
+If the metadata is lost or unavailable but the key-material is at
+hand, it would be feasible to do a brute force scan where each byte offset
+of the device is checked to see if it contains the lock-sector data.
+.Ss Second barrier: decryption of the master-key using key-material.
+The lock-sector contains an encrypted copy of an architecture neutral
+byte-sequence which encodes the fields of the lock-structure.
+The order in which these fields are encoded is determined from the key-material.
+The encoded byte stream is encrypted with 256bit AES in CBC mode.
+.Ss Third barrier: decryption of the sector key.
+For each sector, an MD5 hash over a
+.Dq salt
+from the lock-sector and the sector number is used to
+.Dq cherry-pick
+a subset of the master key,
+which hashed together with the sector offset through MD5 produces the
+.Dq kkey ,
+the key which encrypts the sector key.
+.Ss Fourth barrier: decryption of the sector data.
+The actual payload of the sector is encrypted with 128 bit AES in CBC mode
+using a single-use random bits key.
+.Ss Examining the reverse path
+Assuming an attacker knows an amount of plaintext and has managed to
+locate the corresponding encrypted sectors on the device, gaining access
+to the plaintext context of other sectors is a daunting task:
+.Pp
+First he will have to derive from the encrypted sector and the known plain
+text the sector key(s) used.
+At the time of writing, it has been speculated that it could maybe be
+possible to break open AES in only 2^80 operations; even so, that is still
+a very impossible task.
+.Pp
+Armed with one or more sector keys, our patient attacker will then go
+through essentially the same exercise, using the sector key and the
+encrypted sector key to find the key used to encrypt the sectorkey.
+.Pp
+Armed with one or more of these
+.Dq kkeys ,
+our attacker has to
+run them backwards through MD5.
+Even though he knows that the input to MD5 was 24 bytes and has the value
+of 8 of these bytes from the sector number, he is still faced with 2^128
+equally likely possibilities.
+.Pp
+Having successfully done that, our attacker has successfully discovered
+up to 16 bytes of the master-key, but is still unaware which 16 bytes,
+and in which other sectors any of these known bytes contribute to the kkey.
+.Pp
+To unravel the last bit, the attacker has to guess the 16 byte random-bits
+salt stored in the lock-sector to recover the indexes into the masterkey.
+.Pp
+Any attacker with access to the necessary machine power to even attempt
+this attack will be better off attempting to brute-force the pass-phrase.
+.Ss Positive denial facilities
+Considering the infeasibility of the above attack,
+gaining access to the pass-phrase will be of paramount importance for an
+attacker,
+and a number of scenarios can be imagined where undue pressure will be
+applied to an individual to divulge the pass-phrase.
+.Pp
+A
+.Dq Blackening
+feature provides a way for the user, given a moment of
+opportunity, to destroy the master-key in such a way that the pass-phrase
+will be acknowledged as good but access to the data will still be
+denied.
+.Ss A practical analogy
+For persons who think cryptography is only slightly more interesting than
+watching silicon sublimate the author humbly offers this analogy to the
+keying scheme for a protected device:
+.Pp
+Imagine an installation with a vault with walls of several hundred meters
+thick solid steel.
+This vault can only be feasibly accessed using the
+single key, which has a complexity comparable to a number with 600 digits.
+.Pp
+This key exists in four copies, each of which is stored in one of
+four small safes, each of which can be opened
+with unique key which has a complexity comparable to an 80 digit
+number.
+.Pp
+In addition to the masterkey, each of the four safes also contains
+the exact locations of all four key-safes which are located in
+randomly chosen places on the outside surface of the vault where they
+are practically impossible to detect when they are closed.
+.Pp
+Finally, each safe contains four switches which are wired to a bar
+of dynamite inside each of the four safes.
+.Pp
+In addition to this, a keyholder after opening his key-safe is
+also able to install a copy of the master-key and re-key any of
+key-safes (including his own).
+.Pp
+In normal use, the user will open the safe for which he has the key,
+take out the master-key and access the vault.
+When done, he will lock up the master-key in the safe again.
+.Pp
+If a keyholder-X for some reason distrusts keyholder-Y, she
+has the option of opening her own safe, flipping one of the switches
+and detonating the bar of dynamite in safe-Y.
+This will obliterate the master-key in that safe and thereby deny
+keyholder-Y access to the vault.
+.Pp
+Should the facility come under attack, any of the keyholders can detonate
+all four bars of dynamite and thereby make sure that access to the
+vault is denied to everybody, keyholders and attackers alike.
+Should the facility fall to the enemy, and a keyholder be forced to apply
+his personal key, he can do so in confidence that the contents of his safe
+will not yield access to the vault, and the enemy will hopefully realize
+that applying further pressure on the personnel will not give access to
+the vault.
+.Pp
+The final point to make here is that it is perfectly possible to
+make a detached copy of any one of these keys, including the master
+key, and deposit or hide it as one sees fit.
+.Ss Steganography support
+When the device is initialized, it is possible to restrict the encrypted
+data to a single contiguous area of the device.
+If configured with care, this area could masquerade as some sort of
+valid data or as random trash left behind by the systems operation.
+.Pp
+This can be used to offer a plausible deniability of existence, where
+it will be impossible to prove that this specific area of the device
+is in fact used to store encrypted data and not just random junk.
+.Pp
+The main obstacle in this is that the output from any encryption algorithm
+worth its salt is so totally random looking that it stands out like a sore
+thumb amongst practically any other sort of data which contains at least
+some kind of structure or identifying byte sequences.
+.Pp
+Certain file formats like ELF contain multiple distinct sections, and it
+would be possible to locate things just right in such a way that a device
+contains a partition with a file system with a large executable,
+.Pq Dq "a backup copy of my kernel"
+where a non-loaded ELF section is laid out
+consecutively on the device and thereby could be used to contain a
+.Nm
+encrypted device.
+.Pp
+Apart from the ability to instruct
+.Nm
+which those sectors are, no support is provided for creating such a setup.
+.Ss Deployment suggestions
+For personal use, it may be wise to make a backup copy of the masterkey
+or use one of the four keys as a backup.
+Fitting protection of this key is up to yourself, your local circumstances and
+your imagination.
+.Pp
+For company or institutional use, it is strongly advised to make a copy
+of the master-key and put it under whatever protection you have at your
+means.
+If you fail to do this, a disgruntled employee can deny you access to
+the data
+.Dq "by accident" .
+(The employee can still intentionally deny access by applying another
+encryption scheme to the data, but that problem has no technical solution.)
+.Ss Cryptographic strength
+This section lists the specific components which contribute to the cryptographic
+strength of
+.Nm .
+.Pp
+The payload is encrypted with AES in CBC mode using a 128 bit random
+single-use key
+.Pq Dq "the skey" .
+AES is well documented.
+.Pp
+No IV is used in the encryption of the sectors, the assumption being
+that since the key is random bits and single-use, an IV adds nothing to the
+security of AES.
+.Pp
+The random key is produced with
+.Xr arc4rand 9
+which is believed to do a respectable job at producing unpredictable bytes.
+.Pp
+The skey is stored on the device in a location which can be derived from
+the location of the encrypted payload data.
+The stored copy is encrypted with AES in CBC mode using a 128 bit key
+.Pq Dq "the kkey"
+derived
+from a subset of the master key chosen by the output of an MD5 hash
+over a 16 byte random bit static salt and the sector offset.
+Up to 6.25% of the masterkey (16 bytes out of 2048 bits) will be selected
+and hashed through MD5 with the sector offset to generate the kkey.
+.Pp
+Up to four copies of the master-key and associated geometry information
+is stored on the device in static randomly chosen sectors.
+The exact location inside the sector is randomly chosen.
+The order in which the fields are encoded depends on the key-material.
+The encoded byte-stream is encrypted with AES in CBC mode using 256 bit
+key-material.
+.Pp
+The key-material is derived from the user-entered pass-phrase using
+512 bit SHA2.
+.Pp
+No chain is stronger than its weakest link, which usually is poor pass-phrases.
+.Sh SEE ALSO
+.Xr gbde 8
+.Sh HISTORY
+This software was developed for the
+.Fx
+Project by
+.An Poul-Henning Kamp
+and NAI Labs, the Security Research Division of Network Associates, Inc.\&
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the
+DARPA CHATS research program.
+.Sh AUTHORS
+.An "Poul-Henning Kamp" Aq phk@FreeBSD.org
diff --git a/share/man/man4/gdb.4 b/share/man/man4/gdb.4
new file mode 100644
index 0000000..b92958b
--- /dev/null
+++ b/share/man/man4/gdb.4
@@ -0,0 +1,603 @@
+.\" Copyright (c) 2003 Greg Lehey
+.\" 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$
+.\"
+.Dd February 8, 2005
+.Dt GDB 4
+.Os
+.Sh NAME
+.Nm gdb
+.Nd external kernel debugger
+.Sh SYNOPSIS
+.Cd "makeoptions DEBUG=-g"
+.Cd "options DDB"
+.Sh DESCRIPTION
+The
+.Nm
+kernel debugger is a variation of
+.Xr gdb 1
+which understands some aspects of the
+.Fx
+kernel environment.
+It can be used in a number of ways:
+.Bl -bullet
+.It
+It can be used to examine the memory of the processor on which it runs.
+.It
+It can be used to analyse a processor dump after a panic.
+.It
+It can be used to debug another system interactively via a serial or firewire
+link.
+In this mode, the processor can be stopped and single stepped.
+.It
+With a firewire link, it can be used to examine the memory of a remote system
+without the participation of that system.
+In this mode, the processor cannot be stopped and single stepped, but it can be
+of use when the remote system has crashed and is no longer responding.
+.El
+.Pp
+When used for remote debugging,
+.Nm
+requires the presence of the
+.Xr ddb 4
+kernel debugger.
+Commands exist to switch between
+.Nm
+and
+.Xr ddb 4 .
+.Sh PREPARING FOR DEBUGGING
+When debugging kernels, it is practically essential to have built a kernel with
+debugging symbols
+.Pq Cd "makeoptions DEBUG=-g" .
+It is easiest to perform operations from the kernel build directory, by default
+.Pa /usr/obj/usr/src/sys/GENERIC .
+.Pp
+First, ensure you have a copy of the debug macros in the directory:
+.Pp
+.Dl "make gdbinit"
+.Pp
+This command performs some transformations on the macros installed in
+.Pa /usr/src/tools/debugscripts
+to adapt them to the local environment.
+.Ss "Inspecting the environment of the local machine"
+To look at and change the contents of the memory of the system you are running
+on,
+.Pp
+.Dl "gdb -k -wcore kernel.debug /dev/mem"
+.Pp
+In this mode, you need the
+.Fl k
+flag to indicate to
+.Xr gdb 1
+that the
+.Dq "dump file"
+.Pa /dev/mem
+is a kernel data file.
+You can look at live data, and if you include the
+.Fl wcore
+option, you can change it at your peril.
+The system does not stop (obviously), so a number of things will not work.
+You can set breakpoints, but you cannot
+.Dq continue
+execution, so they will not work.
+.Ss "Debugging a crash dump"
+By default, crash dumps are stored in the directory
+.Pa /var/crash .
+Investigate them from the kernel build directory with:
+.Pp
+.Dl "gdb -k kernel.debug /var/crash/vmcore.29"
+.Pp
+In this mode, the system is obviously stopped, so you can only look at it.
+.Ss "Debugging a live system with a remote link"
+In the following discussion, the term
+.Dq "local system"
+refers to the system running the debugger, and
+.Dq "remote system"
+refers to the live system being debugged.
+.Pp
+To debug a live system with a remote link, the kernel must be compiled with the
+option
+.Cd "options DDB" .
+The option
+.Cd "options BREAK_TO_DEBUGGER"
+enables the debugging machine stop the debugged machine once a connection has
+been established by pressing
+.Ql ^C .
+.Ss "Debugging a live system with a remote serial link"
+When using a serial port for the remote link on the i386 platform, the serial
+port must be identified by setting the flag bit
+.Li 0x80
+for the specified interface.
+Generally, this port will also be used as a serial console (flag bit
+.Li 0x10 ) ,
+so the entry in
+.Pa /boot/device.hints
+should be:
+.Pp
+.Dl hint.sio.0.flags="0x90"
+.Ss "Debugging a live system with a remote firewire link"
+As with serial debugging, to debug a live system with a firewire link, the
+kernel must be compiled with the option
+.Cd "options DDB" .
+.Pp
+A number of steps must be performed to set up a firewire link:
+.Bl -bullet
+.It
+Ensure that both systems have
+.Xr firewire 4
+support, and that the kernel of the remote system includes the
+.Xr dcons 4
+and
+.Xr dcons_crom 4
+drivers.
+If they are not compiled into the kernel, load the KLDs:
+.Pp
+.Dl "kldload firewire"
+.Pp
+On the remote system only:
+.Bd -literal -offset indent
+kldload dcons
+kldload dcons_crom
+.Ed
+.Pp
+You should see something like this in the
+.Xr dmesg 8
+output of the remote system:
+.Bd -literal -offset indent
+fwohci0: BUS reset
+fwohci0: node_id=0x8800ffc0, gen=2, non CYCLEMASTER mode
+firewire0: 2 nodes, maxhop <= 1, cable IRM = 1
+firewire0: bus manager 1
+firewire0: New S400 device ID:00c04f3226e88061
+dcons_crom0: <dcons configuration ROM> on firewire0
+dcons_crom0: bus_addr 0x22a000
+.Ed
+.Pp
+It is a good idea to load these modules at boot time with the following entry in
+.Pa /boot/loader.conf :
+.Pp
+.Dl dcons_crom_enable="YES"
+.Pp
+This ensures that all three modules are loaded.
+There is no harm in loading
+.Xr dcons 4
+and
+.Xr dcons_crom 4
+on the local system, but if you only want to load the
+.Xr firewire 4
+module, include the following in
+.Pa /boot/loader.conf :
+.Pp
+.Dl firewire_enable="YES"
+.It
+Next, use
+.Xr fwcontrol 8
+to find the firewire node corresponding to the remote machine.
+On the local machine you might see:
+.Bd -literal -offset indent
+# fwcontrol
+2 devices (info_len=2)
+node EUI64 status
+ 1 0x00c04f3226e88061 0
+ 0 0x000199000003622b 1
+.Ed
+.Pp
+The first node is always the local system, so in this case, node 0 is the remote
+system.
+If there are more than two systems, check from the other end to find which node
+corresponds to the remote system.
+On the remote machine, it looks like this:
+.Bd -literal -offset indent
+# fwcontrol
+2 devices (info_len=2)
+node EUI64 status
+ 0 0x000199000003622b 0
+ 1 0x00c04f3226e88061 1
+.Ed
+.It
+Next, establish a firewire connection with
+.Xr dconschat 8 :
+.Pp
+.Dl "dconschat -br -G 5556 -t 0x000199000003622b"
+.Pp
+.Li 0x000199000003622b
+is the EUI64 address of the remote node, as determined from the output of
+.Xr fwcontrol 8
+above.
+When started in this manner,
+.Xr dconschat 8
+establishes a local tunnel connection from port
+.Li localhost:5556
+to the remote debugger.
+You can also establish a console port connection with the
+.Fl C
+option to the same invocation
+.Xr dconschat 8 .
+See the
+.Xr dconschat 8
+manpage for further details.
+.Pp
+The
+.Xr dconschat 8
+utility
+does not return control to the user.
+It displays error messages and console output for the remote system, so it is a
+good idea to start it in its own window.
+.It
+Finally, establish connection:
+.Bd -literal -offset indent
+# gdb kernel.debug
+GNU gdb 5.2.1 (FreeBSD)
+.Em "(political statements omitted)"
+Ready to go. Enter 'tr' to connect to the remote target
+with /dev/cuad0, 'tr /dev/cuad1' to connect to a different port
+or 'trf portno' to connect to the remote target with the firewire
+interface. portno defaults to 5556.
+
+Type 'getsyms' after connection to load kld symbols.
+
+If you are debugging a local system, you can use 'kldsyms' instead
+to load the kld symbols. That is a less obnoxious interface.
+(gdb) trf
+0xc21bd378 in ?? ()
+.Ed
+.Pp
+The
+.Ic trf
+macro assumes a connection on port 5556.
+If you want to use a different port (by changing the invocation of
+.Xr dconschat 8
+above), use the
+.Ic tr
+macro instead.
+For example, if you want to use port 4711, run
+.Xr dconschat 8
+like this:
+.Pp
+.Dl "dconschat -br -G 4711 -t 0x000199000003622b"
+.Pp
+Then establish connection with:
+.Bd -literal -offset indent
+(gdb) tr localhost:4711
+0xc21bd378 in ?? ()
+.Ed
+.El
+.Ss "Non-cooperative debugging a live system with a remote firewire link"
+In addition to the conventional debugging via firewire described in the previous
+section, it is possible to debug a remote system without its cooperation, once
+an initial connection has been established.
+This corresponds to debugging a local machine using
+.Pa /dev/mem .
+It can be very useful if a system crashes and the debugger no longer responds.
+To use this method, set the
+.Xr sysctl 8
+variables
+.Va hw.firewire.fwmem.eui64_hi
+and
+.Va hw.firewire.fwmem.eui64_lo
+to the upper and lower halves of the EUI64 ID of the remote system,
+respectively.
+From the previous example, the remote machine shows:
+.Bd -literal -offset indent
+# fwcontrol
+2 devices (info_len=2)
+node EUI64 status
+ 0 0x000199000003622b 0
+ 1 0x00c04f3226e88061 1
+.Ed
+.Pp
+Enter:
+.Bd -literal -offset indent
+# sysctl -w hw.firewire.fwmem.eui64_hi=0x00019900
+hw.firewire.fwmem.eui64_hi: 0 -> 104704
+# sysctl -w hw.firewire.fwmem.eui64_lo=0x0003622b
+hw.firewire.fwmem.eui64_lo: 0 -> 221739
+.Ed
+.Pp
+Note that the variables must be explicitly stated in hexadecimal.
+After this, you can examine the remote machine's state with the following input:
+.Bd -literal -offset indent
+# gdb -k kernel.debug /dev/fwmem0.0
+GNU gdb 5.2.1 (FreeBSD)
+.Em "(messages omitted)"
+Reading symbols from /boot/kernel/dcons.ko...done.
+Loaded symbols for /boot/kernel/dcons.ko
+Reading symbols from /boot/kernel/dcons_crom.ko...done.
+Loaded symbols for /boot/kernel/dcons_crom.ko
+#0 sched_switch (td=0xc0922fe0) at /usr/src/sys/kern/sched_4bsd.c:621
+0xc21bd378 in ?? ()
+.Ed
+.Pp
+In this case, it is not necessary to load the symbols explicitly.
+The remote system continues to run.
+.Sh COMMANDS
+The user interface to
+.Nm
+is via
+.Xr gdb 1 ,
+so
+.Xr gdb 1
+commands also work.
+This section discusses only the extensions for kernel debugging that get
+installed in the kernel build directory.
+.Ss "Debugging environment"
+The following macros manipulate the debugging environment:
+.Bl -tag -width indent
+.It Ic ddb
+Switch back to
+.Xr ddb 4 .
+This command is only meaningful when performing remote debugging.
+.It Ic getsyms
+Display
+.Ic kldstat
+information for the target machine and invite user to paste it back in.
+This is required because
+.Nm
+does not allow data to be passed to shell scripts.
+It is necessary for remote debugging and crash dumps; for local memory debugging
+use
+.Ic kldsyms
+instead.
+.It Ic kldsyms
+Read in the symbol tables for the debugging machine.
+This does not work for
+remote debugging and crash dumps; use
+.Ic getsyms
+instead.
+.It Ic tr Ar interface
+Debug a remote system via the specified serial or firewire interface.
+.It Ic tr0
+Debug a remote system via serial interface
+.Pa /dev/cuad0 .
+.It Ic tr1
+Debug a remote system via serial interface
+.Pa /dev/cuad1 .
+.It Ic trf
+Debug a remote system via firewire interface at default port 5556.
+.El
+.Pp
+The commands
+.Ic tr0 , tr1
+and
+.Ic trf
+are convenience commands which invoke
+.Ic tr .
+.Ss "The current process environment"
+The following macros are convenience functions intended to make things easier
+than the standard
+.Xr gdb 1
+commands.
+.Bl -tag -width indent
+.It Ic f0
+Select stack frame 0 and show assembler-level details.
+.It Ic f1
+Select stack frame 1 and show assembler-level details.
+.It Ic f2
+Select stack frame 2 and show assembler-level details.
+.It Ic f3
+Select stack frame 3 and show assembler-level details.
+.It Ic f4
+Select stack frame 4 and show assembler-level details.
+.It Ic f5
+Select stack frame 5 and show assembler-level details.
+.It Ic xb
+Show 12 words in hex, starting at current
+.Va ebp
+value.
+.It Ic xi
+List the next 10 instructions from the current
+.Va eip
+value.
+.It Ic xp
+Show the register contents and the first four parameters of the current stack
+frame.
+.It Ic xp0
+Show the first parameter of current stack frame in various formats.
+.It Ic xp1
+Show the second parameter of current stack frame in various formats.
+.It Ic xp2
+Show the third parameter of current stack frame in various formats.
+.It Ic xp3
+Show the fourth parameter of current stack frame in various formats.
+.It Ic xp4
+Show the fifth parameter of current stack frame in various formats.
+.It Ic xs
+Show the last 12 words on stack in hexadecimal.
+.It Ic xxp
+Show the register contents and the first ten parameters.
+.It Ic z
+Single step 1 instruction (over calls) and show next instruction.
+.It Ic zs
+Single step 1 instruction (through calls) and show next instruction.
+.El
+.Ss "Examining other processes"
+The following macros access other processes.
+The
+.Nm
+debugger
+does not understand the concept of multiple processes, so they effectively
+bypass the entire
+.Nm
+environment.
+.Bl -tag -width indent
+.It Ic btp Ar pid
+Show a backtrace for the process
+.Ar pid .
+.It Ic btpa
+Show backtraces for all processes in the system.
+.It Ic btpp
+Show a backtrace for the process previously selected with
+.Ic defproc .
+.It Ic btr Ar ebp
+Show a backtrace from the
+.Ar ebp
+address specified.
+.It Ic defproc Ar pid
+Specify the PID of the process for some other commands in this section.
+.It Ic fr Ar frame
+Show frame
+.Ar frame
+of the stack of the process previously selected with
+.Ic defproc .
+.It Ic pcb Ar proc
+Show some PCB contents of the process
+.Ar proc .
+.El
+.Ss "Examining data structures"
+You can use standard
+.Xr gdb 1
+commands to look at most data structures.
+The macros in this section are
+convenience functions which typically display the data in a more readable
+format, or which omit less interesting parts of the structure.
+.Bl -tag -width indent
+.It Ic bp
+Show information about the buffer header pointed to by the variable
+.Va bp
+in the current frame.
+.It Ic bpd
+Show the contents
+.Pq Vt "char *"
+of
+.Va bp->data
+in the current frame.
+.It Ic bpl
+Show detailed information about the buffer header
+.Pq Vt "struct bp"
+pointed at by the local variable
+.Va bp .
+.It Ic bpp Ar bp
+Show summary information about the buffer header
+.Pq Vt "struct bp"
+pointed at by the parameter
+.Ar bp .
+.It Ic bx
+Print a number of fields from the buffer header pointed at in by the pointer
+.Ar bp
+in the current environment.
+.It Ic vdev
+Show some information of the
+.Vt vnode
+pointed to by the local variable
+.Va vp .
+.El
+.Ss "Miscellaneous macros"
+.Bl -tag -width indent
+.It Ic checkmem
+Check unallocated memory for modifications.
+This assumes that the kernel has been compiled with
+.Cd "options DIAGNOSTIC"
+This causes the contents of free memory to be set to
+.Li 0xdeadc0de .
+.It Ic dmesg
+Print the system message buffer.
+This corresponds to the
+.Xr dmesg 8
+utility.
+This macro used to be called
+.Ic msgbuf .
+It can take a very long time over a serial line,
+and it is even slower via firewire
+or local memory due to inefficiencies in
+.Nm .
+When debugging a crash dump or over firewire, it is not necessary to start
+.Nm
+to access the message buffer: instead, use an appropriate variation of
+.Bd -literal -offset indent
+dmesg -M /var/crash/vmcore.0 -N kernel.debug
+dmesg -M /dev/fwmem0.0 -N kernel.debug
+.Ed
+.It Ic kldstat
+Equivalent of the
+.Xr kldstat 8
+utility without options.
+.It Ic pname
+Print the command name of the current process.
+.It Ic ps
+Show process status.
+This corresponds in concept, but not in appearance, to the
+.Xr ps 1
+utility.
+When debugging a crash dump or over firewire, it is not necessary to start
+.Nm
+to display the
+.Xr ps 1
+output: instead, use an appropriate variation of
+.Bd -literal -offset indent
+ps -M /var/crash/vmcore.0 -N kernel.debug
+ps -M /dev/fwmem0.0 -N kernel.debug
+.Ed
+.It Ic y
+Kludge for writing macros.
+When writing macros, it is convenient to paste them
+back into the
+.Nm
+window.
+Unfortunately, if the macro is already defined,
+.Nm
+insists on asking
+.Pp
+.Dl "Redefine foo?"
+.Pp
+It will not give up until you answer
+.Ql y .
+This command is that answer.
+It does nothing else except to print a warning
+message to remind you to remove it again.
+.El
+.Sh SEE ALSO
+.Xr gdb 1 ,
+.Xr ps 1 ,
+.Xr ddb 4 ,
+.Xr firewire 4 ,
+.Xr dconschat 8 ,
+.Xr dmesg 8 ,
+.Xr fwcontrol 8 ,
+.Xr kldload 8
+.Sh AUTHORS
+This man page was written by
+.An "Greg Lehey" Aq grog@FreeBSD.org .
+.Sh BUGS
+The
+.Xr gdb 1
+debugger
+was never designed to debug kernels, and it is not a very good match.
+Many problems exist.
+.Pp
+The
+.Nm
+implementation is very inefficient, and many operations are slow.
+.Pp
+Serial debugging is even slower, and race conditions can make it difficult to
+run the link at more than 9600 bps.
+Firewire connections do not have this problem.
+.Pp
+The debugging macros
+.Dq "just growed" .
+In general, the person who wrote them did so while looking for a specific
+problem, so they may not be general enough, and they may behave badly when used
+in ways for which they were not intended, even if those ways make sense.
+.Pp
+Many of these commands only work on the ia32 architecture.
diff --git a/share/man/man4/gem.4 b/share/man/man4/gem.4
new file mode 100644
index 0000000..2e0939f
--- /dev/null
+++ b/share/man/man4/gem.4
@@ -0,0 +1,141 @@
+.\" $NetBSD: gem.4,v 1.2 2003/02/14 15:20:18 grant Exp $
+.\"
+.\" Copyright (c) 2002 The NetBSD Foundation, 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 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$
+.\"
+.Dd September 26, 2007
+.Dt GEM 4
+.Os
+.Sh NAME
+.Nm gem
+.Nd ERI/GEM/GMAC Ethernet device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device gem"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_gem_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the GMac Ethernet hardware found mostly in
+the last Apple PowerBooks G3s and most G4-based Apple hardware, as
+well as many Sun UltraSPARCs.
+.Sh HARDWARE
+.Pp
+Chips supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Apple GMAC
+.It
+Sun ERI 10/100 Mbps Ethernet
+.It
+Sun GEM Gigabit Ethernet
+.El
+.Pp
+The
+following add-on cards are known to work with the
+.Nm
+driver at this time:
+.Pp
+.Bl -bullet -compact
+.It
+Sun Gigabit Ethernet PCI 2.0/3.0 (GBE/P)
+(part no.\& 501-4373)
+.El
+.Sh NOTES
+On sparc64 the
+.Nm
+driver respects the
+.Va local-mac-address?
+system configuration variable which can be set in the Open Firmware boot
+monitor using the
+.Ic setenv
+command or by
+.Xr eeprom 8 .
+If set to
+.Dq Li false
+(the default), the
+.Nm
+driver will use the system's default MAC address for all of its devices.
+If set to
+.Dq Li true ,
+the unique MAC address of each interface is used if present rather than
+the system's default MAC address.
+.Pp
+Supported interfaces having their own MAC address include the on-board
+Sun ERI 10/100 Mbps on boards equipped with more than one Ethernet interface
+and the Sun Gigabit Ethernet 2.0/3.0 GBE add-on cards.
+.Sh CAVEATS
+Currently the
+.Nm
+driver fails to attach to Sun Gigabit Ethernet SBus 2.0/3.0 (GBE/S) cards,
+as no SBus front-end has been written so far.
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr hme 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr eeprom 8 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver appeared in
+.Nx 1.6 .
+The first
+.Fx
+version to include it was
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Eduardo Horvath
+.Aq eeh@NetBSD.org .
+The man page was written by
+.An Thomas Klausner
+.Aq wiz@NetBSD.org .
diff --git a/share/man/man4/geom.4 b/share/man/man4/geom.4
new file mode 100644
index 0000000..0bd6207
--- /dev/null
+++ b/share/man/man4/geom.4
@@ -0,0 +1,454 @@
+.\"
+.\" 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$
+.\"
+.Dd May 25, 2006
+.Os
+.Dt GEOM 4
+.Sh NAME
+.Nm GEOM
+.Nd "modular disk I/O request transformation framework"
+.Sh DESCRIPTION
+The
+.Nm
+framework provides an infrastructure in which
+.Dq classes
+can perform transformations on disk I/O requests on their path from
+the upper kernel to the device drivers and back.
+.Pp
+Transformations in a
+.Nm
+context range from the simple geometric
+displacement performed in typical disk partitioning modules over RAID
+algorithms and device multipath resolution to full blown cryptographic
+protection of the stored data.
+.Pp
+Compared to traditional
+.Dq "volume management" ,
+.Nm
+differs from most
+and in some cases all previous implementations in the following ways:
+.Bl -bullet
+.It
+.Nm
+is extensible.
+It is trivially simple to write a new class
+of transformation and it will not be given stepchild treatment.
+If
+someone for some reason wanted to mount IBM MVS diskpacks, a class
+recognizing and configuring their VTOC information would be a trivial
+matter.
+.It
+.Nm
+is topologically agnostic.
+Most volume management implementations
+have very strict notions of how classes can fit together, very often
+one fixed hierarchy is provided, for instance, subdisk - plex -
+volume.
+.El
+.Pp
+Being extensible means that new transformations are treated no differently
+than existing transformations.
+.Pp
+Fixed hierarchies are bad because they make it impossible to express
+the intent efficiently.
+In the fixed hierarchy above, it is not possible to mirror two
+physical disks and then partition the mirror into subdisks, instead
+one is forced to make subdisks on the physical volumes and to mirror
+these two and two, resulting in a much more complex configuration.
+.Nm
+on the other hand does not care in which order things are done,
+the only restriction is that cycles in the graph will not be allowed.
+.Sh "TERMINOLOGY AND TOPOLOGY"
+.Nm
+is quite object oriented and consequently the terminology
+borrows a lot of context and semantics from the OO vocabulary:
+.Pp
+A
+.Dq class ,
+represented by the data structure
+.Vt g_class
+implements one
+particular kind of transformation.
+Typical examples are MBR disk
+partition, BSD disklabel, and RAID5 classes.
+.Pp
+An instance of a class is called a
+.Dq geom
+and represented by the data structure
+.Vt g_geom .
+In a typical i386
+.Fx
+system, there
+will be one geom of class MBR for each disk.
+.Pp
+A
+.Dq provider ,
+represented by the data structure
+.Vt g_provider ,
+is the front gate at which a geom offers service.
+A provider is
+.Do
+a disk-like thing which appears in
+.Pa /dev
+.Dc - a logical
+disk in other words.
+All providers have three main properties:
+.Dq name ,
+.Dq sectorsize
+and
+.Dq size .
+.Pp
+A
+.Dq consumer
+is the backdoor through which a geom connects to another
+geom provider and through which I/O requests are sent.
+.Pp
+The topological relationship between these entities are as follows:
+.Bl -bullet
+.It
+A class has zero or more geom instances.
+.It
+A geom has exactly one class it is derived from.
+.It
+A geom has zero or more consumers.
+.It
+A geom has zero or more providers.
+.It
+A consumer can be attached to zero or one providers.
+.It
+A provider can have zero or more consumers attached.
+.El
+.Pp
+All geoms have a rank-number assigned, which is used to detect and
+prevent loops in the acyclic directed graph.
+This rank number is
+assigned as follows:
+.Bl -enum
+.It
+A geom with no attached consumers has rank=1.
+.It
+A geom with attached consumers has a rank one higher than the
+highest rank of the geoms of the providers its consumers are
+attached to.
+.El
+.Sh "SPECIAL TOPOLOGICAL MANEUVERS"
+In addition to the straightforward attach, which attaches a consumer
+to a provider, and detach, which breaks the bond, a number of special
+topological maneuvers exists to facilitate configuration and to
+improve the overall flexibility.
+.Bl -inset
+.It Em TASTING
+is a process that happens whenever a new class or new provider
+is created, and it provides the class a chance to automatically configure an
+instance on providers which it recognizes as its own.
+A typical example is the MBR disk-partition class which will look for
+the MBR table in the first sector and, if found and validated, will
+instantiate a geom to multiplex according to the contents of the MBR.
+.Pp
+A new class will be offered to all existing providers in turn and a new
+provider will be offered to all classes in turn.
+.Pp
+Exactly what a class does to recognize if it should accept the offered
+provider is not defined by
+.Nm ,
+but the sensible set of options are:
+.Bl -bullet
+.It
+Examine specific data structures on the disk.
+.It
+Examine properties like
+.Dq sectorsize
+or
+.Dq mediasize
+for the provider.
+.It
+Examine the rank number of the provider's geom.
+.It
+Examine the method name of the provider's geom.
+.El
+.It Em ORPHANIZATION
+is the process by which a provider is removed while
+it potentially is still being used.
+.Pp
+When a geom orphans a provider, all future I/O requests will
+.Dq bounce
+on the provider with an error code set by the geom.
+Any
+consumers attached to the provider will receive notification about
+the orphanization when the event loop gets around to it, and they
+can take appropriate action at that time.
+.Pp
+A geom which came into being as a result of a normal taste operation
+should self-destruct unless it has a way to keep functioning whilst
+lacking the orphaned provider.
+Geoms like disk slicers should therefore self-destruct whereas
+RAID5 or mirror geoms will be able to continue as long as they do
+not lose quorum.
+.Pp
+When a provider is orphaned, this does not necessarily result in any
+immediate change in the topology: any attached consumers are still
+attached, any opened paths are still open, any outstanding I/O
+requests are still outstanding.
+.Pp
+The typical scenario is:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+A device driver detects a disk has departed and orphans the provider for it.
+.It
+The geoms on top of the disk receive the orphanization event and
+orphan all their providers in turn.
+Providers which are not attached to will typically self-destruct
+right away.
+This process continues in a quasi-recursive fashion until all
+relevant pieces of the tree have heard the bad news.
+.It
+Eventually the buck stops when it reaches geom_dev at the top
+of the stack.
+.It
+Geom_dev will call
+.Xr destroy_dev 9
+to stop any more requests from
+coming in.
+It will sleep until any and all outstanding I/O requests have
+been returned.
+It will explicitly close (i.e.: zero the access counts), a change
+which will propagate all the way down through the mesh.
+It will then detach and destroy its geom.
+.It
+The geom whose provider is now attached will destroy the provider,
+detach and destroy its consumer and destroy its geom.
+.It
+This process percolates all the way down through the mesh, until
+the cleanup is complete.
+.El
+.Pp
+While this approach seems byzantine, it does provide the maximum
+flexibility and robustness in handling disappearing devices.
+.Pp
+The one absolutely crucial detail to be aware of is that if the
+device driver does not return all I/O requests, the tree will
+not unravel.
+.It Em SPOILING
+is a special case of orphanization used to protect
+against stale metadata.
+It is probably easiest to understand spoiling by going through
+an example.
+.Pp
+Imagine a disk,
+.Pa da0 ,
+on top of which an MBR geom provides
+.Pa da0s1
+and
+.Pa da0s2 ,
+and on top of
+.Pa da0s1
+a BSD geom provides
+.Pa da0s1a
+through
+.Pa da0s1e ,
+and that both the MBR and BSD geoms have
+autoconfigured based on data structures on the disk media.
+Now imagine the case where
+.Pa da0
+is opened for writing and those
+data structures are modified or overwritten: now the geoms would
+be operating on stale metadata unless some notification system
+can inform them otherwise.
+.Pp
+To avoid this situation, when the open of
+.Pa da0
+for write happens,
+all attached consumers are told about this and geoms like
+MBR and BSD will self-destruct as a result.
+When
+.Pa da0
+is closed, it will be offered for tasting again
+and, if the data structures for MBR and BSD are still there, new
+geoms will instantiate themselves anew.
+.Pp
+Now for the fine print:
+.Pp
+If any of the paths through the MBR or BSD module were open, they
+would have opened downwards with an exclusive bit thus rendering it
+impossible to open
+.Pa da0
+for writing in that case.
+Conversely,
+the requested exclusive bit would render it impossible to open a
+path through the MBR geom while
+.Pa da0
+is open for writing.
+.Pp
+From this it also follows that changing the size of open geoms can
+only be done with their cooperation.
+.Pp
+Finally: the spoiling only happens when the write count goes from
+zero to non-zero and the retasting happens only when the write count goes
+from non-zero to zero.
+.It Em INSERT/DELETE
+are very special operations which allow a new geom
+to be instantiated between a consumer and a provider attached to
+each other and to remove it again.
+.Pp
+To understand the utility of this, imagine a provider
+being mounted as a file system.
+Between the DEVFS geom's consumer and its provider we insert
+a mirror module which configures itself with one mirror
+copy and consequently is transparent to the I/O requests
+on the path.
+We can now configure yet a mirror copy on the mirror geom,
+request a synchronization, and finally drop the first mirror
+copy.
+We have now, in essence, moved a mounted file system from one
+disk to another while it was being used.
+At this point the mirror geom can be deleted from the path
+again; it has served its purpose.
+.It Em CONFIGURE
+is the process where the administrator issues instructions
+for a particular class to instantiate itself.
+There are multiple
+ways to express intent in this case - a particular provider may be
+specified with a level of override forcing, for instance, a BSD
+disklabel module to attach to a provider which was not found palatable
+during the TASTE operation.
+.Pp
+Finally, I/O is the reason we even do this: it concerns itself with
+sending I/O requests through the graph.
+.It Em "I/O REQUESTS" ,
+represented by
+.Vt "struct bio" ,
+originate at a consumer,
+are scheduled on its attached provider and, when processed, are returned
+to the consumer.
+It is important to realize that the
+.Vt "struct bio"
+which enters through the provider of a particular geom does not
+.Do
+come out on the other side
+.Dc .
+Even simple transformations like MBR and BSD will clone the
+.Vt "struct bio" ,
+modify the clone, and schedule the clone on their
+own consumer.
+Note that cloning the
+.Vt "struct bio"
+does not involve cloning the
+actual data area specified in the I/O request.
+.Pp
+In total, four different I/O requests exist in
+.Nm :
+read, write, delete, and
+.Dq "get attribute".
+.Pp
+Read and write are self explanatory.
+.Pp
+Delete indicates that a certain range of data is no longer used
+and that it can be erased or freed as the underlying technology
+supports.
+Technologies like flash adaptation layers can arrange to erase
+the relevant blocks before they will become reassigned and
+cryptographic devices may want to fill random bits into the
+range to reduce the amount of data available for attack.
+.Pp
+It is important to recognize that a delete indication is not a
+request and consequently there is no guarantee that the data actually
+will be erased or made unavailable unless guaranteed by specific
+geoms in the graph.
+If
+.Dq "secure delete"
+semantics are required, a
+geom should be pushed which converts delete indications into (a
+sequence of) write requests.
+.Pp
+.Dq "Get attribute"
+supports inspection and manipulation
+of out-of-band attributes on a particular provider or path.
+Attributes are named by
+.Tn ASCII
+strings and they will be discussed in
+a separate section below.
+.El
+.Pp
+(Stay tuned while the author rests his brain and fingers: more to come.)
+.Sh DIAGNOSTICS
+Several flags are provided for tracing
+.Nm
+operations and unlocking
+protection mechanisms via the
+.Va kern.geom.debugflags
+sysctl.
+All of these flags are off by default, and great care should be taken in
+turning them on.
+.Bl -tag -width indent
+.It 0x01 Pq Dv G_T_TOPOLOGY
+Provide tracing of topology change events.
+.It 0x02 Pq Dv G_T_BIO
+Provide tracing of buffer I/O requests.
+.It 0x04 Pq Dv G_T_ACCESS
+Provide tracing of access check controls.
+.It 0x08 (unused)
+.It 0x10 (allow foot shooting)
+Allow writing to Rank 1 providers.
+This would, for example, allow the super-user to overwrite the MBR on the root
+disk or write random sectors elsewhere to a mounted disk.
+The implications are obvious.
+.It 0x40 Pq Dv G_F_DISKIOCTL
+This is unused at this time.
+.It 0x80 Pq Dv G_F_CTLDUMP
+Dump contents of gctl requests.
+.El
+.Sh HISTORY
+This software was developed for the
+.Fx
+Project by
+.An Poul-Henning Kamp
+and NAI Labs, the Security Research Division of Network Associates, Inc.\&
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the
+DARPA CHATS research program.
+.Pp
+The first precursor for
+.Nm
+was a gruesome hack to Minix 1.2 and was
+never distributed.
+An earlier attempt to implement a less general scheme
+in
+.Fx
+never succeeded.
+.Sh AUTHORS
+.An "Poul-Henning Kamp" Aq phk@FreeBSD.org
diff --git a/share/man/man4/geom_fox.4 b/share/man/man4/geom_fox.4
new file mode 100644
index 0000000..027b73d
--- /dev/null
+++ b/share/man/man4/geom_fox.4
@@ -0,0 +1,214 @@
+.\"
+.\" Copyright (c) 2006 Wilko Bulte
+.\" 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$
+.\"
+.Dd January 2, 2005
+.Os
+.Dt GEOM_FOX 4
+.Sh NAME
+.Nm geom_fox
+.Nd "GEOM based basic disk multipathing"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options GEOM_FOX"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+geom_fox_load="YES"
+.Ed
+.Sh DESCRIPTION
+The intent of the
+.Nm
+framework is to provide basic multipathing support to access direct
+access devices.
+Basic in the above sentence should be read as:
+.Nm
+only provides path failover functionality, not load balancing over
+the available paths etc.
+Using suitable hardware like SCSI or FibreChannel disks it is
+possible to have multiple (typically 2) host bus adapters access
+the same physical disk drive.
+.Pp
+Without a multipathing driver the
+.Fx
+kernel would probe the disks multiple times, resulting in the creation of
+multiple
+.Pa /dev
+entries for the same underlying physical device.
+A unique label written in the GEOM label area allows
+.Nm
+to detect multiple paths.
+Using this information it creates a unique
+.Pa da#.fox
+device.
+.Pp
+The
+.Nm
+device is subsequently used by the
+.Fx
+kernel to access the disks.
+Multiple physical access paths ensure that even in case of a path failure the
+.Fx
+kernel can continue to access the data.
+.Pp
+The
+.Nm
+driver will disallow write operations to the underlying devices once the
+fox device has been opened for writing.
+.Sh EXAMPLES
+.Pp
+.Bl -bullet -compact
+.It
+.Nm
+needs a label on the disk as follows in order to work properly:
+.Bd -literal
+"0123456789abcdef0123456789abcdef"
+"GEOM::FOX <--unique--id-->"
+.Ed
+.Pp
+For the unique ID 16 bytes are available.
+The
+.Dq Li GEOM::FOX
+is the magic to mark a
+.Nm
+device.
+.Pp
+The actual labelling is accomplished by
+.Bd -literal
+echo "GEOM::FOX someid" | dd of=/dev/da2 conv=sync
+.Ed
+.Pp
+For FibreChannel devices it is suggested to use the Node World Wide
+Name (Node WWN) as this is guaranteed by the FibreChannel standard to
+be worldwide unique.
+The use of the Port WWN not recommended as each port of a given
+device has a different WWN, thereby confusing things.
+.Pp
+The Node WWN can be obtained from a verbose boot as in for example
+.Bd -literal
+isp1: Target 1 (Loop 0x1) Port ID 0xe8 (role Target) Arrived
+ Port WWN 0x21000004cfc8aca2
+ Node WWN 0x20000004cfc8aca2
+.Ed
+.Pp
+This Node WWN would then be used like so:
+.Bd -literal
+echo "GEOM::FOX 20000004cfc8aca2" | dd of=/dev/da2 conv=sync
+.Ed
+.Pp
+For non-FibreChannel devices you could for example use the serial
+number of the device.
+Regardless of what you use, make sure the label is unique.
+.Pp
+Once the labelling has been performed and assuming the
+.Nm
+module is loaded the kernel will inform you that it has found a new
+.Nm
+device with a message similar to
+.Bd -literal
+Creating new fox (da2)
+fox da2.fox lock 0xfffffc0000fdba20
+.Ed
+.Pp
+.It
+To check which physical devices match a given
+.Nm
+device:
+.Bd -literal -offset indent
+# geom fox list
+Geom name: da2.fox
+Providers:
+1. Name: da2.fox
+ Mediasize: 73407865344 (68G)
+ Sectorsize: 512
+ Mode: r0w0e0
+Consumers:
+1. Name: da2
+ Mediasize: 73407865856 (68G)
+ Sectorsize: 512
+ Mode: r0w0e0
+2. Name: da6
+ Mediasize: 73407865856 (68G)
+ Sectorsize: 512
+ Mode: r0w0e0
+.Ed
+.Pp
+.It
+To check the status of the
+.Nm
+components:
+.Bd -literal
+# geom fox status
+ Name Status Components
+da2.fox N/A da2
+ da6
+.Ed
+.El
+.Sh SEE ALSO
+.Xr GEOM 4 ,
+.Xr geom 8
+.Sh CAVEATS
+The
+.Nm
+driver depends on the underlying hardware drivers to do the right thing in case
+of a path failure.
+If for example a hardware driver continues to retry forever,
+.Nm
+is not able to re-initiate the I/O to an alternative physical path.
+.Pp
+You have to be very sure to provide a unique label for each of the
+.Nm
+devices.
+Safety belts are not provided.
+For FibreChannel devices it is suggested to use the Port WWN of the device.
+The World Wide Name is guaranteed to be worldwide unique per the
+FibreChannel standard.
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Poul-Henning Kamp" Aq phk@FreeBSD.org .
+This manual page was written by
+.An "Wilko Bulte" Aq wilko@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+framework has only seen light testing.
+There definitely might be dragons here.
+.Pp
+The name
+.Nm
+is completely obscure.
+Just remember that any sly fox has multiple exits from its hole.
+.Pp
+The examples provided are too FibreChannel-centric.
diff --git a/share/man/man4/geom_linux_lvm.4 b/share/man/man4/geom_linux_lvm.4
new file mode 100644
index 0000000..e41703a4
--- /dev/null
+++ b/share/man/man4/geom_linux_lvm.4
@@ -0,0 +1,88 @@
+.\"
+.\" Copyright (c) 2008 Andrew Thompson
+.\" 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$
+.\"
+.Dd February 20, 2008
+.Os
+.Dt GEOM_LINUX_LVM 4
+.Sh NAME
+.Nm geom_linux_lvm
+.Nd "GEOM based Linux LVM logical volume mapping"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options GEOM_LINUX_LVM"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+geom_linux_lvm_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+framework provides support for mapping Linux LVM volumes to GEOM providers.
+.Nm
+currently supports linear stripes with segments on one or more physical disks.
+The parser is able to read LVM2 Text Format metadata, the logical volumes will
+be assembled and made available under
+.Pa /dev/linux_lvm/ .
+The metadata is read-only, logical volumes cannot be allocated or resized.
+.Sh EXAMPLES
+To view which
+.Nm
+devices are available:
+.Bd -literal -offset indent
+# geom linux_lvm list
+Geom name: vg1
+Providers:
+1. Name: linux_lvm/vg1-home
+ Mediasize: 4294967296 (4.0G)
+ Sectorsize: 512
+ Mode: r0w0e0
+2. Name: linux_lvm/vg1-logs
+ Mediasize: 4294967296 (4.0G)
+ Sectorsize: 512
+ Mode: r0w0e0
+Consumers:
+1. Name: ad0s1
+ Mediasize: 80023716864 (75G)
+ Sectorsize: 512
+ Mode: r0w0e0
+.Ed
+.Sh SEE ALSO
+.Xr GEOM 4 ,
+.Xr geom 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Andrew Thompson" Aq thompsa@FreeBSD.org .
diff --git a/share/man/man4/geom_uzip.4 b/share/man/man4/geom_uzip.4
new file mode 100644
index 0000000..30d5ab0
--- /dev/null
+++ b/share/man/man4/geom_uzip.4
@@ -0,0 +1,106 @@
+.\"
+.\" Copyright (c) 2006 Ceri Davies
+.\" 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$
+.\"
+.Dd October 9, 2006
+.Os
+.Dt GEOM_UZIP 4
+.Sh NAME
+.Nm geom_uzip
+.Nd "GEOM based compressed disk images"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options GEOM_UZIP"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+geom_uzip_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+framework provides support for compressed read only
+disk images.
+This allows significant storage savings at the expense of
+a little CPU time on each read.
+Data written in the GEOM label area allows
+.Nm
+to detect compressed images which have been created with
+.Xr mkuzip 8
+and presented to the kernel as a logical disk device via
+.Xr md 4 .
+.Nm
+creates a unique
+.Pa md#.uzip
+device for each image.
+.Pp
+The
+.Nm
+device is subsequently used by the
+.Fx
+kernel to access the disk images.
+The
+.Nm
+driver does not allow write operations to the underlying disk image.
+To check which
+.Xr md 4
+devices match a given
+.Nm
+device:
+.Bd -literal -offset indent
+# geom uzip list
+Geom name: md1.uzip
+Providers:
+1. Name: md1.uzip
+ Mediasize: 22003712 (21M)
+ Sectorsize: 512
+ Mode: r1w0e1
+Consumers:
+1. Name: md1
+ Mediasize: 9563648 (9.1M)
+ Sectorsize: 512
+ Mode: r1w0e1
+.Ed
+.Pp
+.Sh SEE ALSO
+.Xr GEOM 4 ,
+.Xr md 4 ,
+.Xr geom 8 ,
+.Xr mkuzip 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Max Khon" Aq fjoe@FreeBSD.org .
+This manual page was written by
+.An "Ceri Davies" Aq ceri@FreeBSD.org .
diff --git a/share/man/man4/gif.4 b/share/man/man4/gif.4
new file mode 100644
index 0000000..936898f
--- /dev/null
+++ b/share/man/man4/gif.4
@@ -0,0 +1,258 @@
+.\" $KAME: gif.4,v 1.28 2001/05/18 13:15:56 itojun Exp $
+.\"
+.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE 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.
+.\" 3. Neither the name of the project 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 PROJECT 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 PROJECT 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$
+.\"
+.Dd April 10, 1999
+.Dt GIF 4
+.Os
+.Sh NAME
+.Nm gif
+.Nd generic tunnel interface
+.Sh SYNOPSIS
+.Cd "device gif"
+.Sh DESCRIPTION
+The
+.Nm
+interface is a generic tunnelling device for IPv4 and IPv6.
+It can tunnel IPv[46] traffic over IPv[46].
+Therefore, there can be four possible configurations.
+The behavior of
+.Nm
+is mainly based on RFC2893 IPv6-over-IPv4 configured tunnel.
+On
+.Nx ,
+.Nm
+can also tunnel ISO traffic over IPv[46] using EON encapsulation.
+Note that
+.Nm
+does not perform GRE encapsulation; use
+.Xr gre 4
+for GRE encapsulation.
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Dq Nm ifconfig Cm create
+command or using the
+.Va ifconfig_ Ns Aq Ar interface
+variable in
+.Xr rc.conf 5 .
+.Pp
+To use
+.Nm ,
+the administrator needs to configure the protocol and addresses used for the outer
+header.
+This can be done by using
+.Xr ifconfig 8
+.Cm tunnel ,
+or
+.Dv SIOCSIFPHYADDR
+ioctl.
+The administrator also needs to configure the protocol and addresses for the
+inner header, with
+.Xr ifconfig 8 .
+Note that IPv6 link-local addresses
+(those that start with
+.Li fe80:: )
+will be automatically configured whenever possible.
+You may need to remove IPv6 link-local addresses manually using
+.Xr ifconfig 8 ,
+if you want to disable the use of IPv6 as the inner header
+(for example, if you need a pure IPv4-over-IPv6 tunnel).
+Finally, you must modify the routing table to route the packets through the
+.Nm
+interface.
+.Pp
+The
+.Nm
+device can be configured to be ECN friendly.
+This can be configured by
+.Dv IFF_LINK1 .
+.Ss ECN friendly behavior
+The
+.Nm
+device can be configured to be ECN friendly, as described in
+.Dv draft-ietf-ipsec-ecn-02.txt .
+This is turned off by default, and can be turned on by the
+.Dv IFF_LINK1
+interface flag.
+.Pp
+Without
+.Dv IFF_LINK1 ,
+.Nm
+will show normal behavior, as described in RFC2893.
+This can be summarized as follows:
+.Bl -tag -width "Ingress" -offset indent
+.It Ingress
+Set outer TOS bit to
+.Dv 0 .
+.It Egress
+Drop outer TOS bit.
+.El
+.Pp
+With
+.Dv IFF_LINK1 ,
+.Nm
+will copy ECN bits
+.Dv ( 0x02
+and
+.Dv 0x01
+on IPv4 TOS byte or IPv6 traffic class byte)
+on egress and ingress, as follows:
+.Bl -tag -width "Ingress" -offset indent
+.It Ingress
+Copy TOS bits except for ECN CE
+(masked with
+.Dv 0xfe )
+from
+inner to outer.
+Set ECN CE bit to
+.Dv 0 .
+.It Egress
+Use inner TOS bits with some change.
+If outer ECN CE bit is
+.Dv 1 ,
+enable ECN CE bit on the inner.
+.El
+.Pp
+Note that the ECN friendly behavior violates RFC2893.
+This should be used in mutual agreement with the peer.
+.Ss Security
+A malicious party may try to circumvent security filters by using
+tunnelled packets.
+For better protection,
+.Nm
+performs both martian and ingress filtering against the outer source address
+on egress.
+Note that martian/ingress filters are in no way complete.
+You may want to secure your node by using packet filters.
+Ingress filtering can break tunnel operation in an asymmetrically
+routed network.
+It can be turned off by
+.Dv IFF_LINK2
+bit.
+.Ss Route caching
+Processing each packet requires two route lookups: first on the
+packet itself, and second on the tunnel destination.
+This second route can be cached, increasing tunnel performance.
+However, in a dynamically routed network, the tunnel will stick
+to the cached route, ignoring routing table updates.
+Route caching can be enabled with the
+.Dv IFF_LINK0
+flag.
+.\"
+.Ss Miscellaneous
+By default,
+.Nm
+tunnels may not be nested.
+This behavior may be modified at runtime by setting the
+.Xr sysctl 8
+variable
+.Va net.link.gif.max_nesting
+to the desired level of nesting.
+Additionally,
+.Nm
+tunnels are restricted to one per pair of end points.
+Parallel tunnels may be enabled by setting the
+.Xr sysctl 8
+variable
+.Va net.link.gif.parallel_tunnels
+to 1.
+.Sh SEE ALSO
+.Xr gre 4 ,
+.Xr inet 4 ,
+.Xr inet6 4 ,
+.Xr ifconfig 8
+.Rs
+.%A R. Gilligan
+.%A E. Nordmark
+.%B RFC2893
+.%T Transition Mechanisms for IPv6 Hosts and Routers
+.%D August 2000
+.%O ftp://ftp.isi.edu/in-notes/rfc2893.txt
+.Re
+.Rs
+.%A Sally Floyd
+.%A David L. Black
+.%A K. K. Ramakrishnan
+.%T "IPsec Interactions with ECN"
+.%D December 1999
+.%O draft-ietf-ipsec-ecn-02.txt
+.Re
+.\"
+.Sh HISTORY
+The
+.Nm
+device first appeared in the WIDE hydrangea IPv6 kit.
+.\"
+.Sh BUGS
+There are many tunnelling protocol specifications, all
+defined differently from each other.
+The
+.Nm
+device may not interoperate with peers which are based on different specifications,
+and are picky about outer header fields.
+For example, you cannot usually use
+.Nm
+to talk with IPsec devices that use IPsec tunnel mode.
+.Pp
+The current code does not check if the ingress address
+(outer source address)
+configured in the
+.Nm
+interface makes sense.
+Make sure to specify an address which belongs to your node.
+Otherwise, your node will not be able to receive packets from the peer,
+and it will generate packets with a spoofed source address.
+.Pp
+If the outer protocol is IPv4,
+.Nm
+does not try to perform path MTU discovery for the encapsulated packet
+(DF bit is set to 0).
+.Pp
+If the outer protocol is IPv6, path MTU discovery for encapsulated packets
+may affect communication over the interface.
+The first bigger-than-pmtu packet may be lost.
+To avoid the problem, you may want to set the interface MTU for
+.Nm
+to 1240 or smaller, when the outer header is IPv6 and the inner header is IPv4.
+.Pp
+The
+.Nm
+device does not translate ICMP messages for the outer header into the inner header.
+.Pp
+In the past,
+.Nm
+had a multi-destination behavior, configurable via
+.Dv IFF_LINK0
+flag.
+The behavior is obsolete and is no longer supported.
diff --git a/share/man/man4/gre.4 b/share/man/man4/gre.4
new file mode 100644
index 0000000..9052eea
--- /dev/null
+++ b/share/man/man4/gre.4
@@ -0,0 +1,347 @@
+.\" $NetBSD: gre.4,v 1.28 2002/06/10 02:49:35 itojun Exp $
+.\"
+.\" Copyright 1998 (c) The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Heiko W.Rupp <hwr@pilhuhn.de>
+.\"
+.\" 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 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$
+.\"
+.Dd June 20, 2008
+.Dt GRE 4
+.Os
+.Sh NAME
+.Nm gre
+.Nd encapsulating network device
+.Sh SYNOPSIS
+To compile the
+.Ns Nm
+device into the kernel, place the following line in the kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "device gre"
+.Ed
+.Pp
+Alternatively, to load the
+.Ns Nm
+device as a module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_gre_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+network interface pseudo device encapsulates datagrams
+into IP.
+These encapsulated datagrams are routed to a destination host,
+where they are decapsulated and further routed to their final destination.
+The
+.Dq tunnel
+appears to the inner datagrams as one hop.
+.Pp
+.Nm
+interfaces are dynamically created and destroyed with the
+.Xr ifconfig 8
+.Cm create
+and
+.Cm destroy
+subcommands.
+.Pp
+This driver currently supports the following modes of operation:
+.Bl -tag -width indent
+.It "GRE encapsulation (IP protocol number 47)"
+Encapsulated datagrams are
+prepended an outer datagram and a GRE header.
+The GRE header specifies
+the type of the encapsulated datagram and thus allows for tunneling other
+protocols than IP like e.g.\& AppleTalk.
+GRE mode is also the default tunnel mode on Cisco routers.
+This is also the default mode of operation of the
+.Nm
+interfaces.
+As part of the GRE mode,
+.Nm
+also supports Cisco WCCP protocol, both version 1 and version 2.
+Since there is no reliable way to distinguish between WCCP versions, it
+should be configured manually using the
+.Cm link2
+flag.
+If the
+.Cm link2
+flag is not set (default), then WCCP version 1 is selected.
+.It "MOBILE encapsulation (IP protocol number 55)"
+Datagrams are
+encapsulated into IP, but with a shorter encapsulation.
+The original
+IP header is modified and the modifications are inserted between the
+so modified header and the original payload.
+Like
+.Xr gif 4 ,
+only for IP-in-IP encapsulation.
+.El
+.Pp
+The
+.Nm
+interfaces support a number of
+.Xr ioctl 2 Ns s ,
+such as:
+.Bl -tag -width ".Dv GRESADDRS"
+.It Dv GRESADDRS
+Set the IP address of the local tunnel end.
+This is the source address
+set by or displayed by
+.Xr ifconfig 8
+for the
+.Nm
+interface.
+.It Dv GRESADDRD
+Set the IP address of the remote tunnel end.
+This is the destination address
+set by or displayed by
+.Xr ifconfig 8
+for the
+.Nm
+interface.
+.It Dv GREGADDRS
+Query the IP address that is set for the local tunnel end.
+This is the
+address the encapsulation header carries as local address (i.e., the real
+address of the tunnel start point).
+.It Dv GREGADDRD
+Query the IP address that is set for the remote tunnel end.
+This is the
+address the encapsulated packets are sent to (i.e., the real address of
+the remote tunnel endpoint).
+.It Dv GRESPROTO
+Set the operation mode to the specified IP protocol value.
+The
+protocol is passed to the interface in
+.Po Vt "struct ifreq" Pc Ns Li -> Ns Va ifr_flags .
+The operation mode can also be given as
+.Pp
+.Bl -tag -width ".Cm -link0" -compact
+.It Cm link0
+.Dv IPPROTO_GRE
+.It Cm -link0
+.Dv IPPROTO_MOBILE
+.El
+.Pp
+to
+.Xr ifconfig 8 .
+.Pp
+The
+.Cm link1
+flag is not used to choose encapsulation, but to modify the
+internal route search for the remote tunnel endpoint, see the
+.Sx BUGS
+section below.
+.It Dv GREGPROTO
+Query operation mode.
+.It Dv GRESKEY
+Set the GRE key used for outgoing packets.
+A value of 0 disables the key option.
+.It Dv GREGKEY
+Get the GRE key currently used for outgoing packets.
+0 means no outgoing key.
+.El
+.Pp
+Note that the IP addresses of the tunnel endpoints may be the same as the
+ones defined with
+.Xr ifconfig 8
+for the interface (as if IP is encapsulated), but need not be, as e.g.\& when
+encapsulating AppleTalk.
+.Sh EXAMPLES
+Configuration example:
+.Bd -literal
+Host X-- Host A ----------------tunnel---------- Cisco D------Host E
+ \\ |
+ \\ /
+ +------Host B----------Host C----------+
+.Ed
+.Pp
+On host A
+.Pq Fx :
+.Bd -literal -offset indent
+route add default B
+ifconfig greN create
+ifconfig greN A D netmask 0xffffffff linkX up
+ifconfig greN tunnel A D
+route add E D
+.Ed
+.Pp
+On Host D (Cisco):
+.Bd -literal -offset indent
+Interface TunnelX
+ ip unnumbered D ! e.g. address from Ethernet interface
+ tunnel source D ! e.g. address from Ethernet interface
+ tunnel destination A
+ip route C <some interface and mask>
+ip route A mask C
+ip route X mask tunnelX
+.Ed
+.Pp
+OR
+.Pp
+On Host D
+.Pq Fx :
+.Bd -literal -offset indent
+route add default C
+ifconfig greN create
+ifconfig greN D A
+ifconfig greN tunnel D A
+.Ed
+.Pp
+If all goes well, you should see packets flowing ;-)
+.Pp
+If you want to reach Host A over the tunnel (from Host D (Cisco)), then
+you have to have an alias on Host A for e.g.\& the Ethernet interface like:
+.Pp
+.Dl "ifconfig <etherif> alias Y"
+.Pp
+and on the Cisco:
+.Pp
+.Dl "ip route Y mask tunnelX"
+.Pp
+A similar setup can be used to create a link between two private networks
+(for example in the 192.168 subnet) over the Internet:
+.Bd -literal
+192.168.1.* --- Router A -------tunnel-------- Router B --- 192.168.2.*
+ \\ /
+ \\ /
+ +------ the Internet ------+
+.Ed
+.Pp
+Assuming router A has the (external) IP address A and the internal address
+192.168.1.1, while router B has external address B and internal address
+192.168.2.1, the following commands will configure the tunnel:
+.Pp
+On router A:
+.Bd -literal -offset indent
+ifconfig greN create
+ifconfig greN 192.168.1.1 192.168.2.1 link1
+ifconfig greN tunnel A B
+route add -net 192.168.2 -netmask 255.255.255.0 192.168.2.1
+.Ed
+.Pp
+On router B:
+.Bd -literal -offset indent
+ifconfig greN create
+ifconfig greN 192.168.2.1 192.168.1.1 link1
+ifconfig greN tunnel B A
+route add -net 192.168.1 -netmask 255.255.255.0 192.168.1.1
+.Ed
+.Pp
+Note that this is a safe situation where the
+.Cm link1
+flag (as discussed in the
+.Sx BUGS
+section below) may (and probably should) be set.
+.Sh NOTES
+The MTU of
+.Nm
+interfaces is set to 1476 by default, to match the value used by Cisco routers.
+If grekey is set this is lowered to 1472.
+This may not be an optimal value, depending on the link between the two tunnel
+endpoints.
+It can be adjusted via
+.Xr ifconfig 8 .
+.Pp
+For correct operation, the
+.Nm
+device needs a route to the destination that is less specific than the
+one over the tunnel.
+(Basically, there needs to be a route to the decapsulating host that
+does not run over the tunnel, as this would be a loop.)
+If the addresses are ambiguous, doing the
+.Nm ifconfig Cm tunnel
+step before the
+.Xr ifconfig 8
+call to set the
+.Nm
+IP addresses will help to find a route outside the tunnel.
+.Pp
+In order to tell
+.Xr ifconfig 8
+to actually mark the interface as
+.Dq up ,
+the keyword
+.Cm up
+must be given last on its command line.
+.Pp
+The kernel must be set to forward datagrams by setting the
+.Va net.inet.ip.forwarding
+.Xr sysctl 8
+variable to non-zero.
+.Sh SEE ALSO
+.\" Xr atalk 4 ,
+.Xr gif 4 ,
+.Xr inet 4 ,
+.Xr ip 4 ,
+.Xr netintro 4 ,
+.\" Xr options 4 ,
+.Xr protocols 5 ,
+.Xr ifconfig 8 ,
+.Xr sysctl 8
+.Pp
+A description of GRE encapsulation can be found in RFC 1701 and RFC 1702.
+.Pp
+A description of MOBILE encapsulation can be found in RFC 2004.
+.Sh AUTHORS
+.An Heiko W.Rupp Aq hwr@pilhuhn.de
+.Sh BUGS
+The
+.Fn compute_route
+code in
+.Pa if_gre.c
+toggles the last bit of the
+IP-address to provoke the search for a less specific route than the
+one directly over the tunnel to prevent loops.
+This is possibly not the best solution.
+.Pp
+To avoid the address munging described above, turn on the
+.Cm link1
+flag on the
+.Xr ifconfig 8
+command line.
+This implies that the GRE packet destination and the ifconfig remote host
+are not the same IP addresses, and that the GRE destination does not route
+over the
+.Nm
+interface itself.
+.Pp
+The current implementation uses the key only for outgoing packets.
+Incomming packets with a different key or without a key will be treated as if they
+would belong to this interface.
+.Pp
+RFC1701 is not fully supported, however all unsupported features have been
+deprecated in RFC2784.
diff --git a/share/man/man4/harp.4 b/share/man/man4/harp.4
new file mode 100644
index 0000000..6f4d941
--- /dev/null
+++ b/share/man/man4/harp.4
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (c) 2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 21, 2003
+.Dt HARP 4
+.Os
+.Sh NAME
+.Nm harp
+.Nd pseudo physical interface driver for HARP
+.Sh SYNOPSIS
+.Cd device atm
+.Cd options NATM
+.Cd options ATM_CORE
+.Cd device harp
+.Sh DESCRIPTION
+The
+.Nm
+driver, when loaded, attaches to all
+.Xr netgraph 4
+ATM interfaces in the system, and for
+each of these interfaces presents a physical interface to the HARP stack.
+The name of the
+.Nm
+physical interface is the same as the name of the
+Netgraph interface (they are in different namespaces).
+.Sh SEE ALSO
+.Xr fatm 4 ,
+.Xr hatm 4 ,
+.Xr ng_atm 4 ,
+.Xr patm 4 ,
+.Xr atm 8
+.Sh CAVEATS
+When
+.Xr fatm 4
+is used, it must be started before
+.Nm
+is loaded, to get the correct configuration for the HARP physical interface.
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/hatm.4 b/share/man/man4/hatm.4
new file mode 100644
index 0000000..f9b7e70
--- /dev/null
+++ b/share/man/man4/hatm.4
@@ -0,0 +1,282 @@
+.\"
+.\" Copyright (c) 2001-2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.\" hatm(4) man page
+.\"
+.Dd May 15, 2003
+.Dt HATM 4
+.Os
+.Sh NAME
+.Nm hatm
+.Nd "device driver for Fore/Marconi HE155 and HE622 ATM interfaces"
+.Sh SYNOPSIS
+.Cd device hatm
+.Cd device utopia
+.Cd device atm
+.Pp
+.Cd options NATM
+.Sh DESCRIPTION
+The
+.Nm
+device driver supports the FORE (now Marconi) HE155 and HE622 ATM interface
+cards.
+The driver interfaces with the
+.Xr natm 4
+framework,
+.Xr netgraph 4
+and the HARP ATM stack.
+It provides only PVC services.
+Signalling, ATMARP, ILMI and other
+higher layer protocols are implemented using
+.Xr netgraph 4
+or HARP.
+.Pp
+For configuring the card for IP see
+.Xr natmip 4 .
+.Pp
+The following sysctls are recognized by the driver additionally to those
+handled by
+.Xr utopia 4 :
+.Bl -tag -width indent
+.It Va hw.atm.hatm.natm_traffic
+This is the traffic type to be used for NATM pvc connections.
+The type of
+this variable is integer and it must have one of the values 0 (UBR) or 1 (CBR).
+.It Va hw.atm.hatm.natm_pcr
+This is the peak cell rate to be used for NATM CBR connections.
+.It Va hw.atm.hatm Ns Ar N Ns Va .stats
+Contains an array of
+.Vt uint32_t
+with device specific statistics.
+.It Va hw.atm.hatm Ns Ar N Ns Va .istats
+Contains an array of
+.Vt uint32_t
+with internal driver statistics.
+.It Va hw.atm.hatm Ns Ar N Ns Va .debug
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+These are the debugging flags.
+See
+.Pa src/sys/dev/hatm/if_hatmvar.h
+for the possible flags.
+.It Va hw.atm.hatm Ns Ar N Ns Va .tsr
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+This is an array containing all transmission status registers.
+For each of the
+4096 possible VCCs there are 15 32-bit registers.
+.It Va hw.atm.hatm Ns Ar N Ns Va .tpd
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+This is an array containing all on card current transmission packet descriptors.
+For each of the 4096 possible VCCs there are 16 32-bit registers.
+.It Va hw.atm.hatm Ns Ar N Ns Va .mbox
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+This is an array containing the mbox registers.
+.It Va hw.atm.hatm Ns Ar N Ns Va .cm
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+This is an array containing all connection memory registers.
+The first 32-bit integer of this array is the ABR base address.
+.It Va hw.atm.hatm Ns Ar N Ns Va .heregs
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+This is an array containing all card registers including SUNI and the FLASH ROM.
+.It Va hw.atm.hatm Ns Ar N Ns Va .lbmem
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+Returns the contents of the local memory.
+.El
+.Pp
+The driver supports the media options
+.Cm sdh , noscramb
+and
+.Cm unassigned
+(see
+.Xr utopia 4 ) .
+.Sh ENVIRONMENT
+When attaching to a device the driver checks the kernel environment
+(see
+.Xr kenv 1 )
+to see if the default queues sizes should be overwritten or not.
+The
+following variables are checked and interpreted as unsigned integer
+values (in either radix):
+.Bl -tag -width indent
+.It Va hw.hatm Ns Ar N Ns Va .rbps0_size
+Size of the small receive buffer pool 0.
+This pool is used for all
+except raw AAL connections.
+The pool size must be a power of two between
+4 and 8192 inclusive.
+When attaching the driver allocates this number
+of mbufs.
+.It Va hw.hatm Ns Ar N Ns Va .rbps0_thresh
+Interrupt threshold for small receive buffer pool 0.
+When the number of free
+buffers in the pool falls below this threshold it generates an interrupt
+so that the driver can refill the pool.
+.It Va hw.hatm Ns Ar N Ns Va .rbpl0_thresh
+Size of the large receive buffer pool 0.
+This pool is used for all
+except raw AAL connections.
+The pool size must be a power of two between
+4 and 8192 inclusive.
+When attaching the driver allocates this number
+of mbufs with clusters.
+.It Va hw.hatm Ns Ar N Ns Va .rbpl0_thresh
+Interrupt threshold for large receive buffer pool 0.
+When the number of free
+buffers in the pool falls below this threshold it generates an interrupt
+so that the driver can refill the pool.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq0_size
+Size of receive buffer return queue 0.
+This queue is used to return buffers
+filled with received frames to the driver.
+The size must be a power of 2
+between 1 and 16384 inclusive.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq0_thresh
+Interrupt threshold for receive buffer return queue 0.
+This threshold
+should only be triggered in exceptional cases.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq0_tout
+Interrupt timeout for receive buffer return queue 0.
+An interrupt is generated
+after this time if the queue is not empty.
+The number is in internal card
+ticks.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq0_pcnt
+Packet count threshold for receive buffer return queue 0.
+An interrupt
+is generated if this number of packets is in the queue.
+.It Va hw.hatm Ns Ar N Ns Va .rbps1_size
+Size of the small receive buffer pool 1.
+This pool is used for all
+raw AAL connections.
+The pool size must be a power of two between
+4 and 8192 inclusive.
+When attaching the driver allocates this number
+of mbufs.
+.It Va hw.hatm Ns Ar N Ns Va .rbps1_thresh
+Interrupt threshold for small receive buffer pool 1.
+When the number of free
+buffers in the pool falls below this threshold it generates an interrupt
+so that the driver can refill the pool.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq1_size
+Size of receive buffer return queue 1.
+This queue is used to return buffers
+filled with received cells to the driver.
+The size must be a power of 2
+between 1 and 16384 inclusive.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq1_thresh
+Interrupt threshold for receive buffer return queue 1.
+This threshold
+should only be triggered in exceptional cases.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq1_tout
+Interrupt timeout for receive buffer return queue 1.
+An interrupt is generated
+after this time if the queue is not empty.
+The number is in internal card
+ticks.
+.It Va hw.hatm Ns Ar N Ns Va .rbrq1_pcnt
+Packet count threshold for receive buffer return queue 0.
+An interrupt
+is generated if this number of cells is in the queue.
+.It Va hw.hatm Ns Ar N Ns Va .irq0_size
+Size of interrupt queue 0.
+This must be a number between 1 and 1023 inclusive.
+.It Va hw.hatm Ns Ar N Ns Va .irq0_thresh
+Interrupt retrigger threshold of interrupt queue 0.
+A new interrupt is trigger
+if the queue fill state reaches this threshold and the interrupt was no
+served.
+.It Va hw.hatm Ns Ar N Ns Va .tbrq0_size
+Transmit buffer return queue 0 size.
+This queue is used to feed back empty
+buffers of transmitted frames back to the driver.
+It must be a power of 2
+between 1 and 4096 inclusive.
+.It Va hw.hatm Ns Ar N Ns Va .tbrq0_thresh
+Transmit buffer return queue 0 threshold.
+An interrupt is generated if the
+queue fill state reaches this point.
+.It Va hw.hatm Ns Ar N Ns Va .tpdrq_size
+Transmit descriptor ready queue size.
+This queue is used by the driver
+to feed transmit descriptors into the card.
+The size must be a power of 2
+between 1 and 16384 inclusive.
+.It Va hw.hatm Ns Ar N Ns Va .tpdmax
+Maximum number of active TPDs per connection.
+This controls the maximum
+number of outstanding packet chunks per connection and thus the maximum
+delay packets can have because of queueing on the adapter.
+If set to 0,
+a connection can eat up all available TPDs.
+.It Va hw.hatm Ns Ar N Ns Va .mbuf_max_pages
+Maximum number of memory pages allocated to small external mbufs.
+This must not be zero and not larger than 65536.
+.El
+.Sh CAVEATS
+When putting a HE155 into a 64-bit 66MHz PCI slot the machine may hang.
+This occurs very early in the POST so that even the display does not turn on.
+The HE155 runs only in 33MHz slots (either 32 or 64-bit).
+HE622 cards work just fine in 64-bit slots.
+.Pp
+The driver may not work with bounce buffer, because of
+.Xr bus_dmamap_sync 9
+missing the
+.Fa offset
+and
+.Fa len
+arguments the
+.Nx
+function has.
+.Sh DIAGNOSTICS
+.Bd -literal
+hatm0: <FORE HE> mem 0xd2600000-0xd26fffff irq 9 at device 15.0 on pci2
+hatm0: ForeRunnerHE 622, Rev. D, S/N 2949834, MAC=00:20:48:2d:02:ca
+.Ed
+.Sh SEE ALSO
+.Xr natm 4 ,
+.Xr natmip 4 ,
+.Xr utopia 4 ,
+.Xr ifconfig 8 ,
+.Xr route 8
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/hfa.4 b/share/man/man4/hfa.4
new file mode 100644
index 0000000..1c254bfeb
--- /dev/null
+++ b/share/man/man4/hfa.4
@@ -0,0 +1,139 @@
+.\"
+.\" Copyright (c) 2004 Tom Rhodes
+.\" 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$
+.\"
+.Dd August 6, 2004
+.Dt HFA 4
+.Os
+.Sh NAME
+.Nm hfa
+.Nd FORE Systems 200-Series ATM adapter driver
+.Sh SYNOPSIS
+.Cd device hfa
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn FORE
+Systems
+.Tn ATM
+series 200 adapters.
+This driver will support up to eight devices in a system
+at any given time.
+The
+.Nm
+driver follows the
+.Tn AALI
+or
+.Tn FORE
+.Tn ATM
+Adaptation Layer Interface and as such
+will adhere to its specifications.
+The supported
+.Tn AALs
+include:
+.Bl -bullet
+.It
+FORE AAL 0:
+The cell service;
+.It
+FORE AAL 4:
+Version three and four of AAL;
+.It
+FORE AAL 5:
+Version five of AAL.
+.El
+.Pp
+The
+.Nm
+driver supports traffic shaping for cards with firmware
+revisions of 4.X.X, see
+.Xr fore_dnld 8 .
+The following sysctls are recognized by the driver and
+may be used to enable or disable traffic shaping:
+.Bl -tag -width indent
+.It Va hw.atm.hfa Ns Ar N Ns Va .shape Pq 0
+Disable shaping on card number
+.Ar N .
+.It Va hw.atm.hfa Ns Ar N Ns Va .shape Pq 1
+Set one VCI to be traffic shaped on device
+.Ar N .
+This will shape the first CBR VCI which is opened.
+.It Va hw.atm.hfa Ns Ar N Ns Va .shape Pq 2
+Attempt to shape all VCIs on device
+.Ar N .
+.El
+The firmware should be loaded before using this
+driver, this can be an easy task if the
+.Xr fore_dnld 8
+utility is used.
+If the
+.Pa /etc/rc.d/atm1
+file has been properly configured then the firmware
+update should be automatic.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+FORE Systems PCA-200E ATM
+.It
+FORE Systems 200S
+.It
+FORE Systems 200
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "fore_cmd_drain: %s%d: GET_PROM failed"
+The driver failed to drain the PROM buffer.
+.It "fore initialization failed: intf=%s%d"
+Initialization of the card has failed.
+.It "fore initialization timed out: intf=%s%d"
+Initialization of the card has timed out.
+.It "hfa: version mismatch: fore=%d.%d kernel=%d.%d"
+A version mismatch error has occurred.
+.El
+.Sh SEE ALSO
+.Xr fatm 4 ,
+.Xr harp 4 ,
+.Xr ng_atm 4 ,
+.Xr atm 8 ,
+.Xr fore_dnld 8
+.Sh HISTORY
+The
+.Nm
+driver was written by Network Computing Services, Inc.\&
+and added to
+.Fx 3.0
+by
+.An Poul-Henning Kamp Aq phk@FreeBSD.org .
+This manual page first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man4/hifn.4 b/share/man/man4/hifn.4
new file mode 100644
index 0000000..ec7a564
--- /dev/null
+++ b/share/man/man4/hifn.4
@@ -0,0 +1,142 @@
+.\" $OpenBSD: hifn.4,v 1.32 2002/09/26 07:55:40 miod Exp $
+.\"
+.\" Copyright (c) 2000 Theo de Raadt
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd April 1, 2006
+.Dt HIFN 4
+.Os
+.Sh NAME
+.Nm hifn
+.Nd Hifn 7751/7951/7811/7955/7956 crypto accelerator
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device crypto"
+.Cd "device cryptodev"
+.Cd "device hifn"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+hifn_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports various cards containing the Hifn 7751, 7951,
+7811, 7955, and 7956 chipsets.
+.Pp
+The
+.Nm
+driver registers itself to accelerate DES, Triple-DES,
+AES (7955 and 7956 only), ARC4, MD5,
+MD5-HMAC, SHA1, and SHA1-HMAC operations for
+.Xr ipsec 4
+and
+.Xr crypto 4 .
+.Pp
+The Hifn
+.Tn 7951 ,
+.Tn 7811 ,
+.Tn 7955 ,
+and
+.Tn 7956
+will also supply data to the kernel
+.Xr random 4
+subsystem.
+.Sh HARDWARE
+The
+.Nm
+driver supports various cards containing the Hifn 7751, 7951,
+7811, 7955, and 7956
+chipsets, such as:
+.Bl -tag -width namenamenamena -offset indent
+.It Invertex AEON
+No longer being made.
+Came as 128KB SRAM model, or 2MB DRAM model.
+.It Hifn 7751
+Reference board with 512KB SRAM.
+.It PowerCrypt
+See
+.Pa http://www.powercrypt.com/ .
+Comes with 512KB SRAM.
+.It XL-Crypt
+See
+.Pa http://www.powercrypt.com/ .
+Only board based on 7811 (which is faster than 7751 and has
+a random number generator).
+.It NetSec 7751
+See
+.Pa http://www.netsec.net/ .
+Supports the most IPsec sessions, with 1MB SRAM.
+.It Soekris Engineering vpn1201 and vpn1211
+See
+.Pa http://www.soekris.com/ .
+Contains a 7951 and supports symmetric and random number operations.
+.It Soekris Engineering vpn1401 and vpn1411
+See
+.Pa http://www.soekris.com/ .
+Contains a 7955 and supports symmetric and random number operations.
+.El
+.Sh SEE ALSO
+.Xr crypt 3 ,
+.Xr crypto 4 ,
+.Xr intro 4 ,
+.Xr ipsec 4 ,
+.Xr random 4 ,
+.Xr crypto 9
+.Sh CAVEATS
+The Hifn 9751 shares the same PCI ID.
+This chip is basically a 7751, but with the cryptographic functions missing.
+Instead, the 9751 is only capable of doing compression.
+Since we do not currently attempt to use any of these chips to do
+compression, the 9751-based cards are not useful.
+.Pp
+Support for the 7955 and 7956 is incomplete; the asymmetric crypto
+facilities are to be added and the performance is suboptimal.
+.Sh HISTORY
+The
+.Nm
+device driver appeared in
+.Ox 2.7 .
+The
+.Nm
+device driver was imported to
+.Fx 5.0 .
+.Sh BUGS
+The 7751 chip starts out at initialization by only supporting compression.
+A proprietary algorithm, which has been reverse engineered, is required to
+unlock the cryptographic functionality of the chip.
+It is possible for vendors to make boards which have a lock ID not known
+to the driver, but all vendors currently just use the obvious ID which is
+13 bytes of 0.
diff --git a/share/man/man4/hme.4 b/share/man/man4/hme.4
new file mode 100644
index 0000000..4e2b4eb
--- /dev/null
+++ b/share/man/man4/hme.4
@@ -0,0 +1,149 @@
+.\" $NetBSD: hme.4,v 1.4 2003/02/14 15:20:18 grant Exp $
+.\"
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Klaus Klein.
+.\"
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt HME 4
+.Os
+.Sh NAME
+.Nm hme
+.Nd "Sun Microelectronics STP2002-STQ Ethernet interfaces device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device hme"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_hme_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports Sun Microelectronics STP2002-STQ Fast Ethernet interfaces.
+.Sh HARDWARE
+The
+.Nm
+driver supports the on-board Ethernet interfaces of many
+Sun
+.Tn UltraSPARC
+workstation and server models.
+.Pp
+Cards supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Sun PCI SunSwift Adapter
+.Pq Dq SUNW,hme
+.It
+Sun SBus SunSwift Adapter
+.Dq ( hme
+and
+.Dq SUNW,hme )
+.It
+Sun PCI Sun100BaseT Adapter 2.0
+.Pq Dq SUNW,hme
+.It
+Sun SBus Sun100BaseT 2.0
+.Pq Dq SUNW,hme
+.It
+Sun PCI Quad FastEthernet Controller
+.Pq Dq SUNW,qfe
+.It
+Sun SBus Quad FastEthernet Controller
+.Pq Dq SUNW,qfe
+.El
+.Sh NOTES
+On sparc64 the
+.Nm
+driver respects the
+.Va local-mac-address?
+system configuration variable which can be set in the Open Firmware boot
+monitor using the
+.Ic setenv
+command or by
+.Xr eeprom 8 .
+If set to
+.Dq Li false
+(the default), the
+.Nm
+driver will use the system's default MAC address for all of its devices.
+If set to
+.Dq Li true ,
+the unique MAC address of each interface is used if present rather than
+the system's default MAC address.
+.Pp
+Supported interfaces having their own MAC address include on-board versions
+on boards equipped with more than one Ethernet interface and all add-on cards
+except the single-port SBus versions.
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr gem 4 ,
+.Xr intro 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr eeprom 8 ,
+.Xr ifconfig 8
+.Rs
+.%T "STP2002QFP Fast Ethernet, Parallel Port, SCSI (FEPS) User's Guide"
+.%D April 1996
+.%A Sun Microelectronics
+.%O http://www.sun.com/oem/products/manuals/STP2002QFP-UG.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Nx 1.5 .
+The first
+.Fx
+version to include it was
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Paul Kranenburg
+.Aq pk@NetBSD.org .
diff --git a/share/man/man4/hptiop.4 b/share/man/man4/hptiop.4
new file mode 100644
index 0000000..83d356b
--- /dev/null
+++ b/share/man/man4/hptiop.4
@@ -0,0 +1,103 @@
+.\" Copyright (c) 2007 Christian Brueffer
+.\" 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$
+.\"
+.Dd May 12, 2007
+.Dt HPTIOP 4
+.Os
+.Sh NAME
+.Nm hptiop
+.Nd "HighPoint RocketRAID 3xxx/4xxx device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device hptiop"
+.Cd "device scbus"
+.Cd "device da"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+hptiop_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the HighPoint RocketRAID 3xxx/4xxx series
+of SAS and SATA RAID controllers.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following SAS and SATA RAID controllers:
+.Pp
+.Bl -bullet -compact
+.It
+HighPoint RocketRAID 4320
+.It
+HighPoint RocketRAID 3220
+.It
+HighPoint RocketRAID 3320
+.It
+HighPoint RocketRAID 3410
+.It
+HighPoint RocketRAID 3520
+.It
+HighPoint RocketRAID 3510
+.It
+HighPoint RocketRAID 3511
+.It
+HighPoint RocketRAID 3521
+.It
+HighPoint RocketRAID 3522
+.It
+HighPoint RocketRAID 3540
+.It
+HighPoint RocketRAID 3120
+.It
+HighPoint RocketRAID 3122
+.It
+HighPoint RocketRAID 3020
+.El
+.Sh NOTES
+The
+.Nm
+driver has only been tested on the i386 and amd64 platforms.
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr hptmv 4 ,
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 7.0 .
+.Pp
+.Sh AUTHORS
+The
+.Nm
+driver was written by HighPoint Technologies, Inc.
diff --git a/share/man/man4/hptmv.4 b/share/man/man4/hptmv.4
new file mode 100644
index 0000000..240a32f
--- /dev/null
+++ b/share/man/man4/hptmv.4
@@ -0,0 +1,101 @@
+.\"
+.\" Copyright (c) 2004 David E. O'Brien
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 17, 2005
+.Dt HPTMV 4
+.Os
+.Sh NAME
+.Nm hptmv
+.Nd "HighPoint RocketRAID 182x device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device hptmv"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+hptmv_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for HighPoint's RocketRAID 182x based RAID controller.
+.Pp
+These devices support ATA disk drives
+and provide RAID0 (striping), RAID1 (mirroring), and RAID5 functionality.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following ATA RAID
+controllers:
+.Pp
+.Bl -bullet -compact
+.It
+HighPoint's RocketRAID 182x series
+.El
+.Sh NOTES
+The
+.Nm
+driver only works on the i386 and amd64 platforms as it requires a binary
+blob object from the manufacturer which they only supply for these platforms.
+The
+.Nm
+driver does
+.Em not
+work on i386 with
+.Xr pae 4
+enabled.
+.Sh SEE ALSO
+.Xr kld 4 ,
+.Xr kldload 8 ,
+.Xr loader 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An HighPoint Technologies, Inc. ,
+and ported to
+.Fx
+by
+.An Scott Long .
+This manual page was written by
+.An David E. O'Brien .
+.Sh BUGS
+The
+.Nm
+driver does not support manipulating the RAID from the OS, RAIDs need
+to be set up from the on-board BIOS.
diff --git a/share/man/man4/hptrr.4 b/share/man/man4/hptrr.4
new file mode 100644
index 0000000..2494344
--- /dev/null
+++ b/share/man/man4/hptrr.4
@@ -0,0 +1,128 @@
+.\"
+.\" Copyright (c) 2007 Me
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd December 14, 2007
+.Dt HPTRR 4
+.Os
+.Sh NAME
+.Nm hptrr
+.Nd "HighPoint RocketRAID device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device hptrr"
+.Cd "device scbus"
+.Cd "device da"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+hptrr_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for HighPoint's RocketRAID based RAID controllers.
+.Pp
+These devices support SATA/ATA disk drives
+and provide RAID0 (striping), RAID1 (mirroring), and RAID5 functionality.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following RAID
+controllers:
+.Pp
+.Bl -bullet -compact
+.It
+RocketRAID 172x series
+.It
+RocketRAID 174x series
+.It
+RocketRAID 2210
+.It
+RocketRAID 222x series
+.It
+RocketRAID 2240
+.It
+RocketRAID 230x series
+.It
+RocketRAID 231x series
+.It
+RocketRAID 232x series
+.It
+RocketRAID 2340
+.It
+RocketRAID 2522
+.El
+.Sh NOTES
+The
+.Nm
+driver only works on the i386 and amd64 platforms as it requires a binary
+blob object from the manufacturer which they only supply for these platforms.
+The
+.Nm
+driver does
+.Em not
+work on i386 with
+.Xr pae 4
+enabled.
+.Pp
+This driver does not support the RR182x series controller.
+See the
+.Xr hptmv 4
+manual page for details on support.
+.Pp
+This driver supersedes the older rr232x driver.
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr hptmv 4 ,
+.Xr loader 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An HighPoint Technologies, Inc. ,
+and ported to
+.Fx
+by
+.An Scott Long .
+This manual page was written by
+.An David E. O'Brien .
+.Sh BUGS
+The
+.Nm
+driver does not support manipulating the RAID from the OS, RAIDs need
+to be set up from the on-board BIOS.
diff --git a/share/man/man4/hwpmc.4 b/share/man/man4/hwpmc.4
new file mode 100644
index 0000000..7034cd4
--- /dev/null
+++ b/share/man/man4/hwpmc.4
@@ -0,0 +1,833 @@
+.\" Copyright (c) 2003-2008 Joseph Koshy
+.\" Copyright (c) 2007 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" Portions of this software were developed by A. Joseph Koshy under
+.\" sponsorship from the FreeBSD Foundation and Google, 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 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$
+.\"
+.Dd September 22, 2008
+.Dt HWPMC 4
+.Os
+.Sh NAME
+.Nm hwpmc
+.Nd "Hardware Performance Monitoring Counter support"
+.Sh SYNOPSIS
+.Cd "options HWPMC_HOOKS"
+.Cd "device hwpmc"
+.Pp
+Additionally, for i386 systems:
+.Cd "device apic"
+.Sh DESCRIPTION
+The
+.Nm
+driver virtualizes the hardware performance monitoring facilities in
+modern CPUs and provides support for using these facilities from
+user level processes.
+.Pp
+The driver supports multi-processor systems.
+.Pp
+PMCs are allocated using the
+.Dv PMC_OP_PMCALLOCATE
+request.
+A successful
+.Dv PMC_OP_PMCALLOCATE
+request will return a handle to the requesting process.
+Subsequent operations on the allocated PMC use this handle to denote
+the specific PMC.
+A process that has successfully allocated a PMC is termed an
+.Dq "owner process" .
+.Pp
+PMCs may be allocated with process or system scope.
+.Bl -tag -width ".Em Process-scope"
+.It Em "Process-scope"
+The PMC is active only when a thread belonging
+to a process it is attached to is scheduled on a CPU.
+.It Em "System-scope"
+The PMC operates independently of processes and
+measures hardware events for the system as a whole.
+.El
+.Pp
+PMCs may be allocated for counting or for sampling:
+.Bl -tag -width ".Em Counting"
+.It Em Counting
+In counting modes, the PMCs count hardware events.
+These counts are retrievable using the
+.Dv PMC_OP_PMCREAD
+system call on all architectures.
+Some architectures offer faster methods of reading these counts.
+.It Em Sampling
+In sampling modes, the PMCs are configured to sample the CPU
+instruction pointer (and optionally to capture the call chain leading
+upto the sampled instruction pointer) after a configurable number of
+hardware events have been observed.
+Instruction pointer samples and call chain records are usually
+directed to a log file for subsequent analysis.
+.El
+.Pp
+Scope and operational mode are orthogonal; a PMC may thus be
+configured to operate in one of the following four modes:
+.Bl -tag -width indent
+.It Process-scope, counting
+These PMCs count hardware events whenever a thread in their attached process is
+scheduled on a CPU.
+These PMCs normally count from zero, but the initial count may be
+set using the
+.Dv PMC_OP_SETCOUNT
+operation.
+Applications can read the value of the PMC anytime using the
+.Dv PMC_OP_PMCRW
+operation.
+.It Process-scope, sampling
+These PMCs sample the target processes instruction pointer after they
+have seen the configured number of hardware events.
+The PMCs only count events when a thread belonging to their attached
+process is active.
+The desired frequency of sampling is set using the
+.Dv PMC_OP_SETCOUNT
+operation prior to starting the PMC.
+Log files are configured using the
+.Dv PMC_OP_CONFIGURELOG
+operation.
+.It System-scope, counting
+These PMCs count hardware events seen by them independent of the
+processes that are executing.
+The current count on these PMCs can be read using the
+.Dv PMC_OP_PMCRW
+request.
+These PMCs normally count from zero, but the initial count may be
+set using the
+.Dv PMC_OP_SETCOUNT
+operation.
+.It System-scope, sampling
+These PMCs will periodically sample the instruction pointer of the CPU
+they are allocated on, and will write the sample to a log for further
+processing.
+The desired frequency of sampling is set using the
+.Dv PMC_OP_SETCOUNT
+operation prior to starting the PMC.
+Log files are configured using the
+.Dv PMC_OP_CONFIGURELOG
+operation.
+.Pp
+System-wide statistical sampling can only be enabled by a process with
+super-user privileges.
+.El
+.Pp
+Processes are allowed to allocate as many PMCs as the hardware and
+current operating conditions permit.
+Processes may mix allocations of system-wide and process-private
+PMCs.
+Multiple processes may be using PMCs simultaneously.
+.Pp
+Allocated PMCs are started using the
+.Dv PMC_OP_PMCSTART
+operation, and stopped using the
+.Dv PMC_OP_PMCSTOP
+operation.
+Stopping and starting a PMC is permitted at any time the owner process
+has a valid handle to the PMC.
+.Pp
+Process-private PMCs need to be attached to a target process before
+they can be used.
+Attaching a process to a PMC is done using the
+.Dv PMC_OP_PMCATTACH
+operation.
+An already attached PMC may be detached from its target process
+using the converse
+.Dv PMC_OP_PMCDETACH
+operation.
+Issuing a
+.Dv PMC_OP_PMCSTART
+operation on an as yet unattached PMC will cause it to be attached
+to its owner process.
+The following rules determine whether a given process may attach
+a PMC to another target process:
+.Bl -bullet -compact
+.It
+A non-jailed process with super-user privileges is allowed to attach
+to any other process in the system.
+.It
+Other processes are only allowed to attach to targets that they would
+be able to attach to for debugging (as determined by
+.Xr p_candebug 9 ) .
+.El
+.Pp
+PMCs are released using
+.Dv PMC_OP_PMCRELEASE .
+After a successful
+.Dv PMC_OP_PMCRELEASE
+operation the handle to the PMC will become invalid.
+.Ss Modifier Flags
+The
+.Dv PMC_OP_PMCALLOCATE
+operation supports the following flags that modify the behavior
+of an allocated PMC:
+.Bl -tag -width indent
+.It Dv PMC_F_CALLCHAIN
+This modifier informs sampling PMCs to record a callchain when
+capturing a sample.
+The maximum depth to which call chains are recorded is specified
+by the
+.Va "kern.hwpmc.callchaindepth"
+kernel tunable.
+.It Dv PMC_F_DESCENDANTS
+This modifier is valid only for a PMC being allocated in process-private
+mode.
+It signifies that the PMC will track hardware events for its
+target process and the target's current and future descendants.
+.It Dv PMC_F_KGMON
+This modifier is valid only for a PMC being allocated in system-wide
+sampling mode.
+It signifies that the PMC's sampling interrupt is to be used to drive
+kernel profiling via
+.Xr kgmon 8 .
+This functionality is currently unimplemented.
+.It Dv PMC_F_LOG_PROCCSW
+This modifier is valid only for a PMC being allocated in process-private
+mode.
+When this modifier is present, at every context switch,
+.Nm
+will log a record containing the number of hardware events
+seen by the target process when it was scheduled on the CPU.
+.It Dv PMC_F_LOG_PROCEXIT
+This modifier is valid only for a PMC being allocated in process-private
+mode.
+With this modifier present,
+.Nm
+will maintain per-process counts for each target process attached to
+a PMC.
+At process exit time, a record containing the target process' PID and
+the accumulated per-process count for that process will be written to the
+configured log file.
+.El
+.Pp
+Modifiers
+.Dv PMC_F_LOG_PROCEXIT
+and
+.Dv PMC_F_LOG_PROCCSW
+may be used in combination with modifier
+.Dv PMC_F_DESCENDANTS
+to track the behavior of complex pipelines of processes.
+PMCs with modifiers
+.Dv PMC_F_LOG_PROCEXIT
+and
+.Dv PMC_F_LOG_PROCCSW
+cannot be started until their owner process has configured a log file.
+.Ss Signals
+The
+.Nm
+driver may deliver signals to processes that have allocated PMCs:
+.Bl -tag -width ".Dv SIGBUS"
+.It Dv SIGIO
+A
+.Dv PMC_OP_PMCRW
+operation was attempted on a process-private PMC that does not have
+attached target processes.
+.It Dv SIGBUS
+The
+.Nm
+driver is being unloaded from the kernel.
+.El
+.Ss PMC ROW DISPOSITIONS
+A PMC row is defined as the set of PMC resources at the same hardware
+address in the CPUs in a system.
+Since process scope PMCs need to move between CPUs following their
+target threads, allocation of a process scope PMC reserves all PMCs in
+a PMC row for use only with process scope PMCs.
+Accordingly a PMC row will be in one of the following dispositions:
+.Bl -tag -width ".Dv PMC_DISP_STANDALONE" -compact
+.It Dv PMC_DISP_FREE
+Hardware counters in this row are free and may be use to satisfy
+either of system scope or process scope allocation requests.
+.It Dv PMC_DISP_THREAD
+Hardware counters in this row are in use by process scope PMCs
+and are only available for process scope allocation requests.
+.It Dv PMC_DISP_STANDALONE
+Some hardware counters in this row have been administratively
+disabled or are in use by system scope PMCs.
+Non-disabled hardware counters in such a row may be used
+for satisfying system scope allocation requests.
+No process scope PMCs will use hardware counters in this row.
+.El
+.Sh PROGRAMMING API
+The recommended way for application programs to use the facilities of
+the
+.Nm
+driver is using the API provided by the
+.Xr pmc 3
+library.
+.Pp
+The
+.Nm
+driver operates using a system call number that is dynamically
+allotted to it when it is loaded into the kernel.
+.Pp
+The
+.Nm
+driver supports the following operations:
+.Bl -tag -width indent
+.It Dv PMC_OP_CONFIGURELOG
+Configure a log file for PMCs that require a log file.
+The
+.Nm
+driver will write log data to this file asynchronously.
+If it encounters an error, logging will be stopped and the error code
+encountered will be saved for subsequent retrieval by a
+.Dv PMC_OP_FLUSHLOG
+request.
+.It Dv PMC_OP_FLUSHLOG
+Transfer buffered log data inside
+.Nm
+to a configured output file.
+This operation returns to the caller after the write operation
+has returned.
+The returned error code reflects any pending error state inside
+.Nm .
+.It Dv PMC_OP_GETCPUINFO
+Retrieve information about the highest possible CPU number for the system,
+and the number of hardware performance monitoring counters available per CPU.
+.It Dv PMC_OP_GETDRIVERSTATS
+Retrieve module statistics (for analyzing the behavior of
+.Nm
+itself).
+.It Dv PMC_OP_GETMODULEVERSION
+Retrieve the version number of API.
+.It Dv PMC_OP_GETPMCINFO
+Retrieve information about the current state of the PMCs on a
+given CPU.
+.It Dv PMC_OP_PMCADMIN
+Set the administrative state (i.e., whether enabled or disabled) for
+the hardware PMCs managed by the
+.Nm
+driver.
+The invoking process needs to possess the
+.Dv PRIV_PMC_MANAGE
+privilege.
+.It Dv PMC_OP_PMCALLOCATE
+Allocate and configure a PMC.
+On successful allocation, a handle to the PMC (a 32 bit value)
+is returned.
+.It Dv PMC_OP_PMCATTACH
+Attach a process mode PMC to a target process.
+The PMC will be active whenever a thread in the target process is
+scheduled on a CPU.
+.Pp
+If the
+.Dv PMC_F_DESCENDANTS
+flag had been specified at PMC allocation time, then the PMC is
+attached to all current and future descendants of the target process.
+.It Dv PMC_OP_PMCDETACH
+Detach a PMC from its target process.
+.It Dv PMC_OP_PMCRELEASE
+Release a PMC.
+.It Dv PMC_OP_PMCRW
+Read and write a PMC.
+This operation is valid only for PMCs configured in counting modes.
+.It Dv PMC_OP_SETCOUNT
+Set the initial count (for counting mode PMCs) or the desired sampling
+rate (for sampling mode PMCs).
+.It Dv PMC_OP_PMCSTART
+Start a PMC.
+.It Dv PMC_OP_PMCSTOP
+Stop a PMC.
+.It Dv PMC_OP_WRITELOG
+Insert a timestamped user record into the log file.
+.El
+.Ss i386 Specific API
+Some i386 family CPUs support the RDPMC instruction which allows a
+user process to read a PMC value without needing to invoke a
+.Dv PMC_OP_PMCRW
+operation.
+On such CPUs, the machine address associated with an allocated PMC is
+retrievable using the
+.Dv PMC_OP_PMCX86GETMSR
+system call.
+.Bl -tag -width indent
+.It Dv PMC_OP_PMCX86GETMSR
+Retrieve the MSR (machine specific register) number associated with
+the given PMC handle.
+.Pp
+The PMC needs to be in process-private mode and allocated without the
+.Dv PMC_F_DESCENDANTS
+modifier flag, and should be attached only to its owner process at the
+time of the call.
+.El
+.Ss amd64 Specific API
+AMD64 CPUs support the RDPMC instruction which allows a
+user process to read a PMC value without needing to invoke a
+.Dv PMC_OP_PMCRW
+operation.
+The machine address associated with an allocated PMC is
+retrievable using the
+.Dv PMC_OP_PMCX86GETMSR
+system call.
+.Bl -tag -width indent
+.It Dv PMC_OP_PMCX86GETMSR
+Retrieve the MSR (machine specific register) number associated with
+the given PMC handle.
+.Pp
+The PMC needs to be in process-private mode and allocated without the
+.Dv PMC_F_DESCENDANTS
+modifier flag, and should be attached only to its owner process at the
+time of the call.
+.El
+.Sh SYSCTL VARIABLES AND LOADER TUNABLES
+The behavior of
+.Nm
+is influenced by the following
+.Xr sysctl 8
+and
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va kern.hwpmc.callchaindepth Pq integer, read-only
+The maximum number of call chain records to capture per sample.
+The default is 8.
+.It Va kern.hwpmc.debugflags Pq string, read-write
+(Only available if the
+.Nm
+driver was compiled with
+.Fl DDEBUG . )
+Control the verbosity of debug messages from the
+.Nm
+driver.
+.It Va kern.hwpmc.hashsize Pq integer, read-only
+The number of rows in the hash tables used to keep track of owner and
+target processes.
+The default is 16.
+.It Va kern.hwpmc.logbuffersize Pq integer, read-only
+The size in kilobytes of each log buffer used by
+.Nm Ns 's
+logging function.
+The default buffer size is 4KB.
+.It Va kern.hwpmc.mtxpoolsize Pq integer, read-only
+The size of the spin mutex pool used by the PMC driver.
+The default is 32.
+.It Va kern.hwpmc.nbuffers Pq integer, read-only
+The number of log buffers used by
+.Nm
+for logging.
+The default is 16.
+.It Va kern.hwpmc.nsamples Pq integer, read-only
+The number of entries in the per-CPU ring buffer used during sampling.
+The default is 16.
+.It Va security.bsd.unprivileged_syspmcs Pq boolean, read-write
+If set to non-zero, allow unprivileged processes to allocate system-wide
+PMCs.
+The default value is 0.
+.It Va security.bsd.unprivileged_proc_debug Pq boolean, read-write
+If set to 0, the
+.Nm
+driver will only allow privileged processes to attach PMCs to other
+processes.
+.El
+.Pp
+These variables may be set in the kernel environment using
+.Xr kenv 1
+before
+.Nm
+is loaded.
+.Sh SECURITY CONSIDERATIONS
+PMCs may be used to monitor the actual behavior of the system on hardware.
+In situations where this constitutes an undesirable information leak,
+the following options are available:
+.Bl -enum
+.It
+Set the
+.Xr sysctl 8
+tunable
+.Va security.bsd.unprivileged_syspmcs
+to 0.
+This ensures that unprivileged processes cannot allocate system-wide
+PMCs and thus cannot observe the hardware behavior of the system
+as a whole.
+This tunable may also be set at boot time using
+.Xr loader 8 ,
+or with
+.Xr kenv 1
+prior to loading the
+.Nm
+driver into the kernel.
+.It
+Set the
+.Xr sysctl 8
+tunable
+.Va security.bsd.unprivileged_proc_debug
+to 0.
+This will ensure that an unprivileged process cannot attach a PMC
+to any process other than itself and thus cannot observe the hardware
+behavior of other processes with the same credentials.
+.El
+.Pp
+System administrators should note that on IA-32 platforms
+.Fx
+makes the content of the IA-32 TSC counter available to all processes
+via the RDTSC instruction.
+.Sh IMPLEMENTATION NOTES
+.Ss SMP Symmetry
+The kernel driver requires all physical CPUs in an SMP system to have
+identical performance monitoring counter hardware.
+.Ss Sparse CPU Numbering
+On platforms that sparsely number CPUs and which support hot-plugging
+of CPUs, requests that specify non-existent or disabled CPUs will fail
+with an error.
+Applications allocating system-scope PMCs need to be aware of
+the possibility of such transient failures.
+.Ss x86 TSC Handling
+Historically, on the x86 architecture,
+.Fx
+has permitted user processes running at a processor CPL of 3 to
+read the TSC using the RDTSC instruction.
+The
+.Nm
+driver preserves this behavior.
+.Ss Intel P4/HTT Handling
+On CPUs with HTT support, Intel P4 PMCs are capable of qualifying
+only a subset of hardware events on a per-logical CPU basis.
+Consequently, if HTT is enabled on a system with Intel Pentium P4
+PMCs, then the
+.Nm
+driver will reject allocation requests for process-private PMCs that
+request counting of hardware events that cannot be counted separately
+for each logical CPU.
+.Ss Intel Pentium-Pro Handling
+Writing a value to the PMC MSRs found in Intel Pentium-Pro style PMCs
+(found in
+.Tn "Intel Pentium Pro" ,
+.Tn "Pentium II" ,
+.Tn "Pentium III" ,
+.Tn "Pentium M"
+and
+.Tn "Celeron"
+processors) will replicate bit 31 of the
+value being written into the upper 8 bits of the MSR,
+bringing down the usable width of these PMCs to 31 bits.
+For process-virtual PMCs, the
+.Nm
+driver implements a workaround in software and makes the corrected 64
+bit count available via the
+.Dv PMC_OP_RW
+operation.
+Processes that intend to use RDPMC instructions directly or
+that intend to write values larger than 2^31 into these PMCs with
+.Dv PMC_OP_RW
+need to be aware of this hardware limitation.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "hwpmc: [class/npmc/capabilities]..."
+Announce the presence of
+.Va npmc
+PMCs of class
+.Va class ,
+with capabilities described by bit string
+.Va capabilities .
+.It "hwpmc: kernel version (0x%x) does not match module version (0x%x)."
+The module loading process failed because a version mismatch was detected
+between the currently executing kernel and the module being loaded.
+.It "hwpmc: this kernel has not been compiled with 'options HWPMC_HOOKS'."
+The module loading process failed because the currently executing kernel
+was not configured with the required configuration option
+.Dv HWPMC_HOOKS .
+.It "hwpmc: tunable hashsize=%d must be greater than zero."
+A negative value was supplied for tunable
+.Va kern.hwpmc.hashsize .
+.It "hwpmc: tunable logbuffersize=%d must be greater than zero."
+A negative value was supplied for tunable
+.Va kern.hwpmc.logbuffersize .
+.It "hwpmc: tunable nlogbuffers=%d must be greater than zero."
+A negative value was supplied for tunable
+.Va kern.hwpmc.nlogbuffers .
+.It "hwpmc: tunable nsamples=%d out of range."
+The value for tunable
+.Va kern.hwpmc.nsamples
+was negative or greater than 65535.
+.El
+.Sh COMPATIBILITY
+The
+.Nm
+driver is
+.Ud
+The API and ABI documented in this manual page may change in
+the future.
+The recommended method of accessing this driver is using the
+.Xr pmc 3
+API.
+.Sh ERRORS
+A command issued to the
+.Nm
+driver may fail with the following errors:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+Helper process creation failed for a
+.Dv PMC_OP_CONFIGURELOG
+request due to a temporary resource shortage in the kernel.
+.It Bq Er EBUSY
+A
+.Dv PMC_OP_CONFIGURELOG
+operation was requested while an existing log was active.
+.It Bq Er EBUSY
+A DISABLE operation was requested using the
+.Dv PMC_OP_PMCADMIN
+request for a set of hardware resources currently in use for
+process-private PMCs.
+.It Bq Er EBUSY
+A
+.Dv PMC_OP_PMCADMIN
+operation was requested on an active system mode PMC.
+.It Bq Er EBUSY
+A
+.Dv PMC_OP_PMCATTACH
+operation was requested for a target process that already had another
+PMC using the same hardware resources attached to it.
+.It Bq Er EBUSY
+A
+.Dv PMC_OP_PMCRW
+request writing a new value was issued on a PMC that was active.
+.It Bq Er EBUSY
+A
+.Dv PMC_OP_PMCSETCOUNT
+request was issued on a PMC that was active.
+.It Bq Er EDOOFUS
+A
+.Dv PMC_OP_PMCSTART
+operation was requested without a log file being configured for a
+PMC allocated with
+.Dv PMC_F_LOG_PROCCSW
+and
+.Dv PMC_F_LOG_PROCEXIT
+modifiers.
+.It Bq Er EDOOFUS
+A
+.Dv PMC_OP_PMCSTART
+operation was requested on a system-wide sampling PMC without a log
+file being configured.
+.It Bq Er EEXIST
+A
+.Dv PMC_OP_PMCATTACH
+request was reissued for a target process that already is the target
+of this PMC.
+.It Bq Er EFAULT
+A bad address was passed in to the driver.
+.It Bq Er EINVAL
+An invalid PMC handle was specified.
+.It Bq Er EINVAL
+An invalid CPU number was passed in for a
+.Dv PMC_OP_GETPMCINFO
+operation.
+.It Bq Er EINVAL
+A
+.Dv PMC_OP_CONFIGURELOG
+request to de-configure a log file was issued without a log file
+being configured.
+.It Bq Er EINVAL
+A
+.Dv PMC_OP_FLUSHLOG
+request was issued without a log file being configured.
+.It Bq Er EINVAL
+An invalid CPU number was passed in for a
+.Dv PMC_OP_PMCADMIN
+operation.
+.It Bq Er EINVAL
+An invalid operation request was passed in for a
+.Dv PMC_OP_PMCADMIN
+operation.
+.It Bq Er EINVAL
+An invalid PMC ID was passed in for a
+.Dv PMC_OP_PMCADMIN
+operation.
+.It Bq Er EINVAL
+A suitable PMC matching the parameters passed in to a
+.Dv PMC_OP_PMCALLOCATE
+request could not be allocated.
+.It Bq Er EINVAL
+An invalid PMC mode was requested during a
+.Dv PMC_OP_PMCALLOCATE
+request.
+.It Bq Er EINVAL
+An invalid CPU number was specified during a
+.Dv PMC_OP_PMCALLOCATE
+request.
+.It Bq Er EINVAL
+A CPU other than
+.Dv PMC_CPU_ANY
+was specified in a
+.Dv PMC_OP_PMCALLOCATE
+request for a process-private PMC.
+.It Bq Er EINVAL
+A CPU number of
+.Dv PMC_CPU_ANY
+was specified in a
+.Dv PMC_OP_PMCALLOCATE
+request for a system-wide PMC.
+.It Bq Er EINVAL
+The
+.Ar pm_flags
+argument to an
+.Dv PMC_OP_PMCALLOCATE
+request contained unknown flags.
+.It Bq Er EINVAL
+(On Intel Pentium 4 CPUs with HTT support)
+A
+.Dv PMC_OP_PMCALLOCATE
+request for a process-private PMC was issued for an event that does
+not support counting on a per-logical CPU basis.
+.It Bq Er EINVAL
+A PMC allocated for system-wide operation was specified with a
+.Dv PMC_OP_PMCATTACH
+or
+.Dv PMC_OP_PMCDETACH
+request.
+.It Bq Er EINVAL
+The
+.Ar pm_pid
+argument to a
+.Dv PMC_OP_PMCATTACH
+or
+.Dv PMC_OP_PMCDETACH
+request specified an illegal process ID.
+.It Bq Er EINVAL
+A
+.Dv PMC_OP_PMCDETACH
+request was issued for a PMC not attached to the target process.
+.It Bq Er EINVAL
+Argument
+.Ar pm_flags
+to a
+.Dv PMC_OP_PMCRW
+request contained illegal flags.
+.It Bq Er EINVAL
+A
+.Dv PMC_OP_PMCX86GETMSR
+operation was requested for a PMC not in process-virtual mode, or
+for a PMC that is not solely attached to its owner process, or for
+a PMC that was allocated with flag
+.Dv PMC_F_DESCENDANTS .
+.It Bq Er EINVAL
+A
+.Dv PMC_OP_WRITELOG
+request was issued for an owner process without a log file
+configured.
+.It Bq Er ENOMEM
+The system was not able to allocate kernel memory.
+.It Bq Er ENOSYS
+(On i386 and amd64 architectures)
+A
+.Dv PMC_OP_PMCX86GETMSR
+operation was requested for hardware that does not support reading
+PMCs directly with the RDPMC instruction.
+.It Bq Er ENXIO
+A
+.Dv PMC_OP_GETPMCINFO
+operation was requested for an absent or disabled CPU.
+.It Bq Er ENXIO
+A
+.Dv PMC_OP_PMCALLOCATE
+operation specified allocation of a system-wide PMC on an absent or
+disabled CPU.
+.It Bq Er ENXIO
+A
+.Dv PMC_OP_PMCSTART
+or
+.Dv PMC_OP_PMCSTOP
+request was issued for a system-wide PMC that was allocated on a CPU
+that is currently absent or disabled.
+.It Bq Er EOPNOTSUPP
+A
+.Dv PMC_OP_PMCALLOCATE
+request was issued for PMC capabilities not supported
+by the specified PMC class.
+.It Bq Er EOPNOTSUPP
+(i386 architectures)
+A sampling mode PMC was requested on a CPU lacking an APIC.
+.It Bq Er EPERM
+A
+.Dv PMC_OP_PMCADMIN
+request was issued by a process without super-user
+privilege or by a jailed super-user process.
+.It Bq Er EPERM
+A
+.Dv PMC_OP_PMCATTACH
+operation was issued for a target process that the current process
+does not have permission to attach to.
+.It Bq Er EPERM
+(i386 and amd64 architectures)
+A
+.Dv PMC_OP_PMCATTACH
+operation was issued on a PMC whose MSR has been retrieved using
+.Dv PMC_OP_PMCX86GETMSR .
+.It Bq Er ESRCH
+A process issued a PMC operation request without having allocated any
+PMCs.
+.It Bq Er ESRCH
+A process issued a PMC operation request after the PMC was detached
+from all of its target processes.
+.It Bq Er ESRCH
+A
+.Dv PMC_OP_PMCATTACH
+or
+.Dv PMC_OP_PMCDETACH
+request specified a non-existent process ID.
+.It Bq Er ESRCH
+The target process for a
+.Dv PMC_OP_PMCDETACH
+operation is not being monitored by
+.Nm .
+.El
+.Sh SEE ALSO
+.Xr kenv 1 ,
+.Xr pmc 3 ,
+.Xr pmclog 3 ,
+.Xr kgmon 8 ,
+.Xr kldload 8 ,
+.Xr pmccontrol 8 ,
+.Xr pmcstat 8 ,
+.Xr sysctl 8 ,
+.Xr kproc_create 9 ,
+.Xr p_candebug 9
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An "Joseph Koshy"
+.Aq jkoshy@FreeBSD.org .
+.Sh BUGS
+The driver samples the state of the kernel's logical processor support
+at the time of initialization (i.e., at module load time).
+On CPUs supporting logical processors, the driver could misbehave if
+logical processors are subsequently enabled or disabled while the
+driver is active.
+.Pp
+On the i386 architecture, the driver requires that the local APIC on the
+CPU be enabled for sampling mode to be supported.
+Many single-processor motherboards keep the APIC disabled in BIOS; on
+such systems
+.Nm
+will not support sampling PMCs.
diff --git a/share/man/man4/ichsmb.4 b/share/man/man4/ichsmb.4
new file mode 100644
index 0000000..a415941
--- /dev/null
+++ b/share/man/man4/ichsmb.4
@@ -0,0 +1,57 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 28, 2007
+.Dt ICHSMB 4
+.Os
+.Sh NAME
+.Nm ichsmb
+.Nd Intel ICH SMBus controller driver
+.Sh SYNOPSIS
+.Cd device pci
+.Cd device smbus
+.Cd device smb
+.Cd device ichsmb
+.Sh DESCRIPTION
+This driver provides access to the SMBus controller logical
+device contained in the Intel 82801AA (ICH), 82801AB (ICH0),
+82801BA (ICH2), 82801CA (ICH3), 82801DC (ICH4), 82801EB (ICH5),
+82801FB (ICH6) and 82801GB (ICH7) PCI chips.
+.Sh SEE ALSO
+.Xr smb 4 ,
+.Xr smbus 4
+.Sh AUTHORS
+.An Archie L. Cobbs Aq archie@FreeBSD.org
diff --git a/share/man/man4/ichwd.4 b/share/man/man4/ichwd.4
new file mode 100644
index 0000000..f9998dc
--- /dev/null
+++ b/share/man/man4/ichwd.4
@@ -0,0 +1,90 @@
+.\"-
+.\" Copyright (c) 2007 Dag-Erling Coïdan Smørgrav
+.\" 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$
+.\"
+.Dd August 20, 2008
+.Dt ICHWD 4
+.Os
+.Sh NAME
+.Nm ichwd
+.Nd device driver for the Intel ICH watchdog interrupt timer
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ichwd"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ichwd_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides
+.Xr watchdog 4
+support for the watchdog interrupt timer present on
+all Intel ICH motherboard chipsets.
+.Pp
+The ICH WDT counts down in ticks of approximately 0.6 seconds; the
+exact value depends on hardware quality and environmental factors.
+Supported watchdog intervals range from 2 to 63 ticks.
+.Pp
+Note that on some ICH-based systems, the WDT may be present but
+disabled, either in hardware or by the BIOS.
+The
+.Nm
+driver attempts to detect this condition and will refuse to attach if
+it believes the WDT is disabled.
+.Sh SEE ALSO
+.Xr watchdog 4 ,
+.Xr watchdog 8 ,
+.Xr watchdogd 8,
+.Xr watchdog 9
+.Rs
+.%T Using the Intel ICH Family Watchdog Timer (WDT)
+.%R Intel Application Note AP-725
+.%O Document Number 292273-001
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Wm. Daryl Hawkins Aq dhawkins@tamu.edu
+of Texas A&M University and
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
diff --git a/share/man/man4/icmp.4 b/share/man/man4/icmp.4
new file mode 100644
index 0000000..a6fbbf2
--- /dev/null
+++ b/share/man/man4/icmp.4
@@ -0,0 +1,254 @@
+.\" Copyright (c) 1986, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)icmp.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd February 9, 2007
+.Dt ICMP 4
+.Os
+.Sh NAME
+.Nm icmp
+.Nd Internet Control Message Protocol
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In netinet/in.h
+.Ft int
+.Fn socket AF_INET SOCK_RAW proto
+.Sh DESCRIPTION
+.Tn ICMP
+is the error and control message protocol used
+by
+.Tn IP
+and the Internet protocol family.
+It may be accessed
+through a
+.Dq raw socket
+for network monitoring
+and diagnostic functions.
+The
+.Fa proto
+parameter to the socket call to create an
+.Tn ICMP
+socket
+is obtained from
+.Xr getprotobyname 3 .
+.Tn ICMP
+sockets are connectionless,
+and are normally used with the
+.Xr sendto 2
+and
+.Xr recvfrom 2
+calls, though the
+.Xr connect 2
+call may also be used to fix the destination for future
+packets (in which case the
+.Xr read 2
+or
+.Xr recv 2
+and
+.Xr write 2
+or
+.Xr send 2
+system calls may be used).
+.Pp
+Outgoing packets automatically have an
+.Tn IP
+header prepended to
+them (based on the destination address).
+Incoming packets are received with the
+.Tn IP
+header and options intact.
+.Ss Types
+ICMP messages are classified according to the type and code fields
+present in the ICMP header.
+The abbreviations for the types and codes may be used in rules in
+.Xr pf.conf 5 .
+The following types are defined:
+.Bl -column x xxxxxxxxxxxx -offset indent
+.It Sy Num Ta Sy Abbrev. Ta Sy Description
+.It 0 Ta echorep Ta "Echo reply"
+.It 3 Ta unreach Ta "Destination unreachable"
+.It 4 Ta squench Ta "Packet loss, slow down"
+.It 5 Ta redir Ta "Shorter route exists"
+.It 6 Ta althost Ta "Alternate host address"
+.It 8 Ta echoreq Ta "Echo request"
+.It 9 Ta routeradv Ta "Router advertisement"
+.It 10 Ta routersol Ta "Router solicitation"
+.It 11 Ta timex Ta "Time exceeded"
+.It 12 Ta paramprob Ta "Invalid IP header"
+.It 13 Ta timereq Ta "Timestamp request"
+.It 14 Ta timerep Ta "Timestamp reply"
+.It 15 Ta inforeq Ta "Information request"
+.It 16 Ta inforep Ta "Information reply"
+.It 17 Ta maskreq Ta "Address mask request"
+.It 18 Ta maskrep Ta "Address mask reply"
+.It 30 Ta trace Ta Traceroute
+.It 31 Ta dataconv Ta "Data conversion problem"
+.It 32 Ta mobredir Ta "Mobile host redirection"
+.It 33 Ta ipv6-where Ta "IPv6 where-are-you"
+.It 34 Ta ipv6-here Ta "IPv6 i-am-here"
+.It 35 Ta mobregreq Ta "Mobile registration request"
+.It 36 Ta mobregrep Ta "Mobile registration reply"
+.It 39 Ta skip Ta SKIP
+.It 40 Ta photuris Ta Photuris
+.El
+.Pp
+The following codes are defined:
+.Bl -column x xxxxxxxxxxxx xxxxxxxx -offset indent
+.It Sy Num Ta Sy Abbrev. Ta Sy Type Ta Sy Description
+.It 0 Ta net-unr Ta unreach Ta "Network unreachable"
+.It 1 Ta host-unr Ta unreach Ta "Host unreachable"
+.It 2 Ta proto-unr Ta unreach Ta "Protocol unreachable"
+.It 3 Ta port-unr Ta unreach Ta "Port unreachable"
+.It 4 Ta needfrag Ta unreach Ta "Fragmentation needed but DF bit set"
+.It 5 Ta srcfail Ta unreach Ta "Source routing failed"
+.It 6 Ta net-unk Ta unreach Ta "Network unknown"
+.It 7 Ta host-unk Ta unreach Ta "Host unknown"
+.It 8 Ta isolate Ta unreach Ta "Host isolated"
+.It 9 Ta net-prohib Ta unreach Ta "Network administratively prohibited"
+.It 10 Ta host-prohib Ta unreach Ta "Host administratively prohibited"
+.It 11 Ta net-tos Ta unreach Ta "Invalid TOS for network"
+.It 12 Ta host-tos Ta unreach Ta "Invalid TOS for host"
+.It 13 Ta filter-prohib Ta unreach Ta "Prohibited access"
+.It 14 Ta host-preced Ta unreach Ta "Precedence violation"
+.It 15 Ta cutoff-preced Ta unreach Ta "Precedence cutoff"
+.It 0 Ta redir-net Ta redir Ta "Shorter route for network"
+.It 1 Ta redir-host Ta redir Ta "Shorter route for host"
+.It 2 Ta redir-tos-net Ta redir Ta "Shorter route for TOS and network"
+.It 3 Ta redir-tos-host Ta redir Ta "Shorter route for TOS and host"
+.It 0 Ta normal-adv Ta routeradv Ta "Normal advertisement"
+.It 16 Ta common-adv Ta routeradv Ta "Selective advertisement"
+.It 0 Ta transit Ta timex Ta "Time exceeded in transit"
+.It 1 Ta reassemb Ta timex Ta "Time exceeded in reassembly"
+.It 0 Ta badhead Ta paramprob Ta "Invalid option pointer"
+.It 1 Ta optmiss Ta paramprob Ta "Missing option"
+.It 2 Ta badlen Ta paramprob Ta "Invalid length"
+.It 1 Ta unknown-ind Ta photuris Ta "Unknown security index"
+.It 2 Ta auth-fail Ta photuris Ta "Authentication failed"
+.It 3 Ta decrypt-fail Ta photuris Ta "Decryption failed"
+.El
+.Ss MIB Variables
+The
+.Tn ICMP
+protocol implements a number of variables in the
+.Va net.inet.icmp
+branch of the
+.Xr sysctl 3
+MIB.
+.Bl -tag -width ".Va icmplim_output"
+.It Va maskrepl
+.Pq Vt boolean
+Enable/disable replies to ICMP Address Mask Request packets.
+Defaults to false.
+.It Va maskfake
+.Pq Vt "unsigned integer"
+When
+.Va maskrepl
+is set and this value is non-zero,
+it will be used instead of the real address mask when
+the system replies to an ICMP Address Mask Request packet.
+Defaults to 0.
+.It Va icmplim
+.Pq Vt integer
+Bandwidth limit for ICMP replies in packets/second.
+Used when
+.Va icmplim_output
+is non-zero.
+Defaults to 200.
+.It Va icmplim_output
+.Pq Vt boolean
+Enable/disable bandwidth limiting of ICMP replies.
+Defaults to true.
+.It Va drop_redirect
+.Pq Vt boolean
+Enable/disable dropping of ICMP Redirect packets.
+Defaults to false.
+.It Va log_redirect
+.Pq Vt boolean
+Enable/disable logging of ICMP Redirect packets.
+Defaults to false.
+.It Va bmcastecho
+.Pq Vt boolean
+Enable/disable ICMP replies received via broadcast or multicast.
+Defaults to false.
+.It Va reply_src
+.Pq Vt str
+An interface name used for the ICMP reply source in response to packets
+which are not directly addressed to us.
+By default continue with normal source selection.
+.It Va reply_from_interface
+.Pq Vt boolean
+Use the IP address of the interface the packet came through in for
+responses to packets which are not directly addressed to us.
+If enabled, this rule is processed before all others.
+By default, continue with normal source selection.
+Enabling this option is particularly useful on routers because it
+makes external traceroutes show the actual path a packet has taken
+instead of the possibly different return path.
+.It Va quotelen
+.Pq Vt integer
+Number of bytes from original packet to quote in ICMP reply.
+This number is internally enforced to be at least 8 bytes (per RFC792)
+and at most the maximal space left in the ICMP reply mbuf.
+.El
+.Sh ERRORS
+A socket operation may fail with one of the following errors returned:
+.Bl -tag -width Er
+.It Bq Er EISCONN
+when trying to establish a connection on a socket which
+already has one, or when trying to send a datagram with the destination
+address specified and the socket is already connected;
+.It Bq Er ENOTCONN
+when trying to send a datagram, but
+no destination address is specified, and the socket has not been
+connected;
+.It Bq Er ENOBUFS
+when the system runs out of memory for
+an internal data structure;
+.It Bq Er EADDRNOTAVAIL
+when an attempt is made to create a
+socket with a network address for which no network interface
+exists.
+.El
+.Sh SEE ALSO
+.Xr recv 2 ,
+.Xr send 2 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr ip 4 ,
+.Xr pf.conf 5
+.Sh HISTORY
+The
+.Nm
+protocol appeared in
+.Bx 4.3 .
diff --git a/share/man/man4/icmp6.4 b/share/man/man4/icmp6.4
new file mode 100644
index 0000000..83aff0e
--- /dev/null
+++ b/share/man/man4/icmp6.4
@@ -0,0 +1,265 @@
+.\" $KAME: icmp6.4,v 1.6 2004/12/27 05:30:56 itojun Exp $
+.\" $OpenBSD: icmp6.4,v 1.19 2004/12/23 20:33:03 jaredy Exp $
+.\"
+.\" Copyright (c) 1986, 1991, 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.
+.\" 3. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 20, 2004
+.Dt ICMP6 4
+.Os
+.Sh NAME
+.Nm icmp6
+.Nd Internet Control Message Protocol for IPv6
+.Sh SYNOPSIS
+.In sys/socket.h
+.In netinet/in.h
+.In netinet/icmp6.h
+.Ft int
+.Fn socket AF_INET6 SOCK_RAW IPPROTO_ICMPV6
+.Sh DESCRIPTION
+ICMPv6 is the error and control message protocol used by IPv6 and the
+IPv6 protocol family (see
+.Xr ip6 4
+and
+.Xr inet6 4 ) .
+It may be accessed through a
+.Dq raw socket
+for network monitoring and diagnostic functions.
+.Pp
+The
+.Fa proto
+parameter to the
+.Xr socket 2
+call to create an ICMPv6 socket may be obtained from
+.Xr getprotobyname 3 .
+ICMPv6 sockets are connectionless, and are normally used with the
+.Xr sendto 2
+and
+.Xr recvfrom 2
+calls, though the
+.Xr connect 2
+call may also be used to fix the destination for future packets
+(in which case
+.Xr read 2
+or
+.Xr recv 2
+and
+.Xr write 2
+or
+.Xr send 2
+system calls may be used).
+.Pp
+Outgoing packets automatically have an IPv6 header prepended to them
+(based on the destination address).
+Incoming packets on the socket are received with the IPv6 header and any
+extension headers removed.
+.Ss Types
+ICMPv6 messages are classified according to the type and code fields
+present in the ICMPv6 header.
+The abbreviations for the types and codes may be used in rules in
+.Xr pf.conf 5 .
+The following types are defined:
+.Bl -column x xxxxxxxxxxxx -offset indent
+.It Sy Num Ta Sy Abbrev. Ta Sy Description
+.It 1 Ta unreach Ta "Destination unreachable"
+.It 2 Ta toobig Ta "Packet too big"
+.It 3 Ta timex Ta "Time exceeded"
+.It 4 Ta paramprob Ta "Invalid IPv6 header"
+.It 128 Ta echoreq Ta "Echo service request"
+.It 129 Ta echorep Ta "Echo service reply"
+.It 130 Ta groupqry Ta "Group membership query"
+.It 130 Ta listqry Ta "Multicast listener query"
+.It 131 Ta grouprep Ta "Group membership report"
+.It 131 Ta listenrep Ta "Multicast listener report"
+.It 132 Ta groupterm Ta "Group membership termination"
+.It 132 Ta listendone Ta "Multicast listerner done"
+.It 133 Ta routersol Ta "Router solicitation"
+.It 134 Ta routeradv Ta "Router advertisement"
+.It 135 Ta neighbrsol Ta "Neighbor solicitation"
+.It 136 Ta neighbradv Ta "Neighbor advertisement"
+.It 137 Ta redir Ta "Shorter route exists"
+.It 138 Ta routrrenum Ta "Route renumbering"
+.It 139 Ta fqdnreq Ta "FQDN query"
+.It 139 Ta niqry Ta "Node information query"
+.It 139 Ta wrureq Ta "Who-are-you request"
+.It 140 Ta fqdnrep Ta "FQDN reply"
+.It 140 Ta nirep Ta "Node information reply"
+.It 140 Ta wrurep Ta "Who-are-you reply"
+.It 200 Ta mtraceresp Ta "mtrace response"
+.It 201 Ta mtrace Ta "mtrace messages"
+.El
+.Pp
+The following codes are defined:
+.Bl -column x xxxxxxxxxxxx xxxxxxxx -offset indent
+.It Sy Num Ta Sy Abbrev. Ta Sy Type Ta
+.Sy Description
+.It 0 Ta noroute-unr Ta unreach Ta "No route to destination"
+.It 1 Ta admin-unr Ta unreach Ta "Administratively prohibited"
+.It 2 Ta beyond-unr Ta unreach Ta "Beyond scope of source address"
+.It 2 Ta notnbr-unr Ta unreach Ta "Not a neighbor (obselete)"
+.It 3 Ta addr-unr Ta unreach Ta "Address unreachable"
+.It 4 Ta port-unr Ta unreach Ta "Port unreachable"
+.It 0 Ta transit Ta timex Ta "Time exceeded in transit"
+.It 1 Ta reassemb Ta timex Ta "Time exceeded in reassembly"
+.It 0 Ta badhead Ta paramprob Ta "Erroneous header field"
+.It 1 Ta nxthdr Ta paramprob Ta "Unrecognized next header"
+.It 2 Ta "" Ta redir Ta "Unrecognized option"
+.It 0 Ta redironlink Ta redir Ta "Redirection to on-link node"
+.It 1 Ta redirrouter Ta redir Ta "Redirection to better router"
+.El
+.Ss Headers
+All ICMPv6 messages are prefixed with an ICMPv6 header.
+This header corresponds to the
+.Vt icmp6_hdr
+structure and has the following definition:
+.Bd -literal -offset indent
+struct icmp6_hdr {
+ u_int8_t icmp6_type; /* type field */
+ u_int8_t icmp6_code; /* code field */
+ u_int16_t icmp6_cksum; /* checksum field */
+ union {
+ u_int32_t icmp6_un_data32[1]; /* type-specific */
+ u_int16_t icmp6_un_data16[2]; /* type-specific */
+ u_int8_t icmp6_un_data8[4]; /* type-specific */
+ } icmp6_dataun;
+} __packed;
+
+#define icmp6_data32 icmp6_dataun.icmp6_un_data32
+#define icmp6_data16 icmp6_dataun.icmp6_un_data16
+#define icmp6_data8 icmp6_dataun.icmp6_un_data8
+#define icmp6_pptr icmp6_data32[0] /* parameter prob */
+#define icmp6_mtu icmp6_data32[0] /* packet too big */
+#define icmp6_id icmp6_data16[0] /* echo request/reply */
+#define icmp6_seq icmp6_data16[1] /* echo request/reply */
+#define icmp6_maxdelay icmp6_data16[0] /* mcast group membership*/
+.Ed
+.Pp
+.Va icmp6_type
+describes the type of the message.
+Suitable values are defined in
+.Aq Pa netinet/icmp6.h .
+.Va icmp6_code
+describes the sub-type of the message and depends on
+.Va icmp6_type .
+.Va icmp6_cksum
+contains the checksum for the message and is filled in by the
+kernel on outgoing messages.
+The other fields are used for type-specific purposes.
+.Ss Filters
+Because of the extra functionality of ICMPv6 in comparison to ICMPv4,
+a larger number of messages may be potentially received on an ICMPv6
+socket.
+Input filters may therefore be used to restrict input to a subset of the
+incoming ICMPv6 messages so only interesting messages are returned by the
+.Xr recv 2
+family of calls to an application.
+.Pp
+The
+.Vt icmp6_filter
+structure may be used to refine the input message set according to the
+ICMPv6 type.
+By default, all messages types are allowed on newly created raw ICMPv6
+sockets.
+The following macros may be used to refine the input set:
+.Bl -tag -width Ds
+.It Fn "void ICMP6_FILTER_SETPASSALL" "struct icmp6_filter *filterp"
+Allow all incoming messages.
+.Va filterp
+is modified to allow all message types.
+.It Fn "void ICMP6_FILTER_SETBLOCKALL" "struct icmp6_filter *filterp"
+Ignore all incoming messages.
+.Va filterp
+is modified to ignore all message types.
+.It Xo
+.Ft void
+.Fn ICMP6_FILTER_SETPASS "int type" "struct icmp6_filter *filterp"
+.Xc
+Allow ICMPv6 messages with the given
+.Fa type .
+.Va filterp
+is modified to allow such messages.
+.It Xo
+.Ft void
+.Fn ICMP6_FILTER_SETBLOCK" "int type" "struct icmp6_filter *filterp"
+.Xc
+Ignore ICMPv6 messages with the given
+.Fa type .
+.Va filterp
+is modified to ignore such messages.
+.It Xo
+.Ft int
+.Fn ICMP6_FILTER_WILLPASS" "int type" "const struct icmp6_filter *filterp"
+.Xc
+Determine if the given filter will allow an ICMPv6 message of the given
+type.
+.It Xo
+.Ft int
+.Fn ICMP6_FILTER_WILLBLOCK" "int type" "const struct icmp6_filter *filterp"
+.Xc
+Determine if the given filter will ignore an ICMPv6 message of the given
+type.
+.El
+.Pp
+The
+.Xr getsockopt 2
+and
+.Xr setsockopt 2
+calls may be used to obtain and install the filter on ICMPv6 sockets at
+option level
+.Dv IPPROTO_ICMPV6
+and name
+.Dv ICMPV6_FILTER
+with a pointer to the
+.Vt icmp6_filter
+structure as the option value.
+.Sh SEE ALSO
+.Xr getsockopt 2 ,
+.Xr recv 2 ,
+.Xr send 2 ,
+.Xr setsockopt 2 ,
+.Xr socket 2 ,
+.Xr getprotobyname 3 ,
+.Xr inet6 4 ,
+.Xr ip6 4 ,
+.Xr netintro 4
+.Rs
+.%A W. Stevens
+.%A M. Thomas
+.%T Advanced Sockets API for IPv6
+.%N RFC 2292
+.%D February 1998
+.Re
+.Rs
+.%A A. Conta
+.%A S. Deering
+.%T "Internet Control Message Protocol (ICMPv6) for the Internet" \
+ "Protocol Version 6 (IPv6) Specification"
+.%N RFC 2463
+.%D December 1998
+.Re
diff --git a/share/man/man4/ida.4 b/share/man/man4/ida.4
new file mode 100644
index 0000000..01e0267
--- /dev/null
+++ b/share/man/man4/ida.4
@@ -0,0 +1,84 @@
+.\" $FreeBSD$
+.\" Written by Tom Rhodes
+.\" This file is public domain
+.\"
+.Dd August 8, 2004
+.Dt IDA 4
+.Os
+.Sh NAME
+.Nm ida
+.Nd Compaq Intelligent Drive Array Controllers
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device ida"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ida_load="YES"
+.Ed
+.Sh DESCRIPTION
+The Compaq Intelligent Drive Array (IDA) technology is used to
+distribute data across an array of hard drives.
+It unites these hard drives into one or more high-performance logical drives.
+The drive array is managed by an array controller.
+.Pp
+These controllers have the ability to provide fault tolerance for the connected
+drives and optionally provide write cache for the logical drives.
+It is also possible for an application to access the SCSI bus subsystem
+directly by using the pass-through interface.
+.Sh HARDWARE
+The following controllers are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+Compaq SMART Array 221
+.It
+Compaq Integrated SMART Array Controller
+.It
+Compaq SMART Array 4200
+.It
+Compaq SMART Array 4250ES
+.It
+Compaq SMART 3200 Controller
+.It
+Compaq SMART 3100ES Controller
+.It
+Compaq SMART-2/DH Controller
+.It
+Compaq SMART-2/SL Controller
+.It
+Compaq SMART-2/P Controller
+.It
+Compaq SMART-2/E Controller
+.It
+Compaq SMART Controller
+.El
+.Sh IMPLEMENTATION NOTES
+Extreme caution should be exercised when using the pass-through interface.
+It is possible to interfere with normal system I/O and cause hangs if
+pass-through is used to an active device.
+Pass-through should only be used to a device that is otherwise quiescent.
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr pass 4 ,
+.Xr xpt 4 ,
+.Xr camcontrol 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Jonathan Lemon Aq jlemon@FreeBSD.org
+and
+.An Matthew N. Dodd Aq mdodd@FreeBSD.org .
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man4/idt.4 b/share/man/man4/idt.4
new file mode 100644
index 0000000..adf1cf7
--- /dev/null
+++ b/share/man/man4/idt.4
@@ -0,0 +1,60 @@
+.\" $FreeBSD$
+.\"
+.Dd June 3, 2003
+.Dt IDT 4
+.Os
+.Sh NAME
+.Nm idt
+.Nd device driver for IDT NICStAR-based ATM interfaces
+.Sh SYNOPSIS
+.Cd "device idt"
+.Cd "device atm"
+.Sh DESCRIPTION
+The
+.Nm
+device driver supports ATM network interfaces based on the
+IDT NICStAR 77211 controller, including the FORE Systems
+ForeRunner LE25 and LE155.
+For configuring the card for IP see
+.Xr natmip 4 .
+.Pp
+ATM CBR connections are supported, and bandwidth is allocated in
+slots of 64k each.
+Three VBR queues handle traffic for VBR and UBR.
+Two UBR queues prioritize UBR traffic.
+ILMI and signalling get the higher priority queue, as well as UBR traffic
+that specifies a peak cell rate.
+All other UBR traffic goes into the lower queue.
+.Pp
+The following sysctls are recognized by the driver:
+.Bl -tag -width indent
+.It Va hw.idt.log_bufstat
+Print statistics about buffer use to the system log periodically.
+.It Va hw.idt.log_vcs
+Print information about VC opens, closes, and other events to the system log.
+.It Va hw.idt.bufs_large
+Set or print the maximum size of the 2KB buffer queue.
+.It Va hw.idt.bufs_small
+Set or print the maximum size of the mbuf queue.
+.It Va hw.idt.cur_large
+Print the current size of the 2KB buffer queue.
+.It Va hw.idt.cur_small
+Print the current size of the mbuf queue.
+.It Va hw.idt.qptr_hold
+Optimize the TX queue buffer for lowest overhead.
+.El
+.Sh SEE ALSO
+.Xr natm 4 ,
+.Xr natmip 4 ,
+.Xr ifconfig 8 ,
+.Xr route 8
+.Sh AUTHORS
+.An -nosplit
+.An Richard Hodges ,
+based on the original driver for
+.Fx 2.2
+by
+.An Mark Tinguely .
+.An Bruce M. Simpson
+wrote this manual page and backported the driver to
+.Fx 4.9 .
diff --git a/share/man/man4/ieee80211.4 b/share/man/man4/ieee80211.4
new file mode 100644
index 0000000..bbc8c5d
--- /dev/null
+++ b/share/man/man4/ieee80211.4
@@ -0,0 +1,246 @@
+.\" Copyright (c) 2001
+.\" 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. 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 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$
+.\"
+.Dd February 23, 2001
+.Dt IEEE80211 4
+.Os
+.Sh NAME
+.Nm ieee80211
+.Nd standard interface to IEEE 802.11 devices
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In net/if.h
+.In net/ethernet.h
+.In net/if_ieee80211.h
+.Sh DESCRIPTION
+This section describes the standard interface to configuration
+and status information on IEEE 802.11 devices.
+Most devices support options not configurable by this interface.
+They must be set by their respective, specific control program.
+The interface is via one
+of the following
+.Xr ioctl 2
+calls on a socket:
+.Bl -tag -width ".Dv SIOCG80211"
+.It Dv SIOCG80211
+Get configuration or status information.
+.It Dv SIOCS80211
+Set configuration information.
+.El
+.Pp
+These requests are made via a modified
+.Vt ifreq
+structure.
+This structure is defined as follows:
+.Bd -literal
+struct ieee80211req {
+ char i_name[IFNAMSIZ]; /* if_name, e.g. "wi0" */
+ u_int16_t i_type; /* req type */
+ int16_t i_val; /* Index or simple value */
+ int16_t i_len; /* Index or simple value */
+ void *i_data; /* Extra data */
+};
+.Ed
+.Pp
+For
+.Dv SIOCG80211
+the following values of
+.Va i_type
+are valid:
+.Bl -tag -width indent
+.It Dv IEEE80211_IOC_SSID
+Returns the requested SSID by copying it into the buffer pointed to by
+.Va i_data
+and setting
+.Va i_len
+to the length.
+If
+.Va i_val
+is \(>= 0 then the request refers to the configured value for that slot.
+Generally, 0 is the only valid value, but some interfaces support more
+SSIDs.
+If
+.Va i_val
+is \-1 then the request refers to the currently active value.
+.It Dv IEEE80211_IOC_NUMSSIDS
+Returns the number of SSIDs this card supports.
+In most cases, this is
+1, but some devices such as
+.Xr an 4
+support more.
+.It Dv IEEE80211_IOC_WEP
+Returns the current WEP status in
+.Va i_val .
+Valid values are
+.Dv IEEE80211_WEP_NOSUP , IEEE80211_WEP_ON , IEEE80211_WEP_OFF ,
+and
+.Dv IEEE80211_WEP_MIXED .
+Respectively, these values mean unsupported, mandatory for all devices,
+off, and on, but not required for all devices.
+.It Dv IEEE80211_IOC_WEPKEY
+Returns the requested WEP key via
+.Va i_data
+and its length via
+.Va i_len .
+If the device does not support returning the WEP key or the user is not
+root then the key may be returned as all zeros.
+Technically this is a
+valid key, but it is the kind of key an idiot would put on his luggage so
+we use it as a special value.
+Generally, only four WEP keys are allowed, but some devices support more.
+If so, the first four (0-3) are
+the standard keys stored in volatile storage and the others are device
+specific.
+.It Dv IEEE80211_IOC_NUMWEPKEYS
+Returns the number of WEP keys supported by this device, generally 4.
+A device that does not support WEP may either report 0 or simply return
+.Er EINVAL .
+.It Dv IEEE80211_IOC_WEPTXKEY
+Returns the WEP key used for transmission.
+.It Dv IEEE80211_IOC_AUTHMODE
+Returns the current authentication mode in
+.Va i_val .
+Valid values are
+.Dv IEEE80211_AUTH_NONE , IEEE80211_AUTH_OPEN ,
+and
+.Dv IEEE80211_AUTH_SHARED .
+.It Dv IEEE80211_IOC_STATIONNAME
+Returns the station name via
+.Va i_data
+and its length via
+.Va i_len .
+While all known devices seem to support this in some way or another,
+they all do it differently and it appears to not have anything to do
+with the actual IEEE 802.11 standard so making up an answer may be
+necessary for future devices.
+.It Dv IEEE80211_IOC_CHANNEL
+Returns the current direct sequence spread spectrum channel in use.
+.It Dv IEEE80211_IOC_POWERSAVE
+Returns the current powersaving mode.
+Valid values are
+.Dv IEEE80211_POWERSAVE_NOSUP , IEEE80211_POWERSAVE_OFF ,
+.Dv IEEE80211_POWERSAVE_ON , IEEE80211_POWERSAVE_CAM ,
+.Dv IEEE80211_POWERSAVE_PSP ,
+and
+.Dv IEEE80211_POWERSAVE_PSP_CAM .
+Currently,
+.Dv IEEE80211_POWERSAVE_ON
+is defined to be equal to
+.Dv IEEE80211_POWERSAVE_CAM ,
+but this may be incorrect.
+.It Dv IEEE80211_IOC_POWERSAVESLEEP
+Returns the powersave sleep time in msec in
+.Va i_val .
+.El
+.Pp
+For
+.Dv SIOCS80211
+the following values of
+.Va i_type
+are valid:
+.Bl -tag -width indent
+.It Dv IEEE80211_IOC_SSID
+Set the desired SSID for infrastructure and ad-hoc modes to value given
+by
+.Va i_data
+and
+.Va i_len .
+The length should be no longer than 32 characters.
+.It Dv IEEE80211_IOC_WEP
+Set the current WEP mode to the value given in
+.Va i_val .
+Valid values are the same as those for this value above.
+Devices which
+do not support all modes may choose to either return
+.Er EINVAL
+or choose a reasonable alternate (supported) setting.
+.It Dv IEEE80211_IOC_WEPKEY
+Set the WEP key indicated by
+.Va i_val
+to the value given by
+.Va i_data
+and
+.Va i_len .
+Generally, valid values of
+.Va i_len
+are 0, 5, and 13 though not all devices with WEP support have support
+for 13-byte keys.
+.It Dv IEEE80211_IOC_WEPTXKEY
+Set the WEP key used for transmission to the value in
+.Va i_val .
+Not all values which are valid for setting keys may be valid for setting
+transmit keys due to strange device interfaces.
+.It Dv IEEE80211_IOC_AUTHMODE
+Set the current authorization mode to the value given in
+.Va i_val .
+Valid values are given above.
+Not all devices support this.
+.It Dv IEEE80211_IOC_STATIONNAME
+Set the station name to the value given by
+.Va i_data
+and
+.Va i_len .
+The standard does not appear to deal with this feature so the range of
+valid values may vary from device to device.
+.It Dv IEEE80211_IOC_CHANNEL
+Set the desired ad-hoc channel to the value given by
+.Va i_val .
+On some devices this has an impact on infrastructure mode as well.
+Valid values are 1-14, but 0 should be allowed and should return the
+device to the default value.
+May devices support this directly by
+converting any invalid value to the default value.
+.It Dv IEEE80211_IOC_POWERSAVE
+Set the current powersaving mode to the value given in
+.Va i_val .
+Valid values are the same as those for this value above.
+Devices which
+do not support all modes may choose to either return
+.Er EINVAL
+or choose a reasonable alternate (supported) setting.
+Most devices only
+support CAM mode.
+.It Dv IEEE80211_IOC_POWERSAVESLEEP
+Set the powersave sleep time in msec to the value in
+.Va i_val .
+.El
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr an 4 ,
+.Xr ray 4 ,
+.Xr wi 4 ,
+.Xr ancontrol 8 ,
+.Xr ifconfig 8 ,
+.Xr raycontrol 8 ,
+.Sh HISTORY
+The
+.Nm
+manual appeared in
+.Fx 4.3 .
diff --git a/share/man/man4/if_bridge.4 b/share/man/man4/if_bridge.4
new file mode 100644
index 0000000..9eebe98
--- /dev/null
+++ b/share/man/man4/if_bridge.4
@@ -0,0 +1,442 @@
+.\" $NetBSD: bridge.4,v 1.5 2004/01/31 20:14:11 jdc Exp $
+.\"
+.\" Copyright 2001 Wasabi Systems, Inc.
+.\" All rights reserved.
+.\"
+.\" Written by Jason R. Thorpe for Wasabi Systems, 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.
+.\" 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 by
+.\" Wasabi Systems, Inc.
+.\" 4. The name of Wasabi Systems, Inc. may not be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC
+.\" 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$
+.\"
+.Dd September 17, 2007
+.Dt IF_BRIDGE 4
+.Os
+.Sh NAME
+.Nm if_bridge
+.Nd network bridge device
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device if_bridge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following lines in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_bridge_load="YES"
+bridgestp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver creates a logical link between two or more IEEE 802 networks
+that use the same (or
+.Dq "similar enough" )
+framing format.
+For example, it is possible to bridge Ethernet and 802.11 networks together,
+but it is not possible to bridge Ethernet and Token Ring together.
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Pp
+The
+.Nm
+interface randomly chooses a link (MAC) address in the range reserved for
+locally administered addresses when it is created.
+This address is guaranteed to be unique
+.Em only
+across all
+.Nm
+interfaces on the local machine.
+Thus you can theoretically have two bridges on the different machines with
+the same link addresses.
+The address can be changed by assigning the desired link address using
+.Xr ifconfig 8 .
+.Pp
+If
+.Xr sysctl 8
+node
+.Va net.link.bridge.inherit_mac
+has non-zero value, newly created bridge will inherit MAC address
+from its first member instead of choosing random link-level address.
+This will provide more predictable bridge MAC without any
+additional configuration, but currently this feature is known
+to break some L2 protocols, for example PPPoE that is provided
+by
+.Xr ng_pppoe 4
+and
+.Xr ppp 8 .
+Now this feature is considered as experimental and is turned off
+by-default.
+.Pp
+A bridge can be used to provide several services, such as a simple
+802.11-to-Ethernet bridge for wireless hosts, and traffic isolation.
+.Pp
+A bridge works like a hub, forwarding traffic from one interface
+to another.
+Multicast and broadcast packets are always forwarded to all
+interfaces that are part of the bridge.
+For unicast traffic, the bridge learns which MAC addresses are associated
+with which interfaces and will forward the traffic selectively.
+.Pp
+All the bridged member interfaces need to be up in order to pass network traffic.
+These can be enabled using
+.Xr ifconfig 8
+or
+.Va ifconfig_ Ns Ao Ar interface Ac Ns Li ="up"
+in
+.Xr rc.conf 5 .
+.Pp
+The MTU of the first member interface to be added is used as the bridge MTU.
+All additional members are required to have exactly the same value.
+.Pp
+The TXCSUM capability is disabled for any interface added to the bridge, and it
+is restored when the interface is removed again.
+.Pp
+The bridge supports
+.Dq monitor mode ,
+where the packets are discarded after
+.Xr bpf 4
+processing, and are not processed or forwarded further.
+This can be used to multiplex the input of two or more interfaces into a single
+.Xr bpf 4
+stream.
+This is useful for reconstructing the traffic for network taps
+that transmit the RX/TX signals out through two separate interfaces.
+.Sh SPANNING TREE
+The
+.Nm
+driver implements the Rapid Spanning Tree Protocol (RSTP or 802.1w) with
+backwards compatibility with the legacy Spanning Tree Protocol (STP).
+Spanning Tree is used to detect and remove loops in a network topology.
+.Pp
+RSTP provides faster spanning tree convergence than legacy STP, the protocol
+will exchange information with neighbouring switches to quickly transition to
+forwarding without creating loops.
+.Pp
+The code will default to RSTP mode but will downgrade any port connected to a
+legacy STP network so is fully backward compatible.
+A bridge can be forced to operate in STP mode without rapid state transitions
+via the
+.Va proto
+command in
+.Xr ifconfig 8 .
+.Pp
+The bridge can log STP port changes to
+.Xr syslog 3
+by enabling the
+.Va net.link.bridge.log_stp
+variable using
+.Xr sysctl 8 .
+.Pp
+.Sh PACKET FILTERING
+Packet filtering can be used with any firewall package that hooks in via the
+.Xr pfil 9
+framework.
+When filtering is enabled, bridged packets will pass through the filter
+inbound on the originating interface, on the bridge interface and outbound on
+the appropriate interfaces.
+Either stage can be disabled.
+The filtering behaviour can be controlled using
+.Xr sysctl 8 :
+.Bl -tag -width ".Va net.link.bridge.pfil_onlyip"
+.It Va net.link.bridge.pfil_onlyip
+Controls the handling of non-IP packets which are not passed to
+.Xr pfil 9 .
+Set to
+.Li 1
+to only allow IP packets to pass (subject to firewall rules), set to
+.Li 0
+to unconditionally pass all non-IP Ethernet frames.
+.It Va net.link.bridge.pfil_member
+Set to
+.Li 1
+to enable filtering on the incoming and outgoing member interfaces, set
+to
+.Li 0
+to disable it.
+.It Va net.link.bridge.pfil_bridge
+Set to
+.Li 1
+to enable filtering on the bridge interface, set
+to
+.Li 0
+to disable it.
+.It Va net.link.bridge.pfil_local_phys
+Set to
+.Li 1
+to additionally filter on the physical interface for locally destined packets.
+Set to
+.Li 0
+to disable this feature.
+.It Va net.link.bridge.ipfw
+Set to
+.Li 1
+to enable layer2 filtering with
+.Xr ipfirewall 4 ,
+set to
+.Li 0
+to disable it.
+This needs to be enabled for
+.Xr dummynet 4
+support.
+When
+.Va ipfw
+is enabled,
+.Va pfil_bridge
+and
+.Va pfil_member
+will be disabled so that IPFW
+is not run twice; these can be re-enabled if desired.
+.It Va net.link.bridge.ipfw_arp
+Set to
+.Li 1
+to enable layer2 ARP filtering with
+.Xr ipfirewall 4 ,
+set to
+.Li 0
+to disable it.
+Requires
+.Va ipfw
+to be enabled.
+.El
+.Pp
+ARP and REVARP packets are forwarded without being filtered and others
+that are not IP nor IPv6 packets are not forwarded when
+.Va pfil_onlyip
+is enabled.
+IPFW can filter Ethernet types using
+.Cm mac-type
+so all packets are passed to
+the filter for processing.
+.Pp
+The packets originating from the bridging host will be seen by
+the filter on the interface that is looked up in the routing
+table.
+.Pp
+The packets destined to the bridging host will be seen by the filter
+on the interface with the MAC address equal to the packet's destination
+MAC.
+There are situations when some of the bridge members are sharing
+the same MAC address (for example the
+.Xr vlan 4
+interfaces: they are currenly sharing the
+MAC address of the parent physical interface).
+It is not possible to distinguish between these interfaces using
+their MAC address, excluding the case when the packet's destination
+MAC address is equal to the MAC address of the interface on which
+the packet was entered to the system.
+In this case the filter will see the incoming packet on this
+interface.
+In all other cases the interface seen by the packet filter is chosen
+from the list of bridge members with the same MAC address and the
+result strongly depends on the member addition sequence and the
+actual implementation of
+.Nm .
+It is not recommended to rely on the order chosen by the current
+.Nm
+implementation: it can be changed in the future.
+.Pp
+The previous paragraph is best illustrated with the following
+pictures.
+Let
+.Bl -bullet
+.It
+the MAC address of the incoming packet's destination is
+.Nm nn:nn:nn:nn:nn:nn ,
+.It
+the interface on which packet entered the system is
+.Nm ifX ,
+.It
+.Nm ifX
+MAC address is
+.Nm xx:xx:xx:xx:xx:xx ,
+.It
+there are possibly other bridge members with the same MAC address
+.Nm xx:xx:xx:xx:xx:xx ,
+.It
+the bridge has more than one interface that are sharing the
+same MAC address
+.Nm yy:yy:yy:yy:yy:yy ;
+we will call them
+.Nm vlanY1 ,
+.Nm vlanY2 ,
+etc.
+.El
+.Pp
+Then if the MAC address
+.Nm nn:nn:nn:nn:nn:nn
+is equal to the
+.Nm xx:xx:xx:xx:xx:xx
+then the filter will see the packet on the interface
+.Nm ifX
+no matter if there are any other bridge members carrying the same
+MAC address.
+But if the MAC address
+.Nm nn:nn:nn:nn:nn:nn
+is equal to the
+.Nm yy:yy:yy:yy:yy:yy
+then the interface that will be seen by the filter is one of the
+.Nm vlanYn .
+It is not possible to predict the name of the actual interface
+without the knowledge of the system state and the
+.Nm
+implementation details.
+.Pp
+This problem arises for any bridge members that are sharing the same
+MAC address, not only to the
+.Xr vlan 4
+ones: they we taken just as the example of such situation.
+So if one wants the filter the locally destined packets based on
+their interface name, one should be aware of this implication.
+The described situation will appear at least on the filtering bridges
+that are doing IP-forwarding; in some of such cases it is better
+to assign the IP address only to the
+.Nm
+interface and not to the bridge members.
+Enabling
+.Va net.link.bridge.pfil_local_phys
+will let you do the additional filtering on the physical interface.
+.Sh EXAMPLES
+The following when placed in the file
+.Pa /etc/rc.conf
+will cause a bridge called
+.Dq Li bridge0
+to be created, and will add the interfaces
+.Dq Li ath0
+and
+.Dq Li fxp0
+to the bridge, and then enable packet forwarding.
+Such a configuration could be used to implement a simple
+802.11-to-Ethernet bridge (assuming the 802.11 interface is
+in ad-hoc mode).
+.Bd -literal -offset indent
+cloned_interfaces="bridge0"
+ifconfig_bridge0="addm ath0 addm fxp0 up"
+.Ed
+.Pp
+For the bridge to forward packets all member interfaces and the bridge need
+to be up.
+The above example would also require:
+.Bd -literal -offset indent
+ifconfig_ath0="up ssid my_ap mode 11g mediaopt hostap"
+ifconfig_fxp0="up"
+.Ed
+.Pp
+Consider a system with two 4-port Ethernet boards.
+The following will cause a bridge consisting of all 8 ports with Rapid Spanning
+Tree enabled to be created:
+.Bd -literal -offset indent
+ifconfig bridge0 create
+ifconfig bridge0 \e
+ addm fxp0 stp fxp0 \e
+ addm fxp1 stp fxp1 \e
+ addm fxp2 stp fxp2 \e
+ addm fxp3 stp fxp3 \e
+ addm fxp4 stp fxp4 \e
+ addm fxp5 stp fxp5 \e
+ addm fxp6 stp fxp6 \e
+ addm fxp7 stp fxp7 \e
+ up
+.Ed
+.Pp
+The bridge can be used as a regular host interface at the same time as bridging
+between its member ports.
+In this example, the bridge connects em0 and em1, and will receive its IP
+address through DHCP:
+.Bd -literal -offset indent
+cloned_interfaces="bridge0"
+ifconfig_bridge0="addm em0 addm em1 DHCP"
+ifconfig_em0="up"
+ifconfig_em1="up"
+.Ed
+.Pp
+The bridge can tunnel Ethernet across an IP internet using the EtherIP
+protocol.
+This can be combined with
+.Xr ipsec 4
+to provide an encrypted connection.
+Create a
+.Xr gif 4
+interface and set the local and remote IP addresses for the
+tunnel, these are reversed on the remote bridge.
+.Bd -literal -offset indent
+ifconfig gif0 create
+ifconfig gif0 tunnel 1.2.3.4 5.6.7.8 up
+ifconfig bridge0 create
+ifconfig bridge0 addm fxp0 addm gif0 up
+.Ed
+.Sh SEE ALSO
+.Xr gif 4 ,
+.Xr ipf 4 ,
+.Xr ipfw 4 ,
+.Xr pf 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm bridge
+driver was originally written by
+.An Jason L. Wright
+.Aq jason@thought.net
+as part of an undergraduate independent study at the University of
+North Carolina at Greensboro.
+.Pp
+This version of the
+.Nm
+driver has been heavily modified from the original version by
+.An Jason R. Thorpe
+.Aq thorpej@wasabisystems.com .
+.Pp
+Rapid Spanning Tree Protocol (RSTP) support was added by
+.An Andrew Thompson
+.Aq thompsa@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+driver currently supports only Ethernet and Ethernet-like (e.g., 802.11)
+network devices, with exactly the same interface MTU size as the bridge device.
diff --git a/share/man/man4/ifmib.4 b/share/man/man4/ifmib.4
new file mode 100644
index 0000000..3cffbea
--- /dev/null
+++ b/share/man/man4/ifmib.4
@@ -0,0 +1,196 @@
+.\" Copyright 1996 Massachusetts Institute of Technology
+.\"
+.\" Permission to use, copy, modify, and distribute this software and
+.\" its documentation for any purpose and without fee is hereby
+.\" granted, provided that both the above copyright notice and this
+.\" permission notice appear in all copies, that both the above
+.\" copyright notice and this permission notice appear in all
+.\" supporting documentation, and that the name of M.I.T. not be used
+.\" in advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission. M.I.T. makes
+.\" no representations about the suitability of this software for any
+.\" purpose. It is provided "as is" without express or implied
+.\" warranty.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+.\" SHALL M.I.T. 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$
+.\"
+.Dd November 15, 1996
+.Dt IFMIB 4
+.Os
+.Sh NAME
+.Nm ifmib
+.Nd Management Information Base for network interfaces
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In sys/sysctl.h
+.In sys/time.h
+.In net/if.h
+.In net/if_mib.h
+.Sh DESCRIPTION
+The
+.Nm
+facility is an application of the
+.Xr sysctl 3
+interface to provide management information about network interfaces
+to client applications such as
+.Xr netstat 1 ,
+.Xr slstat 8 ,
+and
+.Tn SNMP
+management agents.
+This information is structured as a table, where
+each row in the table represents a logical network interface (either a
+hardware device or a software pseudo-device like
+.Xr lo 4 ) .
+There are two columns in the table, each containing a single
+structure: one column contains generic information relevant to all
+interfaces, and the other contains information specific to the
+particular class of interface.
+(Generally the latter will implement
+the
+.Tn SNMP
+.Tn MIB
+defined for that particular interface class, if one exists and can be
+implemented in the kernel.)
+.Pp
+The
+.Nm
+facility is accessed via the
+.Dq Li net.link.generic
+branch of the
+.Xr sysctl 3
+MIB.
+The manifest constants for each level in the
+.Xr sysctl 3
+.Ar name
+are defined in
+.In net/if_mib.h .
+The index of the last row in the table is given by
+.Dq Li net.link.generic.system.ifcount
+(or, using the manifest constants,
+.Dv CTL_NET ,
+.Dv PF_LINK ,
+.Dv NETLINK_GENERIC ,
+.Dv IFMIB_SYSTEM ,
+.Dv IFMIB_IFCOUNT ) .
+A management application searching for a particular interface should
+start with row 1 and continue through the table row-by-row until the
+desired interface is found, or the interface count is reached.
+Note that the table may be sparse, i.e., a given row may not exist,
+indicated by an
+.Va errno
+of
+.Er ENOENT .
+Such an error should be ignored, and the next row should be checked.
+.Pp
+The generic interface information, common to all interfaces,
+can be accessed via the following procedure:
+.Bd -literal -offset indent
+int
+get_ifmib_general(int row, struct ifmibdata *ifmd)
+{
+ int name[6];
+ size_t len;
+
+ name[0] = CTL_NET;
+ name[1] = PF_LINK;
+ name[2] = NETLINK_GENERIC;
+ name[3] = IFMIB_IFDATA;
+ name[4] = row;
+ name[5] = IFDATA_GENERAL;
+
+ len = sizeof(*ifmd);
+
+ return sysctl(name, 6, ifmd, &len, (void *)0, 0);
+}
+.Ed
+.Pp
+The fields in
+.Li struct ifmibdata
+are as follows:
+.Bl -tag -width "ifmd_snd_drops"
+.It Li ifmd_name
+.Pq Li "char []"
+the name of the interface, including the unit number
+.It Li ifmd_pcount
+.Pq Li int
+the number of promiscuous listeners
+.It Li ifmd_flags
+.Pq Li int
+the interface's flags (defined in
+.In net/if.h )
+.It Li ifmd_snd_len
+.Pq Li int
+the current instantaneous length of the send queue
+.It Li ifmd_snd_drops
+.Pq Li int
+the number of packets dropped at this interface because the send queue
+was full
+.It Li ifmd_data
+.Pq Li struct if_data
+more information from a structure defined in
+.In net/if.h
+(see
+.Xr if_data 9 )
+.El
+.Pp
+Class-specific information can be retrieved by examining the
+.Dv IFDATA_LINKSPECIFIC
+column instead.
+Note that the form and length of the structure will
+depend on the class of interface.
+For
+.Dv IFT_ETHER ,
+.Dv IFT_ISO88023 ,
+and
+.Dv IFT_STARLAN
+interfaces, the structure is called
+.Dq Li struct ifmib_iso_8802_3
+(defined in
+.In net/if_mib.h ) ,
+and implements a superset of the
+.Tn "RFC 1650"
+MIB for Ethernet-like networks.
+.\" This will eventually be defined in an ethermib(4) page.
+For
+.Dv IFT_SLIP ,
+the structure is a
+.Dq Li struct sl_softc
+.Pq In net/if_slvar.h .
+.Sh SEE ALSO
+.Xr sysctl 3 ,
+.Xr intro 4 ,
+.Xr ifnet 9
+.\" .Xr ethermib 4 ,
+.Rs
+.%T "Definitions of Managed Objects for the Ethernet-like Interface Types Using SMIv2"
+.%A F. Kastenholz
+.%D August 1994
+.%O RFC 1650
+.Re
+.Sh HISTORY
+The
+.Nm
+interface first appeared in
+.Fx 2.2 .
+.Sh BUGS
+Many Ethernet-like interfaces do not yet support the Ethernet MIB;
+the interfaces known to support it include
+.Xr ed 4
+and
+.Xr de 4 .
+Regardless, all interfaces automatically support the generic MIB.
diff --git a/share/man/man4/igb.4 b/share/man/man4/igb.4
new file mode 100644
index 0000000..86bcc73
--- /dev/null
+++ b/share/man/man4/igb.4
@@ -0,0 +1,196 @@
+.\" Copyright (c) 2001-2003, Intel 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. Neither the name of the Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+.\"
+.\" * Other names and brands may be claimed as the property of others.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 6, 2008
+.Dt IGB 4
+.Os
+.Sh NAME
+.Nm igb
+.Nd "Intel(R) PRO/1000 PCI Express Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device igb"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_igb_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Express Gigabit Ethernet adapters
+based on the Intel 82575 and 82576 Ethernet controller chips.
+The driver supports Transmit/Receive checksum offload and Jumbo
+Frames.
+Furthermore it supports TCP segmentation offload (TSO) on all
+adapters.
+.Pp
+For questions related to hardware requirements, refer to the
+documentation supplied with your Intel PRO/1000 adapter.
+All hardware requirements listed apply to use with
+.Fx .
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+The maximum MTU size for Jumbo Frames is 9216.
+.Pp
+This driver supports hardware assisted VLANs.
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enables auto-negotiation for speed and duplex.
+.It Cm 10baseT/UTP
+Sets 10Mbps operation.
+Use the
+.Cm mediaopt
+option to select
+.Cm full-duplex
+mode.
+.It Cm 100baseTX
+Sets 100Mbps operation.
+Use the
+.Cm mediaopt
+option to select
+.Cm full-duplex
+mode.
+.It Cm 1000baseSX
+Sets 1000Mbps operation.
+Only
+.Cm full-duplex
+mode is supported at this speed.
+.It Cm 1000baseTX
+Sets 1000Mbps operation.
+Only
+.Cm full-duplex
+mode is supported at this speed.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Forces full-duplex operation
+.It Cm half-duplex
+Forces half-duplex operation.
+.El
+.Pp
+Only use
+.Cm mediaopt
+to set the driver to
+.Cm full-duplex .
+If
+.Cm mediaopt
+is not specified, the driver defaults to
+.Cm half-duplex .
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Gigabit Ethernet adapters based on the Intel 82575 and
+82576 controller chips:
+.Pp
+.Bl -bullet -compact
+.It
+Intel Gigabit ET Dual Port Server Adapter (82576)
+.It
+Intel Gigabit VT Quad Port Server Adapter (82575)
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.It Va hw.igb.rxd
+Number of receive descriptors allocated by the driver.
+The default value is 256.
+The minimum is 80, and the maximum is 4096.
+.It Va hw.igb.txd
+Number of transmit descriptors allocated by the driver.
+The default value is 256.
+The minimum is 80, and the maximum is 4096.
+.It Va hw.igb.enable_aim
+If set to 1, enable Adaptive Interrupt Moderation.
+The default is to enable Adaptive Interrupt Moderation.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "igb%d: Unable to allocate bus resource: memory"
+A fatal initialization error has occurred.
+.It "igb%d: Unable to allocate bus resource: interrupt"
+A fatal initialization error has occurred.
+.It "igb%d: watchdog timeout -- resetting"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SUPPORT
+For general information and support,
+go to the Intel support website at:
+.Pa http://support.intel.com .
+.Pp
+If an issue is identified with the released source code on the supported kernel
+with a supported adapter, email the specific information related to the
+issue to
+.Aq freebsdnic@mailbox.intel.com .
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr em 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 7.1 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Intel Corporation Aq freebsdnic@mailbox.intel.com .
diff --git a/share/man/man4/iic.4 b/share/man/man4/iic.4
new file mode 100644
index 0000000..0112ff8
--- /dev/null
+++ b/share/man/man4/iic.4
@@ -0,0 +1,182 @@
+.\" Copyright (c) 2006, M. Warner Losh
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" 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$
+.\"
+.Dd September 6, 2006
+.Dt IIC 4
+.Os
+.Sh NAME
+.Nm iic
+.Nd I2C generic I/O device driver
+.Sh SYNOPSIS
+.Cd "device iic"
+.Pp
+.In dev/iicbus/iic.h
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides generic I/O to any
+.Xr iicbus 4
+instance.
+In order to control I2C devices, use
+.Pa /dev/iic?
+with the
+following ioctls:
+.Bl -tag -width ".Dv I2CRSTCARD"
+.It Dv I2CSTART
+.Pq Vt "struct iiccmd"
+Sends the start condition to the slave specified by the
+.Va slave
+element to the bus.
+All other elements are ignored.
+.It Dv I2CSTOP
+No argument is passed.
+Sends the stop condition to the bus.
+This terminates the current transaction.
+.It Dv I2CRSTCARD
+.Pq Vt "struct iiccmd"
+Resets the bus.
+The argument is completely ignored.
+.It Dv I2CWRITE
+.Pq Vt "struct iiccmd"
+Writes data to the
+.Xr iicbus 4 .
+The bus should already be started.
+The
+.Va slave
+element is ignored.
+The
+.Va count
+element is the number of bytes to write.
+The
+.Va last
+element is a boolean flag.
+It is non-zero when additional write commands will follow.
+The
+.Va buf
+element is a pointer to the data to write to the bus.
+.It Dv I2CREAD
+.Pq Vt "struct iiccmd"
+Reads data from the
+.Xr iicbus 4 .
+The bus should already be started.
+The
+.Va slave
+element is ignored.
+The
+.Va count
+element is the number of bytes to write.
+The
+.Va last
+element is a boolean flag.
+It is non-zero when additional write commands will follow.
+The
+.Va buf
+element is a pointer to where to store the data read from the bus.
+Short reads on the bus produce undefined results.
+.It Dv I2CRDWR
+.Pq Vt "struct iic_rdwr_data"
+Generic read/write interface.
+Allows for an arbitrary number of commands to be sent to
+an arbitrary number of devices on the bus.
+A read transfer is specified if
+.Dv IIC_M_RD
+is set in
+.Va flags .
+Otherwise the transfer is a write transfer.
+The
+.Va slave
+element specifies the 7-bit address for the transfer.
+The
+.Va len
+element is the length of the data.
+The
+.Va buf
+element is a buffer for that data.
+This ioctl is intended to be
+.Tn Linux
+compatible.
+.El
+.Pp
+The following data structures are defined in
+.In dev/iicbus/iic.h
+and referenced above:
+.Bd -literal -offset indent
+struct iiccmd {
+ u_char slave;
+ int count;
+ int last;
+ char *buf;
+};
+
+/* Designed to be compatible with linux's struct i2c_msg */
+struct iic_msg
+{
+ uint16_t slave;
+ uint16_t flags;
+#define IIC_M_RD 0x0001 /* read vs write */
+ uint16_t len; /* msg legnth */
+ uint8_t * buf;
+};
+
+struct iic_rdwr_data {
+ struct iic_msg *msgs;
+ uint32_t nmsgs;
+};
+.Ed
+.Pp
+It is also possible to use read/write routines, then I2C start/stop handshake is
+managed by the
+.Xr iicbus 4
+system.
+However, the address used for the read/write routines is the one
+passed to last
+.Dv I2CSTART
+.Xr ioctl 2
+to this device.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr read 2 ,
+.Xr write 2 ,
+.Xr iicbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An -nosplit
+This
+manual page was written by
+.An Nicolas Souchu
+and
+.An M. Warner Losh .
+.Sh BUGS
+Only the
+.Dv I2CRDWR
+.Xr ioctl 2
+is thread safe.
+All other interfaces suffer from some kind of race.
diff --git a/share/man/man4/iicbb.4 b/share/man/man4/iicbb.4
new file mode 100644
index 0000000..e048c5d
--- /dev/null
+++ b/share/man/man4/iicbb.4
@@ -0,0 +1,58 @@
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" 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$
+.\"
+.Dd October 25, 1998
+.Dt IICBB 4
+.Os
+.Sh NAME
+.Nm iicbb
+.Nd I2C generic bit-banging driver
+.Sh SYNOPSIS
+.Cd "device iicbb"
+.Pp
+.Cd "device lpbb"
+.Pp
+For one or more iicbus busses:
+.Cd "device iicbus"
+.Sh DESCRIPTION
+The
+.Em iicbb
+driver provides support to any bit-banging interface for the
+.Xr iicbus 4
+system.
+.Sh SEE ALSO
+.Xr iicbus 4 ,
+.Xr lpbb 4 ,
+.Xr ppbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/iicbus.4 b/share/man/man4/iicbus.4
new file mode 100644
index 0000000..f9e5c58
--- /dev/null
+++ b/share/man/man4/iicbus.4
@@ -0,0 +1,118 @@
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" 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$
+.\"
+.Dd August 6, 1998
+.Dt IICBUS 4
+.Os
+.Sh NAME
+.Nm iicbus
+.Nd I2C bus system
+.Sh SYNOPSIS
+.Cd "device iicbus"
+.Cd "device iicbb"
+.Pp
+.Cd "device iic"
+.Cd "device ic"
+.Cd "device iicsmb"
+.Sh DESCRIPTION
+The
+.Em iicbus
+system provides a uniform, modular and architecture-independent
+system for the implementation of drivers to control various I2C devices
+and to utilize different I2C controllers.
+.Sh I2C
+I2C is an acronym for Inter Integrated Circuit bus.
+The I2C bus was developed
+in the early 1980's by Philips semiconductors.
+Its purpose was to provide an
+easy way to connect a CPU to peripheral chips in a TV-set.
+.Pp
+The BUS physically consists of 2 active wires and a ground connection.
+The active wires, SDA and SCL, are both bidirectional.
+Where SDA is the
+Serial DAta line and SCL is the Serial CLock line.
+.Pp
+Every component hooked up to the bus has its own unique address whether it
+is a CPU, LCD driver, memory, or complex function chip.
+Each of these chips
+can act as a receiver and/or transmitter depending on its functionality.
+Obviously an LCD driver is only a receiver, while a memory or I/O chip can
+both be transmitter and receiver.
+Furthermore there may be one or
+more BUS MASTERs.
+.Pp
+The BUS MASTER is the chip issuing the commands on the BUS.
+In the I2C protocol
+specification it is stated that the IC that initiates a data transfer on the
+bus is considered the BUS MASTER.
+At that time all the others are regarded to
+as the BUS SLAVEs.
+As mentioned before, the IC bus is a Multi-MASTER BUS.
+This means that more than one IC capable of initiating data transfer can be
+connected to it.
+.Sh DEVICES
+Some I2C device drivers are available:
+.Pp
+.Bl -column "Device drivers" -compact
+.It Em Devices Ta Em Description
+.It Sy iic Ta "general i/o operation"
+.It Sy ic Ta "network IP interface"
+.It Sy iicsmb Ta "I2C to SMB software bridge"
+.El
+.Sh INTERFACES
+The I2C protocol may be implemented by hardware or software.
+Software
+interfaces rely on very simple hardware, usually two lines
+twiddled by 2 registers.
+Hardware interfaces are more intelligent and receive
+8-bit characters they write to the bus according to the I2C protocol.
+.Pp
+I2C interfaces may act on the bus as slave devices, allowing spontaneous
+bidirectional communications, thanks to the multi-master capabilities of the
+I2C protocol.
+.Pp
+Some I2C interfaces are available:
+.Pp
+.Bl -column "Interface drivers" -compact
+.It Em Interface Ta Em Description
+.It Sy pcf Ta "Philips PCF8584 master/slave interface"
+.It Sy iicbb Ta "generic bit-banging master-only driver"
+.It Sy lpbb Ta "parallel port specific bit-banging interface"
+.It Sy bktr Ta "Brooktree848 video chipset, hardware and software master-only interface"
+.El
+.Sh SEE ALSO
+.Xr iicbb 4 ,
+.Xr lpbb 4 ,
+.Xr pcf 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/iicsmb.4 b/share/man/man4/iicsmb.4
new file mode 100644
index 0000000..4fdf6d4
--- /dev/null
+++ b/share/man/man4/iicsmb.4
@@ -0,0 +1,56 @@
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" 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$
+.\"
+.Dd August 10, 1998
+.Dt IICSMB 4
+.Os
+.Sh NAME
+.Nm iicsmb
+.Nd I2C to SMB bridge
+.Sh SYNOPSIS
+.Cd "device iicsmb"
+.Pp
+For one or more smbus busses:
+.Cd "device smbus"
+.Sh DESCRIPTION
+The
+.Em iicsmb
+driver supports SMB commands over
+.Xr iicbus 4
+for the
+.Xr smbus 4
+system.
+.Sh SEE ALSO
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/iir.4 b/share/man/man4/iir.4
new file mode 100644
index 0000000..a7608b2
--- /dev/null
+++ b/share/man/man4/iir.4
@@ -0,0 +1,77 @@
+.\" $FreeBSD$
+.\" Written by Tom Rhodes
+.\" This file is in the public domain.
+.\"
+.Dd August 8, 2004
+.Dt IIR 4
+.Os
+.Sh NAME
+.Nm iir
+.Nd Intel Integrated RAID controller and ICP Vortex driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device iir"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+iir_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver claims to interface with the Intel integrated
+RAID controller cards, and all versions of the
+ICP Vortex controllers (including FC).
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Intel RAID Controller SRCMR
+.It
+Intel Server RAID Controller U3-l (SRCU31a)
+.It
+Intel Server RAID Controller U3-1L (SRCU31La)
+.It
+Intel Server RAID Controller U3-2 (SRCU32)
+.It
+All past and future releases of Intel and ICP RAID Controllers.
+.El
+.Pp
+.Bl -bullet -compact
+.It
+Intel RAID Controller SRCU21 (discontinued)
+.It
+Intel RAID Controller SRCU31 (older revision, not compatible)
+.It
+Intel RAID Controller SRCU31L (older revision, not compatible)
+.El
+.Pp
+The SRCU31 and SRCU31L can be updated via a firmware update available
+from Intel.
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr pass 4 ,
+.Xr xpt 4 ,
+.Xr camcontrol 8
+.Sh AUTHORS
+The
+.Nm
+driver is supported and maintained by
+.An -nosplit
+.An Achim Leubner Aq Achim_Leubner@adaptec.com .
+.Pp
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+and is based on information supplied by the driver authors and the website of
+.An Mike Smith Aq msmith@FreeBSD.org .
diff --git a/share/man/man4/inet.4 b/share/man/man4/inet.4
new file mode 100644
index 0000000..b1878d5
--- /dev/null
+++ b/share/man/man4/inet.4
@@ -0,0 +1,297 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)inet.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd April 9, 2005
+.Dt INET 4
+.Os
+.Sh NAME
+.Nm inet
+.Nd Internet protocol family
+.Sh SYNOPSIS
+.In sys/types.h
+.In netinet/in.h
+.Sh DESCRIPTION
+The Internet protocol family is a collection of protocols
+layered atop the
+.Em Internet Protocol
+.Pq Tn IP
+transport layer, and utilizing the Internet address format.
+The Internet family provides protocol support for the
+.Dv SOCK_STREAM , SOCK_DGRAM ,
+and
+.Dv SOCK_RAW
+socket types; the
+.Dv SOCK_RAW
+interface provides access to the
+.Tn IP
+protocol.
+.Sh ADDRESSING
+Internet addresses are four byte quantities, stored in
+network standard format (on little endian machines, such as the
+.Tn alpha ,
+.Tn amd64 ,
+.Tn i386
+and
+.Tn ia64
+these are word and byte reversed).
+The include file
+.In netinet/in.h
+defines this address
+as a discriminated union.
+.Pp
+Sockets bound to the Internet protocol family utilize
+the following addressing structure,
+.Bd -literal -offset indent
+struct sockaddr_in {
+ uint8_t sin_len;
+ sa_family_t sin_family;
+ in_port_t sin_port;
+ struct in_addr sin_addr;
+ char sin_zero[8];
+};
+.Ed
+.Pp
+Sockets may be created with the local address
+.Dv INADDR_ANY
+to affect
+.Dq wildcard
+matching on incoming messages.
+The address in a
+.Xr connect 2
+or
+.Xr sendto 2
+call may be given as
+.Dv INADDR_ANY
+to mean
+.Dq this host .
+The distinguished address
+.Dv INADDR_BROADCAST
+is allowed as a shorthand for the broadcast address on the primary
+network if the first network configured supports broadcast.
+.Sh PROTOCOLS
+The Internet protocol family is comprised of
+the
+.Tn IP
+network protocol, Internet Control
+Message Protocol
+.Pq Tn ICMP ,
+Internet Group Management Protocol
+.Pq Tn IGMP ,
+Transmission Control
+Protocol
+.Pq Tn TCP ,
+and User Datagram Protocol
+.Pq Tn UDP .
+.Tn TCP
+is used to support the
+.Dv SOCK_STREAM
+abstraction while
+.Tn UDP
+is used to support the
+.Dv SOCK_DGRAM
+abstraction.
+A raw interface to
+.Tn IP
+is available
+by creating an Internet socket of type
+.Dv SOCK_RAW .
+The
+.Tn ICMP
+message protocol is accessible from a raw socket.
+.Pp
+The 32-bit Internet address contains both network and host parts.
+However, direct examination of addresses is discouraged.
+For those
+programs which absolutely need to break addresses into their component
+parts, the following
+.Xr ioctl 2
+commands are provided for a datagram socket in the Internet domain;
+they have the same form as the
+.Dv SIOCIFADDR
+command (see
+.Xr intro 4 ) .
+.Pp
+.Bl -tag -width SIOCSIFNETMASK
+.It Dv SIOCSIFNETMASK
+Set interface network mask.
+The network mask defines the network part of the address;
+if it contains more of the address than the address type would indicate,
+then subnets are in use.
+.It Dv SIOCGIFNETMASK
+Get interface network mask.
+.El
+.Ss MIB Variables
+A number of variables are implemented in the net.inet branch of the
+.Xr sysctl 3
+MIB.
+In addition to the variables supported by the transport protocols
+(for which the respective manual pages may be consulted),
+the following general variables are defined:
+.Bl -tag -width IPCTL_FASTFORWARDING
+.It Dv IPCTL_FORWARDING
+.Pq ip.forwarding
+Boolean: enable/disable forwarding of IP packets.
+Defaults to off.
+.It Dv IPCTL_FASTFORWARDING
+.Pq ip.fastforwarding
+Boolean: enable/disable the use of
+.Tn fast IP forwarding
+code.
+Defaults to off.
+When
+.Tn fast IP forwarding
+is enabled, IP packets are forwarded directly to the appropriate network
+interface with direct processing to completion, which greatly improves
+the throughput.
+All packets for local IP addresses, non-unicast, or with IP options are
+handled by the normal IP input processing path.
+All features of the normal (slow) IP forwarding path are supported
+including firewall (through
+.Xr pfil 9
+hooks) checking, except
+.Xr ipsec 4
+tunnel brokering.
+The
+.Tn IP fastforwarding
+path does not generate ICMP redirect or source quench messages.
+.It Dv IPCTL_SENDREDIRECTS
+.Pq ip.redirect
+Boolean: enable/disable sending of ICMP redirects in response to
+.Tn IP
+packets for which a better, and for the sender directly reachable, route
+and next hop is known.
+Defaults to on.
+.It Dv IPCTL_DEFTTL
+.Pq ip.ttl
+Integer: default time-to-live
+.Pq Dq TTL
+to use for outgoing
+.Tn IP
+packets.
+.It Dv IPCTL_ACCEPTSOURCEROUTE
+.Pq ip.accept_sourceroute
+Boolean: enable/disable accepting of source-routed IP packets (default false).
+.It Dv IPCTL_SOURCEROUTE
+.Pq ip.sourceroute
+Boolean: enable/disable forwarding of source-routed IP packets (default false).
+.It Dv IPCTL_RTEXPIRE
+.Pq ip.rtexpire
+Integer: lifetime in seconds of protocol-cloned
+.Tn IP
+routes after the last reference drops (default one hour).
+This value varies dynamically as described above.
+.It Dv IPCTL_RTMINEXPIRE
+.Pq ip.rtminexpire
+Integer: minimum value of ip.rtexpire (default ten seconds).
+This value has no effect on user modifications, but restricts the dynamic
+adaptation described above.
+.It Dv IPCTL_RTMAXCACHE
+.Pq ip.rtmaxcache
+Integer: trigger level of cached, unreferenced, protocol-cloned routes
+which initiates dynamic adaptation (default 128).
+.It Va ip.process_options
+Integer: control IP options processing.
+By setting this variable to 0, all IP options in the incoming packets
+will be ignored, and the packets will be passed unmodified.
+By setting to 1, IP options in the incoming packets will be processed
+accordingly.
+By setting to 2, an
+.Tn ICMP
+.Dq "prohibited by filter"
+message will be sent back in response to incoming packets with IP options.
+Default is 1.
+This
+.Xr sysctl 8
+variable affects packets destined for a local host as well as packets
+forwarded to some other host.
+.It Va ip.random_id
+Boolean: control IP IDs generation behaviour.
+Setting this
+.Xr sysctl 8
+to non-zero causes the ID field in IP packets to be randomized instead of
+incremented by 1 with each packet generated.
+This closes a minor information leak which allows remote observers to
+determine the rate of packet generation on the machine by watching the
+counter.
+In the same time, on high-speed links, it can decrease the ID reuse
+cycle greatly.
+Default is 0 (sequential IP IDs).
+IPv6 flow IDs and fragment IDs are always random.
+.It Va ip.maxfragpackets
+Integer: maximum number of fragmented packets the host will accept and hold
+in the reassembling queue simultaneously.
+0 means that the host will not accept any fragmented packets.
+\-1 means that the host will accept as many fragmented packets as it receives.
+.It Va ip.maxfragsperpacket
+Integer: maximum number of fragments the host will accept and hold
+in the reassembling queue for a packet.
+0 means that the host will not accept any fragmented packets.
+.El
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr socket 2 ,
+.Xr sysctl 3 ,
+.Xr icmp 4 ,
+.Xr intro 4 ,
+.Xr ip 4 ,
+.Xr ipfirewall 4 ,
+.Xr route 4 ,
+.Xr tcp 4 ,
+.Xr udp 4 ,
+.Xr pfil 9
+.Rs
+.%T "An Introductory 4.3 BSD Interprocess Communication Tutorial"
+.%B PS1
+.%N 7
+.Re
+.Rs
+.%T "An Advanced 4.3 BSD Interprocess Communication Tutorial"
+.%B PS1
+.%N 8
+.Re
+.Sh CAVEATS
+The Internet protocol support is subject to change as
+the Internet protocols develop.
+Users should not depend
+on details of the current implementation, but rather
+the services exported.
+.Sh HISTORY
+The
+.Nm
+protocol interface appeared in
+.Bx 4.2 .
+The
+.Dq protocol cloning
+code appeared in
+.Fx 2.1 .
diff --git a/share/man/man4/inet6.4 b/share/man/man4/inet6.4
new file mode 100644
index 0000000..27b0876
--- /dev/null
+++ b/share/man/man4/inet6.4
@@ -0,0 +1,531 @@
+.\" $KAME: inet6.4,v 1.21 2001/04/05 01:00:18 itojun Exp $
+.\"
+.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE 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.
+.\" 3. Neither the name of the project 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 PROJECT 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 PROJECT 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$
+.\"
+.Dd January 29, 1999
+.Dt INET6 4
+.Os
+.Sh NAME
+.Nm inet6
+.Nd Internet protocol version 6 family
+.Sh SYNOPSIS
+.In sys/types.h
+.In netinet/in.h
+.Sh DESCRIPTION
+The
+.Nm
+family is an updated version of
+.Xr inet 4
+family.
+While
+.Xr inet 4
+implements Internet Protocol version 4,
+.Nm
+implements Internet Protocol version 6.
+.Pp
+.Nm
+is a collection of protocols layered atop the
+.Em Internet Protocol version 6
+.Pq Tn IPv6
+transport layer, and utilizing the IPv6 address format.
+The
+.Nm
+family provides protocol support for the
+.Dv SOCK_STREAM , SOCK_DGRAM ,
+and
+.Dv SOCK_RAW
+socket types; the
+.Dv SOCK_RAW
+interface provides access to the
+.Tn IPv6
+protocol.
+.Sh ADDRESSING
+IPv6 addresses are 16 byte quantities, stored in network standard byteorder.
+The include file
+.In netinet/in.h
+defines this address
+as a discriminated union.
+.Pp
+Sockets bound to the
+.Nm
+family utilize the following addressing structure:
+.Bd -literal -offset indent
+struct sockaddr_in6 {
+ uint8_t sin6_len;
+ sa_family_t sin6_family;
+ in_port_t sin6_port;
+ uint32_t sin6_flowinfo;
+ struct in6_addr sin6_addr;
+ uint32_t sin6_scope_id;
+};
+.Ed
+.Pp
+Sockets may be created with the local address
+.Dq Dv ::
+(which is equal to IPv6 address
+.Dv 0:0:0:0:0:0:0:0 )
+to affect
+.Dq wildcard
+matching on incoming messages.
+.Pp
+The IPv6 specification defines scoped addresses,
+like link-local or site-local addresses.
+A scoped address is ambiguous to the kernel,
+if it is specified without a scope identifier.
+To manipulate scoped addresses properly from the userland,
+programs must use the advanced API defined in RFC2292.
+A compact description of the advanced API is available in
+.Xr ip6 4 .
+If a scoped address is specified without an explicit scope,
+the kernel may raise an error.
+Note that scoped addresses are not for daily use at this moment,
+both from a specification and an implementation point of view.
+.Pp
+The KAME implementation supports an extended numeric IPv6 address notation
+for link-local addresses,
+like
+.Dq Li fe80::1%de0
+to specify
+.Do
+.Li fe80::1
+on
+.Li de0
+interface
+.Dc .
+This notation is supported by
+.Xr getaddrinfo 3
+and
+.Xr getnameinfo 3 .
+Some of normal userland programs, such as
+.Xr telnet 1
+or
+.Xr ftp 1 ,
+are able to use this notation.
+With special programs
+like
+.Xr ping6 8 ,
+you can specify the outgoing interface by an extra command line option
+to disambiguate scoped addresses.
+.Pp
+Scoped addresses are handled specially in the kernel.
+In kernel structures like routing tables or interface structures,
+a scoped address will have its interface index embedded into the address.
+Therefore,
+the address in some kernel structures is not the same as that on the wire.
+The embedded index will become visible through a
+.Dv PF_ROUTE
+socket, kernel memory accesses via
+.Xr kvm 3
+and on some other occasions.
+HOWEVER, users should never use the embedded form.
+For details please consult
+.Pa IMPLEMENTATION
+supplied with KAME kit.
+.Sh PROTOCOLS
+The
+.Nm
+family is comprised of the
+.Tn IPv6
+network protocol, Internet Control
+Message Protocol version 6
+.Pq Tn ICMPv6 ,
+Transmission Control Protocol
+.Pq Tn TCP ,
+and User Datagram Protocol
+.Pq Tn UDP .
+.Tn TCP
+is used to support the
+.Dv SOCK_STREAM
+abstraction while
+.Tn UDP
+is used to support the
+.Dv SOCK_DGRAM
+abstraction.
+Note that
+.Tn TCP
+and
+.Tn UDP
+are common to
+.Xr inet 4
+and
+.Nm .
+A raw interface to
+.Tn IPv6
+is available
+by creating an Internet socket of type
+.Dv SOCK_RAW .
+The
+.Tn ICMPv6
+message protocol is accessible from a raw socket.
+.\" .Pp
+.\" The 128-bit IPv6 address contains both network and host parts.
+.\" However, direct examination of addresses is discouraged.
+.\" For those programs which absolutely need to break addresses
+.\" into their component parts, the following
+.\" .Xr ioctl 2
+.\" commands are provided for a datagram socket in the
+.\" .Nm
+.\" domain; they have the same form as the
+.\" .Dv SIOCIFADDR
+.\" command (see
+.\" .Xr intro 4 ) .
+.\" .Pp
+.\" .Bl -tag -width SIOCSIFNETMASK
+.\" .It Dv SIOCSIFNETMASK
+.\" Set interface network mask.
+.\" The network mask defines the network part of the address;
+.\" if it contains more of the address than the address type would indicate,
+.\" then subnets are in use.
+.\" .It Dv SIOCGIFNETMASK
+.\" Get interface network mask.
+.\" .El
+.\" .Sh ROUTING
+.\" The current implementation of Internet protocols includes some routing-table
+.\" adaptations to provide enhanced caching of certain end-to-end
+.\" information necessary for Transaction TCP and Path MTU Discovery. The
+.\" following changes are the most significant:
+.\" .Bl -enum
+.\" .It
+.\" All IP routes, except those with the
+.\" .Dv RTF_CLONING
+.\" flag and those to multicast destinations, have the
+.\" .Dv RTF_PRCLONING
+.\" flag forcibly enabled (they are thus said to be
+.\" .Dq "protocol cloning" ).
+.\" .It
+.\" When the last reference to an IP route is dropped, the route is
+.\" examined to determine if it was created by cloning such a route. If
+.\" this is the case, the
+.\" .Dv RTF_PROTO3
+.\" flag is turned on, and the expiration timer is initialized to go off
+.\" in net.inet.ip.rtexpire seconds. If such a route is re-referenced,
+.\" the flag and expiration timer are reset.
+.\" .It
+.\" A kernel timeout runs once every ten minutes, or sooner if there are
+.\" soon-to-expire routes in the kernel routing table, and deletes the
+.\" expired routes.
+.\" .El
+.\" .Pp
+.\" A dynamic process is in place to modify the value of
+.\" net.inet.ip.rtexpire if the number of cached routes grows too large.
+.\" If after an expiration run there are still more than
+.\" net.inet.ip.rtmaxcache unreferenced routes remaining, the rtexpire
+.\" value is multiplied by 3/4, and any routes which have longer
+.\" expiration times have those times adjusted. This process is damped
+.\" somewhat by specification of a minimum rtexpire value
+.\" (net.inet.ip.rtminexpire), and by restricting the reduction to once in
+.\" a ten-minute period.
+.\" .Pp
+.\" If some external process deletes the original route from which a
+.\" protocol-cloned route was generated, the ``child route'' is deleted.
+.\" (This is actually a generic mechanism in the routing code support for
+.\" protocol-requested cloning.)
+.\" .Pp
+.\" No attempt is made to manage routes which were not created by protocol
+.\" cloning; these are assumed to be static, under the management of an
+.\" external routing process, or under the management of a link layer
+.\" (e.g.,
+.\" .Tn ARP
+.\" for Ethernets).
+.\" .Pp
+.\" Only certain types of network activity will result in the cloning of a
+.\" route using this mechanism. Specifically, those protocols (such as
+.\" .Tn TCP
+.\" and
+.\" .Tn UDP )
+.\" which themselves cache a long-lasting reference to route for a destination
+.\" will trigger the mechanism; whereas raw
+.\" .Tn IP
+.\" packets, whether locally-generated or forwarded, will not.
+.Ss MIB Variables
+A number of variables are implemented in the net.inet6 branch of the
+.Xr sysctl 3
+MIB.
+In addition to the variables supported by the transport protocols
+(for which the respective manual pages may be consulted),
+the following general variables are defined:
+.Bl -tag -width IPV6CTL_MAXFRAGPACKETS
+.It Dv IPV6CTL_FORWARDING
+.Pq ip6.forwarding
+Boolean: enable/disable forwarding of
+.Tn IPv6
+packets.
+Also, identify if the node is acting as a router.
+Defaults to off.
+.It Dv IPV6CTL_SENDREDIRECTS
+.Pq ip6.redirect
+Boolean: enable/disable sending of
+.Tn ICMPv6
+redirects in response to unforwardable
+.Tn IPv6
+packets.
+This option is ignored unless the node is routing
+.Tn IPv6
+packets,
+and should normally be enabled on all systems.
+Defaults to on.
+.It Dv IPV6CTL_DEFHLIM
+.Pq ip6.hlim
+Integer: default hop limit value to use for outgoing
+.Tn IPv6
+packets.
+This value applies to all the transport protocols on top of
+.Tn IPv6 .
+There are APIs to override the value.
+.It Dv IPV6CTL_MAXFRAGPACKETS
+.Pq ip6.maxfragpackets
+Integer: default maximum number of fragmented packets the node will accept.
+0 means that the node will not accept any fragmented packets.
+-1 means that the node will accept as many fragmented packets as it receives.
+The flag is provided basically for avoiding possible DoS attacks.
+.It Dv IPV6CTL_ACCEPT_RTADV
+.Pq ip6.accept_rtadv
+Boolean: enable/disable receiving of
+.Tn ICMPv6
+router advertisement packets,
+and autoconfiguration of address prefixes and default routers.
+The node must be a host
+(not a router)
+for the option to be meaningful.
+Defaults to off.
+.It Dv IPV6CTL_KEEPFAITH
+.Pq ip6.keepfaith
+Boolean: enable/disable
+.Dq FAITH
+TCP relay IPv6-to-IPv4 translator code in the kernel.
+Refer
+.Xr faith 4
+and
+.Xr faithd 8
+for detail.
+Defaults to off.
+.It Dv IPV6CTL_LOG_INTERVAL
+.Pq ip6.log_interval
+Integer: default interval between
+.Tn IPv6
+packet forwarding engine log output
+(in seconds).
+.It Dv IPV6CTL_HDRNESTLIMIT
+.Pq ip6.hdrnestlimit
+Integer: default number of the maximum
+.Tn IPv6
+extension headers
+permitted on incoming
+.Tn IPv6
+packets.
+If set to 0, the node will accept as many extension headers as possible.
+.It Dv IPV6CTL_DAD_COUNT
+.Pq ip6.dad_count
+Integer: default number of
+.Tn IPv6
+DAD
+.Pq duplicated address detection
+probe packets.
+The packets will be generated when
+.Tn IPv6
+interface addresses are configured.
+.It Dv IPV6CTL_AUTO_FLOWLABEL
+.Pq ip6.auto_flowlabel
+Boolean: enable/disable automatic filling of
+.Tn IPv6
+flowlabel field, for outstanding connected transport protocol packets.
+The field might be used by intermediate routers to identify packet flows.
+Defaults to on.
+.It Dv IPV6CTL_DEFMCASTHLIM
+.Pq ip6.defmcasthlim
+Integer: default hop limit value for an
+.Tn IPv6
+multicast packet sourced by the node.
+This value applies to all the transport protocols on top of
+.Tn IPv6 .
+There are APIs to override the value as documented in
+.Xr ip6 4 .
+.It Dv IPV6CTL_GIF_HLIM
+.Pq ip6.gifhlim
+Integer: default maximum hop limit value for an
+.Tn IPv6
+packet generated by
+.Xr gif 4
+tunnel interface.
+.It Dv IPV6CTL_KAME_VERSION
+.Pq ip6.kame_version
+String: identifies the version of KAME
+.Tn IPv6
+stack implemented in the kernel.
+.It Dv IPV6CTL_USE_DEPRECATED
+.Pq ip6.use_deprecated
+Boolean: enable/disable use of deprecated address,
+specified in RFC2462 5.5.4.
+Defaults to on.
+.It Dv IPV6CTL_RR_PRUNE
+.Pq ip6.rr_prune
+Integer: default interval between
+.Tn IPv6
+router renumbering prefix babysitting, in seconds.
+.It Dv IPV6CTL_V6ONLY
+.Pq ip6.v6only
+Boolean: enable/disable the prohibited use of
+.Tn IPv4
+mapped address on
+.Dv AF_INET6
+sockets.
+Defaults to on.
+.It Dv IPV6CTL_RTEXPIRE
+.Pq ip6.rtexpire
+Integer: lifetime in seconds of protocol-cloned
+.Tn IP
+routes after the last reference drops (default one hour).
+.\"This value varies dynamically as described above.
+.It Dv IPV6CTL_RTMINEXPIRE
+.Pq ip6.rtminexpire
+Integer: minimum value of ip.rtexpire (default ten seconds).
+.\"This value has no effect on user modifications, but restricts the dynamic
+.\"adaptation described above.
+.It Dv IPV6CTL_RTMAXCACHE
+.Pq ip6.rtmaxcache
+Integer: trigger level of cached, unreferenced, protocol-cloned routes
+which initiates dynamic adaptation (default 128).
+.El
+.Ss Interaction between IPv4/v6 sockets
+By default,
+.Fx
+does not route IPv4 traffic to
+.Dv AF_INET6
+sockets.
+The default behavior intentionally violates RFC2553 for security reasons.
+Listen to two sockets if you want to accept both IPv4 and IPv6 traffic.
+IPv4 traffic may be routed with certain
+per-socket/per-node configuration, however, it is not recommended to do so.
+Consult
+.Xr ip6 4
+for details.
+.Pp
+The behavior of
+.Dv AF_INET6
+TCP/UDP socket is documented in RFC2553.
+Basically, it says this:
+.Bl -bullet -compact
+.It
+A specific bind on an
+.Dv AF_INET6
+socket
+.Xr ( bind 2
+with an address specified)
+should accept IPv6 traffic to that address only.
+.It
+If you perform a wildcard bind
+on an
+.Dv AF_INET6
+socket
+.Xr ( bind 2
+to IPv6 address
+.Li :: ) ,
+and there is no wildcard bind
+.Dv AF_INET
+socket on that TCP/UDP port, IPv6 traffic as well as IPv4 traffic
+should be routed to that
+.Dv AF_INET6
+socket.
+IPv4 traffic should be seen as if it came from an IPv6 address like
+.Li ::ffff:10.1.1.1 .
+This is called an IPv4 mapped address.
+.It
+If there are both a wildcard bind
+.Dv AF_INET
+socket and a wildcard bind
+.Dv AF_INET6
+socket on one TCP/UDP port, they should behave separately.
+IPv4 traffic should be routed to the
+.Dv AF_INET
+socket and IPv6 should be routed to the
+.Dv AF_INET6
+socket.
+.El
+.Pp
+However, RFC2553 does not define the ordering constraint between calls to
+.Xr bind 2 ,
+nor how IPv4 TCP/UDP port numbers and IPv6 TCP/UDP port numbers
+relate to each other
+(should they be integrated or separated).
+Implemented behavior is very different from kernel to kernel.
+Therefore, it is unwise to rely too much upon the behavior of
+.Dv AF_INET6
+wildcard bind sockets.
+It is recommended to listen to two sockets, one for
+.Dv AF_INET
+and another for
+.Dv AF_INET6 ,
+when you would like to accept both IPv4 and IPv6 traffic.
+.Pp
+It should also be noted that
+malicious parties can take advantage of the complexity presented above,
+and are able to bypass access control,
+if the target node routes IPv4 traffic to
+.Dv AF_INET6
+socket.
+Users are advised to take care handling connections
+from IPv4 mapped address to
+.Dv AF_INET6
+sockets.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr socket 2 ,
+.Xr sysctl 3 ,
+.Xr icmp6 4 ,
+.Xr intro 4 ,
+.Xr ip6 4 ,
+.Xr tcp 4 ,
+.Xr udp 4
+.Sh STANDARDS
+.Rs
+.%A Tatsuya Jinmei
+.%A Atsushi Onoe
+.%T "An Extension of Format for IPv6 Scoped Addresses"
+.%R internet draft
+.%D June 2000
+.%N draft-ietf-ipngwg-scopedaddr-format-02.txt
+.%O work in progress material
+.Re
+.Sh HISTORY
+The
+.Nm
+protocol interfaces are defined in RFC2553 and RFC2292.
+The implementation described herein appeared in the WIDE/KAME project.
+.Sh BUGS
+The IPv6 support is subject to change as the Internet protocols develop.
+Users should not depend on details of the current implementation,
+but rather the services exported.
+.Pp
+Users are suggested to implement
+.Dq version independent
+code as much as possible, as you will need to support both
+.Xr inet 4
+and
+.Nm .
diff --git a/share/man/man4/intpm.4 b/share/man/man4/intpm.4
new file mode 100644
index 0000000..5e015a8
--- /dev/null
+++ b/share/man/man4/intpm.4
@@ -0,0 +1,63 @@
+.\" Copyright (c) 1999 Takanori Watanabe
+.\" 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$
+.\"
+.Dd January 8, 1999
+.Dt INTPM 4
+.Os
+.Sh NAME
+.Nm intpm
+.Nd Intel PIIX4 Power Management controller driver
+.Sh SYNOPSIS
+.Cd device smbus
+.Cd device smb
+.Cd device intpm
+.Sh DESCRIPTION
+This driver provides access to
+.Tn Intel PIIX4 PCI Controller function 3 ,
+Power management controller.
+Currently, only smbus controller
+function is implemented.
+But it also have bus idle monitoring function.
+It
+will display mapped I/O address for bus monitoring function when attaching.
+.Sh SEE ALSO
+.Xr smb 4 ,
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.4 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Takanori Watanabe Aq takawata@shidahara1.planet.sci.kobe-u.ac.jp .
+.Sh BUGS
+This device requires IRQ 9 exclusively.
+To use this, you should enable
+ACPI function in BIOS configuration, or PnP mechanism assigns conflicted
+IRQ for PnP ISA card.
+And do not use IRQ 9 for Non-PnP ISA cards.
diff --git a/share/man/man4/intro.4 b/share/man/man4/intro.4
new file mode 100644
index 0000000..93a9ab5
--- /dev/null
+++ b/share/man/man4/intro.4
@@ -0,0 +1,178 @@
+.\"
+.\" Copyright (c) 1996 David E. O'Brien, Joerg Wunsch
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 20, 1996
+.Dt INTRO 4
+.Os
+.Sh NAME
+.Nm intro
+.Nd introduction to devices and device drivers
+.Sh DESCRIPTION
+This section contains information related to devices, device drivers
+and miscellaneous hardware.
+.Ss The device abstraction
+Device is a term used mostly for hardware-related stuff that belongs
+to the system, like disks, printers, or a graphics display with its
+keyboard.
+There are also so-called
+.Em pseudo-devices
+where a device driver emulates the behaviour of a device in software
+without any particular underlying hardware.
+A typical example for
+the latter class is
+.Pa /dev/mem ,
+a loophole where the physical memory can be accessed using the regular
+file access semantics.
+.Pp
+The device abstraction generally provides a common set of system calls
+layered on top of them, which are dispatched to the corresponding
+device driver by the upper layers of the kernel.
+The set of system
+calls available for devices is chosen from
+.Xr open 2 ,
+.Xr close 2 ,
+.Xr read 2 ,
+.Xr write 2 ,
+.Xr ioctl 2 ,
+.Xr select 2 ,
+and
+.Xr mmap 2 .
+Not all drivers implement all system calls, for example, calling
+.Xr mmap 2
+on terminal devices is likely to be not useful at all.
+.Ss Accessing Devices
+Most of the devices in a
+.Ux Ns
+-like operating system are accessed
+through so-called
+.Em device nodes ,
+sometimes also called
+.Em special files .
+They are usually located under the directory
+.Pa /dev
+in the file system hierarchy
+(see also
+.Xr hier 7 ) .
+.Pp
+Note that this could lead to an inconsistent state, where either there
+are device nodes that do not have a configured driver associated with
+them, or there may be drivers that have successfully probed for their
+devices, but cannot be accessed since the corresponding device node is
+still missing.
+In the first case, any attempt to reference the device
+through the device node will result in an error, returned by the upper
+layers of the kernel, usually
+.Er ENXIO .
+In the second case, the device node needs to be created before the
+driver and its device will be usable.
+.Pp
+Some devices come in two flavors:
+.Em block
+and
+.Em character
+devices, or to use better terms, buffered and unbuffered
+(raw)
+devices.
+The traditional names are reflected by the letters
+.Ql b
+and
+.Ql c
+as the file type identification in the output of
+.Ql ls -l .
+Buffered devices are being accessed through the buffer cache of the
+operating system, and they are solely intended to layer a file system
+on top of them.
+They are normally implemented for disks and disk-like
+devices only and, for historical reasons, for tape devices.
+.Pp
+Raw devices are available for all drivers, including those that also
+implement a buffered device.
+For the latter group of devices, the
+differentiation is conventionally done by prepending the letter
+.Ql r
+to the path name of the device node, for example
+.Pa /dev/rda0
+denotes the raw device for the first SCSI disk, while
+.Pa /dev/da0
+is the corresponding device node for the buffered device.
+.Pp
+Unbuffered devices should be used for all actions that are not related
+to file system operations, even if the device in question is a disk
+device.
+This includes making backups of entire disk partitions, or
+to
+.Em raw
+floppy disks
+(i.e., those used like tapes).
+.Pp
+Access restrictions to device nodes are usually subject to the regular
+file permissions of the device node entry, instead of being enforced
+directly by the drivers in the kernel.
+.Ss Drivers without device nodes
+Drivers for network devices do not use device nodes in order to be
+accessed.
+Their selection is based on other decisions inside the
+kernel, and instead of calling
+.Xr open 2 ,
+use of a network device is generally introduced by using the system
+call
+.Xr socket 2 .
+.Ss Configuring a driver into the kernel
+For each kernel, there is a configuration file that is used as a base
+to select the facilities and drivers for that kernel, and to tune
+several options.
+See
+.Xr config 8
+for a detailed description of the files involved.
+The individual manual pages in this section provide a sample line for the
+configuration file in their synopsis portion.
+See also the sample config file
+.Pa /sys/i386/conf/LINT
+(for the
+.Em i386
+architecture).
+.Sh SEE ALSO
+.Xr close 2 ,
+.Xr ioctl 2 ,
+.Xr mmap 2 ,
+.Xr open 2 ,
+.Xr read 2 ,
+.Xr select 2 ,
+.Xr socket 2 ,
+.Xr write 2 ,
+.Xr devfs 5 ,
+.Xr hier 7 ,
+.Xr config 8
+.Sh HISTORY
+This manual page first appeared in
+.Fx 2.1 .
+.Sh AUTHORS
+.An -nosplit
+This man page has been written by
+.An J\(:org Wunsch
+with initial input by
+.An David E. O'Brien .
diff --git a/share/man/man4/io.4 b/share/man/man4/io.4
new file mode 100644
index 0000000..15c0c4d
--- /dev/null
+++ b/share/man/man4/io.4
@@ -0,0 +1,69 @@
+.\"
+.\" Copyright (c) 1996 Joerg Wunsch
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd October 3, 2004
+.Dt IO 4 i386
+.Os
+.Sh NAME
+.Nm io
+.Nd I/O privilege file
+.Sh SYNOPSIS
+.Cd "device io"
+.Sh DESCRIPTION
+The special file
+.Pa /dev/io
+is a controlled security hole that allows a process to gain I/O
+privileges
+(which are normally reserved for kernel-internal code).
+Any process that holds a file descriptor on
+.Pa /dev/io
+open will get its
+.Em IOPL
+bits in the flag register set, thus allowing it to perform direct
+I/O operations.
+This can be useful in order to write userland
+programs that handle some hardware directly.
+Note that even read-only access will grant the full I/O privileges.
+.Pp
+In addition to any file access permissions on
+.Pa /dev/io ,
+the kernel enforces that only the super-user may open this device.
+.Sh FILES
+.Bl -tag -width Pa -compact
+.It Pa /dev/io
+.El
+.Sh SEE ALSO
+.Xr i386_get_ioperm 2 ,
+.Xr i386_set_ioperm 2 ,
+.Xr mem 4
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Fx 1.0 .
diff --git a/share/man/man4/ip.4 b/share/man/man4/ip.4
new file mode 100644
index 0000000..833c463
--- /dev/null
+++ b/share/man/man4/ip.4
@@ -0,0 +1,688 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)ip.4 8.2 (Berkeley) 11/30/93
+.\" $FreeBSD$
+.\"
+.Dd April 9, 2007
+.Dt IP 4
+.Os
+.Sh NAME
+.Nm ip
+.Nd Internet Protocol
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In netinet/in.h
+.Ft int
+.Fn socket AF_INET SOCK_RAW proto
+.Sh DESCRIPTION
+.Tn IP
+is the transport layer protocol used
+by the Internet protocol family.
+Options may be set at the
+.Tn IP
+level
+when using higher-level protocols that are based on
+.Tn IP
+(such as
+.Tn TCP
+and
+.Tn UDP ) .
+It may also be accessed
+through a
+.Dq raw socket
+when developing new protocols, or
+special-purpose applications.
+.Pp
+There are several
+.Tn IP-level
+.Xr setsockopt 2
+and
+.Xr getsockopt 2
+options.
+.Dv IP_OPTIONS
+may be used to provide
+.Tn IP
+options to be transmitted in the
+.Tn IP
+header of each outgoing packet
+or to examine the header options on incoming packets.
+.Tn IP
+options may be used with any socket type in the Internet family.
+The format of
+.Tn IP
+options to be sent is that specified by the
+.Tn IP
+protocol specification (RFC-791), with one exception:
+the list of addresses for Source Route options must include the first-hop
+gateway at the beginning of the list of gateways.
+The first-hop gateway address will be extracted from the option list
+and the size adjusted accordingly before use.
+To disable previously specified options,
+use a zero-length buffer:
+.Bd -literal
+setsockopt(s, IPPROTO_IP, IP_OPTIONS, NULL, 0);
+.Ed
+.Pp
+.Dv IP_TOS
+and
+.Dv IP_TTL
+may be used to set the type-of-service and time-to-live
+fields in the
+.Tn IP
+header for
+.Dv SOCK_STREAM , SOCK_DGRAM ,
+and certain types of
+.Dv SOCK_RAW
+sockets.
+For example,
+.Bd -literal
+int tos = IPTOS_LOWDELAY; /* see <netinet/ip.h> */
+setsockopt(s, IPPROTO_IP, IP_TOS, &tos, sizeof(tos));
+
+int ttl = 60; /* max = 255 */
+setsockopt(s, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl));
+.Ed
+.Pp
+.Dv IP_MINTTL
+may be used to set the minimum acceptable TTL a packet must have when
+received on a socket.
+All packets with a lower TTL are silently dropped.
+This option is only really useful when set to 255, preventing packets
+from outside the directly connected networks reaching local listeners
+on sockets.
+.Pp
+.Dv IP_DONTFRAG
+may be used to set the Don't Fragment flag on IP packets.
+Currently this option is respected only on
+.Xr udp 4
+and raw
+.Xr ip 4
+sockets, unless the
+.Dv IP_HDRINCL
+option has been set.
+On
+.Xr tcp 4
+sockets, the Don't Fragment flag is controlled by the Path
+MTU Discovery option.
+Sending a packet larger than the MTU size of the egress interface,
+determined by the destination address, returns an
+.Er EMSGSIZE
+error.
+.Pp
+If the
+.Dv IP_RECVDSTADDR
+option is enabled on a
+.Dv SOCK_DGRAM
+socket,
+the
+.Xr recvmsg 2
+call will return the destination
+.Tn IP
+address for a
+.Tn UDP
+datagram.
+The
+.Vt msg_control
+field in the
+.Vt msghdr
+structure points to a buffer
+that contains a
+.Vt cmsghdr
+structure followed by the
+.Tn IP
+address.
+The
+.Vt cmsghdr
+fields have the following values:
+.Bd -literal
+cmsg_len = sizeof(struct in_addr)
+cmsg_level = IPPROTO_IP
+cmsg_type = IP_RECVDSTADDR
+.Ed
+.Pp
+The source address to be used for outgoing
+.Tn UDP
+datagrams on a socket that is not bound to a specific
+.Tn IP
+address can be specified as ancillary data with a type code of
+.Dv IP_SENDSRCADDR .
+The msg_control field in the msghdr structure should point to a buffer
+that contains a
+.Vt cmsghdr
+structure followed by the
+.Tn IP
+address.
+The cmsghdr fields should have the following values:
+.Bd -literal
+cmsg_len = sizeof(struct in_addr)
+cmsg_level = IPPROTO_IP
+cmsg_type = IP_SENDSRCADDR
+.Ed
+.Pp
+For convenience,
+.Dv IP_SENDSRCADDR
+is defined to have the same value as
+.Dv IP_RECVDSTADDR ,
+so the
+.Dv IP_RECVDSTADDR
+control message from
+.Xr recvmsg 2
+can be used directly as a control message for
+.Xr sendmsg 2 .
+.\"
+.Pp
+If the
+.Dv IP_ONESBCAST
+option is enabled on a
+.Dv SOCK_DGRAM
+or a
+.Dv SOCK_RAW
+socket, the destination address of outgoing
+broadcast datagrams on that socket will be forced
+to the undirected broadcast address,
+.Dv INADDR_BROADCAST ,
+before transmission.
+This is in contrast to the default behavior of the
+system, which is to transmit undirected broadcasts
+via the first network interface with the
+.Dv IFF_BROADCAST flag set.
+.Pp
+This option allows applications to choose which
+interface is used to transmit an undirected broadcast
+datagram.
+For example, the following code would force an
+undirected broadcast to be transmitted via the interface
+configured with the broadcast address 192.168.2.255:
+.Bd -literal
+char msg[512];
+struct sockaddr_in sin;
+u_char onesbcast = 1; /* 0 = disable (default), 1 = enable */
+
+setsockopt(s, IPPROTO_IP, IP_ONESBCAST, &onesbcast, sizeof(onesbcast));
+sin.sin_addr.s_addr = inet_addr("192.168.2.255");
+sin.sin_port = htons(1234);
+sendto(s, msg, sizeof(msg), 0, &sin, sizeof(sin));
+.Ed
+.Pp
+It is the application's responsibility to set the
+.Dv IP_TTL option
+to an appropriate value in order to prevent broadcast storms.
+The application must have sufficient credentials to set the
+.Dv SO_BROADCAST
+socket level option, otherwise the
+.Dv IP_ONESBCAST option has no effect.
+.Pp
+If the
+.Dv IP_RECVTTL
+option is enabled on a
+.Dv SOCK_DGRAM
+socket, the
+.Xr recvmsg 2
+call will return the
+.Tn IP
+.Tn TTL
+(time to live) field for a
+.Tn UDP
+datagram.
+The msg_control field in the msghdr structure points to a buffer
+that contains a cmsghdr structure followed by the
+.Tn TTL .
+The cmsghdr fields have the following values:
+.Bd -literal
+cmsg_len = sizeof(u_char)
+cmsg_level = IPPROTO_IP
+cmsg_type = IP_RECVTTL
+.Ed
+.\"
+.Pp
+If the
+.Dv IP_RECVIF
+option is enabled on a
+.Dv SOCK_DGRAM
+socket, the
+.Xr recvmsg 2
+call returns a
+.Vt "struct sockaddr_dl"
+corresponding to the interface on which the
+packet was received.
+The
+.Va msg_control
+field in the
+.Vt msghdr
+structure points to a buffer that contains a
+.Vt cmsghdr
+structure followed by the
+.Vt "struct sockaddr_dl" .
+The
+.Vt cmsghdr
+fields have the following values:
+.Bd -literal
+cmsg_len = sizeof(struct sockaddr_dl)
+cmsg_level = IPPROTO_IP
+cmsg_type = IP_RECVIF
+.Ed
+.Pp
+.Dv IP_PORTRANGE
+may be used to set the port range used for selecting a local port number
+on a socket with an unspecified (zero) port number.
+It has the following
+possible values:
+.Bl -tag -width IP_PORTRANGE_DEFAULT
+.It Dv IP_PORTRANGE_DEFAULT
+use the default range of values, normally
+.Dv IPPORT_HIFIRSTAUTO
+through
+.Dv IPPORT_HILASTAUTO .
+This is adjustable through the sysctl setting:
+.Va net.inet.ip.portrange.first
+and
+.Va net.inet.ip.portrange.last .
+.It Dv IP_PORTRANGE_HIGH
+use a high range of values, normally
+.Dv IPPORT_HIFIRSTAUTO
+and
+.Dv IPPORT_HILASTAUTO .
+This is adjustable through the sysctl setting:
+.Va net.inet.ip.portrange.hifirst
+and
+.Va net.inet.ip.portrange.hilast .
+.It Dv IP_PORTRANGE_LOW
+use a low range of ports, which are normally restricted to
+privileged processes on
+.Ux
+systems.
+The range is normally from
+.Dv IPPORT_RESERVED
+\- 1 down to
+.Li IPPORT_RESERVEDSTART
+in descending order.
+This is adjustable through the sysctl setting:
+.Va net.inet.ip.portrange.lowfirst
+and
+.Va net.inet.ip.portrange.lowlast .
+.El
+.Pp
+The range of privileged ports which only may be opened by
+root-owned processes may be modified by the
+.Va net.inet.ip.portrange.reservedlow
+and
+.Va net.inet.ip.portrange.reservedhigh
+sysctl settings.
+The values default to the traditional range,
+0 through
+.Dv IPPORT_RESERVED
+\- 1
+(0 through 1023), respectively.
+Note that these settings do not affect and are not accounted for in the
+use or calculation of the other
+.Va net.inet.ip.portrange
+values above.
+Changing these values departs from
+.Ux
+tradition and has security
+consequences that the administrator should carefully evaluate before
+modifying these settings.
+.Pp
+Ports are allocated at random within the specified port range in order
+to increase the difficulty of random spoofing attacks.
+In scenarios such as benchmarking, this behavior may be undesirable.
+In these cases,
+.Va net.inet.ip.portrange.randomized
+can be used to toggle randomization off.
+If more than
+.Va net.inet.ip.portrange.randomcps
+ports have been allocated in the last second, then return to sequential
+port allocation.
+Return to random allocation only once the current port allocation rate
+drops below
+.Va net.inet.ip.portrange.randomcps
+for at least
+.Va net.inet.ip.portrange.randomtime
+seconds.
+The default values for
+.Va net.inet.ip.portrange.randomcps
+and
+.Va net.inet.ip.portrange.randomtime
+are 10 port allocations per second and 45 seconds correspondingly.
+.Ss "Multicast Options"
+.Pp
+.Tn IP
+multicasting is supported only on
+.Dv AF_INET
+sockets of type
+.Dv SOCK_DGRAM
+and
+.Dv SOCK_RAW ,
+and only on networks where the interface
+driver supports multicasting.
+.Pp
+The
+.Dv IP_MULTICAST_TTL
+option changes the time-to-live (TTL)
+for outgoing multicast datagrams
+in order to control the scope of the multicasts:
+.Bd -literal
+u_char ttl; /* range: 0 to 255, default = 1 */
+setsockopt(s, IPPROTO_IP, IP_MULTICAST_TTL, &ttl, sizeof(ttl));
+.Ed
+.Pp
+Datagrams with a TTL of 1 are not forwarded beyond the local network.
+Multicast datagrams with a TTL of 0 will not be transmitted on any network,
+but may be delivered locally if the sending host belongs to the destination
+group and if multicast loopback has not been disabled on the sending socket
+(see below).
+Multicast datagrams with TTL greater than 1 may be forwarded
+to other networks if a multicast router is attached to the local network.
+.Pp
+For hosts with multiple interfaces, each multicast transmission is
+sent from the primary network interface.
+The
+.Dv IP_MULTICAST_IF
+option overrides the default for
+subsequent transmissions from a given socket:
+.Bd -literal
+struct in_addr addr;
+setsockopt(s, IPPROTO_IP, IP_MULTICAST_IF, &addr, sizeof(addr));
+.Ed
+.Pp
+where "addr" is the local
+.Tn IP
+address of the desired interface or
+.Dv INADDR_ANY
+to specify the default interface.
+.Pp
+To specify an interface by index, an instance of
+.Vt ip_mreqn
+should be passed instead.
+The
+.Vt imr_ifindex
+member should be set to the index of the desired interface,
+or 0 to specify the default interface.
+The kernel differentiates between these two structures by their size.
+.\"
+An interface's local IP address and multicast capability can
+be obtained via the
+.Dv SIOCGIFCONF
+and
+.Dv SIOCGIFFLAGS
+ioctls.
+Normal applications should not need to use this option.
+.Pp
+If a multicast datagram is sent to a group to which the sending host itself
+belongs (on the outgoing interface), a copy of the datagram is, by default,
+looped back by the IP layer for local delivery.
+The
+.Dv IP_MULTICAST_LOOP
+option gives the sender explicit control
+over whether or not subsequent datagrams are looped back:
+.Bd -literal
+u_char loop; /* 0 = disable, 1 = enable (default) */
+setsockopt(s, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop));
+.Ed
+.Pp
+This option
+improves performance for applications that may have no more than one
+instance on a single host (such as a router daemon), by eliminating
+the overhead of receiving their own transmissions.
+It should generally not
+be used by applications for which there may be more than one instance on a
+single host (such as a conferencing program) or for which the sender does
+not belong to the destination group (such as a time querying program).
+.Pp
+A multicast datagram sent with an initial TTL greater than 1 may be delivered
+to the sending host on a different interface from that on which it was sent,
+if the host belongs to the destination group on that other interface.
+The loopback control option has no effect on such delivery.
+.Pp
+A host must become a member of a multicast group before it can receive
+datagrams sent to the group.
+To join a multicast group, use the
+.Dv IP_ADD_MEMBERSHIP
+option:
+.Bd -literal
+struct ip_mreq mreq;
+setsockopt(s, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
+.Ed
+.Pp
+where
+.Fa mreq
+is the following structure:
+.Bd -literal
+struct ip_mreq {
+ struct in_addr imr_multiaddr; /* IP multicast address of group */
+ struct in_addr imr_interface; /* local IP address of interface */
+}
+.Ed
+.Pp
+.Va imr_interface
+should be set to
+.Dv INADDR_ANY
+to choose the default multicast interface,
+or the
+.Tn IP
+address of a particular multicast-capable interface if
+the host is multihomed.
+.\" TODO: Remove this piece when the RFC 3678 API is implemented and
+.\" the RFC 1724 hack is removed.
+Since
+.Fx 4.4 ,
+if the
+.Va imr_interface
+member is within the network range
+.Li 0.0.0.0/8 ,
+it is treated as an interface index in the system interface MIB,
+as per the RIP Version 2 MIB Extension (RFC-1724).
+.\" TODO: Update this piece when IPv4 source-address selection is implemented.
+.Pp
+Up to
+.Dv IP_MAX_MEMBERSHIPS
+memberships may be added on a single socket.
+Membership is associated with a single interface;
+programs running on multihomed hosts may need to
+join the same group on more than one interface.
+.Pp
+The IGMP protocol uses the primary IP address of the interface
+as its identifier for group membership.
+If multiple IP aliases are configured on the same interface,
+they will be ignored.
+This shortcoming was addressed in IPv6; MLDv2 requires
+that the unique link-local address for an interface is
+used to identify an MLDv2 listener.
+.Pp
+To drop a membership, use:
+.Bd -literal
+struct ip_mreq mreq;
+setsockopt(s, IPPROTO_IP, IP_DROP_MEMBERSHIP, &mreq, sizeof(mreq));
+.Ed
+.Pp
+where
+.Fa mreq
+contains the same values as used to add the membership.
+Memberships are dropped when the socket is closed or the process exits.
+.\"-----------------------
+.Ss "Raw IP Sockets"
+.Pp
+Raw
+.Tn IP
+sockets are connectionless,
+and are normally used with the
+.Xr sendto 2
+and
+.Xr recvfrom 2
+calls, though the
+.Xr connect 2
+call may also be used to fix the destination for future
+packets (in which case the
+.Xr read 2
+or
+.Xr recv 2
+and
+.Xr write 2
+or
+.Xr send 2
+system calls may be used).
+.Pp
+If
+.Fa proto
+is 0, the default protocol
+.Dv IPPROTO_RAW
+is used for outgoing
+packets, and only incoming packets destined for that protocol
+are received.
+If
+.Fa proto
+is non-zero, that protocol number will be used on outgoing packets
+and to filter incoming packets.
+.Pp
+Outgoing packets automatically have an
+.Tn IP
+header prepended to
+them (based on the destination address and the protocol
+number the socket is created with),
+unless the
+.Dv IP_HDRINCL
+option has been set.
+Incoming packets are received with
+.Tn IP
+header and options intact.
+.Pp
+.Dv IP_HDRINCL
+indicates the complete IP header is included with the data
+and may be used only with the
+.Dv SOCK_RAW
+type.
+.Bd -literal
+#include <netinet/in_systm.h>
+#include <netinet/ip.h>
+
+int hincl = 1; /* 1 = on, 0 = off */
+setsockopt(s, IPPROTO_IP, IP_HDRINCL, &hincl, sizeof(hincl));
+.Ed
+.Pp
+Unlike previous
+.Bx
+releases, the program must set all
+the fields of the IP header, including the following:
+.Bd -literal
+ip->ip_v = IPVERSION;
+ip->ip_hl = hlen >> 2;
+ip->ip_id = 0; /* 0 means kernel set appropriate value */
+ip->ip_off = offset;
+.Ed
+.Pp
+The
+.Va ip_len
+and
+.Va ip_off
+fields
+.Em must
+be provided in host byte order .
+All other fields must be provided in network byte order.
+See
+.Xr byteorder 3
+for more information on network byte order.
+If the
+.Va ip_id
+field is set to 0 then the kernel will choose an
+appropriate value.
+If the header source address is set to
+.Dv INADDR_ANY ,
+the kernel will choose an appropriate address.
+.Sh ERRORS
+A socket operation may fail with one of the following errors returned:
+.Bl -tag -width Er
+.It Bq Er EISCONN
+when trying to establish a connection on a socket which
+already has one, or when trying to send a datagram with the destination
+address specified and the socket is already connected;
+.It Bq Er ENOTCONN
+when trying to send a datagram, but
+no destination address is specified, and the socket has not been
+connected;
+.It Bq Er ENOBUFS
+when the system runs out of memory for
+an internal data structure;
+.It Bq Er EADDRNOTAVAIL
+when an attempt is made to create a
+socket with a network address for which no network interface
+exists.
+.It Bq Er EACCES
+when an attempt is made to create
+a raw IP socket by a non-privileged process.
+.El
+.Pp
+The following errors specific to
+.Tn IP
+may occur when setting or getting
+.Tn IP
+options:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+An unknown socket option name was given.
+.It Bq Er EINVAL
+The IP option field was improperly formed;
+an option field was shorter than the minimum value
+or longer than the option buffer provided.
+.El
+.Pp
+The following errors may occur when attempting to send
+.Tn IP
+datagrams via a
+.Dq raw socket
+with the
+.Dv IP_HDRINCL
+option set:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The user-supplied
+.Va ip_len
+field was not equal to the length of the datagram written to the socket.
+.El
+.Sh SEE ALSO
+.Xr getsockopt 2 ,
+.Xr recv 2 ,
+.Xr send 2 ,
+.Xr byteorder 3 ,
+.Xr icmp 4 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr multicast 4
+.Sh HISTORY
+The
+.Nm
+protocol appeared in
+.Bx 4.2 .
+The
+.Vt ip_mreqn
+structure appeared in
+.Tn Linux 2.4 .
diff --git a/share/man/man4/ip6.4 b/share/man/man4/ip6.4
new file mode 100644
index 0000000..633537b
--- /dev/null
+++ b/share/man/man4/ip6.4
@@ -0,0 +1,699 @@
+.\" $KAME: ip6.4,v 1.23 2005/01/11 05:56:25 itojun Exp $
+.\" $OpenBSD: ip6.4,v 1.21 2005/01/06 03:50:46 itojun Exp $
+.\"
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 21, 2008
+.Dt IP6 4
+.Os
+.Sh NAME
+.Nm ip6
+.Nd Internet Protocol version 6 (IPv6) network layer
+.Sh SYNOPSIS
+.In sys/socket.h
+.In netinet/in.h
+.Ft int
+.Fn socket AF_INET6 SOCK_RAW proto
+.Sh DESCRIPTION
+The IPv6 network layer is used by the IPv6 protocol family for
+transporting data.
+IPv6 packets contain an IPv6 header that is not provided as part of the
+payload contents when passed to an application.
+IPv6 header options affect the behavior of this protocol and may be used
+by high-level protocols (such as the
+.Xr tcp 4
+and
+.Xr udp 4
+protocols) as well as directly by
+.Dq raw sockets ,
+which process IPv6 messages at a lower-level and may be useful for
+developing new protocols and special-purpose applications.
+.Ss Header
+All IPv6 packets begin with an IPv6 header.
+When data received by the kernel are passed to the application, this
+header is not included in buffer, even when raw sockets are being used.
+Likewise, when data are sent to the kernel for transmit from the
+application, the buffer is not examined for an IPv6 header:
+the kernel always constructs the header.
+To directly access IPv6 headers from received packets and specify them
+as part of the buffer passed to the kernel, link-level access
+.Po
+.Xr bpf 4 ,
+for example
+.Pc
+must instead be utilized.
+.Pp
+The header has the following definition:
+.Bd -literal -offset indent
+struct ip6_hdr {
+ union {
+ struct ip6_hdrctl {
+ u_int32_t ip6_un1_flow; /* 20 bits of flow ID */
+ u_int16_t ip6_un1_plen; /* payload length */
+ u_int8_t ip6_un1_nxt; /* next header */
+ u_int8_t ip6_un1_hlim; /* hop limit */
+ } ip6_un1;
+ u_int8_t ip6_un2_vfc; /* version and class */
+ } ip6_ctlun;
+ struct in6_addr ip6_src; /* source address */
+ struct in6_addr ip6_dst; /* destination address */
+} __packed;
+
+#define ip6_vfc ip6_ctlun.ip6_un2_vfc
+#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow
+#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen
+#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
+#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
+#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
+.Ed
+.Pp
+All fields are in network-byte order.
+Any options specified (see
+.Sx Options
+below) must also be specified in network-byte order.
+.Pp
+.Va ip6_flow
+specifies the flow ID.
+.Va ip6_plen
+specifies the payload length.
+.Va ip6_nxt
+specifies the type of the next header.
+.Va ip6_hlim
+specifies the hop limit.
+.Pp
+The top 4 bits of
+.Va ip6_vfc
+specify the class and the bottom 4 bits specify the version.
+.Pp
+.Va ip6_src
+and
+.Va ip6_dst
+specify the source and destination addresses.
+.Pp
+The IPv6 header may be followed by any number of extension headers that start
+with the following generic definition:
+.Bd -literal -offset indent
+struct ip6_ext {
+ u_int8_t ip6e_nxt;
+ u_int8_t ip6e_len;
+} __packed;
+.Ed
+.Ss Options
+IPv6 allows header options on packets to manipulate the behavior of the
+protocol.
+These options and other control requests are accessed with the
+.Xr getsockopt 2
+and
+.Xr setsockopt 2
+system calls at level
+.Dv IPPROTO_IPV6
+and by using ancillary data in
+.Xr recvmsg 2
+and
+.Xr sendmsg 2 .
+They can be used to access most of the fields in the IPv6 header and
+extension headers.
+.Pp
+The following socket options are supported:
+.Bl -tag -width Ds
+.\" .It Dv IPV6_OPTIONS
+.It Dv IPV6_UNICAST_HOPS Fa "int *"
+Get or set the default hop limit header field for outgoing unicast
+datagrams sent on this socket.
+.\" .It Dv IPV6_RECVOPTS Fa "int *"
+.\" Get or set the status of whether all header options will be
+.\" delivered along with the datagram when it is received.
+.\" .It Dv IPV6_RECVRETOPTS Fa "int *"
+.\" Get or set the status of whether header options will be delivered
+.\" for reply.
+.\" .It Dv IPV6_RECVDSTADDR Fa "int *"
+.\" Get or set the status of whether datagrams are received with
+.\" destination addresses.
+.\" .It Dv IPV6_RETOPTS
+.\" Get or set IPv6 options.
+.It Dv IPV6_MULTICAST_IF Fa "u_int *"
+Get or set the interface from which multicast packets will be sent.
+For hosts with multiple interfaces, each multicast transmission is sent
+from the primary network interface.
+The interface is specified as its index as provided by
+.Xr if_nametoindex 3 .
+A value of zero specifies the default interface.
+.It Dv IPV6_MULTICAST_HOPS Fa "int *"
+Get or set the default hop limit header field for outgoing multicast
+datagrams sent on this socket.
+This option controls the scope of multicast datagram transmissions.
+.Pp
+Datagrams with a hop limit of 1 are not forwarded beyond the local
+network.
+Multicast datagrams with a hop limit of zero will not be transmitted on
+any network but may be delivered locally if the sending host belongs to
+the destination group and if multicast loopback (see below) has not been
+disabled on the sending socket.
+Multicast datagrams with a hop limit greater than 1 may be forwarded to
+the other networks if a multicast router (such as
+.Xr mrouted 8 Pq Pa ports/net/mrouted )
+is attached to the local network.
+.It Dv IPV6_MULTICAST_LOOP Fa "u_int *"
+Get or set the status of whether multicast datagrams will be looped back
+for local delivery when a multicast datagram is sent to a group to which
+the sending host belongs.
+.Pp
+This option improves performance for applications that may have no more
+than one instance on a single host (such as a router daemon) by
+eliminating the overhead of receiving their own transmissions.
+It should generally not be used by applications for which there may be
+more than one instance on a single host (such as a conferencing program)
+or for which the sender does not belong to the destination group
+(such as a time-querying program).
+.Pp
+A multicast datagram sent with an initial hop limit greater than 1 may
+be delivered to the sending host on a different interface from that on
+which it was sent if the host belongs to the destination group on that
+other interface.
+The multicast loopback control option has no effect on such delivery.
+.It Dv IPV6_JOIN_GROUP Fa "struct ipv6_mreq *"
+Join a multicast group.
+A host must become a member of a multicast group before it can receive
+datagrams sent to the group.
+.Bd -literal
+struct ipv6_mreq {
+ struct in6_addr ipv6mr_multiaddr;
+ unsigned int ipv6mr_interface;
+};
+.Ed
+.Pp
+.Va ipv6mr_interface
+may be set to zeroes to choose the default multicast interface or to the
+index of a particular multicast-capable interface if the host is
+multihomed.
+Membership is associated with a single interface; programs running on
+multihomed hosts may need to join the same group on more than one
+interface.
+.Pp
+If the multicast address is unspecified (i.e., all zeroes), messages
+from all multicast addresses will be accepted by this group.
+Note that setting to this value requires superuser privileges.
+.It Dv IPV6_LEAVE_GROUP Fa "struct ipv6_mreq *"
+Drop membership from the associated multicast group.
+Memberships are automatically dropped when the socket is closed or when
+the process exits.
+.It Dv IPV6_PORTRANGE Fa "int *"
+Get or set the allocation policy of ephemeral ports for when the kernel
+automatically binds a local address to this socket.
+The following values are available:
+.Pp
+.Bl -tag -width IPV6_PORTRANGE_DEFAULT -compact
+.It Dv IPV6_PORTRANGE_DEFAULT
+Use the regular range of non-reserved ports (varies, see
+.Xr sysctl 8 ) .
+.It Dv IPV6_PORTRANGE_HIGH
+Use a high range (varies, see
+.Xr sysctl 8 ) .
+.It Dv IPV6_PORTRANGE_LOW
+Use a low, reserved range (600\-1023).
+.El
+.It Dv IPV6_PKTINFO Fa "int *"
+Get or set whether additional information about subsequent packets will
+be provided as ancillary data along with the payload in subsequent
+.Xr recvmsg 2
+calls.
+The information is stored in the following structure in the ancillary
+data returned:
+.Bd -literal
+struct in6_pktinfo {
+ struct in6_addr ipi6_addr; /* src/dst IPv6 address */
+ unsigned int ipi6_ifindex; /* send/recv if index */
+};
+.Ed
+.It Dv IPV6_HOPLIMIT Fa "int *"
+Get or set whether the hop limit header field from subsequent packets
+will be provided as ancillary data along with the payload in subsequent
+.Xr recvmsg 2
+calls.
+The value is stored as an
+.Vt int
+in the ancillary data returned.
+.\" .It Dv IPV6_NEXTHOP Fa "int *"
+.\" Get or set whether the address of the next hop for subsequent
+.\" packets will be provided as ancillary data along with the payload in
+.\" subsequent
+.\" .Xr recvmsg 2
+.\" calls.
+.\" The option is stored as a
+.\" .Vt sockaddr
+.\" structure in the ancillary data returned.
+.\" .Pp
+.\" This option requires superuser privileges.
+.It Dv IPV6_HOPOPTS Fa "int *"
+Get or set whether the hop-by-hop options from subsequent packets will be
+provided as ancillary data along with the payload in subsequent
+.Xr recvmsg 2
+calls.
+The option is stored in the following structure in the ancillary data
+returned:
+.Bd -literal
+struct ip6_hbh {
+ u_int8_t ip6h_nxt; /* next header */
+ u_int8_t ip6h_len; /* length in units of 8 octets */
+/* followed by options */
+} __packed;
+.Ed
+.Pp
+The
+.Fn inet6_option_space
+routine and family of routines may be used to manipulate this data.
+.Pp
+This option requires superuser privileges.
+.It Dv IPV6_DSTOPTS Fa "int *"
+Get or set whether the destination options from subsequent packets will
+be provided as ancillary data along with the payload in subsequent
+.Xr recvmsg 2
+calls.
+The option is stored in the following structure in the ancillary data
+returned:
+.Bd -literal
+struct ip6_dest {
+ u_int8_t ip6d_nxt; /* next header */
+ u_int8_t ip6d_len; /* length in units of 8 octets */
+/* followed by options */
+} __packed;
+.Ed
+.Pp
+The
+.Fn inet6_option_space
+routine and family of routines may be used to manipulate this data.
+.Pp
+This option requires superuser privileges.
+.It Dv IPV6_TCLASS Fa "int *"
+Get or set the value of the traffic class field used for outgoing datagrams
+on this socket.
+The value must be between \-1 and 255.
+A value of \-1 resets to the default value.
+.It Dv IPV6_RECVTCLASS Fa "int *"
+Get or set the status of whether the traffic class header field will be
+provided as ancillary data along with the payload in subsequent
+.Xr recvmsg 2
+calls.
+The header field is stored as a single value of type
+.Vt int .
+.It Dv IPV6_RTHDR Fa "int *"
+Get or set whether the routing header from subsequent packets will be
+provided as ancillary data along with the payload in subsequent
+.Xr recvmsg 2
+calls.
+The header is stored in the following structure in the ancillary data
+returned:
+.Bd -literal
+struct ip6_rthdr {
+ u_int8_t ip6r_nxt; /* next header */
+ u_int8_t ip6r_len; /* length in units of 8 octets */
+ u_int8_t ip6r_type; /* routing type */
+ u_int8_t ip6r_segleft; /* segments left */
+/* followed by routing-type-specific data */
+} __packed;
+.Ed
+.Pp
+The
+.Fn inet6_option_space
+routine and family of routines may be used to manipulate this data.
+.Pp
+This option requires superuser privileges.
+.It Dv IPV6_PKTOPTIONS Fa "struct cmsghdr *"
+Get or set all header options and extension headers at one time on the
+last packet sent or received on the socket.
+All options must fit within the size of an mbuf (see
+.Xr mbuf 9 ) .
+Options are specified as a series of
+.Vt cmsghdr
+structures followed by corresponding values.
+.Va cmsg_level
+is set to
+.Dv IPPROTO_IPV6 ,
+.Va cmsg_type
+to one of the other values in this list, and trailing data to the option
+value.
+When setting options, if the length
+.Va optlen
+to
+.Xr setsockopt 2
+is zero, all header options will be reset to their default values.
+Otherwise, the length should specify the size the series of control
+messages consumes.
+.Pp
+Instead of using
+.Xr sendmsg 2
+to specify option values, the ancillary data used in these calls that
+correspond to the desired header options may be directly specified as
+the control message in the series of control messages provided as the
+argument to
+.Xr setsockopt 2 .
+.It Dv IPV6_CHECKSUM Fa "int *"
+Get or set the byte offset into a packet where the 16-bit checksum is
+located.
+When set, this byte offset is where incoming packets will be expected
+to have checksums of their data stored and where outgoing packets will
+have checksums of their data computed and stored by the kernel.
+A value of \-1 specifies that no checksums will be checked on incoming
+packets and that no checksums will be computed or stored on outgoing
+packets.
+The offset of the checksum for ICMPv6 sockets cannot be relocated or
+turned off.
+.It Dv IPV6_V6ONLY Fa "int *"
+Get or set whether only IPv6 connections can be made to this socket.
+For wildcard sockets, this can restrict connections to IPv6 only.
+.\"With
+.\".Ox
+.\"IPv6 sockets are always IPv6-only, so the socket option is read-only
+.\"(not modifiable).
+.It Dv IPV6_FAITH Fa "int *"
+Get or set the status of whether
+.Xr faith 4
+connections can be made to this socket.
+.It Dv IPV6_USE_MIN_MTU Fa "int *"
+Get or set whether the minimal IPv6 maximum transmission unit (MTU) size
+will be used to avoid fragmentation from occurring for subsequent
+outgoing datagrams.
+.It Dv IPV6_AUTH_LEVEL Fa "int *"
+Get or set the
+.Xr ipsec 4
+authentication level.
+.It Dv IPV6_ESP_TRANS_LEVEL Fa "int *"
+Get or set the ESP transport level.
+.It Dv IPV6_ESP_NETWORK_LEVEL Fa "int *"
+Get or set the ESP encapsulation level.
+.It Dv IPV6_IPCOMP_LEVEL Fa "int *"
+Get or set the
+.Xr ipcomp 4
+level.
+.El
+.Pp
+The
+.Dv IPV6_PKTINFO ,
+.\" .Dv IPV6_NEXTHOP ,
+.Dv IPV6_HOPLIMIT ,
+.Dv IPV6_HOPOPTS ,
+.Dv IPV6_DSTOPTS ,
+and
+.Dv IPV6_RTHDR
+options will return ancillary data along with payload contents in subsequent
+.Xr recvmsg 2
+calls with
+.Va cmsg_level
+set to
+.Dv IPPROTO_IPV6
+and
+.Va cmsg_type
+set to respective option name value (e.g.,
+.Dv IPV6_HOPTLIMIT ) .
+These options may also be used directly as ancillary
+.Va cmsg_type
+values in
+.Xr sendmsg 2
+to set options on the packet being transmitted by the call.
+The
+.Va cmsg_level
+value must be
+.Dv IPPROTO_IPV6 .
+For these options, the ancillary data object value format is the same
+as the value returned as explained for each when received with
+.Xr recvmsg 2 .
+.Pp
+Note that using
+.Xr sendmsg 2
+to specify options on particular packets works only on UDP and raw sockets.
+To manipulate header options for packets on TCP sockets, only the socket
+options may be used.
+.Pp
+In some cases, there are multiple APIs defined for manipulating an IPv6
+header field.
+A good example is the outgoing interface for multicast datagrams, which
+can be set by the
+.Dv IPV6_MULTICAST_IF
+socket option, through the
+.Dv IPV6_PKTINFO
+option, and through the
+.Va sin6_scope_id
+field of the socket address passed to the
+.Xr sendto 2
+system call.
+.Pp
+Resolving these conflicts is implementation dependent.
+This implementation determines the value in the following way:
+options specified by using ancillary data (i.e.,
+.Xr sendmsg 2 )
+are considered first,
+options specified by using
+.Dv IPV6_PKTOPTIONS
+to set
+.Dq sticky
+options are considered second,
+options specified by using the individual, basic, and direct socket
+options (e.g.,
+.Dv IPV6_UNICAST_HOPS )
+are considered third,
+and options specified in the socket address supplied to
+.Xr sendto 2
+are the last choice.
+.Ss Multicasting
+IPv6 multicasting is supported only on
+.Dv AF_INET6
+sockets of type
+.Dv SOCK_DGRAM
+and
+.Dv SOCK_RAW ,
+and only on networks where the interface driver supports
+multicasting.
+Socket options (see above) that manipulate membership of
+multicast groups and other multicast options include
+.Dv IPV6_MULTICAST_IF ,
+.Dv IPV6_MULTICAST_HOPS ,
+.Dv IPV6_MULTICAST_LOOP ,
+.Dv IPV6_LEAVE_GROUP ,
+and
+.Dv IPV6_JOIN_GROUP .
+.Ss Raw Sockets
+Raw IPv6 sockets are connectionless and are normally used with the
+.Xr sendto 2
+and
+.Xr recvfrom 2
+calls, although the
+.Xr connect 2
+call may be used to fix the destination address for future outgoing
+packets so that
+.Xr send 2
+may instead be used and the
+.Xr bind 2
+call may be used to fix the source address for future outgoing
+packets instead of having the kernel choose a source address.
+.Pp
+By using
+.Xr connect 2
+or
+.Xr bind 2 ,
+raw socket input is constrained to only packets with their
+source address matching the socket destination address if
+.Xr connect 2
+was used and to packets with their destination address
+matching the socket source address if
+.Xr bind 2
+was used.
+.Pp
+If the
+.Ar proto
+argument to
+.Xr socket 2
+is zero, the default protocol
+.Pq Dv IPPROTO_RAW
+is used for outgoing packets.
+For incoming packets, protocols recognized by kernel are
+.Sy not
+passed to the application socket (e.g.,
+.Xr tcp 4
+and
+.Xr udp 4 )
+except for some ICMPv6 messages.
+The ICMPv6 messages not passed to raw sockets include echo, timestamp,
+and address mask requests.
+If
+.Ar proto
+is non-zero, only packets with this protocol will be passed to the
+socket.
+.Pp
+IPv6 fragments are also not passed to application sockets until
+they have been reassembled.
+If reception of all packets is desired, link-level access (such as
+.Xr bpf 4 )
+must be used instead.
+.Pp
+Outgoing packets automatically have an IPv6 header prepended to them
+(based on the destination address and the protocol number the socket
+was created with).
+Incoming packets are received by an application without the IPv6 header
+or any extension headers.
+.Pp
+Outgoing packets will be fragmented automatically by the kernel if they
+are too large.
+Incoming packets will be reassembled before being sent to the raw socket,
+so packet fragments or fragment headers will never be seen on a raw socket.
+.Sh EXAMPLES
+The following determines the hop limit on the next packet received:
+.Bd -literal
+struct iovec iov[2];
+u_char buf[BUFSIZ];
+struct cmsghdr *cm;
+struct msghdr m;
+int found, optval;
+u_char data[2048];
+
+/* Create socket. */
+
+(void)memset(&m, 0, sizeof(m));
+(void)memset(&iov, 0, sizeof(iov));
+
+iov[0].iov_base = data; /* buffer for packet payload */
+iov[0].iov_len = sizeof(data); /* expected packet length */
+
+m.msg_name = &from; /* sockaddr_in6 of peer */
+m.msg_namelen = sizeof(from);
+m.msg_iov = iov;
+m.msg_iovlen = 1;
+m.msg_control = (caddr_t)buf; /* buffer for control messages */
+m.msg_controllen = sizeof(buf);
+
+/*
+ * Enable the hop limit value from received packets to be
+ * returned along with the payload.
+ */
+optval = 1;
+if (setsockopt(s, IPPROTO_IPV6, IPV6_HOPLIMIT, &optval,
+ sizeof(optval)) == -1)
+ err(1, "setsockopt");
+
+found = 0;
+while (!found) {
+ if (recvmsg(s, &m, 0) == -1)
+ err(1, "recvmsg");
+ for (cm = CMSG_FIRSTHDR(&m); cm != NULL;
+ cm = CMSG_NXTHDR(&m, cm)) {
+ if (cm->cmsg_level == IPPROTO_IPV6 &&
+ cm->cmsg_type == IPV6_HOPLIMIT &&
+ cm->cmsg_len == CMSG_LEN(sizeof(int))) {
+ found = 1;
+ (void)printf("hop limit: %d\en",
+ *(int *)CMSG_DATA(cm));
+ break;
+ }
+ }
+}
+.Ed
+.Sh DIAGNOSTICS
+A socket operation may fail with one of the following errors returned:
+.Bl -tag -width EADDRNOTAVAILxx
+.It Bq Er EISCONN
+when trying to establish a connection on a socket which
+already has one or when trying to send a datagram with the destination
+address specified and the socket is already connected.
+.It Bq Er ENOTCONN
+when trying to send a datagram, but
+no destination address is specified, and the socket has not been
+connected.
+.It Bq Er ENOBUFS
+when the system runs out of memory for
+an internal data structure.
+.It Bq Er EADDRNOTAVAIL
+when an attempt is made to create a
+socket with a network address for which no network interface
+exists.
+.It Bq Er EACCES
+when an attempt is made to create
+a raw IPv6 socket by a non-privileged process.
+.El
+.Pp
+The following errors specific to IPv6 may occur when setting or getting
+header options:
+.Bl -tag -width EADDRNOTAVAILxx
+.It Bq Er EINVAL
+An unknown socket option name was given.
+.It Bq Er EINVAL
+An ancillary data object was improperly formed.
+.El
+.Sh SEE ALSO
+.Xr getsockopt 2 ,
+.Xr recv 2 ,
+.Xr send 2 ,
+.Xr setsockopt 2 ,
+.Xr socket 2 ,
+.\" .Xr inet6_option_space 3 ,
+.\" .Xr inet6_rthdr_space 3 ,
+.Xr if_nametoindex 3 ,
+.Xr bpf 4 ,
+.Xr icmp6 4 ,
+.Xr inet6 4 ,
+.Xr netintro 4 ,
+.Xr tcp 4 ,
+.Xr udp 4
+.Rs
+.%A W. Stevens
+.%A M. Thomas
+.%T Advanced Sockets API for IPv6
+.%R RFC 2292
+.%D February 1998
+.Re
+.Rs
+.%A S. Deering
+.%A R. Hinden
+.%T Internet Protocol, Version 6 (IPv6) Specification
+.%R RFC 2460
+.%D December 1998
+.Re
+.Rs
+.%A R. Gilligan
+.%A S. Thomson
+.%A J. Bound
+.%A W. Stevens
+.%T Basic Socket Interface Extensions for IPv6
+.%R RFC 2553
+.%D March 1999
+.Re
+.Rs
+.%A W. Stevens
+.%A B. Fenner
+.%A A. Rudoff
+.%T UNIX Network Programming, third edition
+.Re
+.Sh STANDARDS
+Most of the socket options are defined in RFC 2292 or RFC 2553.
+The
+.Dv IPV6_V6ONLY
+socket option is defined in RFC 3542.
+The
+.Dv IPV6_PORTRANGE
+socket option and the conflict resolution rule are not defined in the
+RFCs and should be considered implementation dependent.
diff --git a/share/man/man4/ipfirewall.4 b/share/man/man4/ipfirewall.4
new file mode 100644
index 0000000..e1c9a8a
--- /dev/null
+++ b/share/man/man4/ipfirewall.4
@@ -0,0 +1,97 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 1, 2006
+.Dt IPFW 4
+.Os
+.Sh NAME
+.Nm ipfw
+.Nd IP packet filter and traffic accounting
+.Sh SYNOPSIS
+To compile
+.Ns Nm
+into the kernel, place the following option in the kernel configuration
+file:
+.Bd -ragged -offset indent
+.Cd "options IPFIREWALL"
+.Ed
+.Pp
+Other kernel options related to
+.Ns Nm
+which may also be useful are:
+.Bd -ragged -offset indent
+.Cd "options IPFIREWALL_DEFAULT_TO_ACCEPT"
+.Cd "options IPFIREWALL_FORWARD"
+.Cd "options IPFIREWALL_VERBOSE"
+.Cd "options IPFIREWALL_VERBOSE_LIMIT=100"
+.Ed
+.Pp
+To load
+.Ns Nm
+as a module at boot time, add the following line into the
+.Xr loader.conf 5
+file:
+.Bd -literal -offset indent
+ipfw_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+system facility allows filtering,
+redirecting, and other operations on
+.Tn IP
+packets travelling through
+network interfaces.
+.Pp
+The default behavior of
+.Nm
+is to block all incoming and outgoing traffic.
+This behavior can be modified, to allow all traffic through the
+.Nm
+firewall by default, by enabling the
+.Dv IPFIREWALL_DEFAULT_TO_ACCEPT
+kernel option.
+This option may be useful when configuring
+.Nm
+for the first time.
+If the default
+.Nm
+behavior is to allow everything, it is easier to cope with
+firewall-tuning mistakes which may accidentally block all traffic.
+.Pp
+To enable logging of packets passing through
+.Nm ,
+enable the
+.Dv IPFIREWALL_VERBOSE
+kernel option.
+The
+.Dv IPFIREWALL_VERBOSE_LIMIT
+option will prevent
+.Xr syslogd 8
+from flooding system logs or causing local Denial of Service.
+This option may be set to the number of packets which will be logged on
+a per-entry basis before the entry is rate-limited.
+.Pp
+Policy routing and transparent forwarding features of
+.Nm
+can be enabled by
+.Dv IPFIREWALL_FORWARD
+kernel option.
+.Pp
+The user interface for
+.Nm
+is implemented by the
+.Xr ipfw 8
+utility, so please refer to the
+.Xr ipfw 8
+manpage for a complete description of the
+.Nm
+capabilities and how to use it.
+.Sh SEE ALSO
+.Xr setsockopt 2 ,
+.Xr divert 4 ,
+.Xr ip 4 ,
+.Xr ipfw 8 ,
+.Xr sysctl 8 ,
+.Xr syslogd 8 ,
+.Xr pfil 9
diff --git a/share/man/man4/ipmi.4 b/share/man/man4/ipmi.4
new file mode 100644
index 0000000..c34093a
--- /dev/null
+++ b/share/man/man4/ipmi.4
@@ -0,0 +1,201 @@
+.\"
+.\" Copyright (c) 2006 Tom Rhodes
+.\" 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$
+.\"
+.Dd July 10, 2007
+.Dt IPMI 4
+.Os
+.Sh NAME
+.Nm ipmi
+.Nd "OpenIPMI compatible IPMI interface driver"
+.Sh SYNOPSIS
+.Cd "device ipmi"
+.Pp
+To manually specify I/O attachment in
+.Pa /boot/device.hints :
+.Cd hint.ipmi.0.at="isa"
+.Cd hint.ipmi.0.port="0xCA2"
+.Cd hint.ipmi.0.spacing="8"
+.Cd hint.ipmi.0.mode="KCS"
+.Pp
+To manually specify memory attachment in
+.Pa /boot/device.hints :
+.Cd hint.ipmi.0.at="isa"
+.Cd hint.ipmi.0.maddr="0xf0000000"
+.Cd hint.ipmi.0.spacing="8"
+.Cd hint.ipmi.0.mode="SMIC"
+.Pp
+Meaning of
+.Ar spacing :
+.Bl -tag -offset indent -compact -width 0x0
+.It 8
+8 bit alignment
+.It 16
+16 bit alignment
+.It 32
+32 bit alignment
+.El
+.Pp
+If the
+.Ar port
+and
+.Ar spacing
+are not specified the interface type default will be used. Only specify
+either the
+.Ar port
+for I/O access or
+.Ar maddr
+for memory access.
+.Sh DESCRIPTION
+The
+.Tn IPMI
+(Intelligent Platform Management Interface) is a standard for
+monitoring system hardware by permitting generic code to detect
+and monitor the sensors in a system.
+The
+.Tn IPMI
+standard offers watchdog support, an FRU database, and other
+support extensions.
+It is currently being adopted by the makers of many
+single board and embedded system manufacturers.
+.Pp
+The
+.Nm
+driver in
+.Fx
+is heavily adopted from the standard and
+.Tn Linux
+driver; however, not all features described in the
+standard are supported.
+.Sh IOCTLS
+Sending and receiving messages through the
+.Nm
+driver requires the use of
+.Xr ioctl 2 .
+The ioctls are used due to the complexity of
+data sent to and from the device.
+The
+.Xr ioctl 2
+command codes below are defined in
+.In sys/ipmi.h .
+The third argument to
+.Xr ioctl 2
+should be a pointer to the type indicated.
+.Pp
+Currently the following ioctls are supported:
+.Bl -tag -width indent
+.It Dv IPMICTL_RECEIVE_MSG Pq Vt "struct ipmi_recv"
+Receive a message.
+Possible error values:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+No messages are in the process queue.
+.It Bq Er EFAULT
+An address supplied was invalid.
+.It Bq Er EMSGSIZE
+The address could not fit in the message buffer and
+will remain in the buffer.
+.El
+.It Dv IPMICTL_RECEIVE_MSG_TRUNC Pq Vt "struct ipmi_recv"
+Like
+.Dv IPMICTL_RECEIVE_MSG
+but if the message cannot fit into the buffer, it
+will truncate the contents instead of leaving the data
+in the buffer.
+.It Dv IPMICTL_SEND_COMMAND Pq Vt "struct ipmi_req"
+Send a message to the interface.
+Possible error values:
+.Bl -tag -width Er
+.It Bq Er EFAULT
+An address supplied was invalid
+.It Bq Er ENOMEM
+Buffers could not be allowed for the command, out of memory.
+.El
+.It Dv IPMICTL_SET_MY_ADDRESS_CMD Pq Vt "unsigned int"
+Set the slave address for source messages.
+.It Dv IPMICTL_GET_MY_ADDRESS_CMD Pq Vt "unsigned int"
+Get the slave address for source messages.
+.It Dv IPMICTL_SET_MY_LUN_CMD Pq Vt "unsigned int"
+Set the slave LUN for source messages.
+.It Dv IPMICTL_GET_MY_LUN_CMD Pq Vt "unsigned int"
+Get the slave LUN for source messages.
+.El
+.Ss Unimplemented Ioctls
+.Bl -tag -width indent
+.It Dv IPMICTL_REGISTER_FOR_CMD Pq Vt "struct ipmi_cmdspec"
+Register to receive a specific command
+Possible error values:
+.Bl -tag -width Er
+.It Bq Er EFAULT
+An supplied address was invalid.
+.It Bq Er EBUSY
+The network function/command is already in use.
+.It Bq Er ENOMEM
+Could not allocate memory.
+.El
+.It Dv IPMICTL_UNREGISTER_FOR_CMD Pq Vt "struct ipmi_cmdspec"
+Unregister to receive a specific command
+Possible error values:
+.Bl -tag -width Er
+.It Bq Er EFAULT
+An address supplied was invalid.
+.It Bq Er ENOENT
+The network function/command was not found.
+.El
+.El
+.Ss Stub Only Ioctl
+.Bl -tag -width indent
+.It Dv IPMICTL_SET_GETS_EVENTS_CMD Pq Vt int
+Set whether this interface receives events.
+Possible error values:
+.Bl -tag -width Er
+.It Bq Er EFAULT
+An address supplied was invalid.
+.El
+.El
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr watchdog 4 ,
+.Xr watchdog 8 ,
+.Xr watchdogd 8 ,
+.Xr watchdog 9
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Doug Ambrisko Aq ambrisko@FreeBSD.org .
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
+.Sh BUGS
+Not all features of the MontaVista driver are supported.
+.Pp
+Currently, IPMB and BT modes are not implemented.
diff --git a/share/man/man4/ips.4 b/share/man/man4/ips.4
new file mode 100644
index 0000000..26fc261
--- /dev/null
+++ b/share/man/man4/ips.4
@@ -0,0 +1,196 @@
+.\"
+.\" Copyright (c) 2003 Tom Rhodes
+.\" 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$
+.\"
+.Dd November 4, 2006
+.Dt IPS 4
+.Os
+.Sh NAME
+.Nm ips
+.Nd IBM/Adaptec ServeRAID controller driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device ips"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ips_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver claims to support the
+.Tn IBM
+(now Adaptec) ServeRAID series
+.Tn SCSI
+controller cards.
+.Pp
+These cards come with a built in configuration utility stored in
+the firmware known as the
+.Tn ISPR .
+This utility is accessed with the
+.Aq Em Ctrl+I
+key combination during the initial card
+.Tn POST .
+.Pp
+It is highly recommended that this utility be used to configure the card
+before attempting to diagnose the below error messages.
+.Pp
+In some cases, the
+.Nm
+driver can have difficulties attaching during
+the system initialization period.
+To avoid these difficulties, set the
+.Va hw.ips.0.disable
+tunable to 1.
+It will prevent the driver from attaching.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+IBM ServeRAID 3H
+.It
+ServeRAID 4L/4M/4H
+.It
+ServeRAID Series 5
+.It
+ServeRAID 6i/6M
+.It
+ServeRAID 7t/7k/7M
+.El
+.Sh DIAGNOSTICS
+Several error codes may be shown when the card initializes the
+.Tn IBM
+.Tn ISPR
+utility and are independent of
+.Fx .
+.Bl -diag
+.It ips%d: failed to get adapter configuration data from device
+.It ips%d: failed to get drive configuration data from device
+.Pp
+Unable to obtain adapter or drive configuration.
+.It ips%d iobuf error
+.Pp
+A buffer input/output error has occurred.
+.Bq Er ENXIO
+.El
+.Ss General adapter errors:
+.Bl -diag
+.It Attaching bus failed
+.Pp
+This message is undocumented.
+.It WARNING: command timeout. Adapter is in toaster mode, resetting
+.Pp
+A command timeout has caused the adapter to be reset.
+.It AIEE! adapter reset failed, giving up and going home! Have a nice day
+.Pp
+An error occurred while attempting to reset the adapter.
+.It unable to get adapter configuration
+.It unable to get drive configuration
+.Pp
+There was an error when attempting to get configuration information.
+.It Adapter error during initialization.
+.It adapter initialization failed
+.Pp
+There was an error while attempting to initialize the adapter.
+.It adapter failed config check
+.It adapter clear failed
+.Pp
+There was an error while checking the adapter.
+.It device is disabled
+.Pp
+The adapter is disabled.
+.It resource allocation failed
+.It irq allocation failed
+.It irq setup failed
+.Pp
+The driver was unable to allocate resources for the device.
+.El
+.Ss Error messages due to DMA:
+.Bl -diag
+.It can't alloc command dma tag
+.It can't alloc SG dma tag
+.It can't alloc dma tag for statue queue
+.It dmamap failed
+.Pp
+Failure to map or allocate DMA resources.
+.El
+.Ss Cache, buffer, and command errors:
+.Bl -diag
+.It failed to initialize command buffers
+.It no mem for command slots!
+.Pp
+The
+.Nm
+driver will return
+.Bq Er ENOMEM
+in such cases.
+.It ERROR: unable to get a command! can't flush cache!
+.It ERROR: cache flush command failed!
+.It ERROR: unable to get a command! can't update nvram
+.It ERROR: nvram update command failed!
+.It ERROR: unable to get a command! can't sync cache!
+.It ERROR: cache sync command failed!
+.It ERROR: unable to get a command! can't sync cache!
+.It ERROR: etable command failed!
+.El
+.Sh COMPATIBILITY
+Unlike many of the other
+.Tn SCSI
+devices in
+.Fx ,
+the
+.Nm
+driver does not use the
+.Xr cam 4
+.Tn SCSI
+subsystem.
+.Sh SEE ALSO
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr sysctl 8
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An -nosplit
+.An David Jefferys
+and
+.An Scott Long Aq scottl@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man4/ipsec.4 b/share/man/man4/ipsec.4
new file mode 100644
index 0000000..4bc45d6
--- /dev/null
+++ b/share/man/man4/ipsec.4
@@ -0,0 +1,411 @@
+.\" $KAME: ipsec.4,v 1.17 2001/06/27 15:25:10 itojun Exp $
+.\"
+.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE 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.
+.\" 3. Neither the name of the project 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 PROJECT 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 PROJECT 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$
+.\"
+.Dd August 5, 2007
+.Dt IPSEC 4
+.Os
+.Sh NAME
+.Nm IPsec
+.Nd Internet Protocol Security protocol
+.Sh SYNOPSIS
+.Cd "options IPSEC"
+.Cd "options IPSEC_FILTERTUNNEL"
+.Cd "device crypto"
+.Pp
+.In sys/types.h
+.In netinet/in.h
+.In netipsec/ipsec.h
+.In netipsec/ipsec6.h
+.Sh DESCRIPTION
+.Nm
+is a security protocol implemented within the Internet Protocol layer
+of the networking stack.
+.Nm
+is defined for both IPv4 and IPv6
+.Xr ( inet 4
+and
+.Xr inet6 4 ) .
+.Nm
+is a set of protocols,
+.Tn ESP
+(for Encapsulating Security Payload)
+.Tn AH
+(for Authentication Header),
+and
+.Tn IPComp
+(for IP Payload Compression Protocol)
+that provide security services for IP datagrams.
+AH both authenticates and guarantees the integrity of an IP packet
+by attaching a cryptographic checksum computed using one-way hash functions.
+ESP, in addition, prevents unauthorized parties from reading the payload of
+an IP packet by also encrypting it.
+IPComp tries to increase communication performance by compressing IP payload,
+thus reducing the amount of data sent.
+This will help nodes on slow links but with enough computing power.
+.Nm
+operates in one of two modes: transport mode or tunnel mode.
+Transport mode is used to protect peer-to-peer communication between end nodes.
+Tunnel mode encapsulates IP packets within other IP packets
+and is designed for security gateways such as VPN endpoints.
+.Pp
+System configuration requires the
+.Xr crypto 4
+subsystem.
+.Pp
+The packets can be passed to a virtual
+.Xr enc 4
+interface,
+to perform packet filtering before outbound encryption and after decapsulation
+inbound.
+.Pp
+To properly filter on the inner packets of an
+.Nm
+tunnel with firewalls, add
+.Cd "options IPSEC_FILTERTUNNEL"
+to the kernel configuration file.
+.\"
+.Ss Kernel interface
+.Nm
+is controlled by a key management and policy engine,
+that reside in the operating system kernel.
+Key management
+is the process of associating keys with security associations, also
+know as SAs.
+Policy management dictates when new security
+associations created or destroyed.
+.Pp
+The key management engine can be accessed from userland by using
+.Dv PF_KEY
+sockets.
+The
+.Dv PF_KEY
+socket API is defined in RFC2367.
+.Pp
+The policy engine is controlled by an extension to the
+.Dv PF_KEY
+API,
+.Xr setsockopt 2
+operations, and
+.Xr sysctl 3
+interface.
+The kernel implements
+an extended version of the
+.Dv PF_KEY
+interface and allows the programmer to define IPsec policies
+which are similar to the per-packet filters.
+The
+.Xr setsockopt 2
+interface is used to define per-socket behavior, and
+.Xr sysctl 3
+interface is used to define host-wide default behavior.
+.Pp
+The kernel code does not implement a dynamic encryption key exchange protocol
+such as IKE
+(Internet Key Exchange).
+Key exchange protocols are beyond what is necessary in the kernel and
+should be implemented as daemon processes which call the
+.Nm APIs.
+.\"
+.Ss Policy management
+IPsec policies can be managed in one of two ways, either by
+configuring per-socket policies using the
+.Xr setsockopt 2
+system calls, or by configuring kernel level packet filter-based
+policies using the
+.Dv PF_KEY
+interface, via the
+.Xr setkey 8
+you can define IPsec policies against packets using rules similar to packet
+filtering rules.
+Refer to
+.Xr setkey 8
+on how to use it.
+.Pp
+When setting policies using the
+.Xr setkey 8
+command, the
+.Dq Li default
+option instructs the system to use its default policy, as
+explained below, for processing packets.
+The following sysctl variables are available for configuring the
+system's IPsec behavior.
+The variables can have one of two values.
+A
+.Li 1
+means
+.Dq Li use ,
+which means that if there is a security association then use it but if
+there is not then the packets are not processed by IPsec.
+The value
+.Li 2
+is synonymous with
+.Dq Li require ,
+which requires that a security association must exist for the packets
+to move, and not be dropped.
+These terms are defined in
+.Xr ipsec_set_policy 8 .
+.Bl -column net.inet6.ipsec6.esp_trans_deflev integerxxx
+.It Sy "Name Type Changeable"
+.It "net.inet.ipsec.esp_trans_deflev integer yes"
+.It "net.inet.ipsec.esp_net_deflev integer yes"
+.It "net.inet.ipsec.ah_trans_deflev integer yes"
+.It "net.inet.ipsec.ah_net_deflev integer yes"
+.It "net.inet6.ipsec6.esp_trans_deflev integer yes"
+.It "net.inet6.ipsec6.esp_net_deflev integer yes"
+.It "net.inet6.ipsec6.ah_trans_deflev integer yes"
+.It "net.inet6.ipsec6.ah_net_deflev integer yes"
+.El
+.Pp
+If the kernel does not find a matching, system wide, policy then the
+default value is applied.
+The system wide default policy is specified
+by the following
+.Xr sysctl 8
+variables.
+.Li 0
+means
+.Dq Li discard
+which asks the kernel to drop the packet.
+.Li 1
+means
+.Dq Li none .
+.Bl -column net.inet6.ipsec6.def_policy integerxxx
+.It Sy "Name Type Changeable"
+.It "net.inet.ipsec.def_policy integer yes"
+.It "net.inet6.ipsec6.def_policy integer yes"
+.El
+.\"
+.Ss Miscellaneous sysctl variables
+When the
+.Nm
+protocols are configured for use, all protocols are included in the system.
+To selectively enable/disable protocols, use
+.Xr sysctl 8 .
+.Bl -column net.inet.ipcomp.ipcomp_enable
+.It Sy "Name Default"
+.It "net.inet.esp.esp_enable On"
+.It "net.inet.ah.ah_enable On"
+.It "net.inet.ipcomp.ipcomp_enable Off"
+.El
+.Pp
+In addition the following variables are accessible via
+.Xr sysctl 8 ,
+for tweaking the kernel's IPsec behavior:
+.Bl -column net.inet6.ipsec6.inbonud_call_ike integerxxx
+.It Sy "Name Type Changeable"
+.It "net.inet.ipsec.ah_cleartos integer yes"
+.It "net.inet.ipsec.ah_offsetmask integer yes"
+.It "net.inet.ipsec.dfbit integer yes"
+.It "net.inet.ipsec.ecn integer yes"
+.It "net.inet.ipsec.debug integer yes"
+.It "net.inet6.ipsec6.ecn integer yes"
+.It "net.inet6.ipsec6.debug integer yes"
+.El
+.Pp
+The variables are interpreted as follows:
+.Bl -tag -width 6n
+.It Li ipsec.ah_cleartos
+If set to non-zero, the kernel clears the type-of-service field in the IPv4 header
+during AH authentication data computation.
+This variable is used to get current systems to inter-operate with devices that
+implement RFC1826 AH.
+It should be set to non-zero
+(clear the type-of-service field)
+for RFC2402 conformance.
+.It Li ipsec.ah_offsetmask
+During AH authentication data computation, the kernel will include a
+16bit fragment offset field
+(including flag bits)
+in the IPv4 header, after computing logical AND with the variable.
+The variable is used for inter-operating with devices that
+implement RFC1826 AH.
+It should be set to zero
+(clear the fragment offset field during computation)
+for RFC2402 conformance.
+.It Li ipsec.dfbit
+This variable configures the kernel behavior on IPv4 IPsec tunnel encapsulation.
+If set to 0, the DF bit on the outer IPv4 header will be cleared while
+1 means that the outer DF bit is set regardless from the inner DF bit and
+2 indicates that the DF bit is copied from the inner header to the
+outer one.
+The variable is supplied to conform to RFC2401 chapter 6.1.
+.It Li ipsec.ecn
+If set to non-zero, IPv4 IPsec tunnel encapsulation/decapsulation behavior will
+be friendly to ECN
+(explicit congestion notification),
+as documented in
+.Li draft-ietf-ipsec-ecn-02.txt .
+.Xr gif 4
+talks more about the behavior.
+.It Li ipsec.debug
+If set to non-zero, debug messages will be generated via
+.Xr syslog 3 .
+.El
+.Pp
+Variables under the
+.Li net.inet6.ipsec6
+tree have similar meanings to those described above.
+.\"
+.Sh PROTOCOLS
+The
+.Nm
+protocol acts as a plug-in to the
+.Xr inet 4
+and
+.Xr inet6 4
+protocols and therefore supports most of the protocols defined upon
+those IP-layer protocols.
+The
+.Xr icmp 4
+and
+.Xr icmp6 4
+protocols may behave differently with
+.Nm
+because
+.Nm
+can prevent
+.Xr icmp 4
+or
+.Xr icmp6 4
+routines from looking into the IP payload.
+.\"
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr socket 2 ,
+.Xr ipsec_set_policy 3 ,
+.Xr crypto 4 ,
+.Xr enc 4 ,
+.Xr icmp6 4 ,
+.Xr intro 4 ,
+.Xr ip6 4 ,
+.Xr setkey 8 ,
+.Xr sysctl 8
+.\".Xr racoon 8
+.Rs
+.%A "S. Kent"
+.%A "R. Atkinson"
+.%T "IP Authentication Header"
+.%O "RFC 2404"
+.Re
+.Rs
+.%A "S. Kent"
+.%A "R. Atkinson"
+.%T "IP Encapsulating Security Payload (ESP)"
+.%O "RFC 2406"
+.Re
+.Sh STANDARDS
+.Rs
+.%A Daniel L. McDonald
+.%A Craig Metz
+.%A Bao G. Phan
+.%T "PF_KEY Key Management API, Version 2"
+.%R RFC
+.%N 2367
+.Re
+.Pp
+.Rs
+.%A "D. L. McDonald"
+.%T "A Simple IP Security API Extension to BSD Sockets"
+.%R internet draft
+.%N "draft-mcdonald-simple-ipsec-api-03.txt"
+.%O work in progress material
+.Re
+.Sh HISTORY
+The original
+.Nm
+implementation appeared in the WIDE/KAME IPv6/IPsec stack.
+.Pp
+For
+.Fx 5.0
+a fully locked IPsec implementation called fast_ipsec was brought in.
+The protocols drew heavily on the
+.Ox
+implementation of the
+.Tn IPsec
+protocols.
+The policy management code was derived from the
+.Tn KAME
+implementation found
+in their
+.Tn IPsec
+protocols.
+The fast_ipsec implementation lacked
+.Xr ip6 4
+support but made use of the
+.Xr crypto 4
+subsystem.
+.Pp
+For
+.Fx 7.0
+.Xr ip6 4
+support was added to fast_ipsec.
+After this the old KAME IPsec implementation was dropped and fast_ipsec
+became what now is the only
+.Nm
+implementation in
+.Fx .
+.Sh BUGS
+There is no single standard for the policy engine API,
+so the policy engine API described herein is just for this implementation.
+.Pp
+AH and tunnel mode encapsulation may not work as you might expect.
+If you configure inbound
+.Dq require
+policy with an AH tunnel or any IPsec encapsulating policy with AH
+(like
+.Dq Li esp/tunnel/A-B/use ah/transport/A-B/require ) ,
+tunnelled packets will be rejected.
+This is because the policy check is enforced on the inner packet on reception,
+and AH authenticates encapsulating
+(outer)
+packet, not the encapsulated
+(inner)
+packet
+(so for the receiving kernel there is no sign of authenticity).
+The issue will be solved when we revamp our policy engine to keep all the
+packet decapsulation history.
+.Pp
+When a large database of security associations or policies is present
+in the kernel the
+.Dv SADB_DUMP
+and
+.Dv SADB_SPDDUMP
+operations on
+.Dv PF_KEY
+sockets may fail due to lack of space.
+Increasing the socket buffer
+size may alleviate this problem.
+.Pp
+The
+.Tn IPcomp
+protocol support is currently broken.
+.Pp
+This documentation needs more review.
diff --git a/share/man/man4/ipw.4 b/share/man/man4/ipw.4
new file mode 100644
index 0000000..30293f0
--- /dev/null
+++ b/share/man/man4/ipw.4
@@ -0,0 +1,156 @@
+.\" Copyright (c) 2004-2006
+.\" Damien Bergamini <damien.bergamini@free.fr>. 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 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$
+.\"
+.Dd April 13, 2008
+.Os
+.Dt IPW 4
+.Sh NAME
+.Nm ipw
+.Nd "Intel PRO/Wireless 2100 IEEE 802.11 driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ipw"
+.Cd "device ipwfw"
+.Cd "device pci"
+.Cd "device wlan"
+.Cd "device firmware"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ipw_load="YES"
+.Ed
+.Pp
+In both cases, place the following line in
+.Xr loader.conf 5
+to acknowledge the firmware license (see below):
+.Bd -literal -offset indent
+legal.intel_ipw.license_ack=1
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn Intel
+PRO/Wireless 2100 MiniPCI network adapter.
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+This driver requires the firmware built with the
+.Nm ipwfw
+module to work.
+For the loaded firmware to be enabled for use the license at
+.Pa /usr/share/doc/legal/intel_ipw/LICENSE
+must be agreed by adding the following line to
+.Xr loader.conf 5 :
+.Pp
+.Dl "legal.intel_ipw.license_ack=1"
+.Sh FILES
+.Bl -tag -width ".Pa /usr/share/doc/legal/intel_ipw/LICENSE" -compact
+.It Pa /usr/share/doc/legal/intel_ipw/LICENSE
+.Nm
+firmware license
+.El
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ipw0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev ipw0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ipw0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Pp
+Join a specific BSS network with 128-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ipw0 wlanmode adhoc ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ipw%d: device timeout"
+The driver will reset the hardware.
+This should not happen.
+.It "ipw%d: firmware error"
+The onboard microcontroller crashes for some reason.
+The driver will reset the hardware.
+This should not happen.
+.It "ipw%d: timeout waiting for firmware initialization to complete"
+The onboard microcontroller failed to initialize in time.
+This should not happen.
+.It "ipw%d: could not load firmware image '%s'"
+The driver failed to load the firmware image using the
+.Xr firmware 9
+subsystem.
+Verify the
+.Xr ipwfw 4
+firmware module is installed and the license agreement
+.Xr loader 8
+tunable has been set.
+.It "ipw%d: could not load microcode"
+An attempt to upload the microcode image to the onboard microcontroller failed.
+This should not happen.
+.It "ipw%d: could not load firmware"
+An attempt to upload the firmware image to the onboard microcontroller failed.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr ipwfw 4 ,
+.Xr pci 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8 .
+.Sh AUTHORS
+The original
+.Nm
+driver was written by
+.An Damien Bergamini Aq damien.bergamini@free.fr
diff --git a/share/man/man4/iscsi_initiator.4 b/share/man/man4/iscsi_initiator.4
new file mode 100644
index 0000000..1697b2f
--- /dev/null
+++ b/share/man/man4/iscsi_initiator.4
@@ -0,0 +1,105 @@
+.\" Copyright (c) 2007 Daniel Braniss <danny@cs.huji.ac.il>
+.\" 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$
+.\"
+.Dd February 23, 2007
+.Os
+.Dt ISCSI_INITIATOR 4
+.Sh NAME
+.Nm iscsi_initiator
+.Nd kernel driver for the iSCSI protocol
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device iscsi_initiator"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+iscsi_initiator_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+implements the kernel side of the Internet SCSI (iSCSI) network
+protocol standard, the user land companion is
+.Xr iscontrol 8 ,
+and permits access to remote
+.Em virtual
+SCSI devices via
+.Xr cam 4 .
+.Sh SYSCTL VARIABLES
+.Bl -tag -width ".Va net.iscsi.n.targeaddress"
+.It Va debug.iscsi_initiator
+set the debug-level, 0 means no debugging, 9 for maximum.
+.It Va net.iscsi.isid
+the initiator part of the Session Identifier.
+.It "the following are informative only:"
+.It Va net.iscsi.driver_version
+the current version of the driver.
+.It Va net.iscsi.sessions
+the number of current active sessions.
+.It Va net.iscsi.n.targetname
+is the targe name of session
+.Em n .
+.It Va net.iscsi.n.targeaddress
+is the IP address of the target of session
+.Em n .
+.It Va net.iscsi.n.stats
+are some statistics for session
+.EM n
+.It Va net.iscsi.n.pid
+is the
+.Em "process id"
+of the userland side of session
+.Em n ,
+see
+.Xr iscontrol 8 .
+.El
+.Sh FILES
+The
+.Nm
+driver creates the following:
+.Bl -tag -width ".Pa /dev/iscsi%dxx" -compact
+.Pp
+.It Pa /dev/iscsi
+used to create new sessions.
+.It Pa /dev/iscsi%d
+for each new session.
+.El
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr camcontrol 8 ,
+.Xr iscontrol 8
+.Sh STANDARDS
+iSCSI RFC 3720
+.\" .Sh HISTORY
+.\" .Sh AUTHORS
+.Sh BUGS
+The lun discovery method is old-fashioned.
diff --git a/share/man/man4/isp.4 b/share/man/man4/isp.4
new file mode 100644
index 0000000..68c25cc
--- /dev/null
+++ b/share/man/man4/isp.4
@@ -0,0 +1,240 @@
+.\" $NetBSD: isp.4,v 1.5 1999/12/18 18:33:05 mjacob Exp $
+.\"
+.\" Copyright (c) 1998, 1999, 2001
+.\" Matthew Jacob, for 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. 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.
+.\"
+.\" Additional Copyright (c) 2006 by Marcus Alves Grando
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 28, 2007
+.Dt ISP 4
+.Os
+.Sh NAME
+.Nm isp
+.Nd Qlogic based SCSI and FibreChannel SCSI Host Adapters
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device isp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+isp_load="YES"
+.Ed
+.Sh DESCRIPTION
+This driver provides access to
+.Tn SCSI
+or
+.Tn FibreChannel
+devices.
+.Pp
+SCSI features include support for Ultra SCSI and wide mode transactions
+for
+.Tn SCSI ,
+Ultra2 LVD (for the ISP1080 and ISP1280), and Ultra3 LVD (for the
+ISP12160).
+.Pp
+Fibre Channel support uses FCP SCSI profile for
+.Tn FibreChannel .
+and utilizes Class 3 and Class 2 connections (Qlogic 2100 is Class
+3 only, minor patches to the Qlogic 2200 to force Class 2 mode).
+Support is available for Public and Private loops, and for
+point-to-point connections (Qlogic 2200 only).
+The newer 2-Gigabit cards (2300, 2312, 2322) and 4-Gigabit (2422, 2432)
+are also supported.
+Command tagging is
+supported for all (in fact,
+.Tn FibreChannel
+requires tagging).
+Fabric support is enabled by default for other than 2100 cards.
+Fabric
+support for 2100 cards has been so problematic and these cards are so
+old now that it is just not worth your time to try it.
+.Sh FIRMWARE
+Firmware is available if the
+.Xr ispfw 4
+module is loaded during bootstrap (q.v.).
+.Pp
+It is
+.Ar strongly
+recommended that you use the firmware available
+from
+.Xr ispfw 4
+as it is the most likely to have been tested with this driver.
+.Sh HARDWARE
+Cards supported by the
+.Nm
+driver include:
+.Pp
+.Bl -tag -width xxxxxx -offset indent
+.It ISP1000
+SBus Fast Wide, Ultra Fast Wide cards, Single Ended or Differential
+cards.
+.It ISP1020
+Qlogic 1020 Fast Wide and Differential Fast Wide PCI cards.
+.It ISP1040
+Qlogic 1040 Ultra Wide and Differential Ultra Wide PCI cards.
+Also known as the DEC KZPBA-CA (single ended) and KZPBA-CB (HVD differential).
+.It Qlogic 1240
+Qlogic 1240 Dual Bus Ultra Wide and Differential Ultra Wide PCI
+cards.
+.It Qlogic 1020
+Qlogic 1020 SCSI cards.
+.It Qlogic 1040
+Qlogic 1040 Ultra SCSI cards.
+.It Qlogic 1080
+Qlogic 1280 LVD Ultra2 Wide PCI cards.
+.It Qlogic 1280
+Qlogic 1280 Dual Bus LVD Ultra2 Wide PCI cards.
+.It Qlogic 12160
+Qlogic 12160 Dual Bus LVD Ultra3 Wide PCI cards.
+.It Qlogic 210X
+Qlogic 2100 and 2100A Copper and Optical Fibre Channel Arbitrated
+Loop (single, dual).
+.It Qlogic 220X
+Qlogic 2200 Copper and Optical Fibre Channel Arbitrated Loop PCI
+cards (single, dual, quad).
+.It Qlogic 2300
+Qlogic 2300 Optical Fibre Channel PCI cards.
+.It Qlogic 2312
+Qlogic 2312 Optical Fibre Channel PCI cards.
+.It Qlogic 234X
+Qlogic 234X Optical Fibre Channel PCI cards (2312 chipset, single and dual attach).
+.It Qlogic 2322
+Qlogic 2322 Optical Fibre Channel PCIe cards.
+.It Qlogic 200
+Dell Branded version of the QLogic 2312 Fibre Channel PCI cards.
+.It Qlogic 2422
+Qlogic 2422 Optical Fibre Channel PCI cards (4 Gigabit)
+.It Qlogic 2432
+Qlogic 2432 Optical Fibre Channel PCIe cards (4 Gigabit)
+.El
+.Sh CONFIGURATION OPTIONS
+.Pp
+Target mode support may be enabled with the
+.Pp
+.Cd options ISP_TARGET_MODE
+.Pp
+option.
+.Sh BOOT OPTIONS
+The following options are switchable by setting values in
+.Pa /boot/device.hints .
+.Pp
+They are:
+.Bl -tag -width indent
+.It Va hint.isp.0.disable
+A hint value to disable driver in kernel.
+.It Va hint.isp.0.fwload_disable
+A hint value to disable loading of firmware
+.Xr ispfw 4 .
+.It Va hint.isp.0.prefer_memmap
+A hint value to use PCI memory space instead of I/O space
+access for.
+.It Va hint.isp.0.prefer_iomap
+A hint value to use PCI I/O space instead of Memory space
+access for.
+.It Va hint.isp.0.ignore_nvram
+A hint value to ignore board NVRAM settings for.
+Otherwise use NVRAM settings.
+.It Va hint.isp.0.fullduplex
+A hint value to set full duplex mode.
+.It Va hint.isp.0.topology
+A hint value to select topology of connection.
+Supported values are:
+.Pp
+.Bl -tag -width ".Li lport-only" -compact
+.It Li lport
+Prefer loopback and fallback to point to point.
+.It Li nport
+Prefer point to point and fallback to loopback.
+.It Li lport-only
+Loopback only.
+.It Li nport-only
+Point to point only.
+.El
+.It Va hint.isp.0.portwwn
+This should be the full 64 bit World Wide Port Name you would like
+to use, overriding the value in NVRAM for the card.
+.It Va hint.isp.0.nodewwn
+This should be the full 64 bit World Wide Node Name you would like
+to use, overriding the value in NVRAM for the card.
+.It Va hint.isp.0.iid
+A hint to override or set the Initiator ID or Loop ID.
+For Fibre Channel
+cards in Local Loop topologies it is
+.Ar strongly
+recommended that you set this value to non-zero.
+.It Va hint.isp.0.role
+A hint to define default role for isp instance (target, initiator, both).
+.It Va hint.isp.0.debug
+A hint value for a driver debug level (see the file
+.Pa /usr/src/sys/dev/isp/ispvar.h
+for the values.
+.El
+.Sh SYSCTL OPTIONS
+.Pp
+.Bl -tag -width indent
+.It Va dev.isp.N.loop_down_limit
+This value says how long to wait in seconds after loop has gone down before
+giving up and expiring all of the devices that were visible.
+The default is 300 seconds (5 minutes).
+A seperate (nonadjustable) timeout is used when
+booting to not stop booting on lack of FC connectivity.
+.It Va dev.isp.N.gone_device_time
+This value says how long to wait for devices to reappear if they (temporarily)
+disappear due to loop or fabric events.
+While this timeout is running, I/O
+to those devices will simply be held.
+.It Va dev.isp.N.wwnn
+This is the readonly World Wide Node Name value for this port.
+.It Va dev.isp.N.wwpn
+This is the readonly World Wide Port Name value for this port.
+.El
+.Sh SEE ALSO
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr ispfw 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh AUTHORS
+The
+.Nm
+driver was written by Matthew Jacob originally for NetBSD at
+NASA/Ames Research Center.
+.Sh BUGS
+The driver currently ignores some NVRAM settings.
+.Pp
+Target mode support is not completely reliable yet.
+It works reasonably
+well for Fibre Channel, somewhat well for Qlogic 1040 cards, but
+does not yet work for the other cards (due to last minute unannounced
+changes in firmware interfaces).
diff --git a/share/man/man4/ispfw.4 b/share/man/man4/ispfw.4
new file mode 100644
index 0000000..5755501
--- /dev/null
+++ b/share/man/man4/ispfw.4
@@ -0,0 +1,59 @@
+.\" Copyright (c) 2000
+.\" Matthew Jacob
+.\"
+.\" 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. 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$
+.\"
+.Dd July 20, 2000
+.Dt ISPFW 4
+.Os
+.Sh NAME
+.Nm ispfw
+.Nd "Firmware Module for Qlogic based SCSI and FibreChannel SCSI Host Adapters"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ispfw"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ispfw_load="YES"
+.Ed
+.Sh DESCRIPTION
+This trivial driver provides access to firmware sets for the Qlogic
+based SCSI and FibreChannel SCSI Host Adapters.
+It may either be
+statically linked into the kernel, or loaded as a module.
+In either
+case, the
+.Xr isp 4
+driver will notice that firmware is available to be downloaded onto
+Qlogic cards (to replace the usually out of date firmware on the cards).
+This will kick the f/w into getting unstuck.
+.Sh SEE ALSO
+.Xr isp 4
+.Sh AUTHORS
+This driver was written by Matthew Jacob.
diff --git a/share/man/man4/iwi.4 b/share/man/man4/iwi.4
new file mode 100644
index 0000000..8f82df2
--- /dev/null
+++ b/share/man/man4/iwi.4
@@ -0,0 +1,161 @@
+.\" Copyright (c) 2004-2006
+.\" Damien Bergamini <damien.bergamini@free.fr>. 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 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$
+.\"
+.Dd Apri 13, 2008
+.Os
+.Dt IWI 4
+.Sh NAME
+.Nm iwi
+.Nd "Intel PRO/Wireless 2200BG/2225BG/2915ABG IEEE 802.11 driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+include the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device iwi"
+.Cd "device iwifw"
+.Cd "device pci"
+.Cd "device wlan"
+.Cd "device firmware"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_iwi_load="YES"
+.Ed
+.Pp
+In both cases, place the following line in
+.Xr loader.conf 5
+to acknowledge the firmware license (see below):
+.Bd -literal -offset indent
+legal.intel_iwi.license_ack=1
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for
+.Tn Intel
+PRO/Wireless 2200BG/2915ABG MiniPCI and 2225BG PCI network adapters.
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+This driver requires the firmware built with the
+.Nm iwifw
+module to work.
+For the loaded firmware to be enabled for use the license at
+.Pa /usr/share/doc/legal/intel_iwi/LICENSE
+must be agreed by adding the following line to
+.Xr loader.conf 5 :
+.Pp
+.Dl "legal.intel_iwi.license_ack=1"
+.Sh FILES
+.Bl -tag -width ".Pa /usr/share/doc/legal/intel_iwi/LICENSE" -compact
+.It Pa /usr/share/doc/legal/intel_iwi/LICENSE
+.Nm
+firmware license
+.El
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev iwi0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev iwi0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev iwi0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Pp
+Join a specific BSS network with 128-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev iwi0 wlanmode adhoc ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "iwi%d: device timeout"
+The driver will reset the hardware.
+This should not happen.
+.It "iwi%d: firmware error"
+The onboard microcontroller crashed for some reason.
+The driver will reset the hardware.
+This should not happen.
+.It "iwi%d: timeout waiting for firmware initialization to complete"
+The onboard microcontroller failed to initialize in time.
+This should not happen.
+.It "iwi%d: could not load firmware image '%s'"
+The driver failed to load the firmware image using the
+.Xr firmware 9
+subsystem.
+Verify the
+.Xr iwifw 4
+firmware module is installed and the license agreement
+.Xr loader 8
+tunable has been set.
+.It "iwi%d: could not load boot firmware"
+An attempt to upload the boot firmware image to the onboard microcontroller
+failed.
+This should not happen.
+.It "iwi%d: could not load microcode"
+An attempt to upload the microcode image to the onboard microcontroller failed.
+This should not happen.
+.It "iwi%d: could not load main firmware"
+An attempt to upload the main firmware image to the onboard microcontroller
+failed.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr iwifw 4 ,
+.Xr pci 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8 .
+.Sh AUTHORS
+The original
+.Nm
+driver was written by
+.An Damien Bergamini Aq damien.bergamini@free.fr
diff --git a/share/man/man4/iwn.4 b/share/man/man4/iwn.4
new file mode 100644
index 0000000..26f1627
--- /dev/null
+++ b/share/man/man4/iwn.4
@@ -0,0 +1,161 @@
+.\" Copyright (c) 2004-2006
+.\" Damien Bergamini <damien.bergamini@free.fr>. 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 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$
+.\"
+.Dd April 13, 2008
+.Os
+.Dt IWN 4
+.Sh NAME
+.Nm iwn
+.Nd "Intel Wireless WiFi Link 4965AGN IEEE 802.11n driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+include the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device iwn"
+.Cd "device iwnfw"
+.Cd "device pci"
+.Cd "device wlan"
+.Cd "device firmware"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_iwn_load="YES"
+.Ed
+.Pp
+In both cases, place the following line in
+.Xr loader.conf 5
+to acknowledge the firmware license (see below):
+.Bd -literal -offset indent
+legal.intel_iwn.license_ack=1
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for
+.Tn Intel
+Wireless WiFi Link 4965AGN PCI-Express network adapters.
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+This driver requires the firmware built with the
+.Nm iwnfw
+module to work.
+For the loaded firmware to be enabled for use the license at
+.Pa /usr/share/doc/legal/intel_iwn/LICENSE
+must be agreed by adding the following line to
+.Xr loader.conf 5 :
+.Pp
+.Dl "legal.intel_iwn.license_ack=1"
+.Sh FILES
+.Bl -tag -width ".Pa /usr/share/doc/legal/intel_iwn/LICENSE" -compact
+.It Pa /usr/share/doc/legal/intel_iwn/LICENSE
+.Nm
+firmware license
+.El
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev iwn0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev iwn0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev iwn0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Pp
+Join a specific BSS network with 128-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev iwn0 wlanmode adhoc ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "iwn%d: device timeout"
+The driver will reset the hardware.
+This should not happen.
+.It "iwn%d: firmware error"
+The onboard microcontroller crashed for some reason.
+The driver will reset the hardware.
+This should not happen.
+.It "iwn%d: timeout waiting for firmware initialization to complete"
+The onboard microcontroller failed to initialize in time.
+This should not happen.
+.It "iwn%d: could not load firmware image '%s'"
+The driver failed to load the firmware image using the
+.Xr firmware 9
+subsystem.
+Verify the
+.Xr iwnfw 4
+firmware module is installed and the license agreement
+.Xr loader 8
+tunable has been set.
+.It "iwn%d: could not load boot firmware"
+An attempt to upload the boot firmware image to the onboard microcontroller
+failed.
+This should not happen.
+.It "iwn%d: could not load microcode"
+An attempt to upload the microcode image to the onboard microcontroller failed.
+This should not happen.
+.It "iwn%d: could not load main firmware"
+An attempt to upload the main firmware image to the onboard microcontroller
+failed.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr iwnfw 4 ,
+.Xr pci 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8
+.Sh AUTHORS
+The original
+.Nm
+driver was written by
+.An Damien Bergamini Aq damien.bergamini@free.fr
diff --git a/share/man/man4/ixgb.4 b/share/man/man4/ixgb.4
new file mode 100644
index 0000000..adb51d4
--- /dev/null
+++ b/share/man/man4/ixgb.4
@@ -0,0 +1,125 @@
+.\" Copyright (c) 2001-2004, Intel 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. Neither the name of the Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+.\"
+.\" * Other names and brands may be claimed as the property of others.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 18, 2006
+.Dt IXGB 4
+.Os
+.Sh NAME
+.Nm ixgb
+.Nd "Intel(R) PRO/10GbE Ethernet driver for the FreeBSD operating system"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ixgb"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ixgb_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Gigabit Ethernet adapters based on
+the Intel 82597EX Ethernet controller chips.
+The driver supports Transmit/Receive checksum offload
+and Jumbo Frames.
+.Pp
+For questions related to hardware requirements,
+refer to the documentation supplied with your Intel PRO/10GbE adapter.
+All hardware requirements listed apply to use with
+.Fx .
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+The maximum MTU size for Jumbo Frames is 16114.
+.Pp
+This driver version supports VLANs.
+For information on enabling VLANs, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+Intel PRO/10GbE LR Server Adapter
+.It
+Intel PRO/10GbE SR Server Adapter
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ixgb%d: Unable to allocate bus resource: memory"
+A fatal initialization error has occurred.
+.It "ixgb%d: Unable to allocate bus resource: interrupt"
+A fatal initialization error has occurred.
+.It "ixgb%d: watchdog timeout -- resetting"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SUPPORT
+For general information and support,
+go to the Intel support website at:
+.Pa http://support.intel.com .
+.Pp
+If an issue is identified with the released source code on the supported kernel
+with a supported adapter, email the specific information related to the
+issue to
+.Aq freebsdnic@mailbox.intel.com .
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr em 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.11
+and
+.Fx 5.3 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Intel Corporation Aq freebsdnic@mailbox.intel.com .
diff --git a/share/man/man4/ixgbe.4 b/share/man/man4/ixgbe.4
new file mode 100644
index 0000000..0835eba
--- /dev/null
+++ b/share/man/man4/ixgbe.4
@@ -0,0 +1,125 @@
+.\" Copyright (c) 2001-2008, Intel 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. Neither the name of the Intel Corporation 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+.\"
+.\" * Other names and brands may be claimed as the property of others.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 11, 2008
+.Dt IXGBE 4
+.Os
+.Sh NAME
+.Nm ixgbe
+.Nd "Intel(R) 10Gb Ethernet driver for the FreeBSD operating system"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ixgbe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ixgbe_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI 10Gb Ethernet adapters based on
+the Intel 82598EB Intel(R) Network Connections.
+The driver supports Jumbo Frames, MSIX, TSO, and RSS.
+.Pp
+For questions related to hardware requirements,
+refer to the documentation supplied with your Intel 10GbE adapter.
+All hardware requirements listed apply to use with
+.Fx .
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+The maximum MTU size for Jumbo Frames is 16114.
+.Pp
+This driver version supports VLANs.
+For information on enabling VLANs, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+Intel(R) 10 Gigabit XF SR/AF Dual Port Server Adapter
+.It
+Intel(R) 10 Gigabit XF SR/LR Server Adapter
+.It
+Intel(R) 82598EB 10 Gigabit AF Network Connection
+.It
+Intel(R) 82598EB 10 Gigabit AT CX4 Network Connection
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ixgbe%d: Unable to allocate bus resource: memory"
+A fatal initialization error has occurred.
+.It "ixgbe%d: Unable to allocate bus resource: interrupt"
+A fatal initialization error has occurred.
+.It "ixgbe%d: watchdog timeout -- resetting"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SUPPORT
+For general information and support,
+go to the Intel support website at:
+.Pa http://support.intel.com .
+.Pp
+If an issue is identified with the released source code on the supported kernel
+with a supported adapter, email the specific information related to the
+issue to
+.Aq freebsdnic@mailbox.intel.com .
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Intel Corporation Aq freebsdnic@mailbox.intel.com .
diff --git a/share/man/man4/jme.4 b/share/man/man4/jme.4
new file mode 100644
index 0000000..2c823ee
--- /dev/null
+++ b/share/man/man4/jme.4
@@ -0,0 +1,164 @@
+.\" Copyright (c) 2008 Pyun YongHyeon
+.\" 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$
+.\"
+.Dd October 6, 2008
+.Dt JME 4
+.Os
+.Sh NAME
+.Nm jme
+.Nd JMicron Gigabit/Fast Ethernet driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device jme"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_jme_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for JMicron JMC250 PCI Express
+Gigabit Ethernet controllers and JMicron JMC260 PCI Express Fast
+Ethernet controllers.
+.Pp
+All LOMs supported by the
+.Nm
+driver have TCP/UDP/IP checksum offload for both transmit and receive,
+TCP segmentation offload (TSO), hardware VLAN tag stripping/insertion
+features, Wake On Lan (WOL) and an interrupt coalescing/moderation
+mechanism as well as a 64-bit multicast hash filter.
+.Pp
+The JMC250 also supports Jumbo Frames (up to 9216 bytes), which can be
+configured via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+device driver provides support for the following Ethernet controllers:
+.Pp
+.Bl -bullet -compact
+.It
+JMicron JMC250 PCI Express Gigabit Ethernet controller
+.It
+JMicron JMC260 PCI Express Fast Ethernet controller
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width "xxxxxx"
+.It Va hw.jme.msi_disable
+This tunable disables MSI support on the Ethernet hardware.
+The default value is 0.
+.It Va hw.jme.msix_disable
+This tunable disables MSI-X support on the Ethernet hardware.
+The default value is 0.
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width "xxxxxx"
+.It Va dev.jme.%d.tx_coal_to
+Maximum amount of time to delay for Tx completion interrupt in
+units of 1us.
+The accepted range is 1 to 65535, the default is 100 (100us).
+.It Va dev.jme.%d.tx_coal_pkt
+Maximum number of packets to fire Tx completion interrupt.
+The accepted range is 1 to 255, the default is 8.
+.It Va dev.jme.%d.rx_coal_to
+Maximum amount of time to delay for Rx completion interrupt in
+units of 1us.
+The accepted range is 1 to 65535, the default is 100 (100us).
+.It Va dev.jme.%d.rx_coal_pkt
+Maximum number of packets to fire Rx completion interrupt.
+The accepted range is 1 to 255, the default is 2.
+.It Va dev.jme.%d.process_limit
+Maximum amount of Rx events to be processed in the event loop before
+rescheduling a taskqueue.
+The accepted range is 10 to 255, the default value is 128 events.
+The interface does not need to be brought down and up again before
+a change takes effect.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver was written by
+.An Pyun YongHyeon
+.Aq yongari@FreeBSD.org .
+It first appeared in
+.Fx 7.1 .
diff --git a/share/man/man4/joy.4 b/share/man/man4/joy.4
new file mode 100644
index 0000000..b0839f5
--- /dev/null
+++ b/share/man/man4/joy.4
@@ -0,0 +1,120 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 23, 1995
+.Dt JOY 4
+.Os
+.Sh NAME
+.Nm joy
+.Nd joystick device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device joy"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+joy_load="YES"
+.Ed
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.joy.0.at="isa"
+.Cd hint.joy.0.port="0x201"
+.Cd hint.joy.1.at="isa"
+.Cd hint.joy.1.port="0x201"
+.Pp
+.In sys/joystick.h
+.Sh DESCRIPTION
+The joystick device driver allows applications to read the status of
+the PC joystick.
+.Pp
+This device may be opened by only one process at a time.
+.Pp
+The joystick status is read from a structure via a read()
+call.
+The structure is defined in the header file as follows:
+.Pp
+.Bd -literal -offset indent
+ struct joystick {
+ int x; /* x position */
+ int y; /* y position */
+ int b1; /* button 1 status */
+ int b2; /* button 2 status */
+ };
+.Ed
+.Pp
+Positions are typically in the range 0-2000.
+.Ss One line perl example:
+.Bd -literal -compact
+perl -e 'open(JOY,"/dev/joy0")||die;while(1)
+{sysread(JOY,$x,16);@j=unpack("iiii",$x);print "@j\\n";sleep(1);}'
+.Ed
+.Ss ioctl calls
+Several ioctl() calls are also available.
+They take an argument of
+type int *
+.Bl -tag -width JOY_SET_X_OFFSET
+.It Dv JOY_SETTIMEOUT Fa int *limit
+Set the time limit (in microseconds) for reading the joystick
+status.
+Setting a value
+too small may prevent to get correct values for the positions (which
+are then set to -2147483648), however this can be useful if one is
+only interested by the buttons status.
+.It Dv JOY_GETTIMEOUT Fa int *limit
+Get the time limit (in microseconds) used for reading the joystick
+status.
+.It Dv JOY_SET_X_OFFSET Fa int *offset
+Set the value to be added to the X position when reading the joystick
+status.
+.It Dv JOY_SET_Y_OFFSET Fa int *offset
+Set the value to be added to the Y position when reading the joystick
+status.
+.It Dv JOY_GET_X_OFFSET Fa int *offset
+Get the value which is added to the X position when reading the joystick
+status.
+.It Dv JOY_GET_Y_OFFSET Fa int *offset
+Get the value which is added to the Y position when reading the joystick
+status.
+.El
+.Sh TECHNICAL SPECIFICATIONS
+The pinout of the DB-15 connector is as follow:
+.Bd -literal
+ 1 XY1 (+5v)
+ 2 Switch 1
+ 3 X1 (potentiometer #1)
+ 4 Switch 1 (GND)
+ 5 Switch 2 (GND)
+ 6 Y1 (potentiometer #2)
+ 7 Switch 2
+ 8 N.C.
+ 9 XY2 (+5v)
+ 10 Switch 4
+ 11 X2 (potentiometer #3)
+ 12 Switch 3&4 (GND)
+ 13 Y2 (potentiometer #4)
+ 14 Switch 3
+ 15 N.C.
+.Ed
+.Pp
+Pots are normally 0-150k variable resistors (0-100k sometimes), and
+according to the IBM technical reference, the time is given by
+Time = 24.2e-6s + 0.011e-6s * R/Ohms
+.Sh FILES
+.Bl -tag -width /dev/joy?
+.It Pa /dev/joy?
+joystick device files
+.El
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 2.0.5 .
+.Sh AUTHORS
+.An Jean-Marc Zucconi Aq jmz@cabri.obs-besancon.fr
diff --git a/share/man/man4/k8temp.4 b/share/man/man4/k8temp.4
new file mode 100644
index 0000000..dd378ef
--- /dev/null
+++ b/share/man/man4/k8temp.4
@@ -0,0 +1,71 @@
+.\"-
+.\" Copyright (c) 2008 Rui Paulo
+.\" 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$
+.\"
+.Dd April 8, 2008
+.Dt K8TEMP 4
+.Os
+.Sh NAME
+.Nm k8temp
+.Nd device driver for AMD K8 on-die digital thermal sensor
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device k8temp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+k8temp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the on-die digital thermal sensor present
+in AMD K8 processors.
+.Pp
+The
+.Nm
+driver reports each cores' temperature through a sysctl node in the
+corresponding CPU devices's sysctl tree, named
+.Va dev.k8temp.%d.sensor{0,1}.core{0,1} .
+.Va dev.cpu.%d.temperature
+is also created and it displays the maximum temperature of the two sensors
+located in each CPU core.
+.Sh SEE ALSO
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 7.1 .
+.Sh AUTHORS
+.An
+.An Rui Paulo Aq rpaulo@FreeBSD.org
diff --git a/share/man/man4/kbdmux.4 b/share/man/man4/kbdmux.4
new file mode 100644
index 0000000..e29f8cd
--- /dev/null
+++ b/share/man/man4/kbdmux.4
@@ -0,0 +1,56 @@
+.\" $Id: kbdmux.4,v 1.1 2005/07/14 20:32:10 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd July 12, 2005
+.Os
+.Dt KBDMUX 4
+.Sh NAME
+.Nm kbdmux
+.Nd "keyboard multiplexer"
+.Sh SYNOPSIS
+.Cd "device kbdmux"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.kbdmux.0.disabled="1"
+.Sh DESCRIPTION
+The
+.Nm
+keyboard driver provides support for basic keyboard multiplexing.
+It is built around the idea of a
+.Dq "super keyboard" .
+The
+.Nm
+driver
+acts as a master keyboard consuming input from all slave keyboards attached to
+it.
+.Pp
+Slave keyboards can be attached to or detached from the
+.Nm
+keyboard driver with the
+.Xr kbdcontrol 1
+utility.
+.Sh SEE ALSO
+.Xr kbdcontrol 1 ,
+.Xr atkbd 4 ,
+.Xr syscons 4 ,
+.Xr ukbd 4
+.Sh CAVEATS
+The
+.Nm
+keyboard driver switches all slave keyboards into
+.Dv K_RAW
+mode.
+Thus all slave keyboards attached to the
+.Nm
+keyboard share the same state.
+The
+.Nm
+keyboard is logically equivalent to one keyboard with lots of duplicated keys.
+.Sh HISTORY
+The
+.Nm
+module was implemented in
+.Fx 6.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
diff --git a/share/man/man4/keyboard.4 b/share/man/man4/keyboard.4
new file mode 100644
index 0000000..e1a5ac2
--- /dev/null
+++ b/share/man/man4/keyboard.4
@@ -0,0 +1,171 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 8, 1995
+.Dt KEYBOARD 4
+.Os
+.Sh NAME
+.Nm keyboard
+.Nd pc keyboard interface
+.Sh DESCRIPTION
+The PC keyboard is used as the console character input device.
+The keyboard
+is owned by the current virtual console.
+To switch between the virtual consoles use the sequence
+.Ar ALT+Fn ,
+which means hold down ALT and press one of the function keys.
+The
+virtual console with the same number as the function key is then
+selected as the current virtual console and given exclusive use of
+the keyboard and display.
+.Pp
+The console allows entering values that are not physically
+present on the keyboard via a special keysequence.
+To use this facility press and hold down ALT,
+then enter a decimal number from 0-255 via the numerical keypad, then
+release ALT.
+The entered value is then used as the ASCII value for one
+character.
+This way it is possible to enter any ASCII value, not present
+on the keyboard.
+The console driver also includes a history function.
+It is activated by
+pressing the scroll-lock key.
+This holds the display, and enables the cursor
+arrows for scrolling up and down through the last scrolled out lines.
+.Pp
+The keyboard is configurable to suit the individual user and the different
+national layout.
+.Pp
+The keys on the keyboard can have any of the following functions:
+.Pp
+.Bl -tag -width "Modifier Key" -compact
+.It "Normal key"
+Enter the ASCII value associated with the key.
+.It "Function key"
+Enter a string of ASCII values.
+.It "Switch Key"
+Switch virtual console.
+.It "Modifier Key"
+Change the meaning of another key.
+.El
+.Pp
+The keyboard is seen as a number of keys numbered from 1 to n.
+This
+number is often referred to as the "scancode" for a given key.
+The number
+of the key is transmitted as an 8 bit char with bit 7 as 0 when a key is
+pressed, and the number with bit 7 as 1 when released.
+This makes it
+possible to make the mapping of the keys fully configurable.
+.Pp
+The meaning of every key is programmable via the PIO_KEYMAP ioctl call, that
+takes a structure keymap_t as argument.
+The layout of this structure is as
+follows:
+.Pp
+.Bd -literal -offset indent
+ struct keymap {
+ u_short n_keys;
+ struct key_t {
+ u_char map[NUM_STATES];
+ u_char spcl;
+ u_char flgs;
+ } key[NUM_KEYS];
+ };
+.Ed
+.Pp
+The field n_keys tells the system how many keydefinitions (scancodes)
+follows.
+Each scancode is then specified in the key_t substructure.
+.Pp
+Each scancode can be translated to any of 8 different values, depending
+on the shift, control, and alt state.
+These eight possibilities are
+represented by the map array, as shown below:
+.Bd -literal
+ alt
+ scan cntrl alt alt cntrl
+ code base shift cntrl shift alt shift cntrl shift
+ map[n] 0 1 2 3 4 5 6 7
+ ---- ------------------------------------------------------
+ 0x1E 'a' 'A' 0x01 0x01 'a' 'A' 0x01 0x01
+.Ed
+.Pp
+This is the default mapping for the key labelled 'A' which normally has
+scancode 0x1E.
+The eight states are as shown, giving the 'A' key its
+normal behavior.
+The spcl field is used to give the key "special" treatment, and is
+interpreted as follows.
+Each bit corresponds to one of the states above.
+If the bit is 0 the
+key emits the number defined in the corresponding map[] entry.
+If the bit is 1 the key is "special".
+This means it does not emit
+anything; instead it changes the "state".
+That means it is a shift,
+control, alt, lock, switch-screen, function-key or no-op key.
+The bitmap is backwards i.e.,
+7 for base, 6 for shift etc.
+.Pp
+The flgs field defines if the key should react on caps-lock (1),
+num-lock (2), both (3) or ignore both (0).
+.Pp
+The
+.Xr kbdcontrol 1
+utility is used to load such a description into/outof
+the kernel at runtime.
+This makes it possible to change the key
+assignments at runtime, or more important to get (GIO_KEYMAP ioctl)
+the exact key meanings from the kernel (e.g.\& used by the X server).
+.Pp
+The function keys can be programmed using the SETFKEY ioctl call.
+.Pp
+This ioctl takes an argument of the type fkeyarg_t:
+.Bd -literal -offset indent
+ struct fkeyarg {
+ u_short keynum;
+ char keydef[MAXFK];
+ char flen;
+ };
+.Ed
+.Pp
+The field keynum defines which function key that is programmed.
+The array keydef should contain the new string to be used (MAXFK long),
+and the length should be entered in flen.
+.Pp
+The GETFKEY ioctl call works in a similar manner, except it returns
+the current setting of keynum.
+.Pp
+The function keys are numbered like this:
+.Bd -literal -offset indent
+ F1-F12 key 1 - 12
+ Shift F1-F12 key 13 - 24
+ Ctrl F1-F12 key 25 - 36
+ Ctrl+shift F1-F12 key 37 - 48
+
+ Home key 49
+ Up arrow key 50
+ Page Up key 51
+ (keypad) - key 52
+ Left arrow key 53
+ (keypad) 5 key 54
+ Right arrow key 55
+ (keypad) + key 56
+ End key 57
+ Down arrow key 58
+ Page down key 59
+ Insert key 60
+ Delete key 61
+
+ Left window key 62
+ Right window key 63
+ Menu key 64
+.Ed
+.Pp
+The
+.Xr kbdcontrol 1
+utility also allows changing these values at runtime.
+.Sh AUTHORS
+.An S\(/oren Schmidt Aq sos@FreeBSD.org
diff --git a/share/man/man4/kld.4 b/share/man/man4/kld.4
new file mode 100644
index 0000000..c36f6ab
--- /dev/null
+++ b/share/man/man4/kld.4
@@ -0,0 +1,175 @@
+.\" 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. 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$
+.\"
+.Dd November 8, 1998
+.Dt KLD 4
+.Os
+.Sh NAME
+.Nm kld
+.Nd dynamic kernel linker facility
+.Sh DESCRIPTION
+The LKM (Loadable Kernel Modules) facility has been deprecated in
+.Fx 3.0
+and above in favor of the
+.Nm
+interface.
+This interface, like its
+predecessor, allows the system administrator to dynamically add and remove
+functionality from a running system.
+This ability also helps software
+developers to develop new parts of the kernel without constantly rebooting
+to test their changes.
+.Pp
+Various types of modules can be loaded into the system.
+There are several defined module types, listed below, which can
+be added to the system in a predefined way.
+In addition, there
+is a generic type, for which the module itself handles loading and
+unloading.
+.Pp
+The
+.Fx
+system makes extensive use of loadable kernel modules, and provides loadable
+versions of most file systems, the
+.Tn NFS
+client and server, all the screen-savers, and the
+.Tn iBCS2
+and
+.Tn Linux
+emulators.
+.Nm
+modules are placed by default in the
+.Pa /boot/kernel
+directory along with their matching kernel.
+.Pp
+The
+.Nm
+interface is used through the
+.Xr kldload 8 ,
+.Xr kldunload 8
+and
+.Xr kldstat 8
+programs.
+.Pp
+The
+.Xr kldload 8
+program can load either
+.Xr a.out 5
+or ELF formatted loadable modules.
+The
+.Xr kldunload 8
+program unloads any given loaded module, if no other module is dependent
+upon the given module.
+The
+.Xr kldstat 8
+program is used to check the status of the modules currently loaded into the
+system.
+.Pp
+Kernel modules may only be loaded or unloaded if the system security level
+.Va kern.securelevel
+is less than one.
+.Sh "MODULE TYPES"
+.Bl -ohang
+.It Em "Device Driver modules"
+New block and character device
+drivers may be loaded into the system with
+.Nm .
+Device nodes for the loaded drivers are automatically created when a
+module is loaded and destroyed when it is unloaded by
+.Xr devfs 5 .
+You can specify userland programs that will run when new devices
+become available as a result of loading modules, or existing devices
+go away when modules are unloaded, by configuring
+.Xr devd 8 .
+.El
+.Sh FILES
+.Bl -tag -width /usr/include/sys/module.h -compact
+.It Pa /boot/kernel
+directory containing module binaries built for the kernel also
+residing in the directory.
+.It Pa /usr/include/sys/module.h
+file containing definitions required to compile a
+.Nm
+module
+.It Pa /usr/share/examples/kld
+example source code implementing a sample kld module
+.El
+.Sh SEE ALSO
+.Xr kldfind 2 ,
+.Xr kldfirstmod 2 ,
+.Xr kldload 2 ,
+.Xr kldnext 2 ,
+.Xr kldstat 2 ,
+.Xr kldunload 2 ,
+.Xr devfs 5 ,
+.Xr devd 8 ,
+.Xr kldload 8 ,
+.Xr kldstat 8 ,
+.Xr kldunload 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+facility appeared in
+.Fx 3.0
+and was designed as a replacement for the
+.Nm lkm
+facility, which was similar in functionality to the loadable kernel modules
+facility provided by
+.Tn SunOS
+4.1.3.
+.Sh AUTHORS
+The
+.Nm
+facility was originally implemented by
+.An Doug Rabson Aq dfr@FreeBSD.org .
+.Sh BUGS
+If a module B, is dependent on another module A, but is not compiled with
+module A as a dependency, then
+.Xr kldload 8
+fails to load module B, even if module A is already present in the system.
+.Pp
+If multiple modules are dependent on module A, and are compiled with module
+A as a dependency, then
+.Xr kldload 8
+loads an instance of module A when any of the modules are loaded.
+.Pp
+If a custom entry point is used for a module, and the module is compiled as
+an
+.Sq ELF
+binary, then
+.Xr kldload 8
+fails to execute the entry point.
+.Pp
+.Xr kldload 8
+returns the cryptic message
+.Sq Li "ENOEXEC (Exec format error)"
+for any error encountered while loading a module.
+.Pp
+When system internal interfaces change, old modules often cannot
+detect this, and such modules when loaded will often cause crashes or
+mysterious failures.
diff --git a/share/man/man4/ktr.4 b/share/man/man4/ktr.4
new file mode 100644
index 0000000..89f5305
--- /dev/null
+++ b/share/man/man4/ktr.4
@@ -0,0 +1,200 @@
+.\" Copyright (c) 2001 John H. Baldwin <jhb@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$
+.\"
+.Dd January 25, 2005
+.Dt KTR 4
+.Os
+.Sh NAME
+.Nm ktr
+.Nd kernel tracing facility
+.Sh SYNOPSIS
+.Cd options KTR
+.Cd options ALQ
+.Cd options KTR_ALQ
+.Cd options KTR_COMPILE=(KTR_LOCK|KTR_INTR|KTR_PROC)
+.Cd options KTR_CPUMASK=0x3
+.Cd options KTR_ENTRIES=8192
+.Cd options KTR_MASK=(KTR_INTR|KTR_PROC)
+.Cd options KTR_VERBOSE
+.Sh DESCRIPTION
+The
+.Nm
+facility allows kernel events to be logged while the kernel executes so that
+they can be examined later when debugging.
+The only mandatory option to enable
+.Nm
+is
+.Dq Li options KTR .
+.Pp
+The
+.Dv KTR_ENTRIES
+option sets the size of the buffer of events.
+It must be a power of two.
+The size of the buffer in the currently running kernel can be found via the
+read-only sysctl
+.Va debug.ktr.entries .
+By default the buffer contains 1024 entries.
+.Ss Event Masking
+Event levels can be enabled or disabled to trim excessive and overly verbose
+logging.
+First, a mask of events is specified at compile time via the
+.Dv KTR_COMPILE
+option to limit which events are actually compiled into the kernel.
+The default value for this option is for all events to be enabled.
+.Pp
+Secondly, the actual events logged while the kernel runs can be further
+masked via the run time event mask.
+The
+.Dv KTR_MASK
+option sets the default value of the run time event mask.
+The runtime event mask can also be set by the
+.Xr loader 8
+via the
+.Va debug.ktr.mask
+environment variable.
+It can also be examined and set after booting via the
+.Va debug.ktr.mask
+sysctl.
+By default the run time mask is set to log only
+.Dv KTR_GEN
+events.
+The definitions of the event mask bits can be found in
+.In sys/ktr.h .
+.Pp
+Furthermore, there is a CPU event mask whose default value can be changed via
+the
+.Dv KTR_CPUMASK
+option.
+A CPU must have the bit corresponding to its logical id set in this bitmask
+for events that occur on it to be logged.
+This mask can be set by the
+.Xr loader 8
+via the
+.Va debug.ktr.cpumask
+environment variable.
+It can also be examined and set after booting via the
+.Va debug.ktr.cpumask
+sysctl.
+By default events on all CPUs are enabled.
+.Ss Verbose Mode
+By default, events are only logged to the internal buffer for examination
+later, but if the verbose flag is set then they are dumped to the kernel
+console as well.
+This flag can also be set from the loader via the
+.Va debug.ktr.verbose
+environment variable, or it can be examined and set after booting via the
+.Va debug.ktr.verbose
+sysctl.
+If the flag is set to zero, which is the default, then verbose output is
+disabled.
+If the flag is set to one, then the contents of the log message and the CPU
+number are printed to the kernel console.
+If the flag is greater than one, then the filename and line number of the
+event are output to the console in addition to the log message and the CPU
+number.
+The
+.Dv KTR_VERBOSE
+option sets the flag to one.
+.Ss Examining the Events
+The KTR buffer can be examined from within
+.Xr ddb 4
+via the
+.Ic show ktr Op Cm /v
+command.
+This command displays the contents of the trace buffer one page at a time.
+At the
+.Dq Li --more--
+prompt, the Enter key displays one more entry and prompts again.
+The spacebar displays another page of entries.
+Any other key quits.
+By default the timestamp, filename, and line number are not displayed with
+each log entry.
+If the
+.Cm /v
+modifier is specified, then they are displayed in addition to the normal
+output.
+Note that the events are displayed in reverse chronological order.
+That is, the most recent events are displayed first.
+.Ss Logging ktr to Disk
+The
+.Dv KTR_ALQ
+option can be used to log
+.Nm
+entries to disk for post analysis using the
+.Xr ktrdump 8
+utility.
+This option depends on the
+.Dv ALQ
+option.
+Due to the potentially high volume of trace messages the trace mask should be
+selected carefully.
+This feature is configured through a group of sysctls.
+.Bl -tag -width ".Va debug.ktr.alq_enable"
+.It Va debug.ktr.alq_file
+displays or sets the file that
+.Nm
+will log to.
+By default its value is
+.Pa /tmp/ktr.out .
+If the file name is changed while
+.Nm
+is enabled it will not take effect until
+the next invocation.
+.It Va debug.ktr.alq_enable
+enables logging of
+.Nm
+entries to disk if it is set to one.
+Setting this to 0 will terminate logging.
+.It Va debug.ktr.alq_max
+is the maximum number of entries that will be recorded to disk, or 0 for
+infinite.
+This is helpful for limiting the number of particularly high frequency entries
+that are recorded.
+.It Va debug.ktr.alq_depth
+determines the number of entries in the write buffer.
+This is the buffer that holds entries before they are written to disk and
+defaults to the value of the
+.Dv KTR_ENTRIES
+option.
+.It Va debug.ktr.alq_failed
+records the number of times we failed to write an entry due to overflowing the
+write buffer.
+This may happen if the frequency of the logged
+.Nm
+messages outpaces the depth
+of the queue.
+.It Va debug.ktr.alq_cnt
+records the number of entries that have currently been written to disk.
+.El
+.Sh SEE ALSO
+.Xr ktrdump 8 ,
+.Xr alq 9 ,
+.Xr ktr 9
+.Sh HISTORY
+The KTR kernel tracing facility first appeared in
+.Bsx 3.0
+and was imported into
+.Fx 5.0 .
diff --git a/share/man/man4/kue.4 b/share/man/man4/kue.4
new file mode 100644
index 0000000..c9a8ad7
--- /dev/null
+++ b/share/man/man4/kue.4
@@ -0,0 +1,142 @@
+.\" Copyright (c) 1997, 1998, 1999, 2000
+.\" Bill Paul <wpaul@ee.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd October 7, 2006
+.Dt KUE 4
+.Os
+.Sh NAME
+.Nm kue
+.Nd "Kawasaki LSI KL5KUSB101B USB Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device kue"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_kue_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB Ethernet adapters based on the Kawasaki
+LSI KL5KLUSB101B chipset.
+.Pp
+The KL5KLUSB101B supports a 128-entry multicast filter, single perfect
+filter entry for the station address and promiscuous mode.
+Packets are
+received and transmitted over separate USB bulk transfer endpoints.
+.Pp
+The Kawasaki chipset supports only 10Mbps half-duplex mode, hence there
+are no
+.Xr ifmedia 4
+modes to select.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Kawasaki LSI KL5KLUSB101B based USB Ethernet
+adapters including:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3c19250
+.It
+3Com 3c460 HomeConnect Ethernet USB Adapter
+.It
+ADS Technologies USB-10BT
+.It
+AOX USB101
+.It
+ATen UC10T
+.It
+Abocom URE 450
+.It
+Corega USB-T
+.It
+D-Link DSB-650C
+.It
+Entrega NET-USB-E45, NET-HUB-3U1E
+.It
+I/O Data USB ETT
+.It
+Kawasaki DU-H3E
+.It
+LinkSys USB10T
+.It
+Netgear EA101
+.It
+Peracom USB Ethernet Adapter
+.It
+Psion Gold Port USB Ethernet adapter
+.It
+SMC 2102USB, 2104USB
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "kue%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, however the device failed to acknowledge the transmission
+before a timeout expired.
+.It "kue%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ee.columbia.edu .
+.Sh BUGS
+The
+.Nm
+driver does not accumulate Ethernet collisions statistics because the
+Kawasaki firmware does not appear to maintain any internal statistics.
diff --git a/share/man/man4/lagg.4 b/share/man/man4/lagg.4
new file mode 100644
index 0000000..e2ee3e9
--- /dev/null
+++ b/share/man/man4/lagg.4
@@ -0,0 +1,177 @@
+.\" $OpenBSD: trunk.4,v 1.18 2006/06/09 13:53:34 jmc Exp $
+.\"
+.\" Copyright (c) 2005, 2006 Reyk Floeter <reyk@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 17, 2007
+.Dt LAGG 4
+.Os
+.Sh NAME
+.Nm lagg
+.Nd link aggregation and link failover interface
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device lagg"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_lagg_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+interface allows aggregation of multiple network interfaces as one virtual
+.Nm
+interface for the purpose of providing fault-tolerance and high-speed links.
+.Pp
+A
+.Nm
+interface can be created using the
+.Ic ifconfig lagg Ns Ar N Ic create
+command.
+It can use different link aggregation protocols specified
+using the
+.Ic laggproto Ar proto
+option.
+Child interfaces can be added using the
+.Ic laggport Ar child-iface
+option and removed using the
+.Ic -laggport Ar child-iface
+option.
+.Pp
+The driver currently supports the aggregation protocols
+.Ic failover
+(the default),
+.Ic fec ,
+.Ic lacp ,
+.Ic loadbalance ,
+.Ic roundrobin ,
+and
+.Ic none .
+The protocols determine which ports are used for outgoing traffic
+and whether a specific port accepts incoming traffic.
+The interface link state is used to validate if the port is active or
+not.
+.Bl -tag -width loadbalance
+.It Ic failover
+Sends and receives traffic only through the master port.
+If the master port becomes unavailable,
+the next active port is used.
+The first interface added is the master port;
+any interfaces added after that are used as failover devices.
+.It Ic fec
+Supports Cisco EtherChannel.
+This is a static setup and does not negotiate aggregation with the peer or
+exchange frames to monitor the link.
+.It Ic lacp
+Supports the IEEE 802.3ad Link Aggregation Control Protocol (LACP) and the
+Marker Protocol.
+LACP will negotiate a set of aggregable links with the peer in to one or more
+Link Aggregated Groups.
+Each LAG is composed of ports of the same speed, set to full-duplex operation.
+The traffic will be balanced across the ports in the LAG with the greatest
+total speed, in most cases there will only be one LAG which contains all ports.
+In the event of changes in physical connectivity, Link Aggregation will quickly
+converge to a new configuration.
+.It Ic loadbalance
+Balances outgoing traffic across the active ports based on hashed
+protocol header information and accepts incoming traffic from
+any active port.
+This is a static setup and does not negotiate aggregation with the peer or
+exchange frames to monitor the link.
+The hash includes the Ethernet source and destination address, and, if
+available, the VLAN tag, and the IP source and destination address.
+.It Ic roundrobin
+Distributes outgoing traffic using a round-robin scheduler
+through all active ports and accepts incoming traffic from
+any active port.
+.It Ic none
+This protocol is intended to do nothing: it disables any traffic without
+disabling the
+.Nm
+interface itself.
+.El
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Pp
+The MTU of the first interface to be added is used as the lagg MTU.
+All additional interfaces are required to have exactly the same value.
+.Sh EXAMPLES
+Create a 802.3ad link aggregation using LACP with two
+.Xr bge 4
+Gigabit Ethernet interfaces:
+.Bd -literal -offset indent
+# ifconfig bge0 up
+# ifconfig bge1 up
+# ifconfig lagg0 laggproto lacp laggport bge0 laggport bge1 \e
+ 192.168.1.1 netmask 255.255.255.0
+.Ed
+.Pp
+The following example uses an active failover interface to set up roaming
+between wired and wireless networks using two network devices.
+Whenever the wired master interface is unplugged, the wireless failover
+device will be used:
+.Bd -literal -offset indent
+# ifconfig em0 up
+# ifconfig ath0 nwid my_net up
+# ifconfig lagg0 laggproto failover laggport em0 laggport ath0 \e
+ 192.168.1.1 netmask 255.255.255.0
+.Ed
+.Sh SEE ALSO
+.Xr ng_fec 4 ,
+.Xr ng_one2many 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device first appeared in
+.Fx 6.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written under the name
+.Nm trunk
+by
+.An Reyk Floeter Aq reyk@openbsd.org .
+The LACP implementation was written by
+.An YAMAMOTO Takashi
+for
+.Nx .
+.Sh BUGS
+There is no way to configure LACP administrative variables, including system
+and port priorities.
+The current implementation always performs active-mode LACP and uses 0x8000 as
+system and port priorities.
+.Pp
+WPA security does not currently work correctly with a wireless interface added
+to the lagg port.
diff --git a/share/man/man4/le.4 b/share/man/man4/le.4
new file mode 100644
index 0000000..0a1823d
--- /dev/null
+++ b/share/man/man4/le.4
@@ -0,0 +1,476 @@
+.\" $NetBSD: le.4,v 1.22 2004/10/04 19:12:52 rumble Exp $
+.\"
+.\"-
+.\" Copyright (c) 1992, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This software was developed by the Computer Systems Engineering group
+.\" at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+.\" contributed to Berkeley.
+.\"
+.\" 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. 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.
+.\"
+.\" from: Header: le.4,v 1.2 92/10/13 05:31:33 leres Exp
+.\" from: @(#)le.4 8.1 (Berkeley) 6/9/93
+.\" $FreeBSD$
+.\"
+.Dd January 20, 2007
+.Dt LE 4
+.Os
+.Sh NAME
+.Nm le
+.Nd "AMD Am7900 LANCE and Am79C9xx ILACC/PCnet Ethernet interface driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device le"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_le_load="YES"
+.Ed
+.Pp
+For C-Bus non-PnP adapters, the port address and the IRQ number have to be
+specified in
+.Pa /boot/device.hints :
+.Cd hint.le.0.at="isa"
+.Cd hint.le.0.port="0x03d0"
+.Cd hint.le.0.irq="6"
+.Pp
+For ISA non-PnP adapters, the port address as well as the IRQ and the DRQ
+numbers have to be specified in
+.Pa /boot/device.hints :
+.Cd hint.le.0.at="isa"
+.Cd hint.le.0.port="0x280"
+.Cd hint.le.0.irq="10"
+.Cd hint.le.0.drq="0"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Ethernet adapters based on the
+.Tn AMD Am7990
+and
+.Tn Am79C90
+.Pq CMOS, pin-compatible
+Local Area Network Controller for Ethernet
+.Pq Tn LANCE
+chips.
+.Pp
+The
+.Nm
+driver also supports Ethernet adapters based on the
+.Tn AMD Am79C900
+Integrated Local Area Communications Controller
+.Pq Tn ILACC
+as well as the
+.Tn Am79C9xx PCnet
+family of chips, which are single-chip implementations of a
+.Tn LANCE
+chip and a DMA engine.
+This includes a superset of the
+.Tn PCI
+bus Ethernet chips supported by the
+.Xr pcn 4
+driver.
+The
+.Nm
+driver treats all of these
+.Tn PCI
+bus Ethernet chips as an
+.Tn AMD Am79C970 PCnet-PCI
+and does not support the additional features like the MII bus and burst mode of
+.Tn AMD Am79C971 PCnet-FAST
+and greater chips.
+Thus the
+.Xr pcn 4
+driver should be preferred for the latter.
+.Pp
+Generally, the
+.Nm
+driver aims at supporting as many different chips on as many different
+platforms as possible,
+partially at the cost of the best performance with some of these.
+.Pp
+The
+.Nm
+driver supports reception and transmission of extended frames for
+.Xr vlan 4 .
+Selective reception of multicast Ethernet frames is provided by a 64-bit mask;
+multicast destination addresses are hashed to a bit entry using the Ethernet
+CRC function.
+.Sh HARDWARE
+.Ss C-Bus and ISA
+The
+.Nm
+driver supports
+.Tn C-Bus
+and
+.Tn ISA
+bus Ethernet adapters which are based on the following chips:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn AMD Am7990 and Am79C90 LANCE
+.It
+.Tn AMD Am79C960 PCnet-ISA
+.It
+.Tn AMD Am79C961 PCnet-ISA+
+.It
+.Tn AMD Am79C961A PCnet-ISA II
+.El
+.Pp
+This includes support for the following Ethernet adapters:
+.Pp
+C-Bus non-PnP:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn Contec C-NET(98)S
+.El
+.Pp
+ISA non-PnP:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn BICC Isolan
+.\" .It
+.\" .Tn Digital DEPCA
+.It
+.Tn Novell NE2100
+.El
+.Pp
+ISA PnP:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn AMD AM1500T/AM2100
+.It
+.Tn AMD PCnet-32
+.It
+.Tn AMD PCnet-ISA
+.It
+.Tn Allied Telesyn AT-1500
+.It
+.Tn Boca LANCard Combo
+.It
+.Tn Cabletron E2100 Series DNI
+.It
+.Tn Cabletron E2200 Single Chip
+.It
+.Tn Melco Inc. LGY-IV
+.It
+.Tn Novell NE2100
+.It
+.Tn Racal InterLan EtherBlaster
+.El
+.Pp
+The
+.Nm
+driver does not support the selection of media types and options via
+.Xr ifconfig 8
+with
+.Tn C-Bus
+and
+.Tn ISA
+bus Ethernet adapters.
+.\" .Ss EISA
+.\" The
+.\" .Tn EISA
+.\" bus Ethernet cards supported by the
+.\" .Nm
+.\" driver are:
+.\" .Pp
+.\" .Bl -bullet -compact
+.\" .It
+.\" .Tn DEC DE422
+.\" .El
+.\" .Ss MCA
+.\" The
+.\" .Tn MCA
+.\" bus Ethernet cards supported by the
+.\" .Nm
+.\" driver are:
+.\" .Pp
+.\" .Bl -bullet -compact
+.\" .It
+.\" .Tn SKNET Personal MC2
+.\" .It
+.\" .Tn SKNET MC2+
+.\" .El
+.Ss PCI
+The
+.Tn PCI
+bus Ethernet chips supported by the
+.Nm
+driver are:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn AMD Am53C974/Am79C970/Am79C974 PCnet-PCI
+.It
+.Tn AMD Am79C970A PCnet-PCI II
+.It
+.Tn AMD Am79C971 PCnet-FAST
+.It
+.Tn AMD Am79C972 PCnet-FAST+
+.It
+.Tn AMD Am79C973/Am79C975 PCnet-FAST III
+.It
+.Tn AMD Am79C976 PCnet-PRO
+.It
+.Tn AMD Am79C978 PCnet-Home
+.El
+.Pp
+This includes support for the following Ethernet adapters:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn AcerLAN NIC P20
+.It
+.Tn Allied Telesyn AT-2450 and AT-2700 series
+.It
+.Tn VMware emulated AMD Am79C970A PCnet-PCI II interface
+.El
+.Pp
+The
+.Nm
+driver supports the selection of the following media types via
+.Xr ifconfig 8
+with
+.Tn PCI
+bus Ethernet adapters:
+.Bl -tag -width ".Cm 10base5/AUI"
+.It Cm autoselect
+Enable autoselection of the media type.
+.It Cm 10baseT/UTP
+Select UTP media.
+.It Cm 10base5/AUI
+Select AUI/BNC media.
+.El
+.Pp
+The following media option is supported with these media types:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Select full duplex operation.
+.El
+.Pp
+Note that unlike the
+.Xr pcn 4
+driver, the
+.Nm
+driver does not support selecting 100Mbps (Fast Ethernet) media types.
+.Ss sparc64
+The
+.Nm
+driver supports the on-board
+.Tn LANCE
+interfaces found in
+.Tn Sun Ultra 1
+machines.
+The
+.Nm
+driver allows the selection of the following media types via
+.Xr ifconfig 8
+with these on-board interfaces:
+.Bl -tag -width ".Cm 10base5/AUI"
+.It Cm autoselect
+Enable autoselection of the media type.
+.It Cm 10baseT/UTP
+Select UTP media.
+.It Cm 10base5/AUI
+Select AUI media.
+.El
+.Pp
+When using autoselection, a default media type is selected for use by
+examining all ports for carrier.
+The first media type with which a carrier is detected will be selected.
+Additionally, if carrier is dropped on a port, the driver will switch
+between the possible ports until one with carrier is found.
+.Pp
+The
+.Nm
+driver also supports the following
+.Tn Sun SBus
+Ethernet add-on adapters:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn SCSI HBA and Buffered Ethernet
+.Pq SBE/S, P/N 501-1869
+.It
+.Tn Fast SCSI and Buffered Ethernet
+.Pq FSBE/S, P/N 501-2015 and 501-2981
+.El
+.Pp
+The
+.Nm
+driver does not support the selection of media types and options via
+.Xr ifconfig 8
+with
+.Tn SBus
+Ethernet add-on adapters.
+.Pp
+For further information on configuring media types and options, see
+.Xr ifconfig 8 .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "le%d: overflow"
+More packets came in from the Ethernet than there was space in the
+.Tn LANCE
+receive buffers.
+Packets were missed.
+.It "le%d: receive buffer error"
+The
+.Tn LANCE
+ran out of buffer space, packet dropped.
+.It "le%d: lost carrier"
+The Ethernet carrier disappeared during an attempt to transmit.
+The
+.Tn LANCE
+will finish transmitting the current packet,
+but will not automatically retry transmission if there is a collision.
+.It "le%d: excessive collisions, tdr %d"
+The Ethernet was extremely busy or jammed,
+outbound packets were dropped after 16 attempts to retransmit.
+.Pp
+TDR
+is the abbreviation of
+.Qq Time Domain Reflectometry .
+The optionally reported TDR value is an internal counter of the interval
+between the start of a transmission and the occurrence of a collision.
+This value can be used to determine the distance from the Ethernet tap to
+the point on the Ethernet cable that is shorted or open (unterminated).
+.It "le%d: dropping chained buffer"
+A packet did not fit into a single receive buffer and was dropped.
+Since the
+.Nm
+driver allocates buffers large enough to receive maximum sized Ethernet
+packets, this means some other station on the LAN transmitted a packet
+larger than allowed by the Ethernet standard.
+.It "le%d: transmit buffer error"
+The
+.Tn LANCE
+ran out of buffer space before finishing the transmission of a packet.
+If this error occurs, the driver software has a bug.
+.It "le%d: underflow"
+The
+.Tn LANCE
+ran out of buffer space before finishing the transmission of a packet.
+If this error occurs, the driver software has a bug.
+.It "le%d: controller failed to initialize"
+Driver failed to start the
+.Tn LANCE .
+This is potentially a hardware failure.
+.It "le%d: memory error"
+RAM failed to respond within the timeout when the
+.Tn LANCE
+wanted to read or write it.
+This is potentially a hardware failure.
+.It "le%d: receiver disabled"
+The receiver of the
+.Tn LANCE
+was turned off due to an error.
+.It "le%d: transmitter disabled"
+The transmitter of the
+.Tn LANCE
+was turned off due to an error.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr intro 4 ,
+.Xr netintro 4 ,
+.Xr pcn 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver was ported from
+.Nx
+and first appeared in
+.Fx 6.1 .
+The
+.Nx
+version in turn was derived from the
+.Nm
+driver which first appeared in
+.Bx 4.4 .
+.Sh AUTHORS
+The
+.Nm
+driver was ported by
+.An "Marius Strobl" Aq marius@FreeBSD.org .
+.\" .Sh BUGS
+.\" The Am7990 Revision C chips have a bug which causes garbage to be inserted
+.\" in front of the received packet occasionally.
+.\" The work-around is to ignore packets with an invalid destination address
+.\" (garbage will usually not match), by double-checking the destination
+.\" address of every packet in the driver.
+.\" This work-around can be enabled with the
+.\" .Dv LANCE_REVC_BUG
+.\" kernel option.
+.\" .Pp
+.\" When
+.\" .Dv LANCE_REVC_BUG
+.\" is enabled, the
+.\" .Nm
+.\" driver executes one or two calls to an inline Ethernet address comparison
+.\" function for every received packet.
+.\" On the
+.\" .Tn MC68000
+.\" it is exactly eight instructions of 16 bits each.
+.\" There is one comparison for each unicast packet, and two comparisons for
+.\" each broadcast packet.
+.\" .Pp
+.\" In summary, the cost of the LANCE_REVC_BUG option is:
+.\" .Bl -enum -compact
+.\" .It
+.\" loss of multicast support, and
+.\" .It
+.\" eight extra
+.\" .Tn CPU
+.\" instructions per received packet, sometimes sixteen, depending on both the
+.\" processor, and the type of packet.
+.\" .El
+.\" .Pp
+.\" All sun3 systems are presumed to have this bad revision of the Am7990,
+.\" until proven otherwise.
+.\" Alas, the only way to prove what revision of the chip is in a particular
+.\" system is inspection of the date code on the chip package,
+.\" to compare against a list of what chip revisions were fabricated between
+.\" which dates.
+.\" .Pp
+.\" Alas, the Am7990 chip is so old that
+.\" .Tn AMD
+.\" has
+.\" .Qq de-archived
+.\" the production information about it; pending a search elsewhere, we do not
+.\" know how to identify the revision C chip from the date codes.
diff --git a/share/man/man4/led.4 b/share/man/man4/led.4
new file mode 100644
index 0000000..63bb8a2
--- /dev/null
+++ b/share/man/man4/led.4
@@ -0,0 +1,194 @@
+.\" Copyright (c) 2003 Sergey A. Osokin <osa@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 ``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$
+.\"
+.Dd April 24, 2007
+.Dt LED 4
+.Os
+.Sh NAME
+.Nm led
+.Nd API for manipulating LED's, lamps and other annunciators
+.Sh SYNOPSIS
+.In dev/led/led.h
+.Pp
+.Fd "typedef void led_t(void *priv, int onoff);"
+.Ft struct cdev *
+.Fn led_create_state "led_t *func" "void *priv" "char const *name" "int state"
+.Ft struct cdev *
+.Fn led_create "led_t *func" "void *priv" "char const *name"
+.Ft void
+.Fn led_destroy "struct cdev *"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides generic support for handling LEDs, lamps and other
+annunciators.
+.Pp
+The hardware driver must supply a function to turn the annunciator on and off
+and the device
+.Fa name
+of the annunciator relative to
+.Pa /dev/led/ .
+The
+.Fa priv
+argument is passed back to this on/off function and can be used however
+the hardware driver sees fit.
+.Pp
+The lamp can be controlled by opening and writing
+.Tn ASCII
+strings to the
+.Pa /dev/led/bla
+device.
+.Pp
+In the following, we will use this special notation to indicate the resulting
+output of the annunciator:
+.Pp
+.Bl -tag -width indent -offset indent -compact
+.It Ic *
+The annunciator is on for 1/10th second.
+.It Ic _
+The annunciator is off for 1/10th second.
+.El
+.Pp
+State can be set directly, and since the change happens immediately,
+it is possible to flash the annunciator with very short periods and
+synchronize it with program events.
+It should be noted that there is a non-trivial overhead, so this may
+not be usable for benchmarking or measuring short intervals.
+.Pp
+.Bl -tag -width indent -offset indent -compact
+.It Ic 0
+Turn the annunciator off immediately.
+.It Ic 1
+Turn the annunciator on immediately.
+.El
+.Pp
+Flashing can be set with a given period.
+The pattern continues endlessly.
+.Pp
+.Bl -tag -width indent -offset indent -compact
+.It Ic f
+_*
+.It Ic f1
+_*
+.It Ic f2
+__**
+.It Ic f3
+___***
+.It ...
+.It Ic f9
+_________*********
+.El
+.Pp
+Three high-level commands are available:
+.Bl -tag -width indent -offset indent
+.It Ic d%d
+Numbers.
+Each digit is blinked out at 1/10th second, zero as ten pulses.
+Between digits a one second pause and after the last
+digit a two second pause after which the sequence is repeated.
+.It Ic s%s
+String.
+This gives full control over the annunciator.
+Letters
+.Ql A
+.No ...
+.Ql J
+turn the annunciator on for from 1/10th to one full
+second.
+Letters
+.Ql a
+.No ...
+.Ql j
+turn the annunciator off for 1/10th
+to one full second.
+Letters
+.Ql u
+and
+.Ql U
+turn the annunciator off and on respectively when the next
+UTC second starts.
+Unless terminated with a
+.Ql \&. ,
+the sequence is immediately repeated.
+.It Ic m%s
+Morse.
+.Pp
+.Bl -tag -width indent -offset indent -compact
+.It Ql \&.
+becomes
+.Ql _*
+.It Ql -
+becomes
+.Sq Li _***
+.It Ql "\ "
+becomes
+.Sq Li __
+.It Ql \en
+becomes
+.Sq Li ____
+.El
+.El
+.Pp
+The sequence is repeated after a one second pause.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/led/*"
+.It Pa /dev/led/*
+.El
+.Sh EXAMPLES
+A
+.Sq Li d12
+flashes the lamp
+.Pp
+.Dl *__________*_*______________________________
+.Pp
+A
+.Sq Li sAaAbBa
+flashes
+.Pp
+.Dl *_*__**_
+.Pp
+.Bd -literal
+/usr/games/morse -l "Soekris rocks" > /dev/led/error
+.Ed
+.Sh SEE ALSO
+.Xr morse 6
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.2 .
+.Sh AUTHORS
+.An -nosplit
+This software was written by
+.An Poul-Henning Kamp
+.Aq phk@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Sergey A. Osokin
+.Aq osa@FreeBSD.org
+and
+.An Poul-Henning Kamp
+.Aq phk@FreeBSD.org .
diff --git a/share/man/man4/lge.4 b/share/man/man4/lge.4
new file mode 100644
index 0000000..41010b9
--- /dev/null
+++ b/share/man/man4/lge.4
@@ -0,0 +1,157 @@
+.\" Copyright (c) 2001 Wind River Systems
+.\" Copyright (c) 1997, 1998, 1999, 2000, 2001
+.\" Bill Paul <william.paul@windriver.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt LGE 4
+.Os
+.Sh NAME
+.Nm lge
+.Nd "Level 1 LXT1001 NetCellerator PCI Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device lge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_lge_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various NICs based on the Level 1 LXT1001
+NetCellerator Gigabit Ethernet controller chip.
+.Pp
+The LXT1001 supports fiber PHYs and also a GMII port for use with
+10/100/1000 copper PHYs, however there are currently no NICs on the
+market that use this feature.
+.Pp
+The LXT1001 supports TCP/IP checksum offload for receive and
+VLAN-based filtering as well as a 64-bit multicast hash filter.
+It also supports jumbo frames, which can be configured
+via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit jumbo frames.
+Using jumbo frames can greatly improve performance for certain tasks,
+such as file transfers and data streaming.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 1000baseSX"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 1000baseSX
+Set 1000baseSX operation over fiber optic cable.
+Both
+.Cm full-duplex
+and
+.Cm half-duplex
+modes are supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+Adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+SMC TigerCard 1000 (SMC9462SX)
+.It
+D-Link DGE-500SX
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "lge%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "lge%d: couldn't map ports"
+A fatal initialization error has occurred.
+.It "lge%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "lge%d: no memory for softc struct!"
+The driver failed to allocate memory for per-device instance information
+during initialization.
+.It "lge%d: failed to enable memory mapping!"
+The driver failed to initialize PCI shared memory mapping.
+This might
+happen if the card is not in a bus-master slot.
+.It "lge%d: no memory for jumbo buffers!"
+The driver failed to allocate memory for jumbo frames during
+initialization.
+.It "lge%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Rs
+.%T Level 1 LXT1001 Programming Manual
+.%O http://www.FreeBSD.org/~wpaul/Level1/LXT1001SRM.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq william.paul@windriver.com .
diff --git a/share/man/man4/linux.4 b/share/man/man4/linux.4
new file mode 100644
index 0000000..8c368b3
--- /dev/null
+++ b/share/man/man4/linux.4
@@ -0,0 +1,140 @@
+.\" Copyright (c) 2000 Sheldon Hearn
+.\" 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$
+.\"
+.Dd March 17, 2008
+.Dt LINUX 4 i386
+.Os
+.Sh NAME
+.Nm linux
+.Nd Linux ABI support
+.Sh SYNOPSIS
+To compile support for this ABI into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options COMPAT_LINUX"
+.Ed
+.Pp
+Alternatively, to load the ABI as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+linux_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+module provides limited
+Linux ABI (application binary interface) compatibility
+for userland applications.
+The module provides the following significant facilities:
+.Bl -bullet
+.It
+An image activator
+for correctly branded
+.Xr elf 5
+executable images
+.It
+Special signal handling for activated images
+.It
+Linux to native system call translation
+.El
+.Pp
+It is important to note that the Linux ABI support
+it not provided through an emulator.
+Rather, a true (albeit limited) ABI implementation is provided.
+.Pp
+The following
+.Xr sysctl 8
+tunable variables are available:
+.Bl -tag -width compat.linux.oss_version
+.It compat.linux.osname
+Linux kernel operating system name.
+.It compat.linux.osrelease
+Linux kernel operating system release.
+Changing this to something else is discouraged on non-development systems,
+because it may change the way Linux programs work.
+Recent versions of GNU libc are known to use different syscalls depending
+on the value of this sysctl.
+.It compat.linux.oss_version
+Linux Open Sound System version.
+.El
+.Pp
+The
+.Nm
+module can be linked into the kernel statically with the
+.Dv COMPAT_LINUX
+kernel configuration option
+or loaded as required.
+The following command will load the module
+if it is neither linked into the kernel
+nor already loaded as a module:
+.Bd -literal -offset indent
+if ! kldstat -v | grep -E 'linux(aout|elf)' > /dev/null; then
+ kldload linux > /dev/null 2>&1
+fi
+.Ed
+.Pp
+Note that dynamically linked Linux executables
+will require a suitable environment in
+.Pa /compat/linux .
+Specifically, the Linux run-time linker's hints files
+should be correctly initialized.
+For this reason, it is common to execute the following commands
+to prepare the system to correctly run Linux executables:
+.Bd -literal -offset indent
+if [ -x /compat/linux/sbin/ldconfig ]; then
+ /compat/linux/sbin/ldconfig -r /compat/linux
+fi
+.Ed
+.Pp
+For information on loading the
+.Nm
+kernel loadable module automatically on system startup,
+see
+.Xr rc.conf 5 .
+This information applies
+regardless of whether the
+.Nm
+module is statically linked into the kernel
+or loaded as a module.
+.Sh FILES
+.Bl -tag -width /compat/linux/proc -compact
+.It Pa /compat/linux
+minimal Linux run-time environment
+.It Pa /compat/linux/proc
+limited Linux process file system
+.It Pa /compat/linux/sys
+limited Linux system file system
+.El
+.Sh SEE ALSO
+.Xr brandelf 1 ,
+.Xr elf 5 ,
+.Xr linprocfs 5 ,
+.Xr linsysfs 5
+.Sh HISTORY
+Linux ABI support first appeared in
+.Fx 2.1 .
diff --git a/share/man/man4/lmc.4 b/share/man/man4/lmc.4
new file mode 100644
index 0000000..dc8e47b
--- /dev/null
+++ b/share/man/man4/lmc.4
@@ -0,0 +1,766 @@
+.\"
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2002-2005 David Boggs. (boggs@boggs.palo-alto.ca.us)
+.\" All rights reserved.
+.\"
+.\" BSD License:
+.\"
+.\" 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.
+.\"
+.\" GNU General Public License:
+.\"
+.\" This program is free software; you can redistribute it and/or modify it
+.\" under the terms of the GNU General Public License as published by the Free
+.\" Software Foundation; either version 2 of the License, or (at your option)
+.\" any later version.
+.\"
+.\" This program is distributed in the hope that it will be useful, but WITHOUT
+.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+.\" more details.
+.\"
+.\" You should have received a copy of the GNU General Public License along with
+.\" this program; if not, write to the Free Software Foundation, Inc., 59
+.\" Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+.\"
+.Dd May 20, 2006
+.Dt LMC 4
+.Os
+.\"
+.Sh NAME
+.\"
+.Nm lmc
+.Nd device driver for
+.Tn LMC
+(now
+.Tn SBE )
+wide-area network interface cards
+.\"
+.Sh SYNOPSIS
+.\"
+To wire this driver into your kernel,
+add the following line to your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device lmc"
+.Ed
+.Pp
+Alternatively, to load this module at boot time, add
+.Bd -literal -offset indent
+if_lmc_load="YES"
+.Ed
+.Pp
+to
+.Pa /boot/loader.conf ;
+see
+.Xr loader.conf 5 .
+.Pp
+To wire a line protocol into your kernel, add:
+.Bd -ragged -offset indent
+.Cd "options NETGRAPH"
+.Cd "device sppp"
+.Ed
+.Pp
+It is not necessary to wire line protocols into your kernel,
+they can be loaded later with
+.Xr kldload 8 .
+The driver can send and receive raw IP packets even if neither
+SPPP nor Netgraph are configured into the kernel.
+Netgraph and SPPP can both be enabled; Netgraph will be used if the
+.Va rawdata
+hook is connected.
+.\"
+.Sh DESCRIPTION
+.\"
+This is an open-source
+.Ux
+device driver for PCI-bus WAN interface cards.
+It sends and receives packets in HDLC frames over synchronous circuits.
+A generic PC plus
+.Ux
+plus some
+.Tn LMC / SBE
+cards makes an
+.Em open
+router.
+This driver works with
+.Fx ,
+.Nx ,
+.Ox ,
+.Bsx
+and
+.Tn Linux
+OSs.
+It has been tested on i386 (SMP 32-bit little-endian) and Sparc (64-bit big-endian)
+architectures.
+.Pp
+The
+.Nm
+driver works with the following cards:
+.Bl -bullet
+.It
+SBE wanADAPT-HSSI (LMC5200)
+.Pp
+High Speed Serial Interface,
+EIA612/613, 50-pin connector,
+0 to 52 Mb/s, DTE only.
+.It
+SBE wanADAPT-T3 (LMC5245)
+.Pp
+T3: two 75-ohm BNC connectors,
+C-Parity or M13 Framing,
+44.736 Mb/s, up to 950 ft.
+.It
+SBE wanADAPT-SSI (LMC1000)
+.Pp
+Synchronous Serial Interface,
+V.35, X.21, EIA449, EIA530(A), EIA232,
+0 to 10 Mb/s, DTE or DCE.
+.It
+SBE wanADAPT-T1E1 (LMC1200)
+.Pp
+T1 or E1: RJ45 conn, 100 or 120 ohms,
+T1-ESF-B8ZS, T1-SF-AMI, E1-(many)-HDB3,
+1.544 Mb/s or 2.048 Mb/s, up to 6 Kft.
+.El
+.Pp
+Cards contain a high-performance
+.Sy "PCI"
+interface, an
+.Sy "HDLC"
+function and
+either integrated
+.Sy "modems"
+(T1, T3) or
+.Sy "modem"
+interfaces (HSSI and SSI).
+.Bl -tag -width "Modem"
+.It Sy "PCI"
+The PCI interface is a DEC 21140A "Tulip" Fast Ethernet chip.
+This chip has an efficient PCI implementation with scatter/gather DMA,
+and can run at 100 Mb/s full duplex (twice as fast as needed here).
+.It Sy "HDLC"
+The HDLC functions (ISO-3309: flags, bit-stuffing, CRC) are implemented
+in a Field Programmable Gate Array (FPGA) which talks to the Ethernet
+chip through a Media Independent Interface (MII).
+The hardware in the FPGA translates between Ethernet packets and
+HDLC frames on-the-fly; think it as a WAN PHY chip for Ethernet.
+.It Sy "Modem"
+The modem chips are the main differences between cards.
+HSSI cards use ECL10K chips to implement the EIA-612/613 interface.
+T3 cards use a TranSwitch TXC-03401 framer chip.
+SSI cards use Linear Technology LTC1343 modem interface chips.
+T1 cards use a BrookTree/Conexant/Mindspeed Bt8370 framer
+and line interface chip.
+.El
+.Pp
+Line protocols exist above device drivers and below internet protocols.
+They typically encapsulate packets in HDLC frames and deal with
+higher-level issues like protocol multiplexing and security.
+This driver is compatible with several line protocol packages:
+.Bl -tag -width "Generic HDLC"
+.It Sy "Netgraph"
+.Xr Netgraph 4
+implements many basic packet-handling functions as kernel loadable modules.
+They can be interconnected in a graph to implement many protocols.
+Configuration is done from userland without rebuilding the kernel.
+Packets are sent and received through this interface if the driver's
+.Em rawdata
+hook is connected, otherwise the ifnet interface (SPPP and RawIP) is used.
+ASCII configuration control messages are
+.Em not
+currently supported.
+.It Sy "SPPP"
+.Xr sppp 4
+implements Synchronous-PPP, Frame-Relay and Cisco-HDLC in the kernel.
+.It Sy "RawIP"
+This null line protocol, built into the driver, sends and receives
+raw IPv4 and IPv6 packets in HDLC frames (aka IP-in-HDLC) with
+no extra bytes of overhead and no state at the end points.
+.El
+.\"
+.Sh EXAMPLES
+.\"
+.Ss "ifconfig and lmcconfig"
+.\"
+The program
+.Xr lmcconfig 8
+manipulates interface parameters beyond the scope of
+.Xr ifconfig 8 .
+In normal operation only a few arguments are needed:
+.Pp
+.Bl -tag -width ".Fl X" -offset indent -compact
+.It Fl X
+selects the external
+SPPP
+line protocol package.
+.It Fl x
+selects the built-in RawIP line protocol package.
+.It Fl Z
+selects PPP line protocol.
+.It Fl z
+selects Cisco-HDLC line protocol.
+.It Fl F
+selects Frame-Relay line protocol.
+.El
+.Bl -tag -width indent
+.It Li "lmcconfig lmc0"
+displays interface configuration and status.
+.It Li "lmcconfig lmc0 -D"
+enables debugging output from the device driver only.
+.It Li "ifconfig lmc0 debug"
+enables debugging output from the device driver and from
+the line protocol module above it.
+Debugging messages that appear on the console are also
+written to file
+.Pa "/var/log/messages" .
+.Em Caution :
+when things go very wrong, a torrent of debugging messages
+can swamp the console and bring a machine to its knees.
+.El
+.\"
+.Ss Operation
+.\"
+Activate a PPP link using SPPP and Netgraph with:
+.Bd -literal -offset indent
+ngctl mkpeer lmc0: sppp rawdata downstream
+ifconfig sppp0 10.0.0.1 10.0.0.2
+.Ed
+.Pp
+Activate a PPP link using only SPPP with:
+.Bd -literal -offset indent
+lmcconfig lmc0 -XYZ
+ifconfig lmc0 10.0.0.1 10.0.0.2
+.Ed
+.Pp
+Activate a Cisco-HDLC link using SPPP and Netgraph with:
+.Bd -literal -offset indent
+ngctl mkpeer lmc0: sppp rawdata downstream
+ifconfig sppp0 10.0.0.1 10.0.0.2 link2
+.Ed
+.Pp
+Activate a Cisco-HDLC link using only SPPP with:
+.Bd -literal -offset indent
+lmcconfig lmc0 -XYz
+ifconfig lmc0 10.0.0.1 10.0.0.2
+.Ed
+.Pp
+Activate a Cisco-HDLC link using only Netgraph with:
+.Bd -literal -offset indent
+ngctl mkpeer lmc0: cisco rawdata downstream
+ngctl mkpeer lmc0:rawdata iface inet inet
+ifconfig ng0 10.0.0.1 10.0.0.2
+.Ed
+.Pp
+Activate a Frame-Relay DTE link using SPPP with:
+.Bd -literal -offset indent
+lmcconfig lmc0 -XYF
+ifconfig lmc0 10.0.0.1 10.0.0.2
+.Ed
+.Pp
+(SPPP implements the ANSI T1.617 annex D LMI.)
+.Pp
+Activate a Frame-Relay DTE link using Netgraph with:
+.Bd -literal -offset indent
+ngctl mkpeer lmc0: frame_relay rawdata downstream
+ngctl mkpeer lmc0:rawdata lmi dlci0 auto0
+ngctl connect lmc0:rawdata dlci0 dlci1023 auto1023
+ngctl mkpeer lmc0:rawdata rfc1490 dlci500 downstream
+ngctl mkpeer lmc0:rawdata.dlci500 iface inet inet
+ifconfig ng0 10.0.0.1 10.0.0.2
+.Ed
+This is
+.Em ONE
+possible Frame Relay configuration; there are many.
+.Pp
+Activate a RAWIP link using only the driver with:
+.Bd -literal -offset indent
+lmcconfig lmc0 -x
+ifconfig lmc0 10.0.0.1 10.0.0.2
+.Ed
+.Pp
+Activate a RAWIP link using Netgraph with:
+.Bd -literal -offset indent
+ngctl mkpeer lmc0: iface rawdata inet
+ifconfig ng0 10.0.0.1 10.0.0.2
+.Ed
+.Pp
+If the driver is unloaded and then loaded, reconnect hooks by:
+.Pp
+.Dl "ngctl connect lmc0: ng0: rawdata inet"
+.\"
+.Sh TESTING
+.\"
+.Ss Testing with Loopbacks
+.\"
+Testing with loopbacks requires only one card.
+Packets can be looped back at many points: in the PCI chip,
+in the modem chips, through a loopback plug, in the
+local external equipment, or at the far end of a circuit.
+.Pp
+Activate the card with
+.Xr ifconfig 8 :
+.Pp
+.Dl "ifconfig lmc0 10.0.0.1 10.0.0.1"
+.Pp
+All cards can be looped through the PCI chip.
+Cards with internal modems can be looped through
+the modem framer and the modem line interface.
+Cards for external modems can be looped through
+the driver/receiver chips.
+See
+.Xr lmcconfig 8
+for details.
+.Pp
+Loopback plugs test everything on the card.
+.Bl -tag -width ".Sy T1/E1"
+.It Sy HSSI
+Loopback plugs can be ordered from SBE (and others).
+Transmit clock is normally supplied by the external modem.
+When an HSSI card is operated with a loopback plug, the PCI bus
+clock must be used as the transmit clock, typically 33 MHz.
+When testing an HSSI card with a loopback plug,
+configure it with
+.Xr lmcconfig 8 :
+.Pp
+.Dl "lmcconfig lmc0 -a 2"
+.Pp
+.Dq Fl a Li 2
+selects the PCI bus clock as the transmit clock.
+.It Sy T3
+Connect the two BNC jacks with a short coax cable.
+.It Sy SSI
+Loopback plugs can be ordered from SBE (only).
+Transmit clock is normally supplied by the external modem.
+When an SSI card is operated with a loopback plug,
+the on-board clock synthesizer must be used.
+When testing an SSI card with a loopback plug,
+configure it with
+.Xr lmcconfig 8 :
+.Pp
+.Dl "lmcconfig lmc0 -E -f 10000000"
+.Pp
+.Fl E
+puts the card in DCE mode to source a transmit clock.
+.Dq Fl f Li 10000000
+sets the internal clock source to 10 Mb/s.
+.It Sy T1/E1
+A loopback plug is a modular plug with two wires
+connecting pin 1 to pin 4 and pin 2 to pin 5.
+.El
+.Pp
+One can also test by connecting to a local modem (HSSI and SSI)
+or NI (T1 and T3) configured to loop back.
+Cards can generate signals to loopback remote equipment
+so that complete circuits can be tested; see
+.Xr lmcconfig 8
+for details.
+.\"
+.Ss Testing with a Modem
+.\"
+Testing with a modem requires two cards of different types.
+.Bl -tag -width ".Sy T3/HSSI"
+.It Sy T3/HSSI
+If you have a T3 modem with an HSSI interface
+(made by Digital Link, Larscom, Kentrox etc.\&)
+then use an HSSI card in one machine and a T3 card in the other machine.
+The T3 coax cables must use the null modem configuration (see below).
+.It Sy T1/V.35
+If you have a T1 (or E1) modem with a V.35, X.21 or EIA530 interface,
+then use an SSI card in one machine and a T1 card in the other machine.
+Use a T1 null modem cable (see below).
+.El
+.\"
+.Ss Testing with a Null Modem Cable
+.\"
+Testing with a null modem cable requires two cards of the same type.
+.Bl -tag -width ".Sy T1/E1"
+.It Sy HSSI
+Three-meter HSSI null-modem cables can be ordered from SBE.
+In a pinch, a 50-pin SCSI-II cable up to a few meters will
+work as a straight HSSI cable (not a null modem cable).
+Longer cables should be purpose-built HSSI cables because
+the cable impedance is different.
+Transmit clock is normally supplied by the external modem.
+When an HSSI card is connected by a null modem cable, the PCI bus
+clock can be used as the transmit clock, typically 33 MHz.
+When testing an HSSI card with a null modem cable, configure it
+with
+.Xr lmcconfig 8 :
+.Pp
+.Dl "lmcconfig lmc0 -a 2
+.Pp
+.Dq Fl a Li 2
+selects the PCI bus clock as the transmit clock.
+.It Sy T3
+T3 null modem cables are just 75-ohm coax cables with BNC connectors.
+TX OUT on one card should be connected to RX IN on the other card.
+In a pinch, 50-ohm thin Ethernet cables
+.Em usually
+work up to a few meters, but they will
+.Em not
+work for longer runs \[em] 75-ohm coax is
+.Em required .
+.It Sy SSI
+Three-meter SSI null modem cables can be ordered from SBE.
+An SSI null modem cable reports a cable type of V.36/EIA449.
+Transmit clock is normally supplied by the external modem.
+When an SSI card is connected by a null modem cable,
+an on-board clock synthesizer is used.
+When testing an SSI card with a null modem cable, configure it
+with
+.Xr lmcconfig 8 :
+.Pp
+.Dl "lmcconfig lmc0 -E -f 10000000"
+.Pp
+.Fl E
+puts the card in DCE mode to source a transmit clock.
+.Dq Fl f Li 10000000
+sets the internal clock source to 10 Mb/s.
+.It Sy T1/E1
+A T1 null modem cable has two twisted pairs that connect
+pins 1 and 2 on one plug to pins 4 and 5 on the other plug.
+Looking into the cable entry hole of a plug,
+with the locking tab oriented down,
+pin 1 is on the left.
+A twisted pair Ethernet cable makes an excellent straight T1 cable.
+Alas, Ethernet cross-over cables do not work as T1 null modem cables.
+.El
+.\"
+.Sh OPERATION NOTES
+.\"
+.Ss Packet Lengths
+Maximum transmit and receive packet length is unlimited.
+Minimum transmit and receive packet length is one byte.
+.Pp
+Cleaning up after one packet and setting up for the next
+packet involves making several DMA references.
+This can take longer than the duration of a short packet,
+causing the adapter to fall behind.
+For typical PCI bus traffic levels and memory system latencies,
+back-to-back packets longer than about 20 bytes will always
+work (53 byte cells work), but a burst of several hundred
+back-to-back packets shorter than 20 bytes will cause packets
+to be dropped.
+This usually is not a problem since an IPv4 packet header is
+at least 20 bytes long.
+.Pp
+This device driver imposes no constraints on packet size.
+Most operating systems set the default Maximum Transmission
+Unit (MTU) to 1500 bytes; the legal range is usually (72..65535).
+This can be changed with
+.Pp
+.Dl "ifconfig lmc0 mtu 2000"
+.Pp
+SPPP enforces an MTU of (128..far-end-MRU) for PPP
+and 1500 bytes for Cisco-HDLC.
+RAWIP sets the default MTU to 4032 bytes,
+but it can be changed to anything.
+.\"
+.Ss BPF - Berkeley Packet Filter
+.\"
+This driver has hooks for
+.Xr bpf 4 ,
+the Berkeley Packet Filter.
+The line protocol header length reported to BPF is four bytes
+for SPPP and P2P line protocols and zero bytes for RawIP.
+.Pp
+To include BPF support into your kernel,
+add the following line to
+.Pa conf/YOURKERNEL :
+.Pp
+.Dl "device bpf"
+.Pp
+To test the BPF kernel interface,
+bring up a link between two machines, then run
+.Xr ping 8
+and
+.Xr tcpdump 1 :
+.Pp
+.Dl "ping 10.0.0.1"
+.Pp
+and in a different window:
+.Pp
+.Dl "tcpdump -i lmc0"
+.Pp
+The output from
+.Xr tcpdump 1
+should look like this:
+.Bd -literal -offset indent
+03:54:35.979965 10.0.0.2 > 10.0.0.1: icmp: echo request
+03:54:35.981423 10.0.0.1 > 10.0.0.2: icmp: echo reply
+.Ed
+.Pp
+Line protocol control packets will appear among the
+.Xr ping 8
+packets occasionally.
+.\"
+.Ss Device Polling
+.\"
+A T3 receiver can generate over 100K interrupts per second,
+This can cause a system to
+.Dq live-lock :
+spend all of its
+time servicing interrupts.
+.Fx
+has a polling mechanism to prevent live-lock.
+.Pp
+.Fx Ns 's
+mechanism permanently disables interrupts from the card
+and instead the card's interrupt service routine is called each
+time the kernel is entered (syscall, timer interrupt, etc.\&) and
+from the kernel idle loop; this adds some latency.
+The driver is permitted to process a limited number of packets.
+The percentage of the CPU that can be consumed this way is settable.
+.Pp
+See the
+.Xr polling 4
+manpage for details on how to enable the polling mode.
+.\"
+.Ss SNMP: Simple Network Management Protocol
+.\"
+This driver is aware of what is required to be a Network Interface
+Object managed by an Agent of the Simple Network Management Protocol.
+The driver exports SNMP-formatted configuration and status
+information sufficient for an SNMP Agent to create MIBs for:
+.Pp
+.Bl -item -offset indent -compact
+.It
+.%T "RFC-2233: Interfaces group" ,
+.It
+.%T "RFC-2496: DS3 interfaces" ,
+.It
+.%T "RFC-2495: DS1/E1 interfaces" ,
+.It
+.%T "RFC-1659: RS232-like interfaces" .
+.El
+.Pp
+An SNMP Agent is a user program, not a kernel function.
+Agents can retrieve configuration and status information
+by using
+Netgraph control messages or
+.Xr ioctl 2
+system calls.
+User programs should poll
+.Va sc->cfg.ticks
+which increments once per second after the SNMP state has been updated.
+.\"
+.Ss HSSI and SSI LEDs
+.\"
+The card should be operational if all three green LEDs are on
+(the upper-left one should be blinking) and the red LED is off.
+All four LEDs turn on at power-on and module unload.
+.Pp
+.Bl -column -compact -offset indent "YELLOW" "upper-right" "Software"
+.It "RED" Ta "upper-right" Ta "No Transmit clock"
+.It "GREEN" Ta "upper-left" Ta "Device driver is alive if blinking"
+.It "GREEN" Ta "lower-right" Ta "Modem signals are good"
+.It "GREEN" Ta "lower-left" Ta "Cable is plugged in (SSI only)"
+.El
+.\"
+.Ss T1E1 and T3 LEDs
+.\"
+The card should be operational if the upper-left green LED is blinking
+and all other LEDs are off.
+For the T3 card, if other LEDs are on or
+blinking, try swapping the coax cables!
+All four LEDs turn on at power-on and module unload.
+.Pp
+.Bl -column -compact -offset indent "YELLOW" "upper-right" "Received"
+.It "RED" Ta "upper-right" Ta "Received signal is wrong"
+.It "GREEN" Ta "upper-left" Ta "Device driver is alive if blinking"
+.It "BLUE" Ta "lower-right" Ta "Alarm Information Signal (AIS)"
+.It "YELLOW" Ta "lower-left" Ta "Remote Alarm Indication (RAI)"
+.El \" YELLOW
+.Pp
+.Bl -column -compact "The yellow" "LED"
+.It "The green" Ta "LED blinks if the device driver is alive."
+.It "The red" Ta "LED blinks if an outward loopback is active."
+.It "The blue" Ta "LED blinks if sending AIS, on solid if receiving AIS."
+.It "The yellow" Ta "LED blinks if sending RAI, on solid if receiving RAI."
+.El \" LED
+.\"
+.Ss E1 Framing
+.\"
+Phone companies usually insist that customers put a
+.Em Frame Alignment Signal
+(FAS) in time slot 0.
+A Cyclic Redundancy Checksum (CRC) can also ride in time slot 0.
+.Em Channel Associated Signalling
+(CAS) uses Time Slot 16.
+In telco-speak
+.Em signalling
+is on/off hook, ringing, busy, etc.
+Signalling is not needed here and consumes 64 Kb/s.
+Only use E1-CAS formats if the other end insists on it!
+Use E1-FAS+CRC framing format on a public circuit.
+Depending on the equipment installed in a private circuit,
+it may be possible to use all 32 time slots for data (E1-NONE).
+.\"
+.Ss T3 Framing
+.\"
+M13 is a technique for multiplexing 28 T1s into a T3.
+Muxes use the C-bits for speed-matching the tributaries.
+Muxing is not needed here and usurps the FEBE and FEAC bits.
+Only use T3-M13 format if the other end insists on it!
+Use T3-CParity framing format if possible.
+Loop Timing, Fractional T3, and HDLC packets in
+the Facility Data Link are
+.Em not
+supported.
+.\"
+.Ss T1 & T3 Frame Overhead Functions
+.\"
+.Bl -item -compact
+.It
+Performance Report Messages (PRMs) are enabled in T1-ESF.
+.It
+Bit Oriented Protocol (BOP) messages are enabled in T1-ESF.
+.It
+In-band loopback control (framed or not) is enabled in T1-SF.
+.It
+Far End Alarm and Control (FEAC) msgs are enabled in T3-CPar.
+.It
+Far End Block Error (FEBE) reports are enabled in T3-CPar.
+.It
+Remote Alarm Indication (RAI) is enabled in T3-Any.
+.It
+Loopbacks initiated remotely time out after 300 seconds.
+.El
+.\"
+.Ss T1/E1 'Fractional' 64 kb/s Time Slots
+.\"
+T1 uses time slots 24..1; E1 uses time slots 31..0.
+E1 uses TS0 for FAS overhead and TS16 for CAS overhead.
+E1-NONE has
+.Em no
+overhead, so all 32 TSs are available for data.
+Enable/disable time slots by setting 32 1s/0s in a config param.
+Enabling an E1 overhead time slot,
+or enabling TS0 or TS25-TS31 for T1,
+is ignored by the driver, which knows better.
+The default TS param, 0xFFFFFFFF, enables the maximum number
+of time slots for whatever frame format is selected.
+56 Kb/s time slots are
+.Em not
+supported.
+.\"
+.Ss T1 Raw Mode
+.\"
+Special gate array microcode exists for the T1/E1 card.
+Each T1 frame of 24 bytes is treated as a packet.
+A raw T1 byte stream can be delivered to main memory
+and transmitted from main memory.
+The T1 card adds or deletes framing bits but does not
+touch the data.
+ATM cells can be transmitted and received this way, with
+the software doing all the work.
+But that is not hard; after all it is only 1.5 Mb/s second!
+.\"
+.Ss T3 Circuit Emulation Mode
+.\"
+Special gate array microcode exists for the T3 card.
+Each T3 frame of 595 bytes is treated as a packet.
+A raw T3 signal can be
+.Em packetized ,
+transported through a
+packet network (using some protocol) and then
+.Em reconstituted
+as a T3 signal at the far end.
+The output transmitter's
+bit rate can be controlled from software so that it can be
+.Em frequency locked
+to the distant input signal.
+.\"
+.Ss HSSI and SSI Transmit Clocks
+.\"
+Synchronous interfaces use two transmit clocks to eliminate
+.Em skew
+caused by speed-of-light delays in the modem cable.
+DCEs (modems) drive ST, Send Timing, the first transmit clock.
+DTEs (hosts) receive ST and use it to clock transmit data, TD,
+onto the modem cable.
+DTEs also drive a copy of ST back towards the DCE and call it TT,
+Transmit Timing, the second transmit clock.
+DCEs receive TT and TD and use TT to clock TD into a flip flop.
+TT experiences the same delay as (and has no
+.Em skew
+relative to) TD.
+Thus, cable length does not affect data/clock timing.
+.\"
+.Sh SEE ALSO
+.\"
+.Xr tcpdump 1 ,
+.Xr ioctl 2 ,
+.Xr bpf 4 ,
+.Xr kld 4 ,
+.Xr netgraph 4 ,
+.Xr polling 4 ,
+.Xr sppp 4 ,
+.Xr loader.conf 5 ,
+.Xr ifconfig 8 ,
+.Xr lmcconfig 8 ,
+.Xr mpd 8 Pq Pa ports/net/mpd ,
+.Xr ngctl 8 ,
+.Xr ping 8 ,
+.Xr ifnet 9
+.Pp
+.Pa http://www.sbei.com/
+.\"
+.Sh HISTORY
+.\"
+.An Ron Crane
+had the idea to use a Fast Ethernet chip as a PCI interface
+and add an Ethernet-to-HDLC gate array to make a WAN card.
+.An David Boggs
+designed the Ethernet-to-HDLC gate array and PC cards.
+We did this at our company, LAN Media Corporation
+.Tn (LMC) .
+.Tn SBE
+Corp.\& acquired
+.Tn LMC
+and continues to make the cards.
+.Pp
+Since the cards use Tulip Ethernet chips, we started with
+.An Matt Thomas Ns '
+ubiquitous
+.Xr de 4
+driver.
+.An Michael Graff
+stripped out the Ethernet stuff and added HSSI stuff.
+.An Basil Gunn
+ported it to
+.Tn Solaris
+(lost) and
+.Tn Rob Braun
+ported it to
+.Tn Linux .
+.An Andrew Stanley-Jones
+added support
+for three more cards and wrote the first version of
+.Xr lmcconfig 8 .
+.An David Boggs
+rewrote everything and now feels responsible for it.
+.\"
+.Sh AUTHORS
+.\"
+.An "David Boggs" Aq boggs@boggs.palo-alto.ca.us
diff --git a/share/man/man4/lo.4 b/share/man/man4/lo.4
new file mode 100644
index 0000000..86dd47e
--- /dev/null
+++ b/share/man/man4/lo.4
@@ -0,0 +1,81 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)lo.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt LO 4
+.Os
+.Sh NAME
+.Nm lo
+.Nd software loopback network interface
+.Sh SYNOPSIS
+.Cd "device loop"
+.Sh DESCRIPTION
+The
+.Nm loop
+interface is a software loopback mechanism which may be
+used for performance analysis, software testing, and/or local
+communication.
+As with other network interfaces, the loopback interface must have
+network addresses assigned for each address family with which it is to be used.
+These addresses
+may be set or changed with the
+.Dv SIOCSIFADDR
+.Xr ioctl 2 .
+The loopback interface should be the last interface configured,
+as protocols may use the order of configuration as an indication of priority.
+The loopback should
+.Em never
+be configured first unless no hardware
+interfaces exist.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It lo%d: can't handle af%d.
+The interface was handed
+a message with addresses formatted in an unsuitable address
+family; the packet was dropped.
+.El
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr intro 4
+.\" .Xr ns 4
+.Sh HISTORY
+The
+.Nm
+device appeared in
+.Bx 4.2 .
+.Sh BUGS
+Previous versions of the system enabled the loopback interface
+automatically, using a nonstandard Internet address (127.1).
+Use of that address is now discouraged; a reserved host address
+for the local network should be used instead.
diff --git a/share/man/man4/lp.4 b/share/man/man4/lp.4
new file mode 100644
index 0000000..6976101
--- /dev/null
+++ b/share/man/man4/lp.4
@@ -0,0 +1,245 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 A.R.Gordon, andrew.gordon@net-tel.co.uk
+.\" 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 the University of
+.\" California, Berkeley and its contributors.
+.\" 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 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.
+.\"
+.\" Id: man4.i386/lp.4,v 1.9 1999/02/14 12:06:16 nsouch Exp
+.\" $FreeBSD$
+.\"
+.Dd March 4, 1996
+.Os
+.Dt LP 4
+.Sh NAME
+.Nm lp
+.Nd printer port Internet Protocol driver
+.Sh SYNOPSIS
+.Nm ifconfig
+.Ar plip0
+.Ar myaddress hisaddress
+.Op Fl link0
+.Pp
+.Cd "device ppbus"
+.Cd "device plip"
+.Cd "device ppc"
+.Sh DESCRIPTION
+The
+.Nm
+driver allows a PC parallel printer port to be used as a
+point-to-point network interface between two similarly configured systems.
+Data is transferred 4 bits at a time, using the printer status lines for
+input: hence there is no requirement for special bidirectional hardware
+and any standard AT-compatible printer port with working interrupts may be used.
+.Pp
+During the boot process, for each
+.Nm plip
+device which is probed and has an interrupt assigned, a corresponding
+.Nm network
+device is created.
+.Pp
+Configuring an
+.Nm
+device with
+.Xr ifconfig 8
+causes the corresponding
+.Nm parallel port bus
+to be reserved for PLIP until the network interface is configured 'down'.
+.Pp
+The communication protocol is selected by the
+.Cm link0
+flag:
+.Bl -tag -width Fl
+.It Fl link0
+(default) Use
+.Fx
+mode (LPIP).
+This is the simpler of the two modes
+and therefore slightly more efficient.
+.It Cm link0
+Use Crynwr/Linux compatible mode (CLPIP).
+This mode has a simulated Ethernet
+packet header, and is easier to interface to other types of equipment.
+.El
+.Pp
+The interface MTU defaults to 1500, but may be set to any value.
+Both ends
+of the link must be configured with the same MTU.
+.Ss Cable Connections
+The cable connecting the two parallel ports should be wired as follows:
+.Bd -literal
+ Pin Pin Description
+ 2 15 Data0 -> ERROR*
+ 3 13 Data1 -> SLCT
+ 4 12 Data2 -> PE
+ 5 10 Data3 -> ACK*
+ 6 11 Data4 -> BUSY
+ 15 2 ERROR* -> Data0
+ 13 3 SLCT -> Data1
+ 12 4 PE -> Data2
+ 10 5 ACK* -> Data3
+ 11 6 BUSY -> Data4
+ 18-25 18-25 Ground
+.Ed
+.Pp
+Cables with this wiring are widely available as 'Laplink' cables, and
+are often coloured yellow.
+.Pp
+The connections are symmetric, and provide 5 lines in each direction (four
+data plus one handshake).
+The two modes use the same wiring, but make a
+different choice of which line to use as handshake.
+.Ss FreeBSD LPIP mode
+The signal lines are used as follows:
+.Bl -tag -width dataxxxx(Pinxx)
+.It Em Data0 (Pin 2)
+Data out, bit 0.
+.It Em Data1 (Pin 3)
+Data out, bit 1.
+.It Em Data2 (Pin 4)
+Data out, bit 2.
+.It Em Data3 (Pin 5)
+Handshake out.
+.It Em Data4 (Pin 6)
+Data out, bit 3.
+.It Em ERROR* (pin 15)
+Data in, bit 0.
+.It Em SLCT (pin 13)
+Data in, bit 1.
+.It Em PE (pin 12)
+Data in, bit 2.
+.It Em BUSY (pin 11)
+Data in, bit 3.
+.It Em ACK* (pin 10)
+Handshake in.
+.El
+.Pp
+When idle, all data lines are at zero.
+Each byte is signalled in four steps:
+sender writes the 4 most significant bits and raises the handshake line;
+receiver reads the 4 bits and raises its handshake to acknowledge;
+sender places the 4 least significant bits on the data lines and lowers
+the handshake; receiver reads the data and lowers its handshake.
+.Pp
+The packet format has a two-byte header, comprising the fixed values 0x08,
+0x00, immediately followed by the IP header and data.
+.Pp
+The start of a packet is indicated by simply signalling the first byte
+of the header.
+The end of the packet is indicated by inverting
+the data lines (i.e., writing the ones-complement of the previous nibble
+to be transmitted) without changing the state of the handshake.
+.Pp
+Note that the end-of-packet marker assumes that the handshake signal and
+the data-out bits can be written in a single instruction - otherwise
+certain byte values in the packet data would falsely be interpreted
+as end-of-packet.
+This is not a problem for the PC printer port,
+but requires care when implementing this protocol on other equipment.
+.Ss Crynwr/Linux CLPIP mode
+The signal lines are used as follows:
+.Bl -tag -width dataxxxx(Pinxx)
+.It Em Data0 (Pin 2)
+Data out, bit 0.
+.It Em Data1 (Pin 3)
+Data out, bit 1.
+.It Em Data2 (Pin 4)
+Data out, bit 2.
+.It Em Data3 (Pin 5)
+Data out, bit 3.
+.It Em Data4 (Pin 6)
+Handshake out.
+.It Em ERROR* (pin 15)
+Data in, bit 0.
+.It Em SLCT (pin 13)
+Data in, bit 1.
+.It Em PE (pin 12)
+Data in, bit 2.
+.It Em ACK* (pin 10)
+Data in, bit 3.
+.It Em BUSY (pin 11)
+Handshake in.
+.El
+.Pp
+When idle, all data lines are at zero.
+Each byte is signalled in four steps:
+sender writes the 4 least significant bits and raises the handshake line;
+receiver reads the 4 bits and raises its handshake to acknowledge;
+sender places the 4 most significant bits on the data lines and lowers
+the handshake; receiver reads the data and lowers its handshake.
+[Note that this is the opposite nibble order to LPIP mode].
+.Pp
+Packet format is:
+.Bd -literal
+Length (least significant byte)
+Length (most significant byte)
+12 bytes of supposed MAC addresses (ignored by FreeBSD).
+Fixed byte 0x08
+Fixed byte 0x00
+<IP datagram>
+Checksum byte.
+.Ed
+.Pp
+The length includes the 14 header bytes, but not the length bytes themselves
+nor the checksum byte.
+.Pp
+The checksum is a simple arithmetic sum of all the bytes (again, including
+the header but not checksum or length bytes).
+.Fx
+calculates
+outgoing checksums, but does not validate incoming ones.
+.Pp
+The start of packet has to be signalled specially, since the line chosen
+for handshake-in cannot be used to generate an interrupt.
+The sender writes the value 0x08 to the data lines, and waits for the receiver
+to respond by writing 0x01 to its data lines.
+The sender then starts
+signalling the first byte of the packet (the length byte).
+.Pp
+End of packet is deduced from the packet length and is not signalled
+specially (although the data lines are restored to the zero, idle
+state to avoid spuriously indicating the start of the next packet).
+.Sh SEE ALSO
+.Xr ppbus 4 ,
+.Xr ppc 4 ,
+.Xr ifconfig 8
+.Sh BUGS
+Busy-waiting loops are used while handshaking bytes, (and worse still when
+waiting for the receiving system to respond to an interrupt for the start
+of a packet).
+Hence a fast system talking to a slow one will consume
+excessive amounts of CPU.
+This is unavoidable in the case of CLPIP mode
+due to the choice of handshake lines; it could theoretically be improved
+in the case of LPIP mode.
+.Pp
+Polling timeouts are controlled by counting loop iterations rather than
+timers, and so are dependent on CPU speed.
+This is somewhat stabilised
+by the need to perform (slow) ISA bus cycles to actually read the port.
diff --git a/share/man/man4/lpbb.4 b/share/man/man4/lpbb.4
new file mode 100644
index 0000000..77e70c5
--- /dev/null
+++ b/share/man/man4/lpbb.4
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" 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$
+.\"
+.Dd October 25, 1998
+.Dt LPBB 4
+.Os
+.Sh NAME
+.Nm lpbb
+.Nd parallel port I2C bit-banging interface
+.Sh SYNOPSIS
+.Cd "device iicbus"
+.Cd "device iicbb"
+.Pp
+.Cd "device lpbb"
+.Cd "device iic"
+.Sh DESCRIPTION
+The
+.Em lpbb
+driver supports the Philips official I2C parallel bit-banging interface.
+.Pp
+.Bd -literal
+
+ LS05 pin 14 (Vcc) o -------
+ | | |
+ +--+--+---------------------+--+--+------------+------+-o 1 |
+ | | | | | | ===.1uF | +5V |
+ -------- [R][R][R] 3x10K 3x10K [R][R][R] LS05 | | |
+ | | | | | | | | pin 7 o-+------+-o 2 |
+ | 12 o-+--+ | | 3|\\ 4 | | | (Gnd) | GND |
+ | 17 o-+-----|--|----| >o-------------+--|--|--------------+ | |
+ | | | | |/ 8 /|9 | | 10 /|11 +----+-o 3 |
+ | 15 o-+-----+--|--------------o< |------+--|------o< |----+ | SCL |
+ | | | 1|\\ 2 \\| | \\| | |
+ | 9 o-+--------|----| >o-------------------+--------------+----+-o 4 |
+ | | | |/ 6 /|5 | | SDA |
+ | 11 o-+--------+----------------------------------o< |----+ -------
+ | 10 o-+-+ \\| 4-pin
+ | 13 o-+-+--oGND Connector
+ | 25 o-+-+ ------------------ Part List --------------------------
+ -------- | 1 - .1 uF capacitor | 6 - 10K 5% resistors |
+ 25-pin male D | 1 - 4-pin connector | 1 - 25-pin male D connector |
+ connector to PC | 1 - 74LS05 open collector hex inverter |
+ printer port -------------------------------------------------------
+.Ed
+.Sh SEE ALSO
+.Xr iicbb 4 ,
+.Xr iicbus 4 ,
+.Xr ppbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/lpt.4 b/share/man/man4/lpt.4
new file mode 100644
index 0000000..8b3dd57
--- /dev/null
+++ b/share/man/man4/lpt.4
@@ -0,0 +1,98 @@
+.\"
+.\" Copyright (c) 1993 Christopher G. Demetriou
+.\" Copyright (c) 1994 Geoffrey M. Rehmet
+.\" Copyright (c) 1999 Nicolas Souchu
+.\" 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$
+.\"
+.Dd February 14, 1999
+.Dt LPT 4
+.Os
+.Sh NAME
+.Nm lpt
+.Nd generic printer device driver
+.Sh SYNOPSIS
+.Cd "device ppc"
+.Cd "device ppbus"
+.Cd "device lpt"
+.Sh DESCRIPTION
+The current
+.Em lpt
+driver is the port of the original lpt driver to the
+.Xr ppbus 4
+system.
+.Pp
+One purpose of this port was to allow parallel port sharing with other
+parallel devices.
+Secondly, inb()/outb() calls have been replaced by ppbus
+function calls.
+lpt is now arch-independent thanks to the ppbus interface.
+See
+.Xr ppbus 4
+for more info about the ppbus system.
+.Pp
+The parallel port bus is allocated by lpt when the printer device is opened
+and released only when the transfer is completed: either when the device
+is closed or when the entire buffer is sent in interrupt driven mode.
+.Pp
+The driver can be configured to be either interrupt-driven, or
+to poll the printer.
+Ports that are configured to be
+interrupt-driven can be switched to polled mode by using the
+.Xr lptcontrol 8
+command.
+.Pp
+Depending on your hardware, extended capabilities may be configured with the
+.Xr lptcontrol 8
+command.
+With an ECP/ISA port, you can take advantage
+of FIFO and DMA.
+.Pp
+In order to retrieve printer info from /dev/lpt0, just apply the
+.Nm cat
+command to the device.
+If the printer supports IEEE1284 nibble mode and has
+data to send to the host, you will get it.
+.Sh FILES
+.Bl -tag -width Pa -compact
+.It Pa /dev/lpt0
+first parallel port driver
+.El
+.Sh SEE ALSO
+.Xr ppbus 4 ,
+.Xr ppc 4 ,
+.Xr lptcontrol 8
+.Sh HISTORY
+This driver replaces the functionality of the lpa
+driver, which is now defunct.
+.Sh BUGS
+There are lots of them, especially in cheap parallel port implementations.
+.Pp
+It is only possible to open a lpt port when a printer is connected and
+on-line, making it impossible to run
+.Xr lptcontrol 8
+when there is no printer connected.
+.Pp
+This driver could still stand a rewrite.
diff --git a/share/man/man4/mac.4 b/share/man/man4/mac.4
new file mode 100644
index 0000000..10bc93a
--- /dev/null
+++ b/share/man/man4/mac.4
@@ -0,0 +1,254 @@
+.\" Copyright (c) 2003 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates 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.
+.\"
+.\" 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$
+.\"
+.Dd October 30, 2007
+.Os
+.Dt MAC 4
+.Sh NAME
+.Nm mac
+.Nd Mandatory Access Control
+.Sh SYNOPSIS
+.Cd "options MAC"
+.Sh DESCRIPTION
+.Ss Introduction
+The Mandatory Access Control, or MAC, framework allows administrators to
+finely control system security by providing for a loadable security policy
+architecture.
+It is important to note that due to its nature, MAC security policies may
+only restrict access relative to one another and the base system policy;
+they cannot override traditional
+.Ux
+security provisions such as file permissions and superuser checks.
+.Pp
+Currently, the following MAC policy modules are shipped with
+.Fx :
+.Bl -column ".Xr mac_seeotheruids 4" "low-watermark mac policy" ".Em Labeling" "boot only"
+.It Sy Name Ta Sy Description Ta Sy Labeling Ta Sy "Load time"
+.It Xr mac_biba 4 Ta "Biba integrity policy" Ta yes Ta boot only
+.It Xr mac_bsdextended 4 Ta "File system firewall" Ta no Ta any time
+.It Xr mac_ifoff 4 Ta "Interface silencing" Ta no Ta any time
+.It Xr mac_lomac 4 Ta "Low-Watermark MAC policy" Ta yes Ta boot only
+.It Xr mac_mls 4 Ta "Confidentiality policy" Ta yes Ta boot only
+.It Xr mac_none 4 Ta "Sample no-op policy" Ta no Ta any time
+.It Xr mac_partition 4 Ta "Process partition policy" Ta yes Ta any time
+.It Xr mac_portacl 4 Ta "Port bind(2) access control" Ta no Ta any time
+.It Xr mac_seeotheruids 4 Ta "See-other-UIDs policy" Ta no Ta any time
+.It Xr mac_test 4 Ta "MAC testing policy" Ta no Ta any time
+.El
+.Ss MAC Labels
+Each system subject (processes, sockets, etc.) and each system object
+(file system objects, sockets, etc.) can carry with it a MAC label.
+MAC labels contain data in an arbitrary format
+taken into consideration in making access control decisions
+for a given operation.
+Most MAC labels on system subjects and objects
+can be modified directly or indirectly by the system
+administrator.
+The format for a given policy's label may vary depending on the type
+of object or subject being labeled.
+More information on the format for MAC labels can be found in the
+.Xr maclabel 7
+man page.
+.Ss MAC Support for UFS2 File Systems
+By default, file system enforcement of labeled MAC policies relies on
+a single file system label
+(see
+.Sx "MAC Labels" )
+in order to make access control decisions for all the files in a particular
+file system.
+With some policies, this configuration may not allow administrators to take
+full advantage of features.
+In order to enable support for labeling files on an individual basis
+for a particular file system,
+the
+.Dq multilabel
+flag must be enabled on the file system.
+To set the
+.Dq multilabel
+flag, drop to single-user mode and unmount the file system,
+then execute the following command:
+.Pp
+.Dl "tunefs -l enable" Ar filesystem
+.Pp
+where
+.Ar filesystem
+is either the mount point
+(in
+.Xr fstab 5 )
+or the special file
+(in
+.Pa /dev )
+corresponding to the file system on which to enable multilabel support.
+.Ss Policy Enforcement
+Policy enforcement is divided into the following areas of the system:
+.Bl -ohang
+.It Sy "File System"
+File system mounts, modifying directories, modifying files, etc.
+.It Sy KLD
+Loading, unloading, and retrieving statistics on loaded kernel modules
+.It Sy Network
+Network interfaces,
+.Xr bpf 4 ,
+packet delivery and transmission,
+interface configuration
+.Xr ( ioctl 2 ,
+.Xr ifconfig 8 )
+.It Sy Pipes
+Creation of and operation on
+.Xr pipe 2
+objects
+.It Sy Processes
+Debugging
+(e.g.\&
+.Xr ktrace 2 ) ,
+process visibility
+.Pq Xr ps 1 ,
+process execution
+.Pq Xr execve 2 ,
+signalling
+.Pq Xr kill 2
+.It Sy Sockets
+Creation of and operation on
+.Xr socket 2
+objects
+.It Sy System
+Kernel environment
+.Pq Xr kenv 1 ,
+system accounting
+.Pq Xr acct 2 ,
+.Xr reboot 2 ,
+.Xr settimeofday 2 ,
+.Xr swapon 2 ,
+.Xr sysctl 3 ,
+.Xr nfsd 8 Ns
+-related operations
+.It Sy VM
+.Xr mmap 2 Ns
+-ed files
+.El
+.Ss Setting MAC Labels
+From the command line, each type of system object has its own means for setting
+and modifying its MAC policy label.
+.Bl -column "user (by login class)" "Xr setfmac 8 , Xr setfsmac 8" -offset indent
+.It Sy "Subject/Object" Ta Sy "Utility"
+.It "File system object" Ta Xr setfmac 8 , Xr setfsmac 8
+.It "Network interface" Ta Xr ifconfig 8
+.It "TTY (by login class)" Ta Xr login.conf 5
+.It "User (by login class)" Ta Xr login.conf 5
+.El
+.Pp
+Additionally, the
+.Xr su 1
+and
+.Xr setpmac 8
+utilities can be used to run a command with a different process label than
+the shell's current label.
+.Ss Programming With MAC
+MAC security enforcement itself is transparent to application
+programs, with the exception that some programs may need to be aware of
+additional
+.Xr errno 2
+returns from various system calls.
+.Pp
+The interface for retrieving, handling, and setting policy labels
+is documented in the
+.Xr mac 3
+man page.
+.\" *** XXX ***
+.\" Support for this feature is poor and should not be encouraged.
+.\"
+.\" .It Va security.mac.mmap_revocation
+.\" Revoke
+.\" .Xr mmap 2
+.\" access to files on subject relabel.
+.\" .It Va security.mac.mmap_revocation_via_cow
+.\" Revoke
+.\" .Xr mmap 2
+.\" access to files via copy-on-write semantics;
+.\" mapped regions will still appear writable, but will no longer
+.\" effect a change on the underlying vnode.
+.\" (Default: 0).
+.Sh SEE ALSO
+.Xr mac 3 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr login.conf 5 ,
+.Xr maclabel 7 ,
+.Xr getfmac 8 ,
+.Xr getpmac 8 ,
+.Xr setfmac 8 ,
+.Xr setpmac 8 ,
+.Xr mac 9
+.Rs
+.%B "The FreeBSD Handbook"
+.%T "Mandatory Access Control"
+.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/mac.html
+.Re
+.Sh HISTORY
+The
+.Nm
+implementation first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/mac_biba.4 b/share/man/man4/mac_biba.4
new file mode 100644
index 0000000..20a6661
--- /dev/null
+++ b/share/man/man4/mac_biba.4
@@ -0,0 +1,237 @@
+.\" Copyright (c) 2002-2004 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd November 18, 2002
+.Os
+.Dt MAC_BIBA 4
+.Sh NAME
+.Nm mac_biba
+.Nd "Biba data integrity policy"
+.Sh SYNOPSIS
+To compile Biba into your kernel, place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_BIBA"
+.Ed
+.Pp
+Alternately, to load the Biba module at boot time, place the following line
+in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_biba_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module implements the Biba integrity model,
+which protects the integrity of system objects and subjects by means of
+a strict information flow policy.
+In Biba, all system subjects and objects are assigned integrity labels, made
+up of hierarchal grades, and non-hierarchal components.
+Together, these label elements permit all labels to be placed in a partial
+order, with information flow protections based on a dominance operator
+describing the order.
+The hierarchal grade field is expressed as a value between 0 and 65535,
+with higher values reflecting higher integrity.
+The non-hierarchal compartment field is expressed as a set of up to 256
+components, numbered from 0 to 255.
+A complete label consists of both hierarchal and non-hierarchal elements.
+.Pp
+Three special label values exist:
+.Bl -column -offset indent ".Li biba/equal" "lower than all other labels"
+.It Sy Label Ta Sy Comparison
+.It Li biba/low Ta "lower than all other labels"
+.It Li biba/equal Ta "equal to all other labels"
+.It Li biba/high Ta "higher than all other labels"
+.El
+.Pp
+The
+.Dq Li biba/high
+label is assigned to system objects which affect the integrity of the system
+as a whole.
+The
+.Dq Li biba/equal
+label
+may be used to indicate that a particular subject or object is exempt from
+the Biba protections.
+These special label values are not specified as containing any compartments,
+although in a label comparison,
+.Dq Li biba/high
+appears to contain all compartments,
+.Dq Li biba/equal
+the same compartments as the other label to which it is being compared,
+and
+.Dq Li biba/low
+none.
+.Pp
+In general, Biba access control takes the following model:
+.Bl -bullet
+.It
+A subject at the same integrity level as an object may both read from
+and write to the object as though Biba protections were not in place.
+.It
+A subject at a higher integrity level than an object may write to the object,
+but not read the object.
+.It
+A subject at a lower integrity level than an object may read the object,
+but not write to the object.
+.It
+If the subject and object labels may not be compared in the partial order,
+all access is restricted.
+.El
+.Pp
+These rules prevent subjects of lower integrity from influencing the
+behavior of higher integrity subjects by preventing the flow of information,
+and hence control, from allowing low integrity subjects to modify either
+a high integrity object or high integrity subjects acting on those objects.
+Biba integrity policies may be appropriate in a number of environments,
+both from the perspective of preventing corruption of the operating system,
+and corruption of user data if marked as higher integrity than the attacker.
+In traditional trusted operating systems, the Biba integrity model is used
+to protect the Trusted Code Base (TCB).
+.Pp
+The Biba integrity model is similar to
+.Xr mac_lomac 4 ,
+with the exception that LOMAC permits access by a higher integrity subject
+to a lower integrity object, but downgrades the integrity level of the subject
+to prevent integrity rules from being violated.
+Biba is a fixed label policy in that all subject and object label changes are
+explicit, whereas LOMAC is a floating label policy.
+.Pp
+The Biba integrity model is also similar to
+.Xr mac_mls 4 ,
+with the exception that the dominance operator and access rules are reversed,
+preventing the downward flow of information rather than the upward flow of
+information.
+Multi-Level Security (MLS) protects the confidentiality, rather than the
+integrity, of subjects and objects.
+.Ss Label Format
+Almost all system objects are tagged with an effective, active label element,
+reflecting the integrity of the object, or integrity of the data contained
+in the object.
+In general, objects labels are represented in the following form:
+.Pp
+.Sm off
+.D1 Li biba / Ar grade : compartments
+.Sm on
+.Pp
+For example:
+.Pp
+.Bd -literal -offset indent
+biba/10:2+3+6
+biba/low
+.Ed
+.Pp
+Subject labels consist of three label elements: an effective (active) label,
+as well as a range of available labels.
+This range is represented using two ordered Biba label elements, and when set
+on a process, permits the process to change its active label to any label of
+greater or equal integrity to the low end of the range, and lesser or equal
+integrity to the high end of the range.
+In general, subject labels are represented in the following form:
+.Pp
+.Sm off
+.D1 Li biba / Ar effectivegrade : effectivecompartments ( lograde : locompartments -
+.D1 Ar higrade : hicompartments )
+.Sm on
+.Pp
+For example:
+.Bd -literal -offset indent
+biba/10:2+3+6(5:2+3-20:2+3+4+5+6)
+biba/high(low-high)
+.Ed
+.Pp
+Valid ranged labels must meet the following requirement regarding their
+elements:
+.Pp
+.D1 Ar rangehigh No \[>=] Ar effective No \[>=] Ar rangelow
+.Pp
+One class of objects with ranges currently exists, the network interface.
+In the case of the network interface, the effective label element references the
+default label for packets received over the interface, and the range
+represents the range of acceptable labels of packets to be transmitted over
+the interface.
+.Ss Runtime Configuration
+The following
+.Xr sysctl 8
+MIBs are available for fine-tuning the enforcement of this MAC policy.
+.Bl -tag -width ".Va security.mac.biba.ptys_equal"
+.It Va security.mac.biba.enabled
+Enables enforcement of the Biba integrity policy.
+(Default: 1).
+.It Va security.mac.biba.ptys_equal
+Label
+.Xr pty 4 Ns s
+as
+.Dq Li biba/equal
+upon creation.
+(Default: 0).
+.It Va security.mac.biba.revocation_enabled
+Revoke access to objects if the label is changed to dominate the subject.
+(Default: 0).
+.El
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr maclabel 7 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
diff --git a/share/man/man4/mac_bsdextended.4 b/share/man/man4/mac_bsdextended.4
new file mode 100644
index 0000000..899990c
--- /dev/null
+++ b/share/man/man4/mac_bsdextended.4
@@ -0,0 +1,149 @@
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd May 21, 2005
+.Os
+.Dt MAC_BSDEXTENDED 4
+.Sh NAME
+.Nm mac_bsdextended
+.Nd "file system firewall policy"
+.Sh SYNOPSIS
+To compile the file system firewall policy into your kernel,
+place the following lines in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_BSDEXTENDED"
+.Ed
+.Pp
+Alternately, to load the file system firewall policy module at boot time,
+place the following line in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_bsdextended_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+security policy module provides an interface for the system administrator
+to impose mandatory rules regarding users and some system objects.
+Rules are uploaded to the module
+(typically using
+.Xr ugidfw 8 ,
+or some other tool utilizing
+.Xr libugidfw 3 )
+where they are stored internally
+and used to determine whether to allow or deny specific accesses
+(see
+.Xr ugidfw 8 ) .
+.Sh IMPLEMENTATION NOTES
+While the traditional
+.Xr mac 9
+entry points are implemented,
+policy labels are not used;
+instead, access control decisions are made by iterating through the internal
+list of rules until a rule
+which denies the particular access
+is found,
+or the end of the list is reached.
+The
+.Nm
+policy works similar to
+.Xr ipfw 8
+or by using a
+.Em first match semantic .
+This means that not all rules are applied,
+only the first matched rule; thus if
+Rule A allows access and Rule B blocks
+access, Rule B will never be applied.
+.Pp
+.Ss Sysctls
+The following sysctls may be used to tweak the behavior of
+.Nm :
+.Bl -tag -width indent
+.It Va security.mac.bsdextended.enabled
+Set to zero or one to toggle the policy off or on.
+.It Va security.mac.bsdextended.rule_count
+List the number of defined rules, the maximum rule count is
+current set at 256.
+.It Va security.mac.bsdextended.rule_slots
+List the number of rule slots currently being used.
+.It Va security.mac.bsdextended.firstmatch_enabled
+Toggle between the old all rules match functionality
+and the new first rule matches functionality.
+This is enabled by default.
+.It Va security.mac.bsdextended.logging
+Log all access violations via the
+.Dv AUTHPRIV
+.Xr syslog 3
+facility.
+.It Va security.mac.bsdextended.rules
+Currently does nothing interesting.
+.El
+.Sh SEE ALSO
+.Xr libugidfw 3 ,
+.Xr syslog 3 ,
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr ipfw 8 ,
+.Xr ugidfw 8 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Pp
+The "match first case" and logging capabilities were later added by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by NAI Labs, the Security Research Division of Network Associates
+Inc.\& under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
diff --git a/share/man/man4/mac_ifoff.4 b/share/man/man4/mac_ifoff.4
new file mode 100644
index 0000000..ede13b0
--- /dev/null
+++ b/share/man/man4/mac_ifoff.4
@@ -0,0 +1,133 @@
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd December 10, 2002
+.Os
+.Dt MAC_IFOFF 4
+.Sh NAME
+.Nm mac_ifoff
+.Nd "interface silencing policy"
+.Sh SYNOPSIS
+To compile the interface silencing policy into your kernel,
+place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_IFOFF"
+.Ed
+.Pp
+Alternately, to load the interface silencing policy module at boot time,
+place the following line in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_ifoff_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+interface silencing module allows administrators to enable and disable
+incoming and outgoing data flow on system network interfaces
+via the
+.Xr sysctl 8
+interface.
+.Pp
+To disable network traffic over the loopback
+.Pq Xr lo 4
+interface, set the
+.Xr sysctl 8
+OID
+.Va security.mac.ifoff.lo_enabled
+to 0 (default 1).
+.Pp
+To enable network traffic over other interfaces,
+set the
+.Xr sysctl 8
+OID
+.Va security.mac.ifoff.other_enabled
+to 1 (default 0).
+.Pp
+To allow BPF traffic to be received,
+even while other traffic is disabled,
+set the
+.Xr sysctl 8
+OID
+.Va security.mac.ifoff.bpfrecv_enabled
+to 1 (default 0).
+.Ss Label Format
+No labels are defined.
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/mac_lomac.4 b/share/man/man4/mac_lomac.4
new file mode 100644
index 0000000..8133ad8
--- /dev/null
+++ b/share/man/man4/mac_lomac.4
@@ -0,0 +1,222 @@
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd December 11, 2002
+.Os
+.Dt MAC_LOMAC 4
+.Sh NAME
+.Nm mac_lomac
+.Nd "Low-watermark Mandatory Access Control data integrity policy"
+.Sh SYNOPSIS
+To compile LOMAC into your kernel, place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_LOMAC"
+.Ed
+.Pp
+Alternately, to load the LOMAC module at boot time, place the following line
+in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_lomac_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module implements the LOMAC integrity model,
+which protects the integrity of system objects and subjects by means of
+an information flow policy coupled with the subject demotion
+via floating labels.
+In LOMAC, all system subjects and objects are assigned integrity labels, made
+up of one or more hierarchal grades, depending on the their types.
+Together, these label elements permit all labels to be placed in a partial
+order, with information flow protections and demotion decisions
+based on a dominance operator
+describing the order.
+The hierarchal grade field or fields are expressed
+as a value between 0 and 65535,
+with higher values reflecting higher integrity.
+.Pp
+Three special label component values exist:
+.Bl -column -offset indent ".Sy Label" "dominated by all other labels"
+.It Sy Label Ta Sy Comparison
+.It Li low Ta "dominated by all other labels"
+.It Li equal Ta "equal to all other labels"
+.It Li high Ta "dominates all other labels"
+.El
+.Pp
+The
+.Dq Li high
+label is assigned to system objects which affect the integrity of the system
+as a whole.
+The
+.Dq Li equal
+label
+may be used to indicate that a particular subject or object is exempt from
+the LOMAC protections.
+For example, a label of
+.Dq Li lomac/equal(equal-equal)
+might be used on a subject which is to be used to administratively relabel
+anything on the system.
+.Pp
+Almost all system objects are tagged with a single, active label element,
+reflecting the integrity of the object, or integrity of the data contained
+in the object.
+File system objects may contain an additional auxiliary label which
+determines the inherited integrity level for new files created in a
+directory or the alternate label assumed by the subject upon execution of
+an executable.
+In general, objects labels are represented in the following form:
+.Pp
+.Sm off
+.D1 Li lomac / Ar grade Bq Ar auxgrade
+.Sm on
+.Pp
+For example:
+.Pp
+.Bd -literal -offset indent
+lomac/10[2]
+lomac/low
+.Ed
+.Pp
+Subject labels consist of three label elements: a single (active) label,
+as well as a range of available labels.
+This range is represented using two ordered LOMAC label elements, and when set
+on a process, permits the process to change its active label to any label of
+greater or equal integrity to the low end of the range, and lesser or equal
+integrity to the high end of the range.
+In general, subject labels are represented in the following form:
+.Pp
+.Sm off
+.D1 Li lomac / Ar singlegrade ( lograde No - Ar higrade )
+.Sm on
+.Pp
+Modification of objects is restricted to access via the following comparison:
+.Pp
+.D1 Ar subject Ns :: Ns Ar higrade No \[>=] Ar target-object Ns :: Ns Ar grade
+.Pp
+Modification of subjects is the same, as the target subject's single grade
+is the only element taken into comparison.
+.Pp
+Demotion of a subject occurs when the following comparison is true:
+.Pp
+.D1 Ar subject Ns :: Ns Ar singlegrade No > Ar object Ns :: Ns Ar grade
+.Pp
+When demotion occurs, the subject's
+.Ar singlegrade
+and
+.Ar higrade
+are reduced to the
+object's grade, as well as the
+.Ar lograde
+if necessary.
+When the demotion occurs, in addition to the permission of the subject being
+reduced, shared
+.Xr mmap 2
+objects which it has opened in its memory space may be revoked according to
+the following
+.Xr sysctl 3
+variables:
+.Pp
+.Bl -bullet -compact
+.It
+.Va security.mac.lomac.revocation_enabled
+.It
+.Va security.mac.enforce_vm
+.It
+.Va security.mac.mmap_revocation
+.It
+.Va security.mac.mmap_revocation_via_cow
+.El
+.Pp
+Upon execution of a file, if the executable has an auxiliary label, and that
+label is within the current range of
+.Ar lograde Ns - Ns Ar higrade ,
+it will be assumed by the subject immediately.
+After this, demotion is performed just as with any other read operation, with
+the executable as the target.
+Through the use of auxiliary labels, programs may be initially executed
+at a lower effective integrity level,
+while retaining the ability to raise it again.
+.Pp
+These rules prevent subjects of lower integrity from influencing the
+behavior of higher integrity subjects by preventing the flow of information,
+and hence control, from allowing low integrity subjects to modify either
+a high integrity object or high integrity subjects acting on those objects.
+LOMAC integrity policies may be appropriate in a number of environments,
+both from the perspective of preventing corruption of the operating system,
+and corruption of user data if marked as higher integrity than the attacker.
+.Pp
+The LOMAC security model is quite similar to that of
+.Xr mac_biba 4
+and
+.Xr mac_mls 4
+in various ways.
+More background information on this can be found in their respective
+man pages.
+.Sh SEE ALSO
+.Xr mmap 2 ,
+.Xr sysctl 3 ,
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
diff --git a/share/man/man4/mac_mls.4 b/share/man/man4/mac_mls.4
new file mode 100644
index 0000000..95e66be
--- /dev/null
+++ b/share/man/man4/mac_mls.4
@@ -0,0 +1,252 @@
+.\" Copyright (c) 2002-2004 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd December 1, 2002
+.Os
+.Dt MAC_MLS 4
+.Sh NAME
+.Nm mac_mls
+.Nd "Multi-Level Security confidentiality policy"
+.Sh SYNOPSIS
+To compile MLS into your kernel, place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_MLS"
+.Ed
+.Pp
+Alternately, to load the MLS module at boot time, place the following line
+in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_mls_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module implements the Multi-Level Security, or MLS model,
+which controls access between subjects and objects based on their
+confidentiality by means of a strict information flow policy.
+Each subject and object in the system has an MLS label associated with it;
+each subject's MLS label contains information on its clearance level,
+and each object's MLS label contains information on its classification.
+.Pp
+In MLS, all system subjects and objects are assigned confidentiality labels,
+made up of a sensitivity level and zero or more compartments.
+Together, these label elements permit all labels to be placed in a partial
+order, with confidentiality protections based on a dominance operator
+describing the order.
+The sensitivity level is expressed as a value between 0 and
+65535, with higher values reflecting higher sensitivity levels.
+The compartment field is expressed as a set of up to 256 components,
+numbered from 1 to 256.
+A complete label consists of both sensitivity and compartment
+elements.
+.Pp
+With normal labels, dominance is defined as a label having a higher
+or equal active sensitivity level, and having at least
+all of the same compartments as the label to which it is being compared.
+With respect to label comparisons,
+.Dq Li lower
+is defined as being dominated by the label to which it is being compared,
+and
+.Dq Li higher
+is defined as dominating the label to which it is being compared,
+and
+.Dq Li equal
+is defined as both labels being able to satisfy the dominance requirements
+over one another.
+.Pp
+Three special label values exist:
+.Bl -column -offset indent ".Li mls/equal" "dominated by all other labels"
+.It Sy Label Ta Sy Comparison
+.It Li mls/low Ta "dominated by all other labels"
+.It Li mls/equal Ta "equal to all other labels"
+.It Li mls/high Ta "dominates all other labels"
+.El
+.Pp
+The
+.Dq Li mls/equal
+label may be applied to subjects and objects for which no enforcement of the
+MLS security policy is desired.
+.Pp
+The MLS model enforces the following basic restrictions:
+.Bl -bullet
+.It
+Subjects may not observe the processes of another subject if its
+clearance level is lower than the clearance level of the object it is
+attempting to observe.
+.It
+Subjects may not read, write, or otherwise observe objects without proper
+clearance (e.g.\& subjects may not observe objects whose classification label
+dominates its own clearance label)
+.It
+Subjects may not write to objects with a lower classification level than
+its own clearance level.
+.It
+A subject may read and write to an object if its clearance level is equal
+to the object's classification level as though MLS protections were not in
+place.
+.El
+.Pp
+These rules prevent subjects of lower clearance from gaining access
+information classified beyond its clearance level in order to protect the
+confidentiality of classified information, subjects of higher clearance
+from writing to objects of lower classification in order to prevent the
+accidental or malicious leaking of information, and subjects of lower
+clearance from observing subjects of higher clearance altogether.
+In traditional trusted operating systems, the MLS confidentiality model is
+used in concert with the Biba integrity model
+.Xr ( mac_biba 4 )
+in order to protect the Trusted Code Base (TCB).
+.Ss Label Format
+Almost all system objects are tagged with an effective, active label element,
+reflecting the classification of the object, or classification of the data
+contained in the object.
+In general, object labels are represented in the following form:
+.Pp
+.Sm off
+.D1 Li mls / Ar grade : compartments
+.Sm on
+.Pp
+For example:
+.Bd -literal -offset indent
+mls/10:2+3+6
+mls/low
+.Ed
+.Pp
+Subject labels consist of three label elements: an effective (active) label,
+as well as a range of available labels.
+This range is represented using two ordered MLS label elements, and when set
+on a process, permits the process to change its active label to any label of
+greater or equal integrity to the low end of the range, and lesser or equal
+integrity to the high end of the range.
+In general, subject labels are represented in the following form:
+.Pp
+.Sm off
+.D1 Li mls / Ar effectivegrade : effectivecompartments ( lograde : locompartments No -
+.D1 Ar higrade : hicompartments )
+.Sm on
+.Pp
+For example:
+.Bd -literal -offset indent
+mls/10:2+3+6(5:2+3-20:2+3+4+5+6)
+mls/high(low-high)
+.Ed
+.Pp
+Valid ranged labels must meet the following requirement regarding their
+elements:
+.Pp
+.D1 Ar rangehigh No \[>=] Ar effective No \[>=] Ar rangelow
+.Pp
+One class of objects with ranges currently exists, the network interface.
+In the case of the network interface, the effective label element references
+the default label for packets received over the interface, and the range
+represents the range of acceptable labels of packets to be transmitted over
+the interface.
+.Ss Runtime Configuration
+The following
+.Xr sysctl 8
+MIBs are available for fine-tuning the enforcement of this MAC policy.
+.Bl -tag -width ".Va security.mac.mls.ptys_equal"
+.It Va security.mac.mls.enabled
+Enables the enforcement of the MLS confidentiality policy.
+(Default: 1).
+.It Va security.mac.mls.ptys_equal
+Label
+.Xr pty 4 Ns s
+as
+.Dq Li mls/equal
+upon creation.
+(Default: 0).
+.It Va security.mac.mls.revocation_enabled
+Revoke access to objects if the label is changed to a more sensitive
+level than the subject.
+(Default: 0).
+.El
+.Sh IMPLEMENTATION NOTES
+Currently, the
+.Nm
+policy relies on superuser status
+.Pq Xr suser 9
+in order to change network interface MLS labels.
+This will eventually go away, but it is currently a liability and may
+allow the superuser to bypass MLS protections.
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr maclabel 7 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Laboratories,
+the Security Research Division of Network Associates
+Inc.\& under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/mac_none.4 b/share/man/man4/mac_none.4
new file mode 100644
index 0000000..159151e
--- /dev/null
+++ b/share/man/man4/mac_none.4
@@ -0,0 +1,113 @@
+.\" Copyright (c) 2002, 2003 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd December 1, 2002
+.Os
+.Dt MAC_NONE 4
+.Sh NAME
+.Nm mac_none
+.Nd "null MAC policy module"
+.Sh SYNOPSIS
+To compile the null policy
+into your kernel, place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_NONE"
+.Ed
+.Pp
+Alternately, to load the sample module at boot time, place the following line
+in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_none_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module implements a sample MAC policy that has no effect on
+access control in the system.
+Unlike
+.Xr mac_stub 4 ,
+none of the MAC entry points are defined.
+.Ss Label Format
+No labels are defined for
+.Nm .
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_stub 4 ,
+.Xr mac_test 4 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/mac_partition.4 b/share/man/man4/mac_partition.4
new file mode 100644
index 0000000..54abee5
--- /dev/null
+++ b/share/man/man4/mac_partition.4
@@ -0,0 +1,133 @@
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd December 9, 2002
+.Os
+.Dt MAC_PARTITION 4
+.Sh NAME
+.Nm mac_partition
+.Nd "process partition policy"
+.Sh SYNOPSIS
+To compile the process partition policy into your kernel,
+place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_PARTITION"
+.Ed
+.Pp
+Alternately, to load the process partition module at boot time,
+place the following line in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_partition_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module implements a process partition policy,
+which allows administrators to place running processes into
+.Dq partitions ,
+based on their numeric process partition
+(specified in the process's MAC label).
+Processes with a specified partition can only see processes that are in the
+same partition.
+If no partition is specified for a process, it can see all other processes
+in the system
+(subject to other MAC policy restrictions not defined in this man page).
+No provisions for placing processes into multiple partitions are available.
+.Ss Label Format
+Partition labels take on the following format:
+.Pp
+.Sm off
+.Dl Li partition / Ar value
+.Sm on
+.Pp
+Where
+.Ar value
+can be any integer value or
+.Dq Li none .
+For example:
+.Bd -literal -offset indent
+partition/1
+partition/20
+partition/none
+.Ed
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr maclabel 7 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/mac_portacl.4 b/share/man/man4/mac_portacl.4
new file mode 100644
index 0000000..698852d
--- /dev/null
+++ b/share/man/man4/mac_portacl.4
@@ -0,0 +1,218 @@
+.\" Copyright (c) 2003 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates 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.
+.\"
+.\" 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$
+.\"
+.Dd December 9, 2004
+.Dt MAC_PORTACL 4
+.Os
+.Sh NAME
+.Nm mac_portacl
+.Nd "network port access control policy"
+.Sh SYNOPSIS
+To compile the port access control policy into your kernel,
+place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_PORTACL"
+.Ed
+.Pp
+Alternately, to load the port access control policy module at boot time,
+place the following line in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Pp
+.Dl "mac_portacl_load=""YES"""
+.Sh DESCRIPTION
+The
+.Nm
+policy allows administrators to administratively limit binding to
+local
+.Tn UDP
+and
+.Tn TCP
+ports via the
+.Xr sysctl 8
+interface.
+.Pp
+In order to enable the
+.Nm
+policy, MAC policy must be enforced on sockets
+(see
+.Xr mac 4 ) ,
+and the port(s) protected by
+.Nm
+must not be included in the range specified by
+the
+.Va net.inet.ip.portrange.reservedlow
+and
+.Va net.inet.ip.portrange.reservedhigh
+.Xr sysctl 8
+MIBs.
+.Pp
+The
+.Nm
+policy only affects ports explicitly bound by a user process (either
+for a listen/outgoing
+.Tn TCP
+socket, or a send/receive
+.Tn UDP
+socket).
+This policy will not limit ports bound implicitly for outgoing
+connections where the process has not explicitly selected a port:
+these are automatically selected by the IP stack.
+.Pp
+When
+.Nm
+is enabled, it will control binding access to ports up to the port
+number set in the
+.Va security.mac.portacl.port_high
+.Xr sysctl 8
+variable.
+By default, all attempts to bind to
+.Nm
+controlled ports will fail if not explicitly allowed by the port
+access control list, though binding by the superuser will be allowed,
+if the
+.Xr sysctl 8
+variable
+.Va security.mac.portacl.suser_exempt
+is set to a non-zero value.
+.Ss Runtime Configuration
+The following
+.Xr sysctl 8
+MIBs are available for fine-tuning the enforcement of this MAC policy.
+All
+.Xr sysctl 8
+variables, except
+.Va security.mac.portacl.rules ,
+can also be set as
+.Xr loader 8
+tunables in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.It Va security.mac.portacl.enabled
+Enforce the
+.Nm
+policy.
+(Default: 1).
+.It Va security.mac.portacl.port_high
+The highest port number
+.Nm
+will enforce rules for.
+(Default: 1023).
+.It Va security.mac.portacl.rules
+The port access control list is specified in the following format:
+.Pp
+.Sm off
+.D1 Ar idtype : id : protocol : port Op , Ar idtype : id : protocol : port , ...
+.Sm on
+.Pp
+.Bl -tag -width ".Ar protocol"
+.It Ar idtype
+Describes the type of subject match to be performed.
+Either
+.Li uid
+for user ID matching, or
+.Li gid
+for group ID matching.
+.It Ar id
+The user or group ID (depending on
+.Ar idtype )
+allowed to bind to the specified port.
+.Bf -emphasis
+NOTE: User and group names are not valid; only the actual ID numbers
+may be used.
+.Ef
+.It Ar protocol
+Describes which protocol this entry applies to.
+Either
+.Li tcp
+or
+.Li udp
+are supported.
+.It Ar port
+Describes which port this entry applies to.
+.Bf -emphasis
+NOTE: MAC security policies may not override other security system policies
+by allowing accesses that they may deny, such as
+.Va net.inet.ip.portrange.reservedlow /
+.Va net.inet.ip.portrange.reservedhigh .
+.Ef
+If the specified port falls within the range specified, the
+.Nm
+entry will not function
+(i.e., even the specified user/group may not be able to bind to the specified
+port).
+.El
+.It Va security.mac.portacl.suser_exempt
+Allow superuser (i.e., root) to bind to all
+.Nm
+protected ports, even if the port access control list does not
+explicitly allow this.
+(Default: 1).
+.It Va security.mac.portacl.autoport_exempt
+Allow applications to use automatic binding to port 0.
+Applications use port 0 as a request for automatic port allocation when
+binding an IP address to a socket.
+This tunable will exempt port 0 allocation from rule checking.
+(Default: 1).
+.El
+.Sh SEE ALSO
+.Xr mac 3 ,
+.Xr ip 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr mac 9
+.Sh HISTORY
+MAC first appeared in
+.Fx 5.0
+and
+.Nm
+first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by NAI Labs, the Security Research Division of Network Associates
+Inc.\& under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
diff --git a/share/man/man4/mac_seeotheruids.4 b/share/man/man4/mac_seeotheruids.4
new file mode 100644
index 0000000..4eeb7bb
--- /dev/null
+++ b/share/man/man4/mac_seeotheruids.4
@@ -0,0 +1,131 @@
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd October 6, 2005
+.Os
+.Dt MAC_SEEOTHERUIDS 4
+.Sh NAME
+.Nm mac_seeotheruids
+.Nd "simple policy controlling whether users see other users"
+.Sh SYNOPSIS
+To compile the
+policy into your kernel, place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_SEEOTHERUIDS"
+.Ed
+.Pp
+Alternately, to load the module at boot time, place the following line
+in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_seeotheruids_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module, when enabled, denies users to see processes or sockets owned
+by other users.
+.Pp
+To enable
+.Nm ,
+set the sysctl OID
+.Va security.mac.seeotheruids.enabled
+to 1.
+To permit superuser awareness of other credentials by virtue of privilege,
+set the sysctl OID
+.Va security.mac.seeotheruids.suser_privileged
+to 1.
+.Pp
+To allow users to see processes and sockets owned by the same primary group,
+set the sysctl OID
+.Va security.mac.seeotheruids.primarygroup_enabled
+to 1.
+.Pp
+To allow processes with a specific group ID to be exempt from the policy,
+set the sysctl OID
+.Va security.mac.seeotheruids.specificgid_enabled
+to 1, and
+.Va security.mac.seeotheruids.specificgid
+to the group ID to be exempted.
+.Ss Label Format
+No labels are defined for
+.Nm .
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_test 4 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/mac_stub.4 b/share/man/man4/mac_stub.4
new file mode 100644
index 0000000..ded95e2
--- /dev/null
+++ b/share/man/man4/mac_stub.4
@@ -0,0 +1,116 @@
+.\" Copyright (c) 2002, 2003 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd December 1, 2002
+.Os
+.Dt MAC_STUB 4
+.Sh NAME
+.Nm mac_stub
+.Nd "MAC policy stub module"
+.Sh SYNOPSIS
+To compile the sample policy
+into your kernel, place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_STUB"
+.Ed
+.Pp
+Alternately, to load the sample module at boot time, place the following line
+in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_stub_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module implements a sample MAC policy that has no effect on
+access control in the system.
+Unlike
+.Xr mac_none 4 ,
+each MAC entry point is defined as a
+.Dq no-op ,
+so the policy module will be entered for each event, but no change
+in system behavior should result.
+.Ss Label Format
+No labels are defined for
+.Nm .
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.1
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/mac_test.4 b/share/man/man4/mac_test.4
new file mode 100644
index 0000000..dde7445
--- /dev/null
+++ b/share/man/man4/mac_test.4
@@ -0,0 +1,117 @@
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd December 1, 2002
+.Os
+.Dt MAC_TEST 4
+.Sh NAME
+.Nm mac_test
+.Nd MAC framework testing policy
+.Sh SYNOPSIS
+To compile the testing policy
+into your kernel, place the following lines in your kernel
+configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Cd "options MAC_TEST"
+.Ed
+.Pp
+Alternately, to load the testing module at boot time, place the following line
+in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options MAC"
+.Ed
+.Pp
+and in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mac_test_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+policy module implements a testing facility for the MAC framework.
+Among other things,
+.Nm
+will try to catch corrupt labels the system is attempting to destroy and
+drop to the debugger.
+Additionally, a set of statistics regarding the number of times various
+MAC framework entry points have been called is stored in the
+.Va security.mac.test
+.Xr sysctl 8
+tree.
+.Ss Label Format
+No labels are defined for
+.Nm .
+.Sh SEE ALSO
+.Xr mac 4 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_portacl 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac 9
+.Sh HISTORY
+The
+.Nm
+policy module first appeared in
+.Fx 5.0
+and was developed by the
+.Tn TrustedBSD
+Project.
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by Network Associates Labs,
+the Security Research Division of Network Associates
+Inc.
+under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Sh BUGS
+See
+.Xr mac 9
+concerning appropriateness for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man4/malo.4 b/share/man/man4/malo.4
new file mode 100644
index 0000000..8d1ab1e
--- /dev/null
+++ b/share/man/man4/malo.4
@@ -0,0 +1,124 @@
+.\"-
+.\" Copyright (c) 2008 Weongyo Jeong <weongyo@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,
+.\" without modification.
+.\" 2. Redistributions in binary form must reproduce at minimum a disclaimer
+.\" similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
+.\" redistribution must be conditioned upon including a substantially
+.\" similar Disclaimer requirement for further binary redistribution.
+.\" 3. Neither the names of the above-listed copyright holders nor the names
+.\" of any contributors may be used to endorse or promote products derived
+.\" from this software without specific prior written permission.
+.\"
+.\" NO WARRANTY
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
+.\" AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+.\" THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR 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 DAMAGES.
+.\"
+.\" $FreeBSD$
+.\"/
+.Dd April 13, 2008
+.Dt MALO 4
+.Os
+.Sh NAME
+.Nm malo
+.Nd "Marvell Libertas IEEE 802.11b/g wireless network driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device malo"
+.Cd "device pci"
+.Cd "device wlan"
+.Cd "device firmware"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following lines in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_malo_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Marvell Libertas 88W8335 based PCI
+and Cardbus network adapters.
+.Nm
+supports
+.Cm station
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+This driver requires the
+.Nm malofw
+be installed before it will work.
+The firmware files are not publicly available.
+A package of the firmware which can be installed via
+.Xr pkg_add 1
+with:
+.Bd -literal -offset indent
+http://weongyo.org/project/malo/malo-firmware-1.4.tar.gz
+.Ed
+.Sh HARDWARE
+The following cards are among those supported by the
+.Nm
+driver:
+.Pp
+.Bl -column -compact "Microcom Travelcard" "MALO111" "CardBus" "a/b/g" -offset 6n
+.Em "Card Chip Bus Standard"
+Netgear WG311v3 88W8335 PCI b/g
+Tenda TWL542P 88W8335 PCI b/g
+U-Khan UW-2054i 88W8335 PCI b/g
+.El
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev malo0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev malo0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev malo0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Sh SEE ALSO
+.Xr cardbus 4 ,
+.Xr pci 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 8.0 .
diff --git a/share/man/man4/man4.arm/Makefile b/share/man/man4/man4.arm/Makefile
new file mode 100644
index 0000000..8d3e2e1
--- /dev/null
+++ b/share/man/man4/man4.arm/Makefile
@@ -0,0 +1,10 @@
+# $FreeBSD$
+
+MAN= mge.4 npe.4
+
+MLINKS= mge.4 if_mge.4
+MLINKS+=npe.4 if_npe.4
+
+MANSUBDIR=/arm
+
+.include <bsd.prog.mk>
diff --git a/share/man/man4/man4.arm/mge.4 b/share/man/man4/man4.arm/mge.4
new file mode 100644
index 0000000..adc90ca
--- /dev/null
+++ b/share/man/man4/man4.arm/mge.4
@@ -0,0 +1,160 @@
+.\"
+.\" Copyright (c) 2008 Semihalf, Rafal Jaworowski
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 27, 2008
+.Dt MGE 4
+.Os
+.Sh NAME
+.Nm mge
+.Nd "Marvell Gigabit Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device mge"
+.Cd "device miibus"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for gigabit Ethernet controller integrated in Marvell
+system-on-chip devices.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options
+.It 10baseT/UTP
+Set 10Mbps operation
+.It 100baseTX
+Set 100Mbps operation
+.It 1000baseT
+Set 1000baseT operation
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Set full duplex operation
+.El
+.Pp
+The
+.Nm
+driver supports polled operation when the system is configured with
+DEVICE_POLLING kernel option, see
+.Xr polling 4
+for more details.
+.Pp
+The
+.Nm
+driver supports reception and transmission of extended frames
+for
+.Xr vlan 4 .
+This capability of
+.Nm
+can be controlled by means of the
+.Cm vlanmtu
+parameter
+to
+.Xr ifconfig 8 .
+.Pp
+The
+.Nm
+driver supports interrupts coalescing (IC) so that raising a transmit/receive
+frame interrupt is delayed, if possible, until a threshold-defined period of
+time has elapsed. The following sysctls regulate this behaviour (separately
+for each path):
+.Bl -tag -width indent
+.It Va dev.mge.X.int_coal.rx_time
+.It Va dev.mge.X.int_coal.tx_time
+.Pp
+Value of 0 disables IC on the given path, value greater than zero corresponds
+to a real time period and is expressed in units equivalent to 64 ticks of the
+MGE clock. Maximum allowed value depends on MGE hardware revision. User
+provided values larger than supported will be trimmed to the maximum
+supported. More details are available in the reference manual of the device.
+.El
+.Sh HARDWARE
+Gigabit Ethernet controllers built into the following Marvell systems-on-chip
+are known to work with the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+Orion 88F5182
+.It
+Orion 88F5281
+.It
+Kirkwood 88F6281 (MGE V2)
+.It
+Discovery MV78100 (MGE V2)
+.El
+.Pp
+There are also Marvell system controllers for PowerPC processors, which
+include a variation of this gigabit Ethernet module integrated on chip, and
+they should also work with the
+.Nm
+driver, but this wasn't tested:
+.Pp
+.Bl -bullet -compact
+.It
+MV64430
+.It
+MV64460, MV64461, MV64462
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 8.0 .
+.Sh AUTHORS
+.An -nosplit
+The base version of
+.Nm
+device driver was written by
+.An Grzegorz Bernacki.
+It has been extended with advanced features (polling, interrupt coalescing,
+multicast, h/w checksum calculation etc.) by
+.An Piotr Ziecik .
+This manual page was written by
+.An Rafal Jaworowski .
diff --git a/share/man/man4/man4.arm/npe.4 b/share/man/man4/man4.arm/npe.4
new file mode 100644
index 0000000..035dea1
--- /dev/null
+++ b/share/man/man4/man4.arm/npe.4
@@ -0,0 +1,163 @@
+.\"
+.\" Copyright (c) 2006 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.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd December 4, 2006
+.Dt NPE 4 arm
+.Os
+.Sh NAME
+.Nm npe
+.Nd "Intel XScale Network Processing Engine (NPE) Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device npe"
+.Cd "device npe_fw"
+.Cd "device firmware"
+.Cd "device qmgr"
+.Cd "device miibus"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Ethernet adapters based on the Intel
+XScale Network Processing Engine (NPE).
+The NPE must be loaded with firmware that is typically distributed
+with boards that have this part.
+Otherwise the firmware may be obtained at no cost from the Intel web site.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Set full duplex operation.
+.El
+.Pp
+The
+.Nm
+driver supports polled operation when the system is
+configured with device polling support,
+.Xr polling 4 .
+Note that for multi-port configurations polling and interrupt-style
+operation should not be combined as one of the hardware queues
+is shared by all ports.
+.Pp
+For further information on configuring this device, see
+.Xr ifconfig 8 .
+.\".Pp
+.\"The
+.\".Nm
+.\"driver supports reception and transmission of extended frames
+.\"for
+.\".Xr vlan 4 .
+.\"This capability of
+.\".Nm
+.\"can be controlled by means of the
+.\".Cm vlanmtu
+.\"parameter
+.\"to
+.\".Xr ifconfig 8 .
+.Sh HARDWARE
+The adapters supported by the
+.Nm
+driver exist only on boards that have an XScale processor.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "npe%d: unit %d not supported"
+The unit is larger than the maximum number built into the driver.
+This should not happen as
+.Nm
+devices are not really probed for; they are statically enumerated.
+.It "npe%d: Cannot find my PHY."
+The associated PHY did not appear while probing the MII bus.
+The relationship between PHYs and NPEs is statically defined
+in the driver and may require alterations to the driver for new boards.
+.It "npe%d: unable to allocate memory for %s ... buffers"
+There is not enough memory available for allocation.
+The driver pre-allocated memory during attach so this should not happen.
+.It "npe%d: remember to fix rx q setup"
+See
+.Sx BUGS
+below.
+.It "npe%d: free mbuf at entry %u"
+An mbuf was unexpectedly found on the device queue; the index of
+the queue entry is printed.
+.It "npe%d: too many fragments %u"
+A frame was dropped on transmit because it was too fragmented and
+the logic to de-fragment failed.
+This should not happen.
+.It "npe%d: device timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Pp
+Other diagnostics exist and are not listed here;
+they should be self-explanatory.
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr polling 4 ,
+.Xr qmgr 4 ,
+.\".Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3 .
+.Sh CAVEATS
+This driver has been tested only with dual-port boards using the IXP425
+such as the Gateworks Avila 2348.
+Some changes to the driver may be required for other configurations.
+.Sh BUGS
+The hardware queues are not properly flushed when the interface
+is marked down.
+.Pp
+The assignment of receive traffic classes to hardware queues
+is presently incomplete.
+Only the first 4 classes are assigned while there are 8 total.
+The driver will print
+.Dq Li "remember to fix rx q setup"
+on startup as a reminder.
+For the moment it is not a problem as all traffic arrives classified
+with class 0.
diff --git a/share/man/man4/man4.i386/CPU_ELAN.4 b/share/man/man4/man4.i386/CPU_ELAN.4
new file mode 100644
index 0000000..7fe7741
--- /dev/null
+++ b/share/man/man4/man4.i386/CPU_ELAN.4
@@ -0,0 +1,158 @@
+.\" Copyright (c) 2003 Poul-Henning Kamp <phk@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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 23, 2003
+.Dt CPU_ELAN 4 i386
+.Os
+.Sh NAME
+.Nm CPU_ELAN
+.Nd AMD Elan 520 CPU support
+.Sh SYNOPSIS
+.Cd "options CPU_ELAN"
+.Cd "options CPU_ELAN_PPS"
+.Cd "options CPU_ELAN_XTAL"
+.Bl -item -compact
+.It
+.Va machdep.elan_gpio_config
+.It
+.Va machdep.elan_freq
+.El
+.Cd "options CPU_SOEKRIS"
+.Sh DESCRIPTION
+The
+.Cd "options CPU_ELAN"
+enables support for the AMD Elan 520 CPU.
+.Pp
+A device
+.Pa /dev/elan-mmcr
+exports the MMCR register bank to userland
+using
+.Xr mmap 2 .
+.Pp
+The
+.Tn i8254
+timer will be adjusted to the slightly unorthodox
+frequency 1189161 Hz (32768 * 45 * 25 / 31) employed by the Elan.
+.Pp
+A timecounter named
+.Dq Li ELAN
+is implemented using the general purpose timer 2,
+but it will not be usable unless HZ is configured at 150 or higher.
+This timecounter is much better than the
+.Dq Li i8254
+timecounter and should be
+used at all times.
+.Pp
+The
+.Va machdep.elan_gpio_config
+.Xr sysctl 8
+variable
+enables configuration of the GPIO pins of the CPU.
+The string must be exactly 32 characters long.
+A
+.Ql -
+means the GPIO is unavailable.
+A
+.Ql l
+(lower-case ell) configures a
+.Xr led 4
+device (active low).
+A
+.Ql L
+configures a
+.Xr led 4
+device (active high).
+A
+.Ql \&.
+means no configuration for this GPIO.
+These
+.Xr led 4
+devices will be named
+.Pa /dev/led/gpio%d .
+For meaning of
+.Ql P ,
+.Ql e
+and
+.Ql E ,
+see under
+.Cd "options CPU_ELAN_PPS" .
+.Pp
+The
+.Cd "options CPU_ELAN_XTAL"
+and the
+.Va machdep.elan_freq
+.Xr sysctl 8
+variable
+can be used to set the CPU clock crystal frequency in Hz.
+The default is 33333333 Hz.
+.Pp
+The
+.Cd "options CPU_ELAN_PPS"
+enables precision timestamping using the RFC2783 PPS-API via the
+.Pa /dev/elan-mmcr
+device.
+The resolution will be approximately 125 nsec
+and the precision \(+- 125 nsec.
+(For 125 nsec read
+.Dq "4 / CPU clock crystal frequency" . )
+.Pp
+The input signal must be connected to the TMR1IN pin and
+a GPIO pin.
+The GPIO pin must be configured with a
+.Ql P
+in
+.Va machdep.elan_gpio_config .
+.Pp
+In addition, one GPIO pin can be configured with either
+.Ql e
+(active low)
+or
+.Ql E
+(active high) to become a
+.Dq echo
+output of the input signal.
+Please notice that this signal is not suitable for calibration.
+.Pp
+If the
+.Cd "options CPU_SOEKRIS"
+is given, the support will additionally be tailored to the
+Soekris Engineering 45xx series of embedded computers.
+The
+.Dq error
+led will be configured (as
+.Pa /dev/led/error )
+and the GPIO pins which are not
+available will be disabled.
+.Sh SEE ALSO
+.Xr led 4 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+code first appeared in
+.Fx 4.7 .
+.Sh AUTHORS
+.An "Poul-Henning Kamp" Aq phk@FreeBSD.org
diff --git a/share/man/man4/man4.i386/Makefile b/share/man/man4/man4.i386/Makefile
new file mode 100644
index 0000000..186c806
--- /dev/null
+++ b/share/man/man4/man4.i386/Makefile
@@ -0,0 +1,51 @@
+# $FreeBSD$
+
+MAN= aic.4 \
+ alpm.4 \
+ amdpm.4 \
+ apm.4 \
+ ar.4 \
+ ce.4 \
+ cp.4 \
+ CPU_ELAN.4 \
+ cs.4 \
+ ct.4 \
+ ctau.4 \
+ dpms.4 \
+ cx.4 \
+ ep.4 \
+ ex.4 \
+ fe.4 \
+ glxsb.4 \
+ ie.4 \
+ longrun.4 \
+ mcd.4 \
+ mse.4 \
+ npx.4 \
+ padlock.4 \
+ pae.4 \
+ pbio.4 \
+ pcf.4 \
+ perfmon.4 \
+ pnp.4 \
+ pnpbios.4 \
+ ray.4 \
+ sbni.4 \
+ scd.4 \
+ smapi.4 \
+ snc.4 \
+ sr.4 \
+ streams.4 \
+ svr4.4 \
+ viapm.4 \
+ vpd.4 \
+ vx.4 \
+ wl.4
+
+MLINKS= CPU_ELAN.4 CPU_SOEKRIS.4
+MLINKS+=pae.4 PAE.4
+MLINKS+=sbni.4 if_sbni.4
+
+MANSUBDIR=/i386
+
+.include <bsd.prog.mk>
diff --git a/share/man/man4/man4.i386/aic.4 b/share/man/man4/man4.i386/aic.4
new file mode 100644
index 0000000..991a0c5
--- /dev/null
+++ b/share/man/man4/man4.i386/aic.4
@@ -0,0 +1,84 @@
+.\"
+.\" Copyright (c) 1994 James A. Jegers
+.\" 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. 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$
+.\"
+.Dd November 8, 2003
+.Dt AIC 4 i386
+.Os
+.Sh NAME
+.Nm aic
+.Nd Adaptec AIC-6260 and AIC-6360 SCSI driver
+.Sh SYNOPSIS
+.Cd "device aic"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.aic.0.at="isa"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Adaptec AIC-6260 and AIC-6360 SCSI
+controller chips.
+Many systems that use these controller chips do not have a boot ROM
+and therefore cannot be booted from.
+.Sh HARDWARE
+The adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec AHA-1505 (ISA)
+.It
+Adaptec AHA-1510A, AHA-1510B (ISA)
+.It
+Adaptec AHA-1520A, AHA-1520B (ISA)
+.It
+Adaptec AHA-1522A, AHA-1522B (ISA)
+.It
+Adaptec AHA-1535 (ISA)
+.It
+Creative Labs SoundBlaster SCSI host adapter (ISA)
+.It
+Adaptec AHA-1460, AHA-1460B, AHA-1460C, AHA-1460D (PC Card)
+.It
+Adaptec AHA-1030B, AHA-1030P (PC98)
+.It
+NEC PC-9801-100 (PC98)
+.El
+.Sh SEE ALSO
+.Xr aha 4 ,
+.Xr ahb 4 ,
+.Xr ahc 4 ,
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr sa 4
+.Sh BUGS
+The driver does not work well with multiple devices on the SCSI bus.
+The driver works well with devices like CDROMs and Tape drives.
+The driver works not so well with disk drives.
+The PC Card version appears to work better than the ISA version, but
+that may be due to differing levels of testing of the devices.
diff --git a/share/man/man4/man4.i386/alpm.4 b/share/man/man4/man4.i386/alpm.4
new file mode 100644
index 0000000..f288b72
--- /dev/null
+++ b/share/man/man4/man4.i386/alpm.4
@@ -0,0 +1,62 @@
+.\" Copyright (c) 1999 Nicolas Souchu
+.\" 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$
+.\"
+.Dd February 13, 1999
+.Dt ALPM 4 i386
+.Os
+.Sh NAME
+.Nm alpm
+.Nd Acer Aladdin 15x3 Power Management controller driver
+.Sh SYNOPSIS
+.Cd device smbus
+.Cd device smb
+.Cd device alpm
+.Sh DESCRIPTION
+This driver provides access to the
+.Tn Aladdin 15x3 Power Management Unit .
+Currently, only smbus controller
+function is implemented.
+.Pp
+The embedded SMBus controller of the Aladdin chipset may give you access
+to the monitoring facilities of your mainboard.
+See
+.Xr smb 4
+for writing user code to fetch voltages, temperature and so on from the
+monitoring chip of your mainboard.
+.Sh SEE ALSO
+.Xr smb 4 ,
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu Aq nsouch@FreeBSD.org
+.Sh BUGS
+Only polling mode is supported.
diff --git a/share/man/man4/man4.i386/amdpm.4 b/share/man/man4/man4.i386/amdpm.4
new file mode 100644
index 0000000..f8937b3
--- /dev/null
+++ b/share/man/man4/man4.i386/amdpm.4
@@ -0,0 +1,72 @@
+.\" Copyright (c) 2001 Murray Stokely
+.\" Copyright (c) 1999 Takanori Watanabe
+.\" 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$
+.\"
+.Dd December 31, 2005
+.Dt AMDPM 4 i386
+.Os
+.Sh NAME
+.Nm amdpm
+.Nd AMD 756/766/768/8111 Power Management controller driver
+.Sh SYNOPSIS
+.Cd device smbus
+.Cd device smb
+.Cd device amdpm
+.Sh DESCRIPTION
+This driver provides access to
+.Tn AMD 756/766/768/8111 Power management controllers .
+Currently, only the SMBus 1.0 controller function is implemented.
+The SMBus 2.0 functionality of the AMD 8111 controller is supported via the
+.Xr amdsmb 4
+driver.
+.Pp
+The embedded SMBus controller of the AMD 756 chipset may give you access
+to the monitoring facilities of your mainboard.
+See
+.Xr smb 4
+for writing user code to fetch voltages, temperature and so on from the
+monitoring chip of your mainboard.
+.Sh SEE ALSO
+.Xr amdsmb 4 ,
+.Xr smb 4 ,
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.5 .
+.Sh AUTHORS
+.An -nosplit
+This driver was written by
+.An "Matthew C. Forman" .
+Based heavily on the
+.Nm alpm
+driver by
+.An Nicolas Souchu .
+This manual page was written by
+.An Murray Stokely Aq murray@FreeBSD.org .
+.Sh BUGS
+Only polling mode is supported.
diff --git a/share/man/man4/man4.i386/apm.4 b/share/man/man4/man4.i386/apm.4
new file mode 100644
index 0000000..e5e5c6a
--- /dev/null
+++ b/share/man/man4/man4.i386/apm.4
@@ -0,0 +1,158 @@
+.\" LP (Laptop Package)
+.\"
+.\" Copyright (c) 1994 by HOSOKAWA, Tatsumi <hosokawa@mt.cs.keio.ac.jp>
+.\"
+.\" This software may be used, modified, copied, and distributed, in
+.\" both source and binary form provided that the above copyright and
+.\" these terms are retained. Under no circumstances is the author
+.\" responsible for the proper functioning of this software, nor does
+.\" the author assume any responsibility for damages incurred with its
+.\" use.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 1, 1994
+.Dt APM 4 i386
+.Os
+.Sh NAME
+.Nm apm
+.Nd APM BIOS interface
+.Sh SYNOPSIS
+.Cd device apm
+.Sh DESCRIPTION
+.Nm
+is an interface to the Intel / Microsoft APM (Advanced Power Management) BIOS
+on laptop PCs.
+.Pp
+.Nm
+provides the following power management functions.
+.Bl -enum -offset indent
+.It
+When the system wakes up from suspended mode,
+.Nm
+adjusts the system clock to RTC.
+.It
+When the system wakes up from suspended mode,
+.Nm
+passes a message to
+.Xr syslogd 8
+comprising of system wakeup time and elapsed time during suspended mode.
+.It
+.Nm
+slows CPU clock when there are no system activities (runnable processes,
+interrupts, etc.).
+This function is available only on systems whose APM
+supports CPU idling.
+.It
+.Nm
+exports an application interface as a character device.
+Applications
+can control APM, or retrieve APM status information via this interface.
+.Nm
+exports the following interfaces.
+These symbols are defined in
+.In machine/apm_bios.h .
+.Bl -tag -width 4n -offset indent
+.It Sy APMIO_SUSPEND
+Suspend system.
+.It Sy APMIO_GET
+Get power management information.
+.It Sy APMIO_ENABLE
+.It Sy APMIO_DISABLE
+Enable / Disable power management.
+.It Sy APMIO_HALTCPU
+.It Sy APMIO_NOTHALTCPU
+Control execution of HLT in the kernel context switch routine.
+.It Sy APMIO_GETPWSTATUS
+Get per battery information.
+.Pp
+Some APM implementations execute the HLT
+(Halt CPU until an interrupt occurs)
+instruction in the
+.Dq Em Idle CPU
+call, while others do not.
+Thus enabling this may result in
+redundant HLT executions because
+.Dq Em Idle CPU
+is called from the kernel context switch routine that inherently executes
+HLT.
+This may reduce peak system performance.
+.Pp
+Also the system hangs up if HLT instruction is disabled in the kernel
+context switch routine, and if the APM implementation of the machine
+does not execute HLT in
+.Dq Em Idle CPU .
+On some implementations that do not support CPU clock slowdown, APM
+might not execute HLT.
+.Nm
+disables
+.Sy APMIO_NOTHALTCPU
+operation on such machines.
+.Pp
+The current version of
+.Nm
+does not call
+.Dq Em Idle CPU
+from the kernel context switch routine if clock slowdown is not supported,
+and it executes HLT instruction by default.
+Therefore, there is
+no need to use these two operations in most cases.
+.El
+.Pp
+These interfaces are used by
+.Xr apm 8 .
+.It
+.Nm
+polls APM events and handles the following events.
+.Bl -column PMEV_POWERSTATECHANGEXXX "suspend system xxxxx"
+.It Sy "Name " "Action " "Description"
+.It Dv "PMEV_STANDBYREQ " No "suspend system " "standby request"
+.It Dv "PMEV_SUSPENDREQ " No "suspend system " "suspend request"
+.It Dv "PMEV_USERSUSPENDREQ " No "suspend system " "user suspend request"
+.It Dv "PMEV_CRITSUSPEND " No "suspend system " "critical suspend request"
+.It Dv "PMEV_NORMRESUME " No "resume system " "normal resume"
+.It Dv "PMEV_CRITRESUME " No "resume system " "critical resume"
+.It Dv "PMEV_STANDBYRESUME " No "resume system " "standby resume"
+.It Dv "PMEV_BATTERYLOW " No "notify message " "battery low"
+.It Dv "PMEV_UPDATETIME " No "adjust clock " "update time"
+.El
+.El
+.Sh SEE ALSO
+.Xr apm 8 ,
+.Xr zzz 8
+.Sh AUTHORS
+Tatsumi Hosokawa <hosokawa@jp.FreeBSD.org>
+.Sh BUGS
+WARNING!
+Many, if not most, of the implementations of APM-bios in laptops
+today are buggy.
+You may be putting your LCD-display and batteries at
+a risk by using this interface.
+(The reason this is not a problem for
+MS-Windows is that they use the real-mode interface.)
+If you see any
+weird behavior from your system with this code in use, unplug the
+power and batteries ASAP, if not immediately, and disable this code.
+.Pp
+We are very interested in getting this code working, so please send your
+observations of any anomalous behavior to us.
+.Pp
+When
+.Nm
+is active, calling the BIOS setup routine by using hot-keys,
+may cause serious trouble when resuming the system.
+BIOS setup programs should be called during bootstrap, or from DOS.
+.Pp
+Some APM implementations cannot handle events such as pushing the
+power button or closing the cover.
+On such implementations, the system
+.Ar must
+be suspended
+.Ar only
+by using
+.Xr apm 8
+or
+.Xr zzz 8 .
+.Pp
+Disk spin-down, LCD backlight control, and power on demand have not
+been supported on the current version.
diff --git a/share/man/man4/man4.i386/ar.4 b/share/man/man4/man4.i386/ar.4
new file mode 100644
index 0000000..c59b1fc
--- /dev/null
+++ b/share/man/man4/man4.i386/ar.4
@@ -0,0 +1,118 @@
+.\"
+.\" Copyright (c) 1995, 1999 John Hay. 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. 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 John Hay ``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 John Hay 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$
+.\"
+.Dd March 16, 2008
+.Dt AR 4 i386
+.Os
+.Sh NAME
+.Nm ar
+.Nd synchronous Digi/Arnet device driver
+.Sh SYNOPSIS
+.Cd "device ar"
+.Pp
+.Cd "device sppp"
+.Sh DESCRIPTION
+The
+.Nm
+driver supports the Digi/Arnet SYNC/570i ISA and PCI cards that is based on the
+HD64570 chip.
+Both the 2 and 4 port cards are supported and auto detected.
+.Pp
+The standard
+.Fx
+sppp code is used for the link level layer.
+The
+default protocol used is PPP.
+The Cisco HDLC protocol can be used by
+adding
+.Ar link2
+to
+.Xr ifconfig 8 .
+.Pp
+Alternately, the driver can be compiled to support
+.Xr netgraph 4
+(see below).
+.Sh NUMBERING
+Only one line for each card is needed in the kernel configuration file.
+The first card's ports will be installed from ar0.
+The numbering of the
+next card will continue where the first stopped, e.g.\& if the first card
+is a two port card it will use ar0 and ar1.
+The next card will then
+start at ar2.
+.Pp
+The card only supports IRQ 3, 5, 7, 10, 11, 12 and 15.
+.Pp
+The iomem area is a 16Kb block and must start at a 16Kb boundary.
+.Sh NETGRAPH SUPPORT
+If the kernel is compiled with
+.Dv "options NETGRAPH"
+then the sppp and Cisco HDLC modes are disabled (and the sppp driver
+is unneeded), and this driver functions as a
+.Xr netgraph 4
+node with a single hook named
+.Dv rawdata .
+Connecting to this hook enables the transmission of raw HDLC frames.
+The node will have the same name as the device with ``sync_''
+prepended, e.g.,
+.Dv sync_ar0 .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ar%d: Warning illegal interrupt %d."
+The card cannot use the specified interrupt.
+Choose a different one.
+.El
+.Sh SEE ALSO
+.Xr cx 4 ,
+.Xr netgraph 4 ,
+.Xr netintro 4 ,
+.Xr sr 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An John Hay Aq jhay@FreeBSD.org .
+Netgraph support was added by
+.An Julian Elischer Aq julian@FreeBSD.org .
+.Sh BUGS
+At the moment only the V.35 and X.21 interfaces are tested.
+The others
+may need tweaks to the clock selection code.
+.Pp
+The code can probably stand some optimizing.
+.Pp
+Please report bugs to
+.Aq jhay@FreeBSD.org .
diff --git a/share/man/man4/man4.i386/ce.4 b/share/man/man4/man4.i386/ce.4
new file mode 100644
index 0000000..fec2dab
--- /dev/null
+++ b/share/man/man4/man4.i386/ce.4
@@ -0,0 +1,111 @@
+.\" Copyright (c) 2006 Roman Kurakin <rik@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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 30, 2006
+.Dt CE 4 i386
+.Os
+.Sh NAME
+.Nm ce
+.Nd "driver for synchronous Cronyx Tau-PCI/32 WAN adapters"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ce"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ce_load="YES"
+.Ed
+.Pp
+Additional options:
+.Cd "device sppp"
+.Cd "options NETGRAPH"
+.Cd "options NETGRAPH_CRONYX"
+.Sh DESCRIPTION
+The
+.Nm
+driver needs either
+.Xr sppp 4
+or
+.Xr netgraph 4 .
+Which one to use is determined by the
+.Dv NETGRAPH_CRONYX
+option.
+If this option is present in your kernel configuration file, the
+.Nm
+driver will be compiled with
+.Xr netgraph 4
+support.
+Otherwise, it will be compiled with
+.Xr sppp 4
+support.
+.Pp
+Refer to
+.Xr sconfig 8
+for information about the
+.Nm
+adapter configuration.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following models of Tau-PCI/32 WAN adapters:
+.Pp
+.Bl -tag -width 20n -compact
+.It Cronyx Tau-PCI/32
+two fractional/unframed E1 interfaces,
+with 32 HDLC channels shared between them with total adapter throughput
+2048 kbps.
+.It Cronyx Tau-PCI/32-Lite
+single fractional/unframed E1 interface,
+with 32 HDLC channels.
+.El
+.Sh SEE ALSO
+.Xr cp 4 ,
+.Xr ctau 4 ,
+.Xr cx 4 ,
+.Xr sppp 4 ,
+.Xr ifconfig 8 ,
+.Xr sconfig 8 ,
+.Xr spppcontrol 8
+.Sh HISTORY
+The
+.Nm
+driver was added in
+.Fx 6.2 ,
+.Fx 5.5
+and
+.Fx 4.11 .
+The
+.Nm
+driver for previous versions of
+.Fx
+is available from
+.Pa http://www.cronyx.ru/ .
diff --git a/share/man/man4/man4.i386/cp.4 b/share/man/man4/man4.i386/cp.4
new file mode 100644
index 0000000..049bb08
--- /dev/null
+++ b/share/man/man4/man4.i386/cp.4
@@ -0,0 +1,113 @@
+.\" Copyright (c) 2003-2004 Roman Kurakin <rik@cronyx.ru>
+.\" Copyright (c) 2003-2004 Cronyx Engineering
+.\" All rights reserved.
+.\"
+.\" This software is distributed with NO WARRANTIES, not even the implied
+.\" warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\" Authors grant any other persons or organisations a permission to use,
+.\" modify and redistribute this software in source and binary forms,
+.\" as long as this message is kept with the software, all derivative
+.\" works or modified versions.
+.\"
+.\" Cronyx Id: cp.4,v 1.1.2.5 2004/06/21 17:47:40 rik Exp $
+.\" $FreeBSD$
+.\"
+.Dd July 16, 2005
+.Dt CP 4 i386
+.Os
+.Sh NAME
+.Nm cp
+.Nd "driver for synchronous Cronyx Tau-PCI WAN adapters"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device cp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cp_load="YES"
+.Ed
+.Pp
+Additional options:
+.Cd "device sppp"
+.Cd "options NETGRAPH"
+.Cd "options NETGRAPH_CRONYX"
+.Sh DESCRIPTION
+The
+.Nm
+driver needs either
+.Xr sppp 4
+or
+.Xr netgraph 4 .
+Which one to use is determined by the
+.Dv NETGRAPH_CRONYX
+option.
+If this option is present in your kernel configuration file, the
+.Nm
+driver will be compiled with
+.Xr netgraph 4
+support.
+Otherwise, it will be compiled with
+.Xr sppp 4
+support.
+.Pp
+Refer to
+.Xr sconfig 8
+for information about the
+.Nm
+adapter configuration.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following models of Tau-PCI WAN adapters:
+.Pp
+.Bl -tag -width 20n -compact
+.It Cronyx Tau-PCI
+V.35 and RS-232 interfaces
+.It Cronyx Tau-PCI/R
+RS-530(RS-449) and X.21 interfaces
+.It Cronyx Tau-PCI-L
+one V.35 and RS-232 interface, low profile
+.It Cronyx Tau-PCI-L/R
+one RS-530(RS-449) and X.21 interface, low profile
+.It Cronyx Tau-PCI-E1
+fractional E1 interfaces
+.It Cronyx Tau-PCI-G703
+unframed E1 interfaces
+.It Cronyx Tau-PCI-2E1
+fractional E1 and unframed E1 interfaces
+.It Cronyx Tau-PCI-4E1
+fractional E1 and unframed E1 interfaces
+.It Cronyx Tau-PCI-E3
+E3 interface
+.It Cronyx Tau-PCI-T3
+T3 interface
+.It Cronyx Tau-PCI-STS1
+STS-1 interface
+.El
+.Sh SEE ALSO
+.Xr ctau 4 ,
+.Xr cx 4 ,
+.Xr sppp 4 ,
+.Xr ifconfig 8 ,
+.Xr sconfig 8 ,
+.Xr spppcontrol 8
+.Sh HISTORY
+The
+.Nm
+driver was added in
+.Fx 5.3
+and
+.Fx 4.11 .
+The
+.Nm
+driver for previous versions of
+.Fx
+is available from
+.Pa http://www.cronyx.ru/ .
diff --git a/share/man/man4/man4.i386/cs.4 b/share/man/man4/man4.i386/cs.4
new file mode 100644
index 0000000..c1ee7ae
--- /dev/null
+++ b/share/man/man4/man4.i386/cs.4
@@ -0,0 +1,152 @@
+.\"
+.\" Copyright (c) 1998 Michael Smith
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt CS 4 i386
+.Os
+.Sh NAME
+.Nm cs
+.Nd "Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device cs"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cs_load="YES"
+.Ed
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.cs.0.at="isa"
+.Cd hint.cs.0.port="0x300"
+.Cd hint.cs.0.irq="10"
+.Cd hint.cs.0.maddr="0xd000"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for ISA Ethernet adapters based on the
+.Tn Crystal Semiconductor CS8900
+and
+.Tn CS8920
+NICs.
+These devices are used on the
+.Tn IBM EtherJet ISA
+adapters and in many embedded applications where the high integration, small
+size and low cost of the CS89x0 family compensate for their drawbacks.
+.Pp
+The
+.Nm
+driver will obtain configuration parameters either from
+.Pa /boot/device.hints
+or from the card.
+At least the I/O port number must be specified.
+Other parameters specified in
+.Pa /boot/device.hints
+will be used if present;
+the card may be soft-configured so these may be any valid
+value.
+Adapters based on the CS8920 normally offer PnP configuration and the driver
+will detect the
+.Tn IBM EtherJet
+and the
+.Tn CSC6040
+adapters automatically.
+.Pp
+Note that the CS8900 is limited to 4 IRQ values; these are normally implemented
+as 5, 10, 11 and 12.
+The CS8920 has no such limitation.
+.Pp
+Memory-mapped and DMA operation are not supported at this time.
+.Pp
+In addition to the ISA devices, the PC Card devices based on the CS889x0
+family are also supported.
+The IBM EtherJet PCMCIA Card is the only known device based on this
+chip.
+The PC Card support does not need the above specific ISA hints to work.
+The PC Card support may not work for 10base2 (thinnet) connections and may
+bogusly claim to support 10base5 (there are no known cards that have an
+AUI necessary for 10base5 support on their dongles).
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "cs%d: full/half duplex negotiation timeout"
+The attempt to negotiate duplex settings with the hub timed out.
+This may
+indicate a cabling problem or a faulty or incompatible hub.
+.It "cs%d: failed to enable <media>"
+The CS89x0 failed to select the nominated media, either because it is not
+present or not operating correctly.
+.It "cs%d: No EEPROM, assuming defaults"
+The CS89x0 does not have an EEPROM, or the EEPROM is hopelessly damaged.
+Operation
+will only be successful if the configuration entry lists suitable values for
+the adapter.
+.It "cs%d: Invalid irq"
+The IRQ specified in the configuration entry is not valid for the adapter.
+.It "cs%d: Could not allocate memory for NIC"
+There is a critical memory shortage.
+The adapter will not function.
+.It "cs%d: Adapter has no media"
+The adapter is not configured for a specific media type.
+The media type will have
+to be manually set.
+.It "This is a %s, but LDN %d is disabled"
+The PnP probe code found a recognised adapter, but the adapter is disabled.
+.It "failed to read pnp parms"
+A PnP adapter was found, but configuration parameters for it could not be read.
+.It "failed to pnp card parameters"
+The parameters obtained via PnP were not accepted by the driver.
+The adapter
+may not function.
+.El
+.Sh CAVEATS
+The CS89x0 family of adapters have a very small RAM buffer (4K).
+This may
+cause problems with extremely high network loads or bursty network traffic.
+In particular, NFS operations should be limited to 1k read/write transactions
+in order to avoid overruns.
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An Maxim Bolotin
+and
+.An Oleg Sharoiko .
+This manpage was written by
+.An Michael Smith .
diff --git a/share/man/man4/man4.i386/ct.4 b/share/man/man4/man4.i386/ct.4
new file mode 100644
index 0000000..ac8d6c2
--- /dev/null
+++ b/share/man/man4/man4.i386/ct.4
@@ -0,0 +1,162 @@
+.\" Copyright (c) 2003 Noriaki MITSUNAGA. All rights reserved.
+.\" Copyright (c) 2003 Hideyuki KURASHINA. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 18, 2003
+.Dt CT 4 i386
+.Os
+.Sh NAME
+.Nm ct
+.Nd "WD33C93[ABC] based CBUS SCSI host adapter driver"
+.Sh SYNOPSIS
+.Cd "device ct"
+.Cd "device scbus"
+.Pp
+In
+.Pa /boot/device.hints:
+.Pp
+For most PC-9801-55, -92 and compatibles:
+.Cd hint.ct.0.at="isa"
+.Pp
+For ELECOM bus-master
+.Tn SCSI
+adapters:
+.Cd hint.ct.0.at="isa"
+.Cd hint.ct.0.flags="0x30000"
+.Pp
+For I-O DATA SC98 adapters:
+.Cd hint.ct.0.at="isa"
+.Cd hint.ct.0.flags="0x10000"
+.Pp
+For LOGITEC adapters:
+.Cd hint.ct.0.at="isa"
+.Cd hint.ct.0.flags="0x50000"
+.Pp
+For TEXA adapters:
+.Cd hint.ct.0.at="isa"
+.Cd hint.ct.0.flags="0x20000"
+.Pp
+For adapters with SMIT transfer mode to enable SMIT transfer:
+.Cd hint.ct.0.at="isa"
+.Cd hint.ct.0.flags="0x40000"
+.Cd hint.ct.0.maddr="0xdc000"
+.Pp
+Flags meaning:
+.Bl -tag -offset indent -compact -width 0x000000
+.It 0x00000
+DMA transfer mode for an NEC PC-9801-55, -92 (or
+compatibles), ICM IF-2660, Midori-Denshi MDC-554NA, or
+Logitec LHA-N151
+.It 0x10000
+DMA transfer mode for an I-O DATA SC-98II
+.It 0x20000
+bus-master transfer mode for a TEXA HA-55BS2, its
+successors, or Midori-Denshi MDC-926R
+.It 0x30000
+bus-master transfer mode for an ELECOM bus-master SCSI
+adapter
+.It 0x40000
+SMIT transfer mode (for supported adapters only)
+.It 0x50000
+bus-master transfer mode for a Logitec LHA-20x series,
+ICM IF-2766, IF-2766ET, IF-2767 or IF-2769
+.El
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to the
+.Tn SCSI
+bus connected to a WD33C93[ABC] based host adapter.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+ELECOM bus-master
+.Tn SCSI
+adapters
+.It
+I-O DATA SC-98II
+.It
+ICM IF-2660, IF-2766, IF-2766ET, IF-2767 and IF-2769
+.It
+Logitec LHA-N151 and LHA-20x series
+.It
+Midori-Denshi MDC-554NA and MDC-926R
+.It
+NEC PC-9801-55, 92 and compatibles
+.It
+SMIT transfer type
+.Tn SCSI
+host adapters
+.It
+TEXA HA-55BS2 and its later models
+.El
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr ctau 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh NOTES
+Historically, the driver for the Cronyx Tau WAN adapters was
+.Dq ct .
+This device name was changed to
+.Dq ctau
+to avoid conflicts
+with this pc98
+.Nm
+driver.
+The network device name for
+.Xr ctau 4
+is
+.Dq Li ct .
+Please see
+.Xr ctau 4
+for the details for that device.
+.Sh HISTORY
+The
+.Nm
+device driver has been developed for
+.Nx Ns /pc98
+and ported for
+.Fx .
+It first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Naofumi HONDA .
+.Pp
+This manual page was written by
+.An -nosplit
+.An Noriaki MITSUNAGA Aq non@FreeBSD.org
+and
+.An Hideyuki KURASHINA Aq rushani@FreeBSD.org .
diff --git a/share/man/man4/man4.i386/ctau.4 b/share/man/man4/man4.i386/ctau.4
new file mode 100644
index 0000000..e18dc34
--- /dev/null
+++ b/share/man/man4/man4.i386/ctau.4
@@ -0,0 +1,119 @@
+.\" Copyright (c) 2004 Roman Kurakin <rik@cronyx.ru>
+.\" Copyright (c) 2004 Cronyx Engineering
+.\" All rights reserved.
+.\"
+.\" This software is distributed with NO WARRANTIES, not even the implied
+.\" warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\" Authors grant any other persons or organisations a permission to use,
+.\" modify and redistribute this software in source and binary forms,
+.\" as long as this message is kept with the software, all derivative
+.\" works or modified versions.
+.\"
+.\" Cronyx Id: ct.4,v 1.1.2.6 2004/06/21 17:56:40 rik Exp $
+.\" $FreeBSD$
+.\"
+.Dd September 6, 2004
+.Dt CTAU 4 i386
+.Os
+.Sh NAME
+.Nm ctau
+.Nd driver for synchronous Cronyx Tau WAN adapters
+.Sh SYNOPSIS
+.Cd "device ctau"
+.Pp
+Additional options:
+.Cd "device sppp"
+.Cd "options NETGRAPH"
+.Cd "options NETGRAPH_CRONYX"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.ctau.0.at="isa"
+.Cd hint.ctau.0.port="0x240"
+.Cd hint.ctau.0.irq="15"
+.Cd hint.ctau.0.drq="7"
+.Sh DESCRIPTION
+The
+.Nm
+driver needs either
+.Xr sppp 4
+or
+.Xr netgraph 4 .
+Which one to use is determined by the
+.Dv NETGRAPH_CRONYX
+option.
+If this option is present in your kernel configuration file, the
+.Nm
+driver will be compiled with
+.Xr netgraph 4
+support.
+Otherwise, it will be compiled with
+.Xr sppp 4
+support.
+.Pp
+The base I/O port address specified in
+.Pa /boot/device.hints
+must match the port address set by the jumpers on the board.
+The DMA I/O channel and interrupt request numbers are configured
+by software at adapter initialization.
+Legal values are:
+.Pp
+.Bl -tag -compact -width Port:
+.It Port :
+0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0,
+0x300, 0x320, 0x340, 0x360, 0x380, 0x3a0, 0x3c0, 0x3e0
+.It IRQ :
+3, 5, 7, 10, 11, 12, 15
+.It DMA :
+5, 6, 7
+.El
+.Pp
+The
+.Nm
+driver supports autodetection.
+As for all non-PNP hardware, using
+autodetection could lead to some potential problems with other devices during
+the hardware detection process.
+It is always better to specify hardware resources manually.
+.Pp
+Refer to
+.Xr sconfig 8
+for information about the
+.Nm
+adapter configuration.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+Cronyx Tau (RS-232/V.35)
+.It
+Cronyx Tau/R (RS-530/RS-449)
+.It
+Cronyx Tau/E1 (fractional E1)
+.It
+Cronyx Tau/G703 (unframed E1)
+.El
+.Sh SEE ALSO
+.Xr cp 4 ,
+.Xr cx 4 ,
+.Xr sppp 4 ,
+.Xr ifconfig 8 ,
+.Xr sconfig 8 ,
+.Xr spppcontrol 8
+.Sh HISTORY
+The
+.Nm
+driver was added in
+.Fx 5.3
+and
+.Fx 4.10 .
+The
+.Nm
+driver for previous versions of
+.Fx
+is available from
+.Pa http://www.cronyx.ru/ .
diff --git a/share/man/man4/man4.i386/cx.4 b/share/man/man4/man4.i386/cx.4
new file mode 100644
index 0000000..00df603
--- /dev/null
+++ b/share/man/man4/man4.i386/cx.4
@@ -0,0 +1,139 @@
+.\" Copyright (c) 2003-2004 Roman Kurakin <rik@cronyx.ru>
+.\" Copyright (c) 2003-2004 Cronyx Engineering
+.\" All rights reserved.
+.\"
+.\" This software is distributed with NO WARRANTIES, not even the implied
+.\" warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\" Authors grant any other persons or organisations a permission to use,
+.\" modify and redistribute this software in source and binary forms,
+.\" as long as this message is kept with the software, all derivative
+.\" works or modified versions.
+.\"
+.\" Cronyx Id: cx.4,v 1.1.2.6 2004/06/21 17:56:40 rik Exp $
+.\" $FreeBSD$
+.\"
+.Dd July 16, 2005
+.Dt CX 4 i386
+.Os
+.Sh NAME
+.Nm cx
+.Nd "driver for synchronous/asynchronous Cronyx Sigma WAN adapters"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device cx"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_cx_load="YES"
+.Ed
+.Pp
+Additional options:
+.Cd "device sppp"
+.Cd "options NETGRAPH"
+.Cd "options NETGRAPH_CRONYX"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.cx.0.at="isa"
+.Cd hint.cx.0.port="0x240"
+.Cd hint.cx.0.irq="15"
+.Cd hint.cx.0.drq="7"
+.Sh DESCRIPTION
+The
+.Nm
+driver needs either
+.Xr sppp 4
+or
+.Xr netgraph 4 .
+Which one to use is determined by the
+.Dv NETGRAPH_CRONYX
+option.
+If this option is present in your kernel configuration file, the
+.Nm
+driver will be compiled with
+.Xr netgraph 4
+support.
+Otherwise, it will be compiled with
+.Xr sppp 4
+support.
+.Pp
+The base I/O port address specified in
+.Pa /boot/device.hints
+must match the port address set by the jumpers on the board.
+The DMA I/O channel and interrupt request numbers are configured
+by software at adapter initialization.
+Legal values are:
+.Pp
+.Bl -tag -compact -width Port:
+.It Port :
+0x240, 0x260, 0x280, 0x300, 0x320, 0x380
+.It IRQ :
+3, 5, 7, 10, 11, 12, 15
+.It DMA :
+5, 6, 7
+.El
+.Pp
+The
+.Nm
+driver supports autodetection.
+As for all non-PNP hardware, using
+autodetection could lead to some potential problems with other devices during
+the hardware detection process.
+It is always better to specify hardware resources manually.
+.Pp
+Refer to
+.Xr sconfig 8
+for information about the
+.Nm
+adapter configuration.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+Cronyx Sigma-22, Sigma-24
+.It
+Cronyx Sigma-100
+.It
+Cronyx Sigma-400, Sigma-401, Sigma-404, Sigma-410, Sigma-440
+.It
+Cronyx Sigma-500
+.It
+Cronyx Sigma-703
+.It
+Cronyx Sigma-800, Sigma-801, Sigma-810, Sigma-840
+.El
+.Sh SEE ALSO
+.Xr cp 4 ,
+.Xr ctau 4 ,
+.Xr sppp 4 ,
+.Xr ifconfig 8 ,
+.Xr sconfig 8 ,
+.Xr spppcontrol 8
+.Sh HISTORY
+The
+.Nm
+driver was updated in
+.Fx 5.2
+and
+.Fx 4.10 .
+In most of the previous versions of
+.Fx
+the
+.Nm
+driver is out of date.
+The
+.Nm
+driver for previous versions of
+.Fx
+is available from
+.Pa http://www.cronyx.ru/ .
diff --git a/share/man/man4/man4.i386/dpms.4 b/share/man/man4/man4.i386/dpms.4
new file mode 100644
index 0000000..2412b47
--- /dev/null
+++ b/share/man/man4/man4.i386/dpms.4
@@ -0,0 +1,58 @@
+.\" Copyright (c) 2008 Yahoo!, Inc.
+.\" All rights reserved.
+.\" Written by: John Baldwin <jhb@FreeBSD.org>
+.\"
+.\" 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. 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 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$
+.\"
+.Dd August 23, 2008
+.Dt DPMS 4
+.Os
+.Sh NAME
+.Nm dpms
+.Nd VESA BIOS DPMS driver
+.Sh SYNOPSIS
+.Cd "device dpms"
+.Sh DESCRIPTION
+The
+.Nm
+driver uses the VESA BIOS to manage an external display during suspend and
+resume.
+When the machine suspends,
+the
+.Nm
+driver turns the external display off.
+When the machine resumes,
+it restores the display to its state when the driver was first loaded.
+.Sh SEE ALSO
+.Xr acpi_video 4
+.Sh BUGS
+.Pp
+The VESA BIOS DPMS calls do not provide any way to identify a particular
+display or adapter to manipulate.
+As a result,
+this driver may have unexpected results on systems with multiple displays
+and/or adapters.
diff --git a/share/man/man4/man4.i386/ep.4 b/share/man/man4/man4.i386/ep.4
new file mode 100644
index 0000000..3916754
--- /dev/null
+++ b/share/man/man4/man4.i386/ep.4
@@ -0,0 +1,218 @@
+.\"
+.\" Copyright (c) 1994 Herb Peyerl
+.\" 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 Herb Peyerl
+.\" 3. 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$
+.\"
+.Dd January 1, 2008
+.Dt EP 4 i386
+.Os
+.Sh NAME
+.Nm ep
+.Nd "Ethernet driver for 3Com Etherlink III (3c5x9) interfaces"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ep"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ep_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver supports network adapters based on the 3Com 3C5x9 Etherlink III
+Parallel Tasking chipset.
+.Pp
+Various models of these cards come with a different assortment of
+connectors:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It AUI/DIX
+Standard 15 pin connector, also known as 10base5 (thick-net)
+.It 10Base2
+BNC, also known as thin-net
+.It 10BaseT
+UTP, also known as twisted pair
+.El
+.Pp
+The default port to use is the port that has been selected with the
+setup utility.
+To override this, use the following media options with
+.Xr ifconfig 8
+or in your
+.Pa /etc/rc.conf
+file.
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It 10base5/AUI
+Use the AUI port.
+.It 10base2/BNC
+Use the BNC port.
+.It 10baseT/UTP
+Use the UTP port.
+.El
+.Pp
+If there are multiple cards in the computer, they are searched for
+in the following order: bus, slot, then Ethernet address.
+.Sh HARDWARE
+The
+.Nm
+driver supports Ethernet adapters based on the
+3Com 3C5x9 Etherlink III Parallel Tasking chipset, including:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3C1 CF
+.It
+3Com 3C509-TP, 3C509-BNC, 3C509-Combo, 3C509-TPO, 3C509-TPC ISA
+.It
+3Com 3C509B-TP, 3C509B-BNC, 3C509B-Combo, 3C509B-TPO, 3C509B-TPC ISA
+.It
+3Com 3C529, 3C529-TP MCA
+.It
+3Com 3C562/3C563 PCMCIA
+.It
+3Com 3C569B-J-TPO, 3C569B-J-COMBO CBUS
+.It
+3Com 3C574, 3C574TX, 3C574-TX, 3CCFE574BT, 3CXFE574BT, 3C3FE574BT PCMCIA
+.It
+3Com 3C579-TP, 3C579-BNC EISA
+.It
+3Com 3C589, 3C589B, 3C589C, 3C589D, 3CXE589DT PCMCIA
+.It
+3Com 3CCFEM556B, 3CCFEM556BI PCMCIA
+.It
+3Com 3CXE589EC, 3CCE589EC, 3CXE589ET, 3CCE589ET PCMCIA
+.It
+3Com Megahertz 3CCEM556, 3CXEM556, 3CCEM556B, 3CXEM556B, 3C3FEM556C PCMCIA
+.It
+3Com OfficeConnect 3CXSH572BT, 3CCSH572BT PCMCIA
+.It
+Farallon EtherWave and EtherMac PC Card (P/n 595/895 with BLUE arrow)
+.El
+.Sh NOTES
+The 3c509 card has no jumpers to set the address.
+3Com supplies software to set the address of the card in software.
+To find the card on the ISA bus, the kernel performs a complex
+scan operation at IO address 0x110.
+Beware!
+Avoid placing other cards at that address!
+.Pp
+Furthermore,
+the 3c509 should only
+be configured in EISA mode
+when installed in a computer that has actual EISA slots
+(and an EISA-aware BIOS).
+The normal driver auto-detection support
+is sufficient for non-EISA systems.
+.Pp
+Many different companies sold the 3Com PC Cards under their own private
+label.
+These cards also work.
+.Pp
+The Farallon EtherWave and EtherMac card came in two varieties.
+The
+.Nm
+driver supports the 595 and 895 cards.
+These cards have the blue arrow on the front along with a 3Com logo.
+The Farallon 595a cards, which have a red arrow on the front,
+are also called EtherWave and EtherMac.
+They are supported by the
+.Xr sn 4
+driver.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ep0: reset (status: %x)"
+The driver has encountered a FIFO underrun or overrun.
+The driver will reset the card and the packet will be lost.
+This is not fatal.
+.It "ep0: eeprom failed to come ready"
+The eeprom failed to come ready.
+This probably means the card is wedged.
+.It "ep0: 3c509 in test mode. Erase pencil mark!"
+This means that someone has scribbled with pencil
+in the test area on the card.
+Erase the pencil mark and reboot.
+(This is not a joke).
+.It "ep0: No I/O space?!"
+The driver was unable to allocate the I/O space that it thinks
+should be there.
+Look for conflicts with other devices.
+.It "ep0: No irq?!"
+The driver could not allocate the interrupt it wanted.
+Look for conflicts, although sharing interrupts for PC Card is normal.
+.It "ep0: No connectors!"
+The driver queried the hardware for what ethernet attachment were
+present, but the hardware reported none that the driver recognized.
+.It "ep0: Unable to get Ethernet address!"
+The driver was unable to read the ethernet address from the EEPROM.
+This is likely the result of the card being wedged.
+.It "ep0: if_alloc() failed"
+The driver was unable to allocate a ifnet structure.
+This may happen in extremely low memory conditions.
+.It "ep0: strange connector type in EEPROM: assuming AUI"
+The driver does not know what to do with the information the EEPROM
+has about connectors, so it is assuming the worst.
+.It "ep0: unknown ID 0xXXXXXXXX"
+The driver has found an ID that it believes it supports, but does not
+have a specific identification string to present to the user.
+.It "ep0: <%s> at port 0x%03x in EISA mode"
+The 3C509 ISA card is in EISA mode.
+This message appears to be purely informational.
+.It "ep0: <%s> at x0%03x in PnP mode"
+This card appears to be in Plug and Play mode.
+It should be probed as part of the plug and play phase of the ISA
+probes.
+.It "ep0: Invalid EEPROM checksum!"
+The EEPROM has a bad checksum, so the driver is ignoring the card.
+.It "ep0: bus_setup_intr() failed!"
+The driver was unable to setup the interrupt handler.
+This should never happen.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr ed 4 ,
+.Xr el 4 ,
+.Xr ie 4 ,
+.Xr intro 4 ,
+.Xr ng_ether 4 ,
+.Xr sn 4 ,
+.Xr vx 4 ,
+.Xr ifconfig 8
+.Sh STANDARDS
+are great.
+There is so many to choose from.
+.Sh BUGS
+Support for the 3Com 3C1 CompactFlash is not working.
diff --git a/share/man/man4/man4.i386/ex.4 b/share/man/man4/man4.i386/ex.4
new file mode 100644
index 0000000..3ffb3fc
--- /dev/null
+++ b/share/man/man4/man4.i386/ex.4
@@ -0,0 +1,119 @@
+.\"
+.\" Copyright (c) 1997 David E. O'Brien
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 16, 2005
+.Dt EX 4 i386
+.Os
+.Sh NAME
+.Nm ex
+.Nd "Ethernet device driver for the Intel EtherExpress Pro/10 and Pro/10+"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ex"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ex_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Ethernet adapters based on the Intel
+i82595 chip.
+.Pp
+On the ISA bus, the card will be searched for in the
+I/O address range 0x200 - 0x3a0.
+The IRQ will be read from the EEPROM on the card.
+For correct operation Plug-N-Play support should be disabled.
+.Pp
+On the PC Card bus, the card will be automatically recognized and
+configured.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following Ethernet adapters:
+.Pp
+.Bl -bullet -compact
+.It
+Intel EtherExpress Pro/10 ISA
+.It
+Intel EtherExpress Pro/10+ ISA
+.It
+Olicom OC2220 Ethernet PC Card
+.It
+Olicom OC2232 Ethernet/Modem PC Card
+.It
+Silicom Ethernet LAN PC Card
+.It
+Silicom EtherSerial LAN PC Card
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ex%d: Intel EtherExpress Pro/10, address %6D, connector %s"
+The device probe found an installed card, and was able to correctly install
+the device driver.
+.It "ex%d: WARNING: board's EEPROM is configured for IRQ %d, using %d"
+The device probe detected that the board is configured for a different
+interrupt than the one specified in the kernel configuration file.
+.It "ex%d: invalid IRQ."
+The device probe detected an invalid IRQ setting.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An Javier Mart\('in Rueda .
+The PC Card attachment was written by
+.An Mitsuru ISAWAKI
+and
+.An Warner Losh .
+This manual page was written by
+.An David E. O'Brien .
+.Sh BUGS
+Currently the driver does not support multicast.
+.Pp
+The Silicom EtherSerial card's serial port does not currently work.
+The Olicom OC2232 PC Card should work with the
+.Nm
+driver, but is currently completely broken.
diff --git a/share/man/man4/man4.i386/fe.4 b/share/man/man4/man4.i386/fe.4
new file mode 100644
index 0000000..bacee58
--- /dev/null
+++ b/share/man/man4/man4.i386/fe.4
@@ -0,0 +1,318 @@
+.\" All Rights Reserved, Copyright (C) Fujitsu Limited 1995
+.\"
+.\" This document may be used, modified, copied, distributed, and sold, in
+.\" both source and printed form provided that the above copyright, these
+.\" terms and the following disclaimer are retained. The name of the author
+.\" and/or the contributor may not be used to endorse or promote products
+.\" derived from this software without specific prior written permission.
+.\"
+.\" THIS DOCUMENT IS PROVIDED BY THE AUTHOR AND THE CONTRIBUTOR ``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 THE CONTRIBUTOR 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 DOCUMENT, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" Contributed by M. Sekiguchi <seki@sysrap.cs.fujitsu.co.jp>.
+.\" for fe driver.
+.\"
+.\" $FreeBSD$
+.Dd July 16, 2005
+.Dt FE 4 i386
+.Os
+.Sh NAME
+.Nm fe
+.Nd "Fujitsu MB86960A/MB86965A based Ethernet adapters"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device fe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_fe_load="YES"
+.Ed
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.fe.0.at="isa"
+.Cd hint.fe.0.port="0x300"
+.Cd hint.fe.0.flags="0x0"
+.Sh DESCRIPTION
+The
+.Nm
+is a network device driver
+for Ethernet adapters based on Fujitsu MB86960A, MB86965A,
+or other compatible chips.
+.Pp
+The driver provides automatic I/O port address configuration and
+automatic IRQ configuration,
+when used with suitable adapter hardware.
+.Pp
+The driver works with program I/O data transfer technique.
+It gives a fair performance.
+Shared memory is never used, even if the adapter has one.
+.Pp
+It currently works with Fujitsu FMV-180 series for ISA,
+Allied-Telesis AT1700 series and RE2000 series for ISA,
+and Fujitsu MBH10302 PC card.
+.Ss Parameters
+In the
+.Pa /boot/device.hints
+file, two parameters,
+.Ar port
+and
+.Ar irq ,
+must be specified to reflect adapter hardware settings.
+Another parameter
+.Ar flags
+can be specified to provide additional configuration as an option.
+.Pp
+The
+.Ar port
+parameter specifies a base I/O port address of the adapter.
+It must match with the hardware setting of the adapter.
+The
+.Ar port
+may be left unspecified by removing
+.Dl hint.fe.0.port="..."
+from the file.
+In that case, the driver tries to detect the hardware setting
+of the I/O address automatically.
+This feature may not work with some adapter hardware.
+.Pp
+The
+.Ar irq
+parameter specifies an IRQ number used by the adapter.
+It must match the hardware setting of the adapter.
+.Ar Irq
+may be left unspecified by removing
+.Dl hint.fe.0.irq="..."
+from the file.
+in that case, the driver tries to detect
+the hardware setting of the IRQ automatically.
+This feature may not work on some adapters.
+.Pp
+The
+.Ar flags
+is a numeric value which consists of a combination of various device settings.
+The following flags are defined in the current version.
+To specify two or more settings for a device,
+use a numeric sum of each flag value.
+Flag bits not specified below are reserved and must be set to 0.
+Actually, each bit is either just ignored by the driver,
+or tested and used to control undocumented features of the driver.
+Consult the source program for undocumented features.
+.Bl -tag -width 8n
+.It Li 0x007F
+These flag bits are used
+to initialize DLCR6 register of MB86960A/MB86965A chip,
+when the
+.Li 0x0080
+bit of the
+.Ar flags
+is set.
+See below for more about DLCR6 override feature.
+The
+.Li 0x007F
+flag bits must be 0 unless the
+.Li 0x0080
+bit is set,
+to maintain the compatibility with future versions of the driver.
+.It Li 0x0080
+This flag overrides the default setting to the DLCR6 register
+of MB86960A/MB86965A chip by a user supplied value,
+which is taken from the lower 7 bits of the flag value.
+This is a troubleshooting flag and should not be used
+without understanding of the adapter hardware.
+Consult the Fujitsu manual for more information
+on DLCR6 settings.
+.El
+.Sh HARDWARE
+Controllers and cards supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Allied Telesis RE1000, RE1000Plus, ME1500 (110-pin)
+.It
+CONTEC C-NET(98)P2, C-NET (9N)E (110-pin), C-NET(9N)C (ExtCard)
+.It
+CONTEC C-NET(PC)C PCMCIA Ethernet
+.It
+Eagle Tech NE200T
+.It
+Eiger Labs EPX-10BT
+.It
+Fujitsu FMV-J182, FMV-J182A
+.It
+Fujitsu MB86960A, MB86965A
+.It
+Fujitsu MBH10303, MBH10302 Ethernet PCMCIA
+.It
+Fujitsu Towa LA501 Ethernet
+.It
+HITACHI HT-4840-11
+.It
+NextCom J Link NC5310
+.It
+RATOC REX-5588, REX-9822, REX-4886, and REX-R280
+.It
+RATOC REX-9880/9881/9882/9883
+.It
+TDK LAC-98012, LAC-98013, LAC-98025, LAC-9N011 (110-pin)
+.It
+TDK LAK-CD021, LAK-CD021A, LAK-CD021BX
+.It
+Ungermann-Bass Access/PC N98C+(PC85152, PC85142), Access/NOTE
+N98(PC86132) (110-pin)
+.El
+.Sh FEATURES SPECIFIC TO HARDWARE MODELS
+The
+.Nm
+driver has some features and limitations
+which depend on adapter hardware models.
+The following is a summary of these dependencies.
+.Ss Fujitsu FMV-180 series adapters
+Both automatic IRQ detection and automatic I/O port address detection
+is available with these adapters.
+.Pp
+Automatic I/O port address detection feature of
+.Nm
+works mostly fine for FMV-180 series.
+It works even if there are two or more FMV-180s in a system.
+However, some combination of other adapters may confuse the driver.
+It is recommended to explicitly specify
+.Ar port
+when you experience some difficulties with hardware probe.
+.Pp
+Automatic IRQ detection feature of
+.Nm
+works reliably for FMV-180 series.
+It is recommended to explicitly specify
+.Ar irq
+always for FMV-180.
+The hardware setting of IRQ is read
+from the configuration EEPROM on the adapter,
+even when the kernel config file specifies an IRQ value.
+The driver will generate a warning message,
+if the IRQ setting specified in
+.Pa /boot/device.hints
+does not match one stored in EEPROM.
+Then, it will use the value specified in the file.
+(This behavior has been changed from the previous releases.)
+.Ss Allied-Telesis AT1700 series and RE2000 series adapters
+Automatic I/O port address detection
+is available with Allied-Telesis AT1700 series and RE2000 series,
+while it is less reliable than FMV-180 series.
+Using the feature with Allied-Telesis adapters
+is not recommended.
+.Pp
+Automatic IRQ detection is also available with some limitation.
+The
+.Nm
+driver
+tries to get IRQ setting from the configuration EEPROM on the board,
+if
+.Ar irq
+is not specified in
+.Pa /boot/device.hints .
+Unfortunately,
+AT1700 series and RE2000 series seems to have two types of models;
+One type allows IRQ selection from 3/4/5/9,
+while the other from 10/11/12/15.
+Identification of the models are not well known.
+Hence, automatic IRQ detection with Allied-Telesis adapters
+may not be reliable.
+Specify an exact IRQ number if any troubles are encountered.
+.Pp
+Differences between AT1700 series and RE2000 series
+or minor models in those series are not recognized.
+.Ss Fujitsu MBH10302 PC card
+The
+.Nm
+driver supports Fujitsu MBH10302 and compatible PC cards.
+It requires the PC card (PCMCIA) support package.
+.Sh SEE ALSO
+.Xr netstat 1 ,
+.Xr ed 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 2.0.5 .
+.Sh AUTHORS, COPYRIGHT AND DISCLAIMER
+The
+.Nm
+driver was originally written and contributed by
+.An M. Sekiguchi Aq seki@sysrap.cs.fujitsu.co.jp ,
+following the
+.Nm ed
+driver written by
+.An David Greenman .
+PC card support in
+.Nm
+is written by
+.An Hidetoshi Kimura Aq h-kimura@tokyo.se.fujitsu.co.jp .
+This manual page was written by
+.An M. Sekiguchi .
+.Pp
+.Em "All Rights Reserved, Copyright (C) Fujitsu Limited 1995"
+.Pp
+This document and the associated software may be used, modified,
+copied, distributed, and sold, in both source and binary form provided
+that the above copyright, these terms and the following disclaimer are
+retained.
+The name of the author and/or the contributor may not be
+used to endorse or promote products derived from this document and the
+associated software without specific prior written permission.
+.Pp
+THIS DOCUMENT AND THE ASSOCIATED SOFTWARE IS PROVIDED BY THE AUTHOR
+AND THE CONTRIBUTOR
+.Dq 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 THE
+CONTRIBUTOR 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
+DOCUMENT AND THE ASSOCIATED SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+.Sh BUGS
+Following are major known bugs:
+.Pp
+Statistics on the number of collisions maintained by the
+.Nm
+driver is not accurate;
+the
+.Fl i
+option of
+.Xr netstat 1
+shows slightly less value than true number of collisions.
+.Pp
+More mbuf clusters are used than expected.
+The packet receive routine has an intended violation
+against the mbuf cluster allocation policy.
+The unnecessarily allocated clusters are freed within short lifetime,
+and it will not affect long term kernel memory usage.
+.Pp
+Although XNS and IPX support is included in the driver,
+it has never been tested and it is expected to have a lot of bugs.
diff --git a/share/man/man4/man4.i386/glxsb.4 b/share/man/man4/man4.i386/glxsb.4
new file mode 100644
index 0000000..042eb5e
--- /dev/null
+++ b/share/man/man4/man4.i386/glxsb.4
@@ -0,0 +1,97 @@
+.\" $OpenBSD: glxsb.4,v 1.5 2007/05/31 19:19:54 jmc Exp $
+.\"
+.\"Copyright (c) 2006 Tom Cosgrove <tom@openbsd.org>
+.\"
+.\"Permission to use, copy, modify, and distribute this software for any
+.\"purpose with or without fee is hereby granted, provided that the above
+.\"copyright notice and this permission notice appear in all copies.
+.\"
+.\"THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\"WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\"MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\"ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\"WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\"ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\"OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 8, 2008
+.Dt GLXSB 4 i386
+.Os
+.Sh NAME
+.Nm glxsb
+.Nd Geode LX Security Block crypto accelerator
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device crypto"
+.Cd "device glxsb"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+glxsb_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports the security block of the Geode LX series processors.
+The Geode LX is a member of the AMD Geode family
+of integrated x86 system chips.
+.Pp
+Driven by periodic checks for available data from the generator,
+.Nm
+supplies entropy to the
+.Xr random 4
+driver for common usage.
+.Pp
+.Nm
+also supports acceleration of AES-128-CBC operations for
+.Xr crypto 4 .
+It also registers itself to accelerate other HMAC algorithms, although
+there is no hardware acceleration for those algorithms.
+This is only needed so
+.Nm
+can work with
+.Xr ipsec 4 .
+.Sh CAVEAT
+The
+.Xr crypto 9
+framework will fail to open the crypto session on the device if the AES
+key's length is != 128 bits.
+This prevents the use of the
+.Nm
+device driver with AES keys of length != 128 bits.
+.Sh SEE ALSO
+.Xr crypto 4 ,
+.Xr intro 4 ,
+.Xr pci 4 ,
+.Xr ipsec 4 ,
+.Xr random 4 ,
+.Xr crypto 9
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Ox 4.1 .
+The
+.Nm
+device driver was imported into
+.Fx 8.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written for
+.Ox
+by
+.An Tom Cosgrove .
+It was ported to
+.Fx
+by
+.An Patrick Lamaiziere Aq patfbsd@davenulle.org
diff --git a/share/man/man4/man4.i386/ie.4 b/share/man/man4/man4.i386/ie.4
new file mode 100644
index 0000000..17d24d2
--- /dev/null
+++ b/share/man/man4/man4.i386/ie.4
@@ -0,0 +1,143 @@
+.\"
+.\" Copyright (c) 1994, Wilko Bulte
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt IE 4 i386
+.Os
+.Sh NAME
+.Nm ie
+.Nd "Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ie"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ie_load="YES"
+.Ed
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.ie.0.at="isa"
+.Cd hint.ie.0.port="0x300"
+.Cd hint.ie.0.irq="5"
+.Cd hint.ie.0.maddr="0xd0000"
+.Sh HARDWARE
+The
+.Nm
+driver provides supports the following 8 and 16bit ISA Ethernet cards
+that are based on the Intel i82586 chip:
+.Pp
+.Bl -bullet -compact
+.It
+3COM 3C507
+.It
+AT&T EN100
+.It
+AT&T Starlan 10
+.It
+AT&T Starlan Fiber
+.It
+Intel EtherExpress 16
+.It
+RACAL Interlan NI5210
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ie%d: unknown board type code %d"
+An i82586 chip was found, but the driver was unable to determine the actual
+board type during the probe.
+.It "ie%d: kernel configured maddr %x doesn't match board configured maddr %x"
+The device probe detected a different maddr than the one specified in the
+kernel configuration file.
+.It "ie%d: can't find shared memory"
+The device probe could not access the shared memory to determine its size.
+.It "ie%d: kernel configured msize %d doesn't match board configured msize %d"
+The device probe found a different size for the shared memory than the one
+specified in the kernel configuration file.
+.It "ie%d: kernel configured irq %d doesn't match board configured irq %d"
+The device probe detected that the board is configured for a different
+interrupt than the one specified in the kernel configuration file.
+.It "ie%d: reset"
+The Intel i82586 had to be reset by the driver.
+.It "ie%d: transceiver problem"
+The driver has detected a problem with the Ethernet transceiver.
+This is
+usually due to a loose or broken transceiver cable when using an external
+transceiver.
+When you experience this problem with an on-card transceiver
+your card may be incorrectly jumpered for to use an external transceiver.
+Worst case your on-board transceiver may be broken.
+.It "ie%d: TDR detected an open %d clocks away"
+The driver detected an open circuit in the Ethernet cable.
+Check your
+coax cable and terminator resistors.
+.It "ie%d: TDR detected a short %d clocks away"
+The driver detected a short circuit in the Ethernet cable.
+Check your
+coax cable and terminator resistors.
+.It "ie%d: TDR returned unknown status %x"
+The driver got an unknown status from the card during the Ethernet cable
+test.
+.It "ie%d: multicast address setup command failed"
+The card could not be put into multicast mode.
+.It "ie%d: configure command failed"
+The card refused to respond correctly during configuration.
+.It "ie%d: individual address setup command failed"
+The programming of the Ethernet (MAC) address failed.
+.El
+.Sh CAVEATS
+The Racal Interlan NI5210 comes in variants with 8 and 16 kbytes of
+shared memory.
+It is strongly advisable to use the 16 kbyte variant.
+You can upgrade your 8 kbyte card to 16 kbyte by adding an additional
+RAM chip.
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An Garrett A. Wollman ,
+based on code by
+.An William F. Jolitz
+and Lawrence Berkeley Laboratories.
+.Tn 3C507
+support was written by
+.An Charles M. Hannum .
+This manual page was written by
+.An Wilko C. Bulte .
diff --git a/share/man/man4/man4.i386/longrun.4 b/share/man/man4/man4.i386/longrun.4
new file mode 100644
index 0000000..b9bfc66
--- /dev/null
+++ b/share/man/man4/man4.i386/longrun.4
@@ -0,0 +1,67 @@
+.\" Copyright (c) 2001 Tamotsu HATTORI <athlete@kta.att.ne.jp>
+.\" Copyright (c) 2001 Mitsuru IWASAKI <iwasaki@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$
+.Dd June 30, 2001
+.Dt LONGRUN 4 i386
+.Os
+.Sh NAME
+.Nm longrun
+.Nd Transmeta(TM) Crusoe(TM) LongRun(TM) support
+.Sh SYNOPSIS
+LongRun support is a collection of power saving modes for the
+Transmeta Crusoe chips, similar in scope to Intel's SpeedStep.
+The following
+.Xr sysctl 8
+MIBs control the different CPU modes:
+.Bl -column ".Va hw.crusoe.percentage" ".Vt integer" "Changeable"
+.It Sy "Name Type Changeable Description"
+.It Va hw.crusoe.longrun Ta Vt integer Ta yes Ta "LongRun mode:"
+.It Ta Ta Ta "0: minimum frequency mode"
+.It Ta Ta Ta "1: power-saving mode"
+.It Ta Ta Ta "2: performance mode"
+.It Ta Ta Ta "3: maximum frequency mode"
+.It Va hw.crusoe.frequency Ta Vt integer Ta no Ta "Current frequency (MHz)."
+.It Va hw.crusoe.voltage Ta Vt integer Ta no Ta "Current voltage (mV)."
+.It Va hw.crusoe.percentage Ta Vt integer Ta no Ta "Processing performance (%)."
+.El
+.Sh EXAMPLES
+Print the current status:
+.Pp
+.Dl "% sysctl hw.crusoe"
+.Pp
+To set LongRun mode to performance oriented variable frequency mode
+(less power savings):
+.Pp
+.Dl "# sysctl hw.crusoe.longrun=2"
+.Sh HISTORY
+The Transmeta(TM) Crusoe(TM) LongRun(TM) support first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+.An -nosplit
+LongRun support and this manual page were written by
+.An Tamotsu HATTORI Aq athlete@kta.att.ne.jp
+and
+.An Mitsuru IWASAKI Aq iwasaki@FreeBSD.org .
diff --git a/share/man/man4/man4.i386/mcd.4 b/share/man/man4/man4.i386/mcd.4
new file mode 100644
index 0000000..a4a93dd
--- /dev/null
+++ b/share/man/man4/man4.i386/mcd.4
@@ -0,0 +1,169 @@
+.\"
+.\" Copyright (c) 1994 Keith E. Walker
+.\" 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
+.\"
+.\" 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$
+.\"
+.Dd December 8, 1994
+.Dt MCD 4 i386
+.Os
+.Sh NAME
+.Nm mcd
+.Nd Mitsumi CD-ROM driver
+.Sh SYNOPSIS
+.Cd "device mcd"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.mcd.0.at="isa"
+.Cd hint.mcd.0.port="0x300"
+.Cd hint.mcd.0.irq="10"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a data and audio interface to the Mitsumi-brand CD-ROM
+player.
+The CD-ROM player must be interfaced to the ISA bus through
+one of the Mitsumi proprietary controller boards.
+The controller
+boards supported are the LU002S, LU005S, the FX001 and the quite
+common FX001D.
+.Pp
+The
+.Nm
+driver responds to disk-specific
+.Fn ioctl
+commands, namely the
+.Dv DIOCGDINFO ,
+.Dv DIOCGPART ,
+.Dv DIOCWDINFO ,
+and
+.Dv DIOCSDINFO ,
+commands.
+Other disk-specific
+.Fn ioctl
+commands will return an error.
+.Pp
+The
+.Nm
+driver also responds to special CD-ROM
+.Fn ioctl
+commands.
+These commands
+control the CD-ROM player's audio features.
+The commands are:
+.Pp
+.Bl -tag -width CDIOCREADSUBCHANNEL -compact -offset indent
+.It CDIOCREADSUBCHANNEL
+get sub-channel information on current status of disc playing
+.It CDIOCREADTOCHEADER
+get table of contents header
+.It CDIOCREADTOCENTRYS
+gets all of the table of contents
+.It CDIOCPLAYTRACKS
+begins audio playing at location specified
+.It CDIOCPLAYBLOCKS
+fails with error
+.Er EINVAL
+.It CDIOCPLAYMSF
+begins audio playing at location specified
+.It CDIOCRESUME
+resumes playing a previously paused disc
+.It CDIOCPAUSE
+pauses a playing disc
+.It CDIOCSTART
+begins playing a disc
+.It CDIOCSTOP
+stops a previously playing disc
+.It CDIOCEJECT
+opens the disc tray (there is no support for a corresponding un-eject
+command).
+.It CDIOCRESET
+stops any play and resets the Mitsumi controller board
+.It CDIOCSETDEBUG
+cause the kernel to print debug messages to the console about the
+.Nm
+driver
+.It CDIOCCLRDEBUG
+cause the kernel to quit printing debug messages about the
+.Nm
+driver
+.El
+.Pp
+The
+.Fn ioctl
+commands defined above are the only ones that the
+.Nm
+driver supports.
+There are other CD-ROM related
+.Fn ioctl
+commands (such as
+.Dv CDIOCSETVOL
+and
+.Dv CDIOCSETSTERIO )
+which are available
+and may be supported by future versions of the driver.
+.Sh FILES
+.Bl -tag -width /dev/(r)mcd0a -compact
+.It Pa /dev/(r)mcd0a
+accesses
+.Bx
+partition on the disc.
+Normally, there is only
+one file system on a CD-ROM disc.
+.It Pa /dev/(r)mcd0c
+accesses raw device.
+.El
+.Sh NOTES
+The character-mode devices for the
+.Nm
+driver should only be used for accessing the audio features of the
+CD-ROM player as the performance on data is abysmal.
+.Pp
+The current version of the driver uses neither the DMA or IRQ
+features of the interface board, although it has an interrupt handler
+for any IRQ requests that are generated.
+Until the DMA features are
+supported, the only interrupts that the board generates are those that
+are not supported by the driver anyway.
+.Sh SEE ALSO
+.In sys/cdio.h
+.Sh HISTORY
+An
+.Nm
+driver appeared in
+.Fx 1.0 .
+.Sh AUTHORS
+.An -nosplit
+The driver was written by
+.An Holger Veit
+(data part) and
+.An Brian Moore
+(audio part).
+Changes were provided by
+.An Gary Clark II ,
+.An Andrew A. Chernov ,
+and
+.An Jordan K. Hubbard .
diff --git a/share/man/man4/man4.i386/mse.4 b/share/man/man4/man4.i386/mse.4
new file mode 100644
index 0000000..7f83dcc
--- /dev/null
+++ b/share/man/man4/man4.i386/mse.4
@@ -0,0 +1,386 @@
+.\" Copyright 1992 by the University of Guelph
+.\"
+.\" Permission to use, copy and modify this
+.\" software and its documentation for any purpose and without
+.\" fee is hereby granted, provided that the above copyright
+.\" notice appear in all copies and that both that copyright
+.\" notice and this permission notice appear in supporting
+.\" documentation.
+.\" University of Guelph makes no representations about the suitability of
+.\" this software for any purpose. It is provided "as is"
+.\" without express or implied warranty.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 3, 1997
+.Dt MSE 4 i386
+.Os
+.Sh NAME
+.Nm mse
+.Nd bus and InPort mice driver
+.Sh SYNOPSIS
+.\" .Cd "options MSE_XXX=N"
+.Cd "device mse"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.mse.0.at="isa"
+.Cd hint.mse.0.port="0x23c"
+.Cd hint.mse.0.irq="5"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the bus mouse and the InPort mouse, which
+are often collectively called ``bus'' mice, as these mice are sold with
+an interface card which needs to be installed in an expansion bus slot.
+The interface circuit may come on an integrated I/O card or as an option
+on video cards.
+.Pp
+The bus and InPort mice have two or three buttons,
+and a D-sub 9-pin male connector or a round DIN 9-pin
+male connector.
+.Pp
+The primary port address of the bus and InPort mouse interface cards
+is usually 0x23c.
+Some cards may also be set to use the secondary port
+address at 0x238.
+The interface cards require a single IRQ, which may be
+2, 3, 4 or 5.
+Some cards may offer additional IRQs.
+The port number and the IRQ number are configured by jumpers on the cards
+or by software provided with the card.
+.Pp
+Frequency, or report rate, at which the device sends movement
+and button state reports to the host system, may also be configurable on
+some interface cards.
+It may be 15, 30, 60 or 120Hz.
+.Pp
+The difference between the two types of the mice is not in mouse devices
+(in fact they are exactly the same).
+But in the circuit on the interface
+cards.
+This means that the device from a bus mouse package can be
+connected to the interface card from an InPort mouse package, or vice
+versa, provided that their connectors match.
+.Ss Operation Levels
+The
+.Nm
+driver has two levels of operation.
+The current operation level can be set via an ioctl call.
+.Pp
+At the level zero the basic support is provided; the device driver will report
+horizontal and vertical movement of the attached device
+and state of up to three buttons in the format described below.
+It is a subset of the MouseSystems protocol.
+.Pp
+.Bl -tag -width Byte_1 -compact
+.It Byte 1
+.Bl -tag -width bit_7 -compact
+.It bit 7
+Always one.
+.It bit 6..3
+Always zero.
+.It bit 2
+Left button status; cleared if pressed, otherwise set.
+.It bit 1
+Middle button status; cleared if pressed, otherwise set.
+Always one,
+if the device does not have the middle button.
+.It bit 0
+Right button status; cleared if pressed, otherwise set.
+.El
+.It Byte 2
+Horizontal movement count in two's compliment; -128 through 127.
+.It Byte 3
+Vertical movement count in two's compliment; -128 through 127.
+.It Byte 4
+Always zero.
+.It Byte 5
+Always zero.
+.El
+.Pp
+This is the default level of operation and the driver is initially
+at this level when opened by the user program.
+.Pp
+At the operation level one (extended level), a data packet is encoded
+in the standard format
+.Dv MOUSE_PROTO_SYSMOUSE
+as defined in
+.Xr mouse 4 .
+.Ss Acceleration
+The
+.Nm
+driver can somewhat `accelerate' the movement of the pointing device.
+The faster you move the device, the further the pointer
+travels on the screen.
+The driver has an internal variable which governs the effect of
+the acceleration.
+Its value can be modified via the driver flag
+or via an ioctl call.
+.Ss Device Number
+The minor device number of the
+.Nm
+is made up of:
+.Bd -literal -offset indent
+minor = (`unit' << 1) | `non-blocking'
+.Ed
+.Pp
+where `unit' is the device number (usually 0) and the `non-blocking' bit
+is set to indicate ``do not block waiting for mouse input,
+return immediately''.
+The `non-blocking' bit should be set for \fIXFree86\fP,
+therefore the minor device number usually used for \fIXFree86\fP is 1.
+See
+.Sx FILES
+for device node names.
+.Sh DRIVER CONFIGURATION
+.\" .Ss Kernel Configuration Options
+.Ss Driver Flags
+The
+.Nm
+driver accepts the following driver flag.
+Set it in the
+kernel configuration file
+(see
+.Xr config 8 )
+or in the User Configuration Menu at
+the boot time
+(see
+.Xr boot 8 ) .
+.Pp
+.Bl -tag -width MOUSE
+.It bit 4..7 ACCELERATION
+This flag controls the amount of acceleration effect.
+The smaller the value of this flag is, more sensitive the movement becomes.
+The minimum value allowed, thus the value for the most sensitive setting,
+is one.
+Setting this flag to zero will completely disables the
+acceleration effect.
+.El
+.Sh IOCTLS
+There are a few
+.Xr ioctl 2
+commands for mouse drivers.
+These commands and related structures and constants are defined in
+.In sys/mouse.h .
+General description of the commands is given in
+.Xr mouse 4 .
+This section explains the features specific to the
+.Nm
+driver.
+.Pp
+.Bl -tag -width MOUSE -compact
+.It Dv MOUSE_GETLEVEL Ar int *level
+.It Dv MOUSE_SETLEVEL Ar int *level
+These commands manipulate the operation level of the
+.Nm
+driver.
+.Pp
+.It Dv MOUSE_GETHWINFO Ar mousehw_t *hw
+Returns the hardware information of the attached device in the following
+structure.
+Only the
+.Dv iftype
+field is guaranteed to be filled with the correct value by the current
+version of the
+.Nm
+driver.
+.Bd -literal
+typedef struct mousehw {
+ int buttons; /* number of buttons */
+ int iftype; /* I/F type */
+ int type; /* mouse/track ball/pad... */
+ int model; /* I/F dependent model ID */
+ int hwid; /* I/F dependent hardware ID */
+} mousehw_t;
+.Ed
+.Pp
+The
+.Dv buttons
+field holds the number of buttons on the device.
+.Pp
+The
+.Dv iftype
+is either
+.Dv MOUSE_IF_BUS
+or
+.Dv MOUSE_IF_INPORT .
+.Pp
+The
+.Dv type
+may be
+.Dv MOUSE_MOUSE ,
+.Dv MOUSE_TRACKBALL ,
+.Dv MOUSE_STICK ,
+.Dv MOUSE_PAD ,
+or
+.Dv MOUSE_UNKNOWN .
+.Pp
+The
+.Dv model
+is always
+.Dv MOUSE_MODEL_GENERIC
+at the operation level 0.
+It may be
+.Dv MOUSE_MODEL_GENERIC
+or one of
+.Dv MOUSE_MODEL_XXX
+constants at higher operation levels.
+.Pp
+The
+.Dv hwid
+is always 0.
+.Pp
+.It Dv MOUSE_GETMODE Ar mousemode_t *mode
+The command gets the current operation parameters of the mouse
+driver.
+.Bd -literal
+typedef struct mousemode {
+ int protocol; /* MOUSE_PROTO_XXX */
+ int rate; /* report rate (per sec), -1 if unknown */
+ int resolution; /* MOUSE_RES_XXX, -1 if unknown */
+ int accelfactor; /* acceleration factor */
+ int level; /* driver operation level */
+ int packetsize; /* the length of the data packet */
+ unsigned char syncmask[2]; /* sync. bits */
+} mousemode_t;
+.Ed
+.Pp
+The
+.Dv protocol
+is either
+.Dv MOUSE_PROTO_BUS
+or
+.Dv MOUSE_PROTO_INPORT
+at the operation level zero.
+.Dv MOUSE_PROTO_SYSMOUSE
+at the operation level one.
+.Pp
+The
+.Dv rate
+is the status report rate (reports/sec) at which the device will send
+movement report to the host computer.
+As there is no standard to detect the current setting,
+this field is always set to -1.
+.Pp
+The
+.Dv resolution
+is always set to -1.
+.Pp
+The
+.Dv accelfactor
+field holds a value to control acceleration feature
+(see
+.Sx Acceleration ) .
+It is zero or greater.
+If it is zero, acceleration is disabled.
+.Pp
+The
+.Dv packetsize
+field specifies the length of the data packet.
+It depends on the
+operation level.
+.Pp
+.Bl -tag -width level_0__ -compact
+.It Em level 0
+5 bytes
+.It Em level 1
+8 bytes
+.El
+.Pp
+The array
+.Dv syncmask
+holds a bit mask and pattern to detect the first byte of the
+data packet.
+.Dv syncmask[0]
+is the bit mask to be ANDed with a byte.
+If the result is equal to
+.Dv syncmask[1] ,
+the byte is likely to be the first byte of the data packet.
+Note that this detection method is not 100% reliable,
+thus, should be taken only as an advisory measure.
+.Pp
+Only
+.Dv level
+and
+.Dv accelfactor
+are modifiable by the
+.Dv MOUSE_SETMODE
+command.
+Changing the other field does not cause error, but has no effect.
+.Pp
+.It Dv MOUSE_SETMODE Ar mousemode_t *mode
+The command changes the current operation parameters of the mouse driver
+as specified in
+.Ar mode .
+Only
+.Dv level
+and
+.Dv accelfactor
+may be modifiable.
+Setting values in the other field does not generate
+error and has no effect.
+.\" .Pp
+.\" .It Dv MOUSE_GETVARS Ar mousevar_t *vars
+.\" .It Dv MOUSE_SETVARS Ar mousevar_t *vars
+.\" These commands are not supported by the
+.\" .Nm
+.\" driver.
+.Pp
+.It Dv MOUSE_READDATA Ar mousedata_t *data
+.It Dv MOUSE_READSTATE Ar mousedata_t *state
+These commands are not supported by the
+.Nm
+driver.
+.Pp
+.It Dv MOUSE_GETSTATUS Ar mousestatus_t *status
+The command returns the current state of buttons and
+movement counts as described in
+.Xr mouse 4 .
+.El
+.Sh FILES
+.Bl -tag -width /dev/nmse0 -compact
+.It Pa /dev/mse0
+`non-blocking' device node in the system without
+.Em devfs ,
+`blocking' under
+.Em devfs .
+.It Pa /dev/nmse0
+`non-blocking' device node under
+.Em devfs .
+.El
+.Sh EXAMPLES
+.Dl "device mse"
+.Pp
+In
+.Pa /boot/device.hints :
+.Dl hint.mse.0.at="isa"
+.Dl hint.mse.0.port="0x23c"
+.Dl hint.mse.0.irq="5"
+.Pp
+Add the
+.Nm
+driver at the primary port address with the IRQ 5.
+.Pp
+.Dl "device mse"
+.Pp
+.Dl hint.mse.1.at="isa"
+.Dl hint.mse.1.port="0x238"
+.Dl hint.mse.1.irq="4"
+.Dl hint.mse.1.flags="0x30"
+.Pp
+Define the
+.Nm
+driver at the secondary port address with the IRQ 4 and the acceleration
+factor of 3.
+.Sh CAVEATS
+Some bus mouse interface cards generate interrupts at the fixed report rate
+when enabled, whether or not the mouse state is changing.
+The others generate interrupts only when the state is changing.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr mouse 4 ,
+.Xr psm 4 ,
+.Xr sysmouse 4 ,
+.Xr moused 8
+.\".Sh HISTORY
diff --git a/share/man/man4/man4.i386/npx.4 b/share/man/man4/man4.i386/npx.4
new file mode 100644
index 0000000..7eea372
--- /dev/null
+++ b/share/man/man4/man4.i386/npx.4
@@ -0,0 +1,111 @@
+.\"
+.\" 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 by Christopher G. Demetriou.
+.\" 3. 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.
+.\"
+.\" $Id: npx.4,v 1.1 1993/08/06 10:58:03 cgd Exp $
+.\" $FreeBSD$
+.\"
+.Dd August 28, 1993
+.Dt NPX 4 i386
+.Os
+.Sh NAME
+.Nm npx
+.Nd Numeric Processing Extension coprocessor
+.Sh SYNOPSIS
+.Cd "device npx"
+.Cd hint.npx.0.at="nexus"
+.Cd hint.npx.0.port="0x0F0"
+.Cd hint.npx.0.flags="0x0"
+.Cd hint.npx.0.irq="13"
+.Sh DESCRIPTION
+The
+.Nm
+driver enables the use of the system's Numeric Processing Extension
+coprocessor.
+Numeric processing extensions are present in
+systems with
+.Tn 486DX
+CPUs and in systems with
+.Tn 387
+or
+.Tn 487SX
+coprocessors.
+The
+.Nm
+driver is required for proper system functioning.
+If there is no NPX in the system, the system will not boot.
+.Pp
+The flags for
+.Pa npx0
+are:
+.Pp
+.Bl -tag -width indent -compact
+.It 0x01
+do not use the NPX registers to optimize bcopy.
+.It 0x02
+do not use the NPX registers to optimize bzero.
+.It 0x04
+do not use the NPX registers to optimize copyin or copyout.
+.El
+.Pp
+The NPX registers are normally used
+to optimize copying and zeroing
+when all of the following conditions are satisfied:
+.Pp
+.Bl -enum -compact
+.It
+.Cd "cpu I586_CPU"
+is an option
+.It
+the CPU is an i586 (perhaps not a Pentium)
+.It
+the probe for
+.Pa npx0
+succeeds
+.It
+INT 16 exception handling works.
+.El
+.Pp
+Then copying and zeroing
+using the NPX registers
+is normally 30-100% faster.
+.Pp
+The flags can be used
+to control cases
+where it does not work or is slower.
+Setting them at boot time
+using userconfig works correctly
+(the optimizations are not used
+until later in the bootstrap
+when
+.Pa npx0
+is attached).
+.Sh BUGS
+There are lots of them, especially on old cheap motherboards.
+In particular, some motherboards do not have the interrupt lines from
+the NPX to the CPU wired properly.
diff --git a/share/man/man4/man4.i386/padlock.4 b/share/man/man4/man4.i386/padlock.4
new file mode 100644
index 0000000..e93d3d9
--- /dev/null
+++ b/share/man/man4/man4.i386/padlock.4
@@ -0,0 +1,97 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" 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$
+.\"
+.Dd August 1, 2007
+.Dt PADLOCK 4 i386
+.Os
+.Sh NAME
+.Nm padlock
+.Nd "driver for the cryptographic functions and RNG in VIA C3, C7 and Eden processors"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device crypto"
+.Cd "device padlock"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+padlock_load="YES"
+.Ed
+.Sh DESCRIPTION
+The C3 and Eden processor series from VIA include hardware acceleration for
+AES.
+The C7 series includes hardware acceleration for AES, SHA1, SHA256 and RSA.
+All of the above processor series include a hardware random number generator.
+.Pp
+The
+.Nm
+driver registers itself to accelerate AES operations and, if available, HMAC/SHA1
+and HMAC/SHA256 for
+.Xr crypto 4 .
+It also registers itself to accelerate other HMAC algorithms, although
+there is no hardware acceleration for those algorithms.
+This is only needed so
+.Nm
+can work with
+.Xr ipsec 4 .
+.Pp
+The hardware random number generator supplies data for the kernel
+.Xr random 4
+subsystem.
+.Sh SEE ALSO
+.Xr crypt 3 ,
+.Xr crypto 4 ,
+.Xr intro 4 ,
+.Xr ipsec 4 ,
+.Xr random 4 ,
+.Xr crypto 9
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox .
+The first
+.Fx
+release to include it was
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver with AES encryption support was written by
+.An Jason Wright Aq jason@OpenBSD.org .
+It was ported to
+.Fx
+and then extended to support SHA1 and SHA256
+by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
+This manual page was written by
+.An Christian Brueffer Aq brueffer@FreeBSD.org .
diff --git a/share/man/man4/man4.i386/pae.4 b/share/man/man4/man4.i386/pae.4
new file mode 100644
index 0000000..718e2b2
--- /dev/null
+++ b/share/man/man4/man4.i386/pae.4
@@ -0,0 +1,127 @@
+.\"
+.\" Copyright (c) 2003 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Jake Burkholder,
+.\" Safeport Network Services, and Network Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd April 8, 2003
+.Dt PAE 4 i386
+.Os
+.Sh NAME
+.Nm PAE
+.Nd Physical Address Extensions
+.Sh SYNOPSIS
+.Cd "options PAE"
+.Sh DESCRIPTION
+The
+.Dv PAE
+option provides support for the physical address extensions capability
+of the
+.Tn Intel
+.Tn Pentium Pro
+and above CPUs,
+and allows for up to 64 gigabytes of memory to be used in systems capable
+of supporting it.
+With the
+.Dv PAE
+option, memory above 4 gigabytes is simply added to the general page pool.
+The system makes no distinction between memory above or below 4 gigabytes,
+and no specific facility is provided for a process or the kernel to access
+more memory than they would otherwise be able to access, through a sliding
+window or otherwise.
+.Sh SEE ALSO
+.Xr smp 4 ,
+.Xr tuning 7 ,
+.Xr config 8 ,
+.Xr bus_dma 9
+.Sh HISTORY
+The
+.Dv PAE
+option first appeared in
+.Fx 4.9
+and
+.Fx 5.1 .
+.Sh AUTHORS
+.An Jake Burkholder Aq jake@FreeBSD.org
+.Sh BUGS
+Since KLD modules are not compiled with the same options headers that
+the kernel is compiled with,
+they must not be loaded into a kernel compiled with the
+.Dv PAE
+option.
+.Pp
+Many devices or their device drivers are not capable of direct memory access
+to physical addresses above 4 gigabytes.
+In order to make use of direct memory access IO in a system with more than
+4 gigabytes of memory when the
+.Dv PAE
+option is used,
+these drivers must use a facility for remapping or substituting physical
+memory which is not accessible to the device.
+One such facility is provided by the
+.Nm busdma
+interface.
+Device drivers which do not account for such devices will not work reliably
+in a system with more than 4 gigabytes of memory when the
+.Dv PAE
+option is used,
+and may cause data corruption.
+The
+.Pa PAE
+kernel configuration file includes the
+.Dv PAE
+option, and explicitly excludes all device drivers which are known to not work
+or have not been tested in a system with the
+.Dv PAE
+option and more than 4 gigabytes of memory.
+.Pp
+Many parameters which determine how memory is used in the kernel are based on
+the amount of physical memory.
+The formulas used to determine the values of these parameters for specific
+memory configurations may not take into account the fact there may be more
+than 4 gigabytes of memory, and may not scale well to these memory
+configurations.
+In particular,
+it may be necessary to increase the amount of virtual address space available
+to the kernel,
+or to reduce the amount of a specific resource that is heavily used,
+in order to avoid running out of virtual address space.
+The
+.Dv KVA_PAGES
+option may be used to increase the kernel virtual address space,
+and the
+.Va kern.maxvnodes
+.Xr sysctl 8
+may be used to decrease the number of vnodes allowed,
+an example of a resource that the kernel is likely to overallocate in
+large memory configurations.
+For optimal performance and stability it may be necessary to consult the
+.Xr tuning 7
+manual page, and make adjustments to the parameters documented there.
diff --git a/share/man/man4/man4.i386/pbio.4 b/share/man/man4/man4.i386/pbio.4
new file mode 100644
index 0000000..f4fbf3b
--- /dev/null
+++ b/share/man/man4/man4.i386/pbio.4
@@ -0,0 +1,187 @@
+.\" Copyright (c) 2000-2002
+.\" Diomidis D. Spinellis, Athens, Greece
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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 Diomidis D. Spinellis ``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 Diomidis D. Spinellis 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$
+.\"
+.Dd January 14, 2005
+.Dt PBIO 4 i386
+.Os
+.Sh NAME
+.Nm pbio
+.Nd 8255 parallel peripheral interface basic
+.Tn I/O
+driver
+.Sh SYNOPSIS
+.Cd "device pbio"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.pbio.0.at="isa"
+.Cd hint.pbio.0.port="0x360"
+.Pp
+.In dev/pbio/pbioio.h
+.Sh DESCRIPTION
+The
+.Nm
+driver supports direct access to the Intel 8255A programmable
+peripheral interface (PPI) chip running in mode 0 (simple
+.Tn I/O ) .
+Such an interface provides 24 digital
+.Tn I/O
+lines.
+The driver is designed for performing
+.Tn I/O
+under program control using
+peripherals such as the
+.Tn Advantech
+.Tn PCL-724
+card, which emulates the Intel 8255A PPI in mode 0.
+Other 8255A-based peripherals such as the
+.Tn BMC
+Messsysteme
+.Tn PIO24II
+card have also been reported to work.
+.Pp
+The PPI provides two 8-bit ports (port A and port B) and
+two 4-bit ports (port C upper, port C lower).
+Each port can be individually programmed for input and
+(latched) output,
+and appears at a different offset of the device's base
+.Tn I/O
+address.
+.Pp
+A separate register allows the configuration of ports for input
+or output.
+The device is so simple, that reliably probing for it when
+input data arrives at its terminals is impossible;
+therefore the kernel configuration has to specify the
+device's base address.
+The device driver provides four character devices that
+correspond to the peripheral's
+.Tn I/O
+ports.
+Opening a device for read or write automatically configures
+the corresponding hardware port for input or output.
+At boot time all ports are set configured for input to avoid damaging
+external circuitry.
+.Pp
+A set of
+.Xr ioctl 2
+requests allow polled input and paced output to be
+efficiently performed at the driver level without expensive
+user/kernel context switching.
+The driver can perform
+.Tn I/O
+in three different ways:
+.Bl -tag -width ".No Differential"
+.It Basic
+The read or write operation returns immediately after reading
+or writing the data to the port at bus speed.
+.It Paced
+Data is transferred from or to the port at intervals specified
+by a separate
+.Xr ioctl 2
+call.
+.It Differential
+(Input only.)
+Only port values that differ from the previous port value are returned.
+.El
+.Pp
+The pacing interval is specified in
+.Em Hz
+unit increments.
+Setting a pace of
+.Ar n
+seconds
+will result in no more than one value being read or written every
+.Ar n
+seconds.
+Single byte read/write operations will take at least
+.Ar n
+seconds to complete.
+.Pp
+The following
+.Xr ioctl 2
+calls are supported:
+.Bl -tag -width ".Dv PBIO_SETIPACE"
+.It Dv PBIO_SETDIFF
+accepts a pointer to an integer as the third argument,
+and sets the driver for differential input if the integer is non-zero.
+The input pace speed determines the periodic interval the driver will use to
+examine the port for a changed value.
+.It Dv PBIO_GETDIFF
+accepts a pointer to an integer as the third argument,
+and sets the integer to the last set value for differential input.
+.It Dv PBIO_SETIPACE
+accepts a pointer to an integer as the third argument,
+and sets the driver's input pacing speed to the value of that integer.
+.It Dv PBIO_GETIPACE
+accepts a pointer to an integer as the third argument,
+and sets the integer to the last set value for the input pace.
+.It Dv PBIO_SETOPACE
+accepts a pointer to an integer as the third argument,
+and sets the driver's output pacing speed to the value of that integer.
+.It Dv PBIO_GETOPACE
+accepts a pointer to an integer as the third argument,
+and sets the integer to the last set value for the output pace.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/pbio0ch" -compact
+.It Pa /dev/pbio0a
+Port A (8 bit
+.Tn I/O ) .
+.It Pa /dev/pbio0b
+Port B (8 bit
+.Tn I/O ) .
+.It Pa /dev/pbio0ch
+Port C upper (4 bit
+.Tn I/O ) .
+.It Pa /dev/pbio0cl
+Port C lower (4 bit
+.Tn I/O ) .
+.El
+.Sh SEE ALSO
+.Rs
+.%A "Diomidis Spinellis"
+.%T "The information furnace: Consolidated home control"
+.%D "2003"
+.%J "Personal and Ubiquitous Computing"
+.%N 1
+.%V 7
+.%P "53-69"
+.Re
+.Sh HISTORY
+The
+.Nm
+device was first used under
+.Fx 4.1 .
+.Sh AUTHORS
+.An "Diomidis D. Spinellis" Aq dds@aueb.gr
+.Sh BUGS
+One of the
+.Tn PCL-724
+card's inputs can optionally be wired to generate an interrupt.
+This feature is not supported.
diff --git a/share/man/man4/man4.i386/pcf.4 b/share/man/man4/man4.i386/pcf.4
new file mode 100644
index 0000000..f5e9088
--- /dev/null
+++ b/share/man/man4/man4.i386/pcf.4
@@ -0,0 +1,72 @@
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" 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$
+.\"
+.Dd August 6, 1998
+.Dt PCF 4 i386
+.Os
+.Sh NAME
+.Nm pcf
+.Nd Philips I2C bus controller
+.Sh SYNOPSIS
+.Cd "device pcf"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.pcf.0.at="isa"
+.Cd hint.pcf.0.port="0x320"
+.Cd hint.pcf.0.irq="5"
+.Pp
+For one or more iicbus busses:
+.Cd "device iicbus"
+.Sh DESCRIPTION
+The
+.Em pcf
+driver provides support to the Philips PCF8584 I2C controller for the
+.Xr iicbus 4
+system.
+.Pp
+The PCF8584 is an integrated circuit designed in CMOS technology which serves
+as an interface between most standard parallel-bus
+microcontrollers/microprocessors and the serial I2C-bus.
+The PCF8584
+provides both master and slave functions.
+Communication with I2C-bus is
+carried out on a byte-wise basis using interrupt or polled handshake.
+It
+controls all the I2C-bus specific sequences, protocol, arbitration and timing.
+The PCF8584 allows parallel-bus systems to communicate bidirectionally with
+the I2C-bus.
+.Sh SEE ALSO
+.Xr iicbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/man4.i386/perfmon.4 b/share/man/man4/man4.i386/perfmon.4
new file mode 100644
index 0000000..b9a00f5
--- /dev/null
+++ b/share/man/man4/man4.i386/perfmon.4
@@ -0,0 +1,213 @@
+.\"
+.\" Copyright 1996 Massachusetts Institute of Technology
+.\"
+.\" Permission to use, copy, modify, and distribute this software and
+.\" its documentation for any purpose and without fee is hereby
+.\" granted, provided that both the above copyright notice and this
+.\" permission notice appear in all copies, that both the above
+.\" copyright notice and this permission notice appear in all
+.\" supporting documentation, and that the name of M.I.T. not be used
+.\" in advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission. M.I.T. makes
+.\" no representations about the suitability of this software for any
+.\" purpose. It is provided "as is" without express or implied
+.\" warranty.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+.\" SHALL M.I.T. 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$
+.Dd March 26, 1996
+.Dt PERFMON 4 i386
+.Os
+.Sh NAME
+.Nm perfmon
+.Nd CPU performance-monitoring interface
+.Sh SYNOPSIS
+.Cd cpu I586_CPU
+.Cd cpu I686_CPU
+.Cd options PERFMON
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to the internal performance-monitoring
+capabilities of the
+.Tn Intel
+.Tn Pentium
+and
+.Tn "Pentium Pro"
+CPUs.
+These processors implement two internal counters which can be
+configured to measure a variety of events for either count or duration
+(in CPU cycles), as well as a cycle counter which counts clock cycles.
+The
+.Nm
+driver provides a device-style interface to these capabilities.
+.Pp
+All access to the performance-monitoring counters is performed through
+the special device file
+.Dq Pa /dev/perfmon .
+This device supports a number of
+.Xr ioctl 2
+requests, defined in
+.In machine/perfmon.h
+along with the definitions of the various counters for both
+.Tn Pentium
+and
+.Tn "Pentium Pro"
+processors.
+.Pp
+.Sy NOTA BENE :
+The set of available events differs from processor to processor.
+It
+is the responsibility of the programmer to ensure that the event
+numbers used are the correct ones for the CPU type being measured.
+.Pp
+The following
+.Xr ioctl 2
+requests are defined:
+.Bl -tag -width PMIOTSTAMP
+.It Dv PMIOSETUP
+.Pq Li "struct pmc"
+Set up a counter with parameters and flags defined in the structure.
+The following fields are defined in
+.Li struct pmc :
+.Bl -tag -width "u_char pmc_eventx"
+.It Li "int pmc_num"
+the number of the counter in question; must be less than
+.Dv NPMC
+(currently 2).
+.It Li "u_char pmc_event"
+the particular event number to be monitored, as defined in
+.In machine/perfmon.h .
+.It Li "u_char pmc_unit"
+the unit mask value, specific to the event type (see the
+.Tn Intel
+documentation).
+.It Li "u_char pmc_flags"
+flags modifying the operation of the counter (see below).
+.It Li "u_char pmc_mask"
+the counter mask value; essentially, this is a threshold used to
+restrict the count to events lasting more (or less) than the specified
+number of clocks.
+.El
+.Pp
+The following
+.Li pmc_flags
+values are defined:
+.Bl -tag -compact -width PMCF_USRxx
+.It Dv PMCF_USR
+count events in user mode
+.It Dv PMCF_OS
+count events in kernel mode
+.It Dv PMCF_E
+count number of events rather than their duration
+.It Dv PMCF_INV
+invert the sense of the counter mask comparison
+.El
+.It Dv PMIOGET
+.Pq Li "struct pmc"
+returns the current configuration of the specified counter.
+.It Dv PMIOSTART
+.It Dv PMIOSTOP
+.Pq Li int
+starts (stops) the specified counter.
+Due to hardware deficiencies,
+counters must be started and stopped in numerical order.
+(That is to
+say, counter 0 can never be stopped without first stopping counter 1.)
+The driver will
+.Em not
+enforce this restriction (since it may not be present in future CPUs).
+.It Dv PMIORESET
+.Pq Li int
+reset the specified counter to zero.
+The counter should be stopped
+with
+.Dv PMIOSTOP
+before it is reset.
+All counters are automatically reset by
+.Dv PMIOSETUP .
+.It Dv PMIOREAD
+.Pq Li "struct pmc_data"
+get the current value of the counter.
+The
+.Li pmc_data
+structure defines two fields:
+.Pp
+.Bl -tag -compact -width "quad_t pmcd_value"
+.It Li "int pmcd_num"
+the number of the counter to read
+.It Li "quad_t pmcd_value"
+the resulting value as a 64-bit signed integer
+.El
+.Pp
+In the future, it may be possible to use the
+.Li RDPMC
+instruction on
+.Tn "Pentium Pro"
+processors to read the counters directly.
+.It Dv PMIOTSTAMP
+.Pq Li "struct pmc_tstamp"
+read the time stamp counter.
+The
+.Li pmc_tstamp
+structure defines two fields:
+.Pp
+.Bl -tag -compact -width "quad_t pmct_value"
+.It Li "int pmct_rate"
+the approximate rate of the counter, in MHz
+.It Li "quad_t pmct_value"
+the current value of the counter as a 64-bit integer
+.El
+.Pp
+It is important to note that the counter rate, as provided in the
+.Li pmct_rate
+field, is often incorrect because of calibration difficulties and
+non-integral clock rates.
+This field should be considered more of a
+hint or sanity-check than an actual representation of the rate of
+clock ticks.
+.El
+.Sh FILES
+.Bl -tag -compact -width "/usr/include/machine/perfmon.h"
+.It Pa /dev/perfmon
+character device interface to counters
+.It Pa /usr/include/machine/perfmon.h
+include file with definitions of structures and event types
+.It Pa /usr/share/examples/perfmon
+sample source code demonstrating use of all the
+.Fn ioctl
+commands
+.El
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr hwpmc 4
+.Rs
+.%A Intel Corporation
+.%B Pentium Pro Family Developer's Manual
+.%D January 1996
+.%V vol. 3
+.%O Operating System Writer's Manual
+.Re
+.Sh HISTORY
+The
+.Nm
+device first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Garrett A. Wollman ,
+MIT Laboratory for Computer Science.
diff --git a/share/man/man4/man4.i386/pnp.4 b/share/man/man4/man4.i386/pnp.4
new file mode 100644
index 0000000..1c9a2cd
--- /dev/null
+++ b/share/man/man4/man4.i386/pnp.4
@@ -0,0 +1,90 @@
+.\" Copyright (c) 1997 Luigi Rizzo
+.\"
+.\" 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 acknowledgements:
+.\" This product includes software developed by Luigi Rizzo.
+.\" 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$
+.\"
+.Dd September 20, 2001
+.Dt PNP 4 i386
+.Os
+.Sh NAME
+.Nm pnp
+.Nd support for
+.Dq "Plug and Play"
+(PnP) ISA devices
+.Sh DESCRIPTION
+The
+.Nm
+driver enumerates ISA devices which support
+.Dq "Plug and Play ISA Specification"
+in the system.
+It assigns ISA bus resources (interrupt line, DMA channel, I/O ports,
+and memory region) to each device and activates it.
+.Pp
+If it cannot assign necessary resources to a PnP ISA device without
+causing conflict with other devices in the system,
+the device will not be activated and will be unavailable
+to programs.
+.Sh CAVEATS
+It is not possible to disable individual PnP ISA devices.
+The
+.Nm
+driver will find all devices conforming the PnP ISA specification
+and try to activate them all.
+.Pp
+There is no way to explicitly assign particular resource to
+the PnP ISA device.
+The resource assignment is fully automatic and there is
+no provision for manual override.
+.Sh SEE ALSO
+.Xr pnpbios 4
+.Sh STANDARDS
+.Rs
+.%A Intel
+.%A Microsoft
+.%T "Plug and Play ISA Specification, Version 1.0a"
+.%D "May 5, 1994"
+.Re
+.Pp
+.Rs
+.%T "Clarifications to the Plug and Play ISA Specification, Version 1.0a"
+.%D "December 10, 1994"
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 2.2.5 .
+It has been substantially updated in subsequent versions.
+.Sh AUTHORS
+.An -nosplit
+PnP support was originally written
+for
+.Fx 2.2.5
+by
+.An Luigi Rizzo ,
+based on initial work done by
+.An Sujal Patel .
diff --git a/share/man/man4/man4.i386/pnpbios.4 b/share/man/man4/man4.i386/pnpbios.4
new file mode 100644
index 0000000..d8e7609
--- /dev/null
+++ b/share/man/man4/man4.i386/pnpbios.4
@@ -0,0 +1,85 @@
+.\"
+.\" Copyright (c) 2001
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.Dd September 20, 2001
+.Dt PNPBIOS 4 i386
+.Os
+.Sh NAME
+.Nm pnpbios
+.Nd support for embedded devices on the motherboard
+.Sh DESCRIPTION
+The
+.Nm
+driver enumerates embedded ISA devices on the motherboard whose BIOS
+supports
+.Dq "Plug and Play BIOS Specification" .
+It assigns ISA bus resources (interrupt line, DMA channel, I/O ports,
+and memory region) to each device and activates it.
+.Pp
+If it cannot assign necessary resources to a device without
+causing conflict with other devices in the system,
+the device will not be activated and will be unavailable
+to programs.
+.Sh CAVEATS
+There is no explicit way to disable individual embedded devices.
+The
+.Nm
+driver will find all devices reported by the
+.Dq "Plug and Play (PnP)"
+BIOS and try to activate them all.
+.Pp
+There is no way to explicitly assign particular resource to a device.
+The resource assignment is fully automatic and there is
+no provision for manual override.
+.Sh SEE ALSO
+.Xr pnp 4
+.Sh STANDARDS
+.Rs
+.%A Compaq
+.%A Phenix
+.%A Intel
+.%T "Plug and Play BIOS Specification Version 1.0A"
+.%D May 5, 1994
+.Re
+.Pp
+.Rs
+.%A Compaq
+.%A Phenix
+.%A Intel
+.%T "Plug and Play BIOS CLARIFICATION Paper for Plug and Play BIOS Specification Version 1.0A"
+.%D October 6, 1994
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Mike Smith .
diff --git a/share/man/man4/man4.i386/ray.4 b/share/man/man4/man4.i386/ray.4
new file mode 100644
index 0000000..23eb168
--- /dev/null
+++ b/share/man/man4/man4.i386/ray.4
@@ -0,0 +1,419 @@
+.\"
+.\" Copyright (C) 2000
+.\" Dr. Duncan McLennan Barclay, dmlb@ragnet.demon.co.uk.
+.\"
+.\" 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. 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 DUNCAN BARCLAY 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 DUNCAN BARCLAY 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$
+.\"
+.Dd July 16, 2005
+.Dt RAY 4 i386
+.Os
+.Sh NAME
+.Nm ray
+.Nd "Raytheon Raylink/Webgear Aviator PCCard driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ray"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ray_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for
+.Tn "Raytheon Raylink"
+adapters (commonly available as
+.Tn "Webgear Aviator" ,
+.Tn "Webgear Aviator Pro"
+and
+.Tn "Raylink PC Card"
+devices.)
+The core of the
+.Tn Raylink
+cards is a frequency hopping PHY with an
+.Tn IEEE
+802.11
+style MAC that interacts with the host using shared memory and mailboxes.
+.Pp
+The
+.Nm
+driver currently supports ad-hoc operation mode and the
+.Tn Aviator
+cards.
+Infrastructure mode, interworking with
+.Tn "Windows 2000" Ns / Ns Tn Linux Ns / Ns Nx ,
+.Tn "Raylink PC Cards"
+and
+.Tn "Aviator Pros"
+is rudimentary and in active development.
+The
+.Nm
+driver currently encapsulates all IP and ARP traffic as
+.Tn Ethernet
+2 frames within an
+.Tn IEEE
+802.11
+frame.
+Other translations will be forthcoming as needed.
+Transmit speed is
+selectable between 0.5Mbps, 1Mbp , 1.5Mbps or 2Mbps all with auto fallback.
+.Pp
+By default, the
+.Nm
+driver configures the card for ad-hoc operation.
+In this mode,
+stations can communicate amongst each other without the aid of an access
+point.
+To join a managed service set, the driver must be set for infrastructure mode
+using the
+.Xr raycontrol 8
+utility.
+.Pp
+There are two known firmware versions; version 4 and version 5.
+Version 4 firmware was shipped on the orignal
+.Tn "Webgear Aviators"
+Version 5 firmware is
+used as part of the
+.Tn "Windows 2000"
+upgrade from
+.Tn Webgear
+and on the
+.Tn "Aviator Pro" ,
+and
+.Tn "Raylink PC Cards"
+cards.
+Version 4 is not likely to be 100%
+.Tn IEEE
+802.11
+compliant - version 5 should be.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8
+and
+.Xr raycontrol 8 .
+.Sh DIAGNOSTICS
+The following messages occur when there are problems
+setting up the memory mapped buffers due to nits in
+.Xr pccardd 8 .
+.Bl -diag
+.It "ray?: pccardd did not map CM - giving up"
+See the
+.Sx BUGS
+section and contact the author for help enclosing a copy
+of the output from
+.Xr dmesg 8 .
+This message only occurs on 3.x systems.
+.It "ray?: fixing up CM ..."
+.It "ray?: fixing up AM ..."
+The driver is fixing up PCCard memory management after mis-configuration
+by
+.Xr pccardd 8 ,
+benign.
+.El
+.Pp
+.Bl -diag
+On 4.x and -current systems the following messages can occur when the
+memory mapped buffers are set up.
+.It "ray?: allocated common memory:"
+.It ". start 0xd0000 count 0xc0000 flags 0x40"
+Benign.
+.It "ray?: allocated attribute memory:"
+.It ". start 0xdc000 count 0x1000 flags 0x50"
+Benign.
+.It "ray?: allocated irq:"
+.It ". start 0x9 count 0x1"
+Benign.
+.It "ray?: Cannot allocate attribute memory"
+.It "ray?: Cannot allocate common memory"
+.It "ray?: Cannot allocate irq"
+.It "ray?: Failed to setup irq"
+.It "ray?: CARD_SET_MEMORY_OFFSET returned 0x??"
+.It "ray?: CARD_SET_RES_FLAGS returned 0x??"
+See the
+.Sx BUGS
+section and contact the author for help enclosing a copy
+of the output from
+.Xr dmesg 8
+in your email.
+.El
+.Pp
+.Bl -diag
+If the kernel is booted with the verbose flag turned on then the
+extra information is printed when the driver is probed.
+These messages are also seen when the
+.Dv RAY_DBG_BOOTPARAM
+bit in the
+.Dv RAY_DEBUG
+option is turned on, as is the case for all existing
+versions of the driver.
+.It "ray?: memory start 0x???? count 0x???? flags 0x???? offset 0x????"
+Description of memory map settings on entry to the driver.
+.It "ray?: irq start 0x???? count 0x????"
+Description of irq settings on entry to the driver (only on 4.1 and
+above).
+.El
+.Pp
+On start-up the driver will report hardware failures thus:
+.Bl -diag
+.It "ray?: card failed self test: status 0x??<???>"
+The card failed to come ready after it was plugged in to the PCCard
+slot.
+The most common cause of this message is incorrect PCCard memory
+management (indicated by a status of 0xff or 0x55).
+Bent cards might say that the receiver calibration failed.
+If you are brave enough removing the
+base of the case can resurrect cards (no warranties etc.).
+.It "ray?: unsupported firmware version 0x??"
+Self explanatory.
+Contact the author for help enclosing a copy
+of the output from
+.Xr dmesg 8 .
+.El
+.Pp
+The following messages are enabled using the
+.Cm debug
+option of
+.Xr ifconfig 8 .
+.Bl -diag
+.It "ray?: cannot transmit - not running"
+A packet was ready for transmission but the NIC is not connected to a
+BSS.
+May occur when removing the PCCard.
+.It "ray?: cannot transmit - no network"
+The wireless NIC has roamed from an access point and not connected with a new
+one yet.
+.It "ray?: cannot transmit - ECF busy"
+The controller firmware was busy when a packet was about to be sent out.
+It will be retried automatically.
+.It "ray?: mbuf too long ??"
+Should never happen, and if it does represents something wrong in the
+generic Ethernet driver in the kernel.
+.It "ray?: could not pullup ether"
+Problem with re-aligning mbufs.
+Very unlikely to happen.
+.It "ray?: unknown framing type ??"
+An impossible error - mail the author.
+.It "ray?: could not translate packet"
+An error occurred when trying to re-frame a packet for transmission.
+.It "ray?: ECF busy, dropping packet"
+The NIC was busy just before a packet was to be transmitted.
+.It "ray?: tx completed but status is fail"
+Typically associated with transmissions to out of range NICs.
+.It "ray?: packet too big or too small"
+A received packet was impossibly small or too large to fit into an mbuf.
+.It "ray?: MGETHDR failed"
+The driver could not get a mbuf to store a received packet into.
+Try increasing
+.Dv MAXUSERS
+in your kernel configuration.
+.It "ray?: MCLGET failed"
+The driver could not get a mbuf to store a received packet into.
+Try increasing
+.Dv MAXUSERS
+in your kernel configuration.
+.It "ray?: bad length current 0x?? pktlen 0x??"
+The lengths of a fragmented packet were inconsistent.
+.It "ray?: bad rcs index 0x??"
+The index of the buffer used for part of a fragmented packet is
+outside of the usable range.
+.It "ray?: header not version 0 fc0 0x??"
+The received
+.Tn IEEE
+802.11
+packet had an unknown header type.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: unknown packet fc0 0x??"
+The received
+.Tn IEEE
+802.11
+packet type is unknown.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: reserved DATA packet subtype 0x??"
+The received
+.Tn IEEE
+802.11
+data packet has a reserved (i.e., not allowed) subtype.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: MGT TODS/FROMDS wrong fc1 0x??"
+The received
+.Tn IEEE
+802.11
+management packet had a malformed header.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: unexpected MGT packet subtype 0x??"
+The received
+.Tn IEEE
+802.11
+management packet was of a subtype that the NIC
+should have processed.
+Benign, but might represent buggy firmware.
+.It "ray?: reserved MGT packet subtype 0x??"
+The received
+.Tn IEEE
+802.11
+management packet has a reserved (i.e., not allowed)
+subtype.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: open system authentication request"
+Self explanatory and for testing
+.Tn "Aviator Pro"
+interworking.
+.It "ray?: authentication failed with status ??"
+Self explanatory and currently represents a bug as the driver never
+requests authentication.
+.It "ray?: shared key authentication request"
+Self explanatory and for testing
+.Tn "Aviator Pro"
+interworking.
+.It "ray?: reserved authentication subtype 0x??"
+An authentication request has been received for a reserved (i.e., not allowed)
+subtype.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: CTL TODS/FROMDS wrong fc1 0x??"
+The received
+.Tn IEEE
+802.11
+management packet had a malformed header.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: unexpected CTL packet subtype 0x??"
+The received
+.Tn IEEE
+802.11
+control packet was of a subtype that the NIC
+should have processed.
+Benign, but might represent buggy firmware.
+.It "ray?: reserved CTL packet subtype 0x??"
+The received
+.Tn IEEE
+802.11
+control packet has a reserved (i.e., not allowed)
+subtype.
+Represents link corruption or non standard nodes in the network.
+.It "ray?: bad ccs index 0x??"
+The NIC has generated an interrupt with an incorrect control block.
+.It "ray?: unexpected UPDATE_APM"
+.It "ray?: unexpected TEST_MEM"
+.It "ray?: unexpected SHUTDOWN"
+.It "ray?: unexpected DUMP_MEM"
+.It "ray?: unexpected START_TIMER"
+The NIC has generated an interrupt signalling that
+the indicated command has completed.
+At present these commands are never
+issued by the driver, so they represent firmware/hardware/driver bugs.
+.It "ray?: unknown command 0x??"
+The NIC has generated an interrupt for an unknown command completion.
+Represents firmware/hardware/driver bugs.
+.It "ray?: unexpected JAPAN_CALL_SIGNAL"
+The NIC has generated an interrupt with a control block requesting
+processing of a packet that is only ever used in Japanese RCR
+certification tests.
+Represents firmware/hardware/driver bugs unless you
+are trying to certify the NICs in Japan (in which case you would have to
+of modified the driver and this manual is out of date).
+.It "ray?: spinning"
+The controller firmware was busy when a command was about to be issued.
+If the driver spins for too long then it will panic.
+See the
+.Sx BUGS
+section for details.
+.It "ray?: freeing free ccs 0x??"
+Benign warning that may occur when the NIC is ejected.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8 ,
+.Xr pccardd 8 ,
+.Xr raycontrol 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.3 .
+.Sh AUTHORS
+.An -nosplit
+Early versions of this
+.Nm
+driver were a port of the
+.Nx
+driver by
+.An "Christian E. Hopps" .
+The driver
+was re-structured by
+.An Duncan Barclay Aq dmlb@FreeBSD.org ,
+so that
+.Xr dhclient 8
+would work.
+.Sh BUGS
+Infra-structure mode is not supported yet.
+The driver is likely to panic if it is set into this mode.
+Testers are encouraged to contact the
+author.
+.Pp
+Currently
+.Fx
+has a small problem managing and setting up the correct memory maps.
+However, this driver should reset the
+memory maps correctly - it works around
+.Xr pccardd 8
+(where it reads the CIS for common memory, sets it all up
+and then throws it all away assuming the card is an
+.Xr ed 4
+driver...).
+Note that this could be dangerous (because it does not interact with
+.Xr pccardd 8 )
+if you use other memory mapped cards at the same time or have
+SCSI cards with on-board BIOS.
+.Pp
+More encapsulations and translations could be supported, but they have
+little value unless someone can demonstrate that the
+.Nm
+cards will communicate with other manufacturers cards.
+Version 4 and
+firmware is not
+.Tn IEEE
+802.11
+compliant, but version 5 is.
+.Pp
+To communicate with
+.Tn Windows
+machines ensure that the
+.Tn Windows
+machine
+creates the BSS/IBSS.
+.Pp
+The driver currently panics on some errors that it should recover from.
+These will be removed RSN.
diff --git a/share/man/man4/man4.i386/sbni.4 b/share/man/man4/man4.i386/sbni.4
new file mode 100644
index 0000000..31cf610
--- /dev/null
+++ b/share/man/man4/man4.i386/sbni.4
@@ -0,0 +1,132 @@
+.\" Written by Denis I. Timofeev, 2002.
+.\"
+.\" 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$
+.\"
+.Dd January 8, 2002
+.Dt SBNI 4 i386
+.Os
+.Sh NAME
+.Nm sbni
+.Nd Granch SBNI12 leased line modem driver
+.Sh SYNOPSIS
+.Cd "device sbni"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for leased line modems of following models:
+.Pp
+.Bl -bullet -compact
+.It
+SBNI12-02, SBNI12D-02
+.It
+SBNI12-04, SBNI12D-04
+.It
+SBNI12-05, SBNI12D-05, ISA and PCI
+.It
+SBNI12-10, SBNI12D-10, ISA and PCI
+.El
+.Pp
+and a kit for data link over a voice band:
+.Bl -bullet
+.It
+SBNI12-11, SBNI12D-11, ISA and PCI.
+.El
+.Pp
+In addition to the standard port and IRQ specifications, the
+.Nm
+driver also supports a number of
+.Va flags
+which can set baud rate, receive level, and low three bytes of Ethernet
+MAC-address (high three are always
+.Li 00:ff:01 ) ,
+because Granch modems are
+presented to the system as Ethernet-like network cards.
+.Pp
+The high byte of the
+.Va flags
+is a bit field, it is used to specify SBNI adapter receive level/baud rate:
+.Bl -tag -width "Bits 0-3:" -offset indent
+.It "Bits 0-3:"
+receive level (0x00..0x0f)
+.It "Bits 4-5:"
+baud rate number:
+.Pp
+.Bl -inset -compact
+.It "00 -"
+0 baud rate (2Mb in fast mode/500kb in slow)
+.It "01 -"
+1 baud rate (1Mb/250kb)
+.It "10 -"
+2 baud rate (500kb/125kb)
+.It "11 -"
+3 baud rate (250kb/62.5kb)
+.El
+.It "Bit 6:"
+use fixed receive level
+.Pp
+if bit 6 is set then receive level will be set according
+to bits 0-3 value, otherwise receive level will be
+autodetected
+.It "Bit 7:"
+use fixed baud rate
+.Pp
+if bit 7 is set then baud rate will be set according to
+bits 4-5 value, otherwise baud rate is set to 2Mb
+.El
+.Sh FILES
+The sources for the driver reside in:
+.Pp
+.Bl -tag -compact
+.It Pa /sys/dev/sbni/if_sbni.c
+.It Pa /sys/dev/sbni/if_sbnireg.h
+.It Pa /sys/dev/sbni/if_sbnivar.h
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver for
+.Fx
+4.x was written by
+.An Denis I. Timofeev ,
+partially based on
+.An David Greenman Ns 's
+.Xr ed 4
+driver.
+Earlier versions (available on
+.Pa ftp.granch.com )
+were written by
+.An Alexey V. Zverev .
+.Pp
+SBNI12 hardware was designed by
+.An Alexey V. Chirkov .
diff --git a/share/man/man4/man4.i386/scd.4 b/share/man/man4/man4.i386/scd.4
new file mode 100644
index 0000000..daefa3c
--- /dev/null
+++ b/share/man/man4/man4.i386/scd.4
@@ -0,0 +1,74 @@
+.\"
+.\" Copyright (c) 1995 Jordan K. Hubbard
+.\" 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
+.\"
+.\" 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$
+.\"
+.Dd March 17, 2008
+.Dt SCD 4 i386
+.Os
+.Sh NAME
+.Nm scd
+.Nd Sony CDU31/33 CD-ROM driver
+.Sh SYNOPSIS
+.Cd "device scd"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.scd.0.at="isa"
+.Cd hint.scd.0.port="0x230"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a data interface to the Sony CDU31 and CDU33A CD-ROM
+drives.
+The drive must be hooked to a Sony proprietary interface
+card or a compatible clone.
+.Sh FILES
+.Bl -tag -width /dev/[r]scd0a -compact
+.It Pa /dev/[r]scd0a
+accesses
+.Bx
+partition on the disc.
+Normally, there is only
+one file system on a CDROM disc.
+.It Pa /dev/[r]scd0c
+accesses the raw device.
+.El
+.Sh SEE ALSO
+.Pa /sys/dev/scd/scd.c
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 2.0.5 .
+.Sh AUTHORS
+.An -nosplit
+The driver was written by
+.An Mikael Hybsch
+with code contributed by
+.An Holger Veit
+and
+.An Brian Moore .
diff --git a/share/man/man4/man4.i386/smapi.4 b/share/man/man4/man4.i386/smapi.4
new file mode 100644
index 0000000..8af17fa
--- /dev/null
+++ b/share/man/man4/man4.i386/smapi.4
@@ -0,0 +1,153 @@
+.\"
+.\" Copyright (c) 2003 Tom Rhodes
+.\" 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$
+.\"
+.Dd April 1, 2003
+.Dt SMAPI 4 i386
+.Os
+.Sh NAME
+.Nm smapi
+.Nd "System Management Application Program Interface driver"
+.Sh DESCRIPTION
+Many
+.Tn IBM Thinkpad
+laptops utilize a special software interface known as
+.Tn SMAPI
+(System Management Application Program Interface).
+This interface controls various aspects of the system including:
+.Bl -bullet
+.It
+System Interface
+(the
+.Tn BIOS
+can store system information such as the system identifier),
+.It
+System Configuration (where devices such as the display can be configured),
+.It
+Power Management (software can interact with the
+.Tn SMAPI BIOS
+for Power Management control).
+.El
+.Pp
+Client software must locate a
+.Dq "header image"
+stored in the
+.Li F000
+segment in the
+.Tn Thinkpad ROM
+(read-only memory), which resides at the 16-byte boundary.
+This is considered the
+.Dq "Entry Point"
+for the service.
+.Pp
+The
+.Dq "header image"
+stores information like:
+.Bl -bullet
+.It
+signature,
+.It
+.Tn SMAPI
+version (major and minor),
+.It
+header image length,
+.It
+checksum information (which verifies the image),
+.It
+an Information Word (used to identify the
+.Tn BIOS
+service level),
+.It
+Real Mode Entry Point (where clients using the
+Real/V86 mode for the far-call value),
+.It
+and finally a 16-bit/32-bit Protected Mode Entry
+Point: base code address which specifies the
+.Tn BIOS
+physical address.
+The client must prepare a 64 kilobyte selector for this
+.Tn BIOS ) .
+.El
+.Pp
+To invoke the
+.Tn SMAPI BIOS ,
+a far-call must be used on the entry point specified in the header file.
+All other information should be stored in the client data area.
+The client is required to prepare both an input and output parameter in a
+data area of its own.
+This area can be
+.Dq informed
+by pushing those pointers into its stack before the far-calls.
+.Pp
+The
+.Tn SMAPI BIOS
+uses the stack and data areas with the selector during a
+.Tn BIOS
+invocation, thus the caller must define the same privilege area as the
+.Tn BIOS .
+.Pp
+The parameter structure will be made up by using the input and output
+fields prepared by the caller.
+The input field will specify the function request to the
+.Tn BIOS .
+The
+.Tn BIOS
+will then drop a return value into the output field.
+These fields are made up of three parts.
+The first holds parameters, function numbers, and return codes.
+The next will contain an offset in hexadecimal.
+Finally a length field which is comprised of Byte, Word, or Double Word.
+.Sh SEE ALSO
+.Rs
+.%B "IBM Thinkpad 560/560E Technical Reference"
+.%O "06J0536 S76H-7587-01"
+.Re
+.Rs
+.%B "IBM Thinkpad 560Z Technical Reference"
+.%O "xxxxxxx xxxx-xxxx-xx"
+.Re
+.Rs
+.%B "IBM Thinkpad 600 Technical Reference"
+.%O "xxxxxxx xxxx-xxxx-xx"
+.Re
+.Rs
+.%B "IBM Thinkpad 760XD/760XL/765D/765L Technical Reference"
+.%O "06J0537 S30H-2433-02"
+.Re
+.Rs
+.%B "IBM Thinkpad 770 Technical Reference"
+.%O "05L1739 S05L-1739-00"
+.Re
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Matthew N. Dodd Aq mdodd@FreeBSD.org .
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+and
+.An Matthew N. Dodd Aq mdodd@FreeBSD.org .
diff --git a/share/man/man4/man4.i386/snc.4 b/share/man/man4/man4.i386/snc.4
new file mode 100644
index 0000000..66b4524
--- /dev/null
+++ b/share/man/man4/man4.i386/snc.4
@@ -0,0 +1,142 @@
+.\"
+.\" Copyright (c) 2004 Tom Rhodes
+.\" 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$
+.\"
+.Dd September 4, 2004
+.Dt SNC 4 i386
+.Os
+.Sh NAME
+.Nm snc
+.Nd National Semiconductor DP8393X SONIC Ethernet adapter driver
+.Sh SYNOPSIS
+.Cd device isa
+.Cd device snc
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn National
+.Tn Semiconductor
+.Tn SONIC
+Ethernet adapters.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+National Semiconductor DP83934AVQB
+.It
+NEC PC-9801-83
+.It
+NEC PC-9801-84
+.It
+NEC PC-9801-103
+.It
+NEC PC-9801-104
+.It
+NEC PC-9801N-15
+.It
+NEC PC-9801N-25
+.It
+NEC PC-9801N-J02 PCMCIA
+.It
+NEC PC-9801N-J02R PCMCIA
+.El
+.Pp
+The
+.Nm
+driver also includes support for the
+.Tn National
+.Tn Semiconductor
+.Tn NS46C46
+as
+64 * 16 bits Microwave Serial
+.Tn EEPROM .
+.Sh IMPLEMENTATION NOTES
+Accessing
+.Tn SONIC
+card data structures and registers as 32 bit values
+makes code endianness independent.
+The
+.Tn SONIC
+is however always in big-endian mode so it is necessary to
+ensure that data structures shared
+between the
+.Tn CPU
+and the
+.Tn SONIC
+card are always in big-endian order.
+The
+.Nm
+driver supports the
+.Tn PC-98
+C-Bus,
+and
+.Tn PnP
+buses.
+Support is also provided for the legacy C-Bus.
+.Sh DIAGNOSTICS
+The following driver specific error messages
+may be reported:
+.Bl -diag
+.It "snc%d: snc_nec16_register_irq: unsupported irq (%d)"
+The card returned an
+.Tn IRQ
+which is not supported by the driver.
+.It "snc%d: invalid packet length %d bytes"
+An attempt to transfer a data packet failed due to an
+invalid packet length.
+.El
+.Sh SEE ALSO
+.Xr netintro 4 ,
+.Xr bus_alloc_resource_any 9
+.Sh HISTORY
+The
+.Nm
+driver was ported from
+.Nx
+by
+.An -nosplit
+.An Motomichi Matsuzaki Aq mzaki@e-mail.ne.jp
+and
+.An Hiroshi Yamashita Aq bluemoon@msj.biglobe.ne.jp .
+It first appeared in
+.Fx 4.2 .
+This manual page first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
+.Sh BUGS
+Currently the
+.Nm
+driver only works on the
+.Tn PC-98
+architecture.
+It should probably work on the i386 architecture
+as well.
diff --git a/share/man/man4/man4.i386/sr.4 b/share/man/man4/man4.i386/sr.4
new file mode 100644
index 0000000..cf9ce8b
--- /dev/null
+++ b/share/man/man4/man4.i386/sr.4
@@ -0,0 +1,164 @@
+.\"
+.\" Copyright (c) 1996 John Hay. 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 John Hay.
+.\" 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 John Hay ``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 John Hay 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$
+.\"
+.Dd March 18, 2005
+.Dt SR 4 i386
+.Os
+.Sh NAME
+.Nm sr
+.Nd synchronous RISCom/N2 / WANic 400/405 device driver
+.Sh SYNOPSIS
+.Cd "device sr"
+.Pp
+For ISA cards, in
+.Pa /boot/device.hints :
+.Cd hint.sr.0.at="isa"
+.Cd hint.sr.0.port="0x300"
+.Cd hint.sr.0.irq="10"
+.Cd hint.sr.0.maddr="0xd0000"
+.Cd hint.sr.0.flags="0x0"
+.Pp
+.Cd "device sppp"
+.Sh DESCRIPTION
+The
+.Nm
+driver supports the RISCom/N2 ISA cards, N2pci and the WANic 400/405 PCI
+cards that are based on the HD64570 chip.
+.Pp
+If you have ISA cards, you need to specify the resources for them in
+.Pa /boot/device.hints .
+If you have the second ISA card, add
+.Pp
+.Dl hint.sr.1.at="isa"
+.Dl hint.sr.1.port="0x310"
+.Dl hint.sr.1.irq="11"
+.Dl hint.sr.1.maddr="0xd0000"
+.Dl hint.sr.1.flags="0x0"
+.Pp
+The standard
+.Fx
+sppp code is used for the link level layer.
+The
+default protocol used is PPP.
+The Cisco HDLC protocol can be used by
+adding
+.Em link2
+to
+.Xr ifconfig 8 .
+.Pp
+Alternately, the driver can be compiled to support
+.Xr netgraph 4
+(see below).
+.Pp
+The
+.Em flags
+specification in
+.Pa /boot/device.hints
+is optional.
+If it is not specified, the driver will
+assume the following:
+.Pp
+.Bl -hang -offset indent
+.It "The card has 2 ports."
+.It "The clock for the serial ports is external and the transmitter uses"
+the same clock as the receiver.
+.El
+.Pp
+The
+.Em flags
+are a bit field and can be used to force a different
+behaviour than the default.
+.Pp
+.Bl -hang -offset indent
+.It Em 0x01
+The card has only one port.
+.It Em 0x10
+Use separate external clocks for transmit and receive on port 0.
+.It Em 0x40
+Use separate external clocks for transmit and receive on port 1.
+.El
+.Pp
+The card only supports IRQ 3, 4, 5, 7, 10, 11, 12 and 15.
+.Pp
+The iomem area is a 16Kb block and must start at a 16Kb boundary.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following hardware:
+.Pp
+.Bl -bullet -compact
+.It
+SDL Communications RISCom/N2 ISA
+.It
+SDL Communications N2pci
+.It
+SDL Communications WANic 400/405 PCI
+.El
+.Sh NETGRAPH SUPPORT
+If the kernel is compiled with
+.Dv "options NETGRAPH"
+then the sppp and Cisco HDLC modes are disabled (and the sppp driver
+is unneeded), and this driver functions as a
+.Xr netgraph 4
+node with a single hook named
+.Dv rawdata .
+Connecting to this hook enables the transmission of raw HDLC frames.
+The node will have the same name as the device with ``sync_''
+prepended, e.g.,
+.Dv sync_sr0 .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "sr%d: Warning illegal interrupt %d."
+The card cannot use the specified interrupt.
+Choose a different one.
+.El
+.Sh SEE ALSO
+.Xr ar 4 ,
+.Xr cx 4 ,
+.Xr netgraph 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An John Hay Aq jhay@FreeBSD.org .
+.Pp
+Netgraph support was added by
+.An Julian Elischer Aq julian@FreeBSD.org .
+.Sh BUGS
+At the moment only the X.21 interface is tested.
+The others
+may need tweaks to the clock selection code.
+.Pp
+The code can probably stand some optimizing.
diff --git a/share/man/man4/man4.i386/streams.4 b/share/man/man4/man4.i386/streams.4
new file mode 100644
index 0000000..acb1808
--- /dev/null
+++ b/share/man/man4/man4.i386/streams.4
@@ -0,0 +1,85 @@
+.\" Copyright (c) 2000 Mark Newton
+.\" 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$
+.\"
+.Dd March 17, 2008
+.Dt STREAMS 4 i386
+.Os
+.Sh NAME
+.Nm streams
+.Nd System V STREAMS networking ABI support
+.Sh SYNOPSIS
+To compile support for this ABI into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device streams"
+.Ed
+.Pp
+Alternatively, to load the ABI as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+streams_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+module provides limited
+System V Release 4 STREAMS interprocess communication ABI
+(application binary interface) compatibility
+for userland applications.
+.Pp
+Internally,
+.Nm
+provides STREAMS handles by using socket creation kernel routines, and
+adding state-tracking information to the socket to permit manipulation
+by STREAMS emulation code in
+.Xr svr4 4 .
+Hence, opening a stream device produces a result similar to what would be
+obtained by calling
+.Xr socket 2 .
+.Pp
+Applications should never use this interface directly: STREAMS
+emulation is only provided as a service to support ABI requirements in
+the SVR4 environment which
+.Xr svr4 4
+needs to present to client binaries.
+.Sh SEE ALSO
+.Xr svr4 4
+.Sh HISTORY
+System V Release 4 ABI support first appeared in
+.Fx 4.0 .
+The ABI was ported from an equivalent facility present in
+.Nx 1.3
+written by Christos Zoulas.
+.Sh BUGS
+This whole interface is a crude hack to produce STREAMS semantics
+through emulation over sockets.
+.Pp
+Programmers who hope to be able to use this interface to provide
+SVR4 STREAMS services to
+.Bx
+applications will be sorely disappointed.
diff --git a/share/man/man4/man4.i386/svr4.4 b/share/man/man4/man4.i386/svr4.4
new file mode 100644
index 0000000..f470c43
--- /dev/null
+++ b/share/man/man4/man4.i386/svr4.4
@@ -0,0 +1,225 @@
+.\" Copyright (c) 2000 Mark Newton
+.\" 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$
+.\"
+.Dd March 17, 2008
+.Dt SVR4 4 i386
+.Os
+.Sh NAME
+.Nm svr4
+.Nd System V Release 4 ABI support
+.Sh SYNOPSIS
+To compile support for this ABI into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options COMPAT_SVR4"
+.Ed
+.Pp
+Alternatively, to load the ABI as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+svr4_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+module provides limited
+System V Release 4 ABI (application binary interface) compatibility
+for userland applications.
+The module provides the following significant facilities:
+.Bl -bullet
+.It
+An image activator
+for correctly branded
+.Xr elf 5
+executable images
+.It
+Special signal handling for activated images
+.It
+SVR4 to native system call translation
+.It
+STREAMS network API emulation (via the
+.Xr streams 4
+loadable module, or by means of
+.Dl device streams
+in a kernel configuration file)
+.It
+Mappings between
+.Fx
+and SVR4
+.Xr ioctl 2
+calls, or, where no such mappings exist, reverse-engineered implementations
+of the SVR4 calls.
+.El
+.Pp
+It is important to note that the SVR4 ABI support
+it not provided through an emulator.
+Rather, a true (albeit limited) "clean room" reverse-engineered ABI
+implementation is provided.
+.Sh LIMITATIONS
+Because the provided ABI has been developed in ignorance of actual SVR4
+source code, there are bound to be unforeseen interactions between SVR4
+client applications and the emulated ABI which cause applications to
+malfunction.
+.Pp
+Additionally, some SVR4 operating systems do not adhere to the SVR4
+ELF standard.
+In particular, Solaris does not set the ELF interpreter field in the
+ELF header to a value which would allow the kernel to correctly
+identify a client executable as an SVR4 application.
+Thus, in certain instances it is necessary to use the
+.Xr brandelf 1
+utility to explicitly brand the executable, or to set the
+kern.fallback_elf_brand
+.Xr sysctl 8
+variable to define a "default" ABI for unbranded executables.
+Value ELFOSABI_SOLARIS represents Solaris; ELFOSABI_SYSV represents other
+SysVR4 operating systems.
+See
+.In sys/elf_common.h
+for ELFOSABI branding definitions, and
+.Xr brandelf 1
+for information on branding executables.
+.Pp
+The
+.Nm
+module can be linked into the kernel statically with the
+.Dv COMPAT_SVR4
+kernel configuration option
+or loaded as required.
+The following command will load the module
+if it is neither linked into the kernel
+nor already loaded as a module:
+.Bd -literal -offset indent
+if ! kldstat -v | grep -E 'svr4elf' > /dev/null; then
+ kldload svr4 > /dev/null 2>&1
+fi
+.Ed
+.Pp
+The kernel
+will check for the presence of the
+.Xr streams 4
+module, and load it if necessary.
+.Pp
+Note that dynamically linked SVR4 executables
+will require a suitable environment in
+.Pa /compat/svr4 .
+.Pp
+For information on loading the
+.Nm
+kernel loadable module automatically on system startup,
+see
+.Xr rc.conf 5 .
+This information applies
+regardless of whether the
+.Nm
+module is statically linked into the kernel
+or loaded as a module.
+.Pp
+STREAMS emulation is limited but (largely) functional.
+Assuming the
+.Xr streams 4
+module is loaded, a STREAMS handle can be obtained by opening one of the
+relevant files in
+.Pa /dev
+or
+.Pa /compat/svr4/dev .
+Internally, the
+.Xr streams 4
+driver produces a socket descriptor and
+.Dq tags
+it with additional STREAMS
+state information before returning it to the client application.
+The
+.Nm
+environment uses the additional state information to recognize and
+manipulate emulated STREAMS handles when STREAMS-specific
+.Xr ioctl 2
+calls are executed.
+.Pp
+The subset of STREAMS functionality which is provided is small, probably
+little more than what is required to enable programs on the Solaris CD
+sets to run.
+.Sh FILES
+.Bl -tag -width /sys/compat/svr4/syscalls.master -compact
+.It Pa /compat/svr4
+minimal SVR4 run-time environment
+.It Pa /sys/compat/svr4/syscalls.master
+mappings between SVR4 syscalls and
+.Nm
+module entrypoints.
+.El
+.Sh SEE ALSO
+.Xr brandelf 1 ,
+.Xr streams 4 ,
+.Xr elf 5
+.Sh HISTORY
+System V Release 4 ABI support first appeared in
+.Fx 4.0 .
+The ABI was ported from an equivalent facility present in
+.Nx 1.3
+written by Christos Zoulas.
+.Sh BUGS
+Emulation of signal handlers is buggy.
+.Pp
+Emulated connectionless STREAMS fail to receive data from the network in
+some circumstances (but succeed in others -- probably due to particular
+ways of initializing them which the
+.Xr streams 4
+module is mishandling, and interaction between STREAMS and
+.Xr poll 2 ) .
+Connection-oriented STREAMS appear to be functional.
+.Pp
+Ironically, this SVR4 emulator does not (yet) support SVR4 semaphores or
+shared memory.
+.Pp
+.Xr ports 7
+to automatically create the
+.Pa /compat/svr4
+environment do not exist.
+.Xr tar 1
+archives containing pre-populated trees can be obtained from
+.Pa http://people.FreeBSD.org/~newton/freebsd-svr4/ .
+.Pp
+Extensive testing has only really been carried out with Solaris 2.x binaries,
+with anecdotal reports of limited success coming from testers with
+early-revision SCO media.
+In theory, the basic SVR4 ABI should be constant
+across the set of vendors who produce SVR4 operating systems, but in
+practice that is probably not the case.
+If necessary, future work can
+either implement additional
+.Xr kld 4
+modules which produce functionality which contains OS-dependent
+departures from the behaviour which has been implemented in this
+ABI implementation.
+Alternatively,
+.Xr sysctl 8
+variables could set the
+.Dq personality
+the environment should present to
+client applications.
diff --git a/share/man/man4/man4.i386/viapm.4 b/share/man/man4/man4.i386/viapm.4
new file mode 100644
index 0000000..7457952
--- /dev/null
+++ b/share/man/man4/man4.i386/viapm.4
@@ -0,0 +1,72 @@
+.\" Copyright (c) 2002 Nicolas Souchu
+.\" 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$
+.\"
+.Dd April 20, 2002
+.Dt VIAPM 4 i386
+.Os
+.Sh NAME
+.Nm viapm
+.Nd VIA chipsets Power Management controller driver
+.Sh SYNOPSIS
+.Cd device iicbb
+.Cd device iicbus
+.Cd device iicsmb
+.Cd device smbus
+.Cd device smb
+.Cd device viapm
+.Sh DESCRIPTION
+This driver provides access to the
+.Tn "VIA chipset Power Management Unit"
+family.
+They are
+VT82C586B, VT82C596A, VT82C596B, VT82C686A and VT8233.
+.Pp
+The embedded controller of the VIA chipset may give you access
+to the monitoring facilities of your mainboard.
+.Pp
+The 586B support is made by software whereas other controllers support
+the SMBus protocol by hardware.
+See
+.Xr smb 4
+for writing user code to fetch voltages, temperature and so on from the
+monitoring chip of your mainboard.
+.Sh SEE ALSO
+.Xr iicbb 4 ,
+.Xr iicbus 4 ,
+.Xr iicsmb 4 ,
+.Xr smb 4 ,
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 4.5 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu Aq nsouch@FreeBSD.org .
+.Sh BUGS
+Only polling mode is supported.
diff --git a/share/man/man4/man4.i386/vpd.4 b/share/man/man4/man4.i386/vpd.4
new file mode 100644
index 0000000..222925e
--- /dev/null
+++ b/share/man/man4/man4.i386/vpd.4
@@ -0,0 +1,90 @@
+.\" Copyright (c) 2003 Matthew N. Dodd <winter@jurai.net>
+.\" 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$
+.\"
+.Dd August 31, 2004
+.Dt VPD 4 i386
+.Os
+.Sh NAME
+.Nm vpd
+.Nd "Vital Product Data kernel interface"
+.Sh SYNOPSIS
+.Cd "device vpd"
+.Sh DESCRIPTION
+.Tn IBM ThinkPad
+notebooks (and most
+.Tn IBM
+desktop PCs) have a 48-byte
+Vital Product Data (VPD) structure located in the BIOS Shadow RAM.
+.Pp
+The VPD provides machine type and model information, the build ID
+(this is roughly the BIOS version) and serial number information.
+.Pp
+The
+.Nm
+driver scans the BIOS area and claims the memory used by the VPD
+structure.
+It provides the
+.Xr sysctl 3
+branch
+.Va hw.vpd
+to allow this information to be accessed by the userland.
+The following variables are provided, one per VPD attachment (there should
+only be one):
+.Pp
+.Bl -tag -width ".Dv MACHINE_MODEL" -compact
+.It Dv MACHINE_TYPE
+.Pq Va machine.type
+Machine type.
+.It Dv MACHINE_MODEL
+.Pq Va machine.model
+Machine model.
+.It Dv BUILD_ID
+.Pq Va build.id
+BIOS Build ID.
+.It Dv SERIAL_BOX
+.Pq Va serial.box
+Box Serial Number.
+.It Dv SERIAL_PLANAR
+.Pq Va serial.planar
+Motherboard Serial Number.
+.El
+.Sh SEE ALSO
+.Rs
+.%T "TP General - Using the BIOS Build ID to identify IBM ThinkPad systems"
+.%N "Reference #: MIGR-45120"
+.%D "November 22, 2002"
+.%O "http://www.ibm.com/support/docview.wss?uid=psg1MIGR-45120"
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+The
+.Nm
+driver and this manual page were written by
+.An Matthew N. Dodd Aq mdodd@FreeBSD.org .
diff --git a/share/man/man4/man4.i386/vx.4 b/share/man/man4/man4.i386/vx.4
new file mode 100644
index 0000000..99d89e9
--- /dev/null
+++ b/share/man/man4/man4.i386/vx.4
@@ -0,0 +1,140 @@
+.\"
+.\" Copyright (c) 1996, Fred Gray
+.\" 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 David Greenman.
+.\" 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 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$
+.\"
+.Dd July 16, 2005
+.Dt VX 4 i386
+.Os
+.Sh NAME
+.Nm vx
+.Nd "3Com EtherLink III / Fast EtherLink III (3c59x) Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device vx"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_vx_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the 3Com
+.Dq Vortex
+chipset.
+.Pp
+The medium selection
+can be influenced by the following link flags to the
+.Xr ifconfig 8
+command:
+.Pp
+.Bl -tag -width LINK0X -compact
+.It Em link0
+Use the AUI port.
+.It Em link1
+Use the BNC port.
+.It Em link2
+Use the UTP port.
+.El
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3c590 EtherLink III PCI
+.It
+3Com 3c592 EtherLink III EISA
+.It
+3Com 3c595 Fast EtherLink III PCI in 10 Mbps mode
+.It
+3Com 3c597 Fast EtherLink III EISA in 10 Mbps mode
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "vx%d: not configured; kernel is built for only %d devices."
+There are not enough devices in the kernel configuration file for the number
+of adapters present in the system.
+Add devices to the configuration file,
+rebuild the kernel, and reboot.
+.El
+.Pp
+All other diagnostics indicate either a hardware problem or a bug in the
+driver.
+.Sh CAVEATS
+Some early-revision 3c590 cards are defective and suffer from many receive
+overruns, which cause lost packets.
+The author has attempted to implement
+a test for it based on the information supplied by 3Com, but the test resulted
+mostly in spurious warnings.
+.Pp
+The performance of this driver is somewhat limited by the fact that it uses
+only polled-mode I/O and does not make use of the bus-mastering capability
+of the cards.
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.1 .
+It was derived from the
+.Nm ep
+driver, from which it inherits most of its limitations.
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver and this manual page were written by
+.An Fred Gray Aq fgray@rice.edu ,
+based on the work of
+.An Herb Peyerl
+and with the assistance of numerous others.
+.Sh BUGS
+The
+.Nm
+driver is known not to reset the adapter correctly following a warm boot
+on some systems.
+.Pp
+The
+.Nm
+driver has not been exhaustively tested with all the models of cards that it
+claims to support.
diff --git a/share/man/man4/man4.i386/wl.4 b/share/man/man4/man4.i386/wl.4
new file mode 100644
index 0000000..2f8fdc5
--- /dev/null
+++ b/share/man/man4/man4.i386/wl.4
@@ -0,0 +1,191 @@
+.\"
+.\" Copyright (c) 1997, Jim Binkley
+.\" 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 Jim Binkley
+.\" 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 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$
+.Dd September 29, 2006
+.Dt WL 4 i386
+.Os
+.Sh NAME
+.Nm wl
+.Nd T1 speed ISA/radio lan card
+.Sh SYNOPSIS
+.Cd "device wl0 at isa? port 0x300 irq 5"
+.Sh DESCRIPTION
+The
+.Nm
+driver controls a radio lan card system made originally by
+NCR, then ATT, now Lucent.
+The system is spread-spectrum radio
+at around 915 MHz (or 2.4 GHz).
+With the supplied omni-directional antennae,
+about 400 feet (indoors, more outdoors) can be covered in circumference.
+This card can talk to the companion (wlp0) pccard.
+Speeds vary
+from 1 megabit to theoretically 2 megabits (roughly T1 in speed).
+.Pp
+The card has three fundamental hardware
+units, a so-called PSA or programmable storage area, a radio modem,
+and a Ethernet lan controller.
+The latter component is the
+ancient (and not very honorable) Intel 82586 Ethernet chip.
+Fundamentally it appears to the operating system as an Ethernet system,
+and speaks IEEE MAC addresses.
+The radio modem simply translates
+Ethernet packets to/from radio packets, that are either at 2.4 GHz
+or 915 MHz depending on the radio modem.
+It supports a collision
+avoidance scheme.
+The lan controller
+supports promiscuous mode, broadcast, and multicasting
+(although there is a glitch
+in the latter).
+"It thinks it is Ethernet".
+.Pp
+How it is used
+depends on the kind of antennae deployed with it.
+Point to point
+applications are possible as are Ethernet-like lan use.
+The vendor
+ships an omni-directional antennae that works in the
+vicinity of 400 feet (indoors).
+Point to point antennae can be purchased that will go miles.
+.Sh SETUP
+The card can either be initialized with the vendor supplied DOS setup software.
+Typically minimally an IRQ, port, and Network ID must be supplied.
+Michael Smith's
+.Xr wlconfig 8
+utility can now be used to do this work from
+the UNIX side.
+The card is "not" plug and play.
+The network id controls whether one set of cards can hear another.
+If different, cards will read physical packets, but they will be discarded
+by the radio modem.
+.Sh CONTROL
+In addition to the config utility, there are several sysctl
+switches that can be used to modify runtime parameters.
+The
+.Xr sysctl 8
+variables are as follows:
+.Bl -diag
+.It "machdep.wl_xmit_delay <useconds>"
+This variable will cause the driver to insert a delay on transmit.
+250 is the default.
+The delay should probably be a bit longer
+on faster cpus and less on slower cpus.
+It exists because the 82586
+was not designed to work with Pentium-speed cpu systems and if overdriven
+will have copious xmit side errors.
+.It machdep.wl_ignore_nwid <0 | 1>
+This switch defaults to 0; i.e., the nwid is not ignored.
+It can
+be set to 1 to cause the nwid to not be used.
+This may be useful
+when the device is in promiscuous mode as one can watch for all
+packets and ignore nwid differences.
+.It machdep.wl_xmit_watch <milliseconds>
+This switch is not currently useful.
+.It machdep.wl_gather_snr <milliseconds>
+This switch is not currently useful.
+.Pp
+There is also a signal strength cache in the driver.
+It may be interrogated
+with
+.Xr wlconfig 8 .
+Incoming packets
+are checked for certain hardware radio-modem values including signal
+strength, silence, and quality, which range fro 0..63, 0..63, and 0..15
+respectively.
+Thus one can read out signal strenth values to see
+how close/far peer nodes are.
+The signal strength cache is indexed by
+sender MAC address.
+There are two sysctls that change how it filters packets.
+Both are on
+by default.
+.It machdep.wl_wlcache_mcastonly <0 | 1>
+By default this switch is on.
+It forces the cache to filter out
+unicast packets.
+Only broadcast or multicast packets are accepted.
+.It machdep.wl_wlcache_iponly <0 | 1>
+By default this switch is on.
+It forces the driver to discard non-IP
+packets and also stores the IP src address.
+ARP packets are ignored,
+as are any other network protocol barring IPv4 packets.
+.El
+.Sh CAVEATS
+The 82586 has numerous defects.
+It may experience transmit-side
+errors when modern faster cpus send packets at it faster than it can handle.
+The driver (and probably the chip) does not support an all multicast mode.
+As a result, it can be used with applications like
+.Xr mrouted 8 Pq Pa ports/net/mrouted ,
+but it must go into promiscuous mode for that to work.
+The driver
+is slow to change modes from "normal" to promiscuous mode, presumably
+due to delays in the configuration code.
+.Sh SEE ALSO
+.Xr sysctl 8 ,
+.Xr wlconfig 8
+.Pp
+.Pa http://www.wavelan.com
+.Sh HISTORY
+The
+.Nm
+driver was written by
+.An Anders Klemets
+(thousands of years ago?) and
+appears to be based on an even older Intel 82586 driver.
+The 82586
+controller was one of the first (if not the first?) integrated lan
+controller on the block.
+That does not mean it was the best either.
+Anders ported and or created a driver for the ISA wavelan and PCCARD
+wavelan system too (wlp).
+.An Robert T. Morris, Jr.
+ported the Mach drivers to BSDI.
+.An Jim Binkley
+ported them to
+.Fx 2.1 .
+.An Michael Smith
+ported the wl driver only to 2.2.2.
+Jim and Michael have been
+maintaining them.
+The current state of the driver is NOT ANYONE'S
+FAULT.
+Thanks to
+.An Bernie Doehner
+and
+.An Robert Buaas
+for contributions.
+.Sh AUTHORS
+Too numerous to mention.
+See above.
diff --git a/share/man/man4/man4.powerpc/Makefile b/share/man/man4/man4.powerpc/Makefile
new file mode 100644
index 0000000..1aea0f0
--- /dev/null
+++ b/share/man/man4/man4.powerpc/Makefile
@@ -0,0 +1,9 @@
+# $FreeBSD$
+
+MAN= bm.4 \
+ pmu.4 \
+ powermac_nvram.4
+
+MANSUBDIR=/powerpc
+
+.include <bsd.prog.mk>
diff --git a/share/man/man4/man4.powerpc/bm.4 b/share/man/man4/man4.powerpc/bm.4
new file mode 100644
index 0000000..4ad8202
--- /dev/null
+++ b/share/man/man4/man4.powerpc/bm.4
@@ -0,0 +1,89 @@
+.\"-
+.\" Copyright (c) 2008 Nathan Whitehorn <nwhitehorn@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 ``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$
+.\"
+.Dd July 3, 2008
+.Dt BM 4
+.Os
+.Sh NAME
+.Nm bm
+.Nd BMAC Ethernet device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device bm"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_bm_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the BMac ethernet hardware found mostly in
+G3-based Apple hardware.
+It is a close relative of the Sun HME controller found in contemporary
+Sun workstations.
+.Sh HARDWARE
+.Pp
+Chips supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Apple BMAC Onboard Ethernet
+.It
+Apple BMAC+ Onboard Ethernet
+.El
+.Pp
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr hme 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver appeared in
+.Fx 8.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Nathan Whitehorn
+.Aq nwhitehorn@freebsd.org
+based on work by
+.An Peter Grehan
+.Aq grehan@freebsd.org .
diff --git a/share/man/man4/man4.powerpc/pmu.4 b/share/man/man4/man4.powerpc/pmu.4
new file mode 100644
index 0000000..4a876bb
--- /dev/null
+++ b/share/man/man4/man4.powerpc/pmu.4
@@ -0,0 +1,114 @@
+.\"-
+.\" Copyright (c) 2008 Nathan Whitehorn <nwhitehorn@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 ``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$
+.\"
+.Dd December 6, 2008
+.Dt PMU 4
+.Os
+.Sh NAME
+.Nm pmu
+.Nd Apple PMU99 Power Management Driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device adb"
+.Cd "device pmu"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Power Management Unit (PMU) found in Apple
+Core99 hardware. This includes late G3 laptops, all G4 machines, early G5
+desktops and all G5 XServes.
+.Ed
+.Pp
+The Apple PMU controller is a multi-purpose ASIC that provides power
+management and thermal control, as well as an ADB bus for the internal
+keyboard and mouse on laptops.
+.Sh HARDWARE
+.Pp
+Chips supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Apple KeyLargo PMU
+.It
+Apple K2-KeyLargo PMU
+.El
+.Pp
+.Sh SYSCTL VARIABLES
+The
+.Nm
+driver provides power management services in addition to an
+.Xr adb 4
+interface. The following sysctls can be used to control the
+power management behavior and to examine current system power and
+thermal conditions.
+.Bl -tag -width indent
+.It Va dev.pmu.%d.server_mode
+Restart after power failure behavior (1 causes system to reboot after power
+cut, 0 causes system to remain off).
+.It Va dev.pmu.%d.batteries.%d.present
+Indicates whether the relevant battery is inserted.
+.It Va dev.pmu.%d.batteries.%d.charging
+Indicates whether the battery is currently charging.
+.It Va dev.pmu.%d.batteries.%d.charge
+The current battery charge, in milliamp hours.
+.It Va dev.pmu.%d.batteries.%d.maxcharge
+The battery's self-reported maximum charge, in milliamp hours.
+.It Va dev.pmu.%d.batteries.%d.rate
+The current into the battery, in milliamps. While the battery is discharging,
+this will be negative.
+.It Va dev.pmu.%d.batteries.%d.voltage
+Battery voltage, in millivolts.
+.It Va dev.pmu.%d.batteries.%d.time
+Estimated time until full battery charge (or discharge), in minutes.
+.It Va dev.pmu.%d.batteries.%d.life
+Current fraction of the battery's maximum charge, in percent.
+.Sh SEE ALSO
+.Xr adb 4 ,
+.Xr acpi 4
+.Sh HISTORY
+The
+.Nm
+device driver appeared in
+.Nx 4.0 ,
+and then in
+.Fx 8.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Michael Lorenz
+.Aq macallan@NetBSD.org
+and ported to FreeBSD by
+.An Nathan Whitehorn
+.Aq nwhitehorn@freebsd.org .
diff --git a/share/man/man4/man4.powerpc/powermac_nvram.4 b/share/man/man4/man4.powerpc/powermac_nvram.4
new file mode 100644
index 0000000..0340422
--- /dev/null
+++ b/share/man/man4/man4.powerpc/powermac_nvram.4
@@ -0,0 +1,70 @@
+.\"-
+.\" Copyright (c) 2006 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 ``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$
+.\"
+.Dd August 1, 2006
+.Dt POWERMAC_NVRAM 4 powerpc
+.Os
+.Sh NAME
+.Nm powermac_nvram
+.Nd "non-volatile RAM"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device powermac_nvram"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+powermac_nvram_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to the Open Firmware configuration NVRAM
+available on the Apple PowerPC-based machines.
+.Sh SEE ALSO
+.Xr eeprom 8 ,
+.Xr nvram 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Maxim Sobolev Aq sobomax@FreeBSD.org .
+.Sh BUGS
+Currently, the
+.Nm
+driver only supports systems equipped with an AMD flash part and is only
+tested on Apple G4-based Mac Mini machines.
diff --git a/share/man/man4/man4.sparc64/Makefile b/share/man/man4/man4.sparc64/Makefile
new file mode 100644
index 0000000..06d99c0
--- /dev/null
+++ b/share/man/man4/man4.sparc64/Makefile
@@ -0,0 +1,22 @@
+# $FreeBSD$
+
+MAN= auxio.4 \
+ central.4 \
+ clkbrd.4 \
+ creator.4 \
+ ebus.4 \
+ eeprom.4 \
+ fhc.4 \
+ machfb.4 \
+ ofw_console.4 \
+ openfirm.4 \
+ openprom.4 \
+ rtc.4 \
+ sbus.4 \
+ snd_audiocs.4
+
+MLINKS= openfirm.4 openfirmware.4
+
+MANSUBDIR=/sparc64
+
+.include <bsd.prog.mk>
diff --git a/share/man/man4/man4.sparc64/auxio.4 b/share/man/man4/man4.sparc64/auxio.4
new file mode 100644
index 0000000..fb3cdbd
--- /dev/null
+++ b/share/man/man4/man4.sparc64/auxio.4
@@ -0,0 +1,80 @@
+.\"-
+.\" Copyright (c) 2004 Pyun YongHyeon
+.\" 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$
+.\"
+.Dd June 18, 2005
+.Dt AUXIO 4 sparc64
+.Os
+.Sh NAME
+.Nm auxio
+.Nd "Sun Auxiliary I/O"
+.Sh SYNOPSIS
+.Cd "device auxio"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the auxiliary I/O device found on the
+.Tn EBus
+and
+.Tn SBus
+busses of
+.Tn Sun UltraSPARC
+workstation and small server class systems.
+This device contains miscellaneous system controls,
+including the front panel LED.
+This LED can be made to blink by writing
+.Tn ASCII
+strings to the
+.Pa /dev/led/auxioled
+device.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/led/auxioled"
+.It Pa /dev/led/auxioled
+Auxiliary I/O device node
+.El
+.Sh SEE ALSO
+.Xr ebus 4 ,
+.Xr led 4 ,
+.Xr sbus 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Nx 1.5 .
+The first
+.Fx
+version to include it was
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Matthew R. Green
+and ported to
+.Fx
+by
+.An Pyun YongHyeon Aq yongari@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/central.4 b/share/man/man4/man4.sparc64/central.4
new file mode 100644
index 0000000..3fa09bd
--- /dev/null
+++ b/share/man/man4/man4.sparc64/central.4
@@ -0,0 +1,60 @@
+.\"-
+.\" Copyright (c) 2004 Jason L. Wright (jason@thought.net)
+.\" 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.
+.\"
+.\" from: OpenBSD: central.4,v 1.3 2004/09/24 07:03:47 miod Exp
+.\" $FreeBSD$
+.\"
+.Dd June 18, 2005
+.Dt CENTRAL 4 sparc64
+.Os
+.Sh NAME
+.Nm central
+.Nd "Central host controller and bus"
+.Sh SYNOPSIS
+.Cd "device central"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn Central
+host controller and bus found in
+.Tn Sun Enterprise xx00
+systems.
+It provides an attachment point for the main
+.Xr fhc 4
+.Tn FireHose
+controller used to control board level functions on the host.
+.Sh SEE ALSO
+.Xr fhc 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An "Jake Burkholder" Aq jake@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/clkbrd.4 b/share/man/man4/man4.sparc64/clkbrd.4
new file mode 100644
index 0000000..b6c0bb3
--- /dev/null
+++ b/share/man/man4/man4.sparc64/clkbrd.4
@@ -0,0 +1,88 @@
+.\"-
+.\" Copyright (c) 2004 Jason L. Wright (jason@thought.net)
+.\" 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.
+.\"
+.\" from: OpenBSD: clkbrd.4,v 1.2 2005/02/21 11:29:36 jmc Exp
+.\" $FreeBSD$
+.\"
+.Dd June 18, 2005
+.Dt CLKBRD 4 sparc64
+.Os
+.Sh NAME
+.Nm clkbrd
+.Nd "clock board"
+.Sh SYNOPSIS
+.Cd "device clkbrd"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the clock board found in
+.Tn Sun Enterprise xx00
+systems.
+The clock board has three status LEDs labeled
+.Dq Li Power ,
+.Dq Li Failure
+and
+.Dq Li Cycling .
+These LEDs are also mirrored on the main front panel.
+The
+.Dq Li Cycling
+LED can be made to blink by writing
+.Tn ASCII
+strings to the
+.Pa /dev/led/clockboard
+device.
+.Pp
+On attach the
+.Nm
+driver also prints out the number of board slots the chassis provides.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/led/clockboard"
+.It Pa /dev/led/clockboard
+clock board LED device node
+.El
+.Sh CAVEATS
+Hardware management functionality is not implemented.
+.Sh SEE ALSO
+.Xr fhc 4 ,
+.Xr led 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 3.7 .
+The first
+.Fx
+version to include it was
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Jason L. Wright"
+and ported to
+.Fx
+by
+.An "Marius Strobl" Aq marius@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/creator.4 b/share/man/man4/man4.sparc64/creator.4
new file mode 100644
index 0000000..5f6ab23
--- /dev/null
+++ b/share/man/man4/man4.sparc64/creator.4
@@ -0,0 +1,88 @@
+.\"-
+.\" Copyright (c) 2002 Jason L. Wright (jason@thought.net)
+.\" 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.
+.\"
+.\" from: OpenBSD: creator.4,v 1.20 2005/03/05 01:48:59 miod Exp
+.\" $FreeBSD$
+.\"
+.Dd June 18, 2005
+.Dt CREATOR 4 sparc64
+.Os
+.Sh NAME
+.Nm creator
+.Nd "accelerated color frame buffer"
+.Sh SYNOPSIS
+.Cd "device creator"
+.Sh DESCRIPTION
+The
+.Tn Sun Creator ,
+.Tn Sun Creator3D
+and
+.Tn Sun Elite3D
+cards are color frame buffers with graphics acceleration available for
+.Tn UltraSPARC
+workstations with
+.Tn UPA
+slots.
+The
+.Nm
+driver interfaces those frame buffers with the
+.Xr syscons 4
+console driver.
+It also provides separate character devices
+.Pa /dev/fb*
+allowing to
+.Xr mmap 2
+these frame buffers
+(used by X11).
+.Sh FILES
+.Bl -tag -width ".Pa /dev/fb*"
+.It Pa /dev/fb*
+.Nm
+device nodes
+.El
+.Sh CAVEATS
+Font loading and mode switching are not implemented.
+.Sh SEE ALSO
+.Xr machfb 4 ,
+.Xr syscons 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 3.2 .
+The first
+.Fx
+version to include it was
+.Fx 5.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Jake Burkholder" Aq jake@FreeBSD.org
+roughly based on the
+.Ox
+driver written by
+.An "Jason L. Wright" .
diff --git a/share/man/man4/man4.sparc64/ebus.4 b/share/man/man4/man4.sparc64/ebus.4
new file mode 100644
index 0000000..d61cc2b
--- /dev/null
+++ b/share/man/man4/man4.sparc64/ebus.4
@@ -0,0 +1,122 @@
+.\"-
+.\" Copyright (c) 1999 Matthew R. Green
+.\" 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.
+.\"
+.\" 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.
+.\"
+.\" from: OpenBSD: ebus.4,v 1.6 2004/09/23 18:28:51 jason Exp
+.\" from: NetBSD: ebus.4,v 1.3 2002/03/13 21:42:20 wiz Exp
+.\" $FreeBSD$
+.\"
+.Dd September 1, 2006
+.Dt EBUS 4 sparc64
+.Os
+.Sh NAME
+.Nm ebus
+.Nd "EBus controller and bus"
+.Sh SYNOPSIS
+.Cd "device ebus"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the EBus controller and bus found in most
+.Tn PCI
+based
+.Tn UltraSPARC
+systems.
+The
+.Tn EBus
+bus is designed to provide the ability to put
+.Tn ISA
+and traditional
+.Tn Intel
+style peripherals in a
+.Tn SPARC
+based system with a minimal amount of glue logic.
+In
+.Tn UltraSPARC
+systems it is implemented with either a PCIO or a PCIO-2 chip from
+.Tn Sun Microelectronics .
+The PCIO chip also implements a
+.Xr hme 4
+compatible
+.Tn PCI
+network device.
+The PCIO-2 chip also implements a
+.Xr fwohci 4
+compatible
+.Tn IEEE
+.Tn 1394
+.Tn OHCI
+interface, a
+.Xr gem 4
+compatible
+.Tn PCI
+network device and an
+.Xr ohci 4
+compatible
+.Tn OHCI
+.Tn USB
+controller.
+The
+.Tn EBus
+has four DMA channels,
+similar to the DMA seen in the
+.Xr esp 4
+.Tn SCSI
+DMA.
+.Sh SEE ALSO
+.Xr atkbdc 4 ,
+.Xr auxio 4 ,
+.Xr eeprom 4 ,
+.Xr rtc 4 ,
+.Xr scc 4 ,
+.Xr snd_audiocs 4 ,
+.Xr uart 4
+.Rs
+.%Q "Sun Microelectronics"
+.%T "Peripheral Component Interconnect Input Output Controller"
+.%V "Part No.: 802-7837-01"
+.%D "March 1997"
+.%O "http://www.sun.com/oem/products/manuals/802-7837.pdf"
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Nx 1.5 .
+The first
+.Fx
+version to include it was
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Matthew R. Green"
+and ported to
+.Fx
+by
+.An "Thomas Moestl" Aq tmm@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/eeprom.4 b/share/man/man4/man4.sparc64/eeprom.4
new file mode 100644
index 0000000..58af4e8
--- /dev/null
+++ b/share/man/man4/man4.sparc64/eeprom.4
@@ -0,0 +1,130 @@
+.\"-
+.\" Copyright (c) 2004 Jason L. Wright (jason@thought.net)
+.\" Copyright (c) 2005 Marius Strobl <marius@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 ``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.
+.\"
+.\" from: OpenBSD: clock.4,v 1.3 2004/09/24 07:04:15 miod Exp
+.\" $FreeBSD$
+.\"
+.Dd February 15, 2006
+.Dt EEPROM 4 sparc64
+.Os
+.Sh NAME
+.Nm eeprom
+.Nd "non-volatile RAM / real time clock"
+.Sh SYNOPSIS
+.Cd "device genclock"
+.Cd "device mk48txx"
+.Cd "device eeprom"
+.Sh DESCRIPTION
+The
+.Nm
+driver is a front-end for the machine-independent
+.Tn Mostek
+MK48Txx driver.
+The
+.Tn Mostek
+MK48Txx driver provides access to the real time clock and the watchdog part
+of the supported chips to
+.Fx
+by interfacing them with the generic clock code and
+.Xr watchdog 4
+respectively.
+.Pp
+.Tn Mostek
+MK48Txx chips providing real time clock functionality are found on the
+.Tn EBus ,
+.Tn FireHose
+and
+.Tn SBus
+busses of
+.Tn UltraSPARC
+systems.
+On systems where the hostid is stored in the NVRAM part of the
+.Tn Mostek
+MK48Txx chip the
+.Nm
+driver prints out the hostid on attach.
+.Pp
+On
+.Tn Sun Enterprise
+250 and 450 systems additionally the watchdog functionality of the
+.Tn Mostek
+MK48Txx chips is available.
+The
+.Nm
+driver automatically registers the watchdog part with
+.Xr watchdog 4
+on these systems.
+Thus it can be used with
+.Xr watchdog 8
+and
+.Xr watchdogd 8 .
+The timeout interval supported by the
+.Tn Mostek
+MK48Txx watchdog is 1/16 second to 128 seconds.
+In the
+.Tn Sun Enterprise
+machines a system reset is triggered when the
+.Tn Mostek
+MK48Txx watchdog times out regardless of what the
+.Tn Open Firmware
+environment variable
+.Va watchdog-reboot?
+is set to.
+.Sh DIAGNOSTICS
+The following driver specific error message may be reported:
+.Bl -diag
+.It "mk48txx_attach: battery low"
+The device signals that its battery is low and should be replaced.
+The
+.Nm
+driver refused to attach the device in this case as the time in the real time
+clock is probably invalid.
+This gives the generic clock code the chance to use another device as the
+system real time clock that otherwise would not have been chosen.
+.El
+.Sh SEE ALSO
+.Xr ebus 4 ,
+.Xr fhc 4 ,
+.Xr rtc 4 ,
+.Xr sbus 4 ,
+.Xr watchdog 4 ,
+.Xr watchdog 8 ,
+.Xr watchdogd 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Thomas Moestl" Aq tmm@FreeBSD.org
+based on the
+.Nx
+sparc64 clock code written by
+.An "Paul Kranenburg" .
diff --git a/share/man/man4/man4.sparc64/fhc.4 b/share/man/man4/man4.sparc64/fhc.4
new file mode 100644
index 0000000..3787370
--- /dev/null
+++ b/share/man/man4/man4.sparc64/fhc.4
@@ -0,0 +1,82 @@
+.\"-
+.\" Copyright (c) 2004 Jason L. Wright (jason@thought.net)
+.\" 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.
+.\"
+.\" from: OpenBSD: fhc.4,v 1.5 2004/09/28 21:42:59 jmc Exp
+.\" $FreeBSD$
+.\"
+.Dd June 18, 2005
+.Dt FHC 4 sparc64
+.Os
+.Sh NAME
+.Nm fhc
+.Nd "FireHose controller and bus"
+.Sh SYNOPSIS
+.Cd "device fhc"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn FireHose
+controllers and busses found in
+.Tn Sun Enterprise xx00
+systems.
+These controllers are also used for board level functions on these systems.
+Each board has three status LEDs labeled
+.Dq Li Power ,
+.Dq Li Failure
+and
+.Dq Li Cycling .
+The
+.Dq Li Cycling
+LEDs can be made to blink by writing
+.Tn ASCII
+strings to the
+.Pa /dev/led/board Ns Ar N
+devices where
+.Ar N
+represents the physical slot number of the board.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/led/board Ns Ar N"
+.It Pa /dev/led/board Ns Ar N
+board
+.Ar N
+LED device node
+.El
+.Sh SEE ALSO
+.Xr central 4 ,
+.Xr clkbrd 4 ,
+.Xr eeprom 4 ,
+.Xr led 4 ,
+.Xr uart 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An "Jake Burkholder" Aq jake@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/machfb.4 b/share/man/man4/man4.sparc64/machfb.4
new file mode 100644
index 0000000..7d0af11
--- /dev/null
+++ b/share/man/man4/man4.sparc64/machfb.4
@@ -0,0 +1,180 @@
+.\"-
+.\" Copyright (c) 2002 Jason L. Wright (jason@thought.net)
+.\" Copyright (c) 2005, 2006 Marius Strobl <marius@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 ``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.
+.\"
+.\" from: OpenBSD: creator.4,v 1.20 2005/03/05 01:48:59 miod Exp
+.\" $FreeBSD$
+.\"
+.Dd September 2, 2006
+.Dt MACHFB 4 sparc64
+.Os
+.Sh NAME
+.Nm machfb
+.Nd "accelerated color frame buffer"
+.Sh SYNOPSIS
+.Cd "device machfb"
+.Sh DESCRIPTION
+The
+.Tn ATI Mach64
+family of chips are color frame buffers with graphics acceleration.
+The
+.Nm
+driver interfaces those frame buffers with the
+.Xr syscons 4
+console driver.
+.Pp
+.Tn ATI Mach64
+chips are very common as low-end graphics chips in
+.Tn PCI
+based
+.Tn UltraSPARC
+systems.
+They are found on-board in
+.Tn Sun Blade 100 ,
+.Tn Sun Blade 150 ,
+.Tn Sun Ultra 5
+and
+.Tn Sun Ultra 10
+as well as on
+.Tn Sun
+OEM mainboards like the
+.Tn Sun AXe .
+They are also used on add-on cards like the
+.Tn Sun PGX
+and
+.Tn Sun PGX64 .
+.Pp
+The
+.Nm
+driver requires the chip which it is supposed to drive to be also
+supported by the
+.Tn Open Firmware ,
+either by a built-in FCode driver package of the on-board firmware
+or by additional FCode on the add-on card.
+As a matter of course
+.Tn UltraSPARC
+systems with an on-board
+.Tn ATI Mach64 chip
+also have a built-in FCode driver package for this chip.
+There are also mainboards like the
+.Tn Sun AX1105
+and
+.Tn Sun AXi
+boards however,
+which have built-in FCode for certain
+.Tn ATI Mach64
+chips although they are not equipped with an on-board one.
+Mainboards with built-in FCode for certain
+.Tn ATI Mach64
+chips can be used with any add-on card which is based on one of those
+chips,
+including cards which are equipped with x86 firmware and intended for
+use in PCs.
+Otherwise an add-on card which comes with its own FCode like the
+.Tn Sun PGX
+or
+.Tn Sun PGX64
+has to be used.
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the following chips:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn ATI 3D Rage II+
+.It
+.Tn ATI 3D Rage IIC
+.It
+.Tn ATI 3D Rage I/II
+.It
+.Tn ATI 3D Rage LT
+.It
+.Tn ATI 3D Rage LT Pro
+.It
+.Tn ATI 3D Rage Pro
+.It
+.Tn ATI 3D Rage Pro Turbo
+.It
+.Tn ATI Mach64 CT
+.It
+.Tn ATI Mach64 VT
+.It
+.Tn ATI Mach64 VT4
+.It
+.Tn ATI Mach64 VTB
+.It
+.Tn ATI Rage L Mobility
+.It
+.Tn ATI Rage Mobility
+.It
+.Tn ATI Rage Mobility M1
+.It
+.Tn ATI Rage Mobility M3
+.It
+.Tn ATI Rage XC
+.It
+.Tn ATI Rage XL
+.El
+.Pp
+The
+following add-on cards are known to work with the
+.Nm
+driver at this time:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn ATI 3D Charger PCI
+.It
+.Tn Sun PGX 8-Bit Color Frame Buffer
+(part no.\& 370-2256)
+.It
+.Tn Sun PGX64 8/24-Bit Color Frame Buffer
+(part no.\& 370-4362)
+.El
+.Sh CAVEATS
+Font loading and mode switching are not implemented.
+.Sh SEE ALSO
+.Xr creator 4 ,
+.Xr syscons 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Nx 2.0 .
+The first
+.Fx
+version to include it was
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Marius Strobl" Aq marius@FreeBSD.org
+based on the
+.Nx
+driver written by
+.An "Bang Jun-Young" .
diff --git a/share/man/man4/man4.sparc64/ofw_console.4 b/share/man/man4/man4.sparc64/ofw_console.4
new file mode 100644
index 0000000..8ae1c0c
--- /dev/null
+++ b/share/man/man4/man4.sparc64/ofw_console.4
@@ -0,0 +1,126 @@
+.\"-
+.\" Copyright (c) 2001 Miodrag Vallat.
+.\" Copyright (c) 2005 Marius Strobl <marius@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. Redistribution 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.
+.\"
+.\" from: OpenBSD: pcons.4,v 1.4 2003/06/02 16:16:26 miod Exp
+.\" $FreeBSD$
+.\"
+.Dd June 18, 2005
+.Dt OFW_CONSOLE 4 sparc64
+.Os
+.Sh NAME
+.Nm ofw_console
+.Nd "Open Firmware console"
+.Sh SYNOPSIS
+.Cd "device ofw_console"
+.Cd "options OFWCONS_POLL_HZ=N"
+.Pp
+.Cd "options KDB"
+.Cd "options DDB"
+.Cd "options ALT_BREAK_TO_DEBUGGER"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a simple text console,
+using the Open Firmware services for input and output.
+It will use the Open Firmware console devices set via the
+.Va input-device
+and
+.Va output-device
+variables.
+.Pp
+This driver is deprecated and only provided as a fallback console mechanism
+if the real console hardware can not be driven by
+.Fx .
+.Pp
+In case the
+.Nm
+console appears to work too slowly, its responsiveness probably can be improved
+by including
+.Cd "options OFWCONS_POLL_HZ=N" .
+When omitted,
+.Dv OFWCONS_POLL_HZ
+defaults to 4.
+For example, on
+.Tn Sun Ultra 2
+a value of 20 or higher works best.
+Too high values, on the other hand, can cause
+.Nm
+to unnecessarily consume CPU.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/keyboard" -compact
+.It Pa /dev/console
+.It Pa /dev/keyboard
+terminal input device in case the console input device is the keyboard
+.It Pa /dev/screen
+terminal output device in case the console output device is the screen
+.It Pa /dev/tty[a-z]
+terminal device in case both the console input and output device is tty[a-z]
+.El
+.Sh CAVEATS
+Since the Open Firmware will handle BREAK
+(or Stop-A)
+sequences before
+.Nm ,
+the preferred way to enter
+.Xr ddb 4
+when using
+.Nm
+is to include
+.Cd "options ALT_BREAK_TO_DEBUGGER"
+in a ddb-enabled kernel, and enter the alternate BREAK sequence
+(RETURN TILDE CTRL-b).
+.Sh SEE ALSO
+.Xr creator 4 ,
+.Xr machfb 4 ,
+.Xr syscons 4 ,
+.Xr uart 4 ,
+.Xr eeprom 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An "Benno Rice" Aq benno@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+driver
+is not a real
+.Xr tty 4
+driver and is not MPSAFE.
+The
+.Nm
+driver also does not attach to the hardware resources it actually talks to.
+Therefore it cannot be included in the kernel together with real console
+hardware drivers
+like
+.Xr creator 4 ,
+.Xr machfb 4
+and
+.Xr uart 4 .
diff --git a/share/man/man4/man4.sparc64/openfirm.4 b/share/man/man4/man4.sparc64/openfirm.4
new file mode 100644
index 0000000..686fe86
--- /dev/null
+++ b/share/man/man4/man4.sparc64/openfirm.4
@@ -0,0 +1,300 @@
+.\"-
+.\" Copyright (c) 1992, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This software was developed by the Computer Systems Engineering group
+.\" at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+.\" contributed to Berkeley.
+.\"
+.\" 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. 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.
+.\"
+.\" from: @(#)openprom.4 8.1 (Berkeley) 6/5/93
+.\" from: OpenBSD: openprom.4,v 1.9 2004/03/22 22:07:21 miod Exp
+.\"
+.\"-
+.\" Copyright (c) 2005 Marius Strobl <marius@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 ``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$
+.\"
+.Dd September 1, 2006
+.Dt OPENFIRM 4 sparc64
+.Os
+.Sh NAME
+.Nm openfirm
+.Nd "Open Firmware interface"
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/ioctl.h
+.In dev/ofw/openfirmio.h
+.Sh DESCRIPTION
+The
+.Pa /dev/openfirm
+device is an interface to the
+.Tn Open Firmware
+device tree.
+This interface is similar to the
+.Tn SunOS /
+.Tn Solaris
+compatible
+.Xr openprom 4
+interface and highly stylized.
+It uses
+.Xr ioctl 2
+calls for all operations.
+These calls refer to the nodes in the
+.Tn Open Firmware
+device tree.
+The nodes are represented by package handles,
+which are simply integer values describing data areas.
+Occasionally a package handle of 0 may be used or returned instead,
+as described below.
+.Pp
+The calls that only take and/or return the package handle of a node
+use a pointer to a
+.Vt phandle_t
+for this purpose.
+The others use a pointer to a
+.Vt "struct ofiocdesc"
+descriptor,
+which has the following definition:
+.Bd -literal
+struct ofiocdesc {
+ phandle_t of_nodeid;
+ int of_namelen;
+ const char *of_name;
+ int of_buflen;
+ char *of_buf;
+};
+.Ed
+.Pp
+The
+.Va of_nodeid
+member is the package handle of the node that is passed in or returned.
+Strings are passed in via the
+.Va of_name
+member of
+.Va of_namelen
+length.
+The maximum accepted length of
+.Va of_name
+is
+.Dv OFIOCMAXNAME .
+The
+.Va of_buf
+member is used to return strings except for the
+.Dv OFIOCSET
+call where it is also used to pass in a string.
+In the latter case the maximum accepted length of
+.Va of_buf
+is
+.Dv OFIOCMAXVALUE .
+Generally,
+.Va of_buf
+works in a value-result fashion.
+At entry to the
+.Xr ioctl 2
+call,
+.Va of_buflen
+is expected to reflect the buffer size.
+On return,
+.Va of_buflen
+is updated to reflect the buffer contents.
+.Pp
+The following
+.Xr ioctl 2
+calls are supported:
+.Bl -tag -width ".Dv OFIOCGETOPTNODE"
+.It Dv OFIOCGETOPTNODE
+Uses a
+.Vt phandle_t .
+Takes nothing and returns the package handle of the
+.Pa /options
+node.
+.It Dv OFIOCGETNEXT
+Uses a
+.Vt phandle_t .
+Takes the package handle of a node and returns the package handle of the next
+node in the
+.Tn Open Firmware
+device tree.
+The node following the last node has a package handle of 0.
+The node following the node with the package handle of 0 is the first node.
+.It Dv OFIOCGETCHILD
+Uses a
+.Vt phandle_t .
+Takes the package handle of a node and returns the package handle of the first
+child of that node.
+This child may have siblings.
+These can be determined by using
+.Dv OFIOCGETNEXT .
+If the node does not have a child,
+a package handle of 0 is returned.
+.It Dv OFIOCGET
+Uses a
+.Vt "struct ofiocdesc" .
+Takes the package handle of a node and the name of a property.
+Returns the property value and its length.
+If no such property is associated with that node,
+the length of the value is set to \-1.
+If the named property exists but has no value,
+the length of the value is set to 0.
+.It Dv OFIOCGETPROPLEN
+Uses a
+.Vt "struct ofiocdesc" .
+Takes the package handle of a node and the name of a property.
+Returns the length of the property value.
+This call is the same as
+.Dv OFIOCGET
+except that only the length of the property value is returned.
+It can be used to determine whether a node has a particular property or whether
+a property has a value without the need to provide memory for storing the value.
+.It Dv OFIOCSET
+Uses a
+.Vt "struct ofiocdesc" .
+Takes the package handle of a node,
+the name of a property and a property value.
+Returns the property value and the length that actually have been written.
+The
+.Tn Open Firmware
+may choose to truncate the value if it is too long or write a valid value
+instead if the given value is invalid for the particular property.
+Therefore the returned value should be checked.
+The
+.Tn Open Firmware
+may also completely refuse to write the given value to the property.
+In this case
+.Er EINVAL
+is returned.
+.It Dv OFIOCNEXTPROP
+Uses a
+.Vt "struct ofiocdesc" .
+Takes the package handle of a node and the name of a property.
+Returns the name and the length of the next property of the node.
+If the property referenced by the given name is the last property of the node,
+.Er ENOENT
+is returned.
+.It Dv OFIOCFINDDEVICE
+Uses a
+.Vt "struct ofiocdesc" .
+Takes the name or alias name of a device node.
+Returns package handle of the node.
+If no matching node is found,
+.Er ENOENT
+is returned.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/openfirm"
+.It Pa /dev/openfirm
+Open Firmware interface node
+.El
+.Sh ERRORS
+The following may result in rejection of an operation:
+.Bl -tag -width Er
+.It Bq Er EBADF
+The requested operation requires permissions not specified at the call to
+.Fn open .
+.It Bq Er EINVAL
+The given package handle is not 0 and does not correspond to any valid node,
+or the given package handle is 0 where 0 is not allowed.
+.It Bq Er ENAMETOOLONG
+The given name or value exceeds the maximum allowed length of
+.Dv OFIOCMAXNAME
+and
+.Dv OFIOCMAXVALUE
+bytes respectively.
+.It Bq Er ENOMEM
+The kernel could not allocate memory to copy in data from user-space or to
+retrieve data from the
+.Tn Open Firmware .
+.El
+.Sh CAVEATS
+Due to limitations within
+.Tn Open Firmware
+itself,
+these functions run at elevated priority and may adversely affect system
+performance.
+.Pp
+For at least the
+.Pa /options
+node the property value passed in to the
+.Dv OFIOCSET
+call has to be null-terminated and the value length passed in has to include
+the terminating
+.Ql \e0 .
+However, as with the
+.Dv OFIOCGET
+call,
+the returned value length does not include the terminating
+.Ql \e0 .
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr openprom 4 ,
+.Xr eeprom 8 ,
+.Xr ofwdump 8
+.Rs
+.%Q "IEEE Standards Organization"
+.%B "IEEE Std 1275-1994:"
+.%B "IEEE Standard for Boot Firmware (Initialization Configuration) Firmware:"
+.%B Core Requirements and Practices"
+.%O ISBN 1-55937-426-8
+.Re
+.Sh HISTORY
+The
+.Nm
+interface first appeared in
+.Nx 1.6 .
+The first
+.Fx
+version to include it was
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+interface was ported to
+.Fx
+by
+.An "Thomas Moestl" Aq tmm@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/openprom.4 b/share/man/man4/man4.sparc64/openprom.4
new file mode 100644
index 0000000..e66a8d8
--- /dev/null
+++ b/share/man/man4/man4.sparc64/openprom.4
@@ -0,0 +1,240 @@
+.\"-
+.\" Copyright (c) 1992, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This software was developed by the Computer Systems Engineering group
+.\" at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+.\" contributed to Berkeley.
+.\"
+.\" 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. 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.
+.\"
+.\" from: @(#)openprom.4 8.1 (Berkeley) 6/5/93
+.\" from: OpenBSD: openprom.4,v 1.9 2004/03/22 22:07:21 miod Exp
+.\"
+.\"-
+.\" Copyright (c) 2005 Marius Strobl <marius@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 ``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$
+.\"
+.Dd June 18, 2005
+.Dt OPENPROM 4 sparc64
+.Os
+.Sh NAME
+.Nm openprom
+.Nd "OPENPROM interface"
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/ioctl.h
+.In dev/ofw/openpromio.h
+.Sh DESCRIPTION
+The
+.Pa /dev/openfirm
+device is a
+.Tn SunOS /
+.Tn Solaris
+compatible interface to the
+.Tn Open Firmware
+device tree.
+This interface is similar to the
+.Xr openprom 4
+interface.
+It uses
+.Xr ioctl 2
+calls for all operations.
+These calls refer to the nodes in the
+.Tn Open Firmware
+device tree.
+However,
+.Fx
+only implements a subset of the
+.Xr ioctl 2
+calls
+.Tn SunOS /
+.Tn Solaris
+does.
+The nodes are represented by integer values,
+which are simply describing data areas.
+Occasionally the number 0 may be used or returned instead,
+as described below.
+.Pp
+All calls use a pointer to a
+.Vt "struct openpromio"
+descriptor,
+which has the following definition:
+.Bd -literal
+struct openpromio {
+ uint32_t oprom_size;
+ char oprom_array[];
+};
+.Ed
+.Pp
+The
+.Va oprom_size
+member refers to the size of
+.Va oprom_array .
+The
+.Va oprom_array
+member actually works like a union.
+Depending on the
+.Xr ioctl 2
+call and whether the
+.Vt "struct openpromio"
+is used to pass in or return data,
+.Va oprom_array
+either contains an integer referring to a node or a string referring to a
+property name or property value.
+The maximum size of
+.Va oprom_array
+is
+.Dv OPROMMAXPARAM .
+.Pp
+The following
+.Xr ioctl 2
+calls are currently implemented:
+.Bl -tag -width ".Dv OPROMGETPROP"
+.It Dv OPROMNEXT
+Takes the number of a node and returns the number of the next node in the
+.Tn Open Firmware
+device tree.
+The node following the last node is number 0.
+The node following number 0 is the first node.
+.It Dv OPROMCHILD
+Takes the number of a node and returns the number of the first child of that
+node.
+This child may have siblings.
+These can be determined by using
+.Dv OPROMNEXT .
+If the node does not have a child,
+0 is returned.
+.It Dv OPROMGETPROP
+Takes the name of a property.
+Returns the property value.
+The
+.Dv OPROMGETPROP
+call refers to the node previously returned by either the
+.Dv OPROMNEXT
+or the
+.Dv OPROMCHILD
+call,
+depending on which one was invoked last.
+If the property referenced by the given name is not associated with that node,
+.Er EINVAL
+is returned.
+If the named property exists but has no value,
+an empty string is returned.
+.It Dv OPROMNXTPROP
+Takes the name of a property.
+Returns the name of the next property of the node.
+As with the
+.Dv OPROMGETPROP
+call,
+the
+.Dv OPROMNXTPROP
+call refers to the node previously returned by either the
+.Dv OPROMNEXT
+or the
+.Dv OPROMCHILD
+call.
+If the property referenced by the given name is the last property of the node,
+an empty string is returned.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/openprom"
+.It Pa /dev/openprom
+OPENPROM interface node
+.El
+.Sh ERRORS
+The following may result in rejection of an operation:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+The
+.Pa /dev/openprom
+node is already opened.
+.It Bq Er EINVAL
+The given node number is not 0 and does not correspond to any valid node,
+or the given node number is 0 where 0 is not allowed,
+or the given size value is invalid,
+or the given property name exceeds the maximum allowed length of
+.Dv OPROMMAXPARAM
+bytes.
+.It Bq Er ENOMEM
+The kernel could not allocate memory to copy in data from user-space or to
+retrieve data from the
+.Tn Open Firmware .
+.El
+.Sh CAVEATS
+Due to limitations within
+.Tn Open Firmware
+itself,
+these functions run at elevated priority and may adversely affect system
+performance.
+.Pp
+The
+.Nm
+interface exists entirely for compatibility with software like X11,
+and only the features that are actually needed for that are implemented.
+The interface sucks too much to actually use,
+new code should use the
+.Xr openfirm 4
+interface instead.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr openfirm 4 ,
+.Xr eeprom 8 ,
+.Xr ofwdump 8
+.Sh HISTORY
+The first
+.Fx
+version to include the
+.Nm
+interface was
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+interface was written by
+.An "Jake Burkholder" Aq jake@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/rtc.4 b/share/man/man4/man4.sparc64/rtc.4
new file mode 100644
index 0000000..9117bf3
--- /dev/null
+++ b/share/man/man4/man4.sparc64/rtc.4
@@ -0,0 +1,88 @@
+.\"-
+.\" Copyright (c) 2004 Jason L. Wright (jason@thought.net)
+.\" Copyright (c) 2005 Marius Strobl <marius@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 ``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.
+.\"
+.\" from: OpenBSD: clock.4,v 1.3 2004/09/24 07:04:15 miod Exp
+.\" $FreeBSD$
+.\"
+.Dd June 18, 2005
+.Dt RTC 4 sparc64
+.Os
+.Sh NAME
+.Nm rtc
+.Nd "non-volatile RAM / real time clock"
+.Sh SYNOPSIS
+.Cd "device genclock"
+.Cd "device mc146818"
+.Cd "device rtc"
+.Sh DESCRIPTION
+The
+.Nm
+driver is a front-end for the machine-independent
+.Tn Motorola
+MC146818 and compatible clocks driver.
+The
+.Tn Motorola
+MC146818 and compatible clocks driver provides access to the real time clock
+part of the chips it supports to
+.Fx
+by interfacing with the generic clock code.
+.Pp
+.Tn Dallas /
+.Tn Maxim Semiconductor
+DS1287 chips
+(those are compatible to the
+.Tn Motorola
+MC146818 clocks)
+are found on the ISA bus of
+.Tn UltraSPARC II
+systems and the EBus bus of
+.Tn UltraSPARC III
+systems.
+.Sh DIAGNOSTICS
+The following driver specific error message may be reported:
+.Bl -diag
+.It "mc146818_attach_attach: battery low"
+The device signals that its battery is low and should be replaced.
+The
+.Nm
+driver refused to attach the device in this case as the time in the real time
+clock is probably invalid.
+This gives the generic clock code the chance to use another device as the
+system real time clock that otherwise would not have been chosen.
+.El
+.Sh SEE ALSO
+.Xr ebus 4 ,
+.Xr eeprom 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.4 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An "Marius Strobl" Aq marius@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/sbus.4 b/share/man/man4/man4.sparc64/sbus.4
new file mode 100644
index 0000000..d85c85c
--- /dev/null
+++ b/share/man/man4/man4.sparc64/sbus.4
@@ -0,0 +1,86 @@
+.\"-
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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.
+.\"
+.\" from: OpenBSD: sbus.4,v 1.27 2005/03/05 01:44:48 miod Exp
+.\" from: NetBSD: sbus.4,v 1.5 2002/01/21 17:54:10 wiz Exp
+.\" $FreeBSD$
+.\"
+.Dd September 1, 2006
+.Dt SBUS 4 sparc64
+.Os
+.Sh NAME
+.Nm sbus
+.Nd SBus controller and bus
+.Sh SYNOPSIS
+.Cd "device sbus"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the SBus controllers and busses found in older
+.Tn UltraSPARC
+workstations and small to medium server class systems.
+The SBus is an I/O interconnect bus supporting both on-board peripherals and
+extension boards.
+The SBus specifications define the bus protocol as well as the electrical and
+mechanical properties of the extension slots.
+.Sh SEE ALSO
+.Xr auxio 4 ,
+.Xr eeprom 4 ,
+.Xr esp 4 ,
+.Xr hme 4 ,
+.Xr isp 4 ,
+.Xr le 4 ,
+.Xr scc 4 ,
+.Xr snd_audiocs 4 ,
+.Xr uart 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Nx 1.3 .
+The first
+.Fx
+version to include it was
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An "Paul Kranenburg"
+and ported to
+.Fx
+by
+.An "Thomas Moestl" Aq tmm@FreeBSD.org .
diff --git a/share/man/man4/man4.sparc64/snd_audiocs.4 b/share/man/man4/man4.sparc64/snd_audiocs.4
new file mode 100644
index 0000000..5fcc44a
--- /dev/null
+++ b/share/man/man4/man4.sparc64/snd_audiocs.4
@@ -0,0 +1,88 @@
+.\"-
+.\" Copyright (c) 2004 Pyun YongHyeon
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_AUDIOCS 4 sparc64
+.Os
+.Sh NAME
+.Nm snd_audiocs
+.Nd "Crystal Semiconductor CS4231 audio device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_audiocs"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_audiocs_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the CS4231 audio device.
+Speaker output is enabled by default.
+SBus based
+.Tn UltraSPARC
+workstations have no internal CD-ROM audio input capability.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+CS4231 on SBus based UltraSPARC
+.It
+CS4231 on PCI/EBus based UltraSPARC
+.El
+.Sh SEE ALSO
+.Xr ebus 4 ,
+.Xr sbus 4 ,
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was ported by
+.An Pyun YongHyeon
+.Aq yongari@FreeBSD.org
+from the
+.Ox
+driver written by
+.An Jason L. Wright .
diff --git a/share/man/man4/md.4 b/share/man/man4/md.4
new file mode 100644
index 0000000..ab0f569
--- /dev/null
+++ b/share/man/man4/md.4
@@ -0,0 +1,114 @@
+.\" ----------------------------------------------------------------------------
+.\" "THE BEER-WARE LICENSE" (Revision 42):
+.\" <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
+.\" can do whatever you want with this stuff. If we meet some day, and you think
+.\" this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
+.\" ----------------------------------------------------------------------------
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 30, 2007
+.Dt MD 4
+.Os
+.Sh NAME
+.Nm md
+.Nd memory disk
+.Sh SYNOPSIS
+.Cd device md
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for four kinds of memory backed virtual disks:
+.Bl -tag -width preload
+.It Cm malloc
+Backing store is allocated using
+.Xr malloc 9 .
+Only one malloc-bucket is used, which means that all
+.Nm
+devices with
+.Cm malloc
+backing must share the malloc-per-bucket-quota.
+The exact size of this quota varies, in particular with the amount
+of RAM in the
+system.
+The exact value can be determined with
+.Xr vmstat 8 .
+.It Cm preload
+A file loaded by
+.Xr loader 8
+with type
+.Sq md_image
+is used for backing store.
+For backwards compatibility the type
+.Sq mfs_root
+is also recognized.
+If the kernel is created with option
+.Dv MD_ROOT
+the first preloaded image found will become the root file system.
+.It Cm vnode
+A regular file is used as backing store.
+This allows for mounting ISO images without the tedious
+detour over actual physical media.
+.It Cm swap
+Backing store is allocated from buffer memory.
+Pages get pushed out to the swap when the system is under memory
+pressure, otherwise they stay in the operating memory.
+Using
+.Cm swap
+backing is generally preferable over
+.Cm malloc
+backing.
+.El
+.Pp
+For more information, please see
+.Xr mdconfig 8 .
+.Sh EXAMPLES
+To create a kernel with a ramdisk or MD file system, your kernel config
+needs the following options:
+.Bd -literal -offset indent
+options MD_ROOT #MD is a potential root device
+options MD_ROOT_SIZE=8192 # 8MB ram disk
+makeoptions MFS_IMAGE=/h/foo/ARM-MD
+options ROOTDEVNAME=\"ufs:md0\"
+.Ed
+The image in
+.Pa /h/foo/ARM-MD
+will be loaded as the initial image each boot.
+To create the image to use, please follow the steps to create a file-backed
+disk found in the
+.Xr mdconfig 8
+man page.
+Other tools will also create these images, such as NanoBSD.
+.Sh SEE ALSO
+.Xr disklabel 5 ,
+.Xr disklabel 8 ,
+.Xr fdisk 8 ,
+.Xr loader 8 ,
+.Xr mdconfig 8 ,
+.Xr mdmfs 8 ,
+.Xr newfs 8 ,
+.Xr vmstat 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.0
+as a cleaner replacement
+for the MFS functionality previously used in
+.Tn PicoBSD
+and in the
+.Fx
+installation process.
+.Pp
+The
+.Nm
+driver did a hostile takeover of the
+.Xr vn 4
+driver in
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Poul-Henning Kamp
+.Aq phk@FreeBSD.org .
diff --git a/share/man/man4/mem.4 b/share/man/man4/mem.4
new file mode 100644
index 0000000..5dd2cb9
--- /dev/null
+++ b/share/man/man4/mem.4
@@ -0,0 +1,211 @@
+.\" Copyright (c) 1991 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)mem.4 5.3 (Berkeley) 5/2/91
+.\" $FreeBSD$
+.\"
+.Dd October 3, 2004
+.Dt MEM 4
+.Os
+.Sh NAME
+.Nm mem ,
+.Nm kmem
+.Nd memory files
+.Sh SYNOPSIS
+.Cd "device mem"
+.Sh DESCRIPTION
+The special file
+.Pa /dev/mem
+is an interface to the physical memory of the computer.
+Byte offsets in this file are interpreted as physical memory addresses.
+Reading and writing this file is equivalent to reading and writing
+memory itself.
+Only offsets within the bounds of
+.Pa /dev/mem
+are allowed.
+.Pp
+Kernel virtual memory is accessed through the interface
+.Pa /dev/kmem
+in the same manner as
+.Pa /dev/mem .
+Only kernel virtual addresses that are currently mapped to memory are allowed.
+.Pp
+On
+.Tn ISA
+the
+.Tn I/O
+memory space begins at physical address 0x000a0000
+and runs to 0x00100000.
+The
+per-process data
+size
+for the current process
+is
+.Dv UPAGES
+long, and ends at virtual
+address 0xf0000000.
+.Sh IOCTL INTERFACE
+Several architectures allow attributes to be associated with ranges of physical
+memory.
+These attributes can be manipulated via
+.Fn ioctl
+calls performed on
+.Pa /dev/mem .
+Declarations and data types are to be found in
+.In sys/memrange.h .
+.Pp
+The specific attributes, and number of programmable ranges may vary between
+architectures.
+The full set of supported attributes is:
+.Bl -tag -width indent
+.It Dv MDF_UNCACHEABLE
+The region is not cached.
+.It Dv MDF_WRITECOMBINE
+Writes to the region may be combined or performed out of order.
+.It Dv MDF_WRITETHROUGH
+Writes to the region are committed synchronously.
+.It Dv MDF_WRITEBACK
+Writes to the region are committed asynchronously.
+.It Dv MDF_WRITEPROTECT
+The region cannot be written to.
+.El
+.Pp
+Memory ranges are described by
+.Vt struct mem_range_desc :
+.Bd -literal -offset indent
+u_int64_t mr_base; /\(** physical base address \(**/
+u_int64_t mr_len; /\(** physical length of region \(**/
+int mr_flags; /\(** attributes of region \(**/
+char mr_owner[8];
+.Ed
+.Pp
+In addition to the region attributes listed above, the following flags
+may also be set in the
+.Fa mr_flags
+field:
+.Bl -tag -width indent
+.It MDF_FIXBASE
+The region's base address cannot be changed.
+.It MDF_FIXLEN
+The region's length cannot be changed.
+.It MDF_FIRMWARE
+The region is believed to have been established by the system firmware.
+.It MDF_ACTIVE
+The region is currently active.
+.It MDF_BOGUS
+We believe the region to be invalid or otherwise erroneous.
+.It MDF_FIXACTIVE
+The region cannot be disabled.
+.It MDF_BUSY
+The region is currently owned by another process and may not be
+altered.
+.El
+.Pp
+Operations are performed using
+.Fa struct mem_range_op :
+.Bd -literal -offset indent
+struct mem_range_desc *mo_desc;
+int mo_arg[2];
+.Ed
+.Pp
+The
+.Dv MEMRANGE_GET
+ioctl is used to retrieve current memory range attributes.
+If
+.Va mo_arg[0]
+is set to 0, it will be updated with the total number of memory range
+descriptors.
+If greater than 0, the array at
+.Va mo_desc
+will be filled with a corresponding number of descriptor structures,
+or the maximum, whichever is less.
+.Pp
+The
+.Dv MEMRANGE_SET
+ioctl is used to add, alter and remove memory range attributes.
+A range
+with the
+.Dv MDF_FIXACTIVE
+flag may not be removed; a range with the
+.Dv MDF_BUSY
+flag may not be removed or updated.
+.Pp
+.Va mo_arg[0]
+should be set to
+.Dv MEMRANGE_SET_UPDATE
+to update an existing or establish a new range, or to
+.Dv MEMRANGE_SET_REMOVE
+to remove a range.
+.Sh RETURN VALUES
+.Bl -tag -width Er
+.It Bq Er EOPNOTSUPP
+Memory range operations are not supported on this architecture.
+.It Bq Er ENXIO
+No memory range descriptors are available (e.g.\& firmware has not enabled
+any).
+.It Bq Er EINVAL
+The memory range supplied as an argument is invalid or overlaps another
+range in a fashion not supported by this architecture.
+.It Bq Er EBUSY
+An attempt to remove or update a range failed because the range is busy.
+.It Bq Er ENOSPC
+An attempt to create a new range failed due to a shortage of hardware
+resources (e.g.\& descriptor slots).
+.It Bq Er ENOENT
+An attempt to remove a range failed because no range matches the descriptor
+base/length supplied.
+.It Bq Er EPERM
+An attempt to remove a range failed because the range is permanently
+enabled.
+.El
+.Sh FILES
+.Bl -tag -width /dev/kmem -compact
+.It Pa /dev/mem
+.It Pa /dev/kmem
+.El
+.Sh SEE ALSO
+.Xr kvm 3 ,
+.Xr memcontrol 8
+.Sh HISTORY
+The
+.Nm mem
+and
+.Nm kmem
+files appeared in
+.At v6 .
+The ioctl interface for memory range attributes was added in
+.Fx 3.2 .
+.Sh BUGS
+Busy range attributes are not yet managed correctly.
+.Pp
+This device is required for all users of
+.Xr kvm 3
+to operate.
diff --git a/share/man/man4/meteor.4 b/share/man/man4/meteor.4
new file mode 100644
index 0000000..62ff6e9
--- /dev/null
+++ b/share/man/man4/meteor.4
@@ -0,0 +1,874 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 15, 1995
+.Dt METEOR 4
+.Os
+.Sh NAME
+.Nm meteor
+.Nd "video capture driver interface"
+.Sh DESCRIPTION
+The
+.Nm
+driver defined a video capture interface.
+The
+.Nm
+driver is no longer in the tree, but other devices support this interface
+so the interface portion is documented here.
+.Ss Meteor Capture Modes
+The
+.Nm
+capture driver has three modes of capture operation.
+.Bl -enum
+.It
+Conventional
+.Xr read 2
+interface.
+.Pp
+This mode is the easiest and slowest to use.
+This mode is great for
+capturing a single field at little programming cost.
+.Pp
+In this mode, the user opens the device, sets the capture mode
+and size (see:
+.Dv METEORSETGEO
+.Xr ioctl 2
+call), and uses the
+.Xr read 2
+system
+call to load the data into a buffer.
+.Pp
+.Pa meteor_read.c ;
+read 400x300 RGB24 into a viewable PPM file
+.Bd -literal
+#include <sys/fcntl.h>
+#include <machine/ioctl_meteor.h>
+
+extern int errno;
+#define ROWS 300
+#define COLS 400
+#define SIZE (ROWS * COLS * 4)
+main()
+{
+ struct meteor_geomet geo;
+ char buf[SIZE],b[4],header[16],*p;
+ int i,o,c;
+
+ if ((i = open("/dev/meteor0", O_RDONLY)) < 0) {
+ printf("open failed: %d\\n", errno);
+ exit(1);
+ }
+ /* set up the capture type and size */
+ geo.rows = ROWS;
+ geo.columns = COLS;
+ geo.frames = 1;
+ geo.oformat = METEOR_GEO_RGB24 ;
+
+ if (ioctl(i, METEORSETGEO, &geo) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ c = METEOR_FMT_NTSC;
+
+ if (ioctl(i, METEORSFMT, &c) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ c = METEOR_INPUT_DEV0;
+
+ if (ioctl(i, METEORSINPUT, &c) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ if ((c=read(i, &buf[0], SIZE)) < SIZE) {
+ printf("read failed %d %d %d\\n", c, i, errno);
+ close(i);
+ exit(1);
+ }
+ close(i);
+
+ if ((o = open("rgb24.ppm", O_WRONLY | O_CREAT, 0644)) < 0) {
+ printf("ppm open failed: %d\\n", errno);
+ exit(1);
+ }
+
+ /* make PPM header and save to file */
+ strcpy(&header[0], "P6 400 300 255 ");
+ header[2] = header[6] = header[10] = header[14] = '\\n';
+ write (o, &header[0], 15);
+ /* save the RGB data to PPM file */
+ for (p = &buf[0]; p < &buf[SIZE]; ) {
+ b[2] = *p++; /* blue */
+ b[1] = *p++; /* green */
+ b[0] = *p++; /* red */
+ *p++; /* NULL byte */
+ write(o,&b[0], 3); /* not very efficient */
+ }
+ close(o);
+ exit(0);
+}
+.Ed
+.It
+Memory mapped single capture or unsynchronized continuous capture.
+.Pp
+The single capture mode is designed for conferencing tools such as
+.Nm nv .
+These tools need to control the starting of the image capture and also
+need several frames a second.
+The continuous capture mode is designed
+for applications that want free-running data.
+.Pp
+In this mode, the user opens the device, sets the capture mode
+and size (see:
+.Dv METEORSETGEO
+.Xr ioctl 2
+call),
+.Xr mmap 2 Ns s
+the frame buffer
+memory into the user process space, and issues either the
+single-capture or the continuous capture call (see:
+.Dv METEORCAPTUR
+.Xr ioctl 2
+call) to load the data into the memory mapped buffer.
+.Pp
+As explained in the
+.Dv METEORCAPTUR
+.Xr ioctl 2
+call, the single frame capture
+.Xr ioctl 2
+will block until the capture is complete, the continuous capture
+will return immediately.
+.Pp
+.Pa meteor_mmap_single_continuous.c
+.Bd -literal
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/fcntl.h>
+#include <machine/ioctl_meteor.h>
+
+extern int errno;
+#define ROWS 480
+#define COLS 640
+#define SIZE (ROWS * COLS * 2)
+main()
+{
+ struct meteor_geomet geo;
+ char buf[SIZE];
+ char *mmbuf;
+ int i,c;
+
+ if ((i = open("/dev/meteor0", O_RDONLY)) < 0) {
+ printf("open failed\\n");
+ exit(1);
+ }
+
+ geo.rows = ROWS;
+ geo.columns = COLS;
+ geo.frames = 1;
+ geo.oformat = METEOR_GEO_RGB16 ;
+
+ if (ioctl(i, METEORSETGEO, &geo) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ c = METEOR_FMT_NTSC;
+
+ if (ioctl(i, METEORSFMT, &c) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ c = METEOR_INPUT_DEV0;
+
+ if (ioctl(i, METEORSINPUT, &c) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ mmbuf=(char *)mmap((caddr_t)0, SIZE, PROT_READ,
+ MAP_SHARED, i, (off_t)0);
+
+#ifdef SINGLE_MODE
+ /* single frame capture */
+ c = METEOR_CAP_SINGLE ;
+ ioctl(i, METEORCAPTUR, &c); /* wait for the frame */
+
+ /* directly access the frame buffer array data in mmbuf */
+#else
+ /* continuous frame capture */
+ c = METEOR_CAP_CONTINOUS ;
+ ioctl(i, METEORCAPTUR, &c); /* returns immediately */
+
+ /* directly access the frame buffer array data in mmbuf */
+
+ c = METEOR_CAP_STOP_CONT ;
+ ioctl(i, METEORCAPTUR, &c); /* close will also stop capture */
+#endif
+
+ close(i);
+ exit(0);
+}
+.Ed
+.It
+Memory mapped, multi-frame ring buffer synchronize capture.
+.Pp
+This continuous capture mode is synchronized with the application that
+processes up to 32 frames.
+This gives the advantages of both single and
+continuous capture modes.
+.Pp
+The kernel notifies the application of a new data by raising an
+application defined signal.
+The driver also shares a structure with
+the application that allows them to communicate which frame has been
+written by the kernel and which frame has been read by the application.
+.Pp
+The shared structure starts on the first page after your data.
+The
+structure address can be found by calculation:
+.Pp
+.Dl "(number_rows * number_columns * pixel_depth + 4095) & 0xfffff000"
+or
+.Dl "((number_rows * number_columns * pixel_depth + 4095)/4096) * 4096"
+.Pp
+The shared structure is of type
+.Va struct meteor_mem .
+The two most
+important fields are called
+.Va active
+and
+.Va num_active_buf .
+.Va active
+is a bitmap of frames written by the kernel.
+.Va num_active_bufs
+is
+a count of frames marked in the
+.Va active
+field.
+When a frame is read
+in by the driver, the
+.Va num_active_bufs
+count is tested, if this
+count is below the threshold of number of active frames (value
+in
+.Va meteor_mem Ns 's
+.Va hiwat
+variable), the bit representing frame
+number in the buffer is stored in the
+.Va active
+variable, the
+.Va num_active_bufs
+is incremented, the kernel then raises the specified
+signal to activate the user application.
+The user application's
+responsibility when getting the signal is to check the active bitmap
+to determine the lowest active frame, use the data as the application
+desires, clear the bitmap entry for that frame, and decrement the
+.Va num_active_bufs .
+If the threshold of number of active frames
+.Pq Va hiwat
+has been exceeded, no new frames or signal from the kernel will occur
+until the
+.Va num_active_bufs
+is less than or equal to
+.Va lowat .
+.Pp
+The driver loads the frames in a round-robin fashion.
+It is expected
+that the user removes them in the same order.
+The driver does not
+check to see if the frame is already active.
+.Pp
+The
+.Va frame_size
+and number of frames in the buffer are also provided
+to the
+.Va meteor_mem
+structure, but changing these fields in the
+application will not change the operation of the driver.
+.Pp
+In programming for this mode, the user opens the device, sets the
+geometry,
+.Xr mmap 2 Ns s
+the data/common control structure, then starts the
+continuous capture mode.
+A special signal catcher is required to
+process the frames as they are read by the kernel.
+.Pp
+When specifying the geometry (see:
+.Dv METEORSETGEO
+.Xr ioctl 2
+call),
+it
+is important that the number of frames is set greater than 1.
+.Pp
+.Pa skeleton_capture_n.c
+.Bd -literal
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/fcntl.h>
+#include <sys/signal.h>
+#include <machine/ioctl_meteor.h>
+
+int video; /* made global if you wish to stop capture in signal handler */
+caddr_t data_frames;
+struct meteor_mem *common_mem;
+extern int errno;
+
+#define FRAME_MAX
+
+void
+usr2_catcher()
+{
+#ifdef SIGNAL_STOP
+ struct meteor_capframe capframe; /* for ioctl */
+#endif
+ char *frame;
+
+ /* find frame */
+ frame = (char *) (data_frames + sig_cnt * common_mem->frame_size) ;
+
+ /* add frame processing here */
+ /* deactivate frame */
+ common_mem->active &= ~(1 << (sig_cnt % 16));
+ common_mem->num_active_bufs--;
+
+ /* process next frame on next interrupt */
+ sig_cnt = ((sig_cnt+1) % FRAME_MAX);
+
+#ifdef SIGNAL_STOP
+ if (some_condition_requiring_stopping) {
+ capframe.command=METEOR_CAP_STOP_FRAMES;
+
+ if (ioctl(i, METEORCAPFRM, &capframe) < 0) {
+ printf("METEORCAPFRM failed %d\\n", errno);
+ exit(1);
+ }
+ }
+#endif
+}
+
+main()
+{
+ struct meteor_geomet geo;
+ int height, width, depth, frames, size;
+ struct meteor_capframe capframe;
+
+ if ((i = open("/dev/meteor0", O_RDONLY)) < 0) {
+ printf("open failed\\n");
+ exit(1);
+ }
+ printf("test %d %d\\n", errno, i);
+
+ height = geo.rows = 120;
+ width= geo.columns = 320;
+ frames = geo.frames = FRAME_MAX;
+ depth = 2; /* 2 bytes per pixel for RGB*/
+
+
+ geo.oformat = METEOR_GEO_RGB16;
+
+ if (ioctl(i, METEORSETGEO, &geo) < 0) {
+ printf("METEORSETGEO failed %d\\n", errno);
+ exit(1);
+ }
+
+ c = METEOR_FMT_NTSC;
+
+ if (ioctl(i, METEORSFMT, &c) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ c = METEOR_INPUT_DEV0;
+
+ if (ioctl(i, METEORSINPUT, &c) < 0) {
+ printf("ioctl failed: %d\\n", errno);
+ exit(1);
+ }
+
+ size = ((width*height*depth*frames+4095)/4096)*4096;
+ /* add one page after data for meteor_mem */
+ data_frames = mmap((caddr_t)0, size + 4096, PROT_READ | PROT_WRITE,
+ MAP_SHARED, i, (off_t)0);
+
+ if (data_frames == (caddr_t) MAP_FAILED) return (0);
+
+ /* common_mem is located at page following data */
+ common_mem = (struct meteor_mem *) (y + size);
+
+ signal(SIGUSR2, usr2_catcher); /* catch new frame message */
+
+ capframe.command=METEOR_CAP_N_FRAMES;
+ capframe.signal=SIGUSR2;
+ capframe.lowat=12; /* must be < hiwat */
+ capframe.hiwat=14; /* must be < FRAME_MAX */
+
+ /* start the sync capture */
+ if (ioctl(i, METEORCAPFRM, &capframe) < 0) {
+ printf("METEORCAPFRM failed %d\\n", errno);
+ exit(1);
+ }
+
+ /* this is the background working area, or you can sleep */
+
+
+ /* to stop capture */
+ capframe.command=METEOR_CAP_STOP_FRAMES;
+
+ if (ioctl(i, METEORCAPFRM, &capframe) < 0) {
+ printf("METEORCAPFRM failed %d\\n", errno);
+ exit(1);
+ }
+}
+.Ed
+.El
+.Ss Meteor IOCTL Call and Parameters
+The
+.Nm
+capture driver has
+.Xr ioctl 2
+requests for capturing, reading card
+status, for setting and reading the geometry, and for setting and reading the
+attributes.
+.Pp
+.Bf -symbolic
+IT IS VERY IMPORTANT TO CHECK FOR ERRORS ON THESE RETURNING IOCTLs.
+.Ef
+Errors indicate that something is very wrong with the
+.Xr ioctl 2
+and the
+application should not attempt to proceed further with capturing.
+The
+.Nm
+capture driver still makes attempts to stop the next capture step if
+an error occurred in a previous step but was ignored by the application
+programmer.
+.Bl -enum
+.It
+.Xr ioctl 2
+requests
+.Dv METEORSETGEO
+and
+.Dv METEORGETGEO
+.Pp
+.Dv METEORSETGEO
+and
+.Dv METEORGETGEO
+are used to set and read the input
+size, input device, and output format for frame capture.
+.Pp
+These
+.Xr ioctl 2
+routines use the
+.Va meteor_geomet
+structure that has the
+following entries:
+.Pp
+.Bl -tag -width columns
+.It Va rows
+number of rows (lines high) in output image
+.It Va columns
+number of pixels in a row (width) in output image
+.It Va frames
+number of frames in buffer.
+Should be 1, unless using
+the multi-framed synchronous capture mode
+.Pq Dv METEORCAPFRM
+which REQUIRES frames to be larger than 1.
+.Pp
+Note: if
+.Va rows , columns
+or
+.Va frames
+is not changed, then
+the existing values are used.
+The system defaults
+is 640x480x1.
+.It Va oformat
+you may choose one of the following output format:
+.Bl -tag -width METEOR_GEO_YUV_PACKED
+.It Dv METEOR_GEO_RGB16
+(RGB 16 bits xrrrrrgg gggbbbbb default)
+.It Dv METEOR_GEO_RGB24
+(RGB 24 bits packed in 32 bits:
+00000000 rrrrrrrr gggggggg bbbbbbbb)
+.It Dv METEOR_GEO_YUV_PACKED
+(4-2-2 YUV 16 bits packed byte format:
+u0 y0 v0 y1 u1 y2 v1 y3 ...)
+.It Dv METEOR_GEO_YUV_PLANER
+(4-2-2 YUV 16 bits planer format:
+rows * columns bytes of y
+rows * column / 4 bytes of even u
+rows * column / 4 bytes of even v
+rows * column / 4 bytes of odd u
+rows * column / 4 bytes of odd v)
+.El
+.El
+.Pp
+The
+.Dv METEORSETGEO
+.Xr ioctl 2
+will fail if more than one entry from a category
+is selected.
+It is highly recommended that a
+.Dv METEORSETGEO
+is done
+before capturing data because you cannot guarantee the initial mode
+the card.
+.Pp
+The
+.Dv METEORSETGEO
+will also attempt to reallocate a new contiguous
+kernel buffer if the new geometry exceeds the old geometry.
+On
+other hand, if the new geometry will fit in the existing buffer,
+the existing buffer is used.
+.Pp
+If
+.Dv METEORSETGEO
+fails the
+.Xr ioctl 2
+will return a value of -1 and the
+external variable
+.Va errno
+will be set to:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+invalid
+.Va meteor_geomet
+structure pointer,
+.Va rows , columns , frames
+were invalid.
+.It Bq Er ENOMEM
+could not allocate the contiguous block.
+.El
+.It
+.Xr ioctl 2
+requests
+.Dv METEORSFMT
+and
+.Dv METEORGFMT
+.Pp
+.Dv METEORSFMT
+and
+.Dv METEORGFMT
+are used to set and read the camera input
+standard format.
+.Pp
+Possible formats are:
+.Pp
+.Bl -tag -width METEOR_FMT_AUTOMODE -compact
+.It Dv METEOR_FMT_NTSC
+NTSC (default mode)
+.It Dv METEOR_FMT_PAL
+PAL
+.It Dv METEOR_FMT_SECAM
+SECAM
+.It Dv METEOR_FMT_AUTOMODE
+Autodetect.
+.El
+.It
+.Xr ioctl 2
+requests
+.Dv METEORSINPUT
+and
+.Dv METEORGINPUT
+.Pp
+.Dv METEORSINPUT
+and
+.Dv METEORGINPUT
+are used to set and read the camera
+input device.
+Using the DB9 connector on the
+.Tn Meteor
+card, 4 input
+devices can be connected and an input camera can be selected with this
+.Xr ioctl 2 .
+.Pp
+Possible formats are:
+.Pp
+.Bl -tag -width METEOR_INPUT_DEV_SVIDEO -compact
+.It Dv METEOR_INPUT_DEV0
+(default if none specified)
+.It Dv METEOR_INPUT_DEV_RCA
+(same as METEOR_INPUT_DEV0)
+.It Dv METEOR_INPUT_DEV1
+.It Dv METEOR_INPUT_DEV2
+.It Dv METEOR_INPUT_DEV_SVIDEO
+(same as METEOR_INPUT_DEV2)
+.El
+.It
+.Xr ioctl 2
+request
+.Dv METEORSTATUS
+.Pp
+.Dv METEORSTATUS
+is used to read the status of the
+.Tn Meteor
+capture card
+and returns the following information:
+.Bl -column "METEOR_STATUS_ID_MASK" "\&"
+.It Dv METEOR_STATUS_ID_MASK " 4 bit ID of the SAA7196 scaler chip."
+.Pp
+.It Dv METEOR_STATUS_DIR " 0 = scaler uses internal source."
+.It " 1 = scaler uses external data of expansion bus."
+.Pp
+.It Dv METEOR_STATUS_OEF " 0 = even field detected."
+.It " 1 = odd field detected."
+.Pp
+.It Dv METEOR_STATUS_SVP " VRAM Port state:"
+.It " 0 = inputs HFL and INCADDR inactive."
+.It " 1 = inputs HFL and INCADDR active."
+.Pp
+.It Dv METEOR_STATUS_STTC " 0 = TV horizontal time constant (slow)."
+.It " 1 = VCR horizontal time constant (fast)."
+.Pp
+.It Dv METEOR_STATUS_HCLK " 0 = Horizontal Phase Lock Loop locked."
+.It " 1 = Horizontal Phase Lock Loop unlocked."
+.Pp
+.It Dv METEOR_STATUS_FIDT " 0 = 50 Hz Field detected."
+.It " 1 = 60 Hz Field detected."
+.Pp
+.It Dv METEOR_STATUS_ALTD " 0 = no line alternating color burst detected."
+.It " 1 = line alternating color burst detected (PAL/SECAM)."
+.Pp
+.It Dv METEOR_STATUS_CODE " 0 = no color information detected."
+.It " 1 = color information detected."
+.El
+.It
+.Xr ioctl 2
+request
+.Dv METEORCAPTUR
+.Pp
+.Dv METEORCAPTUR
+is used to single frame capture or unsynchronized
+continuous capture.
+.Pp
+The single frame capture
+.Xr ioctl 2
+request will return only after a
+frame has been captured and transfered to the frame buffer.
+.Pp
+The unsynchronized continuous capture will return immediately and
+data is directly deposited into the buffer when it is available.
+Since this is unsynchronized, it is possible the data is being
+written by the kernel while being read by the application.
+.Pp
+These
+.Xr ioctl 2
+routines use the following settings:
+.Pp
+.Bl -tag -width METEOR_CAP_CONTINOUS -compact
+.It Dv METEOR_CAP_SINGLE
+capture one frame
+.It Dv METEOR_CAP_CONTINOUS
+unsynchronized continuous capture
+.It Dv METEOR_CAP_STOP_CONT
+stop the unsynchronized continuous
+capture
+.El
+.Pp
+If
+.Dv METEORCAPTUR
+fails the
+.Xr ioctl 2
+will return a value of -1 and the
+external variable
+.Va errno
+will be set to:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+invalid capture command value
+.It Bq Er ENXIO
+there is not internal buffer to hold the frame.
+This indicates the previous set geometry
+.Xr ioctl 2
+failed.
+.It Bq Er EIO
+card is already capturing.
+.El
+.It
+.Xr ioctl 2
+request
+.Dv METEORCAPFRM
+.Pp
+.Dv METEORCAPFRM
+is used for synchronous capture of multiple frames.
+.Pp
+This
+.Xr ioctl 2
+routine uses the
+.Va meteor_capture
+structure that has the
+following entries:
+.Bl -tag -width command
+.It Va command
+possible values for
+.Va command
+are:
+.Bl -tag -width METEOR_CAP_STOP_FRAMES
+.It Dv METEOR_CAP_STOP_FRAMES
+stop the capture; does not use the
+other variable in structure.
+.It Dv METEOR_CAP_N_FRAMES
+start the capture using the other
+variables in the structure as inputs
+.El
+.It Va signal
+signal to send to application when a new
+frame has been captured.
+This signal will
+only be raised if the captured frame is saved.
+.It Va lowat
+see below
+.It Va hiwat
+see below
+.El
+.Pp
+When a new frame is completed, the driver checks the current unread
+frame count stored in shared variable (the shared variable is stored
+in the
+.Va meteor_mem
+structure)
+.Va num_active_buf ;
+if the count is larger
+than
+.Va hiwat ,
+the driver will not store any new frames and will not
+send capture signal to the user application until the
+.Va num_active_buf
+is lower than
+.Va lowat .
+.Pp
+If
+.Dv METEORCAPFRM
+fails the
+.Xr ioctl 2
+will return a value of -1 and the
+external variable
+.Va errno
+will be set to:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+invalid meteor_geomet structure pointer or bad command.
+.It Bq Er ENXIO
+there is not internal buffer to hold the frame.
+This indicates the previous set geometry
+.Xr ioctl 2
+failed.
+.It Bq Er EIO
+card is already capturing.
+.El
+.It
+.Xr ioctl 2
+requests
+.Dv METEORSCHCV
+and
+.Dv METEORGCHCV
+.Pp
+.Dv METEORSCHCV
+and
+.Dv METEORGCHCV
+are used to set and get the chrominance
+gain control and effects the UV output amplitude.
+.Pp
+If
+.Dv METEORSCHCV
+or
+.Dv METEORGCHCV
+fails the
+.Xr ioctl 2
+will return a value
+of -1 and the external variable
+.Va errno
+will be set to:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+invalid unsigned char pointer.
+.El
+.It
+.Xr ioctl 2
+requests
+.Dv METEORGHUE
+and
+.Dv METEORSHUE
+.Pp
+.Dv METEORGHUE
+and
+.Dv METEORSHUE
+are used to get and set the hue.
+The
+signed character has legal values are from +127 which represent
++178.6 degrees to -128 which represents -180 degrees.
+.Pp
+If
+.Dv METEORGHUE
+or
+.Dv METEORSHUE
+fails the
+.Xr ioctl 2
+will return a value of
+-1 and the external variable
+.Va errno
+will be set to:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+invalid signed char pointer.
+.El
+.It
+.Xr ioctl 2
+requests
+.Dv METEORSCOUNT
+and
+.Dv METEORGCOUNT
+.Pp
+.Dv METEORGCOUNT
+is used to get the count of frame errors, DMA errors and
+count of the number of frames captured that have occurred since
+the device was opened.
+.Dv METEORSCOUNT
+can be used to reinitialize the
+counters.
+.Pp
+This
+.Xr ioctl 2
+routines use the
+.Va meteor_counts
+structure that has the
+following entries:
+.Bl -tag -width frame_count
+.It Va fifo_errors
+number of FIFO errors since device was opened.
+.It Va dma_errors
+number of DMA errors since device was opened.
+.It Va frame_count
+number of frames captured since device was opened.
+.El
+.Pp
+If
+.Dv METEORSCOUNT
+or
+.Dv METEORGCOUNT
+fails the
+.Xr ioctl 2
+will return a value
+of -1 and the external variable
+.Va errno
+will be set to:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+invalid meteor_counts structure pointer.
+.El
+.El
+.Sh AUTHORS
+.An Jim Lowe Aq james@miller.cs.uwm.edu ,
+.An Mark Tinguely Aq tinguely@plains.nodak.edu
+.Sh BUGS
+The
+.Nm
+driver no longer works at all.
diff --git a/share/man/man4/mfi.4 b/share/man/man4/mfi.4
new file mode 100644
index 0000000..2288ecb
--- /dev/null
+++ b/share/man/man4/mfi.4
@@ -0,0 +1,118 @@
+.\" Copyright (c) 2006 Scott Long
+.\" 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$
+.\"
+.Dd January 17, 2008
+.Dt MFI 4
+.Os
+.Sh NAME
+.Nm mfi
+.Nd "LSI MegaRAID SAS driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device mfi"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mfi_load="YES"
+.Ed
+.Sh DESCRIPTION
+This driver is for LSI's next generation PCI Express SAS RAID controllers.
+Access to RAID arrays (logical disks) from this driver is provided via
+.Pa /dev/mfid?
+device nodes.
+A simple management interface is also provided on a per-controller basis via
+the
+.Pa /dev/mfi?
+device node.
+.Pp
+The
+.Nm
+name is derived from the phrase "MegaRAID Firmware Interface", which is
+substantially different than the old "MegaRAID" interface and thus requires
+a new driver.
+Older SCSI and SATA MegaRAID cards are supported by
+.Xr amr 4
+and will not work with this driver.
+.Pp
+Two sysctls are provided to tune the
+.Nm
+driver's behavior when a request is made to remove a mounted volume.
+By default the driver will disallow any requests to remove a mounted volume.
+If the sysctl
+.Va dev.mfi.%d.delete_busy_volumes
+is set to 1,
+then the driver will allow mounted volumes to be removed.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following hardware:
+.Pp
+.Bl -bullet -compact
+.It
+LSI MegaRAID SAS 8408E
+.It
+LSI MegaRAID SAS 8480E
+.It
+LSI MegaRAID SAS 1078
+.It
+Dell PERC5
+.It
+Dell PERC6
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/mfid?" -compact
+.It Pa /dev/mfid?
+array/logical disk interface
+.It Pa /dev/mfi?
+management interface
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "mfid%d: Unable to delete busy device"
+An attempt was made to remove a mounted volume.
+.El
+.Sh SEE ALSO
+.Xr amr 4 ,
+.Xr pci 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.1 .
+.Sh AUTHORS
+The
+.Nm
+driver and this manual page were written by
+.An Scott Long Aq scottl@FreeBSD.org .
+.Sh BUGS
+The driver does not support big-endian architectures at this time.
diff --git a/share/man/man4/miibus.4 b/share/man/man4/miibus.4
new file mode 100644
index 0000000..a8ebab3
--- /dev/null
+++ b/share/man/man4/miibus.4
@@ -0,0 +1,175 @@
+.\" Written by Tom Rhodes for the FreeBSD Project.
+.\" Please see the /usr/src/COPYRIGHT file for copyright information.
+.\"
+.\" This document takes information from the IEEE 802.3 Standard
+.\" along with various comments from Peter Wemm, Robert Watson, and Bill Paul.
+.\" Originally this file looked much like the NetBSD mii(4) manual page, but
+.\" I doubt you would ever notice due to large differences.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 12, 2008
+.Dt MIIBUS 4
+.Os
+.Sh NAME
+.Nm miibus
+.Nd IEEE 802.3 Media Independent Interface network bus
+.Sh SYNOPSIS
+For most network interface cards (NIC):
+.Cd "device miibus"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides an interconnection between the Media Access Control (MAC)
+sublayer, the Physical Layer entities (PHY), Station Management (STA)
+entities, and the PHY Layer as defined by the IEEE 802.3 Standard.
+.Pp
+The
+.Nm
+layer allows network device drivers to share common support
+code for various external PHY devices.
+Most 10/100 network interface cards either use an MII transceiver
+or have built-in transceivers that can be programmed using an MII
+interface.
+The
+.Nm
+driver currently handles all of the media detection,
+selection, and reporting using the ifmedia interface.
+A generic driver has been included for all PHYs that are not
+handled by a specific driver, this is possible because all
+10/100 PHYs implement the same general register set along with
+their vendor specific register set.
+.Pp
+The following network device drivers use the
+.Nm
+interface:
+.Pp
+.Bl -tag -compact -width ".Xr fxp 4"
+.It Xr age 4
+Attansic/Atheros L1 Gigabit Ethernet
+.It Xr ale 4
+Atheros AR8121/AR8113/AR8114 PCIe Ethernet
+.It Xr aue 4
+ADMtek USB Ethernet
+.It Xr axe 4
+ASIX Electronics AX88172 USB Ethernet
+.It Xr bce 4
+Broadcom NetXtreme II Gigabit Ethernet
+.It Xr bfe 4
+Broadcom BCM4401 Ethernet
+.It Xr bge 4
+Broadcom BCM570xx Gigabit Ethernet
+.It Xr dc 4
+DEC/Intel 21143 and various workalikes
+.It Xr ed 4
+NE[12]000, SMC Ultra, 3c503, DS8390 cards
+.It Xr et 4
+Agere ET1310 Gigabit Ethernet
+.It Xr fxp 4
+Intel EtherExpress PRO/100B
+.It Xr gem 4
+Sun ERI, Sun GEM and Apple GMAC Ethernet
+.It Xr hme 4
+Sun HME Ethernet
+.It Xr jme 4
+JMicron JMC250 Gigabit/JMC260 Fast Ethernet
+.It Xr lge 4
+Level 1 LXT1001 NetCellerator Gigabit Ethernet
+.It Xr msk 4
+Marvell/SysKonnect Yukon II Gigabit Ethernet
+.It Xr nfe 4
+NVIDIA nForce MCP Networking Adapter
+.It Xr nge 4
+National Semiconductor DP83820/DP83821 Gigabit Ethernet
+.It Xr nve 4
+NVIDIA nForce MCP Networking Adapter
+.It Xr pcn 4
+AMD Am79C97x PCI 10/100
+.It Xr re 4
+RealTek 8139C+/8169/8169S/8110S
+.It Xr rl 4
+RealTek 8129/8139
+.It Xr rue 4
+RealTek RTL8150 USB To Fast Ethernet
+.It Xr sf 4
+Adaptec AIC-6915
+.It Xr sis 4
+Silicon Integrated Systems SiS 900/SiS 7016
+.It Xr sk 4
+SysKonnect SK-984x and SK-982x Gigabit Ethernet
+.It Xr ste 4
+Sundance ST201 (D-Link DFE-550TX)
+.It Xr stge 4
+Sundance/Tamarack TC9021 Gigabit Ethernet
+.It Xr tl 4
+Texas Instruments ThunderLAN
+.It Xr tx 4
+SMC EtherPower II (83c170)
+.It Xr udav 4
+Davicom DM9601 USB Ethernet
+.It Xr vge 4
+VIA VT612x PCI Gigabit Ethernet
+.It Xr vr 4
+VIA Rhine, Rhine II
+.It Xr wb 4
+Winbond W89C840F
+.It Xr xl 4
+3Com 3c90x
+.El
+.Sh COMPATIBILITY
+The implementation of
+.Nm
+was originally intended to have similar API interfaces
+to
+.Bsx 3.0
+and
+.Nx ,
+but as a result are not well behaved newbus device drivers.
+.Sh SEE ALSO
+.Xr age 4 ,
+.Xr ale 4 ,
+.Xr arp 4 ,
+.Xr aue 4 ,
+.Xr axe 4 ,
+.Xr bce 4 ,
+.Xr bfe 4 ,
+.Xr bge 4 ,
+.Xr dc 4 ,
+.Xr ed 4 ,
+.Xr et 4 ,
+.Xr fxp 4 ,
+.Xr gem 4 ,
+.Xr hme 4 ,
+.Xr jme 4 ,
+.Xr lge 4 ,
+.Xr msk 4 ,
+.Xr netintro 4 ,
+.Xr nfe 4 ,
+.Xr nge 4 ,
+.Xr nve 4 ,
+.Xr pcn 4 ,
+.Xr re 4 ,
+.Xr rl 4 ,
+.Xr rue 4 ,
+.Xr sf 4 ,
+.Xr sis 4 ,
+.Xr sk 4 ,
+.Xr ste 4 ,
+.Xr stge 4 ,
+.Xr tl 4 ,
+.Xr tx 4 ,
+.Xr udav 4 ,
+.Xr vge 4 ,
+.Xr vr 4 ,
+.Xr wb 4 ,
+.Xr xl 4
+.Sh STANDARDS
+More information on MII can be found in the IEEE 802.3 Standard.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.3 .
+.Sh AUTHORS
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man4/mlx.4 b/share/man/man4/mlx.4
new file mode 100644
index 0000000..696d048
--- /dev/null
+++ b/share/man/man4/mlx.4
@@ -0,0 +1,256 @@
+.\"
+.\" Copyright (c) 2003 David O'Brien
+.\" Copyright (c) 2000 Jeroen Ruigrok van der Werven
+.\" Copyright (c) 2000 Michael Smith
+.\" 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. 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$
+.\"
+.Dd August 10, 2004
+.Dt MLX 4
+.Os
+.Sh NAME
+.Nm mlx
+.Nd Mylex DAC-family RAID driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device mlx"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mlx_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Mylex DAC-family PCI to SCSI RAID controllers,
+including versions relabeled by Digital/Compaq.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Mylex DAC960P
+.It
+Mylex DAC960PD / DEC KZPSC (Fast Wide)
+.It
+Mylex DAC960PDU
+.It
+Mylex DAC960PL
+.It
+Mylex DAC960PJ
+.It
+Mylex DAC960PG
+.It
+Mylex DAC960PU / DEC PZPAC (Ultra Wide)
+.It
+Mylex AcceleRAID 150 (DAC960PRL)
+.It
+Mylex AcceleRAID 250 (DAC960PTL1)
+.It
+Mylex eXtremeRAID 1100 (DAC1164P)
+.It
+RAIDarray 230 controllers, aka the Ultra-SCSI DEC KZPAC-AA (1-ch, 4MB
+cache), KZPAC-CA (3-ch, 4MB), KZPAC-CB (3-ch, 8MB cache)
+.El
+.Pp
+All major firmware revisions (2.x, 3.x, 4.x and 5.x) are supported, however
+it is always advisable to upgrade to the most recent firmware
+available for the controller.
+.Pp
+Compatible Mylex controllers not listed should work, but have not been
+verified.
+.Sh DIAGNOSTICS
+.Ss Controller initialisation phase
+.Bl -diag
+.It mlx%d: controller initialisation in progress...
+.It mlx%d: initialisation complete
+.Pp
+The controller firmware is performing/has completed initialisation.
+.It mlx%d: physical drive %d:%d not responding
+.Pp
+The drive at channel:target is not responding; it may have failed or
+been removed.
+.It mlx%d: spinning up drives...
+.Pp
+Drive startup is in progress; this may take several minutes.
+.It mlx%d: configuration checksum error
+.Pp
+The array configuration has become corrupted.
+.It mlx%d: mirror race recovery in progress
+.It mlx%d: mirror race on a critical system drive
+.It mlx%d: mirror race recovery failed
+.Pp
+These error codes are undocumented.
+.It mlx%d: physical drive %d:%d COD mismatch
+.Pp
+Configuration data on the drive at channel:target does not match the
+rest of the array.
+.It mlx%d: system drive installation aborted
+.Pp
+Errors occurred preventing one or more system drives from being configured.
+.It mlx%d: new controller configuration found
+.Pp
+The controller has detected a configuration on disk which supersedes the
+configuration in its nonvolatile memory.
+It will reset and come up with the new configuration.
+.It mlx%d: FATAL MEMORY PARITY ERROR
+.Pp
+Firmware detected a fatal memory error; the driver will not attempt to
+attach to this controller.
+.It mlx%d: unknown firmware initialisation error %x:%x:%x
+.Pp
+An unknown error occurred during initialisation; it will be ignored.
+.El
+.Ss Driver initialisation/shutdown phase:
+.Bl -diag
+.It mlx%d: can't allocate scatter/gather DMA tag
+.It mlx%d: can't allocate buffer DMA tag
+.It mlx%d: can't allocate s/g table
+.It mlx%d: can't make initial s/g list mapping
+.It mlx%d: can't make permanent s/g list mapping
+.It mlx%d: can't allocate interrupt
+.It mlx%d: can't set up interrupt
+.Pp
+A resource allocation error occurred while initialising the driver;
+initialisation has failed and the driver will not attach to this
+controller.
+.It mlx%d: error fetching drive status
+.Pp
+The current status of all system drives could not be fetched; attachment
+of system drives will be aborted.
+.It mlx%d: device_add_child failed
+.It mlx%d: bus_generic_attach returned %d
+.Pp
+Creation of the system drive instances failed; attachment of one or more
+system drives may have been aborted.
+.It mlxd%d: detaching...
+.Pp
+The indicated system drive is being detached.
+.It mlxd%d: still open, can't detach
+.Pp
+The indicated system drive is still open or mounted;
+the controller cannot be detached.
+.It mlx%d: flushing cache...
+.Pp
+The controller cache is being flushed prior to detach or shutdown.
+.El
+.Ss Operational diagnostics:
+.Bl -diag
+.It mlx%d: ENQUIRY failed - %s
+.It mlx%d: ENQUIRY2 failed
+.It mlx%d: ENQUIRY_OLD failed
+.It mlx%d: FLUSH failed - %s
+.It mlx%d: CHECK ASYNC failed - %s
+.It mlx%d: REBUILD ASYNC failed - %s
+.It mlx%d: command failed - %s
+.Pp
+The controller rejected a command for the reason given.
+.It mlx%d: I/O beyond end of unit (%u,%d > %u)
+.It mlx%d: I/O error - %s
+.Pp
+An I/O error was reported by the controller.
+.It mlx%d: periodic enquiry failed - %s
+.Pp
+An attempt to poll the controller for status failed for the reason given.
+.It mlx%d: mlx_periodic_enquiry: unknown command %x
+.Pp
+The periodic status poll has issued a command which has become corrupted.
+.It mlxd%d: drive offline
+.It mlxd%d: drive online
+.It mlxd%d: drive critical
+.Pp
+The system disk indicated has changed state.
+.It mlx%d: physical drive %d:%d reset
+.It mlx%d: physical drive %d:%d killed %s
+.It "mlx%d: physical drive %d:%d error log: sense = %d asc = %x asq = %x"
+.It "mlx%d: info %4D csi %4D"
+.Pp
+The drive at channel:target has been reset, killed for the given reason,
+or experienced a SCSI error.
+.It mlx%d: unknown log message type %x
+.It mlx%d: error reading message log - %s
+.Pp
+An error occurred while trying to read the controller's message log.
+.It mlxd%d: consistency check started
+.It mlx%d: consistency check completed
+.Pp
+A user-initiated consistency check has started/completed.
+.It mlx%d: drive rebuild started for %d:%d
+.It mlx%d: drive rebuild completed
+.Pp
+A user-initiated physical drive rebuild has started/completed.
+.It mlx%d: background check/rebuild operation started
+.It mlx%d: background check/rebuild operation completed
+.Pp
+An automatic system drive consistency check
+or physical drive rebuild has started/completed.
+.It mlx%d: channel %d pausing for %d seconds
+.It mlx%d: channel %d resuming
+.It mlx%d: pause command failed - %s
+.It mlx%d: pause failed for channel %d
+.It mlx%d: resume command failed - %s
+.It mlx%d: resume failed for channel %d
+.Pp
+Controller/channel pause operation notification.
+(Channel pause is not currently supported on any controller.)
+.It mlx%d: controller wedged (not taking commands)
+.Pp
+The controller is not responding to attempts to submit new commands.
+.It mlx%d: duplicate done event for slot %d
+.It mlx%d: done event for nonbusy slot %d
+.Pp
+Corruption has occurred in either the controller's onboard list of commands
+or in the driver.
+.El
+.Sh SEE ALSO
+.Xr mlxcontrol 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Michael Smith
+.Aq msmith@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Jeroen Ruigrok van der Werven
+.Aq asmodai@FreeBSD.org
+and
+.An Michael Smith
+.Aq msmith@FreeBSD.org .
+.Sh BUGS
+The driver does not yet support EISA adapters.
+The DEC KZPSC has insufficient flash ROM to hold any reasonably recent firmware.
+This has caused problems for this driver.
+.Pp
+The driver does not yet support the version 6.x firmware as found in the
+AcceleRAID 352 and eXtremeRAID 2000 and 3000 products.
diff --git a/share/man/man4/mly.4 b/share/man/man4/mly.4
new file mode 100644
index 0000000..3affcac
--- /dev/null
+++ b/share/man/man4/mly.4
@@ -0,0 +1,272 @@
+.\"
+.\" Copyright (c) 2000 Michael Smith
+.\" Copyright (c) 2000 BSDi
+.\" 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. 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$
+.\"
+.Dd August 10, 2004
+.Dt MLY 4
+.Os
+.Sh NAME
+.Nm mly
+.Nd Mylex AcceleRAID/eXtremeRAID family driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device da"
+.Cd "device mly"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mly_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Mylex AcceleRAID and eXtremeRAID-family
+PCI to SCSI RAID controllers with version 6.00 and later
+firmware.
+.Pp
+Logical devices (array drives) attached to the controller are presented
+to the SCSI subsystem as though they were direct-access devices on a
+virtual SCSI bus.
+Physical devices which are not claimed by a logical
+device are presented on SCSI channels which match the physical channels
+on the controller.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Mylex AcceleRAID 160
+.It
+Mylex AcceleRAID 170
+.It
+Mylex AcceleRAID 352
+.It
+Mylex eXtremeRAID 2000
+.It
+Mylex eXtremeRAID 3000
+.El
+.Pp
+Compatible Mylex controllers not listed should work, but have not been
+verified.
+.Sh DIAGNOSTICS
+.Ss Controller initialisation phase
+.Bl -diag
+.It "mly%d: controller initialisation started"
+.It "mly%d: initialisation complete"
+.Pp
+The controller firmware has started initialisation.
+Normally this process is performed by the controller BIOS,
+but the driver may need
+to do this in cases where the BIOS has failed, or is not compatible
+(e.g.\& on non-x86 systems).
+.It "mly%d: drive spinup in progress"
+.Pp
+Drive startup is in progress; this may take several minutes.
+.It "mly%d: mirror race recovery failed, one or more drives offline"
+.It "mly%d: mirror race recovery in progress"
+.It "mly%d: mirror race recovery on a critical drive"
+.Pp
+These error codes are undocumented.
+.It "mly%d: FATAL MEMORY PARITY ERROR"
+.Pp
+Firmware detected a fatal memory error; the driver will not attempt to
+attach to this controller.
+.It "mly%d: unknown initialisation code %x"
+.Pp
+An unknown error occurred during initialisation; it will be ignored.
+.El
+.Ss Driver initialisation/shutdown phase
+.Bl -diag
+.It "mly%d: can't enable busmaster feature"
+.It "mly%d: memory window not available"
+.It "mly%d: can't allocate register window"
+.It "mly%d: can't allocate interrupt"
+.It "mly%d: can't set up interrupt"
+.Pp
+The system's PCI BIOS has not correctly configured the controller's
+PCI interface; initialisation has failed and the driver will not
+attach to this controller.
+.It "mly%d: can't allocate parent DMA tag"
+.It "mly%d: can't allocate buffer DMA tag"
+.It "mly%d: can't allocate command packet DMA tag"
+.It "mly%d: can't allocate scatter/gather DMA tag"
+.It "mly%d: can't allocate s/g table"
+.It "mly%d: can't allocate memory mailbox DMA tag"
+.It "mly%d: can't allocate memory mailbox"
+.Pp
+A resource allocation error occurred while initialising the driver;
+initialisation has failed and the driver will not attach to this
+controller.
+.It "mly%d: BTL rescan result corrupted"
+.Pp
+The results of a scan for an attached device were corrupted.
+One or more devices may not be correctly reported.
+.It "mly%d: flushing cache..."
+.Pp
+The controller cache is being flushed prior to detach or shutdown.
+.El
+.Ss Operational diagnostics
+.Bl -diag
+.It "mly%d: physical device %d:%d online"
+.It "mly%d: physical device %d:%d standby"
+.It "mly%d: physical device %d:%d automatic rebuild started"
+.It "mly%d: physical device %d:%d manual rebuild started"
+.It "mly%d: physical device %d:%d rebuild completed"
+.It "mly%d: physical device %d:%d rebuild cancelled"
+.It "mly%d: physical device %d:%d rebuild failed for unknown reasons"
+.It "mly%d: physical device %d:%d rebuild failed due to new physical device"
+.It "mly%d: physical device %d:%d rebuild failed due to logical drive failure"
+.It "mly%d: physical device %d:%d found"
+.It "mly%d: physical device %d:%d gone"
+.It "mly%d: physical device %d:%d unconfigured"
+.It "mly%d: physical device %d:%d expand capacity started"
+.It "mly%d: physical device %d:%d expand capacity completed"
+.It "mly%d: physical device %d:%d expand capacity failed"
+.It "mly%d: physical device %d:%d parity error"
+.It "mly%d: physical device %d:%d soft error"
+.It "mly%d: physical device %d:%d miscellaneous error"
+.It "mly%d: physical device %d:%d reset"
+.It "mly%d: physical device %d:%d active spare found"
+.It "mly%d: physical device %d:%d warm spare found"
+.It "mly%d: physical device %d:%d initialization started"
+.It "mly%d: physical device %d:%d initialization completed"
+.It "mly%d: physical device %d:%d initialization failed"
+.It "mly%d: physical device %d:%d initialization cancelled"
+.It "mly%d: physical device %d:%d write recovery failed"
+.It "mly%d: physical device %d:%d scsi bus reset failed"
+.It "mly%d: physical device %d:%d double check condition"
+.It "mly%d: physical device %d:%d device cannot be accessed"
+.It "mly%d: physical device %d:%d gross error on scsi processor"
+.It "mly%d: physical device %d:%d bad tag from device"
+.It "mly%d: physical device %d:%d command timeout"
+.It "mly%d: physical device %d:%d system reset"
+.It "mly%d: physical device %d:%d busy status or parity error"
+.It "mly%d: physical device %d:%d host set device to failed state"
+.It "mly%d: physical device %d:%d selection timeout"
+.It "mly%d: physical device %d:%d scsi bus phase error"
+.It "mly%d: physical device %d:%d device returned unknown status"
+.It "mly%d: physical device %d:%d device not ready"
+.It "mly%d: physical device %d:%d device not found at startup"
+.It "mly%d: physical device %d:%d COD write operation failed"
+.It "mly%d: physical device %d:%d BDT write operation failed"
+.It "mly%d: physical device %d:%d missing at startup"
+.It "mly%d: physical device %d:%d start rebuild failed due to physical drive too small"
+.It "mly%d: physical device %d:%d sense data received"
+.It "mly%d: sense key %d asc %02x ascq %02x"
+.It "mly%d: info %4D csi %4D"
+.It "mly%d: physical device %d:%d offline"
+.It "mly%d: sense key %d asc %02x ascq %02x"
+.It "mly%d: info %4D csi %4D"
+.Pp
+The reported event refers to the physical device at the given channel:target
+address.
+.It "mly%d: logical device %d (%s) consistency check started"
+.It "mly%d: logical device %d (%s) consistency check completed"
+.It "mly%d: logical device %d (%s) consistency check cancelled"
+.It "mly%d: logical device %d (%s) consistency check completed with errors"
+.It "mly%d: logical device %d (%s) consistency check failed due to logical drive failure"
+.It "mly%d: logical device %d (%s) consistency check failed due to physical device failure"
+.It "mly%d: logical device %d (%s) automatic rebuild started"
+.It "mly%d: logical device %d (%s) manual rebuild started"
+.It "mly%d: logical device %d (%s) rebuild completed"
+.It "mly%d: logical device %d (%s) rebuild cancelled"
+.It "mly%d: logical device %d (%s) rebuild failed for unknown reasons"
+.It "mly%d: logical device %d (%s) rebuild failed due to new physical device"
+.It "mly%d: logical device %d (%s) rebuild failed due to logical drive failure"
+.It "mly%d: logical device %d (%s) offline"
+.It "mly%d: logical device %d (%s) critical"
+.It "mly%d: logical device %d (%s) online"
+.It "mly%d: logical device %d (%s) initialization started"
+.It "mly%d: logical device %d (%s) initialization completed"
+.It "mly%d: logical device %d (%s) initialization cancelled"
+.It "mly%d: logical device %d (%s) initialization failed"
+.It "mly%d: logical device %d (%s) found"
+.It "mly%d: logical device %d (%s) gone"
+.It "mly%d: logical device %d (%s) expand capacity started"
+.It "mly%d: logical device %d (%s) expand capacity completed"
+.It "mly%d: logical device %d (%s) expand capacity failed"
+.It "mly%d: logical device %d (%s) bad block found"
+.It "mly%d: logical device %d (%s) size changed"
+.It "mly%d: logical device %d (%s) type changed"
+.It "mly%d: logical device %d (%s) bad data block found"
+.It "mly%d: logical device %d (%s) read of data block in bdt"
+.It "mly%d: logical device %d (%s) write back data for disk block lost"
+.Pp
+The event report will include the name of the SCSI device which has
+attached to the device if possible.
+.It "mly%d: enclosure %d fan %d failed"
+.It "mly%d: enclosure %d fan %d ok"
+.It "mly%d: enclosure %d fan %d not present"
+.It "mly%d: enclosure %d power supply %d failed"
+.It "mly%d: enclosure %d power supply %d ok"
+.It "mly%d: enclosure %d power supply %d not present"
+.It "mly%d: enclosure %d temperature sensor %d failed"
+.It "mly%d: enclosure %d temperature sensor %d critical"
+.It "mly%d: enclosure %d temperature sensor %d ok"
+.It "mly%d: enclosure %d temperature sensor %d not present"
+.It "mly%d: enclosure %d unit %d access critical"
+.It "mly%d: enclosure %d unit %d access ok"
+.It "mly%d: enclosure %d unit %d access offline"
+.Pp
+These events refer to external enclosures by number.
+The driver does not attempt to name the enclosures.
+.It "mly%d: controller cache write back error"
+.It "mly%d: controller battery backup unit found"
+.It "mly%d: controller battery backup unit charge level low"
+.It "mly%d: controller battery backup unit charge level ok"
+.It "mly%d: controller installation aborted"
+.It "mly%d: controller mirror race recovery in progress"
+.It "mly%d: controller mirror race on critical drive"
+.It "mly%d: controller memory soft ecc error"
+.It "mly%d: controller memory hard ecc error"
+.It "mly%d: controller battery backup unit failed"
+.Pp
+These events report controller status changes.
+.El
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Michael Smith
+.Aq msmith@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Michael Smith
+.Aq msmith@FreeBSD.org .
+.Sh BUGS
+The driver does not yet provide an external management interface.
+.Pp
+Enclosures are not named or otherwise identified in event messages.
diff --git a/share/man/man4/mmc.4 b/share/man/man4/mmc.4
new file mode 100644
index 0000000..867c6e7
--- /dev/null
+++ b/share/man/man4/mmc.4
@@ -0,0 +1,60 @@
+.\"
+.\" Copyright (c) 2007 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd October 8, 2008
+.Dt MMC 4
+.Os
+.Sh NAME
+.Nm mmc
+.Nd MultiMediaCard and SD Card bus driver
+.Sh SYNOPSIS
+.Cd device mmc
+.Sh DESCRIPTION
+The
+.Nm
+driver implements the MMC and SD Card bus.
+The
+.Nm
+driver supports all MMC and SD bridges in the system.
+All SD or MMC cards in the system attach to an instance of
+.Nm .
+The
+.Nm
+bus typically has only one slot, and only memory cards.
+MultiMediaCards exist only in memory.
+SD Cards exist as memory, I/O, or combination cards.
+.Sh SEE ALSO
+.Xr mmcsd 4 ,
+.Xr at91_mci 4 ,
+.Xr sdhci 4
+.Rs
+.%T "SD Specifications, Part 1, Physical Layer, Simplified Specification"
+.Re
+.Rs
+.%T "The MultiMediaCard System Specification"
+.Re
+.Sh BUGS
+SDIO cards currently do not work.
diff --git a/share/man/man4/mmcsd.4 b/share/man/man4/mmcsd.4
new file mode 100644
index 0000000..646e032
--- /dev/null
+++ b/share/man/man4/mmcsd.4
@@ -0,0 +1,48 @@
+.\"
+.\" Copyright (c) 2007 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd October 22, 2008
+.Dt MMCSD 4
+.Os
+.Sh NAME
+.Nm mmcsd
+.Nd MMC and SD memory card driver.
+.Sh SYNOPSIS
+.Cd device mmcsd
+.Sh DESCRIPTION
+The
+.Nm
+driver implements direct access block device for MMC and SD memory cards.
+.Sh SEE ALSO
+.Xr mmc 4 ,
+.Xr at91_mci 4 ,
+.Xr sdhci 4
+.Rs
+.%T "SD Specifications, Part 1, Physical Layer, Simplified Specification"
+.Re
+.Rs
+.%T "The MultiMediaCard System Specification"
+.Re
diff --git a/share/man/man4/mn.4 b/share/man/man4/mn.4
new file mode 100644
index 0000000..0b88f2f
--- /dev/null
+++ b/share/man/man4/mn.4
@@ -0,0 +1,55 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" 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 ITS 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 THE 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$
+.\"
+.Dd May 10, 2005
+.Dt MN 4
+.Os
+.Sh NAME
+.Nm mn
+.Nd "Siemens Easy321-R1 E1/T1 device driver"
+.Sh SYNOPSIS
+.Cd "device mn"
+.Cd "options NETGRAPH"
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the Siemens Easy321-R1 E1/T1 reference
+design card.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr netintro 4 ,
+.Xr pci 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Poul-Henning Kamp Aq phk@FreeBSD.org .
diff --git a/share/man/man4/mouse.4 b/share/man/man4/mouse.4
new file mode 100644
index 0000000..f50fc01
--- /dev/null
+++ b/share/man/man4/mouse.4
@@ -0,0 +1,403 @@
+.\"
+.\" Copyright (c) 1997
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd December 3, 1997
+.Dt MOUSE 4
+.Os
+.Sh NAME
+.Nm mouse
+.Nd mouse and pointing device drivers
+.Sh SYNOPSIS
+.In sys/mouse.h
+.Sh DESCRIPTION
+The mouse drivers
+.Xr mse 4 ,
+.Xr psm 4 ,
+.Xr ums 4
+and
+.Xr sysmouse 4
+provide user programs with movement and button state information of the mouse.
+Currently there are specific device drivers for bus, InPort, PS/2, and USB mice.
+The serial mouse is not directly supported by a dedicated driver, but
+it is accessible via the serial device driver or via
+.Xr moused 8
+and
+.Xr sysmouse 4 .
+.Pp
+The user program simply opens a mouse device with a
+.Xr open 2
+call and reads
+mouse data from the device via
+.Xr read 2 .
+Movement and button states are usually encoded in fixed-length data packets.
+Some mouse devices may send data in variable length of packets.
+Actual protocol (data format) used by each driver differs widely.
+.Pp
+The mouse drivers may have ``non-blocking'' attribute which will make
+the driver return immediately if mouse data is not available.
+.Pp
+Mouse device drivers often offer several levels of operation.
+The current operation level can be examined and changed via
+.Xr ioctl 2
+commands.
+The level zero is the lowest level at which the driver offers the basic
+service to user programs.
+Most drivers provide horizontal and vertical movement of the mouse
+and state of up to three buttons at this level.
+At the level one, if supported by the driver, mouse data is encoded
+in the standard format
+.Dv MOUSE_PROTO_SYSMOUSE
+as follows:
+.Pp
+.Bl -tag -width Byte_1 -compact
+.It Byte 1
+.Bl -tag -width bit_7 -compact
+.It bit 7
+Always one.
+.It bit 6..3
+Always zero.
+.It bit 2
+Left button status; cleared if pressed, otherwise set.
+.It bit 1
+Middle button status; cleared if pressed, otherwise set.
+Always one,
+if the device does not have the middle button.
+.It bit 0
+Right button status; cleared if pressed, otherwise set.
+.El
+.It Byte 2
+The first half of horizontal movement count in two's complement;
+-128 through 127.
+.It Byte 3
+The first half of vertical movement count in two's complement;
+-128 through 127.
+.It Byte 4
+The second half of the horizontal movement count in two's complement;
+-128 through 127.
+To obtain the full horizontal movement count, add
+the byte 2 and 4.
+.It Byte 5
+The second half of the vertical movement count in two's complement;
+-128 through 127.
+To obtain the full vertical movement count, add
+the byte 3 and 5.
+.It Byte 6
+The bit 7 is always zero.
+The lower 7 bits encode the first half of
+Z axis movement count in two's complement; -64 through 63.
+.It Byte 7
+The bit 7 is always zero.
+The lower 7 bits encode the second half of
+the Z axis movement count in two's complement; -64 through 63.
+To obtain the full Z axis movement count, add the byte 6 and 7.
+.It Byte 8
+The bit 7 is always zero.
+The bits 0 through 6 reflect the state
+of the buttons 4 through 10.
+If a button is pressed, the corresponding bit is cleared.
+Otherwise
+the bit is set.
+.El
+.Pp
+The first 5 bytes of this format is compatible with the MouseSystems
+format.
+The additional 3 bytes have their MSBs always set to zero.
+Thus, if the user program can interpret the MouseSystems data format and
+tries to find the first byte of the format by detecting the bit pattern
+10000xxxb,
+it will discard the additional bytes, thus, be able to decode x, y
+and states of 3 buttons correctly.
+.Pp
+Device drivers may offer operation levels higher than one.
+Refer to manual pages of individual drivers for details.
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+commands are defined for the mouse drivers.
+The degree of support
+varies from one driver to another.
+This section gives general
+description of the commands.
+Refer to manual pages of individual drivers for specific details.
+.Pp
+.Bl -tag -width MOUSE -compact
+.It Dv MOUSE_GETLEVEL Ar int *level
+.It Dv MOUSE_SETLEVEL Ar int *level
+These commands manipulate the operation level of the mouse driver.
+.Pp
+.It Dv MOUSE_GETHWINFO Ar mousehw_t *hw
+Returns the hardware information of the attached device in the following
+Except for the
+.Dv iftype
+field, the device driver may not always fill the structure with correct
+values.
+Consult manual pages of individual drivers for details of support.
+.Bd -literal
+typedef struct mousehw {
+ int buttons; /* number of buttons */
+ int iftype; /* I/F type */
+ int type; /* mouse/track ball/pad... */
+ int model; /* I/F dependent model ID */
+ int hwid; /* I/F dependent hardware ID */
+} mousehw_t;
+.Ed
+.Pp
+The
+.Dv buttons
+field holds the number of buttons detected by the driver.
+The driver
+may put an arbitrary value, such as two, in this field, if it cannot
+determine the exact number.
+.Pp
+The
+.Dv iftype
+is the type of interface:
+.Dv MOUSE_IF_SERIAL ,
+.Dv MOUSE_IF_BUS ,
+.Dv MOUSE_IF_INPORT ,
+.Dv MOUSE_IF_PS2 ,
+.Dv MOUSE_IF_USB ,
+.Dv MOUSE_IF_SYSMOUSE
+or
+.Dv MOUSE_IF_UNKNOWN .
+.Pp
+The
+.Dv type
+tells the device type:
+.Dv MOUSE_MOUSE ,
+.Dv MOUSE_TRACKBALL ,
+.Dv MOUSE_STICK ,
+.Dv MOUSE_PAD ,
+or
+.Dv MOUSE_UNKNOWN .
+.Pp
+The
+.Dv model
+may be
+.Dv MOUSE_MODEL_GENERIC
+or one of
+.Dv MOUSE_MODEL_XXX
+constants.
+.Pp
+The
+.Dv hwid
+is the ID value returned by the pointing device.
+It
+depend on the interface type; refer to the manual page of
+specific mouse drivers for possible values.
+.Pp
+.It Dv MOUSE_GETMODE Ar mousemode_t *mode
+The command reports the current operation parameters of the mouse driver.
+.Bd -literal
+typedef struct mousemode {
+ int protocol; /* MOUSE_PROTO_XXX */
+ int rate; /* report rate (per sec) */
+ int resolution; /* MOUSE_RES_XXX, -1 if unknown */
+ int accelfactor; /* acceleration factor */
+ int level; /* driver operation level */
+ int packetsize; /* the length of the data packet */
+ unsigned char syncmask[2]; /* sync. bits */
+} mousemode_t;
+.Ed
+.Pp
+The
+.Dv protocol
+field tells the format in which the device status is returned
+when the mouse data is read by the user program.
+It is one of
+.Dv MOUSE_PROTO_XXX
+constants.
+.Pp
+The
+.Dv rate
+field is the status report rate (reports/sec) at which the device will send
+movement reports to the host computer.
+-1 if unknown or not applicable.
+.Pp
+The
+.Dv resolution
+field holds a value specifying resolution of the pointing device.
+It is a positive value or one of
+.Dv MOUSE_RES_XXX
+constants.
+.Pp
+The
+.Dv accelfactor
+field holds a value to control acceleration feature.
+It must be zero or greater.
+If it is zero, acceleration is disabled.
+.Pp
+The
+.Dv packetsize
+field tells the length of the fixed-size data packet or the length
+of the fixed part of the variable-length packet.
+The size depends on the interface type, the device type and model, the
+protocol and the operation level of the driver.
+.Pp
+The array
+.Dv syncmask
+holds a bit mask and pattern to detect the first byte of the
+data packet.
+.Dv syncmask[0]
+is the bit mask to be ANDed with a byte.
+If the result is equal to
+.Dv syncmask[1] ,
+the byte is likely to be the first byte of the data packet.
+Note that this method of detecting the first byte is not 100% reliable,
+thus, should be taken only as an advisory measure.
+.Pp
+.It Dv MOUSE_SETMODE Ar mousemode_t *mode
+The command changes the current operation parameters of the mouse driver
+as specified in
+.Ar mode .
+Only
+.Dv rate ,
+.Dv resolution ,
+.Dv level
+and
+.Dv accelfactor
+may be modifiable.
+Setting values in the other field does not generate
+error and has no effect.
+.Pp
+If you do not want to change the current setting of a field, put -1
+there.
+You may also put zero in
+.Dv resolution
+and
+.Dv rate ,
+and the default value for the fields will be selected.
+.\" .Pp
+.\" .It Dv MOUSE_GETVARS Ar mousevar_t *vars
+.\" Get internal variables of the mouse driver.
+.\" The variables which can be manipulated through these commands
+.\" are specific to each driver.
+.\" This command may not be supported by all drivers.
+.\" .Bd -literal
+.\" typedef struct mousevar {
+.\" int var[16]; /* internal variables */
+.\" } mousevar_t;
+.\" .Ed
+.\" .Pp
+.\" If the commands are supported, the first element of the array is
+.\" filled with a signature value.
+.\" Apart from the signature data, there is currently no standard concerning
+.\" the other elements of the buffer.
+.\" .Pp
+.\" .It Dv MOUSE_SETVARS Ar mousevar_t *vars
+.\" Get internal variables of the mouse driver.
+.\" The first element of the array must be a signature value.
+.\" This command may not be supported by all drivers.
+.Pp
+.It Dv MOUSE_READDATA Ar mousedata_t *data
+The command reads the raw data from the device.
+.Bd -literal
+typedef struct mousedata {
+ int len; /* # of data in the buffer */
+ int buf[16]; /* data buffer */
+} mousedata_t;
+.Ed
+.Pp
+The calling process must fill the
+.Dv len
+field with the number of bytes to be read into the buffer.
+This command may not be supported by all drivers.
+.Pp
+.It Dv MOUSE_READSTATE Ar mousedata_t *state
+The command reads the raw state data from the device.
+It uses the same structure as above.
+This command may not be supported by all drivers.
+.Pp
+.It Dv MOUSE_GETSTATUS Ar mousestatus_t *status
+The command returns the current state of buttons and
+movement counts in the following structure.
+.Bd -literal
+typedef struct mousestatus {
+ int flags; /* state change flags */
+ int button; /* button status */
+ int obutton; /* previous button status */
+ int dx; /* x movement */
+ int dy; /* y movement */
+ int dz; /* z movement */
+} mousestatus_t;
+.Ed
+.Pp
+The
+.Dv button
+and
+.Dv obutton
+fields hold the current and the previous state of the mouse buttons.
+When a button is pressed, the corresponding bit is set.
+The mouse drivers may support up to 31 buttons with the bit 0 through 31.
+Few button bits are defined as
+.Dv MOUSE_BUTTON1DOWN
+through
+.Dv MOUSE_BUTTON8DOWN .
+The first three buttons correspond to left, middle and right buttons.
+.Pp
+If the state of the button has changed since the last
+.Dv MOUSE_GETSTATUS
+call, the corresponding bit in the
+.Dv flags
+field will be set.
+If the mouse has moved since the last call, the
+.Dv MOUSE_POSCHANGED
+bit in the
+.Dv flags
+field will also be set.
+.Pp
+The other fields hold movement counts since the last
+.Dv MOUSE_GETSTATUS
+call.
+The internal counters will be reset after every call to this
+command.
+.El
+.Sh FILES
+.Bl -tag -width /dev/sysmouseXX -compact
+.It Pa /dev/cuad%d
+serial ports
+.It Pa /dev/mse%d
+bus and InPort mouse device
+.It Pa /dev/psm%d
+PS/2 mouse device
+.It Pa /dev/sysmouse
+virtual mouse device
+.It Pa /dev/ums%d
+USB mouse device
+.El
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr mse 4 ,
+.Xr psm 4 ,
+.Xr sysmouse 4 ,
+.Xr ums 4 ,
+.Xr moused 8
+.\".Sh HISTORY
+.Sh AUTHORS
+This manual page was written by
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
diff --git a/share/man/man4/mpt.4 b/share/man/man4/mpt.4
new file mode 100644
index 0000000..5c87a50
--- /dev/null
+++ b/share/man/man4/mpt.4
@@ -0,0 +1,183 @@
+.\" $NetBSD: mpt.4,v 1.1 2003/04/16 22:32:15 thorpej Exp $
+.\"
+.\" Copyright (c) 2003 Wasabi Systems, Inc.
+.\" All rights reserved.
+.\"
+.\" Written by Jason R. Thorpe for Wasabi Systems, 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.
+.\" 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 by
+.\" Wasabi Systems, Inc.
+.\" 4. The name of Wasabi Systems, Inc. may not be used to endorse
+.\" or promote products derived from this software without specific prior
+.\" written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``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 WASABI SYSTEMS, INC
+.\" 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$
+.\"
+.Dd April 6, 2007
+.Dt MPT 4
+.Os
+.Sh NAME
+.Nm mpt
+.Nd LSI Fusion-MPT SCSI/Fibre Channel driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device mpt"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+mpt_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support
+for the LSI Logic Fusion-MPT family of
+.Tn SCSI ,
+.Tn Fibre Channel
+and
+.Tn SAS
+controllers.
+.Sh HARDWARE
+The following controllers are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+LSI Logic 53c1030,
+LSI Logic LSI2x320-X
+(Single and Dual Ultra320
+.Tn SCSI )
+.It
+LSI Logic AS1064,
+LSI Logic AS1068
+.Pq Tn SAS/SATA
+.It
+LSI Logic FC909
+(1Gb/s
+.Tn Fibre Channel )
+.It
+LSI Logic FC909A
+(Dual 1Gb/s
+.Tn Fibre Channel )
+.It
+LSI Logic FC919,
+LSI Logic 7102XP-LC
+(Single 2Gb/s
+.Tn Fibre Channel )
+.It
+LSI Logic FC929,
+LSI Logic FC929X,
+LSI Logic 7202XP-LC
+(Dual 2Gb/s
+.Tn Fibre Channel )
+.It
+LSI Logic FC949X
+(Dual 4Gb/s
+.Tn Fibre Channel )
+.It
+LSI Logic FC949ES
+(Dual 4Gb/s
+.Tn Fibre Channel PCI-Express)
+.El
+.Pp
+The
+.Tn Ultra 320 SCSI
+controller chips supported by the
+.Nm
+driver can be found onboard on many systems including:
+.Pp
+.Bl -bullet -compact
+.It
+Dell PowerEdge 1750 thru 2850
+.It
+IBM eServer xSeries 335
+.El
+.Pp
+These systems also contain Integrated Raid Mirroring and Integrated
+Raid Mirroring Enhanced which this driver also supports.
+.Pp
+The
+.Tn SAS
+controller chips are also present on many new AMD/Opteron based systems,
+like the Sun 4100.
+Note that this controller can drive both SAS and SATA
+drives or a mix of them at the same time. The Integrated Raid Mirroring
+available for these controllers is poorly supported at best.
+.Pp
+The
+.Tn Fibre Channel
+controller chipset are supported by a broad variety of speeds and systems.
+The
+.Tn Apple
+Fibre Channel HBA is in fact the
+.Tn FC949ES
+card.
+.Pp
+This driver also supports target mode for Fibre Channel cards.
+This support may be enabled by setting the desired role of the core via
+the LSI Logic firmware utility that establishes what roles the card
+can take on - no separate compilation is required.
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr pci 4 ,
+.Xr sa 4 ,
+.Xr scsi 4 ,
+.Xr targ 4
+.Rs
+.%T "LSI Logic Website"
+.%O http://www.lsilogic.com/
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was originally written for
+.Fx
+by
+.An Greg Ansley
+and marginally improved upon
+by
+.An Matt Jacob Aq mjacob@FreeBSD.org .
+.Pp
+.An Justin Gibbs Aq gibbs@FreeBSD.org
+and
+.An Scott Long Aq scottl@FreeBSD.org
+have made more substantial improvements.
+.Sh BUGS
diff --git a/share/man/man4/msk.4 b/share/man/man4/msk.4
new file mode 100644
index 0000000..1d9c9bb
--- /dev/null
+++ b/share/man/man4/msk.4
@@ -0,0 +1,249 @@
+.\" Copyright (c) 2006 Pyun YongHyeon
+.\" 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$
+.\"
+.Dd December 5, 2007
+.Dt MSK 4
+.Os
+.Sh NAME
+.Nm msk
+.Nd Marvell/SysKonnect Yukon II Gigabit Ethernet adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device msk"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_msk_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for various NICs based on the
+Marvell/SysKonnect Yukon II Gigabit Ethernet controller chip.
+.Pp
+All NICs supported by the
+.Nm
+driver have TCP/UDP/IP checksum offload for transmit, TCP
+segmentation offload (TSO), hardware VLAN tag stripping/insertion
+features and an interrupt moderation mechanism as well as a 64-bit
+multicast hash filter.
+The Yukon II supports TBI (ten bit interface) and GMII
+transceivers, which means it can be used with either copper or
+1000baseX fiber applications.
+.Pp
+The Yukon II also supports Jumbo Frames (up to 9022 bytes), which can be
+configured via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseSX
+Set 1000Mbps (Gigabit Ethernet) operation.
+Both
+.Cm full-duplex
+and
+.Cm half-duplex
+modes are supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+The
+.Nm
+driver also supports one special link option for 1000baseTX cards:
+.Bl -tag -width ".Cm link0"
+.It Cm link0
+With 1000baseTX cards, establishing a link between two ports requires
+that one port is configured as master and the other one as slave.
+With autonegotiation,
+the master/slave settings will be chosen automatically.
+However when manually selecting the link state, it is necessary to
+force one side of the link to be a master and the other a slave.
+The
+.Nm
+driver configures the ports as slaves by default.
+Setting the
+.Cm link0
+flag with
+.Xr ifconfig 8
+will set a port as a master instead.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver provides support for various NICs based on the Marvell/SysKonnect
+Yukon II based Gigabit Ethernet controller chips, including:
+.Pp
+.Bl -bullet -compact
+.It
+D-Link 550SX Gigabit Ethernet
+.It
+D-Link 560T Gigabit Ethernet
+.It
+Marvell Yukon 88E8021CU Gigabit Ethernet
+.It
+Marvell Yukon 88E8021 SX/LX Gigabit Ethernet
+.It
+Marvell Yukon 88E8022CU Gigabit Ethernet
+.It
+Marvell Yukon 88E8022 SX/LX Gigabit Ethernet
+.It
+Marvell Yukon 88E8061CU Gigabit Ethernet
+.It
+Marvell Yukon 88E8061 SX/LX Gigabit Ethernet
+.It
+Marvell Yukon 88E8062CU Gigabit Ethernet
+.It
+Marvell Yukon 88E8062 SX/LX Gigabit Ethernet
+.It
+Marvell Yukon 88E8035 Gigabit Ethernet
+.It
+Marvell Yukon 88E8036 Gigabit Ethernet
+.It
+Marvell Yukon 88E8038 Gigabit Ethernet
+.It
+Marvell Yukon 88E8039 Gigabit Ethernet
+.It
+Marvell Yukon 88E8050 Gigabit Ethernet
+.It
+Marvell Yukon 88E8052 Gigabit Ethernet
+.It
+Marvell Yukon 88E8053 Gigabit Ethernet
+.It
+Marvell Yukon 88E8055 Gigabit Ethernet
+.It
+Marvell Yukon 88E8056 Gigabit Ethernet
+.It
+Marvell Yukon 88E8058 Gigabit Ethernet
+.It
+SysKonnect SK-9Sxx Gigabit Ethernet
+.It
+SysKonnect SK-9Exx Gigabit Ethernet
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.It Va hw.msk.msi_disable
+This tunable disables MSI support on the Ethernet hardware.
+The default value is 0.
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va dev.mskc.%d.process_limit
+Maximum amount of Rx events to be processed in the event loop before
+rescheduling a taskqueue.
+The accepted range is 30 to 256, the default value is 128 events.
+The interface does not need to be brought down and up again before
+a change takes effect.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver was written by
+.An Pyun YongHyeon
+.Aq yongari@FreeBSD.org
+and it is based on
+.Xr sk 4
+and Marvell's
+.Fx
+driver.
+It first appeared in
+.Fx 7.0
+and
+.Fx 6.3 .
diff --git a/share/man/man4/mtio.4 b/share/man/man4/mtio.4
new file mode 100644
index 0000000..735da63
--- /dev/null
+++ b/share/man/man4/mtio.4
@@ -0,0 +1,316 @@
+.\" Copyright (c) 1996
+.\" Mike Pritchard <mpp@FreeBSD.org>. All rights reserved.
+.\"
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)mtio.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd February 11, 1996
+.Dt MTIO 4
+.Os
+.Sh NAME
+.Nm mtio
+.Nd FreeBSD magtape interface
+.Sh DESCRIPTION
+The special files
+named
+.Pa /dev/[n]sa*
+refer to SCSI tape drives,
+which may be attached to the system.
+.Pa /dev/[n]sa*.ctl
+are control devices that can be used to issue ioctls to the SCSI
+tape driver to set parameters that are required to last beyond the
+unmounting of a tape.
+.Pp
+.Pp
+The rewind devices automatically rewind
+when the last requested read, write or seek has finished, or the end of the tape
+has been reached.
+The letter
+.Ql n
+is usually prepended to
+the name of the no-rewind devices.
+.Pp
+Tapes can be written with either fixed length records or variable length
+records.
+See
+.Xr sa 4
+for more information.
+Two end-of-file markers mark the end of a tape, and
+one end-of-file marker marks the end of a tape file.
+If the tape is not to be rewound it is positioned with the
+head in between the two tape marks, where the next write
+will over write the second end-of-file marker.
+.Pp
+All of the magtape devices may be manipulated with the
+.Xr mt 1
+command.
+.Pp
+A number of
+.Xr ioctl 2
+operations are available
+on raw magnetic tape.
+The following definitions are from
+.In sys/mtio.h :
+.Bd -literal
+#ifndef _SYS_MTIO_H_
+#define _SYS_MTIO_H_
+
+#ifndef _KERNEL
+#include <sys/types.h>
+#endif
+#include <sys/ioccom.h>
+
+/*
+ * Structures and definitions for mag tape io control commands
+ */
+
+/* structure for MTIOCTOP - mag tape op command */
+struct mtop {
+ short mt_op; /* operations defined below */
+ daddr_t mt_count; /* how many of them */
+};
+
+/* operations */
+#define MTWEOF 0 /* write an end-of-file record */
+#define MTFSF 1 /* forward space file */
+#define MTBSF 2 /* backward space file */
+#define MTFSR 3 /* forward space record */
+#define MTBSR 4 /* backward space record */
+#define MTREW 5 /* rewind */
+#define MTOFFL 6 /* rewind and put the drive offline */
+#define MTNOP 7 /* no operation, sets status only */
+#define MTCACHE 8 /* enable controller cache */
+#define MTNOCACHE 9 /* disable controller cache */
+
+#if defined(__FreeBSD__)
+/* Set block size for device. If device is a variable size dev */
+/* a non zero parameter will change the device to a fixed block size */
+/* device with block size set to that of the parameter passed in. */
+/* Resetting the block size to 0 will restore the device to a variable */
+/* block size device. */
+
+#define MTSETBSIZ 10
+
+/* Set density values for device. Sets the value for the opened mode only. */
+
+#define MTSETDNSTY 11
+
+#define MTERASE 12 /* erase to EOM */
+#define MTEOD 13 /* Space to EOM */
+#define MTCOMP 14 /* select compression mode 0=off, 1=def */
+#define MTRETENS 15 /* re-tension tape */
+#define MTWSS 16 /* write setmark(s) */
+#define MTFSS 17 /* forward space setmark */
+#define MTBSS 18 /* backward space setmark */
+
+#define MT_COMP_ENABLE 0xffffffff
+#define MT_COMP_DISABLED 0xfffffffe
+#define MT_COMP_UNSUPP 0xfffffffd
+
+/*
+ * Values in mt_dsreg that say what the device is doing
+ */
+#define MTIO_DSREG_NIL 0 /* Unknown */
+#define MTIO_DSREG_REST 1 /* Doing Nothing */
+#define MTIO_DSREG_RBSY 2 /* Communicating with tape (but no motion) */
+#define MTIO_DSREG_WR 20 /* Writing */
+#define MTIO_DSREG_FMK 21 /* Writing Filemarks */
+#define MTIO_DSREG_ZER 22 /* Erasing */
+#define MTIO_DSREG_RD 30 /* Reading */
+#define MTIO_DSREG_FWD 40 /* Spacing Forward */
+#define MTIO_DSREG_REV 41 /* Spacing Reverse */
+#define MTIO_DSREG_POS 42 /* Hardware Positioning (direction unknown) */
+#define MTIO_DSREG_REW 43 /* Rewinding */
+#define MTIO_DSREG_TEN 44 /* Retensioning */
+#define MTIO_DSREG_UNL 45 /* Unloading */
+#define MTIO_DSREG_LD 46 /* Loading */
+
+#endif /* __FreeBSD__ */
+
+/* structure for MTIOCGET - mag tape get status command */
+
+struct mtget {
+ short mt_type; /* type of magtape device */
+/* the following two registers are grossly device dependent */
+ short mt_dsreg; /* ``drive status'' register */
+ short mt_erreg; /* ``error'' register */
+/* end device-dependent registers */
+ short mt_resid; /* residual count */
+#if defined (__FreeBSD__)
+ daddr_t mt_blksiz; /* presently operating blocksize */
+ daddr_t mt_density; /* presently operating density */
+ u_int32_t mt_comp; /* presently operating compression */
+ daddr_t mt_blksiz0; /* blocksize for mode 0 */
+ daddr_t mt_blksiz1; /* blocksize for mode 1 */
+ daddr_t mt_blksiz2; /* blocksize for mode 2 */
+ daddr_t mt_blksiz3; /* blocksize for mode 3 */
+ daddr_t mt_density0; /* density for mode 0 */
+ daddr_t mt_density1; /* density for mode 1 */
+ daddr_t mt_density2; /* density for mode 2 */
+ daddr_t mt_density3; /* density for mode 3 */
+/* the following are not yet implemented */
+ u_int32_t mt_comp0; /* compression type for mode 0 */
+ u_int32_t mt_comp1; /* compression type for mode 1 */
+ u_int32_t mt_comp2; /* compression type for mode 2 */
+ u_int32_t mt_comp3; /* compression type for mode 3 */
+/* end not yet implemented */
+#endif
+ daddr_t mt_fileno; /* relative file number of current position */
+ daddr_t mt_blkno; /* relative block number of current position */
+};
+
+/* structure for MTIOCERRSTAT - tape get error status command */
+/* really only supported for SCSI tapes right now */
+struct scsi_tape_errors {
+ /*
+ * These are latched from the last command that had a SCSI
+ * Check Condition noted for these operations. The act
+ * of issuing an MTIOCERRSTAT unlatches and clears them.
+ */
+ u_int8_t io_sense[32]; /* Last Sense Data For Data I/O */
+ u_int32_t io_resid; /* residual count from last Data I/O */
+ u_int8_t io_cdb[16]; /* Command that Caused the Last Data Sense */
+ u_int8_t ctl_sense[32]; /* Last Sense Data For Control I/O */
+ u_int32_t ctl_resid; /* residual count from last Control I/O */
+ u_int8_t ctl_cdb[16]; /* Command that Caused the Last Control Sense */
+ /*
+ * These are the read and write cumulative error counters.
+ * (how to reset cumulative error counters is not yet defined).
+ * (not implemented as yet but space is being reserved for them)
+ */
+ struct {
+ u_int32_t retries; /* total # retries performed */
+ u_int32_t corrected; /* total # corrections performed */
+ u_int32_t processed; /* total # corrections successful */
+ u_int32_t failures; /* total # corrections/retries failed */
+ u_int64_t nbytes; /* total # bytes processed */
+ } wterr, rderr;
+};
+
+union mterrstat {
+ struct scsi_tape_errors scsi_errstat;
+ char _reserved_padding[256];
+};
+
+/*
+ * Constants for mt_type byte. These are the same
+ * for controllers compatible with the types listed.
+ */
+#define MT_ISTS 0x01 /* TS-11 */
+#define MT_ISHT 0x02 /* TM03 Massbus: TE16, TU45, TU77 */
+#define MT_ISTM 0x03 /* TM11/TE10 Unibus */
+#define MT_ISMT 0x04 /* TM78/TU78 Massbus */
+#define MT_ISUT 0x05 /* SI TU-45 emulation on Unibus */
+#define MT_ISCPC 0x06 /* SUN */
+#define MT_ISAR 0x07 /* SUN */
+#define MT_ISTMSCP 0x08 /* DEC TMSCP protocol (TU81, TK50) */
+#define MT_ISCY 0x09 /* CCI Cipher */
+#define MT_ISCT 0x0a /* HP 1/4 tape */
+#define MT_ISFHP 0x0b /* HP 7980 1/2 tape */
+#define MT_ISEXABYTE 0x0c /* Exabyte */
+#define MT_ISEXA8200 0x0c /* Exabyte EXB-8200 */
+#define MT_ISEXA8500 0x0d /* Exabyte EXB-8500 */
+#define MT_ISVIPER1 0x0e /* Archive Viper-150 */
+#define MT_ISPYTHON 0x0f /* Archive Python (DAT) */
+#define MT_ISHPDAT 0x10 /* HP 35450A DAT drive */
+#define MT_ISMFOUR 0x11 /* M4 Data 1/2 9track drive */
+#define MT_ISTK50 0x12 /* DEC SCSI TK50 */
+#define MT_ISMT02 0x13 /* Emulex MT02 SCSI tape controller */
+
+/* mag tape io control commands */
+#define MTIOCTOP _IOW('m', 1, struct mtop) /* do a mag tape op */
+#define MTIOCGET _IOR('m', 2, struct mtget) /* get tape status */
+/* these two do not appear to be used anywhere */
+#define MTIOCIEOT _IO('m', 3) /* ignore EOT error */
+#define MTIOCEEOT _IO('m', 4) /* enable EOT error */
+/*
+ * When more SCSI-3 SSC (streaming device) devices are out there
+ * that support the full 32 byte type 2 structure, we'll have to
+ * rethink these ioctls to support all the entities they haul into
+ * the picture (64 bit blocks, logical file record numbers, etc..).
+ */
+#define MTIOCRDSPOS _IOR('m', 5, u_int32_t) /* get logical blk addr */
+#define MTIOCRDHPOS _IOR('m', 6, u_int32_t) /* get hardware blk addr */
+#define MTIOCSLOCATE _IOW('m', 5, u_int32_t) /* seek to logical blk addr */
+#define MTIOCHLOCATE _IOW('m', 6, u_int32_t) /* seek to hardware blk addr */
+#define MTIOCERRSTAT _IOR('m', 7, union mterrstat) /* get tape errors */
+/*
+ * Set EOT model- argument is number of filemarks to end a tape with.
+ * Note that not all possible values will be accepted.
+ */
+#define MTIOCSETEOTMODEL _IOW('m', 8, u_int32_t)
+/* Get current EOT model */
+#define MTIOCGETEOTMODEL _IOR('m', 8, u_int32_t)
+
+#ifndef _KERNEL
+#define DEFTAPE "/dev/nsa0"
+#endif
+
+#ifdef _KERNEL
+/*
+ * minor device number
+ */
+
+#define T_UNIT 003 /* unit selection */
+#define T_NOREWIND 004 /* no rewind on close */
+#define T_DENSEL 030 /* density select */
+#define T_800BPI 000 /* select 800 bpi */
+#define T_1600BPI 010 /* select 1600 bpi */
+#define T_6250BPI 020 /* select 6250 bpi */
+#define T_BADBPI 030 /* undefined selection */
+#endif
+
+#endif /* !_SYS_MTIO_H_ */
+.Ed
+.Sh FILES
+.Bl -tag -width /dev/[n]sa* -compact
+.It Pa /dev/[n]sa*
+.El
+.Sh SEE ALSO
+.Xr mt 1 ,
+.Xr tar 1 ,
+.Xr ast 4 ,
+.Xr sa 4
+.Sh HISTORY
+The
+.Nm
+manual appeared in
+.Bx 4.2 .
+An i386 version first appeared in
+.Fx 2.2 .
+.Sh BUGS
+The status should be returned in a device independent format.
+.Pp
+The special file naming should be redone in a more consistent and
+understandable manner.
diff --git a/share/man/man4/multicast.4 b/share/man/man4/multicast.4
new file mode 100644
index 0000000..3c53db3
--- /dev/null
+++ b/share/man/man4/multicast.4
@@ -0,0 +1,1006 @@
+.\" Copyright (c) 2001-2003 International Computer Science Institute
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included in
+.\" all copies or substantial portions of the Software.
+.\"
+.\" The names and trademarks of copyright holders may not be used in
+.\" advertising or publicity pertaining to the software without specific
+.\" prior permission. Title to copyright in this software and any associated
+.\" documentation will at all times remain with the copyright holders.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+.\" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 18, 2007
+.Dt MULTICAST 4
+.Os
+.\"
+.Sh NAME
+.Nm multicast
+.Nd Multicast Routing
+.\"
+.Sh SYNOPSIS
+.Cd "options MROUTING"
+.Pp
+.In sys/types.h
+.In sys/socket.h
+.In netinet/in.h
+.In netinet/ip_mroute.h
+.In netinet6/ip6_mroute.h
+.Ft int
+.Fn getsockopt "int s" IPPROTO_IP MRT_INIT "void *optval" "socklen_t *optlen"
+.Ft int
+.Fn setsockopt "int s" IPPROTO_IP MRT_INIT "const void *optval" "socklen_t optlen"
+.Ft int
+.Fn getsockopt "int s" IPPROTO_IPV6 MRT6_INIT "void *optval" "socklen_t *optlen"
+.Ft int
+.Fn setsockopt "int s" IPPROTO_IPV6 MRT6_INIT "const void *optval" "socklen_t optlen"
+.Sh DESCRIPTION
+.Tn "Multicast routing"
+is used to efficiently propagate data
+packets to a set of multicast listeners in multipoint networks.
+If unicast is used to replicate the data to all listeners,
+then some of the network links may carry multiple copies of the same
+data packets.
+With multicast routing, the overhead is reduced to one copy
+(at most) per network link.
+.Pp
+All multicast-capable routers must run a common multicast routing
+protocol.
+It is recommended that either
+Protocol Independent Multicast - Sparse Mode (PIM-SM),
+or Protocol Independent Multicast - Dense Mode (PIM-DM)
+are used, as these are now the generally accepted protocols
+in the Internet community.
+The
+.Sx HISTORY
+section discusses previous multicast routing protocols.
+.Pp
+To start multicast routing,
+the user must enable multicast forwarding in the kernel
+(see
+.Sx SYNOPSIS
+about the kernel configuration options),
+and must run a multicast routing capable user-level process.
+From developer's point of view,
+the programming guide described in the
+.Sx "Programming Guide"
+section should be used to control the multicast forwarding in the kernel.
+.\"
+.Ss Programming Guide
+This section provides information about the basic multicast routing API.
+The so-called
+.Dq advanced multicast API
+is described in the
+.Sx "Advanced Multicast API Programming Guide"
+section.
+.Pp
+First, a multicast routing socket must be open.
+That socket would be used
+to control the multicast forwarding in the kernel.
+Note that most operations below require certain privilege
+(i.e., root privilege):
+.Bd -literal
+/* IPv4 */
+int mrouter_s4;
+mrouter_s4 = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);
+.Ed
+.Bd -literal
+int mrouter_s6;
+mrouter_s6 = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6);
+.Ed
+.Pp
+Note that if the router needs to open an IGMP or ICMPv6 socket
+(in case of IPv4 and IPv6 respectively)
+for sending or receiving of IGMP or MLD multicast group membership messages,
+then the same
+.Va mrouter_s4
+or
+.Va mrouter_s6
+sockets should be used
+for sending and receiving respectively IGMP or MLD messages.
+In case of
+.Bx Ns
+-derived kernel, it may be possible to open separate sockets
+for IGMP or MLD messages only.
+However, some other kernels (e.g.,
+.Tn Linux )
+require that the multicast
+routing socket must be used for sending and receiving of IGMP or MLD
+messages.
+Therefore, for portability reason the multicast
+routing socket should be reused for IGMP and MLD messages as well.
+.Pp
+After the multicast routing socket is open, it can be used to enable
+or disable multicast forwarding in the kernel:
+.Bd -literal
+/* IPv4 */
+int v = 1; /* 1 to enable, or 0 to disable */
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_INIT, (void *)&v, sizeof(v));
+.Ed
+.Bd -literal
+/* IPv6 */
+int v = 1; /* 1 to enable, or 0 to disable */
+setsockopt(mrouter_s6, IPPROTO_IPV6, MRT6_INIT, (void *)&v, sizeof(v));
+\&...
+/* If necessary, filter all ICMPv6 messages */
+struct icmp6_filter filter;
+ICMP6_FILTER_SETBLOCKALL(&filter);
+setsockopt(mrouter_s6, IPPROTO_ICMPV6, ICMP6_FILTER, (void *)&filter,
+ sizeof(filter));
+.Ed
+.Pp
+After multicast forwarding is enabled, the multicast routing socket
+can be used to enable PIM processing in the kernel if we are running PIM-SM or
+PIM-DM
+(see
+.Xr pim 4 ) .
+.Pp
+For each network interface (e.g., physical or a virtual tunnel)
+that would be used for multicast forwarding, a corresponding
+multicast interface must be added to the kernel:
+.Bd -literal
+/* IPv4 */
+struct vifctl vc;
+memset(&vc, 0, sizeof(vc));
+/* Assign all vifctl fields as appropriate */
+vc.vifc_vifi = vif_index;
+vc.vifc_flags = vif_flags;
+vc.vifc_threshold = min_ttl_threshold;
+vc.vifc_rate_limit = 0;
+memcpy(&vc.vifc_lcl_addr, &vif_local_address, sizeof(vc.vifc_lcl_addr));
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_ADD_VIF, (void *)&vc,
+ sizeof(vc));
+.Ed
+.Pp
+The
+.Va vif_index
+must be unique per vif.
+The
+.Va vif_flags
+contains the
+.Dv VIFF_*
+flags as defined in
+.In netinet/ip_mroute.h .
+The
+.Dv VIFF_TUNNEL
+flag is no longer supported by
+.Fx .
+Users who wish to forward multicast datagrams over a tunnel should consider
+configuring a
+.Xr gif 4
+or
+.Xr gre 4
+tunnel and using it as a physical interface.
+.Pp
+The
+.Va min_ttl_threshold
+contains the minimum TTL a multicast data packet must have to be
+forwarded on that vif.
+Typically, it would have value of 1.
+.Pp
+The
+.Va max_rate_limit
+argument is no longer supported in
+.Fx
+and should be set to 0.
+Users who wish to rate-limit multicast datagrams should consider the use of
+.Xr dummynet 4
+or
+.Xr altq 4 .
+.Pp
+The
+.Va vif_local_address
+contains the local IP address of the corresponding local interface.
+The
+.Va vif_remote_address
+contains the remote IP address in case of DVMRP multicast tunnels.
+.Bd -literal
+/* IPv6 */
+struct mif6ctl mc;
+memset(&mc, 0, sizeof(mc));
+/* Assign all mif6ctl fields as appropriate */
+mc.mif6c_mifi = mif_index;
+mc.mif6c_flags = mif_flags;
+mc.mif6c_pifi = pif_index;
+setsockopt(mrouter_s6, IPPROTO_IPV6, MRT6_ADD_MIF, (void *)&mc,
+ sizeof(mc));
+.Ed
+.Pp
+The
+.Va mif_index
+must be unique per vif.
+The
+.Va mif_flags
+contains the
+.Dv MIFF_*
+flags as defined in
+.In netinet6/ip6_mroute.h .
+The
+.Va pif_index
+is the physical interface index of the corresponding local interface.
+.Pp
+A multicast interface is deleted by:
+.Bd -literal
+/* IPv4 */
+vifi_t vifi = vif_index;
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_DEL_VIF, (void *)&vifi,
+ sizeof(vifi));
+.Ed
+.Bd -literal
+/* IPv6 */
+mifi_t mifi = mif_index;
+setsockopt(mrouter_s6, IPPROTO_IPV6, MRT6_DEL_MIF, (void *)&mifi,
+ sizeof(mifi));
+.Ed
+.Pp
+After the multicast forwarding is enabled, and the multicast virtual
+interfaces are
+added, the kernel may deliver upcall messages (also called signals
+later in this text) on the multicast routing socket that was open
+earlier with
+.Dv MRT_INIT
+or
+.Dv MRT6_INIT .
+The IPv4 upcalls have
+.Vt "struct igmpmsg"
+header (see
+.In netinet/ip_mroute.h )
+with field
+.Va im_mbz
+set to zero.
+Note that this header follows the structure of
+.Vt "struct ip"
+with the protocol field
+.Va ip_p
+set to zero.
+The IPv6 upcalls have
+.Vt "struct mrt6msg"
+header (see
+.In netinet6/ip6_mroute.h )
+with field
+.Va im6_mbz
+set to zero.
+Note that this header follows the structure of
+.Vt "struct ip6_hdr"
+with the next header field
+.Va ip6_nxt
+set to zero.
+.Pp
+The upcall header contains field
+.Va im_msgtype
+and
+.Va im6_msgtype
+with the type of the upcall
+.Dv IGMPMSG_*
+and
+.Dv MRT6MSG_*
+for IPv4 and IPv6 respectively.
+The values of the rest of the upcall header fields
+and the body of the upcall message depend on the particular upcall type.
+.Pp
+If the upcall message type is
+.Dv IGMPMSG_NOCACHE
+or
+.Dv MRT6MSG_NOCACHE ,
+this is an indication that a multicast packet has reached the multicast
+router, but the router has no forwarding state for that packet.
+Typically, the upcall would be a signal for the multicast routing
+user-level process to install the appropriate Multicast Forwarding
+Cache (MFC) entry in the kernel.
+.Pp
+An MFC entry is added by:
+.Bd -literal
+/* IPv4 */
+struct mfcctl mc;
+memset(&mc, 0, sizeof(mc));
+memcpy(&mc.mfcc_origin, &source_addr, sizeof(mc.mfcc_origin));
+memcpy(&mc.mfcc_mcastgrp, &group_addr, sizeof(mc.mfcc_mcastgrp));
+mc.mfcc_parent = iif_index;
+for (i = 0; i < maxvifs; i++)
+ mc.mfcc_ttls[i] = oifs_ttl[i];
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_ADD_MFC,
+ (void *)&mc, sizeof(mc));
+.Ed
+.Bd -literal
+/* IPv6 */
+struct mf6cctl mc;
+memset(&mc, 0, sizeof(mc));
+memcpy(&mc.mf6cc_origin, &source_addr, sizeof(mc.mf6cc_origin));
+memcpy(&mc.mf6cc_mcastgrp, &group_addr, sizeof(mf6cc_mcastgrp));
+mc.mf6cc_parent = iif_index;
+for (i = 0; i < maxvifs; i++)
+ if (oifs_ttl[i] > 0)
+ IF_SET(i, &mc.mf6cc_ifset);
+setsockopt(mrouter_s4, IPPROTO_IPV6, MRT6_ADD_MFC,
+ (void *)&mc, sizeof(mc));
+.Ed
+.Pp
+The
+.Va source_addr
+and
+.Va group_addr
+are the source and group address of the multicast packet (as set
+in the upcall message).
+The
+.Va iif_index
+is the virtual interface index of the multicast interface the multicast
+packets for this specific source and group address should be received on.
+The
+.Va oifs_ttl[]
+array contains the minimum TTL (per interface) a multicast packet
+should have to be forwarded on an outgoing interface.
+If the TTL value is zero, the corresponding interface is not included
+in the set of outgoing interfaces.
+Note that in case of IPv6 only the set of outgoing interfaces can
+be specified.
+.Pp
+An MFC entry is deleted by:
+.Bd -literal
+/* IPv4 */
+struct mfcctl mc;
+memset(&mc, 0, sizeof(mc));
+memcpy(&mc.mfcc_origin, &source_addr, sizeof(mc.mfcc_origin));
+memcpy(&mc.mfcc_mcastgrp, &group_addr, sizeof(mc.mfcc_mcastgrp));
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_DEL_MFC,
+ (void *)&mc, sizeof(mc));
+.Ed
+.Bd -literal
+/* IPv6 */
+struct mf6cctl mc;
+memset(&mc, 0, sizeof(mc));
+memcpy(&mc.mf6cc_origin, &source_addr, sizeof(mc.mf6cc_origin));
+memcpy(&mc.mf6cc_mcastgrp, &group_addr, sizeof(mf6cc_mcastgrp));
+setsockopt(mrouter_s4, IPPROTO_IPV6, MRT6_DEL_MFC,
+ (void *)&mc, sizeof(mc));
+.Ed
+.Pp
+The following method can be used to get various statistics per
+installed MFC entry in the kernel (e.g., the number of forwarded
+packets per source and group address):
+.Bd -literal
+/* IPv4 */
+struct sioc_sg_req sgreq;
+memset(&sgreq, 0, sizeof(sgreq));
+memcpy(&sgreq.src, &source_addr, sizeof(sgreq.src));
+memcpy(&sgreq.grp, &group_addr, sizeof(sgreq.grp));
+ioctl(mrouter_s4, SIOCGETSGCNT, &sgreq);
+.Ed
+.Bd -literal
+/* IPv6 */
+struct sioc_sg_req6 sgreq;
+memset(&sgreq, 0, sizeof(sgreq));
+memcpy(&sgreq.src, &source_addr, sizeof(sgreq.src));
+memcpy(&sgreq.grp, &group_addr, sizeof(sgreq.grp));
+ioctl(mrouter_s6, SIOCGETSGCNT_IN6, &sgreq);
+.Ed
+.Pp
+The following method can be used to get various statistics per
+multicast virtual interface in the kernel (e.g., the number of forwarded
+packets per interface):
+.Bd -literal
+/* IPv4 */
+struct sioc_vif_req vreq;
+memset(&vreq, 0, sizeof(vreq));
+vreq.vifi = vif_index;
+ioctl(mrouter_s4, SIOCGETVIFCNT, &vreq);
+.Ed
+.Bd -literal
+/* IPv6 */
+struct sioc_mif_req6 mreq;
+memset(&mreq, 0, sizeof(mreq));
+mreq.mifi = vif_index;
+ioctl(mrouter_s6, SIOCGETMIFCNT_IN6, &mreq);
+.Ed
+.Ss Advanced Multicast API Programming Guide
+If we want to add new features in the kernel, it becomes difficult
+to preserve backward compatibility (binary and API),
+and at the same time to allow user-level processes to take advantage of
+the new features (if the kernel supports them).
+.Pp
+One of the mechanisms that allows us to preserve the backward
+compatibility is a sort of negotiation
+between the user-level process and the kernel:
+.Bl -enum
+.It
+The user-level process tries to enable in the kernel the set of new
+features (and the corresponding API) it would like to use.
+.It
+The kernel returns the (sub)set of features it knows about
+and is willing to be enabled.
+.It
+The user-level process uses only that set of features
+the kernel has agreed on.
+.El
+.\"
+.Pp
+To support backward compatibility, if the user-level process does not
+ask for any new features, the kernel defaults to the basic
+multicast API (see the
+.Sx "Programming Guide"
+section).
+.\" XXX: edit as appropriate after the advanced multicast API is
+.\" supported under IPv6
+Currently, the advanced multicast API exists only for IPv4;
+in the future there will be IPv6 support as well.
+.Pp
+Below is a summary of the expandable API solution.
+Note that all new options and structures are defined
+in
+.In netinet/ip_mroute.h
+and
+.In netinet6/ip6_mroute.h ,
+unless stated otherwise.
+.Pp
+The user-level process uses new
+.Fn getsockopt Ns / Ns Fn setsockopt
+options to
+perform the API features negotiation with the kernel.
+This negotiation must be performed right after the multicast routing
+socket is open.
+The set of desired/allowed features is stored in a bitset
+(currently, in
+.Vt uint32_t ;
+i.e., maximum of 32 new features).
+The new
+.Fn getsockopt Ns / Ns Fn setsockopt
+options are
+.Dv MRT_API_SUPPORT
+and
+.Dv MRT_API_CONFIG .
+Example:
+.Bd -literal
+uint32_t v;
+getsockopt(sock, IPPROTO_IP, MRT_API_SUPPORT, (void *)&v, sizeof(v));
+.Ed
+.Pp
+would set in
+.Va v
+the pre-defined bits that the kernel API supports.
+The eight least significant bits in
+.Vt uint32_t
+are same as the
+eight possible flags
+.Dv MRT_MFC_FLAGS_*
+that can be used in
+.Va mfcc_flags
+as part of the new definition of
+.Vt "struct mfcctl"
+(see below about those flags), which leaves 24 flags for other new features.
+The value returned by
+.Fn getsockopt MRT_API_SUPPORT
+is read-only; in other words,
+.Fn setsockopt MRT_API_SUPPORT
+would fail.
+.Pp
+To modify the API, and to set some specific feature in the kernel, then:
+.Bd -literal
+uint32_t v = MRT_MFC_FLAGS_DISABLE_WRONGVIF;
+if (setsockopt(sock, IPPROTO_IP, MRT_API_CONFIG, (void *)&v, sizeof(v))
+ != 0) {
+ return (ERROR);
+}
+if (v & MRT_MFC_FLAGS_DISABLE_WRONGVIF)
+ return (OK); /* Success */
+else
+ return (ERROR);
+.Ed
+.Pp
+In other words, when
+.Fn setsockopt MRT_API_CONFIG
+is called, the
+argument to it specifies the desired set of features to
+be enabled in the API and the kernel.
+The return value in
+.Va v
+is the actual (sub)set of features that were enabled in the kernel.
+To obtain later the same set of features that were enabled, then:
+.Bd -literal
+getsockopt(sock, IPPROTO_IP, MRT_API_CONFIG, (void *)&v, sizeof(v));
+.Ed
+.Pp
+The set of enabled features is global.
+In other words,
+.Fn setsockopt MRT_API_CONFIG
+should be called right after
+.Fn setsockopt MRT_INIT .
+.Pp
+Currently, the following set of new features is defined:
+.Bd -literal
+#define MRT_MFC_FLAGS_DISABLE_WRONGVIF (1 << 0) /* disable WRONGVIF signals */
+#define MRT_MFC_FLAGS_BORDER_VIF (1 << 1) /* border vif */
+#define MRT_MFC_RP (1 << 8) /* enable RP address */
+#define MRT_MFC_BW_UPCALL (1 << 9) /* enable bw upcalls */
+.Ed
+.\" .Pp
+.\" In the future there might be:
+.\" .Bd -literal
+.\" #define MRT_MFC_GROUP_SPECIFIC (1 << 10) /* allow (*,G) MFC entries */
+.\" .Ed
+.\" .Pp
+.\" to allow (*,G) MFC entries (i.e., group-specific entries) in the kernel.
+.\" For now this is left-out until it is clear whether
+.\" (*,G) MFC support is the preferred solution instead of something more generic
+.\" solution for example.
+.\"
+.\" 2. The newly defined struct mfcctl2.
+.\"
+.Pp
+The advanced multicast API uses a newly defined
+.Vt "struct mfcctl2"
+instead of the traditional
+.Vt "struct mfcctl" .
+The original
+.Vt "struct mfcctl"
+is kept as is.
+The new
+.Vt "struct mfcctl2"
+is:
+.Bd -literal
+/*
+ * The new argument structure for MRT_ADD_MFC and MRT_DEL_MFC overlays
+ * and extends the old struct mfcctl.
+ */
+struct mfcctl2 {
+ /* the mfcctl fields */
+ struct in_addr mfcc_origin; /* ip origin of mcasts */
+ struct in_addr mfcc_mcastgrp; /* multicast group associated*/
+ vifi_t mfcc_parent; /* incoming vif */
+ u_char mfcc_ttls[MAXVIFS];/* forwarding ttls on vifs */
+
+ /* extension fields */
+ uint8_t mfcc_flags[MAXVIFS];/* the MRT_MFC_FLAGS_* flags*/
+ struct in_addr mfcc_rp; /* the RP address */
+};
+.Ed
+.Pp
+The new fields are
+.Va mfcc_flags[MAXVIFS]
+and
+.Va mfcc_rp .
+Note that for compatibility reasons they are added at the end.
+.Pp
+The
+.Va mfcc_flags[MAXVIFS]
+field is used to set various flags per
+interface per (S,G) entry.
+Currently, the defined flags are:
+.Bd -literal
+#define MRT_MFC_FLAGS_DISABLE_WRONGVIF (1 << 0) /* disable WRONGVIF signals */
+#define MRT_MFC_FLAGS_BORDER_VIF (1 << 1) /* border vif */
+.Ed
+.Pp
+The
+.Dv MRT_MFC_FLAGS_DISABLE_WRONGVIF
+flag is used to explicitly disable the
+.Dv IGMPMSG_WRONGVIF
+kernel signal at the (S,G) granularity if a multicast data packet
+arrives on the wrong interface.
+Usually, this signal is used to
+complete the shortest-path switch in case of PIM-SM multicast routing,
+or to trigger a PIM assert message.
+However, it should not be delivered for interfaces that are not in
+the outgoing interface set, and that are not expecting to
+become an incoming interface.
+Hence, if the
+.Dv MRT_MFC_FLAGS_DISABLE_WRONGVIF
+flag is set for some of the
+interfaces, then a data packet that arrives on that interface for
+that MFC entry will NOT trigger a WRONGVIF signal.
+If that flag is not set, then a signal is triggered (the default action).
+.Pp
+The
+.Dv MRT_MFC_FLAGS_BORDER_VIF
+flag is used to specify whether the Border-bit in PIM
+Register messages should be set (in case when the Register encapsulation
+is performed inside the kernel).
+If it is set for the special PIM Register kernel virtual interface
+(see
+.Xr pim 4 ) ,
+the Border-bit in the Register messages sent to the RP will be set.
+.Pp
+The remaining six bits are reserved for future usage.
+.Pp
+The
+.Va mfcc_rp
+field is used to specify the RP address (in case of PIM-SM multicast routing)
+for a multicast
+group G if we want to perform kernel-level PIM Register encapsulation.
+The
+.Va mfcc_rp
+field is used only if the
+.Dv MRT_MFC_RP
+advanced API flag/capability has been successfully set by
+.Fn setsockopt MRT_API_CONFIG .
+.Pp
+.\"
+.\" 3. Kernel-level PIM Register encapsulation
+.\"
+If the
+.Dv MRT_MFC_RP
+flag was successfully set by
+.Fn setsockopt MRT_API_CONFIG ,
+then the kernel will attempt to perform
+the PIM Register encapsulation itself instead of sending the
+multicast data packets to user level (inside
+.Dv IGMPMSG_WHOLEPKT
+upcalls) for user-level encapsulation.
+The RP address would be taken from the
+.Va mfcc_rp
+field
+inside the new
+.Vt "struct mfcctl2" .
+However, even if the
+.Dv MRT_MFC_RP
+flag was successfully set, if the
+.Va mfcc_rp
+field was set to
+.Dv INADDR_ANY ,
+then the
+kernel will still deliver an
+.Dv IGMPMSG_WHOLEPKT
+upcall with the
+multicast data packet to the user-level process.
+.Pp
+In addition, if the multicast data packet is too large to fit within
+a single IP packet after the PIM Register encapsulation (e.g., if
+its size was on the order of 65500 bytes), the data packet will be
+fragmented, and then each of the fragments will be encapsulated
+separately.
+Note that typically a multicast data packet can be that
+large only if it was originated locally from the same hosts that
+performs the encapsulation; otherwise the transmission of the
+multicast data packet over Ethernet for example would have
+fragmented it into much smaller pieces.
+.\"
+.\" Note that if this code is ported to IPv6, we may need the kernel to
+.\" perform MTU discovery to the RP, and keep those discoveries inside
+.\" the kernel so the encapsulating router may send back ICMP
+.\" Fragmentation Required if the size of the multicast data packet is
+.\" too large (see "Encapsulating data packets in the Register Tunnel"
+.\" in Section 4.4.1 in the PIM-SM spec
+.\" draft-ietf-pim-sm-v2-new-05.{txt,ps}).
+.\" For IPv4 we may be able to get away without it, but for IPv6 we need
+.\" that.
+.\"
+.\" 4. Mechanism for "multicast bandwidth monitoring and upcalls".
+.\"
+.Pp
+Typically, a multicast routing user-level process would need to know the
+forwarding bandwidth for some data flow.
+For example, the multicast routing process may want to timeout idle MFC
+entries, or in case of PIM-SM it can initiate (S,G) shortest-path switch if
+the bandwidth rate is above a threshold for example.
+.Pp
+The original solution for measuring the bandwidth of a dataflow was
+that a user-level process would periodically
+query the kernel about the number of forwarded packets/bytes per
+(S,G), and then based on those numbers it would estimate whether a source
+has been idle, or whether the source's transmission bandwidth is above a
+threshold.
+That solution is far from being scalable, hence the need for a new
+mechanism for bandwidth monitoring.
+.Pp
+Below is a description of the bandwidth monitoring mechanism.
+.Bl -bullet
+.It
+If the bandwidth of a data flow satisfies some pre-defined filter,
+the kernel delivers an upcall on the multicast routing socket
+to the multicast routing process that has installed that filter.
+.It
+The bandwidth-upcall filters are installed per (S,G).
+There can be
+more than one filter per (S,G).
+.It
+Instead of supporting all possible comparison operations
+(i.e., < <= == != > >= ), there is support only for the
+<= and >= operations,
+because this makes the kernel-level implementation simpler,
+and because practically we need only those two.
+Further, the missing operations can be simulated by secondary
+user-level filtering of those <= and >= filters.
+For example, to simulate !=, then we need to install filter
+.Dq bw <= 0xffffffff ,
+and after an
+upcall is received, we need to check whether
+.Dq measured_bw != expected_bw .
+.It
+The bandwidth-upcall mechanism is enabled by
+.Fn setsockopt MRT_API_CONFIG
+for the
+.Dv MRT_MFC_BW_UPCALL
+flag.
+.It
+The bandwidth-upcall filters are added/deleted by the new
+.Fn setsockopt MRT_ADD_BW_UPCALL
+and
+.Fn setsockopt MRT_DEL_BW_UPCALL
+respectively (with the appropriate
+.Vt "struct bw_upcall"
+argument of course).
+.El
+.Pp
+From application point of view, a developer needs to know about
+the following:
+.Bd -literal
+/*
+ * Structure for installing or delivering an upcall if the
+ * measured bandwidth is above or below a threshold.
+ *
+ * User programs (e.g. daemons) may have a need to know when the
+ * bandwidth used by some data flow is above or below some threshold.
+ * This interface allows the userland to specify the threshold (in
+ * bytes and/or packets) and the measurement interval. Flows are
+ * all packet with the same source and destination IP address.
+ * At the moment the code is only used for multicast destinations
+ * but there is nothing that prevents its use for unicast.
+ *
+ * The measurement interval cannot be shorter than some Tmin (currently, 3s).
+ * The threshold is set in packets and/or bytes per_interval.
+ *
+ * Measurement works as follows:
+ *
+ * For >= measurements:
+ * The first packet marks the start of a measurement interval.
+ * During an interval we count packets and bytes, and when we
+ * pass the threshold we deliver an upcall and we are done.
+ * The first packet after the end of the interval resets the
+ * count and restarts the measurement.
+ *
+ * For <= measurement:
+ * We start a timer to fire at the end of the interval, and
+ * then for each incoming packet we count packets and bytes.
+ * When the timer fires, we compare the value with the threshold,
+ * schedule an upcall if we are below, and restart the measurement
+ * (reschedule timer and zero counters).
+ */
+
+struct bw_data {
+ struct timeval b_time;
+ uint64_t b_packets;
+ uint64_t b_bytes;
+};
+
+struct bw_upcall {
+ struct in_addr bu_src; /* source address */
+ struct in_addr bu_dst; /* destination address */
+ uint32_t bu_flags; /* misc flags (see below) */
+#define BW_UPCALL_UNIT_PACKETS (1 << 0) /* threshold (in packets) */
+#define BW_UPCALL_UNIT_BYTES (1 << 1) /* threshold (in bytes) */
+#define BW_UPCALL_GEQ (1 << 2) /* upcall if bw >= threshold */
+#define BW_UPCALL_LEQ (1 << 3) /* upcall if bw <= threshold */
+#define BW_UPCALL_DELETE_ALL (1 << 4) /* delete all upcalls for s,d*/
+ struct bw_data bu_threshold; /* the bw threshold */
+ struct bw_data bu_measured; /* the measured bw */
+};
+
+/* max. number of upcalls to deliver together */
+#define BW_UPCALLS_MAX 128
+/* min. threshold time interval for bandwidth measurement */
+#define BW_UPCALL_THRESHOLD_INTERVAL_MIN_SEC 3
+#define BW_UPCALL_THRESHOLD_INTERVAL_MIN_USEC 0
+.Ed
+.Pp
+The
+.Vt bw_upcall
+structure is used as an argument to
+.Fn setsockopt MRT_ADD_BW_UPCALL
+and
+.Fn setsockopt MRT_DEL_BW_UPCALL .
+Each
+.Fn setsockopt MRT_ADD_BW_UPCALL
+installs a filter in the kernel
+for the source and destination address in the
+.Vt bw_upcall
+argument,
+and that filter will trigger an upcall according to the following
+pseudo-algorithm:
+.Bd -literal
+ if (bw_upcall_oper IS ">=") {
+ if (((bw_upcall_unit & PACKETS == PACKETS) &&
+ (measured_packets >= threshold_packets)) ||
+ ((bw_upcall_unit & BYTES == BYTES) &&
+ (measured_bytes >= threshold_bytes)))
+ SEND_UPCALL("measured bandwidth is >= threshold");
+ }
+ if (bw_upcall_oper IS "<=" && measured_interval >= threshold_interval) {
+ if (((bw_upcall_unit & PACKETS == PACKETS) &&
+ (measured_packets <= threshold_packets)) ||
+ ((bw_upcall_unit & BYTES == BYTES) &&
+ (measured_bytes <= threshold_bytes)))
+ SEND_UPCALL("measured bandwidth is <= threshold");
+ }
+.Ed
+.Pp
+In the same
+.Vt bw_upcall
+the unit can be specified in both BYTES and PACKETS.
+However, the GEQ and LEQ flags are mutually exclusive.
+.Pp
+Basically, an upcall is delivered if the measured bandwidth is >= or
+<= the threshold bandwidth (within the specified measurement
+interval).
+For practical reasons, the smallest value for the measurement
+interval is 3 seconds.
+If smaller values are allowed, then the bandwidth
+estimation may be less accurate, or the potentially very high frequency
+of the generated upcalls may introduce too much overhead.
+For the >= operation, the answer may be known before the end of
+.Va threshold_interval ,
+therefore the upcall may be delivered earlier.
+For the <= operation however, we must wait
+until the threshold interval has expired to know the answer.
+.Pp
+Example of usage:
+.Bd -literal
+struct bw_upcall bw_upcall;
+/* Assign all bw_upcall fields as appropriate */
+memset(&bw_upcall, 0, sizeof(bw_upcall));
+memcpy(&bw_upcall.bu_src, &source, sizeof(bw_upcall.bu_src));
+memcpy(&bw_upcall.bu_dst, &group, sizeof(bw_upcall.bu_dst));
+bw_upcall.bu_threshold.b_data = threshold_interval;
+bw_upcall.bu_threshold.b_packets = threshold_packets;
+bw_upcall.bu_threshold.b_bytes = threshold_bytes;
+if (is_threshold_in_packets)
+ bw_upcall.bu_flags |= BW_UPCALL_UNIT_PACKETS;
+if (is_threshold_in_bytes)
+ bw_upcall.bu_flags |= BW_UPCALL_UNIT_BYTES;
+do {
+ if (is_geq_upcall) {
+ bw_upcall.bu_flags |= BW_UPCALL_GEQ;
+ break;
+ }
+ if (is_leq_upcall) {
+ bw_upcall.bu_flags |= BW_UPCALL_LEQ;
+ break;
+ }
+ return (ERROR);
+} while (0);
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_ADD_BW_UPCALL,
+ (void *)&bw_upcall, sizeof(bw_upcall));
+.Ed
+.Pp
+To delete a single filter, then use
+.Dv MRT_DEL_BW_UPCALL ,
+and the fields of bw_upcall must be set
+exactly same as when
+.Dv MRT_ADD_BW_UPCALL
+was called.
+.Pp
+To delete all bandwidth filters for a given (S,G), then
+only the
+.Va bu_src
+and
+.Va bu_dst
+fields in
+.Vt "struct bw_upcall"
+need to be set, and then just set only the
+.Dv BW_UPCALL_DELETE_ALL
+flag inside field
+.Va bw_upcall.bu_flags .
+.Pp
+The bandwidth upcalls are received by aggregating them in the new upcall
+message:
+.Bd -literal
+#define IGMPMSG_BW_UPCALL 4 /* BW monitoring upcall */
+.Ed
+.Pp
+This message is an array of
+.Vt "struct bw_upcall"
+elements (up to
+.Dv BW_UPCALLS_MAX
+= 128).
+The upcalls are
+delivered when there are 128 pending upcalls, or when 1 second has
+expired since the previous upcall (whichever comes first).
+In an
+.Vt "struct upcall"
+element, the
+.Va bu_measured
+field is filled-in to
+indicate the particular measured values.
+However, because of the way
+the particular intervals are measured, the user should be careful how
+.Va bu_measured.b_time
+is used.
+For example, if the
+filter is installed to trigger an upcall if the number of packets
+is >= 1, then
+.Va bu_measured
+may have a value of zero in the upcalls after the
+first one, because the measured interval for >= filters is
+.Dq clocked
+by the forwarded packets.
+Hence, this upcall mechanism should not be used for measuring
+the exact value of the bandwidth of the forwarded data.
+To measure the exact bandwidth, the user would need to
+get the forwarded packets statistics with the
+.Fn ioctl SIOCGETSGCNT
+mechanism
+(see the
+.Sx Programming Guide
+section) .
+.Pp
+Note that the upcalls for a filter are delivered until the specific
+filter is deleted, but no more frequently than once per
+.Va bu_threshold.b_time .
+For example, if the filter is specified to
+deliver a signal if bw >= 1 packet, the first packet will trigger a
+signal, but the next upcall will be triggered no earlier than
+.Va bu_threshold.b_time
+after the previous upcall.
+.\"
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr dummynet 4 ,
+.Xr getsockopt 2 ,
+.Xr gif 4 ,
+.Xr gre 4 ,
+.Xr recvfrom 2 ,
+.Xr recvmsg 2 ,
+.Xr setsockopt 2 ,
+.Xr socket 2 ,
+.Xr icmp6 4 ,
+.Xr inet 4 ,
+.Xr inet6 4 ,
+.Xr intro 4 ,
+.Xr ip 4 ,
+.Xr ip6 4 ,
+.Xr pim 4
+.\"
+.Sh HISTORY
+The Distance Vector Multicast Routing Protocol (DVMRP)
+was the first developed multicast routing protocol.
+Later, other protocols such as Multicast Extensions to OSPF (MOSPF)
+and Core Based Trees (CBT), were developed as well.
+Routers at autonomous system boundaries may now exchange multicast
+routes with peers via the Border Gateway Protocol (BGP).
+Many other routing protocols are able to redistribute multicast routes
+for use with
+.Dv PIM-SM
+and
+.Dv PIM-DM .
+.Sh AUTHORS
+.An -nosplit
+The original multicast code was written by
+.An David Waitzman
+(BBN Labs),
+and later modified by the following individuals:
+.An Steve Deering
+(Stanford),
+.An Mark J. Steiglitz
+(Stanford),
+.An Van Jacobson
+(LBL),
+.An Ajit Thyagarajan
+(PARC),
+.An Bill Fenner
+(PARC).
+The IPv6 multicast support was implemented by the KAME project
+.Pq Pa http://www.kame.net ,
+and was based on the IPv4 multicast code.
+The advanced multicast API and the multicast bandwidth
+monitoring were implemented by
+.An Pavlin Radoslavov
+(ICSI)
+in collaboration with
+.An Chris Brown
+(NextHop).
+.Pp
+This manual page was written by
+.An Pavlin Radoslavov
+(ICSI).
diff --git a/share/man/man4/mxge.4 b/share/man/man4/mxge.4
new file mode 100644
index 0000000..50cc0a9
--- /dev/null
+++ b/share/man/man4/mxge.4
@@ -0,0 +1,186 @@
+.\" Copyright (c) 2006, Myricom 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. Neither the name of the Myricom Inc 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
+.\"
+.\" * Other names and brands may be claimed as the property of others.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 13, 2008
+.Dt MXGE 4
+.Os
+.Sh NAME
+.Nm mxge
+.Nd "Myricom Myri10GE 10 Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device firmware"
+.Cd "device mxge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following lines in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_mxge_load="YES"
+mxge_ethp_z8e_load="YES"
+mxge_eth_z8e_load="YES"
+mxge_rss_ethp_z8e_load="YES"
+mxge_rss_eth_z8e_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Express 10 Gigabit Ethernet adapters based on
+the Myricom LANai Z8E chip.
+The driver supports Transmit/Receive checksum offload,
+Jumbo Frames, TCP segmentation offload (TSO) as well
+as Large Receive Offload (LRO).
+For further hardware information, see
+.Pa http://www.myri.com/ .
+.Pp
+For questions related to hardware requirements,
+refer to the documentation supplied with your Myri10GE adapter.
+All hardware requirements listed apply to use with
+.Fx .
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+The maximum MTU size for Jumbo Frames is 9000.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports 10 Gigabit Ethernet adapters based on the
+Myricom LANai Z8E chips:
+.Pp
+.Bl -bullet -compact
+.It
+Myricom 10GBase-CX4 (10G-PCIE-8A-C, 10G-PCIE-8AL-C)
+.It
+Myricom 10GBase-R (10G-PCIE-8A-R, 10G-PCIE-8AL-R)
+.It
+Myricom 10G XAUI over ribbon fiber (10G-PCIE-8A-Q, 10G-PCIE-8AL-Q)
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.It Va hw.mxge.flow_control_enabled
+Whether or not hardware flow control is enabled on the adapter.
+The default value is 1.
+.It Va hw.mxge.intr_coal_delay
+This value delays the generation of all interrupts in units of
+1 microsecond.
+The default value is 30.
+.It Va hw.mxge.skip_pio_read
+This value determines whether or not the driver may omit doing a
+PIO read in the interrupt handler which ensures that the interrupt
+line has been deasserted when using xPIC interrupts.
+A non-zero value
+may result in lower CPU overhead, however it may also result in
+spurious interrupts.
+The default value is 0.
+This tunable has no effect when the device is
+using MSI or MSI-X interrupts.
+.It Va hw.mxge.max_slices
+This value determines the maximum number of slices the driver
+will attempt to use.
+The default value is 1.
+A slice is comprised
+of a set of receive queues and an associated interrupt thread.
+When using multiple slices, the NIC hashes traffic to different slices
+based on the value of
+.Va hw.mxge.rss_hash_type .
+Using multiple slices requires that your motherboard and Myri10GE NIC
+both be capable of MSI-X.
+Older Myri10GE NICs can be field upgraded to add
+MSI-X using the "10G NIC Tool Kit" for FreeBSD which is available from
+.Pa http://www.myri.com/scs/download-10g-tools.html .
+.Pp
+.It Va hw.mxge.rss_hash_type
+This value determines how incoming traffic is steered to different
+slices.
+This tunable is ignored when using just a single slice.
+The legal values for this tunable are:
+.Bl -tag -width "XXXX"
+.It 1
+Hash on the source and destination IPv4 addresses.
+.It 2
+Hash on source and destination IPv4 addresses and if the packet
+is TCP, then also hash on the TCP source and destination ports.
+.It 4
+Hash on the TCP or UDP source ports.
+This is the default value.
+.El
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "mxge%d: Unable to allocate bus resource: memory"
+A fatal initialization error has occurred.
+.It "mxge%d: Unable to allocate bus resource: interrupt"
+A fatal initialization error has occurred.
+.It "mxge%d: Could not find firmware image %s"
+The appropriate firmware kld module was not installed.
+This is a non-fatal initialization error, but will
+result in running in a reduced performance mode.
+.El
+.Sh SUPPORT
+For general information and support,
+go to the Myricom support website at:
+.Pa http://www.myri.com/scs/ .
+.Pp
+If an issue is identified with the released source code on the supported kernel
+with a supported adapter, email the specific information related to the
+issue to
+.Aq help@myri.com .
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Andrew Gallatin Aq gallatin@FreeBSD.org .
diff --git a/share/man/man4/my.4 b/share/man/man4/my.4
new file mode 100644
index 0000000..28b67dd
--- /dev/null
+++ b/share/man/man4/my.4
@@ -0,0 +1,90 @@
+.\" Copyright (c) 2003 Hiten M. Pandya
+.\" 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 ITS 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 THE 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$
+.\"
+.Dd March 11, 2007
+.Dt MY 4
+.Os
+.Sh NAME
+.Nm my
+.Nd "Myson Technology Ethernet PCI driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device my"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_my_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various NICs based on the Myson chipset.
+The Myson chipset is a variant of the DEC Tulip NIC chipset.
+.Pp
+The driver will work with almost any MII-compliant PHY, thus failure to
+positively identify the chip is not a fatal error.
+.Sh HARDWARE
+The
+.Nm
+driver provides support for various NICs based on the Myson chipset.
+Supported models include:
+.Pp
+.Bl -bullet -compact
+.It
+Myson MTD800 PCI Fast Ethernet chip
+.It
+Myson MTD803 PCI Fast Ethernet chip
+.It
+Myson MTD89X PCI Gigabit Ethernet chip
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr de 4 ,
+.Xr netintro 4 ,
+.Xr pci 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.6 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by Myson Technology Inc.
+.Pp
+This manual page was written by
+.An Hiten M. Pandya Aq hmp@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+driver does not support Power Management Events (PME).
diff --git a/share/man/man4/natm.4 b/share/man/man4/natm.4
new file mode 100644
index 0000000..33bd2b1
--- /dev/null
+++ b/share/man/man4/natm.4
@@ -0,0 +1,101 @@
+.\" $FreeBSD$
+.\"
+.Dd December 29, 1997
+.Dt NATM 4
+.Os
+.Sh NAME
+.Nm natm
+.Nd Native Mode ATM protocol layer
+.Sh DESCRIPTION
+The
+.Bx
+ATM software comes with a
+.Em native mode ATM protocol layer
+which provides socket level access to AAL0 and AAL5 virtual circuits.
+To enable this protocol layer, add
+.Dl options NATM
+to your kernel configuration file and re-make the kernel (do not forget
+to do
+.Dq make clean ) .
+.Sh NATM API
+The NATM layer uses a
+.Vt struct sockaddr_natm
+to specify a virtual circuit:
+.Bd -literal -offset indent
+struct sockaddr_natm {
+ u_int8_t snatm_len; /* length */
+ u_int8_t snatm_family; /* AF_NATM */
+ char snatm_if[IFNAMSIZ]; /* interface name */
+ u_int16_t snatm_vci; /* vci */
+ u_int8_t snatm_vpi; /* vpi */
+};
+.Ed
+.Pp
+To create an AAL5 connection to a virtual circuit with VPI 0, VCI 201
+one would use the following:
+.Bd -literal -offset indent
+ struct sockaddr_natm snatm;
+ int s, r;
+ s = socket(AF_NATM, SOCK_STREAM, PROTO_NATMAAL5);
+ /* note: PROTO_NATMAAL0 is AAL0 */
+ if (s < 0) { perror("socket"); exit(1); }
+ bzero(&snatm, sizeof(snatm));
+ snatm.snatm_len = sizeof(snatm);
+ snatm.snatm_family = AF_NATM;
+ sprintf(snatm.snatm_if, "en0");
+ snatm.snatm_vci = 201;
+ snatm.snatm_vpi = 0;
+ r = connect(s, (struct sockaddr *)&snatm, sizeof(snatm));
+ if (r < 0) { perror("connect"); exit(1); }
+ /* s now connected to ATM! */
+.Ed
+.Pp
+The
+.Fn socket
+call simply creates an unconnected NATM socket.
+The
+.Fn connect
+call associates an unconnected NATM socket with a
+virtual circuit and tells the driver to enable that virtual circuit
+for receiving data.
+After the
+.Fn connect
+call one can
+.Fn read
+or
+.Fn write
+to the socket to perform ATM I/O.
+.Sh Internal NATM operation
+Internally, the NATM protocol layer keeps a list of all active virtual
+circuits on the system in
+.Dv natm_pcbs .
+This includes circuits currently being used for IP to prevent NATM and
+IP from clashing over virtual circuit usage.
+.Pp
+When a virtual circuit is enabled for receiving data, the NATM
+protocol layer passes the address of the protocol control block down
+to the driver as a receive
+.Dq handle .
+When inbound data arrives, the driver passes the data back with the
+appropriate receive handle.
+The NATM layer uses this to avoid the
+overhead of a protocol control block lookup.
+This allows us to take
+advantage of the fact that ATM has already demultiplexed the data for
+us.
+.Sh CAVEATS
+The NATM protocol support is subject to change as
+the ATM protocols develop.
+Users should not depend on details of the current implementation, but rather
+the services exported.
+.Sh SEE ALSO
+.Xr en 4 ,
+.Xr fatm 4 ,
+.Xr hatm 4 ,
+.Xr natmip 4 ,
+.Xr patm 4
+.Sh AUTHORS
+.An Chuck Cranor
+of Washington University implemented the NATM protocol layer
+along with the EN ATM driver in 1996 for
+.Nx .
diff --git a/share/man/man4/natmip.4 b/share/man/man4/natmip.4
new file mode 100644
index 0000000..154e97d
--- /dev/null
+++ b/share/man/man4/natmip.4
@@ -0,0 +1,248 @@
+.\"
+.\" Copyright (c) 2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" All rights reserved.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" 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$
+.\"
+.Dd August 11, 2003
+.Dt NATMIP 4
+.Os
+.Sh NAME
+.Nm natmip
+.Nd IP over ATM PVCs
+.Sh SYNOPSIS
+.Cd "device atm"
+.Cd "options NATM"
+.Sh DESCRIPTION
+The NATM protocol stack includes support for IP over ATM.
+Without any
+additional signalling stacks or other modules it is possible to build
+a CLIP (classical IP over ATM) network based on PVCs.
+.Pp
+An ATM network card
+.Li ( en0
+in this example) is configured for IP by something
+like:
+.Pp
+.Dl "ifconfig en0 128.252.200.1 netmask 0xffffff00 up"
+.Pp
+IP routing is done with special interface routes (routes with directly
+reachable destinations) with a link layer gateway address.
+The link layer address specifies the ATM interface through which the
+destination can be reached, the virtual channel that connects to the
+destination and the ATM characteristics of this channel.
+The address part of the link layer address (see
+.Xr link_addr 3 )
+consists of a fixed part (the first 5 bytes) and a part that
+depends on the kind of the PVC (UBR, CBR, VBR, ABR).
+Multi-byte values
+are big-endian encoded: the bytes with the lower numbers contain the
+higher order bits.
+.Bl -tag -width "bytes 12...12" -offset indent
+.It byte 0
+Is a flag byte.
+Currently only flag 0x20 is used.
+When set, all IP frames are LLC/SNAP encapsulated before putting them into
+an AAL5 frame.
+Setting this flag is recommended and allows interoperability with other
+CLIP implementations.
+Note that BPF works only with LLC/SNAP encapsulation.
+.It byte 1
+This is the VPI of the channel.
+.It bytes 2...3
+VCI of the channel.
+Must not be zero.
+.It byte 4
+Traffic type.
+One of 0 (UBR), 1 (CBR), 2 (ABR), 3 (VBR).
+.El
+.Pp
+The variable part for UBR connections may be either empty or three bytes:
+.Bl -tag -width "bytes 12...12" -offset indent
+.It bytes 5...7
+Specifies the peak cell rate for UBR.
+.El
+.Pp
+The variable part for CBR connections must be three bytes:
+.Bl -tag -width "bytes 12...12" -offset indent
+.It bytes 5...7
+Specifies the peak cell rate for CBR.
+.El
+.Pp
+The variable part for VBR connections must be 9 bytes long and specifies three
+values:
+.Bl -tag -width "bytes 12...12" -offset indent
+.It bytes 5...7
+Specifies the peak cell rate for VBR.
+.It bytes 8...10
+This is the sustainable cell rate.
+.It bytes 11...13
+The maximum burst size.
+.El
+.Pp
+The variable part for ABR connections must be 19 bytes long and specifies the
+following values:
+.Bl -tag -width "bytes 12...12" -offset indent
+.It bytes 5...7
+Specifies the peak cell rate for ABR.
+.It bytes 8...10
+The minimum cell rate.
+.It bytes 11...13
+The initial cell rate.
+.It bytes 14...16
+The transient buffer exposure.
+.It byte 17
+The NRM value.
+.It byte 18
+The TRM value.
+.It bytes 19...20
+The ADTF value.
+.It byte 21
+The rate increase factor (RIF).
+.It byte 22
+The rate decrease factor (RDF).
+.It byte 23
+The cutoff decrease factor (CDF).
+.El
+.Pp
+To add a PVC the
+.Xr route 8
+utility can be used:
+.Bd -ragged -offset indent
+.Nm route Cm add
+.Fl iface Aq Ar "remote\ IP\ address"
+.Fl link Ao Ar iface Ac : Ns Aq Ar lladdr
+.Ed
+.Pp
+The
+.Ar iface
+is the ATM interface through which
+.Ar "remote\ IP\ address"
+can be reached and
+.Ar lladdr
+is the link layer address as a string of dot-separated, hexadecimal bytes.
+.Pp
+NATM also supports the old, original format.
+This consists of 4 byte
+link layer addresses (and the channels are implicit UBR):
+.Bl -tag -width "bytes 12...12" -offset indent
+.It byte 0
+Flags:
+.Bl -tag -width "0x02" -offset indent -compact
+.It 0x01
+use AAL5.
+.It 0x02
+if using AAL5, use an LLC/SNAP header.
+.El
+.Pp
+Thus, parameter 3 means AAL5 and LLC/SNAP encapsulation (this is the required
+setting for interworking with other CLIP clients).
+Note that BPF works only with LLC/SNAP encapsulation.
+.It byte 1
+VPI for the channel
+.It bytes 2...3
+VCI for the channel
+.El
+.Sh EXAMPLES
+Suppose you have 3 hosts 128.252.200.1, 128.252.200.2 and
+128.252.200.3 connected by ATM through PVCs:
+.Pp
+.Bl -item -offset indent -compact
+.It
+between 128.252.200.1 and 128.252.200.2: 0xc9 UBR
+.It
+between 128.252.200.1 and 128.252.200.3: 0xca VBR
+.It
+between 128.252.200.2 and 128.252.200.3: 0xcb CBR
+.El
+.Pp
+The parameters for the VBR channel are: PCR 50000, SCR 10000, MBS 10.
+The peak cell rate for the CBR channel is 100000.
+.Pp
+To enable the links use the following commands:
+.Pp
+on host 128.252.200.1:
+.Bd -literal -offset indent -compact
+ifconfig en0 128.252.200.1 netmask 0xffffff00 up
+route add -iface 128.252.200.2 -link en0:3.0.0.c9.0
+route add -iface 128.252.200.3 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a
+.Ed
+.Pp
+on host 128.252.200.2:
+.Bd -literal -offset indent -compact
+ifconfig en0 128.252.200.2 netmask 0xffffff00 up
+route add -iface 128.252.200.1 -link en0:3.0.0.c9.0
+route add -iface 128.252.200.3 -link en0:3.0.0.cb.1.1.86.a0
+.Ed
+.Pp
+on host 128.252.200.3:
+.Bd -literal -offset indent -compact
+ifconfig en0 128.252.200.3 netmask 0xffffff00 up
+route add -iface 128.252.200.1 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a
+route add -iface 128.252.200.2 -link en0:3.0.0.cb.1.1.86.a0
+.Ed
+.Pp
+This can also be done in
+.Xr rc.conf 5 :
+.Pp
+on host 128.252.200.1:
+.Bd -literal -offset indent -compact
+network_interfaces="lo0 en0"
+ifconfig_en0="inet 128.252.200.1 netmask 255.255.255.0"
+static_routes="host2 host3"
+route_host2="-iface 128.252.200.2 -link en0:3.0.0.c9.0"
+route_host3="-iface 128.252.200.3 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a"
+.Ed
+.Pp
+on host 128.252.200.2:
+.Bd -literal -offset indent -compact
+network_interfaces="lo0 en0"
+ifconfig_en0="inet 128.252.200.2 netmask 255.255.255.0"
+static_routes="host1 host3"
+route_host1="-iface 128.252.200.1 -link en0:3.0.0.c9.0"
+route_host3="-iface 128.252.200.3 -link en0:3.0.0.cb.1.1.86.a0"
+.Ed
+.Pp
+on host 128.252.200.3:
+.Bd -literal -offset indent -compact
+network_interfaces="lo0 en0"
+ifconfig_en0="inet 128.252.200.3 netmask 255.255.255.0"
+static_routes="host1 host2"
+route_host1="-iface 128.252.200.1 -link en0:3.0.0.ca.3.0.c3.50.0.27.10.0.0.a"
+route_host2="-iface 128.252.200.2 -link en0:3.0.0.cb.1.1.86.a0"
+.Ed
+.Sh SEE ALSO
+.Xr en 4 ,
+.Xr fatm 4 ,
+.Xr hatm 4 ,
+.Xr natm 4 ,
+.Xr patm 4
+.Sh AUTHORS
+.An Chuck Cranor
+of Washington University implemented the NATM protocol layer
+along with the EN ATM driver in 1996 for
+.Nx .
diff --git a/share/man/man4/ncr.4 b/share/man/man4/ncr.4
new file mode 100644
index 0000000..0521b4d
--- /dev/null
+++ b/share/man/man4/ncr.4
@@ -0,0 +1,91 @@
+.\"
+.\" Copyright (c) 1994 James A. Jegers
+.\" 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. 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$
+.\"
+.Dd August 19, 2004
+.Dt NCR 4
+.Os
+.Sh NAME
+.Nm ncr
+.Nd NCR 53C8xx SCSI driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device ncr"
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the following NCR/Symbios SCSI controller
+chips:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn 53C810
+.It
+.Tn 53C810A
+.It
+.Tn 53C815
+.It
+.Tn 53C820
+.It
+.Tn 53C825A
+.It
+.Tn 53C860
+.It
+.Tn 53C875
+.It
+.Tn 53C875J
+.It
+.Tn 53C885
+.It
+.Tn 53C895
+.It
+.Tn 53C895A
+.It
+.Tn 53C896
+.It
+.Tn 53C1510D
+.El
+.Pp
+The following add-on boards are known to be supported:
+.Pp
+.Bl -bullet -compact
+.It
+I-O DATA SC-98/PCI (PC-98)
+.It
+I-O DATA SC-PCI (PC-98)
+.El
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr sa 4 ,
+.Xr scsi 4 ,
+.Xr sym 4
diff --git a/share/man/man4/ncv.4 b/share/man/man4/ncv.4
new file mode 100644
index 0000000..8ab7199
--- /dev/null
+++ b/share/man/man4/ncv.4
@@ -0,0 +1,133 @@
+.\" Copyright (C) 2003 The FreeBSD Project. All rights reserved.
+.\" Copyright (c) 2003 Noriaki Mitsunaga. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 10, 2004
+.Dt NCV 4
+.Os
+.Sh NAME
+.Nm ncv
+.Nd "NCR 53C500 based SCSI host adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device ncv"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ncv_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to the
+.Tn SCSI
+bus
+connected to an NCR 53C500 based
+PC-Card
+.Tn SCSI
+host adapter or an Adaptec AHA-2920 on the
+.Tn PCI
+bus.
+.Sh HARDWARE
+The following devices are currently supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+I-O DATA PCSC-DV
+.It
+KME KXLC002 (TAXAN ICD-400PN, etc.), KXLC004, and UJDCD450
+.It
+Macnica Miracle SCSI-II mPS110
+.It
+Media Intelligent MSC-110, MSC-200
+.It
+NEC PC-9801N-J03R
+.It
+New Media Corporation BASICS SCSI
+.It
+Qlogic Fast SCSI
+.It
+RATOC REX-9530, REX-5572 (SCSI only)
+.El
+.Sh DIAGNOSTICS
+The following error messages are sometimes returned:
+.Bl -diag
+.It "SCSI BUS RESET failed"
+Usually returned when a failure occurs during
+the bus reset.
+.It "CMD_NOP failed"
+No operation or the operation has failed.
+.It "CMD_NOP|CMD_DMA"
+A failure occurred during the
+.Tn DMA
+read/write operations.
+.El
+.Pp
+The
+.Nm
+driver should return
+.Bq Er ENODEV
+when any of the previously noted failures occur.
+.Sh SEE ALSO
+.Xr cardbus 4 ,
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr pccard 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+device driver has been developed for
+.Nx Ns / Ns Tn pc98
+and ported to
+.Fx .
+The
+.Nm
+driver first appeared in
+.Fx 2.2
+with
+.Tn PAO
+and merged in
+.Fx 4.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Naofumi Honda .
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+and
+.An Noriaki Mitsunaga Aq non@FreeBSD.org .
diff --git a/share/man/man4/ndis.4 b/share/man/man4/ndis.4
new file mode 100644
index 0000000..107001a
--- /dev/null
+++ b/share/man/man4/ndis.4
@@ -0,0 +1,151 @@
+.\" Copyright (c) 2003
+.\" Bill Paul <wpaul@windriver.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd October 13, 2006
+.Dt NDIS 4 i386
+.Os
+.Sh NAME
+.Nm ndis
+.Nd NDIS miniport driver wrapper
+.Sh SYNOPSIS
+.Cd "options NDISAPI"
+.Cd "device ndis"
+.Cd "device wlan"
+.Sh DESCRIPTION
+The
+.Nm
+driver is a wrapper designed to allow binary
+.Tn Windows\[rg]
+NDIS miniport
+network drivers to be used with
+.Fx .
+The
+.Nm
+driver is provided in source code form and must be combined with
+the
+.Tn Windows\[rg]
+driver supplied with your network adapter.
+The
+.Nm
+driver uses the
+.Nm ndisapi
+kernel subsystem to relocate and link the
+.Tn Windows\[rg]
+binary so
+that it can be used in conjunction with native code.
+The
+.Nm ndisapi
+subsystem provides an interface between the NDIS API and the
+.Fx
+networking infrastructure.
+The
+.Tn Windows\[rg]
+driver is essentially
+fooled into thinking it is running on
+.Tn Windows\[rg] .
+Note that this
+means the
+.Nm
+driver is only useful on x86 machines.
+.Pp
+To build a functional driver, the user must have a copy of the
+driver distribution media for his or her card.
+From this distribution,
+the user must extract two files: the
+.Pa .SYS
+file containing the driver
+binary code, and its companion
+.Pa .INF
+file, which contains the
+definitions for driver-specific registry keys and other installation
+data such as device identifiers.
+These two files can be converted
+into a kernel module file using the
+.Xr ndisgen 8
+utility.
+This file contains a binary image of the driver plus
+registry key data.
+When the
+.Nm
+driver loads, it will create
+.Xr sysctl 3
+nodes for each registry key extracted from the
+.Pa .INF
+file.
+.Pp
+The
+.Nm
+driver is designed to support mainly Ethernet and wireless
+network devices with PCI, PCMCIA and USB bus attachments.
+(Cardbus
+devices are also supported as a subset of PCI.)
+It can
+support many different media types and speeds.
+One limitation
+however, is that there is no consistent way to learn if an
+Ethernet device is operating in full or half duplex mode.
+The NDIS API allows for a generic means for determining link
+state and speed, but not the duplex setting.
+There may be
+driver-specific registry keys to control the media setting
+which can be configured via the
+.Xr sysctl 8
+command.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ndis%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, however the device failed to acknowledge the transmission
+before a timeout expired.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8 ,
+.Xr ndiscvt 8 ,
+.Xr ndisgen 8
+.Rs
+.%T "NDIS 5.1 specification"
+.%O http://www.microsoft.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@windriver.com .
diff --git a/share/man/man4/netgraph.4 b/share/man/man4/netgraph.4
new file mode 100644
index 0000000..7499215
--- /dev/null
+++ b/share/man/man4/netgraph.4
@@ -0,0 +1,1480 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Authors: Julian Elischer <julian@FreeBSD.org>
+.\" Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $Whistle: netgraph.4,v 1.7 1999/01/28 23:54:52 julian Exp $
+.\" $FreeBSD$
+.\"
+.Dd May 25, 2008
+.Dt NETGRAPH 4
+.Os
+.Sh NAME
+.Nm netgraph
+.Nd "graph based kernel networking subsystem"
+.Sh DESCRIPTION
+The
+.Nm
+system provides a uniform and modular system for the implementation
+of kernel objects which perform various networking functions.
+The objects, known as
+.Em nodes ,
+can be arranged into arbitrarily complicated graphs.
+Nodes have
+.Em hooks
+which are used to connect two nodes together, forming the edges in the graph.
+Nodes communicate along the edges to process data, implement protocols, etc.
+.Pp
+The aim of
+.Nm
+is to supplement rather than replace the existing kernel networking
+infrastructure.
+It provides:
+.Pp
+.Bl -bullet -compact
+.It
+A flexible way of combining protocol and link level drivers.
+.It
+A modular way to implement new protocols.
+.It
+A common framework for kernel entities to inter-communicate.
+.It
+A reasonably fast, kernel-based implementation.
+.El
+.Ss Nodes and Types
+The most fundamental concept in
+.Nm
+is that of a
+.Em node .
+All nodes implement a number of predefined methods which allow them
+to interact with other nodes in a well defined manner.
+.Pp
+Each node has a
+.Em type ,
+which is a static property of the node determined at node creation time.
+A node's type is described by a unique
+.Tn ASCII
+type name.
+The type implies what the node does and how it may be connected
+to other nodes.
+.Pp
+In object-oriented language, types are classes, and nodes are instances
+of their respective class.
+All node types are subclasses of the generic node
+type, and hence inherit certain common functionality and capabilities
+(e.g., the ability to have an
+.Tn ASCII
+name).
+.Pp
+Nodes may be assigned a globally unique
+.Tn ASCII
+name which can be
+used to refer to the node.
+The name must not contain the characters
+.Ql .\&
+or
+.Ql \&: ,
+and is limited to
+.Dv NG_NODESIZ
+characters (including the terminating
+.Dv NUL
+character).
+.Pp
+Each node instance has a unique
+.Em ID number
+which is expressed as a 32-bit hexadecimal value.
+This value may be used to refer to a node when there is no
+.Tn ASCII
+name assigned to it.
+.Ss Hooks
+Nodes are connected to other nodes by connecting a pair of
+.Em hooks ,
+one from each node.
+Data flows bidirectionally between nodes along
+connected pairs of hooks.
+A node may have as many hooks as it
+needs, and may assign whatever meaning it wants to a hook.
+.Pp
+Hooks have these properties:
+.Bl -bullet
+.It
+A hook has an
+.Tn ASCII
+name which is unique among all hooks
+on that node (other hooks on other nodes may have the same name).
+The name must not contain the characters
+.Ql .\&
+or
+.Ql \&: ,
+and is
+limited to
+.Dv NG_HOOKSIZ
+characters (including the terminating
+.Dv NUL
+character).
+.It
+A hook is always connected to another hook.
+That is, hooks are
+created at the time they are connected, and breaking an edge by
+removing either hook destroys both hooks.
+.It
+A hook can be set into a state where incoming packets are always queued
+by the input queueing system, rather than being delivered directly.
+This can be used when the data is sent from an interrupt handler,
+and processing must be quick so as not to block other interrupts.
+.It
+A hook may supply overriding receive data and receive message functions,
+which should be used for data and messages received through that hook
+in preference to the general node-wide methods.
+.El
+.Pp
+A node may decide to assign special meaning to some hooks.
+For example, connecting to the hook named
+.Va debug
+might trigger
+the node to start sending debugging information to that hook.
+.Ss Data Flow
+Two types of information flow between nodes: data messages and
+control messages.
+Data messages are passed in
+.Vt mbuf chains
+along the edges
+in the graph, one edge at a time.
+The first
+.Vt mbuf
+in a chain must have the
+.Dv M_PKTHDR
+flag set.
+Each node decides how to handle data received through one of its hooks.
+.Pp
+Along with data, nodes can also receive control messages.
+There are generic and type-specific control messages.
+Control messages have a common
+header format, followed by type-specific data, and are binary structures
+for efficiency.
+However, node types may also support conversion of the
+type-specific data between binary and
+.Tn ASCII
+formats,
+for debugging and human interface purposes (see the
+.Dv NGM_ASCII2BINARY
+and
+.Dv NGM_BINARY2ASCII
+generic control messages below).
+Nodes are not required to support these conversions.
+.Pp
+There are three ways to address a control message.
+If there is a sequence of edges connecting the two nodes, the message
+may be
+.Dq source routed
+by specifying the corresponding sequence
+of
+.Tn ASCII
+hook names as the destination address for the message (relative
+addressing).
+If the destination is adjacent to the source, then the source
+node may simply specify (as a pointer in the code) the hook across which the
+message should be sent.
+Otherwise, the recipient node's global
+.Tn ASCII
+name
+(or equivalent ID-based name) is used as the destination address
+for the message (absolute addressing).
+The two types of
+.Tn ASCII
+addressing
+may be combined, by specifying an absolute start node and a sequence
+of hooks.
+Only the
+.Tn ASCII
+addressing modes are available to control programs outside the kernel;
+use of direct pointers is limited to kernel modules.
+.Pp
+Messages often represent commands that are followed by a reply message
+in the reverse direction.
+To facilitate this, the recipient of a
+control message is supplied with a
+.Dq return address
+that is suitable for addressing a reply.
+.Pp
+Each control message contains a 32-bit value, called a
+.Dq typecookie ,
+indicating the type of the message, i.e.\& how to interpret it.
+Typically each type defines a unique typecookie for the messages
+that it understands.
+However, a node may choose to recognize and
+implement more than one type of messages.
+.Pp
+If a message is delivered to an address that implies that it arrived
+at that node through a particular hook (as opposed to having been directly
+addressed using its ID or global name) then that hook is identified to the
+receiving node.
+This allows a message to be re-routed or passed on, should
+a node decide that this is required, in much the same way that data packets
+are passed around between nodes.
+A set of standard
+messages for flow control and link management purposes are
+defined by the base system that are usually
+passed around in this manner.
+Flow control message would usually travel
+in the opposite direction to the data to which they pertain.
+.Ss Netgraph is (Usually) Functional
+In order to minimize latency, most
+.Nm
+operations are functional.
+That is, data and control messages are delivered by making function
+calls rather than by using queues and mailboxes.
+For example, if node
+A wishes to send a data
+.Vt mbuf
+to neighboring node B, it calls the
+generic
+.Nm
+data delivery function.
+This function in turn locates
+node B and calls B's
+.Dq receive data
+method.
+There are exceptions to this.
+.Pp
+Each node has an input queue, and some operations can be considered to
+be
+.Em writers
+in that they alter the state of the node.
+Obviously, in an SMP
+world it would be bad if the state of a node were changed while another
+data packet were transiting the node.
+For this purpose, the input queue implements a
+.Em reader/writer
+semantic so that when there is a writer in the node, all other requests
+are queued, and while there are readers, a writer, and any following
+packets are queued.
+In the case where there is no reason to queue the
+data, the input method is called directly, as mentioned above.
+.Pp
+A node may declare that all requests should be considered as writers,
+or that requests coming in over a particular hook should be considered to
+be a writer, or even that packets leaving or entering across a particular
+hook should always be queued, rather than delivered directly (often useful
+for interrupt routines who want to get back to the hardware quickly).
+By default, all control message packets are considered to be writers
+unless specifically declared to be a reader in their definition.
+(See
+.Dv NGM_READONLY
+in
+.In ng_message.h . )
+.Pp
+While this mode of operation
+results in good performance, it has a few implications for node
+developers:
+.Bl -bullet
+.It
+Whenever a node delivers a data or control message, the node
+may need to allow for the possibility of receiving a returning
+message before the original delivery function call returns.
+.It
+.Nm Netgraph
+provides internal synchronization between nodes.
+Data always enters a
+.Dq graph
+at an
+.Em edge node .
+An
+.Em edge node
+is a node that interfaces between
+.Nm
+and some other part of the system.
+Examples of
+.Dq edge nodes
+include device drivers, the
+.Vt socket , ether , tty ,
+and
+.Vt ksocket
+node type.
+In these
+.Em edge nodes ,
+the calling thread directly executes code in the node, and from that code
+calls upon the
+.Nm
+framework to deliver data across some edge
+in the graph.
+From an execution point of view, the calling thread will execute the
+.Nm
+framework methods, and if it can acquire a lock to do so,
+the input methods of the next node.
+This continues until either the data is discarded or queued for some
+device or system entity, or the thread is unable to acquire a lock on
+the next node.
+In that case, the data is queued for the node, and execution rewinds
+back to the original calling entity.
+The queued data will be picked up and processed by either the current
+holder of the lock when they have completed their operations, or by
+a special
+.Nm
+thread that is activated when there are such items
+queued.
+.It
+It is possible for an infinite loop to occur if the graph contains cycles.
+.El
+.Pp
+So far, these issues have not proven problematical in practice.
+.Ss Interaction with Other Parts of the Kernel
+A node may have a hidden interaction with other components of the
+kernel outside of the
+.Nm
+subsystem, such as device hardware,
+kernel protocol stacks, etc.
+In fact, one of the benefits of
+.Nm
+is the ability to join disparate kernel networking entities together in a
+consistent communication framework.
+.Pp
+An example is the
+.Vt socket
+node type which is both a
+.Nm
+node and a
+.Xr socket 2
+in the protocol family
+.Dv PF_NETGRAPH .
+Socket nodes allow user processes to participate in
+.Nm .
+Other nodes communicate with socket nodes using the usual methods, and the
+node hides the fact that it is also passing information to and from a
+cooperating user process.
+.Pp
+Another example is a device driver that presents
+a node interface to the hardware.
+.Ss Node Methods
+Nodes are notified of the following actions via function calls
+to the following node methods,
+and may accept or reject that action (by returning the appropriate
+error code):
+.Bl -tag -width 2n
+.It Creation of a new node
+The constructor for the type is called.
+If creation of a new node is allowed, constructor method may allocate any
+special resources it needs.
+For nodes that correspond to hardware, this is typically done during the
+device attach routine.
+Often a global
+.Tn ASCII
+name corresponding to the
+device name is assigned here as well.
+.It Creation of a new hook
+The hook is created and tentatively
+linked to the node, and the node is told about the name that will be
+used to describe this hook.
+The node sets up any special data structures
+it needs, or may reject the connection, based on the name of the hook.
+.It Successful connection of two hooks
+After both ends have accepted their
+hooks, and the links have been made, the nodes get a chance to
+find out who their peer is across the link, and can then decide to reject
+the connection.
+Tear-down is automatic.
+This is also the time at which
+a node may decide whether to set a particular hook (or its peer) into
+the
+.Em queueing
+mode.
+.It Destruction of a hook
+The node is notified of a broken connection.
+The node may consider some hooks
+to be critical to operation and others to be expendable: the disconnection
+of one hook may be an acceptable event while for another it
+may effect a total shutdown for the node.
+.It Preshutdown of a node
+This method is called before real shutdown, which is discussed below.
+While in this method, the node is fully operational and can send a
+.Dq goodbye
+message to its peers, or it can exclude itself from the chain and reconnect
+its peers together, like the
+.Xr ng_tee 4
+node type does.
+.It Shutdown of a node
+This method allows a node to clean up
+and to ensure that any actions that need to be performed
+at this time are taken.
+The method is called by the generic (i.e., superclass)
+node destructor which will get rid of the generic components of the node.
+Some nodes (usually associated with a piece of hardware) may be
+.Em persistent
+in that a shutdown breaks all edges and resets the node,
+but does not remove it.
+In this case, the shutdown method should not
+free its resources, but rather, clean up and then call the
+.Fn NG_NODE_REVIVE
+macro to signal the generic code that the shutdown is aborted.
+In the case where the shutdown is started by the node itself due to hardware
+removal or unloading (via
+.Fn ng_rmnode_self ) ,
+it should set the
+.Dv NGF_REALLY_DIE
+flag to signal to its own shutdown method that it is not to persist.
+.El
+.Ss Sending and Receiving Data
+Two other methods are also supported by all nodes:
+.Bl -tag -width 2n
+.It Receive data message
+A
+.Nm
+.Em queueable request item ,
+usually referred to as an
+.Em item ,
+is received by this function.
+The item contains a pointer to an
+.Vt mbuf .
+.Pp
+The node is notified on which hook the item has arrived,
+and can use this information in its processing decision.
+The receiving node must always
+.Fn NG_FREE_M
+the
+.Vt mbuf chain
+on completion or error, or pass it on to another node
+(or kernel module) which will then be responsible for freeing it.
+Similarly, the
+.Em item
+must be freed if it is not to be passed on to another node, by using the
+.Fn NG_FREE_ITEM
+macro.
+If the item still holds references to
+.Vt mbufs
+at the time of
+freeing then they will also be appropriately freed.
+Therefore, if there is any chance that the
+.Vt mbuf
+will be
+changed or freed separately from the item, it is very important
+that it be retrieved using the
+.Fn NGI_GET_M
+macro that also removes the reference within the item.
+(Or multiple frees of the same object will occur.)
+.Pp
+If it is only required to examine the contents of the
+.Vt mbufs ,
+then it is possible to use the
+.Fn NGI_M
+macro to both read and rewrite
+.Vt mbuf
+pointer inside the item.
+.Pp
+If developer needs to pass any meta information along with the
+.Vt mbuf chain ,
+he should use
+.Xr mbuf_tags 9
+framework.
+.Bf -symbolic
+Note that old
+.Nm
+specific meta-data format is obsoleted now.
+.Ef
+.Pp
+The receiving node may decide to defer the data by queueing it in the
+.Nm
+NETISR system (see below).
+It achieves this by setting the
+.Dv HK_QUEUE
+flag in the flags word of the hook on which that data will arrive.
+The infrastructure will respect that bit and queue the data for delivery at
+a later time, rather than deliver it directly.
+A node may decide to set
+the bit on the
+.Em peer
+node, so that its own output packets are queued.
+.Pp
+The node may elect to nominate a different receive data function
+for data received on a particular hook, to simplify coding.
+It uses the
+.Fn NG_HOOK_SET_RCVDATA hook fn
+macro to do this.
+The function receives the same arguments in every way
+other than it will receive all (and only) packets from that hook.
+.It Receive control message
+This method is called when a control message is addressed to the node.
+As with the received data, an
+.Em item
+is received, with a pointer to the control message.
+The message can be examined using the
+.Fn NGI_MSG
+macro, or completely extracted from the item using the
+.Fn NGI_GET_MSG
+which also removes the reference within the item.
+If the Item still holds a reference to the message when it is freed
+(using the
+.Fn NG_FREE_ITEM
+macro), then the message will also be freed appropriately.
+If the
+reference has been removed, the node must free the message itself using the
+.Fn NG_FREE_MSG
+macro.
+A return address is always supplied, giving the address of the node
+that originated the message so a reply message can be sent anytime later.
+The return address is retrieved from the
+.Em item
+using the
+.Fn NGI_RETADDR
+macro and is of type
+.Vt ng_ID_t .
+All control messages and replies are
+allocated with the
+.Xr malloc 9
+type
+.Dv M_NETGRAPH_MSG ,
+however it is more convenient to use the
+.Fn NG_MKMESSAGE
+and
+.Fn NG_MKRESPONSE
+macros to allocate and fill out a message.
+Messages must be freed using the
+.Fn NG_FREE_MSG
+macro.
+.Pp
+If the message was delivered via a specific hook, that hook will
+also be made known, which allows the use of such things as flow-control
+messages, and status change messages, where the node may want to forward
+the message out another hook to that on which it arrived.
+.Pp
+The node may elect to nominate a different receive message function
+for messages received on a particular hook, to simplify coding.
+It uses the
+.Fn NG_HOOK_SET_RCVMSG hook fn
+macro to do this.
+The function receives the same arguments in every way
+other than it will receive all (and only) messages from that hook.
+.El
+.Pp
+Much use has been made of reference counts, so that nodes being
+freed of all references are automatically freed, and this behaviour
+has been tested and debugged to present a consistent and trustworthy
+framework for the
+.Dq type module
+writer to use.
+.Ss Addressing
+The
+.Nm
+framework provides an unambiguous and simple to use method of specifically
+addressing any single node in the graph.
+The naming of a node is
+independent of its type, in that another node, or external component
+need not know anything about the node's type in order to address it so as
+to send it a generic message type.
+Node and hook names should be
+chosen so as to make addresses meaningful.
+.Pp
+Addresses are either absolute or relative.
+An absolute address begins
+with a node name or ID, followed by a colon, followed by a sequence of hook
+names separated by periods.
+This addresses the node reached by starting
+at the named node and following the specified sequence of hooks.
+A relative address includes only the sequence of hook names, implicitly
+starting hook traversal at the local node.
+.Pp
+There are a couple of special possibilities for the node name.
+The name
+.Ql .\&
+(referred to as
+.Ql .: )
+always refers to the local node.
+Also, nodes that have no global name may be addressed by their ID numbers,
+by enclosing the hexadecimal representation of the ID number within
+the square brackets.
+Here are some examples of valid
+.Nm
+addresses:
+.Bd -literal -offset indent
+\&.:
+[3f]:
+foo:
+\&.:hook1
+foo:hook1.hook2
+[d80]:hook1
+.Ed
+.Pp
+The following set of nodes might be created for a site with
+a single physical frame relay line having two active logical DLCI channels,
+with RFC 1490 frames on DLCI 16 and PPP frames over DLCI 20:
+.Bd -literal
+[type SYNC ] [type FRAME] [type RFC1490]
+[ "Frame1" ](uplink)<-->(data)[<un-named>](dlci16)<-->(mux)[<un-named> ]
+[ A ] [ B ](dlci20)<---+ [ C ]
+ |
+ | [ type PPP ]
+ +>(mux)[<un-named>]
+ [ D ]
+.Ed
+.Pp
+One could always send a control message to node C from anywhere
+by using the name
+.Dq Li Frame1:uplink.dlci16 .
+In this case, node C would also be notified that the message
+reached it via its hook
+.Va mux .
+Similarly,
+.Dq Li Frame1:uplink.dlci20
+could reliably be used to reach node D, and node A could refer
+to node B as
+.Dq Li .:uplink ,
+or simply
+.Dq Li uplink .
+Conversely, B can refer to A as
+.Dq Li data .
+The address
+.Dq Li mux.data
+could be used by both nodes C and D to address a message to node A.
+.Pp
+Note that this is only for
+.Em control messages .
+In each of these cases, where a relative addressing mode is
+used, the recipient is notified of the hook on which the
+message arrived, as well as
+the originating node.
+This allows the option of hop-by-hop distribution of messages and
+state information.
+Data messages are
+.Em only
+routed one hop at a time, by specifying the departing
+hook, with each node making
+the next routing decision.
+So when B receives a frame on hook
+.Va data ,
+it decodes the frame relay header to determine the DLCI,
+and then forwards the unwrapped frame to either C or D.
+.Pp
+In a similar way, flow control messages may be routed in the reverse
+direction to outgoing data.
+For example a
+.Dq "buffer nearly full"
+message from
+.Dq Li Frame1:
+would be passed to node B
+which might decide to send similar messages to both nodes
+C and D.
+The nodes would use
+.Em "direct hook pointer"
+addressing to route the messages.
+The message may have travelled from
+.Dq Li Frame1:
+to B
+as a synchronous reply, saving time and cycles.
+.Ss Netgraph Structures
+Structures are defined in
+.In netgraph/netgraph.h
+(for kernel structures only of interest to nodes)
+and
+.In netgraph/ng_message.h
+(for message definitions also of interest to user programs).
+.Pp
+The two basic object types that are of interest to node authors are
+.Em nodes
+and
+.Em hooks .
+These two objects have the following
+properties that are also of interest to the node writers.
+.Bl -tag -width 2n
+.It Vt "struct ng_node"
+Node authors should always use the following
+.Ic typedef
+to declare
+their pointers, and should never actually declare the structure.
+.Pp
+.Fd "typedef struct ng_node *node_p;"
+.Pp
+The following properties are associated with a node, and can be
+accessed in the following manner:
+.Bl -tag -width 2n
+.It Validity
+A driver or interrupt routine may want to check whether
+the node is still valid.
+It is assumed that the caller holds a reference
+on the node so it will not have been freed, however it may have been
+disabled or otherwise shut down.
+Using the
+.Fn NG_NODE_IS_VALID node
+macro will return this state.
+Eventually it should be almost impossible
+for code to run in an invalid node but at this time that work has not been
+completed.
+.It Node ID Pq Vt ng_ID_t
+This property can be retrieved using the macro
+.Fn NG_NODE_ID node .
+.It Node name
+Optional globally unique name,
+.Dv NUL
+terminated string.
+If there
+is a value in here, it is the name of the node.
+.Bd -literal -offset indent
+if (NG_NODE_NAME(node)[0] != '\e0') ...
+
+if (strcmp(NG_NODE_NAME(node), "fred") == 0) ...
+.Ed
+.It A node dependent opaque cookie
+Anything of the pointer type can be placed here.
+The macros
+.Fn NG_NODE_SET_PRIVATE node value
+and
+.Fn NG_NODE_PRIVATE node
+set and retrieve this property, respectively.
+.It Number of hooks
+The
+.Fn NG_NODE_NUMHOOKS node
+macro is used
+to retrieve this value.
+.It Hooks
+The node may have a number of hooks.
+A traversal method is provided to allow all the hooks to be
+tested for some condition.
+.Fn NG_NODE_FOREACH_HOOK node fn arg rethook
+where
+.Fa fn
+is a function that will be called for each hook
+with the form
+.Fn fn hook arg
+and returning 0 to terminate the search.
+If the search is terminated, then
+.Fa rethook
+will be set to the hook at which the search was terminated.
+.El
+.It Vt "struct ng_hook"
+Node authors should always use the following
+.Ic typedef
+to declare
+their hook pointers.
+.Pp
+.Fd "typedef struct ng_hook *hook_p;"
+.Pp
+The following properties are associated with a hook, and can be
+accessed in the following manner:
+.Bl -tag -width 2n
+.It A hook dependent opaque cookie
+Anything of the pointer type can be placed here.
+The macros
+.Fn NG_HOOK_SET_PRIVATE hook value
+and
+.Fn NG_HOOK_PRIVATE hook
+set and retrieve this property, respectively.
+.It \&An associate node
+The macro
+.Fn NG_HOOK_NODE hook
+finds the associated node.
+.It A peer hook Pq Vt hook_p
+The other hook in this connected pair.
+The
+.Fn NG_HOOK_PEER hook
+macro finds the peer.
+.It References
+The
+.Fn NG_HOOK_REF hook
+and
+.Fn NG_HOOK_UNREF hook
+macros
+increment and decrement the hook reference count accordingly.
+After decrement you should always assume the hook has been freed
+unless you have another reference still valid.
+.It Override receive functions
+The
+.Fn NG_HOOK_SET_RCVDATA hook fn
+and
+.Fn NG_HOOK_SET_RCVMSG hook fn
+macros can be used to set override methods that will be used in preference
+to the generic receive data and receive message functions.
+To unset these, use the macros to set them to
+.Dv NULL .
+They will only be used for data and
+messages received on the hook on which they are set.
+.El
+.Pp
+The maintenance of the names, reference counts, and linked list
+of hooks for each node is handled automatically by the
+.Nm
+subsystem.
+Typically a node's private info contains a back-pointer to the node or hook
+structure, which counts as a new reference that must be included
+in the reference count for the node.
+When the node constructor is called,
+there is already a reference for this calculated in, so that
+when the node is destroyed, it should remember to do a
+.Fn NG_NODE_UNREF
+on the node.
+.Pp
+From a hook you can obtain the corresponding node, and from
+a node, it is possible to traverse all the active hooks.
+.Pp
+A current example of how to define a node can always be seen in
+.Pa src/sys/netgraph/ng_sample.c
+and should be used as a starting point for new node writers.
+.El
+.Ss Netgraph Message Structure
+Control messages have the following structure:
+.Bd -literal
+#define NG_CMDSTRSIZ 32 /* Max command string (including nul) */
+
+struct ng_mesg {
+ struct ng_msghdr {
+ u_char version; /* Must equal NG_VERSION */
+ u_char spare; /* Pad to 2 bytes */
+ u_short arglen; /* Length of cmd/resp data */
+ u_long flags; /* Message status flags */
+ u_long token; /* Reply should have the same token */
+ u_long typecookie; /* Node type understanding this message */
+ u_long cmd; /* Command identifier */
+ u_char cmdstr[NG_CMDSTRSIZ]; /* Cmd string (for debug) */
+ } header;
+ char data[0]; /* Start of cmd/resp data */
+};
+
+#define NG_ABI_VERSION 5 /* Netgraph kernel ABI version */
+#define NG_VERSION 4 /* Netgraph message version */
+#define NGF_ORIG 0x0000 /* Command */
+#define NGF_RESP 0x0001 /* Response */
+.Ed
+.Pp
+Control messages have the fixed header shown above, followed by a
+variable length data section which depends on the type cookie
+and the command.
+Each field is explained below:
+.Bl -tag -width indent
+.It Va version
+Indicates the version of the
+.Nm
+message protocol itself.
+The current version is
+.Dv NG_VERSION .
+.It Va arglen
+This is the length of any extra arguments, which begin at
+.Va data .
+.It Va flags
+Indicates whether this is a command or a response control message.
+.It Va token
+The
+.Va token
+is a means by which a sender can match a reply message to the
+corresponding command message; the reply always has the same token.
+.It Va typecookie
+The corresponding node type's unique 32-bit value.
+If a node does not recognize the type cookie it must reject the message
+by returning
+.Er EINVAL .
+.Pp
+Each type should have an include file that defines the commands,
+argument format, and cookie for its own messages.
+The typecookie
+insures that the same header file was included by both sender and
+receiver; when an incompatible change in the header file is made,
+the typecookie
+.Em must
+be changed.
+The de-facto method for generating unique type cookies is to take the
+seconds from the Epoch at the time the header file is written
+(i.e., the output of
+.Dq Nm date Fl u Li +%s ) .
+.Pp
+There is a predefined typecookie
+.Dv NGM_GENERIC_COOKIE
+for the
+.Vt generic
+node type, and
+a corresponding set of generic messages which all nodes understand.
+The handling of these messages is automatic.
+.It Va cmd
+The identifier for the message command.
+This is type specific,
+and is defined in the same header file as the typecookie.
+.It Va cmdstr
+Room for a short human readable version of
+.Va command
+(for debugging purposes only).
+.El
+.Pp
+Some modules may choose to implement messages from more than one
+of the header files and thus recognize more than one type cookie.
+.Ss Control Message ASCII Form
+Control messages are in binary format for efficiency.
+However, for
+debugging and human interface purposes, and if the node type supports
+it, control messages may be converted to and from an equivalent
+.Tn ASCII
+form.
+The
+.Tn ASCII
+form is similar to the binary form, with two exceptions:
+.Bl -enum
+.It
+The
+.Va cmdstr
+header field must contain the
+.Tn ASCII
+name of the command, corresponding to the
+.Va cmd
+header field.
+.It
+The arguments field contains a
+.Dv NUL Ns
+-terminated
+.Tn ASCII
+string version of the message arguments.
+.El
+.Pp
+In general, the arguments field of a control message can be any
+arbitrary C data type.
+.Nm Netgraph
+includes parsing routines to support
+some pre-defined datatypes in
+.Tn ASCII
+with this simple syntax:
+.Bl -bullet
+.It
+Integer types are represented by base 8, 10, or 16 numbers.
+.It
+Strings are enclosed in double quotes and respect the normal
+C language backslash escapes.
+.It
+IP addresses have the obvious form.
+.It
+Arrays are enclosed in square brackets, with the elements listed
+consecutively starting at index zero.
+An element may have an optional index and equals sign
+.Pq Ql =
+preceding it.
+Whenever an element
+does not have an explicit index, the index is implicitly the previous
+element's index plus one.
+.It
+Structures are enclosed in curly braces, and each field is specified
+in the form
+.Ar fieldname Ns = Ns Ar value .
+.It
+Any array element or structure field whose value is equal to its
+.Dq default value
+may be omitted.
+For integer types, the default value
+is usually zero; for string types, the empty string.
+.It
+Array elements and structure fields may be specified in any order.
+.El
+.Pp
+Each node type may define its own arbitrary types by providing
+the necessary routines to parse and unparse.
+.Tn ASCII
+forms defined
+for a specific node type are documented in the corresponding man page.
+.Ss Generic Control Messages
+There are a number of standard predefined messages that will work
+for any node, as they are supported directly by the framework itself.
+These are defined in
+.In netgraph/ng_message.h
+along with the basic layout of messages and other similar information.
+.Bl -tag -width indent
+.It Dv NGM_CONNECT
+Connect to another node, using the supplied hook names on either end.
+.It Dv NGM_MKPEER
+Construct a node of the given type and then connect to it using the
+supplied hook names.
+.It Dv NGM_SHUTDOWN
+The target node should disconnect from all its neighbours and shut down.
+Persistent nodes such as those representing physical hardware
+might not disappear from the node namespace, but only reset themselves.
+The node must disconnect all of its hooks.
+This may result in neighbors shutting themselves down, and possibly a
+cascading shutdown of the entire connected graph.
+.It Dv NGM_NAME
+Assign a name to a node.
+Nodes can exist without having a name, and this
+is the default for nodes created using the
+.Dv NGM_MKPEER
+method.
+Such nodes can only be addressed relatively or by their ID number.
+.It Dv NGM_RMHOOK
+Ask the node to break a hook connection to one of its neighbours.
+Both nodes will have their
+.Dq disconnect
+method invoked.
+Either node may elect to totally shut down as a result.
+.It Dv NGM_NODEINFO
+Asks the target node to describe itself.
+The four returned fields
+are the node name (if named), the node type, the node ID and the
+number of hooks attached.
+The ID is an internal number unique to that node.
+.It Dv NGM_LISTHOOKS
+This returns the information given by
+.Dv NGM_NODEINFO ,
+but in addition
+includes an array of fields describing each link, and the description for
+the node at the far end of that link.
+.It Dv NGM_LISTNAMES
+This returns an array of node descriptions (as for
+.Dv NGM_NODEINFO )
+where each entry of the array describes a named node.
+All named nodes will be described.
+.It Dv NGM_LISTNODES
+This is the same as
+.Dv NGM_LISTNAMES
+except that all nodes are listed regardless of whether they have a name or not.
+.It Dv NGM_LISTTYPES
+This returns a list of all currently installed
+.Nm
+types.
+.It Dv NGM_TEXT_STATUS
+The node may return a text formatted status message.
+The status information is determined entirely by the node type.
+It is the only
+.Dq generic
+message
+that requires any support within the node itself and as such the node may
+elect to not support this message.
+The text response must be less than
+.Dv NG_TEXTRESPONSE
+bytes in length (presently 1024).
+This can be used to return general
+status information in human readable form.
+.It Dv NGM_BINARY2ASCII
+This message converts a binary control message to its
+.Tn ASCII
+form.
+The entire control message to be converted is contained within the
+arguments field of the
+.Dv NGM_BINARY2ASCII
+message itself.
+If successful, the reply will contain the same control
+message in
+.Tn ASCII
+form.
+A node will typically only know how to translate messages that it
+itself understands, so the target node of the
+.Dv NGM_BINARY2ASCII
+is often the same node that would actually receive that message.
+.It Dv NGM_ASCII2BINARY
+The opposite of
+.Dv NGM_BINARY2ASCII .
+The entire control message to be converted, in
+.Tn ASCII
+form, is contained
+in the arguments section of the
+.Dv NGM_ASCII2BINARY
+and need only have the
+.Va flags , cmdstr ,
+and
+.Va arglen
+header fields filled in, plus the
+.Dv NUL Ns
+-terminated string version of
+the arguments in the arguments field.
+If successful, the reply
+contains the binary version of the control message.
+.El
+.Ss Flow Control Messages
+In addition to the control messages that affect nodes with respect to the
+graph, there are also a number of
+.Em flow control
+messages defined.
+At present these are
+.Em not
+handled automatically by the system, so
+nodes need to handle them if they are going to be used in a graph utilising
+flow control, and will be in the likely path of these messages.
+The default action of a node that does not understand these messages should
+be to pass them onto the next node.
+Hopefully some helper functions will assist in this eventually.
+These messages are also defined in
+.In netgraph/ng_message.h
+and have a separate cookie
+.Dv NG_FLOW_COOKIE
+to help identify them.
+They will not be covered in depth here.
+.Sh INITIALIZATION
+The base
+.Nm
+code may either be statically compiled
+into the kernel or else loaded dynamically as a KLD via
+.Xr kldload 8 .
+In the former case, include
+.Pp
+.D1 Cd "options NETGRAPH"
+.Pp
+in your kernel configuration file.
+You may also include selected
+node types in the kernel compilation, for example:
+.Pp
+.D1 Cd "options NETGRAPH"
+.D1 Cd "options NETGRAPH_SOCKET"
+.D1 Cd "options NETGRAPH_ECHO"
+.Pp
+Once the
+.Nm
+subsystem is loaded, individual node types may be loaded at any time
+as KLD modules via
+.Xr kldload 8 .
+Moreover,
+.Nm
+knows how to automatically do this; when a request to create a new
+node of unknown type
+.Ar type
+is made,
+.Nm
+will attempt to load the KLD module
+.Pa ng_ Ns Ao Ar type Ac Ns Pa .ko .
+.Pp
+Types can also be installed at boot time, as certain device drivers
+may want to export each instance of the device as a
+.Nm
+node.
+.Pp
+In general, new types can be installed at any time from within the
+kernel by calling
+.Fn ng_newtype ,
+supplying a pointer to the type's
+.Vt "struct ng_type"
+structure.
+.Pp
+The
+.Fn NETGRAPH_INIT
+macro automates this process by using a linker set.
+.Sh EXISTING NODE TYPES
+Several node types currently exist.
+Each is fully documented in its own man page:
+.Bl -tag -width indent
+.It SOCKET
+The socket type implements two new sockets in the new protocol domain
+.Dv PF_NETGRAPH .
+The new sockets protocols are
+.Dv NG_DATA
+and
+.Dv NG_CONTROL ,
+both of type
+.Dv SOCK_DGRAM .
+Typically one of each is associated with a socket node.
+When both sockets have closed, the node will shut down.
+The
+.Dv NG_DATA
+socket is used for sending and receiving data, while the
+.Dv NG_CONTROL
+socket is used for sending and receiving control messages.
+Data and control messages are passed using the
+.Xr sendto 2
+and
+.Xr recvfrom 2
+system calls, using a
+.Vt "struct sockaddr_ng"
+socket address.
+.It HOLE
+Responds only to generic messages and is a
+.Dq black hole
+for data.
+Useful for testing.
+Always accepts new hooks.
+.It ECHO
+Responds only to generic messages and always echoes data back through the
+hook from which it arrived.
+Returns any non-generic messages as their own response.
+Useful for testing.
+Always accepts new hooks.
+.It TEE
+This node is useful for
+.Dq snooping .
+It has 4 hooks:
+.Va left , right , left2right ,
+and
+.Va right2left .
+Data entering from the
+.Va right
+is passed to the
+.Va left
+and duplicated on
+.Va right2left ,
+and data entering from the
+.Va left
+is passed to the
+.Va right
+and duplicated on
+.Va left2right .
+Data entering from
+.Va left2right
+is sent to the
+.Va right
+and data from
+.Va right2left
+to
+.Va left .
+.It RFC1490 MUX
+Encapsulates/de-encapsulates frames encoded according to RFC 1490.
+Has a hook for the encapsulated packets
+.Pq Va downstream
+and one hook
+for each protocol (i.e., IP, PPP, etc.).
+.It FRAME RELAY MUX
+Encapsulates/de-encapsulates Frame Relay frames.
+Has a hook for the encapsulated packets
+.Pq Va downstream
+and one hook
+for each DLCI.
+.It FRAME RELAY LMI
+Automatically handles frame relay
+.Dq LMI
+(link management interface) operations and packets.
+Automatically probes and detects which of several LMI standards
+is in use at the exchange.
+.It TTY
+This node is also a line discipline.
+It simply converts between
+.Vt mbuf
+frames and sequential serial data, allowing a TTY to appear as a
+.Nm
+node.
+It has a programmable
+.Dq hotkey
+character.
+.It ASYNC
+This node encapsulates and de-encapsulates asynchronous frames
+according to RFC 1662.
+This is used in conjunction with the TTY node
+type for supporting PPP links over asynchronous serial lines.
+.It ETHERNET
+This node is attached to every Ethernet interface in the system.
+It allows capturing raw Ethernet frames from the network, as well as
+sending frames out of the interface.
+.It INTERFACE
+This node is also a system networking interface.
+It has hooks representing
+each protocol family (IP, AppleTalk, IPX, etc.) and appears in the output of
+.Xr ifconfig 8 .
+The interfaces are named
+.Dq Li ng0 ,
+.Dq Li ng1 ,
+etc.
+.It ONE2MANY
+This node implements a simple round-robin multiplexer.
+It can be used
+for example to make several LAN ports act together to get a higher speed
+link between two machines.
+.It Various PPP related nodes
+There is a full multilink PPP implementation that runs in
+.Nm .
+The
+.Pa net/mpd
+port can use these modules to make a very low latency high
+capacity PPP system.
+It also supports
+.Tn PPTP
+VPNs using the PPTP node.
+.It PPPOE
+A server and client side implementation of PPPoE.
+Used in conjunction with
+either
+.Xr ppp 8
+or the
+.Pa net/mpd
+port.
+.It BRIDGE
+This node, together with the Ethernet nodes, allows a very flexible
+bridging system to be implemented.
+.It KSOCKET
+This intriguing node looks like a socket to the system but diverts
+all data to and from the
+.Nm
+system for further processing.
+This allows
+such things as UDP tunnels to be almost trivially implemented from the
+command line.
+.El
+.Pp
+Refer to the section at the end of this man page for more nodes types.
+.Sh NOTES
+Whether a named node exists can be checked by trying to send a control message
+to it (e.g.,
+.Dv NGM_NODEINFO ) .
+If it does not exist,
+.Er ENOENT
+will be returned.
+.Pp
+All data messages are
+.Vt mbuf chains
+with the
+.Dv M_PKTHDR
+flag set.
+.Pp
+Nodes are responsible for freeing what they allocate.
+There are three exceptions:
+.Bl -enum
+.It
+.Vt Mbufs
+sent across a data link are never to be freed by the sender.
+In the
+case of error, they should be considered freed.
+.It
+Messages sent using one of
+.Fn NG_SEND_MSG_*
+family macros are freed by the recipient.
+As in the case above, the addresses
+associated with the message are freed by whatever allocated them so the
+recipient should copy them if it wants to keep that information.
+.It
+Both control messages and data are delivered and queued with a
+.Nm
+.Em item .
+The item must be freed using
+.Fn NG_FREE_ITEM item
+or passed on to another node.
+.El
+.Sh FILES
+.Bl -tag -width indent
+.It In netgraph/netgraph.h
+Definitions for use solely within the kernel by
+.Nm
+nodes.
+.It In netgraph/ng_message.h
+Definitions needed by any file that needs to deal with
+.Nm
+messages.
+.It In netgraph/ng_socket.h
+Definitions needed to use
+.Nm
+.Vt socket
+type nodes.
+.It In netgraph/ng_ Ns Ao Ar type Ac Ns Pa .h
+Definitions needed to use
+.Nm
+.Ar type
+nodes, including the type cookie definition.
+.It Pa /boot/kernel/netgraph.ko
+The
+.Nm
+subsystem loadable KLD module.
+.It Pa /boot/kernel/ng_ Ns Ao Ar type Ac Ns Pa .ko
+Loadable KLD module for node type
+.Ar type .
+.It Pa src/sys/netgraph/ng_sample.c
+Skeleton
+.Nm
+node.
+Use this as a starting point for new node types.
+.El
+.Sh USER MODE SUPPORT
+There is a library for supporting user-mode programs that wish
+to interact with the
+.Nm
+system.
+See
+.Xr netgraph 3
+for details.
+.Pp
+Two user-mode support programs,
+.Xr ngctl 8
+and
+.Xr nghook 8 ,
+are available to assist manual configuration and debugging.
+.Pp
+There are a few useful techniques for debugging new node types.
+First, implementing new node types in user-mode first
+makes debugging easier.
+The
+.Vt tee
+node type is also useful for debugging, especially in conjunction with
+.Xr ngctl 8
+and
+.Xr nghook 8 .
+.Pp
+Also look in
+.Pa /usr/share/examples/netgraph
+for solutions to several
+common networking problems, solved using
+.Nm .
+.Sh SEE ALSO
+.Xr socket 2 ,
+.Xr netgraph 3 ,
+.Xr ng_async 4 ,
+.Xr ng_atm 4 ,
+.Xr ng_atmllc 4 ,
+.Xr ng_bluetooth 4 ,
+.Xr ng_bpf 4 ,
+.Xr ng_bridge 4 ,
+.Xr ng_bt3c 4 ,
+.Xr ng_btsocket 4 ,
+.Xr ng_cisco 4 ,
+.Xr ng_device 4 ,
+.Xr ng_echo 4 ,
+.Xr ng_eiface 4 ,
+.Xr ng_etf 4 ,
+.Xr ng_ether 4 ,
+.Xr ng_fec 4 ,
+.Xr ng_frame_relay 4 ,
+.Xr ng_gif 4 ,
+.Xr ng_gif_demux 4 ,
+.Xr ng_h4 4 ,
+.Xr ng_hci 4 ,
+.Xr ng_hole 4 ,
+.Xr ng_hub 4 ,
+.Xr ng_iface 4 ,
+.Xr ng_ip_input 4 ,
+.Xr ng_ksocket 4 ,
+.Xr ng_l2cap 4 ,
+.Xr ng_l2tp 4 ,
+.Xr ng_lmi 4 ,
+.Xr ng_mppc 4 ,
+.Xr ng_netflow 4 ,
+.Xr ng_one2many 4 ,
+.Xr ng_ppp 4 ,
+.Xr ng_pppoe 4 ,
+.Xr ng_pptpgre 4 ,
+.Xr ng_rfc1490 4 ,
+.Xr ng_socket 4 ,
+.Xr ng_split 4 ,
+.Xr ng_sppp 4 ,
+.Xr ng_sscfu 4 ,
+.Xr ng_sscop 4 ,
+.Xr ng_tee 4 ,
+.Xr ng_tty 4 ,
+.Xr ng_ubt 4 ,
+.Xr ng_UI 4 ,
+.Xr ng_uni 4 ,
+.Xr ng_vjc 4 ,
+.Xr ng_vlan 4 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh HISTORY
+The
+.Nm
+system was designed and first implemented at Whistle Communications, Inc.\&
+in a version of
+.Fx 2.2
+customized for the Whistle InterJet.
+It first made its debut in the main tree in
+.Fx 3.4 .
+.Sh AUTHORS
+.An -nosplit
+.An Julian Elischer Aq julian@FreeBSD.org ,
+with contributions by
+.An Archie Cobbs Aq archie@FreeBSD.org .
diff --git a/share/man/man4/netintro.4 b/share/man/man4/netintro.4
new file mode 100644
index 0000000..f5d479b
--- /dev/null
+++ b/share/man/man4/netintro.4
@@ -0,0 +1,418 @@
+.\" Copyright (c) 1983, 1990, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)netintro.4 8.2 (Berkeley) 11/30/93
+.\" $FreeBSD$
+.\"
+.Dd June 18, 2004
+.Dt NETINTRO 4
+.Os
+.Sh NAME
+.Nm networking
+.Nd introduction to networking facilities
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/time.h
+.In sys/socket.h
+.In net/if.h
+.In net/route.h
+.Sh DESCRIPTION
+This section is a general introduction to the networking facilities
+available in the system.
+Documentation in this part of section
+4 is broken up into three areas:
+.Em protocol families
+(domains),
+.Em protocols ,
+and
+.Em network interfaces .
+.Pp
+All network protocols are associated with a specific
+.Em protocol family .
+A protocol family provides basic services to the protocol
+implementation to allow it to function within a specific
+network environment.
+These services may include
+packet fragmentation and reassembly, routing, addressing, and
+basic transport.
+A protocol family may support multiple
+methods of addressing, though the current protocol implementations
+do not.
+A protocol family is normally comprised of a number of protocols, one per
+.Xr socket 2
+type.
+It is not required that a protocol family support all socket types.
+A protocol family may contain multiple
+protocols supporting the same socket abstraction.
+.Pp
+A protocol supports one of the socket abstractions detailed in
+.Xr socket 2 .
+A specific protocol may be accessed either by creating a
+socket of the appropriate type and protocol family, or
+by requesting the protocol explicitly when creating a socket.
+Protocols normally accept only one type of address format,
+usually determined by the addressing structure inherent in
+the design of the protocol family/network architecture.
+Certain semantics of the basic socket abstractions are
+protocol specific.
+All protocols are expected to support
+the basic model for their particular socket type, but may,
+in addition, provide non-standard facilities or extensions
+to a mechanism.
+For example, a protocol supporting the
+.Dv SOCK_STREAM
+abstraction may allow more than one byte of out-of-band
+data to be transmitted per out-of-band message.
+.Pp
+A network interface is similar to a device interface.
+Network interfaces comprise the lowest layer of the
+networking subsystem, interacting with the actual transport
+hardware.
+An interface may support one or more protocol families and/or address formats.
+The SYNOPSIS section of each network interface
+entry gives a sample specification
+of the related drivers for use in providing
+a system description to the
+.Xr config 8
+program.
+The DIAGNOSTICS section lists messages which may appear on the console
+and/or in the system error log,
+.Pa /var/log/messages
+(see
+.Xr syslogd 8 ) ,
+due to errors in device operation.
+.Sh PROTOCOLS
+The system currently supports the
+Internet
+protocols, the Xerox Network Systems(tm) protocols,
+and some of the
+.Tn ISO OSI
+protocols.
+Raw socket interfaces are provided to the
+.Tn IP
+protocol
+layer of the
+Internet, and to the
+.Tn IDP
+protocol of Xerox
+.Tn NS .
+Consult the appropriate manual pages in this section for more
+information regarding the support for each protocol family.
+.Sh ADDRESSING
+Associated with each protocol family is an address
+format.
+All network addresses adhere to a general structure,
+called a sockaddr, described below.
+However, each protocol
+imposes finer and more specific structure, generally renaming
+the variant, which is discussed in the protocol family manual
+page alluded to above.
+.Bd -literal -offset indent
+struct sockaddr {
+ u_char sa_len;
+ u_char sa_family;
+ char sa_data[14];
+};
+.Ed
+.Pp
+The field
+.Va sa_len
+contains the total length of the structure,
+which may exceed 16 bytes.
+The following address values for
+.Va sa_family
+are known to the system
+(and additional formats are defined for possible future implementation):
+.Bd -literal
+#define AF_UNIX 1 /* local to host (pipes, portals) */
+#define AF_INET 2 /* internetwork: UDP, TCP, etc. */
+#define AF_NS 6 /* Xerox NS protocols */
+#define AF_CCITT 10 /* CCITT protocols, X.25 etc */
+#define AF_HYLINK 15 /* NSC Hyperchannel */
+#define AF_ISO 18 /* ISO protocols */
+.Ed
+.Sh ROUTING
+.Fx
+provides some packet routing facilities.
+The kernel maintains a routing information database, which
+is used in selecting the appropriate network interface when
+transmitting packets.
+.Pp
+A user process (or possibly multiple co-operating processes)
+maintains this database by sending messages over a special kind
+of socket.
+This supplants fixed size
+.Xr ioctl 2
+used in earlier releases.
+.Pp
+This facility is described in
+.Xr route 4 .
+.Sh INTERFACES
+Each network interface in a system corresponds to a
+path through which messages may be sent and received.
+A network interface usually has a hardware device associated with it, though
+certain interfaces such as the loopback interface,
+.Xr lo 4 ,
+do not.
+.Pp
+The following
+.Xr ioctl 2
+calls may be used to manipulate network interfaces.
+The
+.Fn ioctl
+is made on a socket (typically of type
+.Dv SOCK_DGRAM )
+in the desired domain.
+Most of the requests supported in earlier releases
+take an
+.Vt ifreq
+structure as its parameter.
+This structure has the form
+.Bd -literal
+struct ifreq {
+#define IFNAMSIZ 16
+ char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ union {
+ struct sockaddr ifru_addr;
+ struct sockaddr ifru_dstaddr;
+ struct sockaddr ifru_broadaddr;
+ short ifru_flags[2];
+ short ifru_index;
+ int ifru_metric;
+ int ifru_mtu;
+ int ifru_phys;
+ int ifru_media;
+ caddr_t ifru_data;
+ int ifru_cap[2];
+ } ifr_ifru;
+#define ifr_addr ifr_ifru.ifru_addr /* address */
+#define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */
+#define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */
+#define ifr_flags ifr_ifru.ifru_flags[0] /* flags (low 16 bits) */
+#define ifr_flagshigh ifr_ifru.ifru_flags[1] /* flags (high 16 bits) */
+#define ifr_metric ifr_ifru.ifru_metric /* metric */
+#define ifr_mtu ifr_ifru.ifru_mtu /* mtu */
+#define ifr_phys ifr_ifru.ifru_phys /* physical wire */
+#define ifr_media ifr_ifru.ifru_media /* physical media */
+#define ifr_data ifr_ifru.ifru_data /* for use by interface */
+#define ifr_reqcap ifr_ifru.ifru_cap[0] /* requested capabilities */
+#define ifr_curcap ifr_ifru.ifru_cap[1] /* current capabilities */
+#define ifr_index ifr_ifru.ifru_index /* interface index */
+};
+.Ed
+.Pp
+Calls which are now deprecated are:
+.Bl -tag -width SIOCGIFBRDADDR
+.It Dv SIOCSIFADDR
+Set interface address for protocol family.
+Following the address assignment, the
+.Dq initialization
+routine for the interface is called.
+.It Dv SIOCSIFDSTADDR
+Set point to point address for protocol family and interface.
+.It Dv SIOCSIFBRDADDR
+Set broadcast address for protocol family and interface.
+.El
+.Pp
+.Fn Ioctl
+requests to obtain addresses and requests both to set and
+retrieve other data are still fully supported
+and use the
+.Vt ifreq
+structure:
+.Bl -tag -width SIOCGIFBRDADDR
+.It Dv SIOCGIFADDR
+Get interface address for protocol family.
+.It Dv SIOCGIFDSTADDR
+Get point to point address for protocol family and interface.
+.It Dv SIOCGIFBRDADDR
+Get broadcast address for protocol family and interface.
+.It Dv SIOCSIFCAP
+Attempt to set the enabled capabilities field for the interface
+to the value of the
+.Va ifr_reqcap
+field of the
+.Vt ifreq
+structure.
+Note that, depending on the particular interface features,
+some capabilities may appear hard-coded to enabled, or toggling
+a capability may affect the status of other ones.
+The supported capabilities field is read-only, and the
+.Va ifr_curcap
+field is unused by this call.
+.It Dv SIOCGIFCAP
+Get the interface capabilities fields.
+The values for supported and enabled capabilities will be returned in the
+.Va ifr_reqcap
+and
+.Va ifr_curcap
+fields of the
+.Vt ifreq
+structure, respectively.
+.It Dv SIOCSIFFLAGS
+Set interface flags field.
+If the interface is marked down,
+any processes currently routing packets through the interface
+are notified;
+some interfaces may be reset so that incoming packets are no longer received.
+When marked up again, the interface is reinitialized.
+.It Dv SIOCGIFFLAGS
+Get interface flags.
+.It Dv SIOCSIFMETRIC
+Set interface routing metric.
+The metric is used only by user-level routers.
+.It Dv SIOCGIFMETRIC
+Get interface metric.
+.It Dv SIOCIFCREATE
+Attempt to create the specified interface.
+If the interface name is given without a unit number the system
+will attempt to create a new interface with an arbitrary unit number.
+On successful return the
+.Va ifr_name
+field will contain the new interface name.
+.It Dv SIOCIFDESTROY
+Attempt to destroy the specified interface.
+.El
+.Pp
+There are two requests that make use of a new structure:
+.Bl -tag -width SIOCGIFBRDADDR
+.It Dv SIOCAIFADDR
+An interface may have more than one address associated with it
+in some protocols.
+This request provides a means to
+add additional addresses (or modify characteristics of the
+primary address if the default address for the address family
+is specified).
+Rather than making separate calls to
+set destination or broadcast addresses, or network masks
+(now an integral feature of multiple protocols)
+a separate structure is used to specify all three facets simultaneously
+(see below).
+One would use a slightly tailored version of this struct specific
+to each family (replacing each sockaddr by one
+of the family-specific type).
+Where the sockaddr itself is larger than the
+default size, one needs to modify the
+.Fn ioctl
+identifier itself to include the total size, as described in
+.Fn ioctl .
+.It Dv SIOCDIFADDR
+This requests deletes the specified address from the list
+associated with an interface.
+It also uses the
+.Vt ifaliasreq
+structure to allow for the possibility of protocols allowing
+multiple masks or destination addresses, and also adopts the
+convention that specification of the default address means
+to delete the first address for the interface belonging to
+the address family in which the original socket was opened.
+.It Dv SIOCGIFCONF
+Get interface configuration list.
+This request takes an
+.Vt ifconf
+structure (see below) as a value-result parameter.
+The
+.Va ifc_len
+field should be initially set to the size of the buffer
+pointed to by
+.Va ifc_buf .
+On return it will contain the length, in bytes, of the
+configuration list.
+.It Dv SIOCIFGCLONERS
+Get list of clonable interfaces.
+This request takes an
+.Vt if_clonereq
+structure (see below) as a value-result parameter.
+The
+.Va ifcr_count
+field should be set to the number of
+.Dv IFNAMSIZ
+sized strings that can be fit in the buffer pointed to by
+.Va ifcr_buffer .
+On return,
+.Va ifcr_total
+will be set to the number of clonable interfaces and the buffer pointed
+to by
+.Va ifcr_buffer
+will be filled with the names of clonable interfaces aligned on
+.Dv IFNAMSIZ
+boundaries.
+.El
+.Bd -literal
+/*
+* Structure used in SIOCAIFCONF request.
+*/
+struct ifaliasreq {
+ char ifra_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ struct sockaddr ifra_addr;
+ struct sockaddr ifra_broadaddr;
+ struct sockaddr ifra_mask;
+};
+.Ed
+.Pp
+.Bd -literal
+/*
+* Structure used in SIOCGIFCONF request.
+* Used to retrieve interface configuration
+* for machine (useful for programs which
+* must know all networks accessible).
+*/
+struct ifconf {
+ int ifc_len; /* size of associated buffer */
+ union {
+ caddr_t ifcu_buf;
+ struct ifreq *ifcu_req;
+ } ifc_ifcu;
+#define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */
+#define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */
+};
+.Ed
+.Pp
+.Bd -literal
+/* Structure used in SIOCIFGCLONERS request. */
+struct if_clonereq {
+ int ifcr_total; /* total cloners (out) */
+ int ifcr_count; /* room for this many in user buffer */
+ char *ifcr_buffer; /* buffer for cloner names */
+};
+.Ed
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr socket 2 ,
+.Xr intro 4 ,
+.Xr config 8 ,
+.Xr routed 8 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm netintro
+manual appeared in
+.Bx 4.3 tahoe .
diff --git a/share/man/man4/nfe.4 b/share/man/man4/nfe.4
new file mode 100644
index 0000000..1d0a512
--- /dev/null
+++ b/share/man/man4/nfe.4
@@ -0,0 +1,202 @@
+.\" $OpenBSD: nfe.4,v 1.7 2006/02/28 08:13:47 jsg Exp $
+.\"
+.\" Copyright (c) 2006 Jonathan Gray <jsg@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 2, 2008
+.Dt NFE 4
+.Os
+.Sh NAME
+.Nm nfe
+.Nd "NVIDIA nForce MCP Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device nfe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_nfe_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports PCI Ethernet adapters based on the NVIDIA
+nForce Media and Communications Processors (MCP), such as
+the nForce, nForce 2, nForce 3, CK804, MCP04, MCP51, MCP55,
+MCP61, MCP65, MCP67, MCP73, MCP77 and MCP79 Ethernet
+controller chips.
+.Pp
+Supported features include (hardware support provided):
+.Pp
+.Bl -bullet -compact
+.It
+Receive/Transmit IP/TCP/UDP checksum offload
+.It
+Hardware VLAN tag insertion/stripping
+.It
+TCP segmentation offload (TSO)
+.It
+MSI/MSI-X
+.It
+Jumbo Frames
+.El
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit Jumbo Frames.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width "10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.It Cm 1000baseT
+Set 1000Mbps (Gigabit Ethernet) operation (recent models only).
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm half-duplex
+Force half duplex operation.
+.It Cm full-duplex
+Force full duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following NVIDIA MCP onboard adapters:
+.Pp
+.Bl -bullet -compact
+.It
+NVIDIA nForce MCP Networking Adapter
+.It
+NVIDIA nForce MCP04 Networking Adapter
+.It
+NVIDIA nForce 430 MCP12 Networking Adapter
+.It
+NVIDIA nForce 430 MCP13 Networking Adapter
+.It
+NVIDIA nForce MCP51 Networking Adapter
+.It
+NVIDIA nForce MCP55 Networking Adapter
+.It
+NVIDIA nForce MCP61 Networking Adapter
+.It
+NVIDIA nForce MCP65 Networking Adapter
+.It
+NVIDIA nForce MCP67 Networking Adapter
+.It
+NVIDIA nForce MCP73 Networking Adapter
+.It
+NVIDIA nForce MCP77 Networking Adapter
+.It
+NVIDIA nForce MCP79 Networking Adapter
+.It
+NVIDIA nForce2 MCP2 Networking Adapter
+.It
+NVIDIA nForce2 400 MCP4 Networking Adapter
+.It
+NVIDIA nForce2 400 MCP5 Networking Adapter
+.It
+NVIDIA nForce3 MCP3 Networking Adapter
+.It
+NVIDIA nForce3 250 MCP6 Networking Adapter
+.It
+NVIDIA nForce3 MCP7 Networking Adapter
+.It
+NVIDIA nForce4 CK804 MCP8 Networking Adapter
+.It
+NVIDIA nForce4 CK804 MCP9 Networking Adapter
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width indent
+.It Va hw.nfe.msi_disable
+Whether or not MSI support is enabled in the driver.
+The default value is 0.
+.It Va hw.nfe.msix_disable
+Whether or not MSI-X support is enabled in the driver.
+The default value is 0.
+.El
+.Sh SYSCTL VARIABLES
+The following
+.Xr sysctl 8
+variables can be used to modify or monitor
+.Nm
+behavior.
+.Bl -tag -width indent
+.It Va dev.nfe.%d.process_limit
+Maximum number of Rx events to be processed in the event loop
+before rescheduling a taskqueue.
+The accepted range is 50 to 255, the default value is 192.
+The interface does not need to be brought down and up again
+before a change takes effect.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr intro 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr pci 4 ,
+.Xr polling 4 ,
+.Xr sysctl 8 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Ox 3.9 ,
+and then in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Jonathan Gray
+.Aq jsg@openbsd.org
+and
+.An Damien Bergamini
+.Aq damien@openbsd.org .
+The
+.Nm
+driver was ported to
+.Fx
+by
+.An Shigeaki Tagashira
+.Aq shigeaki@se.hiroshima-u.ac.jp .
diff --git a/share/man/man4/nfsmb.4 b/share/man/man4/nfsmb.4
new file mode 100644
index 0000000..d6f39ce
--- /dev/null
+++ b/share/man/man4/nfsmb.4
@@ -0,0 +1,54 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" 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$
+.\"
+.Dd December 31, 2005
+.Dt NFSMB 4
+.Os
+.Sh NAME
+.Nm nfsmb
+.Nd "NVIDIA nForce2/3/4 SMBus 2.0 controller driver"
+.Sh SYNOPSIS
+.Cd "device smbus"
+.Cd "device smb"
+.Cd "device nfsmb"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to NVIDIA nForce2/3/4 SMBus 2.0 controllers.
+.Sh SEE ALSO
+.Xr smb 4 ,
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Ruslan Ermilov Aq ru@FreeBSD.org .
diff --git a/share/man/man4/ng_UI.4 b/share/man/man4/ng_UI.4
new file mode 100644
index 0000000..0f48d4b
--- /dev/null
+++ b/share/man/man4/ng_UI.4
@@ -0,0 +1,94 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_UI.8,v 1.4 1999/01/25 02:37:56 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_UI 4
+.Os
+.Sh NAME
+.Nm ng_UI
+.Nd UI netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_UI.h
+.Sh DESCRIPTION
+The
+.Nm UI
+node type has two hooks,
+.Dv upstream
+and
+.Dv downstream .
+Packets received on
+.Dv downstream
+must have 0x03 (indicating unnumbered information) as their first byte;
+if not the packet is dropped.
+This byte is then stripped and the
+remainder of the packet sent out on
+.Dv upstream .
+.Pp
+Conversely, packets received on
+.Dv upstream
+will have a 0x03 byte prepended to them before being forwarded out on the
+.Dv downstream
+hook.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobar
+.It Dv downstream
+Downstream connection.
+Packets on this side of the node have a 0x03 as
+their first byte.
+.It Dv upstream
+Upstream connection.
+Packets on this side of the node have the
+initial 0x03 byte stripped off.
+.El
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when both hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_async.4 b/share/man/man4/ng_async.4
new file mode 100644
index 0000000..4f7a2e1
--- /dev/null
+++ b/share/man/man4/ng_async.4
@@ -0,0 +1,174 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_async.8,v 1.6 1999/01/25 23:46:25 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_ASYNC 4
+.Os
+.Sh NAME
+.Nm ng_async
+.Nd asynchronous framing netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_async.h
+.Sh DESCRIPTION
+The
+.Nm async
+node type performs conversion between synchronous frames and
+asynchronous frames, as defined for the PPP protocol in RFC 1662.
+Asynchronous framing uses flag bytes and octet-stuffing
+to simulate a frame oriented connection over an octet-oriented
+asynchronous serial line.
+.Pp
+The node transmits and receives asynchronous data on the
+.Dv async
+hook.
+Mbuf boundaries of incoming data are ignored.
+Once a complete packet has been received, it is decoded and
+stripped of all framing bytes, and transmitted out the
+.Dv sync
+hook as a single frame.
+.Pp
+Synchronous frames are transmitted and received on the
+.Dv sync
+hook.
+Packets received on this hook are encoded as asynchronous frames
+and sent out on
+.Dv async .
+Received packets should start with the address and control fields,
+or the PPP protocol field if address and control field compression
+is employed, and contain no checksum field.
+If the first four bytes are
+.Dv "0xff 0x03 0xc0 0x21"
+(an LCP protocol frame) then complete control character escaping
+is enabled for that frame (in PPP, LCP packets are always sent with
+no address and control field compression and all control characters
+escaped).
+.Pp
+This node supports
+.Dq flag sharing
+for packets transmitted on
+.Dv async .
+This is an optimization where the trailing flag byte
+of one frame is shared with the opening flag byte of the next.
+Flag sharing between frames is disabled after one second of transmit
+idle time.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobar
+.It Dv async
+Asynchronous connection.
+Typically this hook would be connected to a
+.Xr ng_tty 4
+node, which handles transmission of serial data over a tty device.
+.It Dv sync
+Synchronous connection.
+This hook sends and receives synchronous frames.
+For PPP, these frames should contain address, control, and protocol fields,
+but no checksum field.
+Typically this hook would be connected to an individual link hook of a
+.Xr ng_ppp 4
+type node.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_ASYNC_CMD_GET_STATS
+This command returns a
+.Dv "struct ng_async_stat"
+containing node statistics for packet, octet, and error counts.
+.It Dv NGM_ASYNC_CMD_CLR_STATS
+Clears the node statistics.
+.It Dv NGM_ASYNC_CMD_SET_CONFIG
+Sets the node configuration, which is described by a
+.Dv "struct ng_async_cfg" :
+.Bd -literal -offset 4n
+struct ng_async_cfg {
+ u_char enabled; /* Turn encoding on/off */
+ u_int16_t amru; /* Max receive async frame len */
+ u_int16_t smru; /* Max receive sync frame len */
+ u_int32_t accm; /* ACCM encoding */
+};
+.Ed
+.Pp
+The
+.Dv enabled
+field enables or disables all encoding/decoding functions (default disabled).
+When disabled, the node operates in simple
+.Dq pass through
+mode.
+The
+.Dv amru
+and
+.Dv smru
+fields are the asynchronous and synchronous MRU (maximum receive unit) values,
+respectively.
+These both default to 1600; note that the async MRU
+applies to the incoming frame length after asynchronous decoding.
+The
+.Dv accm
+field is the asynchronous character control map, which controls the escaping
+of characters 0x00 thorough 0x1f (default 0xffffffff).
+.It Dv NGM_ASYNC_CMD_GET_CONFIG
+This command returns the current configuration structure.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ppp 4 ,
+.Xr ng_tty 4 ,
+.Xr ngctl 8
+.Rs
+.%A W. Simpson
+.%T "PPP in HDLC-link Framing"
+.%O RFC 1662
+.Re
+.Rs
+.%A W. Simpson
+.%T "The Point-to-Point Protocol (PPP)"
+.%O RFC 1661
+.Re
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
diff --git a/share/man/man4/ng_atm.4 b/share/man/man4/ng_atm.4
new file mode 100644
index 0000000..df4c2e3
--- /dev/null
+++ b/share/man/man4/ng_atm.4
@@ -0,0 +1,416 @@
+.\"
+.\" Copyright (c) 2001-2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.\" ng_atm(4) man page
+.\"
+.Dd June 24, 2003
+.Dt NG_ATM 4
+.Os
+.Sh NAME
+.Nm ng_atm
+.Nd netgraph ATM node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In net/if_atm.h
+.In netgraph.h
+.In netgraph/atm/ng_atm.h
+.Sh DESCRIPTION
+The
+.Nm atm
+netgraph node type allows
+.Xr natm 4
+ATM drivers to be connected to the
+.Xr netgraph 4
+networking subsystem.
+When the
+.Nm
+module is loaded a node is automatically created for each
+.Xr natm 4
+ATM interface.
+The nodes are named with the same name as the
+interface.
+Nodes are also created if a driver for an ATM
+card is loaded after
+.Nm
+was loaded.
+.Pp
+The
+.Nm atm
+nodes are persistent.
+They are removed when the interface is removed.
+.Dv NGM_SHUTDOWN
+messages are ignored by the node.
+.Sh HOOKS
+Four special hooks with fixed names and an unlimited number of hooks with user
+defined names are supported.
+Three of the fixed hooks are attached to
+strategic points in the information flow in the
+.Xr natm 4
+system and support only reading.
+The fourth fixed hook behaves like the other
+user hooks, but a number of management messages are sent along the hook.
+The other hooks can be attached to VCIs dynamically by means of
+control messages to the
+.Nm atm
+node and can be written and read.
+.Pp
+The four fixed hooks are:
+.Bl -tag -width ".Va orphans"
+.It Va input
+This is a connection to the raw input stream from the network.
+If this hook is connected, all incoming packets are delivered out to
+this hook.
+Note that this redirects ALL input.
+Neither
+.Xr natm 4
+nor the user hooks will see any input if
+.Va input
+is connected.
+An
+.Vt atm_pseudohdr
+(see
+.Xr natm 4 )
+is prepended to the actual data.
+.It Va output
+This is a connection to the raw output stream to the network device.
+If this hook is connected, all outgoing packets are handed over to
+the netgraph system and delivered to the hook instead of being delivered
+to the ATM driver.
+An
+.Vt atm_pseudohdr
+(see
+.Xr natm 4 )
+is prepended to the actual data.
+.It Va orphans
+This hook receives all packets that are unrecognized, i.e., do not belong to
+either a
+.Xr natm 4
+socket, a
+.Nm
+VCI or
+.Xr natm 4
+IP.
+Because ATM is connection oriented and packets are received on a given VCI only
+when someone initiates this VCI, packets should never be orphaned.
+There is
+however one exception: if you use
+.Xr natm 4
+IP with LLC/SNAP encapsulation packets with do not have the IP protocol
+indicated in the packet header are delivered out of this hook.
+An
+.Vt atm_pseudohdr
+(see
+.Xr natm 4 )
+is prepended to the actual data send out to the hook.
+.It Va manage
+This hook behaves exactly like a normal user hook (see below) except that
+the node at the other hand will receive management messages.
+.El
+.Pp
+Hooks for dynamically initiated VCIs can have whatever name is allowed by
+.Xr netgraph 4
+as long as the name does not collide with one of the three predefined names.
+.Pp
+To initiate packet sending an receiving on a dynamic hook one has to issue
+a
+.Dv NGM_ATM_CPCS_INIT
+control message.
+To terminate sending and receiving one must send a
+.Dv NGM_ATM_CPCS_TERM
+message (see
+.Sx CONTROL MESSAGES ) .
+The data sent and received on these hooks has no additional
+headers.
+.Sh CONTROL MESSAGES
+This node type supports the generic messages plus the following:
+.Bl -tag -width 4n
+.It Dv NGM_ATM_GET_IFNAME
+Return the name of the interface as a
+.Dv NUL Ns
+-terminated string.
+This is normally the same name as that of the node.
+.It Dv NGM_ATM_GET_CONFIG
+Returns a structure defining the configuration of the interface:
+.Bd -literal
+struct ng_atm_config {
+ uint32_t pcr; /* peak cell rate */
+ uint32_t maxvpi; /* maximum vpi */
+ uint32_t maxvci; /* maximum vci */
+ uint32_t max_vpcs; /* maximum number of VPCs */
+ uint32_t max_vccs; /* maximum number of VCCs */
+};
+.Ed
+.It Dv NGM_ATM_GET_VCCS
+Returns the table of open VCCs from the driver.
+This table consists of
+a header and a variable sized array of entries, one for each open VCC:
+.Bd -literal
+struct atmio_vcctable {
+ uint32_t count; /* number of vccs */
+ struct atmio_vcc vccs[0]; /* array of VCCs */
+};
+struct atmio_vcc {
+ uint16_t flags; /* flags */
+ uint16_t vpi; /* VPI */
+ uint16_t vci; /* VCI */
+ uint16_t rmtu; /* Receive maximum CPCS size */
+ uint16_t tmtu; /* Transmit maximum CPCS size */
+ uint8_t aal; /* aal type */
+ uint8_t traffic; /* traffic type */
+ struct atmio_tparam tparam; /* traffic parameters */
+};
+struct atmio_tparam {
+ uint32_t pcr; /* 24bit: Peak Cell Rate */
+ uint32_t scr; /* 24bit: VBR Sustainable Cell Rate */
+ uint32_t mbs; /* 24bit: VBR Maximum burst size */
+ uint32_t mcr; /* 24bit: MCR */
+ uint32_t icr; /* 24bit: ABR ICR */
+ uint32_t tbe; /* 24bit: ABR TBE (1...2^24-1) */
+ uint8_t nrm; /* 3bit: ABR Nrm */
+ uint8_t trm; /* 3bit: ABR Trm */
+ uint16_t adtf; /* 10bit: ABR ADTF */
+ uint8_t rif; /* 4bit: ABR RIF */
+ uint8_t rdf; /* 4bit: ABR RDF */
+ uint8_t cdf; /* 3bit: ABR CDF */
+};
+.Ed
+.Pp
+Note that this is the driver's table, so all VCCs opened via
+.Xr natm 4
+sockets and IP are also shown.
+They can, however, be distinguished by
+their flags.
+The
+.Va flags
+field contains the following flags:
+.Pp
+.Bl -tag -width ".Dv ATM_PH_LLCSNAP" -offset indent -compact
+.It Dv ATM_PH_AAL5
+use AAL5 instead of AAL0
+.It Dv ATM_PH_LLCSNAP
+if AAL5 use LLC SNAP encapsulation
+.It Dv ATM_FLAG_NG
+this is a netgraph VCC
+.It Dv ATM_FLAG_HARP
+this is a HARP VCC
+.It Dv ATM_FLAG_NORX
+transmit only VCC
+.It Dv ATM_FLAG_NOTX
+receive only VCC
+.It Dv ATMIO_FLAG_PVC
+treat channel as a PVC
+.El
+.Pp
+If the
+.Dv ATM_FLAG_NG
+flag is set, then
+.Va traffic
+and
+.Va tparam
+contain meaningful information.
+.Pp
+The
+.Va aal
+field
+contains one of the following values:
+.Pp
+.Bl -tag -width ".Dv ATM_PH_LLCSNAP" -offset indent -compact
+.It Dv ATMIO_AAL_0
+AAL 0 (raw cells)
+.It Dv ATMIO_AAL_34
+AAL 3 or AAL 4
+.It Dv ATMIO_AAL_5
+AAL 5
+.It Dv ATMIO_AAL_RAW
+device specific raw cells
+.El
+.Pp
+The
+.Va traffic
+field
+can have one of the following values (not all drivers support
+all traffic types however):
+.Pp
+.Bl -tag -width ".Dv ATM_PH_LLCSNAP" -offset indent -compact
+.It Dv ATMIO_TRAFFIC_UBR
+.It Dv ATMIO_TRAFFIC_CBR
+.It Dv ATMIO_TRAFFIC_ABR
+.It Dv ATMIO_TRAFFIC_VBR
+.El
+.It Dv NGM_ATM_CPCS_INIT
+Initialize a VCC for sending and receiving.
+The argument is a structure:
+.Bd -literal
+struct ng_atm_cpcs_init {
+ char name[NG_HOOKSIZ];
+ uint32_t flags; /* flags. (if_natmio.h) */
+ uint16_t vci; /* VCI to open */
+ uint16_t vpi; /* VPI to open */
+ uint16_t rmtu; /* receive maximum PDU */
+ uint16_t tmtu; /* transmit maximum PDU */
+ uint8_t aal; /* AAL type (if_natmio.h) */
+ uint8_t traffic; /* traffic type (if_natmio.h) */
+ uint32_t pcr; /* Peak cell rate */
+ uint32_t scr; /* Sustainable cell rate */
+ uint32_t mbs; /* Maximum burst size */
+ uint32_t mcr; /* Minimum cell rate */
+ uint32_t icr; /* ABR: Initial cell rate */
+ uint32_t tbe; /* ABR: Transmit buffer exposure */
+ uint8_t nrm; /* ABR: Nrm */
+ uint8_t trm; /* ABR: Trm */
+ uint16_t adtf; /* ABR: ADTF */
+ uint8_t rif; /* ABR: RIF */
+ uint8_t rdf; /* ABR: RDF */
+ uint8_t cdf; /* ABR: CDF */
+};
+.Ed
+.Pp
+The
+.Va name
+field
+is the name of the hook for which sending and receiving should be enabled.
+This hook must already be connected.
+The
+.Va vpi
+and
+.Va vci
+fields
+are the respective VPI and VCI values to use for the ATM cells.
+They must be
+within the range, given by the
+.Va maxvpi
+and
+.Va maxvci
+fields of the
+.Vt ng_atm_config
+structure.
+The
+.Va flags
+field
+contains the flags (see above) and the other fields describe the
+type of traffic.
+.It Dv NGM_ATM_CPCS_TERM
+Stop sending and receiving on the indicated hook.
+The argument is a
+.Bd -literal
+struct ng_atm_cpcs_term {
+ char name[NG_HOOKSIZ];
+};
+.Ed
+.El
+.Sh MANAGEMENT MESSAGES
+If the
+.Va manage
+hook is connected, certain messages are sent along the hook.
+They are
+received by the peer node with a cookie of
+.Dv NG_ATM_COOKIE .
+.Bl -tag -width 4n
+.It Dv NGM_ATM_CARRIER_CHANGE
+The carrier state of the ATM physical interface has changed.
+The message has the following structure:
+.Bd -literal
+struct ng_atm_carrier_change {
+ uint32_t node;
+ uint32_t state;
+};
+.Ed
+.Pp
+The
+.Va node
+field
+is the node ID of the ATM node.
+This can be used by the managing entity
+(for example
+.Xr ilmid 8 )
+to manage several interfaces at the same time through the same node.
+The
+.Va state
+field is 1 if the carrier was detected, and 0 if it was lost.
+.It Dv NGM_ATM_VCC_CHANGE
+A permanent VCC has been added, deleted or changed.
+This is used by
+.Xr ilmid 8
+to generate the appropriate ILMI traps.
+The structure of the message is:
+.Bd -literal
+struct ng_atm_vcc_change {
+ uint32_t node;
+ uint16_t vci;
+ uint8_t vpi;
+ uint8_t state;
+};
+.Ed
+Where
+.Va state
+is 0 if the PVC was deleted, and 1 if it was added or modified.
+.El
+.Sh FLOW CONTROL
+If the hardware driver supports it, the node can emit flow control messages
+along a user hook.
+The format of these messages is described in
+.In netgraph/ng_message.h .
+The
+.Nm atm
+node may generate
+.Dv NGM_HIGH_WATER_PASSED
+and
+.Dv NGM_LOW_WATER_PASSED
+messages.
+The first one indicates that the hardware driver has stopped output
+on the channel and drops new packets, the second one reports that
+output was reenabled.
+Currently, the structures are not filled with
+information.
+.Sh SHUTDOWN
+The nodes are persistent as long as the corresponding interface exists.
+Upon receipt of a
+.Dv NGM_SHUTDOWN
+messages, all hooks are disconnected and the node is reinitialized.
+All
+VCCs opened via
+.Xr netgraph 4
+are closed.
+When the ATM interface is unloaded,
+the node disappears.
+If the node is compiled with
+.Dv NGATM_DEBUG
+there is a sysctl
+.Va net.graph.atm.allow_shutdown
+which, when set to a non-zero value, allows the nodes to shut down.
+Note that this is intended for development only and may lead to kernel
+panics if set.
+.Sh SEE ALSO
+.Xr natm 4 ,
+.Xr netgraph 4 ,
+.Xr ng_ether 4 ,
+.Xr ngctl 8
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/ng_atmllc.4 b/share/man/man4/ng_atmllc.4
new file mode 100644
index 0000000..81768b5
--- /dev/null
+++ b/share/man/man4/ng_atmllc.4
@@ -0,0 +1,96 @@
+.\" Copyright (c) 2004 Benno Rice <benno@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$
+.\"
+.Dd March 8, 2004
+.Dt NG_ATMLLC 4
+.Os
+.Sh NAME
+.Nm ng_atmllc
+.Nd ATM LLC netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_atmllc.h
+.Sh DESCRIPTION
+The
+.Nm atmllc
+node type translates frames in to and out of ATM LLC encapsulation,
+as specified by RFC 1483.
+In LLC encapsulation the protocol of a given protocol data unit (PDU) is
+specified by an IEEE 802.2 LLC header, possibly followed by an IEEE 802.1a
+SubNetwork Attachment Point (SNAP) header.
+This node currently handles the Ethernet and FDDI protocols.
+.Pp
+The node transmits and receives ATM PDUs on the
+.Va atm
+hook.
+Received PDUs are decoded and forwarded to the
+.Va ether
+or
+.Va fddi
+hooks as appropriate.
+Data received on the
+.Va ether
+or
+.Va fddi
+hooks are assumed to be full Ethernet or FDDI packets as appropriate and are
+encapsulated into a PDU and transmitted via the
+.Va atm
+hook.
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width indent
+.It Va atm
+ATM connection.
+Typically, this hook would be connected to a
+.Xr ng_atm 4
+node, which handles transmission of ATM PDUs over an ATM device.
+.It Va ether
+Ethernet connection.
+This hook sends and receives Ethernet frames.
+This would normally be connected to an
+.Xr ng_eiface 4
+node if in use.
+.It Va fddi
+FDDI connection.
+This hook sends and receives FDDI frames.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_atm 4 ,
+.Xr ng_eiface 4 ,
+.Xr ngctl 8
+.Rs
+.%A J. Heinanen
+.%T "Multiprotocol Encapsulation over ATM Adaptation Layer 5"
+.%O RFC 1483
+.Re
+.Sh AUTHORS
+.An Benno Rice Aq benno@FreeBSD.org
diff --git a/share/man/man4/ng_bluetooth.4 b/share/man/man4/ng_bluetooth.4
new file mode 100644
index 0000000..2214172
--- /dev/null
+++ b/share/man/man4/ng_bluetooth.4
@@ -0,0 +1,112 @@
+.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ng_bluetooth.4,v 1.3 2003/05/21 19:37:35 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd November 9, 2002
+.Dt NG_BLUETOOTH 4
+.Os
+.Sh NAME
+.Nm ng_bluetooth
+.Nd placeholder for global Bluetooth variables
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/bluetooth/include/ng_bluetooth.h
+.Sh DESCRIPTION
+The
+.Nm
+module is a placeholder for global Bluetooth variables.
+All Bluetooth variables can be examined and changed via
+.Xr sysctl 8 .
+.Ss Bluetooth Variables
+Below is the description of default variables.
+Each Bluetooth module might add its own variables to the tree.
+.Bl -tag -width indent
+.It Va net.bluetooth.version
+A read-only integer variable that shows the current version of the
+Bluetooth stack.
+.It Va net.bluetooth.hci.command_timeout
+A read-write integer variable that controls the Host Controller Interface
+(HCI) command timeout (in seconds), i.e., how long the HCI layer will wait
+for the
+.Dv Command_Complete
+or
+.Dv Command_Status
+event from a Bluetooth device.
+.It Va net.bluetooth.hci.connection_timeout
+A read-write integer variable that controls the HCI connection timeout, i.e.\&
+how long the HCI layer will wait for the
+.Dv Connection_Complete
+event.
+Normally this should not be required as Bluetooth devices have
+connection timeout of their own and will send event back.
+This timeout
+is required to ensure that no connection will stall in case when the HCI
+transport layer is broken.
+Be careful when changing this variable.
+Make sure you understand what you are doing.
+.It Va net.bluetooth.hci.max_neighbor_age
+A read-write integer variable that controls time-to-live (in seconds) for
+entries in the HCI neighbor cache.
+Every time a Bluetooth device performs an
+.Dv Inquiry
+operation, the results will be put in cache.
+Later when a Bluetooth device
+establishes a baseband connection, it will try to find the matching entry in
+the cache and use it.
+This might speed up establishment of the baseband
+connection.
+.It Va net.bluetooth.l2cap.rtx_timeout
+A read-write integer variable that controls the Link Layer Control and
+Adaptation Protocol (L2CAP) Retransmission Timeout (RTX) (in seconds).
+Every time the L2CAP layer submits a control command, the RTX timeout is set.
+The value of the RTX timeout should be greater or equal to the value of
+the HCI connection timeout.
+Be careful when changing this variable.
+Make sure you understand what you are doing.
+.It Va net.bluetooth.l2cap.ertx_timeout
+A read-write integer variable that controls the L2CAP Extended Retransmission
+Timeout (ERTX) (in seconds).
+In some cases remote peer may respond with
+.Dv PENDING
+status to the L2CAP control command.
+In this case the L2CAP command timeout is reset to the ERTX timeout value.
+The value of the ERTX timeout should be
+greater or equal to the value of the RTX timeout.
+Be careful when changing this variable.
+Make sure you understand what you are doing.
+.El
+.Sh SEE ALSO
+.Xr ng_btsocket 4 ,
+.Xr ng_hci 4 ,
+.Xr ng_l2cap 4 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+module was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
diff --git a/share/man/man4/ng_bpf.4 b/share/man/man4/ng_bpf.4
new file mode 100644
index 0000000..9e6f3d5
--- /dev/null
+++ b/share/man/man4/ng_bpf.4
@@ -0,0 +1,198 @@
+.\" Copyright (c) 1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_bpf.8,v 1.2 1999/12/03 01:57:12 archie Exp $
+.\"
+.Dd May 30, 2007
+.Dt NG_BPF 4
+.Os
+.Sh NAME
+.Nm ng_bpf
+.Nd Berkeley packet filter netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In net/bpf.h
+.In netgraph.h
+.In netgraph/ng_bpf.h
+.Sh DESCRIPTION
+The
+.Nm bpf
+node type allows Berkeley Packet Filter (see
+.Xr bpf 4 )
+filters to be applied to data travelling through a Netgraph network.
+Each node allows an arbitrary number of connections to arbitrarily
+named hooks.
+With each hook is associated a
+.Xr bpf 4
+filter program which is applied to incoming data only, a destination hook
+for matching packets, a destination hook for non-matching packets,
+and various statistics counters.
+.Pp
+A
+.Xr bpf 4
+program returns an unsigned integer, which is normally interpreted as
+the length of the prefix of the packet to return.
+In the context of this
+node type, returning zero is considered a non-match, in which case the
+entire packet is delivered out the non-match destination hook.
+Returning a value greater than zero causes the packet to be truncated
+to that length and delivered out the match destination hook.
+Either or both destination hooks may be the empty string, or may
+not exist, in which case the packet is dropped.
+.Pp
+New hooks are initially configured to drop all packets.
+A new filter program may be installed using the
+.Dv NGM_BPF_SET_PROGRAM
+control message.
+.Sh HOOKS
+This node type supports any number of hooks having arbitrary names.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_BPF_SET_PROGRAM
+This command sets the filter program that will be applied to incoming
+data on a hook.
+The following structure must be supplied as an argument:
+.Bd -literal -offset 4n
+struct ng_bpf_hookprog {
+ char thisHook[NG_HOOKSIZ]; /* name of hook */
+ char ifMatch[NG_HOOKSIZ]; /* match dest hook */
+ char ifNotMatch[NG_HOOKSIZ]; /* !match dest hook */
+ int32_t bpf_prog_len; /* #isns in program */
+ struct bpf_insn bpf_prog[]; /* bpf program */
+};
+.Ed
+.Pp
+The hook to be updated is specified in
+.Dv thisHook .
+The BPF program is the sequence of instructions in the
+.Dv bpf_prog
+array; there must be
+.Dv bpf_prog_len
+of them.
+Matching and non-matching incoming packets are delivered out the hooks named
+.Dv ifMatch
+and
+.Dv ifNotMatch ,
+respectively.
+The program must be a valid
+.Xr bpf 4
+program or else
+.Er EINVAL
+is returned.
+.It Dv NGM_BPF_GET_PROGRAM
+This command takes an
+.Tn ASCII
+string argument, the hook name, and returns the
+corresponding
+.Dv "struct ng_bpf_hookprog"
+as shown above.
+.It Dv NGM_BPF_GET_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and returns the
+statistics associated with the hook as a
+.Dv "struct ng_bpf_hookstat" .
+.It Dv NGM_BPF_CLR_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and clears the
+statistics associated with the hook.
+.It Dv NGM_BPF_GETCLR_STATS
+This command is identical to
+.Dv NGM_BPF_GET_STATS ,
+except that the statistics are also atomically cleared.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh EXAMPLES
+It is possible to configure a node from the command line, using
+.Xr tcpdump 1
+to generate raw BPF instructions which are then fed into an
+.Xr awk 1
+script to create the ASCII form of a
+.Dv NGM_BPF_SET_PROGRAM
+control message, as demonstrated here:
+.Bd -literal -offset 4n
+#!/bin/sh
+
+PATTERN="tcp dst port 80"
+NODEPATH="my_node:"
+INHOOK="hook1"
+MATCHHOOK="hook2"
+NOTMATCHHOOK="hook3"
+
+cat > /tmp/bpf.awk << xxENDxx
+{
+ if (!init) {
+ printf "bpf_prog_len=%d bpf_prog=[", \\$1;
+ init=1;
+ } else {
+ printf " { code=%d jt=%d jf=%d k=%d }", \\$1, \\$2, \\$3, \\$4;
+ }
+}
+END {
+ print " ]"
+}
+xxENDxx
+
+BPFPROG=`tcpdump -s 8192 -ddd ${PATTERN} | awk -f /tmp/bpf.awk`
+
+ngctl msg ${NODEPATH} setprogram { thisHook=\\"${INHOOK}\\" \\
+ ifMatch=\\"${MATCHHOOK}\\" \\
+ ifNotMatch=\\"${NOTMATCHHOOK}\\" \\
+ ${BPFPROG} }
+.Ed
+.Sh SEE ALSO
+.Xr bpf 4 ,
+.Xr netgraph 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
+.Sh BUGS
+When built as a loadable kernel module, this module includes the file
+.Pa net/bpf_filter.c .
+Although loading the module should fail if
+.Pa net/bpf_filter.c
+already exists in the kernel, currently it does not, and the duplicate
+copies of the file do not interfere.
+However, this may change in the future.
diff --git a/share/man/man4/ng_bridge.4 b/share/man/man4/ng_bridge.4
new file mode 100644
index 0000000..3b1dd71
--- /dev/null
+++ b/share/man/man4/ng_bridge.4
@@ -0,0 +1,207 @@
+.\" Copyright (c) 2000 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 31, 2000
+.Dt NG_BRIDGE 4
+.Os
+.Sh NAME
+.Nm ng_bridge
+.Nd Ethernet bridging netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_bridge.h
+.Sh DESCRIPTION
+The
+.Nm bridge
+node type performs Ethernet bridging over one or more links.
+Each link (represented by a connected hook) is used to transmit
+and receive raw Ethernet frames.
+As packets are received, the node learns which link each
+host resides on.
+Packets unicast to a known host are directed out the appropriate
+link only, and other links are spared the traffic.
+This behavior is in contrast to a hub, which always forwards
+every received packet to every other link.
+.Sh LOOP DETECTION
+The
+.Nm bridge
+node incorporates a simple loop detection algorithm.
+A loop is when two ports are connected to the same physical medium.
+Loops are important to avoid because of packet storms, which severely
+degrade performance.
+A packet storm results when the same packet is sent and received
+over and over again.
+If a host is detected on link A, and is then detected on link B
+within a certain time period after first being detected on link A,
+then link B is considered to be a looped back link.
+The time period is called the minimum stable time.
+.Pp
+A looped back link will be temporarily muted, i.e., all traffic
+received on that link is ignored.
+.Sh IPFW PROCESSING
+Processing of IP packets via the
+.Xr ipfirewall 4
+mechanism on a per-link basis is not yet implemented.
+.Sh HOOKS
+This node type supports up to
+.Dv NG_BRIDGE_MAX_LINKS
+hooks.
+Each connected hook represents a bridged link.
+The hooks are named
+.Dv link0 ,
+.Dv link1 ,
+etc.
+Typically these hooks are connected to the
+.Dv lower
+hooks of one or more
+.Xr ng_ether 4
+nodes.
+To connect the host machine to a bridged network, simply connect the
+.Dv upper
+hook of an
+.Xr ng_ether 4
+node to the bridge node.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the
+following:
+.Bl -tag -width foo
+.It Dv NGM_BRIDGE_SET_CONFIG
+Set the node configuration.
+This command takes a
+.Dv "struct ng_bridge_config"
+as an argument:
+.Bd -literal -offset 0n
+/* Node configuration structure */
+struct ng_bridge_config {
+ u_char ipfw[NG_BRIDGE_MAX_LINKS]; /* enable ipfw */
+ u_char debugLevel; /* debug level */
+ u_int32_t loopTimeout; /* link loopback mute time */
+ u_int32_t maxStaleness; /* max host age before nuking */
+ u_int32_t minStableAge; /* min time for a stable host */
+};
+.Ed
+.Pp
+The
+.Dv ipfw
+array enables
+.Xr ipfirewall 4
+processing of IP packets received on the corresponding links.
+The
+.Dv debugLevel
+field sets the debug level on the node.
+At level of 2 or greater, detected loops are logged.
+The default level is 1.
+.Pp
+The
+.Dv loopTimeout
+determines how long (in seconds) a looped link is muted.
+The default is 60 seconds.
+The
+.Dv maxStaleness
+parameter determines how long a period of inactivity before
+a host's entry is forgotten.
+The default is 15 minutes.
+The
+.Dv minStableAge
+determines how quickly a host must jump from one link to another
+before we declare a loopback condition.
+The default is one second.
+.Pp
+.It Dv NGM_BRIDGE_GET_CONFIG
+Returns the current configuration as a
+.Dv "struct ng_bridge_config" .
+.It Dv NGM_BRIDGE_RESET
+Causes the node to forget all hosts and unmute all links.
+The node configuration is not changed.
+.It Dv NGM_BRIDGE_GET_STATS
+This command takes a four byte link number as an argument and
+returns a
+.Dv "struct ng_bridge_link_stats"
+containing statistics for the corresponding link, which must be
+currently connected:
+.Bd -literal -offset 0n
+/* Statistics structure (one for each link) */
+struct ng_bridge_link_stats {
+ u_int64_t recvOctets; /* total octets rec'd on link */
+ u_int64_t recvPackets; /* total pkts rec'd on link */
+ u_int64_t recvMulticasts; /* multicast pkts rec'd on link */
+ u_int64_t recvBroadcasts; /* broadcast pkts rec'd on link */
+ u_int64_t recvUnknown; /* pkts rec'd with unknown dest addr */
+ u_int64_t recvRunts; /* pkts rec'd less than 14 bytes */
+ u_int64_t recvInvalid; /* pkts rec'd with bogus source addr */
+ u_int64_t xmitOctets; /* total octets xmit'd on link */
+ u_int64_t xmitPackets; /* total pkts xmit'd on link */
+ u_int64_t xmitMulticasts; /* multicast pkts xmit'd on link */
+ u_int64_t xmitBroadcasts; /* broadcast pkts xmit'd on link */
+ u_int64_t loopDrops; /* pkts dropped due to loopback */
+ u_int64_t loopDetects; /* number of loop detections */
+ u_int64_t memoryFailures; /* times couldn't get mem or mbuf */
+};
+.Ed
+.It Dv NGM_BRIDGE_CLR_STATS
+This command takes a four byte link number as an argument and
+clears the statistics for that link.
+.It Dv NGM_BRIDGE_GETCLR_STATS
+Same as
+.Dv NGM_BRIDGE_GET_STATS ,
+but also atomically clears the statistics as well.
+.It Dv NGM_BRIDGE_GET_TABLE
+Returns the current host mapping table used to direct packets, in a
+.Dv "struct ng_bridge_host_ary" .
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh FILES
+.Bl -tag -width XXXXXXXX -compact
+.It Pa /usr/share/examples/netgraph/ether.bridge
+Example script showing how to set up a bridging network
+.El
+.Sh SEE ALSO
+.Xr if_bridge 4 ,
+.Xr netgraph 4 ,
+.Xr ng_ether 4 ,
+.Xr ng_hub 4 ,
+.Xr ng_one2many 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.2 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
diff --git a/share/man/man4/ng_bt3c.4 b/share/man/man4/ng_bt3c.4
new file mode 100644
index 0000000..157a378
--- /dev/null
+++ b/share/man/man4/ng_bt3c.4
@@ -0,0 +1,129 @@
+.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ng_bt3c.4,v 1.3 2003/09/14 23:28:51 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd December 17, 2004
+.Dt NG_BT3C 4
+.Os
+.Sh NAME
+.Nm ng_bt3c
+.Nd Netgraph node type that is also a 3Com Bluetooth PC card driver
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/bluetooth/include/ng_bt3c.h
+.Sh DESCRIPTION
+The
+.Nm btccc
+node type is both a persistent Netgraph node type and a driver for the
+3Com Bluetooth PC card (3CRWB6096-HP).
+It implements a Bluetooth HCI
+UART transport layer as per chapter H4 of the Bluetooth Specification
+Book v1.1.
+A new node is created when the card is plugged.
+.Pp
+In order to use the card one
+.Em MUST
+download the firmware first.
+Due to copyright issues the firmware cannot be provided with this driver.
+The firmware can be obtained
+from the Windows driver package that can be downloaded from the 3Com web
+site at no charge.
+The firmware name is
+.Pa BT3CPCC.BIN .
+To load the firmware into the card, use
+.Xr bt3cfw 8 .
+I am using the original firmware that came with the card on CD-ROM.
+.Pp
+.Dl "MD5 (BT3CPCC.BIN) = 36170fda56ea9fdbf1702c966f8a97f1"
+.Pp
+The node has a single hook called
+.Dv hook .
+Incoming bytes received on the device are re-assembled into HCI frames
+(according to the length).
+Full HCI frames are sent out on the hook.
+HCI frames received on
+.Dv hook
+are transmitted out.
+No modification to the data is performed in either direction.
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the 3Com/HP 3CRWB6096-A PCCARD bluetooth adapter.
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width indent
+.It Dv hook
+single HCI frame contained in single
+.Vt mbuf
+structure.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_BT3C_NODE_GET_STATE
+Returns the current receiving state for the node.
+.It Dv NGM_BT3C_NODE_GET_DEBUG
+Returns an integer containing the current debug level for the node.
+.It Dv NGM_BT3C_NODE_SET_DEBUG
+This command takes an integer argument and sets the current debug level
+for the node.
+.It Dv NGM_BT3C_NODE_GET_QLEN
+This command takes a parameter that specifies queue number and returns
+the current length of the queue for the node.
+.It Dv NGM_BT3C_NODE_SET_QLEN
+This command takes two parameters that specify the queue number and
+the maximum length of the queue and sets the maximum length of the queue for
+the node.
+.It Dv NGM_BT3C_NODE_GET_STAT
+Returns various statistic information for the node, such as: number of
+bytes (frames) sent, number of bytes (frames) received and number of
+input (output) errors.
+.It Dv NGM_BT3C_NODE_RESET_STAT
+Reset all statistic counters to zero.
+.It Dv NGM_BT3C_NODE_DOWNLOAD_FIRMWARE
+Download card firmware.
+.El
+.Sh SHUTDOWN
+This node shuts down when the corresponding card is un-plugged.
+.Sh SEE ALSO
+.Xr cardbus 4 ,
+.Xr netgraph 4 ,
+.Xr pccbb 4 ,
+.Xr pcic 4 ,
+.Xr pccard.conf 5 ,
+.Xr bt3cfw 8 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm btccc
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
+.Sh BUGS
+The driver is based on information obtained from
+.An Jose Orlando Pereira Aq jop@di.uminho.pt
+and disassembled the W2K driver.
diff --git a/share/man/man4/ng_btsocket.4 b/share/man/man4/ng_btsocket.4
new file mode 100644
index 0000000..5146d15
--- /dev/null
+++ b/share/man/man4/ng_btsocket.4
@@ -0,0 +1,354 @@
+.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ng_btsocket.4,v 1.7 2003/05/21 19:37:35 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd July 8, 2002
+.Dt NG_BTSOCKET 4
+.Os
+.Sh NAME
+.Nm ng_btsocket
+.Nd Bluetooth sockets layer
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In sys/bitstring.h
+.In netgraph/bluetooth/include/ng_hci.h
+.In netgraph/bluetooth/include/ng_l2cap.h
+.In netgraph/bluetooth/include/ng_btsocket.h
+.Sh DESCRIPTION
+The
+.Nm
+module implements three Netgraph node types.
+Each type in its turn implements one protocol within
+.Dv PF_BLUETOOTH
+domain.
+.Sh Dv BLUETOOTH_PROTO_HCI Sh protocol
+.Ss Dv SOCK_RAW Ss HCI sockets
+Implemented by
+.Nm btsock_hci_raw
+Netgraph type.
+Raw HCI sockets allow sending of raw HCI command datagrams
+only to correspondents named in
+.Xr send 2
+calls.
+Raw HCI datagrams (HCI commands, events and data) are generally received with
+.Xr recvfrom 2 ,
+which returns the next datagram with its return address.
+Raw HCI sockets can also be used to control HCI nodes.
+.Pp
+The Bluetooth raw HCI socket address is defined as follows:
+.Bd -literal -offset indent
+/* Bluetooth version of struct sockaddr for raw HCI sockets */
+struct sockaddr_hci {
+ u_char hci_len; /* total length */
+ u_char hci_family; /* address family */
+ char hci_node[16]; /* HCI node name */
+};
+.Ed
+.Pp
+Raw HCI sockets support number of
+.Xr ioctl 2
+requests such as:
+.Bl -tag -width indent
+.It Dv SIOC_HCI_RAW_NODE_GET_STATE
+Returns current state for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_INIT
+Turn on
+.Dq inited
+bit for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_GET_DEBUG
+Returns current debug level for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_SET_DEBUG
+Sets current debug level for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_GET_BUFFER
+Returns current state of data buffers for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_GET_BDADDR
+Returns BD_ADDR for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_GET_FEATURES
+Returns the list of features supported by hardware for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_GET_STAT
+Returns various statistic counters for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_RESET_STAT
+Resets all statistic counters for the HCI node to zero.
+.It Dv SIOC_HCI_RAW_NODE_FLUSH_NEIGHBOR_CACHE
+Remove all neighbor cache entries for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_GET_NEIGHBOR_CACHE
+Returns content of the neighbor cache for the HCI node.
+.It Dv SIOC_HCI_RAW_NODE_GET_CON_LIST
+Returns list of active baseband connections (i.e., ACL and SCO links) for
+the HCI node.
+.It SIOC_HCI_RAW_NODE_GET_LINK_POLICY_MASK
+Returns current link policy settings mask for the HCI node.
+.It SIOC_HCI_RAW_NODE_SET_LINK_POLICY_MASK
+Sets current link policy settings mask for the HCI node.
+.It SIOC_HCI_RAW_NODE_GET_PACKET_MASK
+Returns current packet mask for the HCI node.
+.It SIOC_HCI_RAW_NODE_SET_PACKET_MASK
+Sets current packet mask for the HCI node.
+.It SIOC_HCI_RAW_NODE_GET_ROLE_SWITCH
+Returns current value of the role switch parameter for the HCI node.
+.It SIOC_HCI_RAW_NODE_SET_ROLE_SWITCH
+Sets new value of the role switch parameter for the HCI node.
+.El
+.Pp
+The
+.Va net.bluetooth.hci.sockets.raw.ioctl_timeout
+variable, that can be examined and set via
+.Xr sysctl 8 ,
+controls the control request timeout (in seconds) for raw HCI sockets.
+.Pp
+Raw HCI sockets support filters.
+The application can filter certain HCI datagram types.
+For HCI event datagrams the application can set additional filter.
+The raw HCI socket filter defined as follows:
+.Bd -literal -offset indent
+/*
+ * Raw HCI socket filter.
+ *
+ * For packet mask use (1 << (HCI packet indicator - 1))
+ * For event mask use (1 << (Event - 1))
+ */
+
+struct ng_btsocket_hci_raw_filter {
+ bitstr_t bit_decl(packet_mask, 32);
+ bitstr_t bit_decl(event_mask, (NG_HCI_EVENT_MASK_SIZE * 8));
+};
+.Ed
+.Pp
+The
+.Dv SO_HCI_RAW_FILTER
+option defined at
+.Dv SOL_HCI_RAW
+level can be used to obtain via
+.Xr getsockopt 2
+or change via
+.Xr setsockopt 2
+raw HCI socket's filter.
+.Sh Dv BLUETOOTH_PROTO_L2CAP Sh protocol
+The Bluetooth L2CAP socket address is defined as follows:
+.Bd -literal -offset indent
+/* Bluetooth version of struct sockaddr for L2CAP sockets */
+struct sockaddr_l2cap {
+ u_char l2cap_len; /* total length */
+ u_char l2cap_family; /* address family */
+ u_int16_t l2cap_psm; /* Protocol/Service Multiplexor */
+ bdaddr_t l2cap_bdaddr; /* address */
+};
+.Ed
+.Ss Dv SOCK_RAW Ss L2CAP sockets
+Implemented by
+.Nm btsock_l2c_raw
+Netgraph type.
+Raw L2CAP sockets do not provide access to raw L2CAP datagrams.
+These
+sockets used to control L2CAP nodes and to issue special L2CAP requests
+such as
+.Dv ECHO_REQUEST
+and
+.Dv GET_INFO
+request.
+.Pp
+Raw L2CAP sockets support number of
+.Xr ioctl 2
+requests such as:
+.Bl -tag -width indent
+.It Dv SIOC_L2CAP_NODE_GET_FLAGS
+Returns current state for the L2CAP node.
+.It Dv SIOC_L2CAP_NODE_GET_DEBUG
+Returns current debug level for the L2CAP node.
+.It Dv SIOC_L2CAP_NODE_SET_DEBUG
+Sets current debug level for the L2CAP node.
+.It Dv SIOC_L2CAP_NODE_GET_CON_LIST
+Returns list of active baseband connections (i.e., ACL links) for the L2CAP
+node.
+.It Dv SIOC_L2CAP_NODE_GET_CHAN_LIST
+Returns list of active channels for the L2CAP node.
+.It Dv SIOC_L2CAP_NODE_GET_AUTO_DISCON_TIMO
+Returns current value of the auto disconnect timeout for the L2CAP node.
+.It Dv SIOC_L2CAP_NODE_SET_AUTO_DISCON_TIMO
+Sets current value of the auto disconnect timeout for the L2CAP node.
+.It Dv SIOC_L2CAP_L2CA_PING
+Issues L2CAP
+.Dv ECHO_REQUEST .
+.It Dv SIOC_L2CAP_L2CA_GET_INFO
+Issues L2CAP
+.Dv GET_INFO
+request.
+.El
+.Pp
+The
+.Va net.bluetooth.l2cap.sockets.raw.ioctl_timeout
+variable, that can be examined and set via
+.Xr sysctl 8 ,
+controls the control request timeout (in seconds) for raw L2CAP sockets.
+.Ss Dv SOCK_SEQPACKET Ss L2CAP sockets
+Implemented by
+.Nm btsock_l2c
+Netgraph type.
+L2CAP sockets are either
+.Dq active
+or
+.Dq passive .
+Active sockets initiate connections to passive sockets.
+By default, L2CAP sockets are created active; to create a passive socket, the
+.Xr listen 2
+system call must be used after binding the socket with the
+.Xr bind 2
+system call.
+Only passive sockets may use the
+.Xr accept 2
+call to accept incoming connections.
+Only active sockets may use the
+.Xr connect 2
+call to initiate connections.
+.Pp
+L2CAP sockets support
+.Dq "wildcard addressing" .
+In this case, socket must be bound to
+.Dv NG_HCI_BDADDR_ANY
+address.
+Note that PSM (Protocol/Service Multiplexor) field is always required.
+Once a connection has been established, the socket's address is
+fixed by the peer entity's location.
+The address assigned to the socket is
+the address associated with the Bluetooth device through which packets are
+being transmitted and received, and PSM (Protocol/Service Multiplexor).
+.Pp
+L2CAP sockets support number of options defined at
+.Dv SOL_L2CAP
+level which can be set with
+.Xr setsockopt 2
+and tested with
+.Xr getsockopt 2 :
+.Bl -tag -width indent
+.It Dv SO_L2CAP_IMTU
+Get (set) maximum payload size the local socket is capable of accepting.
+.It Dv SO_L2CAP_OMTU
+Get maximum payload size the remote socket is capable of accepting.
+.It Dv SO_L2CAP_IFLOW
+Get incoming flow specification for the socket.
+.Bf -emphasis
+Not implemented.
+.Ef
+.It Dv SO_L2CAP_OFLOW
+Get (set) outgoing flow specification for the socket.
+.Bf -emphasis
+Not implemented.
+.Ef
+.It Dv SO_L2CAP_FLUSH
+Get (set) value of the flush timeout.
+.Bf -emphasis
+Not implemented.
+.Ef
+.El
+.Sh Dv BLUETOOTH_PROTO_RFCOMM Sh protocol
+The Bluetooth RFCOMM socket address is defined as follows:
+.Bd -literal -offset indent
+/* Bluetooth version of struct sockaddr for RFCOMM sockets */
+struct sockaddr_rfcomm {
+ u_char rfcomm_len; /* total length */
+ u_char rfcomm_family; /* address family */
+ bdaddr_t rfcomm_bdaddr; /* address */
+ u_int8_t rfcomm_channel; /* channel */
+};
+.Ed
+.Ss Dv SOCK_STREAM Ss RFCOMM sockets
+Note that RFCOMM sockets do not have associated Netgraph node type.
+RFCOMM sockets are implemented as additional layer on top of L2CAP sockets.
+RFCOMM sockets are either
+.Dq active
+or
+.Dq passive .
+Active sockets initiate connections to passive sockets.
+By default, RFCOMM sockets are created active; to create a passive socket, the
+.Xr listen 2
+system call must be used after binding the socket with the
+.Xr bind 2
+system call.
+Only passive sockets may use the
+.Xr accept 2
+call to accept incoming connections.
+Only active sockets may use the
+.Xr connect 2
+call to initiate connections.
+.Pp
+RFCOMM sockets support
+.Dq "wildcard addressing" .
+In this case, socket must be bound to
+.Dv NG_HCI_BDADDR_ANY
+address.
+Note that RFCOMM channel field is always required.
+Once a connection has been established, the socket's address is fixed by the
+peer entity's location.
+The address assigned to the socket is the address associated with the
+Bluetooth device through which packets are being transmitted and received,
+and RFCOMM channel.
+.Pp
+The following options, which can be tested with
+.Xr getsockopt 2
+call, are defined at
+.Dv SOL_RFCOMM
+level for RFCOMM sockets:
+.Bl -tag -width indent
+.It Dv SO_RFCOMM_MTU
+Returns the maximum transfer unit size (in bytes) for the underlying RFCOMM
+channel.
+Note that application still can write/read bigger chunks to/from the socket.
+.It Dv SO_RFCOMM_FC_INFO
+Return the flow control information for the underlying RFCOMM channel.
+.El
+.Pp
+The
+.Va net.bluetooth.rfcomm.sockets.stream.timeout
+variable, that can be examined and set via
+.Xr sysctl 8 ,
+controls the connection timeout (in seconds) for RFCOMM sockets.
+.Sh HOOKS
+These node types support hooks with arbitrary names (as long as they are
+unique) and always accept hook connection requests.
+.Sh NETGRAPH CONTROL MESSAGES
+These node types support the generic control messages.
+.Sh SHUTDOWN
+These nodes are persistent and cannot be shut down.
+.Sh SEE ALSO
+.Xr btsockstat 1 ,
+.Xr socket 2 ,
+.Xr netgraph 4 ,
+.Xr ng_bluetooth 4 ,
+.Xr ng_hci 4 ,
+.Xr ng_l2cap 4 ,
+.Xr ngctl 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+module was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
+.Sh BUGS
+Most likely.
+Please report if found.
diff --git a/share/man/man4/ng_car.4 b/share/man/man4/ng_car.4
new file mode 100644
index 0000000..15efd10
--- /dev/null
+++ b/share/man/man4/ng_car.4
@@ -0,0 +1,214 @@
+.\" Copyright (c) 2005 Nuno Antunes <nuno.antunes@gmail.com>
+.\" Copyright (c) 2007 Alexander Motin <mav@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$
+.\"
+.Dd March 11, 2007
+.Dt NG_CAR 4
+.Os
+.Sh NAME
+.Nm ng_car
+.Nd Commited Access Rate netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_car.h
+.Sh DESCRIPTION
+The
+.Nm car
+node type limits traffic flowing through it using:
+.Pp
+.Bl -bullet -compact
+.It
+Single rate three color marker as described in RFC 2697,
+.It
+Two rate three color marker as described in RFC 2698,
+.It
+RED-like rate limit algorithm used by Cisco,
+.It
+Traffic shaping with RED.
+.El
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width indent
+.It Va upper
+Hook leading to upper layer protocols.
+.It Va lower
+Hook leading to lower layer protocols.
+.El
+.Pp
+Traffic flowing from
+.Va upper
+to
+.Va lower
+is considered
+.Sy downstream
+traffic.
+Traffic flowing from
+.Va lower
+to
+.Va upper
+is considered
+.Sy upstream
+traffic.
+.Sh MODES OF OPERATION
+Each hook can operate in one of the following modes:
+.Bl -tag -width indent
+.It Dv NG_CAR_SINGLE_RATE
+Single rate three color marker as described in RFC 2697.
+Committed burst packets are counted as green, extended burst packets are
+counted as yellow and exceeding packets are counted as red.
+Committed burst getting refilled with CIR (Committed Information Rate) speed.
+When it is full, exceeded burst getting refilled.
+.It Dv NG_CAR_DOUBLE_RATE
+Two rate three color marker as described in RFC 2698.
+Committed burst packets are counted as green, peak burst packets are counted
+as yellow and exceeding packets are counted as red.
+Committed burst getting refilled with CIR speed.
+Peak burst getting refilled with PIR (Peak Information Rate) speed at the
+same time.
+.It Dv NG_CAR_RED
+Similar to
+.Dv NG_CAR_SINGLE_RATE ,
+but with different understanding of extended burst.
+When normal burst exceeded and extended burst is used, packets are counted
+red with probability equal to part of extended burst consumed.
+Extended burst getting refilled first.
+When it is full, committed burst getting refilled.
+This behavior is similar to RED active queue management algorithm.
+.Pp
+This algorithm is more polite to the TCP traffic than NG_CAR_SINGLE_RATE.
+.It Dv NG_CAR_SHAPE
+Committed burst packets are counted as green, exceeding packets are delayed
+by queue with RED management and counted as yellow.
+Packets dropped by queue counted as red.
+Queue parameters are hardcoded: length 99 packets, min_th 8 packets, max_p 100%.
+.Pp
+Traffic shaping is much more polite to the TCP traffic than rate limit on
+links with bandwidth * delay product less than 6-8 TCP segments, but it
+consumes additional system resources for queue processing.
+.El
+By default, all information rates are measured in bits per second and bursts
+are measured in bytes. But when NG_CAR_COUNT_PACKETS option is enabled,
+rates are measured in packets per second and bursts are in packets.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages and the following
+specific messages.
+.Bl -tag -width indent
+.It Dv NGM_CAR_SET_CONF Pq Li setconf
+Set node configuration to the specified at
+.Vt "struct ng_car_bulkconf"
+.It Dv NGM_CAR_GET_CONF Pq Li getconf
+Return current node configuration as
+.Vt "struct ng_car_bulkconf"
+.Bd -literal
+struct ng_car_hookconf {
+ u_int64_t cbs; /* Committed burst size */
+ u_int64_t ebs; /* Exceeded/Peak burst size */
+ u_int64_t cir; /* Committed information rate */
+ u_int64_t pir; /* Peak information rate */
+ u_int8_t green_action; /* Action for green packets */
+ u_int8_t yellow_action; /* Action for yellow packets */
+ u_int8_t red_action; /* Action for red packets */
+ u_int8_t mode; /* operation mode */
+ u_int8_t opt; /* mode options */
+};
+
+/* possible actions (..._action) */
+enum {
+ NG_CAR_ACTION_FORWARD = 1,
+ NG_CAR_ACTION_DROP
+};
+
+/* operation modes (mode) */
+enum {
+ NG_CAR_SINGLE_RATE = 0,
+ NG_CAR_DOUBLE_RATE,
+ NG_CAR_RED,
+ NG_CAR_SHAPE
+};
+
+/* mode options (opt) */
+#define NG_CAR_COUNT_PACKETS 2
+
+struct ng_car_bulkconf {
+ struct ng_car_hookconf upstream;
+ struct ng_car_hookconf downstream;
+};
+.Ed
+.It Dv NGM_CAR_GET_STATS Pq Li getstats
+Return node statistics as
+.Vt "struct ng_car_bulkstats"
+.Bd -literal
+struct ng_car_hookstats {
+ u_int64_t passed_pkts;
+ u_int64_t droped_pkts;
+ u_int64_t green_pkts;
+ u_int64_t yellow_pkts;
+ u_int64_t red_pkts;
+ u_int64_t errors;
+};
+
+struct ng_car_bulkstats {
+ struct ng_car_hookstats upstream;
+ struct ng_car_hookstats downstream;
+};
+.Ed
+.It Dv NGM_CAR_CLR_STATS Pq Li clrstats
+Clear node statistics.
+.It Dv NGM_CAR_GETCLR_STATS Pq Li getclrstats
+Atomically return and clear node statistics.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh EXAMPLES
+Limit outgoing data rate over fxp0 Ethernet interface to 20Mbit/s
+and incoming packet rate to 5000pps.
+.Bd -literal -offset indent
+/usr/sbin/ngctl -f- <<-SEQ
+ mkpeer fxp0: car lower lower
+ name fxp0:lower fxp0_car
+ connect fxp0: fxp0_car: upper upper
+ msg fxp0_car: setconf { downstream={ cir=20000000 cbs=2500000 ebs=2500000 greenAction=1 yellowAction=1 redAction=2 mode=2 } upstream={ cir=5000 cbs=100 ebs=100 greenAction=1 yellowAction=1 redAction=2 mode=2 opt=2 } }
+SEQ
+.Ed
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ngctl 8
+.Rs
+.%A J. Heinanen
+.%T "A Single Rate Three Color Marker"
+.%O RFC 2697
+.Re
+.Rs
+.%A J. Heinanen
+.%T "A Two Rate Three Color Marker"
+.%O RFC 2698
+.Re
+.Sh AUTHORS
+.An Nuno Antunes Aq nuno.antunes@gmail.com
+.An Alexander Motin Aq mav@FreeBSD.org
+.Sh BUGS
+At this moment only DROP and FORWARD actions are implemented.
diff --git a/share/man/man4/ng_ccatm.4 b/share/man/man4/ng_ccatm.4
new file mode 100644
index 0000000..923b06d
--- /dev/null
+++ b/share/man/man4/ng_ccatm.4
@@ -0,0 +1,324 @@
+.\"
+.\" Copyright (c) 2001-2004
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" All rights reserved.
+.\" Copyright (c) 2005
+.\" Hartmut Brandt.
+.\" All rights reserved.
+.\"
+.\" Author: Harti Brandt <harti@freebsd.org>
+.\"
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 10, 2005
+.Dt NG_CCATM 4
+.Os
+.Sh NAME
+.Nm ng_ccatm
+.Nd "ATM Call Control netgraph node type"
+.Sh SYNOPSIS
+.In netnatm/unimsg.h
+.In netnatm/msg/unistruct.h
+.In netnatm/sig/unidef.h
+.In netnatm/api/unisap.h
+.In netnatm/api/atmapi.h
+.In netnatm/api/ccatm.h
+.In netgraph.h
+.In netgraph/ng_uni.h
+.In netgraph/ng_ccatm.h
+.Sh DESCRIPTION
+The
+.Nm
+node implements the API specified by the ATM Forum for access to ATM services
+(see ATM-Forum document
+.Pa af-saa-0108 ) .
+This document specifies the semantics
+of the API, not the exact language binding.
+For this reason, it is expected that
+this implementation is neither compile-time nor binary compatible with
+other implementations of this API.
+It should, however, be fairly straightforward
+to convert between different API implementations.
+.Pp
+This node is usually stacked on top of one or more UNI nodes (see
+.Xr ng_uni 4 ) .
+Each of these hooks appears as a
+.Dq port
+to the user of the node.
+It also has one hook connected to the ILMI daemon for management purposes.
+.Pp
+The node is removed when it receives a
+.Dv NGM_SHUTDOWN
+messages or when all hooks are disconnected.
+.Sh HOOKS
+The node understands a number of hooks with predefined names and an
+unlimited number of hooks for user connections.
+The predefined names are:
+.Bl -tag -width ".Va orphans"
+.It Va uni Ns Ar NNN
+These hooks stack the
+.Nm
+node on top of a UNI stack.
+The node expects the interface on these hooks
+to conform to the upper interface specified in
+.Xr ng_uni 4 .
+These hooks are forced into queuing mode, so that there are no circular
+calls from call control to UNI and UNI back to call control.
+The
+.Ar NNN
+in the hook name is the decimal port number and should not be zero.
+The port number is a 32-bit unsigned integer.
+.It Va manage
+This hook should be connected to the ILMI daemon.
+No data is ever sent on this hook and all received data is discarded.
+The hook is used to send control messages along.
+.It Va dump
+On receipt of a
+.Dv NGM_CCATM_DUMP
+command a textual description of the current state of the node is sent
+out of this hook.
+This text is sent as one large message consisting of more
+than one
+.Vt mbuf .
+.El
+.Pp
+All other hook names are taken to be user hooks and correspond to an
+ATM endpoint as specified in the ATM Forum document.
+The interface on these hooks is defined in
+.In atmapi.h
+and uses a structure
+.Bd -literal
+struct ccatm_op {
+ u_int32_t op; /* request code */
+ u_char data[]; /* optional data */
+};
+.Ed
+.Pp
+This structure is followed directly by the data for the operation.
+The opcode is one of the following:
+.Bd -literal
+enum atmop {
+ ATMOP_RESP,
+ ATMOP_ABORT_CONNECTION,
+ ATMOP_ACCEPT_INCOMING_CALL,
+ ATMOP_ADD_PARTY,
+ ATMOP_ADD_PARTY_REJECT,
+ ATMOP_ADD_PARTY_SUCCESS,
+ ATMOP_ARRIVAL_OF_INCOMING_CALL,
+ ATMOP_CALL_RELEASE,
+ ATMOP_CONNECT_OUTGOING_CALL,
+ ATMOP_DROP_PARTY,
+ ATMOP_GET_LOCAL_PORT_INFO,
+ ATMOP_P2MP_CALL_ACTIVE,
+ ATMOP_P2P_CALL_ACTIVE,
+ ATMOP_PREPARE_INCOMING_CALL,
+ ATMOP_PREPARE_OUTGOING_CALL,
+ ATMOP_QUERY_CONNECTION_ATTRIBUTES,
+ ATMOP_REJECT_INCOMING_CALL,
+ ATMOP_SET_CONNECTION_ATTRIBUTES,
+ ATMOP_WAIT_ON_INCOMING_CALL,
+ ATMOP_SET_CONNECTION_ATTRIBUTES_X,
+ ATMOP_QUERY_CONNECTION_ATTRIBUTES_X,
+ ATMOP_QUERY_STATE
+};
+.Ed
+.Pp
+These codes correspond directly to the operations specified in the ATM
+Forum document with the following exceptions:
+.Bl -tag -width indent
+.It Dv ATMOP_RESP
+As discussed in
+.Xr ng_uni 4 ,
+this is used to
+.Dq synchronify
+the interface.
+The argument is a
+.Bd -literal
+struct atm_resp {
+ int32_t resp;
+ uint32_t data; /* type of attached data */
+};
+.Ed
+.Pp
+If the response code
+.Va resp
+is zero, the node has accepted the user request.
+If something goes wrong,
+.Va resp
+contains an error code.
+For requests that return data,
+.Va data
+contains a code describing the type of data and the data itself
+starts immediately after the structure.
+.It Dv ATMOP_QUERY_CONNECTION_ATTRIBUTES_X
+This is the same as
+.Dv ATMOP_QUERY_CONNECTION_ATTRIBUTES
+except that it allows to query several attributes
+within one request.
+.It Dv ATMOP_SET_CONNECTION_ATTRIBUTES_X
+This is the same as
+.Dv ATMOP_SET_CONNECTION_ATTRIBUTES
+except that it allows to set several attributes
+within one request.
+The list of attributes is followed directly by the attributes in the same
+order as they appear in the list.
+.El
+.Pp
+If a user hook is disconnected, an active connection on that hook is released.
+Incoming connections waiting to be accepted are reoffered to other
+listening hooks or rejected.
+.Sh CONTROL MESSAGES
+Besides the generic messages the node understands the following special
+messages:
+.Bl -tag -width indent
+.It Dv NGM_CCATM_DUMP
+This causes the internal state of the node to be dumped in ASCII to the
+.Va dump
+hook.
+.It Dv NGM_CCATM_STOP
+This message causes all connections on that port to be aborted (not released!\&)
+and all ATM endpoints which are bound to that port to be closed.
+It stops processing of all messages from the UNI stack on that port UNI stack.
+The argument is a
+.Bd -literal
+struct ngm_ccatm_port {
+ uint32_t port;
+};
+.Ed
+.Pp
+.It Dv NGM_CCATM_START
+Start processing on the port.
+The argument is a
+.Vt ngm_ccatm_port
+structure.
+.It Dv NGM_CCATM_CLEAR
+This message takes a
+.Vt ngm_ccatm_port
+structure and clears all prefixes and addresses on that port.
+If the port number is zero, all ports are cleared.
+.It Dv NGM_CCATM_GET_ADDRESSES
+Get the list of all registered addresses on the given port.
+The argument is a
+.Vt ngm_ccatm_port
+structure and the result is a
+.Vt ngm_ccatm_get_addresses
+structure:
+.Bd -literal
+struct ngm_ccatm_get_addresses {
+ uint32_t count;
+ struct ngm_ccatm_address_req addr[0];
+};
+struct ngm_ccatm_address_req {
+ u_int32_t port;
+ struct uni_addr addr;
+};
+.Ed
+.Pp
+If the
+.Va port
+field is zero in the request, all addresses on all ports
+are returned.
+If it is not zero, only the addresses on that port are reported.
+The number of addresses is returned in the
+.Va count
+field.
+.It Dv NGM_CCATM_ADDRESS_REGISTERED
+This message is used by ILMI to inform the
+.Nm
+node that a previous address registration request was successful.
+This causes the node to activate that address.
+The argument to the message is a
+.Vt ngm_ccatm_address_req
+structure.
+.It Dv NGM_CCATM_ADDRESS_UNREGISTERED
+This message is used by ILMI to inform the
+.Nm
+node that an address has been unregistered.
+The node clears that address from its tables.
+The argument is a
+.Vt ngm_ccatm_address_req
+structure.
+.It Dv NGM_CCATM_SET_PORT_PARAM
+This request sets the parameters on the given port.
+The argument is a
+.Bd -literal
+struct ngm_ccatm_atm_port {
+ uint32_t port; /* port for which to set parameters */
+ uint32_t pcr; /* port peak cell rate */
+ uint32_t max_vpi_bits;
+ uint32_t max_vci_bits;
+ uint32_t max_svpc_vpi;
+ uint32_t max_svcc_vpi;
+ uint32_t min_svcc_vci;
+ uint8_t esi[6];
+ uint32_t num_addr;
+};
+.Ed
+.Pp
+This should be used only by ILMI and when that port is stopped and the
+address and prefix tables of that port are empty.
+The
+.Va num_addr
+field is ignored.
+.It Dv NGM_CCATM_GET_PORT_PARAM
+Retrieve the parameters of the given port.
+The argument is a
+.Vt ngm_ccatm_port
+and the result a
+.Vt ngm_ccatm_atm_port .
+.It Dv NGM_CCATM_GET_PORTLIST
+Get a list of all available ports on that node.
+This is returned as a
+.Bd -literal
+struct ngm_ccatm_portlist {
+ uint32_t nports;
+ uint32_t ports[];
+};
+.Ed
+.It Dv NGM_CCATM_GETSTATE
+Return the state of a port.
+The argument is a
+.Vt "struct ngm_ccatm_port"
+and the return values as a
+.Vt uint32_t .
+.It Dv NGM_CCATM_SETLOG
+This requests sets a new logging level and returns the previous one.
+The argument is either a
+.Vt uint32_t
+in which case it specifies the new logging level, or may be empty
+in which case just the old level is returned as a
+.Vt uint32_t .
+.It Dv NGM_CCATM_RESET
+Reset the node.
+This is allowed only if the number of user hooks and connected UNI stacks is
+zero.
+.It Dv NGM_CCATM_GET_EXSTAT
+Return extended status information from the node.
+.El
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_uni 4 ,
+.Xr ngctl 8
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/ng_cisco.4 b/share/man/man4/ng_cisco.4
new file mode 100644
index 0000000..2cccb76
--- /dev/null
+++ b/share/man/man4/ng_cisco.4
@@ -0,0 +1,185 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_cisco.8,v 1.5 1999/01/25 23:46:26 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_CISCO 4
+.Os
+.Sh NAME
+.Nm ng_cisco
+.Nd Cisco HDLC protocol netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netinet/in.h
+.In netgraph/ng_cisco.h
+.Sh DESCRIPTION
+The
+.Nm cisco
+node type performs encapsulation and de-encapsulation of packets
+using the Cisco HDLC protocol.
+This is a fairly simple
+protocol for the transmission of packets across
+high speed synchronous lines.
+Each packet is prepended with
+an Ethertype, indicating the protocol.
+There is also a
+.Dq keep alive
+and an
+.Dq inquire
+capability.
+.Pp
+The
+.Dv downstream
+hook should connect to the synchronous line.
+On the other side
+of the node are the
+.Dv inet ,
+.Dv inet6 ,
+.Dv atalk ,
+and
+.Dv ipx
+hooks, which transmit and receive raw IP, IPv6, AppleTalk, and IPX packets,
+respectively.
+Typically these hooks would connect to the corresponding
+hooks on an
+.Xr ng_iface 4
+type node.
+.Sh IP Configuration
+In order to function properly for IP traffic, the node must be informed
+of the local IP address and netmask setting.
+This is because the protocol
+includes an
+.Dq inquire
+packet which we must be prepared to answer.
+There are two ways to accomplish this, manually and automatically.
+.Pp
+Whenever such an inquire packet is received, the node sends a
+.Dv NGM_CISCO_GET_IPADDR
+control message to the peer node connected to the
+.Dv inet
+hook (if any).
+If the peer responds, then that response is used.
+This is the automatic method.
+.Pp
+If the peer does not respond, the node falls back on its cached value
+for the IP address and netmask.
+This cached value can be set at any time
+with a
+.Dv NGM_CISCO_SET_IPADDR
+message, and this is the manual method.
+.Pp
+If the
+.Dv inet
+hook is connected to the
+.Dv inet
+hook of an
+.Xr ng_iface 4
+node, as is usually the case, then configuration is automatic as the
+.Xr ng_iface 4
+understands the
+.Dv NGM_CISCO_GET_IPADDR
+message.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobarbazio
+.It Dv downstream
+The connection to the synchronous line.
+.It Dv inet
+IP hook.
+.It Dv inet6
+IPv6 hook.
+.It Dv atalk
+AppleTalk hook.
+.It Dv ipx
+IPX hook
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_CISCO_SET_IPADDR
+This command takes an array of two
+.Dv "struct in_addr"
+arguments.
+The first is the IP address of the corresponding interface
+and the second is the netmask.
+.It Dv NGM_CISCO_GET_IPADDR
+This command returns the IP configuration in the same format used by
+.Dv NGM_CISCO_SET_IPADDR .
+This command is also
+.Em sent
+by this node type to the
+.Dv inet
+peer whenever an IP address inquiry packet is received.
+.It Dv NGM_CISCO_GET_STATUS
+Returns a
+.Dv "struct ngciscostat" :
+.Bd -literal -offset 4n
+struct ngciscostat {
+ u_int32_t seq_retries; /* # unack'd retries */
+ u_int32_t keepalive_period; /* in seconds */
+};
+.Ed
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_iface 4 ,
+.Xr ngctl 8
+.Rs
+.%A D. Perkins
+.%T "Requirements for an Internet Standard Point-to-Point Protocol"
+.%O RFC 1547
+.Re
+.Sh LEGAL
+.Tn Cisco
+is a trademark of Cisco Systems, Inc.
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org ,
+.An Archie Cobbs Aq archie@FreeBSD.org
+.Sh BUGS
+Not all of the functionality has been implemented.
+For example,
+the node does not support querying the remote end for its IP address
+and netmask.
diff --git a/share/man/man4/ng_deflate.4 b/share/man/man4/ng_deflate.4
new file mode 100644
index 0000000..25ba5e8
--- /dev/null
+++ b/share/man/man4/ng_deflate.4
@@ -0,0 +1,158 @@
+.\"
+.\" Author: Alexander Motin <mav@alkar.net>
+.\"
+.\" Copyright (c) 2006, Alexander Motin <mav@alkar.net>
+.\" 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 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$
+.\"
+.Dd December 23, 2006
+.Dt NG_DEFLATE 4
+.Os
+.Sh NAME
+.Nm ng_deflate
+.Nd Deflate PPP compression (RFC 1979) netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_deflate.h
+.Sh DESCRIPTION
+The
+.Nm deflate
+node type implements the Deflate sub-protocols of the Compression Control
+Protocol (CCP).
+.Pp
+The node has two hooks,
+.Va comp
+for compression and
+.Va decomp
+for decompression.
+Only one of them can be connected at the same time, specifying node's
+operation mode.
+Typically that hooks would be connected to the
+.Xr ng_ppp 4
+node type hook of the same name.
+Corresponding
+.Xr ng_ppp 4
+node hook must be switched to
+.Dv NG_PPP_DECOMPRESS_FULL
+mode to permit sending uncompressed frames.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -compact -width decomp
+.It Va comp
+Connection to
+.Xr ng_ppp 4
+.Va comp
+hook.
+Incoming frames are compressed (if possible) and sent back out the same hook.
+.It Va decomp
+Connection to
+.Xr ng_ppp 4
+.Va decomp
+hook.
+Incoming frames are decompressed (if they are compressed), and sent
+back out the same hook.
+.El
+.Pp
+Only one hook can be connected at the same time, specifying node's
+operation mode.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_DEFLATE_CONFIG Pq Li config
+This command resets and configures the node for a session
+(i.e., for compression or decompression).
+This command takes a
+.Vt "struct ng_deflate_config"
+as an argument:
+.Bd -literal -offset 0n
+struct ng_deflate_config {
+ u_char enable; /* node enabled */
+ u_char windowBits; /* log2(Window size) */
+};
+.Ed
+The
+.Fa enabled
+field enables traffic flow through the node.
+The
+.Fa windowBits
+specify compression windows size as negotiated by the
+Compression Control Protocol (CCP) in PPP.
+.It Dv NGM_DEFLATE_RESETREQ Pq Li resetreq
+This message contains no arguments, and is bi-directional.
+If an error is detected during decompression, this message is sent by the
+node to the originator of the
+.Dv NGM_DEFLATE_CONFIG
+message that initiated the session.
+The receiver should respond by sending a PPP CCP Reset-Request to the peer.
+.Pp
+This message may also be received by this node type when a CCP Reset-Request
+or Reset-Ack is received by the local PPP entity.
+The node will respond by flushing its compression state so the sides
+can resynchronize.
+.It Dv NGM_DEFLATE_GET_STATS Pq Li getstats
+This control message obtains statistics for a given hook.
+The statistics are returned in
+.Vt "struct ng_deflate_stats" :
+.Bd -literal
+struct ng_deflate_stats {
+ uint64_t FramesPlain;
+ uint64_t FramesComp;
+ uint64_t FramesUncomp;
+ uint64_t InOctets;
+ uint64_t OutOctets;
+ uint64_t Errors;
+};
+.Ed
+.It Dv NGM_DEFLATE_CLR_STATS Pq Li clrstats
+This control message clears statistics for a given hook.
+.It Dv NGM_DEFLATE_GETCLR_STATS Pq Li getclrstats
+This control message obtains and clears statistics for a given hook.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when hook have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ppp 4 ,
+.Xr ngctl 8
+.Rs
+.%A J. Woods
+.%T "PPP Deflate Protocol"
+.%O RFC 1979
+.Re
+.Rs
+.%A W. Simpson
+.%T "The Point-to-Point Protocol (PPP)"
+.%O RFC 1661
+.Re
+.Sh AUTHORS
+.An Alexander Motin Aq mav@alkar.net
+.Sh BUGS
+Due to nature of netgraph PPP implementation there are possible race conditions
+between data packet and ResetAck CCP packet in case of packet loss. As result,
+packet loss can produce bigger performance degradation than supposed by protocol.
diff --git a/share/man/man4/ng_device.4 b/share/man/man4/ng_device.4
new file mode 100644
index 0000000..a03a03b
--- /dev/null
+++ b/share/man/man4/ng_device.4
@@ -0,0 +1,96 @@
+.\" Copyright (c) 2002 Mark Santcroos <marks@ripe.net>
+.\"
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd October 19, 2004
+.Dt NG_DEVICE 4
+.Os
+.Sh NAME
+.Nm ng_device
+.Nd device netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_device.h
+.Sh DESCRIPTION
+A
+.Nm device
+node is both a netgraph node and a system device interface.
+When a
+.Nm device
+node is created, a new device entry appears which is accessible via the
+regular file operators such as
+.Xr open 2 ,
+.Xr close 2 ,
+.Xr read 2 ,
+.Xr write 2 ,
+etc.
+.Pp
+The first node is created as
+.Pa /dev/ngd0 ,
+all subsequent nodes
+.Pa /dev/ngd1 , /dev/ngd2 ,
+etc.
+.Sh HOOKS
+A
+.Nm device
+node has a single hook with an arbitrary name.
+All data coming in over the hook will be presented to the device
+for
+.Xr read 2 .
+All data coming in from the device entry by
+.Xr write 2
+will be forwarded to the hook.
+.Sh CONTROL MESSAGES
+The
+.Nm device
+node supports one non-generic control message:
+.Bl -tag -width 3n
+.It Dv NGM_DEVICE_GET_DEVNAME
+Returns device name corresponding to a node.
+.El
+.\" Additionally, the node accepts
+.\" .Xr ioctl 2 Ns s
+.\" from the device entry.
+.\" These will be encapsulated into
+.\" .Xr netgraph 4
+.\" messages and send out to the hook.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or upon hook disconnection.
+The associated device entry is removed and becomes available
+for use by future
+.Nm device
+nodes.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm device
+node type was first implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Mark Santcroos Aq marks@ripe.net
+.An Gleb Smirnoff Aq glebius@FreeBSD.org
diff --git a/share/man/man4/ng_echo.4 b/share/man/man4/ng_echo.4
new file mode 100644
index 0000000..f502c62
--- /dev/null
+++ b/share/man/man4/ng_echo.4
@@ -0,0 +1,73 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_echo.8,v 1.4 1999/01/25 23:46:26 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_ECHO 4
+.Os
+.Sh NAME
+.Nm ng_echo
+.Nd netgraph echo node type
+.Sh SYNOPSIS
+.In netgraph/ng_echo.h
+.Sh DESCRIPTION
+The
+.Nm echo
+node type reflects all data and control messages back to the sender.
+This node type is used for testing and debugging.
+.Sh HOOKS
+A
+.Nm echo
+node accepts any request to connect, regardless of the hook name,
+as long as the name is unique.
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+Any other control messages are reflected back to the sender.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_hole 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_eiface.4 b/share/man/man4/ng_eiface.4
new file mode 100644
index 0000000..6699153
--- /dev/null
+++ b/share/man/man4/ng_eiface.4
@@ -0,0 +1,122 @@
+.\" Copyright (c) 2004 Gleb Smirnoff
+.\" 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$
+.\"
+.Dd February 3, 2005
+.Dt NG_EIFACE 4
+.Os
+.Sh NAME
+.Nm ng_eiface
+.Nd "generic Ethernet interface netgraph node type"
+.Sh SYNOPSIS
+.In netgraph/ng_eiface.h
+.Sh DESCRIPTION
+The
+.Vt eiface
+netgraph node implements the generic Ethernet interface.
+When
+.Vt eiface
+node is created, a new interface appears which is accessible via
+.Xr ifconfig 8 .
+These interfaces are named
+.Dq Li ngeth0 ,
+.Dq Li ngeth1 ,
+etc.
+When a node is shut down, the corresponding interface is removed,
+and the interface name becomes available for reuse by future
+.Vt eiface
+nodes.
+New nodes always take the first unused interface.
+.Sh HOOKS
+An
+.Vt eiface
+node has a single hook named
+.Va ether ,
+which should be connected to the
+Ethernet downstream, for example, to the
+.Xr ng_vlan 4
+node.
+Packets transmitted via the interface flow out this hook.
+Similarly, packets received on the hook go to the protocol stack as
+packets received by any real Ethernet interface.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_EIFACE_SET Pq Li set
+Set link-level address of the interface.
+Requires
+.Vt "struct ether_addr"
+as an argument.
+This message also has an
+.Tn ASCII
+version, called
+.Dq Li set ,
+which requires as an argument an
+.Tn ASCII
+string consisting of 6 colon-separated hex digits.
+.It Dv NGM_EIFACE_GET_IFNAME Pq Li getifname
+Return the name of the associated interface as a
+.Dv NUL Ns -terminated
+.Tn ASCII
+string.
+.It Dv NGM_EIFACE_GET_IFADDRS
+Return the list of link-level addresses associated with the node.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message.
+The associated interface is removed and its name becomes
+available for reuse by future
+.Vt eiface
+nodes.
+.Pp
+Unlike most other node types, an
+.Vt eiface
+node does
+.Em not
+go away when all hooks have been disconnected; rather, and explicit
+.Dv NGM_SHUTDOWN
+control message is required.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ether 4 ,
+.Xr ng_iface 4 ,
+.Xr ng_vlan 4 ,
+.Xr ifconfig 8 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Vt eiface
+node type was implemented in
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Vt eiface
+node type was written by
+.An Vitaly V Belekhov .
+This manual page was written by
+.An Gleb Smirnoff .
diff --git a/share/man/man4/ng_etf.4 b/share/man/man4/ng_etf.4
new file mode 100644
index 0000000..18bb99e
--- /dev/null
+++ b/share/man/man4/ng_etf.4
@@ -0,0 +1,155 @@
+.\"
+.\" Copyright (c) 2001, FreeBSD 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 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 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$
+.\"
+.Dd May 16, 2006
+.Dt NG_ETF 4
+.Os
+.Sh NAME
+.Nm ng_etf
+.Nd Ethertype filtering netgraph node type
+.Sh SYNOPSIS
+.In netgraph.h
+.In netgraph/ng_etf.h
+.Sh DESCRIPTION
+The
+.Nm etf
+node type multiplexes and filters data between hooks on the basis
+of the ethertype found in an Ethernet header, presumed to be in the
+first 14 bytes of the data.
+Incoming Ethernet frames are accepted on the
+.Em downstream
+hook and if the ethertype matches a value which the node has been configured
+to filter, the packet is forwarded out the hook which was identified
+at the time that value was configured.
+If it does not match a configured
+value, it is passed to the
+.Em nomatch
+hook.
+If the
+.Em nomatch
+hook is not connected, the packet is dropped.
+.Pp
+Packets travelling in the other direction (towards the
+.Em downstream
+hook) are also examined and filtered.
+If a packet has an ethertype that matches one of the values configured
+into the node, it must have arrived in on the hook for which that value
+was configured, otherwise it will be discarded.
+Ethertypes of values other
+than those configured by the control messages must have arrived via the
+.Em nomatch
+hook.
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width ".Em downstream"
+.It Em downstream
+Typically this hook would be connected to a
+.Xr ng_ether 4
+node, using the
+.Em lower
+hook.
+.It Em nomatch
+Typically this hook would also be connected to an
+.Xr ng_ether 4
+type node using the
+.Em upper
+hook.
+.It Aq Em "any legal name"
+Any other hook name will be accepted and can be used as the match target
+of an ethertype.
+Typically this hook would be attached to
+a protocol handling node that requires and generates packets
+with a particular set of ethertypes.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width 4n
+.It Dv NGM_ETF_GET_STATUS
+This command returns a
+.Vt "struct ng_etfstat"
+containing node statistics for packet counts.
+.It Dv NGM_ETF_SET_FILTER
+Sets the a new ethertype filter into the node and specifies the hook to and
+from which packets of that type should use.
+The hook and ethertype
+are specified in a structure of type
+.Vt "struct ng_etffilter" :
+.Bd -literal -offset 4n
+struct ng_etffilter {
+ char matchhook[NG_HOOKSIZ]; /* hook name */
+ u_int16_t ethertype; /* catch these */
+};
+.Ed
+.El
+.Sh EXAMPLES
+Using
+.Xr ngctl 8
+it is possible to set a filter in place from the command line
+as follows:
+.Bd -literal -offset 4n
+#!/bin/sh
+ETHER_IF=fxp0
+MATCH1=0x834
+MATCH2=0x835
+cat <<DONE >/tmp/xwert
+# Make a new ethertype filter and attach to the Ethernet lower hook.
+# first remove left over bits from last time.
+shutdown ${ETHER_IF}:lower
+mkpeer ${ETHER_IF}: etf lower downstream
+# Give it a name to easily refer to it.
+name ${ETHER_IF}:lower etf
+# Connect the nomatch hook to the upper part of the same interface.
+# All unmatched packets will act as if the filter is not present.
+connect ${ETHER_IF}: etf: upper nomatch
+DONE
+ngctl -f /tmp/xwert
+
+# something to set a hook to catch packets and show them.
+echo "Unrecognised packets:"
+nghook -a etf: newproto &
+# Filter two random ethertypes to that hook.
+ngctl 'msg etf: setfilter { matchhook="newproto" ethertype=${MATCH1} }
+ngctl 'msg etf: setfilter { matchhook="newproto" ethertype=${MATCH2} }
+DONE
+.Ed
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ether 4 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_ether.4 b/share/man/man4/ng_ether.4
new file mode 100644
index 0000000..9fd409d
--- /dev/null
+++ b/share/man/man4/ng_ether.4
@@ -0,0 +1,242 @@
+.\" Copyright (c) 2000 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 4, 2006
+.Dt NG_ETHER 4
+.Os
+.Sh NAME
+.Nm ng_ether
+.Nd Ethernet netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_ether.h
+.Sh DESCRIPTION
+The
+.Nm ether
+netgraph node type allows Ethernet interfaces to interact with
+the
+.Xr netgraph 4
+networking subsystem.
+Once the
+.Nm
+module is loaded into the kernel, a node is automatically created
+for each Ethernet interface in the system.
+Each node will attempt to name itself with the same name
+as the associated interface.
+.Pp
+Three hooks are supported:
+.Va lower , upper ,
+and
+.Va orphans .
+The hook name
+.Va divert
+may be used as an alias for
+.Va lower ,
+and is provided for backward compatibility.
+In reality, the two names represent the same hook.
+.Pp
+The
+.Va lower
+hook is a connection to the raw Ethernet device.
+When connected, all incoming packets are forwarded to this hook,
+instead of being passed to the kernel for upper layer processing.
+Writing to this hook results in a raw Ethernet frame being transmitted
+by the device.
+Normal outgoing packets are not affected by
+.Va lower
+being connected.
+.Pp
+The
+.Va upper
+hook is a connection to the upper protocol layers.
+When connected, all outgoing packets are forwarded to this hook,
+instead of being transmitted by the device.
+Writing to this hook results in a raw Ethernet frame being received by
+the kernel just as if it had come in over the wire.
+Normal incoming packets are not affected by
+.Va upper
+being connected.
+.Pp
+The
+.Va orphans
+hook is equivalent to
+.Va lower ,
+except that only unrecognized packets (that would otherwise be discarded)
+are written to the hook, while other normal incoming traffic is unaffected.
+Unrecognized packets written to
+.Va upper
+will be forwarded back out to
+.Va orphans
+if connected.
+.Pp
+In all cases, frames are raw Ethernet frames with the standard
+14 byte Ethernet header (but no checksum).
+.Pp
+When no hooks are connected,
+.Va upper
+and
+.Va lower
+are in effect connected together,
+so that packets flow normally upwards and downwards.
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width ".Va orphans"
+.It Va lower
+Connection to the lower device link layer.
+.It Va upper
+Connection to the upper protocol layers.
+.It Va orphans
+Like
+.Va lower ,
+but only receives unrecognized packets.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_ETHER_GET_IFNAME Pq Li getifname
+Returns the name of the associated interface as a
+.Dv NUL Ns -terminated
+.Tn ASCII
+string.
+Normally this is the same as the name of the node.
+.It Dv NGM_ETHER_GET_IFINDEX Pq Li getifindex
+Returns the global index of the associated interface as a 32 bit integer.
+.It Dv NGM_ETHER_GET_ENADDR Pq Li getenaddr
+Returns the device's unique six byte Ethernet address.
+.It Dv NGM_ETHER_SET_ENADDR Pq Li setenaddr
+Sets the device's unique six byte Ethernet address.
+This control message is equivalent to using the
+.Dv SIOCSIFLLADDR
+.Xr ioctl 2
+system call.
+.It Dv NGM_ETHER_SET_PROMISC Pq Li setpromisc
+Enable or disable promiscuous mode.
+This message includes a single 32 bit integer flag that enables or
+disables promiscuous mode on the interface.
+Any non-zero value enables promiscuous mode.
+.It Dv NGM_ETHER_GET_PROMISC Pq Li getpromisc
+Get the current value of the node's promiscuous flag.
+The returned value is always either one or zero.
+Note that this flag reflects the node's own promiscuous setting
+and does not necessarily reflect the promiscuous state of the actual
+interface, which can be affected by other means (e.g.,
+.Xr bpf 4 ) .
+.It Dv NGM_ETHER_SET_AUTOSRC Pq Li setautosrc
+Sets the automatic source address override flag.
+This message includes a single 32 bit integer flag that causes
+all outgoing packets to have their source Ethernet
+address field overwritten with the device's unique Ethernet address.
+If this flag is set to zero, the source address in outgoing packets
+is not modified.
+The default setting for this flag is disabled.
+.It Dv NGM_ETHER_GET_AUTOSRC Pq Li getautosrc
+Get the current value of the node's source address override flag.
+The returned value is always either one or zero.
+.It Dv NGM_ETHER_ADD_MULTI Pq Li addmulti
+Join Ethernet multicast group.
+This control message is equivalent to using the
+.Dv SIOCADDMULTI
+.Xr ioctl 2
+system call.
+.It Dv NGM_ETHER_DEL_MULTI Pq Li delmulti
+Leave Ethernet multicast group.
+This control message is equivalent to using the
+.Dv SIOCDELMULTI
+.Xr ioctl 2
+system call.
+.It Dv NGM_ETHER_DETACH Pq Li detach
+Detach from underlying Ethernet interface and shut down node.
+.El
+.Sh SHUTDOWN
+Upon receipt of the
+.Dv NGM_SHUTDOWN
+control message, all hooks are disconnected, promiscuous mode is disabled,
+and the source address override flag is re-enabled,
+but the node is not removed.
+Node can be shut down only using
+.Dv NGM_ETHER_DETACH
+control message.
+If the interface itself is detached (e.g., because of PC Card removal), the
+node disappears as well.
+.Sh EXAMPLES
+This command dumps all unrecognized packets received by the
+.Dq Li fxp0
+interface to standard output decoded in hex and
+.Tn ASCII :
+.Pp
+.Dl "nghook -a fxp0: orphans"
+.Pp
+This command sends the contents of
+.Pa sample.pkt
+out the interface
+.Dq Li fxp0 :
+.Pp
+.Dl "cat sample.pkt | nghook fxp0: orphans"
+.Pp
+These commands insert an
+.Xr ng_tee 4
+node between the
+.Va lower
+and
+.Va upper
+protocol layers, which can be used for
+tracing packet flow, statistics, etc.:
+.Bd -literal -offset indent
+ngctl mkpeer fxp0: tee lower right
+ngctl connect fxp0: lower upper left
+.Ed
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netgraph 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
+.An Archie Cobbs Aq archie@FreeBSD.org
+.Sh BUGS
+The automatic KLD module loading mechanism that works for most
+other Netgraph node types does not work for the
+.Nm ether
+node type,
+because
+.Nm ether
+nodes are not created on demand; instead, they are created when
+Ethernet interfaces are attached or when the KLD is first loaded.
+Therefore, if the KLD is not statically compiled into the kernel,
+it is necessary to load the KLD manually in order to bring the
+.Nm ether
+nodes into existence.
diff --git a/share/man/man4/ng_ether_echo.4 b/share/man/man4/ng_ether_echo.4
new file mode 100644
index 0000000..2f9dd38
--- /dev/null
+++ b/share/man/man4/ng_ether_echo.4
@@ -0,0 +1,77 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_echo.8,v 1.4 1999/01/25 23:46:26 archie Exp $
+.\"
+.Dd December 24, 2008
+.Dt NG_ETHER_ECHO 4
+.Os
+.Sh NAME
+.Nm ng_ether_echo
+.Nd netgraph ether_echo node type
+.Sh SYNOPSIS
+.In netgraph/ng_ether_echo.h
+.Sh DESCRIPTION
+The
+.Nm ether_echo
+node type reflects all data and control messages back to the sender.
+It assumes (and does not check) that the packet is an ethernet frame,
+and swaps the source and destination addresses before echoing it.
+This node type is used for testing and debugging.
+.Sh HOOKS
+A
+.Nm ether_echo
+node accepts any request to connect, regardless of the hook name,
+as long as the name is unique.
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+Any other control messages are reflected back to the sender.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_hole 4 ,
+.Xr ng_echo 4 ,
+.Xr ng_ether 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 8.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_fec.4 b/share/man/man4/ng_fec.4
new file mode 100644
index 0000000..26004ee
--- /dev/null
+++ b/share/man/man4/ng_fec.4
@@ -0,0 +1,109 @@
+.\" Copyright (c) 2004 Gleb Smirnoff
+.\" 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$
+.\"
+.Dd July 22, 2004
+.Dt NG_FEC 4
+.Os
+.Sh NAME
+.Nm ng_fec
+.Nd netgraph Fast EtherChannel node
+.Sh SYNOPSIS
+.In netgraph/ng_fec.h
+.Sh DESCRIPTION
+The
+.Nm fec
+node implements Ethernet port trunking using the
+.Dq Cisco Fast EtherChannel
+protocol.
+Upon creation, a
+.Nm fec
+node creates a network interface associated with it.
+Interfaces are named
+.Dq Li fec0 ,
+.Dq Li fec1 ,
+etc.
+New nodes take the first available unit.
+.Sh HOOKS
+The
+.Nm fec
+node accepts any hooks.
+However it does not use them.
+Under normal operation, a
+.Nm fec
+node should not have any hooks.
+.Sh CONTROL MESSAGES
+Interface membership in the FEC group is configured with the following
+control messages:
+.Bl -tag -width indent
+.It Dv NGM_FEC_ADD_IFACE Pq Dq Li add_iface
+Attach interface to the FEC group.
+The target interface name is passed as a string argument.
+.It Dv NGM_FEC_DEL_IFACE Pq Dq Li del_iface
+Remove interface from the trunk.
+The target interface name is passed as a string argument.
+.El
+.Pp
+The following control messages define the forwarding method for a node:
+.Bl -tag -width indent
+.It Dv NGM_FEC_SET_MODE_MAC Pq Dq Li set_mode_mac
+Forwarding decisions will be based on the link-layer MAC address of the destination.
+.It Dv NGM_FEC_SET_MODE_INET Pq Dq Li set_mode_inet
+Forwarding decisions will be based on the IP address of the destination.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message.
+.Sh EXAMPLES
+The following example script creates an
+.Nm fec
+node, attaches four Ethernet interfaces to it and
+sets the forwarding method to be IP-address based:
+.Bd -literal -offset indent
+/usr/sbin/ngctl -f- << SEQ
+ mkpeer fec dummy fec
+ msg fec0: add_iface "dc0"
+ msg fec0: add_iface "dc1"
+ msg fec0: add_iface "dc2"
+ msg fec0: add_iface "dc3"
+ msg fec0: set_mode_inet
+SEQ
+.Ed
+.Sh SEE ALSO
+.Xr netgraph 4
+.Sh HISTORY
+The
+.Nm fec
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm fec
+node was written by
+.An "Bill Paul" Aq wpaul@FreeBSD.org .
+This manual page was written by
+.An "Gleb Smirnoff" Aq glebius@FreeBSD.org .
diff --git a/share/man/man4/ng_frame_relay.4 b/share/man/man4/ng_frame_relay.4
new file mode 100644
index 0000000..79e18e6
--- /dev/null
+++ b/share/man/man4/ng_frame_relay.4
@@ -0,0 +1,100 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_frame_relay.8,v 1.4 1999/01/25 23:46:26 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_FRAME_RELAY 4
+.Os
+.Sh NAME
+.Nm ng_frame_relay
+.Nd frame relay netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_frame_relay.h
+.Sh DESCRIPTION
+The
+.Nm frame_relay
+node type performs encapsulation, de-encapsulation, and multiplexing
+of packets using the frame relay protocol.
+It supports up to 1024 DLCI's.
+The LMI protocol is handled by a separate node type (see
+.Xr ng_lmi 4 ) .
+.Pp
+The
+.Dv downstream
+hook should be connected to the synchronous line, i.e., the switch.
+Then hooks
+.Dv dlci0 ,
+.Dv dlci1 ,
+through
+.Dv dlci1023
+are available to connect to each of the DLCI channels.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobar
+.It Dv downstream
+The connection to the synchronous line.
+.It Dv dlciX
+Here X is a decimal number from 0 to 1023.
+This hook corresponds
+to the DLCI X frame relay virtual channel.
+.El
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_lmi 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
+.Sh BUGS
+Technically, frames on DLCI X should not be transmitted to the switch
+until the LMI protocol entity on both ends has configured DLCI X as active.
+The
+.Nm
+node type ignores this restriction, and will always pass data received
+on a DLCI hook to
+.Dv downstream .
+Instead, it should query the LMI node first.
diff --git a/share/man/man4/ng_gif.4 b/share/man/man4/ng_gif.4
new file mode 100644
index 0000000..28a0588
--- /dev/null
+++ b/share/man/man4/ng_gif.4
@@ -0,0 +1,127 @@
+.\" Copyright 2000 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.
+.\"
+.\" Author: Brooks Davis <brooks@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 18, 2001
+.Dt NG_GIF 4
+.Os
+.Sh NAME
+.Nm ng_gif
+.Nd generic tunnel interface netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_gif.h
+.Sh DESCRIPTION
+The
+.Nm
+netgraph node type allows
+.Xr gif 4
+interfaces to interact with
+the
+.Xr netgraph 4
+networking subsystem.
+Once the
+.Nm
+module is loaded in the kernel, a node is automatically created
+for each
+.Xr gif 4
+interface in the system.
+Each node will attempt to name itself with the same name
+as the associated interface.
+All
+.Nm
+nodes are persistent for as long as the interface itself exists.
+.Pp
+Two hooks are supported:
+.Dv lower
+and
+.Dv orphans .
+The hook name
+.Dv divert
+may be used as an alias for
+.Dv lower ,
+and is provided for compatibility with
+.Xr ng_ether 4 .
+In reality the two names represent the same hook.
+.Pp
+The
+.Dv lower
+hook is a connection to the raw
+.Xr gif 4
+device.
+When connected, all incoming packets are diverted out this hook.
+Writing to this hook results in a raw encapsulated packet being transmitted
+by the device.
+Normal outgoing packets are not affected by
+.Dv lower
+being connected.
+.Pp
+The
+.Dv orphans
+hook is equivalent to
+.Dv lower ,
+except that only unrecognized packets (that would otherwise be discarded)
+are written to the hook, and normal incoming traffic is unaffected.
+At most one of
+.Dv orphans
+and
+.Dv lower
+may be connected at any time.
+.Pp
+In all cases, frames are raw packets with the address family of the
+packet attached to the front.
+.Pp
+When no hooks are connected, packets flow normally upwards and downwards.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width ".Dv orphans"
+.It Dv lower
+Connection to the lower device link layer.
+.It Dv orphans
+Like
+.Dv lower ,
+but only receives unrecognized packets.
+.El
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+.Sh EXAMPLES
+This command dumps all unrecognized packets received by the
+.Li gif0
+interface to standard output decoded in hex and ASCII:
+.Pp
+.Dl "nghook -a gif0: orphans"
+.Sh SEE ALSO
+.Xr gif 4 ,
+.Xr netgraph 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh AUTHORS
+.An Brooks Davis Aq brooks@FreeBSD.org
diff --git a/share/man/man4/ng_gif_demux.4 b/share/man/man4/ng_gif_demux.4
new file mode 100644
index 0000000..e549728
--- /dev/null
+++ b/share/man/man4/ng_gif_demux.4
@@ -0,0 +1,107 @@
+.\" Copyright 2000 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.
+.\"
+.\" Author: Brooks Davis <brooks@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 18, 2001
+.Dt NG_GIF_DEMUX 4
+.Os
+.Sh NAME
+.Nm ng_gif_demux
+.Nd demultiplexer for packets from
+.Xr ng_gif 4
+nodes
+.Sh SYNOPSIS
+.In netgraph/ng_gif_demux.h
+.Sh DESCRIPTION
+The
+.Nm
+netgraph node type demultiplexes the output from
+.Xr ng_gif 4
+nodes in the
+.Xr netgraph 4
+networking subsystem.
+.Pp
+The
+.Dv gif
+hook is meant to be connected to the
+.Dv lower
+or
+.Dv orphans
+hook of an
+.Xr ng_gif 4
+node.
+The
+.Dv inet , inet6 , atalk , ipx , atm , natm ,
+and
+.Dv ns
+hooks output frames of the given type when they are received on the
+.Dv gif
+hook.
+When a frame is received on one of these hooks, it is encapsulated and
+sent out the
+.Dv gif
+hook.
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width ".Dv inet6"
+.It Dv gif
+Connection to the
+.Dv lower
+or
+.Dv orphans
+hook of an
+.Xr ng_gif 4
+node.
+.It Dv inet
+Hook for input and output of IP frames.
+.It Dv inet6
+Hook for input and output of IPv6 frames.
+.It Dv atalk
+Hook for input and output of AppleTalk frames.
+.It Dv ipx
+Hook for input and output of IPX frames.
+.It Dv atm
+Hook for input and output of ATM frames.
+.It Dv natm
+Hook for input and output of NATM frames.
+.It Dv ns
+Hook for input and output of NS frames.
+.El
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+.Sh SEE ALSO
+.Xr gif 4 ,
+.Xr netgraph 4 ,
+.Xr netintro 4 ,
+.Xr ng_gif 4 ,
+.Xr ifconfig 8 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh AUTHORS
+.An Brooks Davis Aq brooks@FreeBSD.org
diff --git a/share/man/man4/ng_h4.4 b/share/man/man4/ng_h4.4
new file mode 100644
index 0000000..cda15e4
--- /dev/null
+++ b/share/man/man4/ng_h4.4
@@ -0,0 +1,123 @@
+.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ng_h4.4,v 1.2 2003/05/21 19:37:35 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd June 14, 2002
+.Dt NG_H4 4
+.Os
+.Sh NAME
+.Nm ng_h4
+.Nd Netgraph node type that is also an H4 line discipline
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/bluetooth/include/ng_h4.h
+.Sh DESCRIPTION
+The
+.Nm h4
+node type is both a persistent Netgraph node type and a H4 line
+discipline.
+It implements a Bluetooth HCI UART transport layer as
+per chapter H4 of the Bluetooth Specification Book v1.1.
+A new node is created when the corresponding line discipline,
+.Dv H4DISC ,
+is registered on a tty device (see
+.Xr tty 4 ) .
+.Pp
+The node has a single hook called
+.Dv hook .
+Incoming bytes received on the tty device are re-assembled into
+HCI frames (according to the length).
+Full HCI frames are sent out on the hook.
+HCI frames received on
+.Dv hook
+are transmitted out on the tty device.
+No modification to the data is performed in either direction.
+While the line discipline is installed on a tty, the normal
+read and write operations are unavailable, returning
+.Er EIO .
+.Pp
+Information about the node is available via the netgraph
+.Xr ioctl 2
+command
+.Dv NGIOCGINFO .
+This command returns a
+.Vt "struct nodeinfo"
+similar to the
+.Dv NGM_NODEINFO
+.Xr netgraph 4
+control message.
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width indent
+.It Dv hook
+single HCI frame contained in single
+.Vt mbuf
+structure.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_H4_NODE_RESET
+Reset the node.
+.It Dv NGM_H4_NODE_GET_STATE
+Returns current receiving state for the node.
+.It Dv NGM_H4_NODE_GET_DEBUG
+Returns an integer containing the current debug level for the node.
+.It Dv NGM_H4_NODE_SET_DEBUG
+This command takes an integer argument and sets current debug level
+for the node.
+.It Dv NGM_H4_NODE_GET_QLEN
+Returns current length of outgoing queue for the node.
+.It Dv NGM_H4_NODE_SET_QLEN
+This command takes an integer argument and sets maximum length of
+outgoing queue for the node.
+.It Dv NGM_H4_NODE_GET_STAT
+Returns various statistic information for the node, such as: number of
+bytes (frames) sent, number of bytes (frames) received and number of
+input (output) errors.
+.It Dv NGM_H4_NODE_RESET_STAT
+Reset all statistic counters to zero.
+.El
+.Sh SHUTDOWN
+This node shuts down when the corresponding device is closed
+(or the line discipline is uninstalled on the device).
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr netgraph 4 ,
+.Xr tty 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm h4
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
+.Sh BUGS
+This node still uses
+.Xr spltty 9
+to lock tty layer.
+This is wrong.
diff --git a/share/man/man4/ng_hci.4 b/share/man/man4/ng_hci.4
new file mode 100644
index 0000000..28de180
--- /dev/null
+++ b/share/man/man4/ng_hci.4
@@ -0,0 +1,387 @@
+.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ng_hci.4,v 1.3 2003/05/21 19:37:35 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd June 25, 2002
+.Dt NG_HCI 4
+.Os
+.Sh NAME
+.Nm ng_hci
+.Nd Netgraph node type that is also a Bluetooth Host Controller Interface
+(HCI) layer
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/bluetooth/include/ng_hci.h
+.Sh DESCRIPTION
+The
+.Nm hci
+node type is a Netgraph node type that implements Bluetooth Host Controller
+Interface (HCI) layer as per chapter H1 of the Bluetooth Specification Book
+v1.1.
+.Sh INTRODUCTION TO BLUETOOTH
+Bluetooth is a short-range radio link intended to replace the cable(s)
+connecting portable and/or fixed electronic devices.
+Bluetooth operates in the unlicensed ISM band at 2.4 GHz.
+The Bluetooth protocol uses a
+combination of circuit and packet switching.
+Bluetooth can support an
+asynchronous data channel, up to three simultaneous synchronous voice
+channels, or a channel which simultaneously supports asynchronous data
+and synchronous voice.
+Each voice channel supports a 64 kb/s synchronous
+(voice) channel in each direction.
+The asynchronous channel can support
+maximal 723.2 kb/s asymmetric (and still up to 57.6 kb/s in the return
+direction), or 433.9 kb/s symmetric.
+.Pp
+The Bluetooth system provides a point-to-point connection (only two
+Bluetooth units involved), or a point-to-multipoint connection.
+In the point-to-multipoint connection,
+the channel is shared among several Bluetooth units.
+Two or more units sharing the same channel form a
+.Dq piconet .
+One Bluetooth unit acts as the master of the piconet, whereas the other
+unit(s) acts as slave(s).
+Up to seven slaves can be active in the piconet.
+In addition, many more slaves can remain locked to the master in a so-called
+parked state.
+These parked slaves cannot be active on the channel, but remain
+synchronized to the master.
+Both for active and parked slaves, the channel
+access is controlled by the master.
+.Pp
+Multiple piconets with overlapping coverage areas form a
+.Dq scatternet .
+Each piconet can only have a single master.
+However, slaves can participate
+in different piconets on a time-division multiplex basis.
+In addition, a master in one piconet can be a slave in another piconet.
+The piconets shall not be frequency-synchronized.
+Each piconet has its own hopping channel.
+.Ss Time Slots
+The channel is divided into time slots, each 625 usec in length.
+The time
+slots are numbered according to the Bluetooth clock of the piconet master.
+The slot numbering ranges from 0 to 2^27 -1 and is cyclic with a cycle length
+of 2^27.
+In the time slots, master and slave can transmit packets.
+.Ss SCO Link
+The SCO link is a symmetric, point-to-point link between the master and a
+specific slave.
+The SCO link reserves slots and can therefore be considered
+as a circuit-switched connection between the master and the slave.
+The SCO link typically supports time-bounded information like voice.
+The master can
+support up to three SCO links to the same slave or to different slaves.
+A slave can support up to three SCO links from the same master, or two SCO
+links if the links originate from different masters.
+SCO packets are never retransmitted.
+.Ss ACL Link
+In the slots not reserved for SCO links, the master can exchange packets
+with any slave on a per-slot basis.
+The ACL link provides a packet-switched
+connection between the master and all active slaves participating in the
+piconet.
+Both asynchronous and isochronous services are supported.
+Between a master and a slave only a single ACL link can exist.
+For most ACL packets,
+packet retransmission is applied to assure data integrity.
+.Sh HOST CONTROLLER INTERFACE (HCI)
+The HCI provides a command interface to the baseband controller and link
+manager, and access to hardware status and control registers.
+This interface
+provides a uniform method of accessing the Bluetooth baseband capabilities.
+.Pp
+The HCI layer on the Host exchanges data and commands with the HCI firmware
+on the Bluetooth hardware.
+The Host Controller Transport Layer (i.e., physical
+bus) driver provides both HCI layers with the ability to exchange information
+with each other.
+.Pp
+The Host will receive asynchronous notifications of HCI events independent
+of which Host Controller Transport Layer is used.
+HCI events are used for
+notifying the Host when something occurs.
+When the Host discovers that an
+event has occurred it will then parse the received event packet to determine
+which event occurred.
+The next sections specify the HCI packet formats.
+.Ss HCI Command Packet
+.Bd -literal -offset indent
+#define NG_HCI_CMD_PKT 0x01
+typedef struct {
+ u_int8_t type; /* MUST be 0x1 */
+ u_int16_t opcode; /* OpCode */
+ u_int8_t length; /* parameter(s) length in bytes */
+} __attribute__ ((packed)) ng_hci_cmd_pkt_t;
+.Ed
+.Pp
+The HCI command packet is used to send commands to the Host Controller
+from the Host.
+When the Host Controller completes most of the commands,
+a Command Complete event is sent to the Host.
+Some commands do not receive
+a Command Complete event when they have been completed.
+Instead, when the
+Host Controller receives one of these commands the Host Controller sends
+a Command Status event back to the Host when it has begun to execute the
+command.
+Later on, when the actions associated with the command have finished,
+an event that is associated with the sent command will be sent by the Host
+Controller to the Host.
+.Ss HCI Event Packet
+.Bd -literal -offset indent
+#define NG_HCI_EVENT_PKT 0x04
+typedef struct {
+ u_int8_t type; /* MUST be 0x4 */
+ u_int8_t event; /* event */
+ u_int8_t length; /* parameter(s) length in bytes */
+} __attribute__ ((packed)) ng_hci_event_pkt_t;
+.Ed
+.Pp
+The HCI event packet is used by the Host Controller to notify the Host
+when events occur.
+.Ss HCI ACL Data Packet
+.Bd -literal -offset indent
+#define NG_HCI_ACL_DATA_PKT 0x02
+typedef struct {
+ u_int8_t type; /* MUST be 0x2 */
+ u_int16_t con_handle; /* connection handle + PB + BC flags */
+ u_int16_t length; /* payload length in bytes */
+} __attribute__ ((packed)) ng_hci_acldata_pkt_t;
+.Ed
+.Pp
+HCI ACL data packets are used to exchange ACL data between the Host and
+Host Controller.
+.Ss HCI SCO Data Packet
+.Bd -literal -offset indent
+#define NG_HCI_SCO_DATA_PKT 0x03
+typedef struct {
+ u_int8_t type; /* MUST be 0x3 */
+ u_int16_t con_handle; /* connection handle + reserved bits */
+ u_int8_t length; /* payload length in bytes */
+} __attribute__ ((packed)) ng_hci_scodata_pkt_t;
+.Ed
+.Pp
+HCI SCO data packets are used to exchange SCO data between the Host and
+Host Controller.
+.Sh HCI INITIALIZATION
+On initialization, HCI control application must issue the following HCI
+commands (in any order).
+.Bl -tag -width indent
+.It Dv Read_BD_ADDR
+To obtain BD_ADDR of the Bluetooth unit.
+.It Dv Read_Local_Supported_Features
+To obtain the list of features supported by Bluetooth unit.
+.It Dv Read_Buffer_Size
+To determine the maximum size of HCI ACL and SCO HCI data packets (excluding
+header) that can be sent from the Host to the Host Controller.
+There are also
+two additional return parameters that specify the total number of HCI ACL and
+SCO data packets that the Host Controller can have waiting for transmission in
+its buffers.
+.El
+.Pp
+As soon as HCI initialization has been successfully performed, HCI control
+application must turn on
+.Dq inited
+bit for the node.
+Once HCI node has been initialized all upstream hooks
+will receive a
+.Dv NGM_HCI_NODE_UP
+Netgraph message defined as follows.
+.Bd -literal -offset indent
+#define NGM_HCI_NODE_UP 112 /* HCI -> Upper */
+typedef struct {
+ u_int16_t pkt_size; /* max. ACL/SCO packet size (w/o hdr) */
+ u_int16_t num_pkts; /* ACL/SCO packet queue size */
+ u_int16_t reserved; /* place holder */
+ bdaddr_t bdaddr; /* bdaddr */
+} ng_hci_node_up_ep;
+.Ed
+.Sh HCI FLOW CONTROL
+HCI layer performs flow control on baseband connection basis (i.e., ACL and
+SCO link).
+Each baseband connection has
+.Dq "connection handle"
+and queue of outgoing data packets.
+Upper layers protocols are allowed to
+send up to
+.Dv ( num_pkts
+\-
+.Dv pending )
+packets at one time.
+HCI layer will send
+.Dv NGM_HCI_SYNC_CON_QUEUE
+Netgraph messages to inform upper layers about current queue state for each
+connection handle.
+The
+.Dv NGM_HCI_SYNC_CON_QUEUE
+Netgraph message is defined as follows.
+.Bd -literal -offset indent
+#define NGM_HCI_SYNC_CON_QUEUE 113 /* HCI -> Upper */
+typedef struct {
+ u_int16_t con_handle; /* connection handle */
+ u_int16_t completed; /* number of completed packets */
+} ng_hci_sync_con_queue_ep;
+.Ed
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width indent
+.It Dv drv
+Bluetooth Host Controller Transport Layer hook.
+Single HCI packet contained in single
+.Vt mbuf
+structure.
+.It Dv acl
+Upper layer protocol/node is connected to the hook.
+Single HCI ACL data packet contained in single
+.Vt mbuf
+structure.
+.It Dv sco
+Upper layer protocol/node is connected to the hook.
+Single HCI SCO data packet contained in single
+.Vt mbuf
+structure.
+.It Dv raw
+Raw hook.
+Every HCI frame (including HCI command frame) that goes in
+or out will be delivered to the hook.
+Usually the Bluetooth raw HCI socket layer is connected to the hook.
+Single HCI frame contained in single
+.Vt mbuf
+structure.
+.El
+.Sh BLUETOOTH UPPER LAYER PROTOCOLS INTERFACE (LP CONTROL MESSAGES)
+.Bl -tag -width indent
+.It Dv NGM_HCI_LP_CON_REQ
+Requests the lower protocol to create a connection.
+If a physical link
+to the remote device does not exist, this message must be sent to the lower
+protocol (baseband) to establish the physical connection.
+.It Dv NGM_HCI_LP_DISCON_REQ
+Requests the lower protocol (baseband) to terminate a connection.
+.It Dv NGM_HCI_LP_CON_CFM
+Confirms success or failure of the
+.Dv NGM_HCI_LP_CON_REQ
+request to establish a lower layer (baseband) connection.
+This includes passing the authentication challenge if authentication is
+required to establish the physical link.
+.It Dv NGM_HCI_LP_CON_IND
+Indicates the lower protocol (baseband) has successfully established
+incoming connection.
+.It Dv NGM_HCI_LP_CON_RSP
+A response accepting or rejecting the previous connection indication request.
+.It Dv NGM_HCI_LP_DISCON_IND
+Indicates the lower protocol (baseband) has terminated connection.
+This could be a response to
+.Dv NGM_HCI_LP_DISCON_REQ
+or a timeout event.
+.It Dv NGM_HCI_LP_QOS_REQ
+Requests the lower protocol (baseband) to accommodate a particular QoS
+parameter set.
+.It Dv NGM_HCI_LP_QOS_CFM
+Confirms success or failure of the request for a given quality of service.
+.It Dv NGM_HCI_LP_QOS_IND
+Indicates the lower protocol (baseband) has detected a violation of the QoS
+agreement.
+.El
+.Sh NETGRAPH CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_HCI_NODE_GET_STATE
+Returns current state for the node.
+.It Dv NGM_HCI_NODE_INIT
+Turn on
+.Dq inited
+bit for the node.
+.It Dv NGM_HCI_NODE_GET_DEBUG
+Returns an integer containing the current debug level for the node.
+.It Dv NGM_HCI_NODE_SET_DEBUG
+This command takes an integer argument and sets current debug level
+for the node.
+.It Dv NGM_HCI_NODE_GET_BUFFER
+Returns current state of data buffers.
+.It Dv NGM_HCI_NODE_GET_BDADDR
+Returns BD_ADDR as cached in the node.
+.It Dv NGM_HCI_NODE_GET_FEATURES
+Returns the list of features supported by hardware (as cached by the node).
+.It Dv NGM_HCI_NODE_GET_NEIGHBOR_CACHE
+Returns content of the neighbor cache.
+.It Dv NGM_HCI_NODE_FLUSH_NEIGHBOR_CACHE
+Remove all neighbor cache entries.
+.It Dv NGM_HCI_NODE_GET_CON_LIST
+Returns list of active baseband connections (i.e., ACL and SCO links).
+.It Dv NGM_HCI_NODE_GET_STAT
+Returns various statistic counters.
+.It Dv NGM_HCI_NODE_RESET_STAT
+Resets all statistic counters to zero.
+.It NGM_HCI_NODE_SET_LINK_POLICY_SETTINGS_MASK
+Sets current link policy settings mask.
+After the new ACL connection is
+created the HCI node will try set link policy for the ACL connection.
+By default, every supported Link Manager (LM) mode will be enabled.
+User can
+override this by setting link policy settings mask which specifies LM
+modes to be enabled.
+.It NGM_HCI_NODE_GET_LINK_POLICY_SETTINGS_MASK
+Returns current link policy settings mask.
+.It NGM_HCI_NODE_SET_PACKET_MASK
+Sets current packet mask.
+When new baseband (ACL or SCO) connection is
+created the HCI node will specify every packet type supported by the device.
+User can override this by setting packet mask which specifies packet types
+to be used for new baseband connections.
+.It NGM_HCI_NODE_GET_PACKET_MASK
+Returns current packet mask.
+.It NGM_HCI_NODE_SET_ROLE_SWITCH
+Sets the value of the role switch.
+Role switch is enabled when this value is not zero.
+This is the default state.
+Note that actual role switch at Bluetooth link level will only be performed if
+hardware supports role switch and it was enabled.
+.It NGM_HCI_NODE_GET_ROLE_SWITCH
+Returns the value of the role switch for the node.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or
+when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr hccontrol 8 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm hci
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
+.Sh BUGS
+Most likely.
+Please report if found.
diff --git a/share/man/man4/ng_hole.4 b/share/man/man4/ng_hole.4
new file mode 100644
index 0000000..8089f54
--- /dev/null
+++ b/share/man/man4/ng_hole.4
@@ -0,0 +1,91 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_hole.8,v 1.4 1999/01/25 23:46:26 archie Exp $
+.\"
+.Dd May 19, 2004
+.Dt NG_HOLE 4
+.Os
+.Sh NAME
+.Nm ng_hole
+.Nd netgraph discard node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_hole.h
+.Sh DESCRIPTION
+The
+.Nm hole
+node type silently discards all data and control messages it receives.
+This type is used for testing and debugging.
+.Sh HOOKS
+A
+.Nm
+node accepts any request to connect, regardless of the hook name,
+as long as the name is unique.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the
+following:
+.Bl -tag -width indent
+.It Dv NGM_BPF_GET_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and returns the statistics
+associated with the hook as a
+.Vt "struct ng_hole_hookstat" .
+.It Dv NGM_BPF_CLR_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and clears the statistics
+associated with the hook.
+.It Dv NGM_BPF_GETCLR_STATS
+This command is identical to
+.Dv NGM_BPF_GET_STATS ,
+except that the statistics are also atomically cleared.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_echo 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_hub.4 b/share/man/man4/ng_hub.4
new file mode 100644
index 0000000..a1ad068
--- /dev/null
+++ b/share/man/man4/ng_hub.4
@@ -0,0 +1,66 @@
+.\" Copyright (c) 2004 Ruslan Ermilov
+.\" 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$
+.\"
+.Dd April 17, 2004
+.Dt NG_HUB 4
+.Os
+.Sh NAME
+.Nm ng_hub
+.Nd packet distribution netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_hub.h
+.Sh DESCRIPTION
+The
+.Nm hub
+node type provides a simple mechanism for distributing packets over
+several links.
+Packets received on any of the hooks are forwarded out the other hooks.
+Packets are not altered in any way.
+.Sh HOOKS
+A
+.Nm hub
+node accepts any request to connect, regardless of the hook name,
+as long as the name is unique.
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_bridge 4 ,
+.Xr ng_ether 4 ,
+.Xr ng_one2many 4 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh HISTORY
+The
+.Nm
+node type appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An Ruslan Ermilov Aq ru@FreeBSD.org
diff --git a/share/man/man4/ng_iface.4 b/share/man/man4/ng_iface.4
new file mode 100644
index 0000000..90563b8
--- /dev/null
+++ b/share/man/man4/ng_iface.4
@@ -0,0 +1,172 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_iface.8,v 1.5 1999/01/25 23:46:26 archie Exp $
+.\"
+.Dd October 28, 2005
+.Dt NG_IFACE 4
+.Os
+.Sh NAME
+.Nm ng_iface
+.Nd interface netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_iface.h
+.Sh DESCRIPTION
+An
+.Nm iface
+node is both a netgraph node and a system networking interface.
+When an
+.Nm iface
+node is created, a new interface appears which is accessible via
+.Xr ifconfig 8 .
+.Nm Iface
+node interfaces are named
+.Dv ng0 ,
+.Dv ng1 ,
+etc.
+When a node is shutdown, the corresponding interface is removed
+and the interface name becomes available for reuse by future
+.Nm iface
+nodes; new nodes always take the first unused interface.
+The node itself is assigned the same name as its interface, unless the name
+already exists, in which case the node remains unnamed.
+.Pp
+An
+.Nm iface
+node has a single hook corresponding to each supported protocol.
+Packets transmitted via the interface flow out the corresponding
+protocol-specific hook.
+Similarly, packets received on a hook appear on the interface as
+packets received into the corresponding protocol stack.
+The currently supported protocols are IP, IPv6, AppleTalk, IPX, ATM,
+NATM, and NS.
+.Pp
+An
+.Nm iface
+node can be configured as a point-to-point interface or a broadcast interface.
+The configuration can only be changed when the interface is down.
+The default mode is point-to-point.
+.Pp
+.Nm Iface
+nodes support the Berkeley Packet Filter (BPF).
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobar
+.It Dv inet
+Transmission and reception of IP packets.
+.It Dv inet6
+Transmission and reception of IPv6 packets.
+.It Dv atalk
+Transmission and reception of AppleTalk packets.
+.It Dv ipx
+Transmission and reception of IPX packets.
+.It Dv atm
+Transmission and reception of ATM packets.
+.It Dv natm
+Transmission and reception of NATM packets.
+.It Dv ns
+Transmission and reception of NS packets.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_IFACE_GET_IFNAME
+Returns the name of the associated interface as a
+.Dv NUL Ns -terminated
+.Tn ASCII
+string.
+Normally this is the same as the name of the node.
+.It Dv NGM_IFACE_GET_IFINDEX
+Returns the global index of the associated interface as a 32 bit integer.
+.It Dv NGM_IFACE_POINT2POINT
+Set the interface to point-to-point mode.
+The interface must not currently be up.
+.It Dv NGM_IFACE_BROADCAST
+Set the interface to broadcast mode.
+The interface must not currently be up.
+.It Dv NGM_CISCO_GET_IPADDR
+This message is defined by the
+.Xr ng_cisco 4
+node type; see
+.Xr ng_cisco 4
+for a description.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message.
+The associated interface is removed and becomes available
+for use by future
+.Nm iface
+nodes.
+.Pp
+Unlike most other node types, an
+.Nm iface
+node does
+.Em not
+go away when all hooks have been disconnected; rather, and explicit
+.Dv NGM_SHUTDOWN
+control message is required.
+.Sh ALTQ Support
+The
+.Nm
+interface supports ALTQ bandwidth management feature.
+However,
+.Nm
+is a special case, since it is not a physical interface with limited bandwidth.
+One should not turn ALTQ on
+.Nm
+if the latter corresponds to some tunneled connection, e.g.\& PPPoE or PPTP.
+In this case, ALTQ should be configured on the interface that is used to
+transmit the encapsulated packets.
+In case when your graph ends up with some kind of serial line, either
+synchronous or modem, the
+.Nm
+is the right place to turn ALTQ on.
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr bpf 4 ,
+.Xr netgraph 4 ,
+.Xr ng_cisco 4 ,
+.Xr ifconfig 8 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm iface
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
diff --git a/share/man/man4/ng_ip_input.4 b/share/man/man4/ng_ip_input.4
new file mode 100644
index 0000000..430f43c
--- /dev/null
+++ b/share/man/man4/ng_ip_input.4
@@ -0,0 +1,102 @@
+.\" Copyright 2001 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.
+.\"
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Brooks Davis <brooks@FreeBSD.org>
+.\" Derived from: ng_hole.4
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 27, 2001
+.Dt NG_IP_INPUT 4
+.Os
+.Sh NAME
+.Nm ng_ip_input
+.Nd netgraph IP input node type
+.Sh SYNOPSIS
+.In netgraph/ng_ip_input.h
+.Sh DESCRIPTION
+The
+.Nm ip_input
+node type takes all received packets and queues them into the IP in
+input processing subsystem.
+.Sh HOOKS
+An
+.Nm
+node accepts any request to connect, regardless of the hook name,
+as long as the name is unique.
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+Other control messages are silently discarded.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Brooks Davis Aq brooks@FreeBSD.org
+.Sh BUGS
+The
+.Nm
+node type should probably keep some sort of statistics.
diff --git a/share/man/man4/ng_ipfw.4 b/share/man/man4/ng_ipfw.4
new file mode 100644
index 0000000..ee7d9b0
--- /dev/null
+++ b/share/man/man4/ng_ipfw.4
@@ -0,0 +1,127 @@
+.\" Copyright (c) 2005 Gleb Smirnoff
+.\" 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$
+.\"
+.Dd February 5, 2005
+.Dt NG_IPFW 4
+.Os
+.Sh NAME
+.Nm ng_ipfw
+.Nd interface between netgraph and IP firewall
+.Sh SYNOPSIS
+.In netgraph/ng_ipfw.h
+.Sh DESCRIPTION
+The
+.Nm ipfw
+node implements interface between
+.Xr ipfw 4
+and
+.Xr netgraph 4
+subsystems.
+.Sh HOOKS
+The
+.Nm ipfw
+node supports an arbitrary number of hooks,
+which must be named using only numeric characters.
+.Sh OPERATION
+Once the
+.Nm
+module is loaded into the kernel, a single node named
+.Va ipfw
+is automatically created.
+No more
+.Nm ipfw
+nodes can be created.
+Once destroyed, the only way to recreate the node is to reload the
+.Nm
+module.
+.Pp
+Packets can be injected into
+.Xr netgraph 4
+using either the
+.Cm netgraph
+or
+.Cm ngtee
+commands of the
+.Xr ipfw 8
+utility.
+These commands require a numeric cookie to be supplied as an argument.
+Packets are sent out of the hook whose name equals the cookie value.
+If no hook matches, packets are discarded.
+Packets injected via the
+.Cm netgraph
+command are tagged with
+.Vt "struct ng_ipfw_tag" .
+This tag contains information that helps the packet to re-enter
+.Xr ipfw 4
+processing, should the packet come back from
+.Xr netgraph 4
+to
+.Xr ipfw 4 .
+.Bd -literal -offset 4n
+struct ng_ipfw_tag {
+ struct m_tag mt; /* tag header */
+ struct ip_fw *rule; /* matching rule */
+ struct ifnet *ifp; /* interface, for ip_output */
+ int dir; /* packet direction */
+#define NG_IPFW_OUT 0
+#define NG_IPFW_IN 1
+ int flags; /* flags, for ip_output() */
+};
+.Ed
+.Pp
+Packets received by a node from
+.Xr netgraph 4
+must be tagged with
+.Vt "struct ng_ipfw_tag"
+tag.
+Packets re-enter IP firewall processing at the next rule.
+If no tag is supplied, packets are discarded.
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message.
+Do not do this, since the new
+.Nm ipfw
+node can only be created by reloading the
+.Nm
+module.
+.Sh SEE ALSO
+.Xr ipfw 4 ,
+.Xr netgraph 4 ,
+.Xr ipfw 8 ,
+.Xr mbuf_tags 9
+.Sh HISTORY
+The
+.Nm ipfw
+node type was implemented in
+.Fx 6.0 .
+.Sh AUTHORS
+The
+.Nm ipfw
+node was written by
+.An "Gleb Smirnoff" Aq glebius@FreeBSD.org .
diff --git a/share/man/man4/ng_ksocket.4 b/share/man/man4/ng_ksocket.4
new file mode 100644
index 0000000..d20ee46
--- /dev/null
+++ b/share/man/man4/ng_ksocket.4
@@ -0,0 +1,236 @@
+.\" Copyright (c) 1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 28, 2005
+.Dt NG_KSOCKET 4
+.Os
+.Sh NAME
+.Nm ng_ksocket
+.Nd kernel socket netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_ksocket.h
+.Sh DESCRIPTION
+A
+.Nm ksocket
+node is both a netgraph node and a
+.Bx
+socket.
+The
+.Nm
+node type allows one to open a socket inside the kernel and have
+it appear as a Netgraph node.
+The
+.Nm
+node type is the reverse of the socket node type (see
+.Xr ng_socket 4 ) :
+whereas the socket node type enables the user-level manipulation (via
+a socket) of what is normally a kernel-level entity (the associated
+Netgraph node), the
+.Nm
+node type enables the kernel-level manipulation (via a Netgraph node) of
+what is normally a user-level entity (the associated socket).
+.Pp
+A
+.Nm
+node allows at most one hook connection.
+Connecting to the node is
+equivalent to opening the associated socket.
+The name given to the hook
+determines what kind of socket the node will open (see below).
+When the hook is disconnected and/or the node is shutdown, the
+associated socket is closed.
+.Sh HOOKS
+This node type supports a single hook connection at a time.
+The name of the hook must be of the form
+.Em <family>/<type>/<proto> ,
+where the
+.Em family ,
+.Em type ,
+and
+.Em proto
+are the decimal equivalent of the same arguments to
+.Xr socket 2 .
+Alternately, aliases for the commonly used values are accepted as
+well.
+For example
+.Dv inet/dgram/udp
+is a more readable but equivalent version of
+.Dv 2/2/17 .
+.Pp
+Data received into socket is sent out via hook.
+Data received on hook is sent out from socket, if the latter is
+connected (an
+.Dv NGM_KSOCKET_CONNECT
+was sent to node before).
+If socket is not connected, destination
+.Vt "struct sockaddr"
+must be supplied in an mbuf tag with cookie
+.Dv NGM_KSOCKET_COOKIE
+and type
+.Dv NG_KSOCKET_TAG_SOCKADDR
+attached to data.
+Otherwise
+.Nm
+will return
+.Er ENOTCONN
+to sender.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_KSOCKET_BIND
+This functions exactly like the
+.Xr bind 2
+system call.
+The
+.Vt "struct sockaddr"
+socket address parameter should be supplied as an argument.
+.It Dv NGM_KSOCKET_LISTEN
+This functions exactly like the
+.Xr listen 2
+system call.
+The backlog parameter (a single 32 bit
+.Dv int )
+should be supplied as an argument.
+.It Dv NGM_KSOCKET_CONNECT
+This functions exactly like the
+.Xr connect 2
+system call.
+The
+.Vt "struct sockaddr"
+destination address parameter should be supplied as an argument.
+.It Dv NGM_KSOCKET_ACCEPT
+Equivalent to the
+.Xr accept 2
+system call on a non-blocking socket.
+If there is a pending connection on the queue,
+a new socket and a corresponding cloned node are created.
+Returned are the cloned node's ID and a peer name (as
+.Vt "struct sockaddr" ) .
+If there are no pending connections,
+this control message returns nothing,
+and a connected node will receive the above message asynchronously,
+when a connection is established.
+.Pp
+A cloned node supports a single hook with an arbitrary name.
+If not connected, a node disappears when its parent node is destroyed.
+Once connected, it becomes an independent node.
+.It Dv NGM_KSOCKET_GETNAME
+Equivalent to the
+.Xr getsockname 2
+system call.
+The name is returned as a
+.Vt "struct sockaddr"
+in the arguments field of the reply.
+.It Dv NGM_KSOCKET_GETPEERNAME
+Equivalent to the
+.Xr getpeername 2
+system call.
+The name is returned as a
+.Vt "struct sockaddr"
+in the arguments field of the reply.
+.It Dv NGM_KSOCKET_SETOPT
+Equivalent to the
+.Xr setsockopt 2
+system call, except that the option name, level, and value are passed in a
+.Vt "struct ng_ksocket_sockopt" .
+.It Dv NGM_KSOCKET_GETOPT
+Equivalent to the
+.Xr getsockopt 2
+system call, except that the option is passed in a
+.Vt "struct ng_ksocket_sockopt" .
+When sending this command, the
+.Dv value
+field should be empty; upon return, it will contain the
+retrieved value.
+.El
+.Sh ASCII FORM CONTROL MESSAGES
+For control messages that pass a
+.Vt "struct sockaddr"
+in the argument field, the normal
+.Tn ASCII
+equivalent of the C structure
+is an acceptable form.
+For the
+.Dv PF_INET
+and
+.Dv PF_LOCAL
+address families, a more convenient form is also used, which is
+the protocol family name, followed by a slash, followed by the actual
+address.
+For
+.Dv PF_INET ,
+the address is an IP address followed by an optional colon and port number.
+For
+.Dv PF_LOCAL ,
+the address is the pathname as a doubly quoted string.
+.Pp
+Examples:
+.Bl -tag -width XXXXXXXXXX
+.It Dv PF_LOCAL
+local/"/tmp/foo.socket"
+.It Dv PF_INET
+inet/192.168.1.1:1234
+.It Other
+.Dv "\&{ family=16 len=16 data=[0x70 0x00 0x01 0x23] \&}"
+.El
+.Pp
+For control messages that pass a
+.Vt "struct ng_ksocket_sockopt" ,
+the normal
+.Tn ASCII
+form for that structure is used.
+In the future, more
+convenient encoding of the more common socket options may be supported.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when the hook is disconnected.
+Shutdown of the node closes the associated socket.
+.Sh SEE ALSO
+.Xr socket 2 ,
+.Xr netgraph 4 ,
+.Xr ng_socket 4 ,
+.Xr ngctl 8 ,
+.Xr mbuf_tags 9 ,
+.Xr socket 9
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
diff --git a/share/man/man4/ng_l2cap.4 b/share/man/man4/ng_l2cap.4
new file mode 100644
index 0000000..bd050fc
--- /dev/null
+++ b/share/man/man4/ng_l2cap.4
@@ -0,0 +1,423 @@
+.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ng_l2cap.4,v 1.4 2003/09/14 23:37:52 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd July 4, 2002
+.Dt NG_L2CAP 4
+.Os
+.Sh NAME
+.Nm ng_l2cap
+.Nd Netgraph node type that implements Bluetooth Logical Link Control and
+Adaptation Protocol (L2CAP)
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/bluetooth/include/ng_hci.h
+.In netgraph/bluetooth/include/ng_l2cap.h
+.Sh DESCRIPTION
+The
+.Nm l2cap
+node type is a Netgraph node type that implements Bluetooth Logical Link
+Control and Adaptation Protocol as per chapter D of the Bluetooth Specification
+Book v1.1.
+.Pp
+L2CAP provides connection-oriented and connectionless data services to upper
+layer protocols with protocol multiplexing capability, segmentation and
+reassembly operation, and group abstractions.
+L2CAP permits higher level
+protocols and applications to transmit and receive L2CAP data packets up to
+64 kilobytes in length.
+.Ss L2CAP Assumptions
+.Bl -enum -offset indent
+.It
+The ACL link between two units is set up.
+The Baseband provides orderly
+delivery of data packets, although there might be individual packet corruption
+and duplicates.
+No more than one ACL link exists between any two devices.
+.It
+The Baseband always provides the impression of full-duplex communication
+channels.
+This does not imply that all L2CAP communications are bi-directional.
+Multicasts and unidirectional traffic (e.g., video) do not require duplex
+channels.
+.It
+L2CAP provides a reliable channel using the mechanisms available at the
+Baseband layer.
+The Baseband always performs data integrity checks when
+requested and resends data until it has been successfully acknowledged or
+a timeout occurs.
+As acknowledgements may be lost, timeouts may
+occur even after the data has been successfully sent.
+.El
+.Sh L2CAP GENERAL OPERATION
+The Logical Link Control and Adaptation Protocol (L2CAP) is based around the
+concept of
+.Dq channels .
+Each channel is bound to a single protocol in a many-to-one fashion.
+Multiple
+channels can be bound to the same protocol, but a channel cannot be bound to
+multiple protocols.
+Each L2CAP packet received on a channel is directed to
+the appropriate higher level protocol.
+.Pp
+Each one of the end-points of an L2CAP channel is referred to by a channel
+identifier.
+Channel identifiers (CIDs) are local names representing a logical
+channel end-point on the device.
+Identifiers from 0x0001 to 0x003F are reserved
+for specific L2CAP functions.
+The null identifier (0x0000) is defined as an
+illegal identifier and must never be used as a destination end-point.
+All L2CAP signalling commands are sent to CID 0x0001.
+CID 0x0002 is reserved for group-oriented channel.
+The same CID must not be reused as a local L2CAP
+channel endpoint for multiple simultaneous L2CAP channels between a local
+device and some remote device.
+.Pp
+CID assignment is relative to a particular device and a device can assign CIDs
+independently from other devices.
+Thus, even if the same CID value has been
+assigned to (remote) channel endpoints by several remote devices connected
+to a single local device, the local device can still uniquely associate each
+remote CID with a different device.
+.Ss Channel Operational States
+.Bl -tag -width indent
+.It Dv NG_L2CAP_CLOSED
+In this state, there is no channel associated with this CID.
+This is the only
+state when a link level connection (Baseband) may not exist.
+Link disconnection
+forces all other states into the
+.Dv NG_L2CAP_CLOSED
+state.
+.It Dv NG_L2CAP_W4_L2CAP_CON_RSP
+In this state, the CID represents a local end-point and an L2CAP Connect
+Request message has been sent referencing this endpoint and it is now waiting
+for the corresponding L2CAP Connect Response message.
+.It Dv NG_L2CAP_W4_L2CA_CON_RSP
+In this state, the remote end-point exists and an L2CAP Connect Request has
+been received by the local L2CAP entity.
+An L2CA Connect Indication has been
+sent to the upper layer and the part of the local L2CAP entity processing the
+received L2CAP Connect Request waits for the corresponding response.
+The response may require a security check to be performed.
+.It Dv NG_L2CAP_CONFIG
+In this state, the connection has been established but both sides are still
+negotiating the channel parameters.
+The Configuration state may also be
+entered when the channel parameters are being renegotiated.
+Prior to entering the
+.Dv NG_L2CAP_CONFIG
+state, all outgoing data traffic is suspended since
+the traffic parameters of the data traffic are to be renegotiated.
+Incoming
+data traffic is accepted until the remote channel endpoint has entered
+the
+.Dv NG_L2CAP_CONFIG
+state.
+In the
+.Dv NG_L2CAP_CONFIG
+state, both sides will issue
+L2CAP Configuration Request messages if only defaults are being used, a null
+message will be sent.
+If a large amount of parameters need to be negotiated,
+multiple messages will be sent to avoid any MTU limitations and negotiate
+incrementally.
+Moving from the
+.Dv NG_L2CAP_CONFIG
+state to the
+.Dv NG_L2CAP_OPEN
+state requires both sides to be ready.
+An L2CAP entity is ready when it has received
+a positive response to its final request and it has positively responded to
+the final request from the remote device.
+.It Dv NG_L2CAP_OPEN
+In this state, the connection has been established and configured, and data
+flow may proceed.
+.It Dv NG_L2CAP_W4_L2CAP_DISCON_RSP
+In this state, the connection is shutting down and an L2CAP Disconnect Request
+message has been sent.
+This state is now waiting for the corresponding response.
+.It Dv NG_L2CAP_W4_L2CA_DISCON_RSP
+In this state, the connection on the remote endpoint is shutting down and an
+L2CAP Disconnect Request message has been received.
+An L2CA Disconnect
+Indication has been sent to the upper layer to notify the owner of the CID
+that the remote endpoint is being closed.
+This state is now waiting for the
+corresponding response from the upper layer before responding to the remote
+endpoint.
+.El
+.Ss Protocol Multiplexing
+L2CAP supports protocol multiplexing because the Baseband Protocol does not
+support any
+.Dq type
+field identifying the higher layer protocol being multiplexed above it.
+L2CAP is able to distinguish between upper layer protocols such as the Service
+Discovery Protocol, RFCOMM and Telephony Control.
+.Ss Segmentation and Reassembly
+The data packets defined by the Baseband Protocol are limited in size.
+Large
+L2CAP packets must be segmented into multiple smaller Baseband packets prior
+to their transmission over the air.
+Similarly, multiple received Baseband
+packets may be reassembled into a single larger L2CAP packet.
+.Ss Quality of Service
+The L2CAP connection establishment process allows the exchange of information
+regarding the quality of service (QoS) expected between two Bluetooth units.
+.Ss Groups
+The Baseband Protocol supports the concept of a piconet, a group of devices
+synchronously hopping together using the same clock.
+The L2CAP group
+abstraction permits implementations to efficiently map protocol groups on to
+piconets.
+.Pp
+The following features are outside the scope of L2CAP responsibilities:
+.Bl -dash -offset indent
+.It
+L2CAP does not transport audio designated for SCO links.
+.It
+L2CAP does not enforce a reliable channel or ensure data integrity,
+that is, L2CAP performs no retransmissions or checksum calculations.
+.It
+L2CAP does not support a reliable multicast channel.
+.It
+L2CAP does not support the concept of a global group name.
+.El
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width indent
+.It Dv hci
+Bluetooth Host Controller Interface downstream hook.
+.It Dv l2c
+Upper layer protocol upstream hook.
+Usually the Bluetooth L2CAP socket layer is connected to the hook.
+.It Dv ctl
+Control hook.
+Usually the Bluetooth raw L2CAP sockets layer is connected to the hook.
+.El
+.Sh INTERFACE TO THE UPPER LAYER PROTOCOLS (L2CA CONTROL MESSAGES)
+Bluetooth specification says that L2CA request must block until response
+is ready.
+L2CAP node uses
+.Va token
+field from Netgraph message header to match L2CA request and response.
+The upper layer protocol must populate
+.Va token .
+L2CAP node will queue request and start processing.
+Later, when response is
+ready or timeout has occurred, L2CAP node will create new Netgraph message, set
+.Va token
+and
+.Dv NFG_RESP
+flag and send message to the upper layer.
+Note that L2CA indication messages
+will not populate
+.Va token
+and will not set
+.Dv NGF_RESP
+flag.
+There is no reason for this, because they are just notifications and do
+not require acknowledgment.
+.Bl -tag -width indent
+.It Dv NGM_L2CAP_L2CA_CON
+Requests the creation of a channel representing a logical connection to a
+physical address.
+Input parameters are the target protocol (PSM) and remote
+device's 48-bit address (BD_ADDR).
+Output parameters are the local CID (LCID)
+allocated by the local L2CAP entity, and Result of the request.
+If Result
+indicates a pending notification, the Status value may contain more information
+of what processing is delaying the establishment of the connection.
+.It Dv NGM_L2CAP_L2CA_CON_IND
+This message includes the parameters for the address of the remote device that
+issued the connection request, the local CID representing the channel being
+requested, the Identifier contained in the request, and the PSM value the
+request is targeting.
+.It Dv NGM_L2CAP_L2CA_CON_RSP
+Issues a response to a connection request event indication.
+Input parameters
+are the remote device's 48-bit address, Identifier sent in the request, local
+CID, the Response code, and the Status attached to the Response code.
+The output parameter is the Result of the service request.
+This primitive must be
+called no more than once after receiving the indication.
+.It Dv NGM_L2CAP_L2CA_CFG
+Requests the initial configuration (or reconfiguration) of a channel to a new
+set of channel parameters.
+Input parameters are the local CID endpoint, new
+incoming receivable MTU (InMTU), new outgoing flow spec-ification, and flush
+and link timeouts.
+Output parameters are the Result, accepted incoming MTU
+(InMTU), the remote side's flow requests, and flush and link timeouts.
+.It Dv NGM_L2CAP_L2CA_CFG_IND
+This message includes the parameters indicating the local CID of the channel
+the request has been sent to, the outgoing MTU size (maximum packet that can
+be sent across the channel) and the flowspec describing the characteristics of
+the incoming data.
+All other channel parameters are set to their default values
+if not provided by the remote device.
+.It Dv NGM_L2CAP_L2CA_CFG_RSP
+Issues a response to a configuration request event indication.
+Input parameters
+include the local CID of the endpoint being configured, outgoing transmit MTU
+(which may be equal or less to the OutMTU parameter in the configuration
+indication event) and the accepted flowspec for incoming traffic.
+The output parameter is the Result value.
+.It Dv NGM_L2CAP_L2CA_QOS_IND
+This message includes the parameter indicating the address of the remote
+Bluetooth device where the QoS contract has been violated.
+.It Dv NGM_L2CAP_L2CA_DISCON
+Requests the disconnection of the channel.
+Input parameter is the CID representing the local channel endpoint.
+Output parameter is Result.
+Result
+is zero if an L2CAP Disconnect Response is received, otherwise a non-zero value
+is returned.
+Once disconnection has been requested, no process will be able to
+successfully read or write from the CID.
+.It Dv NGM_L2CAP_L2CA_DISCON_IND
+This message includes the parameter indicating the local CID the request has
+been sent to.
+.It Dv NGM_L2CAP_L2CA_WRITE
+Response to transfer of data request.
+Actual data must be received from
+appropriate upstream hook and must be prepended with header defined as follows.
+.Bd -literal -offset indent
+/* L2CA data packet header */
+typedef struct {
+ u_int32_t token; /* token to use in L2CAP_L2CA_WRITE */
+ u_int16_t length; /* length of the data */
+ u_int16_t lcid; /* local channel ID */
+} __attribute__ ((packed)) ng_l2cap_l2ca_hdr_t;
+.Ed
+.Pp
+The output parameters are Result and Length of data written.
+.It Dv NGM_L2CAP_L2CA_GRP_CREATE
+Requests the creation of a CID to represent a logical connection to multiple
+devices.
+Input parameter is the PSM value that the outgoing connectionless
+traffic is labelled with, and the filter used for incoming traffic.
+Output parameter is the CID representing the local endpoint.
+On creation, the group
+is empty but incoming traffic destined for the PSM value is readable.
+.Bf -emphasis
+This request has not been implemented.
+.Ef
+.It Dv NGM_L2CAP_L2CA_GRP_CLOSE
+The use of this message closes down a Group.
+.Bf -emphasis
+This request has not been implemented.
+.Ef
+.It Dv NGM_L2CAP_L2CA_GRP_ADD_MEMBER
+Requests the addition of a member to a group.
+The input parameter includes the
+CID representing the group and the BD_ADDR of the group member to be added.
+The output parameter Result confirms the success or failure of the request.
+.Bf -emphasis
+This request has not been implemented.
+.Ef
+.It Dv NGM_L2CAP_L2CA_GRP_REM_MEMBER
+Requests the removal of a member from a group.
+The input parameters include
+the CID representing the group and BD_ADDR of the group member to be removed.
+The output parameter Result confirms the success or failure of the request.
+.Bf -emphasis
+This request has not been implemented.
+.Ef
+.It Dv NGM_L2CAP_L2CA_GRP_MEMBERSHIP
+Requests a report of the members of a group.
+The input parameter CID represents the group being queried.
+The output parameter Result confirms the success or
+failure of the operation.
+If the Result is successful, BD_ADDR_Lst is a list
+of the Bluetooth addresses of the N members of the group.
+.Bf -emphasis
+This request has not been implemented.
+.Ef
+.It Dv NGM_L2CAP_L2CA_PING
+Initiates an L2CA Echo Request message and the reception of the corresponding
+L2CAP Echo Response message.
+The input parameters are remote Bluetooth device
+BD_ADDR, Echo Data and Length of the echo data.
+The output parameters are
+Result, Echo Data and Length of the echo data.
+.It Dv NGM_L2CAP_L2CA_GET_INFO
+Initiates an L2CA Information Request message and the reception of the
+corresponding L2CAP Info Response message.
+The input parameters are remote Bluetooth device BD_ADDR and Information Type.
+The output parameters are
+Result, Information Data and Size of the information data.
+.It Dv NGM_L2CAP_L2CA_ENABLE_CLT
+Request to disable (enable) the reception of connectionless packets.
+The input
+parameter is the PSM value indicating service that should be blocked
+(unblocked) and Enable flag.
+.El
+.Sh NETGRAPH CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_L2CAP_NODE_GET_FLAGS
+Returns current state for the node.
+.It Dv NGM_L2CAP_NODE_GET_DEBUG
+Returns an integer containing the current debug level for the node.
+.It Dv NGM_L2CAP_NODE_SET_DEBUG
+This command takes an integer argument and sets current debug level
+for the node.
+.It Dv NGM_L2CAP_NODE_GET_CON_LIST
+Returns list of active baseband connections (i.e., ACL links).
+.It Dv NGM_L2CAP_NODE_GET_CHAN_LIST
+Returns list of active L2CAP channels.
+.It Dv NGM_L2CAP_NODE_GET_AUTO_DISCON_TIMO
+Returns an integer containing the current value of the auto disconnect
+timeout (in sec).
+.It Dv NGM_L2CAP_NODE_SET_AUTO_DISCON_TIMO
+This command accepts an integer and sets the value of the auto disconnect
+timeout (in sec).
+The special value of 0 (zero) disables auto disconnect timeout.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of an
+.Dv NGM_SHUTDOWN
+control message, or
+when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr l2control 8 ,
+.Xr l2ping 8 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm l2cap
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
+.Sh BUGS
+Most likely.
+Please report if found.
diff --git a/share/man/man4/ng_l2tp.4 b/share/man/man4/ng_l2tp.4
new file mode 100644
index 0000000..49fedf1
--- /dev/null
+++ b/share/man/man4/ng_l2tp.4
@@ -0,0 +1,330 @@
+.\" Copyright (c) 2001-2002 Packet Design, LLC.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty,
+.\" use and redistribution of this software, in source or object code
+.\" forms, with or without modifications are expressly permitted by
+.\" Packet Design; provided, however, that:
+.\"
+.\" (i) Any and all reproductions of the source or object code
+.\" must include the copyright notice above and the following
+.\" disclaimer of warranties; and
+.\" (ii) No rights are granted, in any manner or form, to use
+.\" Packet Design trademarks, including the mark "PACKET DESIGN"
+.\" on advertising, endorsements, or otherwise except as such
+.\" appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY PACKET DESIGN "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, PACKET DESIGN MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING
+.\" THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED
+.\" WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
+.\" OR NON-INFRINGEMENT. PACKET DESIGN DOES NOT WARRANT, GUARANTEE,
+.\" OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS
+.\" OF THE USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY,
+.\" RELIABILITY OR OTHERWISE. IN NO EVENT SHALL PACKET DESIGN BE
+.\" LIABLE FOR ANY DAMAGES RESULTING FROM OR ARISING OUT OF ANY USE
+.\" OF THIS SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY DIRECT,
+.\" INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, PUNITIVE, OR CONSEQUENTIAL
+.\" DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, LOSS OF
+.\" USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 PACKET DESIGN IS ADVISED OF
+.\" THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 2, 2004
+.Dt NG_L2TP 4
+.Os
+.Sh NAME
+.Nm ng_l2tp
+.Nd L2TP protocol netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_l2tp.h
+.Sh DESCRIPTION
+The
+.Nm l2tp
+node type implements the encapsulation layer of the L2TP protocol
+as described in RFC 2661.
+This includes adding the L2TP packet header for outgoing packets
+and verifying and removing it for incoming packets.
+The node maintains the L2TP sequence number state and handles
+control session packet acknowledgment and retransmission.
+.Sh HOOKS
+The
+.Nm l2tp
+node type supports the following hooks:
+.Pp
+.Bl -tag -compact -offset indent -width ".Dv session_hhhh"
+.It Dv lower
+L2TP frames.
+.It Dv ctrl
+Control packets.
+.It Dv session_hhhh
+Session 0xhhhh data packets.
+.El
+.Pp
+L2TP control and data packets are transmitted to, and received from,
+the L2TP peer via the
+.Dv lower
+hook.
+Typically this hook would be connected to the
+.Dv "inet/dgram/udp"
+hook of an
+.Xr ng_ksocket 4
+node for L2TP over UDP.
+.Pp
+The
+.Dv ctrl
+hook connects to the local L2TP management entity.
+L2TP control messages (without any L2TP headers) are transmitted
+and received on this hook.
+Messages written to this hook are guaranteed to be delivered to the
+peer reliably, in order, and without duplicates.
+.Pp
+Packets written to the
+.Dv ctrl
+hook must contain a two byte session ID prepended to the frame
+(in network order).
+This session ID is copied to the outgoing L2TP header.
+Similarly, packets read from the
+.Dv ctrl
+hook will have the received session ID prepended.
+.Pp
+Once an L2TP session has been created, the corresponding session
+hook may be used to transmit and receive the session's data frames:
+for the session with session ID
+.Dv 0xabcd ,
+the hook is named
+.Dv session_abcd .
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_L2TP_SET_CONFIG
+This command updates the configuration of the node.
+It takes a
+.Vt "struct ng_l2tp_config"
+as an argument:
+.Bd -literal
+/* Configuration for a node */
+struct ng_l2tp_config {
+ u_char enabled; /* enables traffic flow */
+ u_char match_id; /* tunnel id must match 'tunnel_id' */
+ u_int16_t tunnel_id; /* local tunnel id */
+ u_int16_t peer_id; /* peer's tunnel id */
+ u_int16_t peer_win; /* peer's max recv window size */
+ u_int16_t rexmit_max; /* max retransmits before failure */
+ u_int16_t rexmit_max_to; /* max delay between retransmits */
+};
+.Ed
+.Pp
+The
+.Va enabled
+field enables packet processing.
+Each time this field is changed back to zero the sequence
+number state is reset.
+In this way, reuse of a node is possible.
+.Pp
+The
+.Va tunnel_id
+field configures the local tunnel ID for the control connection.
+The
+.Va match_id
+field determines how incoming L2TP packets with a tunnel ID
+field different from
+.Va tunnel_id
+are handled.
+If
+.Va match_id
+is non-zero, they will be dropped; otherwise, they will be dropped
+only if the tunnel ID is non-zero.
+Typically
+.Va tunnel_id
+is set to the local tunnel ID as soon as it is known and
+.Va match_id
+is set to non-zero after receipt of the SCCRP or SCCCN control message.
+.Pp
+The peer's tunnel ID should be set in
+.Va peer_id
+as soon as it is learned, typically after receipt of a SCCRQ or SCCRP
+control message.
+This value is copied into the L2TP header for outgoing packets.
+.Pp
+The
+.Va peer_win
+field should be set from the
+.Dq "Receive Window Size"
+AVP received from the peer.
+The default value for this field is one; zero is an invalid value.
+As long as
+.Va enabled
+is non-zero, this value may not be decreased.
+.Pp
+The
+.Va rexmit_max
+and
+.Va rexmit_max_to
+fields configure packet retransmission.
+.Va rexmit_max_to
+is the maximum retransmission delay between packets, in seconds.
+The retransmit delay will start at a small value and increase
+exponentially up to this limit.
+The
+.Va rexmit_max
+sets the maximum number of times a packet will be retransmitted
+without being acknowledged before a failure condition is declared.
+Once a failure condition is declared, each additional retransmission
+will cause the
+.Nm l2tp
+node to send a
+.Dv NGM_L2TP_ACK_FAILURE
+control message back to the node that sent the last
+.Dv NGM_L2TP_SET_CONFIG .
+Appropriate action should then be taken to shutdown the control connection.
+.It Dv NGM_L2TP_GET_CONFIG
+Returns the current configuration as a
+.Vt "struct ng_l2tp_config" .
+.It Dv NGM_L2TP_SET_SESS_CONFIG
+This control message configures a single data session.
+The corresponding hook must already be connected before sending this command.
+The argument is a
+.Vt "struct ng_l2tp_sess_config" :
+.Bd -literal
+/* Configuration for a session hook */
+struct ng_l2tp_sess_config {
+ u_int16_t session_id; /* local session id */
+ u_int16_t peer_id; /* peer's session id */
+ u_char control_dseq; /* we control data sequencing? */
+ u_char enable_dseq; /* enable data sequencing? */
+ u_char include_length; /* include length field? */
+};
+.Ed
+.Pp
+The
+.Va session_id
+and
+.Va peer_id
+fields configure the local and remote session IDs, respectively.
+.Pp
+The
+.Va control_dseq
+and
+.Va enable_dseq
+fields determine whether sequence numbers are used with L2TP data packets.
+If
+.Va enable_dseq
+is zero, then no sequence numbers are sent and incoming sequence numbers
+are ignored.
+Otherwise, sequence numbers are included on outgoing packets and checked
+on incoming packets.
+.Pp
+If
+.Va control_dseq
+is non-zero, then the setting of
+.Va enable_dseq
+will never change except by another
+.Dv NGM_L2TP_SET_SESS_CONFIG
+control message.
+If
+.Va control_dseq
+is zero, then the peer controls whether sequence numbers are used:
+if an incoming L2TP data packet contains sequence numbers,
+.Va enable_dseq
+is set to one, and conversely if an incoming L2TP data packet does not
+contain sequence numbers,
+.Va enable_dseq
+is set to zero.
+The current value of
+.Va enable_dseq
+is always accessible via the
+.Dv NGM_L2TP_GET_SESS_CONFIG
+control message (see below).
+Typically an LNS would set
+.Va control_dseq
+to one while a LAC would set
+.Va control_dseq
+to zero (if the Sequencing Required AVP were not sent), thus giving
+control of data packet sequencing to the LNS.
+.Pp
+The
+.Va include_length
+field determines whether the L2TP header length field is included
+in outgoing L2TP data packets.
+For incoming packets, the L2TP length field is always checked when present.
+.It Dv NGM_L2TP_GET_SESS_CONFIG
+This command takes a two byte session ID as an argument and returns
+the current configuration for the corresponding data session as a
+.Vt "struct ng_l2tp_sess_config" .
+The corresponding session hook must be connected.
+.It Dv NGM_L2TP_GET_STATS
+This command returns a
+.Vt "struct ng_l2tp_stats"
+containing statistics of the L2TP tunnel.
+.It Dv NGM_L2TP_CLR_STATS
+This command clears the statistics for the L2TP tunnel.
+.It Dv NGM_L2TP_GETCLR_STATS
+Same as
+.Dv NGM_L2TP_GET_STATS ,
+but also atomically clears the statistics as well.
+.It Dv NGM_L2TP_GET_SESSION_STATS
+This command takes a two byte session ID as an argument and returns a
+.Vt "struct ng_l2tp_session_stats"
+containing statistics for the corresponding data session.
+The corresponding session hook must be connected.
+.It Dv NGM_L2TP_CLR_SESSION_STATS
+This command takes a two byte session ID as an argument and
+clears the statistics for that data session.
+The corresponding session hook must be connected.
+.It Dv NGM_L2TP_GETCLR_SESSION_STATS
+Same as
+.Dv NGM_L2TP_GET_SESSION_STATS ,
+but also atomically clears the statistics as well.
+.It Dv NGM_L2TP_SET_SEQ
+This command sets the sequence numbers of a not yet enabled node.
+It takes a
+.Vt "struct ng_l2tp_seq_config"
+as argument, where
+.Va xack
+and
+.Va nr
+respectively
+.Va ns
+and
+.Va rack
+must be the same.
+This option is particularly useful if one receives and processes
+the first packet entirely in userspace and wants to hand over further
+processing to the node.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ksocket 4 ,
+.Xr ng_ppp 4 ,
+.Xr ng_pptpgre 4 ,
+.Xr ngctl 8
+.Rs
+.%A W. Townsley
+.%A A. Valencia
+.%A A. Rubens
+.%A G. Pall
+.%A G. Zorn
+.%A B. Palter
+.%T "Layer Two Tunneling Protocol L2TP"
+.%O RFC 2661
+.Re
+.Sh HISTORY
+The
+.Nm l2tp
+node type was developed at Packet Design, LLC,
+.Pa http://www.packetdesign.com/ .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@packetdesign.com
diff --git a/share/man/man4/ng_lmi.4 b/share/man/man4/ng_lmi.4
new file mode 100644
index 0000000..4dc7fdf
--- /dev/null
+++ b/share/man/man4/ng_lmi.4
@@ -0,0 +1,139 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_lmi.8,v 1.4 1999/01/25 23:46:27 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_LMI 4
+.Os
+.Sh NAME
+.Nm ng_lmi
+.Nd frame relay LMI protocol netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_lmi.h
+.Sh DESCRIPTION
+The
+.Nm lmi
+node type performs the frame relay LMI protocol.
+It supports
+the ITU Annex A, ANSI Annex D, and Group-of-four LMI types.
+It also supports auto-detection of the LMI type.
+.Pp
+To enable a specific LMI type, connect the corresponding hook
+.Dv ( annexA ,
+.Dv annexD ,
+or
+.Dv group4 ")"
+to DLCI 0 or 1023 of a
+.Xr ng_frame_relay 4
+node.
+Typically, Annex A and Annex D live on DLCI 0 while Group-of-four
+lives on DLCI 1023.
+.Pp
+To enable LMI type auto-detection, connect the
+.Dv auto0
+hook to DLCI 0 and the
+.Dv auto1023
+hook to DLCI 1023.
+The node will attempt to automatically determine
+which LMI type is running at the switch, and go into that mode.
+.Pp
+Only one fixed LMI type, or auto-detection, can be active at any given time.
+.Pp
+The
+.Dv NGM_LMI_GET_STATUS
+control message can be used at any time to query the current status
+of the LMI protocol and each DLCI channel.
+This node also supports the
+.Dv NGM_TEXT_STATUS
+control message.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobarbaz
+.It Dv annexA
+ITU Annex A LMI hook.
+.It Dv annexD
+ANSI Annex D LMI hook.
+.It Dv group4
+Group-of-four LMI hook.
+.It Dv auto0
+Auto-detection hook for DLCI 0.
+.It Dv auto1023
+Auto-detection hook for DLCI 1023.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_LMI_GET_STATUS
+This command returns status information in a
+.Dv "struct nglmistat" :
+.Bd -literal -offset 4n
+#define NGM_LMI_STAT_ARYSIZE (1024/8)
+
+struct nglmistat {
+ u_char proto[12]; /* Active proto (same as hook name) */
+ u_char hook[12]; /* Active hook */
+ u_char fixed; /* If set to fixed LMI mode */
+ u_char autod; /* If currently auto-detecting */
+ u_char seen[NGM_LMI_STAT_ARYSIZE]; /* bitmap DLCIs seen */
+ u_char up[NGM_LMI_STAT_ARYSIZE]; /* bitmap DLCIs up */
+};
+.Ed
+.It Dv NGM_TEXT_STATUS
+This generic message returns is a human-readable version of the node status.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_frame_relay 4 ,
+.Xr ngctl 8
+.Rs
+.%T "ANSI T1.617-1991 Annex D"
+.Re
+.Rs
+.%T "ITU-T Q.933 Digital Subscriber Signaling System No. 1 - Signaling Specification for Frame Mode Basic Call Control, Annex A"
+.Re
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_mppc.4 b/share/man/man4/ng_mppc.4
new file mode 100644
index 0000000..a146228
--- /dev/null
+++ b/share/man/man4/ng_mppc.4
@@ -0,0 +1,194 @@
+.\" Copyright (c) 1996-2000 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $Whistle: ng_mppc.8,v 1.1 1999/12/08 20:20:39 archie Exp $
+.\" $FreeBSD$
+.\"
+.Dd December 8, 1999
+.Dt NG_MPPC 4
+.Os
+.Sh NAME
+.Nm ng_mppc
+.Nd Microsoft MPPC/MPPE compression and encryption netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_mppc.h
+.Sh DESCRIPTION
+The
+.Nm mppc
+node type implements the Microsoft Point-to-Point Compression (MPPC)
+and Microsoft Point-to-Point Encryption (MPPE) sub-protocols of
+the PPP protocol.
+These protocols are often used in conjunction with the Point-to-Point
+Tunneling Protocol (PPTP).
+.Pp
+The node has two hooks,
+.Dv "comp"
+for compression and
+.Dv "decomp"
+for decompression.
+Typically one or both of these hooks would be connected to the
+.Xr ng_ppp 4
+node type hook of the same name.
+Each direction of traffic flow is independent of the other.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -compact -width vjc_vjuncomp
+.It Dv comp
+Connection to
+.Xr ng_ppp 4
+.Dv "comp"
+hook.
+Incoming frames are compressed and/or encrypted, and sent
+back out the same hook.
+.It Dv decomp
+Connection to
+.Xr ng_ppp 4
+.Dv "decomp"
+hook.
+Incoming frames are decompressed and/or decrypted, and sent
+back out the same hook.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_MPPC_CONFIG_COMP
+This command resets and configures the node for a session in the
+outgoing traffic direction (i.e., for compression and/or encryption).
+This command takes a
+.Dv "struct ng_mppc_config"
+as an argument:
+.Bd -literal -offset 0n
+/* Length of MPPE key */
+#define MPPE_KEY_LEN 16
+
+/* MPPC/MPPE PPP negotiation bits */
+#define MPPC_BIT 0x00000001 /* mppc compression bits */
+#define MPPE_40 0x00000020 /* use 40 bit key */
+#define MPPE_56 0x00000080 /* use 56 bit key */
+#define MPPE_128 0x00000040 /* use 128 bit key */
+#define MPPE_BITS 0x000000e0 /* mppe encryption bits */
+#define MPPE_STATELESS 0x01000000 /* use stateless mode */
+#define MPPC_VALID_BITS 0x010000e1 /* possibly valid bits */
+
+/* Configuration for a session */
+struct ng_mppc_config {
+ u_char enable; /* enable */
+ u_int32_t bits; /* config bits */
+ u_char startkey[MPPE_KEY_LEN]; /* start key */
+};
+
+.Ed
+The
+.Dv enabled
+field enables traffic flow through the node.
+The
+.Dv bits
+field contains the bits as negotiated by the Compression Control Protocol
+(CCP) in PPP.
+The
+.Dv startkey
+is only necessary if MPPE was negotiated, and must be equal to the
+session start key as defined for MPPE.
+This key is based on the MS-CHAP credentials used at link authentication time.
+.It Dv NGM_MPPC_CONFIG_DECOMP
+This command resets and configures the node for a session in the
+incoming traffic direction (i.e., for decompression and/or decryption).
+This command takes a
+.Dv "struct ng_mppc_config"
+as an argument.
+.It Dv NGM_MPPC_RESETREQ
+This message contains no arguments, and is bi-directional.
+If an error is detected during decompression, this message is sent by the
+node to the originator of the
+.Dv NGM_MPPC_CONFIG_DECOMP
+message that initiated the session.
+The receiver should respond by sending a PPP CCP Reset-Request to the peer.
+.Pp
+This message may also be received by this node type when a CCP Reset-Request
+is received by the local PPP entity.
+The node will respond by flushing its outgoing compression and encryption
+state so the remote side can resynchronize.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when both hooks have been disconnected.
+.Sh COMPILATION
+The kernel options
+.Dv NETGRAPH_MPPC_COMPRESSION
+and
+.Dv NETGRAPH_MPPC_ENCRYPTION
+are supplied to selectively compile in either or both capabilities.
+At least one of these must be defined, or else this node type is useless.
+.Pp
+The MPPC protocol requires proprietary compression code available
+from Hi/Fn (formerly STAC).
+These files must be obtained elsewhere and added to the kernel
+sources before this node type will compile with the
+.Dv NETGRAPH_MPPC_COMPRESSION
+option.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ppp 4 ,
+.Xr ngctl 8
+.Rs
+.%A G. Pall
+.%T "Microsoft Point-To-Point Compression (MPPC) Protocol"
+.%O RFC 2118
+.Re
+.Rs
+.%A G. S. Pall
+.%A G. Zorn
+.%T "Microsoft Point-To-Point Encryption (MPPE) Protocol"
+.%O draft-ietf-pppext-mppe-04.txt
+.Re
+.Rs
+.%A K. Hamzeh
+.%A G. Pall
+.%A W. Verthein
+.%A J. Taarud
+.%A W. Little
+.%A G. Zorn
+.%T "Point-to-Point Tunneling Protocol (PPTP)"
+.%O RFC 2637
+.Re
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
+.Sh BUGS
+In PPP, encryption should be handled by the Encryption Control Protocol (ECP)
+rather than CCP.
+However, Microsoft combined both compression and encryption into their
+``compression'' algorithm, which is confusing.
diff --git a/share/man/man4/ng_nat.4 b/share/man/man4/ng_nat.4
new file mode 100644
index 0000000..cc89703
--- /dev/null
+++ b/share/man/man4/ng_nat.4
@@ -0,0 +1,325 @@
+.\" Copyright (c) 2005 Gleb Smirnoff <glebius@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$
+.\"
+.Dd March 1, 2008
+.Dt NG_NAT 4
+.Os
+.Sh NAME
+.Nm ng_nat
+.Nd "NAT netgraph node type"
+.Sh SYNOPSIS
+.In netgraph/ng_nat.h
+.Sh DESCRIPTION
+An
+.Nm
+node performs network address translation (NAT) of packets
+passing through it.
+A
+.Nm nat
+node uses
+.Xr libalias 3
+engine for packet aliasing.
+.Sh HOOKS
+This node type has two hooks:
+.Bl -tag -width indent
+.It Va out
+Packets received on this hook are considered outgoing and will be
+masqueraded to a configured address.
+.It Va in
+Packets coming on this hook are considered incoming and will be
+dealiased.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_NAT_SET_IPADDR Pq Li setaliasaddr
+Configure aliasing address for a node.
+After both hooks have been connected and aliasing address was configured,
+a node is ready for aliasing operation.
+.It Dv NGM_NAT_SET_MODE Pq Li setmode
+Set node's operation mode using supplied
+.Vt "struct ng_nat_mode".
+.Bd -literal
+struct ng_nat_mode {
+ uint32_t flags;
+ uint32_t mask;
+};
+/* Supported flags: */
+#define NG_NAT_LOG 0x01
+#define NG_NAT_DENY_INCOMING 0x02
+#define NG_NAT_SAME_PORTS 0x04
+#define NG_NAT_UNREGISTERED_ONLY 0x10
+#define NG_NAT_RESET_ON_ADDR_CHANGE 0x20
+#define NG_NAT_PROXY_ONLY 0x40
+#define NG_NAT_REVERSE 0x80
+.Ed
+.It Dv NGM_NAT_SET_TARGET Pq Li settarget
+Configure target address for a node.
+When an incoming packet not associated with any pre-existing aliasing
+link arrives at the host machine, it will be sent to the specified address.
+.It Dv NGM_NAT_REDIRECT_PORT Pq Li redirectport
+Redirect incoming connections arriving to given port(s) to
+another host and port(s).
+The following
+.Vt "struct ng_nat_redirect_port"
+must be supplied as argument.
+.Bd -literal
+#define NG_NAT_DESC_LENGTH 64
+struct ng_nat_redirect_port {
+ struct in_addr local_addr;
+ struct in_addr alias_addr;
+ struct in_addr remote_addr;
+ uint16_t local_port;
+ uint16_t alias_port;
+ uint16_t remote_port;
+ uint8_t proto;
+ char description[NG_NAT_DESC_LENGTH];
+};
+.Ed
+.Pp
+Redirection is assigned an unique ID which is returned as
+response to this message, and
+information about redirection added to
+list of static redirects which later can be retrieved by
+.Dv NGM_NAT_LIST_REDIRECTS
+message.
+.It Dv NGM_NAT_REDIRECT_ADDR Pq Li redirectaddr
+Redirect traffic for public IP address to a machine on the
+local network.
+This function is known as
+.Em static NAT .
+The following
+.Vt "struct ng_nat_redirect_addr"
+must be supplied as argument.
+.Bd -literal
+struct ng_nat_redirect_addr {
+ struct in_addr local_addr;
+ struct in_addr alias_addr;
+ char description[NG_NAT_DESC_LENGTH];
+};
+.Ed
+.Pp
+Unique ID for this redirection is returned as response to this message.
+.It Dv NGM_NAT_REDIRECT_PROTO Pq Li redirectproto
+Redirect incoming IP packets of protocol
+.Va proto
+(see
+.Xr protocols 5 )
+to a machine on the local network.
+The following
+.Vt "struct ng_nat_redirect_proto"
+must be supplied as argument.
+.Bd -literal
+struct ng_nat_redirect_proto {
+ struct in_addr local_addr;
+ struct in_addr alias_addr;
+ struct in_addr remote_addr;
+ uint8_t proto;
+ char description[NG_NAT_DESC_LENGTH];
+};
+.Ed
+.Pp
+Unique ID for this redirection is returned as response to this message.
+.It Dv NGM_NAT_REDIRECT_DYNAMIC Pq Li redirectdynamic
+Mark redirection with specified ID as dynamic, i.e., it will serve
+for exactly one next connection and then will be automatically
+deleted from internal links table.
+Only fully specified links can be made dynamic.
+The redirection with this ID is also immediately deleted from
+user-visible list of static redirects (available through
+.Dv NGM_NAT_LIST_REDIRECTS
+message).
+.It Dv NGM_NAT_REDIRECT_DELETE Pq Li redirectdelete
+Delete redirection with specified ID (currently active
+connections are not affected).
+.It Dv NGM_NAT_ADD_SERVER Pq Li addserver
+Add another server to a pool.
+This is used to transparently offload network load on a single server
+and distribute the load across a pool of servers, also known as
+.Em LSNAT
+(RFC 2391).
+The following
+.Vt "struct ng_nat_add_server"
+must be supplied as argument.
+.Bd -literal
+struct ng_nat_add_server {
+ uint32_t id;
+ struct in_addr addr;
+ uint16_t port;
+};
+.Ed
+.Pp
+First, the redirection is set up by
+.Dv NGM_NAT_REDIRECT_PORT
+or
+.Dv NGM_NAT_REDIRECT_ADDR .
+Then, ID of that redirection is used in multiple
+.Dv NGM_NAT_ADD_SERVER
+messages to add necessary number of servers.
+For redirections created by
+.Dv NGM_NAT_REDIRECT_ADDR ,
+the
+.Va port
+is ignored and could have any value.
+Original redirection's parameters
+.Va local_addr
+and
+.Va local_port
+are also ignored after
+.Dv NGM_NAT_ADD_SERVER
+was used (they are effectively replaced by server pool).
+.It Dv NGM_NAT_LIST_REDIRECTS Pq Li listredirects
+Return list of configured static redirects as
+.Vt "struct ng_nat_list_redirects".
+.Bd -literal
+struct ng_nat_listrdrs_entry {
+ uint32_t id; /* Anything except zero */
+ struct in_addr local_addr;
+ struct in_addr alias_addr;
+ struct in_addr remote_addr;
+ uint16_t local_port;
+ uint16_t alias_port;
+ uint16_t remote_port;
+ uint16_t proto; /* Valid proto or NG_NAT_REDIRPROTO_ADDR */
+ uint16_t lsnat; /* LSNAT servers count */
+ char description[NG_NAT_DESC_LENGTH];
+};
+struct ng_nat_list_redirects {
+ uint32_t total_count;
+ struct ng_nat_listrdrs_entry redirects[];
+};
+#define NG_NAT_REDIRPROTO_ADDR (IPPROTO_MAX + 3)
+.Ed
+.Pp
+Entries of the
+.Va redirects
+array returned in the unified format for all redirect types.
+Ports are meaningful only if protocol is either TCP or UDP
+and
+.Em static NAT
+redirection (created by
+.Dv NGM_NAT_REDIRECT_ADDR )
+is indicated by
+.Va proto
+set to
+.Dv NG_NAT_REDIRPROTO_ADDR .
+If
+.Va lsnat
+servers counter is greater than zero, then
+.Va local_addr
+and
+.Va local_port
+are also meaningless.
+.It Dv NGM_NAT_PROXY_RULE Pq Li proxyrule
+Specify a transparent proxying rule (string must be
+supplied as argument).
+See
+.Xr libalias 3
+for details.
+.El
+.Pp
+In all redirection messages
+.Va local_addr
+and
+.Va local_port
+mean address and port of target machine in the internal network,
+respectively.
+If
+.Va alias_addr
+is zero, then default aliasing address (set by
+.Dv NGM_NAT_SET_IPADDR )
+is used.
+Connections can also be restricted to be accepted only
+from specific external machines by using non-zero
+.Va remote_addr
+and/or
+.Va remote_port .
+Each redirection assigned an ID which can be later used for
+redirection manipulation on individual basis (e.g., removal).
+This ID guaranteed to be unique until the node shuts down
+(it will not be reused after deletion), and is returned to
+user after making each new redirection or can be found in
+the stored list of all redirections.
+The
+.Va description
+passed to and from node unchanged, together with ID providing
+a way for several entities to concurrently manipulate
+redirections in automated way.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when both hooks are disconnected.
+.Sh EXAMPLES
+In the following example, the packets are injected into a
+.Nm nat
+node using the
+.Xr ng_ipfw 4
+node.
+.Bd -literal -offset indent
+# Create NAT node
+ngctl mkpeer ipfw: nat 60 out
+ngctl name ipfw:60 nat
+ngctl connect ipfw: nat: 61 in
+ngctl msg nat: setaliasaddr x.y.35.8
+
+# Divert traffic into NAT node
+ipfw add 300 netgraph 61 all from any to any in via fxp0
+ipfw add 400 netgraph 60 all from any to any out via fxp0
+
+# Let packets continue with after being (de)aliased
+sysctl net.inet.ip.fw.one_pass=0
+.Ed
+.Pp
+The
+.Nm
+node can be inserted right after the
+.Xr ng_iface 4
+node in the graph.
+In the following example, we perform masquerading on a
+serial line with HDLC encapsulation.
+.Bd -literal -offset indent
+/usr/sbin/ngctl -f- <<-SEQ
+ mkpeer cp0: cisco rawdata downstream
+ name cp0:rawdata hdlc
+ mkpeer hdlc: nat inet in
+ name hdlc:inet nat
+ mkpeer nat: iface out inet
+ msg nat: setaliasaddr x.y.8.35
+SEQ
+ifconfig ng0 x.y.8.35 x.y.8.1
+.Ed
+.Sh SEE ALSO
+.Xr libalias 3 ,
+.Xr ng_ipfw 4 ,
+.Xr natd 8 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 6.0 .
+.Sh AUTHORS
+.An Gleb Smirnoff Aq glebius@FreeBSD.org
diff --git a/share/man/man4/ng_netflow.4 b/share/man/man4/ng_netflow.4
new file mode 100644
index 0000000..d1ef204
--- /dev/null
+++ b/share/man/man4/ng_netflow.4
@@ -0,0 +1,304 @@
+.\" Copyright (c) 2004-2005 Gleb Smirnoff <glebius@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$
+.\"
+.Dd October 8, 2008
+.Os
+.Dt NG_NETFLOW 4
+.Sh NAME
+.Nm ng_netflow
+.Nd Cisco's NetFlow implementation
+.Sh SYNOPSIS
+.In sys/types.h
+.In netinet/in.h
+.In netgraph/netflow/ng_netflow.h
+.Sh DESCRIPTION
+The
+.Nm
+node implements Cisco's NetFlow export protocol on a router running
+.Fx .
+The
+.Nm
+node listens for incoming traffic and identifies unique flows in it.
+Flows are distinguished by endpoint IP addresses, TCP/UDP port numbers,
+ToS and input interface.
+Expired flows are exported out of the node in NetFlow version 5 UDP datagrams.
+Expiration reason can be one of the following:
+.Bl -dash
+.It
+RST or FIN TCP segment.
+.It
+Active timeout.
+Flows cannot live more than the specified period of time.
+The default is 1800 seconds (30 minutes).
+.It
+Inactive timeout.
+A flow was inactive for the specified period of time.
+The default is 15 seconds.
+.El
+.Pp
+Export information is stored in NetFlow version 5 datagrams.
+.Sh HOOKS
+This node type supports up to
+.Dv NG_NETFLOW_MAXIFACES
+hooks named
+.Va iface0 , iface1 ,
+etc.,
+and the same number of hooks named
+.Va out0 , out1 ,
+etc.,
+plus a single hook named
+.Va export .
+By default (ingress NetFlow enabled) node does NetFlow accounting of data
+received on
+.Va iface*
+hooks.
+If corresponding
+.Va out
+hook is connected, unmodified data is bypassed to it, otherwise data is freed.
+If data is received on
+.Va out
+hook, it is bypassed to corresponding
+.Va iface
+hook without any processing (egress NetFlow disabled by default).
+When full export datagram is built it is sent to the
+.Va export
+hook.
+In normal operation, the
+.Va export
+hook is connected to the
+.Va inet/dgram/udp
+hook of the
+.Xr ng_ksocket 4
+node.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_NETFLOW_INFO
+Returns some node statistics and the current timeout values in a
+.Vt "struct ng_netflow_info" .
+.It Dv NGM_NETFLOW_IFINFO
+Returns information about the
+.Va iface Ns Ar N
+hook.
+The hook number is passed as an argument.
+.It Dv NGM_NETFLOW_SETDLT
+Sets data link type on the
+.Va iface Ns Ar N
+hook.
+Currently, supported types are raw IP datagrams and Ethernet.
+This message type uses
+.Vt "struct ng_netflow_setdlt"
+as an argument:
+.Bd -literal -offset 4n
+struct ng_netflow_setdlt {
+ uint16_t iface; /* which iface to operate on */
+ uint8_t dlt; /* DLT_XXX from bpf.h */
+};
+.Ed
+.Pp
+The requested
+.Va iface Ns Ar N
+hook must already be connected, otherwise message send operation will
+return an error.
+.It Dv NGM_NETFLOW_SETIFINDEX
+In some cases,
+.Nm
+may be unable to determine the input interface index of a packet.
+This can happen if traffic enters the
+.Nm
+node before it comes to the system interface's input queue.
+An example of such a setup is capturing a traffic
+.Em between
+synchronous data line and
+.Xr ng_iface 4 .
+In this case, the input index should be associated with a given hook.
+The interface's index can be determined via
+.Xr if_nametoindex 3
+from userland.
+This message requires
+.Vt "struct ng_netflow_setifindex"
+as an argument:
+.Bd -literal -offset 4n
+struct ng_netflow_setifindex {
+ u_int16_t iface; /* which iface to operate on */
+ u_int16_t index; /* new index */
+};
+.Ed
+.Pp
+The requested
+.Va iface Ns Ar N
+hook must already be connected, otherwise the message
+send operation will return an error.
+.It Dv NGM_NETFLOW_SETTIMEOUTS
+Sets values in seconds for NetFlow active/inactive timeouts.
+This message requires
+.Vt "struct ng_netflow_settimeouts"
+as an argument:
+.Bd -literal -offset 4n
+struct ng_netflow_settimeouts {
+ uint32_t inactive_timeout;
+ uint32_t active_timeout;
+};
+.Ed
+.It Dv NGM_NETFLOW_SETCONFIG
+Sets configuration for the specified interface.
+This message requires
+.Vt "struct ng_netflow_setconfig"
+as an argument:
+.Bd -literal -offset 4n
+struct ng_netflow_setconfig {
+ u_int16_t iface;
+ u_int32_t conf;
+#define NG_NETFLOW_CONF_INGRESS 1
+#define NG_NETFLOW_CONF_EGRESS 2
+#define NG_NETFLOW_CONF_ONCE 4
+#define NG_NETFLOW_CONF_THISONCE 8
+};
+.Ed
+.Pp
+Configuration is a bitmask of several options. Option NG_NETFLOW_CONF_INGRESS
+enabled by default enables ingress NetFlow generation (for data coming from
+ifaceX hook). Option NG_NETFLOW_CONF_EGRESS enables egress NetFlow (for data
+coming from outX hook). Option NG_NETFLOW_CONF_ONCE defines that packet should
+be accounted only once if it several times passes via netflow node. Option
+NG_NETFLOW_CONF_THISONCE defines that packet should be accounted only once
+if it several times passes via exactly this netflow node. Last two options are
+important to avoid duplicate accounting when both ingress and egress NetFlow
+are enabled.
+.It Dv NGM_NETFLOW_SHOW
+This control message asks a node to dump the entire contents of the flow cache.
+It is called from
+.Xr flowctl 8 ,
+not directly from
+.Xr ngctl 8 .
+See also
+.Sx BUGS
+section.
+.El
+.Sh ASCII CONTROL MESSAGES
+Most binary control messages have an
+.Tn ASCII
+equivalent.
+The supported
+.Tn ASCII
+commands are:
+.Pp
+.Bl -tag -width ".Dv NGM_NETFLOW_SETTIMEOUTS" -compact
+.It Dv NGM_NETFLOW_INFO
+.Qq Li info
+.It Dv NGM_NETFLOW_IFINFO
+.Qq Li "ifinfo %u"
+.It Dv NGM_NETFLOW_SETDLT
+.Qq Li "setdlt { iface = %u dlt = %u }"
+.It Dv NGM_NETFLOW_SETIFINDEX
+.Qq Li "setifindex { iface = %u index = %u }"
+.It Dv NGM_NETFLOW_SETTIMEOUTS
+.Qq Li "settimeouts { inactive = %u active = %u }"
+.It Dv NGM_NETFLOW_SETCONFIG
+.Qq Li "setconfig { iface = %u conf = %u }"
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh EXAMPLES
+The simplest possible configuration is one Ethernet interface, where
+flow collecting is enabled.
+.Bd -literal -offset indent
+/usr/sbin/ngctl -f- <<-SEQ
+ mkpeer fxp0: netflow lower iface0
+ name fxp0:lower netflow
+ connect fxp0: netflow: upper out0
+ mkpeer netflow: ksocket export inet/dgram/udp
+ msg netflow:export connect inet/10.0.0.1:4444
+SEQ
+.Ed
+.Pp
+This is a more complicated example of a router with 2 NetFlow-enabled
+interfaces
+.Li fxp0
+and
+.Li ng0 .
+Note that the
+.Va ng0:
+node in this example is connected to
+.Xr ng_tee 4 .
+The latter sends us a copy of IP packets, which we analyze and free.
+On
+.Va fxp0:
+we do not use tee, but send packets back to ether node.
+.Bd -literal -offset indent
+/usr/sbin/ngctl -f- <<-SEQ
+ # connect ng0's tee to iface0 hook
+ mkpeer ng0:inet netflow right2left iface0
+ name ng0:inet.right2left netflow
+ # set DLT to raw mode
+ msg netflow: setdlt { iface=0 dlt=12 }
+ # set interface index (5 in this example)
+ msg netflow: setifindex { iface=0 index=5 }
+
+ # Connect fxp0: to iface1 and out1 hook
+ connect fxp0: netflow: lower iface1
+ connect fxp0: netflow: upper out1
+
+ # Create ksocket node on export hook, and configure it
+ # to send exports to proper destination
+ mkpeer netflow: ksocket export inet/dgram/udp
+ msg netflow:export connect inet/10.0.0.1:4444
+SEQ
+.Ed
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ether 4 ,
+.Xr ng_iface 4 ,
+.Xr ng_ksocket 4 ,
+.Xr ng_tee 4 ,
+.Xr flowctl 8 ,
+.Xr ngctl 8
+.Pp
+.Pa http://www.cisco.com/univercd/cc/td/doc/cisintwk/intsolns/netflsol/\:nfwhite.htm
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+node type was written by
+.An Gleb Smirnoff Aq glebius@FreeBSD.org ,
+based on
+.Nm ng_ipacct
+written by
+.An Roman V. Palagin Aq romanp@unshadow.net .
+.Sh BUGS
+Cache snapshot obtained via
+.Dv NGM_NETFLOW_SHOW
+command may lack some percentage of entries under severe load.
+.Pp
+The
+.Nm
+node type does not fill in AS numbers.
+This is due to the lack of necessary information in the kernel routing table.
+However, this information can be injected into the kernel from a routing daemon
+such as GNU Zebra.
+This functionality may become available in future releases.
diff --git a/share/man/man4/ng_one2many.4 b/share/man/man4/ng_one2many.4
new file mode 100644
index 0000000..e43fd8a
--- /dev/null
+++ b/share/man/man4/ng_one2many.4
@@ -0,0 +1,273 @@
+.\" Copyright (c) 2000 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 19, 2006
+.Dt NG_ONE2MANY 4
+.Os
+.Sh NAME
+.Nm ng_one2many
+.Nd packet multiplexing netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_one2many.h
+.Sh DESCRIPTION
+The
+.Nm one2many
+provides a simple mechanism for routing packets over several links
+in a one-to-many (and in the reverse direction, many-to-one) fashion.
+There is a single hook named
+.Dv one ,
+and multiple hooks named
+.Dv many0 ,
+.Dv many1 ,
+etc.
+Packets received on any of the
+.Dv many
+hooks are forwarded out the
+.Dv one
+hook.
+Packets received on the
+.Dv one
+hook are forwarded out one or more of the
+.Dv many
+hooks; which hook(s) is determined by the node's configured
+transmit algorithm.
+Packets are not altered in any way.
+.Pp
+Each of the connected many links may be considered to be up or down.
+Packets are never delivered out a many hook that is down.
+How a link is determined to be up or down depends on the node's
+configured link failure detection algorithm.
+.Pp
+Before an interface or link can be plumbed into a group, its status
+must be marked as being
+.Dq up .
+This is normally setup during the initial boot stages by
+.Xr rc.conf 5 .
+It is also possible to change an interface's status to
+.Dq up
+by using the
+.Xr ifconfig 8
+utility.
+.Sh TRANSMIT ALGORITHMS
+.Bl -tag -width foo
+.It Dv NG_ONE2MANY_XMIT_ROUNDROBIN
+Packets are delivered out the many hooks in sequential order.
+Each packet goes out on a different
+.Dv many
+hook.
+.It Dv NG_ONE2MANY_XMIT_ALL
+Packets are delivered out all the
+.Dv many
+hooks.
+Each packet goes out each
+.Dv many
+hook.
+.El
+.Pp
+In the future other algorithms may be added as well.
+.Sh LINK FAILURE DETECTION
+The node distinguishes between active and failed links.
+Data is sent only to active links.
+The following link failure detection algorithms are available:
+.Bl -tag -width indent
+.It Dv NG_ONE2MANY_FAIL_MANUAL
+The node is explicitly told which of the links are up via the
+.Dv NGM_ONE2MANY_SET_CONFIG
+control message (see below).
+Newly connected links are down until configured otherwise.
+.It Dv NG_ONE2MANY_FAIL_NOTIFY
+The node listens to flow control message from
+.Va many
+hooks, and considers link failed if
+.Dv NGM_LINK_IS_DOWN
+is received.
+If the
+.Dv NGM_LINK_IS_UP
+message is received, node considers link active.
+.El
+.Pp
+In the future other algorithms may be added as well.
+.Pp
+When all links are considered failed, node sends the
+.Dv NGM_LINK_IS_DOWN
+message towards the
+.Va one
+hook.
+When at least one link comes up, node sends the
+.Dv NGM_LINK_IS_UP
+message towards the
+.Va one
+hook.
+.Sh HOOKS
+This node type supports up to
+.Dv NG_ONE2MANY_MAX_LINKS
+hooks named
+.Dv many0 ,
+.Dv many1 ,
+etc.,
+plus a single hook named
+.Dv one .
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the
+following:
+.Bl -tag -width foo
+.It Dv NGM_ONE2MANY_SET_CONFIG
+Sets the node configuration using a
+.Dv "struct ng_one2many_link_config"
+as the control message argument:
+.Bd -literal
+/* Node configuration structure */
+struct ng_one2many_config {
+ u_int32_t xmitAlg; /* how to distribute packets */
+ u_int32_t failAlg; /* how to detect link failure */
+ u_char enabledLinks[NG_ONE2MANY_MAX_LINKS];
+};
+.Ed
+.Pp
+Currently, the valid settings for the
+.Dv xmitAlg
+field are
+.Dv NG_ONE2MANY_XMIT_ROUNDROBIN
+(default) or
+.Dv NG_ONE2MANY_XMIT_ALL .
+The valid settings for
+.Dv failAlg
+are
+.Dv NG_ONE2MANY_FAIL_MANUAL
+(default) or
+.Dv NG_ONE2MANY_FAIL_NOTIFY .
+.It Dv NGM_ONE2MANY_GET_CONFIG
+Returns the current node configuration in a
+.Dv "struct ng_one2many_link_config" .
+.It Dv NGM_ONE2MANY_GET_STATS
+This command takes a 32 bit link number as an argument and
+returns a
+.Dv "struct ng_one2many_link_stats"
+containing statistics for the corresponding
+.Dv many
+link, which may or may not be currently connected:
+.Bd -literal
+/* Statistics structure (one for each link) */
+struct ng_one2many_link_stats {
+ u_int64_t recvOctets; /* total octets rec'd on link */
+ u_int64_t recvPackets; /* total pkts rec'd on link */
+ u_int64_t xmitOctets; /* total octets xmit'd on link */
+ u_int64_t xmitPackets; /* total pkts xmit'd on link */
+};
+.Ed
+.Pp
+To access statistics for the
+.Dv one
+link, use the link number
+.Dv -1 .
+.It Dv NGM_ONE2MANY_CLR_STATS
+This command takes a 32 bit link number as an argument and
+clears the statistics for that link.
+.It Dv NGM_ONE2MANY_GETCLR_STATS
+Same as
+.Dv NGM_ONE2MANY_GET_STATS ,
+but also atomically clears the statistics for the link as well.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh EXAMPLES
+The following commands will set up Ethernet interfaces
+.Dv fxp0
+to deliver packets alternating over the physical interfaces
+corresponding to networking interfaces
+.Dv fxp0
+through
+.Dv fxp3 :
+.Bd -literal
+ # Plumb nodes together
+
+ ngctl mkpeer fxp0: one2many upper one
+ ngctl connect fxp0: fxp0:upper lower many0
+ ngctl connect fxp1: fxp0:upper lower many1
+ ngctl connect fxp2: fxp0:upper lower many2
+ ngctl connect fxp3: fxp0:upper lower many3
+
+ # Allow fxp1 through fxp3 to xmit/recv fxp0 frames
+
+ ngctl msg fxp1: setpromisc 1
+ ngctl msg fxp2: setpromisc 1
+ ngctl msg fxp3: setpromisc 1
+ ngctl msg fxp1: setautosrc 0
+ ngctl msg fxp2: setautosrc 0
+ ngctl msg fxp3: setautosrc 0
+
+ # Configure all four links as up
+
+ ngctl msg fxp0:upper \\
+ setconfig "{ xmitAlg=1 failAlg=1 enabledLinks=[ 1 1 1 1 ] }"
+
+ # Bring up interface
+
+ ifconfig fxp0 192.168.1.1 netmask 0xfffffffc
+.Ed
+.Pp
+With a similar setup on a peer machine (using the address
+192.168.1.2), a point-to-point
+Ethernet connection with four times normal bandwidth is
+achieved.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_bridge 4 ,
+.Xr ng_ether 4 ,
+.Xr ng_hub 4 ,
+.Xr ifconfig 8 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm one2many
+netgraph node (with round-robin algorithm) was written by
+.An Archie Cobbs
+.Aq archie@FreeBSD.org .
+The all algorithm was added by
+.An Rogier R. Mulhuijzen
+.Aq drwilco@drwilco.net .
+.Sh BUGS
+More transmit and link failure algorithms should be supported.
+A good candidate is Cisco's Etherchannel.
diff --git a/share/man/man4/ng_ppp.4 b/share/man/man4/ng_ppp.4
new file mode 100644
index 0000000..9fd72ca
--- /dev/null
+++ b/share/man/man4/ng_ppp.4
@@ -0,0 +1,460 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_ppp.8,v 1.3 1999/01/25 23:46:27 archie Exp $
+.\"
+.Dd December 28, 2006
+.Dt NG_PPP 4
+.Os
+.Sh NAME
+.Nm ng_ppp
+.Nd PPP protocol netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_ppp.h
+.Sh DESCRIPTION
+The
+.Nm ppp
+node type performs multiplexing for the PPP protocol.
+It handles only packets that contain data, and forwards protocol negotiation
+and control packets to a separate controlling entity (e.g., a
+user-land daemon).
+This approach combines the fast dispatch of
+kernel implementations with the configuration flexibility of a
+user-land implementations.
+The PPP node type directly supports
+multi-link PPP, Van Jacobson compression, PPP compression, PPP
+encryption, and the IP, IPX, and AppleTalk protocols.
+A single PPP node corresponds to one PPP multi-link bundle.
+.Pp
+There is a separate hook for each PPP link in the bundle, plus
+several hooks corresponding to the directly supported protocols.
+For compression and encryption, separate attached nodes are required
+to do the actual work.
+The node type used will of course depend on the algorithm negotiated.
+There is also a
+.Dv bypass
+hook which is used to handle any protocol not directly supported
+by the node.
+This includes all of the control protocols: LCP, IPCP,
+CCP, etc.
+Typically this node is connected to a user-land daemon via a
+.Xr ng_socket 4
+type node.
+.Sh ENABLING FUNCTIONALITY
+In general, the PPP node enables a specific link or functionality when
+(a) a
+.Dv NGM_PPP_SET_CONFIG
+message has been received which enables it, and
+(b) the corresponding hook(s) are connected.
+This allows the controlling entity to use either method (a) or (b)
+(or both) to control the node's behavior.
+When a link is connected but disabled, traffic can still flow on
+the link via the
+.Dv bypass
+hook (see below).
+.Sh LINK HOOKS
+During normal operation, the individual PPP links are connected to hooks
+.Dv link0 ,
+.Dv link1 ,
+etc.
+Up to
+.Dv NG_PPP_MAX_LINKS
+links are supported.
+These device-independent hooks transmit and receive full PPP
+frames, which include the PPP protocol, address, control, and
+information fields, but no checksum or other link-specific fields.
+.Pp
+On outgoing frames, when protocol compression
+has been enabled and the protocol number is suitable for compression,
+the protocol field will be compressed (i.e., sent as one byte
+instead of two).
+Either compressed or uncompressed protocol fields
+are accepted on incoming frames.
+Similarly, if address and control
+field compression has been enabled for the link, the address and
+control fields will be omitted (except for LCP frames as required
+by the standards).
+Incoming frames have the address and control fields
+stripped automatically if present.
+.Pp
+Since all negotiation is handled outside the PPP node, the links
+should not be connected and enabled until the corresponding link
+has reached the network phase (i.e., LCP negotiation and authentication
+have completed successfully) and the PPP node has been informed of
+the link parameters via the
+.Dv NGM_PPP_LINK_CONFIG
+message.
+.Pp
+When a link is connected but disabled, all received frames are forwarded
+directly out the
+.Dv bypass
+hook, and conversely, frames may be transmitted via the
+.Dv bypass
+hook as well.
+This mode is appropriate for the link authentication phase.
+As soon as the link is enabled, the PPP node will
+begin processing frames received on the link.
+.Sh COMPRESSION AND ENCRYPTION
+Compression is supported via two hooks,
+.Dv compress
+and
+.Dv decompress .
+Compression and decompression can be enabled by toggling the
+.Vt enableCompression
+and
+.Vt enableDecompression
+fields of the node configuration structure.
+(See below.)
+If
+.Vt enableCompression
+is set to
+.Dv NG_PPP_COMPRESS_SIMPLE ,
+then all outgoing frames are sent to the
+.Dv compress
+hook and all packets received on this hook are expected to be
+compressed, so the COMPD tag is put on them unconditionally.
+If
+.Vt enableCompression
+is set to
+.Dv NG_PPP_COMPRESS_FULL ,
+then packets received on the
+.Dv compress
+hook are resent as is.
+The compressor node should put the tag, if the packet was compressed.
+If
+.Vt enableDecompression
+is set to
+.Dv NG_PPP_DECOMPRESS_SIMPLE ,
+then the node will sent to the
+.Dv decompress
+hook only those frames, that are marked with the COMPD tag.
+If
+.Vt enableDecompression
+is set to
+.Dv NG_PPP_DECOMPRESS_FULL ,
+then the node will sent all incoming packets to the
+.Dv decompress
+hook.
+Compression and decompression can be completely disabled by setting the
+.Vt enableCompression
+and
+.Vt enableDecompression
+fields to the
+.Dv NG_PPP_COMPRESS_NONE
+and
+.Dv NG_PPP_DECOMPRESS_NONE ,
+respectively.
+.Pp
+Encryption works exactly analogously via the
+.Dv encrypt
+and
+.Dv decrypt
+nodes.
+Data is always compressed before being encrypted,
+and decrypted before being decompressed.
+.Pp
+Only bundle-level compression and encryption is directly supported;
+link-level compression and encryption can be handled transparently
+by downstream nodes.
+.Sh VAN JACOBSON COMPRESSION
+When all of the
+.Dv vjc_ip ,
+.Dv vjc_vjcomp ,
+.Dv vjc_vjuncomp ,
+and
+.Dv vjc_vjip
+hooks are connected, and the corresponding configuration flag is
+enabled, Van Jacobson compression and/or decompression will become active.
+Normally these hooks connect to the corresponding hooks of a single
+.Xr ng_vjc 4
+node.
+The PPP node is compatible with the
+.Dq pass through
+modes of the
+.Xr ng_vjc 4
+node type.
+.Sh BYPASS HOOK
+When a frame is received on a link with an unsupported protocol,
+or a protocol which is disabled or for which the corresponding hook
+is unconnected, the PPP node forwards the frame out the
+.Dv bypass
+hook, prepended with a four byte prefix.
+This first two bytes of
+the prefix indicate the link number on which the frame was received
+(in network order).
+For such frames received over the bundle (i.e., encapsulated in the
+multi-link protocol), the special link number
+.Dv NG_PPP_BUNDLE_LINKNUM
+is used.
+After the two byte link number is the two byte PPP protocol number
+(also in network order).
+The PPP protocol number is two bytes long even if the original frame
+was protocol compressed.
+.Pp
+Conversely, any data written to the
+.Dv bypass
+hook is assumed to be in this same format.
+The four byte header is
+stripped off, the PPP protocol number is prepended (possibly compressed),
+and the frame is delivered over the desired link.
+If the link number is
+.Dv NG_PPP_BUNDLE_LINKNUM
+the frame will be delivered over the multi-link bundle; or, if multi-link
+is disabled, over the (single) PPP link.
+.Pp
+Typically when the controlling entity receives an unexpected packet on the
+.Dv bypass
+hook it responds either by dropping the frame (if it is not ready for
+the protocol) or with an LCP protocol reject (if it does not recognize
+or expect the protocol).
+.Sh MULTILINK OPERATION
+To enable multi-link PPP, the corresponding configuration flag must be set
+and at least one link connected.
+The PPP node will not allow more than
+one link to be connected if multi-link is not enabled, nor will it allow
+certain multi-link settings to be changed while multi-link operation is
+active (e.g., short sequence number header format).
+.Pp
+Since packets are sent as fragments across multiple individual links,
+it is important that when a link goes down the PPP node is notified
+immediately, either by disconnecting the corresponding hook or disabling
+the link via the
+.Dv NGM_PPP_SET_CONFIG
+control message.
+.Pp
+Each link has configuration parameters for latency (specified in
+milliseconds) and bandwidth (specified in tens of bytes per second).
+The PPP node can be configured for
+.Em round-robin
+or
+.Em optimized
+packet delivery.
+.Pp
+When configured for round-robin delivery, the latency and bandwidth
+values are ignored and the PPP node simply sends each frame as a
+single fragment, alternating frames across all the links in the
+bundle.
+This scheme has the advantage that even if one link fails
+silently, some packets will still get through.
+It has the disadvantage
+of sub-optimal overall bundle latency, which is important for
+interactive response time, and sub-optimal overall bundle bandwidth
+when links with different bandwidths exist in the same bundle.
+.Pp
+When configured for optimal delivery, the PPP node distributes the
+packet across the links in a way that minimizes the time it takes
+for the completed packet to be received by the far end.
+This involves taking into account each link's latency, bandwidth, and
+current queue length.
+Therefore these numbers should be configured as accurately as possible.
+The algorithm does require
+some computation, so may not be appropriate for very slow machines
+and/or very fast links.
+.Pp
+As a special case, if all links have identical latency and bandwidth,
+then the above algorithm is disabled (because it is unnecessary)
+and the PPP node simply fragments frames into equal sized portions
+across all of the links.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -compact -width vjc_vjuncomp
+.It Dv link<N>
+Individual PPP link number
+.Dv <N>
+.It Dv compress
+Connection to compression engine
+.It Dv decompress
+Connection to decompression engine
+.It Dv encrypt
+Connection to encryption engine
+.It Dv decrypt
+Connection to decryption engine
+.It Dv vjc_ip
+Connection to
+.Xr ng_vjc 4
+.Dv ip
+hook
+.It Dv vjc_vjcomp
+Connection to
+.Xr ng_vjc 4
+.Dv vjcomp
+hook
+.It Dv vjc_vjuncomp
+Connection to
+.Xr ng_vjc 4
+.Dv vjuncomp
+hook
+.It Dv vjc_vjip
+Connection to
+.Xr ng_vjc 4
+.Dv vjip
+hook
+.It Dv inet
+IP packet data
+.It Dv atalk
+AppleTalk packet data
+.It Dv ipx
+IPX packet data
+.It Dv bypass
+Bypass hook; frames have a four byte header consisting of
+a link number and a PPP protocol number.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_PPP_SET_CONFIG
+This command configures all aspects of the node.
+This includes enabling
+multi-link PPP, encryption, compression, Van Jacobson compression, and IP,
+IPv6, AppleTalk, and IPX packet delivery.
+It includes per-link configuration,
+including enabling the link, setting latency and bandwidth parameters,
+and enabling protocol field compression.
+Note that no link or functionality
+is active until the corresponding hook is also connected.
+This command takes a
+.Dv "struct ng_ppp_node_conf"
+as an argument:
+.Bd -literal -offset 0n
+/* Per-link config structure */
+struct ng_ppp_link_conf {
+ u_char enableLink; /* enable this link */
+ u_char enableProtoComp;/* enable protocol field compression */
+ u_char enableACFComp; /* enable addr/ctrl field compression */
+ u_int16_t mru; /* peer MRU */
+ u_int32_t latency; /* link latency (in milliseconds) */
+ u_int32_t bandwidth; /* link bandwidth (in bytes/second) */
+};
+
+/* Bundle config structure */
+struct ng_ppp_bund_conf {
+ u_int16_t mrru; /* multilink peer MRRU */
+ u_char enableMultilink; /* enable multilink */
+ u_char recvShortSeq; /* recv multilink short seq # */
+ u_char xmitShortSeq; /* xmit multilink short seq # */
+ u_char enableRoundRobin; /* xmit whole packets */
+ u_char enableIP; /* enable IP data flow */
+ u_char enableIPv6; /* enable IPv6 data flow */
+ u_char enableAtalk; /* enable AppleTalk data flow */
+ u_char enableIPX; /* enable IPX data flow */
+ u_char enableCompression; /* enable PPP compression */
+ u_char enableDecompression; /* enable PPP decompression */
+ u_char enableEncryption; /* enable PPP encryption */
+ u_char enableDecryption; /* enable PPP decryption */
+ u_char enableVJCompression; /* enable VJ compression */
+ u_char enableVJDecompression; /* enable VJ decompression */
+};
+
+struct ng_ppp_node_conf {
+ struct ng_ppp_bund_conf bund;
+ struct ng_ppp_link_conf links[NG_PPP_MAX_LINKS];
+};
+.Ed
+.Pp
+.It Dv NGM_PPP_GET_CONFIG
+Returns the current configuration as a
+.Dv "struct ng_ppp_node_conf" .
+.It Dv NGM_PPP_GET_LINK_STATS
+This command takes a two byte link number as an argument and returns a
+.Dv "struct ng_ppp_link_stat"
+containing statistics for the corresponding link.
+Here
+.Dv NG_PPP_BUNDLE_LINKNUM
+is a valid link number corresponding to the multi-link bundle.
+.It Dv NGM_PPP_GET_LINK_STATS64
+Same as NGM_PPP_GET_LINK_STATS but returns
+.Dv "struct ng_ppp_link_stat64"
+containing 64bit counters.
+.It Dv NGM_PPP_CLR_LINK_STATS
+This command takes a two byte link number as an argument and
+clears the statistics for that link.
+.It Dv NGM_PPP_GETCLR_LINK_STATS
+Same as
+.Dv NGM_PPP_GET_LINK_STATS ,
+but also atomically clears the statistics as well.
+.It Dv NGM_PPP_GETCLR_LINK_STATS64
+Same as NGM_PPP_GETCLR_LINK_STATS but returns
+.Dv "struct ng_ppp_link_stat64"
+containing 64bit counters.
+.El
+.Pp
+This node type also accepts the control messages accepted by the
+.Xr ng_vjc 4
+node type.
+When received, these messages are simply forwarded to
+the adjacent
+.Xr ng_vjc 4
+node, if any.
+This is particularly useful when the individual
+PPP links are able to generate
+.Dv NGM_VJC_RECV_ERROR
+messages (see
+.Xr ng_vjc 4
+for a description).
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_async 4 ,
+.Xr ng_iface 4 ,
+.Xr ng_mppc 4 ,
+.Xr ng_pppoe 4 ,
+.Xr ng_vjc 4 ,
+.Xr ngctl 8
+.Rs
+.%A W. Simpson
+.%T "The Point-to-Point Protocol (PPP)"
+.%O RFC 1661
+.Re
+.Rs
+.%A K. Sklower
+.%A B. Lloyd
+.%A G. McGregor
+.%A D. Carr
+.%A T. Coradetti
+.%T "The PPP Multilink Protocol (MP)"
+.%O RFC 1990
+.Re
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
diff --git a/share/man/man4/ng_pppoe.4 b/share/man/man4/ng_pppoe.4
new file mode 100644
index 0000000..fef3d2c
--- /dev/null
+++ b/share/man/man4/ng_pppoe.4
@@ -0,0 +1,508 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_pppoe.8,v 1.1 1999/01/25 23:46:27 archie Exp $
+.\"
+.Dd December 27, 2007
+.Dt NG_PPPOE 4
+.Os
+.Sh NAME
+.Nm ng_pppoe
+.Nd RFC 2516 PPPoE protocol netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In net/ethernet.h
+.In netgraph.h
+.In netgraph/ng_pppoe.h
+.Sh DESCRIPTION
+The
+.Nm pppoe
+node type performs the PPPoE protocol.
+It is used in conjunction with the
+.Xr netgraph 4
+extensions to the Ethernet framework to divert and inject Ethernet packets
+to and from a PPP agent (which is not specified).
+.Pp
+The
+.Dv NGM_PPPOE_GET_STATUS
+control message can be used at any time to query the current status
+of the PPPoE module.
+The only statistics presently available are the
+total packet counts for input and output.
+This node does not yet support
+the
+.Dv NGM_TEXT_STATUS
+control message.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width [unspecified]
+.It Dv ethernet
+The hook that should normally be connected to an
+.Xr ng_ether 4
+node.
+Once connected,
+.Nm
+will send a message down this hook to determine Ethernet address of
+the underlying node.
+Obtained address will be stored and then used for outgoing datagrams.
+.It Dv debug
+Presently no use.
+.It Dv [unspecified]
+Any other name is assumed to be a session hook that will be connected to
+a PPP client agent, or a PPP server agent.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width 3n
+.It Dv NGM_PPPOE_GET_STATUS
+This command returns status information in a
+.Dv "struct ngpppoestat" :
+.Bd -literal -offset 4n
+struct ngpppoestat {
+ u_int packets_in; /* packets in from Ethernet */
+ u_int packets_out; /* packets out towards Ethernet */
+};
+.Ed
+.It Dv NGM_TEXT_STATUS
+This generic message returns a human-readable version of the node status.
+(not yet)
+.It Dv NGM_PPPOE_CONNECT
+Tell a nominated newly created hook that its session should enter
+the state machine as a client.
+It must be newly created and a service name can be given as an argument.
+It is legal to specify a zero-length service name, this is common
+on some DSL setups.
+It is possible to request a connection to a specific
+access concentrator by its name using the "AC-Name\\Service-Name" syntax.
+A session request packet will be broadcasted on the Ethernet.
+This command uses the
+.Dv ngpppoe_init_data
+structure shown below.
+.It Dv NGM_PPPOE_LISTEN
+Tell a nominated newly created hook that its session should enter
+the state machine as a server listener.
+The argument
+given is the name of the service to listen for.
+A zero-length service name will match all requests for service.
+A matching service request
+packet will be passed unmodified back to the process responsible
+for starting the service.
+It can then examine it and pass it on to
+the session that is started to answer the request.
+This command uses the
+.Dv ngpppoe_init_data
+structure shown below.
+.It Dv NGM_PPPOE_OFFER
+Tell a nominated newly created hook that its session should enter
+the state machine as a server.
+The argument given is the name of the service to offer.
+A zero-length service
+is legal.
+The State machine will progress to a state where it will await
+a request packet to be forwarded to it from the startup server,
+which in turn probably received it from a LISTEN mode hook (see above).
+This is so
+that information that is required for the session that is embedded in
+the original session request packet, is made available to the state machine
+that eventually answers the request.
+When the Session request packet is
+received, the session negotiation will proceed.
+This command uses the
+.Dv ngpppoe_init_data
+structure shown below.
+.El
+.Pp
+The three commands above use a common data structure:
+.Bd -literal -offset 4n
+struct ngpppoe_init_data {
+ char hook[NG_HOOKSIZ]; /* hook to monitor on */
+ u_int16_t data_len; /* service name length */
+ char data[0]; /* init data goes here */
+};
+.Ed
+.Bl -tag -width 3n
+.It Dv NGM_PPPOE_SUCCESS
+This command is sent to the node that started this session with one of the
+above messages, and reports a state change.
+This message reports successful Session negotiation.
+It uses the structure shown below, and
+reports back the hook name corresponding to the successful session.
+.It Dv NGM_PPPOE_FAIL
+This command is sent to the node that started this session with one of the
+above messages, and reports a state change.
+This message reports failed Session negotiation.
+It uses the structure shown below, and
+reports back the hook name corresponding to the failed session.
+The hook will probably have been removed immediately after sending this
+message.
+.It Dv NGM_PPPOE_CLOSE
+This command is sent to the node that started this session with one of the
+above messages, and reports a state change.
+This message reports a request to close a session.
+It uses the structure shown below, and
+reports back the hook name corresponding to the closed session.
+The hook will probably have been removed immediately after sending this
+message.
+At present this message is not yet used and a
+.Dv NGM_PPPOE_FAIL
+message
+will be received at closure instead.
+.It Dv NGM_PPPOE_ACNAME
+This command is sent to the node that started this session with one of the
+above messages, and reports the Access Concentrator Name.
+.El
+.Pp
+The four commands above use a common data structure:
+.Bd -literal -offset 4n
+struct ngpppoe_sts {
+ char hook[NG_HOOKSIZ]; /* hook associated with event session */
+};
+.Ed
+.Bl -tag -width 3n
+.It Dv NGM_PPPOE_GETMODE
+This command returns the current compatibility mode of the node
+as a string.
+.Tn ASCII
+form of this message is
+.Qq Li pppoe_getmode .
+The following keywords can be returned:
+.Bl -tag -width 3n
+.It Qq standard
+The node operates according to RFC 2516.
+.It Qq 3Com
+When
+.Nm
+is a PPPoE client, it initiates a session encapsulating packets into
+incorrect 3Com ethertypes.
+This compatibility option does not affect server mode.
+In server mode
+.Nm
+supports both modes simultaneously, depending on the ethertype, the
+client used when connecting.
+.It Qq D-Link
+When
+.Nm
+is a PPPoE server serving only specific Service-Name(s), it will respond
+to a PADI requests with empty Service-Name tag, returning all available
+Service-Name(s) on node.
+This option is necessary for compatibility with D-Link DI-614+ and DI-624+
+SOHO routers as clients, when serving only specific Service-Name.
+This compatibility option does not affect client mode.
+.El
+.It Dv NGM_PPPOE_SETMODE
+Configure node to the specified mode.
+The string argument is required.
+This command understands the same keywords that are returned by the
+.Dv NGM_PPPOE_GETMODE
+command.
+.Tn ASCII
+form of this message is
+.Qq Li pppoe_setmode .
+For example, the following command will configure the node to initiate
+the next session in the proprietary 3Com mode:
+.Bd -literal -offset indent
+ngctl msg fxp0:orphans pppoe_setmode '"3Com"'
+.Ed
+.It Dv NGM_PPPOE_SETENADDR
+Set the node Ethernet address for outgoing datagrams.
+This message is important when a node has failed to obtain an Ethernet
+address from its peer on the
+.Dv ethernet
+hook, or when user wants to override this address with another one.
+.Tn ASCII
+form of this message is
+.Qq Li setenaddr .
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, when all session have been disconnected or when the
+.Dv ethernet
+hook is disconnected.
+.Sh EXAMPLES
+The following code uses
+.Dv libnetgraph
+to set up a
+.Nm
+node and connect it to both a socket node and an Ethernet node.
+It can handle the case of when a
+.Nm
+node is already attached to the Ethernet.
+It then starts a client session.
+.Bd -literal
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <unistd.h>
+#include <sysexits.h>
+#include <errno.h>
+#include <err.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/select.h>
+#include <net/ethernet.h>
+
+#include <netgraph.h>
+#include <netgraph/ng_ether.h>
+#include <netgraph/ng_pppoe.h>
+#include <netgraph/ng_socket.h>
+static int setup(char *ethername, char *service, char *sessname,
+ int *dfd, int *cfd);
+
+int
+main()
+{
+ int fd1, fd2;
+ setup("xl0", NULL, "fred", &fd1, &fd2);
+ sleep (30);
+}
+
+static int
+setup(char *ethername, char *service, char *sessname,
+ int *dfd, int *cfd)
+{
+ struct ngm_connect ngc; /* connect */
+ struct ngm_mkpeer mkp; /* mkpeer */
+ /******** nodeinfo stuff **********/
+ u_char rbuf[2 * 1024];
+ struct ng_mesg *const resp = (struct ng_mesg *) rbuf;
+ struct hooklist *const hlist
+ = (struct hooklist *) resp->data;
+ struct nodeinfo *const ninfo = &hlist->nodeinfo;
+ int ch, no_hooks = 0;
+ struct linkinfo *link;
+ struct nodeinfo *peer;
+ /****message to connect PPPoE session*****/
+ struct {
+ struct ngpppoe_init_data idata;
+ char service[100];
+ } message;
+ /********tracking our little graph ********/
+ char path[100];
+ char source_ID[NG_NODESIZ];
+ char pppoe_node_name[100];
+ int k;
+
+ /*
+ * Create the data and control sockets
+ */
+ if (NgMkSockNode(NULL, cfd, dfd) < 0) {
+ return (errno);
+ }
+ /*
+ * find the ether node of the name requested by asking it for
+ * it's inquiry information.
+ */
+ if (strlen(ethername) > 16)
+ return (EINVAL);
+ sprintf(path, "%s:", ethername);
+ if (NgSendMsg(*cfd, path, NGM_GENERIC_COOKIE,
+ NGM_LISTHOOKS, NULL, 0) < 0) {
+ return (errno);
+ }
+ /*
+ * the command was accepted so it exists. Await the reply (It's
+ * almost certainly already waiting).
+ */
+ if (NgRecvMsg(*cfd, resp, sizeof(rbuf), NULL) < 0) {
+ return (errno);
+ }
+ /**
+ * The following is available about the node:
+ * ninfo->name (string)
+ * ninfo->type (string)
+ * ninfo->id (u_int32_t)
+ * ninfo->hooks (u_int32_t) (count of hooks)
+ * check it is the correct type. and get it's ID for use
+ * with mkpeer later.
+ */
+ if (strncmp(ninfo->type, NG_ETHER_NODE_TYPE,
+ strlen(NG_ETHER_NODE_TYPE)) != 0) {
+ return (EPROTOTYPE);
+ }
+ sprintf(source_ID, "[%08x]:", ninfo->id);
+
+ /*
+ * look for a hook already attached.
+ */
+ for (k = 0; k < ninfo->hooks; k++) {
+ /**
+ * The following are available about each hook.
+ * link->ourhook (string)
+ * link->peerhook (string)
+ * peer->name (string)
+ * peer->type (string)
+ * peer->id (u_int32_t)
+ * peer->hooks (u_int32_t)
+ */
+ link = &hlist->link[k];
+ peer = &hlist->link[k].nodeinfo;
+
+ /* Ignore debug hooks */
+ if (strcmp("debug", link->ourhook) == 0)
+ continue;
+
+ /* If the orphans hook is attached, use that */
+ if (strcmp(NG_ETHER_HOOK_ORPHAN,
+ link->ourhook) == 0) {
+ break;
+ }
+ /* the other option is the 'divert' hook */
+ if (strcmp("NG_ETHER_HOOK_DIVERT",
+ link->ourhook) == 0) {
+ break;
+ }
+ }
+
+ /*
+ * See if we found a hook there.
+ */
+ if (k < ninfo->hooks) {
+ if (strcmp(peer->type, NG_PPPOE_NODE_TYPE) == 0) {
+ /*
+ * If it's a type PPPoE, we skip making one
+ * ourself, but we continue, using
+ * the existing one.
+ */
+ sprintf(pppoe_node_name, "[%08x]:", peer->id);
+ } else {
+ /*
+ * There is already someone hogging the data,
+ * return an error. Some day we'll try
+ * daisy-chaining..
+ */
+ return (EBUSY);
+ }
+ } else {
+
+ /*
+ * Try make a node of type PPPoE against node "ID"
+ * On hook NG_ETHER_HOOK_ORPHAN.
+ */
+ snprintf(mkp.type, sizeof(mkp.type),
+ "%s", NG_PPPOE_NODE_TYPE);
+ snprintf(mkp.ourhook, sizeof(mkp.ourhook),
+ "%s", NG_ETHER_HOOK_ORPHAN);
+ snprintf(mkp.peerhook, sizeof(mkp.peerhook),
+ "%s", NG_PPPOE_HOOK_ETHERNET);
+ /* Send message */
+ if (NgSendMsg(*cfd, source_ID, NGM_GENERIC_COOKIE,
+ NGM_MKPEER, &mkp, sizeof(mkp)) < 0) {
+ return (errno);
+ }
+ /*
+ * Work out a name for the new node.
+ */
+ sprintf(pppoe_node_name, "%s:%s",
+ source_ID, NG_ETHER_HOOK_ORPHAN);
+ }
+ /*
+ * We now have a PPPoE node attached to the Ethernet
+ * card. The Ethernet is addressed as ethername: The PPPoE
+ * node is addressed as pppoe_node_name: attach to it.
+ * Connect socket node to specified node Use the same hook
+ * name on both ends of the link.
+ */
+ snprintf(ngc.path, sizeof(ngc.path), "%s", pppoe_node_name);
+ snprintf(ngc.ourhook, sizeof(ngc.ourhook), "%s", sessname);
+ snprintf(ngc.peerhook, sizeof(ngc.peerhook), "%s", sessname);
+
+ if (NgSendMsg(*cfd, ".:", NGM_GENERIC_COOKIE,
+ NGM_CONNECT, &ngc, sizeof(ngc)) < 0) {
+ return (errno);
+ }
+
+#ifdef NONSTANDARD
+ /*
+ * In some cases we are speaking to 3Com hardware, so
+ * configure node to non-standard mode.
+ */
+ if (NgSendMsg(*cfd, ngc.path, NGM_PPPOE_COOKIE,
+ NGM_PPPOE_SETMODE, NG_PPPOE_NONSTANDARD,
+ strlen(NG_PPPOE_NONSTANDARD) + 1) == -1) {
+ return (errno);
+ }
+#endif
+
+ /*
+ * Send it a message telling it to start up.
+ */
+ bzero(&message, sizeof(message));
+ snprintf(message.idata.hook, sizeof(message.idata.hook),
+ "%s", sessname);
+ if (service == NULL) {
+ message.idata.data_len = 0;
+ } else {
+ snprintf(message.idata.data,
+ sizeof(message.idata.data), "%s", service);
+ message.idata.data_len = strlen(service);
+ }
+ /* Tell session/hook to start up as a client */
+ if (NgSendMsg(*cfd, ngc.path,
+ NGM_PPPOE_COOKIE, NGM_PPPOE_CONNECT, &message.idata,
+ sizeof(message.idata) + message.idata.data_len) < 0) {
+ return (errno);
+ }
+ return (0);
+}
+.Ed
+.Sh SEE ALSO
+.Xr netgraph 3 ,
+.Xr netgraph 4 ,
+.Xr ng_ether 4 ,
+.Xr ng_ppp 4 ,
+.Xr ng_socket 4 ,
+.Xr ngctl 8 ,
+.Xr ppp 8
+.Rs
+.%A L. Mamakos
+.%A K. Lidl
+.%A J. Evarts
+.%A D. Carrel
+.%A D. Simone
+.%A R. Wheeler
+.%T "A Method for transmitting PPP over Ethernet (PPPoE)"
+.%O RFC 2516
+.Re
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_pptpgre.4 b/share/man/man4/ng_pptpgre.4
new file mode 100644
index 0000000..89557dc
--- /dev/null
+++ b/share/man/man4/ng_pptpgre.4
@@ -0,0 +1,178 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_pptpgre.8,v 1.2 1999/12/08 00:20:53 archie Exp $
+.\"
+.Dd March 29, 2008
+.Dt NG_PPTPGRE 4
+.Os
+.Sh NAME
+.Nm ng_pptpgre
+.Nd PPTP GRE protocol netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_pptpgre.h
+.Sh DESCRIPTION
+The
+.Nm pptpgre
+node type performs Generic Routing Encapsulation (GRE) over IP
+for the PPTP protocol as specified by RFC 2637.
+This involves packet
+encapsulation, sequencing, acknowledgement, and an adaptive timeout
+sliding window mechanism.
+This node type does not handle any of
+the TCP control protocol or call negotiation defined by PPTP.
+.Pp
+This node type expects to receive complete IP packets,
+including the IP header, on the
+.Dq Li lower
+hook, but it transmits outgoing frames without any IP header.
+The typical use for this node type would be to connect the
+.Dq Li upper
+hook to one of the link hooks of a
+.Xr ng_ppp 4
+node, and the
+.Dq Li lower
+hook to the
+.Dq Li "inet/raw/gre"
+hook of a
+.Xr ng_ksocket 4
+node.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -compact -width ".Li session_hhhh"
+.It Li session_hhhh
+Session 0xhhhh data packets to the upper protocol layers
+.It Li upper
+Same as session_hhhh, but for single session with configurable cid (legacy)
+.It Li lower
+Connection to the lower protocol layers
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_PPTPGRE_SET_CONFIG
+This command resets and configures hook for a session. If corresponding
+session_hhhh hook is not connected, upper hook will be configured.
+This command takes a
+.Vt "struct ng_pptpgre_conf"
+as an argument:
+.Bd -literal
+/* Configuration for a session */
+struct ng_pptpgre_conf {
+ u_char enabled; /* enables traffic flow */
+ u_char enableDelayedAck; /* enables delayed acks */
+ u_char enableAlwaysAck; /* always send ack with data */
+ u_char enableWindowing; /* enable windowing algorithm */
+ u_int16_t cid; /* my call id */
+ u_int16_t peerCid; /* peer call id */
+ u_int16_t recvWin; /* peer recv window size */
+ u_int16_t peerPpd; /* peer packet processing delay
+ (in 1/10 of a second) */
+};
+.Ed
+.Pp
+The
+.Va enabled
+field enables traffic flow through the node.
+The
+.Va enableDelayedAck
+field enables delayed acknowledgement (maximum 250 milliseconds), which
+is a useful optimization and should generally be turned on.
+.Va enableAlwaysAck
+field enables sending acknowledgements with every data packet, which
+is probably helpful as well.
+.Pp
+.Va enableWindowing
+enables the PPTP packet windowing mechanism specified by the protocol.
+Disabling this will cause the node to violate the protocol, possibly
+confusing other PPTP peers, but often results in better performance.
+The windowing mechanism is a design error in the PPTP protocol;
+L2TP, the successor to PPTP, removes it.
+.Pp
+The remaining fields are as supplied by the PPTP virtual call setup process.
+.It Dv NGM_PPTPGRE_GET_CONFIG
+Takes two byte argument as cid and returns the current configuration as a
+.Vt "struct ng_pptpgre_conf" .
+.It Dv NGM_PPTPGRE_GET_STATS
+This command returns a
+.Vt "struct ng_pptpgre_stats"
+containing various node statistics.
+.It Dv NGM_PPTPGRE_CLR_STATS
+This command resets the node statistics.
+.It Dv NGM_PPTPGRE_GETCLR_STATS
+This command atomically gets and resets the node statistics, returning a
+.Vt "struct ng_pptpgre_stats" .
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when both hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ksocket 4 ,
+.Xr ng_ppp 4 ,
+.Xr ngctl 8
+.Rs
+.%A K. Hamzeh
+.%A G. Pall
+.%A W. Verthein
+.%A J. Taarud
+.%A W. Little
+.%A G. Zorn
+.%T "Point-to-Point Tunneling Protocol (PPTP)"
+.%O RFC 2637
+.Re
+.Rs
+.%A S. Hanks
+.%A T. \&Li
+.%A D. Farinacci
+.%A P. Traina
+.%T "Generic Routing Encapsulation over IPv4 networks"
+.%O RFC 1702
+.Re
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
+.Sh BUGS
+The node should not expect incoming GRE packets to have an IP header.
+This behavior is inherited from the (converse) behavior of raw IP sockets.
+An intermediate node that strips IP headers in one direction
+should be used instead.
diff --git a/share/man/man4/ng_pred1.4 b/share/man/man4/ng_pred1.4
new file mode 100644
index 0000000..0048962
--- /dev/null
+++ b/share/man/man4/ng_pred1.4
@@ -0,0 +1,145 @@
+.\"
+.\" Copyright (c) 2006, Alexander Motin <mav@alkar.net>
+.\" 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 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$
+.\"
+.Dd December 24, 2006
+.Dt NG_PRED1 4
+.Os
+.Sh NAME
+.Nm ng_pred1
+.Nd Predictor-1 PPP compression (RFC 1978) netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_pred1.h
+.Sh DESCRIPTION
+The
+.Nm pred1
+node type implements the Predictor-1 sub-protocols of the Compression Control
+Protocol (CCP).
+.Pp
+The node has two hooks,
+.Va comp
+for compression and
+.Va decomp
+for decompression.
+Only one of them can be connected at the same time, specifying node's
+operation mode.
+Typically that hooks would be connected to the
+.Xr ng_ppp 4
+node type hook of the same name.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -compact -width decomp
+.It Va comp
+Connection to
+.Xr ng_ppp 4
+.Va compress
+hook.
+Incoming frames are compressed and sent back out the same hook.
+.It Va decomp
+Connection to
+.Xr ng_ppp 4
+.Va decompress
+hook.
+Incoming frames are decompressed and sent back out the same hook.
+.El
+.Pp
+Only one hook can be connected at the same time,
+specifying node's operation mode.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_PRED1_CONFIG Pq Li config
+This command resets and configures the node for a session
+(i.e., for compression or decompression).
+This command takes a
+.Vt "struct ng_pred1_config"
+as an argument:
+.Bd -literal -offset 0n
+struct ng_pred1_config {
+ u_char enable; /* node enabled */
+};
+.Ed
+The
+.Ft enable
+field enables traffic flow through the node.
+.It Dv NGM_PRED1_RESETREQ Pq Li resetreq
+This message contains no arguments, and is bi-directional.
+If an error is detected during decompression, this message is sent by the
+node to the originator of the
+.Dv NGM_PRED1_CONFIG
+message that initiated the session.
+The receiver should respond by sending a PPP CCP Reset-Request to the peer.
+.Pp
+This message may also be received by this node type when a CCP Reset-Request
+or Reset-Ack is received by the local PPP entity.
+The node will respond by flushing its compression state so the sides
+can resynchronize.
+.It Dv NGM_PRED1_GET_STATS Pq Li getstats
+This control message obtains statistics for a given hook.
+The statistics are returned in
+.Vt "struct ng_pred1_stats" :
+.Bd -literal
+struct ng_pred1_stats {
+ uint64_t FramesPlain;
+ uint64_t FramesComp;
+ uint64_t FramesUncomp;
+ uint64_t InOctets;
+ uint64_t OutOctets;
+ uint64_t Errors;
+};
+.Ed
+.It Dv NGM_PRED1_CLR_STATS Pq Li clrstats
+This control message clears statistics for a given hook.
+.It Dv NGM_PRED1_GETCLR_STATS Pq Li getclrstats
+This control message obtains and clears statistics for a given hook.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when hook have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ppp 4 ,
+.Xr ngctl 8
+.Rs
+.%A D. Rand
+.%T "PPP Predictor Compression Protocol"
+.%O RFC 1978
+.Re
+.Rs
+.%A W. Simpson
+.%T "The Point-to-Point Protocol (PPP)"
+.%O RFC 1661
+.Re
+.Sh AUTHORS
+.An Alexander Motin Aq mav@alkar.net
+.Sh BUGS
+Due to nature of netgraph PPP implementation there are possible race conditions
+between data packet and ResetAck CCP packet in case of packet loss. As result,
+packet loss can produce bigger performance degradation than supposed by protocol.
diff --git a/share/man/man4/ng_rfc1490.4 b/share/man/man4/ng_rfc1490.4
new file mode 100644
index 0000000..54b327e
--- /dev/null
+++ b/share/man/man4/ng_rfc1490.4
@@ -0,0 +1,142 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_rfc1490.8,v 1.4 1999/01/25 23:46:27 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_RFC1490 4
+.Os
+.Sh NAME
+.Nm ng_rfc1490
+.Nd RFC 1490 netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_rfc1490.h
+.Sh DESCRIPTION
+The
+.Nm rfc1490
+node type performs protocol encapsulation, de-encapsulation, and
+multiplexing according to RFC 1490 (which has since been updated by RFC 2427).
+This particular type of encapsulation is often used on top of frame relay
+DLCI channels.
+.Pp
+The
+.Dv downstream
+hook is used to transmit and receive encapsulated frames.
+On the other side of the node, the
+.Dv inet
+and
+.Dv ppp
+hooks are used to transmit and receive raw IP frames and PPP frames,
+respectively.
+PPP frames are transmitted and received according to
+RFC 1973; in particular, frames appearing on the
+.Dv ppp
+hook begin with the PPP protocol number.
+The
+.Dv ethernet
+hook can be used to transmit and receive Ethernet frames (without a
+checksum) in RFC 1490's bridging format.
+.Pp
+Typically the
+.Dv inet
+hook is connected to the
+.Dv inet
+hook of an
+.Xr ng_iface 4
+node.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobarbazum
+.It Dv downstream
+Connects to the RFC 1490 peer entity.
+.It Dv ethernet
+Transmits and receives bridged raw Ethernet frames, without a checksum.
+.It Dv inet
+Transmits and receives raw IP frames.
+.It Dv ppp
+Transmits and receives PPP frames.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_RFC1490_SETENCAP
+This command sets encapsulation method for the node.
+The desired method must be passed as a string message argument,
+and must be one of the following supported encapsulation modes:
+.Bl -tag -width ".Qq Li ietf-snap"
+.It Qq Li ietf-ip
+IP packets are sent using simple RFC1490/2427 encapsulation.
+.It Qq Li ietf-snap
+IP packets are sent inside SNAP frames.
+Also conforms to RFC1490/2427.
+.It Qq Li cisco
+IP packets are sent and received using proprietary Cisco encapsulation
+method.
+.El
+.It Dv NGM_RFC1490_GETENCAP
+This command returns current encapsulation method on the node.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_frame_relay 4 ,
+.Xr ng_iface 4 ,
+.Xr ngctl 8
+.Rs
+.%A C. Brown
+.%A A. Malis
+.%T "Multiprotocol Interconnect over Frame Relay"
+.%O RFC 2427
+.Re
+.Rs
+.%A W. Simpson
+.%T "PPP in Frame Relay"
+.%O RFC 1973
+.Re
+.Pp
+.Pa http://www.cisco.com/warp/public/121/frf8modes.pdf
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
+.Sh BUGS
+Not all of RFC 1490 is implemented.
diff --git a/share/man/man4/ng_socket.4 b/share/man/man4/ng_socket.4
new file mode 100644
index 0000000..22c6638
--- /dev/null
+++ b/share/man/man4/ng_socket.4
@@ -0,0 +1,189 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_socket.8,v 1.5 1999/01/25 23:46:27 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_SOCKET 4
+.Os
+.Sh NAME
+.Nm ng_socket
+.Nd netgraph socket node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_socket.h
+.Sh DESCRIPTION
+A
+.Nm socket
+node is both a
+.Bx
+socket and a netgraph node.
+The
+.Nm
+node type allows user-mode processes to participate in the kernel
+.Xr netgraph 4
+networking subsystem using the
+.Bx
+socket interface.
+The process must have
+root privileges to be able to create netgraph sockets however once created,
+any process that has one may use it.
+.Pp
+A new
+.Nm
+node is created by creating a new socket of type
+.Dv NG_CONTROL
+in the protocol family
+.Dv PF_NETGRAPH ,
+using the
+.Xr socket 2
+system call.
+Any control messages received by the node
+and not having a cookie value of
+.Dv NGM_SOCKET_COOKIE
+are received by the process, using
+.Xr recvfrom 2 ;
+the socket address argument is a
+.Dv "struct sockaddr_ng"
+containing the sender's netgraph address.
+Conversely, control messages can be sent to any node by calling
+.Xr sendto 2 ,
+supplying the recipient's address in a
+.Dv "struct sockaddr_ng" .
+The
+.Xr bind 2
+system call may be used to assign a global netgraph name to the node.
+.Pp
+To transmit and receive netgraph data packets, a
+.Dv NG_DATA
+socket must also be created using
+.Xr socket 2
+and associated with a
+.Nm
+node.
+.Dv NG_DATA sockets do not automatically
+have nodes associated with them; they are bound to a specific node via the
+.Xr connect 2
+system call.
+The address argument is the netgraph address of the
+.Nm
+node already created.
+Once a data socket is associated with a node,
+any data packets received by the node are read using
+.Xr recvfrom 2
+and any packets to be sent out from the node are written using
+.Xr sendto 2 .
+In the case of data sockets, the
+.Dv "struct sockaddr_ng"
+contains the name of the
+.Em hook
+on which the data was received or should be sent.
+.Pp
+As a special case, to allow netgraph data sockets to be used as stdin or stdout
+on naive programs, a
+.Xr sendto 2
+with a NULL sockaddr pointer, a
+.Xr send 2
+or a
+.Xr write 2
+will succeed in the case where there is exactly ONE hook attached to
+the socket node, (and thus the path is unambiguous).
+.Pp
+There is a user library that simplifies using netgraph sockets; see
+.Xr netgraph 3 .
+.Sh HOOKS
+This node type supports hooks with arbitrary names (as long as
+they are unique) and always accepts hook connection requests.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_SOCK_CMD_NOLINGER
+When the last hook is removed from this node, it will shut down as
+if it had received a
+.Dv NGM_SHUTDOWN
+message.
+Attempts to access the sockets associated will return
+.Er ENOTCONN .
+.It Dv NGM_SOCK_CMD_LINGER
+This is the default mode.
+When the last hook is removed, the node will
+continue to exist, ready to accept new hooks until it
+is explicitly shut down.
+.El
+.Pp
+All other messages
+with neither the
+.Dv NGM_SOCKET_COOKIE
+or
+.Dv NGM_GENERIC_COOKIE
+will be passed unaltered up the
+.Dv NG_CONTROL
+socket.
+.Sh SHUTDOWN
+This node type shuts down and disappears when both the associated
+.Dv NG_CONTROL
+and
+.Dv NG_DATA
+sockets have been closed, or a
+.Dv NGM_SHUTDOWN
+control message is received.
+In the latter case, attempts to write
+to the still-open sockets will return
+.Er ENOTCONN .
+If the
+.Dv NGM_SOCK_CMD_NOLINGER
+message has been received, closure of the last hook will also initiate
+a shutdown of the node.
+.Sh SEE ALSO
+.Xr socket 2 ,
+.Xr netgraph 3 ,
+.Xr netgraph 4 ,
+.Xr ng_ksocket 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
+.Sh BUGS
+It is not possible to reject the connection of a hook, though any
+data received on that hook can certainly be ignored.
+.Pp
+The controlling process is not notified of all events that an in-kernel node
+would be notified of, e.g.\& a new hook, or hook removal.
+Some node-initiated messages should be defined for this purpose (to be
+sent up the control socket).
diff --git a/share/man/man4/ng_source.4 b/share/man/man4/ng_source.4
new file mode 100644
index 0000000..7c55751
--- /dev/null
+++ b/share/man/man4/ng_source.4
@@ -0,0 +1,349 @@
+.\" Copyright 2002-2007 Sandvine Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Sandvine Inc.; provided,
+.\" however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Sandvine Inc.
+.\" trademarks, including the mark "SANDVINE" on advertising, endorsements,
+.\" or otherwise except as such appears in the above copyright notice or in
+.\" the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY SANDVINE "AS IS", AND TO THE MAXIMUM
+.\" EXTENT PERMITTED BY LAW, SANDVINE MAKES NO REPRESENTATIONS OR WARRANTIES,
+.\" EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE, INCLUDING WITHOUT LIMITATION,
+.\" ANY AND ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+.\" PURPOSE, OR NON-INFRINGEMENT. SANDVINE DOES NOT WARRANT, GUARANTEE, OR
+.\" MAKE ANY REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE
+.\" USE OF THIS SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY
+.\" OR OTHERWISE. IN NO EVENT SHALL SANDVINE BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 SANDVINE IS ADVISED OF THE POSSIBILITY OF SUCH
+.\" DAMAGE.
+.\"
+.\" Author: Dave Chapeskie
+.\" $FreeBSD$
+.\"
+.Dd March 1, 2007
+.Dt NG_SOURCE 4
+.Os
+.Sh NAME
+.Nm ng_source
+.Nd netgraph node for traffic generation
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_source.h
+.Sh DESCRIPTION
+The
+.Nm source
+node acts as a source of packets according to the parameters set up
+using control messages and input packets.
+The
+.Nm
+node type is used primarily for testing and benchmarking.
+.Sh HOOKS
+The
+.Nm source
+node has two hooks:
+.Va input
+and
+.Va output .
+The
+.Va output
+hook must remain connected, its disconnection will shutdown the node.
+.Sh OPERATION
+The operation of the node is as follows.
+Packets received on the
+.Va input
+hook are queued internally.
+When
+.Va output
+hook is connected,
+.Nm
+node assumes that its neighbour node is of
+.Xr ng_ether 4
+node type.
+The neighbour is queried for its interface name.
+The
+.Nm
+node then uses queue of the interface for its evil purposes.
+The
+.Nm
+node also disables
+.Va autosrc
+option on neighbour
+.Xr ng_ether 4
+node.
+If interface name cannot be obtained automatically, it should
+be configured explicitly with the
+.Dv NGM_SOURCE_SETIFACE
+control message, and
+.Va autosrc
+should be turned off on
+.Xr ng_ether 4
+node manually.
+.Pp
+Once interface is configured, upon receipt of a
+.Dv NGM_SOURCE_START
+control message the node starts sending
+the previously queued packets out the
+.Va output
+hook on every clock tick as fast
+as the connected interface will take them.
+While active, on every clock tick the node checks the available space
+in the interface queue and sends that many packets out its
+.Va output
+hook.
+Once the number of packets indicated in the start message has been
+sent, or upon receipt of a
+.Dv NGM_SOURCE_STOP
+message, the node stops sending data.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages as well as the following,
+which must be sent with the
+.Dv NGM_SOURCE_COOKIE
+attached.
+.Bl -tag -width indent
+.It Dv NGM_SOURCE_GET_STATS Pq Ic getstats
+Returns a structure containing the following fields:
+.Bl -tag -width indent
+.It Va outOctets
+The number of octets/bytes sent out the
+.Va output
+hook.
+.It Va outFrames
+The number of frames/packets sent out the
+.Va output
+hook.
+.It Va queueOctets
+The number of octets queued from the
+.Va input
+hook.
+.It Va queueFrames
+The number of frames queued from the
+.Va input
+hook.
+.It Va startTime
+The time the last start message was received.
+.It Va endTime
+The time the last end message was received or
+the output packet count was reached.
+.It Va elapsedTime
+Either
+.Va endTime Li \- Va startTime
+or current time
+\-
+.Va startTime .
+.El
+.It Dv NGM_SOURCE_CLR_STATS Pq Ic clrstats
+Clears and resets the statistics returned by
+.Ic getstats
+(except
+.Va queueOctets
+and
+.Va queueFrames ) .
+.It Dv NGM_SOURCE_GETCLR_STATS Pq Ic getclrstats
+As
+.Ic getstats
+but clears the statistics at the same time.
+.It Dv NGM_SOURCE_START Pq Ic start
+This message requires a single
+.Vt uint64_t
+parameter which is the number of packets to
+send before stopping.
+Node starts sending the queued packets out the
+.Va output
+hook.
+The
+.Va output
+hook must be connected and node must have
+interface configured.
+.It Dv NGM_SOURCE_STOP Pq Ic stop
+Stops the node if it is active.
+.It Dv NGM_SOURCE_CLR_DATA Pq Ic clrdata
+Clears the packets queued from the
+.Va input
+hook.
+.It Dv NGM_SOURCE_SETIFACE Pq Ic setiface
+This message requires the name of the interface
+to be configured as an argument.
+.It Dv NGM_SOURCE_SETPPS Pq Ic setpps
+This message requires a single
+.Vt uint32_t
+parameter which puts upper limit on the amount of packets
+sent per second.
+.It Dv NGM_SOURCE_SET_TIMESTAMP Pq Ic settimestamp
+This message specifies that a timestamp (in the format of a
+.Vt "struct timeval" )
+should be inserted in the transmitted packets.
+This message requires a structure containing the following fields:
+.Bl -tag -width indent
+.It Va offset
+The offset from the beginning of the packet at which the timestamp is to be
+inserted.
+.It Va flags
+Set to 1 to enable the timestamp.
+.El
+.It Dv NGM_SOURCE_GET_TIMESTAMP Pq Ic gettimestamp
+Returns the current timestamp settings in the form of the structure described
+above.
+.It Dv NGM_SOURCE_SET_COUNTER Pq Ic setcounter
+This message specifies that a counter should be embedded in transmitted
+packets.
+Up to four counters may be independently configured.
+This message requires a structure containing the following fields:
+.Bl -tag -width indent
+.It Va offset
+The offset from the beginning of the packet at which the counter is to be
+inserted.
+.It Va flags
+Set to 1 to enable the counter.
+.It Va width
+The byte width of the counter.
+It may be 1, 2, or 4.
+.It Va next_val
+The value for the next insertion of the counter.
+.It Va min_val
+The minimum value to be used by the counter.
+.It Va max_val
+The maximum value to be used by the counter.
+.It Va increment
+The value to be added to the counter after each insertion.
+It may be negative.
+.It Va index
+The counter to be configured, from 0 to 3.
+.El
+.It Dv NGM_SOURCE_GET_COUNTER Pq Ic getcounter
+This message requires a single
+.Vt uint8_t
+parameter which specifies the counter to query.
+Returns the current counter settings in the form of the structure described
+above.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, when all hooks have been disconnected, or when the
+.Va output
+hook has been disconnected.
+.Sh EXAMPLES
+Attach the node to an
+.Xr ng_ether 4
+node for an interface.
+If
+.Nm ng_ether
+is
+not already loaded you will need to do so.
+For example, these commands
+load the
+.Nm ng_ether
+module and attach the
+.Va output
+hook of a new
+.Nm source
+node to
+.Va orphans
+hook of the
+.Li bge0:
+.Nm ng_ether
+node.
+.Bd -literal -offset indent
+kldload ng_ether
+ngctl mkpeer bge0: source orphans output
+.Ed
+.Pp
+At this point the new node can be referred to as
+.Dq Li bge0:orphans .
+The
+node can be given its own name like this:
+.Pp
+.Dl "ngctl name bge0:orphans src0"
+.Pp
+After which it can be referred to as
+.Dq Li src0: .
+.Pp
+Once created, packets can be sent to the node as raw binary data.
+Each packet must be delivered in a separate netgraph message.
+.Pp
+The following example uses a short Perl script to convert the hex
+representation of an ICMP packet to binary and deliver it to the
+.Nm source
+node's
+.Va input
+hook via
+.Xr nghook 8 :
+.Bd -literal -offset indent
+perl -pe 's/(..)[ \et\en]*/chr(hex($1))/ge' <<EOF | nghook src0: input
+ff ff ff ff ff ff 00 00 00 00 00 00 08 00 45 00
+00 54 cb 13 00 00 40 01 b9 87 c0 a8 2b 65 0a 00
+00 01 08 00 f8 d0 c9 76 00 00 45 37 01 73 00 01
+04 0a 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15
+16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
+26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35
+36 37
+EOF
+.Ed
+.Pp
+To check that the node has queued these packets you can get the node
+statistics:
+.Bd -literal -offset indent
+ngctl msg bge0:orphans getstats
+Args: { queueOctets=64 queueFrames=1 }
+.Ed
+.Pp
+Send as many packets as required out the
+.Va output
+hook:
+.Pp
+.Dl "ngctl msg bge0:orphans start 16"
+.Pp
+Either wait for them to be sent (periodically fetching stats if desired)
+or send the stop message:
+.Pp
+.Dl "ngctl msg bge0:orphans stop"
+.Pp
+Check the statistics (here we use
+.Ic getclrstats
+to also clear the statistics):
+.Bd -literal -offset indent
+ngctl msg bge0:orphans getclrstats
+Args: { outOctets=1024 outFrames=16 queueOctets=64 queueFrames=1
+startTime={ tv_sec=1035305880 tv_usec=758036 } endTime={ tv_sec=1035305880
+tv_usec=759041 } elapsedTime={ tv_usec=1005 } }
+.Ed
+.Pp
+The times are from
+.Vt "struct timeval" Ns s ,
+the
+.Va tv_sec
+field is seconds since
+the Epoch and can be converted into a date string via TCL's [clock
+format] or via the
+.Xr date 1
+command:
+.Bd -literal -offset indent
+date -r 1035305880
+Tue Oct 22 12:58:00 EDT 2002
+.Ed
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_echo 4 ,
+.Xr ng_hole 4 ,
+.Xr ng_tee 4 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.8 .
+.Sh AUTHORS
+.An Dave Chapeskie
diff --git a/share/man/man4/ng_split.4 b/share/man/man4/ng_split.4
new file mode 100644
index 0000000..9b74863
--- /dev/null
+++ b/share/man/man4/ng_split.4
@@ -0,0 +1,88 @@
+.\" Copyright (c) 2001 FreeBSD inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by FreeBSD Inc.;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use FreeBSD
+.\" Inc., Inc. trademarks, including the mark "FREEBSD
+.\" INC." on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY FREEBSD INC. "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, FreeBSD Inc. MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" FreeBSD Inc. DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL FreeBSD Inc. BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 FreeBSD Inc. IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Julian Elischer <julian@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 19, 2001
+.Dt NG_SPLIT 4
+.Os
+.Sh NAME
+.Nm ng_split
+.Nd netgraph node to separate incoming and outgoing flows
+.Sh SYNOPSIS
+.In netgraph/ng_split.h
+.Sh DESCRIPTION
+The
+.Nm split
+node type is used to split a bidirectional stream of packets into
+two separate unidirectional streams of packets.
+.Sh HOOKS
+This node type supports the following three hooks:
+.Bl -tag -width foobar
+.It Dv in
+Packets received on
+.Em in
+are forwarded to
+.Em mixed .
+.It Dv out
+Packets received on
+.Em out
+will be discarded as illegal.
+.It Dv mixed
+Packets received on
+.Em mixed
+are forwarded to
+.Em out .
+.El
+.Sh CONTROL MESSAGES
+This node type supports only the generic control messages.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 3.5
+but incorporated into
+.Fx
+in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
+.An Vitaly V. Belekhov Aq vitaly@riss-telecom.ru
diff --git a/share/man/man4/ng_sppp.4 b/share/man/man4/ng_sppp.4
new file mode 100644
index 0000000..49f8a4c
--- /dev/null
+++ b/share/man/man4/ng_sppp.4
@@ -0,0 +1,172 @@
+.\" Copyright (C) 2003-2004 Cronyx Engineering.
+.\" Copyright (C) 2003-2004 Roman Kurakin <rik@cronyx.ru>
+.\"
+.\" This software is distributed with NO WARRANTIES, not even the implied
+.\" warranties for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+.\"
+.\" Authors grant any other persons or organisations a permission to use,
+.\" modify and redistribute this software in source and binary forms,
+.\" as long as this message is kept with the software, all derivative
+.\" works or modified versions.
+.\"
+.\" Cronyx Id: ng_sppp.4,v 1.1.2.3 2004/03/30 14:28:34 rik Exp $
+.\" $FreeBSD$
+.\"
+.Dd February 3, 2005
+.Dt NG_SPPP 4
+.Os
+.Sh NAME
+.Nm ng_sppp
+.Nd sppp netgraph node type
+.Sh SYNOPSIS
+.In netgraph/ng_sppp.h
+.Sh DESCRIPTION
+An
+.Nm sppp
+node is a
+.Xr netgraph 4
+interface to the original
+.Xr sppp 4
+network module for synchronous lines.
+Currently,
+.Xr sppp 4
+supports PPP and Cisco HDLC protocols.
+An
+.Nm sppp
+node could be considered as an alternative kernel mode PPP
+implementation to
+.Pa net/mpd
+port +
+.Xr ng_ppp 4 ,
+and as an alternative to
+.Xr ng_cisco 4
+node.
+While having less features than
+.Pa net/mpd
++
+.Xr ng_ppp 4 ,
+it is significantly easier to use in the majority of simple configurations,
+and allows the administrator to not install the
+.Pa net/mpd
+port.
+With
+.Nm sppp
+you do not need any other nodes, not even an
+.Xr ng_iface 4
+node.
+When an
+.Nm sppp
+node is created, a new interface appears which is accessible via
+.Xr ifconfig 8 .
+Network interfaces corresponding to
+.Nm sppp
+nodes are named
+.Li sppp0 , sppp1 ,
+etc.
+When a node is shut down, the corresponding interface is removed,
+and the interface name becomes available for reuse by future
+.Nm sppp
+nodes.
+New nodes always take the first unused interface.
+The node itself is assigned the same name as its interface, unless the name
+already exists, in which case the node remains unnamed.
+The
+.Nm sppp
+node allows drivers written to the old
+.Xr sppp 4
+interface to be rewritten using the
+newer more powerful
+.Xr netgraph 4
+interface, and still behave in a compatible manner without supporting both
+network modules.
+.Pp
+An
+.Nm sppp
+node has a single hook named
+.Va downstream .
+Usually it is connected directly to
+a device driver hook.
+.Pp
+The
+.Nm sppp
+nodes support the Berkeley Packet Filter,
+.Xr bpf 4 .
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width ".Va downstream"
+.It Va downstream
+The connection to the synchronous line.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_IFACE_GET_IFNAME
+Returns the name of the associated interface as a
+.Dv NUL Ns -terminated
+.Tn ASCII
+string.
+Normally this is the same as the name of the node.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message.
+The associated interface is removed and becomes available
+for use by future
+.Nm sppp
+nodes.
+.Pp
+Unlike most other node types and like
+.Xr ng_iface 4
+does, an
+.Nm sppp
+node does
+.Em not
+go away when all hooks have been disconnected; rather, an explicit
+.Dv NGM_SHUTDOWN
+control message is required.
+.Sh EXAMPLES
+For example, if you have the
+.Xr cx 4
+device, you could run PPP over it with just one command:
+.Pp
+.Dl "ngctl mkpeer cx0: sppp rawdata downstream"
+.Pp
+Now you have the
+.Li sppp0
+interface (if this was the first
+.Nm sppp
+node) which can be
+accessed via
+.Xr ifconfig 8
+as a normal network interface,
+or via
+.Xr spppcontrol 8
+as an
+.Xr sppp 4
+interface.
+.Sh SEE ALSO
+.Xr bpf 4 ,
+.Xr cx 4 ,
+.Xr netgraph 4 ,
+.Xr ng_cisco 4 ,
+.Xr ng_iface 4 ,
+.Xr ng_ppp 4 ,
+.Xr sppp 4 ,
+.Xr ifconfig 8 ,
+.Xr ngctl 8 ,
+.Xr spppcontrol 8
+.Pp
+For complex networking topologies you may want to look at
+.Pa net/mpd
+port.
+.Sh HISTORY
+The
+.Nm sppp
+node type was implemented for
+.Fx 5.0 .
+It was included to the system since
+.Fx 5.3 .
+.Sh AUTHORS
+Copyright (C) 2003-2004
+.An Roman Kurakin Aq rik@cronyx.ru .
diff --git a/share/man/man4/ng_sscfu.4 b/share/man/man4/ng_sscfu.4
new file mode 100644
index 0000000..0679d58
--- /dev/null
+++ b/share/man/man4/ng_sscfu.4
@@ -0,0 +1,161 @@
+.\"
+.\" Copyright (c) 2001-2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.\" ng_sscfu(4) man page
+.\"
+.Dd October 24, 2003
+.Dt NG_SSCFU 4
+.Os
+.Sh NAME
+.Nm ng_sscfu
+.Nd netgraph SSCF at the UNI node type
+.Sh SYNOPSIS
+.In netnatm/saal/sscopdef.h
+.In netnatm/saal/sscfudef.h
+.In netgraph/atm/ng_sscfu.h
+.Sh DESCRIPTION
+The
+.Nm sscfu
+netgraph node type implements ITU-T recommendation Q.2130.
+This recommendation specifies the Service Specific Coordination
+Function at the UNI.
+This is a thin sub-layer between the SSCOP (see
+.Xr ng_sscop 4 )
+and the UNI signalling.
+This node does not really implement a protocol but
+provides a mapping between the signals at the upper layer of the SSCOP and
+the signals the UNI expects at its lower layer.
+It also provides default values for the parameters of the SSCOP.
+.Pp
+After creation of the node, the SSCF instance must be created by sending
+an
+.Dq enable
+message to the node.
+If the node is enabled, default SSCOP parameters
+can be retrieved and set in the corresponding SSCOP instance.
+.Pp
+The node is shut down either by a
+.Dv NGM_SHUTDOWN
+message, or when all hooks are disconnected.
+.Sh HOOKS
+Each
+.Nm sscfu
+node has two hooks with fixed names:
+.Bl -tag -width ".Va upper"
+.It Va lower
+This hook is the interface to the SSCOP.
+The interface expected here is exactly
+that which is exported by the
+.Xr ng_sscop 4
+node type.
+.It Va upper
+This is the interface to the UNI.
+It uses the following message format:
+.Bd -literal
+struct sscfu_arg {
+ uint32_t sig;
+ u_char data[];
+};
+.Ed
+.Pp
+The
+.Va sig
+field
+is one of the following signals:
+.Bd -literal
+enum saal_sig {
+ SAAL_ESTABLISH_request, /* U -> SAAL: (UU) */
+ SAAL_ESTABLISH_indication, /* SAAL -> U: (UU) */
+ SAAL_ESTABLISH_confirm, /* SAAL -> U: (UU) */
+ SAAL_RELEASE_request, /* U -> SAAL: (UU) */
+ SAAL_RELEASE_confirm, /* SAAL -> U: */
+ SAAL_RELEASE_indication, /* SAAL -> U: (UU) */
+ SAAL_DATA_request, /* U -> SAAL: (DATA) */
+ SAAL_DATA_indication, /* SAAL -> U: (DATA) */
+ SAAL_UDATA_request, /* U -> SAAL: (UDATA) */
+ SAAL_UDATA_indication, /* SAAL -> U: (UDATA) */
+};
+.Ed
+.Pp
+The arrows in the comment show the direction of the signal, whether it
+is a signal that comes out of the node
+.Pq Ql -> ,
+or is sent by the node user to the node
+.Pq Ql <- .
+The type of the data expected for the signal is specified in parentheses.
+This data starts at the
+.Va data
+field of the message structure.
+.El
+.Pp
+If the
+.Va lower
+hook is disconnected and the node is enabled, the protocol state is
+reset.
+.Sh CONTROL MESSAGES
+The
+.Nm sscfu
+node understands the generic messages plus the following:
+.Bl -tag -width indent
+.It Dv NGM_SSCFU_GETDEFPARAM
+This message returns a
+.Vt sscop_param
+structure, which contains the default parameters for the SSCOP at the
+UNI.
+This structure should be used for a
+.Dv NGM_SSCOP_SETPARAM
+message to the SSCOP node below the SSCF.
+.It Dv NGM_SSCFU_ENABLE
+This message creates the actual SSCF instance and initializes it.
+Until this is done, parameters may neither be retrieved nor set,
+and all messages
+received on any hook are discarded.
+.It Dv NGM_SSCFU_DISABLE
+Destroy the SSCF instance.
+After this, all messages on any hooks are discarded.
+.It Dv NGM_SSCFU_GETDEBUG
+Retrieve the debugging flags in a
+.Vt uint32_t .
+.It Dv NGM_SSCFU_SETDEBUG
+Set debugging flags.
+The argument must be a
+.Vt uint32_t .
+.It Dv NGM_SSCFU_GETSTATE
+Retrieve the current state of the SSCFU instance in a
+.Vt uint32_t .
+If the node has not been enabled, 0 is returned.
+.El
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_atm 4 ,
+.Xr ng_sscop 4 ,
+.Xr ngctl 8
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/ng_sscop.4 b/share/man/man4/ng_sscop.4
new file mode 100644
index 0000000..0c6f0d4
--- /dev/null
+++ b/share/man/man4/ng_sscop.4
@@ -0,0 +1,403 @@
+.\"
+.\" Copyright (c) 2001-2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.\" ng_sscop(4) man page
+.\"
+.Dd October 24, 2003
+.Dt NG_SSCOP 4
+.Os
+.Sh NAME
+.Nm ng_sscop
+.Nd netgraph SSCOP node type
+.Sh SYNOPSIS
+.In netnatm/saal/sscopdef.h
+.In netgraph/atm/ng_sscop.h
+.Sh DESCRIPTION
+The
+.Nm sscop
+netgraph node type implements the ITU-T standard Q.2110.
+This standard describes
+the so called Service Specific Connection Oriented Protocol (SSCOP) that
+is used to carry signalling messages over the private and public UNIs and
+the public NNI.
+This protocol is a transport protocol with selective
+acknowledgements, and can be tailored to the environment.
+This implementation is a full implementation of that standard.
+.Pp
+After creation of the node, the SSCOP instance must be created by sending
+an
+.Dq enable
+message to the node.
+If the node is enabled, the SSCOP parameters
+can be retrieved and modified and the protocol can be started.
+.Pp
+The node is shut down either by a
+.Dv NGM_SHUTDOWN
+message, or when all hooks are disconnected.
+.Sh HOOKS
+Each
+.Nm sscop
+node has three hooks with fixed names:
+.Bl -tag -width ".Va manage"
+.It Va lower
+This hook must be connected to a node that ensures
+transport of packets to and from the remote peer node.
+Normally this is a
+.Xr ng_atm 4
+node with an AAL5 hook, but the
+.Nm sscop
+node is able to work on any packet-transporting layer, like, for example,
+IP or UDP.
+The node handles flow control messages received on
+this hook: if it receives a
+.Dv NGM_HIGH_WATER_PASSED
+message, it declares the
+.Dq "lower layer busy"
+state.
+If a
+.Dv NGM_LOW_WATER_PASSED
+message is received, the busy state is cleared.
+Note that the node does not
+look at the message contents of these flow control messages.
+.It Va upper
+This is the interface to the SSCOP user.
+This interface uses the following message format:
+.Bd -literal
+struct sscop_arg {
+ uint32_t sig;
+ uint32_t arg; /* opt. sequence number or clear-buff */
+ u_char data[];
+};
+.Ed
+.Pp
+The
+.Va sig
+field
+is one of the signals defined in the standard:
+.Bd -literal
+enum sscop_aasig {
+ SSCOP_ESTABLISH_request, /* <- UU, BR */
+ SSCOP_ESTABLISH_indication, /* -> UU */
+ SSCOP_ESTABLISH_response, /* <- UU, BR */
+ SSCOP_ESTABLISH_confirm, /* -> UU */
+
+ SSCOP_RELEASE_request, /* <- UU */
+ SSCOP_RELEASE_indication, /* -> UU, SRC */
+ SSCOP_RELEASE_confirm, /* -> */
+
+ SSCOP_DATA_request, /* <- MU */
+ SSCOP_DATA_indication, /* -> MU, SN */
+
+ SSCOP_UDATA_request, /* <- MU */
+ SSCOP_UDATA_indication, /* -> MU */
+
+ SSCOP_RECOVER_indication, /* -> */
+ SSCOP_RECOVER_response, /* <- */
+
+ SSCOP_RESYNC_request, /* <- UU */
+ SSCOP_RESYNC_indication, /* -> UU */
+ SSCOP_RESYNC_response, /* <- */
+ SSCOP_RESYNC_confirm, /* -> */
+
+ SSCOP_RETRIEVE_request, /* <- RN */
+ SSCOP_RETRIEVE_indication, /* -> MU */
+ SSCOP_RETRIEVE_COMPL_indication,/* -> */
+};
+.Ed
+.Pp
+The arrows in the comment show the direction of the signal, whether it
+is a signal that comes out of the node
+.Pq Ql -> ,
+or is sent by the node user to the node
+.Pq Ql <- .
+The
+.Va arg
+field contains the argument to some of the signals: it is either a PDU
+sequence number, or the
+.Dv CLEAR-BUFFER
+flag.
+There are a number of special sequence numbers for some operations:
+.Pp
+.Bl -tag -width ".Dv SSCOP_RETRIEVE_UNKNOWN" -offset indent -compact
+.It Dv SSCOP_MAXSEQNO
+maximum legal sequence number
+.It Dv SSCOP_RETRIEVE_UNKNOWN
+retrieve transmission queue
+.It Dv SSCOP_RETRIEVE_TOTAL
+retrieve transmission buffer and queue
+.El
+.Pp
+For signals that carry user data (as, for example,
+.Dv SSCOP_DATA_request )
+these two fields are followed by the variable sized user data.
+.Pp
+If the
+.Va upper
+hook is disconnected and the SSCOP instance is not in the idle
+state, and the
+.Va lower
+hook is still connected, an
+.Dv SSCOP_RELEASE_request
+is executed to release the SSCOP connection.
+.It Va manage
+This is the management interface defined in the standard.
+The data structure used here is:
+.Bd -literal
+struct sscop_marg {
+ uint32_t sig;
+ u_char data[];
+};
+.Ed
+.Pp
+Here
+.Va sig
+is one of
+.Bd -literal
+enum sscop_maasig {
+ SSCOP_MDATA_request, /* <- MU */
+ SSCOP_MDATA_indication, /* -> MU */
+ SSCOP_MERROR_indication, /* -> CODE, CNT */
+};
+.Ed
+.Pp
+The
+.Dv SSCOP_MDATA
+signals are followed by the actual management data, where the
+.Dv SSCOP_MERROR
+signal has the form:
+.Bd -literal
+struct sscop_merr {
+ uint32_t sig;
+ uint32_t err; /* error code */
+ uint32_t cnt; /* error count */
+};
+.Ed
+.El
+.Sh CONTROL MESSAGES
+The
+.Nm sscop
+node understands the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_SSCOP_SETPARAM
+Sets operational parameters of the SSCOP instance and takes the
+following structure:
+.Bd -literal
+struct ng_sscop_setparam {
+ uint32_t mask;
+ struct sscop_param param;
+};
+.Ed
+.Pp
+The sub-structure
+.Va param
+contains the parameters to set, and the
+.Va mask
+field contains a bit mask, telling which of the parameters to set, and which
+to ignore.
+If a bit is set, the corresponding parameter is set.
+The parameters are:
+.Bd -literal
+struct sscop_param {
+ uint32_t timer_cc; /* timer_cc in msec */
+ uint32_t timer_poll; /* timer_poll im msec */
+ uint32_t timer_keep_alive;/* timer_keep_alive in msec */
+ uint32_t timer_no_response;/*timer_no_response in msec */
+ uint32_t timer_idle; /* timer_idle in msec */
+ uint32_t maxk; /* maximum user data in bytes */
+ uint32_t maxj; /* maximum u-u info in bytes */
+ uint32_t maxcc; /* max. retransmissions for control packets */
+ uint32_t maxpd; /* max. vt(pd) before sending poll */
+ uint32_t maxstat; /* max. number of elements in stat list */
+ uint32_t mr; /* initial window */
+ uint32_t flags; /* flags */
+};
+.Ed
+.Pp
+The
+.Va flags
+field contains the following flags influencing SSCOP operation:
+.Pp
+.Bl -tag -width ".Dv SSCOP_POLLREX" -offset indent -compact
+.It Dv SSCOP_ROBUST
+enable atmf/97-0216 robustness enhancement
+.It Dv SSCOP_POLLREX
+send POLL after each retransmission
+.El
+.Pp
+The bitmap has the following bits:
+.Pp
+.Bl -tag -width ".Dv SSCOP_SET_POLLREX" -offset indent -compact
+.It Dv SSCOP_SET_TCC
+set
+.Va timer_cc
+.It Dv SSCOP_SET_TPOLL
+set
+.Va timer_poll
+.It Dv SSCOP_SET_TKA
+set
+.Va timer_keep_alive
+.It Dv SSCOP_SET_TNR
+set
+.Va timer_no_response
+.It Dv SSCOP_SET_TIDLE
+set
+.Va timer_idle
+.It Dv SSCOP_SET_MAXK
+set
+.Va maxk
+.It Dv SSCOP_SET_MAXJ
+set
+.Va maxj
+.It Dv SSCOP_SET_MAXCC
+set
+.Va maxcc
+.It Dv SSCOP_SET_MAXPD
+set
+.Va maxpd
+.It Dv SSCOP_SET_MAXSTAT
+set
+.Va maxstat
+.It Dv SSCOP_SET_MR
+set the initial window
+.It Dv SSCOP_SET_ROBUST
+set or clear
+.Dv SSCOP_ROBUST
+.It Dv SSCOP_SET_POLLREX
+set or clear
+.Dv SSCOP_POLLREX
+.El
+.Pp
+The node responds to the
+.Dv NGM_SSCOP_SETPARAM
+message with the following response:
+.Bd -literal
+struct ng_sscop_setparam_resp {
+ uint32_t mask;
+ int32_t error;
+};
+.Ed
+.Pp
+Here
+.Va mask
+contains a bitmask of the parameters that the user requested to set,
+but that could not be set and
+.Va error
+is an
+.Xr errno 2
+code describing why the parameter could not be set.
+.It Dv NGM_SSCOP_GETPARAM
+This message returns the current operational parameters of the SSCOP
+instance in a
+.Vt sscop_param
+structure.
+.It Dv NGM_SSCOP_ENABLE
+This message creates the actual SSCOP instance and initializes it.
+Until this is done, parameters may neither be retrieved nor set, and all
+messages received on any hook are discarded.
+.It Dv NGM_SSCOP_DISABLE
+Destroy the SSCOP instance.
+After this, all messages on any hooks are
+discarded.
+.It Dv NGM_SSCOP_SETDEBUG
+Set debugging flags.
+The argument is a
+.Vt uint32_t .
+.It Dv NGM_SSCOP_GETDEBUG
+Retrieve the actual debugging flags.
+Needs no arguments and responds with a
+.Vt uint32_t .
+.It Dv NGM_SSCOP_GETSTATE
+Responds with the current state of the SSCOP instance in a
+.Vt uint32_t .
+If the node is not enabled, the retrieved state is 0.
+.El
+.Sh FLOW CONTROL
+Flow control works on the upper and on the lower layer interface.
+At the lower
+layer interface, the two messages,
+.Dv NGM_HIGH_WATER_PASSED
+and
+.Dv NGM_LOW_WATER_PASSED ,
+are used to declare or clear the
+.Dq "lower layer busy"
+state of the protocol.
+.Pp
+At the upper layer interface, the
+.Nm sscop
+node handles three types of flow control messages:
+.Bl -tag -width indent
+.It Dv NGM_HIGH_WATER_PASSED
+If this message is received, the SSCOP stops moving the receive window.
+Each time a data message is handed over to the upper layer, the receive
+window is moved by one message.
+Stopping these updates
+means that the window will start to close and if the peer has sent
+all messages allowed by the current window, it stops transmission.
+This means that the upper layer must be able to still receive a full window
+amount of messages.
+.It Dv NGM_LOW_WATER_PASSED
+This will re-enable the automatic window updates, and if the space indicated
+in the message is larger than the current window, the window will be opened
+by that amount.
+The space is computed as the difference of the
+.Va max_queuelen_packets
+and
+.Va current
+members of the
+.Vt ngm_queue_state
+structure.
+.It Dv NGM_SYNC_QUEUE_STATE
+If the upper layer buffer filling state, as indicated by
+.Va current ,
+is equal to or greater than
+.Va high_watermark
+then the message is ignored.
+If this is not the case, the amount
+of receiver space is computed as the difference of
+.Va max_queuelen_packets
+and
+.Va current
+if automatic window updates are currently allowed, and as the difference of
+.Va high_water_mark
+and
+.Va current
+if window updates are disabled.
+If the resulting value is larger than the current window, the current window
+is opened up to this value.
+Automatic window updates are enabled if they
+were disabled.
+.El
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_atm 4 ,
+.Xr ng_sscfu 4 ,
+.Xr ngctl 8
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/ng_tag.4 b/share/man/man4/ng_tag.4
new file mode 100644
index 0000000..98cfa24
--- /dev/null
+++ b/share/man/man4/ng_tag.4
@@ -0,0 +1,338 @@
+.\" Copyright (c) 2006 Vadim Goncharov <vadimnuclight@tpu.ru>
+.\" 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$
+.\"
+.Dd June 10, 2006
+.Dt NG_TAG 4
+.Os
+.Sh NAME
+.Nm ng_tag
+.Nd "mbuf tags manipulating netgraph node type"
+.Sh SYNOPSIS
+.In netgraph/ng_tag.h
+.Sh DESCRIPTION
+The
+.Nm tag
+node type allows mbuf packet tags (see
+.Xr mbuf_tags 9 )
+to be examined, stripped or applied to data travelling through a
+Netgraph network.
+Mbuf tags are used in many parts of the
+.Fx
+kernel network subsystem,
+including the storage of VLAN tags as described in
+.Xr vlan 4 ,
+Mandatory Access Control (MAC) labels as described in
+.Xr mac 9 ,
+IPsec policy information as described in
+.Xr ipsec 4 ,
+and packet filter tags used by
+.Xr pf 4 .
+One should also consider useful setting or checking
+.Xr ipfw 8
+tags, which are implemented as mbuf tags, too.
+.Pp
+Each node allows an arbitrary number of connections to arbitrarily
+named hooks.
+With each hook is associated a tag which will be searched in the list
+of all tags attached to a packet incoming to this hook, a destination hook
+for matching packets, a destination hook for non-matching packets,
+a tag which will be appended to data leaving node through this hook,
+and various statistics counters.
+.Pp
+The list of incoming packet's tags is traversed to find a tag with
+specified
+.Va type
+and
+.Va cookie
+values.
+Upon match, if specified
+.Va tag_len
+is non-zero,
+.Va tag_data
+of tag is checked to be identical to that specified in the hook structure.
+Packets with matched tags are forwarded to
+.Dq match
+destination hook, or forwarded to
+.Dq non-match
+hook otherwise.
+Either or both destination hooks can be an empty string, or may
+not exist, in which case the packet is dropped.
+.Pp
+Tag list of packets leaving the node is extended with a new tag
+specified in outgoing hook structure (it is possible to avoid appending
+a new tag to pass packet completely unchanged by specifying zero
+.Va type
+and
+.Va cookie
+values in the structure of the corresponding outgoing hook).
+Additionally,
+a tag can be stripped from incoming packet after match if
+.Va strip
+flag is set.
+This can be used for simple tag removal or tag replacement, if combined
+with tag addition on outgoing matching hook.
+Note that new tag is appended unconditionally, without checking if
+such a tag is already present in the list (it is up to user to check
+if this is a concern).
+.Pp
+New hooks are initially configured to drop all incoming packets
+(as all hook names are empty strings; zero values can be specified
+to forward all packets to non-matching hook),
+and to forward all outgoing packets without any tag appending.
+.Pp
+Data payload of packets passing through the node is completely
+unchanged, all operations can affect tag list only.
+.Sh HOOKS
+This node type supports any number of hooks having arbitrary names.
+In order to allow internal optimizations, user should never try to
+configure a hook with a structure pointing to hooks which do not exist yet.
+The safe way is to create all hooks first, then begin to configure them.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_TAG_SET_HOOKIN
+This command sets tag values which will be searched in the tag list of
+incoming packets on a hook.
+The following structure must be supplied as an argument:
+.Bd -literal -offset 4n
+struct ng_tag_hookin {
+ char thisHook[NG_HOOKSIZ]; /* name of hook */
+ char ifMatch[NG_HOOKSIZ]; /* match dest hook */
+ char ifNotMatch[NG_HOOKSIZ]; /* !match dest hook */
+ uint8_t strip; /* strip tag if found */
+ uint32_t tag_cookie; /* ABI/Module ID */
+ uint16_t tag_id; /* tag ID */
+ uint16_t tag_len; /* length of data */
+ uint8_t tag_data[0]; /* tag data */
+};
+.Ed
+.Pp
+The hook to be updated is specified in
+.Va thisHook .
+Data bytes of tag corresponding to specified
+.Va tag_id
+(type) and
+.Va tag_cookie
+are placed in the
+.Va tag_data
+array; there must be
+.Va tag_len
+of them.
+Matching and non-matching incoming packets are delivered out the hooks named
+.Va ifMatch
+and
+.Va ifNotMatch ,
+respectively.
+If
+.Va strip
+flag is non-zero, then found tag is deleted from list of packet tags.
+.It Dv NGM_TAG_GET_HOOKIN
+This command takes an
+.Tn ASCII
+string argument, the hook name, and returns the
+corresponding
+.Vt "struct ng_tag_hookin"
+as shown above.
+.It Dv NGM_TAG_SET_HOOKOUT
+This command sets tags values which will be applied to outgoing
+packets.
+The following structure must be supplied as an argument:
+.Bd -literal -offset 4n
+struct ng_tag_hookout {
+ char thisHook[NG_HOOKSIZ]; /* name of hook */
+ uint32_t tag_cookie; /* ABI/Module ID */
+ uint16_t tag_id; /* tag ID */
+ uint16_t tag_len; /* length of data */
+ uint8_t tag_data[0]; /* tag data */
+};
+.Ed
+.Pp
+The hook to be updated is specified in
+.Va thisHook .
+Other variables mean basically the same as in
+.Vt "struct ng_tag_hookin"
+shown above, except used for setting values in a new tag.
+.It Dv NGM_TAG_GET_HOOKOUT
+This command takes an
+.Tn ASCII
+string argument, the hook name, and returns the
+corresponding
+.Vt "struct ng_tag_hookout"
+as shown above.
+.It Dv NGM_TAG_GET_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and returns the
+statistics associated with the hook as a
+.Vt "struct ng_tag_hookstat" .
+.It Dv NGM_TAG_CLR_STATS
+This command takes an
+.Tn ASCII
+string argument, the hook name, and clears the
+statistics associated with the hook.
+.It Dv NGM_TAG_GETCLR_STATS
+This command is identical to
+.Dv NGM_TAG_GET_STATS ,
+except that the statistics are also atomically cleared.
+.El
+.Pp
+.Em Note:
+statistics counters as well as three statistics messages above work
+only if code was compiled with the
+.Dv NG_TAG_DEBUG
+option.
+The reason for this is that statistics is rarely used in practice,
+but still consumes CPU cycles for every packet.
+Moreover, it is even not accurate on SMP systems due to lack of
+synchronization between threads, as this is very expensive.
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh EXAMPLES
+It is possible to do a simple L7 filtering by using
+.Xr ipfw 8
+tags in conjunction with
+.Xr ng_bpf 4
+traffic analyzer.
+Example below explains how to filter DirectConnect P2P network data traffic,
+which cannot be done by usual means as it uses random ports.
+It is known that such data connection always contains a TCP packet with
+6-byte payload string "$Send|".
+So ipfw's
+.Cm netgraph
+action will be used to divert all TCP packets to an
+.Xr ng_bpf 4
+node which will check for the specified string and return non-matching
+packets to
+.Xr ipfw 8 .
+Matching packets are passed to
+.Xr ng_tag 4
+node, which will set a tag and pass them back to
+.Xr ng_bpf 4
+node on a hook programmed to accept all packets and pass them back to
+.Xr ipfw 8 .
+A script provided in
+.Xr ng_bpf 4
+manual page will be used for programming node.
+Note that packets diverted from
+.Xr ipfw 8
+to Netgraph have no link-level header, so offsets in
+.Xr tcpdump 1
+expressions must be altered accordingly.
+Thus, there will be expression
+.Dq Li "ether[40:2]=0x244c && ether[42:4]=0x6f636b20"
+on incoming hook and empty expression to match all packets from
+.Xr ng_tag 4 .
+.Pp
+So, this is
+.Xr ngctl 8
+script for nodes creating and naming for easier access:
+.Bd -literal -offset 4n
+/usr/sbin/ngctl -f- <<-SEQ
+ mkpeer ipfw: bpf 41 ipfw
+ name ipfw:41 dcbpf
+ mkpeer dcbpf: tag matched th1
+ name dcbpf:matched ngdc
+SEQ
+.Ed
+.Pp
+Now
+.Dq Li ngdc
+node (which is of type
+.Nm )
+must be programmed to echo all packets received on the
+.Dq Li th1
+hook back, with the
+.Xr ipfw 8
+tag 412 attached.
+.Dv MTAG_IPFW
+value for
+.Va tag_cookie
+was taken from file
+.In netinet/ip_fw.h
+and value for
+.Va tag_id
+is tag number (412), with zero tag length:
+.Bd -literal -offset 4n
+ngctl msg ngdc: sethookin { thisHook=\e"th1\e" ifNotMatch=\e"th1\e" }
+ngctl msg ngdc: sethookout { thisHook=\e"th1\e" \e
+ tag_cookie=1148380143 \e
+ tag_id=412 }
+.Ed
+.Pp
+Don't forget to program
+.Xr ng_bpf 4
+.Dq Li ipfw
+hook with the above expression (see
+.Xr ng_bpf 4
+for script doing this) and
+.Dq Li matched
+hook with an empty expression:
+.Bd -literal -offset 4n
+ngctl msg dcbpf: setprogram { thisHook=\e"matched\e" ifMatch=\e"ipfw\e" \e
+ bpf_prog_len=1 bpf_prog=[ { code=6 k=8192 } ] }
+.Ed
+.Pp
+After finishing with
+.Xr netgraph 4
+nodes,
+.Xr ipfw 8
+rules must be added to enable packet flow:
+.Bd -literal -offset 4n
+ipfw add 100 netgraph 41 tcp from any to any iplen 46
+ipfw add 110 reset tcp from any to any tagged 412
+.Ed
+.Pp
+Note: one should ensure that packets are returned to ipfw after processing
+inside
+.Xr netgraph 4 ,
+by setting appropriate
+.Xr sysctl 8
+variable:
+.Bd -literal -offset 4n
+sysctl net.inet.ip.fw.one_pass=0
+.Ed
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_bpf 4 ,
+.Xr ng_ipfw 4 ,
+.Xr ipfw 8 ,
+.Xr ngctl 8 ,
+.Xr mbuf_tags 9
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 6.2 .
+.Sh AUTHORS
+.An Vadim Goncharov Aq vadimnuclight@tpu.ru
+.Sh BUGS
+For manipulating any tags with data payload (that is, all tags with non-zero
+.Va tag_len )
+one should care about non-portable machine-dependent representation of
+tags on the low level as byte stream.
+Perhaps this should be done by another program rather than manually.
diff --git a/share/man/man4/ng_tcpmss.4 b/share/man/man4/ng_tcpmss.4
new file mode 100644
index 0000000..fc610b6
--- /dev/null
+++ b/share/man/man4/ng_tcpmss.4
@@ -0,0 +1,125 @@
+.\" Copyright (c) 2005 Gleb Smirnoff
+.\" 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$
+.\"
+.Dd June 9, 2005
+.Dt NG_TCPMSS 4
+.Os
+.Sh NAME
+.Nm ng_tcpmss
+.Nd "netgraph node to adjust TCP MSS option"
+.Sh SYNOPSIS
+.In netgraph.h
+.In netgraph/ng_tcpmss.h
+.Sh DESCRIPTION
+The
+.Nm tcpmss
+node type is designed to alter the Maximum Segment Size option
+of TCP packets.
+This node accepts an arbitrary number of hooks.
+Initially a new hook is considered unconfigured.
+The
+.Dv NG_TCPMSS_CONFIG
+control message is used to configure a hook.
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following.
+.Bl -tag -width indent
+.It Dv NGM_TCPMSS_CONFIG Pq Li config
+This control message configures node to do given MSS adjusting on
+a particular hook.
+It requires the
+.Vt "struct ng_tcpmss_config"
+to be supplied as an argument:
+.Bd -literal
+struct ng_tcpmss_config {
+ char inHook[NG_HOOKSIZ];
+ char outHook[NG_HOOKSIZ];
+ uint16_t maxMSS;
+}
+.Ed
+.Pp
+This means: packets received on
+.Va inHook
+would be checked for TCP MSS option and the latter would be
+reduced down to
+.Va maxMSS
+if it exceeds
+.Va maxMSS .
+After that, packets would be sent to hook
+.Va outHook .
+.It Dv NGM_TCPMSS_GET_STATS Pq Li getstats
+This control message obtains statistics for a given hook.
+The statistics are returned in
+.Vt "struct ng_tcpmss_hookstat" :
+.Bd -literal
+struct ng_tcpmss_hookstat {
+ uint64_t Octets; /* total bytes */
+ uint64_t Packets; /* total packets */
+ uint16_t maxMSS; /* maximum MSS */
+ uint64_t SYNPkts; /* TCP SYN packets */
+ uint64_t FixedPkts; /* changed packets */
+};
+.Ed
+.It Dv NGM_TCPMSS_CLR_STATS Pq Li clrstats
+This control message clears statistics for a given hook.
+.It Dv NGM_TCPMSS_GETCLR_STATS Pq Li getclrstats
+This control message obtains and clears statistics for a given hook.
+.El
+.Sh EXAMPLES
+In the following example, packets are injected into the
+.Nm tcpmss
+node using the
+.Xr ng_ipfw 4
+node.
+.Bd -literal -offset indent
+# Create tcpmss node and connect it to ng_ipfw node
+ngctl mkpeer ipfw: tcpmss 100 qqq
+
+# Adjust MSS to 1452
+ngctl msg ipfw:100 config '{ inHook="qqq" outHook="qqq" maxMSS=1452 }'
+
+# Divert traffic into tcpmss node
+ipfw add 300 netgraph 100 tcp from any to any tcpflags syn out via fxp0
+
+# Let packets continue with ipfw after being hacked
+sysctl net.inet.ip.fw.one_pass=0
+.Ed
+.Sh SHUTDOWN
+This node shuts down upon receipt of an
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_ipfw 4
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 6.0 .
+.Sh AUTHORS
+.An Alexey Popov Aq lollypop@flexuser.ru
+.An Gleb Smirnoff Aq glebius@FreeBSD.org
+.Sh BUGS
+When running on SMP, system statistics may be broken.
diff --git a/share/man/man4/ng_tee.4 b/share/man/man4/ng_tee.4
new file mode 100644
index 0000000..a914ab5
--- /dev/null
+++ b/share/man/man4/ng_tee.4
@@ -0,0 +1,135 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_tee.8,v 1.4 1999/01/25 23:46:27 archie Exp $
+.\"
+.Dd May 28, 2004
+.Dt NG_TEE 4
+.Os
+.Sh NAME
+.Nm ng_tee
+.Nd netgraph ``tee'' node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/ng_tee.h
+.Sh DESCRIPTION
+The
+.Nm tee
+node type has a purpose similar to the
+.Xr tee 1
+command.
+.Nm Tee
+nodes are useful for debugging or
+.Dq snooping
+on a connection
+between two netgraph nodes.
+.Nm Tee
+nodes have four hooks,
+.Dv right ,
+.Dv left ,
+.Dv right2left ,
+and
+.Dv left2right .
+All data received on
+.Dv right
+is sent unmodified to
+.Em both
+hooks
+.Dv left
+and
+.Dv right2left .
+Similarly, all data received on
+.Dv left
+is sent unmodified to both
+.Dv right
+and
+.Dv left2right .
+.Pp
+Packets may also be received on
+.Dv right2left
+and
+.Dv left2right ;
+if so, they are forwarded unchanged out hooks
+.Dv right
+and
+.Dv left ,
+respectively.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobarbarfoo
+.It Dv right
+The connection to the node on the right.
+.It Dv left
+The connection to the node on the left.
+.It Dv right2left
+Tap for right to left traffic.
+.It Dv left2right
+Tap for left to right traffic.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following.
+.Bl -tag -width foo
+.It Dv NGM_TEE_GET_STATS
+Get statistics, returned as a
+.Dv "struct ng_tee_stats" .
+.It Dv NGM_TEE_CLR_STATS
+Clear statistics.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of an
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+If both
+.Dv right
+and
+.Dv left
+hooks are present, node removes itself from the chain gently,
+connecting
+.Dv right
+and
+.Dv left
+together.
+.Sh SEE ALSO
+.Xr tee 1 ,
+.Xr netgraph 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Julian Elischer Aq julian@FreeBSD.org
diff --git a/share/man/man4/ng_tty.4 b/share/man/man4/ng_tty.4
new file mode 100644
index 0000000..ec5b4c8
--- /dev/null
+++ b/share/man/man4/ng_tty.4
@@ -0,0 +1,130 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_tty.8,v 1.5 1999/01/25 23:46:28 archie Exp $
+.\"
+.Dd December 25, 2008
+.Dt NG_TTY 4
+.Os
+.Sh NAME
+.Nm ng_tty
+.Nd netgraph node type that is also a TTY hook
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/ttycom.h
+.In netgraph/ng_tty.h
+.Sh DESCRIPTION
+The
+.Nm tty
+node type is both a netgraph node type and a TTY hook.
+.Pp
+The node has a single hook called
+.Dv hook .
+Incoming bytes received on the tty device are sent out on this hook,
+and frames received on
+.Dv hook
+are transmitted out on the tty device.
+No modification to the data is performed in either direction.
+While the hook is installed on a tty, the normal read and write
+operations are unavailable, returning
+.Er EIO .
+.Pp
+Incoming data is delivered directly to ng_tty via the tty bypass hook as a
+buffer pointer and length, this is converted to a mbuf and passed to the peer.
+.Pp
+The node supports an optional
+.Dq hot character .
+If the driver can not deliver data directly to the tty bypass hook then each
+character is input one at a time.
+If set to non-zero and bypass mode is unavailable, incoming
+data from the tty device is queued until this character is seen.
+This avoids sending lots of mbufs containing a small number of bytes,
+but introduces potentially infinite latency.
+The default hot character is 0x7e, consistent with
+.Dv hook
+being connected to a
+.Xr ng_async 4
+type node.
+The hot character has no effect on the transmission of data.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobar
+.It Dv hook
+.Xr tty 4
+serial data contained in
+.Dv mbuf
+structures, with arbitrary inter-frame boundaries.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_TTY_SET_HOTCHAR
+This command takes an integer argument and sets the hot character
+from the lower 8 bits.
+A hot character of zero disables queueing,
+so that all received data is forwarded immediately.
+.It Dv NGM_TTY_GET_HOTCHAR
+Returns an integer containing the current hot character in the lower
+eight bits.
+.It Dv NGM_TTY_SET_TTY
+This command takes integer process ID and file descriptor of open tty
+and registers the tty hooks.
+.El
+.Sh SHUTDOWN
+This node shuts down when the corresponding device is closed.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr netgraph 4 ,
+.Xr ng_async 4 ,
+.Xr tty 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
+.An Andrew Thompson Aq thompsa@FreeBSD.org
+.Sh BUGS
+The serial driver code also has a notion of a
+.Dq hot character .
+Unfortunately, this value is statically defined in terms of the
+line discipline and cannot be changed.
+Therefore, if a hot character other than 0x7e (the default) is set for the
+.Nm
+node, the node has no way to convey this information to the
+serial driver, and sub-optimal performance may result.
diff --git a/share/man/man4/ng_ubt.4 b/share/man/man4/ng_ubt.4
new file mode 100644
index 0000000..ebb454d
--- /dev/null
+++ b/share/man/man4/ng_ubt.4
@@ -0,0 +1,123 @@
+.\" Copyright (c) 2001-2002 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ng_ubt.4,v 1.3 2003/05/21 19:37:35 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd September 13, 2004
+.Dt NG_UBT 4
+.Os
+.Sh NAME
+.Nm ng_ubt
+.Nd Netgraph node type that is also a driver for Bluetooth USB devices
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph/bluetooth/include/ng_ubt.h
+.Sh DESCRIPTION
+The
+.Nm ubt
+node type is both a persistent Netgraph node type and a driver for
+Bluetooth USB devices.
+It implements a Bluetooth USB transport layer
+as per chapter H2 of the Bluetooth Specification Book v1.1.
+A new node is created when a supported USB device is plugged in.
+.Pp
+The node has a single hook called
+.Dv hook .
+Incoming bytes received on the device are re-assembled into HCI frames
+(according to the length).
+Full HCI frames are sent out on the hook.
+The node will add a HCI frame indicator if the device did not send it.
+HCI frames received on
+.Dv hook
+are transmitted out.
+The node will drop the HCI frame indicator unless the device
+requires it to be present.
+.Sh HARDWARE
+The
+.Nm
+driver supports all Bluetooth USB devices that conform with
+the Bluetooth specification v1.1, including:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3CREB96
+.It
+AIPTEK BR0R02
+.It
+EPoX BT-DG02
+.It
+Mitsumi Bluetooth USB adapter
+.It
+MSI MS-6967
+.It
+TDK Bluetooth USB adapter
+.El
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width indent
+.It Dv hook
+single HCI frame contained in a single
+.Vt mbuf
+structure.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_UBT_NODE_GET_DEBUG
+Returns an integer containing the current debug level for the node.
+.It Dv NGM_UBT_NODE_SET_DEBUG
+This command takes an integer argument and sets the current debug level
+for the node.
+.It Dv NGM_UBT_NODE_GET_QLEN
+This command takes a parameter that specifies the queue number and returns
+the current maximal length of the queue for the node.
+.It Dv NGM_UBT_NODE_SET_QLEN
+This command takes two parameters that specify the queue number and the maximum
+length of the queue and sets the maximal length of the queue for the node.
+.It Dv NGM_UBT_NODE_GET_STAT
+Returns various statistic information for the node, such as: number of
+bytes (frames) sent, number of bytes (frames) received and number of
+input (output) errors.
+.It Dv NGM_UBT_NODE_RESET_STAT
+Reset all statistic counters to zero.
+.El
+.Sh SHUTDOWN
+This node shuts down when the corresponding USB device is un-plugged.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ugen 4 ,
+.Xr usb 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm ubt
+node type was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
+.Sh BUGS
+Isochronous USB transfers are broken.
+This means that the USB device will not be able to transfer SCO data (voice).
+USB interrupt transfers are implemented as bulk-in transfers (not really a bug).
diff --git a/share/man/man4/ng_uni.4 b/share/man/man4/ng_uni.4
new file mode 100644
index 0000000..f6eb05f
--- /dev/null
+++ b/share/man/man4/ng_uni.4
@@ -0,0 +1,420 @@
+.\"
+.\" Copyright (c) 2001-2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" All rights reserved.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" 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$
+.\"
+.Dd October 6, 2003
+.Dt NG_UNI 4
+.Os
+.Sh NAME
+.Nm ng_uni
+.Nd netgraph UNI node type
+.Sh SYNOPSIS
+.In netnatm/msg/unistruct.h
+.In netnatm/sig/unidef.h
+.In netgraph/atm/ng_uni.h
+.Sh DESCRIPTION
+The
+.Nm uni
+netgraph node type implements ATM Forum signalling 4.0.
+.Pp
+After creation of the node, the UNI instance must be created by sending
+an
+.Dq enable
+message to the node.
+If the node is enabled, the UNI parameters
+can be retrieved and modified, and the protocol can be started.
+.Pp
+The node is shut down either by an
+.Dv NGM_SHUTDOWN
+message, or when all hooks are disconnected.
+.Sh HOOKS
+Each
+.Nm uni
+node has three hooks with fixed names:
+.Bl -tag -width ".Va upper"
+.It Va lower
+This hook is the interface of the UNI protocol to the transport layer of
+the ATM control plane.
+The node expects the interface exported by
+.Xr ng_sscfu 4
+at this hook.
+.It Va upper
+This hook is the
+.Dq user
+interface of the UNI protocol.
+Because there is no standardized interface
+at this point, this implementation follows more or less the interface
+specified by the SDL diagrams in ITU-T recommendations Q.2931 and Q.2971.
+Normally either a
+.Xr ng_ccatm 4
+or a switch CAC should be stacked at this interface.
+The message format at the
+.Va upper
+hook is described below.
+Because
+.Xr netgraph 4
+is functional, it makes sometimes sense to switch this hook to queueing mode
+from the peer node upon connection.
+.El
+.Pp
+The
+.Va upper
+interface of the
+.Nm uni
+node is loosely modelled after the interface specified in the ITU-T signalling
+standards.
+There is however one derivation from this: normally there exists
+four kinds of signals: requests, responses, indications and confirmations.
+These signals are usually triggered either by external events (receiving a
+message) or internal events (a timer or another signal).
+This scheme works
+fine for user APIs that are entirely asynchronous, and in cases where
+error handling is not taken into account.
+With synchronous APIs and error
+handling however, there is a problem.
+If, for example, the application
+issues a request to set up a connection,
+it may do it by sending a
+.Dv SETUP.request
+signal to the UNI.
+Normally, the UNI stack will send a SETUP message and
+receive a message from the switch (a RELEASE, CONNECT, CALL PROCEEDING or
+ALERTING), or a timer in the UNI stack will time out.
+In any of these cases,
+the UNI stack is supposed to report an event back to the application, and
+the application will unblock (in the case of a synchronous API) and handle
+the event.
+The problem occurs when an error happens.
+Suppose there is no
+memory to send the SETUP message and to start the timer.
+In this case, the
+application will block forever because no received message and no timer
+will wake it up.
+For this reason this implementation uses an additional message:
+for each signal sent from the application to the stack, the stack will
+respond with an error code.
+If this code is zero, the stack has accepted
+the signal and the application may block; if the code is non-zero, the signal
+is effectively ignored and the code describes what was wrong.
+This system
+makes it very easy to make a blocking interface out of the message based
+netgraph interface.
+.Pp
+The
+.Va upper
+interface uses the following structure:
+.Bd -literal
+struct uni_arg {
+ uint32_t sig;
+ uint32_t cookie;
+ u_char data[];
+};
+.Ed
+The
+.Va sig
+field contains the actual signal that is sent from the user to UNI or from
+UNI to the user.
+The
+.Va cookie
+can be used by the user to correlate requests with events and responses.
+If an error response, a confirmation or an indication was triggered by
+a request or response, the cookie from that request or response is carried in
+the message from the stack to the user.
+The
+.Va cookie
+field is followed by the actual data for the signal.
+.Pp
+The signal is one of the following:
+.Bd -literal
+enum uni_sig {
+ UNIAPI_ERROR, /* UNI -> API */
+
+ UNIAPI_CALL_CREATED, /* UNI -> API */
+ UNIAPI_CALL_DESTROYED, /* UNI -> API */
+ UNIAPI_PARTY_CREATED, /* UNI -> API */
+ UNIAPI_PARTY_DESTROYED, /* UNI -> API */
+
+ UNIAPI_LINK_ESTABLISH_request, /* API -> UNI */
+ UNIAPI_LINK_ESTABLISH_confirm, /* UNI -> API */
+ UNIAPI_LINK_RELEASE_request, /* API -> UNI */
+ UNIAPI_LINK_RELEASE_confirm, /* UNI -> API */
+
+ UNIAPI_RESET_request, /* API -> UNI */
+ UNIAPI_RESET_confirm, /* UNI -> API */
+ UNIAPI_RESET_indication, /* UNI -> API */
+ UNIAPI_RESET_ERROR_indication, /* UNI -> API */
+ UNIAPI_RESET_response, /* API -> UNI */
+ UNIAPI_RESET_ERROR_response, /* API -> UNI */
+ UNIAPI_RESET_STATUS_indication, /* UNI -> API */
+
+ UNIAPI_SETUP_request, /* API -> UNI */
+ UNIAPI_SETUP_indication, /* UNI -> API */
+ UNIAPI_SETUP_response, /* API -> UNI */
+ UNIAPI_SETUP_confirm, /* UNI -> API */
+ UNIAPI_SETUP_COMPLETE_indication, /* UNI -> API */
+ UNIAPI_ALERTING_request, /* API -> UNI */
+ UNIAPI_ALERTING_indication, /* UNI -> API */
+ UNIAPI_PROCEEDING_request, /* API -> UNI */
+ UNIAPI_PROCEEDING_indication, /* UNI -> API */
+ UNIAPI_RELEASE_request, /* API -> UNI */
+ UNIAPI_RELEASE_indication, /* UNI -> API */
+ UNIAPI_RELEASE_response, /* API -> UNI */
+ UNIAPI_RELEASE_confirm, /* UNI -> API */
+ UNIAPI_NOTIFY_request, /* API -> UNI */
+ UNIAPI_NOTIFY_indication, /* UNI -> API */
+ UNIAPI_STATUS_indication, /* UNI -> API */
+ UNIAPI_STATUS_ENQUIRY_request, /* API -> UNI */
+
+ UNIAPI_ADD_PARTY_request, /* API -> UNI */
+ UNIAPI_ADD_PARTY_indication, /* UNI -> API */
+ UNIAPI_PARTY_ALERTING_request, /* API -> UNI */
+ UNIAPI_PARTY_ALERTING_indication, /* UNI -> API */
+ UNIAPI_ADD_PARTY_ACK_request, /* API -> UNI */
+ UNIAPI_ADD_PARTY_ACK_indication, /* UNI -> API */
+ UNIAPI_ADD_PARTY_REJ_request, /* API -> UNI */
+ UNIAPI_ADD_PARTY_REJ_indication, /* UNI -> API */
+ UNIAPI_DROP_PARTY_request, /* API -> UNI */
+ UNIAPI_DROP_PARTY_indication, /* UNI -> API */
+ UNIAPI_DROP_PARTY_ACK_request, /* API -> UNI */
+ UNIAPI_DROP_PARTY_ACK_indication, /* UNI -> API */
+
+ UNIAPI_ABORT_CALL_request, /* API -> UNI */
+
+ UNIAPI_MAXSIG
+};
+.Ed
+.Pp
+The meaning of most of the signals can be deduced from the ITU-T SDLs.
+A number of signals, however, is unique to this implementation:
+.Bl -tag -width indent
+.It Dv UNIAPI_ERROR
+This is the error response, mentioned earlier.
+It carries an error code or
+zero, if the signal was accepted by the stack.
+.It Dv UNIAPI_CALL_CREATED
+The UNI stack has created a call instance either from an incoming SETUP or
+from the user requesting an outgoing SETUP.
+This may be used to synchronize
+the creation and destroying of call data between the UNI stack and the user.
+.It Dv UNIAPI_CALL_DESTROYED
+A call instance has been destroyed and all resources have been freed.
+.It Dv UNIAPI_PARTY_CREATED
+A new party has been created for an existing point-to-multipoint call.
+This may be used to synchronize the creation and destroying of party data
+between the UNI stack and the user.
+.It Dv UNIAPI_PARTY_DESTROYED
+A party has been destroyed and all resources have been freed.
+.It Dv UNIAPI_ABORT_CALL_request
+This requests the stack to destroy the call instance
+and free all its resources,
+without sending any messages to the network.
+.It Dv UNIAPI_MAXSIG
+This is not a signal, but rather a definition to get the number of defined
+signals.
+.El
+.Pp
+Each of the signals is followed by a fixed size structure defined in
+.In netnatm/sig/unidef.h .
+.Sh CONTROL MESSAGES
+The
+.Nm uni
+node understands the standard control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_UNI_SETDEBUG
+Set debugging facility levels.
+The UNI stack defines a number of debugging
+facilities, each one associated with a debugging level.
+If the debugging level
+of a facility is non-zero, text output will be generated to the console.
+The message uses the following structure:
+.Bd -literal
+struct ngm_uni_debug {
+ uint32_t level[UNI_MAXFACILITY];
+};
+.Ed
+.It Dv NGM_UNI_SETDEBUG
+Get debugging facility levels.
+This returns an
+.Vt ngm_uni_debug
+structure.
+.It Dv NGM_UNI_GET_CONFIG
+Retrieve the current configuration of the UNI instance.
+This message returns a
+.Vt uni_config
+structure:
+.Bd -literal
+struct uni_config {
+ uint32_t proto; /* which protocol */
+ uint32_t popt; /* protocol option */
+ uint32_t option; /* other options */
+ uint32_t timer301; /* T301 */
+ uint32_t timer303; /* T303 */
+ uint32_t init303; /* T303 retransmission count */
+ uint32_t timer308; /* T308 */
+ uint32_t init308; /* T308 retransmission count */
+ uint32_t timer309; /* T309 */
+ uint32_t timer310; /* T310 */
+ uint32_t timer313; /* T313 */
+ uint32_t timer316; /* T316 */
+ uint32_t init316; /* T316 retransmission count */
+ uint32_t timer317; /* T317 */
+ uint32_t timer322; /* T322 */
+ uint32_t init322; /* T322 retransmission count */
+ uint32_t timer397; /* T397 */
+ uint32_t timer398; /* T398 */
+ uint32_t timer399; /* T399 */
+};
+.Ed
+.Pp
+The field
+.Va proto
+specifies one of the following protocols:
+.Bd -literal
+enum uni_proto {
+ UNIPROTO_UNI40U, /* UNI4.0 user side */
+ UNIPROTO_UNI40N, /* UNI4.0 network side */
+ UNIPROTO_PNNI10, /* PNNI1.0 */
+};
+.Ed
+.Pp
+Some protocols may have options which can be set in
+.Va popt :
+.Bd -literal
+enum uni_popt {
+ UNIPROTO_GFP, /* enable GFP */
+};
+.Ed
+.Pp
+The
+.Va option
+field controls parsing and checking of messages:
+.Bd -literal
+enum uni_option {
+ UNIOPT_GIT_HARD, /* harder check of GIT IE */
+ UNIOPT_BEARER_HARD, /* harder check of BEARER IE */
+ UNIOPT_CAUSE_HARD, /* harder check of CAUSE IE */
+};
+.Ed
+.Pp
+All timer values are given in milliseconds.
+Note, however, that the actual
+resolution of the timers depend on system configuration (see
+.Xr timeout 9 ) .
+.It Dv NGM_UNI_SET_CONFIG
+Change the UNI configuration.
+This takes a
+.Bd -literal
+struct ngm_uni_set_config {
+ struct uni_config config;
+ struct ngm_uni_config_mask mask;
+};
+struct ngm_uni_config_mask {
+ uint32_t mask;
+ uint32_t popt_mask;
+ uint32_t option_mask;
+};
+.Ed
+.Pp
+The fields of the
+.Vt ngm_uni_config_mask
+specify which configuration parameter to change.
+The
+.Va mask
+field contains bit definitions for all timers, retransmission counters
+and the
+.Va proto
+field,
+.Va popt_mask
+selects which of the protocol options to change, and
+.Va option_mask
+specifies which options should be changed.
+The following bits are defined:
+.Bd -literal
+enum uni_config_mask {
+ UNICFG_PROTO,
+ UNICFG_TIMER301,
+ UNICFG_TIMER303,
+ UNICFG_INIT303,
+ UNICFG_TIMER308,
+ UNICFG_INIT308,
+ UNICFG_TIMER309,
+ UNICFG_TIMER310,
+ UNICFG_TIMER313,
+ UNICFG_TIMER316,
+ UNICFG_INIT316,
+ UNICFG_TIMER317,
+ UNICFG_TIMER322,
+ UNICFG_INIT322,
+ UNICFG_TIMER397,
+ UNICFG_TIMER398,
+ UNICFG_TIMER399,
+};
+.Ed
+.Pp
+For
+.Va popt_mask
+and
+.Va option_mask ,
+the definitions from
+.Vt "enum uni_popt"
+and
+.Vt "enum uni_option"
+should be used.
+.It Dv NGM_UNI_ENABLE
+Create the UNI instance and enable processing.
+Before the UNI is enabled parameters cannot be retrieved or set.
+.It Dv NGM_UNI_DISABLE
+Destroy the UNI instance and free all resources.
+Note, that connections are not released.
+.El
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_atm 4 ,
+.Xr ng_sscfu 4 ,
+.Xr ng_sscop 4 ,
+.Xr ngctl 8
+.Sh AUTHORS
+The
+.Nm uni
+netgraph node
+and this manual page were written by
+.An Harti Brandt Aq harti@FreeBSD.org
+.Sh BUGS
+.Bl -bullet -compact
+.It
+LIJ (leaf-initiated-join) is not implemented yet.
+.It
+GFP (generic functional protocol, Q.2932.1) is not yet implemented.
+.It
+More testing needed.
+.It
+PNNI not yet implemented.
+.It
+Need to implement connection modification and the Q.2931 amendments.
+.El
diff --git a/share/man/man4/ng_vjc.4 b/share/man/man4/ng_vjc.4
new file mode 100644
index 0000000..da0c37b
--- /dev/null
+++ b/share/man/man4/ng_vjc.4
@@ -0,0 +1,239 @@
+.\" Copyright (c) 1996-1999 Whistle Communications, Inc.
+.\" All rights reserved.
+.\"
+.\" Subject to the following obligations and disclaimer of warranty, use and
+.\" redistribution of this software, in source or object code forms, with or
+.\" without modifications are expressly permitted by Whistle Communications;
+.\" provided, however, that:
+.\" 1. Any and all reproductions of the source or object code must include the
+.\" copyright notice above and the following disclaimer of warranties; and
+.\" 2. No rights are granted, in any manner or form, to use Whistle
+.\" Communications, Inc. trademarks, including the mark "WHISTLE
+.\" COMMUNICATIONS" on advertising, endorsements, or otherwise except as
+.\" such appears in the above copyright notice or in the software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "AS IS", AND
+.\" TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO
+.\" REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,
+.\" INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+.\" WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY
+.\" REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS
+.\" SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.
+.\" IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES
+.\" RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING
+.\" WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+.\" PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR
+.\" SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER 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 WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY
+.\" OF SUCH DAMAGE.
+.\"
+.\" Author: Archie Cobbs <archie@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\" $Whistle: ng_vjc.8,v 1.4 1999/01/25 23:46:28 archie Exp $
+.\"
+.Dd January 19, 1999
+.Dt NG_VJC 4
+.Os
+.Sh NAME
+.Nm ng_vjc
+.Nd Van Jacobson compression netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netinet/in.h
+.In netinet/in_systm.h
+.In netinet/ip.h
+.In net/slcompress.h
+.In netgraph/ng_vjc.h
+.Sh DESCRIPTION
+The
+.Nm vjc
+node type performs Van Jacobson compression, which is used
+over PPP, SLIP, and other point-to-point IP connections to
+compress TCP packet headers.
+The
+.Dv ip
+hook represents the uncompressed side of the node, while the
+.Dv vjcomp ,
+.Dv vjuncomp ,
+and
+.Dv vjip
+hooks represent the compressed side of the node.
+Packets received on the
+.Dv ip
+will be compressed or passed through as appropriate.
+Packets received on the other three hooks will be uncompressed as appropriate.
+This node also supports
+.Dq always pass through
+mode in either direction.
+.Pp
+Van Jacobson compression only applies to TCP packets.
+Only
+.Dq normal
+(i.e., common case) TCP packets are actually compressed.
+These are output on the
+.Dv vjcomp
+hook.
+Other TCP packets are run through the state machine but not
+compressed; these appear on the
+.Dv vjuncomp
+hook.
+Other non-TCP IP packets are forwarded unchanged to
+.Dv vjip .
+.Pp
+When connecting to a
+.Xr ng_ppp 4
+node, the
+.Dv ip ,
+.Dv vjuncomp ,
+.Dv vjcomp ,
+and
+.Dv vjip
+hooks should be connected to the
+.Xr ng_ppp 4
+node's
+.Dv vjc_ip ,
+.Dv vjc_vjcomp ,
+.Dv vjc_vjuncomp ,
+and
+.Dv vjc_ip
+hooks, respectively.
+.Sh HOOKS
+This node type supports the following hooks:
+.Pp
+.Bl -tag -width foobarbazi
+.It Dv ip
+Upstream (uncompressed) IP packets.
+.It Dv vjcomp
+Downstream compressed TCP packets.
+.It Dv vjuncomp
+Downstream uncompressed TCP packets.
+.It Dv vjip
+Downstream uncompressed IP packets.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width foo
+.It Dv NGM_VJC_SET_CONFIG
+This command resets the compression state and configures it according
+to the supplied
+.Dv "struct ngm_vjc_config"
+argument.
+This structure contains the following fields:
+.Bd -literal -offset 4n
+struct ngm_vjc_config {
+ u_char enableComp; /* Enable compression */
+ u_char enableDecomp; /* Enable decompression */
+ u_char maxChannel; /* Number of outgoing channels - 1 */
+ u_char compressCID; /* OK to compress outgoing CID's */
+};
+.Ed
+.Pp
+When
+.Dv enableComp
+is set to zero, all packets received on the
+.Dv ip
+hook are forwarded unchanged out the
+.Dv vjip
+hook.
+Similarly, when
+.Dv enableDecomp
+is set to zero, all packets received on the
+.Dv vjip
+hook are forwarded unchanged out the
+.Dv ip
+hook, and packets are not accepted on the
+.Dv vjcomp
+and
+.Dv vjuncomp
+hooks.
+When a node is first created,
+both compression and decompression are disabled and the node is
+therefore operating in bi-directional
+.Dq pass through
+mode.
+.Pp
+When enabling compression,
+.Dv maxChannel
+should be set to the number of outgoing compression channels minus one,
+and is a value between 3 and 15, inclusive.
+The
+.Dv compressCID
+field indicates whether it is OK to compress the CID header field for
+outgoing compressed TCP packets.
+This value should be zero unless
+either (a) it is not possible for an outgoing frame to be lost, or
+(b) lost frames can be reliably detected and immediately
+reported to the peer's decompression engine (see
+.Dv NGM_VJC_RECV_ERROR
+below).
+.It Dv NGM_VJC_GET_STATE
+This command returns the node's current state described by the
+.Dv "struct slcompress"
+structure, which is defined in
+.In net/slcompress.h .
+.It Dv NGM_VJC_CLR_STATS
+Clears the node statistics counters.
+Statistics are also cleared whenever the
+.Dv enableComp
+or
+.Dv enableDecomp
+fields are changed from zero to one by a
+.Dv NGM_VJC_SET_CONFIG
+control message.
+.It Dv NGM_VJC_RECV_ERROR
+When the peer has CID header field compression enabled,
+this message must be sent to the local
+.Nm vjc
+node immediately
+after detecting that a received frame has been lost, due to a bad
+checksum or for any other reason.
+Failing to do this can result in corrupted TCP stream data.
+.El
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_iface 4 ,
+.Xr ng_ppp 4 ,
+.Xr ngctl 8
+.Rs
+.%A V. Jacobson
+.%T "Compressing TCP/IP Headers"
+.%O RFC 1144
+.Re
+.Rs
+.%A G. McGregor
+.%T "The PPP Internet Control Protocol (IPCP)"
+.%O RFC 1332
+.Re
+.Sh HISTORY
+The
+.Nm
+node type was implemented in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Archie Cobbs Aq archie@FreeBSD.org
+.Sh BUGS
+As the initialization routine in the kernel implementation of
+Van Jacobson compression initializes both compression and decompression
+at once, this node does not allow compression and decompression to
+be enabled in separate operations.
+In order to enable one when
+the other is already enabled, first both must be disabled, then
+both enabled.
+This of course resets the node state.
+This restriction may be lifted in a later version.
+.Pp
+When built as a loadable kernel module, this module includes the file
+.Pa net/slcompress.c .
+Although loading the module should fail if
+.Pa net/slcompress.c
+already exists in the kernel, currently it does not, and the duplicate
+copies of the file do not interfere.
+However, this may change in the future.
diff --git a/share/man/man4/ng_vlan.4 b/share/man/man4/ng_vlan.4
new file mode 100644
index 0000000..bf673cf
--- /dev/null
+++ b/share/man/man4/ng_vlan.4
@@ -0,0 +1,145 @@
+.\" Copyright (c) 2003 Ruslan Ermilov
+.\" 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$
+.\"
+.Dd March 1, 2004
+.Dt NG_VLAN 4
+.Os
+.Sh NAME
+.Nm ng_vlan
+.Nd IEEE 802.1Q VLAN tagging netgraph node type
+.Sh SYNOPSIS
+.In sys/types.h
+.In netgraph.h
+.In netgraph/ng_vlan.h
+.Sh DESCRIPTION
+The
+.Nm vlan
+node type multiplexes frames tagged according to
+the IEEE 802.1Q standard between different hooks.
+.Pp
+Each node has two special hooks,
+.Va downstream
+and
+.Va nomatch ,
+and an arbitrary number of
+.Dq vlan
+hooks, each associated with a particular VLAN tag.
+.Pp
+An
+.Dv ETHERTYPE_VLAN
+frame received on the
+.Va downstream
+hook with a tag that the node has been configured to filter
+is sent out the corresponding
+.Dq vlan
+hook.
+If it does not match any of the configured tags, or is not of a type
+.Dv ETHERTYPE_VLAN ,
+it is sent out the
+.Va nomatch
+hook.
+If the
+.Va nomatch
+hook is not connected, the packet is dropped.
+.Pp
+An Ethernet frame received on the
+.Va nomatch
+hook is passed unmodified to the
+.Va downstream
+hook.
+.Pp
+An Ethernet frame received on any of the
+.Dq vlan
+hooks is tagged accordingly and sent out the
+.Va downstream
+hook.
+.Sh HOOKS
+This node type supports the following hooks:
+.Bl -tag -width ".Va downstream"
+.It Va downstream
+Typically this hook would be connected to a
+.Xr ng_ether 4
+node, using the
+.Va lower
+hook.
+.It Va nomatch
+Typically this hook would also be connected to an
+.Xr ng_ether 4
+type node using the
+.Va upper
+hook.
+.It Aq Em "any valid name"
+Any other hook name will be accepted and should later be associated with
+a particular tag.
+Typically this hook would be attached to an
+.Xr ng_eiface 4
+type node using the
+.Va ether
+hook.
+.El
+.Sh CONTROL MESSAGES
+This node type supports the generic control messages, plus the following:
+.Bl -tag -width indent
+.It Dv NGM_VLAN_ADD_FILTER Pq Li addfilter
+Associates a hook with the tag.
+.It Dv NGM_VLAN_DEL_FILTER Pq Li delfilter
+Disassociates a hook from the tag.
+.It Dv NGM_VLAN_GET_TABLE Pq Li gettable
+Returns a table of all hook/tag associations.
+.El
+.Sh EXAMPLES
+.Bd -literal
+#!/bin/sh
+
+ETHER_IF=rl0
+
+ngctl -f- <<EOF
+shutdown ${ETHER_IF}:
+mkpeer ${ETHER_IF}: vlan lower downstream
+name ${ETHER_IF}:lower vlan
+connect ${ETHER_IF}: vlan: upper nomatch
+EOF
+
+ngctl mkpeer vlan: eiface vlan123 ether
+ngctl msg vlan: addfilter '{ vlan=123 hook="vlan123" }'
+.Ed
+.Sh SHUTDOWN
+This node shuts down upon receipt of a
+.Dv NGM_SHUTDOWN
+control message, or when all hooks have been disconnected.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_eiface 4 ,
+.Xr ng_ether 4 ,
+.Xr ngctl 8 ,
+.Xr nghook 8
+.Sh HISTORY
+The
+.Nm
+node type appeared in
+.Fx 4.10 .
+.Sh AUTHORS
+.An Ruslan Ermilov Aq ru@FreeBSD.org
diff --git a/share/man/man4/ngatmbase.4 b/share/man/man4/ngatmbase.4
new file mode 100644
index 0000000..abee6d8
--- /dev/null
+++ b/share/man/man4/ngatmbase.4
@@ -0,0 +1,134 @@
+.\"
+.\" Copyright (c) 2004
+.\" Hartmut Brandt.
+.\" All rights reserved.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" 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$
+.\"
+.\" ngatmbase(4) man page
+.\"
+.Dd August 24, 2004
+.Dt NGATMBASE 4
+.Os
+.Sh NAME
+.Nm ngatmbase
+.Nd netgraph ATM utility module
+.Sh SYNOPSIS
+.In netnatm/unimsg.h
+.In netgraph/atm/ngatmbase.h
+.Ft "struct mbuf *"
+.Fn uni_msg_pack_mbuf "struct uni_msg *msg" "void *hdr" "size_t len"
+.Ft "struct uni_msg *"
+.Fn uni_msg_alloc "size_t len"
+.Ft "struct uni_msg *"
+.Fn uni_msg_build "void *buf" ...
+.Ft void
+.Fn uni_msg_destroy "struct uni_msg *msg"
+.Ft int
+.Fn uni_msg_unpack_mbuf "struct mbuf *m" "struct uni_msg *msgp"
+.Sh DESCRIPTION
+This module provides utility functions for the handling of signalling
+messages to the NgATM modules.
+.Pp
+The
+.Fn uni_msg_pack_mbuf
+function
+packs a message into one or several
+.Vt mbuf Ns s
+optionally prepending a header.
+The header is given by its address
+.Fa hdr
+and length
+.Fa len .
+If
+.Fa hdr
+is
+.Dv NULL
+or
+.Fa len
+equals 0, no header is prepended.
+Either
+.Fa msg
+or
+.Fa hdr
+may be
+.Dv NULL
+but not both.
+The
+.Fn uni_msg_pack_mbuf
+function
+returns a pointer to the allocated
+.Vt mbuf
+chain or
+.Dv NULL
+in the case of an error.
+.Pp
+The
+.Fn uni_msg_alloc
+function
+allocates a new message with space for at least
+.Fa len
+bytes.
+In the case of an error
+.Dv NULL
+is returned.
+.Pp
+The
+.Fn uni_msg_build
+function constructs a message from pieces.
+Each piece is given by a pair of
+arguments, the first of type
+.Vt "void *"
+and the second a
+.Vt size_t .
+The list of pieces must be terminated by
+.Po Vt "void *" Pc Ns Dv NULL .
+.Pp
+The
+.Fn uni_msg_destroy
+function
+destroyes the messages and frees all the messages's memory.
+.Pp
+The
+.Fn uni_msg_unpack_mbuf
+function
+unpacks an
+.Vt mbuf
+chain info a
+.Vt uni_msg .
+A pointer to the newly allocated message is stored in
+.Fa msgp
+and 0 is returned.
+In the case of an error (either when no packet header is found
+in the first mbuf or memory cannot be allocated) the function
+returns an appropriate error code.
+.Sh SEE ALSO
+.Xr ng_ccatm 4 ,
+.Xr ng_sscfu 4 ,
+.Xr ng_sscop 4 ,
+.Xr ng_uni 4
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/nge.4 b/share/man/man4/nge.4
new file mode 100644
index 0000000..855ee46
--- /dev/null
+++ b/share/man/man4/nge.4
@@ -0,0 +1,230 @@
+.\" Copyright (c) 2001 Wind River Systems
+.\" Copyright (c) 1997, 1998, 1999, 2000, 2001
+.\" Bill Paul <wpaul@bsdi.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd January 14, 2006
+.Dt NGE 4
+.Os
+.Sh NAME
+.Nm nge
+.Nd "National Semiconductor PCI Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device nge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_nge_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various NICs based on the National Semiconductor
+DP83820 and DP83821 Gigabit Ethernet controller chips.
+.Pp
+The DP83820 supports TBI (ten bit interface) and GMII
+transceivers, which means it can be used with either copper or 1000baseX
+fiber applications.
+The DP83820 supports TCP/IP checksum offload and
+VLAN tagging/insertion as well as a 2048-bit multicast hash filter
+and up to 4 pattern match buffers.
+.Pp
+Most cards also use the DP83861 10/100/1000 copper gigabit transceiver
+chip, which supports autonegotiation of 10, 100 and 1000Mbps modes in
+full or half duplex.
+.Pp
+The DP83820 also supports jumbo frames, which can be configured
+via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit jumbo frames.
+Using jumbo frames can greatly improve performance for certain tasks,
+such as file transfers and data streaming.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width 10baseTXUTP
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Ic mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Ic mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+.Cm full-duplex
+and
+.Cm half-duplex
+modes are supported.
+.It Cm 1000baseSX
+Set 1000Mbps (Gigabit Ethernet) operation.
+Both
+.Cm full-duplex
+and
+.Cm half-duplex
+modes are supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width full-duplex
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+The
+.Nm
+driver also supports one special link option for 1000baseTX cards:
+.Bl -tag -width link0
+.It Cm link0
+With 1000baseTX cards, establishing a link between two ports requires
+that one port be configured as a master and the other a slave.
+With autonegotiation,
+the master/slave settings will be chosen automatically.
+However when manually selecting the link state, it is necessary to
+force one side of the link to be a master and the other a slave.
+The
+.Nm
+driver configures the ports as slaves by default.
+Setting the
+.Cm link0
+flag with
+.Xr ifconfig 8
+will set a port as a master instead.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports National Semiconductor DP83820 and DP83821 based
+Gigabit Ethernet adapters including:
+.Pp
+.Bl -bullet -compact
+.It
+Addtron AEG320T
+.It
+Ark PC SOHO-GA2500T (32-bit PCI) and SOHO-GA2000T (64-bit PCI)
+.It
+Asante FriendlyNet GigaNIX 1000TA and 1000TPC
+.It
+D-Link DGE-500T
+.It
+Netgear GA621
+.It
+Netgear GA622T
+.It
+SMC EZ Card 1000 (SMC9462TX)
+.It
+Surecom Technology EP-320G-TX
+.It
+Trendware TEG-PCITX (32-bit PCI) and TEG-PCITX2 (64-bit PCI)
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "nge%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "nge%d: couldn't map ports"
+A fatal initialization error has occurred.
+.It "nge%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "nge%d: no memory for softc struct!"
+The driver failed to allocate memory for per-device instance information
+during initialization.
+.It "nge%d: failed to enable memory mapping!"
+The driver failed to initialize PCI shared memory mapping.
+This might
+happen if the card is not in a bus-master slot.
+.It "nge%d: no memory for jumbo buffers!"
+The driver failed to allocate memory for jumbo frames during
+initialization.
+.It "nge%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Rs
+.%T National Semiconductor DP83820 datasheet
+.%O http://www.national.com
+.Re
+.Rs
+.%T National Semiconductor DP83861 datasheet
+.%O http://www.national.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@bsdi.com .
diff --git a/share/man/man4/nmdm.4 b/share/man/man4/nmdm.4
new file mode 100644
index 0000000..7dccb00
--- /dev/null
+++ b/share/man/man4/nmdm.4
@@ -0,0 +1,85 @@
+.\" Copyright (c) 2001
+.\" The FreeBSD 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.
+.\"
+.\" 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$
+.\"
+.Dd January 27, 2005
+.Dt NMDM 4
+.Os
+.Sh NAME
+.Nm nmdm
+.Nd nullmodem terminal driver
+.Sh SYNOPSIS
+.Cd "device nmdm"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides two
+.Xr tty 4
+devices connected
+by a virtual
+.Dq "null modem"
+cable.
+.Pp
+If either of the two tty devices have the
+.Dv CDSR_OFLOW
+bit
+.Pq Dq Li "stty dsrflow"
+set in their line discipline, the
+.Nm
+device will emulate the speed configured in the
+.Xr termios 4
+settings.
+The speed emulation works independently in the two directions,
+controlled by the slower end's termios settings
+.Va ( c_ispeed , c_ospeed ,
+.Dv CS5 ... CS8 , CSTOPB
+and
+.Dv PARENB ) .
+.Sh FILES
+.Bl -tag -width ".Pa /dev/nmdm Ns Ar N Ns Op Pa AB" -compact
+.It Pa /dev/nmdm Ns Ar N Ns Op Pa AB
+nullmodem device nodes.
+Where the
+.Pa A
+node has a matching
+.Pa B
+node.
+.El
+.Pp
+The
+.Nm
+driver implements
+.Dq "on-demand device creation"
+so simply accessing a given instance in
+.Pa /dev
+will create it.
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr stty 1 ,
+.Xr termios 4 ,
+.Xr tty 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.4 .
diff --git a/share/man/man4/nsp.4 b/share/man/man4/nsp.4
new file mode 100644
index 0000000..7ff7fe1
--- /dev/null
+++ b/share/man/man4/nsp.4
@@ -0,0 +1,98 @@
+.\" Copyright (c) 2003 Noriaki MITSUNAGA. All rights reserved.
+.\" Copyright (c) 2003 Hideyuki KURASHINA. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 8, 2004
+.Dt NSP 4
+.Os
+.Sh NAME
+.Nm nsp
+.Nd "Workbit Ninja SCSI-3 based PC-Card SCSI host adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device nsp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+nsp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides access to the
+.Tn SCSI
+bus connected to a PC-Card
+.Tn SCSI
+host adapter based on a Ninja SCSI-3 controller by Workbit.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Alpha-Data AD-PCS201
+.It
+I-O DATA CBSC16
+.El
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr pccard 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver has been developed for
+.Nx Ns / Ns Tn pc98
+and ported for
+.Fx .
+It first appeared in
+.Fx 3.4
+with PAO3 and merged in
+.Fx 4.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Naofumi HONDA .
+.Pp
+This manual page was written by
+.An Noriaki MITSUNAGA Aq non@FreeBSD.org
+and
+.An Hideyuki KURASHINA Aq rushani@FreeBSD.org .
+.Sh BUGS
+SMIT mode is only supported under OLDCARD now.
diff --git a/share/man/man4/null.4 b/share/man/man4/null.4
new file mode 100644
index 0000000..cedfaeb
--- /dev/null
+++ b/share/man/man4/null.4
@@ -0,0 +1,60 @@
+.\" Copyright (c) 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)null.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt NULL 4
+.Os
+.Sh NAME
+.Nm null
+.Nd the null device
+.Sh DESCRIPTION
+The
+.Nm
+device accepts and reads data as any ordinary (and willing)
+file -
+but throws it away.
+The length of the
+.Nm
+device is always zero.
+.Sh FILES
+.Bl -tag -width /dev/null
+.It Pa /dev/null
+.El
+.Sh SEE ALSO
+.Xr zero 4
+.Sh HISTORY
+A
+.Nm
+device appeared in
+.At v7 .
diff --git a/share/man/man4/nve.4 b/share/man/man4/nve.4
new file mode 100644
index 0000000..5fe5229
--- /dev/null
+++ b/share/man/man4/nve.4
@@ -0,0 +1,140 @@
+.\" Copyright (c) 2003 Quinton Dolan
+.\" 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.
+.\"
+.\" $Id: nvnet.4,v 1.1 2003/10/09 16:48:01 q Exp $
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 8, 2007
+.Dt NVE 4
+.Os
+.Sh NAME
+.Nm nve
+.Nd "NVIDIA nForce MCP Networking Adapter device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device nve"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_nve_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the NVIDIA nForce MCP and nForce2 MCP2
+networking adapter that is embedded in the southbridge of most
+nForce and nForce2 motherboards.
+.Pp
+This driver is a reimplementation of the NVIDIA supported Linux
+.Nm nvnet
+driver and uses the same closed source API library to access
+the underlying hardware.
+There is currently no programming documentation available for this
+device, and therefore little is known about the internal architecture
+of the MAC engine itself.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+.It Cm 1000baseTX
+Set 1000Mbps (Gigabit Ethernet) operation.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm full-duplex
+Set full duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the NVIDIA MCP onboard adapters of mainboards with
+the following chipsets:
+.Pp
+.Bl -bullet -compact
+.It
+nForce
+.It
+nForce2
+.It
+nForce3
+.It
+nForce4
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "nve%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "nve%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "nve%d: failed to allocate memory"
+There are not enough mbufs available for allocation.
+.It "nve%d: device timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh BUGS
+There are reports that when the card is in auto select mode,
+ifconfig output reports a 10baseT/UTP output while the LEDs and
+bandwidth show that the card is actually in 100baseTX mode.
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Quinton Dolan Aq q@onthenet.com.au
+and
+.An "David E. O'Brien" Aq obrien@FreeBSD.org .
diff --git a/share/man/man4/nxge.4 b/share/man/man4/nxge.4
new file mode 100644
index 0000000..891ffad
--- /dev/null
+++ b/share/man/man4/nxge.4
@@ -0,0 +1,97 @@
+.\" Copyright (c) 2007, Neterion 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd October 16, 2007
+.Dt NXGE 4
+.Os
+.Sh NAME
+.Nm nxge
+.Nd "Neterion Xframe 10GbE Server/Storage adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device nxge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_nxge_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Neterion Xframe-I and Xframe-II adapters.
+The driver supports TCP Segmentation Offload (TSO/LSO),
+Large Receive Offlaod (LRO), Jumbo Frames (5 buffer mode),
+Header Separation (Rx 2 buffer mode), VLAN, and Promiscuous mode.
+.Pp
+For general information and support, please visit the Neterion support page
+.Pa http://www.neterion.com/support/support.html .
+.Pp
+Support for Jumbo Frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to transmit and receive Jumbo Frames.
+Xframe adapters support Jumbo Frames up to 9600 bytes.
+.Pp
+For Jumbo Frames, the driver will try to allocate physically contiguous buffers.
+Failures to do so may degrade the performance.
+To resolve such problems, please visit
+.Pa http://www.neterion.com
+where additional information and a kernel patch can be found.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Neterion Xframe 10 Gigabit Ethernet adapters listed in
+.Pa http://www.neterion.com/how/pricing.html .
+.Sh SUPPORT
+For troubleshooting tips and FAQs, please visit
+.Pa http://trac.neterion.com/cgi-bin/trac.cgi/wiki/TitleIndex?anonymous .
+.Pp
+For any issues please send an email to
+.Aq support@neterion.com .
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Neterion
+.Aq support@neterion.com .
diff --git a/share/man/man4/ohci.4 b/share/man/man4/ohci.4
new file mode 100644
index 0000000..ee56861
--- /dev/null
+++ b/share/man/man4/ohci.4
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1999
+.\" Nick Hibma <n_hibma@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.
+.\" 3. 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd June 23, 2005
+.Dt OHCI 4
+.Os
+.Sh NAME
+.Nm ohci
+.Nd OHCI USB Host Controller driver
+.Sh SYNOPSIS
+.Cd "device ohci"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for OHCI-type PCI based USB controllers.
+.Sh HARDWARE
+The
+.Nm
+driver supports all OHCI v1.0 compliant controllers including:
+.Pp
+.Bl -bullet -compact
+.It
+AcerLabs M5237 (Aladdin-V)
+.It
+AMD-756
+.It
+OPTi 82C861 (FireLink)
+.It
+NEC uPD 9210
+.It
+CMD Tech 670 (USB0670)
+.It
+CMD Tech 673 (USB0673)
+.It
+NVIDIA nForce3
+.It
+Sun PCIO-2 (RIO USB)
+.El
+.Sh SEE ALSO
+.Xr ehci 4 ,
+.Xr uhci 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Lennart Augustsson Aq augustss@carlstedt.se
+for the
+.Nx
+project.
diff --git a/share/man/man4/orm.4 b/share/man/man4/orm.4
new file mode 100644
index 0000000..2ef54a0
--- /dev/null
+++ b/share/man/man4/orm.4
@@ -0,0 +1,47 @@
+.\" Copyright (c) 2000 Nikolai Saoukh
+.\" 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$
+.\"
+.Dd December 15, 2000
+.Os
+.Dt ORM 4
+.Sh NAME
+.Nm orm
+.Nd ISA I/O space option ROM(s) driver
+.Sh SYNOPSIS
+.Nm
+is automatically included on all systems that have an ISA bus.
+.Sh DESCRIPTION
+The driver scans at boot time the ISA I/O memory space for option
+ROM(s) and claims them.
+Other drivers are thus precluded from using ISA I/O memory that is on
+top of an option ROM.
+.Sh AUTHORS
+This
+manual page was written by
+.An Nikolai Saoukh Aq nms@otdel-1.org .
+.Sh BUGS
+Due to the implementation of the resource manager,
+other drivers cannot attach to the option ROM address range.
diff --git a/share/man/man4/pass.4 b/share/man/man4/pass.4
new file mode 100644
index 0000000..b96d6ba
--- /dev/null
+++ b/share/man/man4/pass.4
@@ -0,0 +1,119 @@
+.\"
+.\" Copyright (c) 1998, 1999 Kenneth D. Merry.
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd October 10, 1998
+.Dt PASS 4
+.Os
+.Sh NAME
+.Nm pass
+.Nd CAM application passthrough driver
+.Sh SYNOPSIS
+.Cd device pass
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a way for userland applications to issue CAM CCBs to the
+kernel.
+.Pp
+Since the
+.Nm
+driver allows direct access to the CAM subsystem, system administrators
+should exercise caution when granting access to this driver.
+If used
+improperly, this driver can allow userland applications to crash a machine
+or cause data loss.
+.Pp
+The
+.Nm
+driver attaches to every
+.Tn SCSI
+device found in the system.
+Since it attaches to every device, it provides a generic means of accessing
+.Tn SCSI
+devices, and allows the user to access devices which have no
+"standard" peripheral driver associated with them.
+.Sh KERNEL CONFIGURATION
+It is only necessary to configure one
+.Nm
+device in the kernel;
+.Nm
+devices are automatically allocated as
+.Tn SCSI
+devices are found.
+.Sh IOCTLS
+.Bl -tag -width 012345678901234
+.It CAMIOCOMMAND
+This ioctl takes most kinds of CAM CCBs and passes them through to the CAM
+transport layer for action.
+Note that some CCB types are not allowed
+through the passthrough device, and must be sent through the
+.Xr xpt 4
+device instead.
+Some examples of xpt-only CCBs are XPT_SCAN_BUS,
+XPT_DEV_MATCH, XPT_RESET_BUS, XPT_SCAN_LUN, XPT_ENG_INQ, and XPT_ENG_EXEC.
+These CCB types have various attributes that make it illogical or
+impossible to service them through the passthrough interface.
+.It CAMGETPASSTHRU
+This ioctl takes an XPT_GDEVLIST CCB, and returns the passthrough device
+corresponding to the device in question.
+Although this ioctl is available through the
+.Nm
+driver, it is of limited use, since the caller must already know that
+the device in question is a passthrough device if they are issuing this
+ioctl.
+It is probably more useful to issue this ioctl through the
+.Xr xpt 4
+device.
+.El
+.Sh FILES
+.Bl -tag -width /dev/passn -compact
+.It Pa /dev/pass Ns Ar n
+Character device nodes for the
+.Nm
+driver.
+There should be one of these for each device accessed through the
+CAM subsystem.
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr cam 3 ,
+.Xr cam_cdbparse 3 ,
+.Xr xpt 4 ,
+.Xr camcontrol 8
+.Sh HISTORY
+The CAM passthrough driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An Kenneth Merry Aq ken@FreeBSD.org
+.Sh BUGS
+It might be nice to have a way to asynchronously send CCBs through the
+passthrough driver.
+This would probably require some sort of read/write
+interface or an asynchronous ioctl interface.
diff --git a/share/man/man4/patm.4 b/share/man/man4/patm.4
new file mode 100644
index 0000000..3ab2f7a
--- /dev/null
+++ b/share/man/man4/patm.4
@@ -0,0 +1,192 @@
+.\"
+.\" Copyright (c) 2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.\" patm(4) man page
+.\"
+.Dd July 15, 2003
+.Dt PATM 4
+.Os
+.Sh NAME
+.Nm patm
+.Nd "device driver for IDT77252 based ATM interfaces (ProSum and IDT)"
+.Sh SYNOPSIS
+.Cd device patm
+.Cd device utopia
+.Cd device atm
+.Pp
+.Cd options NATM
+.Cd options LIBMBPOOL
+.Sh DESCRIPTION
+The
+.Nm
+device driver supports ATM cards based on the IDT77252 chip.
+It has been tested with ProSum's ProATM-155 cards and with IDT's evaluation
+boards.
+The driver interfaces with the
+.Xr natm 4
+framework,
+.Xr netgraph 4
+and HARP.
+It provides only PVC services.
+Signalling, ATMARP, ILMI and other
+higher layer protocols are implemented using
+.Xr netgraph 4
+or HARP.
+.Pp
+For configuring the card for IP see
+.Xr natmip 4 .
+.Pp
+The driver supports UBR, CBR, VBR and ABR traffic.
+Supported AALs are:
+AAL0 (cell payloads), AAL5 and raw AAL.
+The driver supports opening of VCI/VPI 0/0 in RX, raw AAL-mode.
+This VC will receive all incoming cells (even those with non-zero GFC
+fields and VPI/VCI values outside the allowed range) that are not
+claimed by other open connections.
+This may be used for monitoring purposes.
+.Pp
+The following sysctls are recognized by the driver additionally to those
+handled by
+.Xr utopia 4 :
+.Bl -tag -width indent
+.It Va hw.atm.patm Ns Ar N Ns Va .istats
+Returns a list of
+.Vt uint32_t
+statistic counters with internal driver statistics.
+.It Va hw.atm.patm Ns Ar N Ns Va .eeprom
+This is a read-only variable containing the contents of the on-board EEPROM
+device.
+.It Va hw.atm.patm Ns Ar N Ns Va .lbuf_max
+This puts an upper limit on the number of large receive buffers the
+driver will allocate.
+This is a read-only variable that can be set via a
+.Xr loader 8
+tunable.
+.It Va hw.atm.patm Ns Ar N Ns Va .tx_maxmaps
+This is the upper limit of transmission DMA maps the driver will allocate.
+This is read-only but may be set via a
+.Xr loader 8
+tunable.
+.It Va hw.atm.patm Ns Ar N Ns Va .debug
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+These are debugging flags.
+See
+.Pa src/sys/dev/patm/if_patmvar.h
+for the possible flags.
+This may be initialized via a
+.Xr loader 8
+tunable.
+.It Va hw.atm.patm Ns Ar N Ns Va .regs
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+Returns the current values of the card's registers.
+.It Va hw.atm.patm Ns Ar N Ns Va .tsq
+Returns the transmit status queue.
+.El
+.Pp
+When loaded, the driver initializes several variables from
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va hw.patm Ns Ar N Ns Va .lbuf_max
+This initializes the corresponding
+.Xr sysctl 8
+variable and defines an upper
+limit on the number of large receive buffers (mbuf clusters).
+.It Va hw.patm Ns Ar N Ns Va .tx_maxmaps
+This initializes the corresponding
+.Xr sysctl 8
+variable and is the maximum
+number of DMA maps for transmission that the driver will allocated.
+.It Va hw.patm Ns Ar N Ns Va .debug
+.Bf Em
+(Only if debugging enabled.)
+.Ef
+Initializes the debugging flags.
+.El
+.Pp
+The driver supports the media options
+.Cm sdh , noscramb
+and
+.Cm unassigned
+(see
+.Xr utopia 4 )
+when the card is a 155MBit card.
+Both PMC-Sierra S/UNI and IDT77155 PHY chips are supported for these cards.
+For 25MBit cards the IDT77105 is supported.
+.Sh DIAGNOSTICS
+.Bd -literal
+patm1: <NICStAR (77222/77252) ATM adapter> port 0xc000-0xc0ff mem 0xf8000000-0xf83fffff,0xf4000000-0xf4000fff irq 11 at device 8.0 on pci2
+patm1: IDT77252 155MBit interface; idt77252 Rev. G; IDT77155 PHY
+patm1: 128K x 32 SRAM; 4096 connections
+.Ed
+.Sh SEE ALSO
+.Xr natm 4 ,
+.Xr natmip 4 ,
+.Xr utopia 4
+.Sh CAVEATS
+The card fails to generate an interrupt if a cell is received in AAL0 mode
+that has the MSB of the PTI field cleared.
+Therefore cells will be delivered on the next receive interrupt which can happen
+either when the receive status queue is full, or a cell with the last bit of
+the PTI set is received.
+.Pp
+Although the card supports AAL3/4 the driver does not.
+.Pp
+The rate tables used by this driver are not the tables recommended by IDT
+(they are wrong anyway).
+The driver's tables are slightly more aggressive than IDT's.
+That means, that the actual cell rate can be slightly higher than the
+specified.
+This is in contrast to the IDT tables where cell rates 5% less than the
+allowed one have been observed.
+This can be changed by changing the program that generates these tables,
+found in
+.Pa /usr/src/sys/dev/patm/genrtab ,
+and regenerating them.
+.Pp
+The reported media for the 155MBit cards will always be OC3/MM, because
+there is no (known to me) way to figure out the actual medium.
+The medium should really be coded in the EEPROM by the manufacturer.
+.Pp
+The Tx cell counter in the utopia statistics is wrong, because the chip
+uses idle cells for spacing and the PHY counts these cells.
+While there is a configuration option for the chip to switch of these cells
+and, according to the documentation, this should not influence cell spacing,
+it does, so the driver lets the chip generate idle cells.
+.Sh ACKNOWLEDGEMENTS
+Thanks to Christian Bucari from ProSum for lending two of these cards to enable
+the development of this driver.
+Thanks also for answering my questions.
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/pccard.4 b/share/man/man4/pccard.4
new file mode 100644
index 0000000..f955804
--- /dev/null
+++ b/share/man/man4/pccard.4
@@ -0,0 +1,78 @@
+.\"
+.\" Copyright (c) 2002 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd July 9, 2002
+.Dt PCCARD 4
+.Os
+.Sh NAME
+.Nm pccard
+.Nd PC Card bus driver
+.Sh SYNOPSIS
+.Cd device pccard
+.Sh DESCRIPTION
+The
+.Nm
+driver implements the PC Card bus.
+The
+.Nm
+driver supports all PC Card bridges in the system.
+.Sh TUNABLES
+The driver supports the following tunable parameters, which may be
+added to
+.Pa /boot/loader.conf
+or set via the
+.Xr sysctl 8
+command:
+.Bl -tag -width ".Cm hw.pccard.cis_debug" -compact
+.It Cm hw.pccard.debug
+Non-zero values cause more verbose information to be printed when a
+16-bit PC Card is inserted or removed.
+.It Cm hw.pccard.cis_debug
+Non-zero value causes the CIS parsing of the 16-bit PC Card to be much
+more verbose and include a complete CIS dump.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/pccard0.cis" -compact
+.It Pa /dev/pccard0.cis
+This exclusive-use device will report all the CIS chains present in a
+PC Card, if a 16-bit PC Card is inserted in the slot.
+Only one user at a time may access the CIS.
+The CIS is presented as the relevant byte stream from the PC Card.
+For CIS tuples in Attribute Memory (the default), only the even
+locations are presented (the ODD locations are undefined per the
+standard).
+For CIS tuples in Common Memory, every byte is presented to the user.
+Decoding of the CIS tuples is done via a userland program.
+All tuples are presented to the user.
+.El
+.Sh SEE ALSO
+.Xr cardbus 4 ,
+.\" .Xr mecia 4 ,
+.Xr pccbb 4
+.\" .Xr tcic 4
+.Rs
+.%T "PC Card Standard, Release 8"
+.Re
diff --git a/share/man/man4/pccbb.4 b/share/man/man4/pccbb.4
new file mode 100644
index 0000000..27ef584
--- /dev/null
+++ b/share/man/man4/pccbb.4
@@ -0,0 +1,181 @@
+.\"
+.\" Copyright (c) 2002-2003 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd July 21, 2004
+.Dt PCCBB 4
+.Os
+.Sh NAME
+.Nm pccbb
+.Nd cardbus bridge driver
+.Sh SYNOPSIS
+.Cd device cbb
+.Cd device pccard
+.Cd device cardbus
+.Sh DESCRIPTION
+The
+.Nm
+driver implements the Yenta specification for CardBus bridges.
+.Pp
+The following PCI cardbus and pcmcia bridges are supported:
+.Pp
+.Bl -item -compact
+.It
+Cirrus Logic PD6832
+.It
+Cirrus Logic PD6833
+.It
+Cirrus Logic PD6834
+.Pp
+.It
+O2micro OZ6812
+.It
+O2micro OZ6832
+.It
+O2micro OZ6833
+.It
+O2micro OZ6836
+.It
+O2micro OZ6860
+.It
+O2micro OZ6872
+.It
+O2micro OZ6912
+.It
+O2micro OZ6922
+.It
+O2micro OZ6933
+.It
+O2micro OZ6972
+.It
+O2Micro OZ711E1
+.It
+O2Micro OZ711M1
+.El
+.Bl -item -compact
+.It
+Ricoh RL4C475
+.It
+Ricoh RL4C476
+.It
+Ricoh RL4C477
+.It
+Ricoh RL4C478
+.Pp
+.It
+TI PCI-1031
+.It
+TI PCI-1130
+.It
+TI PCI-1131
+.It
+TI PCI-1210
+.It
+TI PCI-1211
+.It
+TI PCI-1220
+.It
+TI PCI-1221
+.It
+TI PCI-1225
+.It
+TI PCI-1250
+.It
+TI PCI-1251
+.It
+TI PCI-1251B
+.It
+TI PCI-1260
+.It
+TI PCI-1260B
+.It
+TI PCI-1410
+.It
+TI PCI-1420
+.It
+TI PCI-1450
+.It
+TI PCI-1451
+.It
+TI PCI-1510
+.It
+TI PCI-1515
+.It
+TI PCI-1520
+.It
+TI PCI-1530
+.It
+TI PCI-1620
+.It
+TI PCI-4410
+.It
+TI PCI-4450
+.It
+TI PCI-4451
+.It
+TI PCI-4510
+.It
+TI PCI-4520
+.It
+TI PCI-[67]x[12]1
+.It
+TI PCI-[67]x20
+.It
+ENE CB710
+.It
+ENE CB720
+.It
+ENE CB1211
+.It
+ENE CB1255
+.It
+ENE CB1410
+.It
+ENE CB1420
+.Pp
+.It
+Toshiba ToPIC95
+.It
+Toshiba ToPIC95B
+.It
+Toshiba ToPIC97
+.It
+Toshiba ToPIC100
+.El
+.Sh TUNABLES
+The driver supports the following tunable parameters, which may be
+added to
+.Pa /boot/loader.conf
+or set via the
+.Xr sysctl 8
+command:
+.Bl -tag -width ".Cm hw.cbb.debug" -compact
+.It Cm hw.cbb.debug
+Non-zero values cause more verbose information to be printed to aid in
+debugging problems with the bridge chipset.
+.El
+.Sh SEE ALSO
+.Xr cardbus 4 ,
+.Xr pccard 4
diff --git a/share/man/man4/pci.4 b/share/man/man4/pci.4
new file mode 100644
index 0000000..6671f0b
--- /dev/null
+++ b/share/man/man4/pci.4
@@ -0,0 +1,344 @@
+.\"
+.\" Copyright (c) 1999 Kenneth D. Merry.
+.\" 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. 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 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$
+.\"
+.Dd January 3, 2008
+.Dt PCI 4
+.Os
+.Sh NAME
+.Nm pci
+.Nd generic PCI driver
+.Sh SYNOPSIS
+.Cd device pci
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a way for userland programs to read and write
+.Tn PCI
+configuration registers.
+It also provides a way for userland programs to get a list of all
+.Tn PCI
+devices, or all
+.Tn PCI
+devices that match various patterns.
+.Pp
+Since the
+.Nm
+driver provides a write interface for
+.Tn PCI
+configuration registers, system administrators should exercise caution when
+granting access to the
+.Nm
+device.
+If used improperly, this driver can allow userland applications to
+crash a machine or cause data loss.
+.Pp
+The
+.Nm
+driver implements the
+.Tn PCI
+bus in the kernel.
+It enumerates any devices on the
+.Tn PCI
+bus and gives
+.Tn PCI
+client drivers the chance to attach to them.
+It assigns resources to children, when the BIOS does not.
+It takes care of routing interrupts when necessary.
+It reprobes the unattached
+.Tn PCI
+children when
+.Tn PCI
+client drivers are dynamically
+loaded at runtime.
+.Sh KERNEL CONFIGURATION
+The
+.Nm
+device is included in the kernel as described in the SYNOPSIS section.
+The
+.Nm
+driver cannot be built as a
+.Xr kld 4 .
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+calls are supported by the
+.Nm
+driver.
+They are defined in the header file
+.In sys/pciio.h .
+.Bl -tag -width 012345678901234
+.Pp
+.It PCIOCGETCONF
+This
+.Xr ioctl 2
+takes a
+.Va pci_conf_io
+structure.
+It allows the user to retrieve information on all
+.Tn PCI
+devices in the system, or on
+.Tn PCI
+devices matching patterns supplied by the user.
+The call may set
+.Va errno
+to any value specified in either
+.Xr copyin 9
+or
+.Xr copyout 9 .
+The
+.Va pci_conf_io
+structure consists of a number of fields:
+.Bl -tag -width match_buf_len
+.It pat_buf_len
+The length, in bytes, of the buffer filled with user-supplied patterns.
+.It num_patterns
+The number of user-supplied patterns.
+.It patterns
+Pointer to a buffer filled with user-supplied patterns.
+.Va patterns
+is a pointer to
+.Va num_patterns
+.Va pci_match_conf
+structures.
+The
+.Va pci_match_conf
+structure consists of the following elements:
+.Bl -tag -width pd_vendor
+.It pc_sel
+.Tn PCI
+domain, bus, slot and function.
+.It pd_name
+.Tn PCI
+device driver name.
+.It pd_unit
+.Tn PCI
+device driver unit number.
+.It pc_vendor
+.Tn PCI
+vendor ID.
+.It pc_device
+.Tn PCI
+device ID.
+.It pc_class
+.Tn PCI
+device class.
+.It flags
+The flags describe which of the fields the kernel should match against.
+A device must match all specified fields in order to be returned.
+The match flags are enumerated in the
+.Va pci_getconf_flags
+structure.
+Hopefully the flag values are obvious enough that they do not need to
+described in detail.
+.El
+.It match_buf_len
+Length of the
+.Va matches
+buffer allocated by the user to hold the results of the
+.Dv PCIOCGETCONF
+query.
+.It num_matches
+Number of matches returned by the kernel.
+.It matches
+Buffer containing matching devices returned by the kernel.
+The items in this buffer are of type
+.Va pci_conf ,
+which consists of the following items:
+.Bl -tag -width pc_subvendor
+.It pc_sel
+.Tn PCI
+domain, bus, slot and function.
+.It pc_hdr
+.Tn PCI
+header type.
+.It pc_subvendor
+.Tn PCI
+subvendor ID.
+.It pc_subdevice
+.Tn PCI
+subdevice ID.
+.It pc_vendor
+.Tn PCI
+vendor ID.
+.It pc_device
+.Tn PCI
+device ID.
+.It pc_class
+.Tn PCI
+device class.
+.It pc_subclass
+.Tn PCI
+device subclass.
+.It pc_progif
+.Tn PCI
+device programming interface.
+.It pc_revid
+.Tn PCI
+revision ID.
+.It pd_name
+Driver name.
+.It pd_unit
+Driver unit number.
+.El
+.It offset
+The offset is passed in by the user to tell the kernel where it should
+start traversing the device list.
+The value passed out by the kernel
+points to the record immediately after the last one returned.
+The user may
+pass the value returned by the kernel in subsequent calls to the
+.Dv PCIOCGETCONF
+ioctl.
+If the user does not intend to use the offset, it must be set to zero.
+.It generation
+.Tn PCI
+configuration generation.
+This value only needs to be set if the offset is set.
+The kernel will compare the current generation number of its internal
+device list to the generation passed in by the user to determine whether
+its device list has changed since the user last called the
+.Dv PCIOCGETCONF
+ioctl.
+If the device list has changed, a status of
+.Va PCI_GETCONF_LIST_CHANGED
+will be passed back.
+.It status
+The status tells the user the disposition of his request for a device list.
+The possible status values are:
+.Bl -ohang
+.It PCI_GETCONF_LAST_DEVICE
+This means that there are no more devices in the PCI device list after the
+ones returned in the
+.Va matches
+buffer.
+.It PCI_GETCONF_LIST_CHANGED
+This status tells the user that the
+.Tn PCI
+device list has changed since his last call to the
+.Dv PCIOCGETCONF
+ioctl and he must reset the
+.Va offset
+and
+.Va generation
+to zero to start over at the beginning of the list.
+.It PCI_GETCONF_MORE_DEVS
+This tells the user that his buffer was not large enough to hold all of the
+remaining devices in the device list that possibly match his criteria.
+It is possible for this status to be returned, even when none of the remaining
+devices in the list would match the user's criteria.
+.It PCI_GETCONF_ERROR
+This indicates a general error while servicing the user's request.
+If the
+.Va pat_buf_len
+is not equal to
+.Va num_patterns
+times
+.Fn sizeof "struct pci_match_conf" ,
+.Va errno
+will be set to
+.Er EINVAL .
+.El
+.El
+.It PCIOCREAD
+This
+.Xr ioctl 2
+reads the
+.Tn PCI
+configuration registers specified by the passed-in
+.Va pci_io
+structure.
+The
+.Va pci_io
+structure consists of the following fields:
+.Bl -tag -width pi_width
+.It pi_sel
+A
+.Va pcisel
+structure which specifies the domain, bus, slot and function the user would
+like to query.
+If the specific bus is not found, errno will be set to ENODEV and -1 returned
+from the ioctl.
+.It pi_reg
+The
+.Tn PCI
+configuration register the user would like to access.
+.It pi_width
+The width, in bytes, of the data the user would like to read.
+This value
+may be either 1, 2, or 4.
+3-byte reads and reads larger than 4 bytes are
+not supported.
+If an invalid width is passed, errno will be set to EINVAL.
+.It pi_data
+The data returned by the kernel.
+.El
+.It PCIOCWRITE
+This
+.Xr ioctl 2
+allows users to write to the
+.Tn PCI
+specified in the passed-in
+.Va pci_io
+structure.
+The
+.Va pci_io
+structure is described above.
+The limitations on data width described for
+reading registers, above, also apply to writing
+.Tn PCI
+configuration registers.
+.El
+.Sh FILES
+.Bl -tag -width /dev/pci -compact
+.It Pa /dev/pci
+Character device for the
+.Nm
+driver.
+.El
+.Sh SEE ALSO
+.Xr pciconf 8
+.Sh HISTORY
+The
+.Nm
+driver (not the kernel's
+.Tn PCI
+support code) first appeared in
+.Fx 2.2 ,
+and was written by Stefan Esser and Garrett Wollman.
+Support for device listing and matching was re-implemented by
+Kenneth Merry, and first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An Kenneth Merry Aq ken@FreeBSD.org
+.Sh BUGS
+It is not possible for users to specify an accurate offset into the device
+list without calling the
+.Dv PCIOCGETCONF
+at least once, since they have no way of knowing the current generation
+number otherwise.
+This probably is not a serious problem, though, since
+users can easily narrow their search by specifying a pattern or patterns
+for the kernel to match against.
diff --git a/share/man/man4/pcib.4 b/share/man/man4/pcib.4
new file mode 100644
index 0000000..e57b66c9
--- /dev/null
+++ b/share/man/man4/pcib.4
@@ -0,0 +1,49 @@
+.\"
+.\" Copyright (c) 2008 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd January 18, 2008
+.Dt PCIB 4
+.Os
+.Sh NAME
+.Nm pcib
+.Nd PCI bridge driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides for host and
+.Tn PCI
+bridges in a
+.Tn PCI
+system.
+.Sh BUGS
+This man page is too short.
diff --git a/share/man/man4/pcic.4 b/share/man/man4/pcic.4
new file mode 100644
index 0000000..589a2ed
--- /dev/null
+++ b/share/man/man4/pcic.4
@@ -0,0 +1,103 @@
+.\"
+.\" Copyright (c) 2001, 2002 M. Warner Losh
+.\" 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. 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 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$
+.\"
+.Dd July 9, 2002
+.Dt PCIC 4
+.Os
+.Sh NAME
+.Nm pcic
+.Nd PC Card bridge driver
+.Sh SYNOPSIS
+.Cd device pcic
+.Cd device pccard
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for older ISA and non-Yenta PCI PC Card bridges.
+The
+.Nm
+driver supports most
+.Tn ExCA
+devices attached to the
+.Tn ISA
+bus or
+.Tn PCI
+devices that do not conform to the Yenta specification.
+.Pp
+The following
+.Tn ISA
+devices, or true clones, are supported in the current code.
+.Pp
+.Bl -tag -width "Intel i82365SL Step A" -compact
+.It Intel i82365SL Step A
+.It Intel i82365SL Step B
+.It Intel i82365SL Step C
+.Tn Intel Ns 's
+original 16-bit PC Card controller.
+.It Intel i82365SL-DF
+.Tn Intel Ns 's
+last version of this device.
+3.3V support was added.
+.It VLSI 82C146
+An older VLSI part with some issues on some machines.
+.It Cirrus Logic PD-6710
+.It Cirrus Logic PD-6720
+.It Cirrus Logic PD-6722
+Cirrus Logic's pcic controller.
+Compatible with the i82365SL Step C with the addition of a different
+3.3V control.
+.It Ricoh RF5C296
+.It Ricoh RF5C396
+Ricoh's PC Card bridge chips.
+These are compatible with the i82365SL Step C, but with yet another
+different 3.3V control.
+.It Vadem 365
+.It Vadem 465
+Compatible with i82365SL Step C.
+.It Vadem 468
+.It Vadem 469
+Like the earlier Vadem models, but with Vadem's own, incompatible, 3.3V
+control system.
+.It IBM PCIC
+.Tn IBM
+clone of the original i82365SL part, with its own ID register value.
+Has no 3.3V ability.
+.El
+.Pp
+Many other vendors made parts in this arena, but most of them were
+compatible with one of the above chipsets.
+.Pp
+The following PCI pcmcia bridges are supported:
+.Pp
+.Bl -tag -width "Intel i82365SL Step A" -compact
+.It Cirrus Logic PD6729
+.It Cirrus Logic PD6730
+.Pp
+.It O2micro OZ6729
+.It O2micro OZ6730
+.El
+.Sh BUGS
+This does not work at all at the moment.
diff --git a/share/man/man4/pcm.4 b/share/man/man4/pcm.4
new file mode 100644
index 0000000..f7992de
--- /dev/null
+++ b/share/man/man4/pcm.4
@@ -0,0 +1,445 @@
+.\"
+.\" Copyright (c) 1998, Luigi Rizzo
+.\" 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$
+.\"
+.Dd June 23, 2007
+.Dt SOUND 4
+.Os
+.Sh NAME
+.Nm sound ,
+.Nm pcm ,
+.Nm snd
+.Nd
+.Fx
+PCM audio device infrastructure
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Ed
+.Pp
+Non-PnP sound cards require the following lines in
+.Xr device.hints 5 :
+.Bd -literal -offset indent
+hint.pcm.0.at="isa"
+hint.pcm.0.irq="5"
+hint.pcm.0.drq="1"
+hint.pcm.0.flags="0x0"
+.Ed
+.Sh DESCRIPTION
+.Bf -emphasis
+Note: There exists some ambiguity in the naming at the moment
+.Pq Nm sound , pcm , snd .
+It will be resolved soon by renaming
+.Cd "device sound"
+to
+.Cd "device snd" ,
+and doing associated changes.
+.Ef
+.Pp
+The
+.Nm
+driver provides support for
+.Tn PCM
+audio play and capture.
+This driver also supports various
+.Tn PCI ,
+.Tn ISA ,
+.Tn WSS/MSS
+compatible
+sound cards, AC97 mixer and High Definition Audio.
+Once the
+.Nm
+driver attaches, supported devices provide audio record and
+playback channels.
+The
+.Fx
+sound system provides dynamic mixing
+.Dq VCHAN
+and rate conversion
+.Dq soft formats .
+True full duplex operation is available on most sound cards.
+.Pp
+If the sound card is supported by a bridge driver, the
+.Nm
+driver works in conjunction with the bridge driver.
+.Pp
+Apart from the usual parameters, the flags field is used to specify
+the secondary
+.Tn DMA
+channel (generally used for capture in full duplex cards).
+Flags are set to 0 for cards not using a secondary
+.Tn DMA
+channel, or to 0x10 + C to specify channel C.
+.Pp
+The driver does its best to recognize the installed hardware and drive
+it correctly so the user is not required to add several lines in
+.Pa /boot/device.hints .
+For
+.Tn PCI
+and
+.Tn ISA
+.Tn PnP
+cards this is actually easy
+since they identify themselves.
+For legacy
+.Tn ISA
+cards, the driver looks for
+.Tn MSS
+cards at addresses 0x530 and 0x604 (unless overridden
+in
+.Pa /boot/device.hints ) .
+.Ss Boot Variables
+In general, the module
+.Pa snd_foo
+corresponds to
+.Cd "device snd_foo"
+and can be
+loaded by the boot
+.Xr loader 8
+via
+.Xr loader.conf 5
+or from the command line using the
+.Xr kldload 8
+utility.
+Options which can be specified in
+.Pa /boot/loader.conf
+include:
+.Bl -tag -width ".Va snd_emu10k1_load" -offset indent
+.It Va snd_driver_load
+.Pq Dq Li NO
+If set to
+.Dq Li YES ,
+this option loads all available drivers.
+.It Va snd_emu10k1_load
+.Pq Dq Li NO
+If set to
+.Dq Li YES ,
+only the SoundBlaster 5.1 driver and dependent modules will be loaded.
+.It Va snd_foo_load
+.Pq Dq Li NO
+If set to
+.Dq Li YES ,
+load driver for card/chipset foo.
+.El
+.Pp
+To define default values for the different mixer channels,
+set the channel to the preferred value using hints, e.g.:
+.Va hint.pcm.0.line Ns = Ns Qq Li 0 .
+This will mute the input channel per default.
+.Ss VCHANs
+Each device can optionally support more playback and recording channels
+than physical hardware provides by using
+.Dq virtual channels
+or
+.Tn VCHANs .
+.Tn VCHAN
+options can be configured via the
+.Xr sysctl 8
+interface but can only be manipulated while the device is inactive.
+.Ss Runtime Configuration
+There are a number of
+.Xr sysctl 8
+variables available.
+.Va hw.snd.*
+tunables are global settings and
+.Va dev.pcm.*
+are device specific.
+.Bl -tag -width ".Va hw.snd.report_soft_formats" -offset indent
+.It Va hw.snd.latency_profile
+Define sets of buffering latency conversion tables for the
+.Va hw.snd.latency
+tunable.
+A value of 0 will use a low and aggressive latency profile which can result
+in possible underruns if the application cannot keep up with a rapid irq
+rate, especially during high workload.
+The default value is 1, which is considered a moderate/safe latency profile.
+.It Va hw.snd.latency
+Configure the buffering latency.
+Only affects applications that do not explicitly request
+blocksize / fragments.
+This tunable provides finer granularity than the
+.Va hw.snd.latency_profile
+tunable.
+Possible values range between 0 (lowest latency) and 10 (highest latency).
+.It Va hw.snd.report_soft_formats
+Controls the internal format conversion if it is
+available transparently to the application software.
+When disabled or not available, the application will
+only be able to select formats the device natively supports.
+.It Va hw.snd.compat_linux_mmap
+Enable to allow PROT_EXEC page mappings.
+All Linux applications using sound and
+.Xr mmap 2
+require this.
+.It Va hw.snd.feeder_rate_round
+Sample rate rounding threshold, to avoid large prime division at the
+cost of accuracy.
+All requested sample rates will be rounded to the nearest threshold value.
+Possible values range between 0 (disabled) and 500.
+Default is 25.
+.It Va hw.snd.feeder_rate_max
+Maximum allowable sample rate.
+.It Va hw.snd.feeder_rate_min
+Minimum allowable sample rate.
+.It Va hw.snd.verbose
+Level of verbosity for the
+.Pa /dev/sndstat
+device.
+Higher values include more output and the highest level,
+four, should be used when reporting problems.
+Other options include:
+.Bl -tag -width 2n
+.It 0
+Installed devices and their allocated bus resources.
+.It 1
+The number of playback, record, virtual channels, and
+flags per device.
+.It 2
+Channel information per device including the channel's
+current format, speed, and pseudo device statistics such as
+buffer overruns and buffer underruns.
+.It 3
+File names and versions of the currently loaded sound modules.
+.It 4
+Various messages intended for debugging.
+.El
+.It Va hw.snd.maxautovchans
+Global
+.Tn VCHAN
+setting that only affects devices with at least one playback or recording channel available.
+The sound system will dynamically create up this many
+.Tn VCHANs .
+Set to
+.Dq 0
+if no
+.Tn VCHANS
+are desired.
+Maximum value is 256.
+.It Va hw.snd.default_unit
+Default sound card for systems with multiple sound cards.
+When using
+.Xr devfs 5 ,
+the default device for
+.Pa /dev/dsp .
+Equivalent to a symlink from
+.Pa /dev/dsp
+to
+.Pa /dev/dsp Ns Va ${hw.snd.default_unit} .
+.It Va hw.snd.default_auto
+Enable to automatically assign default sound unit to the most recent
+attached device.
+.It Va dev.pcm.%d.[play|rec].vchans
+The current number of
+.Tn VCHANs
+allocated per device.
+This can be set to preallocate a certain number of
+.Tn VCHANs .
+Setting this value to
+.Dq 0
+will disable
+.Tn VCHANs
+for this device.
+.It Va dev.pcm.%d.[play|rec].vchanrate
+Sample rate speed for
+.Tn VCHAN
+mixing.
+All playback paths will be converted to this sample rate before the mixing
+process begins.
+.It Va dev.pcm.%d.[play|rec].vchanformat
+Format for
+.Tn VCHAN
+mixing.
+All playback paths will be converted to this format before the mixing
+process begins.
+.It Va dev.pcm.%d.polling
+Experimental polling mode support where the driver operates by querying the
+device state on each tick using a
+.Xr callout 9
+mechanism.
+Disabled by default and currently only available for a few device drivers.
+.El
+.Ss Recording Channels
+On devices that have more than one recording source (ie: mic and line),
+there is a corresponding
+.Pa /dev/dsp%d.r%d
+device.
+.Ss Statistics
+Channel statistics are only kept while the device is open.
+So with situations involving overruns and underruns, consider the output
+while the errant application is open and running.
+.Ss IOCTL Support
+The driver supports most of the
+.Tn OSS
+.Fn ioctl
+functions, and most applications work unmodified.
+A few differences exist, while memory mapped playback is
+supported natively and in
+.Tn Linux
+emulation, memory mapped recording is
+not due to
+.Tn VM
+system design.
+As a consequence, some applications may need to be recompiled
+with a slightly modified audio module.
+See
+.In sys/soundcard.h
+for a complete list of the supported
+.Fn ioctl
+functions.
+.Sh FILES
+The
+.Nm
+drivers may create the following
+device nodes:
+.Pp
+.Bl -tag -width ".Pa /dev/audio%d.%d" -compact
+.It Pa /dev/audio%d.%d
+Sparc-compatible audio device.
+.It Pa /dev/dsp%d.%d
+Digitized voice device.
+.It Pa /dev/dspW%d.%d
+Like
+.Pa /dev/dsp ,
+but 16 bits per sample.
+.It Pa /dev/dsp%d.p%d
+Playback channel.
+.It Pa /dev/dsp%d.r%d
+Record channel.
+.It Pa /dev/dsp%d.vp%d
+Virtual playback channel.
+.It Pa /dev/dsp%d.vr%d
+Virtual recording channel.
+.It Pa /dev/sndstat
+Current
+.Nm
+status, including all channels and drivers.
+.El
+.Pp
+The first number in the device node
+represents the unit number of the
+.Nm
+device.
+All
+.Nm
+devices are listed
+in
+.Pa /dev/sndstat .
+Additional messages are sometimes recorded when the
+device is probed and attached, these messages can be viewed with the
+.Xr dmesg 8
+utility.
+.Pp
+The above device nodes are only created on demand through the dynamic
+.Xr devfs 5
+clone handler.
+Users are strongly discouraged to access them directly.
+For specific sound card access, please instead use
+.Pa /dev/dsp
+or
+.Pa /dev/dsp%d .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It pcm%d:play:%d:dsp%d.p%d: play interrupt timeout, channel dead
+The hardware does not generate interrupts to serve incoming (play)
+or outgoing (record) data.
+.It unsupported subdevice XX
+A device node is not created properly.
+.El
+.Sh SEE ALSO
+.Xr snd_ad1816 4 ,
+.Xr snd_als4000 4 ,
+.Xr snd_atiixp 4 ,
+.Xr snd_audiocs 4 ,
+.Xr snd_cmi 4 ,
+.Xr snd_cs4281 4 ,
+.Xr snd_csa 4 ,
+.Xr snd_ds1 4 ,
+.Xr snd_emu10k1 4 ,
+.Xr snd_emu10kx 4 ,
+.Xr snd_envy24 4 ,
+.Xr snd_envy24ht 4 ,
+.Xr snd_es137x 4 ,
+.Xr snd_ess 4 ,
+.Xr snd_fm801 4 ,
+.Xr snd_gusc 4 ,
+.Xr snd_hda 4 ,
+.Xr snd_ich 4 ,
+.Xr snd_maestro 4 ,
+.Xr snd_maestro3 4 ,
+.Xr snd_mss 4 ,
+.Xr snd_neomagic 4 ,
+.Xr snd_sbc 4 ,
+.Xr snd_solo 4 ,
+.Xr snd_spicds 4 ,
+.Xr snd_t4dwave 4 ,
+.Xr snd_uaudio 4 ,
+.Xr snd_via8233 4 ,
+.Xr snd_via82c686 4 ,
+.Xr snd_vibes 4 ,
+.Xr devfs 5 ,
+.Xr device.hints 5 ,
+.Xr loader.conf 5 ,
+.Xr dmesg 8 ,
+.Xr kldload 8 ,
+.Xr sysctl 8
+.Rs
+.%T "The OSS API"
+.%O "http://www.opensound.com/pguide/oss.pdf"
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.2.6
+as
+.Nm pcm ,
+written by
+.An Luigi Rizzo .
+It was later
+rewritten in
+.Fx 4.0
+by
+.An Cameron Grant .
+The API evolved from the VOXWARE
+standard which later became OSS standard.
+.Sh AUTHORS
+.An -nosplit
+.An Luigi Rizzo Aq luigi@iet.unipi.it
+initially wrote the
+.Nm pcm
+device driver and this manual page.
+.An Cameron Grant Aq gandalf@vilnya.demon.co.uk
+later revised the device driver for
+.Fx 4.0 .
+.An Seigo Tanimura Aq tanimura@r.dl.itc.u-tokyo.ac.jp
+revised this manual page.
+It was then rewritten for
+.Fx 5.2 .
+.Sh BUGS
+Some features of your sound card (e.g., global volume control) might not
+be supported on all devices.
diff --git a/share/man/man4/pcn.4 b/share/man/man4/pcn.4
new file mode 100644
index 0000000..38639ad
--- /dev/null
+++ b/share/man/man4/pcn.4
@@ -0,0 +1,193 @@
+.\" Copyright (c) Berkeley Software Design, Inc.
+.\" Copyright (c) 1997, 1998, 1999, 2000
+.\" Bill Paul <wpaul@osd.bsdi.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd January 31, 2006
+.Dt PCN 4
+.Os
+.Sh NAME
+.Nm pcn
+.Nd "AMD PCnet/PCI Fast Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device pcn"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_pcn_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters and embedded
+controllers based on the AMD PCnet/FAST, PCnet/FAST+, PCnet/FAST III,
+PCnet/PRO and PCnet/Home Ethernet controller chips.
+Supported NIC's include the Allied Telesyn AT-2700 family.
+.Pp
+The PCnet/PCI chips include a 100Mbps Ethernet MAC and support
+both a serial and MII-compliant transceiver interface.
+They use a bus master DMA and a scatter/gather descriptor scheme.
+The AMD chips provide a mechanism for zero-copy receive,
+providing good performance in server environments.
+Receive address filtering is provided using a single perfect filter entry
+for the station address and a 64-bit multicast hash table.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width 10baseTXUTP
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Sq full-duplex
+or
+.Sq half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Sq full-duplex
+or
+.Sq half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width full-duplex
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports adapters and embedded controllers based on the AMD PCnet/FAST,
+PCnet/FAST+, PCnet/FAST III, PCnet/PRO and PCnet/Home Fast Ethernet chips:
+.Pp
+.Bl -bullet -compact
+.It
+AMD Am79C971 PCnet-FAST
+.It
+AMD Am79C972 PCnet-FAST+
+.It
+AMD Am79C973/Am79C975 PCnet-FAST III
+.It
+AMD Am79C976 PCnet-PRO
+.It
+AMD Am79C978 PCnet-Home
+.It
+Allied-Telesis LA-PCI
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "pcn%d: couldn't map ports/memory"
+A fatal initialization error has occurred.
+.It "pcn%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "pcn%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (e.g.\& a cable fault).
+.It "pcn%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "pcn%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.It "pcn%d: chip is in D3 power state -- setting to D0"
+This message applies only to adapters which support power
+management.
+Some operating systems place the controller in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The controller loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform a
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Rs
+.%T AMD PCnet/FAST, PCnet/FAST+ and PCnet/Home datasheets
+.%O http://www.amd.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.3 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@osd.bsdi.com .
diff --git a/share/man/man4/pim.4 b/share/man/man4/pim.4
new file mode 100644
index 0000000..7d334b2
--- /dev/null
+++ b/share/man/man4/pim.4
@@ -0,0 +1,201 @@
+.\" Copyright (c) 2001-2003 International Computer Science Institute
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice shall be included in
+.\" all copies or substantial portions of the Software.
+.\"
+.\" The names and trademarks of copyright holders may not be used in
+.\" advertising or publicity pertaining to the software without specific
+.\" prior permission. Title to copyright in this software and any associated
+.\" documentation will at all times remain with the copyright holders.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+.\" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 12, 2007
+.Dt PIM 4
+.Os
+.\"
+.Sh NAME
+.Nm pim
+.Nd Protocol Independent Multicast
+.\"
+.Sh SYNOPSIS
+.Cd "options MROUTING"
+.Pp
+.In sys/types.h
+.In sys/socket.h
+.In netinet/in.h
+.In netinet/ip_mroute.h
+.In netinet/pim.h
+.Ft int
+.Fn getsockopt "int s" IPPROTO_IP MRT_PIM "void *optval" "socklen_t *optlen"
+.Ft int
+.Fn setsockopt "int s" IPPROTO_IP MRT_PIM "const void *optval" "socklen_t optlen"
+.Ft int
+.Fn getsockopt "int s" IPPROTO_IPV6 MRT6_PIM "void *optval" "socklen_t *optlen"
+.Ft int
+.Fn setsockopt "int s" IPPROTO_IPV6 MRT6_PIM "const void *optval" "socklen_t optlen"
+.Sh DESCRIPTION
+.Tn PIM
+is the common name for two multicast routing protocols:
+Protocol Independent Multicast - Sparse Mode (PIM-SM) and
+Protocol Independent Multicast - Dense Mode (PIM-DM).
+.Pp
+PIM-SM is a multicast routing protocol that can use the underlying
+unicast routing information base or a separate multicast-capable
+routing information base.
+It builds unidirectional shared trees rooted at a Rendezvous
+Point (RP) per group,
+and optionally creates shortest-path trees per source.
+.Pp
+PIM-DM is a multicast routing protocol that uses the underlying
+unicast routing information base to flood multicast datagrams
+to all multicast routers.
+Prune messages are used to prevent future datagrams from propagating
+to routers with no group membership information.
+.Pp
+Both PIM-SM and PIM-DM are fairly complex protocols,
+though PIM-SM is much more complex.
+To enable PIM-SM or PIM-DM multicast routing in a router,
+the user must enable multicast routing and PIM processing in the kernel
+(see
+.Sx SYNOPSIS
+about the kernel configuration options),
+and must run a PIM-SM or PIM-DM capable user-level process.
+From developer's point of view,
+the programming guide described in the
+.Sx "Programming Guide"
+section should be used to control the PIM processing in the kernel.
+.\"
+.Ss Programming Guide
+After a multicast routing socket is open and multicast forwarding
+is enabled in the kernel
+(see
+.Xr multicast 4 ) ,
+one of the following socket options should be used to enable or disable
+PIM processing in the kernel.
+Note that those options require certain privilege
+(i.e., root privilege):
+.Bd -literal
+/* IPv4 */
+int v = 1; /* 1 to enable, or 0 to disable */
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_PIM, (void *)&v, sizeof(v));
+.Ed
+.Bd -literal
+/* IPv6 */
+int v = 1; /* 1 to enable, or 0 to disable */
+setsockopt(mrouter_s6, IPPROTO_IPV6, MRT6_PIM, (void *)&v, sizeof(v));
+.Ed
+.Pp
+After PIM processing is enabled, the multicast-capable interfaces
+should be added
+(see
+.Xr multicast 4 ) .
+In case of PIM-SM, the PIM-Register virtual interface must be added
+as well.
+This can be accomplished by using the following options:
+.Bd -literal
+/* IPv4 */
+struct vifctl vc;
+memset(&vc, 0, sizeof(vc));
+/* Assign all vifctl fields as appropriate */
+\&...
+if (is_pim_register_vif)
+ vc.vifc_flags |= VIFF_REGISTER;
+setsockopt(mrouter_s4, IPPROTO_IP, MRT_ADD_VIF, (void *)&vc,
+ sizeof(vc));
+.Ed
+.Bd -literal
+/* IPv6 */
+struct mif6ctl mc;
+memset(&mc, 0, sizeof(mc));
+/* Assign all mif6ctl fields as appropriate */
+\&...
+if (is_pim_register_vif)
+ mc.mif6c_flags |= MIFF_REGISTER;
+setsockopt(mrouter_s6, IPPROTO_IPV6, MRT6_ADD_MIF, (void *)&mc,
+ sizeof(mc));
+.Ed
+.Pp
+Sending or receiving of PIM packets can be accomplished by
+opening first a
+.Dq raw socket
+(see
+.Xr socket 2 ) ,
+with protocol value of
+.Dv IPPROTO_PIM :
+.Bd -literal
+/* IPv4 */
+int pim_s4;
+pim_s4 = socket(AF_INET, SOCK_RAW, IPPROTO_PIM);
+.Ed
+.Bd -literal
+/* IPv6 */
+int pim_s6;
+pim_s6 = socket(AF_INET6, SOCK_RAW, IPPROTO_PIM);
+.Ed
+.Pp
+Then, the following system calls can be used to send or receive PIM
+packets:
+.Xr sendto 2 ,
+.Xr sendmsg 2 ,
+.Xr recvfrom 2 ,
+.Xr recvmsg 2 .
+.\"
+.Sh SEE ALSO
+.Xr getsockopt 2 ,
+.Xr recvfrom 2 ,
+.Xr recvmsg 2 ,
+.Xr sendmsg 2 ,
+.Xr sendto 2 ,
+.Xr setsockopt 2 ,
+.Xr socket 2 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr ip 4 ,
+.Xr multicast 4
+.\"
+.Sh STANDARDS
+.\" XXX the PIM-SM number must be updated after RFC 2362 is
+.\" replaced by a new RFC by the end of year 2003 or so.
+The PIM-SM protocol is specified in RFC 2362 (to be replaced by
+.%T draft-ietf-pim-sm-v2-new-* ) .
+The PIM-DM protocol is specified in
+.%T draft-ietf-pim-dm-new-v2-* ) .
+.\"
+.Sh AUTHORS
+.An -nosplit
+The original IPv4 PIM kernel support for IRIX and SunOS-4.x was
+implemented by
+.An Ahmed Helmy
+(USC and SGI).
+Later the code was ported to various
+.Bx
+flavors and modified by
+.An George Edmond Eddy
+(Rusty) (ISI),
+.An Hitoshi Asaeda
+(WIDE Project), and
+.An Pavlin Radoslavov
+(USC/ISI and ICSI).
+The IPv6 PIM kernel support was implemented by the KAME project
+.Pq Pa http://www.kame.net ,
+and was based on the IPv4 PIM kernel support.
+.Pp
+This manual page was written by
+.An Pavlin Radoslavov
+(ICSI).
diff --git a/share/man/man4/polling.4 b/share/man/man4/polling.4
new file mode 100644
index 0000000..fea0bfb
--- /dev/null
+++ b/share/man/man4/polling.4
@@ -0,0 +1,220 @@
+.\" Copyright (c) 2002 Luigi Rizzo
+.\" 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$
+.\"
+.Dd April 6, 2007
+.Dt POLLING 4
+.Os
+.Sh NAME
+.Nm polling
+.Nd device polling support
+.Sh SYNOPSIS
+.Cd "options DEVICE_POLLING"
+.Sh DESCRIPTION
+Device polling
+.Nm (
+for brevity) refers to a technique that
+lets the operating system periodically poll devices, instead of
+relying on the devices to generate interrupts when they need attention.
+This might seem inefficient and counterintuitive, but when done
+properly,
+.Nm
+gives more control to the operating system on
+when and how to handle devices, with a number of advantages in terms
+of system responsiveness and performance.
+.Pp
+In particular,
+.Nm
+reduces the overhead for context
+switches which is incurred when servicing interrupts, and
+gives more control on the scheduling of the CPU between various
+tasks (user processes, software interrupts, device handling)
+which ultimately reduces the chances of livelock in the system.
+.Ss Principles of Operation
+In the normal, interrupt-based mode, devices generate an interrupt
+whenever they need attention.
+This in turn causes a
+context switch and the execution of an interrupt handler
+which performs whatever processing is needed by the device.
+The duration of the interrupt handler is potentially unbounded
+unless the device driver has been programmed with real-time
+concerns in mind (which is generally not the case for
+.Fx
+drivers).
+Furthermore, under heavy traffic load, the system might be
+persistently processing interrupts without being able to
+complete other work, either in the kernel or in userland.
+.Pp
+Device polling disables interrupts by polling devices at appropriate
+times, i.e., on clock interrupts and within the idle loop.
+This way, the context switch overhead is removed.
+Furthermore,
+the operating system can control accurately how much work to spend
+in handling device events, and thus prevent livelock by reserving
+some amount of CPU to other tasks.
+.Pp
+Enabling
+.Nm
+also changes the way software network interrupts
+are scheduled, so there is never the risk of livelock because
+packets are not processed to completion.
+.Ss Enabling polling
+Currently only network interface drivers support the
+.Nm
+feature.
+It is turned on and off with help of
+.Xr ifconfig 8
+command.
+.Ss MIB Variables
+The operation of
+.Nm
+is controlled by the following
+.Xr sysctl 8
+MIB variables:
+.Pp
+.Bl -tag -width indent -compact
+.It Va kern.polling.user_frac
+When
+.Nm
+is enabled, and provided that there is some work to do,
+up to this percent of the CPU cycles is reserved to userland tasks,
+the remaining fraction being available for
+.Nm
+processing.
+Default is 50.
+.Pp
+.It Va kern.polling.burst
+Maximum number of packets grabbed from each network interface in
+each timer tick.
+This number is dynamically adjusted by the kernel,
+according to the programmed
+.Va user_frac , burst_max ,
+CPU speed, and system load.
+.Pp
+.It Va kern.polling.each_burst
+The burst above is split into smaller chunks of this number of
+packets, going round-robin among all interfaces registered for
+.Nm .
+This prevents the case that a large burst from a single interface
+can saturate the IP interrupt queue
+.Pq Va net.inet.ip.intr_queue_maxlen .
+Default is 5.
+.Pp
+.It Va kern.polling.burst_max
+Upper bound for
+.Va kern.polling.burst .
+Note that when
+.Nm
+is enabled, each interface can receive at most
+.Pq Va HZ No * Va burst_max
+packets per second unless there are spare CPU cycles available for
+.Nm
+in the idle loop.
+This number should be tuned to match the expected load
+(which can be quite high with GigE cards).
+Default is 150 which is adequate for 100Mbit network and HZ=1000.
+.Pp
+.It Va kern.polling.idle_poll
+Controls if
+.Nm
+is enabled in the idle loop.
+There are no reasons (other than power saving or bugs in the scheduler's
+handling of idle priority kernel threads) to disable this.
+.Pp
+.It Va kern.polling.reg_frac
+Controls how often (every
+.Va reg_frac No / Va HZ
+seconds) the status registers of the device are checked for error
+conditions and the like.
+Increasing this value reduces the load on the bus, but also delays
+the error detection.
+Default is 20.
+.Pp
+.It Va kern.polling.handlers
+How many active devices have registered for
+.Nm .
+.Pp
+.It Va kern.polling.enable
+Legacy MIB, that was used to enable or disable polling globally.
+Currently if set to 1,
+.Nm
+is enabled on all capable interfaces.
+If set to 0,
+.Nm
+is disabled on all interfaces.
+.Pp
+.It Va kern.polling.short_ticks
+.It Va kern.polling.lost_polls
+.It Va kern.polling.pending_polls
+.It Va kern.polling.residual_burst
+.It Va kern.polling.phase
+.It Va kern.polling.suspect
+.It Va kern.polling.stalled
+Debugging variables.
+.El
+.Sh SUPPORTED DEVICES
+Device polling requires explicit modifications to the device drivers.
+As of this writing, the
+.Xr bge 4 ,
+.Xr dc 4 ,
+.Xr em 4 ,
+.Xr fwe 4 ,
+.Xr fwip 4 ,
+.Xr fxp 4 ,
+.Xr ixgb 4 ,
+.Xr nfe 4 ,
+.Xr nge 4 ,
+.Xr re 4 ,
+.Xr rl 4 ,
+.Xr sf 4 ,
+.Xr sis 4 ,
+.Xr ste 4 ,
+.Xr stge 4 ,
+.Xr vge 4 ,
+.Xr vr 4 ,
+and
+.Xr xl 4
+devices are supported, with others in the works.
+The modifications are rather straightforward, consisting in
+the extraction of the inner part of the interrupt service routine
+and writing a callback function,
+.Fn *_poll ,
+which is invoked
+to probe the device for events and process them.
+(See the
+conditionally compiled sections of the devices mentioned above
+for more details.)
+.Pp
+As in the worst case the devices are only polled on clock interrupts,
+in order to reduce the latency in processing packets, it is not advisable
+to decrease the frequency of the clock below 1000 Hz.
+.Sh HISTORY
+Device polling first appeared in
+.Fx 4.6
+and
+.Fx 5.0 .
+.Sh AUTHORS
+Device polling was written by
+.An Luigi Rizzo Aq luigi@iet.unipi.it .
diff --git a/share/man/man4/ppbus.4 b/share/man/man4/ppbus.4
new file mode 100644
index 0000000..4a873056
--- /dev/null
+++ b/share/man/man4/ppbus.4
@@ -0,0 +1,366 @@
+.\" Copyright (c) 1998, 1999 Nicolas Souchu
+.\" 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$
+.\"
+.Dd March 1, 1998
+.Dt PPBUS 4
+.Os
+.Sh NAME
+.Nm ppbus
+.Nd Parallel Port Bus system
+.Sh SYNOPSIS
+.Cd "device ppbus"
+.Pp
+.Cd "device vpo"
+.Pp
+.Cd "device lpt"
+.Cd "device plip"
+.Cd "device ppi"
+.Cd "device pps"
+.Cd "device lpbb"
+.Sh DESCRIPTION
+The
+.Em ppbus
+system provides a uniform, modular and architecture-independent
+system for the implementation of drivers to control various parallel devices,
+and to utilize different parallel port chipsets.
+.Sh DEVICE DRIVERS
+In order to write new drivers or port existing drivers, the ppbus system
+provides the following facilities:
+.Bl -bullet -offset indent
+.It
+architecture-independent macros or functions to access parallel ports
+.It
+mechanism to allow various devices to share the same parallel port
+.It
+a user interface named
+.Xr ppi 4
+that allows parallel port access from outside the kernel without conflicting
+with kernel-in drivers.
+.El
+.Ss Developing new drivers
+.Pp
+The ppbus system has been designed to support the development of standard
+and non-standard software:
+.Pp
+.Bl -column "Driver" -compact
+.It Em Driver Ta Em Description
+.It Sy vpo Ta "VPI0 parallel to Adaptec AIC-7110 SCSI controller driver" .
+It uses standard and non-standard parallel port accesses.
+.It Sy ppi Ta "Parallel port interface for general I/O"
+.It Sy pps Ta "Pulse per second Timing Interface"
+.It Sy lpbb Ta "Philips official parallel port I2C bit-banging interface"
+.El
+.Ss Porting existing drivers
+.Pp
+Another approach to the ppbus system is to port existing drivers.
+Various drivers have already been ported:
+.Pp
+.Bl -column "Driver" -compact
+.It Em Driver Ta Em Description
+.It Sy lpt Ta "lpt printer driver"
+.It Sy plip Ta "lp parallel network interface driver"
+.El
+.Pp
+ppbus should let you port any other software even from other operating systems
+that provide similar services.
+.Sh PARALLEL PORT CHIPSETS
+Parallel port chipset support is provided by
+.Xr ppc 4 .
+.Pp
+The ppbus system provides functions and macros to allocate a new
+parallel port bus, then initialize it and upper peripheral device drivers.
+.Pp
+ppc makes chipset detection and initialization and then calls ppbus attach
+functions to initialize the ppbus system.
+.Sh PARALLEL PORT MODEL
+The logical parallel port model chosen for the ppbus system is the PC's
+parallel port model.
+Consequently, for the i386 implementation of ppbus,
+most of the services provided by ppc are macros for inb()
+and outb() calls.
+But, for an other architecture, accesses to one of our logical
+registers (data, status, control...) may require more than one I/O access.
+.Ss Description
+The parallel port may operate in the following modes:
+.Bl -bullet -offset indent
+.It
+compatible mode, also called Centronics mode
+.It
+bidirectional 8/4-bits mode, also called NIBBLE mode
+.It
+byte mode, also called PS/2 mode
+.It
+Extended Capability Port mode, ECP
+.It
+Enhanced Parallel Port mode, EPP
+.It
+mixed ECP+EPP or ECP+PS/2 modes
+.El
+.Ss Compatible mode
+This mode defines the protocol used by most PCs to transfer data to a printer.
+In this mode, data is placed on the port's data lines, the printer status is
+checked for no errors and that it is not busy, and then a data Strobe is
+generated by the software to clock the data to the printer.
+.Pp
+Many I/O controllers have implemented a mode that uses a FIFO buffer to
+transfer data with the Compatibility mode protocol.
+This mode is referred to as
+"Fast Centronics" or "Parallel Port FIFO mode".
+.Ss Bidirectional mode
+The NIBBLE mode is the most common way to get reverse channel data from a
+printer or peripheral.
+Combined with the standard host to printer mode, it
+provides a complete bidirectional channel.
+.Pp
+In this mode, outputs are 8-bits long.
+Inputs are accomplished by reading
+4 of the 8 bits of the status register.
+.Ss Byte mode
+In this mode, the data register is used either for outputs and inputs.
+Then,
+any transfer is 8-bits long.
+.Ss Extended Capability Port mode
+The ECP protocol was proposed as an advanced mode for communication with
+printer and scanner type peripherals.
+Like the EPP protocol, ECP mode provides
+for a high performance bidirectional communication path between the host
+adapter and the peripheral.
+.Pp
+ECP protocol features include:
+.Bl -item -offset indent
+.It
+Run_Length_Encoding (RLE) data compression for host adapters
+.It
+FIFOs for both the forward and reverse channels
+.It
+DMA as well as programmed I/O for the host register interface.
+.El
+.Ss Enhanced Parallel Port mode
+The EPP protocol was originally developed as a means to provide a high
+performance parallel port link that would still be compatible with the
+standard parallel port.
+.Pp
+The EPP mode has two types of cycle: address and data.
+What makes the
+difference at hardware level is the strobe of the byte placed on the data
+lines.
+Data are strobed with nAutofeed, addresses are strobed with
+nSelectin signals.
+.Pp
+A particularity of the ISA implementation of the EPP protocol is that an
+EPP cycle fits in an ISA cycle.
+In this fashion, parallel port peripherals can
+operate at close to the same performance levels as an equivalent ISA plug-in
+card.
+.Pp
+At software level, you may implement the protocol you wish, using data and
+address cycles as you want.
+This is for the IEEE1284 compatible part.
+Then,
+peripheral vendors may implement protocol handshake with the following
+status lines: PError, nFault and Select.
+Try to know how these lines toggle
+with your peripheral, allowing the peripheral to request more data, stop the
+transfer and so on.
+.Pp
+At any time, the peripheral may interrupt the host with the nAck signal without
+disturbing the current transfer.
+.Ss Mixed modes
+Some manufacturers, like SMC, have implemented chipsets that support mixed
+modes.
+With such chipsets, mode switching is available at any time by
+accessing the extended control register.
+.Sh IEEE1284-1994 Standard
+.Ss Background
+This standard is also named "IEEE Standard Signaling Method for a
+Bidirectional Parallel Peripheral Interface for Personal Computers".
+It
+defines a signaling method for asynchronous, fully interlocked, bidirectional
+parallel communications between hosts and printers or other peripherals.
+It
+also specifies a format for a peripheral identification string and a method of
+returning this string to the host outside of the bidirectional data stream.
+.Pp
+This standard is architecture independent and only specifies dialog handshake
+at signal level.
+One should refer to architecture specific documentation in
+order to manipulate machine dependent registers, mapped memory or other
+methods to control these signals.
+.Pp
+The IEEE1284 protocol is fully oriented with all supported parallel port
+modes.
+The computer acts as master and the peripheral as slave.
+.Pp
+Any transfer is defined as a finite state automaton.
+It allows software to
+properly manage the fully interlocked scheme of the signaling method.
+The compatible mode is supported "as is" without any negotiation because it
+is compatible.
+Any other mode must be firstly negotiated by the host to check
+it is supported by the peripheral, then to enter one of the forward idle
+states.
+.Pp
+At any time, the slave may want to send data to the host.
+This is only
+possible from forward idle states (nibble, byte, ecp...).
+So, the
+host must have previously negotiated to permit the peripheral to
+request transfer.
+Interrupt lines may be dedicated to the requesting signals
+to prevent time consuming polling methods.
+.Pp
+But peripheral requests are only a hint to the master host.
+If the host
+accepts the transfer, it must firstly negotiate the reverse mode and then
+starts the transfer.
+At any time during reverse transfer, the host may
+terminate the transfer or the slave may drive wires to signal that no more
+data is available.
+.Ss Implementation
+IEEE1284 Standard support has been implemented at the top of the ppbus system
+as a set of procedures that perform high level functions like negotiation,
+termination, transfer in any mode without bothering you with low level
+characteristics of the standard.
+.Pp
+IEEE1284 interacts with the ppbus system as little as possible.
+That means
+you still have to request the ppbus when you want to access it, the negotiate
+function does not do it for you.
+And of course, release it later.
+.Sh ARCHITECTURE
+.Ss adapter, ppbus and device layers
+First, there is the
+.Em adapter
+layer, the lowest of the ppbus system.
+It provides
+chipset abstraction throw a set of low level functions that maps the logical
+model to the underlying hardware.
+.Pp
+Secondly, there is the
+.Em ppbus
+layer that provides functions to:
+.Bl -enum -offset indent
+.It
+share the parallel port bus among the daisy-chain like connected devices
+.It
+manage devices linked to ppbus
+.It
+propose an arch-independent interface to access the hardware layer.
+.El
+.Pp
+Finally, the
+.Em device
+layer gathers the parallel peripheral device drivers.
+.Pp
+.Ss Parallel modes management
+We have to differentiate operating modes at various ppbus system layers.
+Actually, ppbus and adapter operating modes on one hands and for each
+one, current and available modes are separated.
+.Pp
+With this level of abstraction a particular chipset may commute from any
+native mode to any other mode emulated with extended modes without
+disturbing upper layers.
+For example, most chipsets support NIBBLE mode as
+native and emulated with ECP and/or EPP.
+.Pp
+This architecture should support IEEE1284-1994 modes.
+.Sh FEATURES
+.Ss The boot process
+The boot process starts with the probe stage of the
+.Xr ppc 4
+driver during ISA bus (PC architecture) initialization.
+During attachment of
+the ppc driver, a new ppbus structure is allocated, then probe and attachment
+for this new bus node are called.
+.Pp
+ppbus attachment tries to detect any PnP parallel peripheral (according to
+.%T "Plug and Play Parallel Port Devices"
+draft from (c)1993-4 Microsoft Corporation)
+then probes and attaches known device drivers.
+.Pp
+During probe, device drivers are supposed to request the ppbus and try to
+set their operating mode.
+This mode will be saved in the context structure and
+returned each time the driver requests the ppbus.
+.Ss Bus allocation and interrupts
+ppbus allocation is mandatory not to corrupt I/O of other devices.
+Another
+usage of ppbus allocation is to reserve the port and receive incoming
+interrupts.
+.Pp
+High level interrupt handlers are connected to the ppbus system thanks to the
+newbus
+.Fn BUS_SETUP_INTR
+and
+.Fn BUS_TEARDOWN_INTR
+functions.
+But, in order to attach a handler, drivers must
+own the bus.
+Consequently, a ppbus request is mandatory in order to call the above
+functions (see existing drivers for more info).
+Note that the interrupt handler
+is automatically released when the ppbus is released.
+.Ss Microsequences
+.Em Microsequences
+is a general purpose mechanism to allow fast low-level
+manipulation of the parallel port.
+Microsequences may be used to do either
+standard (in IEEE1284 modes) or non-standard transfers.
+The philosophy of
+microsequences is to avoid the overhead of the ppbus layer and do most of
+the job at adapter level.
+.Pp
+A microsequence is an array of opcodes and parameters.
+Each opcode codes an
+operation (opcodes are described in
+.Xr microseq 9 ) .
+Standard I/O operations are implemented at ppbus level whereas basic I/O
+operations and microseq language are coded at adapter level for efficiency.
+.Pp
+As an example, the
+.Xr vpo 4
+driver uses microsequences to implement:
+.Bl -bullet -offset indent
+.It
+a modified version of the NIBBLE transfer mode
+.It
+various I/O sequences to initialize, select and allocate the peripheral
+.El
+.Sh SEE ALSO
+.Xr lpt 4 ,
+.Xr plip 4 ,
+.Xr ppc 4 ,
+.Xr ppi 4 ,
+.Xr vpo 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/ppc.4 b/share/man/man4/ppc.4
new file mode 100644
index 0000000..9b96625
--- /dev/null
+++ b/share/man/man4/ppc.4
@@ -0,0 +1,136 @@
+.\" Copyright (c) 1998, 1999, Nicolas Souchu
+.\" 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$
+.\"
+.Dd March 5, 1998
+.Dt PPC 4
+.Os
+.Sh NAME
+.Nm ppc
+.Nd Parallel Port Chipset driver
+.Sh SYNOPSIS
+.Cd "device ppc"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.ppc.0.at="isa"
+.Cd hint.ppc.0.irq="7"
+.Pp
+For one or more PPBUS busses:
+.Cd "device ppbus"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides low level support to various parallel port chipsets for the
+.Xr ppbus 4
+system.
+.Pp
+During the probe phase,
+.Nm
+detects parallel port chipsets and initializes
+private data according to their operating mode: COMPATIBLE,
+NIBBLE, PS/2, EPP, ECP and other mixed modes.
+If a mode is provided at startup through the
+.Va flags
+variable of the boot
+interface, the operating mode of the chipset is forced according to
+.Va flags
+and the hardware supported modes.
+.Pp
+During the attach phase,
+.Nm
+allocates a ppbus structure, initializes it and calls the ppbus
+attach function.
+.Ss Supported flags
+.Bl -item -offset indent
+.It
+bits 0-3: chipset forced mode(s)
+.Bd -literal
+PPB_COMPATIBLE 0x0 /* Centronics compatible mode */
+PPB_NIBBLE 0x1 /* reverse 4 bit mode */
+PPB_PS2 0x2 /* PS/2 byte mode */
+PPB_EPP 0x4 /* EPP mode, 32 bit */
+PPB_ECP 0x8 /* ECP mode */
+.Ed
+.Pp
+And any mixed values.
+.It
+bit 4: EPP protocol (0 EPP 1.9, 1 EPP 1.7)
+.It
+bit 5: activate IRQ (1 IRQ disabled, 0 IRQ enabled)
+.It
+bit 6: disable chipset specific detection
+.It
+bit 7: disable FIFO detection
+.El
+.Ss Supported chipsets
+Some parallel port chipsets are explicitly supported:
+detection and initialisation code has been written according to
+their datasheets.
+.Bl -bullet -offset indent
+.It
+SMC FDC37C665GT and FDC37C666GT chipsets
+.It
+Natsemi PC873xx-family (PC87332 and PC87306)
+.It
+Winbond W83877xx-family (W83877F and W83877AF)
+.It
+SMC-like chipsets with mixed modes (see
+.Xr ppbus 4 )
+.El
+.Ss Adding support to a new chipset
+You may want to add support for the newest chipset your motherboard was
+sold with.
+For the ISA bus, just retrieve the specs of the chipset and write the
+corresponding
+.Fn ppc_mychipset_detect ""
+function.
+Then add an entry to the general purpose
+.Fn ppc_detect ""
+function.
+.Pp
+Your
+.Fn ppc_mychipset_detect ""
+function should ensure that if the mode field of the
+.Va flags
+boot variable is not null, then the operating
+mode is forced to the given mode and no other mode is available and
+ppb->ppb_avm field contains the available modes of the chipset.
+.Sh SEE ALSO
+.Xr ppbus 4 ,
+.Xr ppi 4 ,
+.Xr device.hints 5
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Nicolas Souchu .
+.Sh BUGS
+The chipset detection process may corrupt your chipset configuration.
+You may
+disable chipset specific detection by using the above flags.
diff --git a/share/man/man4/ppi.4 b/share/man/man4/ppi.4
new file mode 100644
index 0000000..a6041d2
--- /dev/null
+++ b/share/man/man4/ppi.4
@@ -0,0 +1,107 @@
+.\" Copyright (c) 1997
+.\" Michael Smith
+.\"
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd January 2, 1998
+.Dt PPI 4
+.Os
+.Sh NAME
+.Nm ppi
+.Nd "user-space interface to ppbus parallel 'geek' port"
+.Sh SYNOPSIS
+.Cd "device ppi"
+.Pp
+Minor numbering: unit numbers correspond directly to ppbus numbers.
+.Pp
+.In dev/ppbus/ppi.h
+.In dev/ppbus/ppbconf.h
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a convenient means for user applications to manipulate the
+state of the parallel port, enabling easy low-speed I/O operations without
+the security problems inherent with the use of the
+.Pa /dev/io
+interface.
+.Sh PROGRAMMING INTERFACE
+All I/O on the
+.Nm
+interface is performed using
+.Fn ioctl
+calls.
+Each command takes a single
+.Ft u_int8_t
+argument, transferring one byte of data.
+The following commands are available:
+.Bl -tag -width indent
+.It Dv PPIGDATA , PPISDATA
+Get and set the contents of the data register.
+.It Dv PPIGSTATUS , PPISSTATUS
+Get and set the contents of the status register.
+.It Dv PPIGCTRL , PPISCTRL
+Get and set the contents of the control register.
+The following defines correspond to bits in this register.
+Setting a bit in the control register drives the corresponding output low.
+.Bl -tag -width indent -compact
+.It Dv STROBE
+.It Dv AUTOFEED
+.It Dv nINIT
+.It Dv SELECTIN
+.It Dv PCD
+.El
+.It Dv PPIGEPP , PPISEPP
+Get and set the contents of the EPP control register.
+.It Dv PPIGECR , PPISECR
+Get and set the contents of the ECP control register.
+.It Dv PPIGFIFO , PPISFIFO
+Read and write the ECP FIFO (8-bit operations only).
+.El
+.Sh EXAMPLES
+To present the value 0x5a to the data port, drive STROBE low and then high
+again, the following code fragment can be used:
+.Bd -literal -compact
+
+ int fd;
+ u_int8_t val;
+
+ val = 0x5a;
+ ioctl(fd, PPISDATA, &val);
+ ioctl(fd, PPIGCTRL, &val);
+ val |= STROBE;
+ ioctl(fd, PPISCTRL, &val);
+ val &= ~STROBE;
+ ioctl(fd, PPISCTRL, &val);
+
+.Ed
+.Sh BUGS
+The inverse sense of signals is confusing.
+.Pp
+The
+.Fn ioctl
+interface is slow, and there is no way (yet) to chain multiple operations together.
+.Pp
+The headers required for user applications are not installed as part of the
+standard system.
diff --git a/share/man/man4/ppp.4 b/share/man/man4/ppp.4
new file mode 100644
index 0000000..4e9ad61
--- /dev/null
+++ b/share/man/man4/ppp.4
@@ -0,0 +1,84 @@
+.\" $NetBSD: ppp.4,v 1.1 1996/08/10 21:26:12 explorer Exp $
+.\"
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)lo.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd August 10, 1996
+.Dt PPP 4
+.Os
+.Sh NAME
+.Nm ppp
+.Nd point to point protocol network interface
+.Sh SYNOPSIS
+.Cd "device ppp"
+.Sh DESCRIPTION
+The
+.Nm
+interface allows serial lines to be used as network interfaces using the
+.Em point-to-point
+protocol.
+The
+.Nm
+interface can use various types of compression and has many features over
+the
+.Xr sl 4
+protocol.
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It ppp%d: af%d not supported.
+The interface was handed
+a message with addresses formatted in an unsuitable address
+family; the packet was dropped.
+.El
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr sl 4 ,
+.Xr pppd 8 ,
+.Xr pppstats 8
+.Sh BUGS
+Currently, only the
+.Xr ip 4
+protocol is supported.
diff --git a/share/man/man4/psm.4 b/share/man/man4/psm.4
new file mode 100644
index 0000000..01cbd9c
--- /dev/null
+++ b/share/man/man4/psm.4
@@ -0,0 +1,877 @@
+.\"
+.\" Copyright (c) 1997
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd April 8, 2008
+.Dt PSM 4
+.Os
+.Sh NAME
+.Nm psm
+.Nd PS/2 mouse style pointing device driver
+.Sh SYNOPSIS
+.Cd "options KBD_RESETDELAY=N"
+.Cd "options KBD_MAXWAIT=N"
+.Cd "options PSM_DEBUG=N"
+.Cd "options KBDIO_DEBUG=N"
+.Cd "device psm"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.psm.0.at="atkbdc"
+.Cd hint.psm.0.irq="12"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the PS/2 mouse style pointing device.
+Currently there can be only one
+.Nm
+device node in the system.
+As the PS/2 mouse port is located
+at the auxiliary port of the keyboard controller,
+the keyboard controller driver,
+.Nm atkbdc ,
+must also be configured in the kernel.
+Note that there is currently no provision of changing the
+.Em irq
+number.
+.Pp
+Basic PS/2 style pointing device has two or three buttons.
+Some devices may have a roller or a wheel and/or additional buttons.
+.Ss Device Resolution
+The PS/2 style pointing device usually has several grades of resolution,
+that is, sensitivity of movement.
+They are typically 25, 50, 100 and 200
+pulse per inch.
+Some devices may have finer resolution.
+The current resolution can be changed at runtime.
+The
+.Nm
+driver allows the user to initially set the resolution
+via the driver flag
+(see
+.Sx "DRIVER CONFIGURATION" )
+or change it later via the
+.Xr ioctl 2
+command
+.Dv MOUSE_SETMODE
+(see
+.Sx IOCTLS ) .
+.Ss Report Rate
+Frequency, or report rate, at which the device sends movement
+and button state reports to the host system is also configurable.
+The PS/2 style pointing device typically supports 10, 20, 40, 60, 80, 100
+and 200 reports per second.
+60 or 100 appears to be the default value for many devices.
+Note that when there is no movement and no button has changed its state,
+the device will not send anything to the host system.
+The report rate can be changed via an ioctl call.
+.Ss Operation Levels
+The
+.Nm
+driver has three levels of operation.
+The current operation level can be set via an ioctl call.
+.Pp
+At the level zero the basic support is provided; the device driver will report
+horizontal and vertical movement of the attached device
+and state of up to three buttons.
+The movement and status are encoded in a series of fixed-length data packets
+(see
+.Sx "Data Packet Format" ) .
+This is the default level of operation and the driver is initially
+at this level when opened by the user program.
+.Pp
+The operation level one, the `extended' level, supports a roller (or wheel),
+if any, and up to 11 buttons.
+The movement of the roller is reported as movement along the Z axis.
+8 byte data packets are sent to the user program at this level.
+.Pp
+At the operation level two, data from the pointing device is passed to the
+user program as is. Conversely, command from the user program is passed
+to the pointing device as is and the user program is responsible for
+status validation and error recovery.
+Modern PS/2 type pointing devices often use proprietary data format.
+Therefore, the user program is expected to have
+intimate knowledge about the format from a particular device when operating
+the driver at this level.
+This level is called `native' level.
+.Ss Data Packet Format
+Data packets read from the
+.Nm
+driver are formatted differently at each operation level.
+.Pp
+A data packet from the PS/2 mouse style pointing device
+is three bytes long at the operation level zero:
+.Pp
+.Bl -tag -width Byte_1 -compact
+.It Byte 1
+.Bl -tag -width bit_7 -compact
+.It bit 7
+One indicates overflow in the vertical movement count.
+.It bit 6
+One indicates overflow in the horizontal movement count.
+.It bit 5
+Set if the vertical movement count is negative.
+.It bit 4
+Set if the horizontal movement count is negative.
+.It bit 3
+Always one.
+.\" The ALPS GlidePoint clears this bit when the user `taps' the surface of
+.\" the pad, otherwise the bit is set.
+.\" Most, if not all, other devices always set this bit.
+.It bit 2
+Middle button status; set if pressed.
+For devices without the middle
+button, this bit is always zero.
+.It bit 1
+Right button status; set if pressed.
+.It bit 0
+Left button status; set if pressed.
+.El
+.It Byte 2
+Horizontal movement count in two's complement;
+-256 through 255.
+Note that the sign bit is in the first byte.
+.It Byte 3
+Vertical movement count in two's complement;
+-256 through 255.
+Note that the sign bit is in the first byte.
+.El
+.Pp
+At the level one, a data packet is encoded
+in the standard format
+.Dv MOUSE_PROTO_SYSMOUSE
+as defined in
+.Xr mouse 4 .
+.Pp
+At the level two, native level, there is no standard on the size and format
+of the data packet.
+.Ss Acceleration
+The
+.Nm
+driver can somewhat `accelerate' the movement of the pointing device.
+The faster you move the device, the further the pointer
+travels on the screen.
+The driver has an internal variable which governs the effect of
+the acceleration.
+Its value can be modified via the driver flag
+or via an ioctl call.
+.Ss Device Number
+The minor device number of the
+.Nm
+is made up of:
+.Bd -literal -offset indent
+minor = (`unit' << 1) | `non-blocking'
+.Ed
+.Pp
+where `unit' is the device number (usually 0) and the `non-blocking' bit
+is set to indicate ``do not block waiting for mouse input,
+return immediately''.
+The `non-blocking' bit should be set for \fIXFree86\fP,
+therefore the minor device number usually used for \fIXFree86\fP is 1.
+See
+.Sx FILES
+for device node names.
+.Sh DRIVER CONFIGURATION
+.Ss Kernel Configuration Options
+There are following kernel configuration options to control the
+.Nm
+driver.
+They may be set in the kernel configuration file
+(see
+.Xr config 8 ) .
+.Bl -tag -width MOUSE
+.It Em KBD_RESETDELAY=X , KBD_MAXWAIT=Y
+The
+.Nm
+driver will attempt to reset the pointing device during the boot process.
+It sometimes takes a long while before the device will respond after
+reset.
+These options control how long the driver should wait before
+it eventually gives up waiting.
+The driver will wait
+.Fa X
+*
+.Fa Y
+msecs at most.
+If the driver seems unable to detect your pointing
+device, you may want to increase these values.
+The default values are
+200 msec for
+.Fa X
+and 5
+for
+.Fa Y .
+.It Em PSM_DEBUG=N , KBDIO_DEBUG=N
+Sets the debug level to
+.Fa N .
+The default debug level is zero.
+See
+.Sx DIAGNOSTICS
+for debug logging.
+.El
+.Ss Driver Flags
+The
+.Nm
+driver accepts the following driver flags.
+Set them in
+.Pa /boot/device.hints
+(see
+.Sx EXAMPLES
+below).
+.Pp
+.Bl -tag -width MOUSE
+.It bit 0..3 RESOLUTION
+This flag specifies the resolution of the pointing device.
+It must be zero through four.
+The greater the value
+is, the finer resolution the device will select.
+Actual resolution selected by this field varies according to the model
+of the device.
+Typical resolutions are:
+.Pp
+.Bl -tag -width 0_(medium_high)__ -compact
+.It Em 1 (low)
+25 pulse per inch (ppi)
+.It Em 2 (medium low)
+50 ppi
+.It Em 3 (medium high)
+100 ppi
+.It Em 4 (high)
+200 ppi
+.El
+.Pp
+Leaving this flag zero will selects the default resolution for the
+device (whatever it is).
+.It bit 4..7 ACCELERATION
+This flag controls the amount of acceleration effect.
+The smaller the value of this flag is, more sensitive the movement becomes.
+The minimum value allowed, thus the value for the most sensitive setting,
+is one.
+Setting this flag to zero will completely disables the
+acceleration effect.
+.It bit 8 NOCHECKSYNC
+The
+.Nm
+driver tries to detect the first byte of the data packet by checking
+the bit pattern of that byte.
+Although this method should work with most
+PS/2 pointing devices, it may interfere with some devices which are not
+so compatible with known devices.
+If you think your pointing device is not functioning as expected,
+and the kernel frequently prints the following message to the console,
+.Bd -literal -offset indent
+psmintr: out of sync (xxxx != yyyy).
+.Ed
+.Pp
+set this flag to disable synchronization check and see if it helps.
+.It bit 9 NOIDPROBE
+The
+.Nm
+driver will not try to identify the model of the pointing device and
+will not carry out model-specific initialization.
+The device should always act like a standard PS/2 mouse without such
+initialization.
+Extra features, such as wheels and additional buttons, will not be
+recognized by the
+.Nm
+driver.
+.It bit 10 NORESET
+When this flag is set, the
+.Nm
+driver will not reset the pointing device when initializing the device.
+If the
+.Fx
+kernel
+is started after another OS has run, the pointing device will inherit
+settings from the previous OS.
+However, because there is no way for the
+.Nm
+driver to know the settings, the device and the driver may not
+work correctly.
+The flag should never be necessary under normal circumstances.
+.It bit 11 FORCETAP
+Some pad devices report as if the fourth button is pressed
+when the user `taps' the surface of the device (see
+.Sx CAVEATS ) .
+This flag will make the
+.Nm
+driver assume that the device behaves this way.
+Without the flag, the driver will assume this behavior
+for ALPS GlidePoint models only.
+.It bit 12 IGNOREPORTERROR
+This flag makes
+.Nm
+driver ignore certain error conditions when probing the PS/2 mouse port.
+It should never be necessary under normal circumstances.
+.It bit 13 HOOKRESUME
+The built-in PS/2 pointing device of some laptop computers is somehow
+not operable immediately after the system `resumes' from
+the power saving mode,
+though it will eventually become available.
+There are reports that
+stimulating the device by performing I/O will help
+waking up the device quickly.
+This flag will enable a piece of code in the
+.Nm
+driver to hook
+the `resume' event and exercise some harmless I/O operations on the
+device.
+.It bit 14 INITAFTERSUSPEND
+This flag adds more drastic action for the above problem.
+It will cause the
+.Nm
+driver to reset and re-initialize the pointing device
+after the `resume' event.
+It has no effect unless the
+.Em HOOKRESUME
+flag is set as well.
+.El
+.Sh LOADER TUNABLES
+Extended support for Synaptics touchpads can be enabled by setting
+.Va hw.psm.synaptics_support
+to
+.Em 1
+at boot-time.
+This will enable
+.Nm
+to handle packets from guest devices (sticks) and extra buttons.
+.Sh IOCTLS
+There are a few
+.Xr ioctl 2
+commands for mouse drivers.
+These commands and related structures and constants are defined in
+.In sys/mouse.h .
+General description of the commands is given in
+.Xr mouse 4 .
+This section explains the features specific to the
+.Nm
+driver.
+.Pp
+.Bl -tag -width MOUSE -compact
+.It Dv MOUSE_GETLEVEL Ar int *level
+.It Dv MOUSE_SETLEVEL Ar int *level
+These commands manipulate the operation level of the
+.Nm
+driver.
+.Pp
+.It Dv MOUSE_GETHWINFO Ar mousehw_t *hw
+Returns the hardware information of the attached device in the following
+structure.
+.Bd -literal
+typedef struct mousehw {
+ int buttons; /* number of buttons */
+ int iftype; /* I/F type */
+ int type; /* mouse/track ball/pad... */
+ int model; /* I/F dependent model ID */
+ int hwid; /* I/F dependent hardware ID */
+} mousehw_t;
+.Ed
+.Pp
+The
+.Dv buttons
+field holds the number of buttons on the device.
+The
+.Nm
+driver currently can detect the 3 button mouse from Logitech and report
+accordingly.
+The 3 button mouse from the other manufacturer may or may not be
+reported correctly.
+However, it will not affect the operation of
+the driver.
+.Pp
+The
+.Dv iftype
+is always
+.Dv MOUSE_IF_PS2 .
+.Pp
+The
+.Dv type
+tells the device type:
+.Dv MOUSE_MOUSE ,
+.Dv MOUSE_TRACKBALL ,
+.Dv MOUSE_STICK ,
+.Dv MOUSE_PAD ,
+or
+.Dv MOUSE_UNKNOWN .
+The user should not heavily rely on this field, as the
+driver may not always, in fact it is very rarely able to, identify
+the device type.
+.Pp
+The
+.Dv model
+is always
+.Dv MOUSE_MODEL_GENERIC
+at the operation level 0.
+It may be
+.Dv MOUSE_MODEL_GENERIC
+or one of
+.Dv MOUSE_MODEL_XXX
+constants at higher operation levels.
+Again the
+.Nm
+driver may or may not set an appropriate value in this field.
+.Pp
+The
+.Dv hwid
+is the ID value returned by the device.
+Known IDs include:
+.Pp
+.Bl -tag -width 0__ -compact
+.It Em 0
+Mouse (Microsoft, Logitech and many other manufacturers)
+.It Em 2
+Microsoft Ballpoint mouse
+.It Em 3
+Microsoft IntelliMouse
+.El
+.Pp
+.It Dv MOUSE_SYN_GETHWINFO Ar synapticshw_t *synhw
+Retrieves extra information associated with Synaptics Touchpads.
+Only available when
+.Va hw.psm.synaptics_support
+has been enabled.
+.Bd -literal
+typedef struct synapticshw {
+ int infoMajor; /* major hardware revision */
+ int infoMinor; /* minor hardware revision */
+ int infoRot180; /* touchpad is rotated */
+ int infoPortrait; /* touchpad is a portrait */
+ int infoSensor; /* sensor model */
+ int infoHardware; /* hardware model */
+ int infoNewAbs; /* supports the newabs format */
+ int capPen; /* can detect a pen */
+ int infoSimpleC; /* supports simple commands */
+ int infoGeometry; /* touchpad dimensions */
+ int capExtended; /* supports extended packets */
+ int capSleep; /* can be suspended/resumed */
+ int capFourButtons; /* has four buttons */
+ int capMultiFinger; /* can detect multiple fingers */
+ int capPalmDetect; /* can detect a palm */
+ int capPassthrough; /* can passthrough guest packets */
+} synapticshw_t;
+.Ed
+.Pp
+See the
+.Em Synaptics TouchPad Interfacing Guide
+for more information about the fields in this structure.
+.Pp
+.It Dv MOUSE_GETMODE Ar mousemode_t *mode
+The command gets the current operation parameters of the mouse
+driver.
+.Bd -literal
+typedef struct mousemode {
+ int protocol; /* MOUSE_PROTO_XXX */
+ int rate; /* report rate (per sec), -1 if unknown */
+ int resolution; /* MOUSE_RES_XXX, -1 if unknown */
+ int accelfactor; /* acceleration factor */
+ int level; /* driver operation level */
+ int packetsize; /* the length of the data packet */
+ unsigned char syncmask[2]; /* sync. bits */
+} mousemode_t;
+.Ed
+.Pp
+The
+.Dv protocol
+is
+.Dv MOUSE_PROTO_PS2
+at the operation level zero and two.
+.Dv MOUSE_PROTO_SYSMOUSE
+at the operation level one.
+.Pp
+The
+.Dv rate
+is the status report rate (reports/sec) at which the device will send
+movement report to the host computer.
+Typical supported values are 10, 20, 40, 60, 80, 100 and 200.
+Some mice may accept other arbitrary values too.
+.Pp
+The
+.Dv resolution
+of the pointing device must be one of
+.Dv MOUSE_RES_XXX
+constants or a positive value.
+The greater the value
+is, the finer resolution the mouse will select.
+Actual resolution selected by the
+.Dv MOUSE_RES_XXX
+constant varies according to the model of mouse.
+Typical resolutions are:
+.Pp
+.Bl -tag -width MOUSE_RES_MEDIUMHIGH__ -compact
+.It Dv MOUSE_RES_LOW
+25 ppi
+.It Dv MOUSE_RES_MEDIUMLOW
+50 ppi
+.It Dv MOUSE_RES_MEDIUMHIGH
+100 ppi
+.It Dv MOUSE_RES_HIGH
+200 ppi
+.El
+.Pp
+The
+.Dv accelfactor
+field holds a value to control acceleration feature
+(see
+.Sx Acceleration ) .
+It must be zero or greater.
+If it is zero, acceleration is disabled.
+.Pp
+The
+.Dv packetsize
+field specifies the length of the data packet.
+It depends on the
+operation level and the model of the pointing device.
+.Pp
+.Bl -tag -width level_0__ -compact
+.It Em level 0
+3 bytes
+.It Em level 1
+8 bytes
+.It Em level 2
+Depends on the model of the device
+.El
+.Pp
+The array
+.Dv syncmask
+holds a bit mask and pattern to detect the first byte of the
+data packet.
+.Dv syncmask[0]
+is the bit mask to be ANDed with a byte.
+If the result is equal to
+.Dv syncmask[1] ,
+the byte is likely to be the first byte of the data packet.
+Note that this detection method is not 100% reliable,
+thus, should be taken only as an advisory measure.
+.Pp
+.It Dv MOUSE_SETMODE Ar mousemode_t *mode
+The command changes the current operation parameters of the mouse driver
+as specified in
+.Ar mode .
+Only
+.Dv rate ,
+.Dv resolution ,
+.Dv level
+and
+.Dv accelfactor
+may be modifiable.
+Setting values in the other field does not generate
+error and has no effect.
+.Pp
+If you do not want to change the current setting of a field, put -1
+there.
+You may also put zero in
+.Dv resolution
+and
+.Dv rate ,
+and the default value for the fields will be selected.
+.\" .Pp
+.\" .It Dv MOUSE_GETVARS Ar mousevar_t *vars
+.\" .It Dv MOUSE_SETVARS Ar mousevar_t *vars
+.\" These commands are not supported by the
+.\" .Nm
+.\" driver.
+.Pp
+.It Dv MOUSE_READDATA Ar mousedata_t *data
+.\" The command reads the raw data from the device.
+.\" .Bd -literal
+.\" typedef struct mousedata {
+.\" int len; /* # of data in the buffer */
+.\" int buf[16]; /* data buffer */
+.\" } mousedata_t;
+.\" .Ed
+.\" .Pp
+.\" Upon returning to the user program, the driver will place the number
+.\" of valid data bytes in the buffer in the
+.\" .Dv len
+.\" field.
+.\" .Pp
+.It Dv MOUSE_READSTATE Ar mousedata_t *state
+.\" The command reads the hardware settings from the device.
+.\" Upon returning to the user program, the driver will place the number
+.\" of valid data bytes in the buffer in the
+.\" .Dv len
+.\" field. It is usually 3 bytes.
+.\" The buffer is formatted as follows:
+.\" .Pp
+.\" .Bl -tag -width Byte_1 -compact
+.\" .It Byte 1
+.\" .Bl -tag -width bit_6 -compact
+.\" .It bit 7
+.\" Reserved.
+.\" .It bit 6
+.\" 0 - stream mode, 1 - remote mode.
+.\" In the stream mode, the pointing device sends the device status
+.\" whenever its state changes. In the remote mode, the host computer
+.\" must request the status to be sent.
+.\" The
+.\" .Nm
+.\" driver puts the device in the stream mode.
+.\" .It bit 5
+.\" Set if the pointing device is currently enabled. Otherwise zero.
+.\" .It bit 4
+.\" 0 - 1:1 scaling, 1 - 2:1 scaling.
+.\" 1:1 scaling is the default.
+.\" .It bit 3
+.\" Reserved.
+.\" .It bit 2
+.\" Left button status; set if pressed.
+.\" .It bit 1
+.\" Middle button status; set if pressed.
+.\" .It bit 0
+.\" Right button status; set if pressed.
+.\" .El
+.\" .It Byte 2
+.\" .Bl -tag -width bit_6_0 -compact
+.\" .It bit 7
+.\" Reserved.
+.\" .It bit 6..0
+.\" Resolution code: zero through three. Actual resolution for
+.\" the resolution code varies from one device to another.
+.\" .El
+.\" .It Byte 3
+.\" The status report rate (reports/sec) at which the device will send
+.\" movement report to the host computer.
+.\" .El
+These commands are not currently supported by the
+.Nm
+driver.
+.Pp
+.It Dv MOUSE_GETSTATUS Ar mousestatus_t *status
+The command returns the current state of buttons and
+movement counts as described in
+.Xr mouse 4 .
+.El
+.Sh FILES
+.Bl -tag -width /dev/npsm0 -compact
+.It Pa /dev/psm0
+`non-blocking' device node
+.It Pa /dev/bpsm0
+`blocking' device node under
+.Em devfs .
+.El
+.Sh EXAMPLES
+In order to install the
+.Nm
+driver, you need to add
+.Pp
+.Dl "device atkbdc"
+.Dl "device psm"
+.Pp
+to your kernel configuration file, and put the following lines to
+.Pa /boot/device.hints .
+.Pp
+.Dl hint.atkbdc.0.at="isa"
+.Dl hint.atkbdc.0.port="0x060"
+.Dl hint.psm.0.at="atkbdc"
+.Dl hint.psm.0.irq="12"
+.Pp
+If you add the following statement to
+.Pa /boot/device.hints ,
+.Pp
+.Dl hint.psm.0.flags="0x2000"
+.Pp
+you will add the optional code to stimulate the pointing device
+after the `resume' event.
+.Pp
+.Dl hint.psm.0.flags="0x24"
+.Pp
+The above line will set the device resolution high (4)
+and the acceleration factor to 2.
+.Sh DIAGNOSTICS
+At debug level 0, little information is logged except for the following
+line during boot process:
+.Bd -literal -offset indent
+psm0: device ID X
+.Ed
+.Pp
+where
+.Fa X
+the device ID code returned by the found pointing device.
+See
+.Dv MOUSE_GETINFO
+for known IDs.
+.Pp
+At debug level 1 more information will be logged
+while the driver probes the auxiliary port (mouse port).
+Messages are logged with the LOG_KERN facility at the LOG_DEBUG level
+(see
+.Xr syslogd 8 ) .
+.Bd -literal -offset indent
+psm0: current command byte:xxxx
+kbdio: TEST_AUX_PORT status:0000
+kbdio: RESET_AUX return code:00fa
+kbdio: RESET_AUX status:00aa
+kbdio: RESET_AUX ID:0000
+[...]
+psm: status 00 02 64
+psm0 irq 12 on isa
+psm0: model AAAA, device ID X, N buttons
+psm0: config:00000www, flags:0000uuuu, packet size:M
+psm0: syncmask:xx, syncbits:yy
+.Ed
+.Pp
+The first line shows the command byte value of the keyboard
+controller just before the auxiliary port is probed.
+It usually is 4D, 45, 47 or 65, depending on how the motherboard BIOS
+initialized the keyboard controller upon power-up.
+.Pp
+The second line shows the result of the keyboard controller's
+test on the auxiliary port interface, with zero indicating
+no error; note that some controllers report no error even if
+the port does not exist in the system, however.
+.Pp
+The third through fifth lines show the reset status of the pointing device.
+The functioning device should return the sequence of FA AA <ID>.
+The ID code is described above.
+.Pp
+The seventh line shows the current hardware settings.
+.\" See
+.\" .Dv MOUSE_READSTATE
+.\" for definitions.
+These bytes are formatted as follows:
+.Pp
+.Bl -tag -width Byte_1 -compact
+.It Byte 1
+.Bl -tag -width bit_6 -compact
+.It bit 7
+Reserved.
+.It bit 6
+0 - stream mode, 1 - remote mode.
+In the stream mode, the pointing device sends the device status
+whenever its state changes.
+In the remote mode, the host computer
+must request the status to be sent.
+The
+.Nm
+driver puts the device in the stream mode.
+.It bit 5
+Set if the pointing device is currently enabled.
+Otherwise zero.
+.It bit 4
+0 - 1:1 scaling, 1 - 2:1 scaling.
+1:1 scaling is the default.
+.It bit 3
+Reserved.
+.It bit 2
+Left button status; set if pressed.
+.It bit 1
+Middle button status; set if pressed.
+.It bit 0
+Right button status; set if pressed.
+.El
+.It Byte 2
+.Bl -tag -width bit_6_0 -compact
+.It bit 7
+Reserved.
+.It bit 6..0
+Resolution code: zero through three.
+Actual resolution for
+the resolution code varies from one device to another.
+.El
+.It Byte 3
+The status report rate (reports/sec) at which the device will send
+movement report to the host computer.
+.El
+.Pp
+Note that the pointing device will not be enabled until the
+.Nm
+driver is opened by the user program.
+.Pp
+The rest of the lines show the device ID code, the number of detected
+buttons and internal variables.
+.Pp
+At debug level 2, much more detailed information is logged.
+.Sh CAVEATS
+Many pad devices behave as if the first (left) button were pressed if
+the user `taps' the surface of the pad.
+In contrast, some pad products, e.g.\& some versions of ALPS GlidePoint
+and Interlink VersaPad, treat the tapping action
+as fourth button events.
+.Pp
+It is reported that Interlink VersaPad requires both
+.Em HOOKRESUME
+and
+.Em INITAFTERSUSPEND
+flags in order to recover from suspended state.
+These flags are automatically set when VersaPad is detected by the
+.Nm
+driver.
+.Pp
+Some PS/2 mouse models from MouseSystems require to be put in the
+high resolution mode to work properly.
+Use the driver flag to
+set resolution.
+.Pp
+There is not a guaranteed way to re-synchronize with the first byte
+of the packet once we are out of synchronization with the data
+stream.
+However, if you are using the \fIXFree86\fP server and experiencing
+the problem, you may be able to make the X server synchronize with the mouse
+by switching away to a virtual terminal and getting back to the X server,
+unless the X server is accessing the mouse via
+.Xr moused 8 .
+Clicking any button without moving the mouse may also work.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr syslog 3 ,
+.Xr atkbdc 4 ,
+.Xr mouse 4 ,
+.Xr mse 4 ,
+.Xr sysmouse 4 ,
+.Xr moused 8 ,
+.Xr syslogd 8
+.Rs
+.%T Synaptics TouchPad Interfacing Guide
+.%O http://www.synaptics.com/
+.Re
+.\".Sh HISTORY
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver is based on the work done by quite a number of people, including
+.An Eric Forsberg ,
+.An Sandi Donno ,
+.An Rick Macklem ,
+.An Andrew Herbert ,
+.An Charles Hannum ,
+.An Shoji Yuen
+and
+.An Kazutaka Yokota
+to name the few.
+.Pp
+This manual page was written by
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
+.Sh BUGS
+The ioctl command
+.Dv MOUSEIOCREAD
+has been removed.
+It was never functional anyway.
+.Pp
+Enabling the extended support for Synaptics touchpads has been reported to
+cause problems with responsivity on some (newer) models of Synaptics
+hardware, particularly those with guest devices.
diff --git a/share/man/man4/pst.4 b/share/man/man4/pst.4
new file mode 100644
index 0000000..f207e2d
--- /dev/null
+++ b/share/man/man4/pst.4
@@ -0,0 +1,76 @@
+.\"
+.\" Copyright (c) 2001,2002 Søren Schmidt
+.\" 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$
+.\"
+.Dd December 14, 2004
+.Dt PST 4
+.Os
+.Sh NAME
+.Nm pst
+.Nd device driver for Promise Supertrak SX6000
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pst"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+pst_load="YES"
+.Ed
+.Sh DESCRIPTION
+This driver is for the Promise Supertrak SX6000 ATA hardware RAID controller.
+It supports (in hardware) RAID levels 0, 1, 0+1, 3, 5 and JBOD on up to
+6 ATA disk drives, including automatic rebuild and hotswap, and supports
+signalling disk status on LEDs on Promise Superswap disk enclosures.
+The Supertrak line of controllers does not support non-disk devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports the Promise Supertrak SX6000 ATA hardware RAID
+controller.
+.Sh NOTES
+The
+.Nm
+driver does not support manipulating the RAID from the OS, RAIDs need
+to be set up from the onboard BIOS.
+However, hot swap, hot spare, and
+automatic rebuilds are supported without a reboot.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.7 .
+.Sh AUTHORS
+The
+.Nm
+driver and man page was written by
+.An S\(/oren Schmidt
+.Aq sos@FreeBSD.org .
diff --git a/share/man/man4/pt.4 b/share/man/man4/pt.4
new file mode 100644
index 0000000..170956e
--- /dev/null
+++ b/share/man/man4/pt.4
@@ -0,0 +1,92 @@
+.\" Copyright (c) 1995
+.\" Peter Dufault, 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$
+.\"
+.Dd March 2, 1995
+.Dt PT 4
+.Os
+.Sh NAME
+.Nm pt
+.Nd SCSI processor type driver
+.Sh SYNOPSIS
+.Cd device pt
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for a
+.Tn SCSI
+processor type device.
+These are usually scanners and other devices using the
+.Tn SCSI
+link as a communication interface with device
+specific commands embedded in the data stream.
+.Pp
+A
+.Tn SCSI
+adapter must be separately configured into the system
+before this driver can be used.
+.Pp
+This device supports
+.Xr read 2
+and
+.Xr write 2 ,
+and the
+.Xr ioctl 2
+calls described below.
+.Sh IOCTLS
+.Bl -tag -width 012345678901234
+The following
+.Xr ioctl 2
+calls are supported by the
+.Nm
+driver.
+They are defined in the header file
+.In sys/ptio.h .
+.Pp
+.It PTIOCGETTIMEOUT
+This ioctl allows userland applications to fetch the current
+.Nm
+driver read and write timeout.
+The value returned is in seconds.
+.It PTIOCSETTIMEOUT
+This ioctl allows userland applications to set the current
+.Nm
+driver read and write timeouts.
+The value should be in seconds.
+.El
+.Sh FILES
+.Bl -tag -width /dev/ptQQQ -compact
+.It Pa /dev/pt Ns Ar N
+the
+.Ar N Ns th processor device.
+.El
+.Sh SEE ALSO
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 2.1 .
diff --git a/share/man/man4/pts.4 b/share/man/man4/pts.4
new file mode 100644
index 0000000..9ae2d73
--- /dev/null
+++ b/share/man/man4/pts.4
@@ -0,0 +1,175 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)pty.4 8.2 (Berkeley) 11/30/93
+.\" $FreeBSD$
+.\"
+.Dd August 20, 2008
+.Dt PTS 4
+.Os
+.Sh NAME
+.Nm pts
+.Nd pseudo-terminal driver
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for a device-pair termed a
+.Em pseudo-terminal .
+A pseudo-terminal is a pair of character devices, a
+.Em master
+device and a
+.Em slave
+device.
+The slave device provides to a process an interface identical
+to that described in
+.Xr tty 4 .
+However, whereas all other devices which provide the
+interface described in
+.Xr tty 4
+have a hardware device of some sort behind them, the slave
+device has, instead, another process manipulating
+it through the master half of the pseudo-terminal.
+That is, anything written on the master device is
+given to the slave device as input and anything written
+on the slave device is presented as input on the master
+device.
+.Pp
+The following
+.Xr ioctl 2
+calls apply only to pseudo-terminals:
+.Bl -tag -width TIOCPTMASTER
+.It Dv TIOCPKT
+Enable/disable
+.Em packet
+mode.
+Packet mode is enabled by specifying (by reference)
+a nonzero parameter and disabled by specifying (by reference)
+a zero parameter.
+When applied to the master side of a pseudo-terminal, each subsequent
+.Xr read 2
+from the terminal will return data written on the slave part of
+the pseudo-terminal preceded by a zero byte (symbolically
+defined as
+.Dv TIOCPKT_DATA ) ,
+or a single byte reflecting control
+status information.
+In the latter case, the byte is an inclusive-or
+of zero or more of the bits:
+.Bl -tag -width TIOCPKT_FLUSHWRITE
+.It Dv TIOCPKT_FLUSHREAD
+whenever the read queue for the terminal is flushed.
+.It Dv TIOCPKT_FLUSHWRITE
+whenever the write queue for the terminal is flushed.
+.It Dv TIOCPKT_STOP
+whenever output to the terminal is stopped a la
+.Ql ^S .
+.It Dv TIOCPKT_START
+whenever output to the terminal is restarted.
+.It Dv TIOCPKT_DOSTOP
+whenever
+.Dv VSTOP
+is
+.Ql ^S
+and
+.Dv VSTART
+is
+.Ql ^Q .
+.It Dv TIOCPKT_NOSTOP
+whenever the start and stop characters are not
+.Ql ^S/^Q .
+.El
+.Pp
+While this mode is in use, the presence of control status information
+to be read from the master side may be detected by a
+.Xr select 2
+for exceptional conditions.
+.Pp
+This mode is used by
+.Xr rlogin 1
+and
+.Xr rlogind 8
+to implement a remote-echoed, locally
+.Ql ^S/^Q
+flow-controlled
+remote login with proper back-flushing of output; it can be
+used by other similar programs.
+.It Dv TIOCGPTN
+Obtain device unit number, which can be used to generate the filename of
+the pseudo-terminal slave device. This
+.Xr ioctl 2
+should not be used directly. Instead, the
+.Xr ptsname 3
+function should be used.
+.It Dv TIOCPTMASTER
+Determine whether the file descriptor is pointing to a pseudo-terminal
+master device.
+This
+.Xr ioctl 2
+should not be used directly. It is used to implement routines like
+.Xr grantpt 3 .
+.El
+.Pp
+The maximum number of pseudo-terminals is limited to 1000.
+It is not possible to use more than 1000 pseudo-terminals, as all software
+which use
+.Xr utmp 5
+will not be able to handle pseudo-terminals with number superior to 999.
+.Sh FILES
+The files used by this
+pseudo-terminals implementation are:
+.Pp
+.Bl -tag -width ".Pa /dev/pts/[num]"
+.It Pa /dev/ptmx
+Control device, returns a file descriptor to a new master pseudo-terminal
+when opened. This device should not be opened directly. It's only
+available for binary compatibility. New devices should only be created
+though
+.Xr posix_openpt 2 .
+.It Pa /dev/pts/[num]
+Pseudo-terminal slave devices.
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr grantpt 3 ,
+.Xr posix_openpt 2 ,
+.Xr ptsname 3 ,
+.Xr pty 4 ,
+.Xr tty 4
+.Sh HISTORY
+A
+pseudo-terminal driver appeared in
+.Bx 4.2 .
+In
+.Fx 8.0 ,
+it was replaced with the
+.Nm
+driver.
diff --git a/share/man/man4/pty.4 b/share/man/man4/pty.4
new file mode 100644
index 0000000..515f912
--- /dev/null
+++ b/share/man/man4/pty.4
@@ -0,0 +1,89 @@
+.\" Copyright (c) 2008 Ed Schouten <ed@FreeBSD.org>
+.\" All rights reserved.
+.\"
+.\" Portions of this software were developed under sponsorship from Snow
+.\" B.V., the Netherlands.
+.\"
+.\" 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$
+.\"
+.Dd August 20, 2008
+.Dt PTY 4
+.Os
+.Sh NAME
+.Nm pty
+.Nd BSD-style compatibility pseudo-terminal driver
+.Sh SYNOPSIS
+.Cd "device pty"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the traditional BSD naming scheme that was
+used for accessing pseudo-terminals.
+When the device
+.Pa /dev/ptyXX
+is being opened, a new terminal shall be created with the
+.Xr pts 4
+driver.
+A device node for this terminal shall be created, which has the name
+.Pa /dev/ttyXX .
+.Pp
+New code should not try to allocate pseudo-terminals using this
+interface.
+It is only provided for compatibility with older C libraries
+that tried to open such devices when
+.Xr posix_openpt 2
+was being called.
+.Sh FILES
+The BSD-style compatibility pseudo-terminal driver uses the following
+device names:
+.Pp
+.Bl -tag -width ".Pa /dev/pty[l-sL-S][0-9a-v]"
+.It Pa /dev/pty[l-sL-S][0-9a-v]
+Pseudo-terminal master devices.
+.It Pa /dev/tty[l-sL-S][0-9a-v]
+Pseudo-terminal slave devices.
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr posix_openpt 2 ,
+.Xr pts 4 ,
+.Xr tty 4
+.Sh HISTORY
+A
+pseudo-terminal driver appeared in
+.Bx 4.2 .
+.Sh BUGS
+Unlike previous implementations, the master slave device nodes are
+destroyed when the PTY becomes unused.
+A call to
+.Xr stat 2
+on a nonexistent master device will already cause a new master device
+node to be created.
+The master device can only be destroyed by opening and closing it.
+.Pp
+The
+.Nm
+driver cannot be unloaded, because it cannot determine if it is being
+used.
diff --git a/share/man/man4/puc.4 b/share/man/man4/puc.4
new file mode 100644
index 0000000..36e8bb4
--- /dev/null
+++ b/share/man/man4/puc.4
@@ -0,0 +1,62 @@
+.\" Copyright (c) 2002 John Hay.
+.\" 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$
+.\"
+.Dd January 24, 2008
+.Dt PUC 4
+.Os
+.Sh NAME
+.Nm puc
+.Nd PCI
+.Dq Universal
+Communications driver
+.Sh SYNOPSIS
+.Cd "device pci"
+.Cd "device puc"
+.Cd "device sio"
+.Cd "device ppc"
+.Sh DESCRIPTION
+This driver acts as a shim to connect PCI serial and parallel ports to the
+.Xr sio 4
+and
+.Xr ppc 4
+driver.
+.Pp
+The list of supported devices is in
+.Pa sys/dev/puc/pucdata.c .
+Support for new cards should be added there.
+.Sh SEE ALSO
+.Xr ppc 4 ,
+.Xr sio 4
+.Sh HISTORY
+This driver took the idea from the
+.Nx
+.Xr puc 4
+driver and still uses the same structure to describe cards, to ease exchanging
+card info.
+.Sh BUGS
+Only serial ports are supported through the
+.Xr sio 4
+driver at the moment.
diff --git a/share/man/man4/ral.4 b/share/man/man4/ral.4
new file mode 100644
index 0000000..be64123
--- /dev/null
+++ b/share/man/man4/ral.4
@@ -0,0 +1,253 @@
+.\" Copyright (c) 2005, 2006
+.\" Damien Bergamini <damien.bergamini@free.fr>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 13, 2008
+.Os
+.Dt RAL 4
+.Sh NAME
+.Nm ral
+.Nd "Ralink Technology IEEE 802.11 wireless network driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ral"
+.Cd "device ralfw"
+.Cd "device wlan"
+.Cd "device wlan_amrr"
+.Cd "device firmware"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ral_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports PCI/CardBus wireless adapters based on the Ralink Technology
+RT2500, RT2501, and RT2600 chipsets.
+.Pp
+The RT2500 chipset is the first generation of 802.11b/g adapters from Ralink.
+It consists of two integrated chips, a RT2560 MAC/BBP and a RT2525 radio
+transceiver.
+.Pp
+The RT2501 chipset is the second generation of 802.11b/g adapters from Ralink.
+It consists of two integrated chips, a RT2561 MAC/BBP and a RT2527 radio
+transceiver.
+This chipset provides support for the IEEE 802.11e standard with multiple
+hardware transmission queues and allows scatter/gather for efficient DMA
+operations.
+.Pp
+The RT2600 chipset consists of two integrated chips, a RT2661 MAC/BBP and a
+RT2529 radio transceiver.
+This chipset uses the MIMO (multiple-input multiple-output) technology with
+multiple antennas to extend the operating range of the adapter and to achieve
+higher throughput.
+MIMO is the basis of the forthcoming IEEE 802.11n standard.
+.Pp
+The transmit speed is user-selectable or can be adapted automatically by the
+driver depending on the received signal strength and on the number of hardware
+transmission retries.
+.Pp
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+.Cm hostap ,
+.Cm wds ,
+and
+.Cm monitor
+mode operation.
+Only one
+.Cm hostap
+virtual interface may be configured at a time.
+Any number of
+.Cm wds
+virtual interfaces may be configured together with a
+.Cm hostap
+interface.
+Multiple
+.Cm station
+interfaces may be operated together with a
+.Cm hostap
+interface to construct a wireless repeater device.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports PCI/CardBus wireless adapters based on the Ralink Technology
+RT2500, RT2501, and RT2600 chipsets, including:
+.Pp
+.Bl -column -compact ".Li Atlantis Land A02-PCM-W54" "RT2561S" "CardBus"
+.It Em Card Ta Em MAC/BBP Ta Em Bus
+.It "A-Link WL54H" Ta RT2560 Ta PCI
+.It "A-Link WL54PC" Ta RT2560 Ta CardBus
+.It "AirLink101 AWLC5025" Ta RT2661 Ta CardBus
+.It "AirLink101 AWLH5025" Ta RT2661 Ta PCI
+.It "Amigo AWI-914W" Ta RT2560 Ta CardBus
+.It "Amigo AWI-922W" Ta RT2560 Ta mini-PCI
+.It "Amigo AWI-926W" Ta RT2560 Ta PCI
+.It "AMIT WL531C" Ta RT2560 Ta CardBus
+.It "AMIT WL531P" Ta RT2560 Ta PCI
+.It "AOpen AOI-831" Ta RT2560 Ta PCI
+.It "ASUS WL-107G" Ta RT2560 Ta CardBus
+.It "ASUS WL-130g" Ta RT2560 Ta PCI
+.It "Atlantis Land A02-PCI-W54" Ta RT2560 Ta PCI
+.It "Atlantis Land A02-PCM-W54" Ta RT2560 Ta CardBus
+.It "Belkin F5D7000 v3" Ta RT2560 Ta PCI
+.It "Belkin F5D7010 v2" Ta RT2560 Ta CardBus
+.It "Billionton MIWLGRL" Ta RT2560 Ta mini-PCI
+.It "Canyon CN-WF511" Ta RT2560 Ta PCI
+.It "Canyon CN-WF513" Ta RT2560 Ta CardBus
+.It "CC&C WL-2102" Ta RT2560 Ta CardBus
+.It "CNet CWC-854" Ta RT2560 Ta CardBus
+.It "CNet CWP-854" Ta RT2560 Ta PCI
+.It "Compex WL54G" Ta RT2560 Ta CardBus
+.It "Compex WLP54G" Ta RT2560 Ta PCI
+.It "Conceptronic C54RC" Ta RT2560 Ta CardBus
+.It "Conceptronic C54Ri" Ta RT2560 Ta PCI
+.It "Digitus DN-7001G-RA" Ta RT2560 Ta CardBus
+.It "Digitus DN-7006G-RA" Ta RT2560 Ta PCI
+.It "E-Tech WGPC02" Ta RT2560 Ta CardBus
+.It "E-Tech WGPI02" Ta RT2560 Ta PCI
+.It "Edimax EW-7108PCg" Ta RT2560 Ta CardBus
+.It "Edimax EW-7128g" Ta RT2560 Ta PCI
+.It "Eminent EM3036" Ta RT2560 Ta CardBus
+.It "Eminent EM3037" Ta RT2560 Ta PCI
+.It "Encore ENLWI-G-RLAM" Ta RT2560 Ta PCI
+.It "Encore ENPWI-G-RLAM" Ta RT2560 Ta CardBus
+.It "Fiberline WL-400P" Ta RT2560 Ta PCI
+.It "Fibreline WL-400X" Ta RT2560 Ta CardBus
+.It "Gigabyte GN-WI01GS" Ta RT2561S Ta mini-PCI
+.It "Gigabyte GN-WIKG" Ta RT2560 Ta mini-PCI
+.It "Gigabyte GN-WMKG" Ta RT2560 Ta CardBus
+.It "Gigabyte GN-WP01GS" Ta RT2561S Ta PCI
+.It "Gigabyte GN-WPKG" Ta RT2560 Ta PCI
+.It "Hawking HWC54GR" Ta RT2560 Ta CardBus
+.It "Hawking HWP54GR" Ta RT2560 Ta PCI
+.It "iNexQ CR054g-009 (R03)" Ta RT2560 Ta PCI
+.It "JAHT WN-4054P" Ta RT2560 Ta CardBus
+.It "JAHT WN-4054PCI" Ta RT2560 Ta PCI
+.It "LevelOne WNC-0301 v2" Ta RT2560 Ta PCI
+.It "LevelOne WPC-0301 v2" Ta RT2560 Ta CardBus
+.It "Linksys WMP54G v4" Ta RT2560 Ta PCI
+.It "Micronet SP906GK" Ta RT2560 Ta PCI
+.It "Micronet SP908GK V3" Ta RT2560 Ta CardBus
+.It "Minitar MN54GCB-R" Ta RT2560 Ta CardBus
+.It "Minitar MN54GPC-R" Ta RT2560 Ta PCI
+.It "MSI CB54G2" Ta RT2560 Ta CardBus
+.It "MSI MP54G2" Ta RT2560 Ta mini-PCI
+.It "MSI PC54G2" Ta RT2560 Ta PCI
+.It "OvisLink EVO-W54PCI" Ta RT2560 Ta PCI
+.It "PheeNet HWL-PCIG/RA" Ta RT2560 Ta PCI
+.It "Pro-Nets CB80211G" Ta RT2560 Ta CardBus
+.It "Pro-Nets PC80211G" Ta RT2560 Ta PCI
+.It "Repotec RP-WB7108" Ta RT2560 Ta CardBus
+.It "Repotec RP-WP0854" Ta RT2560 Ta PCI
+.It "SATech SN-54C" Ta RT2560 Ta CardBus
+.It "SATech SN-54P" Ta RT2560 Ta PCI
+.It "Sitecom WL-112" Ta RT2560 Ta CardBus
+.It "Sitecom WL-115" Ta RT2560 Ta PCI
+.It "SMC SMCWCB-GM" Ta RT2661 Ta CardBus
+.It "SMC SMCWPCI-GM" Ta RT2661 Ta PCI
+.It "SparkLAN WL-685R" Ta RT2560 Ta CardBus
+.It "Surecom EP-9321-g" Ta RT2560 Ta PCI
+.It "Surecom EP-9321-g1" Ta RT2560 Ta PCI
+.It "Surecom EP-9428-g" Ta RT2560 Ta CardBus
+.It "Sweex LC500050" Ta RT2560 Ta CardBus
+.It "Sweex LC700030" Ta RT2560 Ta PCI
+.It "TekComm NE-9321-g" Ta RT2560 Ta PCI
+.It "TekComm NE-9428-g" Ta RT2560 Ta CardBus
+.It "Unex CR054g-R02" Ta RT2560 Ta PCI
+.It "Unex MR054g-R02" Ta RT2560 Ta CardBus
+.It "Zinwell ZWX-G160" Ta RT2560 Ta CardBus
+.It "Zinwell ZWX-G360" Ta RT2560 Ta mini-PCI
+.It "Zinwell ZWX-G361" Ta RT2560 Ta PCI
+.It "Zonet ZEW1500" Ta RT2560 Ta CardBus
+.It "Zonet ZEW1600" Ta RT2560 Ta PCI
+.El
+.Pp
+An up to date list can be found at
+.Pa http://damien.bergamini.free.fr/ral/list.html .
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Dl "ifconfig wlan create wlandev ral0 inet 192.168.0.20 netmask 0xffffff00"
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ral0 inet 192.168.0.20 \e
+ netmask 0xffffff00 ssid my_net
+.Ed
+.Pp
+Join a specific BSS network with 40-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ral0 inet 192.168.0.20 \e
+ netmask 0xffffff00 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1
+.Ed
+.Pp
+Join a specific BSS network with 104-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ral0 inet 192.168.0.20 \e
+ netmask 0xffffff00 ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ral%d: could not load 8051 microcode"
+An error occurred while attempting to upload the microcode to the onboard 8051
+microcontroller unit.
+.It "ral%d: timeout waiting for MCU to initialize"
+The onboard 8051 microcontroller unit failed to initialize in time.
+.It "ral%d: device timeout"
+A frame dispatched to the hardware for transmission did not complete in time.
+The driver will reset the hardware.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr intro 4 ,
+.Xr cardbus 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr wlan_xauth 4 ,
+.Xr hostapd 8 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8 .
+.Rs
+.%T "Ralink Technology"
+.%O http://www.ralinktech.com/
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 3.7 .
+.Sh AUTHORS
+The original
+.Nm
+driver was written by
+.An Damien Bergamini Aq damien@FreeBSD.org .
diff --git a/share/man/man4/random.4 b/share/man/man4/random.4
new file mode 100644
index 0000000..cccd89c
--- /dev/null
+++ b/share/man/man4/random.4
@@ -0,0 +1,327 @@
+.\" Copyright (c) 2001 Mark R V Murray. 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$
+.\"
+.Dd July 19, 2006
+.Dt RANDOM 4
+.Os
+.Sh NAME
+.Nm random
+.Nd the entropy device
+.Sh SYNOPSIS
+.Cd "device random"
+.Sh DESCRIPTION
+The
+.Nm
+device
+returns an endless supply of random bytes when read.
+It also accepts and reads data
+as any ordinary (and willing) file,
+but discards data written to it.
+The device will probe for
+certain hardware entropy sources,
+and use these in preference to the fallback,
+which is a generator implemented in software.
+.Pp
+If the device is using
+the software generator,
+writing data to
+.Nm
+would perturb the internal state.
+This perturbation of the internal state
+is the only userland method of introducing
+extra entropy into the device.
+If the writer has superuser privilege,
+then closing the device after writing
+will make the software generator reseed itself.
+This can be used for extra security,
+as it immediately introduces any/all new entropy
+into the PRNG.
+The hardware generators will generate
+sufficient quantities of entropy,
+and will therefore ignore user-supplied input.
+The software
+.Nm
+device may be controlled with
+.Xr sysctl 8 .
+.Pp
+To see the current settings of the software
+.Nm
+device, use the command line:
+.Pp
+.Dl sysctl kern.random
+.Pp
+which results in something like:
+.Pp
+.Bd -literal -offset indent
+kern.random.sys.seeded: 1
+kern.random.sys.harvest.ethernet: 1
+kern.random.sys.harvest.point_to_point: 1
+kern.random.sys.harvest.interrupt: 1
+kern.random.sys.harvest.swi: 0
+kern.random.yarrow.gengateinterval: 10
+kern.random.yarrow.bins: 10
+kern.random.yarrow.fastthresh: 192
+kern.random.yarrow.slowthresh: 256
+kern.random.yarrow.slowoverthresh: 2
+.Ed
+.Pp
+(These would not be seen if a
+hardware generator is present.)
+.Pp
+All settings are read/write.
+.Pp
+The
+.Va kern.random.sys.seeded
+variable indicates whether or not the
+.Nm
+device is in an acceptably secure state
+as a result of reseeding.
+If set to 0, the device will block (on read) until the next reseed
+(which can be from an explicit write,
+or as a result of entropy harvesting).
+A reseed will set the value to 1 (non-blocking).
+.Pp
+The
+.Va kern.random.sys.harvest.ethernet
+variable is used to select LAN traffic as an entropy source.
+A 0 (zero) value means that LAN traffic
+is not considered as an entropy source.
+Set the variable to 1 (one)
+if you wish to use LAN traffic for entropy harvesting.
+.Pp
+The
+.Va kern.random.sys.harvest.point_to_point
+variable is used to select serial line traffic as an entropy source.
+(Serial line traffic includes PPP, SLIP and all tun0 traffic.)
+A 0 (zero) value means such traffic
+is not considered as an entropy source.
+Set the variable to 1 (one)
+if you wish to use it for entropy harvesting.
+.Pp
+The
+.Va kern.random.sys.harvest.interrupt
+variable is used to select hardware interrupts
+as an entropy source.
+A 0 (zero) value means hardware interrupts
+are not considered as an entropy source.
+Set the variable to 1 (one)
+if you wish to use them for entropy harvesting.
+All hardware interrupt harvesting is set up by the
+individual device drivers.
+.Pp
+The
+.Va kern.random.sys.harvest.swi
+variable is used to select software interrupts
+as an entropy source.
+A 0 (zero) value means software interrupts
+are not considered as an entropy source.
+Set the variable to 1 (one)
+if you wish to use them for entropy harvesting.
+.Pp
+The other variables are explained in the paper describing the
+.Em Yarrow
+algorithm at
+.Pa http://www.counterpane.com/yarrow.html .
+.Pp
+These variables are all limited
+in terms of the values they may contain:
+.Bl -tag -width "kern.random.yarrow.gengateinterval" -compact -offset indent
+.It Va kern.random.yarrow.gengateinterval
+.Bq 4..64
+.It Va kern.random.yarrow.bins
+.Bq 2..16
+.It Va kern.random.yarrow.fastthresh
+.Bq 64..256
+.It Va kern.random.yarrow.slowthresh
+.Bq 64..256
+.It Va kern.random.yarrow.slowoverthresh
+.Bq 1..5
+.El
+.Pp
+Internal
+.Xr sysctl 3
+handlers force the above variables
+into the stated ranges.
+.Sh RANDOMNESS
+The use of randomness in the field of computing
+is a rather subtle issue because randomness means
+different things to different people.
+Consider generating a password randomly,
+simulating a coin tossing experiment or
+choosing a random back-off period when a server does not respond.
+Each of these tasks requires random numbers,
+but the random numbers in each case have different requirements.
+.Pp
+Generation of passwords, session keys and the like
+requires cryptographic randomness.
+A cryptographic random number generator should be designed
+so that its output is difficult to guess,
+even if a lot of auxiliary information is known
+(such as when it was seeded, subsequent or previous output, and so on).
+On
+.Fx ,
+seeding for cryptographic random number generators is provided by the
+.Nm
+device,
+which provides real randomness.
+The
+.Xr arc4random 3
+library call provides a pseudo-random sequence
+which is generally reckoned to be suitable for
+simple cryptographic use.
+The OpenSSL library also provides functions for managing randomness
+via functions such as
+.Xr RAND_bytes 3
+and
+.Xr RAND_add 3 .
+Note that OpenSSL uses the
+.Nm
+device for seeding automatically.
+.Pp
+Randomness for simulation is required in engineering or
+scientific software and games.
+The first requirement of these applications is
+that the random numbers produced conform to some well-known,
+usually uniform, distribution.
+The sequence of numbers should also appear numerically uncorrelated,
+as simulation often assumes independence of its random inputs.
+Often it is desirable to reproduce
+the results of a simulation exactly,
+so that if the generator is seeded in the same way,
+it should produce the same results.
+A peripheral concern for simulation is
+the speed of a random number generator.
+.Pp
+Another issue in simulation is
+the size of the state associated with the random number generator, and
+how frequently it repeats itself.
+For example,
+a program which shuffles a pack of cards should have 52!\& possible outputs,
+which requires the random number generator to have 52!\& starting states.
+This means the seed should have at least log_2(52!) ~ 226 bits of state
+if the program is to stand a chance of outputting all possible sequences,
+and the program needs some unbiased way of generating these bits.
+Again,
+the
+.Nm
+device could be used for seeding here,
+but in practice, smaller seeds are usually considered acceptable.
+.Pp
+.Fx
+provides two families of functions which are considered
+suitable for simulation.
+The
+.Xr random 3
+family of functions provides a random integer
+between 0 to
+.if t 2\u\s731\s10\d\(mi1.
+.if n (2**31)\(mi1.
+The functions
+.Xr srandom 3 ,
+.Xr initstate 3
+and
+.Xr setstate 3
+are provided for deterministically setting
+the state of the generator and
+the function
+.Xr srandomdev 3
+is provided for setting the state via the
+.Nm
+device.
+The
+.Xr drand48 3
+family of functions are also provided,
+which provide random floating point numbers in various ranges.
+.Pp
+Randomness that is used for collision avoidance
+(for example, in certain network protocols)
+has slightly different semantics again.
+It is usually expected that the numbers will be uniform,
+as this produces the lowest chances of collision.
+Here again,
+the seeding of the generator is very important,
+as it is required that different instances of
+the generator produce independent sequences.
+However, the guessability or reproducibility of the sequence is unimportant,
+unlike the previous cases.
+.Pp
+One final consideration for the seeding of random number generators
+is a bootstrapping problem.
+In some cases, it may be difficult to find enough randomness to
+seed a random number generator until a system is fully operational,
+but the system requires random numbers to become fully operational.
+There is no substitute for careful thought here,
+but the
+.Fx
+.Nm
+device,
+which is based on the Yarrow system,
+should be of some help in this area.
+.Pp
+.Fx
+does also provide the traditional
+.Xr rand 3
+library call,
+for compatibility purposes.
+However,
+it is known to be poor for simulation and
+absolutely unsuitable for cryptographic purposes,
+so its use is discouraged.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/random"
+.It Pa /dev/random
+.El
+.Sh SEE ALSO
+.Xr arc4random 3 ,
+.Xr drand48 3 ,
+.Xr rand 3 ,
+.Xr RAND_add 3 ,
+.Xr RAND_bytes 3 ,
+.Xr random 3 ,
+.Xr sysctl 8
+.Sh HISTORY
+A
+.Nm
+device appeared in
+.Fx 2.2 .
+The early version was taken from Theodore Ts'o's entropy driver for Linux.
+The current software implementation,
+introduced in
+.Fx 5.0 ,
+is a complete rewrite by
+.An Mark R V Murray ,
+and is an implementation of the
+.Em Yarrow
+algorithm by Bruce Schneier,
+.Em et al .
+The only hardware implementation
+currently is for the
+.Tn VIA C3 Nehemiah
+(stepping 3 or greater)
+CPU.
+More will be added in the future.
+.Pp
+The author gratefully acknowledges
+significant assistance from VIA Technologies, Inc.
diff --git a/share/man/man4/rc.4 b/share/man/man4/rc.4
new file mode 100644
index 0000000..60c4fa5
--- /dev/null
+++ b/share/man/man4/rc.4
@@ -0,0 +1,125 @@
+.\"
+.\" Copyright (c) 2004 Tom Rhodes
+.\" 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$
+.\"
+.Dd March 18, 2005
+.Dt RC 4
+.Os
+.Sh NAME
+.Nm rc
+.Nd RISCom/8 multiport card
+.Sh SYNOPSIS
+.Cd device isa
+.Cd device rc
+.Sh DESCRIPTION
+The
+.Tn RISCom/8
+is an eight port
+.Tn ISA
+.Tn RS-232C
+communications multiplexer with a built in
+.Tn RISC
+processor.
+It uses a block of sixteen
+.Tn I/O
+ports in the range 0x200 to 0x3f0 selectable by on-board
+switches or jumpers.
+The block must be aligned on a sixteen port boundary.
+The jumper-selectable hardware interrupt level may be set to
+be detected during system
+initialization using settings found in the
+.Pa /boot/device.hints
+file.
+.Pp
+This driver is mostly based on the Cirrus Logic CL-CD180 driver.
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the
+.Tn SDL
+Communications
+.Tn RISCom/8
+boards.
+.Sh DIAGNOSTICS
+The following driver specific error messages
+may be reported:
+.Bl -diag
+.It "rc%d channel%d: interrupt-level buffer overflow"
+An internal buffer overflow error has occurred on
+the listed channel.
+The
+.Nm
+driver will need to be reloaded to correct this.
+.It "rc%d: Bad char chan %d"
+The channel has obtained a bad set of characters.
+.It "rc%d: Got extra chars chan %d"
+The
+.Nm
+driver got more characters than expected on the channel shown.
+.It "rc%d: data mismatch chan %d ptr %d (%d != %d)"
+Data sent from channel
+.Ar %d
+to the rx buffer was different then expected.
+.It "rc%d: channel %d command timeout, rc.c line: %d"
+A command timeout has occurred on the channel, the
+.Pa src/sys/dev/rc/rc.c
+file can be consulted for more information.
+.El
+.Sh SEE ALSO
+.Xr tty 1 ,
+.Xr ttyname 3 ,
+.Xr sio 4 ,
+.Xr tty 4 ,
+.Xr device.hints 5 ,
+.Xr comcontrol 8 ,
+.Xr getty 8 ,
+.Xr mutex 9 ,
+.Xr splx 9
+.Pp
+.Pa http://www.sdlcomm.com
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 2.0.5 .
+This manual page first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+driver code still uses the
+.Xr spl 9
+functions.
+These should be replaced by
+.Xr mutex 9
+functions.
+.Pp
+The various
+.Fn ttyld_*
+functions should be documented.
diff --git a/share/man/man4/re.4 b/share/man/man4/re.4
new file mode 100644
index 0000000..a4a7255
--- /dev/null
+++ b/share/man/man4/re.4
@@ -0,0 +1,245 @@
+.\" Copyright (c) 2003
+.\" Bill Paul <wpaul@windriver.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd January 14, 2006
+.Dt RE 4
+.Os
+.Sh NAME
+.Nm re
+.Nd "RealTek 8139C+/8169/816xS/811xS/8101E PCI/PCIe Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device re"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_re_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various NICs based on the RealTek RTL8139C+,
+RTL8169, RTL8169S, RTL8110S, RTL8168S, RTL8111S and RTL8101E PCI and
+PCIe Ethernet controllers.
+.Pp
+NICs based on the 8139C+ and 8101E are capable of 10 and 100Mbps speeds
+over CAT5 cable.
+NICs based on the 8169, 816xS and 811xS are capable of 10, 100 and
+1000Mbps operation.
+.Pp
+All NICs supported by the
+.Nm
+driver have TCP/IP checksum offload and hardware VLAN tagging/insertion
+features, and use a descriptor-based DMA mechanism.
+They are also
+capable of TCP large send (TCP segmentation offload).
+.Pp
+The 8139C+ is a single-chip solution combining both a 10/100 MAC and PHY.
+The 8169 is a 10/100/1000 MAC only, requiring a GMII or TBI external PHY.
+The 8169S and 8110S are single-chip devices containing both a 10/100/1000
+MAC and 10/100/1000 copper PHY.
+Standalone 10/100/1000 cards are available
+in both 32-bit PCI and 64-bit PCI models.
+The 8110S is designed for
+embedded LAN-on-motherboard applications.
+.Pp
+The 8169, 8169S and 8110S also support jumbo frames, which can be configured
+via the interface MTU setting.
+The MTU is limited to 7422, since the chip cannot transmit larger frames.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit jumbo frames.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+The RealTek gigE chips support 1000Mbps in
+.Cm full-duplex
+mode only.
+.\" .It Cm 1000baseSX
+.\" Set 1000Mbps (Gigabit Ethernet) operation.
+.\" Both
+.\" .Cm full-duplex
+.\" and
+.\" .Cm half-duplex
+.\" modes are supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports RealTek RTL8139C+, RTL8169, RTL816xS, RTL811xS,
+and RTL8101E based Fast Ethernet and Gigabit Ethernet adapters including:
+.Pp
+.Bl -bullet -compact
+.It
+Alloy Computer Products EtherGOLD 1439E 10/100 (8139C+)
+.It
+Compaq Evo N1015v Integrated Ethernet (8139C+)
+.It
+Corega CG-LAPCIGT Gigabit Ethernet (8169S)
+.It
+D-Link DGE-528(T) Gigabit Ethernet (8169S)
+.It
+Gigabyte 7N400 Pro2 Integrated Gigabit Ethernet (8110S)
+.It
+LevelOne GNC-0105T (8169S)
+.It
+LinkSys EG1032 (32-bit PCI)
+.It
+PLANEX COMMUNICATIONS Inc.\& GN-1200TC (8169S)
+.It
+USRobotics USR997902 Gigabit Ethernet (8169S)
+.It
+Xterasys XN-152 10/100/1000 NIC (8169)
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "re%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "re%d: couldn't map ports"
+A fatal initialization error has occurred.
+.It "re%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "re%d: no memory for softc struct!"
+The driver failed to allocate memory for per-device instance information
+during initialization.
+.It "re%d: failed to enable memory mapping!"
+The driver failed to initialize PCI shared memory mapping.
+This might
+happen if the card is not in a bus-master slot.
+.It "re%d: no memory for jumbo buffers!"
+The driver failed to allocate memory for jumbo frames during
+initialization.
+.It "re%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Rs
+.%T RealTek Semiconductor RTL8139C+, RTL8169, RTL8169S and RTL8110S datasheets
+.%O http://www.realtek.com.tw/
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.2 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@windriver.com .
+.Sh BUGS
+The Xterasys XN-152 32-bit PCI NIC, which uses the RTL8169 MAC and
+Marvell 88E1000 PHY, has a defect that causes DMA corruption
+if the board is plugged into a 64-bit PCI slot.
+The defect
+lies in the board design, not the chip itself: the PCI REQ64# and ACK64#
+lines should be pulled high, but they are not.
+The result is that the
+8169 chip is tricked into performing 64-bit DMA transfers even though
+a 64-bit data path between the NIC and the bus does not actually exist.
+.Pp
+Unfortunately, it is not possible to correct this problem in software,
+however it is possible to detect it.
+When the
+.Nm
+driver is loaded, it will run a diagnostic routine designed to
+validate DMA operation by placing the chip in digital loopback mode
+and initiating a packet transmission.
+If the card functions properly,
+the transmitted data will
+be echoed back unmodified.
+If the echoed data is corrupt, the driver
+will print an error message on the console and abort the device attach.
+The
+user should insure the NIC is installed in a 32-bit PCI slot to
+avoid this problem.
+.Pp
+The RealTek 8169, 8169S and 8110S chips appear to only be capable of
+transmitting jumbo frames up to 7.5K in size.
diff --git a/share/man/man4/rl.4 b/share/man/man4/rl.4
new file mode 100644
index 0000000..a8ff68b
--- /dev/null
+++ b/share/man/man4/rl.4
@@ -0,0 +1,305 @@
+.\" Copyright (c) 1997, 1998
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 1, 2008
+.Dt RL 4
+.Os
+.Sh NAME
+.Nm rl
+.Nd "RealTek 8129/8139 Fast Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device rl"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_rl_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters and embedded
+controllers based on the RealTek 8129 and 8139 Fast Ethernet controller
+chips.
+.Pp
+The RealTek 8129/8139 series controllers use bus master DMA but do not use a
+descriptor-based data transfer mechanism.
+The receiver uses a
+single fixed size ring buffer from which packets must be copied
+into mbufs.
+For transmission, there are only four outbound packet
+address registers which require all outgoing packets to be stored
+as contiguous buffers.
+Furthermore, outbound packet buffers must
+be longword aligned or else transmission will fail.
+.Pp
+The 8129 differs from the 8139 in that the 8139 has an internal
+PHY which is controlled through special direct access registers
+whereas the 8129 uses an external PHY via an MII bus.
+The 8139
+supports both 10 and 100Mbps speeds in either full or half duplex.
+The 8129 can support the same speeds and modes given an appropriate
+PHY chip.
+.Pp
+Note: support for the 8139C+ chip is provided by the
+.Xr re 4
+driver.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+This is only
+supported if the PHY chip attached to the RealTek controller
+supports NWAY autonegotiation.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+Note that the 100baseTX media type is only available if supported
+by the adapter.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+Adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Accton
+.Dq Cheetah
+EN1207D (MPX 5030/5038; RealTek 8139 clone)
+.It
+Allied Telesyn AT2550
+.It
+Allied Telesyn AT2500TX
+.It
+Belkin F5D5000
+.It
+BUFFALO (Melco INC.) LPC-CB-CLX (CardBus)
+.It
+Compaq HNE-300
+.It
+CompUSA no-name 10/100 PCI Ethernet NIC
+.It
+Corega FEther CB-TXD
+.It
+Corega FEtherII CB-TXD
+.It
+D-Link DFE-528TX
+.It
+D-Link DFE-530TX+
+.It
+D-Link DFE-538TX
+.It
+D-Link DFE-690TXD
+.It
+Edimax EP-4103DL CardBus
+.It
+Encore ENL832-TX 10/100 M PCI
+.It
+Farallon NetLINE 10/100 PCI
+.It
+Genius GF100TXR
+.It
+GigaFast Ethernet EE100-AXP
+.It
+KTX-9130TX 10/100 Fast Ethernet
+.It
+LevelOne FPC-0106TX
+.It
+Longshine LCS-8038TX-R
+.It
+NDC Communications NE100TX-E
+.It
+Netronix Inc.\& EA-1210 NetEther 10/100
+.It
+Nortel Networks 10/100BaseTX
+.It
+OvisLink LEF-8129TX
+.It
+OvisLink LEF-8139TX
+.It
+Peppercon AG ROL-F
+.It
+Planex FNW-3603-TX
+.It
+Planex FNW-3800-TX
+.It
+SMC EZ Card 10/100 PCI 1211-TX
+.It
+SOHO (PRAGMATIC) UE-1211C
+.El
+.Sh LOADER TUNABLES
+.Bl -tag -width indent
+.It Va dev.rl.%unit.twister_enable
+Non-zero value enables the long cable tuning on the specified device.
+Disabled by default.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "rl%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "rl%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "rl%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "rl%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "rl%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.It "rl%d: chip is in D3 power state -- setting to D0"
+This message applies only to adapters which support power
+management.
+Some operating systems place the controller in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The controller loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform second
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr ifconfig 8
+.Rs
+.%B The RealTek 8129, 8139 and 8139C+ datasheets
+.%O http://www.realtek.com.tw
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
+.Sh BUGS
+Since outbound packets must be longword aligned, the transmit
+routine has to copy an unaligned packet into an mbuf cluster buffer
+before transmission.
+The driver abuses the fact that the cluster buffer
+pool is allocated at system startup time in a contiguous region starting
+at a page boundary.
+Since cluster buffers are 2048 bytes, they are
+longword aligned by definition.
+The driver probably should not be
+depending on this characteristic.
+.Pp
+The RealTek data sheets are of especially poor quality,
+and there is a lot of information missing
+particularly concerning the receiver operation.
+One particularly
+important fact that the data sheets fail to mention relates to the
+way in which the chip fills in the receive buffer.
+When an interrupt
+is posted to signal that a frame has been received, it is possible that
+another frame might be in the process of being copied into the receive
+buffer while the driver is busy handling the first one.
+If the driver
+manages to finish processing the first frame before the chip is done
+DMAing the rest of the next frame, the driver may attempt to process
+the next frame in the buffer before the chip has had a chance to finish
+DMAing all of it.
+.Pp
+The driver can check for an incomplete frame by inspecting the frame
+length in the header preceding the actual packet data: an incomplete
+frame will have the magic length of 0xFFF0.
+When the driver encounters
+this value, it knows that it has finished processing all currently
+available packets.
+Neither this magic value nor its significance are
+documented anywhere in the RealTek data sheets.
diff --git a/share/man/man4/rndtest.4 b/share/man/man4/rndtest.4
new file mode 100644
index 0000000..67448d8
--- /dev/null
+++ b/share/man/man4/rndtest.4
@@ -0,0 +1,72 @@
+.\"-
+.\" Copyright (c) 2003 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.
+.\"
+.\" 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$
+.\"
+.Dd March 11, 2003
+.Dt RNDTEST 4
+.Os
+.Sh NAME
+.Nm rndtest
+.Nd FIPS 140-2 random number generator test monitor
+.Sh SYNOPSIS
+.Cd "device rndtest"
+.Sh DESCRIPTION
+The
+.Nm
+driver
+.Dq "hooks up"
+to hardware crypto devices to monitor the
+entropy data passed to the
+.Xr random 4
+subsystem.
+This data is periodically tested for FIPS 140-2 compliance and
+statistics are collected.
+If the harvested entropy fails any of the FIPS test suite, then
+it is discarded and testing is continuously applied until
+.Dq "good data"
+is received from the device.
+Failures are optionally reported on the console.
+.Sh SEE ALSO
+.Xr crypto 4 ,
+.Xr hifn 4 ,
+.Xr random 4 ,
+.Xr safe 4 ,
+.Xr ubsec 4 ,
+.Xr crypto 9
+.Sh HISTORY
+The idea for this and the original code came from
+.An "Jason L. Wright" .
+The
+.Nm
+device driver first appeared in
+.Fx 5.0 .
+.Sh BUGS
+Crypto device drivers must be compiled specially to make use of this driver;
+this should not be necessary.
+This feature might better be integrated into the
+.Xr random 4
+subsystem where it can be applied to devices that claim to supply
+.Dq "pure entropy" .
diff --git a/share/man/man4/route.4 b/share/man/man4/route.4
new file mode 100644
index 0000000..aaf59e4
--- /dev/null
+++ b/share/man/man4/route.4
@@ -0,0 +1,331 @@
+.\" Copyright (c) 1990, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)route.4 8.6 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.Dd November 4, 2004
+.Dt ROUTE 4
+.Os
+.Sh NAME
+.Nm route
+.Nd kernel packet forwarding database
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/time.h
+.In sys/socket.h
+.In net/if.h
+.In net/route.h
+.Ft int
+.Fn socket PF_ROUTE SOCK_RAW "int family"
+.Sh DESCRIPTION
+.Fx
+provides some packet routing facilities.
+The kernel maintains a routing information database, which
+is used in selecting the appropriate network interface when
+transmitting packets.
+.Pp
+A user process (or possibly multiple co-operating processes)
+maintains this database by sending messages over a special kind
+of socket.
+This supplants fixed size
+.Xr ioctl 2 Ns 's
+used in earlier releases.
+Routing table changes may only be carried out by the super user.
+.Pp
+The operating system may spontaneously emit routing messages in response
+to external events, such as receipt of a re-direct, or failure to
+locate a suitable route for a request.
+The message types are described in greater detail below.
+.Pp
+Routing database entries come in two flavors: for a specific
+host, or for all hosts on a generic subnetwork (as specified
+by a bit mask and value under the mask.
+The effect of wildcard or default route may be achieved by using
+a mask of all zeros, and there may be hierarchical routes.
+.Pp
+When the system is booted and addresses are assigned
+to the network interfaces, each protocol family
+installs a routing table entry for each interface when it is ready for traffic.
+Normally the protocol specifies the route
+through each interface as a
+.Dq direct
+connection to the destination host
+or network.
+If the route is direct, the transport layer of
+a protocol family usually requests the packet be sent to the
+same host specified in the packet.
+Otherwise, the interface
+is requested to address the packet to the gateway listed in the routing entry
+(i.e., the packet is forwarded).
+.Pp
+When routing a packet,
+the kernel will attempt to find
+the most specific route matching the destination.
+(If there are two different mask and value-under-the-mask pairs
+that match, the more specific is the one with more bits in the mask.
+A route to a host is regarded as being supplied with a mask of
+as many ones as there are bits in the destination).
+If no entry is found, the destination is declared to be unreachable,
+and a routing-miss message is generated if there are any
+listeners on the routing control socket described below.
+.Pp
+A wildcard routing entry is specified with a zero
+destination address value, and a mask of all zeroes.
+Wildcard routes will be used
+when the system fails to find other routes matching the
+destination.
+The combination of wildcard
+routes and routing redirects can provide an economical
+mechanism for routing traffic.
+.Pp
+One opens the channel for passing routing control messages
+by using the socket call shown in the synopsis above:
+.Pp
+The
+.Fa family
+parameter may be
+.Dv AF_UNSPEC
+which will provide
+routing information for all address families, or can be restricted
+to a specific address family by specifying which one is desired.
+There can be more than one routing socket open per system.
+.Pp
+Messages are formed by a header followed by a small
+number of sockaddrs (now variable length particularly
+in the
+.Tn ISO
+case), interpreted by position, and delimited
+by the new length entry in the sockaddr.
+An example of a message with four addresses might be an
+.Tn ISO
+redirect:
+Destination, Netmask, Gateway, and Author of the redirect.
+The interpretation of which address are present is given by a
+bit mask within the header, and the sequence is least significant
+to most significant bit within the vector.
+.Pp
+Any messages sent to the kernel are returned, and copies are sent
+to all interested listeners.
+The kernel will provide the process
+ID for the sender, and the sender may use an additional sequence
+field to distinguish between outstanding messages.
+However, message replies may be lost when kernel buffers are exhausted.
+.Pp
+The kernel may reject certain messages, and will indicate this
+by filling in the
+.Ar rtm_errno
+field.
+The routing code returns
+.Er EEXIST
+if
+requested to duplicate an existing entry,
+.Er ESRCH
+if
+requested to delete a non-existent entry,
+or
+.Er ENOBUFS
+if insufficient resources were available
+to install a new route.
+In the current implementation, all routing processes run locally,
+and the values for
+.Ar rtm_errno
+are available through the normal
+.Em errno
+mechanism, even if the routing reply message is lost.
+.Pp
+A process may avoid the expense of reading replies to
+its own messages by issuing a
+.Xr setsockopt 2
+call indicating that the
+.Dv SO_USELOOPBACK
+option
+at the
+.Dv SOL_SOCKET
+level is to be turned off.
+A process may ignore all messages from the routing socket
+by doing a
+.Xr shutdown 2
+system call for further input.
+.Pp
+If a route is in use when it is deleted,
+the routing entry will be marked down and removed from the routing table,
+but the resources associated with it will not
+be reclaimed until all references to it are released.
+User processes can obtain information about the routing
+entry to a specific destination by using a
+.Dv RTM_GET
+message, or by calling
+.Xr sysctl 3 .
+.Pp
+Messages include:
+.Bd -literal
+#define RTM_ADD 0x1 /* Add Route */
+#define RTM_DELETE 0x2 /* Delete Route */
+#define RTM_CHANGE 0x3 /* Change Metrics, Flags, or Gateway */
+#define RTM_GET 0x4 /* Report Information */
+#define RTM_LOSING 0x5 /* Kernel Suspects Partitioning */
+#define RTM_REDIRECT 0x6 /* Told to use different route */
+#define RTM_MISS 0x7 /* Lookup failed on this address */
+#define RTM_LOCK 0x8 /* fix specified metrics */
+#define RTM_RESOLVE 0xb /* request to resolve dst to LL addr - unused */
+#define RTM_NEWADDR 0xc /* address being added to iface */
+#define RTM_DELADDR 0xd /* address being removed from iface */
+#define RTM_IFINFO 0xe /* iface going up/down etc. */
+#define RTM_NEWMADDR 0xf /* mcast group membership being added to if */
+#define RTM_DELMADDR 0x10 /* mcast group membership being deleted */
+#define RTM_IFANNOUNCE 0x11 /* iface arrival/departure */
+.Ed
+.Pp
+A message header consists of one of the following:
+.Bd -literal
+struct rt_msghdr {
+ u_short rtm_msglen; /* to skip over non-understood messages */
+ u_char rtm_version; /* future binary compatibility */
+ u_char rtm_type; /* message type */
+ u_short rtm_index; /* index for associated ifp */
+ int rtm_flags; /* flags, incl. kern & message, e.g. DONE */
+ int rtm_addrs; /* bitmask identifying sockaddrs in msg */
+ pid_t rtm_pid; /* identify sender */
+ int rtm_seq; /* for sender to identify action */
+ int rtm_errno; /* why failed */
+ int rtm_use; /* from rtentry */
+ u_long rtm_inits; /* which metrics we are initializing */
+ struct rt_metrics rtm_rmx; /* metrics themselves */
+};
+
+struct if_msghdr {
+ u_short ifm_msglen; /* to skip over non-understood messages */
+ u_char ifm_version; /* future binary compatibility */
+ u_char ifm_type; /* message type */
+ int ifm_addrs; /* like rtm_addrs */
+ int ifm_flags; /* value of if_flags */
+ u_short ifm_index; /* index for associated ifp */
+ struct if_data ifm_data; /* statistics and other data about if */
+};
+
+struct ifa_msghdr {
+ u_short ifam_msglen; /* to skip over non-understood messages */
+ u_char ifam_version; /* future binary compatibility */
+ u_char ifam_type; /* message type */
+ int ifam_addrs; /* like rtm_addrs */
+ int ifam_flags; /* value of ifa_flags */
+ u_short ifam_index; /* index for associated ifp */
+ int ifam_metric; /* value of ifa_metric */
+};
+
+struct ifma_msghdr {
+ u_short ifmam_msglen; /* to skip over non-understood messages */
+ u_char ifmam_version; /* future binary compatibility */
+ u_char ifmam_type; /* message type */
+ int ifmam_addrs; /* like rtm_addrs */
+ int ifmam_flags; /* value of ifa_flags */
+ u_short ifmam_index; /* index for associated ifp */
+};
+
+struct if_announcemsghdr {
+ u_short ifan_msglen; /* to skip over non-understood messages */
+ u_char ifan_version; /* future binary compatibility */
+ u_char ifan_type; /* message type */
+ u_short ifan_index; /* index for associated ifp */
+ char ifan_name[IFNAMSIZ]; /* if name, e.g. "en0" */
+ u_short ifan_what; /* what type of announcement */
+};
+.Ed
+.Pp
+The
+.Dv RTM_IFINFO
+message uses a
+.Ar if_msghdr
+header, the
+.Dv RTM_NEWADDR
+and
+.Dv RTM_DELADDR
+messages use a
+.Ar ifa_msghdr
+header, the
+.Dv RTM_NEWMADDR
+and
+.Dv RTM_DELMADDR
+messages use a
+.Vt ifma_msghdr
+header, the
+.Dv RTM_IFANNOUNCE
+message uses a
+.Vt if_announcemsghdr
+header,
+and all other messages use the
+.Ar rt_msghdr
+header.
+.Pp
+The
+.Dq Li "struct rt_metrics"
+and the flag bits are as defined in
+.Xr rtentry 9 .
+.Pp
+Specifiers for metric values in rmx_locks and rtm_inits are:
+.Bd -literal
+#define RTV_MTU 0x1 /* init or lock _mtu */
+#define RTV_HOPCOUNT 0x2 /* init or lock _hopcount */
+#define RTV_EXPIRE 0x4 /* init or lock _expire */
+#define RTV_RPIPE 0x8 /* init or lock _recvpipe */
+#define RTV_SPIPE 0x10 /* init or lock _sendpipe */
+#define RTV_SSTHRESH 0x20 /* init or lock _ssthresh */
+#define RTV_RTT 0x40 /* init or lock _rtt */
+#define RTV_RTTVAR 0x80 /* init or lock _rttvar */
+.Ed
+.Pp
+Specifiers for which addresses are present in the messages are:
+.Bd -literal
+#define RTA_DST 0x1 /* destination sockaddr present */
+#define RTA_GATEWAY 0x2 /* gateway sockaddr present */
+#define RTA_NETMASK 0x4 /* netmask sockaddr present */
+#define RTA_GENMASK 0x8 /* cloning mask sockaddr present - unused */
+#define RTA_IFP 0x10 /* interface name sockaddr present */
+#define RTA_IFA 0x20 /* interface addr sockaddr present */
+#define RTA_AUTHOR 0x40 /* sockaddr for author of redirect */
+#define RTA_BRD 0x80 /* for NEWADDR, broadcast or p-p dest addr */
+.Ed
+.Sh SEE ALSO
+.Xr sysctl 3 ,
+.Xr route 8 ,
+.Xr rtentry 9
+.Pp
+The constants for the
+.Va rtm_flags
+field are documented in the manual page for the
+.Xr route 8
+utility.
+.Sh HISTORY
+A
+.Dv PF_ROUTE
+protocol family first appeared in
+.Bx 4.3 reno .
diff --git a/share/man/man4/rp.4 b/share/man/man4/rp.4
new file mode 100644
index 0000000..8f0f425
--- /dev/null
+++ b/share/man/man4/rp.4
@@ -0,0 +1,195 @@
+.\" Copyright (c) 1995 Comtrol, Inc.
+.\" All rights reserved.
+.\"
+.\" $FreeBSD$
+.Dd November 15, 1995
+.Os
+.Dt RP 4
+.Sh NAME
+.Nm rp
+.Nd "driver for Comtrol RocketPort Intelligent Serial Port Cards"
+.Sh SYNOPSIS
+.Cd "device rp"
+.Pp
+For ISA cards, you must specify the port address in
+.Pa /boot/device.hints :
+.Cd hint.rp.0.at="isa"
+.Cd hint.rp.0.port="0x100"
+.Sh DESCRIPTION
+This driver provides a kernel device driver for the
+.Tn RocketPort
+and
+.Tn RocketPort RA
+serial boards.
+These boards provide 8, 16, or 32 high-speed serial ports
+while requiring only 68 bytes of I/O space for all 8, 16,
+or 32 ports, and do not require an interrupt channel.
+This driver supports up to four
+.Tn RocketPort
+or
+.Tn RocketPort RA
+boards in one machine simultaneously.
+If you are using four 32 port
+.Tn RocketPort
+boards, you can put as many as 128 intelligent serial ports
+on your system.
+.Pp
+The
+.Nm
+driver supports the following speeds: 50, 75, 110, 134, 150,
+200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 7200,
+14400, 57600, 76800, 115200, and 230400.
+(You must use
+.Xr termios 4 ,
+rather than the old style ioctl interface to use non-traditional
+speeds.)
+.Pp
+An open on the
+.Nm
+driver will block until carrier is present, unless
+.Dv O_NONBLOCK
+or
+.Dv CLOCAL
+is set.
+.Sh HARDWARE CONFIGURATION
+The first
+.Tn RocketPort
+or
+.Tn RocketPort RA
+card requires a 68-byte contiguous block of I/O addresses,
+starting at one of the following:
+0x100h, 0x140h, 0x180h, 0x200h, 0x240h, 0x280h, 0x300h, 0x340h,
+0x380h.
+The second, third, and fourth
+.Tn RocketPort
+cards require only a
+64-byte contiguous block of I/O addresses, starting at one of the
+above address ranges.
+The I/O address range used by any of the
+.Tn RocketPort
+cards must not conflict with any other cards in the system,
+including other
+.Tn RocketPort
+cards.
+The starting range of the I/O ports used by each card
+must match with the I/O address specified in
+.Pa /boot/device.hints .
+.Pp
+Since the first
+.Tn RocketPort
+uses 68 I/O addresses, if the first card is
+set to use an I/O block starting at 0x100,
+it will occupy the I/O ports between 0x100 and 0x143.
+This means that the second, third, or fourth
+.Tn RocketPort
+board may not use the block of addresses starting at 0x140,
+since the first three I/O addresses of that range
+are used by the first board.
+This is an important point to keep in mind.
+.Pp
+If you have two ISA cards, one installed at 0x100 and the
+second installed at 0x180, then you should add the following to
+.Pa /boot/device.hints :
+.Pp
+.Dl hint.rp.0.at="isa"
+.Dl hint.rp.0.port="0x100"
+.Dl hint.rp.1.at="isa"
+.Dl hint.rp.1.port="0x180"
+.Pp
+The configuration of the
+.Tn RocketPort
+cards is done via the set of 8 DIP switches,
+labeled SW1 on the
+.Tn RocketPort
+card:
+.Bd -literal -offset indent
++-------------------------------+
+| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |
++-------+-------+---------------+
+| Unused| Card | I/O Port Block|
++-------------------------------+
+.Ed
+.Pp
+DIP switches 7 and 8 are unused, and must be left on.
+.Pp
+DIP switches 6 and 5 identify the card number of each
+.Tn RocketPort
+card.
+The first card installed in the system must have its DIP switches set
+as card number one; the second card installed in the system must have
+its DIP switches set as card number two; and so on.
+As shipped from
+the factory, DIP switches 6 and 5 are both on by default, indicating
+that this is the first card installed on the system:
+.Bd -literal -offset indent
+DIP Switches
+6 5
+===================
+On On First Card
+On Off Second Card
+Off On Third Card
+Off Off Fourth Card
+.Ed
+.Pp
+DIP switches 4, 3, 2, and 1 indicate the I/O address range used by the
+first
+.Tn RocketPort
+card.
+If there are more than one
+.Tn RocketPort
+cards installed in a system,
+the second, third and fourth
+.Tn RocketPort
+cards must
+also be set to the I/O address range used by the first
+.Tn RocketPort
+card;
+all cards must have these DIP switches set identically
+for proper operation.
+As shipped from the factory, DIP switch 4 is on,
+and switches 3, 2, and 1 are off by default,
+indicating an I/O address range used by the first
+card which starts at 0x180 and extends to 0x1C3.
+.Bd -literal -offset indent
+DIP Switches I/O Address Range
+4 3 2 1 Used by the First Card
+=====================================
+On Off On Off 100-143
+On Off Off On 140-183
+On Off Off Off 180-1C3
+Off On On Off 200-243
+Off On Off On 240-283
+Off On Off Off 280-2C3
+Off Off On Off 300-343
+Off Off Off On 340-383
+Off Off Off Off 380-3C3
+.Ed
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ttyR[0-4][0-9a-f]"
+.It Pa /dev/ttyR[0-4][0-9a-f]
+.El
+.Sh AUTHORS
+.An Theodore Ts'o Aq tytso@mit.edu
+.Pp
+This driver was written under contract for Comtrol Corporation.
+For dealer, distributor and other information regarding Comtrol
+.Tn RocketPort ,
+contact Comtrol Corporation at (800) 926-6876 or send email to
+.Aq info@comtrol.com .
+To report bugs for this driver, please send email to
+.Aq bug-bsdi-rocketport@comtrol.com .
+.Sh BUGS
+If incoming software flow control is enabled on a 486 or Pentium
+machine, and the flow control is very heavily exercised, on rare occasions
+a character will get dropped.
+This problem does not occur on a 386, and
+it is not currently known whether the bug is in the
+.Nm
+driver
+or in the
+.Bsx
+tty layer.
+.\" (Although my bet is that it's in the higher-level tty layer;
+.\" given the bugs I found while writing this driver, it's clear
+.\" the BSD software flow control code has not been tested very much
+.\" at all! -- TYT)
diff --git a/share/man/man4/rue.4 b/share/man/man4/rue.4
new file mode 100644
index 0000000..7522575
--- /dev/null
+++ b/share/man/man4/rue.4
@@ -0,0 +1,154 @@
+.\"
+.\" Copyright (c) 2001-2003, Shunsuke Akiyama <akiyama@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$
+.\"
+.Dd July 16, 2005
+.Dt RUE 4
+.Os
+.Sh NAME
+.Nm rue
+.Nd "RealTek RTL8150 USB to Fast Ethernet controller driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device miibus"
+.Cd "device rue"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_rue_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB Ethernet adapters based on the RealTek
+RTL8150 USB to Fast Ethernet controller chip.
+.Pp
+The RTL8150 contains an integrated Fast Ethernet MAC, which supports
+both 10 and 100Mbps speeds in either full or half duplex.
+Although designed to interface with
+100Mbps peripheral, the existing USB standard specifies a maximum
+transfer speed of 12Mbps.
+Users should therefore not expect to actually
+achieve 100Mbps speeds with this device.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable auto selection of the media type and options.
+The user can manually override
+the auto selected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports RealTek RTL8150 based USB Ethernet
+adapters including:
+.Pp
+.Bl -bullet -compact
+.It
+Buffalo (Melco Inc.) LUA-KTX
+.It
+Green House GH-USB100B
+.It
+LinkSys USB100M
+.It
+Billionton 10/100 FastEthernet USBKR2
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "rue%d: watchdog timeout"
+A packet was queued for transmission and a transmit command was
+issued, however the device failed to acknowledge the transmission
+before a timeout expired.
+.It "rue%d: rx list init failed"
+The driver failed to allocate an mbuf for the transmitter ring.
+.It "rue%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Rs
+.%T "ReakTek RTL8150 data sheet"
+.%O ftp://ftp.realtek.com.tw/lancard/data_sheet/8150/
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Shunsuke Akiyama Aq akiyama@FreeBSD.org .
diff --git a/share/man/man4/rum.4 b/share/man/man4/rum.4
new file mode 100644
index 0000000..a1e0ca0
--- /dev/null
+++ b/share/man/man4/rum.4
@@ -0,0 +1,182 @@
+.\"
+.\" Copyright (c) 2005-2007
+.\" Damien Bergamini <damien.bergamini@free.fr>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 13, 2008
+.Os
+.Dt RUM 4
+.Sh NAME
+.Nm rum
+.Nd Ralink Technology USB IEEE 802.11a/b/g wireless network device
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ehci"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device rum"
+.Cd "device wlan"
+.Cd "device wlan_amrr"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_rum_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports USB 2.0 and PCI Express Mini Card wireless adapters
+based on the Ralink RT2501USB and RT2601USB chipsets.
+.Pp
+Ralink PCI Express Mini Card adapters show up as normal USB 2.0
+devices and are thus handled by the
+.Nm
+driver.
+.Pp
+The RT2501USB chipset is the second generation of 802.11a/b/g adapters from
+Ralink.
+It consists of two integrated chips, an RT2571W MAC/BBP and an RT2528 or
+RT5226 radio transceiver.
+.Pp
+The RT2601USB chipset consists of two integrated chips, an RT2671
+MAC/BBP and an RT2527 or RT5225 radio transceiver.
+This chipset uses the MIMO (multiple-input multiple-output) technology
+with multiple antennas to extend the operating range of the adapter
+and to achieve higher throughput.
+.Pp
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+.Cm hostap ,
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports USB 2.0 wireless
+adapters based on the Ralink RT2501USB and RT2601USB chipsets,
+including:
+.Pp
+.Bl -column -compact "Atlantis Land A02-PCM-W54" "Bus"
+.It Em Card Ta Em Bus
+.It "3Com Aolynk WUB320g" Ta USB
+.It "Abocom WUG2700 Ta" Ta USB
+.It "Airlink101 AWLL5025" Ta USB
+.It "ASUS WL-167g ver 2" Ta USB
+.It "Belkin F5D7050 ver 3" Ta USB
+.It "Belkin F5D9050 ver 3" Ta USB
+.It "Buffalo WLI-U2-SG54HP" Ta USB
+.It "Buffalo WLI-U2-G54HP" Ta USB
+.It "CNet CWD-854 ver F" Ta USB
+.It "Conceptronic C54RU ver 2" Ta USB
+.It "Corega CG-WLUSB2GO" Ta USB
+.It "D-Link DWA-110" Ta USB
+.It "D-Link DWA-111" Ta USB
+.It "D-Link DWL-G122 rev C1" Ta USB
+.It "D-Link WUA-1340" Ta USB
+.It "Digitus DN-7003GR" Ta USB
+.It "Edimax EW-7318USG" Ta USB
+.It "Gigabyte GN-WB01GS" Ta USB
+.It "Gigabyte GN-WI05GS" Ta USB
+.It "Hawking HWUG1" Ta USB
+.It "Hawking HWU54DM" Ta USB
+.It "Hercules HWGUSB2-54-LB" Ta USB
+.It "Hercules HWGUSB2-54V2-AP" Ta USB
+.It "LevelOne WNC-0301USB v3" Ta USB
+.It "Linksys WUSB54G rev C" Ta USB
+.It "Linksys WUSB54GR" Ta USB
+.It "Planex GW-US54HP" Ta USB
+.It "Planex GW-US54Mini2" Ta USB
+.It "Planex GW-USMM" Ta USB
+.It "Senao NUB-3701" Ta USB
+.It "Sitecom WL-113 ver 2" Ta USB
+.It "Sitecom WL-172" Ta USB
+.It "Sweex LW053" Ta USB
+.It "TP-LINK TL-WN321G" Ta USB
+.El
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev rum0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev rum0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev rum0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Pp
+Join a specific BSS network with 128-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev rum0 wlanmode adhoc ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "rum%d: could not load 8051 microcode"
+An error occurred while attempting to upload the microcode to the onboard 8051
+microcontroller unit.
+The driver will reset the hardware.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr intro 4 ,
+.Xr netintro 4 ,
+.Xr usb 4 ,
+.Xr wlan 4 ,
+.Xr wlan_amrr 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr wlan_xauth 4 ,
+.Xr ifconfig 8 ,
+.Xr hostapd 8 ,
+.Xr wpa_supplicant 8 .
+.Rs
+.%T "Ralink Technology"
+.%O http://www.ralinktech.com/
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 4.0 .
+.Sh AUTHORS
+The original
+.Nm
+driver was written by
+.An Niall O'Higgins Aq niallo@openbsd.org
+and
+.An Damien Bergamini Aq damien@openbsd.org .
diff --git a/share/man/man4/sa.4 b/share/man/man4/sa.4
new file mode 100644
index 0000000..0a6da7c
--- /dev/null
+++ b/share/man/man4/sa.4
@@ -0,0 +1,247 @@
+.\" Copyright (c) 1996
+.\" Julian Elischer <julian@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$
+.\"
+.Dd June 6, 1999
+.Dt SA 4
+.Os
+.Sh NAME
+.Nm sa
+.Nd SCSI Sequential Access device driver
+.Sh SYNOPSIS
+.Cd device sa
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for all
+.Tn SCSI
+devices of the sequential access class that are attached to the system
+through a supported
+.Tn SCSI
+Host Adapter.
+The sequential access class includes tape and other linear access devices.
+.Pp
+A
+.Tn SCSI
+Host
+adapter must also be separately configured into the system
+before a
+.Tn SCSI
+sequential access device can be configured.
+.Sh MOUNT SESSIONS
+The
+.Nm
+driver is based around the concept of a
+.Dq Em mount session ,
+which is defined as the period between the time that a tape is
+mounted, and the time when it is unmounted.
+Any parameters set during
+a mount session remain in effect for the remainder of the session or
+until replaced.
+The tape can be unmounted, bringing the session to a
+close in several ways.
+These include:
+.Bl -enum
+.It
+Closing a `rewind device',
+referred to as sub-mode 00 below.
+An example is
+.Pa /dev/sa0 .
+.It
+Using the MTOFFL
+.Xr ioctl 2
+command, reachable through the
+.Sq Cm offline
+command of
+.Xr mt 1 .
+.El
+.Pp
+It should be noted that tape devices are exclusive open devices, except in
+the case where a control mode device is opened.
+In the latter case, exclusive
+access is only sought when needed (e.g., to set parameters).
+.Sh SUB-MODES
+Bits 0 and 1 of the minor number are interpreted as
+.Sq sub-modes .
+The sub-modes differ in the action taken when the device is closed:
+.Bl -tag -width XXXX
+.It 00
+A close will rewind the device; if the tape has been
+written, then a file mark will be written before the rewind is requested.
+The device is unmounted.
+.It 01
+A close will leave the tape mounted.
+If the tape was written to, a file mark will be written.
+No other head positioning takes place.
+Any further reads or writes will occur directly after the
+last read, or the written file mark.
+.It 10
+A close will rewind the device.
+If the tape has been
+written, then a file mark will be written before the rewind is requested.
+On completion of the rewind an unload command will be issued.
+The device is unmounted.
+.El
+.Sh BLOCKING MODES
+.Tn SCSI
+tapes may run in either
+.Sq Em variable
+or
+.Sq Em fixed
+block-size modes.
+Most
+.Tn QIC Ns -type
+devices run in fixed block-size mode, where most nine-track tapes and
+many new cartridge formats allow variable block-size.
+The difference between the two is as follows:
+.Bl -inset
+.It Variable block-size:
+Each write made to the device results in a single logical record
+written to the tape.
+One can never read or write
+.Em part
+of a record from tape (though you may request a larger block and read
+a smaller record); nor can one read multiple blocks.
+Data from a single write is therefore read by a single read.
+The block size used
+may be any value supported by the device, the
+.Tn SCSI
+adapter and the system (usually between 1 byte and 64 Kbytes,
+sometimes more).
+.Pp
+When reading a variable record/block from the tape, the head is
+logically considered to be immediately after the last item read,
+and before the next item after that.
+If the next item is a file mark,
+but it was never read, then the next
+process to read will immediately hit the file mark and receive an end-of-file notification.
+.It Fixed block-size:
+Data written by the user is passed to the tape as a succession of
+fixed size blocks.
+It may be contiguous in memory, but it is
+considered to be a series of independent blocks.
+One may never write
+an amount of data that is not an exact multiple of the blocksize.
+One may read and write the same data as a different set of records.
+In other words, blocks that were written together may be read separately,
+and vice-versa.
+.Pp
+If one requests more blocks than remain in the file, the drive will
+encounter the file mark.
+As there is some data to return (unless
+there were no records before the file mark), the read will succeed,
+returning that data.
+The next read will return immediately with a value
+of 0.
+(As above, if the file mark is never read, it remains for the next
+process to read if in no-rewind mode.)
+.El
+.Sh FILE MARK HANDLING
+The handling of file marks on write is automatic.
+If the user has
+written to the tape, and has not done a read since the last write,
+then a file mark will be written to the tape when the device is
+closed.
+If a rewind is requested after a write, then the driver
+assumes that the last file on the tape has been written, and ensures
+that there are two file marks written to the tape.
+The exception to
+this is that there seems to be a standard (which we follow, but do not
+understand why) that certain types of tape do not actually write two
+file marks to tape, but when read, report a `phantom' file mark when the
+last file is read.
+These devices include the QIC family of devices.
+(It might be that this set of devices is the same set as that of fixed
+block devices.
+This has not been determined yet, and they are treated
+as separate behaviors by the driver at this time.)
+.Sh IOCTLS
+The
+.Nm
+driver supports all of the ioctls of
+.Xr mtio 4 .
+.Sh FILES
+.Bl -tag -width /dev/[n][e]sa[0-9] -compact
+.It Pa /dev/[n][e]sa[0-9]
+general form:
+.It Pa /dev/sa0
+Rewind on close
+.It Pa /dev/nsa0
+No rewind on close
+.It Pa /dev/esa0
+Eject on close (if capable)
+.It Pa /dev/sa0.ctl
+Control mode device (to examine state while another program is
+accessing the device, e.g.).
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr mt 1 ,
+.Xr scsi 4
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written for the
+.Tn CAM
+.Tn SCSI
+subsystem by
+.An Justin T. Gibbs
+and
+.An Kenneth Merry .
+Many ideas were gleaned from the
+.Nm st
+device driver written and ported from
+.Tn Mach
+2.5
+by
+.An Julian Elischer .
+.Pp
+The current owner of record is
+.An Matthew Jacob
+who has suffered too many
+years of breaking tape drivers.
+.Sh BUGS
+This driver lacks many of the hacks required to deal with older devices.
+Many older
+.Tn SCSI-1
+devices may not work properly with this driver yet.
+.Pp
+Additionally, certain
+tapes (QIC tapes mostly) that were written under
+.Fx
+2.X
+are not automatically read correctly with this driver: you may need to
+explicitly set variable block mode or set to the blocksize that works best
+for your device in order to read tapes written under
+.Fx
+2.X.
+.Pp
+Fine grained density and compression mode support that is bound to specific
+device names needs to be added.
+.Pp
+Support for fast indexing by use of partitions is missing.
diff --git a/share/man/man4/safe.4 b/share/man/man4/safe.4
new file mode 100644
index 0000000..5cb085f
--- /dev/null
+++ b/share/man/man4/safe.4
@@ -0,0 +1,129 @@
+.\"-
+.\" Copyright (c) 2003 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.
+.\"
+.\" 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$
+.\"/
+.Dd April 1, 2006
+.Dt SAFE 4
+.Os
+.Sh NAME
+.Nm safe
+.Nd SafeNet crypto accelerator
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device crypto"
+.Cd "device cryptodev"
+.Cd "device safe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+safe_load="YES"
+.Ed
+.Pp
+.Nm sysctl Va hw.safe.debug
+.Nm sysctl Va hw.safe.dump
+.Nm sysctl Va hw.safe.rnginterval
+.Nm sysctl Va hw.safe.rngbufsize
+.Nm sysctl Va hw.safe.rngmaxalarm
+.Sh DESCRIPTION
+The
+.Nm
+driver supports cards containing SafeNet crypto accelerator chips.
+.Pp
+The
+.Nm
+driver registers itself to accelerate DES, Triple-DES, AES, MD5-HMAC,
+SHA1-HMAC, and NULL operations for
+.Xr ipsec 4
+and
+.Xr crypto 4 .
+.Pp
+On all models, the driver registers itself to provide random data to the
+.Xr random 4
+subsystem.
+Periodically the driver will poll the hardware RNG and retrieve
+data for use by the system.
+If the driver detects that the hardware RNG is resonating with any local
+signal, it will reset the oscillators that generate random data.
+Three
+.Xr sysctl 8
+settings control this procedure:
+.Va hw.safe.rnginterval
+specifies the time, in seconds, between polling operations,
+.Va hw.safe.rngbufsize
+specifies the number of 32-bit words to retrieve on each poll,
+and
+.Va hw.safe.rngmaxalarm
+specifies the threshold for resetting the oscillators.
+.Pp
+When the driver is compiled with
+.Dv SAFE_DEBUG
+defined, two
+.Xr sysctl 8
+variables are provided for debugging purposes:
+.Va hw.safe.debug
+can be set to a non-zero value to enable debugging messages to be sent
+to the console for each cryptographic operation,
+.Va hw.safe.dump
+is a write-only variable that can be used to force driver state to be sent
+to the console.
+Set this variable to
+.Dq Li ring
+to dump the current state of the descriptor ring,
+to
+.Dq Li dma
+to dump the hardware DMA registers,
+or
+to
+.Dq Li int
+to dump the hardware interrupt registers.
+.Sh HARDWARE
+The
+.Nm
+driver supports cards containing any of the following chips:
+.Bl -tag -width "SafeNet 1141" -offset indent
+.It SafeNet 1141
+The original chipset.
+Supports DES, Triple-DES, AES, MD5, and SHA-1
+symmetric crypto operations, RNG, public key operations, and full IPsec
+packet processing.
+.It SafeNet 1741
+A faster version of the 1141.
+.El
+.Sh SEE ALSO
+.Xr crypt 3 ,
+.Xr crypto 4 ,
+.Xr intro 4 ,
+.Xr ipsec 4 ,
+.Xr random 4 ,
+.Xr crypto 9
+.Sh BUGS
+Public key support is not implemented.
diff --git a/share/man/man4/sbp.4 b/share/man/man4/sbp.4
new file mode 100644
index 0000000..0f86213
--- /dev/null
+++ b/share/man/man4/sbp.4
@@ -0,0 +1,97 @@
+.\" Copyright (c) 1998-2002 Katsushi Kobayashi and Hidetoshi Shimokawa
+.\" 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 acknowledgement as bellow:
+.\"
+.\" This product includes software developed by K. Kobayashi
+.\"
+.\" 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$
+.\"
+.Dd May 20, 2002
+.Dt SBP 4
+.Os
+.Sh NAME
+.Nm sbp
+.Nd Serial Bus Protocol 2 (SBP-2) Mass Storage Devices driver
+.Sh SYNOPSIS
+.Cd "kldload firewire"
+.Cd "kldload cam"
+.Cd "kldload sbp"
+.Pp
+or
+.Pp
+.Cd "device sbp"
+.Cd "device firewire"
+.Cd "device scbus"
+.Cd "device da"
+.Cd "device cd"
+.Cd "device pass"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for SBP-2 devices that attach to the FireWire
+(IEEE 1394) port.
+It should work with SBP-2 devices which the CAM layer supports, for example,
+HDDs, CDROM drives and DVD drives.
+.Pp
+Some users familiar with
+.Xr umass 4
+might wonder why the device is not detached at the CAM layer when the device
+is unplugged.
+It is detached only if the device has not been plugged again
+during several bus resets.
+This is for preventing to detach an active file system
+even when the device cannot be probed correctly for some reason after a bus reset
+or when the device is temporary disconnected because the user changes the bus
+topology.
+If you want to force to detach the device, run
+.Dq Nm fwcontrol Fl r
+several times or set hw.firewire.hold_count=0 by
+.Xr sysctl 1 .
+.Pp
+Some (broken) HDDs do not work well with tagged queuing.
+If you have problems with such drives, try
+.Dq Nm camcontrol [device id] tags -N 1
+to disable tagged queuing.
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr firewire 4 ,
+.Xr camcontrol 8 ,
+.Xr fwcontrol 8 ,
+.Xr kldload 8 ,
+.Xr sysctl 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Katsushi Kobayashi
+and
+.An Hidetoshi Shimokawa .
+.Pp
+This manual page was written by
+.An Katsushi Kobayashi .
diff --git a/share/man/man4/sbp_targ.4 b/share/man/man4/sbp_targ.4
new file mode 100644
index 0000000..1128380
--- /dev/null
+++ b/share/man/man4/sbp_targ.4
@@ -0,0 +1,90 @@
+.\" Copyright (c) 2003 Hidetoshi Shimokawa
+.\" 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 acknowledgement as bellow:
+.\"
+.\" This product includes software developed by H. Shimokawa
+.\"
+.\" 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$
+.\"
+.Dd November 7, 2003
+.Dt SBP_TARG 4
+.Os
+.Sh NAME
+.Nm sbp_targ
+.Nd Serial Bus Protocol 2 (SBP-2) Target Mode devices driver
+.Sh SYNOPSIS
+.Cd "kldload firewire"
+.Cd "kldload cam"
+.Cd "kldload sbp_targ"
+.Pp
+or
+.Pp
+.Cd "device sbp_targ"
+.Cd "device firewire"
+.Cd "device scbus"
+.Cd "device targ"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for SBP-2 target mode.
+This driver is supposed to work with
+.Xr cam 4 ,
+.Xr targ 4
+and
+.Xr firewire 4 .
+You also need to use
+.Xr scsi_target 8 ,
+which can be found in
+.Pa /usr/share/examples/scsi_target ,
+to provide actual devices.
+.Sh EXAMPLES
+.Bd -literal -offset indent
+# mdconfig -a -t malloc -s 10m
+md0
+# scsi_target 0:0:0 /dev/md0
+(Assuming sbp_targ0 on scbus0)
+.Ed
+.Sh SEE ALSO
+.Xr cam 4 ,
+.Xr firewire 4 ,
+.Xr targ 4 ,
+.Xr camcontrol 8 ,
+.Xr fwcontrol 8 ,
+.Xr kldload 8 ,
+.Xr scsi_target 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Hidetoshi Shimokawa .
+.Sh BUGS
+This driver is
+.Ud .
+It does not work correctly in multi-initiator environments
+or after the bus topology has been changed.
diff --git a/share/man/man4/scc.4 b/share/man/man4/scc.4
new file mode 100644
index 0000000..b08b3f8
--- /dev/null
+++ b/share/man/man4/scc.4
@@ -0,0 +1,75 @@
+.\"
+.\" 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$
+.\"
+.Dd March 29, 2006
+.Dt SCC 4
+.Os
+.\"
+.Sh NAME
+.Nm scc
+.Nd driver for Serial Communications Controllers (SCC) devices
+.\"
+.Sh SYNOPSIS
+.Cd "device scc"
+.Cd "device uart"
+.\"
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for various classes of SCCs.
+It is an umbrella driver that delegates control of each independent
+communication channel to subordinate drivers.
+These subordinate drivers, like
+.Xr uart 4 ,
+take care of the details of the communication itself.
+.\"
+.Sh HARDWARE
+The
+.Nm
+driver supports the following classes of SCCs:
+.Pp
+.Bl -bullet -compact
+.It
+SAB82532: Siemens SAB 82532 based serial communications controllers.
+.It
+Z8530: Zilog 8530 based serial communications controllers.
+.El
+.\"
+.Sh SEE ALSO
+.Xr puc 4 ,
+.Xr uart 4
+.\"
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+The
+.Nm
+driver and this manual page were written by
+.An Marcel Moolenaar Aq marcel@xcllnt.net .
diff --git a/share/man/man4/sched_4bsd.4 b/share/man/man4/sched_4bsd.4
new file mode 100644
index 0000000..9533cae
--- /dev/null
+++ b/share/man/man4/sched_4bsd.4
@@ -0,0 +1,74 @@
+.\" 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 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$
+.\"
+.Dd January 21, 2008
+.Os
+.Dt SCHED_4BSD 4
+.Sh NAME
+.Nm sched_4bsd
+.Nd "4.4BSD scheduler"
+.Sh SYNOPSIS
+.Cd "options SCHED_4BSD"
+.Sh DESCRIPTION
+The
+.Nm
+scheduler
+is the traditional system scheduler, providing both high throughput and solid
+interactive response in the presence of load.
+.Pp
+The following sysctls are relevant to the operation of
+.Nm :
+.Bl -tag -width indent
+.It Va kern.sched.name
+This read-only sysctl reports the name of the active scheduler.
+.It Va kern.sched.quantum
+This read-write sysctl reports or sets the length of the quantum (in
+micro-seconds) granted to a thread.
+.It Va kern.sched.ipiwakeup.enabled
+This read-write sysctl sets whether or not the scheduler will generate an
+inter-processor interrupt (IPI) to an idle CPU when a thread is woken up.
+Otherwise, idle CPUs will wait until the next clock tick before looking for
+new work.
+.It Va kern.sched.preemption
+This read-only sysctl reports whether or not the kernel is configured to
+support preemption, which reduces the latency to run lower priority threads
+on wakeup.
+.El
+.Pp
+Some sysctls will be available only on systems supporting SMP.
+.Sh SEE ALSO
+.Xr sched_ule 4 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+scheduler has been present, in various forms, since the inception of
+.Bx .
+.Sh BUGS
+While a highly robust and time-tested scheduler,
+.Nm
+lacks specific knowledge of how to schedule advantageously in non-symmetric
+processor configurations, such as hyper-threading.
diff --git a/share/man/man4/sched_ule.4 b/share/man/man4/sched_ule.4
new file mode 100644
index 0000000..c5ce58b
--- /dev/null
+++ b/share/man/man4/sched_ule.4
@@ -0,0 +1,73 @@
+.\" 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 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$
+.\"
+.Dd January 21, 2008
+.Os
+.Dt SCHED_ULE 4
+.Sh NAME
+.Nm sched_ule
+.Nd ULE scheduler
+.Sh SYNOPSIS
+.Cd "options SCHED_ULE"
+.Sh DESCRIPTION
+The
+.Nm
+scheduler
+provides a number of advanced scheduler
+features not present in
+.Xr sched_4bsd 4 ,
+the traditional system scheduler.
+These features address SMP and interactivity and include:
+.Pp
+.Bl -bullet -compact -offset indent
+.It
+Thread CPU affinity.
+.It
+CPU topology awareness, including for hyper-threading.
+.It
+Per-CPU run queues.
+.It
+Interactivity heuristics that detect interactive applications and schedules
+them preferentially under high load.
+.El
+.Pp
+The following sysctls are relevant to the operation of
+.Nm :
+.Bl -tag -width indent
+.It Va kern.sched.name
+This read-only sysctl reports the name of the active scheduler.
+.El
+.Sh SEE ALSO
+.Xr sched_4bsd 4 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+scheduler first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+.An Jeff Roberson
+.Aq jeff@FreeBSD.org
diff --git a/share/man/man4/screen.4 b/share/man/man4/screen.4
new file mode 100644
index 0000000..2f76f59
--- /dev/null
+++ b/share/man/man4/screen.4
@@ -0,0 +1,242 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 6, 2000
+.Dt SCREEN 4
+.Os
+.Sh NAME
+.Nm screen
+.Nd pc display interface
+.Sh DESCRIPTION
+Access to the
+.Em virtual consoles
+are obtained through the device files
+.Pa /dev/ttyv0
+-
+.Pa /dev/ttyvb .
+Each of these files correspond to a separate
+virtual console.
+All virtual console devices can be open at once, but only one is
+active at a time.
+The active virtual console "owns" the keyboard and
+display screen.
+.Pp
+Output to a virtual console that not currently is on the display is
+saved in a buffer that holds a "screenfull" (normally 25) lines.
+Any output written to
+.Pa /dev/console
+(the original console device) is echoed to
+.Pa /dev/ttyv0 .
+.Pp
+To switch between the virtual consoles one uses the sequence
+.Em ALT+Fn ,
+which means hold down ALT and press one of the function keys.
+The
+virtual console with the same number as the function key is then
+selected as the current virtual console, and given exclusive use of
+the keyboard and display.
+This switch sequence can be changed via
+the keyboard mapping ioctl call (see
+.Xr keyboard 4 ) .
+.Pp
+The console allows entering values that are not physically
+present on the keyboard via a special keysequence.
+To use this facility press and hold down ALT,
+then enter a decimal number from 0-255 via the numerical keypad, then
+release ALT.
+The entered value is then used as the ASCII value for one
+character.
+This way it is possible to enter any ASCII value.
+The console driver also includes a history function.
+It is activated by
+pressing the scroll-lock key.
+This holds the display, and enables the cursor
+arrows for scrolling up and down through the last scrolled out lines.
+.Pp
+The console understands a subset of the ANSI x3.64 character
+sequences.
+For compatibility with the old pccons, the PC3 character
+sequences are also supported.
+.Pp
+.Bd -literal
+ANSI Seq Function Termcap entry
+======= ======= ===================================== ==============
+
+-- E7 Save cursor position sc
+
+-- E8 Restore saved cursor position rc
+
+-- Ec Reset rs
+
+-- EM move cursor up 1 line, --
+ scroll if at top
+
+CUU E[nA move cursor up n lines up/UP (ku)
+
+CUD E[nB move cursor down n lines do/DO (kd)
+
+CUF E[nC move cursor right n characters nd/RI (kr)
+
+CUB E[nD move cursor left n characters --/LE (kl)
+
+HPA E[n` move cursor to character position n ch
+
+HPR E[na move cursor right n characters --
+
+VPA E[nd move cursor to line n cv
+
+VPR E[ne move cursor down n lines --
+
+CPL E[nF move cursor to start of line, -- (@7)
+ n lines up
+
+CNL E[nE move cursor to start of line, nw
+ n lines down
+
+CUP E[y;xH Move cursor to x, y cm
+
+HVP E[y;xf Move cursor to x, y --
+
+CBT E[nZ Move cursor back n tab stops bt (kB)
+
+IL E[nL Insert n blank lines al/AL
+
+ICH E[n@ Insert n blank characters ic/IC
+
+DL E[nM Delete n lines dl/DL
+
+DCH E[nP Delete n characters dc/DC
+
+ED E[nJ Erase part or all of display: cd
+ n=0 from cursor to end of display,
+ n=1 from begin of display to cursor,
+ n=2 entire display.
+
+EL E[nK Erase part or all of line: ce
+ n=0 from cursor to end of line,
+ n=1 from begin of line to cursor,
+ n=2 entire line.
+
+ECH E[nX Erase n characters ec
+
+SU E[nS Scroll display n lines up (forward) sf/SF
+
+SD E[nT Scroll display n lines down (reverse) sr/SR
+
+
+SGR E[nm Set character attributes: --
+ n= 0 normal attribute (all off)
+ n= 1 bold (highlight)
+ n= 4 underscore (if supported by HW)
+ n= 5 blink (if supported by HW)
+ n= 7 reverse
+ n= 22 remove bold
+ n= 24 remove underscore
+ n= 25 remove blink
+ n= 27 remove reverse
+ n= 3X set ANSI foreground color
+ (see table)
+ n= 4X set ANSI background color
+ (see table)
+
+ X=0 black X=1 red
+ X=2 green X=3 brown
+ X=4 blue X=5 magenta
+ X=6 cyan X=7 light grey
+ X=9 reset to the normal color
+
+-- E[s Save cursor position sc
+
+-- E[u Restore saved cursor position rc
+
+-- E[x Reset normal colors and attributes --
+ to their default values
+
+-- E[nz Switch to virtual console n --
+
+-- E[1;nx Set normal ANSI background color --
+ to n (see table)
+
+-- E[2;nx Set normal ANSI foreground color --
+ to n (see table)
+
+-- E[3;nx Set normal video attribute directly --
+ to n (n from 0 to 255)
+
+-- E[5;nx Set normal ANSI reverse background --
+ color to n (see table)
+
+-- E[6;nx Set normal ANSI reverse foreground --
+ color to n (see table)
+
+ n= 0 black n= 8 dark grey
+ n= 1 red n= 9 light red
+ n= 2 green n=10 light green
+ n= 3 brown n=11 yellow
+ n= 4 blue n=12 light blue
+ n= 5 magenta n=13 light magenta
+ n= 6 cyan n=14 light cyan
+ n= 7 light grey n=15 white
+
+-- E[7;nx Set normal reverse video attribute --
+ directly to n (n from 0 to 255)
+
+-- E[=p;dB Set bell pitch (p) and duration (d), --
+ pitch is in units of 840 nS,
+ duration is units of 0,1 S.
+
+-- E[=tC Set global cursor type (see table) --
+
+ t=0 normal non-blinking
+ t=1 normal blinking
+ t=2 custom non-blinking
+ t=3 custom blinking
+ t=4 reset cursor (resets custom
+ cursor shape and sets current
+ cursor type to 0)
+ t=5 hide cursor
+
+-- E[=s;eC Set custom cursor shape, where --
+ s is the starting and e is the ending
+ scanlines of the cursor.
+
+-- E[=s;e;dC --
+ Same as above, except d specifies the
+ direction. If 0, scanlines are counted
+ from the top to the bottom. If 1, from
+ the bottom to the top.
+
+-- E[=tS Set local cursor type (see table) --
+
+ t=0 normal (global) ve
+ t=1 invisible vi
+ t=2 very visible vs
+
+-- E[=nA Set the border color to n --
+ (see table) (if supported by HW)
+
+-- E[=nF Set normal foreground color to n --
+ (see table)
+
+-- E[=nG Set normal background color to n --
+ (see table)
+
+-- E[=nH Set normal reverse foreground color --
+ to n (see table)
+
+-- E[=nI Set normal reverse background color --
+ to n (see table)
+
+ n= 0 black n= 8 dark grey
+ n= 1 blue n= 9 light blue
+ n= 2 green n=10 light green
+ n= 3 cyan n=11 light cyan
+ n= 4 red n=12 light red
+ n= 5 magenta n=13 light magenta
+ n= 6 brown n=14 yellow
+ n= 7 light grey n=15 white
+
+note: the first E in the sequences stands for ESC (0x1b)
+.Ed
+.Sh AUTHORS
+.An S\(/oren Schmidt Aq sos@FreeBSD.org
diff --git a/share/man/man4/scsi.4 b/share/man/man4/scsi.4
new file mode 100644
index 0000000..4849322
--- /dev/null
+++ b/share/man/man4/scsi.4
@@ -0,0 +1,340 @@
+.\" Copyright (c) 1996
+.\" Julian Elischer <julian@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$
+.Dd October 15, 1998
+.Dt SCSI 4
+.Os
+.Sh NAME
+.Nm SCSI ,
+.Nm CAM
+.Nd CAM SCSI subsystem
+.Sh SYNOPSIS
+.Cd "device scbus"
+.Cd "device cd"
+.Cd "device ch"
+.Cd "device da"
+.Cd "device pass"
+.Cd "device pt"
+.Cd "device sa"
+.Cd "options CAMDEBUG"
+.Cd "options CAM_DEBUG_BUS=-1"
+.Cd "options CAM_DEBUG_TARGET=-1"
+.Cd "options CAM_DEBUG_LUN=-1"
+.Cd "options CAM_DEBUG_FLAGS=CAM_DEBUG_INFO|CAM_DEBUG_CDB"
+.Cd "options CAM_MAX_HIGHPOWER=4"
+.Cd "options SCSI_NO_SENSE_STRINGS"
+.Cd "options SCSI_NO_OP_STRINGS"
+.Cd "options SCSI_DELAY=8000"
+.Sh DESCRIPTION
+The CAM
+.Tn SCSI
+subsystem provides a uniform and modular system for the implementation
+of drivers to control various
+.Tn SCSI
+devices, and to utilize different
+.Tn SCSI
+host adapters through host adapter drivers.
+When the system probes the
+.Tn SCSI
+busses, it attaches any devices it finds to the appropriate
+drivers.
+The
+.Xr pass 4
+driver, if it is configured in the kernel, will attach to all
+.Tn SCSI
+devices.
+.Sh KERNEL CONFIGURATION
+There are a number of generic kernel configuration options for the
+CAM
+.Tn SCSI
+subsystem:
+.Bl -tag -width SCSI_NO_SENSE_STRINGS
+.It Dv CAMDEBUG
+This option enables the CAM debugging printf code.
+This will not actually
+cause any debugging information to be printed out when included by itself.
+Enabling printouts requires additional configuration.
+See below for details.
+.It Dv "CAM_MAX_HIGHPOWER=4"
+This sets the maximum allowable number of concurrent "high power" commands.
+A "high power" command is a command that takes more electrical power than
+most to complete.
+An example of this (and the only command currently
+tagged as "high power") is the
+.Tn SCSI
+START UNIT command.
+Starting a SCSI disk often takes significantly more
+electrical power than normal operation of the disk.
+This option allows the
+user to specify how many concurrent high power commands may be outstanding
+without overloading the power supply on his computer.
+.It Dv SCSI_NO_SENSE_STRINGS
+This eliminates text descriptions of each
+.Tn SCSI
+Additional Sense Code and Additional Sense Code Qualifier pair.
+Since this
+is a fairly large text database, eliminating it reduces the size of the
+kernel somewhat.
+This is primarily necessary for boot floppies and other
+low disk space or low memory space environments.
+In most cases, though,
+this should be enabled, since it speeds the interpretation of
+.Tn SCSI
+error messages.
+Do not let the "kernel bloat" zealots get to you -- leave
+the sense descriptions in your kernel!
+.It Dv SCSI_NO_OP_STRINGS
+This disables text descriptions of each
+.Tn SCSI
+opcode.
+This option, like the sense string option above, is primarily
+useful for environments like a boot floppy where kernel size is critical.
+Enabling this option for normal use is not recommended, since it slows
+debugging of
+.Tn SCSI
+problems.
+.It Dv SCSI_DELAY=8000
+This is the
+.Tn SCSI
+"bus settle delay."
+In CAM, it is specified in
+.Em milliseconds ,
+not seconds like the old
+.Tn SCSI
+layer used to do.
+When the kernel boots, it sends a bus reset to each
+.Tn SCSI
+bus to tell each device to reset itself to a default set of transfer
+negotiations and other settings.
+Most
+.Tn SCSI
+devices need some amount of time to recover from a bus reset.
+Newer disks
+may need as little as 100ms, while old, slow devices may need much longer.
+If the
+.Dv SCSI_DELAY
+is not specified, it defaults to 2 seconds.
+The minimum allowable value for
+.Dv SCSI_DELAY
+is "100", or 100ms.
+One special case is that if the
+.Dv SCSI_DELAY
+is set to 0, that will be taken to mean the "lowest possible value."
+In that case, the
+.Dv SCSI_DELAY
+will be reset to 100ms.
+.El
+.Pp
+All devices and the SCSI busses support boot time allocation so that
+an upper number of devices and controllers does not need to be configured;
+.Cd "device da0"
+will suffice for any number of disk drivers.
+.Pp
+The devices are either
+.Em wired
+so they appear as a particular device unit or
+.Em counted
+so that they appear as the next available unused unit.
+.Pp
+Units are wired down by setting kernel environment hints.
+This is usually done either interactively from the
+.Xr loader 8 ,
+or automatically via the
+.Pa /boot/device.hints
+file.
+The basic syntax is:
+.Bd -literal -offset indent
+hint.device.unit.property="value"
+.Ed
+.Pp
+Individual
+.Nm
+bus numbers can be wired down to specific controllers with
+a config line similar to the following:
+.Bd -literal -offset indent
+hint.scbus.0.at="ahd1"
+.Ed
+.Pp
+This assigns
+.Nm
+bus number 0 to the
+.Em ahd1
+driver instance.
+For controllers supporting more than one bus, a particular bus can be assigned
+as follows:
+.Bd -literal -offset indent
+hint.scbus.0.at="ahc1"
+hint.scbus.0.bus="1"
+.Ed
+.Pp
+This assigns
+.Nm
+bus 0 to the bus 1 instance on
+.Em ahc0 .
+Peripheral drivers can be wired to a specific bus, target, and lun as so:
+.Bd -literal -offset indent
+hint.da.0.at="scbus0"
+hint.da.0.target="0"
+hint.da.0.unit="0"
+.Ed
+.Pp
+This assigns
+.Em da0
+to target 0, unit (lun) 0 of scbus 0.
+Omitting the target or unit hints will instruct CAM to treat them as wildcards
+and use the first respective counted instances.
+These examples can be combined together to allow a peripheral device to be
+wired to any particular controller, bus, target, and/or unit instance.
+.Pp
+When you have a mixture of wired down and counted devices then the
+counting begins with the first non-wired down unit for a particular
+type.
+That is, if you have a disk wired down as
+.Em "device da1" ,
+then the first non-wired disk shall come on line as
+.Em da2 .
+.Sh ADAPTERS
+The system allows common device drivers to work through many different
+types of adapters.
+The adapters take requests from the upper layers and do
+all IO between the
+.Em SCSI
+bus and the system.
+The maximum size of a transfer is governed by the
+adapter.
+Most adapters can transfer 64KB in a single operation, however
+many can transfer larger amounts.
+.Sh TARGET MODE
+Some adapters support
+.Em target mode
+in which the system is capable of operating as a device, responding to
+operations initiated by another system.
+Target mode is supported for
+some adapters, but is not yet complete for this version of the CAM
+.Tn SCSI
+subsystem.
+.Sh FILES
+see other
+.Nm
+device entries.
+.Sh DIAGNOSTICS
+When the kernel is compiled with options CAMDEBUG, an XPT_DEBUG CCB can be
+used to enable various amounts of tracing information on any
+specific device.
+Devices not being traced will not produce trace information.
+There are currently four debugging flags that may be turned on:
+.Bl -tag -width CAM_DEBUG_SUBTRACE
+.It Dv CAM_DEBUG_INFO
+This debugging flag enables general informational printfs for the device
+or devices in question.
+.It Dv CAM_DEBUG_TRACE
+This debugging flag enables function-level command flow tracing.
+i.e.\&
+kernel printfs will happen at the entrance and exit of various functions.
+.It Dv CAM_DEBUG_SUBTRACE
+This debugging flag enables debugging output internal to various functions.
+.It Dv CAM_DEBUG_CDB
+This debugging flag will cause the kernel to print out all
+.Tn SCSI
+commands sent to a particular device or devices.
+.El
+.Pp
+Some of these flags, most notably
+.Dv CAM_DEBUG_TRACE
+and
+.Dv CAM_DEBUG_SUBTRACE
+will produce kernel printfs in EXTREME numbers,
+and because of that, they are not especially useful.
+There are not many things logged at the
+.Dv CAM_DEBUG_INFO
+level, so it is not especially useful.
+The most useful debugging flag is the
+.Dv CAM_DEBUG_CDB
+flag.
+Users can enable debugging from their kernel config file, by using
+the following kernel config options:
+.Bl -tag -width CAM_DEBUG_TARGET
+.It Dv CAMDEBUG
+This enables CAM debugging.
+Without this option, users will not even be able
+to turn on debugging from userland via
+.Xr camcontrol 8 .
+.It Dv CAM_DEBUG_FLAGS
+This allows the user to set the various debugging flags described above
+in a kernel config file.
+Flags may be ORed together if the user wishes to
+see printfs for multiple debugging levels.
+.It Dv CAM_DEBUG_BUS
+Specify a bus to debug.
+To debug all busses, set this to -1.
+.It Dv CAM_DEBUG_TARGET
+Specify a target to debug.
+To debug all targets, set this to -1.
+.It Dv CAM_DEBUG_LUN
+Specify a lun to debug.
+To debug all luns, set this to -1.
+.El
+.Pp
+When specifying a bus, target or lun to debug, you
+.Em MUST
+specify all three bus/target/lun options above.
+Using wildcards, you
+should be able to enable debugging on most anything.
+.Pp
+Users may also enable debugging printfs on the fly, if the
+.Dv CAMDEBUG
+option is their config file, by using the
+.Xr camcontrol 8
+utility.
+See
+.Xr camcontrol 8
+for details.
+.Sh SEE ALSO
+.Xr aha 4 ,
+.Xr ahb 4 ,
+.Xr ahc 4 ,
+.Xr bt 4 ,
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr pass 4 ,
+.Xr pt 4 ,
+.Xr sa 4 ,
+.Xr xpt 4 ,
+.Xr camcontrol 8
+.Sh HISTORY
+The CAM
+.Tn SCSI
+subsystem first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An -nosplit
+The CAM
+.Tn SCSI
+subsystem was written by
+.An Justin Gibbs
+and
+.An Kenneth Merry .
diff --git a/share/man/man4/sctp.4 b/share/man/man4/sctp.4
new file mode 100644
index 0000000..d5f4d3c
--- /dev/null
+++ b/share/man/man4/sctp.4
@@ -0,0 +1,425 @@
+.\" Copyright (c) 2006, Randall Stewart.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 15, 2006
+.Dt SCTP 4
+.Os
+.Sh NAME
+.Nm sctp
+.Nd Internet Stream Control Transmission Protocol
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In netinet/sctp.h
+.Ft int
+.Fn socket AF_INET SOCK_STREAM IPPROTO_SCTP
+.Ft int
+.Fn socket AF_INET SOCK_SEQPACKET IPPROTO_SCTP
+.Sh DESCRIPTION
+The
+.Tn SCTP
+protocol provides reliable, flow-controlled, two-way
+transmission of data.
+It is a message oriented protocol and can
+support the
+.Dv SOCK_STREAM
+and
+.Dv SOCK_SEQPACKET
+abstractions.
+.Tn SCTP
+uses the standard
+Internet address format and, in addition, provides a per-host
+collection of
+.Dq "port addresses" .
+Thus, each address is composed of an Internet address specifying
+the host and network, with a specific
+.Tn SCTP
+port on the host identifying the peer entity.
+.Pp
+There are two models of programming in SCTP.
+The first uses the
+.Dv SOCK_STREAM
+abstraction.
+In this abstraction sockets utilizing the
+.Tn SCTP
+protocol are either
+.Dq active
+or
+.Dq passive .
+Active sockets initiate connections to passive
+sockets.
+By default,
+.Tn SCTP
+sockets are created active; to create a
+passive socket, the
+.Xr listen 2
+system call must be used after binding the socket with the
+.Xr bind 2
+or
+.Xr sctp_bindx 3
+system calls.
+Only passive sockets may use the
+.Xr accept 2
+call to accept incoming connections.
+Only active sockets may use the
+.Xr connect 2
+call to initiate connections.
+.Pp
+The other abstraction
+.Dv SOCK_SEQPACKET
+provides a
+.Dq connectionless
+mode of operation in that the user may send to an address
+(using any of the valid send calls that carry a
+socket address) and an association will be setup
+implicitly by the underlying
+.Tn SCTP
+transport stack.
+This abstraction is the only one capable of sending data on the
+third leg of the four-way handshake.
+A user must still call
+.Xr listen 2
+to allow the socket to accept connections.
+Calling
+.Xr listen 2
+however does not restrict the user from still initiating
+implicit connections to other peers.
+.Pp
+The
+.Tn SCTP
+protocol directly supports multi-homing.
+So when binding a socket with the
+.Dq wildcard
+address
+.Dv INADDR_ANY ,
+the
+.Tn SCTP
+stack will inform the peer about all of the local addresses
+that are deemed in scope of the peer.
+The peer will then possibly have multiple paths to reach the local host.
+.Pp
+The
+.Tn SCTP
+transport protocol is also multi-streamed.
+Multi-streaming refers to the ability to send sub-ordered flows of
+messages.
+A user performs this by specifying a specific stream in one of the
+extended send calls such as the
+.Xr sctp_send 3
+function call.
+Sending messages on different streams will allow parallel delivery
+of data i.e., a message loss in stream 1 will not block the delivery
+of messages sent in stream 2.
+.Pp
+The
+.Tn SCTP
+transport protocol also provides a unordered service as well.
+The unordered service allows a message to be sent and delivered
+with no regard to the ordering of any other message.
+.Ss Extensions
+The FreeBSD implementation of
+.Tn SCTP
+also supports the following extensions:
+.Bl -hang -width indent
+.It "sctp partial reliability"
+This extension allows one to have message be skipped and
+not delivered based on some user specified parameters.
+.It "sctp dynamic addressing"
+ This extension allows addresses to be added and deleted
+dynammically from an existing association.
+.It "sctp authentication"
+This extension allows the user to authenticate specific
+peer chunks (including data) to validate that the peer
+who sent the message is in fact the peer who setup the
+association.
+A shared key option is also provided for
+so that two stacks can pre-share keys.
+.It "packet drop"
+ Some routers support a special satellite protocol that
+will report losses due to corruption.
+This allows retransmissions without subsequent loss in bandwidth
+utilization.
+.It "stream reset"
+This extension allows a user on either side to reset the
+stream sequence numbers used by any or all streams.
+.El
+.Pp
+.Tn SCTP
+supports a number of socket options which can be set with
+.Xr setsockopt 2
+and tested with
+.Xr getsockopt 2
+or
+.Xr sctp_opt_info 2 :
+.Bl -tag -width ".Dv SCTP_SET_PEER_PRIMARY_ADDR"
+.It Dv SCTP_NODELAY
+Under most circumstances,
+.Tn SCTP
+sends data when it is presented; when outstanding data has not
+yet been acknowledged, it gathers small amounts of output to be
+sent in a single packet once an acknowledgement is received.
+For some clients, such as window systems that send a stream of
+mouse events which receive no replies, this packetization may
+cause significant delays.
+The boolean option
+.Dv SCTP_NODELAY
+defeats this algorithm.
+.It Dv SCTP_RTOINFO
+This option returns specific information about an associations
+.Dq "Retransmission Time Out" .
+It can also be used to change the default values.
+.It Dv SCTP_ASSOCINFO
+This option returns specific information about the requested
+association.
+.It Dv SCTP_INITMSG
+This option allows you to get or set the default sending
+parameters when an association is implicitly setup.
+It allows you to change such things as the maxium number of
+streams allowed inbound and the number of streams requested
+of the peer.
+.It Dv SCTP_AUTOCLOSE
+For the one-to-many model
+.Dv ( SOCK_SEQPACKET )
+associations are setup implicitly.
+This option allows the user to specify a default number of idle
+seconds to allow the association be maintained.
+After the idle timer (where no user message have been sent or have
+been received from the peer) the association will be gracefully
+closed.
+The default for this value is 0, or unlimited (i.e., no automatic
+close).
+.It Dv SCTP_SET_PEER_PRIMARY_ADDR
+The dynamic address extension allows a peer to also request a
+particular address of its be made into the primary address.
+This option allows the caller to make such a request to a peer.
+Note that if the peer does not also support the dynamic address
+extension, this call will fail.
+Note the caller must provide a valid local address that the peer has
+been told about during association setup or dynamically.
+.It Dv SCTP_PRIMARY_ADDR
+This option allows the setting of the primary address
+that the caller wishes to send to.
+The caller provides the address of a peer that is to be made primary.
+.It Dv SCTP_ADAPTATION_LAYER
+The dynamic address extension also allows a user to
+pass a 32 bit opaque value upon association setup.
+This option allows a user to set or get this value.
+.It Dv SCTP_DISABLE_FRAGMENTS
+By default
+.Tn SCTP
+will fragment user messages into multiple pieces that
+will fit on the network and then later, upon reception, reassemble
+the pieces into a single user message.
+If this option is enabled instead, any send that exceeds the path
+maximum transfer unit (P-MTU) will fail and the message will NOT be
+sent.
+.It Dv SCTP_PEER_ADDR_PARAMS
+This option will allow a user to set or get specific
+peer address parameters.
+.It Dv SCTP_DEFAULT_SEND_PARAM
+When a user does not use one of the extended send
+calls (e.g.,
+.Xr sctp_sendmsg 3 )
+a set of default values apply to each send.
+These values include things like the stream number to send
+to as well as the per-protocol id.
+This option lets a caller both get and set these values.
+If the user changes these default values, then these new values will
+be used as the default whenever no information is provided by the
+sender (i.e., the non-extended API is used).
+.It Dv SCTP_EVENTS
+.Tn SCTP
+has non-data events that it can communicate
+to its application.
+By default these are all disabled since they arrive in the data path
+with a special flag
+.Dv MSG_NOTIFICATION
+set upon the received message.
+This option lets a caller
+both get what events are current being received
+as well as set different events that they may be interested
+in receiving.
+.It Dv SCTP_I_WANT_MAPPED_V4_ADDR
+.Tn SCTP
+supports both IPV4 and IPV6.
+An association may span both IPV4 and IPV6 addresses since
+.Tn SCTP
+is multi-homed.
+By default, when opening an IPV6 socket, when
+data arrives on the socket from a peer's
+V4 address the V4 address will be presented with an address family
+of AF_INET.
+If this is undesireable, then this option
+can be enabled which will then convert all V4 addresses
+into mapped V6 representations.
+.It Dv SCTP_MAXSEG
+By default
+.Tn SCTP
+chooses its message fragmentation point
+based upon the smallest P-MTU of the peer.
+This option lets the caller set it to a smaller value.
+Note that while the user can change this value, if the P-MTU
+is smaller than the value set by the user, then the P-MTU
+value will override any user setting.
+.It Dv SCTP_DELAYED_ACK_TIME
+This option lets the user both set and get the
+delayed ack time (in milliseconds) that
+.Tn SCTP
+is using.
+The default is 200 milliseconds.
+.It Dv SCTP_PARTIAL_DELIVERY_POINT
+.Tn SCTP
+at times may need to start delivery of a
+very large message before the entire message has
+arrived.
+By default SCTP waits until the incoming
+message is larger than one fourth of the receive
+buffer.
+This option allows the stacks value
+to be overridden with a smaller value.
+.It Dv SCTP_FRAGMENT_INTERLEAVE
+.Tn SCTP
+at times will start partial delivery (as mentioned above).
+In the normal case successive reads will continue to return
+the rest of the message, blocking if needed, until all of
+that message is read.
+However this means other messages may have arrived and be ready
+for delivery and be blocked behind the message being partially
+delivered.
+If this option is enabled, when a partial delivery
+message has no more data to be received, then a subsequent
+read may return a different message that is ready for delivery.
+By default this option is off since the user must be using the
+extended API's to be able to tell the difference between
+messages (via the stream and stream sequence number).
+.It Dv SCTP_AUTH_CHUNK
+By default only the dynamic addressing chunks are
+authenticated.
+This option lets a user request an
+additional chunk be authenticated as well.
+Note that successive calls to this option will work and continue
+to add more chunks that require authentication.
+Note that this option only effects future associations and
+not existing ones.
+.It Dv SCTP_AUTH_KEY
+This option allows a user to specify a shared
+key that can be later used to authenticate
+a peer.
+.It Dv SCTP_HMAC_IDENT
+This option will let you get or set the list of
+HMAC algorithms used to authenticate peers.
+Note that the HMAC values are in priority order where
+the first HMAC identifier is the most prefered
+and the last is the least prefered.
+.It Dv SCTP_AUTH_ACTIVE_KEY
+This option allows you to make a key active for
+the generation of authentication information.
+Note that the peer must have the same key or else the
+data will be discarded.
+.It Dv SCTP_AUTH_DELETE_KEY
+This option allows you to delete an old key.
+.It Dv SCTP_USE_EXT_RECVINFO
+The sockets api document allows an extended
+send/receive information structure to be used.
+The extended structure includes additional fields
+related to the next message to be received (after the
+current receive completes) if such information is known.
+By default the system will not pass this information.
+This option allows the user to request this information.
+.It Dv SCTP_AUTO_ASCONF
+By default when bound to all address and the system administrator has
+enables automatic dynamic addresses, the
+.Tn SCTP
+stack will automatically generate address changes into add and
+delete requests to any peers by setting this option to
+true.
+This option allows an endpoint to disable that behavior.
+.It Dv SCTP_MAXBURST
+By default
+.Tn SCTP
+implements micro-burst control so that as the congestion window
+opens up no large burst of packets can be generated.
+The default burst limit is four.
+This option lets the user change this value.
+.It Dv SCTP_CONTEXT
+Many sctp extended calls have a context field.
+The context field is a 32 bit opaque value that will be returned in
+send failures.
+This option lets the caller set the default
+context value to use when none is provided by the user.
+.It Dv SCTP_EXPLICIT_EOR
+By default, a single send is a complete message.
+.Tn SCTP
+generates an implied record boundary.
+If this option is enabled, then all sends are part of the same message
+until the user indicates an end of record with the
+special flag
+.Dv SCTP_EOR
+passed in the sctp_sndrcvinfo flags field.
+This effectively makes all sends part of the same message
+until the user specifices differently.
+This means that a caller must NOT change the stream number until
+after the
+.Dv SCTP_EOR
+is passed to
+.Tn SCTP
+else an error will be returned.
+.It Dv SCTP_STATUS
+This option is a read only option that returns
+various status information about the specified association.
+.It Dv SCTP_GET_PEER_ADDR_INFO
+This read only option returns information about a peer
+address.
+.It Dv SCTP_PEER_AUTH_CHUNKS
+This read only option returns a list of the chunks
+the peer requires to be authenticated.
+.It Dv SCTP_LOCAL_AUTH_CHUNKS
+This read only option returns a list of the locally
+required chunks that must be authenticated.
+.It Dv SCTP_RESET_STREAMS
+This socket option is used to cause a stream sequence
+number or all stream sequence numbers to be reset.
+Note that the peer
+.Tn SCTP
+endpoint must also support the stream reset extension
+as well.
+.El
+.Sh SEE ALSO
+.Xr accept 2 ,
+.Xr bind 2 ,
+.Xr connect 2 ,
+.Xr listen 2 ,
+.Xr sctp_bindx 3 ,
+.Xr sctp_connectx 3 ,
+.Xr sctp_opt_info 3 ,
+.Xr sctp_recvmsg 3 ,
+.Xr sctp_sendmsg 3
diff --git a/share/man/man4/sdhci.4 b/share/man/man4/sdhci.4
new file mode 100644
index 0000000..58635ab
--- /dev/null
+++ b/share/man/man4/sdhci.4
@@ -0,0 +1,52 @@
+.\"
+.\" Copyright (c) 2008 Alexander Motin <mav@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. 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 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$
+.\"
+.Dd October 22, 2008
+.Dt SDHCI 4
+.Os
+.Sh NAME
+.Nm sdhci
+.Nd PCI SD Host Controller bridge driver
+.Sh SYNOPSIS
+.Cd device mmc
+.Cd device mmcsd
+.Cd device sdhci
+.Sh DESCRIPTION
+The
+.Nm
+driver supports PCI devices with class 8 and subclass 5 according to
+SD Host Controller Specification.
+Driver supports up to six high speed 4bit MMC/SD slots per controller.
+Driver attaches mmc bus to the respective slot on card insertion and
+detaches it on card removing.
+.Sh SEE ALSO
+.Xr mmc 4 ,
+.Xr mmcsd 4
+.Rs
+.%T "SD Specifications, Part 2, SD Host Controller, Simplified Specification"
+.Re
+.Sh AUTHORS
+.An Alexander Motin Aq mav@FreeBSD.org .
diff --git a/share/man/man4/sem.4 b/share/man/man4/sem.4
new file mode 100644
index 0000000..4a641dc
--- /dev/null
+++ b/share/man/man4/sem.4
@@ -0,0 +1,81 @@
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 11, 2006
+.Dt SEM 4
+.Os
+.Sh NAME
+.Nm sem
+.Nd POSIX semaphores
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options P1003_1B_SEMAPHORES"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+sem_load="YES"
+.Ed
+.Pp
+.Dl "kldload sem"
+.Sh DESCRIPTION
+The
+.Nm
+facility provides system calls used by the standard C library
+.Pq Pa libc
+to implement
+.Tn POSIX
+semaphores.
+This facility offers support for such functions as
+.Fn sem_init
+and
+.Fn sem_wait .
+It is available both as a kernel option for static inclusion and as a
+dynamic kernel module.
+.Sh SEE ALSO
+.Xr sem_destroy 3 ,
+.Xr sem_getvalue 3 ,
+.Xr sem_init 3 ,
+.Xr sem_open 3 ,
+.Xr sem_post 3 ,
+.Xr sem_wait 3 ,
+.Xr config 8 ,
+.Xr kldload 8 ,
+.Xr kldunload 8
+.Sh HISTORY
+The
+.Nm
+facility appeared as a kernel option in
+.Fx 3.0 .
+The
+.Nm
+kernel module appeared in
+.Fx 5.0 .
diff --git a/share/man/man4/ses.4 b/share/man/man4/ses.4
new file mode 100644
index 0000000..4070c89
--- /dev/null
+++ b/share/man/man4/ses.4
@@ -0,0 +1,135 @@
+.\" Copyright (c) 2000
+.\" Matthew Jacob <mjacob@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$
+.\"
+.Dd January 29, 2000
+.Dt SES 4
+.Os
+.Sh NAME
+.Nm ses
+.Nd SCSI Environmental Services driver
+.Sh SYNOPSIS
+.Cd device ses
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for all
+.Tn SCSI
+devices of the environmental services class that are attached to the system
+through a supported
+.Tn SCSI
+Host Adapter, as well as emulated support for SAF-TE (SCSI Accessible
+Fault Tolerant Enclosures).
+The environmental services class generally are enclosure devices that
+provide environmental information such as number of power supplies (and
+state), temperature, device slots, and so on.
+.Pp
+A
+.Tn SCSI
+Host
+adapter must also be separately configured into the system
+before a
+.Tn SCSI
+Environmental Services device can be configured.
+.Sh KERNEL CONFIGURATION
+It is only necessary to explicitly configure one
+.Nm
+device; data structures are dynamically allocated as devices are found
+on the
+.Tn SCSI
+bus.
+.Pp
+A separate option,
+.Va SES_ENABLE_PASSTHROUGH ,
+may be specified to allow the
+.Nm
+driver to perform functions on devices of other classes that claim to
+also support
+.Nm
+functionality.
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+calls apply to
+.Nm
+devices.
+They are defined in the header file
+.In cam/scsi/scsi_ses.h
+(\fIq.v.\fR).
+.Pp
+.Bl -tag -width SESIOC_GETENCSTAT
+.It Dv SESIOC_GETNOBJ
+Used to find out how many
+.Nm
+objects are driven by this particular device instance.
+.It Dv SESIOC_GETOBJMAP
+Read, from the kernel, an array of SES objects which contains
+the object identifier, which subenclosure it is in, and the
+.Nm
+type of the object.
+.It Dv SESIOC_GETENCSTAT
+Get the overall enclosure status.
+.It Dv SESIOC_SETENCSTAT
+Set the overall enclosure status.
+.It Dv SESIOC_GETOBJSTAT
+Get the status of a particular object.
+.It Dv SESIOC_SETOBJSTAT
+Set the status of a particular object.
+.It Dv SESIOC_GETTEXT
+Get the associated help text for an object (not yet implemented).
+.Nm
+devices often have descriptive text for an object which can tell
+you things like location (e.g, "left power supply").
+.It Dv SESIOC_INIT
+Initialize the enclosure.
+.El
+.Sh EXAMPLE USAGE
+The files contained in
+.In usr/share/examples/ses
+show simple mechanisms for how to use these interfaces, as well as a
+very stupid simple monitoring daemon.
+.Sh FILES
+.Bl -tag -width /dev/rsdXXXXX -compact
+.It Pa /dev/ses Ns Ar N
+The
+.Em Nth
+.Nm SES
+device.
+.El
+.Sh DIAGNOSTICS
+When the kernel is configured with
+.Tn DEBUG
+enabled, the first open to an SES device will spit out overall enclosure
+parameters to the console.
+.Sh HISTORY
+The
+.Nm
+driver was written for the
+.Tn CAM
+.Tn SCSI
+subsystem by Matthew Jacob.
+This is a functional equivalent of a similar
+driver available in Solaris, Release 7.
diff --git a/share/man/man4/sf.4 b/share/man/man4/sf.4
new file mode 100644
index 0000000..520e4ae
--- /dev/null
+++ b/share/man/man4/sf.4
@@ -0,0 +1,211 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd January 21, 2008
+.Dt SF 4
+.Os
+.Sh NAME
+.Nm sf
+.Nd "Adaptec AIC-6915"
+.Qq Starfire
+PCI Fast Ethernet adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device sf"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_sf_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Adaptec Duralink Fast Ethernet adapters
+based on the Adaptec AIC-6915 "Starfire" chipset.
+.Pp
+The AIC-6915 is a bus master controller with an MII interface.
+It
+supports high and low priority transmit and receive queues, TCP/IP
+checksum offload, multiple DMA descriptor formats and both polling
+and producer/consumer DMA models.
+The AIC-6915 receive filtering
+options include a 16 entry perfect filter, a 512-bit hash table
+for multicast addresses, a 512-bit hash table for priority address
+matching and VLAN filtering.
+An external MII-compliant transceiver
+is required for media interfacing.
+.Pp
+Multiport adapters consist of several AIC-6915 controllers connected
+via a PCI to PCI bridge.
+Each controller is treated as a separate
+interface by the
+.Nm
+driver.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+Adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+ANA-62011 64-bit single port 10/100baseTX adapter
+.It
+ANA-62022 64-bit dual port 10/100baseTX adapter
+.It
+ANA-62044 64-bit quad port 10/100baseTX adapter
+.It
+ANA-69011 32-bit single port 10/100baseTX adapter
+.It
+ANA-62020 64-bit single port 100baseFX adapter
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va dev.sf.%d.int_mod
+Maximum amount of time to delay interrupt processing in units of
+102.4us.
+The accepted range is 0 to 31, the default value is 1 (102.4us).
+Value 0 completely disables the interrupt moderation.
+The interface does not need to be brought down and up again before
+a change takes effect.
+.It Va dev.sf.%d.stats
+Display lots of useful MAC counters maintained in the driver.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "sf%d: couldn't map memory"
+A fatal initialization error has occurred.
+This may
+happen if the PCI BIOS not configured the device, which may be because
+the BIOS has been configured for a "Plug and Play" operating system.
+The "Plug and Play OS" setting in the BIOS should be set to "no" or
+"off" in order for PCI devices to work properly with
+.Fx .
+.It "sf%d: couldn't map ports"
+A fatal initialization error has occurred.
+This may
+happen if the PCI BIOS not configured the device, which may be because
+the BIOS has been configured for a "Plug and Play" operating system.
+The "Plug and Play OS" setting in the BIOS should be set to "no" or
+"off" in order for PCI devices to work properly with
+.Fx .
+.It "sf%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "sf%d: no memory for softc struct!"
+The driver failed to allocate memory for per-device instance information
+during initialization.
+.It "sf%d: failed to enable I/O ports/memory mapping!"
+The driver failed to initialize PCI I/O port or shared memory access.
+This might happen if the card is not in a bus-master slot.
+.It "sf%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Rs
+.%T The Adaptec AIC-6915 Programmer's Manual
+.%O http://download.adaptec.com/pdfs/user_guides/aic6915_pg.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
diff --git a/share/man/man4/si.4 b/share/man/man4/si.4
new file mode 100644
index 0000000..65176bd
--- /dev/null
+++ b/share/man/man4/si.4
@@ -0,0 +1,181 @@
+.\" $FreeBSD$
+.Dd September 16, 1995
+.Os
+.Dt SI 4
+.Sh NAME
+.Nm si
+.Nd "driver for Specialix International SI/XIO or SX intelligent serial card"
+.Sh SYNOPSIS
+.Cd "device si"
+.Pp
+For ISA host cards put the following lines in
+.Pa /boot/device.hints :
+.Cd hint.si.0.at="isa"
+.Cd hint.si.0.maddr="0xd0000"
+.Cd hint.si.0.irq="12"
+.Sh DESCRIPTION
+The Specialix SI/XIO and SX hardware makes up an 8 to 32 port RS-232 serial
+multiplexor.
+.Pp
+The system uses two components: a "Host adapter", which is plugged into
+an ISA, EISA or PCI slot and provides intelligence and buffering/processing
+capabilities, as well as an external bus in the form of a 37 pin cable.
+.Pp
+On this cable, "modules" are connected.
+The "SI" module comes in a 4 and 8 port version.
+The "XIO" and "SX" modules come only in
+8 port versions.
+.Pp
+The host adapter polls and transfers data between the modules and the rest
+of the machine.
+The Host adapter provides a 256 byte transmit and 256 byte
+receive FIFO for each of the 32 ports that it can maintain.
+.Pp
+The XIO modules can operate each of their 8 ports at 115,200 baud.
+The SI version can run at 57,600 baud.
+The SX modules can operate each of their
+8 ports at up to 921,600 baud.
+.Pp
+SX modules are only supported when connected to an SX host card.
+SI or
+XIO modules are supported on any host card.
+.Pp
+The host adapter uses a shared memory block in the traditional ISA bus
+"hole" between 0xA0000 and 0xEFFFF.
+The adapter can be configured outside
+range, but requires the memory range to be explicitly non-cached.
+The driver does not yet support this mode of operation.
+.Pp
+SX ISA Host cards have an 8/16 bit mode switch or jumper on them.
+This switch
+or jumper MUST be set for 8 bit mode.
+.Pp
+The ISA adapters can use Irq's 11, 12 or 15 (and 9 and 10 in the case of
+SX host cards).
+.Pp
+The si device driver may have some of its configuration settings changed
+at run-time with the
+.Xr sicontrol 8
+utility.
+.Pp
+The si device driver also responds to the
+.Xr comcontrol 8
+utility for configuring drain-on-close timeouts.
+.Pp
+The driver also defines 3 sysctl variables that can be manipulated:
+machdep.si_debug sets the debug level for the whole driver.
+It depends
+on the driver being compiled with SI_DEBUG.
+machdep.si_pollrate
+sets how often per second the driver polls for lost interrupts.
+machdep.si_realpoll sets whether or not the card will treat the
+poll intervals as if they were interrupts.
+.Pp
+An open on a /dev device node controlled by the si driver obeys the same
+semantics as the
+.Xr sio 4
+driver.
+It fully supports the usual semantics of the cua ports, and the
+"initial termios" and "locked termios" settings.
+In summary, an open on a
+tty port will block until DCD is raised, unless O_NONBLOCK is specified.
+CLOCAL is honored.
+An open on a cua port will always succeed, but DCD
+transitions will be honored after DCD rises for the first time.
+.Pp
+Up to four SI/XIO host cards may be controlled by the si driver.
+Due to the lack of available interrupts, only 3 ISA SI/XIO host cards can be
+used at once.
+.Pp
+The lowest 5 bits of the minor device number are used to select the port
+number on the module cluster.
+The next 2 bits select which of 4 host adapter
+cards.
+This allows a maximum of 128 ports on this driver.
+.Pp
+Bit 7 is used to differentiate a tty/dialin port (bit 7=0) and a
+cua/callout port (bit 7=1).
+.Pp
+Bit 8 through 15 (on
+.Fx )
+are unavailable as they are a shadow of the
+major device number.
+.Pp
+If bit 16 is a 1, the device node is referring to the "initial state" device.
+This "initial state" is used to prime the
+.Xr termios 4
+settings of the device when it is initially opened.
+If bit 17 is a 1, the device node is referring to the "locked state" device.
+The "locked state" is used to prevent the
+.Xr termios 4
+settings from being changed.
+.Pp
+To manipulate the initial/locked settings, the
+.Xr stty 1
+command is useful.
+When setting the "locked" variables, enabling the mode
+on the lock device will lock the termios mode, while disabling the mode will
+unlock it.
+.Sh FILES
+.Bl -tag -width /dev/si_control -compact
+.It Pa /dev/si_control
+global driver control file for
+.Xr sicontrol 8
+.It Pa /dev/ttyA*
+terminal/dialin ports
+.It Pa /dev/cuaA*
+dialout ports
+.It Pa /dev/ttyiA*
+initial termios state devices
+.It Pa /dev/ttylA*
+locked termios state devices
+.It Pa /dev/cuaiA*
+initial termios state devices for dialout ports
+.It Pa /dev/cualA*
+locked termios state devices for dialout ports
+.El
+.Sh SEE ALSO
+.Xr stty 1 ,
+.Xr sio 4 ,
+.Xr termios 4 ,
+.Xr tty 4 ,
+.Xr comcontrol 8 ,
+.Xr sicontrol 8
+.Sh HISTORY
+This driver is loosely based on driver code originating at Specialix, which
+was ported to run on BSDI by
+.An Andy Rutter Aq andy@specialix.co.uk .
+The System V driver source is/was available by ftp from
+.Sy ftp.specialix.co.uk .
+.Pp
+This driver is not supported by Specialix International.
+.Sh AUTHORS
+.An -nosplit
+.An Peter Wemm Aq peter@netplex.com.au
+obtained the code from
+.An Andy Rutter
+and ported it to
+.Fx
+and threw the man page together.
+.An Bruce Evans Aq bde@zeta.org.au
+provided a large amount of assistance during porting.
+.An Nick Sayer Aq nick@specialix.com
+wrote the EISA, PCI and SX portions.
+.Sh BUGS
+The interrupt tuning rate is not believed to be optimal at this time for
+maximum efficiency.
+.Pp
+Polled mode (a feature of standard Specialix drivers) is not implemented,
+but it can be approximated by turning on machdep.si_realpoll.
+The poll
+frequency is set by machdep.si_pollrate (in units of 1/100th of a second).
+.Pp
+The driver does not yet support baud rates higher than 115,200 on SX
+modules.
+.Pp
+Operation outside the traditional ISA "hole" is not yet supported, although it
+should work if the test is removed from the probe routine.
+.Pp
+Multiple host cards are supported although combinations of hosts on
+different bus types have not been tested - device numbering is known to
+be a problem and may lead to unexpected results.
diff --git a/share/man/man4/sio.4 b/share/man/man4/sio.4
new file mode 100644
index 0000000..07e076d
--- /dev/null
+++ b/share/man/man4/sio.4
@@ -0,0 +1,414 @@
+.\" Copyright (c) 1990, 1991 The Regents of the University of California.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to Berkeley by
+.\" the Systems Programming Group of the University of Utah Computer
+.\" Science Department.
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" from: @(#)dca.4 5.2 (Berkeley) 3/27/91
+.\" from: com.4,v 1.1 1993/08/06 11:19:07 cgd Exp
+.\" $FreeBSD$
+.\"
+.Dd August 30, 2006
+.Dt SIO 4
+.Os
+.Sh NAME
+.Nm sio
+.Nd "fast interrupt driven asynchronous serial communications interface"
+.Sh SYNOPSIS
+For standard ISA ports:
+.Bd -ragged -offset indent -compact
+.Cd "device sio"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.sio.0.at="isa"
+.Cd hint.sio.0.port="0x3f8"
+.Cd hint.sio.0.flags="0x10"
+.Cd hint.sio.0.irq="4"
+.Cd hint.sio.1.at="isa"
+.Cd hint.sio.1.port="0x2f8"
+.Cd hint.sio.1.flags="0x0"
+.Cd hint.sio.1.irq="3"
+.Ed
+.Pp
+For AST compatible multiport cards with 4 ports:
+.Bd -ragged -offset indent -compact
+.Cd "options COM_MULTIPORT"
+.Cd "device sio"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.sio.4.at="isa"
+.Cd hint.sio.4.port="0x2a0"
+.Cd hint.sio.4.flags="0x701"
+.Cd hint.sio.5.at="isa"
+.Cd hint.sio.5.port="0x2a8"
+.Cd hint.sio.5.flags="0x701"
+.Cd hint.sio.6.at="isa"
+.Cd hint.sio.6.port="0x2b0"
+.Cd hint.sio.6.flags="0x701"
+.Cd hint.sio.7.at="isa"
+.Cd hint.sio.7.port="0x2b8"
+.Cd hint.sio.7.flags="0x701"
+.Cd hint.sio.7.irq="12"
+.Ed
+.Pp
+For Boca Board compatible multiport cards with 8 ports:
+.Bd -ragged -offset indent -compact
+.Cd "options COM_MULTIPORT"
+.Cd "device sio"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.sio.4.at="isa"
+.Cd hint.sio.4.port="0x100"
+.Cd hint.sio.4.flags="0xb05"
+.Cd "..."
+.Cd hint.sio.11.at="isa"
+.Cd hint.sio.11.port="0x138"
+.Cd hint.sio.11.flags="0xb05"
+.Cd hint.sio.11.irq="12"
+.Ed
+.Pp
+For Netmos Nm9845 multiport cards with 6 ports:
+.Bd -ragged -offset indent -compact
+.Cd "options COM_MULTIPORT"
+.Cd "device sio"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.sio.4.at="isa"
+.Cd hint.sio.4.port="0xb000"
+.Cd hint.sio.4.flags="0x901"
+.Cd hint.sio.5.at="isa"
+.Cd hint.sio.5.port="0xb400"
+.Cd hint.sio.5.flags="0x901"
+.Cd hint.sio.6.at="isa"
+.Cd hint.sio.6.port="0xb800"
+.Cd hint.sio.6.flags="0x901"
+.Cd hint.sio.7.at="isa"
+.Cd hint.sio.7.port="0xbc00"
+.Cd hint.sio.7.flags="0x901"
+.Cd hint.sio.8.at="isa"
+.Cd hint.sio.8.port="0xc000"
+.Cd hint.sio.8.flags="0x901"
+.Cd hint.sio.9.at="isa"
+.Cd hint.sio.9.port="0xac00"
+.Cd hint.sio.9.flags="0x901"
+.Cd hint.sio.9.irq="12"
+.Ed
+.Pp
+For Hayes ESP cards:
+.Bd -ragged -offset indent -compact
+.Cd "options COM_ESP"
+.Cd "device sio"
+.Cd "..."
+.Ed
+.Pp
+For single port PCI and PCCARD cards:
+.Bd -ragged -offset indent -compact
+.Cd "device sio"
+.Pp
+No lines are required in
+.Pa /boot/device.hints
+for these cards.
+.Ed
+.Pp
+For dual port PCI cards that share an interrupt:
+.Bd -ragged -offset indent -compact
+.Cd "device sio"
+.Cd "options COM_MULTIPORT"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.sio.2.flags="0x201"
+.Cd hint.sio.3.flags="0x201"
+.Ed
+.Pp
+Meaning of
+.Ar flags :
+.Bl -tag -offset indent -compact -width 0x000000
+.It 0x00001
+shared IRQs
+.It 0x00002
+disable FIFO
+.It 0x00004
+no AST/4 compatible IRQ control register
+.It 0x00008
+recover sooner from lost output interrupts
+.It 0x00010
+device is potential system console
+.It 0x00020
+device is forced to become system console
+.It 0x00040
+device is reserved for low-level IO (e.g.\& for remote kernel debugging)
+.It 0x00080
+use this port for remote kernel debugging
+.It 0x0 Ns Em ?? Ns 00
+minor number of master port
+.It 0x10000
+PPS timestamping on CTS instead of DCD
+.It 0x20000
+device is assumed to use a 16650A-type (extended FIFO) chip
+.El
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for NS8250-, NS16450-, NS16550 and NS16550A-based
+.Tn EIA
+.Tn RS-232C
+.Pf ( Tn CCITT
+.Tn V.24 )
+communications interfaces.
+The NS8250 and NS16450 have single character
+buffers, the NS16550A has 16 character FIFO input and output buffers.
+.Pp
+Input and output for each line may set to one of following baud rates;
+50, 75, 110, 134.5, 150, 300, 600, 1200, 1800, 2400, 4800, 9600,
+19200, 28800, 38400, 57600, or 115200.
+Your hardware may limit your baud rate choices.
+.Pp
+The driver supports `multiport' cards.
+Multiport cards are those that have one or more groups of ports
+that share an Interrupt Request (IRQ) line per group.
+Shared IRQs on different cards are not supported.
+Frequently 4 ports share 1 IRQ; some 8 port cards have 2 groups of 4 ports,
+thus using 2 IRQs.
+Some cards allow the first 2 serial ports to have separate IRQs per port
+(as per DOS PC standard).
+.Pp
+Some cards have an IRQ control register for each group.
+Some cards require special initialization related to such registers.
+Only AST/4 compatible IRQ control registers are supported.
+Some cards have an IRQ status register for each group.
+The driver does not require or use such registers yet.
+To work, the control and status registers for a group, if any,
+must be mapped to the scratch register (register 7)
+of a port in the group.
+Such a port is called a
+.Em master
+port.
+.Pp
+The driver supports controller based PCI modems.
+The 3Com FaxModem PCI and the Advantec 56k Voice Messaging PCI
+FaxModem are the only cards supported.
+WinModems, softmodems, hfc modems and any other modems that are not
+controller based are not supported.
+.Pp
+The
+.Em flags
+keyword may be used on each
+.Em device sio
+line in the kernel configuration file
+to disable the FIFO on 16550A UARTs
+(see the synopsis).
+Disabling the FIFO should rarely be necessary.
+.Pp
+The
+.Em flags
+keyword
+.Em must
+be used for all ports that are part of an IRQ sharing group.
+One bit specifies IRQ sharing; another bit specifies whether the port does
+.Em not
+require AST/4 compatible initialization.
+The minor number of the device corresponding a master port
+for the group is encoded as a bitfield in the high byte.
+The same master port must be specified for all ports in a group.
+.Pp
+The
+.Em irq
+specification must be given for master ports
+and for ports that are not part of an IRQ sharing group,
+and not for other ports.
+.Pp
+In the synopsis,
+.Em flags 0x701
+means that the 8th port (sio7) is the master
+port, and that the port is on a multiport card with shared IRQs
+and an AST/4 compatible IRQ control register.
+.Pp
+.Em flags 0xb05
+means that the 12th port (sio11) is the master
+port, and that the port is on a multiport card with shared IRQs
+and no special IRQ control register.
+.Pp
+Which port is the master port depends on the card type.
+Consult the hardware documentation of your card.
+Since IRQ status registers are never used,
+and IRQ control registers are only used for AST/4 compatible cards,
+and some cards map the control/status registers to all ports in a group,
+any port in a group will sometimes do for the master port.
+Choose a port containing an IRQ status register for forwards compatibility,
+and the highest possible port for consistency.
+.Pp
+Serial ports controlled by the
+.Nm
+driver can be used for both `callin' and `callout'.
+For each port there is a callin device and a callout device.
+The minor number of the callout device is 128 higher
+than that of the corresponding callin port.
+The callin device is general purpose.
+Processes opening it normally wait for carrier
+and for the callout device to become inactive.
+The callout device is used to steal the port from
+processes waiting for carrier on the callin device.
+Processes opening it do not wait for carrier
+and put any processes waiting for carrier on the callin device into
+a deeper sleep so that they do not conflict with the callout session.
+The callout device is abused for handling programs that are supposed
+to work on general ports and need to open the port without waiting
+but are too stupid to do so.
+.Pp
+The
+.Nm
+driver also supports an initial-state and a lock-state control
+device for each of the callin and the callout "data" devices.
+The termios settings of a data device are copied
+from those of the corresponding initial-state device
+on first opens and are not inherited from previous opens.
+Use
+.Xr stty 1
+in the normal way on the initial-state devices to program
+initial termios states suitable for your setup.
+.Pp
+The lock termios state acts as flags to disable changing
+the termios state.
+E.g., to lock a flag variable such as CRTSCTS, use
+.Em stty crtscts
+on the lock-state device.
+Speeds and special characters
+may be locked by setting the corresponding value in the lock-state
+device to any nonzero value.
+E.g., to lock a speed to 115200, use
+.Dq Li stty 115200
+on the initial-state device and
+.Dq Li stty 1
+on the lock-state device.
+.Pp
+Correct programs talking to correctly wired external devices
+work with almost arbitrary initial states and almost no locking,
+but other setups may benefit from changing some of the default
+initial state and locking the state.
+In particular, the initial states for non (POSIX) standard flags
+should be set to suit the devices attached and may need to be
+locked to prevent buggy programs from changing them.
+E.g., CRTSCTS should be locked on for devices that support
+RTS/CTS handshaking at all times and off for devices that do not
+support it at all.
+CLOCAL should be locked on for devices that do not support carrier.
+HUPCL may be locked off if you do not
+want to hang up for some reason.
+In general, very bad things happen
+if something is locked to the wrong state, and things should not
+be locked for devices that support more than one setting.
+The CLOCAL flag on callin ports should be locked off for logins
+to avoid certain security holes, but this needs to be done by
+getty if the callin port is used for anything else.
+.Sh FILES
+.Bl -tag -width /dev/ttyd?.init -compact
+.It Pa /dev/ttyd?
+for callin ports
+.It Pa /dev/ttyd?.init
+.It Pa /dev/ttyd?.lock
+corresponding callin initial-state and lock-state devices
+.Pp
+.It Pa /dev/cuad?
+for callout ports
+.It Pa /dev/cuad?.init
+.It Pa /dev/cuad?.lock
+corresponding callout initial-state and lock-state devices
+.El
+.Pp
+.Bl -tag -width /etc/rc.d/serial -compact
+.It Pa /etc/rc.d/serial
+examples of setting the initial-state and lock-state devices
+.El
+.Pp
+The device numbers are made from the set [0-9a-v] so that more than
+10 ports can be supported.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It sio%d: silo overflow.
+Problem in the interrupt handler.
+.El
+.Bl -diag
+.It sio%d: interrupt-level buffer overflow.
+Problem in the bottom half of the driver.
+.El
+.Bl -diag
+.It sio%d: tty-level buffer overflow.
+Problem in the application.
+Input has arrived faster than the given module could process it
+and some has been lost.
+.El
+.\" .Bl -diag
+.\" .It sio%d: reduced fifo trigger level to %d.
+.\" Attempting to avoid further silo overflows.
+.\" .El
+.Sh SEE ALSO
+.Xr stty 1 ,
+.Xr termios 4 ,
+.Xr tty 4 ,
+.Xr comcontrol 8
+.Sh HISTORY
+The
+.Nm
+driver is derived from the
+.Tn HP9000/300
+.Xr dca 4
+driver and is
+.Ud
+.Sh BUGS
+Data loss may occur at very high baud rates on slow systems,
+or with too many ports on any system,
+or on heavily loaded systems when crtscts cannot be used.
+The use of NS16550A's reduces system load and helps to avoid data loss.
+.Pp
+Stay away from plain NS16550's.
+These are early implementations of the chip with non-functional FIFO hardware.
+.Pp
+The constants which define the locations
+of the various serial ports are holdovers from
+.Tn DOS .
+As shown, hex addresses can be and for clarity probably should be used instead.
+.Pp
+Note that on the AST/4 the card's dipswitches should
+.Em not
+be set to use interrupt sharing.
+AST/4-like interrupt sharing is only used when
+.Em multiple
+AST/4 cards are installed in the same system.
+The
+.Nm
+driver does not support more than 1 AST/4 on one IRQ.
+.Pp
+The examples in the synopsis are too vendor-specific.
diff --git a/share/man/man4/sis.4 b/share/man/man4/sis.4
new file mode 100644
index 0000000..a912941
--- /dev/null
+++ b/share/man/man4/sis.4
@@ -0,0 +1,211 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ee.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd October 28, 2006
+.Dt SIS 4
+.Os
+.Sh NAME
+.Nm sis
+.Nd "SiS 900, SiS 7016 and NS DP83815/DP83816 Fast Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device sis"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_sis_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters and embedded
+controllers based on the Silicon Integrated Systems SiS 900
+and SiS 7016 Fast Ethernet controller chips.
+.Pp
+This driver also supports
+adapters based on the National Semiconductor DP83815 (MacPhyter) and DP83816
+PCI Ethernet controller chip.
+.Pp
+The SiS 900 is a 100Mbps Ethernet MAC and MII-compliant transceiver
+in a single package.
+It uses a bus master DMA and a scatter/gather
+descriptor scheme.
+The SiS 7016 is similar to the SiS 900 except
+that it has no internal PHY, requiring instead an external transceiver
+to be attached to its MII interface.
+The SiS 900 and SiS 7016 both have a 128-bit multicast hash filter
+and a single perfect filter entry for the station address.
+.Pp
+The NS DP83815 is also a 100Mbps Ethernet MAC with integrated PHY.
+The NatSemi chip and the SiS 900 share many of the same features and
+a fairly similar programming interface, hence both chips are supported
+by the same driver.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width 10baseTXUTP
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Sq full-duplex
+or
+.Sq half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Sq full-duplex
+or
+.Sq half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width full-duplex
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Silicon Integrated Systems SiS 900 and SiS 7016 based
+Fast Ethernet adapters and embedded controllers, as well as Fast Ethernet
+adapters based on the National Semiconductor DP83815 (MacPhyter) and DP83816
+chips.
+Supported adapters include:
+.Pp
+.Bl -bullet -compact
+.It
+@Nifty FNECHARD IFC USUP-TX
+.It
+MELCO LGY-PCI-TXC
+.It
+Netgear FA311-TX (DP83815)
+.It
+Netgear FA312-TX (DP83815)
+.It
+SiS 630, 635, and 735 motherboard chipsets
+.It
+Soekris Engineering net45xx, net48xx, lan1621, and lan1641
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "sis%d: couldn't map ports/memory"
+A fatal initialization error has occurred.
+.It "sis%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "sis%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (e.g.\& a cable fault).
+.It "sis%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "sis%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.It "sis%d: chip is in D3 power state -- setting to D0"
+This message applies only to adapters which support power
+management.
+Some operating systems place the controller in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The controller loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform a
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr ifconfig 8
+.Rs
+.%T SiS 900 and SiS 7016 datasheets
+.%O http://www.sis.com.tw
+.Re
+.Rs
+.%T NatSemi DP83815 datasheet
+.%O http://www.national.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ee.columbia.edu .
diff --git a/share/man/man4/sk.4 b/share/man/man4/sk.4
new file mode 100644
index 0000000..bc7cd92
--- /dev/null
+++ b/share/man/man4/sk.4
@@ -0,0 +1,265 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd February 14, 2008
+.Dt SK 4
+.Os
+.Sh NAME
+.Nm sk
+.Nd "SysKonnect SK-984x and SK-982x PCI Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device sk"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_sk_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the SysKonnect SK-984x and SK-982x series PCI
+Gigabit Ethernet adapters.
+.Pp
+The SysKonnect adapters consist of two main components: the XaQti Corp.
+XMAC II gigabit MAC and the SysKonnect GEnesis controller ASIC.
+The
+XMAC provides the gigabit MAC and PHY support while the GEnesis
+provides an interface to the PCI bus, DMA support, packet buffering
+and arbitration.
+The GEnesis can control up to two XMACs simultaneously,
+allowing dual-port NIC configurations.
+.Pp
+The SK-982x 1000baseT adapters also include a Broadcom BCM5400 1000baseTX
+PHY which is used in place of the XMAC's internal PHY.
+The Broadcom PHY is connected to the XMAC via its GMII port.
+.Pp
+The
+.Nm
+driver configures dual port SysKonnect adapters such that each XMAC
+is treated as a separate logical network interface.
+Both ports can
+operate independently of each other and can be connected to separate
+networks.
+The SysKonnect driver software currently only uses the
+second port on dual port adapters for failover purposes: if the link
+on the primary port fails, the SysKonnect driver will automatically
+switch traffic onto the second port.
+.Pp
+Also supported is the Marvell Semiconductor 88E1000* gigabit PHY.
+.Pp
+The XaQti XMAC II supports full and half duplex operation with
+autonegotiation.
+The XMAC also supports unlimited frame sizes.
+Support for jumbo frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit jumbo frames.
+Using jumbo frames can greatly improve performance for certain tasks,
+such as file transfers and data streaming.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 1000baseTX
+Set 1000baseTX operation over twisted pair.
+This is only available
+for SK-982x series adapters with 1000baseT ports.
+Both
+.Ar full-duplex
+and
+.Ar half-duplex
+modes are supported.
+.It 1000baseSX
+Set 1000Mbps (Gigabit Ethernet) operation.
+Both
+.Ar full-duplex
+and
+.Ar half-duplex
+modes are supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+The
+.Nm
+driver also supports one special link option for 1000baseTX cards:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It link0
+With 1000baseTX cards, establishing a link between two ports requires
+that one port is configured as master and the other one as slave.
+With autonegotiation,
+the master/slave settings will be chosen automatically.
+However when manually selecting the link state, it is necessary to
+force one side of the link to be a master and the other a slave.
+The
+.Nm
+driver configures the ports as slaves by default.
+Setting the
+.Ar link0
+flag with
+.Xr ifconfig 8
+will set a port as a master instead.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+Adapters supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3C940 single port, 1000baseT adapter
+.It
+3Com 3C2000-T single port, 1000baseT adapter
+.It
+Belkin F5D5005 single port, 1000baseT adapter
+.It
+D-Link DGE-530T single port, 1000baseT adapter
+.It
+Linksys EG1032 single port, 1000baseT adapter
+.It
+SK-9521 SK-NET GE-T single port, 1000baseT adapter
+.It
+SK-9821 SK-NET GE-T single port, 1000baseT adapter
+.It
+SK-9822 SK-NET GE-T dual port, 1000baseT adapter
+.It
+SK-9841 SK-NET GE-LX single port, single mode fiber adapter
+.It
+SK-9842 SK-NET GE-LX dual port, single mode fiber adapter
+.It
+SK-9843 SK-NET GE-SX single port, multimode fiber adapter
+.It
+SK-9844 SK-NET GE-SX dual port, multimode fiber adapter
+.It
+SMC 9452TX single port, 1000baseT adapter
+.El
+.Sh LOADER TUNABLES
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or stored in
+.Xr loader.conf 5 .
+.Bl -tag -width xxxxxx
+.It Va hw.skc.jumbo_disable
+Disable jumbo frame support.
+Systems with less memory can set it to a non-zero value to save memory.
+The default value is 0.
+.El
+.Sh SYSCTL VARIABLES
+The following variable is available as both
+.Xr sysctl 8
+variable and
+.Xr loader 8
+tunable:
+.Bl -tag -width xxxxxx
+.It Va dev.skc.%d.int_mod
+This variable controls interrupt moderation.
+The accepted range is 10 to 10000.
+The default value is 100 microseconds.
+The interface has to be brought down and up again before a change takes effect.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "sk%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "sk%d: couldn't map ports"
+A fatal initialization error has occurred.
+.It "sk%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "sk%d: no memory for softc struct!"
+The driver failed to allocate memory for per-device instance information
+during initialization.
+.It "sk%d: failed to enable memory mapping!"
+The driver failed to initialize PCI shared memory mapping.
+This might
+happen if the card is not in a bus-master slot.
+.It "sk%d: no memory for jumbo buffers!"
+The driver failed to allocate memory for jumbo frames during
+initialization.
+.It "sk%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Rs
+.%T XaQti XMAC II datasheet
+.%O http://www.xaqti.com
+.Re
+.Rs
+.%T SysKonnect GEnesis programming manual
+.%O http://www.syskonnect.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
diff --git a/share/man/man4/sl.4 b/share/man/man4/sl.4
new file mode 100644
index 0000000..a861b4e
--- /dev/null
+++ b/share/man/man4/sl.4
@@ -0,0 +1,82 @@
+.\" $NetBSD: sl.4,v 1.1 1996/08/10 21:26:14 explorer Exp $
+.\"
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)lo.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd August 10, 1996
+.Dt SL 4
+.Os
+.Sh NAME
+.Nm sl
+.Nd slip network interface
+.Sh SYNOPSIS
+.Cd "device sl" Op Ar count
+.Sh DESCRIPTION
+The
+.Nm
+interface allows serial lines to be used as network interfaces using the
+.Em slip
+protocol.
+The
+.Nm
+interface can use Van Jacobson TCP header compression and ICMP filtering.
+This is arranged by using the various link-level flags to the
+.Xr ifconfig 8
+command:
+.Pp
+.Bl -tag -width LINK0X -compact
+.It Em link0
+Enable VJ header compression.
+.It Em link1
+Suppress ICMP traffic.
+.It Em link2
+Enable VJ header compression autodetection.
+This will turn on the
+.Em link0
+flag as soon as the first VJ-compressed packet has been seen by
+the driver.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It sl%d: af%d not supported.
+The interface was handed
+a message with addresses formatted in an unsuitable address
+family; the packet was dropped.
+.El
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr slattach 8 ,
+.Xr sliplogin 8 ,
+.Xr slstat 8
diff --git a/share/man/man4/smb.4 b/share/man/man4/smb.4
new file mode 100644
index 0000000..3aa93ad
--- /dev/null
+++ b/share/man/man4/smb.4
@@ -0,0 +1,202 @@
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" Copyright (c) 2004, Joerg Wunsch
+.\" 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$
+.\"
+.Dd October 25, 1998
+.Dt SMB 4
+.Os
+.Sh NAME
+.Nm smb
+.Nd SMB generic I/O device driver
+.Sh SYNOPSIS
+.Cd "device smb"
+.Sh DESCRIPTION
+The
+.Em smb
+character device driver provides generic i/o to any
+.Xr smbus 4
+instance.
+In order to control SMB devices, use
+.Pa /dev/smb?
+with the ioctls described below.
+Any of these ioctl commands takes a pointer to
+.Vt struct smbcmd
+as its argument.
+.Pp
+.Bd -literal
+#include <sys/types.h>
+
+struct smbcmd {
+ char cmd;
+ int count;
+ u_char slave;
+ union {
+ char byte;
+ short word;
+
+ char *byte_ptr;
+ short *word_ptr;
+
+ struct {
+ short sdata;
+ short *rdata;
+ } process;
+ } data;
+};
+.Ed
+.Pp
+The
+.Fa slave
+field is always used, and provides the address of the
+SMBus slave device to talk to.
+.Pp
+.Bl -column ".Dv SMB_QUICK_WRITE" -compact
+.It Em Ioctl Ta Em Description
+.Pp
+.It Dv SMB_QUICK_WRITE Ta
+The
+.Em QuickWrite
+command just issues the device address with write intent
+to the bus, without transferring any data.
+.It Dv SMB_QUICK_READ Ta
+The
+.Em QuickRead
+command just issues the device address with read intent
+to the bus, without transferring any data.
+.It Dv SMB_SENDB Ta
+The
+.Em SendByte
+command sends the byte provided in the
+.Fa cmd
+field to the device.
+.It Dv SMB_RECVB Ta
+The
+.Em ReceiveByte
+command reads a single byte from the device which will
+be returned in the
+.Fa cmd
+field.
+.It Dv SMB_WRITEB Ta
+The
+.Em WriteByte
+command first sends the byte from the
+.Fa cmd
+field to the device, followed by the byte given in
+.Fa data.byte .
+.It Dv SMB_WRITEW Ta
+The
+.Em WriteWord
+command first sends the byte from the
+.Fa cmd
+field to the device, followed by the word given in
+.Fa data.word .
+Note that the SMBus byte-order is little-endian by definition.
+.It Dv SMB_READB Ta
+The
+.Em ReadByte
+command first sends the byte from the
+.Fa cmd
+field to the device, and then reads one byte of data from
+the device.
+The returned data will be stored in the location pointed to by
+.Fa data.byte_ptr .
+.It Dv SMB_READW Ta
+The
+.Em ReadWord
+command first sends the byte from the
+.Fa cmd
+field to the device, and then reads one word of data from
+the device.
+The returned data will be stored in the location pointed to by
+.Fa data.word_ptr .
+.It Dv SMB_PCALL Ta
+The
+.Em ProcedureCall
+command first sends the byte from the
+.Fa cmd
+field to the device, followed by the word provided in
+.Fa data.process.sdata .
+It then reads one word of data from the device, and returns it
+in the location pointed to by
+.Fa data.process.rdata .
+.It Dv SMB_BWRITE Ta
+The
+.Em BlockWrite
+command first sends the byte from the
+.Fa cmd
+field to the device, followed by
+.Fa count
+bytes of data that are taken from the buffer pointed to by
+.Fa data.byte_ptr .
+The SMBus specification mandates that no more than 32 bytes of
+data can be transferred in a single block read or write command.
+This value is available in the constant
+.Dv SMB_MAXBLOCKSIZE .
+.It Dv SMB_BREAD Ta
+The
+.Em BlockRead
+command first sends the byte from the
+.Fa cmd
+field to the device, and then reads
+.Fa count
+bytes of data that from the device.
+These data will be returned in the buffer pointed to by
+.Fa data.byte_ptr .
+.El
+.Pp
+The
+.Xr read 2
+and
+.Xr write 2
+system calls are not implemented by this driver.
+.Sh ERRORS
+The
+.Xr ioctl 2
+commands can cause the following driver-specific errors:
+.Bl -tag -width Er
+.It Bq Er ENXIO
+Device did not respond to selection.
+.It Bq Er EBUSY
+Device still in use.
+.It Bq Er ENODEV
+Operation not supported by device (not supposed to happen).
+.It Bq Er EINVAL
+General argument error.
+.It Bq Er EWOULDBLOCK
+SMBus transaction timed out.
+.El
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr smbus 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/smbus.4 b/share/man/man4/smbus.4
new file mode 100644
index 0000000..9dda464
--- /dev/null
+++ b/share/man/man4/smbus.4
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1998, Nicolas Souchu
+.\" 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$
+.\"
+.Dd August 10, 1998
+.Dt SMBUS 4
+.Os
+.Sh NAME
+.Nm smbus
+.Nd System Management Bus
+.Sh SYNOPSIS
+.Cd "device smbus"
+.Pp
+.Cd "device iicsmb"
+.Cd "device bktr"
+.Sh DESCRIPTION
+The
+.Em smbus
+system provides a uniform, modular and architecture-independent
+system for the implementation of drivers to control various SMB devices
+and to utilize different SMB controllers (I2C, PIIX4, Brooktree848, vm86...).
+.Sh System Management Bus
+The
+.Em System Management Bus
+is a two-wire interface through which simple power-related chips can communicate
+with rest of the system.
+It uses I2C as its backbone (see
+.Xr iicbus 4 ) .
+.Pp
+A system using SMB passes messages to and from devices instead of tripping
+individual control lines.
+.Pp
+With the SMBus, a device can provide manufacturer information, tell the
+system what its model/part number is, save its state for a suspend event,
+report different types of errors, accept control parameters, and return its
+status.
+.Pp
+The SMBus may share the same host device and physical bus as ACCESS bus
+components provided that an appropriate electrical bridge is provided
+between the internal SMB devices and external ACCESS bus devices.
+.Sh SEE ALSO
+.Xr bktr 4 ,
+.Xr iicbus 4 ,
+.Xr iicsmb 4 ,
+.Xr smb 4
+.Rs
+.%T The SMBus specification
+.%O http://www.smbus.org/specs/
+.Re
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
diff --git a/share/man/man4/smp.4 b/share/man/man4/smp.4
new file mode 100644
index 0000000..c20745e
--- /dev/null
+++ b/share/man/man4/smp.4
@@ -0,0 +1,109 @@
+.\" Copyright (c) 1997
+.\" Steve Passe <fsmp@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. The name of the developer 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$
+.\"
+.Dd December 17, 2004
+.Dt SMP 4
+.Os
+.Sh NAME
+.Nm SMP
+.Nd description of the FreeBSD Symmetric Multi-Processor kernel
+.Sh SYNOPSIS
+.Cd options SMP
+.Sh DESCRIPTION
+The
+.Nm
+kernel implements symmetric multi-processor support.
+.Sh COMPATIBILITY
+Support for multi-processor systems is present for all Tier-1
+architectures on
+.Fx .
+Currently, this includes amd64, i386, ia64, and sparc64.
+Support is enabled using
+.Cd options SMP .
+It is permissible to use the SMP kernel configuration on non-SMP equipped
+motherboards.
+.Sh I386 NOTES
+For i386 systems, the
+.Nm
+kernel supports motherboards that follow the Intel MP specification,
+version 1.4.
+In addition to
+.Cd options SMP ,
+i386 also requires
+.Cd device apic .
+The
+.Xr mptable 1
+command may be used to view the status of multi-processor support.
+.Pp
+The number of CPUs detected by the system is available in
+the read-only sysctl variable
+.Va hw.ncpu .
+.Pp
+.Fx
+allows specific CPUs on a multi-processor system to be disabled.
+The sysctl variable
+.Va machdep.hlt_cpus
+is an integer bitmask denoting CPUs to halt, counting from 0.
+Setting a bit to 1 will result in the corresponding CPU being
+disabled.
+.Pp
+.Fx
+supports hyperthreading on Intel CPU's on the i386 platform.
+Since using logical CPUs can cause performance penalties under certain loads,
+the logical CPUs can be disabled by setting the
+.Va machdep.hlt_logical_cpus
+sysctl to one.
+.Sh SEE ALSO
+.Xr mptable 1 ,
+.Xr sysctl 8 ,
+.Xr condvar 9 ,
+.Xr msleep 9 ,
+.Xr mtx_pool 9 ,
+.Xr mutex 9 ,
+.Xr sema 9 ,
+.Xr sx 9
+.Sh HISTORY
+The
+.Nm
+kernel's early history is not (properly) recorded.
+It was developed
+in a separate CVS branch until April 26, 1997, at which point it was
+merged into 3.0-current.
+By this date 3.0-current had already been
+merged with Lite2 kernel code.
+.Pp
+.Fx 5.0
+introduced support for a host of new synchronization primitives, and
+a move towards fine-grained kernel locking rather than reliance on
+a Giant kernel lock.
+The SMPng Project relied heavily on the support of BSDi, who provided
+reference source code from the fine-grained SMP implementation found
+in
+.Bsx .
+.Pp
+.Fx 5.0
+also introduced support for SMP on the ia64 and sparc64 architectures.
+.Sh AUTHORS
+.An Steve Passe Aq fsmp@FreeBSD.org
diff --git a/share/man/man4/sn.4 b/share/man/man4/sn.4
new file mode 100644
index 0000000..00c9411
--- /dev/null
+++ b/share/man/man4/sn.4
@@ -0,0 +1,109 @@
+.\"
+.\" Copyright (c) 2000 Warner Losh
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt SN 4
+.Os
+.Sh NAME
+.Nm sn
+.Nd "Ethernet driver for SMC91Cxx based cards"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sn"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_sn_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver supports SMC91Cxx based ISA and PCMCIA cards.
+.Sh HARDWARE
+The
+.Nm
+driver supports SMC91Cxx based ISA and PCMCIA cards including:
+.Pp
+.Bl -bullet -compact
+.It
+3Com Megahertz X-Jack Ethernet PC Card XJ10BT, XJ10BC
+.It
+3Com Megahertz XJEM and CCEM series: CCEM3288C, CCEM3288T, CCEM3336,
+CEM3336C, CCEM3336T, XJEM1144C, XJEM1144T, XJEM3288C, XJEM3288T, XJEM3336
+.It
+Farallon EtherMac PC Card 595a
+.It
+Motorola Mariner Ethernet/Modem PC Card
+.It
+Ositech Seven of Diamonds Ethernet PC Card
+.It
+Ositech Jack of Hearts Ethernet/Modem PC Card
+.It
+Psion Gold Card Netglobal Ethernet PC Card
+.It
+Psion Gold Card Netglobal 10/100 Fast Ethernet PC Card
+.It
+Psion Gold Card Netglobal 56k+10Mb Ethernet PC Card
+.It
+SMC EZEther PC Card (8020BT)
+.It
+SMC EZEther PC Card (8020T)
+.El
+.Pp
+The
+.Nm
+driver supports the SMC 91C90, SMC 91C92, SMC 91C94, SMC 91C95, SMC 91C96,
+SMC91C100 and SMC 91C100FD chips from SMC.
+.Pp
+The Farallon EtherWave and EtherMac card came in two varieties.
+The
+.Xr ep 4
+driver supports the 595 and 895 cards.
+These cards have the blue arrow on the front along with a 3Com logo.
+The Farallon 595a cards, which have a red arrow on the front,
+are also called EtherWave and EtherMac.
+They are supported by the
+.Nm
+driver.
+.Sh SEE ALSO
+.Xr ed 4 ,
+.Xr ep 4 ,
+.Xr ie 4 ,
+.Xr intro 4 ,
+.Xr ng_ether 4 ,
+.Xr vx 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver appeared in
+.Fx 4.0 .
diff --git a/share/man/man4/snd_ad1816.4 b/share/man/man4/snd_ad1816.4
new file mode 100644
index 0000000..3d2cb0c
--- /dev/null
+++ b/share/man/man4/snd_ad1816.4
@@ -0,0 +1,81 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_AD1816 4
+.Os
+.Sh NAME
+.Nm snd_ad1816
+.Nd "Analog Devices AD1816 ISA bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_ad1816"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_ad1816_load="YES"
+.Ed
+.Pp
+Non-PnP cards require the following lines in
+.Xr device.hints 5 :
+.Bd -literal -offset indent
+hint.pcm.0.at="isa"
+hint.pcm.0.irq="10"
+hint.pcm.0.drq="1"
+hint.pcm.0.flags="0x0"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the AD1816 sound card.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Analog Devices AD1816
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An "Cameron Grant" Aq cg@FreeBSD.org
+.An "Luigi Rizzo" Aq luigi@FreeBSD.org
+.An "Hannu Savolainen"
diff --git a/share/man/man4/snd_als4000.4 b/share/man/man4/snd_als4000.4
new file mode 100644
index 0000000..a13779a
--- /dev/null
+++ b/share/man/man4/snd_als4000.4
@@ -0,0 +1,70 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_ALS4000 4
+.Os
+.Sh NAME
+.Nm snd_als4000
+.Nd "Avance Logic ALS4000 PCI bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_als4000"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_als4000_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the ALS4000 sound card.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Avance Logic ALS4000
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+.An "Orion Hodson" Aq oho@acm.org
diff --git a/share/man/man4/snd_atiixp.4 b/share/man/man4/snd_atiixp.4
new file mode 100644
index 0000000..ba02da6
--- /dev/null
+++ b/share/man/man4/snd_atiixp.4
@@ -0,0 +1,100 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd November 29, 2006
+.Dt SND_ATIIXP 4
+.Os
+.Sh NAME
+.Nm snd_atiixp
+.Nd "ATI IXP bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_atiixp"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_atiixp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach to ATI IXP audio devices.
+This driver supports 16bit playback and recording, and 32bit native playback
+and recording.
+.Ss Runtime Configuration
+The following
+.Xr sysctl 8
+variables are available in addition to those available to all
+.Xr sound 4
+devices:
+.Bl -tag -width ".Va dev.pcm.%d.polling" -offset indent
+.It Va dev.pcm.%d.polling
+Experimental polling mode, where the driver operates by querying the device
+state on each tick using
+.Xr callout 9 .
+Polling is disabled by default.
+Do not enable it unless you are facing weird interrupt problems or if the
+device cannot generate interrupts at all.
+.El
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio chipsets:
+.Pp
+.Bl -bullet -compact
+.It
+ATI IXP 200
+.It
+ATI IXP 300
+.It
+ATI IXP 400
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.1 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+driver
+does not support S/PDIF, but implementing it should be fairly easy if the
+right hardware is available.
+.Pp
+32bit native recording is broken on some hardware.
diff --git a/share/man/man4/snd_cmi.4 b/share/man/man4/snd_cmi.4
new file mode 100644
index 0000000..d6dc088
--- /dev/null
+++ b/share/man/man4/snd_cmi.4
@@ -0,0 +1,76 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_CMI 4
+.Os
+.Sh NAME
+.Nm snd_cmi
+.Nd "CMedia CMI8338/CMI8738 PCI bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_cmi"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_cmi_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the CMedia CMI8338/CMI8738 audio cards.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+CMedia CMI8338A
+.It
+CMedia CMI8338B
+.It
+CMedia CMI8738
+.It
+CMedia CMI8738B
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.3 .
+.Sh AUTHORS
+.An "Orion Hodson" Aq O.Hodson@cs.ucl.ac.uk
diff --git a/share/man/man4/snd_cs4281.4 b/share/man/man4/snd_cs4281.4
new file mode 100644
index 0000000..2b94174
--- /dev/null
+++ b/share/man/man4/snd_cs4281.4
@@ -0,0 +1,70 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_CS4281 4
+.Os
+.Sh NAME
+.Nm snd_cs4281
+.Nd "Crystal Semiconductor CS4281 PCI bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_cs4281"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_cs4281_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the CS4281 sound card.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Crystal Semiconductor CS4281
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.3 .
+.Sh AUTHORS
+.An "Orion Hodson" Aq O.Hodson@cs.ucl.ac.uk
diff --git a/share/man/man4/snd_csa.4 b/share/man/man4/snd_csa.4
new file mode 100644
index 0000000..36a6857
--- /dev/null
+++ b/share/man/man4/snd_csa.4
@@ -0,0 +1,98 @@
+.\"
+.\" Copyright (c) 1999 Seigo Tanimura
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_CSA 4
+.Os
+.Sh NAME
+.Nm snd_csa
+.Nd Crystal Semiconductor CS461x/462x/4280 PCI bridge device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_csa"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_csa_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to Crystal Semiconductor CS461x/462x/4280 based sound cards.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Crystal Semiconductor CS4280
+.It
+Crystal Semiconductor CS4610
+.It
+Crystal Semiconductor CS4611
+.It
+Crystal Semiconductor CS4614
+.It
+Crystal Semiconductor CS4615
+.It
+Crystal Semiconductor CS4622
+.It
+Crystal Semiconductor CS4624
+.It
+Crystal Semiconductor CS4630
+.It
+Genius Soundmaker 128 Value
+.It
+Hercules Game Theatre XP
+.It
+Turtle Beach Santa Cruz
+.El
+.Pp
+Some onboard CS4610 chips are accompanied by the CS423x ISA codec
+instead of the CS4297 AC97 codec.
+Such configurations are not
+supported by the
+.Nm
+driver yet.
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Seigo Tanimura Aq tanimura@r.dl.itc.u-tokyo.ac.jp
diff --git a/share/man/man4/snd_ds1.4 b/share/man/man4/snd_ds1.4
new file mode 100644
index 0000000..d691924
--- /dev/null
+++ b/share/man/man4/snd_ds1.4
@@ -0,0 +1,72 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_DS1 4
+.Os
+.Sh NAME
+.Nm snd_ds1
+.Nd "Yamaha DS-1 PCI bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_ds1"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_ds1_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the Yamaha DS-1 sound card.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Yamaha DS-1
+.It
+Yamaha DS-1E
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.1 .
+.Sh AUTHORS
+.An "Cameron Grant" Aq cg@FreeBSD.org
diff --git a/share/man/man4/snd_emu10k1.4 b/share/man/man4/snd_emu10k1.4
new file mode 100644
index 0000000..3052f12
--- /dev/null
+++ b/share/man/man4/snd_emu10k1.4
@@ -0,0 +1,82 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_EMU10K1 4
+.Os
+.Sh NAME
+.Nm snd_emu10k1
+.Nd "SoundBlaster Live! and Audigy PCI bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_emu10k1"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_emu10k1_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the SoundBlaster Live!\& and Audigy audio cards.
+.Pp
+Digital output is supported by default.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Creative SoundBlaster Live!\& (EMU10K1 Chipset)
+.It
+Creative SoundBlaster Audigy (EMU10K2 Chipset)
+.It
+Creative SoundBlaster Audigy 2 (EMU10K2 Chipset)
+.It
+Creative SoundBlaster Audigy 2 (EMU10K3 Chipset)
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.1 .
+.Sh AUTHORS
+.An "David O'Brien" Aq obrien@FreeBSD.org
+.An "Orlando Bassotto" Aq orlando.bassotto@ieo-research.it
+.An "Cameron Grant" Aq cg@FreeBSD.org
+.Sh BUGS
+Fancy features like DD5.1 output are not supported.
diff --git a/share/man/man4/snd_emu10kx.4 b/share/man/man4/snd_emu10kx.4
new file mode 100644
index 0000000..e813f6d
--- /dev/null
+++ b/share/man/man4/snd_emu10kx.4
@@ -0,0 +1,298 @@
+.\"
+.\" Copyright (c) 2003-2007 Yuriy Tsibizov
+.\" 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$
+.\"
+.Dd May 28, 2008
+.Dt SND_EMU10KX 4
+.Os
+.Sh NAME
+.Nm snd_emu10kx
+.Nd Creative SoundBlaster Live! and Audigy sound cards device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_emu10kx"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_emu10kx_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to Creative sound cards based on the EMU10K1, CA0100, CA0101, CA0102
+and CA0108 DSPs.
+.Pp
+The
+.Nm
+sound cards have a PCM part, which is accessible through one to five
+.Xr pcm 4
+devices (see
+.Sx MULTICHANNEL PLAYBACK
+for details), and MPU401-compatible MIDI I/O controller, which is accessible
+through the midi device.
+Wave table synthesizer support is not available.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Creative Sound Blaster Live!\& (EMU10K1 Chipset).
+Both PCM and MIDI interfaces are available.
+.It
+Creative Sound Blaster Audigy (CA0100 and CA0101 Chipset).
+PCM and two MIDI interfaces available.
+.It
+Creative Sound Blaster Audigy 2 and Creative Sound Blaster Audigy 4 (CA0102
+Chipset).
+PCM support is limited to 48kHz/16 bit stereo (192kHz/24 bit part
+of this chipset is not supported).
+.It
+Creative Sound Blaster Audigy 2 Value (CA0108 Chipset).
+PCM support is limited
+to 48kHz/16 bit stereo (192kHz/24 bit part of this chipset is not supported).
+There is no MIDI support for this card.
+.El
+.Pp
+The
+.Nm
+driver does
+.Em not
+support the following sound cards (although they have names
+similar to some supported ones):
+.Pp
+.Bl -bullet -compact
+.It
+Creative Sound Blaster Live!\& 24-Bit, identified by
+.Fx
+as
+.Qq Li "emu10k1x Soundblaster Live! 5.1" .
+.It
+Creative Sound Blaster Audigy LS / ES, identified by
+.Fx
+as
+.Qq Li "CA0106-DAT Audigy LS" .
+.It
+All other Creative sound cards with -DAT chipsets.
+.It
+All Creative X-Fi series sound cards.
+.El
+.Sh MULTICHANNEL PLAYBACK
+By default the
+.Nm
+driver is loaded with multichannel playback capabilities enabled.
+If you do not set the
+.Dv hint.emu10kx.0.multichannel_disabled
+option in your
+.Xr loader.conf 5
+configuration file you will get up to five DSP devices, one for each
+sound card output.
+You can use additional software (like
+.Em audio/pulseaudio
+from
+.Em The Ports Collection )
+to do sound stream demultiplexing.
+Only
+.Dq FRONT
+output can play and record sound from external
+sources (like line or S/PDIF inputs).
+.Sh MULTICHANNEL RECORDING
+By default multichannel recording capabilities are not enabled when you load
+the
+.Nm
+driver.
+If you enable the
+.Dv hint.emu10kx.0.multichannel_recording
+option in
+.Xr loader.conf 5
+you will get one more DSP device that is rate-locked to 48kHz/16bit/mono.
+This is actually 48kHz/16bit/32 channels on SB Live! cards and
+48kHz/16bit/64channels on Audigy cards, but the current implementation of
+the sound subsystem does not support such an amount of PCM channels.
+This device can not be opened for read, thus confusing many applications.
+.Pp
+Within a multichannel stream, the first half (0-15 or 0-31) is a copy of all DSP
+outputs, the second half (15-30 or 32-63) is a copy of some DSP inputs.
+On Live! cards the last substream (31) is used as a sync stream and is always
+set to 0xc0de.
+Audigy cards do not need such sync data, because a stream always starts with
+substream 0.
+.Ss SB Live! substream map (in byte offsets, each substream is 2 bytes LE)
+.Bl -tag -width ".Dv +0x00..+0x1E"
+.It Dv Offset
+Substream
+.It +0x00..+0x1E
+PCM streams 0..15
+.It +0x20, +0x22
+Empty
+.It +0x24..+0x2A
+PCM inputs: front left, front right, rear left, rear right, center, sub
+.It +0x2C..+0x3C
+DSP inputs 0..8:
+.It +0x3E
+sync substream (0xc0de)
+.El
+.Pp
+.Ss Audigy substream map (in byte offsets, each substream is 2 bytes LE)
+.Bl -tag -width ".Dv +0x00..+0x3E"
+.It Dv Offset
+Substream
+.It +0x00..+0x3E
+PCM streams 0..31
+.It +0x40..+0x5E
+PCM inputs: front LR, rear LR, center, sub, ...
+.It +0x60..+0x7E
+DSP inputs 0..16
+.El
+.Sh OSS MIXER CONTROLS
+These are the controls available through the standard OSS programming interface.
+You can use
+.Xr mixer 8
+to change them.
+.Pp
+On EMU10K1-based cards the OSS mixer directly controls the AC97 codec.
+On newer cards the OSS mixer controls some parameters of the AC97 codec and
+some DSP-based mixer controls.
+.Bl -inset
+.It Qq vol
+mixer control for the overall sound volume.
+.It Qq pcm
+mixer control for the PCM playback volume.
+It controls only front output
+volume in multichannel mode and all output volume in single channel mode.
+.It Qq rec
+mixer control acts very differently on EMU10K1 and other cards.
+On EMU10K1 cards it controls the AC97 codec recording level.
+On non-EMU10K1 cards it controls the amount of AC97
+.Dq stereo mix
+ entering the DSP.
+AC97 recording level and AC97 recording source are fixed on CA0100, CA0101,
+CA0102 and CA0108 cards.
+The AC97 recording levels are always set to maximum and recording source is always
+.Dq Li "stereo mix" .
+.It Qq dig1
+is a CD S/PDIF (on-card) volume control
+.It Qq dig2
+is an AudigyDrive S/PDIF (Audigy series) or TOSLink (SB Live! series) volume
+control
+.It Qq dig3
+is an on-card S/PDIF volume control
+.It Qq line2
+is AudigyDrive "Line In 2" volume control
+.It Qq line3
+is AudigyDrive "AUX In 2" volume control
+.El
+.Pp
+Other OSS mixer controls control the inputs of the AC97 codec.
+.Sh PRIVATE DEVICE CONTROLS
+You can control some of EMU10Kx's operation and configuration parameters through
+.Va dev.emu10kx. Ns Aq Ar X
+sysctls.
+These
+.Xr sysctl 8
+values are temporary and should not be relied upon.
+.Sh DRIVER CONFIGURATION
+Loader tunables are used to set driver configuration.
+Tunables can be set at the
+.Xr loader 8
+prompt before booting the kernel or they can be stored in
+.Pa /boot/loader.conf .
+These tunables cannot be changed from a machine
+.Xr sysctl 8
+entry after boot, but you can change them using
+.Xr kenv 1
+before loading the
+.Nm
+driver.
+.Bl -tag -width indent
+.It Va hint.emu10kx. Ns Ao Ar X Ac Ns Va .disabled
+Disables loading a driver instance.
+.It Va hint.emu10kx. Ns Ao Ar X Ac Ns Va .multichannel_disabled
+Disables multichannel playback support, when one card is represented as
+several PCM devices.
+.It Va hint.emu10kx. Ns Ao Ar X Ac Ns Va .multichannel_recording
+Enables experimental multichannel recording support.
+.It Va hint.emu10kx. Ns Ao Ar X Ac Ns Va .debug
+Set debug output level.
+.Bl -tag -width 2n
+.It 0
+No additional debug options enabled
+.It 1
+Enables all DSP outputs to be connected, even those
+that are known to be unused on a particular card.
+.It 2
+Additional debug messages about in-driver events will be printed.
+.It 2
+Additional debug messages will be printed when memory allocation fails.
+.El
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/emu10kx?" -compact
+.It Pa /dev/emu10kx?
+.Nm
+management interface
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The PCM part of the driver is based on the
+.Xr snd_emu10k1 4
+SB Live!\& driver by
+.An "Cameron Grant" Aq cg@freebsd.org .
+The MIDI interface is based on the
+.Xr snd_emu10k1 4
+MIDI interface code by
+.An "Mathew Kanner" Aq matk@freebsd.org .
+The
+.Nm
+device driver and this manual page were written by
+.An Yuriy Tsibizov .
+.Sh BUGS
+.Pp
+The driver does not detect lost S/PDIF signals and produces noise when
+S/PDIF is not connected and S/PDIF volume is not zero.
+.Pp
+The PCM driver cannot detect the presence of Live!Drive or AudigyDrive
+breakout boxes and tries to use them (and list their connectors in the
+mixer).
+.Pp
+The MIDI driver cannot detect the presence of Live!Drive or AudigyDrive
+breakout boxes and tries to enable the IR receiver on them anyway.
diff --git a/share/man/man4/snd_envy24.4 b/share/man/man4/snd_envy24.4
new file mode 100644
index 0000000..30f1334
--- /dev/null
+++ b/share/man/man4/snd_envy24.4
@@ -0,0 +1,82 @@
+.\" Copyright (c) 2006 Alexander Leidinger
+.\" 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$
+.\"
+.Dd September 30, 2006
+.Dt SND_ENVY24 4
+.Os
+.Sh NAME
+.Nm snd_envy24
+.Nd "VIA Envy24 and compatible bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_envy24"
+.Cd "device snd_spicds"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_envy24_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to VIA Envy24 (ICE1724 or VT1724 chipset) and compatible audio
+devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+M-Audio Audiophile 2496
+.It
+M-Audio Delta Dio 2496
+.It
+Terratec DMX 6fire
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Katsurajima Naoto .
+This manual page was written by
+.An Alexander Leidinger Aq netchild@FreeBSD.org .
diff --git a/share/man/man4/snd_envy24ht.4 b/share/man/man4/snd_envy24ht.4
new file mode 100644
index 0000000..807ba62
--- /dev/null
+++ b/share/man/man4/snd_envy24ht.4
@@ -0,0 +1,105 @@
+.\" Copyright (c) 2006 Alexander Leidinger
+.\" 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$
+.\"
+.Dd May 28, 2007
+.Dt SND_ENVY24HT 4
+.Os
+.Sh NAME
+.Nm snd_envy24ht
+.Nd "VIA Envy24HT and compatible bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_envy24ht"
+.Cd "device snd_spicds"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_envy24ht_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to VIA Envy24HT (ICE1724 or VT1724 chipset) and compatible audio
+devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+Audiotrak Prodigy 7.1
+.It
+Audiotrak Prodigy 7.1 LT
+.It
+Audiotrak Prodigy 7.1 XT
+.It
+Audiotrak Prodigy HD2
+.It
+ESI Juli@
+.It
+M-Audio Audiophile 192
+.It
+M-Audio Revolution 5.1
+.It
+M-Audio Revolution 7.1
+.It
+Terratec Aureon 5.1 Sky
+.It
+Terratec Aureon 7.1 Space
+.It
+Terratec Aureon 7.1 Universe
+.It
+Terratec PHASE 22
+.It
+Terratec PHASE 28
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Konstantin Dimitrov
+based upon the
+.Xr snd_envy24 4
+driver.
+This manual page was written by
+.An Alexander Leidinger Aq netchild@FreeBSD.org .
diff --git a/share/man/man4/snd_es137x.4 b/share/man/man4/snd_es137x.4
new file mode 100644
index 0000000..9602fce
--- /dev/null
+++ b/share/man/man4/snd_es137x.4
@@ -0,0 +1,117 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd November 29, 2006
+.Dt SND_ES137X 4
+.Os
+.Sh NAME
+.Nm snd_es137x
+.Nd "Ensoniq AudioPCI ES137x bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_es137x"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_es137x_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the Ensoniq 137x audio cards.
+.Ss Runtime Configuration
+The following
+.Xr sysctl 8
+variables are available in addition to those available to all
+.Xr sound 4
+devices:
+.Bl -tag -width ".Va hw.snd.pcm%d.latency_timer" -offset indent
+.It Va hw.snd.pcm%d.latency_timer
+Controls the PCI latency timer setting.
+Increasing this value will solve most popping and crackling issues
+(especially on VIA motherboards).
+.It Va hw.snd.pcm%d.spdif_enabled
+Enables S/PDIF output on the primary playback channel.
+This
+.Xr sysctl 8
+variable is available only if the device is known to support S/PDIF output.
+.It Va dev.pcm.%d.polling
+Experimental polling mode, where the driver operates by querying the device
+state on each tick using
+.Xr callout 9 .
+Polling is disabled by default.
+Do not enable it unless you are facing weird interrupt problems or if the
+device cannot generate interrupts at all.
+.El
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Creative CT5880-A
+.It
+Creative CT5880-C
+.It
+Creative CT5880-D
+.It
+Creative CT5880-E
+.It
+Creative SB AudioPCI CT4730
+.It
+Ensoniq AudioPCI ES1370
+.It
+Ensoniq AudioPCI ES1371-A
+.It
+Ensoniq AudioPCI ES1371-B
+.It
+Ensoniq AudioPCI ES1373-A
+.It
+Ensoniq AudioPCI ES1373-B
+.It
+Ensoniq AudioPCI ES1373-8
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An "Russell Cattelan" Aq cattelan@thebarn.com
+.An "Cameron Grant" Aq cg@FreeBSD.org
+.An "Joachim Kuebart"
+.An "Jonathan Noack" Aq noackjr@alumni.rice.edu
diff --git a/share/man/man4/snd_ess.4 b/share/man/man4/snd_ess.4
new file mode 100644
index 0000000..bd0d6d7
--- /dev/null
+++ b/share/man/man4/snd_ess.4
@@ -0,0 +1,72 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_ESS 4
+.Os
+.Sh NAME
+.Nm snd_ess
+.Nd "Ensoniq ESS ISA PnP/non-PnP bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_ess"
+.Cd "device snd_sbc"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_ess_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the ESS ISA sound cards.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Ensoniq ESS ISA PnP/non-PnP
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.1 .
+.Sh AUTHORS
+.An "Cameron Grant" Aq cg@FreeBSD.org
+.An "Luigi Rizzo" Aq luigi@FreeBSD.org
diff --git a/share/man/man4/snd_fm801.4 b/share/man/man4/snd_fm801.4
new file mode 100644
index 0000000..0e66504
--- /dev/null
+++ b/share/man/man4/snd_fm801.4
@@ -0,0 +1,78 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd December 1, 2005
+.Dt SND_FM801 4
+.Os
+.Sh NAME
+.Nm snd_fm801
+.Nd "Forte Media FM801 bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_fm801"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_fm801_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach audio devices based on the Forte Media FM801 chipset.
+This is a common chipset found in various parts used by OEM manufacturers.
+.Sh HARDWARE
+The
+.Nm
+driver supports audio devices based on the following chipset:
+.Pp
+.Bl -bullet -compact
+.It
+Forte Media FM801
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.2 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
+.Sh BUGS
+The Forte Media FM801 chipset is a sort of PCI bridge, not an actual
+sound controller, making it possible to have soundless support.
+One problem is that both chipsets, with and without sound support, use the
+same PCI ID.
+This makes it impossible to determine which one is installed.
diff --git a/share/man/man4/snd_gusc.4 b/share/man/man4/snd_gusc.4
new file mode 100644
index 0000000..99df540
--- /dev/null
+++ b/share/man/man4/snd_gusc.4
@@ -0,0 +1,97 @@
+.\"
+.\" Copyright (c) 1999 Seigo Tanimura
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_GUSC 4
+.Os
+.Sh NAME
+.Nm snd_gusc
+.Nd Gravis UltraSound ISA bridge device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_gusc"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_gusc_load="YES"
+.Ed
+.Pp
+Non-PnP cards require the following lines in
+.Xr device.hints 5 :
+.Bd -literal -offset indent
+hint.gusc.0.at="isa"
+hint.gusc.0.port="0x220"
+hint.gusc.0.irq="5"
+hint.gusc.0.drq="1"
+hint.gusc.0.flags="0x13"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to Gravis UltraSound sound cards.
+.Pp
+The value of flags specifies the secondary DMA channel.
+If the secondary
+DMA channel is C, set the flags to (C | 0x10).
+For a sound card without the
+secondary DMA channel, the flags should be set to zero.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Gravis UltraSound MAX
+.It
+Gravis UltraSound PnP
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It xxx: gus pcm not attached, out of memory
+There are not enough memory to drive the device.
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Ville-Pertti Keinonen Aq will@iki.fi
+.An Seigo Tanimura Aq tanimura@r.dl.itc.u-tokyo.ac.jp
+.Sh BUGS
+Recording pcm sound data is not supported yet.
diff --git a/share/man/man4/snd_hda.4 b/share/man/man4/snd_hda.4
new file mode 100644
index 0000000..b323fe3
--- /dev/null
+++ b/share/man/man4/snd_hda.4
@@ -0,0 +1,612 @@
+.\" Copyright (c) 2006-2008 Joel Dahl <joel@FreeBSD.org>
+.\" Copyright (c) 2008 Alexander Motin <mav@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$
+.\"
+.Dd November 8, 2008
+.Dt SND_HDA 4
+.Os
+.Sh NAME
+.Nm snd_hda
+.Nd "Intel High Definition Audio bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_hda"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_hda_load="YES"
+.Ed
+.Sh DESCRIPTION
+The High Definition (HD) Audio specification was developed by Intel as the
+logical successor of the old AC'97 specification and has several advantages,
+such as higher bandwidth which allows more channels and more detailed formats,
+support for several logical audio devices, and general purpose DMA channels.
+.Pp
+The
+.Nm
+driver is a HDA bus controller driver and HDA codecs audio functions bridge
+driver that allows the generic audio driver,
+.Xr sound 4 ,
+to be used with this hardware.
+Only audio functions are supported by
+.Nm .
+Modem, HDMI and other possible functions are not implemented.
+.Pp
+The
+.Nm
+driver supports hardware that conforms with revision 1.0 of the Intel High
+Definition Audio specification and tries to behave much like the Microsoft
+Universal Audio Architecture (UAA) draft (revision 0.7b) for handling audio
+devices.
+.Pp
+According to HDA and UAA specifications, depending on the number of HDA buses
+and codecs present in system, their audio capabilities and BIOS provided
+configuration, the
+.Nm
+driver often provides several PCM audio devices.
+For example, one device for main rear 7.1 output and inputs, one device
+for independent headset connectors at front and one device for SPDIF or
+HDMI audio input/output.
+The assignment of audio inputs and outputs may be tuned with
+.Xr device.hints 5 .
+The driver's verbose boot messages provide a lot of information about
+the operation of the driver and present audio setup.
+.Pp
+The default audio device may be tuned by setting the
+.Ar hw.snd.default_unit
+sysctl, as described in
+.Xr sound 4 ,
+or explicitly specified in application settings.
+.Ss Boot-time Configuration
+The following variables are available at boot-time through the
+.Xr device.hints 5
+file:
+.Bl -tag -width ".Va hint.hdac.%d.config"-offset indent
+.It Va hint.hdac.%d.config
+Configures a range of possible options.
+Possible values are:
+.Dq Li dmapos ,
+.Dq Li eapdinv ,
+.Dq Li gpio0 ,
+.Dq Li gpio1 ,
+.Dq Li gpio2 ,
+.Dq Li gpio3 ,
+.Dq Li gpio4 ,
+.Dq Li gpio5 ,
+.Dq Li gpio6 ,
+.Dq Li gpio7 ,
+.Dq Li gpioflush ,
+.Dq Li ivref ,
+.Dq Li ivref50 ,
+.Dq Li ivref80 ,
+.Dq Li ivref100 ,
+.Dq Li fixedrate ,
+.Dq Li forcestereo ,
+.Dq Li ovref ,
+.Dq Li ovref50 ,
+.Dq Li ovref80 ,
+.Dq Li ovref100 ,
+.Dq Li senseinv ,
+.Dq Li softpcmvol ,
+and
+.Dq Li vref .
+An option prefixed with
+.Dq Li no ,
+such as
+.Dq Li nofixedrate ,
+will do the opposite and takes precedence.
+Options can be separated by whitespace and commas.
+.Dq Li GPIO Ns s
+are a codec's General Purpose I/O pins which system integrators sometimes
+use to control external muters, amplifiers and so on.
+If you have no sound, or sound volume is not adequate, you may have to
+experiment a bit with the GPIO setup to find the optimal setup for your
+system.
+The
+.Dq Li ivref Ns Ar X
+and
+.Dq Li ovref Ns Ar X
+options control the voltage used to power external microphones.
+.It Va hint.hdac.%d.msi
+Controls MSI (Message Signaled Interrupts) support.
+.It Va hint.hdac.%d.cad%d.nid%d.config
+Overrides codec pin configuration set by BIOS.
+May be specified as a 32-bit hexadecimal value with a leading
+.Dq 0x ,
+or as a set of space-separated
+.Dq Ar option Ns = Ns Ar value
+pairs.
+.El
+.Pp
+Pin configuration is the UAA driver's main source of information about codec
+usage.
+This information is usually provided by the codec manufacturer and tuned
+by system integrators for specific system requirements.
+The
+.Nm
+driver allows users to override it to fix integrator mistakes or to use the
+available codec in alternative ways (for example to get stereo output and 2
+inputs instead of a single 5.1 output).
+.Pp
+The following options are supported:
+.Bl -tag -width ".Va device=" -offset indent
+.It Va as
+Association number.
+Associations are used to group individual pins to form a complex multi-pin
+device.
+For example, to group 4 connectors for 7.1 output, or to treat several
+input connectors as sources for the same input device.
+Association numbers can be specified as numeric values from 0 to 15.
+A value of 0 means disabled pin.
+A value of 15 is a set of independent unassociated pins.
+Each association includes only pins of the same direction (in/out) and is
+detected atomically (all pins or none).
+A separate PCM audio device is created for every pair of input and
+output associations.
+.It Va seq
+Sequence number.
+A unique, per-association number used to order pins inside the
+particular association.
+Sequence numbers can be specified as numeric values from 0 to 15.
+.Pp
+The sequence number 15 has a special meaning for output associations.
+Output pins with this number and device type
+.Dq Ar Headphones
+will duplicate (with automatic mute if jack detection is supported) the
+first pin in that association.
+.It Va device
+Device type.
+Can be specified as a number from 0 to 15 or as a name:
+.Dq Li Line-out ,
+.Dq Li Speaker ,
+.Dq Li Headphones,
+.Dq Li CD ,
+.Dq Li SPDIF-out ,
+.Dq Li Digital-out ,
+.Dq Li Modem-line ,
+.Dq Li Modem-handset ,
+.Dq Li Line-in ,
+.Dq Li AUX ,
+.Dq Li Mic ,
+.Dq Li Telephony ,
+.Dq Li SPDIF-in ,
+.Dq Li Digital-in ,
+.Dq Li Res.E ,
+or
+.Dq Li Other .
+The device type also describes the pin direction (in/out).
+For example,
+.Dq Li CD
+always means an input pin, while
+.Dq Li Headphones
+always means an output.
+.It Va conn
+Connection type.
+Can be specified as a number from 0 to 3.
+The connection type can also be specified as one of the special names
+.Dq Li Jack ,
+.Dq Li None ,
+.Dq Li Fixed ,
+or
+.Dq Li Both .
+Pins with a connection type of
+.Dq Li None
+are disabled.
+.It Va ctype
+Connector physical type.
+Can be specified as a number from 0 to 15.
+This is a reference only value.
+It is ignored by the
+.Nm
+driver.
+.It Va color
+Connector color.
+Can be specified as a number from 0 to 15 or as one of the names
+.Dq Li Unknown ,
+.Dq Li Black ,
+.Dq Li Grey ,
+.Dq Li Blue ,
+.Dq Li Green ,
+.Dq Li Red ,
+.Dq Li Orange ,
+.Dq Li Yellow ,
+.Dq Li Purple ,
+.Dq Li Pink ,
+.Dq Li Res.A ,
+.Dq Li Res.B ,
+.Dq Li Res.C ,
+.Dq Li Res.D ,
+.Dq Li White ,
+or
+.Dq Li Other .
+This is a reference only value.
+It is ignored by the
+.Nm
+driver.
+.It Va loc
+Connector physical location.
+Can be specified as a number from 0 to 63.
+This is a reference only value.
+It is ignored by the
+.Nm
+driver.
+.It Va misc
+Misc bits.
+Can be specified as a number from 0 to 15.
+Bit 0 has a special meaning. When set it means that jack detection is
+not implemented in hardware.
+.El
+.Ss Runtime Configuration
+The following
+.Xr sysctl 8
+variables are available in addition to those available to all
+.Xr sound 4
+devices:
+.Bl -tag -width ".Va dev.hdac.%d.polling" -offset indent
+.It Va dev.hdac.%d.polling
+Enables polling mode.
+In this mode the driver operates by querying the device state on timer
+ticks using
+.Xr callout 9
+instead of interrupts.
+Polling is disabled by default.
+Do not enable it unless you are facing weird interrupt problems or if the
+device cannot generate interrupts at all.
+.It Va dev.hdac.%d.polling_interval
+Controller/Jack Sense polling interval (1-1000 ms)
+.It Va dev.hdac.%d.pindump
+Setting this to a non-zero value dumps the current pin configuration, main
+capabilities and jack sense status to console and syslog.
+.El
+.Sh EXAMPLES
+Taking HP Compaq DX2300 with Realtek ALC888 HDA codec for example.
+This system has two audio connectors on a front side, three audio connectors
+on a rear side and one internal speaker.
+According to verbose driver output and the codec datasheet,
+this codec has five stereo DACs and two stereo ADCs, all of them are routable to
+any codec pin (external connector).
+All codec pins are reversible (could be configured either as input or output).
+.Pp
+So high codec uniformity and flexibility allow driver to configure it in many
+different ways, depending on requested pins usage decribed by pins configuration.
+Driver reports such default pin configuration when verbose messages enabled:
+.Bd -literal
+hdac0: nid 20 0x01014020 as 2 seq 0 Line-out Jack jack 1 loc 1 color Green misc 0
+hdac0: nid 21 0x99130110 as 1 seq 0 Speaker Fixed jack 3 loc 25 color Unknown misc 1
+hdac0: nid 22 0x411111f0 as 15 seq 0 Speaker None jack 1 loc 1 color Black misc 1
+hdac0: nid 23 0x411111f0 as 15 seq 0 Speaker None jack 1 loc 1 color Black misc 1
+hdac0: nid 24 0x01a19830 as 3 seq 0 Mic Jack jack 1 loc 1 color Pink misc 8
+hdac0: nid 25 0x02a1983f as 3 seq 15 Mic Jack jack 1 loc 2 color Pink misc 8
+hdac0: nid 26 0x01813031 as 3 seq 1 Line-in Jack jack 1 loc 1 color Blue misc 0
+hdac0: nid 27 0x0221401f as 1 seq 15 Headphones Jack jack 1 loc 2 color Green misc 0
+hdac0: nid 28 0x411111f0 as 15 seq 0 Speaker None jack 1 loc 1 color Black misc 1
+hdac0: nid 30 0x411111f0 as 15 seq 0 Speaker None jack 1 loc 1 color Black misc 1
+hdac0: nid 31 0x411111f0 as 15 seq 0 Speaker None jack 1 loc 1 color Black misc 1
+.Ed
+.Pp
+Here we can see, that the nodes with ID (nid) 25 and 27 are front pannel
+connectors (Jack, loc 2), nids 20, 24 and 26 are rear pannel connectors
+(Jack, loc 1) and nid 21 is a built-in speaker (Fixed, loc 25).
+Pins with nids 22, 23, 28, 30 and 31 will be disabled by driver due to "None"
+connectivity. So the pin count and description matches to connectors that
+we have.
+.Pp
+Using association (as) and sequence (seq) fields values pins are grouped into
+3 associations:
+.Bd -literal
+hdac0: Association 0 (1) out:
+hdac0: Pin nid=21 seq=0
+hdac0: Pin nid=27 seq=15
+hdac0: Association 1 (2) out:
+hdac0: Pin nid=20 seq=0
+hdac0: Association 2 (3) in:
+hdac0: Pin nid=24 seq=0
+hdac0: Pin nid=26 seq=1
+hdac0: Pin nid=25 seq=15
+.Ed
+.Pp
+Each
+.Xr pcm 4
+device uses two associations: one for playback and one for recording.
+Associations processed and assigned to
+.Xr pcm 4
+devices in increasing numerical order.
+In this case association #0 (1) will become
+.Li pcm0
+device playback, using the internal speakers and
+.Ar Headphones
+jack with speaker automute on the headphones jack connection.
+Association #1 (2) will become
+.Li pcm1
+playback, using the
+.Ar Line-out
+jack.
+Association #2 (3) will become
+.Li pcm0
+recording, using the external microphones and the
+.Ar Line-in
+jack.
+.Pp
+The
+.Nm
+driver provides extensive verbose messages to diagnose its operation
+logic and describe its current codec configuration.
+.Pp
+Using
+.Xr device.hints 5
+it is possible to modify the configuration of the existing pins,
+allowing a broad range of different audio setups.
+Here are a few examples of some setups possible for this particular
+hardware:
+.Ss Example 1
+Setting the
+.Xr device.hints 5
+options
+.Bd -literal
+hint.hdac.0.cad0.nid20.config="as=1"
+hint.hdac.0.cad0.nid21.config="as=2"
+.Ed
+.Pp
+will swap line-out and speaker functions.
+So the
+.Li pcm0
+device will play to the line-out and headphones jacks. Line-out will
+be muted on the headphones jack connection.
+Recording on
+.Li pcm0
+will go from two external microphones and line-in jacks.
+.Li pcm1
+playback will go to the internal speaker.
+.Pp
+.Ss Example 2
+Setting the
+.Xr device.hints 5
+options
+.Bd -literal
+hint.hdac.0.cad0.nid20.config="as=1 seq=15 device=Headphones"
+hint.hdac.0.cad0.nid27.config="as=2 seq=0"
+hint.hdac.0.cad0.nid25.config="as=4 seq=0"
+.Ed
+.Pp
+will split the headphones and one of the microphones to a separate device.
+The
+.Li pcm0
+device will play to the internal speaker and to the line-out jack, with
+speaker automute on the line-out jack connection.
+Recording on
+.Li pcm0
+will use input from one external microphone and the line-in jacks.
+The
+.Li pcm1
+device will be completely dedicated to a headset (headphones and mic)
+connected to the front connectors.
+.Pp
+.Ss Example 3
+Setting the
+.Xr device.hints 5
+options
+.Bd -literal
+hint.hdac.0.cad0.nid20.config="as=1 seq=0"
+hint.hdac.0.cad0.nid26.config="as=2 seq=0"
+hint.hdac.0.cad0.nid27.config="as=3 seq=0"
+hint.hdac.0.cad0.nid25.config="as=4 seq=0"
+hint.hdac.0.cad0.nid24.config="as=5 seq=0 device=Line-out"
+hint.hdac.0.cad0.nid21.config="as=6 seq=0"
+.Ed
+.Pp
+will give 4 independent devices:
+.Li pcm0
+.Pq line-out and line-in ,
+.Li pcm1
+.Pq headphones and mic ,
+.Li pcm2
+.Pq additional line-out via retasked rear mic jack ,
+and
+.Li pcm3
+.Pq internal speaker .
+.Pp
+.Ss Example 4
+Setting the
+.Xr device.hints 5
+options
+.Bd -literal
+hint.hdac.0.cad0.nid20.config="as=1 seq=0"
+hint.hdac.0.cad0.nid24.config="as=1 seq=1 device=Line-out"
+hint.hdac.0.cad0.nid26.config="as=1 seq=2 device=Line-out"
+hint.hdac.0.cad0.nid21.config="as=2 seq=0"
+.Ed
+.Pp
+will give 2 devices:
+.Li pcm0
+for 5.1 playback via 3 rear connectors (line-out and retasked
+mic and line-in) and headset (headphones and mic) at front connectors.
+.Li pcm1
+for internal speaker playback.
+On headphones connection rear connectors will be muted.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio chipsets:
+.Pp
+.Bl -bullet -compact
+.It
+ATI SB450
+.It
+ATI SB600
+.It
+Intel 631x/632xESB
+.It
+Intel 82801F
+.It
+Intel 82801G
+.It
+Intel 82801H
+.It
+Intel 82801I
+.It
+nVidia MCP51
+.It
+nVidia MCP55
+.It
+nVidia MCP61A
+.It
+nVidia MCP61B
+.It
+nVidia MCP65A
+.It
+nVidia MCP65B
+.It
+nVidia MCP67A
+.It
+nVidia MCP67B
+.It
+SiS 966
+.It
+VIA VT8251/8237A
+.El
+.Pp
+Generic audio chipsets compatible with the Intel HDA specification should work,
+but have not been verified yet.
+The following codecs have been verified to work:
+.Pp
+.Bl -bullet -compact
+.It
+Analog Devices AD1981HD
+.It
+Analog Devices AD1983
+.It
+Analog Devices AD1984
+.It
+Analog Devices AD1986A
+.It
+Analog Devices AD1988
+.It
+Analog Devices AD1988B
+.It
+CMedia CMI9880
+.It
+Conexant Venice
+.It
+Conexant Waikiki
+.It
+Realtek ALC260
+.It
+Realtek ALC262
+.It
+Realtek ALC268
+.It
+Realtek ALC660
+.It
+Realtek ALC861
+.It
+Realtek ALC861VD
+.It
+Realtek ALC880
+.It
+Realtek ALC882
+.It
+Realtek ALC883
+.It
+Realtek ALC885
+.It
+Realtek ALC888
+.It
+Realtek ALC889
+.It
+Sigmatel STAC9205
+.It
+Sigmatel STAC9220
+.It
+Sigmatel STAC9220D / 9223D
+.It
+Sigmatel STAC9221
+.It
+Sigmatel STAC9221D
+.It
+Sigmatel STAC9227D
+.It
+Sigmatel STAC9227X
+.It
+Sigmatel STAC9228D
+.It
+Sigmatel STAC9228X
+.It
+Sigmatel STAC9229D
+.It
+Sigmatel STAC9229X
+.It
+Sigmatel STAC9230D
+.It
+Sigmatel STAC9230X
+.It
+Sigmatel STAC9271D
+.It
+Sigmatel STAC9872AK
+.It
+VIA VT1708
+.It
+VIA VT1709
+.El
+.Sh SEE ALSO
+.Xr sound 4 ,
+.Xr device.hints 5 ,
+.Xr loader.conf 5 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Stephane E. Potvin Aq sepotvin@videotron.ca ,
+.An Ariff Abdullah Aq ariff@FreeBSD.org
+and
+.An Alexander Motin Aq mav@FreeBSD.org .
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org ,
+.An Alexander Motin Aq mav@FreeBSD.org
+and
+.An Giorgos Keramidas Aq keramida@FreeBSD.org .
+.Sh BUGS
+A few Hardware/OEM vendors tend to screw up BIOS settings, thus
+rendering the
+.Nm
+driver useless, which usually results in a state where the
+.Nm
+driver seems to attach and work, but without any sound.
+.Pp
+Due to OSS limitation multichannel (not multidevice) playback is not
+supported.
diff --git a/share/man/man4/snd_ich.4 b/share/man/man4/snd_ich.4
new file mode 100644
index 0000000..c415fb8
--- /dev/null
+++ b/share/man/man4/snd_ich.4
@@ -0,0 +1,105 @@
+.\" Copyright (c) 2004 Jorge Mario G. Mazo
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_ICH 4
+.Os
+.Sh NAME
+.Nm snd_ich
+.Nd "Intel ICH PCI and compatible bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_ich"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_ich_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to Intel ICH and compatible audio devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+AMD 768
+.It
+AMD 8111
+.It
+Intel 443MX
+.It
+Intel ICH
+.It
+Intel ICH revision 1
+.It
+Intel ICH2
+.It
+Intel ICH3
+.It
+Intel ICH4
+.It
+Intel ICH5
+.It
+Intel ICH6
+.It
+Intel ICH7
+.It
+NVIDIA nForce
+.It
+NVIDIA nForce2
+.It
+NVIDIA nForce2 400
+.It
+NVIDIA nForce3
+.It
+NVIDIA nForce3 250
+.It
+NVIDIA nForce4
+.It
+SiS 7012
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.2 .
+.Sh AUTHORS
+This manual page was written by
+.An Jorge Mario G. Mazo Aq jgutie11@eafit.edu.co .
diff --git a/share/man/man4/snd_maestro.4 b/share/man/man4/snd_maestro.4
new file mode 100644
index 0000000..d630a33
--- /dev/null
+++ b/share/man/man4/snd_maestro.4
@@ -0,0 +1,78 @@
+.\" Copyright (c) 2004 Jorge Mario G. Mazo
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_MAESTRO 4
+.Os
+.Sh NAME
+.Nm snd_maestro
+.Nd "ESS Maestro bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_maestro"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_maestro_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to ESS Maestro based sound chips.
+This chipset is very popular in notebook computers, but it is
+also very used in a wide selection of cheap OEM sound cards.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following PCI sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+ESS Technology Maestro-1
+.It
+ESS Technology Maestro-2
+.It
+ESS Technology Maestro-2E
+.El
+.Sh SEE ALSO
+.Xr snd_maestro3 4 ,
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.2 .
+.Sh AUTHORS
+This manual page was written by
+.An Jorge Mario G. Mazo Aq jgutie11@eafit.edu.co .
diff --git a/share/man/man4/snd_maestro3.4 b/share/man/man4/snd_maestro3.4
new file mode 100644
index 0000000..4fadd04
--- /dev/null
+++ b/share/man/man4/snd_maestro3.4
@@ -0,0 +1,94 @@
+.\" Copyright (c) 2001 Scott Long
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_MAESTRO3 4
+.Os
+.Sh NAME
+.Nm snd_maestro3
+.Nd "ESS Maestro3/Allegro-1 bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_maestro3"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_maestro3_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the ESS Maestro3 and Allegro-1 sound chips
+under the PCM framework.
+These chips are mostly found in laptop computers and feature an AC97 mixer,
+a multi-channel sample rate converter that can mix up to four digital audio
+streams in hardware, recording support, and external volume control buttons.
+.Pp
+The firmware for the sound processor is licensed under the GNU Public
+License, and thus this driver is not included in the default
+.Pa GENERIC
+kernel.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+ESS Technology Allegro-1
+.It
+ESS Technology Maestro3
+.El
+.Sh DIAGNOSTICS
+The hardware volume control buttons can be connected to two different pin
+sets (GPIO or GD) on the chip, depending on the manufacturer.
+The driver has no way of determining this configuration, so a hint may be
+used to override the default guess.
+The default setting for hardware volume control assumes that GD pins
+are wired to control the hardware volume.
+For systems that have the GPIO pins wired to the hardware volume control
+buttons, add the line
+.Dq Li hint.pcm.0.hwvol_config="0"
+to the file
+.Pa /boot/device.hints
+to override the default setting.
+.Sh SEE ALSO
+.Xr sound 4 ,
+.Xr loader.conf 5
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.3 .
+.Sh AUTHORS
+.An Scott Long Aq scottl@FreeBSD.org
+.An Darrel Anderson Aq anderson@cs.duke.edu
diff --git a/share/man/man4/snd_mss.4 b/share/man/man4/snd_mss.4
new file mode 100644
index 0000000..76ef183
--- /dev/null
+++ b/share/man/man4/snd_mss.4
@@ -0,0 +1,116 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd December 1, 2005
+.Dt SND_MSS 4
+.Os
+.Sh NAME
+.Nm snd_mss
+.Nd "Microsoft Sound System ISA PnP/non-PnP bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_mss"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_mss_load="YES"
+.Ed
+.Pp
+Non-PnP cards require the following lines in
+.Xr device.hints 5 :
+.Bd -literal -offset indent
+hint.pcm.0.at="isa"
+hint.pcm.0.irq="10"
+hint.pcm.0.drq="1"
+hint.pcm.0.flags="0x0"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach to the supported audio devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+AD1845
+.It
+AD1848
+.It
+Aztech 2320
+.It
+CMedia CMI8330
+.It
+Crystal Semiconductor CS4231
+.It
+Crystal Semiconductor CS4232
+.It
+Crystal Semiconductor CS4234
+.It
+Crystal Semiconductor CS4235
+.It
+Crystal Semiconductor CS4236
+.It
+Crystal Semiconductor CS4237
+.It
+ENSONIQ SoundscapeVIVO ENS4081
+.It
+NeoMagic 256AV (non-AC97)
+.It
+OPTi 924
+.It
+OPTi 925
+.It
+OPTi 930
+.It
+OPTi 931
+.It
+OPTi 933
+.It
+Yamaha OPL-SA2
+.It
+Yamaha OPL-SA3
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.2.6 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
diff --git a/share/man/man4/snd_neomagic.4 b/share/man/man4/snd_neomagic.4
new file mode 100644
index 0000000..430220c
--- /dev/null
+++ b/share/man/man4/snd_neomagic.4
@@ -0,0 +1,74 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd December 1, 2005
+.Dt SND_NEOMAGIC 4
+.Os
+.Sh NAME
+.Nm snd_neomagic
+.Nd "NeoMagic 256AV/ZX bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_neomagic"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_neomagic_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach to the NeoMagic 256AV/ZX audio devices.
+These chips are mostly found in laptop computers.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+NeoMagic 256AV
+.It
+NeoMagic 256ZX
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
diff --git a/share/man/man4/snd_sbc.4 b/share/man/man4/snd_sbc.4
new file mode 100644
index 0000000..8b53c8e
--- /dev/null
+++ b/share/man/man4/snd_sbc.4
@@ -0,0 +1,132 @@
+.\"
+.\" Copyright (c) 1999 Seigo Tanimura
+.\" 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$
+.\"
+.Dd February 17, 2007
+.Dt SND_SBC 4
+.Os
+.Sh NAME
+.Nm snd_sbc ,
+.Nm snd_sb16 ,
+.Nm snd_sb8
+.Nd Creative Sound Blaster ISA and compatible bridge device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_sbc"
+.Cd "device snd_sb16"
+.Cd "device snd_sb8"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following lines in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_sbc_load="YES"
+snd_sb16_load="YES"
+snd_sb8_load="YES"
+.Ed
+.Pp
+Non-PnP cards require the following lines in
+.Xr device.hints 5 :
+.Bd -literal -offset indent
+hint.sbc.0.at="isa"
+hint.sbc.0.port="0x220"
+hint.sbc.0.irq="5"
+hint.sbc.0.drq="1"
+hint.sbc.0.flags="0x15"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to Creative Sound Blaster ISA (mostly SB16 or SB8, known as
+SoundBlaster Pro) compatible audio cards.
+.Pp
+The value of flags specifies the secondary DMA channel.
+If the secondary
+DMA channel is C, set the flags to (C | 0x10).
+For a sound card without the
+secondary DMA channel, the flags should be set to zero.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+Avance Asound 110
+.It
+Avance Logic ALS100+
+.It
+Avance Logic ALS120
+.It
+Creative SB16
+.It
+Creative SB32
+.It
+Creative AWE64
+.It
+Creative AWE64 Gold
+.It
+Creative ViBRA16C
+.It
+Creative ViBRA16X
+.It
+ESS ES1681
+.It
+ESS ES1688
+.It
+ESS ES1868
+.It
+ESS ES1869
+.It
+ESS ES1878
+.It
+ESS ES1879
+.It
+ESS ES1888
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It sb_dspwr(XX) timed out.
+A command to the DSP has timed out.
+Check the I/O port configuration.
+.It bad irq XX (5/7/9/10 valid)
+The IRQ given to the driver is not valid.
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An Seigo Tanimura Aq tanimura@r.dl.itc.u-tokyo.ac.jp
diff --git a/share/man/man4/snd_solo.4 b/share/man/man4/snd_solo.4
new file mode 100644
index 0000000..55e12fc
--- /dev/null
+++ b/share/man/man4/snd_solo.4
@@ -0,0 +1,66 @@
+.\" Copyright (c) 2004 Atte Peltomaki
+.\" 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$
+.\"
+.Dd November 28, 2005
+.Dt SND_SOLO 4
+.Os
+.Sh NAME
+.Nm snd_solo
+.Nd "ESS Solo-1/1E PCI bridge device driver"
+.Sh SYNOPSIS
+.Cd "device sound"
+.Cd "device snd_solo"
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver
+.Xr sound 4
+to attach to the ESS Solo-1x PCI cards.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following sound cards:
+.Pp
+.Bl -bullet -compact
+.It
+ESS Solo-1 (ES1938 Chipset)
+.It
+ESS Solo-1E (ES1946 Chipset)
+.El
+.Pp
+Note that older ESS ISA cards with ES18xx chipset are supported via
+.Xr snd_ess 4
+and/or
+.Xr snd_sbc 4 .
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.1 .
+.Sh AUTHORS
+.An "Cameron Grant" Aq cg@FreeBSD.org
diff --git a/share/man/man4/snd_spicds.4 b/share/man/man4/snd_spicds.4
new file mode 100644
index 0000000..7b95b86
--- /dev/null
+++ b/share/man/man4/snd_spicds.4
@@ -0,0 +1,89 @@
+.\" Copyright (c) 2006 Alexander Leidinger
+.\" 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$
+.\"
+.Dd May 28, 2007
+.Dt SND_SPICDS 4
+.Os
+.Sh NAME
+.Nm snd_spicds
+.Nd "I2S SPI audio codec driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device snd_spicds"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_spicds_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+I2S codec driver is used by several sound drivers for soundcards which use
+the supported codec chips.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following codecs:
+.Pp
+.Bl -bullet -compact
+.It
+AK4358
+.It
+AK4381
+.It
+AK4396
+.It
+AK4524
+.It
+AK4528
+.It
+WM8770
+.El
+.Sh SEE ALSO
+.Xr snd_envy24 4 ,
+.Xr snd_envy24ht 4 ,
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 6.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Konstantin Dimitrov
+based upon the
+.Xr snd_envy24 4
+driver.
+This manual page was written by
+.An Alexander Leidinger Aq netchild@FreeBSD.org .
diff --git a/share/man/man4/snd_t4dwave.4 b/share/man/man4/snd_t4dwave.4
new file mode 100644
index 0000000..ef91665
--- /dev/null
+++ b/share/man/man4/snd_t4dwave.4
@@ -0,0 +1,77 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd December 1, 2005
+.Dt SND_T4DWAVE 4
+.Os
+.Sh NAME
+.Nm snd_t4dwave
+.Nd "Trident 4DWave bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_t4dwave"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_t4dwave_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach to Trident 4DWave audio devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio devices:
+.Pp
+.Bl -bullet -compact
+.It
+Acer Labs M5451
+.It
+SIS 7018
+.It
+Trident 4DWave DX
+.It
+Trident 4DWave NX
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
diff --git a/share/man/man4/snd_uaudio.4 b/share/man/man4/snd_uaudio.4
new file mode 100644
index 0000000..3cc9d12
--- /dev/null
+++ b/share/man/man4/snd_uaudio.4
@@ -0,0 +1,108 @@
+.\" $NetBSD: uaudio.4,v 1.15 2002/02/12 19:53:57 jdolecek Exp $
+.\"
+.\" Copyright (c) 1999 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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$
+.\"
+.Dd December 15, 2005
+.Dt SND_UAUDIO 4
+.Os
+.Sh NAME
+.Nm snd_uaudio
+.Nd USB audio device driver
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device usb"
+.Cd "device snd_uaudio"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_uaudio_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for
+.Tn USB
+audio class devices.
+.Pp
+A
+.Tn USB
+audio device consists of a number of components:
+input terminals (e.g.\& USB digital input), output terminals (e.g.\&
+speakers), and a number of units in between (e.g.\& volume control).
+.Pp
+Refer to the
+.Ql USB Audio Class Specification
+for more information.
+.Sh SEE ALSO
+.Xr sound 4 ,
+.Xr usb 4
+.Rs
+.%T "USB Audio Class Specifications"
+.%O http://www.usb.org/developers/devclass_docs/
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 4.7 .
+.Sh AUTHORS
+This manual page was adopted from
+.Nx 1.6
+and modified for
+.Fx
+by
+.An Hiten Pandya Aq hmp@FreeBSD.org .
+.Sh BUGS
+The
+.Tn PCM
+framework in
+.Fx ,
+as of this writing, does not handle device un-registrations in a properly
+abstracted manner, i.e., a detach request is refused by the
+.Tn PCM
+framework if the device is in use.
+For
+.Tn USB
+and supposedly other detach-able busses, it is necessary to allow the
+device un-registration to complete successfully, otherwise the driver
+leaves wild pointers to invalid data structures and thus leading to a panic.
diff --git a/share/man/man4/snd_via8233.4 b/share/man/man4/snd_via8233.4
new file mode 100644
index 0000000..377fbd3
--- /dev/null
+++ b/share/man/man4/snd_via8233.4
@@ -0,0 +1,105 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd November 29, 2006
+.Dt SND_VIA8233 4
+.Os
+.Sh NAME
+.Nm snd_via8233
+.Nd "VIA Technologies VT8233 bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_via8233"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_via8233_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach to the VIA VT8233 audio devices.
+These audio chipsets are integrated in the southbridge on many VIA based
+motherboards.
+.Ss Runtime Configuration
+The following
+.Xr sysctl 8
+variables are available in addition to those available to all
+.Xr sound 4
+devices:
+.Bl -tag -width ".Va dev.pcm.%d.polling" -offset indent
+.It Va dev.pcm.%d.polling
+Experimental polling mode, where the driver operates by querying the device
+state on each tick using
+.Xr callout 9 .
+Polling is disabled by default.
+Do not enable it unless you are facing weird interrupt problems or if the
+device cannot generate interrupts at all.
+.El
+.Sh HARDWARE
+The
+.Nm
+driver supports the following audio chipsets:
+.Pp
+.Bl -bullet -compact
+.It
+VIA VT8233
+.It
+VIA VT8233A
+.It
+VIA VT8233C
+.It
+VIA VT8235
+.It
+VIA VT8237
+.It
+VIA VT8251
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.7 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+driver
+does not support S/PDIF.
+There is partial support in the code, so implementing it should be fairly
+easy if the right hardware is available.
diff --git a/share/man/man4/snd_via82c686.4 b/share/man/man4/snd_via82c686.4
new file mode 100644
index 0000000..183684e
--- /dev/null
+++ b/share/man/man4/snd_via82c686.4
@@ -0,0 +1,71 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd December 1, 2005
+.Dt SND_VIA82C686 4
+.Os
+.Sh NAME
+.Nm snd_via82c686
+.Nd "VIA Technologies 82C686A bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_via82c686"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_via82c686_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach audio devices based on the VIA 82C686A chipset.
+.Sh HARDWARE
+The
+.Nm
+driver supports audio devices based on the following chipset:
+.Pp
+.Bl -bullet -compact
+.It
+VIA 82C686A
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.2 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
diff --git a/share/man/man4/snd_vibes.4 b/share/man/man4/snd_vibes.4
new file mode 100644
index 0000000..716a65c
--- /dev/null
+++ b/share/man/man4/snd_vibes.4
@@ -0,0 +1,71 @@
+.\" Copyright (c) 2005 Joel Dahl
+.\" 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$
+.\"
+.Dd December 1, 2005
+.Dt SND_VIBES 4
+.Os
+.Sh NAME
+.Nm snd_vibes
+.Nd "S3 SonicVibes bridge device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel, place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device sound"
+.Cd "device snd_vibes"
+.Ed
+.Pp
+Alternatively, to load the driver as a module at boot time, place the
+following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+snd_vibes_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+bridge driver allows the generic audio driver,
+.Xr sound 4 ,
+to attach audio devices based on the S3 SonicVibes chipset.
+.Sh HARDWARE
+The
+.Nm
+driver supports audio devices based on the following chipset:
+.Pp
+.Bl -bullet -compact
+.It
+S3 SonicVibes
+.El
+.Sh SEE ALSO
+.Xr sound 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+This manual page was written by
+.An Joel Dahl Aq joel@FreeBSD.org .
diff --git a/share/man/man4/snp.4 b/share/man/man4/snp.4
new file mode 100644
index 0000000..2545164
--- /dev/null
+++ b/share/man/man4/snp.4
@@ -0,0 +1,99 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 5, 2008
+.Dt SNP 4
+.Os
+.Sh NAME
+.Nm snp
+.Nd tty snoop interface
+.Sh SYNOPSIS
+.In sys/snoop.h
+.Ft int
+.Fn ioctl fd SNPSTTY &dev
+.Ft int
+.Fn ioctl fd SNPGTTY &dev
+.Ft int
+.Fn ioctl fd FIONREAD &result
+.Sh DESCRIPTION
+.Pa /dev/snp
+is a snoop device which allows users to attach to any tty
+and watch activities on it.
+The kernel must be compiled with
+.Cd "device snp" ,
+or the
+.Nm
+module must be loaded,
+for these devices to be available.
+.Pp
+To associate a given
+.Nm
+device with a tty to be observed, open the
+.Nm
+device and a tty device, and then issue the
+.Dv SNPSTTY
+ioctl on
+.Nm
+device.
+The argument passed to the
+.Xr ioctl 2
+is the address of a variable of type
+.Vt int ,
+holding the file descriptor of a tty device.
+To detach the
+.Nm
+device from a tty use a pointer to a value of
+\-1.
+.Pp
+The
+.Dv SNPGTTY
+ioctl returns information about the current tty attached to
+the open
+.Nm
+device.
+.Pp
+The
+.Dv FIONREAD
+ioctl returns a positive value equal to the number of characters
+in a read buffer.
+Special values defined are:
+.Bl -tag -width ".Dv SNP_TTYCLOSE"
+.It Dv SNP_OFLOW
+device overflow occurred, device detached.
+.It Dv SNP_TTYCLOSE
+tty not attached.
+.It Dv SNP_DETACH
+.Nm
+device has been detached by user or tty device has been closed
+and detached.
+.El
+.Sh SEE ALSO
+.Xr pty 4 ,
+.Xr sio 4 ,
+.Xr kldload 8 ,
+.Xr watch 8
+.Sh HISTORY
+The
+.Nm
+device first appeared in
+.Fx 2.1 .
+In
+.Fx 8.0
+the
+.Nm
+driver was rewritten to work with the replaced TTY subsystem.
+.Sh AUTHORS
+The author of the current implementation is
+.An Ed Schouten Aq ed@FreeBSD.org .
+Previous versions of
+.Nm
+were based on code written by
+.An Ugen J.S. Antsilevich Aq ugen@NetVision.net.il .
+.Sh BUGS
+This version of
+.Nm
+does not return proper error codes when calling
+.Dv FIONREAD .
+It also does not allow
+.Dv SNPSTTY
+to detach itself from the TTY.
diff --git a/share/man/man4/spic.4 b/share/man/man4/spic.4
new file mode 100644
index 0000000..a398007
--- /dev/null
+++ b/share/man/man4/spic.4
@@ -0,0 +1,61 @@
+.\"
+.\" Copyright (c) 2002 Will Andrews
+.\" 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$
+.\"
+.Dd May 20, 2002
+.Dt SPIC 4
+.Os
+.Sh NAME
+.Nm spic
+.Nd Sony Programmable I/O Controller device driver
+.Sh SYNOPSIS
+.Cd "device spic"
+.Sh DESCRIPTION
+The
+.Nm
+driver allows using
+.Xr moused 8
+to drive the Sony Vaio Jogdial device found on several Sony Vaio models.
+It works by mapping the forward, backwards, up, and down inputs to
+.Dq l ,
+.Dq r ,
+.Dq u ,
+and
+.Dq d ,
+respectively.
+From that a program reading the Jogdial can decide what to do.
+Some actions might include scrolling, mimicking mouse buttons, launching
+applications, or other useful things.
+.Sh SEE ALSO
+.Xr moused 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 4.6 .
+.Sh AUTHORS
+.An Nick Sayer Aq nsayer@FreeBSD.org
+.An Will Andrews Aq will@FreeBSD.org
diff --git a/share/man/man4/spkr.4 b/share/man/man4/spkr.4
new file mode 100644
index 0000000..1f39a1ee
--- /dev/null
+++ b/share/man/man4/spkr.4
@@ -0,0 +1,249 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 10, 2005
+.Dt SPKR 4
+.Os
+.Sh NAME
+.Nm speaker ,
+.Nm spkr
+.Nd console speaker device driver
+.Sh SYNOPSIS
+.Cd device speaker
+.In dev/speaker/speaker.h
+.Sh DESCRIPTION
+The speaker device driver allows applications to control the PC console
+speaker on an
+.Tn IBM-PC Ns --compatible
+machine running
+.Fx .
+.Pp
+Only one process may have this device open at any given time;
+.Xr open 2
+and
+.Xr close 2
+are used to lock and relinquish it.
+An attempt to open when
+another process has the device locked will return -1 with an
+.Er EBUSY
+error
+indication.
+Writes to the device are interpreted as `play strings' in a
+simple ASCII melody notation.
+An
+.Xr ioctl 2
+request
+for tone generation at arbitrary
+frequencies is also supported.
+.Pp
+Sound-generation does not monopolize the processor; in fact, the driver
+spends most of its time sleeping while the PC hardware is emitting
+tones.
+Other processes may emit beeps while the driver is running.
+.Pp
+Applications may call
+.Xr ioctl 2
+on a speaker file descriptor to control the
+speaker driver directly; definitions for the
+.Xr ioctl 2
+interface are in
+.In dev/speaker/speaker.h .
+The
+.Li tone_t
+structure used in these calls has two fields,
+specifying a frequency (in Hz) and a duration (in 1/100ths of a second).
+A frequency of zero is interpreted as a rest.
+.Pp
+At present there are two such
+.Xr ioctl 2
+calls.
+.Dv SPKRTONE
+accepts a pointer to a
+single tone structure as third argument and plays it.
+.Dv SPKRTUNE
+accepts a
+pointer to the first of an array of tone structures and plays them in
+continuous sequence; this array must be terminated by a final member with
+a zero duration.
+.Pp
+The play-string language is modeled on the PLAY statement conventions of
+.Tn IBM
+Advanced BASIC 2.0.
+The
+.Li MB ,
+.Li MF ,
+and
+.Li X
+primitives of PLAY are not
+useful in a timesharing environment and are omitted.
+The `octave-tracking'
+feature and the slur mark are new.
+.Pp
+There are 84 accessible notes numbered 1-84 in 7 octaves, each running from
+C to B, numbered 0-6; the scale is equal-tempered A440 and octave 3 starts
+with middle C.
+By default, the play function emits half-second notes with the
+last 1/16th second being `rest time'.
+.Pp
+Play strings are interpreted left to right as a series of play command groups;
+letter case is ignored.
+Play command groups are as follows:
+.Bl -tag -width CDEFGABxx
+.It Li CDEFGAB
+Letters A through G cause the corresponding note to be played in the
+current octave.
+A note letter may optionally be followed by an
+.Dq Em "accidental sign" ,
+one of # + or -; the first two of these cause it to be sharped one
+half-tone, the last causes it to be flatted one half-tone.
+It may
+also be followed by a time value number and by sustain dots (see
+below).
+Time values are interpreted as for the L command below.
+.It Ns Li O Sy n
+If
+.Sy n
+is numeric, this sets the current octave.
+.Sy n
+may also be one of
+.Li L
+or
+.Li N
+to enable or disable octave-tracking (it is disabled by default).
+When octave-tracking is on, interpretation of a pair of letter notes
+will change octaves if necessary in order to make the smallest
+possible jump between notes.
+Thus ``olbc'' will be played as
+``olb>c'', and ``olcb'' as ``olc<b''.
+Octave locking is disabled for
+one letter note following >, < and O[0123456].
+(The octave-locking
+feature is not supported in
+.Tn IBM
+BASIC.)
+.It Li >
+Bump the current octave up one.
+.It Li <
+Drop the current octave down one.
+.It Ns Li N Sy n
+Play note
+.Sy n ,
+.Sy n
+being 1 to 84 or 0 for a rest of current time value.
+May be followed by sustain dots.
+.It Ns Li L Sy n
+Sets the current time value for notes.
+The default is
+.Li L4 ,
+quarter or crotchet notes.
+The lowest possible value is 1; values up
+to 64 are accepted.
+.Li L1
+sets whole notes,
+.Li L2
+sets half notes,
+.Li L4
+sets quarter notes, etc.
+.It Ns Li P Sy n
+Pause (rest), with
+.Sy n
+interpreted as for
+.Li L Sy n .
+May be followed by
+sustain dots.
+May also be written
+.Li ~ .
+.It Ns Li T Sy n
+Sets the number of quarter notes per minute; default is 120.
+Musical
+names for common tempi are:
+.Bd -literal -offset indent
+ Tempo Beats Per Minute
+very slow Larghissimo
+ Largo 40-60
+ Larghetto 60-66
+ Grave
+ Lento
+ Adagio 66-76
+slow Adagietto
+ Andante 76-108
+medium Andantino
+ Moderato 108-120
+fast Allegretto
+ Allegro 120-168
+ Vivace
+ Veloce
+ Presto 168-208
+very fast Prestissimo
+.Ed
+.It Li M[LNS]
+Set articulation.
+.Li MN
+.Li ( N
+for normal) is the default; the last 1/8th of
+the note's value is rest time.
+You can set
+.Li ML
+for legato (no rest space) or
+.Li MS
+for staccato (1/4 rest space).
+.El
+.Pp
+Notes (that is,
+.Li CDEFGAB
+or
+.Li N
+command character groups) may be followed by
+sustain dots.
+Each dot causes the note's value to be lengthened by one-half
+for each one.
+Thus, a note dotted once is held for 3/2 of its undotted value;
+dotted twice, it is held 9/4, and three times would give 27/8.
+.Pp
+A note and its sustain dots may also be followed by a slur mark (underscore).
+This causes the normal micro-rest after the note to be filled in, slurring it
+to the next one.
+(The slur feature is not supported in
+.Tn IBM
+BASIC.)
+.Pp
+Whitespace in play strings is simply skipped and may be used to separate
+melody sections.
+.Sh FILES
+.Bl -tag -width /dev/speakerxx
+.It Pa /dev/speaker
+speaker device file
+.El
+.Sh SEE ALSO
+.Xr spkrtest 8
+.Sh HISTORY
+The
+.Nm
+device appeared in
+.Fx 1.0 .
+.Sh AUTHORS
+.An Eric S. Raymond Aq esr@snark.thyrsus.com
+June 1990
+.Sh "PORTED BY"
+.An Andrew A. Chernov Aq ache@astral.msk.su
+.Sh BUGS
+Due to roundoff in the pitch tables and slop in the tone-generation and timer
+hardware (neither of which was designed for precision), neither pitch accuracy
+nor timings will be mathematically exact.
+There is no volume control.
+.Pp
+The action of two or more sustain dots does not reflect standard musical
+notation, in which each dot adds half the value of the previous dot
+modifier, not half the value of the note as modified.
+Thus, a note dotted
+once is held for 3/2 of its undotted value; dotted twice, it is held 7/4,
+and three times would give 15/8.
+The multiply-by-3/2 interpretation,
+however, is specified in the
+.Tn IBM
+BASIC manual and has been retained for
+compatibility.
+.Pp
+In play strings which are very long (longer than your system's physical I/O
+blocks) note suffixes or numbers may occasionally be parsed incorrectly due
+to crossing a block boundary.
diff --git a/share/man/man4/splash.4 b/share/man/man4/splash.4
new file mode 100644
index 0000000..36ba883
--- /dev/null
+++ b/share/man/man4/splash.4
@@ -0,0 +1,257 @@
+.\"
+.\" Copyright (c) 1999
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd January 15, 2006
+.Dt SPLASH 4
+.Os
+.Sh NAME
+.Nm splash
+.Nd splash screen / screen saver interface
+.Sh SYNOPSIS
+.Cd "device splash"
+.Sh DESCRIPTION
+The
+.Nm
+pseudo device driver adds support for the splash screen and screen
+savers to the kernel.
+This driver is required if the splash bitmap image is to be loaded or
+any screen saver is to be used.
+.Ss Splash screen
+You can load and display an arbitrary bitmap image file as a welcome banner
+on the screen when the system is about to start.
+This image will remain on the screen
+during kernel initialization process
+until the login prompt appears on the screen
+or until a screen saver is loaded and initialized.
+The image will also disappear if you hit any key,
+although this may not work immediately
+if the kernel is still probing devices.
+.Pp
+If you specify the
+.Fl c
+or
+.Fl v
+boot option when loading the kernel, the splash image will not appear.
+However, it
+is still loaded and can be used as a screen saver later: see below.
+.Pp
+In order to display the bitmap, the bitmap file itself and the
+matching splash image decoder module must be loaded by the boot loader.
+Currently the following decoder modules are available:
+.Pp
+.Bl -tag -width splash_decoder -compact
+.It Pa splash_bmp.ko
+W*ndows BMP file decoder.
+While the BMP file format allows images of various color depths, this
+decoder currently only handles 256 color bitmaps.
+Bitmaps of other color depths will not be displayed.
+.It Pa splash_pcx.ko
+ZSoft PCX decoder.
+This decoder currently only supports version 5 8-bpp single-plane
+images.
+.El
+.Pp
+The
+.Sx EXAMPLES
+section illustrates how to set up the splash screen.
+.Pp
+If the standard VGA video mode is used,
+the size of the bitmap must be 320x200 or less.
+If you enable the VESA mode support in the kernel,
+either by statically linking the VESA module or by loading the VESA module
+(see
+.Xr vga 4 ) ,
+you can load bitmaps up to a resolution of 1024x768, depending on the VESA
+BIOS and the amount of video memory on the video card.
+.Ss Screen saver
+The screen saver will activate when the system is considered idle: i.e.\&
+when the user has not typed a key or moved the mouse for a specified period
+of time.
+As the screen saver is an optional module,
+it must be explicitly loaded into memory.
+Currently the following screen saver modules are available:
+.Pp
+.Bl -tag -width splash_module.ko -compact
+.It Pa blank_saver.ko
+This screen saver simply blanks the screen.
+.It Pa daemon_saver.ko
+Animated
+.Bx
+Daemon screen saver.
+.It Pa fade_saver.ko
+The screen will gradually fade away.
+.It Pa fire_saver.ko
+A fire which becomes higher as load increases.
+.It Pa green_saver.ko
+If the monitor supports power saving mode, it will be turned off.
+.It Pa logo_saver.ko
+Animated graphical
+.Bx
+Daemon.
+.It Pa rain_saver.ko
+Draws a shower on the screen.
+.It Pa snake_saver.ko
+Draws a snake of string.
+.It Pa star_saver.ko
+Twinkling stars.
+.It Pa warp_saver.ko
+Streaking stars.
+.El
+.Pp
+Screen saver modules can be loaded using
+.Xr kldload 8 :
+.Pp
+.Dl kldload logo_saver
+.Pp
+The timeout value in seconds can be specified as follows:
+.Pp
+.Dl vidcontrol -t N
+.Pp
+Alternatively, you can set the
+.Ar saver
+variable in the
+.Pa /etc/rc.conf
+to the screen saver of your choice and
+the timeout value to the
+.Ar blanktime
+variable so that the screen saver is automatically loaded
+and the timeout value is set when the system starts.
+.Pp
+The screen saver may be instantly activated by hitting the
+.Ar saver
+key: the defaults are
+.Em Shift-Pause
+on the AT enhanced keyboard and
+.Em Shift-Ctrl-NumLock/Pause
+on the AT 84 keyboard.
+You can change the
+.Ar saver
+key by modifying the keymap
+(see
+.Xr kbdcontrol 1 ,
+.Xr keymap 5 ) ,
+and assign the
+.Ar saver
+function to a key of your preference.
+.Pp
+The screen saver will not run if the screen is not in text mode.
+.Ss Splash screen as a screen saver
+If you load a splash image but do not load a screen saver,
+you can continue using the splash module as a screen saver.
+The screen blanking interval can be specified as described in the
+.Sx Screen saver
+section above.
+.\".Sh DRIVER CONFIGURATION
+.Sh FILES
+.Bl -tag -width /boot/kernel/splash_xxxx.ko -compact
+.It Pa /boot/defaults/loader.conf
+boot loader configuration defaults
+.It Pa /etc/rc.conf
+system configuration information
+.It Pa /boot/kernel/splash_*.ko
+splash image decoder modules
+.It Pa /boot/kernel/*_saver.ko
+screen saver modules
+.It Pa /boot/kernel/vesa.ko
+the VESA support module
+.El
+.Sh EXAMPLES
+In order to load the splash screen or the screen saver, you must
+have the following line in the kernel configuration file.
+.Pp
+.Dl device splash
+.Pp
+Next, edit
+.Pa /boot/loader.conf
+(see
+.Xr loader.conf 5 )
+and include the following lines:
+.Bd -literal -offset indent
+splash_bmp_load="YES"
+bitmap_load="YES"
+bitmap_name="/boot/chuck.bmp"
+.Ed
+.Pp
+In the above example, the file
+.Pa /boot/chuck.bmp
+is loaded.
+In the following example, the VESA module
+is loaded so that a bitmap file which cannot be displayed in standard
+VGA modes may be shown using one of the VESA video modes.
+.Bd -literal -offset indent
+splash_pcx_load="YES"
+vesa_load="YES"
+bitmap_load="YES"
+bitmap_name="/boot/chuck.pcx"
+.Ed
+.Pp
+If the VESA support is statically linked to the kernel, it is not
+necessary to load the VESA module.
+Just load the bitmap file and the splash decoder module as in the
+first example above.
+.\".Sh DIAGNOSTICS
+.Sh CAVEATS
+Both the splash screen and the screen saver work with
+.Xr syscons 4
+only.
+.Sh SEE ALSO
+.Xr vidcontrol 1 ,
+.Xr syscons 4 ,
+.Xr vga 4 ,
+.Xr loader.conf 5 ,
+.Xr rc.conf 5 ,
+.Xr kldload 8 ,
+.Xr kldunload 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver and this manual page were written by
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
+The
+.Pa splash_bmp
+module was written by
+.An Michael Smith Aq msmith@FreeBSD.org
+and
+.An Kazutaka Yokota .
+The
+.Pa splash_pcx
+module was written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org
+based on the
+.Pa splash_bmp
+code.
+.Sh BUGS
+If you load a screen saver while another screen saver has already
+been loaded, the first screen saver will not be automatically unloaded
+and will remain in memory, wasting kernel memory space.
diff --git a/share/man/man4/sppp.4 b/share/man/man4/sppp.4
new file mode 100644
index 0000000..519120f
--- /dev/null
+++ b/share/man/man4/sppp.4
@@ -0,0 +1,240 @@
+.\"
+.\" Copyright (c) 1997, 2001 Joerg Wunsch
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 25, 2008
+.Dt SPPP 4
+.Os
+.Sh NAME
+.Nm sppp
+.Nd point to point protocol network layer for synchronous lines
+.Sh SYNOPSIS
+.Cd "device sppp"
+.Sh DESCRIPTION
+The
+.Nm
+network layer implements the state machine and the Link Control
+Protocol (LCP) of the
+.Em point to point protocol (PPP)
+as described in RFC 1661.
+Note that this layer does not provide
+network interfaces of its own, it is rather intended to be layered on
+top of drivers providing a synchronous point-to-point connection that
+wish to run a PPP stack over it.
+The corresponding network interfaces
+have to be provided by these hardware drivers.
+.Pp
+The
+.Nm
+layer provides three basic modes of operation.
+The default mode,
+with no special flags to be set, is to create the PPP connection
+(administrative
+.Em Open
+event to the LCP layer) as soon as the interface is taken up with the
+.Xr ifconfig 8
+command.
+Taking the interface down again will terminate the LCP layer
+and thus all other layers on top.
+The link will also terminate itself as
+soon as no Network Control Protocol (NCP) is open anymore, indicating
+that the lower layers are no longer needed.
+.Pp
+Setting the link-level flag
+.Em link0
+with
+.Xr ifconfig 8
+will cause the respective network interface to go into
+.Em passive
+mode.
+This means, the administrative
+.Em Open
+event to the LCP layer will be delayed until after the lower layers
+signals an
+.Em Up
+event (rise of
+.Dq carrier ) .
+This can be used by lower layers to support
+a dialin connection where the physical layer is not available
+immediately at startup, but only after some external event arrives.
+Receipt of a
+.Em Down
+event from the lower layer will not take the interface completely down
+in this case.
+.Pp
+Finally, setting the flag
+.Em link1
+will cause the interface to operate in
+.Em dial-on-demand
+mode.
+This is also only useful if the lower layer supports the notion
+of a carrier.
+Upon configuring the
+respective interface, it will delay the administrative
+.Em Open
+event to the LCP layer until either an outbound network packet
+arrives, or until the lower layer signals an
+.Em Up
+event, indicating an inbound connection.
+As with passive mode, receipt
+of a
+.Em Down
+event (loss of carrier) will not automatically take the interface down,
+thus it remains available for further connections.
+.Pp
+The
+.Nm
+layer supports the
+.Em debug
+interface flag that can be set with
+.Xr ifconfig 8 .
+If this flag is set, the various control protocol packets being
+exchanged as well as the option negotiation between both ends of the
+link will be logged at level
+.Dv LOG_DEBUG .
+This can be helpful to examine configuration problems during the first
+attempts to set up a new configuration.
+Without this flag being set,
+only the major phase transitions will be logged at level
+.Dv LOG_INFO .
+.Pp
+It is possible to leave the local interface IP address open for
+negotiation by setting it to 0.0.0.0.
+This requires that the remote
+peer can correctly supply a value for it based on the identity of the
+caller, or on the remote address supplied by this side.
+Due to the
+way the IPCP option negotiation works, this address is being supplied
+late during the negotiation, which might cause the remote peer to make
+wrong assumptions.
+.Pp
+In a similar spirit the remote address can be set to the magical
+value
+.Li 0.0.0. Ns Em *
+which means that we do not care what address the remote
+side will use, as long as it is not 0.0.0.0.
+This is useful if your ISP has several dial-in
+servers.
+You can of course
+.Nm route Cm add Ar something_or_other 0.0.0. Ns Em *
+and it will do exactly what you would want it to.
+.Pp
+The PAP and CHAP authentication protocols as described in RFC 1334,
+and RFC 1994 resp., are also implemented.
+Their parameters are being
+controlled by the
+.Xr spppcontrol 8
+utility.
+.Pp
+VJ header compression is implemented, and enabled by default.
+It can be
+disabled using
+.Xr spppcontrol 8 .
+.Sh DIAGNOSTICS
+.Bl -diag
+.It <ifname><ifnum>: <proto> illegal <event> in state <statename>
+An event happened that should not happen for the current state
+the respective control protocol is in.
+See RFC 1661 for a description
+of the state automaton.
+.It <ifname><ifnum>: loopback
+The state automaton detected a line loopback (that is, it was talking
+with itself).
+The interface will be temporarily disabled.
+.It <ifname><ifnum>: up
+The LCP layer is running again, after a line loopback had previously
+been detected.
+.It <ifname><ifnum>: down
+The keepalive facility detected the line being unresponsive.
+Keepalive must be explicitly requested by the lower layers in order to
+take place.
+.El
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr ppp 4 ,
+.Xr ifconfig 8 ,
+.Xr spppcontrol 8
+.Rs
+.%A W. Simpson, Editor
+.%T "The Point-to-Point Protocol (PPP)"
+.%O RFC 1661
+.Re
+.Rs
+.%A G. McGregor
+.%T "The PPP Internet Protocol Control Protocol (IPCP)"
+.%O RFC 1332
+.Re
+.Rs
+.%A B. Lloyd
+.%A W. Simpson
+.%T "PPP Authentication Protocols"
+.%O RFC 1334
+.Re
+.Rs
+.%A W. Simpson
+.%T "PPP Challenge Handshake Authentication Protocol (CHAP)"
+.%O RFC 1994
+.Re
+.Sh AUTHORS
+.An -nosplit
+The original implementation of
+.Nm
+was written in 1994 at Cronyx Ltd., Moscow by
+.An Serge Vakulenko Aq vak@cronyx.ru .
+.An J\(:org Wunsch
+.Aq joerg_wunsch@uriah.heep.sax.de
+rewrote a large part in 1997 in order
+to fully implement the state machine as described in RFC 1661, so it
+could also be used for dialup lines.
+He also wrote this man page.
+Serge later on wrote a basic implementation for PAP and CHAP, which
+served as the base for the current implementation, done again by
+.An J\(:org Wunsch .
+.Sh BUGS
+Many.
+.Pp
+Currently, only the
+.Em IPCP
+control protocol and
+.Xr ip 4
+network protocol is supported.
+More NCPs should be implemented, as well as other control protocols
+for authentication and link quality reporting.
+.Pp
+Negotiation loop avoidance is not fully implemented.
+If the negotiation
+does not converge, this can cause an endless loop.
+.Pp
+The various parameters that should be adjustable per RFC 1661 are
+currently hard-coded into the kernel, and should be made accessible
+through
+.Xr spppcontrol 8 .
+.Pp
+.Em Passive
+mode has not been tested extensively.
+.Pp
+Link-level compression protocols should be supported.
diff --git a/share/man/man4/ste.4 b/share/man/man4/ste.4
new file mode 100644
index 0000000..1e652df
--- /dev/null
+++ b/share/man/man4/ste.4
@@ -0,0 +1,188 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt STE 4
+.Os
+.Sh NAME
+.Nm ste
+.Nd "Sundance Technologies ST201 Fast Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device ste"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ste_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters and embedded
+controllers based on the Sundance Technologies ST201 PCI Fast
+Ethernet controller chip.
+.Pp
+The Sundance ST201 uses bus master DMA and is designed to be a
+3Com Etherlink XL workalike.
+It uses the same DMA descriptor
+structure and is very similar in operation, however its register
+layout is different.
+The ST201 has a 64-bit multicast hash filter
+and a single perfect filter entry for the station address.
+It supports both 10 and 100Mbps speeds in either full or half duplex
+using an MII transceiver.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Sundance Technologies ST201 based Fast Ethernet
+adapters and embedded controllers including:
+.Pp
+.Bl -bullet -compact
+.It
+D-Link DFE-530TXS
+.It
+D-Link DFE-550TX
+.It
+D-Link DFE-580TX
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ste%d: couldn't map ports/memory"
+A fatal initialization error has occurred.
+.It "ste%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "ste%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "ste%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "ste%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.It "ste%d: chip is in D3 power state -- setting to D0"
+This message applies only to adapters which support power
+management.
+Some operating systems place the controller in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The controller loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform a second
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr ifconfig 8
+.Rs
+.%T Sundance ST201 data sheet
+.%O http://www.sundanceti.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ee.columbia.edu .
diff --git a/share/man/man4/stf.4 b/share/man/man4/stf.4
new file mode 100644
index 0000000..660e33e
--- /dev/null
+++ b/share/man/man4/stf.4
@@ -0,0 +1,267 @@
+.\" $KAME: stf.4,v 1.35 2001/05/02 06:24:49 itojun Exp $
+.\"
+.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE 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.
+.\" 3. Neither the name of the project 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 PROJECT 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 PROJECT 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$
+.\"
+.Dd April 27, 2001
+.Dt STF 4
+.Os
+.Sh NAME
+.Nm stf
+.Nd
+.Tn 6to4
+tunnel interface
+.Sh SYNOPSIS
+.Cd "device stf"
+.Sh DESCRIPTION
+The
+.Nm
+interface supports
+.Dq 6to4
+IPv6 in IPv4 encapsulation.
+It can tunnel IPv6 traffic over IPv4, as specified in
+.Li RFC3056 .
+.Pp
+For ordinary nodes in 6to4 site, you do not need
+.Nm
+interface.
+The
+.Nm
+interface is necessary for site border router
+(called
+.Dq 6to4 router
+in the specification).
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Pp
+Due to the way 6to4 protocol is specified,
+.Nm
+interface requires certain configuration to work properly.
+Single
+(no more than 1)
+valid 6to4 address needs to be configured to the interface.
+.Dq A valid 6to4 address
+is an address which has the following properties.
+If any of the following properties are not satisfied,
+.Nm
+raises runtime error on packet transmission.
+Read the specification for more details.
+.Bl -bullet
+.It
+matches
+.Li 2002:xxyy:zzuu::/48
+where
+.Li xxyy:zzuu
+is a hexadecimal notation of an IPv4 address for the node.
+IPv4 address can be taken from any of interfaces your node has.
+Since the specification forbids the use of IPv4 private address,
+the address needs to be a global IPv4 address.
+.It
+Subnet identifier portion
+(48th to 63rd bit)
+and interface identifier portion
+(lower 64 bits)
+are properly filled to avoid address collisions.
+.El
+.Pp
+If you would like the node to behave as a relay router,
+the prefix length for the IPv6 interface address needs to be 16 so that
+the node would consider any 6to4 destination as
+.Dq on-link .
+If you would like to restrict 6to4 peers to be inside certain IPv4 prefix,
+you may want to configure IPv6 prefix length as
+.Dq 16 + IPv4 prefix length .
+.Nm
+interface will check the IPv4 source address on packets,
+if the IPv6 prefix length is larger than 16.
+.Pp
+.Nm
+can be configured to be ECN friendly.
+This can be configured by
+.Dv IFF_LINK1 .
+See
+.Xr gif 4
+for details.
+.Pp
+Please note that 6to4 specification is written as
+.Dq accept tunnelled packet from everyone
+tunnelling device.
+By enabling
+.Nm
+device, you are making it much easier for malicious parties to inject
+fabricated IPv6 packet to your node.
+Also, malicious party can inject an IPv6 packet with fabricated source address
+to make your node generate improper tunnelled packet.
+Administrators must take caution when enabling the interface.
+To prevent possible attacks,
+.Nm
+interface filters out the following packets.
+Note that the checks are no way complete:
+.Bl -bullet
+.It
+Packets with IPv4 unspecified address as outer IPv4 source/destination
+.Pq Li 0.0.0.0/8
+.It
+Packets with loopback address as outer IPv4 source/destination
+.Pq Li 127.0.0.0/8
+.It
+Packets with IPv4 multicast address as outer IPv4 source/destination
+.Pq Li 224.0.0.0/4
+.It
+Packets with limited broadcast address as outer IPv4 source/destination
+.Pq Li 255.0.0.0/8
+.It
+Packets with private address as outer IPv4 source/destination
+.Pq Li 10.0.0.0/8 , 172.16.0.0/12 , 192.168.0.0/16
+.It
+Packets with subnet broadcast address as outer IPv4 source/destination.
+The check is made against subnet broadcast addresses for
+all of the directly connected subnets.
+.It
+Packets that does not pass ingress filtering.
+Outer IPv4 source address must meet the IPv4 topology on the routing table.
+Ingress filter can be turned off by
+.Dv IFF_LINK2
+bit.
+.It
+The same set of rules are applied against the IPv4 address embedded into
+inner IPv6 address, if the IPv6 address matches 6to4 prefix.
+.El
+.Pp
+It is recommended to filter/audit
+incoming IPv4 packet with IP protocol number 41, as necessary.
+It is also recommended to filter/audit encapsulated IPv6 packets as well.
+You may also want to run normal ingress filter against inner IPv6 address
+to avoid spoofing.
+.Pp
+By setting the
+.Dv IFF_LINK0
+flag on the
+.Nm
+interface, it is possible to disable the input path,
+making the direct attacks from the outside impossible.
+Note, however, there are other security risks exist.
+If you wish to use the configuration,
+you must not advertise your 6to4 address to others.
+.\"
+.Sh EXAMPLES
+Note that
+.Li 8504:0506
+is equal to
+.Li 133.4.5.6 ,
+written in hexadecimals.
+.Bd -literal
+# ifconfig ne0 inet 133.4.5.6 netmask 0xffffff00
+# ifconfig stf0 inet6 2002:8504:0506:0000:a00:5aff:fe38:6f86 \\
+ prefixlen 16 alias
+.Ed
+.Pp
+The following configuration accepts packets from IPv4 source
+.Li 9.1.0.0/16
+only.
+It emits 6to4 packet only for IPv6 destination 2002:0901::/32
+(IPv4 destination will match
+.Li 9.1.0.0/16 ) .
+.Bd -literal
+# ifconfig ne0 inet 9.1.2.3 netmask 0xffff0000
+# ifconfig stf0 inet6 2002:0901:0203:0000:a00:5aff:fe38:6f86 \\
+ prefixlen 32 alias
+.Ed
+.Pp
+The following configuration uses the
+.Nm
+interface as an output-only device.
+You need to have alternative IPv6 connectivity
+(other than 6to4)
+to use this configuration.
+For outbound traffic, you can reach other 6to4 networks efficiently via
+.Nm stf .
+For inbound traffic, you will not receive any 6to4-tunneled packets
+(less security drawbacks).
+Be careful not to advertise your 6to4 prefix to others
+.Pq Li 2002:8504:0506::/48 ,
+and not to use your 6to4 prefix as a source.
+.Bd -literal
+# ifconfig ne0 inet 133.4.5.6 netmask 0xffffff00
+# ifconfig stf0 inet6 2002:8504:0506:0000:a00:5aff:fe38:6f86 \\
+ prefixlen 16 alias deprecated link0
+# route add -inet6 2002:: -prefixlen 16 ::1
+# route change -inet6 2002:: -prefixlen 16 ::1 -ifp stf0
+.Ed
+.\"
+.Sh SEE ALSO
+.Xr gif 4 ,
+.Xr inet 4 ,
+.Xr inet6 4
+.Pp
+.Pa http://www.6bone.net/6bone_6to4.html
+.Rs
+.%A Brian Carpenter
+.%A Keith Moore
+.%T "Connection of IPv6 Domains via IPv4 Clouds"
+.%D February 2001
+.%R RFC
+.%N 3056
+.Re
+.Rs
+.%A Jun-ichiro itojun Hagino
+.%T "Possible abuse against IPv6 transition technologies"
+.%D July 2000
+.%N draft-itojun-ipv6-transition-abuse-01.txt
+.%O work in progress
+.Re
+.\"
+.Sh HISTORY
+The
+.Nm
+device first appeared in WIDE/KAME IPv6 stack.
+.\"
+.Sh BUGS
+No more than one
+.Nm
+interface is allowed for a node,
+and no more than one IPv6 interface address is allowed for an
+.Nm
+interface.
+It is to avoid source address selection conflicts
+between IPv6 layer and IPv4 layer,
+and to cope with ingress filtering rule on the other side.
+This is a feature to make
+.Nm
+work right for all occasions.
diff --git a/share/man/man4/stg.4 b/share/man/man4/stg.4
new file mode 100644
index 0000000..1d088b0
--- /dev/null
+++ b/share/man/man4/stg.4
@@ -0,0 +1,110 @@
+.\"
+.\" Copyright (c) 2003 Bob Bishop
+.\" 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. 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$
+.\"
+.Dd August 8, 2004
+.Dt STG 4
+.Os
+.Sh NAME
+.Nm stg
+.Nd driver for Future Domain based SCSI controllers
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device stg"
+.Pp
+For one or more ISA cards:
+.Cd "device isa"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.stg.0.at="isa"
+.Pp
+For one or more PCI cards:
+.Cd "device pci"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+stg_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for ISA, PCCARD and PCI controllers based on
+Future Domain SCSI controller chips including the TMC-16C30, 16C50 and 32C60.
+.Sh HARDWARE
+Controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec 2920/A
+.It
+Future Domain SCSI2GO
+.It
+Future Domain TMC-18XX/3260
+.It
+IBM SCSI PCMCIA Card
+.It
+ICM PSC-2401 SCSI
+.It
+MELCO IFC-SC
+.It
+RATOC REX-5536, REX-5536AM, REX-5536M, REX-9836A
+.El
+.Pp
+Note that the Adaptec 2920C is supported by the
+.Xr ahc 4
+driver.
+.Sh SEE ALSO
+.Xr ahc 4 ,
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr sa 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+device driver has been developed for
+.Nx Ns / Ns Tn pc98
+and ported for
+.Fx .
+It first appeared in
+.Fx 2.2
+with PAO and merged in
+.Fx 4.2 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Naofumi HONDA .
diff --git a/share/man/man4/stge.4 b/share/man/man4/stge.4
new file mode 100644
index 0000000..a3ff67a
--- /dev/null
+++ b/share/man/man4/stge.4
@@ -0,0 +1,230 @@
+.\" $NetBSD: stge.4,v 1.7 2003/02/14 15:20:20 grant Exp $
+.\"
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Jason R. Thorpe.
+.\"
+.\" 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$
+.\"
+.Dd July 25, 2006
+.Dt STGE 4
+.Os
+.Sh NAME
+.Nm stge
+.Nd Sundance/Tamarack TC9021 Gigabit Ethernet adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device stge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_stge_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for various NICs based on the
+Sundance/Tamarack TC9021 Gigabit Ethernet controller chip.
+.Pp
+The Sundance/Tamarack TC9021 is found on the D-Link DGE-550T
+and the Antares Microsystems Gigabit Ethernet board.
+It uses an external PHY or an external 10-bit interface.
+.Pp
+All NICs supported by the
+.Nm
+driver have TCP/UDP/IP checksum offload for both receive and
+transmit, hardware VLAN tag stripping/insertion features, and
+receive interrupt moderation mechanism as well as a 64-bit
+multicast hash filter.
+The Sundance/Tamarack TC9021 supports TBI (ten bit interface)
+and GMII transceivers, which means it can be used with either
+copper or 1000baseX fiber applications.
+.Pp
+The Sundance/Tamarack TC9021 also supports jumbo frames, which can be
+configured via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit jumbo frames.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+The Sundance/Tamarack supports 1000Mbps in
+.Cm autoselect
+mode only.
+.\" .It Cm 1000baseSX
+.\" Set 1000Mbps (Gigabit Ethernet) operation.
+.\" Both
+.\" .Cm full-duplex
+.\" and
+.\" .Cm half-duplex
+.\" modes are supported.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+The
+.Nm
+driver also supports one special link option for 1000baseTX cards:
+.Bl -tag -width ".Cm link0"
+.It Cm link0
+With 1000baseTX cards, establishing a link between two ports requires
+that one port is configured as master and the other one as slave.
+With autonegotiation,
+the master/slave settings will be chosen automatically.
+However when manually selecting the link state, it is necessary to
+force one side of the link to be a master and the other a slave.
+The
+.Nm
+driver configures the ports as slaves by default.
+Setting the
+.Cm link0
+flag with
+.Xr ifconfig 8
+will set a port as a master instead.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver provides support for various NICs based on the Sundance/Tamarack
+TC9021 based Gigabit Ethernet controller chips, including:
+.Pp
+.Bl -bullet -compact
+.It
+Antares Microsystems Gigabit Ethernet
+.It
+ASUS NX1101 Gigabit Ethernet
+.It
+D-Link DL-4000 Gigabit Ethernet
+.It
+IC Plus IP1000A Gigabit Ethernet
+.It
+Sundance ST-2021 Gigabit Ethernet
+.It
+Sundance ST-2023 Gigabit Ethernet
+.It
+Sundance TC9021 Gigabit Ethernet
+.It
+Tamarack TC9021 Gigabit Ethernet
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as both
+.Xr sysctl 8
+variables and
+.Xr loader 8
+tunables:
+.Bl -tag -width indent
+.It Va dev.stge.%d.rxint_nframe
+Number of frames between RxDMAComplete interrupts.
+The accepted range is 1 to 255, default value is 8 frames.
+The interface has to be brought down and up again before a change takes effect.
+.It Va dev.stge.%d.rxint_dmawait
+Maximum amount of time to wait in 1us increments before issuing
+an Rx interrupt if the number of frames received is less than
+.Va rxint_nframe .
+The accepted range is 0 to 4194, default value is 30 microseconds.
+The interface has to be brought down and up again before a change takes effect.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver was ported from
+.Nx
+and first appeared in
+.Fx 6.2 .
+The
+.Nx
+version was written by
+.An Jason R. Thorpe
+.Aq thorpej@NetBSD.org .
+.Sh AUTHORS
+The
+.Nm
+driver was ported by
+.An Pyun YongHyeon
+.Aq yongari@FreeBSD.org .
diff --git a/share/man/man4/sym.4 b/share/man/man4/sym.4
new file mode 100644
index 0000000..547d205
--- /dev/null
+++ b/share/man/man4/sym.4
@@ -0,0 +1,384 @@
+.\"
+.\" Device driver optimized for the Symbios/LSI 53C896/53C895A/53C1010
+.\" PCI SCSI controllers.
+.\"
+.\" Copyright (C) 1999-2000 Gerard Roudier <groudier@club-internet.fr>
+.\"
+.\" This driver also supports the following Symbios/LSI PCI SCSI chips:
+.\" 53C810A, 53C825A, 53C860, 53C875, 53C876, 53C885, 53C895,
+.\" 53C810, 53C815, 53C825 and the 53C1510D is 53C8XX mode.
+.\"
+.\"
+.\" This driver for FreeBSD-CAM is derived from the Linux sym53c8xx driver.
+.\" Copyright (C) 1998-1999 Gerard Roudier
+.\"
+.\" The sym53c8xx driver is derived from the ncr53c8xx driver that had been
+.\" a port of the FreeBSD ncr driver to Linux-1.2.13.
+.\"
+.\" The original ncr driver has been written for 386bsd and FreeBSD by
+.\" Wolfgang Stanglmeier <wolf@cologne.de>
+.\" Stefan Esser <se@mi.Uni-Koeln.de>
+.\" Copyright (C) 1994 Wolfgang Stanglmeier
+.\"
+.\" The initialization code, and part of the code that addresses
+.\" FreeBSD-CAM services is based on the aic7xxx driver for FreeBSD-CAM
+.\" written by Justin T. Gibbs.
+.\"
+.\" Other major contributions:
+.\"
+.\" NVRAM detection and reading.
+.\" Copyright (C) 1997 Richard Waltham <dormouse@farsrobt.demon.co.uk>
+.\"
+.\" ----------------------------------------------------------------------------
+.\"
+.\" 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.
+.\"
+.\" 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 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$
+.\"
+.Dd August 19, 2004
+.Dt SYM 4
+.Os
+.Sh NAME
+.Nm sym
+.Nd NCR/Symbios/LSI Logic 53C8XX PCI SCSI host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device scbus"
+.Cd "device sym"
+.Pp
+To disable PCI parity checking (needed for broken bridges):
+.Cd "options SYM_SETUP_PCI_PARITY=<boolean>"
+.Pp
+To control driver probing against HVD buses:
+.Cd "options SYM_SETUP_SCSI_DIFF=<bit combination>"
+.Pp
+To control chip attachment balancing between the ncr driver and this driver:
+.Cd "options SYM_SETUP_LP_PROBE_MAP=<bit combination>"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+sym_load="YES"
+.Ed
+.Sh DESCRIPTION
+This driver provides support for the Symbios/LSI Logic 53C8XX
+PCI SCSI controllers.
+.Pp
+Driver features include support for wide SCSI busses and fast10, fast20,
+fast40 and fast80-dt synchronous data transfers depending on controller
+capabilities.
+It also provides generic SCSI features such as tagged command
+queueing and auto-request sense.
+This driver is configured by default
+for a maximum of 446 outstanding commands per bus, 8 LUNs per target
+and 64 tagged tasks per LUN.
+These numbers are not so much limited by design
+as they are considered reasonable values for current SCSI technology.
+These values can be increased by changing appropriate
+constants in driver header files (not recommended).
+.Pp
+This driver supports the entire Symbios 53C8XX family of PCI SCSI
+controllers.
+It also offers the advantage of architectural improvements available
+only with newer chips.
+.Pp
+.Nm
+notably handles phase mismatch from SCRIPTS for the 53C896, 53C895A,
+and 53C1010 cores.
+As a result, it guarantees that no more than 1 interrupt
+per IO completion is delivered to the CPU, and that the SCRIPTS processor
+is never stalled waiting for CPU attention in normal situations.
+.Pp
+.Nm
+also uses LOAD/STORE SCRIPTS instructions for chips that support it.
+Only the early 810, 815 and 825 NCR chips do not support LOAD/STORE.
+Use of LOAD/STORE instead of MEMORY MOVE allows SCRIPTS to access IO
+registers internal to the chip (no external PCI cycles).
+As a result, the driver guarantees that no PCI self-mastering will occur
+for chips that support LOAD/STORE.
+.Pp
+LOAD/STORE instructions are also faster than MEMORY MOVE because
+they do not involve the chip DMA FIFO and are coded on 2 DWORDs
+instead of 3.
+.Pp
+For the early NCR 810, 815 and 825 chips, the driver uses a separate
+SCRIPTS set that uses MEMORY MOVE instructions for data movements.
+This is because LOAD/STORE are not supported by these chips.
+.Pp
+HVD/LVD capable controllers (895, 895A, 896, and 897) report
+the actual bus mode in the STEST4 chip IO registers.
+This feature
+allows the driver to safely probe against bus mode and to set up the chip
+accordingly.
+By default the driver only supports HVD for these chips.
+For other chips that can support HVD but not LVD, the driver has to probe
+implementation dependent registers (GPIO) in order to detect HVD bus mode.
+Only HVD implementations that conform with Symbios Logic recommendations can
+be detected by the driver.
+When the
+.Ar SYM_SETUP_SCSI_DIFF
+kernel option is assigned
+a value of 1, the driver will also probe against HVD for 825a, 875, 876 and
+885 chips, assuming Symbios Logic compatible implementation of HVD.
+.Pp
+When the
+.Ar SYM_SETUP_PCI_PARITY
+is assigned a value of 0, the
+driver will not enable PCI parity checking for 53C8XX devices.
+PCI parity
+checking should not be an option for PCI SCSI controllers, but some
+systems have been reported to fail using 53C8XX chips, due to spurious or
+permanent PCI parity errors detected.
+This option is supplied for
+convenience but it is neither recommended nor supported.
+.Pp
+The generic
+.Xr ncr 4
+driver also supports SYM53C8XX based PCI SCSI controllers,
+except for the SYM53C1010, which is only supported by the
+.Nm
+driver.
+.Pp
+By default, when both the
+.Xr ncr 4
+and
+.Nm
+drivers are configured, the
+.Nm
+driver takes precedence over the
+.Xr ncr 4
+driver.
+The user can indicate a balancing of chip types between the two drivers
+by defining the
+.Ar SYM_SETUP_LP_PROBE_MAP
+kernel configuration option as follows:
+.Bl -column "0x40"
+.It Em "Bit Devices to be attached by ncr instead"
+.It "0x01 53C810a, 53C860"
+.It "0x02 53C825a, 53C875, 53C876, 53C885, 53C895"
+.It "0x04 53C895a, 53C896, 53C897, 53C1510d"
+.It "0x40 53C810, 53C815, 53C825"
+.El
+.Pp
+For example, if
+.Ar SYM_SETUP_LP_PROBE_MAP
+is supplied with the value 0x41, the
+.Xr ncr 4
+driver will attach to 53C810, 53C815, 53C825, 53C810a, and 53C860 based
+controllers,
+and the
+.Nm
+driver will attach to all other 53C8XX based controllers.
+.Pp
+When only the
+.Nm
+driver is configured, the
+.Ar SYM_SETUP_LP_PROBE_MAP
+option has no effect.
+Thus, in this case, the
+.Nm
+driver will attach all 53C8XX based controllers present in the system.
+.Pp
+This driver offers other options
+that are not currently exported to the user.
+They are defined and documented in the
+.Pa sym_conf.h
+driver file.
+Changing these options is not recommended unless absolutely necessary.
+Some of these
+options are planned to be exported through
+.Xr sysctl 3
+or an equivalent mechanism
+in a future driver releases and therefore,
+no compatibility is guaranteed.
+.Pp
+At initialization, the driver tries to detect and read user settings from
+controller NVRAM.
+The Symbios/Logic NVRAM layout and the Tekram NVRAM
+layout are currently supported.
+If the reading of the NVRAM succeeds, the
+following settings are taken into account and reported to CAM:
+.Pp
+.Bl -column "SCSI parity checking" "Symbios"
+.It Em "Host settings Symbios Tekram"
+.It "SCSI parity checking Y N"
+.It "Host SCSI ident Y Y"
+.It "Verbose messages Y N"
+.It "Scan targets hi-lo Y N"
+.It "Avoid SCSI bus reset Y N"
+.El
+.Bl -column "Synchronous period" "Symbios"
+.It Em "Device settings Symbios Tekram"
+.It "Synchronous period Y Y"
+.It "SCSI bus width Y Y"
+.It "Queue tag enable Y Y"
+.It "Number of tags NA Y"
+.It "Disconnect enable Y Y"
+.It "Scan at boot time Y N"
+.It "Scan LUN Y N"
+.El
+.Pp
+Devices that are configured as disabled for 'scan' in the NVRAM are not
+reported to CAM at system start-up.
+They can be discovered later using
+the
+.Ql camcontrol rescan
+command.
+.Pp
+The table below summarizes the main features and capabilities of the
+NCR/Symbios/LSI Logic 53C8XX family of PCI SCSI controllers.
+.Pp
+.Bl -column sym53c1510d "80MHz" "Width" "SRAM" "PCI64"
+.It Em "Chip Sync Width SRAM PCI64 Supported"
+.It "sym53c810 10MHz 8Bit N N Y"
+.It "sym53c810a 10MHz 8Bit N N Y"
+.It "sym53c815 10MHz 8Bit N N Y"
+.It "sym53c825 10MHz 16Bit N N Y"
+.It "sym53c825a 10MHz 16Bit 4KB N Y"
+.It "sym53c860 20MHz 8Bit N N Y"
+.It "sym53c875 20MHz 16Bit 4KB N Y"
+.It "sym53c876 20MHz 16Bit 4KB N Y"
+.It "sym53c885 20MHz 16Bit 4KB N Y"
+.It "sym53c895 40MHz 16Bit 4KB N Y"
+.It "sym53c895A 40MHz 16Bit 8KB N Y"
+.It "sym53c896 40MHz 16Bit 8KB Y Y"
+.It "sym53c897 40MHz 16Bit 8KB Y Y"
+.It "sym53c1510D 40MHz 16Bit 4KB Y Y"
+.It "sym53c1010 80MHz 16Bit 8KB Y Y"
+.El
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the following Symbios/LSI Logic PCI SCSI
+controllers:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn 53C810
+.It
+.Tn 53C810A
+.It
+.Tn 53C815
+.It
+.Tn 53C825
+.It
+.Tn 53C825A
+.It
+.Tn 53C860
+.It
+.Tn 53C875
+.It
+.Tn 53C876
+.It
+.Tn 53C895
+.It
+.Tn 53C895A
+.It
+.Tn 53C896
+.It
+.Tn 53C897
+.It
+.Tn 53C1000
+.It
+.Tn 53C1000R
+.It
+.Tn 53C1010-33
+.It
+.Tn 53C1010-66
+.It
+.Tn 53C1510D
+.El
+.Pp
+The SCSI controllers supported by
+.Nm
+can be either embedded on a motherboard, or on
+one of the following add-on boards:
+.Pp
+.Bl -bullet -compact
+.It
+ASUS SC-200, SC-896
+.It
+Data Technology DTC3130 (all variants)
+.It
+DawiControl DC2976UW
+.It
+Diamond FirePort (all)
+.It
+I-O DATA SC-UPCI (PC-98)
+.It
+Logitec LHA-521UA (PC-98)
+.It
+NCR cards (all)
+.It
+Symbios cards (all)
+.It
+Tekram DC390W, 390U, 390F, 390U2B, 390U2W, 390U3D, and 390U3W
+.It
+Tyan S1365
+.El
+.Sh MISC
+The DEC KZPCA-AA is a rebadged SYM8952U.
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr da 4 ,
+.Xr ncr 4 ,
+.Xr sa 4 ,
+.Xr scsi 4 ,
+.Xr camcontrol 8
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Gerard Roudier
+and is derived from the
+Linux sym53c8xx driver from the same author.
+The sym53c8xx driver is derived from the ncr53c8xx driver,
+which was ported from the
+.Fx
+.Xr ncr 4
+driver to Linux-1.2.13.
+The original
+.Xr ncr 4
+driver was written for
+.Bx 386
+and
+.Fx
+by
+.An Wolfgang Stanglmeier
+and
+.An Stefan Esser .
+.Sh BUGS
+No known bugs.
diff --git a/share/man/man4/syncache.4 b/share/man/man4/syncache.4
new file mode 100644
index 0000000..45dcf2c
--- /dev/null
+++ b/share/man/man4/syncache.4
@@ -0,0 +1,215 @@
+.\"
+.\" syncache - TCP SYN caching to handle SYN flood DoS.
+.\"
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 22, 2008
+.Dt SYNCACHE 4
+.Os
+.Sh NAME
+.Nm syncache , syncookies
+.Nd
+.Xr sysctl 8
+MIBs for controlling TCP SYN caching
+.Sh SYNOPSIS
+.Bl -item -compact
+.It
+.Nm sysctl Cm net.inet.tcp.syncookies
+.It
+.Nm sysctl Cm net.inet.tcp.syncookies_only
+.El
+.Pp
+.Bl -item -compact
+.It
+.Nm sysctl Cm net.inet.tcp.syncache.hashsize
+.It
+.Nm sysctl Cm net.inet.tcp.syncache.bucketlimit
+.It
+.Nm sysctl Cm net.inet.tcp.syncache.cachelimit
+.It
+.Nm sysctl Cm net.inet.tcp.syncache.rexmtlimit
+.It
+.Nm sysctl Cm net.inet.tcp.syncache.count
+.El
+.Sh DESCRIPTION
+The
+.Nm
+.Xr sysctl 8
+MIB is used to control the TCP SYN caching in the system, which
+is intended to handle SYN flood Denial of Service attacks.
+.Pp
+When a TCP SYN segment is received on a port corresponding to a listen
+socket, an entry is made in the
+.Nm ,
+and a SYN,ACK segment is
+returned to the peer.
+The
+.Nm
+entry holds the TCP options from the initial SYN,
+enough state to perform a SYN,ACK retransmission, and takes up less
+space than a TCP control block endpoint.
+An incoming segment which contains an ACK for the SYN,ACK
+and matches a
+.Nm
+entry will cause the system to create a TCP control block
+with the options stored in the
+.Nm
+entry, which is then released.
+.Pp
+The
+.Nm
+protects the system from SYN flood DoS attacks by minimizing
+the amount of state kept on the server, and by limiting the overall size
+of the
+.Nm .
+.Pp
+.Nm Syncookies
+provides a way to virtually expand the size of the
+.Nm
+by keeping state regarding the initial SYN in the network.
+Enabling
+.Nm syncookies
+sends a cryptographic value in the SYN,ACK reply to
+the client machine, which is then returned in the client's ACK.
+If the corresponding entry is not found in the
+.Nm ,
+but the value
+passes specific security checks, the connection will be accepted.
+This is only used if the
+.Nm
+is unable to handle the volume of
+incoming connections, and a prior entry has been evicted from the cache.
+.Pp
+.Nm Syncookies
+have a certain number of disadvantages that a paranoid
+administrator may wish to take note of.
+Since the TCP options from the initial SYN are not saved, they are not
+applied to the connection, precluding use of features like window scale,
+timestamps, or exact MSS sizing.
+As the returning ACK establishes the connection, it may be possible for
+an attacker to ACK flood a machine in an attempt to create a connection.
+While steps have been taken to mitigate this risk, this may provide a way
+to bypass firewalls which filter incoming segments with the SYN bit set.
+.Pp
+To disable the
+.Nm syncache
+and run only with
+.Nm syncookies ,
+set
+.Va net.inet.tcp.syncookies_only
+to 1.
+.Pp
+The
+.Nm
+implements a number of variables in
+the
+.Va net.inet.tcp.syncache
+branch of the
+.Xr sysctl 3
+MIB.
+Several of these may be tuned by setting the corresponding
+variable in the
+.Xr loader 8 .
+.Bl -tag -width ".Va bucketlimit"
+.It Va hashsize
+Size of the
+.Nm
+hash table, must be a power of 2.
+Read-only, tunable via
+.Xr loader 8 .
+.It Va bucketlimit
+Limit on the number of entries permitted in each bucket of the hash table.
+This should be left at a low value to minimize search time.
+Read-only, tunable via
+.Xr loader 8 .
+.It Va cachelimit
+Limit on the total number of entries in the
+.Nm .
+Defaults to
+.Va ( hashsize No \(mu Va bucketlimit ) ,
+may be set lower to minimize memory
+consumption.
+Read-only, tunable via
+.Xr loader 8 .
+.It Va rexmtlimit
+Maximum number of times a SYN,ACK is retransmitted before being discarded.
+The default of 3 retransmits corresponds to a 45 second timeout, this value
+may be increased depending on the RTT to client machines.
+Tunable via
+.Xr sysctl 3 .
+.It Va count
+Number of entries present in the
+.Nm
+(read-only).
+.El
+.Pp
+Statistics on the performance of the
+.Nm
+may be obtained via
+.Xr netstat 1 ,
+which provides the following counts:
+.Bl -tag -width ".Li cookies received"
+.It Li "syncache entries added"
+Entries successfully inserted in the
+.Nm .
+.It Li retransmitted
+SYN,ACK retransmissions due to a timeout expiring.
+.It Li dupsyn
+Incoming SYN segment matching an existing entry.
+.It Li dropped
+SYNs dropped because SYN,ACK could not be sent.
+.It Li completed
+Successfully completed connections.
+.It Li "bucket overflow"
+Entries dropped for exceeding per-bucket size.
+.It Li "cache overflow"
+Entries dropped for exceeding overall cache size.
+.It Li reset
+RST segment received.
+.It Li stale
+Entries dropped due to maximum retransmissions or listen socket disappearance.
+.It Li aborted
+New socket allocation failures.
+.It Li badack
+Entries dropped due to bad ACK reply.
+.It Li unreach
+Entries dropped due to ICMP unreachable messages.
+.It Li "zone failures"
+Failures to allocate new
+.Nm
+entry.
+.It Li "cookies received"
+Connections created from segment containing ACK.
+.El
+.Sh SEE ALSO
+.Xr netstat 1 ,
+.Xr tcp 4 ,
+.Xr loader 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The existing
+.Nm
+implementation
+first appeared in
+.Fx 4.5 .
+The original concept of a
+.Nm
+originally appeared in
+.Bsx ,
+and was later modified by
+.Nx ,
+then further extended here.
+.Sh AUTHORS
+The
+.Nm
+code and manual page were written by
+.An Jonathan Lemon Aq jlemon@FreeBSD.org .
diff --git a/share/man/man4/syncer.4 b/share/man/man4/syncer.4
new file mode 100644
index 0000000..30b38e4
--- /dev/null
+++ b/share/man/man4/syncer.4
@@ -0,0 +1,92 @@
+.\" Copyright (c) 2000 Sheldon Hearn <sheldonh@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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 14, 2000
+.Dt SYNCER 4
+.Os
+.Sh NAME
+.Nm syncer
+.Nd file system synchronizer kernel process
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+kernel process helps protect the integrity of disk volumes
+by flushing volatile cached file system data to disk.
+.Pp
+The kernel places all
+.Xr vnode 9 Ns 's
+in a number of queues.
+The
+.Nm
+process works through the queues
+in a round-robin fashion,
+usually processing one queue per second.
+For each
+.Xr vnode 9
+on that queue,
+the
+.Nm
+process forces a write out to disk of its dirty buffers.
+.Pp
+The usual delay between the time buffers are dirtied
+and the time they are synced
+is controlled by the following
+.Xr sysctl 8
+tunable variables:
+.Bl -column "filedelayXXXX" "DefaultXX" "DescriptionXX"
+.It Em Variable Ta Em Default Ta Em Description
+.It Va kern.filedelay Ta 30 Ta "time to delay syncing files"
+.It Va kern.dirdelay Ta 29 Ta "time to delay syncing directories"
+.It Va kern.metadelay Ta 28 Ta "time to delay syncing metadata"
+.El
+.Sh SEE ALSO
+.Xr sync 2 ,
+.Xr fsck 8 ,
+.Xr sync 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+process is a descendant of the
+.Sq update
+command, which appeared in
+.At v6 ,
+and was usually started by
+.Pa /etc/rc
+when the system went multi-user.
+A kernel initiated
+.Sq update
+process first appeared in
+.Fx 2.0 .
+.Sh BUGS
+It is possible on some systems that a
+.Xr sync 2
+occurring simultaneously with a crash may cause
+file system damage.
+See
+.Xr fsck 8 .
diff --git a/share/man/man4/syscons.4 b/share/man/man4/syscons.4
new file mode 100644
index 0000000..3f6e9ca
--- /dev/null
+++ b/share/man/man4/syscons.4
@@ -0,0 +1,562 @@
+.\"
+.\" Copyright (c) 1999
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd October 22, 2006
+.Dt SYSCONS 4
+.Os
+.Sh NAME
+.Nm syscons ,
+.Nm sc
+.Nd the console driver
+.Sh SYNOPSIS
+.Cd "options MAXCONS=N"
+.Cd "options SC_ALT_MOUSE_IMAGE"
+.Cd "options SC_CUT_SEPCHARS=_characters_"
+.Cd "options SC_CUT_SPACES2TABS"
+.Cd "options SC_DISABLE_KDBKEY"
+.Cd "options SC_DISABLE_REBOOT"
+.Cd "options SC_HISTORY_SIZE=N"
+.Cd "options SC_MOUSE_CHAR=C"
+.Cd "options SC_NO_CUTPASTE"
+.Cd "options SC_NO_FONT_LOADING"
+.Cd "options SC_NO_HISTORY"
+.Cd "options SC_NO_PALETTE_LOADING"
+.Cd "options SC_NO_SUSPEND_VTYSWITCH"
+.Cd "options SC_NO_SYSMOUSE"
+.Cd "options SC_PIXEL_MODE"
+.Cd "options SC_TWOBUTTON_MOUSE"
+.Cd "options SC_NORM_ATTR=_attribute_"
+.Cd "options SC_NORM_REV_ATTR=_attribute_"
+.Cd "options SC_KERNEL_CONS_ATTR=_attribute_"
+.Cd "options SC_KERNEL_CONS_REV_ATTR=_attribute_"
+.Cd "options SC_DFLT_FONT"
+.Cd "makeoptions SC_DFLT_FONT=_font_name_"
+.Cd "device sc"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.sc.0.at="isa"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides multiple virtual terminals.
+It resembles the SCO color console driver.
+.Pp
+The
+.Nm
+driver is implemented on top of the keyboard driver
+.Pq Xr atkbd 4
+and the video card driver
+.Pq Xr vga 4
+and so requires both of them to be configured in the system.
+.Pp
+There can be only one
+.Nm
+device defined in the system.
+.Ss Virtual Terminals
+The
+.Nm
+driver provides multiple virtual terminals which appear as if they were
+separate terminals.
+One virtual terminal is considered current and exclusively
+occupies the screen and the keyboard; the other virtual terminals
+are placed in the background.
+.Pp
+In order to use virtual terminals, they must be individually
+marked ``on'' in
+.Pa /etc/ttys
+so that
+.Xr getty 8
+will recognize them to be active and run
+.Xr login 1
+to let the user log in to the system.
+By default, only the first eight virtual terminals are activated in
+.Pa /etc/ttys .
+.Pp
+You press the
+.Dv Alt
+key and a switch key to switch between
+virtual terminals.
+The following table summarizes the correspondence between the switch
+key and the virtual terminal.
+.Bd -literal -offset indent
+Alt-F1 ttyv0 Alt-F7 ttyv6 Shift-Alt-F1 ttyva
+Alt-F2 ttyv1 Alt-F8 ttyv7 Shift-Alt-F2 ttyvb
+Alt-F3 ttyv2 Alt-F9 ttyv8 Shift-Alt-F3 ttyvc
+Alt-F4 ttyv3 Alt-F10 ttyv9 Shift-Alt-F4 ttyvd
+Alt-F5 ttyv4 Alt-F11 ttyva Shift-Alt-F5 ttyve
+Alt-F6 ttyv5 Alt-F12 ttyvb Shift-Alt-F6 ttyvf
+.Ed
+.Pp
+You can also use the ``nscr'' key (usually the
+.Dv PrintScreen
+key on the AT Enhanced keyboard) to cycle available virtual terminals.
+.Pp
+The default number of available virtual terminals is 16.
+This can be changed with the kernel configuration option
+.Dv MAXCONS
+(see below).
+.Pp
+Note that the X server usually requires a virtual terminal for display
+purposes, so at least one terminal must be left unused by
+.Xr getty 8
+so that it can be used by the X server.
+.Ss Key Definitions and Function Key Strings
+The
+.Nm
+driver, in conjunction with the keyboard driver, allows the user
+to change key definitions and function key strings.
+The
+.Xr kbdcontrol 1
+command will load a key definition file (known as ``keymap'' file),
+dump the current keymap, and assign a string to a function key.
+See
+.Xr keyboard 4
+and
+.Xr kbdmap 5
+for the keymap file.
+.Pp
+You may want to set the
+.Ar keymap
+variable in
+.Pa /etc/rc.conf.local
+to the desired keymap file so that it will be automatically loaded
+when the system starts up.
+.Ss Software Font
+For most modern video cards, e.g., VGA, the
+.Nm
+driver and the video card driver allow the user to change
+the font used on the screen.
+The
+.Xr vidcontrol 1
+command can be used to load a font file from
+.Pa /usr/share/syscons/fonts .
+.Pp
+The font comes in various sizes: 8x8, 8x14 and 8x16.
+The 8x16 font is typically used for the VGA card in the
+80-column-by-25-line mode.
+Other video modes may require different font sizes.
+It is better to always load all three sizes of the same font.
+.Pp
+You may set
+.Ar font8x8 ,
+.Ar font8x14
+and
+.Ar font8x16
+variables in
+.Pa /etc/rc.conf
+to the desired font files so that they will be automatically loaded
+when the system starts up.
+.Pp
+Optionally you can specify a particular font file as the default.
+See the
+.Dv SC_DFLT_FONT
+option below.
+.Ss Screen Map
+If your video card does not support software fonts, you may still be able
+to achieve a similar effect by re-mapping the font built into your video card.
+Use
+.Xr vidcontrol 1
+to load a screen map file which defines the mapping between character codes.
+.Ss Mouse Support and Copy-and-Paste
+You can use your mouse to copy text on the screen and paste it as if
+it was typed by hand.
+You must be running the mouse daemon
+.Xr moused 8
+and enable the mouse cursor in the virtual terminal via
+.Xr vidcontrol 1 .
+.Pp
+Pressing mouse button 1 (usually the left button) will start selection.
+Releasing button 1 will end the selection process.
+The selected text will be marked by inverting foreground and
+background colors.
+You can press button 3 (usually the right button) to extend
+the selected region.
+The selected text is placed in the copy buffer and can be pasted
+at the cursor position by pressing button 2 (usually the
+middle button) as many times as you like.
+.Pp
+If your mouse has only two buttons, you may want to use the
+.Dv SC_TWOBUTTON_MOUSE
+option below to make the right button to paste the text.
+Alternatively you can make the mouse daemon
+emulate the middle button.
+See the man page for
+.Xr moused 8
+for more details.
+.Ss Back Scrolling
+The
+.Nm
+driver allows the user to browse the output which has ``scrolled off''
+the top of the screen.
+.Pp
+Press the ``slock'' key (usually
+.Dv ScrllLock
+/
+.Dv Scroll Lock
+or
+.Dv Pause
+on many keyboards) and the terminal is
+in the ``scrollback'' mode.
+It is indicated by the
+.Dv Scroll Lock
+LED.
+Use the arrow keys, the
+.Dv Page Up/Down
+keys and the
+.Dv Home/End
+keys to scroll buffered terminal output.
+Press the ``slock'' key again to get back to the normal terminal mode.
+.Pp
+The size of the scrollback buffer can be set by the
+.Dv SC_HISTORY_SIZE
+option described below.
+.Ss Screen Saver
+The
+.Nm
+driver can be made to put up the screen saver if the current
+virtual terminal is idle, that is, the user is not typing
+on the keyboard nor moving the mouse.
+See
+.Xr splash 4
+and
+.Xr vidcontrol 1
+for more details.
+.Sh DRIVER CONFIGURATION
+.Ss Kernel Configuration Options
+The following kernel configuration options control the
+.Nm
+driver.
+.Bl -tag -width MOUSE
+.It Dv MAXCONS=N
+This option sets the number of virtual terminals to
+.Fa N .
+The default value is 16.
+.It Dv SC_ALT_MOUSE_IMAGE
+This option selects the alternative way of displaying the mouse cursor
+in the virtual terminal.
+It may be expensive for some video cards to draw the arrow-shaped
+cursor, and you may want to try this option.
+However, the appearance of the alternative mouse cursor may not be
+very appealing.
+Note that if you use the
+.Dv SC_NO_FONT_LOADING
+option then you must also use this option if you wish to be able to use
+the mouse.
+.It Dv SC_CUT_SEPCHARS=_characters_
+This options specifies characters that will be looked for when the
+driver searches for words boundaries when doing cut operation.
+By default, its value is
+.Qq Li \ex20
+\(em a space character.
+.It Dv SC_CUT_SPACES2TABS
+This options instructs the driver to convert leading spaces into tabs
+when copying data into cut buffer.
+This might be useful to preserve
+indentation when copying tab-indented text.
+.It Dv SC_DISABLE_KDBKEY
+This option disables the ``debug'' key combination (by default, it is
+.Dv Alt-Esc ,
+or
+.Dv Ctl-PrintScreen ) .
+It will prevent users from
+entering the kernel debugger (KDB) by pressing the key combination.
+KDB will still be invoked when the kernel panics or hits a break point
+if it is included in the kernel.
+If this option is not defined, this behavior may be controlled at runtime
+by the
+.Xr sysctl 8
+variable
+.Va hw.syscons.kbd_debug .
+.It Dv SC_DISABLE_REBOOT
+This option disables the ``reboot'' key (by default, it is
+.Dv Ctl-Alt-Del ) ,
+so that the casual user may not accidentally reboot the system.
+If this option is not defined, this behavior may be controlled at runtime
+by the
+.Xr sysctl 8
+variable
+.Va hw.syscons.kbd_reboot .
+.It Dv SC_HISTORY_SIZE=N
+Sets the size of back scroll buffer to
+.Fa N
+lines.
+The default value is 100.
+.It Dv SC_MOUSE_CHAR=C
+Unless the
+.Dv SC_ALT_MOUSE_IMAGE
+option above is specified, the
+.Nm
+driver reserves four consecutive character codes in order to display the
+mouse cursor in the virtual terminals in some systems.
+This option specifies the first character code to
+.Fa C
+to be used for this purpose.
+The default value is 0xd0.
+A good candidate is 0x03.
+.It Dv SC_PIXEL_MODE
+Adds support for pixel (raster) mode console.
+This mode is useful on some laptop computers, but less so on
+most other systems, and it adds substantial amount of code to syscons.
+If this option is NOT defined, you can reduce the kernel size a lot.
+See the
+.Dv VESA800X600
+flag below.
+.It Dv SC_TWOBUTTON_MOUSE
+If you have a two button mouse, you may want to add this option
+to use the right button of the mouse to paste text.
+See
+.Sx Mouse Support and Copy-and-Paste
+above.
+.It Dv SC_NORM_ATTR=_attribute_
+.It Dv SC_NORM_REV_ATTR=_attribute_
+.It Dv SC_KERNEL_CONS_ATTR=_attribute_
+.It Dv SC_KERNEL_CONS_REV_ATTR=_attribute_
+These options will set the default colors.
+Available colors are defined in
+.In machine/pc/display.h .
+See
+.Sx EXAMPLES
+below.
+.It Dv SC_DFLT_FONT
+This option will specify the default font.
+Available fonts are: iso, iso2, koi8-r, koi8-u, cp437, cp850, cp865,
+cp866 and cp866u.
+16-line, 14-line and 8-line font data will be compiled in.
+Without this option, the
+.Nm
+driver will use whatever font is already loaded in the video card,
+unless you explicitly load a software font at startup.
+See
+.Sx EXAMPLES
+below.
+.It Dv SC_NO_SUSPEND_VTYSWITCH
+This option, which is also available as
+.Xr loader 8
+tunable and
+.Xr sysctl 8
+variable
+.Va hw.syscons.sc_no_suspend_vtswitch ,
+disables switching between virtual terminals (graphics <-> text) during
+suspend/resume (ACPI and APM).
+Use this option if your system is freezing
+when you are running X and trying to suspend.
+.El
+.Pp
+The following options will remove some features from the
+.Nm
+driver and save kernel memory.
+.Bl -tag -width MOUSE
+.It Dv SC_NO_CUTPASTE
+This option disables ``copy and paste'' operation in virtual
+terminals.
+.It Dv SC_NO_FONT_LOADING
+The
+.Nm
+driver can load software fonts on some video cards.
+This option removes this feature.
+Note that if you still wish to use
+the mouse with this option then you must also use the
+.Dv SC_ALT_MOUSE_IMAGE
+option.
+.It Dv SC_NO_HISTORY
+This option disables back-scrolling in virtual terminals.
+.\".It Dv SC_NO_PALETTE_LOADING
+.It Dv SC_NO_SYSMOUSE
+This option removes mouse support in the
+.Nm
+driver.
+The mouse daemon
+.Xr moused 8
+will fail if this option is defined.
+This option implies the
+.Dv SC_NO_CUTPASTE
+option too.
+.El
+.Ss Driver Flags
+The following driver flags can be used to control the
+.Nm
+driver.
+They can be set either in
+.Pa /boot/device.hints ,
+or else at the loader prompt (see
+.Xr loader 8 ) .
+.Bl -tag -width bit_0
+.\".It bit 0 (VISUAL_BELL)
+.\"Uses the ``visual'' bell.
+.\"The screen will blink instead of generating audible sound.
+.\".It bit 1,2 (CURSOR_TYPE)
+.\"This option specifies the cursor appearance.
+.\"Possible values are:
+.\".Bl -tag -width TYPE -compact
+.\".It Dv 0
+.\"normal block cursor
+.\".It Dv 2
+.\"blinking block cursor
+.\".It Dv 4
+.\"underline cursor
+.\".It Dv 6
+.\"blinking underline (aka destructive) cursor
+.\".El
+.\".It bit 6 (QUIET_BELL)
+.\"This option suppresses the bell, whether audible or visual,
+.\"if it is rung in a background virtual terminal.
+.It 0x0080 (VESA800X600)
+This option puts the video card in the VESA 800x600 pixel, 16 color
+mode.
+It may be useful for laptop computers for which the 800x600 mode
+is otherwise unsupported by the X server.
+Note that in order for this flag to work, the kernel must be
+compiled with the
+.Dv SC_PIXEL_MODE
+option explained above.
+.\"Note also that the ``copy-and-paste'' function is not currently supported
+.\"in this mode and the mouse pointer will not be displayed.
+.It 0x0100 (AUTODETECT_KBD)
+This option instructs the syscons driver to periodically scan
+for a keyboard device if it is not currently attached to one.
+Otherwise, the driver only probes for a keyboard once during bootup.
+.El
+.Sh FILES
+.Bl -tag -width /usr/share/syscons/xxxxyyyyzzz -compact
+.It Pa /dev/console
+.It Pa /dev/consolectl
+.It Pa /dev/ttyv?
+virtual terminals
+.It Pa /etc/ttys
+terminal initialization information
+.It Pa /usr/share/syscons/fonts/*
+font files
+.It Pa /usr/share/syscons/keymaps/*
+key map files
+.It Pa /usr/share/syscons/scrmaps/*
+screen map files
+.El
+.Sh EXAMPLES
+As the
+.Nm
+driver requires the keyboard driver and the video card driver,
+the kernel configuration file should contain the following lines.
+.Pp
+.Bd -literal -offset indent
+device atkbdc
+device atkbd
+device vga
+device sc
+
+device splash
+.Ed
+You also need the following lines in
+.Pa /boot/device.hints
+for these drivers.
+.Bd -literal -offset indent
+hint.atkbdc.0.at="isa"
+hint.atkbdc.0.port="0x060"
+hint.atkbd.0.at="atkbdc"
+hint.atkbd.0.irq="1"
+hint.vga.0.at="isa"
+hint.sc.0.at="isa"
+.Ed
+.Pp
+If you do not intend to load the splash image or use the screen saver,
+the last line is not necessary, and can be omitted.
+.Pp
+Note that the keyboard controller driver
+.Nm atkbdc
+is required by the keyboard driver
+.Nm atkbd .
+.Pp
+The following lines will set the default colors.
+The normal text will be green on black background.
+The reversed text will be yellow on green background.
+Note that you cannot put any white space inside the quoted string,
+because of the current implementation of
+.Xr config 8 .
+.Pp
+.Dl "options SC_NORM_ATTR=(FG_GREEN|BG_BLACK)
+.Dl "options SC_NORM_REV_ATTR=(FG_YELLOW|BG_GREEN)
+.Pp
+The following lines will set the default colors of the kernel message.
+The kernel message will be printed bright red on black background.
+The reversed message will be black on red background.
+.Pp
+.Dl "options SC_KERNEL_CONS_ATTR=(FG_LIGHTRED|BG_BLACK)
+.Dl "options SC_KERNEL_CONS_REV_ATTR=(FG_BLACK|BG_RED)
+.Pp
+The following example adds the font files
+.Pa cp850-8x16.fnt ,
+.Pa cp850-8x14.font
+and
+.Pa cp850-8x8.font
+to the kernel.
+.Pp
+.Dl "options SC_DFLT_FONT"
+.Dl "makeoptions SC_DFLT_FONT=cp850
+.Dl "device sc"
+.\".Sh DIAGNOSTICS
+.Sh CAVEATS
+The amount of data that is possible to insert from the cut buffer is limited
+by the
+.Brq Dv MAX_INPUT ,
+a system limit on the number of bytes that may be stored in the terminal
+input queue - usually 1024 bytes
+(see
+.Xr termios 4 ) .
+.Sh SEE ALSO
+.Xr kbdcontrol 1 ,
+.Xr login 1 ,
+.Xr vidcontrol 1 ,
+.Xr atkbd 4 ,
+.Xr atkbdc 4 ,
+.Xr keyboard 4 ,
+.Xr screen 4 ,
+.Xr splash 4 ,
+.Xr ukbd 4 ,
+.Xr vga 4 ,
+.Xr kbdmap 5 ,
+.Xr rc.conf 5 ,
+.Xr ttys 5 ,
+.Xr config 8 ,
+.Xr getty 8 ,
+.Xr kldload 8 ,
+.Xr moused 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 1.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An S\(/oren Schmidt Aq sos@FreeBSD.org .
+This manual page was written by
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
+.Sh BUGS
+This manual page is incomplete and urgently needs revision.
diff --git a/share/man/man4/sysmouse.4 b/share/man/man4/sysmouse.4
new file mode 100644
index 0000000..96547bc
--- /dev/null
+++ b/share/man/man4/sysmouse.4
@@ -0,0 +1,478 @@
+.\" Copyright (c) 1997
+.\" John-Mark Gurney. 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. 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 John-Mark Gurney 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$
+.\"
+.Dd December 3, 1997
+.Dt SYSMOUSE 4
+.Os
+.Sh NAME
+.Nm sysmouse
+.\" .Nd supplies mouse data from syscons for other applications
+.Nd virtualized mouse driver
+.Sh SYNOPSIS
+.In sys/mouse.h
+.In sys/consio.h
+.Sh DESCRIPTION
+The console driver, in conjunction with the mouse daemon
+.Xr moused 8 ,
+supplies mouse data to the user process in the standardized way via the
+.Nm
+driver.
+This arrangement makes it possible for the console and the user process
+(such as the
+.Tn X\ Window System )
+to share the mouse.
+.Pp
+The user process which wants to utilize mouse operation simply opens
+.Pa /dev/sysmouse
+with a
+.Xr open 2
+call and reads
+mouse data from the device via
+.Xr read 2 .
+Make sure that
+.Xr moused 8
+is running, otherwise the user process will not see any data coming from
+the mouse.
+.Pp
+.Ss Operation Levels
+The
+.Nm
+driver has two levels of operation.
+The current operation level can be referred to and changed via ioctl calls.
+.Pp
+The level zero, the basic level, is the lowest level at which the driver
+offers the basic service to user programs.
+The
+.Nm
+driver
+provides horizontal and vertical movement of the mouse
+and state of up to three buttons in the
+.Tn MouseSystems
+format as follows.
+.Pp
+.Bl -tag -width Byte_1 -compact
+.It Byte 1
+.Bl -tag -width bit_7 -compact
+.It bit 7
+Always one.
+.It bit 6..3
+Always zero.
+.It bit 2
+Left button status; cleared if pressed, otherwise set.
+.It bit 1
+Middle button status; cleared if pressed, otherwise set.
+Always one,
+if the device does not have the middle button.
+.It bit 0
+Right button status; cleared if pressed, otherwise set.
+.El
+.It Byte 2
+The first half of horizontal movement count in two's complement;
+-128 through 127.
+.It Byte 3
+The first half of vertical movement count in two's complement;
+-128 through 127.
+.It Byte 4
+The second half of the horizontal movement count in two's complement;
+-128 through 127.
+To obtain the full horizontal movement count, add
+the byte 2 and 4.
+.It Byte 5
+The second half of the vertical movement count in two's complement;
+-128 through 127.
+To obtain the full vertical movement count, add
+the byte 3 and 5.
+.El
+.Pp
+At the level one, the extended level, mouse data is encoded
+in the standard format
+.Dv MOUSE_PROTO_SYSMOUSE
+as defined in
+.Xr mouse 4 .
+.\" .Ss Acceleration
+.\" The
+.\" .Nm
+.\" driver can somewhat `accelerate' the movement of the pointing device.
+.\" The faster you move the device, the further the pointer
+.\" travels on the screen.
+.\" The driver has an internal variable which governs the effect of
+.\" the acceleration. Its value can be modified via the driver flag
+.\" or via an ioctl call.
+.Sh IOCTLS
+This section describes two classes of
+.Xr ioctl 2
+commands:
+commands for the
+.Nm
+driver itself, and commands for the console and the console control drivers.
+.Ss Sysmouse Ioctls
+There are a few commands for mouse drivers.
+General description of the commands is given in
+.Xr mouse 4 .
+Following are the features specific to the
+.Nm
+driver.
+.Pp
+.Bl -tag -width MOUSE -compact
+.It Dv MOUSE_GETLEVEL Ar int *level
+.It Dv MOUSE_SETLEVEL Ar int *level
+These commands manipulate the operation level of the mouse driver.
+.Pp
+.It Dv MOUSE_GETHWINFO Ar mousehw_t *hw
+Returns the hardware information of the attached device in the following
+structure.
+Only the
+.Dv iftype
+field is guaranteed to be filled with the correct value in the current
+version of the
+.Nm
+driver.
+.Bd -literal
+typedef struct mousehw {
+ int buttons; /* number of buttons */
+ int iftype; /* I/F type */
+ int type; /* mouse/track ball/pad... */
+ int model; /* I/F dependent model ID */
+ int hwid; /* I/F dependent hardware ID */
+} mousehw_t;
+.Ed
+.Pp
+The
+.Dv buttons
+field holds the number of buttons detected by the driver.
+.Pp
+The
+.Dv iftype
+is always
+.Dv MOUSE_IF_SYSMOUSE .
+.Pp
+The
+.Dv type
+tells the device type:
+.Dv MOUSE_MOUSE ,
+.Dv MOUSE_TRACKBALL ,
+.Dv MOUSE_STICK ,
+.Dv MOUSE_PAD ,
+or
+.Dv MOUSE_UNKNOWN .
+.Pp
+The
+.Dv model
+is always
+.Dv MOUSE_MODEL_GENERIC
+at the operation level 0.
+It may be
+.Dv MOUSE_MODEL_GENERIC
+or one of
+.Dv MOUSE_MODEL_XXX
+constants at higher operation levels.
+.Pp
+The
+.Dv hwid
+is always zero.
+.Pp
+.It Dv MOUSE_GETMODE Ar mousemode_t *mode
+The command gets the current operation parameters of the mouse
+driver.
+.Bd -literal
+typedef struct mousemode {
+ int protocol; /* MOUSE_PROTO_XXX */
+ int rate; /* report rate (per sec) */
+ int resolution; /* MOUSE_RES_XXX, -1 if unknown */
+ int accelfactor; /* acceleration factor */
+ int level; /* driver operation level */
+ int packetsize; /* the length of the data packet */
+ unsigned char syncmask[2]; /* sync. bits */
+} mousemode_t;
+.Ed
+.Pp
+The
+.Dv protocol
+field tells the format in which the device status is returned
+when the mouse data is read by the user program.
+It is
+.Dv MOUSE_PROTO_MSC
+at the operation level zero.
+.Dv MOUSE_PROTO_SYSMOUSE
+at the operation level one.
+.Pp
+The
+.Dv rate
+is always set to -1.
+.Pp
+The
+.Dv resolution
+is always set to -1.
+.Pp
+The
+.Dv accelfactor
+is always 0.
+.Pp
+The
+.Dv packetsize
+field specifies the length of the data packet.
+It depends on the
+operation level.
+.Pp
+.Bl -tag -width level_0__ -compact
+.It Em level 0
+5 bytes
+.It Em level 1
+8 bytes
+.El
+.Pp
+The array
+.Dv syncmask
+holds a bit mask and pattern to detect the first byte of the
+data packet.
+.Dv syncmask[0]
+is the bit mask to be ANDed with a byte.
+If the result is equal to
+.Dv syncmask[1] ,
+the byte is likely to be the first byte of the data packet.
+Note that this method of detecting the first byte is not 100% reliable;
+thus, it should be taken only as an advisory measure.
+.Pp
+.It Dv MOUSE_SETMODE Ar mousemode_t *mode
+The command changes the current operation parameters of the mouse driver
+as specified in
+.Ar mode .
+Only
+.Dv level
+may be modifiable.
+Setting values in the other field does not generate
+error and has no effect.
+.\" .Pp
+.\" .It Dv MOUSE_GETVARS Ar mousevar_t *vars
+.\" .It Dv MOUSE_SETVARS Ar mousevar_t *vars
+.\" These commands are not supported by the
+.\" .Nm
+.\" driver.
+.Pp
+.It Dv MOUSE_READDATA Ar mousedata_t *data
+.It Dv MOUSE_READSTATE Ar mousedata_t *state
+These commands are not supported by the
+.Nm
+driver.
+.Pp
+.It Dv MOUSE_GETSTATUS Ar mousestatus_t *status
+The command returns the current state of buttons and
+movement counts in the structure as defined in
+.Xr mouse 4 .
+.El
+.Ss Console and Consolectl Ioctls
+The user process issues console
+.Fn ioctl
+calls to the current virtual console in order to control
+the mouse pointer.
+The console
+.Fn ioctl
+also provides a method for the user process to receive a
+.Xr signal 3
+when a button is pressed.
+.Pp
+The mouse daemon
+.Xr moused 8
+uses
+.Fn ioctl
+calls to the console control device
+.Pa /dev/consolectl
+to inform the console of mouse actions including mouse movement
+and button status.
+.Pp
+Both classes of
+.Fn ioctl
+commands are defined as
+.Dv CONS_MOUSECTL
+which takes the following argument.
+.Bd -literal
+struct mouse_info {
+ int operation;
+ union {
+ struct mouse_data data;
+ struct mouse_mode mode;
+ struct mouse_event event;
+ } u;
+};
+.Ed
+.Pp
+.Bl -tag -width operation -compact
+.It Dv operation
+This can be one of
+.Pp
+.Bl -tag -width MOUSE_MOVEABS -compact
+.It Dv MOUSE_SHOW
+Enables and displays mouse cursor.
+.It Dv MOUSE_HIDE
+Disables and hides mouse cursor.
+.It Dv MOUSE_MOVEABS
+Moves mouse cursor to position supplied in
+.Dv u.data .
+.It Dv MOUSE_MOVEREL
+Adds position supplied in
+.Dv u.data
+to current position.
+.It Dv MOUSE_GETINFO
+Returns current mouse position in the current virtual console
+and button status in
+.Dv u.data .
+.It Dv MOUSE_MODE
+This sets the
+.Xr signal 3
+to be delivered to the current process when a button is pressed.
+The signal to be delivered is set in
+.Dv u.mode .
+.El
+.Pp
+The above operations are for virtual consoles.
+The operations defined
+below are for the console control device and are used by
+.Xr moused 8
+to pass mouse data to the console driver.
+.Pp
+.Bl -tag -width MOUSE_MOVEABS -compact
+.It Dv MOUSE_ACTION
+.It Dv MOUSE_MOTION_EVENT
+These operations take the information in
+.Dv u.data
+and act upon it.
+Mouse data will be sent to the
+.Nm
+driver if it is open.
+.Dv MOUSE_ACTION
+also processes button press actions and sends signal to the process if
+requested or performs cut and paste operations
+if the current console is a text interface.
+.It Dv MOUSE_BUTTON_EVENT
+.Dv u.data
+specifies a button and its click count.
+The console driver will
+use this information for signal delivery if requested or
+for cut and paste operations if the console is in text mode.
+.El
+.Pp
+.Dv MOUSE_MOTION_EVENT
+and
+.Dv MOUSE_BUTTON_EVENT
+are newer interface and are designed to be used together.
+They are intended to replace functions performed by
+.Dv MOUSE_ACTION
+alone.
+.Pp
+.It Dv u
+This union is one of
+.Pp
+.Bl -tag -width data -compact
+.It Dv data
+.Bd -literal
+struct mouse_data {
+ int x;
+ int y;
+ int z;
+ int buttons;
+};
+.Ed
+.Pp
+.Dv x ,
+.Dv y
+and
+.Dv z
+represent movement of the mouse along respective directions.
+.Dv buttons
+tells the state of buttons.
+It encodes up to 31 buttons in the bit 0 though
+the bit 30.
+If a button is held down, the corresponding bit is set.
+.Pp
+.It Dv mode
+.Bd -literal
+struct mouse_mode {
+ int mode;
+ int signal;
+};
+.Ed
+.Pp
+The
+.Dv signal
+field specifies the signal to be delivered to the process.
+It must be
+one of the values defined in
+.In signal.h .
+The
+.Dv mode
+field is currently unused.
+.Pp
+.It Dv event
+.Bd -literal
+struct mouse_event {
+ int id;
+ int value;
+};
+.Ed
+.Pp
+The
+.Dv id
+field specifies a button number as in
+.Dv u.data.buttons .
+Only one bit/button is set.
+The
+.Dv value
+field
+holds the click count: the number of times the user has clicked the button
+successively.
+.Pp
+.El
+.El
+.Sh FILES
+.Bl -tag -width /dev/consolectl -compact
+.It Pa /dev/consolectl
+device to control the console
+.It Pa /dev/sysmouse
+virtualized mouse driver
+.It Pa /dev/ttyv%d
+virtual consoles
+.El
+.Sh SEE ALSO
+.Xr vidcontrol 1 ,
+.Xr ioctl 2 ,
+.Xr signal 3 ,
+.Xr mouse 4 ,
+.Xr moused 8
+.Sh HISTORY
+The
+.Nm
+manual page example first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+.An -nosplit
+This
+manual page was written by
+.An John-Mark Gurney Aq gurney_j@efn.org
+and
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
diff --git a/share/man/man4/tap.4 b/share/man/man4/tap.4
new file mode 100644
index 0000000..9f04725
--- /dev/null
+++ b/share/man/man4/tap.4
@@ -0,0 +1,321 @@
+.\" $FreeBSD$
+.\" Based on PR#2411
+.\"
+.Dd September 8, 2008
+.Os
+.Dt TAP 4
+.Sh NAME
+.Nm tap
+.Nd Ethernet tunnel software network interface
+.Sh SYNOPSIS
+.Cd device tap
+.Sh DESCRIPTION
+The
+.Nm
+interface is a software loopback mechanism that can be loosely
+described as the network interface analog of the
+.Xr pty 4 ,
+that is,
+.Nm
+does for network interfaces what the
+.Nm pty
+driver does for terminals.
+.Pp
+The
+.Nm
+driver, like the
+.Nm pty
+driver, provides two interfaces: an interface like the usual facility
+it is simulating
+(an Ethernet network interface in the case of
+.Nm ,
+or a terminal for
+.Nm pty ) ,
+and a character-special device
+.Dq control
+interface.
+.Pp
+The network interfaces are named
+.Dq Li tap0 ,
+.Dq Li tap1 ,
+etc., one for each control device that has been opened.
+These Ethernet network interfaces persist until
+.Pa if_tap.ko
+module is unloaded, or until removed with "ifconfig destroy" (see below).
+.Pp
+.Nm
+devices are created using interface cloning.
+This is done using the
+.Dq ifconfig tap Ns Sy N No create
+command.
+This is the preferred method of creating
+.Nm
+devices.
+The same method allows removal of interfaces.
+For this, use the
+.Dq ifconfig tap Ns Sy N No destroy
+command.
+.Pp
+If the
+.Xr sysctl 8
+variable
+.Va net.link.tap.devfs_cloning
+is non-zero, the
+.Nm
+interface
+permits opens on the special control device
+.Pa /dev/tap .
+When this device is opened,
+.Nm
+will return a handle for the lowest unused
+.Nm
+device (use
+.Xr devname 3
+to determine which).
+.Pp
+.Bf Em
+Disabling the legacy devfs cloning functionality may break existing
+applications which use
+.Nm ,
+such as
+.Tn VMware
+and
+.Xr ssh 1 .
+It therefore defaults to being enabled until further notice.
+.Ef
+.Pp
+Control devices (once successfully opened) persist until
+.Pa if_tap.ko
+is unloaded or the interface is destroyed.
+.Pp
+Each interface supports the usual Ethernet network interface
+.Xr ioctl 2 Ns s ,
+such as
+.Dv SIOCSIFADDR
+and
+.Dv SIOCSIFNETMASK ,
+and thus can be used with
+.Xr ifconfig 8
+like any other Ethernet interface.
+When the system chooses to transmit
+an Ethernet frame on the network interface, the frame can be read from
+the control device
+(it appears as
+.Dq input
+there);
+writing an Ethernet frame to the control device generates an input frame on
+the network interface, as if the
+(non-existent)
+hardware had just received it.
+.Pp
+The Ethernet tunnel device, normally
+.Pa /dev/tap Ns Sy N ,
+is exclusive-open
+(it cannot be opened if it is already open)
+and is restricted to the super-user, unless the
+.Xr sysctl 8
+variable
+.Va net.link.tap.user_open
+is non-zero.
+If the
+.Xr sysctl 8
+variable
+.Va net.link.tap.up_on_open
+is non-zero, the tunnel device will be marked
+.Dq up
+when the control device is opened.
+A
+.Fn read
+call will return an error
+.Pq Er EHOSTDOWN
+if the interface is not
+.Dq ready .
+Once the interface is ready,
+.Fn read
+will return an Ethernet frame if one is available; if not, it will
+either block until one is or return
+.Er EWOULDBLOCK ,
+depending on whether non-blocking I/O has been enabled.
+If the frame
+is longer than is allowed for in the buffer passed to
+.Fn read ,
+the extra data will be silently dropped.
+.Pp
+A
+.Xr write 2
+call passes an Ethernet frame in to be
+.Dq received
+on the pseudo-interface.
+Each
+.Fn write
+call supplies exactly one frame; the frame length is taken from the
+amount of data provided to
+.Fn write .
+Writes will not block; if the frame cannot be accepted
+for a transient reason
+(e.g., no buffer space available),
+it is silently dropped; if the reason is not transient
+(e.g., frame too large),
+an error is returned.
+The following
+.Xr ioctl 2
+calls are supported
+(defined in
+.In net/if_tap.h ) :
+.Bl -tag -width VMIO_SIOCSETMACADDR
+.It Dv TAPSIFINFO
+Set network interface information (line speed, MTU and type).
+The argument should be a pointer to a
+.Va struct tapinfo .
+.It Dv TAPGIFINFO
+Retrieve network interface information (line speed, MTU and type).
+The argument should be a pointer to a
+.Va struct tapinfo .
+.It Dv TAPSDEBUG
+The argument should be a pointer to an
+.Va int ;
+this sets the internal debugging variable to that value.
+What, if
+anything, this variable controls is not documented here; see the source
+code.
+.It Dv TAPGDEBUG
+The argument should be a pointer to an
+.Va int ;
+this stores the internal debugging variable's value into it.
+.It Dv TAPGIFNAME
+Retrieve network interface name.
+The argument should be a pointer to a
+.Va struct ifreq .
+The interface name will be returned in the
+.Va ifr_name
+field.
+.It Dv FIONBIO
+Turn non-blocking I/O for reads off or on, according as the argument
+.Va int Ns 's
+value is or is not zero
+(Writes are always nonblocking).
+.It Dv FIOASYNC
+Turn asynchronous I/O for reads
+(i.e., generation of
+.Dv SIGIO
+when data is available to be read)
+off or on, according as the argument
+.Va int Ns 's
+value is or is not zero.
+.It Dv FIONREAD
+If any frames are queued to be read, store the size of the first one into the argument
+.Va int ;
+otherwise, store zero.
+.It Dv TIOCSPGRP
+Set the process group to receive
+.Dv SIGIO
+signals, when asynchronous I/O is enabled, to the argument
+.Va int
+value.
+.It Dv TIOCGPGRP
+Retrieve the process group value for
+.Dv SIGIO
+signals into the argument
+.Va int
+value.
+.It Dv SIOCGIFADDR
+Retrieve the Media Access Control
+.Pq Dv MAC
+address of the
+.Dq remote
+side.
+This command is used by the VMware port and expected to be executed on
+descriptor, associated with control device
+(usually
+.Pa /dev/vmnet Ns Sy N
+or
+.Pa /dev/tap Ns Sy N ) .
+The
+.Va buffer ,
+which is passed as the argument, is expected to have enough space to store
+the
+.Dv MAC
+address.
+At the open time both
+.Dq local
+and
+.Dq remote
+.Dv MAC
+addresses are the same, so this command could be used to retrieve the
+.Dq local
+.Dv MAC
+address.
+.It Dv SIOCSIFADDR
+Set the Media Access Control
+.Pq Dv MAC
+address of the
+.Dq remote
+side.
+This command is used by VMware port and expected to be executed on
+a descriptor, associated with control device
+(usually
+.Pa /dev/vmnet Ns Sy N ) .
+.El
+.Pp
+The control device also supports
+.Xr select 2
+for read; selecting for write is pointless, and always succeeds, since
+writes are always non-blocking.
+.Pp
+On the last close of the data device, the interface is
+brought down
+(as if with
+.Dq ifconfig tap Ns Sy N No down )
+unless the device is a
+.Em VMnet
+device.
+All queued frames are thrown away.
+If the interface is up when the data
+device is not open, output frames are thrown away rather than
+letting them pile up.
+.Pp
+The
+.Nm
+device can also be used with the VMware port as a replacement
+for the old
+.Em VMnet
+device driver.
+The driver uses the minor number
+to select between
+.Nm
+and
+.Nm vmnet
+devices.
+.Em VMnet
+minor numbers begin at
+.Va 0x800000
++
+.Va N ;
+where
+.Va N
+is a
+.Em VMnet
+unit number.
+In this case the control device is expected to be
+.Pa /dev/vmnet Ns Sy N ,
+and the network interface will be
+.Sy vmnet Ns Ar N .
+Additionally,
+.Em VMnet
+devices do not
+.Xr ifconfig 8
+themselves down when the
+control device is closed.
+Everything else is the same.
+.Pp
+In addition to the above mentioned
+.Xr ioctl 2
+calls, there is an additional one for the VMware port.
+.Bl -tag -width VMIO_SIOCSETMACADDR
+.It Dv VMIO_SIOCSIFFLAGS
+VMware
+.Dv SIOCSIFFLAGS .
+.El
+.Sh SEE ALSO
+.Xr inet 4 ,
+.Xr intro 4
diff --git a/share/man/man4/targ.4 b/share/man/man4/targ.4
new file mode 100644
index 0000000..a1fa449
--- /dev/null
+++ b/share/man/man4/targ.4
@@ -0,0 +1,155 @@
+.\" Copyright (c) 2002
+.\" Nate Lawson. 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. 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 Nate Lawson 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$
+.\"
+.Dd November 15, 2002
+.Dt TARG 4
+.Os
+.Sh NAME
+.Nm targ
+.Nd SCSI target emulator driver
+.Sh SYNOPSIS
+.Cd device targ
+.Sh DESCRIPTION
+The
+.Nm
+driver provides an interface for usermode programs to emulate SCSI target
+devices.
+A sample program that emulates a disk drive (similar to
+.Xr da 4 )
+can be found in
+.Pa /usr/share/examples/scsi_target .
+.Pp
+The
+.Nm
+driver supplies control devices,
+.Pa /dev/targ0 ,
+.Pa /dev/targ1 ,
+etc.
+If a device is already in use,
+.Xr open 2
+will fail and
+.Va errno
+will be set to
+.Er EBUSY .
+After opening the device, the file descriptor must be bound to a
+specific bus/target/LUN and enabled to process CCBs using the
+.Dv TARGIOCENABLE
+ioctl.
+The process then uses
+.Xr write 2
+to send CCBs to the SIM and
+.Xr poll 2
+or
+.Xr kqueue 2
+to see if responses are ready.
+Pointers to completed CCBs are returned via
+.Xr read 2 .
+Any data transfers requested by the user CCBs are done via zero-copy IO.
+.Sh IOCTLS
+The following
+.Xr ioctl 2
+calls are defined in the header file
+.In cam/scsi/scsi_targetio.h .
+.Bl -tag -width ".Dv TARGIOCDISABLE"
+.It Dv TARGIOCENABLE
+.Pq Vt "struct ioc_enable_lun"
+Enable target mode on the LUN specified by the following structure:
+.Bd -literal -offset indent
+struct ioc_enable_lun {
+ path_id_t path_id;
+ target_id_t target_id;
+ lun_id_t lun_id;
+ int grp6_len;
+ int grp7_len;
+};
+.Ed
+.Pp
+The selected path (bus), target, and LUN must not already be in use or
+.Er EADDRINUSE
+is returned.
+If
+.Va grp6_len
+or
+.Va grp7_len
+are non-zero, reception of vendor-specific commands
+is enabled.
+.It Dv TARGIOCDISABLE
+Disable target mode and abort all pending CCBs.
+The CCBs may optionally be read as they complete.
+.Dv TARGIOCENABLE
+can then be called to activate a different LUN.
+Multiple disable calls have no effect.
+The
+.Xr close 2
+system call automatically disables target mode if enabled.
+.It Dv TARGIOCDEBUG
+.Pq Vt int
+Enables
+.Dv CAM_PERIPH
+debugging if the argument is non-zero, otherwise disables
+it.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /sys/cam/scsi/scsi_target.c" -compact
+.It In cam/scsi/scsi_targetio.h
+describes the usermode interface.
+.It Pa /sys/cam/scsi/scsi_target.c
+is the driver source file.
+.It Pa /dev/targ*
+are the control devices.
+.El
+.Sh SEE ALSO
+.Pa /usr/share/examples/scsi_target ,
+.Xr ahc 4 ,
+.Xr isp 4 ,
+.Xr scsi 4
+.Rs
+.%T "FreeBSD Target Information"
+.%O http://www.root.org/~nate/freebsd/
+.Re
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver first appeared in
+.Fx 3.0
+and was written by
+.An Justin T. Gibbs .
+It was rewritten
+for
+.Fx 5.0
+by
+.An Nate Lawson Aq nate@root.org .
+.Sh BUGS
+Currently, only the
+.Xr ahc 4
+and
+.Xr isp 4
+drivers fully support target mode.
+.Pp
+The
+.Xr ahc 4
+driver does not support tagged queuing in target mode.
diff --git a/share/man/man4/tcp.4 b/share/man/man4/tcp.4
new file mode 100644
index 0000000..47c81f5
--- /dev/null
+++ b/share/man/man4/tcp.4
@@ -0,0 +1,599 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)tcp.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd August 16, 2008
+.Dt TCP 4
+.Os
+.Sh NAME
+.Nm tcp
+.Nd Internet Transmission Control Protocol
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In netinet/in.h
+.Ft int
+.Fn socket AF_INET SOCK_STREAM 0
+.Sh DESCRIPTION
+The
+.Tn TCP
+protocol provides reliable, flow-controlled, two-way
+transmission of data.
+It is a byte-stream protocol used to
+support the
+.Dv SOCK_STREAM
+abstraction.
+.Tn TCP
+uses the standard
+Internet address format and, in addition, provides a per-host
+collection of
+.Dq "port addresses" .
+Thus, each address is composed
+of an Internet address specifying the host and network,
+with a specific
+.Tn TCP
+port on the host identifying the peer entity.
+.Pp
+Sockets utilizing the
+.Tn TCP
+protocol are either
+.Dq active
+or
+.Dq passive .
+Active sockets initiate connections to passive
+sockets.
+By default,
+.Tn TCP
+sockets are created active; to create a
+passive socket, the
+.Xr listen 2
+system call must be used
+after binding the socket with the
+.Xr bind 2
+system call.
+Only passive sockets may use the
+.Xr accept 2
+call to accept incoming connections.
+Only active sockets may use the
+.Xr connect 2
+call to initiate connections.
+.Pp
+Passive sockets may
+.Dq underspecify
+their location to match
+incoming connection requests from multiple networks.
+This technique, termed
+.Dq "wildcard addressing" ,
+allows a single
+server to provide service to clients on multiple networks.
+To create a socket which listens on all networks, the Internet
+address
+.Dv INADDR_ANY
+must be bound.
+The
+.Tn TCP
+port may still be specified
+at this time; if the port is not specified, the system will assign one.
+Once a connection has been established, the socket's address is
+fixed by the peer entity's location.
+The address assigned to the
+socket is the address associated with the network interface
+through which packets are being transmitted and received.
+Normally, this address corresponds to the peer entity's network.
+.Pp
+.Tn TCP
+supports a number of socket options which can be set with
+.Xr setsockopt 2
+and tested with
+.Xr getsockopt 2 :
+.Bl -tag -width ".Dv TCP_NODELAY"
+.It Dv TCP_INFO
+Information about a socket's underlying TCP session may be retrieved
+by passing the read-only option
+.Dv TCP_INFO
+to
+.Xr getsockopt 2 .
+It accepts a single argument: a pointer to an instance of
+.Vt "struct tcp_info" .
+.Pp
+This API is subject to change; consult the source to determine
+which fields are currently filled out by this option.
+.Fx
+specific additions include
+send window size,
+receive window size,
+and
+bandwidth-controlled window space.
+.It Dv TCP_NODELAY
+Under most circumstances,
+.Tn TCP
+sends data when it is presented;
+when outstanding data has not yet been acknowledged, it gathers
+small amounts of output to be sent in a single packet once
+an acknowledgement is received.
+For a small number of clients, such as window systems
+that send a stream of mouse events which receive no replies,
+this packetization may cause significant delays.
+The boolean option
+.Dv TCP_NODELAY
+defeats this algorithm.
+.It Dv TCP_MAXSEG
+By default, a sender- and
+.No receiver- Ns Tn TCP
+will negotiate among themselves to determine the maximum segment size
+to be used for each connection.
+The
+.Dv TCP_MAXSEG
+option allows the user to determine the result of this negotiation,
+and to reduce it if desired.
+.It Dv TCP_NOOPT
+.Tn TCP
+usually sends a number of options in each packet, corresponding to
+various
+.Tn TCP
+extensions which are provided in this implementation.
+The boolean option
+.Dv TCP_NOOPT
+is provided to disable
+.Tn TCP
+option use on a per-connection basis.
+.It Dv TCP_NOPUSH
+By convention, the
+.No sender- Ns Tn TCP
+will set the
+.Dq push
+bit, and begin transmission immediately (if permitted) at the end of
+every user call to
+.Xr write 2
+or
+.Xr writev 2 .
+When this option is set to a non-zero value,
+.Tn TCP
+will delay sending any data at all until either the socket is closed,
+or the internal send buffer is filled.
+.It Dv TCP_MD5SIG
+This option enables the use of MD5 digests (also known as TCP-MD5)
+on writes to the specified socket.
+In the current release, only outgoing traffic is digested;
+digests on incoming traffic are not verified.
+The current default behavior for the system is to respond to a system
+advertising this option with TCP-MD5; this may change.
+.Pp
+One common use for this in a
+.Fx
+router deployment is to enable
+based routers to interwork with Cisco equipment at peering points.
+Support for this feature conforms to RFC 2385.
+Only IPv4
+.Pq Dv AF_INET
+sessions are supported.
+.Pp
+In order for this option to function correctly, it is necessary for the
+administrator to add a tcp-md5 key entry to the system's security
+associations database (SADB) using the
+.Xr setkey 8
+utility.
+This entry must have an SPI of 0x1000 and can therefore only be specified
+on a per-host basis at this time.
+.Pp
+If an SADB entry cannot be found for the destination, the outgoing traffic
+will have an invalid digest option prepended, and the following error message
+will be visible on the system console:
+.Em "tcp_signature_compute: SADB lookup failed for %d.%d.%d.%d" .
+.El
+.Pp
+The option level for the
+.Xr setsockopt 2
+call is the protocol number for
+.Tn TCP ,
+available from
+.Xr getprotobyname 3 ,
+or
+.Dv IPPROTO_TCP .
+All options are declared in
+.In netinet/tcp.h .
+.Pp
+Options at the
+.Tn IP
+transport level may be used with
+.Tn TCP ;
+see
+.Xr ip 4 .
+Incoming connection requests that are source-routed are noted,
+and the reverse source route is used in responding.
+.Ss MIB Variables
+The
+.Tn TCP
+protocol implements a number of variables in the
+.Va net.inet.tcp
+branch of the
+.Xr sysctl 3
+MIB.
+.Bl -tag -width ".Va TCPCTL_DO_RFC1323"
+.It Dv TCPCTL_DO_RFC1323
+.Pq Va rfc1323
+Implement the window scaling and timestamp options of RFC 1323
+(default is true).
+.It Dv TCPCTL_MSSDFLT
+.Pq Va mssdflt
+The default value used for the maximum segment size
+.Pq Dq MSS
+when no advice to the contrary is received from MSS negotiation.
+.It Dv TCPCTL_SENDSPACE
+.Pq Va sendspace
+Maximum
+.Tn TCP
+send window.
+.It Dv TCPCTL_RECVSPACE
+.Pq Va recvspace
+Maximum
+.Tn TCP
+receive window.
+.It Va log_in_vain
+Log any connection attempts to ports where there is not a socket
+accepting connections.
+The value of 1 limits the logging to
+.Tn SYN
+(connection establishment) packets only.
+That of 2 results in any
+.Tn TCP
+packets to closed ports being logged.
+Any value unlisted above disables the logging
+(default is 0, i.e., the logging is disabled).
+.It Va slowstart_flightsize
+The number of packets allowed to be in-flight during the
+.Tn TCP
+slow-start phase on a non-local network.
+.It Va local_slowstart_flightsize
+The number of packets allowed to be in-flight during the
+.Tn TCP
+slow-start phase to local machines in the same subnet.
+.It Va msl
+The Maximum Segment Lifetime, in milliseconds, for a packet.
+.It Va keepinit
+Timeout, in milliseconds, for new, non-established
+.Tn TCP
+connections.
+.It Va keepidle
+Amount of time, in milliseconds, that the connection must be idle
+before keepalive probes (if enabled) are sent.
+.It Va keepintvl
+The interval, in milliseconds, between keepalive probes sent to remote
+machines.
+After
+.Dv TCPTV_KEEPCNT
+(default 8) probes are sent, with no response, the connection is dropped.
+.It Va always_keepalive
+Assume that
+.Dv SO_KEEPALIVE
+is set on all
+.Tn TCP
+connections, the kernel will
+periodically send a packet to the remote host to verify the connection
+is still up.
+.It Va icmp_may_rst
+Certain
+.Tn ICMP
+unreachable messages may abort connections in
+.Tn SYN-SENT
+state.
+.It Va do_tcpdrain
+Flush packets in the
+.Tn TCP
+reassembly queue if the system is low on mbufs.
+.It Va blackhole
+If enabled, disable sending of RST when a connection is attempted
+to a port where there is not a socket accepting connections.
+See
+.Xr blackhole 4 .
+.It Va delayed_ack
+Delay ACK to try and piggyback it onto a data packet.
+.It Va delacktime
+Maximum amount of time, in milliseconds, before a delayed ACK is sent.
+.It Va newreno
+Enable
+.Tn TCP
+NewReno Fast Recovery algorithm,
+as described in RFC 2582.
+.It Va path_mtu_discovery
+Enable Path MTU Discovery.
+.It Va tcbhashsize
+Size of the
+.Tn TCP
+control-block hash table
+(read-only).
+This may be tuned using the kernel option
+.Dv TCBHASHSIZE
+or by setting
+.Va net.inet.tcp.tcbhashsize
+in the
+.Xr loader 8 .
+.It Va pcbcount
+Number of active process control blocks
+(read-only).
+.It Va syncookies
+Determines whether or not
+.Tn SYN
+cookies should be generated for outbound
+.Tn SYN-ACK
+packets.
+.Tn SYN
+cookies are a great help during
+.Tn SYN
+flood attacks, and are enabled by default.
+(See
+.Xr syncookies 4 . )
+.It Va isn_reseed_interval
+The interval (in seconds) specifying how often the secret data used in
+RFC 1948 initial sequence number calculations should be reseeded.
+By default, this variable is set to zero, indicating that
+no reseeding will occur.
+Reseeding should not be necessary, and will break
+.Dv TIME_WAIT
+recycling for a few minutes.
+.It Va rexmit_min , rexmit_slop
+Adjust the retransmit timer calculation for
+.Tn TCP .
+The slop is
+typically added to the raw calculation to take into account
+occasional variances that the
+.Tn SRTT
+(smoothed round-trip time)
+is unable to accommodate, while the minimum specifies an
+absolute minimum.
+While a number of
+.Tn TCP
+RFCs suggest a 1
+second minimum, these RFCs tend to focus on streaming behavior,
+and fail to deal with the fact that a 1 second minimum has severe
+detrimental effects over lossy interactive connections, such
+as a 802.11b wireless link, and over very fast but lossy
+connections for those cases not covered by the fast retransmit
+code.
+For this reason, we use 200ms of slop and a near-0
+minimum, which gives us an effective minimum of 200ms (similar to
+.Tn Linux ) .
+.It Va inflight.enable
+Enable
+.Tn TCP
+bandwidth-delay product limiting.
+An attempt will be made to calculate
+the bandwidth-delay product for each individual
+.Tn TCP
+connection, and limit
+the amount of inflight data being transmitted, to avoid building up
+unnecessary packets in the network.
+This option is recommended if you
+are serving a lot of data over connections with high bandwidth-delay
+products, such as modems, GigE links, and fast long-haul WANs, and/or
+you have configured your machine to accommodate large
+.Tn TCP
+windows.
+In such
+situations, without this option, you may experience high interactive
+latencies or packet loss due to the overloading of intermediate routers
+and switches.
+Note that bandwidth-delay product limiting only effects
+the transmit side of a
+.Tn TCP
+connection.
+.It Va inflight.debug
+Enable debugging for the bandwidth-delay product algorithm.
+.It Va inflight.min
+This puts a lower bound on the bandwidth-delay product window, in bytes.
+A value of 1024 is typically used for debugging.
+6000-16000 is more typical in a production installation.
+Setting this value too low may result in
+slow ramp-up times for bursty connections.
+Setting this value too high effectively disables the algorithm.
+.It Va inflight.max
+This puts an upper bound on the bandwidth-delay product window, in bytes.
+This value should not generally be modified, but may be used to set a
+global per-connection limit on queued data, potentially allowing you to
+intentionally set a less than optimum limit, to smooth data flow over a
+network while still being able to specify huge internal
+.Tn TCP
+buffers.
+.It Va inflight.stab
+The bandwidth-delay product algorithm requires a slightly larger window
+than it otherwise calculates for stability.
+This parameter determines the extra window in maximal packets / 10.
+The default value of 20 represents 2 maximal packets.
+Reducing this value is not recommended, but you may
+come across a situation with very slow links where the
+.Xr ping 8
+time
+reduction of the default inflight code is not sufficient.
+If this case occurs, you should first try reducing
+.Va inflight.min
+and, if that does not
+work, reduce both
+.Va inflight.min
+and
+.Va inflight.stab ,
+trying values of
+15, 10, or 5 for the latter.
+Never use a value less than 5.
+Reducing
+.Va inflight.stab
+can lead to upwards of a 20% underutilization of the link
+as well as reducing the algorithm's ability to adapt to changing
+situations and should only be done as a last resort.
+.It Va rfc3042
+Enable the Limited Transmit algorithm as described in RFC 3042.
+It helps avoid timeouts on lossy links and also when the congestion window
+is small, as happens on short transfers.
+.It Va rfc3390
+Enable support for RFC 3390, which allows for a variable-sized
+starting congestion window on new connections, depending on the
+maximum segment size.
+This helps throughput in general, but
+particularly affects short transfers and high-bandwidth large
+propagation-delay connections.
+.Pp
+When this feature is enabled, the
+.Va slowstart_flightsize
+and
+.Va local_slowstart_flightsize
+settings are not observed for new
+connection slow starts, but they are still used for slow starts
+that occur when the connection has been idle and starts sending
+again.
+.It Va sack.enable
+Enable support for RFC 2018, TCP Selective Acknowledgment option,
+which allows the receiver to inform the sender about all successfully
+arrived segments, allowing the sender to retransmit the missing segments
+only.
+.It Va sack.maxholes
+Maximum number of SACK holes per connection.
+Defaults to 128.
+.It Va sack.globalmaxholes
+Maximum number of SACK holes per system, across all connections.
+Defaults to 65536.
+.It Va maxtcptw
+When a TCP connection enters the
+.Dv TIME_WAIT
+state, its associated socket structure is freed, since it is of
+negligible size and use, and a new structure is allocated to contain a
+minimal amount of information necessary for sustaining a connection in
+this state, called the compressed TCP TIME_WAIT state.
+Since this structure is smaller than a socket structure, it can save
+a significant amount of system memory.
+The
+.Va net.inet.tcp.maxtcptw
+MIB variable controls the maximum number of these structures allocated.
+By default, it is initialized to
+.Va kern.ipc.maxsockets
+/ 5.
+.It Va nolocaltimewait
+Suppress creating of compressed TCP TIME_WAIT states for connections in
+which both endpoints are local.
+.It Va fast_finwait2_recycle
+Recycle
+.Tn TCP
+.Dv FIN_WAIT_2
+connections faster when the socket is marked as
+.Dv SBS_CANTRCVMORE
+(no user process has the socket open, data received on
+the socket cannot be read).
+The timeout used here is
+.Va finwait2_timeout .
+.It Va finwait2_timeout
+Timeout to use for fast recycling of
+.Tn TCP
+.Dv FIN_WAIT_2
+connections.
+Defaults to 60 seconds.
+.It Va ecn.enable
+Enable support for TCP Explicit Congestion Notification (ECN).
+ECN allows a TCP sender to reduce the transmission rate in order to
+avoid packet drops.
+.It Va ecn.maxretries
+Number of retries (SYN or SYN/ACK retransmits) before disabling ECN on a
+specific connection. This is needed to help with connection establishment
+when a broken firewall is in the network path.
+.El
+.Sh ERRORS
+A socket operation may fail with one of the following errors returned:
+.Bl -tag -width Er
+.It Bq Er EISCONN
+when trying to establish a connection on a socket which
+already has one;
+.It Bq Er ENOBUFS
+when the system runs out of memory for
+an internal data structure;
+.It Bq Er ETIMEDOUT
+when a connection was dropped
+due to excessive retransmissions;
+.It Bq Er ECONNRESET
+when the remote peer
+forces the connection to be closed;
+.It Bq Er ECONNREFUSED
+when the remote
+peer actively refuses connection establishment (usually because
+no process is listening to the port);
+.It Bq Er EADDRINUSE
+when an attempt
+is made to create a socket with a port which has already been
+allocated;
+.It Bq Er EADDRNOTAVAIL
+when an attempt is made to create a
+socket with a network address for which no network interface
+exists;
+.It Bq Er EAFNOSUPPORT
+when an attempt is made to bind or connect a socket to a multicast
+address.
+.El
+.Sh SEE ALSO
+.Xr getsockopt 2 ,
+.Xr socket 2 ,
+.Xr sysctl 3 ,
+.Xr blackhole 4 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr ip 4 ,
+.Xr syncache 4 ,
+.Xr setkey 8
+.Rs
+.%A "V. Jacobson"
+.%A "R. Braden"
+.%A "D. Borman"
+.%T "TCP Extensions for High Performance"
+.%O "RFC 1323"
+.Re
+.Rs
+.%A "A. Heffernan"
+.%T "Protection of BGP Sessions via the TCP MD5 Signature Option"
+.%O "RFC 2385"
+.Re
+.Rs
+.%A "K. Ramakrishnan"
+.%A "S. Floyd"
+.%A "D. Black"
+.%T "The Addition of Explicit Congestion Notification (ECN) to IP"
+.%O "RFC 3168"
+.Re
+.Sh HISTORY
+The
+.Tn TCP
+protocol appeared in
+.Bx 4.2 .
+The RFC 1323 extensions for window scaling and timestamps were added
+in
+.Bx 4.4 .
+The
+.Dv TCP_INFO
+option was introduced in
+.Tn Linux 2.6
+and is
+.Em subject to change .
diff --git a/share/man/man4/tdfx.4 b/share/man/man4/tdfx.4
new file mode 100644
index 0000000..b785c75
--- /dev/null
+++ b/share/man/man4/tdfx.4
@@ -0,0 +1,93 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 19, 2001
+.Dt TDFX 4
+.Os
+.Sh NAME
+.Nm tdfx
+.Nd Voodoo Graphics and VoodooII Memory Access GLIDE device driver
+.Sh SYNOPSIS
+.Cd device tdfx
+.Cd device tdfx_linux
+.Sh DESCRIPTION
+This driver creates an entry in
+.Pa /dev
+that allows programs (mostly
+.Em GLIDE-based software )
+to access the device memory of the Voodoo Graphics and
+VoodooII 3D accelerators created by
+.Em 3Dfx, Inc .
+This provides an interface
+for applications based on the
+.Em GLIDE API
+or that simply use the API
+provided by the linux
+.Pa /dev/3dfx
+device to use the video device.
+.Pp
+Supports all cards based on the following chipsets:
+.Pp
+.Bl -item -offset indent -compact
+.It
+.Em 3Dfx Voodoo Graphics
+.It
+.Em 3Dfx Voodoo II
+.El
+.Pp
+Specifically, the following cards should work:
+.Pp
+.Bl -item -offset indent -compact
+.It
+.Em Diamond Multimedia Monster 3D
+.It
+.Em Diamond Multimedia Monster 3D II
+.El
+.Pp
+Note that this driver does not currently have support for the Voodoo
+Banshee, Voodoo3, Voodoo5, or Voodoo6 based cards.
+It also does not currently support the Voodoo Rush.
+It also does not yet handle the SLI feature of the Voodoo II boards.
+You can only use each of them separately.
+.Pp
+By including
+.Nm tdfx_linux ,
+you can enable the linux ioctl code for this driver, where the only supported
+applications currently reside.
+.Sh FILES
+.Bl -tag -width /dev/voodoo* -compact
+.It Pa /dev/3dfx
+Symlinked to default
+.Em 3dfx
+board
+.It Pa /dev/3dfx*
+.Em Character Device
+programming interface
+.Pp
+.It Pa /dev/voodoo
+Mirrors of above interfaces
+.It Pa /dev/voodoo*
+(Some apps use
+.Pa /dev/voodoo )
+.El
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 5.0 ,
+and was originally developed for Linux kernel 2.0.x, later written for
+2.2.x and 2.4.x.
+.Sh AUTHORS
+.An -nosplit
+The driver was developed by
+.An Coleman Kane Aq cokane@micro.ti.com
+after the linux version of this driver by
+.An Darryll Straus ,
+.An John Taylor ,
+.An Jens Axboe ,
+.An Carlo Wood Aq carlo@alinoe.com
+and
+.An Joseph Kain Aq joseph@3dfx.com
+to be directly compatible with it and support the many GLIDE based games
+available for Linux and
+.Ux .
diff --git a/share/man/man4/termios.4 b/share/man/man4/termios.4
new file mode 100644
index 0000000..cda1673
--- /dev/null
+++ b/share/man/man4/termios.4
@@ -0,0 +1,1579 @@
+.\" Copyright (c) 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)termios.4 8.4 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.Dd August 20, 2008
+.Dt TERMIOS 4
+.Os
+.Sh NAME
+.Nm termios
+.Nd general terminal line discipline
+.Sh SYNOPSIS
+.In termios.h
+.Sh DESCRIPTION
+This describes a general terminal line discipline that is
+supported on tty asynchronous communication ports.
+.Ss Opening a Terminal Device File
+When a terminal file is opened, it normally causes the process to wait
+until a connection is established.
+For most hardware, the presence
+of a connection is indicated by the assertion of the hardware
+.Dv CARRIER
+line.
+If the termios structure associated with the terminal file has the
+.Dv CLOCAL
+flag set in the cflag, or if the
+.Dv O_NONBLOCK
+flag is set
+in the
+.Xr open 2
+call, then the open will succeed even without
+a connection being present.
+In practice, applications
+seldom open these files; they are opened by special programs, such
+as
+.Xr getty 8
+or
+.Xr rlogind 8 ,
+and become
+an application's standard input, output, and error files.
+.Ss Job Control in a Nutshell
+Every process is associated with a particular process group and session.
+The grouping is hierarchical: every member of a particular process group is a
+member of the same session.
+This structuring is used in managing groups
+of related processes for purposes of
+.\" .Gw "job control" ;
+.Em "job control" ;
+that is, the
+ability from the keyboard (or from program control) to simultaneously
+stop or restart
+a complex command (a command composed of one or more related
+processes).
+The grouping into process groups allows delivering
+of signals that stop or start the group as a whole, along with
+arbitrating which process group has access to the single controlling
+terminal.
+The grouping at a higher layer into sessions is to restrict
+the job control related signals and system calls to within processes
+resulting from a particular instance of a
+.Dq login .
+Typically, a session
+is created when a user logs in, and the login terminal is setup
+to be the controlling terminal; all processes spawned from that
+login shell are in the same session, and inherit the controlling
+terminal.
+.Pp
+A job control shell
+operating interactively (that is, reading commands from a terminal)
+normally groups related processes together by placing them into the
+same process group.
+A set of processes in the same process group
+is collectively referred to as a
+.Dq job .
+When the foreground process
+group of the terminal is the same as the process group of a particular
+job, that job is said to be in the
+.Dq foreground .
+When the process group of the terminal is different from the process group of
+a job (but is still the controlling terminal), that job is said
+to be in the
+.Dq background .
+Normally the
+shell reads a command and starts the job that implements that
+command.
+If the command is to be started in the foreground (typical), it
+sets the process group of the terminal to the process group
+of the started job, waits for the job to complete, and then
+sets the process group of the terminal back to its own process
+group (it puts itself into the foreground).
+If the job is to
+be started in the background (as denoted by the shell operator "&"),
+it never changes the process group of the terminal and does not
+wait for the job to complete (that is, it immediately attempts to read the next
+command).
+If the job is started in the foreground, the user may
+type a key (usually
+.Ql \&^Z )
+which generates the terminal stop signal
+.Pq Dv SIGTSTP
+and has the effect of stopping the entire job.
+The shell will notice that the job stopped, and will resume running after
+placing itself in the foreground.
+The shell also has commands for placing stopped jobs in the background,
+and for placing stopped or background jobs into the foreground.
+.Ss Orphaned Process Groups
+An orphaned process group is a process group that has no process
+whose parent is in a different process group, yet is in the same
+session.
+Conceptually it means a process group that does not have
+a parent that could do anything if it were to be stopped.
+For example,
+the initial login shell is typically in an orphaned process group.
+Orphaned process groups are immune to keyboard generated stop
+signals and job control signals resulting from reads or writes to the
+controlling terminal.
+.Ss The Controlling Terminal
+A terminal may belong to a process as its controlling terminal.
+Each
+process of a session that has a controlling terminal has the same
+controlling terminal.
+A terminal may be the controlling terminal for at
+most one session.
+The controlling terminal for a session is allocated by
+the session leader by issuing the
+.Dv TIOCSCTTY
+ioctl.
+A controlling terminal
+is never acquired by merely opening a terminal device file.
+When a controlling terminal becomes
+associated with a session, its foreground process group is set to
+the process group of the session leader.
+.Pp
+The controlling terminal is inherited by a child process during a
+.Xr fork 2
+function call.
+A process relinquishes its controlling terminal when it
+creates a new session with the
+.Xr setsid 2
+function; other processes
+remaining in the old session that had this terminal as their controlling
+terminal continue to have it.
+A process does not relinquish its
+controlling terminal simply by closing all of its file descriptors
+associated with the controlling terminal if other processes continue to
+have it open.
+.Pp
+When a controlling process terminates, the controlling terminal is
+disassociated from the current session, allowing it to be acquired by a
+new session leader.
+Subsequent access to the terminal by other processes
+in the earlier session will be denied, with attempts to access the
+terminal treated as if modem disconnect had been sensed.
+.Ss Terminal Access Control
+If a process is in the foreground process group of its controlling
+terminal, read operations are allowed.
+Any attempts by a process
+in a background process group to read from its controlling terminal
+causes a
+.Dv SIGTTIN
+signal to be sent to
+the process's group
+unless one of the
+following special cases apply: if the reading process is ignoring or
+blocking the
+.Dv SIGTTIN
+signal, or if the process group of the reading
+process is orphaned, the
+.Xr read 2
+returns -1 with
+.Va errno set to
+.Er EIO
+and no
+signal is sent.
+The default action of the
+.Dv SIGTTIN
+signal is to stop the
+process to which it is sent.
+.Pp
+If a process is in the foreground process group of its controlling
+terminal, write operations are allowed.
+Attempts by a process in a background process group to write to its
+controlling terminal will cause the process group to be sent a
+.Dv SIGTTOU
+signal unless one of the following special cases apply: if
+.Dv TOSTOP
+is not
+set, or if
+.Dv TOSTOP
+is set and the process is ignoring or blocking the
+.Dv SIGTTOU
+signal, the process is allowed to write to the terminal and the
+.Dv SIGTTOU
+signal is not sent.
+If
+.Dv TOSTOP
+is set, and the process group of
+the writing process is orphaned, and the writing process is not ignoring
+or blocking
+.Dv SIGTTOU ,
+the
+.Xr write 2
+returns -1 with
+errno set to
+.Er EIO
+and no signal is sent.
+.Pp
+Certain calls that set terminal parameters are treated in the same
+fashion as write, except that
+.Dv TOSTOP
+is ignored; that is, the effect is
+identical to that of terminal writes when
+.Dv TOSTOP
+is set.
+.Ss Input Processing and Reading Data
+A terminal device associated with a terminal device file may operate in
+full-duplex mode, so that data may arrive even while output is occurring.
+Each terminal device file has associated with it an input queue, into
+which incoming data is stored by the system before being read by a
+process.
+The system imposes a limit,
+.Pf \&{ Dv MAX_INPUT Ns \&} ,
+on the number of
+bytes that may be stored in the input queue.
+The behavior of the system
+when this limit is exceeded depends on the setting of the
+.Dv IMAXBEL
+flag in the termios
+.Fa c_iflag .
+If this flag is set, the terminal
+is sent an
+.Tn ASCII
+.Dv BEL
+character each time a character is received
+while the input queue is full.
+Otherwise, the input queue is flushed upon receiving the character.
+.Pp
+Two general kinds of input processing are available, determined by
+whether the terminal device file is in canonical mode or noncanonical
+mode.
+Additionally,
+input characters are processed according to the
+.Fa c_iflag
+and
+.Fa c_lflag
+fields.
+Such processing can include echoing, which
+in general means transmitting input characters immediately back to the
+terminal when they are received from the terminal.
+This is useful for terminals that can operate in full-duplex mode.
+.Pp
+The manner in which data is provided to a process reading from a terminal
+device file is dependent on whether the terminal device file is in
+canonical or noncanonical mode.
+.Pp
+Another dependency is whether the
+.Dv O_NONBLOCK
+flag is set by
+.Xr open 2
+or
+.Xr fcntl 2 .
+If the
+.Dv O_NONBLOCK
+flag is clear, then the read request is
+blocked until data is available or a signal has been received.
+If the
+.Dv O_NONBLOCK
+flag is set, then the read request is completed, without
+blocking, in one of three ways:
+.Bl -enum -offset indent
+.It
+If there is enough data available to satisfy the entire request,
+and the read completes successfully the number of
+bytes read is returned.
+.It
+If there is not enough data available to satisfy the entire
+request, and the read completes successfully, having read as
+much data as possible, the number of bytes read is returned.
+.It
+If there is no data available, the read returns -1, with
+errno set to
+.Er EAGAIN .
+.El
+.Pp
+When data is available depends on whether the input processing mode is
+canonical or noncanonical.
+.Ss Canonical Mode Input Processing
+In canonical mode input processing, terminal input is processed in units
+of lines.
+A line is delimited by a newline
+.Ql \&\en
+character, an end-of-file
+.Pq Dv EOF
+character, or an end-of-line
+.Pq Dv EOL
+character.
+See the
+.Sx "Special Characters"
+section for
+more information on
+.Dv EOF
+and
+.Dv EOL .
+This means that a read request will
+not return until an entire line has been typed, or a signal has been
+received.
+Also, no matter how many bytes are requested in the read call,
+at most one line is returned.
+It is not, however, necessary to
+read a whole line at once; any number of bytes, even one, may be
+requested in a read without losing information.
+.Pp
+.Pf \&{ Dv MAX_CANON Ns \&}
+is a limit on the
+number of bytes in a line.
+The behavior of the system when this limit is
+exceeded is the same as when the input queue limit
+.Pf \&{ Dv MAX_INPUT Ns \&} ,
+is exceeded.
+.Pp
+Erase and kill processing occur when either of two special characters,
+the
+.Dv ERASE
+and
+.Dv KILL
+characters (see the
+.Sx "Special Characters"
+section), is received.
+This processing affects data in the input queue that has not yet been
+delimited by a newline
+.Dv NL ,
+.Dv EOF ,
+or
+.Dv EOL
+character.
+This un-delimited
+data makes up the current line.
+The
+.Dv ERASE
+character deletes the last
+character in the current line, if there is any.
+The
+.Dv KILL
+character
+deletes all data in the current line, if there is any.
+The
+.Dv ERASE
+and
+.Dv KILL
+characters have no effect if there is no data in the current line.
+The
+.Dv ERASE
+and
+.Dv KILL
+characters themselves are not placed in the input
+queue.
+.Ss Noncanonical Mode Input Processing
+In noncanonical mode input processing, input bytes are not assembled into
+lines, and erase and kill processing does not occur.
+The values of the
+.Dv VMIN
+and
+.Dv VTIME
+members of the
+.Fa c_cc
+array are used to determine how to
+process the bytes received.
+.Pp
+.Dv MIN
+represents the minimum number of bytes that should be received when
+the
+.Xr read 2
+function successfully returns.
+.Dv TIME
+is a timer of 0.1 second
+granularity that is used to time out bursty and short term data
+transmissions.
+If
+.Dv MIN
+is greater than
+.Dv \&{ Dv MAX_INPUT Ns \&} ,
+the response to the
+request is undefined.
+The four possible values for
+.Dv MIN
+and
+.Dv TIME
+and
+their interactions are described below.
+.Ss "Case A: MIN > 0, TIME > 0"
+In this case
+.Dv TIME
+serves as an inter-byte timer and is activated after
+the first byte is received.
+Since it is an inter-byte timer, it is reset
+after a byte is received.
+The interaction between
+.Dv MIN
+and
+.Dv TIME
+is as
+follows: as soon as one byte is received, the inter-byte timer is
+started.
+If
+.Dv MIN
+bytes are received before the inter-byte timer expires
+(remember that the timer is reset upon receipt of each byte), the read is
+satisfied.
+If the timer expires before
+.Dv MIN
+bytes are received, the
+characters received to that point are returned to the user.
+Note that if
+.Dv TIME
+expires at least one byte is returned because the timer would
+not have been enabled unless a byte was received.
+In this case
+.Pf \&( Dv MIN
+> 0,
+.Dv TIME
+> 0) the read blocks until the
+.Dv MIN
+and
+.Dv TIME
+mechanisms are
+activated by the receipt of the first byte, or a signal is received.
+If data is in the buffer at the time of the
+.Fn read ,
+the result is as
+if data had been received immediately after the
+.Fn read .
+.Ss "Case B: MIN > 0, TIME = 0"
+In this case, since the value of
+.Dv TIME
+is zero, the timer plays no role
+and only
+.Dv MIN
+is significant.
+A pending read is not satisfied until
+.Dv MIN
+bytes are received (i.e., the pending read blocks until
+.Dv MIN
+bytes
+are received), or a signal is received.
+A program that uses this case to read record-based terminal
+.Dv I/O
+may block indefinitely in the read
+operation.
+.Ss "Case C: MIN = 0, TIME > 0"
+In this case, since
+.Dv MIN
+= 0,
+.Dv TIME
+no longer represents an inter-byte
+timer.
+It now serves as a read timer that is activated as soon as the
+read function is processed.
+A read is satisfied as soon as a single
+byte is received or the read timer expires.
+Note that in this case if the timer expires, no bytes are returned.
+If the timer does not
+expire, the only way the read can be satisfied is if a byte is received.
+In this case the read will not block indefinitely waiting for a byte; if
+no byte is received within
+.Dv TIME Ns *0.1
+seconds after the read is initiated,
+the read returns a value of zero, having read no data.
+If data is
+in the buffer at the time of the read, the timer is started as if
+data had been received immediately after the read.
+.Ss Case D: MIN = 0, TIME = 0
+The minimum of either the number of bytes requested or the number of
+bytes currently available is returned without waiting for more
+bytes to be input.
+If no characters are available, read returns a
+value of zero, having read no data.
+.Ss Writing Data and Output Processing
+When a process writes one or more bytes to a terminal device file, they
+are processed according to the
+.Fa c_oflag
+field (see the
+.Sx "Output Modes"
+section).
+The
+implementation may provide a buffering mechanism; as such, when a call to
+.Fn write
+completes, all of the bytes written have been scheduled for
+transmission to the device, but the transmission will not necessarily
+have been completed.
+.\" See also .Sx "6.4.2" for the effects of
+.\" .Dv O_NONBLOCK
+.\" on write.
+.Ss Special Characters
+Certain characters have special functions on input or output or both.
+These functions are summarized as follows:
+.Bl -tag -width indent
+.It Dv INTR
+Special character on input and is recognized if the
+.Dv ISIG
+flag (see the
+.Sx "Local Modes"
+section) is enabled.
+Generates a
+.Dv SIGINT
+signal which is sent to all processes in the foreground
+process group for which the terminal is the controlling
+terminal.
+If
+.Dv ISIG
+is set, the
+.Dv INTR
+character is
+discarded when processed.
+.It Dv QUIT
+Special character on input and is recognized if the
+.Dv ISIG
+flag is enabled.
+Generates a
+.Dv SIGQUIT
+signal which is
+sent to all processes in the foreground process group
+for which the terminal is the controlling terminal.
+If
+.Dv ISIG
+is set, the
+.Dv QUIT
+character is discarded when
+processed.
+.It Dv ERASE
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+Erases the last character in the
+current line; see
+.Sx "Canonical Mode Input Processing" .
+It does not erase beyond
+the start of a line, as delimited by an
+.Dv NL ,
+.Dv EOF ,
+or
+.Dv EOL
+character.
+If
+.Dv ICANON
+is set, the
+.Dv ERASE
+character is
+discarded when processed.
+.It Dv KILL
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+Deletes the entire line, as
+delimited by a
+.Dv NL ,
+.Dv EOF ,
+or
+.Dv EOL
+character.
+If
+.Dv ICANON
+is set, the
+.Dv KILL
+character is discarded when processed.
+.It Dv EOF
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+When received, all the bytes
+waiting to be read are immediately passed to the
+process, without waiting for a newline, and the
+.Dv EOF
+is discarded.
+Thus, if there are no bytes waiting (that is, the
+.Dv EOF
+occurred at the beginning of a line), a byte
+count of zero is returned from the
+.Fn read ,
+representing an end-of-file indication.
+If
+.Dv ICANON
+is
+set, the
+.Dv EOF
+character is discarded when processed.
+.It Dv NL
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+It is the line delimiter
+.Ql \&\en .
+.It Dv EOL
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+Is an additional line delimiter, like
+.Dv NL .
+.It Dv SUSP
+If the
+.Dv ISIG
+flag is enabled, receipt of the
+.Dv SUSP
+character causes a
+.Dv SIGTSTP
+signal to be sent to all processes in the
+foreground process group for which the terminal is the
+controlling terminal, and the
+.Dv SUSP
+character is
+discarded when processed.
+.It Dv STOP
+Special character on both input and output and is
+recognized if the
+.Dv IXON
+(output control) or
+.Dv IXOFF
+(input
+control) flag is set.
+Can be used to temporarily suspend output.
+It is useful with fast terminals to
+prevent output from disappearing before it can be read.
+If
+.Dv IXON
+is set, the
+.Dv STOP
+character is discarded when
+processed.
+.It Dv START
+Special character on both input and output and is
+recognized if the
+.Dv IXON
+(output control) or
+.Dv IXOFF
+(input
+control) flag is set.
+Can be used to resume output that has been suspended by a
+.Dv STOP
+character.
+If
+.Dv IXON
+is set, the
+.Dv START
+character is discarded when processed.
+.It Dv CR
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set; it is the
+.Ql \&\er ,
+as denoted in the
+.Tn \&C
+Standard {2}.
+When
+.Dv ICANON
+and
+.Dv ICRNL
+are set and
+.Dv IGNCR
+is not set, this character is translated into a
+.Dv NL ,
+and
+has the same effect as a
+.Dv NL
+character.
+.El
+.Pp
+The following special characters are extensions defined by this
+system and are not a part of
+.St -p1003.1
+termios.
+.Bl -tag -width indent
+.It Dv EOL2
+Secondary
+.Dv EOL
+character.
+Same function as
+.Dv EOL .
+.It Dv WERASE
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+Erases the last word in the current line according to one of two algorithms.
+If the
+.Dv ALTWERASE
+flag is not set, first any preceding whitespace is
+erased, and then the maximal sequence of non-whitespace
+characters.
+If
+.Dv ALTWERASE
+is set, first any preceding
+whitespace is erased, and then the maximal sequence
+of alphabetic/underscores or non alphabetic/underscores.
+As a special case in this second algorithm, the first previous
+non-whitespace character is skipped in determining
+whether the preceding word is a sequence of
+alphabetic/underscores.
+This sounds confusing but turns out to be quite practical.
+.It Dv REPRINT
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+Causes the current input edit line to be retyped.
+.It Dv DSUSP
+Has similar actions to the
+.Dv SUSP
+character, except that
+the
+.Dv SIGTSTP
+signal is delivered when one of the processes
+in the foreground process group issues a
+.Fn read
+to the
+controlling terminal.
+.It Dv LNEXT
+Special character on input and is recognized if the
+.Dv IEXTEN
+flag is set.
+Receipt of this character causes the next character to be taken literally.
+.It Dv DISCARD
+Special character on input and is recognized if the
+.Dv IEXTEN
+flag is set.
+Receipt of this character toggles the flushing of terminal output.
+.It Dv STATUS
+Special character on input and is recognized if the
+.Dv ICANON
+flag is set.
+Receipt of this character causes a
+.Dv SIGINFO
+signal to be sent to the foreground process group of the
+terminal.
+Also, if the
+.Dv NOKERNINFO
+flag is not set, it
+causes the kernel to write a status message to the terminal
+that displays the current load average, the name of the
+command in the foreground, its process ID, the symbolic
+wait channel, the number of user and system seconds used,
+the percentage of cpu the process is getting, and the resident
+set size of the process.
+.El
+.Pp
+The
+.Dv NL
+and
+.Dv CR
+characters cannot be changed.
+The values for all the remaining characters can be set and are
+described later in the document under
+Special Control Characters.
+.Pp
+Special
+character functions associated with changeable special control characters
+can be disabled individually by setting their value to
+.Dv {_POSIX_VDISABLE} ;
+see
+.Sx "Special Control Characters" .
+.Pp
+If two or more special characters have the same value, the function
+performed when that character is received is undefined.
+.Ss Modem Disconnect
+If a modem disconnect is detected by the terminal interface for a
+controlling terminal, and if
+.Dv CLOCAL
+is not set in the
+.Fa c_cflag
+field for
+the terminal, the
+.Dv SIGHUP
+signal is sent to the controlling
+process associated with the terminal.
+Unless other arrangements have
+been made, this causes the controlling process to terminate.
+Any subsequent call to the
+.Fn read
+function returns the value zero,
+indicating end of file.
+Thus, processes that read a terminal
+file and test for end-of-file can terminate appropriately after a
+disconnect.
+.\" If the
+.\" .Er EIO
+.\" condition specified in 6.1.1.4 that applies
+.\" when the implementation supports job control also exists, it is
+.\" unspecified whether the
+.\" .Dv EOF
+.\" condition or the
+.\" .Pf [ Dv EIO
+.\" ] is returned.
+Any
+subsequent
+.Fn write
+to the terminal device returns -1, with
+.Va errno
+set to
+.Er EIO ,
+until the device is closed.
+.Sh General Terminal Interface
+.Ss Closing a Terminal Device File
+The last process to close a terminal device file causes any output
+to be sent to the device and any input to be discarded.
+Then, if
+.Dv HUPCL
+is set in the control modes, and the communications port supports a
+disconnect function, the terminal device performs a disconnect.
+.Ss Parameters That Can Be Set
+Routines that need to control certain terminal
+.Tn I/O
+characteristics
+do so by using the termios structure as defined in the header
+.In termios.h .
+This structure contains minimally four scalar elements of bit flags
+and one array of special characters.
+The scalar flag elements are named:
+.Fa c_iflag ,
+.Fa c_oflag ,
+.Fa c_cflag ,
+and
+.Fa c_lflag .
+The character array is named
+.Fa c_cc ,
+and its maximum index is
+.Dv NCCS .
+.Ss Input Modes
+Values of the
+.Fa c_iflag
+field describe the basic
+terminal input control, and are composed of
+following masks:
+.Pp
+.Bl -tag -width IMAXBEL -offset indent -compact
+.It Dv IGNBRK
+/* ignore BREAK condition */
+.It Dv BRKINT
+/* map BREAK to SIGINTR */
+.It Dv IGNPAR
+/* ignore (discard) parity errors */
+.It Dv PARMRK
+/* mark parity and framing errors */
+.It Dv INPCK
+/* enable checking of parity errors */
+.It Dv ISTRIP
+/* strip 8th bit off chars */
+.It Dv INLCR
+/* map NL into CR */
+.It Dv IGNCR
+/* ignore CR */
+.It Dv ICRNL
+/* map CR to NL (ala CRMOD) */
+.It Dv IXON
+/* enable output flow control */
+.It Dv IXOFF
+/* enable input flow control */
+.It Dv IXANY
+/* any char will restart after stop */
+.It Dv IMAXBEL
+/* ring bell on input queue full */
+.El
+.Pp
+In the context of asynchronous serial data transmission, a break
+condition is defined as a sequence of zero-valued bits that continues for
+more than the time to send one byte.
+The entire sequence of zero-valued
+bits is interpreted as a single break condition, even if it continues for
+a time equivalent to more than one byte.
+In contexts other than
+asynchronous serial data transmission the definition of a break condition
+is implementation defined.
+.Pp
+If
+.Dv IGNBRK
+is set, a break condition detected on input is ignored, that
+is, not put on the input queue and therefore not read by any process.
+If
+.Dv IGNBRK
+is not set and
+.Dv BRKINT
+is set, the break condition flushes the
+input and output queues and if the terminal is the controlling terminal
+of a foreground process group, the break condition generates a
+single
+.Dv SIGINT
+signal to that foreground process group.
+If neither
+.Dv IGNBRK
+nor
+.Dv BRKINT
+is set, a break condition is read as a single
+.Ql \&\e0 ,
+or if
+.Dv PARMRK
+is set, as
+.Ql \&\e377 ,
+.Ql \&\e0 ,
+.Ql \&\e0 .
+.Pp
+If
+.Dv IGNPAR
+is set, a byte with a framing or parity error (other than
+break) is ignored.
+.Pp
+If
+.Dv PARMRK
+is set, and
+.Dv IGNPAR
+is not set, a byte with a framing or parity
+error (other than break) is given to the application as the
+three-character sequence
+.Ql \&\e377 ,
+.Ql \&\e0 ,
+X, where
+.Ql \&\e377 ,
+.Ql \&\e0
+is a two-character
+flag preceding each sequence and X is the data of the character received
+in error.
+To avoid ambiguity in this case, if
+.Dv ISTRIP
+is not set, a valid
+character of
+.Ql \&\e377
+is given to the application as
+.Ql \&\e377 ,
+.Ql \&\e377 .
+If
+neither
+.Dv PARMRK
+nor
+.Dv IGNPAR
+is set, a framing or parity error (other than
+break) is given to the application as a single character
+.Ql \&\e0 .
+.Pp
+If
+.Dv INPCK
+is set, input parity checking is enabled.
+If
+.Dv INPCK
+is not set,
+input parity checking is disabled, allowing output parity generation
+without input parity errors.
+Note that whether input parity checking is
+enabled or disabled is independent of whether parity detection is enabled
+or disabled (see
+.Sx "Control Modes" ) .
+If parity detection is enabled but input
+parity checking is disabled, the hardware to which the terminal is
+connected recognizes the parity bit, but the terminal special file
+does not check whether this bit is set correctly or not.
+.Pp
+If
+.Dv ISTRIP
+is set, valid input bytes are first stripped to seven bits,
+otherwise all eight bits are processed.
+.Pp
+If
+.Dv INLCR
+is set, a received
+.Dv NL
+character is translated into a
+.Dv CR
+character.
+If
+.Dv IGNCR
+is set, a received
+.Dv CR
+character is ignored (not
+read).
+If
+.Dv IGNCR
+is not set and
+.Dv ICRNL
+is set, a received
+.Dv CR
+character is
+translated into a
+.Dv NL
+character.
+.Pp
+If
+.Dv IXON
+is set, start/stop output control is enabled.
+A received
+.Dv STOP
+character suspends output and a received
+.Dv START
+character
+restarts output.
+If
+.Dv IXANY
+is also set, then any character may
+restart output.
+When
+.Dv IXON
+is set,
+.Dv START
+and
+.Dv STOP
+characters are not
+read, but merely perform flow control functions.
+When
+.Dv IXON
+is not set,
+the
+.Dv START
+and
+.Dv STOP
+characters are read.
+.Pp
+If
+.Dv IXOFF
+is set, start/stop input control is enabled.
+The system shall transmit one or more
+.Dv STOP
+characters, which are intended to cause the
+terminal device to stop transmitting data, as needed to prevent the input
+queue from overflowing and causing the undefined behavior described in
+.Sx "Input Processing and Reading Data" ,
+and shall transmit one or more
+.Dv START
+characters, which are
+intended to cause the terminal device to resume transmitting data, as
+soon as the device can continue transmitting data without risk of
+overflowing the input queue.
+The precise conditions under which
+.Dv STOP
+and
+START
+characters are transmitted are implementation defined.
+.Pp
+If
+.Dv IMAXBEL
+is set and the input queue is full, subsequent input shall cause an
+.Tn ASCII
+.Dv BEL
+character to be transmitted to
+the output queue.
+.Pp
+The initial input control value after
+.Fn open
+is implementation defined.
+.Ss Output Modes
+Values of the
+.Fa c_oflag
+field describe the basic terminal output control,
+and are composed of the following masks:
+.Pp
+.Bl -tag -width ONOEOT -offset indent -compact
+.It Dv OPOST
+/* enable following output processing */
+.It Dv ONLCR
+/* map NL to CR-NL (ala
+.Dv CRMOD )
+*/
+.It Dv OCRNL
+/* map CR to NL */
+.It Dv TABDLY
+/* tab delay mask */
+.It Dv TAB0
+/* no tab delay and expansion */
+.It Dv TAB3
+/* expand tabs to spaces */
+.It Dv ONOEOT
+/* discard
+.Dv EOT Ns 's
+.Ql \&^D
+on output) */
+.It Dv ONOCR
+/* do not transmit CRs on column 0 */
+.It Dv ONLRET
+/* on the terminal NL performs the CR function */
+.El
+.Pp
+If
+.Dv OPOST
+is set, the remaining flag masks are interpreted as follows;
+otherwise characters are transmitted without change.
+.Pp
+If
+.Dv ONLCR
+is set, newlines are translated to carriage return, linefeeds.
+.Pp
+If
+.Dv OCRNL
+is set, carriage returns are translated to newlines.
+.Pp
+The
+.Dv TABDLY
+bits specify the tab delay.
+The
+.Fa c_oflag
+is masked with
+.Dv TABDLY
+and compared with the
+values
+.Dv TAB0
+or
+.Dv TAB3 .
+If
+.Dv TAB3
+is set, tabs are expanded to the appropriate number of
+spaces (assuming 8 column tab stops).
+.Pp
+If
+.Dv ONOEOT
+is set,
+.Tn ASCII
+.Dv EOT Ns 's
+are discarded on output.
+.Pp
+If
+.Dv ONOCR
+is set, no CR character is transmitted when at column 0 (first position).
+.Pp
+If
+.Dv ONLRET
+is set, the NL character is assumed to do the carriage-return function;
+the column pointer will be set to 0.
+.Ss Control Modes
+Values of the
+.Fa c_cflag
+field describe the basic
+terminal hardware control, and are composed of the
+following masks.
+Not all values
+specified are supported by all hardware.
+.Pp
+.Bl -tag -width CRTSXIFLOW -offset indent -compact
+.It Dv CSIZE
+/* character size mask */
+.It Dv CS5
+/* 5 bits (pseudo) */
+.It Dv CS6
+/* 6 bits */
+.It Dv CS7
+/* 7 bits */
+.It Dv CS8
+/* 8 bits */
+.It Dv CSTOPB
+/* send 2 stop bits */
+.It Dv CREAD
+/* enable receiver */
+.It Dv PARENB
+/* parity enable */
+.It Dv PARODD
+/* odd parity, else even */
+.It Dv HUPCL
+/* hang up on last close */
+.It Dv CLOCAL
+/* ignore modem status lines */
+.It Dv CCTS_OFLOW
+/*
+.Dv CTS
+flow control of output */
+.It Dv CRTSCTS
+/* same as
+.Dv CCTS_OFLOW
+*/
+.It Dv CRTS_IFLOW
+/* RTS flow control of input */
+.It Dv MDMBUF
+/* flow control output via Carrier */
+.El
+.Pp
+The
+.Dv CSIZE
+bits specify the byte size in bits for both transmission and
+reception.
+The
+.Fa c_cflag
+is masked with
+.Dv CSIZE
+and compared with the
+values
+.Dv CS5 ,
+.Dv CS6 ,
+.Dv CS7 ,
+or
+.Dv CS8 .
+This size does not include the parity bit, if any.
+If
+.Dv CSTOPB
+is set, two stop bits are used, otherwise one stop bit.
+For example, at 110 baud, two stop bits are normally used.
+.Pp
+If
+.Dv CREAD
+is set, the receiver is enabled.
+Otherwise, no character is received.
+Not all hardware supports this bit.
+In fact, this flag is pretty silly and if it were not part of the
+.Nm
+specification
+it would be omitted.
+.Pp
+If
+.Dv PARENB
+is set, parity generation and detection are enabled and a parity
+bit is added to each character.
+If parity is enabled,
+.Dv PARODD
+specifies
+odd parity if set, otherwise even parity is used.
+.Pp
+If
+.Dv HUPCL
+is set, the modem control lines for the port are lowered
+when the last process with the port open closes the port or the process
+terminates.
+The modem connection is broken.
+.Pp
+If
+.Dv CLOCAL
+is set, a connection does not depend on the state of the modem
+status lines.
+If
+.Dv CLOCAL
+is clear, the modem status lines are
+monitored.
+.Pp
+Under normal circumstances, a call to the
+.Fn open
+function waits for
+the modem connection to complete.
+However, if the
+.Dv O_NONBLOCK
+flag is set
+or if
+.Dv CLOCAL
+has been set, the
+.Fn open
+function returns
+immediately without waiting for the connection.
+.Pp
+The
+.Dv CCTS_OFLOW
+.Pf ( Dv CRTSCTS )
+flag is currently unused.
+.Pp
+If
+.Dv MDMBUF
+is set then output flow control is controlled by the state
+of Carrier Detect.
+.Pp
+If the object for which the control modes are set is not an asynchronous
+serial connection, some of the modes may be ignored; for example, if an
+attempt is made to set the baud rate on a network connection to a
+terminal on another host, the baud rate may or may not be set on the
+connection between that terminal and the machine it is directly connected
+to.
+.Ss Local Modes
+Values of the
+.Fa c_lflag
+field describe the control of
+various functions, and are composed of the following
+masks.
+.Pp
+.Bl -tag -width NOKERNINFO -offset indent -compact
+.It Dv ECHOKE
+/* visual erase for line kill */
+.It Dv ECHOE
+/* visually erase chars */
+.It Dv ECHO
+/* enable echoing */
+.It Dv ECHONL
+/* echo
+.Dv NL
+even if
+.Dv ECHO
+is off */
+.It Dv ECHOPRT
+/* visual erase mode for hardcopy */
+.It Dv ECHOCTL
+/* echo control chars as ^(Char) */
+.It Dv ISIG
+/* enable signals
+.Dv INTR ,
+.Dv QUIT ,
+.Dv [D]SUSP
+*/
+.It Dv ICANON
+/* canonicalize input lines */
+.It Dv ALTWERASE
+/* use alternate
+.Dv WERASE
+algorithm */
+.It Dv IEXTEN
+/* enable
+.Dv DISCARD
+and
+.Dv LNEXT
+*/
+.It Dv EXTPROC
+/* external processing */
+.It Dv TOSTOP
+/* stop background jobs from output */
+.It Dv FLUSHO
+/* output being flushed (state) */
+.It Dv NOKERNINFO
+/* no kernel output from
+.Dv VSTATUS
+*/
+.It Dv PENDIN
+/* XXX retype pending input (state) */
+.It Dv NOFLSH
+/* don't flush after interrupt */
+.El
+.Pp
+If
+.Dv ECHO
+is set, input characters are echoed back to the terminal.
+If
+.Dv ECHO
+is not set, input characters are not echoed.
+.Pp
+If
+.Dv ECHOE
+and
+.Dv ICANON
+are set, the
+.Dv ERASE
+character causes the terminal
+to erase the last character in the current line from the display, if
+possible.
+If there is no character to erase, an implementation may echo
+an indication that this was the case or do nothing.
+.Pp
+If
+.Dv ECHOK
+and
+.Dv ICANON
+are set, the
+.Dv KILL
+character causes
+the current line to be discarded and the system echoes the
+.Ql \&\en
+character after the
+.Dv KILL
+character.
+.Pp
+If
+.Dv ECHOKE
+and
+.Dv ICANON
+are set, the
+.Dv KILL
+character causes
+the current line to be discarded and the system causes
+the terminal
+to erase the line from the display.
+.Pp
+If
+.Dv ECHOPRT
+and
+.Dv ICANON
+are set, the system assumes
+that the display is a printing device and prints a
+backslash and the erased characters when processing
+.Dv ERASE
+characters, followed by a forward slash.
+.Pp
+If
+.Dv ECHOCTL
+is set, the system echoes control characters
+in a visible fashion using a caret followed by the control character.
+.Pp
+If
+.Dv ALTWERASE
+is set, the system uses an alternative algorithm
+for determining what constitutes a word when processing
+.Dv WERASE
+characters (see
+.Dv WERASE ) .
+.Pp
+If
+.Dv ECHONL
+and
+.Dv ICANON
+are set, the
+.Ql \&\en
+character echoes even if
+.Dv ECHO
+is not set.
+.Pp
+If
+.Dv ICANON
+is set, canonical processing is enabled.
+This enables the
+erase and kill edit functions, and the assembly of input characters into
+lines delimited by
+.Dv NL ,
+.Dv EOF ,
+and
+.Dv EOL ,
+as described in
+.Sx "Canonical Mode Input Processing" .
+.Pp
+If
+.Dv ICANON
+is not set, read requests are satisfied directly from the input
+queue.
+A read is not satisfied until at least
+.Dv MIN
+bytes have been
+received or the timeout value
+.Dv TIME
+expired between bytes.
+The time value
+represents tenths of seconds.
+See
+.Sx "Noncanonical Mode Input Processing"
+for more details.
+.Pp
+If
+.Dv ISIG
+is set, each input character is checked against the special
+control characters
+.Dv INTR ,
+.Dv QUIT ,
+and
+.Dv SUSP
+(job control only).
+If an input
+character matches one of these control characters, the function
+associated with that character is performed.
+If
+.Dv ISIG
+is not set, no
+checking is done.
+Thus these special input functions are possible only
+if
+.Dv ISIG
+is set.
+.Pp
+If
+.Dv IEXTEN
+is set, implementation-defined functions are recognized
+from the input data.
+How
+.Dv IEXTEN
+being set
+interacts with
+.Dv ICANON ,
+.Dv ISIG ,
+.Dv IXON ,
+or
+.Dv IXOFF
+is implementation defined.
+If
+.Dv IEXTEN
+is not set, then
+implementation-defined functions are not recognized, and the
+corresponding input characters are not processed as described for
+.Dv ICANON ,
+.Dv ISIG ,
+.Dv IXON ,
+and
+.Dv IXOFF .
+.Pp
+If
+.Dv NOFLSH
+is set, the normal flush of the input and output queues
+associated with the
+.Dv INTR ,
+.Dv QUIT ,
+and
+.Dv SUSP
+characters
+are not be done.
+.Pp
+If
+.Dv TOSTOP
+is set, the signal
+.Dv SIGTTOU
+is sent to the process group of a process that tries to write to
+its controlling terminal if it is not in the foreground process group for
+that terminal.
+This signal, by default, stops the members of the process group.
+Otherwise, the output generated by that process is output to the
+current output stream.
+Processes that are blocking or ignoring
+.Dv SIGTTOU
+signals are excepted and allowed to produce output and the
+.Dv SIGTTOU
+signal
+is not sent.
+.Pp
+If
+.Dv NOKERNINFO
+is set, the kernel does not produce a status message
+when processing
+.Dv STATUS
+characters (see
+.Dv STATUS ) .
+.Ss Special Control Characters
+The special control characters values are defined by the array
+.Fa c_cc .
+This table lists the array index, the corresponding special character,
+and the system default value.
+For an accurate list of
+the system defaults, consult the header file
+.In sys/ttydefaults.h .
+.Pp
+.Bl -column "Index Name" "Special Character" -offset indent -compact
+.It Em "Index Name Special Character Default Value"
+.It Dv VEOF Ta EOF Ta \&^D
+.It Dv VEOL Ta EOL Ta _POSIX_VDISABLE
+.It Dv VEOL2 Ta EOL2 Ta _POSIX_VDISABLE
+.It Dv VERASE Ta ERASE Ta \&^? Ql \&\e177
+.It Dv VWERASE Ta WERASE Ta \&^W
+.It Dv VKILL Ta KILL Ta \&^U
+.It Dv VREPRINT Ta REPRINT Ta \&^R
+.It Dv VINTR Ta INTR Ta \&^C
+.It Dv VQUIT Ta QUIT Ta \&^\e\e Ql \&\e34
+.It Dv VSUSP Ta SUSP Ta \&^Z
+.It Dv VDSUSP Ta DSUSP Ta \&^Y
+.It Dv VSTART Ta START Ta \&^Q
+.It Dv VSTOP Ta STOP Ta \&^S
+.It Dv VLNEXT Ta LNEXT Ta \&^V
+.It Dv VDISCARD Ta DISCARD Ta \&^O
+.It Dv VMIN Ta --- Ta \&1
+.It Dv VTIME Ta --- Ta \&0
+.It Dv VSTATUS Ta STATUS Ta \&^T
+.El
+.Pp
+If the
+value of one of the changeable special control characters (see
+.Sx "Special Characters" )
+is
+.Dv {_POSIX_VDISABLE} ,
+that function is disabled; that is, no input
+data is recognized as the disabled special character.
+If
+.Dv ICANON
+is
+not set, the value of
+.Dv {_POSIX_VDISABLE}
+has no special meaning for the
+.Dv VMIN
+and
+.Dv VTIME
+entries of the
+.Fa c_cc
+array.
+.Pp
+The initial values of the flags and control characters
+after
+.Fn open
+is set according to
+the values in the header
+.In sys/ttydefaults.h .
diff --git a/share/man/man4/textdump.4 b/share/man/man4/textdump.4
new file mode 100644
index 0000000..d166b31
--- /dev/null
+++ b/share/man/man4/textdump.4
@@ -0,0 +1,172 @@
+.\"
+.\" 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 24, 2008
+.Dt textdump 4
+.Os
+.Sh NAME
+.Nm textdump
+.Nd textdump kernel dumping facility
+.Sh SYNOPSIS
+.Cd options KDB
+.Cd options DDB
+.Sh DESCRIPTION
+The
+.Nm
+facility allows the capture of kernel debugging information to disk in a
+human-readable rather than the machine-readable form normally used with
+kernel memory dumps and minidumps.
+This representation, while less complete in that it does not capture full
+kernel state, can provide debugging information in a more compact, portable,
+and persistent form than a traditional dump.
+By combining
+.Nm
+with other
+.Xr ddb 4
+facilities, such as scripting and output capture, detailed bug information
+can be captured in a fully automated manner.
+.Sh FORMAT
+.Nm
+data is stored in a dump partition in the same style as a regular memory
+dump, and will be automatically extracted by
+.Xr savecore 8
+if present on boot.
+.Pp
+.Nm
+files are stored in the
+.Xr tar 5
+format, and consist of one or more text files, each storing a particular type
+of debugging output.
+The following parts may be present:
+.Bl -tag -width version.txt
+.It Pa ddb.txt
+Captured
+.Xr ddb 4
+output, if the capture facility has been used.
+May be disabled by clearing the
+.Dv debug.ddb.textdump.do_ddb
+sysctl.
+.It Pa config.txt
+Kernel configuration, if
+.Od options INCLUDE_CONFIG_FILE
+has been compiled into the kernel.
+May be disabled by clearing the
+.Dv debug.ddb.textdump.do_config
+sysctl.
+.It Pa msgbuf.txt
+Kernel message buffer, including recent console output if the capture
+facility has been used.
+May be disabled by clearing the
+.Dv debug.ddb.textdump.do_msgbuf
+sysctl.
+.It Pa panic.txt
+Kernel panic string, if the kernel panicked before the dump was generated.
+May be disabled by clearing the
+.Dv debug.ddb.textdump.do_panic
+sysctl.
+.It Pa version.txt
+Kernel version string.
+My be disabled by clearing the
+.Dv debug.ddb.textdump.do_version
+sysctl.
+.El
+.Pp
+Kernel textdumps may be extracted using
+.Xr bsdtar 1 .
+.Sh CONFIGURATION
+The
+.Nm
+facility is enabled as part of the kernel debugger using
+.Cd options KDB
+and
+.Cd options DDB .
+By default, kernel dumps generated on panic or via explicit requests for a
+dump will be regular memory dumps; however, by using the
+.Ic textdump set
+command in
+.Xr ddb 4 ,
+or by setting the
+.Dv debug.ddb.textdump.pending
+sysctl to 1 using
+.Xr sysctl 8 ,
+it is possible to request that the next dump be a textdump.
+.Pp
+If at the
+.Xr ddb 4
+command line, the commands
+.Ic textdump set ,
+.Ic textdump status ,
+and
+.Ic textdump unset
+may be used to set, query, and clear the textdump pending flag.
+.Pp
+As with regular kernel dumps, a dump partition must be automatically or
+manually configured using
+.Xr dumpon 8 .
+.Sh EXAMPLES
+In the following example, the script
+.Dv kdb.enter.panic
+will run when the kernel debugger is entered as a result of a panic, enable
+output capture, dump several useful pieces of debugging information, and then
+invoke panic in order to force a kernel dump to be written out followed by a
+reboot:
+.Bd -literal -offset indent
+script kdb.enter.panic=textdump set; capture on; show allpcpu; bt;
+ ps; alltrace; show alllock; call doadump; reset
+.Ed
+.Pp
+In the following example, the script
+.Dv kdb.enter.witness
+will run when the kernel debugger is entered as a result of a witness
+violation, printing lock-related information for the user:
+.Bd -literal -offset indent
+script kdb.enter.witness=show locks
+.Ed
+.Pp
+These scripts may also be configured using the
+.Xr ddb 8
+utility.
+.Sh SEE ALSO
+.Xr bsdtar 1 ,
+.Xr ddb 4 ,
+.Xr tar 5 ,
+.Xr ddb 8 ,
+.Xr dumpon 8 ,
+.Xr savecore 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+facility first appeared in
+.Fx 7.1 .
+.Sh AUTHORS
+The
+.Nm
+facility was created by
+.An Robert N. M. Watson .
diff --git a/share/man/man4/ti.4 b/share/man/man4/ti.4
new file mode 100644
index 0000000..ba999e2
--- /dev/null
+++ b/share/man/man4/ti.4
@@ -0,0 +1,338 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt TI 4
+.Os
+.Sh NAME
+.Nm ti
+.Nd "Alteon Networks Tigon I and Tigon II Gigabit Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ti"
+.Cd "options TI_PRIVATE_JUMBOS"
+.Cd "options TI_JUMBO_HDRSPLIT"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ti_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Gigabit Ethernet adapters based on
+the Alteon Networks Tigon Gigabit Ethernet controller chip.
+The Tigon
+contains an embedded R4000 CPU, gigabit MAC, dual DMA channels and
+a PCI interface unit.
+The Tigon II contains two R4000 CPUs and other
+refinements.
+Either chip can be used in either a 32-bit or 64-bit PCI
+slot.
+Communication with the chip is achieved via PCI shared memory
+and bus master DMA.
+The Tigon I and II support hardware multicast
+address filtering, VLAN tag extraction and insertion, and jumbo
+Ethernet frames sizes up to 9000 bytes.
+Note that the Tigon I chipset
+is no longer in active production: all new adapters should come equipped
+with Tigon II chipsets.
+.Pp
+While the Tigon chipset supports 10, 100 and 1000Mbps speeds, support for
+10 and 100Mbps speeds is only available on boards with the proper
+transceivers.
+Most adapters are only designed to work at 1000Mbps,
+however the driver should support those NICs that work at lower speeds
+as well.
+.Pp
+Support for jumbo frames is provided via the interface MTU setting.
+Selecting an MTU larger than 1500 bytes with the
+.Xr ifconfig 8
+utility configures the adapter to receive and transmit jumbo frames.
+Using jumbo frames can greatly improve performance for certain tasks,
+such as file transfers and data streaming.
+.Pp
+Header splitting support for Tigon 2 boards (this option has no effect for
+the Tigon 1) can be turned on with the
+.Dv TI_JUMBO_HDRSPLIT
+option.
+See
+.Xr zero_copy 9
+for more discussion on zero copy receive and header splitting.
+.Pp
+The
+.Nm
+driver normally uses jumbo receive buffers allocated by the
+.Xr sendfile 2
+buffer allocator, but can be configured to use its own private pool of
+jumbo buffers that are contiguous instead of buffers from the jumbo
+allocator, which are made up of multiple page sized chunks.
+To turn on private jumbos, use the
+.Dv TI_PRIVATE_JUMBOS
+option.
+.Pp
+Support for vlans is also available using the
+.Xr vlan 4
+mechanism.
+See the
+.Xr vlan 4
+man page for more details.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 1000baseSX
+Set 1000Mbps (Gigabit Ethernet) operation.
+Only full
+.Ar full-duplex
+mode is supported at this speed.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Gigabit Ethernet adapters based on the
+Alteon Tigon I and II chips.
+The
+.Nm
+driver has been tested with the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3c985-SX Gigabit Ethernet adapter (Tigon 1)
+.It
+3Com 3c985B-SX Gigabit Ethernet adapter (Tigon 2)
+.It
+Alteon AceNIC V Gigabit Ethernet adapter (1000baseSX)
+.It
+Alteon AceNIC V Gigabit Ethernet adapter (1000baseT)
+.It
+Digital EtherWORKS 1000SX PCI Gigabit adapter
+.It
+Netgear GA620 Gigabit Ethernet adapter (1000baseSX)
+.It
+Netgear GA620T Gigabit Ethernet adapter (1000baseT)
+.El
+.Pp
+The following adapters should also be supported but have
+not yet been tested:
+.Pp
+.Bl -bullet -compact
+.It
+Asante GigaNIX1000T Gigabit Ethernet adapter
+.It
+Asante PCI 1000BASE-SX Gigabit Ethernet adapter
+.It
+Farallon PN9000SX Gigabit Ethernet adapter
+.It
+NEC Gigabit Ethernet
+.It
+Silicon Graphics PCI Gigabit Ethernet adapter
+.El
+.Sh IOCTLS
+In addition to the standard
+.Xr socket 2
+.Xr ioctl 2
+calls implemented by most network drivers, the
+.Nm
+driver also includes a character device interface that can be used for
+additional diagnostics, configuration and debugging.
+With this character
+device interface, and a specially patched version of
+.Xr gdb 1 ,
+the user can
+debug firmware running on the Tigon board.
+.Pp
+These ioctls and their arguments are defined in the
+.In sys/tiio.h
+header file.
+.Bl -tag -width ".Dv ALT_WRITE_TG_MEM"
+.It Dv TIIOCGETSTATS
+Return card statistics DMAed from the card into kernel memory approximately
+every 2 seconds.
+(That time interval can be changed via the
+.Dv TIIOCSETPARAMS
+ioctl.)
+The argument is
+.Vt "struct ti_stats" .
+.It Dv TIIOCGETPARAMS
+Get various performance-related firmware parameters that largely affect how
+interrupts are coalesced.
+The argument is
+.Vt "struct ti_params" .
+.It Dv TIIOCSETPARAMS
+Set various performance-related firmware parameters that largely affect how
+interrupts are coalesced.
+The argument is
+.Vt "struct ti_params" .
+.It Dv TIIOCSETTRACE
+Tell the NIC to trace the requested types of information.
+The argument is
+.Vt ti_trace_type .
+.It Dv TIIOCGETTRACE
+Dump the trace buffer from the card.
+The argument is
+.Vt "struct ti_trace_buf" .
+.It Dv ALT_ATTACH
+This ioctl is used for compatibility with Alteon's Solaris driver.
+They apparently only have one character interface for debugging, so they have
+to tell it which Tigon instance they want to debug.
+This ioctl is a noop for
+.Fx .
+.It Dv ALT_READ_TG_MEM
+Read the requested memory region from the Tigon board.
+The argument is
+.Vt "struct tg_mem" .
+.It Dv ALT_WRITE_TG_MEM
+Write to the requested memory region on the Tigon board.
+The argument is
+.Vt "struct tg_mem" .
+.It Dv ALT_READ_TG_REG
+Read the requested register on the Tigon board.
+The argument is
+.Vt "struct tg_reg" .
+.It Dv ALT_WRITE_TG_REG
+Write to the requested register on the Tigon board.
+The argument is
+.Vt "struct tg_reg" .
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ti[0-255]" -compact
+.It Pa /dev/ti[0-255]
+Tigon driver character interface.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ti%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "ti%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "ti%d: no memory for softc struct!"
+The driver failed to allocate memory for per-device instance information
+during initialization.
+.It "ti%d: failed to enable memory mapping!"
+The driver failed to initialize PCI shared memory mapping.
+This might
+happen if the card is not in a bus-master slot.
+.It "ti%d: no memory for jumbo buffers!"
+The driver failed to allocate memory for jumbo frames during
+initialization.
+.It "ti%d: bios thinks we're in a 64 bit slot, but we aren't"
+The BIOS has programmed the NIC as though it had been installed in
+a 64-bit PCI slot, but in fact the NIC is in a 32-bit slot.
+This happens
+as a result of a bug in some BIOSes.
+This can be worked around on the
+Tigon II, but on the Tigon I initialization will fail.
+.It "ti%d: board self-diagnostics failed!"
+The ROMFAIL bit in the CPU state register was set after system
+startup, indicating that the on-board NIC diagnostics failed.
+.It "ti%d: unknown hwrev"
+The driver detected a board with an unsupported hardware revision.
+The
+.Nm
+driver supports revision 4 (Tigon 1) and revision 6 (Tigon 2) chips
+and has firmware only for those devices.
+.It "ti%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr sendfile 2 ,
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8 ,
+.Xr zero_copy 9
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@bsdi.com .
+The header splitting firmware modifications, character
+.Xr ioctl 2
+interface and debugging support were written by
+.An Kenneth Merry Aq ken@FreeBSD.org .
+Initial zero copy support was written by
+.An Andrew Gallatin Aq gallatin@FreeBSD.org .
diff --git a/share/man/man4/tl.4 b/share/man/man4/tl.4
new file mode 100644
index 0000000..3dd4cba
--- /dev/null
+++ b/share/man/man4/tl.4
@@ -0,0 +1,187 @@
+.\" Copyright (c) 1997, 1998
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt TL 4
+.Os
+.Sh NAME
+.Nm tl
+.Nd "Texas Instruments ThunderLAN Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device tl"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_tl_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters based on the Texas
+Instruments ThunderLAN Ethernet controller chip.
+.Pp
+The ThunderLAN controller has a standard MII interface that supports
+up to 32 physical interface devices (PHYs).
+It also has a built-in
+10baseT PHY hardwired at MII address 31, which may be used in some
+10Mbps-only hardware configurations.
+In 100Mbps configurations, a
+National Semiconductor DP83840A or other MII-compliant PHY may be
+attached to the ThunderLAN's MII bus.
+If a DP83840A or equivalent
+is available, the ThunderLAN chip can operate at either 100Mbps or
+10Mbps in either half-duplex or full-duplex modes.
+The ThunderLAN's
+built-in PHY and the DP83840A also support autonegotiation.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+Note that this
+option is only available on those PHYs that support autonegotiation.
+Also, the PHY will not advertise those modes that have been explicitly
+disabled using the following media options.
+.It 10baseT/UTP
+Set 10Mbps operation
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation
+.It 10base5/AUI
+Enable AUI/BNC interface (useful only with the built-in PHY).
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.It hw-loopback
+Enable hardware loopback mode.
+.El
+.Pp
+Note that the 100baseTX media type is only available if supported
+by the PHY.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Texas Instruments ThunderLAN based
+Ethernet and Fast Ethernet adapters including a large
+number of Compaq PCI Ethernet adapters.
+Also supported are:
+.Pp
+.Bl -bullet -compact
+.It
+Olicom OC-2135/2138 10/100 TX UTP adapter
+.It
+Olicom OC-2325/OC-2326 10/100 TX UTP adapter
+.It
+Racore 8148 10baseT/100baseTX/100baseFX adapter
+.It
+Racore 8165 10/100baseTX adapter
+.El
+.Pp
+The
+.Nm
+driver also supports the built-in Ethernet adapters of
+various Compaq Prosignia servers and Compaq Deskpro desktop
+machines including:
+.Pp
+.Bl -bullet -compact
+.It
+Compaq Netelligent 10
+.It
+Compaq Netelligent 10 T PCI UTP/Coax
+.It
+Compaq Netelligent 10/100
+.It
+Compaq Netelligent 10/100 Dual-Port
+.It
+Compaq Netelligent 10/100 Proliant
+.It
+Compaq Netelligent 10/100 TX Embedded UTP
+.It
+Compaq Netelligent 10/100 TX UTP
+.It
+Compaq NetFlex 3P
+.It
+Compaq NetFlex 3P Integrated
+.It
+Compaq NetFlex 3P w/BNC
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "tl%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "tl%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "tl%d: device timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "tl%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "tl%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
diff --git a/share/man/man4/trm.4 b/share/man/man4/trm.4
new file mode 100644
index 0000000..6180c94
--- /dev/null
+++ b/share/man/man4/trm.4
@@ -0,0 +1,107 @@
+.\" $NetBSD: trm.4,v 1.3 2001/11/11 05:24:45 tsutsui Exp $
+.\"
+.\" Copyright (c) 2002, David E O'Brien. All rights reserved.
+.\" Copyright (c) 2001, Izumi Tsutsui. 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.
+.\"
+.\" 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$
+.\"
+.Dd December 8, 2002
+.Dt TRM 4
+.Os
+.Sh NAME
+.Nm trm
+.Nd Tekram TRM-S1040 ASIC based PCI SCSI host adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device trm"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+trm_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports PCI SCSI host adapters based on the Tekram TRM-S1040 SCSI ASIC.
+.Sh HARDWARE
+SCSI controllers supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+.Tn Tekram DC-315
+PCI Ultra SCSI adapter without BIOS and internal SCSI connector
+.It
+.Tn Tekram DC-315U
+PCI Ultra SCSI adapter without BIOS
+.It
+.Tn Tekram DC-395F
+PCI Ultra-Wide SCSI adapter with flash BIOS and 68-pin external SCSI connector
+.It
+.Tn Tekram DC-395U
+PCI Ultra SCSI adapter with flash BIOS
+.It
+.Tn Tekram DC-395UW
+PCI Ultra-Wide SCSI adapter with flash BIOS
+.It
+.Tn Tekram DC-395U2W
+PCI Ultra2-Wide SCSI adapter with flash BIOS
+.El
+.Pp
+For the Tekram DC-310/U and DC-390F/U/UW/U2B/U2W/U3W PCI SCSI host adapters,
+use the
+.Xr sym 4
+driver.
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr ch 4 ,
+.Xr da 4 ,
+.Xr intro 4 ,
+.Xr sa 4 ,
+.Xr scsi 4 ,
+.Xr sym 4
+.Pp
+.Pa http://www.tekram.com/
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was originally written for
+.Fx 3.0 Ns /i386
+by
+.An Erich Chen
+of Tekram Technology,
+and ported to
+.Fx 5.0
+by
+.An Olivier Houchard Aq cognet@FreeBSD.org .
diff --git a/share/man/man4/tty.4 b/share/man/man4/tty.4
new file mode 100644
index 0000000..ba0379e
--- /dev/null
+++ b/share/man/man4/tty.4
@@ -0,0 +1,427 @@
+.\" Copyright (c) 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)tty.4 8.3 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.Dd Jun 27, 2007
+.Dt TTY 4
+.Os
+.Sh NAME
+.Nm tty
+.Nd general terminal interface
+.Sh SYNOPSIS
+.In sys/ioctl.h
+.Sh DESCRIPTION
+This section describes the interface to the terminal drivers
+in the system.
+.Ss Terminal Special Files
+Each hardware terminal port on the system usually has a terminal special device
+file associated with it in the directory ``/dev/'' (for
+example, ``/dev/tty03'').
+When a user logs into
+the system on one of these hardware terminal ports, the system has already
+opened the associated device and prepared the line for normal interactive
+use (see
+.Xr getty 8 . )
+There is also a special case of a terminal file that connects not to
+a hardware terminal port, but to another program on the other side.
+These special terminal devices are called
+.Em ptys
+and provide the mechanism necessary to give users the same interface to the
+system when logging in over a network (using
+.Xr rlogin 1 ,
+or
+.Xr telnet 1
+for example).
+Even in these cases the details of how the terminal
+file was opened and set up is already handled by special software
+in the system.
+Thus, users do not normally need to worry about the details of
+how these lines are opened or used.
+Also, these lines are often used
+for dialing out of a system (through an out-calling modem), but again
+the system provides programs that hide the details of accessing
+these terminal special files (see
+.Xr tip 1 ) .
+.Pp
+When an interactive user logs in, the system prepares the line to
+behave in a certain way (called a
+.Em "line discipline" ) ,
+the particular details of which is described in
+.Xr stty 1
+at the command level, and in
+.Xr termios 4
+at the programming level.
+A user may be concerned with changing
+settings associated with his particular login terminal and should refer
+to the preceding man pages for the common cases.
+The remainder of this man page is concerned
+with describing details of using and controlling terminal devices
+at a low level, such as that possibly required by a program wishing
+to provide features similar to those provided by the system.
+.Ss Line disciplines
+A terminal file is used like any other file in the system in that
+it can be opened, read, and written to using standard system
+calls.
+For each existing terminal file, there is a software processing module
+called a
+.Em "line discipline"
+is associated with it.
+The
+.Em "line discipline"
+essentially glues the low level device driver code with the high
+level generic interface routines (such as
+.Xr read 2
+and
+.Xr write 2 ) ,
+and is responsible for implementing the semantics associated
+with the device.
+When a terminal file is first opened by a program, the default
+.Em "line discipline"
+called the
+.Dv termios
+line discipline is associated with the file.
+This is the primary
+line discipline that is used in most cases and provides the semantics
+that users normally associate with a terminal.
+When the
+.Dv termios
+line discipline is in effect, the terminal file behaves and is
+operated according to the rules described in
+.Xr termios 4 .
+Please refer to that man page for a full description of the terminal
+semantics.
+The operations described here
+generally represent features common
+across all
+.Em "line disciplines" ,
+however some of these calls may not
+make sense in conjunction with a line discipline other than
+.Dv termios ,
+and some may not be supported by the underlying
+hardware (or lack thereof, as in the case of ptys).
+.Ss Terminal File Operations
+All of the following operations are invoked using the
+.Xr ioctl 2
+system call.
+Refer to that man page for a description of the
+.Em request
+and
+.Em argp
+parameters.
+In addition to the ioctl
+.Em requests
+defined here, the specific line discipline
+in effect will define other
+.Em requests
+specific to it (actually
+.Xr termios 4
+defines them as function calls, not ioctl
+.Em requests . )
+The following section lists the available ioctl requests.
+The name of the request, a description of its purpose, and the typed
+.Em argp
+parameter (if any)
+are listed.
+For example, the first entry says
+.Pp
+.D1 Em "TIOCSETD int *ldisc"
+.Pp
+and would be called on the terminal associated with
+file descriptor zero by the following code fragment:
+.Bd -literal
+ int ldisc;
+
+ ldisc = TTYDISC;
+ ioctl(0, TIOCSETD, &ldisc);
+.Ed
+.Ss Terminal File Request Descriptions
+.Bl -tag -width TIOCGWINSZ
+.It Dv TIOCSETD Fa int *ldisc
+Change to the new line discipline pointed to by
+.Fa ldisc .
+The available line disciplines are listed in
+.In sys/ttycom.h
+and currently are:
+.Pp
+.Bl -tag -width NETGRAPHDISC -compact
+.It TTYDISC
+Termios interactive line discipline.
+.It TABLDISC
+Tablet line discipline.
+.It SLIPDISC
+Serial IP line discipline.
+.It PPPDISC
+PPP line discipline.
+.It NETGRAPHDISC
+Netgraph
+.Xr ng_tty 4
+line discipline.
+.El
+.Pp
+.It Dv TIOCGETD Fa int *ldisc
+Return the current line discipline in the integer pointed to by
+.Fa ldisc .
+.It Dv TIOCSBRK Fa void
+Set the terminal hardware into BREAK condition.
+.It Dv TIOCCBRK Fa void
+Clear the terminal hardware BREAK condition.
+.It Dv TIOCSDTR Fa void
+Assert data terminal ready (DTR).
+.It Dv TIOCCDTR Fa void
+Clear data terminal ready (DTR).
+.It Dv TIOCGPGRP Fa int *tpgrp
+Return the current process group with which the terminal is associated
+in the integer pointed to by
+.Fa tpgrp .
+This is the underlying call that implements the
+.Xr termios 4
+.Fn tcgetattr
+call.
+.It Dv TIOCSPGRP Fa int *tpgrp
+Associate the terminal with the process group (as an integer) pointed to by
+.Fa tpgrp .
+This is the underlying call that implements the
+.Xr termios 4
+.Fn tcsetattr
+call.
+.It Dv TIOCGETA Fa struct termios *term
+Place the current value of the termios state associated with the
+device in the termios structure pointed to by
+.Fa term .
+This is the underlying call that implements the
+.Xr termios 4
+.Fn tcgetattr
+call.
+.It Dv TIOCSETA Fa struct termios *term
+Set the termios state associated with the device immediately.
+This is the underlying call that implements the
+.Xr termios 4
+.Fn tcsetattr
+call with the
+.Dv TCSANOW
+option.
+.It Dv TIOCSETAW Fa struct termios *term
+First wait for any output to complete, then set the termios state
+associated with the device.
+This is the underlying call that implements the
+.Xr termios 4
+.Fn tcsetattr
+call with the
+.Dv TCSADRAIN
+option.
+.It Dv TIOCSETAF Fa struct termios *term
+First wait for any output to complete, clear any pending input,
+then set the termios state associated with the device.
+This is the underlying call that implements the
+.Xr termios 4
+.Fn tcsetattr
+call with the
+.Dv TCSAFLUSH
+option.
+.It Dv TIOCOUTQ Fa int *num
+Place the current number of characters in the output queue in the
+integer pointed to by
+.Fa num .
+.It Dv TIOCSTI Fa char *cp
+Simulate typed input.
+Pretend as if the terminal received the character pointed to by
+.Fa cp .
+.It Dv TIOCNOTTY Fa void
+This call is obsolete but left for compatibility.
+In the past, when a process that did not have a controlling terminal (see
+.Em The Controlling Terminal
+in
+.Xr termios 4 )
+first opened a terminal device, it acquired that terminal as its
+controlling terminal.
+For some programs this was a hazard as they
+did not want a controlling terminal in the first place, and this
+provided a mechanism to disassociate the controlling terminal from
+the calling process.
+It
+.Em must
+be called by opening the file
+.Pa /dev/tty
+and calling
+.Dv TIOCNOTTY
+on that file descriptor.
+.Pp
+The current system does not allocate a controlling terminal to
+a process on an
+.Fn open
+call: there is a specific ioctl called
+.Dv TIOCSCTTY
+to make a terminal the controlling
+terminal.
+In addition, a program can
+.Fn fork
+and call the
+.Fn setsid
+system call which will place the process into its own session - which
+has the effect of disassociating it from the controlling terminal.
+This is the new and preferred method for programs to lose their controlling
+terminal.
+.It Dv TIOCSTOP Fa void
+Stop output on the terminal (like typing ^S at the keyboard).
+.It Dv TIOCSTART Fa void
+Start output on the terminal (like typing ^Q at the keyboard).
+.It Dv TIOCSCTTY Fa void
+Make the terminal the controlling terminal for the process (the process
+must not currently have a controlling terminal).
+.It Dv TIOCDRAIN Fa void
+Wait until all output is drained.
+.It Dv TIOCEXCL Fa void
+Set exclusive use on the terminal.
+No further opens are permitted except by root.
+Of course, this means that programs that are run by
+root (or setuid) will not obey the exclusive setting - which limits
+the usefulness of this feature.
+.It Dv TIOCNXCL Fa void
+Clear exclusive use of the terminal.
+Further opens are permitted.
+.It Dv TIOCFLUSH Fa int *what
+If the value of the int pointed to by
+.Fa what
+contains the
+.Dv FREAD
+bit as defined in
+.In sys/file.h ,
+then all characters in the input queue are cleared.
+If it contains the
+.Dv FWRITE
+bit, then all characters in the output queue are cleared.
+If the value of the integer is zero, then it behaves as if both the
+.Dv FREAD
+and
+.Dv FWRITE
+bits were set (i.e., clears both queues).
+.It Dv TIOCGWINSZ Fa struct winsize *ws
+Put the window size information associated with the terminal in the
+.Va winsize
+structure pointed to by
+.Fa ws .
+The window size structure contains the number of rows and columns (and pixels
+if appropriate) of the devices attached to the terminal.
+It is set by user software
+and is the means by which most full\&-screen oriented programs determine the
+screen size.
+The
+.Va winsize
+structure is defined in
+.In sys/ioctl.h .
+.It Dv TIOCSWINSZ Fa struct winsize *ws
+Set the window size associated with the terminal to be the value in
+the
+.Va winsize
+structure pointed to by
+.Fa ws
+(see above).
+.It Dv TIOCCONS Fa int *on
+If
+.Fa on
+points to a non-zero integer, redirect kernel console output (kernel printf's)
+to this terminal.
+If
+.Fa on
+points to a zero integer, redirect kernel console output back to the normal
+console.
+This is usually used on workstations to redirect kernel messages
+to a particular window.
+.It Dv TIOCMSET Fa int *state
+The integer pointed to by
+.Fa state
+contains bits that correspond to modem state.
+Following is a list of defined variables and the modem state they represent:
+.Pp
+.Bl -tag -width TIOCMXCTS -compact
+.It TIOCM_LE
+Line Enable.
+.It TIOCM_DTR
+Data Terminal Ready.
+.It TIOCM_RTS
+Request To Send.
+.It TIOCM_ST
+Secondary Transmit.
+.It TIOCM_SR
+Secondary Receive.
+.It TIOCM_CTS
+Clear To Send.
+.It TIOCM_CAR
+Carrier Detect.
+.It TIOCM_CD
+Carrier Detect (synonym).
+.It TIOCM_RNG
+Ring Indication.
+.It TIOCM_RI
+Ring Indication (synonym).
+.It TIOCM_DSR
+Data Set Ready.
+.El
+.Pp
+This call sets the terminal modem state to that represented by
+.Fa state .
+Not all terminals may support this.
+.It Dv TIOCMGET Fa int *state
+Return the current state of the terminal modem lines as represented
+above in the integer pointed to by
+.Fa state .
+.It Dv TIOCMBIS Fa int *state
+The bits in the integer pointed to by
+.Fa state
+represent modem state as described above, however the state is OR-ed
+in with the current state.
+.It Dv TIOCMBIC Fa int *state
+The bits in the integer pointed to by
+.Fa state
+represent modem state as described above, however each bit which is on
+in
+.Fa state
+is cleared in the terminal.
+.El
+.Sh IMPLEMENTATION NOTES
+The total number of input and output bytes
+through all terminal devices
+are available via the
+.Va kern.tk_nin
+and
+.Va kern.tk_nout
+read-only
+.Xr sysctl 8
+variables.
+.Sh SEE ALSO
+.Xr stty 1 ,
+.Xr ioctl 2 ,
+.Xr ng_tty 4 ,
+.Xr pty 4 ,
+.Xr termios 4 ,
+.Xr getty 8
diff --git a/share/man/man4/tun.4 b/share/man/man4/tun.4
new file mode 100644
index 0000000..b5139a7
--- /dev/null
+++ b/share/man/man4/tun.4
@@ -0,0 +1,313 @@
+.\" $NetBSD: tun.4,v 1.1 1996/06/25 22:17:37 pk Exp $
+.\" $FreeBSD$
+.\" Based on PR#2411
+.\"
+.Dd February 4, 2007
+.Dt TUN 4
+.Os
+.Sh NAME
+.Nm tun
+.Nd tunnel software network interface
+.Sh SYNOPSIS
+.Cd device tun
+.Sh DESCRIPTION
+The
+.Nm
+interface is a software loopback mechanism that can be loosely
+described as the network interface analog of the
+.Xr pty 4 ,
+that is,
+.Nm
+does for network interfaces what the
+.Xr pty 4
+driver does for terminals.
+.Pp
+The
+.Nm
+driver, like the
+.Xr pty 4
+driver, provides two interfaces: an interface like the usual facility
+it is simulating
+(a network interface in the case of
+.Nm ,
+or a terminal for
+.Xr pty 4 ) ,
+and a character-special device
+.Dq control
+interface.
+.Pp
+The network interfaces are named
+.Dq Li tun0 ,
+.Dq Li tun1 ,
+etc., one for each control device that has been opened.
+These network interfaces persist until the
+.Pa if_tun.ko
+module is unloaded, or until removed with the
+.Xr ifconfig 8
+command.
+.Pp
+.Nm
+devices are created using interface cloning.
+This is done using the
+.Dq ifconfig tun Ns Sy N No create
+command.
+This is the preferred method of creating
+.Nm
+devices.
+The same method allows removal of interfaces.
+For this, use the
+.Dq ifconfig tun Ns Sy N No destroy
+command.
+.Pp
+If the
+.Xr sysctl 8
+variable
+.Va net.link.tun.devfs_cloning
+is non-zero, the
+.Nm
+interface
+permits opens on the special control device
+.Pa /dev/tun .
+When this device is opened,
+.Nm
+will return a handle for the lowest unused
+.Nm
+device (use
+.Xr devname 3
+to determine which).
+.Pp
+.Bf Em
+Disabling the legacy devfs cloning functionality may break existing
+applications which use
+.Nm ,
+such as
+.Xr ppp 8
+and
+.Xr ssh 1 .
+It therefore defaults to being enabled until further notice.
+.Ef
+.Pp
+Control devices (once successfully opened) persist until
+.Pa if_tun.ko
+is unloaded in the same way that network interfaces persist (see above).
+.Pp
+Each interface supports the usual network-interface
+.Xr ioctl 2 Ns s ,
+such as
+.Dv SIOCAIFADDR
+and thus can be used with
+.Xr ifconfig 8
+like any other interface.
+At boot time, they are
+.Dv POINTOPOINT
+interfaces, but this can be changed; see the description of the control
+device, below.
+When the system chooses to transmit a packet on the
+network interface, the packet can be read from the control device
+(it appears as
+.Dq input
+there);
+writing a packet to the control device generates an input
+packet on the network interface, as if the (non-existent)
+hardware had just received it.
+.Pp
+The tunnel device
+.Pq Pa /dev/tun Ns Ar N
+is exclusive-open
+(it cannot be opened if it is already open).
+A
+.Xr read 2
+call will return an error
+.Pq Er EHOSTDOWN
+if the interface is not
+.Dq ready
+(which means that the control device is open and the interface's
+address has been set).
+.Pp
+Once the interface is ready,
+.Xr read 2
+will return a packet if one is available; if not, it will either block
+until one is or return
+.Er EWOULDBLOCK ,
+depending on whether non-blocking I/O has been enabled.
+If the packet is longer than is allowed for in the buffer passed to
+.Xr read 2 ,
+the extra data will be silently dropped.
+.Pp
+If the
+.Dv TUNSLMODE
+ioctl has been set, packets read from the control device will be prepended
+with the destination address as presented to the network interface output
+routine,
+.Fn tunoutput .
+The destination address is in
+.Vt struct sockaddr
+format.
+The actual length of the prepended address is in the member
+.Va sa_len .
+If the
+.Dv TUNSIFHEAD
+ioctl has been set, packets will be prepended with a four byte address
+family in network byte order.
+.Dv TUNSLMODE
+and
+.Dv TUNSIFHEAD
+are mutually exclusive.
+In any case, the packet data follows immediately.
+.Pp
+A
+.Xr write 2
+call passes a packet in to be
+.Dq received
+on the pseudo-interface.
+If the
+.Dv TUNSIFHEAD
+ioctl has been set, the address family must be prepended, otherwise the
+packet is assumed to be of type
+.Dv AF_INET .
+Each
+.Xr write 2
+call supplies exactly one packet; the packet length is taken from the
+amount of data provided to
+.Xr write 2
+(minus any supplied address family).
+Writes will not block; if the packet cannot be accepted for a
+transient reason
+(e.g., no buffer space available),
+it is silently dropped; if the reason is not transient
+(e.g., packet too large),
+an error is returned.
+.Pp
+The following
+.Xr ioctl 2
+calls are supported
+(defined in
+.In net/if_tun.h ) :
+.Bl -tag -width ".Dv TUNSIFMODE"
+.It Dv TUNSDEBUG
+The argument should be a pointer to an
+.Vt int ;
+this sets the internal debugging variable to that value.
+What, if anything, this variable controls is not documented here; see
+the source code.
+.It Dv TUNGDEBUG
+The argument should be a pointer to an
+.Vt int ;
+this stores the internal debugging variable's value into it.
+.It Dv TUNSIFINFO
+The argument should be a pointer to an
+.Vt struct tuninfo
+and allows setting the MTU, the type, and the baudrate of the tunnel
+device.
+The
+.Vt struct tuninfo
+is declared in
+.In net/if_tun.h .
+.Pp
+The use of this ioctl is restricted to the super-user.
+.It Dv TUNGIFINFO
+The argument should be a pointer to an
+.Vt struct tuninfo ,
+where the current MTU, type, and baudrate will be stored.
+.It Dv TUNSIFMODE
+The argument should be a pointer to an
+.Vt int ;
+its value must be either
+.Dv IFF_POINTOPOINT
+or
+.Dv IFF_BROADCAST
+and should have
+.Dv IFF_MULTICAST
+OR'd into the value if multicast support is required.
+The type of the corresponding
+.Dq Li tun Ns Ar N
+interface is set to the supplied type.
+If the value is outside the above range, an
+.Er EINVAL
+error is returned.
+The interface must be down at the time; if it is up, an
+.Er EBUSY
+error is returned.
+.It Dv TUNSLMODE
+The argument should be a pointer to an
+.Vt int ;
+a non-zero value turns off
+.Dq multi-af
+mode and turns on
+.Dq link-layer
+mode, causing packets read from the tunnel device to be prepended with
+the network destination address (see above).
+.It Dv TUNSIFPID
+Will set the pid owning the tunnel device to the current process's pid.
+.It Dv TUNSIFHEAD
+The argument should be a pointer to an
+.Vt int ;
+a non-zero value turns off
+.Dq link-layer
+mode, and enables
+.Dq multi-af
+mode, where every packet is preceded with a four byte address family.
+.It Dv TUNGIFHEAD
+The argument should be a pointer to an
+.Vt int ;
+the ioctl sets the value to one if the device is in
+.Dq multi-af
+mode, and zero otherwise.
+.It Dv FIONBIO
+Turn non-blocking I/O for reads off or on, according as the argument
+.Vt int Ns 's
+value is or is not zero.
+(Writes are always non-blocking.)
+.It Dv FIOASYNC
+Turn asynchronous I/O for reads
+(i.e., generation of
+.Dv SIGIO
+when data is available to be read)
+off or on, according as the argument
+.Vt int Ns 's
+value is or is not zero.
+.It Dv FIONREAD
+If any packets are queued to be read, store the size of the first one
+into the argument
+.Vt int ;
+otherwise, store zero.
+.It Dv TIOCSPGRP
+Set the process group to receive
+.Dv SIGIO
+signals, when asynchronous I/O is enabled, to the argument
+.Vt int
+value.
+.It Dv TIOCGPGRP
+Retrieve the process group value for
+.Dv SIGIO
+signals into the argument
+.Vt int
+value.
+.El
+.Pp
+The control device also supports
+.Xr select 2
+for read; selecting for write is pointless, and always succeeds, since
+writes are always non-blocking.
+.Pp
+On the last close of the data device, by default, the interface is
+brought down
+(as if with
+.Nm ifconfig Ar tunN Cm down ) .
+All queued packets are thrown away.
+If the interface is up when the data device is not open
+output packets are always thrown away rather than letting
+them pile up.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr read 2 ,
+.Xr select 2 ,
+.Xr write 2 ,
+.Xr devname 3 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr pty 4 ,
+.Xr ifconfig 8
+.Sh AUTHORS
+This manual page was originally obtained from
+.Nx .
diff --git a/share/man/man4/twa.4 b/share/man/man4/twa.4
new file mode 100755
index 0000000..32cccfc
--- /dev/null
+++ b/share/man/man4/twa.4
@@ -0,0 +1,135 @@
+.\"
+.\" Copyright (c) 2004 3ware, Inc.
+.\" Copyright (c) 2000 BSDi
+.\" 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$
+.\"
+.Dd May 9, 2007
+.Dt TWA 4
+.Os
+.Sh NAME
+.Nm twa
+.Nd 3ware 9000/9500/9550/9650 series SATA RAID controllers driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device scbus"
+.Cd "device twa"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+twa_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for AMCC's 3ware 9000/9500/9550/9650 series
+SATA controllers.
+.Pp
+These controllers are available in 4, 8, 12 or 16-port configurations,
+and support the following RAID levels: 0, 1, 10, 5, 50.
+The device nodes for the controllers are of the form
+.Pa /dev/twa Ns Ar X ,
+where
+.Ar X
+is the controller number.
+The driver is implemented as a SCSI SIM
+under CAM, and, as such, the logical units that it controls are accessible
+via the device nodes,
+.Pa /dev/da Ns Ar Y ,
+where
+.Ar Y
+is the logical unit number.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following SATA RAID controllers:
+.Pp
+.Bl -bullet -compact
+.It
+AMCC's 3ware 9500S-4LP
+.It
+AMCC's 3ware 9500S-8
+.It
+AMCC's 3ware 9500S-8MI
+.It
+AMCC's 3ware 9500S-12
+.It
+AMCC's 3ware 9500S-12MI
+.It
+AMCC's 3ware 9500SX-4LP
+.It
+AMCC's 3ware 9500SX-8LP
+.It
+AMCC's 3ware 9500SX-12
+.It
+AMCC's 3ware 9500SX-12MI
+.It
+AMCC's 3ware 9500SX-16ML
+.It
+AMCC's 3ware 9550SX-4LP
+.It
+AMCC's 3ware 9550SX-8LP
+.It
+AMCC's 3ware 9550SX-12
+.It
+AMCC's 3ware 9550SX-12MI
+.It
+AMCC's 3ware 9550SX-16ML
+.It
+AMCC's 3ware 9650SE-2LP
+.It
+AMCC's 3ware 9650SE-4LPML
+.It
+AMCC's 3ware 9650SE-8LPML
+.It
+AMCC's 3ware 9650SE-12ML
+.It
+AMCC's 3ware 9650SE-16ML
+.It
+AMCC's 3ware 9650SE-24M8
+.El
+.Sh DIAGNOSTICS
+Whenever the driver encounters a command failure, it prints out an error code in
+the format:
+.Qq Li "ERROR: (<error source>: <error code>):" ,
+followed by a text description of the error.
+There are other error messages and warnings that the
+driver prints out, depending on the kinds of errors that it encounters.
+If the driver is compiled with
+.Dv TWA_DEBUG
+defined, it prints out a whole bunch of debug
+messages, the quantity of which varies depending on the value assigned to
+.Dv TWA_DEBUG
+(0 to 10).
+.Sh AUTHORS
+The
+.Nm
+driver and manpage were written by
+.An Vinod Kashyap Aq vkashyap@FreeBSD.org .
diff --git a/share/man/man4/twe.4 b/share/man/man4/twe.4
new file mode 100644
index 0000000..fc73a01
--- /dev/null
+++ b/share/man/man4/twe.4
@@ -0,0 +1,278 @@
+.\"
+.\" Copyright (c) 2000 Michael Smith
+.\" Copyright (c) 2000 BSDi
+.\" 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. 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$
+.\"
+.Dd August 15, 2004
+.Dt TWE 4
+.Os
+.Sh NAME
+.Nm twe
+.Nd 3ware 5000/6000/7000/8000 series PATA/SATA RAID adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device pci"
+.Cd "device twe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+twe_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for AMCC's 3ware 5000/6000/7000/8000 series
+PATA/SATA RAID adapters.
+These adapters were formerly known as
+.Dq 3ware Escalade .
+.Pp
+These devices support 2, 4, 8, or 12 ATA disk drives
+and provide RAID0 (striping) and RAID1 (mirroring) functionality.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following PATA/SATA RAID
+controllers:
+.Pp
+.Bl -bullet -compact
+.It
+AMCC's 3ware 5000 series
+.It
+AMCC's 3ware 6000 series
+.It
+AMCC's 3ware 7000-2
+.It
+AMCC's 3ware 7006-2
+.It
+AMCC's 3ware 7500-4LP
+.It
+AMCC's 3ware 7500-8
+.It
+AMCC's 3ware 7500-12
+.It
+AMCC's 3ware 7506-4LP
+.It
+AMCC's 3ware 7506-8
+.It
+AMCC's 3ware 7506-12
+.It
+AMCC's 3ware 8006-2LP
+.It
+AMCC's 3ware 8500-4LP
+.It
+AMCC's 3ware 8500-8
+.It
+AMCC's 3ware 8500-12
+.It
+AMCC's 3ware 8506-4LP
+.It
+AMCC's 3ware 8506-8
+.It
+AMCC's 3ware 8506-8MI
+.It
+AMCC's 3ware 8506-12
+.It
+AMCC's 3ware 8506-12MI
+.El
+.Sh DIAGNOSTICS
+.Ss Controller initialisation phase
+.Bl -diag
+.It twe%d: microcontroller not ready
+.Pp
+The controller's onboard CPU is not reporting that it is ready;
+this may be due to either a board or system failure.
+Initialisation has failed.
+.It twe%d: no attention interrupt
+.It twe%d: can't drain AEN queue
+.It twe%d: reset not reported
+.It twe%d: controller errors detected
+.It twe%d: can't drain response queue
+.It twe%d: reset %d failed, trying again
+.Pp
+The controller is not responding correctly to
+the driver's attempts to reset and initialise it.
+This process is retried several times.
+.It twe%d: can't initialise controller, giving up
+.Pp
+Several attempts to reset and initialise the controller have failed;
+initialisation has failed
+and the driver will not attach to this controller.
+.El
+.Ss Driver initialisation/shutdown phase
+.Bl -diag
+.It twe%d: register window not available
+.It twe%d: can't allocate register window
+.It twe%d: can't allocate parent DMA tag
+.It twe%d: can't allocate interrupt
+.It twe%d: can't set up interrupt
+.It twe%d: can't establish configuration hook
+.Pp
+A resource allocation error occurred while initialising the driver;
+initialisation has failed
+and the driver will not attach to this controller.
+.It twe%d: can't detect attached units
+.Pp
+Fetching the list of attached units failed; initialisation has failed.
+.It twe%d: error fetching capacity for unit %d
+.It twe%d: error fetching state for unit %d
+.It twe%d: error fetching descriptor size for unit %d
+.It twe%d: error fetching descriptor for unit %d
+.It twe%d: device_add_child failed
+.It twe%d: bus_generic_attach returned %d
+.Pp
+Creation of the disk devices failed, either due to communication
+problems with the adapter or due to resource shortage;
+attachment of one or more units may have been aborted.
+.El
+.Ss Operational phase
+.Bl -diag
+.It twe%d: command completed - %s
+.El
+.Pp
+A command was reported completed with a warning by the controller.
+The warning may be one of:
+.Bl -diag
+.It redundant/inconsequential request ignored
+.It failed to write zeroes to LBA 0
+.It failed to profile TwinStor zones
+.El
+.Bl -diag
+.It twe%d: command failed - %s
+.El
+.Pp
+A command was reported as failed by the controller.
+The failure message may be one of:
+.Bl -diag
+.It aborted due to system command or reconfiguration
+.It aborted
+.It access error
+.It access violation
+.It device failure
+.It controller error
+.It timed out
+.It invalid unit number
+.It unit not available
+.It undefined opcode
+.It request incompatible with unit
+.It invalid request
+.It firmware error, reset requested
+.Pp
+The command will be returned to the operating system after a
+fatal error.
+.El
+.Bl -diag
+.It twe%d: command failed submission - controller wedged
+.Pp
+A command could not be delivered to the controller because
+the controller is unresponsive.
+.It twe%d: AEN: <%s>
+.El
+.Pp
+The controller has reported a change in status using an AEN
+(Asynchronous Event Notification).
+The following AENs may be reported:
+.Bl -diag
+.It queue empty
+.It soft reset
+.It degraded mirror
+.It controller error
+.It rebuild fail
+.It rebuild done
+.It incomplete unit
+.It initialisation done
+.It unclean shutdown detected
+.It drive timeout
+.It drive error
+.It rebuild started
+.It aen queue full
+.Pp
+AENs are also queued internally for use by management tools.
+.El
+.Bl -diag
+.It twe%d: error polling for signalled AENs
+.Pp
+The controller has reported
+that one or more status messages are ready for the driver,
+but attempting to fetch one of these has returned an error.
+.It twe%d: AEN queue overflow, lost AEN <%s>
+.Pp
+A status message was retrieved from the controller,
+but there is no more room to queue it in the driver.
+The message is lost (but will be printed to the console).
+.It twe%d: missing expected status bits %s
+.It twe%d: unexpected status bits %s
+.Pp
+A check of the controller's status bits
+indicates an unexpected condition.
+.It twe%d: host interrupt
+.Pp
+The controller has signalled a host interrupt.
+This serves an unknown purpose and is ignored.
+.It twe%d: command interrupt
+.Pp
+The controller has signalled a command interrupt.
+This is not used, and will be disabled.
+.It twe%d: controller reset in progress...
+.Pp
+The controller is being reset by the driver.
+Typically this is done when the driver has determined that the
+controller is in an unrecoverable state.
+.It twe%d: can't reset controller, giving up
+.Pp
+The driver has given up on resetting the controller.
+No further I/O will be handled.
+.It controller reset done, %d commands restarted
+.Pp
+The controller was successfully reset,
+and outstanding commands were restarted.
+.El
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver and manual page were written by
+.An Michael Smith
+.Aq msmith@FreeBSD.org .
+.Pp
+Extensive work done on the driver by
+.An Vinod Kashyap
+.Aq vkashyap@FreeBSD.org
+and
+.An Paul Saab
+.Aq ps@FreeBSD.org .
+.Sh BUGS
+The controller cannot handle I/O transfers
+that are not aligned to a 512-byte boundary.
+In order to support raw device access from user-space,
+the driver will perform alignment fixup on non-aligned data.
+This process is inefficient,
+and thus in order to obtain best performance
+user-space applications accessing the device
+should do so with aligned buffers.
diff --git a/share/man/man4/tx.4 b/share/man/man4/tx.4
new file mode 100644
index 0000000..da54d8c
--- /dev/null
+++ b/share/man/man4/tx.4
@@ -0,0 +1,121 @@
+.\"
+.\" Copyright (c) 1998-2001 Semen Ustimenko (semenu@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 16, 2005
+.Dt TX 4
+.Os
+.Sh NAME
+.Nm tx
+.Nd "SMC 83c17x Fast Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device tx"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_tx_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Ethernet adapters based on the
+SMC 83c17x (EPIC) chips.
+These are mostly SMC 9432 series cards.
+.Pp
+The
+.Nm
+driver supports the following media types (depending on card's capabilities):
+.Pp
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autonegotiation (default).
+.It Cm 100baseFX
+Set 100Mbps (Fast Ethernet) fiber optic operation.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) twisted pair operation.
+.It Cm 10baseT/UTP
+Set 10Mbps on 10baseT port.
+.It Cm 10base2/BNC
+Set 10Mbps on 10base2 port.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Set full-duplex operation.
+.El
+.Pp
+The
+.Nm
+driver supports oversized Ethernet packets (up to 1600 bytes).
+Refer to the
+.Xr ifconfig 8
+man page on setting the interface's MTU.
+.Pp
+The old
+.Dq Li "ifconfig tx0 linkN"
+method of configuration is not supported.
+.Ss "VLAN (IEEE 802.1Q) support"
+The
+.Nm
+driver supports the VLAN operation (using
+.Xr vlan 4
+interfaces) without decreasing the MTU on the
+.Xr vlan 4
+interfaces.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "tx%d: device timeout %d packets"
+The device stops responding.
+Device and driver reset follows this error.
+.It "tx%d: PCI fatal error occurred (%s)"
+One of following errors occurred: PCI Target Abort, PCI Master Abort, Data
+Parity Error or Address Parity Error.
+Device and driver reset follows this error.
+.It "tx%d: cannot allocate mbuf header/cluster"
+Cannot allocate memory for received packet.
+Packet thrown away.
+.It "tx%d: can't stop %s DMA"
+While resetting, the driver failed to stop the device correctly.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh BUGS
+The auto-negotiation does not work very well.
diff --git a/share/man/man4/txp.4 b/share/man/man4/txp.4
new file mode 100644
index 0000000..64a19e8
--- /dev/null
+++ b/share/man/man4/txp.4
@@ -0,0 +1,150 @@
+.\" $OpenBSD: txp.4,v 1.8 2001/06/26 02:09:11 pjanzen Exp $
+.\"
+.\" Copyright (c) 2001 Jason L. Wright (jason@thought.net)
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt TXP 4
+.Os
+.Sh NAME
+.Nm txp
+.Nd "3Com 3XP Typhoon/Sidewinder (3CR990) Ethernet interface"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device txp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_txp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+interface provides access to the 10Mb/s and 100Mb/s Ethernet networks via the
+.Tn 3Com
+.Tn Typhoon/Sidewinder
+chipset.
+.Pp
+Basic Ethernet functions are provided as well as support for
+.Xr vlan 4
+tag removal and insertion assistance, receive
+.Xr ip 4 ,
+.Xr tcp 4 ,
+and
+.Xr udp 4
+checksum offloading,
+and
+transmit
+.Xr ip 4
+checksum offloading.
+There is currently no support for
+transmit
+.Xr tcp 4
+or
+.Xr udp 4
+checksum offloading,
+.Xr tcp 4
+segmentation, nor
+.Xr ipsec 4
+acceleration.
+.Pp
+Each of the host's network addresses
+is specified at boot time with an
+.Dv SIOCSIFADDR
+.Xr ioctl 2 .
+The
+.Nm
+interface employs the address resolution protocol described in
+.Xr arp 4
+to dynamically map between Internet and Ethernet addresses on the local
+network.
+.Pp
+When a
+.Nm
+interface is brought up, by default, it will attempt to auto-negotiate the
+link speed and duplex mode.
+The speeds, in order of attempt, are:
+100Mb/s Full Duplex, 100Mb/s Half Duplex, 10 Mb/s Full Duplex, and
+10 Mb/s Half Duplex.
+.Pp
+The
+.Nm
+supports several media types, which are selected via the
+.Xr ifconfig 8
+command.
+The supported media types are:
+.Bl -tag -width indent
+.It Cm media autoselect
+Attempt to autoselect the media type (default)
+.It Cm media 100baseTX mediaopt full-duplex
+Use 100baseTX, full duplex
+.It Cm media 100baseTX Op Cm mediaopt half-duplex
+Use 100baseTX, half duplex
+.It Cm media 10baseT mediaopt full-duplex
+Use 10baseT, full duplex
+.It Cm media 10baseT Op Cm mediaopt half-duplex
+Use 10baseT, half duplex
+.El
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+3Com 3CR990-TX-95
+.It
+3Com 3CR990-TX-97
+.It
+3Com 3cR990B-TXM
+.It
+3Com 3CR990SVR95
+.It
+3Com 3CR990SVR97
+.It
+3Com 3cR990B-SRV
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr ip 4 ,
+.Xr miibus 4 ,
+.Xr tcp 4 ,
+.Xr udp 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 2.9 .
diff --git a/share/man/man4/u3g.4 b/share/man/man4/u3g.4
new file mode 100644
index 0000000..c173494
--- /dev/null
+++ b/share/man/man4/u3g.4
@@ -0,0 +1,124 @@
+.\"
+.\" Copyright (c) 2008 AnyWi Technologies
+.\" All rights reserved.
+.\"
+.\" This code is derived from uark.c
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 7, 2008
+.Dt U3G 4
+.Os
+.Sh NAME
+.Nm u3g
+.Nd USB support for 3G datacards
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device u3g"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+u3g_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the multiple USB-to-serial interfaces exposed by
+many 3G USB/PCCard modems.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+Option Globetrotter 3G Fusion (only 3G part, not WLAN)
+.It
+Option Globetrotter 3G Fusion Quad (only 3G part, not WLAN)
+.It
+Option Globetrotter 3G Quad
+.It
+Option Globetrotter 3G
+.It
+Vodafone Mobile Connect Card 3G
+.It
+Qualcomm Inc. CDMA MSM
+.It
+Huawei E220 (E270?)
+.It
+Huawei Mobile
+.It
+Novatal MC950D
+.It
+Sierra cards
+.El
+.Pp
+See
+.Pa /sys/dev/u3g.c
+for the complete list of supported cards for each vendor
+mentioned above.
+.Pp
+The supported 3G cards provide the necessary modem port for ppp,
+pppd, or mpd connections as well as extra ports (depending on the specific
+device) to provide other functions (diagnostic port, SIM toolkit port).
+.Pp
+In some of these devices a mass storage device supported by the
+.Xr umass 4
+driver is present which contains Windows and Mac OS X drivers.
+This device is
+hidden, unless the machine was booted in verbose mode (see
+.Xr boot 8 ) .
+To temporarily unhide the device, set
+.Va debug.bootverbose
+to 1 using
+.Xr sysctl 8
+and replug the device.
+The
+.Xr u3gstub 4
+device will attach temporarily and detach within seconds.
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver appeared in
+.Fx 8.0 ,
+is based on the
+.Xr uark 4
+driver, and written by
+.An Andrea Guzzo Aq aguzzo@anywi.com
+in September 2008.
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Andrea Guzzo Aq aguzzo@anywi.com
+and
+.An Nick Hibma Aq n_hibma@freebsd.org .
+Hardware for testing was provided by AnyWi Technologies, Leiden, NL.
diff --git a/share/man/man4/uark.4 b/share/man/man4/uark.4
new file mode 100644
index 0000000..6b16fd9
--- /dev/null
+++ b/share/man/man4/uark.4
@@ -0,0 +1,84 @@
+.\" $OpenBSD: uark.4,v 1.3 2006/10/26 19:42:36 jmc Exp $
+.\"
+.\" Copyright (c) 2006 Jonathan Gray <jsg@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 15, 2006
+.Dt UARK 4
+.Os
+.Sh NAME
+.Nm uark
+.Nd Arkmicro Technologies ARK3116 based USB serial adapter
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uark"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uark_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports Arkmicro Technologies ARK3116 based serial adapters.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+HL USB-RS232
+.It
+HugePine USB-UART
+.It
+KQ-U8A Data Cable
+.It
+Skymaster USB to RS232
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Ox 4.0 .
+The first
+.Fx
+release to include it was
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Jonathan Gray
+.Aq jsg@openbsd.org .
+.Sh CAVEATS
+Setting hardware flow control is not currently supported.
+It is not yet known how to ask the hardware to send a break.
+.Pp
+Arkmicro Technologies do not reply to requests of documentation
+for their products.
diff --git a/share/man/man4/uart.4 b/share/man/man4/uart.4
new file mode 100644
index 0000000..be9d700
--- /dev/null
+++ b/share/man/man4/uart.4
@@ -0,0 +1,185 @@
+.\"
+.\" Copyright (c) 2003 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$
+.\"
+.Dd March 12, 2008
+.Dt UART 4
+.Os
+.\"
+.Sh NAME
+.Nm uart
+.Nd driver for Universal Asynchronous Receiver/Transmitter (UART) devices
+.\"
+.Sh SYNOPSIS
+.Cd "device uart"
+.Pp
+.Cd "device puc"
+.Cd "device uart"
+.Pp
+.Cd "device scc"
+.Cd "device uart"
+.Pp
+.Bd -ragged offset -compact
+In
+.Pa /boot/device.hints :
+.Cd hint.uart.0.disabled="1"
+.Cd hint.uart.0.baud="38400"
+.Cd hint.uart.0.port="0x3f8"
+.Cd hint.uart.0.flags="0x10"
+.Ed
+.Pp
+With
+.Ar flags
+encoded as:
+.Bl -tag -compact -width 0x000000
+.It 0x00010
+device is potential system console
+.It 0x00080
+use this port for remote kernel debugging
+.It 0x00100
+set RX FIFO trigger level to ``low'' (NS8250 only)
+.It 0x00200
+set RX FIFO trigger level to ``medium low'' (NS8250 only)
+.It 0x00400
+set RX FIFO trigger level to ``medium high'' (default, NS8250 only)
+.It 0x00800
+set RX FIFO trigger level to ``high'' (NS8250 only)
+.El
+.\"
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides support for various classes of UARTs implementing the
+EIA RS-232C (CCITT V.24) serial communications interface.
+Each such interface is controlled by a separate and independent instance of
+the
+.Nm
+driver.
+The primary support for devices that contain multiple serial interfaces or
+that contain other functionality besides one or more serial interfaces is
+provided by the
+.Xr puc 4 ,
+or
+.Xr scc 4
+device drivers.
+However, the serial interfaces of those devices that are managed by the
+.Xr puc 4 ,
+or
+.Xr scc 4
+driver are each independently controlled by the
+.Nm
+driver.
+As such, the
+.Xr puc 4 ,
+or
+.Xr scc 4
+driver provides umbrella functionality for the
+.Nm
+driver and hides the complexities that are inherent when elementary components
+are packaged together.
+.Pp
+The
+.Nm
+driver has a modular design to allow it to be used on differing hardware and
+for various purposes.
+In the following sections the components are discussed in detail.
+Options are described in the section that covers the component to which each
+option applies.
+.\"
+.Ss CORE COMPONENT
+At the heart of the
+.Nm
+driver is the core component.
+It contains the bus attachments and the low-level interrupt handler.
+.\"
+.Ss HARDWARE DRIVERS
+The core component and the kernel interfaces talk to the hardware through the
+hardware interface.
+This interface serves as an abstraction of the hardware and allows varying
+UARTs to be used for serial communications.
+.\"
+.Ss SYSTEM DEVICES
+System devices are UARTs that have a special purpose by way of hardware
+design or software setup.
+For example, Sun UltraSparc machines use UARTs as their keyboard interface.
+Such an UART cannot be used for general purpose communications.
+Likewise, when the kernel is configured for a serial console, the
+corresponding UART will in turn be a system device so that the kernel can
+output boot messages early on in the boot process.
+.\"
+.Ss KERNEL INTERFACES
+The last but not least of the components is the kernel interface.
+This component ultimately determines how the UART is made visible to the
+kernel in particular and to users in general.
+The default kernel interface is the TTY interface.
+This allows the UART to be used for terminals, modems and serial line IP
+applications.
+System devices, with the notable exception of serial consoles, generally
+have specialized kernel interfaces.
+.\"
+.Sh HARDWARE
+The
+.Nm
+driver supports the following classes of UARTs:
+.Pp
+.Bl -bullet -compact
+.It
+NS8250: standard hardware based on the 8250, 16450, 16550, 16650, 16750 or
+the 16950 UARTs.
+.It
+SCC: serial communications controllers supported by the
+.Xr scc 4
+device driver.
+.El
+.\"
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ttyu?.init" -compact
+.It Pa /dev/ttyu?
+for callin ports
+.It Pa /dev/ttyu?.init
+.It Pa /dev/ttyu?.lock
+corresponding callin initial-state and lock-state devices
+.Pp
+.It Pa /dev/cuau?
+for callout ports
+.It Pa /dev/cuau?.init
+.It Pa /dev/cuau?.lock
+corresponding callout initial-state and lock-state devices
+.El
+.Sh SEE ALSO
+.Xr puc 4 ,
+.Xr scc 4
+.\"
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.2 .
+.Sh AUTHORS
+The
+.Nm
+device driver and this manual page were written by
+.An Marcel Moolenaar Aq marcel@xcllnt.net .
diff --git a/share/man/man4/ubsa.4 b/share/man/man4/ubsa.4
new file mode 100644
index 0000000..1870e45
--- /dev/null
+++ b/share/man/man4/ubsa.4
@@ -0,0 +1,115 @@
+.\"
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd March 28, 2008
+.Dt UBSA 4
+.Os
+.Sh NAME
+.Nm ubsa
+.Nd USB support for Belkin serial adapters
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ubsa"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ubsa_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the USB-to-RS232 Bridge chip used by a variety of
+serial adapters from Belkin and other vendors.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+AnyData ADU-500A EV-DO modem
+.It
+AnyData ADU-E100A (no EV-DO mode support)
+.It
+Belkin F5U103
+.It
+Belkin F5U120
+.It
+e-Tek Labs Kwik232
+.It
+GoHubs GoCOM232
+.It
+Peracom single port serial adapter
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Fx 5.0 .
+The
+.Xr uplcom 4
+manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+in April 2002 and modified for the
+.Nm
+driver by
+.An Alexander Kabaev Aq kan@FreeBSD.org
+in October 2002.
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Alexander Kabaev Aq kan@FreeBSD.org .
diff --git a/share/man/man4/ubsec.4 b/share/man/man4/ubsec.4
new file mode 100644
index 0000000..11bc362
--- /dev/null
+++ b/share/man/man4/ubsec.4
@@ -0,0 +1,125 @@
+.\" $OpenBSD: ubsec.4,v 1.18 2002/09/26 07:55:41 miod Exp $
+.\"
+.\" Copyright (c) 2000 Jason L. Wright (jason@thought.net)
+.\" 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 Jason L. Wright
+.\" 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$
+.\"
+.Dd April 1, 2006
+.Dt UBSEC 4
+.Os
+.Sh NAME
+.Nm ubsec
+.Nd Broadcom and BlueSteel uBsec 5x0x crypto accelerator
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device crypto"
+.Cd "device cryptodev"
+.Cd "device ubsec"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ubsec_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports cards containing Broadcom and BlueSteel uBsec 5x0x
+crypto accelerator chips.
+.Pp
+The
+.Nm
+driver registers itself to accelerate DES, Triple-DES, MD5-HMAC,
+and SHA1-HMAC operations for
+.Xr ipsec 4
+and
+.Xr crypto 4 .
+.Pp
+On those models which contain a public key engine (almost all of the
+more recent ones), this feature is registered with the
+.Xr crypto 4
+subsystem.
+.Pp
+On all models except the Bluesteel 5501 and Broadcom 5801, the driver
+registers itself to provide random data to the
+.Xr random 4
+subsystem.
+.Sh HARDWARE
+The
+.Nm
+driver supports cards containing any of the following chips:
+.Bl -tag -width "Broadcom BCM5822" -offset indent
+.It Bluesteel 5501
+The original chipset, no longer made.
+This extremely rare unit
+was not very fast, lacked a RNG, and had a number of other bugs.
+.It Bluesteel 5601
+A faster and fixed version of the original, with a random number
+unit and large number engine added.
+.It Broadcom BCM5801
+A BCM5805 without public key engine or random number generator.
+.It Broadcom BCM5802
+A slower version of the BCM5805.
+.It Broadcom BCM5805
+Faster version of Bluesteel 5601.
+.It Broadcom BCM5820
+64 bit version of the chip, and significantly more advanced.
+.It Broadcom BCM5821
+Faster version of the BCM5820.
+.It Broadcom BCM5822
+Faster version of the BCM5820.
+.It Broadcom BCM5823
+A BCM5822 with AES capability.
+.El
+.Sh SEE ALSO
+.Xr crypt 3 ,
+.Xr crypto 4 ,
+.Xr intro 4 ,
+.Xr ipsec 4 ,
+.Xr random 4 ,
+.Xr crypto 9
+.Sh HISTORY
+The
+.Nm
+device driver appeared in
+.Ox 2.8 .
+The
+.Nm
+device driver was imported to
+.Fx 5.0 .
+.Sh BUGS
+The BCM5801 and BCM5802 have not actually been tested.
+The AES capability of the BCM5823 is not yet supported; it is awaiting
+public disclosure of programming information from Broadcom.
diff --git a/share/man/man4/ubser.4 b/share/man/man4/ubser.4
new file mode 100644
index 0000000..6e6fee30
--- /dev/null
+++ b/share/man/man4/ubser.4
@@ -0,0 +1,67 @@
+.\" Copyright (c) 2004 Bernd Walter <ticso@FreeBSD.org>
+.\"
+.\" $URL: https://devel.bwct.de/svn/projects/ubser/ubser.4 $
+.\" $Date: 2004-02-29 21:54:17 +0100 (Sun, 29 Feb 2004) $
+.\" $Author: ticso $
+.\" $Rev: 1130 $
+.\"
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UBSER 4
+.Os
+.Sh NAME
+.Nm ubser
+.Nd USB support for BWCT console serial adapters
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ubser"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ubser_load="YES"
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver provides support for the BWCT console management serial adapters.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ttyy??" -compact
+.It Pa /dev/ttyy??
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Fx 5.2 .
diff --git a/share/man/man4/ubtbcmfw.4 b/share/man/man4/ubtbcmfw.4
new file mode 100644
index 0000000..8451c6f
--- /dev/null
+++ b/share/man/man4/ubtbcmfw.4
@@ -0,0 +1,108 @@
+.\" Copyright (c) 2003 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: ubtbcmfw.4,v 1.3 2003/05/21 19:37:35 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd November 22, 2006
+.Dt UBTBCMFW 4
+.Os
+.Sh NAME
+.Nm ubtbcmfw
+.Nd Firmware driver for Broadcom BCM2033 chip based Bluetooth USB devices
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ubtbcmfw"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ubtbcmfw_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+is a firmware driver for Broadcom BCM2033 chip based Bluetooth USB devices.
+It provides minimal access to the parts of the device required to download
+firmware.
+.Pp
+The
+.Nm
+driver creates three fixed endpoint device nodes.
+.Pp
+The control transfers can only happen on the control endpoint which
+is always endpoint 0.
+Control requests are issued by
+.Xr ioctl 2
+calls.
+.Pp
+Only incoming transfers are supported on an interrupt endpoint.
+To perform I/O on an interrupt endpoint,
+.Xr read 2
+should be used.
+All I/O operations on an interrupt endpoint are unbuffered.
+Interrupt endpoint is always endpoint 1.
+.Pp
+Only outgoing bulk transfers are supported on a bulk endpoint.
+To perform I/O on a bulk endpoint,
+.Xr write 2
+should be used.
+All I/O operations on a bulk endpoint are unbuffered.
+Outgoing bulk endpoint is always endpoint 2.
+.Pp
+The control endpoint (endpoint 0) handles the following
+.Xr ioctl 2
+calls:
+.Bl -tag -width indent
+.It Dv USB_GET_DEVICE_DESC Pq Vt usb_device_descriptor_t
+Return the device descriptor.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ubtbcmfw Ns Ar N Ns Pa \&. Ns Ar EE" -compact
+.It Pa /dev/ubtbcmfw Ns Ar N Ns Pa \&. Ns Ar EE
+Endpoint
+.Ar EE
+of device
+.Ar N .
+.El
+.Sh SEE ALSO
+.Xr ng_ubt 4 ,
+.Xr ugen 4 ,
+.Xr usb 4 ,
+.Xr bcmfw 8
+.Sh HISTORY
+The
+.Nm
+driver was implemented in
+.Fx 5.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
+.Sh BUGS
+Most likely.
+Please report if found.
diff --git a/share/man/man4/uchcom.4 b/share/man/man4/uchcom.4
new file mode 100644
index 0000000..6b127ae
--- /dev/null
+++ b/share/man/man4/uchcom.4
@@ -0,0 +1,94 @@
+.\" $NetBSD: uchcom.4,v 1.1 2007/09/03 18:02:17 tshiozak Exp $
+.\"
+.\" Copyright (c) 2007 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Takuya SHIOZAKI (tshiozak@netbsd.org).
+.\"
+.\" 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$
+.\"
+.Dd March 1, 2008
+.Dt UCHCOM 4
+.Os
+.Sh NAME
+.Nm uchcom
+.Nd WinChipHead CH341/CH340 serial adapter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uchcom"
+.Cd "device ucom"
+.Ed
+.\".Pp
+.\"Alternatively, to load the driver as a
+.\"module at boot time, place the following line in
+.\".Xr loader.conf 5 :
+.\".Bd -literal -offset indent
+.\"uchcom_load="YES"
+.\".Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the WinChipHead CH341/CH340 USB-to-RS-232
+Bridge chip.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+HL USB-RS232
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Nx .
+The first
+.Fx
+release to include it was
+.Fx 7.0 .
+.Sh BUGS
+Actually, this chip seems unable to drive other than 8 data bits and
+1 stop bit line.
diff --git a/share/man/man4/ucom.4 b/share/man/man4/ucom.4
new file mode 100644
index 0000000..5d531e4
--- /dev/null
+++ b/share/man/man4/ucom.4
@@ -0,0 +1,112 @@
+.\" $NetBSD: ucom.4,v 1.9 2002/03/22 00:39:40 augustss Exp $
+.\"
+.\" Copyright (c) 1999 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd March 1, 2008
+.Dt UCOM 4
+.Os
+.Sh NAME
+.Nm ucom
+.Nd USB tty support
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ucom_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver attaches to USB modems, serial ports, and other devices that need
+to look like a tty.
+The
+.Nm
+driver shows a behavior like a
+.Xr tty 4 .
+This means that normal programs such as
+.Xr tip 1
+or
+.Xr pppd 8
+can be used to access the device.
+.Pp
+The
+.Va portno
+locater can be used to decide which port to use for devices that have
+multiple external ports.
+.Sh BUGS
+Prior to
+.Fx 6.0
+.Nm
+created
+.Pa /dev/ucom?
+rather than the uniform device names created today.
+Old scripts must be adjusted accordingly.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/cuaU?"
+.It Pa /dev/cuaU?
+.It Pa /dev/ttyU?
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr uark 4 ,
+.Xr uchcom 4 ,
+.Xr uftdi 4 ,
+.Xr umct 4 ,
+.Xr umodem 4 ,
+.Xr uplcom 4 ,
+.Xr usb 4 ,
+.Xr uvisor 4 ,
+.Xr uvscom 4
+.Sh HISTORY
+The
+.Nm
+driver was adopted from
+.Nx
+in March of 2002.
+This manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+in April 2002.
diff --git a/share/man/man4/ucycom.4 b/share/man/man4/ucycom.4
new file mode 100644
index 0000000..9276462
--- /dev/null
+++ b/share/man/man4/ucycom.4
@@ -0,0 +1,85 @@
+.\"-
+.\" Copyright (c) 2004 Dag-Erling Coïdan Smørgrav
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UCYCOM 4
+.Os
+.Sh NAME
+.Nm ucycom
+.Nd device driver for Cypress CY7C63743 and CY7C64013 USB to RS232 bridges
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ucycom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ucycom_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the Cypress CY7C63743 and CY7C64013 bridge
+chips.
+These chips were designed to provide a low-cost transition path to USB
+for existing RS232 devices, and have fairly limited capabilities.
+.Pp
+The
+.Nm
+driver behaves like a
+.Xr tty 4 .
+.Sh HARDWARE
+The
+.Nm
+driver currently supports the following devices which incorporate
+Cypress USB to RS232 bridge chips:
+.Pp
+.Bl -bullet -compact
+.It
+DeLorme Earthmate USB GPS receiver
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver and this manual page were written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
diff --git a/share/man/man4/udav.4 b/share/man/man4/udav.4
new file mode 100644
index 0000000..dcd0b8b
--- /dev/null
+++ b/share/man/man4/udav.4
@@ -0,0 +1,101 @@
+.\" $NetBSD$
+.\"
+.\" Copyright (c) 2003
+.\" Shingo WATANABE <nabe@nabechan.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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by Shingo WATANABE.
+.\" 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 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt UDAV 4
+.Os
+.Sh NAME
+.Nm udav
+.Nd "Davicom DM9601 USB Ethernet driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ehci"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device miibus"
+.Cd "device udav"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_udav_load="YES"
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+Corega FEther USB-TXC
+.It
+ShanTou ST268 USB NIC
+.El
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB
+.Tn Ethernet
+adapters based on the Davicom DM9601 chipset.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr usb 4 ,
+.Xr ifconfig 8
+.Rs
+.%T "Davicom DM9601 data sheet"
+.%O http://www.davicom.com.tw/big5/download/Data%20Sheet/DM9601-DS-P01-930914.pdf
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Nx 2.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Shingo WATANABE Aq nabe@nabechan.org .
diff --git a/share/man/man4/udbp.4 b/share/man/man4/udbp.4
new file mode 100644
index 0000000..accb474
--- /dev/null
+++ b/share/man/man4/udbp.4
@@ -0,0 +1,127 @@
+.\" Copyright (c) 1999
+.\" Nick Hibma <n_hibma@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.
+.\" 3. 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UDBP 4
+.Os
+.Sh NAME
+.Nm udbp
+.Nd USB Double Bulk Pipe driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device udbp"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+udbp_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for host-to-host cables
+that contain at least two bulk pipes (one for each direction),
+for example
+the EzLink cable and the NetChip 1080 chip.
+.Pp
+.\" XXX The description of how to add netgraph to the kernel
+.\" is out of place here. It should be limited to the
+.\" netgraph(4) manpage only. However, that page does
+.\" not yet give instructions for kldload(8) for the
+.\" clueless. Working on it -- sheldonh
+It requires
+.Xr netgraph 4
+to be available.
+This can be done either by adding
+.Cd "options NETGRAPH"
+to your kernel configuration file, or alternatively loading
+.Xr netgraph 4
+as a module, either from
+.Pa /boot/loader.conf
+or from the command line, before the
+.Nm
+module.
+.Sh EXAMPLES
+.Dl options NETGRAPH
+.Dl device udbp
+.Pp
+Add the
+.Nm
+driver to the kernel.
+.Pp
+.Dl kldload netgraph
+.Dl kldload udbp
+.Pp
+Load the
+.Xr netgraph 4
+module and then the
+.Nm
+driver.
+.Pp
+.Dl ngctl mkpeer udbp0: iface data inet
+.Dl ifconfig ng0 10.0.0.1 10.0.0.2
+.Pp
+Create a new network interface node
+and connect its inet hook to the data hook of the
+.Nm
+node.
+.Xr ifconfig 8
+configures the resulting network interface ng0 with a local
+IP address of 10.0.0.1 and a remote IP address of 10.0.0.2.
+On the remote host, the two
+IP addresses should of course be reversed.
+.Sh SEE ALSO
+.Xr netgraph 4 ,
+.Xr ng_iface 4 ,
+.Xr ohci 4 ,
+.Xr uhci 4 ,
+.Xr usb 4 ,
+.Xr ngctl 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Doug Ambrisko Aq ambrisko@whistle.com ,
+.An Julian Elischer Aq julian@FreeBSD.org
+and
+.An Nick Hibma Aq n_hibma@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Nick Hibma Aq n_hibma@FreeBSD.org .
diff --git a/share/man/man4/udp.4 b/share/man/man4/udp.4
new file mode 100644
index 0000000..03d6db2
--- /dev/null
+++ b/share/man/man4/udp.4
@@ -0,0 +1,170 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)udp.4 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt UDP 4
+.Os
+.Sh NAME
+.Nm udp
+.Nd Internet User Datagram Protocol
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In netinet/in.h
+.Ft int
+.Fn socket AF_INET SOCK_DGRAM 0
+.Sh DESCRIPTION
+.Tn UDP
+is a simple, unreliable datagram protocol which is used
+to support the
+.Dv SOCK_DGRAM
+abstraction for the Internet
+protocol family.
+.Tn UDP
+sockets are connectionless, and are
+normally used with the
+.Xr sendto 2
+and
+.Xr recvfrom 2
+calls, though the
+.Xr connect 2
+call may also be used to fix the destination for future
+packets (in which case the
+.Xr recv 2
+or
+.Xr read 2
+and
+.Xr send 2
+or
+.Xr write 2
+system calls may be used).
+.Pp
+.Tn UDP
+address formats are identical to those used by
+.Tn TCP .
+In particular
+.Tn UDP
+provides a port identifier in addition
+to the normal Internet address format.
+Note that the
+.Tn UDP
+port
+space is separate from the
+.Tn TCP
+port space (i.e., a
+.Tn UDP
+port
+may not be
+.Dq connected
+to a
+.Tn TCP
+port).
+In addition broadcast
+packets may be sent (assuming the underlying network supports
+this) by using a reserved
+.Dq broadcast address ;
+this address
+is network interface dependent.
+.Pp
+Options at the
+.Tn IP
+transport level may be used with
+.Tn UDP ;
+see
+.Xr ip 4 .
+.Sh ERRORS
+A socket operation may fail with one of the following errors returned:
+.Bl -tag -width Er
+.It Bq Er EISCONN
+when trying to establish a connection on a socket which
+already has one, or when trying to send a datagram with the destination
+address specified and the socket is already connected;
+.It Bq Er ENOTCONN
+when trying to send a datagram, but
+no destination address is specified, and the socket has not been
+connected;
+.It Bq Er ENOBUFS
+when the system runs out of memory for
+an internal data structure;
+.It Bq Er EADDRINUSE
+when an attempt
+is made to create a socket with a port which has already been
+allocated;
+.It Bq Er EADDRNOTAVAIL
+when an attempt is made to create a
+socket with a network address for which no network interface
+exists.
+.El
+.Sh MIB VARIABLES
+The
+.Nm
+protocol implements a number of variables in the
+.Li net.inet
+branch of the
+.Xr sysctl 3
+MIB.
+.Bl -tag -width UDPCTL_RECVSPACEX
+.It UDPCTL_CHECKSUM
+.Pq udp.checksum
+Enable udp checksums (enabled by default).
+.It UDPCTL_MAXDGRAM
+.Pq udp.maxdgram
+Maximum outgoing UDP datagram size
+.It UDPCTL_RECVSPACE
+.Pq udp.recvspace
+Maximum space for incoming UDP datagrams
+.It udp.log_in_vain
+For all udp datagrams, to ports on which there is no socket
+listening, log the connection attempt (disabled by default).
+.It udp.blackhole
+When a datagram is received on a port where there is no socket
+listening, do not return an ICMP port unreachable message.
+(Disabled by default.
+See
+.Xr blackhole 4 . )
+.El
+.Sh SEE ALSO
+.Xr getsockopt 2 ,
+.Xr recv 2 ,
+.Xr send 2 ,
+.Xr socket 2 ,
+.Xr blackhole 4 ,
+.Xr inet 4 ,
+.Xr intro 4 ,
+.Xr ip 4
+.Sh HISTORY
+The
+.Nm
+protocol appeared in
+.Bx 4.2 .
diff --git a/share/man/man4/ufm.4 b/share/man/man4/ufm.4
new file mode 100644
index 0000000..f852d6d
--- /dev/null
+++ b/share/man/man4/ufm.4
@@ -0,0 +1,85 @@
+.\" Copyright (c) 2003 M. Warner Losh
+.\" <imp@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 FREEBSD 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UFM 4
+.Os
+.Sh NAME
+.Nm ufm
+.Nd USB driver for Cypress Semiconductor FM Radio
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ufm"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ufm_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the D-Link/GEMTEK FM tuner.
+The USB interface chip is the common Cypress 63001, and the tuner is a
+Philips TEA5757 radio chip that uses a serial interface to set the
+tuner parameters.
+This design is used in the D-Link DSB-R100 USB Radio.
+.Pp
+The
+.Nm
+device must be configured in the kernel, along with
+.Xr usb 4
+and one of the
+.Xr uhci 4
+or
+.Xr ohci 4
+controllers.
+.Pp
+Subsequently, the
+.Pa /dev/ufm0
+device can be used by userland applications.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ufm0" -compact
+.It Pa /dev/ufm0
+blocking device node
+.El
+.Sh SEE ALSO
+.Xr ohci 4 ,
+.Xr uhci 4 ,
+.Xr usb 4
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An M. Warner Losh Aq imp@FreeBSD.org
+for
+.Fx .
diff --git a/share/man/man4/ufoma.4 b/share/man/man4/ufoma.4
new file mode 100644
index 0000000..a1f6c1f
--- /dev/null
+++ b/share/man/man4/ufoma.4
@@ -0,0 +1,140 @@
+.\" Copyright (c) 2006 Takanori Watanabe.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 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$
+.\"
+.Dd November 22, 2006
+.Dt UFOMA 4
+.Os
+.Sh NAME
+.Nm ufoma
+.Nd USB mobile phone support
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ufoma"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ufoma_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB mobile phone terminals in the subset of
+the Mobile Computing Promotion Consortium USB Implementation Guideline,
+which is adopted by FOMA, the NTT DoCoMo 3G system, terminal.
+These are partly like CDC ACM model based modems, which are supported
+by
+.Xr umodem 4 ,
+but the
+.Nm
+driver recognizes a specific USB descriptor that describes its role and
+interface structure, and it will negotiate its role when the device is open.
+They support a regular AT command set and
+the commands can either be multiplexed with the data stream
+or handled through separate pipes.
+In the latter case the AT
+commands have to be given on a device separate from the data device.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh SYSCTLS
+These devices often have a few interface sets and these interfaces
+have their role, sometimes multiplexed.
+These roles are identified with the following sysctl MIBs:
+.Bl -tag -width indent
+.It Va dev.ucom.%d.supportmode
+The modes which are supported by the interface.
+.It Va dev.ucom.%d.currentmode
+Current mode of the interface.
+.It Va dev.ucom.%d.openmode
+Mode to transit when the device is open next.
+.El
+The modes are as follows:
+.Bl -tag -width indent
+.It Li modem
+Accepts AT commands and go and pass packet communication data.
+.It Li handsfree
+Accepts AT commands but it does not pass data.
+.It Li obex
+Accepts OBEX frame which is used to exchange telephone book, etc.
+.It Li vendor1 , vendor2
+Vendor specific data may be passed.
+.It Li deactivated
+When an interface is recognized by the system but not used, the interface
+will be set to this mode.
+.It Li unlinked
+When an interface is not yet negotiated, the interface is in this mode.
+.El
+.Sh HARDWARE
+Devices supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+SHARP FOMA SH902i
+.It
+KYOCERA PHS AH-K3001V (a.k.a Kyopon)
+.It
+SANYO Vodafone3G V801SA
+.El
+.Sh SEE ALSO
+Specification can be found at:
+.Pp
+.Bl -item -compact
+.It
+.Pa http://www.nttdocomo.co.jp/corporate/technology/document/foma/index.html
+.It
+.Pa http://www.mcpc-jp.org/doclist.htm
+.El
+.Pp
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr umodem 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Fx 7.0 ,
+partly derived from the
+.Xr umodem 4
+code.
+.Sh BUGS
+Interfaces with multiplexed commands and data and interfaces with
+commands only are supported.
diff --git a/share/man/man4/uftdi.4 b/share/man/man4/uftdi.4
new file mode 100644
index 0000000..0037666
--- /dev/null
+++ b/share/man/man4/uftdi.4
@@ -0,0 +1,102 @@
+.\" $NetBSD: uftdi.4,v 1.5 2002/02/07 03:15:08 ross Exp $
+.\"
+.\" Copyright (c) 2000 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UFTDI 4
+.Os
+.Sh NAME
+.Nm uftdi
+.Nd USB support for serial adapters based on the FT8U100AX and FT8U232AM chips
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uftdi"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uftdi_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various serial adapters based on the FTDI
+FT2232C, FT8U100AX and FT8U232AM chips.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+B&B Electronics USB->RS422/485 adapter
+.It
+Elexol USB MOD1 and USB MOD3
+.It
+HP USB-Serial adapter shipped with some HP laptops
+.It
+Inland UAS111
+.It
+QVS USC-1000
+.It
+Buffalo PC-OP-RS / Kurouto-shikou KURO-RS universal remote
+.It
+Prologix GPIB-USB Controller
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Fx 4.8
+from
+.Nx 1.5 .
diff --git a/share/man/man4/ugen.4 b/share/man/man4/ugen.4
new file mode 100644
index 0000000..f74752c
--- /dev/null
+++ b/share/man/man4/ugen.4
@@ -0,0 +1,328 @@
+.\" $NetBSD: ugen.4,v 1.13 2001/09/11 22:52:54 wiz Exp $
+.\"
+.\" Copyright (c) 1999 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UGEN 4
+.Os
+.Sh NAME
+.Nm ugen
+.Nd USB generic device support
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ugen"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ugen_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for all USB devices that do not have
+a special driver.
+It supports access to all parts of the device,
+but not in a way that is as convenient as a special purpose driver.
+.Pp
+There can be up to 127 USB devices connected to a USB bus.
+Each USB device can have up to 16 endpoints.
+Each of these endpoints
+will communicate in one of four different modes: control, isochronous,
+bulk, or interrupt.
+Each of the endpoints will have a different
+device node.
+The four least significant bits in the minor device
+number determines which endpoint the device accesses and the rest
+of the bits determines which USB device.
+.Pp
+If an endpoint address is used both for input and output the device
+can be opened for both read or write.
+.Pp
+To find out what endpoints that exist there are a series of
+.Xr ioctl 2
+operation on the control endpoint that returns the USB descriptors
+of the device, configurations, interfaces, and endpoints.
+.Pp
+The control transfer mode can only happen on the control endpoint
+which is always endpoint 0.
+The control endpoint accepts request
+and may respond with an answer to such request.
+Control request
+are issued by
+.Xr ioctl 2
+calls.
+.\" .Pp
+.\" The isochronous transfer mode can be in or out depending on the
+.\" endpoint.
+.\" To perform I/O on an isochronous endpoint
+.\" .Xr read 2
+.\" and
+.\" .Xr write 2
+.\" should be used.
+.\" Before any I/O operations can take place the transfer rate in
+.\" bytes/second has to be set.
+.\" This is done with
+.\" .Xr ioctl 2
+.\" .Dv USB_SET_ISO_RATE .
+.\" Performing this call sets up a buffer corresponding to
+.\" about 1 second of data.
+.Pp
+The bulk transfer mode can be in or out depending on the
+endpoint.
+To perform I/O on a bulk endpoint
+.Xr read 2
+and
+.Xr write 2
+should be used.
+All I/O operations on a bulk endpoint are unbuffered.
+.Pp
+The interrupt transfer mode can be in or out depending on the
+endpoint.
+To perform I/O on an interrupt endpoint
+.Xr read 2
+and
+.Xr write 2
+should be used.
+A moderate amount of buffering is done
+by the driver.
+.Pp
+All endpoints handle the following
+.Xr ioctl 2
+calls:
+.Bl -tag -width indent
+.It Dv USB_SET_SHORT_XFER Pq Vt int
+Allow short read transfer.
+Normally a transfer from the device
+which is shorter than the request specified is reported as an
+error.
+.It Dv USB_SET_TIMEOUT Pq Vt int
+Set the timeout on the device operations, the time is specified
+in milliseconds.
+The value 0 is used to indicate that there is
+no timeout.
+.El
+.Pp
+The control endpoint (endpoint 0) handles the following
+.Xr ioctl 2
+calls:
+.Bl -tag -width indent
+.It Dv USB_GET_CONFIG Pq Vt int
+Get the device configuration number.
+.It Dv USB_SET_CONFIG Pq Vt int
+Set the device into the given configuration number.
+.Pp
+This operation can only be performed when the control endpoint
+is the sole open endpoint.
+.It Dv USB_GET_ALTINTERFACE Pq Vt "struct usb_alt_interface"
+Get the alternative setting number for the interface with the given
+index.
+The
+.Va uai_config_index
+is ignored in this call.
+.Bd -literal
+struct usb_alt_interface {
+ int uai_config_index;
+ int uai_interface_index;
+ int uai_alt_no;
+};
+.Ed
+.It Dv USB_SET_ALTINTERFACE Pq Vt "struct usb_alt_interface"
+Set the alternative setting to the given number in the interface with the
+given index.
+The
+.Va uai_config_index
+is ignored in this call.
+.Pp
+This operation can only be performed when no endpoints for the interface
+are open.
+.It Dv USB_GET_NO_ALT Pq Vt "struct usb_alt_interface"
+Return the number of different alternate settings in the
+.Va uai_alt_no
+field.
+.It Dv USB_GET_DEVICE_DESC Pq Vt usb_device_descriptor_t
+Return the device descriptor.
+.It Dv USB_GET_CONFIG_DESC Pq Vt "struct usb_config_desc"
+Return the descriptor for the configuration with the given index.
+For convenience the current configuration can be specified by
+.Dv USB_CURRENT_CONFIG_INDEX .
+.Bd -literal
+struct usb_config_desc {
+ int ucd_config_index;
+ usb_config_descriptor_t ucd_desc;
+};
+.Ed
+.It Dv USB_GET_INTERFACE_DESC Pq Vt "struct usb_interface_desc"
+Return the interface descriptor for an interface specified by its
+configuration index, interface index, and alternative index.
+For convenience the current alternative can be specified by
+.Dv USB_CURRENT_ALT_INDEX .
+.Bd -literal
+struct usb_interface_desc {
+ int uid_config_index;
+ int uid_interface_index;
+ int uid_alt_index;
+ usb_interface_descriptor_t uid_desc;
+};
+.Ed
+.It Dv USB_GET_ENDPOINT_DESC Pq Vt "struct usb_endpoint_desc"
+Return the endpoint descriptor for the endpoint specified by its
+configuration index, interface index, alternative index, and
+endpoint index.
+.Bd -literal
+struct usb_endpoint_desc {
+ int ued_config_index;
+ int ued_interface_index;
+ int ued_alt_index;
+ int ued_endpoint_index;
+ usb_endpoint_descriptor_t ued_desc;
+};
+.Ed
+.It Dv USB_GET_FULL_DESC Pq Vt "struct usb_full_desc"
+Return all the descriptors for the given configuration.
+.Bd -literal
+struct usb_full_desc {
+ int ufd_config_index;
+ u_int ufd_size;
+ u_char *ufd_data;
+};
+.Ed
+The
+.Va ufd_data
+field should point to a memory area of the size given in the
+.Va ufd_size
+field.
+The proper size can be determined by first issuing a
+.Dv USB_GET_CONFIG_DESC
+and inspecting the
+.Va wTotalLength
+field.
+.It Dv USB_GET_STRING_DESC Pq Vt "struct usb_string_desc"
+Get a string descriptor for the given language ID and
+string index.
+.Bd -literal
+struct usb_string_desc {
+ int usd_string_index;
+ int usd_language_id;
+ usb_string_descriptor_t usd_desc;
+};
+.Ed
+.It Dv USB_DO_REQUEST Pq Vt "struct usb_ctl_request"
+Send a USB request to the device on the control endpoint.
+Any data sent to/from the device is located at
+.Va ucr_data .
+The size of the transferred data is determined from the
+.Va ucr_request .
+The
+.Va ucr_addr
+field is ignored in this call.
+The
+.Va ucr_flags
+field can be used to flag that the request is allowed to
+be shorter than the requested size, and the
+.Va ucr_actlen
+will contain the actual size on completion.
+.Bd -literal
+struct usb_ctl_request {
+ int ucr_addr;
+ usb_device_request_t ucr_request;
+ void *ucr_data;
+ int ucr_flags;
+#define USBD_SHORT_XFER_OK 0x04 /* allow short reads */
+ int ucr_actlen; /* actual length transferred */
+};
+.Ed
+This is a dangerous operation in that it can perform arbitrary operations
+on the device.
+Some of the most dangerous (e.g., changing the device
+address) are not allowed.
+.It Dv USB_GET_DEVICEINFO Pq Vt "struct usb_device_info"
+Get an information summary for the device.
+This call will not
+issue any USB transactions.
+.El
+.Pp
+Note that there are two different ways of addressing configurations, interfaces,
+alternatives, and endpoints: by index or by number.
+The index is the ordinal number (starting from 0) of the descriptor
+as presented by the device.
+The number is the respective number of
+the entity as found in its descriptor.
+Enumeration of descriptors
+use the index, getting and setting typically uses numbers.
+.Pp
+Example:
+all endpoints (except the control endpoint) for the current configuration
+can be found by iterating the
+.Va interface_index
+from 0 to
+.Va config_desc->bNumInterface Ns \-1
+and for each of these iterating the
+.Va endpoint_index
+from 0 to
+.Va interface_desc->bNumEndpoints .
+The
+.Va config_index
+should set to
+.Dv USB_CURRENT_CONFIG_INDEX
+and
+.Va alt_index
+should be set to
+.Dv USB_CURRENT_ALT_INDEX .
+.Sh FILES
+.Bl -tag -width ".Pa /dev/ugen Ns Ar N Ns Pa \&. Ns Ar EE" -compact
+.It Pa /dev/ugen Ns Ar N Ns Pa \&. Ns Ar EE
+Endpoint
+.Ar EE
+of device
+.Ar N .
+.El
+.Sh SEE ALSO
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Nx 1.4 .
+.\" .Sh BUGS
+.\" The driver is not yet finished; there is no access to isochronous endpoints.
diff --git a/share/man/man4/uhci.4 b/share/man/man4/uhci.4
new file mode 100644
index 0000000..089fafb
--- /dev/null
+++ b/share/man/man4/uhci.4
@@ -0,0 +1,70 @@
+.\" Copyright (c) 1999
+.\" Nick Hibma <n_hibma@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.
+.\" 3. 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd April 20, 2005
+.Dt UHCI 4
+.Os
+.Sh NAME
+.Nm uhci
+.Nd UHCI USB Host Controller driver
+.Sh SYNOPSIS
+.Cd "device uhci"
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for UHCI-type PCI based USB controllers.
+.Sh HARDWARE
+The
+.Nm
+driver supports all UHCI v1.1 compliant controllers including:
+.Pp
+.Bl -bullet -compact
+.It
+Intel 82371AB/EB (PIIX4)
+.It
+Intel 82371SB (PIIX3)
+.It
+VIA 83C572
+.El
+.Sh SEE ALSO
+.Xr ehci 4 ,
+.Xr ohci 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Lennart Augustsson Aq augustss@carlstedt.se
+for the
+.Nx
+project.
diff --git a/share/man/man4/uhid.4 b/share/man/man4/uhid.4
new file mode 100644
index 0000000..b830512
--- /dev/null
+++ b/share/man/man4/uhid.4
@@ -0,0 +1,154 @@
+.\" $NetBSD: uhid.4,v 1.13 2001/12/29 14:41:59 augustss Exp $
+.\"
+.\" Copyright (c) 1999, 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UHID 4
+.Os
+.Sh NAME
+.Nm uhid
+.Nd USB generic HID support
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uhid"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uhid_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for all HID (Human Interface Device) interfaces
+in USB devices that do not have a special driver.
+.Pp
+The device handles the following
+.Xr ioctl 2
+calls:
+.Bl -tag -width indent
+.It Dv USB_GET_REPORT_ID Pq Vt int
+Get the report identifier used by this HID report.
+.It Dv USB_GET_REPORT_DESC Pq Vt "struct usb_ctl_report_desc"
+Get the HID report descriptor.
+Using
+this descriptor the exact layout and meaning of data to/from
+the device can be found.
+The report descriptor is delivered
+without any processing.
+.Bd -literal
+struct usb_ctl_report_desc {
+ int ucrd_size;
+ u_char ucrd_data[1024]; /* filled data size will vary */
+};
+.Ed
+.It Dv USB_SET_IMMED Pq Vt int
+Sets the device in a mode where each
+.Xr read 2
+will return the current value of the input report.
+Normally
+a
+.Xr read 2
+will only return the data that the device reports on its
+interrupt pipe.
+This call may fail if the device does not support
+this feature.
+.It Dv USB_GET_REPORT Pq Vt "struct usb_ctl_report"
+Get a report from the device without waiting for data on
+the interrupt pipe.
+The
+.Va report
+field indicates which report is requested.
+It should be
+.Dv UHID_INPUT_REPORT ,
+.Dv UHID_OUTPUT_REPORT ,
+or
+.Dv UHID_FEATURE_REPORT .
+This call may fail if the device does not support this feature.
+.Bd -literal
+struct usb_ctl_report {
+ int ucr_report;
+ u_char ucr_data[1024]; /* used data size will vary */
+};
+.Ed
+.It Dv USB_SET_REPORT Pq Vt "struct usb_ctl_report"
+Set a report in the device.
+The
+.Va report
+field indicates which report is to be set.
+It should be
+.Dv UHID_INPUT_REPORT ,
+.Dv UHID_OUTPUT_REPORT ,
+or
+.Dv UHID_FEATURE_REPORT .
+This call may fail if the device does not support this feature.
+.El
+.Pp
+Use
+.Xr read 2
+to get data from the device.
+Data should be read in chunks of the
+size prescribed by the report descriptor.
+.Pp
+Use
+.Xr write 2
+to send data to the device.
+Data should be written in chunks of the
+size prescribed by the report descriptor.
+.Sh FILES
+.Bl -tag -width ".Pa /dev/uhid?"
+.It Pa /dev/uhid?
+.El
+.Sh SEE ALSO
+.Xr usbhidctl 1 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Nx 1.4 .
+This manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+in April 2002.
diff --git a/share/man/man4/uipaq.4 b/share/man/man4/uipaq.4
new file mode 100644
index 0000000..f1d15b5
--- /dev/null
+++ b/share/man/man4/uipaq.4
@@ -0,0 +1,97 @@
+.\" $OpenBSD: uipaq.4,v 1.1 2005/06/17 23:50:35 deraadt Exp $
+.\" $NetBSD: uipaq.4,v 1.3 2008/04/30 13:10:54 martin Exp $
+.\"
+.\" Copyright (c) 2001-2005 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 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$
+.\"
+.Dd August 24, 2008
+.Dt UIPAQ 4
+.Os
+.Sh NAME
+.Nm uipaq
+.Nd USB support for iPAQ units
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uipaq"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uipaq_load="YES"
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -tag -width Ds -offset indent -compact
+.It ASUS P535 PDA
+.It Casio BE300 PDA
+.It Compaq IPaq PocketPC
+.It HP Jornada 568
+.It HP iPAQ 22xx/Jornada 548
+.It HTC PPC6700 Modem
+.It HTC Smart Phone
+.It HTC Winmobile
+.It Sharp W-ZERO3 ES Spart Phone
+.It Most Windows CE based phones
+.El
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the USB serial emulation provided
+by the iPAQ devices.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr uhub 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Fx
+support was imported from
+.Nx
+for
+.Fx 7.0 .
+.Nx
+added support in
+.Nx 4.0
+and it was imported from
+.Ox 3.8 .
diff --git a/share/man/man4/ukbd.4 b/share/man/man4/ukbd.4
new file mode 100644
index 0000000..5d94cef
--- /dev/null
+++ b/share/man/man4/ukbd.4
@@ -0,0 +1,174 @@
+.\" Copyright (c) 1997, 1998
+.\" Nick Hibma <n_hibma@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.
+.\" 3. 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UKBD 4
+.Os
+.Sh NAME
+.Nm ukbd
+.Nd USB keyboard driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ukbd"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ukbd_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for keyboards that attach to the USB port.
+.Xr usb 4
+and one of
+.Xr uhci 4
+or
+.Xr ohci 4
+must be configured in the kernel as well.
+.Sh CONFIGURATION
+By default, the keyboard subsystem does not create the appropriate devices yet.
+Make sure you reconfigure your kernel with the following option in the kernel
+config file:
+.Pp
+.Dl "options KBD_INSTALL_CDEV"
+.Pp
+If both an AT keyboard USB keyboards are used at the same time, the
+AT keyboard will appear as
+.Pa kbd0
+in
+.Pa /dev .
+The USB keyboards will be
+.Pa kbd1 , kbd2 ,
+etc.
+You can see some information about the keyboard with the following command:
+.Pp
+.Dl "kbdcontrol -i < /dev/kbd1"
+.Pp
+or load a keymap with
+.Pp
+.Dl "kbdcontrol -l keymaps/pt.iso < /dev/kbd1"
+.Pp
+See
+.Xr kbdcontrol 1
+for more possible options.
+.Pp
+You can swap console keyboards by using the command
+.Pp
+.Dl "kbdcontrol -k /dev/kbd1"
+.Pp
+From this point on, the first USB keyboard will be the keyboard
+to be used by the console.
+.Pp
+If you want to use a USB keyboard as your default and not use an AT keyboard at
+all, you will have to remove the
+.Cd "device atkbd"
+line from the kernel configuration file.
+Because of the device initialization order,
+the USB keyboard will be detected
+.Em after
+the console driver
+initializes itself and you have to explicitly tell the console
+driver to use the existence of the USB keyboard.
+This can be done in
+one of the following two ways.
+.Pp
+Run the following command as a part of system initialization:
+.Pp
+.Dl "kbdcontrol -k /dev/kbd0 < /dev/ttyv0 > /dev/null"
+.Pp
+(Note that as the USB keyboard is the only keyboard, it is accessed as
+.Pa /dev/kbd0 )
+or otherwise tell the console driver to periodically look for a
+keyboard by setting a flag in the kernel configuration file:
+.Pp
+.Dl "device sc0 at isa? flags 0x100"
+.Pp
+With the above flag, the console driver will try to detect any
+keyboard in the system if it did not detect one while it was
+initialized at boot time.
+.Sh DRIVER CONFIGURATION
+.D1 Cd "options KBD_INSTALL_CDEV"
+.Pp
+Make the keyboards available through a character device in
+.Pa /dev .
+.Pp
+.D1 Cd options UKBD_DFLT_KEYMAP
+.D1 Cd makeoptions UKBD_DFLT_KEYMAP=fr.iso
+.Pp
+The above lines will put the French ISO keymap in the ukbd driver.
+You can specify any keymap in
+.Pa /usr/share/syscons/keymaps
+with this option.
+.Pp
+.D1 Cd "options KBD_DISABLE_KEYMAP_LOADING"
+.Pp
+Do not allow the user to change the keymap.
+Note that these options also affect the AT keyboard driver,
+.Xr atkbd 4 .
+.Sh FILES
+.Bl -tag -width ".Pa /dev/kbd*" -compact
+.It Pa /dev/kbd*
+blocking device nodes
+.El
+.Sh EXAMPLES
+.D1 Cd "device ukbd"
+.Pp
+Add the
+.Nm
+driver to the kernel.
+.Sh SEE ALSO
+.Xr kbdcontrol 1 ,
+.Xr ohci 4 ,
+.Xr syscons 4 ,
+.Xr uhci 4 ,
+.Xr usb 4 ,
+.Xr config 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Lennart Augustsson Aq augustss@cs.chalmers.se
+for
+.Nx
+and was substantially rewritten for
+.Fx
+by
+.An Kazutaka YOKOTA Aq yokota@zodiac.mech.utsunomiya-u.ac.jp .
+.Pp
+This manual page was written by
+.An Nick Hibma Aq n_hibma@FreeBSD.org
+with a large amount of input from
+.An Kazutaka YOKOTA Aq yokota@zodiac.mech.utsunomiya-u.ac.jp .
diff --git a/share/man/man4/ulpt.4 b/share/man/man4/ulpt.4
new file mode 100644
index 0000000..229145d
--- /dev/null
+++ b/share/man/man4/ulpt.4
@@ -0,0 +1,117 @@
+.\" $NetBSD: ulpt.4,v 1.6 2002/02/05 00:37:48 augustss Exp $
+.\"
+.\" Copyright (c) 1999 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt ULPT 4
+.Os
+.Sh NAME
+.Nm ulpt
+.Nd USB printer support
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ulpt"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ulpt_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB printers that follow the printer
+bi- or uni-directional protocol.
+The bits in the minor number select various features of the driver.
+.Bl -column "Minor Bit" "Functionxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -offset indent
+.Em "Minor Bit Function"
+64 Do not initialize (reset) the device on the port.
+.El
+.Pp
+Some printers cannot handle the reset on open; in case of problems try the
+.Pa unlpt
+device.
+.Sh HARDWARE
+The
+.Nm
+driver provides support for USB printers and parallel printer
+conversion cables, including the following:
+.Pp
+.Bl -bullet -compact
+.It
+ATen parallel printer adapter
+.It
+Belkin F5U002 parallel printer adapter
+.It
+Canon BJ F850, S600
+.It
+Canon LBP-1310, 350
+.It
+Entrega USB-to-parallel printer adapter
+.It
+Hewlett-Packard HP Deskjet 3420 (P/N: C8947A #ABJ)
+.It
+Oki Data MICROLINE ML660PS
+.It
+Seiko Epson PM-900C, 880C, 820C, 730C
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /dev/unlpt?" -compact
+.It Pa /dev/ulpt?
+device with reset
+.It Pa /dev/unlpt?
+device without reset
+.El
+.Sh SEE ALSO
+.Xr lpt 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Nx 1.4 .
+This manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+in April 2002.
diff --git a/share/man/man4/umass.4 b/share/man/man4/umass.4
new file mode 100644
index 0000000..e1949ca
--- /dev/null
+++ b/share/man/man4/umass.4
@@ -0,0 +1,258 @@
+.\" Copyright (c) 1999
+.\" Nick Hibma <n_hibma@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.
+.\" 3. 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UMASS 4
+.Os
+.Sh NAME
+.Nm umass
+.Nd USB Mass Storage Devices driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device umass"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+umass_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Mass Storage devices that attach to the USB
+port.
+.Pp
+To use the
+.Nm
+driver,
+.Xr usb 4
+and one of
+.Xr uhci 4
+or
+.Xr ohci 4
+must be configured in the kernel.
+Additionally, since
+.Nm
+uses the SCSI subsystem and sometimes acts as a SCSI device, it
+requires
+.Xr da 4
+and
+.Xr scbus 4
+to be included in the kernel.
+.Sh HARDWARE
+The
+.Nm
+driver supports USB Mass Storage devices, including:
+.Pp
+.Bl -bullet -compact
+.It
+ADTEC Stick Drive AD-UST32M, 64M, 128M, 256M
+.It
+Denno FireWire/USB2 Removable 2.5-inch HDD Case MIFU-25CB20
+.It
+FujiFilm Zip USB Drive ZDR100 USB A
+.It
+GREEN HOUSE USB Flash Memory "PicoDrive" GH-UFD32M, 64M, 128M
+.It
+Huawei Mobile (SD slot)
+.It
+IBM 32MB USB Memory Key (P/N 22P5296)
+.It
+IBM 256MB USB Drive (MSYSTEM DiskOnKey2)
+.It
+IBM ThinkPad USB Portable CD-ROM Drive (P/N 33L5151)
+.It
+I-O DATA USB CD/CD-R/CD-RW/DVD-R/DVD-RW/DVD-RAM/DVD-ROM Drive DVR-iUH2 (CDROM, DVD-RAM only)
+.It
+I-O DATA USB x6 CD-RW Drive CDRW-i64/USB (CDROM only)
+.It
+I-O DATA USB/IEEE1394 Portable HD Drive HDP-i30P/CI, HDP-i40P/CI
+.It
+Iomega USB Zip 100/250 drive
+.It
+Iomega Zip750 USB2.0 drive
+.It
+Keian USB1.1/2.0 3.5-inch HDD Case KU350A
+.It
+Kurouto Shikou USB 2.5-inch HDD Case GAWAP2.5PS-USB2.0
+.It
+LaCie P3 HardDrive USB 200GB
+.It
+Logitec LDR-H443U2 DVD-RAM/-R/+R/-RW/+RW drive
+.It
+Logitec Mobile USB Memory LMC-256UD
+.It
+Logitec USB1.1/2.0 HDD Unit SHD-E60U2
+.It
+Logitec USB Double-Speed Floppy Drive LFD-31U2
+.It
+Logitec USB/IEEE1394 DVD-RAM/R/RW Unit LDR-N21FU2 (CDROM only)
+.It
+MELCO USB Flash Disk "ClipDrive", RUF-C32M, -C64M, -C128M, -C256M, -C512M
+.It
+MELCO USB Flash Disk "PetitDrive", RUF-32M, -64M, -128M, -256Mm
+.It
+MELCO USB2.0 Flash Disk "PetitDrive2", RUF-256M/U2, -512M/U2
+.It
+MELCO USB2.0 MO Drive MO-CH640U2
+.It
+Matshita CF-VFDU03 floppy drive
+.It
+Merlin SM300 MP3/WMA Player (256Mb)
+.It
+Microtech International, Inc.\& USB-SCSI-HD 50 USB to SCSI cable
+.It
+Motorola E398 Mobile Phone (TransFlash memory card)
+.It
+NOVAC USB2.0 2.5/3.5-inch HDD Case NV-HD351U
+.It
+PNY Attache Flash Drive
+.It
+Panasonic ("Matshita FDD CF-VFDU03")
+.It
+Panasonic KXL-CB20AN Portable DVD-ROM/CD-R/RW
+.It
+Panasonic KXL-CB35AN (DVD-ROM & CD-R/RW)
+.It
+Panasonic USB2.0 Portable CD-RW Drive KXL-RW40AN (CDROM only)
+.It
+Panasonic floppy drive
+.It
+Qware BeatZkey!\& Pro
+.It
+RATOC Systems USB2.0 Removable HDD Case U2-MDK1, U2-MDK1B
+.It
+SanDisk SDDR-31 (Compact Flash)
+.It
+SanDisk SDDR-75 (only Compact Flash port works)
+.It
+Sitecom CN-300 MultiFlash (MMC/SD, SmartMedia, CF, MemoryStick)
+.It
+Sony Portable CD-R/RW Drive CRX10U (CDROM only)
+.It
+TEAC Portable USB CD-ROM Unit CD-110PU/210PU
+.It
+Time DPA20B MP3 Player (1Gb)
+.It
+Trek Thumbdrive 8MB
+.It
+VAIO floppy drive (includes Y-E Data Flashbuster-U)
+.It
+Y-E Data floppy drive (720/1.44/2.88Mb)
+.El
+.Pp
+Among the supported digital cameras are:
+.Pp
+.Bl -bullet -compact
+.It
+Asahi Optical (PENTAX) Optio 230 & 330
+.El
+.Sh EXAMPLES
+.Bd -literal -offset indent
+device umass
+device scbus
+device da
+device pass
+.Ed
+.Pp
+Add the
+.Nm
+driver to the kernel.
+.Pp
+.Dl "camcontrol rescan 0"
+.Pp
+Rescan a Zip drive that was added after boot.
+The command above
+assumes that the Zip drive is on the first SCSI bus in the system.
+.Bd -literal -offset indent
+camcontrol rescan 0:0:0
+camcontrol rescan 0:0:1
+camcontrol rescan 0:0:2
+camcontrol rescan 0:0:3
+.Ed
+.Pp
+Rescan all slots on a multi-slot flash reader, where the slots map to separate
+LUNs on a single SCSI ID.
+Typically only the first slot will be enabled at boot time.
+Again, this assumes that the flash reader is the first SCSI bus in the system.
+.Bd -literal -offset indent
+bsdlabel -w da0 zip100
+newfs da0c
+mount -t ufs /dev/da0c /mnt
+.Ed
+.Pp
+Write a disklabel to the Zip drive (see
+.Xr vpo 4
+for the
+.Xr disktab 5
+entry), creates the file system and mounts the new file system on /mnt.
+.Pp
+.Dl "newfs_msdos /dev/da0"
+.Pp
+Create a new FAT type file system.
+Care should be taken not to run
+.Xr newfs 8
+on devices that already contain data, as this will result in the
+information being lost.
+.Pp
+Many consumer devices such as digital cameras automatically create
+.Tn MS-DOS
+based file systems when storing information such as images and
+videos.
+These file systems can be accessed by specifying the file system
+type as
+.Cm msdos
+when using
+.Xr mount 8 .
+.Sh SEE ALSO
+.Xr ehci 4 ,
+.Xr ohci 4 ,
+.Xr uhci 4 ,
+.Xr usb 4 ,
+.Xr vpo 4 ,
+.Xr disktab 5 ,
+.Xr bsdlabel 8 ,
+.Xr camcontrol 8
+.\".Sh HISTORY
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An MAEKAWA Masahide Aq bishop@rr.iij4u.or.jp
+and
+.An Nick Hibma Aq n_hibma@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Nick Hibma Aq n_hibma@FreeBSD.org .
diff --git a/share/man/man4/umct.4 b/share/man/man4/umct.4
new file mode 100644
index 0000000..7c381a6
--- /dev/null
+++ b/share/man/man4/umct.4
@@ -0,0 +1,100 @@
+.\"
+.\" Copyright (c) 2004 Scott Long
+.\" 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 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$
+.\"
+.Dd November 22, 2006
+.Dt UMCT 4
+.Os
+.Sh NAME
+.Nm umct
+.Nd Magic Control Technology USB-RS232 converter driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device umct"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+umct_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB to RS-232 converters based on the Magic
+Control Technology USB-232 design.
+These devices support most of the
+standard RS-232 features including baud rates ranging from 300 to 115200
+bits per second.
+However, neither hardware nor software flow control
+seems to be supported.
+.Pp
+Access to devices under this driver is via the
+.Xr ucom 4
+framework and device nodes.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+Belkin F5U109
+.It
+Belkin F5U409
+.It
+D-Link DU-H3SP USB BAY Hub
+.It
+Magic Control Technology USB-232
+.It
+Sitecom USB-232
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Fx 5.2 .
+It is loosely based on the
+.Xr ubsa 4
+driver by
+.An Alexander Kabaev Aq kan@FreeBSD.org
+with documentation from
+.An Wolfgang Grandeggar Aq wolfgang@cec.ch .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Scott Long Aq scottl@FreeBSD.org .
diff --git a/share/man/man4/umodem.4 b/share/man/man4/umodem.4
new file mode 100644
index 0000000..d034eb7
--- /dev/null
+++ b/share/man/man4/umodem.4
@@ -0,0 +1,119 @@
+.\" $NetBSD: umodem.4,v 1.6 2001/09/11 23:18:55 wiz Exp $
+.\"
+.\" Copyright (c) 1999 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UMODEM 4
+.Os
+.Sh NAME
+.Nm umodem
+.Nd USB modem support
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device umodem"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+umodem_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB modems in the Communication
+Device Class using the Abstract Control Model.
+These modems are basically standard serial line modems, but they are
+accessed via USB instead.
+They support a regular AT command set.
+The commands can either be multiplexed with the data stream
+or handled through separate pipes.
+In the latter case the AT
+commands have to be given on a device separate from the data device.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh HARDWARE
+Devices supported by the
+.Nm
+driver include:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 5605
+.It
+Curitel PC5740 Wireless Modem
+.It
+Kyocera AH-K3001V Mobile Phone(WILLCOM)
+.It
+Kyocera WX320K Mobile Phone(WILLCOM)
+.It
+Metricom Ricochet GS USB wireless modem
+.It
+Sierra MC5720 Wireless Modem
+.It
+Yamaha Broadband Wireless Router RTW65b
+.It
+ELSA MicroLink 56k USB modem
+.It
+Sony Ericsson W810i phone
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Nx 1.5 .
+This manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+in April 2002.
+.Sh BUGS
+Only modems with multiplexed commands and data are supported
+at the moment.
diff --git a/share/man/man4/ums.4 b/share/man/man4/ums.4
new file mode 100644
index 0000000..b56a72f
--- /dev/null
+++ b/share/man/man4/ums.4
@@ -0,0 +1,116 @@
+.\" Copyright (c) 1999
+.\" Nick Hibma <n_hibma@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.
+.\" 3. 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 27, 2006
+.Dt UMS 4
+.Os
+.Sh NAME
+.Nm ums
+.Nd USB mouse driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ums"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+ums_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for mice that attach to the USB port.
+Supported are
+mice with any number of buttons and mice with a wheel.
+.Pp
+The
+.Pa /dev/ums0
+device presents the mouse as a
+.Ar sysmouse
+or
+.Ar mousesystems
+type device.
+See
+.Xr moused 8
+for an explanation of these mouse types.
+.Sh FILES
+.Bl -tag -width /dev/ums0 -compact
+.It Pa /dev/ums0
+blocking device node
+.El
+.Sh EXAMPLES
+Use the first
+USB mouse on the system as your console mouse:
+.Pp
+.Dl moused -p /dev/ums0 -t auto
+.Pp
+To be able to use the USB mouse under X, change the "Pointer" section in
+.Nm xorg.conf
+to the following:
+.Pp
+.Dl Device "/dev/ums0"
+.Dl Protocol "Auto"
+.Pp
+If you want to be able to use the mouse in both virtual consoles as well
+as in X change it to:
+.Pp
+.Dl Device "/dev/sysmouse"
+.Dl Protocol "Auto"
+.Sh SEE ALSO
+.Xr ohci 4 ,
+.Xr sysmouse 4 ,
+.Xr uhci 4 ,
+.Xr usb 4 ,
+.Xr xorg.conf 5 Pq Pa ports/x11/xorg ,
+.Xr moused 8
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Lennart Augustsson Aq augustss@cs.chalmers.se
+for
+.Nx
+and was adopted for
+.Fx
+by
+.An MAEKAWA Masahide Aq bishop@rr.iij4u.or.jp .
+.Pp
+This manual page was written by
+.An Nick Hibma Aq n_hibma@FreeBSD.org
+with input from
+.An Kazutaka YOKOTA Aq yokota@zodiac.mech.utsunomiya-u.ac.jp .
diff --git a/share/man/man4/unix.4 b/share/man/man4/unix.4
new file mode 100644
index 0000000..89944ce
--- /dev/null
+++ b/share/man/man4/unix.4
@@ -0,0 +1,275 @@
+.\" Copyright (c) 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)unix.4 8.1 (Berkeley) 6/9/93
+.\" $FreeBSD$
+.\"
+.Dd July 15, 2001
+.Dt UNIX 4
+.Os
+.Sh NAME
+.Nm unix
+.Nd UNIX-domain protocol family
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/un.h
+.Sh DESCRIPTION
+The
+.Ux Ns -domain
+protocol family is a collection of protocols
+that provides local (on-machine) interprocess
+communication through the normal
+.Xr socket 2
+mechanisms.
+The
+.Ux Ns -domain
+family supports the
+.Dv SOCK_STREAM
+and
+.Dv SOCK_DGRAM
+socket types and uses
+file system pathnames for addressing.
+.Sh ADDRESSING
+.Ux Ns -domain
+addresses are variable-length file system pathnames of
+at most 104 characters.
+The include file
+.In sys/un.h
+defines this address:
+.Bd -literal -offset indent
+struct sockaddr_un {
+ u_char sun_len;
+ u_char sun_family;
+ char sun_path[104];
+};
+.Ed
+.Pp
+Binding a name to a
+.Ux Ns -domain
+socket with
+.Xr bind 2
+causes a socket file to be created in the file system.
+This file is
+.Em not
+removed when the socket is closed \(em
+.Xr unlink 2
+must be used to remove the file.
+.Pp
+The length of
+.Ux Ns -domain
+address, required by
+.Xr bind 2
+and
+.Xr connect 2 ,
+can be calculated by the macro
+.Fn SUN_LEN
+defined in
+.In sys/un.h .
+The
+.Va sun_path
+field must be terminated by a
+.Dv NUL
+character to be used with
+.Fn SUN_LEN ,
+but the terminating
+.Dv NUL
+is
+.Em not
+part of the address.
+.Pp
+The
+.Ux Ns -domain
+protocol family does not support broadcast addressing or any form
+of
+.Dq wildcard
+matching on incoming messages.
+All addresses are absolute- or relative-pathnames
+of other
+.Ux Ns -domain
+sockets.
+Normal file system access-control mechanisms are also
+applied when referencing pathnames; e.g., the destination
+of a
+.Xr connect 2
+or
+.Xr sendto 2
+must be writable.
+.Sh PROTOCOLS
+The
+.Ux Ns -domain
+protocol family is comprised of simple
+transport protocols that support the
+.Dv SOCK_STREAM
+and
+.Dv SOCK_DGRAM
+abstractions.
+.Dv SOCK_STREAM
+sockets also support the communication of
+.Ux
+file descriptors through the use of the
+.Va msg_control
+field in the
+.Fa msg
+argument to
+.Xr sendmsg 2
+and
+.Xr recvmsg 2 .
+.Pp
+Any valid descriptor may be sent in a message.
+The file descriptor(s) to be passed are described using a
+.Vt "struct cmsghdr"
+that is defined in the include file
+.In sys/socket.h .
+The type of the message is
+.Dv SCM_RIGHTS ,
+and the data portion of the messages is an array of integers
+representing the file descriptors to be passed.
+The number of descriptors being passed is defined
+by the length field of the message;
+the length field is the sum of the size of the header
+plus the size of the array of file descriptors.
+.Pp
+The received descriptor is a
+.Em duplicate
+of the sender's descriptor, as if it were created with a call to
+.Xr dup 2 .
+Per-process descriptor flags, set with
+.Xr fcntl 2 ,
+are
+.Em not
+passed to a receiver.
+Descriptors that are awaiting delivery, or that are
+purposely not received, are automatically closed by the system
+when the destination socket is closed.
+.Pp
+The effective credentials (i.e., the user ID and group list) of a
+peer on a
+.Dv SOCK_STREAM
+socket may be obtained using the
+.Dv LOCAL_PEERCRED
+socket option.
+This may be used by a server to obtain and verify the credentials of
+its client, and vice versa by the client to verify the credentials
+of the server.
+These will arrive in the form of a filled in
+.Vt "struct xucred"
+(defined in
+.In sys/ucred.h ) .
+The credentials presented to the server (the
+.Xr listen 2
+caller) are those of the client when it called
+.Xr connect 2 ;
+the credentials presented to the client (the
+.Xr connect 2
+caller) are those of the server when it called
+.Xr listen 2 .
+This mechanism is reliable; there is no way for either party to influence
+the credentials presented to its peer except by calling the appropriate
+system call (e.g.,
+.Xr connect 2
+or
+.Xr listen 2 )
+under different effective credentials.
+.Pp
+.Tn UNIX
+domain sockets support a number of socket options which can be set with
+.Xr setsockopt 2
+and tested with
+.Xr getsockopt 2 :
+.Bl -tag -width ".Dv LOCAL_CONNWAIT"
+.It Dv LOCAL_CREDS
+This option may be enabled on a
+.Dv SOCK_DGRAM
+or a
+.Dv SOCK_STREAM
+socket.
+This option provides a mechanism for the receiver to
+receive the credentials of the process as a
+.Xr recvmsg 2
+control message.
+The
+.Va msg_control
+field in the
+.Vt msghdr
+structure points to a buffer that contains a
+.Vt cmsghdr
+structure followed by a variable length
+.Vt sockcred
+structure, defined in
+.In sys/socket.h
+as follows:
+.Bd -literal
+struct sockcred {
+ uid_t sc_uid; /* real user id */
+ uid_t sc_euid; /* effective user id */
+ gid_t sc_gid; /* real group id */
+ gid_t sc_egid; /* effective group id */
+ int sc_ngroups; /* number of supplemental groups */
+ gid_t sc_groups[1]; /* variable length */
+};
+.Ed
+.Pp
+The
+.Fn SOCKCREDSIZE
+macro computes the size of the
+.Vt sockcred
+structure for a specified number
+of groups.
+The
+.Vt cmsghdr
+fields have the following values:
+.Bd -literal
+cmsg_len = CMSG_LEN(SOCKCREDSIZE(ngroups))
+cmsg_level = SOL_SOCKET
+cmsg_type = SCM_CREDS
+.Ed
+.It Dv LOCAL_CONNWAIT
+Used with
+.Dv SOCK_STREAM
+sockets, this option causes the
+.Xr connect 2
+function to block until
+.Xr accept 2
+has been called on the listening socket.
+.El
+.Sh SEE ALSO
+.Xr socket 2 ,
+.Xr intro 4
+.Rs
+.%T "An Introductory 4.3 BSD Interprocess Communication Tutorial"
+.%B PS1
+.%N 7
+.Re
+.Rs
+.%T "An Advanced 4.3 BSD Interprocess Communication Tutorial"
+.%B PS1
+.%N 8
+.Re
diff --git a/share/man/man4/upgt.4 b/share/man/man4/upgt.4
new file mode 100644
index 0000000..39dee55
--- /dev/null
+++ b/share/man/man4/upgt.4
@@ -0,0 +1,223 @@
+.\" $OpenBSD: upgt.4,v 1.6 2008/04/17 14:01:22 jmc Exp $
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2007 Marcus Glocker <mglocker@openbsd.org>
+.\" Copyright (c) 2005-2007
+.\" Damien Bergamini <damien.bergamini@free.fr>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\"
+.\"
+.\" Copyright (c) 2006 Theo de Raadt.
+.\" Copyright (c) 2006 The DragonFly 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.
+.\" 3. Neither the name of The DragonFly Project 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 COPYRIGHT HOLDERS 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
+.\" COPYRIGHT HOLDERS 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.
+.\"
+.Dd April 17, 2008
+.Os
+.Dt UPGT 4
+.Sh NAME
+.Nm upgt
+.Nd Conexant/Intersil PrismGT SoftMAC USB IEEE 802.11b/g wireless network
+device
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ehci"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device upgt"
+.Cd "device wlan"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_upgt_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports the USB 2.0 Conexant/Intersil PrismGT series wireless
+adapters based on the GW3887 chipset.
+.Pp
+These are the modes the
+.Nm
+driver can operate in:
+.Bl -tag -width "IBSS-masterXX"
+.It BSS mode
+Also known as
+.Em infrastructure
+mode, this is used when associating with an access point, through
+which all traffic passes.
+This mode is the default.
+.\" .It IBSS mode
+.\" Also known as
+.\" .Em IEEE ad-hoc
+.\" mode or
+.\" .Em peer-to-peer
+.\" mode.
+.\" This is the standardized method of operating without an access point.
+.\" Stations associate with a service set.
+.\" However, actual connections between stations are peer-to-peer.
+.\" .It Host AP
+.\" In this mode the driver acts as an access point (base station)
+.\" for other cards.
+.It monitor mode
+In this mode the driver is able to receive packets without
+associating with an access point.
+This disables the internal receive filter and enables the card to
+capture packets from networks which it wouldn't normally have access to,
+or to scan for access points.
+.El
+.Pp
+.Nm
+supports software WEP.
+Wired Equivalent Privacy (WEP) is the de facto encryption standard
+for wireless networks.
+It can be typically configured in one of three modes:
+no encryption; 40-bit encryption; or 104-bit encryption.
+Unfortunately, due to serious weaknesses in WEP protocol
+it is strongly recommended that it not be used as the
+sole mechanism to secure wireless communication.
+WEP is not enabled by default.
+.\".Pp
+.\"The transmit speed is user-selectable or can be adapted automatically by the
+.\"driver depending on the received signal strength and on the number of hardware
+.\"transmission retries.
+.Pp
+The
+.Nm
+driver can be configured at runtime with
+.Xr ifconfig 8 .
+.Sh FILES
+.\".Pp
+.\"These firmware files are not free because Conexant/Intersil refuses
+.\"to grant distribution rights.
+.\"As a result, even though
+.\".Ox
+.\"includes the driver, the firmware files cannot be included and
+.\"users have to download these files on their own.
+This driver requires the
+.Nm upgtfw
+firmware to be installed before it will work.
+The firmware files are not publicly available.
+A package of the firmware which can be installed via
+.Xr pkg_add 1
+is available:
+.Bd -literal -offset indent
+http://weongyo.org/project/upgt/upgt-firmware-2.13.1.0.tar.gz
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver supports USB 2.0 Conexant/Intersil PrismGT series wireless
+adapters based on the GW3887 chipset, among them:
+.Pp
+.Bl -bullet -compact
+.It
+Belkin F5D7050 (version 1000)
+.It
+Cohiba Proto Board
+.It
+D-Link DWL-G120 Cohiba
+.It
+FSC Connect2Air E-5400 USB D1700
+.It
+Gigaset USB Adapter 54
+.It
+Inventel UR045G
+.It
+SMC EZ ConnectG SMC2862W-G
+.It
+Sagem XG703A
+.It
+Spinnaker DUT
+.It
+Spinnaker Proto Board
+.El
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev upgt0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev upgt0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev upgt0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr netintro 4 ,
+.Xr usb 4 ,
+.Xr wlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 4.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Marcus Glocker Aq mglocker@openbsd.org .
+.Pp
+The hardware specification was reverse engineered by the people at
+.Pa http://www.prism54.org .
+.Sh CAVEATS
+The
+.Nm
+driver just supports the USB 2.0 devices (GW3887 chipset) but not the
+USB 1.0 devices containing the NET2280, ISL3880, and ISL3886 chipsets.
+Some further efforts would be necessary to add USB 1.0 support to the
+driver.
diff --git a/share/man/man4/uplcom.4 b/share/man/man4/uplcom.4
new file mode 100644
index 0000000..d8be6da
--- /dev/null
+++ b/share/man/man4/uplcom.4
@@ -0,0 +1,129 @@
+.\" $NetBSD: uplcom.4,v 1.9 2002/02/07 03:15:09 ross Exp $
+.\"
+.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UPLCOM 4
+.Os
+.Sh NAME
+.Nm uplcom
+.Nd USB support for Prolific PL-2303/2303X/2303HX serial adapters driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uplcom"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uplcom_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various serial adapters based on the Prolific
+PL-2303, PL-2303X and PL-2303HX USB-to-RS232 Bridge chips.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+ATEN UC-232A
+.It
+BAFO BF-800
+.It
+BAFO BF-810
+.It
+Belkin F5U257
+.It
+ELECOM UC-SGT
+.It
+HAL Corporation Crossam2+USB IR commander
+.It
+Hama USB RS-232 Serial Adapter
+.It
+Hamlet exagerate XURS232
+.It
+IOGEAR UC-232A
+.It
+I/O DATA USB-RSAQ
+.It
+I/O DATA USB-RSAQ2
+.It
+I/O DATA USB-RSAQ3
+.It
+PLANEX USB-RS232 URS-03
+.It
+RATOC REX-USB60
+.It
+Radio Shack USB Serial Cable
+.It
+Sandberg USB to Serial Link (model number 133-08)
+.It
+SOURCENEXT KeikaiDenwa 8 (with and without charger)
+.It
+Sony Ericsson USB Cable (Susteen USB Data Cable)
+.It
+Willcom W-SIM DD PHS terminal.(WS002IN)
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver
+appeared in
+.Nx 1.6 .
+This manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+in April 2002.
diff --git a/share/man/man4/ural.4 b/share/man/man4/ural.4
new file mode 100644
index 0000000..453cfb4
--- /dev/null
+++ b/share/man/man4/ural.4
@@ -0,0 +1,162 @@
+.\" Copyright (c) 2005, 2006
+.\" Damien Bergamini <damien.bergamini@free.fr>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 13, 2008
+.Os
+.Dt URAL 4
+.Sh NAME
+.Nm ural
+.Nd "Ralink Technology RT2500USB IEEE 802.11 driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ehci"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device ural"
+.Cd "device wlan"
+.Cd "device wlan_amrr"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_ural_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports USB 2.0 wireless adapters based on the RT2500USB chipset.
+.Pp
+The RT2500USB chipset consists of two integrated chips, a RT2570 MAC/BBP
+and a radio transceiver (the model of which depends on the card revision).
+.Pp
+The RT2522, RT2523, RT2524, RT2525, RT2525e and RT2526 radio transceivers
+operate in the 2.4GHz band (802.11b/g) whereas the RT5222 is a dual-band radio
+transceiver that can operate in the 2.4GHz and 5.2GHz bands (802.11a).
+.Pp
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+.Cm hostap ,
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports USB 2.0 wireless adapters based on the Ralink Technology
+RT2500USB chipset, including:
+.Pp
+.Bl -column -compact ".Li Atlantis Land A02-PCM-W54" "Bus"
+.It Em Card Ta Em Bus
+.It "AMIT WL532U" Ta USB
+.It "ASUS WL-167g" Ta USB
+.It "Belkin F5D7050 v2000" Ta USB
+.It "Buffalo WLI-U2-KG54-AI" Ta USB
+.It "CNet CWD-854" Ta USB
+.It "Compex WLU54G 2A1100" Ta USB
+.It "Conceptronic C54RU" Ta USB
+.It "D-Link DWL-G122 b1" Ta USB
+.It "Dynalink WLG25USB" Ta USB
+.It "E-Tech WGUS02" Ta USB
+.It "Gigabyte GN-WBKG" Ta USB
+.It "Hercules HWGUSB2-54" Ta USB
+.It "KCORP LifeStyle KLS-685" Ta USB
+.It "Linksys WUSB54G v4" Ta USB
+.It "Linksys WUSB54GP v4" Ta USB
+.It "MSI MS-6861" Ta USB
+.It "MSI MS-6865" Ta USB
+.It "MSI MS-6869" Ta USB
+.It "NovaTech NV-902" Ta USB
+.It "OvisLink Evo-W54USB" Ta USB
+.It "SerComm UB801R" Ta USB
+.It "SparkLAN WL-685R" Ta USB
+.It "Surecom EP-9001-g" Ta USB
+.It "Sweex LC100060" Ta USB
+.It "Tonze UW-6200C" Ta USB
+.It "Zinwell ZWX-G261" Ta USB
+.It "Zonet ZEW2500P" Ta USB
+.El
+.Pp
+An up to date list can be found at
+.Pa http://ralink.rapla.net/ .
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ural0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan create wlandev ural0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ural0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Pp
+Join a specific BSS network with 128-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev ural0 wlanmode adhoc ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "ural%d: device timeout"
+The driver will reset the hardware.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr intro 4 ,
+.Xr netintro 4 ,
+.Xr usb 4 ,
+.Xr wlan 4 ,
+.Xr wlan_amrr 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr wlan_xauth 4 ,
+.Xr ifconfig 8 ,
+.Xr hostapd 8 ,
+.Xr wpa_supplicant 8 .
+.Rs
+.%T "Ralink Technology"
+.%O http://www.ralinktech.com/
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Ox 3.7 .
+.Sh AUTHORS
+The original
+.Nm
+driver was written by
+.An Damien Bergamini Aq damien.bergamini@free.fr
diff --git a/share/man/man4/urio.4 b/share/man/man4/urio.4
new file mode 100644
index 0000000..d42ff2a
--- /dev/null
+++ b/share/man/man4/urio.4
@@ -0,0 +1,136 @@
+.\" Copyright (c) 2000 Dirk-Willem van Gulik
+.\" <dirkx@webweaving.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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by Bill Paul.
+.\" 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt URIO 4
+.Os
+.Sh NAME
+.Nm urio
+.Nd "USB driver for the Rio MP3 players"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device urio"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+urio_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for Rio MP3 players from Diamond MultiMedia
+which attaches to the USB port.
+The
+.Nm
+device must be configured in the kernel, along with
+.Em usb
+and one of the
+.Em uhci
+or
+.Em ohci
+controllers.
+.Pp
+Subsequently, the
+.Pa /dev/urio0
+device can be used by the Rio userland applications.
+.Sh HARDWARE
+The following devices are supported by the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+Diamond MultiMedia Rio 500
+.It
+Diamond MultiMedia Rio 600
+.It
+Diamond MultiMedia Rio 800
+.El
+.Sh FILES
+.Bl -tag -width /dev/ums0 -compact
+.It Pa /dev/urio0
+blocking device node
+.El
+.Sh EXAMPLES
+The following line in the kernel configuration file adds the
+.Nm
+driver to the kernel:
+.Dl device urio
+.Pp
+To download a song over the
+.Tn USB
+connection into the Rio using the
+.Xr rio_add_song 1
+utility (see the
+.Sx SEE ALSO
+section):
+.Dl rio_add_song /usr/local/MP3/TracyChapman/02-Fast-Car.mp3
+.Sh SEE ALSO
+.Xr ohci 4 ,
+.Xr uhci 4 ,
+.Xr usb 4
+.Rs
+.%T The Rio 500 SourceForge Project Web Page
+.%O http://rio500.sourceforge.net/
+.Re
+.Pp
+The Rio500 tools from SourceForge
+are the actual userland tools used to download,
+format or rename songs on players.
+When compiling these tools,
+the following pre-build configuration command will ensure that
+.Pa rio_usb.h
+is available in the include path
+and that the device used is
+.Pa /dev/urio0 :
+.Bd -literal -offset indent
+CFLAGS="-I/usr/include/dev/usb" ./configure \\
+ --with-devicepath='/dev' --with-deviceentry='urio0'
+.Ed
+.\".Sh HISTORY
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Iwasa Kazmi Aq kzmi@ca2.so-net.ne.jp
+for
+.Fx .
+.Pp
+This manual page was written by
+.An Dirk-Willem van Gulik Aq dirkx@webweaving.org .
diff --git a/share/man/man4/usb.4 b/share/man/man4/usb.4
new file mode 100644
index 0000000..f9af2f4
--- /dev/null
+++ b/share/man/man4/usb.4
@@ -0,0 +1,440 @@
+.\" Copyright (c) 1997, 1998
+.\" Nick Hibma <n_hibma@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.
+.\" 3. 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt USB 4
+.Os
+.Sh NAME
+.Nm usb
+.Nd Universal Serial Bus
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb_load="YES"
+.Ed
+.Pp
+.In dev/usb/usb.h
+.In dev/usb/usbhid.h
+.Sh DESCRIPTION
+.Fx
+provides machine-independent bus support and drivers for
+.Tn USB
+devices.
+.Pp
+The
+.Nm
+driver has three layers: the controller, the bus, and the
+device layer.
+The controller attaches to a physical bus
+(like
+.Xr pci 4 ) .
+The
+.Tn USB
+bus attaches to the controller, and the root hub attaches
+to the controller.
+Any devices attached to the bus will attach to the root hub
+or another hub attached to the
+.Tn USB
+bus.
+.Pp
+The
+.Nm uhub
+device will always be present as it is needed for the
+root hub.
+.Sh INTRODUCTION TO USB
+The
+.Tn USB
+is a 12 Mb/s serial bus (1.5 Mb/s for low speed devices).
+Each
+.Tn USB
+has a host controller that is the master of the bus;
+all other devices on the bus only speak when spoken to.
+.Pp
+There can be up to 127 devices (apart from the host controller)
+on a bus, each with its own address.
+The addresses are assigned
+dynamically by the host when each device is attached to the bus.
+.Pp
+Within each device there can be up to 16 endpoints.
+Each endpoint
+is individually addressed and the addresses are static.
+Each of these endpoints will communicate in one of four different modes:
+.Em control , isochronous , bulk ,
+or
+.Em interrupt .
+A device always has at least one endpoint.
+This endpoint has address 0 and is a control
+endpoint and is used to give commands to and extract basic data,
+such as descriptors, from the device.
+Each endpoint, except the control endpoint, is unidirectional.
+.Pp
+The endpoints in a device are grouped into interfaces.
+An interface is a logical unit within a device; e.g.\&
+a compound device with both a keyboard and a trackball would present
+one interface for each.
+An interface can sometimes be set into different modes,
+called alternate settings, which affects how it operates.
+Different alternate settings can have different endpoints
+within it.
+.Pp
+A device may operate in different configurations.
+Depending on the
+configuration, the device may present different sets of endpoints
+and interfaces.
+.\" .Pp
+.\" Each device located on a hub has several
+.\" .Xr config 8
+.\" locators:
+.\" .Bl -tag -compact -width xxxxxx
+.\" .It Cd port
+.\" this is the number of the port on the closest upstream hub.
+.\" .It Cd configuration
+.\" this is the configuration the device must be in for this driver to attach.
+.\" This locator does not set the configuration; it is iterated by the bus
+.\" enumeration.
+.\" .It Cd interface
+.\" this is the interface number within a device that an interface driver
+.\" attaches to.
+.\" .It Cd vendor
+.\" this is the 16 bit vendor id of the device.
+.\" .It Cd product
+.\" this is the 16 bit product id of the device.
+.\" .It Cd release
+.\" this is the 16 bit release (revision) number of the device.
+.\" .El
+.\" The first locator can be used to pin down a particular device
+.\" according to its physical position in the device tree.
+.\" The last three locators can be used to pin down a particular
+.\" device according to what device it actually is.
+.Pp
+The bus enumeration of the
+.Tn USB
+bus proceeds in several steps:
+.Bl -enum
+.It
+Any device specific driver can attach to the device.
+.It
+If none is found, any device class specific driver can attach.
+.It
+If none is found, all configurations are iterated over.
+For each configuration, all the interfaces are iterated over, and interface
+drivers can attach.
+If any interface driver attached in a certain
+configuration, the iteration over configurations is stopped.
+.It
+If still no drivers have been found, the generic
+.Tn USB
+driver can attach.
+.El
+.Sh USB CONTROLLER INTERFACE
+Use the following to get access to the
+.Tn USB
+specific structures and defines.
+.Pp
+The
+.Pa /dev/usb Ns Ar N
+can be opened and a few operations can be performed on it.
+The
+.Xr poll 2
+system call will say that I/O is possible on the controller device when a
+.Tn USB
+device has been connected or disconnected to the bus.
+.Pp
+The following
+.Xr ioctl 2
+commands are supported on the controller device:
+.Bl -tag -width xxxxxx
+.It Dv USB_DISCOVER
+This command will cause a complete bus discovery to be initiated.
+If any devices attached or detached from the bus they will be
+processed during this command.
+This is the only way that new devices are found on the bus.
+.It Dv USB_DEVICEINFO Vt "struct usb_device_info"
+This command can be used to retrieve some information about a device
+on the bus.
+The
+.Va udi_addr
+field should be filled before the call and the other fields will
+be filled by information about the device on that address.
+Should no such device exist, an error is reported.
+.Bd -literal
+#define USB_MAX_DEVNAMES 4
+#define USB_MAX_DEVNAMELEN 16
+struct usb_device_info {
+ u_int8_t udi_bus;
+ u_int8_t udi_addr; /* device address */
+ usb_event_cookie_t udi_cookie;
+ char udi_product[USB_MAX_STRING_LEN];
+ char udi_vendor[USB_MAX_STRING_LEN];
+ char udi_release[8];
+ u_int16_t udi_productNo;
+ u_int16_t udi_vendorNo;
+ u_int16_t udi_releaseNo;
+ u_int8_t udi_class;
+ u_int8_t udi_subclass;
+ u_int8_t udi_protocol;
+ u_int8_t udi_config;
+ u_int8_t udi_speed;
+#define USB_SPEED_LOW 1
+#define USB_SPEED_FULL 2
+#define USB_SPEED_HIGH 3
+ int udi_power;/* power consumption in mA, 0 if selfpowered */
+ int udi_nports;
+ char udi_devnames[USB_MAX_DEVNAMES][USB_MAX_DEVNAMELEN];
+ u_int8_t udi_ports[16];/* hub only: addresses of devices on ports */
+#define USB_PORT_ENABLED 0xff
+#define USB_PORT_SUSPENDED 0xfe
+#define USB_PORT_POWERED 0xfd
+#define USB_PORT_DISABLED 0xfc
+};
+.Ed
+.Pp
+.Va udi_bus
+and
+.Va udi_addr
+contain the topological information for the device.
+.Va udi_devnames
+contains the device names of the connected drivers.
+For example, the
+third
+.Tn USB
+Zip drive connected will be
+.Li umass2 .
+The
+.Va udi_product , udi_vendor
+and
+.Va udi_release
+fields contain self-explanatory descriptions of the device.
+.Va udi_productNo , udi_vendorNo , udi_releaseNo , udi_class , udi_subclass
+and
+.Va udi_protocol
+contain the corresponding values from the device descriptors.
+The
+.Va udi_config
+field shows the current configuration of the device.
+.Pp
+.Va udi_speed
+indicates whether the device is at low speed
+.Pq Dv USB_SPEED_LOW ,
+full speed
+.Pq Dv USB_SPEED_FULL
+or high speed
+.Pq Dv USB_SPEED_HIGH .
+The
+.Va udi_power
+field shows the power consumption in milli-amps drawn at 5 volts,
+or zero if the device is self powered.
+.Pp
+If the device is a hub, the
+.Va udi_nports
+field is non-zero, and the
+.Va udi_ports
+field contains the addresses of the connected devices.
+If no device is connected to a port, one of the
+.Dv USB_PORT_*
+values indicates its status.
+.It Dv USB_DEVICESTATS Vt "struct usb_device_stats"
+This command retrieves statistics about the controller.
+.Bd -literal
+struct usb_device_stats {
+ u_long uds_requests[4];
+};
+.Ed
+.Pp
+The
+.Va udi_requests
+field is indexed by the transfer kind, i.e.\&
+.Dv UE_* ,
+and indicates how many transfers of each kind that has been completed
+by the controller.
+.It Dv USB_REQUEST Vt "struct usb_ctl_request"
+This command can be used to execute arbitrary requests on the control pipe.
+This is
+.Em DANGEROUS
+and should be used with great care since it
+can destroy the bus integrity.
+.El
+.Pp
+The include file
+.In dev/usb/usb.h
+contains definitions for the types used by the various
+.Xr ioctl 2
+calls.
+The naming convention of the fields for the various
+.Tn USB
+descriptors exactly follows the naming in the
+.Tn USB
+specification.
+Byte sized fields can be accessed directly, but word (16 bit)
+sized fields must be access by the
+.Fn UGETW field
+and
+.Fn USETW field value
+macros to handle byte order and alignment properly.
+.Pp
+The include file
+.In dev/usb/usbhid.h
+similarly contains the definitions for
+Human Interface Devices
+.Pq Tn HID .
+.Sh USB EVENT INTERFACE
+All
+.Tn USB
+events are reported via the
+.Pa /dev/usb
+device.
+This device can be opened for reading and each
+.Xr read 2
+will yield an event record (if something has happened).
+The
+.Xr poll 2
+system call can be used to determine if an event record is available
+for reading.
+.Pp
+The event record has the following definition:
+.Bd -literal
+struct usb_event {
+ int ue_type;
+#define USB_EVENT_CTRLR_ATTACH 1
+#define USB_EVENT_CTRLR_DETACH 2
+#define USB_EVENT_DEVICE_ATTACH 3
+#define USB_EVENT_DEVICE_DETACH 4
+#define USB_EVENT_DRIVER_ATTACH 5
+#define USB_EVENT_DRIVER_DETACH 6
+ struct timespec ue_time;
+ union {
+ struct {
+ int ue_bus;
+ } ue_ctrlr;
+ struct usb_device_info ue_device;
+ struct {
+ usb_event_cookie_t ue_cookie;
+ char ue_devname[16];
+ } ue_driver;
+ } u;
+};
+.Ed
+The
+.Va ue_type
+field identifies the type of event that is described.
+The possible events are attach/detach of a host controller,
+a device, or a device driver.
+The union contains information
+pertinent to the different types of events.
+Macros,
+.Fn USB_EVENT_IS_ATTACH "ue_type"
+and
+.Fn USB_EVENT_IS_DETACH "ue_type"
+can be used to determine if an event was an
+.Dq attach
+or a
+.Dq detach
+request.
+.Pp
+The
+.Va ue_bus
+contains the number of the
+.Tn USB
+bus for host controller events.
+.Pp
+The
+.Va ue_device
+record contains information about the device in a device event event.
+.Pp
+The
+.Va ue_cookie
+is an opaque value that uniquely determines which
+device a device driver has been attached to (i.e., it equals
+the cookie value in the device that the driver attached to).
+.Pp
+The
+.Va ue_devname
+contains the name of the device (driver) as seen in, e.g.,
+kernel messages.
+.Pp
+Note that there is a separation between device and device
+driver events.
+A device event is generated when a physical
+.Tn USB
+device is attached or detached.
+A single
+.Tn USB
+device may
+have zero, one, or many device drivers associated with it.
+.Sh SEE ALSO
+The
+.Tn USB
+specifications can be found at:
+.Pp
+.D1 Pa http://www.usb.org/developers/docs/
+.Pp
+.Xr aue 4 ,
+.Xr axe 4 ,
+.Xr cue 4 ,
+.Xr ehci 4 ,
+.Xr kue 4 ,
+.Xr ohci 4 ,
+.Xr pci 4 ,
+.Xr rue 4 ,
+.Xr ucom 4 ,
+.Xr udav 4 ,
+.Xr ugen 4 ,
+.Xr uhci 4 ,
+.Xr uhid 4 ,
+.Xr ukbd 4 ,
+.Xr ulpt 4 ,
+.Xr umass 4 ,
+.Xr ums 4 ,
+.Xr uplcom 4 ,
+.Xr urio 4 ,
+.Xr uscanner 4 ,
+.Xr uvscom 4 ,
+.Xr usbdevs 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Lennart Augustsson Aq augustss@carlstedt.se
+for the
+.Nx
+project.
diff --git a/share/man/man4/usb2_bluetooth.4 b/share/man/man4/usb2_bluetooth.4
new file mode 100644
index 0000000..8b2c0fc
--- /dev/null
+++ b/share/man/man4/usb2_bluetooth.4
@@ -0,0 +1,65 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_BLUETOOTH 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_bluetooth
+.
+.Nd "USB bluetooth container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_bluetooth"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_bluetooth_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB bluetooth drivers.
+.
+When you plug an USB bluetooth device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_controller.4 b/share/man/man4/usb2_controller.4
new file mode 100644
index 0000000..998d0dc
--- /dev/null
+++ b/share/man/man4/usb2_controller.4
@@ -0,0 +1,65 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_CONTROLLER 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_controller
+.
+.Nd "USB controller container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_controller"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_controller_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB Host and Device side
+controller drivers.
+.
+When you plug an USB controller the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_core.4 b/share/man/man4/usb2_core.4
new file mode 100644
index 0000000..318b4fc
--- /dev/null
+++ b/share/man/man4/usb2_core.4
@@ -0,0 +1,630 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 20, 2008
+.Dt USB2_CORE 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_core
+.
+.Nd "USB core functions"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_core"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_core_load="YES"
+.Ed
+.
+.Pp
+Here is a list of commonly used functions:
+.Pp
+.
+.Ft "usb2_error_t"
+.Fo "usb2_transfer_setup"
+.Fa "udev"
+.Fa "ifaces"
+.Fa "pxfer"
+.Fa "setup_start"
+.Fa "n_setup"
+.Fa "priv_sc"
+.Fa "priv_mtx"
+.Fc
+.
+.Ft "void"
+.Fo "usb2_transfer_unsetup"
+.Fa "pxfer"
+.Fa "n_setup"
+.Fc
+.
+.Ft "void"
+.Fo "usb2_transfer_start"
+.Fa "xfer"
+.Fc
+.
+.Ft "void"
+.Fo "usb2_transfer_stop"
+.Fa "xfer"
+.Fc
+.
+.Ft "void"
+.Fo "usb2_transfer_drain"
+.Fa "xfer"
+.Fc
+.
+.
+.Sh DESCRIPTION
+The
+.Nm
+module implements the core functionality of the USB standard and many
+helper functions to make USB device driver programming easier and more
+safe.
+.
+The
+.Nm
+module supports both USB Host and USB Device side mode!
+.
+.Sh USB TRANSFER MANAGEMENT FUNCTIONS
+The USB standard defines four types of USB transfers.
+.
+Control transfers, Bulk transfers, Interrupt transfers and Isochronous
+transfers.
+.
+All the transfer types are managed using the following five functions:
+.
+.Pp
+.
+.Fn usb2_transfer_setup
+This function will allocate memory for and initialise an array of USB
+transfers and all required DMA memory.
+.
+This function can sleep or block waiting for resources to become
+available.
+.Fa udev
+is a pointer to "struct usb2_device".
+.Fa ifaces
+is an array of interface index numbers to use. See "if_index".
+.Fa pxfer
+is a pointer to an array of USB transfer pointers that are initialized
+to NULL, and then pointed to allocated USB transfers.
+.Fa setup_start
+is a pointer to an array of USB config structures.
+.Fa n_setup
+is a number telling the USB system how many USB transfers should be
+setup.
+.Fa priv_sc
+is the private softc pointer, which will be used to initialize
+"xfer->priv_sc".
+.Fa priv_mtx
+is the private mutex protecting the transfer structure and the
+softc. This pointer is used to initialize "xfer->priv_mtx".
+This function returns
+zero upon success. A non-zero return value indicates failure.
+.
+.Pp
+.
+.Fn usb2_transfer_unsetup
+This function will release the given USB transfers and all allocated
+resources associated with these USB transfers.
+.Fa pxfer
+is a pointer to an array of USB transfer pointers, that may be NULL,
+that should be freed by the USB system.
+.Fa n_setup
+is a number telling the USB system how many USB transfers should be
+unsetup.
+.
+This function can sleep waiting for USB transfers to complete.
+.
+This function is NULL safe with regard to the USB transfer structure
+pointer.
+.
+It is not allowed to call this function from the USB transfer
+callback.
+.
+.Pp
+.
+.Fn usb2_transfer_start
+This function will start the USB transfer pointed to by
+.Fa xfer,
+if not already started.
+.
+This function is always non-blocking and must be called with the
+so-called private USB mutex locked.
+.
+This function is NULL safe with regard to the USB transfer structure
+pointer.
+.
+.Pp
+.
+.Fn usb2_transfer_stop
+This function will stop the USB transfer pointed to by
+.Fa xfer,
+if not already stopped.
+.
+This function is always non-blocking and must be called with the
+so-called private USB mutex locked.
+.
+This function can return before the USB callback has been called.
+.
+This function is NULL safe with regard to the USB transfer structure
+pointer.
+.
+If the transfer was in progress, the callback will called with
+"USB_ST_ERROR" and "xfer->error = USB_ERR_CANCELLED".
+.
+.Pp
+.
+.Fn usb2_transfer_drain
+This function will stop an USB transfer, if not already stopped and
+wait for any additional USB hardware operations to complete.
+.
+Buffers that are loaded into DMA using "usb2_set_frame_data()" can
+safely be freed after that this function has returned.
+.
+This function can block the caller and will not return before the USB
+callback has been called.
+.
+This function is NULL safe with regard to the USB transfer structure
+pointer.
+.
+.Sh USB TRANSFER CALLBACK
+.
+The USB callback has three states.
+.
+USB_ST_SETUP, USB_ST_TRANSFERRED and USB_ST_ERROR. USB_ST_SETUP is the
+initial state.
+.
+After the callback has been called with this state it will always be
+called back at a later stage in one of the other two states.
+.
+In the USB_ST_ERROR state the "error" field of the USB transfer
+structure is set to the error cause.
+.
+The USB callback should not restart the USB transfer in case the error
+cause is USB_ERR_CANCELLED.
+.
+The USB callback is protected from recursion.
+.
+That means one can start and stop whatever transfer from the callback
+of another transfer one desires.
+.
+Also the transfer that is currently called back.
+.
+Recursion is handled like this that when the callback that wants to
+recurse returns it is called one more time.
+.
+.
+.Pp
+.
+.Fn usb2_start_hardware
+This function should only be called from within the USB callback and
+is used to start the USB hardware.
+.
+Typical parameters that should be set in the USB transfer structure
+before this function is called are "frlengths[]", "nframes" and
+"frbuffers[]".
+.
+An USB transfer can have multiple frames consisting of one or more USB
+packets making up an I/O vector for all USB transfer types.
+.
+After the USB transfer is complete "frlengths[]" is updated to the
+actual USB transfer length for the given frame.
+.Bd -literal -offset indent
+void
+usb2_default_callback(struct usb2_xfer *xfer)
+{
+ switch (USB_GET_STATE(xfer)) {
+ case USB_ST_SETUP:
+ /*
+ * Setup xfer->frlengths[], xfer->nframes
+ * and write data to xfer->frbuffers[], if any
+ */
+ usb2_start_hardware(xfer);
+ break;
+
+ case USB_ST_TRANSFERRED:
+ /*
+ * Read data from xfer->frbuffers[], if any.
+ * "xfer->frlengths[]" should now have been
+ * updated to the actual length.
+ */
+ break;
+
+ default: /* Error */
+ /*
+ * Print error message and clear stall
+ * for example.
+ */
+ break;
+ }
+ /*
+ * Here it is safe to do something without the private
+ * USB mutex locked.
+ */
+ return;
+}
+.Ed
+.
+.Sh USB CONTROL TRANSFERS
+An USB control transfer has three parts.
+.
+First the SETUP packet, then DATA packet(s) and then a STATUS
+packet.
+.
+The SETUP packet is always pointed to by "xfer->frbuffers[0]" and the
+length is stored in "xfer->frlengths[0]" also if there should not be
+sent any SETUP packet! If an USB control transfer has no DATA stage,
+then "xfer->nframes" should be set to 1.
+.
+Else the default value is "xfer->nframes" equal to 2.
+.
+.Bd -literal -offset indent
+
+Example1: SETUP + STATUS
+ xfer->nframes = 1;
+ xfer->frlenghts[0] = 8;
+ usb2_start_hardware(xfer);
+
+Example2: SETUP + DATA + STATUS
+ xfer->nframes = 2;
+ xfer->frlenghts[0] = 8;
+ xfer->frlenghts[1] = 1;
+ usb2_start_hardware(xfer);
+
+Example3: SETUP + DATA + STATUS - split
+1st callback:
+ xfer->nframes = 1;
+ xfer->frlenghts[0] = 8;
+ usb2_start_hardware(xfer);
+
+2nd callback:
+ /* IMPORTANT: frbuffers[0] must still point at the setup packet! */
+ xfer->nframes = 2;
+ xfer->frlenghts[0] = 0;
+ xfer->frlenghts[1] = 1;
+ usb2_start_hardware(xfer);
+
+Example4: SETUP + STATUS - split
+1st callback:
+ xfer->nframes = 1;
+ xfer->frlenghts[0] = 8;
+ xfer->flags.manual_status = 1;
+ usb2_start_hardware(xfer);
+
+2nd callback:
+ xfer->nframes = 1;
+ xfer->frlenghts[0] = 0;
+ xfer->flags.manual_status = 0;
+ usb2_start_hardware(xfer);
+
+.Ed
+.Sh USB TRANSFER CONFIG
+To simply the search for endpoints the
+.Nm
+module defines a USB config structure where it is possible to specify
+the characteristics of the wanted endpoint.
+.Bd -literal -offset indent
+
+struct usb2_config {
+ bufsize,
+ callback
+ direction,
+ endpoint,
+ frames,
+ index flags,
+ interval,
+ timeout,
+ type,
+};
+
+.Ed
+.
+.Pp
+.Fa type
+field selects the USB pipe type.
+.
+Valid values are: UE_INTERRUPT, UE_CONTROL, UE_BULK,
+UE_ISOCHRONOUS.
+.
+The special value UE_BULK_INTR will select BULK and INTERRUPT pipes.
+.
+This field is mandatory.
+.
+.Pp
+.Fa endpoint
+field selects the USB endpoint number.
+.
+A value of 0xFF, "-1" or "UE_ADDR_ANY" will select the first matching
+endpoint.
+.
+This field is mandatory.
+.
+.Pp
+.Fa direction
+field selects the USB endpoint direction.
+.
+A value of "UE_DIR_ANY" will select the first matching endpoint.
+.
+Else valid values are: "UE_DIR_IN" and "UE_DIR_OUT".
+.
+"UE_DIR_IN" and "UE_DIR_OUT" can be binary OR'ed by "UE_DIR_SID" which
+means that the direction will be swapped in case of
+USB_MODE_DEVICE.
+.
+Note that "UE_DIR_IN" refers to the data transfer direction of the
+"IN" tokens and "UE_DIR_OUT" refers to the data transfer direction of
+the "OUT" tokens.
+.
+This field is mandatory.
+.
+.Pp
+.Fa interval
+field selects the interrupt interval.
+.
+The value of this field is given in milliseconds and is independent of
+device speed.
+.
+Depending on the endpoint type, this field has different meaning:
+.Bl -tag
+.It UE_INTERRUPT
+"0" use the default interrupt interval based on endpoint descriptor.
+"Else" use the given value for polling rate.
+.It UE_ISOCHRONOUS
+"0" use default. "Else" the value is ignored.
+.It UE_BULK
+.It UE_CONTROL
+"0" no transfer pre-delay. "Else" a delay as given by this field in
+milliseconds is inserted before the hardware is started when
+"usb2_start_hardware()" is called.
+.Pp
+NOTE: The transfer timeout, if any, is started after that the
+pre-delay has elapsed!
+.El
+.
+.Pp
+.Fa timeout
+field, if non-zero, will set the transfer timeout in milliseconds. If
+the "timeout" field is zero and the transfer type is ISOCHRONOUS a
+timeout of 250ms will be used.
+.
+.Pp
+.Fa frames
+field sets the maximum number of frames. If zero is specified it will
+yield the following results:
+.Bl -tag
+.It UE_BULK
+xfer->nframes = 1;
+.It UE_INTERRUPT
+xfer->nframes = 1;
+.It UE_CONTROL
+xfer->nframes = 2;
+.It UE_ISOCHRONOUS
+Not allowed. Will cause an error.
+.El
+.
+.Pp
+.Fa ep_index
+field allows you to give a number, in case more endpoints match the
+description, that selects which matching "ep_index" should be used.
+.
+.Pp
+.Fa if_index
+field allows you to select which of the interface numbers in the
+"ifaces" array parameter passed to "usb2_transfer_setup" that should
+be used when setting up the given USB transfer.
+.
+.Pp
+.Fa flags
+field has type "struct usb2_xfer_flags" and allows one to set initial
+flags an USB transfer. Valid flags are:
+.Bl -tag
+.It force_short_xfer
+This flag forces the last transmitted USB packet to be short. A short
+packet has a length of less than "xfer->max_packet_size", which
+derives from "wMaxPacketSize". This flag can be changed during
+operation.
+.It short_xfer_ok
+This flag allows the received transfer length, "xfer->actlen" to be
+less than "xfer->sumlen" upon completion of a transfer. This flag can
+be changed during operation.
+.It pipe_bof
+This flag causes a failing USB transfer to remain first in the PIPE
+queue except in the case of "xfer->error" equal to
+"USB_ERR_CANCELLED". No other USB transfers in the affected PIPE queue
+will be started until either:
+.Bl -tag
+.It 1
+The failing USB transfer is stopped using "usb2_transfer_stop()".
+.It 2
+The failing USB transfer performs a successful transfer.
+.El
+The purpose of this flag is to avoid races when multiple transfers are
+queued for execution on an USB endpoint, and the first executing
+transfer fails leading to the need for clearing of stall for
+example.
+.
+In this case this flag is used to prevent the following USB transfers
+from being executed at the same time the clear-stall command is
+executed on the USB control endpoint.
+.
+This flag can be changed during operation.
+.Pp
+"BOF" is short for "Block On Failure"
+.Pp
+NOTE: This flag should be set on all BULK and INTERRUPT USB transfers
+which use an endpoint that can be shared between userland and kernel.
+.
+.
+.It proxy_buffer
+Setting this flag will cause that the total buffer size will be
+rounded up to the nearest atomic hardware transfer size.
+.
+The maximum data length of any USB transfer is always stored in the
+"xfer->max_data_length".
+.
+For control transfers the USB kernel will allocate additional space
+for the 8-bytes of SETUP header.
+.
+These 8-bytes are not counted by the "xfer->max_data_length"
+variable.
+.
+This flag can not be changed during operation.
+.
+.
+.It ext_buffer
+Setting this flag will cause that no data buffer will be
+allocated.
+.
+Instead the USB client must supply a data buffer.
+.
+This flag can not be changed during operation.
+.
+.
+.It manual_status
+Setting this flag prevents an USB STATUS stage to be appended to the
+end of the USB control transfer.
+.
+If no control data is transferred this flag must be cleared.
+.
+Else an error will be returned to the USB callback.
+.
+This flag is mostly useful for the USB device side.
+.
+This flag can be changed during operation.
+.
+.
+.It no_pipe_ok
+Setting this flag causes the USB_ERR_NO_PIPE error to be ignored. This
+flag can not be changed during operation.
+.
+.
+.It stall_pipe
+.Bl -tag
+.It Device Side Mode
+Setting this flag will cause STALL pids to be sent to the endpoint
+belonging to this transfer before the transfer is started.
+.
+The transfer is started at the moment the host issues a clear-stall
+command on the STALL'ed endpoint.
+.
+This flag can be changed during operation.
+.It Host Side Mode
+Setting this flag will cause a clear-stall control request to be
+executed on the endpoint before the USB transfer is started.
+.El
+.Pp
+If this flag is changed outside the USB callback function you have to
+use the "usb2_transfer_set_stall()" and "usb2_transfer_clear_stall()"
+functions !
+.
+.El
+.Pp
+.Fa bufsize
+field sets the total buffer size in bytes.
+.
+If this field is zero, "wMaxPacketSize" will be used, multiplied by
+the "frames" field if the transfer type is ISOCHRONOUS.
+.
+This is useful for setting up interrupt pipes.
+.
+This field is mandatory.
+.Pp
+NOTE: For control transfers "bufsize" includes the length of the
+request structure.
+.
+.Pp
+.Fa callback
+pointer sets the USB callback. This field is mandatory.
+.
+.
+.Sh USB LINUX COMPAT LAYER
+The
+.Nm
+module supports the Linux USB API.
+.
+.
+.
+.
+.Sh USB SECURITY MODEL
+.
+.
+The
+.Nm
+module implements fine grained read and write access based on username
+and group.
+.
+Access is granted at four levels:
+.
+.Bl -tag
+.It Level 4 - USB interface
+USB interfaces can be given individual access rights.
+.It Level 3 - USB device
+USB devices can be given individual access rights.
+.It Level 2 - USB BUS
+USB busses can be given individual access rights.
+.It Level 1 - USB
+USB as a whole can be given individual access rights.
+.El
+.Pp
+The
+.Nm
+module will search for access rights starting at level 4 continuing
+downwards to USB at level 1.
+.
+For critical applications you should be aware that the outgoing serial
+BUS traffic will be broadcasted to all USB devices.
+.
+For absolute security USB devices that require different access rights
+should not be placed on the same USB BUS or controller.
+.
+If connected to the same USB bus, it is possible that a USB device can
+sniff and intercept the communication of another USB device.
+.
+Using USB HUBs will not solve this problem.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usbconfig 8
+.Sh STANDARDS
+The
+.Nm
+module complies with the USB 2.0 standard.
+.Sh HISTORY
+The
+.Nm
+module has been inspired by the NetBSD USB stack initially written by
+Lennart Augustsson. The
+.Nm
+module was written by
+.An Hans Petter Selasky Aq hselasky@freebsd.org .
diff --git a/share/man/man4/usb2_ethernet.4 b/share/man/man4/usb2_ethernet.4
new file mode 100644
index 0000000..f951677
--- /dev/null
+++ b/share/man/man4/usb2_ethernet.4
@@ -0,0 +1,65 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_ETHERNET 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_ethernet
+.
+.Nd "USB ethernet container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_ethernet"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_ethernet_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB ethernet drivers.
+.
+When you plug an USB ethernet device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_image.4 b/share/man/man4/usb2_image.4
new file mode 100644
index 0000000..30c9ef6
--- /dev/null
+++ b/share/man/man4/usb2_image.4
@@ -0,0 +1,65 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_IMAGE 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_image
+.
+.Nd "USB image container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_image"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_image_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB image scanner drivers.
+.
+When you plug an USB image scanner device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_input.4 b/share/man/man4/usb2_input.4
new file mode 100644
index 0000000..cf48603
--- /dev/null
+++ b/share/man/man4/usb2_input.4
@@ -0,0 +1,66 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_INPUT 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_input
+.
+.Nd "USB input container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_input"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_input_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB input drivers.
+.
+When you plug an USB input device, like USB mouse, USB keyboard and USB
+HID device, the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_misc.4 b/share/man/man4/usb2_misc.4
new file mode 100644
index 0000000..e658f31
--- /dev/null
+++ b/share/man/man4/usb2_misc.4
@@ -0,0 +1,66 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_MISC 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_misc
+.
+.Nd "USB miscellaneous container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_misc"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_misc_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for various USB drivers that does not fit
+into into any other USB container module.
+.
+When you plug an USB miscellaneous device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_ndis.4 b/share/man/man4/usb2_ndis.4
new file mode 100644
index 0000000..4173c1b
--- /dev/null
+++ b/share/man/man4/usb2_ndis.4
@@ -0,0 +1,66 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_NDIS 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_ndis
+.
+.Nd "USB NDIS container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_ndis"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_ndis_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for various USB drivers that does not fit
+into into any other USB container module.
+.
+When you plug an USB NDIS device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_quirk.4 b/share/man/man4/usb2_quirk.4
new file mode 100644
index 0000000..55c5859
--- /dev/null
+++ b/share/man/man4/usb2_quirk.4
@@ -0,0 +1,64 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_QUIRK 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_quirk
+.
+.Nd "USB quirk container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_quirk"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_quirk_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB quirks.
+.
+USB quirks are workarounds for specific USB device problems. The
+.Nm
+module can be dynamically loaded and unloaded at any time.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_core 4
+.Xr usb2_controller 4
diff --git a/share/man/man4/usb2_serial.4 b/share/man/man4/usb2_serial.4
new file mode 100644
index 0000000..d3512cf
--- /dev/null
+++ b/share/man/man4/usb2_serial.4
@@ -0,0 +1,66 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_SERIAL 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_serial
+.
+.Nd "USB serial container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_serial"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_serial_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB serial and USB parallel port
+drivers.
+.
+When you plug an USB serial or USB parallel port device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_sound.4 b/share/man/man4/usb2_sound.4
new file mode 100644
index 0000000..1e70cea
--- /dev/null
+++ b/share/man/man4/usb2_sound.4
@@ -0,0 +1,65 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_SOUND 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_sound
+.
+.Nd "USB sound container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_sound"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_sound_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB sound and USB MIDI drivers.
+.
+When you plug an USB sound or USB MIDI device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_storage.4 b/share/man/man4/usb2_storage.4
new file mode 100644
index 0000000..9f85207
--- /dev/null
+++ b/share/man/man4/usb2_storage.4
@@ -0,0 +1,65 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_STORAGE 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_storage
+.
+.Nd "USB storage container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_storage"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_storage_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB storage drivers.
+.
+When you plug an USB storage device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/usb2_template.4 b/share/man/man4/usb2_template.4
new file mode 100644
index 0000000..06dc611
--- /dev/null
+++ b/share/man/man4/usb2_template.4
@@ -0,0 +1,84 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_TEMPLATE 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_template
+.
+.Nd "USB templates"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_template"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_template_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module implements various USB templates that are needed when
+programming an USB device side driver.
+.
+A USB template consists of an USB device descriptor, one or more USB
+configuration descriptors, one or more USB interface descriptors, one
+or more USB endpoint descriptors, USB strings and additional USB
+descriptors.
+.
+The USB template module currently has templates for USB Mass Storage,
+USB CDC Ethernet and Message Transfer Protocol.
+.
+USB templates are currently selected using the "hw.usb2.template"
+sysctl.
+.
+The "hw.usb2.template" value can be changed at any time, but will not
+have any effect until the USB device has been re-enumerated.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
+.Sh STANDARDS
+The
+.Nm
+module complies with the USB 2.0 standard.
+.Sh HISTORY
+The
+.Nm
+module was written by
+.An Hans Petter Selasky Aq hselasky@freebsd.org .
diff --git a/share/man/man4/usb2_wlan.4 b/share/man/man4/usb2_wlan.4
new file mode 100644
index 0000000..73ff75f
--- /dev/null
+++ b/share/man/man4/usb2_wlan.4
@@ -0,0 +1,65 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 2008 Hans Petter Selasky. 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.
+.\"
+.Dd September 21, 2008
+.Dt USB2_WLAN 4
+.Os
+.
+.Sh NAME
+.
+.
+.Nm usb2_wlan
+.
+.Nd "USB WLAN container module"
+.
+.
+.Sh SYNOPSIS
+To compile this module into the kernel, place the following line in
+your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device usb2_wlan"
+.Ed
+.Pp
+To load the module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+usb2_wlan_load="YES"
+.Ed
+.
+.Sh DESCRIPTION
+The
+.Nm
+module is a container module for all USB WLAN drivers.
+.
+When you plug an USB WLAN device the
+.Nm
+module will try to load the required driver for your device
+automatically.
+.
+.
+.
+.Sh SEE ALSO
+.Xr usb2_controller 4
+.Xr usb2_core 4
diff --git a/share/man/man4/uscanner.4 b/share/man/man4/uscanner.4
new file mode 100644
index 0000000..c135732
--- /dev/null
+++ b/share/man/man4/uscanner.4
@@ -0,0 +1,164 @@
+.\" Copyright (c) 2000, Jeroen Ruigrok van der Werven <asmodai@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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by Bill Paul.
+.\" 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 NICK HIBMA 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 NICK HIBMA OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd December 23, 2008
+.Dt USCANNER 4
+.Os
+.Sh NAME
+.Nm uscanner
+.Nd USB Scanners
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uscanner"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uscanner_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for scanners that attach to the USB port.
+For each scanner attached it will provide an entry like
+.Pa /dev/uscanner0
+in
+.Pa /dev .
+User-space programs, e.g. SANE,
+can in turn use the device entry throgh a suitable
+backend driver (see
+.Nm ports/graphics/sane-backends )
+to control the scanner itself.
+.Pp
+In case of multifunction USB devices (e.g. scanner/printer/card reader),
+this driver only attaches to the USB interface that controls
+the scanner; for the other USB interface you need separate drivers, e.g.
+.Nm ulpt ,
+.Nm umass ,
+and so on.
+.Pp
+.Nm usb
+and one of
+.Nm uhci
+or
+.Nm ohci
+must be configured in the kernel as well.
+.Sh HARDWARE
+Because there is no standard device class for USB scanners, this driver
+will only recognise devices whose USB IDs are explicitly listed in the
+table in the driver itself.
+.Pp
+The following devices are supported to date:
+.Pp
+.Bl -bullet -compact
+.It
+Acer Acerscan: 320U, 620U, 640U, 640BT, 1240U, C310U;
+.It
+AGFA SnapScan: 1212U, 1236U, e20, e25, e26, e40, e50, e52, SnapScan Touch;
+.It
+Avision 1200U
+.It
+Canon CanoScan: D660U, N656U, N676U, N1220U, LIDE 20, LIDE 25, LIDE 30;
+.It
+Epson Perfection: 610, 636U / 636Photo, 640U, 1200U / 1200Photo,
+1240U / 1240Photo, 1250, 1260, 1270,
+1600, 1640SU, 1650, 1660, 1670,
+2480,
+3200, 3500, 3590,
+4200, 4990;
+.It
+Epson: GT-8400UF, GT-9300UF, GT-9700F;
+.It
+Epson Stylus: Photo RX425, CX3650, DX-5000, DX-5050, CX5400, DX-6000,
+DX-6050, DX-8400/50 (and possibly more in the CX-5000 and DX-3800..DX-7000
+family);
+.It
+Hewlett Packard: Photosmart S20
+.It
+Hewlett Packard Scanjet: 2200C,
+3300C, 3400CSE,
+4100C, 4200C, 4300C,
+4470C,
+5200C, 5300C, 5400C,
+6200C, 6300C,
+8200C, 8250C, 8290C;
+.It
+KYE ColorPage Vivid-Pro
+.It
+Microtek Phantom: 336CX, C6;
+.It
+Microtek ScanMaker: V6UL V6USL, X6U;
+.It
+Minolta 5400
+.It
+Mustek: 600 CU, 1200 CU, 1200 UB, 1200 USB;
+.It
+Mustek BearPaw: 1200F, 1200TA;
+.It
+NatSemi BearPaw 1200
+.It
+Nikon CoolScan LS40 ED
+.It
+Primax 6200
+.It
+Primax Colorado: 1200u, 600u, USB 19200, USB 9600;
+.It
+Primax: G2-200, G2-300, G2-600, G2600, G2E-300, G2E-3002, G2E-600, G2E600,
+G2X-300,
+G600,
+ReadyScan 636i;
+.It
+Ultima 1200 UB Plus
+.It
+UMAX Astra: 1220U, 1236U, 2000U, 2100U, 2200U, 3400;
+.It
+Visioneer OneTouch: 3000, 5300, 7600, 6100, 6200, 8100, 8600;
+.El
+.Sh SEE ALSO
+.Xr ohci 4 ,
+.Xr uhci 4 ,
+.Xr usb 4
+.\".Sh HISTORY
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An Nick Hibma Aq n_hibma@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Jeroen Ruigrok van der Werven Aq asmodai@FreeBSD.org .
diff --git a/share/man/man4/uslcom.4 b/share/man/man4/uslcom.4
new file mode 100644
index 0000000..ec7a56b
--- /dev/null
+++ b/share/man/man4/uslcom.4
@@ -0,0 +1,97 @@
+.\" $OpenBSD: uslcom.4,v 1.6 2007/10/08 03:10:42 jcs Exp $
+.\"
+.\" Copyright (c) 2006 Jonathan Gray <jsg@openbsd.org>
+.\"
+.\" Permission to use, copy, modify, and distribute this software for any
+.\" purpose with or without fee is hereby granted, provided that the above
+.\" copyright notice and this permission notice appear in all copies.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 31, 2007
+.Dt USLCOM 4
+.Os
+.Sh NAME
+.Nm uslcom
+.Nd Silicon Laboratories CP2101/CP2102 based USB serial adapter
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uslcom"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uslcom_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports Silicon Laboratories CP2101/CP2102 based serial adapters.
+.Sh HARDWARE
+The following devices should work with the
+.Nm
+driver:
+.Pp
+.Bl -bullet -compact
+.It
+Argussoft ISP
+.It
+Baltech card reader
+.It
+Burnside Telecom Desktop Mobile
+.It
+chip45.com Crumb128 module
+.It
+Jablotron PC-60B
+.It
+Lipowsky Baby-JTAG
+.It
+Lipowsky Baby-LIN
+.It
+Lipowsky HARP-1
+.It
+Pololu USB to Serial
+.It
+Silicon Laboratories CP2101
+.It
+Silicon Laboratories CP2102
+.It
+Track Systems Traqmate
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Ox 4.0 .
+The first
+.Fx
+release to include it was
+.Fx 7.1 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Jonathan Gray Aq jsg@openbsd.org .
+.Sh CAVEATS
+Setting hardware flow control is not currently supported.
+.Pp
+Silicon Laboratories do not release any programming information
+on their products.
diff --git a/share/man/man4/utopia.4 b/share/man/man4/utopia.4
new file mode 100644
index 0000000..00020ea
--- /dev/null
+++ b/share/man/man4/utopia.4
@@ -0,0 +1,196 @@
+.\" Copyright (c) 2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 22, 2006
+.Dt UTOPIA 4
+.Os
+.Sh NAME
+.Nm utopia
+.Nd "driver module for ATM PHY chips"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device utopia"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+utopia_load="YES"
+.Ed
+.Sh DESCRIPTION
+This module is used by all ATM drivers for cards that use
+PMC-Sierra S/Uni and IDT77105/IDT77155
+chips to provide uniform functionality.
+The module implements status monitoring
+in either interrupt or polling mode, media option handling and application
+access to chip registers.
+.Pp
+The driver implements several sysctls that are accessible under the
+.Va hw.atm. Ns Ao Ar iface Ac Ns Va .\&
+tree, where
+.Ar iface
+is the name of the ATM interface:
+.Bl -tag -width indent
+.It Va phy_regs
+When reading this sysctl an array of 8-bit unsigned integers is returned
+containing all accessible chip registers starting at register 0.
+A register can be written by writing three 8-bit unsigned integers to the
+sysctl: the register number, the new value and a bit mask.
+This changes all bits in the register for which the corresponding bit in the
+mask is one to the bit values from value.
+Note that not all registers may
+be writeable.
+.It Va phy_loopback
+allows to put the interface in one of several loopback modes.
+Not all modes and all combinations of modes are supported on all chips.
+The possible modes are:
+.Bl -tag -width indent
+.It Dv UTP_LOOP_NONE Pq No 0x00
+No loopback, normal operation.
+.It Dv UTP_LOOP_TIME Pq No 0x01
+Timing source loopback.
+When this is set the transmitter's clock is
+derived from the receiver's clock.
+.It Dv UTP_LOOP_DIAG Pq No 0x02
+Diagnostic loopback.
+In this mode the receiver's input is connected to the
+transmitter's output.
+The receiver gets back everything that is sent.
+The
+transmitter operates normally.
+.It Dv UTP_LOOP_LINE Pq No 0x04
+Serial line loopback.
+This connects the line receiver to the line transmitter.
+The chip transmits all cells back that it receives.
+The receiver operates
+normally.
+.It Dv UTP_LOOP_PARAL Pq No 0x08
+Parallel diagnostic loopback.
+This feeds back all transmitted cells into the
+receiver between the parallel/serial converters.
+The transmitter
+operates normally.
+.It Dv UTP_LOOP_TWIST Pq No 0x10
+Twisted pair diagnostic loopback.
+Connects the high speed receive data to the
+high speed transmit data.
+All received data is sent back.
+The receiver
+operates normally.
+.It Dv UTP_LOOP_PATH Pq No 0x20
+Diagnostic path loopback.
+This connects the receiver input to the transmitter
+output just between the path overhead processor and the byte mux.
+The
+transmitter operates normally.
+.El
+.It Va phy_type
+This is the detected type of the phy chip.
+Currently the following chips are
+supported:
+.Bl -tag -width indent
+.It Dv UTP_TYPE_UNKNOWN Pq No 0
+The module could not determine the type of the PHY chip.
+.It Dv UTP_TYPE_SUNI_LITE Pq No 1
+PMC-5346 (S/Uni-Lite)
+.It Dv UTP_TYPE_SUNI_ULTRA Pq No 2
+PMC-5350 (S/Uni-Ultra)
+.It Dv UTP_TYPE_SUNI_622 Pq No 3
+PMC-5355 (S/Uni-622)
+.It Dv UTP_TYPE_IDT77105 Pq No 4
+IDT77105 (25.6MBit UTP interface)
+.It Dv UTP_TYPE_IDT77155 Pq No 5
+IDT77155 (155MBit interface)
+.El
+.It Va phy_name
+This is a string describing the type of the PHY chip.
+.It Va phy_stats
+Physical and some ATM layer statistics.
+These are the statistics usually
+provided by the chip.
+The data is a returned in the following structure:
+.Bd -literal
+struct utopia_stats1 {
+ uint32_t version; /* version of this struct */
+ uint32_t fill;
+ uint64_t rx_sbip; /* rx section BIP errors */
+ uint64_t rx_lbip; /* rx line BIP errors */
+ uint64_t rx_lfebe; /* rx line far end block errors */
+ uint64_t rx_pbip; /* rx path BIP errors */
+ uint64_t rx_pfebe; /* rx path far end block errors */
+ uint64_t rx_cells; /* received cells */
+ uint64_t rx_corr; /* correctable cell errors */
+ uint64_t rx_uncorr; /* uncorrectable cell errors */
+ uint64_t rx_symerr; /* symbol errors */
+ uint64_t tx_cells; /* transmitted cells */
+};
+.Ed
+.Pp
+The current version is 1.
+The statistics are updated from the chip once
+a second.
+On overflow the counters wrap to zero.
+Note that not all counters
+are meaningful for all PHY chips.
+The statistics are cleared by writing an
+arbitrary new value (the value is ignored).
+.El
+.Pp
+The
+.Nm
+module also interfaces with the ifmedia system.
+The module reports the current state of the carrier and will issue a
+warning message when the carrier state changes.
+While the physical media itself cannot be changed, several media options can:
+.Bl -tag -width indent
+.It Cm SDH
+If the PHY is a Sonet/SDH chip this flag switches the interface into SDH mode.
+If this option is not set (the default) the interface is in Sonet mode.
+.It Cm noscramb
+If the PHY is a Sonet/SDH chip disable scrambling.
+This may be useful for debugging purposes.
+.It Cm unassigned
+Normally the interface emits idle cells when there are no other cells to
+transmit.
+This changes the default cell type to unassigned cells.
+This
+may be needed for interworking with public networks.
+.El
+.Sh SEE ALSO
+.Xr en 4 ,
+.Xr fatm 4 ,
+.Xr hatm 4 ,
+.Xr patm 4 ,
+.Xr utopia 9
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man4/uvisor.4 b/share/man/man4/uvisor.4
new file mode 100644
index 0000000..ceffa89
--- /dev/null
+++ b/share/man/man4/uvisor.4
@@ -0,0 +1,148 @@
+.\" $NetBSD: uvisor.4,v 1.3 2001/01/23 21:31:10 augustss Exp $
+.\"
+.\" Copyright (c) 2000 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UVISOR 4
+.Os
+.Sh NAME
+.Nm uvisor
+.Nd "USB support for the PalmOS based PDAs"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uvisor"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uvisor_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for USB based PalmOS PDAs, like Handspring
+Visor, Palm Mxxx series, and Sony Clie.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+The device has several ports for different purposes, each of them gets its
+own
+.Xr ucom 4
+device.
+The attach message describes the purpose of each port.
+.Pp
+The usual Pilot tools can be used to access the attached device on the
+HotSync port.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following devices:
+.Pp
+.Bl -bullet -compact
+.It
+Aceeca Mez1000 RDA
+.It
+Handspring Treo
+.It
+Handspring Treo 600
+.It
+Handspring Visor
+.It
+Palm I705
+.It
+Palm M125
+.It
+Palm M130
+.It
+Palm M500
+.It
+Palm M505
+.It
+Palm M515
+.It
+Palm Tungsten T
+.It
+Palm Tungsten Z
+.It
+Palm Zire
+.It
+Palm Zire 31
+.It
+Sony Clie 4.0
+.It
+Sony Clie 4.1
+.It
+Sony Clie 5.0
+.It
+Sony Clie PEG-S500C
+.It
+Sony Clie NX60
+.It
+Sony Clie S360
+.It
+Sony Clie TJ37
+.El
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver was adopted from
+.Nx 1.5
+in August 2002.
+This manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+at that time.
+.Sh BUGS
+The code to provide multiple
+.Xr ucom 4
+instances has not yet been ported from
+.Nx .
+It is unclear whether this driver works in its
+current state.
diff --git a/share/man/man4/uvscom.4 b/share/man/man4/uvscom.4
new file mode 100644
index 0000000..269667b
--- /dev/null
+++ b/share/man/man4/uvscom.4
@@ -0,0 +1,101 @@
+.\" $NetBSD: uvscom.4,v 1.1 2002/03/19 15:17:49 augustss Exp $
+.\"
+.\" Copyright (c) 2002 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Lennart Augustsson.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd November 22, 2006
+.Dt UVSCOM 4
+.Os
+.Sh NAME
+.Nm uvscom
+.Nd USB support for SUNTAC Slipper U VS-10U serial adapters driver
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device uvscom"
+.Cd "device ucom"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+uvscom_load="YES"
+.Ed
+.Sh HARDWARE
+The
+.Nm
+driver supports the following adapters:
+.Pp
+.Bl -bullet -compact
+.It
+DDI Pocket Air H" C@rd
+.It
+DDI Pocket Air H" C@rd 64
+.It
+NTT P-in
+.It
+NTT P-in m@ster
+.El
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the SUNTAC Slipper U VS-10U chip.
+Slipper U is a PC Card to USB converter for data communication card
+adapters.
+.Pp
+The device is accessed through the
+.Xr ucom 4
+driver which makes it behave like a
+.Xr tty 4 .
+.Sh SEE ALSO
+.Xr tty 4 ,
+.Xr ucom 4 ,
+.Xr usb 4
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx
+and later in
+.Nx 1.6 .
+This manual page was adopted from
+.Nx
+by
+.An Tom Rhodes Aq trhodes@FreeBSD.org
+in April 2002.
diff --git a/share/man/man4/vga.4 b/share/man/man4/vga.4
new file mode 100644
index 0000000..b102d2f
--- /dev/null
+++ b/share/man/man4/vga.4
@@ -0,0 +1,185 @@
+.\"
+.\" Copyright (c) 1999
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd June 30, 1999
+.Dt VGA 4
+.Os
+.Sh NAME
+.Nm vga
+.Nd generic video card interface
+.Sh SYNOPSIS
+.Cd "options VESA"
+.Cd "options VESA_DEBUG=N"
+.Cd "options VGA_ALT_SEQACCESS"
+.Cd "options VGA_NO_FONT_LOADING"
+.Cd "options VGA_NO_MODE_CHANGE"
+.Cd "options VGA_SLOW_IOACCESS"
+.Cd "options VGA_WIDTH90"
+.Cd "device vga"
+.Pp
+In
+.Pa /boot/device.hints :
+.Cd hint.vga.0.at="isa"
+.Sh DESCRIPTION
+The
+.Nm
+driver is a generic video card driver which provides access to
+video cards.
+This driver is required for the console driver
+.Xr syscons 4 .
+The console driver will call the
+.Nm
+driver to manipulate video hardware (changing video modes, loading font, etc).
+.Pp
+The
+.Nm
+driver supports the standard video cards: MDA, CGA, EGA and VGA.
+In
+addition, the driver can utilize VESA BIOS extensions if the video card
+supports them.
+VESA support can either be statically included in the kernel
+or can be loaded as a separate module.
+.Pp
+In order to statically link the VESA support to the kernel, the
+.Dv VESA
+option (see below) must be defined in the kernel configuration file.
+.Pp
+The
+.Nm vesa
+module can be dynamically loaded into the kernel using
+.Xr kldload 8 .
+.Sh DRIVER CONFIGURATION
+.Ss Kernel Configuration Options
+The following kernel configuration options
+(see
+.Xr config 8 )
+can be used to control the
+.Nm
+driver.
+These options provide compatibility with certain VGA cards.
+.Bl -tag -width MOUSE
+.It Dv VGA_ALT_SEQACCESS
+You may want to try this option if the mouse pointer is not drawn correctly
+or the font does not seem to be loaded properly on the VGA card.
+However, it may cause flicker on some systems.
+.It Dv VGA_SLOW_IOACCESS
+Older VGA cards may require this option for proper operation.
+It makes the driver perform byte-wide I/O to VGA registers and
+slow down a little.
+.It Dv VGA_WIDTH90
+This option enables 90 column modes: 90x25, 90x30, 90x43, 90x50, 90x60.
+These modes are not always supported by the video card and the display.
+It is highly likely that LCD display cannot work with these modes.
+.El
+.Pp
+The following options add optional features to the driver.
+.Bl -tag -width MOUSE
+.It Dv VESA
+Add VESA BIOS support to the driver.
+If the VGA card has the VESA BIOS extension 1.2 or later,
+this option will utilize the VESA BIOS service to switch to high
+resolution modes.
+.It Dv VESA_DEBUG=N
+Set the VESA support debug level to
+.Fa N .
+The default value is zero, which suppresses all debugging output.
+.El
+.Pp
+The following options will remove some features from the
+.Nm
+driver and save kernel memory.
+.Bl -tag -width MOUSE
+.It Dv VGA_NO_FONT_LOADING
+The
+.Nm
+driver can load software font to EGA and VGA cards.
+This option removes this feature.
+Note that if you use this option and
+still wish to use the mouse on the console then you must also use the
+.Dv SC_ALT_MOUSE_IMAGE
+option.
+See
+.Xr syscons 4 .
+.It Dv VGA_NO_MODE_CHANGE
+This option prevents the driver from changing video modes.
+.El
+.\".Sh FILES
+.Sh EXAMPLES
+Your kernel configuration should normally have:
+.Pp
+.Dl "device vga"
+.Pp
+And you need the following line in
+.Pa /boot/device.hints .
+.Pp
+.Dl hint.vga.0.at="isa"
+.Pp
+The following lines should be included in the kernel configuration file
+in order to enable the VESA BIOS Extension support.
+.Pp
+.Dl "options VESA"
+.Dl "device vga"
+.Pp
+If you do not want VESA support included in the kernel, but
+want to use occasionally, do not add the
+.Dv VESA
+option.
+And load the
+.Nm vesa
+module as desired:
+.Pp
+.Dl kldload vesa
+.\".Sh DIAGNOSTICS
+.\".Sh CAVEATS
+.\".Sh BUGS
+.Sh SEE ALSO
+.Xr vgl 3 ,
+.Xr syscons 4 ,
+.Xr config 8 ,
+.Xr kldload 8 ,
+.Xr kldunload 8
+.Sh STANDARDS
+.Rs
+.%T "VESA BIOS Extension (VBE)"
+.%A Video Electronics Standards Association
+.Re
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.1 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was written by
+.An S\(/oren Schmidt Aq sos@FreeBSD.org
+and
+.An Kazutaka Yokota Aq yokota@FreeBSD.org .
+This manual page was written by
+.An Kazutaka Yokota .
diff --git a/share/man/man4/vge.4 b/share/man/man4/vge.4
new file mode 100644
index 0000000..2e9c7a5
--- /dev/null
+++ b/share/man/man4/vge.4
@@ -0,0 +1,210 @@
+.\" Copyright (c) 2004
+.\" Bill Paul <wpaul@windriver.com>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd February 21, 2007
+.Dt VGE 4
+.Os
+.Sh NAME
+.Nm vge
+.Nd "VIA Networking Technologies VT6122 PCI Gigabit Ethernet adapter driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device vge"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_vge_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for various NICs and embedded Ethernet interfaces
+based on the VIA Networking Technologies VT6122 Gigabit Ethernet
+controller chips.
+.Pp
+The VT6122 is a 33/66Mhz 64-bit PCI device which combines a tri-speed MAC with
+an integrated 10/100/1000 copper PHY.
+(Some older cards use an external PHY.)
+The MAC supports TCP/IP hardware
+checksums (IPv4 only), TCP large send, VLAN tag insertion and stripping,
+as well as VLAN filtering, a 64-entry CAM filter and a 64-entry VLAN filter,
+64-bit multicast hash filter, 4 separate transmit DMA queues, flow control
+and jumbo frames up to 16K in size.
+The VT6122 has a 16K receive FIFO and 48K transmit FIFO.
+.Pp
+The
+.Nm
+driver takes advantage of the VT6122's checksum offload and VLAN
+tagging features, as well as the jumbo frame and CAM filter support.
+The CAM filter is used for multicast address filtering to provide
+64 perfect multicast address filter support.
+If it is necessary for the interface to join more than 64 multicast
+groups, the driver will switch over to using the hash filter.
+.Pp
+The jumbo frame support can be enabled by setting the interface MTU
+to any value larger than the default of 1500 bytes, up to a maximum
+of 9000 bytes.
+The receive and transmit checksum offload support
+can be toggled on and off using the
+.Xr ifconfig 8
+utility.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm 10baseT/UTP"
+.It Cm autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to
+.Xr rc.conf 5 .
+.It Cm 10baseT/UTP
+Set 10Mbps operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.It Cm 1000baseTX
+Set 1000baseTX operation over twisted pair.
+The
+.Xr ifconfig 8
+.Cm mediaopt
+option can also be used to select either
+.Cm full-duplex
+or
+.Cm half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Bl -tag -width ".Cm full-duplex"
+.It Cm full-duplex
+Force full duplex operation.
+.It Cm half-duplex
+Force half duplex operation.
+.El
+.Pp
+The
+.Nm
+driver also supports one special link option for 1000baseTX cards:
+.Bl -tag -width ".Cm link0"
+.It Cm link0
+With 1000baseTX cards, establishing a link between two ports requires
+that one port be configured as a master and the other a slave.
+With autonegotiation,
+the master/slave settings will be chosen automatically.
+However when manually selecting the link state, it is necessary to
+force one side of the link to be a master and the other a slave.
+The
+.Nm
+driver configures the ports as slaves by default.
+Setting the
+.Cm link0
+flag with
+.Xr ifconfig 8
+will set a port as a master instead.
+.El
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports VIA Networking VT3119 and VT6122 based
+Gigabit Ethernet adapters including:
+.Pp
+.Bl -bullet -compact
+.It
+VIA Networking LAN-on-motherboard Gigabit Ethernet
+.It
+ZyXEL GN650-T 64-bit PCI Gigabit Ethernet NIC (ZX1701)
+.It
+ZyXEL GN670-T 32-bit PCI Gigabit Ethernet NIC (ZX1702)
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "vge%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "vge%d: couldn't map ports"
+A fatal initialization error has occurred.
+.It "vge%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "vge%d: failed to enable memory mapping!"
+The driver failed to initialize PCI shared memory mapping.
+This might
+happen if the card is not in a bus-master slot.
+.It "vge%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr vlan 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 5.3 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@windriver.com .
diff --git a/share/man/man4/vinum.4 b/share/man/man4/vinum.4
new file mode 100644
index 0000000..1808186
--- /dev/null
+++ b/share/man/man4/vinum.4
@@ -0,0 +1,1175 @@
+.\" Hey, Emacs, edit this file in -*- nroff-fill -*- mode
+.\"-
+.\" Copyright (c) 1997, 1998, 2003
+.\" Nan Yang Computer Services Limited. All rights reserved.
+.\"
+.\" This software is distributed under the so-called ``Berkeley
+.\" License'':
+.\"
+.\" 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 Nan Yang Computer
+.\" Services Limited.
+.\" 4. Neither the name of the Company 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 ``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 company 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$
+.\"
+.Dd May 16, 2002
+.Dt VINUM 4
+.Os
+.Sh NAME
+.Nm vinum
+.Nd Logical Volume Manager
+.Sh SYNOPSIS
+.Cd "device vinum"
+.Sh DESCRIPTION
+.Nm
+is a logical volume manager inspired by, but not derived from, the Veritas
+Volume Manager.
+It provides the following features:
+.Bl -bullet
+.It
+It provides device-independent logical disks, called
+.Em volumes .
+Volumes are
+not restricted to the size of any disk on the system.
+.It
+The volumes consist of one or more
+.Em plexes ,
+each of which contain the
+entire address space of a volume.
+This represents an implementation of RAID-1
+(mirroring).
+Multiple plexes can also be used for:
+.\" XXX What about sparse plexes? Do we want them?
+.Bl -bullet
+.It
+Increased read throughput.
+.Nm
+will read data from the least active disk, so if a volume has plexes on multiple
+disks, more data can be read in parallel.
+.Nm
+reads data from only one plex, but it writes data to all plexes.
+.It
+Increased reliability.
+By storing plexes on different disks, data will remain
+available even if one of the plexes becomes unavailable.
+In comparison with a
+RAID-5 plex (see below), using multiple plexes requires more storage space, but
+gives better performance, particularly in the case of a drive failure.
+.It
+Additional plexes can be used for on-line data reorganization.
+By attaching an
+additional plex and subsequently detaching one of the older plexes, data can be
+moved on-line without compromising access.
+.It
+An additional plex can be used to obtain a consistent dump of a file system.
+By
+attaching an additional plex and detaching at a specific time, the detached plex
+becomes an accurate snapshot of the file system at the time of detachment.
+.\" Make sure to flush!
+.El
+.It
+Each plex consists of one or more logical disk slices, called
+.Em subdisks .
+Subdisks are defined as a contiguous block of physical disk storage.
+A plex may
+consist of any reasonable number of subdisks (in other words, the real limit is
+not the number, but other factors, such as memory and performance, associated
+with maintaining a large number of subdisks).
+.It
+A number of mappings between subdisks and plexes are available:
+.Bl -bullet
+.It
+.Em "Concatenated plexes"
+consist of one or more subdisks, each of which
+is mapped to a contiguous part of the plex address space.
+.It
+.Em "Striped plexes"
+consist of two or more subdisks of equal size.
+The file
+address space is mapped in
+.Em stripes ,
+integral fractions of the subdisk
+size.
+Consecutive plex address space is mapped to stripes in each subdisk in
+turn.
+.if t \{\
+.ig
+.\" FIXME
+.br
+.ne 1.5i
+.PS
+move right 2i
+down
+SD0: box
+SD1: box
+SD2: box
+
+"plex 0" at SD0.n+(0,.2)
+"subdisk 0" rjust at SD0.w-(.2,0)
+"subdisk 1" rjust at SD1.w-(.2,0)
+"subdisk 2" rjust at SD2.w-(.2,0)
+.PE
+..
+.\}
+The subdisks of a striped plex must all be the same size.
+.It
+.Em "RAID-5 plexes"
+require at least three equal-sized subdisks.
+They
+resemble striped plexes, except that in each stripe, one subdisk stores parity
+information.
+This subdisk changes in each stripe: in the first stripe, it is the
+first subdisk, in the second it is the second subdisk, etc.
+In the event of a
+single disk failure,
+.Nm
+will recover the data based on the information stored on the remaining subdisks.
+This mapping is particularly suited to read-intensive access.
+The subdisks of a
+RAID-5 plex must all be the same size.
+.\" Make sure to flush!
+.El
+.It
+.Em Drives
+are the lowest level of the storage hierarchy.
+They represent disk special
+devices.
+.It
+.Nm
+offers automatic startup.
+Unlike
+.Ux
+file systems,
+.Nm
+volumes contain all the configuration information needed to ensure that they are
+started correctly when the subsystem is enabled.
+This is also a significant
+advantage over the Veritas\(tm File System.
+This feature regards the presence
+of the volumes.
+It does not mean that the volumes will be mounted
+automatically, since the standard startup procedures with
+.Pa /etc/fstab
+perform this function.
+.El
+.Sh KERNEL CONFIGURATION
+.Nm
+is currently supplied as a KLD module, and does not require
+configuration.
+As with other KLDs, it is absolutely necessary to match the KLD
+to the version of the operating system.
+Failure to do so will cause
+.Nm
+to issue an error message and terminate.
+.Pp
+It is possible to configure
+.Nm
+in the kernel, but this is not recommended.
+To do so, add this line to the
+kernel configuration file:
+.Pp
+.D1 Cd "device vinum"
+.Ss Debug Options
+The current version of
+.Nm ,
+both the kernel module and the user program
+.Xr gvinum 8 ,
+include significant debugging support.
+It is not recommended to remove
+this support at the moment, but if you do you must remove it from both the
+kernel and the user components.
+To do this, edit the files
+.Pa /usr/src/sbin/vinum/Makefile
+and
+.Pa /usr/src/sys/modules/vinum/Makefile
+and edit the
+.Va CFLAGS
+variable to remove the
+.Li -DVINUMDEBUG
+option.
+If you have
+configured
+.Nm
+into the kernel, either specify the line
+.Pp
+.D1 Cd "options VINUMDEBUG"
+.Pp
+in the kernel configuration file or remove the
+.Li -DVINUMDEBUG
+option from
+.Pa /usr/src/sbin/vinum/Makefile
+as described above.
+.Pp
+If the
+.Va VINUMDEBUG
+variables do not match,
+.Xr gvinum 8
+will fail with a message
+explaining the problem and what to do to correct it.
+.Ss Other Options
+.Cd "options VINUM_AUTOSTART"
+.Pp
+Make
+.Nm
+automatically scan all available disks at attach time.
+This is a deprecated way that is primarily intended for environments
+that do not want to rely on kernel environment variables set by
+.Xr loader 8 .
+.Pp
+.Nm
+was previously available in two versions: a freely available version which did
+not contain RAID-5 functionality, and a full version including RAID-5
+functionality, which was available only from Cybernet Systems Inc.
+The present
+version of
+.Nm
+includes the RAID-5 functionality.
+.Sh RUNNING VINUM
+.Nm
+is part of the base
+.Fx
+system.
+It does not require installation.
+To start it, start the
+.Xr gvinum 8
+program, which will load the KLD if it is not already present.
+Before using
+.Nm ,
+it must be configured.
+See
+.Xr gvinum 8
+for information on how to create a
+.Nm
+configuration.
+.Pp
+Normally, you start a configured version of
+.Nm
+at boot time.
+Set the variable
+.Va start_vinum
+in
+.Pa /etc/rc.conf
+to
+.Dq Li YES
+to start
+.Nm
+at boot time.
+(See
+.Xr rc.conf 5
+for more details.)
+.Pp
+If
+.Nm
+is loaded as a KLD (the recommended way), the
+.Nm vinum Cm stop
+command will unload it
+(see
+.Xr gvinum 8 ) .
+You can also do this with the
+.Xr kldunload 8
+command.
+.Pp
+The KLD can only be unloaded when idle, in other words when no volumes are
+mounted and no other instances of the
+.Xr gvinum 8
+program are active.
+Unloading the KLD does not harm the data in the volumes.
+.Ss Configuring and Starting Objects
+Use the
+.Xr gvinum 8
+utility to configure and start
+.Nm
+objects.
+.Sh AUTOMATIC STARTUP
+The
+.Nm
+subsystem can be automatically started at attach time.
+There are two kernel environment variables that can be set in
+.Xr loader.conf 5
+to accomplish this.
+.Bl -tag -width ".Va vinum.autostart" -offset indent
+.It Va vinum.autostart
+If this variable is set (to any value), the attach function will attempt
+to scan all available disks for valid
+.Nm
+configuration records.
+This is the preferred way if automatic startup is desired.
+.Pp
+Example:
+.Dl vinum.autostart="YES"
+.It Va vinum.drives
+Alternatively, this variable can enumerate a list of disk devices
+to scan for configuration records.
+Note that only the
+.Dq bare
+device names need to be given, since
+.Nm
+will automatically scan all possible slices and partitions.
+.Pp
+Example:
+.Dl vinum.drives="da0 da1"
+.El
+.Pp
+If automatic startup is used, it is not necessary to set the
+.Va start_vinum
+variable of
+.Xr rc.conf 5 .
+Note that if
+.Nm
+is to supply to the volume for the root file system, it is necessary
+to start the subsystem early.
+This can be achieved by specifying
+.Pp
+.Dl vinum_load="YES"
+.Pp
+in
+.Xr loader.conf 5 .
+.Sh IOCTL CALLS
+.Xr ioctl 2
+calls are intended for the use of the
+.Xr gvinum 8
+configuration program only.
+They are described in the header file
+.Pa /sys/dev/vinum/vinumio.h .
+.Ss Disk Labels
+Conventional disk special devices have a
+.Em "disk label"
+in the second sector of the device.
+See
+.Xr disklabel 5
+for more details.
+This disk label describes the layout of the partitions within
+the device.
+.Nm
+does not subdivide volumes, so volumes do not contain a physical disk label.
+For convenience,
+.Nm
+implements the ioctl calls
+.Dv DIOCGDINFO
+(get disk label),
+.Dv DIOCGPART
+(get partition information),
+.Dv DIOCWDINFO
+(write partition information) and
+.Dv DIOCSDINFO
+(set partition information).
+.Dv DIOCGDINFO
+and
+.Dv DIOCGPART
+refer to an internal
+representation of the disk label which is not present on the volume.
+As a
+result, the
+.Fl r
+option of
+.Xr disklabel 8 ,
+which reads the
+.Dq "raw disk" ,
+will fail.
+.Pp
+In general,
+.Xr disklabel 8
+serves no useful purpose on a
+.Nm
+volume.
+If you run it, it will show you
+three partitions,
+.Ql a ,
+.Ql b
+and
+.Ql c ,
+all the same except for the
+.Va fstype ,
+for example:
+.Bd -literal
+3 partitions:
+# size offset fstype [fsize bsize bps/cpg]
+ a: 2048 0 4.2BSD 1024 8192 0 # (Cyl. 0 - 0)
+ b: 2048 0 swap # (Cyl. 0 - 0)
+ c: 2048 0 unused 0 0 # (Cyl. 0 - 0)
+.Ed
+.Pp
+.Nm
+ignores the
+.Dv DIOCWDINFO
+and
+.Dv DIOCSDINFO
+ioctls, since there is nothing to change.
+As a result, any attempt to modify the disk label will be silently ignored.
+.Sh MAKING FILE SYSTEMS
+Since
+.Nm
+volumes do not contain partitions, the names do not need to conform to the
+standard rules for naming disk partitions.
+For a physical disk partition, the
+last letter of the device name specifies the partition identifier (a to h).
+.Nm
+volumes need not conform to this convention, but if they do not,
+.Xr newfs 8
+will complain that it cannot determine the partition.
+To solve this problem,
+use the
+.Fl v
+flag to
+.Xr newfs 8 .
+For example, if you have a volume
+.Pa concat ,
+use the following command to create a UFS file system on it:
+.Pp
+.Dl "newfs -v /dev/vinum/concat"
+.Sh OBJECT NAMING
+.Nm
+assigns default names to plexes and subdisks, although they may be overridden.
+We do not recommend overriding the default names.
+Experience with the
+Veritas\(tm
+volume manager, which allows arbitrary naming of objects, has shown that this
+flexibility does not bring a significant advantage, and it can cause confusion.
+.Pp
+Names may contain any non-blank character, but it is recommended to restrict
+them to letters, digits and the underscore characters.
+The names of volumes,
+plexes and subdisks may be up to 64 characters long, and the names of drives may
+up to 32 characters long.
+When choosing volume and plex names, bear in mind
+that automatically generated plex and subdisk names are longer than the name
+from which they are derived.
+.Bl -bullet
+.It
+When
+.Nm
+creates or deletes objects, it creates a directory
+.Pa /dev/vinum ,
+in which it makes device entries for each volume it finds.
+It also creates
+subdirectories,
+.Pa /dev/vinum/plex
+and
+.Pa /dev/vinum/sd ,
+in which it stores device entries for plexes and subdisks.
+In addition, it creates two more directories,
+.Pa /dev/vinum/vol
+and
+.Pa /dev/vinum/drive ,
+in which it stores hierarchical information for volumes and drives.
+.It
+In addition,
+.Nm
+creates three super-devices,
+.Pa /dev/vinum/control ,
+.Pa /dev/vinum/Control
+and
+.Pa /dev/vinum/controld .
+.Pa /dev/vinum/control
+is used by
+.Xr gvinum 8
+when it has been compiled without the
+.Dv VINUMDEBUG
+option,
+.Pa /dev/vinum/Control
+is used by
+.Xr gvinum 8
+when it has been compiled with the
+.Dv VINUMDEBUG
+option, and
+.Pa /dev/vinum/controld
+is used by the
+.Nm
+daemon.
+The two control devices for
+.Xr gvinum 8
+are used to synchronize the debug status of kernel and user modules.
+.It
+Unlike
+.Ux
+drives,
+.Nm
+volumes are not subdivided into partitions, and thus do not contain a disk
+label.
+Unfortunately, this confuses a number of utilities, notably
+.Xr newfs 8 ,
+which normally tries to interpret the last letter of a
+.Nm
+volume name as a partition identifier.
+If you use a volume name which does not
+end in the letters
+.Ql a
+to
+.Ql c ,
+you must use the
+.Fl v
+flag to
+.Xr newfs 8
+in order to tell it to ignore this convention.
+.\"
+.It
+Plexes do not need to be assigned explicit names.
+By default, a plex name is
+the name of the volume followed by the letters
+.Pa .p
+and the number of the
+plex.
+For example, the plexes of volume
+.Pa vol3
+are called
+.Pa vol3.p0 , vol3.p1
+and so on.
+These names can be overridden, but it is not recommended.
+.It
+Like plexes, subdisks are assigned names automatically, and explicit naming is
+discouraged.
+A subdisk name is the name of the plex followed by the letters
+.Pa .s
+and a number identifying the subdisk.
+For example, the subdisks of
+plex
+.Pa vol3.p0
+are called
+.Pa vol3.p0.s0 , vol3.p0.s1
+and so on.
+.It
+By contrast,
+.Em drives
+must be named.
+This makes it possible to move a drive to a different location
+and still recognize it automatically.
+Drive names may be up to 32 characters
+long.
+.El
+.Ss Example
+Assume the
+.Nm
+objects described in the section
+.Sx "CONFIGURATION FILE"
+in
+.Xr gvinum 8 .
+The directory
+.Pa /dev/vinum
+looks like:
+.Bd -literal -offset indent
+# ls -lR /dev/vinum
+total 5
+brwxr-xr-- 1 root wheel 25, 2 Mar 30 16:08 concat
+brwx------ 1 root wheel 25, 0x40000000 Mar 30 16:08 control
+brwx------ 1 root wheel 25, 0x40000001 Mar 30 16:08 controld
+drwxrwxrwx 2 root wheel 512 Mar 30 16:08 drive
+drwxrwxrwx 2 root wheel 512 Mar 30 16:08 plex
+drwxrwxrwx 2 root wheel 512 Mar 30 16:08 rvol
+drwxrwxrwx 2 root wheel 512 Mar 30 16:08 sd
+brwxr-xr-- 1 root wheel 25, 3 Mar 30 16:08 strcon
+brwxr-xr-- 1 root wheel 25, 1 Mar 30 16:08 stripe
+brwxr-xr-- 1 root wheel 25, 0 Mar 30 16:08 tinyvol
+drwxrwxrwx 7 root wheel 512 Mar 30 16:08 vol
+brwxr-xr-- 1 root wheel 25, 4 Mar 30 16:08 vol5
+
+/dev/vinum/drive:
+total 0
+brw-r----- 1 root operator 4, 15 Oct 21 16:51 drive2
+brw-r----- 1 root operator 4, 31 Oct 21 16:51 drive4
+
+/dev/vinum/plex:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x10000002 Mar 30 16:08 concat.p0
+brwxr-xr-- 1 root wheel 25, 0x10010002 Mar 30 16:08 concat.p1
+brwxr-xr-- 1 root wheel 25, 0x10000003 Mar 30 16:08 strcon.p0
+brwxr-xr-- 1 root wheel 25, 0x10010003 Mar 30 16:08 strcon.p1
+brwxr-xr-- 1 root wheel 25, 0x10000001 Mar 30 16:08 stripe.p0
+brwxr-xr-- 1 root wheel 25, 0x10000000 Mar 30 16:08 tinyvol.p0
+brwxr-xr-- 1 root wheel 25, 0x10000004 Mar 30 16:08 vol5.p0
+brwxr-xr-- 1 root wheel 25, 0x10010004 Mar 30 16:08 vol5.p1
+
+/dev/vinum/sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20000002 Mar 30 16:08 concat.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100002 Mar 30 16:08 concat.p0.s1
+brwxr-xr-- 1 root wheel 25, 0x20010002 Mar 30 16:08 concat.p1.s0
+brwxr-xr-- 1 root wheel 25, 0x20000003 Mar 30 16:08 strcon.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100003 Mar 30 16:08 strcon.p0.s1
+brwxr-xr-- 1 root wheel 25, 0x20010003 Mar 30 16:08 strcon.p1.s0
+brwxr-xr-- 1 root wheel 25, 0x20110003 Mar 30 16:08 strcon.p1.s1
+brwxr-xr-- 1 root wheel 25, 0x20000001 Mar 30 16:08 stripe.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100001 Mar 30 16:08 stripe.p0.s1
+brwxr-xr-- 1 root wheel 25, 0x20000000 Mar 30 16:08 tinyvol.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100000 Mar 30 16:08 tinyvol.p0.s1
+brwxr-xr-- 1 root wheel 25, 0x20000004 Mar 30 16:08 vol5.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100004 Mar 30 16:08 vol5.p0.s1
+brwxr-xr-- 1 root wheel 25, 0x20010004 Mar 30 16:08 vol5.p1.s0
+brwxr-xr-- 1 root wheel 25, 0x20110004 Mar 30 16:08 vol5.p1.s1
+
+/dev/vinum/vol:
+total 5
+brwxr-xr-- 1 root wheel 25, 2 Mar 30 16:08 concat
+drwxr-xr-x 4 root wheel 512 Mar 30 16:08 concat.plex
+brwxr-xr-- 1 root wheel 25, 3 Mar 30 16:08 strcon
+drwxr-xr-x 4 root wheel 512 Mar 30 16:08 strcon.plex
+brwxr-xr-- 1 root wheel 25, 1 Mar 30 16:08 stripe
+drwxr-xr-x 3 root wheel 512 Mar 30 16:08 stripe.plex
+brwxr-xr-- 1 root wheel 25, 0 Mar 30 16:08 tinyvol
+drwxr-xr-x 3 root wheel 512 Mar 30 16:08 tinyvol.plex
+brwxr-xr-- 1 root wheel 25, 4 Mar 30 16:08 vol5
+drwxr-xr-x 4 root wheel 512 Mar 30 16:08 vol5.plex
+
+/dev/vinum/vol/concat.plex:
+total 2
+brwxr-xr-- 1 root wheel 25, 0x10000002 Mar 30 16:08 concat.p0
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 concat.p0.sd
+brwxr-xr-- 1 root wheel 25, 0x10010002 Mar 30 16:08 concat.p1
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 concat.p1.sd
+
+/dev/vinum/vol/concat.plex/concat.p0.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20000002 Mar 30 16:08 concat.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100002 Mar 30 16:08 concat.p0.s1
+
+/dev/vinum/vol/concat.plex/concat.p1.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20010002 Mar 30 16:08 concat.p1.s0
+
+/dev/vinum/vol/strcon.plex:
+total 2
+brwxr-xr-- 1 root wheel 25, 0x10000003 Mar 30 16:08 strcon.p0
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 strcon.p0.sd
+brwxr-xr-- 1 root wheel 25, 0x10010003 Mar 30 16:08 strcon.p1
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 strcon.p1.sd
+
+/dev/vinum/vol/strcon.plex/strcon.p0.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20000003 Mar 30 16:08 strcon.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100003 Mar 30 16:08 strcon.p0.s1
+
+/dev/vinum/vol/strcon.plex/strcon.p1.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20010003 Mar 30 16:08 strcon.p1.s0
+brwxr-xr-- 1 root wheel 25, 0x20110003 Mar 30 16:08 strcon.p1.s1
+
+/dev/vinum/vol/stripe.plex:
+total 1
+brwxr-xr-- 1 root wheel 25, 0x10000001 Mar 30 16:08 stripe.p0
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 stripe.p0.sd
+
+/dev/vinum/vol/stripe.plex/stripe.p0.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20000001 Mar 30 16:08 stripe.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100001 Mar 30 16:08 stripe.p0.s1
+
+/dev/vinum/vol/tinyvol.plex:
+total 1
+brwxr-xr-- 1 root wheel 25, 0x10000000 Mar 30 16:08 tinyvol.p0
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 tinyvol.p0.sd
+
+/dev/vinum/vol/tinyvol.plex/tinyvol.p0.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20000000 Mar 30 16:08 tinyvol.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100000 Mar 30 16:08 tinyvol.p0.s1
+
+/dev/vinum/vol/vol5.plex:
+total 2
+brwxr-xr-- 1 root wheel 25, 0x10000004 Mar 30 16:08 vol5.p0
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 vol5.p0.sd
+brwxr-xr-- 1 root wheel 25, 0x10010004 Mar 30 16:08 vol5.p1
+drwxr-xr-x 2 root wheel 512 Mar 30 16:08 vol5.p1.sd
+
+/dev/vinum/vol/vol5.plex/vol5.p0.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20000004 Mar 30 16:08 vol5.p0.s0
+brwxr-xr-- 1 root wheel 25, 0x20100004 Mar 30 16:08 vol5.p0.s1
+
+/dev/vinum/vol/vol5.plex/vol5.p1.sd:
+total 0
+brwxr-xr-- 1 root wheel 25, 0x20010004 Mar 30 16:08 vol5.p1.s0
+brwxr-xr-- 1 root wheel 25, 0x20110004 Mar 30 16:08 vol5.p1.s1
+.Ed
+.Pp
+In the case of unattached plexes and subdisks, the naming is reversed.
+Subdisks
+are named after the disk on which they are located, and plexes are named after
+the subdisk.
+.\" XXX
+.Bf -symbolic
+This mapping is still to be determined.
+.Ef
+.Ss Object States
+Each
+.Nm
+object has a
+.Em state
+associated with it.
+.Nm
+uses this state to determine the handling of the object.
+.Ss Volume States
+Volumes may have the following states:
+.Bl -hang -width 14n
+.It Em down
+The volume is completely inaccessible.
+.It Em up
+The volume is up and at least partially functional.
+Not all plexes may be
+available.
+.El
+.Ss "Plex States"
+Plexes may have the following states:
+.Bl -hang -width 14n
+.It Em referenced
+A plex entry which has been referenced as part of a volume, but which is
+currently not known.
+.It Em faulty
+A plex which has gone completely down because of I/O errors.
+.It Em down
+A plex which has been taken down by the administrator.
+.It Em initializing
+A plex which is being initialized.
+.El
+.Pp
+The remaining states represent plexes which are at least partially up.
+.Bl -hang -width 14n
+.It Em corrupt
+A plex entry which is at least partially up.
+Not all subdisks are available,
+and an inconsistency has occurred.
+If no other plex is uncorrupted, the volume
+is no longer consistent.
+.It Em degraded
+A RAID-5 plex entry which is accessible, but one subdisk is down, requiring
+recovery for many I/O requests.
+.It Em flaky
+A plex which is really up, but which has a reborn subdisk which we do not
+completely trust, and which we do not want to read if we can avoid it.
+.It Em up
+A plex entry which is completely up.
+All subdisks are up.
+.El
+.Ss "Subdisk States"
+Subdisks can have the following states:
+.Bl -hang -width 14n
+.It Em empty
+A subdisk entry which has been created completely.
+All fields are correct, and
+the disk has been updated, but the on the disk is not valid.
+.It Em referenced
+A subdisk entry which has been referenced as part of a plex, but which is
+currently not known.
+.It Em initializing
+A subdisk entry which has been created completely and which is currently being
+initialized.
+.El
+.Pp
+The following states represent invalid data.
+.Bl -hang -width 14n
+.It Em obsolete
+A subdisk entry which has been created completely.
+All fields are correct, the
+config on disk has been updated, and the data was valid, but since then the
+drive has been taken down, and as a result updates have been missed.
+.It Em stale
+A subdisk entry which has been created completely.
+All fields are correct, the
+disk has been updated, and the data was valid, but since then the drive has been
+crashed and updates have been lost.
+.El
+.Pp
+The following states represent valid, inaccessible data.
+.Bl -hang -width 14n
+.It Em crashed
+A subdisk entry which has been created completely.
+All fields are correct, the
+disk has been updated, and the data was valid, but since then the drive has gone
+down.
+No attempt has been made to write to the subdisk since the crash, so the
+data is valid.
+.It Em down
+A subdisk entry which was up, which contained valid data, and which was taken
+down by the administrator.
+The data is valid.
+.It Em reviving
+The subdisk is currently in the process of being revived.
+We can write but not
+read.
+.El
+.Pp
+The following states represent accessible subdisks with valid data.
+.Bl -hang -width 14n
+.It Em reborn
+A subdisk entry which has been created completely.
+All fields are correct, the
+disk has been updated, and the data was valid, but since then the drive has gone
+down and up again.
+No updates were lost, but it is possible that the subdisk
+has been damaged.
+We will not read from this subdisk if we have a choice.
+If this
+is the only subdisk which covers this address space in the plex, we set its
+state to up under these circumstances, so this status implies that there is
+another subdisk to fulfill the request.
+.It Em up
+A subdisk entry which has been created completely.
+All fields are correct, the
+disk has been updated, and the data is valid.
+.El
+.Ss "Drive States"
+Drives can have the following states:
+.Bl -hang -width 14n
+.It Em referenced
+At least one subdisk refers to the drive, but it is not currently accessible to
+the system.
+No device name is known.
+.It Em down
+The drive is not accessible.
+.It Em up
+The drive is up and running.
+.El
+.Sh SEE ALSO
+.Xr disklabel 5 ,
+.Xr loader.conf 5 ,
+.Xr disklabel 8 ,
+.Xr gvinum 8 ,
+.Xr loader 8 ,
+.Xr newfs 8
+.Sh HISTORY
+.Nm
+first appeared in
+.Fx 3.0 .
+The RAID-5 component of
+.Nm
+was developed by Cybernet Inc.\&
+.Pq Pa http://www.cybernet.com/ ,
+for its NetMAX product.
+.Sh AUTHORS
+.An Greg Lehey Aq grog@lemis.com .
+.Sh BUGS
+.Nm
+is a new product.
+Bugs can be expected.
+The configuration mechanism is not yet
+fully functional.
+If you have difficulties, please look at the section
+.Sx "DEBUGGING PROBLEMS WITH VINUM"
+before reporting problems.
+.Pp
+Kernels with the
+.Nm
+device appear to work, but are not supported.
+If you have trouble with
+this configuration, please first replace the kernel with a
+.No non- Ns Nm
+kernel and test with the KLD module.
+.Pp
+Detection of differences between the version of the kernel and the KLD is not
+yet implemented.
+.Pp
+The RAID-5 functionality is new in
+.Fx 3.3 .
+Some problems have been
+reported with
+.Nm
+in combination with soft updates, but these are not reproducible on all
+systems.
+If you are planning to use
+.Nm
+in a production environment, please test carefully.
+.Sh DEBUGGING PROBLEMS WITH VINUM
+Solving problems with
+.Nm
+can be a difficult affair.
+This section suggests some approaches.
+.Ss Configuration problems
+It is relatively easy (too easy) to run into problems with the
+.Nm
+configuration.
+If you do, the first thing you should do is stop configuration
+updates:
+.Pp
+.Dl "vinum setdaemon 4"
+.Pp
+This will stop updates and any further corruption of the on-disk configuration.
+.Pp
+Next, look at the on-disk configuration, using a Bourne-style shell:
+.Bd -literal
+rm -f log
+for i in /dev/da0s1h /dev/da1s1h /dev/da2s1h /dev/da3s1h; do
+ (dd if=$i skip=8 count=6|tr -d '\e000-\e011\e200-\e377'; echo) >> log
+done
+.Ed
+.Pp
+The names of the devices are the names of all
+.Nm
+slices.
+The file
+.Pa log
+should then contain something like this:
+.Bd -literal
+.if t .ps -3
+.if t .vs -3
+IN VINOpanic.lemis.comdrive1}6E7~^K6T^Yfoovolume obj state up
+volume src state up
+volume raid state down
+volume r state down
+volume foo state up
+plex name obj.p0 state corrupt org concat vol obj
+plex name obj.p1 state corrupt org striped 128b vol obj
+plex name src.p0 state corrupt org striped 128b vol src
+plex name src.p1 state up org concat vol src
+plex name raid.p0 state faulty org disorg vol raid
+plex name r.p0 state faulty org disorg vol r
+plex name foo.p0 state up org concat vol foo
+plex name foo.p1 state faulty org concat vol foo
+sd name obj.p0.s0 drive drive2 plex obj.p0 state reborn len 409600b driveoffset 265b plexoffset 0b
+sd name obj.p0.s1 drive drive4 plex obj.p0 state up len 409600b driveoffset 265b plexoffset 409600b
+sd name obj.p1.s0 drive drive1 plex obj.p1 state up len 204800b driveoffset 265b plexoffset 0b
+sd name obj.p1.s1 drive drive2 plex obj.p1 state reborn len 204800b driveoffset 409865b plexoffset 128b
+sd name obj.p1.s2 drive drive3 plex obj.p1 state up len 204800b driveoffset 265b plexoffset 256b
+sd name obj.p1.s3 drive drive4 plex obj.p1 state up len 204800b driveoffset 409865b plexoffset 384b
+.if t .vs
+.if t .ps
+.Ed
+.Pp
+The first line contains the
+.Nm
+label and must start with the text
+.Dq Li "IN VINO" .
+It also contains the name of the system.
+The exact definition is contained in
+.Pa /usr/src/sys/dev/vinum/vinumvar.h .
+The saved configuration starts in the middle of the line with the text
+.Dq Li "volume obj state up"
+and starts in sector 9 of the disk.
+The rest of the output shows the remainder of the on-disk configuration.
+It
+may be necessary to increase the
+.Cm count
+argument of
+.Xr dd 1
+in order to see the complete configuration.
+.Pp
+The configuration on all disks should be the same.
+If this is not the case,
+please report the problem with the exact contents of the file
+.Pa log .
+There is probably little that can be done to recover the on-disk configuration,
+but if you keep a copy of the files used to create the objects, you should be
+able to re-create them.
+The
+.Ic create
+command does not change the subdisk data, so this will not cause data
+corruption.
+You may need to use the
+.Ic resetconfig
+command if you have this kind of trouble.
+.Ss Kernel Panics
+In order to analyse a panic which you suspect comes from
+.Nm
+you will need to build a debug kernel.
+See the online handbook at
+.Pa /usr/share/doc/en/books/developers-handbook/kerneldebug.html
+(if installed) or
+.Pa http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-\%handbook/kerneldebug.html
+for more details of how to do this.
+.Pp
+Perform the following steps to analyse a
+.Nm
+problem:
+.Bl -enum
+.It
+Copy the following files to the directory in which you will be
+performing the analysis, typically
+.Pa /var/crash :
+.Pp
+.Bl -bullet -compact
+.It
+.Pa /usr/src/sys/modules/vinum/.gdbinit.crash ,
+.It
+.Pa /usr/src/sys/modules/vinum/.gdbinit.kernel ,
+.It
+.Pa /usr/src/sys/modules/vinum/.gdbinit.serial ,
+.It
+.Pa /usr/src/sys/modules/vinum/.gdbinit.vinum
+and
+.It
+.Pa /usr/src/sys/modules/vinum/.gdbinit.vinum.paths
+.El
+.It
+Make sure that you build the
+.Nm
+module with debugging information.
+The standard
+.Pa Makefile
+builds a module with debugging symbols by default.
+If the version of
+.Nm
+in
+.Pa /boot/kernel
+does not contain symbols, you will not get an error message, but the stack trace
+will not show the symbols.
+Check the module before starting
+.Xr gdb 1 :
+.Bd -literal
+$ file /boot/kernel/vinum.ko
+/boot/kernel/vinum.ko: ELF 32-bit LSB shared object, Intel 80386,
+ version 1 (FreeBSD), not stripped
+.Ed
+.Pp
+If the output shows that
+.Pa /boot/kernel/vinum.ko
+is stripped, you will have to find a version which is not.
+Usually this will be
+either in
+.Pa /usr/obj/sys/modules/vinum/vinum.ko
+(if you have built
+.Nm
+with a
+.Dq Li "make world" )
+or
+.Pa /usr/src/sys/modules/vinum/vinum.ko
+(if you have built
+.Nm
+in this directory).
+Modify the file
+.Pa .gdbinit.vinum.paths
+accordingly.
+.It
+Either take a dump or use remote serial
+.Xr gdb 1
+to analyse the problem.
+To analyse a dump, say
+.Pa /var/crash/vmcore.5 ,
+link
+.Pa /var/crash/.gdbinit.crash
+to
+.Pa /var/crash/.gdbinit
+and enter:
+.Bd -literal -offset indent
+cd /var/crash
+gdb -k kernel.debug vmcore.5
+.Ed
+.Pp
+This example assumes that you have installed the correct debug kernel at
+.Pa /var/crash/kernel.debug .
+If not, substitute the correct name of the debug kernel.
+.Pp
+To perform remote serial debugging,
+link
+.Pa /var/crash/.gdbinit.serial
+to
+.Pa /var/crash/.gdbinit
+and enter
+.Bd -literal -offset indent
+cd /var/crash
+gdb -k kernel.debug
+.Ed
+.Pp
+In this case, the
+.Pa .gdbinit
+file performs the functions necessary to establish connection.
+The remote
+machine must already be in debug mode: enter the kernel debugger and select
+.Ic gdb
+(see
+.Xr ddb 4
+for more details).
+The serial
+.Pa .gdbinit
+file expects the serial connection to run at 38400 bits per second; if you run
+at a different speed, edit the file accordingly (look for the
+.Va remotebaud
+specification).
+.Pp
+The following example shows a remote debugging session using the
+.Ic debug
+command of
+.Xr gvinum 8 :
+.Bd -literal
+.if t .ps -3
+.if t .vs -3
+GDB 4.16 (i386-unknown-freebsd), Copyright 1996 Free Software Foundation, Inc.
+Debugger (msg=0xf1093174 "vinum debug") at ../../i386/i386/db_interface.c:318
+318 in_Debugger = 0;
+#1 0xf108d9bc in vinumioctl (dev=0x40001900, cmd=0xc008464b, data=0xf6dedee0 "",
+ flag=0x3, p=0xf68b7940) at
+ /usr/src/sys/modules/Vinum/../../dev/Vinum/vinumioctl.c:102
+102 Debugger ("vinum debug");
+(kgdb) bt
+#0 Debugger (msg=0xf0f661ac "vinum debug") at ../../i386/i386/db_interface.c:318
+#1 0xf0f60a7c in vinumioctl (dev=0x40001900, cmd=0xc008464b, data=0xf6923ed0 "",
+ flag=0x3, p=0xf688e6c0) at
+ /usr/src/sys/modules/vinum/../../dev/vinum/vinumioctl.c:109
+#2 0xf01833b7 in spec_ioctl (ap=0xf6923e0c) at ../../miscfs/specfs/spec_vnops.c:424
+#3 0xf0182cc9 in spec_vnoperate (ap=0xf6923e0c) at ../../miscfs/specfs/spec_vnops.c:129
+#4 0xf01eb3c1 in ufs_vnoperatespec (ap=0xf6923e0c) at ../../ufs/ufs/ufs_vnops.c:2312
+#5 0xf017dbb1 in vn_ioctl (fp=0xf1007ec0, com=0xc008464b, data=0xf6923ed0 "",
+ p=0xf688e6c0) at vnode_if.h:395
+#6 0xf015dce0 in ioctl (p=0xf688e6c0, uap=0xf6923f84) at ../../kern/sys_generic.c:473
+#7 0xf0214c0b in syscall (frame={tf_es = 0x27, tf_ds = 0x27, tf_edi = 0xefbfcff8,
+ tf_esi = 0x1, tf_ebp = 0xefbfcf90, tf_isp = 0xf6923fd4, tf_ebx = 0x2,
+ tf_edx = 0x804b614, tf_ecx = 0x8085d10, tf_eax = 0x36, tf_trapno = 0x7,
+ tf_err = 0x2, tf_eip = 0x8060a34, tf_cs = 0x1f, tf_eflags = 0x286,
+ tf_esp = 0xefbfcf78, tf_ss = 0x27}) at ../../i386/i386/trap.c:1100
+#8 0xf020a1fc in Xint0x80_syscall ()
+#9 0x804832d in ?? ()
+#10 0x80482ad in ?? ()
+#11 0x80480e9 in ?? ()
+.if t .vs
+.if t .ps
+.Ed
+.Pp
+When entering from the debugger, it is important that the source of frame 1
+(listed by the
+.Pa .gdbinit
+file at the top of the example) contains the text
+.Dq Li "Debugger (\*[q]vinum debug\*[q]);" .
+.Pp
+This is an indication that the address specifications are correct.
+If you get
+some other output, your symbols and the kernel module are out of sync, and the
+trace will be meaningless.
+.El
+.Pp
+For an initial investigation, the most important information is the output of
+the
+.Ic bt
+(backtrace) command above.
+.Ss Reporting Problems with Vinum
+If you find any bugs in
+.Nm ,
+please report them to
+.An Greg Lehey Aq grog@lemis.com .
+Supply the following
+information:
+.Bl -bullet
+.It
+The output of the
+.Nm vinum Cm list
+command
+(see
+.Xr gvinum 8 ) .
+.It
+Any messages printed in
+.Pa /var/log/messages .
+All such messages will be identified by the text
+.Dq Li vinum
+at the beginning.
+.It
+If you have a panic, a stack trace as described above.
+.El
diff --git a/share/man/man4/vkbd.4 b/share/man/man4/vkbd.4
new file mode 100644
index 0000000..bdaa941
--- /dev/null
+++ b/share/man/man4/vkbd.4
@@ -0,0 +1,153 @@
+.\" $Id: vkbd.4,v 1.4 2004/11/16 16:49:39 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd August 12, 2004
+.Os
+.Dt VKBD 4
+.Sh NAME
+.Nm vkbd
+.Nd the virtual AT keyboard interface
+.Sh SYNOPSIS
+.Cd "device vkbd"
+.Sh DESCRIPTION
+The
+.Nm
+interface is a software loopback mechanism that can be loosely
+described as the virtual AT keyboard analog of the
+.Xr pty 4 ,
+that is,
+.Nm
+does for virtual AT keyboards what the
+.Xr pty 4
+driver does for terminals.
+.Pp
+The
+.Nm
+driver, like the
+.Xr pty 4
+driver, provides two interfaces: a keyboard interface like the usual
+facility it is simulating (a virtual AT keyboard in the case of
+.Nm ,
+or a terminal for
+.Xr pty 4 ) ,
+and a character-special device
+.Dq control
+interface.
+.Pp
+The virtual AT keyboards are named
+.Pa vkbd0 , vkbd1 ,
+etc., one for each control device that has been opened.
+.Pp
+The
+.Nm
+interface permits opens on the special control device
+.Pa /dev/vkbdctl .
+When this device is opened,
+.Nm
+will return a handle for the lowest unused
+.Pa vkbdctl
+device (use
+.Xr devname 3
+to determine which).
+.Pp
+Each virtual AT keyboard supports the usual keyboard interface
+.Xr ioctl 2 Ns s ,
+and thus can be used with
+.Xr kbdcontrol 1
+like any other keyboard.
+The control device supports exactly the same
+.Xr ioctl 2 Ns s
+as the virtual AT keyboard device.
+Writing AT scan codes to the control device generates an input on
+the virtual AT keyboard, as if the
+(non-existent)
+hardware had just received it.
+.Pp
+The virtual AT keyboard control device, normally
+.Pa /dev/vkbdctl Ns Aq Ar N ,
+is exclusive-open
+(it cannot be opened if it is already open)
+and is restricted to the super-user.
+A
+.Xr read 2
+call will return the virtual AT keyboard status structure
+(defined in
+.In dev/vkbd/vkbd_var.h )
+if one is available;
+if not, it will either block until one is or return
+.Er EWOULDBLOCK ,
+depending on whether non-blocking I/O has been enabled.
+.Pp
+A
+.Xr write 2
+call passes AT scan codes to be
+.Dq received
+from the virtual AT keyboard.
+Each AT scan code must be passed as
+.Vt "unsigned int" .
+Although AT scan codes must be passes as
+.Vt "unsigned int" Ns s ,
+the size of the buffer passed to
+.Xr write 2
+still should be in bytes, i.e.,
+.Bd -literal -offset indent
+static unsigned int codes[] =
+{
+/* Make Break */
+ 0x1e, 0x9e
+};
+
+int
+main(void)
+{
+ int fd, len;
+
+ fd = open("/dev/vkbdctl0", O_RDWR);
+ if (fd < 0)
+ err(1, "open");
+
+ /* Note sizeof(codes) - not 2! */
+ len = write(fd, codes, sizeof(codes));
+ if (len < 0)
+ err(1, "write");
+
+ close(fd);
+
+ return (0);
+}
+.Ed
+.Pp
+Write will block if there is not enough space in the input queue.
+.Pp
+The control device also supports
+.Xr select 2
+for read and write.
+.Pp
+On the last close of the control device, the virtual AT keyboard is removed.
+All queued scan codes are thrown away.
+.Sh SEE ALSO
+.Xr kbdcontrol 1 ,
+.Xr atkbdc 4 ,
+.Xr psm 4 ,
+.Xr syscons 4
+.Sh CAVEATS
+The
+.Nm
+interface is a software loopback mechanism, and, thus
+.Xr ddb 4
+will not work with it.
+Current implementation of the
+.Xr syscons 4
+driver can accept input from only one keyboard, even if it is virtual.
+Thus it is not possible to have both wired and virtual keyboard to be active
+at the same time.
+It is, however, in principal possible to obtain AT scan
+codes from the different sources and write them into the same virtual keyboard.
+The virtual keyboard state synchronization is the user's responsibility.
+.Sh HISTORY
+The
+.Nm
+module was implemented in
+.Fx 6.0 .
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
diff --git a/share/man/man4/vlan.4 b/share/man/man4/vlan.4
new file mode 100644
index 0000000..60bf9fe
--- /dev/null
+++ b/share/man/man4/vlan.4
@@ -0,0 +1,210 @@
+.\"
+.\" Copyright (c) 2001 Yar Tikhiy
+.\" 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$
+.\"
+.Dd November 12, 2008
+.Dt VLAN 4
+.Os
+.Sh NAME
+.Nm vlan
+.Nd "IEEE 802.1Q VLAN network interface"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device vlan"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_vlan_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver demultiplexes frames tagged according to
+the IEEE 802.1Q standard into logical
+.Nm
+network interfaces, which allows routing/bridging between
+multiple VLANs through a single switch trunk port.
+.Pp
+Each
+.Nm
+interface is created at runtime using interface cloning.
+This is
+most easily done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va cloned_interfaces
+variable in
+.Xr rc.conf 5 .
+.Pp
+To function, a
+.Nm
+interface must be assigned a parent interface and
+numeric VLAN tag using
+.Xr ifconfig 8 .
+A single parent can be assigned to multiple
+.Nm
+interfaces provided they have different tags.
+The parent interface is likely to be an Ethernet card connected
+to a properly configured switch port.
+The VLAN tag should match one of those set up in the switched
+network.
+.Pp
+Initially
+.Nm
+assumes the same minimum length for tagged and untagged frames.
+This mode is selected by the
+.Xr sysctl 8
+variable
+.Va net.link.vlan.soft_pad
+set to 0 (default).
+However, there are network devices that fail to adjust frame length,
+should it fall below the allowed minimum due to untagging.
+Such devices should be able to interoperate with
+.Nm
+after changing the value of
+.Va net.link.vlan.soft_pad
+to 1.
+In the latter mode,
+.Nm
+will pad short frames before tagging them
+so that their length stays not less than the minimum value
+after untagging by the non-compliant devices.
+.Sh HARDWARE
+The
+.Nm
+driver supports efficient operation over parent interfaces that can provide
+help in processing VLANs.
+Such interfaces are automatically recognized by their capabilities.
+Depending on the level of sophistication found in a physical
+interface, it may do full VLAN processing or just be able to
+receive and transmit long frames (up to 1522 bytes including an Ethernet
+header and FCS).
+The capabilities may be user-controlled by the respective parameters to
+.Xr ifconfig 8 ,
+.Cm vlanhwtag
+and
+.Cm vlanmtu .
+However, a physical interface is not obliged to react to them:
+It may have either capability enabled permanently without
+a way to turn it off.
+The whole issue is very specific to a particular device and its driver.
+.Pp
+By now, the list of physical interfaces able of full VLAN processing
+in the hardware is limited to the following devices:
+.Xr ae 4 ,
+.Xr age 4 ,
+.Xr ale 4 ,
+.Xr bce 4 ,
+.Xr bge 4 ,
+.Xr cxgb 4 ,
+.Xr em 4 ,
+.Xr ixgb 4 ,
+.Xr jme 4 ,
+.Xr msk 4 ,
+.Xr nge 4 ,
+.Xr re 4 ,
+.Xr stge 4 ,
+.Xr ti 4 ,
+.Xr txp 4 ,
+and
+.Xr vge 4 .
+.Pp
+The rest of the Ethernet interfaces can run
+VLANs using software emulation in the
+.Nm
+driver.
+However, some of them lack the capability
+of transmitting and receiving long frames.
+Assigning such an interface as the parent to
+.Nm
+will result in a reduced MTU on the corresponding
+.Nm
+interfaces.
+In the modern Internet, this is likely to cause
+.Xr tcp 4
+connectivity problems due to massive, inadequate
+.Xr icmp 4
+filtering that breaks the Path MTU Discovery mechanism.
+.Pp
+The following interfaces support long frames for
+.Nm
+natively:
+.Xr bfe 4 ,
+.Xr dc 4 ,
+.Xr fwe 4 ,
+.Xr fxp 4 ,
+.Xr gem 4 ,
+.Xr hme 4 ,
+.Xr le 4 ,
+.Xr nfe 4 ,
+.Xr nve 4 ,
+.Xr rl 4 ,
+.Xr sf 4 ,
+.Xr sis 4 ,
+.Xr sk 4 ,
+.Xr ste 4 ,
+.Xr tl 4 ,
+.Xr tx 4 ,
+.Xr vr 4 ,
+and
+.Xr xl 4 .
+.Pp
+The
+.Nm
+driver automatically recognizes devices that natively support long frames
+for
+.Nm
+use and calculates the appropriate frame MTU based on the
+capabilities of the parent interface.
+Some other interfaces not listed above may handle long frames,
+but they do not advertise this ability of theirs.
+The MTU setting on
+.Nm
+can be corrected manually if used in conjunction with such a parent interface.
+.Sh SEE ALSO
+.Xr kqueue 2 ,
+.Xr miibus 4 ,
+.Xr ifconfig 8 ,
+.Xr sysctl 8
+.Sh BUGS
+No 802.1Q features except VLAN tagging are implemented.
+.Pp
+.Dv EVFILT_NETDEV
+events on a
+.Nm
+interface will be sent through
+.Xr kqueue 2
+only if the parent interface uses
+.Xr miibus 4
+for link state notification.
diff --git a/share/man/man4/vpo.4 b/share/man/man4/vpo.4
new file mode 100644
index 0000000..a3b6016
--- /dev/null
+++ b/share/man/man4/vpo.4
@@ -0,0 +1,105 @@
+.\" Copyright (c) 1998, 1999, Nicolas Souchu
+.\" 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$
+.\"
+.Dd December 14, 2004
+.Dt VPO 4
+.Os
+.Sh NAME
+.Nm vpo
+.Nd parallel to SCSI interface driver
+.Sh SYNOPSIS
+.Cd "device vpo"
+.Pp
+For one or more SCSI busses:
+.Cd "device scbus"
+.Sh DESCRIPTION
+The
+.Nm
+driver provide access to parallel port Iomega Zip and Jaz drives.
+.Sh HARDWARE
+The
+.Nm
+driver supports the following parallel to SCSI interfaces:
+.Pp
+.Bl -bullet -compact
+.It
+Adaptec AIC-7110 Parallel to SCSI interface (built-in to Iomega ZIP
+drives)
+.It
+Iomega Jaz Traveller interface
+.It
+Iomega MatchMaker SCSI interface (built-in to Iomega ZIP+ drives)
+.El
+.Sh USAGE
+The driver should let you use a printer connected to the drive while
+transferring data.
+.Pp
+DOS and
+.Fx
+file systems are supported.
+When mounting a DOS file system or
+formating a
+.Fx
+file system, check the slice of the disk with the
+.Xr fdisk 8
+utility.
+.Pp
+In order to unixify a ZIP disk, put the following in /etc/disktab:
+.Bd -literal
+zip|zip 100:\\
+ :ty=removable:se#512:nc#96:nt#64:ns#32:\\
+ :pa#196608:oa#0:ba#4096:fa#512:\\
+ :pb#196608:ob#0:bb#4096:fb#512:\\
+ :pc#196608:oc#0:bc#4096:fc#512:
+.Ed
+.Pp
+and use
+.Xr bsdlabel 8 .
+.Pp
+If you have trouble with your driver, your parallel chipset may not run
+properly at the detected mode (NIBBLE, PS2 or EPP).
+Tune the
+.Xr ppc 4
+bootflags to force other modes.
+.Sh SEE ALSO
+.Xr da 4 ,
+.Xr lpt 4 ,
+.Xr ppbus 4 ,
+.Xr ppc 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
+.Sh BUGS
+During boot, the driver first tries to detect a classic ZIP, then a ZIP+.
+The ZIP+ detection is intrusive and may send erroneous characters to your
+printer if the drive is not connected to your parallel port.
diff --git a/share/man/man4/vr.4 b/share/man/man4/vr.4
new file mode 100644
index 0000000..c1ec7d1
--- /dev/null
+++ b/share/man/man4/vr.4
@@ -0,0 +1,217 @@
+.\" Copyright (c) 1997, 1998
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd March 11, 2008
+.Dt VR 4
+.Os
+.Sh NAME
+.Nm vr
+.Nd "VIA Technologies Rhine I/II/III Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device vr"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_vr_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters and embedded
+controllers based on the VIA Technologies VT3043 Rhine I,
+VT86C100A Rhine II, and VT6105/VT6105M Rhine III Fast Ethernet
+controller chips.
+.Pp
+The VIA Rhine chips use bus master DMA and have a descriptor layout
+designed to resemble that of the DEC 21x4x
+.Dq tulip
+chips.
+The register
+layout is different however and the receive filter in the Rhine chips
+is much simpler and is programmed through registers rather than by
+downloading a special setup frame through the transmit DMA engine.
+Transmit and receive DMA buffers must be longword
+aligned.
+The Rhine chips are meant to be interfaced with external
+physical layer devices via an MII bus.
+They support both
+10 and 100Mbps speeds in either full or half duplex.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Fthernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+Note that the 100baseTX media type is only available if supported
+by the adapter.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports VIA Technologies Rhine I, Rhine II, and Rhine III based
+Fast Ethernet adapters including:
+.Pp
+.Bl -bullet -compact
+.It
+AOpen/Acer ALN-320
+.It
+D-Link DFE530-TX
+.It
+Hawking Technologies PN102TX
+.It
+Soekris Engineering net5501
+.El
+.Sh SYSCTL VARIABLES
+The following variables are available as
+.Xr sysctl 8
+variables:
+.Bl -tag -width indent
+.It Va dev.vr.%d.stats
+Display lots of useful MAC counters maintained in the driver.
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "vr%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "vr%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "vr%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "vr%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "vr%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.It "vr%d: chip is in D3 power state -- setting to D0"
+This message applies only to adapters which support power
+management.
+Some operating systems place the controller in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The controller loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform second
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr polling 4 ,
+.Xr ifconfig 8
+.Rs
+.%T The VIA Technologies VT86C100A data sheet
+.%O http://www.via.com.tw
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
+.Sh BUGS
+The
+.Nm
+driver always copies transmit mbuf chains into longword-aligned
+buffers prior to transmission in order to pacify the Rhine chips.
+If buffers are not aligned correctly, the chip will round the
+supplied buffer address and begin DMAing from the wrong location.
+This buffer copying impairs transmit performance on slower systems but cannot
+be avoided.
+On faster machines (e.g.\& a Pentium II), the performance
+impact is much less noticeable.
diff --git a/share/man/man4/watchdog.4 b/share/man/man4/watchdog.4
new file mode 100644
index 0000000..f19f3a6
--- /dev/null
+++ b/share/man/man4/watchdog.4
@@ -0,0 +1,146 @@
+.\" Copyright (c) 2004 Poul-Henning Kamp <phk@FreeBSD.org>
+.\" Copyright (c) 2003, 2004 Sean M. Kelly <smkelly@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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 25, 2003
+.Dt WATCHDOG 4
+.Os
+.Sh NAME
+.Nm watchdog
+.Nd "hardware and software watchdog"
+.Sh SYNOPSIS
+.In sys/watchdog.h
+.Sh DESCRIPTION
+The
+.Nm
+facility is used for controlling hardware and software watchdogs.
+.Pp
+.Pa /dev/fido
+responds to a single
+.Xr ioctl 2
+call,
+.Dv WDIOCPATPAT .
+It takes a single argument which represents a timeout value specified as a
+power of two nanoseconds, or-ed with a flag selecting active or passive control
+of the watchdog.
+.Pp
+.Dv WD_ACTIVE
+indicates that the
+.Nm
+will be kept from timing out from userland, for instance by the
+.Xr watchdogd 8
+daemon.
+.Dv WD_PASSIVE
+indicates that the
+.Nm
+will be kept from timing out from the kernel.
+.Pp
+The
+.Xr ioctl 2
+call will return success if just one of the available
+.Xr watchdog 9
+implementations supports setting the timeout to the specified timeout. This
+means that at least one watchdog is armed. If the call fails, for instance if
+none of
+.Xr watchdog 9
+implementations support the timeout length, all watchdogs are disabled and must
+be explicitly re-enabled.
+.Pp
+To disable the watchdogs pass
+.Dv WD_TO_NEVER .
+If disarming the watchdog(s) failed an error is returned. The watchdog might
+still be armed!
+.Sh RETURN VALUES
+The ioctl returns zero on success and non-zero on failure.
+.Bl -tag -width Er
+.It Bq Er EOPNOTSUPP
+No watchdog present in the kernel (timeout value other than 0).
+.It Bq Er EOPNOTSUPP
+Watchdog could not be disabled (timeout value of 0).
+.It Bq Er EINVALID
+Invalid flag combination passed.
+.It Bq Er EINVALID
+None of the watchdogs supports the requested timeout value.
+.El
+.Sh EXAMPLES
+.Bd -literal -offset indent
+#include <paths.h>
+#include <sys/watchdog.h>
+
+#define WDPATH "/dev/" _PATH_WATCHDOG
+int wdfd = -1;
+
+static void
+wd_init(void)
+{
+ wdfd = open(WDPATH, O_RDWR);
+ if (wdfd == -1)
+ err(1, WDPATH);
+}
+static void
+wd_reset(u_int timeout)
+{
+ if (ioctl(wdfd, WDIOCPATPAT, &timeout) == -1)
+ err(1, "WDIOCPATPAT");
+}
+
+/* in main() */
+wd_init();
+wd_reset(WD_ACTIVE|WD_TO_8SEC);
+/* potential freeze point */
+wd_reset(WD_TO_NEVER);
+.Ed
+.Pp
+Enables a watchdog to recover from a potentially freezing piece of code.
+.Pp
+.Bd -literal -offset indent
+options SW_WATCHDOG
+.Ed
+.Pp
+in your kernel config adds a software watchdog in the kernel, dropping to KDB
+or panic-ing when firing.
+.Sh SEE ALSO
+.Xr watchdogd 8 ,
+.Xr watchdog 9
+.Sh HISTORY
+The
+.Nm
+code first appeared in
+.Fx 5.1 .
+.Sh BUGS
+The
+.Dv WD_PASSIVE
+option has not yet been implemented.
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+facility was written by
+.An Poul-Henning Kamp Aq phk@FreeBSD.org .
+The software watchdog code and this manual page were written by
+.An Sean Kelly Aq smkelly@FreeBSD.org .
+Some contributions were made by
+.An Jeff Roberson Aq jeff@FreeBSD.org .
diff --git a/share/man/man4/wb.4 b/share/man/man4/wb.4
new file mode 100644
index 0000000..2dd51b6
--- /dev/null
+++ b/share/man/man4/wb.4
@@ -0,0 +1,198 @@
+.\" Copyright (c) 1997, 1998
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt WB 4
+.Os
+.Sh NAME
+.Nm wb
+.Nd "Winbond W89C840F Fast Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device wb"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_wb_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters and embedded
+controllers based on the Winbond W89C840F Fast Ethernet controller
+chip.
+The 840F should not be confused with the 940F, which is
+an NE2000 clone and only supports 10Mbps speeds.
+.Pp
+The Winbond controller uses bus master DMA and is designed to be
+a DEC 'tulip' workalike.
+It differs from the standard DEC design
+in several ways: the control and status registers are spaced 4
+bytes apart instead of 8, and the receive filter is programmed through
+registers rather than by downloading a special setup frame via
+the transmit DMA engine.
+Using an external PHY, the Winbond chip
+supports both 10 and 100Mbps speeds in either full or half duplex.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+This is only
+supported if the PHY chip attached to the Winbond controller
+supports NWAY autonegotiation.
+The user can manually override
+the autoselected mode by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+Note that the 100baseTX media type is only available if supported
+by the adapter.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports Winbond W89C840F based Fast Ethernet
+adapters and embedded controllers including:
+.Pp
+.Bl -bullet -compact
+.It
+Trendware TE100-PCIE
+.El
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "wb%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "wb%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "wb%d: watchdog timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "wb%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "wb%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.It "wb%d: chip is in D3 power state -- setting to D0"
+This message applies only to adapters which support power
+management.
+Some operating systems place the controller in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The controller loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform second
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.El
+.Sh SEE ALSO
+.Xr arp 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
+.Sh BUGS
+The Winbond chip seems to behave strangely in some cases when the
+link partner switches modes.
+If for example both sides are set to
+10Mbps half-duplex, and the other end is changed to 100Mbps
+full-duplex, the Winbond's receiver suddenly starts writing trash
+all over the RX descriptors.
+The
+.Nm
+driver handles this by forcing a reset of both the controller
+chip and attached PHY.
+This is drastic, but it appears to be the
+only way to recover properly from this condition.
diff --git a/share/man/man4/wi.4 b/share/man/man4/wi.4
new file mode 100644
index 0000000..68479ae
--- /dev/null
+++ b/share/man/man4/wi.4
@@ -0,0 +1,396 @@
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\" $OpenBSD: wi.4tbl,v 1.14 2002/04/29 19:53:50 jsyn Exp $
+.\"
+.Dd August 2, 2008
+.Dt WI 4
+.Os
+.Sh NAME
+.Nm wi
+.Nd "Lucent Hermes, and Intersil PRISM IEEE 802.11 driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device wi"
+.Cd "device wlan"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_wi_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for 802.11b wireless network adapters based around
+the Lucent Hermes, Intersil PRISM-II, Intersil PRISM-2.5, and Intersil
+Prism-3 chipsets.
+All chipsets provide a similar interface to the driver.
+Only the Intersil chipsets support access point operation or WPA.
+Very old versions of firmware are not supported at all.
+Older versions of the firmware that are supported may severely limit
+the ability to use these cards in newer networks.
+Only relatively recent versions of Intersil firmware supports WPA.
+See CAVEATS for details.
+All host/device interaction is via programmed I/O, even on those cards
+that support a DMA interface.
+.Pp
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+.Cm adhoc-demo ,
+.Cm hostap ,
+and
+.Cm monitor
+mode operation.
+Only one
+virtual interface may be configured at a time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+Cards supported by the
+.Nm
+driver come in a variety of packages, though the most common
+are of the PCMCIA type.
+In many cases, the PCI version of a wireless card is simply
+a PCMCIA card bundled with a PCI adapter.
+The PCI adapters come in two flavors: true PCMCIA bridges and
+dumb PCMCIA bridges.
+A true PCMCIA bridge (such as those sold by Lucent) will attach
+as a real PCMCIA controller.
+The wireless card will then attach to the PCMCIA bus.
+Wireless cards in PCMCIA slots may be inserted and ejected on the fly.
+.Pp
+A dumb bridge, on the other hand, does not show up as a true PCMCIA bus.
+The wireless card will simply appear to the host as a normal PCI
+device and will not require any PCMCIA support.
+Cards in this type of adapter should only be removed when the
+machine is powered down.
+.Pp
+The following cards are among those supported by the
+.Nm
+driver:
+.Pp
+.Bl -column -compact "Linksys Instant Wireless WPC11 2.5" "Spectrum24" "PCI or PCMCIA"
+.Em "Card Chip Bus"
+3Com AirConnect 3CRWE777A Prism-II PCI
+Accton airDirect WN3301 PCMCIA
+ACTIONTEC HWC01170 Prism-2.5 PCMCIA
+Adaptech ANW-8030 Prism-3 PCMCIA
+Addtron AWP-100 Prism-II PCMCIA
+Adtec Adlink/340C Prism-II PCMCIA
+Airvast WN 100 Prism-3 PCMCIA
+Airway 802.11 Adapter PCMCIA
+Agere Orinoco Hermes PCMCIA
+Allied Telesis WR211PCM Prism-II PCMCIA
+ArTem OnAir Prism? PCMCIA
+Asus WL100 Prism-2.5 PCMCIA
+Avaya Wireless Prism-II PCMCIA
+Bay eMobility 11B Prism-2.5? PCMCIA
+Blue Concentric Circle WL-379F Prism-II CF
+BreezeNet Wireless Prism-II PCMCIA
+Buffalo WLI-PCM-S11 Prism-II PCMCIA
+Buffalo WLI-PCM-L11G Hermes PCMCIA
+Buffalo WLI-CF-S11G Prism-II CF
+Buffalo WLI2-CF-S11G Prism 2.5 CF
+Cabletron RoamAbout Hermes PCMCIA
+Compaq Agency NC5004 Prism-II PCMCIA
+Compaq WL100 Prism-II PCMCIA
+Compaq WL110 Hermes PCMCIA
+Compaq WL200 Prism-II PCMCIA
+Contec FLEXLAN/FX-DS110-PCC Prism-II PCMCIA
+Corega PCC-11 Prism-II PCMCIA
+Corega PCCA-11 Prism-II PCMCIA
+Corega PCCB-11 Prism-II PCMCIA
+Corega CGWLPCIA11 Prism-II PCI
+Dell TrueMobile 1150 Hermes PCMCIA
+Dlink Air 660 Prism-II PCMCIA
+Dlink DWL520 Prism-2.5 PCI
+Dlink DWL650 Prism-2.5 PCMCIA
+ELECOM Air@Hawk/LD-WL11/PCC PCMCIA
+ELSA MC-11 PCMCIA
+ELSA XI300 Prism-II PCMCIA
+ELSA XI325 Prism-2.5 PCMCIA
+ELSA APDL325 Prism-2.5 PCMCIA
+ELSA XI330 Prism-3 PCMCIA
+ELSA XI800 Prism-II CF
+EMTAC A2424i Prism-II PCMCIA
+Farallon Skyline Prism-II PCMCIA
+Gemtek WL-311 Prism-2.5 PCMCIA
+Hawking Technology WE110P Prism-2.5 PCMCIA
+Home Wireless Networks Prism-II PCMCIA
+IBM High Rate Wireless Hermes PCMCIA
+ICOM SL-1100 Prism-II PCMCIA
+I-O DATA WN-B11/PCM Prism-II PCMCIA
+Intersil Prism II Prism-II PCMCIA
+Intersil Mini-PCI Prism-2.5 PCI
+Intersil ISL37100P Prism-3 PCMCIA
+Intersil ISL37110P Prism-3 PCMCIA
+Intersil ISL37300P Prism-3 PCMCIA
+Laneed Wireless PCMCIA
+Linksys Instant Wireless WPC11 Prism-II PCMCIA
+Linksys Instant Wireless WPC11 2.5 Prism-2.5 PCMCIA
+Linksys Instant Wireless WPC11 3.0 Prism-3 PCMCIA
+Linksys WCF11 Prism-3 PCMCIA
+Linksys WCF12 Prism-3 CF
+Lucent WaveLAN Hermes PCMCIA
+Melco Airconnect Prism-II PCMCIA
+Microsoft MN-520 WLAN Prism-II PCMCIA
+NANOSPEED ROOT-RZ2000 Prism-II PCMCIA
+NCR WaveLAN/IEEE 802.11 PCMCIA
+NDC/Sohoware NCP130 Prism-II PCI
+NEC CMZ-RT-WP Prism-II PCMCIA
+NEC PK-WL001 Lucent PCMCIA
+NEC PC-WL/11C Prism-II PCMCIA
+Netgear MA311 Prism-2.5 PCI
+Netgear MA401 Prism-II/2.5 PCMCIA
+Netgear MA401RA Prism-II PCMCIA
+Netgear MA701 Prism-II CF
+NOKIA C020 WLAN Prism-II PCMCIA
+NOKIA C110 WLAN Prism-2.5 PCMCIA
+NTT-ME 11Mbps Wireless LAN Prism-II PCMCIA
+Planex GeoWave/GW-NS110 Prism-II PCMCIA
+Planex GW-NS11H Prism-II PCMCIA
+Proxim Harmony Prism-II PCMCIA
+Proxim RangeLAN-DS Prism-II PCMCIA
+Samsung MagicLAN SWL-2000N Prism-II PCMCIA
+SENAO SL-2511CD Prism-3 PCMCIA
+Siemens SpeedStream SS1021 Prism-II PCMCIA
+Siemens SpeedStream SS1021 Prism-3 PCMCIA
+SMC 2532W-B Prism-II PCMCIA
+SMC 2602 EZ Connect (3.3V) Prism-II PCI or PCMCIA
+SMC 2632 EZ Connect Prism-II PCMCIA
+Socket Low Power WLAN-CF Prism-II CF
+Sony PCWA-C100 Lucent PCMCIA
+Sony PEGA-WL110 Prism-2.5 PCMCIA
+TDK LAK-CD011WL Prism-II PCMCIA
+Toshiba Wireless LAN Card Prism-II PCMCIA
+U.S.\& Robotics Wireless Card 2410 Prism-II PCMCIA
+YIS YWL-11B Prism-II PCMCIA
+.El
+.Pp
+Several vendors sell PCI adapters built around the PLX Technology 9050
+or 9052 chip.
+The following such adapters are supported or expected to work:
+.Pp
+.Bl -item -compact
+.It
+3Com AirConnect 3CRWE777A (3.3V)
+.It
+Belkin F5D6000 (a rebadged WL11000P)
+.It
+Eumitcom WL11000P
+.It
+Global Sun Technology GL24110P (untested)
+.It
+Global Sun Technology GL24110P02
+.It
+LinkSys WDT11 (a rebadged GL24110P02)
+.It
+Netgear MA301
+.It
+US Robotics 2415 (rebadged WL11000P)
+.It
+Wisecom Wireless LAN PCI Adapter
+.El
+.Pp
+The following adapters have the same model numbers as those listed
+above, but might not work if the actual card is after the change away
+from the Prism family:
+.Pp
+.Bl -item -compact
+.It
+DLink DWL520
+.El
+.Sh EXAMPLES
+Join an existing BSS network (ie: connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev wi0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan create wlandev wi0 inet 192.168.0.20 \e
+ netmask 0xffffff00 ssid my_net
+.Pp
+Join a specific BSS network with WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev wi0 inet 192.168.0.20 \e
+ netmask 0xffffff00 ssid my_net \e
+ wepmode on wepkey 0x8736639624 weptxkey 1
+.Ed
+.Pp
+Join a Lucent legacy demo ad-hoc network with network name
+.Dq Li my_net :
+.Bd -literal -offset indent
+ifconfig wlan create wlandev wi0 wlanmode ahdemo \e
+ inet 192.168.0.20 netmask 0xffffff00 ssid my_net
+.Ed
+.Pp
+Join/create an IBSS network with network name
+.Dq Li my_net :
+.Bd -literal -offset indent
+ifconfig wlan create wlandev wi0 wlanmode adhoc wi0 \e
+ inet 192.168.0.22 netmask 0xffffff00 ssid my_net
+.Ed
+.Pp
+Create a host-based access point (Prism only):
+.Bd -literal -offset indent
+ifconfig wlan create wlandev wi0 wlanmode hostap \e
+ inet 192.168.0.10 netmask 0xffffff00 ssid my_ap
+.Ed
+.Pp
+Create a host-based access point with WEP enabled (Prism only)
+and plumb it into bridge to fxp0:
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev wi0 wlanmode hostap \e
+ inet 192.168.0.10 netmask 0xffffff00 ssid my_ap \e
+ wepmode on wepkey 0x1234567890 weptxkey 1
+ifconfig bridge0 create
+ifconfig bridge0 addm wlan0 addm fxp0 up
+.Ed
+.Pp
+This will give you the same functionality as an access point.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "wi%d: init failed"
+The WaveLAN card failed to become ready after an initialization command
+was issued.
+.It "wi%d: failed to allocate %d bytes on NIC"
+The driver was unable to allocate memory for transmit frames in the
+NIC's on-board RAM.
+This can also be an indication of an incorrectly configured interrupt.
+.It "wi%d: device timeout"
+The WaveLAN card failed to generate an interrupt to acknowledge a transmit
+command.
+.El
+.Sh SEE ALSO
+.Xr intro 4 ,
+.Xr pccard 4 ,
+.Xr pccbb 4 ,
+.Xr pcic 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr wlan_xauth 4 ,
+.Xr hostapd 8 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8 .
+.Rs
+.%T HCF Light programming specification
+.%O http://www.wavelan.com
+.Re
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The original
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
+This man page comes from
+.Ox .
+.Sh CAVEATS
+The driver will reject devices with old firmware to
+avoid dealing with numerous defects.
+Unfortunately the driver does not support downloading new firmware
+to the card so if new firmware is needed users will have to boot
+a different system to accomplish this.
+.Pp
+Intersil Prism cards must have firmware versions 0.8.0 or later and
+version 1.7.0 or later are required to support functionality such as WPA.
+Some users of Prism-II and 2.5 based cards report that station firmware
+version 1.3.4 works better for them in hostap than 1.4.9.
+Older versions of the Prism station firmware have a number of issues
+with hostap mode.
+The IBSS/adhoc mode appears to work well on station firmware 1.3.1 and
+later.
+The IBSS/adhoc mode appears to have problems for some people with
+older versions of station firmware.
+.Pp
+Lucent cards prior to firmware version 6.0.6 do not implement IBSS
+mode and are not supported.
+.Pp
+Prior versions of
+.Nm
+supported Symbol firmware.
+That support has been removed due to persistent problems with this
+firmware as well as getting proper documentation on this firmware.
+.Pp
+Hermes 2 and Hermes 3 chips are not supported by this driver.
+.Pp
+Here's the above requirements in the form of a table
+.Pp
+.Bl -column -compact "Prims II/2.5" "xxxxxxxx" "xxxxxxxx" "xxxxxxxx" "xxxxxxxx"
+.Em "Firmware Minimum WPA Host AP Adhoc/IBSS"
+Prism II/2.5 0.8.0 1.7.0 1.3.4 1.3.1
+Prism 3 0.8.0 1.7.0 1.4.9 1.3.1
+Hermes 6.0.6 none none 6.0.6
+Symbol none none none none
+.El
+.Sh BUGS
+Not all the new messages are documented here, and many of them are
+indications of transient errors that are not indications of serious
+problems.
+.Pp
+WL200 PCI wireless cards are based on a Cirrus Logic CL-PD6729 bridge
+chips glued to an Intersil Prism-II PCMCIA chipset w/o the PC Card
+form factor being present.
+These chips are special and require special care to use properly.
+One must set
+.Va hw.pcic.pd6729_intr_path Ns = Ns Qq Li 2
+in
+.Pa /boot/loader.conf .
+This tells the PC Card system to use PCI interrupts for this odd beast.
+It is not possible to know automatically which kind of interrupts to use.
+OLDCARD devices
+support this device.
+NEWCARD devices
+.Xr ( pccbb 4
+and
+.Xr pccard 4 )
+do not support it at this time.
diff --git a/share/man/man4/witness.4 b/share/man/man4/witness.4
new file mode 100644
index 0000000..c0014fa
--- /dev/null
+++ b/share/man/man4/witness.4
@@ -0,0 +1,144 @@
+.\" Copyright (c) 2001 John H. Baldwin <jhb@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$
+.\"
+.Dd February 18, 2001
+.Dt WITNESS 4
+.Os
+.Sh NAME
+.Nm witness
+.Nd lock validation facility
+.Sh SYNOPSIS
+.Cd options WITNESS
+.Cd options WITNESS_KDB
+.Cd options WITNESS_SKIPSPIN
+.Sh DESCRIPTION
+The
+.Nm
+module keeps track of the locks acquired and released by each thread.
+It also keeps track of the order in which locks are acquired with respect
+to each other.
+Each time a lock is acquired,
+.Nm
+uses these two lists to verify that a lock is not being acquired in the
+wrong order.
+If a lock order violation is detected, then a message is output to the
+kernel console detailing the locks involved and the locations in question.
+Witness can also be configured to drop into the kernel debugger when an order
+violation occurs.
+.Pp
+The
+.Nm
+code also checks various other conditions such as verifying that one
+does not recurse on a non-recursive lock.
+For sleep locks,
+.Nm
+verifies that a new process would not be switched to when a lock is released
+or a lock is blocked on during an acquire while any spin locks are held.
+If any of these checks fail, then the kernel will panic.
+.Pp
+The flag that controls whether or not the kernel debugger is entered when a
+lock order violation is detected can be set in a variety of ways.
+By default, the flag is off, but if the
+.Dv WITNESS_KDB
+kernel option is
+specified, then the flag will default to on.
+It can also be set from the
+.Xr loader 8
+via the
+.Va debug.witness.kdb
+environment variable or after the kernel has booted via the
+.Va debug.witness.kdb
+sysctl.
+If the flag is set to zero, then the debugger will not be entered.
+If the flag is non-zero, then the debugger will be entered.
+.Pp
+The
+.Nm
+code can also be configured to skip all checks on spin mutexes.
+By default, this flag defaults to off, but it can be turned on by
+specifying the
+.Dv WITNESS_SKIPSPIN
+kernel option.
+The flag can also be set via the
+.Xr loader 8
+environment variable
+.Va debug.witness.skipspin .
+If the variable is set to a non-zero value, then spin mutexes are skipped.
+Once the kernel has booted, the status of this flag can be examined but not
+set via the read-only sysctl
+.Va debug.witness.skipspin .
+.Pp
+The sysctl
+.Va debug.witness.watch
+specifies the level of witness involvement in the system.
+A value of 1 specifies that witness is enabled.
+A value of 0 specifies that witness is disabled, but that can be enabled
+again. This will maintain a small amount of overhead in the system.
+A value of -1 specifies that witness is disabled permanently and that
+cannot be enabled again.
+The sysctl
+.Va debug.witness.watch
+can be set via
+.Xr loader 8 .
+.Pp
+The
+.Nm
+code also provides two extra
+.Xr ddb 4
+commands if both
+.Nm
+and
+.Xr ddb 4
+are compiled into the kernel:
+.Bl -ohang
+.It Ic show locks
+Outputs the list of locks held by the current thread to the kernel console
+along with the filename and line number at which each lock was last acquired
+by this thread.
+.It Ic show witness
+Dump the current order list to the kernel console.
+The code first displays the lock order tree for all of the sleep locks.
+Then it displays the lock order tree for all of the spin locks.
+Finally, it displays a list of locks that have not yet been acquired.
+.El
+.Sh SEE ALSO
+.Xr ddb 4 ,
+.Xr loader 8 ,
+.Xr sysctl 8 ,
+.Xr mutex 9
+.Sh HISTORY
+The
+.Nm
+code first appeared in
+.Bsx 5.0
+and was imported from there into
+.Fx 5.0 .
+.Sh BUGS
+The
+.Nm
+code currently does not handle recursion of shared
+.Xr sx 9
+locks properly.
diff --git a/share/man/man4/wlan.4 b/share/man/man4/wlan.4
new file mode 100644
index 0000000..4235b84
--- /dev/null
+++ b/share/man/man4/wlan.4
@@ -0,0 +1,204 @@
+.\"
+.\" Copyright (c) 2003 Tom Rhodes
+.\" 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$
+.\"
+.Dd April 12, 2008
+.Dt WLAN 4
+.Os
+.Sh NAME
+.Nm wlan
+.Nd generic 802.11 link-layer support
+.Sh SYNOPSIS
+.Cd "device wlan"
+.Sh DESCRIPTION
+The
+.Nm
+module provides generic code to support 802.11 drivers.
+Where a device does not directly support 802.11 functionality
+this layer fills in.
+The
+.Nm
+module is required by all native 802.11 drivers as well as the
+.Xr ndis 4
+support.
+.Pp
+.Nm
+supports multi-mode devices capable of
+operating in both 2.4GHz and 5GHz bands and supports numerous
+802.11 standards: 802.11a, 802.11b, 802.11g, and 802.11n.
+The WPA, 802.11i, and 802.1x security protocols are supported
+through a combination of in-kernel code and user-mode applications.
+The WME/WMM multi-media protocols are supported entirely within
+the
+.Nm
+module but require a suitably capable hardware device.
+Likewise the 802.11h specification is supported only by suitably
+capable devices.
+.Pp
+Drivers provide 802.11 functionality through
+.Nm
+interfaces that are created at runtime using interface cloning.
+This is done with the
+.Xr ifconfig 8
+.Cm create
+command or using the
+.Va wlans_IFX
+variable in
+.Xr rc.conf 5 .
+Some drivers support the creation of multiple
+.Nm
+interfaces that share the same underlying device;
+this is the way by which ``multi-bss support'' is provided but it
+can also be used to create WDS links and other interesting applications.
+.Pp
+There are several types of
+.Nm
+interfaces that may be created:
+.Bl -tag -width monitor
+.It Cm sta
+A client station in an infrastructure bss
+(i.e. one that associates to an access point).
+.It Cm hostap
+An access point in an infrastructure bss.
+.It Cm adhoc
+A station in an IBSS network.
+.It Cm ahdemo
+A station operating in ``adhoc demo mode''.
+This is essentially an IBSS station that does not use management
+frames (e.g. no beacons are transmitted).
+An
+.Cm ahdemo
+interface is especially useful for applications that want to transmit
+and receive raw 802.11 packets.
+.It Cm monitor
+An interface used exclusively for capturing 802.11 frames.
+In particular this specified to have read-only properties
+which enables it to be operated on frequencies where one
+would otherwise not be allowed.
+.It Cm wds
+A station that passes 4-address 802.11 traffic for the purpose
+of tunneling traffic over a wireless link.
+Typically this station would share the same MAC address as a
+.Cm hostap
+interface.
+It may be possible to create
+.Cm wds
+interfaces without a companion
+.Cm hostap
+interface but that is not guaranteed; one may need to create a
+.Cm hostap
+interface that does not send beacon frames before
+.Cm wds
+interfaces may be created.
+.El
+.Pp
+More types are planned to support
+802.11s mesh nodes (station and ap).
+Note that an interface's type cannot be changed once it is created.
+.Pp
+.Nm
+defines several mechanisms by which plugin modules may
+be used to extend its' functionality.
+Cryptographic support such as WEP, TKIP, and AES-CCMP are implemented
+as standalone modules (if not statically configured into a system)
+that register with
+.Nm .
+Similarly there is an authenticator framework for defining 802.11
+authentication services and a framework for integrating access
+control mechanisms specific to the 802.11 protocol.
+.Sh DEBUGGING
+Debugging controls are available using:
+.Pp
+.Dl "sysctl net.wlan.X.debug=mask"
+.Pp
+where
+.Ar X
+is the number of the
+.Nm
+instance and mask is a bit-or of control bits that determine which
+debugging messages to enable.
+For example,
+.Pp
+.Dl "sysctl net.wlan.0.debug=0x00200000"
+.Pp
+enables debugging messages related to scanning for an access point,
+adhoc neighbor, or an unoccupied channel when operation as an access point.
+The
+.Xr wlandebug 8
+tool provides a more user-friendly mechanism for doing the same thing.
+Note that
+.Pp
+.Dl "sysctl net.wlan.debug=mask"
+.Pp
+defines the initial value of the debugging flags for each cloned
+.Nm
+interface; this is useful to enable debug messages during interface creation.
+.Sh COMPATIBILITY
+The module name of
+.Nm
+was used to be compatible with
+.Nx .
+.Sh SEE ALSO
+.Xr an 4 ,
+.Xr ath 4 ,
+.Xr bwi 4 ,
+.Xr ipw 4 ,
+.Xr iwi 4 ,
+.Xr iwn 4 ,
+.Xr mwl 4 ,
+.Xr netintro 4 ,
+.Xr ral 4 ,
+.Xr rum 4 ,
+.Xr ural 4 ,
+.Xr wi 4 ,
+.Xr wlan_acl 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr wlan_xauth 4 ,
+.Xr wpi 4 ,
+.Xr zyd 4
+.Sh STANDARDS
+More information can be found in the IEEE 802.11 Standards.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+Atsushi Onoe is the author of original
+.Nx
+software from which this work began.
+.An -nosplit
+.An Sam Leffler
+brought the code into
+.Fx
+and then rewrote it to support multi-mode devices,
+802.11g, 802.11n, WPA/802.11i, WME, multi-bss, and
+add the extensible frameworks
+for cryptographic, authentication, and access control plugins.
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man4/wlan_acl.4 b/share/man/man4/wlan_acl.4
new file mode 100644
index 0000000..9a05aad
--- /dev/null
+++ b/share/man/man4/wlan_acl.4
@@ -0,0 +1,57 @@
+.\"
+.\" Copyright (c) 2004 Sam Leffler
+.\" 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$
+.\"
+.Dd December 7, 2004
+.Dt WLAN_ACL 4
+.Os
+.Sh NAME
+.Nm wlan_acl
+.Nd MAC-based ACL support for 802.11 devices
+.Sh SYNOPSIS
+.Cd "device wlan_acl"
+.Sh DESCRIPTION
+The
+.Nm
+module implements a MAC-based access control plugin for use
+with 802.11 devices operating as an access point.
+The
+.Nm
+must be loaded for
+.Xr ifconfig 8
+to handle the
+.Cm mac:*
+requests.
+.Sh SEE ALSO
+.Xr wlan 4 ,
+.Xr ifconfig 8
+.Sh STANDARDS
+More information can be found in the IEEE 802.11 Standard.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
diff --git a/share/man/man4/wlan_amrr.4 b/share/man/man4/wlan_amrr.4
new file mode 100644
index 0000000..f810a9c
--- /dev/null
+++ b/share/man/man4/wlan_amrr.4
@@ -0,0 +1,59 @@
+.\"
+.\" Copyright (c) 2007 Kevin Lo
+.\" 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$
+.\"
+.Dd April 13, 2008
+.Dt WLAN_AMRR 4
+.Os
+.Sh NAME
+.Nm wlan_amrr
+.Nd AMRR rate adaptation algorithm support for 802.11 devices
+.Sh SYNOPSIS
+.Cd "device wlan_amrr"
+.Sh DESCRIPTION
+The
+.Nm
+module implements the Adaptive Multi-Rate Retry tx rate control
+algorithm for use by 802.11 device drivers.
+.Sh SEE ALSO
+.Xr bwi 4 ,
+.Xr iwn 4 ,
+.Xr ral 4 ,
+.Xr rum 4 ,
+.Xr ural 4 ,
+.Xr wlan 4 ,
+.Xr wpi 4 ,
+.Xr zyd 4
+.Sh STANDARDS
+More information can be found in the paper describing the
+.Em AMRR
+algorithm at
+.Pa http://hal.inria.fr/inria-00070784/en/ .
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
diff --git a/share/man/man4/wlan_ccmp.4 b/share/man/man4/wlan_ccmp.4
new file mode 100644
index 0000000..ccf7a27
--- /dev/null
+++ b/share/man/man4/wlan_ccmp.4
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (c) 2004 Sam Leffler
+.\" 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$
+.\"
+.Dd December 7, 2004
+.Dt WLAN_CCMP 4
+.Os
+.Sh NAME
+.Nm wlan_ccmp
+.Nd AES-CCMP crypto support for 802.11 devices
+.Sh SYNOPSIS
+.Cd "device wlan_ccmp"
+.Sh DESCRIPTION
+The
+.Nm
+module handles the AES-CCMP cryptographic requirements of the
+WPA and 802.11i protocols.
+It does encapsulation and decapsulation of CCMP-encoded 802.11 frames
+and optionally calculates the AES-CCMP cipher.
+The
+.Nm
+module is an 802.11 cryptographic plugin module for use by the
+.Xr wlan 4
+module.
+This module is automatically loaded if an AES-CCMP key is configured;
+typically by a WPA supplicant program such as wpa_supplicant,
+or a WPA authenticator program such as
+.Nm hostapd .
+Should the underlying network device not be capable of doing the AES-CCMP
+calculations in hardware, the
+.Nm
+module will do the work.
+.Sh SEE ALSO
+.Xr wlan 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4
+.Sh STANDARDS
+More information can be found in the IEEE 802.11, WPA, and 802.11i Standards.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
diff --git a/share/man/man4/wlan_tkip.4 b/share/man/man4/wlan_tkip.4
new file mode 100644
index 0000000..2a2a254
--- /dev/null
+++ b/share/man/man4/wlan_tkip.4
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (c) 2004 Sam Leffler
+.\" 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$
+.\"
+.Dd December 7, 2004
+.Dt WLAN_TKIP 4
+.Os
+.Sh NAME
+.Nm wlan_tkip
+.Nd TKIP and Michael crypto support for 802.11 devices
+.Sh SYNOPSIS
+.Cd "device wlan_tkip"
+.Sh DESCRIPTION
+The
+.Nm
+module handles the TKIP and Michael cryptographic requirements of the
+WPA and 802.11i protocols.
+It does encapsulation and decapsulation of TKIP-encoded 802.11 frames
+and optionally calculates the TKIP cipher and Michael MIC.
+The
+.Nm
+module is an 802.11 cryptographic plugin module for use by the
+.Xr wlan 4
+module.
+This module is automatically loaded if a TKIP key is configured;
+typically by a WPA supplicant program such as wpa_supplicant,
+or a WPA authenticator program such as
+.Nm hostapd .
+Should the underlying network device not be capable of doing the TKIP
+and/or Michael calculations in hardware, the
+.Nm
+module will do the work.
+.Sh SEE ALSO
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_wep 4
+.Sh STANDARDS
+More information can be found in the IEEE 802.11, WPA, and 802.11i Standards.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
diff --git a/share/man/man4/wlan_wep.4 b/share/man/man4/wlan_wep.4
new file mode 100644
index 0000000..3bf1040
--- /dev/null
+++ b/share/man/man4/wlan_wep.4
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (c) 2004 Sam Leffler
+.\" 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$
+.\"
+.Dd December 7, 2004
+.Dt WLAN_WEP 4
+.Os
+.Sh NAME
+.Nm wlan_wep
+.Nd WEP crypto support for 802.11 devices
+.Sh SYNOPSIS
+.Cd "device wlan_wep"
+.Sh DESCRIPTION
+The
+.Nm
+module handles the WEP cryptographic requirements of the 802.11 protocol.
+It does encapsulation and decapsulation of WEP-encoded 802.11 frames
+and optionally calculates the WEP cipher.
+The
+.Nm
+module is an 802.11 cryptographic plugin module for use by the
+.Xr wlan 4
+module.
+This module is automatically loaded if a WEP key is configured with
+.Xr ifconfig 8 .
+Should the underlying network device not be capable of doing the WEP
+calculations in hardware, the
+.Nm
+module will do the work.
+.Sh SEE ALSO
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4
+.Sh STANDARDS
+More information can be found in the IEEE 802.11 Standard.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
diff --git a/share/man/man4/wlan_xauth.4 b/share/man/man4/wlan_xauth.4
new file mode 100644
index 0000000..b1fdfc5
--- /dev/null
+++ b/share/man/man4/wlan_xauth.4
@@ -0,0 +1,61 @@
+.\"
+.\" Copyright (c) 2004 Sam Leffler
+.\" 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$
+.\"
+.Dd December 7, 2004
+.Dt WLAN_XAUTH 4
+.Os
+.Sh NAME
+.Nm wlan_xauth
+.Nd External authenticator support for 802.11 devices
+.Sh SYNOPSIS
+.Cd "device wlan_xauth"
+.Sh DESCRIPTION
+The
+.Nm
+module is a
+.Xr wlan 4
+authenticator plugin
+for use with user-mode authentication implementations such
+as
+.Nm hostapd .
+It hooks into the 802.11 layer and does nothing.
+As a result, 802.11 stations that associate are not authorized to
+send or receive frames until they are authorized by an external agent;
+typically using a protocol such as WPA, 802.1x, or 802.11i.
+.Pp
+This module is automatically loaded by the rc script that normally
+starts
+.Xr hostapd 8 .
+.Sh SEE ALSO
+.Xr wlan 4
+.Sh STANDARDS
+More information can be found in the IEEE 802.11, WPA, and 802.11i Standards.
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.0 .
diff --git a/share/man/man4/wpi.4 b/share/man/man4/wpi.4
new file mode 100644
index 0000000..4a827b3
--- /dev/null
+++ b/share/man/man4/wpi.4
@@ -0,0 +1,145 @@
+.\" Copyright (c) 2004-2007
+.\" Damien Bergamini <damien.bergamini@free.fr>. All rights reserved.
+.\" Benjamin Close <Benjamin.Close@clearchain.com>. 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 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$
+.\"
+.Dd October 5, 2008
+.Os
+.Dt WPI 4
+.Sh NAME
+.Nm wpi
+.Nd "Intel 3945ABG Wireless LAN IEEE 802.11 driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device wpi"
+.Cd "device wpifw"
+.Cd "device pci"
+.Cd "device wlan"
+.Cd "device wlan_amrr"
+.Cd "device firmware"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_wpi_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for the
+.Tn Intel
+3945ABG Wireless network adapter
+.Nm
+supports
+.Cm station ,
+.Cm adhoc ,
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Pp
+This driver requires the firmware built with the
+.Nm wpifw
+module to work.
+.Sh FILES
+.Bl -tag -width ".Pa /usr/share/doc/legal/intel_wpi/LICENSE" -compact
+.It Pa /usr/share/doc/legal/intel_wpi/LICENSE
+.Nm
+firmware license
+.El
+.Sh EXAMPLES
+Join an existing BSS network (i.e., connect to an access point):
+.Pp
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev wpi0 inet 192.168.0.20 \e
+ netmask 0xffffff00
+.Ed
+.Pp
+Join a specific BSS network with network name
+.Dq Li my_net :
+.Pp
+.Dl "ifconfig wlan0 create wlandev wpi0 ssid my_net up"
+.Pp
+Join a specific BSS network with 64-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev wpi0 ssid my_net \e
+ wepmode on wepkey 0x1234567890 weptxkey 1 up
+.Ed
+.Pp
+Join a specific BSS network with 128-bit WEP encryption:
+.Bd -literal -offset indent
+ifconfig wlan0 create wlandev wpi0 wlanmode adhoc ssid my_net \e
+ wepmode on wepkey 0x01020304050607080910111213 weptxkey 1
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "wpi%d: could not load firmware image '%s'"
+The driver failed to load the firmware image using the
+.Xr firmware 9
+subsystem.
+Verify the
+.Xr wpifw
+firmware module is installed.
+.It "wpi%d: fatal firmware error"
+An unknown error has occurred in the uploaded firmware, you may have to
+unload/reload the driver to continue.
+.It "wpi%d: Radio transmitter is switched off"
+The hardware switch controlling the radio is currently turned off.
+Data transmission is not possible in this state.
+.Sh BUGS
+Not all the error messages are documented here.
+.Pp
+Background scanning is not currently supported.
+.El
+.Sh SEE ALSO
+.Xr wpifw 4 ,
+.Xr pci 4 ,
+.Xr wlan 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8 .
+.Sh AUTHORS
+.An -nosplit
+The original
+.Nm
+driver was written for
+.Ox
+by
+.An Damien Bergamini Aq damien.bergamini@free.fr .
+.An Benjamin Close Aq benjsc@FreeBSD.org
+ported
+.Nm
+to
+.Fx .
diff --git a/share/man/man4/xe.4 b/share/man/man4/xe.4
new file mode 100644
index 0000000..0935884
--- /dev/null
+++ b/share/man/man4/xe.4
@@ -0,0 +1,168 @@
+.\"
+.\" Copyright (c) 2003 Tom Rhodes
+.\" 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$
+.\"
+.Dd July 16, 2005
+.Dt XE 4
+.Os
+.Sh NAME
+.Nm xe
+.Nd "Xircom PCMCIA Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device xe"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_xe_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver supports
+.Tn PCMCIA
+Ethernet adapters based on Xircom CE2- and CE3-class hardware.
+This includes devices made by Xircom along with
+various
+.Tn OEM
+manufacturers.
+.Pp
+Please note that the
+.Nm
+driver only supports
+.Tn PCMCIA
+cards and their Ethernet functions.
+.Nm
+does not support the on-board modem device located on some
+version of the Ethernet/modem combo cards.
+In particular, Xircom RealPort2 cards are not supported by this driver.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Bl -tag -width ".Cm autoselect"
+.It Cm autoselect
+Enable autoselection of media type and options.
+.It Cm 10Base2/BNC
+Select 10Mbps operation on a BNC coaxial connector.
+.It Cm 10BaseT/UTP
+Select 10Mbps operation on a RJ-45 connector.
+.It Cm 100BaseTX
+Select 100Mbps operation.
+.El
+.Pp
+Note that 100BaseTX operation is not available on CE2-class cards,
+while the 10Base2/BNC mode is only available on CE2-class cards.
+Full-duplex
+operation is currently not supported.
+For more information on configuring network interface devices,
+see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following cards:
+.Pp
+.Bl -bullet -compact
+.It
+Xircom CreditCard Ethernet (PS-CE2-10)
+.It
+Xircom CreditCard Ethernet + Modem 28 (PS-CEM-28)
+.It
+Xircom CreditCard Ethernet + Modem 33 (CEM33)
+.It
+Xircom CreditCard 10/100 (CE3, CE3B)
+.It
+Xircom CreditCard Ethernet 10/100 + Modem 56 (CEM56)
+.It
+Xircom RealPort Ethernet 10 (RE10)
+.It
+Xircom RealPort Ethernet 10/100 (RE100)
+.It
+Xircom RealPort Ethernet 10/100 + Modem 56 (REM56, REM56G)
+.It
+Accton Fast EtherCard-16 (EN2226)
+.It
+Compaq Microcom CPQ550 Ethernet/Modem PC Card
+.It
+Compaq Netelligent 10/100 PC Card (CPQ-10/100)
+.It
+Intel EtherExpress Pro/100 PC Card Mobile Adapter 16 (Pro/100 M16A)
+.It
+Intel EtherExpress Pro/100 LAN/Modem PC Card Adapter (Pro/100 M16B)
+.El
+.Pp
+Other similar devices using the same hardware may also be supported.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "xe%d: Cannot allocate ioport"
+.It "xe%d: Cannot allocate irq"
+A fatal initialization error occurred while attempting to allocate
+system resources for the card.
+.It "xe%d: Unable to fix your %s combo card"
+A fatal initialization error occurred while attempting to attach an
+Ethernet/modem combo card.
+.It "xe%d: watchdog timeout: resetting card"
+The card failed to generate an interrupt acknowledging a
+transmitted packet.
+May indicate a
+.Tn PCMCIA
+configuration problem.
+.It "xe%d: no carrier"
+The card has lost all contact with the network; this
+usually indicates a cable problem.
+.El
+.Sh SEE ALSO
+.Xr pccard 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 3.3 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+device driver was written by
+.An Scott Mitchell Aq rsm@FreeBSD.org .
+This manual page was written by
+.An Scott Mitchell Aq rsm@FreeBSD.org ,
+and
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
+.Sh BUGS
+Supported devices will fail to attach on some machines using the
+.Tn NEWCARD
+.Tn PC
+Card framework.
+.Pp
+Automatic media selection is usually unreliable.
diff --git a/share/man/man4/xl.4 b/share/man/man4/xl.4
new file mode 100644
index 0000000..155273c
--- /dev/null
+++ b/share/man/man4/xl.4
@@ -0,0 +1,272 @@
+.\" Copyright (c) 1997, 1998
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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$
+.\"
+.Dd January 23, 2008
+.Dt XL 4
+.Os
+.Sh NAME
+.Nm xl
+.Nd "3Com Etherlink XL and Fast Etherlink XL Ethernet device driver"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device miibus"
+.Cd "device xl"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_xl_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for PCI Ethernet adapters and embedded
+controllers based on the 3Com "boomerang," "cyclone," "hurricane"
+and "tornado" bus-master Etherlink XL chips.
+.Pp
+The Etherlink XL chips support built-in 10baseT, 10base2 and 10base5
+transceivers as well as an MII bus for externally attached PHY
+transceivers.
+The 3c905 series typically uses a National Semiconductor
+NS 83840A 10/100 PHY for 10/100 Mbps support in full or half-duplex.
+The 3c905B adapters have built-in autonegotiation logic mapped onto
+the MII for compatibility with previous drivers.
+Fast Etherlink XL
+adapters such as the 3c905-TX and 3c905B-TX are capable of 10 or
+100Mbps data rates in either full or half duplex and can be manually
+configured for any supported mode or automatically negotiate the highest
+possible mode with a link partner.
+.Pp
+The
+.Nm
+driver supports the following media types:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It autoselect
+Enable autoselection of the media type and options.
+Note that this
+option is only available with the 3c905 and 3c905B adapters with
+external PHYs or built-in autonegotiation logic.
+For 3c900 adapters,
+the driver will choose the mode specified in the EEPROM.
+The user can
+change this by adding media options to the
+.Pa /etc/rc.conf
+file.
+.It 10baseT/UTP
+Set 10Mbps operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 100baseTX
+Set 100Mbps (Fast Ethernet) operation.
+The
+.Ar mediaopt
+option can also be used to select either
+.Ar full-duplex
+or
+.Ar half-duplex
+modes.
+.It 10base5/AUI
+Enable AUI transceiver (available only on COMBO cards).
+.It 10base2/BNC
+Enable BNC coax transceiver (available only on COMBO cards).
+.El
+.Pp
+The
+.Nm
+driver supports the following media options:
+.Pp
+.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
+.It full-duplex
+Force full duplex operation
+.It half-duplex
+Force half duplex operation.
+.El
+.Pp
+Note that the 100baseTX media type is only available if supported
+by the adapter.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The
+.Nm
+driver supports the following hardware:
+.Pp
+.Bl -bullet -compact
+.It
+3Com 3c900-TPO
+.It
+3Com 3c900-COMBO
+.It
+3Com 3c905-TX
+.It
+3Com 3c905-T4
+.It
+3Com 3c900B-TPO
+.It
+3Com 3c900B-TPC
+.It
+3Com 3c900B-FL
+.It
+3Com 3c900B-COMBO
+.It
+3Com 3c905B-T4
+.It
+3Com 3c905B-TX
+.It
+3Com 3c905B-FX
+.It
+3Com 3c905B-COMBO
+.It
+3Com 3c905C-TX
+.It
+3Com 3c980, 3c980B, and 3c980C server adapters
+.It
+3Com 3cSOHO100-TX OfficeConnect adapters
+.It
+3Com 3c450 HomeConnect adapters
+.It
+3Com 3c555, 3c556 and 3c556B mini-PCI adapters
+.It
+3Com 3C3SH573BT, 3C575TX, 3CCFE575BT, 3CXFE575BT, 3CCFE575CT, 3CXFE575CT,
+3CCFEM656, 3CCFEM656B, and 3CCFEM656C, 3CXFEM656, 3CXFEM656B, and
+3CXFEM656C CardBus adapters
+.It
+3Com 3c905-TX, 3c905B-TX 3c905C-TX, 3c920B-EMB, and 3c920B-EMB-WNM embedded adapters
+.El
+.Pp
+Both the 3C656 family of CardBus cards and the 3C556 family of MiniPCI
+cards have a built-in proprietary modem.
+Neither the
+.Nm
+driver nor any other
+.Fx
+driver supports this modem.
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "xl%d: couldn't map memory"
+A fatal initialization error has occurred.
+.It "xl%d: couldn't map interrupt"
+A fatal initialization error has occurred.
+.It "xl%d: device timeout"
+The device has stopped responding to the network, or there is a problem with
+the network connection (cable).
+.It "xl%d: no memory for rx list"
+The driver failed to allocate an mbuf for the receiver ring.
+.It "xl%d: no memory for tx list"
+The driver failed to allocate an mbuf for the transmitter ring when
+allocating a pad buffer or collapsing an mbuf chain into a cluster.
+.It "xl%d: command never completed!"
+Some commands issued to the 3c90x ASIC take time to complete: the
+driver is supposed to wait until the 'command in progress' bit in
+the status register clears before continuing.
+In rare instances, this
+bit may not clear.
+To avoid getting caught in an infinite wait loop,
+the driver only polls the bit for a finite number of times before
+giving up, at which point it issues this message.
+This message may
+be printed during driver initialization on slower machines.
+If you
+see this message but the driver continues to function normally, the
+message can probably be ignored.
+.It "xl%d: chip is in D3 power state -- setting to D0"
+This message applies only to 3c905B adapters, which support power
+management.
+Some operating systems place the 3c905B in low power
+mode when shutting down, and some PCI BIOSes fail to bring the chip
+out of this state before configuring it.
+The 3c905B loses all of
+its PCI configuration in the D3 state, so if the BIOS does not set
+it back to full power mode in time, it will not be able to configure it
+correctly.
+The driver tries to detect this condition and bring
+the adapter back to the D0 (full power) state, but this may not be
+enough to return the driver to a fully operational condition.
+If
+you see this message at boot time and the driver fails to attach
+the device as a network interface, you will have to perform second
+warm boot to have the device properly configured.
+.Pp
+Note that this condition only occurs when warm booting from another
+operating system.
+If you power down your system prior to booting
+.Fx ,
+the card should be configured correctly.
+.It "xl%d: WARNING: no media options bits set in the media options register!"
+This warning may appear when using the driver on some Dell Latitude
+docking stations with built-in 3c905-TX adapters.
+For whatever the
+reason, the 'MII available' bit in the media options register on
+this particular equipment is not set, even though it should be (the
+3c905-TX always uses an external PHY transceiver).
+The driver will
+attempt to guess the proper media type based on the PCI device ID
+word.
+The driver makes a lot of noise about this condition because
+the author considers it a manufacturing defect.
+.It xl%d: transmission error: %d
+.It xl%d: tx underrun, increasing tx start threshold to %d bytes
+This message may appear while the adapter tunes its transmission
+buffers under various load amounts and are mostly harmless.
+It is probably safe to ignore them.
+.El
+.Sh SEE ALSO
+.Xr altq 4 ,
+.Xr arp 4 ,
+.Xr cardbus 4 ,
+.Xr miibus 4 ,
+.Xr netintro 4 ,
+.Xr ng_ether 4 ,
+.Xr pccard 4 ,
+.Xr polling 4 ,
+.Xr ifconfig 8
+.Sh HISTORY
+The
+.Nm
+device driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The
+.Nm
+driver was written by
+.An Bill Paul Aq wpaul@ctr.columbia.edu .
diff --git a/share/man/man4/xpt.4 b/share/man/man4/xpt.4
new file mode 100644
index 0000000..e670acb
--- /dev/null
+++ b/share/man/man4/xpt.4
@@ -0,0 +1,108 @@
+.\"
+.\" Copyright (c) 1998 Kenneth D. Merry.
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd October 10, 1998
+.Dt XPT 4
+.Os
+.Sh NAME
+.Nm xpt
+.Nd CAM transport layer interface
+.Sh SYNOPSIS
+None.
+.Sh DESCRIPTION
+The
+.Nm
+driver provides a way for userland applications to issue certain CAM CCBs
+to the kernel.
+.Pp
+Since the
+.Nm
+driver allows direct access to the CAM subsystem, system administrators
+should exercise caution when granting access to this driver.
+If used
+improperly, this driver can allow userland applications to crash a machine
+or cause data loss.
+.Sh KERNEL CONFIGURATION
+There is no kernel configuration required for the
+.Nm
+driver.
+It is enabled when
+.Tn SCSI
+support is enabled in the kernel.
+There is one instance of the xpt driver
+per CAM transport layer instance.
+Since there is currently only one CAM
+transport layer, there will only be one instance of this driver.
+.Sh IOCTLS
+.Bl -tag -width 01234567890123
+.It CAMIOCOMMAND
+This ioctl takes certain kinds of CAM CCBs and passes them through to the
+CAM transport layer for action.
+Only the following CCB types are
+supported:
+.Pp
+.Bl -tag -width XPT_DEV_MATCH -compact
+.It XPT_SCAN_BUS
+.It XPT_RESET_BUS
+.It XPT_SCAN_LUN
+.It XPT_ENG_INQ
+.It XPT_ENG_EXEC
+.It XPT_DEBUG
+.It XPT_DEV_MATCH
+.It XPT_PATH_INQ
+.El
+.Pp
+The above CCBs are the only ones supported since it makes more sense to
+send them through a generic passthrough device rather than a passthrough
+device tied to a particular underlying
+.Tn SCSI
+device.
+.It CAMGETPASSTHRU
+This ioctl takes an XPT_GDEVLIST CCB, and returns the passthrough device
+corresponding to the device in question.
+.El
+.Sh FILES
+.Bl -tag -width /dev/xpt0 -compact
+.It Pa /dev/xpt0
+Character device node for the
+.Nm
+driver.
+.El
+.Sh DIAGNOSTICS
+None.
+.Sh SEE ALSO
+.Xr cam 3 ,
+.Xr cam_cdbparse 3 ,
+.Xr pass 4 ,
+.Xr camcontrol 8
+.Sh HISTORY
+The CAM transport layer driver first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An Kenneth Merry Aq ken@FreeBSD.org
diff --git a/share/man/man4/zero.4 b/share/man/man4/zero.4
new file mode 100644
index 0000000..cb73a2c
--- /dev/null
+++ b/share/man/man4/zero.4
@@ -0,0 +1,57 @@
+.\" Copyright (c) 1996
+.\" Mike Pritchard <mpp@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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by Mike Pritchard and
+.\" contributors.
+.\" 4. Neither the name of the author 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 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$
+.\"
+.Dd April 7, 1996
+.Dt ZERO 4
+.Os
+.Sh NAME
+.Nm zero
+.Nd the zero device
+.Sh DESCRIPTION
+The
+.Nm
+device accepts and reads data as any ordinary (and willing)
+file,
+but throws away any data written to it, and returns an endless
+supply of null bytes when read.
+.Sh FILES
+.Bl -tag -width /dev/zero
+.It Pa /dev/zero
+.El
+.Sh SEE ALSO
+.Xr null 4
+.Sh HISTORY
+A
+.Nm
+device appeared in
+.Bx 4.4 .
diff --git a/share/man/man4/zyd.4 b/share/man/man4/zyd.4
new file mode 100644
index 0000000..15c6392
--- /dev/null
+++ b/share/man/man4/zyd.4
@@ -0,0 +1,186 @@
+.\" $OpenBSD: zyd.4,v 1.22 2007/05/24 02:49:57 cnst Exp $
+.\" $NetBSD: zyd.4,v 1.1 2007/06/09 11:20:55 kiyohara Exp $
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 1997, 1998, 1999
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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 Bill Paul OR THE VOICES IN HIS HEAD
+.\" 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.
+.\"
+.Dd November 1, 2008
+.Dt ZYD 4
+.Os
+.Sh NAME
+.Nm zyd
+.Nd ZyDAS ZD1211/ZD1211B USB IEEE 802.11b/g wireless network device
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following lines in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "device ehci"
+.Cd "device uhci"
+.Cd "device ohci"
+.Cd "device usb"
+.Cd "device zyd"
+.Cd "device wlan"
+.Cd "device wlan_amrr"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+if_zyd_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver provides support for wireless network adapters based around
+the ZyDAS ZD1211 and ZD1211B USB chips.
+.Pp
+.Nm
+supports
+.Cm station
+and
+.Cm monitor
+mode operation.
+Only one virtual interface may be configured at any time.
+For more information on configuring this device, see
+.Xr ifconfig 8 .
+.Sh HARDWARE
+The following devices are known to be supported by the
+.Nm
+driver:
+.Pp
+.Bl -tag -width Ds -offset indent -compact
+.It 3COM 3CRUSB10075
+.It Acer WLAN-G-US1
+.It Airlink+ AWLL3025
+.It Airlink 101 AWLL3026
+.It AOpen 802.11g WL54
+.It Asus A9T integrated wireless
+.It Asus WL-159g
+.It Belkin F5D7050 v.4000
+.It Billion BiPAC 3011G
+.It Buffalo WLI-U2-KG54L
+.It CC&C WL-2203B
+.It DrayTek Vigor 550
+.It Edimax EW-7317UG
+.It Edimax EW-7317LDG
+.It Fiberline Networks WL-43OU
+.It iNexQ UR055g
+.It Linksys WUSBF54G
+.It Longshine LCS-8131G3
+.It MSI US54SE
+.It MyTek MWU-201 USB adapter
+.It Philips SNU5600
+.It Planet WL-U356
+.It Planex GW-US54GZ
+.It Planex GW-US54GZL
+.It Planex GW-US54Mini
+.It Safecom SWMULZ-5400
+.It Sagem XG 760A
+.It Sagem XG 76NA
+.It Sandberg Wireless G54 USB
+.It Sitecom WL-113
+.It SMC SMCWUSB-G
+.It Sweex wireless USB 54 Mbps
+.It Tekram/Siemens USB adapter
+.It Telegent TG54USB
+.It Trendnet TEW-424UB
+.It Trendnet TEW-429UB
+.It TwinMOS G240
+.It Unicorn WL-54G
+.It US Robotics 5423
+.It X-Micro XWL-11GUZX
+.It Yakumo QuickWLAN USB
+.It Zonet ZEW2501
+.It ZyXEL ZyAIR G-220
+.El
+.Sh EXAMPLES
+The following
+example configures zyd0 to join any BSS network using WEP key
+.Dq 0x1deadbeef1 ,
+channel 11:
+.Bd -literal -offset indent
+ifconfig wlan create wlandev zyd0 channel 11 \e
+ wepmode on wepkey 0x1deadbeef1 weptxkey 1 \e
+ inet 192.168.1.1 netmask 255.255.255.0
+.Ed
+.Pp
+Join an existing BSS network,
+.Dq my_net :
+.Bd -literal -offset indent
+ifconfig wlan create wlandev zyd0 192.168.0.2 \e
+ netmask 0xffffff00 ssid my_net
+.Ed
+.Sh DIAGNOSTICS
+.Bl -diag
+.It "zyd%d: could not load firmware (error=%d)"
+An error occurred while attempting to upload the firmware to the onboard
+microcontroller unit.
+.It "zyd%d: could not send command (error=%s)"
+An attempt to send a command to the firmware failed.
+.It "zyd%d: sorry, radio %s is not supported yet"
+Support for the specified radio chip is not yet implemented in the driver.
+The device will not attach.
+.It "zyd%d: device version mismatch: 0x%x (only >= 43.30 supported)"
+Early revisions of the ZD1211 chipset are not supported by this driver.
+The device will not attach.
+.It "zyd%d: device timeout"
+A frame dispatched to the hardware for transmission did not complete in time.
+The driver will reset the hardware.
+This should not happen.
+.El
+.Sh SEE ALSO
+.Xr intro 4 ,
+.Xr netintro 4 ,
+.Xr usb 4 ,
+.Xr wlan 4 ,
+.Xr wlan_amrr 4 ,
+.Xr wlan_ccmp 4 ,
+.Xr wlan_tkip 4 ,
+.Xr wlan_wep 4 ,
+.Xr ifconfig 8 ,
+.Xr wpa_supplicant 8
+.Sh AUTHORS
+.An -nosplit
+The original
+.Nm
+driver was written by
+.An Florian Stoehr Aq ich@florian-stoehr.de ,
+.An Damien Bergamini Aq damien@openbsd.org ,
+and
+.An Jonathan Gray Aq jsg@openbsd.org .
+.Sh CAVEATS
+The
+.Nm
+driver does not support a lot of the functionality available in the hardware.
+More work is required to properly support the IBSS and power management
+features.
diff --git a/share/man/man5/Makefile b/share/man/man5/Makefile
new file mode 100644
index 0000000..f7ff059
--- /dev/null
+++ b/share/man/man5/Makefile
@@ -0,0 +1,91 @@
+# @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+.include <bsd.own.mk>
+
+#MISSING: dump.5 plot.5
+MAN= acct.5 \
+ ar.5 \
+ a.out.5 \
+ bluetooth.device.conf.5 \
+ bluetooth.hosts.5 \
+ bluetooth.protocols.5 \
+ ${_boot.config.5} \
+ core.5 \
+ devfs.5 \
+ devfs.conf.5 \
+ devfs.rules.5 \
+ device.hints.5 \
+ dir.5 \
+ disktab.5 \
+ elf.5 \
+ ethers.5 \
+ eui64.5 \
+ ext2fs.5 \
+ fbtab.5 \
+ fdescfs.5 \
+ forward.5 \
+ freebsd-update.conf.5 \
+ fs.5 \
+ fstab.5 \
+ group.5 \
+ hosts.5 \
+ hosts.equiv.5 \
+ hosts.lpd.5 \
+ intro.5 \
+ libmap.conf.5 \
+ link.5 \
+ linprocfs.5 \
+ linsysfs.5 \
+ mailer.conf.5 \
+ make.conf.5 \
+ moduli.5 \
+ motd.5 \
+ mqueuefs.5 \
+ msdosfs.5 \
+ networks.5 \
+ nsmb.conf.5 \
+ nsswitch.conf.5 \
+ nullfs.5 \
+ passwd.5 \
+ pbm.5 \
+ periodic.conf.5 \
+ phones.5 \
+ portsnap.conf.5 \
+ procfs.5 \
+ protocols.5 \
+ quota.user.5 \
+ rc.conf.5 \
+ regdomain.5 \
+ reiserfs.5 \
+ remote.5 \
+ resolver.5 \
+ services.5 \
+ shells.5 \
+ src.conf.5 \
+ stab.5 \
+ style.Makefile.5 \
+ sysctl.conf.5 \
+ tmpfs.5 \
+ utmp.5 \
+ xfs.5
+
+MLINKS= dir.5 dirent.5
+MLINKS+=fs.5 inode.5
+MLINKS+=hosts.equiv.5 rhosts.5
+MLINKS+=msdosfs.5 msdos.5
+MLINKS+=passwd.5 master.passwd.5
+MLINKS+=quota.user.5 quota.group.5
+MLINKS+=rc.conf.5 rc.conf.local.5
+MLINKS+=resolver.5 resolv.conf.5
+MLINKS+=utmp.5 lastlog.5 utmp.5 wtmp.5
+
+.if ${MK_HESIOD} != "no"
+MAN+= hesiod.conf.5
+.endif
+
+.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "i386"
+_boot.config.5= boot.config.5
+.endif
+
+.include <bsd.prog.mk>
diff --git a/share/man/man5/a.out.5 b/share/man/man5/a.out.5
new file mode 100644
index 0000000..137b2e4
--- /dev/null
+++ b/share/man/man5/a.out.5
@@ -0,0 +1,460 @@
+.\" Copyright (c) 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" This manual page is derived from documentation contributed to Berkeley by
+.\" Donn Seeley at UUNET Technologies, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)a.out.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt A.OUT 5
+.Os
+.Sh NAME
+.Nm a.out
+.Nd format of executable binary files
+.Sh SYNOPSIS
+.In a.out.h
+.Sh DESCRIPTION
+The include file
+.In a.out.h
+declares three structures and several macros.
+The structures describe the format of
+executable machine code files
+.Pq Sq binaries
+on the system.
+.Pp
+A binary file consists of up to 7 sections.
+In order, these sections are:
+.Bl -tag -width "text relocations"
+.It exec header
+Contains parameters used by the kernel
+to load a binary file into memory and execute it,
+and by the link editor
+.Xr ld 1
+to combine a binary file with other binary files.
+This section is the only mandatory one.
+.It text segment
+Contains machine code and related data
+that are loaded into memory when a program executes.
+May be loaded read-only.
+.It data segment
+Contains initialized data; always loaded into writable memory.
+.It text relocations
+Contains records used by the link editor
+to update pointers in the text segment when combining binary files.
+.It data relocations
+Like the text relocation section, but for data segment pointers.
+.It symbol table
+Contains records used by the link editor
+to cross reference the addresses of named variables and functions
+.Pq Sq symbols
+between binary files.
+.It string table
+Contains the character strings corresponding to the symbol names.
+.El
+.Pp
+Every binary file begins with an
+.Fa exec
+structure:
+.Bd -literal -offset indent
+struct exec {
+ unsigned long a_midmag;
+ unsigned long a_text;
+ unsigned long a_data;
+ unsigned long a_bss;
+ unsigned long a_syms;
+ unsigned long a_entry;
+ unsigned long a_trsize;
+ unsigned long a_drsize;
+};
+.Ed
+.Pp
+The fields have the following functions:
+.Bl -tag -width a_trsize
+.It Fa a_midmag
+This field is stored in host byte-order.
+It has a number of sub-components accessed by the macros
+.Fn N_GETFLAG ,
+.Fn N_GETMID ,
+and
+.Fn N_GETMAGIC ,
+and set by the macro
+.Fn N_SETMAGIC .
+.Pp
+The macro
+.Fn N_GETFLAG
+returns a few flags:
+.Bl -tag -width EX_DYNAMIC
+.It Dv EX_DYNAMIC
+indicates that the executable requires the services of the run-time link editor.
+.It Dv EX_PIC
+indicates that the object contains position independent code.
+This flag is
+set by
+.Xr as 1
+when given the
+.Sq -k
+flag and is preserved by
+.Xr ld 1
+if necessary.
+.El
+.Pp
+If both EX_DYNAMIC and EX_PIC are set, the object file is a position independent
+executable image (e.g.\& a shared library), which is to be loaded into the
+process address space by the run-time link editor.
+.Pp
+The macro
+.Fn N_GETMID
+returns the machine-id.
+This indicates which machine(s) the binary is intended to run on.
+.Pp
+.Fn N_GETMAGIC
+specifies the magic number, which uniquely identifies binary files
+and distinguishes different loading conventions.
+The field must contain one of the following values:
+.Bl -tag -width ZMAGIC
+.It Dv OMAGIC
+The text and data segments immediately follow the header
+and are contiguous.
+The kernel loads both text and data segments into writable memory.
+.It Dv NMAGIC
+As with
+.Dv OMAGIC ,
+text and data segments immediately follow the header and are contiguous.
+However, the kernel loads the text into read-only memory
+and loads the data into writable memory at the next
+page boundary after the text.
+.It Dv ZMAGIC
+The kernel loads individual pages on demand from the binary.
+The header, text segment and data segment are all
+padded by the link editor to a multiple of the page size.
+Pages that the kernel loads from the text segment are read-only,
+while pages from the data segment are writable.
+.El
+.It Fa a_text
+Contains the size of the text segment in bytes.
+.It Fa a_data
+Contains the size of the data segment in bytes.
+.It Fa a_bss
+Contains the number of bytes in the
+.Sq bss segment
+and is used by the kernel to set the initial break
+.Pq Xr brk 2
+after the data segment.
+The kernel loads the program so that this amount of writable memory
+appears to follow the data segment and initially reads as zeroes.
+.Em ( bss
+= block started by symbol)
+.It Fa a_syms
+Contains the size in bytes of the symbol table section.
+.It Fa a_entry
+Contains the address in memory of the entry point
+of the program after the kernel has loaded it;
+the kernel starts the execution of the program
+from the machine instruction at this address.
+.It Fa a_trsize
+Contains the size in bytes of the text relocation table.
+.It Fa a_drsize
+Contains the size in bytes of the data relocation table.
+.El
+.Pp
+The
+.In a.out.h
+include file defines several macros which use an
+.Fa exec
+structure to test consistency or to locate section offsets in the binary file.
+.Bl -tag -width N_BADMAG(exec)
+.It Fn N_BADMAG exec
+Nonzero if the
+.Fa a_magic
+field does not contain a recognized value.
+.It Fn N_TXTOFF exec
+The byte offset in the binary file of the beginning of the text segment.
+.It Fn N_SYMOFF exec
+The byte offset of the beginning of the symbol table.
+.It Fn N_STROFF exec
+The byte offset of the beginning of the string table.
+.El
+.Pp
+Relocation records have a standard format which
+is described by the
+.Fa relocation_info
+structure:
+.Bd -literal -offset indent
+struct relocation_info {
+ int r_address;
+ unsigned int r_symbolnum : 24,
+ r_pcrel : 1,
+ r_length : 2,
+ r_extern : 1,
+ r_baserel : 1,
+ r_jmptable : 1,
+ r_relative : 1,
+ r_copy : 1;
+};
+.Ed
+.Pp
+The
+.Fa relocation_info
+fields are used as follows:
+.Bl -tag -width r_symbolnum
+.It Fa r_address
+Contains the byte offset of a pointer that needs to be link-edited.
+Text relocation offsets are reckoned from the start of the text segment,
+and data relocation offsets from the start of the data segment.
+The link editor adds the value that is already stored at this offset
+into the new value that it computes using this relocation record.
+.It Fa r_symbolnum
+Contains the ordinal number of a symbol structure
+in the symbol table (it is
+.Em not
+a byte offset).
+After the link editor resolves the absolute address for this symbol,
+it adds that address to the pointer that is undergoing relocation.
+(If the
+.Fa r_extern
+bit is clear, the situation is different; see below.)
+.It Fa r_pcrel
+If this is set,
+the link editor assumes that it is updating a pointer
+that is part of a machine code instruction using pc-relative addressing.
+The address of the relocated pointer is implicitly added
+to its value when the running program uses it.
+.It Fa r_length
+Contains the log base 2 of the length of the pointer in bytes;
+0 for 1-byte displacements, 1 for 2-byte displacements,
+2 for 4-byte displacements.
+.It Fa r_extern
+Set if this relocation requires an external reference;
+the link editor must use a symbol address to update the pointer.
+When the
+.Fa r_extern
+bit is clear, the relocation is
+.Sq local ;
+the link editor updates the pointer to reflect
+changes in the load addresses of the various segments,
+rather than changes in the value of a symbol (except when
+.Fa r_baserel
+is also set (see below).
+In this case, the content of the
+.Fa r_symbolnum
+field is an
+.Fa n_type
+value (see below);
+this type field tells the link editor
+what segment the relocated pointer points into.
+.It Fa r_baserel
+If set, the symbol, as identified by the
+.Fa r_symbolnum
+field, is to be relocated to an offset into the Global Offset Table.
+At run-time, the entry in the Global Offset Table at this offset is set to
+be the address of the symbol.
+.It Fa r_jmptable
+If set, the symbol, as identified by the
+.Fa r_symbolnum
+field, is to be relocated to an offset into the Procedure Linkage Table.
+.It Fa r_relative
+If set, this relocation is relative to the (run-time) load address of the
+image this object file is going to be a part of.
+This type of relocation
+only occurs in shared objects.
+.It Fa r_copy
+If set, this relocation record identifies a symbol whose contents should
+be copied to the location given in
+.Fa r_address .
+The copying is done by the run-time link-editor from a suitable data
+item in a shared object.
+.El
+.Pp
+Symbols map names to addresses (or more generally, strings to values).
+Since the link-editor adjusts addresses,
+a symbol's name must be used to stand for its address
+until an absolute value has been assigned.
+Symbols consist of a fixed-length record in the symbol table
+and a variable-length name in the string table.
+The symbol table is an array of
+.Fa nlist
+structures:
+.Bd -literal -offset indent
+struct nlist {
+ union {
+ char *n_name;
+ long n_strx;
+ } n_un;
+ unsigned char n_type;
+ char n_other;
+ short n_desc;
+ unsigned long n_value;
+};
+.Ed
+.Pp
+The fields are used as follows:
+.Bl -tag -width n_un.n_strx
+.It Fa n_un.n_strx
+Contains a byte offset into the string table
+for the name of this symbol.
+When a program accesses a symbol table with the
+.Xr nlist 3
+function,
+this field is replaced with the
+.Fa n_un.n_name
+field, which is a pointer to the string in memory.
+.It Fa n_type
+Used by the link editor to determine
+how to update the symbol's value.
+The
+.Fa n_type
+field is broken down into three sub-fields using bitmasks.
+The link editor treats symbols with the
+.Dv N_EXT
+type bit set as
+.Sq external
+symbols and permits references to them from other binary files.
+The
+.Dv N_TYPE
+mask selects bits of interest to the link editor:
+.Bl -tag -width N_TEXT
+.It Dv N_UNDF
+An undefined symbol.
+The link editor must locate an external symbol with the same name
+in another binary file to determine the absolute value of this symbol.
+As a special case, if the
+.Fa n_value
+field is nonzero and no binary file in the link-edit defines this symbol,
+the link-editor will resolve this symbol to an address
+in the bss segment,
+reserving an amount of bytes equal to
+.Fa n_value .
+If this symbol is undefined in more than one binary file
+and the binary files do not agree on the size,
+the link editor chooses the greatest size found across all binaries.
+.It Dv N_ABS
+An absolute symbol.
+The link editor does not update an absolute symbol.
+.It Dv N_TEXT
+A text symbol.
+This symbol's value is a text address and
+the link editor will update it when it merges binary files.
+.It Dv N_DATA
+A data symbol; similar to
+.Dv N_TEXT
+but for data addresses.
+The values for text and data symbols are not file offsets but
+addresses; to recover the file offsets, it is necessary
+to identify the loaded address of the beginning of the corresponding
+section and subtract it, then add the offset of the section.
+.It Dv N_BSS
+A bss symbol; like text or data symbols but
+has no corresponding offset in the binary file.
+.It Dv N_FN
+A filename symbol.
+The link editor inserts this symbol before
+the other symbols from a binary file when
+merging binary files.
+The name of the symbol is the filename given to the link editor,
+and its value is the first text address from that binary file.
+Filename symbols are not needed for link-editing or loading,
+but are useful for debuggers.
+.El
+.Pp
+The
+.Dv N_STAB
+mask selects bits of interest to symbolic debuggers
+such as
+.Xr gdb 1 ;
+the values are described in
+.Xr stab 5 .
+.It Fa n_other
+This field provides information on the nature of the symbol independent of
+the symbol's location in terms of segments as determined by the
+.Fa n_type
+field.
+Currently, the lower 4 bits of the
+.Fa n_other
+field hold one of two values:
+.Dv AUX_FUNC
+and
+.Dv AUX_OBJECT
+(see
+.In link.h
+for their definitions).
+.Dv AUX_FUNC
+associates the symbol with a callable function, while
+.Dv AUX_OBJECT
+associates the symbol with data, irrespective of their locations in
+either the text or the data segment.
+This field is intended to be used by
+.Xr ld 1
+for the construction of dynamic executables.
+.It Fa n_desc
+Reserved for use by debuggers; passed untouched by the link editor.
+Different debuggers use this field for different purposes.
+.It Fa n_value
+Contains the value of the symbol.
+For text, data and bss symbols, this is an address;
+for other symbols (such as debugger symbols),
+the value may be arbitrary.
+.El
+.Pp
+The string table consists of an
+.Em unsigned long
+length followed by null-terminated symbol strings.
+The length represents the size of the entire table in bytes,
+so its minimum value (or the offset of the first string)
+is always 4 on 32-bit machines.
+.Sh SEE ALSO
+.Xr as 1 ,
+.Xr gdb 1 ,
+.Xr ld 1 ,
+.Xr brk 2 ,
+.Xr execve 2 ,
+.Xr nlist 3 ,
+.Xr core 5 ,
+.Xr elf 5 ,
+.Xr link 5 ,
+.Xr stab 5
+.Sh HISTORY
+The
+.In a.out.h
+include file appeared in
+.At v7 .
+.Sh BUGS
+Since not all of the supported architectures use the
+.Fa a_midmag
+field,
+it can be difficult to determine what
+architecture a binary will execute on
+without examining its actual machine code.
+Even with a machine identifier,
+the byte order of the
+.Fa exec
+header is machine-dependent.
diff --git a/share/man/man5/acct.5 b/share/man/man5/acct.5
new file mode 100644
index 0000000..48283a5
--- /dev/null
+++ b/share/man/man5/acct.5
@@ -0,0 +1,131 @@
+.\" Copyright (c) 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)acct.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd May 15, 2007
+.Dt ACCT 5
+.Os
+.Sh NAME
+.Nm acct
+.Nd execution accounting file
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/acct.h
+.Sh DESCRIPTION
+The kernel maintains the following
+.Fa acct
+information structure for all
+processes.
+If a process terminates, and accounting is enabled,
+the kernel calls the
+.Xr acct 2
+function call to prepare and append the record
+to the accounting file.
+.Bd -literal
+#define AC_COMM_LEN 16
+
+/*
+ * Accounting structure version 2 (current).
+ * The first byte is always zero.
+ * Time units are microseconds.
+ */
+
+struct acctv2 {
+ uint8_t ac_zero; /* zero identifies new version */
+ uint8_t ac_version; /* record version number */
+ uint16_t ac_len; /* record length */
+
+ char ac_comm[AC_COMM_LEN]; /* command name */
+ float ac_utime; /* user time */
+ float ac_stime; /* system time */
+ float ac_etime; /* elapsed time */
+ time_t ac_btime; /* starting time */
+ uid_t ac_uid; /* user id */
+ gid_t ac_gid; /* group id */
+ float ac_mem; /* average memory usage */
+ float ac_io; /* count of IO blocks */
+ __dev_t ac_tty; /* controlling tty */
+
+ uint16_t ac_len2; /* record length */
+ union {
+ __dev_t ac_align; /* force v1 compatible alignment */
+
+#define AFORK 0x01 /* forked but not exec'ed */
+/* ASU is no longer supported */
+#define ASU 0x02 /* used super-user permissions */
+#define ACOMPAT 0x04 /* used compatibility mode */
+#define ACORE 0x08 /* dumped core */
+#define AXSIG 0x10 /* killed by a signal */
+#define ANVER 0x20 /* new record version */
+
+ uint8_t ac_flag; /* accounting flags */
+ } ac_trailer;
+
+#define ac_flagx ac_trailer.ac_flag
+};
+.Ed
+.Pp
+If a terminated process was created by an
+.Xr execve 2 ,
+the name of the executed file (at most ten characters of it)
+is saved in the field
+.Fa ac_comm
+and its status is saved by setting one of more of the following flags in
+.Fa ac_flag :
+.Dv AFORK ,
+.Dv ACOMPAT ,
+.Dv ACORE
+and
+.Dv ASIG .
+.Dv ASU
+is no longer supported.
+.Dv ANVER
+is always set in the above structure.
+.Sh SEE ALSO
+.Xr lastcomm 1 ,
+.Xr acct 2 ,
+.Xr execve 2 ,
+.Xr sa 8
+.Sh HISTORY
+A
+.Nm
+file format appeared in
+.At v7 .
+The current record format was introduced on May 2007.
+It is backwards compatible with the previous format,
+which is still documented in
+.In sys/acct.h
+and supported by
+.Xr lastcomm 1
+and
+.Xr sa 8 .
diff --git a/share/man/man5/ar.5 b/share/man/man5/ar.5
new file mode 100644
index 0000000..1796795
--- /dev/null
+++ b/share/man/man5/ar.5
@@ -0,0 +1,234 @@
+.\" Copyright (c) 2007 Joseph Koshy. 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 Joseph Koshy ``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 Joseph Koshy 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$
+.\"
+.Dd September 07, 2007
+.Os
+.Dt AR 5
+.Sh NAME
+.Nm ar
+.Nd format of archives managed by ar(1) and ranlib(1)
+.Sh SYNOPSIS
+.In ar.h
+.Sh DESCRIPTION
+An archive managed by the
+.Xr ar 1
+and
+.Xr ranlib 1
+utilities is a single file that stores the individual members of the
+archive along with metadata for each member.
+There are two major variants of the
+.Xr ar 1
+archive format, the BSD variant and the SVR4/GNU variant.
+Both variants are described by this manual page.
+.Pp
+The header file
+.In ar.h
+defines constants and structures used to describe the layout
+of these archives.
+.Ss Archive Layout
+.Xr ar 1
+archives start with a string of magic bytes
+.Qq !<arch>\en
+(constant
+.Dv ARMAG
+in header
+.In ar.h ) .
+The content of the archive follows the magic bytes.
+Each member stored in the archive is preceded by a fixed size
+archive header that stores file permissions, last modification
+time, the owner, and the group of the archived file.
+.Pp
+Archive headers start at an even byte offset in the archive
+file.
+If the length of the preceding archive member was odd, then an extra
+newline character
+.Dq "\en"
+is used as padding.
+.Pp
+The archive header comprises six fixed-size ASCII strings followed
+by a two character trailer (see
+.Vt "struct ar_hdr"
+in header file
+.In ar.h Ns ):
+.Bd -literal
+struct ar_hdr {
+ char ar_name[16]; /* name */
+ char ar_date[12]; /* modification time */
+ char ar_uid[6]; /* user id */
+ char ar_gid[6]; /* group id */
+ char ar_mode[8]; /* octal file permissions */
+ char ar_size[10]; /* size in bytes */
+ char ar_fmag[2]; /* consistency check */
+};
+.Ed
+.Pp
+Unused characters in the header are filled with space (ASCII 20H)
+characters.
+Each field of the header abuts the next without additional padding.
+.Pp
+The members of the archive header are as follows:
+.Bl -tag -width "Va ar_name" -compact
+.It Va ar_date
+This field holds the decimal representation of the
+modification time, in seconds since the epoch, of the archive
+member.
+.It Va ar_fmag
+This trailer field holds the two characters
+.Qq `\en
+(constant
+.Dv ARFMAG
+defined in header file
+.In ar.h Ns ),
+and is used for consistency checks.
+.It Va ar_gid
+This field holds the decimal representation of the numeric
+user id of the creator of the member.
+.It Va ar_mode
+This field holds octal representation of the file permissions
+for the member.
+.It Va ar_name
+This field holds the name of an archive member.
+The usage of this field depends on the format variant:
+.Bl -tag -width "SVR4/GNU" -compact
+.It BSD
+In the BSD variant, names that are shorter than 16 characters and
+without embedded spaces are stored directly in this field.
+If a name has an embedded space, or if it is longer than 16
+characters, then the string
+.Qq "#1/"
+followed by the decimal representation of the length of the file name
+is placed in this field.
+The actual file name is stored immediately after the archive header.
+The content of the archive member follows the file name.
+The
+.Va ar_size
+field of the header (see below) will then hold the sum of the size of
+the file name and the size of the member.
+.It SVR4/GNU
+In the SVR4/GNU variant, names up to 15 characters in length are
+stored directly in this field, and are terminated by a
+.Qq /
+(ASCII 2FH) character.
+Names larger than 15 characters in length are stored in a special
+archive string table member (see
+.Sx "Archive String Table"
+below), and the
+.Va ar_name
+field holds the string
+.Qq "/"
+followed by the decimal representation of the offset in the archive
+string table of the actual name.
+.El
+.It Va ar_size
+In the SVR4/GNU variant, this field holds the decimal representation
+of actual size in bytes of the archived file.
+In the BSD variant, for member names that use the
+.Va ar_name
+field directly, this field holds the decimal representation of the
+actual size in bytes of the archived member.
+For member names that use the extension mechanism described above, the
+field will hold the sum of the sizes, in bytes, of the filename and the
+archive member.
+.It Va ar_uid
+This field holds the decimal representation of the numeric
+group id of the creator of the member.
+.El
+.Ss Archive Symbol Table
+An archive may additionally contain an archive symbol table
+used by the link editor,
+.Xr ld 1 .
+This symbol table has the member name
+.Qq __.SYMDEF
+in the BSD variant of the archive format, and the name
+.Qq /
+in the SVR4/GNU variant.
+.Pp
+The format of the symbol table depends on the format variant:
+.Bl -tag -width "SVR4/GNU" -compact
+.It BSD
+In the BSD variant, the symbol table has 4 parts encoded in
+a machine dependent manner:
+.Bl -enum -compact
+.It
+The first part is a binary value containing size in bytes of the
+second part encoded as a C
+.Dq long .
+.It
+The second part is a list of
+.Vt struct ranlib
+structures (see
+.In ranlib.h Ns ).
+Each ranlib structure describes one symbol and comprises of
+two C
+.Dq long
+values.
+The first
+.Dq long
+is a zero-based offset into the string table in the fourth part
+for the symbol's name.
+The second
+.Dq long
+is an offset from the beginning of the archive to the start
+of the archive header for the member that defines the symbol.
+.It
+The third part is a binary value denoting the length of the
+string table contained in the fourth part.
+.It
+The fourth part is a string table containing NUL-terminated
+strings.
+.El
+.It SVR4/GNU
+In the SVR4/GNU variant, the symbol table comprises of three parts
+which follow each other without padding:
+.Bl -enum -compact
+.It
+The first part comprises of a count of entries in the symbol table,
+stored a 4 byte binary value in MSB first order.
+.It
+The next part is an array of 4 byte file offsets within the archive
+to archive header for members that define the symbol in question.
+Each offset in stored in MSB first order.
+.It
+The third part is a string table, that contains NUL-terminated
+strings for the symbols in the symbol table.
+.El
+.El
+.Ss Archive String Table
+In the SVR4/GNU variant of the
+.Xr ar 1
+archive format, long file names are stored in a separate
+archive string table and referenced from the archive header
+for each member.
+Each file name is terminated by the string
+.Qq /\en .
+The string table itself has a name of
+.Qq // .
+.Sh SEE ALSO
+.Xr ar 1 ,
+.Xr ranlib 1 ,
+.Xr archive 3 ,
+.Xr elf 3 ,
+.Xr gelf 3 ,
+.Xr elf 5
diff --git a/share/man/man5/bluetooth.device.conf.5 b/share/man/man5/bluetooth.device.conf.5
new file mode 100644
index 0000000..d8abb9e
--- /dev/null
+++ b/share/man/man5/bluetooth.device.conf.5
@@ -0,0 +1,186 @@
+.\" Copyright (c) 2005 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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$
+.\"
+.Dd May 27, 2008
+.Dt BLUETOOTH.DEVICE.CONF 5
+.Os
+.Sh NAME
+.Nm bluetooth.device.conf
+.Nd Bluetooth device configuration file
+.Sh DESCRIPTION
+Bluetooth device configuration framework provides ability to adjust certain
+Bluetooth device parameters on per-device basis.
+.Pp
+Bluetooth device configuration files are plain text files that should conform
+to basic
+.Xr sh 1
+syntax.
+Even though Bluetooth device are not exactly shell scripts,
+they are parsed and passed through shell
+.Ic eval
+command.
+This makes it possible to use various shell tricks in the Bluetooth device
+configuration files.
+.Pp
+The
+.Pa /etc/rc.d/bluetooth
+script is used to start and stop Bluetooth devices.
+This script is not executed by default when system boots.
+It is called by
+.Xr devd 8
+in response to Bluetooth device arrival and departure events.
+It is possible to execute this script by hand if required.
+The script accepts Bluetooth device driver name as an extra parameter.
+.Pp
+The system wide Bluetooth device configuration file is called
+.Pa /etc/defaults/\:bluetooth.device.conf .
+Configuration parameters set in the system wide Bluetooth device configuration
+file apply to every Bluetooth device connected to the system.
+.Pp
+Configuration parameters overrides for the specific Bluetooth device
+should be placed in the
+.Pa /etc/bluetooth/ Ns Ar DEVICE_DRIVER_NAME Ns Pa .conf
+file.
+Where
+.Ar DEVICE_DRIVER_NAME
+is the device driver name of the Bluetooth device.
+.Pp
+The following list provides a name and short description for each
+variable that can be set in a Bluetooth device configuration file.
+.Bl -tag -width indent-two
+.It Va authentication_enable
+.Pq Vt bool
+The
+.Va authentication_enable
+parameter controls if the device requires to authenticate the remote device
+at connection setup.
+If set to
+.Dq Li YES ,
+the device will try to authenticate the other device at connection setup.
+Bluetooth authentication requests are handled by
+.Xr hcsecd 8
+daemon.
+.It Va class
+.Pq Vt str
+The
+.Va class
+parameter is used to indicate the capabilities of the device to
+other devices.
+For more details see
+.Dq Assigned Numbers - Bluetooth Baseband
+document.
+.It Va connectable
+.Pq Vt bool
+The
+.Va connectable
+parameter controls whether or not the device should periodically scan for
+page attempts from other devices.
+If set to
+.Dq Li YES ,
+the device will periodically scan for page attempts from other devices.
+.It Va discoverable
+.Pq Vt bool
+The
+.Va discoverable
+parameter controls whether or not the device should periodically scan for
+inquiry requests from other devices.
+If set to
+.Dq Li YES ,
+the device will periodically scan for inquiry requests from other devices.
+.It Va encryption_mode
+.Pq Vt str
+The
+.Va encryption_mode
+parameter controls if the device requires encryption to the remote device
+at connection setup.
+At connection setup, only the devices with the
+.Va authentication_enable
+parameter enabled and
+.Va encryption_mode
+parameter enabled will try to encrypt the connection to the other device.
+Possible values are
+.Dq Li NONE
+encryption disabled,
+.Dq Li P2P
+encryption for only point-to-point packets,
+or
+.Dq Li ALL
+encryption for both point-to-point and broadcast packets.
+.It Va hci_debug_level
+.Pq Vt int
+HCI node debug level.
+Higher values mean more verbose output.
+.It Va l2cap_debug_level
+.Pq Vt int
+L2CAP node debug level.
+Higher values mean more verbose output.
+.It Va local_name
+.Pq Vt str
+The
+.Va local_name
+parameter provides the ability to modify the user friendly name for the device.
+.It Va role_switch
+.Pq Vt bool
+The
+.Va role_switch
+parameter controls whether the local device should perform role switch.
+By default, if role switch is supported, the local device will try to perform
+role switch and become Master on incoming connection.
+Some devices do not support role switch and thus incoming connections from
+such devices will fail.
+If
+.Va role switch
+is disabled then accepting device will remain Slave.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /etc/defaults/bluetooth.device.conf" -compact
+.It Pa /etc/defaults/bluetooth.device.conf
+.It Pa /etc/rc.d/bluetooth
+.El
+.Sh EXAMPLES
+The
+.Pa /etc/bluetooth/ubt0.conf
+file should be used to specify configuration parameters overrides for the
+first USB Bluetooth device
+(device driver name is
+.Li ubt0 ) .
+.Pp
+The
+.Pa /etc/bluetooth/ubt1.conf
+file should be used to specify configuration parameters overrides for the
+second USB Bluetooth device.
+.Sh SEE ALSO
+.Xr ng_bt3c 4 ,
+.Xr ng_h4 4 ,
+.Xr ng_hci 4 ,
+.Xr ng_l2cap 4 ,
+.Xr ng_ubt 4 ,
+.Xr devd 8 ,
+.Xr hccontrol 8 ,
+.Xr hcsecd 8 ,
+.Xr l2control 8
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
diff --git a/share/man/man5/bluetooth.hosts.5 b/share/man/man5/bluetooth.hosts.5
new file mode 100644
index 0000000..bda4d92
--- /dev/null
+++ b/share/man/man5/bluetooth.hosts.5
@@ -0,0 +1,63 @@
+.\" Copyright (c) 2003 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: bluetooth.hosts.5,v 1.5 2003/05/20 22:52:39 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd May 8, 2003
+.Dt BLUETOOTH.HOSTS 5
+.Os
+.Sh NAME
+.Nm bluetooth.hosts
+.Nd Bluetooth host name database
+.Sh DESCRIPTION
+The
+.Pa /etc/bluetooth/hosts
+file contains information regarding the known Bluetooth hosts.
+For each Bluetooth host a single line should be present with the
+following information:
+.Bd -unfilled -offset indent
+Bluetooth address
+official host name
+aliases
+.Ed
+.Pp
+Items are separated by any number of blanks and/or tab characters.
+A
+.Ql #
+indicates the beginning of a comment; characters up to the end of the line are
+not interpreted by routines which search the file.
+.Pp
+Bluetooth addresses are specified as six hex bytes separated by columns
+(BD_ADDR).
+Host names may contain any printable character other than a field
+delimiter, newline, or comment character.
+.Sh FILES
+.Bl -tag -width ".Pa /etc/bluetooth/hosts" -compact
+.It Pa /etc/bluetooth/hosts
+.El
+.Sh SEE ALSO
+.Xr bluetooth 3
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
diff --git a/share/man/man5/bluetooth.protocols.5 b/share/man/man5/bluetooth.protocols.5
new file mode 100644
index 0000000..64a7dd5
--- /dev/null
+++ b/share/man/man5/bluetooth.protocols.5
@@ -0,0 +1,62 @@
+.\" Copyright (c) 2003 Maksim Yevmenkin <m_evmenkin@yahoo.com>
+.\" 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.
+.\"
+.\" $Id: bluetooth.protocols.5,v 1.1 2003/05/20 22:52:39 max Exp $
+.\" $FreeBSD$
+.\"
+.Dd May 8, 2003
+.Dt BLUETOOTH.PROTOCOLS 5
+.Os
+.Sh NAME
+.Nm bluetooth.protocols
+.Nd Bluetooth Protocol Service Multiplexor database
+.Sh DESCRIPTION
+The
+.Pa /etc/bluetooth/protocols
+file contains information regarding the known Bluetooth Protocol Service
+Multiplexor values.
+For each Bluetooth Protocol Service Multiplexor a single line should be
+present with the following information:
+.Bd -unfilled -offset indent
+official Protocol Service Multiplexor name
+official Protocol Service Multiplexor value
+aliases
+.Ed
+.Pp
+Items are separated by any number of blanks and/or tab characters.
+A
+.Ql #
+indicates the beginning of a comment; characters up to the end of the line are
+not interpreted by routines which search the file.
+.Pp
+Bluetooth Protocol Service Multiplexor names may contain any printable
+character other than a field delimiter, newline, or comment character.
+.Sh FILES
+.Bl -tag -width ".Pa /etc/bluetooth/hosts" -compact
+.It Pa /etc/bluetooth/protocols
+.El
+.Sh SEE ALSO
+.Xr bluetooth 3
+.Sh AUTHORS
+.An Maksim Yevmenkin Aq m_evmenkin@yahoo.com
diff --git a/share/man/man5/boot.config.5 b/share/man/man5/boot.config.5
new file mode 100644
index 0000000..41cc55c
--- /dev/null
+++ b/share/man/man5/boot.config.5
@@ -0,0 +1,103 @@
+.\" Copyright (c) 2007 Daniel Gerzo <danger@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$
+.Dd May 13, 2007
+.Dt BOOT.CONFIG 5
+.Os
+.Sh NAME
+.Nm boot.config
+.Nd "Configuration file for the boot blocks"
+.Sh DESCRIPTION
+The
+.Nm
+file contains options for the
+.Fx
+boot block code.
+.Pp
+When the
+.Fx
+boot loader runs, it searches the
+.Dq Li a
+slice of the boot partition for a
+.Nm
+file (as a result, slices which are missing an
+.Dq Li a
+partition require user intervention during the boot process).
+If the
+.Nm
+file is found, its contents are used as the default configuration
+options for the boot block code and are echoed to the system console.
+.Pp
+A valid format of this file is to put BIOS drive number, a controller
+type, a unit number, a partition, a kernel file name, and any other
+valid
+.Xr boot 8
+option on a single line, as it is done at the
+.Dq Li "boot:"
+prompt.
+.Pp
+The options related to the boot image selection described below and all
+the other options available for
+.Nm
+are documented in detail in the
+.Xr boot 8
+manual page.
+.Sh EXAMPLES
+The command:
+.Bd -literal -offset indent
+# echo "-P" > /boot.config
+.Ed
+.Pp
+will activate the serial console of
+.Fx .
+.Pp
+The command:
+.Bd -literal -offset indent
+# echo "1:ad(1,a)/boot/loader" > /boot.config
+.Ed
+.Pp
+will instruct the second stage of
+.Xr boot 8
+on the first disk to boot with the third
+.Xr boot 8
+stage from the second disk.
+.Pp
+The command:
+.Bd -literal -offset indent
+# echo "1:ad(1,a)/boot/loader -P" > /boot.config
+.Ed
+.Pp
+will do both of the above.
+.Sh FILES
+.Bl -tag -width /boot.config -compact
+.It Pa /boot.config
+parameters for the boot blocks (optional)
+.El
+.Sh SEE ALSO
+.Xr boot 8 ,
+.Xr loader 8
+.Sh AUTHORS
+This manual page was written by
+.An Daniel Gerzo Aq danger@FreeBSD.org .
diff --git a/share/man/man5/core.5 b/share/man/man5/core.5
new file mode 100644
index 0000000..2a1e16b
--- /dev/null
+++ b/share/man/man5/core.5
@@ -0,0 +1,110 @@
+.\" Copyright (c) 1980, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)core.5 8.3 (Berkeley) 12/11/93
+.\" $FreeBSD$
+.\"
+.Dd January 9, 2002
+.Dt CORE 5
+.Os
+.Sh NAME
+.Nm core
+.Nd memory image file format
+.Sh SYNOPSIS
+.In sys/param.h
+.Sh DESCRIPTION
+A small number of signals which cause abnormal termination of a process
+also cause a record of the process's in-core state to be written
+to disk for later examination by one of the available debuggers.
+(See
+.Xr sigaction 2 . )
+This memory image is written to a file named by default
+.Nm programname.core
+in the working directory;
+provided the terminated process had write permission in the directory,
+and provided the abnormality did not cause
+a system crash.
+(In this event, the decision to save the core file is arbitrary, see
+.Xr savecore 8 . )
+.Pp
+The maximum size of a core file is limited by
+.Xr setrlimit 2 .
+Files which would be larger than the limit are not created.
+.Pp
+The name of the file is controlled via the
+.Xr sysctl 8
+variable
+.Va kern.corefile .
+The contents of this variable describes a filename to store
+the core image to.
+This filename can be absolute, or relative (which
+will resolve to the current working directory of the program
+generating it).
+Any sequence of
+.Em \&%N
+in this filename template will be replaced by the process name,
+.Em \&%P
+by the processes PID, and
+.Em \&%U
+by the UID.
+The name defaults to
+.Em \&%N.core ,
+yielding the traditional
+.Fx
+behaviour.
+.Pp
+By default, a process that changes user or group credentials whether
+real or effective will not create a corefile.
+This behaviour can be
+changed to generate a core dump by setting the
+.Xr sysctl 8
+variable
+.Va kern.sugid_coredump
+to 1.
+.Sh EXAMPLES
+In order to store all core images in per-user private areas under
+.Pa /var/coredumps ,
+the following
+.Xr sysctl 8
+command can be used:
+.Pp
+.Dl sysctl kern.corefile="/var/coredumps/\&%U/\&%N.core"
+.Sh SEE ALSO
+.Xr gdb 1 ,
+.Xr kgdb 1 ,
+.Xr setrlimit 2 ,
+.Xr sigaction 2 ,
+.Xr sysctl 8
+.Sh HISTORY
+A
+.Nm
+file format appeared in
+.At v6 .
diff --git a/share/man/man5/devfs.5 b/share/man/man5/devfs.5
new file mode 100644
index 0000000..d932425
--- /dev/null
+++ b/share/man/man5/devfs.5
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1996
+.\" Mike Pritchard <mpp@FreeBSD.org>. All rights reserved.
+.\"
+.\" Copyright (c) 1992, 1993, 1994
+.\" The Regents of the University of California. All rights reserved.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software donated to Berkeley by
+.\" Jan-Simon Pendry.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 14, 1996
+.Dt DEVFS 5
+.Os
+.Sh NAME
+.Nm devfs
+.Nd device file system
+.Sh SYNOPSIS
+.Bd -literal
+devfs /dev devfs rw 0 0
+.Ed
+.Sh DESCRIPTION
+The device file system, or
+.Nm ,
+provides access to kernel's device
+namespace in the global file system namespace.
+The conventional mount point is
+.Pa /dev .
+.Pp
+The file system includes several directories, links, symbolic links
+and devices, some of which can also be written.
+In a chroot'ed
+environment,
+.Nm
+can be used to create a new
+.Pa /dev
+mount point.
+.Pp
+The
+.Xr mknod 8
+tool can be used to recover deleted device entries under
+.Nm .
+.Sh FILES
+.Bl -tag -width /dev/XXXX -compact
+.It Pa /dev
+The normal
+.Nm
+mount point.
+.El
+.Sh EXAMPLES
+To mount a
+.Nm
+volume located on
+.Pa /dev :
+.Pp
+.Dl "mount -t devfs devfs /dev"
+.Sh SEE ALSO
+.Xr devfs 8 ,
+.Xr mount 8
+.Sh HISTORY
+The
+.Nm
+file system first appeared in
+.Fx 2.0 .
+The
+.Nm
+manual page first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+The
+.Nm
+manual page was written by
+.An Mike Pritchard Aq mpp@FreeBSD.org .
diff --git a/share/man/man5/devfs.conf.5 b/share/man/man5/devfs.conf.5
new file mode 100644
index 0000000..9d83726
--- /dev/null
+++ b/share/man/man5/devfs.conf.5
@@ -0,0 +1,140 @@
+.\" Copyright (c) 2004 Roland Smith <rsmith@xs4all.nl>
+.\" 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$
+.\"
+.Dd May 17, 2005
+.Dt DEVFS.CONF 5
+.Os
+.Sh NAME
+.Nm devfs.conf
+.Nd boot-time devfs configuration information
+.Sh DESCRIPTION
+The
+.Nm
+file provides an easy way to set ownership and permissions, or create
+links for devices available at boot.
+.Pp
+It does not work for devices plugged in and out after the system is up
+and running, e.g.\& USB devices.
+See
+.Xr devfs.rules 5
+for setting ownership and permissions for all device nodes, and
+.Xr devd.conf 5
+for actions to be taken when devices are attached or detached.
+.Pp
+Lines starting with a hash sign
+.Pq Ql #
+and empty lines are ignored.
+The lines that specify
+.Nm
+rules consist of three parameters separated by whitespace:
+.Bl -tag -width indent
+.It Ar action
+The action to take for the device.
+The action names are only significant to the first unique character.
+.It Ar devname
+The name of the device created by
+.Xr devfs 5 .
+.It Ar arg
+The argument of the
+.Ar action .
+.El
+.Pp
+The actions currently supported are:
+.Bl -tag -width indent
+.It Ic link
+This action creates a symbolic link named
+.Ar arg
+that points to
+.Ar devname ,
+the name of the device created by
+.Xr devfs 5 .
+.It Ic own
+This action changes the ownership of
+.Ar devname .
+The
+.Ar arg
+parameter must be in the form of an
+.Ar owner Ns : Ns Ar group
+pair, in the same format used by
+.Xr chown 8 .
+.It Ic perm
+This action changes the permissions of
+.Ar devname .
+The
+.Ar arg
+parameter must be a
+.Ar mode
+as explained in
+.Xr chmod 1 .
+.El
+.Sh FILES
+.Bl -tag -compact
+.It Pa /etc/devfs.conf
+.It Pa /usr/share/examples/etc/devfs.conf
+.El
+.Sh EXAMPLES
+To create a
+.Pa /dev/cdrom
+link that points to the first
+.Xr SCSI 4
+or
+.Xr atapicam 4
+CD-ROM,
+the following may be added to
+.Nm :
+.Bd -literal -offset indent
+link cd0 cdrom
+.Ed
+.Pp
+Similarly, to link
+.Pa /dev/cdrom
+to the first ATAPI CD-ROM device, the following action may be used:
+.Bd -literal -offset indent
+link acd0 cdrom
+.Ed
+.Pp
+To set the owner of a device, the
+.Ic own
+action may be specified:
+.Bd -literal -offset indent
+own cd0 root:cdrom
+.Ed
+.Pp
+To set the permissions of a device, a
+.Ic perm
+action should be used:
+.Bd -literal -offset indent
+perm cd0 0660
+.Ed
+.Sh SEE ALSO
+.Xr chmod 1 ,
+.Xr devd.conf 5 ,
+.Xr devfs 5 ,
+.Xr devfs.rules 5 ,
+.Xr chown 8
+.Sh AUTHORS
+This manual page was written by
+.An "Roland Smith" Aq rsmith@xs4all.nl .
diff --git a/share/man/man5/devfs.rules.5 b/share/man/man5/devfs.rules.5
new file mode 100644
index 0000000..3722cea
--- /dev/null
+++ b/share/man/man5/devfs.rules.5
@@ -0,0 +1,117 @@
+.\" Copyright (c) 2004 Roland Smith <rsmith@xs4all.nl>
+.\" 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$
+.\"
+.Dd January 30, 2006
+.Dt DEVFS.RULES 5
+.Os
+.Sh NAME
+.Nm devfs.rules
+.Nd devfs configuration information
+.Sh DESCRIPTION
+The
+.Nm
+file provides an easy way to create and apply
+.Xr devfs 8
+rules, even for devices that are not available at boot.
+.Pp
+For devices available at boot, see
+.Xr devfs.conf 5 .
+.Pp
+The format of this file is simple.
+Empty lines and lines beginning with a hash sign
+.Pq Ql #
+are ignored.
+A line between brackets denotes the start of a ruleset.
+In the brackets should be the name of the ruleset and its number,
+separated by an equal sign.
+.Pp
+Other lines are rule specifications as documented in
+.Xr devfs 8 ,
+in the section
+.Sx "Rule Specification" .
+These lines are prepended with
+.Dq Li rule
+and are passed to
+.Xr devfs 8
+by the startup scripts of the system.
+It is important to put path elements that contain
+.Xr glob 3
+special characters between quotes.
+.Pp
+Rulesets should have a unique name and number.
+.Pp
+All rules that follow a ruleset declaration belong to that ruleset, until a
+new ruleset is started.
+.Pp
+One custom ruleset has to be enabled in
+.Pa /etc/rc.conf ,
+otherwise it will not be applied to the
+.Pa /dev
+file system by the default system startup process.
+For example, to enable a
+.Dq Li localrules
+ruleset for the
+.Pa /dev
+file system, you would have to use something like this in your
+.Pa rc.conf
+file:
+.Bd -literal -offset indent
+devfs_system_ruleset="localrules"
+.Ed
+.Sh FILES
+.Bl -tag -compact
+.It Pa /etc/devfs.rules
+.It Pa /etc/defaults/devfs.rules
+.El
+.Sh EXAMPLES
+To make all the partitions of
+.Xr da 4
+devices readable and writable by their owner and the
+.Dq Li usb
+group, the following rule may be used:
+.Pp
+.Dl "[localrules=10]"
+.Dl "add path 'da*s*' mode 0660 group usb"
+.Pp
+The first line declares and starts a new ruleset, with the name
+.Va localrules
+and the number 10.
+.Pp
+To make all the
+.Xr uscanner 4
+devices accessible to their owner and the
+.Dq Li usb
+group, a similar rule may be used:
+.Pp
+.Dl "add path 'uscanner*' mode 0660 group usb"
+.Sh SEE ALSO
+.Xr glob 3 ,
+.Xr devfs 5 ,
+.Xr devfs.conf 5 ,
+.Xr devfs 8
+.Sh AUTHORS
+This manual page was written by
+.An "Roland Smith" Aq rsmith@xs4all.nl .
diff --git a/share/man/man5/device.hints.5 b/share/man/man5/device.hints.5
new file mode 100644
index 0000000..578d278f
--- /dev/null
+++ b/share/man/man5/device.hints.5
@@ -0,0 +1,168 @@
+.\" Copyright (c) 2001
+.\" Kazutaka YOKOTA <yokota@zodiac.mech.utsunomiya-u.ac.jp>
+.\" 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 as
+.\" the first lines of this file unmodified.
+.\" 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$
+.\"
+.Dd October 7, 2001
+.Dt DEVICE.HINTS 5
+.Os
+.Sh NAME
+.Nm device.hints
+.Nd device resource hints
+.Sh DESCRIPTION
+The
+.Nm
+file is read in by the boot
+.Xr loader 8
+when the system is about to start, and its contents are
+passed to the kernel.
+It contains various variables to control the boot behavior of
+the kernel.
+These variables are typically
+.Dq device hints .
+.\" .Dq device hints ,
+.\" and other control variables.
+.Pp
+The file contains one variable per line.
+Lines starting with the
+.Ql #
+character are comments and are ignored by the boot loader.
+.Pp
+After the file is read by the boot loader, you may examine
+the variables with the
+.Ic show
+command, and may add a new variable, modify an existing one,
+or delete a variable with the
+.Ic set
+and
+.Ic unset
+commands of the boot loader
+(see
+.Xr loader 8 ) .
+.Pp
+After the system has started, you can dump these variables
+with the
+.Xr kenv 1
+command.
+.Sh DEVICE HINTS
+Device hint variables are used by device drivers to set up
+the device.
+They are most often used by ISA device drivers to specify
+where the driver will probe for the relevant devices, and what
+resources it will attempt to use.
+.Pp
+A device hint line looks like:
+.Pp
+.Sm off
+.D1 Li hint. Ar driver Li . Ar unit Li . Ar keyword Li = Qq Ar value
+.Sm on
+.Pp
+where
+.Ar driver
+is the name of a device driver,
+.Ar unit
+is the unit number, and
+.Ar keyword
+is the keyword of the hint.
+The keyword may be:
+.Pp
+.Bl -tag -width ".Li disabled" -compact -offset indent
+.It Li at
+specifies a bus to which the device is attached.
+.It Li port
+specifies the start address of I/O ports to be used by the device.
+.It Li portsize
+specifies the number of ports used by the device.
+.It Li irq
+is the interrupt line number to be used.
+.It Li drq
+is the DMA channel number.
+.It Li maddr
+specifies the physical memory address used by the device.
+.It Li msize
+specifies the physical memory size used by the device.
+.It Li flags
+sets various flag bits for the device.
+.It Li disabled
+can be set to
+.Qq 1
+to disable the device.
+.El
+.Pp
+A device driver may require one or more hint lines with these keywords,
+and may accept other keywords not listed here.
+Consult individual device drivers' manual pages for available
+keywords and their possible values.
+.\" .Sh CONTROL VARIABLES
+.\" Lines not starting with
+.\" .Dq hint.
+.\" specify other control variables for the kernel.
+.\" They look:
+.\" .Pp
+.\" .Dl <name>="<value>"
+.\" XXX
+.\" WE SHOULD LIST AVAILABLE VARIABLE NAMES AND THEIR POSSIBLE VALUES HERE!
+.\" .Pp
+.Sh FILES
+.Bl -tag -width ".Pa /sys/ Ns Ar ARCH Ns Pa /conf/GENERIC.hints" -compact
+.It Pa /boot/device.hints
+Device resource hints file.
+.It Pa /sys/ Ns Ar ARCH Ns Pa /conf/GENERIC.hints
+Sample resource hints for the
+.Pa GENERIC
+kernel.
+.It Pa /sys/ Ns Ar ARCH Ns Pa /conf/NOTES
+Notes on the kernel configuration file and device resource hints.
+.El
+.Sh EXAMPLES
+The following example sets up resources for the
+.Xr sio 4
+driver on the ISA bus:
+.Bd -literal -offset indent
+hint.sio.0.at="isa"
+hint.sio.0.port="0x3F8"
+hint.sio.0.flags="0x10"
+hint.sio.0.irq="4"
+.Ed
+.Pp
+The following example disables the ACPI driver:
+.Bd -literal -offset indent
+hint.acpi.0.disabled="1"
+.Ed
+.\" .Pp
+.\" A control variable may look like:
+.\" .Pp
+.\" .Bd -literal -offset indent
+.\" debug.acpi.layer="ACPI_RESOURCES"
+.\" .Ed
+.Sh SEE ALSO
+.Xr kenv 1 ,
+.Xr loader.conf 5 ,
+.Xr loader 8
+.Sh HISTORY
+The
+.Nm
+file first appeared in
+.Fx 5.0 .
diff --git a/share/man/man5/dir.5 b/share/man/man5/dir.5
new file mode 100644
index 0000000..c471043
--- /dev/null
+++ b/share/man/man5/dir.5
@@ -0,0 +1,160 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)dir.5 8.3 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.Dd April 19, 1994
+.Dt DIR 5
+.Os
+.Sh NAME
+.Nm dir ,
+.Nm dirent
+.Nd directory file format
+.Sh SYNOPSIS
+.In dirent.h
+.Sh DESCRIPTION
+Directories provide a convenient hierarchical method of grouping
+files while obscuring the underlying details of the storage medium.
+A directory file is differentiated from a plain file
+by a flag in its
+.Xr inode 5
+entry.
+It consists of records (directory entries) each of which contains
+information about a file and a pointer to the file itself.
+Directory entries may contain other directories
+as well as plain files; such nested directories are referred to as
+subdirectories.
+A hierarchy of directories and files is formed in this manner
+and is called a file system (or referred to as a file system tree).
+.\" An entry in this tree,
+.\" nested or not nested,
+.\" is a pathname.
+.Pp
+Each directory file contains two special directory entries; one is a pointer
+to the directory itself
+called dot
+.Ql .\&
+and the other a pointer to its parent directory called dot-dot
+.Ql \&.. .
+Dot and dot-dot
+are valid pathnames, however,
+the system root directory
+.Ql / ,
+has no parent and dot-dot points to itself like dot.
+.Pp
+File system nodes are ordinary directory files on which has
+been grafted a file system object, such as a physical disk or a
+partitioned area of such a disk.
+(See
+.Xr mount 2
+and
+.Xr mount 8 . )
+.Pp
+The directory entry format is defined in the file
+.In sys/dirent.h
+(which should not be included directly by applications):
+.Bd -literal
+#ifndef _SYS_DIRENT_H_
+#define _SYS_DIRENT_H_
+
+#include <machine/ansi.h>
+
+/*
+ * The dirent structure defines the format of directory entries returned by
+ * the getdirentries(2) system call.
+ *
+ * A directory entry has a struct dirent at the front of it, containing its
+ * inode number, the length of the entry, and the length of the name
+ * contained in the entry. These are followed by the name padded to a 4
+ * byte boundary with null bytes. All names are guaranteed null terminated.
+ * The maximum length of a name in a directory is MAXNAMLEN.
+ */
+
+struct dirent {
+ __uint32_t d_fileno; /* file number of entry */
+ __uint16_t d_reclen; /* length of this record */
+ __uint8_t d_type; /* file type, see below */
+ __uint8_t d_namlen; /* length of string in d_name */
+#ifdef _POSIX_SOURCE
+ char d_name[255 + 1]; /* name must be no longer than this */
+#else
+#define MAXNAMLEN 255
+ char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */
+#endif
+};
+
+/*
+ * File types
+ */
+#define DT_UNKNOWN 0
+#define DT_FIFO 1
+#define DT_CHR 2
+#define DT_DIR 4
+#define DT_BLK 6
+#define DT_REG 8
+#define DT_LNK 10
+#define DT_SOCK 12
+#define DT_WHT 14
+
+/*
+ * Convert between stat structure types and directory types.
+ */
+#define IFTODT(mode) (((mode) & 0170000) >> 12)
+#define DTTOIF(dirtype) ((dirtype) << 12)
+
+/*
+ * The _GENERIC_DIRSIZ macro gives the minimum record length which will hold
+ * the directory entry. This requires the amount of space in struct direct
+ * without the d_name field, plus enough space for the name with a terminating
+ * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary.
+ */
+#define _GENERIC_DIRSIZ(dp) \
+ ((sizeof (struct dirent) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3))
+
+#ifdef _KERNEL
+#define GENERIC_DIRSIZ(dp) _GENERIC_DIRSIZ(dp)
+#endif
+
+#endif /* !_SYS_DIRENT_H_ */
+.Ed
+.Sh SEE ALSO
+.Xr fs 5 ,
+.Xr inode 5
+.Sh HISTORY
+A
+.Nm
+file format appeared in
+.At v7 .
+.Sh BUGS
+The usage of the member d_type of struct dirent is unportable as it is
+.Fx Ns -specific .
+It also may fail on certain file systems, for example the cd9660 file system.
diff --git a/share/man/man5/disktab.5 b/share/man/man5/disktab.5
new file mode 100644
index 0000000..90700bc
--- /dev/null
+++ b/share/man/man5/disktab.5
@@ -0,0 +1,144 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)disktab.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd October 14, 2006
+.Dt DISKTAB 5
+.Os
+.Sh NAME
+.Nm disktab
+.Nd disk description file
+.Sh SYNOPSIS
+.In disklabel.h
+.Sh DESCRIPTION
+.Nm Disktab
+is a simple database which describes disk geometries and
+disk partition characteristics.
+It is used
+.\"by the formatter(\c
+.\"IR.Xr format 8 )
+.\"to determine how to format the disk, and
+to initialize the disk label on the disk.
+The format is patterned
+after the
+.Xr termcap 5
+terminal data base.
+Entries in
+.Nm
+consist of a number of `:'-separated fields.
+The
+first field for each entry gives the names by which a
+disk's entry may be selected, separated by `|' characters.
+The
+last name given should be a long name fully identifying
+the disk.
+.Pp
+The optional fields for each entry are:
+.Bl -column "indent" "boolx"
+.It Sy "ID Type Description"
+.It "\&ty str Type of disk (e.g. removable, winchester)"
+.It "\&dt str Type of controller (e.g."
+.Tn SMD , ESDI ,
+floppy)
+.It "\&ns num Number of sectors per track"
+.It "\&nt num Number of tracks per cylinder"
+.It "\&nc num Total number of cylinders on the disk"
+.It "\&sc num Number of sectors per cylinder, ns*nt default"
+.It "\&su num Number of sectors per unit, sc*nc default"
+.It "\&se num Sector size in bytes,"
+.Dv DEV_BSIZE
+default
+.It "\&sf bool Controller supports bad144-style bad sector forwarding"
+.It "\&rm num Rotation speed, rpm, 3600 default"
+.It "\&sk num Sector skew per track, default 0"
+.It "\&cs num Sector skew per cylinder, default 0"
+.It "\&hs num Headswitch time, usec, default 0"
+.It "\&ts num One-cylinder seek time, usec, default 0"
+.It "\&il num Sector interleave (n:1), 1 default"
+.It "\&d[0-4] num Drive-type-dependent parameters"
+.It "\&bs num Boot block size, default"
+.Dv BBSIZE
+.It "\&sb num Superblock size, default 0"
+.It "\&ba num Block size for partition `a' (bytes)"
+.It "\&bd num Block size for partition `d' (bytes)"
+.It "\&be num Block size for partition `e' (bytes)"
+.It "\&bf num Block size for partition `f' (bytes)"
+.It "\&bg num Block size for partition `g' (bytes)"
+.It "\&bh num Block size for partition `h' (bytes)"
+.It "\&fa num Fragment size for partition `a' (bytes)"
+.It "\&fd num Fragment size for partition `d' (bytes)"
+.It "\&fe num Fragment size for partition `e' (bytes)"
+.It "\&ff num Fragment size for partition `f' (bytes)"
+.It "\&fg num Fragment size for partition `g' (bytes)"
+.It "\&fh num Fragment size for partition `h' (bytes)"
+.It "\&oa num Offset of partition `a' in sectors"
+.It "\&ob num Offset of partition `b' in sectors"
+.It "\&oc num Offset of partition `c' in sectors"
+.It "\&od num Offset of partition `d' in sectors"
+.It "\&oe num Offset of partition `e' in sectors"
+.It "\&of num Offset of partition `f' in sectors"
+.It "\&og num Offset of partition `g' in sectors"
+.It "\&oh num Offset of partition `h' in sectors"
+.It "\&pa num Size of partition `a' in sectors"
+.It "\&pb num Size of partition `b' in sectors"
+.It "\&pc num Size of partition `c' in sectors"
+.It "\&pd num Size of partition `d' in sectors"
+.It "\&pe num Size of partition `e' in sectors"
+.It "\&pf num Size of partition `f' in sectors"
+.It "\&pg num Size of partition `g' in sectors"
+.It "\&ph num Size of partition `h' in sectors"
+.It "\&ta str Partition type of partition `a'"
+.Pf ( Bx 4.2
+file system, swap, etc)
+.It "\&tb str Partition type of partition `b'"
+.It "\&tc str Partition type of partition `c'"
+.It "\&td str Partition type of partition `d'"
+.It "\&te str Partition type of partition `e'"
+.It "\&tf str Partition type of partition `f'"
+.It "\&tg str Partition type of partition `g'"
+.It "\&th str Partition type of partition `h'"
+.El
+.Sh FILES
+.Bl -tag -width /etc/disktab -compact
+.It Pa /etc/disktab
+.El
+.Sh SEE ALSO
+.Xr getdiskbyname 3 ,
+.\" .Xr bsdlabel 5 ,
+.Xr bsdlabel 8 ,
+.Xr newfs 8
+.Sh HISTORY
+The
+.Nm
+description file appeared in
+.Bx 4.2 .
diff --git a/share/man/man5/elf.5 b/share/man/man5/elf.5
new file mode 100644
index 0000000..c534e2e
--- /dev/null
+++ b/share/man/man5/elf.5
@@ -0,0 +1,1321 @@
+.\" Copyright (c) 1999 Jeroen Ruigrok van der Werven
+.\" 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$
+.\"
+.Dd December 18, 2005
+.Dt ELF 5
+.Os
+.Sh NAME
+.Nm elf
+.Nd format of ELF executable binary files
+.Sh SYNOPSIS
+.In elf.h
+.Sh DESCRIPTION
+The header file
+.In elf.h
+defines the format of ELF executable binary files.
+Amongst these files are
+normal executable files, relocatable object files, core files and shared
+libraries.
+.Pp
+An executable file using the ELF file format consists of an ELF header,
+followed by a program header table or a section header table, or both.
+The ELF header is always at offset zero of the file.
+The program header
+table and the section header table's offset in the file are defined in the
+ELF header.
+The two tables describe the rest of the particularities of
+the file.
+.Pp
+Applications which wish to process ELF binary files for their native
+architecture only should include
+.In elf.h
+in their source code.
+These applications should need to refer to
+all the types and structures by their generic names
+.Dq Elf_xxx
+and to the macros by
+.Dq ELF_xxx .
+Applications written this way can be compiled on any architecture,
+regardless whether the host is 32-bit or 64-bit.
+.Pp
+Should an application need to process ELF files of an unknown
+architecture then the application needs to include both
+.In sys/elf32.h
+and
+.In sys/elf64.h
+instead of
+.In elf.h .
+Furthermore, all types and structures need to be identified by either
+.Dq Elf32_xxx
+or
+.Dq Elf64_xxx .
+The macros need to be identified by
+.Dq ELF32_xxx
+or
+.Dq ELF64_xxx .
+.Pp
+Whatever the system's architecture is, it will always include
+.In sys/elf_common.h
+as well as
+.In sys/elf_generic.h .
+.Pp
+These header files describe the above mentioned headers as C structures
+and also include structures for dynamic sections, relocation sections and
+symbol tables.
+.Pp
+The following types are being used for 32-bit architectures:
+.Bd -literal -offset indent
+Elf32_Addr Unsigned 32-bit program address
+Elf32_Half Unsigned 16-bit field
+Elf32_Lword Unsigned 64-bit field
+Elf32_Off Unsigned 32-bit file offset
+Elf32_Sword Signed 32-bit field or integer
+Elf32_Word Unsigned 32-bit field or integer
+.Ed
+.Pp
+For 64-bit architectures we have the following types:
+.Bd -literal -offset indent
+Elf64_Addr Unsigned 64-bit program address
+Elf64_Half Unsigned 16-bit field
+Elf64_Lword Unsigned 64-bit field
+Elf64_Off Unsigned 64-bit file offset
+Elf64_Sword Signed 32-bit field
+Elf64_Sxword Signed 64-bit field or integer
+Elf64_Word Unsigned 32-bit field
+Elf64_Xword Unsigned 64-bit field or integer
+.Ed
+.Pp
+All data structures that the file format defines follow the
+.Dq natural
+size and alignment guidelines for the relevant class.
+If necessary,
+data structures contain explicit padding to ensure 4-byte alignment
+for 4-byte objects, to force structure sizes to a multiple of 4, etc.
+.Pp
+The ELF header is described by the type Elf32_Ehdr or Elf64_Ehdr:
+.Bd -literal -offset indent
+typedef struct {
+ unsigned char e_ident[EI_NIDENT];
+ Elf32_Half e_type;
+ Elf32_Half e_machine;
+ Elf32_Word e_version;
+ Elf32_Addr e_entry;
+ Elf32_Off e_phoff;
+ Elf32_Off e_shoff;
+ Elf32_Word e_flags;
+ Elf32_Half e_ehsize;
+ Elf32_Half e_phentsize;
+ Elf32_Half e_phnum;
+ Elf32_Half e_shentsize;
+ Elf32_Half e_shnum;
+ Elf32_Half e_shstrndx;
+} Elf32_Ehdr;
+.Ed
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ unsigned char e_ident[EI_NIDENT];
+ Elf64_Half e_type;
+ Elf64_Half e_machine;
+ Elf64_Word e_version;
+ Elf64_Addr e_entry;
+ Elf64_Off e_phoff;
+ Elf64_Off e_shoff;
+ Elf64_Word e_flags;
+ Elf64_Half e_ehsize;
+ Elf64_Half e_phentsize;
+ Elf64_Half e_phnum;
+ Elf64_Half e_shentsize;
+ Elf64_Half e_shnum;
+ Elf64_Half e_shstrndx;
+} Elf64_Ehdr;
+.Ed
+.Pp
+The fields have the following meanings:
+.Pp
+.Bl -tag -width "e_phentsize" -compact -offset indent
+.It Dv e_ident
+This array of bytes specifies to interpret the file,
+independent of the processor or the file's remaining contents.
+Within this array everything is named by macros, which start with
+the prefix
+.Sy EI_
+and may contain values which start with the prefix
+.Sy ELF .
+The following macros are defined:
+.Pp
+.Bl -tag -width "EI_ABIVERSION" -compact
+.It Dv EI_MAG0
+The first byte of the magic number.
+It must be filled with
+.Sy ELFMAG0 .
+.It Dv EI_MAG1
+The second byte of the magic number.
+It must be filled with
+.Sy ELFMAG1 .
+.It Dv EI_MAG2
+The third byte of the magic number.
+It must be filled with
+.Sy ELFMAG2 .
+.It Dv EI_MAG3
+The fourth byte of the magic number.
+It must be filled with
+.Sy ELFMAG3 .
+.It Dv EI_CLASS
+The fifth byte identifies the architecture for this binary:
+.Pp
+.Bl -tag -width "ELFCLASSNONE" -compact
+.It Dv ELFCLASSNONE
+This class is invalid.
+.It Dv ELFCLASS32
+This defines the 32-bit architecture.
+It supports machines with files
+and virtual address spaces up to 4 Gigabytes.
+.It Dv ELFCLASS64
+This defines the 64-bit architecture.
+.El
+.It Dv EI_DATA
+The sixth byte specifies the data encoding of the processor-specific
+data in the file.
+Currently these encodings are supported:
+.Pp
+.Bl -tag -width "ELFDATA2LSB" -compact
+.It Dv ELFDATANONE
+Unknown data format.
+.It Dv ELFDATA2LSB
+Two's complement, little-endian.
+.It Dv ELFDATA2MSB
+Two's complement, big-endian.
+.El
+.It Dv EI_VERSION
+The version number of the ELF specification:
+.Pp
+.Bl -tag -width "EV_CURRENT" -compact
+.It Dv EV_NONE
+Invalid version.
+.It Dv EV_CURRENT
+Current version.
+.El
+.It Dv EI_OSABI
+This byte identifies the operating system
+and ABI to which the object is targeted.
+Some fields in other ELF structures have flags
+and values that have platform specific meanings;
+the interpretation of those fields is determined by the value of this byte.
+The following values are currently defined:
+.Pp
+.Bl -tag -width "ELFOSABI_STANDALONE" -compact
+.It Dv ELFOSABI_SYSV
+UNIX System V ABI.
+.It Dv ELFOSABI_HPUX
+HP-UX operating system ABI.
+.It Dv ELFOSABI_NETBSD
+.Nx
+operating system ABI.
+.It Dv ELFOSABI_LINUX
+GNU/Linux operating system ABI.
+.It Dv ELFOSABI_HURD
+GNU/Hurd operating system ABI.
+.It Dv ELFOSABI_86OPEN
+86Open Common IA32 ABI.
+.It Dv ELFOSABI_SOLARIS
+Solaris operating system ABI.
+.It Dv ELFOSABI_MONTEREY
+Monterey project ABI.
+.It Dv ELFOSABI_IRIX
+IRIX operating system ABI.
+.It Dv ELFOSABI_FREEBSD
+.Fx
+operating system ABI.
+.It Dv ELFOSABI_TRU64
+TRU64 UNIX operating system ABI.
+.It Dv ELFOSABI_ARM
+ARM architecture ABI.
+.It Dv ELFOSABI_STANDALONE
+Standalone (embedded) ABI.
+.El
+.It Dv EI_ABIVERSION
+This byte identifies the version of the ABI
+to which the object is targeted.
+This field is used to distinguish among incompatible versions of an ABI.
+The interpretation of this version number
+is dependent on the ABI identified by the EI_OSABI field.
+Applications conforming to this specification use the value 0.
+.It Dv EI_PAD
+Start of padding.
+These bytes are reserved and set to zero.
+Programs
+which read them should ignore them.
+The value for EI_PAD will change in
+the future if currently unused bytes are given meanings.
+.It Dv EI_BRAND
+Start of architecture identification.
+.It Dv EI_NIDENT
+The size of the e_ident array.
+.El
+.Pp
+.It Dv e_type
+This member of the structure identifies the object file type:
+.Pp
+.Bl -tag -width "ET_NONE" -compact
+.It Dv ET_NONE
+An unknown type.
+.It Dv ET_REL
+A relocatable file.
+.It Dv ET_EXEC
+An executable file.
+.It Dv ET_DYN
+A shared object.
+.It Dv ET_CORE
+A core file.
+.El
+.Pp
+.It Dv e_machine
+This member specifies the required architecture for an individual file:
+.Pp
+.Bl -tag -width "EM_MIPS_RS4_BE" -compact
+.It Dv EM_NONE
+An unknown machine.
+.It Dv EM_M32
+AT&T WE 32100.
+.It Dv EM_SPARC
+Sun Microsystems SPARC.
+.It Dv EM_386
+Intel 80386.
+.It Dv EM_68K
+Motorola 68000.
+.It Dv EM_88K
+Motorola 88000.
+.It Dv EM_486
+Intel 80486.
+.It Dv EM_860
+Intel 80860.
+.It Dv EM_MIPS
+MIPS RS3000 (big-endian only).
+.It Dv EM_MIPS_RS4_BE
+MIPS RS4000 (big-endian only).
+.It Dv EM_SPARC64
+SPARC v9 64-bit unofficial.
+.It Dv EM_PARISC
+HPPA.
+.It Dv EM_PPC
+PowerPC.
+.It Dv EM_ALPHA
+Compaq [DEC] Alpha.
+.El
+.Pp
+.It Dv e_version
+This member identifies the file version:
+.Pp
+.Bl -tag -width "EV_CURRENT" -compact
+.It Dv EV_NONE
+Invalid version
+.It Dv EV_CURRENT
+Current version
+.El
+.It Dv e_entry
+This member gives the virtual address to which the system first transfers
+control, thus starting the process.
+If the file has no associated entry
+point, this member holds zero.
+.It Dv e_phoff
+This member holds the program header table's file offset in bytes.
+If
+the file has no program header table, this member holds zero.
+.It Dv e_shoff
+This member holds the section header table's file offset in bytes.
+If the
+file has no section header table this member holds zero.
+.It Dv e_flags
+This member holds processor-specific flags associated with the file.
+Flag
+names take the form EF_`machine_flag'.
+Currently no flags have been defined.
+.It Dv e_ehsize
+This member holds the ELF header's size in bytes.
+.It Dv e_phentsize
+This member holds the size in bytes of one entry in the file's program header
+table; all entries are the same size.
+.It Dv e_phnum
+This member holds the number of entries in the program header
+table.
+If the file is using extended program header numbering, then the
+.Sy e_phnum
+member will contain the value
+.Dv PN_XNUM
+and the actual number of program header table entries will be stored
+in the
+.Sy sh_info
+member of the section header at index
+.Dv SHN_UNDEF .
+The product of
+.Sy e_phentsize
+and the number of program header table entries gives the program
+header table's size in bytes.
+If a file has no program header,
+.Sy e_phnum
+holds the value zero.
+.It Dv e_shentsize
+This member holds a sections header's size in bytes.
+A section header is one
+entry in the section header table; all entries are the same size.
+.It Dv e_shnum
+This member holds the number of entries in the section header table.
+If the file is using extended section numbering, then the
+.Sy e_shnum
+member will be zero and the actual section number will be stored in the
+.Sy sh_size
+member of the section header at index
+.Dv SHN_UNDEF .
+If a file has no section header table, both the
+.Sy e_shnum
+and the
+.Sy e_shoff
+fields of the ELF header will be zero.
+The product of
+.Sy e_shentsize
+and the number of sections in the file gives the section header
+table's size in bytes.
+.It Dv e_shstrndx
+This member holds the section header table index of the entry associated
+with the section name string table.
+If extended section numbering is being used, this field will hold the
+value
+.Sy SHN_XINDEX ,
+and the actual section header table index will be present in the
+.Sy sh_link
+field of the section header entry at index
+.Dv SHN_UNDEF .
+If the file has no section name string
+table, this member holds the value
+.Sy SHN_UNDEF .
+.El
+.Pp
+An executable or shared object file's program header table is an array of
+structures, each describing a segment or other information the system needs
+to prepare the program for execution.
+An object file
+.Em segment
+contains one or more
+.Em sections .
+Program headers are meaningful only for executable and shared object files.
+A file specifies its own program header size with the ELF header's
+.Sy e_phentsize
+and
+.Sy e_phnum
+members.
+As with the Elf executable header, the program header
+also has different versions depending on the architecture:
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ Elf32_Word p_type;
+ Elf32_Off p_offset;
+ Elf32_Addr p_vaddr;
+ Elf32_Addr p_paddr;
+ Elf32_Word p_filesz;
+ Elf32_Word p_memsz;
+ Elf32_Word p_flags;
+ Elf32_Word p_align;
+} Elf32_Phdr;
+.Ed
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ Elf64_Word p_type;
+ Elf64_Word p_flags;
+ Elf64_Off p_offset;
+ Elf64_Addr p_vaddr;
+ Elf64_Addr p_paddr;
+ Elf64_Xword p_filesz;
+ Elf64_Xword p_memsz;
+ Elf64_Xword p_align;
+} Elf64_Phdr;
+.Ed
+.Pp
+The main difference between the 32-bit and the 64-bit program header lies
+only in the location of a
+.Sy p_flags
+member in the total struct.
+.Pp
+.Bl -tag -width "p_offset" -compact -offset indent
+.It Dv p_type
+This member of the Phdr struct tells what kind of segment this array
+element describes or how to interpret the array element's information.
+.Bl -tag -width "PT_DYNAMIC" -compact
+.Pp
+.It Dv PT_NULL
+The array element is unused and the other members' values are undefined.
+This lets the program header have ignored entries.
+.It Dv PT_LOAD
+The array element specifies a loadable segment, described by
+.Sy p_filesz
+and
+.Sy p_memsz .
+The bytes from the file are mapped to the beginning of the memory
+segment.
+If the segment's memory size
+.Pq Sy p_memsz
+is larger than the file size
+.Pq Sy p_filesz ,
+the
+.Dq extra
+bytes are defined to hold the value 0 and to follow the segment's
+initialized area.
+The file size may not be larger than the memory size.
+Loadable segment entries in the program header table appear in ascending
+order, sorted on the
+.Sy p_vaddr
+member.
+.It Dv PT_DYNAMIC
+The array element specifies dynamic linking information.
+.It Dv PT_INTERP
+The array element specifies the location and size of a null-terminated
+path name to invoke as an interpreter.
+This segment type is meaningful
+only for executable files (though it may occur for shared objects).
+However
+it may not occur more than once in a file.
+If it is present it must precede
+any loadable segment entry.
+.It Dv PT_NOTE
+The array element specifies the location and size for auxiliary information.
+.It Dv PT_SHLIB
+This segment type is reserved but has unspecified semantics.
+Programs that
+contain an array element of this type do not conform to the ABI.
+.It Dv PT_PHDR
+The array element, if present, specifies the location and size of the program
+header table itself, both in the file and in the memory image of the program.
+This segment type may not occur more than once in a file.
+Moreover, it may
+only occur if the program header table is part of the memory image of the
+program.
+If it is present it must precede any loadable segment entry.
+.It Dv PT_LOPROC
+This value up to and including
+.Sy PT_HIPROC
+are reserved for processor-specific semantics.
+.It Dv PT_HIPROC
+This value down to and including
+.Sy PT_LOPROC
+are reserved for processor-specific semantics.
+.El
+.Pp
+.It Dv p_offset
+This member holds the offset from the beginning of the file at which
+the first byte of the segment resides.
+.It Dv p_vaddr
+This member holds the virtual address at which the first byte of the
+segment resides in memory.
+.It Dv p_paddr
+On systems for which physical addressing is relevant, this member is
+reserved for the segment's physical address.
+Under
+.Bx
+this member is
+not used and must be zero.
+.It Dv p_filesz
+This member holds the number of bytes in the file image of the segment.
+It may be zero.
+.It Dv p_memsz
+This member holds the number of bytes in the memory image of the segment.
+It may be zero.
+.It Dv p_flags
+This member holds flags relevant to the segment:
+.Pp
+.Bl -tag -width "PF_X" -compact
+.It Dv PF_X
+An executable segment.
+.It Dv PF_W
+A writable segment.
+.It Dv PF_R
+A readable segment.
+.El
+.Pp
+A text segment commonly has the flags
+.Sy PF_X
+and
+.Sy PF_R .
+A data segment commonly has
+.Sy PF_X ,
+.Sy PF_W
+and
+.Sy PF_R .
+.It Dv p_align
+This member holds the value to which the segments are aligned in memory
+and in the file.
+Loadable process segments must have congruent values for
+.Sy p_vaddr
+and
+.Sy p_offset ,
+modulo the page size.
+Values of zero and one mean no alignment is required.
+Otherwise,
+.Sy p_align
+should be a positive, integral power of two, and
+.Sy p_vaddr
+should equal
+.Sy p_offset ,
+modulo
+.Sy p_align .
+.El
+.Pp
+An file's section header table lets one locate all the file's sections.
+The
+section header table is an array of Elf32_Shdr or Elf64_Shdr structures.
+The
+ELF header's
+.Sy e_shoff
+member gives the byte offset from the beginning of the file to the section
+header table.
+.Sy e_shnum
+holds the number of entries the section header table contains.
+.Sy e_shentsize
+holds the size in bytes of each entry.
+.Pp
+A section header table index is a subscript into this array.
+Some section
+header table indices are reserved.
+An object file does not have sections for
+these special indices:
+.Pp
+.Bl -tag -width "SHN_LORESERVE" -compact
+.It Dv SHN_UNDEF
+This value marks an undefined, missing, irrelevant, or otherwise meaningless
+section reference.
+For example, a symbol
+.Dq defined
+relative to section number
+.Sy SHN_UNDEF
+is an undefined symbol.
+.It Dv SHN_LORESERVE
+This value specifies the lower bound of the range of reserved indices.
+.It Dv SHN_LOPROC
+This value up to and including
+.Sy SHN_HIPROC
+are reserved for processor-specific semantics.
+.It Dv SHN_HIPROC
+This value down to and including
+.Sy SHN_LOPROC
+are reserved for processor-specific semantics.
+.It Dv SHN_ABS
+This value specifies absolute values for the corresponding reference.
+For
+example, symbols defined relative to section number
+.Sy SHN_ABS
+have absolute values and are not affected by relocation.
+.It Dv SHN_COMMON
+Symbols defined relative to this section are common symbols, such as FORTRAN
+COMMON or unallocated C external variables.
+.It Dv SHN_HIRESERVE
+This value specifies the upper bound of the range of reserved indices.
+The
+system reserves indices between
+.Sy SHN_LORESERVE
+and
+.Sy SHN_HIRESERVE ,
+inclusive.
+The section header table does not contain entries for the
+reserved indices.
+.El
+.Pp
+The section header has the following structure:
+.Bd -literal -offset indent
+typedef struct {
+ Elf32_Word sh_name;
+ Elf32_Word sh_type;
+ Elf32_Word sh_flags;
+ Elf32_Addr sh_addr;
+ Elf32_Off sh_offset;
+ Elf32_Word sh_size;
+ Elf32_Word sh_link;
+ Elf32_Word sh_info;
+ Elf32_Word sh_addralign;
+ Elf32_Word sh_entsize;
+} Elf32_Shdr;
+.Ed
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ Elf64_Word sh_name;
+ Elf64_Word sh_type;
+ Elf64_Xword sh_flags;
+ Elf64_Addr sh_addr;
+ Elf64_Off sh_offset;
+ Elf64_Xword sh_size;
+ Elf64_Word sh_link;
+ Elf64_Word sh_info;
+ Elf64_Xword sh_addralign;
+ Elf64_Xword sh_entsize;
+} Elf64_Shdr;
+.Ed
+.Pp
+.Bl -tag -width "sh_addralign" -compact
+.It Dv sh_name
+This member specifies the name of the section.
+Its value is an index
+into the section header string table section, giving the location of
+a null-terminated string.
+.It Dv sh_type
+This member categorizes the section's contents and semantics.
+.Pp
+.Bl -tag -width "SHT_PROGBITS" -compact
+.It Dv SHT_NULL
+This value marks the section header as inactive.
+It does not
+have an associated section.
+Other members of the section header
+have undefined values.
+.It Dv SHT_PROGBITS
+The section holds information defined by the program, whose
+format and meaning are determined solely by the program.
+.It Dv SHT_SYMTAB
+This section holds a symbol table.
+Typically,
+.Sy SHT_SYMTAB
+provides symbols for link editing, though it may also be used
+for dynamic linking.
+As a complete symbol table, it may contain
+many symbols unnecessary for dynamic linking.
+An object file can
+also contain a
+.Sy SHN_DYNSYM
+section.
+.It Dv SHT_STRTAB
+This section holds a string table.
+An object file may have multiple
+string table sections.
+.It Dv SHT_RELA
+This section holds relocation entries with explicit addends, such
+as type
+.Sy Elf32_Rela
+for the 32-bit class of object files.
+An object may have multiple
+relocation sections.
+.It Dv SHT_HASH
+This section holds a symbol hash table.
+All object participating in
+dynamic linking must contain a symbol hash table.
+An object file may
+have only one hash table.
+.It Dv SHT_DYNAMIC
+This section holds information for dynamic linking.
+An object file may
+have only one dynamic section.
+.It Dv SHT_NOTE
+This section holds information that marks the file in some way.
+.It Dv SHT_NOBITS
+A section of this type occupies no space in the file but otherwise
+resembles
+.Sy SHN_PROGBITS .
+Although this section contains no bytes, the
+.Sy sh_offset
+member contains the conceptual file offset.
+.It Dv SHT_REL
+This section holds relocation offsets without explicit addends, such
+as type
+.Sy Elf32_Rel
+for the 32-bit class of object files.
+An object file may have multiple
+relocation sections.
+.It Dv SHT_SHLIB
+This section is reserved but has unspecified semantics.
+.It Dv SHT_DYNSYM
+This section holds a minimal set of dynamic linking symbols.
+An
+object file can also contain a
+.Sy SHN_SYMTAB
+section.
+.It Dv SHT_LOPROC
+This value up to and including
+.Sy SHT_HIPROC
+are reserved for processor-specific semantics.
+.It Dv SHT_HIPROC
+This value down to and including
+.Sy SHT_LOPROC
+are reserved for processor-specific semantics.
+.It Dv SHT_LOUSER
+This value specifies the lower bound of the range of indices reserved for
+application programs.
+.It Dv SHT_HIUSER
+This value specifies the upper bound of the range of indices reserved for
+application programs.
+Section types between
+.Sy SHT_LOUSER
+and
+.Sy SHT_HIUSER
+may be used by the application, without conflicting with current or future
+system-defined section types.
+.El
+.Pp
+.It Dv sh_flags
+Sections support one-bit flags that describe miscellaneous attributes.
+If a flag bit is set in
+.Sy sh_flags ,
+the attribute is
+.Dq on
+for the section.
+Otherwise, the attribute is
+.Dq off
+or does not apply.
+Undefined attributes are set to zero.
+.Pp
+.Bl -tag -width "SHF_EXECINSTR" -compact
+.It Dv SHF_WRITE
+This section contains data that should be writable during process
+execution.
+.It Dv SHF_ALLOC
+The section occupies memory during process execution.
+Some control
+sections do not reside in the memory image of an object file.
+This
+attribute is off for those sections.
+.It Dv SHF_EXECINSTR
+The section contains executable machine instructions.
+.It Dv SHF_MASKPROC
+All bits included in this mask are reserved for processor-specific
+semantics.
+.El
+.Pp
+.It Dv sh_addr
+If the section will appear in the memory image of a process, this member
+holds the address at which the section's first byte should reside.
+Otherwise, the member contains zero.
+.It Dv sh_offset
+This member's value holds the byte offset from the beginning of the file
+to the first byte in the section.
+One section type,
+.Sy SHT_NOBITS ,
+occupies no space in the file, and its
+.Sy sh_offset
+member locates the conceptual placement in the file.
+.It Dv sh_size
+This member holds the section's size in bytes.
+Unless the section type
+is
+.Sy SHT_NOBITS ,
+the section occupies
+.Sy sh_size
+bytes in the file.
+A section of type
+.Sy SHT_NOBITS
+may have a non-zero size, but it occupies no space in the file.
+.It Dv sh_link
+This member holds a section header table index link, whose interpretation
+depends on the section type.
+.It Dv sh_info
+This member holds extra information, whose interpretation depends on the
+section type.
+.It Dv sh_addralign
+Some sections have address alignment constraints.
+If a section holds a
+doubleword, the system must ensure doubleword alignment for the entire
+section.
+That is, the value of
+.Sy sh_addr
+must be congruent to zero, modulo the value of
+.Sy sh_addralign .
+Only zero and positive integral powers of two are allowed.
+Values of zero
+or one mean the section has no alignment constraints.
+.It Dv sh_entsize
+Some sections hold a table of fixed-sized entries, such as a symbol table.
+For such a section, this member gives the size in bytes for each entry.
+This member contains zero if the section does not hold a table of
+fixed-size entries.
+.El
+.Pp
+Various sections hold program and control information:
+.Bl -tag -width ".shstrtab" -compact
+.It .bss
+(Block Started by Symbol)
+This section holds uninitialized data that contributes to the program's
+memory image.
+By definition, the system initializes the data with zeros
+when the program begins to run.
+This section is of type
+.Sy SHT_NOBITS .
+The attributes types are
+.Sy SHF_ALLOC
+and
+.Sy SHF_WRITE .
+.It .comment
+This section holds version control information.
+This section is of type
+.Sy SHT_PROGBITS .
+No attribute types are used.
+.It .data
+This section holds initialized data that contribute to the program's
+memory image.
+This section is of type
+.Sy SHT_PROGBITS .
+The attribute types are
+.Sy SHF_ALLOC
+and
+.Sy SHF_WRITE .
+.It .data1
+This section holds initialized data that contribute to the program's
+memory image.
+This section is of type
+.Sy SHT_PROGBITS .
+The attribute types are
+.Sy SHF_ALLOC
+and
+.Sy SHF_WRITE .
+.It .debug
+This section holds information for symbolic debugging.
+The contents
+are unspecified.
+This section is of type
+.Sy SHT_PROGBITS .
+No attribute types are used.
+.It .dynamic
+This section holds dynamic linking information.
+The section's attributes
+will include the
+.Sy SHF_ALLOC
+bit.
+Whether the
+.Sy SHF_WRITE
+bit is set is processor-specific.
+This section is of type
+.Sy SHT_DYNAMIC .
+See the attributes above.
+.It .dynstr
+This section holds strings needed for dynamic linking, most commonly
+the strings that represent the names associated with symbol table entries.
+This section is of type
+.Sy SHT_STRTAB .
+The attribute type used is
+.Sy SHF_ALLOC .
+.It .dynsym
+This section holds the dynamic linking symbol table.
+This section is of type
+.Sy SHT_DYNSYM .
+The attribute used is
+.Sy SHF_ALLOC .
+.It .fini
+This section holds executable instructions that contribute to the process
+termination code.
+When a program exits normally the system arranges to
+execute the code in this section.
+This section is of type
+.Sy SHT_PROGBITS .
+The attributes used are
+.Sy SHF_ALLOC
+and
+.Sy SHF_EXECINSTR .
+.It .got
+This section holds the global offset table.
+This section is of type
+.Sy SHT_PROGBITS .
+The attributes are processor-specific.
+.It .hash
+This section holds a symbol hash table.
+This section is of type
+.Sy SHT_HASH .
+The attribute used is
+.Sy SHF_ALLOC .
+.It .init
+This section holds executable instructions that contribute to the process
+initialization code.
+When a program starts to run the system arranges to
+execute the code in this section before calling the main program entry point.
+This section is of type
+.Sy SHT_PROGBITS .
+The attributes used are
+.Sy SHF_ALLOC
+and
+.Sy SHF_EXECINSTR .
+.It .interp
+This section holds the pathname of a program interpreter.
+If the file has
+a loadable segment that includes the section, the section's attributes will
+include the
+.Sy SHF_ALLOC
+bit.
+Otherwise, that bit will be off.
+This section is of type
+.Sy SHT_PROGBITS .
+.It .line
+This section holds line number information for symbolic debugging, which
+describes the correspondence between the program source and the machine code.
+The contents are unspecified.
+This section is of type
+.Sy SHT_PROGBITS .
+No attribute types are used.
+.It .note
+This section holds information in the
+.Dq Note Section
+format described below.
+This section is of type
+.Sy SHT_NOTE .
+No attribute types are used.
+.It .plt
+This section holds the procedure linkage table.
+This section is of type
+.Sy SHT_PROGBITS .
+The attributes are processor-specific.
+.It .relNAME
+This section holds relocation information as described below.
+If the file
+has a loadable segment that includes relocation, the section's attributes
+will include the
+.Sy SHF_ALLOC
+bit.
+Otherwise the bit will be off.
+By convention,
+.Dq NAME
+is supplied by the section to which the relocations apply.
+Thus a relocation
+section for
+.Sy .text
+normally would have the name
+.Sy .rel.text .
+This section is of type
+.Sy SHT_REL .
+.It .relaNAME
+This section holds relocation information as described below.
+If the file
+has a loadable segment that includes relocation, the section's attributes
+will include the
+.Sy SHF_ALLOC
+bit.
+Otherwise the bit will be off.
+By convention,
+.Dq NAME
+is supplied by the section to which the relocations apply.
+Thus a relocation
+section for
+.Sy .text
+normally would have the name
+.Sy .rela.text .
+This section is of type
+.Sy SHT_RELA .
+.It .rodata
+This section holds read-only data that typically contributes to a
+non-writable segment in the process image.
+This section is of type
+.Sy SHT_PROGBITS .
+The attribute used is
+.Sy SHF_ALLOC .
+.It .rodata1
+This section hold read-only data that typically contributes to a
+non-writable segment in the process image.
+This section is of type
+.Sy SHT_PROGBITS .
+The attribute used is
+.Sy SHF_ALLOC .
+.It .shstrtab
+This section holds section names.
+This section is of type
+.Sy SHT_STRTAB .
+No attribute types are used.
+.It .strtab
+This section holds strings, most commonly the strings that represent the
+names associated with symbol table entries.
+If the file has a loadable
+segment that includes the symbol string table, the section's attributes
+will include the
+.Sy SHF_ALLOC
+bit.
+Otherwise the bit will be off.
+This section is of type
+.Sy SHT_STRTAB .
+.It .symtab
+This section holds a symbol table.
+If the file has a loadable segment
+that includes the symbol table, the section's attributes will include
+the
+.Sy SHF_ALLOC
+bit.
+Otherwise the bit will be off.
+This section is of type
+.Sy SHT_SYMTAB .
+.It .text
+This section holds the
+.Dq text ,
+or executable instructions, of a program.
+This section is of type
+.Sy SHT_PROGBITS .
+The attributes used are
+.Sy SHF_ALLOC
+and
+.Sy SHF_EXECINSTR .
+.It .jcr
+This section holds information about Java classes that must
+be registered.
+.It .eh_frame
+This section holds information used for C++ exception-handling.
+.El
+.Pp
+String table sections hold null-terminated character sequences, commonly
+called strings.
+The object file uses these strings to represent symbol
+and section names.
+One references a string as an index into the string
+table section.
+The first byte, which is index zero, is defined to hold
+a null character.
+Similarly, a string table's last byte is defined to
+hold a null character, ensuring null termination for all strings.
+.Pp
+An object file's symbol table holds information needed to locate and
+relocate a program's symbolic definitions and references.
+A symbol table
+index is a subscript into this array.
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ Elf32_Word st_name;
+ Elf32_Addr st_value;
+ Elf32_Word st_size;
+ unsigned char st_info;
+ unsigned char st_other;
+ Elf32_Half st_shndx;
+} Elf32_Sym;
+.Ed
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ Elf64_Word st_name;
+ unsigned char st_info;
+ unsigned char st_other;
+ Elf64_Half st_shndx;
+ Elf64_Addr st_value;
+ Elf64_Xword st_size;
+} Elf64_Sym;
+.Ed
+.Pp
+.Bl -tag -width "st_value" -compact
+.It Dv st_name
+This member holds an index into the object file's symbol string table,
+which holds character representations of the symbol names.
+If the value
+is non-zero, it represents a string table index that gives the symbol
+name.
+Otherwise, the symbol table has no name.
+.It Dv st_value
+This member gives the value of the associated symbol.
+.It Dv st_size
+Many symbols have associated sizes.
+This member holds zero if the symbol
+has no size or an unknown size.
+.It Dv st_info
+This member specifies the symbol's type and binding attributes:
+.Pp
+.Bl -tag -width "STT_SECTION" -compact
+.It Dv STT_NOTYPE
+The symbol's type is not defined.
+.It Dv STT_OBJECT
+The symbol is associated with a data object.
+.It Dv STT_FUNC
+The symbol is associated with a function or other executable code.
+.It Dv STT_SECTION
+The symbol is associated with a section.
+Symbol table entries of
+this type exist primarily for relocation and normally have
+.Sy STB_LOCAL
+bindings.
+.It Dv STT_FILE
+By convention the symbol's name gives the name of the source file
+associated with the object file.
+A file symbol has
+.Sy STB_LOCAL
+bindings, its section index is
+.Sy SHN_ABS ,
+and it precedes the other
+.Sy STB_LOCAL
+symbols of the file, if it is present.
+.It Dv STT_LOPROC
+This value up to and including
+.Sy STT_HIPROC
+are reserved for processor-specific semantics.
+.It Dv STT_HIPROC
+This value down to and including
+.Sy STT_LOPROC
+are reserved for processor-specific semantics.
+.El
+.Pp
+.Bl -tag -width "STB_GLOBAL" -compact
+.It Dv STB_LOCAL
+Local symbols are not visible outside the object file containing their
+definition.
+Local symbols of the same name may exist in multiple file
+without interfering with each other.
+.It Dv STB_GLOBAL
+Global symbols are visible to all object files being combined.
+One file's
+definition of a global symbol will satisfy another file's undefined
+reference to the same symbol.
+.It Dv STB_WEAK
+Weak symbols resemble global symbols, but their definitions have lower
+precedence.
+.It Dv STB_LOPROC
+This value up to and including
+.Sy STB_HIPROC
+are reserved for processor-specific semantics.
+.It Dv STB_HIPROC
+This value down to and including
+.Sy STB_LOPROC
+are reserved for processor-specific semantics.
+.Pp
+There are macros for packing and unpacking the binding and type fields:
+.Pp
+.Bl -tag -width "ELF32_ST_INFO(bind, type)" -compact
+.It Xo
+.Fn ELF32_ST_BIND info
+.Xc
+or
+.Fn ELF64_ST_BIND info
+extract a binding from an st_info value.
+.It Xo
+.Fn ELF64_ST_TYPE info
+.Xc
+or
+.Fn ELF32_ST_TYPE info
+extract a type from an st_info value.
+.It Xo
+.Fn ELF32_ST_INFO bind type
+.Xc
+or
+.Fn ELF64_ST_INFO bind type
+convert a binding and a type into an st_info value.
+.El
+.El
+.Pp
+.It Dv st_other
+This member currently holds zero and has no defined meaning.
+.It Dv st_shndx
+Every symbol table entry is
+.Dq defined
+in relation to some section.
+This member holds the relevant section
+header table index.
+.El
+.Pp
+Relocation is the process of connecting symbolic references with
+symbolic definitions.
+Relocatable files must have information that
+describes how to modify their section contents, thus allowing executable
+and shared object files to hold the right information for a process'
+program image.
+Relocation entries are these data.
+.Pp
+Relocation structures that do not need an addend:
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+} Elf32_Rel;
+.Ed
+.Bd -literal -offset indent
+typedef struct {
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+} Elf64_Rel;
+.Ed
+.Pp
+Relocation structures that need an addend:
+.Pp
+.Bd -literal -offset indent
+typedef struct {
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+ Elf32_Sword r_addend;
+} Elf32_Rela;
+.Ed
+.Bd -literal -offset indent
+typedef struct {
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+ Elf64_Sxword r_addend;
+} Elf64_Rela;
+.Ed
+.Pp
+.Bl -tag -width "r_offset" -compact
+.It Dv r_offset
+This member gives the location at which to apply the relocation action.
+For a relocatable file, the value is the byte offset from the beginning
+of the section to the storage unit affected by the relocation.
+For an
+executable file or shared object, the value is the virtual address of
+the storage unit affected by the relocation.
+.It Dv r_info
+This member gives both the symbol table index with respect to which the
+relocation must be made and the type of relocation to apply.
+Relocation
+types are processor-specific.
+When the text refers to a relocation
+entry's relocation type or symbol table index, it means the result of
+applying
+.Sy ELF_[32|64]_R_TYPE
+or
+.Sy ELF[32|64]_R_SYM ,
+respectively to the entry's
+.Sy r_info
+member.
+.It Dv r_addend
+This member specifies a constant addend used to compute the value to be
+stored into the relocatable field.
+.El
+.Sh SEE ALSO
+.Xr as 1 ,
+.Xr gdb 1 ,
+.Xr ld 1 ,
+.Xr objdump 1 ,
+.Xr execve 2 ,
+.Xr ar 5 ,
+.Xr core 5
+.Rs
+.%A Hewlett Packard
+.%B Elf-64 Object File Format
+.Re
+.Rs
+.%A Santa Cruz Operation
+.%B System V Application Binary Interface
+.Re
+.Rs
+.%A Unix System Laboratories
+.%T Object Files
+.%B "Executable and Linking Format (ELF)"
+.Re
+.Sh HISTORY
+The ELF header files made their appearance in
+.Fx 2.2.6 .
+ELF in itself first appeared in
+.At V .
+The ELF format is an adopted standard.
+.Sh AUTHORS
+This manual page was written by
+.An Jeroen Ruigrok van der Werven
+.Aq asmodai@FreeBSD.org
+with inspiration from BSDi's
+.Bsx
+.Xr elf 5
+manpage.
diff --git a/share/man/man5/ethers.5 b/share/man/man5/ethers.5
new file mode 100644
index 0000000..e10bf30
--- /dev/null
+++ b/share/man/man5/ethers.5
@@ -0,0 +1,102 @@
+.\" Copyright (c) 1995
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 12, 1995
+.Dt ETHERS 5
+.Os
+.Sh NAME
+.Nm ethers
+.Nd ethernet address database
+.Sh DESCRIPTION
+The
+.Nm
+database contains information regarding known 48-bit ethernet addresses
+of hosts on an Internetwork.
+The data is stored in a file called
+.Pa /etc/ethers
+in the following format:
+.Pp
+.D1 Ar ethernet-address fully-qualified-host-name
+.Pp
+Items are separated by any number of blanks and/or
+tab characters.
+A ``#'' at the start of a line indicates the
+beginning of a comment that extends to the end of the line.
+A ``+'' at
+the start of a line will cause the
+.Xr ethers 3
+library functions to use data stored in the
+.Tn NIS
+.Pa ethers.byname
+and
+.Pa ethers.byaddr
+maps in addition to the data in the
+.Pa /etc/ethers
+file.
+.Pp
+An ethernet address is expressed in
+.Tn ASCII
+form as "x:x:x:x:x:x" where
+.Ar x
+is a hexadecimal value between 0x00 and 0xFF.
+The address values
+should be in network order.
+Hostnames specified in the
+.Pa /etc/ethers
+database should correspond to entries in the
+.Xr hosts 5
+file.
+.Pp
+The
+.Fn ether_line
+function in the standard C library can be used to break individual
+lines in the
+.Pa /etc/ethers
+database into their individual components: a binary Ethernet address
+stored as an
+.Pa ether_addr
+structure, and a hostname stored as a character string.
+.Sh FILES
+.Bl -tag -width /etc/services -compact
+.It Pa /etc/ethers
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr ethers 3 ,
+.Xr yp 8
+.Sh HISTORY
+The
+.Nm
+format is based on the format used in SunOS 4.1.x.
diff --git a/share/man/man5/eui64.5 b/share/man/man5/eui64.5
new file mode 100644
index 0000000..4e2dda6
--- /dev/null
+++ b/share/man/man5/eui64.5
@@ -0,0 +1,110 @@
+.\" Copyright (c) 1995
+.\" Bill Paul <wpaul@ctr.columbia.edu>. 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 Bill Paul.
+.\" 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 Bill Paul 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 11, 2004
+.Dt EUI64 5
+.Os
+.Sh NAME
+.Nm eui64
+.Nd IEEE EUI-64 address database
+.Sh DESCRIPTION
+The
+.Nm
+database contains information regarding known IEEE EUI-64s of hosts.
+The data is stored in a file called
+.Pa /etc/eui64
+in the following format:
+.Bd -ragged -offset indent
+.Em EUI-64 host-name
+.Ed
+.Pp
+Items are separated by any number of blanks and/or
+tab characters.
+A
+.Ql #
+at the start of a line indicates the
+beginning of a comment that extends to the end of the line.
+Valid lines may also contain comments.
+A
+.Ql +
+at the start of a line will cause the
+.Xr eui64 3
+library functions to use data stored in the
+NIS
+.Pa eui64.byname
+and
+.Pa eui64.byid
+maps in addition to the data in the
+.Pa /etc/eui64
+file.
+.Pp
+An EUI-64 is expressed in
+.Tn ASCII
+form as
+.Qq x-x-x-x-x-x-x-x
+where
+.Ar x
+is a hexadecimal value between 0x00 and 0xFF.
+The address values
+should be in network order.
+Hostnames specified in the
+.Pa /etc/eui64
+database should correspond to entries in the
+.Xr hosts 5
+file.
+.\" .Pp
+.\" The
+.\" .Fn eui64_line
+.\" function in the standard C library can be used to break individual
+.\" lines in the
+.\" .Pa /etc/eui64
+.\" database into their individual components: a binary EUI-64 is
+.\" stored as an
+.\" .Pa eui64_addr
+.\" structure, and a hostname stored as a character string.
+.Sh FILES
+.Bl -tag -width ".Pa /etc/eui64" -compact
+.It Pa /etc/eui64
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr eui64 3 ,
+.Xr yp 8
+.Sh HISTORY
+The
+.Nm
+format is based on the
+.Xr ethers 5
+format.
diff --git a/share/man/man5/ext2fs.5 b/share/man/man5/ext2fs.5
new file mode 100644
index 0000000..a74e599
--- /dev/null
+++ b/share/man/man5/ext2fs.5
@@ -0,0 +1,83 @@
+.\"
+.\" Copyright (c) 2006 Craig Rodrigues
+.\" 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
+.\"
+.\" THIS DOCUMENTATION 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$
+.\"
+.Dd May 16, 2006
+.Dt EXT2FS 5
+.Os
+.Sh NAME
+.Nm ext2fs
+.Nd "Ext2fs file system"
+.Sh SYNOPSIS
+To link into the kernel:
+.Bd -ragged -offset indent
+.Cd "options EXT2FS"
+.Ed
+.Pp
+To load as a kernel loadable module:
+.Pp
+.Dl "kldload ext2fs"
+.Sh DESCRIPTION
+The
+.Nm
+driver will permit the
+.Fx
+kernel to access
+.Tn Ext2
+file systems.
+.Sh EXAMPLES
+To mount a
+.Nm
+volume located on
+.Pa /dev/ad1s1 :
+.Pp
+.Dl "mount -t ext2fs /dev/ad1s1 /mnt"
+.Sh SEE ALSO
+.Xr nmount 2 ,
+.Xr unmount 2 ,
+.Xr fstab 5 ,
+.Xr mount 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+kernel implementation was written by
+.An Godmar Back
+or modified by him using the CSRG sources.
+.Pp
+.An John Dyson
+and others in the
+.Fx
+Project made modifications.
+.Pp
+This manual page was written by
+.An Craig Rodrigues Aq rodrigc@FreeBSD.org .
diff --git a/share/man/man5/fbtab.5 b/share/man/man5/fbtab.5
new file mode 100644
index 0000000..0598fd1
--- /dev/null
+++ b/share/man/man5/fbtab.5
@@ -0,0 +1,47 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 22, 1994
+.Dt FBTAB 5
+.Os
+.Sh NAME
+.Nm fbtab
+.Nd change device protection upon login
+.Sh DESCRIPTION
+The
+.Nm
+file contains a number of lines specifying a device together with a list
+of devices with associated protections.
+Comments start with a
+.Ql #
+and extend to the end of the line.
+.Pp
+Blank lines or lines with only a comment are ignored.
+.Pp
+All other lines consist of three fields delimited by
+whitespace: a login device
+.Pq Pa /dev/ttyv0 ,
+an octal permission number (0600), and a colon
+.Pq Ql \&:
+delimited list of device patterns
+.Pq Pa /dev/console , /dev/dsp* .
+All device patterns are absolute paths.
+.Pp
+If the tty argument (relative path) matches a login device
+name (absolute path), the permissions of the devices in the
+colon-delimited list are set as specified in the second
+field, and their ownership is changed to that of the UID
+and GID arguments.
+.Sh FILES
+.Bl -tag -width ".Pa /etc/fbtab" -compact
+.It Pa /etc/fbtab
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr login 1 ,
+.Xr getty 8
+.Sh AUTHORS
+.An Guido van Rooij
diff --git a/share/man/man5/fdescfs.5 b/share/man/man5/fdescfs.5
new file mode 100644
index 0000000..4e63f22
--- /dev/null
+++ b/share/man/man5/fdescfs.5
@@ -0,0 +1,120 @@
+.\" Copyright (c) 1996
+.\" Mike Pritchard <mpp@FreeBSD.org>. All rights reserved.
+.\"
+.\" Copyright (c) 1992, 1993, 1994
+.\" The Regents of the University of California. All rights reserved.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software donated to Berkeley by
+.\" Jan-Simon Pendry.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 14, 1996
+.Dt FDESCFS 5
+.Os
+.Sh NAME
+.Nm fdescfs
+.Nd file-descriptor file system
+.Sh SYNOPSIS
+.Bd -literal
+fdescfs /dev/fd fdescfs rw 0 0
+.Ed
+.Sh DESCRIPTION
+The file-descriptor file system, or
+.Nm ,
+provides access to the per-process file descriptor
+namespace in the global file system namespace.
+The conventional mount point is
+.Pa /dev/fd .
+.Pp
+The file system's contents
+appear as a list of numbered files
+which correspond to the open files of the process reading the
+directory.
+The files
+.Pa /dev/fd/0
+through
+.Pa /dev/fd/#
+refer to file descriptors which can be accessed through the file
+system.
+If the file descriptor is open and the mode the file is being opened
+with is a subset of the mode of the existing descriptor, the call:
+.Bd -literal -offset indent
+fd = open("/dev/fd/0", mode);
+.Ed
+.Pp
+and the call:
+.Bd -literal -offset indent
+fd = fcntl(0, F_DUPFD, 0);
+.Ed
+.Pp
+are equivalent.
+.Pp
+Flags to the
+.Xr open 2
+call other than
+.Dv O_RDONLY ,
+.Dv O_WRONLY
+and
+.Dv O_RDWR
+are ignored.
+.Sh EXAMPLES
+To mount a
+.Nm
+volume located on
+.Pa /dev/fd :
+.Pp
+.Dl "mount -t fdescfs null /dev/fd"
+.Sh FILES
+.Bl -tag -width /dev/stderr -compact
+.It Pa /dev/fd/#
+.El
+.Sh SEE ALSO
+.Xr mount 8
+.Sh HISTORY
+The
+.Nm
+file system first appeared in
+.Bx 4.4 .
+The
+.Nm
+manual page first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+manual page was written by
+.An Mike Pritchard Aq mpp@FreeBSD.org ,
+and was based on the
+manual page written by
+.An Jan-Simon Pendry .
diff --git a/share/man/man5/forward.5 b/share/man/man5/forward.5
new file mode 100644
index 0000000..2234ff3
--- /dev/null
+++ b/share/man/man5/forward.5
@@ -0,0 +1,97 @@
+.\" Copyright (c) 1996
+.\" Mike Pritchard <mpp@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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by Mike Pritchard and
+.\" contributors.
+.\" 4. Neither the name of the author 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 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$
+.\"
+.Dd July 2, 1996
+.Dt FORWARD 5
+.Os
+.Sh NAME
+.Nm forward
+.Nd mail forwarding instructions
+.Sh DESCRIPTION
+The
+.Nm .forward
+file contains a list of mail addresses or programs
+that the user's mail should be redirected to.
+If the
+file is not present, then no mail forwarding will be done.
+Mail may also be forwarded as the standard input to a program
+by prefixing the line
+with the normal shell pipe symbol (|).
+If arguments
+are to be passed to the command, then the entire line
+should be enclosed in quotes.
+For security reasons, the
+.Nm .forward
+file must be owned by the user the mail is being sent to,
+or by root, and the user's shell must be listed in
+.Pa /etc/shells .
+.Pp
+For example, if a
+.Nm .forward
+file contained the following lines:
+.Bd -literal -offset indent
+nobody@FreeBSD.org
+"|/usr/bin/vacation nobody"
+.Ed
+.Pp
+Mail would be forwarded to
+.Aq nobody@FreeBSD.org
+and to the program
+.Pa /usr/bin/vacation
+with the single argument
+.Ar nobody .
+.Pp
+If a local user address is prefixed with a backslash
+character, mail is delivered directly to the user's
+mail spool file, bypassing further redirection.
+.Pp
+For example, if user chris had a
+.Nm .forward
+file containing the following lines:
+.Bd -literal -offset indent
+chris@otherhost
+\echris
+.Ed
+.Pp
+One copy of mail would be forwarded to
+.Ar chris@otherhost
+and another copy would be retained as mail for local user chris.
+.Sh FILES
+.Bl -tag -width $HOME/.forward -compact
+.It Pa $HOME/.forward
+The user's forwarding instructions.
+.El
+.Sh SEE ALSO
+.Xr aliases 5 ,
+.Xr mailaddr 7 ,
+.Xr sendmail 8
diff --git a/share/man/man5/freebsd-update.conf.5 b/share/man/man5/freebsd-update.conf.5
new file mode 100644
index 0000000..29775fd
--- /dev/null
+++ b/share/man/man5/freebsd-update.conf.5
@@ -0,0 +1,186 @@
+.\"-
+.\" Copyright 2006 Colin Percival
+.\" All rights reserved
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted providing 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$
+.\"
+.Dd August 30, 2006
+.Dt FREEBSD-UPDATE.CONF 5
+.Os FreeBSD
+.Sh NAME
+.Nm freebsd-update.conf
+.Nd configuration file for
+.Xr freebsd-update 8
+.Sh DESCRIPTION
+The
+.Nm
+file controls the behaviour of the
+.Xr freebsd-update 8
+utility.
+The file contains lines consisting of a case-sensitive option name and
+zero or more parameters.
+Empty lines and any part of a line following a
+.Ql #
+character are ignored.
+Unless stated otherwise, specifying an option multiple times is an
+error.
+.Pp
+The possible options and their meanings are as follows:
+.Pp
+.Bl -tag -width "KeepModifiedMetadata"
+.It Cm KeyPrint
+The single parameter following this keyword is the SHA256 hash
+of the RSA key which will be trusted to sign updates.
+.It Cm ServerName
+The single parameter following this keyword is the name of the
+server or server pool from which updates will be downloaded.
+.It Cm Components
+The parameters following this keyword are the components or
+sub-components of
+.Fx
+which will be updated.
+The components are
+.Dq src
+(source code),
+.Dq world
+(non-kernel binaries), and
+.Dq kernel ;
+the sub-components are the individual distribution sets generated as
+part of the release process (e.g.,
+.Dq src/base ,
+.Dq src/sys ,
+.Dq world/base ,
+.Dq world/catpages ,
+.Dq kernel/smp ) .
+Note that prior to
+.Fx 6.1 ,
+the
+.Dq kernel
+component was distributed as part of
+.Dq world/base .
+.Pp
+This option can be specified multiple times, and the parameters
+accumulate.
+.It Cm IgnorePaths
+The parameters following this keyword are regular expressions;
+updates to paths which start with a string matching one of
+these regular expressions will be ignored.
+.Pp
+This option can be specified multiple times, and the parameters
+accumulate.
+.It Cm IDSIgnorePaths
+The parameters following this keyword are regular expressions;
+paths which start with a string matching one of these regular
+expressions will be ignored by "freebsd-update IDS".
+.Pp
+This option can be specified multiple times, and the parameters
+accumulate.
+.It Cm UpdateIfUnmodified
+The parameters following this keyword are regular expressions;
+updates to paths which start with a string matching one of
+these regular expressions will be ignored if the files have
+been modified locally (unless they are merged -- see MergeChanges
+below).
+.Pp
+This option can be specified multiple times, and the parameters
+accumulate.
+.It Cm MergeChanges
+The parameters following this keyword are regular expressions;
+updates to paths which start with a string matching one of
+these regular expressions will be merged with local modifications.
+.Pp
+This option can be specified multiple times, and the parameters
+accumulate.
+.It Cm WorkDir
+The single parameter following this keyword is the directory
+in which temporary files and downloaded updates will be stored.
+.It Cm MailTo
+The single parameter following this keyword is the address
+to which
+.Cm cron
+output will be mailed.
+.It Cm AllowAdd
+The single parameter following this keyword must be
+.Dq yes
+or
+.Dq no
+and specifies whether
+.Cm freebsd-update
+is allowed to create new files, directories, and symlinks if
+these are part of updates downloaded.
+Note that
+.Cm freebsd-update
+will not re-add files which have been deleted from a
+.Fx
+installation unless those files were previously added as part
+of an update.
+.It Cm AllowDelete
+The single parameter following this keyword must be
+.Dq yes
+or
+.Dq no
+and specifies whether
+.Cm freebsd-update
+is allowed to delete files, directories, and symlinks as
+part of updates downloaded.
+.It Cm KeepModifiedMetadata
+The single parameter following this keyword must be
+.Dq yes
+or
+.Dq no
+and specifies whether
+.Cm freebsd-update
+should keep existing file ownership, permissions, and flags
+when installing updates if these have been modified locally.
+.It Cm StrictComponents
+The single parameter following this keyword must be
+.Dq yes
+or
+.Dq no
+and specifies whether
+.Cm freebsd-update
+should interpret the list of components of
+.Fx
+specified via the
+.Cm Components
+option strictly as a list of components installed which
+should be upgraded when the
+.Cm upgrade
+command is used ("yes"), or merely as a list of components
+which might be installed, of which
+.Cm freebsd-update
+should identify which in fact are present ("no").
+.El
+.Sh FILES
+.Bl -tag -width "/etc/freebsd-update.conf"
+.It /etc/freebsd-update.conf
+Default location of the
+.Cm freebsd-update
+configuration file.
+.El
+.Sh SEE ALSO
+.Xr sha256 1 ,
+.Xr freebsd-update 8
+.Sh AUTHORS
+.An Colin Percival Aq cperciva@FreeBSD.org
diff --git a/share/man/man5/fs.5 b/share/man/man5/fs.5
new file mode 100644
index 0000000..abb0f47
--- /dev/null
+++ b/share/man/man5/fs.5
@@ -0,0 +1,450 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)fs.5 8.2 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.Dd October 31, 2006
+.Dt FS 5
+.Os
+.Sh NAME
+.Nm fs ,
+.Nm inode
+.Nd format of file system volume
+.Sh SYNOPSIS
+.In sys/param.h
+.In ufs/ffs/fs.h
+.Pp
+.In sys/types.h
+.In sys/lock.h
+.In sys/extattr.h
+.In sys/acl.h
+.In ufs/ufs/quota.h
+.In ufs/ufs/dinode.h
+.In ufs/ufs/extattr.h
+.Sh DESCRIPTION
+The files
+.In fs.h
+and
+.In inode.h
+declare several structures, defined variables and macros
+which are used to create and manage the underlying format of
+file system objects on random access devices (disks).
+.Pp
+The block size and number of blocks which
+comprise a file system are parameters of the file system.
+Sectors beginning at
+.Dv BBLOCK
+and continuing for
+.Dv BBSIZE
+are used
+for a disklabel and for some hardware primary
+and secondary bootstrapping programs.
+.Pp
+The actual file system begins at sector
+.Dv SBLOCK
+with the
+.Em super-block
+that is of size
+.Dv SBLOCKSIZE .
+The following structure describes the super-block and is
+from the file
+.In ufs/ffs/fs.h :
+.Bd -literal
+/*
+ * Super block for an FFS filesystem.
+ */
+struct fs {
+ int32_t fs_firstfield; /* historic filesystem linked list, */
+ int32_t fs_unused_1; /* used for incore super blocks */
+ int32_t fs_sblkno; /* offset of super-block in filesys */
+ int32_t fs_cblkno; /* offset of cyl-block in filesys */
+ int32_t fs_iblkno; /* offset of inode-blocks in filesys */
+ int32_t fs_dblkno; /* offset of first data after cg */
+ int32_t fs_old_cgoffset; /* cylinder group offset in cylinder */
+ int32_t fs_old_cgmask; /* used to calc mod fs_ntrak */
+ int32_t fs_old_time; /* last time written */
+ int32_t fs_old_size; /* number of blocks in fs */
+ int32_t fs_old_dsize; /* number of data blocks in fs */
+ int32_t fs_ncg; /* number of cylinder groups */
+ int32_t fs_bsize; /* size of basic blocks in fs */
+ int32_t fs_fsize; /* size of frag blocks in fs */
+ int32_t fs_frag; /* number of frags in a block in fs */
+/* these are configuration parameters */
+ int32_t fs_minfree; /* minimum percentage of free blocks */
+ int32_t fs_old_rotdelay; /* num of ms for optimal next block */
+ int32_t fs_old_rps; /* disk revolutions per second */
+/* these fields can be computed from the others */
+ int32_t fs_bmask; /* ``blkoff'' calc of blk offsets */
+ int32_t fs_fmask; /* ``fragoff'' calc of frag offsets */
+ int32_t fs_bshift; /* ``lblkno'' calc of logical blkno */
+ int32_t fs_fshift; /* ``numfrags'' calc number of frags */
+/* these are configuration parameters */
+ int32_t fs_maxcontig; /* max number of contiguous blks */
+ int32_t fs_maxbpg; /* max number of blks per cyl group */
+/* these fields can be computed from the others */
+ int32_t fs_fragshift; /* block to frag shift */
+ int32_t fs_fsbtodb; /* fsbtodb and dbtofsb shift constant */
+ int32_t fs_sbsize; /* actual size of super block */
+ int32_t fs_spare1[2]; /* old fs_csmask */
+ /* old fs_csshift */
+ int32_t fs_nindir; /* value of NINDIR */
+ int32_t fs_inopb; /* value of INOPB */
+ int32_t fs_old_nspf; /* value of NSPF */
+/* yet another configuration parameter */
+ int32_t fs_optim; /* optimization preference, see below */
+ int32_t fs_old_npsect; /* # sectors/track including spares */
+ int32_t fs_old_interleave; /* hardware sector interleave */
+ int32_t fs_old_trackskew; /* sector 0 skew, per track */
+ int32_t fs_id[2]; /* unique filesystem id */
+/* sizes determined by number of cylinder groups and their sizes */
+ int32_t fs_old_csaddr; /* blk addr of cyl grp summary area */
+ int32_t fs_cssize; /* size of cyl grp summary area */
+ int32_t fs_cgsize; /* cylinder group size */
+ int32_t fs_spare2; /* old fs_ntrak */
+ int32_t fs_old_nsect; /* sectors per track */
+ int32_t fs_old_spc; /* sectors per cylinder */
+ int32_t fs_old_ncyl; /* cylinders in filesystem */
+ int32_t fs_old_cpg; /* cylinders per group */
+ int32_t fs_ipg; /* inodes per group */
+ int32_t fs_fpg; /* blocks per group * fs_frag */
+/* this data must be re-computed after crashes */
+ struct csum fs_old_cstotal; /* cylinder summary information */
+/* these fields are cleared at mount time */
+ int8_t fs_fmod; /* super block modified flag */
+ int8_t fs_clean; /* filesystem is clean flag */
+ int8_t fs_ronly; /* mounted read-only flag */
+ int8_t fs_old_flags; /* old FS_ flags */
+ u_char fs_fsmnt[MAXMNTLEN]; /* name mounted on */
+ u_char fs_volname[MAXVOLLEN]; /* volume name */
+ u_int64_t fs_swuid; /* system-wide uid */
+ int32_t fs_pad; /* due to alignment of fs_swuid */
+/* these fields retain the current block allocation info */
+ int32_t fs_cgrotor; /* last cg searched */
+ void *fs_ocsp[NOCSPTRS]; /* padding; was list of fs_cs buffers */
+ u_int8_t *fs_contigdirs; /* # of contiguously allocated dirs */
+ struct csum *fs_csp; /* cg summary info buffer for fs_cs */
+ int32_t *fs_maxcluster; /* max cluster in each cyl group */
+ u_int *fs_active; /* used by snapshots to track fs */
+ int32_t fs_old_cpc; /* cyl per cycle in postbl */
+ int32_t fs_maxbsize; /* maximum blocking factor permitted */
+ int64_t fs_unrefs; /* number of unreferenced inodes */
+ int64_t fs_sparecon64[16]; /* old rotation block list head */
+ int64_t fs_sblockloc; /* byte offset of standard superblock */
+ struct csum_total fs_cstotal; /* cylinder summary information */
+ ufs_time_t fs_time; /* last time written */
+ int64_t fs_size; /* number of blocks in fs */
+ int64_t fs_dsize; /* number of data blocks in fs */
+ ufs2_daddr_t fs_csaddr; /* blk addr of cyl grp summary area */
+ int64_t fs_pendingblocks; /* blocks in process of being freed */
+ int32_t fs_pendinginodes; /* inodes in process of being freed */
+ int32_t fs_snapinum[FSMAXSNAP]; /* list of snapshot inode numbers */
+ int32_t fs_avgfilesize; /* expected average file size */
+ int32_t fs_avgfpdir; /* expected # of files per directory */
+ int32_t fs_save_cgsize; /* save real cg size to use fs_bsize */
+ int32_t fs_sparecon32[26]; /* reserved for future constants */
+ int32_t fs_flags; /* see FS_ flags below */
+ int32_t fs_contigsumsize; /* size of cluster summary array */
+ int32_t fs_maxsymlinklen; /* max length of an internal symlink */
+ int32_t fs_old_inodefmt; /* format of on-disk inodes */
+ u_int64_t fs_maxfilesize; /* maximum representable file size */
+ int64_t fs_qbmask; /* ~fs_bmask for use with 64-bit size */
+ int64_t fs_qfmask; /* ~fs_fmask for use with 64-bit size */
+ int32_t fs_state; /* validate fs_clean field */
+ int32_t fs_old_postblformat; /* format of positional layout tables */
+ int32_t fs_old_nrpos; /* number of rotational positions */
+ int32_t fs_spare5[2]; /* old fs_postbloff */
+ /* old fs_rotbloff */
+ int32_t fs_magic; /* magic number */
+};
+
+/*
+ * Filesystem identification
+ */
+#define FS_UFS1_MAGIC 0x011954 /* UFS1 fast filesystem magic number */
+#define FS_UFS2_MAGIC 0x19540119 /* UFS2 fast filesystem magic number */
+#define FS_OKAY 0x7c269d38 /* superblock checksum */
+#define FS_42INODEFMT -1 /* 4.2BSD inode format */
+#define FS_44INODEFMT 2 /* 4.4BSD inode format */
+
+/*
+ * Preference for optimization.
+ */
+#define FS_OPTTIME 0 /* minimize allocation time */
+#define FS_OPTSPACE 1 /* minimize disk fragmentation */
+.Ed
+.Pp
+Each disk drive contains some number of file systems.
+A file system consists of a number of cylinder groups.
+Each cylinder group has inodes and data.
+.Pp
+A file system is described by its super-block, which in turn
+describes the cylinder groups.
+The super-block is critical
+data and is replicated in each cylinder group to protect against
+catastrophic loss.
+This is done at file system creation
+time and the critical
+super-block data does not change, so the copies need not be
+referenced further unless disaster strikes.
+.Pp
+Addresses stored in inodes are capable of addressing fragments
+of `blocks'.
+File system blocks of at most size
+.Dv MAXBSIZE
+can
+be optionally broken into 2, 4, or 8 pieces, each of which is
+addressable; these pieces may be
+.Dv DEV_BSIZE ,
+or some multiple of
+a
+.Dv DEV_BSIZE
+unit.
+.Pp
+Large files consist of exclusively large data blocks.
+To avoid
+undue wasted disk space, the last data block of a small file is
+allocated as only as many fragments of a large block as are
+necessary.
+The file system format retains only a single pointer
+to such a fragment, which is a piece of a single large block that
+has been divided.
+The size of such a fragment is determinable from
+information in the inode, using the
+.Fn blksize fs ip lbn
+macro.
+.Pp
+The file system records space availability at the fragment level;
+to determine block availability, aligned fragments are examined.
+.Pp
+The root inode is the root of the file system.
+Inode 0 cannot be used for normal purposes and
+historically bad blocks were linked to inode 1,
+thus the root inode is 2 (inode 1 is no longer used for
+this purpose, however numerous dump tapes make this
+assumption, so we are stuck with it).
+.Pp
+The
+.Fa fs_minfree
+element gives the minimum acceptable percentage of file system
+blocks that may be free.
+If the freelist drops below this level
+only the super-user may continue to allocate blocks.
+The
+.Fa fs_minfree
+element
+may be set to 0 if no reserve of free blocks is deemed necessary,
+however severe performance degradations will be observed if the
+file system is run at greater than 90% full; thus the default
+value of
+.Fa fs_minfree
+is 10%.
+.Pp
+Empirically the best trade-off between block fragmentation and
+overall disk utilization at a loading of 90% comes with a
+fragmentation of 8, thus the default fragment size is an eighth
+of the block size.
+.Pp
+The element
+.Fa fs_optim
+specifies whether the file system should try to minimize the time spent
+allocating blocks, or if it should attempt to minimize the space
+fragmentation on the disk.
+If the value of fs_minfree (see above) is less than 10%,
+then the file system defaults to optimizing for space to avoid
+running out of full sized blocks.
+If the value of minfree is greater than or equal to 10%,
+fragmentation is unlikely to be problematical, and
+the file system defaults to optimizing for time.
+.Pp
+.Em Cylinder group related limits :
+Each cylinder keeps track of the availability of blocks at different
+rotational positions, so that sequential blocks can be laid out
+with minimum rotational latency.
+With the default of 8 distinguished
+rotational positions, the resolution of the
+summary information is 2ms for a typical 3600 rpm drive.
+.Pp
+The element
+.Fa fs_old_rotdelay
+gives the minimum number of milliseconds to initiate
+another disk transfer on the same cylinder.
+It is used in determining the rotationally optimal
+layout for disk blocks within a file;
+the default value for
+.Fa fs_old_rotdelay
+is 2ms.
+.Pp
+Each file system has a statically allocated number of inodes.
+An inode is allocated for each
+.Dv NBPI
+bytes of disk space.
+The inode allocation strategy is extremely conservative.
+.Pp
+.Dv MINBSIZE
+is the smallest allowable block size.
+With a
+.Dv MINBSIZE
+of 4096
+it is possible to create files of size
+2^32 with only two levels of indirection.
+.Dv MINBSIZE
+must be big enough to hold a cylinder group block,
+thus changes to
+.Pq Fa struct cg
+must keep its size within
+.Dv MINBSIZE .
+Note that super-blocks are never more than size
+.Dv SBLOCKSIZE .
+.Pp
+The path name on which the file system is mounted is maintained in
+.Fa fs_fsmnt .
+.Dv MAXMNTLEN
+defines the amount of space allocated in
+the super-block for this name.
+The limit on the amount of summary information per file system
+is defined by
+.Dv MAXCSBUFS .
+For a 4096 byte block size, it is currently parameterized for a
+maximum of two million cylinders.
+.Pp
+Per cylinder group information is summarized in blocks allocated
+from the first cylinder group's data blocks.
+These blocks are read in from
+.Fa fs_csaddr
+(size
+.Fa fs_cssize )
+in addition to the super-block.
+.Pp
+.Sy N.B. :
+.Fn sizeof "struct csum"
+must be a power of two in order for
+the
+.Fn fs_cs
+macro to work.
+.Pp
+The
+.Em "Super-block for a file system" :
+The size of the rotational layout tables
+is limited by the fact that the super-block is of size
+.Dv SBLOCKSIZE .
+The size of these tables is
+.Em inversely
+proportional to the block
+size of the file system.
+The size of the tables is
+increased when sector sizes are not powers of two,
+as this increases the number of cylinders
+included before the rotational pattern repeats
+.Pq Fa fs_cpc .
+The size of the rotational layout
+tables is derived from the number of bytes remaining in
+.Pq Fa struct fs .
+.Pp
+The number of blocks of data per cylinder group
+is limited because cylinder groups are at most one block.
+The inode and free block tables
+must fit into a single block after deducting space for
+the cylinder group structure
+.Pq Fa struct cg .
+.Pp
+The
+.Em Inode :
+The inode is the focus of all file activity in the
+.Ux
+file system.
+There is a unique inode allocated
+for each active file,
+each current directory, each mounted-on file,
+text file, and the root.
+An inode is `named' by its device/i-number pair.
+For further information, see the include file
+.In ufs/ufs/inode.h .
+.Pp
+The format of an external attribute is defined by the extattr structure:
+.Bd -literal
+struct extattr {
+ int32_t ea_length; /* length of this attribute */
+ int8_t ea_namespace; /* name space of this attribute */
+ int8_t ea_contentpadlen; /* padding at end of attribute */
+ int8_t ea_namelength; /* length of attribute name */
+ char ea_name[1]; /* null-terminated attribute name */
+ /* extended attribute content follows */
+};
+.Ed
+.Pp
+Several macros are defined to manipulate these structures.
+Each macro takes a pointer to an extattr structure.
+.Bl -tag -width ".Dv EXTATTR_SET_LENGTHS(eap, size)"
+.It Dv EXTATTR_NEXT(eap)
+Returns a pointer to the next extended attribute following
+.Fa eap .
+.It Dv EXTATTR_CONTENT(eap)
+Returns a pointer to the extended attribute content referenced by
+.Fa eap .
+.It Dv EXTATTR_CONTENT_SIZE(eap)
+Returns the size of the extended attribute content referenced by
+.Fa eap .
+.It Dv EXTATTR_SET_LENGTHS(eap, size)
+Called with the size of the attribute content after initializing
+the attribute name to calculate and set the
+.Fa ea_length ,
+.Fa ea_namelength ,
+and
+.Fa ea_contentpadlen
+fields of the extended attribute structure.
+.El
+.Pp
+The following code identifies an ACL:
+.Bd -literal
+ if (eap->ea_namespace == EXTATTR_NAMESPACE_SYSTEM &&
+ !strcmp(eap->ea_name, POSIX1E_ACL_ACCESS_EXTATTR_NAME) {
+ aclp = EXTATTR_CONTENT(eap);
+ acllen = EXTATTR_CONTENT_SIZE(eap);
+ ...
+ }
+.Ed
+.Pp
+The following code creates an extended attribute
+containing a copy of a structure
+.Fa mygif :
+.Bd -literal
+ eap->ea_namespace = EXTATTR_NAMESPACE_USER;
+ strcpy(eap->ea_name, "filepic.gif");
+ EXTATTR_SET_LENGTHS(eap, sizeof(struct mygif));
+ memcpy(EXTATTR_CONTENT(eap), &mygif, sizeof(struct mygif));
+.Ed
+.Sh HISTORY
+A super-block structure named filsys appeared in
+.At v6 .
+The file system described in this manual appeared
+in
+.Bx 4.2 .
diff --git a/share/man/man5/fstab.5 b/share/man/man5/fstab.5
new file mode 100644
index 0000000..5c7406f
--- /dev/null
+++ b/share/man/man5/fstab.5
@@ -0,0 +1,322 @@
+.\" Copyright (c) 1980, 1989, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)fstab.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd November 23, 2008
+.Dt FSTAB 5
+.Os
+.Sh NAME
+.Nm fstab
+.Nd static information about the file systems
+.Sh SYNOPSIS
+.In fstab.h
+.Sh DESCRIPTION
+The file
+.Nm
+contains descriptive information about the various file
+systems.
+.Nm
+is only read by programs, and not written;
+it is the duty of the system administrator to properly create
+and maintain this file.
+Each file system is described on a separate line;
+fields on each line are separated by tabs or spaces.
+The order of records in
+.Nm
+is important because
+.Xr fsck 8 ,
+.Xr mount 8 ,
+and
+.Xr umount 8
+sequentially iterate through
+.Nm
+doing their thing.
+.Pp
+The first field,
+.Pq Fa fs_spec ,
+describes the special device or
+remote file system to be mounted.
+.Pp
+The second field,
+.Pq Fa fs_file ,
+describes the mount point for the file system.
+For swap partitions, this field should be specified as ``none''.
+.Pp
+The third field,
+.Pq Fa fs_vfstype ,
+describes the type of the file system.
+The system can support various file system types.
+Only the root, /usr, and /tmp file systems need be statically
+compiled into the kernel;
+everything else will be automatically loaded at mount
+time.
+(Exception: the UFS family - FFS and LFS cannot
+currently be demand-loaded.)
+Some people still prefer to statically
+compile other file systems as well.
+.Pp
+The fourth field,
+.Pq Fa fs_mntops ,
+describes the mount options associated with the file system.
+It is formatted as a comma separated list of options.
+It contains at least the type of mount (see
+.Fa fs_type
+below) plus any additional options appropriate to the file system type.
+See the options flag
+.Pq Fl o
+in the
+.Xr mount 8
+page and the file system specific page, such as
+.Xr mount_nfs 8 ,
+for additional options that may be specified.
+All options that can be given to the file system specific mount commands
+can be used in
+.Nm
+as well.
+They just need to be formatted a bit differently.
+The arguments of the
+.Fl o
+option can be used without the preceding
+.Fl o
+flag.
+Other options need both the file system specific flag and its argument,
+separated by an equal sign.
+For example, mounting an
+.Xr msdosfs 5
+filesystem, the options
+.Bd -literal -offset indent
+-o sync -o noatime -m 644 -M 755 -u foo -g bar
+.Ed
+.Pp
+should be written as
+.Bd -literal -offset indent
+sync,noatime,-m=644,-M=755,-u=foo,-g=bar
+.Ed
+.Pp
+in the option field of
+.Nm .
+.Pp
+If the options ``userquota'' and/or ``groupquota'' are specified,
+the file system is automatically processed by the
+.Xr quotacheck 8
+command, and user and/or group disk quotas are enabled with
+.Xr quotaon 8 .
+By default,
+file system quotas are maintained in files named
+.Pa quota.user
+and
+.Pa quota.group
+which are located at the root of the associated file system.
+These defaults may be overridden by putting an equal sign
+and an alternative absolute pathname following the quota option.
+Thus, if the user quota file for
+.Pa /tmp
+is stored in
+.Pa /var/quotas/tmp.user ,
+this location can be specified as:
+.Bd -literal -offset indent
+userquota=/var/quotas/tmp.user
+.Ed
+.Pp
+If the option ``noauto'' is specified, the file system will not be automatically
+mounted at system startup.
+Note that, for network file systems
+of third party types
+(i.e., types supported by additional software
+not included in the base system)
+to be automatically mounted at system startup,
+the
+.Va extra_netfs_types
+.Xr rc.conf 5
+variable must be used to extend the
+.Xr rc 8
+startup script's list of network file system types.
+.Pp
+The type of the mount is extracted from the
+.Fa fs_mntops
+field and stored separately in the
+.Fa fs_type
+field (it is not deleted from the
+.Fa fs_mntops
+field).
+If
+.Fa fs_type
+is ``rw'' or ``ro'' then the file system whose name is given in the
+.Fa fs_file
+field is normally mounted read-write or read-only on the
+specified special file.
+If
+.Fa fs_type
+is ``sw'' then the special file is made available as a piece of swap
+space by the
+.Xr swapon 8
+command at the end of the system reboot procedure.
+The fields other than
+.Fa fs_spec
+and
+.Fa fs_type
+are unused.
+If
+.Fa fs_type
+is specified as ``xx'' the entry is ignored.
+This is useful to show disk partitions which are currently unused.
+.Pp
+The fifth field,
+.Pq Fa fs_freq ,
+is used for these file systems by the
+.Xr dump 8
+command to determine which file systems need to be dumped.
+If the fifth field is not present, a value of zero is returned and
+.Nm dump
+will assume that the file system does not need to be dumped.
+.Pp
+The sixth field,
+.Pq Fa fs_passno ,
+is used by the
+.Xr fsck 8
+and
+.Xr quotacheck 8
+programs to determine the order in which file system and quota
+checks are done at reboot time.
+The
+.Fa fs_passno
+field can be any value between 0 and
+.Ql INT_MAX Ns -1 .
+.Pp
+The root file system should be specified with a
+.Fa fs_passno
+of 1, and other file systems should have a
+.Fa fs_passno
+of 2 or greater.
+A file system with a
+.Fa fs_passno
+value of 1 is always checked sequentially and be completed before
+another file system is processed, and it will be processed before
+all file systems with a larger
+.Fa fs_passno .
+.Pp
+For any given value of
+.Fa fs_passno ,
+file systems within a drive will be checked sequentially,
+but file systems on different drives will be checked at the
+same time to utilize parallelism available in the hardware.
+Once all file system checks are complete for the current
+.Fa fs_passno ,
+the same process will start over for the next
+.Fa fs_passno .
+.Pp
+If the sixth field is not present or is zero,
+a value of zero is returned and
+.Xr fsck 8
+and
+.Xr quotacheck 8
+will assume that the file system does not need to be checked.
+.Pp
+The
+.Fa fs_passno
+field can be used to implement finer control when
+the system utilities may determine that the file system resides
+on a different physical device, when it actually does not, as with a
+.Xr ccd 4
+device.
+All file systems with a lower
+.Fa fs_passno
+value will be completed before starting on file systems with a
+higher
+.Fa fs_passno
+value.
+E.g. all file systems with a
+.Fa fs_passno
+of 2 will be completed before any file systems with a
+.Fa fs_passno
+of 3 or greater are started.
+Gaps are allowed between the different
+.Fa fs_passno
+values.
+E.g. file systems listed in
+.Pa /etc/fstab
+may have
+.Fa fs_passno
+values such as 0, 1, 2, 15, 100, 200, 300, and may appear in any order
+within
+.Pa /etc/fstab .
+.Bd -literal
+#define FSTAB_RW "rw" /* read/write device */
+#define FSTAB_RQ "rq" /* read/write with quotas */
+#define FSTAB_RO "ro" /* read-only device */
+#define FSTAB_SW "sw" /* swap device */
+#define FSTAB_XX "xx" /* ignore totally */
+
+struct fstab {
+ char *fs_spec; /* block special device name */
+ char *fs_file; /* file system path prefix */
+ char *fs_vfstype; /* File system type, ufs, nfs */
+ char *fs_mntops; /* Mount options ala -o */
+ char *fs_type; /* FSTAB_* from fs_mntops */
+ int fs_freq; /* dump frequency, in days */
+ int fs_passno; /* pass number on parallel fsck */
+};
+.Ed
+.Pp
+The proper way to read records from
+.Pa fstab
+is to use the routines
+.Xr getfsent 3 ,
+.Xr getfsspec 3 ,
+.Xr getfstype 3 ,
+and
+.Xr getfsfile 3 .
+.Sh FILES
+.Bl -tag -width /etc/fstab -compact
+.It Pa /etc/fstab
+The file
+.Nm
+resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr getfsent 3 ,
+.Xr getvfsbyname 3 ,
+.Xr ccd 4 ,
+.Xr dump 8 ,
+.Xr fsck 8 ,
+.Xr mount 8 ,
+.Xr quotacheck 8 ,
+.Xr quotaon 8 ,
+.Xr swapon 8 ,
+.Xr umount 8
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.0 .
diff --git a/share/man/man5/group.5 b/share/man/man5/group.5
new file mode 100644
index 0000000..4aa6aff
--- /dev/null
+++ b/share/man/man5/group.5
@@ -0,0 +1,164 @@
+.\" Copyright (c) 1980, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)group.5 8.3 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.Dd September 29, 1994
+.Dt GROUP 5
+.Os
+.Sh NAME
+.Nm group
+.Nd format of the group permissions file
+.Sh DESCRIPTION
+The
+.Nm
+file is the local source of group information.
+It can be used in conjunction with the Hesiod domain
+`group', and the NIS maps `group.byname' and `group.bygid',
+as controlled by
+.Xr nsswitch.conf 5 .
+.Pp
+The file
+.Nm
+consists of newline separated
+.Tn ASCII
+records, one per group, containing four colon
+.Ql \&:
+separated fields.
+These fields are as follows:
+.Bl -tag -width password -offset indent -compact
+.It group
+Name of the group.
+.It passwd
+Group's
+.Em encrypted
+password.
+.It gid
+The group's decimal ID.
+.It member
+Group members.
+.El
+.Pp
+Lines whose first non-whitespace character is a pound-sign (#)
+are comments, and are ignored.
+Blank lines that consist
+only of spaces, tabs or newlines are also ignored.
+.Pp
+The
+.Ar group
+field is the group name used for granting file access to users
+who are members of the group.
+The
+.Ar gid
+field is the number associated with the group name.
+They should both be unique across the system (and often
+across a group of systems) since they control file access.
+The
+.Ar passwd
+field
+is an optional
+.Em encrypted
+password.
+This field is rarely used
+and an asterisk is normally placed in it rather than leaving it blank.
+The
+.Ar member
+field contains the names of users granted the privileges of
+.Ar group .
+The member names are separated by commas without spaces or newlines.
+A user is automatically in a group if that group was specified
+in their
+.Pa /etc/passwd
+entry and does not need to be added to that group in the
+.Nm
+file.
+.\" .Pp
+.\" When the system reads the file
+.\" .Pa /etc/group
+.\" the fields are read into the structure
+.\" .Fa group
+.\" declared in
+.\" .In grp.h :
+.\" .Bd -literal -offset indent
+.\" struct group {
+.\" char *gr_name; /* group name */
+.\" char *gr_passwd; /* group password */
+.\" int gr_gid; /* group id */
+.\" char **gr_mem; /* group members */
+.\" };
+.\" .Ed
+.Sh LIMITS
+There are various limitations which are explained in
+the function where they occur; see section
+.Sx SEE ALSO .
+.Pp
+In older implementations,
+a group cannot have more than 200 members.
+The maximum line length of
+.Pa /etc/group
+is 1024 characters.
+Longer lines will be skipped.
+This limitation disappeared in
+.Fx 3.0 .
+Older binaries that are statically linked, depend on old
+shared libraries, or
+.No non- Ns Fx
+binaries in compatibility mode
+may still have this limit.
+.Sh FILES
+.Bl -tag -width /etc/group -compact
+.It Pa /etc/group
+.El
+.Sh SEE ALSO
+.Xr passwd 1 ,
+.Xr setgroups 2 ,
+.Xr crypt 3 ,
+.Xr getgrent 3 ,
+.Xr initgroups 3 ,
+.Xr nsswitch.conf 5 ,
+.Xr passwd 5 ,
+.Xr chkgrp 8 ,
+.Xr pw 8 ,
+.Xr yp 8
+.Sh HISTORY
+A
+.Nm
+file format appeared in
+.At v6 .
+Support for comments first appeared in
+.Fx 3.0 .
+.Sh BUGS
+The
+.Xr passwd 1
+command does not change the
+.Nm
+passwords.
diff --git a/share/man/man5/hesiod.conf.5 b/share/man/man5/hesiod.conf.5
new file mode 100644
index 0000000..364ea80
--- /dev/null
+++ b/share/man/man5/hesiod.conf.5
@@ -0,0 +1,80 @@
+.\" $NetBSD: hesiod.conf.5,v 1.2 1999/01/25 22:37:06 lukem Exp $
+.\"
+.\" from: #Id: hesiod.conf.5,v 1.1 1996/12/08 21:36:38 ghudson Exp #
+.\"
+.\" Copyright 1996 by the Massachusetts Institute of Technology.
+.\"
+.\" Permission to use, copy, modify, and distribute this
+.\" software and its documentation for any purpose and without
+.\" fee is hereby granted, provided that the above copyright
+.\" notice appear in all copies and that both that copyright
+.\" notice and this permission notice appear in supporting
+.\" documentation, and that the name of M.I.T. not be used in
+.\" advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission.
+.\" M.I.T. makes no representations about the suitability of
+.\" this software for any purpose. It is provided "as is"
+.\" without express or implied warranty.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 30, 1996
+.Dt HESIOD.CONF 5
+.Os
+.Sh NAME
+.Nm hesiod.conf
+.Nd "configuration file for the Hesiod library"
+.Sh DESCRIPTION
+The file
+.Nm
+determines the behavior of the Hesiod library.
+Blank lines and lines beginning with a
+.Ql #
+character are ignored.
+All
+other lines should be of the form
+.Ar variable
+=
+.Ar value ,
+where the
+.Ar value
+should be a single word.
+Possible
+.Ar variables
+and
+.Ar values
+are:
+.Bl -tag -width classes
+.It Ic lhs
+Specifies the domain prefix used for Hesiod queries.
+In almost all cases, you should specify
+.Dq Li lhs=.ns .
+The default value if you do
+not specify an lhs value is no domain prefix, which is not compatible
+with most Hesiod domains.
+.It Ic rhs
+Specifies the default Hesiod domain; this value may be overridden by
+the
+.Ev HES_DOMAIN
+environment variable.
+You must specify an rhs line for the Hesiod
+library to work properly.
+.It Ic classes
+Specifies which DNS classes Hesiod should do lookups in.
+Possible values are
+.Cm IN
+(the preferred class) and
+.Cm HS
+(the deprecated class, still used by some sites).
+You may specify both classes separated by
+a comma to try one class first and then the other if no entry is
+available in the first class.
+The default value of the classes variable is
+.Dq Li IN,HS .
+.El
+.Sh SEE ALSO
+.Xr hesiod 3
+.Sh BUGS
+The default value for
+.Ic lhs
+should probably be more reasonable.
diff --git a/share/man/man5/hosts.5 b/share/man/man5/hosts.5
new file mode 100644
index 0000000..218a4df
--- /dev/null
+++ b/share/man/man5/hosts.5
@@ -0,0 +1,116 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)hosts.5 8.2 (Berkeley) 12/11/93
+.\" $FreeBSD$
+.\"
+.Dd December 11, 1993
+.Dt HOSTS 5
+.Os
+.Sh NAME
+.Nm hosts
+.Nd host name data base
+.Sh DESCRIPTION
+The
+.Nm
+file contains information regarding
+the known hosts on the network.
+It can be used in conjunction with DNS, and the NIS
+maps `hosts.byaddr' and `hosts.byname', as controlled by
+.Xr nsswitch.conf 5 .
+For each host a single line should be present
+with the following information:
+.Bd -unfilled -offset indent
+Internet address
+official host name
+aliases
+.Ed
+.Pp
+Items are separated by any number of blanks and/or
+tab characters.
+A ``#'' indicates the beginning of
+a comment; characters up to the end of the line are
+not interpreted by routines which search the file.
+.Pp
+When using the name server
+.Xr named 8 ,
+this file provides a backup used when the name server
+is not running.
+For the name server, it is suggested that only a few addresses
+be included in this file.
+These include addresses for the local interfaces that
+.Xr ifconfig 8
+needs at boot time and a few machines on the local network.
+.Pp
+This file may be created from the official host
+data base maintained at the Network Information Control
+Center
+.Pq Tn NIC ,
+though local changes may be required
+to bring it up to date regarding unofficial aliases
+and/or unknown hosts.
+As the data base maintained at
+.Tn NIC
+is incomplete, use of the name server is recommended for
+sites on the
+.Tn DARPA
+Internet.
+.Pp
+Network addresses are specified in the conventional
+``.'' (dot) notation using the
+.Xr inet_addr 3
+routine
+from the Internet address manipulation library,
+.Xr inet 3 .
+Host names may contain any printable
+character other than a field delimiter, newline,
+or comment character.
+.Sh FILES
+.Bl -tag -width /etc/hosts -compact
+.It Pa /etc/hosts
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr gethostbyname 3 ,
+.Xr nsswitch.conf 5 ,
+.Xr ifconfig 8 ,
+.Xr named 8
+.Rs
+.%T "Name Server Operations Guide for BIND"
+.Re
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.2 .
diff --git a/share/man/man5/hosts.equiv.5 b/share/man/man5/hosts.equiv.5
new file mode 100644
index 0000000..6bf8e0d
--- /dev/null
+++ b/share/man/man5/hosts.equiv.5
@@ -0,0 +1,149 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 8, 2007
+.Dt HOSTS.EQUIV 5
+.Os
+.Sh NAME
+.Nm hosts.equiv ,
+.Nm .rhosts
+.Nd trusted remote host and user name data base
+.Sh DESCRIPTION
+The
+.Nm
+and
+.Nm .rhosts
+files contain information regarding
+trusted hosts and users on the network.
+For each host a single line should be present
+with the following information:
+.Pp
+simple
+.Bd -unfilled -offset indent
+hostname [username]
+.Ed
+.Pp
+or the more verbose
+.Bd -unfilled -offset indent
+[+-][hostname|@netgroup] [[+-][username|@netgroup]]
+.Ed
+.Pp
+A
+.Dq @
+indicates a host by netgroup or user by netgroup.
+A single
+.Dq +
+matches all hosts or users.
+A host name with a leading
+.Dq -
+will reject
+all matching hosts and all their users.
+A user name with leading
+.Dq -
+will reject all matching users from matching hosts.
+.Pp
+Items are separated by any number of blanks and/or
+tab characters.
+A
+.Dq #
+indicates the beginning of
+a comment; characters up to the end of the line are
+not interpreted by routines which search the file.
+.Pp
+Host names are specified in the conventional Internet DNS
+dotted-domains
+.Dq .\&
+(dot) notation using the
+.Xr inet_addr 3
+routine
+from the Internet address manipulation library,
+.Xr inet 3 .
+Host names may contain any printable
+character other than a field delimiter, newline,
+or comment character.
+.Pp
+For security reasons, a user's
+.Nm .rhosts
+file will be ignored if it is not a regular file, or if it
+is not owned by the user, or
+if it is writable by anyone other than the user.
+.Sh FILES
+.Bl -tag -width /etc/hosts.equivxxx -compact
+.It Pa /etc/hosts.equiv
+The
+.Nm
+file resides in
+.Pa /etc .
+.It Pa $HOME/.rhosts
+.Nm .rhosts
+file resides in
+.Pa $HOME .
+.El
+.Sh EXAMPLES
+.Dl bar.com foo
+.Pp
+Trust user
+.Dq foo
+from host
+.Dq bar.com .
+.Pp
+.Dl +@allclient
+.Pp
+Trust all hosts from netgroup
+.Dq allclient .
+.Pp
+.Dl +@allclient -@dau
+.Pp
+Trust all hosts from netgroup
+.Dq allclient
+and their users
+except users from netgroup
+.Dq dau .
+.Sh SEE ALSO
+.Xr rcp 1 ,
+.Xr rlogin 1 ,
+.Xr rsh 1 ,
+.Xr gethostbyname 3 ,
+.Xr inet 3 ,
+.Xr innetgr 3 ,
+.Xr ruserok 3 ,
+.Xr netgroup 5 ,
+.Xr ifconfig 8 ,
+.Xr named 8 ,
+.Xr yp 8
+.Sh BUGS
+This manual page is incomplete.
+For more information read
+the source in
+.Pa src/lib/libc/net/rcmd.c
+or the SunOS manual page.
diff --git a/share/man/man5/hosts.lpd.5 b/share/man/man5/hosts.lpd.5
new file mode 100644
index 0000000..910ac66
--- /dev/null
+++ b/share/man/man5/hosts.lpd.5
@@ -0,0 +1,62 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 1, 1996
+.Dt HOSTS.LPD 5
+.Os
+.Sh NAME
+.Nm hosts.lpd
+.Nd trusted hosts that may use local print services
+.Sh DESCRIPTION
+The
+.Nm
+file contains a list of hostnames or IP addresses
+that are allowed to use your local print services.
+List every hostname or IP address on a line itself.
+.Pp
+If you want to allow access for any and all host,
+you can usually use the NIS netgroups feature to
+do this by adding a line with a single
+.Ql +
+character.
+.Sh FILES
+.Bl -tag -width /etc/hosts.lpdxxxxx -compact
+.It Pa /etc/hosts.lpd
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr printcap 5 ,
+.Xr lpd 8
diff --git a/share/man/man5/intro.5 b/share/man/man5/intro.5
new file mode 100644
index 0000000..764ba4d
--- /dev/null
+++ b/share/man/man5/intro.5
@@ -0,0 +1,55 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 16, 1997
+.Dt INTRO 5
+.Os
+.Sh NAME
+.Nm intro
+.Nd "introduction to file formats"
+.Sh DESCRIPTION
+This section contains information about file formats.
+.Sh FILES
+.Bl -tag -width /etc/shells -compact
+.It Pa /etc
+location of most system configuration files
+.El
+.Sh SEE ALSO
+.Xr apropos 1 ,
+.Xr intro 1 ,
+.Xr intro 8
+.Sh HISTORY
+The
+.Nm
+section manual page appeared in
+.Fx 2.2 .
diff --git a/share/man/man5/libmap.conf.5 b/share/man/man5/libmap.conf.5
new file mode 100644
index 0000000..6959ce2
--- /dev/null
+++ b/share/man/man5/libmap.conf.5
@@ -0,0 +1,163 @@
+.\" Copyright (c) 2003 Matthew N. Dodd <winter@jurai.net>
+.\" 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$
+.\"
+.Dd January 31, 2004
+.Dt LIBMAP.CONF 5
+.Os
+.Sh NAME
+.Nm libmap.conf
+.Nd "configuration file for dynamic object dependency mapping"
+.Sh DESCRIPTION
+The
+.Nm libmap
+functionality of
+.Xr ld-elf.so.1 1
+allows dynamic object dependencies to be mapped to arbitrary
+names.
+.Pp
+The configuration file consists of two whitespace separated columns; the
+left hand side containing the mapping candidate and the right hand
+side containing the mapping.
+Dependencies are matched against candidates and replaced with the mappings.
+.Pp
+Constrained mappings may be specified by enclosing the name of the
+executable or library in brackets.
+All mappings following a constraint will only be evaluated for that constraint.
+Constraints can be one of three types:
+.Bl -tag -width indent
+.It Exact
+The constraint is matched literally so that only an executable with an
+identical fully qualified pathname will match the constraint.
+This means that the executable
+.Pa /usr/bin/foo
+will not match a constraint for
+.Pa /usr/bin/./foo
+and vice-versa.
+This is the default constraint type.
+.It Basename
+A constraint with no path is matched against the basename of the
+executable.
+.Pa foo
+will match
+.Pa /bin/foo ,
+.Pa /usr/local/sbin/foo ,
+or any other executable named
+.Pa foo ,
+no matter what its path is.
+.It Directory
+A constraint with a trailing slash is prefix-matched against the full
+pathname of the executable.
+.Pa /usr/bin/
+will match any executable with a path starting with /usr/bin.
+.El
+.Pp
+Note that the executable path matched against is the
+.Fa path
+parameter in an
+.Fn exec*
+function call.
+The Directory or Exact constraints can only match when the executable
+is called with a full pathname.
+Most programs executed from a shell are run without a full path, via
+.Fn exec*p ,
+so the Basename constraint type is the most useful.
+.Pp
+WARNING!
+Constrained mappings must never appear first in the configuration file.
+While there is a way to specify the
+.Dq default
+constraint, its use is not recommended.
+.Pp
+The most common use at the date of writing is for allowing multiple
+.Tn POSIX
+threading libraries to be used on a system without relinking or
+changing symlinks.
+.Pp
+On 64-bit architectures that provide 32-bit runtime support,
+the libmap mechanism is available for 32-bit binaries too.
+The mappings has to be written into separate configuration file
+.Pa /etc/libmap32.conf .
+Currently only supported on amd64.
+.Pp
+This mechanism has also been used to create shims to allow Linux
+shared libraries to be dynamically loaded into
+.Fx
+binaries.
+In this case, an Exact constraint is used for the Linux shared library,
+mapping libraries it depends on to a wrapper.
+The wrapper then defines any needed symbols for the Linux shared library
+and relies on its libraries not being mapped to provide actual
+implementations.
+It appears that only libraries loaded via
+.Xr dlopen 3
+will work correctly.
+The symbol version information in shared libraries is checked at
+link time, but at run time the version information is currently
+ignored.
+.Sh FILES
+.Bl -tag -width ".Pa /etc/libmap32.conf" -compact
+.It Pa /etc/libmap.conf
+The libmap configuration file.
+.It Pa /etc/libmap32.conf
+The libmap configuration file for 32-bit binaries on 64-bit system.
+.El
+.Sh EXAMPLES
+.Bd -literal
+# /etc/libmap.conf
+#
+# candidate mapping
+#
+libc_r.so.6 libpthread.so.2 # Everything that uses 'libc_r'
+libc_r.so libpthread.so # now uses 'libpthread'
+
+[/tmp/mplayer] # Test version of mplayer uses libc_r
+libpthread.so.2 libc_r.so.6
+libpthread.so libc_r.so
+
+[/usr/local/jdk1.4.1/] # All Java 1.4.1 programs use libthr
+ # This works because "javavms" executes
+ # programs with the full pathname
+libpthread.so.2 libthr.so.2
+libpthread.so libthr.so
+
+# Glue for Linux-only EPSON printer .so to be loaded into cups, etc.
+[/usr/local/lib/pips/libsc80c.so]
+libc.so.6 pluginwrapper/pips.so
+libdl.so.2 pluginwrapper/pips.so
+.Ed
+.Sh SEE ALSO
+.Xr ldd 1 ,
+.Xr rtld 1
+.Sh HISTORY
+The
+.Nm
+manual page and
+.Nm libmap
+functionality first appeared in
+.Fx 5.1 .
+.Sh AUTHORS
+This manual page was written by
+.An Matthew N. Dodd Aq winter@jurai.net .
diff --git a/share/man/man5/link.5 b/share/man/man5/link.5
new file mode 100644
index 0000000..73f0a45
--- /dev/null
+++ b/share/man/man5/link.5
@@ -0,0 +1,596 @@
+.\" Copyright (c) 1993 Paul Kranenburg
+.\" 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 Paul Kranenburg.
+.\" 3. 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$
+.\"
+.Dd October 23, 1993
+.Dt LINK 5
+.Os
+.Sh NAME
+.Nm link
+.Nd dynamic loader and link editor interface
+.Sh SYNOPSIS
+.In sys/types.h
+.In nlist.h
+.In link.h
+.Sh DESCRIPTION
+The include file
+.In link.h
+declares several structures that are present in dynamically linked
+programs and libraries.
+The structures define the interface between several components of the
+link-editor and loader mechanism.
+The layout of a number of these
+structures within the binaries resembles the a.out format in many places
+as it serves such similar functions as symbol definitions (including the
+accompanying string table) and relocation records needed to resolve
+references to external entities.
+It also records a number of data structures
+unique to the dynamic loading and linking process.
+These include references
+to other objects that are required to complete the link-editing process and
+indirection tables to facilitate
+.Em Position Independent Code
+(PIC for short) to improve sharing of code pages among different processes.
+The collection of data structures described here will be referred to as the
+.Em Run-time Relocation Section (RRS)
+and is embedded in the standard text and data segments of the dynamically
+linked program or shared object image as the existing
+.Xr a.out 5
+format offers no room for it elsewhere.
+.Pp
+Several utilities cooperate to ensure that the task of getting a program
+ready to run can complete successfully in a way that optimizes the use
+of system resources.
+The compiler emits PIC code from which shared libraries
+can be built by
+.Xr ld 1 .
+The compiler also includes size information of any initialized data items
+through the .size assembler directive.
+PIC code differs from conventional code
+in that it accesses data variables through an indirection table, the
+Global Offset Table, by convention accessible by the reserved name
+.Dv _GLOBAL_OFFSET_TABLE_ .
+The exact mechanism used for this is machine dependent, usually a machine
+register is reserved for the purpose.
+The rational behind this construct
+is to generate code that is independent of the actual load address.
+Only
+the values contained in the Global Offset Table may need updating at run-time
+depending on the load addresses of the various shared objects in the address
+space.
+.Pp
+Likewise, procedure calls to globally defined functions are redirected through
+the Procedure Linkage Table (PLT) residing in the data segment of the core
+image.
+Again, this is done to avoid run-time modifications to the text segment.
+.Pp
+The linker-editor allocates the Global Offset Table and Procedure Linkage Table
+when combining PIC object files into an image suitable for mapping into the
+process address space.
+It also collects all symbols that may be needed by the
+run-time link-editor and stores these along with the image's text and data bits.
+Another reserved symbol,
+.Em _DYNAMIC
+is used to indicate the presence of the run-time linker structures.
+Whenever
+_DYNAMIC is relocated to 0, there is no need to invoke the run-time
+link-editor.
+If this symbol is non-zero, it points at a data structure from
+which the location of the necessary relocation- and symbol information can
+be derived.
+This is most notably used by the start-up module,
+.Em crt0 .
+The _DYNAMIC structure is conventionally located at the start of the data
+segment of the image to which it pertains.
+.Sh DATA STRUCTURES
+The data structures supporting dynamic linking and run-time relocation
+reside both in the text and data segments of the image they apply to.
+The text segments contain read-only data such as symbols descriptions and
+names, while the data segments contain the tables that need to be modified by
+during the relocation process.
+.Pp
+The _DYNAMIC symbol references a
+.Fa _dynamic
+structure:
+.Bd -literal -offset indent
+struct _dynamic {
+ int d_version;
+ struct so_debug *d_debug;
+ union {
+ struct section_dispatch_table *d_sdt;
+ } d_un;
+ struct ld_entry *d_entry;
+};
+.Ed
+.Bl -tag -width d_version
+.It Fa d_version
+This field provides for different versions of the dynamic linking
+implementation.
+The current version numbers understood by
+.Xr ld 1
+and
+.Xr ld.so 1
+are
+.Em LD_VERSION_SUN (3) ,
+which is used by the
+.Tn SunOS
+4.x releases, and
+.Em LD_VERSION_BSD (8) ,
+which has been in use since
+.Fx 1.1 .
+.It Fa d_un
+Refers to a
+.Em d_version
+dependent data structure.
+.It Fa so_debug
+this field provides debuggers with a hook to access symbol tables of shared
+objects loaded as a result of the actions of the run-time link-editor.
+.El
+.Pp
+The
+.Fa section_dispatch_table
+structure is the main
+.Dq dispatcher
+table, containing offsets into the image's segments where various symbol
+and relocation information is located.
+.Bd -literal -offset indent
+struct section_dispatch_table {
+ struct so_map *sdt_loaded;
+ long sdt_sods;
+ long sdt_filler1;
+ long sdt_got;
+ long sdt_plt;
+ long sdt_rel;
+ long sdt_hash;
+ long sdt_nzlist;
+ long sdt_filler2;
+ long sdt_buckets;
+ long sdt_strings;
+ long sdt_str_sz;
+ long sdt_text_sz;
+ long sdt_plt_sz;
+};
+.Ed
+.Pp
+.Bl -tag -width sdt_filler1
+.It Fa sdt_loaded
+A pointer to the first link map loaded (see below).
+This field is set by
+.Nm ld.so
+.It Fa sdt_sods
+The start of a (linked) list of shared object descriptors needed by
+.Em this
+object.
+.It Fa sdt_filler1
+Deprecated (used by SunOS to specify library search rules).
+.It Fa sdt_got
+The location of the Global Offset Table within this image.
+.It Fa sdt_plt
+The location of the Procedure Linkage Table within this image.
+.It Fa sdt_rel
+The location of an array of
+.Fa relocation_info
+structures
+(see
+.Xr a.out 5 )
+specifying run-time relocations.
+.It Fa sdt_hash
+The location of the hash table for fast symbol lookup in this object's
+symbol table.
+.It Fa sdt_nzlist
+The location of the symbol table.
+.It Fa sdt_filler2
+Currently unused.
+.It Fa sdt_buckets
+The number of buckets in
+.Fa sdt_hash
+.It Fa sdt_strings
+The location of the symbol string table that goes with
+.Fa sdt_nzlist .
+.It Fa sdt_str_sz
+The size of the string table.
+.It Fa sdt_text_sz
+The size of the object's text segment.
+.It Fa sdt_plt_sz
+The size of the Procedure Linkage Table.
+.El
+.Pp
+A
+.Fa sod
+structure describes a shared object that is needed
+to complete the link edit process of the object containing it.
+A list of such objects
+(chained through
+.Fa sod_next )
+is pointed at
+by the
+.Fa sdt_sods
+in the section_dispatch_table structure.
+.Bd -literal -offset indent
+struct sod {
+ long sod_name;
+ u_int sod_library : 1,
+ sod_reserved : 31;
+ short sod_major;
+ short sod_minor;
+ long sod_next;
+};
+.Ed
+.Pp
+.Bl -tag -width sod_library
+.It Fa sod_name
+The offset in the text segment of a string describing this link object.
+.It Fa sod_library
+If set,
+.Fa sod_name
+specifies a library that is to be searched for by
+.Nm ld.so .
+The path name
+is obtained by searching a set of directories
+(see also
+.Xr ldconfig 8 )
+for a shared object matching
+.Em lib\&<sod_name>\&.so.n.m .
+If not set,
+.Fa sod_name
+should point at a full path name for the desired shared object.
+.It Fa sod_major
+Specifies the major version number of the shared object to load.
+.It Fa sod_minor
+Specifies the preferred minor version number of the shared object to load.
+.El
+.Pp
+The run-time link-editor maintains a list of structures called
+.Em link maps
+to keep track of all shared objects loaded into a process' address space.
+These structures are only used at run-time and do not occur within
+the text or data segment of an executable or shared library.
+.Bd -literal -offset indent
+struct so_map {
+ caddr_t som_addr;
+ char *som_path;
+ struct so_map *som_next;
+ struct sod *som_sod;
+ caddr_t som_sodbase;
+ u_int som_write : 1;
+ struct _dynamic *som_dynamic;
+ caddr_t som_spd;
+};
+.Ed
+.Bl -tag -width som_dynamic
+.It Fa som_addr
+The address at which the shared object associated with this link map has
+been loaded.
+.It Fa som_path
+The full path name of the loaded object.
+.It Fa som_next
+Pointer to the next link map.
+.It Fa som_sod
+The
+.Fa sod
+structure that was responsible for loading this shared object.
+.It Fa som_sodbase
+Tossed out in later versions of the run-time linker.
+.It Fa som_write
+Set if (some portion of) this object's text segment is currently writable.
+.It Fa som_dynamic
+Pointer to this object's
+.Fa _dynamic
+structure.
+.It Fa som_spd
+Hook for attaching private data maintained by the run-time link-editor.
+.El
+.Pp
+Symbol description with size.
+This is simply an
+.Fa nlist
+structure with one field
+.Pq Fa nz_size
+added.
+Used to convey size information on items in the data segment
+of shared objects.
+An array of these lives in the shared object's
+text segment and is addressed by the
+.Fa sdt_nzlist
+field of
+.Fa section_dispatch_table .
+.Bd -literal -offset indent
+struct nzlist {
+ struct nlist nlist;
+ u_long nz_size;
+#define nz_un nlist.n_un
+#define nz_strx nlist.n_un.n_strx
+#define nz_name nlist.n_un.n_name
+#define nz_type nlist.n_type
+#define nz_value nlist.n_value
+#define nz_desc nlist.n_desc
+#define nz_other nlist.n_other
+};
+.Ed
+.Bl -tag -width nz_size
+.It Fa nlist
+(see
+.Xr nlist 3 ) .
+.It Fa nz_size
+The size of the data represented by this symbol.
+.El
+.Pp
+A hash table is included within the text segment of shared object
+to facilitate quick lookup of symbols during run-time link-editing.
+The
+.Fa sdt_hash
+field of the
+.Fa section_dispatch_table
+structure points at an array of
+.Fa rrs_hash
+structures:
+.Bd -literal -offset indent
+struct rrs_hash {
+ int rh_symbolnum; /* symbol number */
+ int rh_next; /* next hash entry */
+};
+.Ed
+.Pp
+.Bl -tag -width rh_symbolnum
+.It Fa rh_symbolnum
+The index of the symbol in the shared object's symbol table (as given by the
+.Fa ld_symbols
+field).
+.It Fa rh_next
+In case of collisions, this field is the offset of the next entry in this
+hash table bucket.
+It is zero for the last bucket element.
+.El
+The
+.Fa rt_symbol
+structure is used to keep track of run-time allocated commons
+and data items copied from shared objects.
+These items are kept on linked list
+and is exported through the
+.Fa dd_cc
+field in the
+.Fa so_debug
+structure (see below) for use by debuggers.
+.Bd -literal -offset indent
+struct rt_symbol {
+ struct nzlist *rt_sp;
+ struct rt_symbol *rt_next;
+ struct rt_symbol *rt_link;
+ caddr_t rt_srcaddr;
+ struct so_map *rt_smp;
+};
+.Ed
+.Pp
+.Bl -tag -width rt_scraddr
+.It Fa rt_sp
+The symbol description.
+.It Fa rt_next
+Virtual address of next rt_symbol.
+.It Fa rt_link
+Next in hash bucket.
+Used internally by
+.Nm ld.so .
+.It Fa rt_srcaddr
+Location of the source of initialized data within a shared object.
+.It Fa rt_smp
+The shared object which is the original source of the data that this
+run-time symbol describes.
+.El
+.Pp
+The
+.Fa so_debug
+structure is used by debuggers to gain knowledge of any shared objects
+that have been loaded in the process's address space as a result of run-time
+link-editing.
+Since the run-time link-editor runs as a part of process
+initialization, a debugger that wishes to access symbols from shared objects
+can only do so after the link-editor has been called from crt0.
+A dynamically linked binary contains a
+.Fa so_debug
+structure which can be located by means of the
+.Fa d_debug
+field in
+.Fa _dynamic .
+.Bd -literal -offset indent
+struct so_debug {
+ int dd_version;
+ int dd_in_debugger;
+ int dd_sym_loaded;
+ char *dd_bpt_addr;
+ int dd_bpt_shadow;
+ struct rt_symbol *dd_cc;
+};
+.Ed
+.Pp
+.Bl -tag -width dd_in_debugger
+.It Fa dd_version
+Version number of this interface.
+.It Fa dd_in_debugger
+Set by the debugger to indicate to the run-time linker that the program is
+run under control of a debugger.
+.It Fa dd_sym_loaded
+Set by the run-time linker whenever it adds symbols by loading shared objects.
+.It Fa dd_bpt_addr
+The address where a breakpoint will be set by the run-time linker to
+divert control to the debugger.
+This address is determined by the start-up
+module,
+.Pa crt0.o ,
+to be some convenient place before the call to _main.
+.It Fa dd_bpt_shadow
+Contains the original instruction that was at
+.Fa dd_bpt_addr .
+The debugger is expected to put this instruction back before continuing the
+program.
+.It Fa dd_cc
+A pointer to the linked list of run-time allocated symbols that the debugger
+may be interested in.
+.El
+.Pp
+The
+.Em ld_entry
+structure defines a set of service routines within
+.Nm ld.so .
+.\" See
+.\" .Xr libdl.a
+.\" for more information.
+.Bd -literal -offset indent
+struct ld_entry {
+ void *(*dlopen)(char *, int);
+ int (*dlclose)(void *);
+ void *(*dlsym)(void *, char *);
+ char *(*dlerror)(void);
+};
+.Ed
+.Pp
+The
+.Fa crt_ldso
+structure defines the interface between the start-up code in crt0 and
+.Nm ld.so .
+.Bd -literal -offset indent
+struct crt_ldso {
+ int crt_ba;
+ int crt_dzfd;
+ int crt_ldfd;
+ struct _dynamic *crt_dp;
+ char **crt_ep;
+ caddr_t crt_bp;
+ char *crt_prog;
+ char *crt_ldso;
+ struct ld_entry *crt_ldentry;
+};
+#define CRT_VERSION_SUN 1
+#define CRT_VERSION_BSD_2 2
+#define CRT_VERSION_BSD_3 3
+#define CRT_VERSION_BSD_4 4
+.Ed
+.Bl -tag -width crt_dzfd
+.It Fa crt_ba
+The virtual address at which
+.Nm ld.so
+was loaded by crt0.
+.It Fa crt_dzfd
+On SunOS systems, this field contains an open file descriptor to
+.Dq Pa /dev/zero
+used to get demand paged zeroed pages.
+On
+.Fx
+systems it contains -1.
+.It Fa crt_ldfd
+Contains an open file descriptor that was used by crt0 to load
+.Nm ld.so .
+.It Fa crt_dp
+A pointer to main's
+.Fa _dynamic
+structure.
+.It Fa crt_ep
+A pointer to the environment strings.
+.It Fa crt_bp
+The address at which a breakpoint will be placed by the run-time linker
+if the main program is run by a debugger.
+See
+.Fa so_debug
+.It Fa crt_prog
+The name of the main program as determined by crt0 (CRT_VERSION_BSD3 only).
+.It Fa crt_ldso
+The path of the run-time linker as mapped by crt0 (CRT_VERSION_BSD4 only).
+.El
+.Pp
+The
+.Fa hints_header
+and
+.Fa hints_bucket
+structures define the layout of the library hints, normally found in
+.Dq Pa /var/run/ld.so.hints ,
+which is used by
+.Nm ld.so
+to quickly locate the shared object images in the
+file system.
+The organization of the hints file is not unlike that of an
+.Dq a.out
+object file, in that it contains a header determining the offset and size
+of a table of fixed sized hash buckets and a common string pool.
+.Bd -literal -offset indent
+struct hints_header {
+ long hh_magic;
+#define HH_MAGIC 011421044151
+ long hh_version;
+#define LD_HINTS_VERSION_1 1
+ long hh_hashtab;
+ long hh_nbucket;
+ long hh_strtab;
+ long hh_strtab_sz;
+ long hh_ehints;
+};
+.Ed
+.Bl -tag -width hh_strtab_sz
+.It Fa hh_magic
+Hints file magic number.
+.It Fa hh_version
+Interface version number.
+.It Fa hh_hashtab
+Offset of hash table.
+.It Fa hh_strtab
+Offset of string table.
+.It Fa hh_strtab_sz
+Size of strings.
+.It Fa hh_ehints
+Maximum usable offset in hints file.
+.El
+.Pp
+.Bd -literal -offset indent
+/*
+ * Hash table element in hints file.
+ */
+struct hints_bucket {
+ int hi_namex;
+ int hi_pathx;
+ int hi_dewey[MAXDEWEY];
+ int hi_ndewey;
+#define hi_major hi_dewey[0]
+#define hi_minor hi_dewey[1]
+ int hi_next;
+};
+.Ed
+.Bl -tag -width hi_ndewey
+.It Fa hi_namex
+Index of the string identifying the library.
+.It Fa hi_pathx
+Index of the string representing the full path name of the library.
+.It Fa hi_dewey
+The version numbers of the shared library.
+.It Fa hi_ndewey
+The number of valid entries in
+.Fa hi_dewey .
+.It Fa hi_next
+Next bucket in case of hashing collisions.
+.El
+.Sh CAVEATS
+Only the (GNU) C compiler currently supports the creation of shared libraries.
+Other programming languages cannot be used.
diff --git a/share/man/man5/linprocfs.5 b/share/man/man5/linprocfs.5
new file mode 100644
index 0000000..a85afe9
--- /dev/null
+++ b/share/man/man5/linprocfs.5
@@ -0,0 +1,98 @@
+.\" $FreeBSD$
+.\" Written by Garrett Wollman
+.\" This file is in the public domain.
+.\"
+.Dd August 10, 1994
+.Dt LINPROCFS 5
+.Os
+.Sh NAME
+.Nm linprocfs
+.Nd Linux process file system
+.Sh SYNOPSIS
+.Bd -literal
+linproc /compat/linux/proc linprocfs rw 0 0
+.Ed
+.Sh DESCRIPTION
+The Linux process file system, or
+.Nm ,
+emulates a subset of Linux' process file system and is required for
+the complete operation of some Linux binaries.
+.Pp
+The
+.Nm
+provides a two-level view of process space.
+At the highest level, processes themselves are named, according to
+their process ids in decimal, with no leading zeros.
+There is also a special node called
+.Pa self
+which always refers to the process making the lookup request.
+.Pp
+Each node is a directory containing several files:
+.Bl -tag -width status
+.It Pa exe
+A reference to the vnode from which the process text was read.
+This can be used to gain access to the process' symbol table,
+or to start another copy of the process.
+.It Pa mem
+The complete virtual memory image of the process.
+Only those addresses which exist in the process can be accessed.
+Reads and writes to this file modify the process.
+Writes to the text segment remain private to the process.
+.El
+.Pp
+Each node is owned by the process's user, and belongs to that user's
+primary group, except for the
+.Pa mem
+node, which belongs to the
+.Li kmem
+group.
+.Sh FILES
+.Bl -tag -width /compat/linux/proc/self/XXXXXXX -compact
+.It Pa /compat/linux/proc
+The normal mount point for the
+.Nm .
+.It Pa /compat/linux/proc/cpuinfo
+CPU vendor and model information in human-readable form.
+.It Pa /compat/linux/proc/meminfo
+System memory information in human-readable form.
+.It Pa /compat/linux/proc/pid
+A directory containing process information for process
+.Pa pid .
+.It Pa /compat/linux/proc/self
+A directory containing process information for the current process.
+.It Pa /compat/linux/proc/self/exe
+The executable image for the current process.
+.It Pa /compat/linux/proc/self/mem
+The complete virtual address space of the current process.
+.El
+.Sh EXAMPLES
+To mount a
+.Nm
+file system on
+.Pa /compat/linux/proc :
+.Pp
+.Dl "mount -t linprocfs linproc /compat/linux/proc"
+.Sh SEE ALSO
+.Xr mount 2 ,
+.Xr unmount 2 ,
+.Xr procfs 5 ,
+.Xr pseudofs 9
+.Sh HISTORY
+The
+.Nm
+first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+was derived from
+.Nm procfs
+by
+.An Pierre Beyssac .
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav ,
+based on the
+.Xr procfs 5
+manual page by
+.An Garrett Wollman .
diff --git a/share/man/man5/linsysfs.5 b/share/man/man5/linsysfs.5
new file mode 100644
index 0000000..a586564
--- /dev/null
+++ b/share/man/man5/linsysfs.5
@@ -0,0 +1,99 @@
+.\" Written by Garrett Wollman
+.\" This file is in the public domain.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 5, 2007
+.Dt LINSYSFS 5
+.Os
+.Sh NAME
+.Nm linsysfs
+.Nd Linux system file system
+.Sh SYNOPSIS
+.Bd -literal
+linsys /compat/linux/sys linsysfs rw 0 0
+.Ed
+.Sh DESCRIPTION
+The
+.Tn Linux
+system file system, or
+.Nm ,
+emulates a subset of the
+.Tn Linux
+sys file system and is required for
+the complete operation of some
+.Tn Linux
+binaries.
+.Pp
+The
+.Nm
+provides a two-level view of devices.
+At the highest level, PCI devices themselves are named, according to
+their bus, slot and function in the system hierarchy.
+PCI storage devices are listed in the
+.Pa scsi_host
+class with a device symlink
+to the PCI directories of the devices.
+.Pp
+Each device node is a directory containing some files and directories:
+.Bl -tag -width ".Pa status"
+.It Pa host
+A place holder for storage host information.
+.It Pa pci_id
+A directory for the
+.Pa pci_id
+that contains either the device information or another directory structure
+for a PCI bridge.
+.El
+.Pp
+Each host node of scsi_host is a directory containing some files and directories:
+.Bl -tag -width ".Pa proc_name"
+.It Pa proc_name
+The
+.Tn Linux
+registered driver name for these devices.
+.It Pa device
+A symlink to the PCI device directory.
+.El
+.Sh EXAMPLES
+The most common usage follows:
+.Pp
+.Dl "mount -t linsysfs linsys /compat/linux/sys"
+.Pp
+where
+.Pa /compat/linux/sys
+is a mount point.
+.Sh FILES
+.Bl -tag -width ".Pa /compat/linux/sys/devices/pci0000:00" -compact
+.It Pa /compat/linux/sys
+The normal mount point for
+.Nm .
+.It Pa /compat/linux/sys/class/scsi_host
+The storage host node.
+.It Pa /compat/linux/sys/devices/pci0000:00
+The PCI device hierarchy node.
+.El
+.Sh SEE ALSO
+.Xr nmount 2 ,
+.Xr unmount 2 ,
+.Xr linprocfs 5 ,
+.Xr pseudofs 9
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 6.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+driver was derived from
+.Nm linprocfs
+by
+.An Doug Ambrisko .
+This manual page was edited by
+.An Doug Ambrisko ,
+based on the
+.Xr linprocfs 5
+manual page by
+.An Garrett Wollman .
diff --git a/share/man/man5/mailer.conf.5 b/share/man/man5/mailer.conf.5
new file mode 100644
index 0000000..f17c44b
--- /dev/null
+++ b/share/man/man5/mailer.conf.5
@@ -0,0 +1,144 @@
+.\" $NetBSD: mailer.conf.5,v 1.2 1999/05/29 18:18:30 christos Exp $
+.\"
+.\" Copyright (c) 1998
+.\" Perry E. Metzger. 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 acknowledgment:
+.\" This product includes software developed for the NetBSD Project
+.\" by Perry E. Metzger.
+.\" 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$
+.\"
+.Dd May 31, 2006
+.Dt MAILER.CONF 5
+.Os
+.Sh NAME
+.Nm mailer.conf
+.Nd configuration file for
+.Xr mailwrapper 8
+.Sh DESCRIPTION
+The file
+.Pa /etc/mail/mailer.conf
+contains a series of lines of the form
+.Pp
+.Ar name
+.Ar program
+.Op Ar arguments ...
+.Pp
+The first word of each line is the
+.Ar name
+of a program invoking
+.Xr mailwrapper 8 .
+(For example, on a typical system
+.Pa /usr/sbin/sendmail
+would be a symbolic link to
+.Xr mailwrapper 8 ,
+as would
+.Xr newaliases 1
+and
+.Xr mailq 1 .
+Thus,
+.Ar name
+might be
+.Dq Li sendmail
+or
+.Dq Li newaliases
+etc.)
+.Pp
+The second word of each line is the name of the
+.Ar program
+to actually execute when the first name is invoked.
+.Pp
+The further
+.Ar arguments ,
+if any, are passed to the
+.Ar program ,
+followed by the arguments
+.Xr mailwrapper 8
+was called with.
+.Pp
+The file may also contain comment lines, denoted by a
+.Ql #
+mark in the first column of any line.
+.Sh FILES
+/etc/mail/mailer.conf
+.Sh EXAMPLES
+This example shows how to set up
+.Nm
+to invoke the traditional
+.Xr sendmail 8
+program:
+.Bd -literal -offset indent
+# Execute the "real" sendmail program located in
+# /usr/libexec/sendmail/sendmail
+sendmail /usr/libexec/sendmail/sendmail
+send-mail /usr/libexec/sendmail/sendmail
+mailq /usr/libexec/sendmail/sendmail
+newaliases /usr/libexec/sendmail/sendmail
+.Ed
+.Pp
+This example shows how to invoke a sendmail-workalike like Postfix in
+place of
+.Xr sendmail 8 :
+.Bd -literal -offset indent
+# Emulate sendmail using postfix
+sendmail /usr/local/sbin/sendmail
+send-mail /usr/local/sbin/sendmail
+mailq /usr/local/sbin/sendmail
+newaliases /usr/local/sbin/sendmail
+.Ed
+.Pp
+This example shows the use of the
+.Nm mini_sendmail
+package from ports in place of
+.Xr sendmail 8 .
+Note the use of additional arguments.
+.Bd -literal -offset indent
+# Send outgoing mail to a smart relay using mini_sendmail
+sendmail /usr/local/bin/mini_sendmail -srelayhost
+send-mail /usr/local/bin/mini_sendmail -srelayhost
+.Ed
+.Sh SEE ALSO
+.Xr mail 1 ,
+.Xr mailq 1 ,
+.Xr newaliases 1 ,
+.Xr mailwrapper 8 ,
+.Xr sendmail 8
+.Pp
+.Xr postfix 1 Pq Pa ports/mail/postfix ,
+.Xr mini_sendmail 8 Pq Pa ports/mail/mini_sendmail
+.Sh HISTORY
+.Nm
+appeared in
+.Nx 1.4 .
+.Sh AUTHORS
+.An Perry E. Metzger Aq perry@piermont.com
+.Sh BUGS
+The entire reason this program exists is a crock.
+Instead, a command
+for how to submit mail should be standardized, and all the "behave
+differently if invoked with a different name" behavior of things like
+.Xr mailq 1
+should go away.
diff --git a/share/man/man5/make.conf.5 b/share/man/man5/make.conf.5
new file mode 100644
index 0000000..f8dbef4
--- /dev/null
+++ b/share/man/man5/make.conf.5
@@ -0,0 +1,744 @@
+.\" Copyright (c) 2000
+.\" Mike W. Meyer
+.\"
+.\" 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$
+.\"
+.Dd September 5, 2006
+.Dt MAKE.CONF 5
+.Os
+.Sh NAME
+.Nm make.conf
+.Nd system build information
+.Sh DESCRIPTION
+The file
+.Nm
+contains system-wide settings that will apply to every build using
+.Xr make 1
+and the standard
+.Pa sys.mk
+file.
+This is achieved as follows:
+.Xr make 1
+processes the system makefile
+.Pa sys.mk
+before any other file by default, and
+.Pa sys.mk
+includes
+.Nm .
+.Pp
+The file
+.Nm
+uses the standard makefile syntax.
+However,
+.Nm
+should not specify any dependencies to
+.Xr make 1 .
+Instead,
+.Nm
+is to set
+.Xr make 1
+variables that control the actions of other makefiles.
+.Pp
+The default location of
+.Nm
+is
+.Pa /etc/make.conf ,
+though an alternative location can be specified in the
+.Xr make 1
+variable
+.Va __MAKE_CONF .
+You may need to override the location of
+.Nm
+if the system-wide settings are not suitable for a particular build.
+For instance, setting
+.Va __MAKE_CONF
+to
+.Pa /dev/null
+effectively resets all build controls to their defaults.
+.Pp
+The primary purpose of
+.Nm
+is to control the compilation of the
+.Fx
+sources, documentation, and ported applications,
+which are usually found in
+.Pa /usr/src ,
+.Pa /usr/doc ,
+and
+.Pa /usr/ports .
+As a rule, the system administrator creates
+.Nm
+when the values of certain control variables need to be changed
+from their defaults.
+.Pp
+The system build procedures occur in four broad areas:
+the world, the kernel, documentation and ports.
+Variables set in
+.Nm
+may be applicable in one, two, or all four of these areas.
+In addition, control variables can be specified
+for a particular build via the
+.Fl D
+option of
+.Xr make 1
+or in
+.Xr environ 7 .
+.Pp
+The following lists provide a name and short description for each
+variable you can use during the indicated builds.
+The values of
+variables flagged as
+.Vt bool
+are ignored; the variable being
+set at all (even to
+.Dq Li FALSE
+or
+.Dq Li NO )
+causes it to
+be treated as if it were set.
+.Pp
+The following list provides a name and short description for variables
+that are used for all builds, or are used by the
+.Pa makefiles
+for things other than builds.
+.Bl -tag -width Ar
+.It Va ALWAYS_CHECK_MAKE
+.Pq Vt bool
+Instructs the top-level makefile in the source tree (normally
+.Pa /usr/src )
+to always check if
+.Xr make 1
+is up-to-date.
+Normally this is only done for the world and buildworld targets to handle
+upgrades from older versions of
+.Fx .
+.It Va CFLAGS
+.Pq Vt str
+Controls the compiler setting when compiling C code.
+Optimization levels other than
+.Fl O
+and
+.Fl O2
+are not supported.
+.Va BDECFLAGS
+is provided as a set of
+.Xr gcc 1
+settings suggested by
+.An "Bruce Evans" Aq bde@FreeBSD.org
+for developing and testing changes.
+They can be used, if set, by:
+.Pp
+.Bd -literal -offset indent
+CFLAGS+=${BDECFLAGS}
+.Ed
+.It Va CPUTYPE
+.Pq Vt str
+Controls which processor should be targeted for generated
+code.
+This controls processor-specific optimizations in
+certain code (currently only OpenSSL) as well as modifying
+the value of
+.Va CFLAGS
+and
+.Va COPTFLAGS
+to contain the appropriate optimization directive to
+.Xr gcc 1 .
+The automatic setting of
+.Va CFLAGS
+and
+.Va COPTFLAGS
+may be overridden using the
+.Va NO_CPU_CFLAGS
+and
+.Va NO_CPU_COPTFLAGS
+variables, respectively.
+Refer to
+.Pa /usr/share/examples/etc/make.conf
+for a list of recognized
+.Va CPUTYPE
+options.
+.It Va CVS_UPDATE
+.Pq Vt bool
+Set this to use
+.Xr cvs 1
+to update your ports with
+.Dq Li "make update" .
+.It Va CXXFLAGS
+.Pq Vt str
+Controls the compiler settings when compiling C++ code.
+.Va CXXFLAGS
+is initially set to the value of
+.Va CFLAGS .
+If you want to
+add to the
+.Va CXXFLAGS
+value, use
+.Dq Li +=
+instead of
+.Dq Li = .
+.It Va DOCSUPFILE
+.Pq Vt str
+The documentation
+.Ar supfile
+to use when doing a
+.Dq Li "make update" .
+This defaults to
+.Pa /usr/share/examples/cvsup/doc\-supfile .
+.It Va INSTALL
+.Pq Vt str
+the default install command.
+To install only files for which the target differs or does not exist, use
+.Bd -literal -offset indent
+INSTALL="install -C"
+.Ed
+Note that some makefiles (including those in
+.Pa /usr/share/mk )
+may hardcode options for the supplied install command.
+.It Va LOCAL_DIRS
+.Pq Vt str
+List any directories that should be entered when doing
+make's in
+.Pa /usr/src
+in this variable.
+.It Va MAKE_SHELL
+.Pq Vt str
+Controls the shell used internally by
+.Xr make 1
+to process the command scripts in makefiles.
+.Xr sh 1 ,
+.Xr ksh 1 ,
+and
+.Xr csh 1
+all currently supported.
+.Pp
+.Dl "MAKE_SHELL?=sh"
+.It Va MTREE_FOLLOWS_SYMLINKS
+.Pq Vt str
+Set this to
+.Dq Fl L
+to cause
+.Xr mtree 8
+to follow symlinks.
+.It Va NO_CPU_CFLAGS
+.Pq Vt str
+Setting this variable will prevent CPU specific compiler flags
+from being automatically added to
+.Va CFLAGS
+during compile time.
+.It Va NO_CPU_COPTFLAGS
+.Pq Vt str
+Setting this variable will prevent CPU specific compiler flags
+from being automatically added to
+.Va COPTFLAGS
+during compile time.
+.It Va NO_DOCUPDATE
+.Pq Vt bool
+Set this to not update the doc tree during
+.Dq Li "make update" .
+.It Va NO_PORTSUPDATE
+.Pq Vt bool
+Set this to not update the ports tree during
+.Dq Li "make update" .
+.It Va PORTSSUPFILE
+.Pq Vt str
+The ports
+.Ar supfile
+to use when doing a
+.Dq Li "make update" .
+This defaults to
+.Pa /usr/share/examples/cvsup/ports\-supfile .
+.It Va SUP
+.Pq Vt str
+The location of the
+.Xr csup 1
+or
+.Xr cvsup 1
+command for
+.Dq Li "make update" .
+.It Va SUPFILE
+.Pq Vt str
+The first
+.Ar supfile
+to use when doing a
+.Dq Li "make update" .
+This defaults to
+.Pa /usr/share/examples/cvsup/standard\-supfile .
+.It Va SUPFILE1
+.Pq Vt str
+The second
+.Ar supfile
+to use when doing a
+.Dq Li "make update" .
+This defaults to
+.Pa /usr/share/examples/cvsup/secure\-supfile .
+.It Va SUPFILE2
+.Pq Vt str
+The third
+.Ar supfile
+to use when doing a
+.Dq Li "make update" .
+This defaults to
+.Pa /usr/share/examples/cvsup/secure\-supfile .
+.It Va SUPFLAGS
+.Pq Vt str
+The flag for the
+.Xr sup 1
+command when doing
+.Dq Li "make update" .
+This defaults to
+.Op Fl g L Ar 2 .
+.It Va SUPHOST
+.Pq Vt str
+The hostname of the sup server to use when doing
+.Dq Li "make update" .
+.It Va SUP_UPDATE
+.Pq Vt bool
+Set this to use
+.Xr cvsup 1
+to update your ports with
+.Dq Li "make update" .
+.El
+.Ss "BUILDING THE KERNEL"
+The following list provides a name and short description for variables
+that are only used doing a kernel build:
+.Bl -tag -width Ar
+.It Va BOOTWAIT
+.Pq Vt int
+Controls the amount of time the kernel waits for a console keypress
+before booting the default kernel.
+The value is approximately milliseconds.
+Keypresses are accepted by the BIOS before booting from disk,
+making it possible to give custom boot parameters even when this is
+set to 0.
+.It Va COPTFLAGS
+.Pq Vt str
+Controls the compiler settings when building the
+kernel.
+Optimization levels above
+.Oo Fl O ( O2 , No ...\& ) Oc
+are not guaranteed to work.
+.It Va KERNCONF
+.Pq Vt str
+Controls which kernel configurations will be
+built by
+.Dq Li "${MAKE} buildkernel"
+and installed by
+.Dq Li "${MAKE} installkernel" .
+For example,
+.Bd -literal -offset indent
+KERNCONF=MINE DEBUG GENERIC OTHERMACHINE
+.Ed
+.Pp
+will build the kernels specified by the config files
+.Pa MINE , DEBUG , GENERIC ,
+and
+.Pa OTHERMACHINE ,
+and install the kernel specified by the config file
+.Pa MINE .
+It defaults to
+.Pa GENERIC .
+.It Va MODULES_OVERRIDE
+.Pq Vt str
+Set to a list of modules to build instead of all of them.
+.It Va NO_KERNELCONFIG
+.Pq Vt bool
+Set this to skip running
+.Xr config 8
+during
+.Dq Li "${MAKE} buildkernel" .
+.It Va NO_KERNELDEPEND
+.Pq Vt bool
+Set this to skip running
+.Dq Li "${MAKE} depend"
+during
+.Dq Li "${MAKE} buildkernel" .
+.It Va NO_MODULES
+.Pq Vt bool
+Set to not build modules with the kernel.
+.It Va PORTS_MODULES
+Set this to the list of ports you wish to rebuild every time the kernel
+is built.
+.It Va WITHOUT_MODULES
+.Pq Vt str
+Set to a list of modules to exclude from the build.
+This provides a
+somewhat easier way to exclude modules you are certain you will never
+need than specifying
+.Va MODULES_OVERRIDE .
+This is applied
+.Em after
+.Va MODULES_OVERRIDE .
+.El
+.Ss "BUILDING THE WORLD"
+The following list provides a name and short description for variables
+that are used during the world build:
+.Bl -tag -width Ar
+.It Va BOOT_COMCONSOLE_PORT
+.Pq Vt str
+The port address to use for the console if the boot blocks have
+been configured to use a serial console instead of the keyboard/video card.
+.It Va BOOT_COMCONSOLE_SPEED
+.Pq Vt int
+The baud rate to use for the console if the boot blocks have
+been configured to use a serial console instead of the keyboard/video card.
+.It Va BOOT_PXELDR_ALWAYS_SERIAL
+.Pq Vt bool
+Compile in the code into
+.Xr pxeboot 8
+that forces the use of a serial console.
+This is analogous to the
+.Fl h
+option in
+.Xr boot 8
+blocks.
+.It Va BOOT_PXELDR_PROBE_KEYBOARD
+.Pq Vt bool
+Compile in the code into
+.Xr pxeboot 8
+that probes the keyboard.
+If no keyboard is found, boot with the dual console configuration.
+This is analogous to the
+.Fl D
+option in
+.Xr boot 8
+blocks.
+.It Va ENABLE_SUID_K5SU
+.Pq Vt bool
+Set this if you wish to use the ksu utility.
+Otherwise, it will be
+installed without the set-user-ID bit set.
+.It Va ENABLE_SUID_NEWGRP
+.Pq Vt bool
+Set this to install
+.Xr newgrp 1
+with the set-user-ID bit set.
+Otherwise,
+.Xr newgrp 1
+will not be able to change users' groups.
+.It Va ENABLE_SUID_SSH
+.Pq Vt bool
+Set this to install
+.Xr ssh 1
+with the set-user-ID bit turned on.
+.It Va LOADER_TFTP_SUPPORT
+.Pq Vt bool
+By default the
+.Xr pxeboot 8
+loader retrieves the kernel via NFS.
+Defining this and recompiling
+.Pa /usr/src/sys/boot
+will cause it to retrieve the kernel via TFTP.
+This allows
+.Xr pxeboot 8
+to load a custom BOOTP diskless kernel yet
+still mount the server's
+.Pa /
+rather than load the server's kernel.
+.It Va LOADER_FIREWIRE_SUPPORT
+.Pq Vt bool
+Defining this and recompiling
+.Pa /usr/src/sys/boot/i386
+will add
+.Xr dcons 4
+console driver to
+.Xr loader 8
+and allow access over FireWire(IEEE1394) using
+.Xr dconschat 8 .
+Currently, only i386 and amd64 are supported.
+.It Va MODULES_WITH_WORLD
+.Pq Vt bool
+Set to build modules with the system instead of the kernel.
+.It Va NO_CLEAN
+.Pq Vt bool
+Set this to disable cleaning during
+.Dq Li "make buildworld" .
+This should not be set unless you know what you are doing.
+.It Va NO_CLEANDIR
+.Pq Vt bool
+Set this to run
+.Dq Li "${MAKE} clean"
+instead of
+.Dq Li "${MAKE} cleandir" .
+.It Va NO_MANCOMPRESS
+.Pq Vt bool
+Set to install manual pages uncompressed.
+.It Va NO_SHARE
+.Pq Vt bool
+Set to not build in the
+.Pa share
+subdir.
+.It Va NO_SHARED
+.Pq Vt bool
+Set to build
+.Pa /bin
+and
+.Pa /sbin
+statically linked, this can be bad.
+If set, every utility that uses
+.Pa bsd.prog.mk
+will be linked statically.
+.It Va PPP_NO_NAT
+.Pq Vt bool
+Build
+.Xr ppp 8
+without support for network address translation (NAT).
+.It Va PPP_NO_NETGRAPH
+.Pq Vt bool
+Set to build
+.Xr ppp 8
+without support for Netgraph.
+.It Va PPP_NO_RADIUS
+.Pq Vt bool
+Set to build
+.Xr ppp 8
+without support for RADIUS.
+.It Va PPP_NO_SUID
+.Pq Vt bool
+Set to disable the installation of
+.Xr ppp 8
+as a set-user-ID root program.
+.It Va SENDMAIL_ADDITIONAL_MC
+.Pq Vt str
+Additional
+.Pa .mc
+files which should be built into
+.Pa .cf
+files at build time.
+The value should include the full path to the
+.Pa .mc
+file(s), e.g.,
+.Pa /etc/mail/foo.mc
+.Pa /etc/mail/bar.mc .
+.It Va SENDMAIL_ALIASES
+.Pq Vt str
+List of
+.Xr aliases 5
+files to rebuild when using
+.Pa /etc/mail/Makefile .
+The default value is
+.Pa /etc/mail/aliases .
+.It Va SENDMAIL_CFLAGS
+.Pq Vt str
+Flags to pass to the compile command when building
+.Xr sendmail 8 .
+The
+.Va SENDMAIL_*
+flags can be used to provide SASL support with setting such as:
+.Bd -literal -offset indent
+SENDMAIL_CFLAGS=-I/usr/local/include -DSASL
+SENDMAIL_LDFLAGS=-L/usr/local/lib
+SENDMAIL_LDADD=-lsasl
+.Ed
+.It Va SENDMAIL_CF_DIR
+.Pq Vt str
+Override the default location for the
+.Xr m4 1
+configuration files used to build a
+.Pa .cf
+file from a
+.Pa .mc
+file.
+.It Va SENDMAIL_DPADD
+.Pq Vt str
+Extra dependencies to add when building
+.Xr sendmail 8 .
+.It Va SENDMAIL_LDADD
+.Pq Vt str
+Flags to add to the end of the
+.Xr ld 1
+command when building
+.Xr sendmail 8 .
+.It Va SENDMAIL_LDFLAGS
+.Pq Vt str
+Flags to pass to the
+.Xr ld 1
+command when building
+.Xr sendmail 8 .
+.It Va SENDMAIL_M4_FLAGS
+.Pq Vt str
+Flags passed to
+.Xr m4 1
+when building a
+.Pa .cf
+file from a
+.Pa .mc
+file.
+.It Va SENDMAIL_MAP_PERMS
+.Pq Vt str
+Mode to use when generating alias and map database files using
+.Pa /etc/mail/Makefile .
+The default value is 0640.
+.It Va SENDMAIL_MAP_SRC
+.Pq Vt str
+Additional maps to rebuild when using
+.Pa /etc/mail/Makefile .
+The
+.Pa access ,
+.Pa bitdomain ,
+.Pa domaintable ,
+.Pa genericstable ,
+.Pa mailertable ,
+.Pa uucpdomain ,
+and
+.Pa virtusertable
+maps are always rebuilt if they exist.
+.It Va SENDMAIL_MAP_TYPE
+.Pq Vt str
+Database map type to use when generating map database files using
+.Pa /etc/mail/Makefile .
+The default value is hash.
+The alternative is btree.
+.It Va SENDMAIL_MC
+.Pq Vt str
+The default
+.Xr m4 1
+configuration file to use at install time.
+The value should include the full path to the
+.Pa .mc
+file, e.g.,
+.Pa /etc/mail/myconfig.mc .
+Use with caution as a make install will overwrite any existing
+.Pa /etc/mail/sendmail.cf .
+Note that
+.Va SENDMAIL_CF
+is now deprecated.
+.It Va SENDMAIL_SET_USER_ID
+.Pq Vt bool
+If set, install
+.Xr sendmail 8
+as a set-user-ID root binary instead of a set-group-ID binary
+and do not install
+.Pa /etc/mail/submit.{cf,mc} .
+Use of this flag is not recommended and the alternative advice in
+.Pa /etc/mail/README
+should be followed instead if at all possible.
+.It Va SENDMAIL_START_SCRIPT
+.Pq Vt str
+The script used by
+.Pa /etc/mail/Makefile
+to start, stop, and restart
+.Xr sendmail 8 .
+The default value is
+.Pa /etc/rc.sendmail .
+This value should match the
+.Dq Li mta_start_script
+setting in
+.Xr rc.conf 5 .
+.It Va SENDMAIL_SUBMIT_MC
+.Pq Vt str
+The default
+.Xr m4 1
+configuration file for mail submission
+to use at install time.
+The value should include the full path to the
+.Pa .mc
+file, e.g.,
+.Pa /etc/mail/mysubmit.mc .
+Use with caution as a make install will overwrite any existing
+.Pa /etc/mail/submit.cf .
+.It Va TOP_TABLE_SIZE
+.Pq Vt int
+.Xr top 1
+uses a hash table for the user names.
+The size of this hash can be tuned to match the number of local users.
+The table size should be a prime number
+approximately twice as large as the number of lines in
+.Pa /etc/passwd .
+The default number is 20011.
+.It Va WANT_FORCE_OPTIMIZATION_DOWNGRADE
+.Pq Vt int
+Causes the system compiler to be built such that it forces high optimization
+levels to a lower one.
+.Xr gcc 1
+.Fl O2
+and above is known to trigger known optimizer bugs at various
+times.
+The value assigned is the highest optimization value used.
+.El
+.Ss "BUILDING DOCUMENTATION"
+The following list provides a name and short description for variables
+that are used when building documentation.
+.Bl -tag -width ".Va PRINTERDEVICE"
+.It Va DISTDIR
+.Pq Vt str
+Where distfiles are kept.
+Normally, this is
+.Pa distfiles
+in
+.Va PORTSDIR .
+.It Va DOC_LANG
+.Pq Vt str
+The list of languages and encodings to build and install.
+.It Va PRINTERDEVICE
+.Pq Vt str
+The default format for system documentation, depends on your
+printer.
+This can be set to
+.Dq Li ascii
+for simple printers, or
+.Dq Li ps
+for postscript or graphics printers with a ghostscript
+filter, or both.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact
+.It Pa /etc/make.conf
+.It Pa /usr/doc/Makefile
+.It Pa /usr/share/examples/etc/make.conf
+.It Pa /usr/share/mk/sys.mk
+.It Pa /usr/src/Makefile
+.It Pa /usr/src/Makefile.inc1
+.El
+.Sh SEE ALSO
+.Xr gcc 1 ,
+.Xr install 1 ,
+.Xr make 1 ,
+.Xr src.conf 5 ,
+.Xr environ 7 ,
+.Xr ports 7 ,
+.Xr sendmail 8
+.Sh HISTORY
+The
+.Nm
+file appeared sometime before
+.Fx 4.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Mike W. Meyer Aq mwm@mired.org .
+.Sh BUGS
+This manual page may occasionally be out of date with respect to
+the options currently available for use in
+.Nm .
+Please check the
+.Pa /usr/share/examples/etc/make.conf
+file for the latest options which are available.
+.Sh CAVEATS
+Note, that
+.Ev MAKEOBJDIRPREFIX
+and
+.Ev MAKEOBJDIR
+are environment variables and should not be set in
+.Nm
+but in make's environment.
diff --git a/share/man/man5/moduli.5 b/share/man/man5/moduli.5
new file mode 100644
index 0000000..32d7989
--- /dev/null
+++ b/share/man/man5/moduli.5
@@ -0,0 +1,159 @@
+.\" $OpenBSD: moduli.5,v 1.3 2001/06/24 18:50:52 provos Exp $
+.\"
+.\" Copyright 1997, 2000 William Allen Simpson <wsimpson@greendragon.com>
+.\" 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 designed by William Allen Simpson.
+.\" 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$
+.\"
+.Dd July 28, 1997
+.Dt MODULI 5
+.Os
+.Sh NAME
+.Nm moduli
+.Nd system moduli file
+.Sh DESCRIPTION
+The
+.Nm
+file contains the system-wide Diffie-Hellman prime moduli for the
+.Xr photurisd 8
+and
+.Xr sshd 8
+programs.
+.Pp
+Each line in this file contains the following fields:
+.Va Time , Type , Tests , Tries , Size , Generator ,
+and
+.Va Modulus .
+The fields are separated by white space (tab or blank).
+.Bl -tag -width indent
+.It Va Time Pq Vt yyyymmddhhmmss
+Specifies the system time that the line was appended to the file.
+The value 00000000000000 means unknown (historic).
+.\"The file is sorted in ascending order.
+.It Va Type Pq Vt decimal
+Specifies the internal structure of the prime modulus.
+.Pp
+.Bl -tag -width indent -compact
+.It 0
+unknown;
+often learned from peer during protocol operation,
+and saved for later analysis.
+.It 1
+unstructured;
+a common large number.
+.It 2
+safe (p = 2q + 1);
+meets basic structural requirements.
+.It 3
+Schnorr.
+.It 4
+Sophie-Germaine (q = (p-1)/2);
+usually generated in the process of testing safe or strong primes.
+.It 5
+strong;
+useful for RSA public key generation.
+.El
+.It Xo
+.Va Tests Pq Vt decimal
+(bit field)
+.Xc
+Specifies the methods used in checking for primality.
+Usually, more than one test is used.
+.Pp
+.Bl -tag -width indent -compact
+.It 0
+not tested;
+often learned from peer during protocol operation,
+and saved for later analysis.
+.It 1
+composite;
+failed one or more tests.
+In this case, the highest bit specifies the test that failed.
+.It 2
+sieve;
+checked for division by a range of smaller primes.
+.It 4
+Miller-Rabin.
+.It 8
+Jacobi.
+.It 16
+Elliptic Curve.
+.El
+.It Va Tries Pq Vt decimal
+Depends on the value of the highest valid Test bit,
+where the method specified is:
+.Pp
+.Bl -tag -width indent -compact
+.It 0
+not tested
+(always zero).
+.It 1
+composite
+(irrelevant).
+.It 2
+sieve;
+number of primes sieved.
+Commonly on the order of 32,000,000.
+.It 4
+Miller-Rabin;
+number of M-R iterations.
+Commonly on the order of 32 to 64.
+.It 8
+Jacobi;
+unknown
+(always zero).
+.It 16
+Elliptic Curve;
+unused
+(always zero).
+.El
+.It Va Size Pq Vt decimal
+Specifies the number of significant bits.
+.It Va Generator Pq Vt "hex string"
+Specifies the best generator for a Diffie-Hellman exchange.
+0 = unknown or variable,
+2, 3, 5, etc.
+.It Va Modulus Pq Vt "hex string"
+The prime modulus.
+.El
+.Pp
+The file is searched for moduli that meet the appropriate
+.Va Time , Size
+and
+.Va Generator
+criteria.
+When more than one meet the criteria,
+the selection should be weighted toward newer moduli,
+without completely disqualifying older moduli.
+.Sh FILES
+.Bl -tag -width ".Pa /etc/ssh/moduli" -compact
+.It Pa /etc/ssh/moduli
+.El
+.Sh SEE ALSO
+.Xr photurisd 8 ,
+.Xr sshd 8
diff --git a/share/man/man5/motd.5 b/share/man/man5/motd.5
new file mode 100644
index 0000000..2ffbc9e
--- /dev/null
+++ b/share/man/man5/motd.5
@@ -0,0 +1,43 @@
+.\" $NetBSD: motd.5,v 1.2 1994/12/28 18:58:53 glass Exp $
+.\"
+.\" This file is in the public domain.
+.\" $FreeBSD$
+.\"
+.Dd February 13, 1997
+.Dt MOTD 5
+.Os
+.Sh NAME
+.Nm motd
+.Nd file containing message(s) of the day
+.Sh DESCRIPTION
+The file
+.Pa /etc/motd
+is normally displayed by
+.Xr login 1
+after a user has logged in but before the shell is run.
+It is generally used for important system-wide announcements.
+During system startup, a line containing the kernel version string is
+prepended to this file.
+.Pp
+Individual users may suppress the display of this file by
+creating a file named
+.Dq Pa .hushlogin
+in their home directories or through
+.Xr login.conf 5 .
+.Sh FILES
+.Bl -tag -width $HOME/.hushlogin -compact
+.It Pa /etc/motd
+The message of the day.
+.It Pa $HOME/.hushlogin
+Suppresses output of
+.Pa /etc/motd .
+.El
+.Sh EXAMPLES
+.Bd -literal
+FreeBSD 2.1.6.1-RELEASE (GENERIC) #0: Sun Dec 29 03:08:31 PST 1996
+
+/home is full. Please cleanup your directories.
+.Ed
+.Sh SEE ALSO
+.Xr login 1 ,
+.Xr login.conf 5
diff --git a/share/man/man5/mqueuefs.5 b/share/man/man5/mqueuefs.5
new file mode 100644
index 0000000..d5de933
--- /dev/null
+++ b/share/man/man5/mqueuefs.5
@@ -0,0 +1,124 @@
+.\" Copyright (c) 2005 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 30, 2005
+.Dt MQUEUEFS 5
+.Os
+.Sh NAME
+.Nm mqueuefs
+.Nd POSIX message queue file system
+.Sh SYNOPSIS
+To link into kernel:
+.Pp
+.D1 Cd "options P1003_1B_MQUEUE"
+.Pp
+To load as a kernel loadable module:
+.Pp
+.Dl "kldload mqueuefs"
+.Sh DESCRIPTION
+The
+.Nm
+module will permit the
+.Fx
+kernel to support
+.Tn POSIX
+message queue.
+The module contains system calls to manipulate
+.Tn POSIX
+message queues.
+It also contains a file system to implement a view for all message queues of
+the system.
+This helps users to keep track of their message queues and make
+it more easily usable without having to invent additional tools.
+.Pp
+The most common usage is as follows:
+.Pp
+.Dl "mount -t mqueuefs null /mnt/mqueue"
+.Pp
+where
+.Pa /mnt/mqueue
+is a mount point.
+.Pp
+It is possible to define an entry in
+.Pa /etc/fstab
+that looks similar to:
+.Bd -literal
+null /mnt/mqueue mqueuefs rw 0 0
+.Ed
+.Pp
+This will mount
+.Nm
+at the
+.Pa /mnt/mqueue
+mount point during system boot.
+Using
+.Pa /mnt/mqueue
+as a permanent mount point is not advised as its intention
+has always been to be a temporary mount point.
+See
+.Xr hier 7
+for more information on
+.Fx
+directory layout.
+.Pp
+Some common tools can be used on the file system, e.g.:
+.Xr cat 1 ,
+.Xr chmod 1 ,
+.Xr chown 8 ,
+.Xr ls 1 ,
+.Xr rm 1 ,
+etc.
+To use only the message queue system calls, it is not necessary for
+user to mount the file system, just load the module or compile it
+into the kernel.
+Manually creating a file, for example,
+.Dq Li "touch /mnt/mqueue/myqueue" ,
+will create a message queue named
+.Pa myqueue
+in the kernel, default
+message queue attributes will be applied to the queue.
+It is not
+advised to use this method to create a queue;
+it is better to use the
+.Xr mq_open 2
+system call to create a queue as it
+allows the user to specify different attributes.
+.Pp
+To see the queue's attributes, just read the file:
+.Pp
+.Dl "cat /mnt/mqueue/myqueue"
+.Sh SEE ALSO
+.Xr mq_open 2 ,
+.Xr nmount 2 ,
+.Xr unmount 2 ,
+.Xr mount 8 ,
+.Xr umount 8
+.Sh AUTHORS
+This manual page was written by
+.An "David Xu" Aq davidxu@FreeBSD.org .
diff --git a/share/man/man5/msdosfs.5 b/share/man/man5/msdosfs.5
new file mode 100644
index 0000000..9dd679c
--- /dev/null
+++ b/share/man/man5/msdosfs.5
@@ -0,0 +1,69 @@
+.\" $FreeBSD$
+.\" Written by Tom Rhodes
+.\" This file is in the public domain.
+.\"
+.Dd Aug 22, 2007
+.Dt MSDOSFS 5
+.Os
+.Sh NAME
+.Nm msdosfs
+.Nd MS-DOS file system
+.Sh SYNOPSIS
+.Cd "options MSDOSFS"
+.Sh DESCRIPTION
+The
+.Nm
+driver will permit the
+.Fx
+kernel to read and write
+.Tn MS-DOS
+based file systems.
+.Pp
+The most common usage follows:
+.Pp
+.Dl "mount -t msdosfs /dev/ad0sN /mnt"
+.Pp
+where
+.Ar N
+is the partition number and
+.Pa /mnt
+is a mount point.
+Some users tend to create a
+.Pa /dos
+directory for
+.Nm
+mount points.
+This helps to keep better track of the file system,
+and make it more easily accessible.
+.Pp
+It is possible to define an entry in
+.Pa /etc/fstab
+that looks similar to:
+.Bd -literal
+/dev/ad0sN /dos msdosfs rw 0 0
+.Ed
+.Pp
+This will mount an
+.Tn MS-DOS
+based partition at the
+.Pa /dos
+mount point during system boot.
+Using
+.Pa /mnt
+as a permanent mount point is not advised as its intention
+has always been to be a temporary mount point for floppy and
+ZIP disks.
+See
+.Xr hier 7
+for more information on
+.Fx
+directory layout.
+.Sh SEE ALSO
+.Xr mount 2 ,
+.Xr unmount 2 ,
+.Xr mount 8 ,
+.Xr mount_msdosfs 8 ,
+.Xr umount 8
+.Sh AUTHORS
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man5/networks.5 b/share/man/man5/networks.5
new file mode 100644
index 0000000..386ee7d
--- /dev/null
+++ b/share/man/man5/networks.5
@@ -0,0 +1,89 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)networks.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt NETWORKS 5
+.Os
+.Sh NAME
+.Nm networks
+.Nd network name data base
+.Sh DESCRIPTION
+The
+.Nm
+file contains information regarding
+the known networks which comprise the
+.Tn DARPA
+Internet.
+For each network a single line should be present with the following information:
+.Bd -unfilled -offset indent
+official network name
+network number
+aliases
+.Ed
+.Pp
+Items are separated by any number of blanks and/or tab characters.
+A ``#'' indicates the beginning of a comment; characters up to the end of
+the line are not interpreted by routines which search the file.
+This file is normally created from the official network data base
+maintained at the Network Information Control Center
+.Pq Tn NIC ,
+though local
+changes may be required to bring it up to date regarding unofficial aliases
+and/or unknown networks.
+.Pp
+Network numbers may be specified in the conventional
+``.'' (dot) notation using the
+.Xr inet_network 3
+routine
+from the Internet address manipulation library,
+.Xr inet 3 .
+Network names may contain any printable character other than a field
+delimiter, newline, or comment character.
+.Sh FILES
+.Bl -tag -width /etc/networks -compact
+.It Pa /etc/networks
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr getnetent 3
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.2 .
+.Sh BUGS
+A name server should be used instead of a static file.
diff --git a/share/man/man5/nsmb.conf.5 b/share/man/man5/nsmb.conf.5
new file mode 100644
index 0000000..1c439be
--- /dev/null
+++ b/share/man/man5/nsmb.conf.5
@@ -0,0 +1,142 @@
+.\" Copyright (c) 2003
+.\" Originally written by Sergey A. Osokin
+.\" Rewritten by Tom Rhodes
+.\"
+.\" 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$
+.\"
+.Dd June 30, 2003
+.Dt NSMB.CONF 5
+.Os
+.Sh NAME
+.Nm nsmb.conf
+.Nd configuration file for
+.Tn SMB
+requests
+.Sh DESCRIPTION
+The
+.Nm
+file contains information about the computers, users, and shares
+or mount points for the
+.Tn SMB
+network protocol.
+.Pp
+The configuration hierarchy is made up of several sections,
+each section containing a few or several lines of parameters
+and their assigned values.
+Each of these sections must begin with a section name enclosed within
+square brackets, similar to:
+.Pp
+.D1 Bq Ar section_name
+.Pp
+The end of each section is marked by either the start of a new section,
+or by the abrupt ending of the file, commonly referred to as the
+.Tn EOF .
+Each section may contain zero or more parameters such as:
+.Pp
+.D1 Bq Ar section_name
+.D1 Ar key Ns = Ns Ar value
+.Pp
+where
+.Ar key
+represents a parameter name, and
+.Ar value
+would be the parameter's assigned value.
+.Pp
+The
+.Tn SMB
+library uses the following information for section names:
+.Pp
+.Bl -tag -width indent -compact
+.It Ic A)
+.Bq Li default
+.It Ic B)
+.Bq Ar SERVER
+.It Ic C)
+.Bq Ar SERVER : Ns Ar USER
+.It Ic D)
+.Op Ar SERVER : Ns Ar USER : Ns Ar SHARE
+.El
+.Pp
+Possible keywords may include:
+.Bl -column ".Va retry_count" ".Sy Section"
+.It Sy "Keyword Section Comment"
+.It Sy " A B C D"
+.It Va addr Ta "- + - -" Ta "IP or IPX address of SMB server"
+.It Va charsets Ta "- + + +" Ta "local:remote charset pair"
+.It Va nbns Ta "+ + - -" Ta "address of NetBIOS name server (WINS)"
+.It Va nbscope Ta "+ + - -" Ta "NetBIOS scope"
+.It Va nbtimeout Ta "+ + - -" Ta "timeout for NetBIOS name servers"
+.It Va password Ta "- - + +" Ta "plain text password used to access the given share"
+.It Va retry_count Ta "+ + - -" Ta "number of retries before connection is marked as broken"
+.It Va timeout Ta "+ + - -" Ta "SMB request timeout"
+.It Va workgroup Ta "+ + + +" Ta "workgroup name"
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /etc/nsmb.conf"
+.It Pa /etc/nsmb.conf
+The default remote mount-point configuration file.
+.El
+.Sh EXAMPLES
+What follows is a sample configuration file which may,
+or may not match your environment:
+.Bd -literal -offset indent
+# Configuration file for example.com
+[default]
+workgroup=SALES
+# The 'FSERVER' is an NT server.
+[FSERVER]
+charsets=koi8-r:cp866
+addr=fserv.example.com
+.Ed
+.Pp
+All lines which begin with the
+.Ql #
+character are comments and will not be parsed.
+The
+.Dq Li default
+section describes the default workgroup or domain, in this case
+.Dq Li SALES .
+The next section depicted here as
+.Dq Li FSERVER ,
+defines a server section and then assigns it a charset which is only
+required when Cyrillic characters are not used.
+The hostname value,
+.Dq Li fserv.example.com ,
+is also assigned in this section.
+.Sh COMPATIBILITY
+At the time of this writing, the
+.Tn IPX
+protocol remains unsupported.
+Future
+.Fx
+releases are expected to support this.
+.Sh SEE ALSO
+.Xr smbutil 1 ,
+.Xr mount_smbfs 8
+.Sh AUTHORS
+This manual page was written by
+.An -nosplit
+.An Sergey Osokin Aq osa@FreeBSD.org
+and
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man5/nsswitch.conf.5 b/share/man/man5/nsswitch.conf.5
new file mode 100644
index 0000000..f6940bd
--- /dev/null
+++ b/share/man/man5/nsswitch.conf.5
@@ -0,0 +1,384 @@
+.\" $NetBSD: nsswitch.conf.5,v 1.14 1999/03/17 20:19:47 garbled Exp $
+.\"
+.\" Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Luke Mewburn.
+.\"
+.\" 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 Luke Mewburn.
+.\" 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$
+.\"
+.Dd December 23, 2008
+.Dt NSSWITCH.CONF 5
+.Os
+.Sh NAME
+.Nm nsswitch.conf
+.Nd name-service switch configuration file
+.Sh DESCRIPTION
+The
+.Nm
+file specifies how the
+.Xr nsdispatch 3
+(name-service switch dispatcher) routines in the C library should operate.
+.Pp
+The configuration file controls how a process looks up various databases
+containing information regarding hosts, users (passwords), groups, etc.
+Each database comes from a source (such as local files, DNS,
+.Tn NIS ,
+and cache), and the order to look up the sources is specified in
+.Nm .
+.Pp
+Each entry in
+.Nm
+consists of a database name, and a space separated list of sources.
+Each source can have an optional trailing criterion that determines
+whether the next listed source is used, or the search terminates at
+the current source.
+Each criterion consists of one or more status codes, and actions to
+take if that status code occurs.
+.Ss Sources
+The following sources are implemented:
+.Pp
+.Bl -tag -width Source -compact
+.It Sy Source
+.Sy Description
+.It files
+Local files, such as
+.Pa /etc/hosts ,
+and
+.Pa /etc/passwd .
+.It dns
+Internet Domain Name System.
+.Dq hosts
+and
+.Sq networks
+use
+.Sy IN
+class entries, all other databases use
+.Sy HS
+class (Hesiod) entries.
+.It nis
+NIS (formerly YP)
+.It compat
+support
+.Sq +/-
+in the
+.Dq passwd
+and
+.Dq group
+databases.
+If this is present, it must be the only source for that entry.
+.It cache
+makes use of the
+.Xr nscd 8
+daemon.
+.El
+.Ss Databases
+The following databases are used by the following C library functions:
+.Pp
+.Bl -tag -width networks -compact
+.It Sy Database
+.Sy "Used by"
+.It group
+.Xr getgrent 3 ,
+.Xr getgrent_r 3 ,
+.Xr getgrgid_r 3 ,
+.Xr getgrnam_r 3 ,
+.Xr setgrent 3 ,
+.Xr endgrent 3
+.It hosts
+.Xr getaddrinfo 3 ,
+.Xr gethostbyaddr 3 ,
+.Xr gethostbyaddr_r 3 ,
+.Xr gethostbyname 3 ,
+.Xr gethostbyname2 3 ,
+.Xr gethostbyname_r 3 ,
+.Xr getipnodebyaddr 3 ,
+.Xr getipnodebyname 3
+.It networks
+.Xr getnetbyaddr 3 ,
+.Xr getnetbyaddr_r 3 ,
+.Xr getnetbyname 3 ,
+.Xr getnetbyname_r 3
+.It passwd
+.Xr getpwent 3 ,
+.Xr getpwent_r 3 ,
+.Xr getpwnam_r 3 ,
+.Xr getpwuid_r 3 ,
+.Xr setpwent 3 ,
+.Xr endpwent 3
+.It shells
+.Xr getusershell 3
+.It services
+.Xr getservent 3
+.It rpc
+.Xr getrpcbyname 3 ,
+.Xr getrpcbynumber 3 ,
+.Xr getrpcent 3
+.It proto
+.Xr getprotobyname 3 ,
+.Xr getprotobynumber 3 ,
+.Xr getprotoent 3
+.It netgroup
+.Xr getnetgrent 3 ,
+.Xr setnetgrent 3 ,
+.Xr innetgr 3
+.El
+.Ss Status codes
+The following status codes are available:
+.Pp
+.Bl -tag -width tryagain -compact
+.It Sy Status
+.Sy Description
+.It success
+The requested entry was found.
+.It notfound
+The entry is not present at this source.
+.It tryagain
+The source is busy, and may respond to retries.
+.It unavail
+The source is not responding, or entry is corrupt.
+.El
+.Ss Actions
+For each of the status codes, one of two actions is possible:
+.Pp
+.Bl -tag -width continue -compact
+.It Sy Action
+.Sy Description
+.It continue
+Try the next source
+.It return
+Return with the current result
+.El
+.Ss Format of file
+A
+.Tn BNF
+description of the syntax of
+.Nm
+is:
+.Pp
+.Bl -tag -width <criterion> -compact
+.It <entry>
+::=
+<database> ":" [<source> [<criteria>]]*
+.It <criteria>
+::=
+"[" <criterion>+ "]"
+.It <criterion>
+::=
+<status> "=" <action>
+.It <status>
+::=
+"success" | "notfound" | "unavail" | "tryagain"
+.It <action>
+::=
+"return" | "continue"
+.El
+.Pp
+Each entry starts on a new line in the file.
+A
+.Sq #
+delimits a comment to end of line.
+Blank lines are ignored.
+A
+.Sq \e
+at the end of a line escapes the newline, and causes the next line to
+be a continuation of the current line.
+All entries are case-insensitive.
+.Pp
+The default criteria is to return on
+.Dq success ,
+and continue on anything else (i.e,
+.Li "[success=return notfound=continue unavail=continue tryagain=continue]" ) .
+.Ss Cache
+You can enable caching for the particular database by specifying
+.Dq cache
+as the first source in the
+.Xr nsswitch.conf 5
+file.
+You should also enable caching for this database in
+.Xr nscd.conf 5 .
+If for the particular query
+.Dq cache
+source returns success, no further sources are queried.
+On the other hand, if there are no previously cached data, the
+query result will be placed into the cache right after
+all other sources are processed.
+Note, that
+.Dq cache
+requires
+.Xr nscd 8
+daemon to be running.
+.Ss Compat mode: +/- syntax
+In historical multi-source implementations, the
+.Sq +
+and
+.Sq -
+characters are used to specify the importing of user password and
+group information from
+.Tn NIS .
+Although
+.Nm
+provides alternative methods of accessing distributed sources such as
+.Tn NIS ,
+specifying a sole source of
+.Dq compat
+will provide the historical behaviour.
+.Pp
+An alternative source for the information accessed via
+.Sq +/-
+can be used by specifying
+.Dq passwd_compat: source .
+.Dq source
+in this case can be
+.Sq dns ,
+.Sq nis ,
+or
+any other source except for
+.Sq files
+and
+.Sq compat .
+.Ss Notes
+Historically, many of the databases had enumeration functions, often of
+the form
+.Fn getXXXent .
+These made sense when the databases were in local files, but do not make
+sense or have lesser relevance when there are possibly multiple sources,
+each of an unknown size.
+The interfaces are still provided for compatibility, but the source
+may not be able to provide complete entries, or duplicate entries may
+be retrieved if multiple sources that contain similar information are
+specified.
+.Pp
+To ensure compatibility with previous and current implementations, the
+.Dq compat
+source must appear alone for a given database.
+.Ss Default source lists
+If, for any reason,
+.Nm
+does not exist, or it has missing or corrupt entries,
+.Xr nsdispatch 3
+will default to an entry of
+.Dq files
+for the requested database.
+Exceptions are:
+.Pp
+.Bl -tag -width services_compat -compact
+.It Sy Database
+.Sy "Default source list"
+.It group
+compat
+.It group_compat
+nis
+.It hosts
+files dns
+.It passwd
+compat
+.It passwd_compat
+nis
+.It services
+compat
+.It services_compat
+nis
+.El
+.Sh FILES
+.Bl -tag -width /etc/nsswitch.conf -compact
+.It Pa /etc/nsswitch.conf
+The file
+.Nm
+resides in
+.Pa /etc .
+.El
+.Sh EXAMPLES
+To lookup hosts in cache, then in
+.Pa /etc/hosts
+and then from the DNS, and lookup user information from
+.Tn NIS
+then files, use:
+.Pp
+.Bl -tag -width passwd: -compact
+.It hosts:
+cache files dns
+.It passwd:
+nis [notfound=return] files
+.It group:
+nis [notfound=return] files
+.El
+.Pp
+The criteria
+.Dq [notfound=return]
+sets a policy of "if the user is notfound in nis, do not try files."
+This treats nis as the authoritative source of information, except
+when the server is down.
+.Sh NOTES
+If system got compiled with
+.Va WITHOUT_NIS
+you have to remove
+.Sq nis
+entries.
+.Pp
+.Fx Ns 's
+.Lb libc
+provides stubs for compatibility with NSS modules
+written for the
+.Tn GNU
+C Library
+.Nm nsswitch
+interface.
+However, these stubs only support the use of the
+.Dq Li passwd
+and
+.Dq Li group
+databases.
+.Sh SEE ALSO
+.Xr nsdispatch 3 ,
+.Xr nscd.conf 5 ,
+.Xr resolv.conf 5 ,
+.Xr nscd 8 ,
+.Xr named 8 ,
+.Xr ypbind 8
+.Sh HISTORY
+The
+.Nm
+file format first appeared in
+.Fx 5.0 .
+It was imported from the
+.Nx
+Project, where it appeared first in
+.Nx 1.4 .
+.Sh AUTHORS
+Luke Mewburn
+.Aq lukem@netbsd.org
+wrote this freely distributable name-service switch implementation,
+using ideas from the
+.Tn ULTRIX
+.Xr svc.conf 5
+and
+.Tn Solaris
+.Xr nsswitch.conf 4
+manual pages.
diff --git a/share/man/man5/nullfs.5 b/share/man/man5/nullfs.5
new file mode 100644
index 0000000..653711b
--- /dev/null
+++ b/share/man/man5/nullfs.5
@@ -0,0 +1,75 @@
+.\"
+.\" Copyright (c) 2008 Daniel Gerzo
+.\" 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 DOCUMENTATION 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$
+.\"
+.Dd October 5, 2008
+.Dt NULLFS 5
+.Os
+.Sh NAME
+.Nm nullfs
+.Nd "null file system"
+.Sh SYNOPSIS
+To enable support for
+.Nm ,
+place the following line in the kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options NULLFS"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+nullfs_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver will permit the
+.Fx
+kernel to mount a loopback file system sub-tree.
+.Sh EXAMPLES
+To mount a
+.Nm
+file system:
+.Pp
+.Dl "mount_nullfs /usr/ports /home/devel/ports"
+.Sh SEE ALSO
+.Xr fstab 5 ,
+.Xr mount_nullfs 8
+.Sh HISTORY
+The
+.Nm
+layer first appeared in
+.Bx 4.4 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+kernel implementation was written by
+.An John Heideman .
+.Pp
+This manual page was written by
+.An Daniel Gerzo Aq danger@FreeBSD.org .
diff --git a/share/man/man5/passwd.5 b/share/man/man5/passwd.5
new file mode 100644
index 0000000..2acef53
--- /dev/null
+++ b/share/man/man5/passwd.5
@@ -0,0 +1,452 @@
+.\" $NetBSD: passwd.5,v 1.12.2.2 1999/12/17 23:14:50 he Exp $
+.\"
+.\" Copyright (c) 1988, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\" Portions Copyright (c) 1994, Jason Downs. 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 the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" From: @(#)passwd.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd May 8, 2007
+.Dt PASSWD 5
+.Os
+.Sh NAME
+.Nm passwd ,
+.Nm master.passwd
+.Nd format of the password file
+.Sh DESCRIPTION
+The
+.Nm
+files are the local source of password information.
+They can be used in conjunction with the Hesiod domains
+.Sq Li passwd
+and
+.Sq Li uid ,
+and the
+.Tn NIS
+maps
+.Sq Li passwd.byname ,
+.Sq Li passwd.byuid ,
+.Sq Li master.passwd.byname ,
+and
+.Sq Li master.passwd.byuid ,
+as controlled by
+.Xr nsswitch.conf 5 .
+.Pp
+For consistency, none of these files should ever be modified
+manually.
+.Pp
+The
+.Nm master.passwd
+file is readable only by root, and consists of newline separated
+records, one per user, containing ten colon
+.Pq Ql \&:
+separated
+fields.
+These fields are as follows:
+.Pp
+.Bl -tag -width ".Ar password" -offset indent
+.It Ar name
+User's login name.
+.It Ar password
+User's
+.Em encrypted
+password.
+.It Ar uid
+User's id.
+.It Ar gid
+User's login group id.
+.It Ar class
+User's login class.
+.It Ar change
+Password change time.
+.It Ar expire
+Account expiration time.
+.It Ar gecos
+General information about the user.
+.It Ar home_dir
+User's home directory.
+.It Ar shell
+User's login shell.
+.El
+.Pp
+The
+.Nm
+file is generated from the
+.Nm master.passwd
+file by
+.Xr pwd_mkdb 8 ,
+has the
+.Ar class ,
+.Ar change ,
+and
+.Ar expire
+fields removed, and the
+.Ar password
+field replaced by a
+.Ql *
+character.
+.Pp
+The
+.Ar name
+field is the login used to access the computer account, and the
+.Ar uid
+field is the number associated with it.
+They should both be unique
+across the system (and often across a group of systems) since they
+control file access.
+.Pp
+While it is possible to have multiple entries with identical login names
+and/or identical user id's, it is usually a mistake to do so.
+Routines
+that manipulate these files will often return only one of the multiple
+entries, and that one by random selection.
+.Pp
+The login name must never begin with a hyphen
+.Pq Ql - ;
+also, it is strongly
+suggested that neither upper-case characters or dots
+.Pq Ql \&.
+be part
+of the name, as this tends to confuse mailers.
+No field may contain a
+colon
+.Pq Ql \&:
+as this has been used historically to separate the fields
+in the user database.
+.Pp
+In the
+.Nm master.passwd
+file,
+the
+.Ar password
+field is the
+.Em encrypted
+form of the password, see
+.Xr crypt 3 .
+If the
+.Ar password
+field is empty, no password will be required to gain access to the
+machine.
+This is almost invariably a mistake, so authentication components
+such as PAM can forcibly disallow remote access to passwordless accounts.
+Because this file contains the encrypted user passwords, it should
+not be readable by anyone without appropriate privileges.
+.Pp
+A password of
+.Ql *
+indicates that
+password authentication is disabled for that account
+(logins through other forms of
+authentication, e.g., using
+.Xr ssh 1
+keys, will still work).
+The field only contains encrypted passwords, and
+.Ql *
+can never be the result of encrypting a password.
+.Pp
+An encrypted password prefixed by
+.Ql *LOCKED*
+means that the account is temporarily locked out
+and no one can log into it using any authentication.
+For a convenient command-line interface to account locking, see
+.Xr pw 8 .
+.Pp
+The
+.Ar group
+field is the group that the user will be placed in upon login.
+Since this system supports multiple groups (see
+.Xr groups 1 )
+this field currently has little special meaning.
+.Pp
+The
+.Ar class
+field is a key for a user's login class.
+Login classes
+are defined in
+.Xr login.conf 5 ,
+which is a
+.Xr termcap 5
+style database of user attributes, accounting, resource,
+and environment settings.
+.Pp
+The
+.Ar change
+field is the number of seconds from the epoch,
+.Dv UTC ,
+until the
+password for the account must be changed.
+This field may be left empty to turn off the password aging feature.
+.Pp
+The
+.Ar expire
+field is the number of seconds from the epoch,
+.Dv UTC ,
+until the
+account expires.
+This field may be left empty to turn off the account aging feature.
+.Pp
+The
+.Ar gecos
+field normally contains comma
+.Pq Ql \&,
+separated subfields as follows:
+.Pp
+.Bl -tag -width ".Ar office" -offset indent -compact
+.It Ar name
+user's full name
+.It Ar office
+user's office number
+.It Ar wphone
+user's work phone number
+.It Ar hphone
+user's home phone number
+.El
+.Pp
+The full
+.Ar name
+may contain a ampersand
+.Pq Ql &
+which will be replaced by
+the capitalized login
+.Ar name
+when the
+.Ar gecos
+field is displayed or used
+by various programs such as
+.Xr finger 1 ,
+.Xr sendmail 8 ,
+etc.
+.Pp
+The
+.Ar office
+and phone number subfields are used by the
+.Xr finger 1
+program, and possibly other applications.
+.Pp
+The user's home directory,
+.Ar home_dir ,
+is the full
+.Ux
+path name where the user
+will be placed on login.
+.Pp
+The
+.Ar shell
+field is the command interpreter the user prefers.
+If there is nothing in the
+.Ar shell
+field, the Bourne shell
+.Pq Pa /bin/sh
+is assumed.
+The conventional way to disable logging into an account once and for all,
+as it is done for system accounts,
+is to set its
+.Ar shell
+to
+.Xr nologin 8 .
+.Sh HESIOD SUPPORT
+If
+.Sq Li dns
+is specified for the
+.Sq Li passwd
+database in
+.Xr nsswitch.conf 5 ,
+then
+.Nm
+lookups occur from the
+.Sq Li passwd
+Hesiod domain.
+.Sh NIS SUPPORT
+If
+.Sq Li nis
+is specified for the
+.Sq Li passwd
+database in
+.Xr nsswitch.conf 5 ,
+then
+.Nm
+lookups occur from the
+.Sq Li passwd.byname ,
+.Sq Li passwd.byuid ,
+.Sq Li master.passwd.byname ,
+and
+.Sq Li master.passwd.byuid
+.Tn NIS
+maps.
+.Sh COMPAT SUPPORT
+If
+.Sq Li compat
+is specified for the
+.Sq Li passwd
+database, and either
+.Sq Li dns
+or
+.Sq Li nis
+is specified for the
+.Sq Li passwd_compat
+database in
+.Xr nsswitch.conf 5 ,
+then the
+.Nm
+file also supports standard
+.Sq Li + Ns / Ns Li -
+exclusions and inclusions, based on user names and netgroups.
+.Pp
+Lines beginning with a
+.Ql -
+(minus sign) are entries marked as being excluded
+from any following inclusions, which are marked with a
+.Ql +
+(plus sign).
+.Pp
+If the second character of the line is a
+.Ql @
+(at sign), the operation
+involves the user fields of all entries in the netgroup specified by the
+remaining characters of the
+.Ar name
+field.
+Otherwise, the remainder of the
+.Ar name
+field is assumed to be a specific user name.
+.Pp
+The
+.Ql +
+token may also be alone in the
+.Ar name
+field, which causes all users from either the Hesiod domain
+.Nm
+(with
+.Sq Li passwd_compat: dns )
+or
+.Sq Li passwd.byname
+and
+.Sq Li passwd.byuid
+.Tn NIS
+maps (with
+.Sq Li passwd_compat: nis )
+to be included.
+.Pp
+If the entry contains non-empty
+.Ar uid
+or
+.Ar gid
+fields, the specified numbers will override the information retrieved
+from the Hesiod domain or the
+.Tn NIS
+maps.
+As well, if the
+.Ar gecos ,
+.Ar dir
+or
+.Ar shell
+entries contain text, it will override the information included via
+Hesiod or
+.Tn NIS .
+On some systems, the
+.Ar passwd
+field may also be overridden.
+.Sh FILES
+.Bl -tag -width ".Pa /etc/master.passwd" -compact
+.It Pa /etc/passwd
+.Tn ASCII
+password file, with passwords removed
+.It Pa /etc/pwd.db
+.Xr db 3 Ns -format
+password database, with passwords removed
+.It Pa /etc/master.passwd
+.Tn ASCII
+password file, with passwords intact
+.It Pa /etc/spwd.db
+.Xr db 3 Ns -format
+password database, with passwords intact
+.El
+.Sh COMPATIBILITY
+The password file format has changed since
+.Bx 4.3 .
+The following awk script can be used to convert your old-style password
+file into a new style password file.
+The additional fields
+.Ar class ,
+.Ar change
+and
+.Ar expire
+are added, but are turned off by default.
+Class is currently not implemented, but change and expire are; to set them,
+use the current day in seconds from the epoch + whatever number of seconds
+of offset you want.
+.Bd -literal -offset indent
+BEGIN { FS = ":"}
+{ print $1 ":" $2 ":" $3 ":" $4 "::0:0:" $5 ":" $6 ":" $7 }
+.Ed
+.Sh SEE ALSO
+.Xr chpass 1 ,
+.Xr login 1 ,
+.Xr passwd 1 ,
+.Xr crypt 3 ,
+.Xr getpwent 3 ,
+.Xr login.conf 5 ,
+.Xr netgroup 5 ,
+.Xr nsswitch.conf 5 ,
+.Xr adduser 8 ,
+.Xr nologin 8 ,
+.Xr pw 8 ,
+.Xr pwd_mkdb 8 ,
+.Xr vipw 8 ,
+.Xr yp 8
+.Pp
+.%T "Managing NFS and NIS"
+(O'Reilly & Associates)
+.Sh HISTORY
+A
+.Nm
+file format appeared in
+.At v6 .
+.Pp
+The
+.Tn NIS
+.Nm
+file format first appeared in SunOS.
+.Pp
+The Hesiod support first appeared in
+.Fx 4.1 .
+It was imported from the
+.Nx
+Project, where it first appeared in
+.Nx 1.4 .
+.Sh BUGS
+User information should (and eventually will) be stored elsewhere.
+.Pp
+Placing
+.Sq Li compat
+exclusions in the file after any inclusions will have
+unexpected results.
diff --git a/share/man/man5/pbm.5 b/share/man/man5/pbm.5
new file mode 100644
index 0000000..55d2c5c
--- /dev/null
+++ b/share/man/man5/pbm.5
@@ -0,0 +1,88 @@
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 27, 1991
+.Dt PBM 5
+.Os
+.Sh NAME
+.Nm pbm
+.Nd portable bitmap file format
+.Sh DESCRIPTION
+The portable bitmap format is a lowest common denominator monochrome
+file format.
+It was originally designed to make it reasonable to mail bitmaps
+between different types of machines using the typical stupid network
+mailers we have today.
+Now it serves as the common language of a large family of bitmap
+conversion filters.
+The definition is as follows:
+.Pp
+.Bl -bullet -compact
+.It
+A "magic number" for identifying the file type.
+A pbm file's magic number is the two characters "P1".
+.It
+Whitespace (blanks, TABs, CRs, LFs).
+.It
+A width, formatted as ASCII characters in decimal.
+.It
+Whitespace.
+.It
+A height, again in ASCII decimal.
+.It
+Whitespace.
+.It
+Width * height bits, each either '1' or '0', starting at the top-left
+corner of the bitmap, proceeding in normal English reading order.
+.It
+The character '1' means black, '0' means white.
+.It
+Whitespace in the bits section is ignored.
+.It
+Characters from a "#" to the next end-of-line are ignored (comments).
+.It
+No line should be longer than 70 characters.
+.El
+.Pp
+Here is an example of a small bitmap in this format:
+.Bd -literal
+P1
+# feep.pbm
+24 7
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 1 1 1 0
+0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0
+0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 0
+0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0
+0 1 0 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 0 1 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+.Ed
+.Pp
+Programs that read this format should be as lenient as possible,
+accepting anything that looks remotely like a bitmap.
+.Pp
+There is also a variant on the format, available
+by setting the RAWBITS option at compile time.
+This variant is
+different in the following ways:
+.Pp
+.Bl -bullet -compact
+.It
+The "magic number" is "P4" instead of "P1".
+.It
+The bits are stored eight per byte, high bit first low bit last.
+.It
+No whitespace is allowed in the bits section, and only a single character
+of whitespace (typically a newline) is allowed after the height.
+.It
+The files are eight times smaller and many times faster to read and write.
+.El
+.Sh AUTHORS
+Copyright (C) 1989, 1991 by
+.An Jef Poskanzer .
+.\" Permission to use, copy, modify, and distribute this software and its
+.\" documentation for any purpose and without fee is hereby granted, provided
+.\" that the above copyright notice appear in all copies and that both that
+.\" copyright notice and this permission notice appear in supporting
+.\" documentation. This software is provided "as is" without express or
+.\" implied warranty.
diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5
new file mode 100644
index 0000000..2052a1b
--- /dev/null
+++ b/share/man/man5/periodic.conf.5
@@ -0,0 +1,777 @@
+.\"-
+.\" Copyright (c) 2000 Brian Somers <brian@Awfulhak.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$
+.\"
+.Dd May 12, 2007
+.Dt PERIODIC.CONF 5
+.Os
+.Sh NAME
+.Nm periodic.conf
+.Nd periodic job configuration information
+.Sh DESCRIPTION
+The file
+.Nm
+contains a description of how daily, weekly and monthly system maintenance
+jobs should run.
+It resides in the
+.Pa /etc/defaults
+directory and parts may be overridden by a file of the same name in
+.Pa /etc ,
+which itself may be overridden by the
+.Pa /etc/periodic.conf.local
+file.
+.Pp
+The
+.Nm
+file
+is actually sourced as a shell script from each of the periodic scripts
+and is intended to simply provide default configuration variables.
+.Pp
+The following variables are used by
+.Xr periodic 8
+itself:
+.Bl -tag -offset 4n -width 2n
+.It Va local_periodic
+.Pq Vt str
+List of directories to search for periodic scripts.
+This list is always prefixed with
+.Pa /etc/periodic ,
+and is only used when an argument to
+.Xr periodic 8
+is not an absolute directory name.
+.It Ao Ar dir Ac Ns Va _output
+.Pq Vt path No or Vt list
+What to do with the output of the scripts executed from
+the directory
+.Ar dir .
+If this variable is set to an absolute path name, output is logged to
+that file, otherwise it is taken as one or more space separated email
+addresses and mailed to those users.
+If this variable is not set or is empty, output is sent to standard output.
+.Pp
+For an unattended machine, suitable values for
+.Va daily_output ,
+.Va weekly_output ,
+and
+.Va monthly_output
+might be
+.Dq Li /var/log/daily.log ,
+.Dq Li /var/log/weekly.log ,
+and
+.Dq Li /var/log/monthly.log
+respectively, as
+.Xr newsyslog 8
+will rotate these files (if they exists) at the appropriate times.
+.It Ao Ar dir Ac Ns Va _show_success
+.It Ao Ar dir Ac Ns Va _show_info
+.It Ao Ar dir Ac Ns Va _show_badconfig
+.Pq Vt bool
+These variables control whether
+.Xr periodic 8
+will mask the output of the executed scripts based on their return code
+(where
+.Ar dir
+is the base directory name in which each script resides).
+If the return code of a script is
+.Sq 0
+and
+.Ao Ar dir Ac Ns Va _show_success
+is set to
+.Dq Li NO ,
+.Xr periodic 8
+will mask the script's output.
+If the return code of a script is
+.Sq 1
+and
+.Ao Ar dir Ac Ns Va _show_info
+is set to
+.Dq Li NO ,
+.Xr periodic 8
+will mask the script's output.
+If the return code of a script is
+.Sq 2
+and
+.Ao Ar dir Ac Ns Va _show_badconfig
+is set to
+.Dq Li NO ,
+.Xr periodic 8
+will mask the script's output.
+If these variables are set to neither
+.Dq Li YES
+nor
+.Dq Li NO ,
+they default to
+.Dq Li YES ,
+.Dq Li YES
+and
+.Dq Li NO
+respectively.
+.Pp
+Refer to the
+.Xr periodic 8
+manual page for how script return codes are interpreted.
+.El
+.Pp
+The following variables are used by the standard scripts that reside in
+.Pa /etc/periodic/daily :
+.Bl -tag -offset 4n -width 2n
+.It Va daily_clean_disks_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to remove all files matching
+.Va daily_clean_disks_files
+daily.
+.It Va daily_clean_disks_files
+.Pq Vt str
+Set to a list of file names to match.
+Wild cards are permitted.
+.It Va daily_clean_disks_days
+.Pq Vt num
+When
+.Va daily_clean_disks_enable
+is set to
+.Dq Li YES ,
+this must also be set to the number of days old that a file's access
+and modification times must be before it is deleted.
+.It Va daily_clean_disks_verbose
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want the removed files to be reported in your daily output.
+.It Va daily_clean_tmps_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to clear temporary directories daily.
+.It Va daily_clean_tmps_dirs
+.Pq Vt str
+Set to the list of directories to clear if
+.Va daily_clean_tmps_enable
+is set to
+.Dq Li YES .
+.It Va daily_clean_tmps_days
+.Pq Vt num
+When
+.Va daily_clean_tmps_enable
+is set, this must also be set to the number of days old that a file's access
+and modification times must be before it is deleted.
+.It Va daily_clean_tmps_ignore
+.Pq Vt str
+Set to the list of files that should not be deleted when
+.Va daily_clean_tmps_enable
+is set to
+.Dq Li YES .
+Wild card characters are permitted.
+.It Va daily_clean_tmps_verbose
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want the removed files to be reported in your daily output.
+.It Va daily_clean_preserve_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you wish to remove old files from
+.Pa /var/preserve .
+.It Va daily_clean_preserve_days
+.Pq Vt num
+Set to the number of days that files must not have been modified before
+they are deleted.
+.It Va daily_clean_preserve_verbose
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want the removed files to be reported in your daily output.
+.It Va daily_clean_msgs_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you wish old system messages to be purged.
+.It Va daily_clean_msgs_days
+.Pq Vt num
+Set to the number of days that files must not have been modified before
+they are deleted.
+If this variable is left blank, the
+.Xr msgs 1
+default is used.
+.It Va daily_clean_rwho_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you wish old files in
+.Pa /var/who
+to be purged.
+.It Va daily_clean_rwho_days
+.Pq Vt num
+Set to the number of days that files must not have been modified before
+they are deleted.
+.It Va daily_clean_rwho_verbose
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want the removed files to be reported in your daily output.
+.It Va daily_clean_hoststat_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to run
+.Nm sendmail Fl bH
+to automatically purge stale entries from
+.Xr sendmail 8 Ns 's
+host status cache.
+Files will be deleted using the same criteria as
+.Xr sendmail 8
+would normally use when determining whether to believe the cached information,
+as configured in
+.Pa /etc/mail/sendmail.cf .
+.It Va daily_backup_passwd_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want the
+.Pa /etc/master.passwd
+and
+.Pa /etc/group
+files backed up and reported on.
+Reporting consists of checking both files for modifications and running
+.Xr chkgrp 8
+on the
+.Pa group
+file.
+.It Va daily_backup_aliases_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want the
+.Pa /etc/mail/aliases
+file backed up and modifications to be displayed in your daily output.
+.It Va daily_calendar_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Nm calendar Fl a
+daily.
+.It Va daily_accounting_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to rotate your daily accounting files.
+No rotations are necessary unless
+.Va accounting_enable
+is enabled in
+.Xr rc.conf 5 .
+.It Va daily_accounting_compress
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want your daily accounting files to be compressed using
+.Xr gzip 1 .
+.It Va daily_accounting_save
+.Pq Vt num
+When
+.Va daily_accounting_enable
+is set, this may also be set to the number of daily accounting files that are
+to be saved.
+The default is
+.Dq Li 3 .
+.It Va daily_accounting_flags
+.Pq Vt str
+Set to the arguments to pass to the
+.Xr sa 8
+utility (in addition to
+.Fl s )
+when
+.Va daily_accounting_enable
+is set to
+.Dq Li YES .
+The default is
+.Fl q .
+.It Va daily_news_expire_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Pa /etc/news.expire .
+.It Va daily_status_disks_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Xr df 1
+(with the arguments supplied in
+.Va daily_status_disks_df_flags )
+and
+.Nm dump Fl W .
+.It Va daily_status_disks_df_flags
+.Pq Vt str
+Set to the arguments for the
+.Xr df 1
+utility when
+.Va daily_status_disks_enable
+is set to
+.Dq Li YES .
+.It Va daily_status_ata_raid_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Nm atacontrol Cm status
+on your
+.Xr ataraid 4
+arrays.
+.It Va daily_status_gmirror_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Nm gmirror Cm status
+on your
+.Xr gmirror 8
+devices.
+.It Va daily_status_graid3_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Nm graid3 Cm status
+on your
+.Xr graid3 8
+devices.
+.It Va daily_status_gstripe_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Nm gstripe Cm status
+on your
+.Xr gstripe 8
+devices.
+.It Va daily_status_gconcat_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Nm gconcat Cm status
+on your
+.Xr gconcat 8
+devices.
+.It Va daily_status_network_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Nm netstat Fl i .
+.It Va daily_status_network_usedns
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Xr netstat 1
+without the
+.Fl n
+option (to do DNS lookups).
+.It Va daily_status_rwho_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Xr uptime 1
+(or
+.Xr ruptime 1
+if
+.Va rwhod_enable
+is set to
+.Dq Li YES
+in
+.Pa /etc/rc.conf ) .
+.It Va daily_status_mailq_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Xr mailq 1 .
+.It Va daily_status_mailq_shorten
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to shorten the
+.Xr mailq 1
+output when
+.Va daily_status_mailq_enable
+is set to
+.Dq Li YES .
+.It Va daily_status_include_submit_mailq
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you also want to run
+.Xr mailq 1
+on the submit mail queue when
+.Va daily_status_mailq_enable
+is set to
+.Dq Li YES .
+This may not work with MTAs other than
+.Xr sendmail 8 .
+.It Va daily_status_security_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run the security check.
+The security check is another set of
+.Xr periodic 8
+scripts.
+The system defaults are in
+.Pa /etc/periodic/security .
+Local scripts should be placed in
+.Pa /usr/local/etc/periodic/security .
+See the
+.Xr periodic 8
+manual page for more information.
+.It Va daily_status_security_inline
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want the security check output inline.
+The default is to either mail or log the output according to the value of
+.Va daily_status_security_output .
+.It Va daily_status_security_output
+.Pq Vt str
+Where to send the output of the security check if
+.Va daily_status_security_inline
+is set to
+.Dq Li NO .
+This variable behaves in the same way as the
+.Va *_output
+variables above, namely it can be set either to one or more email addresses
+or to an absolute file name.
+.It Va daily_status_security_diff_flags
+.Pq Vt str
+Set to the arguments to pass to the
+.Xr diff 1
+utility when generating differences.
+The default is
+.Fl b u .
+.It Va daily_status_security_chksetuid_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to compare the modes and modification times of setuid executables with
+the previous day's values.
+.It Va daily_status_security_chkmounts_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to check for changes mounted file systems to the previous day's values.
+.It Va daily_status_security_noamd
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to ignore
+.Xr amd 8
+mounts when comparing against yesterday's file system mounts in the
+.Va daily_status_security_chkmounts_enable
+check.
+.It Va daily_status_security_chkuid0_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to check
+.Pa /etc/master.passwd
+for accounts with UID 0.
+.It Va daily_status_security_passwdless_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to check
+.Pa /etc/master.passwd
+for accounts with empty passwords.
+.It Va daily_status_security_logincheck_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to check
+.Pa /etc/login.conf
+ownership, see
+.Xr login.conf 5
+for more information.
+.It Va daily_status_security_ipfwdenied_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to show log entries for packets denied by
+.Xr ipfw 8
+since yesterday's check.
+.It Va daily_status_security_ipfdenied_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to show log entries for packets denied by
+.Xr ipf 8
+since yesterday's check.
+.It Va daily_status_security_pfdenied_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to show log entries for packets denied by
+.Xr pf 4
+since yesterday's check.
+.It Va daily_status_security_ipfwlimit_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to display
+.Xr ipfw 8
+rules that have reached their verbosity limit.
+.It Va daily_status_security_kernelmsg_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to show new
+.Xr dmesg 8
+entries since yesterday's check.
+.It Va daily_status_security_loginfail_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to display failed logins from
+.Pa /var/log/messages
+in the previous day.
+.It Va daily_status_security_tcpwrap_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to display connections denied by tcpwrappers (see
+.Xr hosts_access 5 )
+from
+.Pa /var/log/messages
+during the previous day.
+.It Va daily_status_mail_rejects_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to summarise mail rejections logged to
+.Pa /var/log/maillog
+for the previous day.
+.It Va daily_status_mail_rejects_logs
+.Pq Vt num
+Set to the number of maillog files that should be checked
+for yesterday's mail rejects.
+.It Va daily_status_named_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to summarise denied zone transfers (AXFR and IXFR)
+for the previous day.
+.It Va daily_status_named_usedns
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to enable reverse DNS lookups.
+.It Va daily_status_ntpd
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to enable NTP status check.
+.It Va daily_queuerun_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to manually run the mail queue at least once a day.
+.It Va daily_submit_queuerun
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you also want to manually run the submit mail queue at least once a day
+when
+.Va daily_queuerun_enable
+is set to
+.Dq Li YES .
+.It Va daily_local
+.Pq Vt str
+Set to a list of extra scripts that should be run after all other
+daily scripts.
+All scripts must be absolute path names.
+.El
+.Pp
+The following variables are used by the standard scripts that reside in
+.Pa /etc/periodic/weekly :
+.Bl -tag -offset 4n -width 2n
+.It Va weekly_locate_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Pa /usr/libexec/locate.updatedb .
+This script is run using
+.Nm nice Fl 5
+as user
+.Dq Li nobody ,
+and generates the table used by the
+.Xr locate 1
+command.
+.It Va weekly_whatis_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Pa /usr/libexec/makewhatis.local .
+This script regenerates the database used by the
+.Xr apropos 1
+command.
+.It Va weekly_catman_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to run
+.Pa /usr/libexec/catman.local .
+This script processes all out of date manual pages, speeding up the
+.Xr man 1
+command at the expense of disk space.
+.It Va weekly_noid_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to locate orphaned files on the system.
+An orphaned file is one with an invalid owner or group.
+.It Va weekly_noid_dirs
+.Pq Vt str
+A list of directories under which orphaned files are searched for.
+This would usually be set to
+.Pa / .
+.It Va weekly_status_pkg_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to use
+.Xr pkg_version 1
+to list installed packages which are out of date.
+.It Va pkg_version
+.Pq Vt str
+When
+.Va weekly_status_pkg_enable
+is set to
+.Dq Li YES ,
+this variable specifies the program that is used to determine the out of
+date packages.
+If unset, the
+.Xr pkg_version 1
+program is used.
+As an example, this variable might be set to
+.Dq Li portversion
+if the
+.Pa ports/sysutils/portupgrade
+port has been installed.
+.It Va pkg_version_index
+.Pq Vt str
+This variable specifies the
+.Pa INDEX
+file from
+.Pa /usr/ports
+that should be used by
+.Xr pkg_version 1 .
+Because the dependency tree may be substantially different between versions of
+.Fx ,
+there may be more than one
+.Pa INDEX
+file in
+.Pa /usr/ports .
+.Pp
+Note, if the
+.Va pkg_version
+variable is set to
+.Dq Li portversion ,
+it will also be necessary to arrange that the correct
+.Pa INDEX
+file is specified
+using environment variables and that
+.Va pkg_version_index
+is cleared in
+.Pa /etc/periodic.conf
+.Pq Dq Li pkg_version_index= .
+.It Va weekly_local
+.Pq Vt str
+Set to a list of extra scripts that should be run after all other
+weekly scripts.
+All scripts must be absolute path names.
+.El
+.Pp
+The following variables are used by the standard scripts that reside in
+.Pa /etc/periodic/monthly :
+.Bl -tag -offset 4n -width 2n
+.It Va monthly_accounting_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+if you want to do login accounting using the
+.Xr ac 8
+command.
+.It Va monthly_local
+.Pq Vt str
+Set to a list of extra scripts that should be run after all other
+monthly scripts.
+All scripts must be absolute path names.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /etc/defaults/periodic.conf"
+.It Pa /etc/defaults/periodic.conf
+The default configuration file.
+This file contains all default variables and values.
+.It Pa /etc/periodic.conf
+The usual system specific variable override file.
+.It Pa /etc/periodic.conf.local
+An additional override file, useful when
+.Pa /etc/periodic.conf
+is shared or distributed.
+.El
+.Sh SEE ALSO
+.Xr apropos 1 ,
+.Xr calendar 1 ,
+.Xr df 1 ,
+.Xr diff 1 ,
+.Xr gzip 1 ,
+.Xr locate 1 ,
+.Xr man 1 ,
+.Xr msgs 1 ,
+.Xr netstat 1 ,
+.Xr nice 1 ,
+.Xr pkg_version 1 ,
+.Xr login.conf 5 ,
+.Xr rc.conf 5 ,
+.Xr ac 8 ,
+.Xr chkgrp 8 ,
+.Xr dump 8 ,
+.Xr newsyslog 8 ,
+.Xr periodic 8 ,
+.Xr sendmail 8
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Fx 4.1 .
+.Sh AUTHORS
+.An Brian Somers Aq brian@Awfulhak.org
diff --git a/share/man/man5/phones.5 b/share/man/man5/phones.5
new file mode 100644
index 0000000..59b491b
--- /dev/null
+++ b/share/man/man5/phones.5
@@ -0,0 +1,82 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)phones.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt PHONES 5
+.Os
+.Sh NAME
+.Nm phones
+.Nd remote host phone number data base
+.Sh DESCRIPTION
+The file
+.Pa /etc/phones
+contains the system-wide
+private phone numbers for the
+.Xr tip 1
+program.
+This file is normally unreadable, and so may contain
+privileged information.
+The format of the file is a series of lines
+of the form: <system-name>[\ \et]*<phone-number>.
+The system name is
+one of those defined in the
+.Xr remote 5
+file and the phone number is constructed from any sequence of
+characters terminated only by ``,'' or the end of the line.
+The ``='' and ``*'' characters are
+indicators to the auto call units to pause and wait for a second dial
+tone (when going through an exchange).
+The ``='' is required by the
+.Tn DF02-AC
+and the ``*'' is required by the
+.Tn BIZCOMP
+1030.
+.Pp
+Only one phone number per line is permitted.
+However, if more than
+one line in the file contains the same system name
+.Xr tip 1
+will attempt to dial each one in turn, until it establishes a connection.
+.Sh FILES
+.Bl -tag -width /etc/phones -compact
+.It Pa /etc/phones
+.El
+.Sh SEE ALSO
+.Xr tip 1 ,
+.Xr remote 5
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Bx 4.2 .
diff --git a/share/man/man5/portsnap.conf.5 b/share/man/man5/portsnap.conf.5
new file mode 100644
index 0000000..b936d98
--- /dev/null
+++ b/share/man/man5/portsnap.conf.5
@@ -0,0 +1,143 @@
+.\"-
+.\" Copyright 2004-2005 Colin Percival
+.\" All rights reserved
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted providing 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$
+.\"
+.Dd January 30, 2005
+.Dt PORTSNAP.CONF 5
+.Os FreeBSD
+.Sh NAME
+.Nm portsnap.conf
+.Nd configuration file for
+.Xr portsnap 8
+.Sh DESCRIPTION
+The
+.Nm
+file controls where
+.Xr portsnap 8
+fetches ports tree snapshots from,
+which RSA key should be trusted to sign the updates, and what
+directories should hold the compressed and live ports trees.
+.Pp
+A line of the form
+.Dl SERVERNAME=portsnap.example.com
+specifies the source from which snapshots should be fetched.
+This is equivalent to the
+.Fl s Ar server
+option to
+.Xr portsnap 8 , and will be ignored if the command-line
+option is used.
+.Pp
+A line of the form
+.Dl KEYPRINT=0123456789abc ... 456789abcdef
+(64 characters in total)
+specifies the SHA-256 hash of the OpenSSL public key file
+belonging to an RSA keypair which is trusted to sign updates.
+This is equivalent to the
+.Fl k Ar KEY
+option to
+.Xr portsnap 8 , and will be ignored if the command-line
+option is used.
+.Pp
+A line of the form
+.Dl WORKDIR=/path/to/workdir
+specifies the directory in which portsnap should maintain its compressed
+snapshot of the ports tree.
+This is equivalent to the
+.Fl d Ar workdir
+option to
+.Xr portsnap 8 , and will be ignored if the command-line option
+is used.
+.Pp
+A line of the form
+.Dl PORTSDIR=/path/to/portstree
+specifies the directory in which portsnap will create the live ports
+tree from its compressed snapshot via the
+.Cm extract
+and
+.Cm update
+commands.
+This is equivalent to the
+.Fl p Ar portsdir
+option to
+.Xr portsnap 8 , and will be ignored if the command-line option
+is used.
+.Pp
+If more than one line of any of the above forms is included in
+.Nm
+then only the last one will take effect.
+.Pp
+A line of the form
+.Dl INDEX INDEXFILE DESCRIBEFILE
+will instruct
+.Xr portsnap 8
+that the specified INDEX file is generated from the specified
+describe file distributed by the portsnap server.
+.Pp
+Finally, a line of the form
+.Dl REFUSE foo bar
+will instruct
+.Xr portsnap 8
+to ignore parts of the ports tree with paths starting with
+.Ar foo
+or
+.Ar bar ,
+which are interpreted as extended regular expressions by
+.Xr egrep 1 .
+This will result in those parts of the tree not being updated
+in the compressed snapshot when the
+.Cm fetch
+and
+.Cm cron
+commands are used and not being extracted when the
+.Cm extract
+command is used (unless a specific
+.Ar path
+is passed to
+.Xr portsnap 8 ) ,
+and if those parts of the ports tree are present they
+will not be updated when the
+.Cm update
+command is used.
+Unlike the other options, the parameters in REFUSE lines
+accumulate and all such lines are considered.
+.Bf Em
+Note that operating with an incomplete ports tree is not
+supported and may cause unexpected results.
+.Ef
+.Pp
+Any lines not of the above forms will be ignored.
+.Sh FILES
+.Bl -tag -width "/etc/portsnap.conf"
+.It /etc/portsnap.conf
+Default location of the portsnap configuration file.
+.El
+.Sh SEE ALSO
+.Xr egrep 1 ,
+.Xr fetch 1 ,
+.Xr portsnap 8 ,
+.Xr sha256 8
+.Sh AUTHORS
+.An Colin Percival Aq cperciva@FreeBSD.org
diff --git a/share/man/man5/procfs.5 b/share/man/man5/procfs.5
new file mode 100644
index 0000000..8d85f95
--- /dev/null
+++ b/share/man/man5/procfs.5
@@ -0,0 +1,268 @@
+.\" $FreeBSD$
+.\" Written by Garrett Wollman
+.\" This file is in the public domain.
+.\"
+.Dd September 3, 2004
+.Dt PROCFS 5
+.Os
+.Sh NAME
+.Nm procfs
+.Nd process file system
+.Sh SYNOPSIS
+.Bd -literal
+proc /proc procfs rw 0 0
+.Ed
+.Sh DESCRIPTION
+The process file system, or
+.Nm ,
+implements a view of the system process table inside the file system.
+It is normally mounted on
+.Pa /proc ,
+and is required for the complete operation of programs such as
+.Xr ps 1
+and
+.Xr w 1 .
+.Pp
+The
+.Nm
+provides a two-level view of process space, unlike the previous
+.Fx 1.1
+.Nm
+implementation.
+At the highest level, processes themselves are named, according to
+their process ids in decimal, with no leading zeros.
+There is also a
+special node called
+.Pa curproc
+which always refers to the process making the lookup request.
+.Pp
+Each node is a directory which contains the following entries:
+.Pp
+Each directory contains several files:
+.Bl -tag -width status
+.It Pa ctl
+a write-only file which supports a variety
+of control operations.
+Control commands are written as strings to the
+.Pa ctl
+file.
+The control commands are:
+.Bl -tag -width detach -compact
+.It attach
+stops the target process and arranges for the sending
+process to become the debug control process.
+.It detach
+continue execution of the target process and
+remove it from control by the debug process (which
+need not be the sending process).
+.It run
+continue running the target process until
+a signal is delivered, a breakpoint is hit, or the
+target process exits.
+.It step
+single step the target process, with no signal delivery.
+.It wait
+wait for the target process to come to a steady
+state ready for debugging.
+The target process must be in this state before
+any of the other commands are allowed.
+.El
+.Pp
+The string can also be the name of a signal, lower case
+and without the
+.Dv SIG
+prefix,
+in which case that signal is delivered to the process
+(see
+.Xr sigaction 2 ) .
+.Pp
+The
+.Xr procctl 8
+utility can be used to clear tracepoints in a stuck process.
+.It Pa dbregs
+The debug registers as defined by
+.Dv "struct dbregs"
+in
+.In machine/reg.h .
+.Pa dbregs
+is currently only implemented on the i386 architecture.
+.It Pa etype
+The type of the executable referenced by the
+.Pa file
+entry.
+.It Pa file
+A symbolic link to the file from which the process text was read.
+This can be used to gain access to the process' symbol table,
+or to start another copy of the process.
+If the file cannot be found, the link target is
+.Ql unknown .
+.It Pa fpregs
+The floating point registers as defined by
+.Dv "struct fpregs"
+in
+.In machine/reg.h .
+.Pa fpregs
+is only implemented on machines which have distinct general
+purpose and floating point register sets.
+.It Pa map
+A map of the process' virtual memory.
+.It Pa mem
+The complete virtual memory image of the process.
+Only those address which exist in the process can be accessed.
+Reads and writes to this file modify the process.
+Writes to the text segment remain private to the process.
+.It Pa note
+Used for sending signals to the process.
+Not implemented.
+.It Pa notepg
+Used for sending signal to the process group.
+Not implemented.
+.It Pa regs
+Allows read and write access to the process' register set.
+This file contains a binary data structure
+.Dv "struct regs"
+defined in
+.In machine/reg.h .
+.Pa regs
+can only be written when the process is stopped.
+.It Pa rlimit
+This is a read-only file containing the process current and maximum
+limits.
+Each line is of the format
+.Ar rlimit current max ,
+with -1
+indicating infinity.
+.It Pa status
+The process status.
+This file is read-only and returns a single line containing
+multiple space-separated fields as follows:
+.Pp
+.Bl -bullet -compact
+.It
+command name
+.It
+process id
+.It
+parent process id
+.It
+process group id
+.It
+session id
+.It
+.Ar major , Ns Ar minor
+of the controlling terminal, or
+.Dv -1,-1
+if there is no controlling terminal.
+.It
+a list of process flags:
+.Dv ctty
+if there is a controlling terminal,
+.Dv sldr
+if the process is a session leader,
+.Dv noflags
+if neither of the other two flags are set.
+.It
+the process start time in seconds and microseconds,
+comma separated.
+.It
+the user time in seconds and microseconds,
+comma separated.
+.It
+the system time in seconds and microseconds,
+comma separated.
+.It
+the wait channel message
+.It
+the process credentials consisting of
+the effective user id
+and the list of groups (whose first member
+is the effective group id)
+all comma separated.
+.It
+the hostname of the jail in which the process runs, or
+.Ql -
+to indicate that the process is not running within a jail.
+.El
+.El
+.Pp
+In a normal debugging environment,
+where the target is fork/exec'd by the debugger,
+the debugger should fork and the child should stop
+itself (with a self-inflicted
+.Dv SIGSTOP
+for example).
+The parent should issue a
+.Dv wait
+and then an
+.Dv attach
+command via the appropriate
+.Pa ctl
+file.
+The child process will receive a
+.Dv SIGTRAP
+immediately after the call to exec (see
+.Xr execve 2 ) .
+.Pp
+Each node is owned by the process's user, and belongs to that user's
+primary group, except for the
+.Pa mem
+node, which belongs to the
+.Li kmem
+group.
+.Sh FILES
+.Bl -tag -width /proc/curproc/XXXXXXX -compact
+.It Pa /proc
+normal mount point for the
+.Nm .
+.It Pa /proc/pid
+directory containing process information for process
+.Pa pid .
+.It Pa /proc/curproc
+directory containing process information for the current process
+.It Pa /proc/curproc/cmdline
+the process executable name
+.It Pa /proc/curproc/ctl
+used to send control messages to the process
+.It Pa /proc/curproc/etype
+executable type
+.It Pa /proc/curproc/file
+executable image
+.It Pa /proc/curproc/fpregs
+the process floating point register set
+.It Pa /proc/curproc/map
+virtual memory map of the process
+.It Pa /proc/curproc/mem
+the complete virtual address space of the process
+.It Pa /proc/curproc/note
+used for signaling the process
+.It Pa /proc/curproc/notepg
+used for signaling the process group
+.It Pa /proc/curproc/regs
+the process register set
+.It Pa /proc/curproc/rlimit
+the process current and maximum rlimit
+.It Pa /proc/curproc/status
+the process' current status
+.El
+.Sh EXAMPLES
+To mount a
+.Nm
+file system on
+.Pa /proc :
+.Pp
+.Dl "mount -t procfs proc /proc"
+.Sh SEE ALSO
+.Xr mount 2 ,
+.Xr sigaction 2 ,
+.Xr unmount 2 ,
+.Xr procctl 8 ,
+.Xr pseudofs 9
+.Sh AUTHORS
+.An -nosplit
+This manual page written by
+.An Garrett Wollman ,
+based on the description
+provided by
+.An Jan-Simon Pendry ,
+and revamped later by
+.An Mike Pritchard .
diff --git a/share/man/man5/protocols.5 b/share/man/man5/protocols.5
new file mode 100644
index 0000000..37d3541
--- /dev/null
+++ b/share/man/man5/protocols.5
@@ -0,0 +1,80 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)protocols.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt PROTOCOLS 5
+.Os
+.Sh NAME
+.Nm protocols
+.Nd protocol name data base
+.Sh DESCRIPTION
+The
+.Nm
+file contains information regarding the known protocols used in the
+.Tn DARPA
+Internet.
+For each protocol a single line should be present
+with the following information:
+.Bd -unfilled -offset indent
+official protocol name
+protocol number
+aliases
+.Ed
+.Pp
+Items are separated by any number of blanks and/or
+tab characters.
+A ``#'' indicates the beginning of
+a comment; characters up to the end of the line are
+not interpreted by routines which search the file.
+.Pp
+Protocol names may contain any printable
+character other than a field delimiter, newline,
+or comment character.
+.Sh FILES
+.Bl -tag -width /etc/protocols -compact
+.It Pa /etc/protocols
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr getprotoent 3
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.2 .
+.Sh BUGS
+A name server should be used instead of a static file.
diff --git a/share/man/man5/quota.user.5 b/share/man/man5/quota.user.5
new file mode 100644
index 0000000..010b99c
--- /dev/null
+++ b/share/man/man5/quota.user.5
@@ -0,0 +1,131 @@
+.\" Copyright (c) 2001 Nik Clayton
+.\"
+.\" 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$
+.\"
+.Dd October 30, 2007
+.Dt QUOTA.USER 5
+.Os
+.Sh NAME
+.Nm quota.user , quota.group
+.Nd per file system quota database
+.Sh DESCRIPTION
+Each file system with active quotas should contain a
+.Pa quota.user
+and
+.Pa quota.group
+file in the file system root.
+These files are created by
+.Xr quotacheck 8 ,
+and should be edited with
+.Xr edquota 8 .
+It is possible to specify a different location and file name with the
+.Dq Li userquota
+and
+.Dq Li groupquota
+options in the
+.Xr fstab 5
+file.
+.Pp
+.Pp
+The data files contain the following information:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+Current block usage
+.It
+Current number of files
+.It
+Soft block limit
+.It
+Soft file limit
+.It
+Hard block limit
+.It
+Hard file limit
+.It
+Block grace time remaining if over the soft limit
+.It
+File grace time remaining if over the soft limit
+.El
+.Pp
+.Pp
+See
+.Xr edquota 8
+for an explanation on the various limits and grace periods.
+.Pp
+During normal quota operations the
+.Xr quotactl 2
+interface is used to query or set quota information and the kernel
+will maintain the data files as needed.
+If quotas are disabled on
+a file system, but marked as having quotas enabled in
+.Xr fstab 5 ,
+then the quota data files will be used directly.
+.Pp
+The data files are stored as an array of
+.Dq Li struct dqblk
+structures, as defined in
+.In ufs/ufs/quota.h ,
+and indexed by UID or GID.
+The data files will be written as a sparse file if possible.
+Data is only maintained for ids that have either non-zero usage or
+non-zero quota limits.
+If an attempt is made to access data for an id that would exist past the
+end of the current data file, a quota structure with all values set
+to zero will be created, and the data file extended as needed.
+The
+.Xr quotacheck 8
+utility will truncate the data files to the minimum size needed
+to store the highest id with either non-zero file usage or
+non-zero quota limits.
+.Pp
+The data record for id 0 has special meaning. If the
+.Dq Dv dqb_btime
+or
+.Dq Dv dbq_itime
+fields are non-zero, they are used to indicate the grace period on
+that file system for users who have exceeded their soft limit.
+These times can be set by
+.Xr edquota 8
+with the
+.Fl t
+flag.
+If no explicit grace period has been set with
+.Xr edquota 8 ,
+then the default value of 7 days will be used.
+The default values are defined by
+.Dv MAX_DQ_TIME
+and
+.Dv MAX_IQ_TIME
+in
+.In ufs/ufs/quota.h .
+.Sh SEE ALSO
+.Xr quota 1 ,
+.Xr quotactl 2 ,
+.Xr fstab 5 ,
+.Xr edquota 8 ,
+.Xr quotacheck 8 ,
+.Xr quotaoff 8 ,
+.Xr quotaon 8 ,
+.Xr repquota 8
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
new file mode 100644
index 0000000..efb3aa8
--- /dev/null
+++ b/share/man/man5/rc.conf.5
@@ -0,0 +1,4053 @@
+.\" Copyright (c) 1995
+.\" Jordan K. Hubbard
+.\"
+.\" 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$
+.\"
+.Dd September 24, 2008
+.Dt RC.CONF 5
+.Os
+.Sh NAME
+.Nm rc.conf
+.Nd system configuration information
+.Sh DESCRIPTION
+The file
+.Nm
+contains descriptive information about the local host name, configuration
+details for any potential network interfaces and which services should be
+started up at system initial boot time.
+In new installations, the
+.Nm
+file is generally initialized by the system installation utility,
+.Xr sysinstall 8 .
+.Pp
+The purpose of
+.Nm
+is not to run commands or perform system startup actions
+directly.
+Instead, it is included by the
+various generic startup scripts in
+.Pa /etc
+which conditionalize their
+internal actions according to the settings found there.
+.Pp
+The
+.Pa /etc/rc.conf
+file is included from the file
+.Pa /etc/defaults/rc.conf ,
+which specifies the default settings for all the available options.
+Options need only be specified in
+.Pa /etc/rc.conf
+when the system administrator wishes to override these defaults.
+The file
+.Pa /etc/rc.conf.local
+is used to override settings in
+.Pa /etc/rc.conf
+for historical reasons.
+See the
+.Va rc_conf_files
+variable below.
+.Pp
+Options are set with
+.Dq Ar name Ns Li = Ns Ar value
+assignments that use
+.Xr sh 1
+syntax.
+The following list provides a name and short description for each
+variable that can be set in the
+.Nm
+file:
+.Bl -tag -width indent-two
+.It Va rc_debug
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable output of debug messages from rc scripts.
+This variable can be helpful in diagnosing mistakes when
+editing or integrating new scripts.
+Beware that this produces copious output to the terminal and
+.Xr syslog 3 .
+.It Va rc_info
+.Pq Vt bool
+If set to
+.Dq Li NO ,
+disable informational messages from the rc scripts.
+Informational messages are displayed when
+a condition that is not serious enough to warrant a warning or
+an error occurs.
+.It Va early_late_divider
+.Pq Vt str
+The name of the script that should be used as the
+delimiter between the
+.Dq early
+and
+.Dq late
+stages of the boot process.
+The early stage should contain all the services needed to
+get the disks (local or remote) mounted so that the late
+stage can include scripts contained in the directories
+listed in the
+.Va local_startup
+variable (see below).
+Thus, the two likely candidates for this value are
+.Pa mountcritlocal
+for the typical system, and
+.Pa mountcritremote
+if the system needs remote file
+systems mounted to get access to the
+.Va local_startup
+directories; for example when
+.Pa /usr/local
+is NFS mounted.
+For
+.Pa rc.conf
+within a
+.Xr jail 8
+.Pa NETWORKING
+is likely to be an appropriate value.
+Extreme care should be taken when changing this value,
+and before changing it one should ensure that there are
+adequate provisions to recover from a failed boot
+(such as physical contact with the machine,
+or reliable remote console access).
+.It Va swapfile
+.Pq Vt str
+If set to
+.Dq Li NO ,
+no swapfile is installed, otherwise the value is used as the full
+pathname to a file to use for additional swap space.
+.It Va apm_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable support for Automatic Power Management with
+the
+.Xr apm 8
+command.
+.It Va apmd_enable
+.Pq Vt bool
+Run
+.Xr apmd 8
+to handle APM event from userland.
+This also enables support for APM.
+.It Va apmd_flags
+.Pq Vt str
+If
+.Va apmd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr apmd 8
+daemon.
+.It Va devd_enable
+.Pq Vt bool
+Run
+.Xr devd 8
+to handle device added, removed or unknown events from the kernel.
+.It Va ddb_enable
+.Pq Vt bool
+Run
+.Xr ddb 8
+to install
+.Xr ddb 4
+scripts at boot time.
+.It Va ddb_config
+.Pq Vt str
+Configuration file for
+.Xr ddb 8 .
+Default
+.Pa /etc/ddb.conf .
+.It Va kldxref_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Set to
+.Dq Li YES
+to automatically rebuild
+.Pa linker.hints
+files with
+.Xr kldxref 8
+at boot time.
+.It Va kldxref_clobber
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+If
+.Va kldxref_enable
+is true,
+setting to
+.Dq Li YES
+will overwrite existing
+.Pa linker.hints
+files at boot time.
+Otherwise,
+only missing
+.Pa linker.hints
+files are generated.
+.It Va kldxref_module_path
+.Pq Vt str
+Empty by default.
+A semi-colon
+.Pq Ql \&;
+delimited list of paths containing
+.Xr kld 4
+modules.
+If empty,
+the contents of the
+.Va kern.module_path
+.Xr sysctl 8
+are used.
+.It Va powerd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable the system power control facility with the
+.Xr powerd 8
+daemon.
+.It Va powerd_flags
+.Pq Vt str
+If
+.Va powerd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr powerd 8
+daemon.
+.It Va tmpmfs
+Controls the creation of a
+.Pa /tmp
+memory file system.
+Always happens if set to
+.Dq Li YES
+and never happens if set to
+.Dq Li NO .
+If set to anything else, a memory file system is created if
+.Pa /tmp
+is not writable.
+.It Va tmpsize
+Controls the size of a created
+.Pa /tmp
+memory file system.
+.It Va tmpmfs_flags
+Extra options passed to the
+.Xr mdmfs 8
+utility when the memory file system for
+.Pa /tmp
+is created.
+The default is
+.Dq Li "-S" ,
+which inhibits the use of softupdates on
+.Pa /tmp
+so that file system space is freed without delay
+after file truncation or deletion.
+See
+.Xr mdmfs 8
+for other options you can use in
+.Va tmpmfs_flags .
+.It Va varmfs
+Controls the creation of a
+.Pa /var
+memory file system.
+Always happens if set to
+.Dq Li YES
+and never happens if set to
+.Dq Li NO .
+If set to anything else, a memory file system is created if
+.Pa /var
+is not writable.
+.It Va varsize
+Controls the size of a created
+.Pa /var
+memory file system.
+.It Va varmfs_flags
+Extra options passed to the
+.Xr mdmfs 8
+utility when the memory file system for
+.Pa /var
+is created.
+The default is
+.Dq Li "-S" ,
+which inhibits the use of softupdates on
+.Pa /var
+so that file system space is freed without delay
+after file truncation or deletion.
+See
+.Xr mdmfs 8
+for other options you can use in
+.Va varmfs_flags .
+.It Va populate_var
+Controls the automatic population of the
+.Pa /var
+file system.
+Always happens if set to
+.Dq Li YES
+and never happens if set to
+.Dq Li NO .
+If set to anything else, a memory file system is created if
+.Pa /var
+is not writable.
+Note that this process requires access to certain commands in
+.Pa /usr
+before
+.Pa /usr
+is mounted on normal systems.
+.It Va cleanvar_enable
+.Pq Vt bool
+Clean the
+.Pa /var
+directory.
+.It Va local_startup
+.Pq Vt str
+List of directories to search for startup script files.
+.It Va script_name_sep
+.Pq Vt str
+The field separator to use for breaking down the list of startup script files
+into individual filenames.
+The default is a space.
+It is not necessary to change this unless there are startup scripts with names
+containing spaces.
+.It Va hostapd_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to start
+.Xr hostapd 8
+at system boot time.
+.It Va hostname
+.Pq Vt str
+The fully qualified domain name (FQDN) of this host on the network.
+This should almost certainly be set to something meaningful, even if
+there is no network connection.
+If
+.Xr dhclient 8
+is used to set the hostname via DHCP,
+this variable should be set to an empty string.
+.It Va ipv6_enable
+.Pq Vt bool
+Enable support for IPv6 networking.
+Note that this requires that the kernel has been compiled with
+.Cd "options INET6" .
+.It Va nisdomainname
+.Pq Vt str
+The NIS domain name of this host, or
+.Dq Li NO
+if NIS is not used.
+.It Va dhclient_program
+.Pq Vt str
+Path to the DHCP client program
+.Pa ( /sbin/dhclient ,
+the
+.Ox
+DHCP client,
+is the default).
+.It Va dhclient_flags
+.Pq Vt str
+Additional flags to pass to the DHCP client program.
+For the
+.Ox
+DHCP client, see the
+.Xr dhclient 8
+manpage for a description of the command line options available.
+.It Va dhclient_flags_ Ns Aq Ar iface
+Additional flags to pass to the DHCP client program running on
+.Ar iface
+only.
+When specified, this variable overrides
+.Va dhclient_flags .
+.It Va background_dhclient
+.Pq Vt bool
+Set to
+.Dq Li YES
+to start the DHCP client in background.
+This can cause trouble with applications depending on
+a working network, but it will provide a faster startup
+in many cases.
+.It Va background_dhclient_ Ns Aq Ar iface
+When specified, this variable overrides the
+.Va background_dhclient
+variable for interface
+.Ar iface
+only.
+.It Va synchronous_dhclient
+.Pq Bt bool
+Set to
+.Dq Li YES
+to start
+.Xr dhclient 8
+synchronously at startup.
+This behavior can be overridden on a per-interface basis by replacing
+the
+.Dq Li DHCP
+keyword in the
+.Va ifconfig_ Ns Aq Ar interface
+variable with
+.Dq Li SYNCDHCP
+or
+.Dq Li NOSYNCDHCP .
+.It Va if_up_delay
+.Pq Vt int
+When set to a positive value, wait up to this long after configuring
+DHCP interfaces at startup to give the interfaces time to receive a lease.
+.It Va firewall_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to load firewall rules at startup.
+If the kernel was not built with
+.Cd "options IPFIREWALL" ,
+the
+.Pa ipfw.ko
+kernel module will be loaded.
+See also
+.Va ipfilter_enable .
+.It Va ipv6_firewall_enable
+.Pq Vt bool
+The IPv6 equivalent of
+.Va firewall_enable .
+Set to
+.Dq Li YES
+to load IPv6 firewall rules at startup.
+If the kernel was not built with
+.Cd "options IPV6FIREWALL" ,
+the
+.Pa ipfw.ko
+kernel module will be loaded.
+.It Va firewall_script
+.Pq Vt str
+This variable specifies the full path to the firewall script to run.
+The default is
+.Pa /etc/rc.firewall .
+.It Va ipv6_firewall_script
+.Pq Vt str
+The IPv6 equivalent of
+.Va firewall_script .
+.It Va firewall_type
+.Pq Vt str
+Names the firewall type from the selection in
+.Pa /etc/rc.firewall ,
+or the file which contains the local firewall ruleset.
+Valid selections from
+.Pa /etc/rc.firewall
+are:
+.Pp
+.Bl -tag -width ".Li simple" -compact
+.It Li open
+unrestricted IP access
+.It Li closed
+all IP services disabled, except via
+.Dq Li lo0
+.It Li client
+basic protection for a workstation
+.It Li simple
+basic protection for a LAN.
+.El
+.Pp
+If a filename is specified, the full path
+must be given.
+.It Va ipv6_firewall_type
+.Pq Vt str
+The IPv6 equivalent of
+.Va firewall_type .
+.It Va firewall_quiet
+.Pq Vt bool
+Set to
+.Dq Li YES
+to disable the display of firewall rules on the console during boot.
+.It Va ipv6_firewall_quiet
+.Pq Vt bool
+The IPv6 equivalent of
+.Va firewall_quiet .
+.It Va firewall_logging
+.Pq Vt bool
+Set to
+.Dq Li YES
+to enable firewall event logging.
+This is equivalent to the
+.Dv IPFIREWALL_VERBOSE
+kernel option.
+.It Va ipv6_firewall_logging
+.Pq Vt bool
+The IPv6 equivalent of
+.Va firewall_logging .
+.It Va firewall_flags
+.Pq Vt str
+Flags passed to
+.Xr ipfw 8
+if
+.Va firewall_type
+specifies a filename.
+.It Va ipv6_firewall_flags
+.Pq Vt str
+The IPv6 equivalent of
+.Va firewall_flags .
+.\" ----- firewall_nat_enable setting --------------------------------
+.It Va firewall_nat_enable
+.Pq Vt bool
+The
+.Xr ipfw 8
+equivalent of
+.Va natd_enable .
+Setting this to
+.Dq Li YES
+enables kernel NAT.
+.Va firewall_enable
+must also be set to
+.Dq Li YES .
+.It Va firewall_nat_interface
+.Pq Vt str
+The
+.Xr ipfw 8
+equivalent of
+.Va natd_interface .
+This is the name of the public interface or IP address on which
+kernel NAT should run.
+.It Va firewall_nat_flags
+.Pq Vt str
+Additional configuration parameters for kernel NAT should be placed here.
+.It Va dummynet_enable
+.Pq Vt bool
+Setting this to
+.Dq Li YES
+will automatically load the
+.Xr dummynet 4
+module if
+.Va firewall_enable
+is also set to
+.Dq Li YES .
+.\" -------------------------------------------------------------------
+.It Va natd_program
+.Pq Vt str
+Path to
+.Xr natd 8 .
+.It Va natd_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to enable
+.Xr natd 8 .
+.Va firewall_enable
+must also be set to
+.Dq Li YES ,
+and
+.Xr divert 4
+sockets must be enabled in the kernel.
+If the kernel was not built with
+.Cd "options IPDIVERT" ,
+the
+.Pa ipdivert.ko
+kernel module will be loaded.
+.It Va natd_interface
+.Pq Vt str
+This is the name of the public interface on which
+.Xr natd 8
+should run.
+The interface may be given as an interface name or as an IP address.
+.It Va natd_flags
+.Pq Vt str
+Additional
+.Xr natd 8
+flags should be placed here.
+The
+.Fl n
+or
+.Fl a
+flag is automatically added with the above
+.Va natd_interface
+as an argument.
+.\" ----- ipfilter_enable setting --------------------------------
+.It Va ipfilter_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting this to
+.Dq Li YES
+enables
+.Xr ipf 8
+packet filtering.
+.Pp
+Typical usage will require putting
+.Bd -literal
+ipfilter_enable="YES"
+ipnat_enable="YES"
+ipmon_enable="YES"
+ipfs_enable="YES"
+.Ed
+.Pp
+into
+.Pa /etc/rc.conf
+and editing
+.Pa /etc/ipf.rules
+and
+.Pa /etc/ipnat.rules
+appropriately.
+.Pp
+Note that
+.Va ipfilter_enable
+and
+.Va ipnat_enable
+can be enabled independently.
+.Va ipmon_enable
+and
+.Va ipfs_enable
+both require at least one of
+.Va ipfilter_enable
+and
+.Va ipnat_enable
+to be enabled.
+.Pp
+Having
+.Bd -literal
+options IPFILTER
+options IPFILTER_LOG
+options IPFILTER_DEFAULT_BLOCK
+.Ed
+.Pp
+in the kernel configuration file is a good idea, too.
+.\" ----- ipfilter_program setting ------------------------------
+.It Va ipfilter_program
+.Pq Vt str
+Path to
+.Xr ipf 8
+(default
+.Pa /sbin/ipf ) .
+.\" ----- ipfilter_rules setting --------------------------------
+.It Va ipfilter_rules
+.Pq Vt str
+Set to
+.Pa /etc/ipf.rules
+by default.
+This variable contains the name of the filter rule definition file.
+The file is expected to be readable for the
+.Xr ipf 8
+command to execute.
+.\" ----- ipv6_ipfilter_rules setting ---------------------------
+.It Va ipv6_ipfilter_rules
+.Pq Vt str
+Set to
+.Pa /etc/ipf6.rules
+by default.
+This variable contains the IPv6 filter rule definition file.
+The file is expected to be readable for the
+.Xr ipf 8
+command to execute.
+.\" ----- ipfilter_flags setting --------------------------------
+.It Va ipfilter_flags
+.Pq Vt str
+Empty by default.
+This variable contains flags passed to the
+.Xr ipf 8
+program.
+.\" ----- ipnat_enable setting ----------------------------------
+.It Va ipnat_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Set it to
+.Dq Li YES
+to enable
+.Xr ipnat 8
+network address translation.
+See
+.Va ipfilter_enable
+for a detailed discussion.
+.\" ----- ipnat_program setting ---------------------------------
+.It Va ipnat_program
+.Pq Vt str
+Path to
+.Xr ipnat 8
+(default
+.Pa /sbin/ipnat ) .
+.\" ----- ipnat_rules setting -----------------------------------
+.It Va ipnat_rules
+.Pq Vt str
+Set to
+.Pa /etc/ipnat.rules
+by default.
+This variable contains the name of the file
+holding the network address translation definition.
+This file is expected to be readable for the
+.Xr ipnat 8
+command to execute.
+.\" ----- ipnat_flags setting -----------------------------------
+.It Va ipnat_flags
+.Pq Vt str
+Empty by default.
+This variable contains flags passed to the
+.Xr ipnat 8
+program.
+.\" ----- ipmon_enable setting ----------------------------------
+.It Va ipmon_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Set it to
+.Dq Li YES
+to enable
+.Xr ipmon 8
+monitoring (logging
+.Xr ipf 8
+and
+.Xr ipnat 8
+events).
+Setting this variable needs setting
+.Va ipfilter_enable
+or
+.Va ipnat_enable
+too.
+See
+.Va ipfilter_enable
+for a detailed discussion.
+.\" ----- ipmon_program setting ---------------------------------
+.It Va ipmon_program
+.Pq Vt str
+Path to
+.Xr ipmon 8
+(default
+.Pa /sbin/ipmon ) .
+.\" ----- ipmon_flags setting -----------------------------------
+.It Va ipmon_flags
+.Pq Vt str
+Set to
+.Dq Li -Ds
+by default.
+This variable contains flags passed to the
+.Xr ipmon 8
+program.
+Another typical example would be
+.Dq Fl D Pa /var/log/ipflog
+to have
+.Xr ipmon 8
+log directly to a file bypassing
+.Xr syslogd 8 .
+Make sure to adjust
+.Pa /etc/newsyslog.conf
+in such case like this:
+.Bd -literal
+/var/log/ipflog 640 10 100 * Z /var/run/ipmon.pid
+.Ed
+.\" ----- ipfs_enable setting -----------------------------------
+.It Va ipfs_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Set it to
+.Dq Li YES
+to enable
+.Xr ipfs 8
+saving the filter and NAT state tables during shutdown
+and reloading them during startup again.
+Setting this variable needs setting
+.Va ipfilter_enable
+or
+.Va ipnat_enable
+to
+.Dq Li YES
+too.
+See
+.Va ipfilter_enable
+for a detailed discussion.
+Note that if
+.Va kern_securelevel
+is set to 3,
+.Va ipfs_enable
+cannot be used
+because the raised securelevel will prevent
+.Xr ipfs 8
+from saving the state tables at shutdown time.
+.\" ----- ipfs_program setting ----------------------------------
+.It Va ipfs_program
+.Pq Vt str
+Path to
+.Xr ipfs 8
+(default
+.Pa /sbin/ipfs ) .
+.\" ----- ipfs_flags setting ------------------------------------
+.It Va ipfs_flags
+.Pq Vt str
+Empty by default.
+This variable contains flags passed to the
+.Xr ipfs 8
+program.
+.\" ----- end of added ipf hook ---------------------------------
+.It Va pf_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting this to
+.Dq Li YES
+enables
+.Xr pf 4
+packet filtering.
+.Pp
+Typical usage will require putting
+.Pp
+.Dl pf_enable="YES"
+.Pp
+into
+.Pa /etc/rc.conf
+and editing
+.Pa /etc/pf.conf
+appropriately.
+Adding
+.Pp
+.Dl "device pf"
+.Pp
+builds support for
+.Xr pf 4
+into the kernel, otherwise the
+kernel module will be loaded.
+.It Va pf_rules
+.Pq Vt str
+Path to
+.Xr pf 4
+ruleset configuration file
+(default
+.Pa /etc/pf.conf ) .
+.It Va pf_program
+.Pq Vt str
+Path to
+.Xr pfctl 8
+(default
+.Pa /sbin/pfctl ) .
+.It Va pf_flags
+.Pq Vt str
+If
+.Va pf_enable
+is set to
+.Dq Li YES ,
+these flags are passed to the
+.Xr pfctl 8
+program when loading the ruleset.
+.It Va pflog_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting this to
+.Dq Li YES
+enables
+.Xr pflogd 8
+which logs packets from the
+.Xr pf 4
+packet filter.
+.It Va pflog_logfile
+.Pq Vt str
+If
+.Va pflog_enable
+is set to
+.Dq Li YES
+this controls where
+.Xr pflogd 8
+stores the logfile
+(default
+.Pa /var/log/pflog ) .
+Check
+.Pa /etc/newsyslog.conf
+to adjust logfile rotation for this.
+.It Va pflog_program
+.Pq Vt str
+Path to
+.Xr pflogd 8
+(default
+.Pa /sbin/pflogd ) .
+.It Va pflog_flags
+.Pq Vt str
+Empty by default.
+This variable contains additional flags passed to the
+.Xr pflogd 8
+program.
+.It Va ftpproxy_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting this to
+.Dq Li YES
+enables
+.Xr ftp-proxy 8
+which supports the
+.Xr pf 4
+packet filter in translating ftp connections.
+.It Va ftpproxy_flags
+.Pq Vt str
+Empty by default.
+This variable contains additional flags passed to the
+.Xr ftp-proxy 8
+program.
+.It Va pfsync_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting this to
+.Dq Li YES
+enables exposing
+.Xr pf 4
+state changes to other hosts over the network by means of
+.Xr pfsync 4 .
+The
+.Va pfsync_syncdev
+variable
+must also be set then.
+.It Va pfsync_syncdev
+.Pq Vt str
+Empty by default.
+This variable specifies the name of the network interface
+.Xr pfsync 4
+should operate through.
+It must be set accordingly if
+.Va pfsync_enable
+is set to
+.Dq Li YES .
+.It Va pfsync_syncpeer
+.Pq Vt str
+Empty by default.
+This variable is optional.
+By default, state change messages are sent out on the synchronisation
+interface using IP multicast packets.
+The protocol is IP protocol 240, PFSYNC, and the multicast group used is
+224.0.0.240.
+When a peer address is specified using the
+.Va pfsync_syncpeer
+option, the peer address is used as a destination for the pfsync
+traffic, and the traffic can then be protected using
+.Xr ipsec 4 .
+See the
+.Xr pfsync 4
+manpage for more details about using
+.Xr ipsec 4
+with
+.Xr pfsync 4
+interfaces.
+.It Va pfsync_ifconfig
+.Pq Vt str
+Empty by default.
+This variable can contain additional options to be passed to the
+.Xr ifconfig 8
+command used to set up
+.Xr pfsync 4 .
+.It Va tcp_extensions
+.Pq Vt bool
+Set to
+.Dq Li YES
+by default.
+Setting this to
+.Dq Li NO
+disables certain TCP options as described by
+.Rs
+.%T "RFC 1323"
+.Re
+Setting this to
+.Dq Li NO
+might help remedy such problems with connections as randomly hanging
+or other weird behavior.
+Some network devices are known
+to be broken with respect to these options.
+.It Va log_in_vain
+.Pq Vt int
+Set to 0 by default.
+The
+.Xr sysctl 8
+variables,
+.Va net.inet.tcp.log_in_vain
+and
+.Va net.inet.udp.log_in_vain ,
+as described in
+.Xr tcp 4
+and
+.Xr udp 4 ,
+are set to the given value.
+.It Va tcp_keepalive
+.Pq Vt bool
+Set to
+.Dq Li YES
+by default.
+Setting to
+.Dq Li NO
+will disable probing idle TCP connections to verify that the
+peer is still up and reachable.
+.It Va tcp_drop_synfin
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting to
+.Dq Li YES
+will cause the kernel to ignore TCP frames that have both
+the SYN and FIN flags set.
+This prevents OS fingerprinting, but may
+break some legitimate applications.
+.It Va icmp_drop_redirect
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting to
+.Dq Li YES
+will cause the kernel to ignore ICMP REDIRECT packets.
+Refer to
+.Xr icmp 4
+for more information.
+.It Va icmp_log_redirect
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+Setting to
+.Dq Li YES
+will cause the kernel to log ICMP REDIRECT packets.
+Note that
+the log messages are not rate-limited, so this option should only be used
+for troubleshooting networks.
+Refer to
+.Xr icmp 4
+for more information.
+.It Va icmp_bmcastecho
+.Pq Vt bool
+Set to
+.Dq Li YES
+to respond to broadcast or multicast ICMP ping packets.
+Refer to
+.Xr icmp 4
+for more information.
+.It Va ip_portrange_first
+.Pq Vt int
+If not set to
+.Dq Li NO ,
+this is the first port in the default portrange.
+Refer to
+.Xr ip 4
+for more information.
+.It Va ip_portrange_last
+.Pq Vt int
+If not set to
+.Dq Li NO ,
+this is the last port in the default portrange.
+Refer to
+.Xr ip 4
+for more information.
+.It Va network_interfaces
+.Pq Vt str
+Set to the list of network interfaces to configure on this host or
+.Dq Li AUTO
+(the default) for all current interfaces.
+Setting the
+.Va network_interfaces
+variable to anything other than the default is deprecated.
+Interfaces that the administrator wishes to store configuration for,
+but not start at boot should be configured with the
+.Dq Li NOAUTO
+keyword in their
+.Va ifconfig_ Ns Aq Ar interface
+variables as described below.
+.Pp
+An
+.Va ifconfig_ Ns Aq Ar interface
+variable is also assumed to exist for each value of
+.Ar interface .
+When an interface name contains any of the characters
+.Dq Li .-/+
+they are translated to
+.Dq Li _
+before lookup.
+The variable can contain arguments to
+.Xr ifconfig 8 ,
+as well as special case-insensitive keywords described below.
+Such keywords are removed before passing the value to
+.Xr ifconfig 8
+while the order of the other arguments is preserved.
+.Pp
+One can configure more than one IPv4 address with the
+.Va ipv4_addrs_ Ns Aq Ar interface
+variable.
+One or more IP addresses must be provided in Classless Inter-Domain
+Routing (CIDR) address notation, whose last byte can be a range like
+192.168.0.5-23/24.
+In this case the address 192.168.0.5 will be configured with the
+netmask /24 and the addresses 192.168.0.6 to 192.168.0.23 with
+the non-conflicting netmask /32 as explained in the
+.Xr ifconfig 8
+alias section.
+With the interface in question being
+.Li ed0 ,
+an example could look like:
+.Bd -literal
+ipv4_addrs_ed0="192.168.0.1/24 192.168.1.1-5/28"
+.Ed
+.Pp
+It is also possible to add IP alias entries using
+.Xr ifconfig 8
+syntax.
+Assuming that the interface in question was
+.Li ed0 ,
+it might look
+something like this:
+.Bd -literal
+ifconfig_ed0_alias0="inet 127.0.0.253 netmask 0xffffffff"
+ifconfig_ed0_alias1="inet 127.0.0.254 netmask 0xffffffff"
+.Ed
+.Pp
+And so on.
+For each
+.Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n
+entry that is found,
+its contents are passed to
+.Xr ifconfig 8 .
+Execution stops at the first unsuccessful access, so if
+something like this is present:
+.Bd -literal
+ifconfig_ed0_alias0="inet 127.0.0.251 netmask 0xffffffff"
+ifconfig_ed0_alias1="inet 127.0.0.252 netmask 0xffffffff"
+ifconfig_ed0_alias2="inet 127.0.0.253 netmask 0xffffffff"
+ifconfig_ed0_alias4="inet 127.0.0.254 netmask 0xffffffff"
+.Ed
+.Pp
+Then note that alias4 would
+.Em not
+be added since the search would
+stop with the missing
+.Dq Li alias3
+entry.
+Due to this difficult to manage behavior, the
+.Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n
+form is deprecated.
+.Pp
+If the
+.Pa /etc/start_if. Ns Aq Ar interface
+file is present, it is read and executed by the
+.Xr sh 1
+interpreter
+before configuring the interface as specified in the
+.Va ifconfig_ Ns Aq Ar interface
+and
+.Va ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n
+variables.
+.Pp
+If a
+.Va wlans_ Ns Aq Ar interface
+variable is set,
+an
+.Xr wlan 4
+interface will be created for each item in the list with the
+.Ar wlandev
+argument set to
+.Ar interface .
+Further wlan cloning arguments may be passed to the
+.Xr ifconfig 8
+.Cm create
+command by setting the
+.Va create_args_ Ns Aq Ar interface
+variable.
+One or more
+.Xr wlan 4
+devices must be created for each wireless devices as of
+.Fx 8.0 .
+.Pp
+If the
+.Va ifconfig_ Ns Aq Ar interface
+contains the keyword
+.Dq Li NOAUTO
+then the interface will not be configured
+at boot or by
+.Pa /etc/pccard_ether
+when
+.Va network_interfaces
+is set to
+.Dq Li AUTO .
+.Pp
+It is possible to bring up an interface with DHCP by adding
+.Dq Li DHCP
+to the
+.Va ifconfig_ Ns Aq Ar interface
+variable.
+For instance, to initialize the
+.Li ed0
+device via DHCP,
+it is possible to use something like:
+.Bd -literal
+ifconfig_ed0="DHCP"
+.Ed
+.Pp
+Also, if you want to configure your wireless interface with
+.Xr wpa_supplicant 8
+for use with WPA, EAP/LEAP or WEP, you need to add
+.Dq Li WPA
+to the
+.Va ifconfig_ Ns Aq Ar interface
+variable.
+.Pp
+Finally, you can add
+.Xr ifconfig 8
+options in this variable, in addition to the
+.Pa /etc/start_if. Ns Aq Ar interface
+file.
+For instance, configure an
+.Xr ath 4
+wireless device in station mode with an address obtained
+via DHCP, using WPA authentication and 802.11b mode, it is
+possible to use something like:
+.Bd -literal
+wlans_ath0="wlan0"
+ifconfig_wlan0="DHCP WPA mode 11b"
+.Ed
+.Pp
+In addition to the
+.Va ifconfig_ Ns Aq Ar interface
+form, a fallback variable
+.Va ifconfig_DEFAULT
+may be configured.
+It will be used for all interfaces with no
+.Va ifconfig_ Ns Aq Ar interface
+variable.
+This is intended to replace the no longer supported
+.Va pccard_ifconfig
+variable.
+.Pp
+It is also possible to rename interface by doing:
+.Bd -literal
+ifconfig_ed0_name="net0"
+ifconfig_net0="inet 10.0.0.1 netmask 0xffff0000"
+.Ed
+.It Va ipv6_network_interfaces
+.Pq Vt str
+This is the IPv6 equivalent of
+.Va network_interfaces .
+Instead of setting the ifconfig variables as
+.Va ifconfig_ Ns Aq Ar interface
+they should be set as
+.Va ipv6_ifconfig_ Ns Aq Ar interface .
+Aliases should be set as
+.Va ipv6_ifconfig_ Ns Ao Ar interface Ac Ns Va _alias Ns Aq Ar n .
+.Va ipv6_prefix_ Ns Aq Ar interface
+does something.
+Interfaces that do not have a
+.Va ipv6_ifconfig_ Ns Aq Ar interface
+setting will be auto configured by
+.Xr rtsol 8
+if the
+.Va ipv6_gateway_enable
+is set to
+.Dq Li NO .
+Note that the IPv6 networking code does not support the
+.Pa /etc/start_if. Ns Aq Ar interface
+files.
+.It Va ipv6_default_interface
+.Pq Vt str
+If not set to
+.Dq Li NO ,
+this is the default output interface for scoped addresses.
+Now this works only for IPv6 link local multicast addresses.
+.It Va cloned_interfaces
+.Pq Vt str
+Set to the list of clonable network interfaces to create on this host.
+Entries in
+.Va cloned_interfaces
+are automatically appended to
+.Va network_interfaces
+for configuration.
+.It Va fec_interfaces
+.Pq Vt str
+Set to the list of
+.Xr ng_fec 4
+Fast EtherChannel interfaces to configure on this host.
+A
+.Va fecconfig_ Ns Aq Ar interface
+variable is assumed to exist for each value of
+.Ar interface .
+The value of this variable is used to configure link aggregated interfaces
+according to the syntax of the
+.Cm NGM_FEC_ADD_IFACE
+to
+.Xr ngctl 8
+msg.
+Additionally, this option ensures that each listed interface is created
+via the
+.Cm mkpeer
+command to
+.Xr ngctl 8
+before attempting to configure it.
+For example:
+.Bd -literal
+fec_interfaces="fec0"
+fecconfig_fec0="em0 em1"
+ifconfig_fec0="DHCP"
+.Ed
+.It Va gif_interfaces
+.Pq Vt str
+Set to the list of
+.Xr gif 4
+tunnel interfaces to configure on this host.
+A
+.Va gifconfig_ Ns Aq Ar interface
+variable is assumed to exist for each value of
+.Ar interface .
+The value of this variable is used to configure the link layer of the
+tunnel according to the syntax of the
+.Cm tunnel
+option to
+.Xr ifconfig 8 .
+Additionally, this option ensures that each listed interface is created
+via the
+.Cm create
+option to
+.Xr ifconfig 8
+before attempting to configure it.
+.It Va sppp_interfaces
+.Pq Vt str
+Set to the list of
+.Xr sppp 4
+interfaces to configure on this host.
+A
+.Va spppconfig_ Ns Aq Ar interface
+variable is assumed to exist for each value of
+.Ar interface .
+Each interface should also be configured by a general
+.Va ifconfig_ Ns Aq Ar interface
+setting.
+Refer to
+.Xr spppcontrol 8
+for more information about available options.
+.It Va ppp_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr ppp 8
+daemon.
+.It Va ppp_profile
+.Pq Vt str
+The name of the profile to use from
+.Pa /etc/ppp/ppp.conf .
+Also used for per-profile overrides of
+.Va ppp_mode
+and
+.Va ppp_nat ,
+and
+.Va ppp_ Ns Ao Ar profile Ac Ns _unit .
+When the profile name contains any of the characters
+.Dq Li .-/+
+they are translated to
+.Dq Li _
+for the proposes of the override variable names.
+.It Va ppp_mode
+.Pq Vt str
+Mode in which to run the
+.Xr ppp 8
+daemon.
+.It Va ppp_ Ns Ao Ar profile Ac Ns _mode
+.Pq Vt str
+Overrides the global
+.Va ppp_mode
+for
+.Ar profile .
+Accepted modes are
+.Dq Li auto ,
+.Dq Li ddial ,
+.Dq Li direct
+and
+.Dq Li dedicated .
+See the manual for a full description.
+.It Va ppp_nat
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enables network address translation.
+Used in conjunction with
+.Va gateway_enable
+allows hosts on private network addresses access to the Internet using
+this host as a network address translating router.
+.It Va ppp_ Ns Ao Ar profile Ac Ns _nat
+.Pq Vt str
+Overrides the global
+.Va ppp_nat
+for
+.Ar profile .
+.It Va ppp_ Ns Ao Ar profile Ac Ns _unit
+.Pq Vt int
+Set the unit number to be used for this profile.
+See the manual description of
+.Fl unit Ns Ar N
+for details.
+.It Va ppp_user
+.Pq Vt str
+The name of the user under which
+.Xr ppp 8
+should be started.
+By
+default,
+.Xr ppp 8
+is started as
+.Dq Li root .
+.It Va rc_conf_files
+.Pq Vt str
+This option is used to specify a list of files that will override
+the settings in
+.Pa /etc/defaults/rc.conf .
+The files will be read in the order in which they are specified and should
+include the full path to the file.
+By default, the files specified are
+.Pa /etc/rc.conf
+and
+.Pa /etc/rc.conf.local
+.It Va zfs_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+.Pa /etc/rc.d/zfs
+will attempt to automatically mount ZFS file systems and initialize ZFS volumes
+(ZVOLs).
+.It Va gbde_autoattach_all
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+.Pa /etc/rc.d/gbde
+will attempt to automatically initialize your .bde devices in
+.Pa /etc/fstab .
+.It Va gbde_devices
+.Pq Vt str
+List the devices that the script should try to attach,
+or
+.Dq Li AUTO .
+.It Va gbde_lockdir
+.Pq Vt str
+The directory where the
+.Xr gbde 4
+lockfiles are located.
+The default lockfile directory is
+.Pa /etc .
+.Pp
+The lockfile for each individual
+.Xr gbde 4
+device can be overridden by setting the variable
+.Va gbde_lock_ Ns Aq Ar device ,
+where
+.Ar device
+is the encrypted device without the
+.Dq Pa /dev/
+and
+.Dq Pa .bde
+parts.
+.It Va gbde_attach_attempts
+.Pq Vt int
+Number of times to attempt attaching to a
+.Xr gbde 4
+device, i.e., how many times the user is asked for the pass-phrase.
+Default is 3.
+.It Va geli_devices
+.Pq Vt str
+List of devices to automatically attach on boot.
+Note that .eli devices from
+.Pa /etc/fstab
+are automatically appended to this list.
+.It Va geli_tries
+.Pq Vt int
+Number of times user is asked for the pass-phrase.
+If empty, it will be taken from
+.Va kern.geom.eli.tries
+sysctl variable.
+.It Va geli_default_flags
+.Pq Vt str
+Default flags to use by
+.Xr geli 8
+when configuring disk encryption.
+Flags can be configured for every device separately by defining
+.Va geli_ Ns Ao Ar device Ac Ns Va _flags
+variable.
+.It Va geli_autodetach
+.Pq Vt str
+Specifies if GELI devices should be marked for detach on last close after
+file systems are mounted.
+Default is
+.Dq Li YES .
+This can be changed for every device separately by defining
+.Va geli_ Ns Ao Ar device Ac Ns Va _autodetach
+variable.
+.It Va geli_swap_flags
+Options passed to the
+.Xr geli 8
+utility when encrypted GEOM providers for swap partitions are created.
+The default is
+.Dq Li "-a aes -l 256 -s 4096 -d" .
+.It Va root_rw_mount
+.Pq Vt bool
+Set to
+.Dq Li YES
+by default.
+After the file systems are checked at boot time, the root file system
+is remounted as read-write if this is set to
+.Dq Li YES .
+Diskless systems that mount their root file system from a read-only remote
+NFS share should set this to
+.Dq Li NO
+in their
+.Pa rc.conf .
+.It Va fsck_y_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+.Xr fsck 8
+will be run with the
+.Fl y
+flag if the initial preen
+of the file systems fails.
+.It Va background_fsck
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+the system will attempt to run
+.Xr fsck 8
+in the background where possible.
+.It Va background_fsck_delay
+.Pq Vt int
+The amount of time in seconds to sleep before starting a background
+.Xr fsck 8 .
+It defaults to sixty seconds to allow large applications such as
+the X server to start before disk I/O bandwidth is monopolized by
+.Xr fsck 8 .
+If set to a negative number, the background file system check will be
+delayed indefinitely to allow the administrator to run it at a more
+convenient time.
+For example it may be run from
+.Xr cron 8
+by adding a line like
+.Pp
+.Dl "0 4 * * * root /etc/rc.d/bgfsck forcestart"
+.Pp
+to
+.Pa /etc/crontab .
+.It Va netfs_types
+.Pq Vt str
+List of file system types that are network-based.
+This list should generally not be modified by end users.
+Use
+.Va extra_netfs_types
+instead.
+.It Va extra_netfs_types
+.Pq Vt str
+If set to something other than
+.Dq Li NO
+(the default),
+this variable extends the list of file system types
+for which automatic mounting at startup by
+.Xr rc 8
+should be delayed until the network is initialized.
+It should contain
+a whitespace-separated list of network file system descriptor pairs,
+each consisting of a file system type as passed to
+.Xr mount 8
+and a human-readable, one-word description,
+joined with a colon
+.Pq Ql \&: .
+Extending the default list in this way is only necessary
+when third party file system types are used.
+.It Va syslogd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr syslogd 8
+daemon.
+.It Va syslogd_program
+.Pq Vt str
+Path to
+.Xr syslogd 8
+(default
+.Pa /usr/sbin/syslogd ) .
+.It Va syslogd_flags
+.Pq Vt str
+If
+.Va syslogd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to
+.Xr syslogd 8 .
+.It Va inetd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr inetd 8
+daemon.
+.It Va inetd_program
+.Pq Vt str
+Path to
+.Xr inetd 8
+(default
+.Pa /usr/sbin/inetd ) .
+.It Va inetd_flags
+.Pq Vt str
+If
+.Va inetd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to
+.Xr inetd 8 .
+.It Va named_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr named 8
+daemon.
+.It Va named_program
+.Pq Vt str
+Path to
+.Xr named 8
+(default
+.Pa /usr/sbin/named ) .
+.It Va named_flags
+.Pq Vt str
+If
+.Va named_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to
+.Xr named 8 .
+.It Va named_pidfile
+.Pq Vt str
+This is the default path to the
+.Xr named 8
+daemon's PID file.
+This must match the location in
+.Xr named.conf 5 .
+.It Va named_uid
+.Pq Vt str
+The user that the
+.Xr named 8
+process should be run as.
+.It Va named_chrootdir
+.Pq Vt str
+The root directory for a name server run in a
+.Xr chroot 8
+environment (default
+.Pa /var/named ) .
+If left empty
+.Xr named 8
+will not be run in a
+.Xr chroot 8
+environment.
+.It Va named_chroot_autoupdate
+.Pq Vt bool
+Set to
+.Dq Li NO
+to disable automatic update of the
+.Xr chroot 8
+environment.
+.It Va named_symlink_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+to disable symlinking of
+daemon's PID file
+into the
+.Xr chroot 8
+environment.
+.It Va kerberos5_server_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to start a Kerberos 5 authentication server
+at boot time.
+.It Va kerberos5_server
+.Pq Vt str
+If
+.Va kerberos5_server_enable
+is set to
+.Dq Li YES
+this is the path to Kerberos 5 Authentication Server.
+.It Va kerberos5_server_flags
+.Pq Vt str
+Empty by default.
+This variable contains additional flags to be passed to the Kerberos 5
+authentication server.
+.It Va kadmind5_server_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to start
+.Xr kadmind 8 ,
+the Kerberos 5 Administration Daemon; set to
+.Dq Li NO
+on a slave server.
+.It Va kadmind5_server
+.Pq Vt str
+If
+.Va kadmind5_server_enable
+is set to
+.Dq Li YES
+this is the path to Kerberos 5 Administration Daemon.
+.It Va kpasswdd_server_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to start
+.Xr kpasswdd 8 ,
+the Kerberos 5 Password-Changing Daemon; set to
+.Dq Li NO
+on a slave server.
+.It Va kpasswdd_server
+.Pq Vt str
+If
+.Va kpasswdd_server_enable
+is set to
+.Dq Li YES
+this is the path to Kerberos 5 Password-Changing Daemon.
+.It Va rwhod_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr rwhod 8
+daemon at boot time.
+.It Va rwhod_flags
+.Pq Vt str
+If
+.Va rwhod_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to it.
+.It Va amd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr amd 8
+daemon at boot time.
+.It Va amd_flags
+.Pq Vt str
+If
+.Va amd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to it.
+See the
+.Xr amd 8
+manpage for more information.
+.It Va amd_map_program
+.Pq Vt str
+If set,
+the specified program is run to get the list of
+.Xr amd 8
+maps.
+For example, if the
+.Xr amd 8
+maps are stored in NIS, one can set this to
+run
+.Xr ypcat 1
+to get a list of
+.Xr amd 8
+maps from the
+.Pa amd.master
+NIS map.
+.It Va update_motd
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+.Pa /etc/motd
+will be updated at boot time to reflect the kernel release
+being run.
+If set to
+.Dq Li NO ,
+.Pa /etc/motd
+will not be updated.
+.It Va nfs_client_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the NFS client daemons at boot time.
+.It Va nfs_access_cache
+.Pq Vt int
+If
+.Va nfs_client_enable
+is set to
+.Dq Li YES ,
+this can be set to
+.Dq Li 0
+to disable NFS ACCESS RPC caching, or to the number of seconds for which
+NFS ACCESS
+results should be cached.
+A value of 2-10 seconds will substantially reduce network
+traffic for many NFS operations.
+.It Va nfs_server_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the NFS server daemons at boot time.
+.It Va nfs_server_flags
+.Pq Vt str
+If
+.Va nfs_server_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr nfsd 8
+daemon.
+.It Va idmapd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the ID mapping daemon for NFS version 4.
+.It Va idmapd_flags
+.Pq Vt str
+If
+.Va idmapd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr idmapd 8
+daemon.
+.It Va mountd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+and no
+.Va nfs_server_enable
+is set, start
+.Xr mountd 8 ,
+but not
+.Xr nfsd 8
+daemon.
+It is commonly needed to run CFS without real NFS used.
+.It Va mountd_flags
+.Pq Vt str
+If
+.Va mountd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr mountd 8
+daemon.
+.It Va weak_mountd_authentication
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+allow services like PCNFSD to make non-privileged mount
+requests.
+.It Va nfs_reserved_port_only
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+provide NFS services only on a secure port.
+.It Va nfs_bufpackets
+.Pq Vt int
+If set to a number, indicates the number of packets worth of
+socket buffer space to reserve on an NFS client.
+The kernel default is typically 4.
+Using a higher number may be
+useful on gigabit networks to improve performance.
+The minimum value is
+2 and the maximum is 64.
+.It Va rpc_lockd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES
+and also an NFS server or client, run
+.Xr rpc.lockd 8
+at boot time.
+.It Va rpc_lockd_flags
+.Pq Vt str
+If
+.Va rpc_lockd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr rpc.lockd 8
+daemon.
+.It Va rpc_statd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES
+and also an NFS server or client, run
+.Xr rpc.statd 8
+at boot time.
+.It Va rpc_statd_flags
+.Pq Vt str
+If
+.Va rpc_statd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr rpc.statd 8
+daemon.
+.It Va rpcbind_program
+.Pq Vt str
+Path to
+.Xr rpcbind 8
+(default
+.Pa /usr/sbin/rpcbind ) .
+.It Va rpcbind_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr rpcbind 8
+service at boot time.
+.It Va rpcbind_flags
+.Pq Vt str
+If
+.Va rpcbind_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr rpcbind 8
+daemon.
+.It Va keyserv_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr keyserv 8
+daemon on boot for running Secure RPC.
+.It Va keyserv_flags
+.Pq Vt str
+If
+.Va keyserv_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to
+.Xr keyserv 8
+daemon.
+.It Va pppoed_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr pppoed 8
+daemon at boot time to provide PPP over Ethernet services.
+.It Va pppoed_ Ns Aq Ar provider
+.Pq Vt str
+.Xr pppoed 8
+listens to requests to this
+.Ar provider
+and ultimately runs
+.Xr ppp 8
+with a
+.Ar system
+argument of the same name.
+.It Va pppoed_flags
+.Pq Vt str
+Additional flags to pass to
+.Xr pppoed 8 .
+.It Va pppoed_interface
+.Pq Vt str
+The network interface to run
+.Xr pppoed 8
+on.
+This is mandatory when
+.Va pppoed_enable
+is set to
+.Dq Li YES .
+.It Va timed_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr timed 8
+service at boot time.
+This command is intended for networks of
+machines where a consistent
+.Dq "network time"
+for all hosts must be established.
+This is often useful in large NFS
+environments where time stamps on files are expected to be consistent
+network-wide.
+.It Va timed_flags
+.Pq Vt str
+If
+.Va timed_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr timed 8
+service.
+.It Va ntpdate_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run
+.Xr ntpdate 8
+at system startup.
+This command is intended to
+synchronize the system clock only
+.Em once
+from some standard reference.
+An option to set this up initially
+(from a list of known servers) is also provided by the
+.Xr sysinstall 8
+program when the system is first installed.
+.It Va ntpdate_config
+.Pq Vt str
+Configuration file for
+.Xr ntpdate 8 .
+Default
+.Pa /etc/ntp.conf .
+.It Va ntpdate_hosts
+.Pq Vt str
+A whitespace-separated list of NTP servers to synchronize with at startup.
+The default is to use the servers listed in
+.Va ntpdate_config ,
+if that file exists.
+.It Va ntpdate_program
+.Pq Vt str
+Path to
+.Xr ntpdate 8
+(default
+.Pa /usr/sbin/ntpdate ) .
+.It Va ntpdate_flags
+.Pq Vt str
+If
+.Va ntpdate_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr ntpdate 8
+command (typically a hostname).
+.It Va ntpd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr ntpd 8
+command at boot time.
+.It Va ntpd_program
+.Pq Vt str
+Path to
+.Xr ntpd 8
+(default
+.Pa /usr/sbin/ntpd ) .
+.It Va ntpd_config
+.Pq Vt str
+Path to
+.Xr ntpd 8
+configuration file.
+Default
+.Pa /etc/ntp.conf .
+.It Va ntpd_flags
+.Pq Vt str
+If
+.Va ntpd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr ntpd 8
+daemon.
+.It Va ntpd_sync_on_start
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+.Xr ntpd 8
+is run with the
+.Fl g
+flag, which syncs the system's clock on startup.
+See
+.Xr ntpd 8
+for more information regarding the
+.Fl g
+option.
+This is a preferred alternative to using
+.Xr ntpdate 8
+or specifying the
+.Va ntpdate_enable
+variable.
+.It Va nis_client_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr ypbind 8
+service at system boot time.
+.It Va nis_client_flags
+.Pq Vt str
+If
+.Va nis_client_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr ypbind 8
+service.
+.It Va nis_ypset_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr ypset 8
+daemon at system boot time.
+.It Va nis_ypset_flags
+.Pq Vt str
+If
+.Va nis_ypset_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr ypset 8
+daemon.
+.It Va nis_server_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr ypserv 8
+daemon at system boot time.
+.It Va nis_server_flags
+.Pq Vt str
+If
+.Va nis_server_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr ypserv 8
+daemon.
+.It Va nis_ypxfrd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr rpc.ypxfrd 8
+daemon at system boot time.
+.It Va nis_ypxfrd_flags
+.Pq Vt str
+If
+.Va nis_ypxfrd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr rpc.ypxfrd 8
+daemon.
+.It Va nis_yppasswdd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr rpc.yppasswdd 8
+daemon at system boot time.
+.It Va nis_yppasswdd_flags
+.Pq Vt str
+If
+.Va nis_yppasswdd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr rpc.yppasswdd 8
+daemon.
+.It Va rpc_ypupdated_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Nm rpc.ypupdated
+daemon at system boot time.
+.It Va bsnmpd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr bsnmpd 1
+daemon at system boot time.
+Be sure to understand the security implications of running SNMP daemon
+on your host.
+.It Va bsnmpd_flags
+.Pq Vt str
+If
+.Va bsnmpd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr bsnmpd 1
+daemon.
+.It Va defaultrouter
+.Pq Vt str
+If not set to
+.Dq Li NO ,
+create a default route to this host name or IP address
+(use an IP address if this router is also required to get to the
+name server!).
+.It Va ipv6_defaultrouter
+.Pq Vt str
+The IPv6 equivalent of
+.Va defaultrouter .
+.It Va static_routes
+.Pq Vt str
+Set to the list of static routes that are to be added at system
+boot time.
+If not set to
+.Dq Li NO
+then for each whitespace separated
+.Ar element
+in the value, a
+.Va route_ Ns Aq Ar element
+variable is assumed to exist
+whose contents will later be passed to a
+.Dq Nm route Cm add
+operation.
+For example:
+.Bd -literal
+static_routes="mcast gif0local"
+route_mcast="-net 224.0.0.0/4 -iface gif0"
+route_gif0local="-host 169.254.1.1 -iface lo0"
+.Ed
+.It Va ipv6_static_routes
+.Pq Vt str
+The IPv6 equivalent of
+.Va static_routes .
+If not set to
+.Dq Li NO
+then for each whitespace separated
+.Ar element
+in the value, a
+.Va ipv6_route_ Ns Aq Ar element
+variable is assumed to exist
+whose contents will later be passed to a
+.Dq Nm route Cm add Fl inet6
+operation.
+.It Va natm_static_routes
+.Pq Vt str
+The
+.Xr natmip 4
+equivalent of
+.Va static_routes .
+If not empty then for each whitespace separated
+.Ar element
+in the value, a
+.Va route_ Ns Aq Ar element
+variable is assumed to exist whose contents will later be passed to a
+.Dq Nm atmconfig Cm natm Cm add
+operation.
+.It Va gateway_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+configure host to act as an IP router, e.g.\& to forward packets
+between interfaces.
+.It Va ipv6_gateway_enable
+.Pq Vt bool
+The IPv6 equivalent of
+.Va gateway_enable .
+.It Va router_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run a routing daemon of some sort, based on the
+settings of
+.Va router
+and
+.Va router_flags .
+.It Va ipv6_router_enable
+.Pq Vt bool
+The IPv6 equivalent of
+.Va router_enable .
+If set to
+.Dq Li YES ,
+run a routing daemon of some sort, based on the
+settings of
+.Va ipv6_router
+and
+.Va ipv6_router_flags .
+.It Va router
+.Pq Vt str
+If
+.Va router_enable
+is set to
+.Dq Li YES ,
+this is the name of the routing daemon to use.
+.It Va ipv6_router
+.Pq Vt str
+The IPv6 equivalent of
+.Va router .
+.It Va router_flags
+.Pq Vt str
+If
+.Va router_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the routing daemon.
+.It Va ipv6_router_flags
+.Pq Vt str
+The IPv6 equivalent of
+.Va router_flags .
+.It Va mrouted_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the multicast routing daemon,
+.Xr mrouted 8 .
+.It Va mroute6d_enable
+.Pq Vt bool
+The IPv6 equivalent of
+.Va mrouted_enable .
+If set to
+.Dq Li YES ,
+run the IPv6 multicast routing daemon.
+.Pp
+Note that multicast routing daemons are no longer included in the
+.Fx
+base system, however, both
+.Xr mrouted 8
+and
+.Xr pim6dd 8
+may be installed from the
+.Fx
+Ports Collection.
+.It Va mrouted_flags
+.Pq Vt str
+If
+.Va mrouted_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr mrouted 8
+daemon.
+.It Va mroute6d_flags
+.Pq Vt str
+The IPv6 equivalent of
+.Va mrouted_flags .
+If
+.Va mroute6d_enable
+is set to
+.Dq Li YES ,
+these are the flags passed to the IPv6 multicast routing daemon.
+.It Va mroute6d_program
+.Pq Vt str
+If
+.Va mroute6d_enable
+is set to
+.Dq Li YES ,
+this is the path to the IPv6 multicast routing daemon.
+.It Va rtadvd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr rtadvd 8
+daemon at boot time.
+.Xr rtadvd 8
+will only run if
+.Va ipv6_gateway_enable
+is also set to
+.Dq Li YES .
+The
+.Xr rtadvd 8
+utility sends router advertisement packets to the interfaces specified in
+.Va rtadvd_interfaces
+and should only be enabled with great care.
+You may want to fine-tune
+.Xr rtadvd.conf 5 .
+.It Va rtadvd_interfaces
+.Pq Vt str
+If
+.Va rtadvd_enable
+is set to
+.Dq Li YES
+this is the list of interfaces to use.
+.It Va ipxgateway_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable the routing of IPX traffic.
+.It Va ipxrouted_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr IPXrouted 8
+daemon at system boot time.
+.It Va ipxrouted_flags
+.Pq Vt str
+If
+.Va ipxrouted_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr IPXrouted 8
+daemon.
+.It Va arpproxy_all
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable global proxy ARP.
+.It Va forward_sourceroute
+.Pq Vt bool
+If set to
+.Dq Li YES
+and
+.Va gateway_enable
+is also set to
+.Dq Li YES ,
+source-routed packets are forwarded.
+.It Va accept_sourceroute
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+the system will accept source-routed packets directed at it.
+.It Va rarpd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr rarpd 8
+daemon at system boot time.
+.It Va rarpd_flags
+.Pq Vt str
+If
+.Va rarpd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr rarpd 8
+daemon.
+.It Va bootparamd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr bootparamd 8
+daemon at system boot time.
+.It Va bootparamd_flags
+.Pq Vt str
+If
+.Va bootparamd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr bootparamd 8
+daemon.
+.It Va stf_interface_ipv4addr
+.Pq Vt str
+If not set to
+.Dq Li NO ,
+this is the local IPv4 address for 6to4 (IPv6 over IPv4 tunneling
+interface).
+Specify this entry to enable the 6to4 interface.
+.It Va stf_interface_ipv4plen
+.Pq Vt int
+Prefix length for 6to4 IPv4 addresses, to limit peer address range.
+An effective value is 0-31.
+.It Va stf_interface_ipv6_ifid
+.Pq Vt str
+IPv6 interface ID for
+.Xr stf 4 .
+This can be set to
+.Dq Li AUTO .
+.It Va stf_interface_ipv6_slaid
+.Pq Vt str
+IPv6 Site Level Aggregator for
+.Xr stf 4 .
+.It Va ipv6_faith_prefix
+.Pq Vt str
+If not set to
+.Dq Li NO ,
+this is the faith prefix to enable a FAITH IPv6-to-IPv4 TCP
+translator.
+You also need
+.Xr faithd 8
+setup.
+.It Va ipv6_ipv4mapping
+.Pq Vt bool
+If set to
+.Dq Li YES
+this enables IPv4 mapped IPv6 address communication (like
+.Li ::ffff:a.b.c.d ) .
+.It Va atm_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to enable the configuration of ATM interfaces at system boot time.
+For all of the ATM variables described below, please refer to the
+.Xr atm 8
+manual page for further details on the available command parameters.
+Also refer to the files in
+.Pa /usr/share/examples/atm
+for more detailed configuration information.
+.It Va atm_load
+.Pq Vt str
+This is a list of physical ATM interface drivers to load.
+Typical values are
+.Dq Li hfa_pci
+and/or
+.Dq Li hea_pci .
+.It Va atm_netif_ Ns Aq Ar intf
+.Pq Vt str
+For the ATM physical interface
+.Ar intf ,
+this variable defines the name prefix and count for the ATM network
+interfaces to be created.
+The value will be passed as the parameters of an
+.Dq Nm atm Cm "set netif" Ar intf
+command.
+.It Va atm_sigmgr_ Ns Aq Ar intf
+.Pq Vt str
+For the ATM physical interface
+.Ar intf ,
+this variable defines the ATM signalling manager to be used.
+The value will be passed as the parameters of an
+.Dq Nm atm Cm attach Ar intf
+command.
+.It Va atm_prefix_ Ns Aq Ar intf
+.Pq Vt str
+For the ATM physical interface
+.Ar intf ,
+this variable defines the NSAP prefix for interfaces using a UNI signalling
+manager.
+If set to
+.Dq Li ILMI ,
+the prefix will automatically be set via the
+.Xr ilmid 8
+daemon.
+Otherwise, the value will be passed as the parameters of an
+.Dq Nm atm Cm "set prefix" Ar intf
+command.
+.It Va atm_macaddr_ Ns Aq Ar intf
+.Pq Vt str
+For the ATM physical interface
+.Ar intf ,
+this variable defines the MAC address for interfaces using a UNI signalling
+manager.
+If set to
+.Dq Li NO ,
+the hardware MAC address contained in the ATM interface card will be used.
+Otherwise, the value will be passed as the parameters of an
+.Dq Nm atm Cm "set mac" Ar intf
+command.
+.It Va atm_arpserver_ Ns Aq Ar netif
+.Pq Vt str
+For the ATM network interface
+.Ar netif ,
+this variable defines the ATM address for a host which is to provide ATMARP
+service.
+This variable is only applicable to interfaces using a UNI signalling
+manager.
+If set to
+.Dq Li local ,
+this host will become an ATMARP server.
+The value will be passed as the parameters of an
+.Dq Nm atm Cm "set arpserver" Ar netif
+command.
+.It Va atm_scsparp_ Ns Aq Ar netif
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+SCSP/ATMARP service for the network interface
+.Ar netif
+will be initiated using the
+.Xr scspd 8
+and
+.Xr atmarpd 8
+daemons.
+This variable is only applicable if
+.Va atm_arpserver_ Ns Aq Ar netif
+is set to
+.Dq Li local .
+.It Va atm_pvcs
+.Pq Vt str
+Set to the list of ATM PVCs to be added at system
+boot time.
+For each whitespace separated
+.Ar element
+in the value, an
+.Va atm_pvc_ Ns Aq Ar element
+variable is assumed to exist.
+The value of each of these variables
+will be passed as the parameters of an
+.Dq Nm atm Cm "add pvc"
+command.
+.It Va atm_arps
+.Pq Vt str
+Set to the list of permanent ATM ARP entries to be added
+at system boot time.
+For each whitespace separated
+.Ar element
+in the value, an
+.Va atm_arp_ Ns Aq Ar element
+variable is assumed to exist.
+The value of each of these variables
+will be passed as the parameters of an
+.Dq Nm atm Cm "add arp"
+command.
+.It Va natm_interfaces
+.Pq Vt str
+Set to the list of
+.Xr natm 4
+interfaces that will also be used for HARP through
+.Xr harp 4 .
+If this list is not empty all interfaces in the list will be brought up
+with
+.Xr ifconfig 8
+and
+.Xr harp 4
+will be loaded.
+For this to work the interface drivers must be either compiled into the
+kernel or must reside on the root partition.
+.It Va keybell
+.Pq Vt str
+The keyboard bell sound.
+Set to
+.Dq Li normal ,
+.Dq Li visual ,
+.Dq Li off ,
+or
+.Dq Li NO
+if the default behavior is desired.
+For details, refer to the
+.Xr kbdcontrol 1
+manpage.
+.It Va keyboard
+.Pq Vt str
+If set to a non-null string, the virtual console's keyboard input is
+set to this device.
+.It Va keymap
+.Pq Vt str
+If set to
+.Dq Li NO ,
+no keymap is installed, otherwise the value is used to install
+the keymap file in
+.Pa /usr/share/syscons/keymaps/ Ns Ao Ar value Ac Ns Pa .kbd .
+.It Va keyrate
+.Pq Vt str
+The keyboard repeat speed.
+Set to
+.Dq Li slow ,
+.Dq Li normal ,
+.Dq Li fast ,
+or
+.Dq Li NO
+if the default behavior is desired.
+.It Va keychange
+.Pq Vt str
+If not set to
+.Dq Li NO ,
+attempt to program the function keys with the value.
+The value should
+be a single string of the form:
+.Dq Ar funkey_number new_value Op Ar funkey_number new_value ... .
+.It Va cursor
+.Pq Vt str
+Can be set to the value of
+.Dq Li normal ,
+.Dq Li blink ,
+.Dq Li destructive ,
+or
+.Dq Li NO
+to set the cursor behavior explicitly or choose the default behavior.
+.It Va scrnmap
+.Pq Vt str
+If set to
+.Dq Li NO ,
+no screen map is installed, otherwise the value is used to install
+the screen map file in
+.Pa /usr/share/syscons/scrnmaps/ Ns Aq Ar value .
+.It Va font8x16
+.Pq Vt str
+If set to
+.Dq Li NO ,
+the default 8x16 font value is used for screen size requests, otherwise
+the value in
+.Pa /usr/share/syscons/fonts/ Ns Aq Ar value
+is used.
+.It Va font8x14
+.Pq Vt str
+If set to
+.Dq Li NO ,
+the default 8x14 font value is used for screen size requests, otherwise
+the value in
+.Pa /usr/share/syscons/fonts/ Ns Aq Ar value
+is used.
+.It Va font8x8
+.Pq Vt str
+If set to
+.Dq Li NO ,
+the default 8x8 font value is used for screen size requests, otherwise
+the value in
+.Pa /usr/share/syscons/fonts/ Ns Aq Ar value
+is used.
+.It Va blanktime
+.Pq Vt int
+If set to
+.Dq Li NO ,
+the default screen blanking interval is used, otherwise it is set
+to
+.Ar value
+seconds.
+.It Va saver
+.Pq Vt str
+If not set to
+.Dq Li NO ,
+this is the actual screen saver to use
+.Li ( blank , snake , daemon ,
+etc).
+.It Va moused_nondefault_enable
+.Pq Vt str
+If set to
+.Dq Li NO ,
+the mouse device specified on
+the command line is not automatically treated as enabled by the
+.Pa /etc/rc.d/moused
+script.
+Having this variable set to
+.Dq Li YES
+allows a
+.Xr usb 4
+mouse,
+for example,
+to be enabled as soon as it is plugged in.
+.It Va moused_enable
+.Pq Vt str
+If set to
+.Dq Li YES ,
+the
+.Xr moused 8
+daemon is started for doing cut/paste selection on the console.
+.It Va moused_type
+.Pq Vt str
+This is the protocol type of the mouse connected to this host.
+This variable must be set if
+.Va moused_enable
+is set to
+.Dq Li YES .
+The
+.Xr moused 8
+daemon
+is able to detect the appropriate mouse type automatically in many cases.
+Set this variable to
+.Dq Li auto
+to let the daemon detect it, or
+select one from the following list if the automatic detection fails.
+.Pp
+If the mouse is attached to the PS/2 mouse port, choose
+.Dq Li auto
+or
+.Dq Li ps/2 ,
+regardless of the brand and model of the mouse.
+Likewise, if the
+mouse is attached to the bus mouse port, choose
+.Dq Li auto
+or
+.Dq Li busmouse .
+All other protocols are for serial mice and will not work with
+the PS/2 and bus mice.
+If this is a USB mouse,
+.Dq Li auto
+is the only protocol type which will work.
+.Pp
+.Bl -tag -width ".Li x10mouseremote" -compact
+.It Li microsoft
+Microsoft mouse (serial)
+.It Li intellimouse
+Microsoft IntelliMouse (serial)
+.It Li mousesystems
+Mouse systems Corp.\& mouse (serial)
+.It Li mmseries
+MM Series mouse (serial)
+.It Li logitech
+Logitech mouse (serial)
+.It Li busmouse
+A bus mouse
+.It Li mouseman
+Logitech MouseMan and TrackMan (serial)
+.It Li glidepoint
+ALPS GlidePoint (serial)
+.It Li thinkingmouse
+Kensington ThinkingMouse (serial)
+.It Li ps/2
+PS/2 mouse
+.It Li mmhittab
+MM HitTablet (serial)
+.It Li x10mouseremote
+X10 MouseRemote (serial)
+.It Li versapad
+Interlink VersaPad (serial)
+.El
+.Pp
+Even if the mouse is not in the above list, it may be compatible
+with one in the list.
+Refer to the manual page for
+.Xr moused 8
+for compatibility information.
+.Pp
+It should also be noted that while this is enabled, any
+other client of the mouse (such as an X server) should access
+the mouse through the virtual mouse device,
+.Pa /dev/sysmouse ,
+and configure it as a
+.Dq Li sysmouse
+type mouse, since all
+mouse data is converted to this single canonical format when
+using
+.Xr moused 8 .
+If the client program does not support the
+.Dq Li sysmouse
+type,
+specify the
+.Dq Li mousesystems
+type.
+It is the second preferred type.
+.It Va moused_port
+.Pq Vt str
+If
+.Va moused_enable
+is set to
+.Dq Li YES ,
+this is the actual port the mouse is on.
+It might be
+.Pa /dev/cuad0
+for a COM1 serial mouse,
+.Pa /dev/psm0
+for a PS/2 mouse or
+.Pa /dev/mse0
+for a bus mouse, for example.
+.It Va moused_flags
+.Pq Vt str
+If
+.Va moused_flags
+is set, its value is used as an additional set of flags to pass to the
+.Xr moused 8
+daemon.
+.It Va "moused_" Ns Ar XXX Ns Va "_flags"
+When
+.Va moused_nondefault_enable
+is enabled, and a
+.Xr moused 8
+daemon is started for a non-default port, the
+.Va "moused_" Ns Ar XXX Ns Va "_flags"
+set of options has precedence over and replaces the default
+.Va moused_flags (where
+.Ar XXX
+is the name of the non-default port, i.e.\&
+.Ar ums0 ) .
+By setting
+.Va "moused_" Ns Ar XXX Ns Va "_flags"
+it is possible to set up a different set of default flags for each
+.Xr moused 8
+instance.
+For example, you can use
+.Dq Li "-3"
+for the default
+.Va moused_flags
+to make your laptop's touchpad more comfortable to use,
+but an empty set of options for
+.Va moused_ums0_flags
+when your
+.Xr usb 4
+mouse has three or more buttons.
+.It Va mousechar_start
+.Pq Vt int
+If set to
+.Dq Li NO ,
+the default mouse cursor character range
+.Li 0xd0 Ns - Ns Li 0xd3
+is used,
+otherwise the range start is set
+to
+.Ar value
+character, see
+.Xr vidcontrol 1 .
+Use if the default range is occupied in the language code table.
+.It Va allscreens_flags
+.Pq Vt str
+If set,
+.Xr vidcontrol 1
+is run with these options for each of the virtual terminals
+.Pq Pa /dev/ttyv* .
+For example,
+.Dq Fl m Cm on
+will enable the mouse pointer on all virtual terminals
+if
+.Va moused_enable
+is set to
+.Dq Li YES .
+.It Va allscreens_kbdflags
+.Pq Vt str
+If set,
+.Xr kbdcontrol 1
+is run with these options for each of the virtual terminals
+.Pq Pa /dev/ttyv* .
+For example,
+.Dq Fl h Li 200
+will set the
+.Xr syscons 4
+scrollback (history) buffer to 200 lines.
+.It Va cron_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr cron 8
+daemon at system boot time.
+.It Va cron_program
+.Pq Vt str
+Path to
+.Xr cron 8
+(default
+.Pa /usr/sbin/cron ) .
+.It Va cron_flags
+.Pq Vt str
+If
+.Va cron_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to
+.Xr cron 8 .
+.It Va cron_dst
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable the special handling of transitions to and from the
+Daylight Saving Time in
+.Xr cron 8
+(equivalent to using the flag
+.Fl s ) .
+.It Va lpd_program
+.Pq Vt str
+Path to
+.Xr lpd 8
+(default
+.Pa /usr/sbin/lpd ) .
+.It Va lpd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr lpd 8
+daemon at system boot time.
+.It Va lpd_flags
+.Pq Vt str
+If
+.Va lpd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr lpd 8
+daemon.
+.It Va chkprintcap_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run the
+.Xr chkprintcap 8
+command before starting the
+.Xr lpd 8
+daemon.
+.It Va chkprintcap_flags
+.Pq Vt str
+If
+.Va lpd_enable
+and
+.Va chkprintcap_enable
+are set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr chkprintcap 8
+program.
+The default is
+.Dq Li -d ,
+which causes missing directories to be created.
+.It Va mta_start_script
+.Pq Vt str
+This variable specifies the full path to the script to run to start
+a mail transfer agent.
+The default is
+.Pa /etc/rc.sendmail .
+The
+.Va sendmail_*
+variables which
+.Pa /etc/rc.sendmail
+uses are documented in the
+.Xr rc.sendmail 8
+manual page.
+.It Va dumpdev
+.Pq Vt str
+Indicates the device (usually a swap partition) to which a crash dump
+should be written in the event of a system crash.
+If the value of this variable is
+.Dq Li AUTO ,
+the first suitable swap device listed in
+.Pa /etc/fstab
+will be used as dump device.
+Otherwise, the value of this variable is passed as the argument to
+.Xr dumpon 8 .
+To disable crash dumps, set this variable to
+.Dq Li NO .
+.It Va dumpdir
+.Pq Vt str
+When the system reboots after a crash and a crash dump is found on the
+device specified by the
+.Va dumpdev
+variable,
+.Xr savecore 8
+will save that crash dump and a copy of the kernel to the directory
+specified by the
+.Va dumpdir
+variable.
+The default value is
+.Pa /var/crash .
+Set to
+.Dq Li NO
+to not run
+.Xr savecore 8
+at boot time when
+.Va dumpdir
+is set.
+.It Va savecore_flags
+.Pq Vt str
+If crash dumps are enabled, these are the flags to pass to the
+.Xr savecore 8
+utility.
+.It Va quota_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to turn on user and group disk quotas on system startup via the
+.Xr quotaon 8
+command for all file systems marked as having quotas enabled in
+.Pa /etc/fstab .
+The kernel must be built with
+.Cd "options QUOTA"
+for disk quotas to function.
+.It Va check_quotas
+.Pq Vt bool
+Set to
+.Dq Li YES
+to enable user and group disk quota checking via the
+.Xr quotacheck 8
+command.
+.It Va quotacheck_flags
+.Pq Vt str
+If
+.Va quota_enable
+is set to
+.Dq Li YES ,
+and
+.Va check_quotas
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr quotacheck 8
+utility.
+The default is
+.Dq Li "-a" ,
+which checks quotas for all file systems with quotas enabled in
+.Pa /etc/fstab .
+.It Va quotaon_flags
+.Pq Vt str
+If
+.Va quota_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr quotaon 8
+utility.
+The default is
+.Dq Li "-a" ,
+which enables quotas for all file systems with quotas enabled in
+.Pa /etc/fstab .
+.It Va quotaoff_flags
+.Pq Vt str
+If
+.Va quota_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr quotaoff 8
+utility when shutting down the quota system.
+The default is
+.Dq Li "-a" ,
+which disables quotas for all file systems with quotas enabled in
+.Pa /etc/fstab .
+.It Va accounting_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to enable system accounting through the
+.Xr accton 8
+facility.
+.It Va ibcs2_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to enable iBCS2 (SCO) binary emulation at system initial boot
+time.
+.It Va ibcs2_loaders
+.Pq Vt str
+If not set to
+.Dq Li NO
+and if
+.Va ibcs2_enable
+is set to
+.Dq Li YES ,
+this specifies a list of additional iBCS2 loaders to enable.
+.It Va linux_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to enable Linux/ELF binary emulation at system initial
+boot time.
+.It Va svr4_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable SysVR4 emulation at boot time.
+.It Va sysvipc_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+load System V IPC primitives at boot time.
+.It Va clear_tmp_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to have
+.Pa /tmp
+cleaned at startup.
+.It Va clear_tmp_X
+.Pq Vt bool
+Set to
+.Dq Li NO
+to disable removing of X11 lock files,
+and the removal and (secure) recreation
+of the various socket directories for X11
+related programs.
+.It Va ldconfig_paths
+.Pq Vt str
+Set to the list of shared library paths to use with
+.Xr ldconfig 8 .
+NOTE:
+.Pa /usr/lib
+will always be added first, so it need not appear in this list.
+.It Va ldconfig32_paths
+.Pq Vt str
+Set to the list of 32-bit compatibility shared library paths to
+use with
+.Xr ldconfig 8 .
+.It Va ldconfig_paths_aout
+.Pq Vt str
+Set to the list of shared library paths to use with
+.Xr ldconfig 8
+legacy
+.Xr a.out 5
+support.
+.It Va ldconfig_insecure
+.Pq Vt bool
+The
+.Xr ldconfig 8
+utility normally refuses to use directories
+which are writable by anyone except root.
+Set this variable to
+.Dq Li YES
+to disable that security check during system startup.
+.It Va ldconfig_local_dirs
+.Pq Vt str
+Set to the list of local
+.Xr ldconfig 8
+directories.
+The names of all files in the directories listed will be
+passed as arguments to
+.Xr ldconfig 8 .
+.It Va ldconfig_local32_dirs
+.Pq Vt str
+Set to the list of local 32-bit compatibility
+.Xr ldconfig 8
+directories.
+The names of all files in the directories listed will be
+passed as arguments to
+.Dq Nm ldconfig Fl 32 .
+.It Va kern_securelevel_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to set the kernel security level at system startup.
+.It Va kern_securelevel
+.Pq Vt int
+The kernel security level to set at startup.
+The allowed range of
+.Ar value
+ranges from \-1 (the compile time default) to 3 (the
+most secure).
+See
+.Xr init 8
+for the list of possible security levels and their effect
+on system operation.
+.It Va sshd_program
+.Pq Vt str
+Path to the SSH server program
+.Pa ( /usr/sbin/sshd
+is the default).
+.It Va sshd_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to start
+.Xr sshd 8
+at system boot time.
+.It Va sshd_flags
+.Pq Vt str
+If
+.Va sshd_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr sshd 8
+daemon.
+.It Va ftpd_program
+.Pq Vt str
+Path to the FTP server program
+.Pa ( /usr/libexec/ftpd
+is the default).
+.It Va ftpd_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to start
+.Xr ftpd 8
+as a stand-alone daemon at system boot time.
+.It Va ftpd_flags
+.Pq Vt str
+If
+.Va ftpd_enable
+is set to
+.Dq Li YES ,
+these are the additional flags to pass to the
+.Xr ftpd 8
+daemon.
+.It Va watchdogd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+start the
+.Xr watchdogd 8
+daemon at boot time.
+This requires that the kernel have been compiled with a
+.Xr watchdog 4
+compatible device.
+.It Va watchdogd_flags
+.Pq Vt str
+If
+.Va watchdogd_enable
+is set to
+.Dq Li YES ,
+these are the flags passed to the
+.Xr watchdogd 8
+daemon.
+.It Va performance_cx_lowest
+.Pq Vt str
+CPU idle state to use while on AC power.
+The string
+.Dq Li LOW
+indicates that
+.Xr acpi 4
+should use the lowest power state available while
+.Dq Li HIGH
+indicates that the lowest latency state (less power savings) should be used.
+.It Va performance_cpu_freq
+.Pq Vt str
+CPU clock frequency to use while on AC power.
+The string
+.Dq Li LOW
+indicates that
+.Xr cpufreq 4
+should use the lowest frequency available while
+.Dq Li HIGH
+indicates that the highest frequency (less power savings) should be used.
+.It Va economy_cx_lowest
+.Pq Vt str
+CPU idle state to use when off AC power.
+The string
+.Dq Li LOW
+indicates that
+.Xr acpi 4
+should use the lowest power state available while
+.Dq Li HIGH
+indicates that the lowest latency state (less power savings) should be used.
+.It Va economy_cpu_freq
+.Pq Vt str
+CPU clock frequency to use when off AC power.
+The string
+.Dq Li LOW
+indicates that
+.Xr cpufreq 4
+should use the lowest frequency available while
+.Dq Li HIGH
+indicates that the highest frequency (less power savings) should be used.
+.It Va jail_enable
+.Pq Vt bool
+If set to
+.Dq Li NO ,
+any configured jails will not be started.
+.It Va jail_list
+.Pq Vt str
+A space separated list of names for jails.
+This is purely a configuration aid to help identify and
+configure multiple jails.
+The names specified in this list will be used to
+identify settings common to an instance of a jail.
+Assuming that the jail in question was named
+.Li vjail ,
+you would have the following dependent variables:
+.Bd -literal
+jail_vjail_hostname="jail.example.com"
+jail_vjail_ip="192.168.1.100"
+jail_vjail_rootdir="/var/jails/vjail/root"
+.Ed
+.Pp
+.It Va jail_flags
+.Pq Vt str
+Unset by default.
+When set, use as default value for
+.Va jail_ Ns Ao Ar jname Ac Ns Va _flags
+for every jail in
+.Va jail_list .
+.It Va jail_interface
+.Pq Vt str
+Unset by default.
+When set, use as default value for
+.Va jail_ Ns Ao Ar jname Ac Ns Va _interface
+for every jail in
+.Va jail_list .
+.It Va jail_fstab
+.Pq Vt str
+Unset by default.
+When set, use as default value for
+.Va jail_ Ns Ao Ar jname Ac Ns Va _fstab
+for every jail in
+.Va jail_list .
+.It Va jail_mount_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+sets
+.Va jail_ Ns Ao Ar jname Ac Ns Va _mount_enable
+to
+.Dq Li YES
+by default for every jail in
+.Va jail_list .
+.It Va jail_devfs_ruleset
+.Pq Vt str
+Unset by default.
+When set, sets
+.Va jail_ Ns Ao Ar jname Ac Ns Va _devfs_ruleset
+to given value for every jail in
+.Va jail_list .
+.It Va jail_devfs_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+sets
+.Va jail_ Ns Ao Ar jname Ac Ns Va _devfs_enable
+to
+.Dq Li YES
+by default for every jail in
+.Va jail_list .
+.It Va jail_fdescfs_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+sets
+.Va jail_ Ns Ao Ar jname Ac Ns Va _fdescfs_enable
+to
+.Dq Li YES
+by default for every jail in
+.Va jail_list .
+.It Va jail_procfs_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+sets
+.Va jail_ Ns Ao Ar jname Ac Ns Va _fdescfs_enable
+to
+.Dq Li YES
+by default for every jail in
+.Va jail_list .
+.It Va jail_exec_start
+.Pq Vt str
+Unset by default.
+When set, use as default value for
+.Va jail_ Ns Ao Ar jname Ac Ns Va _exec_start
+for every jail in
+.Va jail_list .
+.It Va jail_exec_afterstart Ns Aq Ar N
+.Pq Vt str
+Unset by default.
+When set, use as default value for
+.Va jail_ Ns Ao Ar jname Ac Ns Va _exec_afterstart Ns Aq Ar N
+for every jail in
+.Va jail_list .
+.It Va jail_exec_stop
+Unset by default.
+When set, use as default value for
+.Va jail_ Ns Ao Ar jname Ac Ns Va _exec_stop
+for every jail in
+.Va jail_list .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _rootdir
+.Pq Vt str
+Unset by default.
+Set to the root directory used by jail
+.Va jname .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _hostname
+.Pq Vt str
+Unset by default.
+Set to the fully qualified domain name (FQDN) assigned to jail
+.Va jname .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _ip
+.Pq Vt str
+Unset by default.
+Set to the IP address assigned to jail
+.Va jname .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _flags
+.Pq Vt str
+Set to
+.Dq Li -l -U root
+by default.
+These are flags to pass to
+.Xr jail .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _interface
+.Pq Vt str
+Unset by default.
+When set, sets the interface to use when setting IP address alias.
+Note that the alias is created at jail startup and removed at jail shutdown.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _netmask
+.Pq Vt str
+Set to
+.Li 255.255.255.255
+by default.
+This is the IP netmask to use when setting IP address alias.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _fib
+.Pq Vt str
+Unset by default.
+When set, the jail is started with the specified forwarding table (sometimes
+referred to as a routing table) via
+.Xr setfib 1 .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _fstab
+.Pq Vt str
+Set to
+.Pa /etc/fstab. Ns Aq Ar jname
+by default.
+This is the file system information file to use for jail
+.Va jname .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _mount_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+mount all file systems from
+.Va jail_ Ns Ao Ar jname Ac Ns Va _fstab
+at jail startup.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _devfs_ruleset
+.Pq Vt str
+Unset by default.
+When set, defines the device file system ruleset file to use for jail
+.Va jname .
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _devfs_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+mount the device file system inside jail
+.Ar jname
+at jail startup.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _fdescfs_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+mount the file-descriptor file system inside jail
+.Ar jname
+at jail startup.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _procfs_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+by default.
+When set to
+.Dq Li YES ,
+mount the process file system inside jail
+.Ar jname
+at jail startup.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _exec_start
+.Pq Vt str
+Set to
+.Dq Li /bin/sh /etc/rc
+by default.
+This is the command executed at jail startup.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _exec_afterstart Ns Aq Ar N
+.Pq Vt str
+Unset by default.
+This is the command run as
+.Ar N Ns
+th command
+after jail startup, where
+.Ar N
+is 1, 2, and so on.
+.It Va jail_ Ns Ao Ar jname Ac Ns Va _exec_stop
+.Pq Vt str
+Set to
+.Dq Li /bin/sh /etc/rc.shutdown
+by default.
+This is the command executed at jail shutdown.
+.It Va jail_set_hostname_allow
+.Pq Vt bool
+If set to
+.Dq Li NO ,
+do not allow the root user in a jail to set its hostname.
+.It Va jail_socket_unixiproute_only
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+do not allow any sockets,
+besides UNIX/IP/route sockets,
+to be used within a jail.
+.It Va jail_sysvipc_allow
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+allow applications within a jail to use System V IPC.
+.\" -----------------------------------------------------
+.It Va harvest_interrupt
+.Pq Vt bool
+Set to
+.Dq Li YES
+to use hardware interrupts as an entropy source.
+Refer to
+.Xr random 4
+for more information.
+.It Va harvest_ethernet
+.Pq Vt bool
+Set to
+.Dq Li YES
+to use LAN traffic as an entropy source.
+Refer to
+.Xr random 4
+for more information.
+.It Va harvest_p_to_p
+.Pq Vt bool
+Set to
+.Dq Li YES
+to use serial line traffic as an entropy source.
+Refer to
+.Xr random 4
+for more information.
+.It Va entropy_dir
+.Pq Vt str
+Set to
+.Dq Li NO
+to disable caching entropy via
+.Xr cron 8 .
+Otherwise set to the directory used to store entropy files in.
+.It Va entropy_file
+.Pq Vt str
+Set to
+.Dq Li NO
+to disable caching entropy through reboots.
+Otherwise set to the filename used to store cached entropy through
+reboots.
+This file should be located on the root file system to seed the
+.Xr random 4
+device as early as possible in the boot process.
+.It Va entropy_save_sz
+.Pq Vt int
+Size of the entropy cache files saved by
+.Nm save-entropy
+periodically.
+.It Va entropy_save_num
+.Pq Vt int
+Number of entropy cache files to save by
+.Nm save-entropy
+periodically.
+.It Va ipsec_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to run
+.Xr setkey 8
+on
+.Va ipsec_file
+at boot time.
+.It Va ipsec_file
+.Pq Vt str
+Configuration file for
+.Xr setkey 8 .
+.It Va dmesg_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to save
+.Xr dmesg 8
+to
+.Pa /var/run/dmesg.boot
+on boot.
+.It Va rcshutdown_timeout
+.Pq Vt int
+If set, start a watchdog timer in the background which will terminate
+.Pa rc.shutdown
+if
+.Xr shutdown 8
+has not completed within the specified time (in seconds).
+Notice that in addition to this soft timeout,
+.Xr init 8
+also applies a hard timeout for the execution of
+.Pa rc.shutdown .
+This is configured via
+.Xr sysctl 8
+variable
+.Va kern.init_shutdown_timeout
+and defaults to 120 seconds.
+Setting the value of
+.Va rcshutdown_timeout
+to more than 120 seconds will have no effect until the
+.Xr sysctl 8
+variable
+.Va kern.init_shutdown_timeout
+is also increased.
+.It Va virecover_enable
+.Pq Vt bool
+Set to
+.Dq Li NO
+to prevent the system from trying to
+recover pre-maturely terminated
+.Xr vi 1
+sessions.
+.It Va ugidfw_enable
+.Pq Vt bool
+Set to
+.Dq Li YES
+to load the
+.Xr mac_bsdextended 4
+module upon system initialization and load a default
+ruleset file.
+.It Va bsdextended_script
+.Pq Vt str
+The default
+.Xr mac_bsdextended 4
+ruleset file to load.
+The default value of this variable is
+.Pa /etc/rc.bsdextended .
+.It Va newsyslog_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+run
+.Xr newsyslog 8
+command at startup.
+.It Va newsyslog_flags
+.Pq Vt str
+If
+.Va newsyslog_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr newsyslog 8
+program.
+The default is
+.Dq Li -CN ,
+which causes log files flagged with a
+.Cm C
+to be created.
+.It Va mdconfig_md Ns Aq Ar X
+.Pq Vt str
+Arguments to
+.Xr mdconfig 8
+for
+.Xr md 4
+device
+.Ar X .
+At minimum a
+.Fl t Ar type
+must be specified and either a
+.Fl s Ar size
+for malloc or swap backed
+.Xr md 4
+devices or a
+.Fl f Ar file
+for vnode backed
+.Xr md 4
+devices.
+Note that
+.Va mdconfig_md Ns Aq Ar X
+variables are evaluated until one variable is unset or null.
+.It Va mdconfig_md Ns Ao Ar X Ac Ns Va _newfs
+.Pq Vt str
+Optional arguments passed to
+.Xr newfs 8
+to initialize
+.Xr md 4
+device
+.Ar X .
+.It Va mdconfig_md Ns Ao Ar X Ac Ns Va _owner
+.Pq Vt str
+An ownership specification passed to
+.Xr chown 8
+after the specified
+.Xr md 4
+device
+.Ar X
+has been mounted.
+Both the
+.Xr md 4
+device and the mount point will be changed.
+.It Va mdconfig_md Ns Ao Ar X Ac Ns Va _perms
+.Pq Vt str
+A mode string passed to
+.Xr chmod 1
+after the specified
+.Xr md 4
+device
+.Ar X
+has been mounted.
+Both the
+.Xr md 4
+device and the mount point will be changed.
+.It Va mdconfig_md Ns Ao Ar X Ac Ns Va _files
+.Pq Vt str
+Files to be copied to the mount point of the
+.Xr md 4
+device
+.Ar X
+after it has been mounted.
+.It Va mdconfig_md Ns Ao Ar X Ac Ns Va _cmd
+.Pq Vt str
+Command to execute after the specified
+.Xr md 4
+device
+.Ar X
+has been mounted.
+Note that the command is passed to
+.Ic eval
+and that both
+.Va _dev
+and
+.Va _mp
+variables can be used to reference respectively the
+.Xr md 4
+device and the mount point.
+Assuming that the
+.Xr md 4
+device is
+.Li md0 ,
+one could set the following:
+.Bd -literal
+mdconfig_md0_cmd="tar xfzC /var/file.tgz \e${_mp}"
+.Ed
+.It Va ramdisk_units
+.Pq Vt str
+A list of one or more ramdisk units to configure with
+.Xr mdconfig 8
+and
+.Xr newfs 8
+in time to be mounted from
+.Xr fstab 5 .
+Each listed unit
+.Ar X
+must specify at least a
+.Ar type
+in a
+.Va ramdisk_ Ns Ao Ar X Ac Ns Va _config
+variable.
+Note that this way to configure ramdisks has been deprecated
+in favor of new
+.Va mdconfig_md*
+variables (see above).
+.It Va ramdisk_ Ns Ao Ar X Ac Ns Va _config
+.Pq Vt str
+Arguments to
+.Xr mdconfig 8
+for ramdisk
+.Ar X .
+At minimum a
+.Fl t Ar type
+must be specified, where
+.Ar type
+must be one of
+.Cm malloc
+or
+.Cm swap .
+.It Va ramdisk_ Ns Ao Ar X Ac Ns Va _newfs
+.Pq Vt str
+Optional arguments passed to
+.Xr newfs 8
+to initialize ramdisk
+.Ar X .
+.It Va ramdisk_ Ns Ao Ar X Ac Ns Va _owner
+.Pq Vt str
+An ownership specification passed to
+.Xr chown 8
+after the specified ramdisk unit
+.Ar X
+has been mounted.
+Both the
+.Xr md 4
+device and the mount point will be changed.
+.It Va ramdisk_ Ns Ao Ar X Ac Ns Va _perms
+.Pq Vt str
+A mode string passed to
+.Xr chmod 1
+after the specified ramdisk unit
+.Ar X
+has been mounted.
+Both the
+.Xr md 4
+device and the mount point will be changed.
+.It Va autobridge_interfaces
+.Pq Vt str
+Set to the list of bridge interfaces that will have newly arriving interfaces
+checked against to be automatically added.
+If not set to
+.Dq Li NO
+then for each whitespace separated
+.Ar element
+in the value, a
+.Va autobridge_ Ns Aq Ar element
+variable is assumed to exist which has a whitespace separated list of interface
+names to match, these names can use wildcards.
+For example:
+.Bd -literal
+autobridge_interfaces="bridge0"
+autobridge_bridge0="tap* dc0 vlan[345]"
+.Ed
+.It Va mixer_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable support for sound mixer.
+.It Va hcsecd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth security daemon.
+.It Va hcsecd_config
+.Pq Vt str
+Configuration file for
+.Xr hcsecd 8 .
+Default
+.Pa /etc/bluetooth/hcsecd.conf .
+.It Va sdpd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth Service Discovery Protocol daemon.
+.It Va sdpd_control
+.Pq Vt str
+Path to
+.Xr sdpd 8
+control socket.
+Default
+.Pa /var/run/sdp .
+.It Va sdpd_groupname
+.Pq Vt str
+Sets
+.Xr sdpd 8
+group to run as after it initializes.
+Default
+.Dq Li nobody .
+.It Va sdpd_username
+.Pq Vt str
+Sets
+.Xr sdpd 8
+user to run as after it initializes.
+Default
+.Dq Li nobody .
+.It Va bthidd_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth Human Interface Device daemon.
+.It Va bthidd_config
+.Pq Vt str
+Configuration file for
+.Xr bthidd 8 .
+Default
+.Pa /etc/bluetooth/bthidd.conf .
+.It Va bthidd_hids
+.Pq Vt str
+Path to a file, where
+.Xr bthidd 8
+will store information about known HID devices.
+Default
+.Pa /var/db/bthidd.hids .
+.It Va rfcomm_pppd_server_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+enable Bluetooth RFCOMM PPP wrapper daemon.
+.It Va rfcomm_pppd_server_profile
+.Pq Vt str
+The name of the profile to use from
+.Pa /etc/ppp/ppp.conf .
+Multiple profiles can be specified here.
+Also used to specify per-profile overrides.
+When the profile name contains any of the characters
+.Dq Li .-/+
+they are translated to
+.Dq Li _
+for the proposes of the override variable names.
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _bdaddr
+.Pq Vt str
+Overrides local address to listen on.
+By default
+.Xr rfcomm_pppd 8
+will listen on
+.Dq Li ANY
+address.
+The address can be specified as BD_ADDR or name.
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _channel
+.Pq Vt str
+Overrides local RFCOMM channel to listen on.
+By default
+.Xr rfcomm_pppd 8
+will listen on RFCOMM channel 1.
+Must set properly if multiple profiles used in the same time.
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _register_sp
+.Pq Vt bool
+Tells
+.Xr rfcomm_pppd 8
+if it should register Serial Port service on the speficied RFCOMM channel.
+Default
+.Dq Li NO .
+.It Va rfcomm_pppd_server_ Ns Ao Ar profile Ac Ns _register_dun
+.Pq Vt bool
+Tells
+.Xr rfcomm_pppd 8
+if it should register Dial-Up Networking service on the speficied
+RFCOMM channel.
+Default
+.Dq Li NO .
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /etc/defaults/rc.conf" -compact
+.It Pa /etc/defaults/rc.conf
+.It Pa /etc/rc.conf
+.It Pa /etc/rc.conf.local
+.El
+.Sh SEE ALSO
+.Xr catman 1 ,
+.Xr chmod 1 ,
+.Xr gdb 1 ,
+.Xr info 1 ,
+.Xr kbdcontrol 1 ,
+.Xr makewhatis 1 ,
+.Xr sh 1 ,
+.Xr vi 1 ,
+.Xr vidcontrol 1 ,
+.Xr bridge 4 ,
+.Xr dummynet 4 ,
+.Xr ip 4 ,
+.Xr ipf 4 ,
+.Xr ipfw 4 ,
+.Xr ipnat 4 ,
+.Xr kld 4 ,
+.Xr pf 4 ,
+.Xr pflog 4 ,
+.Xr pfsync 4 ,
+.Xr tcp 4 ,
+.Xr udp 4 ,
+.Xr exports 5 ,
+.Xr fstab 5 ,
+.Xr ipf 5 ,
+.Xr ipnat 5 ,
+.Xr motd 5 ,
+.Xr newsyslog.conf 5 ,
+.Xr pf.conf 5 ,
+.Xr accton 8 ,
+.Xr amd 8 ,
+.Xr apm 8 ,
+.Xr atm 8 ,
+.Xr bthidd 8 ,
+.Xr chkprintcap 8 ,
+.Xr chown 8 ,
+.Xr cron 8 ,
+.Xr dhclient 8 ,
+.Xr ftpd 8 ,
+.Xr geli 8 ,
+.Xr hcsecd 8 ,
+.Xr ifconfig 8 ,
+.Xr inetd 8 ,
+.Xr ipf 8 ,
+.Xr ipfw 8 ,
+.Xr ipnat 8 ,
+.Xr jail 8 ,
+.Xr kldxref 8 ,
+.Xr lpd 8 ,
+.Xr mdconfig 8 ,
+.Xr mdmfs 8 ,
+.Xr mixer 8 ,
+.Xr mountd 8 ,
+.Xr moused 8 ,
+.Xr mrouted 8 ,
+.Xr named 8 ,
+.Xr newfs 8 ,
+.Xr newsyslog 8 ,
+.Xr nfsd 8 ,
+.Xr ntpd 8 ,
+.Xr ntpdate 8 ,
+.Xr pfctl 8 ,
+.Xr pflogd 8 ,
+.Xr powerd 8 ,
+.Xr quotacheck 8 ,
+.Xr quotaon 8 ,
+.Xr rc 8 ,
+.Xr rc.sendmail 8 ,
+.Xr rfcomm_pppd 8 ,
+.Xr route 8 ,
+.Xr routed 8 ,
+.Xr rpcbind 8 ,
+.Xr rpc.lockd 8 ,
+.Xr rpc.statd 8 ,
+.Xr rwhod 8 ,
+.Xr savecore 8 ,
+.Xr sdpd 8 ,
+.Xr sshd 8 ,
+.Xr swapon 8 ,
+.Xr sysctl 8 ,
+.Xr syslogd 8 ,
+.Xr timed 8 ,
+.Xr yp 8 ,
+.Xr ypbind 8 ,
+.Xr ypserv 8 ,
+.Xr ypset 8
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Fx 2.2.2 .
+.Sh AUTHORS
+.An Jordan K. Hubbard .
diff --git a/share/man/man5/regdomain.5 b/share/man/man5/regdomain.5
new file mode 100644
index 0000000..f46a4af
--- /dev/null
+++ b/share/man/man5/regdomain.5
@@ -0,0 +1,48 @@
+.\" Copyright (c) 2008 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.
+.\"
+.\" 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$
+.Dd Apri 13, 2008
+.Dt REGDOMAIN 5
+.Os
+.Sh NAME
+.Nm regdomain.xml
+.Nd "802.11 wireless regulatory definitions"
+.Sh DESCRIPTION
+The
+.Nm
+file describes regulations for the operation of IEEE 802.11 wireless radios.
+.Pp
+This information is used by the
+.Xr ifconfig 8
+program to construct regulatory state for download to the system.
+This file should be changed only to reflect changes in regulations.
+.Sh FILES
+.Bl -tag -width /etc/regdomain.xml -compact
+.It Pa /etc/regdomain.xml
+XML database of 802.11 regulatory constraints
+.El
+.Sh SEE ALSO
+.Xr wlan 4
+.Xr ifconfig 8 ,
diff --git a/share/man/man5/reiserfs.5 b/share/man/man5/reiserfs.5
new file mode 100644
index 0000000..b7445a6
--- /dev/null
+++ b/share/man/man5/reiserfs.5
@@ -0,0 +1,84 @@
+.\"
+.\" Copyright (c) 2005 Jean-Sébastien Pédron
+.\" 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
+.\"
+.\" 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$
+.\"
+.Dd May 16, 2006
+.Dt REISERFS 5
+.Os
+.Sh NAME
+.Nm reiserfs
+.Nd "Reiser file system"
+.Sh SYNOPSIS
+To link into the kernel:
+.Bd -ragged -offset indent
+.Cd "options REISERFS"
+.Ed
+.Pp
+To load as a kernel loadable module:
+.Pp
+.Dl "kldload reiserfs"
+.Sh DESCRIPTION
+The
+.Nm
+driver will permit the
+.Fx
+kernel to access
+.Tn ReiserFS
+file systems.
+.Sh EXAMPLES
+To mount a
+.Nm
+volume located on
+.Pa /dev/ad1s1 :
+.Pp
+.Dl "mount -t reiserfs /dev/ad1s1 /mnt"
+.Sh SEE ALSO
+.Xr nmount 2 ,
+.Xr unmount 2 ,
+.Xr fstab 5 ,
+.Xr mount 8
+.Sh CAVEATS
+Currently, only read-only access is supported for ReiserFS volumes,
+writing to a volume is not supported.
+.Sh HISTORY
+The
+.Nm
+file system support
+first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The ReiserFS kernel implementation was written by
+.An Hans Reiser
+.Pq Pa http://www.namesys.com/ ,
+and ported to
+.Fx
+by
+.An Jean-S\['e]bastien P\['e]dron Aq dumbbell@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Craig Rodrigues Aq rodrigc@FreeBSD.org .
diff --git a/share/man/man5/remote.5 b/share/man/man5/remote.5
new file mode 100644
index 0000000..666608d
--- /dev/null
+++ b/share/man/man5/remote.5
@@ -0,0 +1,214 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)remote.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd October 20, 2003
+.Dt REMOTE 5
+.Os
+.Sh NAME
+.Nm remote
+.Nd remote host description file
+.Sh DESCRIPTION
+The systems known by
+.Xr tip 1
+and their attributes are stored in an
+.Tn ASCII
+file which
+is structured somewhat like the
+.Xr termcap 5
+file.
+Each line in the file provides a description for a single
+.Em system .
+Fields are separated by a colon (``:'').
+Lines ending in a \e character with an immediately following newline are
+continued on the next line.
+.Pp
+The first entry is the name(s) of the host system.
+If there is more
+than one name for a system, the names are separated by vertical bars.
+After the name of the system comes the fields of the description.
+A field name followed by an `=' sign indicates a string value.
+A field name followed by a `#' sign indicates a numeric value.
+.Pp
+Entries named ``tip*'' and ``cu*'' are used as default entries by
+.Xr tip 1 ,
+and the
+.Xr cu 1
+interface to
+.Nm tip ,
+as follows.
+When
+.Nm tip
+is invoked with only a phone number, it looks for an entry
+of the form ``tip300'', where 300 is the data rate with
+which the connection is to be made.
+When the
+.Nm cu
+interface is used, entries of the form ``cu300'' are used.
+.Sh CAPABILITIES
+Capabilities are either strings (str), numbers (num), or boolean
+flags (bool).
+A string capability is specified by
+.Em capability Ns Ar = Ns Em value ;
+for example, ``dv=/dev/harris''.
+A numeric capability is specified by
+.Em capability Ns Ar # Ns Em value ;
+for example, ``xa#99''.
+A boolean capability is specified by simply listing the capability.
+.Bl -tag -width indent
+.It Cm \&at
+(str)
+Auto call unit type.
+.It Cm \&br
+(num)
+The data rate (bits per second) used for communications on the
+serial port.
+When a modem is used, the data rate used to communicate
+with the remote modem may be different than this rate.
+This is a decimal number.
+The default rate is 9600 bits per second.
+.It Cm \&cm
+(str)
+An initial connection message to be sent to the remote host.
+For example, if a host is reached through a port selector, this
+might be set to the appropriate sequence required to switch to the host.
+.It Cm \&cu
+(str)
+Call unit if making a phone call.
+Default is the same as the `dv' field.
+.It Cm \&di
+(str)
+Disconnect message sent to the host when a disconnect is requested by
+the user.
+.It Cm \&du
+(bool)
+This host is on a dial-up line.
+.It Cm \&dv
+(str)
+.Ux
+device(s) to open to establish a connection.
+If this file refers to a terminal line,
+.Xr tip 1
+attempts to perform an exclusive open on the device to ensure only
+one user at a time has access to the port.
+.It Cm \&el
+(str)
+Characters marking an end-of-line.
+The default is
+.Dv NULL .
+`~' escapes are only
+recognized by
+.Nm tip
+after one of the characters in `el', or after a carriage-return.
+.It Cm \&fs
+(str)
+Frame size for transfers.
+The default frame size is equal to
+.Dv BUFSIZ .
+.It Cm \&hd
+(bool)
+The host uses half-duplex communication, local echo should be performed.
+.It Cm \&ie
+(str)
+Input end-of-file marks.
+The default is
+.Dv NULL .
+.It Cm \&oe
+(str)
+Output end-of-file string.
+The default is
+.Dv NULL .
+When
+.Nm tip
+is transferring a file, this
+string is sent at end-of-file.
+.It Cm \&pa
+(str)
+The type of parity to use when sending data
+to the host.
+This may be one of ``even'',
+``odd'', ``none'', ``zero'' (always set bit 8 to zero),
+``one'' (always set bit 8 to 1).
+The default is even parity.
+.It Cm \&pn
+(str)
+Telephone number(s) for this host.
+If the telephone number field contains an @ sign,
+.Nm tip
+searches the file
+.Pa /etc/phones
+file for a list of telephone numbers (see
+.Xr phones 5 ) .
+.It Cm \&tc
+(str)
+Indicates that the list of capabilities is continued in the named
+description.
+This is used primarily to share common capability information.
+.El
+.Sh FILES
+.Bl -tag -width /etc/remote -compact
+.It Pa /etc/remote
+The
+.Nm
+host description file resides in
+.Pa /etc .
+.El
+.Sh EXAMPLES
+Here is a short example showing the use of the capability continuation
+feature.
+It defines a 56k modem connection on the first serial port at 115200
+bits per second, no parity using the Hayes command set with standard
+line editing and end of file characters.
+The arpavax entry includes everything in the UNIX-57600 entry plus
+the phone number for arpavax (in this case an @ character so that it
+is retrieved from the environment).
+.Bd -literal
+UNIX-57600:\e
+:dv=/dev/cuad0:el=^D^U^C^S^Q^O@:oe=^D:du:at=hayes:br#115200:pa=none:
+arpavax|ax:\e
+:pn=\e@:tc=UNIX-57600
+.Ed
+.Sh SEE ALSO
+.Xr cu 1 ,
+.Xr tip 1 ,
+.Xr phones 5
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.2 .
+.Sh BUGS
+The
+.Xr tip 1
+utility uses its own notion of the serial ports data rate rather than the
+system default for a serial port.
diff --git a/share/man/man5/resolver.5 b/share/man/man5/resolver.5
new file mode 100644
index 0000000..5c196f3
--- /dev/null
+++ b/share/man/man5/resolver.5
@@ -0,0 +1,223 @@
+.\" Copyright (c) 1986, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)resolver.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd September 9, 2004
+.Dt RESOLVER 5
+.Os
+.Sh NAME
+.Nm resolver
+.Nd resolver configuration file
+.Sh SYNOPSIS
+.Nm resolv.conf
+.Sh DESCRIPTION
+The
+.Xr resolver 3
+is a set of routines in the C library
+which provide access to the Internet Domain Name System.
+The resolver configuration file contains information that is read
+by the resolver routines the first time they are invoked by a process.
+The file is designed to be human readable and contains a list of
+keywords with values that provide various types of resolver information.
+.Pp
+On a normally configured system this file should not be necessary.
+The only name server to be queried will be on the local machine,
+the domain name is determined from the host name,
+and the domain search path is constructed from the domain name.
+.Pp
+The different configuration options are:
+.Bl -tag -width nameserver
+.It Sy nameserver
+Internet address (in dot notation) of a name server
+that the resolver should query.
+Up to
+.Dv MAXNS
+(currently 3) name servers may be listed,
+one per keyword.
+If there are multiple servers,
+the resolver library queries them in the order listed.
+If no
+.Sy nameserver
+entries are present,
+the default is to use the name server on the local machine.
+(The algorithm used is to try a name server, and if the query times out,
+try the next, until out of name servers,
+then repeat trying all the name servers
+until a maximum number of retries are made).
+.It Sy domain
+Local domain name.
+Most queries for names within this domain can use short names
+relative to the local domain.
+If no
+.Sy domain
+entry is present, the domain is determined
+from the local host name returned by
+.Xr gethostname 3 ;
+the domain part is taken to be everything after the first
+.Ql \&. .
+Finally, if the host name does not contain a domain part, the root
+domain is assumed.
+.It Sy search
+Search list for host-name lookup.
+The search list is normally determined from the local domain name;
+by default, it contains only the local domain name.
+This may be changed by listing the desired domain search path
+following the
+.Sy search
+keyword with spaces or tabs separating
+the names.
+Most resolver queries will be attempted using each component
+of the search path in turn until a match is found.
+Note that this process may be slow and will generate a lot of network
+traffic if the servers for the listed domains are not local,
+and that queries will time out if no server is available
+for one of the domains.
+.Pp
+The search list is currently limited to six domains
+with a total of 256 characters.
+.It Sy sortlist
+Sortlist allows addresses returned by gethostbyname to be sorted.
+A sortlist is specified by IP address netmask pairs.
+The netmask is
+optional and defaults to the natural netmask of the net.
+The IP address
+and optional network pairs are separated by slashes.
+Up to 10 pairs may
+be specified.
+E.g.,
+.Pp
+.Dl "sortlist 130.155.160.0/255.255.240.0 130.155.0.0"
+.It Sy options
+Options allows certain internal resolver variables to be modified.
+The syntax is
+.Pp
+\fBoptions\fP \fIoption\fP \fI...\fP
+.Pp
+where
+.Sy option
+is one of the following:
+.Pp
+.Bl -tag -width no_tld_query
+.It Sy debug
+sets
+.Dv RES_DEBUG
+in _res.options.
+.It Sy ndots: Ns Ar n
+sets a threshold for the number of dots which must appear in a name given to
+.Fn res_query
+(see
+.Xr resolver 3 )
+before an
+.Em initial absolute query
+will be made.
+The default for
+.Em n
+is
+.Dq 1 ,
+meaning that if there are any dots in a name, the name
+will be tried first as an absolute name before any
+.Em search list
+elements are appended to it.
+.It Sy timeout: Ns Ar n
+sets the initial amount of time the resolver will wait
+for a response from a remote
+name server before retrying the query via a different name server.
+The resolver may wait longer during subsequent retries
+of the current query since an exponential back-off is applied to
+the timeout value.
+Measured in seconds, the default is
+.Dv RES_TIMEOUT ,
+the allowed maximum is
+.Dv RES_MAXRETRANS
+(see
+.In resolv.h ) .
+.It Sy attempts: Ns Ar n
+sets the number of times the resolver will send a query to each of
+its name servers
+before giving up and returning an error to the calling application.
+The default is
+.Dv RES_DFLRETRY ,
+the allowed maximum is
+.Dv RES_MAXRETRY
+(see
+.In resolv.h ) .
+.It Sy no_tld_query
+tells the resolver not to attempt to resolve a top level domain name, that
+is, a name that contains no dots.
+Use of this option does not prevent
+the resolver from obeying the standard
+.Sy domain
+and
+.Sy search
+rules with the given name.
+.El
+.Pp
+Options may also be specified as a space or tab separated list using the
+.Dv RES_OPTIONS
+environment variable.
+.El
+.Pp
+The
+.Sy domain
+and
+.Sy search
+keywords are mutually exclusive.
+If more than one instance of these keywords is present,
+the last instance will override.
+.Pp
+The keyword and value must appear on a single line, and the keyword
+(e.g.\&
+.Sy nameserver )
+must start the line.
+The value follows the keyword, separated by white space.
+.Sh FILES
+.Bl -tag -width /etc/resolv.conf -compact
+.It Pa /etc/resolv.conf
+The file
+.Nm resolv.conf
+resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr gethostbyname 3 ,
+.Xr resolver 3 ,
+.Xr hostname 7 ,
+.Xr named 8
+.Rs
+.%T "Name Server Operations Guide for BIND"
+.Re
+.Sh HISTORY
+The
+.Nm resolv.conf
+file format appeared in
+.Bx 4.3 .
diff --git a/share/man/man5/services.5 b/share/man/man5/services.5
new file mode 100644
index 0000000..40320f9
--- /dev/null
+++ b/share/man/man5/services.5
@@ -0,0 +1,93 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)services.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt SERVICES 5
+.Os
+.Sh NAME
+.Nm services
+.Nd service name data base
+.Sh DESCRIPTION
+The
+.Nm
+file contains information regarding
+the known services available in the
+Internet.
+For each service a single line should be present
+with the following information:
+.Bd -unfilled -offset indent
+official service name
+port number
+protocol name
+aliases
+.Ed
+.Pp
+Items are separated by any number of blanks and/or tab characters.
+The port number and protocol name are considered a single
+.Em item ;
+a ``/'' is used to
+separate the port and protocol (e.g.\& ``512/tcp'').
+A ``#'' indicates the beginning of
+a comment; subsequent characters up to the end of the line are
+not interpreted by the routines which search the file.
+.Pp
+Service names may contain any printable
+character other than a field delimiter, newline,
+or comment character.
+.Sh NIS INTERACTION
+Access to the NIS
+.Pa services.byname
+map can be enabled by adding a single ``+'' on a line by itself
+in the
+.Pa /etc/services
+file.
+This causes the contents of the NIS services map to be inserted
+at the location where the ``+'' appears.
+.Sh FILES
+.Bl -tag -width /etc/services -compact
+.It Pa /etc/services
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr getservent 3
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.2 .
+.Sh BUGS
+A name server should be used instead of a static file.
diff --git a/share/man/man5/shells.5 b/share/man/man5/shells.5
new file mode 100644
index 0000000..585cc83
--- /dev/null
+++ b/share/man/man5/shells.5
@@ -0,0 +1,66 @@
+.\" Copyright (c) 1986, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)shells.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt SHELLS 5
+.Os
+.Sh NAME
+.Nm shells
+.Nd shell database
+.Sh DESCRIPTION
+The
+.Nm
+file contains a list of the shells on the system.
+For each shell a single line should be present, consisting of the
+shell's path, relative to root.
+.Pp
+A hash mark (``#'') indicates the beginning of a comment; subsequent
+characters up to the end of the line are not interpreted by the
+routines which search the file.
+Blank lines are also ignored.
+.Sh FILES
+.Bl -tag -width /etc/shells -compact
+.It Pa /etc/shells
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr getusershell 3
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 4.3 tahoe .
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
new file mode 100644
index 0000000..4d49f54
--- /dev/null
+++ b/share/man/man5/src.conf.5
@@ -0,0 +1,832 @@
+.\" DO NOT EDIT-- this file is automatically generated.
+.\" from FreeBSD: head/tools/build/options/makeman 174548 2007-12-12 16:39:32Z ru
+.\" $FreeBSD$
+.Dd September 23, 2008
+.Dt SRC.CONF 5
+.Os
+.Sh NAME
+.Nm src.conf
+.Nd "source build options"
+.Sh DESCRIPTION
+The
+.Nm
+file contains settings that will apply to every build involving the
+.Fx
+source tree; see
+.Xr build 7 .
+.Pp
+The
+.Nm
+file uses the standard makefile syntax.
+However,
+.Nm
+should not specify any dependencies to
+.Xr make 1 .
+Instead,
+.Nm
+is to set
+.Xr make 1
+variables that control the aspects of how the system builds.
+.Pp
+The default location of
+.Nm
+is
+.Pa /etc/src.conf ,
+though an alternative location can be specified in the
+.Xr make 1
+variable
+.Va SRCCONF .
+Overriding the location of
+.Nm
+may be necessary if the system-wide settings are not suitable
+for a particular build.
+For instance, setting
+.Va SRCCONF
+to
+.Pa /dev/null
+effectively resets all build controls to their defaults.
+.Pp
+The only purpose of
+.Nm
+is to control the compilation of the
+.Fx
+source code, which is usually located in
+.Pa /usr/src .
+As a rule, the system administrator creates
+.Nm
+when the values of certain control variables need to be changed
+from their defaults.
+.Pp
+In addition, control variables can be specified
+for a particular build via the
+.Fl D
+option of
+.Xr make 1
+or in environment; see
+.Xr environ 7 .
+.Pp
+The values of variables are ignored regardless of their setting;
+even if they would be set to
+.Dq Li FALSE
+or
+.Dq Li NO .
+Just the existence of an option will cause
+it to be honoured by
+.Xr make 1 .
+.Pp
+The following list provides a name and short description for variables
+that can be used for source builds.
+.Bl -tag -width indent
+.It Va WITHOUT_ACCT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_ACCT 183242 2008-09-21 22:02:26Z sam
+Set to not build process accounting tools such as
+.Xr ac 8
+and
+.Xr accton 8 .
+.It Va WITHOUT_ACPI
+.\" from FreeBSD: head/tools/build/options/WITHOUT_ACPI 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr acpiconf 8 ,
+.Xr acpidump 8
+and related programs.
+.It Va WITHOUT_AMD
+.\" from FreeBSD: head/tools/build/options/WITHOUT_AMD 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr amd 8 ,
+and related programs.
+.It Va WITHOUT_APM
+.\" from FreeBSD: head/tools/build/options/WITHOUT_APM 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr apm 8 ,
+.Xr apmd 8
+and related programs.
+.It Va WITHOUT_ASSERT_DEBUG
+.\" from FreeBSD: head/tools/build/options/WITHOUT_ASSERT_DEBUG 162215 2006-09-11 13:55:27Z ru
+Set to compile programs and libraries without the
+.Xr assert 3
+checks.
+.It Va WITHOUT_AT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_AT 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr at 1
+and related utilities.
+.It Va WITHOUT_ATM
+.\" from FreeBSD: head/tools/build/options/WITHOUT_ATM 156932 2006-03-21 07:50:50Z ru
+Set to not build
+programs and libraries related to ATM networking.
+.It Va WITHOUT_AUDIT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_AUDIT 156932 2006-03-21 07:50:50Z ru
+Set to not build audit support into system programs.
+.It Va WITHOUT_AUTHPF
+.\" from FreeBSD: head/tools/build/options/WITHOUT_AUTHPF 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr authpf 8 .
+.It Va WITHOUT_BIND
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BIND 156932 2006-03-21 07:50:50Z ru
+Setting this variable will prevent any part of BIND from being built.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_BIND_DNSSEC
+.It
+.Va WITHOUT_BIND_ETC
+.It
+.Va WITHOUT_BIND_LIBS_LWRES
+.It
+.Va WITHOUT_BIND_MTREE
+.It
+.Va WITHOUT_BIND_NAMED
+.It
+.Va WITHOUT_BIND_UTILS
+.El
+.It Va WITHOUT_BIND_DNSSEC
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_DNSSEC 156932 2006-03-21 07:50:50Z ru
+Set to avoid building or installing the DNSSEC related binaries,
+.Xr dnssec-keygen 8
+and
+.Xr dnssec-signzone 8 .
+.It Va WITHOUT_BIND_ETC
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_ETC 156932 2006-03-21 07:50:50Z ru
+Set to avoid installing the default files to
+.Pa /var/named/etc/namedb .
+.It Va WITH_BIND_LIBS
+.\" from FreeBSD: head/tools/build/options/WITH_BIND_LIBS 156932 2006-03-21 07:50:50Z ru
+Set to install BIND libraries and include files.
+.It Va WITHOUT_BIND_LIBS_LWRES
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_LIBS_LWRES 156932 2006-03-21 07:50:50Z ru
+Set to avoid installing the lightweight resolver library in
+.Pa /usr/lib .
+.It Va WITHOUT_BIND_MTREE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_MTREE 157717 2006-04-13 10:37:29Z ru
+Set to avoid running
+.Xr mtree 8
+to create the chroot directory structure under
+.Pa /var/named ,
+and avoid creating an
+.Pa /etc/namedb
+symlink to the chroot directory.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_BIND_ETC
+.El
+.It Va WITHOUT_BIND_NAMED
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_NAMED 156932 2006-03-21 07:50:50Z ru
+Set to avoid building or installing
+.Xr named 8 ,
+.Xr named.reload 8 ,
+.Xr named-checkconf 8 ,
+.Xr named-checkzone 8 ,
+.Xr rndc 8 ,
+and
+.Xr rndc-confgen 8 .
+.It Va WITHOUT_BIND_UTILS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BIND_UTILS 156932 2006-03-21 07:50:50Z ru
+Set to avoid building or installing the BIND userland utilities,
+.Xr dig 1 ,
+.Xr host 1 ,
+.Xr nslookup 1 ,
+and
+.Xr nsupdate 8 .
+.It Va WITHOUT_BLUETOOTH
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BLUETOOTH 156932 2006-03-21 07:50:50Z ru
+Set to not build Bluetooth related kernel modules, programs and libraries.
+.It Va WITHOUT_BOOT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BOOT 156932 2006-03-21 07:50:50Z ru
+Set to not build the boot blocks and loader.
+.It Va WITHOUT_BSD_CPIO
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BSD_CPIO 179813 2008-06-16 05:48:15Z dougb
+Set to not build the BSD licensed version of cpio based on
+.Xr libarchive 3 .
+.It Va WITHOUT_BSNMP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BSNMP 183306 2008-09-23 16:15:42Z sam
+Set to not build or install
+.Xr bsnmpd 1
+and related libraries and data files.
+.It Va WITHOUT_BZIP2
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BZIP2 174550 2007-12-12 16:43:17Z ru
+Set to not build contributed bzip2 software as a part of the base system.
+.Bf -symbolic
+The option has no effect yet.
+.Ef
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_BZIP2_SUPPORT
+.El
+.It Va WITHOUT_BZIP2_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_BZIP2_SUPPORT 166255 2007-01-26 10:19:08Z delphij
+Set to build some programs without optional bzip2 support.
+.It Va WITHOUT_CALENDAR
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CALENDAR 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr calendar 1 .
+.It Va WITHOUT_CDDL
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CDDL 163861 2006-11-01 09:02:11Z jb
+Set to not build code licensed under Sun's CDDL.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_ZFS
+.El
+.It Va WITHOUT_CPP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CPP 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr cpp 1 .
+.It Va WITHOUT_CRYPT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CRYPT 156932 2006-03-21 07:50:50Z ru
+Set to not build any crypto code.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_GSSAPI
+(can be overridden with
+.Va WITH_GSSAPI )
+.It
+.Va WITHOUT_KERBEROS
+.It
+.Va WITHOUT_KERBEROS_SUPPORT
+.It
+.Va WITHOUT_OPENSSH
+.It
+.Va WITHOUT_OPENSSL
+.El
+.It Va WITHOUT_CTM
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CTM 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr ctm 1
+and related utilities.
+.It Va WITHOUT_CVS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CVS 156932 2006-03-21 07:50:50Z ru
+Set to not build CVS.
+.It Va WITHOUT_CXX
+.\" from FreeBSD: head/tools/build/options/WITHOUT_CXX 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr g++ 1
+and related libraries.
+.It Va WITHOUT_DICT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_DICT 156932 2006-03-21 07:50:50Z ru
+Set to not build the Webster dictionary files.
+.It Va WITHOUT_DYNAMICROOT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_DYNAMICROOT 156932 2006-03-21 07:50:50Z ru
+Set this if you do not want to link
+.Pa /bin
+and
+.Pa /sbin
+dynamically.
+.It Va WITHOUT_EXAMPLES
+.\" from FreeBSD: head/tools/build/options/WITHOUT_EXAMPLES 156938 2006-03-21 09:06:24Z ru
+Set to avoid installing examples to
+.Pa /usr/share/examples/ .
+.It Va WITHOUT_FLOPPY
+.\" from FreeBSD: head/tools/build/options/WITHOUT_FLOPPY 183306 2008-09-23 16:15:42Z sam
+Set to not build or install programs
+for operating floppy disk driver.
+.It Va WITHOUT_FORTH
+.\" from FreeBSD: head/tools/build/options/WITHOUT_FORTH 156932 2006-03-21 07:50:50Z ru
+Set to build bootloaders without Forth support.
+.It Va WITHOUT_FP_LIBC
+.\" from FreeBSD: head/tools/build/options/WITHOUT_FP_LIBC 156932 2006-03-21 07:50:50Z ru
+Set to build
+.Nm libc
+without floating-point support.
+.It Va WITHOUT_FREEBSD_UPDATE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_FREEBSD_UPDATE 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr freebsd-update 8 .
+.It Va WITHOUT_GAMES
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GAMES 156932 2006-03-21 07:50:50Z ru
+Set to not build games.
+.It Va WITHOUT_GCOV
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GCOV 156932 2006-03-21 07:50:50Z ru
+Set to not build the
+.Xr gcov 1
+tool.
+.It Va WITHOUT_GDB
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GDB 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr gdb 1 .
+.It Va WITHOUT_GNU
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GNU 174550 2007-12-12 16:43:17Z ru
+Set to not build contributed GNU software as a part of the base system.
+This option can be useful if the system built must not contain any code
+covered by the GNU Public License due to legal reasons.
+.Bf -symbolic
+The option has no effect yet.
+.Ef
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_GNU_SUPPORT
+.El
+.It Va WITH_GNU_CPIO
+.\" from FreeBSD: head/tools/build/options/WITH_GNU_CPIO 179813 2008-06-16 05:48:15Z dougb
+Set to build GNU cpio as a part of the base system,
+and symlink
+.Pa /usr/bin/cpio
+to this version.
+(This will override the symlink to the BSD version.)
+.It Va WITHOUT_GNU_GREP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GNU_GREP 179813 2008-06-16 05:48:15Z dougb
+Set to not build GNU grep as a part of the base system.
+.It Va WITHOUT_GNU_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GNU_SUPPORT 156932 2006-03-21 07:50:50Z ru
+Set to build some programs without optional GNU support.
+.It Va WITHOUT_GPIB
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GPIB 156932 2006-03-21 07:50:50Z ru
+Set to not build GPIB bus support.
+.It Va WITHOUT_GROFF
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GROFF 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr groff 1 .
+.It Va WITHOUT_GSSAPI
+.\" from FreeBSD: head/tools/build/options/WITHOUT_GSSAPI 174548 2007-12-12 16:39:32Z ru
+Set to not build libgssapi.
+.It Va WITH_HESIOD
+.\" from FreeBSD: head/tools/build/options/WITH_HESIOD 156932 2006-03-21 07:50:50Z ru
+Set to build Hesiod support.
+.It Va WITHOUT_HTML
+.\" from FreeBSD: head/tools/build/options/WITHOUT_HTML 156932 2006-03-21 07:50:50Z ru
+Set to not build HTML docs.
+.It Va WITH_IDEA
+.\" from FreeBSD: head/tools/build/options/WITH_IDEA 156932 2006-03-21 07:50:50Z ru
+Set to build the IDEA encryption code.
+This code is patented in the USA and many European countries.
+It is
+.Em "YOUR RESPONSIBILITY"
+to determine if you can legally use IDEA.
+.It Va WITHOUT_INET6
+.\" from FreeBSD: head/tools/build/options/WITHOUT_INET6 156932 2006-03-21 07:50:50Z ru
+Set to not build
+programs and libraries related to IPv6 networking.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_INET6_SUPPORT
+.El
+.It Va WITHOUT_INET6_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_INET6_SUPPORT 156932 2006-03-21 07:50:50Z ru
+Set to build libraries, programs, and kernel modules without IPv6 support.
+.It Va WITHOUT_INFO
+.\" from FreeBSD: head/tools/build/options/WITHOUT_INFO 156932 2006-03-21 07:50:50Z ru
+Set to not make or install
+.Xr info 5
+files.
+.It Va WITHOUT_INSTALLLIB
+.\" from FreeBSD: head/tools/build/options/WITHOUT_INSTALLLIB 174497 2007-12-09 21:56:21Z dougb
+Set this if you do not want to install optional libraries.
+For example when creating a
+.Xr nanobsd 8
+image.
+.It Va WITHOUT_IPFILTER
+.\" from FreeBSD: head/tools/build/options/WITHOUT_IPFILTER 156932 2006-03-21 07:50:50Z ru
+Set to not build IP Filter package.
+.It Va WITHOUT_IPFW
+.\" from FreeBSD: head/tools/build/options/WITHOUT_IPFW 183242 2008-09-21 22:02:26Z sam
+Set to not build IPFW tools.
+.It Va WITHOUT_IPX
+.\" from FreeBSD: head/tools/build/options/WITHOUT_IPX 156932 2006-03-21 07:50:50Z ru
+Set to not build programs and libraries related to IPX networking.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_IPX_SUPPORT
+.It
+.Va WITHOUT_NCP
+.El
+.It Va WITHOUT_IPX_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_IPX_SUPPORT 156932 2006-03-21 07:50:50Z ru
+Set to build some programs without IPX support.
+.It Va WITHOUT_JAIL
+.\" from FreeBSD: head/tools/build/options/WITHOUT_JAIL 183242 2008-09-21 22:02:26Z sam
+Set to not build tools for the support of jails; e.g.
+.Xr jail 8 .
+.It Va WITHOUT_KERBEROS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_KERBEROS 174549 2007-12-12 16:42:03Z ru
+Set this if you do not want to build Kerberos 5 (KTH Heimdal).
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_GSSAPI
+(can be overridden with
+.Va WITH_GSSAPI )
+.It
+.Va WITHOUT_KERBEROS_SUPPORT
+.El
+.It Va WITHOUT_KERBEROS_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_KERBEROS_SUPPORT 156932 2006-03-21 07:50:50Z ru
+Set to build some programs without Kerberos support, like
+.Xr cvs 1 ,
+.Xr ssh 1 ,
+.Xr telnet 1 ,
+.Xr sshd 8 ,
+and
+.Xr telnetd 8 .
+.It Va WITHOUT_KVM
+.\" from FreeBSD: head/tools/build/options/WITHOUT_KVM 174550 2007-12-12 16:43:17Z ru
+Set to not build the
+.Nm libkvm
+library as a part of the base system.
+.Bf -symbolic
+The option has no effect yet.
+.Ef
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_KVM_SUPPORT
+.El
+.It Va WITHOUT_KVM_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_KVM_SUPPORT 170644 2007-06-13 02:08:04Z sepotvin
+Set to build some programs without optional
+.Nm libkvm
+support.
+.It Va WITHOUT_LEGACY_CONSOLE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LEGACY_CONSOLE 183242 2008-09-21 22:02:26Z sam
+Set to not build programs that support a legacy PC console; e.g.
+.Xr kbdcontrol 8
+and
+.Xr vidcontrol 8 .
+.It Va WITHOUT_LIB32
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LIB32 156932 2006-03-21 07:50:50Z ru
+On amd64, set to not build 32-bit library set and a
+.Nm ld-elf32.so.1
+runtime linker.
+.It Va WITHOUT_LIBPTHREAD
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LIBPTHREAD 172498 2007-10-09 17:53:33Z obrien
+Set to not build either of the
+.Nm libpthread
+providing libraries
+.Nm ( libthr
+(1:1) &
+.Nm libkse
+(M:N)).
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_BIND
+.It
+.Va WITHOUT_BIND_DNSSEC
+.It
+.Va WITHOUT_BIND_ETC
+.It
+.Va WITHOUT_BIND_LIBS_LWRES
+.It
+.Va WITHOUT_BIND_MTREE
+.It
+.Va WITHOUT_BIND_NAMED
+.It
+.Va WITHOUT_BIND_UTILS
+.It
+.Va WITHOUT_LIBTHR
+.El
+.It Va WITHOUT_LIBTHR
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LIBTHR 156932 2006-03-21 07:50:50Z ru
+Set to not build the
+.Nm libthr
+(1:1 threading)
+library.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_BIND
+.It
+.Va WITHOUT_BIND_DNSSEC
+.It
+.Va WITHOUT_BIND_ETC
+.It
+.Va WITHOUT_BIND_LIBS_LWRES
+.It
+.Va WITHOUT_BIND_MTREE
+.It
+.Va WITHOUT_BIND_NAMED
+.It
+.Va WITHOUT_BIND_UTILS
+.El
+.It Va WITHOUT_LOCALES
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LOCALES 156932 2006-03-21 07:50:50Z ru
+Set to not build localization files; see
+.Xr locale 1 .
+.It Va WITHOUT_LOCATE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LOCATE 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr locate 1
+and related programs.
+.It Va WITHOUT_LPR
+.\" from FreeBSD: head/tools/build/options/WITHOUT_LPR 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr lpr 1
+and related programs.
+.It Va WITHOUT_MAIL
+.\" from FreeBSD: head/tools/build/options/WITHOUT_MAIL 183242 2008-09-21 22:02:26Z sam
+Set to not build any mail support (MUA or MTA).
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_MAILWRAPPER
+.It
+.Va WITHOUT_SENDMAIL
+.El
+.It Va WITHOUT_MAILWRAPPER
+.\" from FreeBSD: head/tools/build/options/WITHOUT_MAILWRAPPER 156932 2006-03-21 07:50:50Z ru
+Set to not build the
+.Xr mailwrapper 8
+MTA selector.
+.It Va WITHOUT_MAKE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_MAKE 183242 2008-09-21 22:02:26Z sam
+Set to not install
+.Xr make 1
+and related support files.
+.It Va WITHOUT_MAN
+.\" from FreeBSD: head/tools/build/options/WITHOUT_MAN 156932 2006-03-21 07:50:50Z ru
+Set to not build manual pages.
+.It Va WITHOUT_NCP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NCP 156932 2006-03-21 07:50:50Z ru
+Set to not build programs, libraries, and kernel modules
+related to NetWare Core protocol.
+.It Va WITHOUT_NDIS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NDIS 183242 2008-09-21 22:02:26Z sam
+Set to not build programs and libraries
+related to NDIS emulation support.
+.It Va WITHOUT_NETCAT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NETCAT 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr nc 1
+utility.
+.It Va WITHOUT_NETGRAPH
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NETGRAPH 183242 2008-09-21 22:02:26Z sam
+Set to not build applications to support
+.Xr netgraph 4 .
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_NETGRAPH_SUPPORT
+.El
+.It Va WITHOUT_NETGRAPH_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NETGRAPH_SUPPORT 183305 2008-09-23 16:11:15Z sam
+Set to build libraries, programs, and kernel modules without netgraph support.
+.It Va WITHOUT_NIS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NIS 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr NIS 8
+support and related programs.
+If set, you might need to adopt your
+.Xr nsswitch.conf 5
+and remove
+.Sq nis
+entries.
+.It Va WITHOUT_NLS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NLS 156932 2006-03-21 07:50:50Z ru
+Set to not build NLS catalogs.
+.It Va WITHOUT_NLS_CATALOGS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NLS_CATALOGS 156932 2006-03-21 07:50:50Z ru
+Set to not build NLS catalog support for
+.Xr csh 1 .
+.It Va WITHOUT_NS_CACHING
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NS_CACHING 172803 2007-10-19 14:01:25Z ru
+Set to disable name caching in the
+.Pa nsswitch
+subsystem.
+The generic caching daemon,
+.Xr nscd 8 ,
+will not be built either if this option is set.
+.It Va WITHOUT_NTP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_NTP 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr ntpd 8
+and related programs.
+.It Va WITHOUT_OBJC
+.\" from FreeBSD: head/tools/build/options/WITHOUT_OBJC 156932 2006-03-21 07:50:50Z ru
+Set to not build Objective C support.
+.It Va WITHOUT_OPENSSH
+.\" from FreeBSD: head/tools/build/options/WITHOUT_OPENSSH 156932 2006-03-21 07:50:50Z ru
+Set to not build OpenSSH.
+.It Va WITHOUT_OPENSSL
+.\" from FreeBSD: head/tools/build/options/WITHOUT_OPENSSL 156932 2006-03-21 07:50:50Z ru
+Set to not build OpenSSL.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_GSSAPI
+(can be overridden with
+.Va WITH_GSSAPI )
+.It
+.Va WITHOUT_KERBEROS
+.It
+.Va WITHOUT_KERBEROS_SUPPORT
+.It
+.Va WITHOUT_OPENSSH
+.El
+.It Va WITHOUT_PAM
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PAM 174550 2007-12-12 16:43:17Z ru
+Set to not build PAM library and modules.
+.Bf -symbolic
+This option is deprecated and does nothing.
+.Ef
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_PAM_SUPPORT
+.El
+.It Va WITHOUT_PAM_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PAM_SUPPORT 156932 2006-03-21 07:50:50Z ru
+Set to build some programs without PAM support, particularly
+.Xr ftpd 8
+and
+.Xr ppp 8 .
+.It Va WITHOUT_PF
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PF 156932 2006-03-21 07:50:50Z ru
+Set to not build PF firewall package.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_AUTHPF
+.El
+.It Va WITHOUT_PKGTOOLS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PKGTOOLS 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr pkg_add 8
+and related programs.
+.It Va WITHOUT_PMC
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PMC 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr pmccontrol 8
+and related programs.
+.It Va WITHOUT_PORTSNAP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PORTSNAP 183242 2008-09-21 22:02:26Z sam
+Set to not build or install
+.Xr portsnap 8
+and related files.
+.It Va WITHOUT_PPP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PPP 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr ppp 8
+and related programs.
+.It Va WITHOUT_PROFILE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_PROFILE 156932 2006-03-21 07:50:50Z ru
+Set to avoid compiling profiled libraries.
+.It Va WITHOUT_QUOTAS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_QUOTAS 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr quota 8
+and related programs.
+.It Va WITHOUT_RCMDS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_RCMDS 156932 2006-03-21 07:50:50Z ru
+Disable building of the
+.Bx
+r-commands.
+This includes
+.Xr rlogin 1 ,
+.Xr rsh 1 ,
+etc.
+.It Va WITHOUT_RCS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_RCS 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr rcs 1
+and related utilities.
+.It Va WITHOUT_RESCUE
+.\" from FreeBSD: head/tools/build/options/WITHOUT_RESCUE 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr rescue 8 .
+.It Va WITHOUT_ROUTED
+.\" from FreeBSD: head/tools/build/options/WITHOUT_ROUTED 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr routed 8
+utility.
+.It Va WITHOUT_SENDMAIL
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SENDMAIL 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr sendmail 8
+and related programs.
+.It Va WITHOUT_SETUID_LOGIN
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SETUID_LOGIN 156932 2006-03-21 07:50:50Z ru
+Set this to disable the installation of
+.Xr login 1
+as a set-user-ID root program.
+.It Va WITHOUT_SHAREDOCS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SHAREDOCS 156932 2006-03-21 07:50:50Z ru
+Set to not build the
+.Bx 4.4
+legacy docs.
+.It Va WITHOUT_SLIP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SLIP 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr sliplogin 8
+and related programs.
+.It Va WITHOUT_SSP
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SSP 180012 2008-06-25 21:33:28Z ru
+Set to not build world with propolice stack smashing protection.
+.It Va WITHOUT_SYMVER
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SYMVER 169649 2007-05-17 05:03:24Z deischen
+Set to disable symbol versioning when building shared libraries.
+.It Va WITHOUT_SYSCONS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SYSCONS 156932 2006-03-21 07:50:50Z ru
+Set to not build
+.Xr syscons 4
+support files such as keyboard maps, fonts, and screen output maps.
+.It Va WITHOUT_SYSINSTALL
+.\" from FreeBSD: head/tools/build/options/WITHOUT_SYSINSTALL 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr sysinstall 8
+and related programs.
+.It Va WITHOUT_TCSH
+.\" from FreeBSD: head/tools/build/options/WITHOUT_TCSH 156932 2006-03-21 07:50:50Z ru
+Set to not build and install
+.Pa /bin/csh
+(which is
+.Xr tcsh 1 ) .
+.It Va WITHOUT_TELNET
+.\" from FreeBSD: head/tools/build/options/WITHOUT_TELNET 183242 2008-09-21 22:02:26Z sam
+Set to not build
+.Xr telnet 8
+and related programs.
+.It Va WITHOUT_TEXTPROC
+.\" from FreeBSD: head/tools/build/options/WITHOUT_TEXTPROC 183242 2008-09-21 22:02:26Z sam
+Set to not build
+programs used for text processing.
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_GROFF
+.El
+.It Va WITHOUT_TOOLCHAIN
+.\" from FreeBSD: head/tools/build/options/WITHOUT_TOOLCHAIN 174550 2007-12-12 16:43:17Z ru
+Set to not install
+programs used for program development,
+compilers, debuggers etc.
+.Bf -symbolic
+The option does not work for build targets.
+.Ef
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_GDB
+.El
+.It Va WITHOUT_USB
+.\" from FreeBSD: head/tools/build/options/WITHOUT_USB 156932 2006-03-21 07:50:50Z ru
+Set to not build USB-related programs and libraries.
+.It Va WITHOUT_WIRELESS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_WIRELESS 183242 2008-09-21 22:02:26Z sam
+Set to not build programs used for 802.11 wireless networks; especially
+.Xr wpa_supplicant 8
+and
+.Xr hostapd 8 .
+When set, it also enforces the following options:
+.Pp
+.Bl -item -compact
+.It
+.Va WITHOUT_WIRELESS_SUPPORT
+.El
+.It Va WITHOUT_WIRELESS_SUPPORT
+.\" from FreeBSD: head/tools/build/options/WITHOUT_WIRELESS_SUPPORT 183305 2008-09-23 16:11:15Z sam
+Set to build libraries, programs, and kernel modules without
+802.11 wireless support.
+.It Va WITHOUT_WPA_SUPPLICANT_EAPOL
+.\" from FreeBSD: head/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL 156932 2006-03-21 07:50:50Z ru
+Build
+.Xr wpa_supplicant 8
+without support for the IEEE 802.1X protocol and without
+support for EAP-PEAP, EAP-TLS, EAP-LEAP, and EAP-TTLS
+protocols (usable only via 802.1X).
+.It Va WITHOUT_ZFS
+.\" from FreeBSD: head/tools/build/options/WITHOUT_ZFS 168409 2007-04-06 02:13:30Z pjd
+Set to not build ZFS file system.
+.It Va WITHOUT_ZONEINFO
+.\" from FreeBSD: head/tools/build/options/WITHOUT_ZONEINFO 171994 2007-08-27 20:01:08Z remko
+Set to not build the timezone database
+.El
+.Sh FILES
+.Bl -tag -compact
+.It Pa /etc/src.conf
+.It Pa /usr/share/mk/bsd.own.mk
+.El
+.Sh SEE ALSO
+.Xr make 1 ,
+.Xr make.conf 5 ,
+.Xr build 7 ,
+.Xr ports 7
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+This manual page was autogenerated.
diff --git a/share/man/man5/stab.5 b/share/man/man5/stab.5
new file mode 100644
index 0000000..bbbd292
--- /dev/null
+++ b/share/man/man5/stab.5
@@ -0,0 +1,221 @@
+.\" Copyright (c) 1980, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)stab.5 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt STAB 5
+.Os
+.Sh NAME
+.Nm stab
+.Nd symbol table types
+.Sh SYNOPSIS
+.In stab.h
+.Sh DESCRIPTION
+The file
+.In stab.h
+defines some of the symbol table
+.Fa n_type
+field values for a.out files.
+These are the types for permanent symbols (i.e., not local labels, etc.)
+used by the old debugger
+.Em sdb
+and the Berkeley Pascal compiler
+.Xr pc 1 .
+Symbol table entries can be produced by the
+.Pa .stabs
+assembler directive.
+This allows one to specify a double-quote delimited name, a symbol type,
+one char and one short of information about the symbol, and an unsigned
+long (usually an address).
+To avoid having to produce an explicit label for the address field,
+the
+.Pa .stabd
+directive can be used to implicitly address the current location.
+If no name is needed, symbol table entries can be generated using the
+.Pa .stabn
+directive.
+The loader promises to preserve the order of symbol table entries produced
+by
+.Pa .stab
+directives.
+As described in
+.Xr a.out 5 ,
+an element of the symbol table
+consists of the following structure:
+.Bd -literal
+/*
+* Format of a symbol table entry.
+*/
+
+struct nlist {
+ union {
+ char *n_name; /* for use when in-core */
+ long n_strx; /* index into file string table */
+ } n_un;
+ unsigned char n_type; /* type flag */
+ char n_other; /* unused */
+ short n_desc; /* see struct desc, below */
+ unsigned n_value; /* address or offset or line */
+};
+.Ed
+.Pp
+The low bits of the
+.Fa n_type
+field are used to place a symbol into
+at most one segment, according to
+the following masks, defined in
+.In a.out.h .
+A symbol can be in none of these segments by having none of these segment
+bits set.
+.Bd -literal
+/*
+* Simple values for n_type.
+*/
+
+#define N_UNDF 0x0 /* undefined */
+#define N_ABS 0x2 /* absolute */
+#define N_TEXT 0x4 /* text */
+#define N_DATA 0x6 /* data */
+#define N_BSS 0x8 /* bss */
+
+#define N_EXT 01 /* external bit, or'ed in */
+.Ed
+.Pp
+The
+.Fa n_value
+field of a symbol is relocated by the linker,
+.Xr ld 1
+as an address within the appropriate segment.
+.Fa N_value
+fields of symbols not in any segment are unchanged by the linker.
+In addition, the linker will discard certain symbols, according to rules
+of its own, unless the
+.Fa n_type
+field has one of the following bits set:
+.Bd -literal
+/*
+* Other permanent symbol table entries have some of the N_STAB bits set.
+* These are given in <stab.h>
+*/
+
+#define N_STAB 0xe0 /* if any of these bits set, don't discard */
+.Ed
+.Pp
+This allows up to 112 (7 \(** 16) symbol types, split between the various
+segments.
+Some of these have already been claimed.
+The old symbolic debugger,
+.Em sdb ,
+uses the following n_type values:
+.Bd -literal
+#define N_GSYM 0x20 /* global symbol: name,,0,type,0 */
+#define N_FNAME 0x22 /* procedure name (f77 kludge): name,,0 */
+#define N_FUN 0x24 /* procedure: name,,0,linenumber,address */
+#define N_STSYM 0x26 /* static symbol: name,,0,type,address */
+#define N_LCSYM 0x28 /* .lcomm symbol: name,,0,type,address */
+#define N_RSYM 0x40 /* register sym: name,,0,type,register */
+#define N_SLINE 0x44 /* src line: 0,,0,linenumber,address */
+#define N_SSYM 0x60 /* structure elt: name,,0,type,struct_offset */
+#define N_SO 0x64 /* source file name: name,,0,0,address */
+#define N_LSYM 0x80 /* local sym: name,,0,type,offset */
+#define N_SOL 0x84 /* #included file name: name,,0,0,address */
+#define N_PSYM 0xa0 /* parameter: name,,0,type,offset */
+#define N_ENTRY 0xa4 /* alternate entry: name,linenumber,address */
+#define N_LBRAC 0xc0 /* left bracket: 0,,0,nesting level,address */
+#define N_RBRAC 0xe0 /* right bracket: 0,,0,nesting level,address */
+#define N_BCOMM 0xe2 /* begin common: name,, */
+#define N_ECOMM 0xe4 /* end common: name,, */
+#define N_ECOML 0xe8 /* end common (local name): ,,address */
+#define N_LENG 0xfe /* second stab entry with length information */
+.Ed
+.Pp
+where the comments give
+.Em sdb
+conventional use for
+.Pa .stab
+.Fa s
+and the
+.Fa n_name ,
+.Fa n_other ,
+.Fa n_desc ,
+and
+.Fa n_value
+fields
+of the given
+.Fa n_type .
+.Em Sdb
+uses the
+.Fa n_desc
+field to hold a type specifier in the form used
+by the Portable C Compiler,
+.Xr cc 1 ;
+see the header file
+.Pa pcc.h
+for details on the format of these type values.
+.Pp
+The Berkeley Pascal compiler,
+.Xr pc 1 ,
+uses the following
+.Fa n_type
+value:
+.Bd -literal
+#define N_PC 0x30 /* global pascal symbol: name,,0,subtype,line */
+.Ed
+.Pp
+and uses the following subtypes to do type checking across separately
+compiled files:
+.Bd -unfilled -offset indent
+1 source file name
+2 included file name
+3 global label
+4 global constant
+5 global type
+6 global variable
+7 global function
+8 global procedure
+9 external function
+10 external procedure
+11 library variable
+12 library routine
+.Ed
+.Sh SEE ALSO
+.Xr as 1 ,
+.Xr ld 1 ,
+.Xr a.out 5
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Bx 4.0 .
+.Sh BUGS
+More basic types are needed.
diff --git a/share/man/man5/style.Makefile.5 b/share/man/man5/style.Makefile.5
new file mode 100644
index 0000000..bdf2830
--- /dev/null
+++ b/share/man/man5/style.Makefile.5
@@ -0,0 +1,276 @@
+.\" Copyright (c) 2002-2003 David O'Brien <obrien@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.
+.\" 3. Neither the name of the author nor the names of any contributors
+.\" may 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 DAVID O'BRIEN 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$
+.\"
+.Dd January 8, 2005
+.Dt STYLE.MAKEFILE 5
+.Os
+.Sh NAME
+.Nm style.Makefile
+.Nd
+.Fx
+.Pa Makefile
+file style guide
+.Sh DESCRIPTION
+This file specifies the preferred style for makefiles in the
+.Fx
+source tree.
+.Bl -bullet
+.It
+All makefiles should have an SCM ID at the start of the file,
+followed by a blank line.
+.Bd -literal
+# $FreeBSD\&$
+
+.Ed
+.It
+.Cm .PATH :
+comes next if needed, and is spelled
+.Dq Li ".PATH: " ,
+with a single
+.Tn ASCII
+space after a colon.
+Do not use the
+.Va VPATH
+variable.
+.It
+Special variables (i.e.,
+.Va LIB , SRCS , MLINKS ,
+etc.) are listed in order of
+.Dq product ,
+then building and installing a binary.
+Special variables may also be listed in
+.Dq build
+order: i.e., ones for the primary program (or library) first.
+The general
+.Dq product
+order is:
+.Va PROG Ns / Ns Oo Va SH Oc Ns Va LIB Ns / Ns Va SCRIPTS
+.Va FILES
+.Va LINKS
+.Oo Va NO_ Oc Ns Va MAN
+.Va MLINKS
+.Va INCS
+.Va SRCS
+.Va WARNS
+.Va CFLAGS
+.Va DPADD
+.Va LDADD .
+The general
+.Dq build
+order is:
+.Va PROG Ns / Ns Oo Va SH Oc Ns Va LIB Ns / Ns Va SCRIPTS
+.Va SRCS
+.Va WARNS
+.Va CFLAGS
+.Va DPADD
+.Va LDADD
+.Va INCS
+.Va FILES
+.Va LINKS
+.Oo Va NO_ Oc Ns Va MAN
+.Va MLINKS .
+.It
+Omit
+.Va SRCS
+when using
+.In bsd.prog.mk
+and there is a single source file named the same as the
+.Va PROG .
+.It
+Omit
+.Va MAN
+when using
+.In bsd.prog.mk
+and the manual page is named the same as the
+.Va PROG ,
+and is in section 1.
+.It
+All variable assignments are spelled
+.Dq Va VAR Ns Ic = ,
+i.e., no space between the variable name and the
+.Ic = .
+Keep values sorted alphabetically, if possible.
+.It
+Do not use
+.Ic +=
+to set variables that are only set once
+(or to set variables for the first time).
+.It
+Do not use vertical whitespace in simple makefiles,
+but do use it to group locally related things in more complex/longer ones.
+.It
+.Va WARNS
+comes before
+.Va CFLAGS ,
+as it is basically a
+.Va CFLAGS
+modifier.
+It comes before
+.Va CFLAGS
+rather than after
+.Va CFLAGS
+so it does not get lost in a sea of
+.Va CFLAGS
+statements as
+.Va WARNS
+is an important thing.
+The usage of
+.Va WARNS
+is spelled
+.Dq Li "WARNS?= " ,
+so that it may be overridden on the command line or in
+.Xr make.conf 5 .
+.It
+.Dq Li "NO_WERROR= yes"
+should not be used,
+it defeats the purpose of
+.Va WARNS .
+It should only be used on the command line and in special circumstances.
+.It
+.Va CFLAGS
+is spelled
+.Dq Li "CFLAGS+= " .
+.It
+Listing
+.Fl D Ns 's
+before
+.Fl I Ns 's
+in
+.Va CFLAGS
+is preferred for alphabetical ordering and to make
+.Fl D Ns 's
+easier to see.
+The
+.Fl D Ns 's
+often affect conditional compilation,
+and
+.Fl I Ns 's
+tend to be quite long.
+Split long
+.Va CFLAGS
+settings between the
+.Fl D Ns 's
+and
+.Fl I Ns 's.
+.It
+Do not use GCCisms (such as
+.Fl g
+and
+.Fl Wall )
+in
+.Va CFLAGS .
+.It
+Typically, there is one
+.Tn ASCII
+tab between
+.Va VAR Ns Ic =
+and the value in order to start the value in column 9.
+An
+.Tn ASCII
+space is allowed for variable names that extend beyond column 9.
+A lack of whitespace is also allowed for very long variable names.
+.It
+.Ic .include In bsd.*.mk
+goes last.
+.It
+Do not use anachronisms like
+.Va $<
+and
+.Va $@ .
+Instead use
+.Va ${.IMPSRC}
+or
+.Va ${.ALLSRC}
+and
+.Va ${.TARGET} .
+.It
+To not build the
+.Dq foo
+part of the base system,
+use
+.Va NO_FOO ,
+not
+.Va NOFOO .
+.It
+To optionally build something in the base system,
+spell the knob
+.Va WITH_FOO
+not
+.Va WANT_FOO
+or
+.Va USE_FOO .
+The latter are reserved for the
+.Fx
+Ports Collection.
+.It
+For variables that are only checked with
+.Fn defined ,
+do not provide any fake value.
+.El
+.Pp
+The desire to express a logical grouping often means not obeying some of the
+above.
+.Sh EXAMPLES
+The simplest program
+.Pa Makefile
+is:
+.Bd -literal -offset indent
+# $FreeBSD\&$
+
+PROG= foo
+
+\&.include <bsd.prog.mk>
+.Ed
+.Pp
+The simplest library
+.Pa Makefile
+is:
+.Bd -literal -offset indent
+# $FreeBSD\&$
+
+LIB= foo
+SHLIB_MAJOR= 1
+MAN= libfoo.3
+SRCS= foo.c
+
+\&.include <bsd.lib.mk>
+.Ed
+.Sh SEE ALSO
+.Xr make 1 ,
+.Xr make.conf 5 ,
+.Xr style 9
+.Sh HISTORY
+This manual page is inspired from the same source as
+.Xr style 9
+manual page in
+.Fx .
+.Sh BUGS
+There are few hard and fast style rules here.
+The style of many things is too dependent on the context of the whole makefile,
+or the lines surrounding it.
diff --git a/share/man/man5/sysctl.conf.5 b/share/man/man5/sysctl.conf.5
new file mode 100644
index 0000000..0e69bcc
--- /dev/null
+++ b/share/man/man5/sysctl.conf.5
@@ -0,0 +1,84 @@
+.\" Copyright (c) 1999 Chris Costello <chris@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$
+.\"
+.Dd December 30, 1999
+.Dt SYSCTL.CONF 5
+.Os
+.Sh NAME
+.Nm sysctl.conf
+.Nd kernel state defaults
+.Sh DESCRIPTION
+The
+.Pa /etc/sysctl.conf
+file is read in when the system goes into multi-user mode to set default
+settings for the kernel.
+The
+.Pa /etc/sysctl.conf
+is in the format of the
+.Xr sysctl 8
+command, i.e.\&
+.Bd -literal -offset indent
+sysctl_mib=value
+.Ed
+.Pp
+Comments are denoted by a
+.Dq #
+at the beginning of a line.
+Comments can also exist at the end of a line,
+as seen in the
+.Sx EXAMPLES
+section, below.
+.Sh FILES
+.Bl -tag -width /etc/sysctl.conf -compact
+.It Pa /etc/sysctl.conf
+Initial settings for
+.Xr sysctl 8 .
+.El
+.Sh EXAMPLES
+To turn off logging of programs that exit due to fatal signals you may use
+a configuration like
+.Bd -literal -offset indent
+# Configure logging.
+kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11)
+.Ed
+.Sh SEE ALSO
+.Xr rc.conf 5 ,
+.Xr rc 8 ,
+.Xr sysctl 8
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Fx 4.0 .
+.Sh BUGS
+If loadable kernel modules are used to introduce additional kernel
+functionality and sysctls to manage that functionality,
+.Nm
+may be processed too early in the boot process to set those sysctls.
+For example, sysctls to manage the linux emulator cannot be set in
+.Nm
+if the linux emulator is loaded as a module rather than
+compiled into the kernel.
diff --git a/share/man/man5/tmpfs.5 b/share/man/man5/tmpfs.5
new file mode 100644
index 0000000..ef21a8c
--- /dev/null
+++ b/share/man/man5/tmpfs.5
@@ -0,0 +1,111 @@
+.\"
+.\" Copyright (c) 2007 Xin LI
+.\" 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
+.\"
+.\" THIS DOCUMENTATION 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$
+.\"
+.Dd June 12, 2008
+.Dt TMPFS 5
+.Os
+.Sh NAME
+.Nm tmpfs
+.Nd "efficient memory file system"
+.Sh SYNOPSIS
+To compile this driver into the kernel,
+place the following line in your
+kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options TMPFS"
+.Ed
+.Pp
+Alternatively, to load the driver as a
+module at boot time, place the following line in
+.Xr loader.conf 5 :
+.Bd -literal -offset indent
+tmpfs_load="YES"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver will permit the
+.Fx
+kernel to access
+.Tn tmpfs
+file systems.
+.Sh OPTIONS
+The following options are available when
+mounting
+.Nm
+file systems:
+.Bl -tag -width indent
+.It Cm gid
+root group id.
+.It Cm uid
+root user id.
+.It Cm mode
+permissions in octal format.
+.It Cm inodes
+maximum number of inodes.
+.It Cm size
+maximum size (in bytes) for the file system.
+.Sh EXAMPLES
+To mount a
+.Nm
+memory file system:
+.Pp
+.Dl "mount -t tmpfs tmpfs /tmp"
+.Sh SEE ALSO
+.Xr nmount 2 ,
+.Xr unmount 2 ,
+.Xr fstab 5 ,
+.Xr mount 8
+.Sh HISTORY
+The
+.Nm
+driver first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+kernel implementation was written by
+.An Julio M. Merino Vidal Aq jmmv@NetBSD.org
+as a Google SoC project.
+.Pp
+.An Rohit Jalan
+and others ported it from
+.Nx
+to
+.Fx .
+.Pp
+This manual page was written by
+.An Xin LI Aq delphij@FreeBSD.org .
+.Sh BUGS
+The
+.Nm
+kernel implementation is currently considered as
+an experimental feature.
+Some file system mount
+time options are not well supported.
diff --git a/share/man/man5/utmp.5 b/share/man/man5/utmp.5
new file mode 100644
index 0000000..c342041
--- /dev/null
+++ b/share/man/man5/utmp.5
@@ -0,0 +1,267 @@
+.\" Copyright (c) 1980, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)utmp.5 8.2 (Berkeley) 3/17/94
+.\" $FreeBSD$
+.\"
+.Dd November 14, 2001
+.Dt UTMP 5
+.Os
+.Sh NAME
+.Nm utmp ,
+.Nm wtmp ,
+.Nm lastlog
+.Nd login records
+.Sh SYNOPSIS
+.In sys/types.h
+.In utmp.h
+.Sh DESCRIPTION
+The file
+.In utmp.h
+declares the structures used to record information about current
+users in the file
+.Nm ,
+logins and logouts in the file
+.Nm wtmp ,
+and last logins in the file
+.Nm lastlog .
+The time stamps of date changes, shutdowns and reboots are also logged in
+the
+.Nm wtmp
+file.
+.Bd -literal -offset indent
+#define _PATH_UTMP "/var/run/utmp"
+#define _PATH_WTMP "/var/log/wtmp"
+#define _PATH_LASTLOG "/var/log/lastlog"
+
+#define UT_NAMESIZE 16
+#define UT_LINESIZE 8
+#define UT_HOSTSIZE 16
+
+struct lastlog {
+ int32_t ll_time; /* When user logged in */
+ char ll_line[UT_LINESIZE]; /* Terminal line name */
+ char ll_host[UT_HOSTSIZE]; /* Host user came from */
+};
+
+struct utmp {
+ char ut_line[UT_LINESIZE]; /* Terminal line name */
+ char ut_name[UT_NAMESIZE]; /* User's login name */
+ char ut_host[UT_HOSTSIZE]; /* Host user came from */
+ int32_t ut_time; /* When user logged in */
+};
+.Ed
+.Pp
+The
+.Nm lastlog
+file is a linear array of
+.Vt lastlog
+structures indexed by a user's
+.Tn UID .
+The
+.Nm
+file is a linear array of
+.Vt utmp
+structures indexed by a terminal line number
+(see
+.Xr ttyslot 3 ) .
+The
+.Nm wtmp
+file consists of
+.Vt utmp
+structures and is a binary log file,
+that is, grows linearly at its end.
+.Pp
+By default, each time a user logs in, the
+.Xr pam_lastlog 8
+program looks up the user's
+.Tn UID
+in the file
+.Nm lastlog .
+If it is found, the timestamp of the last time the user logged
+in, the terminal line and the hostname
+are written to the standard output.
+The
+.Xr pam_lastlog 8
+program then records the new login time in the file
+.Nm lastlog .
+.Pp
+After the new
+.Vt lastlog
+record is written,
+.\" the
+.\" .Xr libutil 3
+.\" routine
+the file
+.Nm
+is opened and the
+.Vt utmp
+record for the user is inserted.
+This record remains there until
+the user logs out at which time it is deleted.
+The
+.Nm
+file is used by the programs
+.Xr rwho 1 ,
+.Xr users 1 ,
+.Xr w 1 ,
+and
+.Xr who 1 .
+.Pp
+Next, the
+.Xr pam_lastlog 8
+program opens the file
+.Nm wtmp ,
+and appends the user's
+.Vt utmp
+record.
+The user's subsequent logout from the terminal
+line is marked by a special
+.Vt utmp
+record with
+.Va ut_line
+set accordingly,
+.Va ut_time
+updated, but
+.Va ut_name
+and
+.Va ut_host
+both empty
+(see
+.Xr init 8 ) .
+The
+.Nm wtmp
+file is used by the programs
+.Xr last 1
+and
+.Xr ac 8 .
+.Pp
+In the event of a date change, a shutdown or reboot, the
+following items are logged in the
+.Nm wtmp
+file.
+.Pp
+.Bl -tag -width ".Li shutdown" -compact
+.It Li reboot
+.It Li shutdown
+A system reboot or shutdown has been initiated.
+The character
+.Ql \&~
+is placed in the field
+.Va ut_line ,
+and
+.Li reboot
+or
+.Li shutdown
+in the field
+.Va ut_name
+(see
+.Xr shutdown 8
+and
+.Xr reboot 8 ) .
+.Pp
+.It Li date
+The system time has been manually or automatically updated
+(see
+.Xr date 1 ) .
+The command name
+.Li date
+is recorded in the field
+.Va ut_name .
+In the field
+.Va ut_line ,
+the character
+.Ql \&|
+indicates the time prior to the change, and the character
+.Ql \&{
+indicates the new time.
+.El
+.Sh NOTES
+The
+.Nm wtmp
+file can grow rapidly on busy systems, so daily or weekly rotation
+is recommended.
+It is maintained by
+.Xr newsyslog 8 .
+.Pp
+If any one of these files does not exist, it is not created by
+.Xr pam_lastlog 8 .
+The files must be created manually.
+.Pp
+The supplied
+.Xr login 3 ,
+.Xr logout 3 ,
+and
+.Xr logwtmp 3
+utility functions should be used to perform
+the standard actions on the
+.Nm
+and
+.Nm wtmp
+files in order to maintain the portability across
+systems with different formats of those files.
+.Sh FILES
+.Bl -tag -width ".Pa /var/log/lastlog" -compact
+.It Pa /var/run/utmp
+The
+.Nm
+file.
+.It Pa /var/log/wtmp
+The
+.Nm wtmp
+file.
+.It Pa /var/log/lastlog
+The
+.Nm lastlog
+file.
+.El
+.Sh SEE ALSO
+.Xr last 1 ,
+.Xr w 1 ,
+.Xr who 1 ,
+.Xr login 3 ,
+.Xr logout 3 ,
+.Xr logwtmp 3 ,
+.Xr ttyslot 3 ,
+.Xr ac 8 ,
+.Xr init 8 ,
+.Xr pam_lastlog 8
+.Sh HISTORY
+A
+.Nm
+and
+.Nm wtmp
+file format appeared in
+.At v6 .
+The
+.Nm lastlog
+file format appeared in
+.Bx 3.0 .
diff --git a/share/man/man5/xfs.5 b/share/man/man5/xfs.5
new file mode 100644
index 0000000..4465484
--- /dev/null
+++ b/share/man/man5/xfs.5
@@ -0,0 +1,108 @@
+.\"
+.\" Copyright (c) 2007 Craig Rodrigues
+.\" 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$
+.\"
+.Dd June 16, 2007
+.Dt XFS 5
+.Os
+.Sh NAME
+.Nm xfs
+.Nd "XFS file system"
+.Sh SYNOPSIS
+To link into the kernel:
+.Bd -ragged -offset indent
+.Cd "options XFS"
+.Ed
+.Pp
+To load as a kernel loadable module:
+.Pp
+.Dl "kldload xfs"
+.Sh DESCRIPTION
+The
+.Nm
+driver will permit the
+.Fx
+kernel to access
+.Tn XFS
+file systems.
+.Sh EXAMPLES
+To mount a
+.Nm
+volume located on
+.Pa /dev/ad1s1 :
+.Pp
+.Dl "mount -t xfs /dev/ad1s1 /mnt"
+.Sh SEE ALSO
+.Xr nmount 2 ,
+.Xr unmount 2 ,
+.Xr fstab 5 ,
+.Xr mount 8
+.Sh NOTES
+The
+.Pa sysutils/xfsprogs
+port contains the
+.Cm mkfs.xfs
+utility for
+creating XFS file systems, and also other utilities for analyzing,
+and repairing XFS file systems.
+.Sh CAVEATS
+The port of XFS to
+.Fx
+is currently incomplete.
+Only read-only access is supported for XFS volumes.
+Writing to a volume is not supported.
+.Pp
+The
+.Fl p
+flag to
+.Cm mkfs.xfs
+can be used to create an XFS file system which is populated with files
+and other metadata.
+This can be used to quickly create a read-only file system which
+can be tested on
+.Fx .
+.Sh HISTORY
+XFS was originally written by SGI for the IRIX operating system.
+SGI ported XFS to Linux, and released the source code under the GNU
+Public License. For more details, see:
+.Pa http://oss.sgi.com/projects/xfs
+.Pp
+The port to
+.Fx
+was based on the Linux port, and started by
+.An -nosplit
+.An Russell Cattelan Aq cattelan@xfs.org ,
+.An Alexander Kabaev Aq kan@FreeBSD.org ,
+and
+.An Craig Rodrigues Aq rodrigc@FreeBSD.org .
+.Pp
+The
+.Nm
+file system support
+first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Craig Rodrigues Aq rodrigc@FreeBSD.org .
diff --git a/share/man/man6/Makefile b/share/man/man6/Makefile
new file mode 100644
index 0000000..be6547e
--- /dev/null
+++ b/share/man/man6/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+MAN= intro.6
+
+.include <bsd.prog.mk>
diff --git a/share/man/man6/intro.6 b/share/man/man6/intro.6
new file mode 100644
index 0000000..a7d08c5
--- /dev/null
+++ b/share/man/man6/intro.6
@@ -0,0 +1,62 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 16, 1997
+.Dt INTRO 6
+.Os
+.Sh NAME
+.Nm intro
+.Nd "introduction to games"
+.Sh DESCRIPTION
+This section contains information about games.
+The games
+are located in
+.Pa /usr/games
+if installed.
+You can get a short overview about all the games with the
+command:
+.Bd -literal -offset indent
+$ apropos '\\(6\\)'
+.Ed
+.Sh FILES
+.Bl -tag -width /usr/games -compact
+.It Pa /usr/games
+location of games
+.El
+.Sh SEE ALSO
+.Xr intro 1
+.Sh HISTORY
+The
+.Nm
+section manual page appeared in
+.Fx 2.2 .
diff --git a/share/man/man7/Makefile b/share/man/man7/Makefile
new file mode 100644
index 0000000..fbe29d6
--- /dev/null
+++ b/share/man/man7/Makefile
@@ -0,0 +1,30 @@
+# @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+#MISSING: eqnchar.7 ms.7 term.7
+MAN= ascii.7 \
+ bsd.snmpmod.mk.7 \
+ build.7 \
+ clocks.7 \
+ development.7 \
+ environ.7 \
+ ffs.7 \
+ firewall.7 \
+ hier.7 \
+ hostname.7 \
+ intro.7 \
+ maclabel.7 \
+ mailaddr.7 \
+ operator.7 \
+ ports.7 \
+ release.7 \
+ sdoc.7 \
+ security.7 \
+ sprog.7 \
+ stdint.7 \
+ tuning.7
+
+MLINKS= intro.7 miscellaneous.7
+MLINKS+= security.7 securelevel.7
+
+.include <bsd.prog.mk>
diff --git a/share/man/man7/ascii.7 b/share/man/man7/ascii.7
new file mode 100644
index 0000000..feba2338
--- /dev/null
+++ b/share/man/man7/ascii.7
@@ -0,0 +1,117 @@
+.\" Copyright (c) 1989, 1990, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)ascii.7 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt ASCII 7
+.Os
+.Sh NAME
+.Nm ascii
+.Nd octal, hexadecimal and decimal
+.Tn ASCII
+character sets
+.Sh DESCRIPTION
+The
+.Nm octal
+set:
+.Bd -literal -offset left
+000 NUL 001 SOH 002 STX 003 ETX 004 EOT 005 ENQ 006 ACK 007 BEL
+010 BS 011 HT 012 NL 013 VT 014 NP 015 CR 016 SO 017 SI
+020 DLE 021 DC1 022 DC2 023 DC3 024 DC4 025 NAK 026 SYN 027 ETB
+030 CAN 031 EM 032 SUB 033 ESC 034 FS 035 GS 036 RS 037 US
+040 SP 041 ! 042 " 043 # 044 $ 045 % 046 & 047 '
+050 ( 051 ) 052 * 053 + 054 , 055 - 056 . 057 /
+060 0 061 1 062 2 063 3 064 4 065 5 066 6 067 7
+070 8 071 9 072 : 073 ; 074 < 075 = 076 > 077 ?
+100 @ 101 A 102 B 103 C 104 D 105 E 106 F 107 G
+110 H 111 I 112 J 113 K 114 L 115 M 116 N 117 O
+120 P 121 Q 122 R 123 S 124 T 125 U 126 V 127 W
+130 X 131 Y 132 Z 133 [ 134 \e\ 135 ] 136 ^ 137 _
+140 ` 141 a 142 b 143 c 144 d 145 e 146 f 147 g
+150 h 151 i 152 j 153 k 154 l 155 m 156 n 157 o
+160 p 161 q 162 r 163 s 164 t 165 u 166 v 167 w
+170 x 171 y 172 z 173 { 174 | 175 } 176 ~ 177 DEL
+.Ed
+.Pp
+The
+.Nm hexadecimal
+set:
+.Bd -literal -offset left
+00 NUL 01 SOH 02 STX 03 ETX 04 EOT 05 ENQ 06 ACK 07 BEL
+08 BS 09 HT 0A NL 0B VT 0C NP 0D CR 0E SO 0F SI
+10 DLE 11 DC1 12 DC2 13 DC3 14 DC4 15 NAK 16 SYN 17 ETB
+18 CAN 19 EM 1A SUB 1B ESC 1C FS 1D GS 1E RS 1F US
+20 SP 21 ! 22 " 23 # 24 $ 25 % 26 & 27 '
+28 ( 29 ) 2a * 2b + 2c , 2d - 2e . 2f /
+30 0 31 1 32 2 33 3 34 4 35 5 36 6 37 7
+38 8 39 9 3a : 3b ; 3c < 3d = 3e > 3f ?
+40 @ 41 A 42 B 43 C 44 D 45 E 46 F 47 G
+48 H 49 I 4a J 4b K 4c L 4d M 4e N 4f O
+50 P 51 Q 52 R 53 S 54 T 55 U 56 V 57 W
+58 X 59 Y 5a Z 5b [ 5c \e\ 5d ] 5e ^ 5f _
+60 \` 61 a 62 b 63 c 64 d 65 e 66 f 67 g
+68 h 69 i 6a j 6b k 6c l 6d m 6e n 6f o
+70 p 71 q 72 r 73 s 74 t 75 u 76 v 77 w
+78 x 79 y 7a z 7b { 7c | 7d } 7e ~ 7f DEL
+.Ed
+.Pp
+The
+.Nm decimal
+set:
+.Bd -literal -offset left
+ 0 NUL 1 SOH 2 STX 3 ETX 4 EOT 5 ENQ 6 ACK 7 BEL
+ 8 BS 9 HT 10 NL 11 VT 12 NP 13 CR 14 SO 15 SI
+ 16 DLE 17 DC1 18 DC2 19 DC3 20 DC4 21 NAK 22 SYN 23 ETB
+ 24 CAN 25 EM 26 SUB 27 ESC 28 FS 29 GS 30 RS 31 US
+ 32 SP 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '
+ 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /
+ 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7
+ 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?
+ 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G
+ 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O
+ 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W
+ 88 X 89 Y 90 Z 91 [ 92 \e\ 93 ] 94 ^ 95 _
+ 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g
+104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o
+112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w
+120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 DEL
+.Ed
+.Sh FILES
+.Bl -tag -width /usr/share/misc/ascii -compact
+.It Pa /usr/share/misc/ascii
+.El
+.Sh HISTORY
+An
+.Nm
+manual page appeared in
+.At v7 .
diff --git a/share/man/man7/bsd.snmpmod.mk.7 b/share/man/man7/bsd.snmpmod.mk.7
new file mode 100644
index 0000000..30cf20d
--- /dev/null
+++ b/share/man/man7/bsd.snmpmod.mk.7
@@ -0,0 +1,117 @@
+.\"
+.\" Copyright (c) 2005,2008
+.\" Hartmut Brandt.
+.\" All rights reserved.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" 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$
+.\"
+.Dd January 8, 2008
+.Dt BSD.SNMPMOD.MK 7
+.Os
+.Sh NAME
+.Nm bsd.snmpmod.mk
+.Nd building modules for
+.Xr bsnmpd 1
+.Sh SYNOPSIS
+.Fd ".include <bsd.snmpmod.mk>"
+.Sh DESCRIPTION
+The file
+.In bsd.snmpmod.mk
+simplifies the building of modules for the Begemot SNMP daemon,
+.Xr bsnmpd 1 .
+It provides some common functions for building a module and
+relies on
+.In bsd.lib.mk ,
+which is included by
+.In bsd.snmpmod.mk
+to actually build the shared library.
+.Pp
+The following
+.Xr make 1
+variables control the special functions:
+.Bl -tag -width ".Va EXTRAMIBDEFS"
+.It Va MOD
+The short name of the module.
+The name of the shared library will be
+.Pa snmp_${MOD}.so .
+There must exist a file
+.Pa ${MOD}_tree.def
+for compilation with
+.Xr gensnmptree 1
+which contains the definition of the MIB tree implemented by the module.
+.It Va EXTRAMIBDEFS
+A list of extra MIB definition files for
+.Xr gensnmptree 1 .
+This is optional.
+This file list is given to both calls to
+.Xr gensnmptree 1 \(em
+the one that extracts the symbols in
+.Va XSYM
+from the MIB definitions and the one that
+generates the table with OIDs served by this module.
+.It Va EXTRAMIBSYMS
+A list of extra MIB definition files for
+.Xr gensnmptree 1 .
+This is optional.
+This file list is given only to the call to
+.Xr gensnmptree 1
+that extracts symbols from MIB definition files.
+It is useful if there are dependencies on other MIBs or for extracting global
+definitions for enumeration constants.
+.It Va XSYM
+A list of symbols to be extracted from the MIB definition files by
+.Xr gensnmptree 1 .
+This is optional.
+.It Va DEFS
+A list of MIB definition files to be installed.
+This is optional.
+.It Va BMIBS
+A list of textual MIBs to be installed.
+This is optional.
+.El
+.Pp
+Three files are automatically created from the MIB definition files and
+the
+.Va XSYM
+variable:
+.Bl -tag -width ".Va EXTRAMIBDEFS"
+.It Pa ${MOD}_tree.c
+This contains a table with the tree implemented by the module.
+It is automatically included into the
+.Va SRCS
+variable.
+.It Pa ${MOD}_tree.h
+This contains preprocessor defines for all the OIDs defined by the module
+and can be included in the module's source code.
+.It Pa ${MOD}_oid.h
+OID preprocessor definitions for all the symbols listed in
+.Va XSYMS .
+This is to be included into the module's source code.
+.El
+.Sh SEE ALSO
+.Xr bsnmpd 1 ,
+.Xr gensnmptree 1 ,
+.Xr snmpmod 3
diff --git a/share/man/man7/build.7 b/share/man/man7/build.7
new file mode 100644
index 0000000..9e5ca59
--- /dev/null
+++ b/share/man/man7/build.7
@@ -0,0 +1,424 @@
+.\" Copyright (c) 2000
+.\" Mike W. Meyer
+.\"
+.\" 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$
+.\"
+.Dd October 1, 2006
+.Dt BUILD 7
+.Os
+.Sh NAME
+.Nm build
+.Nd information on how to build the system
+.Sh DESCRIPTION
+The sources for the
+.Fx
+system and its applications are contained in three different directories,
+normally
+.Pa /usr/src ,
+.Pa /usr/doc ,
+and
+.Pa /usr/ports .
+Directory
+.Pa /usr/src
+contains the
+.Dq "base system"
+sources, which is loosely defined as the things required to rebuild
+the system to a useful state.
+Directory
+.Pa /usr/doc
+contains the source for the system documentation, excluding the manual
+pages.
+Directory
+.Pa /usr/ports
+contains a tree that provides a consistent interface for building and
+installing third party applications.
+For more information about the ports build process, see
+.Xr ports 7 .
+.Pp
+The
+.Xr make 1
+command is used in each of these directories to build and install the
+things in that directory.
+Issuing the
+.Xr make 1
+command in any directory or
+subdirectory of those directories has the same effect as issuing the
+same command in all subdirectories of that directory.
+With no target specified, the things in that directory are just built.
+.Pp
+A source tree is allowed to be read-only.
+As described in
+.Xr make 1 ,
+objects are usually built in a separate object directory hierarchy
+specified by the environment variable
+.Va MAKEOBJDIRPREFIX ,
+or under
+.Pa /usr/obj
+if variable
+.Va MAKEOBJDIRPREFIX
+is not set.
+For a given source directory, its canonical object directory
+would be
+.Pa ${MAKEOBJDIRPREFIX}${.CURDIR}
+if
+.Xr make 1
+variable
+.Va MAKEOBJDIRPREFIX
+is set, or
+.Pa /usr/obj${.CURDIR}
+if this variable is not set.
+Cross-builds set the object directory as described in the
+documentation for the
+.Cm buildworld
+target below.
+.Pp
+The build may be controlled by defining
+.Xr make 1
+variables described in the
+.Sx ENVIRONMENT
+section below, and by the variables documented in
+.Xr make.conf 5 .
+.Pp
+The following list provides the names and actions for the targets
+supported by the build system:
+.Bl -tag -width ".Cm cleandepend"
+.It Cm clean
+Remove any files created during the build process.
+.It Cm cleandepend
+Remove the file
+.Pa ${.OBJDIR}/${DEPENDFILE}
+generated by a prior
+.Dq Li "make depend"
+step.
+.It Cm cleandir
+Remove the canonical object directory if it exists, or perform
+actions equivalent to
+.Dq Li "make clean cleandepend"
+if it does not.
+This target will also remove an
+.Pa obj
+link in
+.Pa ${.CURDIR}
+if that exists.
+.Pp
+It is advisable to run
+.Dq Li "make cleandir"
+twice: the first invocation will remove the canonical object directory
+and the second one will clean up
+.Pa ${.CURDIR} .
+.It Cm depend
+Generate a list of build dependencies in file
+.Pa ${.OBJDIR}/${DEPENDFILE} .
+.It Cm install
+Install the results of the build to the appropriate location in the
+installation directory hierarchy specified in variable
+.Va DESTDIR .
+.It Cm obj
+Create the canonical object directory associated with the current
+directory.
+.It Cm objlink
+Create a symbolic link to the canonical object directory in
+.Pa ${.CURDIR} .
+.It Cm tags
+Generate a tags file using the program specified in the
+.Xr make 1
+variable
+.Va CTAGS .
+The build system supports
+.Xr ctags 1
+and
+.Nm "GNU Global" .
+.El
+.Pp
+The other supported targets under directory
+.Pa /usr/src
+are:
+.Bl -tag -width ".Cm distributeworld"
+.It Cm buildenv
+Spawn an interactive shell with environment variables set up for
+cross-building the system.
+The target architecture needs to be specified with
+.Xr make 1
+variables
+.Va TARGET_ARCH
+and
+.Va TARGET .
+.Pp
+This target is only useful after a complete cross-toolchain including
+the compiler, linker, assembler, headers and libraries has been
+built; see the
+.Cm toolchain
+target below.
+.It Cm buildworld
+Build everything but the kernel, configure files in
+.Pa etc ,
+and
+.Pa release .
+The actual build location prefix used is
+.Pa ${MAKEOBJDIRPREFIX}${.CURDIR}
+for native builds, and
+.Pa ${MAKEOBJDIRPREFIX}/${TARGET}${.CURDIR}
+for cross builds and native builds with variable
+.Va CROSS_BUILD_TESTING
+set.
+.It Cm cleanworld
+Attempt to clean up targets built by a preceding
+.Cm buildworld
+step.
+.It Cm distributeworld
+Distribute everything compiled by a preceding
+.Cm buildworld
+step.
+Files are placed in the directory hierarchy specified by
+.Xr make 1
+variable
+.Va DISTDIR .
+This target is used while building a release; see
+.Xr release 7 .
+.It Cm installworld
+Install everything built by a preceding
+.Cm buildworld
+step into the directory hierarchy pointed to by
+.Xr make 1
+variable
+.Va DESTDIR .
+.Pp
+If installing onto an NFS file system and running
+.Xr make 1
+with the
+.Fl j
+option, make sure that
+.Xr rpc.lockd 8
+is running on both client and server.
+See
+.Xr rc.conf 5
+on how to make it start at boot time.
+.It Cm toolchain
+Create the build toolchain needed to build the rest of the system.
+For cross-architecture builds, this step creates a cross-toolchain.
+.It Cm universe
+Execute a
+.Cm buildworld
+and
+.Cm buildkernel
+for all kernels including
+.Pa LINT ,
+for each architecture supported by the build system.
+This command takes a long time.
+.It Cm update
+Get updated sources as configured in
+.Xr make.conf 5 .
+.El
+.Pp
+Kernel specific build targets in
+.Pa /usr/src
+are:
+.Bl -tag -width ".Cm reinstallkernel"
+.It Cm buildkernel
+Rebuild the kernel and the kernel modules.
+.It Cm installkernel
+Install the kernel and the kernel modules to directory
+.Pa ${DESTDIR}/boot/kernel ,
+renaming any pre-existing directory with this name to
+.Pa kernel.old
+if it contained the currently running kernel.
+The target directory under
+.Pa ${DESTDIR}
+may be modified using the
+.Va INSTKERNNAME
+and
+.Va KODIR
+.Xr make 1
+variables.
+.It Cm kernel
+Equivalent to
+.Cm buildkernel
+followed by
+.Cm installkernel
+.It Cm kernel-toolchain
+Rebuild the tools needed for kernel compilation.
+Use this if you did not do a
+.Cm buildworld
+first.
+.It Cm reinstallkernel
+Reinstall the kernel and the kernel modules, overwriting the contents
+of the target directory.
+As with the
+.Cm installkernel
+target, the target directory can be specified using the
+.Xr make 1
+variable
+.Va INSTKERNNAME .
+.El
+.Pp
+Convenience targets for cleaning up the install destination directory
+denoted by variable
+.Va DESTDIR
+include:
+.Bl -tag -width ".Cm delete-old-libs"
+.It Cm check-old
+Print a list of old files and directories in the system.
+.It Cm delete-old
+Delete obsolete base system files and directories interactively.
+When
+.Li -DBATCH_DELETE_OLD_FILES
+is specified at the command line, the delete operation will be
+non-interactive.
+The variables
+.Va DESTDIR ,
+.Va TARGET_ARCH
+and
+.Va TARGET
+should be set as with
+.Dq Li "make installworld" .
+.It Cm delete-old-libs
+Delete obsolete base system libraries interactively.
+This target should only be used if no 3rd party software uses these
+libraries.
+When
+.Li -DBATCH_DELETE_OLD_FILES
+is specified at the command line, the delete operation will be
+non-interactive.
+The variables
+.Va DESTDIR ,
+.Va TARGET_ARCH
+and
+.Va TARGET
+should be set as with
+.Dq Li "make installworld" .
+.El
+.Sh ENVIRONMENT
+Variables that influence all builds include:
+.Bl -tag -width ".Va MAKEOBJDIRPREFIX"
+.It Va DESTDIR
+The directory hierarchy prefix where built objects will be installed.
+If not set,
+.Va DESTDIR
+defaults to the empty string.
+.It Va MAKEOBJDIRPREFIX
+Defines the prefix for directory names in the tree of built objects.
+Defaults to
+.Pa /usr/obj
+if not defined.
+This variable should only be set in the environment and not via
+.Pa /etc/make.conf
+or the command line.
+.It Va NO_WERROR
+If defined, compiler warnings will not cause the build to halt,
+even if the makefile says otherwise.
+.El
+.Pp
+Additionally, builds in
+.Pa /usr/src
+are influenced by the following
+.Xr make 1
+variables:
+.Bl -tag -width ".Va SUBDIR_OVERRIDE"
+.It Va LOCAL_DIRS
+If set, this variable supplies a list of additional directories to
+build, relative to the root of the source tree.
+.It Va SUBDIR_OVERRIDE
+Override the default list of sub-directories and only build the
+sub-directory named in this variable.
+This variable is useful when debugging failed builds.
+.Bd -literal -offset indent
+make some-target SUBDIR_OVERRIDE=foo/bar
+.Ed
+.It Va TARGET
+The target hardware platform.
+This is analogous to the
+.Dq Nm uname Fl m
+output.
+This is necessary to cross-build some target architectures.
+For example, cross-building for PC98 machines requires
+.Va TARGET_ARCH Ns = Ns Li i386
+and
+.Va TARGET Ns = Ns Li pc98 .
+If not set,
+.Va TARGET
+defaults to the current hardware platform.
+.It Va TARGET_ARCH
+The target machine processor architecture.
+This is analogous to the
+.Dq Nm uname Fl p
+output.
+Set this to cross-build for a different architecture.
+If not set,
+.Va TARGET_ARCH
+defaults to the current machine architecture, unless
+.Va TARGET
+is also set, in which case it defaults to the appropriate
+value for that platform.
+.El
+.Pp
+Builds under directory
+.Pa /usr/doc
+are influenced by the following
+.Xr make 1
+variables:
+.Bl -tag -width ".Va DOC_LANG"
+.It Va DOC_LANG
+If set, restricts the documentation build to the language subdirectories
+specified as its content.
+The default action is to build documentation for all languages.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact
+.It Pa /usr/doc/Makefile
+.It Pa /usr/doc/share/mk/doc.project.mk
+.It Pa /usr/ports/Mk/bsd.port.mk
+.It Pa /usr/ports/Mk/bsd.sites.mk
+.It Pa /usr/share/examples/etc/make.conf
+.It Pa /usr/src/Makefile
+.It Pa /usr/src/Makefile.inc1
+.El
+.Sh EXAMPLES
+For an
+.Dq approved
+method of updating your system from the latest sources, please see the
+.Sx COMMON ITEMS
+section in
+.Pa src/UPDATING .
+.Pp
+The following sequence of commands can be used to cross-build the
+system for the sparc64 architecture on an i386 host:
+.Bd -literal -offset indent
+cd /usr/src
+make TARGET=sparc64 buildworld
+make TARGET=sparc64 DESTDIR=/clients/sparc64 installworld
+.Ed
+.Sh SEE ALSO
+.Xr cc 1 ,
+.Xr install 1 ,
+.Xr make 1 ,
+.Xr make.conf 5 ,
+.Xr src.conf 5 ,
+.Xr ports 7 ,
+.Xr release 7 ,
+.Xr config 8 ,
+.Xr mergemaster 8 ,
+.Xr reboot 8 ,
+.Xr shutdown 8
+.Sh AUTHORS
+.An Mike W. Meyer Aq mwm@mired.org .
diff --git a/share/man/man7/clocks.7 b/share/man/man7/clocks.7
new file mode 100644
index 0000000..700a79f
--- /dev/null
+++ b/share/man/man7/clocks.7
@@ -0,0 +1,178 @@
+.\"
+.\" Copyright (c) 1996 Joerg Wunsch
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\" "
+.Dd January 18, 2008
+.Os
+.Dt CLOCKS 7
+.Sh NAME
+.Nm clocks
+.Nd various system timers
+.Sh SYNOPSIS
+.In time.h
+.Sh DESCRIPTION
+.Dv HZ
+is not part of the application interface in
+.Bx .
+.Pp
+There are many different real and virtual (timekeeping) clocks with
+different frequencies:
+.Bl -bullet
+.It
+The scheduling clock.
+This is a real clock with frequency that happens to be 100.
+It is not available to applications.
+.It
+The statistics clock.
+This is a real clock with frequency that happens to be 128.
+It is not directly available to applications.
+.It
+The clock reported by
+.Xr clock 3 .
+This is a virtual clock with a frequency that happens to be 128.
+Its actual frequency is given by the macro
+.Dv CLOCKS_PER_SEC .
+Note that
+.Dv CLOCKS_PER_SEC
+may be floating point.
+Do not use
+.Xr clock 3
+in new programs under
+.Fx .
+It is feeble compared with
+.Xr getrusage 2 .
+It is provided for
+.Tn ANSI
+conformance.
+It is implemented by calling
+.Xr getrusage 2
+and throwing away information and resolution.
+.It
+The clock reported by
+.Xr times 3 .
+This is a virtual clock with a frequency that happens to be 128.
+Its actual frequency is given by the macro
+.Dv CLK_TCK
+(deprecated; do not use) and by
+.Fn sysconf _SC_CLK_TCK
+and by
+.Xr sysctl 3 .
+Note that its frequency may be different from
+.Dv CLOCKS_PER_SEC .
+Do not use
+.Xr times 3
+in new programs under
+.Fx .
+It is feeble compared with
+.Xr gettimeofday 2
+together with
+.Xr getrusage 2 .
+It is provided for
+.Tn POSIX
+conformance.
+It is implemented by calling
+.Xr gettimeofday 2
+and
+.Xr getrusage 2
+and throwing away information and resolution.
+.It
+The profiling clock.
+This is a real clock with frequency 1024.
+It is used mainly by
+.Xr moncontrol 3 ,
+.Xr kgmon 8
+and
+.Xr gprof 1 .
+Applications should determine its actual frequency using
+.Xr sysctl 3
+or by reading it from the header in the profiling data file.
+.It
+The mc146818a clock.
+This is a real clock with a nominal frequency of 32768.
+It is divided down to give the statistic clock and the profiling clock.
+It is not available to applications.
+.It
+The microseconds clock.
+This is a virtual clock with frequency 1000000.
+It is used for most timekeeping in
+.Bx
+and is exported to applications in
+.Xr getrusage 2 ,
+.Xr gettimeofday 2 ,
+.Xr select 2 ,
+.Xr getitimer 2 ,
+etc.
+This is the clock that should normally be used by
+.Bx
+applications.
+.It
+The i8254 clock.
+This is a real clock/timer with a nominal frequency of 1193182.
+It has three independent time counters to be used.
+It is divided down to give the scheduling clock.
+It is not available to applications.
+.It
+The TSC clock (64-bit register) on fifth-generation or later x86 systems.
+This is a real clock with a frequency that is equivalent to the number of
+cycles per second of the CPU(s).
+Its frequency can be found using the
+.Va machdep.tsc_freq
+sysctl, if it is available.
+It is used to interpolate between values of the scheduling clock.
+It can be accessed using the
+.Dv PMIOTSTAMP
+request of
+.Xr perfmon 4 .
+.It
+The ACPI clock.
+This is a real clock/timer with a nominal frequency of 3579545.
+It is accessed via a 24 or 32 bit register.
+Unlike the TSC clock, it maintains a constant tick rate even when the CPU
+sleeps or its clock rate changes.
+It is not available to applications.
+.El
+.Pp
+Summary: if
+.Dv HZ
+is not 1000000 then the application is probably using the wrong clock.
+.Sh SEE ALSO
+.Xr gprof 1 ,
+.Xr clock_gettime 2 ,
+.Xr getitimer 2 ,
+.Xr getrusage 2 ,
+.Xr gettimeofday 2 ,
+.Xr select 2 ,
+.Xr clock 3 ,
+.Xr moncontrol 3 ,
+.Xr times 3
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An J\(:org Wunsch
+after a description posted by
+.An Bruce Evans .
diff --git a/share/man/man7/development.7 b/share/man/man7/development.7
new file mode 100644
index 0000000..af8db3a
--- /dev/null
+++ b/share/man/man7/development.7
@@ -0,0 +1,698 @@
+.\" Copyright (C) 1998 Matthew Dillon. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 21, 2002
+.Dt DEVELOPMENT 7
+.Os
+.Sh NAME
+.Nm development
+.Nd "introduction to development with the FreeBSD codebase"
+.Sh DESCRIPTION
+This manual page describes how an ordinary system operator,
+.Ux
+administrator, or developer
+can, without any special permission, obtain, maintain, and modify the
+.Fx
+codebase as well as how to maintain a master build which can
+then be exported to other machines in your network.
+This manual page
+is targeted to system operators, programmers, and developers.
+.Pp
+Please note that what is being described here is based on a complete
+.Fx
+environment, not just the
+.Fx
+kernel.
+The methods described
+here are as applicable to production installations as it is to development
+environments.
+You need a good 12-17GB of disk space on one machine to make this work
+conveniently.
+.Sh SETTING UP THE ENVIRONMENT ON THE MASTER SERVER
+Your master server should always run a stable, production version of the
+.Fx
+operating system.
+This does not prevent you from doing -CURRENT
+builds or development.
+The last thing you want to do is to run an
+unstable environment on your master server which could lead to a situation
+where you lose the environment and/or cannot recover from a mistake.
+.Pp
+Create a huge partition called
+.Pa /FreeBSD .
+8-12GB is recommended.
+This partition will contain nearly all the development environment,
+including the CVS tree, broken-out source, and possibly even object files.
+You are going to export this partition to your other machines via a
+READ-ONLY NFS export so do not mix it with other more security-sensitive
+partitions.
+.Pp
+You have to make a choice in regards to
+.Pa /usr/obj .
+You can put
+.Pa /usr/obj
+in
+.Pa /FreeBSD
+or you can make
+.Pa /usr/obj
+its own partition.
+I recommend making it a separate partition for several reasons.
+First,
+as a safety measure since this partition is written to a great deal.
+Second, because you typically do not have to back it up.
+Third, because it makes it far easier to mix and match the development
+environments which are described later in this document.
+I recommend a
+.Pa /usr/obj
+partition of at least 5GB.
+.Pp
+On the master server, use
+.Xr cvsup 1 Pq Pa ports/net/cvsup
+to automatically pull down and maintain
+the
+.Fx
+CVS archive once a day.
+The first pull will take a long time,
+it is several gigabytes, but once you have it,
+the daily synchronizations will be quite small.
+.Bd -literal -offset 4n
+mkdir /FreeBSD/FreeBSD-CVS
+rm -rf /home/ncvs
+ln -s /FreeBSD/FreeBSD-CVS /home/ncvs
+.Ed
+.Pp
+The
+.Xr cron 8
+job should look something like this (please randomize the time of
+day!).
+Note that you can use the
+.Xr cvsup 1
+configuration file example directly from
+.Pa /usr/share/examples
+without modification by supplying appropriate arguments
+to
+.Xr cvsup 1 .
+.Bd -literal -offset 4n
+33 6 * * * /usr/local/bin/cvsup -g -r 20 -L 2 -h cvsup.freebsd.org /usr/share/examples/cvsup/cvs-supfile
+.Ed
+.Pp
+Run the
+.Xr cvsup 1
+manually the first time to pull down the archive.
+It could take
+all day depending on how fast your connection is!
+You will run all
+.Xr cvsup 1
+and
+.Xr cvs 1
+operations as
+.Dq Li root
+and you need to set up a
+.Pa ~/.cvsrc
+.Pq Pa /root/.cvsrc
+file, as shown below, for proper
+.Xr cvs 1
+operation.
+Using
+.Pa ~/.cvsrc
+to specify
+.Xr cvs 1
+defaults is an excellent way to
+.Dq "file and forget" ,
+but you should never forget that you put them in there.
+.Bd -literal -offset 4n
+# cvs -q
+diff -u
+update -Pd
+checkout -P
+.Ed
+.Pp
+Now use
+.Xr cvs 1
+to check out a -STABLE source tree and a -CURRENT source tree,
+as well as ports and docs, to create your initial source environment.
+Keeping the broken-out source and ports in
+.Pa /FreeBSD
+allows you to export
+it to other machines via read-only NFS.
+This also means you only need to edit/maintain files in one place and all
+your clients automatically pick up the changes.
+.Bd -literal -offset 4n
+mkdir /FreeBSD/FreeBSD-4.x
+mkdir /FreeBSD/FreeBSD-current
+
+cd /FreeBSD/FreeBSD-4.x
+cvs -d /home/ncvs checkout -rRELENG_4 src
+
+cd /FreeBSD/FreeBSD-current
+cvs -d /home/ncvs checkout src
+cvs -d /home/ncvs checkout ports
+cvs -d /home/ncvs checkout doc
+.Ed
+.Pp
+Now create a softlink for
+.Pa /usr/src
+and
+.Pa /usr/src2 .
+On the main server I always point
+.Pa /usr/src
+at -STABLE and
+.Pa /usr/src2
+at -CURRENT.
+On client machines I usually do not have a
+.Pa /usr/src2
+and I make
+.Pa /usr/src
+point at whatever version of
+.Fx
+the client box is intended to
+run.
+.Bd -literal -offset 4n
+cd /usr
+rm -rf src src2
+ln -s /FreeBSD/FreeBSD-4.x/src src (could be -CURRENT on a client)
+ln -s /FreeBSD/FreeBSD-current/src src2 (MASTER SERVER ONLY)
+.Ed
+.Pp
+Now you have to make a choice for
+.Pa /usr/obj .
+Well, hopefully you made it already and chose the partition method.
+If you
+chose poorly you probably intend to put it in
+.Pa /FreeBSD
+and, if so, this is
+what you want to do:
+.Bd -literal -offset 4n
+(ONLY IF YOU MADE A POOR CHOICE AND PUT /usr/obj in /FreeBSD!)
+mkdir /FreeBSD/obj
+cd /usr
+rm -rf obj
+ln -s /FreeBSD/obj obj
+.Ed
+.Pp
+Alternatively you may chose simply to leave
+.Pa /usr/obj
+in
+.Pa /usr .
+If your
+.Pa /usr
+is large enough this will work, but I do not recommend it for
+safety reasons
+.Pa ( /usr/obj
+is constantly being modified,
+.Pa /usr
+is not).
+.Pp
+Note that exporting
+.Pa /usr/obj
+via read-only NFS to your other boxes will
+allow you to build on your main server and install from your other boxes.
+If you also want to do builds on some or all of the clients you can simply
+have
+.Pa /usr/obj
+be a local directory on those clients.
+You should never export
+.Pa /usr/obj
+read-write, it will lead to all sorts of
+problems and issues down the line and presents a security problem as well.
+It is far easier to do builds on the master server and then only do installs
+on the clients.
+.Pp
+I usually maintain my ports tree via CVS.
+It is sitting right there in the master CVS archive and I have even told you
+to check it out (see above).
+With some fancy softlinks you can make the ports tree available both on your
+master server and on all of your other machines.
+Note that the ports tree exists only on the HEAD CVS branch, so its always
+-CURRENT even on a -STABLE box.
+This is what you do:
+.Bd -literal -offset 4n
+(THESE COMMANDS ON THE MASTER SERVER AND ON ALL CLIENTS)
+cd /usr
+rm -rf ports
+ln -s /FreeBSD/FreeBSD-current/ports ports
+
+cd /usr/ports (this pushes into the softlink)
+rm -rf distfiles (ON MASTER SERVER ONLY)
+ln -s /usr/ports.distfiles distfiles (ON MASTER SERVER ONLY)
+
+mkdir /usr/ports.distfiles
+mkdir /usr/ports.workdir
+.Ed
+.Pp
+Since
+.Pa /usr/ports
+is softlinked into what will be read-only on all of your
+clients, you have to tell the ports system to use a different working
+directory to hold ports builds.
+You want to add a line to your
+.Xr make.conf 5
+file on the master server
+and on all your clients:
+.Bd -literal -offset 4n
+WRKDIRPREFIX=/usr/ports.workdir
+.Ed
+.Pp
+You should try to make the directory you use for the ports working directory
+as well as the directory used to hold distfiles consistent across all of your
+machines.
+If there is not enough room in
+.Pa /usr/ports.distfiles
+and
+.Pa /usr/ports.workdir
+I usually make those softlinks (since this is on
+.Pa /usr
+these are per-machine) to
+where the distfiles and working space really are.
+.Sh EXPORTING VIA NFS FROM THE MASTER SERVER
+The master server needs to export
+.Pa /FreeBSD
+and
+.Pa /usr/obj
+via NFS so all the
+rest of your machines can get at them.
+I strongly recommend using a read-only export for both security and safety.
+The environment I am describing in this manual page is designed primarily
+around read-only NFS exports.
+Your exports file on the master server should contain the following lines:
+.Bd -literal -offset 4n
+/FreeBSD -ro -alldirs -maproot=root: -network YOURLAN -mask YOURLANMASK
+/usr/obj -ro -alldirs -maproot=root: -network YOURLAN -mask YOURLANMASK
+.Ed
+.Pp
+Of course, NFS server operations must also be configured on that machine.
+This is typically done via your
+.Pa /etc/rc.conf :
+.Bd -literal -offset 4n
+nfs_server_enable="YES"
+nfs_server_flags="-u -t -n 4"
+.Ed
+.Sh THE CLIENT ENVIRONMENT
+All of your client machines can import the development/build environment
+directory simply by NFS mounting
+.Pa /FreeBSD
+and
+.Pa /usr/obj
+from the master server.
+A typical
+.Pa /etc/fstab
+entry on your client machines will be something like this:
+.Bd -literal -offset 4n
+masterserver:/FreeBSD /FreeBSD nfs ro,bg 0 0
+masterserver:/usr/obj /usr/obj nfs ro,bg 0 0
+.Ed
+.Pp
+And, of course, you should configure the client for NFS client operations
+via
+.Pa /etc/rc.conf .
+In particular, this will turn on
+.Xr nfsiod 8
+which will improve client-side NFS
+performance:
+.Bd -literal -offset 4n
+nfs_client_enable="YES"
+.Ed
+.Pp
+Each client should create softlinks for
+.Pa /usr/ports
+and
+.Pa /usr/src
+that point
+into the NFS-mounted environment.
+If a particular client is running -CURRENT,
+.Pa /usr/src
+should be a softlink to
+.Pa /FreeBSD/FreeBSD-current/src .
+If it is running -STABLE,
+.Pa /usr/src
+should be a softlink to
+.Pa /FreeBSD/FreeBSD-4.x/src .
+I do not usually create a
+.Pa /usr/src2
+softlink on
+clients, that is used as a convenient shortcut when working on the source
+code on the master server only and could create massive confusion (of the
+human variety) on a client.
+.Bd -literal -offset 4n
+(ON EACH CLIENT)
+cd /usr
+rm -rf ports src
+ln -s /FreeBSD/FreeBSD-current/ports ports
+ln -s /FreeBSD/FreeBSD-XXX/src src
+.Ed
+.Pp
+Do not forget to create the working directories so you can build ports, as
+previously described.
+If these are not good locations, make them softlinks to the correct location.
+Remember that
+.Pa /usr/ports/distfiles
+is exported by
+the master server and is therefore going to point to the same place
+(typically
+.Pa /usr/ports.distfiles )
+on every machine.
+.Bd -literal -offset 4n
+mkdir /usr/ports.distfiles
+mkdir /usr/ports.workdir
+.Ed
+.Sh BUILDING KERNELS
+Here is how you build a -STABLE kernel (on your main development box).
+If you want to create a custom kernel, copy
+.Pa GENERIC
+to
+.Pa KERNELNAME
+and then edit it before configuring and building.
+The kernel configuration file lives in
+.Pa /usr/src/sys/i386/conf/KERNELNAME .
+.Bd -literal -offset 4n
+cd /usr/src
+make buildkernel KERNCONF=KERNELNAME
+.Ed
+.Pp
+.Sy WARNING!
+If you are familiar with the old config/cd/make method of building
+a -STABLE kernel, note that the
+.Xr config 8
+method will put the build environment in
+.Pa /usr/src/sys/i386/compile/KERNELNAME
+instead of in
+.Pa /usr/obj .
+.Pp
+Building a -CURRENT kernel
+.Bd -literal -offset 4n
+cd /usr/src2 (on the master server)
+make buildkernel KERNCONF=KERNELNAME
+.Ed
+.Sh INSTALLING KERNELS
+Installing a -STABLE kernel (typically done on a client,
+only do this on your main development server if you want to install a new
+kernel for your main development server):
+.Bd -literal -offset 4n
+cd /usr/src
+make installkernel KERNCONF=KERNELNAME
+.Ed
+.Pp
+If you are using the older config/cd/make build mechanism for -STABLE, you
+would install using:
+.Bd -literal -offset 4n
+cd /usr/src/sys/i386/compile/KERNELNAME
+make install
+.Ed
+.Pp
+Installing a -CURRENT kernel (typically done only on a client)
+.Bd -literal -offset 4n
+(remember /usr/src is pointing to the client's specific environment)
+cd /usr/src
+make installkernel KERNCONF=KERNELNAME
+.Ed
+.Sh BUILDING THE WORLD
+This environment is designed such that you do all builds on the master server,
+and then install from each client.
+You can do builds on a client only if
+.Pa /usr/obj
+is local to that client.
+Building the world is easy:
+.Bd -literal -offset 4n
+cd /usr/src
+make buildworld
+.Ed
+.Pp
+If you are on the master server you are running in a -STABLE environment, but
+that does not prevent you from building the -CURRENT world.
+Just
+.Xr cd 1
+into the appropriate source directory and you are set.
+Do not
+accidentally install it on your master server though!
+.Bd -literal -offset 4n
+cd /usr/src2
+make buildworld
+.Ed
+.Sh INSTALLING THE WORLD
+You can build on your main development server and install on clients.
+The main development server must export
+.Pa /FreeBSD
+and
+.Pa /usr/obj
+via read-only NFS to the clients.
+.Pp
+.Em NOTE!!!
+If
+.Pa /usr/obj
+is a softlink on the master server, it must also be the EXACT
+SAME softlink on each client.
+If
+.Pa /usr/obj
+is a directory in
+.Pa /usr
+or a mount point on the master server,
+then it must be (interchangeably) a directory in
+.Pa /usr
+or a mount point on
+each client.
+This is because the
+absolute paths are expected to be the same when building the world as when
+installing it, and you generally build it on your main development box
+and install it from a client.
+If you do not set up
+.Pa /usr/obj
+properly you will not be able to build on
+machine and install on another.
+.Bd -literal -offset 4n
+(ON THE CLIENT)
+(remember /usr/src is pointing to the client's specific environment)
+cd /usr/src
+make installworld
+.Ed
+.Pp
+.Sy WARNING!
+If builds work on the master server but installs do not work from the
+clients, for example you try to install and the client complains that
+the install tried to write into the read-only
+.Pa /usr/obj ,
+then it is likely
+that the
+.Xr make.conf 5
+file on the client does not match the one on the
+master server closely enough and the install is trying to install something
+that was not built.
+.Sh DOING DEVELOPMENT ON A CLIENT (NOT JUST INSTALLING)
+Developers often want to run buildkernel's or buildworld's on client
+boxes simply to life-test the box.
+You do this in the same manner that you buildkernel and buildworld on your
+master server.
+All you have to do is make sure that
+.Pa /usr/obj
+is pointing to local storage.
+If you followed my advise and made
+.Pa /usr/obj
+its own partition on the master
+server,
+then it is typically going to be an NFS mount on the client.
+Simply unmounting
+.Pa /usr/obj
+will leave you with a
+.Pa /usr/obj
+that is a
+subdirectory in
+.Pa /usr
+which is typically local to the client.
+You can then do builds to your heart's content!
+.Sh MAINTAINING A LOCAL BRANCH
+I have described how to maintain two versions of the source tree, a stable
+version in
+.Pa /FreeBSD/FreeBSD-4.x
+and a current version in
+.Pa /FreeBSD/FreeBSD-current .
+There is absolutely nothing preventing you
+from breaking out other versions of the source tree
+into
+.Pa /FreeBSD/XXX .
+In fact, my
+.Pa /FreeBSD
+partition also contains
+.Ox ,
+.Nx ,
+and various flavors of
+.Tn Linux .
+You may not necessarily be able to build
+.Pf non- Fx
+operating systems on
+your master server, but being able
+to collect and manage source distributions from a central server is a very
+useful thing to be able to do and you can certainly export to machines
+which can build those other operating systems.
+.Pp
+Many developers choose to maintain a local branch of
+.Fx
+to test patches or build a custom distribution.
+This can be done with CVS or another source code management system
+(SubVersion, Perforce, BitKeeper) with its own repository.
+Since the main
+.Fx
+tree is based on CVS, the former is convenient.
+.Pp
+First, you need to modify your
+.Xr cvsup 1
+environment to avoid it modifying
+the local changes you have committed to the repository.
+It is important to remove the
+.Ic delete
+keyword from your
+.Pa supfile
+and to add the
+.Pa CVSROOT
+subdirectory to your
+.Pa refuse
+file.
+For more information, see
+.Xr cvsup 1 .
+.Pp
+The
+.Fx
+version of
+.Xr cvs 1
+examines a custom environmental variable,
+.Ev CVS_LOCAL_BRANCH_NUM ,
+which specifies an integer to use when doing a
+.Xr cvs 1
+.Cm tag Ns / Ns Cm rtag .
+Set this number to something high (say 1000) to avoid colliding
+with potential future branches of the main repository.
+For example,
+branching a file with version 1.4 produces 1.4.1000.
+Future commits to this branch will produce revisions 1.4.1000.1,
+1.4.1000.2, etc.
+.Pp
+To fork your local branch, do:
+.Bd -literal -offset 4n
+cvs rtag -r RELENG_4 -b LOCAL_RELENG_4 src
+.Ed
+.Pp
+After this, you can check out a copy from your local repository using the
+new tag and begin making changes and committing them.
+For more information on using CVS, see
+.Xr cvs 1 .
+.Pp
+.Sy WARNING!
+The
+.Xr cvsup 1
+utility may blow away changes made on a local branch in
+some situations.
+This has been reported to occur when the master CVS repository is
+directly manipulated or an RCS file is changed.
+At this point,
+.Xr cvsup 1
+notices that the client and server have entirely
+different RCS files, so it does a full replace instead of trying to
+send just deltas.
+Ideally this situation should never arise, but in the real world it
+happens all the time.
+.Pp
+While this is the only scenario where the problem should crop up,
+there have been some suspicious-sounding reports of
+.Ev CVS_LOCAL_BRANCH_NUM
+lossage that cannot be explained by this alone.
+Bottom line is, if you value your local branch then you
+should back it up before every update.
+.Sh UPDATING VIA CVS
+The advantage of using
+.Xr cvsup 1
+to maintain an updated copy of the CVS
+repository instead of using it to maintain source trees directly is that you
+can then pick and choose when you bring your source tree (or pieces of your
+source tree) up to date.
+By using a
+.Xr cron 8
+job to maintain an updated CVS repository, you can update
+your source tree at any time without any network cost as follows:
+.Bd -literal -offset 4n
+(on the main development server)
+cd /usr/src
+cvs -d /home/ncvs update
+cd /usr/src2
+cvs -d /home/ncvs update
+cd /usr/ports
+cvs -d /home/ncvs update
+.Ed
+.Pp
+It is that simple, and since you are exporting the whole lot to your
+clients, your clients have immediate visibility into the updated
+source.
+This is a good time to also remind you that most of the
+.Xr cvs 1
+operations you do will be done as
+.Dq Li root ,
+and that certain options are
+required for CVS to operate properly on the
+.Fx
+repository.
+For example,
+.Fl Pd
+is necessary when running
+.Nm cvs Cm update .
+These options are typically placed in your
+.Pa ~/.cvsrc
+(as already described)
+so you do not have to re-specify them every time you run a
+.Xr cvs 1
+command.
+Maintaining the CVS repository also gives you far more flexibility
+in regards to breaking out multiple versions of the source tree.
+It is a good idea to give your
+.Pa /FreeBSD
+partition a lot of space (I recommend
+8-12GB) precisely for that reason.
+If you can make it 15GB I would do it.
+.Pp
+I generally do not
+.Nm cvs Cm update
+via a
+.Xr cron 8
+job.
+This is because I generally want the source to not change out from under me
+when I am developing code.
+Instead I manually update the source every so often...\& when I feel it is
+a good time.
+My recommendation is to only keep the CVS repository synchronized via
+.Xr cron 8 .
+.Sh SEE ALSO
+.Xr crontab 1 ,
+.Xr crontab 5 ,
+.Xr make.conf 5 ,
+.Xr build 7 ,
+.Xr firewall 7 ,
+.Xr release 7 ,
+.Xr tuning 7 ,
+.Xr diskless 8
+.Sh HISTORY
+The
+.Nm
+manual page was originally written by
+.An Matthew Dillon Aq dillon@FreeBSD.org
+and first appeared
+in
+.Fx 5.0 ,
+December 2002.
diff --git a/share/man/man7/environ.7 b/share/man/man7/environ.7
new file mode 100644
index 0000000..51f9a4e
--- /dev/null
+++ b/share/man/man7/environ.7
@@ -0,0 +1,271 @@
+.\" Copyright (c) 1983, 1990, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)environ.7 8.3 (Berkeley) 4/19/94
+.\" $FreeBSD$
+.\"
+.Dd April 12, 2003
+.Dt ENVIRON 7
+.Os
+.Sh NAME
+.Nm environ
+.Nd user environment
+.Sh SYNOPSIS
+.Ar extern char **environ ;
+.Sh DESCRIPTION
+An array of strings called the
+.Ar environment
+is made available by
+.Xr execve 2
+when a process begins.
+By convention these strings have the form
+.Dq Ar name=value .
+The following names are used by various commands:
+.Bl -tag -width LC_MONETARY
+.It Ev BLOCKSIZE
+The size of the block units used by several commands, most notably
+.Xr df 1 ,
+.Xr du 1
+and
+.Xr ls 1 .
+.Ev BLOCKSIZE
+may be specified in units of a byte by specifying a number,
+in units of a kilobyte by specifying a number followed by ``K'' or
+``k'', in units of a megabyte by specifying a number followed by ``M''
+or ``m'' and in units of a gigabyte by specifying a number followed
+by ``G'' or ``g''.
+Sizes less than 512 bytes or greater than a gigabyte are ignored.
+.It Ev COLUMNS
+The user's preferred width in column positions for the terminal.
+Utilities such as
+.Xr ls 1
+and
+.Xr who 1
+use this to format output into columns.
+If unset or empty, utilities will use an
+.Xr ioctl 2
+call to ask the terminal driver for the width.
+.It Ev EDITOR
+Default editor name.
+.It Ev EXINIT
+A startup list of commands read by
+.Xr ex 1
+and
+.Xr vi 1 .
+.It Ev HOME
+A user's login directory, set by
+.Xr login 1
+from the password file
+.Xr passwd 5 .
+.It Ev LANG
+This variable configures all programs which use
+.Xr setlocale 3
+to use the specified locale unless the
+.Ev LC_*
+variables are set.
+.It Ev LC_ALL
+Overrides the values of
+.Ev LC_COLLATE ,
+.Ev LC_CTYPE ,
+.Ev LC_MESSAGES ,
+.Ev LC_MONETARY ,
+.Ev LC_NUMERIC ,
+.Ev LC_TIME
+and
+.Ev LANG .
+.It Ev LC_COLLATE
+Locale to be used for ordering of strings.
+.It Ev LC_CTYPE
+Locale to be used for character classification
+(letter, space, digit, etc.) and for interpreting byte sequences as
+multibyte characters.
+.It Ev LC_MESSAGES
+Locale to be used for diagnostic messages.
+.It Ev LC_MONETARY
+Locale to be used for interpreting monetary input
+and formatting output.
+.It Ev LC_NUMERIC
+Locale to be used for interpreting numeric input and
+formatting output.
+.It Ev LC_TIME
+Locale to be used for interpreting dates input and
+for formatting output.
+.It Ev MAIL
+The location of the user's
+mailbox instead of the default in /var/mail,
+used by
+.Xr mail 1 ,
+.Xr sh 1 ,
+and many other mail clients.
+.It Ev NLSPATH
+List of directories to be searched for the message catalog referred to by
+.Ev LC_MESSAGES .
+See
+.Xr catopen 3 .
+.It Ev PAGER
+Default paginator program.
+The program specified by this variable is used by
+.Xr mail 1 ,
+.Xr man 1 ,
+.Xr ftp 1 ,
+etc, to display information which is longer than the current display.
+.It Ev PATH
+The sequence of directories, separated by colons, searched by
+.Xr csh 1 ,
+.Xr sh 1 ,
+.Xr system 3 ,
+.Xr execvp 3 ,
+etc, when looking for an executable file.
+.Ev PATH
+is set to ``/usr/bin:/bin'' initially by
+.Xr login 1 .
+.It Ev PRINTER
+The name of the default printer to be used by
+.Xr lpr 1 ,
+.Xr lpq 1 ,
+and
+.Xr lprm 1 .
+.It Ev PWD
+The current directory pathname.
+.It Ev SHELL
+The full pathname of the user's login shell.
+.It Ev TERM
+The kind of terminal for which output is to be prepared.
+This information is used by commands, such as
+.Xr nroff 1
+or
+.Xr plot 1
+which may exploit special terminal capabilities.
+See
+.Pa /usr/share/misc/termcap
+.Pq Xr termcap 5
+for a list of terminal types.
+.It Ev TERMCAP
+The string describing the terminal in
+.Ev TERM ,
+or, if
+it begins with a '/', the name of the termcap file.
+See
+.Ev TERMPATH
+below, and
+.Xr termcap 5 .
+.It Ev TERMPATH
+A sequence of pathnames of termcap files, separated by colons or spaces,
+which are searched for terminal descriptions in the order listed.
+Having
+no
+.Ev TERMPATH
+is equivalent to a
+.Ev TERMPATH
+of
+.Dq Pa $HOME/.termcap:/etc/termcap .
+.Ev TERMPATH
+is ignored if
+.Ev TERMCAP
+contains a full pathname.
+.It Ev TMPDIR
+The directory in which to store temporary files.
+Most applications use either
+.Dq /tmp
+or
+.Dq /var/tmp .
+Setting this variable will make them use another directory.
+.It Ev TZ
+The timezone to use when displaying dates.
+The normal format is a pathname relative to
+.Dq Pa /usr/share/zoneinfo .
+For example, the command
+.Dq env TZ=America/Los_Angeles date
+displays the current time in California.
+See
+.Xr tzset 3
+for more information.
+.It Ev USER
+The login name of the user.
+.El
+.Pp
+Further names may be placed in the environment by the
+.Ic export
+command and
+.Ar name=value
+arguments in
+.Xr sh 1 ,
+or by the
+.Ic setenv
+command if you use
+.Xr csh 1 .
+It is unwise to change certain
+.Xr sh 1
+variables that are frequently exported by
+.Pa .profile
+files, such as
+.Ev MAIL ,
+.Ev PS1 ,
+.Ev PS2 ,
+and
+.Ev IFS ,
+unless you know what you are doing.
+.Pp
+The current environment variables can be printed with
+.Xr env 1 ,
+.Xr set 1
+or
+.Xr printenv 1
+in
+.Xr sh 1
+and
+.Xr env 1 ,
+.Xr printenv 1
+or the
+.Cm printenv
+built-in command in
+.Xr csh 1 .
+.Sh SEE ALSO
+.Xr cd 1 ,
+.Xr csh 1 ,
+.Xr env 1 ,
+.Xr ex 1 ,
+.Xr login 1 ,
+.Xr printenv 1 ,
+.Xr sh 1 ,
+.Xr execve 2 ,
+.Xr execle 3 ,
+.Xr getenv 3 ,
+.Xr setenv 3 ,
+.Xr setlocale 3 ,
+.Xr system 3 ,
+.Xr termcap 3 ,
+.Xr termcap 5
+.Sh HISTORY
+The
+.Nm
+manual page appeared in
+.Bx 4.2 .
diff --git a/share/man/man7/ffs.7 b/share/man/man7/ffs.7
new file mode 100644
index 0000000..fc8c61a
--- /dev/null
+++ b/share/man/man7/ffs.7
@@ -0,0 +1,226 @@
+.\" Copyright (c) 2001 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris
+.\" Costello at Safeport Network Services 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.
+.\"
+.\" 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$
+.\"
+.Dd December 26, 2001
+.Dt FFS 7
+.Os
+.Sh NAME
+.Nm ffs
+.Nd Berkeley fast file system
+.Sh SYNOPSIS
+In the kernel configuration file:
+.Cd "options FFS"
+.Cd "options QUOTA"
+.Cd "options SOFTUPDATES"
+.Cd "options SUIDDIR"
+.Cd "options UFS_ACL"
+.Cd "options UFS_DIRHASH"
+.Cd "options UFS_EXTATTR"
+.Cd "options UFS_EXTATTR_AUTOSTART"
+.Pp
+In
+.Xr fstab 5 :
+.Bd -literal -compact
+/dev/disk0a /mnt ufs rw 1 1
+.Ed
+.Sh DESCRIPTION
+The Berkeley fast file system
+provides facilities to store file system data onto a disk device.
+.Nm
+has been optimized over the years
+for speed and reliability
+and is the default
+.Fx
+file system.
+.Ss Quotas
+.Bl -tag -width 2n
+.It Cd "options QUOTA"
+This option allows system administrators
+to set limits on disk usage
+on a per-user basis.
+Quotas can be used only on file systems
+mounted with the
+.Cm quota
+option;
+see
+.Xr quota 1
+and
+.Xr edquota 8 .
+.El
+.Ss Soft Updates
+.Bl -tag -width 2n
+.It Cd "options SOFTUPDATES"
+The soft updates feature tracks writes to the disk
+and enforces metadata update dependencies
+(e.g., updating free block maps)
+to ensure that the file system remains consistent.
+.Pp
+To enable soft updates on an
+.Em unmounted
+file system, use the following command:
+.Pp
+.D1 Nm tunefs Fl n Cm enable Ar fs
+.Pp
+.Ar fs
+can be either a mount point listed in
+.Xr fstab 5
+(e.g.,
+.Pa /usr ) ,
+or a disk device
+(e.g.,
+.Pa /dev/da0a ) .
+.El
+.Ss File Ownership Inheritance
+.Bl -tag -width 2n
+.It Cd "options SUIDDIR"
+For use in file sharing environments
+on networks including
+.Tn "Microsoft Windows"
+and
+.Tn "Apple Macintosh"
+computers,
+this option allows files on file systems
+mounted with the
+.Cm suiddir
+option
+to inherit the ownership of its directory,
+i.e.,
+.Dq "if it's my directory, it must be my file."
+.El
+.Ss Access Control Lists
+.Bl -tag -width 2n
+.It Cd "options UFS_ACL"
+Access control lists allow the association of
+fine-grained discretionary access control information
+with files and directories.
+This option requires the presence of the
+.Dv UFS_EXTATTR
+option, and it is recommended that
+.Dv UFS_EXTATTR_AUTOSTART
+is included as well,
+so that ACLs are enabled atomically upon mounting the file system.
+.El
+.Pp
+In order to enable support for ACLs,
+two extended attributes must be available in the
+.Dv EXTATTR_NAMESPACE_SYSTEM
+namespace:
+.Pa posix1e.acl_access ,
+which holds the access ACL,
+and
+.Pa posix1e.acl_default ,
+which holds the default ACL for directories.
+If you are using file system extended attributes,
+the following commands may be used to
+allocate space for and create the necessary EA backing files
+for ACLs in the root of each file system.
+In these examples, the root file system is used;
+see
+.Sx "Extended Attributes"
+for more details.
+.Bd -literal -offset indent
+mkdir -p /.attribute/system
+cd /.attribute/system
+extattrctl initattr -p / 388 posix1e.acl_access
+extattrctl initattr -p / 388 posix1e.acl_default
+.Ed
+.Pp
+On the next mount of the root file system,
+the attributes will be automatically started
+(if
+.Dv UFS_EXTATTR_AUTOSTART
+is included in the kernel configuration),
+and ACLs will be enabled.
+.Ss Directory Hashing
+.Bl -tag -width 2n
+.It Cd "options UFS_DIRHASH"
+Implements a hash-based lookup scheme for directories
+in order to speed up accesses to very large directories.
+.El
+.Ss Extended Attributes
+.Bl -tag -width 2n
+.It Cd "options UFS_EXTATTR"
+Extended attributes allow the association of
+additional arbitrary metadata with files and directories,
+which can be assigned and retrieved from userland
+as well as from within the kernel; see
+.Xr extattrctl 8 .
+.It Cd "options UFS_EXTATTR_AUTOSTART"
+If this option is defined,
+.Nm
+will search for a
+.Pa .attribute
+subdirectory of the file system root during the mount operation.
+If found, extended attribute support will be
+automatically started for that file system.
+.El
+.Pp
+The following
+.Xr sysctl 8
+MIBs are defined for use with
+.Nm :
+.Bl -hang -width ".Va vfs.ffs.doreallocblk"
+.It Va vfs.ffs.doasyncfree
+Asynchronously write out modified i-node and indirect blocks
+upon reallocating file system blocks to be contiguous.
+(Default: 1.)
+.It Va vfs.ffs.doreallocblks
+Enable support for the rearrangement of blocks
+to be contiguous.
+(Default: 1.)
+.El
+.Sh SEE ALSO
+.Xr quota 1 ,
+.Xr acl 3 ,
+.Xr extattr 3 ,
+.Xr edquota 8 ,
+.Xr extattrctl 8 ,
+.Xr sysctl 8
+.Rs
+.%A M. McKusick
+.%A W. Joy
+.%A S. Leffler
+.%A R. Fabry
+.%D August 1984
+.%T "A Fast File System for UNIX"
+.%J "ACM Transactions on Computer Systems"
+.%N 2
+.%V 3
+.%P 181-197
+.Re
+.Rs
+.%A M. McKusick
+.%D June 2000
+.%T "Soft Updates: A Technique for Eliminating Most Synchronous Writes in the Fast Filesystem"
+.%J "Proceedings of the Freenix Track at the 1999 Usenix Annual Technical Conference"
+.%P 71-84
+.Re
diff --git a/share/man/man7/firewall.7 b/share/man/man7/firewall.7
new file mode 100644
index 0000000..9760b9f
--- /dev/null
+++ b/share/man/man7/firewall.7
@@ -0,0 +1,443 @@
+.\" Copyright (C) 2001 Matthew Dillon. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 26, 2001
+.Dt FIREWALL 7
+.Os
+.Sh NAME
+.Nm firewall
+.Nd simple firewalls under FreeBSD
+.Sh FIREWALL BASICS
+A Firewall is most commonly used to protect an internal network
+from an outside network by preventing the outside network from
+making arbitrary connections into the internal network.
+Firewalls
+are also used to prevent outside entities from spoofing internal
+IP addresses and to isolate services such as NFS or SMBFS (Windows
+file sharing) within LAN segments.
+.Pp
+The
+.Fx
+firewalling system also has the capability to limit bandwidth using
+.Xr dummynet 4 .
+This feature can be useful when you need to guarantee a certain
+amount of bandwidth for a critical purpose.
+For example, if you
+are doing video conferencing over the Internet via your
+office T1 (1.5 MBits/s), you may wish to bandwidth-limit all other
+T1 traffic to 1 MBit/s in order to reserve at least 0.5 MBits
+for your video conferencing connections.
+Similarly if you are
+running a popular web or ftp site from a colocation facility
+you might want to limit bandwidth to prevent excessive bandwidth
+charges from your provider.
+.Pp
+Finally,
+.Fx
+firewalls may be used to divert packets or change the next-hop
+address for packets to help route them to the correct destination.
+Packet diversion is most often used to support NAT (network
+address translation), which allows an internal network using
+a private IP space to make connections to the outside for browsing
+or other purposes.
+.Pp
+Constructing a firewall may appear to be trivial, but most people
+get them wrong.
+The most common mistake is to create an exclusive
+firewall rather than an inclusive firewall.
+An exclusive firewall
+allows all packets through except for those matching a set of rules.
+An inclusive firewall allows only packets matching the ruleset
+through.
+Inclusive firewalls are much, much safer than exclusive
+firewalls but a tad more difficult to build properly.
+The
+second most common mistake is to blackhole everything except the
+particular port you want to let through.
+TCP/IP needs to be able
+to get certain types of ICMP errors to function properly - for
+example, to implement MTU discovery.
+Also, a number of common
+system daemons make reverse connections to the
+.Sy auth
+service in an attempt to authenticate the user making a connection.
+Auth is rather dangerous but the proper implementation is to return
+a TCP reset for the connection attempt rather than simply blackholing
+the packet.
+We cover these and other quirks involved with constructing
+a firewall in the sample firewall section below.
+.Sh IPFW KERNEL CONFIGURATION
+You do not need to create a custom kernel to use the IP firewalling features.
+If you enable firewalling in your
+.Em /etc/rc.conf
+(see below), the ipfw kernel module will be loaded automatically
+when necessary.
+However,
+if you are paranoid you can compile IPFW directly into the
+.Fx
+kernel by using the
+.Sy IPFIREWALL
+option set.
+If compiled in the kernel, ipfw denies all
+packets by default, which means that, if you do not load in
+a permissive ruleset via
+.Em /etc/rc.conf ,
+rebooting into your new kernel will take the network offline.
+This can prevent you from being able to access your system if you
+are not sitting at the console.
+It is also quite common to
+update a kernel to a new release and reboot before updating
+the binaries.
+This can result in an incompatibility between
+the
+.Xr ipfw 8
+program and the kernel which prevents it from running in the
+boot sequence, also resulting in an inaccessible machine.
+Because of these problems the
+.Sy IPFIREWALL_DEFAULT_TO_ACCEPT
+kernel option is also available which changes the default firewall
+to pass through all packets.
+Note, however, that using this option
+may open a small window of opportunity during booting where your
+firewall passes all packets.
+Still, it is a good option to use
+while getting up to speed with
+.Fx
+firewalling.
+Get rid of it once you understand how it all works
+to close the loophole, though.
+There is a third option called
+.Sy IPDIVERT
+which allows you to use the firewall to divert packets to a user program
+and is necessary if you wish to use
+.Xr natd 8
+to give private internal networks access to the outside world.
+If you want to be able to limit the bandwidth used by certain types of
+traffic, the
+.Sy DUMMYNET
+option must be used to enable
+.Em ipfw pipe
+rules.
+.Sh SAMPLE IPFW-BASED FIREWALL
+Here is an example ipfw-based firewall taken from a machine with three
+interface cards.
+fxp0 is connected to the 'exposed' LAN.
+Machines
+on this LAN are dual-homed with both internal 10.\& IP addresses and
+Internet-routed IP addresses.
+In our example, 192.100.5.x represents
+the Internet-routed IP block while 10.x.x.x represents the internal
+networks.
+While it is not relevant to the example, 10.0.1.x is
+assigned as the internal address block for the LAN on fxp0, 10.0.2.x
+for the LAN on fxp1, and 10.0.3.x for the LAN on fxp2.
+.Pp
+In this example we want to isolate all three LANs from the Internet
+as well as isolate them from each other, and we want to give all
+internal addresses access to the Internet through a NAT gateway running
+on this machine.
+To make the NAT gateway work, the firewall machine
+is given two Internet-exposed addresses on fxp0 in addition to an
+internal 10.\& address on fxp0: one exposed address (not shown)
+represents the machine's official address, and the second exposed
+address (192.100.5.5 in our example) represents the NAT gateway
+rendezvous IP.
+We make the example more complex by giving the machines
+on the exposed LAN internal 10.0.0.x addresses as well as exposed
+addresses.
+The idea here is that you can bind internal services
+to internal addresses even on exposed machines and still protect
+those services from the Internet.
+The only services you run on
+exposed IP addresses would be the ones you wish to expose to the
+Internet.
+.Pp
+It is important to note that the 10.0.0.x network in our example
+is not protected by our firewall.
+You must make sure that your
+Internet router protects this network from outside spoofing.
+Also, in our example, we pretty much give the exposed hosts free
+reign on our internal network when operating services through
+internal IP addresses (10.0.0.x).
+This is somewhat of security
+risk: what if an exposed host is compromised?
+To remove the
+risk and force everything coming in via LAN0 to go through
+the firewall, remove rules 01010 and 01011.
+.Pp
+Finally, note that the use of internal addresses represents a
+big piece of our firewall protection mechanism.
+With proper
+spoofing safeguards in place, nothing outside can directly
+access an internal (LAN1 or LAN2) host.
+.Bd -literal
+# /etc/rc.conf
+#
+firewall_enable="YES"
+firewall_type="/etc/ipfw.conf"
+
+# temporary port binding range let
+# through the firewall.
+#
+# NOTE: heavily loaded services running through the firewall may require
+# a larger port range for local-size binding. 4000-10000 or 4000-30000
+# might be a better choice.
+ip_portrange_first=4000
+ip_portrange_last=5000
+\&...
+.Ed
+.Pp
+.Bd -literal
+# /etc/ipfw.conf
+#
+# FIREWALL: the firewall machine / nat gateway
+# LAN0 10.0.0.X and 192.100.5.X (dual homed)
+# LAN1 10.0.1.X
+# LAN2 10.0.2.X
+# sw: ethernet switch (unmanaged)
+#
+# 192.100.5.x represents IP addresses exposed to the Internet
+# (i.e. Internet routeable). 10.x.x.x represent internal IPs
+# (not exposed)
+#
+# [LAN1]
+# ^
+# |
+# FIREWALL -->[LAN2]
+# |
+# [LAN0]
+# |
+# +--> exposed host A
+# +--> exposed host B
+# +--> exposed host C
+# |
+# INTERNET (secondary firewall)
+# ROUTER
+# |
+# [Internet]
+#
+# NOT SHOWN: The INTERNET ROUTER must contain rules to disallow
+# all packets with source IP addresses in the 10. block in order
+# to protect the dual-homed 10.0.0.x block. Exposed hosts are
+# not otherwise protected in this example - they should only bind
+# exposed services to exposed IPs but can safely bind internal
+# services to internal IPs.
+#
+# The NAT gateway works by taking packets sent from internal
+# IP addresses to external IP addresses and routing them to natd, which
+# is listening on port 8668. This is handled by rule 00300. Data coming
+# back to natd from the outside world must also be routed to natd using
+# rule 00301. To make the example interesting, we note that we do
+# NOT have to run internal requests to exposed hosts through natd
+# (rule 00290) because those exposed hosts know about our
+# 10. network. This can reduce the load on natd. Also note that we
+# of course do not have to route internal<->internal traffic through
+# natd since those hosts know how to route our 10. internal network.
+# The natd command we run from /etc/rc.local is shown below. See
+# also the in-kernel version of natd, ipnat.
+#
+# natd -s -u -a 208.161.114.67
+#
+#
+add 00290 skipto 1000 ip from 10.0.0.0/8 to 192.100.5.0/24
+add 00300 divert 8668 ip from 10.0.0.0/8 to not 10.0.0.0/8
+add 00301 divert 8668 ip from not 10.0.0.0/8 to 192.100.5.5
+
+# Short cut the rules to avoid running high bandwidths through
+# the entire rule set. Allow established tcp connections through,
+# and shortcut all outgoing packets under the assumption that
+# we need only firewall incoming packets.
+#
+# Allowing established tcp connections through creates a small
+# hole but may be necessary to avoid overloading your firewall.
+# If you are worried, you can move the rule to after the spoof
+# checks.
+#
+add 01000 allow tcp from any to any established
+add 01001 allow all from any to any out via fxp0
+add 01001 allow all from any to any out via fxp1
+add 01001 allow all from any to any out via fxp2
+
+# Spoof protection. This depends on how well you trust your
+# internal networks. Packets received via fxp1 MUST come from
+# 10.0.1.x. Packets received via fxp2 MUST come from 10.0.2.x.
+# Packets received via fxp0 cannot come from the LAN1 or LAN2
+# blocks. We cannot protect 10.0.0.x here, the Internet router
+# must do that for us.
+#
+add 01500 deny all from not 10.0.1.0/24 in via fxp1
+add 01500 deny all from not 10.0.2.0/24 in via fxp2
+add 01501 deny all from 10.0.1.0/24 in via fxp0
+add 01501 deny all from 10.0.2.0/24 in via fxp0
+
+# In this example rule set there are no restrictions between
+# internal hosts, even those on the exposed LAN (as long as
+# they use an internal IP address). This represents a
+# potential security hole (what if an exposed host is
+# compromised?). If you want full restrictions to apply
+# between the three LANs, firewalling them off from each
+# other for added security, remove these two rules.
+#
+# If you want to isolate LAN1 and LAN2, but still want
+# to give exposed hosts free reign with each other, get
+# rid of rule 01010 and keep rule 01011.
+#
+# (commented out, uncomment for less restrictive firewall)
+#add 01010 allow all from 10.0.0.0/8 to 10.0.0.0/8
+#add 01011 allow all from 192.100.5.0/24 to 192.100.5.0/24
+#
+
+# SPECIFIC SERVICES ALLOWED FROM SPECIFIC LANS
+#
+# If using a more restrictive firewall, allow specific LANs
+# access to specific services running on the firewall itself.
+# In this case we assume LAN1 needs access to filesharing running
+# on the firewall. If using a less restrictive firewall
+# (allowing rule 01010), you do not need these rules.
+#
+add 01012 allow tcp from 10.0.1.0/8 to 10.0.1.1 139
+add 01012 allow udp from 10.0.1.0/8 to 10.0.1.1 137,138
+
+# GENERAL SERVICES ALLOWED TO CROSS INTERNAL AND EXPOSED LANS
+#
+# We allow specific UDP services through: DNS lookups, ntalk, and ntp.
+# Note that internal services are protected by virtue of having
+# spoof-proof internal IP addresses (10. net), so these rules
+# really only apply to services bound to exposed IPs. We have
+# to allow UDP fragments or larger fragmented UDP packets will
+# not survive the firewall.
+#
+# If we want to expose high-numbered temporary service ports
+# for things like DNS lookup responses we can use a port range,
+# in this example 4000-65535, and we set to /etc/rc.conf variables
+# on all exposed machines to make sure they bind temporary ports
+# to the exposed port range (see rc.conf example above)
+#
+add 02000 allow udp from any to any 4000-65535,domain,ntalk,ntp
+add 02500 allow udp from any to any frag
+
+# Allow similar services for TCP. Again, these only apply to
+# services bound to exposed addresses. NOTE: we allow 'auth'
+# through but do not actually run an identd server on any exposed
+# port. This allows the machine being authed to respond with a
+# TCP RESET. Throwing the packet away would result in delays
+# when connecting to remote services that do reverse ident lookups.
+#
+# Note that we do not allow tcp fragments through, and that we do
+# not allow fragments in general (except for UDP fragments). We
+# expect the TCP mtu discovery protocol to work properly so there
+# should be no TCP fragments.
+#
+add 03000 allow tcp from any to any http,https
+add 03000 allow tcp from any to any 4000-65535,ssh,smtp,domain,ntalk
+add 03000 allow tcp from any to any auth,pop3,ftp,ftp-data
+
+# It is important to allow certain ICMP types through, here is a list
+# of general ICMP types. Note that it is important to let ICMP type 3
+# through.
+#
+# 0 Echo Reply
+# 3 Destination Unreachable (used by TCP MTU discovery, aka
+# packet-too-big)
+# 4 Source Quench (typically not allowed)
+# 5 Redirect (typically not allowed - can be dangerous!)
+# 8 Echo
+# 11 Time Exceeded
+# 12 Parameter Problem
+# 13 Timestamp
+# 14 Timestamp Reply
+#
+# Sometimes people need to allow ICMP REDIRECT packets, which is
+# type 5, but if you allow it make sure that your Internet router
+# disallows it.
+
+add 04000 allow icmp from any to any icmptypes 0,3,8,11,12,13,14
+
+# log any remaining fragments that get through. Might be useful,
+# otherwise do not bother. Have a final deny rule as a safety to
+# guarantee that your firewall is inclusive no matter how the kernel
+# is configured.
+#
+add 05000 deny log ip from any to any frag
+add 06000 deny all from any to any
+.Ed
+.Sh PORT BINDING INTERNAL AND EXTERNAL SERVICES
+We have mentioned multi-homing hosts and binding services to internal or
+external addresses but we have not really explained it.
+When you have a
+host with multiple IP addresses assigned to it, you can bind services run
+on that host to specific IPs or interfaces rather than all IPs.
+Take
+the firewall machine for example: with three interfaces
+and two exposed IP addresses
+on one of those interfaces, the firewall machine is known by 5 different
+IP addresses (10.0.0.1, 10.0.1.1, 10.0.2.1, 192.100.5.5, and say
+192.100.5.1).
+If the firewall is providing file sharing services to the
+windows LAN segment (say it is LAN1), you can use samba's 'bind interfaces'
+directive to specifically bind it to just the LAN1 IP address.
+That
+way the file sharing services will not be made available to other LAN
+segments.
+The same goes for NFS.
+If LAN2 has your UNIX engineering
+workstations, you can tell nfsd to bind specifically to 10.0.2.1.
+You
+can specify how to bind virtually every service on the machine and you
+can use a light
+.Xr jail 8
+to indirectly bind services that do not otherwise give you the option.
+.Sh SEE ALSO
+.Xr dummynet 4 ,
+.Xr ipnat 5 ,
+.Xr rc.conf 5 ,
+.Xr smb.conf 5 Pq Pa ports/net/samba ,
+.Xr samba 7 Pq Pa ports/net/samba ,
+.Xr config 8 ,
+.Xr ipfw 8 ,
+.Xr ipnat 8 ,
+.Xr jail 8 ,
+.Xr natd 8 ,
+.Xr nfsd 8
+.Sh ADDITIONAL READING
+.Bl -tag -width indent
+.It Nm Ipfilter
+.Xr ipf 5 ,
+.Xr ipf 8 ,
+.Xr ipfstat 8
+.It Nm Packet Filter
+.Xr pf.conf 5 ,
+.Xr pfctl 8 ,
+.Xr pflogd 8
+.El
+.Sh HISTORY
+The
+.Nm
+manual page was originally written by
+.An Matthew Dillon
+and first appeared
+in
+.Fx 4.3 ,
+May 2001.
diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7
new file mode 100644
index 0000000..2ca54b3
--- /dev/null
+++ b/share/man/man7/hier.7
@@ -0,0 +1,839 @@
+.\" Copyright (c) 1990, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)hier.7 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd May 25, 2008
+.Dt HIER 7
+.Os
+.Sh NAME
+.Nm hier
+.Nd layout of file systems
+.Sh DESCRIPTION
+A sketch of the file system hierarchy.
+.Bl -tag -width ".Pa /libexec/"
+.It Pa /
+root directory of the file system
+.It Pa /bin/
+user utilities fundamental to both single-user and multi-user environments
+.It Pa /boot/
+programs and configuration files used during operating system bootstrap
+.Pp
+.Bl -tag -width ".Pa defaults/" -compact
+.It Pa defaults/
+default bootstrapping configuration files; see
+.Xr loader.conf 5
+.It Pa kernel/
+pure kernel executable (the operating system loaded into memory
+at boot time).
+.It Pa modules/
+third-party loadable kernel modules;
+see
+.Xr kldstat 8
+.El
+.It Pa /cdrom/
+default mount point for CD-ROM drives
+(created by
+.Xr sysinstall 8 )
+.It Pa /compat/
+normally a link to
+.Pa /usr/compat .
+If not, then the
+.Pa /usr/compat
+comments apply
+(created by
+.Xr sysinstall 8 )
+.It Pa /dev/
+device special files managed by
+.Xr devfs 5
+.Pp
+.Bl -tag -width ".Pa net/" -compact
+.It Pa fd/
+file descriptor files;
+see
+.Xr \&fd 4
+.It Pa net/
+network devices
+.El
+.It Pa /dist/
+mount point used by
+.Xr sysinstall 8
+.It Pa /etc/
+system configuration files and scripts
+.Pp
+.Bl -tag -width ".Pa bluetooth/" -compact
+.It Pa defaults/
+default system configuration files;
+see
+.Xr rc 8
+.It Pa bluetooth/
+bluetooth configuration files
+.It Pa gnats/
+gnats configuration files;
+see
+.Xr send-pr 1
+.It Pa localtime
+local timezone information;
+see
+.Xr ctime 3
+.It Pa mail/
+Sendmail control files
+.It Pa mtree/
+mtree configuration files;
+see
+.Xr mtree 8
+.It Pa namedb/
+named configuration files;
+see
+.Xr named 8
+.It Pa pam.d/
+configuration files for the Pluggable Authentication Modules (PAM)
+library
+.It Pa periodic/
+scripts that are run daily, weekly, and monthly, via
+.Xr cron 8 ;
+see
+.Xr periodic 8
+.It Pa rc.d/
+System and daemon startup/control scripts;
+see
+.Xr rc 8
+.It Pa security/
+OpenBSM audit configuration files;
+see
+.Xr audit 8
+.It Pa ppp/
+ppp configuration files;
+see
+.Xr ppp 8
+.It Pa ssh/
+OpenSSH configuration files;
+see
+.Xr ssh 1
+.It Pa ssl/
+OpenSSL configuration files
+.El
+.It Pa /lib/
+critical system libraries needed for binaries in
+.Pa /bin
+and
+.Pa /sbin
+.Pp
+.Bl -tag -width ".Pa geom/" -compact
+.It Pa geom/
+class-specific libraries for the
+.Xr geom 8
+utility
+.El
+.It Pa /libexec/
+critical system utilities needed for binaries in
+.Pa /bin
+and
+.Pa /sbin
+.It Pa /media/
+contains subdirectories to be used as mount points
+for removable media such as CDs, USB drives, and
+floppy disks
+.It Pa /mnt/
+empty directory commonly used by
+system administrators as a temporary mount point
+.It Pa /proc/
+process file system;
+see
+.Xr procfs 5
+.It Pa /rescue/
+statically linked programs for emergency recovery;
+see
+.Xr rescue 8
+.It Pa /root/
+root's HOME directory
+.It Pa /sbin/
+system programs and administration utilities
+fundamental to both single-user and multi-user environments
+.It Pa /tmp/
+temporary files that are not guaranteed to persist across system reboots
+.It Pa /usr/
+contains the majority of user utilities and applications
+.Pp
+.Bl -tag -width ".Pa libdata/" -compact
+.It Pa bin/
+common utilities, programming tools, and applications
+.It Pa compat/
+files needed to support binary compatibility with other operating systems,
+such as Linux
+(created by
+.Xr sysinstall 8 )
+.It Pa games/
+useful and semi-frivolous programs
+.It Pa include/
+standard C include files
+.Pp
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa altq/
+C include files for alternate queueing
+.It Pa arpa/
+C include files for Internet service protocols
+.It Pa bsnmp/
+C include files for the SNMP daemon
+.It Pa c++/
+C++ include files
+.It Pa cam/
+C include files for the Common Access Methods Layer
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa scsi/
+The SCSI device on top of CAM
+.El
+.It Pa dev/
+C include files for programming various
+.Fx
+devices
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa ic/
+Various header files describing driver- and bus-independent
+hardware circuits
+.It Pa ofw/
+Open Firmware support
+.It Pa pbio/
+8255 PPI cards;
+see
+.Xr pbio 4
+.It Pa ppbus/
+The parallel port bus;
+see
+.Xr ppbus 4
+.It Pa usb/
+The USB subsystem
+.It Pa usb2/include
+The USB subsystem
+.It Pa utopia/
+Physical chip driver for ATM interfaces;
+see
+.Xr utopia 4
+.It Pa wi/
+The
+.Xr wi 4
+WaveLAN driver
+.El
+.It Pa fs/
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa fdescfs/
+per-process file descriptors file system
+.It Pa fifofs/
+.St -p1003.1
+FIFOs file system
+.It Pa msdosfs/
+MS-DOS file system
+.It Pa ntfs/
+NTFS file system
+.It Pa nullfs/
+loopback file system
+.It Pa nwfs/
+NetWare file system
+.It Pa portalfs/
+portal file system
+.It Pa procfs/
+process file system
+.It Pa smbfs/
+SMB/CIFS file system
+.It Pa udf/
+UDF file system
+.It Pa unionfs
+union file system
+.El
+.It Pa geom/
+GEOM framework
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa concat/
+CONCAT GEOM class
+.It Pa gate/
+GATE GEOM class
+.It Pa mirror/
+MIRROR GEOM class
+.It Pa nop/
+NOP GEOM class
+.It Pa raid3/
+RAID3 GEOM class
+.It Pa stripe/
+STRIPE GEOM class
+.El
+.Pp
+.It Pa isc/
+ISC utility library libisc include files
+.It Pa isofs/
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa cd9660/
+iso9660 file system
+.El
+.It Pa libmilter/
+C include files for libmilter,
+the
+.Xr sendmail 8
+mail filter API
+.It Pa machine/
+machine-specific C include files
+.It Pa net/
+miscellaneous network C include files
+.It Pa netatalk/
+Appletalk protocol
+.It Pa netinet/
+C include files for Internet standard protocols;
+see
+.Xr inet 4
+.It Pa netinet6/
+C include files for Internet protocol version 6;
+see
+.Xr inet6 4
+.It Pa netipsec/
+kernel key-management service;
+see
+.Xr ipsec 4
+.It Pa netipx/
+IPX/SPX protocol stacks
+.It Pa netnatm/
+NATM include files;
+see
+.Xr natm 4
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa api/
+include files for the signalling API
+.It Pa msg/
+include files that describe signalling messages and
+declare associated functions
+.It Pa saal/
+include files for the signalling AAL layer
+.It Pa sig/
+include files for the UNI signalling protocol
+.El
+.It Pa netsmb/
+SMB/CIFS requester
+.It Pa nfs/
+C include files for NFS (Network File System)
+.It Pa objc/
+Objective C include files
+.It Pa openssl/
+OpenSSL (Cryptography/SSL toolkit) headers
+.It Pa pccard/
+PC-CARD controllers
+.It Pa protocols/
+C include files for Berkeley service protocols
+.It Pa readline/
+get a line from a user, with editing;
+see
+.Xr readline 3
+.It Pa rpc/
+remote procedure calls;
+see
+.Xr rpc 3
+.It Pa rpcsvc/
+definition of RPC service structures; see
+.Xr rpc 3
+.It Pa security/
+PAM; see
+.Xr pam 8
+.It Pa sys/
+system C include files (kernel data structures)
+.\" .It Pa tcl/
+.\" Tcl language;
+.\" see
+.\" .Xr Tcl n
+.\" .Bl -tag -width ".Pa kerberos5/" -compact
+.\" .It Pa generic/
+.\" ???
+.\" .It Pa unix/
+.\" ???
+.\" .El
+.It Pa ufs/
+C include files for UFS (The U-word File System)
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa ffs/
+Fast file system
+.It Pa ufs/
+UFS file system
+.El
+.It Pa vm/
+virtual memory;
+see
+.Xr vmstat 8
+.El
+.Pp
+.It Pa lib/
+shared and archive
+.Xr ar 1 Ns -type
+libraries
+.Bl -tag -width Fl -compact
+.It Pa aout/
+a.out archive libraries
+.It Pa compat/
+shared libraries for compatibility
+.Bl -tag -width Fl -compact
+.It Pa aout/
+a.out backward compatibility libraries
+.El
+.It Pa dtrace/
+DTrace library scripts
+.It Pa engines/
+OpenSSL (Cryptography/SSL toolkit) dynamically loadable engines
+.El
+.Pp
+.It Pa libdata/
+miscellaneous utility data files
+.Bl -tag -width Fl -compact
+.It Pa gcc/
+.Xr gcc 1
+configuration data
+.It Pa ldscripts/
+linker scripts;
+see
+.Xr ld 1
+.It Pa lint/
+various prebuilt lint libraries;
+see
+.Xr lint 1
+.El
+.Pp
+.It Pa libexec/
+system daemons & system utilities (executed by other programs)
+.Bl -tag -width Fl -compact
+.It Pa aout/
+utilities to manipulate a.out executables
+.It Pa elf/
+utilities to manipulate ELF executables
+.It Pa lpr/
+utilities and filters for LP print system;
+see
+.Xr lpr 1
+.It Pa sendmail/
+the
+.Xr sendmail 8
+binary;
+see
+.Xr mailwrapper 8
+.It Pa sm.bin/
+restricted shell for
+.Xr sendmail 8 ;
+see
+.Xr smrsh 8
+.El
+.Pp
+.It Pa local/
+local executables, libraries, etc.
+Also used as the default destination for the
+.Fx
+ports framework.
+Within local/, the general layout sketched out by
+.Nm
+for /usr
+should be used.
+Exceptions are the man directory (directly under local/
+rather than under local/share/), ports documentation (in share/doc/<port>/),
+and /usr/local/etc (mimics /etc).
+.It Pa obj/
+architecture-specific target tree produced by building the /usr/src tree
+.It Pa ports/
+The
+.Fx
+ports collection (optional).
+.It Pa sbin/
+system daemons & system utilities (executed by users)
+.It Pa share/
+architecture-independent files
+.Pp
+.Bl -tag -width ".Pa calendar/" -compact
+.It Pa calendar/
+a variety of pre-fab calendar files;
+see
+.Xr calendar 1
+.It Pa dict/
+word lists;
+see
+.Xr look 1
+.Pp
+.Bl -tag -width Fl -compact
+.It Pa freebsd
+.Fx Ns -specific
+terms, proper names, and jargon
+.It Pa words
+common words
+.It Pa web2
+words from Webster's 2nd International
+.It Pa papers/
+reference databases;
+see
+.Xr refer 1
+.El
+.Pp
+.It Pa doc/
+miscellaneous documentation;
+source for most of the printed
+.Bx
+manuals (available
+from the
+.Tn USENIX
+association)
+.Bl -tag -width Fl -compact
+.It Pa FAQ/
+Frequently Asked Questions
+.It Pa IPv6/
+implementation notes for IPv6
+.It Pa bind/
+documents pertaining to BIND (the Berkeley Internet Name Domain)
+.It Pa es/
+Spanish translations of documents in /usr/share/doc
+.It Pa handbook/
+.Fx
+Handbook
+.It Pa ja/
+Japanese translations of documents in /usr/share/doc
+.It Pa legal/
+License files for vendor supplied firmwares
+.It Pa ncurses/
+HTML documents pertaining to ncurses;
+see
+.Xr ncurses 3
+.It Pa ntp/
+HTML documents pertaining to the Network Time Protocol
+.It Pa papers/
+UNIX Papers
+.It Pa psd/
+UNIX Programmer's Supplementary Documents
+.It Pa ru/
+Russian translations of documents in /usr/share/doc
+.It Pa smm/
+UNIX System Manager's Manual
+.It Pa tutorials/
+.Fx
+tutorials
+.It Pa usd/
+UNIX User's Supplementary Documents
+.It Pa zh/
+Chinese translations of documents in /usr/share/doc
+.El
+.Pp
+.It Pa examples/
+various examples for users and programmers
+.It Pa games/
+ASCII text files used by various games
+.It Pa groff_font/
+device description file for device name
+.It Pa info/
+GNU Info hypertext system
+.It Pa locale/
+localization files;
+see
+.Xr setlocale 3
+.It Pa man/
+manual pages
+.It Pa me/
+macros for use with the me macro package;
+see
+.Xr me 7
+.It Pa misc/
+miscellaneous system-wide ASCII text files
+.Bl -tag -width Fl -compact
+.It Pa fonts/
+???
+.It Pa termcap
+terminal characteristics database;
+see
+.Xr termcap 5
+.El
+.It Pa mk/
+templates for make;
+see
+.Xr make 1
+.It Pa nls/
+national language support files;
+see
+.Xr mklocale 1
+.It Pa security/
+data files for security policies such as
+.Xr mac_lomac 4
+.It Pa sendmail/
+.Xr sendmail 8
+configuration files
+.It Pa skel/
+example
+.Pa .\&
+(dot) files for new accounts
+.It Pa snmp/
+MIBs, example files and tree definitions for the SNMP daemon.
+.Bl -tag -width Fl -compact
+.It Pa defs/
+Tree definition files for use with
+.Xr gensnmptree 1
+.It Pa mibs/
+MIB files
+.El
+.It Pa syscons/
+files used by syscons;
+see
+.Xr syscons 4
+.Bl -tag -width ".Pa scrnmaps/" -compact
+.It Pa fonts/
+console fonts;
+see
+.Xr vidcontrol 1
+and
+.Xr vidfont 1
+.It Pa keymaps/
+console keyboard maps;
+see
+.Xr kbdcontrol 1
+and
+.Xr kbdmap 1
+.It Pa scrnmaps/
+console screen maps
+.El
+.It Pa tabset/
+tab description files for a variety of terminals; used in
+the termcap file;
+see
+.Xr termcap 5
+.It Pa tmac/
+text processing macros;
+see
+.Xr nroff 1
+and
+.Xr troff 1
+.It Pa vi/
+localization support and utilities for
+.Xr vi 1
+.It Pa zoneinfo/
+timezone configuration information;
+see
+.Xr tzfile 5
+.El
+.It Pa src/
+.Bx ,
+third-party, and/or local source files
+.Pp
+.Bl -tag -width ".Pa kerberos5/" -compact
+.It Pa bin/
+source code for files in /bin
+.It Pa contrib/
+source code for contributed software
+.It Pa crypto/
+source code for contributed cryptography software
+.It Pa etc/
+source code for files in /etc
+.It Pa games/
+source code for files in /usr/games
+.It Pa gnu/
+Utilities covered by the GNU General Public License
+.It Pa include/
+source code for files in /usr/include
+.It Pa kerberos5/
+build infrastructure for kerberos version 5
+.It Pa lib/
+source code for files in /usr/lib
+.It Pa libexec/
+source code for files in /usr/libexec
+.It Pa release/
+files required to produce a
+.Fx
+release
+.It Pa sbin/
+source code for files in /sbin
+.It Pa secure/
+build directory for files in /usr/src/crypto
+.It Pa share/
+source for files in /usr/share
+.It Pa sys/
+kernel source code
+.It Pa tools/
+tools used for maintenance and testing of
+.Fx
+.It Pa usr.bin/
+source code for files in /usr/bin
+.It Pa usr.sbin/
+source code for files in /usr/sbin
+.El
+.El
+.It Pa /var/
+multi-purpose log, temporary, transient, and spool files
+.Pp
+.Bl -tag -width ".Pa preserve/" -compact
+.It Pa account/
+system accounting files
+.Pp
+.Bl -tag -width Fl -compact
+.It Pa acct
+execution accounting file;
+see
+.Xr acct 5
+.El
+.Pp
+.It Pa at/
+timed command scheduling files;
+see
+.Xr \&at 1
+.Bl -tag -width ".Pa preserve/" -compact
+.It Pa jobs/
+directory containing job files
+.It Pa spool/
+directory containing output spool files
+.El
+.Pp
+.It Pa backups/
+miscellaneous backup files
+.It Pa crash/
+default directory to store kernel crash dumps; see
+.Xr crash 8
+and
+.Xr savecore 8
+.It Pa cron/
+files used by cron;
+see
+.Xr cron 8
+.Bl -tag -width ".Pa preserve/" -compact
+.It Pa tabs/
+crontab files;
+see
+.Xr crontab 5
+.El
+.Pp
+.It Pa db/
+miscellaneous automatically generated system-specific database files
+.It Pa empty/
+empty directory for use by programs that need a specifically empty directory.
+Used for instance by
+.Xr sshd 8
+for privilege separation.
+.It Pa games/
+miscellaneous game status and score files
+.It Pa heimdal/
+kerberos server databases; see
+.Xr kdc 8
+.It Pa log/
+miscellaneous system log files
+.Pp
+.Bl -tag -width Fl -compact
+.It Pa wtmp
+login/logout log;
+see
+.Xr wtmp 5
+.El
+.Pp
+.It Pa mail/
+user mailbox files
+.It Pa msgs/
+system messages database;
+see
+.Xr msgs 1
+.It Pa preserve/
+temporary home of files preserved after an accidental death
+of an editor;
+see
+.Xr \&ex 1
+.It Pa quotas/
+file system quota information files
+.It Pa run/
+system information files describing various info about
+system since it was booted
+.Pp
+.Bl -tag -width Fl -compact
+.It Pa named/
+writable by the
+.Dq bind
+user; see
+.Xr named 8
+.It Pa ppp/
+writable by the
+.Dq network
+group for command connection sockets; see
+.Xr ppp 8
+.It Pa utmp
+database of current users;
+see
+.Xr utmp 5
+.El
+.Pp
+.It Pa rwho/
+rwho data files;
+see
+.Xr rwhod 8 ,
+.Xr rwho 1 ,
+and
+.Xr ruptime 1
+.It Pa spool/
+miscellaneous printer and mail system spooling directories
+.Pp
+.Bl -tag -width Fl -compact
+.It Pa clientmqueue/
+undelivered submission mail queue;
+see
+.Xr sendmail 8
+.It Pa ftp/
+commonly ~ftp; the anonymous ftp root directory
+.It Pa mqueue/
+undelivered mail queue;
+see
+.Xr sendmail 8
+.It Pa output/
+line printer spooling directories
+.El
+.Pp
+.It Pa tmp/
+temporary files that are kept between system reboots
+.Bl -tag -width Fl -compact
+.It Pa vi.recover/
+the directory where recovery files are stored
+.El
+.It Pa yp/
+the NIS maps
+.El
+.El
+.Sh NOTES
+This manual page documents the default
+.Fx
+file system layout, but
+the actual hierarchy on a given system is defined at the system
+administrator's discretion.
+A well-maintained installation will include a customized version of
+this document.
+.Sh SEE ALSO
+.Xr apropos 1 ,
+.Xr find 1 ,
+.Xr finger 1 ,
+.Xr grep 1 ,
+.Xr ls 1 ,
+.Xr whatis 1 ,
+.Xr whereis 1 ,
+.Xr which 1 ,
+.Xr fd 4 ,
+.Xr devfs 5 ,
+.Xr fsck 8
+.Sh HISTORY
+A
+.Nm
+manual page appeared in
+.At v7 .
diff --git a/share/man/man7/hostname.7 b/share/man/man7/hostname.7
new file mode 100644
index 0000000..713a8b1
--- /dev/null
+++ b/share/man/man7/hostname.7
@@ -0,0 +1,94 @@
+.\" Copyright (c) 1987, 1990, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)hostname.7 8.2 (Berkeley) 12/30/93
+.\" $FreeBSD$
+.\"
+.Dd December 30, 1993
+.Dt HOSTNAME 7
+.Os
+.Sh NAME
+.Nm hostname
+.Nd host name resolution description
+.Sh DESCRIPTION
+Hostnames are domains, where a domain is a hierarchical, dot-separated
+list of subdomains; for example, the machine monet, in the Berkeley
+subdomain of the EDU subdomain of the Internet would be represented as
+.Pp
+.Dl monet.Berkeley.EDU
+.Pp
+(with no trailing dot).
+.Pp
+Hostnames are often used with network client and server programs,
+which must generally translate the name to an address for use.
+(This function is generally performed by the library routine
+.Xr gethostbyname 3 . )
+Hostnames are resolved by the Internet name resolver in the following
+fashion.
+.Pp
+If the name consists of a single component, i.e., contains no dot,
+and if the environment variable
+.Dq Ev HOSTALIASES
+is set to the name of a file,
+that file is searched for any string matching the input hostname.
+The file should consist of lines made up of two white-space separated strings,
+the first of which is the hostname alias,
+and the second of which is the complete hostname
+to be substituted for that alias.
+If a case-insensitive match is found between the hostname to be resolved
+and the first field of a line in the file, the substituted name is looked
+up with no further processing.
+.Pp
+If the input name ends with a trailing dot,
+the trailing dot is removed,
+and the remaining name is looked up with no further processing.
+.Pp
+If the input name does not end with a trailing dot, it is looked up
+by searching through a list of domains until a match is found.
+The default search list includes first the local domain,
+then its parent domains with at least 2 name components (longest first).
+For example,
+in the domain CS.Berkeley.EDU, the name lithium.CChem will be checked first
+as lithium.CChem.CS.Berkeley.EDU and then as lithium.CChem.Berkeley.EDU.
+Lithium.CChem.EDU will not be tried, as there is only one component
+remaining from the local domain.
+The search path can be changed from the default
+by a system-wide configuration file (see
+.Xr resolver 5 ) .
+.Sh SEE ALSO
+.Xr gethostbyname 3 ,
+.Xr resolver 5 ,
+.Xr mailaddr 7 ,
+.Xr named 8
+.Sh HISTORY
+.Nm Hostname
+appeared in
+.Bx 4.2 .
diff --git a/share/man/man7/intro.7 b/share/man/man7/intro.7
new file mode 100644
index 0000000..1d9968c
--- /dev/null
+++ b/share/man/man7/intro.7
@@ -0,0 +1,47 @@
+.\" Copyright (c) 1983, 1990, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)intro.7 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt INTRO 7
+.Os
+.Sh NAME
+.Nm intro
+.Nd miscellaneous information pages
+.Sh DESCRIPTION
+This section contains miscellaneous documentation.
+.Sh HISTORY
+The
+.Nm
+section manual page appeared in
+.Bx 4.2 .
diff --git a/share/man/man7/maclabel.7 b/share/man/man7/maclabel.7
new file mode 100644
index 0000000..05c3654
--- /dev/null
+++ b/share/man/man7/maclabel.7
@@ -0,0 +1,98 @@
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by Chris Costello
+.\" at Safeport Network Services and Network Associates 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 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$
+.\"
+.Dd October 25, 2002
+.Os
+.Dt MACLABEL 7
+.Sh NAME
+.Nm maclabel
+.Nd Mandatory Access Control label format
+.Sh DESCRIPTION
+If Mandatory Access Control, or MAC, is enabled in the kernel,
+then in addition to the traditional credentials,
+each subject
+(typically a user or a socket)
+and object
+(file system object, socket, etc.\&)
+is given a
+.Em "MAC label" .
+The MAC label specifies the necessary subject-specific or
+object-specific information necessary for a MAC security policy
+.\" .Pq Xr mac 9
+to enforce access control on the subject/object.
+.Pp
+The format for a MAC label is defined as follows:
+.Pp
+.Sm off
+.D1 Ar policy1 No / Ar qualifier1 , policy2 No / Ar qualifier2 , No ...
+.Sm on
+.Pp
+A MAC label consists of a policy name,
+followed by a forward slash,
+followed by the subject or object's qualifier,
+optionally followed by a comma and one or more additional policy labels.
+For example:
+.Bd -literal -offset indent
+biba/low(low-low)
+biba/high(low-high),mls/equal(equal-equal),partition/0
+.Ed
+.Sh SEE ALSO
+.Xr mac 3 ,
+.Xr posix1e 3 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr login.conf 5 ,
+.Xr getfmac 8 ,
+.Xr getpmac 8 ,
+.Xr ifconfig 8 ,
+.Xr setfmac 8 ,
+.Xr setpmac 8 ,
+.Xr mac 9
+.Sh HISTORY
+MAC first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+This software was contributed to the
+.Fx
+Project by NAI Labs, the Security Research Division of Network Associates
+Inc.\& under DARPA/SPAWAR contract N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
diff --git a/share/man/man7/mailaddr.7 b/share/man/man7/mailaddr.7
new file mode 100644
index 0000000..07370fb
--- /dev/null
+++ b/share/man/man7/mailaddr.7
@@ -0,0 +1,168 @@
+.\" Copyright (c) 1983, 1987, 1990, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)mailaddr.7 8.1 (Berkeley) 6/16/93
+.\" $FreeBSD$
+.\"
+.Dd June 16, 1993
+.Dt MAILADDR 7
+.Os
+.Sh NAME
+.Nm mailaddr
+.Nd mail addressing description
+.Sh DESCRIPTION
+Mail addresses are based on the Internet protocol listed at the end of this
+manual page.
+These addresses are in the general format
+.Pp
+.Dl user@domain
+.Pp
+where a domain is a hierarchical dot separated list of subdomains.
+For
+example, a valid address is:
+.Pp
+.Dl eric@CS.Berkeley.EDU
+.Pp
+Unlike some other forms of addressing, domains do not imply any routing.
+Thus, although this address is specified as an Internet address, it might
+travel by an alternate route if that were more convenient or efficient.
+For example, at Berkeley, the associated message would probably go directly
+to CS over the Ethernet rather than going via the Berkeley Internet
+gateway.
+.Ss Abbreviation.
+Under certain circumstances it may not be necessary to type the entire
+domain name.
+In general, anything following the first dot may be omitted
+if it is the same as the domain from which you are sending the message.
+For example, a user on ``calder.berkeley.edu'' could send to ``eric@CS''
+without adding the ``berkeley.edu'' since it is the same on both sending
+and receiving hosts.
+.Ss Compatibility.
+.Pp
+Certain old address formats are converted to the new format to provide
+compatibility with the previous mail system.
+In particular,
+.Pp
+.Dl user@host
+.Pp
+and
+.Dl user@host.domain
+.Pp
+are allowed;
+.Pp
+.Dl host.domain!user
+.Pp
+is converted to
+.Pp
+.Dl user@host.domain
+.Pp
+and
+.Pp
+.Dl host!user
+.Pp
+is converted to
+.Pp
+.Dl user@host.UUCP
+.Pp
+This is normally converted back to the ``host!user'' form before being sent
+on for compatibility with older UUCP hosts.
+.Pp
+.Ss Case Distinctions.
+.Pp
+Domain names (i.e., anything after the ``@'' sign) may be given in any mixture
+of upper and lower case with the exception of UUCP hostnames.
+Most hosts
+accept any combination of case in user names, with the notable exception of
+MULTICS sites.
+.Ss Route-addrs.
+.Pp
+Under some circumstances it may be necessary to route a message through
+several hosts to get it to the final destination.
+Normally this routing
+is done automatically, but sometimes it is desirable to route the message
+manually.
+Addresses which show these relays are termed ``route-addrs.''
+These use the syntax:
+.Pp
+.Dl <@hosta,@hostb:user@hostc>
+.Pp
+This specifies that the message should be sent to hosta, from there to hostb,
+and finally to hostc.
+This path is forced even if there is a more efficient
+path to hostc.
+.Pp
+Route-addrs occur frequently on return addresses, since these are generally
+augmented by the software at each host.
+It is generally possible to ignore
+all but the ``user@hostc'' part of the address to determine the actual
+sender.
+.Pp
+[Note: the route-addr syntax is officially deprecated
+in RFC 1123 and should not be used.]
+.Pp
+Many sites also support the ``percent hack'' for simplistic routing:
+.Pp
+.Dl user%hostc%hostb@hosta
+.Pp
+is routed as indicated in the previous example.
+.Ss Postmaster.
+.Pp
+Every site is required to have a user or user alias designated ``postmaster''
+to which problems with the mail system may be addressed.
+.Ss Other Networks.
+.Pp
+Some other networks can be reached by giving the name of the network as the
+last component of the domain.
+.Em This is not a standard feature
+and may
+not be supported at all sites.
+For example, messages to CSNET or BITNET sites
+can often be sent to ``user@host.CSNET'' or ``user@host.BITNET'' respectively.
+.Sh SEE ALSO
+.Xr mail 1 ,
+.Xr sendmail 8
+.Rs
+.%A Crocker, D. H.
+.%T Standard for the Format of Arpa Internet Text Messages
+.%O RFC822
+.Re
+.Sh HISTORY
+.Nm Mailaddr
+appeared in
+.Bx 4.2 .
+.Sh BUGS
+The RFC822 group syntax (``group:user1,user2,user3;'') is not supported
+except in the special case of ``group:;'' because of a conflict with old
+berknet-style addresses.
+.Pp
+Route-Address syntax is grotty.
+.Pp
+UUCP- and Internet-style addresses do not coexist politely.
diff --git a/share/man/man7/operator.7 b/share/man/man7/operator.7
new file mode 100644
index 0000000..b092bef
--- /dev/null
+++ b/share/man/man7/operator.7
@@ -0,0 +1,66 @@
+.\" Copyright (c) 1989, 1990, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)operator.7 8.1 (Berkeley) 6/9/93
+.\" $FreeBSD$
+.\"
+.Dd January 22, 2003
+.Dt OPERATOR 7
+.Os
+.Sh NAME
+.Nm operator
+.Nd C operator precedence and order of evaluation
+.Sh DESCRIPTION
+.Bd -ragged -offset indent -compact
+.Bl -column "= += -= *= /= %= <<= >>= &= ^= |="
+.It Sy "Operator Associativity"
+.It "-------- -------------"
+.It "() [] -> . left to right"
+.It "! ~ ++ -- - (type) * & sizeof right to left"
+.It "* / % left to right"
+.It "+ - left to right"
+.It "<< >> left to right"
+.It "< <= > >= left to right"
+.It "== != left to right"
+.It "& left to right"
+.It "^ left to right"
+.It "| left to right"
+.It "&& left to right"
+.It "|| left to right"
+.It "?: right to left"
+.It "= += -= *= /= %= <<= >>= &= ^= |= right to left"
+.It ", left to right"
+.El
+.Ed
+.Sh FILES
+.Bl -tag -width /usr/share/misc/operator -compact
+.It Pa /usr/share/misc/operator
+.El
diff --git a/share/man/man7/ports.7 b/share/man/man7/ports.7
new file mode 100644
index 0000000..0d79913
--- /dev/null
+++ b/share/man/man7/ports.7
@@ -0,0 +1,540 @@
+.\"
+.\" Copyright (c) 1997 David E. O'Brien
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 22, 2008
+.Dt PORTS 7
+.Os
+.Sh NAME
+.Nm ports
+.Nd contributed applications
+.Sh DESCRIPTION
+The
+.Fx
+Ports Collection
+offers a simple way for users and
+administrators to install applications.
+Each
+.Em port
+contains any patches necessary to make the original
+application source code compile and run on
+.Bx .
+Compiling an
+application is as simple as typing
+.Nm make Cm build
+in the port directory!
+The
+.Pa Makefile
+automatically fetches the
+application source code, either from a local disk or via FTP, unpacks it
+on your system, applies the patches, and compiles it.
+If all goes well,
+simply type
+.Nm make Cm install
+to install the application.
+.Pp
+It is possible to download and use ports from the
+.Fx
+repository
+that are newer than the installed system; however it is important to
+install the appropriate
+.Dq "Upgrade Kit"
+from
+.Pa http://www.FreeBSD.org/ports/
+first!
+The
+.Xr portcheckout 1 Pq Pa ports/ports-mgmt/portcheckout
+script (also a port, of course!) will help to download new ports.
+.Pp
+For more information about using ports, see
+.Dq "Packages and Ports"
+in
+.%B "The FreeBSD Handbook" ,
+.Pa ( file:/usr/share/doc/en_US.ISO8859-1/books/handbook/ports.html
+or
+.Pa http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/ports.html ) .
+For information about creating new ports, see
+.%B "The Porter's Handbook"
+.Pa ( file:/usr/share/doc/en_US.ISO8859-1/books/porters-handbook/index.html
+or
+.Pa http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/porters-handbook/ ) .
+.Sh TARGETS
+Some of the targets work recursively through subdirectories.
+This lets you, for example, install all of the
+.Dq Li biology
+ports.
+The targets that do this are
+.Cm build , checksum , clean , configure ,
+.Cm depends , extract , fetch , install ,
+and
+.Cm package .
+.Pp
+The following targets will be run automatically by each proceeding
+target in order.
+That is,
+.Cm build
+will be run
+(if necessary)
+by
+.Cm install ,
+and so on all the way to
+.Cm fetch .
+Usually, you will only use the
+.Cm install
+target.
+.Bl -tag -width ".Cm configure"
+.It Cm config
+Configure
+.Va OPTIONS
+for this port using
+.Xr dialog 1 .
+.It Cm fetch
+Fetch all of the files needed to build this port from the sites
+listed in
+.Va MASTER_SITES
+and
+.Va PATCH_SITES .
+See
+.Va FETCH_CMD , MASTER_SITE_OVERRIDE
+and
+.Va MASTER_SITE_BACKUP .
+.It Cm checksum
+Verify that the fetched distfile's checksum matches the one the port was
+tested against.
+Defining
+.Va NO_CHECKSUM
+will skip this step.
+.It Cm depends
+Install
+(or compile if only compilation is necessary)
+any dependencies of the current port.
+When called by the
+.Cm extract
+or
+.Cm fetch
+targets, this is run in piecemeal as
+.Cm fetch-depends , build-depends ,
+etc.
+Defining
+.Va NO_DEPENDS
+will skip this step.
+.It Cm extract
+Expand the distfile into a work directory.
+.It Cm patch
+Apply any patches that are necessary for the port.
+.It Cm configure
+Configure the port.
+Some ports will ask you questions during this stage.
+See
+.Va INTERACTIVE
+and
+.Va BATCH .
+.It Cm build
+Build the port.
+This is the same as calling the
+.Cm all
+target.
+.It Cm install
+Install the port and register it with the package system.
+This is all you really need to do.
+.El
+.Pp
+The following targets are not run during the normal install process.
+.Bl -tag -width ".Cm fetch-recursive"
+.It Cm showconfig
+Display
+.Va OPTIONS
+config for this port.
+.It Cm showconfig-recursive
+Display
+.Va OPTIONS
+config for this port and all its dependencies.
+.It Cm rmconfig
+Remove
+.Va OPTIONS
+config for this port.
+.It Cm rmconfig-recursive
+Remove
+.Va OPTIONS
+config for this port and all its dependencies.
+.It Cm config-conditional
+Skip the ports which have already had their
+.Va OPTIONS
+configured.
+.It Cm config-recursive
+Configure
+.Va OPTIONS
+for this port and all its dependencies using
+.Xr dialog 1 .
+.It Cm fetch-list
+Show list of files to be fetched in order to build the port.
+.It Cm fetch-recursive
+Fetch the distfiles of the port and all its dependencies.
+.It Cm fetch-recursive-list
+Show list of files that would be retrieved by
+.Cm fetch-recursive .
+.It Cm all-depends-list
+Print a list of all dependencies for the port.
+.It Cm pretty-print-run-depends-list , pretty-print-build-depends-list
+Print a list of all the compile and run dependencies, and dependencies
+of those dependencies.
+.It Cm missing
+Print a list of missing dependencies to be installed for the port.
+.It Cm clean
+Remove the expanded source code.
+This recurses to dependencies unless
+.Va NOCLEANDEPENDS
+is defined.
+.It Cm distclean
+Remove the port's distfiles and perform the
+.Cm clean
+target.
+The
+.Cm clean
+portion recurses to dependencies unless
+.Va NOCLEANDEPENDS
+is defined, but the
+.Cm distclean
+portion never recurses
+(this is perhaps a bug).
+.It Cm reinstall
+Use this to restore a port after using
+.Xr pkg_delete 1
+when you should have used
+.Cm deinstall .
+.It Cm deinstall
+Remove an installed port from the system, similar to
+.Xr pkg_delete 1 .
+.It Cm deinstall-all
+Remove all installed ports with the same
+.Va PKGORIGIN
+from the system.
+.It Cm package
+Make a binary package for the port.
+The port will be installed if it has not already been.
+The package is a
+.Pa .tbz
+file that you can use to
+install the port on other machines with
+.Xr pkg_add 1 .
+If the directory specified by
+.Va PACKAGES
+does not exist, the package will be put into the current directory.
+See
+.Va PKGREPOSITORY
+and
+.Va PKGFILE .
+.It Cm package-recursive
+Like
+.Cm package ,
+but makes a package for each depending port as well.
+.It Cm readmes
+Create a port's
+.Pa README.html .
+This can be used from
+.Pa /usr/ports
+to create a browsable web of all ports on your system!
+.It Cm search
+Search the
+.Pa INDEX
+file for the pattern specified by the
+.Va key
+(searches the port name, comment, and dependencies),
+.Va name
+(searches the port name only),
+.Va path
+(searches the port path),
+.Va info
+(searches the port info),
+.Va maint
+(searches the port maintainer),
+.Va cat
+(searches the port category),
+.Va bdeps
+(searches the port build-time dependency),
+.Va rdeps
+(searches the port run-time dependency),
+.Va www
+(searches the port web site)
+.Xr make 1
+variables, and their exclusion counterparts:
+.Va xname , xkey
+etc.
+For example, one would type:
+.Pp
+.Dl "cd /usr/ports && make search name=query"
+.Pp
+to find all ports whose
+name matches
+.Dq Li query .
+Results include the matching ports' path, comment, maintainer,
+build dependencies, and run dependencies.
+.Bd -literal -offset indent
+cd /usr/ports && make search name=pear- \e
+ xbdeps=apache
+.Ed
+.Pp
+To find all ports whose
+names contain
+.Dq Li pear-
+and which do not have apache
+listed in build-time dependencies.
+.Bd -literal -offset indent
+cd /usr/ports && make search name=pear- \e
+ xname='ht(tp|ml)'
+.Ed
+.Pp
+To find all ports whose names contain
+.Dq Li pear- ,
+but not
+.Dq Li html
+or
+.Dq Li http .
+.Bd -literal -offset indent
+make search key=apache display=name,path,info keylim=1
+.Ed
+.Pp
+To find ports that contain
+.Dq Li apache
+in either of the name, path, info
+fields, ignore the rest of the record.
+.Pp
+By default the search is not case-sensitive.
+In order to make it case-sensitive you can use the
+.Va icase
+variable:
+.Bd -literal -offset indent
+make search name=p5-R icase=0
+.Ed
+.It Cm quicksearch
+Reduced
+.Cm search
+output.
+Only display name, path and info.
+.It Cm describe
+Generate a one-line description of each port for use in the
+.Pa INDEX
+file.
+.It Cm maintainer
+Display the port maintainer's email address.
+.It Cm index
+Create
+.Pa /usr/ports/INDEX ,
+which is used by the
+.Cm pretty-print-*
+and
+.Cm search
+targets.
+Running the
+.Cm index
+target will ensure your
+.Pa INDEX
+file is up to date with your ports tree.
+.It Cm fetchindex
+Fetch the
+.Pa INDEX
+file from the
+.Fx
+cluster.
+.El
+.Sh ENVIRONMENT
+You can change all of these.
+.Bl -tag -width ".Va MASTER_SITES"
+.It Va PORTSDIR
+Location of the ports tree.
+This is
+.Pa /usr/ports
+on
+.Fx
+and
+.Ox ,
+and
+.Pa /usr/pkgsrc
+on
+.Nx .
+.It Va WRKDIRPREFIX
+Where to create any temporary files.
+Useful if
+.Va PORTSDIR
+is read-only (perhaps mounted from a CD-ROM).
+.It Va DISTDIR
+Where to find/put distfiles, normally
+.Pa distfiles/
+in
+.Va PORTSDIR .
+.It Va PACKAGES
+Used only for the
+.Cm package
+target; the base directory for the packages tree, normally
+.Pa packages/
+in
+.Va PORTSDIR .
+If this directory exists, the package tree will be (partially) constructed.
+This directory does not have to exist; if it does not, packages will be
+placed into the current directory, or you can define one of
+.Bl -tag -width ".Va PKGREPOSITORY"
+.It Va PKGREPOSITORY
+Directory to put the package in.
+.It Va PKGFILE
+The full path to the package.
+.El
+.It Va PREFIX
+Where to install things in general
+(usually
+.Pa /usr/local ) .
+.It Va MASTER_SITES
+Primary sites for distribution files if not found locally.
+.It Va PATCH_SITES
+Primary locations for distribution patch files if not found
+locally.
+.It Va MASTER_SITE_FREEBSD
+If set, go to the master
+.Fx
+site for all files.
+.It Va MASTER_SITE_OVERRIDE
+Try going to these sites for all files and patches, first.
+.It Va MASTER_SITE_BACKUP
+Try going to these sites for all files and patches, last.
+.It Va RANDOMIZE_MASTER_SITES
+Try the download locations in a random order.
+.It Va MASTER_SORT
+Sort the download locations according to user supplied pattern.
+Example:
+.Dl .dk .sunet.se .se dk.php.net .no .de heanet.dl.sourceforge.net
+.It Va MASTER_SITE_INDEX
+Where to get
+.Pa INDEX
+source built on
+.Fx
+cluster (for
+.Cm fetchindex
+target).
+Defaults to
+.Pa http://www.FreeBSD.org/ports/ .
+.It Va FETCHINDEX
+Command to get
+.Pa INDEX
+(for
+.Cm fetchindex
+target).
+Defaults to
+.Dq Nm fetch Fl am .
+.It Va NOCLEANDEPENDS
+If defined, do not let
+.Cm clean
+recurse to dependencies.
+.It Va FETCH_CMD
+Command to use to fetch files.
+Normally
+.Xr fetch 1 .
+.It Va FORCE_PKG_REGISTER
+If set, overwrite any existing package registration on the system.
+.It Va MOTIFLIB
+Location of
+.Pa libXm. Ns Brq Pa a , Ns Pa so .
+.It Va INTERACTIVE
+If defined, only operate on a port if it requires interaction.
+.It Va BATCH
+If defined, only operate on a port if it can be installed 100% automatically.
+.It Va DISABLE_VULNERABILITIES
+If defined, disable check for security vulnerabilities using
+.Xr portaudit 1 Pq Pa ports/ports-mgmt/portaudit
+when installing new ports.
+.It Va NO_IGNORE
+If defined, allow installation of ports marked as
+.Aq Va FORBIDDEN .
+The default behavior of the Ports framework is to abort when the
+installation of a forbidden port is attempted.
+Of course, these ports may not work as expected, but if you really know
+what you are doing and are sure about installing a forbidden port, then
+.Va NO_IGNORE
+lets you do it.
+.It Va PORT_DBDIR
+Directory where the results of configuring
+.Va OPTIONS
+are stored.
+Defaults to
+.Pa /var/db/ports .
+Each port where
+.Va OPTIONS
+have been configured will have a uniquely named sub-directory, containing a
+single file
+.Pa options .
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /usr/ports/Mk/bsd.port.mk" -compact
+.It Pa /usr/ports
+The default ports directory
+.No ( Fx
+and
+.Ox ) .
+.It Pa /usr/pkgsrc
+The default ports directory
+.Pq Nx .
+.It Pa /usr/ports/Mk/bsd.port.mk
+The big Kahuna.
+.El
+.Sh SEE ALSO
+.Xr make 1 ,
+.Xr pkg_add 1 ,
+.Xr pkg_create 1 ,
+.Xr pkg_delete 1 ,
+.Xr pkg_info 1 ,
+.Xr pkg_version 1
+.Pp
+The following are part of the ports collection:
+.Pp
+.Xr portaudit 1 ,
+.Xr portcheckout 1 ,
+.Xr portlint 1
+.Rs
+.%B "The FreeBSD Handbook"
+.Re
+.Pp
+.Pa http://www.FreeBSD.org/ports
+(searchable index of all ports)
+.Sh HISTORY
+The Ports Collection
+appeared in
+.Fx 1.0 .
+It has since spread to
+.Nx
+and
+.Ox .
+.Sh AUTHORS
+.An -nosplit
+This manual page was originated by
+.An David O'Brien .
+.Sh BUGS
+Ports documentation is split over four places \(em
+.Pa /usr/ports/Mk/bsd.port.mk ,
+.%B "The Porter's Handbook" ,
+the
+.Dq "Packages and Ports"
+chapter of
+.%B "The FreeBSD Handbook" ,
+and
+this manual page.
diff --git a/share/man/man7/release.7 b/share/man/man7/release.7
new file mode 100644
index 0000000..a026db5
--- /dev/null
+++ b/share/man/man7/release.7
@@ -0,0 +1,540 @@
+.\" Copyright (c) 2002 Murray Stokely <murray@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 ``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$
+.\"
+.Dd November 12, 2006
+.Dt RELEASE 7
+.Os
+.Sh NAME
+.Nm release
+.Nd "release building infrastructure"
+.Sh DESCRIPTION
+.Fx
+provides a complete build environment suitable for users to make
+full releases of the
+.Fx
+operating system.
+All of the tools necessary to build a release are available from the
+CVS repository in
+.Pa src/release .
+A complete release can actually be built with only a single command,
+including the creation of ISO images suitable for burning to CD-ROM,
+installation floppies, and an FTP install directory.
+This command is aptly named
+.Dq Li "make release" .
+.Pp
+Before attempting to build a release, the user is expected to be
+familiar with the contents of
+.Xr build 7 ,
+and should have experience upgrading systems from source.
+The release build process requires that
+.Pa /usr/obj
+be populated with the output of
+a native
+.Dq Li "make buildworld"
+compiled from sources matching the currently running kernel.
+This is necessary so that the object files for a complete system can
+be installed into a clean
+.Xr chroot 8
+environment.
+The release procedure also requires that the
+.Xr md 4
+(memory disk) device driver be present in the kernel
+(either by being compiled in or available as a module).
+.Pp
+This document does not cover source code management, quality
+assurance, or other aspects of the release engineering process.
+.Sh TARGETS
+The release makefile
+.Pq Pa src/release/Makefile
+is fairly abstruse.
+Most developers will only be concerned with the
+.Cm release
+target.
+.\" XXX: Some sort of introduction to this list? All the others have one.
+.Bl -tag -width ".Cm package-split"
+.It Cm release
+Uses
+.Dq Li "make installworld"
+to install a clean system into a
+.Xr chroot 8
+environment on the file system.
+Checks out the specified version of the source code and then rebuilds
+the entire system in the clean environment with
+.Dq Li "make buildworld" .
+The detailed steps that follow are then executed to package up the
+different distributions, build the installation floppy disks, build
+release documentation, and so on.
+.Pp
+This target must be built as root with the
+.Va kern.securelevel
+sysctl set to \-1 (the default).
+.It Cm rerelease
+Assumes that the output of a release build has been manually modified,
+and performs the minimal number of steps to rebuild the release using
+the intermediate output of the previous
+.Dq Li "make release" .
+.It Cm floppies
+Generate a new set of boot and fixit floppies.
+This will call the
+.Cm release.4 ,
+.Cm release.8 ,
+.Cm floppies.1 ,
+.Cm floppies.2 ,
+and
+.Cm floppies.3
+targets to re-generate the floppy images of a previous
+.Dq Li "make release" .
+This is most often used to build custom boot floppies.
+.It Cm package-split
+Generates the portions of the disc 1 and disc 2 images related to packages.
+It uses the list of desired packages from the
+.Pa src/release/scripts/package-split.py
+script to pull packages out of a package build provided by the ports team
+and organize them appropriately.
+The resulting directory can then be passed to
+.Dq Li "make release"
+via the
+.Va CD_PACKAGE_TREE
+variable to populate the ISO images built by the
+.Cm iso.1
+target with the correct package related bits.
+.El
+.Pp
+Targets called by
+.Dq Li "make release" :
+.Bl -tag -width ".Cm fetch-distfiles"
+.It Cm release.1
+Cleans out the
+.Pa ${CHROOTDIR}/R
+directory and uses
+.Xr mtree 8
+to build the directory hierarchy for the system.
+.It Cm release.2
+Installs the system into the distribution directories.
+.It Cm release.3
+Makes and installs the
+.Pa GENERIC
+kernel as well as any other kernels listed in
+.Va KERNELS .
+.It Cm release.4
+Uses
+.Xr crunchgen 1
+to build
+.Dq crunched
+binaries to live on the installation floppies.
+.It Cm release.5
+Builds synthetic distributions, and cleans up the previously built
+distribution trees.
+.It Cm release.6
+Creates tarballs of the assembled distribution trees.
+.It Cm release.7
+Makes source distributions.
+.It Cm release.8
+Creates the MFS root file systems.
+.It Cm floppies.1
+Creates the boot and kernel floppies.
+.It Cm floppies.2
+Creates the fixit floppy.
+.It Cm floppies.3
+Finalizes the
+.Pa ${CHROOTDIR}/R/ftp/stage/floppies
+staging directory.
+.It Cm ftp.1
+Sets up a suitable area for FTP installations in
+.Pa ${CHROOTDIR}/R/ftp .
+.It Cm cdrom.1
+Create the layout for the live file system CD-ROM image in
+.Pa ${CHROOTDIR}/R/cdrom .
+.It Cm cdrom.2
+Create the layout for the first and second CD-ROM images.
+.It Cm cdrom.3
+Create the layout for the boot-only CD-ROM image and the boot-only UFS
+miniroot image.
+.It Cm iso.1
+Builds ISO images (installation and
+.Dq live
+file system) from the CD-ROM release area
+(disabled by default, see
+.Va MAKE_ISOS
+below).
+.It Cm fetch-distfiles
+Fetches distfiles needed during the release build that are not already in
+.Va RELEASEDISTFILES .
+.It Cm doc.1
+Builds all of the necessary tools to turn the
+.Fx
+Documentation Project source documents (SGML, XML) into HTML
+and text documents that will accompany the release.
+Also, builds and installs the actual user documentation.
+This includes the Handbook, FAQ, articles, and so on.
+.It Cm doc.2
+Builds the release documentation.
+This includes the release notes,
+hardware guide, and installation instructions.
+.El
+.Sh ENVIRONMENT
+Variables that must be specified:
+.Bl -tag -width ".Va CHROOTDIR"
+.It Va CHROOTDIR
+The directory to be used as the
+.Xr chroot 8
+environment for the entire release build.
+.\" XXX: I recommend against hardcoding specific numbers like "2.3" here;
+.\" XXX: perhaps it should be replaced with something to the effect of
+.\" XXX: "we do not know how much space you'll need, but make sure you have
+.\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number,
+.\" XXX: but at least it looks less like a decree and more like an estimate.
+This file system should have at least 3.2 gigabytes of free space on the
+i386 architecture.
+.It Va CVSROOT
+The location of the
+.Fx
+CVS repository.
+This path name is in reference to the real system root,
+.Em not
+the root of the
+.Xr chroot 8
+directory tree.
+.El
+.Pp
+Optional variables:
+.Bl -tag -width ".Va NO_PREFETCHDISTFILES"
+.It Va BUILDNAME
+The name of the release to be built.
+This is used to set the
+.Va RELEASE
+value in
+.Pa sys/conf/newvers.sh ,
+which affects the output of
+.Xr uname 1 .
+If not set, a name with the timestamp and the
+.Dq Li -SNAP
+suffix will be generated.
+.It Va CD_PACKAGE_TREE
+A directory containing extra bits for the first and second CD-ROM images.
+The extra files for the first disc should be in
+.Pa ${CD_PACKAGE_TREE}/disc1
+and the extra files for the second disc should be in
+.Pa ${CD_PACKAGE_TREE}/disc2 .
+Typically, this variable will be set to the output directory of an earlier
+invocation of the
+.Cm package-split
+target.
+.It Va CVSARGS
+Additional arguments for
+.Xr cvs 1
+that come before the subcommands such as
+.Dq Li "-qR" .
+.It Va CVSCMDARGS
+Additional arguments for
+.Xr cvs 1
+.Ic checkout
+and
+.Ic update
+commands.
+For example, setting this variable to
+.Dq Li "-D '01/01/2002 00:00:00 GMT'"
+for
+.Dq Li "make release"
+or
+.Dq Li "make rerelease"
+will ask
+.Xr cvs 1
+to check out or update sources as of 00:00:00 GMT, January 1 2002, respectively.
+.It Va DOC_LANG
+The list of languages and encodings the SGML-based documentation
+should be built for.
+If not set, the documentation is built for all available languages.
+.It Va DOCRELEASETAG
+The CVS tag to use when checking out the documentation tree.
+Usually,
+the head of the documentation tree is used by default.
+If
+.Va RELEASETAG
+specifies a release tag,
+then the associated release version is used as the default instead.
+.It Va EXTLOCALDIR
+The directory that will be copied to
+.Pa ${CHROOTDIR}/usr/local .
+.It Va EXTSRCDIR
+The directory specified by this variable will be copied into
+.Pa ${CHROOTDIR}/usr/src
+instead of that directory being populated by a CVS checkout.
+For
+.Dq Li "rerelease" ,
+this will NOT be copied; cvs update will be used instead.
+.It Va EXTDOCDIR
+The directory specified by this variable will be copied into
+.Pa ${CHROOTDIR}/usr/doc .
+For
+.Dq Li "rerelease" ,
+this will NOT be copied again.
+.It Va EXTPORTSDIR
+The directory specified by this variable will be copied into
+.Pa ${CHROOTDIR}/usr/ports .
+For
+.Dq Li "rerelease" ,
+this will do NOTHING.
+.It Va KERNEL_FLAGS
+The contents of this variable are passed to
+.Xr make 1
+when building kernels during the release build.
+For example, setting this variable to
+.Dq Li "-j 4"
+will instruct
+.Xr make 1
+to execute up to four processes at a time.
+.It Va KERNELS
+Specifies a list of additional kernel configurations to compile and
+install into the
+.Dq base
+distribution.
+Each kernel is installed into
+.Pa /boot/<config>
+so that it can be booted from the loader via
+.Dq Li "boot <config>" .
+.It Va LOCAL_PATCHES
+Patch files against
+.Pa /usr/src
+that will be applied in the
+.Xr chroot 8
+environment before the release build begins.
+.It Va PATCH_FLAGS
+Arguments for the
+.Xr patch 1
+command used to apply
+.Va LOCAL_PATCHES
+patch file.
+.It Va LOCAL_SCRIPT
+A script that will be run in the
+.Xr chroot 8
+environment immediately after any local patches are applied.
+.It Va MAKE_ISOS
+If defined, bootable ISO CD-ROM images will be created from the
+contents of the CD-ROM stage directory.
+.It Va NOCDROM
+If defined, the CD-ROM stage directories will not be created.
+.It Va NODOC
+If defined, the SGML-based documentation from the
+.Fx
+Documentation Project will not be built.
+However, the
+.Dq doc
+distribution will still be created with the minimal documentation set
+provided in
+.Pa src/share/doc .
+.It Va NO_FLOPPIES
+If defined, no boot and fixit floppy disk images will be created (for those
+platforms supporting them).
+.It Va NOPORTS
+If defined, the Ports Collection will be omitted from the release.
+.It Va PORTSRELEASETAG
+The CVS tag to use when checking out the ports tree.
+Usually,
+the head of the ports tree is used by default.
+If
+.Va RELEASETAG
+specifies a release tag,
+then the associated release version is used as the default instead.
+.It Va NO_PREFETCHDISTFILES
+If this variable is defined,
+then distfiles needed during the release build will not be downloaded prior to
+entering the
+.Xr chroot 8
+environment.
+Note that if
+.Va NO_PREFETCHDISTFILES
+is not set,
+the fetching is done after any distfiles are obtained via
+.Va RELEASEDISTFILES .
+.It Va RELEASEDISTFILES
+The directory where the distribution files for ports required by the
+release build can be found.
+This may save a significant amount of time over downloading the
+distfiles through a slow link.
+.It Va RELEASENOUPDATE
+If this variable is defined for
+.Dq Li "make rerelease" ,
+the source code will not be updated with
+.Dq Li "cvs update" .
+.It Va RELEASETAG
+The CVS tag corresponding to the release that is to be built.
+If undefined, the release will be built from the
+.Dv HEAD
+of the CVS tree
+(a
+.Dq "-CURRENT snapshot" ) .
+.It Va SEPARATE_LIVEFS
+Store the live file system on its own CD-ROM image rather than placing it on
+the first disc.
+.It Va TARGET_ARCH
+The target machine processor architecture.
+This is analogous to the
+.Dq Nm uname Fl p
+output.
+Set this to cross-build for a different architecture.
+.It Va TARGET
+The target hardware platform.
+This is analogous to the
+.Dq Nm uname Fl m
+output.
+This is necessary to cross-build some target architectures.
+For example, cross-building for PC98 machines requires
+.Va TARGET_ARCH Ns = Ns Li i386
+and
+.Va TARGET Ns = Ns Li pc98 .
+.It Va WORLDDIR
+The directory where
+.Dq Li "make buildworld"
+was run; defaults to
+.Pa ${.CURDIR}/..
+which usually points to
+.Pa /usr/src .
+.It Va WORLD_FLAGS
+The contents of this variable are passed to
+.Xr make 1
+when building world during the release build.
+For example, setting this variable to
+.Dq Li "-j 4"
+will instruct
+.Xr make 1
+to execute up to four processes at a time.
+.El
+.Sh FILES
+.Bl -tag -compact
+.It Pa /usr/doc/Makefile
+.It Pa /usr/doc/share/mk/doc.project.mk
+.It Pa /usr/ports/Mk/bsd.port.mk
+.It Pa /usr/ports/Mk/bsd.sites.mk
+.It Pa /usr/share/examples/etc/make.conf
+.It Pa /usr/src/Makefile
+.It Pa /usr/src/Makefile.inc1
+.It Pa /usr/src/release/Makefile
+.It Pa /usr/src/release/${arch}/boot_crunch.conf
+.It Pa /usr/src/release/${arch}/fixit_crunch.conf
+.El
+.Sh EXAMPLES
+The following sequence of commands was used to build the
+.Fx 4.9
+release:
+.Bd -literal -offset indent
+cd /usr
+cvs co -rRELENG_4_9_0_RELEASE src
+cd src
+make buildworld
+cd release
+make release CHROOTDIR=/local3/release BUILDNAME=4.9-RELEASE \\
+ CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_9_0_RELEASE
+.Ed
+.Pp
+After running these commands, a complete system suitable for FTP or
+CD-ROM distribution is available in the
+.Pa /local3/release/R
+directory.
+.Pp
+The following sequence of commands can be used to build a
+.Dq "-CURRENT snapshot"
+of a
+locally modified source tree:
+.Bd -literal -offset indent
+cd /usr/src
+cvs diff -u > /path/to/local.patch
+make buildworld
+cd release
+make release CHROOTDIR=/local3/release BUILDNAME=6.0-CURRENT \\
+ CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch
+.Ed
+.Sh SEE ALSO
+.Xr cc 1 ,
+.Xr crunchgen 1 ,
+.Xr cvs 1 ,
+.Xr install 1 ,
+.Xr make 1 ,
+.Xr patch 1 ,
+.Xr uname 1 ,
+.Xr md 4 ,
+.Xr make.conf 5 ,
+.Xr build 7 ,
+.Xr ports 7 ,
+.Xr chroot 8 ,
+.Xr mtree 8 ,
+.Xr sysctl 8
+.Rs
+.%T "FreeBSD Release Engineering"
+.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/
+.Re
+.Rs
+.%T "FreeBSD Release Engineering of Third Party Packages"
+.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/
+.Re
+.Rs
+.%T "FreeBSD Developers' Handbook"
+.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/
+.Re
+.Sh HISTORY
+.Fx
+1.x
+used a manual checklist, compiled by
+.An Rod Grimes ,
+to produce a release.
+Apart from being incomplete, the list put a lot of specific demands on
+available file systems and was quite torturous to execute.
+.Pp
+As part of the
+.Fx 2.0
+release engineering effort, significant
+effort was spent getting
+.Pa src/release/Makefile
+into a shape where it could at least automate most of the tediousness
+of building a release in a sterile environment.
+.Pp
+With its almost 1000 revisions spread over multiple branches, the
+.Xr cvs 1
+log of
+.Pa src/release/Makefile
+contains a vivid historical record of some
+of the hardships release engineers go through.
+.Sh AUTHORS
+.Pa src/release/Makefile
+was originally written by
+.An -nosplit
+.An Rod Grimes ,
+.An Jordan Hubbard ,
+and
+.An Poul-Henning Kamp .
+This manual page was written by
+.An Murray Stokely Aq murray@FreeBSD.org .
+.Sh BUGS
+Infrastructure changes are occasionally made to the
+.Fx
+documentation set in such a way that release builds on security
+branches can fail.
+To work around this, release builds can be made to checkout the
+documentation from the last fully supported release of
+.Fx .
+For example:
+.Pp
+.Dl "make release RELEASETAG=RELENG_4_9 DOCRELEASETAG=RELEASE_4_9_0 ..."
diff --git a/share/man/man7/sdoc.7 b/share/man/man7/sdoc.7
new file mode 100644
index 0000000..2a7e626
--- /dev/null
+++ b/share/man/man7/sdoc.7
@@ -0,0 +1,242 @@
+.\" Copyright (c) 2001, 2002 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.
+.\" 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.
+.\"
+.\" $Id: sec-doc.7,v 1.7 2001/12/22 00:14:12 rwatson Exp$
+.\" $FreeBSD$
+.\"
+.Dd September 5, 2005
+.Dt SDOC 7
+.Os
+.Sh NAME
+.Nm sdoc
+.Nd guide to adding security considerations sections to manual pages
+.Sh DESCRIPTION
+This document presents guidelines for
+adding security considerations sections to manual pages.
+It provides two typical examples.
+.Pp
+The guidelines for writing
+.Fx
+manual pages in
+.Xr groff_mdoc 7
+mandate that each manual page describing a feature of the
+.Fx
+system should contain a security considerations section
+describing what security requirements can be broken
+through the misuse of that feature.
+When writing these sections, authors should attempt to
+achieve a happy medium between two conflicting goals:
+brevity and completeness.
+On one hand, security consideration sections must not be too verbose,
+or busy readers might be dissuaded from reading them.
+On the other hand, security consideration sections must not be incomplete,
+or they will fail in their purpose of
+instructing the reader on how to avoid all insecure uses.
+This document provides guidelines for balancing brevity and completeness
+in the security consideration section for a given feature of the
+.Fx
+system.
+.Ss Where to Start
+Begin by listing
+those general security requirements that can be violated
+through the misuse of the feature.
+There are four classes of security requirements:
+.Bl -hang -offset indent
+.It Em integrity
+(example: non-administrators should not modify system binaries),
+.It Em confidentiality
+(example: non-administrators should not view the shadow password file),
+.It Em availability
+(example: the web server should respond to client requests in a timely
+fashion), and
+.It Em correctness
+(example: the ps program should provide exactly the process table
+information listing functionality described in its documentation - no more,
+no less.)
+.El
+.Pp
+A good security considerations section
+should explain how the feature can be misused
+to violate each general security requirement in the list.
+Each explanation should be accompanied by instructions
+the reader should follow in order to avoid a violation.
+When referencing potential vulnerabilities
+described in the Secure Programming Practices manual page,
+.Xr sprog 7 ,
+likewise cross-reference that document
+rather than replicating information.
+Whenever possible, refer to this document
+rather than reproducing the material it contains.
+.Ss Where to Stop
+Security problems are often interrelated;
+individual problems often have far-reaching implications.
+For example, the correctness of virtually any dynamically-linked program
+is dependent on the correct implementation and configuration
+of the run-time linker.
+The correctness of this program, in turn,
+depends on the correctness of its libraries,
+the compiler used to build it,
+the correctness of the preceding compiler that was used to build that compiler,
+and so on,
+as described by Thompson (see
+.Sx SEE ALSO ,
+below).
+.Pp
+Due to the need for brevity, security consideration sections
+should describe only those issues directly related to the feature
+that is the subject of the manual page.
+Refer to other manual pages
+rather than duplicating the material found there.
+.Sh EXAMPLES
+Security considerations sections for most individual functions can follow
+this simple formula:
+.Pp
+.Bl -enum -offset indent -compact
+.It
+Provide one or two sentences describing each potential security
+problem.
+.It
+Provide one or two sentences describing how to avoid each potential
+security problem.
+.It
+Provide a short example in code.
+.El
+.Pp
+This is an example security considerations section for the
+.Xr strcpy 3
+manual page:
+.Pp
+The
+.Fn strcpy
+function is easily misused in a manner which enables malicious users
+to arbitrarily change a running program's functionality
+through a buffer overflow attack.
+.Pp
+Avoid using
+.Fn strcpy .
+Instead, use
+.Fn strncpy
+and ensure that no more characters are copied to the destination buffer
+than it can hold.
+Do not forget to NUL-terminate the destination buffer,
+as
+.Fn strncpy
+will not terminate the destination string if it is truncated.
+.Pp
+Note that
+.Fn strncpy
+can also be problematic.
+It may be a security concern for a string to be truncated at all.
+Since the truncated string will not be as long as the original,
+it may refer to a completely different resource
+and usage of the truncated resource
+could result in very incorrect behavior.
+Example:
+.Pp
+.Bd -literal
+void
+foo(const char *arbitrary_string)
+{
+ char onstack[8];
+
+#if defined(BAD)
+ /*
+ * This first strcpy is bad behavior. Do not use strcpy()!
+ */
+ (void)strcpy(onstack, arbitrary_string); /* BAD! */
+#elif defined(BETTER)
+ /*
+ * The following two lines demonstrate better use of
+ * strncpy().
+ */
+ (void)strncpy(onstack, arbitrary_string, sizeof(onstack) - 1);
+ onstack[sizeof(onstack - 1)] = '\\0';
+#elif defined(BEST)
+ /*
+ * These lines are even more robust due to testing for
+ * truncation.
+ */
+ if (strlen(arbitrary_string) + 1 > sizeof(onstack))
+ err(1, "onstack would be truncated");
+ (void)strncpy(onstack, arbitrary_string, sizeof(onstack));
+#endif
+}
+.Ed
+.Pp
+Security considerations sections for tools and commands
+are apt to be less formulaic.
+Let your list of potentially-violated security requirements
+be your guide;
+explain each one and list a solution in as concise a manner as possible.
+.Pp
+This is an example security considerations section for the
+.Xr rtld 1
+manual page:
+.Pp
+Using the LD_LIBRARY_PATH and LD_PRELOAD environment variables,
+malicious users can cause the dynamic linker
+to link shared libraries of their own devising
+into the address space of processes running non-set-user-ID/group-ID programs.
+These shared libraries can arbitrarily change the functionality
+of the program by replacing calls to standard library functions
+with calls to their own.
+Although this feature is disabled for set-user-ID and set-group-ID programs,
+it can still be used to create Trojan horses in other programs.
+.Pp
+All users should be aware that the correct operation of non
+set-user-ID/group-ID dynamically-linked programs depends on the proper
+configuration of these environment variables,
+and take care to avoid actions that might set them to values
+which would cause the run-time linker
+to link in shared libraries of unknown pedigree.
+.Sh SEE ALSO
+.Xr groff_mdoc 7 ,
+.Xr security 7 ,
+.Xr sprog 7
+.Rs
+.%A "Edward Amoroso, AT&T Bell Laboratories"
+.%B "Fundamentals of Computer Security Technology"
+.%I "P T R Prentice Hall"
+.%D "1994"
+.Re
+.Rs
+.%A "Ken Thompson"
+.%T "Reflections on Trusting Trust"
+.%J "Communications of the ACM"
+.%I "Association for Computing Machinery, Inc."
+.%P "761-763"
+.%N "Vol. 27, No. 8"
+.%D "August, 1984"
+.Re
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+.An "Tim Fraser, NAI Labs CBOSS project." Aq tfraser@tislabs.com
+.An "Brian Feldman, NAI Labs CBOSS project." Aq bfeldman@tislabs.com
diff --git a/share/man/man7/security.7 b/share/man/man7/security.7
new file mode 100644
index 0000000..9a4a4af
--- /dev/null
+++ b/share/man/man7/security.7
@@ -0,0 +1,1006 @@
+.\" Copyright (C) 1998 Matthew Dillon. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 8, 2006
+.Dt SECURITY 7
+.Os
+.Sh NAME
+.Nm security
+.Nd introduction to security under FreeBSD
+.Sh DESCRIPTION
+Security is a function that begins and ends with the system administrator.
+While all
+.Bx
+multi-user systems have some inherent security, the job of building and
+maintaining additional security mechanisms to keep users
+.Dq honest
+is probably
+one of the single largest undertakings of the sysadmin.
+Machines are
+only as secure as you make them, and security concerns are ever competing
+with the human necessity for convenience.
+.Ux
+systems,
+in general, are capable of running a huge number of simultaneous processes
+and many of these processes operate as servers \(em meaning that external
+entities can connect and talk to them.
+As yesterday's mini-computers and mainframes
+become today's desktops, and as computers become networked and internetworked,
+security becomes an ever bigger issue.
+.Pp
+Security is best implemented through a layered onion approach.
+In a nutshell,
+what you want to do is to create as many layers of security as are convenient
+and then carefully monitor the system for intrusions.
+.Pp
+System security also pertains to dealing with various forms of attacks,
+including attacks that attempt to crash or otherwise make a system unusable
+but do not attempt to break root.
+Security concerns can be split up into
+several categories:
+.Bl -enum -offset indent
+.It
+Denial of Service attacks (DoS)
+.It
+User account compromises
+.It
+Root compromise through accessible servers
+.It
+Root compromise via user accounts
+.It
+Backdoor creation
+.El
+.Pp
+A denial of service attack is an action that deprives the machine of needed
+resources.
+Typically, DoS attacks are brute-force mechanisms that attempt
+to crash or otherwise make a machine unusable by overwhelming its servers or
+network stack.
+Some DoS attacks try to take advantages of bugs in the
+networking stack to crash a machine with a single packet.
+The latter can
+only be fixed by applying a bug fix to the kernel.
+Attacks on servers can
+often be fixed by properly specifying options to limit the load the servers
+incur on the system under adverse conditions.
+Brute-force network attacks are harder to deal with.
+A spoofed-packet attack, for example, is
+nearly impossible to stop short of cutting your system off from the Internet.
+It may not be able to take your machine down, but it can fill up Internet
+pipe.
+.Pp
+A user account compromise is even more common than a DoS attack.
+Many
+sysadmins still run standard
+.Xr telnetd 8 ,
+.Xr rlogind 8 ,
+.Xr rshd 8 ,
+and
+.Xr ftpd 8
+servers on their machines.
+These servers, by default, do not operate over encrypted
+connections.
+The result is that if you have any moderate-sized user base,
+one or more of your users logging into your system from a remote location
+(which is the most common and convenient way to log in to a system)
+will have his or her password sniffed.
+The attentive system administrator will analyze
+his remote access logs looking for suspicious source addresses
+even for successful logins.
+.Pp
+One must always assume that once an attacker has access to a user account,
+the attacker can break root.
+However, the reality is that in a well secured
+and maintained system, access to a user account does not necessarily give the
+attacker access to root.
+The distinction is important because without access
+to root the attacker cannot generally hide his tracks and may, at best, be
+able to do nothing more than mess with the user's files or crash the machine.
+User account compromises are very common because users tend not to take the
+precautions that sysadmins take.
+.Pp
+System administrators must keep in mind that there are potentially many ways
+to break root on a machine.
+The attacker may know the root password,
+the attacker
+may find a bug in a root-run server and be able to break root over a network
+connection to that server, or the attacker may know of a bug in an SUID-root
+program that allows the attacker to break root once he has broken into a
+user's account.
+If an attacker has found a way to break root on a machine,
+the attacker may not have a need to install a backdoor.
+Many of the root holes found and closed to date involve a considerable amount
+of work by the attacker to clean up after himself, so most attackers do install
+backdoors.
+This gives you a convenient way to detect the attacker.
+Making
+it impossible for an attacker to install a backdoor may actually be detrimental
+to your security because it will not close off the hole the attacker used to
+break in the first place.
+.Pp
+Security remedies should always be implemented with a multi-layered
+.Dq onion peel
+approach and can be categorized as follows:
+.Bl -enum -offset indent
+.It
+Securing root and staff accounts
+.It
+Securing root \(em root-run servers and SUID/SGID binaries
+.It
+Securing user accounts
+.It
+Securing the password file
+.It
+Securing the kernel core, raw devices, and file systems
+.It
+Quick detection of inappropriate changes made to the system
+.It
+Paranoia
+.El
+.Sh SECURING THE ROOT ACCOUNT AND SECURING STAFF ACCOUNTS
+Do not bother securing staff accounts if you have not secured the root
+account.
+Most systems have a password assigned to the root account.
+The
+first thing you do is assume that the password is
+.Em always
+compromised.
+This does not mean that you should remove the password.
+The
+password is almost always necessary for console access to the machine.
+What it does mean is that you should not make it possible to use the password
+outside of the console or possibly even with a
+.Xr su 1
+utility.
+For example, make sure that your PTYs are specified as being
+.Dq Li unsecure
+in the
+.Pa /etc/ttys
+file
+so that direct root logins via
+.Xr telnet 1
+or
+.Xr rlogin 1
+are disallowed.
+If using
+other login services such as
+.Xr sshd 8 ,
+make sure that direct root logins are
+disabled there as well.
+Consider every access method \(em services such as
+.Xr ftp 1
+often fall through the cracks.
+Direct root logins should only be allowed
+via the system console.
+.Pp
+Of course, as a sysadmin you have to be able to get to root, so we open up
+a few holes.
+But we make sure these holes require additional password
+verification to operate.
+One way to make root accessible is to add appropriate
+staff accounts to the
+.Dq Li wheel
+group (in
+.Pa /etc/group ) .
+The staff members placed in the
+.Li wheel
+group are allowed to
+.Xr su 1
+to root.
+You should never give staff
+members native
+.Li wheel
+access by putting them in the
+.Li wheel
+group in their password entry.
+Staff accounts should be placed in a
+.Dq Li staff
+group, and then added to the
+.Li wheel
+group via the
+.Pa /etc/group
+file.
+Only those staff members who actually need to have root access
+should be placed in the
+.Li wheel
+group.
+It is also possible, when using an
+authentication method such as Kerberos, to use Kerberos's
+.Pa .k5login
+file in the root account to allow a
+.Xr ksu 1
+to root without having to place anyone at all in the
+.Li wheel
+group.
+This
+may be the better solution since the
+.Li wheel
+mechanism still allows an
+intruder to break root if the intruder has gotten hold of your password
+file and can break into a staff account.
+While having the
+.Li wheel
+mechanism
+is better than having nothing at all, it is not necessarily the safest
+option.
+.Pp
+An indirect way to secure the root account is to secure your staff accounts
+by using an alternative login access method and *'ing out the crypted password
+for the staff accounts.
+This way an intruder may be able to steal the password
+file but will not be able to break into any staff accounts or root, even if
+root has a crypted password associated with it (assuming, of course, that
+you have limited root access to the console).
+Staff members
+get into their staff accounts through a secure login mechanism such as
+.Xr kerberos 8
+or
+.Xr ssh 1
+using a private/public
+key pair.
+When you use something like Kerberos you generally must secure
+the machines which run the Kerberos servers and your desktop workstation.
+When you use a public/private key pair with SSH, you must generally secure
+the machine you are logging in
+.Em from
+(typically your workstation),
+but you can
+also add an additional layer of protection to the key pair by password
+protecting the keypair when you create it with
+.Xr ssh-keygen 1 .
+Being able
+to *-out the passwords for staff accounts also guarantees that staff members
+can only log in through secure access methods that you have set up.
+You can
+thus force all staff members to use secure, encrypted connections for
+all their sessions which closes an important hole used by many intruders: that
+of sniffing the network from an unrelated, less secure machine.
+.Pp
+The more indirect security mechanisms also assume that you are logging in
+from a more restrictive server to a less restrictive server.
+For example,
+if your main box is running all sorts of servers, your workstation should not
+be running any.
+In order for your workstation to be reasonably secure
+you should run as few servers as possible, up to and including no servers
+at all, and you should run a password-protected screen blanker.
+Of course, given physical access to
+a workstation, an attacker can break any sort of security you put on it.
+This is definitely a problem that you should consider but you should also
+consider the fact that the vast majority of break-ins occur remotely, over
+a network, from people who do not have physical access to your workstation or
+servers.
+.Pp
+Using something like Kerberos also gives you the ability to disable or
+change the password for a staff account in one place and have it immediately
+affect all the machines the staff member may have an account on.
+If a staff
+member's account gets compromised, the ability to instantly change his
+password on all machines should not be underrated.
+With discrete passwords, changing a password on N machines can be a mess.
+You can also impose
+re-passwording restrictions with Kerberos: not only can a Kerberos ticket
+be made to timeout after a while, but the Kerberos system can require that
+the user choose a new password after a certain period of time
+(say, once a month).
+.Sh SECURING ROOT \(em ROOT-RUN SERVERS AND SUID/SGID BINARIES
+The prudent sysadmin only runs the servers he needs to, no more, no less.
+Be aware that third party servers are often the most bug-prone.
+For example,
+running an old version of
+.Xr imapd 8
+or
+.Xr popper 8 Pq Pa ports/mail/popper
+is like giving a universal root
+ticket out to the entire world.
+Never run a server that you have not checked
+out carefully.
+Many servers do not need to be run as root.
+For example,
+the
+.Xr talkd 8 ,
+.Xr comsat 8 ,
+and
+.Xr fingerd 8
+daemons can be run in special user
+.Dq sandboxes .
+A sandbox is not perfect unless you go to a large amount of trouble, but the
+onion approach to security still stands: if someone is able to break in
+through a server running in a sandbox, they still have to break out of the
+sandbox.
+The more layers the attacker must break through, the lower the
+likelihood of his success.
+Root holes have historically been found in
+virtually every server ever run as root, including basic system servers.
+If you are running a machine through which people only log in via
+.Xr sshd 8
+and never log in via
+.Xr telnetd 8 ,
+.Xr rshd 8 ,
+or
+.Xr rlogind 8 ,
+then turn off those services!
+.Pp
+.Fx
+now defaults to running
+.Xr talkd 8 ,
+.Xr comsat 8 ,
+and
+.Xr fingerd 8
+in a sandbox.
+Another program which may be a candidate for running in a sandbox is
+.Xr named 8 .
+The default
+.Pa rc.conf
+includes the arguments necessary to run
+.Xr named 8
+in a sandbox in a commented-out form.
+Depending on whether you
+are installing a new system or upgrading an existing system, the special
+user accounts used by these sandboxes may not be installed.
+The prudent
+sysadmin would research and implement sandboxes for servers whenever possible.
+.Pp
+There are a number of other servers that typically do not run in sandboxes:
+.Xr sendmail 8 ,
+.Xr popper 8 ,
+.Xr imapd 8 ,
+.Xr ftpd 8 ,
+and others.
+There are alternatives to
+some of these, but installing them may require more work than you are willing
+to put
+(the convenience factor strikes again).
+You may have to run these
+servers as root and rely on other mechanisms to detect break-ins that might
+occur through them.
+.Pp
+The other big potential root hole in a system are the SUID-root and SGID
+binaries installed on the system.
+Most of these binaries, such as
+.Xr rlogin 1 ,
+reside in
+.Pa /bin , /sbin , /usr/bin ,
+or
+.Pa /usr/sbin .
+While nothing is 100% safe,
+the system-default SUID and SGID binaries can be considered reasonably safe.
+Still, root holes are occasionally found in these binaries.
+A root hole
+was found in Xlib in 1998 that made
+.Xr xterm 1 Pq Pa ports/x11/xterm
+(which is typically SUID)
+vulnerable.
+It is better to be safe than sorry and the prudent sysadmin will restrict SUID
+binaries that only staff should run to a special group that only staff can
+access, and get rid of
+.Pq Dq Li "chmod 000"
+any SUID binaries that nobody uses.
+A server with no display generally does not need an
+.Xr xterm 1
+binary.
+SGID binaries can be almost as dangerous.
+If an intruder can break an SGID-kmem binary the
+intruder might be able to read
+.Pa /dev/kmem
+and thus read the crypted password
+file, potentially compromising any passworded account.
+Alternatively an
+intruder who breaks group
+.Dq Li kmem
+can monitor keystrokes sent through PTYs,
+including PTYs used by users who log in through secure methods.
+An intruder
+that breaks the
+.Dq Li tty
+group can write to almost any user's TTY.
+If a user
+is running a terminal
+program or emulator with a keyboard-simulation feature, the intruder can
+potentially
+generate a data stream that causes the user's terminal to echo a command, which
+is then run as that user.
+.Sh SECURING USER ACCOUNTS
+User accounts are usually the most difficult to secure.
+While you can impose
+draconian access restrictions on your staff and *-out their passwords, you
+may not be able to do so with any general user accounts you might have.
+If
+you do have sufficient control then you may win out and be able to secure the
+user accounts properly.
+If not, you simply have to be more vigilant in your
+monitoring of those accounts.
+Use of SSH and Kerberos for user accounts is
+more problematic due to the extra administration and technical support
+required, but still a very good solution compared to a crypted password
+file.
+.Sh SECURING THE PASSWORD FILE
+The only sure fire way is to *-out as many passwords as you can and
+use SSH or Kerberos for access to those accounts.
+Even though the
+crypted password file
+.Pq Pa /etc/spwd.db
+can only be read by root, it may
+be possible for an intruder to obtain read access to that file even if the
+attacker cannot obtain root-write access.
+.Pp
+Your security scripts should always check for and report changes to
+the password file
+(see
+.Sx CHECKING FILE INTEGRITY
+below).
+.Sh SECURING THE KERNEL CORE, RAW DEVICES, AND FILE SYSTEMS
+If an attacker breaks root he can do just about anything, but there
+are certain conveniences.
+For example, most modern kernels have a packet sniffing device driver built in.
+Under
+.Fx
+it is called
+the
+.Xr bpf 4
+device.
+An intruder will commonly attempt to run a packet sniffer
+on a compromised machine.
+You do not need to give the intruder the
+capability and most systems should not have the
+.Xr bpf 4
+device compiled in.
+.Pp
+But even if you turn off the
+.Xr bpf 4
+device, you still have
+.Pa /dev/mem
+and
+.Pa /dev/kmem
+to worry about.
+For that matter,
+the intruder can still write to raw disk devices.
+Also, there is another kernel feature called the module loader,
+.Xr kldload 8 .
+An enterprising intruder can use a KLD module to install
+his own
+.Xr bpf 4
+device or other sniffing device on a running kernel.
+To avoid these problems you have to run
+the kernel at a higher security level, at least level 1.
+The security level can be set with a
+.Xr sysctl 8
+on the
+.Va kern.securelevel
+variable.
+Once you have
+set the security level to 1, write access to raw devices will be denied and
+special
+.Xr chflags 1
+flags, such as
+.Cm schg ,
+will be enforced.
+You must also ensure
+that the
+.Cm schg
+flag is set on critical startup binaries, directories, and
+script files \(em everything that gets run
+up to the point where the security level is set.
+This might be overdoing it, and upgrading the system is much more
+difficult when you operate at a higher security level.
+You may compromise and
+run the system at a higher security level but not set the
+.Cm schg
+flag for every
+system file and directory under the sun.
+Another possibility is to simply
+mount
+.Pa /
+and
+.Pa /usr
+read-only.
+It should be noted that being too draconian in
+what you attempt to protect may prevent the all-important detection of an
+intrusion.
+.Pp
+The kernel runs with five different security levels.
+Any super-user process can raise the level, but no process
+can lower it.
+The security levels are:
+.Bl -tag -width flag
+.It Ic -1
+Permanently insecure mode \- always run the system in insecure mode.
+This is the default initial value.
+.It Ic 0
+Insecure mode \- immutable and append-only flags may be turned off.
+All devices may be read or written subject to their permissions.
+.It Ic 1
+Secure mode \- the system immutable and system append-only flags may not
+be turned off;
+disks for mounted file systems,
+.Pa /dev/mem
+and
+.Pa /dev/kmem
+may not be opened for writing;
+.Pa /dev/io
+(if your platform has it) may not be opened at all;
+kernel modules (see
+.Xr kld 4 )
+may not be loaded or unloaded.
+.It Ic 2
+Highly secure mode \- same as secure mode, plus disks may not be
+opened for writing (except by
+.Xr mount 2 )
+whether mounted or not.
+This level precludes tampering with file systems by unmounting them,
+but also inhibits running
+.Xr newfs 8
+while the system is multi-user.
+.Pp
+In addition, kernel time changes are restricted to less than or equal to one
+second.
+Attempts to change the time by more than this will log the message
+.Dq Time adjustment clamped to +1 second .
+.It Ic 3
+Network secure mode \- same as highly secure mode, plus
+IP packet filter rules (see
+.Xr ipfw 8 ,
+.Xr ipfirewall 4
+and
+.Xr pfctl 8 )
+cannot be changed and
+.Xr dummynet 4
+or
+.Xr pf 4
+configuration cannot be adjusted.
+.El
+.Pp
+The security level can be configured with variables documented in
+.Xr rc.conf 8 .
+.Sh CHECKING FILE INTEGRITY: BINARIES, CONFIG FILES, ETC
+When it comes right down to it, you can only protect your core system
+configuration and control files so much before the convenience factor
+rears its ugly head.
+For example, using
+.Xr chflags 1
+to set the
+.Cm schg
+bit on most of the files in
+.Pa /
+and
+.Pa /usr
+is probably counterproductive because
+while it may protect the files, it also closes a detection window.
+The
+last layer of your security onion is perhaps the most important \(em detection.
+The rest of your security is pretty much useless (or, worse, presents you with
+a false sense of safety) if you cannot detect potential incursions.
+Half
+the job of the onion is to slow down the attacker rather than stop him
+in order to give the detection layer a chance to catch him in
+the act.
+.Pp
+The best way to detect an incursion is to look for modified, missing, or
+unexpected files.
+The best
+way to look for modified files is from another (often centralized)
+limited-access system.
+Writing your security scripts on the extra-secure limited-access system
+makes them mostly invisible to potential attackers, and this is important.
+In order to take maximum advantage you generally have to give the
+limited-access box significant access to the other machines in the business,
+usually either by doing a read-only NFS export of the other machines to the
+limited-access box, or by setting up SSH keypairs to allow the limit-access
+box to SSH to the other machines.
+Except for its network traffic, NFS is
+the least visible method \(em allowing you to monitor the file systems on each
+client box virtually undetected.
+If your
+limited-access server is connected to the client boxes through a switch,
+the NFS method is often the better choice.
+If your limited-access server
+is connected to the client boxes through a hub or through several layers
+of routing, the NFS method may be too insecure (network-wise) and using SSH
+may be the better choice even with the audit-trail tracks that SSH lays.
+.Pp
+Once you give a limit-access box at least read access to the client systems
+it is supposed to monitor, you must write scripts to do the actual
+monitoring.
+Given an NFS mount, you can write scripts out of simple system
+utilities such as
+.Xr find 1
+and
+.Xr md5 1 .
+It is best to physically
+.Xr md5 1
+the client-box files boxes at least once a
+day, and to test control files such as those found in
+.Pa /etc
+and
+.Pa /usr/local/etc
+even more often.
+When mismatches are found relative to the base MD5
+information the limited-access machine knows is valid, it should scream at
+a sysadmin to go check it out.
+A good security script will also check for
+inappropriate SUID binaries and for new or deleted files on system partitions
+such as
+.Pa /
+and
+.Pa /usr .
+.Pp
+When using SSH rather than NFS, writing the security script is much more
+difficult.
+You essentially have to
+.Xr scp 1
+the scripts to the client box in order to run them, making them visible, and
+for safety you also need to
+.Xr scp 1
+the binaries (such as
+.Xr find 1 )
+that those scripts use.
+The
+.Xr sshd 8
+daemon on the client box may already be compromised.
+All in all,
+using SSH may be necessary when running over unsecure links, but it is also a
+lot harder to deal with.
+.Pp
+A good security script will also check for changes to user and staff members
+access configuration files:
+.Pa .rhosts , .shosts , .ssh/authorized_keys
+and so forth, files that might fall outside the purview of the MD5 check.
+.Pp
+If you have a huge amount of user disk space it may take too long to run
+through every file on those partitions.
+In this case, setting mount
+flags to disallow SUID binaries on those partitions is a good
+idea.
+The
+.Cm nosuid
+option
+(see
+.Xr mount 8 )
+is what you want to look into.
+I would scan them anyway at least once a
+week, since the object of this layer is to detect a break-in whether or
+not the break-in is effective.
+.Pp
+Process accounting
+(see
+.Xr accton 8 )
+is a relatively low-overhead feature of
+the operating system which I recommend using as a post-break-in evaluation
+mechanism.
+It is especially useful in tracking down how an intruder has
+actually broken into a system, assuming the file is still intact after
+the break-in occurs.
+.Pp
+Finally, security scripts should process the log files and the logs themselves
+should be generated in as secure a manner as possible \(em remote syslog can be
+very useful.
+An intruder tries to cover his tracks, and log files are critical
+to the sysadmin trying to track down the time and method of the initial
+break-in.
+One way to keep a permanent record of the log files is to run
+the system console to a serial port and collect the information on a
+continuing basis through a secure machine monitoring the consoles.
+.Sh PARANOIA
+A little paranoia never hurts.
+As a rule, a sysadmin can add any number
+of security features as long as they do not affect convenience, and
+can add security features that do affect convenience with some added
+thought.
+Even more importantly, a security administrator should mix it up
+a bit \(em if you use recommendations such as those given by this manual
+page verbatim, you give away your methodologies to the prospective
+attacker who also has access to this manual page.
+.Sh SPECIAL SECTION ON DoS ATTACKS
+This section covers Denial of Service attacks.
+A DoS attack is typically a packet attack.
+While there is not much you can do about modern spoofed
+packet attacks that saturate your network, you can generally limit the damage
+by ensuring that the attacks cannot take down your servers.
+.Bl -enum -offset indent
+.It
+Limiting server forks
+.It
+Limiting springboard attacks (ICMP response attacks, ping broadcast, etc.)
+.It
+Kernel Route Cache
+.El
+.Pp
+A common DoS attack is against a forking server that attempts to cause the
+server to eat processes, file descriptors, and memory until the machine
+dies.
+The
+.Xr inetd 8
+server
+has several options to limit this sort of attack.
+It should be noted that while it is possible to prevent a machine from going
+down it is not generally possible to prevent a service from being disrupted
+by the attack.
+Read the
+.Xr inetd 8
+manual page carefully and pay specific attention
+to the
+.Fl c , C ,
+and
+.Fl R
+options.
+Note that spoofed-IP attacks will circumvent
+the
+.Fl C
+option to
+.Xr inetd 8 ,
+so typically a combination of options must be used.
+Some standalone servers have self-fork-limitation parameters.
+.Pp
+The
+.Xr sendmail 8
+daemon has its
+.Fl OMaxDaemonChildren
+option which tends to work much
+better than trying to use
+.Xr sendmail 8 Ns 's
+load limiting options due to the
+load lag.
+You should specify a
+.Va MaxDaemonChildren
+parameter when you start
+.Xr sendmail 8
+high enough to handle your expected load but not so high that the
+computer cannot handle that number of
+.Nm sendmail Ns 's
+without falling on its face.
+It is also prudent to run
+.Xr sendmail 8
+in
+.Dq queued
+mode
+.Pq Fl ODeliveryMode=queued
+and to run the daemon
+.Pq Dq Nm sendmail Fl bd
+separate from the queue-runs
+.Pq Dq Nm sendmail Fl q15m .
+If you still want real-time delivery you can run the queue
+at a much lower interval, such as
+.Fl q1m ,
+but be sure to specify a reasonable
+.Va MaxDaemonChildren
+option for that
+.Xr sendmail 8
+to prevent cascade failures.
+.Pp
+The
+.Xr syslogd 8
+daemon can be attacked directly and it is strongly recommended that you use
+the
+.Fl s
+option whenever possible, and the
+.Fl a
+option otherwise.
+.Pp
+You should also be fairly careful
+with connect-back services such as tcpwrapper's reverse-identd, which can
+be attacked directly.
+You generally do not want to use the reverse-ident
+feature of tcpwrappers for this reason.
+.Pp
+It is a very good idea to protect internal services from external access
+by firewalling them off at your border routers.
+The idea here is to prevent
+saturation attacks from outside your LAN, not so much to protect internal
+services from network-based root compromise.
+Always configure an exclusive
+firewall, i.e.,
+.So
+firewall everything
+.Em except
+ports A, B, C, D, and M-Z
+.Sc .
+This
+way you can firewall off all of your low ports except for certain specific
+services such as
+.Xr named 8
+(if you are primary for a zone),
+.Xr talkd 8 ,
+.Xr sendmail 8 ,
+and other internet-accessible services.
+If you try to configure the firewall the other
+way \(em as an inclusive or permissive firewall, there is a good chance that you
+will forget to
+.Dq close
+a couple of services or that you will add a new internal
+service and forget to update the firewall.
+You can still open up the
+high-numbered port range on the firewall to allow permissive-like operation
+without compromising your low ports.
+Also take note that
+.Fx
+allows you to
+control the range of port numbers used for dynamic binding via the various
+.Va net.inet.ip.portrange
+sysctl's
+.Pq Dq Li "sysctl net.inet.ip.portrange" ,
+which can also
+ease the complexity of your firewall's configuration.
+I usually use a normal
+first/last range of 4000 to 5000, and a hiport range of 49152 to 65535, then
+block everything under 4000 off in my firewall
+(except for certain specific
+internet-accessible ports, of course).
+.Pp
+Another common DoS attack is called a springboard attack \(em to attack a server
+in a manner that causes the server to generate responses which then overload
+the server, the local network, or some other machine.
+The most common attack
+of this nature is the ICMP PING BROADCAST attack.
+The attacker spoofs ping
+packets sent to your LAN's broadcast address with the source IP address set
+to the actual machine they wish to attack.
+If your border routers are not
+configured to stomp on ping's to broadcast addresses, your LAN winds up
+generating sufficient responses to the spoofed source address to saturate the
+victim, especially when the attacker uses the same trick on several dozen
+broadcast addresses over several dozen different networks at once.
+Broadcast attacks of over a hundred and twenty megabits have been measured.
+A second common springboard attack is against the ICMP error reporting system.
+By
+constructing packets that generate ICMP error responses, an attacker can
+saturate a server's incoming network and cause the server to saturate its
+outgoing network with ICMP responses.
+This type of attack can also crash the
+server by running it out of
+.Vt mbuf Ns 's ,
+especially if the server cannot drain the
+ICMP responses it generates fast enough.
+The
+.Fx
+kernel has a new kernel
+compile option called
+.Dv ICMP_BANDLIM
+which limits the effectiveness of these
+sorts of attacks.
+The last major class of springboard attacks is related to
+certain internal
+.Xr inetd 8
+services such as the UDP echo service.
+An attacker
+simply spoofs a UDP packet with the source address being server A's echo port,
+and the destination address being server B's echo port, where server A and B
+are both on your LAN.
+The two servers then bounce this one packet back and
+forth between each other.
+The attacker can overload both servers and their
+LANs simply by injecting a few packets in this manner.
+Similar problems
+exist with the internal chargen port.
+A competent sysadmin will turn off all
+of these
+.Xr inetd 8 Ns -internal
+test services.
+.Pp
+Spoofed packet attacks may also be used to overload the kernel route cache.
+Refer to the
+.Va net.inet.ip.rtexpire , net.inet.ip.rtminexpire ,
+and
+.Va net.inet.ip.rtmaxcache
+.Xr sysctl 8
+variables.
+A spoofed packet attack that uses a random source IP will cause
+the kernel to generate a temporary cached route in the route table, viewable
+with
+.Dq Li "netstat -rna | fgrep W3" .
+These routes typically timeout in 1600
+seconds or so.
+If the kernel detects that the cached route table has gotten
+too big it will dynamically reduce the
+.Va rtexpire
+but will never decrease it to
+less than
+.Va rtminexpire .
+There are two problems: (1) The kernel does not react
+quickly enough when a lightly loaded server is suddenly attacked, and (2) The
+.Va rtminexpire
+is not low enough for the kernel to survive a sustained attack.
+If your servers are connected to the internet via a T3 or better it may be
+prudent to manually override both
+.Va rtexpire
+and
+.Va rtminexpire
+via
+.Xr sysctl 8 .
+Never set either parameter to zero
+(unless you want to crash the machine :-)).
+Setting both parameters to 2 seconds should be sufficient to protect the route
+table from attack.
+.Sh ACCESS ISSUES WITH KERBEROS AND SSH
+There are a few issues with both Kerberos and SSH that need to be addressed
+if you intend to use them.
+Kerberos5 is an excellent authentication
+protocol but the kerberized
+.Xr telnet 1
+and
+.Xr rlogin 1
+suck rocks.
+There are bugs that make them unsuitable for dealing with binary streams.
+Also, by default
+Kerberos does not encrypt a session unless you use the
+.Fl x
+option.
+SSH encrypts everything by default.
+.Pp
+SSH works quite well in every respect except when it is set up to
+forward encryption keys.
+What this means is that if you have a secure workstation holding
+keys that give you access to the rest of the system, and you
+.Xr ssh 1
+to an
+unsecure machine, your keys become exposed.
+The actual keys themselves are
+not exposed, but
+.Xr ssh 1
+installs a forwarding port for the duration of your
+login and if an attacker has broken root on the unsecure machine he can utilize
+that port to use your keys to gain access to any other machine that your
+keys unlock.
+.Pp
+We recommend that you use SSH in combination with Kerberos whenever possible
+for staff logins.
+SSH can be compiled with Kerberos support.
+This reduces
+your reliance on potentially exposable SSH keys while at the same time
+protecting passwords via Kerberos.
+SSH keys
+should only be used for automated tasks from secure machines (something
+that Kerberos is unsuited to).
+We also recommend that you either turn off
+key-forwarding in the SSH configuration, or that you make use of the
+.Va from Ns = Ns Ar IP/DOMAIN
+option that SSH allows in its
+.Pa authorized_keys
+file to make the key only usable to entities logging in from specific
+machines.
+.Sh SEE ALSO
+.Xr chflags 1 ,
+.Xr find 1 ,
+.Xr md5 1 ,
+.Xr netstat 1 ,
+.Xr openssl 1 ,
+.Xr ssh 1 ,
+.Xr xdm 1 Pq Pa ports/x11/xorg-clients ,
+.Xr group 5 ,
+.Xr ttys 5 ,
+.Xr accton 8 ,
+.Xr init 8 ,
+.Xr sshd 8 ,
+.Xr sysctl 8 ,
+.Xr syslogd 8 ,
+.Xr vipw 8
+.Sh HISTORY
+The
+.Nm
+manual page was originally written by
+.An Matthew Dillon
+and first appeared
+in
+.Fx 3.1 ,
+December 1998.
diff --git a/share/man/man7/sprog.7 b/share/man/man7/sprog.7
new file mode 100644
index 0000000..cde04b2
--- /dev/null
+++ b/share/man/man7/sprog.7
@@ -0,0 +1,180 @@
+.\"
+.\" Copyright (c) 2001 Eric Melville <eric@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$
+.\"
+.Dd June 3, 2001
+.Dt SPROG 7
+.Os
+.Sh NAME
+.Nm sprog
+.Nd secure programming practices
+.Sh DESCRIPTION
+Security issues have crept into many systems over the years.
+This document is a guide for programming practices that prevent these problems.
+.Ss Overview
+Writing secure applications takes a very scrutinous and pessimistic outlook.
+Applications should be run with the principle of
+.Dq Li least privilege
+so that no process is ever running with more than the bare minimum access it
+needs to accomplish its function.
+Previously tested code should be reused whenever possible.
+Generally, anything beyond the control of a program should never be trusted.
+This includes all forms of user input, system resources, interprocess
+communication, and the timing of events.
+.Ss Buffer Overflows
+One of the most common types of security problems is the buffer overflow.
+In short, if a program is not careful with the data it receives, it may be
+possible for this data to be written across memory, overwriting the return
+address for a function call, and the program will be forced to run code that
+does unfriendly things.
+.Pp
+A good number of functions in the standard C library make it difficult or
+even impossible to prevent buffer overflows when used.
+These include
+.Xr fscanf 3 ,
+.Xr gets 3 ,
+.Xr getwd 3 ,
+.Xr realpath 3 ,
+.Xr scanf 3 ,
+.Xr sprintf 3 ,
+.Xr strcat 3 ,
+.Xr strcpy 3 ,
+.Xr vscanf 3 ,
+and
+.Xr vsprintf 3 .
+.Pp
+Many other functions that deal with strings can also open up a potential
+buffer overflow when not used carefully.
+For example,
+.Xr strncat 3
+does not go out of its way to provide
+.Tn NUL
+character termination.
+Of course, the proper length must always be specified.
+Usage of
+.Xr strlcat 3
+and
+.Xr strlcpy 3
+ensure that strings are null terminated and of the specified length.
+.Pp
+Functions that receive a string format must also be used carefully.
+It is possible for a string to contain additional format specifiers, which
+open up another possibility for a buffer overflow.
+Never pass a string with untrusted data without using
+.Ql %s .
+Always use the proper secure idiom:
+.Pp
+.Dl function("%s", string);
+.Pp
+There are mechanisms that provide a backstop for these problems at the
+library and compiler levels, however, there is no substitute for simply
+writing good code.
+.Ss Set-user-ID Issues
+In many cases, it may be necessary for a program to operate with an increased
+set of permissions.
+Reasons for this include binding to protected sockets, reading and writing
+certain files and directories, and access to various resources.
+Using a setuid program is frequently the solution.
+However, it is important that programs give up these privileges as soon as
+possible.
+For example, if a program is binding to a protected socket, it should give
+up its privileges as soon as it has finished binding to that socket.
+This is accomplished with the
+.Xr setuid 2
+family of system calls.
+.Ss Limited Environments
+The traditional method of restricting a process is with the
+.Xr chroot 2
+system call.
+This system call changes the root directory from which all other paths are
+referenced for a process and any child processes.
+Of course, the process must have access to this path to begin with.
+The new environment does not actually take effect until
+.Xr chdir 2
+is called to place the process into the new environment.
+Unfortunately, a process can break out of this environment if root access is
+obtained.
+.Pp
+Often,
+.Xr jail 2
+can be used to create a more complete and enclosed environment than
+.Xr chroot 2
+can provide.
+A jail limits all processes inside that environment, including processes with
+superuser privileges.
+.Pp
+Fine grained privileges, as described by
+.Tn POSIX Ns .1e
+extensions, are currently a work in progress, and the focus of the
+.Tn TrustedBSD
+Project.
+More information can be found at
+.Pa http://www.TrustedBSD.org/ .
+.Ss Trust
+Programs should not make assumptions about the environment in which they are
+running.
+This includes user input, signals, environment variables, system resources,
+interprocess communications, and shared memory, amongst other things that are
+beyond the control of the program.
+They should not assume that all forms of invalid data can be detected either.
+Instead, they should use positive filtering, and only allow a specific subset
+of inputs that are known to be safe.
+This is the same logic that an administrator should apply to a firewall, that
+is, deny by default and specify what is to be accepted.
+.Ss Race Conditions
+A race condition is anomalous behavior caused by the relative timing of
+events.
+Programs should not assume that a particular event will occur before another.
+The most common causes of race conditions are signals, access checks, and
+file reads.
+Signals are asynchronous by nature, so special care must be taken
+while dealing with them.
+Attempting to check access with sequential non-atomic operations is a very
+bad idea, as files can be moved and changed at any given time.
+Instead of using a sequence of
+.Xr access 2
+and
+.Xr open 2 ,
+use
+.Xr seteuid 2
+and then call
+.Xr open 2
+directly.
+Set
+.Xr umask 2
+properly beforehand.
+.Sh SEE ALSO
+.Xr jail 2 ,
+.Xr setuid 2 ,
+.Xr strlcat 3 ,
+.Xr strlcpy 3
+.Sh AUTHORS
+.An -nosplit
+.An Eric Melville Aq eric@FreeBSD.org
+originally wrote this document based on a chapter of the
+.%B "FreeBSD Developer's Handbook"
+written by
+.An Murray Stokely Aq murray@FreeBSD.org .
diff --git a/share/man/man7/stdint.7 b/share/man/man7/stdint.7
new file mode 100644
index 0000000..2f36953
--- /dev/null
+++ b/share/man/man7/stdint.7
@@ -0,0 +1,136 @@
+.\" Copyright (c) 2002 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$
+.\"
+.Dd September 15, 2002
+.Dt STDINT 7
+.Os
+.Sh NAME
+.Nm stdint
+.Nd "standard integer types"
+.Sh SYNOPSIS
+.In stdint.h
+.Sh DESCRIPTION
+The
+.In stdint.h
+header provides source-portable integer types of a specific
+size, smallest memory footprint with a minimum size, fastest
+access speed with a minimum size, largest integer size, and
+those capable of storing pointers.
+.Pp
+The types
+.Vt int8_t ,
+.Vt int16_t ,
+.Vt int32_t ,
+and
+.Vt int64_t
+provide a signed integer type of width 8, 16, 32, or 64 bits, respectively.
+The types
+.Vt uint8_t ,
+.Vt uint16_t ,
+.Vt uint32_t ,
+and
+.Vt uint64_t
+provide an unsigned integer type of width 8, 16, 32, or 64 bits, respectively.
+These integer types should be used when a specific size is required.
+.Pp
+The types
+.Vt int_fast8_t ,
+.Vt int_fast16_t ,
+.Vt int_fast32_t ,
+and
+.Vt int_fast64_t
+provide the fastest signed integer type with a width
+of at least 8, 16, 32, or 64 bits, respectively.
+The types
+.Vt uint_fast8_t ,
+.Vt uint_fast16_t ,
+.Vt uint_fast32_t ,
+and
+.Vt uint_fast64_t
+provide the fastest unsigned integer type with a width
+of at least 8, 16, 32, or 64 bits, respectively.
+These types should be used when access speed is
+paramount, and when a specific size is not required.
+.Pp
+The types
+.Vt int_least8_t ,
+.Vt int_least16_t ,
+.Vt int_least32_t ,
+and
+.Vt int_least64_t
+provide the smallest memory footprint signed integer type with
+a width of at least 8, 16, 32, or 64 bits, respectively.
+The types
+.Vt uint_least8_t ,
+.Vt uint_least16_t ,
+.Vt uint_least32_t ,
+and
+.Vt uint_least64_t
+provide the smallest memory footprint unsigned integer type with
+a width of at least 8, 16, 32, or 64 bits, respectively.
+These types should be used when memory storage is of
+concern, and when a specific size is not required.
+.Pp
+The type
+.Vt intmax_t
+provides a signed integer type large
+enough to hold any other signed integer.
+The type
+.Vt uintmax_t
+provides an unsigned integer type large
+enough to hold any other unsigned integer.
+These types are generally the largest signed and unsigned
+integer types available on a specific architecture.
+.Pp
+The type
+.Vt intptr_t
+provides a signed integer type with the ability to hold a pointer to
+.Vt void ,
+that can later be converted back to a pointer to
+.Vt void .
+.Pp
+The type
+.Vt uintptr_t
+provides an unsigned integer type with the ability to hold a pointer to
+.Vt void ,
+that can later be converted back to a pointer to
+.Vt void .
+.Pp
+Additionally, the
+.In stdint.h
+header defines some macros, but none of them are documented here.
+.Sh STANDARDS
+The
+.In stdint.h
+header conforms to
+.St -isoC-99
+and
+.St -p1003.1-2001 .
+.Sh HISTORY
+The
+.In stdint.h
+header was first introduced in
+.Fx 5.0 .
diff --git a/share/man/man7/tuning.7 b/share/man/man7/tuning.7
new file mode 100644
index 0000000..45aee26
--- /dev/null
+++ b/share/man/man7/tuning.7
@@ -0,0 +1,982 @@
+.\" Copyright (C) 2001 Matthew Dillon. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 19, 2007
+.Dt TUNING 7
+.Os
+.Sh NAME
+.Nm tuning
+.Nd performance tuning under FreeBSD
+.Sh SYSTEM SETUP - DISKLABEL, NEWFS, TUNEFS, SWAP
+When using
+.Xr bsdlabel 8
+or
+.Xr sysinstall 8
+to lay out your file systems on a hard disk it is important to remember
+that hard drives can transfer data much more quickly from outer tracks
+than they can from inner tracks.
+To take advantage of this you should
+try to pack your smaller file systems and swap closer to the outer tracks,
+follow with the larger file systems, and end with the largest file systems.
+It is also important to size system standard file systems such that you
+will not be forced to resize them later as you scale the machine up.
+I usually create, in order, a 128M root, 1G swap, 128M
+.Pa /var ,
+128M
+.Pa /var/tmp ,
+3G
+.Pa /usr ,
+and use any remaining space for
+.Pa /home .
+.Pp
+You should typically size your swap space to approximately 2x main memory.
+If you do not have a lot of RAM, though, you will generally want a lot
+more swap.
+It is not recommended that you configure any less than
+256M of swap on a system and you should keep in mind future memory
+expansion when sizing the swap partition.
+The kernel's VM paging algorithms are tuned to perform best when there is
+at least 2x swap versus main memory.
+Configuring too little swap can lead
+to inefficiencies in the VM page scanning code as well as create issues
+later on if you add more memory to your machine.
+Finally, on larger systems
+with multiple SCSI disks (or multiple IDE disks operating on different
+controllers), we strongly recommend that you configure swap on each drive.
+The swap partitions on the drives should be approximately the same size.
+The kernel can handle arbitrary sizes but
+internal data structures scale to 4 times the largest swap partition.
+Keeping
+the swap partitions near the same size will allow the kernel to optimally
+stripe swap space across the N disks.
+Do not worry about overdoing it a
+little, swap space is the saving grace of
+.Ux
+and even if you do not normally use much swap, it can give you more time to
+recover from a runaway program before being forced to reboot.
+.Pp
+How you size your
+.Pa /var
+partition depends heavily on what you intend to use the machine for.
+This
+partition is primarily used to hold mailboxes, the print spool, and log
+files.
+Some people even make
+.Pa /var/log
+its own partition (but except for extreme cases it is not worth the waste
+of a partition ID).
+If your machine is intended to act as a mail
+or print server,
+or you are running a heavily visited web server, you should consider
+creating a much larger partition \(en perhaps a gig or more.
+It is very easy
+to underestimate log file storage requirements.
+.Pp
+Sizing
+.Pa /var/tmp
+depends on the kind of temporary file usage you think you will need.
+128M is
+the minimum we recommend.
+Also note that sysinstall will create a
+.Pa /tmp
+directory.
+Dedicating a partition for temporary file storage is important for
+two reasons: first, it reduces the possibility of file system corruption
+in a crash, and second it reduces the chance of a runaway process that
+fills up
+.Oo Pa /var Oc Ns Pa /tmp
+from blowing up more critical subsystems (mail,
+logging, etc).
+Filling up
+.Oo Pa /var Oc Ns Pa /tmp
+is a very common problem to have.
+.Pp
+In the old days there were differences between
+.Pa /tmp
+and
+.Pa /var/tmp ,
+but the introduction of
+.Pa /var
+(and
+.Pa /var/tmp )
+led to massive confusion
+by program writers so today programs haphazardly use one or the
+other and thus no real distinction can be made between the two.
+So it makes sense to have just one temporary directory and
+softlink to it from the other
+.Pa tmp
+directory locations.
+However you handle
+.Pa /tmp ,
+the one thing you do not want to do is leave it sitting
+on the root partition where it might cause root to fill up or possibly
+corrupt root in a crash/reboot situation.
+.Pp
+The
+.Pa /usr
+partition holds the bulk of the files required to support the system and
+a subdirectory within it called
+.Pa /usr/local
+holds the bulk of the files installed from the
+.Xr ports 7
+hierarchy.
+If you do not use ports all that much and do not intend to keep
+system source
+.Pq Pa /usr/src
+on the machine, you can get away with
+a 1 gigabyte
+.Pa /usr
+partition.
+However, if you install a lot of ports
+(especially window managers and Linux-emulated binaries), we recommend
+at least a 2 gigabyte
+.Pa /usr
+and if you also intend to keep system source
+on the machine, we recommend a 3 gigabyte
+.Pa /usr .
+Do not underestimate the
+amount of space you will need in this partition, it can creep up and
+surprise you!
+.Pp
+The
+.Pa /home
+partition is typically used to hold user-specific data.
+I usually size it to the remainder of the disk.
+.Pp
+Why partition at all?
+Why not create one big
+.Pa /
+partition and be done with it?
+Then I do not have to worry about undersizing things!
+Well, there are several reasons this is not a good idea.
+First,
+each partition has different operational characteristics and separating them
+allows the file system to tune itself to those characteristics.
+For example,
+the root and
+.Pa /usr
+partitions are read-mostly, with very little writing, while
+a lot of reading and writing could occur in
+.Pa /var
+and
+.Pa /var/tmp .
+By properly
+partitioning your system fragmentation introduced in the smaller more
+heavily write-loaded partitions will not bleed over into the mostly-read
+partitions.
+Additionally, keeping the write-loaded partitions closer to
+the edge of the disk (i.e., before the really big partitions instead of after
+in the partition table) will increase I/O performance in the partitions
+where you need it the most.
+Now it is true that you might also need I/O
+performance in the larger partitions, but they are so large that shifting
+them more towards the edge of the disk will not lead to a significant
+performance improvement whereas moving
+.Pa /var
+to the edge can have a huge impact.
+Finally, there are safety concerns.
+Having a small neat root partition that
+is essentially read-only gives it a greater chance of surviving a bad crash
+intact.
+.Pp
+Properly partitioning your system also allows you to tune
+.Xr newfs 8 ,
+and
+.Xr tunefs 8
+parameters.
+Tuning
+.Xr newfs 8
+requires more experience but can lead to significant improvements in
+performance.
+There are three parameters that are relatively safe to tune:
+.Em blocksize , bytes/i-node ,
+and
+.Em cylinders/group .
+.Pp
+.Fx
+performs best when using 8K or 16K file system block sizes.
+The default file system block size is 16K,
+which provides best performance for most applications,
+with the exception of those that perform random access on large files
+(such as database server software).
+Such applications tend to perform better with a smaller block size,
+although modern disk characteristics are such that the performance
+gain from using a smaller block size may not be worth consideration.
+Using a block size larger than 16K
+can cause fragmentation of the buffer cache and
+lead to lower performance.
+.Pp
+The defaults may be unsuitable
+for a file system that requires a very large number of i-nodes
+or is intended to hold a large number of very small files.
+Such a file system should be created with an 8K or 4K block size.
+This also requires you to specify a smaller
+fragment size.
+We recommend always using a fragment size that is 1/8
+the block size (less testing has been done on other fragment size factors).
+The
+.Xr newfs 8
+options for this would be
+.Dq Li "newfs -f 1024 -b 8192 ..." .
+.Pp
+If a large partition is intended to be used to hold fewer, larger files, such
+as database files, you can increase the
+.Em bytes/i-node
+ratio which reduces the number of i-nodes (maximum number of files and
+directories that can be created) for that partition.
+Decreasing the number
+of i-nodes in a file system can greatly reduce
+.Xr fsck 8
+recovery times after a crash.
+Do not use this option
+unless you are actually storing large files on the partition, because if you
+overcompensate you can wind up with a file system that has lots of free
+space remaining but cannot accommodate any more files.
+Using 32768, 65536, or 262144 bytes/i-node is recommended.
+You can go higher but
+it will have only incremental effects on
+.Xr fsck 8
+recovery times.
+For example,
+.Dq Li "newfs -i 32768 ..." .
+.Pp
+.Xr tunefs 8
+may be used to further tune a file system.
+This command can be run in
+single-user mode without having to reformat the file system.
+However, this is possibly the most abused program in the system.
+Many people attempt to
+increase available file system space by setting the min-free percentage to 0.
+This can lead to severe file system fragmentation and we do not recommend
+that you do this.
+Really the only
+.Xr tunefs 8
+option worthwhile here is turning on
+.Em softupdates
+with
+.Dq Li "tunefs -n enable /filesystem" .
+(Note: in
+.Fx 4.5
+and later, softupdates can be turned on using the
+.Fl U
+option to
+.Xr newfs 8 ,
+and
+.Xr sysinstall 8
+will typically enable softupdates automatically for non-root file systems).
+Softupdates drastically improves meta-data performance, mainly file
+creation and deletion.
+We recommend enabling softupdates on most file systems; however, there
+are two limitations to softupdates that you should be aware of when
+determining whether to use it on a file system.
+First, softupdates guarantees file system consistency in the
+case of a crash but could very easily be several seconds (even a minute!\&)
+behind on pending write to the physical disk.
+If you crash you may lose more work
+than otherwise.
+Secondly, softupdates delays the freeing of file system
+blocks.
+If you have a file system (such as the root file system) which is
+close to full, doing a major update of it, e.g.\&
+.Dq Li "make installworld" ,
+can run it out of space and cause the update to fail.
+For this reason, softupdates will not be enabled on the root file system
+during a typical install.
+There is no loss of performance since the root
+file system is rarely written to.
+.Pp
+A number of run-time
+.Xr mount 8
+options exist that can help you tune the system.
+The most obvious and most dangerous one is
+.Cm async .
+Only use this option in conjunction with
+.Xr gjournal 8 ,
+as it is far too dangerous on a normal file system.
+A less dangerous and more
+useful
+.Xr mount 8
+option is called
+.Cm noatime .
+.Ux
+file systems normally update the last-accessed time of a file or
+directory whenever it is accessed.
+This operation is handled in
+.Fx
+with a delayed write and normally does not create a burden on the system.
+However, if your system is accessing a huge number of files on a continuing
+basis the buffer cache can wind up getting polluted with atime updates,
+creating a burden on the system.
+For example, if you are running a heavily
+loaded web site, or a news server with lots of readers, you might want to
+consider turning off atime updates on your larger partitions with this
+.Xr mount 8
+option.
+However, you should not gratuitously turn off atime
+updates everywhere.
+For example, the
+.Pa /var
+file system customarily
+holds mailboxes, and atime (in combination with mtime) is used to
+determine whether a mailbox has new mail.
+You might as well leave
+atime turned on for mostly read-only partitions such as
+.Pa /
+and
+.Pa /usr
+as well.
+This is especially useful for
+.Pa /
+since some system utilities
+use the atime field for reporting.
+.Sh STRIPING DISKS
+In larger systems you can stripe partitions from several drives together
+to create a much larger overall partition.
+Striping can also improve
+the performance of a file system by splitting I/O operations across two
+or more disks.
+The
+.Xr gstripe 8 ,
+.Xr gvinum 8 ,
+and
+.Xr ccdconfig 8
+utilities may be used to create simple striped file systems.
+Generally
+speaking, striping smaller partitions such as the root and
+.Pa /var/tmp ,
+or essentially read-only partitions such as
+.Pa /usr
+is a complete waste of time.
+You should only stripe partitions that require serious I/O performance,
+typically
+.Pa /var , /home ,
+or custom partitions used to hold databases and web pages.
+Choosing the proper stripe size is also
+important.
+File systems tend to store meta-data on power-of-2 boundaries
+and you usually want to reduce seeking rather than increase seeking.
+This
+means you want to use a large off-center stripe size such as 1152 sectors
+so sequential I/O does not seek both disks and so meta-data is distributed
+across both disks rather than concentrated on a single disk.
+If
+you really need to get sophisticated, we recommend using a real hardware
+RAID controller from the list of
+.Fx
+supported controllers.
+.Sh SYSCTL TUNING
+.Xr sysctl 8
+variables permit system behavior to be monitored and controlled at
+run-time.
+Some sysctls simply report on the behavior of the system; others allow
+the system behavior to be modified;
+some may be set at boot time using
+.Xr rc.conf 5 ,
+but most will be set via
+.Xr sysctl.conf 5 .
+There are several hundred sysctls in the system, including many that appear
+to be candidates for tuning but actually are not.
+In this document we will only cover the ones that have the greatest effect
+on the system.
+.Pp
+The
+.Va kern.ipc.shm_use_phys
+sysctl defaults to 0 (off) and may be set to 0 (off) or 1 (on).
+Setting
+this parameter to 1 will cause all System V shared memory segments to be
+mapped to unpageable physical RAM.
+This feature only has an effect if you
+are either (A) mapping small amounts of shared memory across many (hundreds)
+of processes, or (B) mapping large amounts of shared memory across any
+number of processes.
+This feature allows the kernel to remove a great deal
+of internal memory management page-tracking overhead at the cost of wiring
+the shared memory into core, making it unswappable.
+.Pp
+The
+.Va vfs.vmiodirenable
+sysctl defaults to 1 (on).
+This parameter controls how directories are cached
+by the system.
+Most directories are small and use but a single fragment
+(typically 1K) in the file system and even less (typically 512 bytes) in
+the buffer cache.
+However, when operating in the default mode the buffer
+cache will only cache a fixed number of directories even if you have a huge
+amount of memory.
+Turning on this sysctl allows the buffer cache to use
+the VM Page Cache to cache the directories.
+The advantage is that all of
+memory is now available for caching directories.
+The disadvantage is that
+the minimum in-core memory used to cache a directory is the physical page
+size (typically 4K) rather than 512 bytes.
+We recommend turning this option off in memory-constrained environments;
+however, when on, it will substantially improve the performance of services
+that manipulate a large number of files.
+Such services can include web caches, large mail systems, and news systems.
+Turning on this option will generally not reduce performance even with the
+wasted memory but you should experiment to find out.
+.Pp
+The
+.Va vfs.write_behind
+sysctl defaults to 1 (on).
+This tells the file system to issue media
+writes as full clusters are collected, which typically occurs when writing
+large sequential files.
+The idea is to avoid saturating the buffer
+cache with dirty buffers when it would not benefit I/O performance.
+However,
+this may stall processes and under certain circumstances you may wish to turn
+it off.
+.Pp
+The
+.Va vfs.hirunningspace
+sysctl determines how much outstanding write I/O may be queued to
+disk controllers system-wide at any given instance.
+The default is
+usually sufficient but on machines with lots of disks you may want to bump
+it up to four or five megabytes.
+Note that setting too high a value
+(exceeding the buffer cache's write threshold) can lead to extremely
+bad clustering performance.
+Do not set this value arbitrarily high!
+Also,
+higher write queueing values may add latency to reads occurring at the same
+time.
+.Pp
+There are various other buffer-cache and VM page cache related sysctls.
+We do not recommend modifying these values.
+As of
+.Fx 4.3 ,
+the VM system does an extremely good job tuning itself.
+.Pp
+The
+.Va net.inet.tcp.sendspace
+and
+.Va net.inet.tcp.recvspace
+sysctls are of particular interest if you are running network intensive
+applications.
+They control the amount of send and receive buffer space
+allowed for any given TCP connection.
+The default sending buffer is 32K; the default receiving buffer
+is 64K.
+You can often
+improve bandwidth utilization by increasing the default at the cost of
+eating up more kernel memory for each connection.
+We do not recommend
+increasing the defaults if you are serving hundreds or thousands of
+simultaneous connections because it is possible to quickly run the system
+out of memory due to stalled connections building up.
+But if you need
+high bandwidth over a fewer number of connections, especially if you have
+gigabit Ethernet, increasing these defaults can make a huge difference.
+You can adjust the buffer size for incoming and outgoing data separately.
+For example, if your machine is primarily doing web serving you may want
+to decrease the recvspace in order to be able to increase the
+sendspace without eating too much kernel memory.
+Note that the routing table (see
+.Xr route 8 )
+can be used to introduce route-specific send and receive buffer size
+defaults.
+.Pp
+As an additional management tool you can use pipes in your
+firewall rules (see
+.Xr ipfw 8 )
+to limit the bandwidth going to or from particular IP blocks or ports.
+For example, if you have a T1 you might want to limit your web traffic
+to 70% of the T1's bandwidth in order to leave the remainder available
+for mail and interactive use.
+Normally a heavily loaded web server
+will not introduce significant latencies into other services even if
+the network link is maxed out, but enforcing a limit can smooth things
+out and lead to longer term stability.
+Many people also enforce artificial
+bandwidth limitations in order to ensure that they are not charged for
+using too much bandwidth.
+.Pp
+Setting the send or receive TCP buffer to values larger than 65535 will result
+in a marginal performance improvement unless both hosts support the window
+scaling extension of the TCP protocol, which is controlled by the
+.Va net.inet.tcp.rfc1323
+sysctl.
+These extensions should be enabled and the TCP buffer size should be set
+to a value larger than 65536 in order to obtain good performance from
+certain types of network links; specifically, gigabit WAN links and
+high-latency satellite links.
+RFC1323 support is enabled by default.
+.Pp
+The
+.Va net.inet.tcp.always_keepalive
+sysctl determines whether or not the TCP implementation should attempt
+to detect dead TCP connections by intermittently delivering
+.Dq keepalives
+on the connection.
+By default, this is enabled for all applications; by setting this
+sysctl to 0, only applications that specifically request keepalives
+will use them.
+In most environments, TCP keepalives will improve the management of
+system state by expiring dead TCP connections, particularly for
+systems serving dialup users who may not always terminate individual
+TCP connections before disconnecting from the network.
+However, in some environments, temporary network outages may be
+incorrectly identified as dead sessions, resulting in unexpectedly
+terminated TCP connections.
+In such environments, setting the sysctl to 0 may reduce the occurrence of
+TCP session disconnections.
+.Pp
+The
+.Va net.inet.tcp.delayed_ack
+TCP feature is largely misunderstood.
+Historically speaking, this feature
+was designed to allow the acknowledgement to transmitted data to be returned
+along with the response.
+For example, when you type over a remote shell,
+the acknowledgement to the character you send can be returned along with the
+data representing the echo of the character.
+With delayed acks turned off,
+the acknowledgement may be sent in its own packet, before the remote service
+has a chance to echo the data it just received.
+This same concept also
+applies to any interactive protocol (e.g.\& SMTP, WWW, POP3), and can cut the
+number of tiny packets flowing across the network in half.
+The
+.Fx
+delayed ACK implementation also follows the TCP protocol rule that
+at least every other packet be acknowledged even if the standard 100ms
+timeout has not yet passed.
+Normally the worst a delayed ACK can do is
+slightly delay the teardown of a connection, or slightly delay the ramp-up
+of a slow-start TCP connection.
+While we are not sure we believe that
+the several FAQs related to packages such as SAMBA and SQUID which advise
+turning off delayed acks may be referring to the slow-start issue.
+In
+.Fx ,
+it would be more beneficial to increase the slow-start flightsize via
+the
+.Va net.inet.tcp.slowstart_flightsize
+sysctl rather than disable delayed acks.
+.Pp
+The
+.Va net.inet.tcp.inflight.enable
+sysctl turns on bandwidth delay product limiting for all TCP connections.
+The system will attempt to calculate the bandwidth delay product for each
+connection and limit the amount of data queued to the network to just the
+amount required to maintain optimum throughput.
+This feature is useful
+if you are serving data over modems, GigE, or high speed WAN links (or
+any other link with a high bandwidth*delay product), especially if you are
+also using window scaling or have configured a large send window.
+If you enable this option, you should also be sure to set
+.Va net.inet.tcp.inflight.debug
+to 0 (disable debugging), and for production use setting
+.Va net.inet.tcp.inflight.min
+to at least 6144 may be beneficial.
+Note however, that setting high
+minimums may effectively disable bandwidth limiting depending on the link.
+The limiting feature reduces the amount of data built up in intermediate
+router and switch packet queues as well as reduces the amount of data built
+up in the local host's interface queue.
+With fewer packets queued up,
+interactive connections, especially over slow modems, will also be able
+to operate with lower round trip times.
+However, note that this feature
+only affects data transmission (uploading / server-side).
+It does not
+affect data reception (downloading).
+.Pp
+Adjusting
+.Va net.inet.tcp.inflight.stab
+is not recommended.
+This parameter defaults to 20, representing 2 maximal packets added
+to the bandwidth delay product window calculation.
+The additional
+window is required to stabilize the algorithm and improve responsiveness
+to changing conditions, but it can also result in higher ping times
+over slow links (though still much lower than you would get without
+the inflight algorithm).
+In such cases you may
+wish to try reducing this parameter to 15, 10, or 5, and you may also
+have to reduce
+.Va net.inet.tcp.inflight.min
+(for example, to 3500) to get the desired effect.
+Reducing these parameters
+should be done as a last resort only.
+.Pp
+The
+.Va net.inet.ip.portrange.*
+sysctls control the port number ranges automatically bound to TCP and UDP
+sockets.
+There are three ranges: a low range, a default range, and a
+high range, selectable via the
+.Dv IP_PORTRANGE
+.Xr setsockopt 2
+call.
+Most
+network programs use the default range which is controlled by
+.Va net.inet.ip.portrange.first
+and
+.Va net.inet.ip.portrange.last ,
+which default to 49152 and 65535, respectively.
+Bound port ranges are
+used for outgoing connections, and it is possible to run the system out
+of ports under certain circumstances.
+This most commonly occurs when you are
+running a heavily loaded web proxy.
+The port range is not an issue
+when running a server which handles mainly incoming connections, such as a
+normal web server, or has a limited number of outgoing connections, such
+as a mail relay.
+For situations where you may run out of ports,
+we recommend decreasing
+.Va net.inet.ip.portrange.first
+modestly.
+A range of 10000 to 30000 ports may be reasonable.
+You should also consider firewall effects when changing the port range.
+Some firewalls
+may block large ranges of ports (usually low-numbered ports) and expect systems
+to use higher ranges of ports for outgoing connections.
+By default
+.Va net.inet.ip.portrange.last
+is set at the maximum allowable port number.
+.Pp
+The
+.Va kern.ipc.somaxconn
+sysctl limits the size of the listen queue for accepting new TCP connections.
+The default value of 128 is typically too low for robust handling of new
+connections in a heavily loaded web server environment.
+For such environments,
+we recommend increasing this value to 1024 or higher.
+The service daemon
+may itself limit the listen queue size (e.g.\&
+.Xr sendmail 8 ,
+apache) but will
+often have a directive in its configuration file to adjust the queue size up.
+Larger listen queues also do a better job of fending off denial of service
+attacks.
+.Pp
+The
+.Va kern.maxfiles
+sysctl determines how many open files the system supports.
+The default is
+typically a few thousand but you may need to bump this up to ten or twenty
+thousand if you are running databases or large descriptor-heavy daemons.
+The read-only
+.Va kern.openfiles
+sysctl may be interrogated to determine the current number of open files
+on the system.
+.Pp
+The
+.Va vm.swap_idle_enabled
+sysctl is useful in large multi-user systems where you have lots of users
+entering and leaving the system and lots of idle processes.
+Such systems
+tend to generate a great deal of continuous pressure on free memory reserves.
+Turning this feature on and adjusting the swapout hysteresis (in idle
+seconds) via
+.Va vm.swap_idle_threshold1
+and
+.Va vm.swap_idle_threshold2
+allows you to depress the priority of pages associated with idle processes
+more quickly then the normal pageout algorithm.
+This gives a helping hand
+to the pageout daemon.
+Do not turn this option on unless you need it,
+because the tradeoff you are making is to essentially pre-page memory sooner
+rather than later, eating more swap and disk bandwidth.
+In a small system
+this option will have a detrimental effect but in a large system that is
+already doing moderate paging this option allows the VM system to stage
+whole processes into and out of memory more easily.
+.Sh LOADER TUNABLES
+Some aspects of the system behavior may not be tunable at runtime because
+memory allocations they perform must occur early in the boot process.
+To change loader tunables, you must set their values in
+.Xr loader.conf 5
+and reboot the system.
+.Pp
+.Va kern.maxusers
+controls the scaling of a number of static system tables, including defaults
+for the maximum number of open files, sizing of network memory resources, etc.
+As of
+.Fx 4.5 ,
+.Va kern.maxusers
+is automatically sized at boot based on the amount of memory available in
+the system, and may be determined at run-time by inspecting the value of the
+read-only
+.Va kern.maxusers
+sysctl.
+Some sites will require larger or smaller values of
+.Va kern.maxusers
+and may set it as a loader tunable; values of 64, 128, and 256 are not
+uncommon.
+We do not recommend going above 256 unless you need a huge number
+of file descriptors; many of the tunable values set to their defaults by
+.Va kern.maxusers
+may be individually overridden at boot-time or run-time as described
+elsewhere in this document.
+Systems older than
+.Fx 4.4
+must set this value via the kernel
+.Xr config 8
+option
+.Cd maxusers
+instead.
+.Pp
+The
+.Va kern.dfldsiz
+and
+.Va kern.dflssiz
+tunables set the default soft limits for process data and stack size
+respectively.
+Processes may increase these up to the hard limits by calling
+.Xr setrlimit 2 .
+The
+.Va kern.maxdsiz ,
+.Va kern.maxssiz ,
+and
+.Va kern.maxtsiz
+tunables set the hard limits for process data, stack, and text size
+respectively; processes may not exceed these limits.
+The
+.Va kern.sgrowsiz
+tunable controls how much the stack segment will grow when a process
+needs to allocate more stack.
+.Pp
+.Va kern.ipc.nmbclusters
+may be adjusted to increase the number of network mbufs the system is
+willing to allocate.
+Each cluster represents approximately 2K of memory,
+so a value of 1024 represents 2M of kernel memory reserved for network
+buffers.
+You can do a simple calculation to figure out how many you need.
+If you have a web server which maxes out at 1000 simultaneous connections,
+and each connection eats a 16K receive and 16K send buffer, you need
+approximately 32MB worth of network buffers to deal with it.
+A good rule of
+thumb is to multiply by 2, so 32MBx2 = 64MB/2K = 32768.
+So for this case
+you would want to set
+.Va kern.ipc.nmbclusters
+to 32768.
+We recommend values between
+1024 and 4096 for machines with moderates amount of memory, and between 4096
+and 32768 for machines with greater amounts of memory.
+Under no circumstances
+should you specify an arbitrarily high value for this parameter, it could
+lead to a boot-time crash.
+The
+.Fl m
+option to
+.Xr netstat 1
+may be used to observe network cluster use.
+Older versions of
+.Fx
+do not have this tunable and require that the
+kernel
+.Xr config 8
+option
+.Dv NMBCLUSTERS
+be set instead.
+.Pp
+More and more programs are using the
+.Xr sendfile 2
+system call to transmit files over the network.
+The
+.Va kern.ipc.nsfbufs
+sysctl controls the number of file system buffers
+.Xr sendfile 2
+is allowed to use to perform its work.
+This parameter nominally scales
+with
+.Va kern.maxusers
+so you should not need to modify this parameter except under extreme
+circumstances.
+See the
+.Sx TUNING
+section in the
+.Xr sendfile 2
+manual page for details.
+.Sh KERNEL CONFIG TUNING
+There are a number of kernel options that you may have to fiddle with in
+a large-scale system.
+In order to change these options you need to be
+able to compile a new kernel from source.
+The
+.Xr config 8
+manual page and the handbook are good starting points for learning how to
+do this.
+Generally the first thing you do when creating your own custom
+kernel is to strip out all the drivers and services you do not use.
+Removing things like
+.Dv INET6
+and drivers you do not have will reduce the size of your kernel, sometimes
+by a megabyte or more, leaving more memory available for applications.
+.Pp
+.Dv SCSI_DELAY
+may be used to reduce system boot times.
+The defaults are fairly high and
+can be responsible for 5+ seconds of delay in the boot process.
+Reducing
+.Dv SCSI_DELAY
+to something below 5 seconds could work (especially with modern drives).
+.Pp
+There are a number of
+.Dv *_CPU
+options that can be commented out.
+If you only want the kernel to run
+on a Pentium class CPU, you can easily remove
+.Dv I486_CPU ,
+but only remove
+.Dv I586_CPU
+if you are sure your CPU is being recognized as a Pentium II or better.
+Some clones may be recognized as a Pentium or even a 486 and not be able
+to boot without those options.
+If it works, great!
+The operating system
+will be able to better use higher-end CPU features for MMU, task switching,
+timebase, and even device operations.
+Additionally, higher-end CPUs support
+4MB MMU pages, which the kernel uses to map the kernel itself into memory,
+increasing its efficiency under heavy syscall loads.
+.Sh IDE WRITE CACHING
+.Fx 4.3
+flirted with turning off IDE write caching.
+This reduced write bandwidth
+to IDE disks but was considered necessary due to serious data consistency
+issues introduced by hard drive vendors.
+Basically the problem is that
+IDE drives lie about when a write completes.
+With IDE write caching turned
+on, IDE hard drives will not only write data to disk out of order, they
+will sometimes delay some of the blocks indefinitely under heavy disk
+load.
+A crash or power failure can result in serious file system
+corruption.
+So our default was changed to be safe.
+Unfortunately, the
+result was such a huge loss in performance that we caved in and changed the
+default back to on after the release.
+You should check the default on
+your system by observing the
+.Va hw.ata.wc
+sysctl variable.
+If IDE write caching is turned off, you can turn it back
+on by setting the
+.Va hw.ata.wc
+loader tunable to 1.
+More information on tuning the ATA driver system may be found in the
+.Xr ata 4
+manual page.
+If you need performance, go with SCSI.
+.Sh CPU, MEMORY, DISK, NETWORK
+The type of tuning you do depends heavily on where your system begins to
+bottleneck as load increases.
+If your system runs out of CPU (idle times
+are perpetually 0%) then you need to consider upgrading the CPU or moving to
+an SMP motherboard (multiple CPU's), or perhaps you need to revisit the
+programs that are causing the load and try to optimize them.
+If your system
+is paging to swap a lot you need to consider adding more memory.
+If your
+system is saturating the disk you typically see high CPU idle times and
+total disk saturation.
+.Xr systat 1
+can be used to monitor this.
+There are many solutions to saturated disks:
+increasing memory for caching, mirroring disks, distributing operations across
+several machines, and so forth.
+If disk performance is an issue and you
+are using IDE drives, switching to SCSI can help a great deal.
+While modern
+IDE drives compare with SCSI in raw sequential bandwidth, the moment you
+start seeking around the disk SCSI drives usually win.
+.Pp
+Finally, you might run out of network suds.
+The first line of defense for
+improving network performance is to make sure you are using switches instead
+of hubs, especially these days where switches are almost as cheap.
+Hubs
+have severe problems under heavy loads due to collision back-off and one bad
+host can severely degrade the entire LAN.
+Second, optimize the network path
+as much as possible.
+For example, in
+.Xr firewall 7
+we describe a firewall protecting internal hosts with a topology where
+the externally visible hosts are not routed through it.
+Use 100BaseT rather
+than 10BaseT, or use 1000BaseT rather than 100BaseT, depending on your needs.
+Most bottlenecks occur at the WAN link (e.g.\&
+modem, T1, DSL, whatever).
+If expanding the link is not an option it may be possible to use the
+.Xr dummynet 4
+feature to implement peak shaving or other forms of traffic shaping to
+prevent the overloaded service (such as web services) from affecting other
+services (such as email), or vice versa.
+In home installations this could
+be used to give interactive traffic (your browser,
+.Xr ssh 1
+logins) priority
+over services you export from your box (web services, email).
+.Sh SEE ALSO
+.Xr netstat 1 ,
+.Xr systat 1 ,
+.Xr sendfile 2 ,
+.Xr ata 4 ,
+.Xr dummynet 4 ,
+.Xr login.conf 5 ,
+.Xr rc.conf 5 ,
+.Xr sysctl.conf 5 ,
+.Xr firewall 7 ,
+.Xr hier 7 ,
+.Xr ports 7 ,
+.Xr boot 8 ,
+.Xr bsdlabel 8 ,
+.Xr ccdconfig 8 ,
+.Xr config 8 ,
+.Xr fsck 8 ,
+.Xr gjournal 8 ,
+.Xr gstripe 8 ,
+.Xr gvinum 8 ,
+.Xr ifconfig 8 ,
+.Xr ipfw 8 ,
+.Xr loader 8 ,
+.Xr mount 8 ,
+.Xr newfs 8 ,
+.Xr route 8 ,
+.Xr sysctl 8 ,
+.Xr sysinstall 8 ,
+.Xr tunefs 8
+.Sh HISTORY
+The
+.Nm
+manual page was originally written by
+.An Matthew Dillon
+and first appeared
+in
+.Fx 4.3 ,
+May 2001.
diff --git a/share/man/man8/MAKEDEV.8 b/share/man/man8/MAKEDEV.8
new file mode 100644
index 0000000..8b42493
--- /dev/null
+++ b/share/man/man8/MAKEDEV.8
@@ -0,0 +1,46 @@
+.\" Copyright (c) 2003, Giorgos Keramidas
+.\" 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$
+.\"
+.Dd March 25, 2003
+.Dt MAKEDEV 8
+.Os
+.Sh NAME
+.Nm MAKEDEV
+.Nd old script for creating device nodes
+.Sh DESCRIPTION
+The
+.Nm
+script was deprecated by
+.Xr devfs 5
+and removed from
+.Fx
+after
+.Xr devfs 5
+became mandatory.
+.Sh SEE ALSO
+.Xr intro 4 ,
+.Xr devfs 5 ,
+.Xr intro 8
diff --git a/share/man/man8/Makefile b/share/man/man8/Makefile
new file mode 100644
index 0000000..2f5d1cf
--- /dev/null
+++ b/share/man/man8/Makefile
@@ -0,0 +1,31 @@
+# @(#)Makefile 8.1 (Berkeley) 6/5/93
+# $FreeBSD$
+
+MAN= adding_user.8 \
+ crash.8 \
+ diskless.8 \
+ intro.8 \
+ MAKEDEV.8 \
+ nanobsd.8 \
+ picobsd.8 \
+ rc.8 \
+ rc.sendmail.8 \
+ rc.subr.8 \
+ rescue.8 \
+ sticky.8 \
+ yp.8
+
+MLINKS= rc.8 rc.atm.8 \
+ rc.8 rc.d.8 \
+ rc.8 rc.early.8 \
+ rc.8 rc.firewall.8 \
+ rc.8 rc.local.8 \
+ rc.8 rc.network.8 \
+ rc.8 rc.pccard.8 \
+ rc.8 rc.serial.8 \
+ rc.8 rc.shutdown.8
+MLINKS+=yp.8 NIS.8 \
+ yp.8 nis.8 \
+ yp.8 YP.8
+
+.include <bsd.prog.mk>
diff --git a/share/man/man8/adding_user.8 b/share/man/man8/adding_user.8
new file mode 100644
index 0000000..2f4dab1
--- /dev/null
+++ b/share/man/man8/adding_user.8
@@ -0,0 +1,117 @@
+.\" Copyright (c) 1980, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)adduser.8 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt ADDING_USER 8
+.Os
+.Sh NAME
+.Nm adding_user
+.Nd procedure for adding new users
+.Sh DESCRIPTION
+A new user must choose a login name, which must not already appear in
+.Pa /etc/passwd
+or
+.Pa /etc/mail/aliases .
+It must also not begin with the hyphen
+.Sq Fl
+character.
+It is strongly recommended that it be all lower-case, and not contain
+the dot
+.Ql .\&
+character, as that tends to confuse mailers.
+An account can be added by editing a line into the passwd file; this
+must be done with the password file locked e.g.\& by using
+.Xr chpass 1
+or
+.Xr vipw 8 .
+.Pp
+A new user is given a group and user id.
+Login and user id's should be unique across the system, and often across
+a group of systems, since they are used to control file access.
+Typically, users working on similar projects will be put in the same groups.
+At the University of California, Berkeley, we have groups for system staff,
+faculty, graduate students, and special groups for large projects.
+.Pp
+A skeletal account for a new user
+.Dq ernie
+might look like:
+.Bd -literal
+ernie::25:30::0:0:Ernie Kovacs,508 Evans Hall,x7925,
+ 642-8202:/a/users/ernie:/bin/csh
+.Ed
+.Pp
+For a description of each of these fields, see
+.Xr passwd 5 .
+.Pp
+It is useful to give new users some help in getting started, supplying
+them with a few skeletal files such as
+.Pa \&.profile
+if they use
+.Pa /bin/sh ,
+or
+.Pa \&.cshrc
+and
+.Pa \&.login
+if they use
+.Pa /bin/csh .
+The directory
+.Pa /usr/share/skel
+contains skeletal definitions of such files.
+New users should be given copies of these files which, for instance,
+use
+.Xr tset 1
+automatically at each login.
+.Sh FILES
+.Bl -tag -width /etc/master.passwdxx -compact
+.It Pa /etc/master.passwd
+user database
+.It Pa /usr/share/skel
+skeletal login directory
+.El
+.Sh SEE ALSO
+.Xr chpass 1 ,
+.Xr finger 1 ,
+.Xr passwd 1 ,
+.Xr aliases 5 ,
+.Xr passwd 5 ,
+.Xr adduser 8 ,
+.Xr pwd_mkdb 8 ,
+.Xr vipw 8
+.Sh HISTORY
+The
+.Nm
+utility appeared in
+.Bx 3.0 .
+.Sh BUGS
+User information should (and eventually will) be stored elsewhere.
diff --git a/share/man/man8/crash.8 b/share/man/man8/crash.8
new file mode 100644
index 0000000..94a0ecc
--- /dev/null
+++ b/share/man/man8/crash.8
@@ -0,0 +1,220 @@
+.\" FreeBSD version Copyright (c) 1996
+.\" Mike Pritchard <mpp@FreeBSD.org>. All rights reserved.
+.\"
+.\" Adapted from share/man/man8/man8.hp300/crash.8
+.\"
+.\" Copyright (c) 1990, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 2, 1996
+.Dt CRASH 8
+.Os
+.Sh NAME
+.Nm crash
+.Nd FreeBSD system failures
+.Sh DESCRIPTION
+This section explains a bit about system crashes
+and (very briefly) how to analyze crash dumps.
+.Pp
+When the system crashes voluntarily it prints a message of the form
+.Bl -diag -offset indent
+.It "panic: why i gave up the ghost"
+.El
+.Pp
+on the console, and if dumps have been enabled (see
+.Xr dumpon 8 ) ,
+takes a dump on a mass storage peripheral,
+and then invokes an automatic reboot procedure as
+described in
+.Xr reboot 8 .
+Unless some unexpected inconsistency is encountered in the state
+of the file systems due to hardware or software failure, the system
+will then resume multi-user operations.
+.Pp
+The system has a large number of internal consistency checks; if one
+of these fails, then it will panic with a very short message indicating
+which one failed.
+In many instances, this will be the name of the routine which detected
+the error, or a two-word description of the inconsistency.
+A full understanding of most panic messages requires perusal of the
+source code for the system.
+.Pp
+The most common cause of system failures is hardware failure, which
+can reflect itself in different ways.
+Here are the messages which
+are most likely, with some hints as to causes.
+Left unstated in all cases is the possibility that hardware or software
+error produced the message in some unexpected way.
+.Pp
+.Bl -diag -compact
+.It "cannot mount root"
+This panic message results from a failure to mount the root file system
+during the bootstrap process.
+Either the root file system has been corrupted,
+or the system is attempting to use the wrong device as root file system.
+Usually, an alternate copy of the system binary or an alternate root
+file system can be used to bring up the system to investigate.
+Most often
+this is done by the use of the boot floppy you used to install the system,
+and then using the
+.Dq fixit
+floppy.
+.Pp
+.It "init: not found"
+This is not a panic message, as reboots are likely to be futile.
+Late in the bootstrap procedure, the system was unable to locate
+and execute the initialization process,
+.Xr init 8 .
+The root file system is incorrect or has been corrupted, or the mode
+or type of
+.Pa /sbin/init
+forbids execution or is totally missing.
+.Pp
+.It "ffs_realloccg: bad optim"
+.It "ffs_valloc: dup alloc"
+.It "ffs_alloccgblk: cyl groups corrupted"
+.It "ffs_alloccg: map corrupted"
+.It "blkfree: freeing free block"
+.It "blkfree: freeing free frag"
+.It "ifree: freeing free inode"
+These panic messages are among those that may be produced
+when file system inconsistencies are detected.
+The problem generally results from a failure to repair damaged file systems
+after a crash, hardware failures, or other condition that should not
+normally occur.
+A file system check will normally correct the problem.
+.Pp
+.It "timeout table full"
+This really should not be a panic, but until the data structure
+involved is made to be extensible, running out of entries causes a crash.
+If this happens, make the timeout table bigger.
+.Pp
+.\" .It "trap type %d, code = %x, v = %x"
+.\" An unexpected trap has occurred within the system; the trap types are:
+.\" .Bl -column xxxx -offset indent
+.\" 0 bus error
+.\" 1 address error
+.\" 2 illegal instruction
+.\" 3 divide by zero
+.\" .No 4\t Em chk No instruction
+.\" .No 5\t Em trapv No instruction
+.\" 6 privileged instruction
+.\" 7 trace trap
+.\" 8 MMU fault
+.\" 9 simulated software interrupt
+.\" 10 format error
+.\" 11 FP coprocessor fault
+.\" 12 coprocessor fault
+.\" 13 simulated AST
+.\" .El
+.\" .Pp
+.\" The favorite trap type in system crashes is trap type 8,
+.\" indicating a wild reference.
+.\" ``code'' (hex) is the concatenation of the
+.\" MMU
+.\" status register
+.\" (see <hp300/cpu.h>)
+.\" in the high 16 bits and the 68020 special status word
+.\" (see the 68020 manual, page 6-17)
+.\" in the low 16.
+.\" ``v'' (hex) is the virtual address which caused the fault.
+.\" Additionally, the kernel will dump about a screenful of semi-useful
+.\" information.
+.\" ``pid'' (decimal) is the process id of the process running at the
+.\" time of the exception.
+.\" Note that if we panic in an interrupt routine,
+.\" this process may not be related to the panic.
+.\" ``ps'' (hex) is the 68020 processor status register ``ps''.
+.\" ``pc'' (hex) is the value of the program counter saved
+.\" on the hardware exception frame.
+.\" It may
+.\" .Em not
+.\" be the PC of the instruction causing the fault.
+.\" ``sfc'' and ``dfc'' (hex) are the 68020 source/destination function codes.
+.\" They should always be one.
+.\" ``p0'' and ``p1'' are the
+.\" VAX-like
+.\" region registers.
+.\" They are of the form:
+.\" .Pp
+.\" .Bd -ragged -offset indent
+.\" <length> '@' <kernel VA>
+.\" .Ed
+.\" .Pp
+.\" where both are in hex.
+.\" Following these values are a dump of the processor registers (hex).
+.\" Finally, is a dump of the stack (user/kernel) at the time of the offense.
+.\" .Pp
+.It "init died (signal #, exit #)"
+The system initialization process has exited with the specified
+signal number and exit code.
+This is bad news, as no new users will then be able to log in.
+Rebooting is the only fix, so the
+system just does it right away.
+.El
+.Pp
+That completes the list of panic types you are likely to see.
+.Pp
+If the system has been configured to take crash dumps (see
+.Xr dumpon 8 ) ,
+then when it crashes it will write (or at least attempt to write)
+an image of memory into the back end of the dump device,
+usually the same as the primary swap
+area.
+After the system is rebooted, the program
+.Xr savecore 8
+runs and preserves a copy of this core image and the current
+system in a specified directory for later perusal.
+See
+.Xr savecore 8
+for details.
+.Pp
+To analyze a dump you should begin by running
+.Xr kgdb 1
+on the system load image and core dump.
+If the core image is the result of a panic,
+the panic message is printed.
+For more details consult the chapter on kernel debugging in
+the
+.%B "FreeBSD Developers' Handbook"
+.Pq Pa http://www.FreeBSD.org/ .
+.Sh SEE ALSO
+.Xr kgdb 1 ,
+.Xr dumpon 8 ,
+.Xr reboot 8 ,
+.Xr savecore 8
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 2.2 .
diff --git a/share/man/man8/diskless.8 b/share/man/man8/diskless.8
new file mode 100644
index 0000000..64e8795
--- /dev/null
+++ b/share/man/man8/diskless.8
@@ -0,0 +1,481 @@
+.\" Copyright (c) 1994 Gordon W. Ross, Theo de Raadt
+.\" Updated by Luigi Rizzo, Robert 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.
+.\" 3. 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$
+.\"
+.Dd December 10, 2005
+.Dt DISKLESS 8
+.Os
+.Sh NAME
+.Nm diskless
+.Nd booting a system over the network
+.Sh DESCRIPTION
+The ability to boot a machine over the network is useful for
+.Em diskless
+or
+.Em dataless
+machines, or as a temporary measure while repairing or
+re-installing file systems on a local disk.
+This file provides a general description of the interactions between
+a client and its server when a client is booting over the network.
+.Sh OPERATION
+When booting a system over the network, there are three
+phases of interaction between client and server:
+.Bl -enum
+.It
+The stage-1 bootstrap, typically PXE built into your Ethernet
+card, loads a second-stage boot program.
+.It
+The second-stage boot program, typically
+.Xr pxeboot 8 ,
+loads modules and
+the kernel, and boots the kernel.
+.It
+The kernel
+.Tn NFS
+mounts the root directory and continues from there.
+.El
+.Pp
+Each of these phases are described in further detail below.
+.Pp
+First, the stage-1 bootstrap loads the stage-2 boot program over
+the network.
+The stage-1 bootstrap typically uses
+.Tn BOOTP
+or
+.Tn DHCP
+to obtain the filename to load, then uses
+.Tn TFTP
+to load the file.
+This file is typically called
+.Pa pxeboot ,
+and should be copied from
+.Pa /boot/pxeboot
+into the
+.Tn TFTP
+directory on the server, which is typically
+.Pa /tftpdir .
+.Pp
+The stage-2 boot program then loads additional modules and the kernel.
+These files may not exist on the
+.Tn DHCP
+or
+.Tn BOOTP
+server.
+You can use the
+.Ic next-server
+option available in
+.Tn DHCP
+configurations to specify the server holding
+the second stage boot files and kernel.
+The stage-2 program uses
+.Tn NFS
+or
+.Tn TFTP
+to obtain these files.
+By default,
+.Tn NFS
+is used.
+If you are using
+.Xr pxeboot 8 ,
+you can install a version that uses
+.Tn TFTP
+by setting
+.Li LOADER_TFTP_SUPPORT=YES
+in your
+.Xr make.conf 5 ,
+then recompiling and reinstalling
+.Xr pxeboot 8
+via the command listed below.
+It is often necessary to use
+.Tn TFTP
+here so you can place a custom kernel
+in
+.Pa /tftpdir/ .
+If you use
+.Tn NFS
+and do not have a custom root file system for the
+.Nm
+client, the stage-2 boot will load your server's kernel as the kernel for
+the
+.Nm
+machine, which may not be what you want to have happen.
+.Bd -literal -offset indent
+cd /usr/src/sys/boot/i386
+make clean; make; make install
+cp /boot/pxeboot /tftpdir/
+.Ed
+.Pp
+In phase 3, the kernel acquires IP networking configuration in one
+of two ways, and then proceeds to mount the root file system and start
+operation.
+If the phase 2 loader supports passing network configuration to the
+kernel using the kernel environment, then the kernel will configure
+the network interface using that information.
+Otherwise, it must use
+.Tn DHCP
+or
+.Tn BOOTP
+to acquire
+configuration information.
+The boot
+scripts recognize a
+.Nm
+startup and perform
+the actions found in
+.Pa /etc/rc.d/resolv ,
+.Pa /etc/rc.d/tmp ,
+.Pa /etc/rc.d/var ,
+and
+.Pa /etc/rc.initdiskless .
+.Sh CONFIGURATION
+In order to run a
+.Nm
+client, you need the following:
+.Bl -bullet
+.It
+An
+.Tn NFS
+server which exports a root and
+.Pa /usr
+partitions with appropriate permissions.
+The
+.Nm
+scripts work with read-only partitions, as long as root is exported with
+.Fl maproot Ns =0
+so that some system files can be accessed.
+As an example,
+.Pa /etc/exports
+can contain the following lines:
+.Bd -literal -offset indent
+<ROOT> -ro -maproot=0 -alldirs <list of diskless clients>
+/usr -ro -alldirs <list of diskless clients>
+.Ed
+.Pp
+where
+.Aq ROOT
+is the mount point on the server of the root partition.
+The script
+.Pa /usr/share/examples/diskless/clone_root
+can be used to create a shared read-only root partition,
+but in many cases you may decide to export
+(again as read-only) the root directory used by
+the server itself.
+.It
+A
+.Tn BOOTP
+or
+.Tn DHCP
+server.
+.Xr bootpd 8
+can be enabled by
+uncommenting the
+.Dq Li bootps
+line in
+.Pa /etc/inetd.conf .
+A sample
+.Pa /etc/bootptab
+can be the following:
+.Bd -literal -offset indent
+ .default:\\
+ hn:ht=1:vm=rfc1048:\\
+ :sm=255.255.255.0:\\
+ :sa=<SERVER>:\\
+ :gw=<GATEWAY>:\\
+ :rp="<SERVER>:<ROOT>":
+
+<CLIENT>:ha=0123456789ab:tc=.default
+.Ed
+.Pp
+where
+.Aq SERVER ,
+.Aq GATEWAY
+and
+.Aq ROOT
+have the obvious meanings.
+.It
+A properly initialized root partition.
+The script
+.Pa /usr/share/examples/diskless/clone_root
+can help in creating it, using the server's root partition
+as a reference.
+If you are just starting out, you should
+simply use the server's own root directory,
+.Pa / ,
+and not try to clone it.
+.Pp
+You often do not want to use the same
+.Pa rc.conf
+or
+.Pa rc.local
+files for the
+.Nm
+boot as you do on the server.
+The
+.Nm
+boot
+scripts provide a mechanism through which you can override various files
+in
+.Pa /etc
+(as well as other subdirectories of root).
+.Pp
+One difference that you should pay particular attention to is
+the value of
+.Va local_startup
+in
+.Pa /etc/defaults/rc.conf .
+A typical value for a
+.Nm
+boot is
+.Va mountcritremote ,
+however your needs may be different.
+.Pp
+The scripts provide four
+overriding directories situated in
+.Pa /conf/base ,
+.Pa /conf/default ,
+.Pa /conf/<broadcast-ip> ,
+and
+.Pa /conf/<machine-ip> .
+You should always create
+.Pa /conf/base/etc ,
+which will entirely replace the server's
+.Pa /etc
+on the
+.Nm
+machine.
+You can clone the server's
+.Pa /etc
+here or you can create a special file which tells the
+.Nm
+boot scripts
+to remount the server's
+.Pa /etc
+onto
+.Pa /conf/base/etc .
+You do this by creating the file
+.Pa /conf/base/etc/diskless_remount
+containing the mount point to use as a basis of the
+.Nm
+machine's
+.Pa /etc .
+For example, the file might contain:
+.Pp
+.Dl 10.0.0.1:/etc
+.Pp
+Alternatively, if the server contains several independent roots, the file
+might contain:
+.Pp
+.Dl 10.0.0.1:/usr/diskless/4.7-RELEASE/etc
+.Pp
+This would work, but if you copied
+.Pa /usr/diskless/4.7-RELEASE
+to
+.Pa /usr/diskless/4.8-RELEASE
+and upgraded the installation, you would need to modify the
+.Pa diskless_remount
+files to reflect that move.
+To avoid that, paths in
+.Pa diskless_remount
+files beginning with
+.Pa /
+have the actual path of the client's root prepended to them so the file
+could instead contain:
+.Pp
+.Dl /etc
+.Pp
+The
+.Nm
+scripts create memory file systems to hold the overridden
+directories.
+Only a 2MB partition is created by default, which may not
+be sufficient for your purposes.
+To override this, you can create the
+file
+.Pa /conf/base/etc/md_size
+containing the size, in 512 byte sectors, of the memory disk to create
+for that directory.
+.Pp
+You then typically provide file-by-file overrides in the
+.Pa /conf/default/etc
+directory.
+At a minimum, you must provide overrides for
+.Pa /etc/fstab , /etc/rc.conf ,
+and
+.Pa /etc/rc.local
+via
+.Pa /conf/default/etc/fstab , /conf/default/etc/rc.conf ,
+and
+.Pa /conf/default/etc/rc.local .
+.Pp
+Overrides are hierarchical.
+You can supply network-specific defaults
+in the
+.Pa /conf/ Ns Ao Ar BROADCASTIP Ac Ns Pa /etc
+directory, where
+.Aq Ar BROADCASTIP
+represents the broadcast IP address of
+the
+.Nm
+system as given to it via
+.Tn BOOTP .
+The
+.Pa diskless_remount
+and
+.Pa md_size
+features work in any of these directories.
+The configuration feature works on directories other then
+.Pa /etc ,
+you simply create the directory you wish to replace or override in
+.Pa /conf/{base,default,<broadcast>,<ip>}/*
+and work it in the same way that you work
+.Pa /etc .
+.Pp
+Since you normally clone the server's
+.Pa /etc
+using the
+.Pa /conf/base/etc/diskless_remount ,
+you might wish to remove unneeded files from the memory file system.
+For example,
+if the server has a firewall but you do not, you might wish
+to remove
+.Pa /etc/ipfw.conf .
+You can do this by creating a
+.Pa /conf/base/ Ns Ao Ar DIRECTORY Ac Ns Pa .remove
+file.
+For example,
+.Pa /conf/base/etc.remove ,
+which contains a list of relative paths that the boot scripts should remove
+from the memory file systems.
+.Pp
+As a minimum, you normally need to have the following in
+.Pa /conf/default/etc/fstab
+.Bd -literal -offset indent
+<SERVER>:<ROOT> / nfs ro 0 0
+<SERVER>:/usr /usr nfs ro 0 0
+proc /proc procfs rw 0 0
+.Ed
+.Pp
+You also need to create a customized version of
+.Pa /conf/default/etc/rc.conf
+which should contain
+the startup options for the
+.Nm
+client, and
+.Pa /conf/default/etc/rc.local
+which could be empty but prevents the server's own
+.Pa /etc/rc.local
+from leaking onto the
+.Nm
+system.
+.Pp
+In
+.Pa rc.conf ,
+most likely
+you will not need to set
+.Va hostname
+and
+.Va ifconfig_*
+because these will be already set by the startup code.
+Finally, it might be convenient to use a
+.Ic case
+statement using
+.Li `hostname`
+as the switch variable to do machine-specific configuration
+in case a number of
+.Nm
+clients share the same configuration
+files.
+.It
+The kernel for the
+.Nm
+clients, which will be loaded using
+.Tn NFS
+or
+.Tn TFTP ,
+must include support for the NFS client:
+.Pp
+.D1 Cd "options NFSCLIENT"
+.D1 Cd "options NFS_ROOT"
+.Pp
+If you are using a boot mechanism that does not pass network configuration
+to the kernel using the kernel environment, you will also need to include
+the following options:
+.Pp
+.D1 Cd "options BOOTP"
+.D1 Cd "options BOOTP_NFSROOT"
+.D1 Cd "options BOOTP_COMPAT"
+.Pp
+.Em Note :
+the PXE environment does not require these options.
+.Pp
+The
+.Nm
+booting environment relies on memory-backed file systems to
+support temporary local storage in the event that the root file system
+is mounted read-only; as such, it is necessary to add the following
+to the device section of the kernel configuration:
+.Pp
+.D1 Cd "device md"
+.Pp
+If you use the firewall, remember to default to
+.Dq open ,
+or your kernel
+will not be able to send/receive the
+.Tn BOOTP
+packets.
+.El
+.Sh SECURITY ISSUES
+Be warned that using unencrypted
+.Tn NFS
+to mount root and user
+partitions may expose information such as
+encryption keys.
+.Sh SEE ALSO
+.Xr ethers 5 ,
+.Xr exports 5 ,
+.Xr make.conf 5 ,
+.Xr bootpd 8 ,
+.Xr mountd 8 ,
+.Xr nfsd 8 ,
+.Xr pxeboot 8 ,
+.Xr reboot 8 ,
+.Xr tftpd 8
+.Pp
+.Pa ports/net/etherboot
+.Sh BUGS
+This manpage is probably incomplete.
+.Pp
+.Fx
+sometimes requires to write onto
+the root partition, so the startup scripts mount MFS
+file systems on some locations (e.g.\&
+.Pa /etc
+and
+.Pa /var ) ,
+while
+trying to preserve the original content.
+The process might not handle all cases.
diff --git a/share/man/man8/intro.8 b/share/man/man8/intro.8
new file mode 100644
index 0000000..9640693
--- /dev/null
+++ b/share/man/man8/intro.8
@@ -0,0 +1,95 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)intro.8 8.2 (Berkeley) 12/11/93
+.\" $FreeBSD$
+.\"
+.Dd October 22, 2006
+.Dt INTRO 8
+.Os
+.Sh NAME
+.Nm intro
+.Nd "introduction to system maintenance procedures and commands"
+.Sh DESCRIPTION
+This section contains information related to system operation
+and maintenance.
+.Pp
+It describes commands used to create new file systems
+.Pq Xr newfs 8 ,
+verify the integrity of the file systems
+.Pq Xr fsck 8 ,
+control disk usage
+.Pq Xr edquota 8 ,
+maintain system backups
+.Pq Xr dump 8 ,
+and recover files when disks die an untimely death
+.Pq Xr restore 8 .
+.\" The
+.\" .Xr format 8
+.\" manual
+.\" for the specific architecture the system is running on should be
+.\" consulted when formatting disks and tapes.
+Network related services like
+.Xr inetd 8
+and
+.Xr ftpd 8
+are also described.
+.Pp
+All commands set an exit status.
+Its value may be tested
+to see if the command completed normally.
+Unless otherwise noted (rare), the value 0 signifies successful
+completion of the command, while a value >0 indicates an error.
+Some commands attempt to describe the nature of the failure by using
+error codes defined in
+.Xr sysexits 3 ,
+or set the status to arbitrary values >0 (typically 1), but many
+such values are not described in the manual.
+.Pp
+A number of pages in this section describe general system
+management topics.
+.Pp
+For example, the
+.Xr boot 8
+manual page describes the system bootstrapping procedures,
+and the
+.Xr diskless 8
+manual page describes how to boot a system over a network.
+The
+.Xr crash 8
+manual page
+should be consulted to understand how to interpret system
+crash dumps.
+.Sh HISTORY
+The
+.Nm
+section manual page appeared in
+.Bx 4.2 .
diff --git a/share/man/man8/nanobsd.8 b/share/man/man8/nanobsd.8
new file mode 100644
index 0000000..6fee39a
--- /dev/null
+++ b/share/man/man8/nanobsd.8
@@ -0,0 +1,328 @@
+.\" Copyright (c) 2006 Daniel Gerzo <danger@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$
+.\"
+.Dd August 28, 2006
+.Dt NANOBSD 8
+.Os
+.Sh NAME
+.Nm nanobsd.sh
+.Nd utility used to create a FreeBSD system image suitable for embedded
+applications
+.Sh SYNOPSIS
+.Nm
+.Op Fl bhkw
+.Op Fl c Ar config-file
+.Sh DESCRIPTION
+The
+.Nm
+utility is a script which produces a minimal implementation of
+.Fx
+(called
+.Nm NanoBSD ) ,
+which typically fits on a small media such as a Compact Flash card,
+or other mass storage medium.
+It can be used to build specialized install images, designed for easy
+installation and maintenance.
+.Pp
+The following options are available:
+.Bl -tag -width ".Fl c Ar config-file" -offset indent
+.It Fl b
+Skip the build stages (both for kernel and world).
+.It Fl c Ar config-file
+Specify the configuration file to use.
+.It Fl h
+Display usage information.
+.It Fl k
+Skip the
+.Cm buildkernel
+stage of the build.
+.It Fl w
+Skip the
+.Cm buildworld
+stage of the build.
+.El
+.Pp
+The features of
+.Nm NanoBSD
+include:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+Ports and packages work as in
+.Fx .
+Every single application can be installed and used in a
+.Nm NanoBSD
+image, the same way as in
+.Fx .
+.It
+No missing functionality.
+If it is possible to do something with
+.Fx ,
+it is possible to do the same thing with
+.Nm NanoBSD ,
+unless the specific feature or features were explicitly removed from the
+.Nm NanoBSD
+image when it was created.
+.It
+Everything is read-only at run-time.
+It is safe to pull the power-plug.
+There is no necessity to run
+.Xr fsck 8
+after a non-graceful shutdown of the system.
+.It
+Easy to build and customize.
+Making use of just one shell script and one configuration file it is
+possible to build reduced and customized images satisfying any arbitrary
+set of requirements.
+.El
+.Ss Nm NanoBSD Ss Media Layout
+The mass storage medium is divided into three parts by default (which
+are normally mounted read-only):
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+Two image partitions:
+.Li code#1
+and
+.Li code#2 .
+.It
+The configuration file partition, which can be mounted under the
+.Pa /cfg
+directory at run time.
+.El
+.Pp
+The
+.Pa /etc
+and
+.Pa /var
+directories are
+.Xr md 4
+(malloc backed) disks.
+.Pp
+The configuration file partition persists under the
+.Pa /cfg
+directory.
+It contains files for
+.Pa /etc
+directory and is briefly mounted read-only right after the system boot,
+therefore it is required to copy modified files from
+.Pa /etc
+back to the
+.Pa /cfg
+directory if changes are expected to persist after the system restarts.
+.Sh BUILDING Nm NanoBSD
+A
+.Nm NanoBSD
+image is built using a simple
+.Nm
+shell script, which can be
+found in the
+.Pa src/tools/tools/nanobsd
+directory.
+This script creates a bootable image, which can be copied on the storage
+medium using the
+.Xr dd 1
+utility.
+.Pp
+The necessary commands to build and install a
+.Nm NanoBSD
+image are:
+.Bd -literal -offset indent
+cd /usr/src/tools/tools/nanobsd
+sh nanobsd.sh
+cd /usr/obj/nanobsd.full
+dd if=_.disk.full of=/dev/da0 bs=64k
+.Ed
+.Sh CUSTOMIZING Nm NanoBSD
+This is probably the most important and most interesting feature of
+.Nm NanoBSD .
+This is also where you will be spending most of the time when developing with
+.Nm NanoBSD .
+.Pp
+Customization is done in two ways:
+.Pp
+.Bl -bullet -offset indent -compact
+.It
+Configuration options.
+.It
+Custom functions.
+.El
+.Pp
+With configuration settings, it is possible to configure options passed
+to both the
+.Cm buildworld
+and
+.Cm installworld
+stages of the
+.Nm NanoBSD
+build process, as well as internal options passed to the main build
+process of
+.Nm NanoBSD .
+Through these options it is possible to cut the system down, so it will
+fit on as little as 64MB.
+You can use the configuration options to trim down the system
+even more, until it will consist of just the kernel and two or three
+files in the userland.
+.Pp
+The configuration file consists of configuration options, which override
+the default values.
+The most important directives are:
+.Bl -tag -width ".Va CONF_INSTALL" -offset indent
+.It Va NANO_NAME
+Build name (used to construct the working directory names).
+.It Va NANO_SRC
+Path to the source tree used to build the image.
+.It Va NANO_KERNEL
+Name of the kernel configuration file used to build the kernel.
+.It Va NANO_BOOT0CFG
+Controls the options passed to
+.Xr boot0cfg 8 ;
+these dictate
+.Nm boot0 Ns 's
+behaviour.
+.It Va NANO_BOOTLOADER
+The
+.Nm boot0
+loader to use relative to the
+.Va NANO_WORLDDIR
+variable.
+This defaults to
+.Pa boot/boot0sio
+and should be overridden to
+.Pa boot/boot0
+to provide a VGA
+console.
+.It Va CONF_BUILD
+Options passed to the
+.Cm buildworld
+stage of the build.
+.It Va CONF_INSTALL
+Options passed to the
+.Cm installworld
+stage of the build.
+.It Va CONF_WORLD
+Options passed to both the
+.Cm buildworld
+and
+.Cm installworld
+stages of the build.
+.It Va FlashDevice
+Defines the type of media to use.
+Check the
+.Pa FlashDevice.sub
+file for more details.
+.El
+.Pp
+For more configuration options, please check the
+.Nm
+script.
+.Pp
+To build
+.Nm NanoBSD
+image using the
+.Pa nanobsd.conf
+configuration file, use the following command:
+.Bd -literal -offset indent
+sh nanobsd.sh -c nanobsd.conf
+.Ed
+.Pp
+It is possible to fine-tune
+.Nm NanoBSD
+using shell functions in the configuration file.
+The following example illustrates the basic model of custom functions:
+.Bd -literal -offset indent
+cust_foo () (
+ echo "bar=topless" > \\
+ ${NANO_WORLDDIR}/etc/foo
+)
+customize_cmd cust_foo
+.Ed
+.Pp
+There are a few pre-defined customization functions ready for use:
+.Bl -tag -width ".Cm cust_allow_ssh_root" -offset indent
+.It Cm cust_comconsole
+Disables
+.Xr getty 8
+on the virtual
+.Xr syscons 4
+terminals
+.Pq Pa /dev/ttyv*
+and enables the use of the first serial port as the system
+console.
+.It Cm cust_allow_ssh_root
+Allow root to log in via
+.Xr sshd 8 .
+.It Cm cust_install_files
+Installs files from the
+.Pa nanobsd/Files
+directory, which contains some useful scripts for system administration.
+.El
+.Sh FILES
+.Bl -tag -width ".Pa src/tools/tools/nanobsd" -compact
+.It Pa src/tools/tools/nanobsd
+Base directory of the
+.Nm NanoBSD
+build script.
+.El
+.Sh EXAMPLES
+Making persistent changes to
+.Pa /etc/resolv.conf :
+.Bd -literal -offset indent
+vi /etc/resolv.conf
+\&...
+mount /cfg
+cp /etc/resolv.conf /cfg
+umount /cfg
+.Ed
+.Pp
+A more useful example of a customization function is the following,
+which changes the default size of the
+.Pa /etc
+directory from 5MB to 30MB:
+.Bd -literal -offset indent
+cust_etc_size () (
+ cd ${NANO_WORLDDIR}/conf
+ echo 30000 > default/etc/md_size
+)
+customize_cmd cust_etc_size
+.Ed
+.Sh SEE ALSO
+.Xr make.conf 5 ,
+.Xr boot 8 ,
+.Xr boot0cfg 8 ,
+.Xr picobsd 8
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+.Nm NanoBSD
+was developed by
+.An Poul-Henning Kamp Aq phk@FreeBSD.org .
+This manual page was written by
+.An Daniel Gerzo Aq danger@FreeBSD.org .
diff --git a/share/man/man8/picobsd.8 b/share/man/man8/picobsd.8
new file mode 100644
index 0000000..9f36eca
--- /dev/null
+++ b/share/man/man8/picobsd.8
@@ -0,0 +1,645 @@
+.\" -*- nroff-fill -*-
+.\" $FreeBSD$
+.Dd January 31, 2006
+.Os
+.Dt PICOBSD 8
+.Sh NAME
+.Nm picobsd
+.Nd building small FreeBSD disk images
+.Sh SYNOPSIS
+.Nm
+.Op Ar options
+.Op Ar config-name Op Ar site-name
+.Sh DESCRIPTION
+The
+.Nm
+utility is a script which produces a minimal implementation of
+.Fx
+(historically called
+.Nm PicoBSD )
+which typically fits on a small media such as a floppy disk,
+or can be downloaded as a
+single image file from some media such as CDROM, flash memory, or through
+.Xr etherboot .
+.Pp
+The
+.Nm
+utility was originally created to build simple standalone systems
+such as firewalls or bridges, but because of the ability to
+cross-build images with different source trees than the one
+in the server, it can be extremely useful to developers to
+test their code without having to reinstall the system.
+.Pp
+The boot media (historically a floppy disk, but also small
+CDROM or USB keys) contains a boot loader and a
+compressed kernel which includes a memory file system.
+Depending on the media, it might also contain a number of
+additional files, which can be updated at run time, and are
+used to override/update those in the memory file system.
+.Pp
+The system loads the kernel in the normal way, uncompresses
+the memory file system and mounts it as root.
+It then updates the memory
+file system with files from the boot media (if present),
+and executes a specialized version of
+.Pa /etc/rc .
+The boot media (floppy, etc.) is
+required for loading only, and typically used read-only.
+After the boot phase, the system runs entirely from RAM.
+.Pp
+The following options are available (but also check the
+.Nm
+script for more details):
+.Pp
+.Bl -tag -width indent
+.It Fl -src Ar SRC_PATH
+Use the source tree at
+.Ar SRC_PATH
+instead the one at
+.Pa /usr/src .
+This can be useful for cross-building
+.Nm
+images.
+When using this option, you must also create and initialize the subtree at
+.Ao Ar SRC_PATH Ac Ns Pa /../usr
+with the correct header files, libraries, and tools (such as the
+.Xr config 8
+program) that are necessary for the cross-build (see the
+.Fl -init
+option below).
+The source files are unmodified by the
+.Nm
+script.
+However the source tree is not completely read-only,
+because
+.Xr config 8
+expects the kernel configuration file to be in one of
+its subdirectories, and also the process of initializing the
+.Pa usr
+subtree touches some parts of the source tree (this is a bug
+in the release build scripts which might go away with time).
+.It Fl -init
+When used together with the
+.Fl -src
+option, this initializes the
+.Ao Ar SRC_PATH Ac Ns Pa /../usr
+subtree as necessary to subsequently build
+.Nm
+images.
+.It Fl -modules
+Also build kernel modules.
+These are not stored on the
+.Nm
+image but are left available in the build directory.
+.It Fl n
+Make the script non-interactive, skipping the initial menu
+and proceeding with the build process without requiring user input.
+.It Fl v
+Make the script verbose, showing
+commands to be executed and waiting for user
+input before executing each of them.
+Useful for debugging.
+.It Fl -all_in_mfs
+Put the entire contents of the file system in the
+memory file system image which is contained in the
+kernel.
+This is the default behaviour, and is
+extremely useful as the kernel itself can be loaded,
+using
+.Xr etherboot
+or
+.Xr pxeboot 8 ,
+as a fully functional system.
+.It Fl -no_all_in_mfs
+Leaves files contained in the
+.Pa floppy.tree
+on the
+.Nm
+image, so they can be loaded separately
+from the kernel (and updated individually to
+customize the image).
+.It Fl -floppy_size Ar size
+Set the size of the disk image.
+Typical values for a floppy disk are 1440 or 2880,
+but other values can be used for other media (flash memories,
+CDROM, network booted kernels).
+.It Fl c , clean
+Clean the product of previous builds.
+.El
+.Sh ENVIRONMENT
+As a result of extreme size limitations, the
+.Nm
+environment differs from the normal
+.Fx
+in a number of ways:
+.Bl -bullet
+.It
+There are no dynamic libraries, and there is no directory
+.Pa /usr/lib .
+As a result, only static executables may be executed.
+.It
+In order to reduce the size of the executables, all executables on a specific
+floppy are joined together as a single executable built with
+.Xr crunchgen 1 .
+.It
+Some programs are supplied in minimalistic versions, specifically
+.Nm ns ,
+a cut-down version of
+.Xr netstat 1 ,
+and
+.Nm vm ,
+a cut-down version of
+.Xr vmstat 8 .
+.El
+.Sh BUILDING PicoBSD
+The
+.Nm
+sources reside in the hierarchy
+.Pa /usr/src/release/picobsd .
+In the following discussion, all relative path names are relative to this
+directory.
+.Pp
+The supported build script is
+.Pa /usr/src/release/picobsd/build/picobsd
+which can be run from anywhere, and relies on the
+.Xr sysutils/makefs
+port to build a filesystem without requiring
+.Xr mdconfig
+or root privileges to mount a filesystem.
+When run in interactive mode (the default without the
+.Fl n
+option), the script will let you configure the various parameters
+used to build the PicoBSD image.
+An image is configured
+using the files and directories described below.
+The base system contains a template, called
+.Pa bridge
+for historical reasons,
+that can be used as a base for building various kinds
+of network appliances.
+.Pp
+You can define your own PicoBSD configuration, by creating a directory
+with a name of your choice (e.g.\&
+.Pa FOO )
+which contains
+some of the following files and directories.
+For more
+information on how to construct these files, look at one
+of the standard
+.Nm
+configurations as a reference.
+.Bl -tag -width indent
+.It Pa PICOBSD
+The kernel configuration file (required).
+This is a mostly standard
+kernel configuration file, possibly stripped down by removing
+unnecessary drivers and options to reduce the kernel's size.
+.Pp
+To be recognised as a
+.Nm
+kernel config file, the file must also contain the line
+beginning with
+.Dq Li #PicoBSD
+below, and a matching
+.Dv MD_ROOT_SIZE
+option:
+.Bd -literal -offset indent
+#marker def_sz init MFS_inodes floppy_inodes
+#PicoBSD 4200 init 8192 32768
+options MD_ROOT_SIZE=4200 # same as def_sz
+.Ed
+.Pp
+This informs the script of the size of the memory file system and
+provides a few other details on how to build the image.
+.It Pa crunch.conf
+.Xr crunchgen 1
+configuration (required).
+It contains the list of directories containing program sources,
+the list of binaries to be built, and the list of libraries that
+these programs use.
+See the
+.Xr crunchgen 1
+manpage for the exact details on the syntax of this file.
+.Pp
+The following issues are particularly important when dealing
+with
+.Nm
+configurations:
+.Bl -bullet
+.It
+We can pass build options to those makefiles which understand
+that, in order to reduce the size of the programs.
+This is achieved with a line of the form
+.Pp
+.Dl "buildopts -DNO_PAM -DRELEASE_CRUNCH ..."
+.It
+When providing the list of directories where source files are, it
+is convenient to list the following entry first:
+.Pp
+.Dl "srcdirs /usr/src/release/picobsd/tinyware"
+.Pp
+so that
+.Nm Ns -specific
+versions of the programs will be found there.
+.It
+The string
+.Dq Li @__CWD__@
+is replaced with the full pathname of the directory where the
+.Nm
+configuration resides (i.e., the one where we find
+.Pa PICOBSD , crunch.conf ,
+and so on).
+This can be useful to refer source code that resides within a
+configuration, e.g.\&
+.Pp
+.Dl "srcdirs @__CWD__@/src"
+.El
+.It Pa config
+Shell variables, sourced by the
+.Nm
+script (optional).
+The most important variables here are:
+.Bl -tag -width ".Va MY_DEVS"
+.It Va MY_DEVS
+(Not used in
+.Fx 5.0
+where we have
+.Xr devfs 5 ) .
+Should be set to the list of devices to be created in the
+.Pa /dev
+directory of the image (it is really the argument passed to
+.Xr MAKEDEV 8 ,
+so refer to that manpage for the names).
+.It Va fd_size
+Size (in kilobytes) of the
+.Nm
+image.
+By default,
+.Va fd_size
+is set to 1440
+which produces an image suitable for a standard floppy.
+.Pp
+If you plan to store the image on a CDROM (e.g.\& using
+the
+.Dq "El Torito"
+floppy emulation), you can set
+.Va fd_size
+equal to 2880.
+If you are planning to dump the image onto a hard disk
+(either in a partition or on the whole disk), you
+are not restricted to one of the standard floppy sizes.
+Using a large image size per se does not waste RAM at runtime,
+because only the files that are actually loaded from the image
+contribute to the memory usage.
+.It Va import_files
+Contains a list of files to be imported in the floppy tree.
+Absolute names refer to the standard file system, relative
+names refer to the root of the source tree being used
+(i.e.\&
+.Va SRC_PATH/.. ) .
+You can normally use this option if you want to import
+files such as shared libraries, or databases, without
+having to replicate them first in your configuration
+under the
+.Pa floppy.tree/
+directory.
+.El
+.It Pa floppy.tree.exclude
+List of files from the standard floppy tree which
+we do not want to be copied (optional).
+.It Pa floppy.tree/
+Local additions to the standard floppy tree (optional).
+The content of this subtree will be copied as-is into the
+floppy image.
+.It Pa floppy.tree. Ns Aq Ar site-name
+Same as above, but site-specific (optional).
+.El
+.Pp
+More information on the build process can be found in the
+comments in the
+.Nm
+script.
+.Sh USING ALTERNATE SOURCE TREES
+The build script can be instructed to use an alternate source tree
+using the
+.Fl -src Ar SRC_PATH
+option.
+The tree that you specify must contain full sources for the kernel
+and for all programs that you want to include in your image.
+As an example, to cross-build the
+.Pa bridge
+floppy
+using RELENG_4 sources, you can do the following:
+.Bd -literal -offset indent
+cd <some_empty_directory>
+mkdir FOO
+(cd FOO; cvs -d<my_repository> co -rRELENG_4 src)
+picobsd --src FOO/src --init # this is needed only once
+picobsd --src FOO/src -n -v bridge
+.Ed
+.Pp
+If the build is successful, the directory
+.Pa build_dir-bridge/
+will contain a
+.Pa kernel
+that can be downloaded with
+.Xr etherboot ,
+a floppy image called
+.Pa picobsd.bin ,
+plus the products of the compilation in other directories.
+If you want to modify the source tree in
+.Pa FOO/src ,
+a new image can be produced by simply running
+.Pp
+.Dl "picobsd --src FOO/src -n -v bridge"
+.Pp
+whereas if the change affects include files or libraries
+you first need to update them, e.g.\& by re-running
+.Pp
+.Dl "picobsd --src FOO/src --init # this is needed only once"
+.Pp
+as you would normally do for any change of this kind.
+.Sh INSTALLING PicoBSD
+.Ss Floppy Install
+Historically,
+.Nm
+is run from a floppy disk, where it can be installed with a simple
+.Pp
+.Dl "dd if=picobsd.bin of=/dev/rfd0"
+.Pp
+and the floppy is ready to boot.
+.Ss Hard Disk Install
+The same process can be used to store the image on a hard disk
+(entire volume or one of the slices):
+.Bd -literal -offset indent
+dd if=picobsd.bin of=/dev/ad2
+dd if=picobsd.bin of=/dev/ad2s3
+dd if=picobsd.bin of=/dev/ad2 oseek=NN
+.Ed
+.Pp
+The first form will install the image on the entire disk, and it
+should work in the same way as for a floppy.
+.Pp
+The second form will install the image
+on slice number 3 (which should be large enough to store the
+contents of the image).
+However, the process will only have success if the
+partition does not contain a valid disklabel, otherwise the kernel will
+likely prevent overwriting the label.
+In this case you can use the
+third form, replacing
+.Ar NN
+with the actual start of the partition
+(which you can determine using
+.Xr fdisk 8 ) .
+Note that after saving the image to the slice, it will not yet be
+recognised.
+You have to use the
+.Xr disklabel 8
+command to properly initialize the label (do not ask why!).
+One way to do this is
+.Bd -literal -offset indent
+disklabel -w ad0s2 auto
+disklabel -e ad0s2
+.Ed
+.Pp
+and from the editor enter a line corresponding to the actual partition, e.g.\&
+if the image has 2.88MB (5760 sectors) you need to enter the following
+line for the partition:
+.Pp
+.Dl "a: 5760 0 4.2BSD 512 4096"
+.Pp
+At this point the partition is bootable.
+Note that the image size can be smaller than the slice size
+(indicated as partition
+.Dq Li c: ) .
+.Ss CDROM Install
+Another option is to put the image on a CDROM.
+Assuming your image
+for disk type
+.Pa foo
+is in the directory
+.Pa build_dir-foo
+then you can produce a bootable
+.Dq "El Torito"
+image (and burn it) with the
+following command:
+.Bd -literal -offset indent
+mkisofs -b picobsd.bin -c boot.catalog -d -N -D -R -T \\
+ -o cd.img build_dir-foo
+burncd -f /dev/acd0c -s 4 data cd.img fixate
+.Ed
+.Pp
+Note that the image size is restricted to 1.44MB or 2.88MB, other sizes
+most likely will not work.
+.Ss Booting From The Network
+Yet another way to use
+.Nm
+is to boot the image off the network.
+For this purpose you should use the uncompressed kernel which is
+available as a byproduct of the compilation.
+Refer to the documentation
+for network booting for more details, the
+.Nm
+kernel is bootable as a standard
+.Fx
+kernel.
+.Sh BOOTING PicoBSD
+To boot
+.Nm ,
+insert the floppy and reset the machine.
+The boot procedure is similar to the
+standard
+.Fx
+boot.
+Booting from a floppy is normally rather slow (in the order of 1-2
+minutes), things are much faster if you store your image on
+a hard disk, Compact Flash, or CDROM.
+.Pp
+You can also use
+.Xr etherboot
+to load the preloaded, uncompressed kernel image
+which is a byproduct of the
+.Nm
+build.
+In this case
+the load time is a matter of a few seconds, even on a 10Mbit/s
+ethernet.
+.Pp
+After booting,
+.Nm
+loads the root file system from the memory file system, starts
+.Pa /sbin/init ,
+and passes control to a first startup script,
+.Pa /etc/rc .
+The latter populates the
+.Pa /etc
+and
+.Pa /root
+directories with the default files, then tries to identify the boot
+device (floppy, hard disk partition) and possibly override the contents
+of the root file system with files read from the boot device.
+This allows you to store local configuration on the same media.
+After this phase the boot device is no longer used, unless the
+user specifically does it.
+.Pp
+After this, control is transferred to a second script,
+.Pa /etc/rc1
+(which can be overridden from the boot device).
+This script tries to associate a hostname to the system by using
+the MAC address of the first ethernet interface as a key, and
+.Pa /etc/hosts
+as a lookup table.
+Then control is passed to the main user configuration script,
+.Pa /etc/rc.conf ,
+which is supposed to override the value of a number of configuration
+variables which have been pre-set in
+.Pa /etc/rc.conf.defaults .
+You can use the
+.Va hostname
+variable to create different configurations from the same file.
+After taking control back,
+.Pa /etc/rc1
+completes the initializations, and as part of this
+it configures network interfaces and optionally calls the
+firewall configuration script,
+.Pa /etc/rc.firewall ,
+where the user can store his own firewall configuration.
+.Pp
+Note that by default
+.Nm
+runs entirely from main memory, and has no swap space, unless you
+explicitly request it.
+The boot device is also not used anymore after
+.Pa /etc/rc1
+takes control, again, unless you explicitly request it.
+.Sh CONFIGURING a PicoBSD system
+The operation of a
+.Nm
+system can be configured through a few files which are read at boot
+time, very much like a standard
+.Fx
+system.
+There are, however, some minor differences to reduce the
+number of files to store and/or customize, thus saving space.
+Among the files to configure we have the following:
+.Bl -tag -width indent
+.It Pa /etc/hosts
+Traditionally, this file contains the IP-to-hostname mappings.
+In addition to this, the
+.Nm
+version of this file also contains
+a mapping between Ethernet (MAC) addresses and hostnames, as follows:
+.Bd -literal -offset indent
+#ethertable start of the ethernet->hostname mapping
+# mac_address hostname
+# 00:12:34:56:78:9a pinco
+# 12:34:56:* pallino
+# * this-matches-all
+.Ed
+.Pp
+where the line containing
+.Dq Li #ethertable
+marks the start of the table.
+.Pp
+If the MAC address is not found, the script will prompt you to
+enter a hostname and IP address for the system, and this
+information will be stored in the
+.Pa /etc/hosts
+file (in memory) so you can simply store them on disk later.
+.Pp
+Note that you can use wildcards in the address part, so a line
+like the last one in the example will match any MAC address and
+avoid the request.
+.It Pa /etc/rc.conf
+This file contains a number of variables which control the
+operation of the system, such as interface configuration,
+router setup, network service startup, etc.
+For the exact list and meaning of these variables see
+.Pa /etc/rc.conf.defaults .
+.Pp
+It is worth mentioning that some of the variables let you
+overwrite the contents of some files in
+.Pa /etc .
+This option is available at the moment for
+.Pa /etc/host.conf
+and
+.Pa /etc/resolv.conf ,
+whose contents are generally very short and suitable for this
+type of updating.
+In case you use these variables, remember to use newlines
+as appropriate, e.g.\&
+.Bd -literal -offset indent
+host_conf="# this goes into /etc/host.conf
+hosts
+bind"
+.Ed
+.Pp
+Although not mandatory, in this file you should only set the
+variables indicated in
+.Pa /etc/rc.conf.defaults ,
+and avoid starting services which depend on having the network running.
+This can be done at a later time: if you set
+.Va firewall_enable Ns = Ns Qq Li YES ,
+the
+.Pa /etc/rc.firewall
+script will be run after configuring the network interfaces,
+so you can set up your firewall and safely start network services or enable
+things such as routing and bridging.
+.It Pa /etc/rc.firewall
+This script can be used to configure the
+.Xr ipfw 4
+firewall.
+On entry, the
+.Va fwcmd
+variable is set to the pathname of the firewall command,
+.Va firewall_type
+contains the value set in
+.Pa /etc/rc.conf ,
+and
+.Va hostname
+contains the name assigned to the host.
+.El
+.Pp
+There is a small script called
+.Nm update
+which can be used to edit and/or save to disk a copy of the files
+you have modified after booting.
+The script takes one or more absolute pathnames, runs the
+editor on the files passed as arguments, and then saves a
+compressed copy of the files on the disk (mounting and
+unmounting the latter around the operation).
+.Pp
+If invoked without arguments,
+.Nm update
+edits and saves
+.Pa rc.conf , rc.firewall ,
+and
+.Pa master.passwd .
+.Pp
+If one of the arguments is
+.Pa /etc
+(the directory name alone),
+then the command saves to disk (without editing)
+all the files in the directory for which a copy
+already exists on disk (e.g.\& as a result of a previous update).
+.Sh SEE ALSO
+.Xr crunchgen 1 ,
+.Xr mdconfig 8 ,
+.Xr swapon 8
+.Sh AUTHORS
+.An -nosplit
+.An Andrzej Bialecki Aq abial@FreeBSD.org ,
+with subsequent work on the scripts by
+.An Luigi Rizzo Aq luigi@iet.unipi.it
+and others.
+Man page and
+.Pa Makefiles
+created by
+.An Greg Lehey Aq grog@lemis.com .
+.Sh BUGS
+Building
+.Nm
+is still a black art.
+The biggest problem is determining what will fit on the
+floppies, and the only practical method is trial and error.
diff --git a/share/man/man8/rc.8 b/share/man/man8/rc.8
new file mode 100644
index 0000000..aa607be
--- /dev/null
+++ b/share/man/man8/rc.8
@@ -0,0 +1,556 @@
+.\" Copyright (c) 1980, 1991, 1993
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" Portions of this manual page are Copyrighted by
+.\" The NetBSD Foundation.
+.\"
+.\" 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 University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)rc.8 8.2 (Berkeley) 12/11/93
+.\" $FreeBSD$
+.\"
+.Dd May 18, 2007
+.Dt RC 8
+.Os
+.Sh NAME
+.Nm rc
+.Nd command scripts for auto-reboot and daemon startup
+.Sh SYNOPSIS
+.Nm
+.Nm rc.conf
+.Nm rc.conf.local
+.Nm rc.d/
+.Nm rc.firewall
+.Nm rc.local
+.Nm rc.shutdown
+.Nm rc.subr
+.Sh DESCRIPTION
+The
+.Nm
+utility is the command script which controls the automatic boot process
+after being called by
+.Xr init 8 .
+The
+.Nm rc.local
+script contains commands which are pertinent only
+to a specific site.
+Typically, the
+.Pa /usr/local/etc/rc.d/
+mechanism is used instead of
+.Nm rc.local
+these days but if
+you want to use
+.Nm rc.local ,
+it is still supported.
+In this case, it should source
+.Pa /etc/rc.conf
+and contain additional custom startup code for your system.
+The best way to handle
+.Nm rc.local ,
+however, is to separate it out into
+.Nm rc.d/
+style scripts and place them under
+.Pa /usr/local/etc/rc.d/ .
+The
+.Nm rc.conf
+file contains the global system configuration information referenced
+by the startup scripts, while
+.Nm rc.conf.local
+contains the local system configuration.
+See
+.Xr rc.conf 5
+for more information.
+.Pp
+The
+.Nm rc.d/
+directories contain scripts which will be automatically
+executed at boot time and shutdown time.
+.Ss Operation of Nm
+.Bl -enum
+.It
+If autobooting, set
+.Va autoboot Ns = Ns Li yes
+and enable a flag
+.Pq Va rc_fast Ns = Ns Li yes ,
+which prevents the
+.Nm rc.d/
+scripts from performing the check for already running processes
+(thus speeding up the boot process).
+This
+.Va rc_fast Ns = Ns Li yes
+speedup will not occur when
+.Nm
+is started up after exiting the single-user shell.
+.It
+Determine whether the system is booting diskless,
+and if so run the
+.Pa /etc/rc.initdiskless
+script.
+.It
+Source
+.Pa /etc/rc.subr
+to load various
+.Xr rc.subr 8
+shell functions to use.
+.It
+Load the configuration files.
+.It
+Determine if booting in a jail,
+and add
+.Dq Li nojail
+to the list of KEYWORDS to skip in
+.Xr rcorder 8 .
+.It
+Invoke
+.Xr rcorder 8
+to order the files in
+.Pa /etc/rc.d/
+that do not have a
+.Dq Li nostart
+KEYWORD (refer to
+.Xr rcorder 8 Ns 's
+.Fl s
+flag).
+.It
+Call each script in turn using
+.Fn run_rc_script
+(from
+.Xr rc.subr 8 ) ,
+which sets
+.Va $1
+to
+.Dq Li start ,
+and sources the script in a subshell.
+If the script has a
+.Pa .sh
+suffix then it is sourced directly into the current shell.
+Stop processing when the script that is the value of the
+.Va $early_late_divider
+has been run.
+.It
+Re-run
+.Xr rcorder 8 ,
+this time including the scripts in the
+.Va $local_startup
+directories.
+Ignore everything up to the
+.Va $early_late_divider ,
+then start executing the scripts as described above.
+.El
+.Ss Operation of Nm rc.shutdown
+.Bl -enum
+.It
+Source
+.Pa /etc/rc.subr
+to load various
+.Xr rc.subr 8
+shell functions to use.
+.It
+Load the configuration files.
+.It
+Invoke
+.Xr rcorder 8
+to order the files in
+.Pa /etc/rc.d/
+and the
+.Va $local_startup
+directories
+that have a
+.Dq Li shutdown
+KEYWORD (refer to
+.Xr rcorder 8 Ns 's
+.Fl k
+flag),
+reverse that order, and assign the result to a variable.
+.It
+Call each script in turn using
+.Fn run_rc_script
+(from
+.Xr rc.subr 8 ) ,
+which sets
+.Va $1
+to
+.Dq Li stop ,
+and sources the script in a subshell.
+If the script has a
+.Pa .sh
+suffix then it is sourced directly into the current shell.
+.El
+.Ss Contents of Nm rc.d/
+.Nm rc.d/
+is located in
+.Pa /etc/rc.d/ .
+The following file naming conventions are currently used in
+.Nm rc.d/ :
+.Bl -tag -width ".Pa ALLUPPERCASE" -offset indent
+.It Pa ALLUPPERCASE
+Scripts that are
+.Dq placeholders
+to ensure that certain operations are performed before others.
+In order of startup, these are:
+.Bl -tag -width ".Pa NETWORKING"
+.It Pa NETWORKING
+Ensure basic network services are running, including general
+network configuration.
+.It Pa SERVERS
+Ensure basic services
+exist for services that start early (such as
+.Pa named ) ,
+because they are required by
+.Pa DAEMON
+below.
+.It Pa DAEMON
+Check-point before all general purpose daemons such as
+.Pa lpd
+and
+.Pa ntpd .
+.It Pa LOGIN
+Check-point before user login services
+.Pa ( inetd
+and
+.Pa sshd ) ,
+as well as services which might run commands as users
+.Pa ( cron
+and
+.Pa sendmail ) .
+.El
+.It Pa foo.sh
+Scripts that are to be sourced into the current shell rather than a subshell
+have a
+.Pa .sh
+suffix.
+Extreme care must be taken in using this, as the startup sequence will
+terminate if the script does.
+.It Pa bar
+Scripts that are sourced in a subshell.
+The boot does not stop if such a script terminates with a non-zero status,
+but a script can stop the boot if necessary by invoking the
+.Fn stop_boot
+function (from
+.Xr rc.subr 8 ).
+.El
+.Pp
+Each script should contain
+.Xr rcorder 8
+keywords, especially an appropriate
+.Dq Li PROVIDE
+entry, and if necessary
+.Dq Li REQUIRE
+and
+.Dq Li BEFORE
+keywords.
+.Pp
+Each script is expected to support at least the following arguments, which
+are automatically supported if it uses the
+.Fn run_rc_command
+function:
+.Bl -tag -width ".Cm restart" -offset indent
+.It Cm start
+Start the service.
+This should check that the service is to be started as specified by
+.Xr rc.conf 5 .
+Also checks if the service is already running and refuses to start if
+it is.
+This latter check is not performed by standard
+.Fx
+scripts if the system is starting directly to multi-user mode, to
+speed up the boot process.
+If
+.Cm forcestart
+is given, ignore the
+.Xr rc.conf 5
+check and start anyway.
+.It Cm stop
+If the service is to be started as specified by
+.Xr rc.conf 5 ,
+stop the service.
+This should check that the service is running and complain if it is not.
+If
+.Cm forcestop
+is given, ignore the
+.Xr rc.conf 5
+check and attempt to stop.
+.It Cm restart
+Perform a
+.Cm stop
+then a
+.Cm start .
+.It Cm status
+If the script starts a process (rather than performing a one-off
+operation), show the status of the process.
+Otherwise it is not necessary to support this argument.
+Defaults to displaying the process ID of the program (if running).
+.It Cm poll
+If the script starts a process (rather than performing a one-off
+operation), wait for the command to exit.
+Otherwise it is not necessary to support this argument.
+.It Cm rcvar
+Display which
+.Xr rc.conf 5
+variables are used to control the startup of the service (if any).
+.El
+.Pp
+If a script must implement additional commands it can list them in
+the
+.Va extra_commands
+variable, and define their actions in a variable constructed from
+the command name (see the
+.Sx EXAMPLES
+section).
+.Pp
+The following key points apply to old-style scripts in
+.Pa /usr/local/etc/rc.d/ :
+.Pp
+.Bl -bullet
+.It
+Scripts are only executed if their
+.Xr basename 1
+matches the shell globbing pattern
+.Pa *.sh ,
+and they are executable.
+Any other files or directories present within the directory are silently
+ignored.
+.It
+When a script is executed at boot time, it is passed the string
+.Dq Li start
+as its first and only argument.
+At shutdown time, it is passed the string
+.Dq Li stop
+as its first and only argument.
+All
+.Nm rc.d/
+scripts are expected to handle these arguments appropriately.
+If no action needs to be taken at a given time
+(either boot time or shutdown time),
+the script should exit successfully and without producing an error message.
+.It
+The scripts within each directory are executed in lexicographical order.
+If a specific order is required,
+numbers may be used as a prefix to the existing filenames,
+so for example
+.Pa 100.foo
+would be executed before
+.Pa 200.bar ;
+without the numeric prefixes the opposite would be true.
+.It
+The output from each script is traditionally a space character,
+followed by the name of the software package being started or shut down,
+.Em without
+a trailing newline character (see the
+.Sx EXAMPLES
+section).
+.El
+.Sh SCRIPTS OF INTEREST
+When an automatic reboot is in progress,
+.Nm
+is invoked with the argument
+.Cm autoboot .
+One of the scripts run from
+.Pa /etc/rc.d/
+is
+.Pa /etc/rc.d/fsck .
+This script runs
+.Xr fsck 8
+with option
+.Fl p
+and
+.Fl F
+to
+.Dq preen
+all the disks of minor inconsistencies resulting
+from the last system shutdown.
+If this fails, then checks/repairs of serious inconsistencies
+caused by hardware or software failure will be performed
+in the background at the end of the booting process.
+If
+.Cm autoboot
+is not set, when going from single-user to multi-user mode for example,
+the script does not do anything.
+.Pp
+The
+.Nm rc.early
+script is run very early in the startup process, immediately before the
+file system check.
+The
+.Nm rc.early
+script is deprecated.
+Any commands in this
+file should be separated out into
+.Nm rc.d/
+style scripts and integrated into the
+.Nm
+system.
+.Pp
+The
+.Pa /etc/rc.d/local
+script can execute scripts from multiple
+.Nm rc.d/
+directories.
+The default location includes
+.Pa /usr/local/etc/rc.d/ ,
+but these may be overridden with the
+.Va local_startup
+.Xr rc.conf 5
+variable.
+.Pp
+The
+.Pa /etc/rc.d/serial
+script is used to set any special configurations for serial devices.
+.Pp
+The
+.Nm rc.firewall
+script is used to configure rules for the kernel based firewall
+service.
+It has several possible options:
+.Pp
+.Bl -tag -width ".Ar filename" -compact -offset indent
+.It Cm open
+will allow anyone in
+.It Cm client
+will try to protect just this machine
+.It Cm simple
+will try to protect a whole network
+.It Cm closed
+totally disables IP services except via
+.Pa lo0
+interface
+.It Cm UNKNOWN
+disables the loading of firewall rules
+.It Ar filename
+will load the rules in the given filename (full path required).
+.El
+.Pp
+The
+.Pa /etc/rc.d/atm*
+scripts are used to configure ATM network interfaces.
+The interfaces are configured in three passes.
+The first pass performs the initial interface configuration.
+The second pass completes the interface configuration and defines PVCs and
+permanent ATMARP entries.
+The third pass starts any ATM daemons.
+.Pp
+Most daemons, including network related daemons, have their own script in
+.Pa /etc/rc.d/ ,
+which can be used to start, stop, and check the status of the service.
+.Pp
+Any architecture specific scripts, such as
+.Pa /etc/rc.d/apm
+for example, specifically check that they are on that architecture
+before starting the daemon.
+.Pp
+Following tradition, all startup files reside in
+.Pa /etc .
+.Sh FILES
+.Bl -tag -compact
+.It Pa /etc/rc
+.It Pa /etc/rc.conf
+.It Pa /etc/rc.conf.local
+.It Pa /etc/rc.d/
+.It Pa /etc/rc.firewall
+.It Pa /etc/rc.local
+.It Pa /etc/rc.shutdown
+.It Pa /etc/rc.subr
+.It Pa /var/run/dmesg.boot
+.Xr dmesg 8
+results soon after the
+.Nm
+process begins.
+Useful when
+.Xr dmesg 8
+buffer in the kernel no longer has this information.
+.El
+.Sh EXAMPLES
+The following is a minimal
+.Nm rc.d/
+style script.
+Most scripts require little more than the following.
+.Bd -literal -offset indent
+#!/bin/sh
+#
+
+# PROVIDE: foo
+# REQUIRE: bar_service_required_to_precede_foo
+
+\&. /etc/rc.subr
+
+name="foo"
+rcvar=`set_rcvar`
+command="/usr/local/bin/foo"
+
+load_rc_config $name
+run_rc_command "$1"
+.Ed
+.Pp
+Certain scripts may want to provide enhanced functionality.
+The user may access this functionality through additional commands.
+The script may list and define as many commands at it needs.
+.Bd -literal -offset indent
+#!/bin/sh
+#
+
+# PROVIDE: foo
+# REQUIRE: bar_service_required_to_precede_foo
+# BEFORE: baz_service_requiring_foo_to_precede_it
+
+\&. /etc/rc.subr
+
+name="foo"
+rcvar=`set_rcvar`
+command="/usr/local/bin/foo"
+extra_commands="nop hello"
+hello_cmd="echo Hello World."
+nop_cmd="do_nop"
+
+do_nop()
+{
+ echo "I do nothing."
+}
+
+load_rc_config $name
+run_rc_command "$1"
+.Ed
+.Pp
+As all processes are killed by
+.Xr init 8
+at shutdown, the explicit
+.Xr kill 1
+is unnecessary, but is often included.
+.Sh SEE ALSO
+.Xr kill 1 ,
+.Xr rc.conf 5 ,
+.Xr init 8 ,
+.Xr rcorder 8 ,
+.Xr rc.subr 8 ,
+.Xr reboot 8 ,
+.Xr savecore 8
+.Sh HISTORY
+The
+.Nm
+utility appeared in
+.Bx 4.0 .
diff --git a/share/man/man8/rc.sendmail.8 b/share/man/man8/rc.sendmail.8
new file mode 100644
index 0000000..7b05ced
--- /dev/null
+++ b/share/man/man8/rc.sendmail.8
@@ -0,0 +1,263 @@
+.\" Copyright (c) 1995
+.\" Jordan K. Hubbard
+.\" Copyright (c) 2002 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$
+.\"
+.Dd March 30, 2002
+.Dt RC.SENDMAIL 8
+.Os
+.Sh NAME
+.Nm rc.sendmail
+.Nd
+.Xr sendmail 8
+startup script
+.Sh DESCRIPTION
+The
+.Nm
+script is used by
+.Pa /etc/rc
+at boot time to start
+.Xr sendmail 8 .
+It is meant to be
+.Xr sendmail 8
+specific and not a generic script for all MTAs.
+It is only called by
+.Pa /etc/rc
+if the
+.Xr rc.conf 5
+.Va mta_start_script
+variable is set to
+.Pa /etc/rc.sendmail .
+.Pp
+The
+.Nm
+script can take an optional argument specifying the action to
+perform.
+The available actions are:
+.Bl -tag -width ".Cm restart-mspq"
+.It Cm start
+Starts both the MTA and the MSP queue runner.
+.It Cm stop
+Stops both the MTA and the MSP queue runner.
+.It Cm restart
+Restarts both the MTA and the MSP queue runner.
+.It Cm start-mta
+Starts just the MTA.
+.It Cm stop-mta
+Stops just the MTA.
+.It Cm restart-mta
+Restarts just the MTA.
+.It Cm start-mspq
+Starts just the MSP queue runner.
+.It Cm stop-mspq
+Stops just the MSP queue runner.
+.It Cm restart-mspq
+Restarts just the MSP queue runner.
+.El
+.Pp
+If no action is specified,
+.Cm start
+is assumed.
+.Pp
+The
+.Nm
+script is also used by
+.Pa /etc/mail/Makefile
+to enable the
+.Pa Makefile Ns 's
+.Cm start , stop ,
+and
+.Cm restart
+targets.
+.Sh RC.CONF VARIABLES
+The following variables affect the behavior of
+.Nm .
+They are defined in
+.Pa /etc/defaults/rc.conf
+and can be changed in
+.Pa /etc/rc.conf .
+.Bl -tag -width indent
+.It Va sendmail_enable
+.Pq Vt str
+If set to
+.Dq Li YES ,
+run the
+.Xr sendmail 8
+daemon at system boot time.
+If set to
+.Dq Li NO ,
+do not run a
+.Xr sendmail 8
+daemon to listen for incoming network mail.
+This does not preclude a
+.Xr sendmail 8
+daemon listening on the SMTP port of the loopback interface.
+The
+.Dq Li NONE
+option is deprecated and should not be used.
+It will be removed in a future release.
+.It Va sendmail_flags
+.Pq Vt str
+If
+.Va sendmail_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr sendmail 8
+daemon.
+.It Va sendmail_submit_enable
+.Pq Vt bool
+If set to
+.Dq Li YES
+and
+.Va sendmail_enable
+is set to
+.Dq Li NO ,
+run
+.Xr sendmail 8
+using
+.Va sendmail_submit_flags
+instead of
+.Va sendmail_flags .
+This is intended to allow local mail submission via
+a localhost-only listening SMTP service required for running
+.Xr sendmail 8
+as a non-set-user-ID binary.
+Note that this does not work inside
+.Xr jail 2
+systems, as jails do not allow binding to just the localhost interface.
+.It Va sendmail_submit_flags
+.Pq Vt str
+If
+.Va sendmail_enable
+is set to
+.Dq Li NO
+and
+.Va sendmail_submit_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr sendmail 8
+daemon.
+.It Va sendmail_outbound_enable
+.Pq Vt bool
+If set to
+.Dq Li YES
+and both
+.Va sendmail_enable
+and
+.Va sendmail_submit_enable
+are set to
+.Dq Li NO ,
+run
+.Xr sendmail 8
+using
+.Va sendmail_outbound_flags
+instead of
+.Va sendmail_flags .
+This is intended to allow local mail queue management
+for systems that do not offer a listening SMTP service.
+.It Va sendmail_outbound_flags
+.Pq Vt str
+If both
+.Va sendmail_enable
+and
+.Va sendmail_submit_enable
+are set to
+.Dq Li NO
+and
+.Va sendmail_outbound_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr sendmail 8
+daemon.
+.It Va sendmail_msp_queue_enable
+.Pq Vt bool
+If set to
+.Dq Li YES ,
+start a client (MSP) queue runner
+.Xr sendmail 8
+daemon at system boot time.
+As of sendmail 8.12, a separate queue is used for command line
+submissions.
+The client queue runner ensures that nothing is
+left behind in the submission queue.
+.It Va sendmail_msp_queue_flags
+.Pq Vt str
+If
+.Va sendmail_msp_queue_enable
+is set to
+.Dq Li YES ,
+these are the flags to pass to the
+.Xr sendmail 8
+daemon.
+.El
+.Pp
+These variables are used to determine how the
+.Xr sendmail 8
+daemons are started:
+.Pp
+.Bd -literal -offset indent
+# MTA
+if (${sendmail_enable} == NONE)
+ # Do nothing
+else if (${sendmail_enable} == YES)
+ start sendmail with ${sendmail_flags}
+else if (${sendmail_submit_enable} == YES)
+ start sendmail with ${sendmail_submit_flags}
+else if (${sendmail_outbound_enable} == YES)
+ start sendmail with ${sendmail_outbound_flags}
+endif
+
+# MSP Queue Runner
+if (${sendmail_enable} != NONE &&
+ [ -r /etc/mail/submit.cf] &&
+ ${sendmail_msp_queue_enable} == YES)
+ start sendmail with ${sendmail_msp_queue_flags}
+endif
+.Ed
+.Pp
+To completely prevent any
+.Xr sendmail 8
+daemons from starting, you must
+set the following variables in
+.Pa /etc/rc.conf :
+.Bd -literal -offset indent
+sendmail_enable="NO"
+sendmail_submit_enable="NO"
+sendmail_outbound_enable="NO"
+sendmail_msp_queue_enable="NO"
+.Ed
+.Sh SEE ALSO
+.Xr rc.conf 5 ,
+.Xr rc 8 ,
+.Xr sendmail 8
+.Sh HISTORY
+The
+.Nm
+file appeared in
+.Fx 4.6 .
diff --git a/share/man/man8/rc.subr.8 b/share/man/man8/rc.subr.8
new file mode 100644
index 0000000..2c78590
--- /dev/null
+++ b/share/man/man8/rc.subr.8
@@ -0,0 +1,926 @@
+.\" $NetBSD: rc.subr.8,v 1.12 2004/01/06 00:52:24 lukem Exp $
+.\"
+.\" Copyright (c) 2002-2004 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Luke Mewburn.
+.\"
+.\" 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$
+.\"
+.Dd May 18, 2007
+.Dt RC.SUBR 8
+.Os
+.Sh NAME
+.Nm rc.subr
+.Nd functions used by system shell scripts
+.Sh SYNOPSIS
+.Bl -item -compact
+.It
+.Ic .\& Pa /etc/rc.subr
+.Pp
+.It
+.Ic backup_file Ar action Ar file Ar current Ar backup
+.It
+.Ic checkyesno Ar var
+.It
+.Ic check_pidfile Ar pidfile Ar procname Op Ar interpreter
+.It
+.Ic check_process Ar procname Op Ar interpreter
+.It
+.Ic debug Ar message
+.It
+.Ic err Ar exitval Ar message
+.It
+.Ic force_depend Ar name
+.It
+.Ic info Ar message
+.It
+.Ic load_kld Oo Fl e Ar regex Oc Oo Fl m Ar module Oc Ar file
+.It
+.Ic load_rc_config Ar name
+.It
+.Ic load_rc_config_var Ar name Ar var
+.It
+.Ic mount_critical_filesystems Ar type
+.It
+.Ic rc_usage Ar command ...
+.It
+.Ic reverse_list Ar item ...
+.It
+.Ic run_rc_command Ar argument
+.It
+.Ic run_rc_script Ar file Ar argument
+.It
+.Ic set_rcvar Op Ar base
+.It
+.Ic wait_for_pids Op Ar pid ...
+.It
+.Ic warn Ar message
+.El
+.Sh DESCRIPTION
+The
+.Nm
+script
+contains commonly used shell script functions and variable
+definitions which are used by various scripts such as
+.Xr rc 8 .
+Scripts required by ports in
+.Pa /usr/local/etc/rc.d
+will also eventually
+be rewritten to make use of it.
+.Pp
+The
+.Nm
+functions were mostly imported from
+.Nx
+and it is intended that they remain synced between the
+two projects.
+With that in mind there are several variable
+definitions that can help in this regard.
+They are:
+.Bl -tag -width 4n
+.It Va OSTYPE
+Its value will be either
+.Qq Li FreeBSD
+or
+.Qq Li NetBSD ,
+depending on which OS it is running on.
+.It Va SYSCTL
+The path to the
+.Xr sysctl 8
+command.
+.It Va SYSCTL_N
+The path and argument list to display only the
+.Xr sysctl 8
+values instead of a
+.Ar name Ns = Ns Ar value
+pair.
+.It Va SYSCTL_W
+The path and argument to write or modify
+.Xr sysctl 8
+values.
+.El
+.Pp
+The
+.Nm
+functions are accessed by sourcing
+.Pa /etc/rc.subr
+into the current shell.
+.Pp
+The following shell functions are available:
+.Bl -tag -width 4n
+.It Ic backup_file Ar action file current backup
+Make a backup copy of
+.Ar file
+into
+.Ar current .
+If the
+.Xr rc.conf 5
+variable
+.Va backup_uses_rcs
+is
+.Dq Li YES ,
+use
+.Xr rcs 1
+to archive the previous version of
+.Ar current ,
+otherwise save the previous version of
+.Ar current
+as
+.Ar backup .
+.Pp
+The
+.Ar action
+argument
+may be one of the following:
+.Bl -tag -width ".Cm remove"
+.It Cm add
+.Ar file
+is now being backed up by or possibly re-entered into this backup mechanism.
+.Ar current
+is created, and if necessary, the
+.Xr rcs 1
+files are created as well.
+.It Cm update
+.Ar file
+has changed and needs to be backed up.
+If
+.Ar current
+exists, it is copied to
+.Ar backup
+or checked into
+.Xr rcs 1
+(if the repository file is old),
+and then
+.Ar file
+is copied to
+.Ar current .
+.It Cm remove
+.Ar file
+is no longer being tracked by this backup mechanism.
+If
+.Xr rcs 1
+is being used, an empty file is checked in and
+.Ar current
+is removed,
+otherwise
+.Ar current
+is moved to
+.Ar backup .
+.El
+.It Ic checkyesno Ar var
+Return 0 if
+.Ar var
+is defined to
+.Dq Li YES ,
+.Dq Li TRUE ,
+.Dq Li ON ,
+or
+.Ql 1 .
+Return 1 if
+.Ar var
+is defined to
+.Dq Li NO ,
+.Dq Li FALSE ,
+.Dq Li OFF ,
+or
+.Ql 0 .
+Otherwise, warn that
+.Ar var
+is not set correctly.
+The values are case insensitive.
+.Sy Note :
+.Ar var
+should be a variable name, not its value;
+.Ic checkyesno
+will expand the variable by itself.
+.It Ic check_pidfile Ar pidfile procname Op Ar interpreter
+Parses the first word of the first line of
+.Ar pidfile
+for a PID, and ensures that the process with that PID
+is running and its first argument matches
+.Ar procname .
+Prints the matching PID if successful, otherwise nothing.
+If
+.Ar interpreter
+is provided, parse the first line of
+.Ar procname ,
+ensure that the line is of the form:
+.Pp
+.Dl "#! interpreter [...]"
+.Pp
+and use
+.Ar interpreter
+with its optional arguments and
+.Ar procname
+appended as the process string to search for.
+.It Ic check_process Ar procname Op Ar interpreter
+Prints the PIDs of any processes that are running with a first
+argument that matches
+.Ar procname .
+.Ar interpreter
+is handled as per
+.Ic check_pidfile .
+.It Ic debug Ar message
+Display a debugging message to
+.Va stderr ,
+log it to the system log using
+.Xr logger 1 ,
+and
+return to the caller.
+The error message consists of the script name
+(from
+.Va $0 ) ,
+followed by
+.Dq Li ": DEBUG: " ,
+and then
+.Ar message .
+This function is intended to be used by developers
+as an aid to debugging scripts.
+It can be turned on or off
+by the
+.Xr rc.conf 5
+variable
+.Va rc_debug .
+.It Ic err Ar exitval message
+Display an error message to
+.Va stderr ,
+log it to the system log
+using
+.Xr logger 1 ,
+and
+.Ic exit
+with an exit value of
+.Ar exitval .
+The error message consists of the script name
+(from
+.Va $0 ) ,
+followed by
+.Dq Li ": ERROR: " ,
+and then
+.Ar message .
+.It Ic force_depend Ar name
+Output an advisory message and force the
+.Ar name
+service to start.
+The
+.Ar name
+argument is the
+.Xr basename 1
+component of the path to the script, usually
+.Pa /etc/rc.d/name .
+If the script fails for any reason it will output a warning
+and return with a return value of 1.
+If it was successful
+it will return 0.
+.It Ic info Ar message
+Display an informational message to
+.Va stdout ,
+and log it to the system log using
+.Xr logger 1 .
+The message consists of the script name
+(from
+.Va $0 ) ,
+followed by
+.Dq Li ": INFO: " ,
+and then
+.Ar message .
+The display of this informational output can be
+turned on or off by the
+.Xr rc.conf 5
+variable
+.Va rc_info .
+.It Ic load_kld Oo Fl e Ar regex Oc Oo Fl m Ar module Oc Ar file
+Load
+.Ar file
+as a kernel module unless it is already loaded.
+For the purpose of checking the module status,
+either the exact module name can be specified using
+.Fl m ,
+or an
+.Xr egrep 1
+regular expression matching the module name can be supplied via
+.Fl e .
+By default, the module is assumed to have the same name as
+.Ar file ,
+which is not always the case.
+.It Ic load_rc_config Ar name
+Source in the configuration files for
+.Ar name .
+First,
+.Pa /etc/rc.conf
+is sourced if it has not yet been read in.
+Then,
+.Pa /etc/rc.conf.d/ Ns Ar name
+is sourced if it is an existing file.
+The latter may also contain other variable assignments to override
+.Ic run_rc_command
+arguments defined by the calling script, to provide an easy
+mechanism for an administrator to override the behaviour of a given
+.Xr rc.d 8
+script without requiring the editing of that script.
+.It Ic load_rc_config_var Ar name Ar var
+Read the
+.Xr rc.conf 5
+variable
+.Ar var
+for
+.Ar name
+and set in the current shell, using
+.Ic load_rc_config
+in a sub-shell to prevent unwanted side effects from other variable
+assignments.
+.It Ic mount_critical_filesystems Ar type
+Go through a list of critical file systems,
+as found in the
+.Xr rc.conf 5
+variable
+.Va critical_filesystems_ Ns Ar type ,
+mounting each one that
+is not currently mounted.
+.It Ic rc_usage Ar command ...
+Print a usage message for
+.Va $0 ,
+with
+.Ar commands
+being the list of valid arguments
+prefixed by
+.Sm off
+.Dq Bq Li fast | force | one .
+.Sm on
+.It Ic reverse_list Ar item ...
+Print the list of
+.Ar items
+in reverse order.
+.It Ic run_rc_command Ar argument
+Run the
+.Ar argument
+method for the current
+.Xr rc.d 8
+script, based on the settings of various shell variables.
+.Ic run_rc_command
+is extremely flexible, and allows fully functional
+.Xr rc.d 8
+scripts to be implemented in a small amount of shell code.
+.Pp
+.Ar argument
+is searched for in the list of supported commands, which may be one
+of:
+.Bl -tag -width ".Cm restart" -offset indent
+.It Cm start
+Start the service.
+This should check that the service is to be started as specified by
+.Xr rc.conf 5 .
+Also checks if the service is already running and refuses to start if
+it is.
+This latter check is not performed by standard
+.Fx
+scripts if the system is starting directly to multi-user mode, to
+speed up the boot process.
+.It Cm stop
+If the service is to be started as specified by
+.Xr rc.conf 5 ,
+stop the service.
+This should check that the service is running and complain if it is not.
+.It Cm restart
+Perform a
+.Cm stop
+then a
+.Cm start .
+Defaults to displaying the process ID of the program (if running).
+.It Cm rcvar
+Display which
+.Xr rc.conf 5
+variables are used to control the startup of the service (if any).
+.El
+.Pp
+If
+.Va pidfile
+or
+.Va procname
+is set, also support:
+.Bl -tag -width ".Cm restart" -offset indent
+.It Cm poll
+Wait for the command to exit.
+.It Cm status
+Show the status of the process.
+.El
+.Pp
+Other supported commands are listed in the optional variable
+.Va extra_commands .
+.Pp
+.Ar argument
+may have one of the following prefixes which alters its operation:
+.Bl -tag -width ".Li force" -offset indent
+.It Li fast
+Skip the check for an existing running process,
+and sets
+.Va rc_fast Ns = Ns Li YES .
+.It Li force
+Skip the checks for
+.Va rcvar
+being set to
+.Dq Li YES ,
+and sets
+.Va rc_force Ns = Ns Li YES .
+This ignores
+.Ar argument Ns Va _precmd
+returning non-zero, and ignores any of the
+.Va required_*
+tests failing, and always returns a zero exit status.
+.It Li one
+Skip the checks for
+.Va rcvar
+being set to
+.Dq Li YES ,
+but performs all the other prerequisite tests.
+.El
+.Pp
+.Ic run_rc_command
+uses the following shell variables to control its behaviour.
+Unless otherwise stated, these are optional.
+.Bl -tag -width ".Va procname" -offset indent
+.It Va name
+The name of this script.
+This is not optional.
+.It Va rcvar
+The value of
+.Va rcvar
+is checked with
+.Ic checkyesno
+to determine if this method should be run.
+.It Va command
+Full path to the command.
+Not required if
+.Ar argument Ns Va _cmd
+is defined for each supported keyword.
+Can be overridden by
+.Va ${name}_program .
+.It Va command_args
+Optional arguments and/or shell directives for
+.Va command .
+.It Va command_interpreter
+.Va command
+is started with:
+.Pp
+.Dl "#! command_interpreter [...]"
+.Pp
+which results in its
+.Xr ps 1
+command being:
+.Pp
+.Dl "command_interpreter [...] command"
+.Pp
+so use that string to find the PID(s) of the running command
+rather than
+.Va command .
+.It Va extra_commands
+Extra commands/keywords/arguments supported.
+.It Va pidfile
+Path to PID file.
+Used to determine the PID(s) of the running command.
+If
+.Va pidfile
+is set, use:
+.Pp
+.Dl "check_pidfile $pidfile $procname"
+.Pp
+to find the PID.
+Otherwise, if
+.Va command
+is set, use:
+.Pp
+.Dl "check_process $procname"
+.Pp
+to find the PID.
+.It Va procname
+Process name to check for.
+Defaults to the value of
+.Va command .
+.It Va required_dirs
+Check for the existence of the listed directories
+before running the
+.Cm start
+method.
+.It Va required_files
+Check for the readability of the listed files
+before running the
+.Cm start
+method.
+.It Va required_modules
+Ensure that the listed kernel modules are loaded
+before running the
+.Cm start
+method.
+This is done after invoking the commands from
+.Va start_precmd
+so that the missing modules are not loaded in vain
+if the preliminary commands indicate a error condition.
+A word in the list can have an optional
+.Dq Li : Ns Ar modname
+or
+.Dq Li ~ Ns Ar pattern
+suffix.
+The
+.Ar modname
+or
+.Ar pattern
+parameter is passed to
+.Ic load_kld
+through a
+.Fl m
+or
+.Fl e
+option, respectively.
+See the description of
+.Ic load_kld
+in this document for details.
+.It Va required_vars
+Perform
+.Ic checkyesno
+on each of the list variables
+before running the
+.Cm start
+method.
+.It Va ${name}_chdir
+Directory to
+.Ic cd
+to before running
+.Va command ,
+if
+.Va ${name}_chroot
+is not provided.
+.It Va ${name}_chroot
+Directory to
+.Xr chroot 8
+to before running
+.Va command .
+Only supported after
+.Pa /usr
+is mounted.
+.It Va ${name}_flags
+Arguments to call
+.Va command
+with.
+This is usually set in
+.Xr rc.conf 5 ,
+and not in the
+.Xr rc.d 8
+script.
+The environment variable
+.Sq Ev flags
+can be used to override this.
+.It Va ${name}_nice
+.Xr nice 1
+level to run
+.Va command
+as.
+Only supported after
+.Pa /usr
+is mounted.
+.It Va ${name}_program
+Full path to the command.
+Overrides
+.Va command
+if both are set, but has no effect if
+.Va command
+is unset.
+As a rule,
+.Va command
+should be set in the script while
+.Va ${name}_program
+should be set in
+.Xr rc.conf 5 .
+.It Va ${name}_user
+User to run
+.Va command
+as, using
+.Xr chroot 8
+if
+.Va ${name}_chroot
+is set, otherwise
+uses
+.Xr su 1 .
+Only supported after
+.Pa /usr
+is mounted.
+.It Va ${name}_group
+Group to run the chrooted
+.Va command
+as.
+.It Va ${name}_groups
+Comma separated list of supplementary groups to run the chrooted
+.Va command
+with.
+.It Ar argument Ns Va _cmd
+Shell commands which override the default method for
+.Ar argument .
+.It Ar argument Ns Va _precmd
+Shell commands to run just before running
+.Ar argument Ns Va _cmd
+or the default method for
+.Ar argument .
+If this returns a non-zero exit code, the main method is not performed.
+If the default method is being executed, this check is performed after
+the
+.Va required_*
+checks and process (non-)existence checks.
+.It Ar argument Ns Va _postcmd
+Shell commands to run if running
+.Ar argument Ns Va _cmd
+or the default method for
+.Ar argument
+returned a zero exit code.
+.It Va sig_stop
+Signal to send the processes to stop in the default
+.Cm stop
+method.
+Defaults to
+.Dv SIGTERM .
+.It Va sig_reload
+Signal to send the processes to reload in the default
+.Cm reload
+method.
+Defaults to
+.Dv SIGHUP .
+.El
+.Pp
+For a given method
+.Ar argument ,
+if
+.Ar argument Ns Va _cmd
+is not defined, then a default method is provided by
+.Ic run_rc_command :
+.Bl -tag -width ".Sy Argument" -offset indent
+.It Sy Argument
+.Sy Default method
+.It Cm start
+If
+.Va command
+is not running and
+.Ic checkyesno Va rcvar
+succeeds, start
+.Va command .
+.It Cm stop
+Determine the PIDs of
+.Va command
+with
+.Ic check_pidfile
+or
+.Ic check_process
+(as appropriate),
+.Ic kill Va sig_stop
+those PIDs, and run
+.Ic wait_for_pids
+on those PIDs.
+.It Cm reload
+Similar to
+.Cm stop ,
+except that it uses
+.Va sig_reload
+instead, and does not run
+.Ic wait_for_pids .
+Another difference from
+.Cm stop
+is that
+.Cm reload
+is not provided by default.
+It can be enabled via
+.Va extra_commands
+if appropriate:
+.Pp
+.Dl "extra_commands=reload"
+.It Cm restart
+Runs the
+.Cm stop
+method, then the
+.Cm start
+method.
+.It Cm status
+Show the PID of
+.Va command ,
+or some other script specific status operation.
+.It Cm poll
+Wait for
+.Va command
+to exit.
+.It Cm rcvar
+Display which
+.Xr rc.conf 5
+variable is used (if any).
+This method always works, even if the appropriate
+.Xr rc.conf 5
+variable is set to
+.Dq Li NO .
+.El
+.Pp
+The following variables are available to the methods
+(such as
+.Ar argument Ns Va _cmd )
+as well as after
+.Ic run_rc_command
+has completed:
+.Bl -tag -width ".Va rc_flags" -offset indent
+.It Va rc_arg
+Argument provided to
+.Ic run_rc_command ,
+after fast and force processing has been performed.
+.It Va rc_flags
+Flags to start the default command with.
+Defaults to
+.Va ${name}_flags ,
+unless overridden by the environment variable
+.Sq Ev flags .
+This variable may be changed by the
+.Ar argument Ns Va _precmd
+method.
+.It Va rc_pid
+PID of
+.Va command
+(if appropriate).
+.It Va rc_fast
+Not empty if
+.Dq Li fast
+prefix was used.
+.It Va rc_force
+Not empty if
+.Dq Li force
+prefix was used.
+.El
+.It Ic run_rc_script Ar file argument
+Start the script
+.Ar file
+with an argument of
+.Ar argument ,
+and handle the return value from the script.
+.Pp
+Various shell variables are unset before
+.Ar file
+is started:
+.Bd -ragged -offset indent
+.Va name ,
+.Va command ,
+.Va command_args ,
+.Va command_interpreter ,
+.Va extra_commands ,
+.Va pidfile ,
+.Va rcvar ,
+.Va required_dirs ,
+.Va required_files ,
+.Va required_vars ,
+.Ar argument Ns Va _cmd ,
+.Ar argument Ns Va _precmd .
+.Ar argument Ns Va _postcmd .
+.Ed
+.Pp
+The startup behaviour of
+.Ar file
+depends upon the following checks:
+.Bl -enum
+.It
+If
+.Ar file
+ends in
+.Pa .sh ,
+it is sourced into the current shell.
+.It
+If
+.Ar file
+appears to be a backup or scratch file
+(e.g., with a suffix of
+.Pa ~ , # , .OLD ,
+or
+.Pa .orig ) ,
+ignore it.
+.It
+If
+.Ar file
+is not executable, ignore it.
+.It
+If the
+.Xr rc.conf 5
+variable
+.Va rc_fast_and_loose
+is empty,
+source
+.Ar file
+in a sub shell,
+otherwise source
+.Ar file
+into the current shell.
+.El
+.It Ic stop_boot Op Ar always
+Prevent booting to multiuser mode.
+If the
+.Va autoboot
+variable is set to
+.Ql yes ,
+or
+.Ic checkyesno Ar always
+indicates a truth value, then a
+.Dv SIGTERM
+signal is sent to the parent
+process, which is assumed to be
+.Xr rc 8 .
+Otherwise, the shell exits with a non-zero status.
+.It Ic set_rcvar Op Ar base
+Set the variable name required to start a service.
+In
+.Fx
+a daemon is usually controlled by an
+.Xr rc.conf 5
+variable consisting of a daemon's name postfixed by the string
+.Dq Li "_enable" .
+This is not the case in
+.Nx .
+When the following line is included in a script:
+.Pp
+.Dl "rcvar=`set_rcvar`"
+.Pp
+this function will use the value of the
+.Va $name
+variable, which should be defined by the calling script,
+to construct the appropriate
+.Xr rc.conf 5
+knob.
+If the
+.Ar base
+argument is set it will use
+.Ar base
+instead of
+.Va $name .
+.It Ic wait_for_pids Op Ar pid ...
+Wait until all of the provided
+.Ar pids
+do not exist any more, printing the list of outstanding
+.Ar pids
+every two seconds.
+.It Ic warn Ar message
+Display a warning message to
+.Va stderr
+and log it to the system log
+using
+.Xr logger 1 .
+The warning message consists of the script name
+(from
+.Va $0 ) ,
+followed by
+.Dq Li ": WARNING: " ,
+and then
+.Ar message .
+.El
+.Sh FILES
+.Bl -tag -width ".Pa /etc/rc.subr" -compact
+.It Pa /etc/rc.subr
+The
+.Nm
+file resides in
+.Pa /etc .
+.El
+.Sh SEE ALSO
+.Xr rc.conf 5 ,
+.Xr rc 8
+.Sh HISTORY
+The
+.Nm
+script
+appeared in
+.Nx 1.3 .
+The
+.Xr rc.d 8
+support functions appeared in
+.Nx 1.5 .
+The
+.Nm
+script
+first appeared in
+.Fx 5.0 .
diff --git a/share/man/man8/rescue.8 b/share/man/man8/rescue.8
new file mode 100644
index 0000000..685827f
--- /dev/null
+++ b/share/man/man8/rescue.8
@@ -0,0 +1,184 @@
+.\" Copyright (c) 2003 Tim Kientzle <kientzle@acm.org>
+.\" Copyright (c) 2003 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 ``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$
+.\"
+.Dd July 23, 2003
+.Os
+.Dt RESCUE 8
+.Sh NAME
+.Nm rescue
+.Nd rescue utilities in
+.Pa /rescue
+.Sh DESCRIPTION
+The
+.Pa /rescue
+directory contains a collection of common utilities intended for use
+in recovering a badly damaged system.
+With the transition to a dynamically-linked root beginning with
+.Fx 5.2 ,
+there is a real possibility that the standard tools in
+.Pa /bin
+and
+.Pa /sbin
+may become non-functional due to a failed upgrade or a disk error.
+The tools in
+.Pa /rescue
+are statically linked and should therefore be more resistant to
+damage.
+However, being statically linked, the tools in
+.Pa /rescue
+are also less functional than the standard utilities.
+In particular, they do not have full use of the locale,
+.Xr pam 3 ,
+and nsswitch libraries.
+.Pp
+If your system fails to boot, and it shows a prompt similar to:
+.Pp
+.Dl "Enter full pathname of shell or RETURN for /bin/sh: "
+.Pp
+the first thing to try running is the standard shell,
+.Pa /bin/sh .
+If that fails, try running
+.Pa /rescue/sh ,
+which is the
+.Nm
+shell.
+To repair the system, the root partition must first be remounted
+read-write.
+This can be done with the following
+.Xr mount 8
+command:
+.Pp
+.Dl "/rescue/mount -uw /"
+.Pp
+The next step is to double-check the contents of
+.Pa /bin , /sbin ,
+and
+.Pa /usr/lib ,
+possibly mounting a
+.Fx
+rescue or
+.Dq "live file system"
+CD-ROM (e.g.,
+.Li disc2
+of the officially released
+.Fx
+ISO images) and copying files from there.
+Once it is possible to successfully run
+.Pa /bin/sh , /bin/ls ,
+and other standard utilities, try rebooting back into the standard
+system.
+.Pp
+The
+.Pa /rescue
+tools are compiled using
+.Xr crunchgen 1 ,
+which makes them considerably more compact than the standard
+utilities.
+To build a
+.Fx
+system where space is critical,
+.Pa /rescue
+can be used as a replacement for the standard
+.Pa /bin
+and
+.Pa /sbin
+directories; simply change
+.Pa /bin
+and
+.Pa /sbin
+to be symbolic links pointing to
+.Pa /rescue .
+Since
+.Pa /rescue
+is statically linked, it should also be possible to dispense with much
+of
+.Pa /usr/lib
+in such an environment.
+.Pp
+In contrast to its predecessor
+.Pa /stand ,
+.Pa /rescue
+is updated during normal
+.Fx
+source and binary upgrades.
+.Sh FILES
+.Bl -tag -width ".Pa /rescue" -compact
+.It Pa /rescue
+Root of the
+.Nm
+hierarchy.
+.El
+.Sh SEE ALSO
+.Xr crunchgen 1 ,
+.Xr crash 8
+.Sh HISTORY
+The
+.Nm
+utilities first appeared in
+.Fx 5.2 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+system was written by
+.An Tim Kientzle Aq kientzle@FreeBSD.org ,
+based on ideas taken from
+.Nx .
+This manual page was written by
+.An Simon L. Nielsen Aq simon@FreeBSD.org ,
+based on text by
+.An Tim Kientzle Aq kientzle@FreeBSD.org .
+.Sh BUGS
+Most of the
+.Nm
+tools work even in a fairly crippled system.
+The most egregious exception is the
+.Nm
+version of
+.Xr vi 1 ,
+which currently requires that
+.Pa /usr
+be mounted so that it can access the
+.Xr termcap 5
+files.
+Hopefully, a failsafe
+.Xr termcap 3
+entry will eventually be added into the
+.Xr ncurses 3
+library, so that
+.Pa /rescue/vi
+can be used even in a system where
+.Pa /usr
+cannot immediately be mounted.
+In the meantime, the
+.Nm
+version of the
+.Xr ed 1
+editor can be used from
+.Pa /rescue/ed
+if you need to edit files, but cannot mount
+.Pa /usr .
diff --git a/share/man/man8/sticky.8 b/share/man/man8/sticky.8
new file mode 100644
index 0000000..aa94a11
--- /dev/null
+++ b/share/man/man8/sticky.8
@@ -0,0 +1,82 @@
+.\" Copyright (c) 1980, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)sticky.8 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.Dd June 5, 1993
+.Dt STICKY 8
+.Os
+.Sh NAME
+.Nm sticky
+.Nd sticky text and append-only directories
+.Sh DESCRIPTION
+A special file mode, called the
+.Em sticky bit
+(mode S_ISTXT),
+is used to indicate special treatment
+for directories.
+It is ignored for regular files.
+See
+.Xr chmod 2
+or
+the file
+.In sys/stat.h
+for an explanation of file modes.
+.Sh STICKY DIRECTORIES
+A directory whose `sticky bit' is set
+becomes an append-only directory, or, more accurately,
+a directory in which the deletion of files is restricted.
+A file in a sticky directory may only be removed or renamed
+by a user if the user has write permission for the directory and
+the user is the owner of the file, the owner of the directory,
+or the super-user.
+This feature is usefully applied to directories such as
+.Pa /tmp
+which must be publicly writable but
+should deny users the license to arbitrarily
+delete or rename each others' files.
+.Pp
+Any user may create a sticky directory.
+See
+.Xr chmod 1
+for details about modifying file modes.
+.Sh HISTORY
+A
+.Nm
+command appeared in
+.At 32v .
+.Sh BUGS
+Neither
+.Xr open 2
+nor
+.Xr mkdir 2
+will create a file with the sticky bit set.
diff --git a/share/man/man8/yp.8 b/share/man/man8/yp.8
new file mode 100644
index 0000000..75e3cc1
--- /dev/null
+++ b/share/man/man8/yp.8
@@ -0,0 +1,566 @@
+.\" Copyright (c) 1992/3 Theo de Raadt <deraadt@fsa.ca>
+.\" 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.
+.\"
+.\" 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.
+.\"
+.\" from: @(#)yp.8 1.0 (deraadt) 4/26/93
+.\" $FreeBSD$
+.\"
+.Dd April 5, 1993
+.Dt YP 8
+.Os
+.Sh NAME
+.Nm yp
+.Nd description of the YP/NIS system
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm YP
+subsystem allows network management of passwd, group, netgroup, hosts,
+services, rpc, bootparams and ethers file
+entries through the functions
+.Xr getpwent 3 ,
+.Xr getgrent 3 ,
+.Xr getnetgrent 3 ,
+.Xr gethostent 3 ,
+.Xr getnetent 3 ,
+.Xr getrpcent 3 ,
+and
+.Xr ethers 3 .
+The
+.Xr bootparamd 8
+daemon makes direct
+.Tn NIS
+library calls since there are no
+functions in the standard C library for reading bootparams.
+.Tn NIS
+support is enabled in
+.Xr nsswitch.conf 5 .
+.Pp
+The
+.Nm YP
+subsystem is started automatically in
+.Pa /etc/rc
+if it has been initialized in
+.Pa /etc/rc.conf
+and if the directory
+.Pa /var/yp
+exists (which it does in the default distribution).
+The default
+.Tn NIS
+domain must also be set with the
+.Xr domainname 1
+command, which will happen automatically at system startup if it is
+specified in
+.Pa /etc/rc.conf .
+.Pp
+.Tn NIS
+is an
+.Tn RPC Ns -based
+client/server system that allows a group of
+machines within an
+.Tn NIS
+domain to share a common set of configuration files.
+This permits a system
+administrator to set up
+.Tn NIS
+client systems with only minimal configuration
+data and add, remove or modify configuration data from a single location.
+.Pp
+The canonical copies of all
+.Tn NIS
+information are stored on a single machine
+called the
+.Tn NIS
+.Em "master server" .
+The databases used to store the information are called
+.Tn NIS
+.Em maps .
+In
+.Fx ,
+these maps are stored in
+.Pa /var/yp/ Ns Aq Ar domainname
+where
+.Aq Ar domainname
+is the name of the
+.Tn NIS
+domain being served.
+A single
+.Tn NIS
+server can
+support several domains at once, therefore it is possible to have several
+such directories, one for each supported domain.
+Each domain will have
+its own independent set of maps.
+.Pp
+In
+.Fx ,
+the
+.Tn NIS
+maps are Berkeley DB hashed database files (the
+same format used for the
+.Xr passwd 5
+database files).
+Other operating systems that support
+.Tn NIS
+use old-style
+.Nm ndbm
+databases instead (largely because Sun Microsystems originally based
+their
+.Tn NIS
+implementation on
+.Nm ndbm ,
+and other vendors have simply licensed
+Sun's code rather than design their own implementation with a different
+database format).
+On these systems, the databases are generally split
+into
+.Pa .dir
+and
+.Pa .pag
+files which the
+.Nm ndbm
+code uses to hold separate parts of the hash
+database.
+The Berkeley DB hash method instead uses a single file for
+both pieces of information.
+This means that while you may have
+.Pa passwd.byname.dir
+and
+.Pa passwd.byname.pag
+files on other operating systems (both of which are really parts of the
+same map),
+.Fx
+will have only one file called
+.Pa passwd.byname .
+The difference in format is not significant: only the
+.Tn NIS
+server,
+.Xr ypserv 8 ,
+and related tools need to know the database format of the
+.Tn NIS
+maps.
+Client
+.Tn NIS
+systems receive all
+.Tn NIS
+data in
+.Tn ASCII
+form.
+.Pp
+There are three main types of
+.Tn NIS
+systems:
+.Bl -enum
+.It
+.Tn NIS
+clients,
+which query
+.Tn NIS
+servers for information.
+.It
+.Tn NIS
+master servers,
+which maintain the canonical copies of all
+.Tn NIS
+maps.
+.It
+.Tn NIS
+slave servers,
+which maintain backup copies of
+.Tn NIS
+maps that are periodically
+updated by the master.
+.El
+.Pp
+A
+.Tn NIS
+client establishes what is called a
+.Em binding
+to a particular
+.Tn NIS
+server using the
+.Xr ypbind 8
+daemon.
+The
+.Xr ypbind 8
+utility checks the system's default domain (as set by the
+.Xr domainname 1
+command) and begins broadcasting
+.Tn RPC
+requests on the local network.
+These requests specify the name of the domain for which
+.Xr ypbind 8
+is attempting to establish a binding.
+If a server that has been
+configured to serve the requested domain receives one of the broadcasts,
+it will respond to
+.Xr ypbind 8 ,
+which will record the server's address.
+If there are several servers
+available (a master and several slaves, for example),
+.Xr ypbind 8
+will use the address of the first one to respond.
+From that point
+on, the client system will direct all of its
+.Tn NIS
+requests to that server.
+The
+.Xr ypbind 8
+utility will occasionally
+.Dq ping
+the server to make sure it is still up
+and running.
+If it fails to receive a reply to one of its pings
+within a reasonable amount of time,
+.Xr ypbind 8
+will mark the domain as unbound and begin broadcasting again in the
+hopes of locating another server.
+.Pp
+.Tn NIS
+master and slave servers handle all
+.Tn NIS
+requests with the
+.Xr ypserv 8
+daemon.
+The
+.Xr ypserv 8
+utility is responsible for receiving incoming requests from
+.Tn NIS
+clients,
+translating the requested domain and map name to a path to the
+corresponding database file and transmitting data from the database
+back to the client.
+There is a specific set of requests that
+.Xr ypserv 8
+is designed to handle, most of which are implemented as functions
+within the standard C library:
+.Bl -tag -width ".Fn yp_master"
+.It Fn yp_order
+check the creation date of a particular map
+.It Fn yp_master
+obtain the name of the
+.Tn NIS
+master server for a given
+map/domain
+.It Fn yp_match
+lookup the data corresponding to a given in key in a particular
+map/domain
+.It Fn yp_first
+obtain the first key/data pair in a particular map/domain
+.It Fn yp_next
+pass
+.Xr ypserv 8
+a key in a particular map/domain and have it return the
+key/data pair immediately following it (the functions
+.Fn yp_first
+and
+.Fn yp_next
+can be used to do a sequential search of an
+.Tn NIS
+map)
+.It Fn yp_all
+retrieve the entire contents of a map
+.El
+.Pp
+There are a few other requests which
+.Xr ypserv 8
+is capable of handling (i.e., acknowledge whether or not you can handle
+a particular domain
+.Pq Dv YPPROC_DOMAIN ,
+or acknowledge only if you can handle the domain and be silent otherwise
+.Pq Dv YPPROC_DOMAIN_NONACK )
+but
+these requests are usually generated only by
+.Xr ypbind 8
+and are not meant to be used by standard utilities.
+.Pp
+On networks with a large number of hosts, it is often a good idea to
+use a master server and several slaves rather than just a single master
+server.
+A slave server provides the exact same information as a master
+server: whenever the maps on the master server are updated, the new
+data should be propagated to the slave systems using the
+.Xr yppush 8
+command.
+The
+.Tn NIS
+.Pa Makefile
+.Pq Pa /var/yp/Makefile
+will do this automatically if the administrator comments out the
+line which says
+.Dq Li NOPUSH=true
+.Va ( NOPUSH
+is set to true by default because the default configuration is
+for a small network with only one
+.Tn NIS
+server).
+The
+.Xr yppush 8
+command will initiate a transaction between the master and slave
+during which the slave will transfer the specified maps from the
+master server using
+.Xr ypxfr 8 .
+(The slave server calls
+.Xr ypxfr 8
+automatically from within
+.Xr ypserv 8 ;
+therefore it is not usually necessary for the administrator
+to use it directly.
+It can be run manually if
+desired, however.)
+Maintaining
+slave servers helps improve
+.Tn NIS
+performance on large
+networks by:
+.Bl -bullet
+.It
+Providing backup services in the event that the
+.Tn NIS
+master crashes
+or becomes unreachable
+.It
+Spreading the client load out over several machines instead of
+causing the master to become overloaded
+.It
+Allowing a single
+.Tn NIS
+domain to extend beyond
+a local network (the
+.Xr ypbind 8
+daemon might not be able to locate a server automatically if it resides on
+a network outside the reach of its broadcasts.
+It is possible to force
+.Xr ypbind 8
+to bind to a particular server with
+.Xr ypset 8
+but this is sometimes inconvenient.
+This problem can be avoided simply by
+placing a slave server on the local network.)
+.El
+.Pp
+The
+.Fx
+.Xr ypserv 8
+is specially designed to provide enhanced security (compared to
+other
+.Tn NIS
+implementations) when used exclusively with
+.Fx
+client
+systems.
+The
+.Fx
+password database system (which is derived directly
+from
+.Bx 4.4 )
+includes support for
+.Em "shadow passwords" .
+The standard password database does not contain users' encrypted
+passwords: these are instead stored (along with other information)
+in a separate database which is accessible only by the super-user.
+If the encrypted password database were made available as an
+.Tn NIS
+map, this security feature would be totally disabled, since any user
+is allowed to retrieve
+.Tn NIS
+data.
+.Pp
+To help prevent this,
+.Fx Ns 's
+.Tn NIS
+server handles the shadow password maps
+.Pa ( master.passwd.byname
+and
+.Pa master.passwd.byuid )
+in a special way: the server will only provide access to these
+maps in response to requests that originate on privileged ports.
+Since only the super-user is allowed to bind to a privileged port,
+the server assumes that all such requests come from privileged
+users.
+All other requests are denied: requests from non-privileged
+ports will receive only an error code from the server.
+Additionally,
+.Fx Ns 's
+.Xr ypserv 8
+includes support for
+.An Wietse Venema Ns 's
+tcp wrapper package; with tcp
+wrapper support enabled, the administrator can configure
+.Xr ypserv 8
+to respond only to selected client machines.
+.Pp
+While these enhancements provide better security than stock
+.Tn NIS ,
+they are by no means 100% effective.
+It is still possible for
+someone with access to your network to spoof the server into disclosing
+the shadow password maps.
+.Pp
+On the client side,
+.Fx Ns 's
+.Xr getpwent 3
+functions will automatically search for the
+.Pa master.passwd
+maps and use them if they exist.
+If they do, they will be used, and
+all fields in these special maps (class, password age and account
+expiration) will be decoded.
+If they are not found, the standard
+.Pa passwd
+maps will be used instead.
+.Sh COMPATIBILITY
+When using a
+.No non- Ns Fx
+.Tn NIS
+server for
+.Xr passwd 5
+files, it is unlikely that the default MD5-based format that
+.Fx
+uses for passwords will be accepted by it.
+If this is the case, the value of the
+.Va passwd_format
+setting in
+.Xr login.conf 5
+should be changed to
+.Qq Li des
+for compatibility.
+.Pp
+Some systems, such as
+.Tn SunOS
+4.x, need
+.Tn NIS
+to be running in order
+for their hostname resolution functions
+.Fn ( gethostbyname ,
+.Fn gethostbyaddr ,
+etc.) to work properly.
+On these systems,
+.Xr ypserv 8
+performs
+.Tn DNS
+lookups when asked to return information about
+a host that does not exist in its
+.Pa hosts.byname
+or
+.Pa hosts.byaddr
+maps.
+.Fx Ns 's
+resolver uses
+.Tn DNS
+by default (it can be made to use
+.Tn NIS ,
+if desired), therefore its
+.Tn NIS
+server does not do
+.Tn DNS
+lookups
+by default.
+However,
+.Xr ypserv 8
+can be made to perform
+.Tn DNS
+lookups if it is started with a special
+flag.
+It can also be made to register itself as an
+.Tn NIS
+v1 server
+in order to placate certain systems that insist on the presence of
+a v1 server
+.No ( Fx
+uses only
+.Tn NIS
+v2, but many other systems,
+including
+.Tn SunOS
+4.x, search for both a v1 and v2 server when binding).
+.Fx Ns 's
+.Xr ypserv 8
+does not actually handle
+.Tn NIS
+v1 requests, but this
+.Dq "kludge mode"
+is useful for silencing stubborn systems that search for both
+a v1 and v2 server.
+.Pp
+(Please see the
+.Xr ypserv 8
+manual page for a detailed description of these special features
+and flags.)
+.Sh HISTORY
+The
+.Nm YP
+subsystem was written from the ground up by
+.An Theo de Raadt
+to be compatible to Sun's implementation.
+Bug fixes, improvements
+and
+.Tn NIS
+server support were later added by
+.An Bill Paul .
+The server-side code was originally written by
+.An Peter Eriksson
+and
+.An Tobias Reber
+and is subject to the GNU Public License.
+No Sun code was
+referenced.
+.Sh BUGS
+While
+.Fx
+now has both
+.Tn NIS
+client and server capabilities, it does not yet have support for
+.Xr ypupdated 8
+or the
+.Fn yp_update
+function.
+Both of these require secure
+.Tn RPC ,
+which
+.Fx
+does not
+support yet either.
+.Pp
+The
+.Xr getservent 3
+and
+.Xr getprotoent 3
+functions do not yet have
+.Tn NIS
+support.
+Fortunately, these files
+do not need to be updated that often.
+.Pp
+Many more manual pages should be written, especially
+.Xr ypclnt 3 .
+For the time being, seek out a local Sun machine and read the
+manuals for there.
+.Pp
+Neither Sun nor this author have found a clean way to handle
+the problems that occur when ypbind cannot find its server
+upon bootup.
diff --git a/share/man/man9/BUF_ISLOCKED.9 b/share/man/man9/BUF_ISLOCKED.9
new file mode 100644
index 0000000..7344869
--- /dev/null
+++ b/share/man/man9/BUF_ISLOCKED.9
@@ -0,0 +1,68 @@
+.\"
+.\" Copyright (C) 2008 Attilio Rao <attilio@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 22, 2008
+.Dt BUF_ISLOCKED 9
+.Os
+.Sh NAME
+.Nm BUF_ISLOCKED
+.Nd "returns the state of the lock linked to the buffer"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/uio.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft int
+.Fn BUF_ISLOCKED "struct buf *bp"
+.Sh DESCRIPTION
+The
+.Fn BUF_ISLOCKED
+function returns the status of the lock linked to the buffer in relation to
+curthread.
+.Pp
+It can return:
+.Bl -tag -width ".Dv LK_EXCLUSIVE"
+.It Dv LK_EXCLUSIVE
+An exclusive lock is held by curthread.
+.It Dv LK_EXCLOTHER
+An exclusive lock is held by someone other than curthread
+.It Dv LK_SHARED
+A shared lock is held.
+.It Li 0
+The lock is not held by anyone.
+.Sh SEE ALSO
+.Xr lockstatus 9 ,
+.Xr buf 9 ,
+.Xr BUF_LOCK 9 ,
+.Xr BUF_UNLOCK 9 ,
+.Xr lockmgr 9
+.Sh AUTHORS
+This manual page was written by
+.An Attilio Rao Aq attilio@FreeBSD.org .
diff --git a/share/man/man9/BUF_LOCK.9 b/share/man/man9/BUF_LOCK.9
new file mode 100644
index 0000000..ca414ec
--- /dev/null
+++ b/share/man/man9/BUF_LOCK.9
@@ -0,0 +1,75 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 9, 2001
+.Dt BUF_LOCK 9
+.Os
+.Sh NAME
+.Nm BUF_LOCK
+.Nd "locks a buffer"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/uio.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft int
+.Fn BUF_LOCK "struct buf *bp" "int locktype"
+.Sh DESCRIPTION
+The
+.Fn BUF_LOCK
+function locks the given buffer.
+If the lock is already held this
+call will block until it can acquire the lock unless
+.Dv LK_NOWAIT
+is set.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa locktype"
+.It Fa bp
+The buffer to lock.
+.It Fa locktype
+Flags controlling the type of lock.
+See
+.Xr lockmgr 9
+for details.
+.El
+.Sh RETURN VALUES
+A value of 0 is returned upon success.
+See
+.Xr lockmgr 9
+for
+information on non-zero return values.
+.Sh SEE ALSO
+.Xr buf 9 ,
+.Xr BUF_TIMELOCK 9 ,
+.Xr BUF_UNLOCK 9 ,
+.Xr lockmgr 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/BUF_LOCKFREE.9 b/share/man/man9/BUF_LOCKFREE.9
new file mode 100644
index 0000000..d356f0d
--- /dev/null
+++ b/share/man/man9/BUF_LOCKFREE.9
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 9, 2001
+.Dt BUF_LOCKFREE 9
+.Os
+.Sh NAME
+.Nm BUF_LOCKFREE
+.Nd "destroys a buffer's lock"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/uio.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft void
+.Fn BUF_LOCKFREE "struct buf *bp"
+.Sh DESCRIPTION
+The
+.Fn BUF_LOCKFREE
+macro destroys the buffer lock.
+The lock must not be held when
+this macro is called or a panic will result.
+.Pp
+Its argument is:
+.Bl -tag -width ".Fa bp"
+.It Fa bp
+The buffer whose lock is to be destroyed.
+.El
+.Sh SEE ALSO
+.Xr buf 9 ,
+.Xr BUF_LOCK 9 ,
+.Xr BUF_TIMELOCK 9 ,
+.Xr BUF_UNLOCK 9 ,
+.Xr lockdestroy 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/BUF_LOCKINIT.9 b/share/man/man9/BUF_LOCKINIT.9
new file mode 100644
index 0000000..286e7f8
--- /dev/null
+++ b/share/man/man9/BUF_LOCKINIT.9
@@ -0,0 +1,62 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 6, 2005
+.Dt BUF_LOCKINIT 9
+.Os
+.Sh NAME
+.Nm BUF_LOCKINIT
+.Nd "initializes a buffer lock"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/uio.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft void
+.Fn BUF_LOCKINIT "struct buf *bp"
+.Sh DESCRIPTION
+The
+.Fn BUF_LOCKINIT
+macro initializes a buffer lock.
+.Pp
+Its argument is:
+.Bl -tag -width ".Fa bp"
+.It Fa bp
+The buffer whose lock it to be initialized.
+.El
+.Sh SEE ALSO
+.Xr buf 9 ,
+.Xr BUF_LOCK 9 ,
+.Xr BUF_TIMELOCK 9 ,
+.Xr BUF_UNLOCK 9 ,
+.Xr lockinit 9 ,
+.Xr lockmgr 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/BUF_RECURSED.9 b/share/man/man9/BUF_RECURSED.9
new file mode 100644
index 0000000..dfe818f
--- /dev/null
+++ b/share/man/man9/BUF_RECURSED.9
@@ -0,0 +1,64 @@
+.\"
+.\" Copyright (C) 2008 Attilio Rao <attilio@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 22, 2008
+.Dt BUF_RECURSED 9
+.Os
+.Sh NAME
+.Nm BUF_RECURSED
+.Nd "checks if the lock linked to the buffer is recursed"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/uio.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft int
+.Fn BUF_RECURSED "struct buf *bp"
+.Sh DESCRIPTION
+The
+.Fn BUF_RECURSED
+function checks if the lock linked to the given buffer is recursed and
+returns 1 if the condition is true, 0 otherwise.
+.Pp
+Its argument is:
+.Bl -tag -width ".Fa bp"
+.It Fa bp
+The buffer linked to the lock.
+See
+.Xr lockmgr_recursed 9
+for details.
+.Sh SEE ALSO
+.Xr buf 9 ,
+.Xr BUF_LOCK 9 ,
+.Xr BUF_UNLOCK 9 ,
+.Xr lockmgr 9
+.Sh AUTHORS
+This manual page was written by
+.An Attilio Rao Aq attilio@FreeBSD.org .
diff --git a/share/man/man9/BUF_TIMELOCK.9 b/share/man/man9/BUF_TIMELOCK.9
new file mode 100644
index 0000000..31ca200
--- /dev/null
+++ b/share/man/man9/BUF_TIMELOCK.9
@@ -0,0 +1,83 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 9, 2001
+.Dt BUF_TIMELOCK 9
+.Os
+.Sh NAME
+.Nm BUF_TIMELOCK
+.Nd "locks a buffer"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/uio.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft int
+.Fn BUF_TIMELOCK "struct buf *bp" "int locktype" "char *wmesg" "int catch" "int timo"
+.Sh DESCRIPTION
+The
+.Fn BUF_TIMELOCK
+function locks the given buffer, and limits the amount of time it
+will sleep to
+.Fa timo
+and OR's
+.Fa catch
+into the sleep's priority.
+.Fa wmesg
+is the wmesg used in the sleep.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa locktype"
+.It Fa bp
+The buffer to lock.
+.It Fa locktype
+Flags controlling the type of lock.
+See
+.Xr lockmgr 9
+for details.
+.It Fa wmesg
+The wmesg used in any sleeps while acquiring the lock.
+.It Fa catch
+Priority OR'd into the sleep's priority.
+.It Fa timo
+The timeout for any sleeps encountered during the lock.
+.El
+.Sh RETURN VALUES
+A value of 0 is returned on success.
+See
+.Xr lockmgr 9
+for details on non-zero return values.
+.Sh SEE ALSO
+.Xr buf 9 ,
+.Xr BUF_LOCK 9 ,
+.Xr BUF_UNLOCK 9 ,
+.Xr lockmgr 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/BUF_UNLOCK.9 b/share/man/man9/BUF_UNLOCK.9
new file mode 100644
index 0000000..0b6b0b3
--- /dev/null
+++ b/share/man/man9/BUF_UNLOCK.9
@@ -0,0 +1,64 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 9, 2001
+.Dt BUF_UNLOCK 9
+.Os
+.Sh NAME
+.Nm BUF_UNLOCK
+.Nd "unlocks a locked buffer"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/uio.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft void
+.Fn BUF_UNLOCK "struct buf *bp"
+.Sh DESCRIPTION
+The
+.Fn BUF_UNLOCK
+function unlocks a buffer that was previously locked with
+.Fn BUF_LOCK
+or
+.Fn BUF_TIMELOCK .
+.Pp
+Its argument is:
+.Bl -tag -width ".Fa bp"
+.It Fa bp
+The buffer to unlock.
+The buffer must already be locked.
+.El
+.Sh SEE ALSO
+.Xr buf 9 ,
+.Xr BUF_LOCK 9 ,
+.Xr BUF_TIMELOCK 9 ,
+.Xr lockmgr 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/BUS_ADD_CHILD.9 b/share/man/man9/BUS_ADD_CHILD.9
new file mode 100644
index 0000000..8b69d5a
--- /dev/null
+++ b/share/man/man9/BUS_ADD_CHILD.9
@@ -0,0 +1,74 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2004 M. Warner Losh.
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 13, 2004
+.Dt BUS_ADD_CHILD 9
+.Os
+.Sh NAME
+.Nm BUS_ADD_CHILD
+.Nd "add a device node to the tree with a given priority"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn BUS_ADD_CHILD "device_t dev" "int order" "const char *name" "int unit"
+.Sh DESCRIPTION
+The
+.Fn BUS_ADD_CHILD
+method
+is used by the driver identify routine to add devices to the tree.
+Please see
+.Xr device_add_child 9
+for more details.
+The interface is the same as
+.Xr device_add_child 9
+however, the bus'
+.Fn BUS_ADD_CHILD
+is called.
+.Pp
+Busses implementing
+.Fn BUS_ADD_CHILD
+should insert the device into the tree using
+.Xr device_add_child 9
+before adding things such as their own ivars and resource lists to the device.
+.Sh RETURN VALUES
+The
+.Fn BUS_ADD_CHILD
+method returns
+.Vt device_t
+added to the tree, or
+.Dv NULL .
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr device_add_child 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An M. Warner Losh .
diff --git a/share/man/man9/BUS_CONFIG_INTR.9 b/share/man/man9/BUS_CONFIG_INTR.9
new file mode 100644
index 0000000..a3b4c54
--- /dev/null
+++ b/share/man/man9/BUS_CONFIG_INTR.9
@@ -0,0 +1,106 @@
+.\" Copyright (c) 2003 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 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$
+.\"
+.Dd January 6, 2005
+.Dt BUS_CONFIG_INTR 9
+.Os
+.\"
+.Sh NAME
+.Nm BUS_CONFIG_INTR
+.Nd "configure interrupt polarity and trigger mode"
+.\"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fo BUS_CONFIG_INTR
+.Fa "device_t dev" "int irq" "enum intr_trigger trig" "enum intr_polarity pol"
+.Fc
+.\"
+.Sh DESCRIPTION
+The
+.Fn BUS_CONFIG_INTR
+method allows bus or device drivers to provide interrupt polarity and trigger
+mode to parent busses.
+This typically bubbles all the way up to the root bus (e.g.\& nexus) where the
+necessary actions are taken to actually program the hardware.
+Since the
+.Fn BUS_CONFIG_INTR
+method takes an interrupt number, it is assumed but not necessarily required
+that it is called prior to
+.Xr BUS_SETUP_INTR 9 .
+.Pp
+The
+.Fa trig
+argument can be one of:
+.Bl -tag -width ".Dv INTR_TRIGGER_CONFORM"
+.It Dv INTR_TRIGGER_CONFORM
+The interrupt trigger mode is standard for the bus to which the device is
+attached.
+.It Dv INTR_TRIGGER_EDGE
+The interrupt is edge triggered.
+This means that the interrupt is raised by the rising edge of the signal on
+the interrupt line.
+The signal typically reverts to the original state so as to cause a spike.
+.It Dv INTR_TRIGGER_LEVEL
+The interrupt is level triggered.
+This means that the interrupt is raised when the signal on the interrupt line
+transitions and remains unchanged after that until the interrupt has been
+serviced, after which the signal transitions back.
+.El
+.Pp
+The
+.Fa pol
+argument can be any one of:
+.Bl -tag -width ".Dv INTR_POLARITY_CONFORM"
+.It Dv INTR_POLARITY_CONFORM
+The interrupt polarity is standard for the bus to which the device is attached.
+.It Dv INTR_POLARITY_HIGH
+The interrupt is activated by a high voltage on the interrupt line.
+.It Dv INTR_POLARITY_LOW
+The interrupt is activated by a low voltage on the interrupt line.
+.El
+.\"
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.\"
+.Sh SEE ALSO
+.Xr BUS_SETUP_INTR 9 ,
+.Xr BUS_TEARDOWN_INTR 9 ,
+.Xr device 9 ,
+.Xr driver 9
+.\"
+.Sh HISTORY
+The
+.Fn BUS_CONFIG_INTR
+method first appeared in
+.Fx 5.2 .
+.\"
+.Sh AUTHORS
+This manual page was written by
+.An Marcel Moolenaar
+.Aq marcel@xcllnt.net .
diff --git a/share/man/man9/BUS_PRINT_CHILD.9 b/share/man/man9/BUS_PRINT_CHILD.9
new file mode 100644
index 0000000..a3709d9
--- /dev/null
+++ b/share/man/man9/BUS_PRINT_CHILD.9
@@ -0,0 +1,64 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 6, 2005
+.Dt BUS_PRINT_CHILD 9
+.Os
+.Sh NAME
+.Nm BUS_PRINT_CHILD
+.Nd print information about a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn BUS_PRINT_CHILD "device_t dev" "device_t child"
+.Sh DESCRIPTION
+The
+.Fn BUS_PRINT_CHILD
+method
+is called from system code which prints out a description of a
+device.
+It should describe the attachment that the child has with
+the parent.
+For instance the TurboLaser bus prints which node the
+device is attached to.
+Please see
+.Xr bus_generic_print_child 9
+for more information regarding the proper formatting of the messages
+printed by
+.Fn BUS_PRINT_CHILD .
+.Sh RETURN VALUES
+The number of characters output.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/BUS_READ_IVAR.9 b/share/man/man9/BUS_READ_IVAR.9
new file mode 100644
index 0000000..153b324
--- /dev/null
+++ b/share/man/man9/BUS_READ_IVAR.9
@@ -0,0 +1,63 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt BUS_READ_IVAR 9
+.Os
+.Sh NAME
+.Nm BUS_READ_IVAR ,
+.Nm BUS_WRITE_IVAR
+.Nd manipulate bus-specific device instance variables
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn BUS_READ_IVAR "device_t dev" "device_t child" "int index" "uintptr_t *result"
+.Ft int
+.Fn BUS_WRITE_IVAR "device_t dev" "device_t child" "int index" "uintptr_t value"
+.Sh DESCRIPTION
+These two methods manage a bus specific set of instance variables of
+a child device.
+The intention is that each different type of bus
+defines a set of appropriate instance variables (such as ports and
+irqs for ISA bus etc.)
+.Pp
+This information could be given to the child device as a struct but
+that makes it hard for a bus to add or remove variables without
+forcing an edit and recompile for all drivers which may not be
+possible for vendor supplied binary drivers.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/BUS_SETUP_INTR.9 b/share/man/man9/BUS_SETUP_INTR.9
new file mode 100644
index 0000000..46c4385
--- /dev/null
+++ b/share/man/man9/BUS_SETUP_INTR.9
@@ -0,0 +1,221 @@
+.\" Copyright (c) 2000 Jeroen Ruigrok van der Werven
+.\" 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$
+.\"
+.Dd December 18, 2007
+.Dt BUS_SETUP_INTR 9
+.Os
+.Sh NAME
+.Nm BUS_SETUP_INTR ,
+.Nm bus_setup_intr ,
+.Nm BUS_TEARDOWN_INTR ,
+.Nm bus_teardown_intr
+.Nd create, attach and teardown an interrupt handler
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fo BUS_SETUP_INTR
+.Fa "device_t dev" "device_t child" "struct resource *irq" "int flags"
+.Fa "driver_filter_t *filter" "driver_intr_t *ithread" "void *arg"
+.Fa "void **cookiep"
+.Fc
+.Ft int
+.Fo bus_setup_intr
+.Fa "device_t dev" "struct resource *r" "int flags"
+.Fa "driver_filter_t filter" "driver_intr_t ithread" "void *arg"
+.Fa "void **cookiep"
+.Fc
+.Ft int
+.Fo BUS_TEARDOWN_INTR
+.Fa "device_t dev" "device_t child" "struct resource *irq" "void *cookiep"
+.Fc
+.Ft int
+.Fn bus_teardown_intr "device_t dev" "struct resource *r" "void *cookiep"
+.Sh DESCRIPTION
+The
+.Fn BUS_SETUP_INTR
+method
+will create and attach an interrupt handler to an interrupt
+previously allocated by the resource manager's
+.Xr BUS_ALLOC_RESOURCE 9
+method.
+The
+.Fa flags
+are found in
+.In sys/bus.h ,
+and give the broad category of interrupt.
+The
+.Fa flags
+also tell the interrupt handlers about certain
+device driver characteristics.
+.Dv INTR_EXCL
+marks the handler as being
+an exclusive handler for this interrupt.
+.Dv INTR_MPSAFE
+tells the scheduler that the interrupt handler
+is well behaved in a preemptive environment
+(``SMP safe''),
+and does not need
+to be protected by the ``Giant Lock'' mutex.
+.Dv INTR_ENTROPY
+marks the interrupt as being a good source of entropy -
+this may be used by the entropy device
+.Pa /dev/random .
+.Pp
+To define a time-critical handler (previously known as
+.Dv INTR_FAST )
+that will not execute any potentially blocking operation, use the
+.Fa filter
+argument.
+See the
+.Sx "Filter Routines"
+section below for information on writing a filter.
+Otherwise, use the
+.Fa ithread
+argument.
+The defined handler
+will be called with the value
+.Fa arg
+as its only argument.
+See the
+.Sx "ithread Routines"
+section below for more information on writing an interrupt handler.
+.Pp
+The
+.Fa cookiep
+argument is a pointer to a
+.Vt "void *"
+that
+.Fn BUS_SETUP_INTR
+will write a cookie for the parent bus' use to if it is successful in
+establishing an interrupt.
+Driver writers may assume that this cookie will be non-zero.
+The nexus driver will write 0 on failure to
+.Fa cookiep .
+.Pp
+The interrupt handler will be detached by
+.Fn BUS_TEARDOWN_INTR .
+The cookie needs to be passed to
+.Fn BUS_TEARDOWN_INTR
+in order to tear down the correct interrupt handler.
+Once
+.Fn BUS_TEARDOWN_INTR
+returns, it is guaranteed that the interrupt function is not active and
+will no longer be called.
+.Pp
+Mutexes are not allowed to be held across calls to these functions.
+.Ss "Filter Routines"
+A filter runs in a context very similar to what was known as an
+.Dv INTR_FAST
+routine in previous versions of
+.Fx .
+In this context, normal mutexes cannot be used.
+Only the spin lock version of these can be used (specified by passing
+.Dv MTX_SPIN
+to
+.Fn mtx_init
+when initializing the mutex).
+.Xr wakeup 9
+and similar routines can be called.
+Atomic operations from
+.Pa machine/atomic
+may be used.
+Reads and writes to hardware through
+.Xr bus_space 9
+may be used.
+PCI configuration registers may be read and written.
+All other kernel interfaces cannot be used.
+.Pp
+In this restricted environment, care must be taken to account for all
+races.
+A careful analysis of races should be done as well.
+It is generally cheaper to take an extra interrupt, for example, than
+to protect variables with spinlocks.
+Read, modify, write cycles of hardware registers need to be carefully
+analyzed if other threads are accessing the same registers.
+.Pp
+Generally, a filter routine will use one of two strategies.
+The first strategy is to simply mask the interrupt in hardware and
+allow the
+.Dv ithread
+routine to read the state from the hardware and then reenable
+interrupts.
+The
+.Dv ithread
+also acknowledges the interrupt before re-enabling the interrupt
+source in hardware.
+Most PCI hardware can mask its interrupt source.
+.Pp
+The second common approach is to use a filter with multiple
+.Xr taskqueue 9
+tasks.
+In this case, the filter acknowledges the interrupts and queues the
+work to the appropriate taskqueue.
+Where one has to multiplex different kinds of interrupt sources, like
+a network card's transmit and receive paths, this can reduce lock
+contention and increase performance.
+.Pp
+You should not
+.Xr malloc 9
+from inside a filter.
+You may not call anything that uses a normal mutex.
+Witness may complain about these.
+.Ss "ithread Routines"
+You can do whatever you want in an ithread routine, except sleep.
+Care must be taken not to sleep in an ithread.
+In addition, one should minimize lock contention in an ithread routine
+because contested locks ripple over to all other ithread routines on
+that interrupt.
+.Ss "Sleeping"
+Sleeping is voluntarily giving up control of your thread.
+All the sleep routine found in
+.Xr msleep 9
+sleep.
+Waiting for a condition variable described in
+.Xr condvar 9
+is sleeping.
+Calling any function that does any of these things is sleeping.
+.Sh RETURN VALUES
+Zero is returned on success,
+otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr random 4 ,
+.Xr device 9 ,
+.Xr driver 9 ,
+.Xr mtx_init 9 ,
+.Xr wakeup 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Jeroen Ruigrok van der Werven
+.Aq asmodai@FreeBSD.org
+based on the manual pages for
+.Fn BUS_CREATE_INTR
+and
+.Fn BUS_CONNECT_INTR
+written by
+.An Doug Rabson
+.Aq dfr@FreeBSD.org .
diff --git a/share/man/man9/CTASSERT.9 b/share/man/man9/CTASSERT.9
new file mode 100644
index 0000000..db1ad49
--- /dev/null
+++ b/share/man/man9/CTASSERT.9
@@ -0,0 +1,70 @@
+.\" Copyright (c) 2003 Hiten M. Pandya
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd September 5, 2008
+.Os
+.Dt CTASSERT 9
+.Sh NAME
+.Nm CTASSERT
+.Nd compile time assertion macro
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.Fn CTASSERT expression
+.Sh DESCRIPTION
+The
+.Fn CTASSERT
+macro evaluates
+.Fa expression
+at compile time and causes a compiler error if it is false.
+.Pp
+The
+.Fn CTASSERT
+macro is useful for asserting the size or alignment of important
+data structures and variables during compilation, which would
+otherwise cause the code to fail at run time.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn CTASSERT
+macro should not be used in a header file.
+It is implemented using a dummy typedef, with a name (based on line number)
+that may conflict with a
+.Fn CTASSERT
+in a source file including that header.
+.Sh EXAMPLES
+Assert that the size of the
+.Vt uuid
+structure is 16 bytes.
+.Pp
+.Dl "CTASSERT(sizeof(struct uuid) == 16);"
+.Sh SEE ALSO
+.Xr KASSERT 9
+.Sh AUTHORS
+This manual page was written by
+.An Hiten M. Pandya
+.Aq hmp@FreeBSD.org .
diff --git a/share/man/man9/DB_COMMAND.9 b/share/man/man9/DB_COMMAND.9
new file mode 100644
index 0000000..687a7e4
--- /dev/null
+++ b/share/man/man9/DB_COMMAND.9
@@ -0,0 +1,113 @@
+.\"-
+.\" Copyright (c) 2008 Guillaume Ballet
+.\" 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$
+.\"
+.Dd August 27, 2008
+.Dt DB_COMMAND 9
+.Os
+.Sh NAME
+.Nm DB_COMMAND ,
+.Nm DB_SHOW_COMMAND ,
+.Nm DB_SHOW_ALL_COMMAND
+.Nd Extends the ddb command set.
+.Sh SYNOPSIS
+.In ddb/ddb.h
+.Fo DB_COMMAND
+.Fa command_name
+.Fa command_function
+.Fc
+.Fn DB_SHOW_COMMAND "command_name" "command_function"
+.Fn DB_SHOW_ALL_COMMAND "command_name" "command_function"
+.Sh DESCRIPTION
+.Pp
+The
+.Fn DB_COMMAND
+macro adds
+.Fa command_name
+to the list of top-level commands.
+Invoking
+.Fa command_name
+from ddb will call
+.Fa command_function .
+.Pp
+The
+.Fn DB_SHOW_COMMAND
+and
+.Fn DB_SHOW_ALL_COMMAND
+are roughly equivalent to
+.Fn DB_COMMAND
+but in these cases,
+.Fa command_name
+is a sub-command of the ddb
+.Sy show
+command and
+.Sy show all
+command, respectively.
+.Pp
+The general command syntax:
+.Cm command Ns Op Li \&/ Ns Ar modifier
+.Ar address Ns Op Li , Ns Ar count ,
+translates into the following parameters for
+.Fa command_function :
+.Bl -tag
+.It Fa addr
+The address passed to the command as an argument.
+.It Fa have_addr
+A boolean value that is true if the addr field is valid.
+.It Fa count
+The number of quad words starting at offset
+.Fa addr
+that the command must process.
+.It Fa modif
+A pointer to the string of modifiers. That is, a series of symbols used to pass some options to the command. For example, the
+.Sy examine
+command will display words in decimal form if it is passed the modifier "d".
+.El
+.Sh EXAMPLE
+In your module, the command is declared as:
+.Pp
+.Bd -literal
+DB_COMMAND(mycmd, my_cmd_func)
+{
+ if (have_addr)
+ db_printf("Calling my command with address %p\\n", addr);
+}
+.Ed
+.Pp
+Then, when in ddb:
+.Pp
+.Bd -literal
+.Bf Sy
+db> mycmd 0x1000
+Calling my command with address 0x1000
+db>
+.Ef
+.Ed
+.Sh "SEE ALSO"
+.Xr ddb 4
+.Sh AUTHOR
+This manual page was written by
+.An Guillaume Ballet Aq gballet@gmail.com .
diff --git a/share/man/man9/DECLARE_GEOM_CLASS.9 b/share/man/man9/DECLARE_GEOM_CLASS.9
new file mode 100644
index 0000000..a47ea8e
--- /dev/null
+++ b/share/man/man9/DECLARE_GEOM_CLASS.9
@@ -0,0 +1,179 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd August 13, 2007
+.Dt DECLARE_GEOM_CLASS 9
+.Os
+.Sh NAME
+.Nm DECLARE_GEOM_CLASS
+.Nd "GEOM class declaration macro"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Fn DECLARE_GEOM_CLASS "class" "mod_name"
+.Sh DESCRIPTION
+The
+.Fn DECLARE_GEOM_CLASS
+macro registers a GEOM class in GEOM.
+A GEOM class itself implements one particular kind of transformation.
+Typical examples are: MBR disk partition,
+.Bx
+disklabel and RAID5 classes.
+.Fn DECLARE_GEOM_CLASS
+can be used both for compiled in and loaded as
+.Xr kld 4
+modules GEOM classes and it is the only official way for class registration.
+.Pp
+The arguments to
+.Fn DECLARE_GEOM_CLASS
+are:
+.Bl -tag -offset indent
+.It Fa class
+The
+.Vt g_class
+structure which describes a GEOM class.
+.It Fa mod_name
+A kernel module name (not a class name!).
+.El
+.Pp
+Structure
+.Vt g_class
+contains data describing the class.
+They are:
+.Bl -tag -offset indent -width indent
+.It Vt "const char *" Va name
+Class name.
+.It Vt "g_taste_t *" Va taste
+Pointer to function used for taste event handling.
+If it is
+.Pf non- Dv NULL
+it is called in three situations:
+.Pp
+.Bl -dash -compact
+.It
+On class activation, all existing providers are offered for tasting.
+.It
+When new provider is created it is offered for tasting.
+.It
+After last write access to a provider is closed it is offered for retasting
+(on first write open event
+.Dq spoil
+was sent).
+.El
+.It Vt "g_config_t *" Va config
+This field is not used anymore, its functionality was replaced by the
+.Va ctlreq
+field.
+.It Vt "g_ctl_req_t *" Va ctlreq
+Pointer to function used for handling events from userland applications.
+.It Vt "g_init_t *" Va init
+Pointer to function which is called right after class registration.
+.It Vt "g_fini_t *" Va fini
+Pointer to function which is called right before class deregistration.
+.It Vt "g_ctl_destroy_geom_t *" Va destroy_geom
+Pointer to a function which is called for every geom on class unload.
+If this field is not set, the class can not be unloaded.
+.El
+.Pp
+Only a
+.Fa name
+field is required; the rest are optional.
+.Sh RESTRICTIONS/CONDITIONS
+The fields of
+.Vt g_class
+should always be initialized using C99-style field naming
+(see the initialization of
+.Va example_class
+below).
+.Sh EXAMPLES
+Example class declaration.
+.Bd -literal -offset indent
+static struct g_geom *
+g_example_taste(struct g_class *mp, struct g_provider *pp,
+ int flags __unused)
+{
+ g_topology_assert();
+
+ [...]
+}
+
+static void
+g_example_ctlreq(struct gctl_req *req, struct g_class *cp,
+ char const *verb)
+{
+
+ [...]
+}
+
+static int
+g_example_destroy_geom(struct gctl_req *req, struct g_class *cp,
+ struct g_geom *gp)
+{
+
+ g_topology_assert();
+
+ [...]
+}
+
+static void
+g_example_init(struct g_class *mp)
+{
+
+ [...]
+}
+
+static void
+g_example_fini(struct g_class *mp)
+{
+
+ [...]
+}
+
+struct g_class example_class = {
+ .name = "EXAMPLE",
+ .taste = g_example_taste,
+ .ctlreq = g_example_ctlreq,
+ .init = g_example_init,
+ .fini = g_example_fini,
+ .destroy_geom = g_example_destroy_geom
+};
+
+DECLARE_GEOM_CLASS(example_class, g_example);
+.Ed
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/DECLARE_MODULE.9 b/share/man/man9/DECLARE_MODULE.9
new file mode 100644
index 0000000..d33c18e
--- /dev/null
+++ b/share/man/man9/DECLARE_MODULE.9
@@ -0,0 +1,112 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 6, 2005
+.Dt DECLARE_MODULE 9
+.Os
+.Sh NAME
+.Nm DECLARE_MODULE
+.Nd kernel module declaration macro
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kernel.h
+.In sys/module.h
+.Fn DECLARE_MODULE "name" "moduledata_t data" "sub" "order"
+.Sh DESCRIPTION
+The
+.Fn DECLARE_MODULE
+macro declares a generic kernel module.
+It is used to register the module with the system, using the
+.Fn SYSINIT
+macro.
+.Fn DECLARE_MODULE
+is usually used within other macros, such as
+.Xr DRIVER_MODULE 9 ,
+.Xr DEV_MODULE 9
+and
+.Xr SYSCALL_MODULE 9 .
+Of course, it can also be called directly, for example in
+order to implement dynamic sysctls.
+.Pp
+The arguments it expects are:
+.Bl -tag -width indent
+.It Fa name
+The module name, which will be used in the
+.Fn SYSINIT
+call to identify the module.
+.It Fa data
+A
+.Vt moduledata_t
+structure, which contains two main items, the official name of the
+module name, which will be used in the
+.Vt module_t
+structure and a pointer to the event handler function of type
+.Vt modeventhand_t .
+.It Fa sub
+An argument directed to the
+.Fn SYSINIT
+macro.
+Valid values for this are contained in the
+.Vt sysinit_sub_id
+enumeration
+(see
+.In sys/kernel.h )
+and specify the type of system startup interfaces.
+The
+.Xr DRIVER_MODULE 9
+macro uses a value of
+.Dv SI_SUB_DRIVERS
+here for example, since these modules contain a driver for a device.
+For kernel modules that are loaded at runtime, a value of
+.Dv SI_SUB_EXEC
+is common.
+.It Fa order
+An argument for
+.Fn SYSINIT .
+It represents the KLDs order of initialization within the subsystem.
+Valid values are defined in the
+.Vt sysinit_elem_order
+enumeration
+.Pq In sys/kernel.h .
+.El
+.Sh SEE ALSO
+.Xr DEV_MODULE 9 ,
+.Xr DRIVER_MODULE 9 ,
+.Xr module 9 ,
+.Xr SYSCALL_MODULE 9
+.Pp
+.Pa /usr/include/sys/kernel.h ,
+.Pa /usr/share/examples/kld
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org ,
+inspired by the KLD Facility Programming Tutorial by
+.An Andrew Reiter Aq arr@watson.org .
diff --git a/share/man/man9/DELAY.9 b/share/man/man9/DELAY.9
new file mode 100644
index 0000000..ac6231c
--- /dev/null
+++ b/share/man/man9/DELAY.9
@@ -0,0 +1,47 @@
+.\"
+.\" Copyright (c) 2000 Alfred Perlstein
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 21, 2000
+.Os
+.Dt DELAY 9
+.Sh NAME
+.Nm DELAY
+.Nd busy loop for an interval
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft void
+.Fn DELAY "int delay"
+.Sh DESCRIPTION
+Delay for
+.Fa delay
+microseconds (1/1000000th of a second).
+.Sh AUTHORS
+This manual page was written by
+.An Alfred Perlstein .
diff --git a/share/man/man9/DEVICE_ATTACH.9 b/share/man/man9/DEVICE_ATTACH.9
new file mode 100644
index 0000000..ccb9f27
--- /dev/null
+++ b/share/man/man9/DEVICE_ATTACH.9
@@ -0,0 +1,71 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 6, 2005
+.Dt DEVICE_ATTACH 9
+.Os
+.Sh NAME
+.Nm DEVICE_ATTACH
+.Nd attach a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn DEVICE_ATTACH "device_t dev"
+.Sh DESCRIPTION
+Attach a device to the system after the
+.Fn DEVICE_PROBE
+method has been called and has indicated that
+the device exists.
+The
+.Fn DEVICE_ATTACH
+method should initialize the hardware and allocate other
+system resources (such as
+.Xr devfs 5
+entries).
+.Pp
+Devices which implement busses should use this method to probe for
+the existence of devices attached to the bus and add them as
+children.
+If this is combined with the use of
+.Xr bus_generic_attach 9
+the child devices will be automatically probed and attached.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr devfs 5 ,
+.Xr device 9 ,
+.Xr DEVICE_DETACH 9 ,
+.Xr DEVICE_IDENTIFY 9 ,
+.Xr DEVICE_PROBE 9 ,
+.Xr DEVICE_SHUTDOWN 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson Aq dfr@FreeBSD.org .
diff --git a/share/man/man9/DEVICE_DETACH.9 b/share/man/man9/DEVICE_DETACH.9
new file mode 100644
index 0000000..8b4c43c
--- /dev/null
+++ b/share/man/man9/DEVICE_DETACH.9
@@ -0,0 +1,65 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_DETACH 9
+.Os
+.Sh NAME
+.Nm DEVICE_DETACH
+.Nd detach a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn DEVICE_DETACH "device_t dev"
+.Sh DESCRIPTION
+Detach a device.
+This can be called if the user is replacing the
+driver software or if a device is about to be physically removed from
+the system (e.g.\& for
+.Xr pccard 4
+devices).
+.Pp
+The method should deallocate any system resources allocated during the
+.Xr DEVICE_ATTACH 9
+method and reset the hardware to a sane state (i.e., disable interrupts
+etc.)
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr pccard 4 ,
+.Xr device 9 ,
+.Xr DEVICE_ATTACH 9 ,
+.Xr DEVICE_IDENTIFY 9 ,
+.Xr DEVICE_PROBE 9 ,
+.Xr DEVICE_SHUTDOWN 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/DEVICE_IDENTIFY.9 b/share/man/man9/DEVICE_IDENTIFY.9
new file mode 100644
index 0000000..4257407
--- /dev/null
+++ b/share/man/man9/DEVICE_IDENTIFY.9
@@ -0,0 +1,94 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 13, 2004
+.Dt DEVICE_IDENTIFY 9
+.Os
+.Sh NAME
+.Nm DEVICE_IDENTIFY
+.Nd identify a device, register it
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void
+.Fn DEVICE_IDENTIFY "driver_t *driver" "device_t parent"
+.Sh DESCRIPTION
+The identify function for a device is only needed for devices on busses
+that cannot identify their children independently, e.g.\& the ISA bus.
+It is used to recognize the device (usually done by accessing non-ambiguous
+registers in the hardware) and to tell the kernel about it and thus
+creating a new device instance.
+.Pp
+.Xr BUS_ADD_CHILD 9
+is used to register the device as a child of the bus.
+The device's resources (such as IRQ and I/O ports) are registered
+with the kernel by calling
+.Fn bus_set_resource
+for each resource (refer to
+.Xr bus_set_resource 9
+for more information).
+.Pp
+Since the device tree and the device driver tree are disjoint, the
+.Fn DEVICE_IDENTIFY
+routine needs to take this into account.
+If you load and unload your device driver that has the identify
+routine, the child node has the potential for adding the same node
+multiple times unless specific measure are taken to preclude that
+possibility.
+.Sh EXAMPLES
+The following pseudo-code shows an example of a function that
+probes for a piece of hardware and registers it and its resource
+(an I/O port) with the kernel.
+.Bd -literal
+void
+foo_identify(driver_t *driver, device_t parent)
+{
+ device_t child;
+
+ retrieve_device_information;
+ if (devices matches one of your supported devices &&
+ not already in device tree) {
+ child = BUS_ADD_CHILD(parent, 0, "foo", -1);
+ bus_set_resource(child, SYS_RES_IOPORT, 0, FOO_IOADDR, 1);
+ }
+}
+.Ed
+.Sh SEE ALSO
+.Xr BUS_ADD_CHILD 9 ,
+.Xr bus_set_resource 9 ,
+.Xr device 9 ,
+.Xr device_add_child 9 ,
+.Xr DEVICE_ATTACH 9 ,
+.Xr DEVICE_DETACH 9 ,
+.Xr DEVICE_PROBE 9 ,
+.Xr DEVICE_SHUTDOWN 9
+.Sh AUTHORS
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org .
diff --git a/share/man/man9/DEVICE_PROBE.9 b/share/man/man9/DEVICE_PROBE.9
new file mode 100644
index 0000000..b159fd2
--- /dev/null
+++ b/share/man/man9/DEVICE_PROBE.9
@@ -0,0 +1,138 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd March 3, 2008
+.Dt DEVICE_PROBE 9
+.Os
+.Sh NAME
+.Nm DEVICE_PROBE
+.Nd probe for device existence
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn DEVICE_PROBE "device_t dev"
+.Sh DESCRIPTION
+The
+.Fn DEVICE_PROBE
+method should probe to see if the device is present.
+It should return 0 if the device exists,
+.Er ENXIO
+if it cannot be found.
+If some other error happens during the probe (such as a memory
+allocation failure), an appropriate error code should be returned.
+For
+cases where more than one driver matches a device, a priority value can
+be returned.
+In this case, success codes are values less than or equal
+to zero with the highest value representing the best match.
+Failure
+codes are represented by positive values and the regular
+.Ux
+error
+codes should be used for the purpose.
+.Pp
+If a driver returns a success code which is less than zero, it must
+not assume that it will be the same driver which is attached to the
+device.
+In particular, it must not assume that any values stored in
+the softc structure will be available for its attach method and any
+resources allocated during probe must be released and re-allocated
+if the attach method is called.
+In addition it is an absolute requirement that the probe routine have
+no side effects whatsoever.
+The probe routine may be called more than once before the attach
+routine is called.
+.Pp
+If a success code of zero is
+returned, the driver can assume that it will be the one attached, but
+must not hold any resources when the probe routine returns.
+A driver may assume that the softc is preserved when it returns
+a success code of zero.
+.Sh RETURN VALUES
+A value equal to or less than zero indicates success, greater than
+zero indicates an error (errno).
+For values equal to or less than
+zero: zero indicates highest priority, no further probing is done;
+for a value less than zero, the lower the value the lower the
+priority, e.g.\& -100 indicates a lower priority than -50.
+.Pp
+The following values are used by convention to indicate different
+strengths of matching in a probe routine.
+Except as noted, these are just suggested values, and there's nothing
+magical about them.
+.Bl -tag -width BUS_PROBE_NOWILDCARD
+.It BUS_PROBE_SPECIFIC
+The device that cannot be reprobed, and that no
+possible other driver may exist (typically legacy drivers who don't fallow
+all the rules, or special needs drivers).
+.It BUS_PROBE_VENDOR
+The device is supported by a vendor driver.
+This is for source or binary drivers that are not yet integrated into the
+.Fx
+tree.
+Its use in the base OS is prohibited.
+.It BUS_PROBE_DEFAULT
+The device is a normal device matching some plug and play ID. This is
+the normal return value for drivers to use.
+It is intended that nearly all of the drivers in the tree should return
+this value.
+.It BUS_PROBE_LOW_PRIORITY
+The driver is a legacy driver, or an otherwise less desirable driver
+for a given plug and play ID.
+The driver has special requirements like when there are two drivers
+that support overlapping series of hardware devices.
+In this case the one that supports the older part of the line would
+return this value, while the one that supports the newer ones would
+return BUS_PROBE_DEFAULT.
+.It BUS_PROBE_GENERIC
+The driver matches the type of device generally.
+This allows drivers to match all serial ports generally, with sepcialized
+drivers matching particular types of serial ports that need special
+treatment for some reason.
+.It BUS_PROBE_HOOVER
+The driver matches all unclaimed devices on a bus.
+The
+.Xr ugen 5
+device is one example.
+.It BUS_PROBE_NOWILDCARD
+The driver expects its parent to tell it which children to manage
+and no probing is really done.
+The device only matches if its parent bus specifically said to use
+this driver.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr DEVICE_ATTACH 9 ,
+.Xr DEVICE_DETACH 9 ,
+.Xr DEVICE_IDENTIFY 9 ,
+.Xr DEVICE_SHUTDOWN 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/DEVICE_SHUTDOWN.9 b/share/man/man9/DEVICE_SHUTDOWN.9
new file mode 100644
index 0000000..0bf6a8b
--- /dev/null
+++ b/share/man/man9/DEVICE_SHUTDOWN.9
@@ -0,0 +1,57 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 6, 2005
+.Dt DEVICE_SHUTDOWN 9
+.Os
+.Sh NAME
+.Nm DEVICE_SHUTDOWN
+.Nd called during system shutdown
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn DEVICE_SHUTDOWN "device_t dev"
+.Sh DESCRIPTION
+The
+.Fn DEVICE_SHUTDOWN
+method is called during system shutdown to allow the driver to put the
+hardware into a consistent state for rebooting the computer.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr DEVICE_ATTACH 9 ,
+.Xr DEVICE_DETACH 9 ,
+.Xr DEVICE_IDENTIFY 9 ,
+.Xr DEVICE_PROBE 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/DEV_MODULE.9 b/share/man/man9/DEV_MODULE.9
new file mode 100644
index 0000000..13a81c1
--- /dev/null
+++ b/share/man/man9/DEV_MODULE.9
@@ -0,0 +1,105 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd March 11, 2001
+.Dt DEV_MODULE 9
+.Os
+.Sh NAME
+.Nm DEV_MODULE
+.Nd device driver module declaration macro
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kernel.h
+.In sys/module.h
+.In sys/conf.h
+.Fn DEV_MODULE "name" "modeventhand_t evh" "void *arg"
+.Sh DESCRIPTION
+The
+.Fn DEV_MODULE
+macro declares a device driver kernel module.
+It fills in a
+.Vt moduledata_t
+structure and then calls
+.Fn DECLARE_MODULE
+with the correct args, where
+.Fa name
+is the name of the module and
+.Fa evh
+(with its argument
+.Fa arg )
+is the event handler for the module (refer to
+.Xr DECLARE_MODULE 9
+for more information).
+The event handler is supposed to create the device with
+.Fn make_dev
+on load and to destroy it when it is unloaded using
+.Fn destroy_dev .
+.Sh EXAMPLES
+.Bd -literal
+#include <sys/module.h>
+#include <sys/conf.h>
+
+static struct cdevsw foo_devsw = { ... };
+
+static dev_t sdev;
+
+static int
+foo_load(module_t mod, int cmd, void *arg)
+{
+ int err = 0;
+
+ switch (cmd) {
+ case MOD_LOAD:
+ sdev = make_dev(&foo_devsw, 0, UID_ROOT, GID_WHEEL, 0600, "foo");
+ break; /* Success*/
+
+ case MOD_UNLOAD:
+ case MOD_SHUTDOWN:
+ destroy_dev(sdev);
+ break; /* Success*/
+
+ default:
+ err = EINVAL;
+ break;
+ }
+
+ return(err);
+}
+
+DEV_MODULE(foo, foo_load, NULL);
+.Ed
+.Sh SEE ALSO
+.Xr DECLARE_MODULE 9 ,
+.Xr destroy_dev 9 ,
+.Xr make_dev 9 ,
+.Xr module 9
+.Sh AUTHORS
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org .
diff --git a/share/man/man9/DRIVER_MODULE.9 b/share/man/man9/DRIVER_MODULE.9
new file mode 100644
index 0000000..346177a
--- /dev/null
+++ b/share/man/man9/DRIVER_MODULE.9
@@ -0,0 +1,110 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 16, 2000
+.Dt DRIVER_MODULE 9
+.Os
+.Sh NAME
+.Nm DRIVER_MODULE
+.Nd kernel driver declaration macro
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kernel.h
+.In sys/bus.h
+.In sys/module.h
+.Fn DRIVER_MODULE name busname "driver_t driver" "devclass_t devclass" "modeventhand_t evh" "void *arg"
+.Fn MULTI_DRIVER_MODULE name busname "driver_t drivers[]" "devclass_t devclass" "modeventhand_t evh" "void *arg"
+.Sh DESCRIPTION
+The
+.Fn DRIVER_MODULE
+macro declares a kernel driver.
+.Fn DRIVER_MODULE
+expands to the real driver declaration, where the phrase
+.Fa name
+is used as the naming prefix for the driver and its functions.
+Note that it is supplied as plain text, and not a
+.Li char
+or
+.Li char * .
+.Pp
+.Fa busname
+is the parent bus of the driver (PCI, ISA, PPBUS and others), e.g.\&
+.Ql pci ,
+.Ql isa ,
+or
+.Ql ppbus .
+.Pp
+The identifier used in
+.Fn DRIVER_MODULE
+can be different from the driver name.
+Also, the same driver identifier can exist on different busses,
+which is a pretty clean way of making front ends for different cards
+using the same driver on the same or different busses.
+For example, the following is allowed:
+.Pp
+.Fn DRIVER_MODULE foo isa foo_driver foo_devclass NULL NULL ;
+.Pp
+.Fn DRIVER_MODULE foo pci foo_driver foo_devclass NULL NULL ;
+.Pp
+.Fa driver
+is the driver of type
+.Li driver_t ,
+which contains the information about the driver and is therefore one of the
+two most important parts of the call to
+.Fn DRIVER_MODULE .
+.Pp
+The
+.Fa devclass
+argument contains the kernel-internal information about the device,
+which will be used within the kernel driver module.
+.Pp
+The
+.Fa evh
+argument is the event handler which is called when the driver (or module)
+is loaded or unloaded (see
+.Xr module 9 ) .
+.Pp
+The
+.Fa arg
+is unused at this time and should be a
+.Dv NULL
+pointer.
+.Pp
+.Fn MULTI_DRIVER_MODULE
+is a special version of
+.Fn DRIVER_MODULE ,
+which takes a list of drivers instead of a single driver instance.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9 ,
+.Xr module 9
+.Sh AUTHORS
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org .
diff --git a/share/man/man9/EVENTHANDLER.9 b/share/man/man9/EVENTHANDLER.9
new file mode 100644
index 0000000..ed83018
--- /dev/null
+++ b/share/man/man9/EVENTHANDLER.9
@@ -0,0 +1,248 @@
+.\" Copyright (c) 2004 Joseph Koshy
+.\" 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$
+.\"
+.Dd January 7, 2005
+.Dt EVENTHANDLER 9
+.Os
+.Sh NAME
+.Nm EVENTHANDLER
+.Nd kernel event handling functions
+.Sh SYNOPSIS
+.In sys/eventhandler.h
+.Fn EVENTHANDLER_DECLARE name type
+.Fn EVENTHANDLER_INVOKE name ...
+.Ft eventhandler_tag
+.Fn EVENTHANDLER_REGISTER name func arg priority
+.Fn EVENTHANDLER_DEREGISTER name tag
+.Ft eventhandler_tag
+.Fo eventhandler_register
+.Fa "struct eventhandler_list *list"
+.Fa "const char *name"
+.Fa "void *func"
+.Fa "void *arg"
+.Fa "int priority"
+.Fc
+.Ft void
+.Fo eventhandler_deregister
+.Fa "struct eventhandler_list *list"
+.Fa "eventhandler_tag tag"
+.Fc
+.Ft "struct eventhandler_list *"
+.Fn eventhandler_find_list "const char *name"
+.Ft void
+.Fn eventhandler_prune_list "struct eventhandler_list *list"
+.Sh DESCRIPTION
+The
+.Nm
+mechanism provides a way for kernel subsystems to register interest in
+kernel events and have their callback functions invoked when these
+events occur.
+.Pp
+The normal way to use this subsystem is via the macro interface.
+The macros that can be used for working with event handlers and callback
+function lists are:
+.Bl -tag -width indent
+.It Fn EVENTHANDLER_DECLARE
+This macro declares an event handler named by argument
+.Fa name
+with callback functions of type
+.Fa type .
+.It Fn EVENTHANDLER_REGISTER
+This macro registers a callback function
+.Fa func
+with event handler
+.Fa name .
+When invoked, function
+.Fa func
+will be invoked with argument
+.Fa arg
+as its first parameter along with any additional parameters passed in
+via macro
+.Fn EVENTHANDLER_INVOKE
+(see below).
+Callback functions are invoked in order of priority.
+The relative priority of each callback among other callbacks
+associated with an event is given by argument
+.Fa priority ,
+which is an integer ranging from
+.Dv EVENTHANDLER_PRI_FIRST
+(highest priority), to
+.Dv EVENTHANDLER_PRI_LAST
+(lowest priority).
+The symbol
+.Dv EVENTHANDLER_PRI_ANY
+may be used if the handler does not have a specific priority
+associated with it.
+If registration is successful,
+.Fn EVENTHANDLER_REGISTER
+returns a cookie of type
+.Vt eventhandler_tag .
+.It Fn EVENTHANDLER_DEREGISTER
+This macro removes a previously registered callback associated with tag
+.Fa tag
+from the event handler named by argument
+.Fa name .
+.It Fn EVENTHANDLER_INVOKE
+This macro is used to invoke all the callbacks associated with event
+handler
+.Fa name .
+This macro is a variadic one.
+Additional arguments to the macro after the
+.Fa name
+parameter are passed as the second and subsequent arguments to each
+registered callback function.
+.El
+.Pp
+The macros are implemented using the following functions:
+.Bl -tag -width indent
+.It Fn eventhandler_register
+The
+.Fn eventhandler_register
+function is used to register a callback with a given event.
+The arguments expected by this function are:
+.Bl -tag -width ".Fa priority"
+.It Fa list
+A pointer to an existing event handler list, or
+.Dv NULL .
+If
+.Fa list
+is
+.Dv NULL ,
+the event handler list corresponding to argument
+.Fa name
+is used.
+.It Fa name
+The name of the event handler list.
+.It Fa func
+A pointer to a callback function.
+Argument
+.Fa arg
+is passed to the callback function
+.Fa func
+as its first argument when it is invoked.
+.It Fa priority
+The relative priority of this callback among all the callbacks
+registered for this event.
+Valid values are those in the range
+.Dv EVENTHANDLER_PRI_FIRST
+to
+.Dv EVENTHANDLER_PRI_LAST .
+.El
+.Pp
+The
+.Fn eventhandler_register
+function returns a
+.Fa tag
+that can later be used with
+.Fn eventhandler_deregister
+to remove the particular callback function.
+.It Fn eventhandler_deregister
+The
+.Fn eventhandler_deregister
+function removes the callback associated with tag
+.Fa tag
+from the event handler list pointed to by
+.Fa list .
+This function is safe to call from inside an event handler
+callback.
+.It Fn eventhandler_find_list
+The
+.Fn eventhandler_find_list
+function returns a pointer to event handler list structure corresponding
+to event
+.Fa name .
+.It Fn eventhandler_prune_list
+The
+.Fn eventhandler_prune_list
+function removes all deregistered callbacks from the event list
+.Fa list .
+.El
+.Ss Kernel Event Handlers
+The following event handlers are present in the kernel:
+.Bl -tag -width indent
+.It Vt acpi_sleep_event
+Callbacks invoked when the system is being sent to sleep.
+.It Vt acpi_wakeup_event
+Callbacks invoked when the system is being woken up.
+.It Vt dev_clone
+Callbacks invoked when a new entry is created under
+.Pa /dev .
+.It Vt ifaddr_event
+Callbacks invoked when an address is set up on a network interface.
+.It Vt if_clone_event
+Callbacks invoked when an interface is cloned.
+.It Vt ifnet_arrival_event
+Callbacks invoked when a new network interface appears.
+.It Vt ifnet_departure_event
+Callbacks invoked when a network interface is taken down.
+.It Vt power_profile_change
+Callbacks invoked when the power profile of the system changes.
+.It Vt process_exec
+Callbacks invoked when a process performs an
+.Fn exec
+operation.
+.It Vt process_exit
+Callbacks invoked when a process exits.
+.It Vt process_fork
+Callbacks invoked when a process forks a child.
+.It Vt shutdown_pre_sync
+Callbacks invoked at shutdown time, before file systems are synchronized.
+.It Vt shutdown_post_sync
+Callbacks invoked at shutdown time, after all file systems are synchronized.
+.It Vt shutdown_final
+Callbacks invoked just before halting the system.
+.It Vt vm_lowmem
+Callbacks invoked when virtual memory is low.
+.It Vt watchdog_list
+Callbacks invoked when the system watchdog timer is reinitialized.
+.El
+.Sh RETURN VALUES
+The macro
+.Fn EVENTHANDLER_REGISTER
+and function
+.Fn eventhandler_register
+return a cookie of type
+.Vt eventhandler_tag ,
+which may be used in a subsequent call to
+.Fn EVENTHANDLER_DEREGISTER
+or
+.Fn eventhandler_deregister .
+.Pp
+The
+.Fn eventhandler_find_list
+function
+returns a pointer to an event handler list corresponding to parameter
+.Fa name ,
+or
+.Dv NULL
+if no such list was found.
+.Sh HISTORY
+The
+.Nm
+facility first appeared in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Joseph Koshy Aq jkoshy@FreeBSD.org .
diff --git a/share/man/man9/KASSERT.9 b/share/man/man9/KASSERT.9
new file mode 100644
index 0000000..e53e9b6
--- /dev/null
+++ b/share/man/man9/KASSERT.9
@@ -0,0 +1,87 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Jonathan M. Bresler
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 14, 2000
+.Os
+.Dt KASSERT 9
+.Sh NAME
+.Nm KASSERT
+.Nd kernel expression verification macro
+.Sh SYNOPSIS
+.Cd "options INVARIANTS"
+.Pp
+.In sys/param.h
+.In sys/systm.h
+.Fn KASSERT expression msg
+.Sh DESCRIPTION
+In a kernel compiled with
+.Cd "options INVARIANTS" ,
+the
+.Fn KASSERT
+macro tests the given
+.Fa expression
+and if it is false,
+calls the
+.Xr panic 9
+function, terminating the running system.
+.Pp
+In a kernel that does not have
+.Cd "options INVARIANTS" ,
+the
+.Fn KASSERT
+macro is defined to be a no-op.
+The
+second argument is a
+.Xr printf 9
+format string and its arguments,
+enclosed in parentheses.
+.Sh EXAMPLES
+The kernel function
+.Fn vput
+must not be called with a
+.Dv NULL
+pointer.
+.Bd -literal -offset indent
+void
+vput(vp)
+ struct vnode *vp;
+{
+ struct proc *p = curproc;
+ KASSERT(vp != NULL, ("vput: null vp"));
+ ...
+}
+.Ed
+.Sh SEE ALSO
+.Xr config 8 ,
+.Xr panic 9
+.Sh AUTHORS
+This manual page was written by
+.An Jonathan M. Bresler
+.Aq jmb@FreeBSD.org .
diff --git a/share/man/man9/LOCK_PROFILING.9 b/share/man/man9/LOCK_PROFILING.9
new file mode 100644
index 0000000..23aba54
--- /dev/null
+++ b/share/man/man9/LOCK_PROFILING.9
@@ -0,0 +1,203 @@
+.\"-
+.\" Copyright (c) 2004 Dag-Erling Coïdan Smørgrav
+.\" Copyright (c) 2005 Robert N. M. Watson
+.\" Copyright (c) 2006 Kip Macy
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd November 11, 2006
+.Dt LOCK_PROFILING 9
+.Os
+.Sh NAME
+.Nm LOCK_PROFILING
+.Nd kernel lock profiling support
+.Sh SYNOPSIS
+.Cd "options LOCK_PROFILING"
+.Sh DESCRIPTION
+The
+.Dv LOCK_PROFILING
+kernel option adds support for measuring and reporting lock use and
+contention statistics.
+These statistics are collated by
+.Dq acquisition point .
+Acquisition points are
+distinct places in the kernel source code (identified by source file
+name and line number) where a lock is acquired.
+.Pp
+For each acquisition point, the following statistics are accumulated:
+.Bl -bullet
+.It
+The longest time the lock was ever continuously held after being
+acquired at this point.
+.It
+The total time the lock was held after being acquired at this point.
+.It
+The total time that threads have spent waiting to acquire the lock.
+.It
+The total number of non-recursive acquisitions.
+.It
+The total number of times the lock was already held by another thread
+when this point was reached, requiring a spin or a sleep.
+.It
+The total number of times another thread tried to acquire the lock
+while it was held after having been acquired at this point.
+.El
+.Pp
+In addition, the average hold time and average wait time are derived
+from the total hold time
+and total wait time respectively and the number of acquisitions.
+.Pp
+The
+.Dv LOCK_PROFILING
+kernel option also adds the following
+.Xr sysctl 8
+variables to control and monitor the profiling code:
+.Bl -tag -width indent
+.It Va debug.lock.prof.enable
+Enable or disable the lock profiling code.
+This defaults to 0 (off).
+.It Va debug.lock.prof.reset
+Reset the current lock profiling buffers.
+.It Va debug.lock.prof.acquisitions
+The total number of lock acquisitions recorded.
+.It Va debug.lock.prof.records
+The total number of acquisition points recorded.
+Note that only active acquisition points (i.e., points that have been
+reached at least once) are counted.
+.It Va debug.lock.prof.maxrecords
+The maximum number of acquisition points the profiling code is capable
+of monitoring.
+Since it would not be possible to call
+.Xr malloc 9
+from within the lock profiling code, this is a static limit.
+The number of records can be changed with the
+.Dv LPROF_BUFFERS
+kernel option.
+.It Va debug.lock.prof.rejected
+The number of acquisition points that were ignored after the table
+filled up.
+.It Va debug.lock.prof.hashsize
+The size of the hash table used to map acquisition points to
+statistics records.
+The hash size can be changed with the
+.Dv LPROF_HASH_SIZE
+kernel option.
+.It Va debug.lock.prof.collisions
+The number of hash collisions in the acquisition point hash table.
+.It Va debug.lock.prof.stats
+The actual profiling statistics in plain text.
+The columns are as follows, from left to right:
+.Bl -tag -width ".Va cnt_hold"
+.It Va max
+The longest continuous hold time in microseconds.
+.It Va total
+The total (accumulated) hold time in microseconds.
+.It Va wait_total
+The total (accumulated) wait time in microseconds.
+.It Va count
+The total number of acquisitions.
+.It Va avg
+The average hold time in microseconds, derived from the total hold time
+and the number of acquisitions.
+.It Va wait_avg
+The average wait time in microseconds, derived from the total wait time
+and the number of acquisitions.
+.It Va cnt_hold
+The number of times the lock was held and another thread attempted to
+acquire the lock.
+.It Va cnt_lock
+The number of times the lock was already held when this point was
+reached.
+.It Va name
+The name of the acquisition point, derived from the source file name
+and line number, followed by the name of the lock in parentheses.
+.El
+.El
+.Sh SEE ALSO
+.Xr sysctl 8 ,
+.Xr mutex 9
+.Sh HISTORY
+Mutex profiling support appeared in
+.Fx 5.0 .
+Generalized lock profiling support appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm MUTEX_PROFILING
+code was written by
+.An Eivind Eklund Aq eivind@FreeBSD.org ,
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org
+and
+.An Robert Watson Aq rwatson@FreeBSD.org .
+The
+.Nm
+code was written by
+.An Kip Macy Aq kmacy@FreeBSD.org .
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
+.Sh NOTES
+The
+.Dv LOCK_PROFILING
+option increases the size of
+.Vt "struct lock_object" ,
+so a kernel built with that option will not work with modules built
+without it.
+.Pp
+The
+.Dv LOCK_PROFILING
+option also prevents inlining of the mutex code, which can result in a
+fairly severe performance penalty.
+This is, however, not always the case.
+.Dv LOCK_PROFILING
+can introduce a substantial performance overhead that is easily
+monitorable using other profiling tools, so combining profiling tools
+with
+.Dv LOCK_PROFILING
+is not recommended.
+.Pp
+Measurements are made and stored in nanoseconds using
+.Xr nanotime 9 ,
+(on architectures without a synchronized TSC) but are presented in microseconds.
+This should still be sufficient for the locks one would be most
+interested in profiling (those that are held long and/or acquired
+often).
+.Pp
+.Dv LOCK_PROFILING
+should generally not be used in combination with other debugging options, as
+the results may be strongly affected by interactions between the features.
+In particular,
+.Dv LOCK_PROFILING
+will report higher than normal
+.Xr uma 9
+lock contention when run with
+.Dv INVARIANTS
+due to extra locking that occurs when
+.Dv INVARIANTS
+is present; likewise, using it in combination with
+.Dv WITNESS
+will lead to much higher lock hold times and contention in profiling output.
diff --git a/share/man/man9/MD5.9 b/share/man/man9/MD5.9
new file mode 100644
index 0000000..d51a9fc
--- /dev/null
+++ b/share/man/man9/MD5.9
@@ -0,0 +1,79 @@
+.\" $OpenBSD: md5.9,v 1.1 1996/04/17 21:40:14 mickey Exp $
+.\"
+.\" Copyright (c) 1996 Michael Shalayeff
+.\" 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 Michael Shalayeff
+.\" 3. 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$
+.\"
+.Dd April 17, 1996
+.Dt MD5 9
+.Os
+.Sh NAME
+.Nm MD5 ,
+.Nm MD5Init ,
+.Nm MD5Transform
+.Nd message digest routines
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/md5.h
+.Ft void
+.Fn MD5Init "MD5_CTX *buf"
+.Ft void
+.Fn MD5Transform "u_int32_t buf[4]" "const unsigned char block[64]"
+.Sh DESCRIPTION
+The
+.Nm
+module implements the RSA Data Security, Inc.\& MD5 Message-Digest Algorithm
+(MD5).
+It produces 128-bit MD5 Digest of data.
+.Pp
+.Bl -hang -width MD5Transformxxx
+.It Pa MD5Init
+must be called just before
+.Fn MD5Transform
+will be used to produce a digest.
+The
+.Fa buf
+argument is the storage for the digest being produced on subsequent
+calls to the
+.Fn MD5Transform
+routine.
+.It Pa MD5Transform
+is the core of the MD5 algorithm, this alters an existing MD5 hash
+kept in
+.Fa buf
+to reflect the addition of 64 characters
+of new data passed in
+.Fa block
+argument.
+.El
+.Sh COPYRIGHTS
+The code for MD5 transform was taken from Colin Plumb's
+implementation, which has been placed in the public domain.
+The MD5 cryptographic checksum was devised by Ronald Rivest, and is
+documented in RFC 1321, "The MD5 Message Digest Algorithm".
diff --git a/share/man/man9/MODULE_DEPEND.9 b/share/man/man9/MODULE_DEPEND.9
new file mode 100644
index 0000000..c0a8fdd
--- /dev/null
+++ b/share/man/man9/MODULE_DEPEND.9
@@ -0,0 +1,80 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 11, 2005
+.Dt MODULE_DEPEND 9
+.Os
+.Sh NAME
+.Nm MODULE_DEPEND
+.Nd set kernel module dependencies
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/module.h
+.Fn MODULE_DEPEND "name" "moddepend" "int minversion" "int prefversion" "int maxversion"
+.Sh DESCRIPTION
+The
+.Fn MODULE_DEPEND
+macro sets a dependency on another kernel module with name
+.Fa moddepend ,
+which has registered
+its version with
+.Fn MODULE_VERSION .
+.Pp
+The
+.Fn MODULE_DEPEND
+macro provides hints to the kernel
+.Xr loader 8
+and to the kernel linker to ensure that the named dependency is loaded
+prior to the existing module.
+It does not change or dictate the order in which modules are
+initialized at runtime.
+.Pp
+Three versions must be specified for
+.Fa moddepend :
+.Bl -tag -width ".Fa prefversion"
+.It Fa minversion
+The minimum version on which the current module can depend.
+.It Fa maxversion
+The maximum version on which the current module can depend.
+.It Fa prefversion
+The preferred version on which the current module can depend.
+.El
+.Sh EXAMPLES
+.Bd -literal
+MODULE_DEPEND(foo, bar, 1, 3, 4);
+.Ed
+.Sh SEE ALSO
+.Xr DECLARE_MODULE 9 ,
+.Xr module 9 ,
+.Xr MODULE_VERSION 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org .
diff --git a/share/man/man9/MODULE_VERSION.9 b/share/man/man9/MODULE_VERSION.9
new file mode 100644
index 0000000..2f284b8
--- /dev/null
+++ b/share/man/man9/MODULE_VERSION.9
@@ -0,0 +1,59 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd March 11, 2001
+.Dt MODULE_VERSION 9
+.Os
+.Sh NAME
+.Nm MODULE_VERSION
+.Nd set kernel module version
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/module.h
+.Fn MODULE_VERSION "name" "int version"
+.Sh DESCRIPTION
+The
+.Fn MODULE_VERSION
+macro sets the version of the module called
+.Fa name .
+Other kernel modules can then depend on this module (see
+.Xr MODULE_DEPEND 9 ) .
+.Sh EXAMPLES
+.Bd -literal
+MODULE_VERSION(foo, 1);
+.Ed
+.Sh SEE ALSO
+.Xr DECLARE_MODULE 9 ,
+.Xr module 9 ,
+.Xr MODULE_DEPEND 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org .
diff --git a/share/man/man9/Makefile b/share/man/man9/Makefile
new file mode 100644
index 0000000..0b52c4c
--- /dev/null
+++ b/share/man/man9/Makefile
@@ -0,0 +1,1309 @@
+# $FreeBSD$
+
+MAN= accept_filter.9 \
+ accf_data.9 \
+ accf_dns.9 \
+ accf_http.9 \
+ acl.9 \
+ alloc_unr.9 \
+ alq.9 \
+ altq.9 \
+ atomic.9 \
+ bios.9 \
+ boot.9 \
+ bpf.9 \
+ buf.9 \
+ BUF_ISLOCKED.9 \
+ BUF_LOCK.9 \
+ BUF_LOCKFREE.9 \
+ BUF_LOCKINIT.9 \
+ BUF_RECURSED.9 \
+ BUF_TIMELOCK.9 \
+ BUF_UNLOCK.9 \
+ bus_activate_resource.9 \
+ BUS_ADD_CHILD.9 \
+ bus_alloc_resource.9 \
+ bus_child_present.9 \
+ BUS_CONFIG_INTR.9 \
+ bus_dma.9 \
+ bus_generic_attach.9 \
+ bus_generic_detach.9 \
+ bus_generic_print_child.9 \
+ bus_generic_read_ivar.9 \
+ bus_generic_shutdown.9 \
+ BUS_PRINT_CHILD.9 \
+ BUS_READ_IVAR.9 \
+ bus_release_resource.9 \
+ bus_set_resource.9 \
+ BUS_SETUP_INTR.9 \
+ bus_space.9 \
+ byteorder.9 \
+ cd.9 \
+ condvar.9 \
+ config_intrhook.9 \
+ contigmalloc.9 \
+ copy.9 \
+ cr_cansee.9 \
+ critical_enter.9 \
+ cr_seeothergids.9 \
+ cr_seeotheruids.9 \
+ crypto.9 \
+ CTASSERT.9 \
+ DB_COMMAND.9 \
+ DECLARE_GEOM_CLASS.9 \
+ DECLARE_MODULE.9 \
+ DELAY.9 \
+ devclass.9 \
+ devclass_add_driver.9 \
+ devclass_find.9 \
+ devclass_get_device.9 \
+ devclass_get_devices.9 \
+ devclass_get_drivers.9 \
+ devclass_get_maxunit.9 \
+ devclass_get_name.9 \
+ devclass_get_softc.9 \
+ dev_clone.9 \
+ devfs_set_cdevpriv.9 \
+ device.9 \
+ device_add_child.9 \
+ DEVICE_ATTACH.9 \
+ device_delete_child.9 \
+ DEVICE_DETACH.9 \
+ device_enable.9 \
+ device_find_child.9 \
+ device_get_children.9 \
+ device_get_devclass.9 \
+ device_get_driver.9 \
+ device_get_ivars.9 \
+ device_get_name.9 \
+ device_get_parent.9 \
+ device_get_softc.9 \
+ device_get_state.9 \
+ device_get_sysctl.9 \
+ device_get_unit.9 \
+ DEVICE_IDENTIFY.9 \
+ device_printf.9 \
+ DEVICE_PROBE.9 \
+ device_probe_and_attach.9 \
+ device_quiet.9 \
+ device_set_desc.9 \
+ device_set_driver.9 \
+ device_set_flags.9 \
+ DEVICE_SHUTDOWN.9 \
+ DEV_MODULE.9 \
+ devstat.9 \
+ devtoname.9 \
+ disk.9 \
+ domain.9 \
+ driver.9 \
+ DRIVER_MODULE.9 \
+ EVENTHANDLER.9 \
+ extattr.9 \
+ fetch.9 \
+ firmware.9 \
+ g_access.9 \
+ g_attach.9 \
+ g_bio.9 \
+ g_consumer.9 \
+ g_data.9 \
+ get_cyclecount.9 \
+ getnewvnode.9 \
+ g_event.9 \
+ g_geom.9 \
+ g_provider.9 \
+ g_provider_by_name.9 \
+ groupmember.9 \
+ g_wither_geom.9 \
+ hash.9 \
+ hashinit.9 \
+ hexdump.9 \
+ ieee80211.9 \
+ ieee80211_crypto.9 \
+ ieee80211_input.9 \
+ ieee80211_ioctl.9 \
+ ieee80211_node.9 \
+ ieee80211_output.9 \
+ ieee80211_proto.9 \
+ ieee80211_radiotap.9 \
+ ifnet.9 \
+ inittodr.9 \
+ insmntque.9 \
+ intro.9 \
+ ithread.9 \
+ KASSERT.9 \
+ kernacc.9 \
+ kernel_mount.9 \
+ kobj.9 \
+ kproc.9 \
+ kqueue.9 \
+ kthread.9 \
+ ktr.9 \
+ lock.9 \
+ locking.9 \
+ LOCK_PROFILING.9 \
+ mac.9 \
+ make_dev.9 \
+ malloc.9 \
+ mbchain.9 \
+ mbpool.9 \
+ mbuf.9 \
+ mbuf_tags.9 \
+ MD5.9 \
+ mdchain.9 \
+ memguard.9 \
+ microseq.9 \
+ microtime.9 \
+ microuptime.9 \
+ mi_switch.9 \
+ module.9 \
+ MODULE_DEPEND.9 \
+ MODULE_VERSION.9 \
+ mtx_pool.9 \
+ mutex.9 \
+ namei.9 \
+ panic.9 \
+ pbuf.9 \
+ p_candebug.9 \
+ p_cansee.9 \
+ pci.9 \
+ pfil.9 \
+ pfind.9 \
+ pgfind.9 \
+ physio.9 \
+ pmap.9 \
+ pmap_activate.9 \
+ pmap_change_wiring.9 \
+ pmap_clear_modify.9 \
+ pmap_copy.9 \
+ pmap_enter.9 \
+ pmap_extract.9 \
+ pmap_growkernel.9 \
+ pmap_init.9 \
+ pmap_is_modified.9 \
+ pmap_is_prefaultable.9 \
+ pmap_map.9 \
+ pmap_mincore.9 \
+ pmap_object_init_pt.9 \
+ pmap_page_exists_quick.9 \
+ pmap_page_init.9 \
+ pmap_page_protect.9 \
+ pmap_pinit.9 \
+ pmap_qenter.9 \
+ pmap_release.9 \
+ pmap_remove.9 \
+ pmap_resident_count.9 \
+ pmap_zero_page.9 \
+ printf.9 \
+ prison_check.9 \
+ priv.9 \
+ pseudofs.9 \
+ psignal.9 \
+ random.9 \
+ random_harvest.9 \
+ redzone.9 \
+ resettodr.9 \
+ resource_int_value.9 \
+ rijndael.9 \
+ rman.9 \
+ rmlock.9 \
+ rtalloc.9 \
+ rtentry.9 \
+ runqueue.9 \
+ rwlock.9 \
+ sbuf.9 \
+ scheduler.9 \
+ securelevel_gt.9 \
+ selrecord.9 \
+ sema.9 \
+ sf_buf.9 \
+ signal.9 \
+ sleep.9 \
+ sleepqueue.9 \
+ socket.9 \
+ spl.9 \
+ stack.9 \
+ store.9 \
+ style.9 \
+ swi.9 \
+ sx.9 \
+ SYSCALL_MODULE.9 \
+ sysctl.9 \
+ sysctl_add_oid.9 \
+ sysctl_ctx_init.9 \
+ taskqueue.9 \
+ thread_exit.9 \
+ time.9 \
+ timeout.9 \
+ tvtohz.9 \
+ ucred.9 \
+ uidinfo.9 \
+ uio.9 \
+ usbdi.9 \
+ utopia.9 \
+ vaccess.9 \
+ vaccess_acl_posix1e.9 \
+ vcount.9 \
+ vflush.9 \
+ VFS.9 \
+ vfs_busy.9 \
+ VFS_CHECKEXP.9 \
+ vfsconf.9 \
+ VFS_FHTOVP.9 \
+ vfs_getnewfsid.9 \
+ vfs_getopt.9 \
+ vfs_getvfs.9 \
+ VFS_LOCK_GIANT.9 \
+ VFS_MOUNT.9 \
+ vfs_mount.9 \
+ vfs_mountedfrom.9 \
+ VFS_QUOTACTL.9 \
+ VFS_ROOT.9 \
+ vfs_rootmountalloc.9 \
+ VFS_SET.9 \
+ VFS_STATFS.9 \
+ vfs_suser.9 \
+ VFS_SYNC.9 \
+ vfs_timestamp.9 \
+ vfs_unbusy.9 \
+ VFS_UNMOUNT.9 \
+ vfs_unmountall.9 \
+ VFS_VGET.9 \
+ vget.9 \
+ vgone.9 \
+ vhold.9 \
+ vinvalbuf.9 \
+ vm_fault_prefault.9 \
+ vm_map.9 \
+ vm_map_check_protection.9 \
+ vm_map_clean.9 \
+ vm_map_create.9 \
+ vm_map_delete.9 \
+ vm_map_entry_resize_free.9 \
+ vm_map_find.9 \
+ vm_map_findspace.9 \
+ vm_map_inherit.9 \
+ vm_map_init.9 \
+ vm_map_insert.9 \
+ vm_map_lock.9 \
+ vm_map_lookup.9 \
+ vm_map_madvise.9 \
+ vm_map_max.9 \
+ vm_map_protect.9 \
+ vm_map_remove.9 \
+ vm_map_simplify_entry.9 \
+ vm_map_stack.9 \
+ vm_map_submap.9 \
+ vm_map_wire.9 \
+ vm_page_alloc.9 \
+ vm_page_bits.9 \
+ vm_page_cache.9 \
+ vm_page_copy.9 \
+ vm_page_deactivate.9 \
+ vm_page_dontneed.9 \
+ vm_page_flag.9 \
+ vm_page_free.9 \
+ vm_page_grab.9 \
+ vm_page_hold.9 \
+ vm_page_insert.9 \
+ vm_page_io.9 \
+ vm_page_lookup.9 \
+ vm_page_protect.9 \
+ vm_page_rename.9 \
+ vm_page_sleep_busy.9 \
+ vm_page_wakeup.9 \
+ vm_page_wire.9 \
+ vm_page_zero_fill.9 \
+ vm_set_page_size.9 \
+ vn_fullpath.9 \
+ vn_isdisk.9 \
+ vnode.9 \
+ VOP_ACCESS.9 \
+ VOP_ACLCHECK.9 \
+ VOP_ADVLOCK.9 \
+ VOP_ATTRIB.9 \
+ VOP_BWRITE.9 \
+ VOP_CREATE.9 \
+ VOP_FSYNC.9 \
+ VOP_GETACL.9 \
+ VOP_GETEXTATTR.9 \
+ VOP_GETPAGES.9 \
+ VOP_GETVOBJECT.9 \
+ VOP_INACTIVE.9 \
+ VOP_IOCTL.9 \
+ VOP_LEASE.9 \
+ VOP_LINK.9 \
+ VOP_LISTEXTATTR.9 \
+ VOP_LOCK.9 \
+ VOP_LOOKUP.9 \
+ VOP_OPENCLOSE.9 \
+ VOP_PATHCONF.9 \
+ VOP_PRINT.9 \
+ VOP_RDWR.9 \
+ VOP_READDIR.9 \
+ VOP_READLINK.9 \
+ VOP_REALLOCBLKS.9 \
+ VOP_REMOVE.9 \
+ VOP_RENAME.9 \
+ VOP_REVOKE.9 \
+ VOP_SETACL.9 \
+ VOP_SETEXTATTR.9 \
+ VOP_STRATEGY.9 \
+ VOP_VPTOCNP.9 \
+ VOP_VPTOFH.9 \
+ vput.9 \
+ vref.9 \
+ vrefcnt.9 \
+ vrele.9 \
+ vslock.9 \
+ watchdog.9 \
+ zero_copy.9 \
+ zone.9
+
+MLINKS= alloc_unr.9 alloc_unrl.9 \
+ alloc_unr.9 delete_unrhdr.9 \
+ alloc_unr.9 free_unr.9 \
+ alloc_unr.9 new_unrhdr.9
+MLINKS+=alq.9 ALQ.9 \
+ alq.9 alq_close.9 \
+ alq.9 alq_flush.9 \
+ alq.9 alq_get.9 \
+ alq.9 alq_open.9 \
+ alq.9 alq_post.9 \
+ alq.9 alq_write.9
+MLINKS+=altq.9 ALTQ.9
+MLINKS+=atomic.9 atomic_add.9 \
+ atomic.9 atomic_clear.9 \
+ atomic.9 atomic_cmpset.9 \
+ atomic.9 atomic_fetchadd.9 \
+ atomic.9 atomic_load.9 \
+ atomic.9 atomic_readandclear.9 \
+ atomic.9 atomic_set.9 \
+ atomic.9 atomic_store.9 \
+ atomic.9 atomic_subtract.9
+MLINKS+=bpf.9 bpf_filter.9 \
+ bpf.9 bpf_mtap.9 \
+ bpf.9 bpf_mtap2.9 \
+ bpf.9 bpf_tap.9 \
+ bpf.9 bpf_validate.9 \
+ bpf.9 bpfattach.9 \
+ bpf.9 bpfattach2.9 \
+ bpf.9 bpfdetach.9
+MLINKS+=buf.9 bp.9
+MLINKS+=bus_activate_resource.9 bus_deactivate_resource.9
+MLINKS+=bus_alloc_resource.9 bus_alloc_resource_any.9
+MLINKS+=bus_dma.9 busdma.9 \
+ bus_dma.9 bus_dmamap_create.9 \
+ bus_dma.9 bus_dmamap_destroy.9 \
+ bus_dma.9 bus_dmamap_load.9 \
+ bus_dma.9 bus_dmamap_load_mbuf.9 \
+ bus_dma.9 bus_dmamap_load_mbuf_sg.9 \
+ bus_dma.9 bus_dmamap_load_uio.9 \
+ bus_dma.9 bus_dmamap_sync.9 \
+ bus_dma.9 bus_dmamap_unload.9 \
+ bus_dma.9 bus_dmamem_alloc.9 \
+ bus_dma.9 bus_dmamem_free.9 \
+ bus_dma.9 bus_dma_tag_create.9 \
+ bus_dma.9 bus_dma_tag_destroy.9
+MLINKS+=bus_generic_read_ivar.9 bus_generic_write_ivar.9
+MLINKS+=BUS_READ_IVAR.9 BUS_WRITE_IVAR.9
+MLINKS+=BUS_SETUP_INTR.9 bus_setup_intr.9 \
+ BUS_SETUP_INTR.9 BUS_TEARDOWN_INTR.9 \
+ BUS_SETUP_INTR.9 bus_teardown_intr.9
+MLINKS+=bus_space.9 bus_space_barrier.9 \
+ bus_space.9 bus_space_copy_region_1.9 \
+ bus_space.9 bus_space_copy_region_2.9 \
+ bus_space.9 bus_space_copy_region_4.9 \
+ bus_space.9 bus_space_copy_region_8.9 \
+ bus_space.9 bus_space_copy_region_stream_1.9 \
+ bus_space.9 bus_space_copy_region_stream_2.9 \
+ bus_space.9 bus_space_copy_region_stream_4.9 \
+ bus_space.9 bus_space_copy_region_stream_8.9 \
+ bus_space.9 bus_space_free.9 \
+ bus_space.9 bus_space_map.9 \
+ bus_space.9 bus_space_read_1.9 \
+ bus_space.9 bus_space_read_2.9 \
+ bus_space.9 bus_space_read_4.9 \
+ bus_space.9 bus_space_read_8.9 \
+ bus_space.9 bus_space_read_multi_1.9 \
+ bus_space.9 bus_space_read_multi_2.9 \
+ bus_space.9 bus_space_read_multi_4.9 \
+ bus_space.9 bus_space_read_multi_8.9 \
+ bus_space.9 bus_space_read_multi_stream_1.9 \
+ bus_space.9 bus_space_read_multi_stream_2.9 \
+ bus_space.9 bus_space_read_multi_stream_4.9 \
+ bus_space.9 bus_space_read_multi_stream_8.9 \
+ bus_space.9 bus_space_read_region_1.9 \
+ bus_space.9 bus_space_read_region_2.9 \
+ bus_space.9 bus_space_read_region_4.9 \
+ bus_space.9 bus_space_read_region_8.9 \
+ bus_space.9 bus_space_read_region_stream_1.9 \
+ bus_space.9 bus_space_read_region_stream_2.9 \
+ bus_space.9 bus_space_read_region_stream_4.9 \
+ bus_space.9 bus_space_read_region_stream_8.9 \
+ bus_space.9 bus_space_read_stream_1.9 \
+ bus_space.9 bus_space_read_stream_2.9 \
+ bus_space.9 bus_space_read_stream_4.9 \
+ bus_space.9 bus_space_read_stream_8.9 \
+ bus_space.9 bus_space_set_multi_1.9 \
+ bus_space.9 bus_space_set_multi_2.9 \
+ bus_space.9 bus_space_set_multi_4.9 \
+ bus_space.9 bus_space_set_multi_8.9 \
+ bus_space.9 bus_space_set_multi_stream_1.9 \
+ bus_space.9 bus_space_set_multi_stream_2.9 \
+ bus_space.9 bus_space_set_multi_stream_4.9 \
+ bus_space.9 bus_space_set_multi_stream_8.9 \
+ bus_space.9 bus_space_set_region_1.9 \
+ bus_space.9 bus_space_set_region_2.9 \
+ bus_space.9 bus_space_set_region_4.9 \
+ bus_space.9 bus_space_set_region_8.9 \
+ bus_space.9 bus_space_set_region_stream_1.9 \
+ bus_space.9 bus_space_set_region_stream_2.9 \
+ bus_space.9 bus_space_set_region_stream_4.9 \
+ bus_space.9 bus_space_set_region_stream_8.9 \
+ bus_space.9 bus_space_subregion.9 \
+ bus_space.9 bus_space_unmap.9 \
+ bus_space.9 bus_space_write_1.9 \
+ bus_space.9 bus_space_write_2.9 \
+ bus_space.9 bus_space_write_4.9 \
+ bus_space.9 bus_space_write_8.9 \
+ bus_space.9 bus_space_write_multi_1.9 \
+ bus_space.9 bus_space_write_multi_2.9 \
+ bus_space.9 bus_space_write_multi_4.9 \
+ bus_space.9 bus_space_write_multi_8.9 \
+ bus_space.9 bus_space_write_multi_stream_1.9 \
+ bus_space.9 bus_space_write_multi_stream_2.9 \
+ bus_space.9 bus_space_write_multi_stream_4.9 \
+ bus_space.9 bus_space_write_multi_stream_8.9 \
+ bus_space.9 bus_space_write_region_1.9 \
+ bus_space.9 bus_space_write_region_2.9 \
+ bus_space.9 bus_space_write_region_4.9 \
+ bus_space.9 bus_space_write_region_8.9 \
+ bus_space.9 bus_space_write_region_stream_1.9 \
+ bus_space.9 bus_space_write_region_stream_2.9 \
+ bus_space.9 bus_space_write_region_stream_4.9 \
+ bus_space.9 bus_space_write_region_stream_8.9 \
+ bus_space.9 bus_space_write_stream_1.9 \
+ bus_space.9 bus_space_write_stream_2.9 \
+ bus_space.9 bus_space_write_stream_4.9 \
+ bus_space.9 bus_space_write_stream_8.9
+MLINKS+=byteorder.9 be16dec.9 \
+ byteorder.9 be16enc.9 \
+ byteorder.9 be16toh.9 \
+ byteorder.9 be32dec.9 \
+ byteorder.9 be32enc.9 \
+ byteorder.9 be32toh.9 \
+ byteorder.9 be64dec.9 \
+ byteorder.9 be64enc.9 \
+ byteorder.9 be64toh.9 \
+ byteorder.9 bswap16.9 \
+ byteorder.9 bswap32.9 \
+ byteorder.9 bswap64.9 \
+ byteorder.9 htobe16.9 \
+ byteorder.9 htobe32.9 \
+ byteorder.9 htobe64.9 \
+ byteorder.9 htole16.9 \
+ byteorder.9 htole32.9 \
+ byteorder.9 htole64.9 \
+ byteorder.9 le16dec.9 \
+ byteorder.9 le16enc.9 \
+ byteorder.9 le16toh.9 \
+ byteorder.9 le32dec.9 \
+ byteorder.9 le32enc.9 \
+ byteorder.9 le32toh.9 \
+ byteorder.9 le64dec.9 \
+ byteorder.9 le64enc.9 \
+ byteorder.9 le64toh.9
+MLINKS+=condvar.9 cv_broadcast.9 \
+ condvar.9 cv_broadcastpri.9 \
+ condvar.9 cv_destroy.9 \
+ condvar.9 cv_init.9 \
+ condvar.9 cv_signal.9 \
+ condvar.9 cv_timedwait.9 \
+ condvar.9 cv_timedwait_sig.9 \
+ condvar.9 cv_wait.9 \
+ condvar.9 cv_wait_sig.9 \
+ condvar.9 cv_wait_unlock.9 \
+ condvar.9 cv_wmesg.9
+MLINKS+=config_intrhook.9 config_intrhook_disestablish.9 \
+ config_intrhook.9 config_intrhook_establish.9
+MLINKS+=contigmalloc.9 contigfree.9
+MLINKS+=copy.9 copyin.9 \
+ copy.9 copyinstr.9 \
+ copy.9 copyout.9 \
+ copy.9 copystr.9
+MLINKS+=critical_enter.9 critical.9 \
+ critical_enter.9 critical_exit.9
+MLINKS+=crypto.9 crypto_dispatch.9 \
+ crypto.9 crypto_done.9 \
+ crypto.9 crypto_freereq.9 \
+ crypto.9 crypto_freesession.9 \
+ crypto.9 crypto_get_driverid.9 \
+ crypto.9 crypto_getreq.9 \
+ crypto.9 crypto_kdispatch.9 \
+ crypto.9 crypto_kdone.9 \
+ crypto.9 crypto_kregister.9 \
+ crypto.9 crypto_newsession.9 \
+ crypto.9 crypto_register.9 \
+ crypto.9 crypto_unblock.9 \
+ crypto.9 crypto_unregister.9 \
+ crypto.9 crypto_unregister_all.9
+MLINKS+=DB_COMMAND.9 DB_SHOW_COMMAND.9 \
+ DB_COMMAND.9 DB_SHOW_ALL_COMMAND.9
+MLINKS+=devclass_add_driver.9 devclass_delete_driver.9 \
+ devclass_add_driver.9 devclass_find_driver.9
+MLINKS+=dev_clone.9 drain_dev_clone_events.9
+MLINKS+=devfs_set_cdevpriv.9 devfs_get_cdevpriv.9 \
+ devfs_set_cdevpriv.9 devfs_clear_cdevpriv.9
+MLINKS+=device_add_child.9 device_add_child_ordered.9
+MLINKS+=device_enable.9 device_disable.9 \
+ device_enable.9 device_is_enabled.9
+MLINKS+=device_get_ivars.9 device_set_ivars.9
+MLINKS+=device_get_name.9 device_get_nameunit.9
+MLINKS+=device_get_state.9 device_busy.9 \
+ device_get_state.9 device_is_alive.9 \
+ device_get_state.9 device_is_attached.9 \
+ device_get_state.9 device_unbusy.9
+MLINKS+=device_get_sysctl.9 device_get_sysctl_ctx.9 \
+ device_get_sysctl.9 device_get_sysctl_tree.9
+MLINKS+=device_quiet.9 device_is_quiet.9 \
+ device_quiet.9 device_verbose.9
+MLINKS+=device_set_desc.9 device_get_desc.9 \
+ device_set_desc.9 device_set_desc_copy.9
+MLINKS+=device_set_flags.9 device_get_flags.9
+MLINKS+=devstat.9 devicestat.9 \
+ devstat.9 devstat_add_entry.9 \
+ devstat.9 devstat_end_transaction.9 \
+ devstat.9 devstat_remove_entry.9 \
+ devstat.9 devstat_start_transaction.9
+MLINKS+=disk.9 disk_create.9 \
+ disk.9 disk_destroy.9
+MLINKS+=domain.9 DOMAIN_SET.9 \
+ domain.9 net_add_domain.9 \
+ domain.9 pfctlinput.9 \
+ domain.9 pfctlinput2.9 \
+ domain.9 pffindproto.9 \
+ domain.9 pffindtype.9
+MLINKS+=DRIVER_MODULE.9 MULTI_DRIVER_MODULE.9
+MLINKS+=EVENTHANDLER.9 EVENTHANDLER_DECLARE.9 \
+ EVENTHANDLER.9 EVENTHANDLER_DEREGISTER.9 \
+ EVENTHANDLER.9 eventhandler_deregister.9 \
+ EVENTHANDLER.9 eventhandler_find_list.9 \
+ EVENTHANDLER.9 EVENTHANDLER_INVOKE.9 \
+ EVENTHANDLER.9 eventhandler_prune_list.9 \
+ EVENTHANDLER.9 EVENTHANDLER_REGISTER.9 \
+ EVENTHANDLER.9 eventhandler_register.9
+MLINKS+=fetch.9 fubyte.9 \
+ fetch.9 fuswintr.9 \
+ fetch.9 fusword.9 \
+ fetch.9 fuword.9
+MLINKS+=g_attach.9 g_detach.9
+MLINKS+=g_bio.9 g_clone_bio.9 \
+ g_bio.9 g_destroy_bio.9 \
+ g_bio.9 g_new_bio.9 \
+ g_bio.9 g_print_bio.9
+MLINKS+=g_consumer.9 g_destroy_consumer.9 \
+ g_consumer.9 g_new_consumer.9
+MLINKS+=g_data.9 g_read_data.9 \
+ g_data.9 g_write_data.9
+MLINKS+=g_event.9 g_cancel_event.9 \
+ g_event.9 g_post_event.9 \
+ g_event.9 g_waitfor_event.9
+MLINKS+=g_geom.9 g_destroy_geom.9 \
+ g_geom.9 g_new_geomf.9
+MLINKS+=g_provider.9 g_destroy_provider.9 \
+ g_provider.9 g_error_provider.9 \
+ g_provider.9 g_new_providerf.9
+MLINKS+=hash.9 hash32.9 \
+ hash.9 hash32_buf.9 \
+ hash.9 hash32_str.9 \
+ hash.9 hash32_stre.9 \
+ hash.9 hash32_strn.9 \
+ hash.9 hash32_strne.9
+MLINKS+=hashinit.9 hashdestroy.9 \
+ hashinit.9 hashinit_flags.9 \
+ hashinit.9 phashinit.9
+MLINKS+=ieee80211.9 ieee80211_attach.9 \
+ ieee80211.9 ieee80211_chan2ieee.9 \
+ ieee80211.9 ieee80211_chan2mode.9 \
+ ieee80211.9 ieee80211_ieee2mhz.9 \
+ ieee80211.9 ieee80211_ifattach.9 \
+ ieee80211.9 ieee80211_ifdetach.9 \
+ ieee80211.9 ieee80211_media2rate.9 \
+ ieee80211.9 ieee80211_media_change.9 \
+ ieee80211.9 ieee80211_media_init.9 \
+ ieee80211.9 ieee80211_media_status.9 \
+ ieee80211.9 ieee80211_mhz2ieee.9 \
+ ieee80211.9 ieee80211_rate2media.9 \
+ ieee80211.9 ieee80211_setmode.9 \
+ ieee80211.9 ieee80211_watchdog.9
+MLINKS+=ieee80211_crypto.9 ieee80211_crypto_attach.9 \
+ ieee80211_crypto.9 ieee80211_crypto_detach.9 \
+ ieee80211_crypto.9 ieee80211_wep_crypt.9
+MLINKS+=ieee80211_input.9 ieee80211_decap.9 \
+ ieee80211_input.9 ieee80211_recv_mgmt.9
+MLINKS+=ieee80211_ioctl.9 ieee80211_cfgget.9 \
+ ieee80211_ioctl.9 ieee80211_cfgset.9
+MLINKS+=ieee80211_node.9 ieee80211_alloc_node.9 \
+ ieee80211_node.9 ieee80211_begin_scan.9 \
+ ieee80211_node.9 ieee80211_create_ibss.9 \
+ ieee80211_node.9 ieee80211_dup_bss.9 \
+ ieee80211_node.9 ieee80211_end_scan.9 \
+ ieee80211_node.9 ieee80211_find_node.9 \
+ ieee80211_node.9 ieee80211_free_allnodes.9 \
+ ieee80211_node.9 ieee80211_free_node.9 \
+ ieee80211_node.9 ieee80211_iterate_nodes.9 \
+ ieee80211_node.9 ieee80211_lookup_node.9 \
+ ieee80211_node.9 ieee80211_next_scan.9 \
+ ieee80211_node.9 ieee80211_node_attach.9 \
+ ieee80211_node.9 ieee80211_node_detach.9 \
+ ieee80211_node.9 ieee80211_node_lateattach.9 \
+ ieee80211_node.9 ieee80211_timeout_nodes.9
+MLINKS+=ieee80211_output.9 ieee80211_add_rates.9 \
+ ieee80211_output.9 ieee80211_add_xrates.9 \
+ ieee80211_output.9 ieee80211_encap.9 \
+ ieee80211_output.9 ieee80211_send_mgmt.9
+MLINKS+=ieee80211_proto.9 ieee80211_dump_pkt.9 \
+ ieee80211_proto.9 ieee80211_fix_rate.9 \
+ ieee80211_proto.9 ieee80211_print_essid.9 \
+ ieee80211_proto.9 ieee80211_proto_attach.9 \
+ ieee80211_proto.9 ieee80211_proto_detach.9
+MLINKS+=ieee80211_radiotap.9 radiotap.9
+MLINKS+=ifnet.9 ifaddr.9 \
+ ifnet.9 if_data.9 \
+ ifnet.9 ifqueue.9
+MLINKS+=ithread.9 ithread_add_handler.9 \
+ ithread.9 ithread_create.9 \
+ ithread.9 ithread_destroy.9 \
+ ithread.9 ithread_priority.9 \
+ ithread.9 ithread_remove_handler.9 \
+ ithread.9 ithread_schedule.9
+MLINKS+=kernacc.9 useracc.9
+MLINKS+=kernel_mount.9 free_mntarg.9 \
+ kernel_mount.9 kernel_vmount.9 \
+ kernel_mount.9 mount_arg.9 \
+ kernel_mount.9 mount_argb.9 \
+ kernel_mount.9 mount_argf.9 \
+ kernel_mount.9 mount_argsu.9
+MLINKS+=kobj.9 DEFINE_CLASS.9 \
+ kobj.9 kobj_class_compile.9 \
+ kobj.9 kobj_class_compile_static.9 \
+ kobj.9 kobj_class_free.9 \
+ kobj.9 kobj_create.9 \
+ kobj.9 kobj_delete.9 \
+ kobj.9 kobj_init.9
+MLINKS+=kproc.9 kproc_create.9 \
+ kproc.9 kproc_exit.9 \
+ kproc.9 kproc_resume,.9 \
+ kproc.9 kproc_shutdown.9 \
+ kproc.9 kproc_start.9 \
+ kproc.9 kproc_suspend.9 \
+ kproc.9 kproc_suspend_check.9
+MLINKS+=kqueue.9 knlist_add.9 \
+ kqueue.9 knlist_clear.9 \
+ kqueue.9 knlist_delete.9 \
+ kqueue.9 knlist_destroy.9 \
+ kqueue.9 knlist_empty.9 \
+ kqueue.9 knlist_init.9 \
+ kqueue.9 knlist_remove.9 \
+ kqueue.9 knlist_remove_inevent.9 \
+ kqueue.9 knote_fdclose.9 \
+ kqueue.9 KNOTE_LOCKED.9 \
+ kqueue.9 KNOTE_UNLOCKED.9 \
+ kqueue.9 kqfd_register.9 \
+ kqueue.9 kqueue_add_filteropts.9 \
+ kqueue.9 kqueue_del_filteropts.9
+MLINKS+=kthread.9 kthread_add.9 \
+ kthread.9 kthread_exit.9 \
+ kthread.9 kthread_resume.9 \
+ kthread.9 kthread_shutdown.9 \
+ kthread.9 kthread_start.9 \
+ kthread.9 kthread_suspend.9 \
+ kthread.9 kthread_suspend_check.9
+MLINKS+=ktr.9 CTR0.9 \
+ ktr.9 CTR1.9 \
+ ktr.9 CTR2.9 \
+ ktr.9 CTR3.9 \
+ ktr.9 CTR4.9 \
+ ktr.9 CTR5.9
+MLINKS+=lock.9 lockdestroy.9 \
+ lock.9 lockinit.9 \
+ lock.9 lockmgr.9 \
+ lock.9 lockmgr_args.9 \
+ lock.9 lockmgr_args_rw.9 \
+ lock.9 lockmgr_assert.9 \
+ lock.9 lockmgr_disown.9 \
+ lock.9 lockmgr_printinfo.9 \
+ lock.9 lockmgr_recursed.9 \
+ lock.9 lockmgr_rw.9 \
+ lock.9 lockmgr_waiters.9 \
+ lock.9 lockstatus.9
+MLINKS+=LOCK_PROFILING.9 MUTEX_PROFILING.9
+MLINKS+=make_dev.9 destroy_dev.9 \
+ make_dev.9 dev_depends.9 \
+ make_dev.9 make_dev_alias.9
+MLINKS+=malloc.9 free.9 \
+ malloc.9 MALLOC_DECLARE.9 \
+ malloc.9 MALLOC_DEFINE.9 \
+ malloc.9 realloc.9 \
+ malloc.9 reallocf.9
+MLINKS+=mbchain.9 mb_detach.9 \
+ mbchain.9 mb_done.9 \
+ mbchain.9 mb_fixhdr.9 \
+ mbchain.9 mb_init.9 \
+ mbchain.9 mb_initm.9 \
+ mbchain.9 mb_put_int64be.9 \
+ mbchain.9 mb_put_int64le.9 \
+ mbchain.9 mb_put_mbuf.9 \
+ mbchain.9 mb_put_mem.9 \
+ mbchain.9 mb_put_uint16be.9 \
+ mbchain.9 mb_put_uint16le.9 \
+ mbchain.9 mb_put_uint32be.9 \
+ mbchain.9 mb_put_uint32le.9 \
+ mbchain.9 mb_put_uint8.9 \
+ mbchain.9 mb_put_uio.9 \
+ mbchain.9 mb_reserve.9
+MLINKS+=mbpool.9 mbp_alloc.9 \
+ mbpool.9 mbp_card_free.9 \
+ mbpool.9 mbp_count.9 \
+ mbpool.9 mbp_create.9 \
+ mbpool.9 mbp_destroy.9 \
+ mbpool.9 mbp_ext_free.9 \
+ mbpool.9 mbp_free.9 \
+ mbpool.9 mbp_get.9 \
+ mbpool.9 mbp_get_keep.9 \
+ mbpool.9 mbp_sync.9
+MLINKS+=\
+ mbuf.9 m_adj.9 \
+ mbuf.9 M_ALIGN.9 \
+ mbuf.9 m_apply.9 \
+ mbuf.9 m_cat.9 \
+ mbuf.9 MCHTYPE.9 \
+ mbuf.9 MCLGET.9 \
+ mbuf.9 m_copyback.9 \
+ mbuf.9 m_copydata.9 \
+ mbuf.9 m_copym.9 \
+ mbuf.9 m_copypacket.9 \
+ mbuf.9 m_defrag.9 \
+ mbuf.9 m_devget.9 \
+ mbuf.9 m_dup.9 \
+ mbuf.9 m_dup_pkthdr.9 \
+ mbuf.9 MEXTADD.9 \
+ mbuf.9 MEXT_ADD_REF.9 \
+ mbuf.9 MEXTFREE.9 \
+ mbuf.9 MEXT_IS_REF.9 \
+ mbuf.9 MEXT_REM_REF.9 \
+ mbuf.9 m_fixhdr.9 \
+ mbuf.9 MFREE.9 \
+ mbuf.9 m_free.9 \
+ mbuf.9 m_freem.9 \
+ mbuf.9 MGET.9 \
+ mbuf.9 m_get.9 \
+ mbuf.9 m_getcl.9 \
+ mbuf.9 m_getclr.9 \
+ mbuf.9 MGETHDR.9 \
+ mbuf.9 m_gethdr.9 \
+ mbuf.9 m_getm.9 \
+ mbuf.9 m_getptr.9 \
+ mbuf.9 MH_ALIGN.9 \
+ mbuf.9 M_LEADINGSPACE.9 \
+ mbuf.9 m_length.9 \
+ mbuf.9 M_MOVE_PKTHDR.9 \
+ mbuf.9 m_move_pkthdr.9 \
+ mbuf.9 M_PREPEND.9 \
+ mbuf.9 m_prepend.9 \
+ mbuf.9 m_pullup.9 \
+ mbuf.9 m_split.9 \
+ mbuf.9 mtod.9 \
+ mbuf.9 M_TRAILINGSPACE.9 \
+ mbuf.9 M_WRITABLE.9
+MLINKS+=MD5.9 MD5Init.9 \
+ MD5.9 MD5Transform.9
+MLINKS+=mdchain.9 md_append_record.9 \
+ mdchain.9 md_done.9 \
+ mdchain.9 md_get_int64.9 \
+ mdchain.9 md_get_int64be.9 \
+ mdchain.9 md_get_int64le.9 \
+ mdchain.9 md_get_mbuf.9 \
+ mdchain.9 md_get_mem.9 \
+ mdchain.9 md_get_uint16.9 \
+ mdchain.9 md_get_uint16be.9 \
+ mdchain.9 md_get_uint16le.9 \
+ mdchain.9 md_get_uint32.9 \
+ mdchain.9 md_get_uint32be.9 \
+ mdchain.9 md_get_uint32le.9 \
+ mdchain.9 md_get_uint8.9 \
+ mdchain.9 md_get_uio.9 \
+ mdchain.9 md_initm.9 \
+ mdchain.9 md_next_record.9
+MLINKS+=microtime.9 bintime.9 \
+ microtime.9 getbintime.9 \
+ microtime.9 getmicrotime.9 \
+ microtime.9 getnanotime.9 \
+ microtime.9 nanotime.9
+MLINKS+=microuptime.9 binuptime.9 \
+ microuptime.9 getbinuptime.9 \
+ microuptime.9 getmicrouptime.9 \
+ microuptime.9 getnanouptime.9 \
+ microuptime.9 nanouptime.9
+MLINKS+=mi_switch.9 cpu_switch.9 \
+ mi_switch.9 cpu_throw.9
+MLINKS+=mtx_pool.9 mtx_pool_alloc.9 \
+ mtx_pool.9 mtx_pool_create.9 \
+ mtx_pool.9 mtx_pool_destroy.9 \
+ mtx_pool.9 mtx_pool_find.9 \
+ mtx_pool.9 mtx_pool_lock.9 \
+ mtx_pool.9 mtx_pool_lock_spin.9 \
+ mtx_pool.9 mtx_pool_unlock.9 \
+ mtx_pool.9 mtx_pool_unlock_spin.9
+MLINKS+=mutex.9 mtx_assert.9 \
+ mutex.9 mtx_destroy.9 \
+ mutex.9 mtx_init.9 \
+ mutex.9 mtx_initialized.9 \
+ mutex.9 mtx_lock.9 \
+ mutex.9 mtx_lock_flags.9 \
+ mutex.9 mtx_lock_spin.9 \
+ mutex.9 mtx_lock_spin_flags.9 \
+ mutex.9 mtx_owned.9 \
+ mutex.9 mtx_recursed.9 \
+ mutex.9 mtx_sleep.9 \
+ mutex.9 MTX_SYSINIT.9 \
+ mutex.9 mtx_trylock.9 \
+ mutex.9 mtx_trylock_flags.9 \
+ mutex.9 mtx_unlock.9 \
+ mutex.9 mtx_unlock_flags.9 \
+ mutex.9 mtx_unlock_spin.9 \
+ mutex.9 mtx_unlock_spin_flags.9
+MLINKS+=namei.9 NDFREE.9 \
+ namei.9 NDINIT.9
+MLINKS+=pbuf.9 getpbuf.9 \
+ pbuf.9 relpbuf.9 \
+ pbuf.9 trypbuf.9
+MLINKS+=pci.9 pci_disable_busmaster.9 \
+ pci.9 pci_disable_io.9 \
+ pci.9 pci_enable_busmaster.9 \
+ pci.9 pci_enable_io.9 \
+ pci.9 pci_find_bsf.9 \
+ pci.9 pci_find_dbsf.9 \
+ pci.9 pci_find_device.9 \
+ pci.9 pci_get_powerstate.9 \
+ pci.9 pci_read_config.9 \
+ pci.9 pci_set_powerstate.9 \
+ pci.9 pci_write_config.9
+MLINKS+=pfil.9 pfil_add_hook.9 \
+ pfil.9 pfil_hook_get.9 \
+ pfil.9 pfil_remove_hook.9
+MLINKS+=pfind.9 zpfind.9
+MLINKS+=pmap_clear_modify.9 pmap_clear_reference.9
+MLINKS+=pmap_copy.9 pmap_copy_page.9
+MLINKS+=pmap_extract.9 pmap_extract_and_hold.9
+MLINKS+=pmap_init.9 pmap_init2.9
+MLINKS+=pmap_is_modified.9 pmap_ts_modified.9
+MLINKS+=pmap_page_protect.9 pmap_protect.9
+MLINKS+=pmap_pinit.9 pmap_pinit0.9 \
+ pmap_pinit.9 pmap_pinit2.9
+MLINKS+=pmap_qenter.9 pmap_qremove.9
+MLINKS+=pmap_remove.9 pmap_remove_all.9 \
+ pmap_remove.9 pmap_remove_pages.9
+MLINKS+=pmap_resident_count.9 pmap_wired_count.9
+MLINKS+=pmap_zero_page.9 pmap_zero_area.9 \
+ pmap_zero_page.9 pmap_zero_idle.9
+MLINKS+=printf.9 log.9 \
+ printf.9 tprintf.9 \
+ printf.9 uprintf.9
+MLINKS+=priv.9 priv_check.9 \
+ priv.9 priv_check_cred.9
+MLINKS+=psignal.9 gsignal.9 \
+ psignal.9 pgsignal.9
+MLINKS+=random.9 arc4rand.9 \
+ random.9 arc4random.9 \
+ random.9 read_random.9 \
+ random.9 srandom.9
+MLINKS+=resource_int_value.9 resource_long_value.9 \
+ resource_int_value.9 resource_string_value.9
+MLINKS+=rman.9 rman_activate_resource.9 \
+ rman.9 rman_await_resource.9 \
+ rman.9 rman_deactivate_resource.9 \
+ rman.9 rman_fini.9 \
+ rman.9 rman_get_bushandle.9 \
+ rman.9 rman_get_bustag.9 \
+ rman.9 rman_get_device.9 \
+ rman.9 rman_get_end.9 \
+ rman.9 rman_get_flags.9 \
+ rman.9 rman_get_rid.9 \
+ rman.9 rman_get_size.9 \
+ rman.9 rman_get_start.9 \
+ rman.9 rman_get_virtual.9 \
+ rman.9 rman_init.9 \
+ rman.9 rman_make_alignment_flags.9 \
+ rman.9 rman_manage_region.9 \
+ rman.9 rman_release_resource.9 \
+ rman.9 rman_reserve_resource.9 \
+ rman.9 rman_reserve_resource_bound.9 \
+ rman.9 rman_set_bushandle.9 \
+ rman.9 rman_set_bustag.9 \
+ rman.9 rman_set_rid.9 \
+ rman.9 rman_set_virtual.9
+MLINKS+=rmlock.9 rm_destroy.9 \
+ rmlock.9 rm_init.9 \
+ rmlock.9 rm_rlock.9 \
+ rmlock.9 rm_runlock.9 \
+ rmlock.9 RM_SYSINIT.9 \
+ rmlock.9 rm_wlock.9 \
+ rmlock.9 rm_wowned.9 \
+ rmlock.9 rm_wunlock.9
+MLINKS+=rtalloc.9 rtalloc1.9 \
+ rtalloc.9 rtalloc_ign.9 \
+ rtalloc.9 RTFREE.9 \
+ rtalloc.9 rtfree.9
+MLINKS+=runqueue.9 chooseproc.9 \
+ runqueue.9 procrunnable.9 \
+ runqueue.9 remrunqueue.9 \
+ runqueue.9 setrunqueue.9
+MLINKS+=rwlock.9 rw_assert.9 \
+ rwlock.9 rw_destroy.9 \
+ rwlock.9 rw_downgrade.9 \
+ rwlock.9 rw_init.9 \
+ rwlock.9 rw_initialized.9 \
+ rwlock.9 rw_rlock.9 \
+ rwlock.9 rw_runlock.9 \
+ rwlock.9 rw_sleep.9 \
+ rwlock.9 RW_SYSINIT.9 \
+ rwlock.9 rw_try_rlock.9 \
+ rwlock.9 rw_try_upgrade.9 \
+ rwlock.9 rw_try_wlock.9 \
+ rwlock.9 rw_wlock.9 \
+ rwlock.9 rw_wowned.9 \
+ rwlock.9 rw_wunlock.9
+MLINKS+=sbuf.9 sbuf_bcat.9 \
+ sbuf.9 sbuf_bcopyin.9 \
+ sbuf.9 sbuf_bcpy.9 \
+ sbuf.9 sbuf_cat.9 \
+ sbuf.9 sbuf_clear.9 \
+ sbuf.9 sbuf_copyin.9 \
+ sbuf.9 sbuf_cpy.9 \
+ sbuf.9 sbuf_data.9 \
+ sbuf.9 sbuf_delete.9 \
+ sbuf.9 sbuf_done.9 \
+ sbuf.9 sbuf_finish.9 \
+ sbuf.9 sbuf_len.9 \
+ sbuf.9 sbuf_new.9 \
+ sbuf.9 sbuf_overflowed.9 \
+ sbuf.9 sbuf_printf.9 \
+ sbuf.9 sbuf_putc.9 \
+ sbuf.9 sbuf_setpos.9 \
+ sbuf.9 sbuf_trim.9 \
+ sbuf.9 sbuf_vprintf.9
+MLINKS+=scheduler.9 curpriority_cmp.9 \
+ scheduler.9 maybe_resched.9 \
+ scheduler.9 resetpriority.9 \
+ scheduler.9 roundrobin.9 \
+ scheduler.9 roundrobin_interval.9 \
+ scheduler.9 schedclock.9 \
+ scheduler.9 schedcpu.9 \
+ scheduler.9 sched_setup.9 \
+ scheduler.9 setrunnable.9 \
+ scheduler.9 updatepri.9
+MLINKS+=securelevel_gt.9 securelevel_ge.9
+MLINKS+=selrecord.9 selwakeup.9
+MLINKS+=sema.9 sema_destroy.9 \
+ sema.9 sema_init.9 \
+ sema.9 sema_post.9 \
+ sema.9 sema_timedwait.9 \
+ sema.9 sema_trywait.9 \
+ sema.9 sema_value.9 \
+ sema.9 sema_wait.9
+MLINKS+=sf_buf.9 sf_buf_alloc.9 \
+ sf_buf.9 sf_buf_free.9 \
+ sf_buf.9 sf_buf_kva.9 \
+ sf_buf.9 sf_buf_page.9
+MLINKS+=signal.9 cursig.9 \
+ signal.9 execsigs.9 \
+ signal.9 issignal.9 \
+ signal.9 killproc.9 \
+ signal.9 pgsigio.9 \
+ signal.9 postsig.9 \
+ signal.9 SETSETNEQ.9 \
+ signal.9 SETSETOR.9 \
+ signal.9 SIGADDSET.9 \
+ signal.9 SIG_CONTSIGMASK.9 \
+ signal.9 SIGDELSET.9 \
+ signal.9 SIGEMPTYSET.9 \
+ signal.9 sigexit.9 \
+ signal.9 SIGFILLSET.9 \
+ signal.9 siginit.9 \
+ signal.9 SIGISEMPTY.9 \
+ signal.9 SIGISMEMBER.9 \
+ signal.9 SIGNOTEMPTY.9 \
+ signal.9 signotify.9 \
+ signal.9 SIGPENDING.9 \
+ signal.9 SIGSETAND.9 \
+ signal.9 SIGSETCANTMASK.9 \
+ signal.9 SIGSETEQ.9 \
+ signal.9 SIGSETNAND.9 \
+ signal.9 SIG_STOPSIGMASK.9 \
+ signal.9 trapsignal.9
+MLINKS+=sleep.9 msleep.9 \
+ sleep.9 msleep_spin.9 \
+ sleep.9 pause.9 \
+ sleep.9 tsleep.9 \
+ sleep.9 wakeup.9 \
+ sleep.9 wakeup_one.9
+MLINKS+=sleepqueue.9 init_sleepqueues.9 \
+ sleepqueue.9 sleepq_abort.9 \
+ sleepqueue.9 sleepq_add.9 \
+ sleepqueue.9 sleepq_alloc.9 \
+ sleepqueue.9 sleepq_broadcast.9 \
+ sleepqueue.9 sleepq_calc_signal_retval.9 \
+ sleepqueue.9 sleepq_catch_signals.9 \
+ sleepqueue.9 sleepq_free.9 \
+ sleepqueue.9 sleepq_lookup.9 \
+ sleepqueue.9 sleepq_release.9 \
+ sleepqueue.9 sleepq_remove.9 \
+ sleepqueue.9 sleepq_set_timeout.9 \
+ sleepqueue.9 sleepq_signal.9 \
+ sleepqueue.9 sleepq_timedwait.9 \
+ sleepqueue.9 sleepq_timedwait_sig.9 \
+ sleepqueue.9 sleepq_wait.9 \
+ sleepqueue.9 sleepq_wait_sig.9
+MLINKS+=socket.9 sobind.9 \
+ socket.9 soclose.9 \
+ socket.9 soconnect.9 \
+ socket.9 socreate.9 \
+ socket.9 sogetopt.9 \
+ socket.9 soreceive.9 \
+ socket.9 sosend.9 \
+ socket.9 sosetopt.9 \
+ socket.9 soshutdown.9
+MLINKS+=spl.9 spl0.9 \
+ spl.9 splbio.9 \
+ spl.9 splclock.9 \
+ spl.9 splhigh.9 \
+ spl.9 splimp.9 \
+ spl.9 splnet.9 \
+ spl.9 splsoftclock.9 \
+ spl.9 splsofttty.9 \
+ spl.9 splstatclock.9 \
+ spl.9 spltty.9 \
+ spl.9 splvm.9 \
+ spl.9 splx.9
+MLINKS+=stack.9 stack_copy.9 \
+ stack.9 stack_create.9 \
+ stack.9 stack_destroy.9 \
+ stack.9 stack_print.9 \
+ stack.9 stack_print_ddb.9 \
+ stack.9 stack_put.9 \
+ stack.9 stack_save.9 \
+ stack.9 stack_sbuf_print.9 \
+ stack.9 stack_sbuf_print_ddb.9 \
+ stack.9 stack_zero.9
+MLINKS+=store.9 subyte.9 \
+ store.9 suswintr.9 \
+ store.9 susword.9 \
+ store.9 suword.9
+MLINKS+=swi.9 swi_add.9 \
+ swi.9 swi_sched.9
+MLINKS+=sx.9 sx_assert.9 \
+ sx.9 sx_destroy.9 \
+ sx.9 sx_downgrade.9 \
+ sx.9 sx_init.9 \
+ sx.9 sx_init_flags.9 \
+ sx.9 sx_sleep.9 \
+ sx.9 sx_slock.9 \
+ sx.9 sx_sunlock.9 \
+ sx.9 SX_SYSINIT.9 \
+ sx.9 sx_try_slock.9 \
+ sx.9 sx_try_upgrade.9 \
+ sx.9 sx_try_xlock.9 \
+ sx.9 sx_unlock.9 \
+ sx.9 sx_xholder.9 \
+ sx.9 sx_xlock.9 \
+ sx.9 sx_xlocked.9 \
+ sx.9 sx_xunlock.9
+MLINKS+=sysctl.9 SYSCTL_DECL.9 \
+ sysctl.9 SYSCTL_INT.9 \
+ sysctl.9 SYSCTL_LONG.9 \
+ sysctl.9 SYSCTL_NODE.9 \
+ sysctl.9 SYSCTL_OPAQUE.9 \
+ sysctl.9 SYSCTL_PROC.9 \
+ sysctl.9 SYSCTL_STRING.9 \
+ sysctl.9 SYSCTL_STRUCT.9 \
+ sysctl.9 SYSCTL_UINT.9 \
+ sysctl.9 SYSCTL_ULONG.9 \
+ sysctl.9 SYSCTL_XINT.9 \
+ sysctl.9 SYSCTL_XLONG.9
+MLINKS+=sysctl_add_oid.9 SYSCTL_ADD_INT.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_LONG.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_NODE.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_OID.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_OPAQUE.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_PROC.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_STRING.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_STRUCT.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_UINT.9 \
+ sysctl_add_oid.9 SYSCTL_ADD_ULONG.9 \
+ sysctl_add_oid.9 SYSCTL_CHILDREN.9 \
+ sysctl_add_oid.9 sysctl_move_oid.9 \
+ sysctl_add_oid.9 sysctl_remove_oid.9 \
+ sysctl_add_oid.9 SYSCTL_STATIC_CHILDREN.9
+MLINKS+=sysctl_ctx_init.9 sysctl_ctx_entry_add.9 \
+ sysctl_ctx_init.9 sysctl_ctx_entry_del.9 \
+ sysctl_ctx_init.9 sysctl_ctx_entry_find.9 \
+ sysctl_ctx_init.9 sysctl_ctx_free.9
+MLINKS+=taskqueue.9 TASK_INIT.9 \
+ taskqueue.9 taskqueue_create.9 \
+ taskqueue.9 TASKQUEUE_DECLARE.9 \
+ taskqueue.9 TASKQUEUE_DEFINE.9 \
+ taskqueue.9 taskqueue_enqueue.9 \
+ taskqueue.9 taskqueue_find.9 \
+ taskqueue.9 taskqueue_free.9 \
+ taskqueue.9 taskqueue_run.9
+MLINKS+=time.9 boottime.9 \
+ time.9 time_second.9 \
+ time.9 time_uptime.9
+MLINKS+=timeout.9 callout.9 \
+ timeout.9 callout_active.9 \
+ timeout.9 callout_deactivate.9 \
+ timeout.9 callout_drain.9 \
+ timeout.9 callout_handle_init.9 \
+ timeout.9 callout_init.9 \
+ timeout.9 callout_init_mtx.9 \
+ timeout.9 callout_init_rw.9 \
+ timeout.9 callout_pending.9 \
+ timeout.9 callout_reset.9 \
+ timeout.9 callout_stop.9 \
+ timeout.9 untimeout.9
+MLINKS+=ucred.9 crcopy.9 \
+ ucred.9 crdup.9 \
+ ucred.9 crfree.9 \
+ ucred.9 crget.9 \
+ ucred.9 crhold.9 \
+ ucred.9 crshared.9 \
+ ucred.9 cru2x.9
+MLINKS+=uidinfo.9 uifind.9 \
+ uidinfo.9 uifree.9 \
+ uidinfo.9 uihashinit.9 \
+ uidinfo.9 uihold.9
+MLINKS+=uio.9 uiomove.9
+MLINKS+=usbdi.9 usbd_abort_default_pipe.9 \
+ usbdi.9 usbd_abort_pipe.9 \
+ usbdi.9 usbd_alloc_buffer.9 \
+ usbdi.9 usbd_alloc_xfer.9 \
+ usbdi.9 usbd_clear_endpoint_stall.9 \
+ usbdi.9 usbd_clear_endpoint_stall_async.9 \
+ usbdi.9 usbd_clear_endpoint_toggle.9 \
+ usbdi.9 usbd_close_pipe.9 \
+ usbdi.9 usbd_device2interface_handle.9 \
+ usbdi.9 usbd_do_request.9 \
+ usbdi.9 usbd_do_request_async.9 \
+ usbdi.9 usbd_do_request_flags.9 \
+ usbdi.9 usbd_do_request_flags_pipe.9 \
+ usbdi.9 usbd_endpoint_count.9 \
+ usbdi.9 usbd_errstr.9 \
+ usbdi.9 usbd_find_edesc.9 \
+ usbdi.9 usbd_find_idesc.9 \
+ usbdi.9 usbd_free_buffer.9 \
+ usbdi.9 usbd_free_xfer.9 \
+ usbdi.9 usbd_get_buffer.9 \
+ usbdi.9 usbd_get_config.9 \
+ usbdi.9 usbd_get_config_desc.9 \
+ usbdi.9 usbd_get_config_desc_full.9 \
+ usbdi.9 usbd_get_config_descriptor.9 \
+ usbdi.9 usbd_get_device_descriptor.9 \
+ usbdi.9 usbd_get_endpoint_descriptor.9 \
+ usbdi.9 usbd_get_interface_altindex.9 \
+ usbdi.9 usbd_get_interface_descriptor.9 \
+ usbdi.9 usbd_get_no_alts.9 \
+ usbdi.9 usbd_get_quirks.9 \
+ usbdi.9 usbd_get_speed.9 \
+ usbdi.9 usbd_get_string.9 \
+ usbdi.9 usbd_get_string_desc.9 \
+ usbdi.9 usbd_get_xfer_status.9 \
+ usbdi.9 usbd_interface2device_handle.9 \
+ usbdi.9 usbd_interface2endpoint_descriptor.9 \
+ usbdi.9 usbd_interface_count.9 \
+ usbdi.9 usbd_open_pipe.9 \
+ usbdi.9 usbd_open_pipe_intr.9 \
+ usbdi.9 usbd_pipe2device_handle.9 \
+ usbdi.9 usbd_set_config_index.9 \
+ usbdi.9 usbd_set_config_no.9 \
+ usbdi.9 usbd_set_interface.9 \
+ usbdi.9 usbd_setup_default_xfer.9 \
+ usbdi.9 usbd_setup_isoc_xfer.9 \
+ usbdi.9 usbd_setup_xfer.9 \
+ usbdi.9 usbd_sync_transfer.9 \
+ usbdi.9 usbd_transfer.9 \
+ usbdi.9 usb_find_desc.9
+MLINKS+=vcount.9 count_dev.9
+MLINKS+=vfsconf.9 vfs_modevent.9 \
+ vfsconf.9 vfs_register.9 \
+ vfsconf.9 vfs_unregister.9
+MLINKS+=vfs_getopt.9 vfs_copyopt.9 \
+ vfs_getopt.9 vfs_filteropt.9 \
+ vfs_getopt.9 vfs_flagopt.9 \
+ vfs_getopt.9 vfs_getopts.9 \
+ vfs_getopt.9 vfs_scanopt.9
+MLINKS+=VFS_LOCK_GIANT.9 VFS_UNLOCK_GIANT.9
+MLINKS+=vgone.9 vgonel.9
+MLINKS+=vhold.9 vdrop.9 \
+ vhold.9 vholdl.9 \
+ vhold.9 vdropl.9
+MLINKS+=vm_map_lock.9 vm_map_lock_downgrade.9 \
+ vm_map_lock.9 vm_map_lock_read.9 \
+ vm_map_lock.9 vm_map_lock_upgrade.9 \
+ vm_map_lock.9 vm_map_trylock.9 \
+ vm_map_lock.9 vm_map_trylock_read.9 \
+ vm_map_lock.9 vm_map_unlock.9 \
+ vm_map_lock.9 vm_map_unlock_read.9
+MLINKS+=vm_map_lookup.9 vm_map_lookup_done.9
+MLINKS+=vm_map_max.9 vm_map_min.9 \
+ vm_map_max.9 vm_map_pmap.9
+MLINKS+=vm_map_stack.9 vm_map_growstack.9
+MLINKS+=vm_map_wire.9 vm_map_unwire.9
+MLINKS+=vm_page_bits.9 vm_page_clear_dirty.9 \
+ vm_page_bits.9 vm_page_dirty.9 \
+ vm_page_bits.9 vm_page_is_valid.9 \
+ vm_page_bits.9 vm_page_set_invalid.9 \
+ vm_page_bits.9 vm_page_set_validclean.9 \
+ vm_page_bits.9 vm_page_test_dirty.9 \
+ vm_page_bits.9 vm_page_undirty.9 \
+ vm_page_bits.9 vm_page_zero_invalid.9
+MLINKS+=vm_page_flag.9 vm_page_flag_clear.9 \
+ vm_page_flag.9 vm_page_flag_set.9
+MLINKS+=vm_page_free.9 vm_page_free_toq.9 \
+ vm_page_free.9 vm_page_free_zero.9 \
+ vm_page_free.9 vm_page_try_to_free.9
+MLINKS+=vm_page_hold.9 vm_page_unhold.9
+MLINKS+=vm_page_insert.9 vm_page_remove.9
+MLINKS+=vm_page_io.9 vm_page_io_finish.9 \
+ vm_page_io.9 vm_page_io_start.9
+MLINKS+=vm_page_wakeup.9 vm_page_busy.9 \
+ vm_page_wakeup.9 vm_page_flash.9
+MLINKS+=vm_page_wire.9 vm_page_unwire.9
+MLINKS+=VOP_ATTRIB.9 VOP_GETATTR.9 \
+ VOP_ATTRIB.9 VOP_SETATTR.9
+MLINKS+=VOP_CREATE.9 VOP_MKDIR.9 \
+ VOP_CREATE.9 VOP_MKNOD.9 \
+ VOP_CREATE.9 VOP_SYMLINK.9
+MLINKS+=VOP_GETPAGES.9 VOP_PUTPAGES.9
+MLINKS+=VOP_GETVOBJECT.9 VOP_CREATEVOBJECT.9 \
+ VOP_GETVOBJECT.9 VOP_DESTROYVOBJECT.9
+MLINKS+=VOP_INACTIVE.9 VOP_RECLAIM.9
+MLINKS+=VOP_LOCK.9 vn_lock.9 \
+ VOP_LOCK.9 VOP_ISLOCKED.9 \
+ VOP_LOCK.9 VOP_UNLOCK.9
+MLINKS+=VOP_OPENCLOSE.9 VOP_CLOSE.9 \
+ VOP_OPENCLOSE.9 VOP_OPEN.9
+MLINKS+=VOP_RDWR.9 VOP_READ.9 \
+ VOP_RDWR.9 VOP_WRITE.9
+MLINKS+=VOP_REMOVE.9 VOP_RMDIR.9
+MLINKS+=vref.9 VREF.9
+MLINKS+=vslock.9 vsunlock.9
+MLINKS+=zero_copy.9 zero_copy_sockets.9
+MLINKS+=zone.9 uma.9 \
+ zone.9 uma_zalloc.9 \
+ zone.9 uma_zcreate.9 \
+ zone.9 uma_zdestroy.9 \
+ zone.9 uma_zfree.9 \
+ zone.9 uma_zone_set_max.9
+
+.include <bsd.prog.mk>
diff --git a/share/man/man9/SYSCALL_MODULE.9 b/share/man/man9/SYSCALL_MODULE.9
new file mode 100644
index 0000000..973adeb
--- /dev/null
+++ b/share/man/man9/SYSCALL_MODULE.9
@@ -0,0 +1,84 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Dt SYSCALL_MODULE 9
+.Os
+.Sh NAME
+.Nm SYSCALL_MODULE
+.Nd syscall kernel module declaration macro
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kernel.h
+.In sys/proc.h
+.In sys/module.h
+.In sys/sysent.h
+.Fn SYSCALL_MODULE name "int *offset" "struct sysent *new_sysent" "modeventhand_t evh" "void *arg"
+.Sh DESCRIPTION
+The
+.Fn SYSCALL_MODULE
+macro declares a new syscall.
+.Fn SYSCALL_MODULE
+expands into a kernel module declaration named as
+.Fa name .
+.Pp
+The rest of the arguments expected by this macro are:
+.Bl -tag -width ".Fa new_sysent"
+.It Fa offset
+A pointer to an
+.Vt int
+which saves the offset in
+.Vt "struct sysent"
+where the syscall is allocated.
+.It Fa new_sysent
+is a pointer to a structure that specifies the function implementing
+the syscall and the number of arguments this function needs (see
+.In sys/sysent.h ) .
+.It Fa evh
+A pointer to the kernel module event handler function with the argument
+.Fa arg .
+Please refer to
+.Xr module 9
+for more information.
+.It Fa arg
+The argument passed to the callback functions of the
+.Fa evh
+event handler when it is called.
+.El
+.Sh EXAMPLES
+A minimal example for a syscall module can be found in
+.Pa /usr/share/examples/kld/syscall/module/syscall.c .
+.Sh SEE ALSO
+.Xr module 9
+.Pp
+.Pa /usr/share/examples/kld/syscall/module/syscall.c
+.Sh AUTHORS
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org .
diff --git a/share/man/man9/VFS.9 b/share/man/man9/VFS.9
new file mode 100644
index 0000000..21e609e
--- /dev/null
+++ b/share/man/man9/VFS.9
@@ -0,0 +1,60 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VFS 9
+.Sh NAME
+.Nm VFS
+.Nd kernel interface to file systems
+.Sh DESCRIPTION
+Calls used to set or query file systems for settings or information.
+.Pp
+File systems that do not implement a VFS operation should use the appropriate
+.Fa vfs_std
+function from
+.Pa src/sys/kern/vfs_default.c
+rather than implementing empty functions or casting to
+.Fa eopnotsupp .
+.Sh SEE ALSO
+.Xr VFS_CHECKEXP 9 ,
+.Xr VFS_FHTOVP 9 ,
+.Xr VFS_INIT 9 ,
+.Xr VFS_MOUNT 9 ,
+.Xr VFS_QUOTACTL 9 ,
+.Xr VFS_STATFS 9 ,
+.Xr VFS_SYNC 9 ,
+.Xr VFS_UNMOUNT 9 ,
+.Xr VFS_VGET 9 ,
+.Xr VFS_VPTOFH 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_CHECKEXP.9 b/share/man/man9/VFS_CHECKEXP.9
new file mode 100644
index 0000000..a3afd2e
--- /dev/null
+++ b/share/man/man9/VFS_CHECKEXP.9
@@ -0,0 +1,88 @@
+.\"
+.\" Copyright (c) 1999 Alfred Perlstein
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following condition
+.\" is met:
+.\" Redistributions of source code must retain the above copyright
+.\" notice, this condition and the following disclaimer.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Os
+.Dt VFS_CHECKEXP 9
+.Sh NAME
+.Nm VFS_CHECKEXP
+.Nd check if a file system is exported to a client
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft int
+.Fn VFS_CHECKEXP "struct mount *mp" "struct sockaddr *nam" "int *exflagsp" "struct ucred **credanonp"
+.Sh DESCRIPTION
+The
+.Fn VFS_CHECKEXP
+macro is used by the NFS server to check if a mount point is exported
+to a client.
+.Pp
+The arguments it expects are:
+.Bl -tag -width credanonp
+.It Fa mp
+The mount point to be checked.
+.It Fa nam
+An mbuf containing the network address of the client.
+.It Fa exflagsp
+Return parameter for the export flags for this client.
+.It Fa credanonp
+Return parameter for the anonymous credentials for this client.
+.El
+.Pp
+The
+.Fn VFS_CHECKEXP
+macro should be called on a file system's mount structure to determine if it
+is exported to a client whose address is contained in
+.Fa nam .
+.Pp
+It is generally called before
+.Xr VFS_FHTOVP 9
+to validate that a client has access to the file system.
+.Pp
+The file system should call
+.Xr vfs_export_lookup 9
+with the address of an appropriate
+.Vt netexport
+structure and the address of the client,
+.Fa nam ,
+to verify that the client can access this file system.
+.Sh RETURN VALUES
+The export flags and anonymous credentials specific to the client (returned
+by
+.Xr vfs_export_lookup 9 )
+will be returned in
+.Fa *exflagsp
+and
+.Fa *credanonp .
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr VFS_FHTOVP 9 ,
+.Xr VFS_VPTOFH 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Alfred Perlstein .
diff --git a/share/man/man9/VFS_FHTOVP.9 b/share/man/man9/VFS_FHTOVP.9
new file mode 100644
index 0000000..e17133e
--- /dev/null
+++ b/share/man/man9/VFS_FHTOVP.9
@@ -0,0 +1,83 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Os
+.Dt VFS_FHTOVP 9
+.Sh NAME
+.Nm VFS_FHTOVP
+.Nd turn an NFS filehandle into a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_FHTOVP "struct mount *mp" "struct fid *fhp" "struct vnode **vpp"
+.Sh DESCRIPTION
+The
+.Fn VFS_FHTOVP
+macro is used by the NFS server to turn an NFS filehandle into a vnode.
+.Pp
+The arguments it expects are:
+.Bl -tag -width vpp
+.It Fa mp
+The file system.
+.It Fa fhp
+The filehandle to convert.
+.It Fa vpp
+Return parameter for the new locked vnode.
+.El
+.Pp
+The contents of the filehandle are defined by the file system and are
+not examined by any other part of the system.
+It should contain
+enough information to uniquely identify a file within the file system
+as well as noticing when a file has been removed and the file system
+resources have been reused for a new file.
+For instance, UFS
+file system stores the inode number and inode generation counter in its
+filehandle.
+.Pp
+A call to
+.Fn VFS_FHTOVP
+should generally be preceded by a call to
+.Xr VFS_CHECKEXP 9
+to check if the file is accessible to the client.
+.Sh RETURN VALUES
+The locked vnode for the file will be returned in
+.Fa *vpp .
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr VFS_CHECKEXP 9 ,
+.Xr VFS_VPTOFH 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_LOCK_GIANT.9 b/share/man/man9/VFS_LOCK_GIANT.9
new file mode 100644
index 0000000..9249e6c
--- /dev/null
+++ b/share/man/man9/VFS_LOCK_GIANT.9
@@ -0,0 +1,93 @@
+.\"
+.\" 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 21, 2005
+.Dt VFS_LOCK_GIANT 9
+.Os
+.Sh NAME
+.Nm VFS_LOCK_GIANT ,
+.Nm VFS_UNLOCK_GIANT
+.Nd "conditionally lock and unlock Giant around entry into VFS"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_LOCK_GIANT "struct mount *mp"
+.Ft void
+.Fn VFS_UNLOCK_GIANT "int vfslocked"
+.Sh DESCRIPTION
+.Fn VFS_LOCK_GIANT
+will conditionally acquire the
+.Va Giant
+lock if the file system referenced by
+.Fa mp
+is marked as MPSAFE or not, returning a flag indicating whether
+.Va Giant
+was
+set, which may later be passed to
+.Fn VFS_UNLOCK_GIANT .
+The value of
+.Fa mp
+will typically be derived from the mount pointer in a
+.Vt vnode
+on which a VFS operation will be performed.
+.Pp
+.Fn VFS_UNLOCK_GIANT
+conditionally releases the
+.Va Giant
+lock if the passed
+.Fa vfslocked
+argument is non-zero.
+It is expected that the argument will be derived from the return values of
+.Fn VFS_LOCK_GIANT
+or
+.Xr NDHASGIANT 9 .
+.Sh RETURN VALUES
+.Fn VFS_LOCK_GIANT
+returns a boolean indicating whether or not
+.Va Giant
+was acquired.
+.Sh SEE ALSO
+.Xr mutex 9 ,
+.Xr NDHASGIANT 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+.An -nosplit
+MPSAFE VFS support for
+.Fx
+was implemented by
+.An Jeff Roberson .
+.Pp
+This manual page was written by
+.An Robert Watson .
+.Sh BUGS
+Non-MPSAFE file systems exist, requiring callers conditional locking and
+unlocking of
+.Va Giant .
diff --git a/share/man/man9/VFS_MOUNT.9 b/share/man/man9/VFS_MOUNT.9
new file mode 100644
index 0000000..97d85fa
--- /dev/null
+++ b/share/man/man9/VFS_MOUNT.9
@@ -0,0 +1,86 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Os
+.Dt VFS_MOUNT 9
+.Sh NAME
+.Nm VFS_MOUNT
+.Nd mount a file system
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_MOUNT "struct mount *mp" "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn VFS_MOUNT
+macro mounts a file system into the system's namespace or updates the
+attributes of an already mounted file system.
+.Pp
+The arguments it expects are:
+.Bl -tag -width data
+.It Fa mp
+Structure representing the file system.
+.It Fa td
+Thread which is mounting the file system.
+.El
+.Pp
+The
+.Fn VFS_MOUNT
+macro is called both to mount new file systems and to change the
+attributes of an existing file system.
+If the
+.Dv MNT_UPDATE
+flag is set in
+.Fa mp->mnt_flag
+then the file system should update its internal state from the value of
+.Fa mp->mnt_flag .
+This can be used, for instance, to convert a read-only file system to
+read-write.
+It is also used by
+.Xr mountd 8
+to update the NFS export information for the file system.
+.Pp
+If the
+.Dv MNT_UPDATE
+flag is not specified, then this is a newly mounted file system.
+The file system code should allocate and initialize
+any private data needed to represent
+the file system (it can use the
+.Fa mp->mnt_data
+field to store this information).
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_QUOTACTL.9 b/share/man/man9/VFS_QUOTACTL.9
new file mode 100644
index 0000000..4c3620a
--- /dev/null
+++ b/share/man/man9/VFS_QUOTACTL.9
@@ -0,0 +1,53 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VFS_QUOTACTL 9
+.Sh NAME
+.Nm VFS_QUOTACTL
+.Nd manipulate file system quotas
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_QUOTACTL "struct mount *mp" "int cmds" "uid_t uid" "caddr_t arg" "struct thread *td"
+.Sh DESCRIPTION
+Implement file system quotas.
+See
+.Xr quotactl 2
+for a description of the arguments.
+.Sh SEE ALSO
+.Xr quotactl 2 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_ROOT.9 b/share/man/man9/VFS_ROOT.9
new file mode 100644
index 0000000..1aa0194
--- /dev/null
+++ b/share/man/man9/VFS_ROOT.9
@@ -0,0 +1,69 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd August 26, 2006
+.Os
+.Dt VFS_ROOT 9
+.Sh NAME
+.Nm VFS_ROOT
+.Nd return the root vnode of a file system
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_ROOT "struct mount *mp" "int flags" "struct vnode **vpp" "struct thread *td"
+.Sh DESCRIPTION
+Return a locked vnode for the root directory of the file system.
+.Pp
+Its arguments are:
+.Bl -tag -width flags
+.It Fa mp
+The file system.
+.It Fa flags
+The lock type.
+Could be
+.Dv LK_EXCLUSIVE
+or
+.Dv LK_SHARED .
+File system is free to ignore the
+.Fa flags
+argument and instead acquire an exclusive lock.
+.It Fa vpp
+Return parameter for the root vnode.
+.It Fa td
+The calling thread.
+.El
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_SET.9 b/share/man/man9/VFS_SET.9
new file mode 100644
index 0000000..f30f431
--- /dev/null
+++ b/share/man/man9/VFS_SET.9
@@ -0,0 +1,116 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 5, 2007
+.Dt VFS_SET 9
+.Os
+.Sh NAME
+.Nm VFS_SET
+.Nd set up loadable file system
+.Vt vfsconf
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kernel.h
+.In sys/module.h
+.In sys/mount.h
+.Ft void
+.Fn VFS_SET "struct vfsops *vfsops" "fsname" "int flags"
+.Sh DESCRIPTION
+.Fn VFS_SET
+creates a
+.Vt vfsconf
+structure for the loadable module with the given
+.Fa vfsops , fsname
+and
+.Fa flags ,
+and declares it by calling
+.Xr DECLARE_MODULE 9
+using
+.Fn vfs_modevent
+as the event handler.
+.Pp
+Possible values for the
+.Fa flags
+argument are:
+.Bl -hang -width ".Dv VFCF_DELEGADMIN"
+.It Dv VFCF_STATIC
+File system should be statically available in the kernel.
+.It Dv VFCF_NETWORK
+Network exportable file system.
+.It Dv VFCF_READONLY
+Does not support write operations.
+.It Dv VFCF_SYNTHETIC
+Pseudo file system, data does not represent on-disk files.
+.It Dv VFCF_LOOPBACK
+Loopback file system layer.
+.It Dv VFCF_UNICODE
+File names are stored as Unicode.
+.It Dv VFCF_JAIL
+Can be mounted from within a jail if
+.Va security.jail.mount_allowed
+sysctl is set to
+.Dv 1 .
+.It Dv VFCF_DELEGADMIN
+Supports delegated administration if
+.Va vfs.usermount
+sysctl is set to
+.Dv 1 .
+.El
+.Sh PSEUDOCODE
+.Bd -literal
+/*
+ * fill in the ones we use, and use the vfs_std for the rest.
+ */
+static struct vfsops myfs_vfsops = {
+ myfs_mount,
+ vfs_stdstart,
+ myfs_unmount,
+ myfs_root,
+ vfs_stdquotactl,
+ myfs_statfs,
+ vfs_stdsync,
+ vfs_stdvget,
+ vfs_stdfhtovp,
+ vfs_stdcheckexp,
+ vfs_stdvptofh,
+ vfs_stdinit,
+ vfs_stduninit,
+ vfs_stdextattrctl,
+};
+
+VFS_SET(myfs_vfsops, skelfs, 0);
+.Ed
+.Sh SEE ALSO
+.Xr jail 2 ,
+.Xr jail 8 ,
+.Xr DECLARE_MODULE 9 ,
+.Xr vfsconf 9 ,
+.Xr vfs_modevent 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/VFS_STATFS.9 b/share/man/man9/VFS_STATFS.9
new file mode 100644
index 0000000..dd8dcc7
--- /dev/null
+++ b/share/man/man9/VFS_STATFS.9
@@ -0,0 +1,118 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Os
+.Dt VFS_STATFS 9
+.Sh NAME
+.Nm VFS_STATFS
+.Nd return file system status
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_STATFS "struct mount *mp" "struct statfs *sbp" "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn VFS_STATFS
+macro returns various pieces of information about the file system,
+including recommended I/O sizes, free space, free inodes, etc.
+.Pp
+The arguments it expects are:
+.Bl -tag -width sbp
+.It Fa mp
+The file system.
+.It Fa sbp
+A
+.Vt statfs
+structure, as defined by
+.In sys/mount.h ,
+into which information is placed about the file system.
+.It Fa td
+The thread which is querying the file system.
+.El
+.Pp
+The fields of
+.Vt "struct statfs"
+related to the file system are as follows:
+.Bl -tag -width ".Va f_mntfromname"
+.It Va f_type
+Type of file system.
+.It Va f_flags
+A copy of mount exported flags.
+.It Va f_bsize
+Fragment size.
+.It Va f_iosize
+Optimal transfer block size.
+.It Va f_blocks
+The total number of data blocks in the file system.
+.It Va f_bfree
+The number of free blocks in the file system.
+.It Va f_bavail
+The number of free blocks available to non-superuser processes.
+.It Va f_files
+The total number of file nodes in the file system.
+.It Va f_ffree
+The number of free nodes available to non-superuser processes.
+.It Va f_syncwrites
+The number of synchronous writes since the file system was mounted.
+.It Va f_asyncwrites
+The number of asynchronous writes since the file system was mounted.
+.It Va f_syncreads
+The number of synchronous reads since the file system was mounted.
+.It Va f_asyncreads
+The number of asynchronous reads since the file system was mounted.
+.It Va f_namemax
+The maximum file name length for this file system.
+.It Va f_owner
+The user ID of the user that mounted the file system.
+.It Va f_fsid
+Unique file system ID.
+.It Va f_fstypename
+The file system type name; a string of at most
+.Dv MFSNAMELEN
+bytes.
+.It Va f_mntfromname
+The device name the file system was mounted from; a string of at most
+.Dv MNAMELEN
+bytes.
+.It Va f_mntonname
+The name of the directory on which the file system is mounted;
+a string of at most
+.Dv MNAMELEN
+bytes.
+.El
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_SYNC.9 b/share/man/man9/VFS_SYNC.9
new file mode 100644
index 0000000..6f603ab
--- /dev/null
+++ b/share/man/man9/VFS_SYNC.9
@@ -0,0 +1,83 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Os
+.Dt VFS_SYNC 9
+.Sh NAME
+.Nm VFS_SYNC
+.Nd flush unwritten data
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_SYNC "struct mount *mp" "int waitfor" "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn VFS_SYNC
+macro writes out all unwritten data in the file system mounted as
+.Fa mp .
+.Pp
+The arguments it expects are:
+.Bl -tag -width ".Fa waitfor"
+.It Fa mp
+The file system.
+.It Fa waitfor
+Whether the function should wait for I/O to complete.
+Possible values are:
+.Bl -tag -width MNT_NOWAIT
+.It Dv MNT_WAIT
+synchronously wait for I/O to complete
+.It Dv MNT_NOWAIT
+start all I/O, but do not wait for it
+.It Dv MNT_LAZY
+push data not written by file system syncer
+.El
+.It Fa td
+The calling thread.
+.El
+.Pp
+The
+.Fn VFS_SYNC
+macro calls the
+.Va vfs_sync
+method of the file system, which normally calls
+.Xr VOP_FSYNC 9
+for all the vnodes in the file system.
+.Sh SEE ALSO
+.Xr fsync 2 ,
+.Xr sync 2 ,
+.Xr VFS 9 ,
+.Xr vnode 9 ,
+.Xr VOP_FSYNC 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_UNMOUNT.9 b/share/man/man9/VFS_UNMOUNT.9
new file mode 100644
index 0000000..1face49
--- /dev/null
+++ b/share/man/man9/VFS_UNMOUNT.9
@@ -0,0 +1,70 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Os
+.Dt VFS_UNMOUNT 9
+.Sh NAME
+.Nm VFS_UNMOUNT
+.Nd unmount a file system
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_UNMOUNT "struct mount *mp" "int mntflags" "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn VFS_UNMOUNT
+macro unmounts a file system.
+.Pp
+The arguments it expects are:
+.Bl -tag -width mntflags
+.It Fa mp
+The file system.
+.It Fa mntflags
+Bit-mask of flags for the unmount operation.
+The flags currently supported by
+.Fn VFS_UNMOUNT
+are:
+.Bl -tag -width ".Dv MNT_FORCE"
+.It Dv MNT_FORCE
+Open files are forcibly closed before the file system is unmounted.
+.El
+.It Fa td
+Thread which is unmounting the file system.
+.El
+.Sh SEE ALSO
+.Xr vflush 9 ,
+.Xr VFS 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VFS_VGET.9 b/share/man/man9/VFS_VGET.9
new file mode 100644
index 0000000..02b5536
--- /dev/null
+++ b/share/man/man9/VFS_VGET.9
@@ -0,0 +1,83 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 7, 2005
+.Os
+.Dt VFS_VGET 9
+.Sh NAME
+.Nm VFS_VGET
+.Nd convert an inode number to a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.In sys/vnode.h
+.Ft int
+.Fn VFS_VGET "struct mount *mp" "ino_t ino" "int flags" "struct vnode **vpp"
+.Sh DESCRIPTION
+The
+.Fn VFS_VGET
+looks up or creates a vnode from a (mount, inode#) tupple.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa flags"
+.It Fa mp
+The mount point.
+.It Fa ino
+The inode representing the file.
+This is a unique number assigned by the file system when vnodes are first
+created.
+.It Fa flags
+Additional locking flags to pass through to
+.Xr vget 9 .
+.It Fa vpp
+Return parameter for the vnode.
+.El
+.Pp
+This is an optional file system entry-point for file systems mainly
+intended for NFS server use, but many file systems
+use it internally in
+.Xr VOP_LOOKUP 9
+and similar.
+.Pp
+If the file system does not support this call, then it should return
+.Er EOPNOTSUPP .
+.Pp
+Please see
+.Fn ffs_vget
+in
+.Pa sys/ufs/ffs/ffs_vfsops.c
+for the canonical example.
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr vget 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_ACCESS.9 b/share/man/man9/VOP_ACCESS.9
new file mode 100644
index 0000000..e959fda
--- /dev/null
+++ b/share/man/man9/VOP_ACCESS.9
@@ -0,0 +1,119 @@
+.\" -*- nroff -*-
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_ACCESS 9
+.Sh NAME
+.Nm VOP_ACCESS
+.Nd "check access permissions of a file or Unix domain socket"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_ACCESS "struct vnode *vp" "accmode_t accmode" "struct ucred *cred" "struct thread *td"
+.Sh DESCRIPTION
+This entry point checks the access permissions of the file against the
+given credentials.
+.Pp
+Its arguments are:
+.Bl -tag -width accmode
+.It Fa vp
+The vnode of the file to check.
+.It Fa accmode
+The type of access required.
+.It Fa cred
+The user credentials to check.
+.It Fa td
+The thread which is checking.
+.El
+.Pp
+The
+.Fa accmode
+is a mask which can contain flags described in <sys/vnode.h>, e.g.
+.Dv VREAD ,
+.Dv VWRITE
+or
+.Dv VEXEC .
+.Sh LOCKS
+The vnode will be locked on entry and should remain locked on return.
+.Sh RETURN VALUES
+If the file is accessible in the specified way, then zero is returned,
+otherwise an appropriate error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_access(struct vnode *vp, accmode_t accmode, struct ucred *cred, struct thread *td)
+{
+ int error;
+
+ /*
+ * Disallow write attempts on read-only file systems;
+ * unless the file is a socket, fifo, or a block or
+ * character device resident on the filesystem.
+ */
+ if (accmode & VWRITE) {
+ switch (vp->v_type) {
+ case VDIR:
+ case VLNK:
+ case VREG:
+ if (vp->v_mount->mnt_flag & MNT_RDONLY)
+ return EROFS;
+
+ break;
+ }
+ }
+
+ /* If immutable bit set, nobody gets to write it. */
+ if ((accmode & VWRITE) && vp has immutable bit set)
+ return (EPERM);
+
+ error = vaccess(vp->v_type, mode of vp, owner of vp,
+ group of vp, ap->a_accmode, ap->a_cred, NULL);
+
+ return (error);
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EPERM
+An attempt was made to change an immutable file.
+.It Bq Er EACCES
+The permission bits the file mode or the ACL do not permit the
+requested access.
+.El
+.Sh SEE ALSO
+.Xr vaccess 9 ,
+.Xr vaccess_acl_posix1e 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_ACLCHECK.9 b/share/man/man9/VOP_ACLCHECK.9
new file mode 100644
index 0000000..6210228
--- /dev/null
+++ b/share/man/man9/VOP_ACLCHECK.9
@@ -0,0 +1,102 @@
+.\"-
+.\" Copyright (c) 1999 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$
+.\"
+.Dd December 23, 1999
+.Os
+.Dt VOP_ACLCHECK 9
+.Sh NAME
+.Nm VOP_ACLCHECK
+.Nd check an access control list for a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/acl.h
+.Ft int
+.Fn VOP_ACLCHECK "struct vnode *vp" "acl_type_t type" "struct acl *aclp" "struct ucred *cred" "struct thread *td"
+.Sh DESCRIPTION
+This vnode call may be used to determine the validity of a particular access
+control list (ACL) for a particular file or directory.
+.Pp
+Its arguments are:
+.Bl -tag -width type
+.It Fa vp
+The vnode of the file or directory.
+.It Fa type
+The type of ACL to check.
+.It Fa aclp
+A pointer to an ACL structure from which to retrieve the ACL data.
+.It Fa cred
+The user credentials to use in authorizing the request.
+.It Fa td
+The thread checking the ACL.
+.El
+.Pp
+The
+.Fa cred
+pointer may be NULL to indicate that access control checks are not to be
+performed, if possible.
+This cred setting might be used to allow the
+kernel to authorize ACL verification that the active process might not be
+permitted to do.
+.Pp
+The vnode ACL interface defines the syntax, and not semantics, of file and
+directory ACL interfaces.
+More information about ACL management in kernel
+may be found in
+.Xr acl 9 .
+.Sh LOCKS
+No locks are required to call this vnode method, and any locks held on
+entry will be held on exit.
+.Sh RETURN VALUES
+If the
+.Fa aclp
+pointer points to a valid ACL of type
+.Fa type
+for the object
+.Fa vp ,
+then zero is returned.
+Otherwise, an appropriate error code is returned.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The ACL type passed is invalid for this vnode, or the ACL data is invalid.
+.It Bq Er EACCES
+The file or directory ACL does not permit access.
+.It Bq Er ENOMEM
+Sufficient memory is not available to fulfill the request.
+.It Bq Er EOPNOTSUPP
+The file system does not support
+.Fn VOP_ACLCHECK .
+.El
+.Sh SEE ALSO
+.Xr acl 9 ,
+.Xr vnode 9 ,
+.Xr VOP_GETACL 9 ,
+.Xr VOP_SETACL 9
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
diff --git a/share/man/man9/VOP_ADVLOCK.9 b/share/man/man9/VOP_ADVLOCK.9
new file mode 100644
index 0000000..bdb00b7
--- /dev/null
+++ b/share/man/man9/VOP_ADVLOCK.9
@@ -0,0 +1,88 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 30, 1999
+.Os
+.Dt VOP_ADVLOCK 9
+.Sh NAME
+.Nm VOP_ADVLOCK
+.Nd advisory record locking
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/fcntl.h
+.In sys/lockf.h
+.Ft int
+.Fn VOP_ADVLOCK "struct vnode *vp" "caddr_t id" "int op" "struct flock *fl" "int flags"
+.Sh DESCRIPTION
+The arguments are:
+.Bl -tag -width flags
+.It Fa vp
+The vnode being manipulated.
+.It Fa id
+The id token which is changing the lock.
+.It Fa op
+The operation to perform (see
+.Xr fcntl 2 ) .
+.It Fa fl
+Description of the lock.
+.It Fa flags
+One of more of the following:
+.Pp
+.Bl -tag -width ".Dv F_UNLCK" -offset indent -compact
+.It Dv F_RDLCK
+Shared or read lock.
+.It Dv F_UNLCK
+Unlock.
+.It Dv F_WRLCK
+Exclusive or write lock.
+.It Dv F_WAIT
+Wait until lock is granted.
+.It Dv F_FLOCK
+Use
+.Xr flock 2
+semantics for lock.
+.It Dv F_POSIX
+Use POSIX semantics for lock.
+.El
+.El
+.Pp
+This entry point manipulates advisory record locks on the file.
+Most file systems delegate the work for this call to
+.Fn lf_advlock .
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr fcntl 2 ,
+.Xr flock 2 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_ATTRIB.9 b/share/man/man9/VOP_ATTRIB.9
new file mode 100644
index 0000000..79e8e05
--- /dev/null
+++ b/share/man/man9/VOP_ATTRIB.9
@@ -0,0 +1,164 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd August 29, 2008
+.Os
+.Dt VOP_ATTRIB 9
+.Sh NAME
+.Nm VOP_GETATTR ,
+.Nm VOP_SETATTR
+.Nd get and set attributes on a file or directory
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_GETATTR "struct vnode *vp" "struct vattr *vap" "struct ucred *cred"
+.Ft int
+.Fn VOP_SETATTR "struct vnode *vp" "struct vattr *vap" "struct ucred *cred"
+.Sh DESCRIPTION
+These entry points manipulate various attributes of a file or directory,
+including file permissions, owner, group, size,
+access time and modification time.
+.Pp
+The arguments are:
+.Bl -tag -width cred
+.It Fa vp
+The vnode of the file.
+.It Fa vap
+The attributes of the file.
+.It Fa cred
+The user credentials of the calling process.
+.El
+.Pp
+Attributes which are not being modified by
+.Fn VOP_SETATTR
+should be set to the value
+.Dv VNOVAL ;
+.Fn VATTR_NULL
+may be used to clear all the values, and should generally be used to reset
+the contents of
+.Fa *vap
+prior to setting specific values.
+.Sh LOCKS
+.Fn VOP_GETATTR
+expects the vnode to be locked on entry and will leave the vnode locked on
+return.
+The lock type can be either shared or exclusive.
+.Pp
+.Fn VOP_SETATTR
+expects the vnode to be locked on entry and will leave the vnode locked on
+return.
+The lock type must be exclusive.
+.Sh RETURN VALUES
+.Fn VOP_GETATTR
+returns 0 if it was able to retrieve the attribute data via
+.Fa *vap ,
+otherwise an appropriate error is returned.
+.Fn VOP_SETATTR
+returns zero if the attributes were changed successfully, otherwise an
+appropriate error is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_getattr(struct vnode *vp, struct vattr *vap, struct ucred *cred)
+{
+
+ /*
+ * Fill in the contents of *vap with information from
+ * the file system.
+ */
+ ...;
+
+ return 0;
+}
+
+int
+vop_setattr(struct vnode *vp, struct vattr *vap, struct ucred *cred)
+{
+
+ /*
+ * Check for unsettable attributes.
+ */
+ if ((vap->va_type != VNON) || (vap->va_nlink != VNOVAL) ||
+ (vap->va_fsid != VNOVAL) || (vap->va_fileid != VNOVAL) ||
+ (vap->va_blocksize != VNOVAL) || (vap->va_rdev != VNOVAL) ||
+ ((int)vap->va_bytes != VNOVAL) || (vap->va_gen != VNOVAL)) {
+ return (EINVAL);
+ }
+
+ if (vap->va_flags != VNOVAL) {
+ /*
+ * Set the immutable and append flags of the file.
+ */
+ }
+
+ if (vap->va_uid != (uid_t)VNOVAL || vap->va_gid != (gid_t)VNOVAL) {
+ /*
+ * Change owner and/or group of the file.
+ */
+ }
+
+ if (vap->va_size != VNOVAL) {
+ /*
+ * Truncate the file to the specified size.
+ */
+ }
+
+ if (vap->va_atime.tv_sec != VNOVAL || vap->va_mtime.tv_sec != VNOVAL) {
+ /*
+ * Change access and/or modification time of file.
+ */
+ }
+
+ if (vap->va_mode != (mode_t)VNOVAL) {
+ /*
+ * Change permissions of file.
+ */
+ }
+
+ return 0;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EPERM
+The file is immutable.
+.It Bq Er EACCES
+The caller does not have permission to modify the file or directory attributes.
+.It Bq Er EROFS
+The file system is read-only.
+.El
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr vnode 9 ,
+.Xr VOP_ACCESS 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_BWRITE.9 b/share/man/man9/VOP_BWRITE.9
new file mode 100644
index 0000000..0b8f7e0
--- /dev/null
+++ b/share/man/man9/VOP_BWRITE.9
@@ -0,0 +1,56 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_BWRITE 9
+.Sh NAME
+.Nm VOP_BWRITE
+.Nd write a file system buffer
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_BWRITE "struct vnode *vp" "struct buf *bp"
+.Sh DESCRIPTION
+The arguments are:
+.Bl -tag -width 2n
+.It Fa vp
+The vnode of the file being written to.
+.It Fa bp
+The buffer to be written.
+.El
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_CREATE.9 b/share/man/man9/VOP_CREATE.9
new file mode 100644
index 0000000..691c93b
--- /dev/null
+++ b/share/man/man9/VOP_CREATE.9
@@ -0,0 +1,161 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_CREATE 9
+.Sh NAME
+.Nm VOP_CREATE ,
+.Nm VOP_MKNOD ,
+.Nm VOP_MKDIR ,
+.Nm VOP_SYMLINK
+.Nd create a file, socket, fifo, device, directory or symlink
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/namei.h
+.Ft int
+.Fn VOP_CREATE "struct vnode *dvp" "struct vnode **vpp" "struct componentname *cnp" "struct vattr *vap"
+.Ft int
+.Fn VOP_MKNOD "struct vnode *dvp" "struct vnode **vpp" "struct componentname *cnp" "struct vattr *vap"
+.Ft int
+.Fn VOP_MKDIR "struct vnode *dvp" "struct vnode **vpp" "struct componentname *cnp" "struct vattr *vap"
+.Ft int
+.Fn VOP_SYMLINK "struct vnode *dvp" "struct vnode **vpp" "struct componentname *cnp" "struct vattr *vap" "char *target"
+.Sh DESCRIPTION
+These entry points create a new file, socket, fifo, device, directory or symlink
+in a given directory.
+.Pp
+The arguments are:
+.Bl -tag -width target
+.It Fa dvp
+The locked vnode of the directory.
+.It Fa vpp
+The address of a variable where the resulting locked vnode should be stored.
+.It Fa cnp
+The pathname component created.
+.It Fa vap
+The attributes that the new object should be created with.
+.It Fa target
+The pathname of the target of the symlink.
+.El
+.Pp
+These entry points are called after
+.Xr VOP_LOOKUP 9
+when an object is being created.
+.Sh LOCKS
+The directory,
+.Fa dvp
+will be locked on entry and must remain locked on return.
+If the call is successful, the new object will be returned locked.
+.Sh RETURN VALUES
+If successful, the vnode for the new object is placed in
+.Fa *vpp
+and zero is returned.
+Otherwise, an appropriate error is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_create(struct vnode *dvp,
+ struct vnode **vpp,
+ struct componentname *cnp
+ struct vattr *vap)
+{
+ int mode = MAKEIMODE(vap->va_type, vap->va_mode);
+ struct vnode *vp;
+ int error;
+
+ *vpp = NULL;
+ if ((mode & IFMT) == 0)
+ mode |= IFREG;
+
+ error = SOMEFS_VALLOC(dvp, mode, cnp->cn_cred, &vp);
+ if (error)
+ return error;
+
+ /*
+ * Update the permissions for the new vnode, including
+ * copying the group from the directory.
+ */
+ ...;
+
+#ifdef QUOTA
+ /*
+ * Possibly check quota information.
+ */
+ ...;
+#endif
+
+ /*
+ * Enter new vnode in directory, taking care that the vnode
+ * hits the disk before the directory contents are changed.
+ */
+ error = ...;
+
+ if (error)
+ goto bad;
+
+ *vpp = vp;
+
+ return 0;
+
+bad:
+ /*
+ * Write error occurred trying to update the inode
+ * or the directory so must deallocate the inode.
+ */
+ vput(vp);
+
+ /*
+ * Deallocate file system resources for vp.
+ */
+ ...;
+
+ return error;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENOSPC
+The file system is full.
+.It Bq Er EDQUOT
+The user's file system space or inode quota would be exceeded.
+.El
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr VOP_LOOKUP 9
+.Sh HISTORY
+The function
+.Nm
+appeared in
+.Bx 4.3 .
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_FSYNC.9 b/share/man/man9/VOP_FSYNC.9
new file mode 100644
index 0000000..5f7ddd2
--- /dev/null
+++ b/share/man/man9/VOP_FSYNC.9
@@ -0,0 +1,148 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_FSYNC 9
+.Sh NAME
+.Nm VOP_FSYNC
+.Nd flush file system buffers for a file
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_FSYNC "struct vnode *vp" "int waitfor" "struct thread *td"
+.Sh DESCRIPTION
+This call flushes any dirty file system buffers for the file.
+It is used to implement the
+.Xr sync 2
+and
+.Xr fsync 2
+system calls.
+.Pp
+Its arguments are:
+.Bl -tag -width waitfor
+.It Fa vp
+The vnode of the file.
+.It Fa waitfor
+Whether the function should wait for I/O to complete.
+Possible values are:
+.Bl -tag -width MNT_NOWAIT
+.It Dv MNT_WAIT
+Synchronously wait for I/O to complete.
+.It Dv MNT_NOWAIT
+Start all I/O, but do not wait for it.
+.It Dv MNT_LAZY
+Push data not written by file system syncer.
+.El
+.It Fa td
+The calling thread.
+.El
+.Pp
+The argument
+.Fa waitfor
+is either
+.Dv MNT_WAIT
+or
+.Dv MNT_NOWAIT
+and specifies whether or not the function should wait for the writes
+to finish before returning.
+.Sh LOCKS
+The file should be locked on entry.
+.Sh RETURN VALUES
+Zero is returned if the call is successful, otherwise an appropriate
+error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_fsync(struct vnode *vp, int waitfor, struct thread *td)
+{
+ struct buf *bp;
+ struct buf *nbp;
+ struct timeval tv;
+ int s;
+
+loop:
+ s = splbio();
+ for (bp = vp->v_dirtyblkhd.lh_first; bp; bp = nbp) {
+ nbp = bp->b_vnbufs.le_next;
+
+ /*
+ * Ignore buffers which are already being written.
+ */
+ if (bp->b_flags & B_BUSY)
+ continue;
+
+ /*
+ * Make sure the buffer is dirty.
+ */
+ if ((bp->b_flags & B_DELWRI) == 0)
+ panic("vop_fsync: not dirty");
+
+ vfs_bio_awrite(bp);
+ splx(s);
+ goto loop;
+ }
+ splx(s);
+
+ if (waitfor == MNT_WAIT) {
+ s = splbio();
+ while (vp->v_numoutput) {
+ vp->v_flag |= VBWAIT;
+ tsleep((caddr_t)&vp->v_numoutput, PRIBIO + 1, "vopfsn");
+ }
+ splx(s);
+#ifdef DIAGNOSTIC
+ if (vp->v_dirtyblkhd.lh_first) {
+ vprint("vop_fsync: dirty", vp);
+ goto loop;
+ }
+#endif
+ }
+
+ /*
+ * Write out the on-disc version of the vnode.
+ */
+ tv = time;
+ return VOP_UPDATE(vp, &tv, &tv, waitfor == MNT_WAIT);
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENOSPC
+The file system is full.
+.It Bq Er EDQUOT
+Quota exceeded.
+.El
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_GETACL.9 b/share/man/man9/VOP_GETACL.9
new file mode 100644
index 0000000..ba81908
--- /dev/null
+++ b/share/man/man9/VOP_GETACL.9
@@ -0,0 +1,96 @@
+.\"-
+.\" Copyright (c) 1999, 2000, 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$
+.\"
+.Dd December 23, 1999
+.Os
+.Dt VOP_GETACL 9
+.Sh NAME
+.Nm VOP_GETACL
+.Nd retrieve access control list for a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/acl.h
+.Ft int
+.Fn VOP_GETACL "struct vnode *vp" "acl_type_t type" "struct acl *aclp" "struct ucred *cred" "struct thread *td"
+.Sh DESCRIPTION
+This vnode call may be used to retrieve the access control list (ACL) from a
+file or directory.
+.Pp
+Its arguments are:
+.Bl -tag -width type
+.It Fa vp
+The vnode of the file or directory.
+.It Fa type
+The type of ACL to retrieve.
+.It Fa aclp
+A pointer to an ACL structure to receive the ACL data.
+.It Fa cred
+The user credentials to use in authorizing the request.
+.It Fa td
+The thread requesting the ACL.
+.El
+.Pp
+The
+.Fa cred
+pointer may be
+.Dv NULL
+to indicate that access control checks are not to be performed, if possible.
+This cred setting might be used to allow the kernel to authorize ACL
+retrieval that the active process might not be permitted to do.
+.Pp
+The vnode ACL interface defines the syntax, and not semantics, of file and
+directory ACL interfaces.
+More information about ACL management in kernel may be found in
+.Xr acl 9 .
+.Sh LOCKS
+The vnode will be locked on entry and should remain locked on return.
+.Sh RETURN VALUES
+If the
+.Fa aclp
+pointer will point to a valid ACL, then zero is returned.
+Otherwise, an appropriate error code is returned.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The ACL type passed is invalid for this vnode.
+.It Bq Er EACCES
+The the caller does not have the appropriate privilege.
+.It Bq Er ENOMEM
+Sufficient memory is not available to fulfill the request.
+.It Bq Er EOPNOTSUPP
+The file system does not support
+.Fn VOP_GETACL .
+.El
+.Sh SEE ALSO
+.Xr acl 9 ,
+.Xr vnode 9 ,
+.Xr VOP_ACLCHECK 9 ,
+.Xr VOP_SETACL 9
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
diff --git a/share/man/man9/VOP_GETEXTATTR.9 b/share/man/man9/VOP_GETEXTATTR.9
new file mode 100644
index 0000000..0971c27
--- /dev/null
+++ b/share/man/man9/VOP_GETEXTATTR.9
@@ -0,0 +1,133 @@
+.\"-
+.\" Copyright (c) 1999, 2000, 2001, 2003 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$
+.\"
+.Dd December 23, 1999
+.Os
+.Dt VOP_GETEXTATTR 9
+.Sh NAME
+.Nm VOP_GETEXTATTR
+.Nd retrieve named extended attribute from a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/extattr.h
+.Ft int
+.Fo VOP_GETEXTATTR
+.Fa "struct vnode *vp"
+.Fa "int attrnamespace"
+.Fa "const char *name"
+.Fa "struct uio *uio"
+.Fa "size_t *size"
+.Fa "struct ucred *cred"
+.Fa "struct thread *td"
+.Fc
+.Sh DESCRIPTION
+This vnode call may be used to retrieve a specific named extended attribute
+from a file or directory.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa attrnamespace"
+.It Fa vp
+The vnode of the file or directory.
+.It Fa attrnamespace
+Integer constant indicating which extended attribute namespace the attribute
+name is present in.
+.It Fa name
+Pointer to a null-terminated character string containing the attribute name.
+.It Fa uio
+The location of the data to be read.
+.It Fa size
+If not
+.Dv NULL ,
+on return it will contain the number of bytes required to read all of the
+attribute data.
+In most cases
+.Fa uio
+will be
+.Dv NULL
+when
+.Fa size
+is not, and vise versa.
+.It Fa cred
+The user credentials to use in authorizing the request.
+.It Fa td
+The thread requesting the extended attribute.
+.El
+.Pp
+The
+.Fa cred
+pointer may be
+.Dv NULL
+to indicate that access control checks are not to be performed, if possible.
+This
+.Fa cred
+setting might be used to allow the kernel to authorize extended attribute
+retrieval that the active process might not be permitted to do.
+.Pp
+Extended attribute semantics may vary by file system implementing the call.
+More information on extended attributes may be found in
+.Xr extattr 9 .
+.Sh LOCKS
+The vnode will be locked on entry and should remain locked on return.
+.Sh RETURN VALUES
+On success, zero will be returned, and the uio structure will be updated to
+reflect data read.
+Otherwise, an appropriate error code is returned.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENOATTR
+The requested attribute was not defined for this vnode.
+.It Bq Er EACCES
+The the caller does not have the appropriate privilege.
+.It Bq Er ENXIO
+The request was not valid in this file system for the specified vnode and
+attribute name.
+.It Bq Er ENOMEM
+Sufficient memory is not available to fulfill the request.
+.It Bq Er EFAULT
+The uio structure refers to an invalid userspace address.
+.It Bq Er EINVAL
+The
+.Fa name ,
+.Fa namespace,
+or
+.Fa uio
+argument is invalid.
+.It Bq Er EOPNOTSUPP
+The file system does not support
+.Fn VOP_GETEXTATTR .
+.El
+.Sh SEE ALSO
+.Xr extattr 9 ,
+.Xr vnode 9 ,
+.Xr VOP_LISTEXTATTR 9 ,
+.Xr VOP_SETEXTATTR 9
+.Sh BUGS
+By passing in the empty string as the attribute name, some file systems
+will return a list of defined names on the target vnode for the
+requested namespace.
+This is a bad API, and will be replaced by an explicit VOP.
diff --git a/share/man/man9/VOP_GETPAGES.9 b/share/man/man9/VOP_GETPAGES.9
new file mode 100644
index 0000000..ffac609
--- /dev/null
+++ b/share/man/man9/VOP_GETPAGES.9
@@ -0,0 +1,162 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\" Copyright 2003, Garrett A. Wollman
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd September 27, 2003
+.Os
+.Dt VOP_GETPAGES 9
+.Sh NAME
+.Nm VOP_GETPAGES ,
+.Nm VOP_PUTPAGES
+.Nd read or write VM pages from a file
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In vm/vm.h
+.Ft int
+.Fn VOP_GETPAGES "struct vnode *vp" "vm_page_t *m" "int count" "int reqpage" "vm_ooffset_t offset"
+.Ft int
+.Fn VOP_PUTPAGES "struct vnode *vp" "vm_page_t *m" "int count" "int sync" "int *rtvals" "vm_ooffset_t offset"
+.Sh DESCRIPTION
+The
+.Fn VOP_GETPAGES
+method is called to read in pages of virtual memory which are backed by
+ordinary files.
+If other adjacent pages are backed by adjacent regions of the same file,
+.Fn VOP_GETPAGES
+is requested to read those pages as well, although it is not required to
+do so.
+The
+.Fn VOP_PUTPAGES
+method does the converse; that is to say, it writes out adjacent dirty
+pages of virtual memory.
+.Pp
+On entry, the vnode lock is held but neither the page queue nor VM object
+locks are held.
+Both methods return in the same state on both success and error returns.
+.Pp
+The arguments are:
+.Bl -tag -width reqpage
+.It Fa vp
+The file to access.
+.It Fa m
+Pointer to the first element of an array of contiguous pages representing a
+contiguous region of the file to be read or written.
+.It Fa count
+The number of pages in the array.
+.It Fa sync
+.Dv VM_PAGER_PUT_SYNC
+if the write should be synchronous.
+.It Fa rtvals
+An array of VM system result codes indicating the status of each
+page written by
+.Fn VOP_PUTPAGES .
+.It Fa reqpage
+The index in the page array of the requested page; i.e., the one page which
+the implementation of this method must handle.
+.It Fa offset
+Offset in the file at which the mapped pages begin.
+.El
+.Pp
+The status of the
+.Fn VOP_PUTPAGES
+method is returned on a page-by-page basis in the array
+.Fa rtvals[] .
+The possible status values are as follows:
+.Bl -tag -width VM_PAGER_ERROR
+.It Dv VM_PAGER_OK
+The page was successfully written.
+The implementation must call
+.Xr vm_page_undirty 9
+to mark the page as clean.
+.It Dv VM_PAGER_PEND
+The page was scheduled to be written asynchronously.
+When the write completes, the completion callback should
+call
+.Xr vm_object_pip_wakeup 9
+and
+.Xr vm_page_io_finish 9
+to clear the busy flag and awaken any other threads waiting for this page,
+in addition to calling
+.Xr vm_page_undirty 9 .
+.It Dv VM_PAGER_BAD
+The page was entirely beyond the end of the backing file.
+This condition should not be possible if the vnode's file system
+is correctly implemented.
+.It Dv VM_PAGER_ERROR
+The page could not be written because of an error on the underlying storage
+medium or protocol.
+.It Dv VM_PAGER_FAIL
+Treated identically to
+.Dv VM_PAGER_ERROR
+.It Dv VM_PAGER_AGAIN
+The page was not handled by this request.
+.El
+.Pp
+The
+.Fn VOP_GETPAGES
+method is expected to release any pages in
+.Fa m
+that it does not successfully handle, by calling
+.Xr vm_page_free 9 .
+When it succeeds,
+.Fn VOP_GETPAGES
+must set the valid bits appropriately, clear the dirty bit
+(using
+.Xr vm_page_undirty 9 ) ,
+either activate the page (if its wanted bit is set)
+or deactivate it (otherwise), and finally call
+.Xr vm_page_wakeup 9
+to arouse any threads currently waiting for the page to be faulted in,
+for each page read.
+.Sh RETURN VALUES
+If it successfully reads
+.Fa m[reqpage] ,
+.Fn VOP_GETPAGES
+returns
+.Dv VM_PAGER_OK ;
+otherwise,
+.Dv VM_PAGER_ERROR .
+By convention, the return value of
+.Fn VOP_PUTPAGES
+is
+.Fa rtvals[0] .
+.Sh SEE ALSO
+.Xr vm_object_pip_wakeup 9 ,
+.Xr vm_page_free 9 ,
+.Xr vm_page_io_finish 9 ,
+.Xr vm_page_undirty 9 ,
+.Xr vm_page_wakeup 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson
+and then substantially rewritten by
+.An Garrett Wollman .
diff --git a/share/man/man9/VOP_GETVOBJECT.9 b/share/man/man9/VOP_GETVOBJECT.9
new file mode 100644
index 0000000..e2e0ba4
--- /dev/null
+++ b/share/man/man9/VOP_GETVOBJECT.9
@@ -0,0 +1,113 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Boris Popov
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd September 10, 2000
+.Os
+.Dt VOP_CREATEVOBJECT 9
+.Sh NAME
+.Nm VOP_CREATEVOBJECT ,
+.Nm VOP_DESTROYVOBJECT ,
+.Nm VOP_GETVOBJECT
+.Nd VM object interaction
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_CREATEVOBJECT "struct vnode *vp" "struct ucred *cred" "struct thread *td"
+.Ft int
+.Fn VOP_DESTROYVOBJECT "struct vnode *vp"
+.Ft int
+.Fn VOP_GETVOBJECT "struct vnode *vp" "struct vm_object **objpp"
+.Sh DESCRIPTION
+These calls are used to control the association of a VM object
+with a particular vnode.
+.Pp
+The arguments specific to these functions are:
+.Bl -tag -width objpp
+.It Fa vp
+The vnode of the file.
+.It Fa objpp
+The VM object being returned, or
+.Dv NULL
+if the caller wants to test for the existence
+of the VM object).
+.El
+.Pp
+.Xr VFS 9
+invokes
+.Fn VOP_CREATEVOBJECT
+when it needs to create a VM object for the given
+.Xr vnode 9 .
+File system code may pass this call down to the underlying file system.
+This VOP can be called multiple times,
+and file system code should ignore any additional calls,
+exiting with a zero return code.
+.Pp
+.Fn VOP_DESTROYVOBJECT
+is called when a
+.Xr vnode 9
+is recycled.
+.Pp
+.Fn VOP_GETVOBJECT
+should be used by all kernel code to get a VM object.
+.\" XXX What is the next sentence trying to tell people?
+The returned VM object may belong to a different file system in the case
+of stacked mounts.
+.Pp
+.Xr VFS 9
+has three functions which perform standard operations by creating
+and destroying VM objects.
+These functions are:
+.Fn vop_stdcreatevobject ,
+.Fn vop_stddestroyvobject
+and
+.Fn vop_stdgetvobject .
+.Pp
+.Em Note :
+a
+.Xr vnode 9
+should be locked on entry and must be left locked on exit.
+.Sh RETURN VALUES
+The
+.Fn VOP_CREATEVOBJECT ,
+.Fn VOP_DESTROYVOBJECT
+and
+.Fn VOP_GETVOBJECT
+functions return zero on success, or a non-zero value on failure.
+Zero is returned on success, otherwise an error is returned.
+.Sh EXAMPLES
+.\" XXX Why is this code here when it does not use the functions
+.\" described in this manual page?
+By default, file systems leave VM object handling to the
+.Fn vop_std*
+functions.
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr VOP_GETPAGES 9 ,
+.Xr VOP_PUTPAGES 9
+.Sh AUTHORS
+This manual page was written by
+.An Boris Popov .
diff --git a/share/man/man9/VOP_INACTIVE.9 b/share/man/man9/VOP_INACTIVE.9
new file mode 100644
index 0000000..f74b020
--- /dev/null
+++ b/share/man/man9/VOP_INACTIVE.9
@@ -0,0 +1,113 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_INACTIVE 9
+.Sh NAME
+.Nm VOP_INACTIVE ,
+.Nm VOP_RECLAIM
+.Nd reclaim file system resources for a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_INACTIVE "struct vnode *vp" "struct thread *td"
+.Ft int
+.Fn VOP_RECLAIM "struct vnode *vp" "struct thread *td"
+.Sh DESCRIPTION
+The arguments are:
+.Bl -tag -width 2n
+.It Fa vp
+The vnode being reclaimed.
+.El
+.Pp
+.Fn VOP_INACTIVE
+is called when the kernel is no longer using the vnode.
+This may be
+because the reference count reaches zero or it may be that the
+file system is being forcibly unmounted while there are open files.
+It can be used to reclaim space for
+.Sq open but deleted
+files.
+.Pp
+.Fn VOP_RECLAIM
+is called when a vnode is being reused for a different file system.
+Any file system specific resources associated with the vnode should be
+freed.
+.Sh LOCKS
+For VOP_INACTIVE, the
+.Fa vp
+will be locked on entry.
+Your VOP_INACTIVE code
+must unlock the
+.Fa vp
+prior to returning.
+.Pp
+For VOP_RECLAIM, the
+.Fa vp
+will not be locked on entry and should be left unlocked on return.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_inactive(struct vnode *vp, struct thread *td)
+{
+ if (link count of vp == 0) {
+ /*
+ * Reclaim space in file system for vp.
+ */
+ ...;
+ }
+ VOP_UNLOCK(vp, 0, td);
+
+ return 0;
+}
+
+int
+vop_reclaim(struct vnode *vp, struct thread *td)
+{
+ /*
+ * Clean out the name cache.
+ */
+ cache_purge(vp);
+
+ /*
+ * Free file system related data.
+ */
+ ...;
+
+ return 0;
+}
+.Ed
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_IOCTL.9 b/share/man/man9/VOP_IOCTL.9
new file mode 100644
index 0000000..6b2f94a
--- /dev/null
+++ b/share/man/man9/VOP_IOCTL.9
@@ -0,0 +1,84 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_IOCTL 9
+.Sh NAME
+.Nm VOP_IOCTL
+.Nd device specific control
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_IOCTL "struct vnode *vp" "u_long command" "caddr_t data" "int fflag" "struct ucred *cred" "struct thread *td"
+.Sh DESCRIPTION
+Manipulate a file in device dependent ways.
+.Pp
+Its arguments are:
+.Bl -tag -width command
+.It Fa vp
+The vnode of the file (normally representing a device).
+.It Fa command
+The device specific operation to perform.
+.It Fa data
+Extra data for the specified operation.
+.It Fa fflag
+Some flags ???
+.It Fa cred
+The caller's credentials.
+.It Fa td
+The calling thread.
+.El
+.Pp
+Most file systems do not implement this entry point.
+.Sh LOCKS
+The file should not be locked on entry.
+.Sh RETURN VALUES
+If successful, zero is returned, otherwise an appropriate error code.
+.Pp
+If the ioctl is not recognized or not handled,
+.Er ENOTTY
+should be returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_ioctl(struct vnode *vp, int command, caddr_t data, int fflag,
+ struct ucred *cred, struct thread *td)
+{
+
+ return ENOTTY;
+}
+.Ed
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_LEASE.9 b/share/man/man9/VOP_LEASE.9
new file mode 100644
index 0000000..becf68b
--- /dev/null
+++ b/share/man/man9/VOP_LEASE.9
@@ -0,0 +1,61 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd September 24, 1999
+.Os
+.Dt VOP_LEASE 9
+.Sh NAME
+.Nm VOP_LEASE
+.Nd "validate a vnode for a particular set of credentials and operation type"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft int
+.Fn VOP_LEASE "struct vnode *vp" "struct thread *td" "struct ucred *cred" "int type"
+.Sh DESCRIPTION
+This entry point is currently not implemented.
+The idea is to
+validate a vnode for a particular set of user credentials and operation type.
+The two operation types supported are
+.Dv LEASE_READ
+and
+.Dv LEASE_WRITE .
+.Sh RETURN VALUES
+The function currently returns 0 in all cases.
+.Sh ERRORS
+.Sh SEE ALSO
+.Xr VOP_READ 9 ,
+.Xr VOP_WRITE 9
+.Sh LOCKS
+The vnode must be exclusively locked on entry, and should remain exclusively
+locked on return.
+.Sh AUTHORS
+This manual page was written by
+.An Matt Dillon .
diff --git a/share/man/man9/VOP_LINK.9 b/share/man/man9/VOP_LINK.9
new file mode 100644
index 0000000..559526c
--- /dev/null
+++ b/share/man/man9/VOP_LINK.9
@@ -0,0 +1,114 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_LINK 9
+.Sh NAME
+.Nm VOP_LINK
+.Nd create a new name for a file
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_LINK "struct vnode *dvp" "struct vnode *vp" "struct componentname *cnp"
+.Sh DESCRIPTION
+This links a new name in the specified directory to an existing file.
+.Pp
+Its arguments are:
+.Bl -tag -width 8n
+.It Fa dvp
+The vnode of the directory.
+.It Fa vp
+The vnode of the file to be linked.
+.It Fa cnp
+Pathname information about the file.
+.El
+.Pp
+The pathname info should
+.Em not
+be released on exit because it is done
+by the caller.
+The directory and file vnodes should
+.Em not
+be released on exit.
+.Sh LOCKS
+.Fn VOP_LINK
+expects the directory and file vnodes to be locked on entry and will leave
+the vnodes locked on return.
+.Sh RETURN VALUES
+Zero is returned if the file was linked successfully, otherwise an
+error is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_link(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
+{
+ int error = 0;
+
+ if (vp->v_mount != dvp->v_mount)
+ return (EXDEV);
+
+ if (vp would have too many links)
+ return (EMLINK);
+
+ if (vp is immutable)
+ return (EPERM);
+
+ /*
+ * Increment link count of vp and write back the on-disc version of it.
+ */
+ ...;
+
+ if (!error) {
+ /*
+ * Add the new name to the directory.
+ */
+ ...;
+ }
+
+ return error;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EMLINK
+The file has too many links.
+.It Bq Er EPERM
+The file is immutable.
+.It Bq Er EXDEV
+A hard link is not possible between different file systems.
+.El
+.Sh SEE ALSO
+.Xr vn_lock 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was originally written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_LISTEXTATTR.9 b/share/man/man9/VOP_LISTEXTATTR.9
new file mode 100644
index 0000000..4c8b744
--- /dev/null
+++ b/share/man/man9/VOP_LISTEXTATTR.9
@@ -0,0 +1,136 @@
+.\"-
+.\" Copyright (c) 2003 Network Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project in part by Network
+.\" Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd August 19, 2005
+.Os
+.Dt VOP_LISTEXTATTR 9
+.Sh NAME
+.Nm VOP_LISTEXTATTR
+.Nd retrieve a list of named extended attribute from a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/extattr.h
+.Ft int
+.Fo VOP_LISTEXTATTR
+.Fa "struct vnode *vp"
+.Fa "int attrnamespace"
+.Fa "struct uio *uio"
+.Fa "size_t *size"
+.Fa "struct ucred *cred"
+.Fa "struct thread *td"
+.Fc
+.Sh DESCRIPTION
+This vnode call may be used to retrieve a list of named extended attributes
+from a specified namespace on a file or directory.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa attrnamespace"
+.It Fa vp
+The vnode of the file or directory.
+.It Fa attrnamespace
+Integer constant indicating which extended attribute namespace the attribute
+name is present in.
+.It Fa uio
+The location of the data to be read.
+The resulting data will be a list of attribute names.
+Each list entry consists of a single byte containing the length of
+the attribute name, followed by the attribute name.
+The attribute name is not terminated by
+.Tn ASCII
+.Dv NUL .
+.It Fa size
+If not
+.Dv NULL ,
+on return it will contain the number of bytes required to read the list.
+In most cases
+.Fa uio
+will be
+.Dv NULL
+when
+.Fa size
+is not, and vise versa.
+.It Fa cred
+The user credentials to use in authorizing the request.
+.It Fa td
+The thread requesting the extended attribute.
+.El
+.Pp
+The
+.Fa cred
+pointer may be
+.Dv NULL
+to indicate that access control checks are not to be performed, if possible.
+This
+.Fa cred
+setting might be used to allow the kernel to authorize extended attribute
+retrieval that the active process might not be permitted to do.
+.Pp
+Extended attribute semantics may vary by file system implementing the call.
+More information on extended attributes may be found in
+.Xr extattr 9 .
+.Sh LOCKS
+The vnode will be locked on entry and should remain locked on return.
+.Sh RETURN VALUES
+On success, zero will be returned, and the
+.Fa uio
+structure will be updated to
+reflect the list read.
+Otherwise, an appropriate error code is returned.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EACCES
+The caller does not have the appropriate privilege.
+.It Bq Er ENXIO
+The request was not valid in this file system for the specified vnode and
+attribute name.
+.It Bq Er ENOMEM
+Sufficient memory is not available to fulfill the request.
+.It Bq Er EFAULT
+The
+.Fa uio
+structure refers to an invalid userspace address.
+.It Bq Er EINVAL
+The
+.Fa namespace
+or
+.Fa uio
+argument is invalid.
+.It Bq Er EOPNOTSUPP
+The file system does not support
+.Fn VOP_LISTEXTATTR .
+.El
+.Sh SEE ALSO
+.Xr extattr 9 ,
+.Xr vnode 9 ,
+.Xr VOP_GETEXTATTR 9 ,
+.Xr VOP_SETEXTATTR 9
diff --git a/share/man/man9/VOP_LOCK.9 b/share/man/man9/VOP_LOCK.9
new file mode 100644
index 0000000..ab4c53c
--- /dev/null
+++ b/share/man/man9/VOP_LOCK.9
@@ -0,0 +1,189 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd February 25, 2008
+.Os
+.Dt VOP_LOCK 9
+.Sh NAME
+.Nm VOP_LOCK ,
+.Nm VOP_UNLOCK ,
+.Nm VOP_ISLOCKED ,
+.Nm vn_lock
+.Nd serialize access to a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/lock.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_LOCK "struct vnode *vp" "int flags"
+.Ft int
+.Fn VOP_UNLOCK "struct vnode *vp" "int flags"
+.Ft int
+.Fn VOP_ISLOCKED "struct vnode *vp"
+.Ft int
+.Fn vn_lock "struct vnode *vp" "int flags"
+.Sh DESCRIPTION
+These calls are used to serialize access to the file system, such as
+to prevent two writes to the same file from happening at the
+same time.
+.Pp
+The arguments are:
+.Bl -tag -width flags
+.It Fa vp
+The vnode being locked or unlocked.
+.It Fa flags
+One of the lock request types:
+.Pp
+.Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
+.It Dv LK_SHARED
+Shared lock.
+.It Dv LK_EXCLUSIVE
+Exclusive lock.
+.It Dv LK_UPGRADE
+Shared-to-exclusive upgrade.
+.It Dv LK_DOWNGRADE
+Exclusive-to-shared downgrade.
+.It Dv LK_RELEASE
+Release any type of lock.
+.It Dv LK_DRAIN
+Wait for all lock activity to end.
+.El
+.Pp
+The lock type may be
+.Em or Ns 'ed
+with these lock flags:
+.Pp
+.Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
+.It Dv LK_NOWAIT
+Do not sleep to wait for lock.
+.It Dv LK_SLEEPFAIL
+Sleep, then return failure.
+.It Dv LK_CANRECURSE
+Allow recursive exclusive lock.
+.It Dv LK_NOWITNESS
+Instruct
+.Xr witness 4
+to ignore this instance.
+.El
+.Pp
+The lock type may be
+.Em or Ns 'ed
+with these control flags:
+.Pp
+.Bl -tag -width ".Dv LK_CANRECURSE" -offset indent -compact
+.It Dv LK_INTERLOCK
+Specify when the caller already has a simple lock
+.Fn ( VOP_LOCK
+will unlock the simple lock after getting the lock).
+.It Dv LK_RETRY
+Retry until locked.
+.El
+.Pp
+Kernel code should use
+.Fn vn_lock
+to lock a vnode rather than calling
+.Fn VOP_LOCK
+directly.
+.Fn vn_lock
+also does not want a thread specified as argument but it
+assumes curthread to be used.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+struct vopnode {
+ int von_flag;
+ /*
+ * Other file system specific data.
+ */
+ ...;
+};
+#define VON_LOCKED 1
+#define VON_WANTED 2
+#define VTOVON(vp) ((struct vopnode *) (vp)->v_data)
+
+int
+vop_lock(struct vnode *vp)
+{
+ struct vopnode* vop;
+
+start:
+ while (vp->v_flag & VXLOCK) {
+ vp->v_flag |= VXWANT;
+ tsleep((caddr_t)vp, PINOD, "voplk1", 0);
+ }
+ if (vp->v_tag == VT_NON)
+ return ENOENT;
+
+ vop = VTOVON(vp);
+ if (vop->von_flag & VON_LOCKED) {
+ vop->von_flag |= VON_WANTED;
+ tsleep((caddr_t) vop, PINOD, "voplk2", 0);
+ goto start;
+ }
+
+ vop->von_flag |= VON_LOCKED;
+
+ return 0;
+}
+
+int
+vop_unlock(struct vnode *vp)
+{
+ struct vopnode *vop = VTOVON(vp);
+
+ if ((vop->von_flag & VON_LOCKED) == 0) {
+ panic("vop_unlock not locked");
+ }
+ vop->von_flag &= ~VON_LOCKED;
+ if (vop->von_flag & VON_WANTED) {
+ vop->von_flag &= ~VON_WANTED;
+ wakeup((caddr_t) vop);
+ }
+
+ return 0;
+}
+
+int
+vop_islocked(struct vnode *vp)
+{
+ struct vopnode *vop = VTOVON(vp);
+
+ if (vop->von_flag & VON_LOCKED)
+ return 1;
+ else
+ return 0;
+}
+.Ed
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_LOOKUP.9 b/share/man/man9/VOP_LOOKUP.9
new file mode 100644
index 0000000..270f83f
--- /dev/null
+++ b/share/man/man9/VOP_LOOKUP.9
@@ -0,0 +1,449 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 24, 1997
+.Os
+.Dt VOP_LOOKUP 9
+.Sh NAME
+.Nm VOP_LOOKUP
+.Nd lookup a component of a pathname
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/namei.h
+.Ft int
+.Fn VOP_LOOKUP "struct vnode *dvp" "struct vnode **vpp" "struct componentname *cnp"
+.Sh DESCRIPTION
+This entry point looks up a single pathname component in a given directory.
+.Pp
+Its arguments are:
+.Bl -tag -width vpp
+.It Fa dvp
+The locked vnode of the directory to search.
+.It Fa vpp
+The address of a variable where the resulting locked vnode should be stored.
+.It Fa cnp
+The pathname component to be searched for.
+.El
+.Pp
+.Fa Cnp
+is a pointer to a componentname structure defined as follows:
+.Bd -literal
+struct componentname {
+ /*
+ * Arguments to lookup.
+ */
+ u_long cn_nameiop; /* namei operation */
+ u_long cn_flags; /* flags to namei */
+ struct thread *cn_thread; /* thread requesting lookup */
+ struct ucred *cn_cred; /* credentials */
+ /*
+ * Shared between lookup and commit routines.
+ */
+ char *cn_pnbuf; /* pathname buffer */
+ char *cn_nameptr; /* pointer to looked up name */
+ long cn_namelen; /* length of looked up component */
+ u_long cn_hash; /* hash value of looked up name */
+ long cn_consume; /* chars to consume in lookup() */
+};
+.Ed
+.Pp
+Convert a component of a pathname into a pointer to a locked vnode.
+This is a very central and rather complicated routine.
+If the file system is not maintained in a strict tree hierarchy,
+this can result in a deadlock situation.
+.Pp
+The
+.Fa cnp->cn_nameiop
+argument is
+.Dv LOOKUP ,
+.Dv CREATE ,
+.Dv RENAME ,
+or
+.Dv DELETE
+depending on the intended use of the object.
+When
+.Dv CREATE ,
+.Dv RENAME ,
+or
+.Dv DELETE
+is specified, information usable in
+creating, renaming, or deleting a directory entry may be calculated.
+.Pp
+Overall outline of VOP_LOOKUP:
+.Bd -ragged -offset indent
+Check accessibility of directory.
+Look for name in cache, if found, then return name.
+Search for name in directory, goto to found or notfound as appropriate.
+.Ed
+.Pp
+notfound:
+.Bd -ragged -offset indent
+If creating or renaming and at end of pathname,
+return
+.Er EJUSTRETURN ,
+leaving info on available slots else return
+.Er ENOENT .
+.Ed
+.Pp
+found:
+.Bd -ragged -offset indent
+If at end of path and deleting, return information to allow delete.
+If at end of path and renaming, lock target
+inode and return info to allow rename.
+If not at end, add name to cache; if at end and neither creating
+nor deleting, add name to cache.
+.Ed
+.Sh LOCKS
+The directory,
+.Fa dvp
+should be locked on entry.
+If an error (note: the return value
+.Er EJUSTRETURN
+is not considered an error)
+is detected, it will be returned locked.
+Otherwise, it will be unlocked unless both
+.Dv LOCKPARENT
+and
+.Dv ISLASTCN
+are specified in
+.Fa cnp->cn_flags .
+If an entry is found in the directory, it will be returned locked.
+.Sh RETURN VALUES
+Zero is returned with
+.Fa *vpp
+set to the locked vnode of the file if the component is found.
+If the component being searched for is ".", then the vnode just has
+an extra reference added to it with
+.Xr vref 9 .
+The caller must take care to release the locks appropriately in this
+case.
+.Pp
+If the component is not found and the operation is
+.Dv CREATE
+or
+.Dv RENAME ,
+the flag
+.Dv ISLASTCN
+is specified and the operation would succeed, the special return value
+.Er EJUSTRETURN
+is returned.
+Otherwise, an appropriate error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_lookup(struct vnode *dvp,
+ struct vnode **vpp,
+ struct componentname *cnp)
+{
+ int error;
+ int nameiop = cnp->cn_nameiop;
+ int flags = cnp->cn_flags;
+ int lockparent = flags & LOCKPARENT;
+ int islastcn = flags & ISLASTCN;
+ struct vnode *vp = NULL;
+
+ /*
+ * Check accessibility of directory.
+ */
+ if (dvp->v_type != VDIR)
+ return ENOTDIR;
+
+ error = VOP_ACCESS(dvp, VEXEC, cred, cnp->cn_thread);
+ if (error)
+ return (error);
+
+ if (islastcn && (dvp->v_mount->mnt_flag & MNT_RDONLY) &&
+ (cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME))
+ return (EROFS);
+
+ /*
+ * Check name cache for directory/name pair. This returns ENOENT
+ * if the name is known not to exist, -1 if the name was found, or
+ * zero if not.
+ */
+ error = cache_lookup(dvp, vpp, cnp);
+ if (error) {
+ int vpid;
+
+ if (error = ENOENT)
+ return error;
+
+ vp = *vpp;
+ if (dvp == vp) { /* lookup on "." */
+ VREF(vp);
+ error = 0;
+ } else if (flags & ISDOTDOT) {
+ /*
+ * We need to unlock the directory before getting
+ * the locked vnode for ".." to avoid deadlocks.
+ */
+ VOP_UNLOCK(dvp);
+ error = vget(vp, 1);
+ if (!error) {
+ if (lockparent && islastcn)
+ error = VOP_LOCK(dvp);
+ }
+ } else {
+ error = vget(vp, 1);
+ if (error || !(lockparent && islastcn)) {
+ VOP_UNLOCK(dvp);
+ }
+ }
+
+ /*
+ * Check that the capability number did not change
+ * while we were waiting for the lock.
+ */
+ if (!error) {
+ if (vpid == vp->v_id) {
+ /*
+ * dvp is locked if lockparent && islastcn.
+ * vp is locked.
+ */
+ return (0);
+ }
+ vput(vp);
+
+ if (dvp != vp && lockparent && islastcn)
+ VOP_UNLOCK(pdp);
+ }
+
+ /*
+ * Re-lock dvp for the directory search below.
+ */
+ error = VOP_LOCK(dvp);
+ if (error) {
+ return (error);
+ }
+
+ *vpp = NULL;
+ }
+
+ /*
+ * Search dvp for the component cnp->cn_nameptr.
+ */
+ ...;
+
+ if (!found) {
+ if ((nameiop == CREATE || nameiop == RENAME)
+ && islastcn
+ && directory dvp has not been removed) {
+ /*
+ * Check for write access on directory.
+ */
+
+ /*
+ * Possibly record the position of a slot in the directory
+ * large enough for the new component name. This can be
+ * recorded in the vnode private data for dvp.
+ * Set the SAVENAME flag to hold onto the pathname for use
+ * later in VOP_CREATE or VOP_RENAME.
+ */
+ cnp->cn_flags |= SAVENAME;
+ if (!lockparent)
+ /*
+ * Note that the extra data recorded above is only
+ * useful if lockparent is specified.
+ */
+ VOP_UNLOCK(dvp);
+
+ return EJUSTRETURN;
+ }
+
+ /*
+ * Consider inserting name into cache.
+ */
+ if ((cnp->cn_flags & MAKEENTRY) && nameiop != CREATE)
+ cache_enter(dvp, NULL, cnp);
+
+ return ENOENT;
+ } else {
+ /*
+ * If deleting, and at end of pathname, return parameters
+ * which can be used to remove file. If the wantparent flag
+ * isn't set, we return only the directory, otherwise we go on
+ * and lock the inode, being careful with ".".
+ */
+ if (nameiop == DELETE && islastcn) {
+ /*
+ * Check for write access on directory.
+ */
+ error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
+ if (error)
+ return (error);
+
+ if (found entry is same as dvp) {
+ VREF(dvp);
+ *vpp = dvp;
+ return 0;
+ }
+
+ error = VFS_VGET(dvp->v_mount, ..., &vp);
+ if (error)
+ return error;
+
+ if (directory is sticky
+ && cred->cr_uid != 0
+ && cred->cr_uid != owner of dvp
+ && owner of vp != cred->cr_uid) {
+ vput(vp);
+ return EPERM;
+ }
+ *vpp = vp;
+ if (!lockparent)
+ VOP_UNLOCK(dvp);
+
+ return 0;
+ }
+
+ /*
+ * If rewriting (RENAME), return the inode and the
+ * information required to rewrite the present directory
+ * Must get inode of directory entry to verify it's a
+ * regular file, or empty directory.
+ */
+ if (nameiop == RENAME && wantparent && islastcn) {
+ error = VOP_ACCESS(dvp, VWRITE, cred, cnp->cn_thread);
+ if (error)
+ return (error);
+
+ /*
+ * Check for "."
+ */
+ if (found entry is same as dvp)
+ return EISDIR;
+
+ error = VFS_VGET(dvp->v_mount, ..., &vp);
+ if (error)
+ return error;
+ *vpp = vp;
+ /*
+ * Save the name for use in VOP_RENAME later.
+ */
+ cnp->cn_flags |= SAVENAME;
+ if (!lockparent)
+ VOP_UNLOCK(dvp);
+
+ return 0;
+ }
+
+ /*
+ * Step through the translation in the name. We do not `vput' the
+ * directory because we may need it again if a symbolic link
+ * is relative to the current directory. Instead we save it
+ * unlocked as "pdp". We must get the target inode before unlocking
+ * the directory to insure that the inode will not be removed
+ * before we get it. We prevent deadlock by always fetching
+ * inodes from the root, moving down the directory tree. Thus
+ * when following backward pointers ".." we must unlock the
+ * parent directory before getting the requested directory.
+ * There is a potential race condition here if both the current
+ * and parent directories are removed before the VFS_VGET for the
+ * inode associated with ".." returns. We hope that this occurs
+ * infrequently since we cannot avoid this race condition without
+ * implementing a sophisticated deadlock detection algorithm.
+ * Note also that this simple deadlock detection scheme will not
+ * work if the file system has any hard links other than ".."
+ * that point backwards in the directory structure.
+ */
+ if (flags & ISDOTDOT) {
+ VOP_UNLOCK(dvp); /* race to get the inode */
+ error = VFS_VGET(dvp->v_mount, ..., &vp);
+ if (error) {
+ VOP_LOCK(dvp);
+ return (error);
+ }
+ if (lockparent && islastcn) {
+ error = VOP_LOCK(dvp);
+ if (error) {
+ vput(vp);
+ return error;
+ }
+ }
+ *vpp = vp;
+ } else if (found entry is same as dvp) {
+ VREF(dvp); /* we want ourself, ie "." */
+ *vpp = dvp;
+ } else {
+ error = VFS_VGET(dvp->v_mount, ..., &vp);
+ if (error)
+ return (error);
+ if (!lockparent || !islastcn)
+ VOP_UNLOCK(dvp);
+ *vpp = vp;
+ }
+
+ /*
+ * Insert name into cache if appropriate.
+ */
+ if (cnp->cn_flags & MAKEENTRY)
+ cache_enter(dvp, *vpp, cnp);
+ return (0);
+ }
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENOTDIR
+The vnode
+.Fa dvp
+does not represent a directory.
+.It Bq Er ENOENT
+The component
+.Fa dvp
+was not found in this directory.
+.It Bq Er EACCES
+Access for the specified operation is denied.
+.It Bq Er EJUSTRETURN
+A
+.Dv CREATE
+or
+.Dv RENAME
+operation would be successful.
+.El
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr VOP_ACCESS 9 ,
+.Xr VOP_CREATE 9 ,
+.Xr VOP_MKDIR 9 ,
+.Xr VOP_MKNOD 9 ,
+.Xr VOP_RENAME 9 ,
+.Xr VOP_SYMLINK 9
+.Sh HISTORY
+The function
+.Nm
+appeared in
+.Bx 4.3 .
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson ,
+with some text from comments in
+.Pa ufs_lookup.c .
diff --git a/share/man/man9/VOP_OPENCLOSE.9 b/share/man/man9/VOP_OPENCLOSE.9
new file mode 100644
index 0000000..959e095
--- /dev/null
+++ b/share/man/man9/VOP_OPENCLOSE.9
@@ -0,0 +1,114 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 5, 2007
+.Os
+.Dt VOP_OPEN 9
+.Sh NAME
+.Nm VOP_OPEN ,
+.Nm VOP_CLOSE
+.Nd open or close a file
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_OPEN "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td" "struct file *fp"
+.Ft int
+.Fn VOP_CLOSE "struct vnode *vp" "int mode" "struct ucred *cred" "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn VOP_OPEN
+entry point is called before a file is accessed by a process and the
+.Fn VOP_CLOSE
+entry point is called after a file is finished with by the process.
+.Pp
+The arguments are:
+.Bl -tag -width mode
+.It Fa vp
+The vnode of the file.
+.It Fa mode
+The access mode required by the calling process.
+.It Fa td
+The thread which is accessing the file.
+.It Fa fp
+The file being opened.
+.El
+.Pp
+Pointer to the file
+.Fa fp
+is useful for file systems which require such information, e.g.,
+.Xr fdescfs 5 .
+Use
+.Ql NULL
+as
+.Fa fp
+argument to
+.Fn VOP_OPEN
+for in-kernel opens.
+.Pp
+The access mode is a set of flags, including
+.Dv FREAD ,
+.Dv FWRITE ,
+.Dv O_NONBLOCK ,
+.Dv O_APPEND .
+.Sh LOCKS
+.Fn VOP_OPEN
+expects
+.Fa vp
+to be locked on entry and will leave it locked on return.
+.Pp
+.Fn VOP_CLOSE
+expects at least a reference to be associated with the vnode and does not
+care whether the vnode is locked or not.
+The lock and reference state is left unchanged on return.
+Note that
+.Fa vn_close
+expects an unlocked, referenced vnode and will dereference the vnode prior
+to returning.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_open(struct vnode *vp, int mode, struct ucred *cred, struct thread *td,
+ struct file *fp)
+{
+ /*
+ * Most file systems don't do much here.
+ */
+ return 0;
+}
+.Ed
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr VOP_LOOKUP 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_PATHCONF.9 b/share/man/man9/VOP_PATHCONF.9
new file mode 100644
index 0000000..056f647
--- /dev/null
+++ b/share/man/man9/VOP_PATHCONF.9
@@ -0,0 +1,88 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_PATHCONF 9
+.Sh NAME
+.Nm VOP_PATHCONF
+.Nd return POSIX pathconf information
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/unistd.h
+.Ft int
+.Fn VOP_PATHCONF "struct vnode *vp" "int name" "int *retval"
+.Sh DESCRIPTION
+The arguments are:
+.Bl -tag -width retval
+.It Fa vp
+The vnode to get information about.
+.It Fa name
+The type of information to return.
+.It Fa retval
+The place to return the information.
+.El
+.Pp
+The value of
+.Fa name
+specifies what should be returned:
+.Bl -tag -width _PC_CHOWN_RESTRICTED
+.It Dv _PC_LINK_MAX
+The maximum number of links to a file.
+.It Dv _PC_NAME_MAX
+The maximum number of bytes in a file name.
+.It Dv _PC_PATH_MAX
+The maximum number of bytes in a pathname.
+.It Dv _PC_PIPE_BUF
+The maximum number of bytes which will be written atomically to a pipe.
+.It Dv _PC_CHOWN_RESTRICTED
+Return 1 if appropriate privileges are required for the
+.Xr chown 2
+system call, otherwise 0.
+.It Dv _PC_NO_TRUNC
+Return 1 if file names longer than
+.Dv KERN_NAME_MAX
+are truncated.
+.El
+.Sh RETURN VALUES
+If
+.Fa name
+is recognized,
+.Fa *retval
+is set to the specified value and zero is returned, otherwise
+.Er EINVAL
+is returned.
+.Sh SEE ALSO
+.Xr pathconf 2 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_PRINT.9 b/share/man/man9/VOP_PRINT.9
new file mode 100644
index 0000000..2da85f9
--- /dev/null
+++ b/share/man/man9/VOP_PRINT.9
@@ -0,0 +1,54 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_PRINT 9
+.Sh NAME
+.Nm VOP_PRINT
+.Nd print debugging information
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_PRINT "struct vnode *vp"
+.Sh DESCRIPTION
+The arguments are:
+.Bl -tag -width 2n
+.It Fa vp
+The vnode to print.
+.El
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_RDWR.9 b/share/man/man9/VOP_RDWR.9
new file mode 100644
index 0000000..28f495f
--- /dev/null
+++ b/share/man/man9/VOP_RDWR.9
@@ -0,0 +1,239 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_RDWR 9
+.Sh NAME
+.Nm VOP_READ ,
+.Nm VOP_WRITE
+.Nd read or write a file
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/uio.h
+.Ft int
+.Fn VOP_READ "struct vnode *vp" "struct uio *uio" "int ioflag" "struct ucred *cred"
+.Ft int
+.Fn VOP_WRITE "struct vnode *vp" "struct uio *uio" "int ioflag" "struct ucred *cred"
+.Sh DESCRIPTION
+These entry points read or write the contents of a file
+.Pp
+The arguments are:
+.Bl -tag -width ioflag
+.It Fa vp
+The vnode of the file.
+.It Fa uio
+The location of the data to be read or written.
+.It Fa ioflag
+Various flags.
+.It Fa cnp
+The credentials of the caller.
+.El
+.Pp
+The
+.Fa ioflag
+argument is used to give directives and hints to the file system.
+When attempting a read, the high 16 bits are used to provide a
+read-ahead hint (in units of file system blocks) that the file system
+should attempt.
+The low 16 bits are a bit mask which can contain
+the following flags:
+.Bl -tag -width ".Dv IO_NODELOCKED"
+.It Dv IO_UNIT
+Do I/O as atomic unit.
+.It Dv IO_APPEND
+Append write to end.
+.It Dv IO_SYNC
+Do I/O synchronously.
+.It Dv IO_NODELOCKED
+Underlying node already locked.
+.It Dv IO_NDELAY
+.Dv FNDELAY
+flag set in file table.
+.It Dv IO_VMIO
+Data already in VMIO space.
+.El
+.Sh LOCKS
+The file should be locked on entry and will still be locked on exit.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_read(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
+{
+ struct buf *bp;
+ off_t bytesinfile;
+ daddr_t lbn, nextlbn;
+ long size, xfersize, blkoffset;
+ int error;
+
+ size = block size of file system;
+
+ for (error = 0, bp = NULL; uio->uio_resid > 0; bp = NULL) {
+ bytesinfile = size of file - uio->uio_offset;
+ if (bytesinfile <= 0)
+ break;
+
+ lbn = uio->uio_offset / size;
+ blkoffset = uio->uio_offset - lbn * size;
+
+ xfersize = size - blkoffset;
+ if (uio->uio_resid < xfersize)
+ xfersize = uio->uio_resid;
+ if (bytesinfile < xfersize)
+ xfersize = bytesinfile;
+
+ error = bread(vp, lbn, size, NOCRED, &bp);
+ if (error) {
+ brelse(bp);
+ bp = NULL;
+ break;
+ }
+
+ /*
+ * We should only get non-zero b_resid when an I/O error
+ * has occurred, which should cause us to break above.
+ * However, if the short read did not cause an error,
+ * then we want to ensure that we do not uiomove bad
+ * or uninitialized data.
+ */
+ size -= bp->b_resid;
+ if (size < xfersize) {
+ if (size == 0)
+ break;
+ xfersize = size;
+ }
+
+ error = uiomove((char *)bp->b_data + blkoffset, (int)xfersize, uio);
+ if (error)
+ break;
+
+ bqrelse(bp);
+ }
+ if (bp != NULL)
+ bqrelse(bp);
+
+ return (error);
+}
+
+int
+vop_write(struct vnode *vp, struct uio *uio, int ioflag, struct ucred *cred)
+{
+ struct buf *bp;
+ off_t bytesinfile;
+ daddr_t lbn, nextlbn;
+ off_t osize;
+ long size, resid, xfersize, blkoffset;
+ int flags;
+ int error;
+
+ osize = size of file;
+ size = block size of file system;
+ resid = uio->uio_resid;
+ if (ioflag & IO_SYNC)
+ flags = B_SYNC;
+ else
+ flags = 0;
+
+ for (error = 0; uio->uio_resid > 0;) {
+ lbn = uio->uio_offset / size;
+ blkoffset = uio->uio_offset - lbn * size;
+
+ xfersize = size - blkoffset;
+ if (uio->uio_resid < xfersize)
+ xfersize = uio->uio_resid;
+
+ if (uio->uio_offset + xfersize > size of file)
+ vnode_pager_setsize(vp, uio->uio_offset + xfersize);
+
+ if (size > xfersize)
+ flags |= B_CLRBUF;
+ else
+ flags &= ~B_CLRBUF;
+
+ error = find_block_in_file(vp, lbn, blkoffset + xfersize,
+ cred, &bp, flags);
+ if (error)
+ break;
+
+ if (uio->uio_offset + xfersize > size of file)
+ set size of file to uio->uio_offset + xfersize;
+
+ error = uiomove((char *)bp->b_data + blkoffset, (int) xfersize, uio);
+ /* XXX ufs does not check the error here. Why? */
+
+ if (ioflag & IO_VMIO)
+ bp->b_flags |= B_RELBUF; /* ??? */
+
+ if (ioflag & IO_SYNC)
+ bwrite(bp);
+ else if (xfersize + blkoffset == size)
+ bawrite(bp);
+ else
+ bdwrite(bp);
+
+ if (error || xfersize == 0)
+ break;
+ }
+
+ if (error) {
+ if (ioflag & IO_UNIT) {
+ /* call private routine to truncate file. */
+ your_truncate(vp, osize, ioflag & IO_SYNC, cred, uio->uio_td);
+ uio->uio_offset -= resid - uio->uio_resid;
+ uio->uio_resid = resid;
+ }
+ } else if (resid > uio->uio_resid && (ioflag & IO_SYNC)) {
+ struct timeval tv;
+ error = VOP_UPDATE(vp, &tv, &tv, 1); /* XXX what does this do? */
+ }
+
+ return (error);
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EFBIG
+An attempt was made to write a file that exceeds the process's file size
+limit or the maximum file size.
+.It Bq Er ENOSPC
+The file system is full.
+.It Bq Er EPERM
+An append-only flag is set on the file, but the caller is attempting to
+write before the current end of file.
+.El
+.Sh SEE ALSO
+.Xr uiomove 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_READDIR.9 b/share/man/man9/VOP_READDIR.9
new file mode 100644
index 0000000..bf4c6b2
--- /dev/null
+++ b/share/man/man9/VOP_READDIR.9
@@ -0,0 +1,174 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_READDIR 9
+.Sh NAME
+.Nm VOP_READDIR
+.Nd read contents of a directory
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/dirent.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_READDIR "struct vnode *vp" "struct uio *uio" "struct ucred *cred" "int *eofflag" "int *ncookies" "u_long **cookies"
+.Sh DESCRIPTION
+Read directory entries.
+.Bl -tag -width ncookies
+.It Fa vp
+The vnode of the directory.
+.It Fa uio
+Where to read the directory contents.
+.It Fa cred
+The caller's credentials.
+.It Fa eofflag
+Return end of file status
+.Dv ( NULL
+if not wanted).
+.It Fa ncookies
+Number of directory cookies generated for NFS
+.Dv ( NULL
+if not wanted).
+.It Fa cookies
+Directory seek cookies generated for NFS
+.Dv ( NULL
+if not wanted).
+.El
+The directory contents are read into
+.Vt struct dirent
+structures.
+If the on-disc data structures differ from this then they
+should be translated.
+.Sh LOCKS
+The directory should be locked on entry and will still be locked on exit.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error code is returned.
+.Pp
+If this is called from the NFS server, the extra arguments
+.Fa eofflag ,
+.Fa ncookies
+and
+.Fa cookies
+are given.
+The value of
+.Fa *eofflag
+should be set to TRUE if the end of the directory is reached while
+reading.
+The directory seek cookies are returned to the NFS client and may be used
+later to restart a directory read part way through the directory.
+There should be one cookie returned per directory entry.
+The value of
+the cookie should be the offset within the directory where the on-disc
+version of the appropriate directory entry starts.
+Memory for the cookies should be allocated using:
+.Pp
+.Bd -literal
+ ...;
+ *ncookies = number of entries read;
+ *cookies = (u_int*)#
+ malloc(*ncookies * sizeof(u_int), M_TEMP, M_WAITOK);
+.Ed
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_readdir(struct vnode *vp, struct uio *uio, struct ucred *cred,
+ int *eofflag, int *ncookies, u_int **cookies)
+{
+ off_t off;
+ int error = 0;
+
+ /*
+ * Remember the original offset to use later in generating cookies.
+ */
+ off = uio->uio_offset;
+
+ /*
+ * Read directory contents starting at uio->uio_offset into buffer
+ * pointed to by uio.
+ */
+ ...;
+
+ if (!error && ncookies != NULL) {
+ struct dirent *dpStart;
+ struct dirent *dpEnd;
+ struct dirent *dp;
+ int count;
+ u_int *cookiebuf;
+ u_int *cookiep;
+
+ if (uio->uio_segflg != UIO_SYSSPACE || uio->uio_iovcnt != 1)
+ panic("vop_readdir: unexpected uio from NFS server");
+
+ /*
+ * Parse the stuff just read into the uio.
+ */
+ dpStart = (struct dirent *)
+ ((char *)uio->uio_iov->iov_base - (uio->uio_offset - off));
+ dpEnd = (struct dirent *) uio->uio_iov->iov_base;
+
+ /*
+ * Count number of entries.
+ */
+ for (dp = dpStart, count = 0;
+ dp < dpEnd;
+ dp = (struct dirent *)((caddr_t) dp + dp->d_reclen))
+ count++;
+
+ cookiebuf = (u_int *) malloc(count * sizeof(u_int), M_TEMP, M_WAITOK);
+ for (dp = dpStart; cookiep = cookiebuf;
+ dp < dpEnd;
+ dp = (struct dirent *)((caddr_t) dp + dp->d_reclen)) {
+ off += dp->d_reclen;
+ *cookiep++ = (u_int) off;
+ }
+ *ncookies = count;
+ *cookies = cookiebuf;
+ }
+
+ if (eofflag && uio->uio_offset is past the end of the directory) {
+ *eofflag = TRUE;
+ }
+
+ return error;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EINVAL
+An attempt was made to read from an illegal offset in the directory.
+.It Bq Er EIO
+A read error occurred while reading the directory.
+.El
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_READLINK.9 b/share/man/man9/VOP_READLINK.9
new file mode 100644
index 0000000..0fb5e47
--- /dev/null
+++ b/share/man/man9/VOP_READLINK.9
@@ -0,0 +1,82 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_READLINK 9
+.Sh NAME
+.Nm VOP_READLINK
+.Nd read the target of a symbolic link
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/uio.h
+.Ft int
+.Fn VOP_READLINK "struct vnode *vp" "struct uio *uio" "struct ucred *cred"
+.Sh DESCRIPTION
+This reads the target pathname of a symbolic link
+.Bl -tag -width uio
+.It Fa vp
+The vnode of the symlink.
+.It Fa uio
+The location of the data to be read or written.
+.It Fa cred
+The credentials of the caller.
+.El
+.Sh LOCKS
+The vnode should be locked on entry and will still be locked on exit.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_readlink(struct vnode *vp, struct uio *uio, struct ucred *cred)
+{
+ int error = 0;
+
+ /*
+ * Read the target of the symlink.
+ */
+ ...;
+
+ return error;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EIO
+A read error occurred while reading the contents of the symlink.
+.El
+.Sh SEE ALSO
+.Xr uiomove 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_REALLOCBLKS.9 b/share/man/man9/VOP_REALLOCBLKS.9
new file mode 100644
index 0000000..9209844
--- /dev/null
+++ b/share/man/man9/VOP_REALLOCBLKS.9
@@ -0,0 +1,59 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_REALLOCBLKS 9
+.Sh NAME
+.Nm VOP_REALLOCBLKS
+.Nd rearrange blocks in a file to be contiguous
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_REALLOCBLKS "struct vnode *vp" "struct cluster_save *buflist"
+.Sh DESCRIPTION
+The arguments are:
+.Bl -tag -width buflist
+.It Fa vp
+The file to manipulate.
+.It Fa buflist
+A list of buffers to rearrange.
+.El
+.Pp
+This seems to be part of a work in progress.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr buf 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_REMOVE.9 b/share/man/man9/VOP_REMOVE.9
new file mode 100644
index 0000000..aa04405
--- /dev/null
+++ b/share/man/man9/VOP_REMOVE.9
@@ -0,0 +1,98 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_REMOVE 9
+.Sh NAME
+.Nm VOP_REMOVE ,
+.Nm VOP_RMDIR
+.Nd remove a file or directory
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_REMOVE "struct vnode *dvp" "struct vnode *vp" "struct componentname *cnp"
+.Ft int
+.Fn VOP_RMDIR "struct vnode *dvp" "struct vnode *vp" "struct componentname *cnp"
+.Sh DESCRIPTION
+These entry points remove files and directories respectively.
+.Pp
+The arguments are:
+.Bl -tag -width dvp
+.It Fa dvp
+The vnode of the directory.
+.It Fa vp
+The vnode of the file to be removed.
+.It Fa cnp
+Pathname information about the file.
+.El
+.Sh LOCKS
+Both
+.Fa dvp
+and
+.Fa vp
+should be locked on entry and remain locked on return.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_remove(struct vnode *dvp, struct vnode *vp, struct componentname *cnp)
+{
+ int error = 0;
+
+ if (vp is immutable) {
+ error = EPERM;
+ goto out;
+ }
+
+ /*
+ * Remove name cnp->cn_nameptr from directory and update link count
+ * of vp.
+ */
+ ...;
+
+ return error;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EPERM
+The file is immutable.
+.It Bq Er ENOTEMPTY
+An attempt was made to remove a directory which is not empty.
+.El
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr VOP_LOOKUP 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_RENAME.9 b/share/man/man9/VOP_RENAME.9
new file mode 100644
index 0000000..4c2e58a
--- /dev/null
+++ b/share/man/man9/VOP_RENAME.9
@@ -0,0 +1,295 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_RENAME 9
+.Sh NAME
+.Nm VOP_RENAME
+.Nd rename a file
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_RENAME "struct vnode *fdvp" "struct vnode *fvp" "struct componentname *fcnp" "struct vnode *tdvp" "struct vnode *tvp" "struct componentname *tcnp"
+.Sh DESCRIPTION
+This renames a file and possibly changes its parent directory.
+If the destination object exists, it will be removed first.
+.Pp
+Its arguments are:
+.Bl -tag -width fdvp
+.It Fa fdvp
+The vnode of the old parent directory.
+.It Fa fvp
+The vnode of the file to be renamed.
+.It Fa fcnp
+Pathname information about the file's current name.
+.It Fa tdvp
+The vnode of the new parent directory.
+.It Fa tvp
+The vnode of the target file (if it exists).
+.It Fa tcnp
+Pathname information about the file's new name.
+.El
+.Sh LOCKS
+The source directory and file are unlocked but are expected to have their
+ref count bumped on entry.
+The VOP routine is expected to
+.Xr vrele 9
+both prior
+to returning.
+.Pp
+The destination directory and file are locked as well as having their ref
+count bumped.
+The VOP routine is expected to
+.Xr vput 9
+both prior to
+returning.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_rename(struct vnode *fdvp, struct vnode *fvp, struct componentname *fcnp,
+ struct vnode *tdvp, struct vnode *tvp, struct componentname *tcnp)
+{
+ int doingdirectory = 0;
+ int error = 0;
+
+ /*
+ * Check for cross-device rename.
+ */
+ if (fvp->v_mount != tdvp->v_mount) {
+ error = EXDEV;
+ abortit:
+ if (tdvp == tvp)
+ vrele(tdvp);
+ else
+ vput(tdvp);
+ if (tvp)
+ vput(tvp);
+ vrele(fdvp);
+ vrele(fvp);
+ return error;
+ }
+
+ if (tvp exists and is immutable) {
+ error = EPERM;
+ goto abortit;
+ }
+
+ /*
+ * POSIX: "If the old argument and the new argument
+ * both refer to links to the same existing file,
+ * the rename() function shall return successfully
+ * and perform no other action."
+ * The upper layers already handle this case.
+ */
+ KASSERT(fvp != tvp, ("vop_rename: source and destination are the same"));
+
+ if (fvp is immutable) {
+ error = EPERM;
+ goto abortit;
+ }
+
+ error = VOP_LOCK(fvp);
+ if (error)
+ goto abortit;
+
+ if (vp is a directory) {
+ /*
+ * Avoid ".", "..", and aliases of "." for obvious reasons.
+ */
+ if ((fcnp->cn_namelen == 1 && fcnp->cn_nameptr[0] == '.')
+ || fdvp == fvp
+ || ((fcnp->cn_flags | tcnp->cn_flags) & ISDOTDOT)) {
+ VOP_UNLOCK(fvp);
+ error = EINVAL;
+ goto abortit;
+ }
+ doingdirectory = 1;
+ }
+ vrele(fdvp);
+
+ /*
+ * Bump link count on fvp while we are moving stuff around. If we
+ * crash before completing the work, the link count may be wrong
+ * but correctable.
+ */
+ ...;
+
+ /*
+ * If ".." must be changed (ie the directory gets a new
+ * parent) then the source directory must not be in the
+ * directory hierarchy above the target, as this would
+ * orphan everything below the source directory. Also
+ * the user must have write permission in the source so
+ * as to be able to change "..".
+ */
+ error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred, tcnp->cn_thread);
+ VOP_UNLOCK(fvp);
+ if (doingdirectory && fdvp != tdvp) {
+ /*
+ * Check for pathname conflict.
+ */
+ ...;
+ }
+
+ /*
+ * If the target doesn't exist, link the target to the source and
+ * unlink the source. Otherwise, rewrite the target directory to
+ * reference the source and remove the original entry.
+ */
+ if (tvp == NULL) {
+ /*
+ * Account for ".." in new directory.
+ */
+ if (doingdirectory && fdvp != tdvp) {
+ /*
+ * Increase link count of tdvp.
+ */
+ ...;
+ }
+
+ /*
+ * Add name in new directory.
+ */
+ ...;
+
+ if (error) {
+ if (doingdirectory && fdvp != tdvp) {
+ /*
+ * Decrease link count if tdvp.
+ */
+ ...;
+ }
+ goto bad;
+ }
+ vput(tdvp);
+ } else {
+ /*
+ * Target must be empty if a directory and have no links
+ * to it. Also, ensure source and target are compatible
+ * (both directories, or both not directories).
+ */
+ if (tvp is a directory) {
+ if (tvp is not empty) {
+ error = ENOTEMPTY;
+ goto bad;
+ }
+ if (!doingdirectory) {
+ error = ENOTDIR;
+ goto bad;
+ }
+ /*
+ * Update name cache since directory is going away.
+ */
+ cache_purge(tdvp);
+ } else if (doingdirectory) {
+ error = ENOTDIR;
+ goto bad;
+ }
+
+ /*
+ * Change name tcnp in tdvp to point at fvp.
+ */
+ ...;
+
+ /*
+ * If the target directory is in same directory as the source
+ * directory, decrement the link count on the parent of the
+ * target directory. This accounts for the fact that a
+ * directory links back to its parent with "..".
+ */
+ if (doingdirectory && fdvp == tdvp) {
+ /*
+ * Decrement link count of tdvp.
+ */
+ ...;
+ }
+ vput(tdvp);
+
+ /*
+ * Decrement the link count of tvp since the directory no
+ * longer points at it.
+ */
+ ...;
+ if (doingdirectory) {
+ /*
+ * Clean up the old directory tvp.
+ */
+ ...;
+ }
+ vput(tvp);
+ }
+
+ /*
+ * Unlink the source. If a directory was moved to a new parent,
+ * update its ".." entry. Gobs of ugly UFS code omitted here.
+ */
+ ...;
+
+bad:
+ if (tvp)
+ vput(tvp);
+ vput(tdvp);
+out:
+ if (VOP_LOCK(fvp) == 0) {
+ /*
+ * Decrement link count of fvp.
+ */
+ ...;
+ vput(fvp);
+ } else
+ vrele(fvp);
+
+ return error;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EPERM
+The file is immutable.
+.It Bq Er EXDEV
+It is not possible to rename a file between different file systems.
+.It Bq Er EINVAL
+An attempt was made to rename
+.Pa \&.
+or
+.Pa .. ,
+or to perform an operation which would break the directory tree structure.
+.It Bq Er ENOTDIR
+An attempt was made to rename a directory to a file or vice versa.
+.It Bq Er ENOTEMPTY
+An attempt was made to remove a directory which is not empty.
+.El
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_REVOKE.9 b/share/man/man9/VOP_REVOKE.9
new file mode 100644
index 0000000..6e04014
--- /dev/null
+++ b/share/man/man9/VOP_REVOKE.9
@@ -0,0 +1,70 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2002 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed for the FreeBSD Project by 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$
+.\"
+.Dd February 5, 2002
+.Os
+.Dt VOP_REVOKE 9
+.Sh NAME
+.Nm VOP_REVOKE
+.Nd "revoke access to a device and its aliases"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_REVOKE "struct vnode *vp" "int flags"
+.Sh DESCRIPTION
+.Fn VOP_REVOKE
+will administratively revoke access to the device specified by
+.Fa vp ,
+as well as any aliases created via
+.Xr make_dev_alias 9 .
+Further file operations on any of these devices by processes
+which have them open will nominally fail.
+The
+.Fa flags
+must be set to
+.Dv REVOKEALL
+to signify that all access will be revoked; any other value is invalid.
+.Sh LOCKS
+The
+.Fa vp
+must be unlocked on entry, and will remain unlocked upon return.
+.Sh SEE ALSO
+.Xr make_dev_alias 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Brian Fundakowski Feldman .
diff --git a/share/man/man9/VOP_SETACL.9 b/share/man/man9/VOP_SETACL.9
new file mode 100644
index 0000000..b6a7003
--- /dev/null
+++ b/share/man/man9/VOP_SETACL.9
@@ -0,0 +1,105 @@
+.\"-
+.\" Copyright (c) 1999, 2000, 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$
+.\"
+.Dd December 23, 1999
+.Os
+.Dt VOP_SETACL 9
+.Sh NAME
+.Nm VOP_SETACL
+.Nd set the access control list for a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/acl.h
+.Ft int
+.Fn VOP_SETACL "struct vnode *vp" "acl_type_t type" "struct acl *aclp" "struct ucred *cred" "struct thread *td"
+.Sh DESCRIPTION
+This vnode call may be used to set the access control list (ACL) for a file
+or directory.
+.Pp
+Its arguments are:
+.Bl -tag -width type
+.It Fa vp
+The vnode of the file or directory.
+.It Fa type
+The type of ACL to set.
+.It Fa aclp
+A pointer to an ACL structure from which to retrieve the ACL data.
+.It Fa cred
+The user credentials to use in authorizing the request.
+.It Fa td
+The thread setting the ACL.
+.El
+.Pp
+The
+.Fa aclp
+pointer may be
+.Dv NULL
+to indicate that the specified ACL should be deleted.
+.Pp
+The
+.Fa cred
+pointer may be
+.Dv NULL
+to indicate that access control checks are not to be performed, if possible.
+This cred setting might be used to allow the kernel to authorize ACL
+changes that the active process might not be permitted to make.
+.Pp
+The vnode ACL interface defines the syntax, and not semantics, of file and
+directory ACL interfaces.
+More information about ACL management in kernel
+may be found in
+.Xr acl 9 .
+.Sh LOCKS
+The vnode will be locked on entry and should remain locked on return.
+.Sh RETURN VALUES
+If the ACL is successfully set, then zero is returned.
+Otherwise, an appropriate error code is returned.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The ACL type passed is invalid for this vnode, or the ACL data is invalid.
+.It Bq Er EACCES
+The the caller does not have the appropriate privilege.
+.It Bq Er ENOMEM
+Sufficient memory is not available to fulfill the request.
+.It Bq Er EOPNOTSUPP
+The file system does not support
+.Fn VOP_SETACL .
+.It Bq Er ENOSPC
+The file system is out of space.
+.It Bq Er EROFS
+The file system is read-only.
+.El
+.Sh SEE ALSO
+.Xr acl 9 ,
+.Xr vnode 9 ,
+.Xr VOP_ACLCHECK 9 ,
+.Xr VOP_GETACL 9
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
diff --git a/share/man/man9/VOP_SETEXTATTR.9 b/share/man/man9/VOP_SETEXTATTR.9
new file mode 100644
index 0000000..ccb8aaa
--- /dev/null
+++ b/share/man/man9/VOP_SETEXTATTR.9
@@ -0,0 +1,119 @@
+.\"-
+.\" Copyright (c) 1999, 2000, 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$
+.\"
+.Dd December 23, 1999
+.Os
+.Dt VOP_SETEXTATTR 9
+.Sh NAME
+.Nm VOP_SETEXTATTR
+.Nd set named extended attribute for a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/extattr.h
+.Ft int
+.Fn VOP_SETEXTATTR "struct vnode *vp" "int attrnamespace" "const char *name" "struct uio *uio" "struct ucred *cred" "struct thread *td"
+.Sh DESCRIPTION
+This vnode call may be used to set specific named extended attribute for a
+file or directory.
+.Pp
+Its arguments are:
+.Bl -tag -width type
+.It Fa vp
+The vnode of the file or directory.
+.It Fa attrnamespace
+Integer constant indicating which extended attribute namespace the attribute
+name is present in.
+.It Fa name
+Pointer to a null-terminated character string containing the attribute name.
+.It Fa uio
+The location of the data to be read or written.
+.It Fa cred
+The user credentials to use in authorizing the request.
+.It Fa td
+The thread setting the extended attribute.
+.El
+.Pp
+The uio structure is used in a manner similar to the argument of the same
+name in
+.Xr VOP_WRITE 9 .
+However, as extended attributes provide a strict "name=value" semantic,
+non-zero offsets will be rejected.
+.Pp
+The
+.Fa uio
+pointer may be
+.Dv NULL
+to indicate that the specified extended attribute should be deleted.
+.Pp
+The
+.Fa cred
+pointer may be
+.Dv NULL
+to indicate that access control checks are not to be performed, if possible.
+This
+.Fa cred
+setting might be used to allow the kernel to authorize extended attribute
+changes that the active process might not be permitted to make.
+.Pp
+Extended attribute semantics may vary by file system implementing the call.
+More information on extended attributes may be found in
+.Xr extattr 9 .
+.Sh LOCKS
+The vnode will be locked on entry and should remain locked on return.
+.Sh RETURN VALUES
+If the extended attribute is successfully set, then zero is returned.
+Otherwise, an appropriate error code is returned.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EACCES
+The the caller does not have the appropriate privilege.
+.It Bq Er ENXIO
+The request was not valid in this file system for the specified vnode and
+attribute name.
+.It Bq Er ENOMEM
+Insufficient memory available to fulfill request
+.It Bq Er EFAULT
+The uio structure refers to an invalid userspace address.
+.It Bq Er EINVAL
+The name, namespace, or uio argument is invalid.
+.It Bq Er EOPNOTSUPP
+The file system does not support
+.Fn VOP_SETEXTATTR .
+.It Bq Er ENOSPC
+The file system is out of space.
+.It Bq Er EROFS
+The file system is read-only.
+.El
+.Sh SEE ALSO
+.Xr extattr 9 ,
+.Xr vnode 9 ,
+.Xr VOP_GETEXTATTR 9 ,
+.Xr VOP_LISTEXTATTR 9
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
diff --git a/share/man/man9/VOP_STRATEGY.9 b/share/man/man9/VOP_STRATEGY.9
new file mode 100644
index 0000000..8c4fbac
--- /dev/null
+++ b/share/man/man9/VOP_STRATEGY.9
@@ -0,0 +1,64 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VOP_STRATEGY 9
+.Sh NAME
+.Nm VOP_STRATEGY
+.Nd read or write a file system buffer
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_STRATEGY "struct vnode *vp" "struct buf *bp"
+.Sh DESCRIPTION
+The arguments are:
+.Bl -tag -width 2n
+.It Fa vp
+The vnode that the buffer is for.
+.It Fa bp
+The buffer to be read or written.
+.El
+.Pp
+This call either reads or writes data from a file, depending on the value of
+.Fa bp->b_io.bio_cmd .
+.Pp
+The call may block.
+.Sh RETURN VALUES
+Always zero.
+Errors should be signalled by setting BIO_ERROR on b_ioflags field in struct buf,
+and setting b_error to the appropriate errno value.
+.Sh SEE ALSO
+.\" .Xr buf 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/VOP_VPTOCNP.9 b/share/man/man9/VOP_VPTOCNP.9
new file mode 100644
index 0000000..128a757
--- /dev/null
+++ b/share/man/man9/VOP_VPTOCNP.9
@@ -0,0 +1,110 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2008 Joe Marcus Clarke
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd December 7, 2008
+.Os
+.Dt VOP_VPTOCNP 9
+.Sh NAME
+.Nm VOP_VPTOCNP
+.Nd translate a vnode to its component name
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_VPTOCNP "struct vnode *vp" "struct vnode **dvp" "char *buf" "int *buflen"
+.Sh DESCRIPTION
+This translates a vnode into its component name, and writes that name to
+the head of the buffer specified by
+.Fa buf
+.Bl -tag -width buflen
+.It Fa vp
+The vnode to translate.
+.It Fa dvp
+The vnode of the parent directory of
+.Fa vp .
+.It Fa buf
+The buffer into which to preprend the component name.
+.It Fa buflen
+The remaining size of the buffer.
+.El
+.Pp
+The default implementation of
+.Nm
+simply returns ENOENT.
+.Sh LOCKS
+The vnode should be locked on entry and will still be locked on exit. The
+parent directory vnode will be unlocked on a successful exit. However, it
+will have its hold count incremented.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error code is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+int
+vop_vptocnp(struct vnode *vp, struct vnode **dvp, char *buf, int *buflen)
+{
+ int error = 0;
+
+ /*
+ * Translate the vnode to its component name.
+ *
+ * Decrement the component name's length from buflen.
+ *
+ * Obtain the vnode's parent directory vnode.
+ */
+ ...;
+
+ /*
+ * Increment the parent directory's hold count.
+ */
+ vhold(*dvp);
+
+ return error;
+}
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+The buffer was not large enough to hold the vnode's component name.
+.It Bq Er ENOENT
+The vnode was not found on the file system.
+.El
+.Sh SEE ALSO
+.Xr VOP_LOOKUP 9 ,
+.Xr vnode 9
+.Sh NOTES
+This interface is a work in progress.
+.Sh HISTORY
+The function
+.Nm
+appeared in
+.Fx 8.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Joe Marcus Clarke .
diff --git a/share/man/man9/VOP_VPTOFH.9 b/share/man/man9/VOP_VPTOFH.9
new file mode 100644
index 0000000..36e703d
--- /dev/null
+++ b/share/man/man9/VOP_VPTOFH.9
@@ -0,0 +1,60 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd February 16, 2007
+.Os
+.Dt VOP_VPTOFH 9
+.Sh NAME
+.Nm VOP_VPTOFH
+.Nd turn a vnode into an NFS filehandle
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn VOP_VPTOFH "struct vnode *vp" "struct fid *fhp"
+.Sh DESCRIPTION
+This is used by the NFS server to create an opaque filehandle which
+uniquely identifies the file and which can be used by an NFS client
+to access the file in the future.
+.Pp
+Its arguments are:
+.Bl -tag -width fhp
+.It Fa vp
+The vnode to make a filehandle for.
+.It Fa fhp
+Return parameter for the filehandle.
+.El
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr VFS_FHTOVP 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/accept_filter.9 b/share/man/man9/accept_filter.9
new file mode 100644
index 0000000..4a7d239
--- /dev/null
+++ b/share/man/man9/accept_filter.9
@@ -0,0 +1,152 @@
+.\"
+.\" Copyright (c) 2000 Alfred Perlstein
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\" "
+.Dd June 25, 2000
+.Os
+.Dt ACCEPT_FILTER 9
+.Sh NAME
+.Nm accept_filter ,
+.Nm accept_filt_add ,
+.Nm accept_filt_del ,
+.Nm accept_filt_generic_mod_event ,
+.Nm accept_filt_get
+.Nd filter incoming connections
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/module.h
+.In sys/socket.h
+.Fd #define ACCEPT_FILTER_MOD
+.In sys/socketvar.h
+.Ft int
+.Fn accept_filt_add "struct accept_filter *filt"
+.Ft int
+.Fn accept_filt_del "char *name"
+.Ft int
+.Fn accept_filt_generic_mod_event "module_t mod" "int event" "void *data"
+.Ft struct accept_filter *
+.Fn accept_filt_get "char *name"
+.Sh DESCRIPTION
+Accept filters allow an application to request
+that the kernel pre-process incoming connections.
+An accept filter is requested via the
+.Xr setsockopt 2
+system call, passing in an
+.Fa optname
+of
+.Dv SO_ACCEPTFILTER .
+.Sh IMPLEMENTATION NOTES
+A module that wants to be an accept filter
+must provide a
+.Vt "struct accept_filter"
+to the system:
+.Bd -literal
+struct accept_filter {
+ char accf_name[16];
+ void (*accf_callback)(struct socket *so, void *arg, int waitflag);
+ void * (*accf_create)(struct socket *so, char *arg);
+ void (*accf_destroy)(struct socket *so);
+ SLIST_ENTRY(accept_filter) accf_next; /* next on the list */
+};
+.Ed
+.Pp
+The module should register it with the function
+.Fn accept_filt_add ,
+passing a pointer to a
+.Vt "struct accept_filter" ,
+allocated with
+.Xr malloc 9 .
+.Pp
+The fields of
+.Vt "struct accept_filter"
+are as follows:
+.Bl -tag -width ".Va accf_callback"
+.It Va accf_name
+Name of the filter;
+this is how it will be accessed from userland.
+.It Va accf_callback
+The callback that the kernel will do
+once the connection is established.
+It is the same as a socket upcall
+and will be called when the connection is established
+and whenever new data arrives on the socket,
+unless the callback modifies the socket's flags.
+.It Va accf_create
+Called whenever a
+.Xr setsockopt 2
+installs the filter onto
+a listening socket.
+.It Va accf_destroy
+Called whenever the user removes the accept filter on the socket.
+.El
+.Pp
+The
+.Fn accept_filt_del
+function
+passed the same string used in
+.Va accept_filter.accf_name
+during registration with
+.Fn accept_filt_add ,
+the kernel will then disallow and further userland use of the filter.
+.Pp
+The
+.Fn accept_filt_get
+function is used internally to locate which accept filter to use via the
+.Xr setsockopt 2
+system call.
+.Pp
+The
+.Fn accept_filt_generic_mod_event
+function provides a simple way to avoid duplication of code
+for accept filters which do not use the argument field to load
+and unload themselves.
+This function can be used in the
+.Vt moduledata_t
+struct for the
+.Xr DECLARE_MODULE 9
+macro.
+.Sh SEE ALSO
+.Xr setsockopt 2 ,
+.Xr accf_data 9 ,
+.Xr accf_dns 9 ,
+.Xr accf_http 9 ,
+.Xr malloc 9
+.Sh HISTORY
+The accept filter mechanism was introduced in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page was written by
+.An -nosplit
+.An Alfred Perlstein ,
+.An Sheldon Hearn
+and
+.An Jeroen Ruigrok van der Werven.
+.Pp
+The accept filter concept was pioneered by
+.An David Filo
+at Yahoo!\&
+and refined to be a loadable module system by
+.An Alfred Perlstein .
diff --git a/share/man/man9/accf_data.9 b/share/man/man9/accf_data.9
new file mode 100644
index 0000000..836deba
--- /dev/null
+++ b/share/man/man9/accf_data.9
@@ -0,0 +1,78 @@
+.\"
+.\" Copyright (c) 2000 Alfred Perlstein
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\" "
+.Dd November 15, 2000
+.Os
+.Dt ACCF_DATA 9
+.Sh NAME
+.Nm accf_data
+.Nd buffer incoming connections until data arrives
+.Sh SYNOPSIS
+.Nm options INET
+.Nm options ACCEPT_FILTER_DATA
+.Nm kldload accf_data
+.Sh DESCRIPTION
+This is a filter to be placed on a socket that will be using
+.Fn accept
+to receive incoming connections.
+.Pp
+It prevents the application from receiving the connected descriptor via
+.Fn accept
+until data arrives on the connection.
+.Pp
+The
+.Fa ACCEPT_FILTER_DATA
+kernel option is also a module that can be enabled at runtime via
+.Xr kldload 8
+if the INET option has been compiled into the kernel.
+.Sh EXAMPLES
+Assuming ACCEPT_FILTER_DATA has been included in the kernel config
+file or the
+.Nm
+module
+has been loaded, this will enable the data accept filter
+on the socket
+.Fa sok .
+.Bd -literal -offset 0i
+ struct accept_filter_arg afa;
+
+ bzero(&afa, sizeof(afa));
+ strcpy(afa.af_name, "dataready");
+ setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
+.Ed
+.Sh SEE ALSO
+.Xr setsockopt 2 ,
+.Xr accept_filter 9 ,
+.Xr accf_dns 9
+.Xr accf_http 9
+.Sh HISTORY
+The accept filter mechanism and the
+accf_data filter were introduced in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page and the filter were written by
+.An Alfred Perlstein .
diff --git a/share/man/man9/accf_dns.9 b/share/man/man9/accf_dns.9
new file mode 100644
index 0000000..f4b1563
--- /dev/null
+++ b/share/man/man9/accf_dns.9
@@ -0,0 +1,79 @@
+.\"
+.\" Copyright (c) 2008 David Malone
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\" "
+.Dd July 16, 2008
+.Os
+.Dt ACCF_DNS 9
+.Sh NAME
+.Nm accf_dns
+.Nd buffer incoming DNS requests until the whole first request is present
+.Sh SYNOPSIS
+.Nm options INET
+.Nm options ACCEPT_FILTER_DNS
+.Nm kldload accf_dns
+.Sh DESCRIPTION
+This is a filter to be placed on a socket that will be using
+.Fn accept
+to receive incoming connections.
+.Pp
+It prevents the application from receiving the connected descriptor via
+.Fn accept
+until a whole DNS request is available on the socket.
+It does this by reading the first two bytes of the request,
+to determine its size,
+and waiting until the required amount of data is available to be read.
+.Pp
+The
+.Fa ACCEPT_FILTER_DNS
+kernel option is also a module that can be enabled at runtime via
+.Xr kldload 8
+if the INET option has been compiled into the kernel.
+.Sh EXAMPLES
+If the
+.Nm
+module is available in the kernel,
+the following code will enable the DNS accept filter
+on a socket
+.Fa sok .
+.Bd -literal -offset 0i
+ struct accept_filter_arg afa;
+
+ bzero(&afa, sizeof(afa));
+ strcpy(afa.af_name, "dnsready");
+ setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
+.Ed
+.Sh SEE ALSO
+.Xr setsockopt 2 ,
+.Xr accept_filter 9 ,
+.Xr accf_http 9
+.Xr accf_data 9
+.Sh HISTORY
+The accept filter mechanism was introduced in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page and the filter were written by
+.An David Malone .
diff --git a/share/man/man9/accf_http.9 b/share/man/man9/accf_http.9
new file mode 100644
index 0000000..a75321c
--- /dev/null
+++ b/share/man/man9/accf_http.9
@@ -0,0 +1,98 @@
+.\"
+.\" Copyright (c) 2000 Alfred Perlstein
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\" "
+.Dd November 15, 2000
+.Os
+.Dt ACCF_HTTP 9
+.Sh NAME
+.Nm accf_http
+.Nd "buffer incoming connections until a certain complete HTTP requests arrive"
+.Sh SYNOPSIS
+.Nm options INET
+.Nm options ACCEPT_FILTER_HTTP
+.Nm kldload accf_http
+.Sh DESCRIPTION
+This is a filter to be placed on a socket that will be using
+.Fn accept
+to receive incoming HTTP connections.
+.Pp
+It prevents the application from receiving the connected descriptor via
+.Fn accept
+until either a full HTTP/1.0 or HTTP/1.1 HEAD or GET request has
+been buffered by the kernel.
+.Pp
+If something other than a HTTP/1.0 or
+HTTP/1.1 HEAD or GET request is received the kernel will
+allow the application to receive the connection descriptor
+via
+.Fn accept .
+.Pp
+The utility of
+.Nm
+is such that a server will not have to context switch several times
+before performing the initial parsing of the request.
+This effectively reduces the amount of required CPU utilization
+to handle incoming requests by keeping active
+processes in preforking servers such as Apache low
+and reducing the size of the file descriptor set that needs
+to be managed by interfaces such as
+.Fn select ,
+.Fn poll
+or
+.Fn kevent
+based servers.
+.Pp
+The
+.Nm
+kernel option is also a module that can be enabled at runtime via
+.Xr kldload 8
+if the INET option has been compiled into the kernel.
+.Sh EXAMPLES
+Assuming ACCEPT_FILTER_HTTP has been included in the kernel config
+file or the
+.Nm
+module
+has been loaded, this will enable the http accept filter
+on the socket
+.Fa sok .
+.Bd -literal -offset 0i
+ struct accept_filter_arg afa;
+
+ bzero(&afa, sizeof(afa));
+ strcpy(afa.af_name, "httpready");
+ setsockopt(sok, SOL_SOCKET, SO_ACCEPTFILTER, &afa, sizeof(afa));
+.Ed
+.Sh SEE ALSO
+.Xr setsockopt 2 ,
+.Xr accept_filter 9
+.Sh HISTORY
+The accept filter mechanism and the
+accf_http filter were introduced in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page and the filter were written by
+.An Alfred Perlstein .
diff --git a/share/man/man9/acl.9 b/share/man/man9/acl.9
new file mode 100644
index 0000000..dc3f7ad
--- /dev/null
+++ b/share/man/man9/acl.9
@@ -0,0 +1,208 @@
+.\"-
+.\" Copyright (c) 1999-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$
+.\"
+.Dd December 23, 1999
+.Os
+.Dt ACL 9
+.Sh NAME
+.Nm acl
+.Nd virtual file system access control lists
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/acl.h
+.Pp
+In the kernel configuration file:
+.Cd "options UFS_ACL"
+.Sh DESCRIPTION
+Access control lists, or ACLs,
+allow fine-grained specification of rights
+for vnodes representing files and directories.
+However, as there are a plethora of file systems with differing ACL semantics,
+the vnode interface is aware only of the syntax of ACLs,
+relying on the underlying file system to implement the details.
+Depending on the underlying file system, each file or directory
+may have zero or more ACLs associated with it, named using the
+.Fa type
+field of the appropriate vnode ACL calls:
+.Xr VOP_ACLCHECK 9 ,
+.Xr VOP_GETACL 9 ,
+and
+.Xr VOP_SETACL 9 .
+.Pp
+Currently, each ACL is represented in-kernel by a fixed-size
+.Vt acl
+structure, defined as follows:
+.Bd -literal -offset indent
+struct acl {
+ int acl_cnt;
+ struct acl_entry acl_entry[ACL_MAX_ENTRIES];
+};
+.Ed
+.Pp
+An ACL is constructed from a fixed size array of ACL entries,
+each of which consists of a set of permissions, principal namespace,
+and principal identifier.
+.Pp
+Each individual ACL entry is of the type
+.Vt acl_entry_t ,
+which is a structure with the following members:
+.Bl -tag -width 2n
+.It Vt acl_tag_t Va ae_tag
+The following is a list of definitions of ACL types
+to be set in
+.Va ae_tag :
+.Pp
+.Bl -tag -width ".Dv ACL_UNDEFINED_FIELD" -offset indent -compact
+.It Dv ACL_UNDEFINED_FIELD
+Undefined ACL type.
+.It Dv ACL_USER_OBJ
+Discretionary access rights for processes whose effective user ID
+matches the user ID of the file's owner.
+.It Dv ACL_USER
+Discretionary access rights for processes whose effective user ID
+matches the ACL entry qualifier.
+.It Dv ACL_GROUP_OBJ
+Discretionary access rights for processes whose effective group ID
+or any supplemental groups
+match the group ID of the file's owner.
+.It Dv ACL_GROUP
+Discretionary access rights for processes whose effective group ID
+or any supplemental groups
+match the ACL entry qualifier.
+.It Dv ACL_MASK
+The maximum discretionary access rights that can be granted
+to a process in the file group class.
+.It Dv ACL_OTHER
+Discretionary access rights for processes not covered by any other ACL
+entry.
+.It Dv ACL_OTHER_OBJ
+Same as
+.Dv ACL_OTHER .
+Each ACL entry must contain exactly one
+.Dv ACL_USER_OBJ ,
+one
+.Dv ACL_GROUP_OBJ ,
+and one
+.Dv ACL_OTHER .
+If any of
+.Dv ACL_USER ,
+.Dv ACL_GROUP ,
+or
+.Dv ACL_OTHER
+are present, then exactly one
+.Dv ACL_MASK
+entry should be present.
+.El
+.It Vt uid_t Va ae_id
+The ID of user for whom this ACL describes access permissions.
+.It Vt acl_perm_t Va ae_perm
+This field defines what kind of access the process matching this ACL has
+for accessing the associated file.
+.Bl -tag -width ".Dv ACL_POSIX1E_BITS"
+.It Dv ACL_EXECUTE
+The process may execute the associated file.
+.It Dv ACL_WRITE
+The process may write to the associated file.
+.It Dv ACL_READ
+The process may read from the associated file.
+.It Dv ACL_PERM_NONE
+The process has no read, write or execute permissions
+to the associated file.
+.El
+.El
+.Sh IMPLEMENTATION NOTES
+.Bd -literal
+typedef mode_t *acl_permset_t;
+
+/* internal ACL structure */
+struct acl {
+ int acl_cnt;
+ struct acl_entry acl_entry[ACL_MAX_ENTRIES];
+};
+
+/* external ACL structure */
+struct acl_t_struct {
+ struct acl ats_acl;
+ int ats_cur_entry;
+};
+typedef struct acl_t_struct *acl_t;
+
+/*
+ * Possible valid values for ae_tag field.
+ */
+#define ACL_UNDEFINED_TAG 0x00000000
+#define ACL_USER_OBJ 0x00000001
+#define ACL_USER 0x00000002
+#define ACL_GROUP_OBJ 0x00000004
+#define ACL_GROUP 0x00000008
+#define ACL_MASK 0x00000010
+#define ACL_OTHER 0x00000020
+#define ACL_OTHER_OBJ ACL_OTHER
+
+/*
+ * Possible valid values for acl_type_t arguments.
+ */
+#define ACL_TYPE_ACCESS 0x00000000
+#define ACL_TYPE_DEFAULT 0x00000001
+#define ACL_TYPE_AFS 0x00000002
+#define ACL_TYPE_CODA 0x00000003
+#define ACL_TYPE_NTFS 0x00000004
+#define ACL_TYPE_NWFS 0x00000005
+
+/*
+ * Possible flags in ae_perm field.
+ */
+#define ACL_EXECUTE 0x0001
+#define ACL_WRITE 0x0002
+#define ACL_READ 0x0004
+#define ACL_PERM_NONE 0x0000
+#define ACL_PERM_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ)
+#define ACL_POSIX1E_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ)
+
+/*
+ * Possible entry_id values for acl_get_entry()
+ */
+#define ACL_FIRST_ENTRY 0
+#define ACL_NEXT_ENTRY 1
+
+/*
+ * Undefined value in ae_id field
+ */
+#define ACL_UNDEFINED_ID ((uid_t)-1)
+.Ed
+.Sh SEE ALSO
+.Xr acl 3 ,
+.Xr vaccess_acl_posix1e 9 ,
+.Xr VFS 9 ,
+.Xr vnaccess 9 ,
+.Xr VOP_ACLCHECK 9 ,
+.Xr VOP_GETACL 9 ,
+.Xr VOP_SETACL 9
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
diff --git a/share/man/man9/alloc_unr.9 b/share/man/man9/alloc_unr.9
new file mode 100644
index 0000000..ee805a3
--- /dev/null
+++ b/share/man/man9/alloc_unr.9
@@ -0,0 +1,100 @@
+.\" Copyright (c) 2005 Gleb Smirnoff <glebius@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$
+.\"
+.Dd March 23, 2005
+.Dt ALLOC_UNR 9
+.Os
+.Sh NAME
+.Nm new_unrhdr ,
+.Nm delete_unrhdr ,
+.Nm alloc_unr ,
+.Nm free_unr
+.Nd "kernel unit number allocator"
+.Sh SYNOPSIS
+.In sys/systm.h
+.Ft "struct unrhdr *"
+.Fn new_unrhdr "int low" "int high" "struct mtx *mutex"
+.Ft void
+.Fn delete_unrhdr "struct unrhdr *uh"
+.Ft int
+.Fn alloc_unr "struct unrhdr *uh"
+.Ft int
+.Fn alloc_unrl "struct unrhdr *uh"
+.Ft void
+.Fn free_unr "struct unrhdr *uh" "u_int item"
+.Sh DESCRIPTION
+The kernel unit number allocator is a generic facility, which allows to allocate
+unit numbers within a specified range.
+.Bl -tag -width indent
+.It Fn new_unrhdr low high mutex
+Initialize a new unit number allocator entity.
+The
+.Fa low
+and
+.Fa high
+arguments
+specify minimum and maximum number of unit numbers.
+There is no cost associated with the range of unit numbers, so unless the resource
+really is finite,
+.Dv INT_MAX
+can be used.
+If
+.Fa mutex
+is not
+.Dv NULL ,
+it is used for locking when allocating and freeing units.
+Otherwise, internal mutex is used.
+.It Fn delete_unrhdr uh
+Destroy specified unit number allocator entity.
+.It Fn alloc_unr uh
+Return a new unit number.
+The lowest free number is always allocated.
+This function does not allocate memory and never sleeps, however it may
+block on a mutex.
+If no free unit numbers are left,
+.Li \-1
+is returned.
+.It Fn alloc_unrl uh
+Same as
+.Fn alloc_unr
+except that mutex is assumed to be already locked and thus is not used.
+.It Fn free_unr uh
+Free a previously allocated unit number.
+This function may require allocating memory, and thus it can sleep.
+There is no pre-locked variant.
+.El
+.Sh CODE REFERENCES
+The above functions are implemented in
+.Pa sys/kern/subr_unit.c .
+.Sh HISTORY
+Kernel unit number allocator first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+Kernel unit number allocator was written by
+.An Poul-Henning Kamp .
+This manpage was written by
+.An Gleb Smirnoff .
diff --git a/share/man/man9/alq.9 b/share/man/man9/alq.9
new file mode 100644
index 0000000..ec6ef26
--- /dev/null
+++ b/share/man/man9/alq.9
@@ -0,0 +1,256 @@
+.\"
+.\" Copyright (c) 2003 Hiten Pandya <hmp@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,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. 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 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$
+.\"
+.Dd May 16, 2003
+.Dt ALQ 9
+.Os
+.Sh NAME
+.Nm alq ,
+.Nm alq_open ,
+.Nm alq_write ,
+.Nm alq_flush ,
+.Nm alq_close ,
+.Nm alq_get ,
+.Nm alq_post
+.Nd Asynchronous Logging Queues
+.Sh SYNOPSIS
+.In sys/alq.h
+.Ft int
+.Fo alq_open
+.Fa "struct alq **app"
+.Fa "const char *file"
+.Fa "struct ucred *cred"
+.Fa "int cmode"
+.Fa "int size"
+.Fa "int count"
+.Fc
+.Ft int
+.Fn alq_write "struct alq *alq" "void *data" "int waitok"
+.Ft void
+.Fn alq_flush "struct alq *alq"
+.Ft void
+.Fn alq_close "struct alq *alq"
+.Ft struct ale *
+.Fn alq_get "struct alq *alq" "int waitok"
+.Ft void
+.Fn alq_post "struct alq *alq" "struct ale *ale"
+.Sh DESCRIPTION
+The
+.Nm
+facility provides an asynchronous fixed length recording
+mechanism, known as Asynchronous Logging Queues.
+It can record to any
+.Xr vnode 9 ,
+thus providing the ability to journal logs to character
+devices as well as regular files.
+All functions accept a
+.Vt "struct alq"
+argument, which is an opaque type that maintains state information
+for an Asynchronous Logging Queue.
+The logging facility runs in a separate kernel thread, which services
+all log entry requests.
+.Pp
+An
+.Dq asynchronous log entry
+is defined as
+.Vt "struct ale" ,
+which has the following members:
+.Bd -literal -offset indent
+struct ale {
+ struct ale *ae_next; /* Next Entry */
+ char *ae_data; /* Entry buffer */
+ int ae_flags; /* Entry flags */
+};
+.Ed
+.Pp
+The
+.Va ae_flags
+field is for internal use, clients of the
+.Nm
+interface should not modify this field.
+Behaviour is undefined if this field is modified.
+.Sh FUNCTIONS
+The
+.Fn alq_open
+function creates a new logging queue.
+The
+.Fa file
+argument is the name of the file to open for logging; if the file does not
+yet exist,
+.Fn alq_open
+will attempt to create it.
+The
+.Fa cmode
+argument will be passed to
+.Fn vn_open
+as the requested creation mode, to be used if the file will be created by
+.Fn alq_open .
+Consumers of this API may wish to pass
+.Dv ALQ_DEFAULT_CMODE ,
+a default creation mode suitable for most applications.
+The argument
+.Fa cred
+specifies the credentials to use when opening and performing I/O on the file.
+The size of each entry in the queue is determined by
+.Fa size .
+The
+.Fa count
+argument determines the number of items to be stored in the
+asynchronous queue over an approximate period of a disk
+write operation.
+.Pp
+The
+.Fn alq_write
+function writes
+.Fa data
+to the designated queue,
+.Fa alq .
+In the event that
+.Fn alq_write
+could not write the entry immediately, and
+.Dv ALQ_WAITOK
+is passed to
+.Fa waitok ,
+then
+.Fn alq_write
+will be allowed to
+.Xr tsleep 9 .
+.Pp
+The
+.Fn alq_flush
+function is used for flushing
+.Fa alq
+to the log medium that was passed to
+.Fn alq_open .
+.Pp
+The
+.Fn alq_close
+function will close the asynchronous logging queue,
+.Fa alq ,
+and flush all pending write requests to the log medium.
+It will free all resources that were previously allocated.
+.Pp
+The
+.Fn alq_get
+function returns the next available asynchronous logging entry
+from the queue,
+.Fa alq .
+This function leaves the queue in a locked state, until a subsequent
+.Fn alq_post
+call is made.
+In the event that
+.Fn alq_get
+could not retrieve an entry immediately, it will
+.Xr tsleep 9
+with the
+.Dq Li alqget
+wait message.
+.Pp
+The
+.Fn alq_post
+function schedules the asynchronous logging entry,
+.Fa ale ,
+which is retrieved using the
+.Fn alq_get
+function,
+for writing to the asynchronous logging queue,
+.Fa alq .
+This function leaves the queue,
+.Fa alq ,
+in an unlocked state.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn alq_write
+function is a wrapper around the
+.Fn alq_get
+and
+.Fn alq_post
+functions; by using these functions separately, a call
+to
+.Fn bcopy
+can be avoided for performance critical code paths.
+.Sh LOCKING
+Each asynchronous queue is protected by a spin mutex.
+.Pp
+Functions
+.Fn alq_flush ,
+.Fn alq_open
+and
+.Fn alq_post
+may attempt to acquire an internal sleep mutex, and should
+consequently not be used in contexts where sleeping is
+not allowed.
+.Sh RETURN VALUES
+The
+.Fn alq_open
+function returns one of the error codes listed in
+.Xr open 2 ,
+if it fails to open
+.Fa file ,
+or else it returns 0.
+.Pp
+The
+.Fn alq_write
+function returns
+.Er EWOULDBLOCK
+if
+.Dv ALQ_NOWAIT
+was provided as a value to
+.Fa waitok
+and either the queue is full, or when the system is shutting down.
+.Pp
+The
+.Fn alq_get
+function returns
+.Dv NULL ,
+if
+.Dv ALQ_NOWAIT
+was provided as a value to
+.Fa waitok
+and either the queue is full, or when the system is shutting down.
+.Pp
+NOTE: invalid arguments to non-void functions will result in
+undefined behaviour.
+.Sh SEE ALSO
+.Xr syslog 3 ,
+.Xr kthread 9 ,
+.Xr ktr 9 ,
+.Xr tsleep 9 ,
+.Xr vnode 9
+.Sh HISTORY
+The
+Asynchronous Logging Queues (ALQ) facility first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+facility was written by
+.An Jeffrey Roberson Aq jeff@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Hiten Pandya Aq hmp@FreeBSD.org .
diff --git a/share/man/man9/altq.9 b/share/man/man9/altq.9
new file mode 100644
index 0000000..6ed338b
--- /dev/null
+++ b/share/man/man9/altq.9
@@ -0,0 +1,604 @@
+.\" $NetBSD: altq.9,v 1.8 2002/05/28 11:41:45 wiz Exp $
+.\" $OpenBSD: altq.9,v 1.4 2001/07/12 12:41:42 itojun Exp $
+.\"
+.\" Copyright (C) 2004 Max Laier. All rights reserved.
+.\" Copyright (C) 2001
+.\" Sony Computer Science Laboratories 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 SONY CSL 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 SONY CSL 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$
+.\"
+.Dd August 25, 2004
+.Dt ALTQ 9
+.Os
+.\"
+.Sh NAME
+.Nm ALTQ
+.Nd kernel interfaces for manipulating output queues on network interfaces
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In net/if.h
+.In net/if_var.h
+.\"
+.Ss Enqueue macros
+.Fn IFQ_ENQUEUE "struct ifaltq *ifq" "struct mbuf *m" "int error"
+.Fn IFQ_HANDOFF "struct ifnet *ifp" "struct mbuf *m" "int error"
+.Fo IFQ_HANDOFF_ADJ
+.Fa "struct ifnet *ifp" "struct mbuf *m" "int adjust" "int error"
+.Fc
+.\"
+.Ss Dequeue macros
+.Fn IFQ_DEQUEUE "struct ifaltq *ifq" "struct mbuf *m"
+.Fn IFQ_POLL_NOLOCK "struct ifaltq *ifq" "struct mbuf *m"
+.Fn IFQ_PURGE "struct ifaltq *ifq"
+.Fn IFQ_IS_EMPTY "struct ifaltq *ifq"
+.\"
+.Ss Driver managed dequeue macros
+.Fn IFQ_DRV_DEQUEUE "struct ifaltq *ifq" "struct mbuf *m"
+.Fn IFQ_DRV_PREPEND "struct ifaltq *ifq" "struct mbuf *m"
+.Fn IFQ_DRV_PURGE "struct ifaltq *ifq"
+.Fn IFQ_DRV_IS_EMPTY "struct ifaltq *ifq"
+.\"
+.Ss General setup macros
+.Fn IFQ_SET_MAXLEN "struct ifaltq *ifq" "int len"
+.Fn IFQ_INC_LEN "struct ifaltq *ifq"
+.Fn IFQ_DEC_LEN "struct ifaltq *ifq"
+.Fn IFQ_INC_DROPS "struct ifaltq *ifq"
+.Fn IFQ_SET_READY "struct ifaltq *ifq"
+.Sh DESCRIPTION
+The
+.Nm
+system is a framework to manage queuing disciplines on network
+interfaces.
+.Nm
+introduces new macros to manipulate output queues.
+The output queue macros are used to abstract queue operations and not to
+touch the internal fields of the output queue structure.
+The macros are independent from the
+.Nm
+implementation, and compatible with the traditional
+.Vt ifqueue
+macros for ease of transition.
+.Pp
+.Fn IFQ_ENQUEUE ,
+.Fn IFQ_HANDOFF
+and
+.Fn IFQ_HANDOFF_ADJ
+enqueue a packet
+.Fa m
+to the queue
+.Fa ifq .
+The underlying queuing discipline may discard the packet.
+The
+.Fa error
+argument is set to 0 on success, or
+.Er ENOBUFS
+if the packet is discarded.
+The packet pointed to by
+.Fa m
+will be freed by the device driver on success, or by the queuing discipline on
+failure, so the caller should not touch
+.Fa m
+after enqueuing.
+.Fn IFQ_HANDOFF
+and
+.Fn IFQ_HANDOFF_ADJ
+combine the enqueue operation with statistic generation and call
+.Fn if_start
+upon successful enqueue to initiate the actual send.
+.Pp
+.Fn IFQ_DEQUEUE
+dequeues a packet from the queue.
+The dequeued packet is returned in
+.Fa m ,
+or
+.Fa m
+is set to
+.Dv NULL
+if no packet is dequeued.
+The caller must always check
+.Fa m
+since a non-empty queue could return
+.Dv NULL
+under rate-limiting.
+.Pp
+.Fn IFQ_POLL_NOLOCK
+returns the next packet without removing it from the queue.
+The caller must hold the queue mutex when calling
+.Fn IFQ_POLL_NOLOCK
+in order to guarantee that a subsequent call to
+.Fn IFQ_DEQUEUE_NOLOCK
+dequeues the same packet.
+.Pp
+.Fn IFQ_*_NOLOCK
+variants (if available) always assume that the caller holds the queue mutex.
+They can be grabbed with
+.Fn IFQ_LOCK
+and released with
+.Fn IFQ_UNLOCK .
+.Pp
+.Fn IFQ_PURGE
+discards all the packets in the queue.
+The purge operation is needed since a non-work conserving queue cannot be
+emptied by a dequeue loop.
+.Pp
+.Fn IFQ_IS_EMPTY
+can be used to check if the queue is empty.
+Note that
+.Fn IFQ_DEQUEUE
+could still return
+.Dv NULL
+if the queuing discipline is non-work conserving.
+.Pp
+.Fn IFQ_DRV_DEQUEUE
+moves up to
+.Fa ifq->ifq_drv_maxlen
+packets from the queue to the
+.Dq "driver managed"
+queue and returns the first one via
+.Fa m .
+As for
+.Fn IFQ_DEQUEUE ,
+.Fa m
+can be
+.Dv NULL
+even for a non-empty queue.
+Subsequent calls to
+.Fn IFQ_DRV_DEQUEUE
+pass the packets from the
+.Dq "driver managed"
+queue without obtaining the queue mutex.
+It is the responsibility of the caller to protect against concurrent access.
+Enabling
+.Nm
+for a given queue sets
+.Va ifq_drv_maxlen
+to 0 as the
+.Dq "bulk dequeue"
+performed by
+.Fn IFQ_DRV_DEQUEUE
+for higher values of
+.Va ifq_drv_maxlen
+is adverse to
+.Nm ALTQ Ns 's
+internal timing.
+Note that a driver must not mix
+.Fn IFQ_DRV_*
+macros with the default dequeue macros as the default macros do not look at the
+.Dq "driver managed"
+queue which might lead to an mbuf leak.
+.Pp
+.Fn IFQ_DRV_PREPEND
+prepends
+.Fa m
+to the
+.Dq "driver managed"
+queue from where it will be obtained with the next call to
+.Fn IFQ_DRV_DEQUEUE .
+.Pp
+.Fn IFQ_DRV_PURGE
+flushes all packets in the
+.Dq "driver managed"
+queue and calls to
+.Fn IFQ_PURGE
+afterwards.
+.Pp
+.Fn IFQ_DRV_IS_EMPTY
+checks for packets in the
+.Dq "driver managed"
+part of the queue.
+If it is empty, it forwards to
+.Fn IFQ_IS_EMPTY .
+.Pp
+.Fn IFQ_SET_MAXLEN
+sets the queue length limit to the default FIFO queue.
+The
+.Va ifq_drv_maxlen
+member of the
+.Vt ifaltq
+structure controls the length limit of the
+.Dq "driver managed"
+queue.
+.Pp
+.Fn IFQ_INC_LEN
+and
+.Fn IFQ_DEC_LEN
+increment or decrement the current queue length in packets.
+This is mostly for internal purposes.
+.Pp
+.Fn IFQ_INC_DROPS
+increments the drop counter and is identical to
+.Fn IF_DROP .
+It is defined for naming consistency only.
+.Pp
+.Fn IFQ_SET_READY
+sets a flag to indicate that a driver was converted to use the new macros.
+.Nm
+can be enabled only on interfaces with this flag.
+.Sh COMPATIBILITY
+.Ss Vt ifaltq Ss structure
+In order to keep compatibility with the existing code, the new
+output queue structure
+.Vt ifaltq
+has the same fields.
+The traditional
+.Fn IF_*
+macros and the code directly referencing the fields within
+.Va if_snd
+still work with
+.Vt ifaltq .
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ struct ifqueue { | struct ifaltq {
+ struct mbuf *ifq_head; | struct mbuf *ifq_head;
+ struct mbuf *ifq_tail; | struct mbuf *ifq_tail;
+ int ifq_len; | int ifq_len;
+ int ifq_maxlen; | int ifq_maxlen;
+ int ifq_drops; | int ifq_drops;
+ }; | /* driver queue fields */
+ | ......
+ | /* altq related fields */
+ | ......
+ | };
+ |
+.Ed
+The new structure replaces
+.Vt "struct ifqueue"
+in
+.Vt "struct ifnet" .
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ struct ifnet { | struct ifnet {
+ .... | ....
+ |
+ struct ifqueue if_snd; | struct ifaltq if_snd;
+ |
+ .... | ....
+ }; | };
+ |
+.Ed
+The (simplified) new
+.Fn IFQ_*
+macros look like:
+.Bd -literal
+ #define IFQ_DEQUEUE(ifq, m) \e
+ if (ALTQ_IS_ENABLED((ifq)) \e
+ ALTQ_DEQUEUE((ifq), (m)); \e
+ else \e
+ IF_DEQUEUE((ifq), (m));
+.Ed
+.Ss Enqueue operation
+The semantics of the enqueue operation is changed.
+In the new style,
+enqueue and packet drop are combined since they cannot be easily
+separated in many queuing disciplines.
+The new enqueue operation corresponds to the following macro that is
+written with the old macros.
+.Bd -literal
+#define IFQ_ENQUEUE(ifq, m, error) \e
+do { \e
+ if (IF_QFULL((ifq))) { \e
+ m_freem((m)); \e
+ (error) = ENOBUFS; \e
+ IF_DROP(ifq); \e
+ } else { \e
+ IF_ENQUEUE((ifq), (m)); \e
+ (error) = 0; \e
+ } \e
+} while (0)
+.Ed
+.Pp
+.Fn IFQ_ENQUEUE
+does the following:
+.Pp
+.Bl -hyphen -compact
+.It
+queue a packet,
+.It
+drop (and free) a packet if the enqueue operation fails.
+.El
+.Pp
+If the enqueue operation fails,
+.Fa error
+is set to
+.Er ENOBUFS .
+The
+.Fa m
+mbuf is freed by the queuing discipline.
+The caller should not touch mbuf after calling
+.Fn IFQ_ENQUEUE
+so that the caller may need to copy
+.Va m_pkthdr.len
+or
+.Va m_flags
+field beforehand for statistics.
+.Fn IFQ_HANDOFF
+and
+.Fn IFQ_HANDOFF_ADJ
+can be used if only default interface statistics and an immediate call to
+.Fn if_start
+are desired.
+The caller should not use
+.Fn senderr
+since mbuf was already freed.
+.Pp
+The new style
+.Fn if_output
+looks as follows:
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ int | int
+ ether_output(ifp, m0, dst, rt0) | ether_output(ifp, m0, dst, rt0)
+ { | {
+ ...... | ......
+ |
+ | mflags = m->m_flags;
+ | len = m->m_pkthdr.len;
+ s = splimp(); | s = splimp();
+ if (IF_QFULL(&ifp->if_snd)) { | IFQ_ENQUEUE(&ifp->if_snd, m,
+ | error);
+ IF_DROP(&ifp->if_snd); | if (error != 0) {
+ splx(s); | splx(s);
+ senderr(ENOBUFS); | return (error);
+ } | }
+ IF_ENQUEUE(&ifp->if_snd, m); |
+ ifp->if_obytes += | ifp->if_obytes += len;
+ m->m_pkthdr.len; |
+ if (m->m_flags & M_MCAST) | if (mflags & M_MCAST)
+ ifp->if_omcasts++; | ifp->if_omcasts++;
+ |
+ if ((ifp->if_flags & IFF_OACTIVE) | if ((ifp->if_flags & IFF_OACTIVE)
+ == 0) | == 0)
+ (*ifp->if_start)(ifp); | (*ifp->if_start)(ifp);
+ splx(s); | splx(s);
+ return (error); | return (error);
+ |
+ bad: | bad:
+ if (m) | if (m)
+ m_freem(m); | m_freem(m);
+ return (error); | return (error);
+ } | }
+ |
+.Ed
+.Sh HOW TO CONVERT THE EXISTING DRIVERS
+First, make sure the corresponding
+.Fn if_output
+is already converted to the new style.
+.Pp
+Look for
+.Va if_snd
+in the driver.
+Probably, you need to make changes to the lines that include
+.Va if_snd .
+.Ss Empty check operation
+If the code checks
+.Va ifq_head
+to see whether the queue is empty or not, use
+.Fn IFQ_IS_EMPTY .
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ if (ifp->if_snd.ifq_head != NULL) | if (!IFQ_IS_EMPTY(&ifp->if_snd))
+ |
+.Ed
+.Fn IFQ_IS_EMPTY
+only checks if there is any packet stored in the queue.
+Note that even when
+.Fn IFQ_IS_EMPTY
+is
+.Dv FALSE ,
+.Fn IFQ_DEQUEUE
+could still return
+.Dv NULL
+if the queue is under rate-limiting.
+.Ss Dequeue operation
+Replace
+.Fn IF_DEQUEUE
+by
+.Fn IFQ_DEQUEUE .
+Always check whether the dequeued mbuf is
+.Dv NULL
+or not.
+Note that even when
+.Fn IFQ_IS_EMPTY
+is
+.Dv FALSE ,
+.Fn IFQ_DEQUEUE
+could return
+.Dv NULL
+due to rate-limiting.
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ IF_DEQUEUE(&ifp->if_snd, m); | IFQ_DEQUEUE(&ifp->if_snd, m);
+ | if (m == NULL)
+ | return;
+ |
+.Ed
+A driver is supposed to call
+.Fn if_start
+from transmission complete interrupts in order to trigger the next dequeue.
+.Ss Poll-and-dequeue operation
+If the code polls the packet at the head of the queue and actually uses
+the packet before dequeuing it, use
+.Fn IFQ_POLL_NOLOCK
+and
+.Fn IFQ_DEQUEUE_NOLOCK .
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ | IFQ_LOCK(&ifp->if_snd);
+ m = ifp->if_snd.ifq_head; | IFQ_POLL_NOLOCK(&ifp->if_snd, m);
+ if (m != NULL) { | if (m != NULL) {
+ |
+ /* use m to get resources */ | /* use m to get resources */
+ if (something goes wrong) | if (something goes wrong)
+ | IFQ_UNLOCK(&ifp->if_snd);
+ return; | return;
+ |
+ IF_DEQUEUE(&ifp->if_snd, m); | IFQ_DEQUEUE_NOLOCK(&ifp->if_snd, m);
+ | IFQ_UNLOCK(&ifp->if_snd);
+ |
+ /* kick the hardware */ | /* kick the hardware */
+ } | }
+ |
+.Ed
+It is guaranteed that
+.Fn IFQ_DEQUEUE_NOLOCK
+under the same lock as a previous
+.Fn IFQ_POLL_NOLOCK
+returns the same packet.
+Note that they need to be guarded by
+.Fn IFQ_LOCK .
+.Ss Eliminating Fn IF_PREPEND
+If the code uses
+.Fn IF_PREPEND ,
+you have to eliminate it unless you can use a
+.Dq "driver managed"
+queue which allows the use of
+.Fn IFQ_DRV_PREPEND
+as a substitute.
+A common usage of
+.Fn IF_PREPEND
+is to cancel the previous dequeue operation.
+You have to convert the logic into poll-and-dequeue.
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ | IFQ_LOCK(&ifp->if_snd);
+ IF_DEQUEUE(&ifp->if_snd, m); | IFQ_POLL_NOLOCK(&ifp->if_snd, m);
+ if (m != NULL) { | if (m != NULL) {
+ |
+ if (something_goes_wrong) { | if (something_goes_wrong) {
+ IF_PREPEND(&ifp->if_snd, m); | IFQ_UNLOCK(&ifp->if_snd);
+ return; | return;
+ } | }
+ |
+ | /* at this point, the driver
+ | * is committed to send this
+ | * packet.
+ | */
+ | IFQ_DEQUEUE_NOLOCK(&ifp->if_snd, m);
+ | IFQ_UNLOCK(&ifp->if_snd);
+ |
+ /* kick the hardware */ | /* kick the hardware */
+ } | }
+ |
+.Ed
+.Ss Purge operation
+Use
+.Fn IFQ_PURGE
+to empty the queue.
+Note that a non-work conserving queue cannot be emptied by a dequeue loop.
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ while (ifp->if_snd.ifq_head != NULL) {| IFQ_PURGE(&ifp->if_snd);
+ IF_DEQUEUE(&ifp->if_snd, m); |
+ m_freem(m); |
+ } |
+ |
+.Ed
+.Ss Conversion using a driver managed queue
+Convert
+.Fn IF_*
+macros to their equivalent
+.Fn IFQ_DRV_*
+and employ
+.Fn IFQ_DRV_IS_EMPTY
+where appropriate.
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ if (ifp->if_snd.ifq_head != NULL) | if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+ |
+.Ed
+Make sure that calls to
+.Fn IFQ_DRV_DEQUEUE ,
+.Fn IFQ_DRV_PREPEND
+and
+.Fn IFQ_DRV_PURGE
+are protected with a mutex of some kind.
+Setting
+.Dv IFF_NEEDSGIANT
+in
+.Va if_flags
+might also be appropriate.
+.Ss Attach routine
+Use
+.Fn IFQ_SET_MAXLEN
+to set
+.Va ifq_maxlen
+to
+.Fa len .
+Initialize
+.Va ifq_drv_maxlen
+with a sensible value if you plan to use the
+.Fn IFQ_DRV_*
+macros.
+Add
+.Fn IFQ_SET_READY
+to show this driver is converted to the new style.
+(This is used to distinguish new-style drivers.)
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ ifp->if_snd.ifq_maxlen = qsize; | IFQ_SET_MAXLEN(&ifp->if_snd, qsize);
+ | ifp->if_snd.ifq_drv_maxlen = qsize;
+ | IFQ_SET_READY(&ifp->if_snd);
+ if_attach(ifp); | if_attach(ifp);
+ |
+.Ed
+.Ss Other issues
+The new macros for statistics:
+.Bd -literal
+ ##old-style## ##new-style##
+ |
+ IF_DROP(&ifp->if_snd); | IFQ_INC_DROPS(&ifp->if_snd);
+ |
+ ifp->if_snd.ifq_len++; | IFQ_INC_LEN(&ifp->if_snd);
+ |
+ ifp->if_snd.ifq_len--; | IFQ_DEC_LEN(&ifp->if_snd);
+ |
+.Ed
+.Sh QUEUING DISCIPLINES
+Queuing disciplines need to maintain
+.Fa ifq_len
+(used by
+.Fn IFQ_IS_EMPTY ) .
+Queuing disciplines also need to guarantee that the same mbuf is returned if
+.Fn IFQ_DEQUEUE
+is called immediately after
+.Fn IFQ_POLL .
+.Sh SEE ALSO
+.Xr pf 4 ,
+.Xr pf.conf 5 ,
+.Xr pfctl 8
+.Sh HISTORY
+The
+.Nm
+system first appeared in March 1997.
diff --git a/share/man/man9/atomic.9 b/share/man/man9/atomic.9
new file mode 100644
index 0000000..70ee2ab
--- /dev/null
+++ b/share/man/man9/atomic.9
@@ -0,0 +1,357 @@
+.\" Copyright (c) 2000-2001 John H. Baldwin <jhb@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd September 27, 2005
+.Os
+.Dt ATOMIC 9
+.Sh NAME
+.Nm atomic_add ,
+.Nm atomic_clear ,
+.Nm atomic_cmpset ,
+.Nm atomic_fetchadd ,
+.Nm atomic_load ,
+.Nm atomic_readandclear ,
+.Nm atomic_set ,
+.Nm atomic_subtract ,
+.Nm atomic_store
+.Nd atomic operations
+.Sh SYNOPSIS
+.In sys/types.h
+.In machine/atomic.h
+.Ft void
+.Fn atomic_add_[acq_|rel_]<type> "volatile <type> *p" "<type> v"
+.Ft void
+.Fn atomic_clear_[acq_|rel_]<type> "volatile <type> *p" "<type> v"
+.Ft int
+.Fo atomic_cmpset_[acq_|rel_]<type>
+.Fa "volatile <type> *dst"
+.Fa "<type> old"
+.Fa "<type> new"
+.Fc
+.Ft <type>
+.Fn atomic_fetchadd_<type> "volatile <type> *p" "<type> v"
+.Ft <type>
+.Fn atomic_load_acq_<type> "volatile <type> *p"
+.Ft <type>
+.Fn atomic_readandclear_<type> "volatile <type> *p"
+.Ft void
+.Fn atomic_set_[acq_|rel_]<type> "volatile <type> *p" "<type> v"
+.Ft void
+.Fn atomic_subtract_[acq_|rel_]<type> "volatile <type> *p" "<type> v"
+.Ft void
+.Fn atomic_store_rel_<type> "volatile <type> *p" "<type> v"
+.rm LB RB La Ra
+.Sh DESCRIPTION
+Each of the atomic operations is guaranteed to be atomic in the presence of
+interrupts.
+They can be used to implement reference counts or as building blocks for more
+advanced synchronization primitives such as mutexes.
+.Ss Types
+Each atomic operation operates on a specific
+.Fa type .
+The type to use is indicated in the function name.
+The available types that can be used are:
+.Pp
+.Bl -tag -offset indent -width short -compact
+.It Li int
+unsigned integer
+.It Li long
+unsigned long integer
+.It Li ptr
+unsigned integer the size of a pointer
+.It Li 32
+unsigned 32-bit integer
+.It Li 64
+unsigned 64-bit integer
+.El
+.Pp
+For example, the function to atomically add two integers is called
+.Fn atomic_add_int .
+.Pp
+Certain architectures also provide operations for types smaller than
+.Dq Li int .
+.Pp
+.Bl -tag -offset indent -width short -compact
+.It Li char
+unsigned character
+.It Li short
+unsigned short integer
+.It Li 8
+unsigned 8-bit integer
+.It Li 16
+unsigned 16-bit integer
+.El
+.Pp
+These must not be used in MI code because the instructions to implement them
+efficiently may not be available.
+.Ss Memory Barriers
+Memory barriers are used to guarantee the order of data accesses in
+two ways.
+First, they specify hints to the compiler to not re-order or optimize the
+operations.
+Second, on architectures that do not guarantee ordered data accesses,
+special instructions or special variants of instructions are used to indicate
+to the processor that data accesses need to occur in a certain order.
+As a result, most of the atomic operations have three variants in order to
+include optional memory barriers.
+The first form just performs the operation without any explicit barriers.
+The second form uses a read memory barrier, and the third variant uses a write
+memory barrier.
+.Pp
+The second variant of each operation includes a read memory barrier.
+This barrier ensures that the effects of this operation are completed before the
+effects of any later data accesses.
+As a result, the operation is said to have acquire semantics as it acquires a
+pseudo-lock requiring further operations to wait until it has completed.
+To denote this, the suffix
+.Dq Li _acq
+is inserted into the function name immediately prior to the
+.Dq Li _ Ns Aq Fa type
+suffix.
+For example, to subtract two integers ensuring that any later writes will
+happen after the subtraction is performed, use
+.Fn atomic_subtract_acq_int .
+.Pp
+The third variant of each operation includes a write memory barrier.
+This ensures that all effects of all previous data accesses are completed
+before this operation takes place.
+As a result, the operation is said to have release semantics as it releases
+any pending data accesses to be completed before its operation is performed.
+To denote this, the suffix
+.Dq Li _rel
+is inserted into the function name immediately prior to the
+.Dq Li _ Ns Aq Fa type
+suffix.
+For example, to add two long integers ensuring that all previous
+writes will happen first, use
+.Fn atomic_add_rel_long .
+.Pp
+A practical example of using memory barriers is to ensure that data accesses
+that are protected by a lock are all performed while the lock is held.
+To achieve this, one would use a read barrier when acquiring the lock to
+guarantee that the lock is held before any protected operations are performed.
+Finally, one would use a write barrier when releasing the lock to ensure that
+all of the protected operations are completed before the lock is released.
+.Ss Multiple Processors
+The current set of atomic operations do not necessarily guarantee atomicity
+across multiple processors.
+To guarantee atomicity across processors, not only does the individual
+operation need to be atomic on the processor performing the operation, but
+the result of the operation needs to be pushed out to stable storage and the
+caches of all other processors on the system need to invalidate any cache
+lines that include the affected memory region.
+On the
+.Tn i386
+architecture, the cache coherency model requires that the hardware perform
+this task, thus the atomic operations are atomic across multiple processors.
+On the
+.Tn ia64
+architecture, coherency is only guaranteed for pages that are configured to
+using a caching policy of either uncached or write back.
+.Ss Semantics
+This section describes the semantics of each operation using a C like notation.
+.Bl -hang
+.It Fn atomic_add p v
+.Bd -literal -compact
+*p += v;
+.Ed
+.It Fn atomic_clear p v
+.Bd -literal -compact
+*p &= ~v;
+.Ed
+.It Fn atomic_cmpset dst old new
+.Bd -literal -compact
+if (*dst == old) {
+ *dst = new;
+ return 1;
+} else
+ return 0;
+.Ed
+.El
+.Pp
+The
+.Fn atomic_cmpset
+functions are not implemented for the types
+.Dq Li char ,
+.Dq Li short ,
+.Dq Li 8 ,
+and
+.Dq Li 16 .
+.Bl -hang
+.It Fn atomic_fetchadd p v
+.Bd -literal -compact
+tmp = *p;
+*p += v;
+return tmp;
+.Ed
+.El
+.Pp
+The
+.Fn atomic_fetchadd
+functions are only implemented for the types
+.Dq Li int ,
+.Dq Li long
+and
+.Dq Li 32
+and do not have any variants with memory barriers at this time.
+.Bl -hang
+.It Fn atomic_load addr
+.Bd -literal -compact
+return (*addr)
+.Ed
+.El
+.Pp
+The
+.Fn atomic_load
+functions always have acquire semantics.
+.Bl -hang
+.It Fn atomic_readandclear addr
+.Bd -literal -compact
+temp = *addr;
+*addr = 0;
+return (temp);
+.Ed
+.El
+.Pp
+The
+.Fn atomic_readandclear
+functions are not implemented for the types
+.Dq Li char ,
+.Dq Li short ,
+.Dq Li ptr ,
+.Dq Li 8 ,
+and
+.Dq Li 16
+and do
+not have any variants with memory barriers at this time.
+.Bl -hang
+.It Fn atomic_set p v
+.Bd -literal -compact
+*p |= v;
+.Ed
+.It Fn atomic_subtract p v
+.Bd -literal -compact
+*p -= v;
+.Ed
+.It Fn atomic_store p v
+.Bd -literal -compact
+*p = v;
+.Ed
+.El
+.Pp
+The
+.Fn atomic_store
+functions always have release semantics.
+.Pp
+The type
+.Dq Li 64
+is currently not implemented for any of the atomic operations on the
+.Tn arm ,
+.Tn i386 ,
+and
+.Tn powerpc
+architectures.
+.Sh RETURN VALUES
+The
+.Fn atomic_cmpset
+function
+returns the result of the compare operation.
+The
+.Fn atomic_fetchadd ,
+.Fn atomic_load ,
+and
+.Fn atomic_readandclear
+functions
+return the value at the specified address.
+.Sh EXAMPLES
+This example uses the
+.Fn atomic_cmpset_acq_ptr
+and
+.Fn atomic_set_ptr
+functions to obtain a sleep mutex and handle recursion.
+Since the
+.Va mtx_lock
+member of a
+.Vt "struct mtx"
+is a pointer, the
+.Dq Li ptr
+type is used.
+.Bd -literal
+/* Try to obtain mtx_lock once. */
+#define _obtain_lock(mp, tid) \\
+ atomic_cmpset_acq_ptr(&(mp)->mtx_lock, MTX_UNOWNED, (tid))
+
+/* Get a sleep lock, deal with recursion inline. */
+#define _get_sleep_lock(mp, tid, opts, file, line) do { \\
+ uintptr_t _tid = (uintptr_t)(tid); \\
+ \\
+ if (!_obtain_lock(mp, tid)) { \\
+ if (((mp)->mtx_lock & MTX_FLAGMASK) != _tid) \\
+ _mtx_lock_sleep((mp), _tid, (opts), (file), (line));\\
+ else { \\
+ atomic_set_ptr(&(mp)->mtx_lock, MTX_RECURSE); \\
+ (mp)->mtx_recurse++; \\
+ } \\
+ } \\
+} while (0)
+.Ed
+.Sh HISTORY
+The
+.Fn atomic_add ,
+.Fn atomic_clear ,
+.Fn atomic_set ,
+and
+.Fn atomic_subtract
+operations were first introduced in
+.Fx 3.0 .
+This first set only supported the types
+.Dq Li char ,
+.Dq Li short ,
+.Dq Li int ,
+and
+.Dq Li long .
+The
+.Fn atomic_cmpset ,
+.Fn atomic_load ,
+.Fn atomic_readandclear ,
+and
+.Fn atomic_store
+operations were added in
+.Fx 5.0 .
+The types
+.Dq Li 8 ,
+.Dq Li 16 ,
+.Dq Li 32 ,
+.Dq Li 64 ,
+and
+.Dq Li ptr
+and all of the acquire and release variants
+were added in
+.Fx 5.0
+as well.
+The
+.Fn atomic_fetchadd
+operations were added in
+.Fx 6.0 .
diff --git a/share/man/man9/bios.9 b/share/man/man9/bios.9
new file mode 100644
index 0000000..e7922af
--- /dev/null
+++ b/share/man/man9/bios.9
@@ -0,0 +1,182 @@
+.\" $FreeBSD$
+.\"
+.\" Copyright (c) 1997 Michael Smith
+.\" 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.
+.\"
+.Dd August 9, 2005
+.Dt BIOS 9
+.Os
+.Sh NAME
+.Nm bios_sigsearch ,
+.Nm bios32_SDlookup ,
+.Nm bios32 ,
+.Nm bios_oem_strings
+.Nd interact with PC BIOS
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.In machine/param.h
+.In machine/pmap.h
+.In machine/pc/bios.h
+.Ft u_int32_t
+.Fn bios_sigsearch "u_int32_t start" "u_char *sig" "int siglen" "int paralen" "int sigofs"
+.Ft int
+.Fn bios32_SDlookup "struct bios32_SDentry *ent"
+.Ft int
+.Fn bios32 "struct bios_regs *br" "u_int offset" "u_short segment"
+.Fn BIOS_PADDRTOVADDR "addr"
+.Fn BIOS_VADDRTOPADDR "addr"
+.Vt extern struct bios32_SDentry PCIbios ;
+.Vt extern struct SMBIOS_table SMBIOStable ;
+.Vt extern struct DMI_table DMItable ;
+.Ft int
+.Fn bios_oem_strings "struct bios_oem *oem" "u_char *buffer" "size_t maxlen"
+.Bd -literal
+struct bios_oem_signature {
+ char * anchor; /* search anchor string in BIOS memory */
+ size_t offset; /* offset from anchor (may be negative) */
+ size_t totlen; /* total length of BIOS string to copy */
+};
+struct bios_oem_range {
+ u_int from; /* shouldn't be below 0xe0000 */
+ u_int to; /* shouldn't be above 0xfffff */
+};
+struct bios_oem {
+ struct bios_oem_range range;
+ struct bios_oem_signature signature[];
+};
+.Ed
+.Sh DESCRIPTION
+These functions provide a general-purpose interface for dealing with
+the BIOS functions and data encountered on x86 PC-architecture systems.
+.Bl -tag -width 20n
+.It Fn bios_sigsearch
+Searches the BIOS address space for a service signature, usually an
+uppercase ASCII sequence surrounded by underscores.
+The search begins at
+.Fa start ,
+or at the beginning of the BIOS if
+.Fa start
+is zero.
+.Fa siglen
+bytes of the BIOS image and
+.Fa sig
+are compared at
+.Fa sigofs
+bytes offset from the current location.
+If no match is found, the
+current location is incremented by
+.Fa paralen
+bytes and the search repeated.
+If the signature is found, its effective
+physical address is returned.
+If no signature is found, zero is returned.
+.It Fn bios_oem_strings
+Searches a given BIOS memory range for one or more strings,
+and composes a printable concatenation of those found.
+The routine expects a structure describing the BIOS address
+.Fa range
+(within
+.Li 0xe0000
+-
+.Li 0xfffff ) ,
+and a {
+.Dv NULL , Li 0 , 0
+} -terminated array of
+.Vt bios_oem_signature
+structures which define the
+.Va anchor
+string, an
+.Va offset
+from the beginning of the match (which may be negative), and
+.Va totlen
+number of bytes to be collected from BIOS memory starting at that offset.
+Unmatched anchors are ignored, whereas matches are copied from BIOS memory
+starting at their corresponding
+.Vt offset
+with unprintable characters being replaced with space, and consecutive spaces
+being suppressed.
+This composed string is stored in
+.Fa buffer
+up to the given
+.Fa maxlen
+bytes (including trailing
+.Ql \e0 ,
+and any trailing space surpressed).
+If an error is encountered, i.e.\& trying to read out of said BIOS range,
+other invalid input, or
+.Fa buffer
+overflow, a negative integer is returned, otherwise the
+length of the composed string is returned.
+In particular, a return
+value of 0 means that none of the given anchor strings were found in
+the specified BIOS memory range.
+.It Fn BIOS_VADDRTOPADDR
+Returns the effective physical address which corresponds to the kernel
+virtual address
+.Fa addr .
+.It Fn BIOS_PADDRTOVADDR
+Returns the kernel virtual address which corresponds to the effective
+physical address
+.Fa addr .
+.It SMBIOStable
+If not NULL, points to a
+.Ft struct SMBIOS_table
+structure containing information read from the System Management BIOS table
+during system startup.
+.It DMItable
+If not NULL, points to a
+.Ft struct DMI_table
+structure containing information read from the Desktop Management Interface
+parameter table during system startup.
+.El
+.Sh BIOS32
+At system startup, the BIOS is scanned for the BIOS32 Service Directory
+(part of the PCI specification), and the existence of the directory is
+recorded.
+This can then be used to locate other services.
+.Bl -tag -width 20n
+.It Fn bios32_SDlookup
+Attempts to locate the BIOS32 service matching the 4-byte identifier
+passed in the
+.Fa ident
+field of the
+.Fa ent
+argument.
+.It Fn bios32
+Calls a bios32 function.
+This presumes that the function is capable of
+working within the kernel segment (normally the case).
+The virtual address
+of the entrypoint is supplied in
+.Fa entry
+and the register arguments to the function are supplied in
+.Fa args .
+.It PCIbios
+If not NULL, points to a
+.Ft struct bios32_SDentry
+structure describing the PCI BIOS entrypoint which was found during system
+startup.
+.El
diff --git a/share/man/man9/boot.9 b/share/man/man9/boot.9
new file mode 100644
index 0000000..cbd0099
--- /dev/null
+++ b/share/man/man9/boot.9
@@ -0,0 +1,100 @@
+.\" $NetBSD: boot.9,v 1.2 1996/09/24 07:01:26 ghudson Exp $
+.\"
+.\" Copyright (c) 1997
+.\" Mike Pritchard. All rights reserved.
+.\"
+.\" Copyright (c) 1994 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 by Christopher G. Demetriou
+.\" for the NetBSD Project.
+.\" 3. 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$
+.\"
+.Dd February 14, 1997
+.Dt BOOT 9
+.Os
+.Sh NAME
+.Nm boot
+.Nd halt or reboot the system
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.In sys/reboot.h
+.Ft void
+.Fn boot "int howto"
+.Sh DESCRIPTION
+The
+.Fn boot
+function handles final system shutdown, and either halts or reboots
+the system.
+The exact action to be taken is determined by the flags passed in
+.Fa howto
+and by whether or not the system has finished autoconfiguration.
+.Pp
+If the system has finished autoconfiguration,
+.Fn boot
+does the following:
+.Bl -enum -offset indent
+.It
+If this is the first invocation of
+.Fn boot
+and the
+.Dv RB_NOSYNC
+flag is not set in
+.Fa howto ,
+syncs and unmounts the system disks by calling
+.Xr vfs_unmountall 9 .
+.It
+Disables interrupts.
+.It
+If rebooting after a crash (i.e., if
+.Dv RB_DUMP
+is set in
+.Fa howto ,
+but
+.Dv RB_HALT
+is not), saves a system crash dump.
+.It
+Runs any shutdown hooks previously registered.
+.It
+Prints a message indicating that the system is about to be halted
+or rebooted.
+.It
+If
+.Dv RB_HALT
+is set in
+.Fa howto ,
+halts the system.
+Otherwise, reboots the system.
+.El
+.Pp
+If the system has not finished autoconfiguration,
+.Fn boot
+runs any shutdown hooks previously registered,
+prints a message, and halts the system.
+.Sh SEE ALSO
+.Xr vfs_unmountall 9
diff --git a/share/man/man9/bpf.9 b/share/man/man9/bpf.9
new file mode 100644
index 0000000..5a3ac07
--- /dev/null
+++ b/share/man/man9/bpf.9
@@ -0,0 +1,279 @@
+.\" Copyright (c) 2004 FreeBSD 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 [your name] 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$
+.\"
+.Dd December 13, 2006
+.Dt BPF 9
+.Os
+.\"
+.Sh NAME
+.Nm bpf
+.Nd "Berkeley Packet Filter"
+.\"
+.Sh SYNOPSIS
+.In net/bpf.h
+.\"
+.Ft void
+.Fn bpfattach "struct ifnet *ifp" "u_int dlt" "u_int hdrlen"
+.Ft void
+.Fo bpfattach2
+.Fa "struct ifnet *ifp" "u_int dlt" "u_int hdrlen" "struct bpf_if **driverp"
+.Fc
+.Ft void
+.Fn bpfdetach "struct ifnet *ifp"
+.Ft void
+.Fn bpf_tap "struct ifnet *ifp" "u_char *pkt" "u_int *pktlen"
+.Ft void
+.Fn bpf_mtap "struct ifnet *ifp" "struct mbuf *m"
+.Ft void
+.Fn bpf_mtap2 "struct bpf_if *bp" "void *data" "u_int dlen" "struct mbuf *m"
+.Ft u_int
+.Fo bpf_filter
+.Fa "const struct bpf_insn *pc " "u_char *pkt" "u_int wirelen" "u_int buflen"
+.Fc
+.Ft int
+.Fn bpf_validate "const struct bpf_insn *fcode" "int flen"
+.\"
+.Sh DESCRIPTION
+The Berkeley Packet Filter provides a raw interface,
+that is protocol independent,
+to data link layers.
+It allows all packets on the network,
+even those destined for other hosts,
+to be passed from a network interface to user programs.
+Each program may specify a filter,
+in the form of a
+.Nm
+filter machine program.
+The
+.Xr bpf 4
+manual page
+describes the interface used by user programs.
+This manual page describes the functions used by interfaces to pass packets to
+.Nm
+and the functions for testing and running
+.Nm
+filter machine programs.
+.Pp
+The
+.Fn bpfattach
+function
+attaches a network interface to
+.Nm .
+The
+.Fa ifp
+argument
+is a pointer to the structure that defines the interface to be
+attached to an interface.
+The
+.Fa dlt
+argument
+is the data link-layer type:
+.Dv DLT_NULL
+(no link-layer encapsulation),
+.Dv DLT_EN10MB
+(Ethernet),
+.Dv DLT_IEEE802_11
+(802.11 wireless networks),
+etc.
+The rest of the link layer types can be found in
+.In net/bpf.h .
+The
+.Fa hdrlen
+argument
+is the fixed size of the link header;
+variable length headers are not yet supported.
+The
+.Nm
+system will hold a pointer to
+.Fa ifp->if_bpf .
+This variable will set to a
+.Pf non- Dv NULL
+value when
+.Nm
+requires packets from this interface to be tapped using the functions below.
+.Pp
+The
+.Fn bpfattach2
+function
+allows multiple
+.Nm
+instances to be attached to a single interface,
+by registering an explicit
+.Fa if_bpf
+rather than using
+.Fa ifp->if_bpf .
+It is then possible to run
+.Xr tcpdump 1
+on the interface for any data link-layer types attached.
+.Pp
+The
+.Fn bpfdetach
+function detaches a
+.Nm
+instance from an interface,
+specified by
+.Fa ifp .
+The
+.Fn bpfdetach
+function
+should be called once for each
+.Nm
+instance attached.
+.Pp
+The
+.Fn bpf_tap
+function
+is used by an interface to pass the packet to
+.Nm .
+The packet data (including link-header),
+pointed to by
+.Fa pkt ,
+is of length
+.Fa pktlen ,
+which must be a contiguous buffer.
+The
+.Fa ifp
+argument
+is a pointer to the structure that defines the interface to be tapped.
+The packet is parsed by each processes filter,
+and if accepted,
+it is buffered for the process to read.
+.Pp
+The
+.Fn bpf_mtap
+function is like
+.Fn bpf_tap
+except that it is used to tap packets that are in an
+.Vt mbuf
+chain,
+.Fa m .
+The
+.Fa ifp
+argument
+is a pointer to the structure that defines the interface to be tapped.
+Like
+.Fn bpf_tap ,
+.Fn bpf_mtap
+requires a link-header for whatever data link layer type is specified.
+Note that
+.Nm
+only reads from the
+.Vt mbuf
+chain,
+it does not free it or keep a pointer to it.
+This means that an
+.Vt mbuf
+containing the link-header
+can be prepended to the chain if necessary.
+A cleaner interface to achieve this is provided by
+.Fn bpf_mtap2 .
+.Pp
+The
+.Fn bpf_mtap2
+function
+allows the user to pass a link-header
+.Fa data ,
+of length
+.Fa dlen ,
+independent of the
+.Vt mbuf
+.Fa m ,
+containing the packet.
+This simplifies the passing of some link-headers.
+.Pp
+The
+.Fn bpf_filter
+function
+executes the filter program starting at
+.Fa pc
+on the packet
+.Fa pkt .
+The
+.Fa wirelen
+argument
+is the length of the original packet and
+.Fa buflen
+is the amount of data present.
+The
+.Fa buflen
+value of 0 is special; it indicates that the
+.Fa pkt
+is actually a pointer to an mbuf chain
+.Pq Vt "struct mbuf *" .
+.Pp
+The
+.Fn bpf_validate
+function
+checks that the filter code
+.Fa fcode ,
+of length
+.Fa flen ,
+is valid.
+.\"
+.Sh RETURN VALUES
+The
+.Fn bpf_filter
+function returns \-1
+(cast to an unsigned integer)
+if there is no filter.
+Otherwise, it returns the result of the filter program.
+.Pp
+The
+.Fn bpf_validate
+function
+returns 0 when the program is not a valid filter program.
+.\"
+.Sh SEE ALSO
+.Xr tcpdump 1 ,
+.Xr bpf 4
+.\"
+.Sh HISTORY
+The Enet packet filter was created in 1980 by Mike Accetta and
+Rick Rashid at Carnegie-Mellon University.
+Jeffrey Mogul,
+at Stanford,
+ported the code to
+.Bx
+and continued its development from 1983 on.
+Since then,
+it has evolved into the Ultrix Packet Filter at
+.Tn DEC ,
+a
+.Tn STREAMS
+.Tn NIT
+module under
+.Tn SunOS
+4.1, and
+.Tn BPF .
+.\"
+.Sh AUTHORS
+.An -nosplit
+.An Steven McCanne ,
+of Lawrence Berkeley Laboratory, implemented BPF in Summer 1990.
+Much of the design is due to
+.An Van Jacobson .
+This manpage was written by
+.An Orla McGann .
diff --git a/share/man/man9/buf.9 b/share/man/man9/buf.9
new file mode 100644
index 0000000..cba3499
--- /dev/null
+++ b/share/man/man9/buf.9
@@ -0,0 +1,150 @@
+.\" Copyright (c) 1998
+.\" 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 22, 1998
+.Dt BUF 9
+.Os
+.Sh NAME
+.Nm buf
+.Nd "kernel buffer I/O scheme used in FreeBSD VM system"
+.Sh DESCRIPTION
+The kernel implements a KVM abstraction of the buffer cache which allows it
+to map potentially disparate vm_page's into contiguous KVM for use by
+(mainly file system) devices and device I/O.
+This abstraction supports
+block sizes from DEV_BSIZE (usually 512) to upwards of several pages or more.
+It also supports a relatively primitive byte-granular valid range and dirty
+range currently hardcoded for use by NFS.
+The code implementing the
+VM Buffer abstraction is mostly concentrated in
+.Pa /usr/src/sys/kern/vfs_bio.c .
+.Pp
+One of the most important things to remember when dealing with buffer pointers
+(struct buf) is that the underlying pages are mapped directly from the buffer
+cache.
+No data copying occurs in the scheme proper, though some file systems
+such as UFS do have to copy a little when dealing with file fragments.
+The second most important thing to remember is that due to the underlying page
+mapping, the b_data base pointer in a buf is always *page* aligned, not
+*block* aligned.
+When you have a VM buffer representing some b_offset and
+b_size, the actual start of the buffer is (b_data + (b_offset & PAGE_MASK))
+and not just b_data.
+Finally, the VM system's core buffer cache supports
+valid and dirty bits (m->valid, m->dirty) for pages in DEV_BSIZE chunks.
+Thus
+a platform with a hardware page size of 4096 bytes has 8 valid and 8 dirty
+bits.
+These bits are generally set and cleared in groups based on the device
+block size of the device backing the page.
+Complete page's worth are often
+referred to using the VM_PAGE_BITS_ALL bitmask (i.e., 0xFF if the hardware page
+size is 4096).
+.Pp
+VM buffers also keep track of a byte-granular dirty range and valid range.
+This feature is normally only used by the NFS subsystem.
+I am not sure why it
+is used at all, actually, since we have DEV_BSIZE valid/dirty granularity
+within the VM buffer.
+If a buffer dirty operation creates a 'hole',
+the dirty range will extend to cover the hole.
+If a buffer validation
+operation creates a 'hole' the byte-granular valid range is left alone and
+will not take into account the new extension.
+Thus the whole byte-granular
+abstraction is considered a bad hack and it would be nice if we could get rid
+of it completely.
+.Pp
+A VM buffer is capable of mapping the underlying VM cache pages into KVM in
+order to allow the kernel to directly manipulate the data associated with
+the (vnode,b_offset,b_size).
+The kernel typically unmaps VM buffers the moment
+they are no longer needed but often keeps the 'struct buf' structure
+instantiated and even bp->b_pages array instantiated despite having unmapped
+them from KVM.
+If a page making up a VM buffer is about to undergo I/O, the
+system typically unmaps it from KVM and replaces the page in the b_pages[]
+array with a place-marker called bogus_page.
+The place-marker forces any kernel
+subsystems referencing the associated struct buf to re-lookup the associated
+page.
+I believe the place-marker hack is used to allow sophisticated devices
+such as file system devices to remap underlying pages in order to deal with,
+for example, re-mapping a file fragment into a file block.
+.Pp
+VM buffers are used to track I/O operations within the kernel.
+Unfortunately,
+the I/O implementation is also somewhat of a hack because the kernel wants
+to clear the dirty bit on the underlying pages the moment it queues the I/O
+to the VFS device, not when the physical I/O is actually initiated.
+This
+can create confusion within file system devices that use delayed-writes because
+you wind up with pages marked clean that are actually still dirty.
+If not
+treated carefully, these pages could be thrown away!
+Indeed, a number of
+serious bugs related to this hack were not fixed until the 2.2.8/3.0 release.
+The kernel uses an instantiated VM buffer (i.e., struct buf) to place-mark pages
+in this special state.
+The buffer is typically flagged B_DELWRI.
+When a
+device no longer needs a buffer it typically flags it as B_RELBUF.
+Due to
+the underlying pages being marked clean, the B_DELWRI|B_RELBUF combination must
+be interpreted to mean that the buffer is still actually dirty and must be
+written to its backing store before it can actually be released.
+In the case
+where B_DELWRI is not set, the underlying dirty pages are still properly
+marked as dirty and the buffer can be completely freed without losing that
+clean/dirty state information.
+(XXX do we have to check other flags in
+regards to this situation ???)
+.Pp
+The kernel reserves a portion of its KVM space to hold VM Buffer's data
+maps.
+Even though this is virtual space (since the buffers are mapped
+from the buffer cache), we cannot make it arbitrarily large because
+instantiated VM Buffers (struct buf's) prevent their underlying pages in the
+buffer cache from being freed.
+This can complicate the life of the paging
+system.
+.\" .Sh SEE ALSO
+.\" .Xr <fillmein> 9
+.Sh HISTORY
+The
+.Nm
+manual page was originally written by
+.An Matthew Dillon
+and first appeared in
+.Fx 3.1 ,
+December 1998.
diff --git a/share/man/man9/bus_activate_resource.9 b/share/man/man9/bus_activate_resource.9
new file mode 100644
index 0000000..eb5b3e8
--- /dev/null
+++ b/share/man/man9/bus_activate_resource.9
@@ -0,0 +1,93 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd March 28, 2003
+.Dt BUS_ACTIVATE_RESOURCE 9
+.Os
+.Sh NAME
+.Nm bus_activate_resource , bus_deactivate_resource
+.Nd activate or deactivate a resource
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Pp
+.In machine/bus.h
+.In sys/rman.h
+.In machine/resource.h
+.Ft int
+.Fo bus_activate_resource
+.Fa "device_t dev" "int type" "int rid" "struct resource *r"
+.Fc
+.Ft int
+.Fo bus_deactivate_resource
+.Fa "device_t dev" "int type" "int rid" "struct resource *r"
+.Fc
+.Sh DESCRIPTION
+These functions activate or deactivate a previously allocated resource.
+In general, resources must be activated before they can be accessed by
+the driver so that the bus driver can map the resource into the
+devices space.
+.Pp
+The arguments are as follows:
+.Bl -tag -width indent
+.It Fa dev
+The device that requests ownership of the resource.
+Before allocation, the resource is owned by the parent bus.
+.It Fa type
+The type of resource you want to allocate.
+It is one of:
+.Pp
+.Bl -tag -width ".Dv SYS_RES_MEMORY" -compact
+.It Dv SYS_RES_IRQ
+for IRQs
+.It Dv SYS_RES_DRQ
+for ISA DMA lines
+.It Dv SYS_RES_IOPORT
+for I/O ports
+.It Dv SYS_RES_MEMORY
+for I/O memory
+.El
+.It Fa rid
+A pointer to a bus specific handle that identifies the resource being allocated.
+.It Fa r
+A pointer to the
+.Vt "struct resource"
+returned by
+.Xr bus_alloc_resource 9 .
+.El
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr bus_alloc_resource 9 ,
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh Aq imp@FreeBSD.org .
diff --git a/share/man/man9/bus_alloc_resource.9 b/share/man/man9/bus_alloc_resource.9
new file mode 100644
index 0000000..dd19627
--- /dev/null
+++ b/share/man/man9/bus_alloc_resource.9
@@ -0,0 +1,182 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 18, 2000
+.Dt BUS_ALLOC_RESOURCE 9
+.Os
+.Sh NAME
+.Nm bus_alloc_resource ,
+.Nm bus_alloc_resource_any
+.Nd allocate resources from a parent bus
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Pp
+.In machine/bus.h
+.In sys/rman.h
+.In machine/resource.h
+.Ft struct resource *
+.Fn bus_alloc_resource "device_t dev" "int type" "int *rid" "u_long start" "u_long end" "u_long count" "u_int flags"
+.Ft struct resource *
+.Fn bus_alloc_resource_any "device_t dev" "int type" "int *rid" "u_int flags"
+.Sh DESCRIPTION
+This is an easy interface to the resource-management functions.
+It hides the indirection through the parent's method table.
+This function generally should be called in attach, but (except in some
+rare cases) never earlier.
+.Pp
+The
+.Fn bus_alloc_resource_any
+function is a convenience wrapper for
+.Fn bus_alloc_resource .
+It sets the values for
+.Fa start ,
+.Fa end ,
+and
+.Fa count
+to the default resource (see description of
+.Fa start
+below).
+.Pp
+The arguments are as follows:
+.Bl -item
+.It
+.Fa dev
+is the device that requests ownership of the resource.
+Before allocation, the resource is owned by the parent bus.
+.It
+.Fa type
+is the type of resource you want to allocate.
+It is one of:
+.Bl -tag -width SYS_RES_MEMORY
+.It Dv SYS_RES_IRQ
+for IRQs
+.It Dv SYS_RES_DRQ
+for ISA DMA lines
+.It Dv SYS_RES_IOPORT
+for I/O ports
+.It Dv SYS_RES_MEMORY
+for I/O memory
+.El
+.It
+.Fa rid
+points to a bus specific handle that identifies the resource being allocated.
+For ISA this is an index into an array of resources that have been setup
+for this device by either the PnP mechanism, or via the hints mechanism.
+For PCCARD, this is an index into the array of resources described by the PC Card's
+CIS entry.
+For PCI, the offset into pci config space which has the BAR to use to access
+the resource.
+The bus methods are free to change the RIDs that they are given as a parameter.
+You must not depend on the value you gave it earlier.
+.It
+.Fa start
+and
+.Fa end
+are the start/end addresses of the resource.
+If you specify values of 0ul for
+.Fa start
+and ~0ul for
+.Fa end
+and 1 for
+.Fa count ,
+the default values for the bus are calculated.
+.It
+.Fa count
+is the size of the resource.
+For example, the size of an I/O port is usually 1 byte (but some devices
+override this).
+If you specified the default values for
+.Fa start
+and
+.Fa end ,
+then the default value of the bus is used if
+.Fa count
+is smaller than the default value and
+.Fa count
+is used, if it is bigger than the default value.
+.It
+.Fa flags
+sets the flags for the resource.
+You can set one or more of these flags:
+.Bl -tag -width RF_SHAREABLE
+.It Dv RF_ALLOCATED
+resource has been reserved.
+The resource still needs to be activated with
+.Xr bus_activate_resource 9 .
+.It Dv RF_ACTIVE
+activate resource atomically.
+.It Dv RF_SHAREABLE
+resource permits contemporaneous sharing.
+It should always be set unless you know that the resource cannot be shared.
+It is the bus driver's task to filter out the flag if the bus does not
+support sharing.
+For example,
+.Xr pccard 4
+cannot share IRQs while
+.Xr cardbus 4
+can.
+.It Dv RF_TIMESHARE
+resource permits time-division sharing.
+.El
+.El
+.Sh RETURN VALUES
+A pointer to
+.Va struct resource
+is returned on success, a null pointer otherwise.
+.Sh EXAMPLES
+This is some example code that allocates a 32 byte I/O port range and an IRQ.
+The values of
+.Va portid
+and
+.Va irqid
+should be saved in the softc of the device after these calls.
+.Bd -literal
+ struct resource *portres, *irqres;
+ int portid, irqid;
+
+ portid = 0;
+ irqid = 0;
+ portres = bus_alloc_resource(dev, SYS_RES_IOPORT, &portid,
+ 0ul, ~0ul, 32, RF_ACTIVE);
+ irqres = bus_alloc_resource_any(dev, SYS_RES_IRQ, &irqid,
+ RF_ACTIVE | RF_SHAREABLE);
+.Ed
+.Sh SEE ALSO
+.Xr bus_activate_resource 9 ,
+.Xr bus_release_resource 9 ,
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Alexander Langer Aq alex@big.endian.de
+with parts by
+.An Warner Losh Aq imp@FreeBSD.org .
diff --git a/share/man/man9/bus_child_present.9 b/share/man/man9/bus_child_present.9
new file mode 100644
index 0000000..12577ad
--- /dev/null
+++ b/share/man/man9/bus_child_present.9
@@ -0,0 +1,87 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd March 27, 2003
+.Dt BUS_CHILD_PRESENT 9
+.Os
+.Sh NAME
+.Nm bus_child_present
+.Nd "ask the bus driver to see if this device is still really present"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Pp
+.In machine/bus.h
+.In sys/rman.h
+.In machine/resource.h
+.Ft int
+.Fn bus_child_present "device_t dev"
+.Sh DESCRIPTION
+The
+.Fn bus_child_present
+function requests that the parent device driver of
+.Fa dev
+check to see if the
+hardware represented by
+.Fa dev
+is still physically accessible at this time.
+While the notion of accessible varies from bus to bus, generally
+hardware that is not accessible cannot be accessed via the
+.Fn bus_space*
+methods that would otherwise be used to access the device.
+.Pp
+This does not ask the question
+.Dq does this device have children?
+which can better be answered by
+.Xr device_get_children 9 .
+.Sh RETURN VALUES
+A zero return value indicates that the device is not present in the
+system.
+A non-zero return value indicates that the device is present in the
+system, or that the state of the device cannot be determined.
+.Sh EXAMPLES
+This is some example code.
+It only calls stop when the
+.Xr dc 4
+device is actually present.
+.Bd -literal -offset indent
+device_t dev;
+dc_softc *sc;
+
+sc = device_get_softc(dev);
+if (bus_child_present(dev))
+ dc_stop(sc);
+.Ed
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh Aq imp@FreeBSD.org .
diff --git a/share/man/man9/bus_dma.9 b/share/man/man9/bus_dma.9
new file mode 100644
index 0000000..5850db6
--- /dev/null
+++ b/share/man/man9/bus_dma.9
@@ -0,0 +1,993 @@
+.\" Copyright (c) 2002, 2003 Hiten M. Pandya.
+.\" 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,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. 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 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, CONTRIBUTORS OR THE
+.\" VOICES IN HITEN PANDYA'S HEAD 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.
+.\"
+.\" Copyright (c) 1996, 1997, 1998, 2001 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 acknowledgment:
+.\" 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$
+.\" $NetBSD: bus_dma.9,v 1.25 2002/10/14 13:43:16 wiz Exp $
+.\"
+.Dd November 16, 2008
+.Dt BUS_DMA 9
+.Os
+.Sh NAME
+.Nm bus_dma ,
+.Nm bus_dma_tag_create ,
+.Nm bus_dma_tag_destroy ,
+.Nm bus_dmamap_create ,
+.Nm bus_dmamap_destroy ,
+.Nm bus_dmamap_load ,
+.Nm bus_dmamap_load_mbuf ,
+.Nm bus_dmamap_load_mbuf_sg ,
+.Nm bus_dmamap_load_uio ,
+.Nm bus_dmamap_unload ,
+.Nm bus_dmamap_sync ,
+.Nm bus_dmamem_alloc ,
+.Nm bus_dmamem_free
+.Nd Bus and Machine Independent DMA Mapping Interface
+.Sh SYNOPSIS
+.In machine/bus.h
+.Ft int
+.Fn bus_dma_tag_create "bus_dma_tag_t parent" "bus_size_t alignment" \
+"bus_size_t boundary" "bus_addr_t lowaddr" "bus_addr_t highaddr" \
+"bus_dma_filter_t *filtfunc" "void *filtfuncarg" "bus_size_t maxsize" \
+"int nsegments" "bus_size_t maxsegsz" "int flags" "bus_dma_lock_t *lockfunc" \
+"void *lockfuncarg" "bus_dma_tag_t *dmat"
+.Ft int
+.Fn bus_dma_tag_destroy "bus_dma_tag_t dmat"
+.Ft int
+.Fn bus_dmamap_create "bus_dma_tag_t dmat" "int flags" "bus_dmamap_t *mapp"
+.Ft int
+.Fn bus_dmamap_destroy "bus_dma_tag_t dmat" "bus_dmamap_t map"
+.Ft int
+.Fn bus_dmamap_load "bus_dma_tag_t dmat" "bus_dmamap_t map" "void *buf" \
+"bus_size_t buflen" "bus_dmamap_callback_t *callback" "void *callback_arg" \
+"int flags"
+.Ft int
+.Fn bus_dmamap_load_mbuf "bus_dma_tag_t dmat" "bus_dmamap_t map" \
+"struct mbuf *mbuf" "bus_dmamap_callback2_t *callback" "void *callback_arg" \
+"int flags"
+.Ft int
+.Fn bus_dmamap_load_mbuf_sg "bus_dma_tag_t dmat" "bus_dmamap_t map" \
+"struct mbuf *mbuf" "bus_dma_segment_t *segs" "int *nsegs" "int flags"
+.Ft int
+.Fn bus_dmamap_load_uio "bus_dma_tag_t dmat" "bus_dmamap_t map" \
+"struct uio *uio" "bus_dmamap_callback2_t *callback" "void *callback_arg" \
+"int flags"
+.Ft void
+.Fn bus_dmamap_unload "bus_dma_tag_t dmat" "bus_dmamap_t map"
+.Ft void
+.Fn bus_dmamap_sync "bus_dma_tag_t dmat" "bus_dmamap_t map" \
+"op"
+.Ft int
+.Fn bus_dmamem_alloc "bus_dma_tag_t dmat" "void **vaddr" \
+"int flags" "bus_dmamap_t *mapp"
+.Ft void
+.Fn bus_dmamem_free "bus_dma_tag_t dmat" "void *vaddr" \
+"bus_dmamap_t map"
+.Sh DESCRIPTION
+Direct Memory Access (DMA) is a method of transferring data
+without involving the CPU, thus providing higher performance.
+A DMA transaction can be achieved between device to memory,
+device to device, or memory to memory.
+.Pp
+The
+.Nm
+API is a bus, device, and machine-independent (MI) interface to
+DMA mechanisms.
+It provides the client with flexibility and simplicity by
+abstracting machine dependent issues like setting up
+DMA mappings, handling cache issues, bus specific features
+and limitations.
+.Sh STRUCTURES AND TYPES
+.Bl -tag -width indent
+.It Vt bus_dma_tag_t
+A machine-dependent (MD) opaque type that describes the
+characteristics of DMA transactions.
+DMA tags are organized into a hierarchy, with each child
+tag inheriting the restrictions of its parent.
+This allows all devices along the path of DMA transactions
+to contribute to the constraints of those transactions.
+.It Vt bus_dma_filter_t
+Client specified address filter having the format:
+.Bl -tag -width indent
+.It Ft int
+.Fn "client_filter" "void *filtarg" "bus_addr_t testaddr"
+.El
+.Pp
+Address filters can be specified during tag creation to allow
+for devices whose DMA address restrictions cannot be specified
+by a single window.
+The
+.Fa filtarg
+argument is specified by the client during tag creation to be passed to all
+invocations of the callback.
+The
+.Fa testaddr
+argument contains a potential starting address of a DMA mapping.
+The filter function operates on the set of addresses from
+.Fa testaddr
+to
+.Ql trunc_page(testaddr) + PAGE_SIZE - 1 ,
+inclusive.
+The filter function should return zero if any mapping in this range
+can be accommodated by the device and non-zero otherwise.
+.It Vt bus_dma_segment_t
+A machine-dependent type that describes individual
+DMA segments.
+It contains the following fields:
+.Bd -literal
+ bus_addr_t ds_addr;
+ bus_size_t ds_len;
+.Ed
+.Pp
+The
+.Fa ds_addr
+field contains the device visible address of the DMA segment, and
+.Fa ds_len
+contains the length of the DMA segment.
+Although the DMA segments returned by a mapping call will adhere to
+all restrictions necessary for a successful DMA operation, some conversion
+(e.g.\& a conversion from host byte order to the device's byte order) is
+almost always required when presenting segment information to the device.
+.It Vt bus_dmamap_t
+A machine-dependent opaque type describing an individual mapping.
+One map is used for each memory allocation that will be loaded.
+Maps can be reused once they have been unloaded.
+Multiple maps can be associated with one DMA tag.
+While the value of the map may evaluate to
+.Dv NULL
+on some platforms under certain conditions,
+it should never be assumed that it will be
+.Dv NULL
+in all cases.
+.It Vt bus_dmamap_callback_t
+Client specified callback for receiving mapping information resulting from
+the load of a
+.Vt bus_dmamap_t
+via
+.Fn bus_dmamap_load .
+Callbacks are of the format:
+.Bl -tag -width indent
+.It Ft void
+.Fn "client_callback" "void *callback_arg" "bus_dma_segment_t *segs" \
+"int nseg" "int error"
+.El
+.Pp
+The
+.Fa callback_arg
+is the callback argument passed to dmamap load functions.
+The
+.Fa segs
+and
+.Fa nseg
+arguments describe an array of
+.Vt bus_dma_segment_t
+structures that represent the mapping.
+This array is only valid within the scope of the callback function.
+The success or failure of the mapping is indicated by the
+.Fa error
+argument.
+More information on the use of callbacks can be found in the
+description of the individual dmamap load functions.
+.It Vt bus_dmamap_callback2_t
+Client specified callback for receiving mapping information resulting from
+the load of a
+.Vt bus_dmamap_t
+via
+.Fn bus_dmamap_load_uio
+or
+.Fn bus_dmamap_load_mbuf .
+.Pp
+Callback2s are of the format:
+.Bl -tag -width indent
+.It Ft void
+.Fn "client_callback2" "void *callback_arg" "bus_dma_segment_t *segs" \
+"int nseg" "bus_size_t mapsize" "int error"
+.El
+.Pp
+Callback2's behavior is the same as
+.Vt bus_dmamap_callback_t
+with the addition that the length of the data mapped is provided via
+.Fa mapsize .
+.It Vt bus_dmasync_op_t
+Memory synchronization operation specifier.
+Bus DMA requires explicit synchronization of memory with its device
+visible mapping in order to guarantee memory coherency.
+The
+.Vt bus_dmasync_op_t
+allows the type of DMA operation that will be or has been performed
+to be communicated to the system so that the correct coherency measures
+are taken.
+The operations are represented as bitfield flags that can be combined together,
+though it only makes sense to combine PRE flags or POST flags, not both.
+See the
+.Fn bus_dmamap_sync
+description below for more details on how to use these operations.
+.Pp
+All operations specified below are performed from the host memory point of view,
+where a read implies data coming from the device to the host memory, and a write
+implies data going from the host memory to the device.
+Alternatively, the operations can be thought of in terms of driver operations,
+where reading a network packet or storage sector corresponds to a read operation
+in
+.Nm .
+.Bl -tag -width ".Dv BUS_DMASYNC_POSTWRITE"
+.It Dv BUS_DMASYNC_PREREAD
+Perform any synchronization required prior to an update of host memory by the
+device.
+.It Dv BUS_DMASYNC_PREWRITE
+Perform any synchronization required after an update of host memory by the CPU
+and prior to device access to host memory.
+.It Dv BUS_DMASYNC_POSTREAD
+Perform any synchronization required after an update of host memory by the
+device and prior to CPU access to host memory.
+.It Dv BUS_DMASYNC_POSTWRITE
+Perform any synchronization required after device access to host memory.
+.El
+.It Vt bus_dma_lock_t
+Client specified lock/mutex manipulation method.
+This will be called from
+within busdma whenever a client lock needs to be manipulated.
+In its current form, the function will be called immediately before
+the callback for a DMA load operation that has been deferred with
+.Dv BUS_DMA_LOCK
+and immediately after with
+.Dv BUS_DMA_UNLOCK .
+If the load operation does not need to be deferred, then it
+will not be called since the function loading the map should
+be holding the appropriate locks.
+This method is of the format:
+.Bl -tag -width indent
+.It Ft void
+.Fn "lockfunc" "void *lockfunc_arg" "bus_dma_lock_op_t op"
+.El
+.Pp
+The
+.Fa lockfuncarg
+argument is specified by the client during tag creation to be passed to all
+invocations of the callback.
+The
+.Fa op
+argument specifies the lock operation to perform.
+.Pp
+Two
+.Vt lockfunc
+implementations are provided for convenience.
+.Fn busdma_lock_mutex
+performs standard mutex operations on the sleep mutex provided via
+.Fa lockfuncarg .
+.Fn dflt_lock
+will generate a system panic if it is called.
+It is substituted into the tag when
+.Fa lockfunc
+is passed as
+.Dv NULL
+to
+.Fn bus_dma_tag_create
+and is useful for tags that should not be used with deferred load operations.
+.It Vt bus_dma_lock_op_t
+Operations to be performed by the client-specified
+.Fn lockfunc .
+.Bl -tag -width ".Dv BUS_DMA_UNLOCK"
+.It Dv BUS_DMA_LOCK
+Acquires and/or locks the client locking primitive.
+.It Dv BUS_DMA_UNLOCK
+Releases and/or unlocks the client locking primitive.
+.El
+.El
+.Sh FUNCTIONS
+.Bl -tag -width indent
+.It Fn bus_dma_tag_create "parent" "alignment" "boundary" "lowaddr" \
+"highaddr" "*filtfunc" "*filtfuncarg" "maxsize" "nsegments" "maxsegsz" \
+"flags" "lockfunc" "lockfuncarg" "*dmat"
+Allocates a device specific DMA tag, and initializes it according to
+the arguments provided:
+.Bl -tag -width ".Fa filtfuncarg"
+.It Fa parent
+Indicates restrictions between the parent bridge, CPU memory, and the
+device.
+Each device must use a master parent tag by calling
+.Fn bus_get_dma_tag .
+.It Fa alignment
+Alignment constraint, in bytes, of any mappings created using this tag.
+The alignment must be a power of 2.
+Hardware that can DMA starting at any address would specify
+.Em 1
+for byte alignment.
+Hardware requiring DMA transfers to start on a multiple of 4K
+would specify
+.Em 4096 .
+.It Fa boundary
+Boundary constraint, in bytes, of the target DMA memory region.
+The boundary indicates the set of addresses, all multiples of the
+boundary argument, that cannot be crossed by a single
+.Vt bus_dma_segment_t .
+The boundary must be a power of 2 and must be no smaller than the
+maximum segment size.
+.Ql 0
+indicates that there are no boundary restrictions.
+.It Fa lowaddr , highaddr
+Bounds of the window of bus address space that
+.Em cannot
+be directly accessed by the device.
+The window contains all addresses greater than
+.Fa lowaddr
+and less than or equal to
+.Fa highaddr .
+For example, a device incapable of DMA above 4GB, would specify a
+.Fa highaddr
+of
+.Dv BUS_SPACE_MAXADDR
+and a
+.Fa lowaddr
+of
+.Dv BUS_SPACE_MAXADDR_32BIT .
+Similarly a device that can only perform DMA to addresses below
+16MB would specify a
+.Fa highaddr
+of
+.Dv BUS_SPACE_MAXADDR
+and a
+.Fa lowaddr
+of
+.Dv BUS_SPACE_MAXADDR_24BIT .
+Some implementations requires that some region of device visible
+address space, overlapping available host memory, be outside the
+window.
+This area of
+.Ql safe memory
+is used to bounce requests that would otherwise conflict with
+the exclusion window.
+.It Fa filtfunc
+Optional filter function (may be
+.Dv NULL )
+to be called for any attempt to
+map memory into the window described by
+.Fa lowaddr
+and
+.Fa highaddr .
+A filter function is only required when the single window described
+by
+.Fa lowaddr
+and
+.Fa highaddr
+cannot adequately describe the constraints of the device.
+The filter function will be called for every machine page
+that overlaps the exclusion window.
+.It Fa filtfuncarg
+Argument passed to all calls to the filter function for this tag.
+May be
+.Dv NULL .
+.It Fa maxsize
+Maximum size, in bytes, of the sum of all segment lengths in a given
+DMA mapping associated with this tag.
+.It Fa nsegments
+Number of discontinuities (scatter/gather segments) allowed
+in a DMA mapped region.
+If there is no restriction,
+.Dv BUS_SPACE_UNRESTRICTED
+may be specified.
+.It Fa maxsegsz
+Maximum size, in bytes, of a segment in any DMA mapped region associated
+with
+.Fa dmat .
+.It Fa flags
+Are as follows:
+.Bl -tag -width ".Dv BUS_DMA_ALLOCNOW"
+.It Dv BUS_DMA_ALLOCNOW
+Pre-allocate enough resources to handle at least one map load operation on
+this tag.
+If sufficient resources are not available,
+.Er ENOMEM
+is returned.
+This should not be used for tags that only describe buffers that will be
+allocated with
+.Fn bus_dmamem_alloc .
+Also, due to resource sharing with other tags, this flag does not guarantee
+that resources will be allocated or reserved exclusively for this tag.
+It should be treated only as a minor optimization.
+.El
+.It Fa lockfunc
+Optional lock manipulation function (may be
+.Dv NULL )
+to be called when busdma
+needs to manipulate a lock on behalf of the client.
+If
+.Dv NULL
+is specified,
+.Fn dflt_lock
+is used.
+.It Fa lockfuncarg
+Optional argument to be passed to the function specified by
+.Fa lockfunc .
+.It Fa dmat
+Pointer to a bus_dma_tag_t where the resulting DMA tag will
+be stored.
+.El
+.Pp
+Returns
+.Er ENOMEM
+if sufficient memory is not available for tag creation
+or allocating mapping resources.
+.It Fn bus_dma_tag_destroy "dmat"
+Deallocate the DMA tag
+.Fa dmat
+that was created by
+.Fn bus_dma_tag_create .
+.Pp
+Returns
+.Er EBUSY
+if any DMA maps remain associated with
+.Fa dmat
+or
+.Ql 0
+on success.
+.It Fn bus_dmamap_create "dmat" "flags" "*mapp"
+Allocates and initializes a DMA map.
+Arguments are as follows:
+.Bl -tag -width ".Fa nsegments"
+.It Fa dmat
+DMA tag.
+.It Fa flags
+Are as follows:
+.Bl -tag -width ".Dv BUS_DMA_COHERENT"
+.It Dv BUS_DMA_COHERENT
+Attempt to map the memory loaded with this map such that cache sync
+operations are as cheap as possible.
+This flag is typically set on maps when the memory loaded with these will
+be accessed by both a CPU and a DMA engine, frequently such as control data
+and as opposed to streamable data such as receive and transmit buffers.
+Use of this flag does not remove the requirement of using
+.Fn bus_dmamap_sync ,
+but it may reduce the cost of performing these operations.
+For
+.Fn bus_dmamap_create ,
+the
+.Dv BUS_DMA_COHERENT
+flag is currently implemented on sparc64.
+.El
+.It Fa mapp
+Pointer to a
+.Vt bus_dmamap_t
+where the resulting DMA map will be stored.
+.El
+.Pp
+Returns
+.Er ENOMEM
+if sufficient memory is not available for creating the
+map or allocating mapping resources.
+.It Fn bus_dmamap_destroy "dmat" "map"
+Frees all resources associated with a given DMA map.
+Arguments are as follows:
+.Bl -tag -width ".Fa dmat"
+.It Fa dmat
+DMA tag used to allocate
+.Fa map .
+.It Fa map
+The DMA map to destroy.
+.El
+.Pp
+Returns
+.Er EBUSY
+if a mapping is still active for
+.Fa map .
+.It Fn bus_dmamap_load "dmat" "map" "buf" "buflen" "*callback" \
+"callback_arg" "flags"
+Creates a mapping in device visible address space of
+.Fa buflen
+bytes of
+.Fa buf ,
+associated with the DMA map
+.Fa map .
+This call will always return immediately and will not block for any reason.
+Arguments are as follows:
+.Bl -tag -width ".Fa buflen"
+.It Fa dmat
+DMA tag used to allocate
+.Fa map .
+.It Fa map
+A DMA map without a currently active mapping.
+.It Fa buf
+A kernel virtual address pointer to a contiguous (in KVA) buffer, to be
+mapped into device visible address space.
+.It Fa buflen
+The size of the buffer.
+.It Fa callback Fa callback_arg
+The callback function, and its argument.
+This function is called once sufficient mapping resources are available for
+the DMA operation.
+If resources are temporarily unavailable, this function will be deferred until
+later, but the load operation will still return immediately to the caller.
+Thus, callers should not assume that the callback will be called before the
+load returns, and code should be structured appropriately to handle this.
+See below for specific flags and error codes that control this behavior.
+.It Fa flags
+Are as follows:
+.Bl -tag -width ".Dv BUS_DMA_NOWAIT"
+.It Dv BUS_DMA_NOWAIT
+The load should not be deferred in case of insufficient mapping resources,
+and instead should return immediately with an appropriate error.
+.It Dv BUS_DMA_NOCACHE
+The allocated memory will not be cached in the processor caches.
+All memory accesses appear on the bus and are executed
+without reordering.
+On the amd64 and i386 architectures this flag results in the
+Strong Uncacheable PAT to be set for the allocated virtual address range.
+The
+.Dv BUS_DMA_NOCACHE
+flag is currently implemented on amd64, i386 and sparc64.
+.El
+.El
+.Pp
+Return values to the caller are as follows:
+.Bl -tag -width ".Er EINPROGRESS"
+.It 0
+The callback has been called and completed.
+The status of the mapping has been delivered to the callback.
+.It Er EINPROGRESS
+The mapping has been deferred for lack of resources.
+The callback will be called as soon as resources are available.
+Callbacks are serviced in FIFO order.
+To ensure that ordering is guaranteed, all subsequent load requests will also
+be deferred until all callbacks have been processed.
+.It Er ENOMEM
+The load request has failed due to insufficient resources, and the caller
+specifically used the
+.Dv BUS_DMA_NOWAIT
+flag.
+.It Er EINVAL
+The load request was invalid.
+The callback has been called and has been provided the same error.
+This error value may indicate that
+.Fa dmat ,
+.Fa map ,
+.Fa buf ,
+or
+.Fa callback
+were invalid, or
+.Fa buflen
+was larger than the
+.Fa maxsize
+argument used to create the dma tag
+.Fa dmat .
+.El
+.Pp
+When the callback is called, it is presented with an error value
+indicating the disposition of the mapping.
+Error may be one of the following:
+.Bl -tag -width ".Er EINPROGRESS"
+.It 0
+The mapping was successful and the
+.Fa dm_segs
+callback argument contains an array of
+.Vt bus_dma_segment_t
+elements describing the mapping.
+This array is only valid during the scope of the callback function.
+.It Er EFBIG
+A mapping could not be achieved within the segment constraints provided
+in the tag even though the requested allocation size was less than maxsize.
+.El
+.It Fn bus_dmamap_load_mbuf "dmat" "map" "mbuf" "callback2" "callback_arg" \
+"flags"
+This is a variation of
+.Fn bus_dmamap_load
+which maps mbuf chains
+for DMA transfers.
+A
+.Vt bus_size_t
+argument is also passed to the callback routine, which
+contains the mbuf chain's packet header length.
+The
+.Dv BUS_DMA_NOWAIT
+flag is implied, thus no callback deferral will happen.
+.Pp
+Mbuf chains are assumed to be in kernel virtual address space.
+.Pp
+Beside the error values listed for
+.Fn bus_dmamap_load ,
+.Er EINVAL
+will be returned if the size of the mbuf chain exceeds the maximum limit of the
+DMA tag.
+.It Fn bus_dmamap_load_mbuf_sg "dmat" "map" "mbuf" "segs" "nsegs" "flags"
+This is just like
+.Fn bus_dmamap_load_mbuf
+except that it returns immediately without calling a callback function.
+It is provided for efficiency.
+The scatter/gather segment array
+.Va segs
+is provided by the caller and filled in directly by the function.
+The
+.Va nsegs
+argument is returned with the number of segments filled in.
+Returns the same errors as
+.Fn bus_dmamap_load_mbuf .
+.It Fn bus_dmamap_load_uio "dmat" "map" "uio" "callback2" "callback_arg" "flags"
+This is a variation of
+.Fn bus_dmamap_load
+which maps buffers pointed to by
+.Fa uio
+for DMA transfers.
+A
+.Vt bus_size_t
+argument is also passed to the callback routine, which contains the size of
+.Fa uio ,
+i.e.
+.Fa uio->uio_resid .
+The
+.Dv BUS_DMA_NOWAIT
+flag is implied, thus no callback deferral will happen.
+Returns the same errors as
+.Fn bus_dmamap_load .
+.Pp
+If
+.Fa uio->uio_segflg
+is
+.Dv UIO_USERSPACE ,
+then it is assumed that the buffer,
+.Fa uio
+is in
+.Fa "uio->uio_td->td_proc" Ns 's
+address space.
+User space memory must be in-core and wired prior to attempting a map
+load operation.
+Pages may be locked using
+.Xr vslock 9 .
+.It Fn bus_dmamap_unload "dmat" "map"
+Unloads a DMA map.
+Arguments are as follows:
+.Bl -tag -width ".Fa dmam"
+.It Fa dmat
+DMA tag used to allocate
+.Fa map .
+.It Fa map
+The DMA map that is to be unloaded.
+.El
+.Pp
+.Fn bus_dmamap_unload
+will not perform any implicit synchronization of DMA buffers.
+This must be done explicitly by a call to
+.Fn bus_dmamap_sync
+prior to unloading the map.
+.It Fn bus_dmamap_sync "dmat" "map" "op"
+Performs synchronization of a device visible mapping with the CPU visible
+memory referenced by that mapping.
+Arguments are as follows:
+.Bl -tag -width ".Fa dmat"
+.It Fa dmat
+DMA tag used to allocate
+.Fa map .
+.It Fa map
+The DMA mapping to be synchronized.
+.It Fa op
+Type of synchronization operation to perform.
+See the definition of
+.Vt bus_dmasync_op_t
+for a description of the acceptable values for
+.Fa op .
+.El
+.Pp
+The
+.Fn bus_dmamap_sync
+function
+is the method used to ensure that CPU's and device's direct
+memory access (DMA) to shared
+memory is coherent.
+For example, the CPU might be used to set up the contents of a buffer
+that is to be made available to a device.
+To ensure that the data are visible via the device's mapping of that
+memory, the buffer must be loaded and a DMA sync operation of
+.Dv BUS_DMASYNC_PREWRITE
+must be performed after the CPU has updated the buffer and before the device
+access is initiated.
+If the CPU modifies this buffer again later, another
+.Dv BUS_DMASYNC_PREWRITE
+sync operation must be performed before an additional device
+access.
+Conversely, suppose a device updates memory that is to be read by a CPU.
+In this case, the buffer must be loaded, and a DMA sync operation of
+.Dv BUS_DMASYNC_PREREAD
+must be performed before the device access is initiated.
+The CPU will only be able to see the results of this memory update
+once the DMA operation has completed and a
+.Dv BUS_DMASYNC_POSTREAD
+sync operation has been performed.
+.Pp
+If read and write operations are not preceded and followed by the
+appropriate synchronization operations, behavior is undefined.
+.It Fn bus_dmamem_alloc "dmat" "**vaddr" "flags" "*mapp"
+Allocates memory that is mapped into KVA at the address returned
+in
+.Fa vaddr
+and that is permanently loaded into the newly created
+.Vt bus_dmamap_t
+returned via
+.Fa mapp .
+Arguments are as follows:
+.Bl -tag -width ".Fa alignment"
+.It Fa dmat
+DMA tag describing the constraints of the DMA mapping.
+.It Fa vaddr
+Pointer to a pointer that will hold the returned KVA mapping of
+the allocated region.
+.It Fa flags
+Flags are defined as follows:
+.Bl -tag -width ".Dv BUS_DMA_NOWAIT"
+.It Dv BUS_DMA_WAITOK
+The routine can safely wait (sleep) for resources.
+.It Dv BUS_DMA_NOWAIT
+The routine is not allowed to wait for resources.
+If resources are not available,
+.Dv ENOMEM
+is returned.
+.It Dv BUS_DMA_COHERENT
+Attempt to map this memory in a coherent fashion.
+See
+.Fn bus_dmamap_create
+above for a description of this flag.
+For
+.Fn bus_dmamem_alloc ,
+the
+.Dv BUS_DMA_COHERENT
+flag is currently implemented on arm and sparc64.
+.It Dv BUS_DMA_ZERO
+Causes the allocated memory to be set to all zeros.
+.El
+.It Fa mapp
+Pointer to a
+.Vt bus_dmamap_t
+where the resulting DMA map will be stored.
+.El
+.Pp
+The size of memory to be allocated is
+.Fa maxsize
+as specified in the call to
+.Fn bus_dma_tag_create
+for
+.Fa dmat .
+.Pp
+The current implementation of
+.Fn bus_dmamem_alloc
+will allocate all requests as a single segment.
+.Pp
+An initial load operation is required to obtain the bus address of the allocated
+memory, and an unload operation is required before freeing the memory, as
+described below in
+.Fn bus_dmamem_free .
+Maps are automatically handled by this function and should not be explicitly
+allocated or destroyed.
+.Pp
+Although an explicit load is not required for each access to the memory
+referenced by the returned map, the synchronization requirements
+as described in the
+.Fn bus_dmamap_sync
+section still apply and should be used to achieve portability on architectures
+without coherent buses.
+.Pp
+Returns
+.Er ENOMEM
+if sufficient memory is not available for completing
+the operation.
+.It Fn bus_dmamem_free "dmat" "*vaddr" "map"
+Frees memory previously allocated by
+.Fn bus_dmamem_alloc .
+Any mappings
+will be invalidated.
+Arguments are as follows:
+.Bl -tag -width ".Fa vaddr"
+.It Fa dmat
+DMA tag.
+.It Fa vaddr
+Kernel virtual address of the memory.
+.It Fa map
+DMA map to be invalidated.
+.El
+.El
+.Sh RETURN VALUES
+Behavior is undefined if invalid arguments are passed to
+any of the above functions.
+If sufficient resources cannot be allocated for a given
+transaction,
+.Er ENOMEM
+is returned.
+All
+routines that are not of type
+.Vt void
+will return 0 on success or an error
+code on failure as discussed above.
+.Pp
+All
+.Vt void
+routines will succeed if provided with valid arguments.
+.Sh LOCKING
+Two locking protocols are used by
+.Nm .
+The first is a private global lock that is used to synchronize access to the
+bounce buffer pool on the architectures that make use of them.
+This lock is strictly a leaf lock that is only used internally to
+.Nm
+and is not exposed to clients of the API.
+.Pp
+The second protocol involves protecting various resources stored in the tag.
+Since almost all
+.Nm
+operations are done through requests from the driver that created the tag,
+the most efficient way to protect the tag resources is through the lock that
+the driver uses.
+In cases where
+.Nm
+acts on its own without being called by the driver, the lock primitive
+specified in the tag is acquired and released automatically.
+An example of this is when the
+.Fn bus_dmamap_load
+callback function is called from a deferred context instead of the driver
+context.
+This means that certain
+.Nm
+functions must always be called with the same lock held that is specified in the
+tag.
+These functions include:
+.Pp
+.Bl -item -offset indent -compact
+.It
+.Fn bus_dmamap_load
+.It
+.Fn bus_dmamap_load_uio
+.It
+.Fn bus_dmamap_load_mbuf
+.It
+.Fn bus_dmamap_load_mbuf_sg
+.It
+.Fn bus_dmamap_unload
+.It
+.Fn bus_dmamap_sync
+.El
+.Pp
+There is one exception to this rule.
+It is common practice to call some of these functions during driver start-up
+without any locks held.
+So long as there is a guarantee of no possible concurrent use of the tag by
+different threads during this operation, it is safe to not hold a lock for
+these functions.
+.Pp
+Certain
+.Nm
+operations should not be called with the driver lock held, either because
+they are already protected by an internal lock, or because they might sleep
+due to memory or resource allocation.
+The following functions must not be
+called with any non-sleepable locks held:
+.Pp
+.Bl -item -offset indent -compact
+.It
+.Fn bus_dma_tag_create
+.It
+.Fn bus_dmamap_create
+.It
+.Fn bus_dmamem_alloc
+.El
+.Pp
+All other functions do not have a locking protocol and can thus be
+called with or without any system or driver locks held.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9 ,
+.Xr driver 9 ,
+.Xr rman 9 ,
+.Xr vslock 9
+.Pp
+.Rs
+.%A "Jason R. Thorpe"
+.%T "A Machine-Independent DMA Framework for NetBSD"
+.%J "Proceedings of the Summer 1998 USENIX Technical Conference"
+.%Q "USENIX Association"
+.%D "June 1998"
+.Re
+.Sh HISTORY
+The
+.Nm
+interface first appeared in
+.Nx 1.3 .
+.Pp
+The
+.Nm
+API was adopted from
+.Nx
+for use in the CAM SCSI subsystem.
+The alterations to the original API were aimed to remove the need for
+a
+.Vt bus_dma_segment_t
+array stored in each
+.Vt bus_dmamap_t
+while allowing callers to queue up on scarce resources.
+.Sh AUTHORS
+The
+.Nm
+interface was designed and implemented by
+.An Jason R. Thorpe
+of the Numerical Aerospace Simulation Facility, NASA Ames Research Center.
+Additional input on the
+.Nm
+design was provided by
+.An -nosplit
+.An Chris Demetriou ,
+.An Charles Hannum ,
+.An Ross Harvey ,
+.An Matthew Jacob ,
+.An Jonathan Stone ,
+and
+.An Matt Thomas .
+.Pp
+The
+.Nm
+interface in
+.Fx
+benefits from the contributions of
+.An Justin T. Gibbs ,
+.An Peter Wemm ,
+.An Doug Rabson ,
+.An Matthew N. Dodd ,
+.An Sam Leffler ,
+.An Maxime Henrion ,
+.An Jake Burkholder ,
+.An Takahashi Yoshihiro ,
+.An Scott Long
+and many others.
+.Pp
+This manual page was written by
+.An Hiten M. Pandya
+and
+.An Justin T. Gibbs .
diff --git a/share/man/man9/bus_generic_attach.9 b/share/man/man9/bus_generic_attach.9
new file mode 100644
index 0000000..e53bd5d
--- /dev/null
+++ b/share/man/man9/bus_generic_attach.9
@@ -0,0 +1,58 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt BUS_GENERIC_ATTACH 9
+.Os
+.Sh NAME
+.Nm bus_generic_attach
+.Nd generic implementation of
+.Dv DEVICE_ATTACH
+for busses
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn bus_generic_attach "device_t dev"
+.Sh DESCRIPTION
+This function provides an implementation of the
+.Xr DEVICE_ATTACH 9
+method which can be used by most bus code.
+It simply calls
+.Xr device_probe_and_attach 9
+for each child device attached to the bus.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/bus_generic_detach.9 b/share/man/man9/bus_generic_detach.9
new file mode 100644
index 0000000..9a2a6f8b
--- /dev/null
+++ b/share/man/man9/bus_generic_detach.9
@@ -0,0 +1,59 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt BUS_GENERIC_DETACH 9
+.Os
+.Sh NAME
+.Nm bus_generic_detach
+.Nd generic implementation of
+.Dv DEVICE_DETACH
+for busses
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn bus_generic_detach "device_t dev"
+.Sh DESCRIPTION
+This function provides an implementation of the
+.Xr DEVICE_DETACH 9
+method
+which can be used by most bus code.
+It simply calls the
+.Xr DEVICE_DETACH 9
+method of each child device attached to the bus.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/bus_generic_print_child.9 b/share/man/man9/bus_generic_print_child.9
new file mode 100644
index 0000000..80a04ff
--- /dev/null
+++ b/share/man/man9/bus_generic_print_child.9
@@ -0,0 +1,65 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt BUS_GENERIC_PRINT_CHILD 9
+.Os
+.Sh NAME
+.Nm bus_generic_print_child
+.Nd generic implementation of
+.Dv DEVICE_PRINT_CHILD
+for busses
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn bus_generic_print_child "device_t dev" "device_t child"
+.Sh DESCRIPTION
+This implementation prints out the default device announcement message.
+Given device 'foo0' on bus 'bar0' where foo0 has the name "FooCard 1234" the
+following would be printed:
+.Pp
+foo0: <FooCard 1234> on bar0
+.Pp
+bus_generic_print_child itself calls two functions
+.Fn bus_print_child_header
+and
+.Fn bus_print_child_footer
+The former prints "foo0: <FooCard 1234>" and the latter "on bar0".
+These routines should be used if possible in your own code if
+.Fn bus_generic_print_child
+does not completely suit your needs.
+.Sh RETURN VALUES
+The number of characters output.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/bus_generic_read_ivar.9 b/share/man/man9/bus_generic_read_ivar.9
new file mode 100644
index 0000000..5474b43
--- /dev/null
+++ b/share/man/man9/bus_generic_read_ivar.9
@@ -0,0 +1,57 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt BUS_GENERIC_READ_IVAR 9
+.Os
+.Sh NAME
+.Nm bus_generic_read_ivar ,
+.Nm bus_generic_write_ivar
+.Nd generic implementation of
+.Dv BUS_READ_IVAR
+and
+.Dv BUS_WRITE_IVAR
+for busses
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn bus_generic_read_ivar "device_t dev" "device_t child" "int index" "uintptr_t *result"
+.Ft int
+.Fn bus_generic_write_ivar "device_t dev" "device_t child" "int index" "uintptr_t value"
+.Sh DESCRIPTION
+These functions simply return
+.Er ENOENT .
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/bus_generic_shutdown.9 b/share/man/man9/bus_generic_shutdown.9
new file mode 100644
index 0000000..215d859
--- /dev/null
+++ b/share/man/man9/bus_generic_shutdown.9
@@ -0,0 +1,59 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt BUS_GENERIC_SHUTDOWN 9
+.Os
+.Sh NAME
+.Nm bus_generic_shutdown
+.Nd generic implementation of
+.Dv DEVICE_SHUTDOWN
+for busses
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn bus_generic_shutdown "device_t dev"
+.Sh DESCRIPTION
+This function provides an implementation of the
+.Xr DEVICE_SHUTDOWN 9
+method
+which can be used by most bus code.
+It simply calls the
+.Xr DEVICE_SHUTDOWN 9
+method of each child device attached to the bus.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/bus_release_resource.9 b/share/man/man9/bus_release_resource.9
new file mode 100644
index 0000000..68187cc
--- /dev/null
+++ b/share/man/man9/bus_release_resource.9
@@ -0,0 +1,106 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 18, 2000
+.Dt BUS_RELEASE_RESOURCE 9
+.Os
+.Sh NAME
+.Nm bus_release_resource
+.Nd release resources on a bus
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Pp
+.In machine/bus.h
+.In sys/rman.h
+.In machine/resource.h
+.Ft int
+.Fn bus_release_resource "device_t dev" "int type" "int rid" "struct resource *r"
+.Sh DESCRIPTION
+Free a resource allocated by
+.Xr bus_alloc_resource 9 .
+The resource must not be in use on release, i.e., call an appropriate function
+before (e.g.\&
+.Xr bus_teardown_intr 9
+for IRQs).
+.Bl -item
+.It
+.Fa dev
+is the device that owns the resource.
+.It
+.Fa type
+is the type of resource that is released.
+It must be of the same type you allocated it as before.
+See
+.Xr bus_alloc_resource 9
+for valid types.
+.It
+.Fa rid
+is the resource ID of the resource.
+The
+.Fa rid
+value must be the same as the one returned by
+.Xr bus_alloc_resource 9 .
+.It
+.Fa r
+is the pointer to
+.Va struct res ,
+i.e., the resource itself,
+returned by
+.Xr bus_alloc_resource 9 .
+.El
+.Sh RETURN VALUES
+.Er EINVAL
+is returned, if the device
+.Fa dev
+has no parent,
+.Dv 0
+otherwise.
+The kernel will panic, if it cannot release the resource.
+.Sh EXAMPLES
+.Bd -literal
+ /* deactivate IRQ */
+ bus_teardown_intr(dev, foosoftc->irqres, foosoftc->irqid);
+
+ /* release IRQ resource */
+ bus_release_resource(dev, SYS_RES_IRQ, foosoftc->irqid,
+ foosoftc->irqres);
+
+ /* release I/O port resource */
+ bus_release_resource(dev, SYS_RES_IOPORT, foosoftc->portid,
+ foosoftc->portres);
+.Ed
+.Sh SEE ALSO
+.Xr bus_alloc_resource 9 ,
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Alexander Langer Aq alex@big.endian.de .
diff --git a/share/man/man9/bus_set_resource.9 b/share/man/man9/bus_set_resource.9
new file mode 100644
index 0000000..cda47b6
--- /dev/null
+++ b/share/man/man9/bus_set_resource.9
@@ -0,0 +1,96 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd March 29, 2003
+.Dt BUS_SET_RESOURCE 9
+.Os
+.Sh NAME
+.Nm bus_set_resource
+.Nd "associate a definite resource with a given resource ID"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Pp
+.In machine/bus.h
+.In sys/rman.h
+.In machine/resource.h
+.Ft int
+.Fo bus_set_resource
+.Fa "device_t dev" "int type" "int rid" "u_long start" "u_long count"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn bus_set_resource
+function
+sets the start address of the resource
+.Fa type , rid
+pair to be
+.Fa count
+long.
+Typically, client drivers do not use this interface.
+Bus drivers, however, often use it to set up the resources a client
+driver uses.
+.Pp
+The arguments are as follows:
+.Bl -tag -width indent
+.It Fa dev
+The device to set the resource on.
+.It Fa type
+The type of resource you want to allocate.
+It is one of:
+.Pp
+.Bl -tag -width ".Dv SYS_RES_MEMORY" -compact
+.It Dv SYS_RES_IRQ
+for IRQs
+.It Dv SYS_RES_DRQ
+for ISA DMA lines
+.It Dv SYS_RES_IOPORT
+for I/O ports
+.It Dv SYS_RES_MEMORY
+for I/O memory
+.El
+.It Fa rid
+A bus-specific handle that identifies the resource being allocated.
+.It Fa start
+The start address of this resource.
+.It Fa count
+The length of the resource.
+For example, the size of the memory in bytes.
+.El
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr bus_alloc_resource 9 ,
+.Xr bus_get_resource 9 ,
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh Aq imp@FreeBSD.org .
diff --git a/share/man/man9/bus_space.9 b/share/man/man9/bus_space.9
new file mode 100644
index 0000000..5a18dfb
--- /dev/null
+++ b/share/man/man9/bus_space.9
@@ -0,0 +1,1718 @@
+.\" $NetBSD: bus_space.9,v 1.9 1999/03/06 22:09:29 mycroft Exp $
+.\"
+.\" Copyright (c) 2005 M. Warner Losh. 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 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.
+.\"
+.\"
+.\" Copyright (c) 1997 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Christopher G. Demetriou.
+.\"
+.\" 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 acknowledgment:
+.\" 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$
+.\"
+.Dd June 13, 2005
+.Dt BUS_SPACE 9
+.Os
+.Sh NAME
+.Nm bus_space ,
+.Nm bus_space_barrier ,
+.Nm bus_space_copy_region_1 ,
+.Nm bus_space_copy_region_2 ,
+.Nm bus_space_copy_region_4 ,
+.Nm bus_space_copy_region_8 ,
+.Nm bus_space_copy_region_stream_1 ,
+.Nm bus_space_copy_region_stream_2 ,
+.Nm bus_space_copy_region_stream_4 ,
+.Nm bus_space_copy_region_stream_8 ,
+.Nm bus_space_free ,
+.Nm bus_space_map ,
+.Nm bus_space_read_1 ,
+.Nm bus_space_read_2 ,
+.Nm bus_space_read_4 ,
+.Nm bus_space_read_8 ,
+.Nm bus_space_read_multi_1 ,
+.Nm bus_space_read_multi_2 ,
+.Nm bus_space_read_multi_4 ,
+.Nm bus_space_read_multi_8 ,
+.Nm bus_space_read_multi_stream_1 ,
+.Nm bus_space_read_multi_stream_2 ,
+.Nm bus_space_read_multi_stream_4 ,
+.Nm bus_space_read_multi_stream_8 ,
+.Nm bus_space_read_region_1 ,
+.Nm bus_space_read_region_2 ,
+.Nm bus_space_read_region_4 ,
+.Nm bus_space_read_region_8 ,
+.Nm bus_space_read_region_stream_1 ,
+.Nm bus_space_read_region_stream_2 ,
+.Nm bus_space_read_region_stream_4 ,
+.Nm bus_space_read_region_stream_8 ,
+.Nm bus_space_read_stream_1 ,
+.Nm bus_space_read_stream_2 ,
+.Nm bus_space_read_stream_4 ,
+.Nm bus_space_read_stream_8 ,
+.Nm bus_space_set_multi_1 ,
+.Nm bus_space_set_multi_2 ,
+.Nm bus_space_set_multi_4 ,
+.Nm bus_space_set_multi_8 ,
+.Nm bus_space_set_multi_stream_1 ,
+.Nm bus_space_set_multi_stream_2 ,
+.Nm bus_space_set_multi_stream_4 ,
+.Nm bus_space_set_multi_stream_8 ,
+.Nm bus_space_set_region_1 ,
+.Nm bus_space_set_region_2 ,
+.Nm bus_space_set_region_4 ,
+.Nm bus_space_set_region_8 ,
+.Nm bus_space_set_region_stream_1 ,
+.Nm bus_space_set_region_stream_2 ,
+.Nm bus_space_set_region_stream_4 ,
+.Nm bus_space_set_region_stream_8 ,
+.Nm bus_space_subregion ,
+.Nm bus_space_unmap ,
+.Nm bus_space_write_1 ,
+.Nm bus_space_write_2 ,
+.Nm bus_space_write_4 ,
+.Nm bus_space_write_8 ,
+.Nm bus_space_write_multi_1 ,
+.Nm bus_space_write_multi_2 ,
+.Nm bus_space_write_multi_4 ,
+.Nm bus_space_write_multi_8 ,
+.Nm bus_space_write_multi_stream_1 ,
+.Nm bus_space_write_multi_stream_2 ,
+.Nm bus_space_write_multi_stream_4 ,
+.Nm bus_space_write_multi_stream_8 ,
+.Nm bus_space_write_region_1 ,
+.Nm bus_space_write_region_2 ,
+.Nm bus_space_write_region_4 ,
+.Nm bus_space_write_region_8 ,
+.Nm bus_space_write_region_stream_1 ,
+.Nm bus_space_write_region_stream_2 ,
+.Nm bus_space_write_region_stream_4 ,
+.Nm bus_space_write_region_stream_8 ,
+.Nm bus_space_write_stream_1 ,
+.Nm bus_space_write_stream_2 ,
+.Nm bus_space_write_stream_4 ,
+.Nm bus_space_write_stream_8
+.Nd "bus space manipulation functions"
+.Sh SYNOPSIS
+.In machine/bus.h
+.Ft int
+.Fo bus_space_map
+.Fa "bus_space_tag_t space" "bus_addr_t address"
+.Fa "bus_size_t size" "int flags" "bus_space_handle_t *handlep"
+.Fc
+.Ft void
+.Fo bus_space_unmap
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t size"
+.Fc
+.Ft int
+.Fo bus_space_subregion
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "bus_size_t size" "bus_space_handle_t *nhandlep"
+.Fc
+.Ft int
+.Fo bus_space_alloc
+.Fa "bus_space_tag_t space" "bus_addr_t reg_start" "bus_addr_t reg_end"
+.Fa "bus_size_t size" "bus_size_t alignment" "bus_size_t boundary"
+.Fa "int flags" "bus_addr_t *addrp" "bus_space_handle_t *handlep"
+.Fc
+.Ft void
+.Fo bus_space_free
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t size"
+.Fc
+.Ft u_int8_t
+.Fo bus_space_read_1
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft u_int16_t
+.Fo bus_space_read_2
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft u_int32_t
+.Fo bus_space_read_4
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft u_int64_t
+.Fo bus_space_read_8
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft u_int8_t
+.Fo bus_space_read_stream_1
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft u_int16_t
+.Fo bus_space_read_stream_2
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft u_int32_t
+.Fo bus_space_read_stream_4
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft u_int64_t
+.Fo bus_space_read_stream_8
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle" "bus_size_t offset"
+.Fc
+.Ft void
+.Fo bus_space_write_1
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int8_t value"
+.Fc
+.Ft void
+.Fo bus_space_write_2
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int16_t value"
+.Fc
+.Ft void
+.Fo bus_space_write_4
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int32_t value"
+.Fc
+.Ft void
+.Fo bus_space_write_8
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int64_t value"
+.Fc
+.Ft void
+.Fo bus_space_write_stream_1
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int8_t value"
+.Fc
+.Ft void
+.Fo bus_space_write_stream_2
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int16_t value"
+.Fc
+.Ft void
+.Fo bus_space_write_stream_4
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int32_t value"
+.Fc
+.Ft void
+.Fo bus_space_write_stream_8
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "u_int64_t value"
+.Fc
+.Ft void
+.Fo bus_space_barrier
+.Fa "bus_space_tag_t space" "bus_space_handle_t handle"
+.Fa "bus_size_t offset" "bus_size_t length" "int flags"
+.Fc
+.Ft void
+.Fo bus_space_read_region_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_region_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_region_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_region_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_region_stream_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_region_stream_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_region_stream_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_region_stream_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_stream_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_stream_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_stream_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_region_stream_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_stream_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_stream_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_stream_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_copy_region_stream_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t srchandle" "bus_size_t srcoffset"
+.Fa "bus_space_handle_t dsthandle" "bus_size_t dstoffset" "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_stream_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_stream_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_stream_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_region_stream_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_stream_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_stream_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_stream_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_read_multi_stream_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_stream_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_stream_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_stream_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_write_multi_stream_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t *datap"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_stream_1
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int8_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_stream_2
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int16_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_stream_4
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int32_t value"
+.Fa "bus_size_t count"
+.Fc
+.Ft void
+.Fo bus_space_set_multi_stream_8
+.Fa "bus_space_tag_t space"
+.Fa "bus_space_handle_t handle" "bus_size_t offset" "u_int64_t value"
+.Fa "bus_size_t count"
+.Fc
+.Sh DESCRIPTION
+The
+.Nm
+functions exist to allow device drivers
+machine-independent access to bus memory and register areas.
+All of the
+functions and types described in this document can be used by including
+the
+.In machine/bus.h
+header file.
+.Pp
+Many common devices are used on multiple architectures, but are accessed
+differently on each because of architectural constraints.
+For instance, a device which is mapped in one system's I/O space may be
+mapped in memory space on a second system.
+On a third system, architectural
+limitations might change the way registers need to be accessed (e.g.\&
+creating a non-linear register space).
+In some cases, a single
+driver may need to access the same type of device in multiple ways in a
+single system or architecture.
+The goal of the
+.Nm
+functions is to allow a single driver source file to manipulate a set
+of devices on different system architectures, and to allow a single driver
+object file to manipulate a set of devices on multiple bus types on a
+single architecture.
+.Pp
+Not all busses have to implement all functions described in this
+document, though that is encouraged if the operations are logically
+supported by the bus.
+Unimplemented functions should cause
+compile-time errors if possible.
+.Pp
+All of the interface definitions described in this document are shown as
+function prototypes and discussed as if they were required to be
+functions.
+Implementations are encouraged to implement prototyped
+(type-checked) versions of these interfaces, but may implement them as
+macros if appropriate.
+Machine-dependent types, variables, and functions
+should be marked clearly in
+.In machine/bus.h
+to avoid confusion with the
+machine-independent types and functions, and, if possible, should be
+given names which make the machine-dependence clear.
+.Sh CONCEPTS AND GUIDELINES
+Bus spaces are described by bus space tags, which can be created only by
+machine-dependent code.
+A given machine may have several different types
+of bus space (e.g.\& memory space and I/O space), and thus may provide
+multiple different bus space tags.
+Individual busses or devices on a machine may use more than one bus space
+tag.
+For instance, ISA devices are
+given an ISA memory space tag and an ISA I/O space tag.
+Architectures
+may have several different tags which represent the same type of
+space, for instance because of multiple different host bus interface
+chipsets.
+.Pp
+A range in bus space is described by a bus address and a bus size.
+The
+bus address describes the start of the range in bus space.
+The bus
+size describes the size of the range in bytes.
+Busses which are not byte
+addressable may require use of bus space ranges with appropriately
+aligned addresses and properly rounded sizes.
+.Pp
+Access to regions of bus space is facilitated by use of bus space handles,
+which are usually created by mapping a specific range of a bus space.
+Handles may also be created by allocating
+and mapping a range of bus space, the actual location of which is picked
+by the implementation within bounds specified by the caller of the
+allocation function.
+.Pp
+All of the bus space access functions require one bus space tag
+argument, at least one handle argument, and at least one offset argument
+(a bus size).
+The bus space tag specifies the space, each handle specifies a region in
+the space, and each offset specifies the offset into the region of the
+actual location(s) to be accessed.
+Offsets are given in bytes, though busses
+may impose alignment constraints.
+The offset used to access data
+relative to a given handle must be such that all of the data being
+accessed is in the mapped region that the handle describes.
+Trying to
+access data outside that region is an error.
+.Pp
+Because some architectures' memory systems use buffering to improve
+memory and device access performance, there is a mechanism which can be
+used to create
+.Dq barriers
+in the bus space read and write stream.
+There
+are three types of barriers: read, write, and read/write.
+All reads
+started to the region before a read barrier must complete before any reads
+after the read barrier are started.
+(The analogous requirement is true for
+write barriers.)
+Read/write barriers force all reads and writes started
+before the barrier to complete before any reads or writes after the
+barrier are started.
+Correctly-written drivers will include all
+appropriate barriers, and assume only the read/write ordering imposed by
+the barrier operations.
+.Pp
+People trying to write portable drivers with the
+.Nm
+functions should
+try to make minimal assumptions about what the system allows.
+In particular,
+they should expect that the system requires bus space addresses being
+accessed to be naturally aligned (i.e., base address of handle added to
+offset is a multiple of the access size), and that the system does
+alignment checking on pointers (i.e., pointer to objects being read and
+written must point to properly-aligned data).
+.Pp
+The descriptions of the
+.Nm
+functions given below all assume that
+they are called with proper arguments.
+If called with invalid arguments
+or arguments that are out of range (e.g.\& trying to access data outside of
+the region mapped when a given handle was created), undefined behaviour
+results.
+In that case, they may cause the
+system to halt, either intentionally (via panic) or unintentionally (by
+causing a fatal trap of by some other means) or may cause improper
+operation which is not immediately fatal.
+Functions which return
+.Ft void
+or which return data read from bus space (i.e., functions which
+do not obviously return an error code) do not fail.
+They could only fail
+if given invalid arguments, and in that case their behaviour is undefined.
+.Sh TYPES
+Several types are defined in
+.In machine/bus.h
+to facilitate use of the
+.Nm
+functions by drivers.
+.Ss Vt bus_addr_t
+The
+.Vt bus_addr_t
+type is used to describe bus addresses.
+It must be an
+unsigned integral type
+capable of holding the largest bus address usable by the architecture.
+This
+type is primarily used when mapping and unmapping bus space.
+.Ss Vt bus_size_t
+The
+.Vt bus_size_t
+type is used to describe sizes of ranges in bus space.
+It must be an
+unsigned integral type capable of holding the size of the largest bus
+address range usable on the architecture.
+This type is used by virtually all
+of the
+.Nm
+functions, describing sizes when mapping regions and
+offsets into regions when performing space access operations.
+.Ss Vt bus_space_tag_t
+The
+.Vt bus_space_tag_t
+type is used to describe a particular bus space on a machine.
+Its
+contents are machine-dependent and should be considered opaque by
+machine-independent code.
+This type is used by all
+.Nm
+functions to name the space on which they are operating.
+.Ss Vt bus_space_handle_t
+The
+.Vt bus_space_handle_t
+type is used to describe a mapping of a range of bus space.
+Its
+contents are machine-dependent and should be considered opaque by
+machine-independent code.
+This type is used when performing bus space
+access operations.
+.Sh MAPPING AND UNMAPPING BUS SPACE
+This section is specific to the
+.Nx
+version of these functions and may or may not apply to the
+.Fx
+version.
+.Pp
+Bus space must be mapped before it can be used, and should be
+unmapped when it is no longer needed.
+The
+.Fn bus_space_map
+and
+.Fn bus_space_unmap
+functions provide these capabilities.
+.Pp
+Some drivers need to be able to pass a subregion of already-mapped bus
+space to another driver or module within a driver.
+The
+.Fn bus_space_subregion
+function allows such subregions to be created.
+.Ss Fn bus_space_map space address size flags handlep
+The
+.Fn bus_space_map
+function maps the region of bus space named by the
+.Fa space , address ,
+and
+.Fa size
+arguments.
+If successful, it returns zero
+and fills in the bus space handle pointed to by
+.Fa handlep
+with the handle
+that can be used to access the mapped region.
+If unsuccessful,
+it will return non-zero and leave the bus space handle pointed
+to by
+.Fa handlep
+in an undefined state.
+.Pp
+The
+.Fa flags
+argument controls how the space is to be mapped.
+Supported flags include:
+.Bl -tag -width ".Dv BUS_SPACE_MAP_CACHEABLE"
+.It Dv BUS_SPACE_MAP_CACHEABLE
+Try to map the space so that accesses can be cached and/or
+prefetched by the system.
+If this flag is not specified, the
+implementation should map the space so that it will not be cached or
+prefetched.
+.Pp
+This flag must have a value of 1 on all implementations for backward
+compatibility.
+.It Dv BUS_SPACE_MAP_LINEAR
+Try to map the space so that its contents can be accessed linearly via
+normal memory access methods (e.g.\& pointer dereferencing and structure
+accesses).
+This is useful when software wants to do direct access to a memory
+device, e.g.\& a frame buffer.
+If this flag is specified and linear
+mapping is not possible, the
+.Fn bus_space_map
+call should fail.
+If this
+flag is not specified, the system may map the space in whatever way is
+most convenient.
+.El
+.Pp
+Not all combinations of flags make sense or are supported with all
+spaces.
+For instance,
+.Dv BUS_SPACE_MAP_CACHEABLE
+may be meaningless when
+used on many systems' I/O port spaces, and on some systems
+.Dv BUS_SPACE_MAP_LINEAR
+without
+.Dv BUS_SPACE_MAP_CACHEABLE
+may never work.
+When the system hardware or firmware provides hints as to how spaces should be
+mapped (e.g.\& the PCI memory mapping registers'
+.Dq prefetchable
+bit), those
+hints should be followed for maximum compatibility.
+On some systems,
+requesting a mapping that cannot be satisfied (e.g.\& requesting a
+non-cacheable mapping when the system can only provide a cacheable one)
+will cause the request to fail.
+.Pp
+Some implementations may keep track of use of bus space for some or all
+bus spaces and refuse to allow duplicate allocations.
+This is encouraged
+for bus spaces which have no notion of slot-specific space addressing,
+such as ISA and VME, and for spaces which coexist with those spaces
+(e.g.\& EISA and PCI memory and I/O spaces co-existing with ISA memory and
+I/O spaces).
+.Pp
+Mapped regions may contain areas for which there is no device on the
+bus.
+If space in those areas is accessed, the results are
+bus-dependent.
+.Ss Fn bus_space_unmap space handle size
+The
+.Fn bus_space_unmap
+function unmaps a region of bus space mapped with
+.Fn bus_space_map .
+When unmapping a region, the
+.Fa size
+specified should be
+the same as the size given to
+.Fn bus_space_map
+when mapping that region.
+.Pp
+After
+.Fn bus_space_unmap
+is called on a handle, that handle is no longer
+valid.
+(If copies were made of the handle they are no longer valid,
+either.)
+.Pp
+This function will never fail.
+If it would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case,
+.Fn bus_space_unmap
+will never return.
+.Ss Fn bus_space_subregion space handle offset size nhandlep
+The
+.Fn bus_space_subregion
+function is a convenience function which makes a
+new handle to some subregion of an already-mapped region of bus space.
+The subregion described by the new handle starts at byte offset
+.Fa offset
+into the region described by
+.Fa handle ,
+with the size give by
+.Fa size ,
+and must be wholly contained within the original region.
+.Pp
+If successful,
+.Fn bus_space_subregion
+returns zero and fills in the bus
+space handle pointed to by
+.Fa nhandlep .
+If unsuccessful, it returns non-zero and leaves the bus space handle
+pointed to by
+.Fa nhandlep
+in an
+undefined state.
+In either case, the handle described by
+.Fa handle
+remains valid and is unmodified.
+.Pp
+When done with a handle created by
+.Fn bus_space_subregion ,
+the handle should
+be thrown away.
+Under no circumstances should
+.Fn bus_space_unmap
+be used on the handle.
+Doing so may confuse any resource management
+being done on the space, and will result in undefined behaviour.
+When
+.Fn bus_space_unmap
+or
+.Fn bus_space_free
+is called on a handle, all subregions of that handle become invalid.
+.Sh ALLOCATING AND FREEING BUS SPACE
+This section is specific to the
+.Nx
+version of these functions and may or may not apply to the
+.Fx
+version.
+.Pp
+Some devices require or allow bus space to be allocated by the operating
+system for device use.
+When the devices no longer need the space, the
+operating system should free it for use by other devices.
+The
+.Fn bus_space_alloc
+and
+.Fn bus_space_free
+functions provide these capabilities.
+.Ss Fn bus_space_alloc space reg_start reg_end size alignment boundary \
+flags addrp handlep
+The
+.Fn bus_space_alloc
+function allocates and maps a region of bus space with the size given by
+.Fa size ,
+corresponding to the given constraints.
+If successful, it returns
+zero, fills in the bus address pointed to by
+.Fa addrp
+with the bus space address of the allocated region, and fills in
+the bus space handle pointed to by
+.Fa handlep
+with the handle that can be used to access that region.
+If unsuccessful, it returns non-zero and leaves the bus address pointed to by
+.Fa addrp
+and the bus space handle pointed to by
+.Fa handlep
+in an undefined state.
+.Pp
+Constraints on the allocation are given by the
+.Fa reg_start , reg_end , alignment ,
+and
+.Fa boundary
+parameters.
+The allocated region will start at or after
+.Fa reg_start
+and end before or at
+.Fa reg_end .
+The
+.Fa alignment
+constraint must be a power of two, and the allocated region will start at
+an address that is an even multiple of that power of two.
+The
+.Fa boundary
+constraint, if non-zero, ensures that the region is allocated so that
+.Fa "first address in region"
+/
+.Fa boundary
+has the same value as
+.Fa "last address in region"
+/
+.Fa boundary .
+If the constraints cannot be met,
+.Fn bus_space_alloc
+will fail.
+It is an error to specify a set of
+constraints that can never be met
+(for example,
+.Fa size
+greater than
+.Fa boundary ) .
+.Pp
+The
+.Fa flags
+parameter is the same as the like-named parameter to
+.Fn bus_space_map ,
+the same flag values should be used, and they have the
+same meanings.
+.Pp
+Handles created by
+.Fn bus_space_alloc
+should only be freed with
+.Fn bus_space_free .
+Trying to use
+.Fn bus_space_unmap
+on them causes undefined behaviour.
+The
+.Fn bus_space_subregion
+function can be used on
+handles created by
+.Fn bus_space_alloc .
+.Ss Fn bus_space_free space handle size
+The
+.Fn bus_space_free
+function unmaps and frees a region of bus space mapped
+and allocated with
+.Fn bus_space_alloc .
+When unmapping a region, the
+.Fa size
+specified should be the same as the size given to
+.Fn bus_space_alloc
+when allocating the region.
+.Pp
+After
+.Fn bus_space_free
+is called on a handle, that handle is no longer valid.
+(If copies were
+made of the handle, they are no longer valid, either.)
+.Pp
+This function will never fail.
+If it would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case,
+.Fn bus_space_free
+will never return.
+.Sh READING AND WRITING SINGLE DATA ITEMS
+The simplest way to access bus space is to read or write a single data
+item.
+The
+.Fn bus_space_read_N
+and
+.Fn bus_space_write_N
+families of functions provide
+the ability to read and write 1, 2, 4, and 8 byte data items on busses
+which support those access sizes.
+.Ss Fn bus_space_read_1 space handle offset
+.Ss Fn bus_space_read_2 space handle offset
+.Ss Fn bus_space_read_4 space handle offset
+.Ss Fn bus_space_read_8 space handle offset
+The
+.Fn bus_space_read_N
+family of functions reads a 1, 2, 4, or 8 byte data item from
+the offset specified by
+.Fa offset
+into the region specified by
+.Fa handle
+of the bus space specified by
+.Fa space .
+The location being read must lie within the bus space region specified by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data item being read.
+On some systems, not obeying this requirement may cause incorrect data to
+be read, on others it may cause a system crash.
+.Pp
+Read operations done by the
+.Fn bus_space_read_N
+functions may be executed out
+of order with respect to other pending read and write operations unless
+order is enforced by use of the
+.Fn bus_space_barrier
+function.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Ss Fn bus_space_write_1 space handle offset value
+.Ss Fn bus_space_write_2 space handle offset value
+.Ss Fn bus_space_write_4 space handle offset value
+.Ss Fn bus_space_write_8 space handle offset value
+The
+.Fn bus_space_write_N
+family of functions writes a 1, 2, 4, or 8 byte data item to the offset
+specified by
+.Fa offset
+into the region specified by
+.Fa handle
+of the bus space specified by
+.Fa space .
+The location being written must lie within
+the bus space region specified by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data item being
+written.
+On some systems, not obeying this requirement may cause
+incorrect data to be written, on others it may cause a system crash.
+.Pp
+Write operations done by the
+.Fn bus_space_write_N
+functions may be executed
+out of order with respect to other pending read and write operations
+unless order is enforced by use of the
+.Fn bus_space_barrier
+function.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Sh BARRIERS
+In order to allow high-performance buffering implementations to avoid bus
+activity on every operation, read and write ordering should be specified
+explicitly by drivers when necessary.
+The
+.Fn bus_space_barrier
+function provides that ability.
+.Ss Fn bus_space_barrier space handle offset length flags
+The
+.Fn bus_space_barrier
+function enforces ordering of bus space read and write operations
+for the specified subregion (described by the
+.Fa offset
+and
+.Fa length
+parameters) of the region named by
+.Fa handle
+in the space named by
+.Fa space .
+.Pp
+The
+.Fa flags
+argument controls what types of operations are to be ordered.
+Supported flags are:
+.Bl -tag -width ".Dv BUS_SPACE_BARRIER_WRITE"
+.It Dv BUS_SPACE_BARRIER_READ
+Synchronize read operations.
+.It Dv BUS_SPACE_BARRIER_WRITE
+Synchronize write operations.
+.El
+.Pp
+Those flags can be combined (or-ed together) to enforce ordering on both
+read and write operations.
+.Pp
+All of the specified type(s) of operation which are done to the region
+before the barrier operation are guaranteed to complete before any of the
+specified type(s) of operation done after the barrier.
+.Pp
+Example: Consider a hypothetical device with two single-byte ports, one
+write-only input port (at offset 0) and a read-only output port (at
+offset 1).
+Operation of the device is as follows: data bytes are written
+to the input port, and are placed by the device on a stack, the top of
+which is read by reading from the output port.
+The sequence to correctly
+write two data bytes to the device then read those two data bytes back
+would be:
+.Bd -literal
+/*
+ * t and h are the tag and handle for the mapped device's
+ * space.
+ */
+bus_space_write_1(t, h, 0, data0);
+bus_space_barrier(t, h, 0, 1, BUS_SPACE_BARRIER_WRITE); /* 1 */
+bus_space_write_1(t, h, 0, data1);
+bus_space_barrier(t, h, 0, 2,
+ BUS_SPACE_BARRIER_READ|BUS_SPACE_BARRIER_WRITE); /* 2 */
+ndata1 = bus_space_read_1(t, h, 1);
+bus_space_barrier(t, h, 1, 1, BUS_SPACE_BARRIER_READ); /* 3 */
+ndata0 = bus_space_read_1(t, h, 1);
+/* data0 == ndata0, data1 == ndata1 */
+.Ed
+.Pp
+The first barrier makes sure that the first write finishes before the
+second write is issued, so that two writes to the input port are done
+in order and are not collapsed into a single write.
+This ensures that
+the data bytes are written to the device correctly and in order.
+.Pp
+The second barrier makes sure that the writes to the output port finish
+before any of the reads to the input port are issued, thereby making sure
+that all of the writes are finished before data is read.
+This ensures
+that the first byte read from the device really is the last one that was
+written.
+.Pp
+The third barrier makes sure that the first read finishes before the
+second read is issued, ensuring that data is read correctly and in order.
+.Pp
+The barriers in the example above are specified to cover the absolute
+minimum number of bus space locations.
+It is correct (and often
+easier) to make barrier operations cover the device's whole range of bus
+space, that is, to specify an offset of zero and the size of the
+whole region.
+.Sh REGION OPERATIONS
+Some devices use buffers which are mapped as regions in bus space.
+Often, drivers want to copy the contents of those buffers to or from
+memory, e.g.\& into mbufs which can be passed to higher levels of the
+system or from mbufs to be output to a network.
+In order to allow
+drivers to do this as efficiently as possible, the
+.Fn bus_space_read_region_N
+and
+.Fn bus_space_write_region_N
+families of functions are provided.
+.Pp
+Drivers occasionally need to copy one region of a bus space to another,
+or to set all locations in a region of bus space to contain a single
+value.
+The
+.Fn bus_space_copy_region_N
+family of functions and the
+.Fn bus_space_set_region_N
+family of functions allow drivers to perform these operations.
+.Ss Fn bus_space_read_region_1 space handle offset datap count
+.Ss Fn bus_space_read_region_2 space handle offset datap count
+.Ss Fn bus_space_read_region_4 space handle offset datap count
+.Ss Fn bus_space_read_region_8 space handle offset datap count
+The
+.Fn bus_space_read_region_N
+family of functions reads
+.Fa count
+1, 2, 4, or 8 byte data items from bus space
+starting at byte offset
+.Fa offset
+in the region specified by
+.Fa handle
+of the bus space specified by
+.Fa space
+and writes them into the array specified by
+.Fa datap .
+Each successive data item is read from an offset
+1, 2, 4, or 8 bytes after the previous data item (depending on which
+function is used).
+All locations being read must lie within the bus
+space region specified by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data items being
+read and the data array pointer should be properly aligned.
+On some
+systems, not obeying these requirements may cause incorrect data to be
+read, on others it may cause a system crash.
+.Pp
+Read operations done by the
+.Fn bus_space_read_region_N
+functions may be executed in any order.
+They may also be executed out
+of order with respect to other pending read and write operations unless
+order is enforced by use of the
+.Fn bus_space_barrier
+function.
+There is no way to insert barriers between reads of
+individual bus space locations executed by the
+.Fn bus_space_read_region_N
+functions.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Ss Fn bus_space_write_region_1 space handle offset datap count
+.Ss Fn bus_space_write_region_2 space handle offset datap count
+.Ss Fn bus_space_write_region_4 space handle offset datap count
+.Ss Fn bus_space_write_region_8 space handle offset datap count
+The
+.Fn bus_space_write_region_N
+family of functions reads
+.Fa count
+1, 2, 4, or 8 byte data items from the array
+specified by
+.Fa datap
+and writes them to bus space starting at byte offset
+.Fa offset
+in the region specified by
+.Fa handle
+of the bus space specified
+by
+.Fa space .
+Each successive data item is written to an offset 1, 2, 4,
+or 8 bytes after the previous data item (depending on which function is
+used).
+All locations being written must lie within the bus space region
+specified by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data items being
+written and the data array pointer should be properly aligned.
+On some
+systems, not obeying these requirements may cause incorrect data to be
+written, on others it may cause a system crash.
+.Pp
+Write operations done by the
+.Fn bus_space_write_region_N
+functions may be
+executed in any order.
+They may also be executed out of order with
+respect to other pending read and write operations unless order is
+enforced by use of the
+.Fn bus_space_barrier
+function.
+There is no way to insert barriers between writes of
+individual bus space locations executed by the
+.Fn bus_space_write_region_N
+functions.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Ss Fn bus_space_copy_region_1 space srchandle srcoffset dsthandle \
+dstoffset count
+.Ss Fn bus_space_copy_region_2 space srchandle srcoffset dsthandle \
+dstoffset count
+.Ss Fn bus_space_copy_region_4 space srchandle srcoffset dsthandle \
+dstoffset count
+.Ss Fn bus_space_copy_region_8 space srchandle srcoffset dsthandle \
+dstoffset count
+The
+.Fn bus_space_copy_region_N
+family of functions copies
+.Fa count
+1, 2, 4, or 8 byte data items in bus space
+from the area starting at byte offset
+.Fa srcoffset
+in the region specified by
+.Fa srchandle
+of the bus space specified by
+.Fa space
+to the area starting at byte offset
+.Fa dstoffset
+in the region specified by
+.Fa dsthandle
+in the same bus space.
+Each successive data item read or written has
+an offset 1, 2, 4, or 8 bytes after the previous data item (depending
+on which function is used).
+All locations being read and written must
+lie within the bus space region specified by their respective handles.
+.Pp
+For portability, the starting addresses of the regions specified by the
+each handle plus its respective offset should be a multiple of the size
+of data items being copied.
+On some systems, not obeying this
+requirement may cause incorrect data to be copied, on others it may cause
+a system crash.
+.Pp
+Read and write operations done by the
+.Fn bus_space_copy_region_N
+functions may be executed in any order.
+They may also be executed out
+of order with respect to other pending read and write operations unless
+order is enforced by use of the
+.Fn bus_space_barrier function .
+There is no way to insert barriers between reads or writes of
+individual bus space locations executed by the
+.Fn bus_space_copy_region_N
+functions.
+.Pp
+Overlapping copies between different subregions of a single region
+of bus space are handled correctly by the
+.Fn bus_space_copy_region_N
+functions.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Ss Fn bus_space_set_region_1 space handle offset value count
+.Ss Fn bus_space_set_region_2 space handle offset value count
+.Ss Fn bus_space_set_region_4 space handle offset value count
+.Ss Fn bus_space_set_region_8 space handle offset value count
+The
+.Fn bus_space_set_region_N
+family of functions writes the given
+.Fa value
+to
+.Fa count
+1, 2, 4, or 8 byte
+data items in bus space starting at byte offset
+.Fa offset
+in the region specified by
+.Fa handle
+of the bus space specified by
+.Fa space .
+Each successive data item has an offset 1, 2, 4, or 8 bytes after the
+previous data item (depending on which function is used).
+All
+locations being written must lie within the bus space region specified
+by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data items being
+written.
+On some systems, not obeying this requirement may cause
+incorrect data to be written, on others it may cause a system crash.
+.Pp
+Write operations done by the
+.Fn bus_space_set_region_N
+functions may be
+executed in any order.
+They may also be executed out of order with
+respect to other pending read and write operations unless order is
+enforced by use of the
+.Fn bus_space_barrier
+function.
+There is no way to insert barriers between writes of
+individual bus space locations executed by the
+.Fn bus_space_set_region_N
+functions.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Sh READING AND WRITING A SINGLE LOCATION MULTIPLE TIMES
+Some devices implement single locations in bus space which are to be read
+or written multiple times to communicate data, e.g.\& some ethernet
+devices' packet buffer FIFOs.
+In order to allow drivers to manipulate
+these types of devices as efficiently as possible, the
+.Fn bus_space_read_multi_N ,
+.Fn bus_space_set_multi_N ,
+and
+.Fn bus_space_write_multi_N
+families of functions are provided.
+.Ss Fn bus_space_read_multi_1 space handle offset datap count
+.Ss Fn bus_space_read_multi_2 space handle offset datap count
+.Ss Fn bus_space_read_multi_4 space handle offset datap count
+.Ss Fn bus_space_read_multi_8 space handle offset datap count
+The
+.Fn bus_space_read_multi_N
+family of functions reads
+.Fa count
+1, 2, 4, or 8 byte data items from bus space
+at byte offset
+.Fa offset
+in the region specified by
+.Fa handle
+of the bus space specified by
+.Fa space
+and writes them into the array specified by
+.Fa datap .
+Each successive data item is read from the same location in bus
+space.
+The location being read must lie within the bus space region
+specified by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data items being
+read and the data array pointer should be properly aligned.
+On some
+systems, not obeying these requirements may cause incorrect data to be
+read, on others it may cause a system crash.
+.Pp
+Read operations done by the
+.Fn bus_space_read_multi_N
+functions may be
+executed out of order with respect to other pending read and write
+operations unless order is enforced by use of the
+.Fn bus_space_barrier
+function.
+Because the
+.Fn bus_space_read_multi_N
+functions read the same bus space location multiple times, they
+place an implicit read barrier between each successive read of that bus
+space location.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Ss Fn bus_space_write_multi_1 space handle offset datap count
+.Ss Fn bus_space_write_multi_2 space handle offset datap count
+.Ss Fn bus_space_write_multi_4 space handle offset datap count
+.Ss Fn bus_space_write_multi_8 space handle offset datap count
+The
+.Fn bus_space_write_multi_N
+family of functions reads
+.Fa count
+1, 2, 4, or 8 byte data items from the array
+specified by
+.Fa datap
+and writes them into bus space at byte offset
+.Fa offset
+in the region specified by
+.Fa handle
+of the bus space specified by
+.Fa space .
+Each successive data item is written to the same location in
+bus space.
+The location being written must lie within the bus space
+region specified by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data items being
+written and the data array pointer should be properly aligned.
+On some
+systems, not obeying these requirements may cause incorrect data to be
+written, on others it may cause a system crash.
+.Pp
+Write operations done by the
+.Fn bus_space_write_multi_N
+functions may be executed out of order with respect to other pending
+read and write operations unless order is enforced by use of the
+.Fn bus_space_barrier
+function.
+Because the
+.Fn bus_space_write_multi_N
+functions write the same bus space location multiple times, they
+place an implicit write barrier between each successive write of that
+bus space location.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Ss Fn bus_space_set_multi_1 space handle offset value count
+.Ss Fn bus_space_set_multi_2 space handle offset value count
+.Ss Fn bus_space_set_multi_4 space handle offset value count
+.Ss Fn bus_space_set_multi_8 space handle offset value count
+The
+.Fn bus_space_set_multi_N
+writes
+.Fa value
+into bus space at byte offset
+.Fa offset
+in the region specified by
+.Fa handle
+of the bus space specified by
+.Fa space ,
+.Fa count
+times.
+The location being written must lie within the bus space
+region specified by
+.Fa handle .
+.Pp
+For portability, the starting address of the region specified by
+.Fa handle
+plus the offset should be a multiple of the size of data items being
+written and the data array pointer should be properly aligned.
+On some
+systems, not obeying these requirements may cause incorrect data to be
+written, on others it may cause a system crash.
+.Pp
+Write operations done by the
+.Fn bus_space_set_multi_N
+functions may be executed out of order with respect to other pending
+read and write operations unless order is enforced by use of the
+.Fn bus_space_barrier
+function.
+Because the
+.Fn bus_space_set_multi_N
+functions write the same bus space location multiple times, they
+place an implicit write barrier between each successive write of that
+bus space location.
+.Pp
+These functions will never fail.
+If they would fail (e.g.\& because of an
+argument error), that indicates a software bug which should cause a
+panic.
+In that case, they will never return.
+.Sh STREAM FUNCTIONS
+Most of the
+.Nm
+functions imply a host byte-order and a bus byte-order and take care of
+any translation for the caller.
+In some cases, however, hardware may map a FIFO or some other memory region
+for which the caller may want to use multi-word, yet untranslated access.
+Access to these types of memory regions should be with the
+.Fn bus_space_*_stream_N
+functions.
+.Pp
+.Bl -tag -compact
+.It Fn bus_space_read_stream_1
+.It Fn bus_space_read_stream_2
+.It Fn bus_space_read_stream_4
+.It Fn bus_space_read_stream_8
+.It Fn bus_space_read_multi_stream_1
+.It Fn bus_space_read_multi_stream_2
+.It Fn bus_space_read_multi_stream_4
+.It Fn bus_space_read_multi_stream_8
+.It Fn bus_space_read_region_stream_1
+.It Fn bus_space_read_region_stream_2
+.It Fn bus_space_read_region_stream_4
+.It Fn bus_space_read_region_stream_8
+.It Fn bus_space_write_stream_1
+.It Fn bus_space_write_stream_2
+.It Fn bus_space_write_stream_4
+.It Fn bus_space_write_stream_8
+.It Fn bus_space_write_multi_stream_1
+.It Fn bus_space_write_multi_stream_2
+.It Fn bus_space_write_multi_stream_4
+.It Fn bus_space_write_multi_stream_8
+.It Fn bus_space_write_region_stream_1
+.It Fn bus_space_write_region_stream_2
+.It Fn bus_space_write_region_stream_4
+.It Fn bus_space_write_region_stream_8
+.It Fn bus_space_copy_region_stream_1
+.It Fn bus_space_copy_region_stream_2
+.It Fn bus_space_copy_region_stream_4
+.It Fn bus_space_copy_region_stream_8
+.It Fn bus_space_set_multi_stream_1
+.It Fn bus_space_set_multi_stream_2
+.It Fn bus_space_set_multi_stream_4
+.It Fn bus_space_set_multi_stream_8
+.It Fn bus_space_set_region_stream_1
+.It Fn bus_space_set_region_stream_2
+.It Fn bus_space_set_region_stream_4
+.It Fn bus_space_set_region_stream_8
+.El
+.Pp
+These functions are defined just as their non-stream counterparts,
+except that they provide no byte-order translation.
+.Sh COMPATIBILITY
+The current
+.Nx
+version of the
+.Nm
+interface specification differs slightly from the original
+specification that came into wide use and
+.Fx
+adopted.
+A few of the function names and arguments have changed
+for consistency and increased functionality.
+.Sh SEE ALSO
+.Xr bus_dma 9
+.Sh HISTORY
+The
+.Nm
+functions were introduced in a different form (memory and I/O spaces
+were accessed via different sets of functions) in
+.Nx 1.2 .
+The functions were merged to work on generic
+.Dq spaces
+early in the
+.Nx 1.3
+development cycle, and many drivers were converted to use them.
+This document was written later during the
+.Nx 1.3
+development cycle, and the specification was updated to fix some
+consistency problems and to add some missing functionality.
+.Pp
+The manual page was then adapted to the version of the interface that
+.Fx
+imported for the CAM SCSI drivers, plus subsequent evolution.
+The
+.Fx
+.Nm
+version was imported in
+.Fx 3.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+interfaces were designed and implemented by the
+.Nx
+developer
+community.
+Primary contributors and implementors were
+.An Chris Demetriou ,
+.An Jason Thorpe ,
+and
+.An Charles Hannum ,
+but the rest of the
+.Nx
+developers and the user community played a significant role in development.
+.Pp
+.An Justin Gibbs
+ported these interfaces to
+.Fx .
+.Pp
+.An Chris Demetriou
+wrote this manual page.
+.Pp
+.An Warner Losh
+modified it for the
+.Fx
+implementation.
+.Sh BUGS
+This manual may not completely and accurately document the interface,
+and many parts of the interface are unspecified.
diff --git a/share/man/man9/byteorder.9 b/share/man/man9/byteorder.9
new file mode 100644
index 0000000..f47f609
--- /dev/null
+++ b/share/man/man9/byteorder.9
@@ -0,0 +1,169 @@
+.\" Copyright (c) 2002 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$
+.\"
+.Dd April 29, 2002
+.Dt BYTEORDER 9
+.Os
+.Sh NAME
+.Nm bswap16 , bswap32 , bswap64 ,
+.Nm be16toh , be32toh , be64toh , htobe16 , htobe32 , htobe64 ,
+.Nm htole16 , htole32 , htole64 , le16toh , le32toh , le64toh ,
+.Nm be16enc , be16dec , be32enc , be32dec , be64enc , be64dec ,
+.Nm le16enc , le16dec , le32enc , le32dec , le64enc , le64dec
+.Nd byte order operations
+.Sh SYNOPSIS
+.In sys/endian.h
+.Ft uint16_t
+.Fn bswap16 "uint16_t int16"
+.Ft uint32_t
+.Fn bswap32 "uint32_t int32"
+.Ft uint64_t
+.Fn bswap64 "uint64_t int64"
+.Ft uint16_t
+.Fn be16toh "uint16_t big16"
+.Ft uint32_t
+.Fn be32toh "uint32_t big32"
+.Ft uint64_t
+.Fn be64toh "uint64_t big64"
+.Ft uint16_t
+.Fn htobe16 "uint16_t host16"
+.Ft uint32_t
+.Fn htobe32 "uint32_t host32"
+.Ft uint64_t
+.Fn htobe64 "uint64_t host64"
+.Ft uint16_t
+.Fn htole16 "uint16_t host16"
+.Ft uint32_t
+.Fn htole32 "uint32_t host32"
+.Ft uint64_t
+.Fn htole64 "uint64_t host64"
+.Ft uint16_t
+.Fn le16toh "uint16_t little16"
+.Ft uint32_t
+.Fn le32toh "uint32_t little32"
+.Ft uint64_t
+.Fn le64toh "uint64_t little64"
+.Ft uint16_t
+.Fn be16dec "const void *"
+.Ft uint32_t
+.Fn be32dec "const void *"
+.Ft uint64_t
+.Fn be64dec "const void *"
+.Ft uint16_t
+.Fn le16dec "const void *"
+.Ft uint32_t
+.Fn le32dec "const void *"
+.Ft uint64_t
+.Fn le64dec "const void *"
+.Ft void
+.Fn be16enc "void *" uint16_t
+.Ft void
+.Fn be32enc "void *" uint32_t
+.Ft void
+.Fn be64enc "void *" uint64_t
+.Ft void
+.Fn le16enc "void *" uint16_t
+.Ft void
+.Fn le32enc "void *" uint32_t
+.Ft void
+.Fn le64enc "void *" uint64_t
+.Sh DESCRIPTION
+The
+.Fn bswap16 ,
+.Fn bswap32 ,
+and
+.Fn bswap64
+functions return a byte order swapped integer.
+On big endian systems, the number is converted to little endian byte order.
+On little endian systems, the number is converted to big endian byte order.
+.Pp
+The
+.Fn be16toh ,
+.Fn be32toh ,
+and
+.Fn be64toh
+functions return a big endian byte ordered integer
+converted to the system's native byte order.
+The return value will be the same as the argument on big endian systems.
+.Pp
+The
+.Fn le16toh ,
+.Fn le32toh ,
+and
+.Fn le64toh
+functions return a little endian byte ordered integer
+converted to the system's native byte order.
+The return value will be the same as the argument on little endian systems.
+.Pp
+The
+.Fn htobe16 ,
+.Fn htobe32 ,
+and
+.Fn htobe64
+functions return a integer in the system's native
+byte order converted to big endian byte order.
+The return value will be the same as the argument on big endian systems.
+.Pp
+The
+.Fn htole16 ,
+.Fn htole32 ,
+and
+.Fn htole64
+functions return a integer in the system's native
+byte order converted to little endian byte order.
+The return value will be the same as the argument on little endian systems.
+.Pp
+The
+.Fn be16enc ,
+.Fn be16dec ,
+.Fn be32enc ,
+.Fn be32dec ,
+.Fn be64enc ,
+.Fn be64dec ,
+.Fn le16enc ,
+.Fn le16dec ,
+.Fn le32enc ,
+.Fn le32dec ,
+.Fn le64enc ,
+and
+.Fn le64dec
+functions encode and decode integers to/from byte strings on any alignment
+in big/little endian format.
+.Sh SEE ALSO
+.Xr byteorder 3
+.Sh HISTORY
+The
+.Fn hto*
+and
+.Fn toh*
+functions first appeared in
+.Fx 5.0 ,
+and were originally developed by the
+.Nx
+project.
+.Pp
+The encode/decode functions first appeared in
+.Fx 5.1 .
diff --git a/share/man/man9/cd.9 b/share/man/man9/cd.9
new file mode 100644
index 0000000..59f796d
--- /dev/null
+++ b/share/man/man9/cd.9
@@ -0,0 +1,126 @@
+.\" Copyright (c) 1997
+.\" John-Mark Gurney. 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. 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 John-Mark Gurney 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$
+.\"
+.Dd September 2, 2003
+.Dt CD 9
+.Os
+.Sh NAME
+.Nm cd
+.Nd CDROM driver for the CAM SCSI subsystem
+.Sh DESCRIPTION
+The
+.Nm
+device driver provides a read only interface for CDROM drives
+.Tn ( SCSI
+type 5)
+and WORM drives
+.Tn ( SCSI
+type 4)
+that support CDROM type commands.
+Some drives do not behave as the driver expects.
+See the
+.Sx QUIRKS
+section for information on possible flags.
+.Sh QUIRKS
+Each
+.Tn CD-ROM
+device can have different interpretations of the
+.Tn SCSI
+spec.
+This can lead to drives requiring special handling in the driver.
+The following is a list of quirks that the driver recognize.
+.Bl -tag -width CD_Q_BCD_TRACKS
+.It Dv CD_Q_NO_TOUCH
+This flag tell the driver not to probe the drive at attach time to see if
+there is a disk in the drive and find out what size it is.
+This flag is currently unimplemented in the CAM
+.Nm
+driver.
+.It Dv CD_Q_BCD_TRACKS
+This flag is for broken drives that return the track numbers in packed BCD
+instead of straight decimal.
+If the drive seems to skip tracks
+(tracks 10-15 are skipped)
+then you have a drive that is in need of this flag.
+.It Dv CD_Q_NO_CHANGER
+This flag tells the driver that the device in question is not a changer.
+This is only necessary for a CDROM device with multiple luns that are not a
+part of a changer.
+.It Dv CD_Q_CHANGER
+This flag tells the driver that the given device is a multi-lun changer.
+In general, the driver will figure this out automatically when it sees a
+LUN greater than 0.
+Setting this flag only has the effect of telling the
+driver to run the initial read capacity command for LUN 0 of the changer
+through the changer scheduling code.
+.It Dv CD_Q_10_BYTE_ONLY
+This flag tells the driver that the given device only accepts 10 byte MODE
+SENSE/MODE SELECT commands.
+In general these types of quirks should not be
+added to the
+.Xr cd 4
+driver.
+The reason is that the driver does several things to attempt to
+determine whether the drive in question needs 10 byte commands.
+First, it
+issues a CAM Path Inquiry command to determine whether the protocol that
+the drive speaks typically only allows 10 byte commands.
+(ATAPI and USB
+are two prominent examples of protocols where you generally only want to
+send 10 byte commands.)
+Then, if it gets an ILLEGAL REQUEST error back
+from a 6 byte MODE SENSE or MODE SELECT command, it attempts to send the 10
+byte version of the command instead.
+The only reason you would need a
+quirk is if your drive uses a protocol (e.g.,
+.Tn SCSI )
+that typically does not have a problem with 6 byte commands.
+.El
+.Sh FILES
+.Bl -tag -width /sys/cam/scsi/scsi_cd.c -compact
+.It Pa /sys/cam/scsi/scsi_cd.c
+is the driver source file.
+.El
+.Sh SEE ALSO
+.Xr cd 4 ,
+.Xr scsi 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 2.2 .
+.Sh AUTHORS
+.An -nosplit
+This
+manual page was written by
+.An John-Mark Gurney Aq gurney_j@efn.org .
+It was updated for CAM and
+.Fx 3.0
+by
+.An Kenneth Merry Aq ken@FreeBSD.org .
diff --git a/share/man/man9/condvar.9 b/share/man/man9/condvar.9
new file mode 100644
index 0000000..db3eab1
--- /dev/null
+++ b/share/man/man9/condvar.9
@@ -0,0 +1,233 @@
+.\"
+.\" Copyright (C) 2000 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 5, 2007
+.Dt CONDVAR 9
+.Os
+.Sh NAME
+.Nm condvar ,
+.Nm cv_init ,
+.Nm cv_destroy ,
+.Nm cv_wait ,
+.Nm cv_wait_sig ,
+.Nm cv_wait_unlock ,
+.Nm cv_timedwait ,
+.Nm cv_timedwait_sig ,
+.Nm cv_signal ,
+.Nm cv_broadcast ,
+.Nm cv_broadcastpri ,
+.Nm cv_wmesg
+.Nd kernel condition variable
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.In sys/condvar.h
+.Ft void
+.Fn cv_init "struct cv *cvp" "const char *desc"
+.Ft void
+.Fn cv_destroy "struct cv *cvp"
+.Ft void
+.Fn cv_wait "struct cv *cvp" "lock"
+.Ft int
+.Fn cv_wait_sig "struct cv *cvp" "lock"
+.Ft void
+.Fn cv_wait_unlock "struct cv *cvp" "lock"
+.Ft int
+.Fn cv_timedwait "struct cv *cvp" "lock" "int timo"
+.Ft int
+.Fn cv_timedwait_sig "struct cv *cvp" "lock" "int timo"
+.Ft void
+.Fn cv_signal "struct cv *cvp"
+.Ft void
+.Fn cv_broadcast "struct cv *cvp"
+.Ft void
+.Fn cv_broadcastpri "struct cv *cvp" "int pri"
+.Ft const char *
+.Fn cv_wmesg "struct cv *cvp"
+.Sh DESCRIPTION
+Condition variables are used in conjunction with mutexes to wait for conditions
+to occur.
+Condition variables are created with
+.Fn cv_init ,
+where
+.Fa cvp
+is a pointer to space for a
+.Vt struct cv ,
+and
+.Fa desc
+is a pointer to a null-terminated character string that describes the condition
+variable.
+Condition variables are destroyed with
+.Fn cv_destroy .
+Threads wait on condition variables by calling
+.Fn cv_wait ,
+.Fn cv_wait_sig ,
+.Fn cv_wait_unlock ,
+.Fn cv_timedwait ,
+or
+.Fn cv_timedwait_sig .
+Threads unblock waiters by calling
+.Fn cv_signal
+to unblock one waiter, or
+.Fn cv_broadcast
+or
+.Fn cv_broadcastpri
+to unblock all waiters.
+In addition to waking waiters,
+.Fn cv_broadcastpri
+ensures that all of the waiters have a priority of at least
+.Fa pri
+by raising the priority of any threads that do not.
+.Fn cv_wmesg
+returns the description string of
+.Fa cvp ,
+as set by the initial call to
+.Fn cv_init .
+.Pp
+The
+.Fa lock
+argument is a pointer to either a
+.Xr mutex 9 ,
+.Xr rwlock 9 ,
+or
+.Xr sx 9
+lock.
+A
+.Xr mutex 9
+argument must be initialized with
+.Dv MTX_DEF
+and not
+.Dv MTX_SPIN .
+A thread must hold
+.Fa lock
+before calling
+.Fn cv_wait ,
+.Fn cv_wait_sig ,
+.Fn cv_wait_unlock ,
+.Fn cv_timedwait ,
+or
+.Fn cv_timedwait_sig .
+When a thread waits on a condition,
+.Fa lock
+is atomically released before the thread is blocked, then reacquired
+before the function call returns.
+In addition, the thread will fully drop the
+.Va Giant
+mutex
+(even if recursed)
+while the it is suspended and will reacquire the
+.Va Giant
+mutex before the function returns.
+The
+.Fn cv_wait_unlock
+function does not reacquire the lock before returning.
+Note that the
+.Va Giant
+mutex may be specified as
+.Fa lock .
+However,
+.Va Giant
+may not be used as
+.Fa lock
+for the
+.Fn cv_wait_unlock
+function.
+All waiters must pass the same
+.Fa lock
+in conjunction with
+.Fa cvp .
+.Pp
+When
+.Fn cv_wait ,
+.Fn cv_wait_sig ,
+.Fn cv_wait_unlock ,
+.Fn cv_timedwait ,
+and
+.Fn cv_timedwait_sig
+unblock, their calling threads are made runnable.
+.Fn cv_timedwait
+and
+.Fn cv_timedwait_sig
+wait for at most
+.Fa timo
+/
+.Dv HZ
+seconds before being unblocked and returning
+.Er EWOULDBLOCK ;
+otherwise, they return 0.
+.Fn cv_wait_sig
+and
+.Fn cv_timedwait_sig
+return prematurely with a value of
+.Er EINTR
+or
+.Er ERESTART
+if a signal is caught, or 0 if signaled via
+.Fn cv_signal
+or
+.Fn cv_broadcast .
+.Sh RETURN VALUES
+If successful,
+.Fn cv_wait_sig ,
+.Fn cv_timedwait ,
+and
+.Fn cv_timedwait_sig
+return 0.
+Otherwise, a non-zero error code is returned.
+.Pp
+.Fn cv_wmesg
+returns the description string that was passed to
+.Fn cv_init .
+.Sh ERRORS
+.Fn cv_wait_sig
+and
+.Fn cv_timedwait_sig
+will fail if:
+.Bl -tag -width Er
+.It Bq Er EINTR
+A signal was caught and the system call should be interrupted.
+.It Bq Er ERESTART
+A signal was caught and the system call should be restarted.
+.El
+.Pp
+.Fn cv_timedwait
+and
+.Fn cv_timedwait_sig
+will fail if:
+.Bl -tag -width Er
+.It Bq Er EWOULDBLOCK
+Timeout expired.
+.El
+.Sh SEE ALSO
+.Xr locking 9 ,
+.Xr mtx_pool 9 ,
+.Xr mutex 9 ,
+.Xr rwlock 9 ,
+.Xr sema 9 ,
+.Xr sleep 9 ,
+.Xr sx 9
diff --git a/share/man/man9/config_intrhook.9 b/share/man/man9/config_intrhook.9
new file mode 100644
index 0000000..083a2a2
--- /dev/null
+++ b/share/man/man9/config_intrhook.9
@@ -0,0 +1,105 @@
+.\"
+.\" Copyright (C) 2006 M. Warner Losh <imp@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 24, 2006
+.Dt CONFIG_INTRHOOK 9
+.Os
+.Sh NAME
+.Nm config_intrhook
+.Nd schedule a function to be run after interrupts have been enabled,
+but before root is mounted
+.Sh SYNOPSIS
+.In sys/kernel.h
+.Ft int
+.Fn config_intrhook_establish "struct intr_config_hook *hook"
+.Ft void
+.Fn config_intrhook_disestablish "struct intr_config_hook *hook"
+.Sh DESCRIPTION
+The
+.Fn config_intrhook_establish
+function schedules a function to be run after interrupts have been
+enabled, but before root is mounted.
+If the system has already passed this point in its initialization,
+the function is called immediately.
+.Pp
+The
+.Fn config_intrhook_disestablish
+function removes the entry from the hook queue.
+.Pp
+Before root is mounted, all the previously established hooks are
+run.
+The boot process is then stalled until all handlers remove their hook
+from the hook queue with
+.Fn config_intrhook_disestablish .
+The boot process then proceeds to attempt to mount the root file
+system.
+Any driver that can potentially provide devices they wish to be
+mounted as root must use either this hook, or probe all these devices
+in the initial probe.
+Since interrupts are disabled during the probe process, many drivers
+need a method to probe for devices with interrupts enabled.
+.Pp
+The requests are made with the
+.Vt intr_config_hook
+structure.
+This structure is defined as follows:
+.Bd -literal
+struct intr_config_hook {
+ TAILQ_ENTRY(intr_config_hook) ich_links;/* Private */
+ void (*ich_func)(void *arg); /* function to call */
+ void *ich_arg; /* Argument to call */
+};
+.Ed
+.Pp
+Storage for the
+.Vt intr_config_hook
+structure must be provided by the driver.
+It must be stable from just before the hook is established until
+after the hook is disestablished.
+.Pp
+Specifically, hooks are run at
+.Fn SI_SUB_INT_CONFIG_HOOKS ,
+which is immediately after the scheduler is started,
+and just before the root file system device is discovered.
+.Sh RETURN VALUES
+A zero return value means the hook was successfully added to the queue
+(with either deferred or immediate execution).
+A non-zero return value means the hook could not be added to the queue
+because it was already on the queue.
+.Sh SEE ALSO
+.Xr DEVICE_ATTACH 9
+.Sh HISTORY
+These functions were introduced in
+.Fx 3.0
+with the CAM subsystem, but are available for any driver to use.
+.Sh AUTHORS
+.An -nosplit
+The functions were written by
+.An Justin Gibbs Aq gibbs@FreeBSD.org .
+This manual page was written by
+.An M. Warner Losh Aq imp@FreeBSD.org .
diff --git a/share/man/man9/contigmalloc.9 b/share/man/man9/contigmalloc.9
new file mode 100644
index 0000000..f0797be
--- /dev/null
+++ b/share/man/man9/contigmalloc.9
@@ -0,0 +1,132 @@
+.\"
+.\" Copyright (c) 2004 Joseph Koshy
+.\" 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$
+.\"
+.Dd July 19, 2007
+.Dt CONTIGMALLOC 9
+.Os
+.Sh NAME
+.Nm contigmalloc , contigfree
+.Nd manage contiguous kernel physical memory
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/malloc.h
+.Ft "void *"
+.Fo contigmalloc
+.Fa "unsigned long size"
+.Fa "struct malloc_type *type"
+.Fa "int flags"
+.Fa "vm_paddr_t low"
+.Fa "vm_paddr_t high"
+.Fa "unsigned long alignment"
+.Fa "unsigned long boundary"
+.Fc
+.Ft void
+.Fo contigfree
+.Fa "void *addr"
+.Fa "unsigned long size"
+.Fa "struct malloc_type *type"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn contigmalloc
+function allocates
+.Fa size
+bytes of contiguous physical memory that is aligned to
+.Fa alignment
+bytes, and which does not cross a boundary of
+.Fa boundary
+bytes.
+If successful, the allocation will reside between physical addresses
+.Fa low
+and
+.Fa high .
+The returned pointer points to a wired kernel virtual
+address range of
+.Fa size
+bytes allocated from the kernel virtual address (KVA) map.
+.Pp
+The
+.Fa flags
+parameter modifies
+.Fn contigmalloc Ns 's
+behaviour as follows:
+.Bl -tag -width indent
+.It Dv M_ZERO
+Causes the allocated physical memory to be zero filled.
+.It Dv M_NOWAIT
+Causes
+.Fn contigmalloc
+to return
+.Dv NULL
+if the request cannot be immediately fulfilled due to resource shortage.
+.El
+.Pp
+Other flags (if present) are ignored.
+.Pp
+The
+.Fn contigfree
+function deallocates memory allocated by a previous call to
+.Fn contigmalloc .
+.Sh IMPLEMENTATION NOTES
+The
+.Fn contigmalloc
+function does not sleep waiting for memory resources to be freed up,
+but instead actively reclaims pages before giving up.
+However, unless
+.Dv M_NOWAIT
+is specified, it may select a page for reclamation that must first be
+written to backing storage, causing it to sleep.
+.Sh RETURN VALUES
+The
+.Fn contigmalloc
+function returns a kernel virtual address if allocation succeeds,
+or
+.Dv NULL
+otherwise.
+.Sh EXAMPLES
+.Bd -literal
+void *p;
+p = contigmalloc(8192, M_DEVBUF, M_ZERO, 0, (1L << 22),
+ 32 * 1024, 1024 * 1024);
+.Ed
+.Pp
+Ask for 8192 bytes of zero-filled memory residing between physical
+address 0 and 4194303 inclusive, aligned to a 32K boundary and not
+crossing a 1M address boundary.
+.Sh DIAGNOSTICS
+The
+.Fn contigmalloc
+function will panic if
+.Fa size
+is zero, or if
+.Fa alignment
+or
+.Fa boundary
+is not a power of two.
+.Sh SEE ALSO
+.Xr malloc 9 ,
+.Xr memguard 9
diff --git a/share/man/man9/copy.9 b/share/man/man9/copy.9
new file mode 100644
index 0000000..b6b975f
--- /dev/null
+++ b/share/man/man9/copy.9
@@ -0,0 +1,145 @@
+.\" $NetBSD: copy.9,v 1.2 1996/01/09 03:23:04 thorpej Exp $
+.\"
+.\" Copyright (c) 1996 Jason R. Thorpe.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed by Kenneth Stailey.
+.\"
+.\" 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
+.\" by Jason R. Thorpe.
+.\" 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$
+.\"
+.Dd January 7, 1996
+.Dt COPY 9
+.Os
+.Sh NAME
+.Nm copy ,
+.Nm copyin ,
+.Nm copyout ,
+.Nm copystr ,
+.Nm copyinstr
+.Nd kernel copy functions
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft int
+.Fn copyin "const void *uaddr" "void *kaddr" "size_t len"
+.Ft int
+.Fn copyout "const void *kaddr" "void *uaddr" "size_t len"
+.Ft int
+.Fn copystr "const void *kfaddr" "void *kdaddr" "size_t len" "size_t *done"
+.Ft int
+.Fn copyinstr "const void *uaddr" "void *kaddr" "size_t len" "size_t *done"
+.\" .Ft int
+.\" .Fn copyoutstr "const void *kaddr" "void *uaddr" "size_t len" "size_t *done"
+.Sh DESCRIPTION
+The
+.Nm
+functions are designed to copy contiguous data from one address
+to another.
+All but
+.Fn copystr
+copy data from user-space to kernel-space or vice-versa.
+.Pp
+The
+.Nm
+routines provide the following functionality:
+.Bl -tag -width "copyoutstr()"
+.It Fn copyin
+Copies
+.Fa len
+bytes of data from the user-space address
+.Fa uaddr
+to the kernel-space address
+.Fa kaddr .
+.It Fn copyout
+Copies
+.Fa len
+bytes of data from the kernel-space address
+.Fa kaddr
+to the user-space address
+.Fa uaddr .
+.It Fn copystr
+Copies a NUL-terminated string, at most
+.Fa len
+bytes long, from kernel-space address
+.Fa kfaddr
+to kernel-space address
+.Fa kdaddr .
+The number of bytes actually copied, including the terminating
+NUL, is returned in
+.Fa *done
+(if
+.Fa done
+is
+.No non- Ns Dv NULL ) .
+.It Fn copyinstr
+Copies a NUL-terminated string, at most
+.Fa len
+bytes long, from user-space address
+.Fa uaddr
+to kernel-space address
+.Fa kaddr .
+The number of bytes actually copied, including the terminating
+NUL, is returned in
+.Fa *done
+(if
+.Fa done
+is
+.No non- Ns Dv NULL ) .
+.\" .It Fn copyoutstr
+.\" Copies a NUL-terminated string, at most
+.\" bytes long, from kernel-space address
+.\" .Fa kaddr
+.\" to user-space address
+.\" .Fa uaddr .
+.\" The number of bytes actually copied, including the terminating
+.\" NUL, is returned in
+.\" .Fa *done .
+.El
+.Sh RETURN VALUES
+The
+.Nm
+functions return 0 on success or
+.Er EFAULT
+if a bad address is encountered.
+In addition, the
+.Fn copystr ,
+and
+.Fn copyinstr
+.\" .Fn copyinstr ,
+.\" and
+.\" .Fn copyoutstr
+functions return
+.Er ENAMETOOLONG
+if the string is longer than
+.Fa len
+bytes.
+.Sh SEE ALSO
+.Xr fetch 9 ,
+.Xr store 9
diff --git a/share/man/man9/cr_cansee.9 b/share/man/man9/cr_cansee.9
new file mode 100644
index 0000000..53823c1
--- /dev/null
+++ b/share/man/man9/cr_cansee.9
@@ -0,0 +1,92 @@
+.\"
+.\" Copyright (c) 2006 Ceri Davies <ceri@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 19, 2006
+.Os
+.Dt CR_CANSEE 9
+.Sh NAME
+.Nm cr_cansee
+.Nd "determine visibility of objects given their user credentials"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/ucred.h
+.Ft int
+.Fn cr_cansee "struct ucred *u1" "struct ucred *u2"
+.Sh DESCRIPTION
+This function determines the visibility of objects in the
+kernel based on the real user IDs and group IDs in the credentials
+.Fa u1
+and
+.Fa u2
+associated with them.
+.Pp
+The visibility of objects is influenced by the
+.Xr sysctl 8
+variables
+.Va security.bsd.see_other_gids
+and
+.Va security.bsd.see_other_uids ,
+as per the description in
+.Xr cr_seeothergids 9
+and
+.Xr cr_seeotheruids 9
+respectively.
+.Sh RETURN VALUES
+This function returns zero if the object with credential
+.Fa u1
+can
+.Dq see
+the object with credential
+.Fa u2 ,
+or
+.Er ESRCH
+otherwise.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ESRCH
+The object with credential
+.Fa u1
+cannot
+.Dq see
+the object with credential
+.Fa u2 .
+.It Bq Er ESRCH
+The object with credential
+.Fa u1
+has been jailed and the object with credential
+.Fa u2
+does not belong to the same jail as
+.Fa u1 .
+.It Bq Er ESRCH
+The MAC subsystem denied visibility.
+.El
+.Sh SEE ALSO
+.Xr cr_seeothergids 9 ,
+.Xr cr_seeotheruids 9 ,
+.Xr mac 9 ,
+.Xr p_cansee 9
diff --git a/share/man/man9/cr_seeothergids.9 b/share/man/man9/cr_seeothergids.9
new file mode 100644
index 0000000..1f5f4ee
--- /dev/null
+++ b/share/man/man9/cr_seeothergids.9
@@ -0,0 +1,82 @@
+.\"
+.\" Copyright (c) 2003 Joseph Koshy <jkoshy@freebsd.org>
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 11, 2003
+.Os
+.Dt CR_SEEOTHERGIDS 9
+.Sh NAME
+.Nm cr_seeothergids
+.Nd determine visibility of objects given their group memberships
+.Sh SYNOPSIS
+.Ft int
+.Fn cr_seeothergids "struct ucred *u1" "struct ucred *u2"
+.Sh DESCRIPTION
+This function determines the visibility of objects in the
+kernel based on the group IDs in the credentials
+.Fa u1
+and
+.Fa u2
+associated with them.
+.Pp
+The visibility of objects is influenced by the
+.Xr sysctl 8
+variable
+.Va security.bsd.see_other_gids .
+If this variable is non-zero then all objects in the kernel
+are visible to each other irrespective of their group membership.
+If this variable is zero then the object with credentials
+.Fa u2
+is visible to the object with credentials
+.Fa u1
+if either
+.Fa u1
+is the super-user credential, or if at least one of
+.Fa u1 Ns 's
+group IDs is present in
+.Fa u2 Ns 's
+group set.
+.Sh SYSCTL VARIABLES
+.Bl -tag -width indent
+.It Va security.bsd.see_other_gids
+Must be non-zero if objects with unprivileged credentials are to be
+able to see each other.
+.El
+.Sh RETURN VALUES
+This function returns zero if the object with credential
+.Fa u1
+can
+.Dq see
+the object with credential
+.Fa u2 ,
+or
+.Er ESRCH
+otherwise.
+.Sh SEE ALSO
+.Xr cr_seeotheruids 9 ,
+.Xr p_candebug 9
diff --git a/share/man/man9/cr_seeotheruids.9 b/share/man/man9/cr_seeotheruids.9
new file mode 100644
index 0000000..e79363f
--- /dev/null
+++ b/share/man/man9/cr_seeotheruids.9
@@ -0,0 +1,82 @@
+.\"
+.\" Copyright (c) 2003 Joseph Koshy <jkoshy@freebsd.org>
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 11, 2003
+.Os
+.Dt CR_SEEOTHERUIDS 9
+.Sh NAME
+.Nm cr_seeotheruids
+.Nd determine visibility of objects given their user credentials
+.Sh SYNOPSIS
+.Ft int
+.Fn cr_seeotheruids "struct ucred *u1" "struct ucred *u2"
+.Sh DESCRIPTION
+This function determines the visibility of objects in the
+kernel based on the real user IDs in the credentials
+.Fa u1
+and
+.Fa u2
+associated with them.
+.Pp
+The visibility of objects is influenced by the
+.Xr sysctl 8
+variable
+.Va security.bsd.see_other_uids .
+If this variable is non-zero then all objects in the kernel
+are visible to each other irrespective of their user IDs.
+If this variable is zero then the object with credentials
+.Fa u2
+is visible to the object with credentials
+.Fa u1
+if either
+.Fa u1
+is the super-user credential, or if
+.Fa u1
+and
+.Fa u2
+have the same real user ID.
+.Sh SYSCTL VARIABLES
+.Bl -tag -width indent
+.It Va security.bsd.see_other_uids
+Must be non-zero if objects with unprivileged credentials are to be
+able to see each other.
+.El
+.Sh RETURN VALUES
+This function returns zero if the object with credential
+.Fa u1
+can
+.Dq see
+the object with credential
+.Fa u2 ,
+or
+.Er ESRCH
+otherwise.
+.Sh SEE ALSO
+.Xr cr_seeothergids 9 ,
+.Xr p_candebug 9
diff --git a/share/man/man9/critical_enter.9 b/share/man/man9/critical_enter.9
new file mode 100644
index 0000000..a1d63fc
--- /dev/null
+++ b/share/man/man9/critical_enter.9
@@ -0,0 +1,74 @@
+.\" Copyright (c) 2001,2002 John H. Baldwin <jhb@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$
+.\"
+.Dd October 5, 2005
+.Dt CRITICAL_ENTER 9
+.Os
+.Sh NAME
+.Nm critical_enter ,
+.Nm critical_exit
+.Nd enter and exit a critical region
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.Ft void
+.Fn critical_enter "void"
+.Ft void
+.Fn critical_exit "void"
+.Sh DESCRIPTION
+These functions are used to prevent preemption in a critical region of code.
+All that is guaranteed is that the thread currently executing on a CPU will
+not be preempted.
+Specifically, a thread in a critical region will not migrate to another
+CPU while it is in a critical region.
+The current CPU may still trigger faults and exceptions during a critical
+section; however, these faults are usually fatal.
+.Pp
+The
+.Fn critical_enter
+and
+.Fn critical_exit
+functions manage a per-thread counter to handle nested critical sections.
+If a thread is made runnable that would normally preempt the current thread
+while the current thread is in a critical section,
+then the preemption will be deferred until the current thread exits the
+outermost critical section.
+.Pp
+Note that these functions are not required to provide any inter-CPU
+synchronization, data protection, or memory ordering guarantees and thus
+should
+.Em not
+be used to protect shared data structures.
+.Pp
+These functions should be used with care as an infinite loop within a
+critical region will deadlock the CPU.
+Also, they should not be interlocked with operations on mutexes, sx locks,
+semaphores, or other synchronization primitives.
+One exception to this is that spin mutexes include a critical section,
+so in certain cases critical sections may be interlocked with spin mutexes.
+.Sh HISTORY
+These functions were introduced in
+.Fx 5.0 .
diff --git a/share/man/man9/crypto.9 b/share/man/man9/crypto.9
new file mode 100644
index 0000000..ed2a0cf
--- /dev/null
+++ b/share/man/man9/crypto.9
@@ -0,0 +1,665 @@
+.\" $OpenBSD: crypto.9,v 1.19 2002/07/16 06:31:57 angelos Exp $
+.\"
+.\" The author of this manual page is Angelos D. Keromytis (angelos@cis.upenn.edu)
+.\"
+.\" Copyright (c) 2000, 2001 Angelos D. Keromytis
+.\"
+.\" Permission to use, copy, and modify this software with or without fee
+.\" is hereby granted, provided that this entire notice is included in
+.\" all source code copies of any software which is or includes a copy or
+.\" modification of this software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
+.\" REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
+.\" MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
+.\" PURPOSE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 19, 2007
+.Dt CRYPTO 9
+.Os
+.Sh NAME
+.Nm crypto
+.Nd API for cryptographic services in the kernel
+.Sh SYNOPSIS
+.In opencrypto/cryptodev.h
+.Ft int32_t
+.Fn crypto_get_driverid u_int8_t
+.Ft int
+.Fn crypto_register u_int32_t int u_int16_t u_int32_t "int \*[lp]*\*[rp]\*[lp]void *, u_int32_t *, struct cryptoini *\*[rp]" "int \*[lp]*\*[rp]\*[lp]void *, u_int64_t\*[rp]" "int \*[lp]*\*[rp]\*[lp]void *, struct cryptop *\*[rp]" "void *"
+.Ft int
+.Fn crypto_kregister u_int32_t int u_int32_t "int \*[lp]*\*[rp]\*[lp]void *, struct cryptkop *\*[rp]" "void *"
+.Ft int
+.Fn crypto_unregister u_int32_t int
+.Ft int
+.Fn crypto_unregister_all u_int32_t
+.Ft void
+.Fn crypto_done "struct cryptop *"
+.Ft void
+.Fn crypto_kdone "struct cryptkop *"
+.Ft int
+.Fn crypto_newsession "u_int64_t *" "struct cryptoini *" int
+.Ft int
+.Fn crypto_freesession u_int64_t
+.Ft int
+.Fn crypto_dispatch "struct cryptop *"
+.Ft int
+.Fn crypto_kdispatch "struct cryptkop *"
+.Ft int
+.Fn crypto_unblock u_int32_t int
+.Ft "struct cryptop *"
+.Fn crypto_getreq int
+.Ft void
+.Fn crypto_freereq void
+.Bd -literal
+#define CRYPTO_SYMQ 0x1
+#define CRYPTO_ASYMQ 0x2
+
+#define EALG_MAX_BLOCK_LEN 16
+
+struct cryptoini {
+ int cri_alg;
+ int cri_klen;
+ int cri_mlen;
+ caddr_t cri_key;
+ u_int8_t cri_iv[EALG_MAX_BLOCK_LEN];
+ struct cryptoini *cri_next;
+};
+
+struct cryptodesc {
+ int crd_skip;
+ int crd_len;
+ int crd_inject;
+ int crd_flags;
+ struct cryptoini CRD_INI;
+#define crd_iv CRD_INI.cri_iv
+#define crd_key CRD_INI.cri_key
+#define crd_alg CRD_INI.cri_alg
+#define crd_klen CRD_INI.cri_klen
+ struct cryptodesc *crd_next;
+};
+
+struct cryptop {
+ TAILQ_ENTRY(cryptop) crp_next;
+ u_int64_t crp_sid;
+ int crp_ilen;
+ int crp_olen;
+ int crp_etype;
+ int crp_flags;
+ caddr_t crp_buf;
+ caddr_t crp_opaque;
+ struct cryptodesc *crp_desc;
+ int (*crp_callback) (struct cryptop *);
+ caddr_t crp_mac;
+};
+
+struct crparam {
+ caddr_t crp_p;
+ u_int crp_nbits;
+};
+
+#define CRK_MAXPARAM 8
+
+struct cryptkop {
+ TAILQ_ENTRY(cryptkop) krp_next;
+ u_int krp_op; /* ie. CRK_MOD_EXP or other */
+ u_int krp_status; /* return status */
+ u_short krp_iparams; /* # of input parameters */
+ u_short krp_oparams; /* # of output parameters */
+ u_int32_t krp_hid;
+ struct crparam krp_param[CRK_MAXPARAM];
+ int (*krp_callback)(struct cryptkop *);
+};
+.Ed
+.Sh DESCRIPTION
+.Nm
+is a framework for drivers of cryptographic hardware to register with
+the kernel so
+.Dq consumers
+(other kernel subsystems, and
+users through the
+.Pa /dev/crypto
+device) are able to make use of it.
+Drivers register with the framework the algorithms they support,
+and provide entry points (functions) the framework may call to
+establish, use, and tear down sessions.
+Sessions are used to cache cryptographic information in a particular driver
+(or associated hardware), so initialization is not needed with every request.
+Consumers of cryptographic services pass a set of
+descriptors that instruct the framework (and the drivers registered
+with it) of the operations that should be applied on the data (more
+than one cryptographic operation can be requested).
+.Pp
+Keying operations are supported as well.
+Unlike the symmetric operators described above,
+these sessionless commands perform mathematical operations using
+input and output parameters.
+.Pp
+Since the consumers may not be associated with a process, drivers may
+not
+.Xr sleep 9 .
+The same holds for the framework.
+Thus, a callback mechanism is used
+to notify a consumer that a request has been completed (the
+callback is specified by the consumer on an per-request basis).
+The callback is invoked by the framework whether the request was
+successfully completed or not.
+An error indication is provided in the latter case.
+A specific error code,
+.Er EAGAIN ,
+is used to indicate that a session number has changed and that the
+request may be re-submitted immediately with the new session number.
+Errors are only returned to the invoking function if not
+enough information to call the callback is available (meaning, there
+was a fatal error in verifying the arguments).
+For session initialization and teardown there is no callback mechanism used.
+.Pp
+The
+.Fn crypto_newsession
+routine is called by consumers of cryptographic services (such as the
+.Xr ipsec 4
+stack) that wish to establish a new session with the framework.
+On success, the first argument will contain the Session Identifier (SID).
+The second argument contains all the necessary information for
+the driver to establish the session.
+The third argument indicates whether a
+hardware driver (1) should be used or not (0).
+The various fields in the
+.Vt cryptoini
+structure are:
+.Bl -tag -width ".Va cri_next"
+.It Va cri_alg
+Contains an algorithm identifier.
+Currently supported algorithms are:
+.Pp
+.Bl -tag -width ".Dv CRYPTO_RIPEMD160_HMAC" -compact
+.It Dv CRYPTO_AES_CBC
+.It Dv CRYPTO_ARC4
+.It Dv CRYPTO_BLF_CBC
+.It Dv CRYPTO_CAMELLIA_CBC
+.It Dv CRYPTO_CAST_CBC
+.It Dv CRYPTO_DES_CBC
+.It Dv CRYPTO_3DES_CBC
+.It Dv CRYPTO_SKIPJACK_CBC
+.It Dv CRYPTO_MD5
+.It Dv CRYPTO_MD5_HMAC
+.It Dv CRYPTO_MD5_KPDK
+.It Dv CRYPTO_RIPEMD160_HMAC
+.It Dv CRYPTO_SHA1
+.It Dv CRYPTO_SHA1_HMAC
+.It Dv CRYPTO_SHA1_KPDK
+.It Dv CRYPTO_SHA2_256_HMAC
+.It Dv CRYPTO_SHA2_384_HMAC
+.It Dv CRYPTO_SHA2_512_HMAC
+.It Dv CRYPTO_NULL_HMAC
+.It Dv CRYPTO_NULL_CBC
+.El
+.It Va cri_klen
+Specifies the length of the key in bits, for variable-size key
+algorithms.
+.It Va cri_mlen
+Specifies how many bytes from the calculated hash should be copied back.
+0 means entire hash.
+.It Va cri_key
+Contains the key to be used with the algorithm.
+.It Va cri_iv
+Contains an explicit initialization vector (IV), if it does not prefix
+the data.
+This field is ignored during initialization.
+If no IV is explicitly passed (see below on details), a random IV is used
+by the device driver processing the request.
+.It Va cri_next
+Contains a pointer to another
+.Vt cryptoini
+structure.
+Multiple such structures may be linked to establish multi-algorithm sessions
+.Xr ( ipsec 4
+is an example consumer of such a feature).
+.El
+.Pp
+The
+.Vt cryptoini
+structure and its contents will not be modified by the framework (or
+the drivers used).
+Subsequent requests for processing that use the
+SID returned will avoid the cost of re-initializing the hardware (in
+essence, SID acts as an index in the session cache of the driver).
+.Pp
+.Fn crypto_freesession
+is called with the SID returned by
+.Fn crypto_newsession
+to disestablish the session.
+.Pp
+.Fn crypto_dispatch
+is called to process a request.
+The various fields in the
+.Vt cryptop
+structure are:
+.Bl -tag -width ".Va crp_callback"
+.It Va crp_sid
+Contains the SID.
+.It Va crp_ilen
+Indicates the total length in bytes of the buffer to be processed.
+.It Va crp_olen
+On return, contains the total length of the result.
+For symmetric crypto operations, this will be the same as the input length.
+This will be used if the framework needs to allocate a new
+buffer for the result (or for re-formatting the input).
+.It Va crp_callback
+This routine is invoked upon completion of the request, whether
+successful or not.
+It is invoked through the
+.Fn crypto_done
+routine.
+If the request was not successful, an error code is set in the
+.Va crp_etype
+field.
+It is the responsibility of the callback routine to set the appropriate
+.Xr spl 9
+level.
+.It Va crp_etype
+Contains the error type, if any errors were encountered, or zero if
+the request was successfully processed.
+If the
+.Er EAGAIN
+error code is returned, the SID has changed (and has been recorded in the
+.Va crp_sid
+field).
+The consumer should record the new SID and use it in all subsequent requests.
+In this case, the request may be re-submitted immediately.
+This mechanism is used by the framework to perform
+session migration (move a session from one driver to another, because
+of availability, performance, or other considerations).
+.Pp
+Note that this field only makes sense when examined by
+the callback routine specified in
+.Va crp_callback .
+Errors are returned to the invoker of
+.Fn crypto_process
+only when enough information is not present to call the callback
+routine (i.e., if the pointer passed is
+.Dv NULL
+or if no callback routine was specified).
+.It Va crp_flags
+Is a bitmask of flags associated with this request.
+Currently defined flags are:
+.Bl -tag -width ".Dv CRYPTO_F_CBIFSYNC"
+.It Dv CRYPTO_F_IMBUF
+The buffer pointed to by
+.Va crp_buf
+is an mbuf chain.
+.It Dv CRYPTO_F_IOV
+The buffer pointed to by
+.Va crp_buf
+is an
+.Vt uio
+structure.
+.It Dv CRYPTO_F_REL
+Must return data in the same place.
+.It Dv CRYPTO_F_BATCH
+Batch operation if possible.
+.It Dv CRYPTO_F_CBIMM
+Do callback immediately instead of doing it from a dedicated kernel thread.
+.It Dv CRYPTO_F_DONE
+Operation completed.
+.It Dv CRYPTO_F_CBIFSYNC
+Do callback immediately if operation is synchronous.
+.El
+.It Va crp_buf
+Points to the input buffer.
+On return (when the callback is invoked),
+it contains the result of the request.
+The input buffer may be an mbuf
+chain or a contiguous buffer,
+depending on
+.Va crp_flags .
+.It Va crp_opaque
+This is passed through the crypto framework untouched and is
+intended for the invoking application's use.
+.It Va crp_desc
+This is a linked list of descriptors.
+Each descriptor provides
+information about what type of cryptographic operation should be done
+on the input buffer.
+The various fields are:
+.Bl -tag -width ".Va crd_inject"
+.It Va crd_iv
+The field where IV should be provided when the
+.Dv CRD_F_IV_EXPLICIT
+flag is given.
+.It Va crd_key
+When the
+.Dv CRD_F_KEY_EXPLICIT
+flag is given, the
+.Va crd_key
+points to a buffer with encryption or authentication key.
+.It Va crd_alg
+An algorithm to use.
+Must be the same as the one given at newsession time.
+.It Va crd_klen
+The
+.Va crd_key
+key length.
+.It Va crd_skip
+The offset in the input buffer where processing should start.
+.It Va crd_len
+How many bytes, after
+.Va crd_skip ,
+should be processed.
+.It Va crd_inject
+Offset from the beginning of the buffer to insert any results.
+For encryption algorithms, this is where the initialization vector
+(IV) will be inserted when encrypting or where it can be found when
+decrypting (subject to
+.Va crd_flags ) .
+For MAC algorithms, this is where the result of the keyed hash will be
+inserted.
+.It Va crd_flags
+The following flags are defined:
+.Bl -tag -width 3n
+.It Dv CRD_F_ENCRYPT
+For encryption algorithms, this bit is set when encryption is required
+(when not set, decryption is performed).
+.It Dv CRD_F_IV_PRESENT
+For encryption algorithms, this bit is set when the IV already
+precedes the data, so the
+.Va crd_inject
+value will be ignored and no IV will be written in the buffer.
+Otherwise, the IV used to encrypt the packet will be written
+at the location pointed to by
+.Va crd_inject .
+The IV length is assumed to be equal to the blocksize of the
+encryption algorithm.
+Some applications that do special
+.Dq "IV cooking" ,
+such as the half-IV mode in
+.Xr ipsec 4 ,
+can use this flag to indicate that the IV should not be written on the packet.
+This flag is typically used in conjunction with the
+.Dv CRD_F_IV_EXPLICIT
+flag.
+.It Dv CRD_F_IV_EXPLICIT
+For encryption algorithms, this bit is set when the IV is explicitly
+provided by the consumer in the
+.Va crd_iv
+field.
+Otherwise, for encryption operations the IV is provided for by
+the driver used to perform the operation, whereas for decryption
+operations it is pointed to by the
+.Va crd_inject
+field.
+This flag is typically used when the IV is calculated
+.Dq "on the fly"
+by the consumer, and does not precede the data (some
+.Xr ipsec 4
+configurations, and the encrypted swap are two such examples).
+.It Dv CRD_F_KEY_EXPLICIT
+For encryption and authentication (MAC) algorithms, this bit is set when the key
+is explicitly provided by the consumer in the
+.Va crd_key
+field for the given operation.
+Otherwise, the key is taken at newsession time from the
+.Va cri_key
+field.
+.It Dv CRD_F_COMP
+For compression algorithms, this bit is set when compression is required (when
+not set, decompression is performed).
+.El
+.It Va CRD_INI
+This
+.Vt cryptoini
+structure will not be modified by the framework or the device drivers.
+Since this information accompanies every cryptographic
+operation request, drivers may re-initialize state on-demand
+(typically an expensive operation).
+Furthermore, the cryptographic
+framework may re-route requests as a result of full queues or hardware
+failure, as described above.
+.It Va crd_next
+Point to the next descriptor.
+Linked operations are useful in protocols such as
+.Xr ipsec 4 ,
+where multiple cryptographic transforms may be applied on the same
+block of data.
+.El
+.El
+.Pp
+.Fn crypto_getreq
+allocates a
+.Vt cryptop
+structure with a linked list of as many
+.Vt cryptodesc
+structures as were specified in the argument passed to it.
+.Pp
+.Fn crypto_freereq
+deallocates a structure
+.Vt cryptop
+and any
+.Vt cryptodesc
+structures linked to it.
+Note that it is the responsibility of the
+callback routine to do the necessary cleanups associated with the
+opaque field in the
+.Vt cryptop
+structure.
+.Pp
+.Fn crypto_kdispatch
+is called to perform a keying operation.
+The various fields in the
+.Vt cryptkop
+structure are:
+.Bl -tag -width ".Va krp_callback'
+.It Va krp_op
+Operation code, such as
+.Dv CRK_MOD_EXP .
+.It Va krp_status
+Return code.
+This
+.Va errno Ns -style
+variable indicates whether lower level reasons
+for operation failure.
+.It Va krp_iparams
+Number if input parameters to the specified operation.
+Note that each operation has a (typically hardwired) number of such parameters.
+.It Va krp_oparams
+Number if output parameters from the specified operation.
+Note that each operation has a (typically hardwired) number of such parameters.
+.It Va krp_kvp
+An array of kernel memory blocks containing the parameters.
+.It Va krp_hid
+Identifier specifying which low-level driver is being used.
+.It Va krp_callback
+Callback called on completion of a keying operation.
+.El
+.Sh DRIVER-SIDE API
+The
+.Fn crypto_get_driverid ,
+.Fn crypto_register ,
+.Fn crypto_kregister ,
+.Fn crypto_unregister ,
+.Fn crypto_unblock ,
+and
+.Fn crypto_done
+routines are used by drivers that provide support for cryptographic
+primitives to register and unregister with the kernel crypto services
+framework.
+Drivers must first use the
+.Fn crypto_get_driverid
+function to acquire a driver identifier, specifying the
+.Fa cc_flags
+as an argument (normally 0, but software-only drivers should specify
+.Dv CRYPTOCAP_F_SOFTWARE ) .
+For each algorithm the driver supports, it must then call
+.Fn crypto_register .
+The first two arguments are the driver and algorithm identifiers.
+The next two arguments specify the largest possible operator length (in bits,
+important for public key operations) and flags for this algorithm.
+The last four arguments must be provided in the first call to
+.Fn crypto_register
+and are ignored in all subsequent calls.
+They are pointers to three
+driver-provided functions that the framework may call to establish new
+cryptographic context with the driver, free already established
+context, and ask for a request to be processed (encrypt, decrypt,
+etc.); and an opaque parameter to pass when calling each of these routines.
+.Fn crypto_unregister
+is called by drivers that wish to withdraw support for an algorithm.
+The two arguments are the driver and algorithm identifiers, respectively.
+Typically, drivers for
+PCMCIA
+crypto cards that are being ejected will invoke this routine for all
+algorithms supported by the card.
+.Fn crypto_unregister_all
+will unregister all algorithms registered by a driver
+and the driver will be disabled (no new sessions will be allocated on
+that driver, and any existing sessions will be migrated to other
+drivers).
+The same will be done if all algorithms associated with a driver are
+unregistered one by one.
+.Pp
+The calling convention for the three driver-supplied routines is:
+.Pp
+.Bl -item -compact
+.It
+.Ft int
+.Fn \*[lp]*newsession\*[rp] "void *" "u_int32_t *" "struct cryptoini *" ;
+.It
+.Ft int
+.Fn \*[lp]*freesession\*[rp] "void *" "u_int64_t" ;
+.It
+.Ft int
+.Fn \*[lp]*process\*[rp] "void *" "struct cryptop *" ;
+.It
+.Ft int
+.Fn \*[lp]*kprocess\*[rp] "void *" "struct cryptkop *" ;
+.El
+.Pp
+On invocation, the first argument to
+all routines is an opaque data value supplied when the algorithm
+is registered with
+.Fn crypto_register .
+The second argument to
+.Fn newsession
+contains the driver identifier obtained via
+.Fn crypto_get_driverid .
+On successful return, it should contain a driver-specific session
+identifier.
+The third argument is identical to that of
+.Fn crypto_newsession .
+.Pp
+The
+.Fn freesession
+routine takes as arguments the opaque data value and the SID
+(which is the concatenation of the
+driver identifier and the driver-specific session identifier).
+It should clear any context associated with the session (clear hardware
+registers, memory, etc.).
+.Pp
+The
+.Fn process
+routine is invoked with a request to perform crypto processing.
+This routine must not block, but should queue the request and return
+immediately.
+Upon processing the request, the callback routine should be invoked.
+In case of an unrecoverable error, the error indication must be placed in the
+.Va crp_etype
+field of the
+.Vt cryptop
+structure.
+When the request is completed, or an error is detected, the
+.Fn process
+routine should invoke
+.Fn crypto_done .
+Session migration may be performed, as mentioned previously.
+.Pp
+In case of a temporary resource exhaustion, the
+.Fn process
+routine may return
+.Er ERESTART
+in which case the crypto services will requeue the request, mark the driver
+as
+.Dq blocked ,
+and stop submitting requests for processing.
+The driver is then responsible for notifying the crypto services
+when it is again able to process requests through the
+.Fn crypto_unblock
+routine.
+This simple flow control mechanism should only be used for short-lived
+resource exhaustion as it causes operations to be queued in the crypto
+layer.
+Doing so is preferable to returning an error in such cases as
+it can cause network protocols to degrade performance by treating the
+failure much like a lost packet.
+.Pp
+The
+.Fn kprocess
+routine is invoked with a request to perform crypto key processing.
+This routine must not block, but should queue the request and return
+immediately.
+Upon processing the request, the callback routine should be invoked.
+In case of an unrecoverable error, the error indication must be placed in the
+.Va krp_status
+field of the
+.Vt cryptkop
+structure.
+When the request is completed, or an error is detected, the
+.Fn kprocess
+routine should invoked
+.Fn crypto_kdone .
+.Sh RETURN VALUES
+.Fn crypto_register ,
+.Fn crypto_kregister ,
+.Fn crypto_unregister ,
+.Fn crypto_newsession ,
+.Fn crypto_freesession ,
+and
+.Fn crypto_unblock
+return 0 on success, or an error code on failure.
+.Fn crypto_get_driverid
+returns a non-negative value on error, and \-1 on failure.
+.Fn crypto_getreq
+returns a pointer to a
+.Vt cryptop
+structure and
+.Dv NULL
+on failure.
+.Fn crypto_dispatch
+returns
+.Er EINVAL
+if its argument or the callback function was
+.Dv NULL ,
+and 0 otherwise.
+The callback is provided with an error code in case of failure, in the
+.Va crp_etype
+field.
+.Sh FILES
+.Bl -tag -width ".Pa sys/opencrypto/crypto.c"
+.It Pa sys/opencrypto/crypto.c
+most of the framework code
+.El
+.Sh SEE ALSO
+.Xr ipsec 4 ,
+.Xr malloc 9 ,
+.Xr sleep 9
+.Sh HISTORY
+The cryptographic framework first appeared in
+.Ox 2.7
+and was written by
+.An "Angelos D. Keromytis" Aq angelos@openbsd.org .
+.Sh BUGS
+The framework currently assumes that all the algorithms in a
+.Fn crypto_newsession
+operation must be available by the same driver.
+If that is not the case, session initialization will fail.
+.Pp
+The framework also needs a mechanism for determining which driver is
+best for a specific set of algorithms associated with a session.
+Some type of benchmarking is in order here.
+.Pp
+Multiple instances of the same algorithm in the same session are not
+supported.
+Note that 3DES is considered one algorithm (and not three
+instances of DES).
+Thus, 3DES and DES could be mixed in the same request.
diff --git a/share/man/man9/dev_clone.9 b/share/man/man9/dev_clone.9
new file mode 100644
index 0000000..ce3774a
--- /dev/null
+++ b/share/man/man9/dev_clone.9
@@ -0,0 +1,74 @@
+.\" Copyright (c) 2008 Konstantin Belousov
+.\" 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$
+.\"
+.Dd September 8, 2008
+.Sh NAME
+.Nm dev_clone ,
+.Nm drain_dev_clone_events
+.Nd eventhandler for name-based device cloning in devfs
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/conf.h
+.Ft void
+.Fn clone_handler "void *arg" "struct ucred *cr" "char *name" "int namelen" "struct cdev **dev"
+.Bd -literal
+EVENTHANDLER_REGISTER(dev_clone, clone_handler, arg, priority);
+.Ed
+.Ft void
+.Fn drain_dev_clone_events
+.Sh DESCRIPTION
+Device driver may register a listener that will be notified each time
+name lookup on the
+.Xr devfs
+mount point fails to find the vnode.
+Listener shall be registered for the
+.Va dev_clone
+event.
+When called, it is supplied with the first argument
+.Va arg
+that was specified at handler registration time,
+appropriate credentials
+.Va cr ,
+.Va name
+of the length
+.Va namelen
+that was looked for.
+If handler decides that the name is appropriate and want to create device
+that will be associated with the name, it should return it to the devfs
+in the
+.Va dev .
+.Pp
+The
+.Fn drain_dev_clone_events
+function is a barrier.
+It is guaranteed that all calls to eventhandlers for dev_clone that were
+started before
+.Fn drain_dev_clone_events
+call, are finished before it returns control.
+.Pp
+.Sh SEE ALSO
+.Xr devfs 5 ,
+.Xr namei 9
diff --git a/share/man/man9/devclass.9 b/share/man/man9/devclass.9
new file mode 100644
index 0000000..d3e848e
--- /dev/null
+++ b/share/man/man9/devclass.9
@@ -0,0 +1,69 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVCLASS 9
+.Os
+.Sh NAME
+.Nm devclass
+.Nd object representing a class of devices
+.Sh SYNOPSIS
+.Vt typedef struct devclass *devclass_t ;
+.Sh DESCRIPTION
+The
+.Vt devclass
+object has two main functions in the system.
+The first is to manage
+the allocation of unit numbers for device instances and the second is
+to hold the list of device drivers for a particular bus type.
+Each
+.Vt devclass
+has a name and there cannot be two devclasses with the same name.
+This ensures that unique unit numbers are allocated to device
+instances.
+.Pp
+Beware that this means
+.Vt devclass
+must be the same for different bus attachments of the same device driver.
+.Sh SEE ALSO
+.Xr devclass_add_driver 9 ,
+.Xr devclass_delete_driver 9 ,
+.Xr devclass_find 9 ,
+.Xr devclass_find_driver 9 ,
+.Xr devclass_get_device 9 ,
+.Xr devclass_get_devices 9 ,
+.Xr devclass_get_maxunit 9 ,
+.Xr devclass_get_name 9 ,
+.Xr devclass_get_softc 9 ,
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devclass_add_driver.9 b/share/man/man9/devclass_add_driver.9
new file mode 100644
index 0000000..8ac632a
--- /dev/null
+++ b/share/man/man9/devclass_add_driver.9
@@ -0,0 +1,58 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVCLASS_ADD_DRIVER 9
+.Os
+.Sh NAME
+.Nm devclass_add_driver ,
+.Nm devclass_delete_driver ,
+.Nm devclass_find_driver
+.Nd manipulate the drivers in a devclass
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn devclass_add_driver "devclass_t dc" "driver_t *driver"
+.Ft int
+.Fn devclass_delete_driver "devclass_t dc" "driver_t *driver"
+.Ft driver_t *
+.Fn devclass_find_driver "devclass_t dc" "const char *name"
+.Sh DESCRIPTION
+These functions can be used to add new drivers into the system, remove
+old ones and search for existing ones.
+Normally drivers are added
+automatically during system initialisation.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devclass_find.9 b/share/man/man9/devclass_find.9
new file mode 100644
index 0000000..2a2c88d
--- /dev/null
+++ b/share/man/man9/devclass_find.9
@@ -0,0 +1,56 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVCLASS_FIND 9
+.Os
+.Sh NAME
+.Nm devclass_find
+.Nd search for a devclass
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft devclass_t
+.Fn devclass_find "const char *classname"
+.Sh DESCRIPTION
+Search for the
+.Vt devclass
+with the specified name.
+.Sh RETURN VALUES
+If the
+.Vt devclass
+exists, it is returned, otherwise
+.Dv NULL
+is returned.
+.Sh SEE ALSO
+.Xr devclass 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devclass_get_count.9 b/share/man/man9/devclass_get_count.9
new file mode 100644
index 0000000..f645a49
--- /dev/null
+++ b/share/man/man9/devclass_get_count.9
@@ -0,0 +1,47 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2004 Nate Lawson
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd December 5, 2004
+.Dt DEVCLASS_GET_COUNT 9
+.Os
+.Sh NAME
+.Nm devclass_get_count
+.Nd get the number of devices in a devclass
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn devclass_get_count "devclass_t dc"
+.Sh DESCRIPTION
+Returns the number of device instances in the specified
+.Vt devclass .
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Nate Lawson .
diff --git a/share/man/man9/devclass_get_device.9 b/share/man/man9/devclass_get_device.9
new file mode 100644
index 0000000..242785e
--- /dev/null
+++ b/share/man/man9/devclass_get_device.9
@@ -0,0 +1,52 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVCLASS_GET_DEVICE 9
+.Os
+.Sh NAME
+.Nm devclass_get_device
+.Nd translate unit number to device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft device_t
+.Fn devclass_get_device "devclass_t dc" "int unit"
+.Sh DESCRIPTION
+This function retrieves the device instance with the given unit number
+and returns it.
+.Sh RETURN VALUES
+If the device exists, it is returned, otherwise NULL is returned.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devclass_get_devices.9 b/share/man/man9/devclass_get_devices.9
new file mode 100644
index 0000000..e6f8a15
--- /dev/null
+++ b/share/man/man9/devclass_get_devices.9
@@ -0,0 +1,60 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 19, 2005
+.Dt DEVCLASS_GET_DEVICES 9
+.Os
+.Sh NAME
+.Nm devclass_get_devices
+.Nd get a list of devices in a devclass
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn devclass_get_devices "devclass_t dc" "device_t **devlistp" "int *devcountp"
+.Sh DESCRIPTION
+Retrieve a list of all device instances currently in the devclass and
+return the list in
+.Fa *devlistp
+and the count in
+.Fa *devcountp .
+The memory allocated for the list should be freed using
+.Fn free "*devlistp" "M_TEMP" ,
+even if
+.Fa *devcountp
+is 0.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devclass_get_drivers.9 b/share/man/man9/devclass_get_drivers.9
new file mode 100644
index 0000000..f2ba148
--- /dev/null
+++ b/share/man/man9/devclass_get_drivers.9
@@ -0,0 +1,60 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2005 Nate Lawson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 19, 2005
+.Dt DEVCLASS_GET_DRIVERS 9
+.Os
+.Sh NAME
+.Nm devclass_get_drivers
+.Nd "get a list of drivers in a devclass"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn devclass_get_drivers "devclass_t dc" "driver_t ***listp" "int *countp"
+.Sh DESCRIPTION
+Retrieve a list of pointers to all driver instances currently in the
+devclass and return the list in
+.Fa *listp
+and the number of drivers in the list in
+.Fa *countp .
+The memory allocated for the list should be freed using
+.Fn free *listp M_TEMP ,
+even if
+.Fa *countp
+is 0.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Nate Lawson .
diff --git a/share/man/man9/devclass_get_maxunit.9 b/share/man/man9/devclass_get_maxunit.9
new file mode 100644
index 0000000..c1fa694
--- /dev/null
+++ b/share/man/man9/devclass_get_maxunit.9
@@ -0,0 +1,53 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd April 3, 2005
+.Dt DEVCLASS_GET_MAXUNIT 9
+.Os
+.Sh NAME
+.Nm devclass_get_maxunit
+.Nd find the maximum unit number in the class
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn devclass_get_maxunit "devclass_t dc"
+.Sh DESCRIPTION
+Returns the next unit number to be allocated to device instances in the
+.Dv devclass .
+This is one greater than the highest currently allocated unit.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
+.Sh BUGS
+The name is confusing since it is one greater than the maximum unit.
diff --git a/share/man/man9/devclass_get_name.9 b/share/man/man9/devclass_get_name.9
new file mode 100644
index 0000000..5978dc1
--- /dev/null
+++ b/share/man/man9/devclass_get_name.9
@@ -0,0 +1,49 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVCLASS_GET_NAME 9
+.Os
+.Sh NAME
+.Nm devclass_get_name
+.Nd access the name of a devclass
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft const char *
+.Fn devclass_get_name "devclass_t dc"
+.Sh DESCRIPTION
+Return the name of a devclass.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devclass_get_softc.9 b/share/man/man9/devclass_get_softc.9
new file mode 100644
index 0000000..e4c5533
--- /dev/null
+++ b/share/man/man9/devclass_get_softc.9
@@ -0,0 +1,52 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVCLASS_GET_SOFTC 9
+.Os
+.Sh NAME
+.Nm devclass_get_softc
+.Nd translate unit number to driver private structure
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void *
+.Fn devclass_get_softc "devclass_t dc" "int unit"
+.Sh DESCRIPTION
+This function retrieves the driver private instance variables for the
+device with the given unit number and returns it.
+.Sh RETURN VALUES
+If the device exists, its driver-private variables are returned,
+otherwise NULL is returned.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devfs_set_cdevpriv.9 b/share/man/man9/devfs_set_cdevpriv.9
new file mode 100644
index 0000000..934e494
--- /dev/null
+++ b/share/man/man9/devfs_set_cdevpriv.9
@@ -0,0 +1,121 @@
+.\" Copyright (c) 2008 Konstantin Belousov
+.\" 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$
+.\"
+.Dd September 8, 2008
+.Os
+.Dt DEVFS_CDEVPRIV
+.Sh NAME
+.Nm devfs_set_cdevpriv ,
+.Nm devfs_get_cdevpriv ,
+.Nm devfs_clear_cdevpriv
+.Nd manage per-open filedescriptor data for devices
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/conf.h
+.Bd -literal
+typedef void (*cdevpriv_dtr_t)(void *data);
+.Ed
+.Ft int
+.Fn devfs_get_cdevpriv "void **datap"
+.Ft int
+.Fn devfs_set_cdevpriv "void *priv" "cdevpriv_dtr_t dtr"
+.Ft void
+.Fn devfs_clear_cdevpriv "void"
+.Sh DESCRIPTION
+The
+.Fn devfs_xxx_cdevpriv
+family of functions allows the
+.Fa cdev
+driver methods to associate some driver-specific data with each
+user process
+.Xr open 2
+of the device special file.
+Currently, functioning of these functions is restricted to the context
+of the
+.Fa cdevsw
+switch method calls performed as
+.Xr devfs 5
+operations in response to system calls that use filedescriptors.
+.Pp
+The
+.Fn devfs_set_cdevpriv
+function associates a data pointed by
+.Va priv
+with current calling context (filedescriptor).
+The data may be retrieved later, possibly from another call
+performed on this filedescriptor, by the
+.Fn devfs_get_cdevpriv
+function.
+The
+.Fn devfs_clear_cdevpriv
+disassociates previously attached data from context.
+Immediately after
+.Fn devfs_clear_cdevpriv
+finished operating, the
+.Va dtr
+callback is called, with private data supplied
+.Va data
+argument.
+.Pp
+On the last filedescriptor close, system automatically arranges
+.Fn devfs_clear_cdevpriv
+call.
+.Pp
+If successful, the functions return 0.
+.Pp
+The function
+.Fn devfs_set_cdevpriv
+returns the following values on error:
+.Bl -tag -width Er
+.It Bq Er ENOENT
+The current call is not associated with some filedescriptor.
+.It Bq Er EBUSY
+The private driver data is already associated with current
+filedescriptor.
+.El
+.Pp
+The function
+.Fn devfs_get_cdevpriv
+returns the following values on error:
+.Bl -tag -width Er
+.It Bq Er EBADF
+The current call is not associated with some filedescriptor.
+.It Bq Er ENOENT
+The private driver data was not associated with current
+filedescriptor, or
+.Fn devfs_clear_cdevpriv
+was called.
+.Pp
+.Sh SEE ALSO
+.Xr open 2 ,
+.Xr close 2 ,
+.Xr devfs 5 ,
+.Xr kern_openat 9
+.Sh HISTORY
+The
+.Fn devfs_cdevpriv
+family of functions first appeared in
+.Fx 7.1 .
diff --git a/share/man/man9/device.9 b/share/man/man9/device.9
new file mode 100644
index 0000000..3cc3462
--- /dev/null
+++ b/share/man/man9/device.9
@@ -0,0 +1,104 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE 9
+.Os
+.Sh NAME
+.Nm device
+.Nd an abstract representation of a device
+.Sh SYNOPSIS
+.Vt typedef struct device *device_t ;
+.Sh DESCRIPTION
+The device object represents a piece of hardware attached to the
+system such as an expansion card, the bus which that card is plugged
+into, disk drives attached to the expansion card etc.
+The system defines one device,
+.Va root_bus
+and all other devices are created dynamically during
+autoconfiguration.
+Normally devices representing top-level busses in
+the system (ISA, PCI etc.) will be attached directly to
+.Va root_bus
+and other devices will be added as children of their relevant bus.
+.Pp
+The devices in a system form a tree.
+All devices except
+.Va root_bus
+have a parent (see
+.Xr device_get_parent 9 ) .
+In addition, any device can have children attached to it (see
+.Xr device_add_child 9 ,
+.Xr device_add_child_ordered 9 ,
+.Xr device_find_child 9 ,
+.Xr device_get_children 9 ,
+and
+.Xr device_delete_child 9 ) .
+.Pp
+A device which has been successfully probed and attached to the
+system will also have a driver (see
+.Xr device_get_driver 9
+and
+.Xr driver 9 )
+and a devclass (see
+.Xr device_get_devclass 9
+and
+.Xr devclass 9 ) .
+Various other attributes of the device include a unit number (see
+.Xr device_get_unit 9 ) ,
+verbose description (normally supplied by the driver, see
+.Xr device_set_desc 9
+and
+.Xr device_get_desc 9 ) ,
+a set of bus-specific variables (see
+.Xr device_get_ivars 9 )
+and a set of driver-specific variables (see
+.Xr device_get_softc 9 ) .
+.Pp
+Devices can be in one of several states:
+.Bl -tag -width DS_NOTPRESENT
+.It Dv DS_NOTPRESENT
+the device has not been probed for existence or the probe failed
+.It Dv DS_ALIVE
+the device probe succeeded but not yet attached
+.It Dv DS_ATTACHED
+the device has been successfully attached
+.It Dv DS_BUSY
+the device is currently open
+.El
+.Pp
+The current state of the device can be determined by calling
+.Xr device_get_state 9 .
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_add_child.9 b/share/man/man9/device_add_child.9
new file mode 100644
index 0000000..7ddd19a
--- /dev/null
+++ b/share/man/man9/device_add_child.9
@@ -0,0 +1,125 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd September 12, 2006
+.Dt DEVICE_ADD_CHILD 9
+.Os
+.Sh NAME
+.Nm device_add_child ,
+.Nm device_add_child_ordered
+.Nd "add a new device as a child of an existing device"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft device_t
+.Fn device_add_child "device_t dev" "const char *name" "int unit"
+.Ft device_t
+.Fn device_add_child_ordered "device_t dev" "int order" "const char *name" "int unit"
+.Sh DESCRIPTION
+Create a new child device of
+.Fa dev .
+The
+.Fa name
+and
+.Fa unit
+arguments specify the name and unit number of the device.
+If the name is unknown then the caller should pass
+.Dv NULL .
+If the unit is unknown then the caller should pass
+.Dv -1
+and the system will choose the next available unit number.
+.Pp
+The name of the device is used to determine which drivers might be
+appropriate for the device.
+If a name is specified then only drivers of that name are probed.
+If no name is given then all drivers for the owning bus are probed.
+In any event, only the name of the device is stored so that one may
+safely unload/load a driver bound to that name.
+.Pp
+This allows busses which can uniquely identify device instances (such
+as PCI) to allow each driver to check each device instance for a
+match.
+For busses which rely on supplied probe hints where only one
+driver can have a chance of probing the device, the driver name should
+be specified as the device name.
+.Pp
+Normally unit numbers will be chosen automatically by the system and a
+unit number of
+.Dv -1
+should be given.
+When a specific unit number is desired (e.g.\& for wiring a particular
+piece of hardware to a pre-configured unit number), that unit should
+be passed.
+If the specified unit number is already allocated, a new
+unit will be allocated and a diagnostic message printed.
+.Pp
+If the devices attached to a bus must be probed in a specific order
+(e.g.\& for the ISA bus some devices are sensitive to failed probe attempts
+of unrelated drivers and therefore must be probed first),
+the
+.Fa order
+argument of
+.Fn device_add_child_ordered
+should be used to specify a partial ordering.
+The new device will be added before any existing device with a greater
+order.
+If
+.Fn device_add_child
+is used, then the new child will be added as if its order was zero.
+.Pp
+When adding a device in the context of
+.Xr DEVICE_IDENTIFY 9
+routine, the
+.Xr device_find_child 9
+routine should be used to ensure that the device has not already been
+added to the tree.
+Because the device name and
+.Vt devclass_t
+are associated at probe time (not child addition time), previous
+instances of the driver (say in a module that was later unloaded) may
+have already added the instance.
+Authors of bus drivers must likewise be careful when adding children
+when they are loaded and unloaded to avoid duplication of children
+devices.
+.Pp
+Identify routines should use
+.Xr BUS_ADD_CHILD 9
+instead of
+.Xr device_add_child 9 .
+.Sh RETURN VALUES
+The new device if successful, NULL otherwise.
+.Sh SEE ALSO
+.Xr BUS_ADD_CHILD 9 ,
+.Xr device 9 ,
+.Xr device_find_child 9 ,
+.Xr DEVICE_IDENTIFY 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_delete_child.9 b/share/man/man9/device_delete_child.9
new file mode 100644
index 0000000..df56c59
--- /dev/null
+++ b/share/man/man9/device_delete_child.9
@@ -0,0 +1,56 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_DELETE_CHILD 9
+.Os
+.Sh NAME
+.Nm device_delete_child
+.Nd delete a child from a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn device_delete_child "device_t dev" "device_t child"
+.Sh DESCRIPTION
+The specified device is removed from
+.Fa dev
+and deleted.
+If the device is currently attached, it is first detached (see
+.Xr DEVICE_ATTACH 9
+and
+.Xr DEVICE_DETACH 9 ) .
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an error is returned.
+.Sh SEE ALSO
+.Xr device_add_child 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_enable.9 b/share/man/man9/device_enable.9
new file mode 100644
index 0000000..85b4f6e
--- /dev/null
+++ b/share/man/man9/device_enable.9
@@ -0,0 +1,63 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_ENABLE 9
+.Os
+.Sh NAME
+.Nm device_enable ,
+.Nm device_disable ,
+.Nm device_is_enabled
+.Nd manipulate device enabled flag
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void
+.Fn device_enable "device_t dev"
+.Ft void
+.Fn device_disable "device_t dev"
+.Ft int
+.Fn device_is_enabled "device_t dev"
+.Sh DESCRIPTION
+Each device has an enabled flag associated with it.
+A device is
+enabled by default when it is created but may be disabled (for
+instance to prevent a destructive or time consuming probe attempt).
+To disable a device, call
+.Fn device_disable ,
+to re-enable it, call
+.Fn device_enable
+and to test to see if a device is enabled, call
+.Fn device_is_enabled .
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_find_child.9 b/share/man/man9/device_find_child.9
new file mode 100644
index 0000000..a23b2b2
--- /dev/null
+++ b/share/man/man9/device_find_child.9
@@ -0,0 +1,62 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd February 8, 2005
+.Dt DEVICE_FIND_CHILD 9
+.Os
+.Sh NAME
+.Nm device_find_child
+.Nd search for a child of a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft device_t
+.Fn device_find_child "device_t dev" "const char *classname" "int unit"
+.Sh DESCRIPTION
+This function looks for a specific child of
+.Dv dev .
+with the given
+.Fa classname
+and
+.Fa unit .
+If
+.Fa unit
+is \-1, it returns the first child of
+.Fa dev
+with a matching
+.Fa classname
+(that is, the one with the lowest unit).
+.Sh RETURN VALUES
+If it exists, the child device is returned, otherwise NULL.
+.Sh SEE ALSO
+.Xr device_add_child 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_get_children.9 b/share/man/man9/device_get_children.9
new file mode 100644
index 0000000..677d8eb
--- /dev/null
+++ b/share/man/man9/device_get_children.9
@@ -0,0 +1,62 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd August 23, 2008
+.Dt DEVICE_GET_CHILDREN 9
+.Os
+.Sh NAME
+.Nm device_get_children
+.Nd get a list of devices connected to a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn device_get_children "device_t dev" "device_t **devlistp" "int *devcountp"
+.Sh DESCRIPTION
+Retrieve a list of all device instances currently connected to
+.Pa dev
+and return the list in
+.Fa *devlistp
+and the count in
+.Fa *devcountp .
+The memory allocated for the list should be freed using
+.Fn free "*devlistp" "M_TEMP" .
+.Fa devlistp
+and
+.Fa devcountp
+are not changed when an error is returned.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_get_devclass.9 b/share/man/man9/device_get_devclass.9
new file mode 100644
index 0000000..fcf8695
--- /dev/null
+++ b/share/man/man9/device_get_devclass.9
@@ -0,0 +1,52 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_GET_DEVCLASS 9
+.Os
+.Sh NAME
+.Nm device_get_devclass
+.Nd access the devclass of a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft devclass_t
+.Fn device_get_devclass "device_t dev"
+.Sh DESCRIPTION
+The current devclass associated with the device is returned.
+If the device has no devclass,
+.Dv NULL
+is returned.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_get_driver.9 b/share/man/man9/device_get_driver.9
new file mode 100644
index 0000000..d764768
--- /dev/null
+++ b/share/man/man9/device_get_driver.9
@@ -0,0 +1,52 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_GET_DRIVER 9
+.Os
+.Sh NAME
+.Nm device_get_driver
+.Nd access the current driver of a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft driver_t *
+.Fn device_get_driver "device_t dev"
+.Sh DESCRIPTION
+The current driver associated with the device is returned.
+If the device has no driver,
+.Dv NULL
+is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_get_ivars.9 b/share/man/man9/device_get_ivars.9
new file mode 100644
index 0000000..dd1450c
--- /dev/null
+++ b/share/man/man9/device_get_ivars.9
@@ -0,0 +1,64 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_GET_IVARS 9
+.Os
+.Sh NAME
+.Nm device_get_ivars ,
+.Nm device_set_ivars
+.Nd access bus private variables
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft "void *"
+.Fn device_get_ivars "device_t dev"
+.Ft void
+.Fn device_set_ivars "device_t dev" "void *ivar"
+.Sh DESCRIPTION
+The
+.Fn device_get_ivars
+function returns the bus-specific instance variables of a device.
+.Pp
+The
+.Fn device_set_ivars
+function sets the bus-specific instance variables of a device.
+.Pp
+Typically, only bus drivers will use these functions.
+The kernel assumes that the bus driver will manage this memory, and no
+automatic memory allocation or deallocation happens.
+Client drivers should access ivars through the
+.Xr BUS_READ_IVAR 9
+interface instead.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_get_name.9 b/share/man/man9/device_get_name.9
new file mode 100644
index 0000000..3149f8c
--- /dev/null
+++ b/share/man/man9/device_get_name.9
@@ -0,0 +1,56 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd April 21, 2003
+.Dt DEVICE_GET_NAME 9
+.Os
+.Sh NAME
+.Nm device_get_name , device_get_nameunit
+.Nd access the name of a device's device class or instance
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft const char *
+.Fn device_get_name "device_t dev"
+.Ft const char *
+.Fn device_get_nameunit "device_t dev"
+.Sh DESCRIPTION
+The
+.Fn device_get_name
+function returns the name of the device's device class.
+.Pp
+The
+.Fn device_get_nameunit
+function returns the name of the device's instance.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh .
diff --git a/share/man/man9/device_get_parent.9 b/share/man/man9/device_get_parent.9
new file mode 100644
index 0000000..63669d3
--- /dev/null
+++ b/share/man/man9/device_get_parent.9
@@ -0,0 +1,50 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd April 21, 2003
+.Dt DEVICE_GET_PARENT 9
+.Os
+.Sh NAME
+.Nm device_get_parent
+.Nd return the device's parent
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft device_t
+.Fn device_get_parent "device_t dev"
+.Sh DESCRIPTION
+The
+.Fn device_get_parent
+function returns the name of the device's parent device.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh .
diff --git a/share/man/man9/device_get_softc.9 b/share/man/man9/device_get_softc.9
new file mode 100644
index 0000000..76f94d4
--- /dev/null
+++ b/share/man/man9/device_get_softc.9
@@ -0,0 +1,69 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd August 2, 2005
+.Dt DEVICE_GET_SOFTC 9
+.Os
+.Sh NAME
+.Nm device_get_softc
+.Nd access driver private instance variables
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void *
+.Fn device_get_softc "device_t dev"
+.Sh DESCRIPTION
+Return the driver-specific state of
+.Fa dev .
+The softc is automatically allocated and zeroed when the device is
+attached.
+The softc is also initialized and present when a device is probed,
+but is subject to caveats as described in
+.Xr DEVICE_PROBE 9 .
+The size of the allocation is determined by the device's
+.Vt driver_t
+information used to define the driver.
+The softc typically encapsulates the state of this instance of the
+device.
+.Pp
+Driver writers are discouraged from using their own softc management
+mechanisms.
+Driver writers should not copy such mechanisms found in drivers in the
+tree that predate this function.
+.Sh RETURN VALUES
+The pointer to the driver-specific instance variable is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr DEVICE_PROBE 9 ,
+.Xr device_set_softc 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_get_state.9 b/share/man/man9/device_get_state.9
new file mode 100644
index 0000000..384395a
--- /dev/null
+++ b/share/man/man9/device_get_state.9
@@ -0,0 +1,99 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_GET_STATE 9
+.Os
+.Sh NAME
+.Nm device_get_state ,
+.Nm device_busy ,
+.Nm device_unbusy ,
+.Nm device_is_alive ,
+.Nm device_is_attached
+.Nd manipulate device state
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft device_state_t
+.Fn device_get_state "device_t dev"
+.Ft void
+.Fn device_busy "device_t dev"
+.Ft void
+.Fn device_unbusy "device_t dev"
+.Ft int
+.Fn device_is_alive "device_t dev"
+.Ft int
+.Fn device_is_attached "device_t dev"
+.Sh DESCRIPTION
+The current state of a device is accessed by calling
+.Fn device_get_state
+which returns
+.Dv DS_NOTPRESENT ,
+.Dv DS_ALIVE ,
+.Dv DS_ATTACHED
+or
+.Dv DS_BUSY
+(described in
+.Xr device 9 ) .
+To test see if a device was successfully probed, call
+.Fn device_is_alive
+which simply returns if the state is greater or equal to
+.Dv DS_ALIVE .
+To test see if a device was successfully attached, call
+.Fn device_is_attached
+which simply returns if the state is greater or equal to
+.Dv DS_ATTACHED .
+.Pp
+Each device has a busy count which is incremented when
+.Fn device_busy
+is called and decremented when
+.Fn device_unbusy
+is called.
+Both routines return an error if the device state is less than
+.Dv DS_ATTACHED .
+.Pp
+When
+.Fn device_busy
+is called on a device in the
+.Dv DS_ATTACHED
+state, the device changes to the
+.Dv DS_BUSY
+state.
+When
+.Fn device_unbusy
+is called and after decrementing, the busy count for the device is
+zero, the device changes to the
+.Dv DS_ATTACHED
+state.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_get_sysctl.9 b/share/man/man9/device_get_sysctl.9
new file mode 100644
index 0000000..4dcc2ab
--- /dev/null
+++ b/share/man/man9/device_get_sysctl.9
@@ -0,0 +1,58 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2006 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 23, 2006
+.Dt DEVICE_GET_SYSCTL 9
+.Os
+.Sh NAME
+.Nm device_get_sysctl_ctx ,
+.Nm device_get_sysctl_tree
+.Nd manipulate the sysctl oid tree for driver specific sysctl nodes
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft "struct sysctl_ctx_list *"
+.Fn device_get_sysctl_ctx "device_t dev"
+.Ft "struct sysctl_oid *"
+.Fn device_get_sysctl_tree "device_t dev"
+.Sh DESCRIPTION
+The newbus system automatically adds a sysctl node for each device
+in the system.
+This node can be accessed with the
+.Fn device_get_sysctl_tree
+function.
+The context for the node can be obtained with the
+.Fn device_get_sysctl_ctl
+function.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh .
diff --git a/share/man/man9/device_get_unit.9 b/share/man/man9/device_get_unit.9
new file mode 100644
index 0000000..0b222e9
--- /dev/null
+++ b/share/man/man9/device_get_unit.9
@@ -0,0 +1,48 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_GET_UNIT 9
+.Os
+.Sh NAME
+.Nm device_get_unit
+.Nd access the unit number of a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn device_get_unit "device_t dev"
+.Sh DESCRIPTION
+Return the unit number of the device.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_printf.9 b/share/man/man9/device_printf.9
new file mode 100644
index 0000000..297cce7
--- /dev/null
+++ b/share/man/man9/device_printf.9
@@ -0,0 +1,58 @@
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\" 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$
+.\"
+.Dd April 21, 2003
+.Dt DEVICE_PRINTF 9
+.Os
+.Sh NAME
+.Nm device_printf
+.Nd formatted output conversion
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn device_printf "device_t dev" "const char *fmt" ...
+.Sh DESCRIPTION
+The
+.Fn device_printf
+function is a convenience interface to the
+.Xr printf 9
+function.
+It outputs the name of the
+.Fa dev
+device, followed by a colon and a space, and then what
+.Xr printf 9
+would print if you passed
+.Fa fmt
+and the remaining arguments to it.
+.Sh RETURN VALUES
+The
+.Fn device_printf
+function returns the number of characters displayed.
+.Sh SEE ALSO
+.Xr printf 3 ,
+.Xr printf 9
diff --git a/share/man/man9/device_probe_and_attach.9 b/share/man/man9/device_probe_and_attach.9
new file mode 100644
index 0000000..8f8c4af
--- /dev/null
+++ b/share/man/man9/device_probe_and_attach.9
@@ -0,0 +1,61 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_PROBE_AND_ATTACH 9
+.Os
+.Sh NAME
+.Nm device_probe_and_attach
+.Nd initialise a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn device_probe_and_attach "device_t dev"
+.Sh DESCRIPTION
+This function is called during autoconfiguration to initialise the
+devices in the system.
+For each device, the
+.Xr DEVICE_PROBE 9
+method of each suitable driver is called and if a probe succeeds, a
+description of the device is printed and the
+.Xr DEVICE_ATTACH 9
+method is called.
+If the device is disabled using
+.Xr device_disable 9
+then it will not be probed.
+.Sh RETURN VALUES
+Zero is returned on success, otherwise an appropriate error is returned.
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_quiet.9 b/share/man/man9/device_quiet.9
new file mode 100644
index 0000000..0e5526d
--- /dev/null
+++ b/share/man/man9/device_quiet.9
@@ -0,0 +1,66 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 21, 1999
+.Dt DEVICE_QUIET 9
+.Os
+.Sh NAME
+.Nm device_quiet ,
+.Nm device_verbose ,
+.Nm device_is_quiet
+.Nd manipulate device quiet flag
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void
+.Fn device_quiet "device_t dev"
+.Ft void
+.Fn device_verbose "device_t dev"
+.Ft int
+.Fn device_is_quiet "device_t dev"
+.Sh DESCRIPTION
+Each device has a quiet flag associated with it.
+A device is
+verbose by default when it is created but may be quieted to prevent
+the device identification string to be printed during probe.
+To quiet a device, call
+.Fn device_quiet ,
+to re-enable to probe message (to make the message appear again, for
+example after a
+.Xr device_detach 9 )
+call
+.Fn device_verbose .
+To test to see if a device is quieted, call
+.Fn device_is_quiet .
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_set_desc.9 b/share/man/man9/device_set_desc.9
new file mode 100644
index 0000000..ae29010
--- /dev/null
+++ b/share/man/man9/device_set_desc.9
@@ -0,0 +1,63 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DEVICE_SET_DESC 9
+.Os
+.Sh NAME
+.Nm device_set_desc ,
+.Nm device_set_desc_copy ,
+.Nm device_get_desc
+.Nd access the description of a device
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void
+.Fn device_set_desc "device_t dev" "const char *desc"
+.Ft void
+.Fn device_set_desc_copy "device_t dev" "const char *desc"
+.Ft const char *
+.Fn device_get_desc "device_t dev"
+.Sh DESCRIPTION
+Manipulate the verbose description of a device.
+This description (if
+present) is printed as part of the message when it is attached during
+autoconfiguration.
+The variation
+.Fn device_set_desc_copy
+is used to set the description if the string passed is a temporary
+buffer which will be overwritten.
+In this case, the system will copy
+the string, otherwise the pointer passed will be used directly.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/device_set_driver.9 b/share/man/man9/device_set_driver.9
new file mode 100644
index 0000000..7f8ceb2
--- /dev/null
+++ b/share/man/man9/device_set_driver.9
@@ -0,0 +1,53 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd April 21, 2003
+.Dt DEVICE_SET_DRIVER 9
+.Os
+.Sh NAME
+.Nm device_set_driver
+.Nd "associate a specific driver with a device node in the tree"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void
+.Fn device_set_driver "device_t dev" "driver_t *driver"
+.Sh DESCRIPTION
+This function associates a specific driver with a given device node
+in the tree.
+It is typically used in
+.Xr DEVICE_IDENTIFY 9
+functions to add devices to a bus that does not support doing so
+automatically, such as the ISA bus.
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An M. Warner Losh .
diff --git a/share/man/man9/device_set_flags.9 b/share/man/man9/device_set_flags.9
new file mode 100644
index 0000000..aed3069
--- /dev/null
+++ b/share/man/man9/device_set_flags.9
@@ -0,0 +1,56 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1999 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd September 6, 1999
+.Dt DEVICE_GET_FLAGS 9
+.Os
+.Sh NAME
+.Nm device_set_flags ,
+.Nm device_get_flags
+.Nd manipulate driver flags
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft void
+.Fn device_set_flags "device_t dev" "u_int32_t flags"
+.Ft u_int32_t
+.Fn device_get_flags "device_t dev"
+.Sh DESCRIPTION
+Each device supports a set of driver-dependent flags which are often
+used to control device behaviour.
+These flags are read by calling
+.Fn device_get_flags
+and written by calling
+.Fn device_set_flags .
+.Sh SEE ALSO
+.Xr device 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/devstat.9 b/share/man/man9/devstat.9
new file mode 100644
index 0000000..45e17b7
--- /dev/null
+++ b/share/man/man9/devstat.9
@@ -0,0 +1,455 @@
+.\"
+.\" Copyright (c) 1998, 1999 Kenneth D. Merry.
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd May 22, 1998
+.Dt DEVSTAT 9
+.Os
+.Sh NAME
+.Nm devstat ,
+.Nm devstat_add_entry ,
+.Nm devstat_end_transaction ,
+.Nm devstat_end_transaction_bio ,
+.Nm devstat_remove_entry ,
+.Nm devstat_start_transaction
+.Nd kernel interface for keeping device statistics
+.Sh SYNOPSIS
+.In sys/devicestat.h
+.Ft void
+.Fo devstat_add_entry
+.Fa "struct devstat *ds"
+.Fa "const char *dev_name"
+.Fa "int unit_number"
+.Fa "u_int32_t block_size"
+.Fa "devstat_support_flags flags"
+.Fa "devstat_type_flags device_type"
+.Fa "devstat_priority priority"
+.Fc
+.Ft void
+.Fn devstat_remove_entry "struct devstat *ds"
+.Ft void
+.Fn devstat_start_transaction "struct devstat *ds"
+.Ft void
+.Fo devstat_end_transaction
+.Fa "struct devstat *ds"
+.Fa "u_int32_t bytes"
+.Fa "devstat_tag_type tag_type"
+.Fa "devstat_trans_flags flags"
+.Fc
+.Ft void
+.Fo devstat_end_transaction_bio
+.Fa "struct devstat *ds"
+.Fa "struct bio *bp"
+.Fc
+.Sh DESCRIPTION
+The devstat subsystem is an interface for recording device
+statistics, as its name implies.
+The idea is to keep reasonably detailed
+statistics while utilizing a minimum amount of CPU time to record them.
+Thus, no statistical calculations are actually performed in the kernel
+portion of the
+.Nm
+code.
+Instead, that is left for user programs to handle.
+.Pp
+.Fn devstat_add_entry
+registers a device with the
+.Nm
+subsystem.
+The caller is expected to have already allocated \fBand zeroed\fR
+the devstat structure before calling this function.
+.Fn devstat_add_entry
+takes several arguments:
+.Bl -tag -width device_type
+.It ds
+The
+.Va devstat
+structure, allocated and zeroed by the client.
+.It dev_name
+The device name, e.g.\& da, cd, sa.
+.It unit_number
+Device unit number.
+.It block_size
+Block size of the device, if supported.
+If the device does not support a
+block size, or if the blocksize is unknown at the time the device is added
+to the
+.Nm
+list, it should be set to 0.
+.It flags
+Flags indicating operations supported or not supported by the device.
+See below for details.
+.It device_type
+The device type.
+This is broken into three sections: base device type
+(e.g.\& direct access, CDROM, sequential access), interface type (IDE, SCSI
+or other) and a pass-through flag to indicate pas-through devices.
+See below for a complete list of types.
+.It priority
+The device priority.
+The priority is used to determine how devices are
+sorted within
+.Nm devstat Ns 's
+list of devices.
+Devices are sorted first by priority (highest to lowest),
+and then by attach order.
+See below for a complete list of available
+priorities.
+.El
+.Pp
+.Fn devstat_remove_entry
+removes a device from the
+.Nm
+subsystem.
+It takes the devstat structure for the device in question as
+an argument.
+The
+.Nm
+generation number is incremented and the number of devices is decremented.
+.Pp
+.Fn devstat_start_transaction
+registers the start of a transaction with the
+.Nm
+subsystem.
+The busy count is incremented with each transaction start.
+When a device goes from idle to busy, the system uptime is recorded in the
+.Va start_time
+field of the
+.Va devstat
+structure.
+.Pp
+.Fn devstat_end_transaction
+registers the end of a transaction with the
+.Nm
+subsystem.
+It takes four arguments:
+.Bl -tag -width tag_type
+.It ds
+The
+.Va devstat
+structure for the device in question.
+.It bytes
+The number of bytes transferred in this transaction.
+.It tag_type
+Transaction tag type.
+See below for tag types.
+.It flags
+Transaction flags indicating whether the transaction was a read, write, or
+whether no data was transferred.
+.El
+.Pp
+.Fn devstat_end_transaction_bio
+is a wrapper for
+.Fn devstat_end_transaction
+which pulls all the information from a
+.Va "struct bio"
+which is ready for biodone().
+.Pp
+The
+.Va devstat
+structure is composed of the following fields:
+.Bl -tag -width dev_creation_time
+.It dev_links
+Each
+.Va devstat
+structure is placed in a linked list when it is registered.
+The
+.Va dev_links
+field contains a pointer to the next entry in the list of
+.Va devstat
+structures.
+.It device_number
+The device number is a unique identifier for each device.
+The device
+number is incremented for each new device that is registered.
+The device
+number is currently only a 32-bit integer, but it could be enlarged if
+someone has a system with more than four billion device arrival events.
+.It device_name
+The device name is a text string given by the registering driver to
+identify itself.
+(e.g.\&
+.Dq da ,
+.Dq cd ,
+.Dq sa ,
+etc.)
+.It unit_number
+The unit number identifies the particular instance of the peripheral driver
+in question.
+.It bytes_written
+This is the number of bytes that have been written to the device.
+This number is currently an unsigned 64 bit integer.
+This will hopefully
+eliminate the counter wrap that would come very quickly on some systems if
+32 bit integers were used.
+.It bytes_read
+This is the number of bytes that have been read from the device.
+.It bytes_freed
+This is the number of bytes that have been freed/erased on the device.
+.It num_reads
+This is the number of reads from the device.
+.It num_writes
+This is the number of writes to the device.
+.It num_frees
+This is the number of free/erase operations on the device.
+.It num_other
+This is the number of transactions to the device which are neither reads or
+writes.
+For instance,
+.Tn SCSI
+drivers often send a test unit ready command to
+.Tn SCSI
+devices.
+The test unit ready command does not read or write any data.
+It merely causes the device to return its status.
+.It busy_count
+This is the current number of outstanding transactions for the device.
+This should never go below zero, and on an idle device it should be zero.
+If either one of these conditions is not true, it indicates a problem in
+the way
+.Fn devstat_start_transaction
+and
+.Fn devstat_end_transaction
+are being called in client code.
+There should be one and only one
+transaction start event and one transaction end event for each transaction.
+.It block_size
+This is the block size of the device, if the device has a block size.
+.It tag_types
+This is an array of counters to record the number of various tag types that
+are sent to a device.
+See below for a list of tag types.
+.It dev_creation_time
+This is the time, as reported by
+.Fn getmicrotime
+that the device was registered.
+.It busy_time
+This is the amount of time that the device busy count has been greater than
+zero.
+This is only updated when the busy count returns to zero.
+.It start_time
+This is the time, as reported by
+.Fn getmicrouptime
+that the device busy count went from zero to one.
+.It last_comp_time
+This is the time as reported by
+.Fn getmicrouptime
+that a transaction last completed.
+It is used along with
+.Va start_time
+to calculate the device busy time.
+.It flags
+These flags indicate which statistics measurements are supported by a
+particular device.
+These flags are primarily intended to serve as an aid
+to userland programs that decipher the statistics.
+.It device_type
+This is the device type.
+It consists of three parts: the device type
+(e.g.\& direct access, CDROM, sequential access, etc.), the interface (IDE,
+SCSI or other) and whether or not the device in question is a pass-through
+driver.
+See below for a complete list of device types.
+.It priority
+This is the priority.
+This is the first parameter used to determine where
+to insert a device in the
+.Nm
+list.
+The second parameter is attach order.
+See below for a list of
+available priorities.
+.El
+.Pp
+Each device is given a device type.
+Pass-through devices have the same
+underlying device type and interface as the device they provide an
+interface for, but they also have the pass-through flag set.
+The base
+device types are identical to the
+.Tn SCSI
+device type numbers, so with
+.Tn SCSI
+peripherals, the device type returned from an inquiry is usually ORed with
+the
+.Tn SCSI
+interface type and the pass-through flag if appropriate.
+The device type
+flags are as follows:
+.Bd -literal -offset indent
+typedef enum {
+ DEVSTAT_TYPE_DIRECT = 0x000,
+ DEVSTAT_TYPE_SEQUENTIAL = 0x001,
+ DEVSTAT_TYPE_PRINTER = 0x002,
+ DEVSTAT_TYPE_PROCESSOR = 0x003,
+ DEVSTAT_TYPE_WORM = 0x004,
+ DEVSTAT_TYPE_CDROM = 0x005,
+ DEVSTAT_TYPE_SCANNER = 0x006,
+ DEVSTAT_TYPE_OPTICAL = 0x007,
+ DEVSTAT_TYPE_CHANGER = 0x008,
+ DEVSTAT_TYPE_COMM = 0x009,
+ DEVSTAT_TYPE_ASC0 = 0x00a,
+ DEVSTAT_TYPE_ASC1 = 0x00b,
+ DEVSTAT_TYPE_STORARRAY = 0x00c,
+ DEVSTAT_TYPE_ENCLOSURE = 0x00d,
+ DEVSTAT_TYPE_FLOPPY = 0x00e,
+ DEVSTAT_TYPE_MASK = 0x00f,
+ DEVSTAT_TYPE_IF_SCSI = 0x010,
+ DEVSTAT_TYPE_IF_IDE = 0x020,
+ DEVSTAT_TYPE_IF_OTHER = 0x030,
+ DEVSTAT_TYPE_IF_MASK = 0x0f0,
+ DEVSTAT_TYPE_PASS = 0x100
+} devstat_type_flags;
+.Ed
+.Pp
+Devices have a priority associated with them, which controls roughly where
+they are placed in the
+.Nm
+list.
+The priorities are as follows:
+.Bd -literal -offset indent
+typedef enum {
+ DEVSTAT_PRIORITY_MIN = 0x000,
+ DEVSTAT_PRIORITY_OTHER = 0x020,
+ DEVSTAT_PRIORITY_PASS = 0x030,
+ DEVSTAT_PRIORITY_FD = 0x040,
+ DEVSTAT_PRIORITY_WFD = 0x050,
+ DEVSTAT_PRIORITY_TAPE = 0x060,
+ DEVSTAT_PRIORITY_CD = 0x090,
+ DEVSTAT_PRIORITY_DISK = 0x110,
+ DEVSTAT_PRIORITY_ARRAY = 0x120,
+ DEVSTAT_PRIORITY_MAX = 0xfff
+} devstat_priority;
+.Ed
+.Pp
+Each device has associated with it flags to indicate what operations are
+supported or not supported.
+The
+.Va devstat_support_flags
+values are as follows:
+.Bl -tag -width DEVSTAT_NO_ORDERED_TAGS
+.It DEVSTAT_ALL_SUPPORTED
+Every statistic type is supported by the device.
+.It DEVSTAT_NO_BLOCKSIZE
+This device does not have a blocksize.
+.It DEVSTAT_NO_ORDERED_TAGS
+This device does not support ordered tags.
+.It DEVSTAT_BS_UNAVAILABLE
+This device supports a blocksize, but it is currently unavailable.
+This
+flag is most often used with removable media drives.
+.El
+.Pp
+Transactions to a device fall into one of three categories, which are
+represented in the
+.Va flags
+passed into
+.Fn devstat_end_transaction .
+The transaction types are as follows:
+.Bd -literal -offset indent
+typedef enum {
+ DEVSTAT_NO_DATA = 0x00,
+ DEVSTAT_READ = 0x01,
+ DEVSTAT_WRITE = 0x02,
+ DEVSTAT_FREE = 0x03
+} devstat_trans_flags;
+.Ed
+.Pp
+There are four possible values for the
+.Va tag_type
+argument to
+.Fn devstat_end_transaction :
+.Bl -tag -width DEVSTAT_TAG_ORDERED
+.It DEVSTAT_TAG_SIMPLE
+The transaction had a simple tag.
+.It DEVSTAT_TAG_HEAD
+The transaction had a head of queue tag.
+.It DEVSTAT_TAG_ORDERED
+The transaction had an ordered tag.
+.It DEVSTAT_TAG_NONE
+The device does not support tags.
+.El
+.Pp
+The tag type values correspond to the lower four bits of the
+.Tn SCSI
+tag definitions.
+In CAM, for instance, the
+.Va tag_action
+from the CCB is ORed with 0xf to determine the tag type to pass in to
+.Fn devstat_end_transaction .
+.Pp
+There is a macro,
+.Dv DEVSTAT_VERSION
+that is defined in
+.In sys/devicestat.h .
+This is the current version of the
+.Nm
+subsystem, and it should be incremented each time a change is made that
+would require recompilation of userland programs that access
+.Nm
+statistics.
+Userland programs use this version, via the
+.Va kern.devstat.version
+.Nm sysctl
+variable to determine whether they are in sync with the kernel
+.Nm
+structures.
+.Sh SEE ALSO
+.Xr systat 1 ,
+.Xr devstat 3 ,
+.Xr iostat 8 ,
+.Xr rpc.rstatd 8 ,
+.Xr vmstat 8
+.Sh HISTORY
+The
+.Nm
+statistics system appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+.An Kenneth Merry Aq ken@FreeBSD.org
+.Sh BUGS
+There may be a need for
+.Fn spl
+protection around some of the
+.Nm
+list manipulation code to insure, for example, that the list of devices
+is not changed while someone is fetching the
+.Va kern.devstat.all
+.Nm sysctl
+variable.
+.Pp
+It is impossible with the current
+.Nm
+architecture to accurately measure time per transaction.
+The only feasible
+way to accurately measure time per transaction would be to record a
+timestamp for every transaction.
+This measurement is probably not
+worthwhile for most people as it would adversely affect the performance of
+the system and cost space to store the timestamps for individual
+transactions.
diff --git a/share/man/man9/devtoname.9 b/share/man/man9/devtoname.9
new file mode 100644
index 0000000..9a62a5e
--- /dev/null
+++ b/share/man/man9/devtoname.9
@@ -0,0 +1,57 @@
+.\" Copyright (c) 1999 Chris Costello
+.\" 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$
+.\"
+.Dd September 25, 1999
+.Os
+.Dt DEVTONAME 9
+.Sh NAME
+.Nm devtoname
+.Nd "converts dev_t data into a string indicating the device name"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/conf.h
+.Ft const char *
+.Fn devtoname "dev_t dev"
+.Sh DESCRIPTION
+The
+.Fn devtoname
+function returns a pointer to the name of the device passed to it.
+The name is whatever was set to it in
+.Fn make_dev .
+If no name is associated with
+.Va dev ,
+a pointer to a string consisting of a
+.Dq #
+followed by
+.Dq Va major Ns / Ns Va minor
+as it applies to
+.Va dev
+is returned.
+.Sh HISTORY
+The
+.Fn devtoname
+interface first appeared in
+.Fx 4.0
diff --git a/share/man/man9/disk.9 b/share/man/man9/disk.9
new file mode 100644
index 0000000..a25134f
--- /dev/null
+++ b/share/man/man9/disk.9
@@ -0,0 +1,193 @@
+.\"
+.\" Copyright (c) 2003 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 18, 2004
+.Dt DISK 9
+.Os
+.Sh NAME
+.Nm disk
+.Nd kernel disk storage API
+.Sh SYNOPSIS
+.In geom/geom_disk.h
+.Ft struct disk *
+.Fn disk_alloc void
+.Ft void
+.Fn disk_create "struct disk *disk" "int version"
+.Ft void
+.Fn disk_destroy "struct disk *disk"
+.Sh DESCRIPTION
+The disk storage API permits kernel device drivers providing access to
+disk-like storage devices to advertise the device to other kernel
+components, including
+.Xr GEOM 4
+and
+.Xr devfs 5 .
+.Pp
+Each disk device is described by a
+.Vt "struct disk"
+structure, which contains a variety of parameters for the disk device,
+function pointers for various methods that may be performed on the device,
+as well as private data storage for the device driver.
+In addition, some fields are reserved for use by GEOM in managing access
+to the device and its statistics.
+.Pp
+GEOM has the ownership of
+.Vt "struct disk" ,
+and drivers must allocate storage for it with the
+.Fn disk_alloc
+function,
+fill in the fields and call
+.Fn disk_create
+when the device is ready to service requests.
+After calling
+.Fn disk_destroy ,
+the device driver is not allowed to access the contents of
+.Vt "struct disk"
+anymore.
+.Pp
+The
+.Fn disk_create
+function
+takes a second parameter,
+.Fa version ,
+which must always be passed
+.Dv DISK_VERSION .
+If GEOM detects that the driver is compiled against an unsupported version,
+it will ignore the device and print a warning on the console.
+.Ss Descriptive Fields
+The following fields identify the disk device described by the structure
+instance, and must be filled in prior to submitting the structure to
+.Fn disk_create
+and may not be subsequently changed:
+.Bl -tag -width indent
+.It Vt u_int Va d_flags
+Optional flags indicating to the storage framework what optional features
+or descriptions the storage device driver supports.
+Currently supported flags are
+.Dv DISKFLAG_NEEDSGIANT
+(maintained by device driver),
+.Dv DISKFLAG_OPEN
+(maintained by storage framework),
+.Dv DISKFLAG_CANDELETE
+(maintained by device driver),
+and
+.Dv DISKFLAG_CANFLUSHCACHE
+(maintained by device driver).
+.It Vt "const char *" Va d_name
+Holds the name of the storage device class, e.g.,
+.Dq Li ahd .
+This value typically uniquely identifies a particular driver device,
+and must not conflict with devices serviced by other device drivers.
+.It Vt u_int Va d_unit
+Holds the instance of the storage device class, e.g.,
+.Dq Li 4 .
+This namespace is managed by the device driver, and assignment of unit
+numbers might be a property of probe order, or in some cases topology.
+Together, the
+.Va d_name
+and
+.Va d_unit
+values will uniquely identify a disk storage device.
+.El
+.Ss Disk Device Methods
+The following fields identify various disk device methods, if implemented:
+.Bl -tag -width indent
+.It Vt "disk_open_t *" Va d_open
+Optional: invoked when the disk device is opened.
+If no method is provided, open will always succeed.
+.It Vt "disk_close_t *" Va d_close
+Optional: invoked when the disk device is closed.
+Although an error code may be returned, the call should always terminate
+any state setup by the corresponding open method call.
+.It Vt "disk_strategy_t *" Va d_strategy
+Mandatory: invoked when a new
+.Vt "struct bio"
+is to be initiated on the disk device.
+.It Vt "disk_ioctl_t *" Va d_ioctl
+Optional: invoked when an I/O control operation is initiated on the disk device.
+Please note that for security reasons these operations should not
+be able to affect other devices than the one on which they are performed.
+.It Vt "dumper_t *" Va d_dump
+Optional: if configured with
+.Xr dumpon 8 ,
+this function is invoked from a very restricted system state after a
+kernel panic to record a copy of the system RAM to the disk.
+.El
+.Ss Mandatory Media Properties
+The following fields identify the size and granularity of the disk device.
+These fields must stay stable from return of the drivers open method until
+the close method is called, but it is perfectly legal to modify them in
+the open method before returning.
+.Bl -tag -width indent
+.It Vt u_int Va d_sectorsize
+The sector size of the disk device in bytes.
+.It Vt off_t Va d_mediasize
+The size of the disk device in bytes.
+.It Vt u_int Va d_maxsize
+The maximum supported size in bytes of an I/O request.
+Requests larger than this size will be chopped up by GEOM.
+.El
+.Ss Optional Media Properties
+These optional fields can provide extra information about the disk
+device.
+Do not initialize these fields if the field/concept does not apply.
+These fields must stay stable from return of the drivers open method until
+the close method is called, but it is perfectly legal to modify them in
+the open method before returning.
+.Bl -tag -width indent
+.It Vt u_int Va d_fwsectors , Vt u_int Va d_fwheads
+The number of sectors and heads advertised on the disk device by the
+firmware or BIOS.
+These values are almost universally bogus, but on some architectures
+necessary for the correct calculation of disk partitioning.
+.It Vt u_int Va d_stripeoffset , Vt u_int Va d_stripesize
+These two fields can be used to describe the width and location of
+natural performance boundaries for most disk technologies.
+Please see
+.Pa src/sys/geom/notes
+for details.
+.It Vt char Va d_ident[DISK_IDENT_SIZE]
+This field can and should be used to store disk's serial number.
+.El
+.Ss Driver Private Data
+This field may be used by the device driver to store a pointer to
+private data to implement the disk service.
+.Bl -tag -width indent
+.It Vt "void *" Va d_drv1
+Private data pointer.
+Typically used to store a pointer to the drivers
+.Vt softc
+structure for this disk device.
+.El
+.Sh SEE ALSO
+.Xr GEOM 4 ,
+.Xr devfs 5
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
diff --git a/share/man/man9/domain.9 b/share/man/man9/domain.9
new file mode 100644
index 0000000..b406d90
--- /dev/null
+++ b/share/man/man9/domain.9
@@ -0,0 +1,228 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 23, 2008
+.Dt DOMAIN 9
+.Os
+.Sh NAME
+.Nm net_add_domain ,
+.Nm pfctlinput ,
+.Nm pfctlinput2 ,
+.Nm pffindproto ,
+.Nm pffindtype ,
+.Nm DOMAIN_SET
+.Nd "network domain management"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kernel.h
+.In sys/protosw.h
+.In sys/domain.h
+.Ft void
+.Fn net_add_domain "void *data"
+.Ft void
+.Fn pfctlinput "int cmd" "struct sockaddr *sa"
+.Ft void
+.Fn pfctlinput2 "int cmd" "struct sockaddr *sa" "void *ctlparam"
+.Ft struct protosw *
+.Fn pffindproto "int family" "int protocol" "int type"
+.Ft struct protosw *
+.Fn pffindtype "int family" "int type"
+.Ft void
+.Fn DOMAIN_SET "name"
+.Sh DESCRIPTION
+Network protocols installed in the system are maintained within what
+are called domains
+(for example the
+.Va inetdomain
+and
+.Va localdomain ) .
+.Bd -literal
+struct domain {
+ int dom_family; /* AF_xxx */
+ char *dom_name;
+ void (*dom_init) /* initialize domain data structures */
+ (void);
+ int (*dom_externalize) /* externalize access rights */
+ (struct mbuf *, struct mbuf **);
+ void (*dom_dispose) /* dispose of internalized rights */
+ (struct mbuf *);
+ struct protosw *dom_protosw, *dom_protoswNPROTOSW;
+ struct domain *dom_next;
+ int (*dom_rtattach) /* initialize routing table */
+ (void **, int);
+ int dom_rtoffset; /* an arg to rtattach, in bits */
+ int dom_maxrtkey; /* for routing layer */
+};
+.Ed
+.Pp
+Each domain contains an array of protocol switch structures
+.Pq Vt "struct protosw *" ,
+one for each socket type supported.
+.Bd -literal
+struct protosw {
+ short pr_type; /* socket type used for */
+ struct domain *pr_domain; /* domain protocol a member of */
+ short pr_protocol; /* protocol number */
+ short pr_flags; /* see below */
+/* protocol-protocol hooks */
+ pr_input_t *pr_input; /* input to protocol (from below) */
+ pr_output_t *pr_output; /* output to protocol (from above) */
+ pr_ctlinput_t *pr_ctlinput; /* control input (from below) */
+ pr_ctloutput_t *pr_ctloutput; /* control output (from above) */
+/* user-protocol hook */
+ pr_usrreq_t *pr_ousrreq;
+/* utility hooks */
+ pr_init_t *pr_init;
+ pr_fasttimo_t *pr_fasttimo; /* fast timeout (200ms) */
+ pr_slowtimo_t *pr_slowtimo; /* slow timeout (500ms) */
+ pr_drain_t *pr_drain; /* flush any excess space possible */
+
+ struct pr_usrreqs *pr_usrreqs; /* supersedes pr_usrreq() */
+};
+.Ed
+.Pp
+The following functions handle the registration of a new domain,
+lookups of specific protocols and protocol types within those domains,
+and handle control messages from the system.
+.Pp
+.Fn pfctlinput
+is called by the system whenever an event occurs that could affect every
+domain.
+Examples of those types of events are routing table changes, interface
+shutdowns or certain
+.Tn ICMP
+message types.
+When called,
+.Fn pfctlinput
+calls the protocol specific
+.Fn pr_ctlinput
+function for each protocol in that has defined one, in every domain.
+.Pp
+.Fn pfctlinput2
+provides that same functionality of
+.Fn pfctlinput ,
+but with a few additional checks and a new
+.Vt "void *"
+argument that is passed directly to the protocol's
+.Fn pr_ctlinput
+function.
+Unlike
+.Fn pfctlinput ,
+.Fn pfctlinput2
+verifies that
+.Fa sa
+is not
+.Dv NULL ,
+and that only the protocol families that are the same as
+.Fa sa
+have their
+.Fn pr_ctlinput
+function called.
+.Pp
+.Fn net_add_domain
+adds a new protocol domain to the system.
+The argument
+.Fa data
+is cast directly to
+.Vt "struct domain *"
+within the function, but is declared
+.Vt "void *"
+in order to prevent compiler warnings when new domains are registered with
+.Fn SYSINIT .
+In most cases
+.Fn net_add_domain
+is not called directly, instead
+.Fn DOMAIN_SET
+is used.
+.Pp
+If the new domain has defined an initialization routine, it is called by
+.Fn net_add_domain ;
+as well, each of the protocols within the domain that have defined an
+initialization routine will have theirs called.
+.Pp
+Once a domain is added it cannot be unloaded.
+This is because there is
+no reference counting system in place to determine if there are any
+active references from sockets within that domain.
+.Pp
+.Fn pffindtype
+and
+.Fn pffindproto
+look up a protocol by its number or by its type.
+In most cases, if the protocol or type cannot be found,
+.Dv NULL
+is returned, but
+.Fn pffindproto
+may return the default if the requested type is
+.Dv SOCK_RAW ,
+a protocol switch type of
+.Dv SOCK_RAW
+is found, and the domain has a default raw protocol.
+.Pp
+Both functions are called by
+.Fn socreate
+in order to resolve the protocol for the socket currently being created.
+.Pp
+.Fn DOMAIN_SET
+is a macro that simplifies the registration of a domain via
+.Fn SYSINIT .
+The code resulting from the macro expects there to be a domain structure
+named
+.Dq Fa name Ns Li domain
+where
+.Fa name
+is the argument to
+.Fn DOMAIN_SET :
+.Bd -literal
+struct domain localdomain =
+{ AF_LOCAL, "local", unp_init, unp_externalize, unp_dispose,
+ localsw, &localsw[sizeof(localsw)/sizeof(localsw[0])] };
+
+DOMAIN_SET(local);
+.Ed
+.Sh RETURN VALUES
+Both
+.Fn pffindtype
+and
+.Fn pffindproto
+return a
+.Vt "struct protosw *"
+for the protocol requested.
+If the protocol or socket type is not found,
+.Dv NULL
+is returned.
+In the case of
+.Fn pffindproto ,
+the default protocol may be returned for
+.Dv SOCK_RAW
+types if the domain has a default raw protocol.
+.Sh SEE ALSO
+.Xr socket 2
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/driver.9 b/share/man/man9/driver.9
new file mode 100644
index 0000000..0030915
--- /dev/null
+++ b/share/man/man9/driver.9
@@ -0,0 +1,114 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1998 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 16, 1998
+.Dt DRIVER 9
+.Os
+.Sh NAME
+.Nm driver
+.Nd structure describing a device driver
+.Sh SYNOPSIS
+.Bd -literal
+#include <sys/param.h>
+#include <sys/bus.h>
+
+static int foo_probe(device_t);
+static int foo_attach(device_t);
+static int foo_detach(device_t);
+static int foo_frob(device_t, int, int);
+static int foo_twiddle(device_t, char *);
+
+static device_method_t foo_methods[] = {
+ /* Methods from the device interface */
+ DEVMETHOD(device_probe, foo_probe),
+ DEVMETHOD(device_attach, foo_attach),
+ DEVMETHOD(device_detach, foo_detach),
+
+ /* Methods from the bogo interface */
+ DEVMETHOD(bogo_frob, foo_frob),
+ DEVMETHOD(bogo_twiddle, foo_twiddle),
+
+ /* Terminate method list */
+ { 0, 0 }
+};
+
+static driver_t foo_driver {
+ "foo",
+ foo_methods,
+ sizeof(struct foo_softc)
+};
+
+static devclass_t foo_devclass;
+
+DRIVER_MODULE(foo, bogo, foo_driver, foo_devclass, 0, 0);
+.Ed
+.Sh DESCRIPTION
+Each driver in the kernel is described by a
+.Dv driver_t
+structure.
+The structure contains the name of the device, a pointer
+to a list of methods, an indication of the kind of device which the
+driver implements and the size of the private data which the driver
+needs to associate with a device instance.
+Each driver will implement
+one or more sets of methods (called interfaces).
+The example driver
+implements the standard "driver" interface and the fictitious "bogo"
+interface.
+.Pp
+When a driver is registered with the system (by the
+.Dv DRIVER_MODULE
+macro, see
+.Xr DRIVER_MODULE 9 ) ,
+it is added to the list of drivers contained in the devclass
+of its parent bus type.
+For instance all PCI drivers would be
+contained in the devclass named "pci" and all ISA drivers would be
+in the devclass named "isa".
+The reason the drivers are not held in the device object of the parent
+bus is to handle multiple instances of a given type of bus.
+The
+.Dv DRIVER_MODULE
+macro will also create the devclass with the name of the driver and
+can optionally call extra initialisation code in the driver by
+specifying an extra module event handler and argument as the last two
+arguments.
+.Sh SEE ALSO
+.Xr devclass 9 ,
+.Xr device 9 ,
+.Xr DEVICE_ATTACH 9 ,
+.Xr DEVICE_DETACH 9 ,
+.Xr DEVICE_IDENTIFY 9 ,
+.Xr DEVICE_PROBE 9 ,
+.Xr DEVICE_SHUTDOWN 9 ,
+.Xr DRIVER_MODULE 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/extattr.9 b/share/man/man9/extattr.9
new file mode 100644
index 0000000..9c74a60
--- /dev/null
+++ b/share/man/man9/extattr.9
@@ -0,0 +1,96 @@
+.\"-
+.\" Copyright (c) 1999, 2000, 2001, 2003 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$
+.\"
+.Dd December 23, 1999
+.Os
+.Dt EXTATTR 9
+.Sh NAME
+.Nm extattr
+.Nd virtual file system named extended attributes
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/extattr.h
+.Sh DESCRIPTION
+Named extended attributes allow additional meta-data to be associated
+with vnodes representing files and directories.
+The semantics of this additional data is that of a "name=value" pair, where
+a name may be defined or undefined, and if defined, associated with zero or
+more bytes of arbitrary binary data.
+Extended attribute names exist within a set of namespaces; each operation
+on an extended attribute is required to provide the namespace to which to
+operation refers.
+If the same name is present in multiple namespaces, the extended attributes
+associated with the names are stored and manipulated independently.
+The following two namespaces are defined universally, although individual
+file systems may implement additional namespaces, or not implement
+these namespaces:
+.Dv EXTATTR_NAMESPACE_USER ,
+.Dv EXTATTR_NAMESPACE_SYSTEM .
+The semantics of these attributes are intended to be as follows: user
+attribute data is protected according the normal discretionary
+and mandatory protections associated with the data in the file or
+directory; system attribute data is protected such that appropriate
+privilege is required to directly access or manipulate these attributes.
+.Pp
+Reads of extended attribute data may return specific contiguous regions of
+the meta-data, in the style of
+.Xr VOP_READ 9 ,
+but writes will replace the entire current "value" associated with
+a given name.
+As there are a plethora of file systems with differing extended attributes,
+availability and functionality of these functions may be limited, and they
+should be used with awareness of the underlying semantics of the supporting
+file system.
+Authorization schemes for extended attribute data may also vary by file
+system, as well as maximum attribute size, and whether or not any or
+specific new attributes may be defined.
+.Pp
+Extended attributes are named using a null-terminated character string.
+Depending on underlying file system semantics, this name may or may not be
+case-sensitive.
+Appropriate vnode extended attribute calls are:
+.Xr VOP_GETEXTATTR 9 ,
+.Xr VOP_LISTEXTATTR 9 ,
+and
+.Xr VOP_SETEXTATTR 9 .
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr VFS_EXTATTRCTL 9 ,
+.Xr VOP_GETEXTATTR 9 ,
+.Xr VOP_LISTEXTATTR 9 ,
+.Xr VOP_SETEXTATTR 9
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
+.Sh BUGS
+In addition, the interface does not provide a mechanism to retrieve
+the current set of available attributes; it has been suggested that
+providing a
+.Dv NULL
+attribute name should cause a list of defined attributes for the passed file
+or directory, but this is not currently implemented.
diff --git a/share/man/man9/fetch.9 b/share/man/man9/fetch.9
new file mode 100644
index 0000000..7de3ff7
--- /dev/null
+++ b/share/man/man9/fetch.9
@@ -0,0 +1,89 @@
+.\" $NetBSD: fetch.9,v 1.2 1996/01/09 21:59:24 perry Exp $
+.\"
+.\" Copyright (c) 1996 Jason R. Thorpe.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed by Kenneth Stailey.
+.\"
+.\" 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
+.\" by Jason R. Thorpe.
+.\" 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$
+.\"
+.Dd January 7, 1996
+.Dt FETCH 9
+.Os
+.Sh NAME
+.Nm fetch ,
+.Nm fubyte ,
+.Nm fusword ,
+.Nm fuswintr ,
+.Nm fuword
+.Nd fetch data from user-space
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/time.h
+.In sys/systm.h
+.In sys/resourcevar.h
+.Ft int
+.Fn fubyte "const void *base"
+.Ft int
+.Fn fusword "void *base"
+.Ft int
+.Fn fuswintr "void *base"
+.Ft long
+.Fn fuword "const void *base"
+.Sh DESCRIPTION
+The
+.Nm
+functions are designed to copy small amounts of data from user-space.
+.Pp
+The
+.Nm
+routines provide the following functionality:
+.Bl -tag -width "fuswintr()"
+.It Fn fubyte
+Fetches a byte of data from the user-space address
+.Pa base .
+.It Fn fusword
+Fetches a short word of data from the user-space address
+.Pa base .
+.It Fn fuswintr
+Fetches a short word of data from the user-space address
+.Pa base .
+This function is safe to call during an interrupt context.
+.It Fn fuword
+Fetches a word of data from the user-space address
+.Pa base .
+.El
+.Sh RETURN VALUES
+The
+.Nm
+functions return the data fetched or -1 on failure.
+.Sh SEE ALSO
+.Xr copy 9 ,
+.Xr store 9
diff --git a/share/man/man9/firmware.9 b/share/man/man9/firmware.9
new file mode 100644
index 0000000..87d43e3
--- /dev/null
+++ b/share/man/man9/firmware.9
@@ -0,0 +1,270 @@
+.\" Copyright (c) 2006 Max Laier <mlaier@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd August 2, 2008
+.Os
+.Dt FIRMWARE 9
+.Sh NAME
+.Nm firmware_register ,
+.Nm firmware_unregister ,
+.Nm firmware_get ,
+.Nm firmware_put
+.Nd firmware image loading and management
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/linker.h
+.In sys/firmware.h
+.Bd -literal
+struct firmware {
+ const char *name; /* system-wide name */
+ const void *data; /* location of image */
+ size_t datasize; /* size of image in bytes */
+ unsigned int version; /* version of the image */
+};
+.Ed
+.Ft "const struct firmware *"
+.Fo firmware_register
+.Fa "const char *imagename"
+.Fa "const void *data"
+.Fa "size_t datasize"
+.Fa "unsigned int version"
+.Fa "const struct firmware *parent"
+.Fc
+.Ft int
+.Fn firmware_unregister "const char *imagename"
+.Ft "const struct firmware *"
+.Fn firmware_get "const char *imagename"
+.Ft void
+.Fn firmware_put "const struct firmware *fp" "int flags"
+.Sh DESCRIPTION
+The
+.Nm firmware
+abstraction provides a convenient interface for loading
+.Nm firmware images
+into the kernel, and for accessing such images from kernel components.
+.Pp
+A
+.Nm firmware image
+(or
+.Nm image
+for brevity)
+is an opaque block of data residing in kernel memory.
+It is associated to a unique
+.Nm imagename
+which constitutes a search key, and to an integer
+.Nm version
+number, which is also an opaque piece of information for the
+firmware subsystem.
+.Pp
+An image is registered with the
+.Nm firmware
+subsystem by calling the function
+.Fn firmware_register ,
+and unregistered by calling
+.Fn firmware_unregister .
+These functions are usually (but not exclusively) called by
+specially crafted kernel modules that contain the firmware image.
+The modules can be statically compiled in the kernel, or loaded by
+.Nm /boot/loader ,
+manually at runtime, or on demand by the firmware subsystem.
+.Pp
+.Nm Clients
+of the firmware subsystem can request access to a given image
+by calling the function
+.Fn firmware_get
+with the
+.Nm imagename
+they want as an argument. If a matching image is not already registered,
+the firmware subsystem will try to load it using the
+mechanisms specified below (typically, a kernel module
+with
+.Nm the same name
+as the image).
+.Sh API DESCRIPTION
+The kernel
+.Nm firmware API
+is made of the following functions:
+.Pp
+.Fn firmware_register
+registers with the kernel an image of size
+.Nm datasize
+located at address
+.Nm data ,
+under the name
+.Nm imagename .
+.Pp
+The function returns NULL on error (e.g. because an
+image with the same name already exists, or the image
+table is full), or a
+.Ft const struct firmware *
+pointer to the image requested.
+.Pp
+.Fn firmware_unregister
+tries to unregister the firmware image
+.Nm imagename
+from the system. The function is successful and returns 0
+if there are no pending references to the image, otherwise
+it does not unregister the image and returns EBUSY.
+.Pp
+.Fn firmware_get
+returns the requested firmware image.
+If the image is not yet registered with the system,
+the function tries to load it.
+This involves the linker subsystem and disk access, so
+.Fn firmware_get
+must not be called with any locks (except for
+.Va Giant ) .
+Note also that if the firmware image is loaded from a filesystem
+it must already be mounted.
+In particular this means that it may be necessary to defer requests
+from a driver attach method unless it is known the root filesystem is
+already mounted.
+.Pp
+On success,
+.Fn firmware_get
+returns a pointer to the image description and increases the reference count
+for this image. On failure, the function returns NULL.
+.Pp
+.Fn firmware_put
+drops a reference to a firmware image.
+The
+.Fa flags
+argument may be set to
+.Dv FIRMWARE_UNLOAD
+to indicate that
+firmware_put is free to reclaim resources associated with
+the firmware image if this is the last reference.
+By default a firmware image will be deferred to a
+.Xr taskqueue 9
+thread so the call may be done while holding a lock.
+In certain cases, such as on driver detach, this cannot be allowed.
+.Sh FIRMWARE LOADING MECHANISMS
+As mentioned before, any component of the system can register
+firmware images at any time by simply calling
+.Fn firmware_register .
+.Pp
+This is typically done when a module containing
+a firmware image is given control,
+whether compiled in, or preloaded by
+.Nm /boot/loader ,
+or manually loaded with
+.Xr kldload 8 .
+However, a system can implement additional mechanisms to bring
+these images in memory before calling
+.Fn firmware_register .
+.Pp
+When
+.Fn firmware_get
+does not find the requested image, it tries to load it using
+one of the available loading mechanisms.
+At the moment, there is only one, namely
+.Nm Loadable kernel modules :
+.Pp
+A firmware image named
+.Nm foo
+is looked up by trying to load the module named
+.Nm foo.ko ,
+using the facilities described in
+.Xr kld 4 .
+In particular, images are looked up in the directories specified
+by the sysctl variable
+.Nm kern.module_path
+which on most systems defaults to
+.Nm /boot/kernel;/boot/modules .
+.Pp
+Note that in case a module contains multiple images,
+the caller should first request a
+.Fn firmware_get
+for the first image contained in the module, followed by requests
+for the other images.
+.Sh BUILDING FIRMWARE LOADABLE MODULES
+A firmware module is built by embedding the
+.Nm firmware image
+into a suitable loadable kernel module that calls
+.Fn firmware_register
+on loading, and
+.Fn firmware_unregister
+on unloading.
+.Pp
+Various system scripts and makefiles let you build a module
+by simply writing a Makefile with the following entries:
+.Bd -literal
+
+ KMOD= imagename
+ FIRMWS= image_file:imagename[:version]
+ .include <bsd.kmod.mk>
+
+.Ed
+where KMOD is the basename of the module; FIRMWS is a list of
+colon-separated tuples indicating the image_file's to be embedded
+in the module, the imagename and version of each firmware image.
+.Pp
+If you need to embed firmware images into a system, you should write
+appropriate entries in the <files.arch> file, e.g. this example is
+from
+.Nm sys/arm/xscale/ixp425/files.ixp425:
+.Bd -literal
+ixp425_npe_fw.c optional npe_fw \\
+ compile-with "${AWK} -f $S/tools/fw_stub.awk \\
+ IxNpeMicrocode.dat:npe_fw -mnpe -c${.TARGET}" \\
+ no-implicit-rule before-depend local \\
+ clean "ixp425_npe_fw.c"
+#
+# NB: ld encodes the path in the binary symbols generated for the
+# firmware image so link the file to the object directory to
+# get known values for reference in the _fw.c file.
+#
+IxNpeMicrocode.fwo optional npe_fw \\
+ dependency "IxNpeMicrocode.dat" \\
+ compile-with "${LD} -b binary -d -warn-common \\
+ -r -d -o ${.TARGET} IxNpeMicrocode.dat" \\
+ no-implicit-rule \\
+ clean "IxNpeMicrocode.fwo"
+IxNpeMicrocode.dat optional npe_fw \\
+ dependency ".PHONY" \\
+ compile-with "uudecode < $S/contrib/dev/npe/IxNpeMicrocode.dat.uu" \\
+ no-obj no-implicit-rule \\
+ clean "IxNpeMicrocode.dat"
+.Ed
+.Pp
+Note that generating the firmware modules in this way requires
+the availability of the following tools:
+.Xr awk ,
+.Xr Make ,
+the compiler and the linker.
+.Sh SEE ALSO
+.Xr module 9 ,
+.Xr kld 4
+.Pp
+.Pa /usr/share/examples/kld/firmware
+.Sh HISTORY
+The
+.Nm firmware
+system was introduced in
+.Fx 6.1 .
+.Sh AUTHORS
+This manual page was written by
+.An Max Laier Aq mlaier@FreeBSD.org .
diff --git a/share/man/man9/g_access.9 b/share/man/man9/g_access.9
new file mode 100644
index 0000000..95ad1da
--- /dev/null
+++ b/share/man/man9/g_access.9
@@ -0,0 +1,165 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_ACCESS 9
+.Os
+.Sh NAME
+.Nm g_access
+.Nd "control access to GEOM consumers and their providers"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft int
+.Fn g_access "struct g_consumer *cp" "int dcr" "int dcw" "int dce"
+.Sh DESCRIPTION
+The
+.Fn g_access
+function allows to open, close, and generally change access to the provider
+which is attached to the given consumer
+.Fa cp .
+The arguments
+.Fa dcr ,
+.Fa dcw ,
+and
+.Fa dce
+represent relative read, write, and exclusive access count changes.
+Read and write access counts are self explanatory, and
+exclusive access counts deny write access to other interested parties.
+A provider's access count is the sum of the access counts of all
+attached consumers.
+.Pp
+After attaching a consumer to a provider with
+.Xr g_attach 9 ,
+the
+.Fn g_access
+function has to be called on the consumer before starting I/O requests.
+.Sh RESTRICTIONS/CONDITIONS
+The consumer has to be attached to a provider.
+.Pp
+The intended change must not result in a negative access count.
+.Pp
+No-operation is not permitted
+.Fa ( dcr
+=
+.Fa dcw
+=
+.Fa dce
+=
+.Li 0 ) .
+.Pp
+The provider's geom must have an access method defined (e.g.,
+.Va gp->access ) .
+.Pp
+The topology lock has to be held.
+.Sh RETURN VALUES
+The
+.Fn g_access
+function returns 0 if successful; otherwise an error code is returned.
+Note that
+.Fn g_access
+cannot fail when the arguments
+.Fa dcr ,
+.Fa dcw ,
+and
+.Fa dce
+are less than or equal to 0.
+.Sh EXAMPLES
+Create a consumer, attach it to a given provider, gain read access and
+read first sector.
+.Bd -literal -offset indent
+void
+some_function(struct g_geom *mygeom, struct g_provider *pp)
+{
+ struct g_consumer *cp;
+ void *ptr;
+ int error;
+
+ g_topology_assert();
+
+ /* Create new consumer on 'mygeom' geom. */
+ cp = g_new_consumer(mygeom);
+ /* Attach newly created consumer to given provider. */
+ if (g_attach(cp, pp) != 0) {
+ g_destroy_consumer(cp);
+ return;
+ }
+ /* Open provider for reading through our consumer. */
+ error = g_access(cp, 1, 0, 0);
+ if (error != 0) {
+ printf("Cannot access provider: %s\\n", error);
+ g_detach(cp);
+ g_destroy_consumer(cp);
+ return;
+ }
+
+ /*
+ * Don't hold topology lock while reading.
+ */
+ g_topology_unlock();
+ ptr = g_read_data(cp, 0, pp->sectorsize, &error);
+ if (ptr == NULL)
+ printf("Error while reading: %d\\n", error);
+ /*
+ * Do something useful with data.
+ */
+ g_topology_lock();
+
+ /* Disconnect from provider (release access count). */
+ g_access(cp, -1, 0, 0);
+ /* Detach from provider. */
+ g_detach(cp);
+ /* Destroy consumer. */
+ g_destroy_consumer(cp);
+}
+.Ed
+.Sh ERRORS
+Possible errors:
+.Bl -tag -width Er
+.It Bq Er EPERM
+The function is trying to open a provider with an exclusive access count, but
+it is already open for writing.
+.It Bq Er EPERM
+The function is trying to open a provider for writing, but it is already
+exclusively open.
+.El
+.Pp
+Any other error that can be returned by the provider's access method.
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_attach.9 b/share/man/man9/g_attach.9
new file mode 100644
index 0000000..4bf7d9c
--- /dev/null
+++ b/share/man/man9/g_attach.9
@@ -0,0 +1,141 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_ATTACH 9
+.Os
+.Sh NAME
+.Nm g_attach ,
+.Nm g_detach
+.Nd "attach/detach GEOM consumers to/from providers"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft int
+.Fn g_attach "struct g_consumer *cp" "struct g_provider *pp"
+.Ft void
+.Fn g_detach "struct g_consumer *cp"
+.Sh DESCRIPTION
+The
+.Fn g_attach
+function attaches given consumer
+.Fa cp
+to given provider
+.Fa pp ,
+thus establishing a communication channel between the consumer and the
+provider that allows to change access counts and perform I/O operations.
+.Pp
+The
+.Fn g_detach
+function detaches given consumer
+.Fa cp
+from its corresponding provider, tearing down the communication channel
+between them.
+.Sh RESTRICTIONS/CONDITIONS
+.Fn g_attach :
+.Bl -item -offset indent
+.It
+The consumer must not be attached to a provider.
+.It
+The operation must not create a topology loop.
+.It
+The topology lock has to be held.
+.El
+.Pp
+.Fn g_detach :
+.Bl -item -offset indent
+.It
+The consumer has to be attached.
+.It
+The access count has to be 0.
+.It
+There must be no active requests.
+.It
+The topology lock has to be held.
+.El
+.Sh RETURN VALUES
+The
+.Fn g_attach
+function returns 0 if successful; otherwise an error code is returned.
+.Sh EXAMPLES
+Create a consumer, attach it to a given provider, gain read access and clean up.
+.Bd -literal -offset indent
+void
+some_function(struct g_geom *mygeom, struct g_provider *pp)
+{
+ struct g_consumer *cp;
+
+ g_topology_assert();
+
+ /* Create new consumer on 'mygeom' geom. */
+ cp = g_new_consumer(mygeom);
+ /* Attach newly created consumer to given provider. */
+ if (g_attach(cp, pp) != 0) {
+ g_destroy_consumer(cp);
+ return;
+ }
+ /* Open provider for reading through our consumer. */
+ if (g_access(cp, 1, 0, 0) != 0) {
+ g_detach(cp);
+ g_destroy_consumer(cp);
+ return;
+ }
+
+ g_topology_unlock();
+ /*
+ * Read data from provider.
+ */
+ g_topology_lock();
+
+ /* Disconnect from provider (release access count). */
+ g_access(cp, -1, 0, 0);
+ /* Detach from provider. */
+ g_detach(cp);
+ /* Destroy consumer. */
+ g_destroy_consumer(cp);
+}
+.Ed
+.Sh ERRORS
+Possible errors:
+.Bl -tag -width Er
+.It Bq Er ELOOP
+The operation creates a topology loop.
+.El
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_bio.9 b/share/man/man9/g_bio.9
new file mode 100644
index 0000000..e7351b8
--- /dev/null
+++ b/share/man/man9/g_bio.9
@@ -0,0 +1,277 @@
+.\"
+.\" Copyright (c) 2004-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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 1, 2006
+.Dt G_BIO 9
+.Os
+.Sh NAME
+.Nm g_new_bio ,
+.Nm g_clone_bio ,
+.Nm g_destroy_bio ,
+.Nm g_print_bio
+.Nd "GEOM bio controlling functions"
+.Sh SYNOPSIS
+.In sys/bio.h
+.In geom/geom.h
+.Ft "struct bio *"
+.Fn g_new_bio void
+.Ft "struct bio *"
+.Fn g_alloc_bio void
+.Ft "struct bio *"
+.Fn g_clone_bio "struct bio *bp"
+.Ft "struct bio *"
+.Fn g_duplicate_bio "struct bio *bp"
+.Ft void
+.Fn g_destroy_bio "struct bio *bp"
+.Ft void
+.Fn g_print_bio "struct bio *bp"
+.Sh DESCRIPTION
+A
+.Vt "struct bio"
+is used by GEOM to describe I/O requests, its
+most important fields are described below:
+.Bl -tag -width ".Va bio_attribute"
+.It Va bio_cmd
+I/O request command.
+There are four I/O requests available in GEOM:
+.Bl -tag -width ".Dv BIO_GETATTR"
+.It Dv BIO_READ
+A read request.
+.It Dv BIO_WRITE
+A write request.
+.It Dv BIO_DELETE
+Indicates that a certain range of data is no longer used and that
+it can be erased or freed as the underlying technology supports.
+Technologies like flash adaptation layers can arrange to erase the relevant
+blocks before they will become reassigned and cryptographic devices may
+want to fill random bits into the range to reduce the amount of data
+available for attack.
+.It Dv BIO_GETATTR
+Inspect and manipulate out-of-band
+attributes on a particular provider or path.
+Attributes are named by ascii strings and are stored in the
+.Va bio_attribute
+field.
+.It Dv BIO_FLUSH
+Tells underlying providers to flush their write caches.
+.El
+.It Va bio_flags
+Available flags:
+.Bl -tag -width ".Dv BIO_ERROR"
+.It Dv BIO_ERROR
+Request failed (error value is stored in
+.Va bio_error
+field).
+.It Dv BIO_DONE
+Request finished.
+.El
+.It Va bio_cflags
+Private use by the consumer.
+.It Va bio_pflags
+Private use by the provider.
+.It Va bio_offset
+Offset into provider.
+.It Va bio_data
+Pointer to data buffer.
+.It Va bio_error
+Error value when
+.Dv BIO_ERROR
+is set.
+.It Va bio_done
+Pointer to function which will be called when the request is finished.
+.It Va bio_driver1
+Private use by the provider.
+.It Va bio_driver2
+Private use by the provider.
+.It Va bio_caller1
+Private use by the consumer.
+.It Va bio_caller2
+Private use by the consumer.
+.It Va bio_attribute
+Attribute string for
+.Dv BIO_GETATTR
+request.
+.It Va bio_from
+Consumer to use for request (attached to provider stored in
+.Va bio_to
+field) (typically read-only for a class).
+.It Va bio_to
+Destination provider (typically read-only for a class).
+.It Va bio_length
+Request length in bytes.
+.It Va bio_completed
+Number of bytes completed, but they may not be completed from
+the front of the request.
+.It Va bio_children
+Number of
+.Vt bio
+clones (typically read-only for a class).
+.It Va bio_inbed
+Number of finished
+.Vt bio
+clones.
+.It Va bio_parent
+Pointer to parent
+.Vt bio .
+.El
+.Pp
+The
+.Fn g_new_bio
+function allocates a new, empty
+.Vt bio
+structure.
+.Pp
+.Fn g_alloc_bio
+- same as
+.Fn g_new_bio ,
+but always succeeds (allocates bio with the
+.Dv M_WAITOK
+malloc flag).
+.Pp
+The
+.Fn g_clone_bio
+function allocates a new
+.Vt bio
+structure and copies the following fields from the
+.Vt bio
+given as an argument to clone:
+.Va bio_cmd ,
+.Va bio_length ,
+.Va bio_offset ,
+.Va bio_data ,
+.Va bio_attribute .
+The field
+.Va bio_parent
+in the clone points to the passed
+.Vt bio
+and the field
+.Va bio_children
+in the passed
+.Vt bio
+is incremented.
+.Pp
+This function should be used for every request which enters through
+the provider of a particular geom and needs to be scheduled down.
+Proper order is:
+.Pp
+.Bl -enum -compact
+.It
+Clone the received
+.Vt "struct bio" .
+.It
+Modify the clone.
+.It
+Schedule the clone on its own consumer.
+.El
+.Pp
+.Fn g_duplicate_bio
+- same as
+.Fn g_clone_bio ,
+but always succeeds (allocates bio with the
+.Dv M_WAITOK
+malloc flag).
+.Pp
+The
+.Fn g_destroy_bio
+function deallocates and destroys the given
+.Vt bio
+structure.
+.Pp
+The
+.Fn g_print_bio
+function prints information about the given
+.Vt bio
+structure (for debugging purposes).
+.Sh RETURN VALUES
+The
+.Fn g_new_bio
+and
+.Fn g_clone_bio
+functions return a pointer to the allocated
+.Vt bio ,
+or
+.Dv NULL
+if an error occurred.
+.Sh EXAMPLES
+Implementation of
+.Dq Dv NULL Ns -transformation ,
+meaning that an I/O request is cloned and scheduled down without any
+modifications.
+Let us assume that field
+.Va ex_consumer
+in structure
+.Vt example_softc
+contains a consumer attached to the provider we want to operate on.
+.Bd -literal -offset indent
+void
+example_start(struct bio *bp)
+{
+ struct example_softc *sc;
+ struct bio *cbp;
+
+ printf("Request received: ");
+ g_print_bio(bp);
+ printf("\\n");
+
+ sc = bp->bio_to->geom->softc;
+ if (sc == NULL) {
+ g_io_deliver(bp, ENXIO);
+ return;
+ }
+
+ /* Let's clone our bio request. */
+ cbp = g_clone_bio(bp);
+ if (cbp == NULL) {
+ g_io_deliver(bp, ENOMEM);
+ return;
+ }
+ cbp->bio_done = g_std_done; /* Standard 'done' function. */
+
+ /* Ok, schedule it down. */
+ /*
+ * The consumer can be obtained from
+ * LIST_FIRST(&bp->bio_to->geom->consumers) as well,
+ * if there is only one in our geom.
+ */
+ g_io_request(cbp, sc->ex_consumer);
+}
+.Ed
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_consumer.9 b/share/man/man9/g_consumer.9
new file mode 100644
index 0000000..e30fb80
--- /dev/null
+++ b/share/man/man9/g_consumer.9
@@ -0,0 +1,137 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_CONSUMER 9
+.Os
+.Sh NAME
+.Nm g_new_consumer ,
+.Nm g_destroy_consumer
+.Nd "GEOM consumers management"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft "struct g_consumer *"
+.Fn g_new_consumer "struct g_geom *gp"
+.Ft void
+.Fn g_destroy_consumer "struct g_consumer *cp"
+.Sh DESCRIPTION
+A GEOM consumer is the backdoor through which a geom connects to
+another GEOM provider and through which I/O requests are sent.
+.Pp
+The
+.Fn g_new_consumer
+function creates a new consumer on geom
+.Fa gp .
+Before using the new consumer, it has to be attached to a provider with
+.Xr g_attach 9
+and opened with
+.Xr g_access 9 .
+.Pp
+The
+.Fn g_destroy_consumer
+function destroys the given consumer and cancels all related pending events.
+This function is the last stage of killing an unwanted consumer.
+.Sh RESTRICTIONS/CONDITIONS
+.Fn g_new_consumer :
+.Bl -item -offset indent
+.It
+The geom
+.Fa gp
+has to have an
+.Va orphan
+method defined.
+.It
+The topology lock has to be held.
+.El
+.Pp
+.Fn g_destroy_consumer :
+.Bl -item -offset indent
+.It
+The consumer must not be attached to a provider.
+.It
+The access count has to be 0.
+.It
+The topology lock has to be held.
+.El
+.Sh RETURN VALUES
+The
+.Fn g_new_consumer
+function
+returns a pointer to the newly created consumer.
+.Sh EXAMPLES
+Create consumer, attach it to given provider, gain read access and clean up.
+.Bd -literal -offset indent
+void
+some_function(struct g_geom *mygeom, struct g_provider *pp)
+{
+ struct g_consumer *cp;
+
+ g_topology_assert();
+
+ /* Create new consumer on 'mygeom' geom. */
+ cp = g_new_consumer(mygeom);
+ /* Attach newly created consumer to given provider. */
+ if (g_attach(cp, pp) != 0) {
+ g_destroy_consumer(cp);
+ return;
+ }
+ /* Open provider for reading through our consumer. */
+ if (g_access(cp, 1, 0, 0) != 0) {
+ g_detach(cp);
+ g_destroy_consumer(cp);
+ return;
+ }
+
+ g_topology_unlock();
+ /*
+ * Read data from provider.
+ */
+ g_topology_lock();
+
+ /* Disconnect from provider (release access count). */
+ g_access(cp, -1, 0, 0);
+ /* Detach from provider. */
+ g_detach(cp);
+ /* Destroy consumer. */
+ g_destroy_consumer(cp);
+}
+.Ed
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_data.9 b/share/man/man9/g_data.9
new file mode 100644
index 0000000..f5cd696
--- /dev/null
+++ b/share/man/man9/g_data.9
@@ -0,0 +1,122 @@
+.\"
+.\" Copyright (c) 2004-2005 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_DATA 9
+.Os
+.Sh NAME
+.Nm g_read_data ,
+.Nm g_write_data
+.Nd "read/write data from/to GEOM consumer"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft "void *"
+.Fo g_read_data
+.Fa "struct g_consumer *cp" "off_t offset" "off_t length" "int *error"
+.Fc
+.Ft int
+.Fo g_write_data
+.Fa "struct g_consumer *cp" "off_t offset" "void *ptr" "off_t length"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn g_read_data
+function reads
+.Fa length
+bytes of data from the provider attached to consumer
+.Fa cp ,
+starting at offset
+.Fa offset .
+The buffer returned from
+.Fn g_read_data
+is allocated with
+.Fn g_malloc ,
+so it should be freed by the caller with
+.Fn g_free
+after use.
+If the operation fails, an error value will be stored in the
+.Fa error
+argument if it is not
+.Dv NULL .
+.Pp
+The
+.Fn g_write_data
+function writes
+.Fa length
+bytes of data from the buffer pointed to by
+.Fa ptr
+to the provider attached to consumer
+.Fa cp ,
+starting at offset
+.Fa offset .
+.Sh RESTRICTIONS/CONDITIONS
+The
+.Fa length
+argument
+should be a multiple of the provider's sectorsize
+and less than or equal to
+.Dv DFLTPHYS
+.Dv ( DFLTPHYS
+is defined in
+.In sys/param.h ) .
+.Pp
+The topology lock must not be held.
+.Sh RETURN VALUES
+The
+.Fn g_read_data
+function returns a pointer to a data buffer or
+.Dv NULL
+if an error occurred.
+In that case an error value is stored in the
+.Fa error
+argument unless it is
+.Dv NULL .
+.Pp
+The
+.Fn g_write_data
+function returns 0 if successful; otherwise an error code is returned.
+.Sh ERRORS
+Possible errors:
+.Bl -tag -width Er
+.It Bq Er EIO
+An I/O error occurred while reading from or writing to the consumer.
+.El
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_event.9 b/share/man/man9/g_event.9
new file mode 100644
index 0000000..380caa8
--- /dev/null
+++ b/share/man/man9/g_event.9
@@ -0,0 +1,189 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_EVENT 9
+.Os
+.Sh NAME
+.Nm g_post_event ,
+.Nm g_waitfor_event ,
+.Nm g_cancel_event
+.Nd "GEOM events management"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft int
+.Fn g_post_event "g_event_t *func" "void *arg" "int flag" ...
+.Ft int
+.Fn g_waitfor_event "g_event_t *func" "void *arg" "int flag" ...
+.Ft void
+.Fn g_cancel_event "void *ref"
+.Sh DESCRIPTION
+The GEOM framework has its own event queue to inform classes about important
+events.
+The event queue can be also used by GEOM classes themselves, for example
+to work around some restrictions in the I/O path, where sleeping, heavy weight
+tasks, etc.\& are not permitted.
+.Pp
+The
+.Fn g_post_event
+function tells the GEOM framework to call function
+.Fa func
+with argument
+.Fa arg
+from the event queue.
+The
+.Fa flag
+argument is passed to
+.Xr malloc 9
+for memory allocations inside of
+.Fn g_post_event .
+The only allowed flags are
+.Dv M_WAITOK
+and
+.Dv M_NOWAIT .
+The rest of the arguments are used as references to identify the event.
+An event can be canceled by using any of the given references as an
+argument to
+.Fn g_cancel_event .
+The list of references has to end with a
+.Dv NULL
+value.
+.Pp
+The
+.Fn g_waitfor_event
+function is a blocking version of the
+.Fn g_post_event
+function.
+It waits until the event is finished or canceled and then returns.
+.Pp
+The
+.Fn g_cancel_event
+function cancels all event(s) identified by
+.Fa ref .
+Cancellation is equivalent to calling the requested function
+with requested arguments and argument
+.Fa flag
+set to
+.Dv EV_CANCEL .
+.Sh RESTRICTIONS/CONDITIONS
+.Fn g_post_event :
+.Bl -item -offset indent
+.It
+The argument
+.Fa flag
+has to be
+.Dv M_WAITOK
+or
+.Dv M_NOWAIT .
+.It
+The list of references has to end with a
+.Dv NULL
+value.
+.El
+.Pp
+.Fn g_waitfor_event :
+.Bl -item -offset indent
+.It
+The argument
+.Fa flag
+has to be
+.Dv M_WAITOK
+or
+.Dv M_NOWAIT .
+.It
+The list of references has to end with a
+.Dv NULL
+value.
+.It
+The
+.Fn g_waitfor_event
+function cannot be called from an event, since doing so would result
+in a deadlock.
+.El
+.Sh RETURN VALUES
+The
+.Fn g_post_event
+and
+.Fn g_waitfor_event
+functions
+return 0 if successful; otherwise an error code is returned.
+.Sh EXAMPLES
+Example of a function called from the event queue.
+.Bd -literal -offset indent
+void
+example_event(void *arg, int flag)
+{
+
+ if (flag == EV_CANCEL) {
+ printf("Event with argument %p canceled.\\n", arg);
+ return;
+ }
+
+ printf("Event with argument %p called.\\n", arg);
+}
+.Ed
+.Sh ERRORS
+Possible errors for the
+.Fn g_post_event
+function:
+.Bl -tag -width Er
+.It Bq Er ENOMEM
+The
+.Fa flag
+argument was set to
+.Dv M_NOWAIT
+and there was insufficient memory.
+.El
+.Pp
+Possible errors for the
+.Fn g_waitfor_event
+function:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The event was canceled.
+.It Bq Er ENOMEM
+The
+.Fa flag
+argument was set to
+.Dv M_NOWAIT
+and there was insufficient memory.
+.El
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_geom.9 b/share/man/man9/g_geom.9
new file mode 100644
index 0000000..19c4910
--- /dev/null
+++ b/share/man/man9/g_geom.9
@@ -0,0 +1,206 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_GEOM 9
+.Os
+.Sh NAME
+.Nm g_new_geomf ,
+.Nm g_destroy_geom
+.Nd "geom management"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft "struct g_geom *"
+.Fn g_new_geomf "struct g_class *mp" "const char *fmt" ...
+.Ft void
+.Fn g_destroy_geom "struct g_geom *gp"
+.Sh DESCRIPTION
+The geom (do not confuse
+.Dq geom
+with
+.Dq GEOM )
+is an instance of a GEOM class.
+For example: in a typical i386
+.Fx
+system, there will be one geom
+of class MBR for each disk.
+The geom's name is not really important, it is only used in the XML
+dump and for debugging purposes.
+There can be many geoms with the same name.
+.Pp
+The
+.Fn g_new_geomf
+function creates a new geom, which will be an instance of the class
+.Fa mp .
+The geom's name is created in a
+.Xr printf 3 Ns
+-like way from the rest of the arguments.
+.Pp
+The
+.Fn g_destroy_geom
+function destroys the given geom immediately and cancels all related pending
+events.
+.Pp
+The
+.Vt g_geom
+structure
+contains fields that should be set by the caller after geom creation, but before
+creating any providers or consumers related to this geom (not all are required):
+.Bl -tag -offset indent -width indent
+.It Vt "g_start_t *" Va start
+Pointer to a function used for I/O processing.
+.It Vt "g_spoiled_t *" Va spoiled
+Pointer to a function used for consumers spoiling.
+.It Vt "g_dumpconf_t *" Va dumpconf
+Pointer to a function used for configuration in XML format dumping.
+.It Vt "g_access_t *" Va access
+Pointer to a function used for access control.
+.It Vt "g_orphan_t *" Va orphan
+Pointer to a function used to inform about orphaned consumer.
+.It Vt "g_ioctl_t *" Va ioctl
+Pointer to a function used for handling ioctl requests.
+.It Vt "void *" Va softc
+Field for private use.
+.El
+.Sh RESTRICTIONS/CONDITIONS
+If you intend to use providers in this geom you must set field
+.Va start
+of your geom.
+.Pp
+If you are planning to use consumers in your geom you must set fields
+.Va orphan
+and
+.Va access
+for it.
+.Pp
+.Fn g_new_geomf :
+.Bl -item -offset indent
+.It
+Class
+.Fa mp
+must be valid (registered in GEOM).
+.It
+The topology lock has to be held.
+.El
+.Pp
+.Fn g_destroy_geom :
+.Bl -item -offset indent
+.It
+The geom cannot posses any providers.
+.It
+The geom cannot posses any consumers.
+.It
+The topology lock has to be held.
+.El
+.Sh RETURN VALUES
+The
+.Fn g_new_geomf
+function
+returns a pointer to the newly created geom.
+.Sh EXAMPLES
+Create an example geom.
+.Bd -literal -offset indent
+static struct geom *
+g_example_start(struct bio *bp)
+{
+
+ [...]
+}
+
+static void
+g_example_orphan(struct g_consumer *cp)
+{
+
+ g_topology_assert();
+
+ [...]
+}
+
+static void
+g_example_spoiled(struct g_consumer *cp)
+{
+
+ g_topology_assert();
+
+ [...]
+}
+
+static void
+g_example_access(struct g_provider *pp, int dr, int dw, int de)
+{
+
+ [...]
+}
+
+static struct g_geom *
+create_example_geom(struct g_class *myclass)
+{
+ struct g_geom *gp;
+
+ g_topology_lock();
+ gp = g_new_geomf(myclass, "example_geom");
+ g_topology_unlock();
+ gp->start = g_example_start;
+ gp->orphan = g_example_orphan;
+ gp->spoiled = g_example_spoiled;
+ gp->access = g_example_access;
+ gp->softc = NULL;
+
+ return (gp);
+}
+
+static int
+destroy_example_geom(struct g_geom *gp)
+{
+
+ g_topology_lock();
+ if (!LIST_EMPTY(&gp->provider) ||
+ !LIST_EMPTY(&gp->consumer)) {
+ g_topology_unlock();
+ return (EBUSY);
+ }
+ g_destroy_geom(gp);
+ g_topology_unlock();
+
+ return (0);
+}
+.Ed
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_provider.9 b/share/man/man9/g_provider.9
new file mode 100644
index 0000000..05e4add
--- /dev/null
+++ b/share/man/man9/g_provider.9
@@ -0,0 +1,145 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_PROVIDER 9
+.Os
+.Sh NAME
+.Nm g_new_providerf ,
+.Nm g_destroy_provider ,
+.Nm g_error_provider
+.Nd "GEOM providers management"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft "struct g_provider *"
+.Fn g_new_providerf "struct g_geom *gp" "const char *fmt" ...
+.Ft void
+.Fn g_destroy_provider "struct g_provider *pp"
+.Ft void
+.Fn g_error_provider "struct g_provider *pp" "int error"
+.Sh DESCRIPTION
+A GEOM provider is the front gate at which a geom offers service.
+A provider is
+.Dq a disk-like thing which appears in Pa /dev
+\[en] a logical disk in other words.
+All providers have three main properties: name, sectorsize and size.
+.Pp
+The
+.Fn g_new_providerf
+function creates a new provider on given geom
+.Fa gp .
+The name of the provider, which will appear as device in
+.Xr devfs 5 ,
+is created
+in a
+.Xr printf 3 Ns
+-like way from the rest of
+the arguments.
+After creation, the caller has to set the provider's
+.Va mediasize
+and
+.Va sectorsize ,
+as well as other desired initializations, and then call
+.Fn g_error_provider
+to reset the provider's error, which is initially set to
+.Er ENXIO .
+.Pp
+The
+.Fn g_destroy_provider
+function destroys the given provider, cancels all related pending events and
+removes the corresponding devfs entry.
+.Pp
+The
+.Fn g_error_provider
+function is used to set the provider's error value.
+If set to a nonzero, all I/O requests will be denied,
+as well as increasing its access count will not be possible (error
+.Fa error
+will be returned).
+.Sh RESTRICTIONS/CONDITIONS
+.Fn g_new_provider :
+.Bl -item -offset indent
+.It
+The provider name should be unique, but this is not enforced by GEOM.
+If the name is not unique, one will end up with two (or more) files
+with the same name, which is a programmer error.
+.It
+The geom
+.Fa gp
+has to have a
+.Fa start
+method defined.
+.It
+The topology lock has to be held.
+.El
+.Pp
+.Fn g_destroy_provider :
+.Bl -item -offset indent
+.It
+The provider must not have consumers attached.
+.It
+The access count has to be 0.
+.It
+The topology lock has to be held.
+.El
+.Sh RETURN VALUES
+The
+.Fn g_new_providerf
+function returns a pointer to the newly created provider.
+.Sh EXAMPLES
+Create an example provider, set its parameters and make it usable.
+.Bd -literal -offset indent
+struct g_provider *
+create_example_provider(struct g_geom *gp)
+{
+ struct g_provider *pp;
+
+ g_topology_lock();
+ pp = g_new_providerf(gp, "example_provider");
+ g_topology_unlock();
+ pp->mediasize = 65536;
+ pp->sectorsize = 512;
+ g_error_provider(pp, 0);
+
+ return (pp);
+}
+.Ed
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider_by_name 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_provider_by_name.9 b/share/man/man9/g_provider_by_name.9
new file mode 100644
index 0000000..58da421
--- /dev/null
+++ b/share/man/man9/g_provider_by_name.9
@@ -0,0 +1,77 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_PROVIDER_BY_NAME 9
+.Os
+.Sh NAME
+.Nm g_provider_by_name
+.Nd "find GEOM provider with given name"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft "struct g_provider *"
+.Fn g_provider_by_name "const char *name"
+.Sh DESCRIPTION
+The
+.Fn g_provider_by_name
+function searches for a provider called
+.Fa name
+and returns the structure
+.Vt g_provider
+bound to it.
+Argument
+.Fa name
+should be a name, not a full path (i.e.,
+.Dq Pa da0 ,
+instead of
+.Dq Pa /dev/da0 ) .
+.Sh RESTRICTIONS/CONDITIONS
+The topology lock has to be held.
+.Sh RETURN VALUES
+The
+.Fn g_provider_by_name
+function
+returns a pointer to the provider called
+.Fa name
+or
+.Dv NULL
+if there is no such provider.
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_wither_geom 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/g_wither_geom.9 b/share/man/man9/g_wither_geom.9
new file mode 100644
index 0000000..2c4b10e
--- /dev/null
+++ b/share/man/man9/g_wither_geom.9
@@ -0,0 +1,86 @@
+.\"
+.\" Copyright (c) 2004 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd January 16, 2004
+.Dt G_WITHER_GEOM 9
+.Os
+.Sh NAME
+.Nm g_wither_geom
+.Nd "destroy geom and related providers and consumers when you get a chance"
+.Sh SYNOPSIS
+.In geom/geom.h
+.Ft void
+.Fn g_wither_geom "struct g_geom *gp" "int error"
+.Sh DESCRIPTION
+The
+.Fn g_wither_geom
+function tells GEOM that geom
+.Fa gp
+is to be destroyed.
+GEOM sets an error on each provider of the given geom (in the
+orphaning process) and waits for a chance to destroy the geom.
+If the access count of any possessed consumer goes to 0, the consumer will be
+detached and destroyed automatically.
+If the last consumer attached to any possessed provider will be detached,
+the provider will be destroyed.
+If there are no more providers nor consumers, the geom will be
+destroyed.
+.Pp
+This is an automatic
+.Dq garbage collect
+to avoid duplicated code in all classes.
+Before it is called, field
+.Va softc
+should be disposed off and set to
+.Dv NULL .
+Note that the
+.Fn g_wither_geom
+function gives no guarantee that the geom will be immediately destroyed, mostly
+because the access counts of the geom's consumers and providers may not be 0.
+That is why calling this function for every geom from a given class is not enough
+to be sure that the class can be unloaded.
+.Sh RESTRICTIONS/CONDITIONS
+The argument
+.Fa error
+must be nonzero.
+.Pp
+The topology lock has to be held.
+.Sh SEE ALSO
+.Xr geom 4 ,
+.Xr DECLARE_GEOM_CLASS 9 ,
+.Xr g_access 9 ,
+.Xr g_attach 9 ,
+.Xr g_bio 9 ,
+.Xr g_consumer 9 ,
+.Xr g_data 9 ,
+.Xr g_event 9 ,
+.Xr g_geom 9 ,
+.Xr g_provider 9 ,
+.Xr g_provider_by_name 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org .
diff --git a/share/man/man9/get_cyclecount.9 b/share/man/man9/get_cyclecount.9
new file mode 100644
index 0000000..c673111
--- /dev/null
+++ b/share/man/man9/get_cyclecount.9
@@ -0,0 +1,99 @@
+.\" Copyright (c) 2000 Mark R V Murray
+.\" 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$
+.\"
+.Dd November 20, 2000
+.Dt GET_CYCLECOUNT 9
+.Os
+.Sh NAME
+.Nm get_cyclecount
+.Nd get the CPU's fast counter register contents
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In machine/cpu.h
+.Ft u_int64_t
+.Fn get_cyclecount "void"
+.Sh DESCRIPTION
+The
+.Fn get_cyclecount
+function uses a register
+available in most modern CPUs
+to return a value
+that is monotonically increasing
+inside each CPU.
+.Pp
+On SMP systems,
+there will be a number of
+separate monotonic sequences,
+one for each CPU running.
+The value in the SMP case is
+selected from one of these sequences,
+dependent on which CPU
+was scheduled to service the request.
+.Pp
+The speed and the maximum value
+of each counter
+is CPU-dependent.
+Some CPUs
+(such as the
+.Tn Intel
+80486)
+do not have such a register,
+so
+.Fn get_cyclecount
+on these platforms
+returns the number of nanoseconds
+represented by the
+structure returned by
+.Xr nanotime 9 .
+.Pp
+The
+.Tn Pentium
+processors all use the
+.Li TSC
+register.
+.Pp
+The
+.Tn Alpha
+processors use the
+.Li PCC
+register.
+.Pp
+The
+.Tn IA64
+processors use the
+.Li AR.ITC
+register.
+.Sh SEE ALSO
+.Xr nanotime 9
+.Sh HISTORY
+The
+.Fn get_cyclecount
+function first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Mark Murray Aq markm@FreeBSD.org .
diff --git a/share/man/man9/getnewvnode.9 b/share/man/man9/getnewvnode.9
new file mode 100644
index 0000000..2e81212
--- /dev/null
+++ b/share/man/man9/getnewvnode.9
@@ -0,0 +1,69 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt GETNEWVNODE 9
+.Os
+.Sh NAME
+.Nm getnewvnode
+.Nd "get a new vnode"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/mount.h
+.Ft int
+.Fn getnewvnode "const char *tag" "struct mount *mp" "vop_t **vops" "struct vnode **vpp"
+.Sh DESCRIPTION
+The
+.Fn getnewvnode
+function initializes a new vnode, assigning it the vnode operations passed in
+.Fa vops .
+The vnode is either freshly allocated, or taken from the head of the
+free list depending on the number of vnodes already in the system.
+.Pp
+The arguments to
+.Fn getnewvnode
+are:
+.Bl -tag -width ".Fa vops"
+.It Fa tag
+The file system type string.
+This field should only be referenced for debugging or for userland utilities.
+.It Fa mp
+The mount point to add the new vnode to.
+.It Fa vops
+The vnode operations to assign to the new vnode.
+.It Fa vpp
+Points to the new vnode upon successful completion.
+.El
+.Sh RETURN VALUES
+.Fn getnewvnode
+returns 0 on success.
+There are currently no failure conditions - that do not result in a panic.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/groupmember.9 b/share/man/man9/groupmember.9
new file mode 100644
index 0000000..0d3629a
--- /dev/null
+++ b/share/man/man9/groupmember.9
@@ -0,0 +1,60 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 9, 2001
+.Dt GROUPMEMBER 9
+.Os
+.Sh NAME
+.Nm groupmember
+.Nd checks group set for a group ID
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/ucred.h
+.Ft int
+.Fn groupmember "gid_t gid" "struct ucred *cred"
+.Sh DESCRIPTION
+The
+.Fn groupmember
+function checks to see if the given
+.Fa gid
+is in the group set of the credentials.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa cred"
+.It Fa gid
+The group ID to check for.
+.It Fa cred
+The credentials to search for the group in.
+.El
+.Sh RETURN VALUES
+If the
+.Fa gid
+is found, 1 is returned; otherwise, 0 is returned.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/hash.9 b/share/man/man9/hash.9
new file mode 100644
index 0000000..d977ac3
--- /dev/null
+++ b/share/man/man9/hash.9
@@ -0,0 +1,161 @@
+.\" Copyright (c) 2001 Tobias Weingartner
+.\" 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.
+.\"
+.\" 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.
+.\"
+.\" $OpenBSD: hash.9,v 1.5 2003/04/17 05:08:39 jmc Exp $
+.\" $FreeBSD$
+.\"
+.Dd April 3, 2007
+.Dt HASH 9
+.Os
+.Sh NAME
+.Nm hash ,
+.Nm hash32 ,
+.Nm hash32_buf ,
+.Nm hash32_str ,
+.Nm hash32_strn ,
+.Nm hash32_stre ,
+.Nm hash32_strne
+.Nd general kernel hashing functions
+.Sh SYNOPSIS
+.In sys/hash.h
+.Ft uint32_t
+.Fn hash32_buf "const void *buf" "size_t len" "uint32_t hash"
+.Ft uint32_t
+.Fn hash32_str "const void *buf" "uint32_t hash"
+.Ft uint32_t
+.Fn hash32_strn "const void *buf" "size_t len" "uint32_t hash"
+.Ft uint32_t
+.Fn hash32_stre "const void *buf" "int end" "const char **ep" "uint32_t hash"
+.Ft uint32_t
+.Fn hash32_strne "const void *buf" "size_t len" "int end" "const char **ep" "uint32_t hash"
+.Sh DESCRIPTION
+The
+.Fn hash32
+functions are used to give a consistent and general interface to
+a decent hashing algorithm within the kernel.
+These functions can be used to hash
+.Tn ASCII
+.Dv NUL
+terminated strings, as well as blocks of memory.
+.Pp
+The
+.Fn hash32_buf
+function is used as a general buffer hashing function.
+The argument
+.Fa buf
+is used to pass in the location, and
+.Fa len
+is the length of the buffer.
+The argument
+.Fa hash
+is used to extend an existing hash, or is passed the initial value
+.Dv HASHINIT
+to start a new hash.
+.Pp
+The
+.Fn hash32_str
+function is used to hash a
+.Dv NUL
+terminated string passed in
+.Fa buf
+with initial hash value given in
+.Fa hash .
+.Pp
+The
+.Fn hash32_strn
+function is like the
+.Fn hash32_str
+function, except it also takes a
+.Fa len
+argument, which is the maximal length of the expected string.
+.Pp
+The
+.Fn hash32_stre
+and
+.Fn hash32_strne
+functions are helper functions used by the kernel to hash pathname
+components.
+These functions have the additional termination condition
+of terminating when they find a character given by
+.Fa end
+in the string to be hashed.
+If the argument
+.Fa ep
+is not
+.Dv NULL ,
+it is set to the point in the buffer at which the hash function
+terminated hashing.
+.Sh RETURN VALUES
+The
+.Fn hash32
+functions return a 32 bit hash value of the buffer or string.
+.Sh EXAMPLES
+.Bd -literal -offset indent
+LIST_HEAD(head, cache) *hashtbl = NULL;
+u_long mask = 0;
+
+void
+sample_init(void)
+{
+
+ hashtbl = hashinit(numwanted, type, flags, &mask);
+}
+
+void
+sample_use(char *str, int len)
+{
+ uint32_t hash;
+
+ hash = hash32_str(str, HASHINIT);
+ hash = hash32_buf(&len, sizeof(len), hash);
+ hashtbl[hash & mask] = len;
+}
+.Ed
+.Sh SEE ALSO
+.Xr free 9 ,
+.Xr hashinit 9 ,
+.Xr malloc 9
+.Sh LIMITATIONS
+The
+.Fn hash32
+functions are only 32 bit functions.
+They will prove to give poor 64 bit performance, especially for the
+top 32 bits.
+At the current time, this is not seen as a great limitation, as these
+hash values are usually used to index into an array.
+Should these hash values be used for other means, this limitation should
+be revisited.
+.Sh HISTORY
+The
+.Nm
+functions were first committed to
+.Nx 1.6 .
+The
+.Ox
+versions were written and massaged for
+.Ox 2.3
+by Tobias Weingartner,
+and finally committed for
+.Ox 3.2 .
diff --git a/share/man/man9/hashinit.9 b/share/man/man9/hashinit.9
new file mode 100644
index 0000000..d186dcf
--- /dev/null
+++ b/share/man/man9/hashinit.9
@@ -0,0 +1,176 @@
+.\"
+.\" Copyright (c) 2004 Joseph Koshy
+.\" 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$
+.\"
+.Dd October 10, 2004
+.Dt HASHINIT 9
+.Os
+.Sh NAME
+.Nm hashinit , hashinit_flags, hashdestroy , phashinit
+.Nd manage kernel hash tables
+.Sh SYNOPSIS
+.In sys/malloc.h
+.In sys/systm.h
+.In sys/queue.h
+.Ft "void *"
+.Fn hashinit "int nelements" "struct malloc_type *type" "u_long *hashmask"
+.Ft void
+.Fo hashinit_flags
+.Fa "int nelements" "struct malloc_type *type" "u_long *hashmask" "int flags"
+.Fc
+.Ft void
+.Fn hashdestroy "void *hashtbl" "struct malloc_type *type" "u_long hashmask"
+.Ft "void *"
+.Fn phashinit "int nelements" "struct malloc_type *type" "u_long *nentries"
+.Sh DESCRIPTION
+The
+.Fn hashinit ,
+.Fn hashinit_flags
+and
+.Fn phashinit
+functions allocate space for hash tables of size given by the argument
+.Fa nelements .
+.Pp
+The
+.Fn hashinit
+function allocates hash tables that are sized to largest power of two
+less than or equal to argument
+.Fa nelements .
+The
+.Fn phashinit
+function allocates hash tables that are sized to the largest prime
+number less than or equal to argument
+.Fa nelements .
+The
+.Fn hashinit_flags
+function operates like
+.Fn hashinit
+but also accepts an additional argument
+.Fa flags
+which control various options during allocation.
+Allocated hash tables are contiguous arrays of
+.Xr LIST_HEAD 3
+entries, allocated using
+.Xr malloc 9 ,
+and initialized using
+.Xr LIST_INIT 3 .
+The malloc arena to be used for allocation is pointed to by argument
+.Fa type .
+.Pp
+The
+.Fn hashdestroy
+function frees the space occupied by the hash table pointed to by argument
+.Fa hashtbl .
+Argument
+.Fa type
+determines the malloc arena to use when freeing space.
+The argument
+.Fa hashmask
+should be the bit mask returned by the call to
+.Fn hashinit
+that allocated the hash table.
+The argument
+.Fa flags
+must be used with one of the following values.
+.Pp
+.Bl -tag -width ".Dv HASH_NOWAIT" -offset indent -compact
+.It Dv HASH_NOWAIT
+Any malloc performed by the
+.Fn hashinit_flags
+function will not be allowed to wait, and therefore may fail.
+.It Dv HASH_WAITOK
+Any malloc performed by the
+.Fn hashinit_flags
+function is allowed to wait for memory.
+.El
+.Sh IMPLEMENTATION NOTES
+The largest prime hash value chosen by
+.Fn phashinit
+is 32749.
+.Sh RETURN VALUES
+The
+.Fn hashinit
+function returns a pointer to an allocated hash table and sets the
+location pointed to by
+.Fa hashmask
+to the bit mask to be used for computing the correct slot in the
+hash table.
+.Pp
+The
+.Fn phashinit
+function returns a pointer to an allocated hash table and sets the
+location pointed to by
+.Fa nentries
+to the number of rows in the hash table.
+.Sh EXAMPLES
+A typical example is shown below:
+.Bd -literal -offset indent
+\&...
+static LIST_HEAD(foo, foo) *footable;
+static u_long foomask;
+\&...
+footable = hashinit(32, M_FOO, &foomask);
+.Ed
+.Pp
+Here we allocate a hash table with 32 entries from the malloc arena
+pointed to by
+.Dv M_FOO .
+The mask for the allocated hash table is returned in
+.Va foomask .
+A subsequent call to
+.Fn hashdestroy
+uses the value in
+.Va foomask :
+.Bd -literal -offset indent
+\&...
+hashdestroy(footable, M_FOO, foomask);
+.Ed
+.Sh DIAGNOSTICS
+The
+.Fn hashinit
+and
+.Fn phashinit
+functions will panic if argument
+.Fa nelements
+is less than or equal to zero.
+.Pp
+The
+.Fn hashdestroy
+function will panic if the hash table
+pointed to by
+.Fa hashtbl
+is not empty.
+.Sh SEE ALSO
+.Xr LIST_HEAD 3 ,
+.Xr malloc 9
+.Sh BUGS
+There is no
+.Fn phashdestroy
+function, and using
+.Fn hashdestroy
+to free a hash table allocated by
+.Fn phashinit
+usually has grave consequences.
diff --git a/share/man/man9/hexdump.9 b/share/man/man9/hexdump.9
new file mode 100644
index 0000000..656299c
--- /dev/null
+++ b/share/man/man9/hexdump.9
@@ -0,0 +1,94 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2003 Scott Long
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd December 7, 2003
+.Os
+.Dt HEXDUMP 9
+.Sh NAME
+.Nm hexdump
+.Nd "dump a block of bytes to the console in hexadecimal form"
+.Sh SYNOPSIS
+.In sys/systm.h
+.Ft void
+.Fn hexdump "void *ptr" "int length" "const char *hdr" "int flags"
+.Sh DESCRIPTION
+The
+.Fn hexdump
+function prints an array of bytes to the console in hexadecimal form, along with
+the
+.Tn ASCII
+representation of the bytes, if possible.
+By default, each line of
+output will start with an offset count, followed by 16 hexadecimal values,
+followed by 16
+.Tn ASCII
+characters.
+.Bl -tag -width indent
+.It Fa ptr
+Pointer to the array of bytes to print.
+It does not need to be
+.Dv NUL Ns
+-terminated.
+.It Fa length
+Number of bytes to print.
+.It Fa hdr
+Pointer to a
+.Dv NUL Ns
+-terminated character string that will be prepended to each
+line of output.
+A value of
+.Dv NULL
+implies that no header will be printed.
+.It Fa flags
+Flags for controlling the formatting of the output.
+.Bl -tag -width ".Dv HD_OMIT_COUNT"
+.It Bits 0-7
+Integer value of the number of bytes to display on each line.
+A value of 0 implies that the default value of 16 will be used.
+.It Bits 8-15
+Character
+.Tn ASCII
+value to use as the separator for the hexadecimal output.
+A value of 0 implies that the default value of 32
+.Tn ( ASCII
+space) will be used.
+.It Dv HD_OMIT_COUNT
+Do not print the offset column at the beginning of each line.
+.It Dv HD_OMIT_HEX
+Do not print the hexadecimal values on each line.
+.It Dv HD_OMIT_CHARS
+Do not print the character values on each line.
+.El
+.El
+.Sh SEE ALSO
+.Xr ascii 7
+.Sh AUTHORS
+This manual page was written by
+.An Scott Long .
diff --git a/share/man/man9/ieee80211.9 b/share/man/man9/ieee80211.9
new file mode 100644
index 0000000..827daec
--- /dev/null
+++ b/share/man/man9/ieee80211.9
@@ -0,0 +1,260 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
+.\" Copyright (c) 2004 Darron Broad <darron@kewl.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$
+.\" $Id: ieee80211.9,v 1.5 2004/03/04 12:33:27 bruce Exp $
+.\"
+.Dd March 2, 2004
+.Dt IEEE80211 9
+.Os
+.Sh NAME
+.Nm ieee80211_ifattach , ieee80211_ifdetach ,
+.Nm ieee80211_mhz2ieee , ieee80211_chan2ieee , ieee80211_ieee2mhz ,
+.Nm ieee80211_media_init , ieee80211_media_change , ieee80211_media_status ,
+.Nm ieee80211_watchdog ,
+.Nm ieee80211_setmode , ieee80211_chan2mode ,
+.Nm ieee80211_rate2media , ieee80211_media2rate
+.Nd core 802.11 network stack functions
+.Sh SYNOPSIS
+.In net80211/ieee80211_var.h
+.In net80211/ieee80211_proto.h
+.Ft void
+.Fn ieee80211_ifattach "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_ifdetach "struct ifnet *ifp"
+.Ft u_int
+.Fn ieee80211_mhz2ieee "u_int freq" "u_int flags"
+.Ft u_int
+.Fn ieee80211_chan2ieee "struct ieee80211com *ic" "struct ieee80211_channel *c"
+.Ft u_int
+.Fn ieee80211_ieee2mhz "u_int chan" "u_int flags"
+.Ft void
+.Fo ieee80211_media_init
+.Fa "struct ifnet *ifp" "ifm_change_cb_t media_change"
+.Fa "ifm_stat_cb_t media_stat"
+.Fc
+.Fa int
+.Fn ieee80211_media_change "struct ifnet *ifp"
+.Fa void
+.Fn ieee80211_media_status "struct ifnet *ifp" "struct ifmediareq *imr"
+.Ft void
+.Fn ieee80211_watchdog "struct ifnet *ifp"
+.Ft int
+.Fn ieee80211_setmode "struct ieee80211com *ic" "enum ieee80211_phymode mode"
+.Ft enum ieee80211_phymode
+.Fo ieee80211_chan2mode
+.Fa "struct ieee80211com *ic" "struct ieee80211_channel *chan"
+.Fc
+.Ft int
+.Fo ieee80211_rate2media
+.Fa "struct ieee80211com *ic" "int rate" "enum ieee80211_phymode mode"
+.Fc
+.Ft int
+.Fn ieee80211_media2rate "int mword"
+.Sh DESCRIPTION
+The
+.Nm ieee80211
+collection of functions are used to manage wireless network interfaces in the
+system which use the system's software 802.11 network stack.
+Most of these functions require that attachment to the stack is performed
+before calling.
+Several utility functions are also provided; these are safe to call from
+any driver without prior initialization.
+.Pp
+.\"
+The
+.Fn ieee80211_ifattach
+function attaches the network interface
+.Fa ifp
+to the 802.11 network stack layer.
+This function must be called before using any of the
+.Nm ieee80211
+functions which need to store driver state across invocations;
+The
+.Vt struct ifnet
+instance pointed to by
+.Fa ifp
+MUST be an instance of
+.Vt struct ieee80211com ,
+with various fields initialized to tell
+.Nm ieee80211
+about its capabilities.
+This function performs Ethernet and BPF attachment (by calling
+.Fn ether_ifattach
+and
+.Fn bpfattach2 )
+on behalf of the caller.
+It also implements the
+.Vt ifmedia
+interface.
+.Pp
+.\"
+The
+.Fn ieee80211_ifdetach
+function frees any
+.Nm ieee80211
+structures associated with the driver, and performs Ethernet and BPF
+detachment on behalf of the caller.
+.Pp
+.\"
+The
+.Fn ieee80211_mhz2ieee
+utility function converts the frequency
+.Fa freq
+(specified in MHz) to an IEEE 802.11 channel number.
+The
+.Fa flags
+argument is a hint which specifies whether the frequency is in
+the 2GHz ISM band
+.Pq Vt IEEE80211_CHAN_2GHZ
+or the 5GHz band
+.Pq Vt IEEE80211_CHAN_5GHZ ;
+appropriate clipping of the result is then performed.
+.Pp
+.\"
+The
+.Fn ieee80211_chan2ieee
+function converts the channel specified in
+.Fa *c
+to an IEEE channel number for the driver
+.Fa ic .
+If the conversion would be invalid, an error message is printed to the
+system console.
+This function REQUIRES that the driver is hooked up to the
+.Nm ieee80211
+subsystem.
+.Pp
+.\"
+The
+.Fn ieee80211_ieee2mhz
+utility function converts the IEEE channel number
+.Ft chan
+to a frequency (in MHz).
+The
+.Fa flags
+argument is a hint which specifies whether the frequency is in
+the 2GHz ISM band
+.Pq Vt IEEE80211_CHAN_2GHZ
+or the 5GHz band
+.Pq Vt IEEE80211_CHAN_5GHZ ;
+appropriate clipping of the result is then performed.
+.Pp
+.\"
+The
+.Fn ieee80211_media_init
+function initializes media data structures used by the
+.Vt ifmedia
+interface, for the driver
+.Fa ifp .
+It must be called by the driver after calling
+.Fn ieee80211_attach
+and before calling most
+.Nm ieee80211
+functions.
+The
+.Fa media_change
+and
+.Fa media_stat
+arguments specify helper functions which will be invoked by the
+.Vt ifmedia
+framework when the user changes or queries media options,
+using a command such as
+.Xr ifconfig 8 .
+.Pp
+.\"
+The
+.Fn ieee80211_media_status
+and
+.Fn ieee80211_media_change
+functions are device-independent handlers for
+.Vt ifmedia
+commands and are not intended to be called directly.
+.Pp
+.\"
+The
+.Fn ieee80211_watchdog
+function is intended to be called from a driver's
+.Va if_watchdog
+routine.
+It is used to perform periodic cleanup of state within the software 802.11
+stack, as well as timing out scans.
+.Pp
+.\"
+The
+.Fn ieee80211_setmode
+function is called from within the 802.11 stack to change the mode
+of the driver's PHY; it is not intended to be called directly.
+.Pp
+.\"
+The
+.Fn ieee80211_chan2mode
+function returns the PHY mode required for use with the channel
+.Fa chan
+on the device
+.Fa ic .
+This is typically used when selecting a rate set, to be advertised in
+beacons, for example.
+.Pp
+.\"
+The
+.Fn ieee80211_rate2media
+function converts the bit rate
+.Fa rate
+(measured in units of 0.5Mbps) to an
+.Vt ifmedia
+sub-type, for the device
+.Fa ic
+running in PHY mode
+.Fa mode .
+The
+.Fn ieee80211_media2rate
+performs the reverse of this conversion, returning the bit rate (in 0.5Mbps
+units) corresponding to an
+.Vt ifmedia
+sub-type.
+.\"
+.Sh SEE ALSO
+.Xr ieee80211_crypto 9 ,
+.Xr ieee80211_input 9 ,
+.Xr ieee80211_ioctl 9 ,
+.Xr ieee80211_node 9 ,
+.Xr ieee80211_output 9 ,
+.Xr ieee80211_proto 9 ,
+.Xr ieee80211_radiotap 9 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm ieee80211
+series of functions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
diff --git a/share/man/man9/ieee80211_crypto.9 b/share/man/man9/ieee80211_crypto.9
new file mode 100644
index 0000000..bf4bb60
--- /dev/null
+++ b/share/man/man9/ieee80211_crypto.9
@@ -0,0 +1,102 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
+.\" Copyright (c) 2004 Darron Broad <darron@kewl.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$
+.\" $Id: ieee80211_crypto.9,v 1.3 2004/03/04 10:42:56 bruce Exp $
+.\"
+.Dd March 2, 2004
+.Dt IEEE80211_CRYPTO 9
+.Os
+.Sh NAME
+.Nm ieee80211_crypto_attach , ieee80211_crypto_detach , ieee80211_wep_crypt
+.Nd 802.11 WEP encryption functions
+.Sh SYNOPSIS
+.Ft void
+.Fn ieee80211_crypto_attach "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_crypto_detach "struct ifnet *ifp"
+.Ft struct mbuf *
+.Fn ieee80211_wep_crypt "struct ifnet *ifp" "struct mbuf *m0" "int txflag"
+.Sh DESCRIPTION
+These functions provide software encryption support
+for 802.11 device drivers.
+.Pp
+.\"
+The
+.Fn ieee80211_crypto_attach
+function initializes crypto support for the interface
+.Fa ifp ,
+and sets the initialization vector (IV) for WEP encryption to
+a random number derived from a secure PRNG.
+.Pp
+.\"
+The
+.Fn ieee80211_crypto_detach
+function frees data structures associated with crypto support
+for the interface
+.Fa ifp .
+.Pp
+.\"
+The
+.Fn ieee80211_wep_crypt
+function runs the appropriate WEP encryption algorithm over the 802.11
+encapsulated frame held in the mbuf chain
+.Fa m0 ,
+for transmission or reception on the interface
+.Fa ifp .
+The
+.Fa txflag
+argument specifies whether the frame is being received or transmitted.
+A value of 0 indicates that the frame is being received and should
+therefore be decrypted; a non-zero value indicates that the frame
+is being transmitted
+and should be encrypted.
+.\"
+.Sh IMPLEMENTATION NOTES
+The
+.Fn ieee80211_wep_crypt
+function stores its IV in the interface's embedded
+.Vt struct ieee80211com
+instance.
+.Sh SEE ALSO
+.Xr awi 4 ,
+.Xr wi 4 ,
+.Xr arc4random 9 ,
+.Xr ieee80211 9 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm ieee80211
+series of functions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
diff --git a/share/man/man9/ieee80211_input.9 b/share/man/man9/ieee80211_input.9
new file mode 100644
index 0000000..21c9f25
--- /dev/null
+++ b/share/man/man9/ieee80211_input.9
@@ -0,0 +1,113 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
+.\" Copyright (c) 2004 Darron Broad <darron@kewl.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$
+.\" $Id: ieee80211_input.9,v 1.6 2004/03/04 12:33:27 bruce Exp $
+.\"
+.Dd March 2, 2004
+.Dt IEEE80211_INPUT 9
+.Os
+.Sh NAME
+.Nm ieee80211_input , ieee80211_decap , ieee80211_recv_mgmt
+.Nd software 802.11 stack input functions
+.Sh SYNOPSIS
+.In net80211/ieee80211_var.h
+.In net80211/ieee80211_proto.h
+.Ft void
+.Fo ieee80211_input
+.Fa "struct ifnet *ifp" "struct mbuf *m" "struct ieee80211_node *ni"
+.Fa "int rssi" "u_int32_t rstamp"
+.Fc
+.Ft struct mbuf *
+.Fn ieee80211_decap "struct ifnet *ifp" "struct mbuf *m"
+.Ft void
+.Fo ieee80211_recv_mgmt
+.Fa "struct ieee80211com *ic" "struct mbuf *m0" "struct ieee80211_node *ni"
+.Fa "int subtype" "int rssi" "u_int32_t rstamp"
+.Fc
+.Sh DESCRIPTION
+These
+functions process received 802.11 frames.
+.Pp
+.\"
+The
+.Fn ieee80211_input
+function takes an mbuf chain
+.Fa m
+containing a complete 802.11 frame from the driver
+.Fa ifp
+and passes it to the software 802.11 stack for input processing.
+The
+.Fa ni
+argument specifies an instance of
+.Vt struct ieee80211_node
+(which may be driver-specific) representing the node from which the
+frame was received.
+The arguments
+.Fa rssi
+and
+.Fa stamp
+are typically derived from on-card data structures; they are used for
+recording the signal strength and time received of the frame respectively.
+.Pp
+.\"
+The
+.Fn ieee80211_decap
+function performs decapsulation of the 802.11 frame in the mbuf chain
+.Fa m
+received by the device
+.Fa ifp ,
+taking the form of the 802.11 address fields into account;
+the structure of 802.11 addresses vary according to the intended
+source and destination of the frame.
+It is typically called from within
+.Fn ieee80211_input .
+.Pp
+.\"
+The
+.Fn ieee80211_recv_mgmt
+performs input processing for 802.11 management frames.
+It is typically called from within
+.Fn ieee80211_input .
+.\"
+.Sh SEE ALSO
+.Xr ieee80211 9 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm ieee80211
+series of functions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
+.Sh BUGS
+There is no netisr queue specifically for the software 802.11 stack yet.
diff --git a/share/man/man9/ieee80211_ioctl.9 b/share/man/man9/ieee80211_ioctl.9
new file mode 100644
index 0000000..7f94bce
--- /dev/null
+++ b/share/man/man9/ieee80211_ioctl.9
@@ -0,0 +1,92 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
+.\" Copyright (c) 2004 Darron Broad <darron@kewl.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$
+.\" $Id: ieee80211_ioctl.9,v 1.5 2004/03/04 12:33:27 bruce Exp $
+.\"
+.Dd March 2, 2004
+.Dt IEEE80211_IOCTL 9
+.Os
+.Sh NAME
+.Nm ieee80211_cfgget , ieee80211_cfgset , ieee80211_ioctl
+.Nd 802.11 interface ioctl commands
+.Sh SYNOPSIS
+.In net80211/ieee80211_var.h
+.In net80211/ieee80211_proto.h
+.In net80211/ieee80211_ioctl.h
+.Ft int
+.Fn ieee80211_cfgget "struct ifnet *ifp" "u_long cmd" "caddr_t data"
+.Ft int
+.Fn ieee80211_cfgset "struct ifnet *ifp" "u_long cmd" "caddr_t data"
+.Ft int
+.Fn ieee80211_ioctl "struct ifnet *ifp" "u_long cmd" "caddr_t data"
+.Sh DESCRIPTION
+These
+functions are typically invoked by drivers in response to requests
+for information or to change settings from the userland.
+.Pp
+.\"
+The
+.Fn ieee80211_cfgget
+and
+.Fn ieee80211_cfgset
+functions implement a legacy interface for getting and setting 802.11
+interface attributes respectively.
+.Pp
+.\"
+The
+.Fn ieee80211_ioctl
+function provides a default implementation of the
+.Dv SIOCS80211
+and
+.Dv SIOCG80211
+ifioctls commands for 802.11 drivers.
+The call signature is identical to that of the
+.Va if_ioctl
+member found in
+.Vt struct ifnet ,
+however, many drivers store attributes such as
+.Dv IEEE80211_IOC_STATIONNAME
+in the driver's private soft state structure, so driver writers may prefer
+to use this as the catch-all in a switch statement to avoid code duplication.
+.\"
+.Sh SEE ALSO
+.Xr ifconfig 8 ,
+.Xr ieee80211 9 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm ieee80211
+series of functions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
diff --git a/share/man/man9/ieee80211_node.9 b/share/man/man9/ieee80211_node.9
new file mode 100644
index 0000000..c9d142a
--- /dev/null
+++ b/share/man/man9/ieee80211_node.9
@@ -0,0 +1,293 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
+.\" Copyright (c) 2004 Darron Broad <darron@kewl.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$
+.\" $Id: ieee80211_node.9,v 1.6 2004/03/04 12:33:27 bruce Exp $
+.\"
+.Dd July 4, 2004
+.Dt IEEE80211_NODE 9
+.Os
+.Sh NAME
+.Nm ieee80211_node_attach ,
+.Nm ieee80211_node_lateattach ,
+.Nm ieee80211_node_detach ,
+.Nm ieee80211_begin_scan ,
+.Nm ieee80211_next_scan ,
+.Nm ieee80211_create_ibss ,
+.Nm ieee80211_end_scan ,
+.Nm ieee80211_alloc_node ,
+.Nm ieee80211_dup_bss ,
+.Nm ieee80211_find_node ,
+.Nm ieee80211_lookup_node ,
+.Nm ieee80211_free_node ,
+.Nm ieee80211_free_allnodes ,
+.Nm ieee80211_timeout_nodes ,
+.Nm ieee80211_iterate_nodes
+.Nd software 802.11 stack node management functions
+.Sh SYNOPSIS
+.In net80211/ieee80211_var.h
+.In net80211/ieee80211_proto.h
+.In net80211/ieee80211_node.h
+.Ft void
+.Fn ieee80211_node_attach "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_node_lateattach "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_node_detach "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_begin_scan "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_next_scan "struct ifnet *ifp"
+.Ft void
+.Fo ieee80211_create_ibss
+.Fa "struct ieee80211com *ic" "struct ieee80211_channel *chan"
+.Fc
+.Ft void
+.Fn ieee80211_end_scan "struct ifnet *ifp"
+.Ft struct ieee80211_node *
+.Fn ieee80211_alloc_node "struct ieee80211com *ic" "u_int8_t *macaddr"
+.Ft struct ieee80211_node *
+.Fn ieee80211_dup_bss "struct ieee80211com *ic" "u_int8_t *macaddr"
+.Ft struct ieee80211_node *
+.Fn ieee80211_find_node "struct ieee80211com *ic" "u_int8_t *macaddr"
+.Ft struct ieee80211_node *
+.Fo ieee80211_lookup_node
+.Fa "struct ieee80211com *ic" "u_int8_t *macaddr"
+.Fa "struct ieee80211_channel *chan"
+.Fc
+.Ft void
+.Fn ieee80211_free_node "struct ieee80211com *ic" "struct ieee80211_node *ni"
+.Ft void
+.Fn ieee80211_free_allnodes "struct ieee80211com *ic"
+.Ft void
+.Fn ieee80211_timeout_nodes "struct ieee80211com *ic"
+.Ft void
+.Fo ieee80211_iterate_nodes
+.Fa "struct ieee80211com *ic" "ieee80211_iter_func *f" "void *arg"
+.Fc
+.Sh DESCRIPTION
+These functions are used to manage node lists within the software
+802.11 stack.
+These lists are typically used for implementing host-mode AP functionality,
+or providing signal quality information about neighbouring nodes.
+.Pp
+.\"
+The
+.Fn ieee80211_node_attach
+function is called from
+.Xr ieee80211_ifattach 9
+to initialize node database management callbacks for the interface
+.Fa ifp
+(specifically for memory allocation, node copying and node
+signal inspection).
+These functions may be overridden in special circumstances,
+as long as this is done after calling
+.Xr ieee80211_ifattach 9
+and prior to any other call which may allocate a node.
+.Pp
+.\"
+The
+.Fn ieee80211_node_lateattach
+function initialises the
+.Va ic_bss
+node element of the interface
+.Fa ifp
+during
+.Xr ieee80211_media_init 9 .
+This late attachment is to account for certain special cases described under
+.Fn ieee80211_node_attach .
+.Pp
+.\"
+The
+.Fn ieee80211_node_detach
+function destroys all node database state associated with the interface
+.Fa ifp ,
+and is usually called during device detach.
+.Pp
+.\"
+The
+.Fn ieee80211_begin_scan
+function initialises the node database in preparation of an active
+scan for an access point on the interface
+.Fa ifp .
+The scan begins on the next radio channel by calling
+.Fn ieee80211_next_scan
+internally.
+The actual scanning for an access point is not automated;
+the device driver itself only handles setting the radio frequency
+of the card and stepping through the channels.
+.Pp
+.\"
+The
+.Fn ieee80211_next_scan
+function is used to inform the
+.Xr ieee80211 9
+layer that the interface
+.Fa ifp
+is now scanning for an access point on the next radio channel.
+A device driver is expected to first call
+.Fn ieee80211_begin_scan ,
+to initialize the node database,
+then set the radio channel on the device;
+then, after a certain time has elapsed (200ms for example), call
+.Fn ieee80211_next_scan
+to move to the next channel.
+Typically, a callout is used to automate this process; see
+.Xr callout_init 9
+for more information on how to use callouts.
+.Pp
+.\"
+The
+.Fn ieee80211_create_ibss
+function sets up the net80211-specific portion of an interface's softc,
+.Fa ic ,
+for use in IBSS mode.
+.Pp
+.\"
+The
+.Fn ieee80211_end_scan
+function is called by
+.Fn ieee80211_next_scan
+when the state machine has peformed a full cycle of scanning on
+all available radio channels.
+Internally,
+.Fn ieee80211_end_scan
+will inspect the node cache associated with the interface
+.Fa ifp
+for suitable access points found during scanning, and associate with one,
+should the parameters of the node match those of the configuration
+requested from userland.
+.Pp
+.\"
+The
+.Fn ieee80211_alloc_node
+function allocates an instance of
+.Vt "struct ieee80211_node"
+for a node having the MAC address
+.Fa macaddr ,
+and associates it with the interface
+.Fa ic .
+If the allocation is successful, the node structure is initialised by
+.Fn ieee80211_setup_node ;
+otherwise,
+.Dv NULL
+is returned.
+.Pp
+.\"
+The
+.Fn ieee80211_dup_bss
+function is similar to
+.Fn ieee80211_alloc_node ,
+but is instead used to create a node database entry for the BSSID
+.Fa macaddr
+associated with the interface
+.Fa ic .
+If the allocation is successful, the node structure is initialised by
+.Fn ieee80211_setup_node ;
+otherwise,
+.Dv NULL
+is returned.
+.Pp
+.\"
+The
+.Fn ieee80211_find_node
+function will iterate through the node list associated with the interface
+.Fa ic ,
+searching for a node entry which matches
+.Fa macaddr .
+If the entry is found, its reference count is incremented, and
+a pointer to the node is returned; otherwise,
+.Dv NULL
+will be returned.
+.Pp
+.\"
+The
+.Fn ieee80211_lookup_node
+function is similar to
+.Fn ieee80211_find_node ,
+with an additional argument
+.Fa chan
+which is used to specify a channel for the match.
+If the entry is found, its reference count is incremented, and
+a pointer to the node is returned; otherwise,
+.Dv NULL
+will be returned.
+.Pp
+.\"
+The
+.Fn ieee80211_free_node
+function will remove the node
+.Fa ni
+from the node database entries associated with the interface
+.Fa ic ,
+and free any memory associated with the node.
+This private method can be overridden in
+.Fn ieee80211_node_attach .
+.\"
+.Pp
+The
+.Fn ieee80211_free_allnodes
+function will iterate through the node list calling
+.Fn ieee80211_free_node
+for all nodes associated with the interface
+.Fa ic .
+.Pp
+.\"
+The
+.Fn ieee80211_timeout_nodes
+checks if the inactivity timer of each node associated with the interface
+.Fa ic
+has exceeded the pre-defined constant
+.Dv IEEE80211_INACT_MAX .
+If so, then the node is freed, after sending a deauthentication message.
+.Pp
+.\"
+The
+.Fn ieee80211_iterate_nodes
+function will call the user-defined callback function
+.Fa f
+for all nodes in the node database associated with the interface
+.Fa ic .
+The callback is invoked with the with the user-supplied value
+.Fa arg
+and a pointer to the current node.
+.\"
+.Sh SEE ALSO
+.Xr ieee80211 9 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm ieee80211
+series of functions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
diff --git a/share/man/man9/ieee80211_output.9 b/share/man/man9/ieee80211_output.9
new file mode 100644
index 0000000..f553c4f
--- /dev/null
+++ b/share/man/man9/ieee80211_output.9
@@ -0,0 +1,151 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
+.\" Copyright (c) 2004 Darron Broad <darron@kewl.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$
+.\" $Id: ieee80211_output.9,v 1.5 2004/03/04 12:31:18 bruce Exp $
+.\"
+.Dd March 2, 2004
+.Dt IEEE80211_OUTPUT 9
+.Os
+.Sh NAME
+.Nm ieee80211_encap , ieee80211_add_rates ,
+.Nm ieee80211_add_xrates , ieee80211_send_mgmt
+.Nd software 802.11 stack output functions
+.Sh SYNOPSIS
+.In net80211/ieee80211_var.h
+.In net80211/ieee80211_proto.h
+.Ft struct mbuf *
+.Fo ieee80211_encap
+.Fa "struct ifnet *ifp" "struct mbuf *m" "struct ieee80211_node **pni"
+.Fc
+.Ft u_int8_t *
+.Fn ieee80211_add_rates "u_int8_t *frm" "const struct ieee80211_rateset *rs"
+.Ft u_int8_t *
+.Fn ieee80211_add_xrates "u_int8_t *frm" "const struct ieee80211_rateset *rs"
+.Ft int
+.Fo ieee80211_send_mgmt
+.Fa "struct ieee80211com *ic" "struct ieee80211_node *ni" "int type" "int arg"
+.Fc
+.Sh DESCRIPTION
+These functions handle the encapsulation and transmission of 802.11 frames
+within the software 802.11 stack.
+.Pp
+The
+.Fn ieee80211_encap
+function encapsulates an outbound data frame contained within the
+mbuf chain
+.Fa m
+from the interface
+.Fa ifp .
+The argument
+.Fa *pni
+is a reference to the destination node.
+.Pp
+If the function is successful, the mbuf chain is updated with the
+802.11 frame header prepended, and a pointer to the head of the chain
+is returned.
+If an error occurs,
+.Dv NULL
+will be returned, and
+.Fa *pni
+is also set to
+.Dv NULL .
+The caller is responsible for freeing the node reference if
+.Fa *pni
+is
+.Pf non- Dv NULL
+on return.
+The convention is that
+.Va ic_bss
+is not reference counted; the caller is responsible for maintaining this
+reference count.
+.Pp
+.\"
+The
+.Fn ieee80211_add_rates
+utility function is used to add the rate set element
+.Fa *rs
+to the frame
+.Fa frm .
+A pointer to the location in the buffer after the addition of the rate set
+is returned.
+It is typically used when constructing management frames from within the
+software 802.11 stack.
+.Pp
+.\"
+The
+.Fn ieee80211_add_xrates
+utility function is used to add the extended rate set element
+.Fa *rs
+to the frame
+.Fa frm .
+A pointer to the location in the buffer after the addition of the rate set
+is returned.
+It is typically used when constructing management frames from within the
+software 802.11 stack in 802.11g mode.
+.Pp
+.\"
+The
+.Fn ieee80211_send_mgmt
+function transmits a management frame on the interface
+.Fa ic
+to the destination node
+.Fa ni
+of type
+.Fa type .
+.Pp
+The argument
+.Fa arg
+specifies either a sequence number for authentication operations,
+a status code for [re]association operations,
+or a reason for deauthentication and deassociation operations.
+.Pp
+Nodes other than
+.Va ic_bss
+have their reference count incremented to reflect their use for an
+indeterminate amount of time.
+This reference is freed when the function returns.
+.Pp
+The function returns 0 if successful; if temporary buffer space is not
+available, the function returns
+.Er ENOMEM .
+.\"
+.Sh SEE ALSO
+.Xr ieee80211 9 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm ieee80211
+series of functions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
diff --git a/share/man/man9/ieee80211_proto.9 b/share/man/man9/ieee80211_proto.9
new file mode 100644
index 0000000..0de4864
--- /dev/null
+++ b/share/man/man9/ieee80211_proto.9
@@ -0,0 +1,75 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>
+.\" Copyright (c) 2004 Darron Broad <darron@kewl.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$
+.\" $Id: ieee80211_proto.9,v 1.5 2004/03/04 12:33:27 bruce Exp $
+.\"
+.Dd March 2, 2004
+.Dt IEEE80211_PROTO 9
+.Os
+.Sh NAME
+.Nm ieee80211_proto_attach ,
+.Nm ieee80211_proto_detach ,
+.Nm ieee80211_print_essid ,
+.Nm ieee80211_dump_pkt ,
+.Nm ieee80211_fix_rate ,
+.Nm ieee80211_proto
+.Nd software 802.11 stack protocol helper functions
+.Sh SYNOPSIS
+.In net80211/ieee80211_var.h
+.In net80211/ieee80211_proto.h
+.Ft void
+.Fn ieee80211_proto_attach "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_proto_detach "struct ifnet *ifp"
+.Ft void
+.Fn ieee80211_print_essid "u_int8_t *essid" "int len"
+.Ft void
+.Fn ieee80211_dump_pkt "u_int8_t *buf" "int len" "int rate" "int rssi"
+.Ft int
+.Fo ieee80211_fix_rate
+.Fa "struct ieee80211com *ic" "struct ieee80211_node *ni" "int flags"
+.Fc
+.Sh DESCRIPTION
+These
+functions are helper functions used throughout the software 802.11 protocol
+stack.
+.Sh SEE ALSO
+.Xr ieee80211 9 ,
+.Xr ifnet 9
+.Sh HISTORY
+The
+.Nm ieee80211
+series of functions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
diff --git a/share/man/man9/ieee80211_radiotap.9 b/share/man/man9/ieee80211_radiotap.9
new file mode 100644
index 0000000..7375eec
--- /dev/null
+++ b/share/man/man9/ieee80211_radiotap.9
@@ -0,0 +1,235 @@
+.\"
+.\" Copyright (c) 2004 Bruce M. Simpson <bms@spc.org>,
+.\" Darron Broad <darron@kewl.org>,
+.\" David Young <dyoung@pobox.com>.
+.\" 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$
+.\" $Id: ieee80211_radiotap.9,v 1.3 2004/03/04 11:38:52 bruce Exp $
+.\"
+.Dd March 17, 2008
+.Dt IEEE80211_RADIOTAP 9
+.Os
+.Sh NAME
+.Nm ieee80211_radiotap
+.Nd software 802.11 stack packet capture definitions
+.Sh SYNOPSIS
+.In net80211/ieee80211_var.h
+.In net80211/ieee80211_ioctl.h
+.In net80211/ieee80211_radiotap.h
+.In net/bpf.h
+.\"
+.Sh DESCRIPTION
+The
+.Nm
+definitions provide a device-independent
+.Xr bpf 4
+attachment for the
+capture of information about 802.11 traffic which is not part of
+the 802.11 frame structure.
+.Pp
+Radiotap was designed to balance the desire for a capture format
+that conserved CPU and memory bandwidth on embedded systems,
+with the desire for a hardware-independent, extensible format
+that would support the diverse capabilities of virtually all
+802.11
+radios.
+.Pp
+These considerations led radiotap to settle on a format consisting of
+a standard preamble followed by an extensible bitmap indicating the
+presence of optional capture fields.
+.Pp
+The capture fields were packed into the header as compactly as possible,
+modulo the requirements that they had to be packed swiftly,
+with suitable alignment, in the same order as the bits indicating
+their presence.
+.Pp
+This typically includes information such as signal quality and
+timestamps.
+This information may be used by a variety of user agents, including
+.Xr tcpdump 1 .
+It is requested by using the
+.Xr bpf 4
+data-link type
+.Dv DLT_IEEE802_11_RADIO .
+.Pp
+.\"
+Each frame using this attachment has the following header prepended to it:
+.Bd -literal -offset indent
+struct ieee80211_radiotap_header {
+ u_int8_t it_version; /* set to 0 */
+ u_int8_t it_pad;
+ u_int16_t it_len; /* entire length */
+ u_int32_t it_present; /* fields present */
+} __attribute__((__packed__));
+.Ed
+.Pp
+.\"
+A device driver implementing
+.Vt radiotap
+typically defines a packed structure embedding an instance of
+.Vt "struct ieee80211_radiotap_header"
+at the beginning,
+with subsequent fields in the appropriate order,
+and a macro to set the bits of the
+.Va it_present
+bitmap to indicate which fields exist and are filled in by the driver.
+.\"
+.Pp
+Radiotap headers are copied to the userland via a separate bpf attachment.
+It is necessary for the driver to create this attachment after calling
+.Xr ieee80211_ifattach 9
+by calling
+.Fn bpfattach2
+with the data-link type set to
+.Dv DLT_IEEE802_11_RADIO .
+.Pp
+.\"
+When the the information is available,
+usually immediately before a link-layer transmission or after a receive,
+the driver copies it to the bpf layer using the
+.Fn bpf_mtap2
+function.
+.Pp
+.\"
+The following extension fields are defined for
+.Vt radiotap ,
+in the order in which they should appear in the buffer copied to userland:
+.Bl -tag -width indent
+.It Dv IEEE80211_RADIOTAP_TSFT
+This field contains the unsigned 64-bit value, in microseconds,
+of the MAC's 802.11 Time Synchronization Function timer,
+when the first bit of the MPDU arrived at the MAC.
+This field should be present for received frames only.
+.It Dv IEEE80211_RADIOTAP_FLAGS
+This field contains a single unsigned 8-bit value, containing a bitmap
+of flags specifying properties of the frame being transmitted or received.
+.It Dv IEEE80211_RADIOTAP_RATE
+This field contains a single unsigned 8-bit value, which is the data rate in
+use in units of 500Kbps.
+.It Dv IEEE80211_RADIOTAP_CHANNEL
+This field contains two unsigned 16-bit values.
+The first value is the frequency upon which this PDU was transmitted
+or received.
+The second value is a bitmap containing flags which specify properties of
+the channel in use.
+These are documented within the header file,
+.In net80211/ieee80211_radiotap.h .
+.It Dv IEEE80211_RADIOTAP_FHSS
+This field contains two 8-bit values.
+This field should be present for frequency-hopping radios only.
+The first byte is the hop set.
+The second byte is the pattern in use.
+.It Dv IEEE80211_RADIOTAP_DBM_ANTSIGNAL
+This field contains a single signed 8-bit value, which indicates the
+RF signal power at the antenna, in decibels difference from 1mW.
+.It Dv IEEE80211_RADIOTAP_DBM_ANTNOISE
+This field contains a single signed 8-bit value, which indicates the
+RF noise power at the antenna, in decibels difference from 1mW.
+.It Dv IEEE80211_RADIOTAP_LOCK_QUALITY
+This field contains a single unsigned 16-bit value, indicating the
+quality of the Barker Code lock.
+No unit is specified for this field.
+There does not appear to be a standard way of measuring this at this time;
+this quantity is often referred to as
+.Dq "Signal Quality"
+in some datasheets.
+.It Dv IEEE80211_RADIOTAP_TX_ATTENUATION
+This field contains a single unsigned 16-bit value, expressing transmit
+power as unitless distance from maximum power set at factory calibration.
+0 indicates maximum transmit power.
+Monotonically nondecreasing with lower power levels.
+.It Dv IEEE80211_RADIOTAP_DB_TX_ATTENUATION
+This field contains a single unsigned 16-bit value, expressing transmit
+power as decibel distance from maximum power set at factory calibration.
+0 indicates maximum transmit power.
+Monotonically nondecreasing with lower power levels.
+.It Dv IEEE80211_RADIOTAP_DBM_TX_POWER
+Transmit power expressed as decibels from a 1mW reference.
+This field is a single signed 8-bit value.
+This is the absolute power level measured at the antenna port.
+.It Dv IEEE80211_RADIOTAP_ANTENNA
+For radios which support antenna diversity, this field contains a single
+unsigned 8-bit value specifying which antenna is being used to transmit
+or receive this frame.
+The first antenna is antenna 0.
+.It Dv IEEE80211_RADIOTAP_DB_ANTSIGNAL
+This field contains a single unsigned 8-bit value, which indicates the
+RF signal power at the antenna, in decibels difference from an
+arbitrary, fixed reference.
+.It Dv IEEE80211_RADIOTAP_DB_ANTNOISE
+This field contains a single unsigned 8-bit value, which indicates the
+RF noise power at the antenna, in decibels difference from an
+arbitrary, fixed reference.
+.It Dv IEEE80211_RADIOTAP_EXT
+This bit is reserved for any future extensions to the
+.Vt radiotap
+structure.
+It should not be used at this time.
+.El
+.Sh EXAMPLES
+Radiotap header for the Cisco Aironet driver:
+.Bd -literal -offset indent
+struct an_rx_radiotap_header {
+ struct ieee80211_radiotap_header ar_ihdr;
+ u_int8_t ar_flags;
+ u_int8_t ar_rate;
+ u_int16_t ar_chan_freq;
+ u_int16_t ar_chan_flags;
+ u_int8_t ar_antsignal;
+ u_int8_t ar_antnoise;
+} __attribute__((__packed__));
+.Ed
+.Pp
+Bitmap indicating which fields are present in the above structure:
+.Bd -literal -offset indent
+#define AN_RX_RADIOTAP_PRESENT \\
+ ((1 << IEEE80211_RADIOTAP_FLAGS) | \\
+ (1 << IEEE80211_RADIOTAP_RATE) | \\
+ (1 << IEEE80211_RADIOTAP_CHANNEL) | \\
+ (1 << IEEE80211_RADIOTAP_DBM_ANTSIGNAL) | \\
+ (1 << IEEE80211_RADIOTAP_DBM_ANTNOISE))
+.Ed
+.Sh SEE ALSO
+.Xr bpf 4 ,
+.Xr ieee80211 9
+.Sh HISTORY
+The
+.Nm
+definitions first appeared in
+.Nx 1.5 ,
+and were later ported to
+.Fx 4.6 .
+.\"
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+interface was designed and implemented by
+.An David Young Aq dyoung@pobox.com .
+.Pp
+This manual page was written by
+.An Bruce M. Simpson Aq bms@FreeBSD.org
+and
+.An Darron Broad Aq darron@kewl.org .
diff --git a/share/man/man9/ifnet.9 b/share/man/man9/ifnet.9
new file mode 100644
index 0000000..532f6cd
--- /dev/null
+++ b/share/man/man9/ifnet.9
@@ -0,0 +1,1363 @@
+.\" -*- Nroff -*-
+.\" Copyright 1996, 1997 Massachusetts Institute of Technology
+.\"
+.\" Permission to use, copy, modify, and distribute this software and
+.\" its documentation for any purpose and without fee is hereby
+.\" granted, provided that both the above copyright notice and this
+.\" permission notice appear in all copies, that both the above
+.\" copyright notice and this permission notice appear in all
+.\" supporting documentation, and that the name of M.I.T. not be used
+.\" in advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission. M.I.T. makes
+.\" no representations about the suitability of this software for any
+.\" purpose. It is provided "as is" without express or implied
+.\" warranty.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+.\" SHALL M.I.T. 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$
+.\"
+.Dd March 14, 2007
+.Os
+.Dt IFNET 9
+.Sh NAME
+.Nm ifnet ,
+.Nm ifaddr ,
+.Nm ifqueue ,
+.Nm if_data
+.Nd kernel interfaces for manipulating network interfaces
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/time.h
+.In sys/socket.h
+.In net/if.h
+.In net/if_var.h
+.In net/if_types.h
+.\"
+.Ss "Interface Manipulation Functions"
+.Ft "struct ifnet *"
+.Fn if_alloc "u_char type"
+.Ft void
+.Fn if_attach "struct ifnet *ifp"
+.Ft void
+.Fn if_detach "struct ifnet *ifp"
+.Ft void
+.Fn if_free "struct ifnet *ifp"
+.Ft void
+.Fn if_free_type "struct ifnet *ifp" "u_char type"
+.Ft void
+.Fn if_down "struct ifnet *ifp"
+.Ft int
+.Fn ifioctl "struct socket *so" "u_long cmd" "caddr_t data" "struct thread *td"
+.Ft int
+.Fn ifpromisc "struct ifnet *ifp" "int pswitch"
+.Ft int
+.Fn if_allmulti "struct ifnet *ifp" "int amswitch"
+.Ft "struct ifnet *"
+.Fn ifunit "const char *name"
+.Ft void
+.Fn if_up "struct ifnet *ifp"
+.\"
+.Ss "Interface Address Functions"
+.Ft "struct ifaddr *"
+.Fn ifa_ifwithaddr "struct sockaddr *addr"
+.Ft "struct ifaddr *"
+.Fn ifa_ifwithdstaddr "struct sockaddr *addr"
+.Ft "struct ifaddr *"
+.Fn ifa_ifwithnet "struct sockaddr *addr"
+.Ft "struct ifaddr *"
+.Fn ifaof_ifpforaddr "struct sockaddr *addr" "struct ifnet *ifp"
+.Ft void
+.Fn ifafree "struct ifaddr *ifa"
+.Fn IFAFREE "struct ifaddr *ifa"
+.\"
+.Ss "Interface Multicast Address Functions"
+.Ft int
+.Fn if_addmulti "struct ifnet *ifp" "struct sockaddr *sa" "struct ifmultiaddr **ifmap"
+.Ft int
+.Fn if_delmulti "struct ifnet *ifp" "struct sockaddr *sa"
+.Ft "struct ifmultiaddr *"
+.Fn ifmaof_ifpforaddr "struct sockaddr *addr" "struct ifnet *ifp"
+.Ss "Output queue macros"
+.Fn IF_DEQUEUE "struct ifqueue *ifq" "struct mbuf *m"
+.\"
+.Ss "struct ifnet Member Functions"
+.Ft void
+.Fn \*(lp*if_input\*(rp "struct ifnet *ifp" "struct mbuf *m"
+.Ft int
+.Fo \*(lp*if_output\*(rp
+.Fa "struct ifnet *ifp" "struct mbuf *m"
+.Fa "struct sockaddr *dst" "struct rtentry *rt"
+.Fc
+.Ft void
+.Fn \*(lp*if_start\*(rp "struct ifnet *ifp"
+.Ft int
+.Fn \*(lp*if_transmit\*(rp "struct ifnet *ifp" "struct mbuf *m"
+.Ft void
+.Fn \*(lp*if_qflush\*(rp "struct ifnet *ifp"
+.Ft int
+.Fn \*(lp*if_ioctl\*(rp "struct ifnet *ifp" "int cmd" "caddr_t data"
+.Ft void
+.Fn \*(lp*if_watchdog\*(rp "struct ifnet *ifp"
+.Ft void
+.Fn \*(lp*if_init\*(rp "void *if_softc"
+.Ft int
+.Fo \*(lp*if_resolvemulti\*(rp
+.Fa "struct ifnet *ifp" "struct sockaddr **retsa" "struct sockaddr *addr"
+.Fc
+.Ss "struct ifaddr member function"
+.Ft void
+.Fo \*(lp*ifa_rtrequest\*(rp
+.Fa "int cmd" "struct rtentry *rt" "struct sockaddr *dst"
+.Fc
+.\"
+.Ss "Global Variables"
+.Vt extern struct ifnethead ifnet ;
+.Vt extern struct ifaddr **ifnet_addrs ;
+.Vt extern int if_index ;
+.Vt extern int ifqmaxlen ;
+.Sh DATA STRUCTURES
+The kernel mechanisms for handling network interfaces reside primarily
+in the
+.Vt ifnet , if_data , ifaddr ,
+and
+.Vt ifmultiaddr
+structures in
+.In net/if.h
+and
+.In net/if_var.h
+and the functions named above and defined in
+.Pa /sys/net/if.c .
+Those interfaces which are intended to be used by user programs
+are defined in
+.In net/if.h ;
+these include the interface flags, the
+.Vt if_data
+structure, and the structures defining the appearance of
+interface-related messages on the
+.Xr route 4
+routing socket and in
+.Xr sysctl 3 .
+The header file
+.In net/if_var.h
+defines the kernel-internal interfaces, including the
+.Vt ifnet , ifaddr ,
+and
+.Vt ifmultiaddr
+structures and the functions which manipulate them.
+(A few user programs will need
+.In net/if_var.h
+because it is the prerequisite of some other header file like
+.In netinet/if_ether.h .
+Most references to those two files in particular can be replaced by
+.In net/ethernet.h . )
+.Pp
+The system keeps a linked list of interfaces using the
+.Li TAILQ
+macros defined in
+.Xr queue 3 ;
+this list is headed by a
+.Vt "struct ifnethead"
+called
+.Va ifnet .
+The elements of this list are of type
+.Vt "struct ifnet" ,
+and most kernel routines which manipulate interface as such accept or
+return pointers to these structures.
+Each interface structure
+contains an
+.Vt if_data
+structure, which contains statistics and identifying information used
+by management programs, and which is exported to user programs by way
+of the
+.Xr ifmib 4
+branch of the
+.Xr sysctl 3
+MIB.
+Each interface also has a
+.Li TAILQ
+of interface addresses, described by
+.Vt ifaddr
+structures; the head of the queue is always an
+.Dv AF_LINK
+address
+(see
+.Xr link_addr 3 )
+describing the link layer implemented by the interface (if any).
+(Some trivial interfaces do not provide any link layer addresses;
+this structure, while still present, serves only to identify the
+interface name and index.)
+.Pp
+Finally, those interfaces supporting reception of multicast datagrams
+have a
+.Li TAILQ
+of multicast group memberships, described by
+.Vt ifmultiaddr
+structures.
+These memberships are reference-counted.
+.Pp
+Interfaces are also associated with an output queue, defined as a
+.Vt "struct ifqueue" ;
+this structure is used to hold packets while the interface is in the
+process of sending another.
+.Pp
+.Ss The Vt ifnet Ss structure
+The fields of
+.Vt "struct ifnet"
+are as follows:
+.Bl -tag -width ".Va if_capabilities" -offset indent
+.It Va if_softc
+.Pq Vt "void *"
+A pointer to the driver's private state block.
+(Initialized by driver.)
+.It Va if_l2com
+.Pq Vt "void *"
+A pointer to the common data for the interface's layer 2 protocol.
+(Initialized by
+.Fn if_alloc . )
+.It Va if_link
+.Pq Fn TAILQ_ENTRY ifnet
+.Xr queue 3
+macro glue.
+.It Va if_xname
+.Pq Vt "char *"
+The name of the interface,
+(e.g.,
+.Dq Li fxp0
+or
+.Dq Li lo0 ) .
+(Initialized by driver.)
+.It Va if_dname
+.Pq Vt "const char *"
+The name of the driver.
+(Initialized by driver.)
+.It Va if_dunit
+.Pq Vt int
+A unique number assigned to each interface managed by a particular
+driver.
+Drivers may choose to set this to
+.Dv IF_DUNIT_NONE
+if a unit number is not associated with the device.
+(Initialized by driver.)
+.It Va if_addrhead
+.Pq Vt "struct ifaddrhead"
+The head of the
+.Xr queue 3
+.Li TAILQ
+containing the list of addresses assigned to this interface.
+.It Va if_pcount
+.Pq Vt int
+A count of promiscuous listeners on this interface, used to
+reference-count the
+.Dv IFF_PROMISC
+flag.
+.It Va if_bpf
+.Pq Vt "struct bpf_if *"
+Opaque per-interface data for the packet filter,
+.Xr bpf 4 .
+(Initialized by
+.Fn bpf_attach . )
+.It Va if_index
+.Pq Vt u_short
+A unique number assigned to each interface in sequence as it is
+attached.
+This number can be used in a
+.Vt "struct sockaddr_dl"
+to refer to a particular interface by index
+(see
+.Xr link_addr 3 ) .
+(Initialized by
+.Fn if_alloc . )
+.It Va if_timer
+.Pq Vt short
+Number of seconds until the watchdog timer
+.Fn if_watchdog
+is called, or zero if the timer is disabled.
+(Set by driver,
+decremented by generic watchdog code.)
+.It Va if_flags
+.Pq Vt int
+Flags describing operational parameters of this interface (see below).
+(Manipulated by both driver and generic code.)
+.It Va if_capabilities
+.Pq Vt int
+Flags describing the capabilities the interface supports (see below).
+.It Va if_capenable
+.Pq Vt int
+Flags describing the enabled capabilities of the interface (see below).
+.\" .It Va if_ipending
+.\" Interrupt-pending bits for polled operation:
+.\" .Dv IFI_XMIT
+.\" (transmit complete interrupt)
+.\" and
+.\" .Dv IFI_RECV
+.\" (received packet ready interrupt).
+.\" See the
+.\" .Sx Polling
+.\" section, below.
+.\" (Manipulated by driver.)
+.It Va if_linkmib
+.Pq Vt "void *"
+A pointer to an interface-specific MIB structure exported by
+.Xr ifmib 4 .
+(Initialized by driver.)
+.It Va if_linkmiblen
+.Pq Vt size_t
+The size of said structure.
+(Initialized by driver.)
+.It Va if_data
+.Pq Vt "struct if_data"
+More statistics and information; see
+.Sx "The if_data structure" ,
+below.
+(Initialized by driver, manipulated by both driver and generic
+code.)
+.It Va if_snd
+.Pq Vt "struct ifqueue"
+The output queue.
+(Manipulated by driver.)
+.\".It Va if_poll_slowq
+.\".Pq Vt "struct ifqueue *"
+.\"A pointer to the input queue for devices which do not support polling
+.\"well.
+.\"See the
+.\".Sx Polling
+.\"section, below.
+.\"(Initialized by driver.)
+.El
+.Pp
+There are in addition a number of function pointers which the driver
+must initialize to complete its interface with the generic interface
+layer:
+.Bl -ohang -offset indent
+.It Fn if_input
+Pass a packet to an appropriate upper layer as determined
+from the link-layer header of the packet.
+This routine is to be called from an interrupt handler or
+used to emulate reception of a packet on this interface.
+A single function implementing
+.Fn if_input
+can be shared among multiple drivers utilizing the same link-layer
+framing, e.g., Ethernet.
+.It Fn if_output
+Output a packet on interface
+.Fa ifp ,
+or queue it on the output queue if the interface is already active.
+.It Fn if_transmit
+Transmit a packet on an interface or queue it if the interface is
+in use. This function will return
+.Dv ENOBUFS
+if the devices software and hardware queues are both full. This
+function must be installed after
+.It Fn if_qflush
+Free mbufs in internally managed queues when the interface is marked down.
+This function must be installed after
+.Fn if_attach
+to override the default implementation. This function is exposed in order
+to allow drivers to manage their own queues and to reduce the latency
+caused by a frequently gratuitous enqueue / dequeue pair to ifq. The
+suggested internal software queueing mechanism is buf_ring.
+.It Fn if_start
+Start queued output on an interface.
+This function is exposed in
+order to provide for some interface classes to share a
+.Fn if_output
+among all drivers.
+.Fn if_start
+may only be called when the
+.Dv IFF_OACTIVE
+flag is not set.
+(Thus,
+.Dv IFF_OACTIVE
+does not literally mean that output is active, but rather that the
+device's internal output queue is full.) Please note that this function
+will soon be deprecated.
+.It Fn if_done
+Not used.
+We are not even sure what it was ever for.
+The prototype is faked.
+.It Fn if_ioctl
+Process interface-related
+.Xr ioctl 2
+requests
+(defined in
+.In sys/sockio.h ) .
+Preliminary processing is done by the generic routine
+.Fn ifioctl
+to check for appropriate privileges, locate the interface being
+manipulated, and perform certain generic operations like twiddling
+flags and flushing queues.
+See the description of
+.Fn ifioctl
+below for more information.
+.It Fn if_watchdog
+Routine called by the generic code when the watchdog timer,
+.Va if_timer ,
+expires.
+Usually this will reset the interface.
+.\" .It Fn if_poll_recv
+.\" .It Fn if_poll_xmit
+.\" .It Fn if_poll_slowinput
+.\" .It Fn if_poll_intren
+.\" See the
+.\" .Sx Polling
+.\" section, below.
+.It Fn if_init
+Initialize and bring up the hardware,
+e.g., reset the chip and the watchdog timer and enable the receiver unit.
+Should mark the interface running,
+but not active
+.Dv ( IFF_RUNNING , ~IIF_OACTIVE ) .
+.It Fn if_resolvemulti
+Check the requested multicast group membership,
+.Fa addr ,
+for validity, and if necessary compute a link-layer group which
+corresponds to that address which is returned in
+.Fa *retsa .
+Returns zero on success, or an error code on failure.
+.El
+.Ss "Interface Flags"
+Interface flags are used for a number of different purposes.
+Some
+flags simply indicate information about the type of interface and its
+capabilities; others are dynamically manipulated to reflect the
+current state of the interface.
+Flags of the former kind are marked
+.Aq S
+in this table; the latter are marked
+.Aq D .
+.Pp
+The macro
+.Dv IFF_CANTCHANGE
+defines the bits which cannot be set by a user program using the
+.Dv SIOCSIFFLAGS
+command to
+.Xr ioctl 2 ;
+these are indicated by an asterisk
+.Pq Ql *
+in the following listing.
+.Pp
+.Bl -tag -width ".Dv IFF_POINTOPOINT" -offset indent -compact
+.It Dv IFF_UP
+.Aq D
+The interface has been configured up by the user-level code.
+.It Dv IFF_BROADCAST
+.Aq S*
+The interface supports broadcast.
+.It Dv IFF_DEBUG
+.Aq D
+Used to enable/disable driver debugging code.
+.It Dv IFF_LOOPBACK
+.Aq S
+The interface is a loopback device.
+.It Dv IFF_POINTOPOINT
+.Aq S*
+The interface is point-to-point;
+.Dq broadcast
+address is actually the address of the other end.
+.It Dv IFF_RUNNING
+.Aq D*
+The interface has been configured and dynamic resources were
+successfully allocated.
+Probably only useful internal to the
+interface.
+.It Dv IFF_NOARP
+.Aq D
+Disable network address resolution on this interface.
+.It Dv IFF_PROMISC
+.Aq D*
+This interface is in promiscuous mode.
+.It Dv IFF_PPROMISC
+.Aq D
+This interface is in the permanently promiscuous mode (implies
+.Dv IFF_PROMISC ) .
+.It Dv IFF_ALLMULTI
+.Aq D*
+This interface is in all-multicasts mode (used by multicast routers).
+.It Dv IFF_OACTIVE
+.Aq D*
+The interface's hardware output queue (if any) is full; output packets
+are to be queued.
+.It Dv IFF_SIMPLEX
+.Aq S*
+The interface cannot hear its own transmissions.
+.It Dv IFF_LINK0
+.It Dv IFF_LINK1
+.It Dv IFF_LINK2
+.Aq D
+Control flags for the link layer.
+(Currently abused to select among
+multiple physical layers on some devices.)
+.It Dv IFF_MULTICAST
+.Aq S*
+This interface supports multicast.
+.It Dv IFF_POLLING
+.Aq D*
+The interface is in
+.Xr polling 4
+mode.
+See
+.Sx Interface Capabilities Flags
+for details.
+.El
+.Ss "Interface Capabilities Flags"
+Interface capabilities are specialized features an interface may
+or may not support.
+These capabilities are very hardware-specific
+and allow, when enabled,
+to offload specific network processing to the interface
+or to offer a particular feature for use by other kernel parts.
+.Pp
+It should be stressed that a capability can be completely
+uncontrolled (i.e., stay always enabled with no way to disable it)
+or allow limited control over itself (e.g., depend on another
+capability's state.)
+Such peculiarities are determined solely by the hardware and driver
+of a particular interface.
+Only the driver possesses
+the knowledge on whether and how the interface capabilities
+can be controlled.
+Consequently, capabilities flags in
+.Va if_capenable
+should never be modified directly by kernel code other than
+the interface driver.
+The command
+.Dv SIOCSIFCAP
+to
+.Fn ifioctl
+is the dedicated means to attempt altering
+.Va if_capenable
+on an interface.
+Userland code shall use
+.Xr ioctl 2 .
+.Pp
+The following capabilities are currently supported by the system:
+.Bl -tag -width ".Dv IFCAP_VLAN_HWTAGGING" -offset indent
+.It Dv IFCAP_NETCONS
+This interface can be a network console.
+.It Dv IFCAP_POLLING
+This interface supports
+.Xr polling 4 .
+See below for details.
+.It Dv IFCAP_RXCSUM
+This interface can do checksum validation on receiving data.
+Some interfaces do not have sufficient buffer storage to store frames
+above a certain MTU-size completely.
+The driver for the interface might disable hardware checksum validation
+if the MTU is set above the hardcoded limit.
+.It Dv IFCAP_TXCSUM
+This interface can do checksum calculation on transmitting data.
+.It Dv IFCAP_HWCSUM
+A shorthand for
+.Pq Dv IFCAP_RXCSUM | IFCAP_TXCSUM .
+.It Dv IFCAP_VLAN_HWTAGGING
+This interface can do VLAN tagging on output and
+demultiplex frames by their VLAN tag on input.
+.It Dv IFCAP_VLAN_MTU
+The
+.Xr vlan 4
+driver can operate over this interface in software tagging mode
+without having to decrease MTU on
+.Xr vlan 4
+interfaces below 1500 bytes.
+This implies the ability of this interface to cope with frames somewhat
+longer than permitted by the Ethernet specification.
+.It Dv IFCAP_JUMBO_MTU
+This Ethernet interface can transmit and receive frames up to
+9000 bytes long.
+.El
+.Pp
+The ability of advanced network interfaces to offload certain
+computational tasks from the host CPU to the board is limited
+mostly to TCP/IP.
+Therefore a separate field associated with an interface
+(see
+.Va ifnet.if_data.ifi_hwassist
+below)
+keeps a detailed description of its enabled capabilities
+specific to TCP/IP processing.
+The TCP/IP module consults the field to see which tasks
+can be done on an
+.Em outgoing
+packet by the interface.
+The flags defined for that field are a superset of those for
+.Va mbuf.m_pkthdr.csum_flags ,
+namely:
+.Bl -tag -width ".Dv CSUM_FRAGMENT" -offset indent
+.It Dv CSUM_IP
+The interface will compute IP checksums.
+.It Dv CSUM_TCP
+The interface will compute TCP checksums.
+.It Dv CSUM_UDP
+The interface will compute UDP checksums.
+.It Dv CSUM_IP_FRAGS
+The interface can compute a TCP or UDP checksum for a packet
+fragmented by the host CPU.
+Makes sense only along with
+.Dv CSUM_TCP
+or
+.Dv CSUM_UDP .
+.It Dv CSUM_FRAGMENT
+The interface will do the fragmentation of IP packets if necessary.
+The host CPU does not need to care about MTU on this interface
+as long as a packet to transmit through it is an IP one and it
+does not exceed the size of the hardware buffer.
+.El
+.Pp
+An interface notifies the TCP/IP module about the tasks
+the former has performed on an
+.Em incoming
+packet by setting the corresponding flags in the field
+.Va mbuf.m_pkthdr.csum_flags
+of the
+.Vt mbuf chain
+containing the packet.
+See
+.Xr mbuf 9
+for details.
+.Pp
+The capability of a network interface to operate in
+.Xr polling 4
+mode involves several flags in different
+global variables and per-interface fields.
+First, there is a system-wide
+.Xr sysctl 8
+master switch named
+.Va kern.polling.enable ,
+which can toggle
+.Xr polling 4
+globally.
+If that variable is set to non-zero,
+.Xr polling 4
+will be used on those devices where it is enabled individually.
+Otherwise,
+.Xr polling 4
+will not be used in the system.
+Second, the capability flag
+.Dv IFCAP_POLLING
+set in interface's
+.Va if_capabilities
+indicates support for
+.Xr polling 4
+on the particular interface.
+If set in
+.Va if_capabilities ,
+the same flag can be marked or cleared in the interface's
+.Va if_capenable ,
+thus initiating switch of the interface to
+.Xr polling 4
+mode or interrupt
+mode, respectively.
+The actual mode change will occur at an implementation-specific moment
+in the future, e.g., during the next interrupt or
+.Xr polling 4
+cycle.
+And finally, if the mode transition has been successful, the flag
+.Dv IFF_POLLING
+is marked or cleared in the interface's
+.Va if_flags
+to indicate the current mode of the interface.
+.Ss The Vt if_data Ss Structure
+In
+.Bx 4.4 ,
+a subset of the interface information believed to be of interest to
+management stations was segregated from the
+.Vt ifnet
+structure and moved into its own
+.Vt if_data
+structure to facilitate its use by user programs.
+The following elements of the
+.Vt if_data
+structure are initialized by the interface and are not expected to change
+significantly over the course of normal operation:
+.Bl -tag -width ".Va ifi_lastchange" -offset indent
+.It Va ifi_type
+.Pq Vt u_char
+The type of the interface, as defined in
+.In net/if_types.h
+and described below in the
+.Sx "Interface Types"
+section.
+.It Va ifi_physical
+.Pq Vt u_char
+Intended to represent a selection of physical layers on devices which
+support more than one; never implemented.
+.It Va ifi_addrlen
+.Pq Vt u_char
+Length of a link-layer address on this device, or zero if there are
+none.
+Used to initialized the address length field in
+.Vt sockaddr_dl
+structures referring to this interface.
+.It Va ifi_hdrlen
+.Pq Vt u_char
+Maximum length of any link-layer header which might be prepended by
+the driver to a packet before transmission.
+The generic code computes
+the maximum over all interfaces and uses that value to influence the
+placement of data in
+.Vt mbuf Ns s
+to attempt to ensure that there is always
+sufficient space to prepend a link-layer header without allocating an
+additional
+.Vt mbuf .
+.\" (See
+.\" .Xr mbuf 9 . )
+.\" .It Va ifi_recvquota
+.\" .Pq Vt u_char
+.\" Number of packets the interface is permitted to receive at one time
+.\" when in polled mode.
+.\" .It Va ifi_xmitquota
+.\" .Pq Vt u_char
+.\" Number of packets the interface is permitted to queue for transmission
+.\" at one time when in polled mode.
+.\" There is some controversy over
+.\" whether such a restriction makes any sense at all.
+.It Va ifi_datalen
+.Pq Vt u_char
+Length of the
+.Vt if_data
+structure.
+Allows some stabilization of the routing socket ABI in the face of
+increases in the length of
+.Vt struct ifdata .
+.It Va ifi_mtu
+.Pq Vt u_long
+The maximum transmission unit of the medium, exclusive of any
+link-layer overhead.
+.It Va ifi_metric
+.Pq Vt u_long
+A dimensionless metric interpreted by a user-mode routing process.
+.It Va ifi_baudrate
+.Pq Vt u_long
+The line rate of the interface, in bits per second.
+.It Va ifi_hwassist
+.Pq Vt u_long
+A detailed interpretation of the capabilities
+to offload computational tasks for
+.Em outgoing
+packets.
+The interface driver must keep this field in accord with
+the current value of
+.Va if_capenable .
+.It Va ifi_epoch
+.Pq Vt time_t
+The system uptime when interface was attached or the statistics
+below were reset.
+This is intended to be used to set the SNMP variable
+.Va ifCounterDiscontinuityTime .
+It may also be used to determine if two successive queries for an
+interface of the same index have returned results for the same
+interface.
+.El
+.Pp
+The structure additionally contains generic statistics applicable to a
+variety of different interface types (except as noted, all members are
+of type
+.Vt u_long ) :
+.Bl -tag -width ".Va ifi_lastchange" -offset indent
+.It Va ifi_link_state
+.Pq Vt u_char
+The current link state of Ethernet interfaces.
+See the
+.Sx Interface Link States
+section for possible values.
+.It Va ifi_ipackets
+Number of packets received.
+.It Va ifi_ierrors
+Number of receive errors detected (e.g., FCS errors, DMA overruns,
+etc.).
+More detailed breakdowns can often be had by way of a
+link-specific MIB.
+.It Va ifi_opackets
+Number of packets transmitted.
+.It Va ifi_oerrors
+Number of output errors detected (e.g., late collisions, DMA overruns,
+etc.).
+More detailed breakdowns can often be had by way of a
+link-specific MIB.
+.It Va ifi_collisions
+Total number of collisions detected on output for CSMA interfaces.
+(This member is sometimes [ab]used by other types of interfaces for
+other output error counts.)
+.It Va ifi_ibytes
+Total traffic received, in bytes.
+.It Va ifi_obytes
+Total traffic transmitted, in bytes.
+.It Va ifi_imcasts
+Number of packets received which were sent by link-layer multicast.
+.It Va ifi_omcasts
+Number of packets sent by link-layer multicast.
+.It Va ifi_iqdrops
+Number of packets dropped on input.
+Rarely implemented.
+.It Va ifi_noproto
+Number of packets received for unknown network-layer protocol.
+.\" .It Va ifi_recvtiming
+.\" Amount of time, in microseconds, spent to receive an average packet on
+.\" this interface.
+.\" See the
+.\" .Sx Polling
+.\" section, below.
+.\" .It Va ifi_xmittiming
+.\" Amount of time, in microseconds, spent to service a transmit-complete
+.\" interrupt on this interface.
+.\" See the
+.\" .Sx Polling
+.\" section, below.
+.It Va ifi_lastchange
+.Pq Vt "struct timeval"
+The time of the last administrative change to the interface (as required
+for
+.Tn SNMP ) .
+.El
+.Ss Interface Types
+The header file
+.In net/if_types.h
+defines symbolic constants for a number of different types of
+interfaces.
+The most common are:
+.Pp
+.Bl -tag -offset indent -width ".Dv IFT_PROPVIRTUAL" -compact
+.It Dv IFT_OTHER
+none of the following
+.It Dv IFT_ETHER
+Ethernet
+.It Dv IFT_ISO88023
+ISO 8802-3 CSMA/CD
+.It Dv IFT_ISO88024
+ISO 8802-4 Token Bus
+.It Dv IFT_ISO88025
+ISO 8802-5 Token Ring
+.It Dv IFT_ISO88026
+ISO 8802-6 DQDB MAN
+.It Dv IFT_FDDI
+FDDI
+.It Dv IFT_PPP
+Internet Point-to-Point Protocol
+.Pq Xr ppp 8
+.It Dv IFT_LOOP
+The loopback
+.Pq Xr lo 4
+interface
+.It Dv IFT_SLIP
+Serial Line IP
+.It Dv IFT_PARA
+Parallel-port IP
+.Pq Dq Tn PLIP
+.It Dv IFT_ATM
+Asynchronous Transfer Mode
+.El
+.Ss Interface Link States
+The following link states are currently defined:
+.Pp
+.Bl -tag -offset indent -width ".Dv LINK_STATE_UNKNOWN" -compact
+.It Dv LINK_STATE_UNKNOWN
+The link is in an invalid or unknown state.
+.It Dv LINK_STATE_DOWN
+The link is down.
+.It Dv LINK_STATE_UP
+The link is up.
+.El
+.Ss The Vt ifaddr Ss Structure
+Every interface is associated with a list
+(or, rather, a
+.Li TAILQ )
+of addresses, rooted at the interface structure's
+.Va if_addrlist
+member.
+The first element in this list is always an
+.Dv AF_LINK
+address representing the interface itself; multi-access network
+drivers should complete this structure by filling in their link-layer
+addresses after calling
+.Fn if_attach .
+Other members of the structure represent network-layer addresses which
+have been configured by means of the
+.Dv SIOCAIFADDR
+command to
+.Xr ioctl 2 ,
+called on a socket of the appropriate protocol family.
+The elements of this list consist of
+.Vt ifaddr
+structures.
+Most protocols will declare their own protocol-specific
+interface address structures, but all begin with a
+.Vt "struct ifaddr"
+which provides the most-commonly-needed functionality across all
+protocols.
+Interface addresses are reference-counted.
+.Pp
+The members of
+.Vt "struct ifaddr"
+are as follows:
+.Bl -tag -width ".Va ifa_rtrequest" -offset indent
+.It Va ifa_addr
+.Pq Vt "struct sockaddr *"
+The local address of the interface.
+.It Va ifa_dstaddr
+.Pq Vt "struct sockaddr *"
+The remote address of point-to-point interfaces, and the broadcast
+address of broadcast interfaces.
+.Va ( ifa_broadaddr
+is a macro for
+.Va ifa_dstaddr . )
+.It Va ifa_netmask
+.Pq Vt "struct sockaddr *"
+The network mask for multi-access interfaces, and the confusion
+generator for point-to-point interfaces.
+.It Va ifa_ifp
+.Pq Vt "struct ifnet *"
+A link back to the interface structure.
+.It Va ifa_link
+.Pq Fn TAILQ_ENTRY ifaddr
+.Xr queue 3
+glue for list of addresses on each interface.
+.It Va ifa_rtrequest
+See below.
+.It Va ifa_flags
+.Pq Vt u_short
+Some of the flags which would be used for a route representing this
+address in the route table.
+.It Va ifa_refcnt
+.Pq Vt short
+The reference count.
+.It Va ifa_metric
+.Pq Vt int
+A metric associated with this interface address, for the use of some
+external routing protocol.
+.El
+.Pp
+References to
+.Vt ifaddr
+structures are gained manually, by incrementing the
+.Va ifa_refcnt
+member.
+References are released by calling either the
+.Fn ifafree
+function or the
+.Fn IFAFREE
+macro.
+.Pp
+.Fn ifa_rtrequest
+is a pointer to a function which receives callouts from the routing
+code
+.Pq Fn rtrequest
+to perform link-layer-specific actions upon requests to add, resolve,
+or delete routes.
+The
+.Fa cmd
+argument indicates the request in question:
+.Dv RTM_ADD , RTM_RESOLVE ,
+or
+.Dv RTM_DELETE .
+The
+.Fa rt
+argument is the route in question; the
+.Fa dst
+argument is the specific destination being manipulated
+for
+.Dv RTM_RESOLVE ,
+or a null pointer otherwise.
+.Sh FUNCTIONS
+The functions provided by the generic interface code can be divided
+into two groups: those which manipulate interfaces, and those which
+manipulate interface addresses.
+In addition to these functions, there
+may also be link-layer support routines which are used by a number of
+drivers implementing a specific link layer over different hardware;
+see the documentation for that link layer for more details.
+.Ss The Vt ifmultiaddr Ss Structure
+Every multicast-capable interface is associated with a list of
+multicast group memberships, which indicate at a low level which
+link-layer multicast addresses (if any) should be accepted, and at a
+high level, in which network-layer multicast groups a user process has
+expressed interest.
+.Pp
+The elements of the structure are as follows:
+.Bl -tag -width ".Va ifma_refcount" -offset indent
+.It Va ifma_link
+.Pq Fn LIST_ENTRY ifmultiaddr
+.Xr queue 3
+macro glue.
+.It Va ifma_addr
+.Pq Vt "struct sockaddr *"
+A pointer to the address which this record represents.
+The
+memberships for various address families are stored in arbitrary
+order.
+.It Va ifma_lladdr
+.Pq Vt "struct sockaddr *"
+A pointer to the link-layer multicast address, if any, to which the
+network-layer multicast address in
+.Va ifma_addr
+is mapped, else a null pointer.
+If this element is non-nil, this
+membership also holds an invisible reference to another membership for
+that link-layer address.
+.It Va ifma_refcount
+.Pq Vt u_int
+A reference count of requests for this particular membership.
+.El
+.Ss Interface Manipulation Functions
+.Bl -ohang -offset indent
+.It Fn if_alloc
+Allocate and initialize
+.Vt "struct ifnet" .
+Initialization includes the allocation of an interface index and may
+include the allocation of a
+.Fa type
+specific structure in
+.Va if_l2com .
+.It Fn if_attach
+Link the specified interface
+.Fa ifp
+into the list of network interfaces.
+Also initialize the list of
+addresses on that interface, and create a link-layer
+.Vt ifaddr
+structure to be the first element in that list.
+(A pointer to
+this address structure is saved in the global array
+.Va ifnet_addrs . )
+The
+.Fa ifp
+must have been allocated by
+.Fn if_alloc .
+.It Fn if_detach
+Shut down and unlink the specified
+.Fa ifp
+from the interface list.
+.It Fn if_free
+Free the given
+.Fa ifp
+back to the system.
+The interface must have been previously detached if it was ever attached.
+.It Fn if_free_type
+Identical to
+.Fn if_free
+except that the given
+.Fa type
+is used to free
+.Va if_l2com
+instead of the type in
+.Va if_type .
+This is intended for use with drivers that change their interface type.
+.It Fn if_down
+Mark the interface
+.Fa ifp
+as down (i.e.,
+.Dv IFF_UP
+is not set),
+flush its output queue, notify protocols of the transition,
+and generate a message from the
+.Xr route 4
+routing socket.
+.It Fn if_up
+Mark the interface
+.Fa ifp
+as up, notify protocols of the transition,
+and generate a message from the
+.Xr route 4
+routing socket.
+.It Fn ifpromisc
+Add or remove a promiscuous reference to
+.Fa ifp .
+If
+.Fa pswitch
+is true, add a reference;
+if it is false, remove a reference.
+On reference count transitions
+from zero to one and one to zero, set the
+.Dv IFF_PROMISC
+flag appropriately and call
+.Fn if_ioctl
+to set up the interface in the desired mode.
+.It Fn if_allmulti
+As
+.Fn ifpromisc ,
+but for the all-multicasts
+.Pq Dv IFF_ALLMULTI
+flag instead of the promiscuous flag.
+.It Fn ifunit
+Return an
+.Vt ifnet
+pointer for the interface named
+.Fa name .
+.It Fn ifioctl
+Process the ioctl request
+.Fa cmd ,
+issued on socket
+.Fa so
+by thread
+.Fa td ,
+with data parameter
+.Fa data .
+This is the main routine for handling all interface configuration
+requests from user mode.
+It is ordinarily only called from the socket-layer
+.Xr ioctl 2
+handler, and only for commands with class
+.Sq Li i .
+Any unrecognized commands will be passed down to socket
+.Fa so Ns 's
+protocol for
+further interpretation.
+The following commands are handled by
+.Fn ifioctl :
+.Pp
+.Bl -tag -width ".Dv OSIOCGIFNETMASK" -offset indent -compact
+.It Dv SIOCGIFCONF
+.It Dv OSIOCGIFCONF
+Get interface configuration.
+(No call-down to driver.)
+.Pp
+.It Dv SIOCSIFNAME
+Set the interface name.
+.Dv RTM_IFANNOUNCE
+departure and arrival messages are sent so that
+routing code that relies on the interface name will update its interface
+list.
+Caller must have appropriate privilege.
+(No call-down to driver.)
+.It Dv SIOCGIFCAP
+.It Dv SIOCGIFFLAGS
+.It Dv SIOCGIFMETRIC
+.It Dv SIOCGIFMTU
+.It Dv SIOCGIFPHYS
+Get interface capabilities, flags, metric, MTU, medium selection.
+(No call-down to driver.)
+.Pp
+.It Dv SIOCSIFCAP
+Enable or disable interface capabilities.
+Caller must have appropriate privilege.
+Before a call to the driver-specific
+.Fn if_ioctl
+routine, the requested mask for enabled capabilities is checked
+against the mask of capabilities supported by the interface,
+.Va if_capabilities .
+Requesting to enable an unsupported capability is invalid.
+The rest is supposed to be done by the driver,
+which includes updating
+.Va if_capenable
+and
+.Va if_data.ifi_hwassist
+appropriately.
+.Pp
+.It Dv SIOCSIFFLAGS
+Change interface flags.
+Caller must have appropriate privilege.
+If a change to the
+.Dv IFF_UP
+flag is requested,
+.Fn if_up
+or
+.Fn if_down
+is called as appropriate.
+Flags listed in
+.Dv IFF_CANTCHANGE
+are masked off, and the field
+.Va if_flags
+in the interface structure is updated.
+Finally, the driver
+.Fn if_ioctl
+routine is called to perform any setup
+requested.
+.Pp
+.It Dv SIOCSIFMETRIC
+.It Dv SIOCSIFPHYS
+Change interface metric or medium.
+Caller must have appropriate privilege.
+.Pp
+.It Dv SIOCSIFMTU
+Change interface MTU.
+Caller must have appropriate privilege.
+MTU
+values less than 72 or greater than 65535 are considered invalid.
+The driver
+.Fn if_ioctl
+routine is called to implement the change; it is responsible for any
+additional sanity checking and for actually modifying the MTU in the
+interface structure.
+.Pp
+.It Dv SIOCADDMULTI
+.It Dv SIOCDELMULTI
+Add or delete permanent multicast group memberships on the interface.
+Caller must have appropriate privilege.
+The
+.Fn if_addmulti
+or
+.Fn if_delmulti
+function is called to perform the operation; qq.v.
+.Pp
+.It Dv SIOCSIFDSTADDR
+.It Dv SIOCSIFADDR
+.It Dv SIOCSIFBRDADDR
+.It Dv SIOCSIFNETMASK
+The socket's protocol control routine is called to implement the
+requested action.
+.Pp
+.It Dv OSIOGIFADDR
+.It Dv OSIOCGIFDSTADDR
+.It Dv OSIOCGIFBRDADDR
+.It Dv OSIOCGIFNETMASK
+The socket's protocol control routine is called to implement the
+requested action.
+On return,
+.Vt sockaddr
+structures are converted into old-style (no
+.Va sa_len
+member).
+.El
+.El
+.Pp
+.Fn if_down ,
+.Fn ifioctl ,
+.Fn ifpromisc ,
+and
+.Fn if_up
+must be called at
+.Fn splnet
+or higher.
+.Ss "Interface Address Functions"
+Several functions exist to look up an interface address structure
+given an address.
+.Fn ifa_ifwithaddr
+returns an interface address with either a local address or a
+broadcast address precisely matching the parameter
+.Fa addr .
+.Fn ifa_ifwithdstaddr
+returns an interface address for a point-to-point interface whose
+remote
+.Pq Dq destination
+address is
+.Fa addr .
+.Pp
+.Fn ifa_ifwithnet
+returns the most specific interface address which matches the
+specified address,
+.Fa addr ,
+subject to its configured netmask, or a point-to-point interface
+address whose remote address is
+.Fa addr
+if one is found.
+.Pp
+.Fn ifaof_ifpforaddr
+returns the most specific address configured on interface
+.Fa ifp
+which matches address
+.Fa addr ,
+subject to its configured netmask.
+If the interface is
+point-to-point, only an interface address whose remote address is
+precisely
+.Fa addr
+will be returned.
+.Pp
+All of these functions return a null pointer if no such address can be
+found.
+.Ss "Interface Multicast Address Functions"
+The
+.Fn if_addmulti ,
+.Fn if_delmulti ,
+and
+.Fn ifmaof_ifpforaddr
+functions provide support for requesting and relinquishing multicast
+group memberships, and for querying an interface's membership list,
+respectively.
+The
+.Fn if_addmulti
+function takes a pointer to an interface,
+.Fa ifp ,
+and a generic address,
+.Fa sa .
+It also takes a pointer to a
+.Vt "struct ifmultiaddr *"
+which is filled in on successful return with the address of the
+group membership control block.
+The
+.Fn if_addmulti
+function performs the following four-step process:
+.Bl -enum -offset indent
+.It
+Call the interface's
+.Fn if_resolvemulti
+entry point to determine the link-layer address, if any, corresponding
+to this membership request, and also to give the link layer an
+opportunity to veto this membership request should it so desire.
+.It
+Check the interface's group membership list for a pre-existing
+membership for this group.
+If one is not found, allocate a new one;
+if one is, increment its reference count.
+.It
+If the
+.Fn if_resolvemulti
+routine returned a link-layer address corresponding to the group,
+repeat the previous step for that address as well.
+.It
+If the interface's multicast address filter needs to be changed
+because a new membership was added, call the interface's
+.Fn if_ioctl
+routine
+(with a
+.Fa cmd
+argument of
+.Dv SIOCADDMULTI )
+to request that it do so.
+.El
+.Pp
+The
+.Fn if_delmulti
+function, given an interface
+.Fa ifp
+and an address,
+.Fa sa ,
+reverses this process.
+Both functions return zero on success, or a
+standard error number on failure.
+.Pp
+The
+.Fn ifmaof_ifpforaddr
+function examines the membership list of interface
+.Fa ifp
+for an address matching
+.Fa addr ,
+and returns a pointer to that
+.Vt "struct ifmultiaddr"
+if one is found, else it returns a null pointer.
+.Sh SEE ALSO
+.Xr ioctl 2 ,
+.Xr link_addr 3 ,
+.Xr queue 3 ,
+.Xr sysctl 3 ,
+.Xr bpf 4 ,
+.Xr ifmib 4 ,
+.Xr lo 4 ,
+.Xr netintro 4 ,
+.Xr polling 4 ,
+.Xr config 8 ,
+.Xr ppp 8 ,
+.Xr mbuf 9 ,
+.Xr rtentry 9
+.Rs
+.%A Gary R. Wright
+.%A W. Richard Stevens
+.%B TCP/IP Illustrated
+.%V Vol. 2
+.%O Addison-Wesley, ISBN 0-201-63354-X
+.Re
+.Sh AUTHORS
+This manual page was written by
+.An Garrett A. Wollman .
diff --git a/share/man/man9/inittodr.9 b/share/man/man9/inittodr.9
new file mode 100644
index 0000000..61524f2
--- /dev/null
+++ b/share/man/man9/inittodr.9
@@ -0,0 +1,123 @@
+.\" $NetBSD: inittodr.9,v 1.2 1996/03/27 21:16:06 jtc Exp $
+.\"
+.\" Copyright (c) 1994 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 by Christopher G. Demetriou
+.\" for the NetBSD Project.
+.\" 3. 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$
+.\"
+.Dd March 22, 1997
+.Dt INITTODR 9
+.Os
+.Sh NAME
+.Nm inittodr
+.Nd initialize system time
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft void
+.Fn inittodr "time_t base"
+.Sh DESCRIPTION
+The
+.Fn inittodr
+function determines the time and sets the system clock.
+It tries to pick the correct time using a set of heuristics that examine
+the system's battery backed clock and the time obtained from the root
+file system, as given in
+.Fa base .
+How the
+.Fa base
+value is obtained will vary depending on the
+root file system type.
+The heuristics used include:
+.Bl -bullet
+.It
+If the battery-backed clock has a valid time, it is used.
+.\" .It
+.\" If the battery-backed clock does not have a valid time, and
+.\" the time provided in
+.\" .Fa base
+.\" is within reason,
+.\" .Fa base
+.\" is used as the current time.
+.\" .It
+.\" If the battery-backed clock appears invalid, and
+.\" .Fa base
+.\" appears non-sensical or was not provided (was given as zero),
+.\" a arbitrary base (typically some time in the late 1970s)
+.\" will be used.
+.It
+If the battery-backed clock does not have a valid time,
+the time provided in
+.Fa base
+will be used.
+.El
+.Pp
+Once a system time has been determined, it is stored in the
+.Va time
+variable.
+.Sh DIAGNOSTICS
+The
+.Fn inittodr
+function prints diagnostic messages if it has trouble figuring
+out the system time.
+Conditions that can cause diagnostic messages to be printed include:
+.Bl -bullet
+.It
+The battery-backed clock's time appears nonsensical.
+.\" .It
+.\" The
+.\" .Fa base
+.\" time appears nonsensical.
+.\" .It
+.\" The
+.\" .Fa base
+.\" time and the battery-backed clock's time differ by a large amount.
+.El
+.Sh SEE ALSO
+.Xr resettodr 9 ,
+.Xr time 9
+.Sh BUGS
+On many systems,
+.Fn inittodr
+has to convert from
+a time expressed in terms of year, month, day, hours, minutes,
+and seconds to
+.Va time ,
+expressed in seconds.
+Many of the implementations could share code, but do not.
+.Pp
+Each system's heuristics for picking the correct time are slightly
+different.
+.Pp
+The
+.Fx
+implementation should do a better job of validating the time provided in
+.Fa base
+when the battery-backed clock is unusable.
+Currently it unconditionally sets the system clock to this value.
diff --git a/share/man/man9/insmntque.9 b/share/man/man9/insmntque.9
new file mode 100644
index 0000000..204d288
--- /dev/null
+++ b/share/man/man9/insmntque.9
@@ -0,0 +1,94 @@
+.\" Copyright (C) 2008 Chad David <davidc@acns.ab.ca>.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 8, 2008
+.Dt insmntque 9
+.Os
+.Sh NAME
+.Nm insmntque ,
+.Nm insmntque1
+.Nd "associate a vnode with a mount"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn insmntque "struct vnode *vp" "struct mount *mp"
+.Ft int
+.Fn insmntque1 "struct vnode *vp" "struct mount *mp" "void (*dtr)(struct vnode *, void *)" "void *dtr_arg"
+.Sh DESCRIPTION
+The
+.Fn insmntque
+function associates a vnode with a mount.
+This includes updating
+.Va v_mount
+for the vnode, and inserting the vnode into the mounts vnode list.
+.Pp
+The mount reference count is incremented for each vnode added to the
+mount, and that reference is decremented by
+.Xr vgone 9 .
+.Pp
+The mount's interlock is held while the vnode is inserted.
+For MP-safe file systems, the vnode must be exclusively locked.
+.Pp
+On failure,
+.Fn insmntque
+calls
+.Xr vgone 9
+on the supplied vnode, and then drops the vnode lock and reference.
+If more elaborated cleanup after
+.Fn insmntque
+failure is needed, the
+.Fn insmntque1
+function may be used instead.
+The
+.Fa dtr
+argument is a pointer to a function that is called on failure.
+This function may perform any custom cleanup.
+The vnode pointer is supplied as the first argument to
+.Fa dtr .
+The
+.Fa dtr_arg
+argument is the second, supplying any additional context needed.
+.Sh RETURN VALUES
+.Fn insmntque
+will always return 0, unless the file system is currently being unmounted
+in which case it may return
+.Dv EBUSY .
+The
+.Fn insmntque
+function may be forced to insert the vnode into the mount's vnode list
+by setting the
+.Va VV_FORCEINSMQ
+flag in the vnode
+.Va v_flag ,
+even if the file system is being unmounted.
+.Sh SEE ALSO
+.Xr vgone 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/intro.9 b/share/man/man9/intro.9
new file mode 100644
index 0000000..0e0fe81
--- /dev/null
+++ b/share/man/man9/intro.9
@@ -0,0 +1,109 @@
+.\" Copyright (c) 1983, 1991, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 13, 1995
+.Dt INTRO 9
+.Os
+.Sh NAME
+.Nm intro
+.Nd "introduction to system kernel interfaces"
+.Sh DESCRIPTION
+This section contains information about the interfaces and
+subroutines in the kernel.
+.Sh PROTOTYPES ANSI-C AND ALL THAT
+Yes please.
+.Pp
+We would like all code to be fully prototyped.
+.Pp
+If your code compiles cleanly with
+.Nm cc
+.Ar -Wall
+we would feel happy about it.
+It is important to understand that this is not a question of just shutting up
+.Nm cc ,
+it is a question about avoiding the things it complains about.
+To put it bluntly, do not hide the problem by casting and other
+obfuscating practices, solve the problem.
+.Sh INDENTATION AND STYLE
+Believe it or not, there actually exists a guide for indentation and style.
+It is not generally applied though.
+.Pp
+We would appreciate if people would pay attention to it, and at least not
+violate it blatantly.
+.Pp
+We do not mind it too badly if you have your own style, but please make
+sure we can read it too.
+.Pp
+Please take time to read
+.Xr style 9
+for more information.
+.Sh NAMING THINGS
+Some general rules exist:
+.Bl -enum
+.It
+If a function is meant as a debugging aid in DDB, it should be enclosed
+in
+.Bd -literal -offset indent
+#ifdef DDB
+
+#endif /* DDB */
+.Ed
+.Pp
+And the name of the procedure should start with the prefix
+.Li DDB_
+to clearly identify the procedure as a debugger routine.
+.El
+.Sh SCOPE OF SYMBOLS
+It is important to carefully consider the scope of symbols in the kernel.
+The default is to make everything static, unless some reason requires
+the opposite.
+.Pp
+There are several reasons for this policy,
+the main one is that the kernel is one monolithic name-space,
+and pollution is not a good idea here either.
+.Pp
+For device drivers and other modules that do not add new internal interfaces
+to the kernel, the entire source should be in one file if possible.
+That way all symbols can be made static.
+.Pp
+If for some reason a module is split over multiple source files, then try
+to split the module along some major fault-line and consider using the
+number of global symbols as your guide.
+The fewer the better.
+.Sh SEE ALSO
+.Xr style 9
+.Sh HISTORY
+The
+.Nm
+section manual page appeared in
+.Fx 2.2 .
diff --git a/share/man/man9/ithread.9 b/share/man/man9/ithread.9
new file mode 100644
index 0000000..498c51a
--- /dev/null
+++ b/share/man/man9/ithread.9
@@ -0,0 +1,362 @@
+.\" Copyright (c) 2001 John H. Baldwin <jhb@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$
+.\"
+.Dd August 25, 2006
+.Dt ITHREAD 9
+.Os
+.Sh NAME
+.Nm ithread_add_handler ,
+.Nm ithread_create ,
+.Nm ithread_destroy ,
+.Nm ithread_priority ,
+.Nm ithread_remove_handler ,
+.Nm ithread_schedule
+.Nd kernel interrupt threads
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.In sys/interrupt.h
+.Ft int
+.Fo ithread_add_handler
+.Fa "struct ithd *ithread"
+.Fa "const char *name"
+.Fa "driver_intr_t handler"
+.Fa "void *arg"
+.Fa "u_char pri"
+.Fa "enum intr_type flags"
+.Fa "void **cookiep"
+.Fc
+.Ft int
+.Fo ithread_create
+.Fa "struct ithd **ithread"
+.Fa "int vector"
+.Fa "int flags"
+.Fa "void (*disable)(int)"
+.Fa "void (*enable)(int)"
+.Fa "const char *fmt"
+.Fa "..."
+.Fc
+.Ft int
+.Fn ithread_destroy "struct ithd *ithread"
+.Ft u_char
+.Fn ithread_priority "enum intr_type flags"
+.Ft int
+.Fn ithread_remove_handler "void *cookie"
+.Ft int
+.Fn ithread_schedule "struct ithd *ithread" "int do_switch"
+.Sh DESCRIPTION
+Interrupt threads are kernel threads that run a list of handlers when
+triggered by either a hardware or software interrupt.
+Each interrupt handler has a name, handler function, handler argument,
+priority, and various flags.
+Each interrupt thread maintains a list of handlers sorted by priority.
+This results in higher priority handlers being executed prior to lower
+priority handlers.
+Each thread assumes the priority of its highest priority handler for its
+process priority, or
+.Dv PRIO_MAX
+if it has no handlers.
+Interrupt threads are also associated with a single interrupt source,
+represented as a vector number.
+.Pp
+The
+.Fn ithread_create
+function creates a new interrupt thread.
+The
+.Fa ithread
+argument points to an
+.Vt struct ithd
+pointer that will point to the newly created thread upon success.
+The
+.Fa vector
+argument specifies the interrupt source to associate this thread with.
+The
+.Fa flags
+argument is a mask of properties of this thread.
+The only valid flag currently for
+.Fn ithread_create
+is
+.Dv IT_SOFT
+to specify that this interrupt thread is a software interrupt.
+The
+.Fa enable
+and
+.Fa disable
+arguments specify optional functions used to enable and disable this
+interrupt thread's interrupt source.
+The functions receive the vector corresponding to the thread's interrupt
+source as their only argument.
+The remaining arguments form a
+.Xr printf 9
+argument list that is used to build the base name of the new ithread.
+The full name of an interrupt thread is formed by concatenating the base
+name of an interrupt thread with the names of all of its interrupt handlers.
+.Pp
+The
+.Fn ithread_destroy
+function destroys a previously created interrupt thread by releasing its
+resources and arranging for the backing kernel thread to terminate.
+An interrupt thread can only be destroyed if it has no handlers remaining.
+.Pp
+The
+.Fn ithread_add_handler
+function adds a new handler to an existing interrupt thread specified by
+.Fa ithread .
+The
+.Fa name
+argument specifies a name for this handler.
+The
+.Fa handler
+and
+.Fa arg
+arguments provide the function to execute for this handler and an argument
+to pass to it.
+The
+.Fa pri
+argument specifies the priority of this handler and is used both in sorting
+it in relation to the other handlers for this thread and to specify the
+priority of the backing kernel thread.
+The
+.Fa flags
+argument can be used to specify properties of this handler as defined in
+.In sys/bus.h .
+If
+.Fa cookiep
+is not
+.Dv NULL ,
+then it will be assigned a cookie that can be used later to remove this
+handler.
+.Pp
+The
+.Fn ithread_remove_handler
+removes a handler from an interrupt thread.
+The
+.Fa cookie
+argument specifies the handler to remove from its thread.
+.Pp
+The
+.Fn ithread_schedule
+function schedules an interrupt thread to run.
+If the
+.Fa do_switch
+argument is non-zero and the interrupt thread is idle, then a context switch
+will be forced after putting the interrupt thread on the run queue.
+.Pp
+The
+.Fn ithread_priority
+function translates the
+.Dv INTR_TYPE_*
+interrupt flags into interrupt handler priorities.
+.Pp
+The interrupt flags not related to the type of a particular interrupt
+.Pq Dv INTR_TYPE_*
+can be used to specify additional properties of both hardware and software
+interrupt handlers.
+The
+.Dv INTR_EXCL
+flag specifies that this handler cannot share an interrupt thread with
+another handler.
+The
+.Dv INTR_FAST
+flag specifies that when this handler is executed, it should be run immediately
+rather than being run asynchronously when its interrupt thread is scheduled to
+run.
+The
+.Dv INTR_FAST
+flag implies
+.Dv INTR_EXCL .
+The
+.Dv INTR_MPSAFE
+flag specifies that this handler is MP safe in that it does not need the
+Giant mutex to be held while it is executed.
+The
+.Dv INTR_ENTROPY
+flag specifies that the interrupt source this handler is tied to is a good
+source of entropy, and thus that entropy should be gathered when an interrupt
+from the handler's source triggers.
+Presently, the
+.Dv INTR_FAST
+and
+.Dv INTR_ENTROPY
+flags are not valid for software interrupt handlers.
+.Pp
+It is not permitted to sleep in an interrupt thread; hence, any memory
+or zone allocations in an interrupt thread should be specified with the
+.Dv M_NOWAIT
+flag set.
+Any allocation errors must be handled thereafter.
+.Sh RETURN VALUES
+The
+.Fn ithread_add_handler ,
+.Fn ithread_create ,
+.Fn ithread_destroy ,
+.Fn ithread_remove_handler ,
+and
+.Fn ithread_schedule
+functions return zero on success and non-zero on failure.
+The
+.Fn ithread_priority
+function returns a process priority corresponding to the passed in interrupt
+flags.
+.Sh EXAMPLES
+The
+.Fn swi_add
+function demonstrates the use of
+.Fn ithread_create
+and
+.Fn ithread_add_handler .
+.Bd -literal -offset indent
+int
+swi_add(struct ithd **ithdp, const char *name, driver_intr_t handler,
+ void *arg, int pri, enum intr_type flags, void **cookiep)
+{
+ struct proc *p;
+ struct ithd *ithd;
+ int error;
+
+ if (flags & (INTR_FAST | INTR_ENTROPY))
+ return (EINVAL);
+
+ ithd = (ithdp != NULL) ? *ithdp : NULL;
+
+ if (ithd != NULL) {
+ if ((ithd->it_flags & IT_SOFT) == 0)
+ return(EINVAL);
+ } else {
+ error = ithread_create(&ithd, pri, IT_SOFT, NULL, NULL,
+ "swi%d:", pri);
+ if (error)
+ return (error);
+
+ if (ithdp != NULL)
+ *ithdp = ithd;
+ }
+ return (ithread_add_handler(ithd, name, handler, arg, pri + PI_SOFT,
+ flags, cookiep));
+}
+.Ed
+.Sh ERRORS
+The
+.Fn ithread_add_handler
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+Any of the
+.Fa ithread ,
+.Fa handler ,
+or
+.Fa name
+arguments are
+.Dv NULL .
+.It Bq Er EINVAL
+The
+.Dv INTR_EXCL
+flag is specified and the interrupt thread
+.Fa ithread
+already has at least one handler, or the interrupt thread
+.Fa ithread
+already has an exclusive handler.
+.It Bq Er ENOMEM
+Could not allocate needed memory for this handler.
+.El
+.Pp
+The
+.Fn ithread_create
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system-imposed limit on the total
+number of processes under execution would be exceeded.
+The limit is given by the
+.Xr sysctl 3
+MIB variable
+.Dv KERN_MAXPROC .
+.It Bq Er EINVAL
+A flag other than
+.Dv IT_SOFT
+was specified in the
+.Fa flags
+parameter.
+.It Bq Er ENOMEM
+Could not allocate needed memory for this interrupt thread.
+.El
+.Pp
+The
+.Fn ithread_destroy
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa ithread
+argument is
+.Dv NULL .
+.It Bq Er EINVAL
+The interrupt thread pointed to by
+.Fa ithread
+has at least one handler.
+.El
+.Pp
+The
+.Fn ithread_remove_handler
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa cookie
+argument is
+.Dv NULL .
+.El
+.Pp
+The
+.Fn ithread_schedule
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa ithread
+argument is
+.Dv NULL .
+.It Bq Er EINVAL
+The interrupt thread pointed to by
+.Fa ithread
+has no interrupt handlers.
+.El
+.Sh SEE ALSO
+.Xr kthread 9 ,
+.Xr malloc 9 ,
+.Xr swi 9 ,
+.Xr uma 9
+.Sh HISTORY
+Interrupt threads and their corresponding API first appeared in
+.Fx 5.0 .
+.Sh BUGS
+Currently
+.Vt struct ithd
+represents both an interrupt source and an interrupt thread.
+There should be a separate
+.Vt struct isrc
+that contains a vector number, enable and disable functions, etc.\& that
+an ithread holds a reference to.
diff --git a/share/man/man9/kernacc.9 b/share/man/man9/kernacc.9
new file mode 100644
index 0000000..8a28b080
--- /dev/null
+++ b/share/man/man9/kernacc.9
@@ -0,0 +1,90 @@
+.\" $NetBSD: access.9,v 1.1 1996/06/16 10:38:35 pk Exp $
+.\"
+.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 16, 1996
+.Dt KERNACC 9
+.Os
+.Sh NAME
+.Nm kernacc ,
+.Nm useracc
+.Nd check memory regions for accessibility
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.In vm/vm.h
+.In vm/vm_extern.h
+.Ft int
+.Fn kernacc "void *addr" "int len" "int rw"
+.Ft int
+.Fn useracc "void *addr" "int len" "int rw"
+.Sh DESCRIPTION
+The
+.Fn kernacc
+and
+.Fn useracc
+functions check whether operations of the type specified in
+.Fa rw
+are permitted in the range of virtual addresses given by
+.Fa addr
+and
+.Fa len .
+The possible values of
+.Fa rw
+are any bitwise combination of
+.Dv VM_PROT_READ ,
+.Dv VM_PROT_WRITE
+and
+.Dv VM_PROT_EXECUTE .
+.Fn kernacc
+checks addresses in the kernel address space, while
+.Fn useracc
+considers
+.Fa addr
+to represent an user space address.
+The process context to use for this
+operation is taken from the global variable
+.Va curproc .
+.Sh RETURN VALUES
+Both functions return boolean true if the type of access specified
+by
+.Fa rw
+is permitted.
+Otherwise boolean false is returned.
+.Sh BUGS
+The process pointer should be passed in as an argument to
+.Fn useracc .
diff --git a/share/man/man9/kernel_mount.9 b/share/man/man9/kernel_mount.9
new file mode 100644
index 0000000..f34e759
--- /dev/null
+++ b/share/man/man9/kernel_mount.9
@@ -0,0 +1,212 @@
+.\"
+.\" Copyright (c) 2004 Tom Rhodes
+.\" 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$
+.\"
+.Dd December 13, 2004
+.Dt KERNEL_MOUNT 9
+.Os
+.Sh NAME
+.Nm free_mntarg ,
+.Nm kernel_mount ,
+.Nm kernel_vmount ,
+.Nm mount_arg ,
+.Nm mount_argb ,
+.Nm mount_argf ,
+.Nm mount_argsu
+.Nd "functions provided as part of the kernel mount interface"
+.Sh SYNOPSIS
+.Ft void
+.Fn free_mntarg "struct mntarg *ma"
+.Ft int
+.Fn kernel_mount "struct mntarg *ma" "int flags"
+.Ft int
+.Fn kernel_vmount "int flags" ...
+.Ft "struct mntarg *"
+.Fo mount_arg
+.Fa "struct mntarg *ma" "const char *name" "const void *val" "int len"
+.Fc
+.Ft "struct mntarg *"
+.Fn mount_argb "struct mntarg *ma" "int flag" "const char *name"
+.Ft "struct mntarg *"
+.Fn mount_argf "struct mntarg *ma" "const char *name" "const char *fmt" ...
+.Ft "struct mntarg *"
+.Fo mount_argsu
+.Fa "struct mntarg *ma" "const char *name" "const void *val" "int len"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn kernel_mount
+family of functions are provided as an API for building a list
+of mount arguments which will be used to mount file systems
+from inside the kernel.
+By accumulating a list of arguments, the API takes shape and
+provides the information necessary for the kernel to control
+the
+.Xr mount 8
+utility.
+When an error occurs, the process will stop.
+This will not cause a
+.Xr panic 9 .
+.Pp
+The header of the structure is stored in
+.Pa src/sys/kern/vfs_mount.c
+which permits automatic structure creation to
+ease the mount process.
+Memory allocation must always be freed when the entire
+process is complete, it is an error otherwise.
+.Pp
+The
+.Fn free_mntarg
+function is used to free or clear the
+.Vt mntarg
+structure.
+.Pp
+The
+.Fn kernel_mount
+function pulls information from the structure to perform
+the mount request on a given file system.
+Additionally, the
+.Fn kernel_mount
+function always calls the
+.Fn free_mntarg
+function.
+If
+.Fa ma
+contains any error code generated during the construction,
+that code will be called and the file system mount will
+not be attempted.
+.Pp
+The
+.Fn kernel_vmount
+is a function similar to
+.Xr printf 9
+which is used to mount a file system.
+.Pp
+The
+.Fn mount_arg
+function takes a plain argument and crafts parts of
+the structure with regards to various mount options.
+If the length is a value less than 0,
+.Xr strlen 3
+is used.
+This argument will be referenced until either
+.Fn free_mntarg
+or
+.Fn kernel_mount
+is called.
+.Pp
+The
+.Fn mount_argb
+function is used to add boolean arguments to
+the structure.
+The
+.Fa flag
+is the boolean value and
+.Fa name
+must start with
+.Qq Li no ,
+otherwise a panic will occur.
+.Pp
+The
+.Fn mount_argf
+function adds
+.Xr printf 9
+style arguments to the current structure.
+.Pp
+The
+.Fn mount_argsu
+function will add arguments to the structure from a
+userland string.
+.Sh EXAMPLES
+An example of the
+.Fn *_cmount
+function:
+.Bd -literal
+static int
+msdosfs_cmount(struct mntarg *ma, void *data, int flags, struct thread *td)
+{
+ struct msdosfs_args args;
+ int error;
+
+ if (data == NULL)
+ return (EINVAL);
+ error = copyin(data, &args, sizeof args);
+ if (error)
+ return (error);
+
+ ma = mount_argsu(ma, "from", args.fspec, MAXPATHLEN);
+ ma = mount_arg(ma, "export", &args.export, sizeof args.export);
+ ma = mount_argf(ma, "uid", "%d", args.uid);
+ ma = mount_argf(ma, "gid", "%d", args.gid);
+ ma = mount_argf(ma, "mask", "%d", args.mask);
+ ma = mount_argf(ma, "dirmask", "%d", args.dirmask);
+
+ ma = mount_argb(ma, args.flags & MSDOSFSMNT_SHORTNAME, "noshortname");
+ ma = mount_argb(ma, args.flags & MSDOSFSMNT_LONGNAME, "nolongname");
+ ma = mount_argb(ma, !(args.flags & MSDOSFSMNT_NOWIN95), "nowin95");
+ ma = mount_argb(ma, args.flags & MSDOSFSMNT_KICONV, "nokiconv");
+
+ ma = mount_argsu(ma, "cs_win", args.cs_win, MAXCSLEN);
+ ma = mount_argsu(ma, "cs_dos", args.cs_dos, MAXCSLEN);
+ ma = mount_argsu(ma, "cs_local", args.cs_local, MAXCSLEN);
+
+ error = kernel_mount(ma, flags);
+
+ return (error);
+}
+.Ed
+.Pp
+When working with
+.Fn kernel_vmount ,
+.Fa varargs
+must come in pairs, e.g.,
+.Brq Va name , value .
+.Bd -literal
+ error = kernel_vmount(
+ MNT_RDONLY,
+ "fstype", vfsname,
+ "fspath", "/",
+ "from", path,
+ NULL);
+.Ed
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr VFS_MOUNT 9 ,
+.Xr vfs_mount 9
+.Sh HISTORY
+The
+.Fn kernel_mount
+family of functions and this manual page first
+appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Fn kernel_mount
+family of functions and API was developed by
+.An Poul-Henning Kamp Aq phk@FreeBSD.org .
+This manual page was written by
+.An Tom Rhodes Aq trhodes@FreeBSD.org .
diff --git a/share/man/man9/kobj.9 b/share/man/man9/kobj.9
new file mode 100644
index 0000000..aed1244
--- /dev/null
+++ b/share/man/man9/kobj.9
@@ -0,0 +1,144 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd April 4, 2000
+.Dt KOBJ 9
+.Os
+.Sh NAME
+.Nm kobj
+.Nd a kernel object system for FreeBSD
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kobj.h
+.Ft void
+.Fn kobj_class_compile "kobj_class_t cls"
+.Ft void
+.Fn kobj_class_compile_static "kobj_class_t cls" "kobj_ops_t ops"
+.Ft void
+.Fn kobj_class_free "kobj_class_t cls"
+.Ft kobj_t
+.Fn kobj_create "kobj_class_t cls" "struct malloc_type *mtype" "int mflags"
+.Ft void
+.Fn kobj_init "kobj_t obj" "kobj_class_t cls"
+.Ft void
+.Fn kobj_delete "kobj_t obj" "struct malloc_type *mtype"
+.Fn DEFINE_CLASS name "kobj_method_t *methods" "size_t size"
+.Sh DESCRIPTION
+The kernel object system implements an object-oriented programming
+system in the
+.Fx
+kernel.
+The system is based around the concepts of interfaces, which are
+descriptions of sets of methods; classes, which are lists of functions
+implementing certain methods from those interfaces; and objects,
+which combine a class with a structure in memory.
+.Pp
+Methods are called using a dynamic method dispatching algorithm which
+is designed to allow new interfaces and classes to be introduced into
+the system at runtime.
+The method dispatch algorithm is designed to be both fast and robust
+and is only slightly more expensive than a direct function call,
+making kernel objects suitable for performance-critical algorithms.
+.Pp
+Suitable uses for kernel objects are any algorithms which need some
+kind of polymorphism (i.e., many different objects which can be treated
+in a uniform way).
+The common behaviour of the objects is described by a suitable
+interface and each different type of object is implemented by a
+suitable class.
+.Pp
+The simplest way to create a kernel object is to call
+.Fn kobj_create
+with a suitable class, malloc type and flags (see
+.Xr malloc 9
+for a description of the malloc type and flags).
+This will allocate memory for the object based on the object size
+specified by the class and initialise it by zeroing the memory and
+installing a pointer to the class' method dispatch table.
+Objects created in this way should be freed by calling
+.Fn kobj_delete .
+.Pp
+Clients which would like to manage the allocation of memory
+themselves should call
+.Fn kobj_init
+with a pointer to the memory for the object and the class which
+implements it.
+It is also possible to use
+.Fn kobj_init
+to change the class for an object.
+This should be done with care as the classes must agree on the layout
+of the object.
+The device framework uses this feature to associate drivers with
+devices.
+.Pp
+The functions
+.Fn kobj_class_compile ,
+.Fn kobj_class_compile_static
+and
+.Fn kobj_class_free
+are used to process a class description to make method dispatching
+efficient.
+A client should not normally need to call these since a class
+will automatically be compiled the first time it is used.
+If a class is to be used before
+.Xr malloc 9
+is initialised,
+then
+.Fn kobj_class_compile_static
+should be called with the class and a pointer to a statically
+allocated
+.Vt kobj_ops
+structure before the class is used to initialise any objects.
+.Pp
+To define a class, first define a simple array of
+.Vt kobj_method_t .
+Each method which the class implements should be entered into the
+table using the macro
+.Fn KOBJMETHOD
+which takes the name of the method (including its interface) and a
+pointer to a function which implements it.
+The table should be terminated with two zeros.
+The macro
+.Fn DEFINE_CLASS
+can then be used to initialise a
+.Vt kobj_class_t
+structure.
+The size argument to
+.Fn DEFINE_CLASS
+specifies how much memory should be allocated for each object.
+.Sh HISTORY
+Some of the concepts for this interface appeared in the device
+framework used for the alpha port of
+.Fx 3.0
+and more widely in
+.Fx 4.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/kproc.9 b/share/man/man9/kproc.9
new file mode 100644
index 0000000..23ce05c
--- /dev/null
+++ b/share/man/man9/kproc.9
@@ -0,0 +1,373 @@
+.\" Copyright (c) 2000-2001
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd October 19, 2007
+.Dt KPROC 9
+.Os
+.Sh NAME
+.Nm kproc_start ,
+.Nm kproc_shutdown ,
+.Nm kproc_create ,
+.Nm kproc_exit ,
+.Nm kproc_resume ,
+.Nm kproc_suspend ,
+.Nm kproc_suspend_check
+.Nd "kernel processes"
+.Sh SYNOPSIS
+.In sys/kthread.h
+.Ft void
+.Fn kproc_start "const void *udata"
+.Ft void
+.Fn kproc_shutdown "void *arg" "int howto"
+.Ft int
+.Fo kproc_create
+.Fa "void (*func)(void *)" "void *arg" "struct proc **newpp"
+.Fa "int flags" "int pages"
+.Fa "const char *fmt" ...
+.Fc
+.Ft void
+.Fn kproc_exit "int ecode"
+.Ft int
+.Fn kproc_resume "struct proc *p"
+.Ft int
+.Fn kproc_suspend "struct proc *p" "int timo"
+.Ft void
+.Fn kproc_suspend_check "struct proc *p"
+.Ft int
+.Fo kproc_kthread_add
+.Fa "void (*func)(void *)" "void *arg"
+.Fa "struct proc **procptr" "struct thread **tdptr"
+.Fa "int flags" "int pages" "char * procname" "const char *fmt" "..."
+.Fc
+.Sh DESCRIPTION
+The function
+.Fn kproc_start
+is used to start
+.Dq internal
+daemons such as
+.Nm bufdaemon , pagedaemon , vmdaemon ,
+and the
+.Nm syncer
+and is intended
+to be called from
+.Xr SYSINIT 9 .
+The
+.Fa udata
+argument is actually a pointer to a
+.Vt "struct kproc_desc"
+which describes the kernel process that should be created:
+.Bd -literal -offset indent
+struct kproc_desc {
+ char *arg0;
+ void (*func)(void);
+ struct proc **global_procpp;
+};
+.Ed
+.Pp
+The structure members are used by
+.Fn kproc_start
+as follows:
+.Bl -tag -width ".Va global_procpp" -offset indent
+.It Va arg0
+String to be used for the name of the process.
+This string will be copied into the
+.Va p_comm
+member of the new process'
+.Vt "struct proc" .
+.It Va func
+The main function for this kernel process to run.
+.It Va global_procpp
+A pointer to a
+.Vt "struct proc"
+pointer that should be updated to point to the newly created process' process
+structure.
+If this variable is
+.Dv NULL ,
+then it is ignored.
+.El
+.Pp
+The
+.Fn kproc_create
+function is used to create a kernel process.
+The new process shares its address space with process 0, the
+.Nm swapper
+process,
+and runs in kernel mode only.
+The
+.Fa func
+argument specifies the function that the process should execute.
+The
+.Fa arg
+argument is an arbitrary pointer that is passed in as the only argument to
+.Fa func
+when it is called by the new process.
+The
+.Fa newpp
+pointer points to a
+.Vt "struct proc"
+pointer that is to be updated to point to the newly created process.
+If this argument is
+.Dv NULL ,
+then it is ignored.
+The
+.Fa flags
+argument specifies a set of flags as described in
+.Xr rfork 2 .
+The
+.Fa pages
+argument specifies the size of the new kernel process's stack in pages.
+If 0 is used, the default kernel stack size is allocated.
+The rest of the arguments form a
+.Xr printf 9
+argument list that is used to build the name of the new process and is stored
+in the
+.Va p_comm
+member of the new process's
+.Vt "struct proc" .
+.Pp
+The
+.Fn kproc_exit
+function is used to terminate kernel processes.
+It should be called by the main function of the kernel process rather than
+letting the main function return to its caller.
+The
+.Fa ecode
+argument specifies the exit status of the process.
+While exiting, the function
+.Xr exit1 9
+will initiate a call to
+.Xr wakeup 9
+on the process handle.
+.Pp
+The
+.Fn kproc_resume ,
+.Fn kproc_suspend ,
+and
+.Fn kproc_suspend_check
+functions are used to suspend and resume a kernel process.
+During the main loop of its execution, a kernel process that wishes to allow
+itself to be suspended should call
+.Fn kproc_suspend_check
+passing in
+.Va curproc
+as the only argument.
+This function checks to see if the kernel process has been asked to suspend.
+If it has, it will
+.Xr tsleep 9
+until it is told to resume.
+Once it has been told to resume it will return allowing execution of the
+kernel process to continue.
+The other two functions are used to notify a kernel process of a suspend or
+resume request.
+The
+.Fa p
+argument points to the
+.Vt "struct proc"
+of the kernel process to suspend or resume.
+For
+.Fn kproc_suspend ,
+the
+.Fa timo
+argument specifies a timeout to wait for the kernel process to acknowledge the
+suspend request and suspend itself.
+.Pp
+The
+.Fn kproc_shutdown
+function is meant to be registered as a shutdown event for kernel processes that
+need to be suspended voluntarily during system shutdown so as not to interfere
+with system shutdown activities.
+The actual suspension of the kernel process is done with
+.Fn kproc_suspend .
+.Pp
+The
+.Fn kproc_kthread_add
+function is much like the
+.Fn kproc_create
+function above except that if the kproc already exists,
+then only a new thread (see
+.Xr kthread 9 )
+is created on the existing process.
+The
+.Fa func
+argument specifies the function that the process should execute.
+The
+.Fa arg
+argument is an arbitrary pointer that is passed in as the only argument to
+.Fa func
+when it is called by the new process.
+The
+.Fa procptr
+pointer points to a
+.Vt "struct proc "
+pointer that is the location to be updated with the new proc pointer
+if a new process is created, or if not
+.Dv NULL ,
+must contain the process pointer for the already exisiting process.
+If this argument points to
+.Dv NULL ,
+then a new process is created and the field updated.
+If not NULL, the
+.Fa tdptr
+pointer points to a
+.Vt "struct thread "
+pointer that is the location to be updated with the new thread pointer.
+The
+.Fa flags
+argument specifies a set of flags as described in
+.Xr rfork 2 .
+The
+.Fa pages
+argument specifies the size of the new kernel thread's stack in pages.
+If 0 is used, the default kernel stack size is allocated.
+The procname argument is the name the new process should be given if it needs to be created.
+It is
+.Em NOT
+a printf style format specifier but a simple string.
+The rest of the arguments form a
+.Xr printf 9
+argument list that is used to build the name of the new thread and is stored
+in the
+.Va td_name
+member of the new thread's
+.Vt "struct thread" .
+.Sh RETURN VALUES
+The
+.Fn kproc_create ,
+.Fn kproc_resume ,
+and
+.Fn kproc_suspend
+functions return zero on success and non-zero on failure.
+.Sh EXAMPLES
+This example demonstrates the use of a
+.Vt "struct kproc_desc"
+and the functions
+.Fn kproc_start ,
+.Fn kproc_shutdown ,
+and
+.Fn kproc_suspend_check
+to run the
+.Nm bufdaemon
+process.
+.Bd -literal -offset indent
+static struct proc *bufdaemonproc;
+
+static struct kproc_desc buf_kp = {
+ "bufdaemon",
+ buf_daemon,
+ &bufdaemonproc
+};
+SYSINIT(bufdaemon, SI_SUB_KTHREAD_BUF, SI_ORDER_FIRST, kproc_start,
+ &buf_kp)
+
+static void
+buf_daemon()
+{
+ ...
+ /*
+ * This process needs to be suspended prior to shutdown sync.
+ */
+ EVENTHANDLER_REGISTER(shutdown_pre_sync, kproc_shutdown,
+ bufdaemonproc, SHUTDOWN_PRI_LAST);
+ ...
+ for (;;) {
+ kproc_suspend_check(bufdaemonproc);
+ ...
+ }
+}
+.Ed
+.Sh ERRORS
+The
+.Fn kproc_resume
+and
+.Fn kproc_suspend
+functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa p
+argument does not reference a kernel process.
+.El
+.Pp
+The
+.Fn kproc_create
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system-imposed limit on the total
+number of processes under execution would be exceeded.
+The limit is given by the
+.Xr sysctl 3
+MIB variable
+.Dv KERN_MAXPROC .
+.It Bq Er EINVAL
+The
+.Dv RFCFDG
+flag was specified in the
+.Fa flags
+parameter.
+.El
+.Sh SEE ALSO
+.Xr rfork 2 ,
+.Xr exit1 9 ,
+.Xr kthread 9 ,
+.Xr SYSINIT 9 ,
+.Xr wakeup 9
+.Sh HISTORY
+The
+.Fn kproc_start
+function first appeared in
+.Fx 2.2 .
+The
+.Fn kproc_shutdown ,
+.Fn kproc_create ,
+.Fn kproc_exit ,
+.Fn kproc_resume ,
+.Fn kproc_suspend ,
+and
+.Fn kproc_suspend_check
+functions were introduced in
+.Fx 4.0 .
+Prior to
+.Fx 5.0 ,
+the
+.Fn kproc_shutdown ,
+.Fn kproc_resume ,
+.Fn kproc_suspend ,
+and
+.Fn kproc_suspend_check
+functions were named
+.Fn shutdown_kproc ,
+.Fn resume_kproc ,
+.Fn shutdown_kproc ,
+and
+.Fn kproc_suspend_loop ,
+respectively.
+Originally they had the names
+.Fn kthread_*
+but were changed to
+.Fn kproc_*
+when real kthreads became available.
diff --git a/share/man/man9/kqueue.9 b/share/man/man9/kqueue.9
new file mode 100644
index 0000000..c657088
--- /dev/null
+++ b/share/man/man9/kqueue.9
@@ -0,0 +1,375 @@
+.\" Copyright 2006 John-Mark Gurney
+.\" 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$
+.\"
+.Dd December 28, 2006
+.Dt KQUEUE 9
+.Os
+.Sh NAME
+.Nm kqueue_add_filteropts , kqueue_del_filteropts ,
+.Nm kqfd_register ,
+.Nm knote_fdclose ,
+.Nm knlist_add , knlist_remove , knlist_remove_inevent , knlist_empty ,
+.Nm knlist_init , knlist_destroy , knlist_clear , knlist_delete ,
+.Nm KNOTE_LOCKED , KNOTE_UNLOCKED
+.Nd "event delivery subsystem"
+.Sh SYNOPSIS
+.In sys/event.h
+.Ft int
+.Fn kqueue_add_filteropts "int filt" "struct filterops *filtops"
+.Ft int
+.Fn kqueue_del_filteropts "int filt"
+.Ft int
+.Fn kqfd_register "int fd" "struct kevent *kev" "struct thread *td" "int waitok"
+.Ft void
+.Fn knote_fdclose "struct thread *td" "int fd"
+.Ft void
+.Fn knlist_add "struct knlist *knl" "struct knote *kn" "int islocked"
+.Ft void
+.Fn knlist_remove "struct knlist *knl" "struct knote *kn" "int islocked"
+.Ft void
+.Fn knlist_remove_inevent "struct knlist *knl" "struct knote *kn"
+.Ft int
+.Fn knlist_empty "struct knlist *knl"
+.Ft void
+.Fo knlist_init
+.Fa "struct knlist *knl"
+.Fa "void *lock"
+.Fa "void \*[lp]*kl_lock\*[rp]\*[lp]void *\*[rp]"
+.Fa "void \*[lp]*kl_unlock\*[rp]\*[lp]void *\*[rp]"
+.Fa "int \*[lp]*kl_locked\*[rp]\*[lp]void *\*[rp]"
+.Fc
+.Ft void
+.Fn knlist_destroy "struct knlist *knl"
+.Ft void
+.Fn knlist_clear "struct knlist *knl" "int islocked"
+.Ft void
+.Fn knlist_delete "struct knlist *knl" "struct thread *td" "int islocked"
+.Ft void
+.Fn KNOTE_LOCKED "struct knlist *knl" "long hint"
+.Ft void
+.Fn KNOTE_UNLOCKED "struct knlist *knl" "long hint"
+.Sh DESCRIPTION
+The functions
+.Fn kqueue_add_filteropts
+and
+.Fn kqueue_del_filteropts
+allow for the addition and removal of a filter type.
+The filter is statically defined by the
+.Dv EVFILT_*
+macros.
+The function
+.Fn kqueue_add_filteropts
+will make
+.Fa filt
+available.
+The
+.Vt "struct filterops"
+has the following members:
+.Bl -tag -width ".Va f_attach"
+.It Va f_isfd
+If
+.Va f_isfd
+is set,
+.Va ident
+in
+.Vt "struct kevent"
+is taken to be a file descriptor.
+In this case, the
+.Vt knote
+passed into
+.Va f_attach
+will have the
+.Va kn_fp
+member initialized to the
+.Vt "struct file *"
+that represents the file descriptor.
+.It Va f_attach
+The
+.Va f_attach
+function will be called when attaching a
+.Vt knote
+to the object.
+The method should call
+.Fn knlist_add
+to add the
+.Vt knote
+to the list that was initialized with
+.Fn knlist_init .
+The call to
+.Fn knlist_add
+is only necessary if the object can have multiple
+.Vt knotes
+associated with it.
+If there is no
+.Vt knlist
+to call
+.Fn knlist_add
+with, the function
+.Va f_attach
+must clear the
+.Dv KN_DETACHED
+bit of
+.Va kn_status
+in the
+.Vt knote .
+The function shall return 0 on success, or appropriate error for the failure.
+During
+.Va f_attach ,
+it is valid to change the
+.Va kn_fops
+pointer to a different pointer.
+This will change the
+.Va f_event
+and
+.Va f_detach
+functions called when processing the
+.Vt knote .
+.It Va f_detach
+The
+.Va f_detach
+function will be called to detach the
+.Vt knote
+if the
+.Vt knote
+has not already been detached by a call to
+.Fn knlist_remove .
+.It Va f_event
+The
+.Va f_event
+function will be called to update the status of the
+.Vt knote .
+If the function returns 0, it will be assumed that the object is not
+ready (or no longer ready) to be woken up.
+The
+.Fa hint
+argument will be 0 when scanning
+.Vt knotes
+to see which are triggered.
+Otherwise, the
+.Fa hint
+argument will be the value passed to either
+.Dv KNOTE_LOCKED
+or
+.Dv KNOTE_UNLOCKED .
+The
+.Va kn_data
+value should be updated as necessary to reflect the current value, such as
+number of bytes available for reading, or buffer space available for writing.
+If the note needs to be removed,
+.Fn knlist_remove_inevent
+must be called.
+The function
+.Fn knlist_remove_inevent
+will remove the note from the list, the
+.Va f_detach
+function will not be called and the
+.Vt knote
+will not be returned as an event.
+.Pp
+Locks
+.Em must not
+be acquired in
+.Va f_event .
+If a lock is required in
+.Va f_event ,
+it must be obtained in the
+.Fa kl_lock
+function of the
+.Vt knlist
+that the
+.Va knote
+was added to.
+.El
+.Pp
+The function
+.Fn kqfd_register
+will register the
+.Vt kevent
+on the kqueue file descriptor
+.Fa fd .
+If it is safe to sleep,
+.Fa waitok
+should be set.
+.Pp
+The function
+.Fn knote_fdclose
+is used to delete all
+.Vt knotes
+associated with
+.Fa fd .
+Once returned, there will no longer be any
+.Vt knotes
+associated with the
+.Fa fd .
+The
+.Vt knotes
+removed will never be returned from a
+.Xr kevent 2
+call, so if userland uses the
+.Vt knote
+to track resources, they will be leaked.
+The
+.Fn FILEDESC_LOCK
+lock must be held over the call to
+.Fn knote_fdclose
+so that file descriptors cannot be added or removed.
+.Pp
+The
+.Fn knlist_*
+family of functions are for managing
+.Vt knotes
+associated with an object.
+A
+.Vt knlist
+is not required, but is commonly used.
+If used, the
+.Vt knlist
+must be initialized with the
+.Fn knlist_init
+function.
+If
+.Fa lock
+is
+.Dv NULL ,
+an internal lock will be used and the remaining arguments will be ignored.
+The
+.Fa kl_lock , kl_unlock
+and
+.Fa kl_locked
+functions will be used to manipulate a
+.Fa lock .
+If the argument is
+.Dv NULL ,
+default routines operating on
+.Vt "struct mtx *"
+will be used.
+The
+.Vt knlist
+structure may be embedded into the object structure.
+The
+.Fa lock
+will be held over calls to
+.Va f_event .
+If
+.Dv NULL
+is passed for the mutex, a private mutex will be used.
+The function
+.Fn knlist_empty
+requires that a
+.Fa lock
+be held.
+The function
+.Fn knlist_clear
+is used to remove all
+.Vt knotes
+associated with the list.
+The
+.Fa islocked
+argument declares if
+.Fa lock
+has been acquired.
+All
+.Vt knotes
+will be marked as detached, and
+.Dv EV_ONESHOT
+will be set so that the
+.Vt knote
+will be deleted after the next scan.
+The
+.Fn knlist_destroy
+function is used to destroy a
+.Vt knlist .
+There must be no
+.Vt knotes
+associated with the
+.Vt knlist
+.Fn ( knlist_empty
+returns true)
+and no more
+.Vt knotes
+may be attached to the object.
+A
+.Vt knlist
+may be emptied by calling
+.Fn knlist_clear .
+.Pp
+The macros
+.Fn KNOTE_LOCKED
+and
+.Fn KNOTE_UNLOCKED
+are used to notify
+.Vt knotes
+about events associated with the object.
+It will iterate over all
+.Vt knotes
+on the list calling the
+.Va f_event
+function associated with the
+.Vt knote .
+The macro
+.Fn KNOTE_LOCKED
+must be used if the lock associated with the
+.Fa knl
+passed in is held.
+The function
+.Fn KNOTE_UNLOCKED
+will acquire the lock before iterating over the list of
+.Vt knotes .
+.Sh RETURN VALUES
+The function
+.Fn kqueue_add_filteropts
+will return zero on success,
+.Er EINVAL
+in the case of an invalid
+.Fa filt ,
+or
+.Er EEXIST
+if the filter has already been installed.
+.Pp
+The function
+.Fn kqueue_del_filteropts
+will return zero on success,
+.Er EINVAL
+in the case of an invalid
+.Fa filt ,
+or
+.Er EBUSY
+if the filter is still in use.
+.Pp
+The function
+.Fn kqfd_register
+will return zero on success,
+.Er EBADF
+if the file descriptor is not a kqueue, or any of the possible values returned
+by
+.Xr kevent 2 .
+.Sh SEE ALSO
+.Xr kevent 2 ,
+.Xr kqueue 2
+.Sh AUTHORS
+This
+manual page was written by
+.An John-Mark Gurney Aq jmg@FreeBSD.org .
diff --git a/share/man/man9/kthread.9 b/share/man/man9/kthread.9
new file mode 100644
index 0000000..148a34e
--- /dev/null
+++ b/share/man/man9/kthread.9
@@ -0,0 +1,339 @@
+.\" Copyright (c) 2000-2001
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd October 26, 2007
+.Dt KTHREAD 9
+.Os
+.Sh NAME
+.Nm kthread_start ,
+.Nm kthread_shutdown ,
+.Nm kthread_add ,
+.Nm kthread_exit ,
+.Nm kthread_resume ,
+.Nm kthread_suspend ,
+.Nm kthread_suspend_check
+.Nd "kernel threads"
+.Sh SYNOPSIS
+.In sys/kthread.h
+.Ft void
+.Fn kthread_start "const void *udata"
+.Ft void
+.Fn kthread_shutdown "void *arg" "int howto"
+.Ft int
+.Fo kthread_add
+.Fa "void (*func)(void *)" "void *arg" "struct proc *procp"
+.Fa "struct thread **newtdpp" "int flags" "int pages"
+.Fa "const char *fmt" ...
+.Fc
+.Ft void
+.Fn kthread_exit "void"
+.Ft int
+.Fn kthread_resume "struct thread *td"
+.Ft int
+.Fn kthread_suspend "struct thread *td" "int timo"
+.Ft void
+.Fn kthread_suspend_check "struct thread *td"
+.Ft int
+.Fo kproc_kthread_add
+.Fa "void (*func)(void *)" "void *arg"
+.Fa "struct proc **procptr" "struct thread **tdptr"
+.Fa "int flags" "int pages" "char * procname" "const char *fmt" "..."
+.Fc
+.Sh DESCRIPTION
+The function
+.Fn kthread_start
+is used to start
+.Dq internal
+daemons such as
+.Nm bufdaemon , pagedaemon , vmdaemon ,
+and the
+.Nm syncer
+and is intended
+to be called from
+.Xr SYSINIT 9 .
+The
+.Fa udata
+argument is actually a pointer to a
+.Vt "struct kthread_desc"
+which describes the kernel thread that should be created:
+.Bd -literal -offset indent
+struct kthread_desc {
+ char *arg0;
+ void (*func)(void);
+ struct thread **global_threadpp;
+};
+.Ed
+.Pp
+The structure members are used by
+.Fn kthread_start
+as follows:
+.Bl -tag -width ".Va global_threadpp" -offset indent
+.It Va arg0
+String to be used for the name of the thread.
+This string will be copied into the
+.Va td_name
+member of the new threads'
+.Vt "struct thread" .
+.It Va func
+The main function for this kernel thread to run.
+.It Va global_threadpp
+A pointer to a
+.Vt "struct thread"
+pointer that should be updated to point to the newly created thread's
+.Vt thread
+structure.
+If this variable is
+.Dv NULL ,
+then it is ignored.
+The thread will be a subthread of
+.Va proc0
+(PID 0).
+.El
+.Pp
+The
+.Fn kthread_add
+function is used to create a kernel thread.
+The new thread runs in kernel mode only.
+It is added to the process specified by the
+.Fa procp
+argument, or if that is
+.Dv NULL ,
+to
+.Va proc0 .
+The
+.Fa func
+argument specifies the function that the thread should execute.
+The
+.Fa arg
+argument is an arbitrary pointer that is passed in as the only argument to
+.Fa func
+when it is called by the new thread.
+The
+.Fa newtdpp
+pointer points to a
+.Vt "struct thread"
+pointer that is to be updated to point to the newly created thread.
+If this argument is
+.Dv NULL ,
+then it is ignored.
+The
+.Fa flags
+argument specifies a set of flags as described in
+.Xr rfork 2 .
+The
+.Fa pages
+argument specifies the size of the new kernel thread's stack in pages.
+If 0 is used, the default kernel stack size is allocated.
+The rest of the arguments form a
+.Xr printf 9
+argument list that is used to build the name of the new thread and is stored
+in the
+.Va td_name
+member of the new thread's
+.Vt "struct thread" .
+.Pp
+The
+.Fn kproc_kthread_add
+function is much like the
+.Fn kthread_add
+function above except that if the kproc does not already
+exist, it is created.
+This function is better documented in the
+.Xr kproc 9
+manual page.
+.Pp
+The
+.Fn kthread_exit
+function is used to terminate kernel threads.
+It should be called by the main function of the kernel thread rather than
+letting the main function return to its caller.
+.\" XXX "int ecode" argument isn't documented.
+.Pp
+The
+.Fn kthread_resume ,
+.Fn kthread_suspend ,
+and
+.Fn kthread_suspend_check
+functions are used to suspend and resume a kernel thread.
+During the main loop of its execution, a kernel thread that wishes to allow
+itself to be suspended should call
+.Fn kthread_suspend_check
+passing in
+.Va curthread
+as the only argument.
+This function checks to see if the kernel thread has been asked to suspend.
+If it has, it will
+.Xr tsleep 9
+until it is told to resume.
+Once it has been told to resume it will return allowing execution of the
+kernel thread to continue.
+The other two functions are used to notify a kernel thread of a suspend or
+resume request.
+The
+.Fa td
+argument points to the
+.Vt "struct thread"
+of the kernel thread to suspend or resume.
+For
+.Fn kthread_suspend ,
+the
+.Fa timo
+argument specifies a timeout to wait for the kernel thread to acknowledge the
+suspend request and suspend itself.
+.Pp
+The
+.Fn kthread_shutdown
+function is meant to be registered as a shutdown event for kernel threads that
+need to be suspended voluntarily during system shutdown so as not to interfere
+with system shutdown activities.
+The actual suspension of the kernel thread is done with
+.Fn kthread_suspend .
+.Sh RETURN VALUES
+The
+.Fn kthread_add ,
+.Fn kthread_resume ,
+and
+.Fn kthread_suspend
+functions return zero on success and non-zero on failure.
+.Sh EXAMPLES
+This example demonstrates the use of a
+.Vt "struct kthread_desc"
+and the functions
+.Fn kthread_start ,
+.Fn kthread_shutdown ,
+and
+.Fn kthread_suspend_check
+to run the
+.Nm bufdaemon
+process.
+.Bd -literal -offset indent
+static struct thread *bufdaemonthread;
+
+static struct kthread_desc buf_kp = {
+ "bufdaemon",
+ buf_daemon,
+ &bufdaemonthread
+};
+SYSINIT(bufdaemon, SI_SUB_KTHREAD_BUF, SI_ORDER_FIRST, kthread_start,
+ &buf_kp)
+
+static void
+buf_daemon()
+{
+ ...
+ /*
+ * This process needs to be suspended prior to shutdown sync.
+ */
+ EVENTHANDLER_REGISTER(shutdown_pre_sync, kthread_shutdown,
+ bufdaemonthread, SHUTDOWN_PRI_LAST);
+ ...
+ for (;;) {
+ kthread_suspend_check(bufdaemonthread);
+ ...
+ }
+}
+.Ed
+.Sh ERRORS
+The
+.Fn kthread_resume
+and
+.Fn kthread_suspend
+functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa td
+argument does not reference a kernel thread.
+.El
+.Pp
+The
+.Fn kthread_add
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system-imposed limit on the total
+number of processes under execution would be exceeded.
+The limit is given by the
+.Xr sysctl 3
+MIB variable
+.Dv KERN_MAXPROC .
+.It Bq Er EINVAL
+The
+.Dv RFCFDG
+flag was specified in the
+.Fa flags
+parameter.
+.El
+.Sh SEE ALSO
+.Xr rfork 2 ,
+.Xr exit1 9 ,
+.Xr kproc 9 ,
+.Xr SYSINIT 9 ,
+.Xr wakeup 9
+.Sh HISTORY
+The
+.Fn kthread_start
+function first appeared in
+.Fx 2.2
+where it created a whole process.
+It was converted to create threads in
+.Fx 8.0 .
+The
+.Fn kthread_shutdown ,
+.Fn kthread_exit ,
+.Fn kthread_resume ,
+.Fn kthread_suspend ,
+and
+.Fn kthread_suspend_check
+functions were introduced in
+.Fx 4.0
+and were converted to threads in
+.Fx 8.0 .
+The
+.Fn kthread_create
+call was renamed to
+.Fn kthread_add
+in
+.Fx 8.0 .
+The old functionality of creating a kernel process was renamed
+to
+.Xr kproc_create 9 .
+Prior to
+.Fx 5.0 ,
+the
+.Fn kthread_shutdown ,
+.Fn kthread_resume ,
+.Fn kthread_suspend ,
+and
+.Fn kthread_suspend_check
+functions were named
+.Fn shutdown_kproc ,
+.Fn resume_kproc ,
+.Fn shutdown_kproc ,
+and
+.Fn kproc_suspend_loop ,
+respectively.
diff --git a/share/man/man9/ktr.9 b/share/man/man9/ktr.9
new file mode 100644
index 0000000..98b601d
--- /dev/null
+++ b/share/man/man9/ktr.9
@@ -0,0 +1,162 @@
+.\" Copyright (c) 2001 John H. Baldwin <jhb@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$
+.\"
+.Dd November 30, 2008
+.Dt KTR 9
+.Os
+.Sh NAME
+.Nm CTR0 , CTR1 , CTR2 , CTR3 , CTR4 , CTR5
+.Nd kernel tracing facility
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/ktr.h
+.Vt "extern int ktr_cpumask" ;
+.Vt "extern int ktr_entries" ;
+.Vt "extern int ktr_extend" ;
+.Vt "extern int ktr_mask" ;
+.Vt "extern int ktr_verbose" ;
+.Vt "extern struct ktr_entry ktr_buf[]" ;
+.Ft void
+.Fn CTR0 "u_int mask" "char *format"
+.Ft void
+.Fn CTR1 "u_int mask" "char *format" "arg1"
+.Ft void
+.Fn CTR2 "u_int mask" "char *format" "arg1" "arg2"
+.Ft void
+.Fn CTR3 "u_int mask" "char *format" "arg1" "arg2" "arg3"
+.Ft void
+.Fn CTR4 "u_int mask" "char *format" "arg1" "arg2" "arg3" "arg4"
+.Ft void
+.Fn CTR5 "u_int mask" "char *format" "arg1" "arg2" "arg3" "arg4" "arg5"
+.Ft void
+.Fn CTR6 "u_int mask" "char *format" "arg1" "arg2" "arg3" "arg4" "arg5" "arg6"
+.Sh DESCRIPTION
+KTR provides a circular buffer of events that can be logged in a
+.Xr printf 9
+style
+fashion.
+These events can then be dumped with
+.Xr ddb 4 ,
+.Xr gdb 1
+or
+.Xr ktrdump 8 .
+.Pp
+Events are created and logged in the kernel via the
+.Dv CTR Ns Ar x
+macros.
+The first parameter is a mask of event types
+.Pq Dv KTR_*
+defined in
+.In sys/ktr.h .
+The event will be logged only if any of the event types specified in
+.Fa mask
+are enabled in the global event mask stored in
+.Va ktr_mask .
+The
+.Fa format
+argument is a
+.Xr printf 9
+style format string used to build the text of the event log message.
+Following the
+.Fa format
+string are zero to five arguments referenced by
+.Fa format .
+Each event is logged with a file name and source line number of the
+originating CTR call, and a timestamp in addition to the log message.
+.Pp
+The event is stored in the circular buffer with supplied arguments as is,
+and formatting is done at the dump time.
+Do not use pointers to the objects with limited lifetime, for instance,
+strings, because the pointer may become invalid when buffer is printed.
+.Pp
+Note that the different macros differ only in the number of arguments each
+one takes, as indicated by its name.
+.Pp
+The
+.Va ktr_entries
+variable contains the number of entries in the
+.Va ktr_buf
+array.
+These variables are mostly useful for post-mortem crash dump tools to locate
+the base of the circular trace buffer and its length.
+.Pp
+The
+.Va ktr_mask
+variable contains the run time mask of events to log.
+.Pp
+The CPU event mask is stored in the
+.Va ktr_cpumask
+variable.
+.Pp
+The
+.Va ktr_verbose
+variable stores the verbose flag that controls whether events are logged to
+the console in addition to the event buffer.
+.Sh EXAMPLES
+This example demonstrates the use of tracepoints at the
+.Dv KTR_PROC
+logging level.
+.Bd -literal
+void
+mi_switch()
+{
+ ...
+ /*
+ * Pick a new current process and record its start time.
+ */
+ ...
+ CTR3(KTR_PROC, "mi_switch: old proc %p (pid %d)", p, p->p_pid);
+ ...
+ cpu_switch();
+ ...
+ CTR3(KTR_PROC, "mi_switch: new proc %p (pid %d)", p, p->p_pid);
+ ...
+}
+.Ed
+.Sh SEE ALSO
+.Xr ktr 4 ,
+.Xr ktrdump 8
+.Sh HISTORY
+The KTR kernel tracing facility first appeared in
+.Bsx 3.0
+and was imported into
+.Fx 5.0 .
+.Sh BUGS
+Currently there is one global buffer shared among all CPUs.
+It might be profitable at some point in time to use per-CPU buffers instead
+so that if one CPU halts or starts spinning, then the log messages it
+emitted just prior to halting or spinning will not be drowned out by events
+from the other CPUs.
+.Pp
+The arguments given in
+.Fn CTRx
+macros are stored as
+.Vt u_long ,
+so do not pass arguments larger than size of an
+.Vt u_long
+type.
+For example passing 64bit arguments on 32bit architectures will give incorrect
+results.
diff --git a/share/man/man9/lock.9 b/share/man/man9/lock.9
new file mode 100644
index 0000000..99af66f
--- /dev/null
+++ b/share/man/man9/lock.9
@@ -0,0 +1,404 @@
+.\"
+.\" Copyright (C) 2002 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 12, 2008
+.Dt LOCK 9
+.Os
+.Sh NAME
+.Nm lockinit ,
+.Nm lockdestroy ,
+.Nm lockmgr ,
+.Nm lockmgr_args ,
+.Nm lockmgr_args_rw ,
+.Nm lockmgr_disown ,
+.Nm lockmgr_printinfo ,
+.Nm lockmgr_recursed ,
+.Nm lockmgr_rw ,
+.Nm lockmgr_waiters ,
+.Nm lockstatus ,
+.Nm lockmgr_assert
+.Nd "lockmgr family of functions"
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/lock.h
+.In sys/lockmgr.h
+.Ft void
+.Fn lockinit "struct lock *lkp" "int prio" "const char *wmesg" "int timo" "int flags"
+.Ft void
+.Fn lockdestroy "struct lock *lkp"
+.Ft int
+.Fn lockmgr "struct lock *lkp" "u_int flags" "struct mtx *ilk"
+.Ft int
+.Fn lockmgr_args "struct lock *lkp" "u_int flags" "struct mtx *ilk" "const char *wmesg" "int prio" "int timo"
+.Ft int
+.Fn lockmgr_args_rw "struct lock *lkp" "u_int flags" "struct rwlock *ilk" "const char *wmesg" "int prio" "int timo"
+.Ft void
+.Fn lockmgr_disown "struct lock *lkp"
+.Ft void
+.Fn lockmgr_printinfo "struct lock *lkp"
+.Ft int
+.Fn lockmgr_recursed "struct lock *lkp"
+.Ft int
+.Fn lockmgr_rw "struct lock *lkp" "u_int flags" "struct rwlock *ilk"
+.Ft int
+.Fn lockmgr_waiters "struct lock *lkp"
+.Ft int
+.Fn lockstatus "struct lock *lkp"
+.Pp
+.Cd "options INVARIANTS"
+.Cd "options INVARIANT_SUPPORT"
+.Ft void
+.Fn lockmgr_assert "struct lock *lkp" "int what"
+.Sh DESCRIPTION
+The
+.Fn lockinit
+function is used to initialize a lock.
+It must be called before any operation can be performed on a lock.
+Its arguments are:
+.Bl -tag -width ".Fa wmesg"
+.It Fa lkp
+A pointer to the lock to initialize.
+.It Fa prio
+The priority passed to
+.Xr sleep 9 .
+.It Fa wmesg
+The lock message.
+This is used for both debugging output and
+.Xr sleep 9 .
+.It Fa timo
+The timeout value passed to
+.Xr sleep 9 .
+.It Fa flags
+The flags the lock is to be initialized with:
+.Bl -tag -width ".Dv LK_CANRECURSE"
+.It Dv LK_CANRECURSE
+Allow recursive exclusive locks.
+.It Dv LK_NOPROFILE
+Disable lock profiling for this lock.
+.It Dv LK_NOSHARE
+Allow exclusive locks only.
+.It Dv LK_NOWITNESS
+Instruct
+.Xr witness 4
+to ignore this lock.
+.It Dv LK_NODUP
+.Xr witness 4
+should log messages about duplicate locks being acquired.
+.It Dv LK_QUIET
+Disable
+.Xr ktr 4
+logging for this lock.
+.It Dv LK_TIMELOCK
+Use
+.Fa timo
+during a sleep; otherwise, 0 is used.
+.El
+.El
+.Pp
+The
+.Fn lockdestroy
+function is used to destroy a lock, and while it is called in a number of
+places in the kernel, it currently does nothing.
+.Pp
+The
+.Fn lockmgr
+and
+.Fn lockmgr_rw
+functions handle general locking functionality within the kernel, including
+support for shared and exclusive locks, and recursion.
+.Fn lockmgr
+and
+.Fn lockmgr_rw
+are also able to upgrade and downgrade locks.
+.Pp
+Their arguments are:
+.Bl -tag -width ".Fa flags"
+.It Fa lkp
+A pointer to the lock to manipulate.
+.It Fa flags
+Flags indicating what action is to be taken.
+.Bl -tag -width ".Dv LK_CANRECURSE"
+.It Dv LK_SHARED
+Acquire a shared lock.
+If an exclusive lock is currently held, it will be downgraded.
+.It Dv LK_EXCLUSIVE
+Acquire an exclusive lock.
+If an exclusive lock is already held, and
+.Dv LK_CANRECURSE
+is not set, the system will
+.Xr panic 9 .
+.It Dv LK_DOWNGRADE
+Downgrade exclusive lock to a shared lock.
+Downgrading a shared lock is not permitted.
+If an exclusive lock has been recursed, all references will be downgraded.
+.It Dv LK_UPGRADE
+Upgrade a shared lock to an exclusive lock.
+If this call fails, the shared lock is lost.
+During the upgrade, the shared lock could
+be temporarily dropped.
+Attempts to upgrade an exclusive lock will cause a
+.Xr panic 9 .
+.It Dv LK_RELEASE
+Release the lock.
+Releasing a lock that is not held can cause a
+.Xr panic 9 .
+.It Dv LK_DRAIN
+Wait for all activity on the lock to end, then mark it decommissioned.
+This is used before freeing a lock that is part of a piece of memory that is
+about to be freed.
+(As documented in
+.In sys/lockmgr.h . )
+.It Dv LK_SLEEPFAIL
+Fail if operation has slept.
+.It Dv LK_NOWAIT
+Do not allow the call to sleep.
+This can be used to test the lock.
+.It Dv LK_NOWITNESS
+Skip the
+.Xr witness 4
+checks for this instance.
+.It Dv LK_CANRECURSE
+Allow recursion on an exclusive lock.
+For every lock there must be a release.
+.It Dv LK_INTERLOCK
+Unlock the interlock (which should be locked already).
+.El
+.It Fa ilk
+An interlock mutex for controlling group access to the lock.
+If
+.Dv LK_INTERLOCK
+is specified,
+.Fn lockmgr
+and
+.Fn lockmgr_rw
+assume
+.Fa ilk
+is currently owned and not recursed, and will return it unlocked.
+See
+.Xr mtx_assert 9 .
+.El
+.Pp
+The
+.Fn lockmgr_args
+and
+.Fn lockmgr_args_rw
+function work like
+.Fn lockmgr
+and
+.Fn lockmgr_rw
+but accepting a
+.Fa wmesg ,
+.Fa timo
+and
+.Fa prio
+on a per-instance basis.
+The specified values will override the default
+ones, but this can still be used passing, respectively,
+.Dv LK_WMESG_DEFAULT ,
+.Dv LK_PRIO_DEFAULT
+and
+.Dv LK_TIMO_DEFAULT .
+.Pp
+The
+.Fn lockmgr_disown
+function switches the owner from the current thread to be
+.Dv LK_KERNPROC,
+if the lock is already held.
+.Pp
+The
+.Fn lockmgr_printinfo
+function prints debugging information about the lock.
+It is used primarily by
+.Xr VOP_PRINT 9
+functions.
+.Pp
+The
+.Fn lockmgr_recursed
+function returns true if the lock is recursed, 0
+otherwise.
+.Pp
+The
+.Fn lockmgr_waiters
+function returns true if the lock has waiters, 0 otherwise.
+.Pp
+The
+.Fn lockstatus
+function returns the status of the lock in relation to the current thread.
+.Pp
+When compiled with
+.Cd "options INVARIANTS"
+and
+.Cd "options INVARIANT_SUPPORT" ,
+the
+.Fn lockmgr_assert
+function tests
+.Fa lkp
+for the assertions specified in
+.Fa what ,
+and panics if they are not met.
+One of the following assertions must be specified:
+.Bl -tag -width ".Dv KA_UNLOCKED"
+.It Dv KA_LOCKED
+Assert that the current thread has either a shared or an exclusive lock on the
+.Vt lkp
+lock pointed to by the first argument.
+.It Dv KA_SLOCKED
+Assert that the current thread has a shared lock on the
+.Vt lkp
+lock pointed to by the first argument.
+.It Dv KA_XLOCKED
+Assert that the current thread has an exclusive lock on the
+.Vt lkp
+lock pointed to by the first argument.
+.It Dv KA_UNLOCKED
+Assert that the current thread has no lock on the
+.Vt lkp
+lock pointed to by the first argument.
+.It Dv KA_HELD
+Assert that an unspecified thread has a lock on the
+.Vt lkp
+lock pointed to by the first argument.
+.It Dv KA_UNHELD
+Assert that no thread has a lock on the
+.Vt lkp
+lock pointed to by the first argument.
+.El
+.Pp
+In addition, one of the following optional assertions can be used with
+either an
+.Dv KA_LOCKED ,
+.Dv KA_SLOCKED ,
+or
+.Dv KA_XLOCKED
+assertion:
+.Bl -tag -width ".Dv KA_NOTRECURSED"
+.It Dv KA_RECURSED
+Assert that the current thread has a recursed lock on
+.Fa lkp .
+.It Dv KA_NOTRECURSED
+Assert that the current thread does not have a recursed lock on
+.Fa lkp .
+.El
+.Pp
+Note that
+.Dv KA_HELD
+and
+.Dv KA_UNHELD
+usage is highly discouraged.
+They are intended to cater a bad behaviour
+introduced by buffer cache lock handling.
+They will hopefully be
+made useless by revisiting such locks.
+.Sh RETURN VALUES
+The
+.Fn lockmgr
+and
+.Fn lockmgr_rw
+functions return 0 on success and non-zero on failure.
+.Pp
+The
+.Fn lockstatus
+function returns:
+.Bl -tag -width ".Dv LK_EXCLUSIVE"
+.It Dv LK_EXCLUSIVE
+An exclusive lock is held by the current thread.
+.It Dv LK_EXCLOTHER
+An exclusive lock is held by someone other than the current thread.
+.It Dv LK_SHARED
+A shared lock is held.
+.It Li 0
+The lock is not held by anyone.
+.El
+.Sh ERRORS
+.Fn lockmgr
+and
+.Fn lockmgr_rw
+fail if:
+.Bl -tag -width Er
+.It Bq Er EBUSY
+.Dv LK_FORCEUPGRADE
+was requested and another thread had already requested a lock upgrade.
+.It Bq Er EBUSY
+.Dv LK_NOWAIT
+was set, and a sleep would have been required.
+.It Bq Er ENOLCK
+.Dv LK_SLEEPFAIL
+was set and
+.Fn lockmgr
+or
+.Fn lockmgr_rw
+did sleep.
+.It Bq Er EINTR
+.Dv PCATCH
+was set in the lock priority, and a signal was delivered during a sleep.
+Note the
+.Er ERESTART
+error below.
+.It Bq Er ERESTART
+.Dv PCATCH
+was set in the lock priority, a signal was delivered during a sleep,
+and the system call is to be restarted.
+.It Bq Er EWOULDBLOCK
+a non-zero timeout was given, and the timeout expired.
+.El
+.Sh LOCKS
+If
+.Dv LK_INTERLOCK
+is passed in the
+.Fa flags
+argument to
+.Fn lockmgr
+or
+.Fn lockmgr_rw ,
+the
+.Fa ilk
+must be held prior to calling
+.Fn lockmgr
+or
+.Fn lockmgr_rw ,
+and will be returned unlocked.
+.Pp
+Upgrade attempts that fail result in the loss of the lock that
+is currently held.
+Also, it is invalid to upgrade an
+exclusive lock, and a
+.Xr panic 9
+will be the result of trying.
+.Sh SEE ALSO
+.Xr condvar 9 ,
+.Xr locking 9 ,
+.Xr mutex 9 ,
+.Xr rwlock 9 ,
+.Xr sleep 9 ,
+.Xr sx 9 ,
+.Xr mtx_assert 9 ,
+.Xr panic 9 ,
+.Xr VOP_PRINT 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/locking.9 b/share/man/man9/locking.9
new file mode 100644
index 0000000..825eb7f
--- /dev/null
+++ b/share/man/man9/locking.9
@@ -0,0 +1,372 @@
+.\" Copyright (c) 2007 Julian Elischer (julian - 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$
+.\"
+.Dd March 14, 2007
+.Dt LOCKING 9
+.Os
+.Sh NAME
+.Nm locking
+.Nd kernel synchronization primitives
+.Sh SYNOPSIS
+All sorts of stuff to go here.
+.Pp
+.Sh DESCRIPTION
+The
+.Em FreeBSD
+kernel is written to run across multiple CPUs and as such requires
+several different synchronization primitives to allow the developers
+to safely access and manipulate the many data types required.
+.Pp
+These include:
+.Bl -enum
+.It
+Spin Mutexes
+.It
+Sleep Mutexes
+.It
+pool Mutexes
+.It
+Shared-Exclusive locks
+.It
+Reader-Writer locks
+.It
+Read-Mostly locks
+.It
+Turnstiles
+.It
+Semaphores
+.It
+Condition variables
+.It
+Sleep/wakeup
+.It
+Giant
+.It
+Lockmanager locks
+.El
+.Pp
+The primitives interact and have a number of rules regarding how
+they can and can not be combined.
+There are too many for the average
+human mind and they keep changing.
+(if you disagree, please write replacement text) :-)
+.Pp
+Some of these primitives may be used at the low (interrupt) level and
+some may not.
+.Pp
+There are strict ordering requirements and for some of the types this
+is checked using the
+.Xr witness 4
+code.
+.Pp
+.Ss SPIN Mutexes
+Mutexes are the basic primitive.
+You either hold it or you don't.
+If you don't own it then you just spin, waiting for the holder (on
+another CPU) to release it.
+Hopefully they are doing something fast.
+You
+.Em must not
+do anything that deschedules the thread while you
+are holding a SPIN mutex.
+.Ss Mutexes
+Basically (regular) mutexes will deschedule the thread if the
+mutex can not be acquired.
+A non-spin mutex can be considered to be equivalent
+to getting a write lock on an
+.Em rw_lock
+(see below), and in fact non-spin mutexes and rw_locks may soon become the same thing.
+As in spin mutexes, you either get it or you don't.
+You may only call the
+.Xr sleep 9
+call via
+.Fn msleep
+or the new
+.Fn mtx_sleep
+variant.
+These will atomically drop the mutex and reacquire it
+as part of waking up.
+This is often however a
+.Em BAD
+idea because it generally relies on you having
+such a good knowledge of all the call graph above you
+and what assumptions it is making that there are a lot
+of ways to make hard-to-find mistakes.
+For example you MUST re-test all the assumptions you made before,
+all the way up the call graph to where you got the lock.
+You can not just assume that mtx_sleep can be inserted anywhere.
+If any caller above you has any mutex or
+rwlock, your sleep, will cause a panic.
+If the sleep only happens rarely it may be years before the
+bad code path is found.
+.Ss Pool Mutexes
+A variant of regular mutexes where the allocation of the mutex is handled
+more by the system.
+.Ss Rw_locks
+Reader/writer locks allow shared access to protected data by multiple threads,
+or exclusive access by a single thread.
+The threads with shared access are known as
+.Em readers
+since they should only read the protected data.
+A thread with exclusive access is known as a
+.Em writer
+since it may modify protected data.
+.Pp
+Although reader/writer locks look very similar to
+.Xr sx 9
+(see below) locks, their usage pattern is different.
+Reader/writer locks can be treated as mutexes (see above and
+.Xr mutex 9 )
+with shared/exclusive semantics.
+More specifically, regular mutexes can be
+considered to be equivalent to a write-lock on an
+.Em rw_lock.
+In the future this may in fact
+become literally the fact.
+An
+.Em rw_lock
+can be locked while holding a regular mutex, but
+can
+.Em not
+be held while sleeping.
+The
+.Em rw_lock
+locks have priority propagation like mutexes, but priority
+can be propagated only to an exclusive holder.
+This limitation comes from the fact that shared owners
+are anonymous.
+Another important property is that shared holders of
+.Em rw_lock
+can recurse, but exclusive locks are not allowed to recurse.
+This ability should not be used lightly and
+.Em may go away.
+Users of recursion in any locks should be prepared to
+defend their decision against vigorous criticism.
+.Ss Rm_locks
+Mostly reader locks are similar to
+.Em Reader/write
+locks but optimized for very infrequent
+.Em writer
+locking.
+.Em rm_lock
+locks implement full priority propagation by tracking shared owners
+using a lock user supplied
+.Em tracker
+data structure.
+.Ss Sx_locks
+Shared/exclusive locks are used to protect data that are read far more often
+than they are written.
+Mutexes are inherently more efficient than shared/exclusive locks, so
+shared/exclusive locks should be used prudently.
+The main reason for using an
+.Em sx_lock
+is that a thread may hold a shared or exclusive lock on an
+.Em sx_lock
+lock while sleeping.
+As a consequence of this however, an
+.Em sx_lock
+lock may not be acquired while holding a mutex.
+The reason for this is that, if one thread slept while holding an
+.Em sx_lock
+lock while another thread blocked on the same
+.Em sx_lock
+lock after acquiring a mutex, then the second thread would effectively
+end up sleeping while holding a mutex, which is not allowed.
+The
+.Em sx_lock
+should be considered to be closely related to
+.Xr sleep 9 .
+In fact it could in some cases be
+considered a conditional sleep.
+.Ss Turnstiles
+Turnstiles are used to hold a queue of threads blocked on
+non-sleepable locks.
+Sleepable locks use condition variables to implement their queues.
+Turnstiles differ from a sleep queue in that turnstile queue's
+are assigned to a lock held by an owning thread.
+Thus, when one thread is enqueued onto a turnstile, it can lend its
+priority to the owning thread.
+If this sounds confusing, we need to describe it better.
+.Ss Semaphores
+.Ss Condition variables
+Condition variables are used in conjunction with mutexes to wait for
+conditions to occur.
+A thread must hold the mutex before calling the
+.Fn cv_wait* ,
+functions.
+When a thread waits on a condition, the mutex
+is atomically released before the thread is blocked, then reacquired
+before the function call returns.
+.Ss Giant
+Giant is a special instance of a sleep lock.
+It has several special characteristics.
+.Bl -enum
+.It
+It is recursive.
+.It
+Drivers can request that Giant be locked around them, but this is
+going away.
+.It
+You can sleep while it has recursed, but other recursive locks cannot.
+.It
+Giant must be locked first before other locks.
+.It
+There are places in the kernel that drop Giant and pick it back up
+again.
+Sleep locks will do this before sleeping.
+Parts of the Network or VM code may do this as well, depending on the
+setting of a sysctl.
+This means that you cannot count on Giant keeping other code from
+running if your code sleeps, even if you want it to.
+.El
+.Ss Sleep/wakeup
+The functions
+.Fn tsleep ,
+.Fn msleep ,
+.Fn msleep_spin ,
+.Fn pause ,
+.Fn wakeup ,
+and
+.Fn wakeup_one
+handle event-based thread blocking.
+If a thread must wait for an external event, it is put to sleep by
+.Fn tsleep ,
+.Fn msleep ,
+.Fn msleep_spin ,
+or
+.Fn pause .
+Threads may also wait using one of the locking primitive sleep routines
+.Xr mtx_sleep 9 ,
+.Xr rw_sleep 9 ,
+or
+.Xr sx_sleep 9 .
+.Pp
+The parameter
+.Fa chan
+is an arbitrary address that uniquely identifies the event on which
+the thread is being put to sleep.
+All threads sleeping on a single
+.Fa chan
+are woken up later by
+.Fn wakeup ,
+often called from inside an interrupt routine, to indicate that the
+resource the thread was blocking on is available now.
+.Pp
+Several of the sleep functions including
+.Fn msleep ,
+.Fn msleep_spin ,
+and the locking primitive sleep routines specify an additional lock
+parameter.
+The lock will be released before sleeping and reacquired
+before the sleep routine returns.
+If
+.Fa priority
+includes the
+.Dv PDROP
+flag, then the lock will not be reacquired before returning.
+The lock is used to ensure that a condition can be checked atomically,
+and that the current thread can be suspended without missing a
+change to the condition, or an associated wakeup.
+In addition, all of the sleep routines will fully drop the
+.Va Giant
+mutex
+(even if recursed)
+while the thread is suspended and will reacquire the
+.Va Giant
+mutex before the function returns.
+.Pp
+.Ss lockmanager locks
+Largely deprecated.
+See the
+.Xr lock 9
+page for more information.
+I don't know what the downsides are but I'm sure someone will fill in this part.
+.Sh Usage tables.
+.Ss Interaction table.
+The following table shows what you can and can not do if you hold
+one of the synchronization primitives discussed here:
+(someone who knows what they are talking about should write this table)
+.Bl -column ".Ic xxxxxxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXX" -offset indent
+.It Xo
+.Em "You have: You want:" Ta Spin_mtx Ta Slp_mtx Ta sx_lock Ta rw_lock Ta rm_lock Ta sleep
+.Xc
+.It Ic SPIN mutex Ta \&ok-1 Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no-3
+.It Ic Sleep mutex Ta \&ok Ta \&ok-1 Ta \&no Ta \&ok Ta \&ok Ta \&no-3
+.It Ic sx_lock Ta \&ok Ta \&ok Ta \&ok-2 Ta \&ok Ta \&ok Ta \&ok-4
+.It Ic rw_lock Ta \&ok Ta \&ok Ta \&no Ta \&ok-2 Ta \&ok Ta \&no-3
+.It Ic rm_lock Ta \&ok Ta \&ok Ta \&no Ta \&ok Ta \&ok-2 Ta \&no
+.El
+.Pp
+.Em *1
+Recursion is defined per lock.
+Lock order is important.
+.Pp
+.Em *2
+readers can recurse though writers can not.
+Lock order is important.
+.Pp
+.Em *3
+There are calls atomically release this primitive when going to sleep
+and reacquire it on wakeup (e.g.
+.Fn mtx_sleep ,
+.Fn rw_sleep
+and
+.Fn msleep_spin
+).
+.Pp
+.Em *4
+Though one can sleep holding an sx lock, one can also use
+.Fn sx_sleep
+which atomically release this primitive when going to sleep and
+reacquire it on wakeup.
+.Ss Context mode table.
+The next table shows what can be used in different contexts.
+At this time this is a rather easy to remember table.
+.Bl -column ".Ic Xxxxxxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXX" -offset indent
+.It Xo
+.Em "Context:" Ta Spin_mtx Ta Slp_mtx Ta sx_lock Ta rw_lock Ta rm_lock Ta sleep
+.Xc
+.It interrupt: Ta \&ok Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no
+.It idle: Ta \&ok Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no
+.El
+.Sh SEE ALSO
+.Xr condvar 9 ,
+.Xr lock 9 ,
+.Xr mtx_pool 9 ,
+.Xr mutex 9 ,
+.Xr rmlock 9 ,
+.Xr rwlock 9 ,
+.Xr sema 9 ,
+.Xr sleep 9 ,
+.Xr sx 9 ,
+.Xr LOCK_PROFILING 9 ,
+.Xr WITNESS 9
+.Sh HISTORY
+These
+functions appeared in
+.Bsx 4.1
+through
+.Fx 7.0
diff --git a/share/man/man9/mac.9 b/share/man/man9/mac.9
new file mode 100644
index 0000000..395f7a0
--- /dev/null
+++ b/share/man/man9/mac.9
@@ -0,0 +1,246 @@
+.\"-
+.\" Copyright (c) 1999-2002 Robert N. M. Watson
+.\" Copyright (c) 2002-2004 Networks Associates Technology, Inc.
+.\" All rights reserved.
+.\"
+.\" This software was developed by Robert Watson for the TrustedBSD Project.
+.\"
+.\" This software was developed for the FreeBSD Project in part by Network
+.\" Associates Laboratories, 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.
+.\"
+.\" 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$
+.\"
+.Dd July 10, 2006
+.Dt MAC 9
+.Os
+.Sh NAME
+.Nm mac
+.Nd TrustedBSD Mandatory Access Control framework
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/mac.h
+.Pp
+In the kernel configuration file:
+.Cd "options MAC"
+.Cd "options MAC_DEBUG"
+.Sh DESCRIPTION
+.Ss Introduction
+The
+.Tn TrustedBSD
+mandatory access control framework permits dynamically
+introduced system security modules to modify system security functionality.
+This can be used to support a variety of new security services, including
+traditional labeled mandatory access control models.
+The framework provides a series of entry points which must be called by
+code supporting various kernel services, especially with respects to access
+control points and object creation.
+The framework then calls out to security modules to offer them the
+opportunity to modify security behavior at those MAC API entry points.
+Both consumers of the API (normal kernel services) and security modules
+must be aware of the semantics of the API calls, particularly with respect
+to synchronization primitives (such as locking).
+.Ss Note on Appropriateness for Production Use
+The
+.Tn TrustedBSD
+MAC Framework included in
+.Fx 5.0
+is considered experimental, and should not be deployed in production
+environments without careful consideration of the risks associated with
+the use of experimental operating system features.
+.Ss Kernel Objects Supported by the Framework
+The MAC framework manages labels on a variety of types of in-kernel
+objects, including process credentials, vnodes, devfs_dirents, mount
+points, sockets, mbufs, bpf descriptors, network interfaces, IP fragment
+queues, and pipes.
+Label data on kernel objects, represented by
+.Vt "struct label" ,
+is policy-unaware, and may be used in the manner seen fit by policy modules.
+.Ss API for Consumers
+The MAC API provides a large set of entry points, too broad to specifically
+document here.
+In general, these entry points represent an access control check or other
+MAC-relevant operations, accept one or more subjects (credentials)
+authorizing the activity, a set of objects on which the operation
+is to be performed, and a set of operation arguments providing information
+about the type of operation being requested.
+.Ss Locking for Consumers
+Consumers of the MAC API must be aware of the locking requirements for
+each API entry point: generally, appropriate locks must be held over each
+subject or object being passed into the call, so that MAC modules may
+make use of various aspects of the object for access control purposes.
+For example, vnode locks are frequently required in order that the MAC
+framework and modules may retrieve security labels and attributes from the
+vnodes for the purposes of access control.
+Similarly, the caller must be aware of the reference counting semantics
+of any subject or object passed into the MAC API: all calls require that
+a valid reference to the object be held for the duration of the
+(potentially lengthy) MAC API call.
+Under some circumstances, objects must be held in either a shared or
+exclusive manner.
+.Ss API for Module Writers
+Each module exports a structure describing the MAC API operations that
+the module chooses to implement, including initialization and destruction
+API entry points, a variety of object creation and destruction calls,
+and a large set of access control check points.
+In the future, additional audit entry points will also be present.
+Module authors may choose to only implement a subset of the entry points,
+setting API function pointers in the description structure to
+.Dv NULL ,
+permitting the framework to avoid calling into the module.
+.Ss Locking for Module Writers
+Module writers must be aware of the locking semantics of entry points
+that they implement: MAC API entry points will have specific locking
+or reference counting semantics for each argument, and modules must follow
+the locking and reference counting protocol or risk a variety of failure
+modes (including race conditions, inappropriate pointer dereferences,
+etc).
+.Pp
+MAC module writers must also be aware that MAC API entry points will
+frequently be invoked from deep in a kernel stack, and as such must be
+careful to avoid violating more global locking requirements, such as
+global lock order requirements.
+For example, it may be inappropriate to lock additional objects not
+specifically maintained and ordered by the policy module, or the
+policy module might violate a global ordering requirement relating
+to those additional objects.
+.Pp
+Finally, MAC API module implementors must be careful to avoid
+inappropriately calling back into the MAC framework: the framework
+makes use of locking to prevent inconsistencies during policy module
+attachment and detachment.
+MAC API modules should avoid producing scenarios in which deadlocks
+or inconsistencies might occur.
+.Ss Adding New MAC Entry Points
+The MAC API is intended to be easily expandable as new services are
+added to the kernel.
+In order that policies may be guaranteed the opportunity to ubiquitously
+protect system subjects and objects, it is important that kernel
+developers maintain awareness of when security checks or relevant
+subject or object operations occur in newly written or modified kernel
+code.
+New entry points must be carefully documented so as to prevent any
+confusion regarding lock orders and semantics.
+Introducing new entry points requires four distinct pieces of work:
+introducing new MAC API entries reflecting the operation arguments,
+scattering these MAC API entry points throughout the new or modified
+kernel service, extending the front-end implementation of the MAC API
+framework, and modifying appropriate modules to take advantage of
+the new entry points so that they may consistently enforce their
+policies.
+.Sh ENTRY POINTS
+System service and module authors should reference the
+.%T "FreeBSD Architecture Handbook"
+for information on the MAC Framework APIs.
+.Sh SEE ALSO
+.Xr acl 3 ,
+.Xr mac 3 ,
+.Xr posix1e 3 ,
+.Xr mac_biba 4 ,
+.Xr mac_bsdextended 4 ,
+.Xr mac_ifoff 4 ,
+.Xr mac_lomac 4 ,
+.Xr mac_mls 4 ,
+.Xr mac_none 4 ,
+.Xr mac_partition 4 ,
+.Xr mac_seeotheruids 4 ,
+.Xr mac_test 4 ,
+.Xr ucred 9 ,
+.Xr vaccess 9 ,
+.Xr vaccess_acl_posix1e 9 ,
+.Xr VFS 9
+.Rs
+.%T "The FreeBSD Architecture Handbook"
+.%O "http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/arch-handbook/"
+.Re
+.Sh HISTORY
+The
+.Tn TrustedBSD
+MAC Framework first appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
+This software was contributed to the
+.Fx
+Project by Network Associates Laboratories, the Security Research
+Division of Network Associates Inc.\& under DARPA/SPAWAR contract
+N66001-01-C-8035
+.Pq Dq CBOSS ,
+as part of the DARPA CHATS research program.
+.Pp
+.An -nosplit
+The
+.Tn TrustedBSD
+MAC Framework was designed by
+.An Robert Watson ,
+and implemented by the Network Associates Laboratories Network Security
+(NETSEC), Secure Execution Environment (SEE), and Adaptive
+Network Defense research groups.
+Network Associates Laboratory staff contributing to the CBOSS Project
+include (in alphabetical order):
+.An Lee Badger ,
+.An Brian Feldman ,
+.An Hrishikesh Dandekar ,
+.An Tim Fraser ,
+.An Doug Kilpatrick ,
+.An Suresh Krishnaswamy ,
+.An Adam Migus ,
+.An Wayne Morrison ,
+.An Andrew Reisse ,
+.An Chris Vance ,
+and
+.An Robert Watson .
+.Pp
+Sub-contracted staff include:
+.An Chris Costello ,
+.An Poul-Henning Kamp ,
+.An Jonathan Lemon ,
+.An Kirk McKusick ,
+.An Dag-Erling Sm\(/orgrav .
+.Pp
+Additional contributors include:
+.An Pawel Dawidek ,
+.An Chris Faulhaber ,
+.An Ilmar Habibulin ,
+.An Mike Halderman ,
+.An Bosko Milekic ,
+.An Thomas Moestl ,
+.An Andrew Reiter ,
+and
+.An Tim Robbins .
+.Sh BUGS
+See the earlier section in this document concerning appropriateness
+for production use.
+The
+.Tn TrustedBSD
+MAC Framework is considered experimental in
+.Fx .
+.Pp
+While the MAC Framework design is intended to support the containment of
+the root user, not all attack channels are currently protected by entry
+point checks.
+As such, MAC Framework policies should not be relied on, in isolation,
+to protect against a malicious privileged user.
diff --git a/share/man/man9/make_dev.9 b/share/man/man9/make_dev.9
new file mode 100644
index 0000000..b39ca8b
--- /dev/null
+++ b/share/man/man9/make_dev.9
@@ -0,0 +1,291 @@
+.\" Copyright (c) 1999 Chris Costello
+.\" 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$
+.\"
+.Dd September 28, 2008
+.Os
+.Dt MAKE_DEV 9
+.Sh NAME
+.Nm make_dev ,
+.Nm make_dev_cred ,
+.Nm make_dev_credf ,
+.Nm make_dev_alias ,
+.Nm destroy_dev ,
+.Nm destroy_dev_sched ,
+.Nm destroy_dev_sched_cb ,
+.Nm destroy_dev_drain ,
+.Nm dev_depends
+.Nd manage
+.Vt cdev Ns 's
+and DEVFS registration for devices
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/conf.h
+.Ft struct cdev *
+.Fn make_dev "struct cdevsw *cdevsw" "int unit" "uid_t uid" "gid_t gid" "int perms" "const char *fmt" ...
+.Ft struct cdev *
+.Fn make_dev_cred "struct cdevsw *cdevsw" "int unit" "struct ucred *cr" "uid_t uid" "gid_t gid" "int perms" "const char *fmt" ...
+.Ft struct cdev *
+.Fn make_dev_credf "int flags" "struct cdevsw *cdevsw" "int unit" "struct ucred *cr" "uid_t uid" "gid_t gid" "int perms" "const char *fmt" ...
+.Ft struct cdev *
+.Fn make_dev_alias "struct cdev *pdev" "const char *fmt" ...
+.Ft void
+.Fn destroy_dev "struct cdev *dev"
+.Ft void
+.Fn destroy_dev_sched "struct cdev *dev"
+.Ft void
+.Fn destroy_dev_sched_cb "struct cdev *dev" "void (*cb)(void *)" "void *arg"
+.Ft void
+.Fn destroy_dev_drain "struct cdevsw *csw"
+.Ft void
+.Fn dev_depends "struct cdev *pdev" "struct cdev *cdev"
+.Sh DESCRIPTION
+The
+.Fn make_dev_credf
+function creates a
+.Fa cdev
+structure for a new device.
+It also notifies
+.Xr devfs 5
+of the presence of the new device, that causes corresponding nodes
+to be created.
+Besides this, a
+.Xr devctl 4
+notification is sent.
+The device will be owned by
+.Va uid ,
+with the group ownership as
+.Va gid .
+The name is the expansion of
+.Va fmt
+and following arguments as
+.Xr printf 9
+would print it.
+The name determines its path under
+.Pa /dev
+or other
+.Xr devfs 5
+mount point and may contain slash
+.Ql /
+characters to denote subdirectories.
+The permissions of the file specified in
+.Va perms
+are defined in
+.In sys/stat.h :
+.Pp
+.Bd -literal -offset indent -compact
+#define S_IRWXU 0000700 /* RWX mask for owner */
+#define S_IRUSR 0000400 /* R for owner */
+#define S_IWUSR 0000200 /* W for owner */
+#define S_IXUSR 0000100 /* X for owner */
+
+#define S_IRWXG 0000070 /* RWX mask for group */
+#define S_IRGRP 0000040 /* R for group */
+#define S_IWGRP 0000020 /* W for group */
+#define S_IXGRP 0000010 /* X for group */
+
+#define S_IRWXO 0000007 /* RWX mask for other */
+#define S_IROTH 0000004 /* R for other */
+#define S_IWOTH 0000002 /* W for other */
+#define S_IXOTH 0000001 /* X for other */
+
+#define S_ISUID 0004000 /* set user id on execution */
+#define S_ISGID 0002000 /* set group id on execution */
+#define S_ISVTX 0001000 /* sticky bit */
+#ifndef _POSIX_SOURCE
+#define S_ISTXT 0001000
+#endif
+.Ed
+.Pp
+The
+.Va cr
+argument specifies credentials that will be stored in the
+.Fa si_cred
+member of the initialized
+.Fa struct cdev .
+The
+.Va flags
+argument alters the operation of
+.Fn make_dev_credf .
+The following values are currently accepted:
+.Pp
+.Bd -literal -offset indent -compact
+MAKEDEV_REF reference the created device
+.Ed
+.Pp
+The
+.Xr dev_clone 9
+event handler shall specify
+.Dv MAKEDEV_REF
+flag when creating a device in response to lookup, to avoid race where
+the device created is destroyed immediately after
+.Xr devfs_lookup 9
+drops his reference to cdev.
+.Pp
+The
+.Fn make_dev_cred
+function is equivalent to the call
+.Bd -literal -offset indent
+make_dev_credf(0, cdevsw, unit, cr, uid, gid, perms, fmt, ...);
+.Ed .
+.Pp
+The
+.Fn make_dev
+function call is the same as
+.Bd -literal -offset indent
+make_dev_credf(0, cdevsw, unit, NULL, uid, gid, perms, fmt, ...);
+.Ed .
+.Pp
+The
+.Fn make_dev_alias
+function takes the returned
+.Ft cdev
+from
+.Fn make_dev
+and makes another (aliased) name for this device.
+It is an error to call
+.Fn make_dev_alias
+prior to calling
+.Fn make_dev .
+.Pp
+The
+.Fa cdev
+returned by
+.Fn make_dev
+and
+.Fn make_dev_alias
+has two fields,
+.Fa si_drv1
+and
+.Fa si_drv2 ,
+that are available to store state.
+Both fields are of type
+.Ft void * .
+These are designed to replace the
+.Fa unit
+argument to
+.Fn make_dev ,
+which can be obtained with
+.Fn dev2unit .
+.Pp
+The
+.Fn destroy_dev
+function takes the returned
+.Fa cdev
+from
+.Fn make_dev
+and destroys the registration for that device.
+The notification is sent to
+.Xr devctl 4
+about the destruction event.
+Do not call
+.Fn destroy_dev
+on devices that were created with
+.Fn make_dev_alias .
+.Pp
+The
+.Fn dev_depends
+function establishes a parent-child relationship between two devices.
+The net effect is that a
+.Fn destroy_dev
+of the parent device will also result in the destruction of the
+child device(s),
+if any exist.
+A device may simultaneously be a parent and a child,
+so it is possible to build a complete hierarchy.
+.Pp
+The
+.Fn destroy_dev_sched_cb
+function schedules execution of the
+.Fn destroy_dev
+for the specified
+.Fa cdev
+in the safe context.
+After
+.Fn destroy_dev
+is finished, and if the supplied
+.Fa cb
+is not NULL, the callback
+.Fa cb
+is called, with argument
+.Fa arg .
+The
+.Fn destroy_dev_sched
+function is the same as
+.Bd -literal -offset indent
+destroy_dev_sched(cdev, NULL, NULL);
+.Ed .
+.Pp
+The
+.Fn d_close
+driver method cannot call
+.Fn destroy_dev
+directly. Doing so causes deadlock when
+.Fn destroy_dev
+waits for all threads to leave the driver methods.
+Also, because
+.Fn destroy_dev
+sleeps, no non-sleepable locks may be held over the call.
+The
+.Fn destroy_dev_sched
+family of functions overcome these issues.
+.Pp
+The device driver may call the
+.Fn destroy_dev_drain
+function to wait until all devices that have supplied
+.Fa csw
+as cdevsw, are destroyed. This is useful when driver knows that
+.Fn destroy_dev_sched
+is called for all instantiated devices, but need to postpone module
+unload until
+.Fn destroy_dev
+is actually finished for all of them.
+.Pp
+.Sh SEE ALSO
+.Xr devctl 4 ,
+.Xr destroy_dev_drain 9 ,
+.Xr dev_clone 9 ,
+.Xr devfs 5
+.Sh HISTORY
+The
+.Fn make_dev
+and
+.Fn destroy_dev
+functions first appeared in
+.Fx 4.0 .
+The function
+.Fn make_dev_alias
+first appeared in
+.Fx 4.1 .
+The function
+.Fn dev_depends
+first appeared in
+.Fx 5.0 .
+The functions
+.Fn make_dev_credf ,
+.Fn destroy_dev_sched ,
+.Fn destroy_dev_sched_cb
+first appeared in
+.Fx 7.0 .
diff --git a/share/man/man9/malloc.9 b/share/man/man9/malloc.9
new file mode 100644
index 0000000..76aa83a
--- /dev/null
+++ b/share/man/man9/malloc.9
@@ -0,0 +1,290 @@
+.\"
+.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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 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.
+.\"
+.\" $NetBSD: malloc.9,v 1.3 1996/11/11 00:05:11 lukem Exp $
+.\" $FreeBSD$
+.\"
+.Dd October 23, 2008
+.Dt MALLOC 9
+.Os
+.Sh NAME
+.Nm malloc ,
+.Nm free ,
+.Nm realloc ,
+.Nm reallocf ,
+.Nm MALLOC_DEFINE ,
+.Nm MALLOC_DECLARE
+.Nd kernel memory management routines
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/malloc.h
+.Ft void *
+.Fn malloc "unsigned long size" "struct malloc_type *type" "int flags"
+.Ft void
+.Fn free "void *addr" "struct malloc_type *type"
+.Ft void *
+.Fn realloc "void *addr" "unsigned long size" "struct malloc_type *type" "int flags"
+.Ft void *
+.Fn reallocf "void *addr" "unsigned long size" "struct malloc_type *type" "int flags"
+.Fn MALLOC_DECLARE type
+.In sys/param.h
+.In sys/malloc.h
+.In sys/kernel.h
+.Fn MALLOC_DEFINE type shortdesc longdesc
+.Sh DESCRIPTION
+The
+.Fn malloc
+function allocates uninitialized memory in kernel address space for an
+object whose size is specified by
+.Fa size .
+.Pp
+The
+.Fn free
+function releases memory at address
+.Fa addr
+that was previously allocated by
+.Fn malloc
+for re-use.
+The memory is not zeroed.
+If
+.Fa addr
+is
+.Dv NULL ,
+then
+.Fn free
+does nothing.
+.Pp
+The
+.Fn realloc
+function changes the size of the previously allocated memory referenced by
+.Fa addr
+to
+.Fa size
+bytes.
+The contents of the memory are unchanged up to the lesser of the new and
+old sizes.
+Note that the returned value may differ from
+.Fa addr .
+If the requested memory cannot be allocated,
+.Dv NULL
+is returned and the memory referenced by
+.Fa addr
+is valid and unchanged.
+If
+.Fa addr
+is
+.Dv NULL ,
+the
+.Fn realloc
+function behaves identically to
+.Fn malloc
+for the specified size.
+.Pp
+The
+.Fn reallocf
+function is identical to
+.Fn realloc
+except that it
+will free the passed pointer when the requested memory cannot be allocated.
+.Pp
+Unlike its standard C library counterpart
+.Pq Xr malloc 3 ,
+the kernel version takes two more arguments.
+The
+.Fa flags
+argument further qualifies
+.Fn malloc Ns 's
+operational characteristics as follows:
+.Bl -tag -width indent
+.It Dv M_ZERO
+Causes the allocated memory to be set to all zeros.
+.It Dv M_NOWAIT
+Causes
+.Fn malloc ,
+.Fn realloc ,
+and
+.Fn reallocf
+to return
+.Dv NULL
+if the request cannot be immediately fulfilled due to resource shortage.
+Note that
+.Dv M_NOWAIT
+is required when running in an interrupt context.
+.It Dv M_WAITOK
+Indicates that it is OK to wait for resources.
+If the request cannot be immediately fulfilled, the current process is put
+to sleep to wait for resources to be released by other processes.
+The
+.Fn malloc ,
+.Fn realloc ,
+and
+.Fn reallocf
+functions cannot return
+.Dv NULL
+if
+.Dv M_WAITOK
+is specified.
+.It Dv M_USE_RESERVE
+Indicates that the system can dig into its reserve in order to obtain the
+requested memory.
+This option used to be called
+.Dv M_KERNEL
+but has been renamed to something more obvious.
+This option has been deprecated and is slowly being removed from the kernel,
+and so should not be used with any new programming.
+.El
+.Pp
+Exactly one of either
+.Dv M_WAITOK
+or
+.Dv M_NOWAIT
+must be specified.
+.Pp
+The
+.Fa type
+argument is used to perform statistics on memory usage, and for
+basic sanity checks.
+It can be used to identify multiple allocations.
+The statistics can be examined by
+.Sq vmstat -m .
+.Pp
+A
+.Fa type
+is defined using
+.Vt "struct malloc_type"
+via the
+.Fn MALLOC_DECLARE
+and
+.Fn MALLOC_DEFINE
+macros.
+.Bd -literal -offset indent
+/* sys/something/foo_extern.h */
+
+MALLOC_DECLARE(M_FOOBUF);
+
+/* sys/something/foo_main.c */
+
+MALLOC_DEFINE(M_FOOBUF, "foobuffers", "Buffers to foo data into the ether");
+
+/* sys/something/foo_subr.c */
+
+\&...
+buf = malloc(sizeof *buf, M_FOOBUF, M_NOWAIT);
+
+.Ed
+.Pp
+In order to use
+.Fn MALLOC_DEFINE ,
+one must include
+.In sys/param.h
+(instead of
+.In sys/types.h )
+and
+.In sys/kernel.h .
+.Sh IMPLEMENTATION NOTES
+The memory allocator allocates memory in chunks that have size a power
+of two for requests up to the size of a page of memory.
+For larger requests, one or more pages is allocated.
+While it should not be relied upon, this information may be useful for
+optimizing the efficiency of memory use.
+.Pp
+Programmers should be careful not to confuse the malloc flags
+.Dv M_NOWAIT
+and
+.Dv M_WAITOK
+with the
+.Xr mbuf 9
+flags
+.Dv M_DONTWAIT
+and
+.Dv M_WAIT .
+.Sh CONTEXT
+.Fn malloc ,
+.Fn realloc
+and
+.Fn reallocf
+may not be called from fast interrupts handlers.
+When called from threaded interrupts,
+.Fa flags
+must contain
+.Dv M_NOWAIT .
+.Pp
+.Fn malloc ,
+.Fn realloc
+and
+.Fn reallocf
+may sleep when called with
+.Dv M_WAITOK .
+.Fn free
+never sleeps.
+.Pp
+Any calls to
+.Fn malloc
+(even with
+.Dv M_NOWAIT )
+or
+.Fn free
+when holding a
+.Xr vnode 9
+interlock, will cause a LOR (Lock Order Reversal) due to the
+intertwining of VM Objects and Vnodes.
+.Sh RETURN VALUES
+The
+.Fn malloc ,
+.Fn realloc ,
+and
+.Fn reallocf
+functions return a kernel virtual address that is suitably aligned for
+storage of any type of object, or
+.Dv NULL
+if the request could not be satisfied (implying that
+.Dv M_NOWAIT
+was set).
+.Sh DIAGNOSTICS
+A kernel compiled with the
+.Dv INVARIANTS
+configuration option attempts to detect memory corruption caused by
+such things as writing outside the allocated area and imbalanced calls to the
+.Fn malloc
+and
+.Fn free
+functions.
+Failing consistency checks will cause a panic or a system console
+message.
+.Sh SEE ALSO
+.Xr vmstat 8 ,
+.Xr contigmalloc 9 ,
+.Xr memguard 9 ,
+.Xr vnode 9
diff --git a/share/man/man9/mbchain.9 b/share/man/man9/mbchain.9
new file mode 100644
index 0000000..f9a4521
--- /dev/null
+++ b/share/man/man9/mbchain.9
@@ -0,0 +1,222 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 Boris Popov
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd February 20, 2001
+.Dt MBCHAIN 9
+.Os
+.Sh NAME
+.Nm mbchain ,
+.Nm mb_init ,
+.Nm mb_initm ,
+.Nm mb_done ,
+.Nm mb_detach ,
+.Nm mb_fixhdr ,
+.Nm mb_reserve ,
+.Nm mb_put_uint8 ,
+.Nm mb_put_uint16be ,
+.Nm mb_put_uint16le ,
+.Nm mb_put_uint32be ,
+.Nm mb_put_uint32le ,
+.Nm mb_put_int64be ,
+.Nm mb_put_int64le ,
+.Nm mb_put_mem ,
+.Nm mb_put_mbuf ,
+.Nm mb_put_uio
+.Nd "set of functions to build an mbuf chain from various data types"
+.Sh SYNOPSIS
+.Cd options LIBMCHAIN
+.Li kldload libmchain
+.Pp
+.In sys/param.h
+.In sys/uio.h
+.In sys/mchain.h
+.Ft int
+.Fn mb_init "struct mbchain *mbp"
+.Ft void
+.Fn mb_initm "struct mbchain *mbp" "struct mbuf *m"
+.Ft void
+.Fn mb_done "struct mbchain *mbp"
+.Ft struct mbuf *
+.Fn mb_detach "struct mbchain *mbp"
+.Ft int
+.Fn mb_fixhdr "struct mbchain *mbp"
+.Ft caddr_t
+.Fn mb_reserve "struct mbchain *mbp" "int size"
+.Ft int
+.Fn mb_put_uint8 "struct mbchain *mbp" "u_int8_t x"
+.Ft int
+.Fn mb_put_uint16be "struct mbchain *mbp" "u_int16_t x"
+.Ft int
+.Fn mb_put_uint16le "struct mbchain *mbp" "u_int16_t x"
+.Ft int
+.Fn mb_put_uint32be "struct mbchain *mbp" "u_int32_t x"
+.Ft int
+.Fn mb_put_uint32le "struct mbchain *mbp" "u_int32_t x"
+.Ft int
+.Fn mb_put_int64be "struct mbchain *mbp" "int64_t x"
+.Ft int
+.Fn mb_put_int64le "struct mbchain *mbp" "int64_t x"
+.Ft int
+.Fn mb_put_mem "struct mbchain *mbp" "c_caddr_t source" "int size" "int type"
+.Ft int
+.Fn mb_put_mbuf "struct mbchain *mbp" "struct mbuf *m"
+.Ft int
+.Fn mb_put_uio "struct mbchain *mbp" "struct uio *uiop" "int size"
+.Sh DESCRIPTION
+These functions are used to compose mbuf chains from various data types.
+The
+.Vt mbchain
+structure is used as a working context and should be initialized with a call
+to either
+.Fn mb_init
+or
+.Fn mb_initm .
+It has the following fields:
+.Bl -tag -width ".Va mb_count"
+.It Va "mb_top"
+.Pq Vt "struct mbuf *"
+A pointer to the top of constructed mbuf chain.
+.It Va mb_cur
+.Pq Vt "struct mbuf *"
+A pointer to the currently filled mbuf.
+.It Va mb_mleft
+.Pq Vt int
+Number of bytes left in the current mbuf.
+.It Va mb_count
+.Pq Vt int
+Total number of bytes placed in the mbuf chain.
+.It Va mb_copy
+.Pq Vt "mb_copy_t *"
+User-defined function to perform a copy into mbuf;
+useful if any unusual
+data conversion is necessary.
+.It Va mb_udata
+.Pq Vt "void *"
+User-supplied data which can be used in the
+.Va mb_copy
+function.
+.El
+.Pp
+.Fn mb_done
+function disposes an mbuf chain pointed to by
+.Fa mbp->mb_top
+field and sets
+the field to
+.Dv NULL .
+.Pp
+.Fn mb_detach
+function returns the value of
+.Fa mbp->mb_top
+field and sets its value to
+.Dv NULL .
+.Pp
+.Fn mb_fixhdr
+recalculates the length of an mbuf chain and updates the
+.Va m_pkthdr.len
+field of the first mbuf in the chain.
+It returns the calculated length.
+.Pp
+.Fn mb_reserve
+ensures that the object of the length specified by the
+.Fa size
+argument will fit in the current mbuf (mbuf allocation is performed if
+necessary), and advances all pointers as if the real data was placed.
+Returned
+value will point to the beginning of the reserved space.
+Note that the size
+of the object should not exceed
+.Dv MLEN
+bytes.
+.Pp
+All
+.Fn mb_put_*
+functions perform an actual copy of the data into mbuf chain.
+Functions which have
+.Cm le
+or
+.Cm be
+suffixes will perform conversion to the little\- or big\-endian data formats.
+.Pp
+.Fn mb_put_mem
+function copies
+.Fa size
+bytes of data specified by the
+.Fa source
+argument to an mbuf chain.
+The
+.Fa type
+argument specifies the method used to perform a copy,
+and can be one of the following:
+.Bl -tag -width ".Dv MB_MINLINE"
+.It Dv MB_MSYSTEM
+Use
+.Fn bcopy
+function.
+.It Dv MB_MUSER
+Use
+.Xr copyin 9
+function.
+.It Dv MB_MINLINE
+Use an
+.Dq inline
+loop which does not call any function.
+.It Dv MB_MZERO
+Do not copy any data, but just fill the destination with zero bytes.
+.It Dv MB_MCUSTOM
+Call function specified by the
+.Fa mbp->mb_copy
+field.
+.El
+.Sh RETURN VALUES
+All
+.Ft int
+functions except
+.Fn mb_fixhdr
+return zero if successful and an error code otherwise.
+.Pp
+.Em Note :
+after failure of any function, an mbuf chain is left in the broken state,
+and only
+.Fn mb_done
+function can safely be called to destroy it.
+.Sh EXAMPLES
+.Bd -literal
+struct mbchain *mbp;
+struct mbuf *m;
+
+mb_init(mbp);
+mb_put_uint8(mbp, 33);
+mb_put_uint16le(mbp, length);
+m = m_copym(mbp->mb_top, 0, M_COPYALL, M_WAIT);
+send(m);
+mb_done(mbp);
+.Ed
+.Sh SEE ALSO
+.Xr mbuf 9 ,
+.Xr mdchain 9
+.Sh AUTHORS
+This manual page was written by
+.An Boris Popov Aq bp@FreeBSD.org .
diff --git a/share/man/man9/mbpool.9 b/share/man/man9/mbpool.9
new file mode 100644
index 0000000..b042973
--- /dev/null
+++ b/share/man/man9/mbpool.9
@@ -0,0 +1,264 @@
+.\" Copyright (c) 2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 15, 2003
+.Dt MBPOOL 9
+.Os
+.Sh NAME
+.Nm mbpool
+.Nd "buffer pools for network interfaces"
+.Sh SYNOPSIS
+.In sys/types.h
+.In machine/bus.h
+.In sys/mbpool.h
+.Vt struct mbpool ;
+.Ft int
+.Fo mbp_create
+.Fa "struct mbpool **mbp" "const char *name" "bus_dma_tag_t dmat"
+.Fa "u_int max_pages" "size_t page_size" "size_t chunk_size"
+.Fc
+.Ft void
+.Fn mbp_destroy "struct mbpool *mbp"
+.Ft "void *"
+.Fn mbp_alloc "struct mbpool *mbp" "bus_addr_t *pa" "uint32_t *hp"
+.Ft void
+.Fn mbp_free "struct mbpool *mbp" "void *p"
+.Ft void
+.Fn mbp_ext_free "void *" "void *"
+.Ft void
+.Fn mbp_card_free "struct mbpool *mbp"
+.Ft void
+.Fn mbp_count "struct mbpool *mbp" "u_int *used" "u_int *card" "u_int *free"
+.Ft "void *"
+.Fn mbp_get "struct mbpool *mbp" "uint32_t h"
+.Ft "void *"
+.Fn mbp_get_keep "struct mbpool *mbp" "uint32_t h"
+.Ft void
+.Fo mbp_sync
+.Fa "struct mbpool *mbp" "uint32_t h" "bus_addr_t off" "bus_size_t len"
+.Fa "u_int op"
+.Fc
+.Pp
+.Fn MODULE_DEPEND "your_module" "libmbpool" 1 1 1
+.Pp
+.Cd "options LIBMBPOOL"
+.Sh DESCRIPTION
+Mbuf pools are intended to help drivers for interface cards that need huge
+amounts of receive buffers, and additionally provides a mapping between these
+buffers and 32-bit handles.
+.Pp
+An example of these cards are the Fore/Marconi ForeRunnerHE cards.
+These
+employ up to 8 receive groups, each with two buffer pools, each of which
+can contain up to 8192.
+This gives a total maximum number of more than
+100000 buffers.
+Even with a more moderate configuration the card eats several
+thousand buffers.
+Each of these buffers must be mapped for DMA.
+While for
+machines without an IOMMU and with lesser than 4GByte memory this is not
+a problem, for other machines this may quickly eat up all available IOMMU
+address space and/or bounce buffers.
+On sparc64, the default I/O page size
+is 16k, so mapping a simple mbuf wastes 31/32 of the address space.
+.Pp
+Another problem with most of these cards is that they support putting a 32-bit
+handle into the buffer descriptor together with the physical address.
+This handle is reflected back to the driver when the buffer is filled, and
+assists the driver in finding the buffer in host memory.
+For 32-bit machines,
+the virtual address of the buffer is usually used as the handle.
+This does not
+work for 64-bit machines for obvious reasons, so a mapping is needed between
+these handles and the buffers.
+This mapping should be possible without
+searching lists and the like.
+.Pp
+An mbuf pool overcomes both problems by allocating DMA-able memory page wise
+with a per-pool configurable page size.
+Each page is divided into a number of
+equally-sized chunks, the last
+.Dv MBPOOL_TRAILER_SIZE
+of which are used by the pool code (4 bytes).
+The rest of each chunk is
+usable as a buffer.
+There is a per-pool limit on pages that will be allocated.
+.Pp
+Additionally, the code manages two flags for each buffer:
+.Dq on-card
+and
+.Dq used .
+A buffer may be in one of three states:
+.Bl -tag -width "on-card"
+.It free
+None of the flags is set.
+.It on-card
+Both flags are set.
+The buffer is assumed to be handed over to the card and
+waiting to be filled.
+.It used
+The buffer was returned by the card and is now travelling through the system.
+.El
+.Pp
+A pool is created with
+.Fn mbp_create .
+This call specifies a DMA tag
+.Fa dmat
+to be used to create and map the memory pages via
+.Xr bus_dmamem_alloc 9 .
+The
+.Fa chunk_size
+includes the pool overhead.
+It means that to get buffers for 5 ATM cells
+(240 bytes), a chunk size of 256 should be specified.
+This results in 12 unused
+bytes between the buffer, and the pool overhead of four byte.
+The total
+maximum number of buffers in a pool is
+.Fa max_pages
+*
+.Fa ( page_size
+/
+.Fa chunk_size ) .
+The maximum value for
+.Fa max_pages
+is 2^14-1 (16383) and the maximum of
+.Fa page_size
+/
+.Fa chunk_size
+is 2^9 (512).
+If the call is successful, a pointer to a newly allocated
+.Vt "struct mbpool"
+is set into the variable pointed to by
+.Fa mpb .
+.Pp
+A pool is destroyed with
+.Fn mbp_destroy .
+This frees all pages and the pool structure itself.
+If compiled with
+.Dv DIAGNOSTICS ,
+the code checks that all buffers are free.
+If not, a warning message is issued
+to the console.
+.Pp
+A buffer is allocated with
+.Fn mbp_alloc .
+This returns the virtual address of the buffer and stores the physical
+address into the variable pointed to by
+.Fa pa .
+The handle is stored into the variable pointed to by
+.Fa hp .
+The two most significant bits and the 7 least significant bits of the handle
+are unused by the pool code and may be used by the caller.
+These are
+automatically stripped when passing a handle to one of the other functions.
+If a buffer cannot be allocated (either because the maximum number of pages
+is reached, no memory is available or the memory cannot be mapped),
+.Dv NULL
+is returned.
+If a buffer could be allocated, it is in the
+.Dq on-card
+state.
+.Pp
+When the buffer is returned by the card, the driver calls
+.Fn mbp_get
+with the handle.
+This function returns the virtual address of the buffer
+and clears the
+.Dq on-card
+bit.
+The buffer is now in the
+.Dq used
+state.
+The function
+.Fn mbp_get_keep
+differs from
+.Fn mbp_get
+in that it does not clear the
+.Dq on-card
+bit.
+This can be used for buffers
+that are returned
+.Dq partially
+by the card.
+.Pp
+A buffer is freed by calling
+.Fn mbp_free
+with the virtual address of the buffer.
+This clears the
+.Dq used
+bit, and
+puts the buffer on the free list of the pool.
+Note that free buffers
+are NOT returned to the system.
+The function
+.Fn mbp_ext_free
+can be given to
+.Fn m_extadd
+as the free function.
+The user argument must be the pointer to
+the pool.
+.Pp
+Before using the contents of a buffer returned by the card, the driver
+must call
+.Fn mbp_sync
+with the appropriate parameters.
+This results in a call to
+.Xr bus_dmamap_sync 9
+for the buffer.
+.Pp
+All buffers in the pool that are currently in the
+.Dq on-card
+state can be freed
+with a call to
+.Fn mbp_card_free .
+This may be called by the driver when it stops the interface.
+Buffers in the
+.Dq used
+state are not freed by this call.
+.Pp
+For debugging it is possible to call
+.Fn mbp_count .
+This returns the number of buffers in the
+.Dq used
+and
+.Dq on-card
+states and
+the number of buffers on the free list.
+.Sh SEE ALSO
+.Xr mbuf 9
+.Sh CAVEATS
+The function
+.Fn mbp_sync
+is currently a no-op because
+.Xr bus_dmamap_sync 9
+is missing the offset and length parameters.
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man9/mbuf.9 b/share/man/man9/mbuf.9
new file mode 100644
index 0000000..8454b64
--- /dev/null
+++ b/share/man/man9/mbuf.9
@@ -0,0 +1,1185 @@
+.\" Copyright (c) 2000 FreeBSD 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 [your name] 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$
+.\"
+.Dd March 25, 2008
+.Dt MBUF 9
+.Os
+.\"
+.Sh NAME
+.Nm mbuf
+.Nd "memory management in the kernel IPC subsystem"
+.\"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/mbuf.h
+.\"
+.Ss Mbuf allocation macros
+.Fn MGET "struct mbuf *mbuf" "int how" "short type"
+.Fn MGETHDR "struct mbuf *mbuf" "int how" "short type"
+.Fn MCLGET "struct mbuf *mbuf" "int how"
+.Fo MEXTADD
+.Fa "struct mbuf *mbuf"
+.Fa "caddr_t buf"
+.Fa "u_int size"
+.Fa "void (*free)(void *opt_arg1, void *opt_arg2)"
+.Fa "void *opt_arg1"
+.Fa "void *opt_arg2"
+.Fa "short flags"
+.Fa "int type"
+.Fc
+.Fn MEXTFREE "struct mbuf *mbuf"
+.Fn MFREE "struct mbuf *mbuf" "struct mbuf *successor"
+.\"
+.Ss Mbuf utility macros
+.Fn mtod "struct mbuf *mbuf" "type"
+.Fn M_ALIGN "struct mbuf *mbuf" "u_int len"
+.Fn MH_ALIGN "struct mbuf *mbuf" "u_int len"
+.Ft int
+.Fn M_LEADINGSPACE "struct mbuf *mbuf"
+.Ft int
+.Fn M_TRAILINGSPACE "struct mbuf *mbuf"
+.Fn M_MOVE_PKTHDR "struct mbuf *to" "struct mbuf *from"
+.Fn M_PREPEND "struct mbuf *mbuf" "int len" "int how"
+.Fn MCHTYPE "struct mbuf *mbuf" "u_int type"
+.Ft int
+.Fn M_WRITABLE "struct mbuf *mbuf"
+.\"
+.Ss Mbuf allocation functions
+.Ft struct mbuf *
+.Fn m_get "int how" "int type"
+.Ft struct mbuf *
+.Fn m_getm "struct mbuf *orig" "int len" "int how" "int type"
+.Ft struct mbuf *
+.Fn m_getcl "int how" "short type" "int flags"
+.Ft struct mbuf *
+.Fn m_getclr "int how" "int type"
+.Ft struct mbuf *
+.Fn m_gethdr "int how" "int type"
+.Ft struct mbuf *
+.Fn m_free "struct mbuf *mbuf"
+.Ft void
+.Fn m_freem "struct mbuf *mbuf"
+.\"
+.Ss Mbuf utility functions
+.Ft void
+.Fn m_adj "struct mbuf *mbuf" "int len"
+.Ft void
+.Fn m_align "struct mbuf *mbuf" "int len"
+.Ft int
+.Fn m_append "struct mbuf *mbuf" "int len" "c_caddr_t cp"
+.Ft struct mbuf *
+.Fn m_prepend "struct mbuf *mbuf" "int len" "int how"
+.Ft struct mbuf *
+.Fn m_copyup "struct mbuf *mbuf" "int len" "int dstoff"
+.Ft struct mbuf *
+.Fn m_pullup "struct mbuf *mbuf" "int len"
+.Ft struct mbuf *
+.Fn m_pulldown "struct mbuf *mbuf" "int offset" "int len" "int *offsetp"
+.Ft struct mbuf *
+.Fn m_copym "struct mbuf *mbuf" "int offset" "int len" "int how"
+.Ft struct mbuf *
+.Fn m_copypacket "struct mbuf *mbuf" "int how"
+.Ft struct mbuf *
+.Fn m_dup "struct mbuf *mbuf" "int how"
+.Ft void
+.Fn m_copydata "const struct mbuf *mbuf" "int offset" "int len" "caddr_t buf"
+.Ft void
+.Fn m_copyback "struct mbuf *mbuf" "int offset" "int len" "caddr_t buf"
+.Ft struct mbuf *
+.Fo m_devget
+.Fa "char *buf"
+.Fa "int len"
+.Fa "int offset"
+.Fa "struct ifnet *ifp"
+.Fa "void (*copy)(char *from, caddr_t to, u_int len)"
+.Fc
+.Ft void
+.Fn m_cat "struct mbuf *m" "struct mbuf *n"
+.Ft u_int
+.Fn m_fixhdr "struct mbuf *mbuf"
+.Ft void
+.Fn m_dup_pkthdr "struct mbuf *to" "struct mbuf *from"
+.Ft void
+.Fn m_move_pkthdr "struct mbuf *to" "struct mbuf *from"
+.Ft u_int
+.Fn m_length "struct mbuf *mbuf" "struct mbuf **last"
+.Ft struct mbuf *
+.Fn m_split "struct mbuf *mbuf" "int len" "int how"
+.Ft int
+.Fn m_apply "struct mbuf *mbuf" "int off" "int len" "int (*f)(void *arg, void *data, u_int len)" "void *arg"
+.Ft struct mbuf *
+.Fn m_getptr "struct mbuf *mbuf" "int loc" "int *off"
+.Ft struct mbuf *
+.Fn m_defrag "struct mbuf *m0" "int how"
+.Ft struct mbuf *
+.Fn m_unshare "struct mbuf *m0" "int how"
+.\"
+.Sh DESCRIPTION
+An
+.Vt mbuf
+is a basic unit of memory management in the kernel IPC subsystem.
+Network packets and socket buffers are stored in
+.Vt mbufs .
+A network packet may span multiple
+.Vt mbufs
+arranged into a
+.Vt mbuf chain
+(linked list),
+which allows adding or trimming
+network headers with little overhead.
+.Pp
+While a developer should not bother with
+.Vt mbuf
+internals without serious
+reason in order to avoid incompatibilities with future changes, it
+is useful to understand the general structure of an
+.Vt mbuf .
+.Pp
+An
+.Vt mbuf
+consists of a variable-sized header and a small internal
+buffer for data.
+The total size of an
+.Vt mbuf ,
+.Dv MSIZE ,
+is a constant defined in
+.In sys/param.h .
+The
+.Vt mbuf
+header includes:
+.Pp
+.Bl -tag -width "m_nextpkt" -offset indent
+.It Va m_next
+.Pq Vt struct mbuf *
+A pointer to the next
+.Vt mbuf
+in the
+.Vt mbuf chain .
+.It Va m_nextpkt
+.Pq Vt struct mbuf *
+A pointer to the next
+.Vt mbuf chain
+in the queue.
+.It Va m_data
+.Pq Vt caddr_t
+A pointer to data attached to this
+.Vt mbuf .
+.It Va m_len
+.Pq Vt int
+The length of the data.
+.It Va m_type
+.Pq Vt short
+The type of the data.
+.It Va m_flags
+.Pq Vt int
+The
+.Vt mbuf
+flags.
+.El
+.Pp
+The
+.Vt mbuf
+flag bits are defined as follows:
+.Bd -literal
+/* mbuf flags */
+#define M_EXT 0x0001 /* has associated external storage */
+#define M_PKTHDR 0x0002 /* start of record */
+#define M_EOR 0x0004 /* end of record */
+#define M_RDONLY 0x0008 /* associated data marked read-only */
+#define M_PROTO1 0x0010 /* protocol-specific */
+#define M_PROTO2 0x0020 /* protocol-specific */
+#define M_PROTO3 0x0040 /* protocol-specific */
+#define M_PROTO4 0x0080 /* protocol-specific */
+#define M_PROTO5 0x0100 /* protocol-specific */
+#define M_PROTO6 0x4000 /* protocol-specific (avoid M_BCAST conflict) */
+#define M_FREELIST 0x8000 /* mbuf is on the free list */
+
+/* mbuf pkthdr flags (also stored in m_flags) */
+#define M_BCAST 0x0200 /* send/received as link-level broadcast */
+#define M_MCAST 0x0400 /* send/received as link-level multicast */
+#define M_FRAG 0x0800 /* packet is fragment of larger packet */
+#define M_FIRSTFRAG 0x1000 /* packet is first fragment */
+#define M_LASTFRAG 0x2000 /* packet is last fragment */
+.Ed
+.Pp
+The available
+.Vt mbuf
+types are defined as follows:
+.Bd -literal
+/* mbuf types */
+#define MT_DATA 1 /* dynamic (data) allocation */
+#define MT_HEADER MT_DATA /* packet header */
+#define MT_SONAME 8 /* socket name */
+#define MT_CONTROL 14 /* extra-data protocol message */
+#define MT_OOBDATA 15 /* expedited data */
+.Ed
+.Pp
+If the
+.Dv M_PKTHDR
+flag is set, a
+.Vt struct pkthdr Va m_pkthdr
+is added to the
+.Vt mbuf
+header.
+It contains a pointer to the interface
+the packet has been received from
+.Pq Vt struct ifnet Va *rcvif ,
+and the total packet length
+.Pq Vt int Va len .
+Optionally, it may also contain an attached list of packet tags
+.Pq Vt "struct m_tag" .
+See
+.Xr mbuf_tags 9
+for details.
+Fields used in offloading checksum calculation to the hardware are kept in
+.Va m_pkthdr
+as well.
+See
+.Sx HARDWARE-ASSISTED CHECKSUM CALCULATION
+for details.
+.Pp
+If small enough, data is stored in the internal data buffer of an
+.Vt mbuf .
+If the data is sufficiently large, another
+.Vt mbuf
+may be added to the
+.Vt mbuf chain ,
+or external storage may be associated with the
+.Vt mbuf .
+.Dv MHLEN
+bytes of data can fit into an
+.Vt mbuf
+with the
+.Dv M_PKTHDR
+flag set,
+.Dv MLEN
+bytes can otherwise.
+.Pp
+If external storage is being associated with an
+.Vt mbuf ,
+the
+.Va m_ext
+header is added at the cost of losing the internal data buffer.
+It includes a pointer to external storage, the size of the storage,
+a pointer to a function used for freeing the storage,
+a pointer to an optional argument that can be passed to the function,
+and a pointer to a reference counter.
+An
+.Vt mbuf
+using external storage has the
+.Dv M_EXT
+flag set.
+.Pp
+The system supplies a macro for allocating the desired external storage
+buffer,
+.Dv MEXTADD .
+.Pp
+The allocation and management of the reference counter is handled by the
+subsystem.
+.Pp
+The system also supplies a default type of external storage buffer called an
+.Vt mbuf cluster .
+.Vt Mbuf clusters
+can be allocated and configured with the use of the
+.Dv MCLGET
+macro.
+Each
+.Vt mbuf cluster
+is
+.Dv MCLBYTES
+in size, where MCLBYTES is a machine-dependent constant.
+The system defines an advisory macro
+.Dv MINCLSIZE ,
+which is the smallest amount of data to put into an
+.Vt mbuf cluster .
+It is equal to the sum of
+.Dv MLEN
+and
+.Dv MHLEN .
+It is typically preferable to store data into the data region of an
+.Vt mbuf ,
+if size permits, as opposed to allocating a separate
+.Vt mbuf cluster
+to hold the same data.
+.\"
+.Ss Macros and Functions
+There are numerous predefined macros and functions that provide the
+developer with common utilities.
+.\"
+.Bl -ohang -offset indent
+.It Fn mtod mbuf type
+Convert an
+.Fa mbuf
+pointer to a data pointer.
+The macro expands to the data pointer cast to the pointer of the specified
+.Fa type .
+.Sy Note :
+It is advisable to ensure that there is enough contiguous data in
+.Fa mbuf .
+See
+.Fn m_pullup
+for details.
+.It Fn MGET mbuf how type
+Allocate an
+.Vt mbuf
+and initialize it to contain internal data.
+.Fa mbuf
+will point to the allocated
+.Vt mbuf
+on success, or be set to
+.Dv NULL
+on failure.
+The
+.Fa how
+argument is to be set to
+.Dv M_WAIT
+or
+.Dv M_DONTWAIT .
+It specifies whether the caller is willing to block if necessary.
+A number of other functions and macros related to
+.Vt mbufs
+have the same argument because they may
+at some point need to allocate new
+.Vt mbufs .
+.Pp
+Programmers should be careful not to confuse the
+.Vt mbuf
+allocation flag
+.Dv M_DONTWAIT
+with the
+.Xr malloc 9
+allocation flag,
+.Dv M_NOWAIT .
+They are not the same.
+.It Fn MGETHDR mbuf how type
+Allocate an
+.Vt mbuf
+and initialize it to contain a packet header
+and internal data.
+See
+.Fn MGET
+for details.
+.It Fn MCLGET mbuf how
+Allocate and attach an
+.Vt mbuf cluster
+to
+.Fa mbuf .
+If the macro fails, the
+.Dv M_EXT
+flag will not be set in
+.Fa mbuf .
+.It Fn M_ALIGN mbuf len
+Set the pointer
+.Fa mbuf->m_data
+to place an object of the size
+.Fa len
+at the end of the internal data area of
+.Fa mbuf ,
+long word aligned.
+Applicable only if
+.Fa mbuf
+is newly allocated with
+.Fn MGET
+or
+.Fn m_get .
+.It Fn MH_ALIGN mbuf len
+Serves the same purpose as
+.Fn M_ALIGN
+does, but only for
+.Fa mbuf
+newly allocated with
+.Fn MGETHDR
+or
+.Fn m_gethdr ,
+or initialized by
+.Fn m_dup_pkthdr
+or
+.Fn m_move_pkthdr .
+.It Fn m_align mbuf len
+Services the same purpose as
+.Fn M_ALIGN
+but handles any type of mbuf.
+.It Fn M_LEADINGSPACE mbuf
+Returns the number of bytes available before the beginning
+of data in
+.Fa mbuf .
+.It Fn M_TRAILINGSPACE mbuf
+Returns the number of bytes available after the end of data in
+.Fa mbuf .
+.It Fn M_PREPEND mbuf len how
+This macro operates on an
+.Vt mbuf chain .
+It is an optimized wrapper for
+.Fn m_prepend
+that can make use of possible empty space before data
+(e.g.\& left after trimming of a link-layer header).
+The new
+.Vt mbuf chain
+pointer or
+.Dv NULL
+is in
+.Fa mbuf
+after the call.
+.It Fn M_MOVE_PKTHDR to from
+Using this macro is equivalent to calling
+.Fn m_move_pkthdr to from .
+.It Fn M_WRITABLE mbuf
+This macro will evaluate true if
+.Fa mbuf
+is not marked
+.Dv M_RDONLY
+and if either
+.Fa mbuf
+does not contain external storage or,
+if it does,
+then if the reference count of the storage is not greater than 1.
+The
+.Dv M_RDONLY
+flag can be set in
+.Fa mbuf->m_flags .
+This can be achieved during setup of the external storage,
+by passing the
+.Dv M_RDONLY
+bit as a
+.Fa flags
+argument to the
+.Fn MEXTADD
+macro, or can be directly set in individual
+.Vt mbufs .
+.It Fn MCHTYPE mbuf type
+Change the type of
+.Fa mbuf
+to
+.Fa type .
+This is a relatively expensive operation and should be avoided.
+.El
+.Pp
+The functions are:
+.Bl -ohang -offset indent
+.It Fn m_get how type
+A function version of
+.Fn MGET
+for non-critical paths.
+.It Fn m_getm orig len how type
+Allocate
+.Fa len
+bytes worth of
+.Vt mbufs
+and
+.Vt mbuf clusters
+if necessary and append the resulting allocated
+.Vt mbuf chain
+to the
+.Vt mbuf chain
+.Fa orig ,
+if it is
+.No non- Ns Dv NULL .
+If the allocation fails at any point,
+free whatever was allocated and return
+.Dv NULL .
+If
+.Fa orig
+is
+.No non- Ns Dv NULL ,
+it will not be freed.
+It is possible to use
+.Fn m_getm
+to either append
+.Fa len
+bytes to an existing
+.Vt mbuf
+or
+.Vt mbuf chain
+(for example, one which may be sitting in a pre-allocated ring)
+or to simply perform an all-or-nothing
+.Vt mbuf
+and
+.Vt mbuf cluster
+allocation.
+.It Fn m_gethdr how type
+A function version of
+.Fn MGETHDR
+for non-critical paths.
+.It Fn m_getcl how type flags
+Fetch an
+.Vt mbuf
+with a
+.Vt mbuf cluster
+attached to it.
+If one of the allocations fails, the entire allocation fails.
+This routine is the preferred way of fetching both the
+.Vt mbuf
+and
+.Vt mbuf cluster
+together, as it avoids having to unlock/relock between allocations.
+Returns
+.Dv NULL
+on failure.
+.It Fn m_getclr how type
+Allocate an
+.Vt mbuf
+and zero out the data region.
+.It Fn m_free mbuf
+Frees
+.Vt mbuf .
+Returns
+.Va m_next
+of the freed
+.Vt mbuf .
+.El
+.Pp
+The functions below operate on
+.Vt mbuf chains .
+.Bl -ohang -offset indent
+.It Fn m_freem mbuf
+Free an entire
+.Vt mbuf chain ,
+including any external storage.
+.\"
+.It Fn m_adj mbuf len
+Trim
+.Fa len
+bytes from the head of an
+.Vt mbuf chain
+if
+.Fa len
+is positive, from the tail otherwise.
+.\"
+.It Fn m_append mbuf len cp
+Append
+.Vt len
+bytes of data
+.Vt cp
+to the
+.Vt mbuf chain .
+Extend the mbuf chain if the new data does not fit in
+existing space.
+.\"
+.It Fn m_prepend mbuf len how
+Allocate a new
+.Vt mbuf
+and prepend it to the
+.Vt mbuf chain ,
+handle
+.Dv M_PKTHDR
+properly.
+.Sy Note :
+It does not allocate any
+.Vt mbuf clusters ,
+so
+.Fa len
+must be less than
+.Dv MLEN
+or
+.Dv MHLEN ,
+depending on the
+.Dv M_PKTHDR
+flag setting.
+.\"
+.It Fn m_copyup mbuf len dstoff
+Similar to
+.Fn m_pullup
+but copies
+.Fa len
+bytes of data into a new mbuf at
+.Fa dstoff
+bytes into the mbuf.
+The
+.Fa dstoff
+argument aligns the data and leaves room for a link layer header.
+Returns the new
+.Vt mbuf chain
+on success,
+and frees the
+.Vt mbuf chain
+and returns
+.Dv NULL
+on failure.
+.Sy Note :
+The function does not allocate
+.Vt mbuf clusters ,
+so
+.Fa len + dstoff
+must be less than
+.Dv MHLEN .
+.\"
+.It Fn m_pullup mbuf len
+Arrange that the first
+.Fa len
+bytes of an
+.Vt mbuf chain
+are contiguous and lay in the data area of
+.Fa mbuf ,
+so they are accessible with
+.Fn mtod mbuf type .
+It is important to remember that this may involve
+reallocating some mbufs and moving data so all pointers
+referencing data within the old mbuf chain
+must be recalculated or made invalid.
+Return the new
+.Vt mbuf chain
+on success,
+.Dv NULL
+on failure
+(the
+.Vt mbuf chain
+is freed in this case).
+.Sy Note :
+It does not allocate any
+.Vt mbuf clusters ,
+so
+.Fa len
+must be less than
+.Dv MHLEN .
+.\"
+.It Fn m_pulldown mbuf offset len offsetp
+Arrange that
+.Fa len
+bytes between
+.Fa offset
+and
+.Fa offset + len
+in the
+.Vt mbuf chain
+are contiguous and lay in the data area of
+.Fa mbuf ,
+so they are accessible with
+.Fn mtod mbuf type .
+.Fa len must be smaller than, or equal to, the size of an
+.Vt mbuf cluster .
+Return a pointer to an intermediate
+.Vt mbuf
+in the chain containing the requested region;
+the offset in the data region of the
+.Vt mbuf chain
+to the data contained in the returned mbuf is stored in
+.Fa *offsetp .
+If
+.Fa offp
+is NULL, the region may be accessed using
+.Fn mtod mbuf type .
+If
+.Fa offp
+is non-NULL, the region may be accessed using
+.Fn mtod mbuf uint8_t + *offsetp .
+The region of the mbuf chain between its beginning and
+.Fa off
+is not modified, therefore it is safe to hold pointers to data within
+this region before calling
+.Fn m_pulldown .
+.\"
+.It Fn m_copym mbuf offset len how
+Make a copy of an
+.Vt mbuf chain
+starting
+.Fa offset
+bytes from the beginning, continuing for
+.Fa len
+bytes.
+If
+.Fa len
+is
+.Dv M_COPYALL ,
+copy to the end of the
+.Vt mbuf chain .
+.Sy Note :
+The copy is read-only, because the
+.Vt mbuf clusters
+are not copied, only their reference counts are incremented.
+.\"
+.It Fn m_copypacket mbuf how
+Copy an entire packet including header, which must be present.
+This is an optimized version of the common case
+.Fn m_copym mbuf 0 M_COPYALL how .
+.Sy Note :
+the copy is read-only, because the
+.Vt mbuf clusters
+are not copied, only their reference counts are incremented.
+.\"
+.It Fn m_dup mbuf how
+Copy a packet header
+.Vt mbuf chain
+into a completely new
+.Vt mbuf chain ,
+including copying any
+.Vt mbuf clusters .
+Use this instead of
+.Fn m_copypacket
+when you need a writable copy of an
+.Vt mbuf chain .
+.\"
+.It Fn m_copydata mbuf offset len buf
+Copy data from an
+.Vt mbuf chain
+starting
+.Fa off
+bytes from the beginning, continuing for
+.Fa len
+bytes, into the indicated buffer
+.Fa buf .
+.\"
+.It Fn m_copyback mbuf offset len buf
+Copy
+.Fa len
+bytes from the buffer
+.Fa buf
+back into the indicated
+.Vt mbuf chain ,
+starting at
+.Fa offset
+bytes from the beginning of the
+.Vt mbuf chain ,
+extending the
+.Vt mbuf chain
+if necessary.
+.Sy Note :
+It does not allocate any
+.Vt mbuf clusters ,
+just adds
+.Vt mbufs
+to the
+.Vt mbuf chain .
+It is safe to set
+.Fa offset
+beyond the current
+.Vt mbuf chain
+end: zeroed
+.Vt mbufs
+will be allocated to fill the space.
+.\"
+.It Fn m_length mbuf last
+Return the length of the
+.Vt mbuf chain ,
+and optionally a pointer to the last
+.Vt mbuf .
+.\"
+.It Fn m_dup_pkthdr to from how
+Upon the function's completion, the
+.Vt mbuf
+.Fa to
+will contain an identical copy of
+.Fa from->m_pkthdr
+and the per-packet attributes found in the
+.Vt mbuf chain
+.Fa from .
+The
+.Vt mbuf
+.Fa from
+must have the flag
+.Dv M_PKTHDR
+initially set, and
+.Fa to
+must be empty on entry.
+.\"
+.It Fn m_move_pkthdr to from
+Move
+.Va m_pkthdr
+and the per-packet attributes from the
+.Vt mbuf chain
+.Fa from
+to the
+.Vt mbuf
+.Fa to .
+The
+.Vt mbuf
+.Fa from
+must have the flag
+.Dv M_PKTHDR
+initially set, and
+.Fa to
+must be empty on entry.
+Upon the function's completion,
+.Fa from
+will have the flag
+.Dv M_PKTHDR
+and the per-packet attributes cleared.
+.\"
+.It Fn m_fixhdr mbuf
+Set the packet-header length to the length of the
+.Vt mbuf chain .
+.\"
+.It Fn m_devget buf len offset ifp copy
+Copy data from a device local memory pointed to by
+.Fa buf
+to an
+.Vt mbuf chain .
+The copy is done using a specified copy routine
+.Fa copy ,
+or
+.Fn bcopy
+if
+.Fa copy
+is
+.Dv NULL .
+.\"
+.It Fn m_cat m n
+Concatenate
+.Fa n
+to
+.Fa m .
+Both
+.Vt mbuf chains
+must be of the same type.
+.Fa N
+is still valid after the function returned.
+.Sy Note :
+It does not handle
+.Dv M_PKTHDR
+and friends.
+.\"
+.It Fn m_split mbuf len how
+Partition an
+.Vt mbuf chain
+in two pieces, returning the tail:
+all but the first
+.Fa len
+bytes.
+In case of failure, it returns
+.Dv NULL
+and attempts to restore the
+.Vt mbuf chain
+to its original state.
+.\"
+.It Fn m_apply mbuf off len f arg
+Apply a function to an
+.Vt mbuf chain ,
+at offset
+.Fa off ,
+for length
+.Fa len
+bytes.
+Typically used to avoid calls to
+.Fn m_pullup
+which would otherwise be unnecessary or undesirable.
+.Fa arg
+is a convenience argument which is passed to the callback function
+.Fa f .
+.Pp
+Each time
+.Fn f
+is called, it will be passed
+.Fa arg ,
+a pointer to the
+.Fa data
+in the current mbuf, and the length
+.Fa len
+of the data in this mbuf to which the function should be applied.
+.Pp
+The function should return zero to indicate success;
+otherwise, if an error is indicated, then
+.Fn m_apply
+will return the error and stop iterating through the
+.Vt mbuf chain .
+.\"
+.It Fn m_getptr mbuf loc off
+Return a pointer to the mbuf containing the data located at
+.Fa loc
+bytes from the beginning of the
+.Vt mbuf chain .
+The corresponding offset into the mbuf will be stored in
+.Fa *off .
+.It Fn m_defrag m0 how
+Defragment an mbuf chain, returning the shortest possible
+chain of mbufs and clusters.
+If allocation fails and this can not be completed,
+.Dv NULL
+will be returned and the original chain will be unchanged.
+Upon success, the original chain will be freed and the new
+chain will be returned.
+.Fa how
+should be either
+.Dv M_WAIT
+or
+.Dv M_DONTWAIT ,
+depending on the caller's preference.
+.Pp
+This function is especially useful in network drivers, where
+certain long mbuf chains must be shortened before being added
+to TX descriptor lists.
+.It Fn m_unshare m0 how
+Create a version of the specified mbuf chain whose
+contents can be safely modified without affecting other users.
+If allocation fails and this operation can not be completed,
+.Dv NULL
+will be returned.
+The original mbuf chain is always reclaimed and the reference
+count of any shared mbuf clusters is decremented.
+.Fa how
+should be either
+.Dv M_WAIT
+or
+.Dv M_DONTWAIT ,
+depending on the caller's preference.
+As a side-effect of this process the returned
+mbuf chain may be compacted.
+.Pp
+This function is especially useful in the transmit path of
+network code, when data must be encrypted or otherwise
+altered prior to transmission.
+.El
+.Sh HARDWARE-ASSISTED CHECKSUM CALCULATION
+This section currently applies to TCP/IP only.
+In order to save the host CPU resources, computing checksums is
+offloaded to the network interface hardware if possible.
+The
+.Va m_pkthdr
+member of the leading
+.Vt mbuf
+of a packet contains two fields used for that purpose,
+.Vt int Va csum_flags
+and
+.Vt int Va csum_data .
+The meaning of those fields depends on the direction a packet flows in,
+and on whether the packet is fragmented.
+Henceforth,
+.Va csum_flags
+or
+.Va csum_data
+of a packet
+will denote the corresponding field of the
+.Va m_pkthdr
+member of the leading
+.Vt mbuf
+in the
+.Vt mbuf chain
+containing the packet.
+.Pp
+On output, checksum offloading is attempted after the outgoing
+interface has been determined for a packet.
+The interface-specific field
+.Va ifnet.if_data.ifi_hwassist
+(see
+.Xr ifnet 9 )
+is consulted for the capabilities of the interface to assist in
+computing checksums.
+The
+.Va csum_flags
+field of the packet header is set to indicate which actions the interface
+is supposed to perform on it.
+The actions unsupported by the network interface are done in the
+software prior to passing the packet down to the interface driver;
+such actions will never be requested through
+.Va csum_flags .
+.Pp
+The flags demanding a particular action from an interface are as follows:
+.Bl -tag -width ".Dv CSUM_TCP" -offset indent
+.It Dv CSUM_IP
+The IP header checksum is to be computed and stored in the
+corresponding field of the packet.
+The hardware is expected to know the format of an IP header
+to determine the offset of the IP checksum field.
+.It Dv CSUM_TCP
+The TCP checksum is to be computed.
+(See below.)
+.It Dv CSUM_UDP
+The UDP checksum is to be computed.
+(See below.)
+.El
+.Pp
+Should a TCP or UDP checksum be offloaded to the hardware,
+the field
+.Va csum_data
+will contain the byte offset of the checksum field relative to the
+end of the IP header.
+In this case, the checksum field will be initially
+set by the TCP/IP module to the checksum of the pseudo header
+defined by the TCP and UDP specifications.
+.Pp
+For outbound packets which have been fragmented
+by the host CPU, the following will also be true,
+regardless of the checksum flag settings:
+.Bl -bullet -offset indent
+.It
+all fragments will have the flag
+.Dv M_FRAG
+set in their
+.Va m_flags
+field;
+.It
+the first and the last fragments in the chain will have
+.Dv M_FIRSTFRAG
+or
+.Dv M_LASTFRAG
+set in their
+.Va m_flags ,
+correspondingly;
+.It
+the first fragment in the chain will have the total number
+of fragments contained in its
+.Va csum_data
+field.
+.El
+.Pp
+The last rule for fragmented packets takes precedence over the one
+for a TCP or UDP checksum.
+Nevertheless, offloading a TCP or UDP checksum is possible for a
+fragmented packet if the flag
+.Dv CSUM_IP_FRAGS
+is set in the field
+.Va ifnet.if_data.ifi_hwassist
+associated with the network interface.
+However, in this case the interface is expected to figure out
+the location of the checksum field within the sequence of fragments
+by itself because
+.Va csum_data
+contains a fragment count instead of a checksum offset value.
+.Pp
+On input, an interface indicates the actions it has performed
+on a packet by setting one or more of the following flags in
+.Va csum_flags
+associated with the packet:
+.Bl -tag -width ".Dv CSUM_IP_CHECKED" -offset indent
+.It Dv CSUM_IP_CHECKED
+The IP header checksum has been computed.
+.It Dv CSUM_IP_VALID
+The IP header has a valid checksum.
+This flag can appear only in combination with
+.Dv CSUM_IP_CHECKED .
+.It Dv CSUM_DATA_VALID
+The checksum of the data portion of the IP packet has been computed
+and stored in the field
+.Va csum_data
+in network byte order.
+.It Dv CSUM_PSEUDO_HDR
+Can be set only along with
+.Dv CSUM_DATA_VALID
+to indicate that the IP data checksum found in
+.Va csum_data
+allows for the pseudo header defined by the TCP and UDP specifications.
+Otherwise the checksum of the pseudo header must be calculated by
+the host CPU and added to
+.Va csum_data
+to obtain the final checksum to be used for TCP or UDP validation purposes.
+.El
+.Pp
+If a particular network interface just indicates success or
+failure of TCP or UDP checksum validation without returning
+the exact value of the checksum to the host CPU, its driver can mark
+.Dv CSUM_DATA_VALID
+and
+.Dv CSUM_PSEUDO_HDR
+in
+.Va csum_flags ,
+and set
+.Va csum_data
+to
+.Li 0xFFFF
+hexadecimal to indicate a valid checksum.
+It is a peculiarity of the algorithm used that the Internet checksum
+calculated over any valid packet will be
+.Li 0xFFFF
+as long as the original checksum field is included.
+.Pp
+For inbound packets which are IP fragments, all
+.Va csum_data
+fields will be summed during reassembly to obtain the final checksum
+value passed to an upper layer in the
+.Va csum_data
+field of the reassembled packet.
+The
+.Va csum_flags
+fields of all fragments will be consolidated using logical AND
+to obtain the final value for
+.Va csum_flags .
+Thus, in order to successfully
+offload checksum computation for fragmented data,
+all fragments should have the same value of
+.Va csum_flags .
+.Sh STRESS TESTING
+When running a kernel compiled with the option
+.Dv MBUF_STRESS_TEST ,
+the following
+.Xr sysctl 8 Ns
+-controlled options may be used to create
+various failure/extreme cases for testing of network drivers
+and other parts of the kernel that rely on
+.Vt mbufs .
+.Bl -tag -width ident
+.It Va net.inet.ip.mbuf_frag_size
+Causes
+.Fn ip_output
+to fragment outgoing
+.Vt mbuf chains
+into fragments of the specified size.
+Setting this variable to 1 is an excellent way to
+test the long
+.Vt mbuf chain
+handling ability of network drivers.
+.It Va kern.ipc.m_defragrandomfailures
+Causes the function
+.Fn m_defrag
+to randomly fail, returning
+.Dv NULL .
+Any piece of code which uses
+.Fn m_defrag
+should be tested with this feature.
+.El
+.Sh RETURN VALUES
+See above.
+.Sh SEE ALSO
+.Xr ifnet 9 ,
+.Xr mbuf_tags 9
+.Sh HISTORY
+.\" Please correct me if I'm wrong
+.Vt Mbufs
+appeared in an early version of
+.Bx .
+Besides being used for network packets, they were used
+to store various dynamic structures, such as routing table
+entries, interface addresses, protocol control blocks, etc.
+In more recent
+.Fx
+use of
+.Vt mbufs
+is almost entirely limited to packet storage, with
+.Xr uma 9
+zones being used directly to store other network-related memory.
+.Pp
+Historically, the
+.Vt mbuf
+allocator has been a special-purpose memory allocator able to run in
+interrupt contexts and allocating from a special kernel address space map.
+As of
+.Fx 5.3 ,
+the
+.Vt mbuf
+allocator is a wrapper around
+.Xr uma 9 ,
+allowing caching of
+.Vt mbufs ,
+clusters, and
+.Vt mbuf
++ cluster pairs in per-CPU caches, as well as bringing other benefits of
+slab allocation.
+.Sh AUTHORS
+The original
+.Nm
+manual page was written by Yar Tikhiy.
+The
+.Xr uma 9
+.Vt mbuf
+allocator was written by Bosko Milekic.
diff --git a/share/man/man9/mbuf_tags.9 b/share/man/man9/mbuf_tags.9
new file mode 100644
index 0000000..d84c56b
--- /dev/null
+++ b/share/man/man9/mbuf_tags.9
@@ -0,0 +1,286 @@
+.\" $OpenBSD: mbuf_tags.9,v 1.18 2003/12/08 07:07:35 mcbride Exp $
+.\"
+.\" The authors of this manual page are Angelos D. Keromytis
+.\" (angelos@cis.upenn.edu), Gleb Smirnoff <glebius@cell.sick.ru>, and
+.\" Robert Watson <rwatson@FreeBSD.org>
+.\"
+.\" Copyright (c) 2004 Robert N. M. Watson
+.\" Copyright (c) 2001 Angelos D. Keromytis
+.\"
+.\" Permission to use, copy, and modify this software with or without
+.\" fee is hereby granted, provided that this entire notice is included
+.\" in all source code copies of any software which is or includes a copy
+.\" or modification of this software.
+.\"
+.\" THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR
+.\" IMPLIED WARRANTY. IN PARTICULAR, NONE OF THE AUTHORS MAKES ANY
+.\" REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE
+.\" MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR
+.\" PURPOSE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 12, 2008
+.Dt MBUF_TAGS 9
+.Os
+.Sh NAME
+.Nm mbuf_tags
+.Nd a framework for generic packet attributes
+.Sh SYNOPSIS
+.In sys/mbuf.h
+.Ft "struct m_tag *"
+.Fn m_tag_alloc "u_int32_t cookie" "int type" "int len" "int wait"
+.Ft "struct m_tag *"
+.Fn m_tag_copy "struct m_tag *t" "int how"
+.Ft int
+.Fn m_tag_copy_chain "struct mbuf *to" "struct mbuf *from" "int how"
+.Ft void
+.Fn m_tag_delete "struct mbuf *m" "struct m_tag *t"
+.Ft void
+.Fn m_tag_delete_chain "struct mbuf *m" "struct m_tag *t"
+.Ft void
+.Fn m_tag_delete_nonpersistent "struct mbuf *m"
+.Ft "struct m_tag *"
+.Fn m_tag_find "struct mbuf *m" "int type" "struct m_tag *start"
+.Ft "struct m_tag *"
+.Fn m_tag_first "struct mbuf *m"
+.Ft void
+.Fn m_tag_free "struct m_tag *t"
+.Ft "struct m_tag *"
+.Fn m_tag_get "int type" "int len" "int wait"
+.Ft void
+.Fn m_tag_init "struct mbuf *m"
+.Ft struct m_tag *
+.Fn m_tag_locate "struct mbuf *m" "u_int32_t cookie" "int type" "struct m_tag *t"
+.Ft "struct m_tag *"
+.Fn m_tag_next "struct mbuf *m" "struct m_tag *t"
+.Ft void
+.Fn m_tag_prepend "struct mbuf *m" "struct m_tag *t"
+.Ft void
+.Fn m_tag_unlink "struct mbuf *m" "struct m_tag *t"
+.Sh DESCRIPTION
+Mbuf tags allow additional meta-data to be associated with in-flight packets
+by providing a mechanism for the tagging of additional kernel memory onto
+packet header mbufs.
+Tags are maintained in chains off of the
+.Xr mbuf 9
+header, and maintained using a series of API calls to allocate, search, and
+delete tags.
+Tags are identified using an ID and cookie that uniquely identify a class
+of data tagged onto the packet, and may contain an arbitrary amount of
+additional storage.
+Typical uses of mbuf tags include Mandatory Access Control (MAC) labels as
+described in
+.Xr mac 9 ,
+IPsec policy information as described in
+.Xr ipsec 4 ,
+and packet filter tags used by
+.Xr pf 4 .
+.Pp
+Tags will be maintained across a variety of operations, including the copying
+of packet headers using facilities such as
+.Fn M_COPY_PKTHDR
+and
+.Fn M_MOVE_PKTHDR .
+Any tags associated with an mbuf header will be automatically freed when the
+mbuf is freed, although some subsystems will wish to delete the tags prior
+to that time.
+.Pp
+Packet tags are used by different kernel APIs
+to keep track of operations done or
+scheduled to happen to packets.
+Each packet tag can be distinguished by its type and cookie.
+The cookie is used to identify a specific module or API.
+The packet tags are attached to mbuf packet headers.
+.Pp
+The first
+.Fn sizeof "struct m_tag"
+bytes of a tag contain a
+.Vt "struct m_tag" :
+.Bd -literal
+struct m_tag {
+ SLIST_ENTRY(m_tag) m_tag_link; /* List of packet tags */
+ u_int16_t m_tag_id; /* Tag ID */
+ u_int16_t m_tag_len; /* Length of data */
+ u_int32_t m_tag_cookie; /* ABI/Module ID */
+ void (*m_tag_free)(struct m_tag *);
+};
+.Ed
+.Pp
+The
+.Va m_tag_link
+field is used to link tags together (see
+.Xr queue 3
+for more details).
+The
+.Va m_tag_id , m_tag_len
+and
+.Va m_tag_cookie
+fields are set to type, length,
+and
+cookie, respectively.
+.Va m_tag_free
+points to
+.Fn m_tag_free_default .
+Following this structure are
+.Va m_tag_len
+bytes of space that can be used to store tag-specific information.
+Addressing this data region may be tricky.
+A safe way is embedding
+.Vt "struct m_tag"
+into a private data structure, as follows:
+.Bd -literal -offset indent
+struct foo {
+ struct m_tag tag;
+ ...
+};
+struct foo *p = (struct foo *)m_tag_alloc(...);
+struct m_tag *mtag = &p->tag;
+.Ed
+.Pp
+Note that
+.Ox
+does not support cookies, it needs
+.Va m_tag_id
+to be globally unique.
+To keep compatibility with
+.Ox ,
+a cookie
+.Dv MTAG_ABI_COMPAT
+is provided along with some compatibility functions.
+When writing an
+.Ox
+compatible code, one should be careful not to take already
+used tag type.
+Tag types are defined in
+.In sys/mbuf.h .
+.Ss Packet Tag Manipulation Functions
+.Bl -ohang -offset indent
+.It Fn m_tag_alloc cookie type len wait
+Allocate a new tag of type
+.Fa type
+and cookie
+.Fa cookie
+with
+.Va len
+bytes of space following the tag header itself.
+The
+.Fa wait
+argument is passed directly to
+.Xr malloc 9 .
+If successful,
+.Fn m_tag_alloc
+returns a memory buffer of
+.Pq Va len No + Fn sizeof "struct m_tag"
+bytes.
+Otherwise,
+.Dv NULL
+is returned.
+A compatibility function
+.Fn m_tag_get
+is also provided.
+.It Fn m_tag_copy tag how
+Allocate a copy of
+.Fa tag .
+The
+.Fa how
+argument is passed directly to
+.Fn m_tag_alloc .
+The return values are the same as in
+.Fn m_tag_alloc .
+.It Fn m_tag_copy_chain tombuf frommbuf how
+Allocate and copy all tags from mbuf
+.Fa frommbuf
+to mbuf
+.Fa tombuf .
+Returns 1 on success, and 0 on failure.
+In the latter case, mbuf
+.Fa tombuf
+loses all its tags, even previously present.
+.It Fn m_tag_delete mbuf tag
+Remove
+.Fa tag
+from
+.Fa mbuf Ns 's
+list and free it.
+.It Fn m_tag_delete_chain mbuf tag
+Remove and free a packet tag chain, starting from
+.Fa tag .
+If
+.Fa tag
+is
+.Dv NULL ,
+all tags are deleted.
+.It Fn m_tag_delete_nonpersistent mbuf
+Traverse
+.Fa mbuf Ns 's
+tags and delete those which do not have the
+.Dv MTAG_PERSISTENT
+flag set.
+.It Fn m_tag_first mbuf
+Return the first tag associated with
+.Fa mbuf .
+.It Fn m_tag_free tag
+Free
+.Fa tag
+using its
+.Va m_tag_free
+method.
+The
+.Fn m_tag_free_default
+function
+is used by default.
+.It Fn m_tag_init mbuf
+Initialize the tag storage for packet
+.Fa mbuf .
+.It Fn m_tag_locate mbuf cookie type tag
+Search for a tag defined by
+.Fa type
+and
+.Fa cookie
+in
+.Fa mbuf ,
+starting from position specified by
+.Fa tag .
+If the latter is
+.Dv NULL ,
+then search through the whole list.
+Upon success, a pointer to the first found tag is returned.
+In either case,
+.Dv NULL
+is returned.
+A compatibility function
+.Fn m_tag_find
+is also provided.
+.It Fn m_tag_next mbuf tag
+Return tag next to
+.Fa tag
+in
+.Fa mbuf .
+If absent,
+.Dv NULL
+is returned.
+.It Fn m_tag_prepend mbuf tag
+Add the new tag
+.Fa tag
+at the head of the tag list for packet
+.Fa mbuf .
+.It Fn m_tag_unlink mbuf tag
+Remove tag
+.Fa tag
+from the list of tags of packet
+.Fa mbuf .
+.El
+.Sh CODE REFERENCES
+The tag-manipulating code is contained in the file
+.Pa sys/kern/uipc_mbuf2.c .
+Inlined functions are defined in
+.In sys/mbuf.h .
+.Sh SEE ALSO
+.Xr queue 3 ,
+.Xr mbuf 9
+.Sh HISTORY
+The packet tags first appeared in
+.Ox 2.9
+and were written by
+.An Angelos D. Keromytis Aq angelos@openbsd.org .
diff --git a/share/man/man9/mdchain.9 b/share/man/man9/mdchain.9
new file mode 100644
index 0000000..57291c7
--- /dev/null
+++ b/share/man/man9/mdchain.9
@@ -0,0 +1,211 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 Boris Popov
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd February 28, 2001
+.Dt MDCHAIN 9
+.Os
+.Sh NAME
+.Nm mdchain ,
+.Nm md_initm ,
+.Nm md_done ,
+.Nm md_append_record ,
+.Nm md_next_record ,
+.Nm md_get_uint8 ,
+.Nm md_get_uint16 ,
+.Nm md_get_uint16be ,
+.Nm md_get_uint16le ,
+.Nm md_get_uint32 ,
+.Nm md_get_uint32be ,
+.Nm md_get_uint32le ,
+.Nm md_get_int64 ,
+.Nm md_get_int64be ,
+.Nm md_get_int64le ,
+.Nm md_get_mem ,
+.Nm md_get_mbuf ,
+.Nm md_get_uio
+.Nd "set of functions to dissect an mbuf chain to various data types"
+.Sh SYNOPSIS
+.Cd options LIBMCHAIN
+.Li kldload libmchain
+.Pp
+.In sys/param.h
+.In sys/uio.h
+.In sys/mchain.h
+.Ft void
+.Fn md_initm "struct mdchain *mdp" "struct mbuf *m"
+.Ft void
+.Fn md_done "struct mdchain *mdp"
+.Ft void
+.Fn md_append_record "struct mdchain *mdp" "struct mbuf *top"
+.Ft int
+.Fn md_next_record "struct mdchain *mdp"
+.Ft int
+.Fn md_get_uint8 "struct mdchain *mdp" "u_int8_t *x"
+.Ft int
+.Fn md_get_uint16 "struct mdchain *mdp" "u_int16_t *x"
+.Ft int
+.Fn md_get_uint16be "struct mdchain *mdp" "u_int16_t *x"
+.Ft int
+.Fn md_get_uint16le "struct mdchain *mdp" "u_int16_t *x"
+.Ft int
+.Fn md_get_uint32 "struct mdchain *mdp" "u_int32_t *x"
+.Ft int
+.Fn md_get_uint32be "struct mdchain *mdp" "u_int32_t *x"
+.Ft int
+.Fn md_get_uint32le "struct mdchain *mdp" "u_int32_t *x"
+.Ft int
+.Fn md_get_int64 "struct mdchain *mdp" "int64_t *x"
+.Ft int
+.Fn md_get_int64be "struct mdchain *mdp" "int64_t *x"
+.Ft int
+.Fn md_get_int64le "struct mdchain *mdp" "int64_t *x"
+.Ft int
+.Fn md_get_mem "struct mdchain *mdp" "caddr_t target" "int size" "int type"
+.Ft int
+.Fn md_get_mbuf "struct mdchain *mdp" "int size" "struct mbuf **m"
+.Ft int
+.Fn md_get_uio "struct mdchain *mdp" "struct uio *uiop" "int size"
+.Sh DESCRIPTION
+These functions are used to decompose mbuf chains to various data types.
+The
+.Vt mdchain
+structure is used as a working context
+and should be initialized through a call of the
+.Fn mb_initm
+function.
+It has the following fields:
+.Bl -tag -width "md_top"
+.It Va "md_top"
+.Pq Vt "struct mbuf *"
+A pointer to the top of the parsed mbuf chain.
+.It Va md_cur
+.Pq Vt "struct mbuf *"
+A pointer to the currently parsed mbuf.
+.It Va md_pas
+.Pq Vt int
+Offset in the current mbuf.
+.El
+.Pp
+The
+.Fn md_done
+function disposes of an mbuf chain pointed to by the
+.Fa mdp->md_top
+field and sets the field to
+.Dv NULL .
+.Pp
+The
+.Fn md_append_record
+appends a new mbuf chain using
+.Va m_nextpkt
+field to form a single linked list of mbuf chains.
+If the
+.Fa mdp->md_top
+field is
+.Dv NULL ,
+then this function behaves exactly as the
+.Fn md_initm
+function.
+.Pp
+The
+.Fn md_next_record
+function extracts the next mbuf chain and disposes the current one, if any.
+For a new mbuf chain it calls the
+.Fn md_initm
+function.
+If there is no data left the function returns
+.Er ENOENT .
+.Pp
+All
+.Fn md_get_*
+functions perform an actual copy of the data from an mbuf chain.
+Functions which have
+.Cm le
+or
+.Cm be
+suffixes will perform conversion to the little\- or big\-endian data formats.
+.Pp
+.Fn md_get_mem
+function copies
+.Fa size
+bytes of data specified by the
+.Fa source
+argument from an mbuf chain.
+The
+.Fa type
+argument specifies the method used to perform a copy,
+and can be one of the following:
+.Bl -tag -width ".Dv MB_MINLINE"
+.It Dv MB_MSYSTEM
+Use the
+.Fn bcopy
+function.
+.It Dv MB_MUSER
+Use the
+.Xr copyin 9
+function.
+.It Dv MB_MINLINE
+Use an
+.Dq inline
+loop which does not call any function.
+.El
+.Pp
+If
+.Fa target
+is
+.Dv NULL ,
+an actual copy is not performed
+and the function just skips the given number of bytes.
+.Sh RETURN VALUES
+All
+.Ft int
+functions return zero if successful,
+otherwise an error code is returned.
+.Pp
+.Em Note :
+after failure of any function,
+an mbuf chain is left in the broken state and only the
+.Fn md_done
+function can safely be called to destroy it.
+.Sh EXAMPLES
+.Bd -literal
+struct mdchain *mdp;
+struct mbuf *m;
+u_int16_t length;
+u_int8_t byte;
+
+receive(so, &m);
+md_initm(mdp, m);
+if (md_get_uint8(mdp, &byte) != 0 ||
+ md_get_uint16le(mdp, &length) != 0)
+ error = EBADRPC;
+mb_done(mdp);
+.Ed
+.Sh SEE ALSO
+.Xr mbchain 9 ,
+.Xr mbuf 9
+.Sh AUTHORS
+This manual page was written by
+.An Boris Popov Aq bp@FreeBSD.org .
diff --git a/share/man/man9/memguard.9 b/share/man/man9/memguard.9
new file mode 100644
index 0000000..72a41e5
--- /dev/null
+++ b/share/man/man9/memguard.9
@@ -0,0 +1,112 @@
+.\" Copyright (c) 2005 Christian Brueffer
+.\" 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$
+.\"
+.Dd January 31, 2006
+.Dt MEMGUARD 9
+.Os
+.Sh NAME
+.Nm MemGuard
+.Nd "memory allocator for debugging purposes"
+.Sh SYNOPSIS
+.Cd "options DEBUG_MEMGUARD"
+.Sh DESCRIPTION
+.Nm
+is a simple and small replacement memory allocator designed
+to help detect tamper-after-free scenarios.
+These problems are more and more common and likely with
+multithreaded kernels where race conditions are more prevalent.
+.Pp
+Currently,
+.Nm
+can only take over
+.Fn malloc ,
+.Fn realloc
+and
+.Fn free
+for a particular malloc type.
+.Sh EXAMPLES
+To use
+.Nm
+for memory type compiled into the kernel, one has to add the
+following line to the
+.Pa /boot/loader.conf :
+.Bd -literal -offset indent
+vm.memguard.desc=<memory_type>
+.Ed
+.Pp
+Where
+.Ar memory_type
+is a short description of memory type to monitor.
+The short description of memory type is the second argument to
+.Xr MALLOC_DEFINE 9 ,
+so one has to find it in the kernel source.
+.Pp
+To use
+.Nm
+for memory type defined in a kernel module, one has to set
+.Va vm.memguard.desc
+.Xr sysctl 8
+variable before loading the module:
+.Bd -literal -offset indent
+sysctl vm.memguard.desc=<memory_type>
+.Ed
+.Pp
+The
+.Va vm.memguard.divisor
+boot-time tunable is used to scale how much of
+.Va kmem_map
+one wants to allocate for
+.Nm .
+The default is 10, so
+.Va kmem_size Ns /10
+bytes will be used.
+The
+.Va kmem_size
+value can be obtained via the
+.Va vm.kmem_size
+.Xr sysctl 8
+variable.
+.Sh SEE ALSO
+.Xr sysctl 8 ,
+.Xr vmstat 8 ,
+.Xr contigmalloc 9 ,
+.Xr malloc 9 ,
+.Xr redzone 9
+.Sh HISTORY
+.Nm
+first appeared in
+.Fx 6.0 .
+.Sh AUTHORS
+.An -nosplit
+.Nm
+was written by
+.An Bosko Milekic Aq bmilekic@FreeBSD.org .
+This manual page was written by
+.An Christian Brueffer Aq brueffer@FreeBSD.org .
+.Sh BUGS
+Currently, it is not possible to override UMA
+.Xr zone 9
+allocations.
diff --git a/share/man/man9/mi_switch.9 b/share/man/man9/mi_switch.9
new file mode 100644
index 0000000..fe97bc5
--- /dev/null
+++ b/share/man/man9/mi_switch.9
@@ -0,0 +1,165 @@
+.\" $NetBSD: ctxsw.9,v 1.2 1996/12/02 00:11:31 tls Exp $
+.\"
+.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 24, 1996
+.Dt MI_SWITCH 9
+.Os
+.Sh NAME
+.Nm mi_switch ,
+.Nm cpu_switch ,
+.Nm cpu_throw
+.Nd switch to another thread context
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Ft void
+.Fn mi_switch "void"
+.Ft void
+.Fn cpu_switch "void"
+.Ft void
+.Fn cpu_throw "void"
+.Sh DESCRIPTION
+The
+.Fn mi_switch
+function implements the machine independent prelude to a thread context
+switch.
+It is called from only a few distinguished places in the kernel
+code as a result of the principle of non-preemptable kernel mode execution.
+The various major uses of
+.Nm
+can be enumerated as follows:
+.Bl -enum -offset indent
+.It
+From within a function such as
+.Xr cv_wait 9 ,
+.Xr mtx_lock ,
+or
+.Xr tsleep 9
+when the current thread
+voluntarily relinquishes the CPU to wait for some resource or lock to become
+available.
+.It
+After handling a trap
+(e.g.\& a system call, device interrupt)
+when the kernel prepares a return to user-mode execution.
+This case is
+typically handled by machine dependent trap-handling code after detection
+of a change in the signal disposition of the current process, or when a
+higher priority thread might be available to run.
+The latter event is
+communicated by the machine independent scheduling routines by calling
+the machine defined
+.Fn need_resched .
+.It
+In the signal handling code
+(see
+.Xr issignal 9 )
+if a signal is delivered that causes a process to stop.
+.It
+When a thread dies in
+.Xr thread_exit 9
+and control of the processor can be passed to the next runnable thread.
+.It
+In
+.Xr thread_suspend_check 9
+where a thread needs to stop execution due to the suspension state of
+the process as a whole.
+.El
+.Pp
+.Fn mi_switch
+records the amount of time the current thread has been running in the
+process structures and checks this value against the CPU time limits
+allocated to the process
+(see
+.Xr getrlimit 2 ) .
+Exceeding the soft limit results in a
+.Dv SIGXCPU
+signal to be posted to the process, while exceeding the hard limit will
+cause a
+.Dv SIGKILL .
+.Pp
+If the thread is still in the
+.Dv TDS_RUNNING
+state,
+.Fn mi_switch
+will put it back onto the run queue, assuming that
+it will want to run again soon.
+If it is in one of the other
+states and KSE threading is enabled, the associated
+.Em KSE
+will be made available to any higher priority threads from the same
+group, to allow them to be scheduled next.
+.Pp
+After these administrative tasks are done,
+.Fn mi_switch
+hands over control to the machine dependent routine
+.Fn cpu_switch ,
+which will perform the actual thread context switch.
+.Pp
+.Fn cpu_switch
+first saves the context of the current thread.
+Next, it calls
+.Fn choosethread
+to determine which thread to run next.
+Finally, it reads in the saved context of the new thread and starts to
+execute the new thread.
+.Pp
+.Fn cpu_throw
+is similar to
+.Fn cpu_switch
+except that it does not save the context of the old thread.
+This function is useful when the kernel does not have an old thread
+context to save, such as when CPUs other than the boot CPU perform their
+first task switch, or when the kernel does not care about the state of the
+old thread, such as in
+.Fn thread_exit
+when the kernel terminates the current thread and switches into a new
+thread.
+.Pp
+To protect the
+.Xr runqueue 9 ,
+all of these functions must be called with the
+.Va sched_lock
+mutex held.
+.Sh SEE ALSO
+.Xr cv_wait 9 ,
+.Xr issignal 9 ,
+.Xr mutex 9 ,
+.Xr runqueue 9 ,
+.Xr tsleep 9 ,
+.Xr wakeup 9
diff --git a/share/man/man9/microseq.9 b/share/man/man9/microseq.9
new file mode 100644
index 0000000..041e2be
--- /dev/null
+++ b/share/man/man9/microseq.9
@@ -0,0 +1,493 @@
+.\" Copyright (c) 1998, 1999, Nicolas Souchu
+.\" 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$
+.\"
+.Dd June 6, 1998
+.Dt MICROSEQ 9
+.Os
+.Sh NAME
+.Nm microseq
+.Nd ppbus microsequencer developer's guide
+.Sh SYNOPSIS
+.In sys/types.h
+.In dev/ppbus/ppbconf.h
+.In dev/ppbus/ppb_msq.h
+.Sh DESCRIPTION
+See
+.Xr ppbus 4
+for ppbus description and general info about the microsequencer.
+.Pp
+The purpose of this document is to encourage developers to use the
+microsequencer mechanism in order to have:
+.Bl -enum -offset indent
+.It
+a uniform programming model
+.It
+efficient code
+.El
+.Pp
+Before using microsequences, you are encouraged to look at
+.Xr ppc 4
+microsequencer implementation and an example of how using it in
+.Xr vpo 4 .
+.Sh PPBUS register model
+.Ss Background
+The parallel port model chosen for ppbus is the PC parallel port model.
+Thus, any register described later has the same semantic than its counterpart
+in a PC parallel port.
+For more info about ISA/ECP programming, get the
+Microsoft standard referenced as "Extended Capabilities Port Protocol and
+ISA interface Standard".
+Registers described later are standard parallel port
+registers.
+.Pp
+Mask macros are defined in the standard ppbus include files for each valid
+bit of parallel port registers.
+.Ss Data register
+In compatible or nibble mode, writing to this register will drive data to the
+parallel port data lines.
+In any other mode, drivers may be tri-stated by
+setting the direction bit (PCD) in the control register.
+Reads to this register
+return the value on the data lines.
+.Ss Device status register
+This read-only register reflects the inputs on the parallel port interface.
+.Pp
+.Bl -column "Bit" "Name" "Description" -compact
+.It Em Bit Ta Em Name Ta Em Description
+.It 7 Ta nBUSY Ta "inverted version of parallel port Busy signal"
+.It 6 Ta nACK Ta "version of parallel port nAck signal"
+.It 5 Ta PERROR Ta "version of parallel port PERROR signal"
+.It 4 Ta SELECT Ta "version of parallel port Select signal"
+.It 3 Ta nFAULT Ta "version of parallel port nFault signal"
+.El
+.Pp
+Others are reserved and return undefined result when read.
+.Ss Device control register
+This register directly controls several output signals as well as enabling
+some functions.
+.Pp
+.Bl -column "Bit" "Name " "Description" -compact
+.It Em Bit Ta Em Name Ta Em Description
+.It 5 Ta PCD Ta "direction bit in extended modes"
+.It 4 Ta IRQENABLE Ta "1 enables an interrupt on the rising edge of nAck"
+.It 3 Ta SELECTIN Ta "inverted and driven as parallel port nSelectin signal"
+.It 2 Ta nINIT Ta "driven as parallel port nInit signal"
+.It 1 Ta AUTOFEED Ta "inverted and driven as parallel port nAutoFd signal"
+.It 0 Ta STROBE Ta "inverted and driven as parallel port nStrobe signal"
+.El
+.Sh MICROINSTRUCTIONS
+.Ss Description
+.Em Microinstructions
+are either parallel port accesses, program iterations, submicrosequence or
+C calls.
+The parallel port must be considered as the logical model described in
+.Xr ppbus 4 .
+.Pp
+Available microinstructions are:
+.Bd -literal
+#define MS_OP_GET 0 /* get <ptr>, <len> */
+#define MS_OP_PUT 1 /* put <ptr>, <len> */
+#define MS_OP_RFETCH 2 /* rfetch <reg>, <mask>, <ptr> */
+#define MS_OP_RSET 3 /* rset <reg>, <mask>, <mask> */
+#define MS_OP_RASSERT 4 /* rassert <reg>, <mask> */
+#define MS_OP_DELAY 5 /* delay <val> */
+#define MS_OP_SET 6 /* set <val> */
+#define MS_OP_DBRA 7 /* dbra <offset> */
+#define MS_OP_BRSET 8 /* brset <mask>, <offset> */
+#define MS_OP_BRCLEAR 9 /* brclear <mask>, <offset> */
+#define MS_OP_RET 10 /* ret <retcode> */
+#define MS_OP_C_CALL 11 /* c_call <function>, <parameter> */
+#define MS_OP_PTR 12 /* ptr <pointer> */
+#define MS_OP_ADELAY 13 /* adelay <val> */
+#define MS_OP_BRSTAT 14 /* brstat <mask>, <mask>, <offset> */
+#define MS_OP_SUBRET 15 /* subret <code> */
+#define MS_OP_CALL 16 /* call <microsequence> */
+#define MS_OP_RASSERT_P 17 /* rassert_p <iter>, <reg> */
+#define MS_OP_RFETCH_P 18 /* rfetch_p <iter>, <reg>, <mask> */
+#define MS_OP_TRIG 19 /* trigger <reg>, <len>, <array> */
+.Ed
+.Ss Execution context
+The
+.Em execution context
+of microinstructions is:
+.Bl -bullet -offset indent
+.It
+the
+.Em program counter
+which points to the next microinstruction to execute either in the main
+microsequence or in a subcall
+.It
+the current value of
+.Em ptr
+which points to the next char to send/receive
+.It
+the current value of the internal
+.Em branch register
+.El
+.Pp
+This data is modified by some of the microinstructions, not all.
+.Ss MS_OP_GET and MS_OP_PUT
+are microinstructions used to do either predefined standard IEEE1284-1994
+transfers or programmed non-standard io.
+.Ss MS_OP_RFETCH - Register FETCH
+is used to retrieve the current value of a parallel port register, apply a
+mask and save it in a buffer.
+.Pp
+Parameters:
+.Bl -enum -offset indent
+.It
+register
+.It
+character mask
+.It
+pointer to the buffer
+.El
+.Pp
+Predefined macro: MS_RFETCH(reg,mask,ptr)
+.Ss MS_OP_RSET - Register SET
+is used to assert/clear some bits of a particular parallel port register,
+two masks are applied.
+.Pp
+Parameters:
+.Bl -enum -offset indent
+.It
+register
+.It
+mask of bits to assert
+.It
+mask of bits to clear
+.El
+.Pp
+Predefined macro: MS_RSET(reg,assert,clear)
+.Ss MS_OP_RASSERT - Register ASSERT
+is used to assert all bits of a particular parallel port register.
+.Pp
+Parameters:
+.Bl -enum -offset indent
+.It
+register
+.It
+byte to assert
+.El
+.Pp
+Predefined macro: MS_RASSERT(reg,byte)
+.Ss MS_OP_DELAY - microsecond DELAY
+is used to delay the execution of the microsequence.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+delay in microseconds
+.El
+.Pp
+Predefined macro: MS_DELAY(delay)
+.Ss MS_OP_SET - SET internal branch register
+is used to set the value of the internal branch register.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+integer value
+.El
+.Pp
+Predefined macro: MS_SET(accum)
+.Ss MS_OP_DBRA - \&Do BRAnch
+is used to branch if internal branch register decremented by one result value
+is positive.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+integer offset in the current executed (sub)microsequence.
+Offset is added to
+the index of the next microinstruction to execute.
+.El
+.Pp
+Predefined macro: MS_DBRA(offset)
+.Ss MS_OP_BRSET - BRanch on SET
+is used to branch if some of the status register bits of the parallel port
+are set.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+bits of the status register
+.It
+integer offset in the current executed (sub)microsequence.
+Offset is added to
+the index of the next microinstruction to execute.
+.El
+.Pp
+Predefined macro: MS_BRSET(mask,offset)
+.Ss MS_OP_BRCLEAR - BRanch on CLEAR
+is used to branch if some of the status register bits of the parallel port
+are cleared.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+bits of the status register
+.It
+integer offset in the current executed (sub)microsequence.
+Offset is added to
+the index of the next microinstruction to execute.
+.El
+.Pp
+Predefined macro: MS_BRCLEAR(mask,offset)
+.Ss MS_OP_RET - RETurn
+is used to return from a microsequence.
+This instruction is mandatory.
+This
+is the only way for the microsequencer to detect the end of the microsequence.
+The return code is returned in the integer pointed by the (int *) parameter
+of the ppb_MS_microseq().
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+integer return code
+.El
+.Pp
+Predefined macro: MS_RET(code)
+.Ss MS_OP_C_CALL - C function CALL
+is used to call C functions from microsequence execution.
+This may be useful
+when a non-standard i/o is performed to retrieve a data character from the
+parallel port.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+the C function to call
+.It
+the parameter to pass to the function call
+.El
+.Pp
+The C function shall be declared as a
+.Ft int(*)(void *p, char *ptr) .
+The ptr parameter is the current position in the buffer currently scanned.
+.Pp
+Predefined macro: MS_C_CALL(func,param)
+.Ss MS_OP_PTR - initialize internal PTR
+is used to initialize the internal pointer to the currently scanned buffer.
+This pointer is passed to any C call (see above).
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+pointer to the buffer that shall be accessed by xxx_P() microsequence calls.
+Note that this pointer is automatically incremented during xxx_P() calls
+.El
+.Pp
+Predefined macro: MS_PTR(ptr)
+.Ss MS_OP_ADELAY - do an Asynchronous DELAY
+is used to make a tsleep() during microsequence execution.
+The tsleep is
+executed at PPBPRI level.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+delay in ms
+.El
+.Pp
+Predefined macro: MS_ADELAY(delay)
+.Ss MS_OP_BRSTAT - BRanch on STATe
+is used to branch on status register state condition.
+.Pp
+Parameter:
+.Bl -enum -offset indent
+.It
+mask of asserted bits.
+Bits that shall be asserted in the status register
+are set in the mask
+.It
+mask of cleared bits.
+Bits that shall be cleared in the status register
+are set in the mask
+.It
+integer offset in the current executed (sub)microsequence.
+Offset is added
+to the index of the next microinstruction to execute.
+.El
+.Pp
+Predefined macro: MS_BRSTAT(asserted_bits,clear_bits,offset)
+.Ss MS_OP_SUBRET - SUBmicrosequence RETurn
+is used to return from the submicrosequence call.
+This action is mandatory
+before a RET call.
+Some microinstructions (PUT, GET) may not be callable
+within a submicrosequence.
+.Pp
+No parameter.
+.Pp
+Predefined macro: MS_SUBRET()
+.Ss MS_OP_CALL - submicrosequence CALL
+is used to call a submicrosequence.
+A submicrosequence is a microsequence with
+a SUBRET call.
+Parameter:
+.Bl -enum -offset indent
+.It
+the submicrosequence to execute
+.El
+.Pp
+Predefined macro: MS_CALL(microseq)
+.Ss MS_OP_RASSERT_P - Register ASSERT from internal PTR
+is used to assert a register with data currently pointed by the internal PTR
+pointer.
+Parameter:
+.Bl -enum -offset indent
+.It
+amount of data to write to the register
+.It
+register
+.El
+.Pp
+Predefined macro: MS_RASSERT_P(iter,reg)
+.Ss MS_OP_RFETCH_P - Register FETCH to internal PTR
+is used to fetch data from a register.
+Data is stored in the buffer currently
+pointed by the internal PTR pointer.
+Parameter:
+.Bl -enum -offset indent
+.It
+amount of data to read from the register
+.It
+register
+.It
+mask applied to fetched data
+.El
+.Pp
+Predefined macro: MS_RFETCH_P(iter,reg,mask)
+.Ss MS_OP_TRIG - TRIG register
+is used to trigger the parallel port.
+This microinstruction is intended to
+provide a very efficient control of the parallel port.
+Triggering a register
+is writing data, wait a while, write data, wait a while...
+This allows to
+write magic sequences to the port.
+Parameter:
+.Bl -enum -offset indent
+.It
+amount of data to read from the register
+.It
+register
+.It
+size of the array
+.It
+array of unsigned chars.
+Each couple of u_chars define the data to write to
+the register and the delay in us to wait.
+The delay is limited to 255 us to
+simplify and reduce the size of the array.
+.El
+.Pp
+Predefined macro: MS_TRIG(reg,len,array)
+.Sh MICROSEQUENCES
+.Ss C structures
+.Bd -literal
+union ppb_insarg {
+ int i;
+ char c;
+ void *p;
+ int (* f)(void *, char *);
+};
+
+struct ppb_microseq {
+ int opcode; /* microins. opcode */
+ union ppb_insarg arg[PPB_MS_MAXARGS]; /* arguments */
+};
+.Ed
+.Ss Using microsequences
+To instantiate a microsequence, just declare an array of ppb_microseq
+structures and initialize it as needed.
+You may either use predefined macros
+or code directly your microinstructions according to the ppb_microseq
+definition.
+For example,
+.Bd -literal
+ struct ppb_microseq select_microseq[] = {
+
+ /* parameter list
+ */
+ #define SELECT_TARGET MS_PARAM(0, 1, MS_TYP_INT)
+ #define SELECT_INITIATOR MS_PARAM(3, 1, MS_TYP_INT)
+
+ /* send the select command to the drive */
+ MS_DASS(MS_UNKNOWN),
+ MS_CASS(H_nAUTO | H_nSELIN | H_INIT | H_STROBE),
+ MS_CASS( H_AUTO | H_nSELIN | H_INIT | H_STROBE),
+ MS_DASS(MS_UNKNOWN),
+ MS_CASS( H_AUTO | H_nSELIN | H_nINIT | H_STROBE),
+
+ /* now, wait until the drive is ready */
+ MS_SET(VP0_SELTMO),
+/* loop: */ MS_BRSET(H_ACK, 2 /* ready */),
+ MS_DBRA(-2 /* loop */),
+/* error: */ MS_RET(1),
+/* ready: */ MS_RET(0)
+ };
+.Ed
+.Pp
+Here, some parameters are undefined and must be filled before executing
+the microsequence.
+In order to initialize each microsequence, one
+should use the ppb_MS_init_msq() function like this:
+.Bd -literal
+ ppb_MS_init_msq(select_microseq, 2,
+ SELECT_TARGET, 1 << target,
+ SELECT_INITIATOR, 1 << initiator);
+.Ed
+.Pp
+and then execute the microsequence.
+.Ss The microsequencer
+The microsequencer is executed either at ppbus or adapter level (see
+.Xr ppbus 4
+for info about ppbus system layers).
+Most of the microsequencer is executed
+at ppc level to avoid ppbus to adapter function call overhead.
+But some
+actions like deciding whereas the transfer is IEEE1284-1994 compliant are
+executed at ppbus layer.
+.Sh SEE ALSO
+.Xr ppbus 4 ,
+.Xr ppc 4 ,
+.Xr vpo 4
+.Sh HISTORY
+The
+.Nm
+manual page first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+This
+manual page was written by
+.An Nicolas Souchu .
+.Sh BUGS
+Only one level of submicrosequences is allowed.
+.Pp
+When triggering the port, maximum delay allowed is 255 us.
diff --git a/share/man/man9/microtime.9 b/share/man/man9/microtime.9
new file mode 100644
index 0000000..3288578
--- /dev/null
+++ b/share/man/man9/microtime.9
@@ -0,0 +1,121 @@
+.\" Copyright (c) 2000 Kelly Yancey
+.\" 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$
+.\"
+.Dd September 16, 2004
+.Dt MICROTIME 9
+.Os
+.Sh NAME
+.Nm bintime ,
+.Nm getbintime ,
+.Nm microtime ,
+.Nm getmicrotime ,
+.Nm nanotime ,
+.Nm getnanotime
+.Nd get the current time
+.Sh SYNOPSIS
+.In sys/time.h
+.Ft void
+.Fn bintime "struct bintime *bt"
+.Ft void
+.Fn getbintime "struct bintime *bt"
+.Ft void
+.Fn microtime "struct timeval *tv"
+.Ft void
+.Fn getmicrotime "struct timeval *tv"
+.Ft void
+.Fn nanotime "struct timespec *ts"
+.Ft void
+.Fn getnanotime "struct timespec *tsp"
+.Sh DESCRIPTION
+The
+.Fn bintime
+and
+.Fn getbintime
+functions store the system time as a
+.Vt "struct bintime"
+at the addresses specified by
+.Fa bt .
+The
+.Fn microtime
+and
+.Fn getmicrotime
+functions perform the same utility, but record the time as a
+.Vt "struct timeval"
+instead.
+Similarly the
+.Fn nanotime
+and
+.Fn getnanotime
+functions store the time as a
+.Vt "struct timespec" .
+.Pp
+The
+.Fn bintime ,
+.Fn microtime ,
+and
+.Fn nanotime
+functions
+always query the timecounter to return the current time as precisely as
+possible.
+Whereas
+.Fn getbintime ,
+.Fn getmicrotime ,
+and
+.Fn getnanotime
+functions are abstractions which return a less precise, but
+faster to obtain, time.
+.Pp
+The intent of the
+.Fn getbintime ,
+.Fn getmicrotime ,
+and
+.Fn getnanotime
+functions is to enforce the user's preference for timer accuracy versus
+execution time.
+.Sh SEE ALSO
+.Xr binuptime 9 ,
+.Xr getbinuptime 9 ,
+.Xr getmicrouptime 9 ,
+.Xr getnanouptime 9 ,
+.Xr microuptime 9 ,
+.Xr nanouptime 9 ,
+.Xr tvtohz 9
+.Sh HISTORY
+The
+.Nm bintime
+functions first appeared in
+.Fx 5.0 .
+The
+.Nm microtime
+and
+.Nm nanotime
+functions first appeared in
+.Fx 3.0
+but have existed in other incarnations since
+.Bx 4.4 .
+.Sh AUTHORS
+This manual page was written by
+.An Kelly Yancey Aq kbyanc@posi.net .
diff --git a/share/man/man9/microuptime.9 b/share/man/man9/microuptime.9
new file mode 100644
index 0000000..8f9985f
--- /dev/null
+++ b/share/man/man9/microuptime.9
@@ -0,0 +1,108 @@
+.\" Copyright (c) 2000 Kelly Yancey
+.\" 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$
+.\"
+.Dd September 16, 2004
+.Dt MICROUPTIME 9
+.Os
+.Sh NAME
+.Nm binuptime ,
+.Nm getbinuptime ,
+.Nm microuptime ,
+.Nm getmicrouptime ,
+.Nm nanouptime ,
+.Nm getnanouptime
+.Nd get the time elapsed since boot
+.Sh SYNOPSIS
+.In sys/time.h
+.Ft void
+.Fn binuptime "struct bintime *bt"
+.Ft void
+.Fn getbinuptime "struct bintime *bt"
+.Ft void
+.Fn microuptime "struct timeval *tv"
+.Ft void
+.Fn getmicrouptime "struct timeval *tv"
+.Ft void
+.Fn nanouptime "struct timespec *ts"
+.Ft void
+.Fn getnanouptime "struct timespec *tsp"
+.Sh DESCRIPTION
+The
+.Fn binuptime
+and
+.Fn getbinuptime
+functions store the time elapsed since boot as a
+.Vt "struct bintime"
+at the address specified by
+.Fa bt .
+The
+.Fn microuptime
+and
+.Fn getmicrouptime
+functions perform the same utility, but record the elapsed time as a
+.Vt "struct timeval"
+instead.
+Similarly the
+.Fn nanouptime
+and
+.Fn getnanouptime
+functions store the elapsed time as a
+.Vt "struct timespec" .
+.Pp
+The
+.Fn binuptime ,
+.Fn microuptime ,
+and
+.Fn nanouptime
+functions
+always query the timecounter to return the current time as precisely as
+possible.
+Whereas
+.Fn getbinuptime ,
+.Fn getmicrouptime ,
+and
+.Fn getnanouptime
+functions are abstractions which return a less precise, but
+faster to obtain, time.
+.Pp
+The intent of the
+.Fn getbinuptime ,
+.Fn getmicrouptime ,
+and
+.Fn getnanouptime
+functions is to enforce the user's preference for timer accuracy versus
+execution time.
+.Sh SEE ALSO
+.Xr bintime 9 ,
+.Xr getbintime 9 ,
+.Xr getmicrotime 9 ,
+.Xr getnanotime 9 ,
+.Xr microtime 9 ,
+.Xr nanotime 9 ,
+.Xr tvtohz 9
+.Sh AUTHORS
+This manual page was written by
+.An Kelly Yancey Aq kbyanc@posi.net .
diff --git a/share/man/man9/module.9 b/share/man/man9/module.9
new file mode 100644
index 0000000..055dab9
--- /dev/null
+++ b/share/man/man9/module.9
@@ -0,0 +1,121 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Alexander Langer
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 19, 2007
+.Dt MODULE 9
+.Os
+.Sh NAME
+.Nm module
+.Nd structure describing a kernel module
+.Sh DESCRIPTION
+Each module in the kernel is described by a
+.Vt module_t
+structure.
+The structure contains the name of the device, a unique ID number,
+a pointer to an event handler function and to an argument,
+which is given to the event handler,
+as well as some kernel internal data.
+.Pp
+The
+.Xr DECLARE_MODULE 9
+macro
+registers the module with the system.
+.Pp
+When the module is loaded, the event handler function is called with
+the
+.Fa what
+argument set to
+.Dv MOD_LOAD .
+.Pp
+On unload it is first called with
+.Fa what
+set to
+.Dv MOD_QUIESCE .
+If the unload was not forced, a non-zero return will prevent the
+unload from happening.
+.Pp
+If the unload continues
+.Fa what
+is set to
+.Dv MOD_UNLOAD .
+If the module returns non-zero to this, the unload will not happen.
+.Pp
+The difference between
+.Dv MOD_QUIESCE
+and
+.Dv MOD_UNLOAD
+is that the module should fail
+.Dv MOD_QUIESCE
+if it is currently in use, whereas
+.Dv MOD_UNLOAD
+should only fail if it is impossible to unload the module, for instance
+because there are memory references to the module which cannot be revoked.
+.Pp
+When the system is shutting down,
+.Fa what
+contains the value of
+.Dv MOD_SHUTDOWN .
+.Pp
+The module should return
+.Er EOPNOTSUPP
+for unsupported and unrecognized values of
+.Fa what .
+.Sh EXAMPLES
+.Bd -literal
+#include <sys/param.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+
+static int foo_handler(module_t mod, int /*modeventtype_t*/ what,
+ void *arg);
+
+static moduledata_t mod_data= {
+ "foo",
+ foo_handler,
+ 0
+};
+
+MODULE_VERSION(foo, 1);
+MODULE_DEPEND(foo, bar, 1, 3, 4);
+
+DECLARE_MODULE(foo, mod_data, SI_SUB_EXEC, SI_ORDER_ANY);
+.Ed
+.Sh SEE ALSO
+.Xr DECLARE_MODULE 9 ,
+.Xr DEV_MODULE 9 ,
+.Xr DRIVER_MODULE 9 ,
+.Xr MODULE_DEPEND 9 ,
+.Xr MODULE_VERSION 9 ,
+.Xr SYSCALL_MODULE 9
+.Pp
+.Pa /usr/share/examples/kld
+.Sh AUTHORS
+This manual page was written by
+.An Alexander Langer Aq alex@FreeBSD.org .
diff --git a/share/man/man9/mtx_pool.9 b/share/man/man9/mtx_pool.9
new file mode 100644
index 0000000..e289f3c
--- /dev/null
+++ b/share/man/man9/mtx_pool.9
@@ -0,0 +1,184 @@
+.\"
+.\" Copyright (C) 2002 Garrett Rooney <rooneg@electricjellyfish.net>.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 25, 2002
+.Dt MTX_POOL 9
+.Os
+.Sh NAME
+.Nm mtx_pool ,
+.Nm mtx_pool_alloc ,
+.Nm mtx_pool_find ,
+.Nm mtx_pool_lock ,
+.Nm mtx_pool_lock_spin ,
+.Nm mtx_pool_unlock ,
+.Nm mtx_pool_unlock_spin ,
+.Nm mtx_pool_create ,
+.Nm mtx_pool_destroy
+.Nd "mutex pool routines"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/lock.h
+.In sys/mutex.h
+.Ft "struct mtx *"
+.Fn mtx_pool_alloc "struct mtx_pool *pool"
+.Ft "struct mtx *"
+.Fn mtx_pool_find "struct mtx_pool *pool" "void *ptr"
+.Ft void
+.Fn mtx_pool_lock "struct mtx_pool *pool" "void *ptr"
+.Ft void
+.Fn mtx_pool_lock_spin "struct mtx_pool *pool" "void *ptr"
+.Ft void
+.Fn mtx_pool_unlock "struct mtx_pool *pool" "void *ptr"
+.Ft void
+.Fn mtx_pool_unlock_spin "struct mtx_pool *pool" "void *ptr"
+.Ft "struct mtx_pool *"
+.Fn mtx_pool_create "const char *mtx_name" "int pool_size" "int opts"
+.Ft "void"
+.Fn mtx_pool_destroy "struct mtx_pool **poolp"
+.Sh DESCRIPTION
+Mutex pools are designed to be used as short term leaf mutexes;
+i.e., the last mutex one might acquire before calling
+.Xr mtx_sleep 9 .
+They operate using a shared pool of mutexes.
+A mutex may be chosen from the pool based on a supplied pointer,
+which may or may not point to anything valid,
+or the caller may allocate an arbitrary shared mutex from the pool
+and save the returned mutex pointer for later use.
+.Pp
+The shared mutexes in the
+.Va mtxpool_sleep
+mutex pool,
+which is created by default,
+are standard, non-recursive,
+blockable mutexes, and should only be used in appropriate situations.
+The mutexes in the
+.Va mtxpool_lockbuilder
+mutex pool are similar, except that they are initialized with the MTX_NOWITNESS
+flag so that they may be used to build higher-level locks.
+Other mutex pools may be created that contain mutexes with different
+properties, such as spin mutexes.
+.Pp
+The caller can lock and unlock mutexes returned by the pool routines, but
+since the mutexes are shared, the caller should not attempt to destroy them
+or modify their characteristics.
+While pool mutexes are normally leaf mutexes
+(meaning that one cannot depend on any ordering guarantees
+after obtaining one),
+one can still obtain other mutexes under carefully controlled circumstances.
+Specifically, if one has a private mutex
+(one that was allocated and initialized by the caller),
+one can obtain it after obtaining a pool mutex if ordering issues are
+carefully accounted for.
+In these cases the private mutex winds up being the true leaf mutex.
+.Pp
+Pool mutexes have the following advantages:
+.Pp
+.Bl -enum -offset indent -compact
+.It
+No structural overhead;
+i.e., they can be associated with a structure without adding bloat to it.
+.It
+Mutexes can be obtained for invalid pointers, which is useful when one uses
+mutexes to interlock destructor operations.
+.It
+No initialization or destruction overhead.
+.It
+Can be used with
+.Xr mtx_sleep 9 .
+.El
+.Pp
+And the following disadvantages:
+.Pp
+.Bl -enum -offset indent -compact
+.It
+Should generally only be used as leaf mutexes.
+.It
+Pool/pool dependency ordering cannot be guaranteed.
+.It
+Possible L1 cache mastership contention between CPUs.
+.El
+.Pp
+.Fn mtx_pool_alloc
+obtains a shared mutex from the specified pool.
+This routine uses a simple rover to choose one of the shared mutexes managed
+by the
+.Nm
+subsystem.
+.Pp
+.Fn mtx_pool_find
+returns the shared mutex associated with the specified address.
+This routine will create a hash out of the pointer passed into it
+and will choose a shared mutex from the specified pool based on that hash.
+The pointer does not need to point to anything real.
+.Pp
+.Fn mtx_pool_lock ,
+.Fn mtx_pool_lock_spin ,
+.Fn mtx_pool_unlock ,
+and
+.Fn mtx_pool_unlock_spin
+lock and unlock the shared mutex from the specified pool
+associated with the specified address;
+they are a combination of
+.Fn mtx_pool_find
+and
+.Xr mtx_lock 9 ,
+.Xr mtx_lock_spin 9 ,
+.Xr mtx_unlock 9 ,
+and
+.Xr mtx_unlock_spin 9 ,
+respectively.
+Since these routines must first find the mutex to operate on,
+they are not as fast as directly using the mutex pointer returned by
+a previous invocation of
+.Fn mtx_pool_find
+or
+.Fn mtx_pool_alloc .
+.Pp
+.Fn mtx_pool_create
+allocates and initializes a new mutex pool of the
+specified size.
+The pool size must be a power of two.
+The
+.Fa opts
+argument is passed to
+.Xr mtx_init 9
+to set the options for each mutex in the pool.
+.Pp
+.Fn mtx_pool_destroy
+calls
+.Xr mtx_destroy 9
+on each mutex in the specified pool,
+deallocates the memory associated with the pool,
+and assigns NULL to the pool pointer.
+.Sh SEE ALSO
+.Xr locking 9
+.Xr mutex 9
+.Sh HISTORY
+These routines first appeared in
+.Fx 5.0 .
diff --git a/share/man/man9/mutex.9 b/share/man/man9/mutex.9
new file mode 100644
index 0000000..b27f7f9
--- /dev/null
+++ b/share/man/man9/mutex.9
@@ -0,0 +1,525 @@
+.\"
+.\" Copyright (c) 1998 Berkeley Software Design, 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. Berkeley Software Design Inc's name may not be used to endorse or
+.\" promote products derived from this software without specific prior
+.\" written permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY BERKELEY SOFTWARE DESIGN INC ``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 BERKELEY SOFTWARE DESIGN INC 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.
+.\"
+.\" from BSDI $Id: mutex.4,v 1.1.2.3 1998/04/27 22:53:13 ewv Exp $
+.\" $FreeBSD$
+.\"
+.Dd December 21, 2006
+.Dt MUTEX 9
+.Os
+.Sh NAME
+.Nm mutex ,
+.Nm mtx_init ,
+.Nm mtx_destroy ,
+.Nm mtx_lock ,
+.Nm mtx_lock_spin ,
+.Nm mtx_lock_flags ,
+.Nm mtx_lock_spin_flags ,
+.Nm mtx_trylock ,
+.Nm mtx_trylock_flags ,
+.Nm mtx_unlock ,
+.Nm mtx_unlock_spin ,
+.Nm mtx_unlock_flags ,
+.Nm mtx_unlock_spin_flags ,
+.Nm mtx_sleep ,
+.Nm mtx_initialized ,
+.Nm mtx_owned ,
+.Nm mtx_recursed ,
+.Nm mtx_assert ,
+.Nm MTX_SYSINIT
+.Nd kernel synchronization primitives
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/lock.h
+.In sys/mutex.h
+.Ft void
+.Fn mtx_init "struct mtx *mutex" "const char *name" "const char *type" "int opts"
+.Ft void
+.Fn mtx_destroy "struct mtx *mutex"
+.Ft void
+.Fn mtx_lock "struct mtx *mutex"
+.Ft void
+.Fn mtx_lock_spin "struct mtx *mutex"
+.Ft void
+.Fn mtx_lock_flags "struct mtx *mutex" "int flags"
+.Ft void
+.Fn mtx_lock_spin_flags "struct mtx *mutex" "int flags"
+.Ft int
+.Fn mtx_trylock "struct mtx *mutex"
+.Ft int
+.Fn mtx_trylock_flags "struct mtx *mutex" "int flags"
+.Ft void
+.Fn mtx_unlock "struct mtx *mutex"
+.Ft void
+.Fn mtx_unlock_spin "struct mtx *mutex"
+.Ft void
+.Fn mtx_unlock_flags "struct mtx *mutex" "int flags"
+.Ft void
+.Fn mtx_unlock_spin_flags "struct mtx *mutex" "int flags"
+.Ft int
+.Fn mtx_sleep "void *chan" "struct mtx *mtx" "int priority" "const char *wmesg" "int timo"
+.Ft int
+.Fn mtx_initialized "struct mtx *mutex"
+.Ft int
+.Fn mtx_owned "struct mtx *mutex"
+.Ft int
+.Fn mtx_recursed "struct mtx *mutex"
+.Pp
+.Cd "options INVARIANTS"
+.Cd "options INVARIANT_SUPPORT"
+.Ft void
+.Fn mtx_assert "struct mtx *mutex" "int what"
+.In sys/kernel.h
+.Fn MTX_SYSINIT "name" "struct mtx *mtx" "const char *description" "int opts"
+.Sh DESCRIPTION
+Mutexes are the most basic and primary method of thread synchronization.
+The major design considerations for mutexes are:
+.Bl -enum
+.It
+Acquiring and releasing uncontested mutexes should be as cheap
+as possible.
+.It
+They must have the information and storage space to support
+priority propagation.
+.It
+A thread must be able to recursively acquire a mutex,
+provided that the mutex is initialized to support recursion.
+.El
+.Pp
+There are currently two flavors of mutexes, those that context switch
+when they block and those that do not.
+.Pp
+By default,
+.Dv MTX_DEF
+mutexes will context switch when they are already held.
+As an optimization,
+they may spin for some amount
+of time before context switching.
+It is important to remember that since a thread may be preempted at any time,
+the possible context switch introduced by acquiring a mutex is guaranteed
+to not break anything that is not already broken.
+.Pp
+Mutexes which do not context switch are
+.Dv MTX_SPIN
+mutexes.
+These should only be used to protect data shared with primary interrupt
+code.
+This includes
+.Dv INTR_FAST
+interrupt handlers and low level scheduling code.
+In all architectures both acquiring and releasing of a
+uncontested spin mutex is more expensive than the same operation
+on a non-spin mutex.
+In order to protect an interrupt service routine from blocking
+against itself all interrupts are either blocked or deferred on a processor
+while holding a spin lock.
+It is permissible to hold multiple spin mutexes.
+.Pp
+Once a spin mutex has been acquired it is not permissible to acquire a
+blocking mutex.
+.Pp
+The storage needed to implement a mutex is provided by a
+.Vt struct mtx .
+In general this should be treated as an opaque object and
+referenced only with the mutex primitives.
+.Pp
+The
+.Fn mtx_init
+function must be used to initialize a mutex
+before it can be passed to any of the other mutex functions.
+The
+.Fa name
+option is used to identify the lock in debugging output etc.
+The
+.Fa type
+option is used by the witness code to classify a mutex when doing checks
+of lock ordering.
+If
+.Fa type
+is
+.Dv NULL ,
+.Fa name
+is used in its place.
+The pointer passed in as
+.Fa name
+and
+.Fa type
+is saved rather than the data it points to.
+The data pointed to must remain stable
+until the mutex is destroyed.
+The
+.Fa opts
+argument is used to set the type of mutex.
+It may contain either
+.Dv MTX_DEF
+or
+.Dv MTX_SPIN
+but not both.
+See below for additional initialization options.
+It is not permissible to pass the same
+.Fa mutex
+to
+.Fn mtx_init
+multiple times without intervening calls to
+.Fn mtx_destroy .
+.Pp
+The
+.Fn mtx_lock
+function acquires a
+.Dv MTX_DEF
+mutual exclusion lock
+on behalf of the currently running kernel thread.
+If another kernel thread is holding the mutex,
+the caller will be disconnected from the CPU
+until the mutex is available
+(i.e., it will block).
+.Pp
+The
+.Fn mtx_lock_spin
+function acquires a
+.Dv MTX_SPIN
+mutual exclusion lock
+on behalf of the currently running kernel thread.
+If another kernel thread is holding the mutex,
+the caller will spin until the mutex becomes available.
+Interrupts are disabled during the spin and remain disabled
+following the acquiring of the lock.
+.Pp
+It is possible for the same thread to recursively acquire a mutex
+with no ill effects, provided that the
+.Dv MTX_RECURSE
+bit was passed to
+.Fn mtx_init
+during the initialization of the mutex.
+.Pp
+The
+.Fn mtx_lock_flags
+and
+.Fn mtx_lock_spin_flags
+functions acquire a
+.Dv MTX_DEF
+or
+.Dv MTX_SPIN
+lock, respectively, and also accept a
+.Fa flags
+argument.
+In both cases, the only flag presently available for lock acquires is
+.Dv MTX_QUIET .
+If the
+.Dv MTX_QUIET
+bit is turned on in the
+.Fa flags
+argument, then if
+.Dv KTR_LOCK
+tracing is being done,
+it will be silenced during the lock acquire.
+.Pp
+The
+.Fn mtx_trylock
+attempts to acquire the
+.Dv MTX_DEF
+mutex pointed to by
+.Fa mutex .
+If the mutex cannot be immediately acquired
+.Fn mtx_trylock
+will return 0,
+otherwise the mutex will be acquired
+and a non-zero value will be returned.
+.Pp
+The
+.Fn mtx_trylock_flags
+function has the same behavior as
+.Fn mtx_trylock
+but should be used when the caller desires to pass in a
+.Fa flags
+value.
+Presently, the only valid value in the
+.Fn mtx_trylock
+case is
+.Dv MTX_QUIET ,
+and its effects are identical to those described for
+.Fn mtx_lock
+above.
+.Pp
+The
+.Fn mtx_unlock
+function releases a
+.Dv MTX_DEF
+mutual exclusion lock.
+The current thread may be preempted if a higher priority thread is waiting
+for the mutex.
+.Pp
+The
+.Fn mtx_unlock_spin
+function releases a
+.Dv MTX_SPIN
+mutual exclusion lock.
+.Pp
+The
+.Fn mtx_unlock_flags
+and
+.Fn mtx_unlock_spin_flags
+functions behave in exactly the same way as do the standard mutex
+unlock routines above, while also allowing a
+.Fa flags
+argument which may specify
+.Dv MTX_QUIET .
+The behavior of
+.Dv MTX_QUIET
+is identical to its behavior in the mutex lock routines.
+.Pp
+The
+.Fn mtx_destroy
+function is used to destroy
+.Fa mutex
+so the data associated with it may be freed
+or otherwise overwritten.
+Any mutex which is destroyed
+must previously have been initialized with
+.Fn mtx_init .
+It is permissible to have a single hold count
+on a mutex when it is destroyed.
+It is not permissible to hold the mutex recursively,
+or have another thread blocked on the mutex
+when it is destroyed.
+.Pp
+The
+.Fn mtx_sleep
+function is used to atomically release
+.Fa mtx
+while waiting for an event.
+For more details on the parameters to this function,
+see
+.Xr sleep 9 .
+.Pp
+The
+.Fn mtx_initialized
+function returns non-zero if
+.Fa mutex
+has been initialized and zero otherwise.
+.Pp
+The
+.Fn mtx_owned
+function returns non-zero
+if the current thread holds
+.Fa mutex .
+If the current thread does not hold
+.Fa mutex
+zero is returned.
+.Pp
+The
+.Fn mtx_recursed
+function returns non-zero if the
+.Fa mutex
+is recursed.
+This check should only be made if the running thread already owns
+.Fa mutex .
+.Pp
+The
+.Fn mtx_assert
+function allows assertions specified in
+.Fa what
+to be made about
+.Fa mutex .
+If the assertions are not true and the kernel is compiled with
+.Cd "options INVARIANTS"
+and
+.Cd "options INVARIANT_SUPPORT" ,
+the kernel will panic.
+Currently the following assertions are supported:
+.Bl -tag -width MA_NOTRECURSED
+.It Dv MA_OWNED
+Assert that the current thread
+holds the mutex
+pointed to by the first argument.
+.It Dv MA_NOTOWNED
+Assert that the current thread
+does not hold the mutex
+pointed to by the first argument.
+.It Dv MA_RECURSED
+Assert that the current thread has recursed on the mutex
+pointed to by the first argument.
+This assertion is only valid in conjunction with
+.Dv MA_OWNED .
+.It Dv MA_NOTRECURSED
+Assert that the current thread has not recursed on the mutex
+pointed to by the first argument.
+This assertion is only valid in conjunction with
+.Dv MA_OWNED .
+.El
+.Pp
+The
+.Fn MTX_SYSINIT
+macro is used to generate a call to the
+.Fn mtx_sysinit
+routine at system startup in order to initialize a given mutex lock.
+The parameters are the same as
+.Fn mtx_init
+but with an additional argument,
+.Fa name ,
+that is used in generating unique variable names for the related structures associated with the lock and the sysinit routine.
+.Ss The Default Mutex Type
+Most kernel code should use the default lock type,
+.Dv MTX_DEF .
+The default lock type will allow the thread
+to be disconnected from the CPU
+if the lock is already held by another thread.
+The implementation
+may treat the lock as a short term spin lock
+under some circumstances.
+However, it is always safe to use these forms of locks
+in an interrupt thread
+without fear of deadlock
+against an interrupted thread on the same CPU.
+.Ss The Spin Mutex Type
+A
+.Dv MTX_SPIN
+mutex will not relinquish the CPU
+when it cannot immediately get the requested lock,
+but will loop, waiting for the mutex to be released by another CPU.
+This could result in deadlock
+if another thread interrupted the thread which held a mutex
+and then tried to acquire the mutex.
+For this reason spin locks disable all interrupts on the local CPU.
+.Pp
+Spin locks are fairly specialized locks
+that are intended to be held for very short periods of time.
+Their primary purpose is to protect portions of the code
+that implement other synchronization primitives such as default mutexes,
+thread scheduling, and interrupt threads.
+.Ss Initialization Options
+The options passed in the
+.Fa opts
+argument of
+.Fn mtx_init
+specify the mutex type.
+One of the
+.Dv MTX_DEF
+or
+.Dv MTX_SPIN
+options is required and only one of those two options may be specified.
+The possibilities are:
+.Bl -tag -width MTX_NOWITNESS
+.It Dv MTX_DEF
+Default mutexes
+will always allow the current thread to be suspended
+to avoid deadlock conditions against interrupt threads.
+The implementation of this lock type
+may spin for a while before suspending the current thread.
+.It Dv MTX_SPIN
+Spin mutexes
+will never relinquish the CPU.
+All interrupts are disabled on the local CPU
+while any spin lock is held.
+.It Dv MTX_RECURSE
+Specifies that the initialized mutex is allowed to recurse.
+This bit must be present if the mutex is permitted to recurse.
+.It Dv MTX_QUIET
+Do not log any mutex operations for this lock.
+.It Dv MTX_NOWITNESS
+Instruct
+.Xr witness 4
+to ignore this lock.
+.It Dv MTX_DUPOK
+Witness should not log messages about duplicate locks being acquired.
+.It Dv MTX_NOPROFILE
+Do not profile this lock.
+.El
+.Ss Lock and Unlock Flags
+The flags passed to the
+.Fn mtx_lock_flags ,
+.Fn mtx_lock_spin_flags ,
+.Fn mtx_unlock_flags ,
+and
+.Fn mtx_unlock_spin_flags
+functions provide some basic options to the caller,
+and are often used only under special circumstances to modify lock or
+unlock behavior.
+Standard locking and unlocking should be performed with the
+.Fn mtx_lock ,
+.Fn mtx_lock_spin ,
+.Fn mtx_unlock ,
+and
+.Fn mtx_unlock_spin
+functions.
+Only if a flag is required should the corresponding
+flags-accepting routines be used.
+.Pp
+Options that modify mutex behavior:
+.Bl -tag -width MTX_QUIET
+.It Dv MTX_QUIET
+This option is used to quiet logging messages during individual mutex
+operations.
+This can be used to trim superfluous logging messages for debugging purposes.
+.El
+.Ss Giant
+If
+.Va Giant
+must be acquired, it must be acquired prior to acquiring
+other mutexes.
+Put another way: it is impossible to acquire
+.Va Giant
+non-recursively while
+holding another mutex.
+It is possible to acquire other mutexes while holding
+.Va Giant ,
+and it is possible to acquire
+.Va Giant
+recursively while holding other mutexes.
+.Ss Sleeping
+Sleeping while holding a mutex (except for
+.Va Giant )
+is never safe
+and should be avoided.
+There are numerous assertions which will fail if this is attempted.
+.Ss Functions Which Access Memory in Userspace
+No mutexes should be held (except for
+.Va Giant )
+across functions which
+access memory in userspace, such as
+.Xr copyin 9 ,
+.Xr copyout 9 ,
+.Xr uiomove 9 ,
+.Xr fuword 9 ,
+etc.
+No locks are needed when calling these functions.
+.Sh SEE ALSO
+.Xr condvar 9 ,
+.Xr LOCK_PROFILING 9 ,
+.Xr locking 9 ,
+.Xr mtx_pool 9 ,
+.Xr panic 9 ,
+.Xr rwlock 9 ,
+.Xr sema 9 ,
+.Xr sleep 9 ,
+.Xr sx 9
+.Sh HISTORY
+These
+functions appeared in
+.Bsx 4.1
+and
+.Fx 5.0 .
diff --git a/share/man/man9/namei.9 b/share/man/man9/namei.9
new file mode 100644
index 0000000..1951665
--- /dev/null
+++ b/share/man/man9/namei.9
@@ -0,0 +1,350 @@
+.\"
+.\" Copyright (c) 1998, 1999 Eivind Eklund
+.\" Copyright (c) 2003 Hiten M. Pandya
+.\" Copyright (c) 2005 Robert N. M. Watson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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.
+.\"
+.\"
+.\" If you integrate this manpage in another OS, I'd appreciate a note
+.\" - eivind@FreeBSD.org
+.\"
+.\" $FreeBSD$
+.\"
+.Dd September 21, 2005
+.Os
+.Dt NAMEI 9
+.Sh NAME
+.Nm namei ,
+.Nm NDINIT ,
+.Nm NDFREE ,
+.Nm NDHASGIANT
+.Nd pathname translation and lookup operations
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.In sys/namei.h
+.Ft int
+.Fn namei "struct nameidata *ndp"
+.Ft void
+.Fo NDINIT
+.Fa "struct nameidata *ndp" "u_long op" "u_long flags"
+.Fa "enum uio_seg segflg" "const char *namep" "struct thread *td"
+.Fc
+.Ft void
+.Fn NDFREE "struct nameidata *ndp" "const uint flags"
+.Ft int
+.Fn NDHASGIANT "struct nameidata *ndp"
+.Sh DESCRIPTION
+The
+.Nm
+facility allows the client to perform pathname translation and lookup
+operations.
+The
+.Nm
+functions will increment the reference count for the vnode in question.
+The reference count has to be decremented after use of the vnode, by
+using either
+.Xr vrele 9
+or
+.Xr vput 9 ,
+depending on whether the
+.Dv LOCKLEAF
+flag was specified or not.
+If the
+.Va Giant
+lock is required,
+.Nm
+will acquire it if the caller indicates it is
+.Dv MPSAFE ,
+in which case the caller must later release
+.Va Giant
+based on the results of
+.Fn NDHASGIANT .
+.Pp
+The
+.Fn NDINIT
+function is used to initialize
+.Nm
+components.
+It takes the following arguments:
+.Bl -tag -width ".Fa segflg"
+.It Fa ndp
+The
+.Vt "struct nameidata"
+to initialize.
+.It Fa op
+The operation which
+.Fn namei
+will perform.
+The following operations are valid:
+.Dv LOOKUP , CREATE , DELETE ,
+and
+.Dv RENAME .
+The latter three are just setup for those
+effects; just calling
+.Fn namei
+will not result in
+.Fn VOP_RENAME
+being called.
+.It Fa flags
+Operation flags.
+Several of these can be effective at the same time.
+.It Fa segflg
+UIO segment indicator.
+This indicates if the name of the object is in userspace
+.Pq Dv UIO_USERSPACE
+or in the kernel address space
+.Pq Dv UIO_SYSSPACE .
+.It Fa namep
+Pointer to the component's pathname buffer
+(the file or directory name that will be looked up).
+.It Fa td
+The thread context to use for
+.Nm
+operations and locks.
+.El
+.Sh NAMEI OPERATION FLAGS
+The
+.Fn namei
+function takes the following set of
+.Dq "operation flags"
+that influence its operation:
+.Bl -tag -width ".Dv WANTPARENT"
+.It Dv LOCKLEAF
+Lock vnode on return.
+This is a full lock of the vnode; the
+.Xr VOP_UNLOCK 9
+should be used
+to release the lock (or
+.Xr vput 9
+which is equivalent to calling
+.Xr VOP_UNLOCK 9
+followed by
+.Xr vrele 9 ,
+all in one).
+.It Dv LOCKPARENT
+This flag lets the
+.Fn namei
+function return the parent (directory) vnode,
+.Va ni_dvp
+in locked state, unless it is identical to
+.Va ni_vp ,
+in which case
+.Va ni_dvp
+is not locked per se (but may be locked due to
+.Dv LOCKLEAF ) .
+If a lock is enforced, it should be released using
+.Xr vput 9
+or
+.Xr VOP_UNLOCK 9
+and
+.Xr vrele 9 .
+.It Dv WANTPARENT
+This flag allows the
+.Fn namei
+function to return the parent (directory) vnode in an unlocked state.
+The parent vnode must be released separately by using
+.Xr vrele 9 .
+.It Dv MPSAFE
+With this flag set,
+.Fn namei
+will conditionally acquire
+.Va Giant
+if it is required by a traversed file system.
+MPSAFE callers should pass the results of
+.Fn NDHASGIANT
+to
+.Xr VFS_UNLOCK_GIANT
+in order to conditionally release
+.Va Giant
+if necessary.
+.It Dv NOCACHE
+Avoid
+.Fn namei
+creating this entry in the namecache if it is not
+already present.
+Normally,
+.Fn namei
+will add entries to the name cache
+if they are not already there.
+.It Dv FOLLOW
+With this flag,
+.Fn namei
+will follow the symbolic link if the last part
+of the path supplied is a symbolic link (i.e., it will return a vnode
+for whatever the link points at, instead for the link itself).
+.It Dv NOOBJ
+Do not call
+.Fn vfs_object_create
+for the returned vnode, even though it meets required criteria for VM support.
+.It Dv NOFOLLOW
+Do not follow symbolic links (pseudo).
+This flag is not looked for by the actual code, which looks for
+.Dv FOLLOW .
+.Dv NOFOLLOW
+is used to indicate to the source code reader that symlinks
+are intentionally not followed.
+.It Dv SAVENAME
+Do not free the pathname buffer at the end of the
+.Fn namei
+invocation; instead, free it later in
+.Fn NDFREE
+so that the caller may access the pathname buffer.
+See below for details.
+.It Dv SAVESTART
+Retain an additional reference to the parent directory; do not free
+the pathname buffer.
+See below for details.
+.El
+.Sh ALLOCATED ELEMENTS
+The
+.Vt nameidata
+structure is composed of the following fields:
+.Bl -tag -width ".Va ni_cnd.cn_pnbuf"
+.It Va ni_startdir
+In the normal case, this is either the current directory or the root.
+It is the current directory if the name passed in does not start with
+.Ql /
+and we have not gone through any symlinks with an absolute path, and
+the root otherwise.
+.Pp
+In this case, it is only used by
+.Fn lookup ,
+and should not be
+considered valid after a call to
+.Fn namei .
+If
+.Dv SAVESTART
+is set, this is set to the same as
+.Va ni_dvp ,
+with an extra
+.Xr vref 9 .
+To block
+.Fn NDFREE
+from releasing
+.Va ni_startdir ,
+the
+.Dv NDF_NO_STARTDIR_RELE
+can be set.
+.It Va ni_dvp
+Vnode pointer to directory of the object on which lookup is performed.
+This is available on successful return if
+.Dv LOCKPARENT
+or
+.Dv WANTPARENT
+is set.
+It is locked if
+.Dv LOCKPARENT
+is set.
+Freeing this in
+.Fn NDFREE
+can be inhibited by
+.Dv NDF_NO_DVP_RELE , NDF_NO_DVP_PUT ,
+or
+.Dv NDF_NO_DVP_UNLOCK
+(with the obvious effects).
+.It Va ni_vp
+Vnode pointer to the resulting object,
+.Dv NULL
+otherwise.
+The
+.Va v_usecount
+field of this vnode is incremented.
+If
+.Dv LOCKLEAF
+is set, it is also locked.
+.Pp
+Freeing this in
+.Fn NDFREE
+can be inhibited by
+.Dv NDF_NO_VP_RELE , NDF_NO_VP_PUT ,
+or
+.Dv NDF_NO_VP_UNLOCK
+(with the obvious effects).
+.It Va ni_cnd.cn_pnbuf
+The pathname buffer contains the location of the file or directory
+that will be used by the
+.Nm
+operations.
+It is managed by the
+.Xr uma 9
+zone allocation interface.
+If the
+.Dv SAVESTART
+or
+.Dv SAVENAME
+flag is set, then the pathname buffer is available
+after calling the
+.Fn namei
+function.
+.Pp
+To only deallocate resources used by the pathname buffer,
+.Va ni_cnd.cn_pnbuf ,
+then
+.Dv NDF_ONLY_PNBUF
+flag can be passed to the
+.Fn NDFREE
+function.
+To keep the pathname buffer intact,
+the
+.Dv NDF_NO_FREE_PNBUF
+flag can be passed to the
+.Fn NDFREE
+function.
+.El
+.Sh FILES
+.Bl -tag
+.It Pa src/sys/kern/vfs_lookup.c
+.El
+.Sh SEE ALSO
+.Xr uio 9 ,
+.Xr uma 9 ,
+.Xr VFS 9 ,
+.Xr VFS_UNLOCK_GIANT 9 ,
+.Xr vnode 9 ,
+.Xr vput 9 ,
+.Xr vref 9
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Eivind Eklund Aq eivind@FreeBSD.org
+and later significantly revised by
+.An Hiten M. Pandya Aq hmp@FreeBSD.org .
+.Sh BUGS
+The
+.Dv LOCKPARENT
+flag does not always result in the parent vnode being locked.
+This results in complications when the
+.Dv LOCKPARENT
+is used.
+In order to solve this for the cases where both
+.Dv LOCKPARENT
+and
+.Dv LOCKLEAF
+are used, it is necessary to resort to recursive locking.
+.Pp
+Non-MPSAFE file systems exist, requiring callers to conditionally unlock
+.Va Giant .
diff --git a/share/man/man9/p_candebug.9 b/share/man/man9/p_candebug.9
new file mode 100644
index 0000000..2127fbc
--- /dev/null
+++ b/share/man/man9/p_candebug.9
@@ -0,0 +1,138 @@
+.\"
+.\" Copyright (c) 2003 Joseph Koshy <jkoshy@freebsd.org>
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 19, 2006
+.Os
+.Dt P_CANDEBUG 9
+.Sh NAME
+.Nm p_candebug
+.Nd determine debuggability of a process
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Ft int
+.Fn p_candebug "struct thread *td" "struct proc *p"
+.Sh DESCRIPTION
+This function can be used to determine if a given process
+.Fa p
+is debuggable by the thread
+.Fa td .
+.Sh SYSCTL VARIABLES
+The following
+.Xr sysctl 8
+variables directly influence the behaviour of
+.Fn p_candebug :
+.Bl -tag -width indent
+.It Va kern.securelevel
+Debugging of the init process is not allowed if this variable is
+.Li 1
+or greater.
+.It Va security.bsd.unprivileged_proc_debug
+Must be set to a non-zero value to allow unprivileged processes
+access to the kernel's debug facilities.
+.El
+.Sh RETURN VALUES
+The
+.Fn p_candebug
+function
+returns
+.Li 0
+if the process denoted by
+.Fa p
+is debuggable by thread
+.Fa td ,
+or a non-zero error return value otherwise.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EACCESS
+The MAC subsystem denied debuggability.
+.It Bq Er EAGAIN
+Process
+.Fa p
+is in the process of being
+.Fn exec Ns 'ed.
+.It Bq Er EPERM
+Thread
+.Fa td
+lacks super-user credentials and process
+.Fa p
+is executing a set-user-ID or set-group-ID executable.
+.It Bq Er EPERM
+Thread
+.Fa td
+lacks super-user credentials and process
+.Fa p Ns 's
+group set is not a subset of
+.Fa td Ns 's
+effective group set.
+.It Bq Er EPERM
+Thread
+.Fa td
+lacks super-user credentials and process
+.Fa p Ns 's
+user IDs do not match thread
+.Fa td Ns 's
+effective user ID.
+.It Bq Er EPERM
+Process
+.Fa p
+denotes the initial process
+.Fn initproc
+and the
+.Xr sysctl 8
+variable
+.Va kern.securelevel
+is greater than zero.
+.It Bq Er ESRCH
+Process
+.Fa p
+is not visible to thread
+.Fa td
+as determined by
+.Xr cr_seeotheruids 9
+or
+.Xr cr_seeothergids 9 .
+.It Bq Er ESRCH
+Thread
+.Fa td
+has been jailed and process
+.Fa p
+does not belong to the same jail as
+.Fa td .
+.It Bq Er ESRCH
+The MAC subsystem denied debuggability.
+.El
+.Sh SEE ALSO
+.Xr jail 2 ,
+.Xr sysctl 8 ,
+.Xr cr_seeothergids 9 ,
+.Xr cr_seeotheruids 9 ,
+.Xr mac 9 ,
+.Xr p_cansee 9 ,
+.Xr prison_check 9
diff --git a/share/man/man9/p_cansee.9 b/share/man/man9/p_cansee.9
new file mode 100644
index 0000000..92ffeea
--- /dev/null
+++ b/share/man/man9/p_cansee.9
@@ -0,0 +1,93 @@
+.\"
+.\" Copyright (c) 2003 Joseph Koshy <jkoshy@freebsd.org>
+.\" Copyright (c) 2006 Ceri Davies <ceri@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 19, 2006
+.Os
+.Dt P_CANSEE 9
+.Sh NAME
+.Nm p_cansee
+.Nd determine visibility of a process
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Ft int
+.Fn p_cansee "struct thread *td" "struct proc *p"
+.Sh DESCRIPTION
+This function can be used to determine if a given process
+.Fa p
+is visible to the thread
+.Fa td ,
+where the notion of
+.Dq visibility
+may be read as
+.Dq "awareness of existence" .
+.Pp
+The function is implemented using
+.Xr cr_cansee 9 ,
+and the dependencies on
+.Xr sysctl 8
+variables documented in the
+.Xr cr_cansee 9
+manual page apply.
+.Sh RETURN VALUES
+The
+.Fn p_cansee
+function
+returns
+.Li 0
+if the process denoted by
+.Fa p
+is visible by thread
+.Fa td ,
+or a non-zero error return value otherwise.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ESRCH
+Process
+.Fa p
+is not visible to thread
+.Fa td
+as determined by
+.Xr cr_cansee 9 .
+.It Bq Er ESRCH
+Thread
+.Fa td
+has been jailed and process
+.Fa p
+does not belong to the same jail as
+.Fa td .
+.It Bq Er ESRCH
+The MAC subsystem denied visibility.
+.El
+.Sh SEE ALSO
+.Xr jail 2 ,
+.Xr sysctl 8 ,
+.Xr cr_cansee 9 ,
+.Xr mac 9 ,
+.Xr p_candebug 9 ,
+.Xr prison_check 9
diff --git a/share/man/man9/panic.9 b/share/man/man9/panic.9
new file mode 100644
index 0000000..44439dd
--- /dev/null
+++ b/share/man/man9/panic.9
@@ -0,0 +1,70 @@
+.\" $NetBSD: panic.9,v 1.2 1996/10/09 17:20:04 explorer Exp $
+.\"
+.\" Copyright (c) 1996 Michael Graff.
+.\" 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 Michael Graff
+.\" for the NetBSD Project.
+.\" 3. 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$
+.\"
+.Dd August 11, 1995
+.Dt PANIC 9
+.Os
+.Sh NAME
+.Nm panic
+.Nd bring down system on fatal error
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft void
+.Fn panic "const char *fmt" ...
+.Sh DESCRIPTION
+The
+.Fn panic
+function terminates the running system.
+The message
+.Fa fmt
+is a
+.Xr printf 3
+style format string.
+The message is printed to the console and the location
+.Fa panicstr
+is set to the address of the message text for retrieval from the OS
+core dump.
+.Pp
+If the kernel debugger is installed control is passed to it, otherwise
+an attempt to save a core dump of the OS to a configured dump device
+is made.
+.Pp
+If
+.Fn panic
+is called twice (from the disk sync routines, for example) the system is
+rebooted without syncing the disks.
+.Sh RETURN VALUES
+The
+.Fn panic
+function does not return.
diff --git a/share/man/man9/pbuf.9 b/share/man/man9/pbuf.9
new file mode 100644
index 0000000..4329ac9
--- /dev/null
+++ b/share/man/man9/pbuf.9
@@ -0,0 +1,132 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 9, 2001
+.Dt PBUF 9
+.Os
+.Sh NAME
+.Nm pbuf ,
+.Nm getpbuf ,
+.Nm trypbuf ,
+.Nm relpbuf
+.Nd "functions for managing physical buffers"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft "struct buf *"
+.Fn getpbuf "int *pfreecnt"
+.Ft "struct buf *"
+.Fn trypbuf "int *pfreecnt"
+.Ft void
+.Fn relpbuf "struct buf *bp" "int *pfreecnt"
+.Sh DESCRIPTION
+These functions are used to allocate and release physical buffers.
+.Pp
+The physical buffers are allocated at system startup and are
+maintained in a separate pool from the main system buffers.
+They are intended for use by subsystems that cannot or should not be
+reliant on the main pool of buffers (for example the swap pager).
+The system allocates between 16 and 256 physical buffers depending
+on the amount of memory in the system.
+.Pp
+Each subsystem that allocates buffers via these calls is expected
+to manage its own percentage free counter.
+If the value is initialized to \-1 the number of buffers available
+to the subsystem is limited only by the number of physical buffers
+available.
+The number of buffers is stored in
+.Va nswbuf
+which is defined in
+.In sys/buf.h
+and initialized in
+.Fn cpu_startup .
+A recommended initialization value is 1/2
+.Va nswbuf .
+.Pp
+The
+.Fn getpbuf
+function returns the first available buffer to the user.
+If there are no buffers available,
+.Fn getpbuf
+will sleep waiting for one to become available.
+If
+.Fa pfreecnt
+is zero,
+.Fn getpbuf
+will sleep until it increases.
+.Fa pfreecnt
+is decremented prior to returning.
+.Pp
+The
+.Fn trypbuf
+function returns the first available buffer.
+If there are no buffers available,
+.Dv NULL
+is returned.
+As well, if
+.Fa pfreecnt
+is zero,
+.Dv NULL
+is returned.
+.Fa pfreecnt
+is decremented prior to returning a valid buffer.
+If
+.Dv NULL
+is returned,
+.Fa pfreecnt
+is not modified.
+.Pp
+The
+.Fn relpbuf
+function releases the buffer back to the free list.
+If the buffers
+.Va b_rcred
+or
+.Va b_wcred
+structures are not
+.Dv NULL ,
+they are freed.
+See
+.Xr crfree 9 .
+.Pp
+.Fa pfreecnt
+is incremented prior to returning.
+.Sh RETURN VALUES
+.Fn getpbuf
+and
+.Fn trypbuf
+return a pointer to the buffer.
+In the case of
+.Fn trypbuf ,
+.Dv NULL
+can also be returned indicating that there are no buffers available.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/pci.9 b/share/man/man9/pci.9
new file mode 100644
index 0000000..0890d58
--- /dev/null
+++ b/share/man/man9/pci.9
@@ -0,0 +1,279 @@
+.\"
+.\" Copyright (c) 2005 Bruce M Simpson <bms@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$
+.\"
+.Dd September 30, 2007
+.Dt PCI 9
+.Os
+.Sh NAME
+.Nm pci ,
+.Nm pci_read_config ,
+.Nm pci_write_config ,
+.Nm pci_enable_busmaster ,
+.Nm pci_disable_busmaster ,
+.Nm pci_enable_io ,
+.Nm pci_disable_io ,
+.Nm pci_set_powerstate ,
+.Nm pci_get_powerstate ,
+.Nm pci_find_bsf ,
+.Nm pci_find_dbsf ,
+.Nm pci_find_device
+.Nd PCI bus interface
+.Sh SYNOPSIS
+.In sys/bus.h
+.In dev/pci/pcivar.h
+.In dev/pci/pcireg.h
+.In machine/pci_cfgreg.h
+.Ft void
+.Fn pci_write_config "device_t dev" "int reg" "uint32_t val" "int width"
+.Ft int
+.Fn pci_enable_busmaster "device_t dev"
+.Ft int
+.Fn pci_disable_busmaster "device_t dev"
+.Ft int
+.Fn pci_enable_io "device_t dev" "int space"
+.Ft int
+.Fn pci_disable_io "device_t dev" "int space"
+.Ft int
+.Fn pci_set_powerstate "device_t dev" "int state"
+.Ft int
+.Fn pci_get_powerstate "device_t dev"
+.Ft uint32_t
+.Fn pci_read_config "device_t dev" "int reg" "int width"
+.Ft device_t
+.Fn pci_find_bsf "uint8_t bus" "uint8_t slot" "uint8_t func"
+.Ft device_t
+.Fn pci_find_dbsf "uint32_t domain" "uint8_t bus" "uint8_t slot" "uint8_t func"
+.Ft device_t
+.Fn pci_find_device "uint16_t vendor" "uint16_t device"
+.Sh DESCRIPTION
+The
+.Nm
+set of functions are used for managing PCI devices.
+.Pp
+The
+.Fn pci_read_config
+function is used to read data from the PCI configuration
+space of the device
+.Fa dev ,
+at offset
+.Fa reg ,
+with
+.Fa width
+specifying the size of the access.
+.Pp
+The
+.Fn pci_write_config
+function is used to write the value
+.Fa val
+to the PCI configuration
+space of the device
+.Fa dev ,
+at offset
+.Fa reg ,
+with
+.Fa width
+specifying the size of the access.
+.Pp
+The
+.Fn pci_enable_busmaster
+function enables PCI bus mastering for the device
+.Fa dev ,
+by setting the
+.Dv PCIM_CMD_BUSMASTEREN
+bit in the
+.Dv PCIR_COMMAND
+register.
+The
+.Fn pci_disable_busmaster
+function clears this bit.
+.Pp
+The
+.Fn pci_enable_io
+function enables memory or I/O port address decoding for the device
+.Fa dev ,
+by setting the
+.Dv PCIM_CMD_MEMEN
+or
+.Dv PCIM_CMD_PORTEN
+bit in the
+.Dv PCIR_COMMAND
+register appropriately.
+The
+.Fn pci_disable_io
+function clears the appropriate bit.
+The
+.Fa space
+argument specifies which resource is affected; this can be either
+.Dv SYS_RES_MEMORY
+or
+.Dv SYS_RES_IOPORT
+as appropriate.
+.Pp
+.Em NOTE :
+These functions should be used in preference to manually manipulating
+the configuration space.
+.Pp
+The
+.Fn pci_get_powerstate
+function returns the current ACPI power state of the device
+.Fa dev .
+If the device does not support power management capabilities, then the default
+state of
+.Dv PCI_POWERSTATE_D0
+is returned.
+The following power states are defined by ACPI:
+.Bl -hang -width ".Dv PCI_POWERSTATE_UNKNOWN"
+.It Dv PCI_POWERSTATE_D0
+State in which device is on and running.
+It is receiving full power from the system and delivering
+full functionality to the user.
+.It Dv PCI_POWERSTATE_D1
+Class-specific low-power state in which device context may or
+may not be lost.
+Busses in this state cannot do anything to the bus, to
+force devices to lose context.
+.It Dv PCI_POWERSTATE_D2
+Class-specific low-power state in which device context may or
+may not be lost.
+Attains greater power savings than
+.Dv PCI_POWERSTATE_D1 .
+Busses in this state can cause devices to lose some context.
+Devices
+.Em must
+be prepared for the bus to be in this state or higher.
+.It Dv PCI_POWERSTATE_D3
+State in which the device is off and not running.
+Device context is lost, and power from the device can
+be removed.
+.It Dv PCI_POWERSTATE_UNKNOWN
+State of the device is unknown.
+.El
+.Pp
+The
+.Fn pci_set_powerstate
+function is used to transition the device
+.Fa dev
+to the ACPI power state
+.Fa state .
+It checks to see if the device is PCI 2.2 compliant.
+If so, it checks the
+capabilities pointer to determine which power states the device supports.
+If the device does not have power management capabilities, the default state
+of
+.Dv PCI_POWERSTATE_D0
+is set.
+.Pp
+The
+.Fn pci_find_bsf
+function looks up the
+.Vt device_t
+of a PCI device, given its
+.Fa bus ,
+.Fa slot ,
+and
+.Fa func .
+The
+.Fa slot
+number actually refers to the number of the device on the bus,
+which does not necessarily indicate its geographic location
+in terms of a physical slot.
+Note that in case the system has multiple PCI domains,
+the
+.Fn pci_find_bsf
+function only searches the first one.
+Actually, it is equivalent to:
+.Bd -literal -offset indent
+pci_find_dbsf(0, bus, slot, func);
+.Ed
+.Pp
+The
+.Fn pci_find_dbsf
+function looks up the
+.Vt device_t
+of a PCI device, given its
+.Fa domain ,
+.Fa bus ,
+.Fa slot ,
+and
+.Fa func .
+The
+.Fa slot
+number actually refers to the number of the device on the bus,
+which does not necessarily indicate its geographic location
+in terms of a physical slot.
+.Pp
+The
+.Fn pci_find_device
+function looks up the
+.Vt device_t
+of a PCI device, given its
+.Fa vendor
+and
+.Fa device
+IDs.
+Note that there can be multiple matches for this search; this function
+only returns the first matching device.
+.Sh IMPLEMENTATION NOTES
+The
+.Vt pci_addr_t
+type varies according to the size of the PCI bus address
+space on the target architecture.
+.Sh SEE ALSO
+.Xr pci 4 ,
+.Xr pciconf 8 ,
+.Xr bus_alloc_resource 9 ,
+.Xr bus_dma 9 ,
+.Xr bus_release_resource 9 ,
+.Xr bus_setup_intr 9 ,
+.Xr bus_teardown_intr 9 ,
+.Xr devclass 9 ,
+.Xr device 9 ,
+.Xr driver 9 ,
+.Xr rman 9
+.Rs
+.%B FreeBSD Developers' Handbook
+.%T NewBus
+.%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/
+.Re
+.Rs
+.%A Shanley
+.%A Anderson
+.%B PCI System Architecture
+.%N 2nd Edition
+.%I Addison-Wesley
+.%O ISBN 0-201-30974-2
+.Re
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@FreeBSD.org .
+.Sh BUGS
+The kernel PCI code has a number of references to
+.Dq "slot numbers" .
+These do not refer to the geographic location of PCI devices,
+but to the device number assigned by the combination of the PCI IDSEL
+mechanism and the platform firmware.
+This should be taken note of when working with the kernel PCI code.
diff --git a/share/man/man9/pfil.9 b/share/man/man9/pfil.9
new file mode 100644
index 0000000..e0df8c9
--- /dev/null
+++ b/share/man/man9/pfil.9
@@ -0,0 +1,216 @@
+.\" $NetBSD: pfil.9,v 1.22 2003/07/01 13:04:06 wiz Exp $
+.\"
+.\" Copyright (c) 1996 Matthew R. Green
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd September 29, 2004
+.Dt PFIL 9
+.Os
+.Sh NAME
+.Nm pfil ,
+.Nm pfil_head_register ,
+.Nm pfil_head_unregister ,
+.Nm pfil_head_get ,
+.Nm pfil_hook_get ,
+.Nm pfil_add_hook ,
+.Nm pfil_remove_hook ,
+.Nm pfil_run_hooks
+.Nd packet filter interface
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mbuf.h
+.In net/if.h
+.In net/pfil.h
+.Ft int
+.Fn pfil_head_register "struct pfil_head *head"
+.Ft int
+.Fn pfil_head_unregister "struct pfil_head *head"
+.Ft "struct pfil_head *"
+.Fn pfil_head_get "int af" "u_long dlt"
+.Ft "struct packet_filter_hook *"
+.Fn pfil_hook_get "int dir" "struct pfil_head *head"
+.Ft void
+.Fn pfil_add_hook "int (*func)()" "void *arg" "int flags" "struct pfil_head *"
+.Ft void
+.Fn pfil_remove_hook "int (*func)()" "void *arg" "int flags" "struct pfil_head *"
+.Ft int
+.Fn (*func) "void *arg" "struct mbuf **mp" "struct ifnet *" "int dir" "struct inpcb *"
+.Ft int
+.Fn pfil_run_hooks "struct pfil_head *head" "struct mbuf **mp" "struct ifnet *" "int dir" "struct inpcb *"
+.Sh DESCRIPTION
+The
+.Nm
+framework allows for a specified function to be invoked for every
+incoming or outgoing packet for a particular network I/O stream.
+These hooks may be used to implement a firewall or perform packet
+transformations.
+.Pp
+Packet filtering points are registered with
+.Fn pfil_head_register .
+Filtering points are identified by a key
+.Pq Vt "void *"
+and a data link type
+.Pq Vt int
+in the
+.Vt pfil_head
+structure.
+Packet filters use the key and data link type to look up the filtering
+point with which they register themselves.
+The key is unique to the filtering point.
+The data link type is a
+.Xr bpf 4
+DLT constant indicating what kind of header is present on the packet
+at the filtering point.
+Filtering points may be unregistered with the
+.Fn pfil_head_unregister
+function.
+.Pp
+Packet filters register/unregister themselves with a filtering point
+with the
+.Fn pfil_add_hook
+and
+.Fn pfil_remove_hook
+functions, respectively.
+The head is looked up using the
+.Fn pfil_head_get
+function, which takes the key and data link type that the packet filter
+expects.
+Filters may provide an argument to be passed to the filter when
+invoked on a packet.
+.Pp
+When a filter is invoked, the packet appears just as if it
+.Dq came off the wire .
+That is, all protocol fields are in network byte order.
+The filter is called with its specified argument, the pointer to the
+pointer to the
+.Vt mbuf
+containing the packet, the pointer to the network
+interface that the packet is traversing, and the direction
+.Dv ( PFIL_IN
+or
+.Dv PFIL_OUT )
+that the packet is traveling.
+The filter may change which mbuf the
+.Vt "mbuf\ **"
+argument references.
+The filter returns an error (errno) if the packet processing is to stop, or 0
+if the processing is to continue.
+If the packet processing is to stop, it is the responsibility of the
+filter to free the packet.
+.Sh RETURN VALUES
+If successful,
+.Fn pfil_head_get
+returns the
+.Vt pfil_head
+structure for the given key/dlt.
+The
+.Fn pfil_add_hook
+and
+.Fn pfil_remove_hook
+functions
+return 0 if successful.
+If called with flag
+.Dv PFIL_WAITOK ,
+.Fn pfil_remove_hook
+is expected to always succeed.
+.Pp
+The
+.Fn pfil_head_unregister
+function
+might sleep!
+.Sh SEE ALSO
+.Xr bpf 4 ,
+.Xr if_bridge 4
+.Sh HISTORY
+The
+.Nm
+interface first appeared in
+.Nx 1.3 .
+The
+.Nm
+input and output lists were originally implemented as
+.In sys/queue.h
+.Dv LIST
+structures;
+however this was changed in
+.Nx 1.4
+to
+.Dv TAILQ
+structures.
+This change was to allow the input and output filters to be processed in
+reverse order, to allow the same path to be taken, in or out of the kernel.
+.Pp
+The
+.Nm
+interface was changed in 1.4T to accept a 3rd parameter to both
+.Fn pfil_add_hook
+and
+.Fn pfil_remove_hook ,
+introducing the capability of per-protocol filtering.
+This was done primarily in order to support filtering of IPv6.
+.Pp
+In 1.5K, the
+.Nm
+framework was changed to work with an arbitrary number of filtering points,
+as well as be less IP-centric.
+.Pp
+Fine-grained locking was added in
+.Fx 5.2 .
+.Sh BUGS
+The
+.Fn pfil_hook_get
+function
+is only safe for internal use.
+.Pp
+.Fx
+implements only hooks for
+.Dv AF_INET
+and
+.Dv AF_INET6 .
+Packets diverted through these hooks have data in
+host byte order contrary to the above statements.
+.Pp
+The
+.Xr if_bridge 4
+diverts
+.Dv AF_INET
+and
+.Dv AF_INET6
+traffic according to its sysctl settings, but contrary to the above
+statements, the data is provided in host byte order.
+.Pp
+When a
+.Vt pfil_head
+is being modified, no traffic is diverted
+(to avoid deadlock).
+This means that traffic may be dropped unconditionally for a short period
+of time.
+.Fn pfil_run_hooks
+will return
+.Er ENOBUFS
+to indicate this.
diff --git a/share/man/man9/pfind.9 b/share/man/man9/pfind.9
new file mode 100644
index 0000000..58adab3
--- /dev/null
+++ b/share/man/man9/pfind.9
@@ -0,0 +1,88 @@
+.\" Copyright (c) 2001 Evan Sarmiento.
+.\" 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$
+.\"
+.Dd July 11, 2001
+.Os
+.Dt PFIND 9
+.Sh NAME
+.Nm pfind , zpfind
+.Nd locate a process by number
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Ft "struct proc *"
+.Fn pfind "pid_t pid"
+.Ft "struct proc *"
+.Fn zpfind "pid_t pid"
+.Sh DESCRIPTION
+.Fn pfind
+takes a
+.Fa pid
+as its argument and returns a pointer to the
+.Vt proc
+structure whose PID is specified in the argument only if the
+.Fa pid
+is on the
+.Va allproc
+list.
+.Pp
+.Fn zpfind
+takes a
+.Fa pid
+as its argument.
+If
+.Fn zpfind
+finds a process whose PID is equal to that of argument
+and is a zombie process, meaning that it must reside on the
+.Va zombproc
+list,
+.Fn zpfind
+returns a pointer to that
+.Vt proc
+structure.
+.Pp
+Both
+.Fn pfind
+and
+.Fn zpfind
+lock the
+.Vt proc
+structure that is returned using
+.Fn PROC_LOCK "p" .
+.Sh RETURN VALUES
+.Fn pfind
+and
+.Fn zpfind
+return a pointer to a
+.Vt proc
+structure on success and a
+.Dv NULL
+on failure.
+.Sh SEE ALSO
+.Xr pgfind 9
+.Sh AUTHORS
+This manual page was written by
+.An Evan Sarmiento Aq kaworu@sektor7.ath.cx .
diff --git a/share/man/man9/pgfind.9 b/share/man/man9/pgfind.9
new file mode 100644
index 0000000..96abd0a
--- /dev/null
+++ b/share/man/man9/pgfind.9
@@ -0,0 +1,65 @@
+.\" Copyright (c) 2001 Evan Sarmiento.
+.\" 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$
+.\"
+.Dd August 8, 2001
+.Os
+.Dt PGFIND 9
+.Sh NAME
+.Nm pgfind
+.Nd "locate a process group by number"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Ft "struct pgrp *"
+.Fn pgfind "pid_t pgid"
+.Sh DESCRIPTION
+The
+.Fn pgfind
+function takes a
+.Fa pgid
+as its argument and returns a pointer to the
+.Vt pgrp
+structure whose
+.Va pg_id
+is specified in the argument.
+.Pp
+.Fn pgfind
+locks the
+.Vt pgrp
+structure that is returned.
+.Sh RETURN VALUES
+The
+.Fn pgfind
+function returns
+.Dv NULL
+on failure or a pointer to a
+.Vt pgrp
+structure on successful completion.
+.Sh SEE ALSO
+.Xr pfind 9
+.Sh AUTHORS
+This manual page was written by
+.An Evan Sarmiento Aq kaworu@sektor7.ath.cx .
diff --git a/share/man/man9/physio.9 b/share/man/man9/physio.9
new file mode 100644
index 0000000..c4f24a8
--- /dev/null
+++ b/share/man/man9/physio.9
@@ -0,0 +1,138 @@
+.\" $NetBSD: physio.9,v 1.2 1996/11/11 00:05:12 lukem Exp $
+.\"
+.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 8, 2004
+.Dt PHYSIO 9
+.Os
+.Sh NAME
+.Nm physio
+.Nd initiate I/O on raw devices
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/bio.h
+.In sys/buf.h
+.Ft int
+.Fn physio "dev_t dev" "struct uio *uio" "int ioflag"
+.Sh DESCRIPTION
+The
+.Fn physio
+is a helper function typically called from character device
+.Fn read
+and
+.Fn write
+routines to start I/O on a user process buffer.
+The maximum amount of data to transfer with each call
+is determined by
+.Fa dev->si_iosize_max .
+The
+.Fn physio
+call converts the I/O request into a
+.Fn strategy
+request and passes the new request to the driver's
+.Fn strategy
+routine for processing.
+.Pp
+Since
+.Fa uio
+normally describes user space addresses,
+.Fn physio
+needs to lock those pages into memory.
+This is done by calling
+.Fn vmapbuf
+for the appropriate pages.
+.Fn physio
+always awaits the completion of the entire requested transfer before
+returning, unless an error condition is detected earlier.
+.Pp
+A break-down of the arguments follows:
+.Bl -tag -width indent
+.It Fa dev
+The device number identifying the device to interact with.
+.It Fa uio
+The description of the entire transfer as requested by the user process.
+Currently, the results of passing a
+.Fa uio
+structure with the
+.Va uio_segflg
+set to anything other than
+.Dv UIO_USERSPACE
+are undefined.
+.It Fa ioflag
+The ioflag argument from the
+.Fn read
+or
+.Fn write
+function calling
+.Fn physio .
+.El
+.Sh RETURN VALUES
+If successful
+.Fn physio
+returns 0.
+.Er EFAULT
+is returned if the address range described by
+.Fa uio
+is not accessible by the requesting process.
+.Fn physio
+will return any error resulting from calls to the device strategy routine,
+by examining the
+.Dv B_ERROR
+buffer flag and the
+.Va b_error
+field.
+Note that the actual transfer size may be less than requested by
+.Fa uio
+if the device signals an
+.Dq "end of file"
+condition.
+.Sh SEE ALSO
+.Xr read 2 ,
+.Xr write 2
+.Sh HISTORY
+The
+.Nm
+manual page is originally from
+.Nx
+with minor changes for applicability with
+.Fx .
+.Pp
+The
+.Nm
+call has been completely re-written for providing higher
+I/O and paging performance.
diff --git a/share/man/man9/pmap.9 b/share/man/man9/pmap.9
new file mode 100644
index 0000000..aa6d4a3
--- /dev/null
+++ b/share/man/man9/pmap.9
@@ -0,0 +1,130 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP 9
+.Os
+.Sh NAME
+.Nm pmap
+.Nd machine-dependent portion of virtual memory subsystem
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Sh DESCRIPTION
+The
+.Nm
+module is the machine-dependent portion of the
+.Fx
+VM (Virtual Memory) sub-system.
+Each function documented herein must have its own
+architecture-dependent implementation.
+.Pp
+The
+.Nm
+module
+is responsible for managing hardware-dependent objects such as page tables,
+address maps, TLBs, etc.
+.Pp
+Machine-dependent code must provide the header file
+.In machine/pmap.h .
+This file contains the definition of the
+.Vt pmap
+structure:
+.Bd -literal -offset indent
+struct pmap {
+ /* Contents defined by pmap implementation. */
+};
+typedef struct pmap *pmap_t;
+.Ed
+.Pp
+This header file may also define other data structures used by the
+.Nm
+implementation.
+.Pp
+The header file
+.In vm/pmap.h
+defines a structure for tracking
+.Nm
+statistics (see below).
+This structure is defined as:
+.Bd -literal -offset indent
+struct pmap_statistics {
+ long resident_count; /* number of mapped pages */
+ long wired_count; /* number of wired pages */
+};
+.Ed
+.Pp
+The implementation's
+.Vt "struct pmap"
+must contain an instance of this structure having the name
+.Va pm_stats ,
+and it must be updated by the implementation after each relevant
+.Nm
+operation.
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr pmap_activate 9 ,
+.Xr pmap_change_wiring 9 ,
+.Xr pmap_clear_modify 9 ,
+.Xr pmap_clear_reference 9 ,
+.Xr pmap_copy 9 ,
+.Xr pmap_copy_page 9 ,
+.Xr pmap_enter 9 ,
+.Xr pmap_extract 9 ,
+.Xr pmap_extract_and_hold 9 ,
+.Xr pmap_growkernel 9 ,
+.Xr pmap_init 9 ,
+.Xr pmap_init2 9 ,
+.Xr pmap_is_modified 9 ,
+.Xr pmap_is_prefaultable 9 ,
+.Xr pmap_map 9 ,
+.Xr pmap_mincore 9 ,
+.Xr pmap_object_init_pt 9 ,
+.Xr pmap_page_exists_quick 9 ,
+.Xr pmap_page_init 9 ,
+.Xr pmap_page_protect 9 ,
+.Xr pmap_pinit 9 ,
+.Xr pmap_pinit0 9 ,
+.Xr pmap_pinit2 9 ,
+.Xr pmap_protect 9 ,
+.Xr pmap_qenter 9 ,
+.Xr pmap_qremove 9 ,
+.Xr pmap_release 9 ,
+.Xr pmap_remove 9 ,
+.Xr pmap_remove_all 9 ,
+.Xr pmap_remove_pages 9 ,
+.Xr pmap_resident_count 9 ,
+.Xr pmap_ts_modified 9 ,
+.Xr pmap_wired_count 9 ,
+.Xr pmap_zero_area 9 ,
+.Xr pmap_zero_idle 9 ,
+.Xr pmap_zero_page 9 ,
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_activate.9 b/share/man/man9/pmap_activate.9
new file mode 100644
index 0000000..840d8a1
--- /dev/null
+++ b/share/man/man9/pmap_activate.9
@@ -0,0 +1,51 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_ACTIVATE 9
+.Os
+.Sh NAME
+.Nm pmap_activate
+.Nd activate a physical map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_activate "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn pmap_activate
+function activates the physical map for a user thread
+.Fa td .
+This function must be called before the thread's address space may be
+accessed.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_change_wiring.9 b/share/man/man9/pmap_change_wiring.9
new file mode 100644
index 0000000..f3952f8
--- /dev/null
+++ b/share/man/man9/pmap_change_wiring.9
@@ -0,0 +1,68 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_CHANGE_WIRING 9
+.Os
+.Sh NAME
+.Nm pmap_change_wiring
+.Nd change physical wiring for a map or virtual address pair
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_change_wiring "pmap_t pmap" "vm_offset_t va" "boolean_t wired"
+.Sh DESCRIPTION
+The
+.Fn pmap_change_wiring
+function changes the wiring attribute for the page at virtual address
+.Fa va
+in the physical map
+.Fa pmap .
+A wired page gets its name from being
+.Dq wired
+into the system page tables so that it will not be paged out.
+.Pp
+The mapping must already exist in the
+.Fa pmap .
+If
+.Fa wired
+is
+.Dv TRUE ,
+the map's wired page count will be incremented; if
+.Dv FALSE ,
+it will be decremented.
+.Pp
+It is typically called by the
+.Fn vm_fault_unwire
+function.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_clear_modify.9 b/share/man/man9/pmap_clear_modify.9
new file mode 100644
index 0000000..002300b
--- /dev/null
+++ b/share/man/man9/pmap_clear_modify.9
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_CLEAR_MODIFY 9
+.Os
+.Sh NAME
+.Nm pmap_clear_modify ,
+.Nm pmap_clear_reference
+.Nd set information about physical pages
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_clear_modify "vm_page_t m"
+.Ft void
+.Fn pmap_clear_reference "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn pmap_clear_modify
+function clears the
+.Dq modified
+bit on the physical page
+.Fa m .
+.Pp
+The
+.Fn pmap_clear_reference
+function clears the
+.Dq referenced
+bit on the physical page
+.Fa m .
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr pmap_is_modified 9 ,
+.Xr pmap_ts_referenced 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_copy.9 b/share/man/man9/pmap_copy.9
new file mode 100644
index 0000000..1541fa5
--- /dev/null
+++ b/share/man/man9/pmap_copy.9
@@ -0,0 +1,84 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_COPY 9
+.Os
+.Sh NAME
+.Nm pmap_copy ,
+.Nm pmap_copy_page
+.Nd copy physical memory pages
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fo pmap_copy
+.Fa "pmap_t dst_pmap" "pmap_t src_pmap" "vm_offset_t dst_addr"
+.Fa "vm_size_t len" "vm_offset_t src_addr"
+.Fc
+.Ft void
+.Fn pmap_copy_page "vm_page_t src" "vm_page_t dst"
+.Sh DESCRIPTION
+The
+.Fn pmap_copy
+function copies the range specified by
+.Fa src_addr
+and
+.Fa len
+from the source physical map
+.Fa src_pmap
+to the destination physical map
+.Fa dst_pmap
+at the address
+.Fa dst_addr .
+.Pp
+The
+.Fn pmap_copy_page
+function
+copies the physical page
+.Fa src
+to the physical page
+.Fa dst ,
+by mapping the page into kernel virtual address space (KVA), and using
+.Fn bcopy
+to copy the page.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn pmap_copy
+routine is only advisory and need not do anything.
+Actually implementing it may seriously reduce system performance.
+.Pp
+The
+.Fn pmap_copy_page
+routine only operates upon a single page.
+.Sh SEE ALSO
+.Xr bcopy 3 ,
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_enter.9 b/share/man/man9/pmap_enter.9
new file mode 100644
index 0000000..2e52453
--- /dev/null
+++ b/share/man/man9/pmap_enter.9
@@ -0,0 +1,68 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_ENTER 9
+.Os
+.Sh NAME
+.Nm pmap_enter
+.Nd insert a virtual page into a physical map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fo pmap_enter
+.Fa "pmap_t pmap" "vm_offset_t va" "vm_page_t p" "vm_prot_t prot"
+.Fa "boolean_t wired"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pmap_enter
+function inserts the given physical page
+.Fa p ,
+into the physical map
+.Fa pmap ,
+at the virtual address
+.Fa va ,
+with the protection
+.Fa prot .
+If
+.Fa wired
+is
+.Dv TRUE ,
+then increment the wired count for the page as soon as the mapping
+is inserted into
+.Fa pmap .
+.Sh IMPLEMENTATION NOTES
+This routine MAY NOT lazy-evaluate the entry; it is required by
+specification to make the requested entry at the time it is called.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_extract.9 b/share/man/man9/pmap_extract.9
new file mode 100644
index 0000000..0622b65
--- /dev/null
+++ b/share/man/man9/pmap_extract.9
@@ -0,0 +1,95 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_EXTRACT 9
+.Os
+.Sh NAME
+.Nm pmap_extract ,
+.Nm pmap_extract_and_hold
+.Nd map a virtual address to a physical page
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft vm_paddr_t
+.Fn pmap_extract "pmap_t pmap" "vm_offset_t va"
+.Ft vm_paddr_t
+.Fn pmap_extract_and_hold "pmap_t pmap" "vm_offset_t va" "vm_prot_t prot"
+.Sh DESCRIPTION
+The
+.Fn pmap_extract
+function maps a virtual address to a physical page.
+In certain situations, callers may use
+.Fn pmap_extract_and_hold
+instead, to ensure that the returned page is held.
+.Pp
+The
+.Fn pmap_extract_and_hold
+function maps a virtual address to a physical page, and atomically holds
+the returned page for use by the caller, only if the mapping permits
+the given page protection.
+.Sh IMPLEMENTATION NOTES
+Currently, the page protection requested by the caller is not verified.
+.Sh RETURN VALUES
+The
+.Fn pmap_extract
+function will return the physical page address associated with the
+virtual address
+.Fa va
+inside the physical map
+.Fa pmap .
+If the mapping does not exist, or if the
+.Fa pmap
+parameter is
+.Dv NULL ,
+then
+.Dv NULL
+will be returned.
+.Pp
+The
+.Fn pmap_extract_and_hold
+function will return the physical page address associated with the
+virtual address
+.Fa va
+inside the physical map
+.Fa pmap .
+If the mapping does not exist, the result is a no-op, and
+.Dv NULL
+will
+be returned.
+.Sh SEE ALSO
+.Xr mutex 9 ,
+.Xr pmap 9
+.Sh AUTHORS
+.An -nosplit
+The
+.Fn pmap_extract_and_hold
+function was implemented by
+.An Alan L. Cox Aq alc@imimic.com .
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_growkernel.9 b/share/man/man9/pmap_growkernel.9
new file mode 100644
index 0000000..f038fb5
--- /dev/null
+++ b/share/man/man9/pmap_growkernel.9
@@ -0,0 +1,51 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_GROWKERNEL 9
+.Os
+.Sh NAME
+.Nm pmap_growkernel
+.Nd grow the kernel virtual address (KVA) space
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_growkernel "vm_offset_t addr"
+.Sh DESCRIPTION
+The
+.Fn pmap_growkernel
+function grows the kernel virtual address space to the virtual address
+.Fa addr .
+.Pp
+It will allocate more page entries if required.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_init.9 b/share/man/man9/pmap_init.9
new file mode 100644
index 0000000..1a8d74c
--- /dev/null
+++ b/share/man/man9/pmap_init.9
@@ -0,0 +1,65 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd June 10, 2005
+.Dt PMAP_INIT 9
+.Os
+.Sh NAME
+.Nm pmap_init ,
+.Nm pmap_init2
+.Nd initialize the pmap subsystem
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_init "void"
+.Ft void
+.Fn pmap_init2 "void"
+.Sh DESCRIPTION
+The
+.Fn pmap_init
+function initializes the
+.Xr pmap 9
+sub-system.
+It is called during system initialization by
+.Fn vm_init ,
+to initialize any structures that the
+.Nm
+system needs in order to map between physical and virtual memory.
+.Pp
+The
+.Fn pmap_init2
+function initializes a zone for the PV entries.
+These are used to implement page sharing at the physical level.
+A high water mark is set so that the system can recover from
+excessive numbers of PV entries.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_is_modified.9 b/share/man/man9/pmap_is_modified.9
new file mode 100644
index 0000000..591a985
--- /dev/null
+++ b/share/man/man9/pmap_is_modified.9
@@ -0,0 +1,71 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_IS_MODIFIED 9
+.Os
+.Sh NAME
+.Nm pmap_is_modified ,
+.Nm pmap_ts_modified
+.Nd return information about physical pages
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft boolean_t
+.Fn pmap_is_modified "vm_page_t m"
+.Ft int
+.Fn pmap_ts_referenced "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn pmap_is_modified
+and
+.Fn pmap_ts_referenced
+functions return information about physical pages.
+.Sh RETURN VALUES
+The
+.Fn pmap_is_modified
+function returns the status of the
+.Dq "page modified"
+bit for the physical page
+.Fa m .
+.Pp
+The
+.Fn pmap_ts_referenced
+function returns a count of reference bits for a page
+.Fa m ,
+clearing those bits.
+It is not necessary for every reference bit to be cleared, but it is
+necessary that 0 only be returned when there are no remaining reference
+bits set on the page.
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr pmap_clear_modify 9 ,
+.Xr pmap_clear_reference 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_is_prefaultable.9 b/share/man/man9/pmap_is_prefaultable.9
new file mode 100644
index 0000000..c6f2870
--- /dev/null
+++ b/share/man/man9/pmap_is_prefaultable.9
@@ -0,0 +1,57 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_IS_PREFAULTABLE 9
+.Os
+.Sh NAME
+.Nm pmap_is_prefaultable
+.Nd determine if a page may be prefaulted
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft boolean_t
+.Fn pmap_is_prefaultable "pmap_t pmap" "vm_offset_t va"
+.Sh DESCRIPTION
+The
+.Fn pmap_is_prefaultable
+function provides a means of determining if the page residing at
+virtual address
+.Fa va
+in the physical map
+.Fa pmap
+may be pre-faulted into main memory.
+.Pp
+This is a helper function which is called by
+.Xr vm_fault_prefault 9 .
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr vm_fault_prefault 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_map.9 b/share/man/man9/pmap_map.9
new file mode 100644
index 0000000..2c472fe
--- /dev/null
+++ b/share/man/man9/pmap_map.9
@@ -0,0 +1,80 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_MAP 9
+.Os
+.Sh NAME
+.Nm pmap_map
+.Nd map a physical memory range into kernel virtual address (KVA) space
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft vm_offset_t
+.Fo pmap_map
+.Fa "vm_offset_t *virt" "vm_paddr_t start" "vm_paddr_t end" "int prot"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pmap_map
+function maps a range of physical addresses into kernel virtual address (KVA)
+space, from
+.Fa start
+to
+.Fa end ,
+with protection bits
+.Fa prot .
+.Pp
+The value passed in
+.Fa *virt
+is treated as a hint for the virtual address of the beginning of the mapping.
+.Sh IMPLEMENTATION NOTES
+The
+.Fa prot
+argument is currently ignored by machine-dependent implementations.
+.Pp
+Architectures which can support a direct mapped physical to virtual
+region can return the appropriate address within that region, leaving
+.Fa *virt
+unchanged.
+.Sh RETURN VALUES
+The
+.Fn pmap_map
+function returns the virtual address of the beginning of the mapping, if
+the mapping was successfully made;
+.Fa *virt
+will also be updated with the first usable address after the mapped region.
+.Pp
+If the function is unsuccessful,
+.Dv NULL
+is returned.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_mincore.9 b/share/man/man9/pmap_mincore.9
new file mode 100644
index 0000000..d0e45ea
--- /dev/null
+++ b/share/man/man9/pmap_mincore.9
@@ -0,0 +1,74 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_MINCORE 9
+.Os
+.Sh NAME
+.Nm pmap_mincore
+.Nd determine if a virtual address is resident in physical memory
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft int
+.Fn pmap_mincore "pmap_t pmap" "vm_offset_t addr"
+.Sh DESCRIPTION
+The
+.Fn pmap_mincore
+function determines if the page at the virtual address
+.Fa addr
+in the physical map
+.Fa pmap
+is resident in physical memory.
+It is the machine-dependent interface used by the
+.Xr mincore 2
+system call.
+.Sh RETURN VALUES
+If the page is resident in physical memory,
+a mask of flags is returned,
+whose meaning is documented in
+.Xr mincore 2 ;
+otherwise,
+0
+is returned.
+.Pp
+The
+.Fa pmap
+must exist and
+.Fa addr
+must be mapped into the
+.Fa pmap .
+If any error occurs, the machine-dependent implementation should
+return
+0.
+.Sh SEE ALSO
+.Xr mincore 2 ,
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_object_init_pt.9 b/share/man/man9/pmap_object_init_pt.9
new file mode 100644
index 0000000..90ae75f
--- /dev/null
+++ b/share/man/man9/pmap_object_init_pt.9
@@ -0,0 +1,73 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_OBJECT_INIT_PT 9
+.Os
+.Sh NAME
+.Nm pmap_object_init_pt
+.Nd initialize page tables for a VM object
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fo pmap_object_init_pt
+.Fa "pmap_t pmap" "vm_offset_t addr" "vm_object_t object"
+.Fa "vm_pindex_t pindex" "vm_size_t size" "int limit"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pmap_object_init_pt
+function preloads the page table entries into the specified physical map
+.Fa pmap ,
+for the given
+.Fa object
+at the virtual address
+.Fa addr ,
+for
+.Fa size
+bytes, beginning at the page index
+.Fa pindex
+within the object.
+The map bits
+.Fa limit
+are heeded when creating the mapping.
+.Sh IMPLEMENTATION NOTES
+This function is not strictly required by an architecture's
+.Xr pmap 9
+implementation, but it does provide performance benefits if implemented.
+.Pp
+It is intended to eliminate the blast of soft faults on process
+startup, and immediately following a call to
+.Xr mmap 2 .
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_page_exists_quick.9 b/share/man/man9/pmap_page_exists_quick.9
new file mode 100644
index 0000000..8db2580
--- /dev/null
+++ b/share/man/man9/pmap_page_exists_quick.9
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_PAGE_EXISTS_QUICK 9
+.Os
+.Sh NAME
+.Nm pmap_page_exists_quick
+.Nd determine if a page exists in a physical map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft boolean_t
+.Fn pmap_page_exists_quick "pmap_t pmap" "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn pmap_page_exists_quick
+function is used to quickly determine if the page
+.Fa m
+exists in the physical map
+.Fa pmap .
+It is typically called from the VM paging code.
+.Sh IMPLEMENTATION NOTES
+The PV count used above may be changed upwards or downwards in future;
+it is only necessary that
+.Dv TRUE
+be returned for a small subset of pmaps for proper page aging.
+.Sh RETURN VALUES
+The
+.Fn pmap_page_exists_quick
+returns
+.Dv TRUE
+only if the PV entry for the physical map
+.Fa pmap
+is one of the first 16 PVs linked from the page
+.Fa m .
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_page_init.9 b/share/man/man9/pmap_page_init.9
new file mode 100644
index 0000000..65f72ec
--- /dev/null
+++ b/share/man/man9/pmap_page_init.9
@@ -0,0 +1,51 @@
+.\"
+.\" Copyright (c) 2005 Hiten Pandya <hmp@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$
+.\"
+.Dd June 10, 2005
+.Dt PMAP_PAGE_INIT 9
+.Os
+.Sh NAME
+.Nm pmap_page_init
+.Nd initialize machine-dependent fields of a VM page
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_page_init "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn pmap_page_init
+function initializes the machine-dependent fields of a VM page structure.
+This procedure is normally used when adding new pages to the VM page
+queue management lists.
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr pmap_pinit 9
+.Sh AUTHORS
+This manual page was written by
+.An Hiten Pandya Aq hmp@FreeBSD.org .
diff --git a/share/man/man9/pmap_page_protect.9 b/share/man/man9/pmap_page_protect.9
new file mode 100644
index 0000000..f77d57d
--- /dev/null
+++ b/share/man/man9/pmap_page_protect.9
@@ -0,0 +1,67 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_PROTECT 9
+.Os
+.Sh NAME
+.Nm pmap_page_protect ,
+.Nm pmap_protect
+.Nd set physical page protection
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_page_protect "vm_page_t m" "vm_prot_t prot"
+.Ft void
+.Fo pmap_protect
+.Fa "pmap_t pmap" "vm_offset_t sva" "vm_offset_t eva" "vm_prot_t pr"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pmap_page_protect
+function lowers the physical page permissions to
+.Fa prot
+for all mappings of a given page
+.Fa m .
+.Pp
+The
+.Fn pmap_protect
+function sets the physical page permissions to
+.Fa prot
+for all physical pages in the physical map
+.Fa pmap
+in the virtual address range between
+.Fa sva
+and
+.Fa eva .
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_pinit.9 b/share/man/man9/pmap_pinit.9
new file mode 100644
index 0000000..d521729
--- /dev/null
+++ b/share/man/man9/pmap_pinit.9
@@ -0,0 +1,67 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_PINIT 9
+.Os
+.Sh NAME
+.Nm pmap_pinit ,
+.Nm pmap_pinit0
+.Nd initialize pmap structures
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_pinit "pmap_t pmap"
+.Ft void
+.Fn pmap_pinit0 "pmap_t pm"
+.Sh DESCRIPTION
+The
+.Fn pmap_pinit
+function initializes the preallocated and zeroed structure
+.Fa pmap ,
+such as one in a
+.Vt vmspace
+structure.
+.Pp
+The
+.Fn pmap_pinit0
+function initializes the physical map
+.Fa pm ,
+associated with process 0, the first process created in the system.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn pmap_pinit2
+function has been deprecated, and should be implemented as a stub
+until further notice.
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr pmap_growkernel 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_qenter.9 b/share/man/man9/pmap_qenter.9
new file mode 100644
index 0000000..b148b69
--- /dev/null
+++ b/share/man/man9/pmap_qenter.9
@@ -0,0 +1,79 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_QENTER 9
+.Os
+.Sh NAME
+.Nm pmap_qenter ,
+.Nm pmap_qremove
+.Nd manage temporary kernel space mappings
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_qenter "vm_offset_t sva" "vm_page_t *m" "int count"
+.Ft void
+.Fn pmap_qremove "vm_offset_t sva" "int count"
+.Sh DESCRIPTION
+The
+.Fn pmap_qenter
+function accepts a linear array of
+.Fa count
+pointers to wired pages
+.Fa *m ,
+and enters each of these pages into the kernel virtual address (KVA) space,
+beginning at the address
+.Fa sva .
+.Pp
+The
+.Fn pmap_qremove
+function tears out a mapping from the kernel virtual address space,
+beginning at
+.Fa sva
+and for
+.Fa count
+pages.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn pmap_qenter
+function is intended for temporary mappings that do not require page
+modification or reference counting.
+Old mappings are simply overwritten.
+The pages
+.Em must
+be wired into physical memory.
+.Pp
+The corresponding
+.Fn pmap_qremove
+function is intended to remove such temporary mappings.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_release.9 b/share/man/man9/pmap_release.9
new file mode 100644
index 0000000..ef29641
--- /dev/null
+++ b/share/man/man9/pmap_release.9
@@ -0,0 +1,58 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_RELEASE 9
+.Os
+.Sh NAME
+.Nm pmap_release
+.Nd release resources held by a physical map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_release "pmap_t pmap"
+.Sh DESCRIPTION
+The
+.Fn pmap_release
+function releases any resources held by the physical map
+.Fa pmap .
+This function is
+called when a pmap initialized by the corresponding function,
+.Fn pmap_pinit
+is being released.
+.Sh IMPLEMENTATION NOTES
+This function should only be called if
+.Fa pmap
+no longer contains any valid mappings.
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr pmap_pinit 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_remove.9 b/share/man/man9/pmap_remove.9
new file mode 100644
index 0000000..12664dc
--- /dev/null
+++ b/share/man/man9/pmap_remove.9
@@ -0,0 +1,84 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_REMOVE 9
+.Os
+.Sh NAME
+.Nm pmap_remove ,
+.Nm pmap_remove_all ,
+.Nm pmap_remove_pages
+.Nd remove pages from a physical map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_remove "pmap_t pmap" "vm_offset_t sva" "vm_offset_t eva"
+.Ft void
+.Fn pmap_remove_all "vm_page_t m"
+.Ft void
+.Fn pmap_remove_pages "pmap_t pmap"
+.Sh DESCRIPTION
+The
+.Fn pmap_remove
+function removes the range of addresses between
+.Fa sva
+and
+.Fa eva
+from the physical map
+.Fa pmap .
+If
+.Fa eva
+is less than
+.Fa sva ,
+then the result is undefined.
+It is assumed that both
+.Fa sva
+and
+.Fa eva
+are page-aligned addresses.
+.Pp
+The
+.Fn pmap_remove_all
+removes the physical page
+.Fa m
+from all physical maps in which it resides, and reflects back the modify
+bits to the appropriate pager.
+.Pp
+The
+.Fn pmap_remove_pages
+function removes all user pages from the physical map
+.Fa pmap .
+This function is called when a process exits to run down its address space
+more quickly than would be the case for calling
+.Fn pmap_remove .
+.Sh SEE ALSO
+.Fn pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_resident_count.9 b/share/man/man9/pmap_resident_count.9
new file mode 100644
index 0000000..bf39548
--- /dev/null
+++ b/share/man/man9/pmap_resident_count.9
@@ -0,0 +1,74 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_RESIDENT_COUNT 9
+.Os
+.Sh NAME
+.Nm pmap_resident_count ,
+.Nm pmap_wired_count
+.Nd return page resident and wiring statistics
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft long
+.Fn pmap_resident_count "pmap_t pmap"
+.Ft long
+.Fn pmap_wired_count "pmap_t pmap"
+.Sh DESCRIPTION
+The
+.Fn pmap_resident_count
+and
+.Fn pmap_wired_count
+macros allow
+.Nm pmap
+consumers to retrieve statistics from the
+.Va pm_stats
+member of the machine-dependent structure
+.Vt struct pmap .
+.Sh IMPLEMENTATION NOTES
+Both functions are defined as in-line macros.
+The members which they access have type
+.Vt long .
+.Sh RETURN VALUES
+The
+.Fn pmap_resident_count
+returns the number of pages in the physical map
+.Va pmap
+which are currently resident in main memory.
+.Pp
+The
+.Fn pmap_wired_count
+returns the number of pages in the physical map
+.Va pmap
+which are currently wired into in main memory.
+.Sh SEE ALSO
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/pmap_zero_page.9 b/share/man/man9/pmap_zero_page.9
new file mode 100644
index 0000000..541eef0
--- /dev/null
+++ b/share/man/man9/pmap_zero_page.9
@@ -0,0 +1,72 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt PMAP_ZERO 9
+.Os
+.Sh NAME
+.Nm pmap_zero_page ,
+.Nm pmap_zero_area ,
+.Nm pmap_zero_idle
+.Nd zero-fill a page using machine-dependent optimizations
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn pmap_zero_page "vm_page_t m"
+.Ft void
+.Fn pmap_zero_page_area "vm_page_t m" "int off" "int size"
+.Ft void
+.Fn pmap_zero_page_idle "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn pmap_zero_page
+function zero-fills an entire page using machine-dependent optimizations.
+The
+.Fn pmap_zero_page_area
+function is used to zero-fill an area of a page.
+The range specified must not cross a page boundary; it must be contained
+entirely within a single page.
+.Pp
+The
+.Fn pmap_zero_page_idle
+interface is used by the
+.Nm vm_pagezero
+process.
+The system-wide
+.Va Giant
+lock should not be required to be held in order to call this interface.
+.Sh IMPLEMENTATION NOTES
+This function is required to be implemented for each architecture supported by
+.Fx .
+.Sh SEE ALSO
+.Xr bzero 3 ,
+.Xr pmap 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/printf.9 b/share/man/man9/printf.9
new file mode 100644
index 0000000..571e7e6
--- /dev/null
+++ b/share/man/man9/printf.9
@@ -0,0 +1,175 @@
+.\"
+.\" Copyright (c) 2001 Andrew R. Reiter
+.\" Copyright (c) 2004 Joerg Wunsch
+.\" 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$
+.\"
+.Dd September 8, 2006
+.Dt PRINTF 9
+.Os
+.Sh NAME
+.Nm printf , uprintf , tprintf, log
+.Nd formatted output conversion
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft int
+.Fn printf "const char *fmt" ...
+.Ft void
+.Fn tprintf "struct proc *p" "int pri" "const char *fmt" ...
+.Ft int
+.Fn uprintf "const char *fmt" ...
+.In sys/syslog.h
+.Ft void
+.Fn log "int pri" "const char *fmt" ...
+.Sh DESCRIPTION
+The
+.Xr printf 9
+family of functions are similar to the
+.Xr printf 3
+family of functions.
+The different functions each use a different output stream.
+The
+.Fn uprintf
+function outputs to the current process' controlling tty, while
+.Fn printf
+writes to the console as well as to the logging facility.
+The
+.Fn tprintf
+function outputs to the tty associated with the process
+.Fa p
+and the logging facility if
+.Fa pri
+is not \-1.
+The
+.Fn log
+function sends the message to the kernel logging facility, using
+the log level as indicated by
+.Fa pri .
+.Pp
+Each of these related functions use the
+.Fa fmt
+parameter in the same manner as
+.Xr printf 3 .
+However,
+.Xr printf 9
+adds two other conversion specifiers.
+.Pp
+The
+.Cm \&%b
+identifier expects two arguments: an
+.Vt int
+and a
+.Vt "char *" .
+These are used as a register value and a print mask for decoding bitmasks.
+The print mask is made up of two parts: the base and the
+arguments.
+The base value is the output base expressed as an integer value;
+for example, \e10 gives octal and \e20 gives hexadecimal.
+The arguments are made up of a sequence of bit identifiers.
+Each bit identifier begins with an integer value which is the number of the
+bit (starting from 1) this identifier describes.
+The rest of the identifier is a string of characters containing the name of
+the bit.
+The string is terminated by either the bit number at the start of the next
+bit identifier or
+.Dv NUL
+for the last bit identifier.
+.Pp
+The
+.Cm \&%D
+identifier is meant to assist in hexdumps.
+It requires two arguments: a
+.Vt "u_char *"
+pointer and a
+.Vt "char *"
+string.
+The memory pointed to be the pointer is output in hexadecimal one byte at
+a time.
+The string is used as a delimiter between individual bytes.
+If present, a width directive will specify the number of bytes to display.
+By default, 16 bytes of data are output.
+.Pp
+The
+.Fn log
+function uses
+.Xr syslog 3
+level values
+.Dv LOG_DEBUG
+through
+.Dv LOG_EMERG
+for its
+.Fa pri
+parameter (mistakenly called
+.Sq priority
+here).
+Alternatively, if a
+.Fa pri
+of \-1 is given, the message will be appended to the last log message
+started by a previous call to
+.Fn log .
+As these messages are generated by the kernel itself, the facility will
+always be
+.Dv LOG_KERN .
+.Sh RETURN VALUES
+The
+.Fn printf
+and the
+.Fn uprintf
+functions return the number of characters displayed.
+.Sh EXAMPLES
+This example demonstrates the use of the
+.Cm \&%b
+and
+.Cm \&%D
+conversion specifiers.
+The function
+.Bd -literal -offset indent
+void
+printf_test(void)
+{
+
+ printf("reg=%b\en", 3, "\e10\e2BITTWO\e1BITONE\en");
+ printf("out: %4D\en", "AAAA", ":");
+}
+.Ed
+.Pp
+will produce the following output:
+.Bd -literal -offset indent
+reg=3<BITTWO,BITONE>
+out: 41:41:41:41
+.Ed
+.Pp
+The call
+.Bd -literal -offset indent
+log(LOG_DEBUG, "%s%d: been there.\en", sc->sc_name, sc->sc_unit);
+.Ed
+.Pp
+will add the appropriate debug message at priority
+.Dq Li kern.debug
+to the system log.
+.Sh SEE ALSO
+.Xr printf 3 ,
+.Xr syslog 3
diff --git a/share/man/man9/prison_check.9 b/share/man/man9/prison_check.9
new file mode 100644
index 0000000..a8ba040
--- /dev/null
+++ b/share/man/man9/prison_check.9
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (c) 2003 Joseph Koshy <jkoshy@freebsd.org>
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd December 11, 2003
+.Os
+.Dt PRISON_CHECK 9
+.Sh NAME
+.Nm prison_check
+.Nd determine if two credentials belong to the same jail
+.Sh SYNOPSIS
+.In sys/jail.h
+.Ft int
+.Fn prison_check "struct ucred *cred1" "struct ucred *cred2"
+.Sh DESCRIPTION
+This function can be used to determine if the two credentials
+.Fa cred1
+and
+.Fa cred2
+belong to the same jail.
+.Sh RETURN VALUES
+The
+.Fn prison_check
+function
+returns
+.Er ESRCH
+if
+.Fa cred1
+has been jailed, and
+.Fa cred1
+and
+.Fa cred2
+do not belong to the same jail.
+In all other cases,
+.Fn prison_check
+returns zero.
+.Sh SEE ALSO
+.Xr jail 2
diff --git a/share/man/man9/priv.9 b/share/man/man9/priv.9
new file mode 100644
index 0000000..def1ca3
--- /dev/null
+++ b/share/man/man9/priv.9
@@ -0,0 +1,122 @@
+.\"-
+.\" 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$
+.\"
+.Dd August 30, 2006
+.Dt PRIV 9
+.Os
+.Sh NAME
+.Nm priv
+.Nd kernel privilege checking API
+.Sh SYNOPSIS
+.In sys/priv.h
+.Ft int
+.Fn priv_check "struct thread *td" "int priv"
+.Ft int
+.Fn priv_check_cred "struct ucred *cred" "int priv" "int flags"
+.Sh DESCRIPTION
+The
+.Nm
+interfaces check to see if specific system privileges are granted to the
+passed thread,
+.Fa td ,
+or credential,
+.Fa cred .
+This interface replaces the now removed
+.Xr suser 9
+privilege checking interface.
+Privileges typically represent rights in one of two categories: the right to
+manage a particular component of the system, or an exemption to a specific
+policy or access control list.
+The caller identifies the desired privilege via the
+.Fa priv
+argument.
+The optional flags argument,
+.Fa flags ,
+is currently unused.
+.Ss Privilege Policies
+Privileges are typically granted based on one of two base system policies:
+the superuser policy, which grants privilege based on the effective (or
+sometimes real) UID having a value of 0, and the
+.Xr jail 2
+policy, which permits only certain privileges to be granted to processes in a
+jail.
+The set of available privileges may also be influenced by the TrustedBSD MAC
+Framework, described in
+.Xr mac 9 .
+.Sh IMPLEMENTATION NOTES
+When adding a new privilege check to a code path, first check the complete
+list of current privileges in
+.Pa sys/priv.h
+to see if one already exists for the class of privilege required.
+Only if there is not an exact match should a new privilege be added to the
+privilege list.
+As privilege numbers becomes encoded in the kernel module ABI, privilege
+constants must not be changed as any kernel modules depending on privileges
+will then need to be recompiled.
+When adding a new privilege, be certain to also determine whether it should
+be listed in
+.Fn prison_priv_check ,
+which includes a complete list of privileges granted to the root user in
+.Xr jail 2 .
+.Pp
+Certain catch-all privileges exist, such as
+.Dv PRIV_DRIVER ,
+intended to be used by device drivers, rather than adding a new
+driver-specific privilege.
+.Sh RETURN VALUES
+Typically, 0 will be returned for success, and
+.Er EPERM
+will be returned on failure.
+Most consumers of
+.Nm
+will wish to directly return the error code from a failed privilege check to
+user space; a small number will wish to translate it to another error code
+appropriate to a specific context.
+.Pp
+When designing new APIs, it is preferable to return explicit errors from a
+call if privilege is not granted rather than changing the semantics of the
+call but returning success.
+For example, the behavior exhibited by
+.Xr stat 2 ,
+in which the generation field is optionally zero'd out when there is
+insufficient privilege is highly undesirable, as it results in frequent
+privilege checks, and the caller is unable to tell if an access control
+failure occurred.
+.Sh SEE ALSO
+.Xr jail 2 ,
+.Xr mac 9 ,
+.Xr ucred 9
+.Sh AUTHORS
+The
+.Nm
+API and implementation were created by
+.An Robert Watson
+under contract to
+nCircle Network Security, Inc.
diff --git a/share/man/man9/pseudofs.9 b/share/man/man9/pseudofs.9
new file mode 100644
index 0000000..b0b22ff
--- /dev/null
+++ b/share/man/man9/pseudofs.9
@@ -0,0 +1,70 @@
+.\"-
+.\" Copyright (c) 2001 Dag-Erling Coïdan Smørgrav
+.\" 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$
+.\"
+.Dd April 20, 2007
+.Dt PSEUDOFS 9
+.Os
+.Sh NAME
+.Nm pseudofs
+.Nd pseudo file system construction kit
+.Sh SYNOPSIS
+.In fs/pseudofs/pseudofs.h
+.\" Insert usage example here
+.Sh DESCRIPTION
+The
+.Nm
+module offers an abstract API for pseudo-file systems such as
+.Xr procfs 5
+and
+.Xr linprocfs 5 .
+It takes care of all the hairy bits like interfacing with the VFS
+system, enforcing access control, keeping track of file numbers, and
+cloning files and directories that are process-specific.
+The consumer module, i.e., the module that implements the actual guts
+of the file system, needs only provide the directory structure
+(represented by a collection of structures declared and initialized by
+macros provided by
+.Nm )
+and callbacks that report file attributes or write the actual file
+contents into sbufs.
+.\" Insert more info here
+.Sh SEE ALSO
+.Xr linprocfs 5 ,
+.Xr linsysfs 5 ,
+.Xr procfs 5 ,
+.Xr sbuf 9 ,
+.Xr vnode 9
+.Sh HISTORY
+The
+.Nm
+module appeared in
+.Fx 5.0 .
+.Sh AUTHORS
+The
+.Nm
+module and this manual page were written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
diff --git a/share/man/man9/psignal.9 b/share/man/man9/psignal.9
new file mode 100644
index 0000000..16575f1
--- /dev/null
+++ b/share/man/man9/psignal.9
@@ -0,0 +1,148 @@
+.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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 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.
+.\"
+.\" $NetBSD: psignal.9,v 1.1 1996/06/22 22:57:35 pk Exp $
+.\" $FreeBSD$
+.\"
+.Dd June 22, 1996
+.Dt PSIGNAL 9
+.Os
+.Sh NAME
+.Nm psignal ,
+.Nm pgsignal ,
+.Nm gsignal
+.Nd post signal to a process or process group
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/signalvar.h
+.Ft void
+.Fn psignal "struct proc *p" "int signum"
+.Ft void
+.Fn pgsignal "struct pgrp *pgrp" "int signum" "int checkctty"
+.Ft void
+.Fn gsignal "int pgid" "int signum"
+.Sh DESCRIPTION
+These functions post a signal to one or more processes.
+The argument
+.Fa signum
+common to all three functions should be in the range
+.Bq 1- Ns Dv NSIG .
+.Pp
+The
+.Fn psignal
+function posts signal number
+.Fa signum
+to the process represented by the process structure
+.Fa p .
+With a few exceptions noted below, the target process signal disposition is
+updated and is marked as runnable, so further handling of the signal is done
+in the context of the target process after a context switch.
+Note that
+.Fn psignal
+does not by itself cause a context switch to happen.
+.Pp
+The target process is not marked as runnable in the following cases:
+.Bl -bullet -offset indent
+.It
+The target process is sleeping uninterruptibly.
+The signal will be
+noticed when the process returns from the system call or trap.
+.It
+The target process is currently ignoring the signal.
+.It
+If a stop signal is sent to a sleeping process that takes the
+default action
+(see
+.Xr sigaction 2 ) ,
+the process is stopped without awakening it.
+.It
+.Dv SIGCONT
+restarts a stopped process
+(or puts them back to sleep)
+regardless of the signal action
+(e.g., blocked or ignored).
+.El
+.Pp
+If the target process is being traced
+.Fn psignal
+behaves as if the target process were taking the default action for
+.Fa signum .
+This allows the tracing process to be notified of the signal.
+.Pp
+The
+.Fn pgsignal
+function posts signal number
+.Fa signum
+to each member of the process group described by
+.Fa pgrp .
+If
+.Fa checkctty
+is non-zero, the signal will be posted only to processes that have
+a controlling terminal.
+.Fn pgsignal
+is implemented by walking along the process list headed by the field
+.Li pg_members
+of the process group structure
+pointed at by
+.Fa pgrp
+and calling
+.Fn psignal
+as appropriate.
+If
+.Fa pgrp
+is
+.Dv NULL
+no action is taken.
+.Pp
+The
+.Fn gsignal
+function posts signal number
+.Fa signum
+to each member of the process group identified by the group id
+.Fa pgid .
+.Fn gsignal
+first finds the group structure associated with
+.Fa pgid ,
+then invokes
+.Fn pgsignal
+with the argument
+.Fa checkctty
+set to zero.
+If
+.Fa pgid
+is zero no action is taken.
+.Sh SEE ALSO
+.Xr sigaction 2 ,
+.Xr signal 9 ,
+.Xr tsleep 9
diff --git a/share/man/man9/random.9 b/share/man/man9/random.9
new file mode 100644
index 0000000..426774e
--- /dev/null
+++ b/share/man/man9/random.9
@@ -0,0 +1,156 @@
+.\"
+.\" Copyright (c) 2000
+.\" The Regents of the University of California. All rights reserved.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\" "
+.Dd September 25, 2000
+.Os
+.Dt RANDOM 9
+.Sh NAME
+.Nm arc4rand ,
+.Nm arc4random ,
+.Nm random ,
+.Nm read_random ,
+.Nm srandom
+.Nd supply pseudo-random numbers
+.Sh SYNOPSIS
+.In sys/libkern.h
+.Ft void
+.Fn srandom "u_long seed"
+.Ft u_long
+.Fn random "void"
+.Ft void
+.Fn arc4rand "void *ptr" "u_int length" "int reseed"
+.Ft u_int32_t
+.Fn arc4random "void"
+.Pp
+.In sys/random.h
+.Ft int
+.Fn read_random "void *buffer" "int count"
+.Sh DESCRIPTION
+The
+.Fn random
+function will by default produce a sequence of numbers that can be duplicated
+by calling
+.Fn srandom
+with
+.Ql 1
+as the
+.Fa seed .
+The
+.Fn srandom
+function may be called with any arbitrary
+.Fa seed
+value to get slightly more unpredictable numbers.
+It is important to remember that the
+.Fn random
+function is entirely predictable, and is therefore not of use where
+knowledge of the sequence of numbers may be of benefit to an attacker.
+.Pp
+The
+.Fn arc4rand
+function will return very good quality random numbers, slightly better
+suited for security-related purposes.
+The random numbers from
+.Fn arc4rand
+are seeded from the entropy device if it is available.
+Automatic reseeds happen after a certain timeinterval and after a
+certain number of bytes have been delivered.
+A forced reseed can be forced by passing a non-zero value in the
+.Fa reseed
+argument.
+.Pp
+The
+.Fn read_random
+function is used to return entropy directly from the entropy device
+if it has been loaded.
+If the entropy device is not loaded, then
+the
+.Fa buffer
+is filled with output generated by
+.Fn random .
+The
+.Fa buffer
+is filled with no more than
+.Fa count
+bytes.
+It is advised that
+.Fn read_random
+is not used; instead use
+.Fn arc4rand
+.Pp
+All the bits generated by
+.Fn random ,
+.Fn arc4rand
+and
+.Fn read_random
+are usable.
+For example,
+.Sq Li random()&01
+will produce a random binary value.
+.Pp
+The
+.Fn arc4random
+is a convenience function which calls
+.Fn arc4rand
+to return a 32 bit pseudo-random integer.
+.Sh RETURN VALUES
+The
+.Fn random
+function
+uses a non-linear additive feedback random number generator employing a
+default table of size 31 long integers to return successive pseudo-random
+numbers in the range from 0 to
+.if t 2\u\s731\s10\d\(mi1.
+.if n (2**31)\(mi1.
+The period of this random number generator is very large, approximately
+.if t 16\(mu(2\u\s731\s10\d\(mi1).
+.if n 16*((2**31)\(mi1).
+.Pp
+The
+.Fn arc4rand
+function uses the RC4 algorithm to generate successive pseudo-random
+bytes.
+The
+.Fn arc4random
+function
+uses
+.Fn arc4rand
+to generate pseudo-random numbers in the range from 0 to
+.if t 2\u\s732\s10\d\(mi1.
+.if n (2**32)\(mi1.
+.Pp
+The
+.Fn read_random
+function returns the number of bytes placed in
+.Fa buffer .
+.Sh AUTHORS
+.An Dan Moschuk
+wrote
+.Fn arc4random .
+.An Mark R V Murray
+wrote
+.Fn read_random .
diff --git a/share/man/man9/random_harvest.9 b/share/man/man9/random_harvest.9
new file mode 100644
index 0000000..7b72f3e
--- /dev/null
+++ b/share/man/man9/random_harvest.9
@@ -0,0 +1,112 @@
+.\"
+.\" Copyright (c) 2002 Mark R V Murray
+.\" 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$
+.\"
+.Dd February 6, 2002
+.Dt RANDOM_HARVEST 9
+.Os
+.Sh NAME
+.Nm random_harvest
+.Nd gather entropy from the kernel for the entropy device
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/random.h
+.Ft void
+.Fo random_harvest
+.Fa "void *entropy"
+.Fa "u_int size"
+.Fa "u_int bits"
+.Fa "u_int frac"
+.Fa "enum esource source"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn random_harvest
+function is used by device drivers
+and other kernel processes to pass data
+that is considered (at least partially) stochastic
+to the entropy device.
+.Pp
+The caller should pass a pointer (to no more than 16 bytes) of
+the
+.Dq random
+data in
+.Fa entropy .
+The argument
+.Fa size
+contains the number of bytes pointed to.
+The caller should
+.Em "very conservatively"
+estimate the number of random bits
+in the sample,
+and pass this in
+.Fa bits
+or
+.Fa frac .
+If the estimated number of bits per sample is an integer, then
+.Fa bits
+is used, and
+.Fa frac
+is 0.
+Otherwise,
+for low-entropy samples,
+.Dq fractional
+entropy can be supplied in
+.Fa frac .
+(This is considered to be
+.Fa frac /
+1024 bits of entropy.)
+The
+.Fa source
+is chosen from
+.Dv RANDOM_WRITE , RANDOM_KEYBOARD , RANDOM_MOUSE , RANDOM_NET
+and
+.Dv RANDOM_INTERRUPT ,
+and is used to indicate the source of the entropy.
+.Pp
+Interrupt harvesting has been simplified
+for the kernel programmer.
+If a device driver registers an interrupt handler
+with
+.Xr BUS_SETUP_INTR 9
+or
+.Xr bus_setup_intr 9 ,
+then it is only necessary to
+include the
+.Dv INTR_ENTROPY
+bit in the
+.Fa flags
+argument to have that interrupt source
+be used for entropy harvesting.
+.Sh SEE ALSO
+.Xr random 4 ,
+.Xr BUS_SETUP_INTR 9
+.Sh AUTHORS
+The
+.Fx
+.Xr random 4
+entropy device and supporting documentation was written by
+.An Mark R V Murray .
diff --git a/share/man/man9/redzone.9 b/share/man/man9/redzone.9
new file mode 100644
index 0000000..ef3cb53
--- /dev/null
+++ b/share/man/man9/redzone.9
@@ -0,0 +1,123 @@
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 31, 2006
+.Dt REDZONE 9
+.Os
+.Sh NAME
+.Nm RedZone
+.Nd "buffer corruptions detector"
+.Sh SYNOPSIS
+.Cd "options DEBUG_REDZONE"
+.Sh DESCRIPTION
+.Nm
+detects buffer underflow and buffer overflow bugs at runtime.
+Currently
+.Nm
+only detects buffer corruptions for memory allocated with
+.Xr malloc 9 .
+When such corruption is detected two backtraces are printed on the console.
+The first one shows from where memory was allocated, the second one shows from
+where memory was freed.
+By default the system will not panic when buffer corruption is detected.
+This can be changed by setting the
+.Va vm.redzone.panic
+.Xr sysctl 8
+variable to 1.
+The amount of extra memory allocated for
+.Nm Ns 's
+needs is stored in the
+.Va vm.redzone.extra_mem
+.Xr sysctl 8
+variable.
+.Sh EXAMPLE
+The example below shows the logs from the detection of a buffer underflow and a
+buffer overflow.
+.Bd -literal -offset indent
+REDZONE: Buffer underflow detected. 2 bytes corrupted before 0xc8688580 (16 bytes allocated).
+Allocation backtrace:
+#0 0xc0583e4e at redzone_setup+0x3c
+#1 0xc04a23fa at malloc+0x19e
+#2 0xcdeb69ca at redzone_modevent+0x60
+#3 0xc04a3f3c at module_register_init+0x82
+#4 0xc049d96a at linker_file_sysinit+0x8e
+#5 0xc049dc7c at linker_load_file+0xed
+#6 0xc04a041f at linker_load_module+0xc4
+#7 0xc049e883 at kldload+0x116
+#8 0xc05d9b3d at syscall+0x325
+#9 0xc05c944f at Xint0x80_syscall+0x1f
+Free backtrace:
+#0 0xc0583f92 at redzone_check+0xd4
+#1 0xc04a2422 at free+0x1c
+#2 0xcdeb69a6 at redzone_modevent+0x3c
+#3 0xc04a438d at module_unload+0x61
+#4 0xc049e0b3 at linker_file_unload+0x89
+#5 0xc049e979 at kern_kldunload+0x96
+#6 0xc049ea00 at kldunloadf+0x2c
+#7 0xc05d9b3d at syscall+0x325
+#8 0xc05c944f at Xint0x80_syscall+0x1f
+
+REDZONE: Buffer overflow detected. 4 bytes corrupted after 0xc8688590 (16 bytes allocated).
+Allocation backtrace:
+#0 0xc0583e4e at redzone_setup+0x3c
+#1 0xc04a23fa at malloc+0x19e
+#2 0xcdeb69ca at redzone_modevent+0x60
+#3 0xc04a3f3c at module_register_init+0x82
+#4 0xc049d96a at linker_file_sysinit+0x8e
+#5 0xc049dc7c at linker_load_file+0xed
+#6 0xc04a041f at linker_load_module+0xc4
+#7 0xc049e883 at kldload+0x116
+#8 0xc05d9b3d at syscall+0x325
+#9 0xc05c944f at Xint0x80_syscall+0x1f
+Free backtrace:
+#0 0xc0584020 at redzone_check+0x162
+#1 0xc04a2422 at free+0x1c
+#2 0xcdeb69a6 at redzone_modevent+0x3c
+#3 0xc04a438d at module_unload+0x61
+#4 0xc049e0b3 at linker_file_unload+0x89
+#5 0xc049e979 at kern_kldunload+0x96
+#6 0xc049ea00 at kldunloadf+0x2c
+#7 0xc05d9b3d at syscall+0x325
+#8 0xc05c944f at Xint0x80_syscall+0x1f
+.Ed
+.Sh SEE ALSO
+.Xr sysctl 8 ,
+.Xr malloc 9 ,
+.Xr memguard 9
+.Sh HISTORY
+.Nm
+first appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An Pawel Jakub Dawidek Aq pjd@FreeBSD.org
+.Sh BUGS
+Currently,
+.Nm
+does not cooperate with
+.Xr memguard 9 .
+Allocations from a memory type controlled by
+.Xr memguard 9
+are simply skipped, so buffer corruptions will not be detected there.
diff --git a/share/man/man9/resettodr.9 b/share/man/man9/resettodr.9
new file mode 100644
index 0000000..9818c8f
--- /dev/null
+++ b/share/man/man9/resettodr.9
@@ -0,0 +1,62 @@
+.\" $NetBSD: resettodr.9,v 1.1 1995/11/25 21:24:51 perry Exp $
+.\"
+.\" Copyright (c) 1994 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 by Christopher G. Demetriou
+.\" for the NetBSD Project.
+.\" 3. 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$
+.\"
+.Dd November 13, 1995
+.Dt RESETTODR 9
+.Os
+.Sh NAME
+.Nm resettodr
+.Nd set battery-backed clock from system time
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft void
+.Fn resettodr "void"
+.Sh DESCRIPTION
+The
+.Fn resettodr
+function sets the system's battery-backed clock based on the contents
+of the system
+.Va time
+variable.
+.Sh SEE ALSO
+.Xr inittodr 9 ,
+.Xr time 9
+.Sh BUGS
+On many systems,
+.Fn resettodr
+has to convert from
+.Va time
+to a time expressed in terms of year, month, day, hours, minutes,
+and seconds.
+Many of the implementations could share code, but do not.
diff --git a/share/man/man9/resource_int_value.9 b/share/man/man9/resource_int_value.9
new file mode 100644
index 0000000..e828535
--- /dev/null
+++ b/share/man/man9/resource_int_value.9
@@ -0,0 +1,79 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2001 M. Warner Losh
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd March 1, 2001
+.Dt RESOURCE_INT_VALUE 9
+.Os
+.Sh NAME
+.Nm resource_int_value , resource_long_value , resource_string_value
+.Nd get a value from the hints mechanism
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.Ft int
+.Fn resource_int_value "const char *name" "int unit" "const char *resname" "int *result"
+.Ft int
+.Fn resource_long_value "const char *name" "int unit" "const char *resname" "long *result"
+.Ft int
+.Fn resource_string_value "const char *name" "int unit" "const char *resname" "const char **result"
+.Sh DESCRIPTION
+These functions fetch a value from the
+.Dq hints
+mechanism.
+.Pp
+The functions take the following arguments:
+.Bl -tag -width "resname"
+.It Fa name
+The name of the device to get the resource value from.
+.It Fa unit
+The unit number of the device.
+\-1 is special and is used for wildcard entries.
+.It Fa resname
+The resource name.
+.It Fa result
+A pointer to memory in which to store the resource value.
+.El
+.Sh RETURN VALUES
+If successful, the functions return 0.
+Otherwise, a non\-zero error code is returned.
+.Sh ERRORS
+The functions will fail if:
+.Bl -tag -width Er
+.It Bq Er ENOENT
+The resource could not be found.
+.It Bq Er EFTYPE
+Inappropriate resource type.
+.El
+.Sh SEE ALSO
+.Xr device 9 ,
+.Xr driver 9
+.Sh AUTHORS
+This manual page was written by
+.An Warner Losh Aq imp@FreeBSD.org .
diff --git a/share/man/man9/rijndael.9 b/share/man/man9/rijndael.9
new file mode 100644
index 0000000..5ee4239
--- /dev/null
+++ b/share/man/man9/rijndael.9
@@ -0,0 +1,135 @@
+.\"
+.\" Copyright (c) 2002
+.\" Mark R V Murray. All rights reserved.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\" "
+.Dd February 6, 2002
+.Os
+.Dt RIJNDAEL 9
+.Sh NAME
+.Nm rijndael_makeKey ,
+.Nm rijndael_cipherInit ,
+.Nm rijndael_blockEncrypt ,
+.Nm rijndael_padEncrypt ,
+.Nm rijndael_blockDecrypt ,
+.Nm rijndael_padDecrypt
+.Nd AES encryption
+.Sh SYNOPSIS
+.In sys/types.h
+.In crypto/rijndael.h
+.Ft int
+.Fo rijndael_makeKey
+.Fa "keyInstance *key"
+.Fa "u_int8_t direction"
+.Fa "int keyLen"
+.Fa "char *keyMaterial"
+.Fc
+.Ft int
+.Fo rijndael_cipherInit
+.Fa "cipherInstance *cipher"
+.Fa "u_int8_t mode"
+.Fa "char *IV"
+.Fc
+.Ft int
+.Fo rijndael_blockEncrypt
+.Fa "cipherInstance *cipher"
+.Fa "keyInstance *key"
+.Fa "u_int8_t *input"
+.Fa "int inputLen"
+.Fa "u_int8_t *outBuffer"
+.Fc
+.Ft int
+.Fo rijndael_padEncrypt
+.Fa "cipherInstance *cipher"
+.Fa "keyInstance *key"
+.Fa "u_int8_t *input"
+.Fa "int inputOctets"
+.Fa "u_int8_t *outBuffer"
+.Fc
+.Ft int
+.Fo rijndael_blockDecrypt
+.Fa "cipherInstance *cipher"
+.Fa "keyInstance *key"
+.Fa "u_int8_t *input"
+.Fa "int inputLen"
+.Fa "u_int8_t *outBuffer"
+.Fc
+.Ft int
+.Fo rijndael_padDecrypt
+.Fa "cipherInstance *cipher"
+.Fa "keyInstance *key"
+.Fa "u_int8_t *input"
+.Fa "int inputOctets"
+.Fa "u_int8_t *outBuffer"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn rijndael_makeKey
+function is used to set up the key schedule in
+.Fa key .
+The
+.Fa direction
+(which may be
+.Dv DIR_ENCRYPT
+or
+.Dv DIR_DECRYPT )
+specifies the intended use of the key.
+The length of the key (in bits) is given in
+.Fa keyLen ,
+and must be 128, 192 or 256.
+The actual key is supplied in the buffer pointed to by
+.Fa keyMaterial .
+This material may be raw binary data,
+or an ASCII string containing a hexadecimal rendition
+of the raw binary data,
+dependent on a compile-time option in the
+.Nm
+sources,
+.Dv BINARY_KEY_MATERIAL .
+.Sh RETURN VALUES
+The
+.Fn rijndael_makeKey
+function will return
+.Dv BAD_KEY_INSTANCE
+if a
+.Dv NULL
+.Fa key
+is passed,
+.Dv BAD_KEY_DIR
+if
+.Fa direction
+is not
+.Dv DIR_ENCRYPT
+or
+.Dv DIR_DECRYPT ,
+.Dv BAD_KEY_MAT
+if the key materials are not a hexadecimal string
+(and binary keys are not set),
+and
+.Dv TRUE
+otherwise.
+.Sh AUTHORS
+.An Mark R V Murray
diff --git a/share/man/man9/rman.9 b/share/man/man9/rman.9
new file mode 100644
index 0000000..43c3228
--- /dev/null
+++ b/share/man/man9/rman.9
@@ -0,0 +1,353 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd April 29, 2007
+.Dt RMAN 9
+.Os
+.Sh NAME
+.Nm rman ,
+.Nm rman_activate_resource ,
+.Nm rman_await_resource ,
+.Nm rman_deactivate_resource ,
+.Nm rman_fini ,
+.Nm rman_init ,
+.Nm rman_manage_region ,
+.Nm rman_release_resource ,
+.Nm rman_reserve_resource ,
+.Nm rman_reserve_resource_bound ,
+.Nm rman_make_alignment_flags ,
+.Nm rman_get_start ,
+.Nm rman_get_end ,
+.Nm rman_get_device ,
+.Nm rman_get_size ,
+.Nm rman_get_flags ,
+.Nm rman_set_virtual ,
+.Nm rman_get_virtual ,
+.Nm rman_set_bustag ,
+.Nm rman_get_bustag ,
+.Nm rman_set_bushandle ,
+.Nm rman_get_bushandle ,
+.Nm rman_set_rid ,
+.Nm rman_get_rid
+.Nd resource management functions
+.Sh SYNOPSIS
+.In sys/rman.h
+.Ft int
+.Fn rman_activate_resource "struct resource *r"
+.Ft int
+.Fn rman_await_resource "struct resource *r" "int pri2" "int timo"
+.Ft int
+.Fn rman_deactivate_resource "struct resource *r"
+.Ft int
+.Fn rman_fini "struct rman *rm"
+.Ft int
+.Fn rman_init "struct rman *rm"
+.Ft int
+.Fn rman_manage_region "struct rman *rm" "u_long start" "u_long end"
+.Ft int
+.Fn rman_release_resource "struct resource *r"
+.Ft "struct resource *"
+.Fo rman_reserve_resource
+.Fa "struct rman *rm" "u_long start" "u_long end" "u_long count"
+.Fa "u_int flags" "struct device *dev"
+.Fc
+.Ft "struct resource *"
+.Fo rman_reserve_resource_bound
+.Fa "struct rman *rm" "u_long start" "u_long end" "u_long count"
+.Fa "u_long bound" "u_int flags" "struct device *dev"
+.Fc
+.Ft uint32_t
+.Fn rman_make_alignment_flags "uint32_t size"
+.Ft u_long
+.Fn rman_get_start "struct resource *r"
+.Ft u_long
+.Fn rman_get_end "struct resource *r"
+.Ft "struct device *"
+.Fn rman_get_device "struct resource *r"
+.Ft u_long
+.Fn rman_get_size "struct resource *r"
+.Ft u_int
+.Fn rman_get_flags "struct resource *r"
+.Ft void
+.Fn rman_set_virtual "struct resource *r" "void *v"
+.Ft "void *"
+.Fn rman_get_virtual "struct resource *r"
+.Ft void
+.Fn rman_set_bustag "struct resource *r" "bus_space_tag_t t"
+.Ft bus_space_tag_t
+.Fn rman_get_bustag "struct resource *r"
+.Ft void
+.Fn rman_set_bushandle "struct resource *r" "bus_space_handle_t h"
+.Ft bus_space_handle_t
+.Fn rman_get_bushandle "struct resource *r"
+.Ft void
+.Fn rman_set_rid "struct resource *r" "int rid"
+.Ft int
+.Fn rman_get_rid "struct resource *r"
+.Sh DESCRIPTION
+The
+.Nm
+set of functions provides a flexible resource management abstraction.
+It is used extensively by the bus management code.
+It implements the abstractions of region and resource.
+A region descriptor is used to manage a region; this could be memory or
+some other form of bus space.
+.Pp
+Each region has a set of bounds.
+Within these bounds, allocated segments may reside.
+Each segment, termed a resource, has several properties which are
+represented by a 16-bit flag register, as follows.
+.Bd -literal
+#define RF_ALLOCATED 0x0001 /* resource has been reserved */
+#define RF_ACTIVE 0x0002 /* resource allocation has been activated */
+#define RF_SHAREABLE 0x0004 /* resource permits contemporaneous sharing */
+#define RF_TIMESHARE 0x0008 /* resource permits time-division sharing */
+#define RF_WANTED 0x0010 /* somebody is waiting for this resource */
+#define RF_FIRSTSHARE 0x0020 /* first in sharing list */
+#define RF_PREFETCHABLE 0x0040 /* resource is prefetchable */
+.Ed
+.Pp
+The remainder of the flag bits are used to represent the desired alignment
+of the resource within the region.
+.Pp
+The
+.Fn rman_init
+function initializes the region descriptor, pointed to by the
+.Fa rm
+argument, for use with the resource management functions.
+It is required that the fields
+.Va rm_type
+and
+.Va rm_descr
+of
+.Vt "struct rman"
+be set before calling
+.Fn rman_init .
+The field
+.Va rm_type
+shall be set to
+.Dv RMAN_ARRAY .
+The field
+.Va rm_descr
+shall be set to a string that describes the resource to be managed.
+It also initializes any mutexes associated with the structure.
+If
+.Fn rman_init
+fails to initalize the mutex, it will return
+.Er ENOMEM ; otherwise it will return 0 and
+.Fa rm
+will be initalized.
+.Pp
+The
+.Fn rman_fini
+function frees any structures associated with the structure
+pointed to by the
+.Fa rm
+argument.
+If any of the resources within the managed region have the
+.Dv RF_ALLOCATED
+flag set, it will return
+.Er EBUSY ;
+otherwise, any mutexes associated with the structure will be released
+and destroyed, and the function will return 0.
+.Pp
+The
+.Fn rman_manage_region
+function establishes the concept of a region which is under
+.Nm
+control.
+The
+.Fa rman
+argument points to the region descriptor.
+The
+.Fa start
+and
+.Fa end
+arguments specify the bounds of the region.
+If successful,
+.Fn rman_manage_region
+will return 0.
+If the region overlaps with an existing region, it will return
+.Er EBUSY .
+.Er ENOMEM
+will be return when
+.Fn rman_manage_region
+failed to allocate memory for the region.
+.Pp
+The
+.Fn rman_reserve_resource_bound
+function is where the bulk of the
+.Nm
+logic is located.
+It attempts to reserve a contiguous range in the specified region
+.Fa rm
+for the use of the device
+.Fa dev .
+The caller can specify the
+.Fa start
+and
+.Fa end
+of an acceptable range, as well as
+alignment, and the code will attempt to find a free segment which fits.
+The
+.Fa start
+argument is the lowest acceptable starting value of the resource.
+The
+.Fa end
+argument is the highest acceptable ending value of the resource.
+Therefore,
+.Fa start No + Fa count No \- 1
+must be \[<=]
+.Fa end
+for any allocation to happen.
+The default behavior is to allocate an exclusive segment, unless the
+.Dv RF_SHAREABLE
+or
+.Dv RF_TIMESHARE
+flags are set, in which case a shared
+segment will be allocated.
+If this shared segment already exists, the caller has its device
+added to the list of consumers.
+.Pp
+The
+.Fn rman_reserve_resource
+function is used to reserve resources within a previously established region.
+It is a simplified interface to
+.Fn rman_reserve_resource_bound
+which passes 0 for the
+.Fa flags
+argument.
+.Pp
+The
+.Fn rman_make_alignment_flags
+function returns the flag mask corresponding to the desired alignment
+.Fa size .
+This should be used when calling
+.Fn rman_reserve_resource_bound .
+.Pp
+The
+.Fn rman_release_resource
+function releases the reserved resource
+.Fa r .
+It may attempt to merge adjacent free resources.
+.Pp
+The
+.Fn rman_activate_resource
+function marks a resource as active, by setting the
+.Dv RF_ACTIVE
+flag.
+If this is a time shared resource, and the caller has not yet acquired
+the resource, the function returns
+.Er EBUSY .
+.Pp
+The
+.Fn rman_deactivate_resource
+function marks a resource
+.Fa r
+as inactive, by clearing the
+.Dv RF_ACTIVE
+flag.
+If other consumers are waiting for this range, it will wakeup their threads.
+.Pp
+The
+.Fn rman_await_resource
+function performs an asynchronous wait for a resource
+.Fa r
+to become inactive, that is, for the
+.Dv RF_ACTIVE
+flag to be cleared.
+It is used to enable cooperative sharing of a resource
+which can only be safely used by one thread at a time.
+The arguments
+.Fa pri
+and
+.Fa timo
+are passed to the
+.Fn rman_await_resource
+function.
+.Pp
+The
+.Fn rman_get_start ,
+.Fn rman_get_end ,
+.Fn rman_get_size ,
+and
+.Fn rman_get_flags
+functions return the bounds, size and flags of the previously reserved
+resource
+.Fa r .
+.Pp
+The
+.Fn rman_set_bustag
+function associates a
+.Vt bus_space_tag_t
+.Fa t
+with the resource
+.Fa r .
+The
+.Fn rman_get_bustag
+function is used to retrieve this tag once set.
+.Pp
+The
+.Fn rman_set_bushandle
+function associates a
+.Vt bus_space_handle_t
+.Fa h
+with the resource
+.Fa r .
+The
+.Fn rman_get_bushandle
+function is used to retrieve this handle once set.
+.Pp
+The
+.Fn rman_set_virtual
+function is used to associate a kernel virtual address with a resource
+.Fa r .
+The
+.Fn rman_get_virtual
+function can be used to retrieve the KVA once set.
+.Pp
+The
+.Fn rman_set_rid
+function associates a resource identifier with a resource
+.Fa r .
+The
+.Fn rman_get_rid
+function retrieves this RID.
+.Pp
+The
+.Fn rman_get_device
+function returns a pointer to the device which reserved the resource
+.Fa r .
+.Sh SEE ALSO
+.Xr bus_activate_resource 9 ,
+.Xr bus_alloc_resource 9 ,
+.Xr bus_release_resource 9 ,
+.Xr bus_set_resource 9 ,
+.Xr mutex 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/rmlock.9 b/share/man/man9/rmlock.9
new file mode 100644
index 0000000..1be822b
--- /dev/null
+++ b/share/man/man9/rmlock.9
@@ -0,0 +1,212 @@
+.\" Copyright (c) 2007 Stephan Uphoff <ups@FreeBSD.org>
+.\" Copyright (c) 2006 Gleb Smirnoff <glebius@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$
+.\"
+.\" Based on rwlock.9 man page
+.Dd November 10, 2007
+.Dt RMLOCK 9
+.Os
+.Sh NAME
+.Nm rmlock ,
+.Nm rm_init ,
+.Nm rm_destroy ,
+.Nm rm_rlock ,
+.Nm rm_wlock ,
+.Nm rm_runlock ,
+.Nm rm_wunlock ,
+.Nm rm_wowned ,
+.Nm RM_SYSINIT
+.Nd kernel reader/writer lock optimized for mostly read access patterns
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/lock.h
+.In sys/rmlock.h
+.Ft void
+.Fn rm_init "struct rmlock *rm" "const char *name" "int opts"
+.Ft void
+.Fn rm_destroy "struct rmlock *rm"
+.Ft void
+.Fn rm_rlock "struct rmlock *rm" "struct rm_priotracker* tracker"
+.Ft void
+.Fn rm_wlock "struct rmlock *rm"
+.Ft void
+.Fn rm_runlock "struct rmlock *rm" "struct rm_priotracker* tracker"
+.Ft void
+.Fn rm_wunlock "struct rmlock *rm"
+.Ft int
+.Fn rm_wowned "struct rmlock *rm"
+.In sys/kernel.h
+.Fn RM_SYSINIT "name" "struct rmlock *rm" "const char *desc" "int opts"
+.Sh DESCRIPTION
+Mostly reader locks allow shared access to protected data by multiple threads,
+or exclusive access by a single thread.
+The threads with shared access are known as
+.Em readers
+since they only read the protected data.
+A thread with exclusive access is known as a
+.Em writer
+since it can modify protected data.
+.Pp
+Read mostly locks are designed to be efficient for locks almost exclusively
+used as reader locks and as such should be used for protecting data that
+rarely changes.
+Acquiring an exclusive lock after the lock had been locked for shared access
+is an expensive operation.
+.Pp
+Although reader/writer locks look very similar to
+.Xr sx 9
+locks, their usage pattern is different.
+Reader/writer locks can be treated as mutexes (see
+.Xr mutex 9 )
+with shared/exclusive semantics.
+Unlike
+.Xr sx 9 ,
+an
+.Nm
+can be locked while holding a non-spin mutex, and an
+.Nm
+cannot be held while sleeping.
+The
+.Nm
+locks have full priority propagation like mutexes.
+The
+.Va rm_priotracker
+structure argument supplied in
+.Fn rm_rlock
+and
+.Fn rm_runlock
+is used to keep track of the read owner(s).
+Another important property is that shared holders of
+.Nm
+can recurse if the lock has been initialized with the
+.Dv LO_RECURSABLE
+option, however exclusive locks are not allowed to recurse.
+.Ss Macros and Functions
+.Bl -tag -width indent
+.It Fn rm_init "struct rmlock *rm" "const char *name" "int opts"
+Initialize structure located at
+.Fa rm
+as mostly reader lock, described by
+.Fa name .
+Optionally allowing readers to recurse by setting
+.Dv LO_RECURSABLE
+in
+.Fa opts .
+The name description is used solely for debugging purposes.
+This function must be called before any other operations
+on the lock.
+.It Fn rm_rlock "struct rmlock *rm" "struct rm_priotracker* tracker"
+Lock
+.Fa rm
+as a reader.
+Using
+.Fa tracker
+to track read owners of a lock for priority propagation.
+This data structure is only used internally by
+.Nm
+and must persist until
+.Fn rm_runlock
+has been called.
+This data structure can be allocated on the stack since
+rmlocks cannot be held while sleeping.
+If any thread holds this lock exclusively, the current thread blocks,
+and its priority is propagated to the exclusive holder.
+If the lock was initialized with the
+.Dv LO_RECURSABLE
+option the
+.Fn rm_rlock
+function can be called when the thread has already acquired reader
+access on
+.Fa rm .
+This is called
+.Dq "recursing on a lock" .
+.It Fn rm_wlock "struct rmlock *rm"
+Lock
+.Fa rm
+as a writer.
+If there are any shared owners of the lock, the current thread blocks.
+The
+.Fn rm_wlock
+function cannot be called recursively.
+.It Fn rm_runlock "struct rmlock *rm" "struct rm_priotracker* tracker"
+This function releases a shared lock previously acquired by
+.Fn rm_rlock .
+The
+.Fa tracker
+argument must match the
+.Fa tracker
+argument used for acquiring the shared lock
+.It Fn rm_wunlock "struct rmlock *rm"
+This function releases an exclusive lock previously acquired by
+.Fn rm_wlock .
+.It Fn rm_destroy "struct rmlock *rm"
+This functions destroys a lock previously initialized with
+.Fn rm_init .
+The
+.Fa rm
+lock must be unlocked.
+.It Fn rm_wowned "struct rmlock *rm"
+This function returns a non-zero value if the current thread owns an
+exclusive lock on
+.Fa rm .
+.El
+.Sh SEE ALSO
+.Xr locking 9 ,
+.Xr mutex 9 ,
+.Xr panic 9 ,
+.Xr rwlock 9 ,
+.Xr sema 9 ,
+.Xr sx 9
+.Sh HISTORY
+These
+functions appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+facility was written by
+.An "Stephan Uphoff" .
+This manual page was written by
+.An "Gleb Smirnoff"
+for rwlock and modified to reflect rmlock by
+.An "Stephan Uphoff" .
+.Sh BUGS
+The
+.Nm
+implementation is currently not optimized for single processor systems.
+.Pp
+The
+.Nm
+implementation uses a single per CPU list shared by all
+rmlocks in the system.
+If rmlocks become popular, hashing to multiple per CPU queues may
+be needed to speed up the writer lock process.
+.Pp
+The
+.Nm
+can currently not be used as a lock argument for condition variable
+wait functions.
diff --git a/share/man/man9/rtalloc.9 b/share/man/man9/rtalloc.9
new file mode 100644
index 0000000..cbd2c5e
--- /dev/null
+++ b/share/man/man9/rtalloc.9
@@ -0,0 +1,240 @@
+.\"
+.\" Copyright 1996 Massachusetts Institute of Technology
+.\"
+.\" Permission to use, copy, modify, and distribute this software and
+.\" its documentation for any purpose and without fee is hereby
+.\" granted, provided that both the above copyright notice and this
+.\" permission notice appear in all copies, that both the above
+.\" copyright notice and this permission notice appear in all
+.\" supporting documentation, and that the name of M.I.T. not be used
+.\" in advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission. M.I.T. makes
+.\" no representations about the suitability of this software for any
+.\" purpose. It is provided "as is" without express or implied
+.\" warranty.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+.\" SHALL M.I.T. 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$
+.\"
+.Dd December 11, 2008
+.Os
+.Dt RTALLOC 9
+.Sh NAME
+.Nm rtalloc ,
+.Nm rtalloc_ign ,
+.Nm rtalloc1 ,
+.Nm rtfree
+.Nd look up a route in the kernel routing table
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In net/route.h
+.Ft void
+.Fn rtalloc "struct route *ro"
+.Ft void
+.Fn rtalloc_ign "struct route *ro" "u_long flags"
+.Ft "struct rtentry *"
+.Fn rtalloc1 "struct sockaddr *sa" "int report" "u_long flags"
+.Ft void
+.Fn rtfree "struct rt_entry *rt"
+.Fn RTFREE "struct rt_entry *rt"
+.Fn RT_LOCK "struct rt_entry *rt"
+.Fn RT_UNLOCK "struct rt_entry *rt"
+.Fn RT_ADDREF "struct rt_entry *rt"
+.Fn RT_REMREF "struct rt_entry *rt"
+.Sh DESCRIPTION
+The kernel uses a radix tree structure to manage routes for the
+networking subsystem.
+The
+.Fn rtalloc
+family of routines is used by protocols to query this structure for a
+route corresponding to a particular end-node address, and to cause
+certain protocol\- and interface-specific actions to take place.
+.\" XXX - -mdoc should contain a standard request for getting em and
+.\" en dashes.
+.Pp
+.Dv RTF_PRCLONING
+flag is obsolete and thus ignored by facility.
+If the
+.Dv RTF_XRESOLVE
+flag is set, then the
+.Dv RTM_RESOLVE
+message is sent instead on the
+.Xr route 4
+socket interface, requesting that an external program resolve the
+address in question and modify the route appropriately.
+.Pp
+The default interface is
+.Fn rtalloc .
+Its only argument is
+.Fa ro ,
+a pointer to a
+.Dq Li "struct route" ,
+which is defined as follows:
+.Bd -literal -offset indent
+struct route {
+ struct sockaddr ro_dst;
+ struct rtentry *ro_rt;
+};
+.Ed
+.Pp
+Thus, this function can only be used for address families which are
+smaller than the default
+.Dq Li "struct sockaddr" .
+Before calling
+.Fn rtalloc
+for the first time, callers should ensure that unused bits of the
+structure are set to zero.
+On subsequent calls,
+.Fn rtalloc
+returns without performing a lookup if
+.Fa ro->ro_rt
+is non-null and the
+.Dv RTF_UP
+flag is set in the route's
+.Li rt_flags
+field.
+.Pp
+The
+.Fn rtalloc_ign
+interface can be used when the caller does not want to receive
+the returned
+.Fa rtentry
+locked.
+The
+.Fa ro
+argument is the same as
+.Fn rtalloc ,
+but there is additionally a
+.Fa flags
+argument, which is now only used to pass
+.Dv RTF_RNH_LOCKED
+indicating that the radix tree lock is already held.
+Both
+.Fn rtalloc
+and
+.Fn rtalloc_ign
+functions return a pointer to an unlocked
+.Vt "struct rtentry" .
+.Pp
+The
+.Fn rtalloc1
+function is the most general form of
+.Fn rtalloc
+(and both of the other forms are implemented as calls to rtalloc1).
+It does not use the
+.Dq Li "struct route" ,
+and is therefore suitable for address families which require more
+space than is in a traditional
+.Dq Li "struct sockaddr" .
+Instead, it takes a
+.Dq Li "struct sockaddr *"
+directly as the
+.Fa sa
+argument.
+The second argument,
+.Fa report ,
+controls whether the lower layers are notified when a lookup fails.
+The third argument,
+.Fa flags ,
+is a set of flags to ignore, as in
+.Fn rtalloc_ign .
+The
+.Fn rtalloc1
+function returns a pointer to a locked
+.Vt "struct rtentry" .
+.Pp
+The
+.Fn rtfree
+function frees a locked route entry, e.g., a previously allocated by
+.Fn rtalloc1 .
+.Pp
+The
+.Fn RTFREE
+macro is used to free unlocked route entries, previously allocated by
+.Fn rtalloc
+or
+.Fn rtalloc_ign .
+The
+.Fn RTFREE
+macro decrements the reference count on the routing table entry (see below),
+and frees it if the reference count has reached zero.
+.Pp
+The preferred usage is allocating a route using
+.Fn rtalloc
+or
+.Fn rtalloc_ign
+and freeing using
+.Fn RTFREE .
+.Pp
+The
+.Fn RT_LOCK
+macro is used to lock a routing table entry.
+The
+.Fn RT_UNLOCK
+macro is used to unlock a routing table entry.
+.Pp
+The
+.Fn RT_ADDREF
+macro increments the reference count on a previously locked route entry.
+The
+.Fn RT_REMREF
+macro decrements the reference count on a previously locked route entry.
+.Sh RETURN VALUES
+The
+.Fn rtalloc ,
+.Fn rtalloc_ign
+and
+.Fn rtfree
+functions do not return a value.
+The
+.Fn rtalloc1
+function returns a pointer to a routing-table entry if it succeeds,
+otherwise a null pointer.
+Lack of a route should in most cases be
+translated to the
+.Xr errno 2
+value
+.Er EHOSTUNREACH .
+.Sh SEE ALSO
+.Xr route 4 ,
+.Xr rtentry 9
+.Sh HISTORY
+The
+.Nm
+facility first appeared in
+.Bx 4.2 ,
+although with much different internals.
+The
+.Fn rtalloc_ign
+function and the
+.Fa flags
+argument to
+.Fn rtalloc1
+first appeared in
+.Fx 2.0 .
+Routing table locking was introduced in
+.Fx 5.2 .
+.Sh AUTHORS
+This manual page was written by
+.An Garrett Wollman ,
+as were the changes to implement
+.Dv RTF_PRCLONING
+and the
+.Fn rtalloc_ign
+function and the
+.Fa flags
+argument to
+.Fn rtalloc1 .
diff --git a/share/man/man9/rtentry.9 b/share/man/man9/rtentry.9
new file mode 100644
index 0000000..0e25b21
--- /dev/null
+++ b/share/man/man9/rtentry.9
@@ -0,0 +1,252 @@
+.\"
+.\" Copyright 1996 Massachusetts Institute of Technology
+.\"
+.\" Permission to use, copy, modify, and distribute this software and
+.\" its documentation for any purpose and without fee is hereby
+.\" granted, provided that both the above copyright notice and this
+.\" permission notice appear in all copies, that both the above
+.\" copyright notice and this permission notice appear in all
+.\" supporting documentation, and that the name of M.I.T. not be used
+.\" in advertising or publicity pertaining to distribution of the
+.\" software without specific, written prior permission. M.I.T. makes
+.\" no representations about the suitability of this software for any
+.\" purpose. It is provided "as is" without express or implied
+.\" warranty.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+.\" ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+.\" INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+.\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+.\" SHALL M.I.T. 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$
+.\"
+.Dd December 11, 2008
+.Os
+.Dt RTENTRY 9
+.Sh NAME
+.Nm rtentry
+.Nd structure of an entry in the kernel routing table
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/socket.h
+.In net/route.h
+.Sh DESCRIPTION
+The kernel provides a common mechanism by which all protocols can store
+and retrieve entries from a central table of routes.
+Parts of this
+mechanism are also used to interact with user-level processes by means
+of a socket in the
+.Xr route 4
+pseudo-protocol family.
+The
+.In net/route.h
+header file defines the structures and manifest constants used in this
+facility.
+.Pp
+The basic structure of a route is defined by
+.Vt "struct rtentry" ,
+which includes the following fields:
+.Bl -tag -offset indent -width 6n
+.It Vt "struct radix_node rt_nodes[2]" ;
+Glue used by the radix-tree routines.
+These members also include in
+their substructure the key (i.e., destination address) and mask used
+when the route was created.
+The
+.Fn rt_key rt
+and
+.Fn rt_mask rt
+macros can be used to extract this information (in the form of a
+.Vt "struct sockaddr *" )
+given a
+.Vt "struct rtentry *" .
+.It Vt "struct sockaddr *rt_gateway" ;
+The
+.Dq target
+of the route, which can either represent a destination in its own
+right (some protocols will put a link-layer address here), or some
+intermediate stop on the way to that destination (if the
+.Dv RTF_GATEWAY
+flag is set).
+.It Vt "int rt_flags" ;
+See below.
+.It Vt "int rt_refcnt" ;
+Route entries are reference-counted; this field indicates the number
+of external (to the radix tree) references.
+.It Vt "struct ifnet *rt_ifp" ;
+.It Vt "struct ifaddr *rt_ifa" ;
+These two fields represent the
+.Dq answer ,
+as it were, to the question posed by a route lookup; that is, they
+name the interface and interface address to be used in sending a
+packet to the destination or set of destinations which this route
+represents.
+.It Vt "struct rt_metrics_lite rt_rmx" ;
+See below.
+If the
+.Dv RTF_UP
+flag is not present, the
+.Fn rtfree
+function will delete the route from the radix tree when the last
+reference drops.
+.It Vt "struct rtentry *rt_gwroute" ;
+This member is a reference to a route whose destination is
+.Va rt_gateway .
+It is only used for
+.Dv RTF_GATEWAY
+routes.
+.It Vt "struct mtx rt_mtx" ;
+Mutex to lock this routing entry.
+.El
+.Pp
+The following flag bits are defined:
+.Bl -tag -offset indent -width ".Dv RTF_BLACKHOLE" -compact
+.It Dv RTF_UP
+The route is not deleted.
+.It Dv RTF_GATEWAY
+The route points to an intermediate destination and not the ultimate
+recipient; the
+.Va rt_gateway
+and
+.Va rt_gwroute
+fields name that destination.
+.It Dv RTF_HOST
+This is a host route.
+.It Dv RTF_REJECT
+The destination is presently unreachable.
+This should result in an
+.Er EHOSTUNREACH
+error from output routines.
+.It Dv RTF_DYNAMIC
+This route was created dynamically by
+.Fn rtredirect .
+.It Dv RTF_MODIFIED
+This route was modified by
+.Fn rtredirect .
+.It Dv RTF_DONE
+Used only in the
+.Xr route 4
+protocol, indicating that the request was executed.
+.It Dv RTF_XRESOLVE
+When this route is returned as a result of a lookup, send a report on
+the
+.Xr route 4
+interface requesting that an external process perform resolution for
+this route.
+.It Dv RTF_STATIC
+Indicates that this route was manually added by means of the
+.Xr route 8
+command.
+.It Dv RTF_BLACKHOLE
+Requests that output sent via this route be discarded.
+.It Dv RTF_PROTO1
+.It Dv RTF_PROTO2
+.It Dv RTF_PROTO3
+Protocol-specific.
+.It Dv RTF_PRCLONING
+This flag is obsolete and simply ignored by facility.
+.It Dv RTF_PINNED
+(Reserved for future use to indicate routes which are not to be
+modified by a routing protocol.)
+.It Dv RTF_LOCAL
+Indicates that the destination of this route is an address configured
+as belonging to this system.
+.It Dv RTF_BROADCAST
+Indicates that the destination is a broadcast address.
+.It Dv RTF_MULTICAST
+Indicates that the destination is a multicast address.
+.El
+.Pp
+Every route has associated with it a set of metrics, stored in
+.Vt "struct rt_metrics_lite" .
+Metrics are supplied in
+.Vt "struct rt_metrics"
+passed with routing control messages via
+.Xr route 4
+API.
+Currently only
+.Vt rmx_mtu , rmx_expire ,
+and
+.Vt rmx_pksent
+metrics are used in
+.Vt "struct rt_metrics_lite" .
+All others are ignored.
+.Pp
+The following metrics are defined by
+.Vt "struct rt_metrics" :
+.Bl -tag -offset indent -width 6n
+.It Vt "u_long rmx_locks" ;
+Flag bits indicating which metrics the kernel is not permitted to
+dynamically modify.
+.It Vt "u_long rmx_mtu" ;
+MTU for this path.
+.It Vt "u_long rmx_hopcount" ;
+Number of intermediate systems on the path to this destination.
+.It Vt "u_long rmx_expire" ;
+The time
+(a la
+.Xr time 3 )
+at which this route should expire, or zero if it should never expire.
+It is the responsibility of individual protocol suites to ensure that routes
+are actually deleted once they expire.
+.It Vt "u_long rmx_recvpipe" ;
+Nominally, the bandwidth-delay product for the path
+.Em from
+the destination
+.Em to
+this system.
+In practice, this value is used to set the size of the
+receive buffer (and thus the window in sliding-window protocols like
+.Tn TCP ) .
+.It Vt "u_long rmx_sendpipe" ;
+As before, but in the opposite direction.
+.It Vt "u_long rmx_ssthresh" ;
+The slow-start threshold used in
+.Tn TCP
+congestion-avoidance.
+.It Vt "u_long rmx_rtt" ;
+The round-trip time to this destination, in units of
+.Dv RMX_RTTUNIT
+per second.
+.It Vt "u_long rmx_rttvar" ;
+The average deviation of the round-trip time to this destination, in
+units of
+.Dv RMX_RTTUNIT
+per second.
+.It Vt "u_long rmx_pksent" ;
+A count of packets successfully sent via this route.
+.It Vt "u_long rmx_filler[4]" ;
+.\" XXX badly named
+Empty space available for protocol-specific information.
+.El
+.Sh SEE ALSO
+.Xr route 4 ,
+.Xr route 8 ,
+.Xr rtalloc 9
+.Sh HISTORY
+The
+.Vt rtentry
+structure first appeared in
+.Bx 4.2 .
+The radix-tree representation of the routing table and the
+.Vt rt_metrics
+structure first appeared in
+.Bx 4.3 reno .
+.Sh AUTHORS
+This manual page was written by
+.An Garrett Wollman .
+.Sh BUGS
+There are a number of historical relics remaining in this interface.
+The
+.Va rt_gateway
+and
+.Va rmx_filler
+fields could be named better.
diff --git a/share/man/man9/runqueue.9 b/share/man/man9/runqueue.9
new file mode 100644
index 0000000..09b46d4
--- /dev/null
+++ b/share/man/man9/runqueue.9
@@ -0,0 +1,137 @@
+.\" Copyright (c) 2000-2001 John H. Baldwin <jhb@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 3, 2000
+.Dt RUNQUEUE 9
+.Os
+.Sh NAME
+.Nm chooseproc ,
+.Nm procrunnable ,
+.Nm remrunqueue ,
+.Nm setrunqueue
+.Nd manage the queue of runnable processes
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Vt "extern struct rq itqueues[]" ;
+.Vt "extern struct rq rtqueues[]" ;
+.Vt "extern struct rq queues[]" ;
+.Vt "extern struct rq idqueues[]" ;
+.Ft struct thread *
+.Fn choosethread "void"
+.Ft int
+.Fn procrunnable "void"
+.Ft void
+.Fn remrunqueue "struct thread *td"
+.Ft void
+.Fn setrunqueue "struct thread *td"
+.Sh DESCRIPTION
+The run queue consists of four priority queues:
+.Va itqueues
+for interrupt threads,
+.Va rtqueues
+for realtime priority processes,
+.Va queues
+for time sharing processes, and
+.Va idqueues
+for idle priority processes.
+Each priority queue consists of an array of
+.Dv NQS
+queue header structures.
+Each queue header identifies a list of runnable processes of equal priority.
+Each queue also has a single word that contains a bit mask identifying
+non-empty queues to assist in selecting a process quickly.
+These are named
+.Va itqueuebits ,
+.Va rtqueuebits ,
+.Va queuebits ,
+and
+.Va idqueuebits .
+The run queues are protected by the
+.Va sched_lock
+mutex.
+.Pp
+.Fn procrunnable
+returns zero if there are no runnable processes other than the idle process.
+If there is at least one runnable process other than the idle process, it
+will return a non-zero value.
+Note that the
+.Va sched_lock
+mutex does
+.Em not
+need to be held when this function is called.
+There is a small race window where one CPU may place a process on the run queue
+when there are currently no other runnable processes while another CPU is
+calling this function.
+In that case the second CPU will simply travel through the idle loop one
+additional time before noticing that there is a runnable process.
+This works because idle CPUs are not halted in SMP systems.
+If idle CPUs are halted in SMP systems, then this race condition might have
+more serious repercussions in the losing case, and
+.Fn procrunnable
+may have to require that the
+.Va sched_lock
+mutex be acquired.
+.Pp
+.Fn choosethread
+returns the highest priority runnable thread.
+If there are no runnable threads, then the idle thread is returned.
+This function is called by
+.Fn cpu_switch
+and
+.Fn cpu_throw
+to determine which thread to switch to.
+.Fn choosethread
+must be called with the
+.Va sched_lock
+mutex held.
+.Pp
+.Fn setrunqueue
+adds the thread
+.Fa td
+to the tail of the appropriate queue in the proper priority queue.
+The thread must be runnable, i.e.\&
+.Va p_stat
+must be set to
+.Dv SRUN .
+This function must be called with the
+.Va sched_lock
+mutex held.
+.Pp
+.Fn remrunqueue
+removes thread
+.Fa td
+from its run queue.
+If
+.Fa td
+is not on a run queue, then the kernel will
+.Xr panic 9 .
+This function must be called with the
+.Va sched_lock
+mutex held.
+.Sh SEE ALSO
+.Xr cpu_switch 9 ,
+.Xr scheduler 9 ,
+.Xr sleepqueue 9
diff --git a/share/man/man9/rwlock.9 b/share/man/man9/rwlock.9
new file mode 100644
index 0000000..5039a42
--- /dev/null
+++ b/share/man/man9/rwlock.9
@@ -0,0 +1,313 @@
+.\" Copyright (c) 2006 Gleb Smirnoff <glebius@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$
+.\"
+.Dd April 1, 2008
+.Dt RWLOCK 9
+.Os
+.Sh NAME
+.Nm rwlock ,
+.Nm rw_init ,
+.Nm rw_init_flags,
+.Nm rw_destroy ,
+.Nm rw_rlock ,
+.Nm rw_wlock ,
+.Nm rw_runlock ,
+.Nm rw_wunlock ,
+.Nm rw_unlock ,
+.Nm rw_try_rlock ,
+.Nm rw_try_upgrade ,
+.Nm rw_try_wlock ,
+.Nm rw_downgrade ,
+.Nm rw_sleep ,
+.Nm rw_initialized ,
+.Nm rw_wowned ,
+.Nm rw_assert ,
+.Nm RW_SYSINIT
+.Nd kernel reader/writer lock
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/lock.h
+.In sys/rwlock.h
+.Ft void
+.Fn rw_init "struct rwlock *rw" "const char *name"
+.Ft void
+.Fn rw_init_flags "struct rwlock *rw" "const char *name" "int opts"
+.Ft void
+.Fn rw_destroy "struct rwlock *rw"
+.Ft void
+.Fn rw_rlock "struct rwlock *rw"
+.Ft void
+.Fn rw_wlock "struct rwlock *rw"
+.Ft int
+.Fn rw_try_rlock "struct rwlock *rw"
+.Ft int
+.Fn rw_try_wlock "struct rwlock *rw"
+.Ft void
+.Fn rw_runlock "struct rwlock *rw"
+.Ft void
+.Fn rw_wunlock "struct rwlock *rw"
+.Ft void
+.Fn rw_unlock "struct rwlock *rw"
+.Ft int
+.Fn rw_try_upgrade "struct rwlock *rw"
+.Ft void
+.Fn rw_downgrade "struct rwlock *rw"
+.Ft int
+.Fn rw_sleep "void *chan" "struct rwlock *rw" "int priority" "const char *wmesg" "int timo"
+.Ft int
+.Fn rw_initialized "struct rwlock *rw"
+.Ft int
+.Fn rw_wowned "struct rwlock *rw"
+.Pp
+.Cd "options INVARIANTS"
+.Cd "options INVARIANT_SUPPORT"
+.Ft void
+.Fn rw_assert "struct rwlock *rw" "int what"
+.In sys/kernel.h
+.Fn RW_SYSINIT "name" "struct rwlock *rw" "const char *desc"
+.Sh DESCRIPTION
+Reader/writer locks allow shared access to protected data by multiple threads,
+or exclusive access by a single thread.
+The threads with shared access are known as
+.Em readers
+since they only read the protected data.
+A thread with exclusive access is known as a
+.Em writer
+since it can modify protected data.
+.Pp
+Although reader/writer locks look very similar to
+.Xr sx 9
+locks, their usage pattern is different.
+Reader/writer locks can be treated as mutexes (see
+.Xr mutex 9 )
+with shared/exclusive semantics.
+Unlike
+.Xr sx 9 ,
+an
+.Nm
+can be locked while holding a non-spin mutex, and an
+.Nm
+cannot be held while sleeping.
+The
+.Nm
+locks have priority propagation like mutexes, but priority
+can be propagated only to an exclusive holder.
+This limitation comes from the fact that shared owners
+are anonymous.
+Another important property is that shared holders of
+.Nm
+can recurse,
+and exclusive locks can be made recursive selectively.
+.Ss Macros and Functions
+.Bl -tag -width indent
+.It Fn rw_init "struct rwlock *rw" "const char *name"
+Initialize structure located at
+.Fa rw
+as reader/writer lock, described by name
+.Fa name .
+The description is used solely for debugging purposes.
+This function must be called before any other operations
+on the lock.
+.It Fn rw_init_flags "struct rwlock *rw" "const char *name" "int opts"
+Initialize the rw lock just like the
+.Fn rw_init
+function, but specifying a set of optional flags to alter the
+behaviour of
+.Fa rw ,
+through the
+.Fa opts
+argument.
+It contains one or more of the following flags:
+.Bl -tag -width ".Dv RW_NOPROFILE"
+.It Dv RW_DUPOK
+Witness should not log messages about duplicate locks being acquired.
+.It Dv RW_NOPROFILE
+Do not profile this lock.
+.It Dv RW_NOWITNESS
+Instruct
+.Xr witness 4
+to ignore this lock.
+.It Dv RW_QUIET
+Do not log any operations for this lock via
+.Xr ktr 4 .
+.It Dv RW_RECURSE
+Allow threads to recursively acquire exclusive locks for
+.Fa rw .
+.El
+.It Fn rw_rlock "struct rwlock *rw"
+Lock
+.Fa rw
+as a reader.
+If any thread holds this lock exclusively, the current thread blocks,
+and its priority is propagated to the exclusive holder.
+The
+.Fn rw_rlock
+function can be called when the thread has already acquired reader
+access on
+.Fa rw .
+This is called
+.Dq "recursing on a lock" .
+.It Fn rw_wlock "struct rwlock *rw"
+Lock
+.Fa rw
+as a writer.
+If there are any shared owners of the lock, the current thread blocks.
+The
+.Fn rw_wlock
+function can be called recursively only if
+.Fa rw
+has been initialized with the
+.Dv RW_RECURSE
+option enabled.
+.It Fn rw_try_rlock "struct rwlock *rw"
+Try to lock
+.Fa rw
+as a reader.
+This function will return true if the operation succeeds, otherwise 0
+will be returned.
+.It Fn rw_try_wlock "struct rwlock *rw"
+Try to lock
+.Fa rw
+as a writer.
+This function will return true if the operation succeeds, otherwise 0
+will be returned.
+.It Fn rw_runlock "struct rwlock *rw"
+This function releases a shared lock previously acquired by
+.Fn rw_rlock .
+.It Fn rw_wunlock "struct rwlock *rw"
+This function releases an exclusive lock previously acquired by
+.Fn rw_wlock .
+.It Fn rw_unlock "struct rwlock *rw"
+This function releases a shared lock previously acquired by
+.Fn rw_rlock
+or an exclusive lock previously acquired by
+.Fn rw_wlock .
+.It Fn rw_try_upgrade "struct rwlock *rw"
+Attempt to upgrade a single shared lock to an exclusive lock.
+The current thread must hold a shared lock of
+.Fa rw .
+This will only succeed if the current thread holds the only shared lock on
+.Fa rw ,
+and it only holds a single shared lock.
+If the attempt succeeds
+.Fn rw_try_upgrade
+will return a non-zero value,
+and the current thread will hold an exclusive lock.
+If the attempt fails
+.Fn rw_try_upgrade
+will return zero,
+and the current thread will still hold a shared lock.
+.It Fn rw_downgrade "struct rwlock *rw"
+Convert an exclusive lock into a single shared lock.
+The current thread must hold an exclusive lock of
+.Fa rw .
+.It Fn rw_sleep "void *chan" "struct rwlock *rw" "int priority" "const char *wmesg" "int timo"
+Atomically release
+.Fa rw
+while waiting for an event.
+For more details on the parameters to this function,
+see
+.Xr sleep 9 .
+.It Fn rw_initialized "struct rwlock *rw"
+This function returns non-zero if
+.Fa rw
+has been initialized, and zero otherwise.
+.It Fn rw_destroy "struct rwlock *rw"
+This functions destroys a lock previously initialized with
+.Fn rw_init .
+The
+.Fa rw
+lock must be unlocked.
+.It Fn rw_wowned "struct rwlock *rw"
+This function returns a non-zero value if the current thread owns an
+exclusive lock on
+.Fa rw .
+.It Fn rw_assert "struct rwlock *rw" "int what"
+This function allows assertions specified in
+.Fa what
+to be made about
+.Fa rw .
+If the assertions are not true and the kernel is compiled
+with
+.Cd "options INVARIANTS"
+and
+.Cd "options INVARIANT_SUPPORT" ,
+the kernel will panic.
+Currently the following assertions are supported:
+.Bl -tag -width ".Dv RA_UNLOCKED"
+.It Dv RA_LOCKED
+Assert that current thread holds either a shared or exclusive lock
+of
+.Fa rw .
+.It Dv RA_RLOCKED
+Assert that current thread holds a shared lock of
+.Fa rw .
+.It Dv RA_WLOCKED
+Assert that current thread holds an exclusive lock of
+.Fa rw .
+.It Dv RA_UNLOCKED
+Assert that current thread holds neither a shared nor exclusive lock of
+.Fa rw .
+.El
+.El
+.Sh SEE ALSO
+.Xr locking 9 ,
+.Xr mutex 9 ,
+.Xr panic 9 ,
+.Xr sema 9 ,
+.Xr sx 9
+.Sh HISTORY
+These
+functions appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+facility was written by
+.An "John Baldwin" .
+This manual page was written by
+.An "Gleb Smirnoff" .
+.Sh BUGS
+If
+.Dv WITNESS
+is not included in the kernel,
+then it is impossible to assert that the current thread does or does not
+hold a read lock.
+In the
+.Pf non- Dv WITNESS
+case, the
+.Dv RA_LOCKED
+and
+.Dv RA_RLOCKED
+assertions merely check that some thread holds a read lock.
+.Pp
+Reader/writer is a bit of an awkward name.
+An
+.Nm
+can also be called a
+.Dq Robert Watson
+lock if desired.
diff --git a/share/man/man9/sbuf.9 b/share/man/man9/sbuf.9
new file mode 100644
index 0000000..1a752db
--- /dev/null
+++ b/share/man/man9/sbuf.9
@@ -0,0 +1,380 @@
+.\"-
+.\" Copyright (c) 2000 Poul Henning Kamp and Dag-Erling Coïdan Smørgrav
+.\" 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$
+.\"
+.Dd July 9, 2004
+.Dt SBUF 9
+.Os
+.Sh NAME
+.Nm sbuf ,
+.Nm sbuf_new ,
+.Nm sbuf_clear ,
+.Nm sbuf_setpos ,
+.Nm sbuf_bcat ,
+.Nm sbuf_bcopyin ,
+.Nm sbuf_bcpy ,
+.Nm sbuf_cat ,
+.Nm sbuf_copyin ,
+.Nm sbuf_cpy ,
+.Nm sbuf_printf ,
+.Nm sbuf_vprintf ,
+.Nm sbuf_putc ,
+.Nm sbuf_trim ,
+.Nm sbuf_overflowed ,
+.Nm sbuf_finish ,
+.Nm sbuf_data ,
+.Nm sbuf_len ,
+.Nm sbuf_done ,
+.Nm sbuf_delete
+.Nd safe string formatting
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/sbuf.h
+.Ft struct sbuf *
+.Fn sbuf_new "struct sbuf *s" "char *buf" "int length" "int flags"
+.Ft void
+.Fn sbuf_clear "struct sbuf *s"
+.Ft int
+.Fn sbuf_setpos "struct sbuf *s" "int pos"
+.Ft int
+.Fn sbuf_bcat "struct sbuf *s" "const void *buf" "size_t len"
+.Ft int
+.Fn sbuf_bcopyin "struct sbuf *s" "const void *uaddr" "size_t len"
+.Ft int
+.Fn sbuf_bcpy "struct sbuf *s" "const void *buf" "size_t len"
+.Ft int
+.Fn sbuf_cat "struct sbuf *s" "const char *str"
+.Ft int
+.Fn sbuf_copyin "struct sbuf *s" "const void *uaddr" "size_t len"
+.Ft int
+.Fn sbuf_cpy "struct sbuf *s" "const char *str"
+.Ft int
+.Fn sbuf_printf "struct sbuf *s" "const char *fmt" "..."
+.Ft int
+.Fn sbuf_vprintf "struct sbuf *s" "const char *fmt" "va_list ap"
+.Ft int
+.Fn sbuf_putc "struct sbuf *s" "int c"
+.Ft int
+.Fn sbuf_trim "struct sbuf *s"
+.Ft int
+.Fn sbuf_overflowed "struct sbuf *s"
+.Ft void
+.Fn sbuf_finish "struct sbuf *s"
+.Ft char *
+.Fn sbuf_data "struct sbuf *s"
+.Ft int
+.Fn sbuf_len "struct sbuf *s"
+.Ft int
+.Fn sbuf_done "struct sbuf *s"
+.Ft void
+.Fn sbuf_delete "struct sbuf *s"
+.Sh DESCRIPTION
+The
+.Nm
+family of functions allows one to safely allocate, construct and
+release bounded null-terminated strings in kernel space.
+Instead of arrays of characters, these functions operate on structures
+called
+.Fa sbufs ,
+defined in
+.In sys/sbuf.h .
+.Pp
+The
+.Fn sbuf_new
+function initializes the
+.Fa sbuf
+pointed to by its first argument.
+If that pointer is
+.Dv NULL ,
+.Fn sbuf_new
+allocates a
+.Vt struct sbuf
+using
+.Xr malloc 9 .
+The
+.Fa buf
+argument is a pointer to a buffer in which to store the actual string;
+if it is
+.Dv NULL ,
+.Fn sbuf_new
+will allocate one using
+.Xr malloc 9 .
+The
+.Fa length
+is the initial size of the storage buffer.
+The fourth argument,
+.Fa flags ,
+may be comprised of the following flags:
+.Bl -tag -width ".Dv SBUF_AUTOEXTEND"
+.It Dv SBUF_FIXEDLEN
+The storage buffer is fixed at its initial size.
+Attempting to extend the sbuf beyond this size results in an overflow condition.
+.It Dv SBUF_AUTOEXTEND
+This indicates that the storage buffer may be extended as necessary, so long
+as resources allow, to hold additional data.
+.El
+.Pp
+Note that if
+.Fa buf
+is not
+.Dv NULL ,
+it must point to an array of at least
+.Fa length
+characters.
+The result of accessing that array directly while it is in use by the
+sbuf is undefined.
+.Pp
+The
+.Fn sbuf_delete
+function clears the
+.Fa sbuf
+and frees any memory allocated for it.
+There must be a call to
+.Fn sbuf_delete
+for every call to
+.Fn sbuf_new .
+Any attempt to access the sbuf after it has been deleted will fail.
+.Pp
+The
+.Fn sbuf_clear
+function invalidates the contents of the
+.Fa sbuf
+and resets its position to zero.
+.Pp
+The
+.Fn sbuf_setpos
+function sets the
+.Fa sbuf Ns 's
+end position to
+.Fa pos ,
+which is a value between zero and one less than the size of the
+storage buffer.
+This effectively truncates the sbuf at the new position.
+.Pp
+The
+.Fn sbuf_bcat
+function appends the first
+.Fa len
+bytes from the buffer
+.Fa buf
+to the
+.Fa sbuf .
+.Pp
+The
+.Fn sbuf_bcopyin
+function copies
+.Fa len
+bytes from the specified userland address into the
+.Fa sbuf .
+.Pp
+The
+.Fn sbuf_bcpy
+function replaces the contents of the
+.Fa sbuf
+with the first
+.Fa len
+bytes from the buffer
+.Fa buf .
+.Pp
+The
+.Fn sbuf_cat
+function appends the NUL-terminated string
+.Fa str
+to the
+.Fa sbuf
+at the current position.
+.Pp
+The
+.Fn sbuf_copyin
+function copies a NUL-terminated string from the specified userland
+address into the
+.Fa sbuf .
+If the
+.Fa len
+argument is non-zero, no more than
+.Fa len
+characters (not counting the terminating NUL) are copied; otherwise
+the entire string, or as much of it as can fit in the
+.Fa sbuf ,
+is copied.
+.Pp
+The
+.Fn sbuf_cpy
+function replaces the contents of the
+.Fa sbuf
+with those of the NUL-terminated string
+.Fa str .
+This is equivalent to calling
+.Fn sbuf_cat
+with a fresh
+.Fa sbuf
+or one which position has been reset to zero with
+.Fn sbuf_clear
+or
+.Fn sbuf_setpos .
+.Pp
+The
+.Fn sbuf_printf
+function formats its arguments according to the format string pointed
+to by
+.Fa fmt
+and appends the resulting string to the
+.Fa sbuf
+at the current position.
+.Pp
+The
+.Fn sbuf_vprintf
+function behaves the same as
+.Fn sbuf_printf
+except that the arguments are obtained from the variable-length argument list
+.Fa ap .
+.Pp
+The
+.Fn sbuf_putc
+function appends the character
+.Fa c
+to the
+.Fa sbuf
+at the current position.
+.Pp
+The
+.Fn sbuf_trim
+function removes trailing whitespace from the
+.Fa sbuf .
+.Pp
+The
+.Fn sbuf_overflowed
+function returns a non-zero value if the
+.Fa sbuf
+overflowed.
+.Pp
+The
+.Fn sbuf_finish
+function null-terminates the
+.Fa sbuf
+and marks it as finished, which means that it may no longer be
+modified using
+.Fn sbuf_setpos ,
+.Fn sbuf_cat ,
+.Fn sbuf_cpy ,
+.Fn sbuf_printf
+or
+.Fn sbuf_putc .
+.Pp
+The
+.Fn sbuf_data
+and
+.Fn sbuf_len
+functions return the actual string and its length, respectively;
+.Fn sbuf_data
+only works on a finished
+.Fa sbuf .
+.Fn sbuf_done
+returns non-zero if the sbuf is finished.
+.Sh NOTES
+If an operation caused an
+.Fa sbuf
+to overflow, most subsequent operations on it will fail until the
+.Fa sbuf
+is finished using
+.Fn sbuf_finish
+or reset using
+.Fn sbuf_clear ,
+or its position is reset to a value between 0 and one less than the
+size of its storage buffer using
+.Fn sbuf_setpos ,
+or it is reinitialized to a sufficiently short string using
+.Fn sbuf_cpy .
+.Sh RETURN VALUES
+The
+.Fn sbuf_new
+function returns
+.Dv NULL
+if it failed to allocate a storage buffer, and a pointer to the new
+.Fa sbuf
+otherwise.
+.Pp
+The
+.Fn sbuf_setpos
+function returns \-1 if
+.Fa pos
+was invalid, and zero otherwise.
+.Pp
+The
+.Fn sbuf_cat ,
+.Fn sbuf_cpy ,
+.Fn sbuf_printf ,
+.Fn sbuf_putc ,
+and
+.Fn sbuf_trim
+functions
+all return \-1 if the buffer overflowed, and zero otherwise.
+.Pp
+The
+.Fn sbuf_overflowed
+function
+returns a non-zero value if the buffer overflowed, and zero otherwise.
+.Pp
+The
+.Fn sbuf_data
+and
+.Fn sbuf_len
+functions return
+.Dv NULL
+and \-1, respectively, if the buffer overflowed.
+.Pp
+The
+.Fn sbuf_copyin
+function
+returns \-1 if copying string from userland failed, and number of bytes
+copied otherwise.
+.Sh SEE ALSO
+.Xr printf 3 ,
+.Xr strcat 3 ,
+.Xr strcpy 3 ,
+.Xr copyin 9 ,
+.Xr copyinstr 9 ,
+.Xr printf 9
+.Sh HISTORY
+The
+.Nm
+family of functions first appeared in
+.Fx 4.4 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+family of functions was designed by
+.An Poul-Henning Kamp Aq phk@FreeBSD.org
+and implemented by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
+Additional improvements were suggested by
+.An Justin T. Gibbs Aq gibbs@FreeBSD.org .
+Auto-extend support added by
+.An Kelly Yancey Aq kbyanc@FreeBSD.org .
+.Pp
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
diff --git a/share/man/man9/scheduler.9 b/share/man/man9/scheduler.9
new file mode 100644
index 0000000..c56fd0b
--- /dev/null
+++ b/share/man/man9/scheduler.9
@@ -0,0 +1,276 @@
+.\" Copyright (c) 2000-2001 John H. Baldwin <jhb@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd November 3, 2000
+.Dt SCHEDULER 9
+.Os
+.Sh NAME
+.Nm curpriority_cmp ,
+.Nm maybe_resched ,
+.Nm resetpriority ,
+.Nm roundrobin ,
+.Nm roundrobin_interval ,
+.Nm sched_setup ,
+.Nm schedclock ,
+.Nm schedcpu ,
+.Nm setrunnable ,
+.Nm updatepri
+.Nd perform round-robin scheduling of runnable processes
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Ft int
+.Fn curpriority_cmp "struct proc *p"
+.Ft void
+.Fn maybe_resched "struct thread *td"
+.Ft void
+.Fn propagate_priority "struct proc *p"
+.Ft void
+.Fn resetpriority "struct ksegrp *kg"
+.Ft void
+.Fn roundrobin "void *arg"
+.Ft int
+.Fn roundrobin_interval "void"
+.Ft void
+.Fn sched_setup "void *dummy"
+.Ft void
+.Fn schedclock "struct thread *td"
+.Ft void
+.Fn schedcpu "void *arg"
+.Ft void
+.Fn setrunnable "struct thread *td"
+.Ft void
+.Fn updatepri "struct thread *td"
+.Sh DESCRIPTION
+Each process has three different priorities stored in
+.Vt "struct proc" :
+.Va p_usrpri ,
+.Va p_nativepri ,
+and
+.Va p_priority .
+.Pp
+The
+.Va p_usrpri
+member is the user priority of the process calculated from a process'
+estimated CPU time and nice level.
+.Pp
+The
+.Va p_nativepri
+member is the saved priority used by
+.Fn propagate_priority .
+When a process obtains a mutex, its priority is saved in
+.Va p_nativepri .
+While it holds the mutex, the process's priority may be bumped by another
+process that blocks on the mutex.
+When the process releases the mutex, then its priority is restored to the
+priority saved in
+.Va p_nativepri .
+.Pp
+The
+.Va p_priority
+member is the actual priority of the process and is used to determine what
+.Xr runqueue 9
+it runs on, for example.
+.Pp
+The
+.Fn curpriority_cmp
+function compares the cached priority of the currently running process with
+process
+.Fa p .
+If the currently running process has a higher priority, then it will return
+a value less than zero.
+If the current process has a lower priority, then it will return a value
+greater than zero.
+If the current process has the same priority as
+.Fa p ,
+then
+.Fn curpriority_cmp
+will return zero.
+The cached priority of the currently running process is updated when a process
+resumes from
+.Xr tsleep 9
+or returns to userland in
+.Fn userret
+and is stored in the private variable
+.Va curpriority .
+.Pp
+The
+.Fn maybe_resched
+function compares the priorities of the current thread and
+.Fa td .
+If
+.Fa td
+has a higher priority than the current thread, then a context switch is
+needed, and
+.Dv KEF_NEEDRESCHED
+is set.
+.Pp
+The
+.Fn propagate_priority
+looks at the process that owns the mutex
+.Fa p
+is blocked on.
+That process's priority is bumped to the priority of
+.Fa p
+if needed.
+If the process is currently running, then the function returns.
+If the process is on a
+.Xr runqueue 9 ,
+then the process is moved to the appropriate
+.Xr runqueue 9
+for its new priority.
+If the process is blocked on a mutex, its position in the list of
+processes blocked on the mutex in question is updated to reflect its new
+priority.
+Then, the function repeats the procedure using the process that owns the
+mutex just encountered.
+Note that a process's priorities are only bumped to the priority of the
+original process
+.Fa p ,
+not to the priority of the previously encountered process.
+.Pp
+The
+.Fn resetpriority
+function recomputes the user priority of the ksegrp
+.Fa kg
+(stored in
+.Va kg_user_pri )
+and calls
+.Fn maybe_resched
+to force a reschedule of each thread in the group if needed.
+.Pp
+The
+.Fn roundrobin
+function is used as a
+.Xr timeout 9
+function to force a reschedule every
+.Va sched_quantum
+ticks.
+.Pp
+The
+.Fn roundrobin_interval
+function simply returns the number of clock ticks in between reschedules
+triggered by
+.Fn roundrobin .
+Thus, all it does is return the current value of
+.Va sched_quantum .
+.Pp
+The
+.Fn sched_setup
+function is a
+.Xr SYSINIT 9
+that is called to start the callout driven scheduler functions.
+It just calls the
+.Fn roundrobin
+and
+.Fn schedcpu
+functions for the first time.
+After the initial call, the two functions will propagate themselves by
+registering their callout event again at the completion of the respective
+function.
+.Pp
+The
+.Fn schedclock
+function is called by
+.Fn statclock
+to adjust the priority of the currently running thread's ksegrp.
+It updates the group's estimated CPU time and then adjusts the priority via
+.Fn resetpriority .
+.Pp
+The
+.Fn schedcpu
+function updates all process priorities.
+First, it updates statistics that track how long processes have been in various
+process states.
+Secondly, it updates the estimated CPU time for the current process such
+that about 90% of the CPU usage is forgotten in 5 * load average seconds.
+For example, if the load average is 2.00,
+then at least 90% of the estimated CPU time for the process should be based
+on the amount of CPU time the process has had in the last 10 seconds.
+It then recomputes the priority of the process and moves it to the
+appropriate
+.Xr runqueue 9
+if necessary.
+Thirdly, it updates the %CPU estimate used by utilities such as
+.Xr ps 1
+and
+.Xr top 1
+so that 95% of the CPU usage is forgotten in 60 seconds.
+Once all process priorities have been updated,
+.Fn schedcpu
+calls
+.Fn vmmeter
+to update various other statistics including the load average.
+Finally, it schedules itself to run again in
+.Va hz
+clock ticks.
+.Pp
+The
+.Fn setrunnable
+function is used to change a process's state to be runnable.
+The process is placed on a
+.Xr runqueue 9
+if needed, and the swapper process is woken up and told to swap the process in
+if the process is swapped out.
+If the process has been asleep for at least one run of
+.Fn schedcpu ,
+then
+.Fn updatepri
+is used to adjust the priority of the process.
+.Pp
+The
+.Fn updatepri
+function is used to adjust the priority of a process that has been asleep.
+It retroactively decays the estimated CPU time of the process for each
+.Fn schedcpu
+event that the process was asleep.
+Finally, it calls
+.Fn resetpriority
+to adjust the priority of the process.
+.Sh SEE ALSO
+.Xr mi_switch 9 ,
+.Xr runqueue 9 ,
+.Xr sleepqueue 9 ,
+.Xr tsleep 9
+.Sh BUGS
+The
+.Va curpriority
+variable really should be per-CPU.
+In addition,
+.Fn maybe_resched
+should compare the priority of
+.Fa chk
+with that of each CPU, and then send an IPI to the processor with the lowest
+priority to trigger a reschedule if needed.
+.Pp
+Priority propagation is broken and is thus disabled by default.
+The
+.Va p_nativepri
+variable is only updated if a process does not obtain a sleep mutex on the
+first try.
+Also, if a process obtains more than one sleep mutex in this manner, and
+had its priority bumped in between, then
+.Va p_nativepri
+will be clobbered.
diff --git a/share/man/man9/securelevel_gt.9 b/share/man/man9/securelevel_gt.9
new file mode 100644
index 0000000..b270694
--- /dev/null
+++ b/share/man/man9/securelevel_gt.9
@@ -0,0 +1,71 @@
+.\"
+.\" Copyright (c) 2000 Christian S.J. Peron <maneo@bsdpro.com>
+.\" 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.
+.\"
+.\" 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$
+.\"
+.Dd June 2, 2007
+.Dt SECURELEVEL_GT 9
+.Os
+.Sh NAME
+.Nm securelevel_gt , securelevel_ge
+.Nd test active securelevel
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/proc.h
+.Ft int
+.Fn securelevel_gt "struct ucred *cr" "int level"
+.Ft int
+.Fn securelevel_ge "struct ucred *cr" "int level"
+.Sh DESCRIPTION
+These functions test the active security level against the given
+.Fa level .
+If the calling credential
+.Fa cr
+was imprisoned by the
+.Xr jail 2
+system call, and has a
+different security level set than the host environment,
+the security level with the highest value is used.
+.Pp
+The
+.Fn securelevel_gt
+function
+will evaluate whether or not the active security
+level is greater than the supplied
+.Fa level .
+.Pp
+The
+.Fn securelevel_ge
+function
+will evaluate whether or not the active security
+level is greater than or equal to the supplied
+.Fa level .
+.Sh RETURN VALUES
+These functions return
+.Er EPERM
+if condition evaluated to true, and 0 otherwise.
+.Sh SEE ALSO
+.Xr securelevel 7
diff --git a/share/man/man9/selrecord.9 b/share/man/man9/selrecord.9
new file mode 100644
index 0000000..15c5a18
--- /dev/null
+++ b/share/man/man9/selrecord.9
@@ -0,0 +1,109 @@
+.\"
+.\" Copyright (C) 2002 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd June 13, 2007
+.Dt SELRECORD 9
+.Os
+.Sh NAME
+.Nm selrecord ,
+.Nm selwakeup
+.Nd "record and wakeup select requests"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/selinfo.h
+.Ft void
+.Fn selrecord "struct thread *td" "struct selinfo *sip"
+.Ft void
+.Fn selwakeup "struct selinfo *sip"
+.Sh DESCRIPTION
+.Fn selrecord
+and
+.Fn selwakeup
+are the two central functions used by
+.Xr select 2 ,
+.Xr poll 2
+and the objects that are being selected on.
+They handle the task of recording which threads are waiting on which objects
+and the waking of the proper threads when an event of interest occurs on an
+object.
+.Pp
+.Fn selrecord
+records that the calling thread is interested in events related to a given
+object.
+If another thread is already waiting on the object a collision will be flagged
+in
+.Fa sip
+which will be later dealt with by
+.Fn selwakeup .
+.Pp
+.Fn selrecord
+acquires and releases
+.Va sellock .
+.Pp
+.Fn selwakeup
+is called by the underlying object handling code in order to notify any waiting
+threads that an event of interest has occurred.
+If a collision has occurred,
+.Fn selwakeup
+will increment
+.Va nselcoll ,
+and broadcast on the global cv in order to wake all waiting threads so that
+they can handle it.
+If the thread waiting on the object is not currently sleeping or the wait
+channel is not
+.Va selwait ,
+.Fn selwakeup
+will clear the
+.Dv TDF_SELECT
+flag which should be noted by
+.Xr select 2
+and
+.Xr poll 2
+when they wake up.
+.Pp
+The contents of
+.Fa *sip
+must be zeroed, such as by softc initialization, before any call to
+.Fn selrecord
+or
+.Fn selwakeup ,
+otherwise a panic may occur.
+.Fn selwakeup
+acquires and releases
+.Va sellock
+and may acquire and release
+.Va sched_lock .
+.Sh SEE ALSO
+.Xr poll 2 ,
+.Xr select 2
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Chad David Aq davidc@FreeBSD.org
+and
+.An Alfred Perlstein Aq alfred@FreeBSD.org .
diff --git a/share/man/man9/sema.9 b/share/man/man9/sema.9
new file mode 100644
index 0000000..1f6e3b5
--- /dev/null
+++ b/share/man/man9/sema.9
@@ -0,0 +1,132 @@
+.\"
+.\" Copyright (C) 2001 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 1, 2006
+.Dt SEMA 9
+.Os
+.Sh NAME
+.Nm sema ,
+.Nm sema_init ,
+.Nm sema_destroy ,
+.Nm sema_post ,
+.Nm sema_wait ,
+.Nm sema_timedwait ,
+.Nm sema_trywait ,
+.Nm sema_value
+.Nd kernel counting semaphore
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/lock.h
+.In sys/sema.h
+.Ft void
+.Fn sema_init "struct sema *sema" "int value" "const char *description"
+.Ft void
+.Fn sema_destroy "struct sema *sema"
+.Ft void
+.Fn sema_post "struct sema *sema"
+.Ft void
+.Fn sema_wait "struct sema *sema"
+.Ft int
+.Fn sema_timedwait "struct sema *sema" "int timo"
+.Ft int
+.Fn sema_trywait "struct sema *sema"
+.Ft int
+.Fn sema_value "struct sema *sema"
+.Sh DESCRIPTION
+Counting semaphores provide a mechanism for synchronizing access to a pool of
+resources.
+Unlike mutexes, semaphores do not have the concept of an owner, so they can also
+be useful in situations where one thread needs to acquire a resource, and
+another thread needs to release it.
+Each semaphore has an integer value associated with it.
+Posting (incrementing) always succeeds, but waiting (decrementing) can only
+successfully complete if the resulting value of the semaphore is greater than or
+equal to zero.
+.Pp
+Semaphores should not be used where mutexes and condition variables
+will suffice.
+Semaphores are a more complex synchronization mechanism than mutexes and
+condition variables, and are not as efficient.
+.Pp
+Semaphores are created with
+.Fn sema_init ,
+where
+.Fa sema
+is a pointer to space for a
+.Vt "struct sema" ,
+.Fa value
+is the initial value of the semaphore, and
+.Fa description
+is a pointer to a null-terminated character string that describes the semaphore.
+Semaphores are destroyed with
+.Fn sema_destroy .
+A semaphore is posted (incremented) with
+.Fn sema_post .
+A semaphore is waited on (decremented) with
+.Fn sema_wait ,
+.Fn sema_timedwait ,
+or
+.Fn sema_trywait .
+The
+.Fa timo
+argument to
+.Fn sema_timedwait
+specifies the minimum time in ticks to wait before returning with failure.
+.Fn sema_value
+is used to read the current value of the semaphore.
+.Sh RETURN VALUES
+The
+.Fn sema_value
+function
+returns the current value of the semaphore.
+.Pp
+If decrementing the semaphore would result in its value being negative,
+.Fn sema_trywait
+returns 0 to indicate failure.
+Otherwise, a non-zero value is returned to indicate success.
+.Pp
+The
+.Fn sema_timedwait
+function
+returns 0 if waiting on the semaphore succeeded; otherwise a
+non-zero error code is returned.
+.Sh ERRORS
+The
+.Fn sema_timedwait
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EWOULDBLOCK
+Timeout expired.
+.El
+.Sh SEE ALSO
+.Xr condvar 9 ,
+.Xr locking 9 ,
+.Xr mtx_pool 9 ,
+.Xr mutex 9 ,
+.Xr rwlock 9 ,
+.Xr sx 9
diff --git a/share/man/man9/sf_buf.9 b/share/man/man9/sf_buf.9
new file mode 100644
index 0000000..8d73937
--- /dev/null
+++ b/share/man/man9/sf_buf.9
@@ -0,0 +1,142 @@
+.\"
+.\" Copyright (c) 2007 Seccuris Inc.
+.\" All rights reserved.
+.\"
+.\" This documentation was written by Robert N. M. Watson under contract to
+.\" Seccuris 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd January 28, 2007
+.Dt SF_BUF 9
+.Os
+.Sh NAME
+.Nm sf_buf
+.Nd manage temporary kernel address space mapping for memory pages
+.Sh SYNOPSIS
+.In sys/sf_buf.h
+.Ft struct sf_buf *
+.Fn sf_buf_alloc "struct vm_page *m" "int flags"
+.Ft void
+.Fn sf_buf_free "struct sf_buf *sf"
+.Ft vm_offset_t
+.Fn sf_buf_kva "struct sf_buf *sf"
+.Ft struct vm_page *
+.Fn sf_buf_page "struct sf_buf *sf"
+.Sh DESCRIPTION
+The
+.Nm
+interface, historically the
+.Xr sendfile 2
+buffer interface, allows kernel subsystems to manage temporary kernel address
+space mappings for physical memory pages.
+On systems with a direct memory map region (allowing all physical pages to be
+visible in the kernel address space at all times), the
+.Vt "struct sf_buf"
+will point to an address in the direct map region; on systems without a
+direct memory map region, the
+.Vt "struct sf_buf"
+will manage a temporary kernel address space mapping valid for the lifetime
+of the
+.Vt "struct sf_buf".
+.Pp
+Call
+.Fn sf_buf_alloc
+to allocate a
+.Vt "struct sf_buf"
+for a physical memory page.
+.Fn sf_buf_alloc
+is not responsible for arranging for the page to be present in physical
+memory; the caller should already have arranged for the page to be wired,
+i.e., by calling
+.Xr vm_page_wire 9 .
+Several flags may be passed to
+.Fn sf_buf_alloc :
+.Bl -tag -width SFB_CPUPRIVATE
+.It Dv SFB_CATCH
+Cause
+.Fn sf_buf_alloc
+to abort and return
+.Dv NULL
+if a signal is received waiting for a
+.Vt "struct sf_buf"
+to become available.
+.It Dv SFB_NOWAIT
+Cause
+.Fn sf_buf_alloc
+to return
+.Dv NULL
+rather than sleeping if a
+.Vt "struct sf_buf"
+is not immediately available.
+.It Dv SFB_CPUPRIVATE
+Cause
+.Fn sf_buf_alloc
+to only arrange that the temporary mapping be valid on the current CPU,
+avoiding unnecessary TLB shootdowns for mappings that will only be accessed
+on a single CPU at a time.
+The caller must ensure that accesses to the virtual address occur only on the
+CPU from which
+.Fn sf_buf_alloc
+was invoked, perhaps by using
+.Fn sched_pin .
+.El
+.Pp
+Call
+.Fn sf_buf_kva
+to return a kernel mapped address for the page.
+.Pp
+Call
+.Fn sf_buf_page
+to return a pointer to the page originally passed into
+.Fn sf_buf_alloc .
+.Pp
+Call
+.Fn sf_buf_free
+to release the
+.Vt "struct sf_buf"
+reference.
+The caller is responsible for releasing any wiring they have previously
+acquired on the physical page;
+.Fn sf_buf_free
+releases only the temporary kernel address space mapping, not the page
+itself.
+.Pp
+Uses of this interface include managing mappings of borrowed pages from user
+memory, such as in zero-copy socket I/O, or pages of memory from the buffer
+cache referenced by mbuf external storage for
+.Xr sendfile 2 .
+.Sh SEE ALSO
+.Xr sendfile 2 ,
+.Xr vm_page_wire 9
+.Sh AUTHORS
+.An -nosplit
+The
+.Vt "struct sf_buf"
+API was designed and implemented by
+.An Alan L. Cox .
+This manual page was written by
+.An Robert N. M. Watson .
diff --git a/share/man/man9/signal.9 b/share/man/man9/signal.9
new file mode 100644
index 0000000..6f377ee
--- /dev/null
+++ b/share/man/man9/signal.9
@@ -0,0 +1,446 @@
+.\"
+.\" Copyright (C) 2002 Chad David <davidc@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 20, 2004
+.Dt SIGNAL 9
+.Os
+.Sh NAME
+.Nm signal ,
+.Nm SIGADDSET ,
+.Nm SIGDELSET ,
+.Nm SETEMPTYSET ,
+.Nm SIGFILLSET ,
+.Nm SIGISMEMBER ,
+.Nm SIGISEMPTY ,
+.Nm SIGNOTEMPTY ,
+.Nm SIGSETEQ ,
+.Nm SIGSETNEQ ,
+.Nm SIGSETOR ,
+.Nm SIGSETAND ,
+.Nm SIGSETNAND ,
+.Nm SIGSETCANTMASK ,
+.Nm SIG_STOPSIGMASK ,
+.Nm SIG_CONTSIGMASK ,
+.Nm SIGPENDING ,
+.Nm cursig ,
+.Nm execsigs ,
+.Nm issignal ,
+.Nm killproc ,
+.Nm pgsigio ,
+.Nm postsig ,
+.Nm sigexit ,
+.Nm siginit ,
+.Nm signotify ,
+.Nm trapsignal
+.Nd "kernel signal functions"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.In sys/signalvar.h
+.Ft void
+.Fn SIGADDSET "sigset_t set" "int signo"
+.Ft void
+.Fn SIGDELSET "sigset_t set" "int signo"
+.Ft void
+.Fn SIGEMPTYSET "sigset_t set"
+.Ft void
+.Fn SIGFILLSET "sigset_t set"
+.Ft int
+.Fn SIGISMEMBER "sigset_t set" "int signo"
+.Ft int
+.Fn SIGISEMPTY "sigset_t set"
+.Ft int
+.Fn SIGNOTEMPTY "sigset_t set"
+.Ft int
+.Fn SIGSETEQ "sigset_t set1" "sigset_t set2"
+.Ft int
+.Fn SIGSETNEQ "sigset_t set1" "sigset_t set2"
+.Ft void
+.Fn SIGSETOR "sigset_t set1" "sigset_t set2"
+.Ft void
+.Fn SIGSETAND "sigset_t set1" "sigset_t set2"
+.Ft void
+.Fn SIGSETNAND "sigset_t set1" "sigset_t set2"
+.Ft void
+.Fn SIG_CANTMASK "sigset_t set"
+.Ft void
+.Fn SIG_STOPSIGMASK "sigset_t set"
+.Ft void
+.Fn SIG_CONTSIGMASK "sigset_t set"
+.Ft int
+.Fn SIGPENDING "struct proc *p"
+.Ft int
+.Fn cursig "struct thread *td"
+.Ft void
+.Fn execsigs "struct proc *p"
+.Ft int
+.Fn issignal "struct thread *td"
+.Ft void
+.Fn killproc "struct proc *p" "char *why"
+.Ft void
+.Fn pgsigio "struct sigio **sigiop" "int sig" "int checkctty"
+.Ft void
+.Fn postsig "int sig"
+.Ft void
+.Fn sigexit "struct thread *td" "int signum"
+.Ft void
+.Fn siginit "struct proc *p"
+.Ft void
+.Fn signotify "struct thread *td"
+.Ft void
+.Fn trapsignal "struct thread *td" "int sig" "u_long code"
+.Sh DESCRIPTION
+The
+.Fn SIGADDSET
+macro adds
+.Fa signo
+to
+.Fa set .
+No effort is made to ensure that
+.Fa signo
+is a valid signal number.
+.Pp
+The
+.Fn SIGDELSET
+macro removes
+.Fa signo
+from
+.Fa set .
+No effort is made to ensure that
+.Fa signo
+is a valid signal number.
+.Pp
+The
+.Fn SIGEMPTYSET
+macro clears all signals in
+.Fa set .
+.Pp
+The
+.Fn SIGFILLSET
+macro sets all signals in
+.Fa set .
+.Pp
+The
+.Fn SIGISMEMBER
+macro determines if
+.Fa signo
+is set in
+.Fa set .
+.Pp
+The
+.Fn SIGISEMPTY
+macro determines if
+.Fa set
+does not have any signals set.
+.Pp
+The
+.Fn SIGNOTEMPTY
+macro determines if
+.Fa set
+has any signals set.
+.Pp
+The
+.Fn SIGSETEQ
+macro determines if two signal sets are equal; that is, the same signals
+are set in both.
+.Pp
+The
+.Fn SIGSETNEQ
+macro determines if two signal sets differ; that is, if any signal set in
+one is not set in the other.
+.Pp
+The
+.Fn SIGSETOR
+macro ORs the signals set in
+.Fa set2
+into
+.Fa set1 .
+.Pp
+The
+.Fn SIGSETAND
+macro ANDs the signals set in
+.Fa set2
+into
+.Fa set1 .
+.Pp
+The
+.Fn SIGSETNAND
+macro NANDs the signals set in
+.Fa set2
+into
+.Fa set1 .
+.Pp
+The
+.Fn SIG_CANTMASK
+macro clears the
+.Dv SIGKILL
+and
+.Dv SIGSTOP
+signals from
+.Fa set .
+These two signals cannot be blocked or caught and
+.Fn SIG_CANTMASK
+is used in code where signals are manipulated to ensure this policy
+is enforced.
+.Pp
+The
+.Fn SIG_STOPSIGMASK
+macro clears the
+.Dv SIGSTOP ,
+.Dv SIGTSTP ,
+.Dv SIGTTIN ,
+and
+.Dv SIGTTOU
+signals from
+.Fa set .
+.Fn SIG_STOPSIGMASK
+is used to clear stop signals when a process is waiting for a child to
+exit or exec, and when a process is continuing after having been
+suspended.
+.Pp
+The
+.Fn SIG_CONTSIGMASK
+macro clears the
+.Dv SIGCONT
+signal from
+.Fa set .
+.Fn SIG_CONTSIGMASK
+is called when a process is stopped.
+.Pp
+The
+.Fn SIGPENDING
+macro determines if the given process has any pending signals that are
+not masked.
+If the process has a pending signal and the process is currently being
+traced,
+.Fn SIGPENDING
+will return true even if the signal is masked.
+.Pp
+The
+.Fn cursig
+function returns the signal number that should be delivered to process
+.Fa td->td_proc .
+If there are no signals pending, zero is returned.
+.Pp
+The
+.Fn execsigs
+function resets the signal set and signal stack of a process in preparation
+for an
+.Xr execve 2 .
+The lock for
+.Fa p
+must be held before
+.Fn execsigs
+is called.
+.Pp
+The
+.Fn issignal
+function determines if there are any pending signals for process
+.Fa td->td_proc
+that should be caught, or cause this process to terminate or interrupt its
+current system call.
+If process
+.Fa td->td_proc
+is currently being traced, ignored signals will be handled and the process
+is always stopped.
+Stop signals are handled and cleared right away by
+.Fn issignal
+unless the process is a member of an orphaned process group and the stop
+signal originated from a TTY.
+The
+.Va sched_lock
+lock may be acquired and released, and if
+.Va Giant
+is held, it may be released and reacquired.
+The
+.Vt sigacts
+structure
+.Fa td->td_proc->p_sigacts
+must be locked before calling
+.Fn issignal
+and may be released and reacquired during the call.
+The process lock for
+.Fa td->td_proc
+must be acquired before calling
+.Fn issignal
+and may be released and reacquired during the call.
+The lock for the parent of
+.Fa td->td_proc
+may also be acquired and released.
+Default signal actions are not taken for system processes and init.
+.Pp
+The
+.Fn killproc
+function delivers
+.Dv SIGKILL
+to
+.Fa p .
+.Fa why
+is logged as the reason
+.Em why
+the process was killed.
+.Pp
+The
+.Fn pgsigio
+function sends the signal
+.Fa sig
+to the process or process group
+.Fa sigiop->sio_pgid .
+If
+.Fa checkctty
+is non-zero, the signal is only delivered to processes in the process group
+that have a controlling terminal.
+If
+.Fa sigiop->sio_pgid
+is for a process (> 0), the lock for
+.Fa sigiop->sio_proc
+is acquired and released.
+If
+.Fa sigiop->sio_pgid
+is for a process group (< 0), the process group lock for
+.Fa sigiop->sio_pgrp
+is acquired and released.
+The lock
+.Va sigio_lock
+is acquired and released.
+.Pp
+The
+.Fn postsig
+function handles the actual delivery of the signal
+.Fa sig .
+.Fn postsig
+is called from
+.Fn ast
+after the kernel has been notified that a signal should be delivered
+(via a call to
+.Fn signotify ,
+which causes the flag
+.Dv PS_NEEDSIGCHK
+to be set).
+The lock for process that owns
+.Va curthread
+must be held before
+.Fn postsig
+is called, and the current process cannot be 0.
+The lock for the
+.Va p_sigacts
+field of the current process must be held before
+.Fn postsig
+is called, and may be released and reacquired.
+.Pp
+The
+.Fn sigexit
+function causes the process that owns
+.Fa td
+to exit with a return value of signal number
+.Fa sig .
+If required, the process will dump core.
+The lock for the process that owns
+.Fa td
+must be held before
+.Fn sigexit
+is called.
+.Pp
+The
+.Fn siginit
+function is called during system initialization to cause every signal with
+a default property of
+.Dv SA_IGNORE
+(except
+.Dv SIGCONT )
+to be ignored by
+.Fa p .
+The process lock for
+.Fa p
+is acquired and released by
+.Fn siginit .
+The only process that
+.Fn siginit
+is ever called for
+is
+.Va proc0 .
+.Pp
+The
+.Fn signotify
+function flags that there are unmasked signals pending that
+.Fn ast
+should handle.
+The lock for process
+.Fa td->td_proc
+must be held before
+.Fn signotify
+is called, and
+.Va sched_lock
+is acquired and released.
+.Pp
+The
+.Fn trapsignal
+function sends a signal that is the result of a trap to process
+.Fa td->td_proc .
+If the process is not being traced and the signal can be delivered
+immediately,
+.Fn trapsignal
+will deliver it directly; otherwise,
+.Fn trapsignal
+will call
+.Xr psignal 9
+to cause the signal to be delivered.
+The
+.Va sched_lock
+lock is acquired and released, as is the lock for
+.Fa td->td_proc .
+The lock for the
+.Va p_sigacts
+field of
+.Fa td->td_proc
+is acquired and released.
+.Sh RETURN VALUES
+The
+.Fn SIGISMEMBER ,
+.Fn SIGISEMPTY ,
+.Fn SIGNOTEMPTY ,
+.Fn SIGSETEQ ,
+.Fn SIGSETNEQ ,
+and
+.Fn SIGPENDING
+macros all return non-zero (true) if the condition they are checking
+is found to be true; otherwise, zero (false) is returned.
+.Pp
+The
+.Fn cursig
+function returns either a valid signal number or zero.
+.Pp
+.Fn issignal
+returns either a valid signal number or zero.
+.Sh SEE ALSO
+.Xr gsignal 9 ,
+.Xr pgsignal 9 ,
+.Xr psignal 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@FreeBSD.org .
diff --git a/share/man/man9/sleep.9 b/share/man/man9/sleep.9
new file mode 100644
index 0000000..a9f0873
--- /dev/null
+++ b/share/man/man9/sleep.9
@@ -0,0 +1,326 @@
+.\"
+.\" Copyright (c) 1996 Joerg Wunsch
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd April 4, 2008
+.Os
+.Dt SLEEP 9
+.Sh NAME
+.Nm msleep ,
+.Nm msleep_spin ,
+.Nm pause ,
+.Nm tsleep ,
+.Nm wakeup
+.Nd wait for events
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/proc.h
+.Ft int
+.Fn msleep "void *chan" "struct mtx *mtx" "int priority" "const char *wmesg" "int timo"
+.Ft int
+.Fn msleep_spin "void *chan" "struct mtx *mtx" "const char *wmesg" "int timo"
+.Ft void
+.Fn pause "const char *wmesg" "int timo"
+.Ft int
+.Fn tsleep "void *chan" "int priority" "const char *wmesg" "int timo"
+.Ft void
+.Fn wakeup "void *chan"
+.Ft void
+.Fn wakeup_one "void *chan"
+.Sh DESCRIPTION
+The functions
+.Fn tsleep ,
+.Fn msleep ,
+.Fn msleep_spin ,
+.Fn pause ,
+.Fn wakeup ,
+and
+.Fn wakeup_one
+handle event-based thread blocking.
+If a thread must wait for an
+external event, it is put to sleep by
+.Fn tsleep ,
+.Fn msleep ,
+.Fn msleep_spin ,
+or
+.Fn pause .
+Threads may also wait using one of the locking primitive sleep routines
+.Xr mtx_sleep 9 ,
+.Xr rw_sleep 9 ,
+or
+.Xr sx_sleep 9 .
+.Pp
+The parameter
+.Fa chan
+is an arbitrary address that uniquely identifies the event on which
+the thread is being put to sleep.
+All threads sleeping on a single
+.Fa chan
+are woken up later by
+.Fn wakeup ,
+often called from inside an interrupt routine, to indicate that the
+resource the thread was blocking on is available now.
+.Pp
+The parameter
+.Fa priority
+specifies a new priority for the thread as well as some optional flags.
+If the new priority is not 0,
+then the thread will be made
+runnable with the specified
+.Fa priority
+when it resumes.
+.Dv PZERO
+should never be used, as it is for compatibility only.
+A new priority of 0 means to use the thread's current priority when
+it is made runnable again.
+If
+.Fa priority
+includes the
+.Dv PCATCH
+flag, signals are checked before and after sleeping, otherwise signals are
+not checked.
+If
+.Dv PCATCH
+is set and a signal needs to be delivered,
+.Er ERESTART
+is returned if the current system call should be restarted if
+possible, and
+.Er EINTR
+is returned if the system call should be interrupted by the signal
+(return
+.Er EINTR ) .
+.Pp
+The parameter
+.Fa wmesg
+is a string describing the sleep condition for tools like
+.Xr ps 1 .
+Due to the limited space of those programs to display arbitrary strings,
+this message should not be longer than 6 characters.
+.Pp
+The parameter
+.Fa timo
+specifies a timeout for the sleep.
+If
+.Fa timo
+is not 0,
+then the thread will sleep for at most
+.Fa timo No / Va hz
+seconds.
+If the timeout expires,
+then the sleep function will return
+.Er EWOULDBLOCK .
+.Pp
+Several of the sleep functions including
+.Fn msleep ,
+.Fn msleep_spin ,
+and the locking primitive sleep routines specify an additional lock
+parameter.
+The lock will be released before sleeping and reacquired
+before the sleep routine returns.
+If
+.Fa priority
+includes the
+.Dv PDROP
+flag, then
+the lock will not be reacquired before returning.
+The lock is used to ensure that a condition can be checked atomically,
+and that the current thread can be suspended without missing a
+change to the condition, or an associated wakeup.
+In addition, all of the sleep routines will fully drop the
+.Va Giant
+mutex
+(even if recursed)
+while the thread is suspended and will reacquire the
+.Va Giant
+mutex before the function returns.
+Note that the
+.Va Giant
+mutex may be specified as the lock to drop.
+In that case, however, the
+.Dv PDROP
+flag is not allowed.
+.Pp
+To avoid lost wakeups,
+either a lock should be used to protect against races,
+or a timeout should be specified to place an upper bound on the delay due
+to a lost wakeup.
+As a result,
+the
+.Fn tsleep
+function should only be invoked with a timeout of 0 when the
+.Va Giant
+mutex is held.
+.Pp
+The
+.Fn msleep
+function requires that
+.Fa mtx
+reference a default, i.e. non-spin, mutex.
+Its use is deprecated in favor of
+.Xr mtx_sleep 9
+which provides identical behavior.
+.Pp
+The
+.Fn msleep_spin
+function requires that
+.Fa mtx
+reference a spin mutex.
+The
+.Fn msleep_spin
+function does not accept a
+.Fa priority
+parameter and thus does not support changing the current thread's priority,
+the
+.Dv PDROP
+flag,
+or catching signals via the
+.Dv PCATCH
+flag.
+.Pp
+The
+.Fn pause
+function is a wrapper around
+.Fn tsleep
+that suspends execution of the current thread for the indicated timeout.
+The thread can not be awakened early by signals or calls to
+.Fn wakeup
+or
+.Fn wakeup_one .
+.Pp
+The
+.Fn wakeup_one
+function makes the first thread in the queue that is sleeping on the
+parameter
+.Fa chan
+runnable.
+This reduces the load when a large number of threads are sleeping on
+the same address, but only one of them can actually do any useful work
+when made runnable.
+.Pp
+Due to the way it works, the
+.Fn wakeup_one
+function requires that only related threads sleep on a specific
+.Fa chan
+address.
+It is the programmer's responsibility to choose a unique
+.Fa chan
+value.
+The older
+.Fn wakeup
+function did not require this, though it was never good practice
+for threads to share a
+.Fa chan
+value.
+When converting from
+.Fn wakeup
+to
+.Fn wakeup_one ,
+pay particular attention to ensure that no other threads wait on the
+same
+.Fa chan .
+.Sh RETURN VALUES
+If the thread is awakened by a call to
+.Fn wakeup
+or
+.Fn wakeup_one ,
+the
+.Fn msleep ,
+.Fn msleep_spin ,
+.Fn tsleep ,
+and locking primitive sleep functions return 0.
+Otherwise, a non-zero error code is returned.
+.Sh ERRORS
+.Fn msleep ,
+.Fn msleep_spin ,
+.Fn tsleep ,
+and the locking primitive sleep functions will fail if:
+.Bl -tag -width Er
+.It Bq Er EINTR
+The
+.Dv PCATCH
+flag was specified, a signal was caught, and the system call should be
+interrupted.
+.It Bq Er ERESTART
+The
+.Dv PCATCH
+flag was specified, a signal was caught, and the system call should be
+restarted.
+.It Bq Er EWOULDBLOCK
+A non-zero timeout was specified and the timeout expired.
+.El
+.Sh SEE ALSO
+.Xr ps 1 ,
+.Xr locking 9 ,
+.Xr malloc 9 ,
+.Xr mi_switch 9 ,
+.Xr mtx_sleep 9 ,
+.Xr rw_sleep 9 ,
+.Xr sx_sleep 9
+.Sh HISTORY
+The functions
+.Fn sleep
+and
+.Fn wakeup
+were present in
+.At v1 .
+They were probably also present in the preceding
+PDP-7 version of
+.Ux .
+They were the basic process synchronization model.
+.Pp
+The
+.Fn tsleep
+function appeared in
+.Bx 4.4
+and added the parameters
+.Fa wmesg
+and
+.Fa timo .
+The
+.Fn sleep
+function was removed in
+.Fx 2.2 .
+The
+.Fn wakeup_one
+function appeared in
+.Fx 2.2 .
+The
+.Fn msleep
+function appeared in
+.Fx 5.0 ,
+and the
+.Fn msleep_spin
+function appeared in
+.Fx 6.2 .
+The
+.Fn pause
+function appeared in
+.Fx 7.0 .
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An J\(:org Wunsch Aq joerg@FreeBSD.org .
diff --git a/share/man/man9/sleepqueue.9 b/share/man/man9/sleepqueue.9
new file mode 100644
index 0000000..e2e3a4b
--- /dev/null
+++ b/share/man/man9/sleepqueue.9
@@ -0,0 +1,376 @@
+.\" Copyright (c) 2000-2004 John H. Baldwin <jhb@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd August 13, 2007
+.Dt SLEEPQUEUE 9
+.Os
+.Sh NAME
+.Nm init_sleepqueues ,
+.Nm sleepq_abort ,
+.Nm sleepq_add ,
+.Nm sleepq_alloc ,
+.Nm sleepq_broadcast ,
+.Nm sleepq_calc_signal_retval ,
+.Nm sleepq_catch_signals ,
+.Nm sleepq_free ,
+.Nm sleepq_lock ,
+.Nm sleepq_lookup ,
+.Nm sleepq_release ,
+.Nm sleepq_remove ,
+.Nm sleepq_signal ,
+.Nm sleepq_set_timeout ,
+.Nm sleepq_timedwait ,
+.Nm sleepq_timedwait_sig ,
+.Nm sleepq_wait ,
+.Nm sleepq_wait_sig
+.Nd manage the queues of sleeping threads
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/sleepqueue.h
+.Ft void
+.Fn init_sleepqueues "void"
+.Ft int
+.Fn sleepq_abort "struct thread *td"
+.Ft void
+.Fn sleepq_add "void *wchan" "struct lock_object *lock" "const char *wmesg" "int flags" "int queue"
+.Ft struct sleepqueue *
+.Fn sleepq_alloc "void"
+.Ft int
+.Fn sleepq_broadcast "void *wchan" "int flags" "int pri" "int queue"
+.Ft int
+.Fn sleepq_calc_signal_retval "int sig"
+.Ft int
+.Fn sleepq_catch_signals "void *wchan"
+.Ft void
+.Fn sleepq_free "struct sleepqueue *sq"
+.Ft struct sleepqueue *
+.Fn sleepq_lookup "void *wchan"
+.Ft void
+.Fn sleepq_lock "void *wchan"
+.Ft void
+.Fn sleepq_release "void *wchan"
+.Ft void
+.Fn sleepq_remove "struct thread *td" "void *wchan"
+.Ft int
+.Fn sleepq_signal "void *wchan" "int flags" "int pri" "int queue"
+.Ft void
+.Fn sleepq_set_timeout "void *wchan" "int timo"
+.Ft int
+.Fn sleepq_timedwait "void *wchan"
+.Ft int
+.Fn sleepq_timedwait_sig "void *wchan" "int signal_caught"
+.Ft void
+.Fn sleepq_wait "void *wchan"
+.Ft int
+.Fn sleepq_wait_sig "void *wchan"
+.Sh DESCRIPTION
+Sleep queues provide a mechanism for suspending execution of a thread until
+some condition is met.
+Each queue is associated with a specific wait channel when it is active,
+and only one queue may be associated with a wait channel at any given point
+in time.
+The implementation of each wait channel splits its sleepqueue into 2 sub-queues
+in order to enable some optimizations on threads' wakeups.
+An active queue holds a list of threads that are blocked on the associated
+wait channel.
+Threads that are not blocked on a wait channel have an associated inactive
+sleep queue.
+When a thread blocks on a wait channel it donates its inactive sleep queue
+to the wait channel.
+When a thread is resumed,
+the wait channel that it was blocked on gives it an inactive sleep queue for
+later use.
+.Pp
+The
+.Fn sleepq_alloc
+function allocates an inactive sleep queue and is used to assign a
+sleep queue to a thread during thread creation.
+The
+.Fn sleepq_free
+function frees the resources associated with an inactive sleep queue and is
+used to free a queue during thread destruction.
+.Pp
+Active sleep queues are stored in a hash table hashed on the addresses pointed
+to by wait channels.
+Each bucket in the hash table contains a sleep queue chain.
+A sleep queue chain contains a spin mutex and a list of sleep queues that hash
+to that specific chain.
+Active sleep queues are protected by their chain's spin mutex.
+The
+.Fn init_sleepqueues
+function initializes the hash table of sleep queue chains.
+.Pp
+The
+.Fn sleepq_lock
+function locks the sleep queue chain associated with wait channel
+.Fa wchan .
+.Pp
+The
+.Fn sleepq_lookup
+returns a pointer to the currently active sleep queue for that wait
+channel associated with
+.Fa wchan
+or
+.Dv NULL
+if there is no active sleep queue associated with
+argument
+.Fa wchan .
+It requires the sleep queue chain associated with
+.Fa wchan
+to have been locked by a prior call to
+.Fn sleepq_lock .
+.Pp
+The
+.Fn sleepq_release
+function unlocks the sleep queue chain associated with
+.Fn wchan
+and is primarily useful when aborting a pending sleep request before one of
+the wait functions is called.
+.Pp
+The
+.Fn sleepq_add
+function places the current thread on the sleep queue associated with the
+wait channel
+.Fa wchan .
+The sleep queue chain associated with argument
+.Fa wchan
+must be locked by a prior call to
+.Fn sleepq_lock
+when this function is called.
+If a lock is specified via the
+.Fa lock
+argument, and if the kernel was compiled with
+.Cd "options INVARIANTS" ,
+then the sleep queue code will perform extra checks to ensure that
+the lock is used by all threads sleeping on
+.Fa wchan .
+The
+.Fa wmesg
+parameter should be a short description of
+.Fa wchan .
+The
+.Fa flags
+parameter is a bitmask consisting of the type of sleep queue being slept on
+and zero or more optional flags.
+The
+.Fa queue
+parameter specifies the sub-queue, in which the contending thread will be
+inserted.
+.Pp
+There are currently three types of sleep queues:
+.Pp
+.Bl -tag -width ".Dv SLEEPQ_CONDVAR" -compact
+.It Dv SLEEPQ_CONDVAR
+A sleep queue used to implement condition variables.
+.It Dv SLEEPQ_SLEEP
+A sleep queue used to implement
+.Xr sleep 9 ,
+.Xr wakeup 9
+and
+.Xr wakeup_one 9 .
+.It Dv SLEEPQ_PAUSE
+A sleep queue used to implement
+.Xr pause 9 .
+.El
+.Pp
+There is currently only one optional flag:
+.Pp
+.Bl -tag -width ".Dv SLEEPQ_INTERRUPTIBLE" -compact
+.It Dv SLEEPQ_INTERRUPTIBLE
+The current thread is entering an interruptible sleep.
+.El
+.Pp
+A timeout on the sleep may be specified by calling
+.Fn sleepq_set_timeout
+after
+.Fn sleepq_add .
+The
+.Fa wchan
+parameter should be the same value from the preceding call to
+.Fn sleepq_add ,
+and the sleep queue chain associated with
+.Fa wchan
+must have been locked by a prior call to
+.Fn sleepq_lock .
+The
+.Fa timo
+parameter should specify the timeout value in ticks.
+.Pp
+The current thread may be marked interruptible by calling
+.Fn sleepq_catch_signals
+with
+.Fa wchan
+set to the wait channel.
+This function returns a signal number if there are any pending signals for
+the current thread and 0 if there is not a pending signal.
+The sleep queue chain associated with argument
+.Fa wchan
+should have been locked by a prior call to
+.Fn sleepq_lock .
+.Pp
+Once the thread is ready to suspend,
+one of the wait functions is called to put the current thread to sleep
+until it is awakened and to context switch to another thread.
+The
+.Fn sleepq_wait
+function is used for non-interruptible sleeps that do not have a timeout.
+The
+.Fn sleepq_timedwait
+function is used for non-interruptible sleeps that have had a timeout set via
+.Fn sleepq_set_timeout .
+The
+.Fn sleepq_wait_sig
+function is used for interruptible sleeps that do not have a timeout.
+The
+.Fn sleepq_timedwait_sig
+function is used for interruptible sleeps that do have a timeout set.
+The
+.Fa wchan
+argument to all of the wait functions is the wait channel being slept
+on.
+The sleep queue chain associated with argument
+.Fa wchan
+needs to have been locked with a prior call to
+.Fn sleepq_lock .
+The
+.Fa signal_caught
+parameter to
+.Fn sleepq_timedwait_sig
+specifies if a previous call to
+.Fn sleepq_catch_signals
+found a pending signal.
+.Pp
+When the thread is resumed,
+the wait functions return a non-zero value if the thread was awakened due to
+an interrupt other than a signal or a timeout.
+If the sleep timed out, then
+.Er EWOULDBLOCK
+is returned.
+If the sleep was interrupted by something other than a signal,
+then some other return value will be returned.
+If zero is returned after resuming from an interruptible sleep,
+then
+.Fn sleepq_calc_signal_retval
+should be called to determine if the sleep was interrupted by a signal.
+If so,
+.Fn sleepq_calc_signal_retval
+returns
+.Er ERESTART
+if the interrupting signal is restartable and
+.Er EINTR
+otherwise.
+If the sleep was not interrupted by a signal,
+.Fn sleepq_calc_signal_retval
+will return 0.
+.Pp
+A sleeping thread is normally resumed by the
+.Fn sleepq_broadcast
+and
+.Fn sleepq_signal
+functions.
+The
+.Fn sleepq_signal
+function awakens the highest priority thread sleeping on a wait channel while
+.Fn sleepq_broadcast
+awakens all of the threads sleeping on a wait channel.
+The
+.Fa wchan
+argument specifics which wait channel to awaken.
+The
+.Fa flags
+argument must match the sleep queue type contained in the
+.Fa flags
+argument passed to
+.Fn sleepq_add
+by the threads sleeping on the wait channel.
+If the
+.Fa pri
+argument does not equal \-1,
+then each thread that is awakened will have its priority raised to
+.Fa pri
+if it has a lower priority.
+The sleep queue chain associated with argument
+.Fa wchan
+must be locked by a prior call to
+.Fn sleepq_lock
+before calling any of these functions.
+The
+.Fa queue
+argument specifies the sub-queue, from which threads need to be woken up.
+.Pp
+A thread in an interruptible sleep can be interrupted by another thread via
+the
+.Fn sleepq_abort
+function.
+The
+.Fa td
+argument specifies the thread to interrupt.
+An individual thread can also be awakened from sleeping on a specific wait
+channel via the
+.Fn sleepq_remove
+function.
+The
+.Fa td
+argument specifies the thread to awaken and the
+.Fa wchan
+argument specifies the wait channel to awaken it from.
+If the thread
+.Fa td
+is not blocked on the the wait channel
+.Fa wchan
+then this function will not do anything,
+even if the thread is asleep on a different wait channel.
+This function should only be used if one of the other functions above is not
+sufficient.
+One possible use is waking up a specific thread from a widely shared sleep
+channel.
+.Pp
+The
+.Fn sleepq_abort ,
+.Fn sleepq_broadcast ,
+and
+.Fn sleepq_signal
+functions all return a boolean value.
+If the return value is true,
+then at least one thread was resumed that is currently swapped out.
+The caller is responsible for awakening the scheduler process so that the
+resumed thread will be swapped back in.
+This is done by calling the
+.Fn kick_proc0
+function after releasing the sleep queue chain lock via a call to
+.Fn sleepq_release .
+.Pp
+The sleep queue interface is currently used to implement the
+.Xr sleep 9
+and
+.Xr condvar 9
+interfaces.
+Almost all other code in the kernel should use one of those interfaces rather
+than manipulating sleep queues directly.
+.Sh SEE ALSO
+.Xr condvar 9 ,
+.Xr runqueue 9 ,
+.Xr scheduler 9 ,
+.Xr sleep 9
diff --git a/share/man/man9/socket.9 b/share/man/man9/socket.9
new file mode 100644
index 0000000..8320d84
--- /dev/null
+++ b/share/man/man9/socket.9
@@ -0,0 +1,338 @@
+.\"-
+.\" 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$
+.\"
+.Dd December 14, 2006
+.Dt SOCKET 9
+.Os
+.Sh NAME
+.Nm socket
+.Nd "kernel socket interface"
+.Sh SYNOPSIS
+.In sys/socket.h
+.In sys/socketvar.h
+.Ft int
+.Fn sobind "struct socket *so" "struct sockaddr *nam" "struct thread *td"
+.Ft void
+.Fn soclose "struct socket *so"
+.Ft int
+.Fn soconnect "struct socket *so" "struct sockaddr *nam" "struct thread *td"
+.Ft int
+.Fo socreate
+.Fa "int dom" "struct socket **aso" "int type" "int proto"
+.Fa "struct ucred *cred" "struct thread *td"
+.Fc
+.Ft int
+.Fn sogetopt "struct socket *so" "struct sockopt *sopt"
+.Ft int
+.Fo soreceive
+.Fa "struct socket *so" "struct sockaddr **psa" "struct uio *uio"
+.Fa "struct mbuf **mp0" "struct mbuf **controlp" "int *flagsp"
+.Fc
+.Ft int
+.Fn sosetopt "struct socket *so" "struct sockopt *sopt"
+.Ft int
+.Fo sosend
+.Fa "struct socket *so" "struct sockaddr *addr" "struct uio *uio"
+.Fa "struct mbuf *top" "struct mbuf *control" "int flags" "struct thread *td"
+.Fc
+.Ft int
+.Fn soshutdown "struct socket *so" "int how"
+.Sh DESCRIPTION
+The kernel
+.Nm
+programming interface permits in-kernel consumers to interact with
+local and network socket objects in a manner similar to that permitted using
+the
+.Xr socket 2
+user API.
+These interfaces are appropriate for use by distributed file systems and
+other network-aware kernel services.
+While the user API operates on file descriptors, the kernel interfaces
+operate directly on
+.Vt "struct socket"
+pointers.
+.Pp
+Except where otherwise indicated,
+.Nm
+functions may sleep, and are not appropriate for use in an
+.Xr ithread 9
+context or while holding non-sleepable kernel locks.
+.Ss Creating and Destroying Sockets
+A new socket may be created using
+.Fn socreate .
+As with
+.Xr socket 2 ,
+arguments specify the requested domain, type, and protocol via
+.Fa dom , type ,
+and
+.Fa proto .
+The socket is returned via
+.Fa aso
+on success.
+In addition, the credential used to authorize operations associated with the
+socket will be passed via
+.Fa cred
+(and will be cached for the lifetime of the socket), and the thread
+performing the operation via
+.Fa td .
+.Em Warning :
+authorization of the socket creation operation will be performed
+using the thread credential for some protocols (such as raw sockets).
+.Pp
+Sockets may be closed and freed using
+.Fn soclose ,
+which has similar semantics to
+.Xr close 2 .
+.Ss Connections and Addresses
+The
+.Fn sobind
+function is equivalent to the
+.Xr bind 2
+system call, and binds the socket
+.Fa so
+to the address
+.Fa nam .
+The operation would be authorized using the credential on thread
+.Fa td .
+.Pp
+The
+.Fn soconnect
+function is equivalent to the
+.Xr connect 2
+system call, and initiates a connection on the socket
+.Fa so
+to the address
+.Fa nam .
+The operation will be authorized using the credential on thread
+.Fa td .
+Unlike the user system call,
+.Fn soconnect
+returns immediately; the caller may
+.Xr msleep 9
+on
+.Fa so->so_timeo
+while holding the socket mutex and waiting for the
+.Dv SS_ISCONNECTING
+flag to clear or
+.Fa so->so_error
+to become non-zero.
+If
+.Fn soconnect
+fails, the caller must manually clear the
+.Dv SS_ISCONNECTING
+flag.
+.Pp
+The
+.Fn soshutdown
+function is equivalent to the
+.Xr shutdown 2
+system call, and causes part or all of a connection on a socket to be closed
+down.
+.Ss Socket Options
+The
+.Fn sogetopt
+function is equivalent to the
+.Xr getsockopt 2
+system call, and retrieves a socket option on socket
+.Fa so .
+The
+.Fn sosetopt
+function is equivalent to the
+.Xr setsockopt 2
+system call, and sets a socket option on socket
+.Fa so .
+.Pp
+The second argument in both
+.Fn sogetopt
+and
+.Fn sosetopt
+is the
+.Fa sopt
+pointer to a
+.Vt "struct sopt"
+describing the socket option operation.
+The caller-allocated structure must be zeroed, and then have its fields
+initialized to specify socket option operation arguments:
+.Bl -tag -width ".Va sopt_valsize"
+.It Va sopt_dir
+Set to
+.Dv SOPT_SET
+or
+.Dv SOPT_GET
+depending on whether this is a get or set operation.
+.It Va sopt_level
+Specify the level in the network stack the operation is targeted at; for
+example,
+.Dv SOL_SOCKET .
+.It Va sopt_name
+Specify the name of the socket option to set.
+.It Va sopt_val
+Kernel space pointer to the argument value for the socket option.
+.It Va sopt_valsize
+Size of the argument value in bytes.
+.El
+.Ss Socket I/O
+The
+.Fn soreceive
+function is equivalent to the
+.Xr recvmsg 2
+system call, and attempts to receive bytes of data from the socket
+.Fa so ,
+optionally blocking awaiting for data if none is ready to read.
+Data may be retrieved directly to kernel or user memory via the
+.Fa uio
+argument, or as an mbuf chain returned to the caller via
+.Fa mp0 ,
+avoiding a data copy.
+Only one of the
+.Fa uio
+or
+.Fa mp0
+pointers may be
+.Pf non- Dv NULL .
+The caller may optionally retrieve a socket address on a protocol with the
+.Dv PR_ADDR
+capability by providing storage via
+.Pf non- Dv NULL
+.Fa psa
+argument.
+The caller may optionally retrieve control data mbufs via a
+.Pf non- Dv NULL
+.Fa controlp
+argument.
+Optional flags may be passed to
+.Fn soreceive
+via a
+.Pf non- Dv NULL
+.Fa flagsp
+argument, and use the same flag name space as the
+.Xr recvmsg 2
+system call.
+.Pp
+The
+.Fn sosend
+function is equivalent to the
+.Xr sendmsg 2
+system call, and attempts to send bytes of data via the socket
+.Fa so ,
+optionally blocking if data cannot be immediately sent.
+Data may be sent directly from kernel or user memory via the
+.Fa uio
+argument, or as an mbuf chain via
+.Fa top ,
+avoiding a data copy.
+Only one of the
+.Fa uio
+or
+.Fa top
+pointers may be
+.Pf non- Dv NULL .
+An optional destination address may be specified via a
+.Pf non- Dv NULL
+.Fa addr
+argument, which may result in an implicit connect if supported by the
+protocol.
+The caller may optionally send control data mbufs via a
+.Pf non- Dv NULL
+.Fa control
+argument.
+Flags may be passed to
+.Fn sosend
+using the
+.Fa flags
+argument, and use the same flag name space as the
+.Xr sendmsg 2
+system call.
+.Pp
+Kernel callers running in
+.Xr ithread 9
+context, or with a mutex held, will wish to use non-blocking sockets and pass
+the
+.Dv MSG_DONTWAIT
+flag in order to prevent these functions from sleeping.
+.Sh SEE ALSO
+.Xr bind 2 ,
+.Xr close 2 ,
+.Xr connect 2 ,
+.Xr getsockopt 2 ,
+.Xr recv 2 ,
+.Xr send 2 ,
+.Xr setsockopt 2 ,
+.Xr shutdown 2 ,
+.Xr socket 2 ,
+.Xr ng_ksocket 4 ,
+.Xr ithread 9 ,
+.Xr msleep 9 ,
+.Xr ucred 9
+.Sh HISTORY
+The
+.Xr socket 2
+system call appeared in
+.Bx 4.2 .
+This manual page was introduced in
+.Fx 7.0 .
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson .
+.Sh BUGS
+The use of explicitly passed credentials, credentials hung from explicitly
+passed threads, the credential on
+.Dv curthread ,
+and the cached credential from
+socket creation time is inconsistent, and may lead to unexpected behaviour.
+It is possible that several of the
+.Fa td
+arguments should be
+.Fa cred
+arguments, or simply not be present at all.
+.Pp
+The caller may need to manually clear
+.Dv SS_ISCONNECTING
+if
+.Fn soconnect
+returns an error.
+.Pp
+The
+.Dv MSG_DONTWAIT
+flag is not implemented for
+.Fn sosend ,
+and may not always work with
+.Fn soreceive
+when zero copy sockets are enabled.
+.Pp
+This manual page does not describe how to register socket upcalls or monitor
+a socket for readability/writability without using blocking I/O.
+.Pp
+The
+.Fn soref
+and
+.Fn sorele
+functions are not described, and in most cases should not be used, due to
+confusing and potentially incorrect interactions when
+.Fn sorele
+is last called after
+.Fn soclose .
diff --git a/share/man/man9/spl.9 b/share/man/man9/spl.9
new file mode 100644
index 0000000..fe4bec2
--- /dev/null
+++ b/share/man/man9/spl.9
@@ -0,0 +1,228 @@
+.\"
+.\" Copyright (c) 1996 Joerg Wunsch
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 21, 1996
+.Os
+.Dt SPL 9
+.Sh NAME
+.Nm splbio ,
+.Nm splclock ,
+.Nm splhigh ,
+.Nm splimp ,
+.Nm splnet ,
+.Nm splsoftclock ,
+.Nm splsofttty ,
+.Nm splstatclock ,
+.Nm spltty ,
+.Nm splvm ,
+.Nm spl0 ,
+.Nm splx
+.Nd manipulate interrupt priorities
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Ft intrmask_t
+.Fn splbio "void"
+.Ft intrmask_t
+.Fn splclock "void"
+.Ft intrmask_t
+.Fn splhigh "void"
+.Ft intrmask_t
+.Fn splimp "void"
+.Ft intrmask_t
+.Fn splnet "void"
+.Ft intrmask_t
+.Fn splsoftclock "void"
+.Ft intrmask_t
+.Fn splsofttty "void"
+.Ft intrmask_t
+.Fn splstatclock "void"
+.Ft intrmask_t
+.Fn spltty "void"
+.Ft void
+.Fn spl0 "void"
+.Ft void
+.Fn splx "intrmask_t ipl"
+.Sh DESCRIPTION
+.Bf -symbolic
+This API is deprecated.
+Use mutexes to protect data structures instead.
+See
+.Xr mutex 9
+for more information.
+The API is now a complete NOP.
+This man page documents historical behavior so you can understand the
+code locking that the spl did when converting code from versions of the
+kernel prior to
+.Fx 5.0 .
+The examples in this man page are also obsolete and should not be viewed
+as documenting
+.Fx 5.0
+and newer.
+.Ef
+.Pp
+The
+.Fn spl
+function family sets the interrupt priority
+.Dq level
+of the CPU.
+This prevents interrupt handlers of the blocked priority level from
+being run.
+This is used in the
+.Dq synchronous
+part of a driver (the part that runs on behalf of the user process) to
+examine or modify data areas that might be examined or modified by
+interrupt handlers.
+.Pp
+Each driver that uses interrupts is normally assigned to an interrupt
+priority group by a keyword in its config line.
+For example:
+.Bd -literal -offset indent
+device foo0 at isa? port 0x0815 irq 12 tty
+.Ed
+.Pp
+assigns interrupt 12 to the
+.Dq tty
+priority group.
+The system automatically arranges for interrupts in
+the
+.Em xxx
+group to be called at a priority >=
+.Ns spl Ns Em xxx
+\&().
+.Pp
+The function
+.Fn splx
+sets the interrupt priority to an absolute value.
+The intent is that
+the value returned by the other functions should be saved in a local
+variable, and later passed to
+.Fn splx
+in order to restore the previous priority.
+.Pp
+The function
+.Fn spl0
+lowers the priority to a value where all interrupt handlers are
+unblocked, but ASTs (asynchronous system traps) remain blocked until
+the system is about to return to user mode.
+.Pp
+The traditional assignment of the various device drivers to the
+interrupt priority groups can be roughly classified as:
+.Bl -tag -width Fn
+.It Fn splnet
+Software part of the network interface drivers.
+.It Fn splimp
+All network interface drivers.
+.It Fn splbio
+All
+.Em buffered IO
+(i.e., disk and the like) drivers.
+.It Fn spltty
+Basically, all non-network communications devices, but effectively
+used for all drivers that are neither network nor disks.
+.El
+.Sh RETURN VALUES
+All functions except
+.Fn splx
+and
+.Fn spl0
+return the previous priority value.
+.Sh EXAMPLES
+This is a typical example demonstrating the usage:
+.Bd -literal
+struct foo_softc {
+ ...
+ int flags;
+#define FOO_ASLEEP 1
+#define FOO_READY 2
+
+} foo_softc[NFOO];
+
+int
+foowrite(...)
+{
+ struct foo_softc *sc;
+ int s, error;
+
+ ...
+ s = spltty();
+ if (!(sc->flags & FOO_READY)) {
+ /* Not ready, must sleep on resource. */
+ sc->flags |= FOO_ASLEEP;
+ error = tsleep(sc, PZERO, "foordy", 0);
+ sc->flags &= ~FOO_ASLEEP;
+ }
+ sc->flags &= ~FOO_READY;
+ splx(s);
+
+ ...
+}
+
+void
+foointr(...)
+{
+ struct foo_softc *sc;
+
+ ...
+ sc->flags |= FOO_READY;
+ if (sc->flags & FOO_ASLEEP)
+ /* Somebody was waiting for us, awake him. */
+ wakeup(sc);
+ ...
+}
+
+.Ed
+Note that the interrupt handler should
+.Em never
+reduce the priority level.
+It is automatically called as it had
+raised the interrupt priority to its own level, i.e., further interrupts
+of the same group are being blocked.
+.Sh HISTORY
+The interrupt priority levels appeared in a very early version of
+.Ux .
+They have been traditionally known by number instead of by
+names, and were inclusive up to higher priority levels (i.e., priority
+5 has been blocking everything up to level 5).
+This is no longer the case in
+.Fx .
+The traditional name
+.Ql level
+for them is still reflected in the letter
+.Ql l
+of the respective functions and variables, although they are not
+really levels anymore, but rather different (partially inclusive)
+sets of functions to be blocked during some periods of the life of
+the system.
+The historical number scheme can be considered as a
+simple linearly ordered set of interrupt priority groups.
+.Pp
+.Fx 5.0 eliminated spl entirely in favor of locking primitives which scale
+to more than one processor.
+.Sh AUTHORS
+This manual page was written by
+.An J\(:org Wunsch .
diff --git a/share/man/man9/stack.9 b/share/man/man9/stack.9
new file mode 100644
index 0000000..8d03dd7
--- /dev/null
+++ b/share/man/man9/stack.9
@@ -0,0 +1,140 @@
+.\"
+.\" 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 27, 2007
+.Dt STACK 9
+.Os
+.Sh NAME
+.Nm stack
+.Nd kernel thread stack tracing routines
+.Sh SYNOPSIS
+.In sys/param.h>
+.In sys/stack.h
+In the kernel configuration file:
+.Cd "options DDB"
+.Cd "options STACK"
+.Ft struct stack *
+.Fn stack_create "void"
+.Ft void
+.Fn stack_destroy "struct stack *st"
+.Ft int
+.Fn stack_put "struct stack *st" "vm_offset_t pc"
+.Ft void
+.Fn stack_copy "struct stack *src" "struct stack dst"
+.Ft void
+.Fn stack_zero "struct stack *st"
+.Ft void
+.Fn stack_print "struct stack *st"
+.Ft void
+.Fn stack_print_ddb "struct stack *st"
+.Ft void
+.Fn stack_sbuf_print "struct sbuf sb*" "struct stack *st"
+.Ft void
+.Fn stack_sbuf_print_ddb "struct sbuf sb*" "struct stack *st"
+.Ft void
+.Fn stack_save "struct stack *st"
+.Sh DESCRIPTION
+The
+.Nm
+KPI allows querying of kernel stack trace information and the automated
+generation of kernel stack trace strings for the purposes of debugging and
+tracing.
+To use the KPI, at least one of
+.Cd "options DDB"
+and
+.Cd "options STACK"
+must be compiled into the kernel.
+.Pp
+Each stack trace is described by a
+.Vt "struct stack" .
+Before a trace may be created or otherwise manipulated, storage for the trace
+must be allocated with
+.Fn stack_create ,
+which may sleep.
+Memory associated with a trace is freed by calling
+.Fn stack_destroy .
+.Pp
+A trace of the current kernel thread's call stack may be captured using
+.Fn stack_save .
+.Pp
+.Fn stack_print
+may be used to print a stack trace using the kernel
+.Xr printf 9 ,
+and may sleep as a result of acquiring
+.Xr sx 9
+locks in the kernel linker while looking up symbol names.
+In locking-sensitive environments, the unsynchronized
+.Fn stack_print_ddb
+variant may be invoked.
+This function bypasses kernel linker locking, making it usable in
+.Xr ddb 4 ,
+but not in a live system where linker data structures may change.
+.Pp
+.Fn stack_sbuf_print
+may be used to construct a human-readable string, including conversion (where
+possible) from a simple kernel instruction pointer to a named symbol and
+offset.
+The argument
+.Ar sb
+must be an initialized
+.Dv struct sbuf
+as described in
+.Xr sbuf 9 .
+This function may sleep if an auto-extending
+.Dv struct sbuf
+is used, or due to kernel linker locking.
+In locking-sensitive environments, such as
+.Xr ddb 4 ,
+the unsynchronized
+.Fn stack_sbuf_print_ddb
+variant may be invoked to avoid kernel linker locking; it should be used with
+a fixed-length sbuf.
+.Pp
+The utility functions
+.Nm stack_zero ,
+.Nm stack_copy ,
+and
+.Nm stack_put
+may be used to manipulate stack data structures directly.
+.Sh SEE ALSO
+.Xr ddb 4 ,
+.Xr printf 9 ,
+.Xr sbuf 9 ,
+.Xr sx 9
+.Sh AUTHORS
+.An -nosplit
+The
+.Xr stack 9
+function suite was created by
+.An Antoine Brodin .
+.Xr stack 9
+was extended by
+.An Robert Watson
+for general-purpose use outside of
+.Xr ddb 4 .
diff --git a/share/man/man9/store.9 b/share/man/man9/store.9
new file mode 100644
index 0000000..4438d84
--- /dev/null
+++ b/share/man/man9/store.9
@@ -0,0 +1,89 @@
+.\" $NetBSD: store.9,v 1.2 1996/01/09 21:59:27 perry Exp $
+.\"
+.\" Copyright (c) 1996 Jason R. Thorpe.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed by Kenneth Stailey.
+.\"
+.\" 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
+.\" by Jason R. Thorpe.
+.\" 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$
+.\"
+.Dd January 7, 1996
+.Dt STORE 9
+.Os
+.Sh NAME
+.Nm store ,
+.Nm subyte ,
+.Nm susword ,
+.Nm suswintr ,
+.Nm suword
+.Nd store data to user-space
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/time.h
+.In sys/systm.h
+.In sys/resourcevar.h
+.Ft int
+.Fn subyte "void *base" "int byte"
+.Ft int
+.Fn susword "void *base" "int word"
+.Ft int
+.Fn suswintr "void *base" "int word"
+.Ft int
+.Fn suword "void *base" "long word"
+.Sh DESCRIPTION
+The
+.Nm
+functions are designed to copy small amounts of data to user-space.
+.Pp
+The
+.Nm
+routines provide the following functionality:
+.Bl -tag -width "suswintr()"
+.It Fn subyte
+Stores a byte of data to the user-space address
+.Pa base .
+.It Fn susword
+Stores a short word of data to the user-space address
+.Pa base .
+.It Fn suswintr
+Stores a short word of data to the user-space address
+.Pa base .
+This function is safe to call during an interrupt context.
+.It Fn suword
+Stores a word of data to the user-space address
+.Pa base .
+.El
+.Sh RETURN VALUES
+The
+.Nm
+functions return 0 on success or -1 on failure.
+.Sh SEE ALSO
+.Xr copy 9 ,
+.Xr fetch 9
diff --git a/share/man/man9/style.9 b/share/man/man9/style.9
new file mode 100644
index 0000000..d70868f
--- /dev/null
+++ b/share/man/man9/style.9
@@ -0,0 +1,855 @@
+.\"-
+.\" Copyright (c) 1995-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 [your name] 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.
+.\"
+.\" From: @(#)style 1.14 (Berkeley) 4/28/95
+.\" $FreeBSD$
+.\"
+.Dd December 17, 2008
+.Dt STYLE 9
+.Os
+.Sh NAME
+.Nm style
+.Nd "kernel source file style guide"
+.Sh DESCRIPTION
+This file specifies the preferred style for kernel source files in the
+.Fx
+source tree.
+It is also a guide for the preferred userland code style.
+Many of the style rules are implicit in the examples.
+Be careful to check the examples before assuming that
+.Nm
+is silent on an issue.
+.Bd -literal
+/*
+ * Style guide for FreeBSD. Based on the CSRG's KNF (Kernel Normal Form).
+ *
+ * @(#)style 1.14 (Berkeley) 4/28/95
+ * $FreeBSD$
+ */
+
+/*
+ * VERY important single-line comments look like this.
+ */
+
+/* Most single-line comments look like this. */
+
+/*
+ * Multi-line comments look like this. Make them real sentences. Fill
+ * them so they look like real paragraphs.
+ */
+.Ed
+.Pp
+The copyright header should be a multi-line comment, with the first
+line of the comment having a dash after the star like so:
+.Bd -literal
+/*-
+ * Copyright (c) 1984-2025 John Q. Public
+ * All rights reserved.
+ *
+ * Long, boring license goes here, but trimmed for brevity
+ */
+.Ed
+.Pp
+An automatic script collects license information from the tree for
+all comments that start in the first column with
+.Dq Li "/*-" .
+If you desire to flag
+.Xr indent 1
+to not reformat a comment that starts in the first column which is not a
+license or copyright notice, change the dash to a star for those
+comments.
+Comments starting in columns other than the first are never
+considered license statements.
+.Pp
+After any copyright header, there is a blank line, and the
+.Li $\&FreeBSD$
+for non C/C++ language source files.
+Version control system ID tags should only exist once in a file
+(unlike in this one).
+Non-C/C++ source files follow the example above, while C/C++ source files
+follow the one below.
+All VCS (version control system) revision identification in files obtained
+from elsewhere should be maintained, including, where applicable, multiple IDs
+showing a file's history.
+In general, do not edit foreign IDs or their infrastructure.
+Unless otherwise wrapped (such as
+.Dq Li "#if defined(LIBC_SCCS)" ) ,
+enclose both in
+.Dq Li "#if 0 ... #endif"
+to hide any uncompilable bits
+and to keep the IDs out of object files.
+Only add
+.Dq Li "From: "
+in front of foreign VCS IDs if the file is renamed.
+.Bd -literal
+#if 0
+#ifndef lint
+static char sccsid[] = "@(#)style 1.14 (Berkeley) 4/28/95";
+#endif /* not lint */
+#endif
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+.Ed
+.Pp
+Leave another blank line before the header files.
+.Pp
+Kernel include files (i.e.\&
+.Pa sys/*.h )
+come first; normally, include
+.In sys/types.h
+OR
+.In sys/param.h ,
+but not both.
+.In sys/types.h
+includes
+.In sys/cdefs.h ,
+and it is okay to depend on that.
+.Bd -literal
+#include <sys/types.h> /* Non-local includes in angle brackets. */
+.Ed
+.Pp
+For a network program, put the network include files next.
+.Bd -literal
+#include <net/if.h>
+#include <net/if_dl.h>
+#include <net/route.h>
+#include <netinet/in.h>
+#include <protocols/rwhod.h>
+.Ed
+.Pp
+Do not use files in
+.Pa /usr/include
+for files in the kernel.
+.Pp
+Leave a blank line before the next group, the
+.Pa /usr/include
+files,
+which should be sorted alphabetically by name.
+.Bd -literal
+#include <stdio.h>
+.Ed
+.Pp
+Global pathnames are defined in
+.In paths.h .
+Pathnames local
+to the program go in
+.Qq Pa pathnames.h
+in the local directory.
+.Bd -literal
+#include <paths.h>
+.Ed
+.Pp
+Leave another blank line before the user include files.
+.Bd -literal
+#include "pathnames.h" /* Local includes in double quotes. */
+.Ed
+.Pp
+Do not
+.Ic #define
+or declare names in the implementation namespace except
+for implementing application interfaces.
+.Pp
+The names of
+.Dq unsafe
+macros (ones that have side effects), and the names of macros for
+manifest constants, are all in uppercase.
+The expansions of expression-like macros are either a single token
+or have outer parentheses.
+Put a single tab character between the
+.Ic #define
+and the macro name.
+If a macro is an inline expansion of a function, the function name is
+all in lowercase and the macro has the same name all in uppercase.
+.\" XXX the above conflicts with ANSI style where the names are the
+.\" same and you #undef the macro (if any) to get the function.
+.\" It is not followed for MALLOC(), and not very common if inline
+.\" functions are used.
+Right-justify the
+backslashes; it makes it easier to read.
+If the macro encapsulates a compound statement, enclose it in a
+.Ic do
+loop,
+so that it can safely be used in
+.Ic if
+statements.
+Any final statement-terminating semicolon should be
+supplied by the macro invocation rather than the macro, to make parsing easier
+for pretty-printers and editors.
+.Bd -literal
+#define MACRO(x, y) do { \e
+ variable = (x) + (y); \e
+ (y) += 2; \e
+} while (0)
+.Ed
+.Pp
+When code is conditionally compiled using
+.Ic #ifdef
+or
+.Ic #if ,
+a comment may be added following the matching
+.Ic #endif
+or
+.Ic #else
+to permit the reader to easily discern where conditionally compiled code
+regions end.
+This comment should be used only for (subjectively) long regions, regions
+greater than 20 lines, or where a series of nested
+.Ic #ifdef 's
+may be confusing to the reader.
+Exceptions may be made for cases where code is conditionally not compiled for
+the purposes of
+.Xr lint 1 ,
+even though the uncompiled region may be small.
+The comment should be separated from the
+.Ic #endif
+or
+.Ic #else
+by a single space.
+For short conditionally compiled regions, a closing comment should not be
+used.
+.Pp
+The comment for
+.Ic #endif
+should match the expression used in the corresponding
+.Ic #if
+or
+.Ic #ifdef .
+The comment for
+.Ic #else
+and
+.Ic #elif
+should match the inverse of the expression(s) used in the preceding
+.Ic #if
+and/or
+.Ic #elif
+statements.
+In the comments, the subexpression
+.Dq Li defined(FOO)
+is abbreviated as
+.Dq Li FOO .
+For the purposes of comments,
+.Dq Ic #ifndef Li FOO
+is treated as
+.Dq Ic #if Li !defined(FOO) .
+.Bd -literal
+#ifdef KTRACE
+#include <sys/ktrace.h>
+#endif
+
+#ifdef COMPAT_43
+/* A large region here, or other conditional code. */
+#else /* !COMPAT_43 */
+/* Or here. */
+#endif /* COMPAT_43 */
+
+#ifndef COMPAT_43
+/* Yet another large region here, or other conditional code. */
+#else /* COMPAT_43 */
+/* Or here. */
+#endif /* !COMPAT_43 */
+.Ed
+.Pp
+The project is slowly moving to use the
+.St -isoC-99
+unsigned integer identifiers of the form
+.Vt uintXX_t
+in preference to the older
+.Bx Ns -style
+integer identifiers of the form
+.Vt u_intXX_t .
+New code should use the former, and old code should be converted to
+the new form if other major work is being done in that area and
+there is no overriding reason to prefer the older
+.Bx Ns -style .
+Like white-space commits, care should be taken in making
+.Vt uintXX_t
+only commits.
+.Pp
+Enumeration values are all uppercase.
+.Bd -literal
+enum enumtype { ONE, TWO } et;
+.Ed
+.Pp
+In declarations, do not put any whitespace between asterisks and
+adjacent tokens, except for tokens that are identifiers related to
+types.
+(These identifiers are the names of basic types, type
+qualifiers, and
+.Ic typedef Ns -names
+other than the one being declared.)
+Separate these identifiers from asterisks using a single space.
+.Pp
+When declaring variables in structures, declare them sorted by use, then
+by size (largest to smallest), and then in alphabetical order.
+The first category normally does not apply, but there are exceptions.
+Each one gets its own line.
+Try to make the structure
+readable by aligning the member names using either one or two tabs
+depending upon your judgment.
+You should use one tab only if it suffices to align at least 90% of
+the member names.
+Names following extremely long types
+should be separated by a single space.
+.Pp
+Major structures should be declared at the top of the file in which they
+are used, or in separate header files if they are used in multiple
+source files.
+Use of the structures should be by separate declarations
+and should be
+.Ic extern
+if they are declared in a header file.
+.Bd -literal
+struct foo {
+ struct foo *next; /* List of active foo. */
+ struct mumble amumble; /* Comment for mumble. */
+ int bar; /* Try to align the comments. */
+ struct verylongtypename *baz; /* Won't fit in 2 tabs. */
+};
+struct foo *foohead; /* Head of global foo list. */
+.Ed
+.Pp
+Use
+.Xr queue 3
+macros rather than rolling your own lists, whenever possible.
+Thus,
+the previous example would be better written:
+.Bd -literal
+#include <sys/queue.h>
+
+struct foo {
+ LIST_ENTRY(foo) link; /* Use queue macros for foo lists. */
+ struct mumble amumble; /* Comment for mumble. */
+ int bar; /* Try to align the comments. */
+ struct verylongtypename *baz; /* Won't fit in 2 tabs. */
+};
+LIST_HEAD(, foo) foohead; /* Head of global foo list. */
+.Ed
+.Pp
+Avoid using typedefs for structure types.
+Typedefs are problematic because they do not properly hide their
+underlying type; for example you need to know if the typedef is
+the structure itself or a pointer to the structure.
+In addition they must be declared exactly once, whereas an
+incomplete structure type can be mentioned as many times as
+necessary.
+Typedefs are difficult to use in stand-alone header files:
+the header that defines the typedef must be included
+before the header that uses it, or by the header that uses
+it (which causes namespace pollution), or there must be a
+back-door mechanism for obtaining the typedef.
+.Pp
+When convention requires a
+.Ic typedef ,
+make its name match the struct tag.
+Avoid typedefs ending in
+.Dq Li _t ,
+except as specified in Standard C or by
+.Tn POSIX .
+.Bd -literal
+/* Make the structure name match the typedef. */
+typedef struct bar {
+ int level;
+} BAR;
+typedef int foo; /* This is foo. */
+typedef const long baz; /* This is baz. */
+.Ed
+.Pp
+All functions are prototyped somewhere.
+.Pp
+Function prototypes for private functions (i.e., functions not used
+elsewhere) go at the top of the first source module.
+Functions
+local to one source module should be declared
+.Ic static .
+.Pp
+Functions used from other parts of the kernel are prototyped in the
+relevant include file.
+Function prototypes should be listed in a logical order, preferably
+alphabetical unless there is a compelling reason to use a different
+ordering.
+.Pp
+Functions that are used locally in more than one module go into a
+separate header file, e.g.\&
+.Qq Pa extern.h .
+.Pp
+Do not use the
+.Dv __P
+macro.
+.Pp
+In general code can be considered
+.Dq "new code"
+when it makes up about 50% or more of the file(s) involved.
+This is enough
+to break precedents in the existing code and use the current
+.Nm
+guidelines.
+.Pp
+The kernel has a name associated with parameter types, e.g., in the kernel
+use:
+.Bd -literal
+void function(int fd);
+.Ed
+.Pp
+In header files visible to userland applications, prototypes that are
+visible must use either
+.Dq protected
+names (ones beginning with an underscore)
+or no names with the types.
+It is preferable to use protected names.
+E.g., use:
+.Bd -literal
+void function(int);
+.Ed
+.Pp
+or:
+.Bd -literal
+void function(int _fd);
+.Ed
+.Pp
+Prototypes may have an extra space after a tab to enable function names
+to line up:
+.Bd -literal
+static char *function(int _arg, const char *_arg2, struct foo *_arg3,
+ struct bar *_arg4);
+static void usage(void);
+
+/*
+ * All major routines should have a comment briefly describing what
+ * they do. The comment before the "main" routine should describe
+ * what the program does.
+ */
+int
+main(int argc, char *argv[])
+{
+ char *ep;
+ long num;
+ int ch;
+.Ed
+.Pp
+For consistency,
+.Xr getopt 3
+should be used to parse options.
+Options
+should be sorted in the
+.Xr getopt 3
+call and the
+.Ic switch
+statement, unless
+parts of the
+.Ic switch
+cascade.
+Elements in a
+.Ic switch
+statement that cascade should have a
+.Li FALLTHROUGH
+comment.
+Numerical arguments should be checked for accuracy.
+Code that cannot be reached should have a
+.Li NOTREACHED
+comment.
+.Bd -literal
+ while ((ch = getopt(argc, argv, "abNn:")) != -1)
+ switch (ch) { /* Indent the switch. */
+ case 'a': /* Don't indent the case. */
+ aflag = 1; /* Indent case body one tab. */
+ /* FALLTHROUGH */
+ case 'b':
+ bflag = 1;
+ break;
+ case 'N':
+ Nflag = 1;
+ break;
+ case 'n':
+ num = strtol(optarg, &ep, 10);
+ if (num <= 0 || *ep != '\e0') {
+ warnx("illegal number, -n argument -- %s",
+ optarg);
+ usage();
+ }
+ break;
+ case '?':
+ default:
+ usage();
+ /* NOTREACHED */
+ }
+ argc -= optind;
+ argv += optind;
+.Ed
+.Pp
+Space after keywords
+.Pq Ic if , while , for , return , switch .
+No braces
+.Ql ( \&{
+and
+.Ql \&} )
+are
+used for control statements with zero or only a single statement unless that
+statement is more than a single line in which case they are permitted.
+Forever loops are done with
+.Ic for Ns 's ,
+not
+.Ic while Ns 's .
+.Bd -literal
+ for (p = buf; *p != '\e0'; ++p)
+ ; /* nothing */
+ for (;;)
+ stmt;
+ for (;;) {
+ z = a + really + long + statement + that + needs +
+ two + lines + gets + indented + four + spaces +
+ on + the + second + and + subsequent + lines;
+ }
+ for (;;) {
+ if (cond)
+ stmt;
+ }
+ if (val != NULL)
+ val = realloc(val, newsize);
+.Ed
+.Pp
+Parts of a
+.Ic for
+loop may be left empty.
+Do not put declarations
+inside blocks unless the routine is unusually complicated.
+.Bd -literal
+ for (; cnt < 15; cnt++) {
+ stmt1;
+ stmt2;
+ }
+.Ed
+.Pp
+Indentation is an 8 character tab.
+Second level indents are four spaces.
+If you have to wrap a long statement, put the operator at the end of the
+line.
+.Bd -literal
+ while (cnt < 20 && this_variable_name_is_too_long &&
+ ep != NULL)
+ z = a + really + long + statement + that + needs +
+ two + lines + gets + indented + four + spaces +
+ on + the + second + and + subsequent + lines;
+.Ed
+.Pp
+Do not add whitespace at the end of a line, and only use tabs
+followed by spaces
+to form the indentation.
+Do not use more spaces than a tab will produce
+and do not use spaces in front of tabs.
+.Pp
+Closing and opening braces go on the same line as the
+.Ic else .
+Braces that are not necessary may be left out.
+.Bd -literal
+ if (test)
+ stmt;
+ else if (bar) {
+ stmt;
+ stmt;
+ } else
+ stmt;
+.Ed
+.Pp
+No spaces after function names.
+Commas have a space after them.
+No spaces
+after
+.Ql \&(
+or
+.Ql \&[
+or preceding
+.Ql \&]
+or
+.Ql \&)
+characters.
+.Bd -literal
+ error = function(a1, a2);
+ if (error != 0)
+ exit(error);
+.Ed
+.Pp
+Unary operators do not require spaces, binary operators do.
+Do not use parentheses unless they are required for precedence or unless the
+statement is confusing without them.
+Remember that other people may
+confuse easier than you.
+Do YOU understand the following?
+.Bd -literal
+ a = b->c[0] + ~d == (e || f) || g && h ? i : j >> 1;
+ k = !(l & FLAGS);
+.Ed
+.Pp
+Exits should be 0 on success, or 1 on failure.
+.Bd -literal
+ exit(0); /*
+ * Avoid obvious comments such as
+ * "Exit 0 on success."
+ */
+}
+.Ed
+.Pp
+The function type should be on a line by itself
+preceding the function.
+The opening brace of the function body should be
+on a line by itself.
+.Bd -literal
+static char *
+function(int a1, int a2, float fl, int a4)
+{
+.Ed
+.Pp
+When declaring variables in functions declare them sorted by size,
+then in alphabetical order; multiple ones per line are okay.
+If a line overflows reuse the type keyword.
+.Pp
+Be careful to not obfuscate the code by initializing variables in
+the declarations.
+Use this feature only thoughtfully.
+DO NOT use function calls in initializers.
+.Bd -literal
+ struct foo one, *two;
+ double three;
+ int *four, five;
+ char *six, seven, eight, nine, ten, eleven, twelve;
+
+ four = myfunction();
+.Ed
+.Pp
+Do not declare functions inside other functions; ANSI C says that
+such declarations have file scope regardless of the nesting of the
+declaration.
+Hiding file declarations in what appears to be a local
+scope is undesirable and will elicit complaints from a good compiler.
+.Pp
+Casts and
+.Ic sizeof Ns 's
+are not followed by a space.
+Note that
+.Xr indent 1
+does not understand this rule.
+.Ic sizeof Ns 's
+are written with parenthesis always.
+The redundant parenthesis rules do not apply to
+.Fn sizeof var
+instances.
+.Pp
+.Dv NULL
+is the preferred null pointer constant.
+Use
+.Dv NULL
+instead of
+.Vt ( "type *" ) Ns 0
+or
+.Vt ( "type *" ) Ns Dv NULL
+in contexts where the compiler knows the
+type, e.g., in assignments.
+Use
+.Vt ( "type *" ) Ns Dv NULL
+in other contexts,
+in particular for all function args.
+(Casting is essential for
+variadic args and is necessary for other args if the function prototype
+might not be in scope.)
+Test pointers against
+.Dv NULL ,
+e.g., use:
+.Pp
+.Bd -literal
+(p = f()) == NULL
+.Ed
+.Pp
+not:
+.Bd -literal
+!(p = f())
+.Ed
+.Pp
+Do not use
+.Ic \&!
+for tests unless it is a boolean, e.g.\& use:
+.Bd -literal
+if (*p == '\e0')
+.Ed
+.Pp
+not:
+.Bd -literal
+if (!*p)
+.Ed
+.Pp
+Routines returning
+.Vt "void *"
+should not have their return values cast
+to any pointer type.
+.Pp
+Values in
+.Ic return
+statements should be enclosed in parentheses.
+.Pp
+Use
+.Xr err 3
+or
+.Xr warn 3 ,
+do not roll your own.
+.Bd -literal
+ if ((four = malloc(sizeof(struct foo))) == NULL)
+ err(1, (char *)NULL);
+ if ((six = (int *)overflow()) == NULL)
+ errx(1, "number overflowed");
+ return (eight);
+}
+.Ed
+.Pp
+Old-style function declarations look like this:
+.Bd -literal
+static char *
+function(a1, a2, fl, a4)
+ int a1, a2; /* Declare ints, too, don't default them. */
+ float fl; /* Beware double vs. float prototype differences. */
+ int a4; /* List in order declared. */
+{
+.Ed
+.Pp
+Use ANSI function declarations unless you explicitly need K&R compatibility.
+Long parameter lists are wrapped with a normal four space indent.
+.Pp
+Variable numbers of arguments should look like this:
+.Bd -literal
+#include <stdarg.h>
+
+void
+vaf(const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ STUFF;
+ va_end(ap);
+ /* No return needed for void functions. */
+}
+
+static void
+usage()
+{
+ /* Insert an empty line if the function has no local variables. */
+.Ed
+.Pp
+Use
+.Xr printf 3 ,
+not
+.Xr fputs 3 ,
+.Xr puts 3 ,
+.Xr putchar 3 ,
+whatever; it is faster and usually cleaner, not
+to mention avoiding stupid bugs.
+.Pp
+Usage statements should look like the manual pages
+.Sx SYNOPSIS .
+The usage statement should be structured in the following order:
+.Bl -enum
+.It
+Options without operands come first,
+in alphabetical order,
+inside a single set of brackets
+.Ql ( \&[
+and
+.Ql \&] ) .
+.It
+Options with operands come next,
+also in alphabetical order,
+with each option and its argument inside its own pair of brackets.
+.It
+Required arguments
+(if any)
+are next,
+listed in the order they should be specified on the command line.
+.It
+Finally,
+any optional arguments should be listed,
+listed in the order they should be specified,
+and all inside brackets.
+.El
+.Pp
+A bar
+.Pq Ql \&|
+separates
+.Dq either-or
+options/arguments,
+and multiple options/arguments which are specified together are
+placed in a single set of brackets.
+.Bd -literal -offset 4n
+"usage: f [-aDde] [-b b_arg] [-m m_arg] req1 req2 [opt1 [opt2]]\en"
+"usage: f [-a | -b] [-c [-dEe] [-n number]]\en"
+.Ed
+.Bd -literal
+ (void)fprintf(stderr, "usage: f [-ab]\en");
+ exit(1);
+}
+.Ed
+.Pp
+Note that the manual page options description should list the options in
+pure alphabetical order.
+That is, without regard to whether an option takes arguments or not.
+The alphabetical ordering should take into account the case ordering
+shown above.
+.Pp
+New core kernel code should be reasonably compliant with the
+.Nm
+guides.
+The guidelines for third-party maintained modules and device drivers are more
+relaxed but at a minimum should be internally consistent with their style.
+.Pp
+Stylistic changes (including whitespace changes) are hard on the source
+repository and are to be avoided without good reason.
+Code that is approximately
+.Fx
+KNF
+.Nm
+compliant in the repository must not diverge from compliance.
+.Pp
+Whenever possible, code should be run through a code checker
+(e.g.,
+.Xr lint 1
+or
+.Nm gcc Fl Wall )
+and produce minimal warnings.
+.Sh SEE ALSO
+.Xr indent 1 ,
+.Xr lint 1 ,
+.Xr err 3 ,
+.Xr warn 3 ,
+.Xr style.Makefile 5
+.Sh HISTORY
+This manual page is largely based on the
+.Pa src/admin/style/style
+file from the
+.Bx 4.4 Lite2
+release, with occasional updates to reflect the current practice and
+desire of the
+.Fx
+project.
+.Pa src/admin/style/style
+is a codification by the CSRG of the programming style of Ken Thompson and
+Dennis Ritchie in
+.At v6 .
diff --git a/share/man/man9/swi.9 b/share/man/man9/swi.9
new file mode 100644
index 0000000..ea0b32b
--- /dev/null
+++ b/share/man/man9/swi.9
@@ -0,0 +1,228 @@
+.\" Copyright (c) 2000-2001 John H. Baldwin <jhb@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$
+.\"
+.Dd October 30, 2000
+.Dt SWI 9
+.Os
+.Sh NAME
+.Nm swi_add ,
+.Nm swi_sched
+.Nd register and schedule software interrupt handlers
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/bus.h
+.In sys/interrupt.h
+.Vt "extern struct ithd *tty_ithd" ;
+.Vt "extern struct ithd *clk_ithd" ;
+.Vt "extern void *net_ih" ;
+.Vt "extern void *softclock_ih" ;
+.Vt "extern void *vm_ih" ;
+.Ft int
+.Fo swi_add
+.Fa "struct ithd **ithdp"
+.Fa "const char *name"
+.Fa "driver_intr_t handler"
+.Fa "void *arg"
+.Fa "int pri"
+.Fa "enum intr_type flags"
+.Fa "void **cookiep"
+.Fc
+.Ft void
+.Fn swi_sched "void *cookie" "int flags"
+.Sh DESCRIPTION
+These functions are used to register and schedule software interrupt handlers.
+Software interrupt handlers are attached to a software interrupt thread, just
+as hardware interrupt handlers are attached to a hardware interrupt thread.
+Multiple handlers can be attached to the same thread.
+Software interrupt handlers can be used to queue up less critical processing
+inside of hardware interrupt handlers so that the work can be done at a later
+time.
+Software interrupt threads are different from other kernel threads in that they
+are treated as an interrupt thread.
+This means that time spent executing these threads is counted as interrupt
+time, and that they can be run via a lightweight context switch.
+.Pp
+The
+.Fn swi_add
+function is used to register a new software interrupt handler.
+The
+.Fa ithdp
+argument is an optional pointer to a
+.Vt struct ithd
+pointer.
+If this argument points to an existing software interrupt thread, then this
+handler will be attached to that thread.
+Otherwise a new thread will be created, and if
+.Fa ithdp
+is not
+.Dv NULL ,
+then the pointer at that address to will be modified to point to the
+newly created thread.
+The
+.Fa name
+argument is used to associate a name with a specific handler.
+This name is appended to the name of the software interrupt thread that this
+handler is attached to.
+The
+.Fa handler
+argument is the function that will be executed when the handler is scheduled
+to run.
+The
+.Fa arg
+parameter will be passed in as the only parameter to
+.Fa handler
+when the function is executed.
+The
+.Fa pri
+value specifies the priority of this interrupt handler relative to other
+software interrupt handlers.
+If an interrupt thread is created, then this value is used as the vector,
+and the
+.Fa flags
+argument is used to specify the attributes of a handler such as
+.Dv INTR_MPSAFE .
+The
+.Fa cookiep
+argument points to a
+.Vt void *
+cookie.
+This cookie will be set to a value that uniquely identifies this handler,
+and is used to schedule the handler for execution later on.
+.Pp
+The
+.Fn swi_sched
+function is used to schedule an interrupt handler and its associated thread to
+run.
+The
+.Fa cookie
+argument specifies which software interrupt handler should be scheduled to run.
+The
+.Fa flags
+argument specifies how and when the handler should be run and is a mask of one
+or more of the following flags:
+.Bl -tag -width SWI_DELAY
+.It Dv SWI_DELAY
+Specifies that the kernel should mark the specified handler as needing to run,
+but the kernel should not schedule the software interrupt thread to run.
+Instead,
+.Fa handler
+will be executed the next time that the software interrupt thread runs after
+being scheduled by another event.
+Attaching a handler to the clock software interrupt thread and using this flag
+when scheduling a software interrupt handler can be used to implement the
+functionality performed by
+.Fn setdelayed
+in earlier versions of
+.Fx .
+.El
+.Pp
+The
+.Va tty_ithd
+and
+.Va clk_ithd
+variables contain pointers to the software interrupt threads for the tty and
+clock software interrupts, respectively.
+.Va tty_ithd
+is used to hang tty software interrupt handlers off of the same thread.
+.Va clk_ithd
+is used to hang delayed handlers off of the clock software interrupt thread so
+that the functionality of
+.Fn setdelayed
+can be obtained in conjunction with
+.Dv SWI_DELAY .
+The
+.Va net_ih ,
+.Va softclock_ih ,
+and
+.Va vm_ih
+handler cookies are used to schedule software interrupt threads to run for the
+networking stack, clock interrupt, and VM subsystem respectively.
+.Sh RETURN VALUES
+The
+.Fn swi_add
+function returns zero on success and non-zero on failure.
+.Sh ERRORS
+The
+.Fn swi_add
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EAGAIN
+The system-imposed limit on the total
+number of processes under execution would be exceeded.
+The limit is given by the
+.Xr sysctl 3
+MIB variable
+.Dv KERN_MAXPROC .
+.It Bq Er EINVAL
+The
+.Fa flags
+argument specifies either
+.Dv INTR_ENTROPY
+or
+.Dv INTR_FAST .
+.It Bq Er EINVAL
+The
+.Fa ithdp
+argument points to a hardware interrupt thread.
+.It Bq Er EINVAL
+Either of the
+.Fa name
+or
+.Fa handler
+arguments are
+.Dv NULL .
+.It Bq Er EINVAL
+The
+.Dv INTR_EXCL
+flag is specified and the interrupt thread pointed to by
+.Fa ithdp
+already has at least one handler, or the interrupt thread already has an
+exclusive handler.
+.El
+.Sh SEE ALSO
+.Xr ithread 9 ,
+.Xr taskqueue 9
+.Sh HISTORY
+The
+.Fn swi_add
+and
+.Fn swi_sched
+functions first appeared in
+.Fx 5.0 .
+They replaced the
+.Fn register_swi
+function which appeared in
+.Fx 3.0
+and the
+.Fn setsoft* ,
+and
+.Fn schedsoft*
+functions which date back to at least
+.Bx 4.4 .
+.Sh BUGS
+Most of the global variables described in this manual page should not be
+global, or at the very least should not be declared in
+.In sys/interrupt.h .
diff --git a/share/man/man9/sx.9 b/share/man/man9/sx.9
new file mode 100644
index 0000000..41a7faa
--- /dev/null
+++ b/share/man/man9/sx.9
@@ -0,0 +1,328 @@
+.\"
+.\" Copyright (C) 2001 Jason Evans <jasone@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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 25, 2007
+.Dt SX 9
+.Os
+.Sh NAME
+.Nm sx ,
+.Nm sx_init ,
+.Nm sx_init_flags ,
+.Nm sx_destroy ,
+.Nm sx_slock ,
+.Nm sx_xlock ,
+.Nm sx_slock_sig ,
+.Nm sx_xlock_sig ,
+.Nm sx_try_slock ,
+.Nm sx_try_xlock ,
+.Nm sx_sunlock ,
+.Nm sx_xunlock ,
+.Nm sx_unlock ,
+.Nm sx_try_upgrade ,
+.Nm sx_downgrade ,
+.Nm sx_sleep ,
+.Nm sx_xholder ,
+.Nm sx_xlocked ,
+.Nm sx_assert ,
+.Nm SX_SYSINIT
+.Nd kernel shared/exclusive lock
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/lock.h
+.In sys/sx.h
+.Ft void
+.Fn sx_init "struct sx *sx" "const char *description"
+.Ft void
+.Fn sx_init_flags "struct sx *sx" "const char *description" "int opts"
+.Ft void
+.Fn sx_destroy "struct sx *sx"
+.Ft void
+.Fn sx_slock "struct sx *sx"
+.Ft void
+.Fn sx_xlock "struct sx *sx"
+.Ft int
+.Fn sx_slock_sig "struct sx *sx"
+.Ft int
+.Fn sx_xlock_sig "struct sx *sx"
+.Ft int
+.Fn sx_try_slock "struct sx *sx"
+.Ft int
+.Fn sx_try_xlock "struct sx *sx"
+.Ft void
+.Fn sx_sunlock "struct sx *sx"
+.Ft void
+.Fn sx_xunlock "struct sx *sx"
+.Ft void
+.Fn sx_unlock "struct sx *sx"
+.Ft int
+.Fn sx_try_upgrade "struct sx *sx"
+.Ft void
+.Fn sx_downgrade "struct sx *sx"
+.Ft int
+.Fn sx_sleep "void *chan" "struct sx *sx" "int priority" "const char *wmesg" "int timo"
+.Ft "struct thread *"
+.Fn sx_xholder "struct sx *sx"
+.Ft int
+.Fn sx_xlocked "struct sx *sx"
+.Pp
+.Cd "options INVARIANTS"
+.Cd "options INVARIANT_SUPPORT"
+.Ft void
+.Fn sx_assert "struct sx *sx" "int what"
+.In sys/kernel.h
+.Fn SX_SYSINIT "name" "struct sx *sx" "const char *description"
+.Sh DESCRIPTION
+Shared/exclusive locks are used to protect data that are read far more often
+than they are written.
+Shared/exclusive locks do not implement priority propagation like mutexes and
+reader/writer locks to prevent priority inversions, so
+shared/exclusive locks should be used prudently.
+.Pp
+Shared/exclusive locks are created with either
+.Fn sx_init
+or
+.Fn sx_init_flags
+where
+.Fa sx
+is a pointer to space for a
+.Vt struct sx ,
+and
+.Fa description
+is a pointer to a null-terminated character string that describes the
+shared/exclusive lock.
+The
+.Fa opts
+argument to
+.Fn sx_init_flags
+specifies a set of optional flags to alter the behavior of
+.Fa sx .
+It contains one or more of the following flags:
+.Bl -tag -width SX_ADAPTIVESPIN
+.It Dv SX_ADAPTIVESPIN
+If the kernel is compiled with
+.Cd "options ADAPTIVE_SX" ,
+then lock operations for
+.Fa sx
+will spin instead of sleeping while an exclusive lock holder is executing on
+another CPU.
+.It Dv SX_DUPOK
+Witness should not log messages about duplicate locks being acquired.
+.It Dv SX_NOWITNESS
+Instruct
+.Xr witness 4
+to ignore this lock.
+.It Dv SX_NOPROFILE
+Do not profile this lock.
+.It Dv SX_RECURSE
+Allow threads to recursively acquire exclusive locks for
+.Fa sx .
+.It Dv SX_QUIET
+Do not log any operations for this lock via
+.Xr ktr 4 .
+.El
+.Pp
+Shared/exclusive locks are destroyed with
+.Fn sx_destroy .
+The lock
+.Fa sx
+must not be locked by any thread when it is destroyed.
+.Pp
+Threads acquire and release a shared lock by calling
+.Fn sx_slock ,
+.Fn sx_slock_sig
+or
+.Fn sx_try_slock
+and
+.Fn sx_sunlock
+or
+.Fn sx_unlock .
+Threads acquire and release an exclusive lock by calling
+.Fn sx_xlock ,
+.Fn sx_xlock_sig
+or
+.Fn sx_try_xlock
+and
+.Fn sx_xunlock
+or
+.Fn sx_unlock .
+A thread can attempt to upgrade a currently held shared lock to an exclusive
+lock by calling
+.Fn sx_try_upgrade .
+A thread that has an exclusive lock can downgrade it to a shared lock by
+calling
+.Fn sx_downgrade .
+.Pp
+.Fn sx_try_slock
+and
+.Fn sx_try_xlock
+will return 0 if the shared/exclusive lock cannot be acquired immediately;
+otherwise the shared/exclusive lock will be acquired and a non-zero value will
+be returned.
+.Pp
+.Fn sx_try_upgrade
+will return 0 if the shared lock cannot be upgraded to an exclusive lock
+immediately; otherwise the exclusive lock will be acquired and a non-zero value
+will be returned.
+.Pp
+.Fn sx_slock_sig
+and
+.Fn sx_xlock_sig
+do the same as their normal versions but performing an interruptible sleep.
+They return a non-zero value if the sleep has been interrupted by a signal
+or an interrupt, otherwise 0.
+.Pp
+A thread can atomically release a shared/exclusive lock while waiting for an
+event by calling
+.Fn sx_sleep .
+For more details on the parameters to this function,
+see
+.Xr sleep 9 .
+.Pp
+When compiled with
+.Cd "options INVARIANTS"
+and
+.Cd "options INVARIANT_SUPPORT" ,
+the
+.Fn sx_assert
+function tests
+.Fa sx
+for the assertions specified in
+.Fa what ,
+and panics if they are not met.
+One of the following assertions must be specified:
+.Bl -tag -width ".Dv SA_UNLOCKED"
+.It Dv SA_LOCKED
+Assert that the current thread has either a shared or an exclusive lock on the
+.Vt sx
+lock pointed to by the first argument.
+.It Dv SA_SLOCKED
+Assert that the current thread has a shared lock on the
+.Vt sx
+lock pointed to by
+the first argument.
+.It Dv SA_XLOCKED
+Assert that the current thread has an exclusive lock on the
+.Vt sx
+lock pointed to
+by the first argument.
+.It Dv SA_UNLOCKED
+Assert that the current thread has no lock on the
+.Vt sx
+lock pointed to
+by the first argument.
+.El
+.Pp
+In addition, one of the following optional assertions may be included with
+either an
+.Dv SA_LOCKED ,
+.Dv SA_SLOCKED ,
+or
+.Dv SA_XLOCKED
+assertion:
+.Bl -tag -width ".Dv SA_NOTRECURSED"
+.It Dv SA_RECURSED
+Assert that the current thread has a recursed lock on
+.Fa sx .
+.It Dv SA_NOTRECURSED
+Assert that the current thread does not have a recursed lock on
+.Fa sx .
+.El
+.Pp
+.Fn sx_xholder
+will return a pointer to the thread which currently holds an exclusive lock on
+.Fa sx .
+If no thread holds an exclusive lock on
+.Fa sx ,
+then
+.Dv NULL
+is returned instead.
+.Pp
+.Fn sx_xlocked
+will return non-zero if the current thread holds the exclusive lock;
+otherwise, it will return zero.
+.Pp
+For ease of programming,
+.Fn sx_unlock
+is provided as a macro frontend to the respective functions,
+.Fn sx_sunlock
+and
+.Fn sx_xunlock .
+Algorithms that are aware of what state the lock is in should use either
+of the two specific functions for a minor performance benefit.
+.Pp
+The
+.Fn SX_SYSINIT
+macro is used to generate a call to the
+.Fn sx_sysinit
+routine at system startup in order to initialize a given
+.Fa sx
+lock.
+The parameters are the same as
+.Fn sx_init
+but with an additional argument,
+.Fa name ,
+that is used in generating unique variable names for the related
+structures associated with the lock and the sysinit routine.
+.Pp
+A thread may not hold both a shared lock and an exclusive lock on the same
+lock simultaneously;
+attempting to do so will result in deadlock.
+.Sh CONTEXT
+A thread may hold a shared or exclusive lock on an
+.Nm
+lock while sleeping.
+As a result, an
+.Nm
+lock may not be acquired while holding a mutex.
+Otherwise, if one thread slept while holding an
+.Nm
+lock while another thread blocked on the same
+.Nm
+lock after acquiring a mutex, then the second thread would effectively
+end up sleeping while holding a mutex, which is not allowed.
+.Sh SEE ALSO
+.Xr locking 9 ,
+.Xr lock 9 ,
+.Xr mutex 9 ,
+.Xr panic 9 ,
+.Xr rwlock 9 ,
+.Xr sema 9
+.Sh BUGS
+Currently there is no way to assert that a lock is not held.
+This is not possible in the
+.No non- Ns Dv WITNESS
+case for asserting that this thread
+does not hold a shared lock.
+In the
+.No non- Ns Dv WITNESS
+case, the
+.Dv SA_LOCKED
+and
+.Dv SA_SLOCKED
+assertions merely check that some thread holds a shared lock.
+They do not ensure that the current thread holds a shared lock.
diff --git a/share/man/man9/sysctl.9 b/share/man/man9/sysctl.9
new file mode 100644
index 0000000..547c8cc
--- /dev/null
+++ b/share/man/man9/sysctl.9
@@ -0,0 +1,307 @@
+.\"
+.\" 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$
+.\"
+.Dd November 23, 2006
+.Dt SYSCTL 9
+.Os
+.Sh NAME
+.Nm SYSCTL_DECL ,
+.Nm SYSCTL_INT ,
+.Nm SYSCTL_LONG ,
+.Nm SYSCTL_NODE ,
+.Nm SYSCTL_OPAQUE ,
+.Nm SYSCTL_PROC ,
+.Nm SYSCTL_STRING ,
+.Nm SYSCTL_STRUCT ,
+.Nm SYSCTL_UINT ,
+.Nm SYSCTL_ULONG ,
+.Nm SYSCTL_XINT ,
+.Nm SYSCTL_XLONG ,
+.Nm SYSCTL_QUAD
+.Nd Static sysctl declaration functions
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/sysctl.h
+.Fn SYSCTL_DECL name
+.Fn SYSCTL_INT parent nbr name access ptr val descr
+.Fn SYSCTL_LONG parent nbr name access ptr val descr
+.Fn SYSCTL_NODE parent nbr name access handler descr
+.Fn SYSCTL_OPAQUE parent nbr name access ptr len fmt descr
+.Fn SYSCTL_PROC parent nbr name access ptr arg handler fmt descr
+.Fn SYSCTL_STRING parent nbr name access arg len descr
+.Fn SYSCTL_STRUCT parent nbr name access ptr type descr
+.Fn SYSCTL_UINT parent nbr name access ptr val descr
+.Fn SYSCTL_ULONG parent nbr name access ptr val descr
+.Fn SYSCTL_XINT parent nbr name access ptr val descr
+.Fn SYSCTL_XLONG parent nbr name access ptr val descr
+.Fn SYSCTL_QUAD parent nbr name access ptr val descr
+.Sh DESCRIPTION
+The
+.Nm SYSCTL
+kernel interfaces allow code to statically declare
+.Xr sysctl 8
+MIB entries, which will be initialized when the kernel module containing the
+declaration is initialized.
+When the module is unloaded, the sysctl will be automatically destroyed.
+.Pp
+Sysctl nodes are created in a hierarchical tree, with all static nodes being
+represented by named C data structures; in order to create a new node under
+an existing node in the tree, the structure representing the desired parent
+node must be declared in the current context using
+.Fn SYSCTL_DECL .
+.Pp
+New nodes are declared using one of
+.Fn SYSCTL_INT ,
+.Fn SYSCTL_LONG ,
+.Fn SYSCTL_NODE ,
+.Fn SYSCTL_OPAQUE ,
+.Fn SYSCTL_PROC ,
+.Fn SYSCTL_STRING ,
+.Fn SYSCTL_STRUCT ,
+.Fn SYSCTL_UINT ,
+.Fn SYSCTL_ULONG ,
+.Fn SYSCTL_XINT ,
+.Fn SYSCTL_XLONG ,
+and
+.Fn SYSCTL_QUAD .
+Each macro accepts a parent name, as declared using
+.Fn SYSCTL_DECL ,
+an OID number, typically
+.Dv OID_AUTO ,
+a node name, a set of control and access flags, and a description.
+Depending on the macro, a pointer to a variable supporting the MIB entry, a
+size, a value, and a function pointer implementing the MIB entry may also be
+present.
+.Pp
+For most of the above macros, declaring a type as part of the access flags is
+not necessary \[em] however, when declaring a sysctl implemented by a function,
+including a type in the access mask is required:
+.Bl -tag -width ".Dv CTLTYPE_STRING"
+.It Dv CTLTYPE_NODE
+This is a node intended to be a parent for other nodes.
+.It Dv CTLTYPE_INT
+This is a signed integer.
+.It Dv CTLTYPE_STRING
+This is a nul-terminated string stored in a character array.
+.It Dv CTLTYPE_QUAD
+This is a 64-bit signed integer.
+.It Dv CTLTYPE_OPAQUE
+This is an opaque data structure.
+.It Dv CTLTYPE_STRUCT
+Alias for
+.Dv CTLTYPE_OPAQUE.
+.It Dv CTLTYPE_UINT
+This is an unsigned integer.
+.It Dv CTLTYPE_LONG
+This is a signed long.
+.It Dv CTLTYPE_ULONG
+This is an unsigned long.
+.El
+.Pp
+All sysctl types except for new node declarations require one or more flags
+to be set indicating the read and write disposition of the sysctl:
+.Bl -tag -width ".Dv CTLFLAG_ANYBODY"
+.It Dv CTLFLAG_RD
+This is a read-only sysctl.
+.It Dv CTLFLAG_WR
+This is a writable sysctl.
+.It Dv CTLFLAG_RW
+This sysctl is readable and writable.
+.It Dv CTLFLAG_ANYBODY
+Any user or process can write to this sysctl.
+.It Dv CTLFLAG_SECURE
+This sysctl can be written to only if the effective securelevel of the
+process is \[<=] 0.
+.It Dv CTLFLAG_PRISON
+This sysctl can be written to by processes in
+.Xr jail 2 .
+.It Dv CTLFLAG_SKIP
+When iterating the sysctl name space, do not list this sysctl.
+.It Dv CTLFLAG_TUN
+Also declare a system tunable with the same name to initialize this variable.
+.It Dv CTLFLAG_RDTUN
+Also declare a system tunable with the same name to initialize this variable;
+however, the run-time variable is read-only.
+.El
+.Pp
+When creating new sysctls, careful attention should be paid to the security
+implications of the monitoring or management interface being created.
+Most sysctls present in the kernel are read-only or writable only by the
+superuser.
+Sysctls exporting extensive information on system data structures and
+operation, especially those implemented using procedures, will wish to
+implement access control to limit the undesired exposure of information about
+other processes, network connections, etc.
+.Pp
+The following top level sysctl name spaces are commonly used:
+.Bl -tag -width ".Va regression"
+.It Va compat
+Compatibility layer information.
+.It Va debug
+Debugging information.
+Various name spaces exist under
+.Va debug .
+.It Va hw
+Hardware and device driver information.
+.It Va kern
+Kernel behavior tuning; generally deprecated in favor of more specific
+name spaces.
+.It Va machdep
+Machine-dependent configuration parameters.
+.It Va net
+Network subsystem.
+Various protocols have name spaces under
+.Va net .
+.It Va regression
+Regression test configuration and information.
+.It Va security
+Security and security-policy configuration and information.
+.It Va sysctl
+Reserved name space for the implementation of sysctl.
+.It Va user
+Configuration settings relating to user application behavior.
+Generally, configuring applications using kernel sysctls is discouraged.
+.It Va vfs
+Virtual file system configuration and information.
+.It Va vm
+Virtual memory subsystem configuration and information.
+.El
+.Sh EXAMPLES
+Sample use of
+.Fn SYSCTL_DECL
+to declare the
+.Va security
+sysctl tree for use by new nodes:
+.Bd -literal -offset indent
+SYSCTL_DECL(_security);
+.Ed
+.Pp
+Examples of integer, opaque, string, and procedure sysctls follow:
+.Bd -literal -offset indent
+/*
+ * Example of a constant integer value. Notice that the control
+ * flags are CTLFLAG_RD, the variable pointer is NULL, and the
+ * value is declared.
+ * If sysctl(8) should print this value in hex, use 'SYSCTL_XINT'.
+ */
+SYSCTL_INT(_debug_sizeof, OID_AUTO, bio, CTLFLAG_RD, NULL,
+ sizeof(struct bio), "sizeof(struct bio)");
+
+/*
+ * Example of a variable integer value. Notice that the control
+ * flags are CTLFLAG_RW, the variable pointer is set, and the
+ * value is 0.
+ */
+static int doingcache = 1; /* 1 => enable the cache */
+SYSCTL_INT(_debug, OID_AUTO, vfscache, CTLFLAG_RW, &doingcache, 0,
+ "Enable name cache");
+
+/*
+ * Example of a variable string value. Notice that the control
+ * flags are CTLFLAG_RW, that the variable pointer and string
+ * size are set. Unlike newer sysctls, this older sysctl uses a
+ * static oid number.
+ */
+char kernelname[MAXPATHLEN] = "/kernel"; /* XXX bloat */
+SYSCTL_STRING(_kern, KERN_BOOTFILE, bootfile, CTLFLAG_RW,
+ kernelname, sizeof(kernelname), "Name of kernel file booted");
+
+/*
+ * Example of an opaque data type exported by sysctl. Notice that
+ * the variable pointer and size are provided, as well as a format
+ * string for sysctl(8).
+ */
+static l_fp pps_freq; /* scaled frequence offset (ns/s) */
+SYSCTL_OPAQUE(_kern_ntp_pll, OID_AUTO, pps_freq, CTLFLAG_RD,
+ &pps_freq, sizeof(pps_freq), "I", "");
+
+/*
+ * Example of a procedure based sysctl exporting string
+ * information. Notice that the data type is declared, the NULL
+ * variable pointer and 0 size, the function pointer, and the
+ * format string for sysctl(8).
+ */
+SYSCTL_PROC(_kern_timecounter, OID_AUTO, hardware, CTLTYPE_STRING |
+ CTLFLAG_RW, NULL, 0, sysctl_kern_timecounter_hardware, "A",
+ "");
+.Ed
+.Sh SYSCTL NAMING
+When adding, modifying, or removing sysctl names, it is important to be
+aware that these interfaces may be used by users, libraries, applications,
+or documentation (such as published books), and are implicitly published application interfaces.
+As with other application interfaces, caution must be taken not to break
+existing applications, and to think about future use of new name spaces so as
+to avoid the need to rename or remove interfaces that might be depended on in
+the future.
+.Pp
+The semantics chosen for a new sysctl should be as clear as possible,
+and the name of the sysctl must closely reflect its semantics.
+Therefore the sysctl name deserves a fair amount of consideration.
+It should be short but yet representative of the sysctl meaning.
+If the name consists of several words, they should be separated by
+underscore characters, as in
+.Va compute_summary_at_mount .
+Underscore characters may be omitted only if the name consists of not more
+than two words, each being not longer than four characters, as in
+.Va bootfile .
+For boolean sysctls, negative logic should be totally avoided.
+That is, do not use names like
+.Va no_foobar
+or
+.Va foobar_disable .
+They are confusing and lead to configuration errors.
+Use positive logic instead:
+.Va foobar ,
+.Va foobar_enable .
+.Pp
+A temporary sysctl node that should not be relied upon must be designated
+as such by a leading underscore character in its name. For example:
+.Va _dirty_hack .
+.Sh SEE ALSO
+.Xr sysctl 8 ,
+.Xr sysctl_add_oid 9 ,
+.Xr sysctl_ctx_free 9 ,
+.Xr sysctl_ctx_init 9 ,
+.Xr sysctl_remove_oid 9
+.Sh HISTORY
+The
+.Xr sysctl 8
+utility first appeared in
+.Bx 4.4 .
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm sysctl
+implementation originally found in
+.Bx
+has been extensively rewritten by
+.An Poul-Henning Kamp
+in order to add support for name lookups, name space iteration, and dynamic
+addition of MIB nodes.
+.Pp
+This man page was written by
+.An Robert N. M. Watson .
diff --git a/share/man/man9/sysctl_add_oid.9 b/share/man/man9/sysctl_add_oid.9
new file mode 100644
index 0000000..43f3112
--- /dev/null
+++ b/share/man/man9/sysctl_add_oid.9
@@ -0,0 +1,530 @@
+.\"
+.\" Copyright (c) 2000, Andrzej Bialecki <abial@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.
+.\" 3. 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 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$
+.\"
+.Dd July 15, 2000
+.Dt SYSCTL_ADD_OID 9
+.Os
+.Sh NAME
+.Nm sysctl_add_oid ,
+.Nm sysctl_move_oid ,
+.Nm sysctl_remove_oid
+.Nd runtime sysctl tree manipulation
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/sysctl.h
+.Ft struct sysctl_oid *
+.Fo sysctl_add_oid
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int kind"
+.Fa "void *arg1"
+.Fa "int arg2"
+.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
+.Fa "const char *format"
+.Fa "const char *descr"
+.Fc
+.Ft int
+.Fo sysctl_move_oid
+.Fa "struct sysctl_oid *oidp"
+.Fa "struct sysctl_oid_list *parent"
+.Fc
+.Ft int
+.Fo sysctl_remove_oid
+.Fa "struct sysctl_oid *oidp"
+.Fa "int del"
+.Fa "int recurse"
+.Fc
+.Ft struct sysctl_oid_list *
+.Fo SYSCTL_CHILDREN
+.Fa "struct sysctl_oid *oidp"
+.Fc
+.Ft struct sysctl_oid_list *
+.Fo SYSCTL_STATIC_CHILDREN
+.Fa "struct sysctl_oid_list OID_NAME"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_OID
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int kind"
+.Fa "void *arg1"
+.Fa "int arg2"
+.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
+.Fa "const char *format"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_NODE
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_STRING
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "char *arg"
+.Fa "int len"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_INT
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "int *arg"
+.Fa "int len"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_UINT
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "unsigned int *arg"
+.Fa "int len"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_LONG
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "long *arg"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_ULONG
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "unsigned long *arg"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_QUAD
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "int64_t *arg"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_OPAQUE
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "void *arg"
+.Fa "int len"
+.Fa "const char *format"
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_STRUCT
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "void *arg"
+.Fa STRUCT_NAME
+.Fa "const char *descr"
+.Fc
+.Ft struct sysctl_oid *
+.Fo SYSCTL_ADD_PROC
+.Fa "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *parent"
+.Fa "int number"
+.Fa "const char *name"
+.Fa "int access"
+.Fa "void *arg1"
+.Fa "int arg2"
+.Fa "int (*handler) (SYSCTL_HANDLER_ARGS)"
+.Fa "const char *format"
+.Fa "const char *descr"
+.Fc
+.Sh DESCRIPTION
+These functions and macros provide an interface
+for creating and deleting sysctl oids at runtime
+(e.g.\& during lifetime of a module).
+The alternative method,
+based on linker sets (see
+.In sys/linker_set.h
+and
+.\" XXX Manual pages should avoid referencing source files
+.Pa src/sys/kern/kern_sysctl.c
+for details), only allows creation and deletion
+on module load and unload respectively.
+.Pp
+Dynamic oids of type
+.Dv CTLTYPE_NODE
+are reusable
+so that several code sections can create and delete them,
+but in reality they are allocated and freed
+based on their reference count.
+As a consequence,
+it is possible for two or more code sections
+to create partially overlapping trees that they both can use.
+It is not possible to create overlapping leaves,
+nor to create different child types with the same name and parent.
+.Pp
+Newly created oids are connected to their parent nodes.
+In all these functions and macros
+(with the exception of
+.Fn sysctl_remove_oid ) ,
+one of the required parameters is
+.Fa parent ,
+which points to the head of the parent's list of children.
+.Pp
+Most top level categories are created statically.
+When connecting to existing static oids,
+this pointer can be obtained with the
+.Fn SYSCTL_STATIC_CHILDREN
+macro, where the
+.Fa OID_NAME
+argument is name of the parent oid of type
+.Dv CTLTYPE_NODE
+(i.e., the name displayed by
+.Xr sysctl 8 ,
+preceded by underscore, and with all dots replaced with underscores).
+.Pp
+When connecting to an existing dynamic oid, this pointer
+can be obtained with the
+.Fn SYSCTL_CHILDREN
+macro, where the
+.Fa oidp
+argument points to the parent oid of type
+.Dv CTLTYPE_NODE .
+.Pp
+The
+.Fn sysctl_add_oid
+function creates raw oids of any type.
+If the oid is successfully created,
+the function returns a pointer to it;
+otherwise it returns
+.Dv NULL .
+Many of the arguments for
+.Fn sysctl_add_oid
+are common to the macros.
+The arguments are as follows:
+.Bl -tag -width handler
+.It Fa ctx
+A pointer to an optional sysctl context, or
+.Dv NULL .
+See
+.Xr sysctl_ctx_init 9
+for details.
+Programmers are strongly advised to use contexts
+to organize the dynamic oids which they create,
+unless special creation and deletion sequences are required.
+If
+.Fa ctx
+is not
+.Dv NULL ,
+the newly created oid will be added to this context
+as its first entry.
+.It Fa parent
+A pointer to a
+.Li struct sysctl_oid_list ,
+which is the head of the parent's list of children.
+.It Fa number
+The oid number that will be assigned to this oid.
+In almost all cases this should be set to
+.Dv OID_AUTO ,
+which will result in the assignment of the next available oid number.
+.It Fa name
+The name of the oid.
+The newly created oid will contain a copy of the name.
+.It Fa kind
+The kind of oid,
+specified as a bit mask of the type and access values defined in the
+.In sys/sysctl.h
+header file.
+Oids created dynamically always have the
+.Dv CTLFLAG_DYN
+flag set.
+Access flags specify whether this oid is read-only or read-write,
+and whether it may be modified by all users
+or by the superuser only.
+.It Fa arg1
+A pointer to any data that the oid should reference, or
+.Dv NULL .
+.It Fa arg2
+The size of
+.Fa arg1 ,
+or 0 if
+.Fa arg1
+is
+.Dv NULL .
+.It Fa handler
+A pointer to the function
+that is responsible for handling read and write requests
+to this oid.
+There are several standard handlers
+that support operations on nodes,
+integers, strings and opaque objects.
+It is possible also to define new handlers using the
+.Fn SYSCTL_ADD_PROC
+macro.
+.It Fa format
+A pointer to a string
+which specifies the format of the oid symbolically.
+This format is used as a hint by
+.Xr sysctl 8
+to apply proper data formatting for display purposes.
+Currently used format names are:
+.Dq N
+for node,
+.Dq A
+for
+.Li "char *" ,
+.Dq I
+for
+.Li "int" ,
+.Dq IU
+for
+.Li "unsigned int" ,
+.Dq L
+for
+.Li "long" ,
+.Dq LU
+for
+.Li "unsigned long"
+and
+.Dq S,TYPE
+for
+.Li "struct TYPE"
+structures.
+.It Fa descr
+A pointer to a textual description of the oid.
+.El
+.Pp
+The
+.Fn sysctl_move_oid
+function reparents an existing oid.
+The oid is assigned a new number as if it had been created with
+.Fa number
+set to
+.Dv OID_AUTO .
+.Pp
+The
+.Fn sysctl_remove_oid
+function removes a dynamically created oid from the tree,
+optionally freeing its resources.
+It takes the following arguments:
+.Bl -tag -width recurse
+.It Fa oidp
+A pointer to the dynamic oid to be removed.
+If the oid is not dynamic, or the pointer is
+.Dv NULL ,
+the function returns
+.Er EINVAL .
+.It Fa del
+If non-zero,
+.Fn sysctl_remove_oid
+will try to free the oid's resources
+when the reference count of the oid becomes zero.
+However, if
+.Fa del
+is set to 0,
+the routine will only deregister the oid from the tree,
+without freeing its resources.
+This behaviour is useful when the caller expects to rollback
+(possibly partially failed)
+deletion of many oids later.
+.It Fa recurse
+If non-zero, attempt to remove the node and all its children.
+If
+.Pa recurse
+is set to 0,
+any attempt to remove a node that contains any children
+will result in a
+.Er ENOTEMPTY
+error.
+.Em WARNING : "use recursive deletion with extreme caution" !
+Normally it should not be needed if contexts are used.
+Contexts take care of tracking inter-dependencies
+between users of the tree.
+However, in some extreme cases it might be necessary
+to remove part of the subtree no matter how it was created,
+in order to free some other resources.
+Be aware, though, that this may result in a system
+.Xr panic 9
+if other code sections continue to use removed subtrees.
+.El
+.Pp
+.\" XXX sheldonh finished up to here
+Again, in most cases the programmer should use contexts,
+as described in
+.Xr sysctl_ctx_init 9 ,
+to keep track of created oids,
+and to delete them later in orderly fashion.
+.Pp
+There is a set of macros defined
+that helps to create oids of given type.
+.Bl -tag -width SYSCTL_ADD_STRINGXX
+They are as follows:
+.It Fn SYSCTL_ADD_OID
+creates a raw oid.
+This macro is functionally equivalent to the
+.Fn sysctl_add_oid
+function.
+.It Fn SYSCTL_ADD_NODE
+creates an oid of type
+.Dv CTLTYPE_NODE ,
+to which child oids may be added.
+.It Fn SYSCTL_ADD_STRING
+creates an oid that handles a zero-terminated character string.
+.It Fn SYSCTL_ADD_INT
+creates an oid that handles an
+.Li int
+variable.
+.It Fn SYSCTL_ADD_UINT
+creates an oid that handles an
+.Li unsigned int
+variable.
+.It Fn SYSCTL_ADD_LONG
+creates an oid that handles a
+.Li long
+variable.
+.It Fn SYSCTL_ADD_ULONG
+creates an oid that handles an
+.Li unsigned long
+variable.
+.It Fn SYSCTL_ADD_QUAD
+creates an oid that handles an
+.Li int64_t
+variable.
+.It Fn SYSCTL_ADD_OPAQUE
+creates an oid that handles any chunk of opaque data
+of the size specified by the
+.Fa len
+argument,
+which is a pointer to a
+.Li "size_t *" .
+.It Fn SYSCTL_ADD_STRUCT
+creates an oid that handles a
+.Li "struct TYPE"
+structure.
+The
+.Fa format
+parameter will be set to
+.Dq S,TYPE
+to provide proper hints to the
+.Xr sysctl 8
+utility.
+.It Fn SYSCTL_ADD_PROC
+creates an oid with the specified
+.Pa handler
+function.
+The handler is responsible for handling read and write requests
+to the oid.
+This oid type is especially useful
+if the kernel data is not easily accessible,
+or needs to be processed before exporting.
+.El
+.Sh EXAMPLES
+The following is an example of
+how to create a new top-level category
+and how to hook up another subtree to an existing static node.
+This example does not use contexts,
+which results in tedious management of all intermediate oids,
+as they need to be freed later on:
+.Bd -literal
+#include <sys/sysctl.h>
+ ...
+/* Need to preserve pointers to newly created subtrees, to be able
+ * to free them later.
+ */
+struct sysctl_oid *root1, *root2, *oidp;
+int a_int;
+char *string = "dynamic sysctl";
+ ...
+
+root1 = SYSCTL_ADD_NODE( NULL, SYSCTL_STATIC_CHILDREN(/* tree top */),
+ OID_AUTO, "newtree", CTLFLAG_RW, 0, "new top level tree");
+oidp = SYSCTL_ADD_INT( NULL, SYSCTL_CHILDREN(root1),
+ OID_AUTO, "newint", CTLFLAG_RW, &a_int, 0, "new int leaf");
+ ...
+root2 = SYSCTL_ADD_NODE( NULL, SYSCTL_STATIC_CHILDREN(_debug),
+ OID_AUTO, "newtree", CTLFLAG_RW, 0, "new tree under debug");
+oidp = SYSCTL_ADD_STRING( NULL, SYSCTL_CHILDREN(root2),
+ OID_AUTO, "newstring", CTLFLAG_RD, string, 0, "new string leaf");
+.Ed
+.Pp
+This example creates the following subtrees:
+.Bd -literal -offset indent
+debug.newtree.newstring
+newtree.newint
+.Ed
+.Pp
+.Em "Care should be taken to free all oids once they are no longer needed!"
+.Sh SEE ALSO
+.Xr sysctl 8 ,
+.Xr sysctl 9 ,
+.Xr sysctl_ctx_free 9 ,
+.Xr sysctl_ctx_init 9
+.Sh HISTORY
+These functions first appeared in
+.Fx 4.2 .
+.Sh AUTHORS
+.An Andrzej Bialecki Aq abial@FreeBSD.org
+.Sh BUGS
+Sharing nodes between many code sections
+causes interdependencies that sometimes may lock the resources.
+For example,
+if module A hooks up a subtree to an oid created by module B,
+module B will be unable to delete that oid.
+These issues are handled properly by sysctl contexts.
+.Pp
+Many operations on the tree involve traversing linked lists.
+For this reason, oid creation and removal is relatively costly.
diff --git a/share/man/man9/sysctl_ctx_init.9 b/share/man/man9/sysctl_ctx_init.9
new file mode 100644
index 0000000..ba8c7f2
--- /dev/null
+++ b/share/man/man9/sysctl_ctx_init.9
@@ -0,0 +1,247 @@
+.\"
+.\" Copyright (c) 2000, Andrzej Bialecki <abial@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.
+.\" 3. 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 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$
+.\"
+.Dd July 15, 2000
+.Dt SYSCTL_CTX_INIT 9
+.Os
+.Sh NAME
+.Nm sysctl_ctx_init ,
+.Nm sysctl_ctx_free ,
+.Nm sysctl_ctx_entry_add ,
+.Nm sysctl_ctx_entry_find ,
+.Nm sysctl_ctx_entry_del
+.Nd "sysctl context for managing dynamically created sysctl oids"
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/sysctl.h
+.Ft int
+.Fo sysctl_ctx_init
+.Fa "struct sysctl_ctx_list *clist"
+.Fc
+.Ft int
+.Fo sysctl_ctx_free
+.Fa "struct sysctl_ctx_list *clist"
+.Fc
+.Ft struct sysctl_ctx_entry *
+.Fo sysctl_ctx_entry_add
+.Fa "struct sysctl_ctx_list *clist"
+.Fa "struct sysctl_oid *oidp"
+.Fc
+.Ft struct sysctl_ctx_entry *
+.Fo sysctl_ctx_entry_find
+.Fa "struct sysctl_ctx_list *clist"
+.Fa "struct sysctl_oid *oidp"
+.Fc
+.Ft int
+.Fo sysctl_ctx_entry_del
+.Fa "struct sysctl_ctx_list *clist"
+.Fa "struct sysctl_oid *oidp"
+.Fc
+.Sh DESCRIPTION
+These functions provide an interface
+for managing dynamically created oids.
+The sysctl context is responsible for keeping track of created oids,
+as well as their proper removal when needed.
+It adds a simple transactional aspect to oid removal operations;
+i.e., if a removal operation fails part way,
+it is possible to roll back the sysctl tree
+to its previous state.
+.Pp
+The
+.Fn sysctl_ctx_init
+function initializes a sysctl context.
+The
+.Fa clist
+argument must point to an already allocated variable.
+A context
+.Em must
+be initialized before use.
+Once it is initialized,
+a pointer to the context can be passed as an argument to all the
+.Fa SYSCTL_ADD_*
+macros (see
+.Xr sysctl_add_oid 9 ) ,
+and it will be updated with entries pointing to newly created oids.
+.Pp
+Internally, the context is represented as a
+.Xr queue 3
+TAILQ linked list.
+The list consists of
+.Li struct sysctl_ctx_entry
+entries:
+.Bd -literal -offset indent
+struct sysctl_ctx_entry {
+ struct sysctl_oid *entry;
+ TAILQ_ENTRY(sysctl_ctx_entry) link;
+};
+
+TAILQ_HEAD(sysctl_ctx_list, sysctl_ctx_entry);
+.Ed
+.Pp
+Each context entry points to one dynamic oid that it manages.
+Newly created oids are always inserted in the front of the list.
+.Pp
+The
+.Fn sysctl_ctx_free
+function removes the context and associated oids it manages.
+If the function completes successfully,
+all managed oids have been unregistered
+(removed from the tree)
+and freed,
+together with all their allocated memory,
+and the entries of the context have been freed as well.
+.Pp
+The removal operation is performed in two steps.
+First, for each context entry, the function
+.Xr sysctl_remove_oid 9
+is executed, with parameter
+.Fa del
+set to 0, which inhibits the freeing of resources.
+If there are no errors during this step,
+.Fn sysctl_ctx_free
+proceeds to the next step.
+If the first step fails,
+all unregistered oids associated with the context are registered again.
+.Pp
+.Em Note :
+in most cases, the programmer specifies
+.Dv OID_AUTO
+as the oid number when creating an oid.
+However, during registration of the oid in the tree,
+this number is changed to the first available number
+greater than or equal to
+.Dv CTL_AUTO_START .
+If the first step of context deletion fails,
+re-registration of the oid does not change the already assigned oid number
+(which is different from OID_AUTO).
+This ensures that re-registered entries
+maintain their original positions in the tree.
+.Pp
+The second step actually performs the deletion of the dynamic oids.
+.Xr sysctl_remove_oid 9
+iterates through the context list,
+starting from beginning (i.e., the newest entries).
+.Em Important :
+this time, the function not only deletes the oids from the tree,
+but also frees their memory (provided that oid_refcnt == 0),
+as well as the memory of all context entries.
+.Pp
+The
+.Fn sysctl_ctx_entry_add
+function allows the addition of an existing dynamic oid to a context.
+.Pp
+The
+.Fn sysctl_ctx_entry_del
+function removes an entry from the context.
+.Em Important :
+in this case, only the corresponding
+.Li struct sysctl_ctx_entry
+is freed, but the
+.Fa oidp
+pointer remains intact.
+Thereafter, the programmer is responsible for managing the resources
+allocated to this oid.
+.Pp
+The
+.Fn sysctl_ctx_entry_find
+function searches for a given
+.Fa oidp
+within a context list,
+either returning a pointer to the
+.Fa struct sysctl_ctx_entry
+found,
+or
+.Dv NULL .
+.Sh EXAMPLES
+The following is an example of how to create a new top-level category
+and how to hook up another subtree to an existing static node.
+This example uses contexts to keep track of the oids.
+.Bd -literal
+#include <sys/sysctl.h>
+ ...
+struct sysctl_ctx_list clist;
+struct sysctl_oid *oidp;
+int a_int;
+char *string = "dynamic sysctl";
+ ...
+
+sysctl_ctx_init(&clist);
+oidp = SYSCTL_ADD_NODE( &clist, SYSCTL_STATIC_CHILDREN(/* tree top */),
+ OID_AUTO, "newtree", CTFLAG_RW, 0, "new top level tree");
+oidp = SYSCTL_ADD_INT( &clist, SYSCTL_CHILDREN(oidp),
+ OID_AUTO, "newint", CTLFLAG_RW, &a_int, 0, "new int leaf");
+ ...
+oidp = SYSCTL_ADD_NODE( &clist, SYSCTL_STATIC_CHILDREN(_debug),
+ OID_AUTO, "newtree", CTFLAG_RW, 0, "new tree under debug");
+oidp = SYSCTL_ADD_STRING( &clist, SYSCTL_CHILDREN(oidp),
+ OID_AUTO, "newstring", CTLFLAG_R, string, 0, "new string leaf");
+ ...
+/* Now we can free up the oids */
+if(sysctl_ctx_free(&clist)) {
+ printf("can't free this context - other oids depend on it");
+ return(ENOTEMPTY);
+} else {
+ printf("Success!\\n"):
+ return(0);
+}
+.Ed
+.Pp
+This example creates the following subtrees:
+.Bd -literal -offset indent
+debug.newtree.newstring
+newtree.newint
+.Ed
+.Pp
+Note that both trees are removed, and their resources freed,
+through one
+.Fn sysctl_ctx_free
+call, which starts by freeing the newest entries (leaves)
+and then proceeds to free the older entries (in this case the nodes).
+.Sh SEE ALSO
+.Xr queue 3 ,
+.Xr sysctl 8 ,
+.Xr sysctl 9 ,
+.Xr sysctl_add_oid 9 ,
+.Xr sysctl_remove_oid 9
+.Sh HISTORY
+These functions first appeared in
+.Fx 4.2 .
+.Sh AUTHORS
+.An Andrzej Bialecki Aq abial@FreeBSD.org
+.Sh BUGS
+The current removal algorithm is somewhat heavy.
+In the worst case,
+all oids need to be unregistered, registered again,
+and then unregistered and deleted.
+However, the algorithm does guarantee transactional properties
+for removal operations.
+.Pp
+All operations on contexts involve linked list traversal.
+For this reason,
+creation and removal of entries is relatively costly.
diff --git a/share/man/man9/taskqueue.9 b/share/man/man9/taskqueue.9
new file mode 100644
index 0000000..241b20f
--- /dev/null
+++ b/share/man/man9/taskqueue.9
@@ -0,0 +1,317 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd June 13, 2008
+.Dt TASKQUEUE 9
+.Os
+.Sh NAME
+.Nm taskqueue
+.Nd asynchronous task execution
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/kernel.h
+.In sys/malloc.h
+.In sys/queue.h
+.In sys/taskqueue.h
+.Bd -literal
+typedef void (*task_fn_t)(void *context, int pending);
+
+typedef void (*taskqueue_enqueue_fn)(void *context);
+
+struct task {
+ STAILQ_ENTRY(task) ta_link; /* link for queue */
+ u_short ta_pending; /* count times queued */
+ u_short ta_priority; /* priority of task in queue */
+ task_fn_t ta_func; /* task handler */
+ void *ta_context; /* argument for handler */
+};
+.Ed
+.Ft struct taskqueue *
+.Fn taskqueue_create "const char *name" "int mflags" "taskqueue_enqueue_fn enqueue" "void *context"
+.Ft struct taskqueue *
+.Fn taskqueue_create_fast "const char *name" "int mflags" "taskqueue_enqueue_fn enqueue" "void *context"
+.Ft void
+.Fn taskqueue_free "struct taskqueue *queue"
+.Ft struct taskqueue *
+.Fn taskqueue_find "const char *name"
+.Ft int
+.Fn taskqueue_enqueue "struct taskqueue *queue" "struct task *task"
+.Ft int
+.Fn taskqueue_enqueue_fast "struct taskqueue *queue" "struct task *task"
+.Ft void
+.Fn taskqueue_run "struct taskqueue *queue"
+.Ft void
+.Fn taskqueue_run_fast "struct taskqueue *queue"
+.Ft void
+.Fn taskqueue_drain "struct taskqueue *queue" "struct task *task"
+.Fn TASK_INIT "struct task *task" "int priority" "task_fn_t *func" "void *context"
+.Fn TASKQUEUE_DECLARE "name"
+.Fn TASKQUEUE_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init"
+.Fn TASKQUEUE_FAST_DEFINE "name" "taskqueue_enqueue_fn enqueue" "void *context" "init"
+.Fn TASKQUEUE_DEFINE_THREAD "name"
+.Fn TASKQUEUE_FAST_DEFINE_THREAD "name"
+.Sh DESCRIPTION
+These functions provide a simple interface for asynchronous execution
+of code.
+.Pp
+The function
+.Fn taskqueue_create
+is used to create new queues.
+The arguments to
+.Fn taskqueue_create
+include a name that should be unique,
+a set of
+.Xr malloc 9
+flags that specify whether the call to
+.Fn malloc
+is allowed to sleep,
+a function that is called from
+.Fn taskqueue_enqueue
+when a task is added to the queue,
+and a pointer to the memory location where the identity of the
+thread that services the queue is recorded.
+.\" XXX The rest of the sentence gets lots in relation to the first part.
+The function called from
+.Fn taskqueue_enqueue
+must arrange for the queue to be processed
+(for instance by scheduling a software interrupt or waking a kernel
+thread).
+The memory location where the thread identity is recorded is used
+to signal the service thread(s) to terminate--when this value is set to
+zero and the thread is signaled it will terminate.
+If the queue is intended for use in fast interrupt handlers
+.Fn taskqueue_create_fast
+should be used in place of
+.Fn taskqueue_create .
+.Pp
+The function
+.Fn taskqueue_free
+should be used to remove the queue from the global list of queues
+and free the memory used by the queue.
+Any tasks that are on the queue will be executed at this time after
+which the thread servicing the queue will be signaled that it should exit.
+.Pp
+The system maintains a list of all queues which can be searched using
+.Fn taskqueue_find .
+The first queue whose name matches is returned, otherwise
+.Dv NULL .
+.Pp
+To add a task to the list of tasks queued on a taskqueue, call
+.Fn taskqueue_enqueue
+with pointers to the queue and task.
+If the task's
+.Va ta_pending
+field is non-zero,
+then it is simply incremented to reflect the number of times the task
+was enqueued.
+Otherwise,
+the task is added to the list before the first task which has a lower
+.Va ta_priority
+value or at the end of the list if no tasks have a lower priority.
+Enqueueing a task does not perform any memory allocation which makes
+it suitable for calling from an interrupt handler.
+This function will return
+.Er EPIPE
+if the queue is being freed.
+.Pp
+The function
+.Fn taskqueue_enqueue_fast
+should be used in place of
+.Fn taskqueue_enqueue
+when the enqueuing must happen from a fast interrupt handler.
+This method uses spin locks to avoid the possibility of sleeping in the fast
+interrupt context.
+.Pp
+To execute all the tasks on a queue,
+call
+.Fn taskqueue_run
+or
+.Fn taskqueue_run_fast
+depending on the flavour of the queue.
+When a task is executed,
+first it is removed from the queue,
+the value of
+.Va ta_pending
+is recorded and then the field is zeroed.
+The function
+.Va ta_func
+from the task structure is called with the value of the field
+.Va ta_context
+as its first argument
+and the value of
+.Va ta_pending
+as its second argument.
+After the function
+.Va ta_func
+returns,
+.Xr wakeup 9
+is called on the task pointer passed to
+.Fn taskqueue_enqueue .
+.Pp
+The
+.Fn taskqueue_drain
+function is used to wait for the task to finish.
+There is no guarantee that the task will not be
+enqueued after call to
+.Fn taskqueue_drain .
+.Pp
+A convenience macro,
+.Fn TASK_INIT "task" "priority" "func" "context"
+is provided to initialise a
+.Va task
+structure.
+The values of
+.Va priority ,
+.Va func ,
+and
+.Va context
+are simply copied into the task structure fields and the
+.Va ta_pending
+field is cleared.
+.Pp
+Five macros
+.Fn TASKQUEUE_DECLARE "name" ,
+.Fn TASKQUEUE_DEFINE "name" "enqueue" "context" "init" ,
+.Fn TASKQUEUE_FAST_DEFINE "name" "enqueue" "context" "init" ,
+and
+.Fn TASKQUEUE_DEFINE_THREAD "name"
+.Fn TASKQUEUE_FAST_DEFINE_THREAD "name"
+are used to declare a reference to a global queue, to define the
+implementation of the queue, and declare a queue that uses its own thread.
+The
+.Fn TASKQUEUE_DEFINE
+macro arranges to call
+.Fn taskqueue_create
+with the values of its
+.Va name ,
+.Va enqueue
+and
+.Va context
+arguments during system initialisation.
+After calling
+.Fn taskqueue_create ,
+the
+.Va init
+argument to the macro is executed as a C statement,
+allowing any further initialisation to be performed
+(such as registering an interrupt handler etc.)
+.Pp
+The
+.Fn TASKQUEUE_DEFINE_THREAD
+macro defines a new taskqueue with its own kernel thread to serve tasks.
+The variable
+.Vt struct taskqueue *taskqueue_name
+is used to enqueue tasks onto the queue.
+.Pp
+.Fn TASKQUEUE_FAST_DEFINE
+and
+.Fn TASKQUEUE_FAST_DEFINE_THREAD
+act just like
+.Fn TASKQUEUE_DEFINE
+and
+.Fn TASKQUEUE_DEFINE_THREAD
+respectively but taskqueue is created with
+.Fn taskqueue_create_fast .
+.Ss Predefined Task Queues
+The system provides four global taskqueues,
+.Va taskqueue_fast ,
+.Va taskqueue_swi ,
+.Va taskqueue_swi_giant ,
+and
+.Va taskqueue_thread .
+The
+.Va taskqueue_fast
+queue is for swi handlers dispatched from fast interrupt handlers,
+where sleep mutexes cannot be used.
+The swi taskqueues are run via a software interrupt mechanism.
+The
+.Va taskqueue_swi
+queue runs without the protection of the
+.Va Giant
+kernel lock, and the
+.Va taskqueue_swi_giant
+queue runs with the protection of the
+.Va Giant
+kernel lock.
+The thread taskqueue
+.Va taskqueue_thread
+runs in a kernel thread context, and tasks run from this thread do
+not run under the
+.Va Giant
+kernel lock.
+If the caller wants to run under
+.Va Giant ,
+he should explicitly acquire and release
+.Va Giant
+in his taskqueue handler routine.
+.Pp
+To use these queues,
+call
+.Fn taskqueue_enqueue
+with the value of the global taskqueue variable for the queue you wish to
+use
+.Va ( taskqueue_swi ,
+.Va taskqueue_swi_giant ,
+or
+.Va taskqueue_thread ) .
+Use
+.Fn taskqueue_enqueue_fast
+for the global taskqueue variable
+.Va taskqueue_fast .
+.Pp
+The software interrupt queues can be used,
+for instance, for implementing interrupt handlers which must perform a
+significant amount of processing in the handler.
+The hardware interrupt handler would perform minimal processing of the
+interrupt and then enqueue a task to finish the work.
+This reduces to a minimum
+the amount of time spent with interrupts disabled.
+.Pp
+The thread queue can be used, for instance, by interrupt level routines
+that need to call kernel functions that do things that can only be done
+from a thread context.
+(e.g., call malloc with the M_WAITOK flag.)
+.Pp
+Note that tasks queued on shared taskqueues such as
+.Va taskqueue_swi
+may be delayed an indeterminate amount of time before execution.
+If queueing delays cannot be tolerated then a private taskqueue should
+be created with a dedicated processing thread.
+.Sh SEE ALSO
+.Xr ithread 9 ,
+.Xr kthread 9 ,
+.Xr swi 9
+.Sh HISTORY
+This interface first appeared in
+.Fx 5.0 .
+There is a similar facility called tqueue in the Linux kernel.
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/thread_exit.9 b/share/man/man9/thread_exit.9
new file mode 100644
index 0000000..6a06433
--- /dev/null
+++ b/share/man/man9/thread_exit.9
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (c) 2002 Julian Elischer
+.\" 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$
+.\"
+.Dd July 5, 2002
+.Dt THREAD_EXIT 9
+.Os
+.Sh NAME
+.Nm thread_exit
+.Nd abandon current thread context
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.Ft void
+.Fn thread_exit "void"
+.Sh DESCRIPTION
+The
+.Fn thread_exit
+function implements the machine independent prelude to a thread
+shutdown.
+It will not return, and will result in a call to
+.Xr mi_switch 9
+to schedule some other thread.
+.Pp
+.Fn thread_exit
+arranges to free all the resources of the thread, specifically the kernel
+stack.
+.Pp
+To protect the
+.Xr runqueue 9 ,
+.Fn thread_exit
+must be called with the
+.Va sched_lock
+mutex held.
+.Sh SEE ALSO
+.Xr mi_switch 9 ,
+.Xr mutex 9 ,
+.Xr runqueue 9 ,
+.Xr sleep 9
diff --git a/share/man/man9/time.9 b/share/man/man9/time.9
new file mode 100644
index 0000000..4a2b2f7
--- /dev/null
+++ b/share/man/man9/time.9
@@ -0,0 +1,115 @@
+.\" $NetBSD: time.9,v 1.1 1995/11/25 21:24:53 perry Exp $
+.\"
+.\" Copyright (c) 1994 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 by Christopher G. Demetriou
+.\" for the NetBSD Project.
+.\" 3. 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$
+.\"
+.Dd September 17, 2004
+.Dt TIME 9
+.Os
+.Sh NAME
+.Nm boottime ,
+.Nm time_second ,
+.Nm time_uptime
+.Nd system time variables
+.Sh SYNOPSIS
+.In sys/time.h
+.Pp
+.Vt extern struct timeval boottime ;
+.Vt extern time_t time_second ;
+.Vt extern time_t time_uptime ;
+.Sh DESCRIPTION
+The
+.Va boottime
+variable holds the system boot time.
+.Pp
+The
+.Va time_second
+variable is the system's
+.Dq wall time
+clock to the second.
+.Pp
+The
+.Va time_uptime
+variable is the number of seconds since boot.
+.Pp
+The
+.Xr bintime 9 ,
+.Xr getbintime 9 ,
+.Xr microtime 9 ,
+.Xr getmicrotime 9 ,
+.Xr nanotime 9 ,
+and
+.Xr getnanotime 9
+functions can be used to get the current time more accurately and in an
+atomic manner.
+Similarly, the
+.Xr binuptime 9 ,
+.Xr getbinuptime 9 ,
+.Xr microuptime 9 ,
+.Xr getmicrouptime 9 ,
+.Xr nanouptime 9 ,
+and
+.Xr getnanouptime 9
+functions can be used to get the time elapse since boot more accurately
+and in an atomic manner.
+The
+.Va boottime
+variable may be read and written without special precautions.
+.Sh SEE ALSO
+.Xr clock_settime 2 ,
+.Xr ntp_adjtime 2 ,
+.Xr settimeofday 2 ,
+.Xr bintime 9 ,
+.Xr binuptime 9 ,
+.Xr getbintime 9 ,
+.Xr getbinuptime 9 ,
+.Xr getmicrotime 9 ,
+.Xr getmicrouptime 9 ,
+.Xr getnanotime 9 ,
+.Xr getnanouptime 9 ,
+.Xr microtime 9 ,
+.Xr microuptime 9 ,
+.Xr nanotime 9 ,
+.Xr nanouptime 9
+.Rs
+.%A "Poul-Henning Kamp"
+.%T "Timecounters: Efficient and precise timekeeping in SMP kernels"
+.%J "Proceedings of EuroBSDCon 2002, Amsterdam"
+.%O /usr/share/doc/papers/timecounter.ascii.gz
+.Re
+.Rs
+.%A "Marshall Kirk McKusick"
+.%A "George V. Neville-Neil"
+.%B "The Design and Implementation of the FreeBSD Operating System"
+.%D "July 2004"
+.%I "Addison-Wesley"
+.%P "57-61,65-66"
+.Re
diff --git a/share/man/man9/timeout.9 b/share/man/man9/timeout.9
new file mode 100644
index 0000000..e6d911d
--- /dev/null
+++ b/share/man/man9/timeout.9
@@ -0,0 +1,570 @@
+.\" $NetBSD: timeout.9,v 1.2 1996/06/23 22:32:34 pk Exp $
+.\"
+.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 2, 2008
+.Dt TIMEOUT 9
+.Os
+.Sh NAME
+.Nm timeout ,
+.Nm untimeout ,
+.Nm callout_handle_init ,
+.Nm callout_init ,
+.Nm callout_init_mtx ,
+.Nm callout_init_rw ,
+.Nm callout_stop ,
+.Nm callout_drain ,
+.Nm callout_reset ,
+.Nm callout_schedule ,
+.Nm callout_pending ,
+.Nm callout_active ,
+.Nm callout_deactivate
+.Nd execute a function after a specified length of time
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/systm.h
+.Pp
+.Bd -literal
+typedef void timeout_t (void *);
+.Ed
+.Ft struct callout_handle
+.Fn timeout "timeout_t *func" "void *arg" "int ticks"
+.Ft void
+.Fn callout_handle_init "struct callout_handle *handle"
+.Pp
+.Bd -literal
+struct callout_handle handle = CALLOUT_HANDLE_INITIALIZER(&handle)
+.Ed
+.Ft void
+.Fn untimeout "timeout_t *func" "void *arg" "struct callout_handle handle"
+.Ft void
+.Fn callout_init "struct callout *c" "int mpsafe"
+.Ft void
+.Fn callout_init_mtx "struct callout *c" "struct mtx *mtx" "int flags"
+.Ft void
+.Fn callout_init_rw "struct callout *c" "struct rwlock *rw" "int flags"
+.Ft int
+.Fn callout_stop "struct callout *c"
+.Ft int
+.Fn callout_drain "struct callout *c"
+.Ft int
+.Fn callout_reset "struct callout *c" "int ticks" "timeout_t *func" "void *arg"
+.Ft int
+.Fn callout_schedule "struct callout *c" "int ticks"
+.Ft int
+.Fn callout_pending "struct callout *c"
+.Ft int
+.Fn callout_active "struct callout *c"
+.Fn callout_deactivate "struct callout *c"
+.Sh DESCRIPTION
+The function
+.Fn timeout
+schedules a call to the function given by the argument
+.Fa func
+to take place after
+.Fa ticks Ns No /hz
+seconds.
+Non-positive values of
+.Fa ticks
+are silently converted to the value
+.Sq 1 .
+.Fa func
+should be a pointer to a function that takes a
+.Fa void *
+argument.
+Upon invocation,
+.Fa func
+will receive
+.Fa arg
+as its only argument.
+The return value from
+.Fn timeout
+is a
+.Ft struct callout_handle
+which can be used in conjunction with the
+.Fn untimeout
+function to request that a scheduled timeout be canceled.
+The
+.Fn timeout
+call is the old style and new code should use the
+.Fn callout_*
+functions.
+.Pp
+The function
+.Fn callout_handle_init
+can be used to initialize a handle to a state which will cause
+any calls to
+.Fn untimeout
+with that handle to return with no side
+effects.
+.Pp
+Assigning a callout handle the value of
+.Fn CALLOUT_HANDLE_INITIALIZER
+performs the same function as
+.Fn callout_handle_init
+and is provided for use on statically declared or global callout handles.
+.Pp
+The function
+.Fn untimeout
+cancels the timeout associated with
+.Fa handle
+using the
+.Fa func
+and
+.Fa arg
+arguments to validate the handle.
+If the handle does not correspond to a timeout with
+the function
+.Fa func
+taking the argument
+.Fa arg
+no action is taken.
+.Fa handle
+must be initialized by a previous call to
+.Fn timeout ,
+.Fn callout_handle_init ,
+or assigned the value of
+.Fn CALLOUT_HANDLE_INITIALIZER "&handle"
+before being passed to
+.Fn untimeout .
+The behavior of calling
+.Fn untimeout
+with an uninitialized handle
+is undefined.
+The
+.Fn untimeout
+call is the old style and new code should use the
+.Fn callout_*
+functions.
+.Pp
+As handles are recycled by the system, it is possible (although unlikely)
+that a handle from one invocation of
+.Fn timeout
+may match the handle of another invocation of
+.Fn timeout
+if both calls used the same function pointer and argument, and the first
+timeout is expired or canceled before the second call.
+The timeout facility offers O(1) running time for
+.Fn timeout
+and
+.Fn untimeout .
+Timeouts are executed from
+.Fn softclock
+with the
+.Va Giant
+lock held.
+Thus they are protected from re-entrancy.
+.Pp
+The functions
+.Fn callout_init ,
+.Fn callout_init_mtx ,
+.Fn callout_init_rw ,
+.Fn callout_stop ,
+.Fn callout_drain ,
+.Fn callout_reset
+and
+.Fn callout_schedule
+are low-level routines for clients who wish to allocate their own
+callout structures.
+.Pp
+The function
+.Fn callout_init
+initializes a callout so it can be passed to
+.Fn callout_stop ,
+.Fn callout_drain ,
+.Fn callout_reset
+or
+.Fn callout_schedule
+without any side effects.
+If the
+.Fa mpsafe
+argument is zero,
+the callout structure is not considered to be
+.Dq multi-processor safe ;
+that is,
+the Giant lock will be acquired before calling the callout function,
+and released when the callout function returns.
+.Pp
+The
+.Fn callout_init_mtx
+function may be used as an alternative to
+.Fn callout_init .
+The parameter
+.Fa mtx
+specifies a mutex that is to be acquired by the callout subsystem
+before calling the callout function, and released when the callout
+function returns.
+The following
+.Fa flags
+may be specified:
+.Bl -tag -width ".Dv CALLOUT_RETURNUNLOCKED"
+.It Dv CALLOUT_RETURNUNLOCKED
+The callout function will release
+.Fa mtx
+itself, so the callout subsystem should not attempt to unlock it
+after the callout function returns.
+.El
+.Pp
+The
+.Fn callout_init_rw
+function serves the need of using rwlocks in conujunction with callouts.
+The function does basically the same as
+.Fn callout_init_mtx
+with the possibility of specifying an extra
+.Fa rw
+argument.
+The usable lock classes are currently limited to mutexes and rwlocks,
+because callout handlers run in softclock swi, so they cannot sleep nor
+acquire sleepable locks like sx or lockmgr.
+The following
+.Fa flags
+may be specified:
+.Bl -tag -width ".Dv CALLOUT_SHAREDLOCK"
+.It Dv CALLOUT_SHAREDLOCK
+The lock is only acquired in read mode when running the callout handler.
+It has no effects when used in conjuction with
+.Fa mtx .
+.El
+.Pp
+The function
+.Fn callout_stop
+cancels a callout if it is currently pending.
+If the callout is pending, then
+.Fn callout_stop
+will return a non-zero value.
+If the callout is not set, has already been serviced or is currently
+being serviced, then zero will be returned.
+If the callout has an associated mutex, then that mutex must be
+held when this function is called.
+.Pp
+The function
+.Fn callout_drain
+is identical to
+.Fn callout_stop
+except that it will wait for the callout to be completed if it is
+already in progress.
+This function MUST NOT be called while holding any
+locks on which the callout might block, or deadlock will result.
+Note that if the callout subsystem has already begun processing this
+callout, then the callout function may be invoked during the execution of
+.Fn callout_drain .
+However, the callout subsystem does guarantee that the callout will be
+fully stopped before
+.Fn callout_drain
+returns.
+.Pp
+The function
+.Fn callout_reset
+first performs the equivalent of
+.Fn callout_stop
+to disestablish the callout, and then establishes a new callout in the
+same manner as
+.Fn timeout .
+If there was already a pending callout and it was rescheduled, then
+.Fn callout_reset
+will return a non-zero value.
+If the callout has an associated mutex, then that mutex must be
+held when this function is called.
+The function
+.Fn callout_schedule
+(re)schedules an existing callout for a new period of time;
+it is equivalent to calling
+.Fn callout_reset
+with the
+.Fa func
+and
+.Fa arg
+parameters extracted from the callout structure (though possibly with
+lower overhead).
+.Pp
+The macros
+.Fn callout_pending ,
+.Fn callout_active
+and
+.Fn callout_deactivate
+provide access to the current state of the callout.
+Careful use of these macros can avoid many of the race conditions
+that are inherent in asynchronous timer facilities; see
+.Sx "Avoiding Race Conditions"
+below for further details.
+The
+.Fn callout_pending
+macro checks whether a callout is
+.Em pending ;
+a callout is considered
+.Em pending
+when a timeout has been set but the time has not yet arrived.
+Note that once the timeout time arrives and the callout subsystem
+starts to process this callout,
+.Fn callout_pending
+will return
+.Dv FALSE
+even though the callout function may not have finished (or even begun)
+executing.
+The
+.Fn callout_active
+macro checks whether a callout is marked as
+.Em active ,
+and the
+.Fn callout_deactivate
+macro clears the callout's
+.Em active
+flag.
+The callout subsystem marks a callout as
+.Em active
+when a timeout is set and it clears the
+.Em active
+flag in
+.Fn callout_stop
+and
+.Fn callout_drain ,
+but it
+.Em does not
+clear it when a callout expires normally via the execution of the
+callout function.
+.Ss "Avoiding Race Conditions"
+The callout subsystem invokes callout functions from its own timer
+context.
+Without some kind of synchronization it is possible that a callout
+function will be invoked concurrently with an attempt to stop or reset
+the callout by another thread.
+In particular, since callout functions typically acquire a mutex as
+their first action, the callout function may have already been invoked,
+but be blocked waiting for that mutex at the time that another thread
+tries to reset or stop the callout.
+.Pp
+The callout subsystem provides a number of mechanisms to address these
+synchronization concerns:
+.Bl -enum -offset indent
+.It
+If the callout has an associated mutex that was specified using the
+.Fn callout_init_mtx
+function (or implicitly specified as the
+.Va Giant
+mutex using
+.Fn callout_init
+with
+.Fa mpsafe
+set to
+.Dv FALSE ) ,
+then this mutex is used to avoid the race conditions.
+The associated mutex must be acquired by the caller before calling
+.Fn callout_stop
+or
+.Fn callout_reset
+and it is guaranteed that the callout will be correctly stopped
+or reset as expected.
+Note that it is still necessary to use
+.Fn callout_drain
+before destroying the callout or its associated mutex.
+.It
+The return value from
+.Fn callout_stop
+and
+.Fn callout_reset
+indicates whether or not the callout was removed.
+If it is known that the callout was set and the callout function has
+not yet executed, then a return value of
+.Dv FALSE
+indicates that the callout function is about to be called.
+For example:
+.Bd -literal -offset indent
+if (sc->sc_flags & SCFLG_CALLOUT_RUNNING) {
+ if (callout_stop(&sc->sc_callout)) {
+ sc->sc_flags &= ~SCFLG_CALLOUT_RUNNING;
+ /* successfully stopped */
+ } else {
+ /*
+ * callout has expired and callout
+ * function is about to be executed
+ */
+ }
+}
+.Ed
+.It
+The
+.Fn callout_pending ,
+.Fn callout_active
+and
+.Fn callout_deactivate
+macros can be used together to work around the race conditions.
+When a callout's timeout is set, the callout subsystem marks the
+callout as both
+.Em active
+and
+.Em pending .
+When the timeout time arrives, the callout subsystem begins processing
+the callout by first clearing the
+.Em pending
+flag.
+It then invokes the callout function without changing the
+.Em active
+flag, and does not clear the
+.Em active
+flag even after the callout function returns.
+The mechanism described here requires the callout function itself to
+clear the
+.Em active
+flag using the
+.Fn callout_deactivate
+macro.
+The
+.Fn callout_stop
+and
+.Fn callout_drain
+functions always clear both the
+.Em active
+and
+.Em pending
+flags before returning.
+.Pp
+The callout function should first check the
+.Em pending
+flag and return without action if
+.Fn callout_pending
+returns
+.Dv TRUE .
+This indicates that the callout was rescheduled using
+.Fn callout_reset
+just before the callout function was invoked.
+If
+.Fn callout_active
+returns
+.Dv FALSE
+then the callout function should also return without action.
+This indicates that the callout has been stopped.
+Finally, the callout function should call
+.Fn callout_deactivate
+to clear the
+.Em active
+flag.
+For example:
+.Bd -literal -offset indent
+mtx_lock(&sc->sc_mtx);
+if (callout_pending(&sc->sc_callout)) {
+ /* callout was reset */
+ mtx_unlock(&sc->sc_mtx);
+ return;
+}
+if (!callout_active(&sc->sc_callout)) {
+ /* callout was stopped */
+ mtx_unlock(&sc->sc_mtx);
+ return;
+}
+callout_deactivate(&sc->sc_callout);
+/* rest of callout function */
+.Ed
+.Pp
+Together with appropriate synchronization, such as the mutex used above,
+this approach permits the
+.Fn callout_stop
+and
+.Fn callout_reset
+functions to be used at any time without races.
+For example:
+.Bd -literal -offset indent
+mtx_lock(&sc->sc_mtx);
+callout_stop(&sc->sc_callout);
+/* The callout is effectively stopped now. */
+.Ed
+.Pp
+If the callout is still pending then these functions operate normally,
+but if processing of the callout has already begun then the tests in
+the callout function cause it to return without further action.
+Synchronization between the callout function and other code ensures that
+stopping or resetting the callout will never be attempted while the
+callout function is past the
+.Fn callout_deactivate
+call.
+.Pp
+The above technique additionally ensures that the
+.Em active
+flag always reflects whether the callout is effectively enabled or
+disabled.
+If
+.Fn callout_active
+returns false, then the callout is effectively disabled, since even if
+the callout subsystem is actually just about to invoke the callout
+function, the callout function will return without action.
+.El
+.Pp
+There is one final race condition that must be considered when a
+callout is being stopped for the last time.
+In this case it may not be safe to let the callout function itself
+detect that the callout was stopped, since it may need to access
+data objects that have already been destroyed or recycled.
+To ensure that the callout is completely finished, a call to
+.Fn callout_drain
+should be used.
+.Sh RETURN VALUES
+The
+.Fn timeout
+function returns a
+.Ft struct callout_handle
+that can be passed to
+.Fn untimeout .
+The
+.Fn callout_stop
+and
+.Fn callout_drain
+functions return non-zero if the callout was still pending when it was
+called or zero otherwise.
+.Sh HISTORY
+The current timeout and untimeout routines are based on the work of
+.An Adam M. Costello
+and
+.An George Varghese ,
+published in a technical report entitled
+.%T "Redesigning the BSD Callout and Timer Facilities"
+and modified slightly for inclusion in
+.Fx
+by
+.An Justin T. Gibbs .
+The original work on the data structures used in this implementation
+was published by
+.An G. Varghese
+and
+.An A. Lauck
+in the paper
+.%T "Hashed and Hierarchical Timing Wheels: Data Structures for the Efficient Implementation of a Timer Facility"
+in the
+.%B "Proceedings of the 11th ACM Annual Symposium on Operating Systems Principles" .
+The current implementation replaces the long standing
+.Bx
+linked list
+callout mechanism which offered O(n) insertion and removal running time
+but did not generate or require handles for untimeout operations.
diff --git a/share/man/man9/tvtohz.9 b/share/man/man9/tvtohz.9
new file mode 100644
index 0000000..672aaf9
--- /dev/null
+++ b/share/man/man9/tvtohz.9
@@ -0,0 +1,58 @@
+.\" Copyright (c) 2000 Kelly Yancey
+.\" 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$
+.\"
+.Dd January 3, 2000
+.Dt TVTOHZ 9
+.Os
+.Sh NAME
+.Nm tvtohz
+.Nd convert time interval to tick count
+.Sh SYNOPSIS
+.In sys/time.h
+.Ft int
+.Fn tvtohz "struct timeval *tv"
+.Sh DESCRIPTION
+The
+.Fn tvtohz
+function accepts a single argument
+.Fa tv
+which specifies the time interval over which to calculate the number
+of system ticks that would elapse.
+.Sh RETURN VALUES
+Returns the integral number of system ticks expected to elapse in the given
+interval, including the current tick.
+.Sh SEE ALSO
+.Xr microtime 9 ,
+.Xr microuptime 9 ,
+.Xr timeout 9
+.Sh HISTORY
+The
+.Nm
+function first appeared in
+.Fx 3.0
+.Sh AUTHORS
+This manual page was written by
+.An Kelly Yancey Aq kbyanc@posi.net .
diff --git a/share/man/man9/ucred.9 b/share/man/man9/ucred.9
new file mode 100644
index 0000000..40933a2
--- /dev/null
+++ b/share/man/man9/ucred.9
@@ -0,0 +1,204 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 3, 2002
+.Dt UCRED 9
+.Os
+.Sh NAME
+.Nm ucred ,
+.Nm crget ,
+.Nm crhold ,
+.Nm crfree ,
+.Nm crshared ,
+.Nm crcopy ,
+.Nm crdup ,
+.Nm cru2x ,
+.Nm cred_update_thread
+.Nd "functions related to user credentials"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/ucred.h
+.Ft "struct ucred *"
+.Fn crget void
+.Ft "struct ucred *"
+.Fn crhold "struct ucred *cr"
+.Ft void
+.Fn crfree "struct ucred *cr"
+.Ft int
+.Fn crshared "struct ucred *cr"
+.Ft void
+.Fn crcopy "struct ucred *dest" "struct ucred *src"
+.Ft "struct ucred *"
+.Fn crdup "struct ucred *cr"
+.Ft void
+.Fn cru2x "struct ucred *cr" "struct xucred *xcr"
+.Ft void
+.Fn cred_update_thread "struct thread *td"
+.Sh DESCRIPTION
+The
+.Nm
+family of functions is used to manage user credential structures
+.Pq Vt "struct ucred"
+within the kernel.
+.Pp
+The
+.Fn crget
+function allocates memory
+for a new structure, sets its reference count to 1, and
+initializes its lock.
+.Pp
+The
+.Fn crhold
+function increases the reference count on the credential.
+.Pp
+The
+.Fn crfree
+function decreases the reference count on the credential.
+If the count drops to 0, the storage for the structure is freed.
+.Pp
+The
+.Fn crshared
+function returns true if the credential is shared.
+A credential is considered to be shared if its reference
+count is greater than one.
+.Pp
+The
+.Fn crcopy
+function copies the contents of the source (template)
+credential into the destination template.
+The
+.Vt uidinfo
+structure within the destination is referenced
+by calling
+.Xr uihold 9 .
+.Pp
+The
+.Fn crdup
+function allocates memory for a new structure and copies the
+contents of
+.Fa cr
+into it.
+The actual copying is performed by
+.Fn crcopy .
+.Pp
+The
+.Fn cru2x
+function converts a
+.Vt ucred
+structure to an
+.Vt xucred
+structure.
+That is,
+it copies data from
+.Fa cr
+to
+.Fa xcr ;
+it ignores fields in the former that are not present in the latter
+(e.g.,
+.Va cr_uidinfo ) ,
+and appropriately sets fields in the latter that are not present in
+the former
+(e.g.,
+.Va cr_version ) .
+.Pp
+The
+.Fn cred_update_thread
+function sets the credentials of
+.Fa td
+to that of its process, freeing its old credential if required.
+.Sh RETURN VALUES
+.Fn crget ,
+.Fn crhold
+and
+.Fn crdup
+all return a pointer to a
+.Vt ucred
+structure.
+.Pp
+.Fn crshared
+returns 0 if the credential has a reference count greater than 1;
+otherwise, 1 is returned.
+.Sh USAGE NOTES
+As of
+.Fx 5.0 ,
+the
+.Vt ucred
+structure contains extensible fields.
+This means that the correct protocol must always be followed to create
+a fresh and writable credential structure: new credentials must always
+be derived from existing credentials using
+.Fn crget
+and
+.Fn crcopy .
+.Pp
+In the common case, credentials required for access control decisions are
+used in a read-only manner.
+In these circumstances, the thread credential
+.Va td_ucred
+should be used, as it requires no locking to access safely, and remains stable
+for the duration of the call even in the face of a multi-threaded
+application changing the process credentials from another thread.
+.Pp
+During a process credential update, the process lock must be held across
+check and update, to prevent race conditions.
+The process credential,
+.Va td->td_proc->p_ucred ,
+must be used both for check and update.
+If a process credential is updated during a system call and checks against
+the thread credential are to be made later during the same system call,
+the thread credential must also be refreshed from the process credential
+so as to prevent use of a stale value.
+To avoid this scenario, it is recommended that system calls updating the
+process credential be designed to avoid other authorization functions.
+.Pp
+If temporarily elevated privileges are required for a thread, the thread
+credential can by replaced for the duration of an activity, or for
+the remainder of the system call.
+However, as a thread credential is often shared, appropriate care should be
+taken to make sure modifications are made to a writable credential
+through the use of
+.Fn crget
+and
+.Fn crcopy .
+.Pp
+Caution should be exercised when checking authorization for a thread or
+process perform an operation on another thread or process.
+As a result of temporary elevation, the target thread credential should
+.Em never
+be used as the target credential in an access control decision: the process
+credential associated with the thread,
+.Va td->td_proc->p_ucred ,
+should be used instead.
+For example,
+.Xr p_candebug 9
+accepts a target process, not a target thread, for access control purposes.
+.Sh SEE ALSO
+.Xr uihold 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/uidinfo.9 b/share/man/man9/uidinfo.9
new file mode 100644
index 0000000..8a3d708
--- /dev/null
+++ b/share/man/man9/uidinfo.9
@@ -0,0 +1,109 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 10, 2001
+.Dt UIDINFO 9
+.Os
+.Sh NAME
+.Nm uidinfo ,
+.Nm uihashinit ,
+.Nm uifind ,
+.Nm uihold ,
+.Nm uifree
+.Nd "functions for managing UID information"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.In sys/resourcevar.h
+.Ft void
+.Fn uihashinit void
+.Ft "struct uidinfo *"
+.Fn uifind "uid_t uid"
+.Ft void
+.Fn uihold "struct uidinfo *uip"
+.Ft void
+.Fn uifree "struct uidinfo *uip"
+.Sh DESCRIPTION
+The
+.Nm
+family of functions
+is used to manage
+.Vt uidinfo
+structures.
+Each
+.Vt uidinfo
+structure maintains per uid resource consumption counts, including the
+process count and socket buffer space usage.
+.Pp
+The
+.Fn uihashinit
+function initializes the
+.Vt uidinfo
+hash table and its mutex.
+This function should only be called during system initialization.
+.Pp
+The
+.Fn uifind
+function looks up and returns the
+.Vt uidinfo
+structure for
+.Fa uid .
+If no
+.Vt uidinfo
+structure exists for
+.Fa uid ,
+a new structure will be allocated and initialized.
+The
+.Nm
+hash mutex is acquired and released.
+.Pp
+The
+.Fn uihold
+function increases the reference count on
+.Fa uip .
+.Fa uip Ns 's
+lock is acquired and released.
+.Pp
+The
+.Fn uifree
+function decreases the reference count on
+.Fa uip ,
+and if the count reaches 0
+.Fa uip
+is freed.
+.Fa uip Ns 's
+lock is acquired and release and the uidinfo hash mutex may be
+acquired and released.
+.Sh RETURN VALUES
+.Fn uifind
+returns a pointer to an initialized
+.Vt uidinfo
+structure, and should not fail.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/uio.9 b/share/man/man9/uio.9
new file mode 100644
index 0000000..b23e9fd
--- /dev/null
+++ b/share/man/man9/uio.9
@@ -0,0 +1,185 @@
+.\"
+.\" Copyright (c) 1997 Joerg Wunsch
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd October 30, 2007
+.Os
+.Dt UIO 9
+.Sh NAME
+.Nm uio ,
+.Nm uiomove
+.Nd device driver I/O routines
+.Sh SYNOPSIS
+.In sys/types.h
+.In sys/uio.h
+.Pp
+.Bd -literal
+struct uio {
+ struct iovec *uio_iov; /* scatter/gather list */
+ int uio_iovcnt; /* length of scatter/gather list */
+ off_t uio_offset; /* offset in target object */
+ int uio_resid; /* remaining bytes to copy */
+ enum uio_seg uio_segflg; /* address space */
+ enum uio_rw uio_rw; /* operation */
+ struct thread *uio_td; /* owner */
+};
+.Ed
+.Ft int
+.Fn uiomove "void *buf" "int howmuch" "struct uio *uiop"
+.Sh DESCRIPTION
+The function
+.Fn uiomove
+is used to handle transfer of data between buffers and I/O vectors
+that might possibly also cross the user/kernel space boundary.
+.Pp
+As a result of any
+.Xr read 2 ,
+.Xr write 2 ,
+.Xr readv 2 ,
+or
+.Xr writev 2
+system call that is being passed to a character-device driver, the
+appropriate driver
+.Va d_read
+or
+.Va d_write
+entry will be called with a pointer to a
+.Vt "struct uio"
+being passed.
+The transfer request is encoded in this structure.
+The driver itself should use
+.Fn uiomove
+to get at the data in this structure.
+.Pp
+The fields in the
+.Vt uio
+structure are:
+.Bl -tag -width ".Va uio_iovcnt"
+.It Va uio_iov
+The array of I/O vectors to be processed.
+In the case of scatter/gather
+I/O, this will be more than one vector.
+.It Va uio_iovcnt
+The number of I/O vectors present.
+.It Va uio_offset
+The offset into the device.
+.It Va uio_resid
+The remaining number of bytes to process, updated after transfer.
+.It Va uio_segflg
+One of the following flags:
+.Bl -tag -width ".Dv UIO_USERSPACE"
+.It Dv UIO_USERSPACE
+The I/O vector points into a process's address space.
+.It Dv UIO_SYSSPACE
+The I/O vector points into the kernel address space.
+.It Dv UIO_NOCOPY
+Do not copy, already in object.
+.El
+.It Va uio_rw
+The direction of the desired transfer, either
+.Dv UIO_READ ,
+or
+.Dv UIO_WRITE .
+.It Va uio_td
+The pointer to a
+.Vt "struct thread"
+for the associated thread; used if
+.Va uio_segflg
+indicates that the transfer is to be made from/to a process's address
+space.
+.El
+.Sh RETURN VALUES
+On success
+.Fn uiomove
+will return 0, on error it will return an appropriate errno.
+.Sh ERRORS
+.Fn uiomove
+will fail and return the following error code if:
+.Bl -tag -width Er
+.It Bq Er EFAULT
+The invoked
+.Xr copyin 9
+or
+.Xr copyout 9
+returned
+.Er EFAULT
+.El
+.Sh EXAMPLES
+The idea is that the driver maintains a private buffer for its data,
+and processes the request in chunks of maximal the size of this
+buffer.
+Note that the buffer handling below is very simplified and
+will not work (the buffer pointer is not being advanced in case of a
+partial read), it is just here to demonstrate the
+.Nm
+handling.
+.Bd -literal
+/* MIN() can be found there: */
+#include <sys/param.h>
+
+#define BUFSIZE 512
+static char buffer[BUFSIZE];
+
+static int data_available; /* amount of data that can be read */
+
+static int
+fooread(dev_t dev, struct uio *uio, int flag)
+{
+ int rv, amnt;
+
+ rv = 0;
+ while (uio->uio_resid > 0) {
+ if (data_available > 0) {
+ amnt = MIN(uio->uio_resid, data_available);
+ rv = uiomove(buffer, amnt, uio);
+ if (rv != 0)
+ break;
+ data_available -= amnt;
+ } else
+ tsleep(...); /* wait for a better time */
+ }
+ if (rv != 0) {
+ /* do error cleanup here */
+ }
+ return (rv);
+}
+.Ed
+.Sh SEE ALSO
+.Xr read 2 ,
+.Xr readv 2 ,
+.Xr write 2 ,
+.Xr writev 2 ,
+.Xr copyin 9 ,
+.Xr copyout 9 ,
+.Xr sleep 9
+.Sh HISTORY
+The
+.Nm
+mechanism appeared in some early version of
+.Ux .
+.Sh AUTHORS
+This manual page was written by
+.An J\(:org Wunsch .
diff --git a/share/man/man9/usbdi.9 b/share/man/man9/usbdi.9
new file mode 100644
index 0000000..582754f
--- /dev/null
+++ b/share/man/man9/usbdi.9
@@ -0,0 +1,1253 @@
+.\"
+.\" Copyright (c) 2005 Ian Dowse <iedowse@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$
+.Dd December 30, 2005
+.Os
+.Dt USBDI 9
+.Sh NAME
+.Nm usb_detach_wait ,
+.Nm usb_detach_wakeup ,
+.Nm usb_find_desc ,
+.Nm usbd_abort_default_pipe ,
+.Nm usbd_abort_pipe ,
+.Nm usbd_alloc_buffer ,
+.Nm usbd_alloc_xfer ,
+.Nm usbd_bulk_transfer ,
+.Nm usbd_clear_endpoint_stall ,
+.Nm usbd_clear_endpoint_stall_async ,
+.Nm usbd_clear_endpoint_toggle ,
+.Nm usbd_close_pipe ,
+.Nm usbd_device2interface_handle ,
+.Nm usbd_devinfo ,
+.Nm usbd_do_request ,
+.Nm usbd_do_request_async ,
+.Nm usbd_do_request_flags ,
+.Nm usbd_do_request_flags_pipe ,
+.Nm usbd_dopoll ,
+.Nm usbd_endpoint_count ,
+.Nm usbd_errstr ,
+.Nm usbd_fill_deviceinfo ,
+.Nm usbd_find_edesc ,
+.Nm usbd_find_idesc ,
+.Nm usbd_free_buffer ,
+.Nm usbd_free_xfer ,
+.Nm usbd_get_buffer ,
+.Nm usbd_get_config ,
+.Nm usbd_get_config_desc ,
+.Nm usbd_get_config_desc_full ,
+.Nm usbd_get_config_descriptor ,
+.Nm usbd_get_device_descriptor ,
+.Nm usbd_get_endpoint_descriptor ,
+.Nm usbd_get_interface_altindex ,
+.Nm usbd_get_interface_descriptor ,
+.Nm usbd_get_no_alts ,
+.Nm usbd_get_quirks ,
+.Nm usbd_get_speed ,
+.Nm usbd_get_string ,
+.Nm usbd_get_string_desc ,
+.Nm usbd_get_xfer_status ,
+.Nm usbd_interface2device_handle ,
+.Nm usbd_interface2endpoint_descriptor ,
+.Nm usbd_interface_count ,
+.Nm usbd_intr_transfer ,
+.Nm usbd_open_pipe ,
+.Nm usbd_open_pipe_intr ,
+.Nm usbd_pipe2device_handle ,
+.Nm usbd_ratecheck ,
+.Nm usbd_set_config_index ,
+.Nm usbd_set_config_no ,
+.Nm usbd_set_interface ,
+.Nm usbd_set_polling ,
+.Nm usbd_setup_default_xfer ,
+.Nm usbd_setup_isoc_xfer ,
+.Nm usbd_setup_xfer ,
+.Nm usbd_sync_transfer ,
+.Nm usbd_transfer
+.Nd Universal Serial Bus driver programming interface
+.Sh SYNOPSIS
+.In dev/usb/usb.h
+.In dev/usb/usbdi.h
+.In dev/usb/usbdi_util.h
+.Pp
+.Ft void
+.Fn usb_detach_wait "device_ptr_t dv"
+.Ft void
+.Fn usb_detach_wakeup "device_ptr_t dv"
+.Ft "const usb_descriptor_t *"
+.Fn usb_find_desc "usbd_device_handle dev" "int type" "int subtype"
+.Ft usbd_status
+.Fn usbd_abort_default_pipe "usbd_device_handle dev"
+.Ft usbd_status
+.Fn usbd_abort_pipe "usbd_pipe_handle pipe"
+.Ft "void *"
+.Fn usbd_alloc_buffer "usbd_xfer_handle xfer" "u_int32_t size"
+.Ft usbd_xfer_handle
+.Fn usbd_alloc_xfer "usbd_device_handle dev"
+.Ft usbd_status
+.Fo usbd_bulk_transfer
+.Fa "usbd_xfer_handle xfer"
+.Fa "usbd_pipe_handle pipe"
+.Fa "u_int16_t flags"
+.Fa "u_int32_t timeout"
+.Fa "void *buf"
+.Fa "u_int32_t *size"
+.Fa "char *lbl"
+.Fc
+.Ft usbd_status
+.Fn usbd_clear_endpoint_stall "usbd_pipe_handle pipe"
+.Ft usbd_status
+.Fn usbd_clear_endpoint_stall_async "usbd_pipe_handle"
+.Ft void
+.Fn usbd_clear_endpoint_toggle "usbd_pipe_handle pipe"
+.Ft usbd_status
+.Fn usbd_close_pipe "usbd_pipe_handle pipe"
+.Ft usbd_status
+.Fo usbd_device2interface_handle
+.Fa "usbd_device_handle dev"
+.Fa "u_int8_t ifaceno"
+.Fa "usbd_interface_handle *iface"
+.Fc
+.Ft void
+.Fn usbd_devinfo "usbd_device_handle dev" "int showclass" "char *cp"
+.Ft usbd_status
+.Fo usbd_do_request
+.Fa "usbd_device_handle dev"
+.Fa "usb_device_request_t *req"
+.Fa "void *data"
+.Fc
+.Ft usbd_status
+.Fo usbd_do_request_async
+.Fa "usbd_device_handle dev"
+.Fa "usb_device_request_t *req"
+.Fa "void *data"
+.Fc
+.Ft usbd_status
+.Fo usbd_do_request_flags
+.Fa "usbd_device_handle dev"
+.Fa "usb_device_request_t *req"
+.Fa "void *data"
+.Fa "u_int16_t flags"
+.Fa "int *actlen"
+.Fa "u_int32_t timo"
+.Fc
+.Ft usbd_status
+.Fo usbd_do_request_flags_pipe
+.Fa "usbd_device_handle dev"
+.Fa "usbd_pipe_handle pipe"
+.Fa "usb_device_request_t *req"
+.Fa "void *data"
+.Fa "u_int16_t flags"
+.Fa "int *actlen"
+.Fa "u_int32_t timeout"
+.Fc
+.Ft void
+.Fn usbd_dopoll "usbd_interface_handle iface"
+.Ft usbd_status
+.Fn usbd_endpoint_count "usbd_interface_handle iface" "u_int8_t *count"
+.Ft "const char *"
+.Fn usbd_errstr "usbd_status err"
+.Ft void
+.Fo usbd_fill_deviceinfo
+.Fa "usbd_device_handle dev"
+.Fa "struct usb_device_info *di"
+.Fa "int usedev"
+.Fc
+.Ft "usb_endpoint_descriptor_t *"
+.Fo usbd_find_edesc
+.Fa "usb_config_descriptor_t *cd"
+.Fa "int ifaceidx"
+.Fa "int altidx"
+.Fa "int endptidx"
+.Fc
+.Ft "usb_interface_descriptor_t *"
+.Fn usbd_find_idesc "usb_config_descriptor_t *cd" "int ifaceidx" "int altidx"
+.Ft void
+.Fn usbd_free_buffer "usbd_xfer_handle xfer"
+.Ft usbd_status
+.Fn usbd_free_xfer "usbd_xfer_handle xfer"
+.Ft "void *"
+.Fn usbd_get_buffer "usbd_xfer_handle xfer"
+.Ft usbd_status
+.Fn usbd_get_config "usbd_device_handle dev" "u_int8_t *conf"
+.Ft usbd_status
+.Fo usbd_get_config_desc
+.Fa "usbd_device_handle dev"
+.Fa "int confidx"
+.Fa "usb_config_descriptor_t *d"
+.Fc
+.Ft usbd_status
+.Fo usbd_get_config_desc_full
+.Fa "usbd_device_handle dev"
+.Fa "int conf"
+.Fa "void *d"
+.Fa "int size"
+.Fc
+.Ft "usb_config_descriptor_t *"
+.Fn usbd_get_config_descriptor "usbd_device_handle dev"
+.Ft "usb_device_descriptor_t *"
+.Fn usbd_get_device_descriptor "usbd_device_handle dev"
+.Ft "usb_endpoint_descriptor_t *"
+.Fo usbd_get_endpoint_descriptor
+.Fa "usbd_interface_handle iface"
+.Fa "u_int8_t address"
+.Fc
+.Ft int
+.Fn usbd_get_interface_altindex "usbd_interface_handle iface"
+.Ft "usb_interface_descriptor_t *"
+.Fn usbd_get_interface_descriptor "usbd_interface_handle iface"
+.Ft int
+.Fn usbd_get_no_alts "usb_config_descriptor_t *cdesc" "int ifaceno"
+.Ft "const struct usbd_quirks *"
+.Fn usbd_get_quirks "usbd_device_handle dev"
+.Ft int
+.Fn usbd_get_speed "usbd_device_handle dev"
+.Ft usbd_status
+.Fn usbd_get_string "usbd_device_handle dev" "int si" "char *buf"
+.Ft usbd_status
+.Fo usbd_get_string_desc
+.Fa "usbd_device_handle dev"
+.Fa "int sindex"
+.Fa "int langid"
+.Fa "usb_string_descriptor_t *sdesc"
+.Fa "int *sizep"
+.Fc
+.Ft void
+.Fo usbd_get_xfer_status
+.Fa "usbd_xfer_handle xfer"
+.Fa "usbd_private_handle *priv"
+.Fa "void **buffer"
+.Fa "u_int32_t *count"
+.Fa "usbd_status *status"
+.Fc
+.Ft void
+.Fo usbd_interface2device_handle
+.Fa "usbd_interface_handle iface"
+.Fa "usbd_device_handle *dev"
+.Fc
+.Ft "usb_endpoint_descriptor_t *"
+.Fo usbd_interface2endpoint_descriptor
+.Fa "usbd_interface_handle iface"
+.Fa "u_int8_t index"
+.Fc
+.Ft usbd_status
+.Fn usbd_interface_count "usbd_device_handle dev" "u_int8_t *count"
+.Ft usbd_status
+.Fo usbd_intr_transfer
+.Fa "usbd_xfer_handle xfer"
+.Fa "usbd_pipe_handle pipe"
+.Fa "u_int16_t flags"
+.Fa "u_int32_t timeout"
+.Fa "void *buf"
+.Fa "u_int32_t *size"
+.Fa "char *lbl"
+.Fc
+.Ft usbd_status
+.Fo usbd_open_pipe
+.Fa "usbd_interface_handle iface"
+.Fa "u_int8_t address"
+.Fa "u_int8_t flags"
+.Fa "usbd_pipe_handle *pipe"
+.Fc
+.Ft usbd_status
+.Fo usbd_open_pipe_intr
+.Fa "usbd_interface_handle iface"
+.Fa "u_int8_t address"
+.Fa "u_int8_t flags"
+.Fa "usbd_pipe_handle *pipe"
+.Fa "usbd_private_handle priv"
+.Fa "void *buffer"
+.Fa "u_int32_t len"
+.Fa "usbd_callback cb"
+.Fa "int ival"
+.Fc
+.Ft usbd_device_handle
+.Fn usbd_pipe2device_handle "usbd_pipe_handle pipe"
+.Ft int
+.Fn usbd_ratecheck "struct timeval *last"
+.Ft usbd_status
+.Fn usbd_set_config_index "usbd_device_handle dev" "int index" "int msg"
+.Ft usbd_status
+.Fn usbd_set_config_no "usbd_device_handle dev" "int no" "int msg"
+.Ft usbd_status
+.Fn usbd_set_interface "usbd_interface_handle iface" "int altidx"
+.Ft void
+.Fn usbd_set_polling "usbd_device_handle dev" "int on"
+.Ft void
+.Fo usbd_setup_default_xfer
+.Fa "usbd_xfer_handle xfer"
+.Fa "usbd_device_handle dev"
+.Fa "usbd_private_handle priv"
+.Fa "u_int32_t timeout"
+.Fa "usb_device_request_t *req"
+.Fa "void *buffer"
+.Fa "u_int32_t length"
+.Fa "u_int16_t flags"
+.Fa "usbd_callback callback"
+.Fc
+.Ft void
+.Fo usbd_setup_isoc_xfer
+.Fa "usbd_xfer_handle xfer"
+.Fa "usbd_pipe_handle pipe"
+.Fa "usbd_private_handle priv"
+.Fa "u_int16_t *frlengths"
+.Fa "u_int32_t nframes"
+.Fa "u_int16_t flags"
+.Fa "usbd_callback callback"
+.Fc
+.Ft void
+.Fo usbd_setup_xfer
+.Fa "usbd_xfer_handle xfer"
+.Fa "usbd_pipe_handle pipe"
+.Fa "usbd_private_handle priv"
+.Fa "void *buffer"
+.Fa "u_int32_t length"
+.Fa "u_int16_t flags"
+.Fa "u_int32_t timeout"
+.Fa "usbd_callback callback"
+.Fc
+.Ft usbd_status
+.Fn usbd_sync_transfer "usbd_xfer_handle xfer"
+.Ft usbd_status
+.Fn usbd_transfer "usbd_xfer_handle xfer"
+.Sh DESCRIPTION
+The Universal Serial Bus (USB) driver programming interface provides
+USB peripheral drivers with a host controller independent API for
+controlling and communicating with USB peripherals.
+.Pp
+Typically, drivers will first use some combination of the functions
+.Fn usbd_set_config_no ,
+.Fn usbd_get_config_descriptor ,
+.Fn usbd_set_interface ,
+.Fn usbd_get_interface_descriptor ,
+.Fn usbd_device2interface_handle ,
+.Fn usbd_endpoint_count
+and
+.Fn usbd_interface2endpoint_descriptor
+to query the device's properties and prepare it for use.
+Drivers can then perform requests on the USB control pipe using
+.Fn usbd_do_request ,
+they can open pipes using the functions
+.Fn usbd_open_pipe
+and
+.Fn usbd_open_pipe_intr ,
+and perform transfers over these pipes using
+.Fn usbd_alloc_xfer ,
+.Fn usbd_setup_xfer
+and
+.Fn usbd_transfer .
+Finally, the functions
+.Fn usbd_abort_pipe ,
+.Fn usbd_close_pipe
+and
+.Fn usbd_free_xfer
+are used to cancel outstanding transfers, close open pipes and deallocate
+transfer structures.
+.Pp
+The
+.Fn usbd_get_device_descriptor
+function returns a pointer to the USB device descriptor for
+.Fa dev .
+See
+.Sx "USB Descriptors"
+below for information about the USB device descriptor.
+.Pp
+The
+.Fn usbd_get_config_desc
+function retrieves the specified configuration descriptor from the device.
+The
+.Fa confidx
+parameter specifies the configuration descriptor index, which must be less
+than the
+.Fa bNumConfigurations
+value in the device descriptor.
+The function
+.Fn usbd_get_config_desc_full
+retrieves a full configuration descriptor, which has all related interface
+and endpoint descriptors appended to a normal configuration descriptor.
+The parameter
+.Fa d
+should point to memory that is at least
+.Fa size
+bytes in length, and this should be at least as long as the
+.Fa wTotalLength
+value from the configuration descriptor.
+See
+.Sx "USB Descriptors"
+below for information about the USB configuration descriptor.
+.Pp
+The
+.Fn usbd_get_config
+function retrieves the current configuration number from the device, i.e.\&
+the
+.Fa bConfigurationValue
+value from the configuration that is active.
+If the device is unconfigured then
+.Dv USB_UNCONFIG_NO
+is returned.
+The current configuration can be changed by calling either
+.Fn usbd_set_config_index
+or
+.Fn usbd_set_config_no .
+The difference between these functions is that
+.Fn usbd_set_config_index
+accepts a configuration index number that is less than the
+.Fa bNumConfigurations
+value from the device descriptor, whereas
+.Fn usbd_set_config_no
+requires the
+.Fa bConfigurationValue
+value of the desired configuration to be provided instead.
+To unconfigure the device, supply a configuration index of
+.Dv USB_UNCONFIG_INDEX
+to
+.Fn usbd_set_config_index ,
+or else specify a configuration number of
+.Dv USB_UNCONFIG_NO
+to
+.Fn usbd_set_config_no .
+.Pp
+The
+.Fn usbd_get_config_descriptor
+function returns a pointer to an in-memory copy of the full configuration
+descriptor of the configuration that is currently active.
+The returned pointer remains valid until the device configuration
+is changed using
+.Fn usbd_set_config_index
+or
+.Fn usbd_set_config_no .
+If the device is unconfigured then
+.Dv NULL
+is returned instead.
+.Pp
+The function
+.Fn usbd_interface_count
+returns the number of interfaces available in the current device
+configuration.
+The
+.Fn usbd_get_no_alts
+function determines the number of alternate interfaces in a full
+configuration descriptor by counting the interface descriptors with
+.Fa bInterfaceNumber
+equal to
+.Fa ifaceno
+(the count includes alternate index zero).
+The
+.Fn usbd_find_idesc
+function locates an interface descriptor within a full configuration
+descriptor.
+The
+.Fa ifaceidx
+parameter specifies the interface index number, which should be less than
+the number of interfaces in the configuration descriptor (i.e.\& the value
+returned by
+.Fn usbd_interface_count
+or the
+.Fa bNumInterface
+field from the configuration descriptor).
+An alternate interface can be specified using a non-zero
+.Fa altidx ,
+which should be less than the value returned by
+.Fn usbd_get_no_alts .
+The return value is a pointer to the requested interface descriptor
+within the full configuration descriptor, or
+.Dv NULL
+if the specified interface descriptor does not exist.
+Note that the
+.Fa altidx
+parameter specifies the alternate setting by index number starting
+at zero; it is not the alternate setting number defined in the
+interface descriptor.
+.Pp
+The function
+.Fn usbd_find_edesc
+locates an endpoint descriptor within a full configuration descriptor.
+The
+.Fa ifaceidx
+and
+.Fa altidx
+parameters are the same as described for
+.Fn usbd_find_idesc ,
+and the
+.Fa endptidx
+parameter is an endpoint index number that should be less than the
+.Fa bNumEndpoints
+field in the interface descriptor.
+The return value is a pointer to the requested endpoint descriptor
+within the full configuration descriptor, or
+.Dv NULL
+if the specified endpoint descriptor does not exist.
+Note that the
+.Fa altidx
+and
+.Fa endptidx
+parameters are index numbers starting at zero; they are not the
+alternate setting and endpoint address defined in the descriptors.
+.Pp
+The
+.Fn usbd_get_speed
+function returns the device speed.
+This can be
+.Dv USB_SPEED_LOW ,
+.Dv USB_SPEED_FULL
+or
+.Dv USB_SPEED_HIGH .
+.Pp
+USB devices optionally support string descriptors, which can be
+retrieved using the
+.Fn usbd_get_string
+or
+.Fn usbd_get_string_desc
+functions.
+Device, configuration and interface descriptors reference strings by
+an index number that can be supplied to these functions.
+The
+.Fn usbd_get_string
+function should be used unless a non-default language is required.
+It requires that
+.Fa buf
+points to a buffer of at least
+.Dv USB_MAX_STRING_LEN
+bytes in size.
+The
+.Fa si
+parameter specified which string to retrieve.
+.Pp
+The
+.Fn usb_find_desc
+function searches through the in-memory full configuration descriptor
+for the active configuration and finds the first descriptor that has a
+.Fa bDescriptorType
+equal to
+.Fa type ,
+and if
+.Fa subtype
+is not equal to
+.Dv USBD_SUBTYPE_ANY ,
+the descriptor must also have a
+.Fa bDescriptorSubtype
+equal to
+.Fa subtype .
+If found, then a pointer to the descriptor is returned.
+Otherwise,
+.Fn usb_find_desc
+returns
+.Dv NULL .
+The returned pointer is valid until the device configuration is changed using
+.Fn usbd_set_config_index
+or
+.Fn usbd_set_config_no .
+.Pp
+The USB driver interface uses opaque interface handles to refer to
+configuration interfaces.
+These handles remain valid until the device configuration is changed using
+.Fn usbd_set_config_index
+or
+.Fn usbd_set_config_no .
+The
+.Fn usbd_device2interface_handle
+function retrieves an interface handle.
+The
+.Fa ifaceno
+parameter is an interface index number starting at zero.
+If the device is configured and the specified interface exists, then
+.Dv USBD_NORMAL_COMPLETION
+is returned and the interface handle is stored in
+.Fa *iface .
+Otherwise an error code is returned and
+.Fa *iface
+is not changed.
+The
+.Fn usbd_interface2device_handle
+function retrieves the device handle from an interface handle.
+This is just for convenience to save passing around the device
+handle as well as the interface handle.
+The
+.Fn usbd_set_interface
+function changes the alternate setting number for an interface to
+the alternate setting identified by the zero-based index number
+.Fa altidx .
+This operation invalidates any existing endpoints on this
+interface and their descriptors.
+The
+.Fn usbd_get_interface_altindex
+function returns the current alternative setting index as was
+specified when calling
+.Fn usbd_set_interface .
+The
+.Fn usbd_endpoint_count
+function retrieves the number of endpoints associated with the
+specified interface.
+The
+.Fn usbd_interface2endpoint_descriptor
+function returns a pointer to an in-memory endpoint descriptor for
+the endpoint that has an index number of
+.Fa index .
+This pointer remains valid until the configuration or alternate setting
+number are changed.
+The function
+.Fn usbd_get_endpoint_descriptor
+is like
+.Fn usbd_interface2endpoint_descriptor
+but it accepts a
+.Fa bEndpointAddress
+address value instead of an index.
+.Pp
+The
+.Fn usbd_fill_deviceinfo
+function fills out a
+.Vt usb_device_info
+structure with information about the device.
+The vendor and product names come from the device itself, falling back to
+a table lookup or just providing the IDs in hexadecimal.
+If
+.Fa usedev
+is zero then
+.Fn usbd_fill_deviceinfo
+will not attempt to retrieve the vendor and product names from the
+device.
+The usb_device_info structure is defined in
+.In dev/usb/usb.h
+as follows:
+.Bd -literal
+struct usb_device_info {
+ u_int8_t udi_bus;
+ u_int8_t udi_addr; /* device address */
+ usb_event_cookie_t udi_cookie;
+ char udi_product[USB_MAX_STRING_LEN];
+ char udi_vendor[USB_MAX_STRING_LEN];
+ char udi_release[8];
+ u_int16_t udi_productNo;
+ u_int16_t udi_vendorNo;
+ u_int16_t udi_releaseNo;
+ u_int8_t udi_class;
+ u_int8_t udi_subclass;
+ u_int8_t udi_protocol;
+ u_int8_t udi_config;
+ u_int8_t udi_speed;
+#define USB_SPEED_LOW 1
+#define USB_SPEED_FULL 2
+#define USB_SPEED_HIGH 3
+ int udi_power; /* power consumption in mA */
+ int udi_nports;
+ char udi_devnames[USB_MAX_DEVNAMES][USB_MAX_DEVNAMELEN];
+ /* hub only: addresses of devices on ports */
+ u_int8_t udi_ports[16];
+#define USB_PORT_ENABLED 0xff
+#define USB_PORT_SUSPENDED 0xfe
+#define USB_PORT_POWERED 0xfd
+}
+.Ed
+.Pp
+The
+.Fn usbd_devinfo
+function generates a string description of the USB device.
+The
+.Fa cp
+argument should point to a 1024-byte buffer (XXX the maximum length
+is approximately 320 chars, but there is no sanity checking and everything uses
+1024-character buffers).
+Device class information is included if the
+.Fa showclass
+parameter is non-zero.
+.Pp
+The
+.Fn usbd_get_quirks
+function returns information from a table of devices that require
+special workarounds in order to function correctly.
+The returned structure is defined in
+.In dev/usb/usb_quirks.h
+as follows:
+.Bd -literal
+struct usbd_quirks {
+ u_int32_t uq_flags; /* Device problems */
+};
+.Ed
+.Pp
+See
+.In dev/usb/usb_quirks.h
+for a list of all currently defined quirks.
+.Pp
+USB control requests are performed via
+.Vt usb_device_request_t
+structures, defined in
+.In dev/usb/usb.h
+as follows:
+.Bd -literal
+typedef struct {
+ uByte bmRequestType;
+ uByte bRequest;
+ uWord wValue;
+ uWord wIndex;
+ uWord wLength;
+} UPACKED usb_device_request_t;
+.Ed
+.Pp
+The
+.Fn usbd_do_request
+function performs a single request synchronously.
+The
+.Fa req
+parameter should point to a properly initialized
+.Vt usb_device_request_t ,
+and when the
+.Fa wLength
+field is non-zero,
+.Fa data
+should point at a buffer that is at least
+.Fa wLength
+bytes in length.
+The request timeout is set to 5 seconds, so the operation will fail
+with
+.Er USBD_TIMEOUT
+if the device does not respond within that time.
+The
+.Fn usbd_do_request_async
+function is like
+.Fn usbd_do_request ,
+but it does not wait for the request to complete before returning.
+This routine does not block so it can be used from contexts where
+sleeping is not allowed.
+Note that there is no notification mechanism to report when the
+operation completed nor is there a way to determine whether the
+request succeeded, so this function is of limited use.
+See
+.Fn usbd_setup_default_xfer
+and
+.Fn usbd_transfer
+for a way to invoke an asynchronous callback upon completion of
+a control request.
+The
+.Fn usbd_do_request_flags
+function is like
+.Fn usbd_do_request ,
+but additional flags can be specified, the timeout is configurable,
+and the actual number of bytes transferred is made available to the
+caller.
+The
+.Fn usbd_do_request_flags_pipe
+function uses a specified pipe instead of the default pipe.
+.Pp
+The function
+.Fn usbd_open_pipe
+creates a pipe connected to a specified endpoint on a specified interface.
+The parameter
+.Fa address
+should be the
+.Fa bEndpointAddress
+value from one of this interface's endpoint descriptors.
+If
+.Fa flags
+contains
+.Dv USBD_EXCLUSIVE_USE
+then the operation will only succeed if there are no open pipes
+already connected to the specified endpoint.
+The
+.Fn usbd_open_pipe_intr
+function creates an interrupt pipe connected to the specified endpoint.
+The parameter
+.Fa address
+should be the
+.Fa bEndpointAddress
+value from one of this interface's endpoint descriptors.
+The
+.Fa flags
+parameter is passed to
+.Fn usbd_setup_xfer .
+The
+.Fa buffer
+and
+.Fa len
+parameters define a buffer that is to be used for the interrupt transfers.
+The callback to be invoked each time a transfer completes is specified by
+.Fa cb ,
+and
+.Fa priv
+is an argument to be passed to the callback function.
+The
+.Fa ival
+parameter specifies the maximum acceptable interval between transfers;
+in practice the transfers may occur more frequently.
+The function
+.Fn usbd_pipe2device_handle
+returns the device associated with the specified
+.Fa pipe .
+.Pp
+The
+.Fn usbd_abort_pipe
+function aborts all active or waiting transfers on the specified pipe.
+Each transfer is aborted with a
+.Dv USBD_CANCELLED
+status; callback routines must detect this error code to ensure that
+they do not attempt to initiate a new transfer in response to one being
+aborted.
+This routine blocks while it is waiting for the hardware to complete
+processing of aborted transfers, so it is only safe to call it in
+contexts where sleeping is allowed.
+The function
+.Fn usbd_abort_default_pipe
+aborts all active or waiting transfers on the default pipe.
+Like
+.Fn usbd_abort_pipe ,
+it blocks waiting for the hardware processing to complete.
+.Pp
+When a pipe has no active or waiting transfers, the pipe may be closed
+using the
+.Fn usbd_close_pipe
+function.
+Once a pipe is closed, its pipe handle becomes invalid and may no longer
+be used.
+.Pp
+USB transfer handles are allocated using the function
+.Fn usbd_alloc_xfer
+and may be freed using
+.Fn usbd_free_xfer .
+.Pp
+The function
+.Fn usbd_setup_xfer
+initializes a transfer handle with the details of a transfer to or from
+a USB device.
+The
+.Fa xfer
+parameter specifies the transfer handle to initialize,
+.Fa pipe
+specifies the pipe on which the transfer is to take place, and
+.Fa priv
+is an argument that will be passed to callback function.
+The arguments
+.Fa buffer
+and
+.Fa length
+define the data buffer for the transfer.
+If
+.Fa length
+is zero then the
+.Fa buffer
+may be
+.Dv NULL .
+The
+.Fa flags
+parameter may contain the following flags:
+.Bl -tag -width ".Dv USBD_FORCE_SHORT_XFER"
+.It Dv USBD_NO_COPY
+This is used in association with
+.Fn usbd_alloc_buffer
+and
+.Fn usbd_free_buffer
+to use a dedicated DMA-capable buffer for the transfer.
+.It Dv USBD_SYNCHRONOUS
+Wait for the transfer to compete in
+.Fn usbd_transfer .
+.It Dv USBD_SHORT_XFER_OK
+Permit transfers shorter than the requested data length.
+.It Dv USBD_FORCE_SHORT_XFER
+Force a short transfer at the end of a write operation to let the
+device know that the transfer has ended.
+.El
+.Pp
+The
+.Fa timeout
+parameter specifies a timeout for the transfer in milliseconds.
+A value of
+.Dv USBD_NO_TIMEOUT
+indicates that no timeout should be configured.
+The parameter
+.Fa callback
+specifies the function to call when the transfer completes.
+Note that
+.Fn usbd_setup_xfer
+does not actually initiate the transfer.
+The
+.Fn usbd_setup_default_xfer
+initializes a control transfer for the default pipe.
+The
+.Fa req
+parameter should point at a completed
+.Vt usb_device_request_t
+structure.
+The function
+.Fa usbd_setup_isoc_xfer
+initializes a transfer for an isochronous pipe.
+.Pp
+The function
+.Fn usbd_transfer
+initiates a transfer.
+Normally it returns
+.Dv USBD_IN_PROGRESS
+to indicate that the transfer has been queued.
+If the USB stack is operating in polling mode, or if the transfer
+is synchronous, then
+.Dv USBD_NORMAL_COMPLETION
+may be returned.
+Other return values indicate that the transfer could not be
+initiated due to an error.
+The
+.Fn usbd_sync_transfer
+function executes a transfer synchronously.
+It will sleep waiting for the transfer to complete and then return
+the transfer status.
+Note that if the transfer has a callback routine, this will be
+invoked before
+.Fn usbd_sync_transfer
+returns.
+.Pp
+The
+.Fn usbd_intr_transfer
+and
+.Fn usbd_bulk_transfer
+functions set up a transfer and wait synchronously for it to complete
+but they allows signals to interrupt the wait.
+They returns
+.Dv USBD_INTERRUPTED
+if the transfer was interrupted by a signal.
+XXX these two functions are identical apart from their names.
+.Pp
+The function
+.Fn usbd_get_xfer_status
+retrieves various information from a completed transfer.
+If the
+.Fa priv
+parameter is not NULL then the callback private argument is
+stored in
+.Fa *priv .
+If
+.Fa buffer
+is not NULL then the transfer buffer pointer is stored in
+.Fa *buffer .
+The actual number of bytes transferred is stored in
+.Fa *count
+if
+.Fa count is not NULL.
+Finally, the transfer status is stored in
+.Fa *status
+if
+.Fa status
+is not NULL.
+.Pp
+The
+.Fn usbd_clear_endpoint_stall
+function clears an endpoint stall condition synchronously, i.e.\&
+it sleeps waiting for the stall clear request to complete.
+The function
+.Fn usbd_clear_endpoint_stall_async
+performs the same function asynchronously, but it provides no
+way to determine when the request completed, or whether it was
+successful.
+The
+.Fn usbd_clear_endpoint_toggle
+function instructs the host controller driver to reset the toggle bit
+on a pipe.
+This is used when manually clearing an endpoint stall using a
+control pipe request, in order to ensure that the host controller
+driver and the USB device restart with the same toggle value.
+.Pp
+Normally the USB subsystem maps and copies data to and from
+DMA-capable memory each time a transfer is performed.
+The function
+.Fn usbd_alloc_buffer
+allocates a permanent DMA-capable buffer associated with the
+transfer to avoid this overhead.
+The return value is the virtual address of the buffer.
+Any time that
+.Fn usbd_setup_xfer
+is called on the transfer with the
+.Dv USBD_NO_COPY
+flag enabled, the allocated buffer will be used directly and
+the
+.Fa buffer
+argument passed to
+.Fn usbd_setup_xfer
+will be ignored.
+The
+.Fn usbd_get_buffer
+function returns a pointer to the virtual address of a buffer previously
+allocated by
+.Fn usbd_alloc_buffer .
+Finally,
+.Fn usbd_free_buffer
+deallocates the buffer.
+.Pp
+The
+.Fn usbd_errstr
+function converts a status code into a string for display.
+.Pp
+The function
+.Fn usbd_set_polling
+enables or disables polling mode.
+In polling mode, all operations will busy-wait for the device to
+respond, so its use is effectively limited to boot time and kernel
+debuggers.
+It is important to match up calls that enable and disable polling
+mode, because the implementation just increments a polling reference
+count when
+.Fa on
+is non-zero and decrements it when
+.Fa on
+is zero.
+The
+.Fn usbd_dopoll
+causes the host controller driver to poll for any activity.
+This should only be used when polling mode is enabled.
+.Pp
+The
+.Fn usbd_ratecheck
+function is used to limit the rate at which error messages are
+printed to approximately once per second.
+The
+.Fa last
+argument should point at a persistent
+.Vt "struct timeval" .
+A value of 1 will be returned if a message should be printed, but if
+.Fn usbd_ratecheck
+has already been called with the same
+.Vt "struct timeval"
+parameter in the last second then 0 is returned and the error message
+should be suppressed.
+.Pp
+The functions
+.Fn usb_detach_wait
+and
+.Fn usb_detach_wakeup
+are used to wait for references to drain before completing the
+detachment of a device.
+The
+.Fn usb_detach_wait
+function will wait up to 60 seconds to receive a signal from
+.Fn usb_detach_wait .
+.Ss "USB Descriptors"
+The USB specification defines a number of standard descriptors by
+which USB devices report their attributes.
+These descriptors are fixed-format structures that all USB devices
+make available through USB control pipe requests.
+.Pp
+Every USB device has exactly one USB device descriptor.
+The USB subsystem retrieves this automatically when a device is
+attached, and a copy of the descriptor is kept in memory.
+The
+.Fn usbd_get_device_descriptor
+function returns a pointer to the descriptor.
+The device descriptor structure is defined in
+.In dev/usb/usb.h
+as follows:
+.Bd -literal
+typedef struct {
+ uByte bLength;
+ uByte bDescriptorType;
+ uWord bcdUSB;
+#define UD_USB_2_0 0x0200
+#define UD_IS_USB2(d) (UGETW((d)->bcdUSB) >= UD_USB_2_0)
+ uByte bDeviceClass;
+ uByte bDeviceSubClass;
+ uByte bDeviceProtocol;
+ uByte bMaxPacketSize;
+ /* The fields below are not part of the initial descriptor. */
+ uWord idVendor;
+ uWord idProduct;
+ uWord bcdDevice;
+ uByte iManufacturer;
+ uByte iProduct;
+ uByte iSerialNumber;
+ uByte bNumConfigurations;
+} UPACKED usb_device_descriptor_t;
+#define USB_DEVICE_DESCRIPTOR_SIZE 18
+.Ed
+.Pp
+USB devices have at least one configuration descriptor.
+The
+.Fa bNumConfigurations
+field of the device descriptor specifies the number of configuration
+descriptors that a device supports.
+The
+.Fn usbd_get_config_desc
+function retrieves a particular configuration descriptor from the device
+and the
+.Fn usbd_get_config_desc_full
+function retrieves a full
+.Fa wTotalLength
+length configuration descriptor, which includes all related interface
+and endpoint descriptors.
+Only one configuration may be active at a time.
+The
+.Fn usbd_set_config_index
+function activates a specified configuration.
+The configuration descriptor structure is defined in
+.In dev/usb/usb.h
+as follows:
+.Bd -literal
+typedef struct {
+ uByte bLength;
+ uByte bDescriptorType;
+ uWord wTotalLength;
+ uByte bNumInterface;
+ uByte bConfigurationValue;
+ uByte iConfiguration;
+ uByte bmAttributes;
+#define UC_BUS_POWERED 0x80
+#define UC_SELF_POWERED 0x40
+#define UC_REMOTE_WAKEUP 0x20
+ uByte bMaxPower; /* max current in 2 mA units */
+#define UC_POWER_FACTOR 2
+} UPACKED usb_config_descriptor_t;
+#define USB_CONFIG_DESCRIPTOR_SIZE 9
+.Ed
+.Pp
+Each device configuration provides one or more interfaces.
+The
+.Fa bNumInterface
+field of the configuration descriptor specifies the number of
+interfaces associated with a device configuration.
+Interfaces are described by an interface descriptor, which is defined in
+.In dev/usb/usb.h
+as follows:
+.Bd -literal
+typedef struct {
+ uByte bLength;
+ uByte bDescriptorType;
+ uByte bInterfaceNumber;
+ uByte bAlternateSetting;
+ uByte bNumEndpoints;
+ uByte bInterfaceClass;
+ uByte bInterfaceSubClass;
+ uByte bInterfaceProtocol;
+ uByte iInterface;
+} UPACKED usb_interface_descriptor_t;
+#define USB_INTERFACE_DESCRIPTOR_SIZE 9
+.Ed
+.Pp
+Configurations may also have alternate interfaces with the same
+.Fa bInterfaceNumber
+but different
+.Fa bAlternateSetting
+values.
+These alternate interface settings may be selected by passing a
+non-zero
+.Fa altidx
+parameter to
+.Fn usbd_set_interface .
+.Pp
+Interfaces have zero or more endpoints, and each endpoint has an
+endpoint descriptor.
+Note that endpoint zero, which is always present, does not have an
+endpoint descriptor, and it is never included in the
+.Fa bNumEndpoints
+count of endpoints.
+The endpoint descriptor is defined in
+.In dev/usb/usb.h
+as follows:
+.Bd -literal
+typedef struct {
+ uByte bLength;
+ uByte bDescriptorType;
+ uByte bEndpointAddress;
+#define UE_GET_DIR(a) ((a) & 0x80)
+#define UE_SET_DIR(a,d) ((a) | (((d)&1) << 7))
+#define UE_DIR_IN 0x80
+#define UE_DIR_OUT 0x00
+#define UE_ADDR 0x0f
+#define UE_GET_ADDR(a) ((a) & UE_ADDR)
+ uByte bmAttributes;
+#define UE_XFERTYPE 0x03
+#define UE_CONTROL 0x00
+#define UE_ISOCHRONOUS 0x01
+#define UE_BULK 0x02
+#define UE_INTERRUPT 0x03
+#define UE_GET_XFERTYPE(a) ((a) & UE_XFERTYPE)
+#define UE_ISO_TYPE 0x0c
+#define UE_ISO_ASYNC 0x04
+#define UE_ISO_ADAPT 0x08
+#define UE_ISO_SYNC 0x0c
+#define UE_GET_ISO_TYPE(a) ((a) & UE_ISO_TYPE)
+ uWord wMaxPacketSize;
+ uByte bInterval;
+} UPACKED usb_endpoint_descriptor_t;
+#define USB_ENDPOINT_DESCRIPTOR_SIZE 7
+.Ed
+.Sh RETURN VALUES
+Many functions return a
+.Vt usbd_status
+type to indicate the outcome of the operation.
+If the operation completed successfully then
+.Dv USBD_NORMAL_COMPLETION
+is returned.
+Operations that have been started but not yet completed will return
+.Dv USBD_IN_PROGRESS .
+Other errors usually indicate a problem.
+Error codes can be converted to strings using
+.Fn usbd_errstr .
+.Sh ERRORS
+.Bl -tag -width ".Er USBD_PENDING_REQUESTS"
+.It Bq Er USBD_PENDING_REQUESTS
+A pipe could not be closed because there are active requests.
+.It Bq Er USBD_NOT_STARTED
+The transfer has not yet been started.
+.It Bq Er USBD_INVAL
+An invalid value was supplied.
+.It Bq Er USBD_NOMEM
+An attempt to allocate memory failed.
+.It Bq Er USBD_CANCELLED
+The transfer was aborted.
+.It Bq Er USBD_BAD_ADDRESS
+The specified endpoint address was not found.
+.It Bq Er USBD_IN_USE
+The endpoint is already in use, or the configuration cannot be changed
+because some of its endpoints are in use.
+.It Bq Er USBD_NO_ADDR
+No free USB devices addresses were found to assign to the device.
+.It Bq Er USBD_SET_ADDR_FAILED
+The device address could not be set.
+.It Bq Er USBD_NO_POWER
+Insufficient power was available for the device.
+.It Bq Er USBD_TOO_DEEP
+Too many levels of chained hubs were found.
+.It Bq Er USBD_IOERROR
+There was an error communicating with the device.
+.It Bq Er USBD_NOT_CONFIGURED
+An operation that requires an active configuration was attempted while
+the device was in an unconfigured state.
+.It Bq Er USBD_TIMEOUT
+A transfer timed out.
+.It Bq Er USBD_SHORT_XFER
+A transfer that disallowed short data lengths completed with less than
+the requested length transferred.
+.It Bq Er USBD_STALLED
+A transfer failed because the pipe is stalled.
+.It Bq Er USBD_INTERRUPTED
+An interruptible operation caught a signal.
+.El
+.Sh SEE ALSO
+.Xr usb 4
+.Sh HISTORY
+The USB driver interface first appeared in
+.Fx 3.0 .
+.Sh AUTHORS
+The USB driver was written by
+.An Lennart Augustsson
+for the
+.Nx
+project.
+.Pp
+.An -nosplit
+This manual page was written by
+.An Ian Dowse Aq iedowse@FreeBSD.org .
diff --git a/share/man/man9/utopia.9 b/share/man/man9/utopia.9
new file mode 100644
index 0000000..a7d02c1
--- /dev/null
+++ b/share/man/man9/utopia.9
@@ -0,0 +1,353 @@
+.\" Copyright (c) 2003
+.\" Fraunhofer Institute for Open Communication Systems (FhG Fokus).
+.\" 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.
+.\"
+.\" Author: Hartmut Brandt <harti@FreeBSD.org>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd May 8, 2003
+.Dt UTOPIA 9
+.Os
+.Sh NAME
+.Nm utopia
+.Nd "driver module for ATM PHY chips"
+.Sh SYNOPSIS
+.In dev/utopia/utopia.h
+.Ft int
+.Fo utopia_attach
+.Fa "struct utopia *utp" "struct ifatm *ifatm" "struct ifmedia *media"
+.Fa "struct mtx *lock" "struct sysctl_ctx_list *ctx"
+.Fa "struct sysctl_oid_list *tree" "const struct utopia_methods *vtab"
+.Fc
+.Ft void
+.Fn utopia_detach "struct utopia *utp"
+.Ft int
+.Fn utopia_start "struct utopia *utp"
+.Ft void
+.Fn utopia_stop "struct utopia *utp"
+.Ft void
+.Fn utopia_init_media "struct utopia *utp"
+.Ft void
+.Fn utopia_reset_media "struct utopia *utp"
+.Ft int
+.Fn utopia_reset "struct utopia *utp"
+.Ft int
+.Fn utopia_set_sdh "struct utopia *utp" "int sdh"
+.Ft int
+.Fn utopia_set_unass "struct utopia *utp" "int unass"
+.Ft int
+.Fn utopia_set_noscramb "struct utopia *utp" "int noscramb"
+.Ft int
+.Fn utopia_update_carrier "struct utopia *utp"
+.Ft int
+.Fn utopia_set_loopback "struct utopia *utp" "u_int mode"
+.Ft void
+.Fn utopia_intr "struct utopia *utp"
+.Ft void
+.Fn utopia_update_stats "struct utopia *utp"
+.Sh DESCRIPTION
+This module is used by all ATM drivers for cards that use a number of known
+PHY chips to provide uniform functionality.
+The module implements status monitoring in either interrupt or polling mode,
+media option handling and application access to PHY registers.
+.Pp
+To use this interface, a driver must implement two functions for reading and
+writing PHY registers, and initialize the following structure with pointers
+to these functions:
+.Bd -literal -offset indent
+struct utopia_methods {
+ int (*readregs)(struct ifatm *, u_int reg,
+ uint8_t *val, u_int *n);
+ int (*writereg)(struct ifatm *, u_int reg,
+ u_int mask, u_int val);
+};
+.Ed
+.Pp
+The
+.Fn readregs
+function should read PHY registers starting at register
+.Fa reg .
+The maximum number of registers to read is given by the integer pointed
+to by
+.Fa n .
+The function should either return 0 on success, or an error code.
+In the first case,
+.Fa *n
+should be set to the actual number of registers read.
+The
+.Fn writereg
+function should write one register.
+It must change all bits for which the corresponding bit in
+.Fa mask
+is 1 to the value of the corresponding bit in
+.Fa val .
+It returns either 0 on success, or an error code.
+.Pp
+The ATM driver's private state block
+.Pq Va softc
+must begin with a
+.Vt "struct ifatm" .
+.Pp
+The
+.Vt "struct utopia"
+holds the current state of the PHY chip and contains the following fields:
+.Bd -literal -offset indent
+struct utopia {
+ struct ifatm *ifatm; /* driver data */
+ struct ifmedia *media; /* driver supplied */
+ struct mtx *lock; /* driver supplied */
+ const struct utopia_methods *methods;
+ LIST_ENTRY(utopia) link; /* list of these structures */
+ u_int flags; /* flags set by the driver */
+ u_int state; /* current state */
+ u_int carrier; /* carrier state */
+ u_int loopback; /* loopback mode */
+ const struct utopia_chip *chip; /* chip operations */
+ struct utopia_stats1 stats; /* statistics */
+};
+.Ed
+The public accessible fields have the following functions:
+.Bl -tag -width indent
+.It Va ifatm
+Pointer to the driver's private data
+.Pq Va softc .
+.It Va media
+Pointer to the driver's media structure.
+.It Va lock
+Pointer to a mutex provided by the driver.
+This mutex is used to synchronize
+with the kernel thread that handles device polling.
+It is locked in several
+places:
+.Bl -enum -offset indent
+.It
+In
+.Fn utopia_detach
+the mutex is locked to sleep and wait for the kernel thread to remove the
+.Vt "struct utopia"
+from the list of all
+.Nm
+devices.
+Before returning to the caller the mutex is unlocked.
+.It
+In the
+.Nm
+kernel thread the mutex is locked, and the
+.Fn utopia_carrier_update
+function is called with this mutex locked.
+This will result in the driver's
+.Fn readregs
+function being called with the mutex locked.
+.It
+In the sysctl handlers the mutex will be locked before calling into the driver's
+.Fn readreg
+or
+.Fn writereg
+functions.
+.El
+.It Va flags
+Flags set by either the driver or the
+.Nm
+module.
+The following flags are
+defined:
+.Bl -tag -width indent
+.It Dv UTP_FL_NORESET
+If this flag is set, the module will not try to write the
+SUNI master reset register.
+(Set by the driver.)
+.It Dv UTP_FL_POLL_CARRIER
+If this flag is set, the module will periodically poll the carrier state
+(as opposed to interrupt driven carrier state changes).
+(Set by the driver.)
+.El
+.It Va state
+Flags describing the current state of the PHY chip.
+These are managed
+by the module:
+.Bl -tag -width indent
+.It Dv UTP_ST_ACTIVE
+The driver is active and the PHY registers can be accessed.
+This is set by calling
+.Fn utopia_start ,
+which should be called either in the attach routine of the driver or
+in the network interface initialisation routine (depending on whether the
+registers are accessible all the time or only when the interface is up).
+.It Dv UTP_ST_SDH
+Interface is in SDH mode as opposed to SONET mode.
+.It Dv UTP_ST_UNASS
+Interface is producing unassigned cells instead of idle cells.
+.It Dv UTP_ST_NOSCRAMB
+Cell scrambling is switched off.
+.It Dv UTP_ST_DETACH
+(Internal use.)
+Interface is currently detaching.
+.It Dv UTP_ST_ATTACHED
+The attach routine has been run successfully.
+.El
+.It Va carrier
+The carrier state of the interface.
+This field can have one of three values:
+.Bl -tag -width indent
+.It Dv UTP_CARR_UNKNOWN
+Carrier state is still unknown.
+.It Dv UTP_CARR_OK
+Carrier has been detected.
+.It Dv UTP_CARR_LOST
+Carrier has been lost.
+.El
+.It Va loopback
+This is the current loopback mode of the interface.
+Note that not all
+chips support all loopback modes.
+Refer to the chip documentation.
+The
+following modes may be supported:
+.Bl -tag -width indent
+.It Dv UTP_LOOP_NONE
+No loopback, normal operation.
+.It Dv UTP_LOOP_TIME
+Timing source loopback.
+The transmitter clock is driven by the receive clock.
+.It Dv UTP_LOOP_DIAG
+Diagnostic loopback.
+.It Dv UTP_LOOP_LINE
+Serial line loopback.
+.It Dv UTP_LOOP_PARAL
+Parallel diagnostic loopback.
+.It Dv UTP_LOOP_TWIST
+Twisted pair diagnostic loopback.
+.It Dv UTP_LOOP_PATH
+Diagnostic path loopback.
+.El
+.It Va chip
+This points to a function vector for chip specific functions.
+Two fields
+in this vector are publicly available:
+.Bl -tag -width indent
+.It Va type
+This is the type of the detected PHY chip.
+One of:
+.Pp
+.Bl -tag -width indent -compact
+.It Dv UTP_TYPE_UNKNOWN Pq No 0
+.It Dv UTP_TYPE_SUNI_LITE Pq No 1
+.It Dv UTP_TYPE_SUNI_ULTRA Pq No 2
+.It Dv UTP_TYPE_SUNI_622 Pq No 3
+.It Dv UTP_TYPE_IDT77105 Pq No 4
+.El
+.It Va name
+This is a string with the name of the PHY chip.
+.El
+.El
+.Pp
+The following functions are used by the driver during attach/detach and/or
+initialisation/stopping the interface:
+.Bl -tag -width indent
+.It Fn utopia_attach
+Attach the PHY chip.
+This is called with a preallocated
+.Vt "struct utopia"
+(which may be part of the driver's
+.Va softc ) .
+The module initializes all fields of the
+.Nm
+state and the media field.
+User settable flags should be set after the call to
+.Fn utopia_attach .
+This function may fail due to the inability to install the sysctl handlers.
+In this case it will return \-1.
+On success, 0 is returned and the
+.Dv UTP_ST_ATTACHED
+flag is set.
+.It Fn utopia_detach
+Remove the
+.Nm
+attachment from the system.
+This cancels all outstanding polling
+timeouts.
+.It Fn utopia_start
+Start operation of that PHY.
+This should be called at a time
+when the PHY registers are known to be accessible.
+This may be either in
+the driver's attach function or when the interface is set running.
+.It Fn utopia_stop
+Stop operation of the PHY attachment.
+This may be called either in the detach
+function of the driver or when the interface is brought down.
+.It Fn utopia_init_media
+This must be called if the media field in the ATM MIB was changed.
+The function
+makes sure, that the ifmedia fields contain the same information as the
+ATM MIB.
+.It Fn utopia_reset_media
+This may be called to remove all media information from the ifmedia field.
+.El
+.Pp
+The following functions can be used to modify the PHY state while the interface
+is running:
+.Bl -tag -width indent
+.It Fn utopia_reset
+Reset the operational parameters to the default state (SONET, idle cells,
+scrambling enabled).
+Returns 0 on success, an error code otherwise, leaving
+the state undefined.
+.It Fn utopia_set_sdh
+If the argument is zero the chip is switched to Sonet mode, if it is non-zero
+the chip is switched to SDH mode.
+Returns 0 on success, an error code otherwise,
+leaving the previous state.
+.It Fn utopia_set_unass
+If the argument is zero the chip is switched to produce idle cells, if it is
+non-zero the chip is switched to produce unassigned cells.
+Returns 0 on success,
+an error code otherwise, leaving the previous state.
+.It Fn utopia_set_noscramb
+If the argument is zero enables scrambling, if it is
+non-zero disables scrambling.
+Returns 0 on success,
+an error code otherwise, leaving the previous state.
+.It Fn utopia_update_carrier
+Check the carrier state and update the carrier field in the state structure.
+This will generate a message to the Netgraph stack if the carrier state changes.
+For chips that are polled this is called automatically, for interrupt
+driven attachments this must be called on interrupts from the PHY chip.
+.It Fn utopia_set_loopback
+Set the loopback mode of the chip.
+Returns 0 on success, an error code
+otherwise, leaving the previous state.
+.It Fn utopia_intr
+Called when an interrupt from the PHY chip is detected.
+This resets the
+interrupt state by reading all registers and, if the interrupt was from the
+RSOP, checks the carrier state.
+.It Fn utopia_update_stats
+Update the statistics with counters read from the chip.
+.El
+.Sh SEE ALSO
+.Xr utopia 4
+.Sh AUTHORS
+.An Harti Brandt Aq harti@FreeBSD.org
diff --git a/share/man/man9/vaccess.9 b/share/man/man9/vaccess.9
new file mode 100644
index 0000000..5315d98
--- /dev/null
+++ b/share/man/man9/vaccess.9
@@ -0,0 +1,127 @@
+.\"-
+.\" 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$
+.\"
+.Dd August 22, 2001
+.Os
+.Dt VACCESS 9
+.Sh NAME
+.Nm vaccess
+.Nd generate an access control decision using vnode parameters
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fo vaccess
+.Fa "enum vtype type"
+.Fa "mode_t file_mode"
+.Fa "uid_t file_uid"
+.Fa "gid_t file_gid"
+.Fa "accmode_t accmode"
+.Fa "struct ucred *cred"
+.Fa "int *privused"
+.Fc
+.Sh DESCRIPTION
+This call implements the logic for the
+.Ux
+discretionary file security model
+common to many file systems in
+.Fx .
+It accepts the vnodes type
+.Fa type ,
+permissions via
+.Fa file_mode ,
+owning UID
+.Fa file_uid ,
+owning GID
+.Fa file_gid ,
+desired access mode
+.Fa accmode ,
+requesting credential
+.Fa cred ,
+and an optional call-by-reference
+.Vt int
+pointer returning whether or not
+privilege was required for successful evaluation of the call; the
+.Fa privused
+pointer may be set to
+.Dv NULL
+by the caller in order not to be informed of
+privilege information, or it may point to an integer that will be set to
+1 if privilege is used, and 0 otherwise.
+.Pp
+This call is intended to support implementations of
+.Xr VOP_ACCESS 9 ,
+which will use their own access methods to retrieve the vnode properties,
+and then invoke
+.Fn vaccess
+in order to perform the actual check.
+Implementations of
+.Xr VOP_ACCESS 9
+may choose to implement additional security mechanisms whose results will
+be composed with the return value.
+.Pp
+The algorithm used by
+.Fn vaccess
+selects a component of the file permission bits based on comparing the
+passed credential, file owner, and file group.
+If the credential's effective UID matches the file owner, then the
+owner component of the permission bits is selected.
+If the UID does not match, then the credential's effective GID, followed
+by additional groups, are compared with the file group\[em]if there is
+a match, then the group component of the permission bits is selected.
+If neither the credential UID or GIDs match the passed file owner and
+group, then the other component of the permission bits is selected.
+.Pp
+Once appropriate protections are selected for the current credential,
+the requested access mode, in combination with the vnode type, will be
+compared with the discretionary rights available for the credential.
+If the rights granted by discretionary protections are insufficient,
+then super-user privilege, if available for the credential, will also be
+considered.
+.Sh RETURN VALUES
+.Fn vaccess
+will return 0 on success, or a non-zero error value on failure.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EACCES
+Permission denied.
+An attempt was made to access a file in a way forbidden by its file access
+permissions.
+.It Bq Er EPERM
+Operation not permitted.
+An attempt was made to perform an operation limited to processes with
+appropriate privileges or to the owner of a file or other resource.
+.El
+.Sh SEE ALSO
+.Xr vaccess_acl_posix1e 9 ,
+.Xr vnode 9 ,
+.Xr VOP_ACCESS 9
+.Sh AUTHORS
+This manual page and the current implementation of
+.Fn vaccess
+were written by
+.An Robert Watson .
diff --git a/share/man/man9/vaccess_acl_posix1e.9 b/share/man/man9/vaccess_acl_posix1e.9
new file mode 100644
index 0000000..0610511
--- /dev/null
+++ b/share/man/man9/vaccess_acl_posix1e.9
@@ -0,0 +1,128 @@
+.\"-
+.\" 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$
+.\"
+.Dd August 22, 2001
+.Os
+.Dt VACCESS_ACL_POSIX1E 9
+.Sh NAME
+.Nm vaccess_acl_posix1e
+.Nd generate a POSIX.1e ACL access control decision using vnode parameters
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.In sys/acl.h
+.Ft int
+.Fo vaccess_acl_posix1e
+.Fa "enum vtype type"
+.Fa "uid_t file_uid"
+.Fa "gid_t file_gid"
+.Fa "struct acl *acl"
+.Fa "accmode_t accmode"
+.Fa "struct ucred *cred"
+.Fa "int *privused"
+.Fc
+.Sh DESCRIPTION
+This call implements the logic for the
+.Ux
+discretionary file security model
+with POSIX.1e ACL extensions.
+It accepts the vnodes type
+.Fa type ,
+owning UID
+.Fa file_uid ,
+owning GID
+.Fa file_gid ,
+access ACL for the file
+.Fa acl ,
+desired access mode
+.Fa accmode ,
+requesting credential
+.Fa cred ,
+and an optional call-by-reference
+.Vt int
+pointer returning whether or not
+privilege was required for successful evaluation of the call; the
+.Fa privused
+pointer may be set to
+.Dv NULL
+by the caller in order not to be informed of
+privilege information, or it may point to an integer that will be set to
+1 if privilege is used, and 0 otherwise.
+.Pp
+This call is intended to support implementations of
+.Xr VOP_ACCESS 9 ,
+which will use their own access methods to retrieve the vnode properties,
+and then invoke
+.Fn vaccess_acl_posix1e
+in order to perform the actual check.
+Implementations of
+.Xr VOP_ACCESS 9
+may choose to implement additional security mechanisms whose results will
+be composed with the return value.
+.Pp
+The algorithm used by
+.Fn vaccess_acl_posix1e
+is based on the POSIX.1e ACL evaluation algorithm.
+The algorithm selects a
+.Em matching
+entry from the access ACL, which may
+then be composed with an available ACL mask entry, providing
+.Ux
+security compatibility.
+.Pp
+Once appropriate protections are selected for the current credential,
+the requested access mode, in combination with the vnode type, will be
+compared with the discretionary rights available for the credential.
+If the rights granted by discretionary protections are insufficient,
+then super-user privilege, if available for the credential, will also be
+considered.
+.Sh RETURN VALUES
+.Fn vaccess_acl_posix1e
+will return 0 on success, or a non-zero error value on failure.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er EACCES
+Permission denied.
+An attempt was made to access a file in a way forbidden by its file access
+permissions.
+.It Bq Er EPERM
+Operation not permitted.
+An attempt was made to perform an operation limited to processes with
+appropriate privileges or to the owner of a file or other resource.
+.El
+.Sh SEE ALSO
+.Xr vaccess 9 ,
+.Xr vnode 9 ,
+.Xr VOP_ACCESS 9
+.Sh AUTHORS
+This manual page and the current implementation of
+.Fn vaccess_acl_posix1e
+were written by
+.An Robert Watson .
+.Sh BUGS
+This manual page should include a full description of the POSIX.1e ACL
+evaluation algorithm, or cross reference another page that does.
diff --git a/share/man/man9/vcount.9 b/share/man/man9/vcount.9
new file mode 100644
index 0000000..610891b
--- /dev/null
+++ b/share/man/man9/vcount.9
@@ -0,0 +1,73 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 2000 Andrew Stevenson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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.
+.\"
+.\" If this manual page travels to places exotic (like projects other than
+.\" FreeBSD) I would love to hear about it.
+.\" Andrew <andrew@ugh.net.au>
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 6, 2001
+.Os
+.Dt VCOUNT 9
+.Sh NAME
+.Nm vcount ,
+.Nm count_dev
+.Nd "get total number of references to a device"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/time.h
+.In sys/conf.h
+.In sys/vnode.h
+.Ft int
+.Fn vcount "struct vnode *vp"
+.Ft int
+.Fn count_dev "dev_t dev"
+.Sh DESCRIPTION
+.Fn vcount
+is used to get the number of references to a particular device.
+It allows for the fact that multiple vnodes may reference the same device.
+.Fn count_dev
+does the same thing as
+.Fn vcount ,
+but takes a
+.Vt dev_t
+rather than a
+.Vt "struct vnode"
+pointer as an argument.
+.Sh RETURN VALUES
+.Fn vcount
+and
+.Fn count_dev
+both return the number of references to the device.
+.Sh SEE ALSO
+.Xr VFS 9 ,
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Andrew Stevenson .
diff --git a/share/man/man9/vflush.9 b/share/man/man9/vflush.9
new file mode 100644
index 0000000..37aa31b
--- /dev/null
+++ b/share/man/man9/vflush.9
@@ -0,0 +1,82 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt VFLUSH 9
+.Os
+.Sh NAME
+.Nm vflush
+.Nd "flush vnodes for a mount point"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn vflush "struct mount *mp" "int rootrefs" "int flags" "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn vflush
+function removes any vnodes in the vnode table that belong to the given
+.Vt mount
+structure.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa rootrefs"
+.It Fa mp
+The mount point whose vnodes should be removed.
+.It Fa rootrefs
+The number of references expected on the root vnode.
+.Xr vrele 9
+will be invoked on the root vnode
+.Fa rootrefs
+times.
+.It Fa flags
+The flags indicating how vnodes should be handled.
+.Bl -tag -width ".Dv WRITECLOSE"
+.It Dv FORCECLOSE
+If set, busy vnodes will be forcibly closed.
+.It Dv SKIPSYSTEM
+If set, vnodes with the
+.Dv VV_SYSTEM
+flag set will be skipped.
+.It Dv WRITECLOSE
+If set, only regular files currently opened for writing will be removed.
+.El
+.It Fa td
+The calling thread.
+.El
+.Sh RETURN VALUES
+A value of 0 is returned if the flush is successful; otherwise,
+.Er EBUSY
+will be returned.
+.Sh SEE ALSO
+.Xr vgone 9 ,
+.Xr vgonel 9 ,
+.Xr vrele 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_busy.9 b/share/man/man9/vfs_busy.9
new file mode 100644
index 0000000..4835cb3
--- /dev/null
+++ b/share/man/man9/vfs_busy.9
@@ -0,0 +1,90 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 2, 2008
+.Dt VFS_BUSY 9
+.Os
+.Sh NAME
+.Nm vfs_busy
+.Nd "marks a mount point as busy"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft int
+.Fn vfs_busy "struct mount *mp" "int flags"
+.Sh DESCRIPTION
+The
+.Fn vfs_busy
+function marks a mount point as busy.
+The purpose of this
+function is to synchronize access to a mount point.
+It also delays unmounting by sleeping on
+.Fa mp
+if the
+.Dv MNTK_UNMOUNT
+flag is set in
+.Fa mp->mnt_kern_flag
+and the
+.Dv LK_NOWAIT
+flag is
+.Em not
+set.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa flags"
+.It Fa mp
+The mount point to busy.
+.It Fa flags
+Flags controlling how
+.Fn vfs_busy
+should act.
+.Bl -tag -width ".Dv MBF_MNTLSTLOCK"
+.It Dv MBF_NOWAIT
+do not sleep if
+.Dv MNTK_UNMOUNT
+is set.
+.It Dv MBF_MNTLSTLOCK
+drop the mountlist_mtx in the critical path.
+.El
+.El
+.Sh RETURN VALUES
+A 0 value is returned on success.
+If the mount point is being
+unmounted
+.Er ENOENT
+will always be returned.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENOENT
+The mount point is being unmounted
+.Dv ( MNTK_UNMOUNT
+is set).
+.El
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_getnewfsid.9 b/share/man/man9/vfs_getnewfsid.9
new file mode 100644
index 0000000..b6f1238
--- /dev/null
+++ b/share/man/man9/vfs_getnewfsid.9
@@ -0,0 +1,77 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt VFS_GETNEWFSID 9
+.Os
+.Sh NAME
+.Nm vfs_getnewfsid
+.Nd "allocate a new file system identifier"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft void
+.Fn vfs_getnewfsid "struct mount *mp"
+.Sh DESCRIPTION
+The
+.Fn vfs_getnewfsid
+function allocates a new file system identifier for the mount point given.
+File systems typically call
+.Fn vfs_getnewfsid
+in their mount routine in order to acquire a unique ID within the system
+which can later be used to uniquely identify the file system via calls such as
+.Xr vfs_getvfs 9 .
+.Pp
+The actual
+.Vt fsid
+is made up of two 32 bit integers, that are stored in the
+.Vt statfs
+structure of
+.Fa mp .
+The first integer is unique in the set of mounted file systems,
+while the second holds the file system type.
+.Bd -literal
+typedef struct fsid {
+ int32_t val[2];
+} fsid_t;
+.Ed
+.Sh PSEUDOCODE
+.Bd -literal
+xxx_mount(struct mount *mp, char *path, caddr_t data,
+ struct nameidata *ndp, struct thread *td)
+{
+ ...
+ vfs_getnewfsid(mp);
+ ...
+}
+.Ed
+.Sh SEE ALSO
+.Xr vfs_getvfs 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_getopt.9 b/share/man/man9/vfs_getopt.9
new file mode 100644
index 0000000..c393209
--- /dev/null
+++ b/share/man/man9/vfs_getopt.9
@@ -0,0 +1,198 @@
+.\"
+.\" Copyright (C) 2007 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 28, 2007
+.Dt VFS_GETOPT 9
+.Os
+.Sh NAME
+.Nm vfs_getopt ,
+.Nm vfs_getopts ,
+.Nm vfs_flagopt ,
+.Nm vfs_scanopt ,
+.Nm vfs_copyopt ,
+.Nm vfs_filteropt
+.Nd "manipulate mount options and their values"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft int
+.Fo vfs_getopt
+.Fa "struct vfsoptlist *opts" "const char *name" "void **buf" "int *len"
+.Fc
+.Ft "char *"
+.Fn vfs_getops "struct vfsoptlist *opts" "const char *name" "int *error"
+.Ft int
+.Fo vfs_flagopt
+.Fa "struct vfsoptlist *opts" "const char *name" "u_int *flags" "u_int flag"
+.Fc
+.Ft int
+.Fo vfs_scanopt
+.Fa "struct vfsoptlist *opts" "const char *name" "const char *fmt" ...
+.Fc
+.Ft int
+.Fo vfs_copyopt
+.Fa "struct vfsoptlist *opts" "const char *name" "void *dest" "int len"
+.Fc
+.Ft int
+.Fo vfs_filteropt
+.Fa "struct vfsoptlist *opts" "const char **legal"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vfs_getopt
+function sets
+.Fa buf
+to point to the value of the named mount option, and sets
+.Fa len
+to the length of the value if it is not
+.Dv NULL .
+The
+.Fa buf
+argument
+will point to the actual value, and does not need to be freed or released
+(and probably should not be modified).
+.Pp
+The
+.Fn vfs_getopts
+function
+returns the value of the specified option if it is a string (i.e.,
+.Dv NUL
+terminated).
+.Pp
+The
+.Fn vfs_flagopt
+function determines if an option exists.
+If the option does exist, and
+.Fa flags
+is not
+.Dv NULL ,
+.Fa flag
+is added to those already set in
+.Fa flags .
+If the option does not exist, and
+.Fa flags
+is not
+.Dv NULL ,
+.Fa flag
+is removed from those already set in
+.Fa flags .
+An example of typical usage is:
+.Bd -literal
+if (vfs_flagopt(mp->mnt_optnew, "wormlike", NULL, 0))
+ vfs_flagopt(mp->mnt_optnew, "appendok", &(mp->flags), F_APPENDOK);
+.Ed
+.Pp
+The
+.Fn vfs_scanopt
+function performs a
+.Xr vsscanf 3
+with the options value, using the given format,
+into the specified variable arguments.
+The value must be a string (i.e.,
+.Dv NUL
+terminated).
+.Pp
+The
+.Fn vfs_copyopt
+function creates a copy of the options value.
+The
+.Fa len
+argument must match the length of the options value exactly
+(i.e., a larger buffer will still cause
+.Fn vfs_copyout
+to fail with
+.Er EINVAL ) .
+.Pp
+The
+.Fn vfs_filteropt
+function ensures that no unknown options were specified.
+A option is valid if its name matches one of the names in the
+list of legal names.
+An option may be prefixed with 'no', and still be considered valid.
+.Sh RETURN VALUES
+The
+.Fn vfs_getopt
+function returns 0 if the option was found; otherwise,
+.Er ENOENT
+is returned.
+.Pp
+The
+.Fn vfs_getops
+function returns the specified option if it is found, and is
+.Dv NUL
+terminated.
+If the option was found, but is not
+.Dv NUL
+terminated,
+.Fa error
+is set to
+.Er EINVAL
+and
+.Dv NULL
+is returned.
+If the option was not found,
+.Fa error
+is set to 0, and
+.Dv NULL
+is returned.
+.Pp
+The
+.Fn vfs_flagopt
+function returns 1 if the option was found, and 0 if it was not.
+.Pp
+The
+.Fn vfs_scanopt
+function returns 0 if the option was not found, or was not
+.Dv NUL
+terminated; otherwise, the return value of
+.Xr vsscanf 3
+is returned.
+If
+.Xr vsscanf 3
+returns 0, it will be returned unchanged; therefore, a return value of 0 does
+not always mean the option does not exist, or is not a valid string.
+.Pp
+The
+.Fn vfs_copyopt
+function returns 0 if the copy was successful,
+.Er EINVAL
+if the option was found but the lengths did not match, and
+.Er ENOENT
+if the option was not found.
+.Pp
+The
+.Fn vfs_filteropt
+function returns 0 if all of the options are legal; otherwise,
+.Er EINVAL
+is returned.
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Chad David Aq davidc@FreeBSD.org
+and
+.An Ruslan Ermilov Aq ru@FreeBSD.org .
diff --git a/share/man/man9/vfs_getvfs.9 b/share/man/man9/vfs_getvfs.9
new file mode 100644
index 0000000..c563adc
--- /dev/null
+++ b/share/man/man9/vfs_getvfs.9
@@ -0,0 +1,77 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt VFS_GETVFS 9
+.Os
+.Sh NAME
+.Nm vfs_getvfs
+.Nd "returns a mount point given its file system identifier"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft "struct mount *"
+.Fn vfs_getvfs "fsid_t *fsid"
+.Sh DESCRIPTION
+The
+.Fn vfs_getvfs
+function returns the mount point structure for a file system given its file system
+identifier.
+The file system ID should have been allocated by calling
+.Xr vfs_getnewfsid 9 ;
+otherwise, it will not be found.
+.Pp
+A major user of
+.Fn vfs_getvfs
+is NFS, which uses the
+.Vt fsid
+as part of file handles in order to determine the
+file system a given RPC is for.
+If
+.Fn vfs_getvfs
+fails to find the mount point related to
+.Fa fsid ,
+the file system is considered stale.
+.Sh RETURN VALUES
+If
+.Fa fsid
+is found, the mount point for the ID is returned; otherwise,
+.Dv NULL
+is returned.
+.Sh PSEUDOCODE
+.Bd -literal
+if ((mp = vfs_getvfs(&fhp->fh_fsid)) == NULL) {
+ error = ESTALE;
+ goto out;
+}
+.Ed
+.Sh SEE ALSO
+.Xr vfs_getnewfsid 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_mount.9 b/share/man/man9/vfs_mount.9
new file mode 100644
index 0000000..b64698c
--- /dev/null
+++ b/share/man/man9/vfs_mount.9
@@ -0,0 +1,136 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 26, 2004
+.Dt VFS_MOUNT 9
+.Os
+.Sh NAME
+.Nm vfs_mount
+.Nd "generic file system mount function"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft int
+.Fo vfs_mount
+.Fa "struct thread *td"
+.Fa "const char *fstype"
+.Fa "char *fspath"
+.Fa "int fsflags"
+.Fa "void *fsdata"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vfs_mount
+function handles the generic portion of mounting a file system,
+and calls the file system specific mount function after verifying
+its parameters and setting up the structures expected by the
+underlying mount code.
+.Pp
+.Fn vfs_mount
+is called directly by the
+.Xr mount 2
+system call.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa fsflags"
+.It Fa td
+The thread responsible for this call.
+.It Fa fstype
+The type of file system being mounted.
+.It Fa fspath
+The path to the mount point of the file system.
+.It Fa fsflags
+Flags controlling the mount.
+See
+.Xr mount 2
+for details.
+.Pp
+.Dv MNT_EXPORTED , MNT_NOSUID , MNT_UPDATE , MNT_RELOAD ,
+.Dv MNT_FORCE , MNT_ASYNC , MNT_SYNCHRONOUS , MNT_UNION , MNT_NOATIME ,
+.Dv MNT_SNAPSHOT , MNT_NOCLUSTERR , MNT_NOCLUSTERW , MNT_IGNORE ,
+.Dv MNT_UNION , MNT_NOSYMFOLLOW
+.It Fa fsdata
+File system specific data structure.
+It is in userspace
+when passed to
+.Fn vfs_mount
+and is left untouched when passed to file system's
+.Fn mount .
+.El
+.Sh RETURN VALUES
+A 0 value is returned on success.
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENAMETOOLONG
+The fs type or the mount point path is too long or any individual
+path component is too long.
+.It Bq Er EPERM
+Permission denied.
+There are a number of reason this can occur
+ranging from the user not having permission to mount a file system
+to the securelevel being to high to load the
+.Fa fstype
+module.
+.It Bq Er EINVAL
+Invalid operation (ex: trying to update a non mount-point).
+.It Bq Er ENOENT
+The mount point does not exist (from
+.Fn namei ) .
+.It Bq Er ELOOP
+The mount point is a muddle of links (from
+.Fn namei ) .
+.It Bq Er EOPNOTSUPP
+The operation is not supported (ex: reloading a r/w file system).
+.It Bq Er EBUSY
+The mount point is busy or is not really a mount point (on update).
+.It Bq Er ENOTDIR
+The mount point is not a directory.
+.It Bq Er ENODEV
+The kernel linker was unable to load the specified
+.Fa fstype
+or was unable to find the specified
+.Fa fstype
+module.
+.El
+.Pp
+Other errors can be returned by the file system's
+.Fn mount
+and
+you should check the specific file system for details.
+Also
+this call relies on a large number of other kernel services
+whose errors it returns so this list may not be exhaustive.
+.Sh SEE ALSO
+.Xr mount 2 ,
+.Xr mount 8 ,
+.Xr vfs_mountedon 9
+.Pp
+.Va vfs.usermount
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_mountedfrom.9 b/share/man/man9/vfs_mountedfrom.9
new file mode 100644
index 0000000..4e6eace
--- /dev/null
+++ b/share/man/man9/vfs_mountedfrom.9
@@ -0,0 +1,55 @@
+.\" Copyright (C) 2008 Chad David <davidc@acns.ab.ca>.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 25, 2008
+.Dt vfs_mountedfrom 9
+.Os
+.Sh NAME
+.Nm vfs_mountedfrom
+.Nd "sets the mounted from name for a mount"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft void
+.Fn vfs_mountedfrom "struct mount *mp" "const char *from"
+.Sh DESCRIPTION
+The
+.Fn vfs_mountedfrom
+function sets the mounted from name for a mount.
+This value is used by
+.Fn statfs 2
+to fill in
+.Va f_mntfromname .
+.Pp
+In most cases
+.Va from
+is the device that contains the file system, but in the case of a pseudo
+file system it could be a descriptive name like "devfs" or "procfs".
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_rootmountalloc.9 b/share/man/man9/vfs_rootmountalloc.9
new file mode 100644
index 0000000..ecad73e
--- /dev/null
+++ b/share/man/man9/vfs_rootmountalloc.9
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt VFS_ROOTMOUNTALLOC 9
+.Os
+.Sh NAME
+.Nm vfs_rootmountalloc
+.Nd "allocate a root"
+.Vt mount
+structure
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft int
+.Fn vfs_rootmountalloc "char *fstypename" "char *devname" "struct mount **mpp"
+.Sh DESCRIPTION
+.Fn vfs_rootmountalloc
+allocates a
+.Vt mount
+structure initialized from the
+.Vt vfsconf
+type that matches
+.Fa fstypename .
+.Sh RETURN VALUES
+If successful, 0 is returned and
+.Fa mpp
+points to the newly allocated
+.Vt mount
+structure.
+.Er ENODEV
+is returned if
+.Fa fstypename
+is
+.Dv NULL
+or invalid.
+.Sh SEE ALSO
+.Xr vfsconf 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_suser.9 b/share/man/man9/vfs_suser.9
new file mode 100644
index 0000000..df68bc2
--- /dev/null
+++ b/share/man/man9/vfs_suser.9
@@ -0,0 +1,72 @@
+.\"
+.\" Copyright (c) 2004 Alfred Perlstein
+.\" 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$
+.\"
+.Dd April 2, 2004
+.Dt VFS_SUSER 9
+.Os
+.Sh NAME
+.Nm vfs_suser
+.Nd check if credentials have superuser privileges for a mount point
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/mount.h
+.Ft int
+.Fn vfs_suser "struct mount *mp" "struct thread *td"
+.Sh DESCRIPTION
+The
+.Fn vfs_suser
+function checks if the credentials given include superuser powers
+for the given mount point.
+It will check to see if the thread
+passed in has the same credentials as the user that mounted the
+file system.
+If so, it returns 0, otherwise it returns what
+.Xr priv_check 9
+would have returned.
+.Sh RETURN VALUES
+The
+.Fn vfs_suser
+function returns 0 if the user has superuser powers and
+.Er EPERM
+otherwise.
+This is the
+.Em reverse logic
+of some other implementations of
+.Fn suser
+in which a TRUE response indicates superuser powers.
+.Sh SEE ALSO
+.Xr chroot 2 ,
+.Xr jail 2
+.Sh HISTORY
+The
+.Fn vfs_suser
+function was introduced in
+.Fx 5.2 .
+.Sh AUTHORS
+This manual page was written by
+.An Alfred Perlstein .
diff --git a/share/man/man9/vfs_timestamp.9 b/share/man/man9/vfs_timestamp.9
new file mode 100644
index 0000000..455d6f6
--- /dev/null
+++ b/share/man/man9/vfs_timestamp.9
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt VFS_TIMESTAMP 9
+.Os
+.Sh NAME
+.Nm vfs_timestamp
+.Nd "generate current timestamp"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft void
+.Fn vfs_timestamp "struct timespec *tsp"
+.Sh DESCRIPTION
+The
+.Fn vfs_timestamp
+function fills in
+.Fa tsp
+with the current time.
+.Pp
+The precision is based on the value of the
+.Va vfs.timestamp_precision
+sysctl variable:
+.Pp
+.Bl -tag -width ".No \(>=3" -compact
+.It 0
+seconds only; nanoseconds are zeroed.
+.It 1
+seconds and nanoseconds, accurate within 1/HZ.
+.It 2
+seconds and nanoseconds, truncated to microseconds.
+.It \(>=3
+seconds and nanoseconds, maximum precision.
+.El
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_unbusy.9 b/share/man/man9/vfs_unbusy.9
new file mode 100644
index 0000000..c63fd28
--- /dev/null
+++ b/share/man/man9/vfs_unbusy.9
@@ -0,0 +1,64 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 29, 2008
+.Dt VFS_UNBUSY 9
+.Os
+.Sh NAME
+.Nm vfs_unbusy
+.Nd "unbusy a mount point"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft void
+.Fn vfs_unbusy "struct mount *mp"
+.Sh DESCRIPTION
+The
+.Fn vfs_unbusy
+function un-busies a mount point by unlocking
+.Fa mp->mnt_lock .
+The lock is typically acquired by calling
+.Xr vfs_busy 9
+prior to this call.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa mp"
+.It Fa mp
+The mount point to unbusy (unlock).
+.El
+.Sh LOCKS
+.Va mnt_lock
+must be locked in
+.Fa mp
+prior to calling
+this function, and it will be unlocked upon return.
+.Sh SEE ALSO
+.Xr vfs_busy 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vfs_unmountall.9 b/share/man/man9/vfs_unmountall.9
new file mode 100644
index 0000000..e200203
--- /dev/null
+++ b/share/man/man9/vfs_unmountall.9
@@ -0,0 +1,47 @@
+.\" Copyright (c) 2001 Chris Costello <chris@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$
+.\"
+.Dd July 26, 2001
+.Dt VFS_UNMOUNTALL 9
+.Os
+.Sh NAME
+.Nm vfs_unmountall
+.Nd unmount all file systems
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft void
+.Fn vfs_unmountall "void"
+.Sh DESCRIPTION
+The
+.Nm
+function,
+run only at system shutdown,
+unmounts all mounted file systems
+from most recent to oldest
+in order to avoid handling dependencies.
+.Sh SEE ALSO
+.Xr boot 9
diff --git a/share/man/man9/vfsconf.9 b/share/man/man9/vfsconf.9
new file mode 100644
index 0000000..f7b160e
--- /dev/null
+++ b/share/man/man9/vfsconf.9
@@ -0,0 +1,151 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt VFSCONF 9
+.Os
+.Sh NAME
+.Nm vfsconf
+.Nd "vfs configuration information"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/mount.h
+.Ft int
+.Fn vfs_register "struct vfsconf *vfc"
+.Ft int
+.Fn vfs_unregister "struct vfsconf *vfc"
+.Ft int
+.Fn vfs_modevent "module_t mod" "int type" "void *data"
+.Sh DESCRIPTION
+Each file system type known to the kernel has a
+.Vt vfsconf
+structure that contains the
+information required to create a new mount of that file systems type.
+.Bd -literal
+struct vfsconf {
+ struct vfsops *vfc_vfsops; /* file system operations vector */
+ char vfc_name[MFSNAMELEN]; /* file system type name */
+ int vfc_typenum; /* historic file system type number */
+ int vfc_refcount; /* number mounted of this type */
+ int vfc_flags; /* permanent flags */
+ struct vfsconf *vfc_next; /* next in list */
+};
+.Ed
+.Pp
+When a new file system is mounted,
+.Xr vfs_mount 9
+does a lookup of the
+.Vt vfsconf
+structure by its name, and if it is not already registered,
+attempts to load a kernel module for it.
+The file system operations for the new mount point are taken from
+.Va vfc_vfsops ,
+and
+.Va mnt_vfc
+in the
+.Vt mount
+structure is made to point directly at the
+.Vt vfsconf
+structure for the
+file system type.
+The file system type number is taken from
+.Va vfc_typenum
+which was assigned in
+.Fn vfs_register ,
+and the mount flags are taken from a mask of
+.Va vfc_flags .
+Each time a file system of a given type is mounted,
+.Va vfc_refcount
+is incremented.
+.Pp
+.Fn vfs_register
+takes a new
+.Vt vfsconf
+structure and adds it to the list of existing file systems.
+If the type has not already been registered, it is initialized by calling the
+.Fn vfs_init
+function in the file system operations vector.
+.Fn vfs_register
+also updates the oid's of any sysctl nodes for this file system type
+to be the same as the newly assigned type number.
+.Pp
+.Fn vfs_unregister
+unlinks
+.Fa vfc
+from the list of registered file system types if there are currently no mounted instances.
+If the
+.Fn vfs_uninit
+function in the file systems initialization vector is defined, it is called.
+.Pp
+.Fn vfs_modevent
+is registered by
+.Fn VFS_SET
+to handle the loading and unloading of file system kernel modules.
+In the case of
+.Dv MOD_LOAD ,
+.Fn vfs_register
+is called.
+In the case of
+.Dv MOD_UNLOAD ,
+.Fn vfs_unregister
+is called.
+.Sh RETURN VALUES
+.Fn vfs_register
+returns 0 if successful; otherwise,
+.Er EEXIST
+is returned indicating that the file system type has already been registered.
+.Pp
+.Fn vfs_unregister
+returns 0 if successful.
+If no
+.Vt vfsconf
+entry can be found matching the name in
+.Fa vfc ,
+.Er EINVAL
+is returned.
+If the reference count of mounted instances of the file system type is not zero,
+.Er EBUSY
+is returned.
+If
+.Fn vfs_uninit
+is called, any errors it returns will be returned by
+.Fn vfs_unregister .
+.Pp
+.Fn vfs_modevent
+returns the result of the call to
+.Fn vfs_register
+or
+.Fn vfs_unregister ,
+whatever the case.
+.Sh SEE ALSO
+.Xr vfs_mount 9 ,
+.Xr vfs_rootmountalloc 9 ,
+.Xr VFS_SET 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vget.9 b/share/man/man9/vget.9
new file mode 100644
index 0000000..ef8fb10
--- /dev/null
+++ b/share/man/man9/vget.9
@@ -0,0 +1,71 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VGET 9
+.Sh NAME
+.Nm vget
+.Nd get a vnode from the free list
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn vget "struct vnode *vp" "int lockflag" "struct thread *td"
+.Sh DESCRIPTION
+Get a vnode from the free list and increment its reference count.
+.Bl -tag -width lockflag
+.It Fa vp
+The vnode to remove from the free list.
+.It Fa lockflag
+If non-zero, the vnode will also be locked.
+.El
+.Pp
+When not in use, vnodes are kept on a free list.
+The vnodes still
+reference valid files but may be reused to refer to a new file at any
+time.
+Often, these vnodes are also held in caches in the system, such
+as the name cache.
+.Pp
+When a vnode which is on the free list is used again, for instance if
+the vnode was found in the name cache as a result of a call to
+.Xr VOP_LOOKUP 9
+then the new user must call
+.Fn vget
+to increment the reference count and remove it from the free list.
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr vput 9 ,
+.Xr vref 9 ,
+.Xr vrele 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/vgone.9 b/share/man/man9/vgone.9
new file mode 100644
index 0000000..fa30c1e
--- /dev/null
+++ b/share/man/man9/vgone.9
@@ -0,0 +1,71 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 21, 2001
+.Dt VGONE 9
+.Os
+.Sh NAME
+.Nm vgone , vgonel
+.Nd "prepare a vnode for reuse"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft void
+.Fn vgone "struct vnode *vp"
+.Ft void
+.Fn vgonel "struct vnode *vp" "struct thread *td"
+.Sh DESCRIPTION
+.Fn vgone
+and
+.Fn vgonel
+prepare a vnode for reuse by another file system.
+The preparation includes the cleaning of all file system specific data and
+the removal from its mount point vnode list.
+.Pp
+If the vnode has a
+.Va v_usecount
+of zero, and its
+.Dv VI_DOOMED
+flag is not set, it is moved to the head of the free list
+as in most cases the vnode
+is about to be reused, or its file system is being unmounted.
+.Pp
+The difference between
+.Fn vgone
+and
+.Fn vgonel
+is that
+.Fn vgone
+locks the vnode interlock and then calls
+.Fn vgonel
+while
+.Fn vgonel
+expects the interlock to already be locked.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vhold.9 b/share/man/man9/vhold.9
new file mode 100644
index 0000000..cb1f35d
--- /dev/null
+++ b/share/man/man9/vhold.9
@@ -0,0 +1,83 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 1, 2007
+.Dt VHOLD 9
+.Os
+.Sh NAME
+.Nm vhold , vdrop , vdropl
+.Nd "acquire/release a hold on a vnode"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft void
+.Fn vhold "struct vnode *vp"
+.Ft void
+.Fn vholdl "struct vnode *vp"
+.Ft void
+.Fn vdrop "struct vnode *vp"
+.Ft void
+.Fn vdropl "struct vnode *vp"
+.Sh DESCRIPTION
+The
+.Fn vhold
+and
+.Fn vholdl
+functions increment the
+.Va v_holdcnt
+of the given vnode.
+If the vnode has already been added to the free list and is still referenced,
+it will be removed.
+.Pp
+The
+.Fn vdrop
+and
+.Fn vdropl
+functions decrement the
+.Va v_holdcnt
+of the vnode.
+If the holdcount is less than or equal to zero prior to calling
+.Fn vdrop
+or
+.Fn vdropl ,
+the system will panic.
+If the vnode is no longer referenced, it will be freed.
+.Pp
+.Fn vhold
+and
+.Fn vdrop
+lock the vnode interlock while
+.Fn vholdl
+and
+.Fn vdropl
+expect the interlock to already be held.
+.Sh SEE ALSO
+.Xr vnode 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vinvalbuf.9 b/share/man/man9/vinvalbuf.9
new file mode 100644
index 0000000..5180153
--- /dev/null
+++ b/share/man/man9/vinvalbuf.9
@@ -0,0 +1,119 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd October 20, 2008
+.Dt VINVALBUF 9
+.Os
+.Sh NAME
+.Nm vinvalbuf
+.Nd "flushes and invalidates all buffers associated with a vnode"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn vinvalbuf "struct vnode *vp" "int flags" "struct ucred *cred" "int slpflag" "int slptimeo"
+.Sh DESCRIPTION
+The
+.Fn vinvalbuf
+function invalidates all of the buffers associated with the given vnode.
+This includes buffers on the clean list and the dirty list.
+If the
+.Dv V_SAVE
+flag is specified then the buffers on the dirty list are synced prior to being
+released.
+If there is a VM Object associated with the vnode, it is removed.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa spltimeo"
+.It Fa vp
+A pointer to the vnode whose buffers will be invalidated.
+.It Fa flags
+The only supported flag is
+.Dv V_SAVE
+and it indicates that dirty buffers should be synced with the disk.
+.It Fa cred
+The user credentials that are used to
+.Xr VOP_FSYNC 9
+buffers if
+.Dv V_SAVE
+is set.
+.It Fa slpflag
+The slp flag that will be used in the priority of any sleeps in the function.
+.It Fa slptimeo
+The timeout for any sleeps in the function.
+.El
+.Sh LOCKS
+The vnode is assumed to be locked prior to the call and remains locked upon return.
+.Pp
+.Va Giant
+must be held by prior to the call and remains locked upon return.
+.Sh RETURN VALUES
+A 0 value is returned on success.
+.Sh PSEUDOCODE
+.Bd -literal -offset indent
+vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY);
+error = vinvalbuf(devvp, V_SAVE, cred, 0, 0);
+VOP_UNLOCK(devvp, 0);
+if (error)
+ return (error);
+.Ed
+.Sh ERRORS
+.Bl -tag -width Er
+.It Bq Er ENOSPC
+The file system is full.
+(With
+.Dv V_SAVE )
+.It Bq Er EDQUOT
+Disc quota exceeded.
+(With
+.Dv V_SAVE )
+.It Bq Er EWOULDBLOCK
+Sleep operation timed out.
+(See
+.Fa slptimeo )
+.It Bq Er ERESTART
+A signal needs to be delivered and the system call should be restarted.
+(With
+.Dv PCATCH
+set in
+.Fa slpflag )
+.It Bq Er EINTR
+The system has been interrupted by a signal.
+(With
+.Dv PCATCH
+set in
+.Fa slpflag )
+.El
+.Sh SEE ALSO
+.Xr brelse 9 ,
+.Xr bremfree 9 ,
+.Xr tsleep 9 ,
+.Xr VOP_FSYNC 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_fault_prefault.9 b/share/man/man9/vm_fault_prefault.9
new file mode 100644
index 0000000..dcc7e7a
--- /dev/null
+++ b/share/man/man9/vm_fault_prefault.9
@@ -0,0 +1,72 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 21, 2003
+.Dt VM_FAULT_PREFAULT 9
+.Os
+.Sh NAME
+.Nm vm_fault_prefault
+.Nd cluster page faults into a process's address space
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/pmap.h
+.Ft void
+.Fn vm_fault_prefault "pmap_t pmap" "vm_offset_t addra" "vm_map_entry_t entry"
+.Sh DESCRIPTION
+The
+.Fn vm_fault_prefault
+function provides a means of clustering pagefaults into a process's
+address space.
+It operates upon the physical map
+.Fa pmap .
+The
+.Fa entry
+argument specifies the entry to be prefaulted; the
+.Fa addra
+argument specifies the beginning of the mapping in the process's virtual
+address space.
+.Pp
+It is typically called by
+.Fn vm_fault
+after the first page fault.
+It benefits the
+.Xr execve 2
+system call by eliminating repetitive calls to
+.Fn vm_fault ,
+which would otherwise be made to bring the process's executable pages
+into physical memory.
+.Sh IMPLEMENTATION NOTES
+This is a machine-independent function which calls the machine-dependent
+.Xr pmap_is_prefaultable 9
+helper function to determine if a page may be prefaulted into physical memory.
+.Sh SEE ALSO
+.Xr execve 2 ,
+.Xr pmap_is_prefaultable 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map.9 b/share/man/man9/vm_map.9
new file mode 100644
index 0000000..285d1d7
--- /dev/null
+++ b/share/man/man9/vm_map.9
@@ -0,0 +1,351 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd September 26, 2004
+.Dt VM_MAP 9
+.Os
+.Sh NAME
+.Nm vm_map
+.Nd virtual address space portion of virtual memory subsystem
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Sh DESCRIPTION
+The
+.Nm
+subsystem is used to manage virtual address spaces.
+This section describes the main data structures used within the code.
+.Pp
+The
+.Vt "struct vm_map"
+is a generic representation of an address space.
+This address space may belong to a user process or the kernel.
+The kernel actually uses several maps, which are maintained as
+subordinate maps, created using the
+.Xr vm_map_submap 9
+function.
+.Bd -literal -offset indent
+struct vm_map {
+ struct vm_map_entry header;
+ struct sx lock;
+ struct mtx system_mtx;
+ int nentries;
+ vm_size_t size;
+ u_int timestamp;
+ u_char needs_wakeup;
+ u_char system_map;
+ vm_flags_t flags;
+ vm_map_entry_t root;
+ pmap_t pmap;
+#define min_offset header.start
+#define max_offset header.end
+};
+.Ed
+.Pp
+The fields of
+.Vt struct vm_map
+are as follows:
+.Bl -tag -width ".Va needs_wakeup"
+.It Va header
+Head node of a circular, doubly linked list of
+.Vt struct vm_map_entry
+objects.
+Each object defines a particular region within this map's address space.
+.It Va lock
+Used to serialize access to the structure.
+.It Va system_mtx
+A mutex which is used if the map is a system map.
+.It Va nentries
+A count of the members in use within the circular map entry list.
+.It Va size
+Specifies the size of the virtual address space.
+.It Va timestamp
+Used to determine if the map has changed since its last access.
+.It Va needs_wakeup
+Indicates if a thread is waiting for an allocation within the map.
+Used only by system maps.
+.It Va system_map
+Set to TRUE to indicate that map is a system map; otherwise, it belongs
+to a user process.
+.It Va flags
+Map flags, described below.
+.It Va root
+Root node of a binary search tree used for fast lookup of map entries.
+.It Va pmap
+Pointer to the underlying physical map with which this virtual map
+is associated.
+.It Va min_offset
+The minimum
+.Vt vm_offset_t
+in this map.
+Programs should never use
+.Va header.start
+or
+.Va header.end
+directly, use
+.Va min_offset
+and
+.Va max_offset
+instead.
+.It Va max_offset
+The maximum
+.Vt vm_offset_t
+in this map.
+.El
+.Pp
+There is one possible map flag:
+.Bl -tag -width ".Dv MAP_PREFAULT_MADVISE"
+.It Dv MAP_WIREFUTURE
+Wire all future pages in this map.
+.El
+.Pp
+The following flags can be passed to
+.Xr vm_map_find 9
+and
+.Xr vm_map_insert 9
+to specify the copy-on-write properties of regions within the map:
+.Bl -tag -width ".Dv MAP_PREFAULT_MADVISE"
+.It Dv MAP_COPY_ON_WRITE
+The mapping is copy-on-write.
+.It Dv MAP_NOFAULT
+The mapping should not generate page faults.
+.It Dv MAP_PREFAULT
+The mapping should be prefaulted into physical memory.
+.It Dv MAP_PREFAULT_PARTIAL
+The mapping should be partially prefaulted into physical memory.
+.It Dv MAP_DISABLE_SYNCER
+Do not periodically flush dirty pages; only flush them when absolutely
+necessary.
+.It Dv MAP_DISABLE_COREDUMP
+Do not include the mapping in a core dump.
+.It Dv MAP_PREFAULT_MADVISE
+Specify that the request is from a user process calling
+.Xr madvise 2 .
+.El
+.Pp
+The
+.Vt struct vm_map_entry
+is a generic representation of a region.
+The region managed by each entry is associated with a
+.Vt union vm_map_object ,
+described below.
+.Bd -literal -offset indent
+struct vm_map_entry {
+ struct vm_map_entry *prev;
+ struct vm_map_entry *next;
+ struct vm_map_entry *left;
+ struct vm_map_entry *right;
+ vm_offset_t start;
+ vm_offset_t end;
+ vm_offset_t avail_ssize;
+ vm_size_t adj_free;
+ vm_size_t max_free;
+ union vm_map_object object;
+ vm_ooffset_t offset;
+ vm_eflags_t eflags;
+ /* Only in task maps: */
+ vm_prot_t protection;
+ vm_prot_t max_protection;
+ vm_inherit_t inheritance;
+ int wired_count;
+ vm_pindex_t lastr;
+};
+.Ed
+.Pp
+The fields of
+.Vt struct vm_map_entry
+are as follows:
+.Bl -tag -width ".Va avail_ssize"
+.It Va prev
+Pointer to the previous node in a doubly-linked, circular list.
+.It Va next
+Pointer to the next node in a doubly-linked, circular list.
+.It Va left
+Pointer to the left node in a binary search tree.
+.It Va right
+Pointer to the right node in a binary search tree.
+.It Va start
+Lower address bound of this entry's region.
+.It Va end
+Upper address bound of this entry's region.
+.It Va avail_ssize
+If the entry is for a process stack, specifies how much the entry can grow.
+.It Va adj_free
+The amount of free, unmapped address space adjacent to and immediately
+following this map entry.
+.It Va max_free
+The maximum amount of contiguous free space in this map entry's subtree.
+.It Va object
+Pointer to the
+.Vt struct vm_map_object
+with which this entry is associated.
+.It Va offset
+Offset within the
+.Va object
+which is mapped from
+.Va start
+onwards.
+.It Va eflags
+Flags applied to this entry, described below.
+.El
+.Pp
+The following five members are only valid for entries forming part of
+a user process's address space:
+.Bl -tag -width ".Va max_protection"
+.It Va protection
+Memory protection bits applied to this region.
+These are identical to those defined for
+.Xr vm_page_protect 9 .
+.It Va max_protection
+Mask for the memory protection bits which may be actually be applied to
+this region.
+These are identical to those defined for
+.Xr vm_page_protect 9 .
+.It Va inheritance
+Contains flags which specify how this entry should be treated
+during fork processing.
+.It Va wired_count
+Count of how many times this entry has been wired into physical memory.
+.It Va lastr
+Contains the address of the last read which caused a page fault.
+.El
+.Pp
+The following flags may be applied to each entry, by specifying them
+as a mask within the
+.Va eflags
+member:
+.Bl -tag -width ".Dv MAP_ENTRY_BEHAV_SEQUENTIAL"
+.It Dv MAP_ENTRY_NOSYNC
+The system should not flush the data associated with this map
+periodically, but only when it needs to.
+.It Dv MAP_ENTRY_IS_SUB_MAP
+If set, then the
+.Va object
+member specifies a subordinate map.
+.It Dv MAP_ENTRY_COW
+Indicate that this is a copy-on-write region.
+.It Dv MAP_ENTRY_NEEDS_COPY
+Indicate that a copy-on-write region needs to be copied.
+.It Dv MAP_ENTRY_NOFAULT
+Specifies that accesses within this region should never cause a page fault.
+If a page fault occurs within this region, the system will panic.
+.It Dv MAP_ENTRY_USER_WIRED
+Indicate that this region was wired on behalf of a user process.
+.It Dv MAP_ENTRY_BEHAV_NORMAL
+The system should use the default paging behaviour for this region.
+.It Dv MAP_ENTRY_BEHAV_SEQUENTIAL
+The system should depress the priority of pages immediately preceding
+each page within this region when faulted in.
+.It Dv MAP_ENTRY_BEHAV_RANDOM
+Is a hint that pages within this region will be accessed randomly,
+and that prefetching is likely not advantageous.
+.It Dv MAP_ENTRY_IN_TRANSITION
+Indicate that wiring or unwiring of an entry is in progress, and that
+other kernel threads should not attempt to modify fields in the structure.
+.It Dv MAP_ENTRY_NEEDS_WAKEUP
+Indicate that there are kernel threads waiting for this region to become
+available.
+.It Dv MAP_ENTRY_NOCOREDUMP
+The region should not be included in a core dump.
+.El
+.Pp
+The
+.Va inheritance
+member has type
+.Vt vm_inherit_t .
+This governs the inheritance behaviour for a map entry during fork processing.
+The following values are defined for
+.Vt vm_inherit_t :
+.Bl -tag -width ".Dv VM_INHERIT_DEFAULT"
+.It Dv VM_INHERIT_SHARE
+The object associated with the entry should be cloned and shared
+with the new map.
+A new
+.Vt struct vm_object
+will be created if necessary.
+.It Dv VM_INHERIT_COPY
+The object associated with the entry should be copied to the new map.
+.It Dv VM_INHERIT_NONE
+The entry should not be copied to the new map.
+.It Dv VM_INHERIT_DEFAULT
+Specifies the default behaviour,
+.Dv VM_INHERIT_COPY .
+.El
+.Pp
+The
+.Vt union vm_map_object
+is used to specify the structure which a
+.Vt struct vm_map_entry
+is associated with.
+.Pp
+The fields of
+.Vt union vm_map_object
+are as follows:
+.Bd -literal -offset indent
+union vm_map_object {
+ struct vm_object *vm_object;
+ struct vm_map *sub_map;
+};
+.Ed
+.Pp
+Normally, the
+.Va sub_map
+member is only used by system maps to indicate that a memory range
+is managed by a subordinate system map.
+Within a user process map, each
+.Vt struct vm_map_entry
+is backed by a
+.Vt struct vm_object .
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr vm_map_check_protection 9 ,
+.Xr vm_map_clean 9 ,
+.Xr vm_map_create 9 ,
+.Xr vm_map_delete 9 ,
+.Xr vm_map_entry_resize_free 9 ,
+.Xr vm_map_find 9 ,
+.Xr vm_map_findspace 9 ,
+.Xr vm_map_inherit 9 ,
+.Xr vm_map_init 9 ,
+.Xr vm_map_insert 9 ,
+.Xr vm_map_lock 9 ,
+.Xr vm_map_lookup 9 ,
+.Xr vm_map_madvise 9 ,
+.Xr vm_map_max 9 ,
+.Xr vm_map_min 9 ,
+.Xr vm_map_pmap 9 ,
+.Xr vm_map_protect 9 ,
+.Xr vm_map_remove 9 ,
+.Xr vm_map_simplify_entry 9 ,
+.Xr vm_map_stack 9 ,
+.Xr vm_map_submap 9 ,
+.Xr vm_map_wire 9 ,
+.Xr vm_page_protect 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_check_protection.9 b/share/man/man9/vm_map_check_protection.9
new file mode 100644
index 0000000..abaf6d0
--- /dev/null
+++ b/share/man/man9/vm_map_check_protection.9
@@ -0,0 +1,70 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_CHECK_PROTECTION 9
+.Os
+.Sh NAME
+.Nm vm_map_check_protection
+.Nd check memory protection for a vm_map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft boolean_t
+.Fo vm_map_check_protection
+.Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "vm_prot_t protection"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_check_protection
+function asserts that the target
+.Fa map
+allows the specified privilege
+.Fa protection
+over the entire address range from
+.Fa start
+to
+.Fa end .
+The region MUST be contiguous; no holes are allowed.
+.Sh IMPLEMENTATION NOTES
+This code does not and SHOULD not check whether the contents of
+the region are accessible.
+For example, a small file may be mapped into an address space which
+is significantly larger in size.
+.Sh RETURN VALUES
+The
+.Fn vm_map_check_protection
+function returns TRUE if the privilege is allowed; if it is not allowed,
+or if any other error occurred, the value FALSE is returned.
+.Sh SEE ALSO
+.Xr munmap 2 ,
+.Xr vm_map 9 ,
+.Xr vm_map_protect 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_clean.9 b/share/man/man9/vm_map_clean.9
new file mode 100644
index 0000000..eeea5bc
--- /dev/null
+++ b/share/man/man9/vm_map_clean.9
@@ -0,0 +1,85 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_CLEAN 9
+.Os
+.Sh NAME
+.Nm vm_map_clean
+.Nd push dirty pages to their pager
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_clean
+.Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "boolean_t syncio"
+.Fa "boolean_t invalidate"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_clean
+function forces any dirty cached pages in the range
+.Fa start
+to
+.Fa end
+within the
+.Fa map
+to be pushed to their underlying pager.
+.Pp
+If
+.Fa syncio
+is TRUE, dirty pages are written synchronously.
+.Pp
+If
+.Fa invalidate
+is TRUE, any cached pages are also freed.
+.Pp
+The range provided must be contiguous, it MUST NOT contain holes.
+The range provided MUST NOT contain any sub-map entries.
+.Sh IMPLEMENTATION NOTES
+This routine holds the
+.Va Giant
+lock to prevent multiple entry.
+.Sh RETURN VALUES
+The
+.Fn vm_map_clean
+function returns
+.Dv KERN_SUCCESS
+if successful.
+.Pp
+Otherwise,
+.Dv KERN_INVALID_ADDRESS
+will be returned if the function encountered a sub-map entry;
+.Dv KERN_INVALID_ARGUMENT
+will be returned if the function encountered a hole in the region provided,
+or if an entry could not be found for the given start address.
+.Sh SEE ALSO
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_create.9 b/share/man/man9/vm_map_create.9
new file mode 100644
index 0000000..0574f39
--- /dev/null
+++ b/share/man/man9/vm_map_create.9
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_CREATE 9
+.Os
+.Sh NAME
+.Nm vm_map_create
+.Nd create a new vm_map structure
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft vm_map_t
+.Fn vm_map_create "pmap_t pmap" "vm_offset_t min" "vm_offset_t max"
+.Sh DESCRIPTION
+The
+.Fn vm_map_create
+function creates and returns a new, empty map structure, associated
+with the physical map
+.Fa pmap ,
+and with the
+upper and lower address bounds specified by
+.Fa max
+and
+.Fa min
+respectively.
+.Sh IMPLEMENTATION NOTES
+The kernel's zone allocator is used to allocate the map.
+.Sh RETURN VALUES
+The
+.Fn vm_map_create
+function returns a pointer to the newly allocated map if successful.
+Otherwise, it returns
+.Dv NULL .
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr vm_map 9 ,
+.Xr vm_map_init 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_delete.9 b/share/man/man9/vm_map_delete.9
new file mode 100644
index 0000000..e884f36
--- /dev/null
+++ b/share/man/man9/vm_map_delete.9
@@ -0,0 +1,68 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_DELETE 9
+.Os
+.Sh NAME
+.Nm vm_map_delete
+.Nd deallocate an address range from a map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fn vm_map_delete "vm_map_t map" "vm_offset_t start" "vm_offset_t end"
+.Sh DESCRIPTION
+The
+.Fn vm_map_delete
+function deallocates the address range bounded by
+.Fa start
+and
+.Fa end
+from the
+.Fa map .
+.Sh IMPLEMENTATION NOTES
+This function is for
+.Fx
+VM internal use only.
+The
+.Xr vm_map_remove 9
+function should be called by
+.Fx
+VM consumers instead.
+.Sh RETURN VALUES
+The
+.Fn vm_map_delete
+function always returns
+.Dv KERN_SUCCESS .
+.Sh SEE ALSO
+.Xr vm_map 9 ,
+.Xr vm_map_remove 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_entry_resize_free.9 b/share/man/man9/vm_map_entry_resize_free.9
new file mode 100644
index 0000000..b037bcb
--- /dev/null
+++ b/share/man/man9/vm_map_entry_resize_free.9
@@ -0,0 +1,244 @@
+.\"
+.\" Copyright (c) 2004 Mark W. Krentel <krentel@dreamscape.com>
+.\" 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$
+.\"
+.Dd August 17, 2004
+.Os
+.Dt VM_MAP_ENTRY_RESIZE_FREE 9
+.Sh NAME
+.Nm vm_map_entry_resize_free
+.Nd "vm map free space algorithm"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft void
+.Fn vm_map_entry_resize_free "vm_map_t map" "vm_map_entry_t entry"
+.Sh DESCRIPTION
+This manual page describes the
+.Vt vm_map_entry
+fields used in the VM map free space algorithm, how to maintain
+consistency of these variables, and the
+.Fn vm_map_entry_resize_free
+function.
+.Pp
+VM map entries are organized as both a doubly-linked list
+.Va ( prev
+and
+.Va next
+pointers) and as a binary search tree
+.Va ( left
+and
+.Va right
+pointers).
+The search tree is organized as a Sleator and Tarjan splay tree,
+also known as a
+.Dq "self-adjusting tree" .
+.Bd -literal -offset indent
+struct vm_map_entry {
+ struct vm_map_entry *prev;
+ struct vm_map_entry *next;
+ struct vm_map_entry *left;
+ struct vm_map_entry *right;
+ vm_offset_t start;
+ vm_offset_t end;
+ vm_offset_t avail_ssize;
+ vm_size_t adj_free;
+ vm_size_t max_free;
+ ...
+};
+.Ed
+.Pp
+The free space algorithm adds two fields to
+.Vt "struct vm_map_entry" :
+.Va adj_free
+and
+.Va max_free .
+The
+.Va adj_free
+field
+is the amount of free address space adjacent to and immediately
+following (higher address) the map entry.
+This field is unused in the map header.
+Note that
+.Va adj_free
+depends on the linked list, not the splay tree and that
+.Va adj_free
+can be computed as:
+.Bd -literal -offset indent
+entry->adj_free = (entry->next == &map->header ?
+ map->max_offset : entry->next->start) - entry->end;
+.Ed
+.Pp
+The
+.Va max_free
+field
+is the maximum amount of contiguous free space in the entry's subtree.
+Note that
+.Va max_free
+depends on the splay tree, not the linked list and that
+.Va max_free
+is computed by taking the maximum of its own
+.Va adj_free
+and the
+.Va max_free
+of its left and right subtrees.
+Again,
+.Va max_free
+is unused in the map header.
+.Pp
+These fields allow for an
+.Fn O "log n"
+implementation of
+.Fn vm_map_findspace .
+Using
+.Va max_free ,
+we can immediately test for a sufficiently large free region
+in an entire subtree.
+This makes it possible to find a first-fit free region of a given size
+in one pass down the tree, so
+.Fn O "log n"
+amortized using splay trees.
+.Pp
+When a free region changes size, we must update
+.Va adj_free
+and
+.Va max_free
+in the preceding map entry and propagate
+.Va max_free
+up the tree.
+This is handled in
+.Fn vm_map_entry_link
+and
+.Fn vm_map_entry_unlink
+for the cases of inserting and deleting an entry.
+Note that
+.Fn vm_map_entry_link
+updates both the new entry and the previous entry, and that
+.Fn vm_map_entry_unlink
+updates the previous entry.
+Also note that
+.Va max_free
+is not actually propagated up the tree.
+Instead, that entry is first splayed to the root and
+then the change is made there.
+This is a common technique in splay trees and is also
+how map entries are linked and unlinked into the tree.
+.Pp
+The
+.Fn vm_map_entry_resize_free
+function updates the free space variables in the given
+.Fa entry
+and propagates those values up the tree.
+This function should be called whenever a map entry is resized
+in-place, that is, by modifying its
+.Va start
+or
+.Va end
+values.
+Note that if you change
+.Va end ,
+then you should resize that entry, but if you change
+.Va start ,
+then you should resize the previous entry.
+The map must be locked before calling this function,
+and again, propagating
+.Va max_free
+is performed by splaying that entry to the root.
+.Sh EXAMPLES
+Consider adding a map entry with
+.Fn vm_map_insert .
+.Bd -literal -offset indent
+ret = vm_map_insert(map, object, offset, start, end, prot,
+ max_prot, cow);
+.Ed
+.Pp
+In this case, no further action is required to maintain
+consistency of the free space variables.
+The
+.Fn vm_map_insert
+function calls
+.Fn vm_map_entry_link
+which updates both the new entry and the previous entry.
+The same would be true for
+.Fn vm_map_delete
+and for calling
+.Fn vm_map_entry_link
+or
+.Fn vm_map_entry_unlink
+directly.
+.Pp
+Now consider resizing an entry in-place without a call to
+.Fn vm_map_entry_link
+or
+.Fn vm_map_entry_unlink .
+.Bd -literal -offset indent
+entry->start = new_start;
+if (entry->prev != &map->header)
+ vm_map_entry_resize_free(map, entry->prev);
+.Ed
+.Pp
+In this case, resetting
+.Va start
+changes the amount of free space following the previous entry,
+so we use
+.Fn vm_map_entry_resize_free
+to update the previous entry.
+.Pp
+Finally, suppose we change an entry's
+.Va end
+address.
+.Bd -literal -offset indent
+entry->end = new_end;
+vm_map_entry_resize_free(map, entry);
+.Ed
+.Pp
+Here, we call
+.Fn vm_map_entry_resize_free
+on the entry itself.
+.Sh SEE ALSO
+.Xr vm_map 9 ,
+.Xr vm_map_findspace 9
+.Rs
+.%A Daniel D. Sleator
+.%A Robert E. Tarjan
+.%T Self-Adjusting Binary Search Trees
+.%J JACM
+.%V vol. 32(3)
+.%P pp. 652-686
+.%D July 1985
+.Re
+.Sh HISTORY
+Splay trees were added to the VM map in
+.Fx 5.0 ,
+and the
+.Fn O "log n"
+tree-based free space algorithm was added in
+.Fx 5.3 .
+.Sh AUTHORS
+The tree-based free space algorithm and this manual page were written by
+.An Mark W. Krentel
+.Aq krentel@dreamscape.com .
diff --git a/share/man/man9/vm_map_find.9 b/share/man/man9/vm_map_find.9
new file mode 100644
index 0000000..4aa5fb8
--- /dev/null
+++ b/share/man/man9/vm_map_find.9
@@ -0,0 +1,127 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd May 10, 2008
+.Dt VM_MAP_FIND 9
+.Os
+.Sh NAME
+.Nm vm_map_find
+.Nd find a free region within a map, and optionally map a vm_object
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_find
+.Fa "vm_map_t map" "vm_object_t object" "vm_ooffset_t offset"
+.Fa "vm_offset_t *addr" "vm_size_t length" "int find_space"
+.Fa "vm_prot_t prot" "vm_prot_t max" "int cow"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_find
+function attempts to find a free region in the target
+.Fa map ,
+with the given
+.Fa length ,
+and will also optionally create a mapping of
+.Fa object .
+.Pp
+The arguments
+.Fa offset ,
+.Fa prot ,
+.Fa max ,
+and
+.Fa cow
+are passed unchanged to
+.Xr vm_map_insert 9
+when creating the mapping, if and only if a free region is found.
+.Pp
+If
+.Fa object
+is
+.Pf non- Dv NULL ,
+the reference count on the object must be incremented
+by the caller before calling this function to account for the new entry.
+.Pp
+If
+.Fa find_space
+is either
+.Dv VMFS_ALIGNED_SPACE
+or
+.Dv VMFS_ANY_SPACE ,
+the function will call
+.Xr vm_map_findspace 9
+to discover a free region.
+Moreover, if
+.Fa find_space
+is
+.Dv VMFS_ALIGNED_SPACE ,
+the address of the free region will be optimized for the use of superpages.
+Otherwise, if
+.Fa find_space
+is
+.Dv VMFS_NO_SPACE ,
+.Xr vm_map_insert 9
+is called with the given address,
+.Fa addr .
+.Sh IMPLEMENTATION NOTES
+This function acquires a lock on
+.Fa map
+by calling
+.Xr vm_map_lock 9 ,
+and holds it until the function returns.
+.Pp
+The search for a free region is defined to be first-fit, from the address
+.Fa addr
+onwards.
+.Sh RETURN VALUES
+The
+.Fn vm_map_find
+function returns
+.Dv KERN_SUCCESS
+if the mapping was successfully created.
+If space could not be found or
+.Fa find_space
+was
+.Dv VMFS_NO_SPACE
+and the given address,
+.Fa addr ,
+was already mapped,
+.Dv KERN_NO_SPACE
+will be returned.
+If the discovered range turned out to be bogus,
+.Dv KERN_INVALID_ADDRESS
+will be returned.
+.Sh SEE ALSO
+.Xr vm_map 9 ,
+.Xr vm_map_findspace 9 ,
+.Xr vm_map_insert 9 ,
+.Xr vm_map_lock 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_findspace.9 b/share/man/man9/vm_map_findspace.9
new file mode 100644
index 0000000..a12e789
--- /dev/null
+++ b/share/man/man9/vm_map_findspace.9
@@ -0,0 +1,78 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_FINDSPACE 9
+.Os
+.Sh NAME
+.Nm vm_map_findspace
+.Nd find a free region within a map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_findspace
+.Fa "vm_map_t map" "vm_offset_t start" "vm_size_t length" "vm_offset_t *addr"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_findspace
+function attempts to find a region with sufficient space in the
+.Fa map
+for an object of size
+.Fa length
+at the address
+.Fa addr .
+.Sh IMPLEMENTATION NOTES
+It is the caller's responsibility to obtain a lock on the
+.Fa map
+using
+.Xr vm_map_lock 9
+before calling this function.
+.Pp
+This routine may call
+.Xr pmap_growkernel 9
+to grow the kernel's address space, if and only if the mapping is being
+made within the kernel address space, and if insufficient space remains
+in the
+.Va kernel_map .
+.Sh RETURN VALUES
+The
+.Fn vm_map_findspace
+function returns the value 0 if successful, and
+.Fa *addr
+will contain the first virtual address in the found region;
+otherwise, the value 1 is returned.
+.Sh SEE ALSO
+.Xr pmap_growkernel 9 ,
+.Xr vm_map 9 ,
+.Xr vm_map_entry_resize_free 9 ,
+.Xr vm_map_lock 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_inherit.9 b/share/man/man9/vm_map_inherit.9
new file mode 100644
index 0000000..fb5a9d5
--- /dev/null
+++ b/share/man/man9/vm_map_inherit.9
@@ -0,0 +1,85 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_INHERIT 9
+.Os
+.Sh NAME
+.Nm vm_map_inherit
+.Nd set fork inheritance flags for a range within a map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_inherit
+.Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end"
+.Fa "vm_inherit_t new_inheritance"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_inherit
+function sets the inheritance flags for the range
+.Fa start
+to
+.Fa end
+within the target
+.Fa map
+to the value
+.Fa new_inheritance .
+.Pp
+The
+.Fa new_inheritance
+flag must have one of the values
+.Dv VM_INHERIT_NONE ,
+.Dv VM_INHERIT_COPY ,
+or
+.Dv VM_INHERIT_SHARE .
+This affects how the map will be shared with child maps when the
+associated process forks.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn vm_map_inherit
+function obtains a lock on the
+.Fa map
+using
+.Xr vm_map_lock 9
+for the duration of the function.
+.Sh RETURN VALUES
+The
+.Fn vm_map_inherit
+function returns
+.Dv KERN_SUCCESS
+if the inheritance flags could be set.
+Otherwise, if the provided flags were invalid,
+.Dv KERN_INVALID_ARGUMENT
+will be returned.
+.Sh SEE ALSO
+.Xr fork 2
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_init.9 b/share/man/man9/vm_map_init.9
new file mode 100644
index 0000000..c65f611
--- /dev/null
+++ b/share/man/man9/vm_map_init.9
@@ -0,0 +1,59 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_INIT 9
+.Os
+.Sh NAME
+.Nm vm_map_init
+.Nd initialize a vm_map structure for process zero
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft void
+.Fn vm_map_init "vm_map_t map" "vm_offset_t min" "vm_offset_t max"
+.Sh DESCRIPTION
+The
+.Fn vm_map_init
+function initializes the system map
+.Fa map
+by setting its upper and lower address bounds to
+.Fa max
+and
+.Fa min
+respectively.
+.Pp
+It also initializes the system map mutex.
+.Sh IMPLEMENTATION NOTES
+This routine is for internal use only.
+It is called during early system initialization.
+.Sh SEE ALSO
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_insert.9 b/share/man/man9/vm_map_insert.9
new file mode 100644
index 0000000..3a6a51f
--- /dev/null
+++ b/share/man/man9/vm_map_insert.9
@@ -0,0 +1,96 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_INSERT 9
+.Os
+.Sh NAME
+.Nm vm_map_insert
+.Nd insert an object into a map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_insert
+.Fa "vm_map_t map" "vm_object_t object" "vm_ooffset_t offset"
+.Fa "vm_offset_t start" "vm_offset_t end" "vm_prot_t prot"
+.Fa "vm_prot_t max" "int cow"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_insert
+function inserts a mapping for the entire vm_object
+.Fa object
+into the target map
+.Fa map .
+.Pp
+The
+.Fa offset
+argument specifies the offset into the
+.Fa object
+at which to begin mapping.
+The object's size should match that of the specified address range.
+.Pp
+The
+.Fa start
+and
+.Fa end
+arguments specify the bounds of the mapped object's window in the
+address space of
+.Fa map .
+.Pp
+The
+.Fa cow
+argument specifies the flags which should be propagated to the new entry,
+for example, to indicate that this is a copy-on-write mapping.
+.Sh IMPLEMENTATION NOTES
+This function implicitly creates a new
+.Vt vm_map_entry
+by calling the internal function
+.Fn vm_map_entry_create .
+This function may use the
+.Va Giant
+lock to ensure that only a single thread is present in the function.
+.Sh RETURN VALUES
+The
+.Fn vm_map_insert
+function returns
+.Dv KERN_SUCCESS
+if the mapping could be made successfully.
+.Pp
+Otherwise,
+.Dv KERN_INVALID_ADDRESS
+will be returned if the start of the range could not be found, or
+.Dv KERN_NO_SPACE
+if the range was found to be part of an existing entry or if it
+overlaps the end of the map.
+.Sh SEE ALSO
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_lock.9 b/share/man/man9/vm_map_lock.9
new file mode 100644
index 0000000..619f8c7
--- /dev/null
+++ b/share/man/man9/vm_map_lock.9
@@ -0,0 +1,119 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_LOCK 9
+.Os
+.Sh NAME
+.Nm vm_map_lock ,
+.Nm vm_map_unlock ,
+.Nm vm_map_lock_read ,
+.Nm vm_map_unlock_read ,
+.Nm vm_map_trylock ,
+.Nm vm_map_trylock_read ,
+.Nm vm_map_lock_upgrade ,
+.Nm vm_map_lock_downgrade
+.Nd vm_map locking macros
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft void
+.Fn vm_map_lock "vm_map_t map"
+.Ft void
+.Fn vm_map_unlock "vm_map_t map"
+.Ft void
+.Fn vm_map_lock_read "vm_map_t map"
+.Ft void
+.Fn vm_map_unlock_read "vm_map_t map"
+.Ft int
+.Fn vm_map_trylock "vm_map_t map"
+.Ft int
+.Fn vm_map_trylock_read "vm_map_t map"
+.Ft int
+.Fn vm_map_lock_upgrade "vm_map_t map"
+.Ft int
+.Fn vm_map_lock_downgrade "vm_map_t map"
+.Sh DESCRIPTION
+The
+.Fn vm_map_lock
+macro obtains an exclusive lock on
+.Fa map .
+.Pp
+The
+.Fn vm_map_unlock
+macro releases an exclusive lock on
+.Fa map .
+.Pp
+The
+.Fn vm_map_lock_read
+macro obtains a read-lock on
+.Fa map .
+Currently this is implemented as an exclusive lock.
+.Pp
+The
+.Fn vm_map_unlock_read
+macro releases a read-lock on
+.Fa map .
+.Pp
+The
+.Fn vm_map_trylock
+macro attempts to obtain an exclusive lock on
+.Fa map .
+It returns FALSE if the lock cannot be immediately acquired;
+otherwise return TRUE with the lock acquired.
+.Pp
+The
+.Fn vm_map_trylock_read
+macro attempts to obtain a read-lock on
+.Fa map .
+It returns FALSE if the lock cannot be immediately acquired;
+otherwise return TRUE with the lock acquired.
+Currently this is implemented as an exclusive lock.
+.Pp
+The
+.Fn vm_map_lock_upgrade
+macro attempts to atomically upgrade a read-lock on
+.Fa map
+to an exclusive lock.
+As read-locks are currently implemented as exclusive locks,
+this macro is a no-op.
+.Pp
+The
+.Fn vm_map_lock_downgrade
+macro attempts to downgrade an exclusive lock on
+.Fa map
+to a read-lock.
+As read-locks are currently implemented as exclusive locks,
+this macro is a no-op.
+.Sh IMPLEMENTATION NOTES
+Currently, all of the locking macros implement their locks as sleep locks.
+.Sh SEE ALSO
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_lookup.9 b/share/man/man9/vm_map_lookup.9
new file mode 100644
index 0000000..759b5f6
--- /dev/null
+++ b/share/man/man9/vm_map_lookup.9
@@ -0,0 +1,88 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_LOOKUP 9
+.Os
+.Sh NAME
+.Nm vm_map_lookup ,
+.Nm vm_map_lookup_done
+.Nd lookup the vm_object backing a given virtual region
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_lookup
+.Fa "vm_map_t *var_map" "vm_offset_t vaddr" "vm_prot_t fault_type"
+.Fa "vm_map_entry_t *out_entry" "vm_object_t *object" "vm_pindex_t *pindex"
+.Fa "vm_prot_t *out_prot" "boolean_t *wired"
+.Fc
+.Ft void
+.Fn vm_map_lookup_done "vm_map_t map" "vm_map_entry_t entry"
+.Sh DESCRIPTION
+The
+.Fn vm_map_lookup
+function attempts to find the
+.Vt vm_object ,
+page index and protection, for the given virtual address
+.Fa vaddr ,
+in the map
+.Fa var_map ,
+assuming a page fault of the type
+.Fa fault_type
+had occurred.
+.Pp
+Return values are guaranteed until
+.Fn vm_map_lookup_done
+is called to release the lock.
+.Sh IMPLEMENTATION NOTES
+The function
+.Fn vm_map_lookup
+acquires a read-lock on the map
+.Fa *var_map ,
+but does not release it.
+The caller should invoke
+.Fn vm_map_lookup_done
+in order to release this lock.
+.Sh RETURN VALUES
+The
+.Fn vm_map_lookup
+function returns
+.Dv KERN_SUCCESS ,
+and sets the
+.Fa *object ,
+.Fa *pindex ,
+.Fa *out_prot ,
+and
+.Fa *out_entry
+arguments appropriately for the hypothetical page fault.
+.Sh SEE ALSO
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_madvise.9 b/share/man/man9/vm_map_madvise.9
new file mode 100644
index 0000000..97ba604
--- /dev/null
+++ b/share/man/man9/vm_map_madvise.9
@@ -0,0 +1,77 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_MADVISE 9
+.Os
+.Sh NAME
+.Nm vm_map_madvise
+.Nd apply advice about use of memory to map entries
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_madvise
+.Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "int behav"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_madvise
+function applies the flags
+.Fa behav
+to the entries within
+.Fa map
+between
+.Fa start
+and
+.Fa end .
+.Pp
+Advisories are classified as either those affecting the
+.Vt vm_map_entry
+structure, or those affecting the underlying objects.
+.Pp
+The
+.Fn vm_map_madvise
+function is used by the
+.Xr madvise 2
+system call.
+.Sh RETURN VALUES
+The
+.Fn vm_map_madvise
+function returns 0 if successful.
+If the
+.Fa behav
+argument was not recognised,
+.Dv KERN_INVALID_ARGUMENT
+is returned.
+.Sh SEE ALSO
+.Xr madvise 2 ,
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_max.9 b/share/man/man9/vm_map_max.9
new file mode 100644
index 0000000..e694983
--- /dev/null
+++ b/share/man/man9/vm_map_max.9
@@ -0,0 +1,66 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_MAX 9
+.Os
+.Sh NAME
+.Nm vm_map_max ,
+.Nm vm_map_min ,
+.Nm vm_map_pmap
+.Nd return map properties
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft vm_offset_t
+.Fn vm_map_max "vm_map_t map"
+.Ft vm_offset_t
+.Fn vm_map_min "vm_map_t map"
+.Ft pmap_t
+.Fn vm_map_pmap "vm_map_t map"
+.Sh DESCRIPTION
+The function
+.Fn vm_map_max
+returns the upper address bound of the map
+.Fa map .
+.Pp
+The function
+.Fn vm_map_min
+returns the lower address bound of the map
+.Fa map .
+.Pp
+The function
+.Fn vm_map_pmap
+returns a pointer to the physical map associated with the virtual map
+.Fa map .
+.Sh SEE ALSO
+.Xr pmap 9 ,
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_protect.9 b/share/man/man9/vm_map_protect.9
new file mode 100644
index 0000000..8976781
--- /dev/null
+++ b/share/man/man9/vm_map_protect.9
@@ -0,0 +1,93 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_PROTECT 9
+.Os
+.Sh NAME
+.Nm vm_map_protect
+.Nd apply protection bits to a virtual memory region
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_protect
+.Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "vm_prot_t new_prot"
+.Fa "boolean_t set_max"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_protect
+function sets the protection bits of the address region bounded by
+.Fa start
+and
+.Fa end
+within the map
+.Fa map
+to
+.Fa new_prot .
+.Pp
+If
+.Fa set_max
+is TRUE,
+.Fa new_prot
+is treated as the new
+.Va max_protection
+setting for each underlying entry.
+Otherwise, only the
+.Va protection
+field is affected.
+.Pp
+The range MUST be contiguous, and MUST NOT contain sub-maps.
+.Sh IMPLEMENTATION NOTES
+The function acquires a lock on the
+.Fa map
+for the duration, by calling
+.Xr vm_map_lock 9 .
+.Sh RETURN VALUES
+The
+.Fn vm_map_protect
+function returns
+.Dv KERN_SUCCESS
+if the protection bits could be set successfully.
+.Pp
+If a sub-map entry was encountered in the range,
+.Dv KERN_INVALID_ARGUMENT
+is returned.
+If the value of
+.Fa new_prot
+would exceed
+.Va max_protection
+for an entry within the range,
+.Dv KERN_PROTECTION_FAILURE
+is returned.
+.Sh SEE ALSO
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_remove.9 b/share/man/man9/vm_map_remove.9
new file mode 100644
index 0000000..53da533
--- /dev/null
+++ b/share/man/man9/vm_map_remove.9
@@ -0,0 +1,69 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_REMOVE 9
+.Os
+.Sh NAME
+.Nm vm_map_remove
+.Nd remove a virtual address range from a map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fn vm_map_remove "vm_map_t map" "vm_offset_t start" "vm_offset_t end"
+.Sh DESCRIPTION
+The
+.Fn vm_map_remove
+function removes the given address range bounded by
+.Fa start
+and
+.Fa end
+from the target
+.Fa map .
+.Sh IMPLEMENTATION NOTES
+This is the exported form of
+.Xr vm_map_delete 9
+which may be called by consumers of the VM subsystem.
+.Pp
+The function calls
+.Xr vm_map_lock 9
+to hold a lock on
+.Fa map
+for the duration of the function call.
+.Sh RETURN VALUES
+The
+.Fn vm_map_remove
+always returns
+.Dv KERN_SUCCESS .
+.Sh SEE ALSO
+.Xr vm_map 9 ,
+.Xr vm_map_delete 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_simplify_entry.9 b/share/man/man9/vm_map_simplify_entry.9
new file mode 100644
index 0000000..8bb5484
--- /dev/null
+++ b/share/man/man9/vm_map_simplify_entry.9
@@ -0,0 +1,61 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_SIMPLIFY_ENTRY 9
+.Os
+.Sh NAME
+.Nm vm_map_simplify_entry
+.Nd simplify a
+.Vt vm_map_entry
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft void
+.Fn vm_map_simplify_entry "vm_map_t map" "vm_map_entry_t entry"
+.Sh DESCRIPTION
+The
+.Fn vm_map_simplify_entry
+function simplifies the given
+.Fa entry
+by merging with either neighbour.
+The
+.Fa map
+must be locked upon entry.
+.Pp
+This function also has the ability to merge with both neighbours.
+.Pp
+This function guarantees that the passed entry remains valid, although
+possibly extended.
+.Sh SEE ALSO
+.Xr vm_map 9 ,
+.Xr vm_map_insert 9 ,
+.Xr vm_map_remove 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_stack.9 b/share/man/man9/vm_map_stack.9
new file mode 100644
index 0000000..dabe937
--- /dev/null
+++ b/share/man/man9/vm_map_stack.9
@@ -0,0 +1,132 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_STACK 9
+.Os
+.Sh NAME
+.Nm vm_map_stack ,
+.Nm vm_map_growstack
+.Nd manage process stacks
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_stack
+.Fa "vm_map_t map" "vm_offset_t addrbos" "vm_size_t max_ssize" "vm_prot_t prot"
+.Fa "vm_prot_t max" "int cow"
+.Fc
+.Ft int
+.Fn vm_map_growstack "struct proc *p" "vm_offset_t addr"
+.Sh DESCRIPTION
+The
+.Fn vm_map_stack
+function maps a process stack for a new process image.
+The stack is mapped
+.Fa addrbos
+in
+.Fa map ,
+with a maximum size of
+.Fa max_ssize .
+Copy-on-write flags passed in
+.Fa cow
+are also applied to the new mapping.
+Protection bits are supplied by
+.Fa prot
+and
+.Fa max .
+.Pp
+It is typically called by
+.Xr execve 2 .
+.Pp
+The
+.Fn vm_map_growstack
+function is responsible for growing a stack for the process
+.Fa p
+to the desired address
+.Fa addr ,
+similar to the legacy
+.Xr sbrk 2
+call.
+.Sh IMPLEMENTATION NOTES
+The
+.Fn vm_map_stack
+function calls
+.Xr vm_map_insert 9
+to create its mappings.
+.Pp
+The
+.Fn vm_map_growstack
+function acquires the
+.Va Giant
+lock, and the process lock on
+.Fa p ,
+for the duration of the call.
+.Sh RETURN VALUES
+The
+.Fn vm_map_stack
+function returns
+.Dv KERN_SUCCESS
+if the mapping was allocated successfully.
+.Pp
+Otherwise,
+if mapping the stack would exceed the process's VMEM resource limit,
+or if the specified bottom-of-stack address is out of range for the map,
+or if there is already a mapping at the address which would result,
+or if
+.Fa max_ssize
+could not be accommodated within the current mapping,
+.Dv KERN_NO_SPACE
+is returned.
+.Pp
+Other possible return values for this function are documented in
+.Xr vm_map_insert 9 .
+.Pp
+The
+.Fn vm_map_growstack
+function returns
+.Dv KERN_SUCCESS
+if
+.Fa addr
+is already mapped, or if the stack was grown successfully.
+.Pp
+It also returns
+.Dv KERN_SUCCESS
+if
+.Fa addr
+is outside the stack range; this is done in order to preserve
+compatibility with the deprecated
+.Fn grow
+function previously located in the file
+.Pa vm_machdep.c .
+.Sh SEE ALSO
+.Xr vm_map 9 ,
+.Xr vm_map_insert 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_submap.9 b/share/man/man9/vm_map_submap.9
new file mode 100644
index 0000000..704151a
--- /dev/null
+++ b/share/man/man9/vm_map_submap.9
@@ -0,0 +1,95 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_SUBMAP 9
+.Os
+.Sh NAME
+.Nm vm_map_submap
+.Nd create a subordinate map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fo vm_map_submap
+.Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "vm_map_t submap"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_submap
+function marks the range bounded by
+.Fa start
+and
+.Fa end
+within the map
+.Fa map
+as being handled by a subordinate map
+.Fa sub_map .
+.Pp
+It is generally called by the kernel memory allocator.
+.Sh IMPLEMENTATION NOTES
+This function is for internal use only.
+.Pp
+Both maps must exist.
+The range must have been created with
+.Xr vm_map_find 9
+previously.
+.Pp
+No other operations may have been performed on this range
+before calling this function.
+Only the
+.Fn vm_fault
+operation may be performed within this range after calling
+this function.
+.Pp
+To remove a submapping, one must first remove the range from
+the parent
+.Fa map ,
+and then destroy the
+.Fa sub_map .
+This procedure is not recommended.
+.Sh RETURN VALUES
+The
+.Fn vm_map_submap
+function returns
+.Dv KERN_SUCCESS
+if successful.
+.Pp
+Otherwise, it returns
+.Dv KERN_INVALID_ARGUMENT
+if the caller requested copy-on-write flags,
+or if the range specified for the sub-map was out of range for the parent map,
+or if a
+.Dv NULL
+backing object was specified.
+.Sh SEE ALSO
+.Xr vm_map 9 ,
+.Xr vm_map_find 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_map_wire.9 b/share/man/man9/vm_map_wire.9
new file mode 100644
index 0000000..12bb3f6
--- /dev/null
+++ b/share/man/man9/vm_map_wire.9
@@ -0,0 +1,114 @@
+.\"
+.\" Copyright (c) 2003 Bruce M Simpson <bms@spc.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$
+.\"
+.Dd July 19, 2003
+.Dt VM_MAP_WIRE 9
+.Os
+.Sh NAME
+.Nm vm_map_wire ,
+.Nm vm_map_unwire
+.Nd manage page wiring within a virtual memory map
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_map.h
+.Ft int
+.Fn vm_map_wire "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "int flags"
+.Ft int
+.Fo vm_map_unwire
+.Fa "vm_map_t map" "vm_offset_t start" "vm_offset_t end" "int flags"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_map_wire
+function is responsible for wiring pages in the range between
+.Fa start
+and
+.Fa end
+within the map
+.Fa map .
+Wired pages are locked into physical memory, and may not be paged out
+as long as their wire count remains above zero.
+.Pp
+The
+.Fn vm_map_unwire
+function performs the corresponding unwire operation.
+.Pp
+The
+.Fa flags
+argument is a bit mask, consisting of the following flags:
+.Pp
+If the
+.Dv VM_MAP_WIRE_USER
+flag is set, the function operates within user address space.
+.Pp
+If the
+.Dv VM_MAP_WIRE_HOLESOK
+flag is set, it may operate upon an arbitrary range within the
+address space of
+.Fa map .
+.Pp
+If a contiguous range is desired, callers should explicitly express
+their intent by specifying the
+.Dv VM_MAP_WIRE_NOHOLES
+flag.
+.Sh IMPLEMENTATION NOTES
+Both functions will attempt to acquire a lock on the map using
+.Xr vm_map_lock 9
+and hold it for the duration of the call.
+If they detect
+.Dv MAP_ENTRY_IN_TRANSITION ,
+they will call
+.Xr vm_map_unlock_and_wait 9
+until the map becomes available again.
+.Pp
+The map could have changed during this window as it was held by another
+consumer, therefore consumers of this interface should check for this
+condition using the return values below.
+.Sh RETURN VALUES
+The
+.Fn vm_map_wire
+and
+.Fn vm_map_unwire
+functions have identical return values.
+The functions return
+.Dv KERN_SUCCESS
+if all pages within the range were [un]wired successfully.
+.Pp
+Otherwise, if the specified range was not valid,
+or if the map changed while the
+.Dv MAP_ENTRY_IN_TRANSITION
+flag was set,
+.Dv KERN_INVALID_ADDRESS
+is returned.
+.Sh SEE ALSO
+.Xr mlockall 2 ,
+.Xr munlockall 2 ,
+.Xr vm_map 9
+.Sh AUTHORS
+This manual page was written by
+.An Bruce M Simpson Aq bms@spc.org .
diff --git a/share/man/man9/vm_page_alloc.9 b/share/man/man9/vm_page_alloc.9
new file mode 100644
index 0000000..02e2b93
--- /dev/null
+++ b/share/man/man9/vm_page_alloc.9
@@ -0,0 +1,107 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 13, 2001
+.Dt VM_PAGE_ALLOC 9
+.Os
+.Sh NAME
+.Nm vm_page_alloc
+.Nd "allocate a page for a"
+.Vt vm_object
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft vm_page_t
+.Fn vm_page_alloc "vm_object_t object" "vm_pindex_t pindex" "int page_req"
+.Sh DESCRIPTION
+The
+.Fn vm_page_alloc
+function allocates a page at
+.Fa pindex
+within
+.Fa object .
+It is assumed that a page has not already been allocated at
+.Fa pindex .
+The page returned is inserted into the object, but is not inserted
+into the pmap.
+.Pp
+.Fn vm_page_alloc
+will not block.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa page_req"
+.It Fa object
+The VM object to allocate the page for.
+.It Fa pindex
+The index into the object at which the page should be inserted.
+.It Fa page_req
+A flag indicating how the page should be allocated.
+.Bl -tag -width ".Dv VM_ALLOC_INTERRUPT"
+.It Dv VM_ALLOC_NORMAL
+The page should be allocated with no special treatment.
+.It Dv VM_ALLOC_SYSTEM
+The page can be allocated if the cache queue is empty and the free
+page count is above the interrupt reserved water mark.
+If
+.Dv VM_ALLOC_INTERRUPT
+is set, the page can be allocated as long as the free page count is
+greater than zero.
+This flag should be used only when the system really needs the page.
+.It Dv VM_ALLOC_INTERRUPT
+.Fn vm_page_alloc
+is being called during an interrupt and therefore the cache cannot
+be accessed.
+The page will only be returned successfully if the free count is greater
+than zero.
+.It Dv VM_ALLOC_ZERO
+Indicate a preference for a pre-zeroed page.
+There is no guarantee that the page thus returned will be zeroed, but
+it will be marked as such.
+.It Dv VM_ALLOC_NOOBJ
+The page is associated with an unmanaged memory region, that is, there
+is no backing VM object.
+This is typically used to allocate pages within the kernel virtual
+address space.
+.El
+.El
+.Sh RETURN VALUES
+The
+.Vt vm_page_t
+that was allocated is returned if successful; otherwise,
+.Dv NULL
+is returned.
+.Sh NOTES
+The pager process is always upgraded to
+.Dv VM_ALLOC_SYSTEM
+unless
+.Dv VM_ALLOC_INTERRUPT
+is set.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_bits.9 b/share/man/man9/vm_page_bits.9
new file mode 100644
index 0000000..991c763
--- /dev/null
+++ b/share/man/man9/vm_page_bits.9
@@ -0,0 +1,167 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd December 1, 2001
+.Dt VM_PAGE_BITS 9
+.Os
+.Sh NAME
+.Nm vm_page_bits ,
+.Nm vm_page_set_validclean ,
+.Nm vm_page_clear_dirty ,
+.Nm vm_page_set_invalid ,
+.Nm vm_page_zero_invalid ,
+.Nm vm_page_is_valid ,
+.Nm vm_page_test_dirty ,
+.Nm vm_page_dirty ,
+.Nm vm_page_undirty
+.Nd "manage page clean and dirty bits"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft int
+.Fn vm_page_bits "int base" "int size"
+.Ft void
+.Fn vm_page_set_validclean "vm_page_t m" "int base" "int size"
+.Ft void
+.Fn vm_page_clear_dirty "vm_page_t m" "int base" "int size"
+.Ft void
+.Fn vm_page_set_invalid "vm_page_t m" "int base" "int size"
+.Ft void
+.Fn vm_page_zero_invalid "vm_page_t m" "boolean_t setvalid"
+.Ft int
+.Fn vm_page_is_valid "vm_page_t m" "int base" "int size"
+.Ft void
+.Fn vm_page_test_dirty "vm_page_t m"
+.Ft void
+.Fn vm_page_dirty "vm_page_t m"
+.Ft void
+.Fn vm_page_undirty "vm_page_t m"
+.Sh DESCRIPTION
+.Fn vm_page_bits
+calculates the bits representing the
+.Dv DEV_BSIZE
+range of bytes between
+.Fa base
+and
+.Fa size .
+The byte range is expected to be within a single page, and if
+.Fa size
+is zero, no bits will be set.
+.Pp
+.Fn vm_page_set_validclean
+flags the byte range between
+.Fa base
+and
+.Fa size
+as valid and clean.
+The range is expected to be
+.Dv DEV_BSIZE
+aligned and no larger than
+.Dv PAGE_SIZE .
+If it is not properly aligned, any unaligned chucks of the
+.Dv DEV_BSIZE
+blocks at the beginning and end of the range will be zeroed.
+.Pp
+If
+.Fa base
+is zero and
+.Fa size
+is one page, the modified bit in the page map is cleared; as well,
+the
+.Dv PG_NOSYNC
+flag is cleared.
+.Pp
+.Fn vm_page_clear_dirty
+clears the dirty bits within a page in the range between
+.Fa base
+and
+.Fa size .
+The bits representing the range are calculated by calling
+.Fn vm_page_bits .
+.Pp
+.Fn vm_page_set_invalid
+clears the bits in both the valid and dirty flags representing
+the
+.Dv DEV_BSIZE
+blocks between
+.Fa base
+and
+.Fa size
+in the page.
+The bits are calculated by calling
+.Fn vm_page_bits .
+As well as clearing the bits within the page, the generation
+number within the object holding the page is incremented.
+.Pp
+.Fn vm_page_zero_invalid
+zeroes all of the blocks within the page that are currently
+flagged as invalid.
+If
+.Fa setvalid
+is
+.Dv TRUE ,
+all of the valid bits within the page are set.
+.Pp
+In some cases, such as NFS, the valid bits cannot be set
+in order to maintain cache consistency.
+.Pp
+.Fn vm_page_is_valid
+checks to determine if the all of the
+.Dv DEV_BSIZE
+blocks between
+.Fa base
+and
+.Fa size
+of the page are valid.
+If
+.Fa size
+is zero and the page is entirely invalid
+.Fn vm_page_is_valid
+will return
+.Dv TRUE ,
+in all other cases a size of zero will return
+.Dv FALSE .
+.Pp
+.Fn vm_page_test_dirty
+checks if a page has been modified via any of its physical maps,
+and if so, flags the entire page as dirty.
+.Fn vm_page_dirty
+is called to modify the dirty bits.
+.Pp
+.Fn vm_page_dirty
+flags the entire page as dirty.
+It is expected that the page is not currently on the cache queue.
+.Pp
+.Fn vm_page_undirty
+clears all of the dirty bits in a page.
+.Sh NOTES
+None of these functions are allowed to block.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_cache.9 b/share/man/man9/vm_page_cache.9
new file mode 100644
index 0000000..0379e8c
--- /dev/null
+++ b/share/man/man9/vm_page_cache.9
@@ -0,0 +1,51 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 24, 2001
+.Dt VM_PAGE_CACHE 9
+.Os
+.Sh NAME
+.Nm vm_page_cache
+.Nd "move a page onto the cache queue"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_cache "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_cache
+function moves a page onto the cache queue,
+and removes any protection that may be set on the page.
+If the page is busy, wired or unmanaged then the move
+to the cache queue will fail.
+If the page is dirty the system will panic.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_copy.9 b/share/man/man9/vm_page_copy.9
new file mode 100644
index 0000000..3cf7304
--- /dev/null
+++ b/share/man/man9/vm_page_copy.9
@@ -0,0 +1,57 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 17, 2001
+.Dt VM_PAGE_COPY 9
+.Os
+.Sh NAME
+.Nm vm_page_copy
+.Nd "copy a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_copy "vm_page_t src_m" "vm_page_t dst_m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_copy
+function copies the contents of
+.Fa src_m
+into
+.Fa dst_m .
+.Pp
+The entire contents of
+.Fa dst_m
+are marked as valid.
+.Pp
+The actual copy is performed by
+.Fn pmap_copy_page .
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_deactivate.9 b/share/man/man9/vm_page_deactivate.9
new file mode 100644
index 0000000..30bb7fa
--- /dev/null
+++ b/share/man/man9/vm_page_deactivate.9
@@ -0,0 +1,50 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 24, 2001
+.Dt VM_PAGE_DEACTIVATE 9
+.Os
+.Sh NAME
+.Nm vm_page_deactivate
+.Nd "deactivate a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_deactivate "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_deactivate
+function moves the given page to the inactive queue as long as it is
+unmanaged and is not wired.
+.Sh SEE ALSO
+.Xr vm_page_wire 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_dontneed.9 b/share/man/man9/vm_page_dontneed.9
new file mode 100644
index 0000000..99baa33
--- /dev/null
+++ b/share/man/man9/vm_page_dontneed.9
@@ -0,0 +1,59 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 30, 2001
+.Dt VM_PAGE_DONTNEED 9
+.Os
+.Sh NAME
+.Nm vm_page_dontneed
+.Nd "indicate that a page is not needed anymore"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_dontneed "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_dontneed
+function advises the VM system that the given page is no longer
+required.
+If the page is already in the inactive queue or in the cache queue, this
+function does nothing; otherwise the page is deactivated.
+.Pp
+Note that
+.Fn vm_page_dontneed
+does not necessarily deactivate a page, but instead implements an
+algorithm that attempts to prevent small objects from having their
+pages reused too quickly, and large objects from flushing smaller
+ones from the queues as their pages are released.
+.Sh SEE ALSO
+.Xr vm_page_deactivate 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_flag.9 b/share/man/man9/vm_page_flag.9
new file mode 100644
index 0000000..5a1d75f
--- /dev/null
+++ b/share/man/man9/vm_page_flag.9
@@ -0,0 +1,61 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 14, 2001
+.Dt VM_PAGE_FLAG 9
+.Os
+.Sh NAME
+.Nm vm_page_flag_clear , vm_page_flag_set
+.Nd "change page flags"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_flag_clear "vm_page_t m" "unsigned short bits"
+.Ft void
+.Fn vm_page_flag_set "vm_page_t m" "unsigned short bits"
+.Sh DESCRIPTION
+The
+.Fn vm_page_flag_clear
+atomically clears the specified bits on the page's flags.
+.Pp
+The
+.Fn vm_page_flag_set
+atomically sets the specified bits on the page's flags.
+.Pp
+The functions arguments are:
+.Bl -tag -width ".Fa bits"
+.It Fa m
+The page whose flags are updated.
+.It Fa bits
+The bits that are set or cleared on the page's flags.
+.El
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_free.9 b/share/man/man9/vm_page_free.9
new file mode 100644
index 0000000..a78e577
--- /dev/null
+++ b/share/man/man9/vm_page_free.9
@@ -0,0 +1,98 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 24, 2001
+.Dt VM_PAGE_FREE 9
+.Os
+.Sh NAME
+.Nm vm_page_free ,
+.Nm vm_page_free_toq ,
+.Nm vm_page_free_zero ,
+.Nm vm_page_try_to_free
+.Nd "free a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_free "vm_page_t m"
+.Ft void
+.Fn vm_page_free_toq "vm_page_t m"
+.Ft void
+.Fn vm_page_free_zero "vm_page_t m"
+.Ft int
+.Fn vm_page_try_to_free "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_free_toq
+function moves a page into the free queue, and disassociates it from
+its object.
+If the page is held, wired, already free, or its busy count is not
+zero, the system will panic.
+If the
+.Dv PG_ZERO
+flag is set on the page, it is placed at the end of the free queue;
+otherwise, it is placed at the front.
+.Pp
+If the page's object is of type
+.Dv OBJT_VNODE
+and it is the last page associated with the object, the underlying
+vnode may be freed.
+.Pp
+The
+.Fn vm_page_free
+and
+.Fn vm_page_free_zero
+functions both call
+.Fn vm_page_free_toq
+to actually free the page, but
+.Fn vm_page_free_zero
+sets the
+.Dv PG_ZERO
+flag and
+.Fn vm_page_free
+clears the
+.Dv PG_ZERO
+flag prior to the call to
+.Fn vm_page_free_toq .
+.Pp
+The
+.Fn vm_page_try_to_free
+function verifies that the page is not held, wired, busy or dirty, and
+if so, marks the page as busy, drops any protection that may be set on
+the page, and frees it.
+.Sh RETURN VALUES
+.Fn vm_page_try_to_free
+returns 1 if it is able to free the page; otherwise, 0 is returned.
+.Sh SEE ALSO
+.Xr vm_page_busy 9 ,
+.Xr vm_page_hold 9 ,
+.Xr vm_page_wire 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_grab.9 b/share/man/man9/vm_page_grab.9
new file mode 100644
index 0000000..d0d3a32
--- /dev/null
+++ b/share/man/man9/vm_page_grab.9
@@ -0,0 +1,70 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 7, 2001
+.Dt VM_PAGE_GRAB 9
+.Os
+.Sh NAME
+.Nm vm_page_grab
+.Nd "returns a page from an object"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft vm_page_t
+.Fn vm_page_grab "vm_object_t object" "vm_pindex_t pindex" "int allocflags"
+.Sh DESCRIPTION
+The
+.Fn vm_page_grab
+function returns the page at
+.Fa pindex
+from the given object.
+If the page exists and is busy,
+.Fn vm_page_grab
+will sleep while waiting for it.
+If the page does not exist, it is allocated.
+.Pp
+If
+.Dv VM_ALLOC_RETRY
+is not set in
+.Fa allocflags
+and the function sleeps, either getting the page from the object
+or while allocating it,
+.Dv NULL
+is returned.
+.Sh RETURN VALUES
+If successful,
+.Fn vm_page_grab
+returns the page; otherwise,
+.Dv NULL
+is returned.
+.Sh SEE ALSO
+.Xr vm_page_alloc 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_hold.9 b/share/man/man9/vm_page_hold.9
new file mode 100644
index 0000000..183fa40
--- /dev/null
+++ b/share/man/man9/vm_page_hold.9
@@ -0,0 +1,75 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 13, 2001
+.Dt VM_PAGE_HOLD 9
+.Os
+.Sh NAME
+.Nm vm_page_hold ,
+.Nm vm_page_unhold
+.Nd "update a page's hold count"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_hold "vm_page_t m"
+.Ft void
+.Fn vm_page_unhold "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_hold
+function increases the hold count on a page.
+This prevents the page daemon from freeing the page.
+.Pp
+.Fn vm_page_hold
+should only be used for very temporary wiring of a page,
+as that page will not be considered for paging or
+reallocation for as long as its hold count is greater
+than zero.
+Also note that while wired pages are removed from whatever
+queue they are on,
+.Fn vm_page_hold
+does not affect the location of the page.
+If it is on a queue prior to the call, it will still
+be there afterward.
+.Pp
+If the page needs to be held for a long period of time,
+.Xr vm_page_wire 9
+should be used.
+.Pp
+.Fn vm_page_unhold
+function reduces the hold count on a page.
+If the hold count is zero it is possible that the page will be freed by the
+page daemon.
+.Sh SEE ALSO
+.Xr vm_page_unwire 9 ,
+.Xr vm_page_wire 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_insert.9 b/share/man/man9/vm_page_insert.9
new file mode 100644
index 0000000..53f1eba
--- /dev/null
+++ b/share/man/man9/vm_page_insert.9
@@ -0,0 +1,96 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 17, 2001
+.Dt VM_PAGE_INSERT 9
+.Os
+.Sh NAME
+.Nm vm_page_insert ,
+.Nm vm_page_remove
+.Nd "add/remove page from an object"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_insert "vm_page_t m" "vm_object_t object" "vm_pindex_t pindex"
+.Ft void
+.Fn vm_page_remove "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_insert
+function adds a page to the given object at the given index.
+The page is added to both the VM page hash table and to the
+object's list of pages, but the hardware page tables are not updated.
+In the case of a user page, it will be faulted in when it is
+accessed.
+If the page is a kernel page, the caller is expected to
+handle adding the page to the kernel's pmap.
+.Pp
+If
+.Dv PG_WRITEABLE
+is set in the page's flags,
+.Dv OBJ_WRITEABLE
+and
+.Dv OBJ_MIGHTBEDIRTY
+are set in the object's flags.
+.Pp
+The
+.Fn vm_page_remove
+function removes the given page from its object, and from the
+VM page hash table.
+The page must be busy prior to this call, or the system will panic.
+The pmap entry for the page is not removed by this function.
+.Pp
+The arguments to
+.Fn vm_page_insert
+are:
+.Bl -tag -width ".Fa object"
+.It Fa m
+The page to add to the object.
+.It Fa object
+The object the page should be added to.
+.It Fa pindex
+The index into the object the page should be at.
+.El
+.Pp
+The arguments to
+.Fn vm_page_remove
+are:
+.Bl -tag -width ".Fa m"
+.It Fa m
+The page to remove.
+.El
+.Sh IMPLEMENTATION NOTES
+The index of a page in a VM object is the byte index into the
+same object truncated to a page boundary.
+For example, if the page size is 4096 bytes, and the address
+in the object is 81944, the page index is 20.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_io.9 b/share/man/man9/vm_page_io.9
new file mode 100644
index 0000000..396cb19
--- /dev/null
+++ b/share/man/man9/vm_page_io.9
@@ -0,0 +1,65 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 17, 2001
+.Dt VM_PAGE_IO_START 9
+.Os
+.Sh NAME
+.Nm vm_page_io_start ,
+.Nm vm_page_io_finish
+.Nd "ready or unready a page for I/O"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_io_start "vm_page_t m"
+.Ft void
+.Fn vm_page_io_finish "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_io_start
+function prepares the page for I/O by incrementing its busy flag by one.
+.Pp
+The
+.Fn vm_page_io_finish
+function lowers the busy count on the page by one, if the resulting busy
+count is zero, a
+.Xr wakeup 9
+will be issued if the page has been marked
+.Dv PG_WANTED .
+A page is typically marked
+.Dv PG_WANTED
+by a thread to register its interest in
+the page to either complete I/O or becoming available for general use.
+.Sh AUTHORS
+.An -nosplit
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca
+and
+.An Alfred Perlstein Aq alfred@FreeBSD.org .
diff --git a/share/man/man9/vm_page_lookup.9 b/share/man/man9/vm_page_lookup.9
new file mode 100644
index 0000000..7f8cd5e
--- /dev/null
+++ b/share/man/man9/vm_page_lookup.9
@@ -0,0 +1,63 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 13, 2001
+.Dt VM_PAGE_LOOKUP 9
+.Os
+.Sh NAME
+.Nm vm_page_lookup
+.Nd "lookup a vm page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft vm_page_t
+.Fn vm_page_lookup "vm_object_t object" "vm_pindex_t pindex"
+.Sh DESCRIPTION
+The
+.Fn vm_page_lookup
+function searches for a VM page given its VM object and index.
+If the page is not found,
+.Dv NULL
+is returned.
+Its arguments are:
+.Bl -tag -width ".Fa object"
+.It Fa object
+The VM object to search on.
+.It Fa pindex
+The page index to search on.
+.El
+.Sh RETURN VALUES
+A
+.Vt vm_page_t
+is returned if successful; otherwise,
+.Dv NULL
+is returned.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_protect.9 b/share/man/man9/vm_page_protect.9
new file mode 100644
index 0000000..8b4911d
--- /dev/null
+++ b/share/man/man9/vm_page_protect.9
@@ -0,0 +1,75 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 14, 2001
+.Dt VM_PAGE_PROTECT 9
+.Os
+.Sh NAME
+.Nm vm_page_protect
+.Nd "lower a page's protection"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_protect "vm_page_t mem" "int prot"
+.Sh DESCRIPTION
+The
+.Fn vm_page_protect
+function lowers a page's protection.
+The protection is never raised by this function; therefore, if the page is
+already at
+.Dv VM_PROT_NONE ,
+the function does nothing.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa prot"
+.It Fa mem
+The page whose protection is lowered.
+.It Fa prot
+The protection the page should be reduced to.
+If
+.Dv VM_PROT_NONE
+is specified, then the
+.Dv PG_WRITABLE
+and
+.Dv PG_MAPPED
+flags are cleared and the pmap_page's protection is set to
+.Dv VM_PROT_NONE .
+If
+.Dv VM_PROT_READ
+is specified, then the
+.Dv PG_WRITABLE
+flag is cleared and the pmap_page's protection is set to
+.Dv VM_PROT_READ .
+.El
+.Pp
+Higher protection requests are ignored.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_rename.9 b/share/man/man9/vm_page_rename.9
new file mode 100644
index 0000000..bb8591f
--- /dev/null
+++ b/share/man/man9/vm_page_rename.9
@@ -0,0 +1,72 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 17, 2001
+.Dt VM_PAGE_RENAME 9
+.Os
+.Sh NAME
+.Nm vm_page_rename
+.Nd "move a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fo vm_page_rename
+.Fa "vm_page_t m"
+.Fa "vm_object_t new_object"
+.Fa "vm_pindex_t new_pindex"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vm_page_rename
+function removes a page from one object, and adds it to another
+at the given page index.
+The page is added to the given object, and is removed from the
+object that is currently associated with.
+If the page is currently on the cache queue it will be deactivated
+unless it is wired or unmanaged, in which case the deactivation will
+fail.
+The entire page is marked as dirty after the move.
+.Pp
+The arguments to
+.Fn vm_page_rename
+are:
+.Bl -tag -width ".Fa new_object"
+.It Fa m
+The page to move.
+.It Fa new_object
+The object the page should be inserted into.
+.It Fa new_pindex
+The page index into
+.Fa new_object
+at which the new page should be inserted.
+.El
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_sleep_busy.9 b/share/man/man9/vm_page_sleep_busy.9
new file mode 100644
index 0000000..45aa977
--- /dev/null
+++ b/share/man/man9/vm_page_sleep_busy.9
@@ -0,0 +1,68 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 13, 2001
+.Dt VM_PAGE_SLEEP_BUSY 9
+.Os
+.Sh NAME
+.Nm vm_page_sleep_busy
+.Nd "wait for a busy page to become unbusy"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft int
+.Fn vm_page_sleep_busy "vm_page_t m" "int also_m_busy" "const char *wmesg"
+.Sh DESCRIPTION
+The
+.Fn vm_page_sleep_busy
+function waits until the
+.Dv PG_BUSY
+flag is cleared.
+If
+.Fa also_m_busy
+is non-zero, it also waits for
+.Fa m->busy
+to become zero.
+.Sh RETURN VALUES
+If
+.Fn vm_page_sleep_busy
+finds the page busy it returns
+.Dv TRUE .
+If not, it returns
+.Dv FALSE .
+Returning
+.Dv TRUE
+does not necessary mean that
+.Fn vm_page_sleep_busy
+slept, but only that
+.Fn splvm
+was called.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_wakeup.9 b/share/man/man9/vm_page_wakeup.9
new file mode 100644
index 0000000..adb03a1
--- /dev/null
+++ b/share/man/man9/vm_page_wakeup.9
@@ -0,0 +1,75 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 14, 2001
+.Dt VM_PAGE_BUSY 9
+.Os
+.Sh NAME
+.Nm vm_page_busy ,
+.Nm vm_page_flash ,
+.Nm vm_page_wakeup
+.Nd "handle the busying and unbusying of a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_busy "vm_page_t m"
+.Ft void
+.Fn vm_page_flash "vm_page_t m"
+.Ft void
+.Fn vm_page_wakeup "vm_page_t m"
+.Sh DESCRIPTION
+These functions handle the busying, unbusying and notification of the unbusying
+of a page.
+.Pp
+.Fn vm_page_busy
+sets the
+.Dv PG_BUSY
+flag in the page.
+.Pp
+.Fn vm_page_flash
+checks to see if there is anybody waiting on the page
+.Dv ( PG_WANTED
+will be set), and if so, clears the
+.Dv PG_WANTED
+flag and notifies whoever is waiting via
+.Fn wakeup .
+.Pp
+.Fn vm_page_wakeup
+clears the
+.Dv PG_BUSY
+flag on the page, and calls
+.Fn vm_page_flash
+in case somebody has been waiting for it.
+.Sh SEE ALSO
+.Xr vm_page_sleep_busy 9 ,
+.Xr wakeup 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_wire.9 b/share/man/man9/vm_page_wire.9
new file mode 100644
index 0000000..f988dd9
--- /dev/null
+++ b/share/man/man9/vm_page_wire.9
@@ -0,0 +1,67 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 13, 2001
+.Dt VM_PAGE_WIRE 9
+.Os
+.Sh NAME
+.Nm vm_page_wire ,
+.Nm vm_page_unwire
+.Nd "wire and unwire pages"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_page_wire "vm_page_t m"
+.Ft void
+.Fn vm_page_unwire "vm_page_t m" "int activate"
+.Sh DESCRIPTION
+The
+.Fn vm_page_wire
+function increments the wire count on a page, and removes it from
+whatever queue it is on.
+.Pp
+The
+.Fn vm_page_unwire
+function releases one of the wirings on the page.
+When
+.Va write_count
+reaches zero the page is placed back onto either the active queue
+(if
+.Fa activate
+is non-zero) or onto the inactive queue (if
+.Fa activate
+is zero).
+If the page is unmanaged
+.Dv ( PG_UNMANAGED
+is set) then the page is left on
+.Dv PQ_NONE .
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_page_zero_fill.9 b/share/man/man9/vm_page_zero_fill.9
new file mode 100644
index 0000000..2adb301
--- /dev/null
+++ b/share/man/man9/vm_page_zero_fill.9
@@ -0,0 +1,53 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 17, 2001
+.Dt VM_PAGE_ZERO_FILL 9
+.Os
+.Sh NAME
+.Nm vm_page_zero_fill
+.Nd "zero fill a page"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft boolean_t
+.Fn vm_page_zero_fill "vm_page_t m"
+.Sh DESCRIPTION
+The
+.Fn vm_page_zero_fill
+function zeros the given vm page by calling the machine dependent
+.Fn pmap_zero_page
+routine.
+.Pp
+.Fn vm_page_zero_fill
+always returns
+.Dv TRUE .
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vm_set_page_size.9 b/share/man/man9/vm_set_page_size.9
new file mode 100644
index 0000000..d37dee8
--- /dev/null
+++ b/share/man/man9/vm_set_page_size.9
@@ -0,0 +1,62 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 17, 2001
+.Dt VM_SET_PAGE_SIZE 9
+.Os
+.Sh NAME
+.Nm vm_set_page_size
+.Nd "initialize the system page size"
+.Sh SYNOPSIS
+.In sys/param.h
+.In vm/vm.h
+.In vm/vm_page.h
+.Ft void
+.Fn vm_set_page_size void
+.Sh DESCRIPTION
+The
+.Fn vm_set_page_size
+function initializes the system page size.
+If
+.Va cnt.v_page_size
+(see
+.In sys/vmmeter.h )
+equals 0,
+.Dv PAGE_SIZE
+is used; otherwise, the value stored in
+.Va cnt.v_page_size
+is used.
+If
+.Va cnt.v_page_size
+is not a power of two, the system will panic.
+.Pp
+.Fn vm_set_page_size
+must be called prior to any page size dependent functions.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vn_fullpath.9 b/share/man/man9/vn_fullpath.9
new file mode 100644
index 0000000..eff2105
--- /dev/null
+++ b/share/man/man9/vn_fullpath.9
@@ -0,0 +1,125 @@
+.\"
+.\" Copyright (c) 2003 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(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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd November 23, 2008
+.Dt VN_FULLPATH 9
+.Os
+.Sh NAME
+.Nm vn_fullpath
+.Nd "convert a vnode reference to a full pathname, given a process context"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fo vn_fullpath
+.Fa "struct thread *td" "struct vnode *vp" "char **retbuf" "char **freebuf"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn vn_fullpath
+function makes a
+.Dq "best effort"
+attempt to generate a string pathname for
+the passed vnode; the resulting path, if any, will be relative to
+the root directory of the process associated with the passed thread pointer.
+The
+.Fn vn_fullpath
+function
+is implemented by inspecting the VFS name cache, and attempting to
+reconstruct a path from the process root to the object.
+.Pp
+This process is necessarily unreliable for several reasons: intermediate
+entries in the path may not be found in the cache; files may have more
+than one name (hard links), not all file systems use the name cache
+(specifically, most synthetic file systems do not); a single name may
+be used for more than one file (in the context of file systems covering
+other file systems); a file may have no name (if deleted but still
+open or referenced).
+However, the resulting string may still be more useable to a user than
+a vnode pointer value, or a device number and inode number.
+Code consuming the results of this function should anticipate (and
+properly handle) failure.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa freebuf"
+.It Fa td
+The thread performing the call; this pointer will be dereferenced to find
+the process and its file descriptor structure, in order to identify the
+root vnode to use.
+.It Fa vp
+The vnode to search for. No need to be locked by the caller.
+.It Fa retbuf
+Pointer to a
+.Vt "char *"
+that
+.Fn vn_fullpath
+may (on success) point at a newly
+allocated buffer containing the resulting pathname.
+.It Fa freebuf
+Pointer to a
+.Vt "char *"
+that
+.Fn vn_fullpath
+may (on success) point at a buffer
+to be freed, when the caller is done with
+.Fa retbuf .
+.El
+.Pp
+Typical consumers will declare two character pointers:
+.Va fullpath
+and
+.Va freepath ;
+they will set
+.Va freepath
+to
+.Dv NULL ,
+and
+.Va fullpath
+to a name to use
+in the event that the call to
+.Fn vn_fullpath
+fails.
+After done with the value of
+.Va fullpath ,
+the caller will check if
+.Va freepath
+is
+.Pf non- Dv NULL ,
+and if so, invoke
+.Xr free 9
+with a pool type of
+.Dv M_TEMP .
+.Sh RETURN VALUES
+If the vnode is successfully converted to a pathname, 0 is returned;
+otherwise, an error number is returned.
+.Sh SEE ALSO
+.Xr free 9
+.Sh AUTHORS
+This manual page was written by
+.An Robert Watson Aq rwatson@FreeBSD.org .
diff --git a/share/man/man9/vn_isdisk.9 b/share/man/man9/vn_isdisk.9
new file mode 100644
index 0000000..5909634
--- /dev/null
+++ b/share/man/man9/vn_isdisk.9
@@ -0,0 +1,73 @@
+.\"
+.\" Copyright (C) 2001 Chad David <davidc@acns.ab.ca>. 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd July 9, 2001
+.Dt VN_ISDISK 9
+.Os
+.Sh NAME
+.Nm vn_isdisk
+.Nd "checks if a vnode represents a disk"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn vn_isdisk "struct vnode *vp" "int *errp"
+.Sh DESCRIPTION
+The
+.Fn vn_isdisk
+function checks to see if
+.Fa vp
+represents a disk.
+In order for
+.Fa vp
+to be a disk,
+it must be a character device,
+.Va v_rdev
+must be valid, and the
+.Vt cdevsw
+entry's
+.Va flags
+must have
+.Dv D_DISK
+set.
+.Pp
+Its arguments are:
+.Bl -tag -width ".Fa errp"
+.It Fa vp
+The vnode to check.
+.It Fa errp
+An integer pointer to store the error number in if the call fails.
+.El
+.Sh RETURN VALUES
+If the vnode represents a disk, 1 is returned; otherwise, 0
+is returned and
+.Fa errp
+will contain the error number.
+.Sh AUTHORS
+This manual page was written by
+.An Chad David Aq davidc@acns.ab.ca .
diff --git a/share/man/man9/vnode.9 b/share/man/man9/vnode.9
new file mode 100644
index 0000000..b55b19b
--- /dev/null
+++ b/share/man/man9/vnode.9
@@ -0,0 +1,167 @@
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd May 20, 2003
+.Os
+.Dt VNODE 9
+.Sh NAME
+.Nm vnode
+.Nd internal representation of a file or directory
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Sh DESCRIPTION
+The vnode is the focus of all file activity in
+.Ux .
+A vnode is described by
+.Vt "struct vnode" .
+There is a
+unique vnode allocated for each active file, each current directory,
+each mounted-on file, text file, and the root.
+.Pp
+Each vnode has three reference counts,
+.Va v_usecount ,
+.Va v_holdcnt
+and
+.Va v_writecount .
+The first is the number of clients within the kernel which are
+using this vnode.
+This count is maintained by
+.Xr vref 9 ,
+.Xr vrele 9
+and
+.Xr vput 9 .
+The second is the number of clients within the kernel who veto
+the recycling of this vnode.
+This count is
+maintained by
+.Xr vhold 9
+and
+.Xr vdrop 9 .
+When both the
+.Va v_usecount
+and the
+.Va v_holdcnt
+of a vnode reaches zero then the vnode will be put on the freelist
+and may be reused for another file, possibly in another file system.
+The transition to and from the freelist is handled by
+.Xr getnewvnode 9 ,
+.Xr vfree 9
+and
+.Xr vbusy 9 .
+The third is a count of the number of clients which are writing into
+the file.
+It is maintained by the
+.Xr open 2
+and
+.Xr close 2
+system calls.
+.Pp
+Any call which returns a vnode (e.g.\&
+.Xr vget 9 ,
+.Xr VOP_LOOKUP 9
+etc.)
+will increase the
+.Va v_usecount
+of the vnode by one.
+When the caller is finished with the vnode, it
+should release this reference by calling
+.Xr vrele 9
+(or
+.Xr vput 9
+if the vnode is locked).
+.Pp
+Other commonly used members of the vnode structure are
+.Va v_id
+which is used to maintain consistency in the name cache,
+.Va v_mount
+which points at the file system which owns the vnode,
+.Va v_type
+which contains the type of object the vnode represents and
+.Va v_data
+which is used by file systems to store file system specific data with
+the vnode.
+The
+.Va v_op
+field is used by the
+.Dv VOP_*
+macros to call functions in the file system which implement the vnode's
+functionality.
+.Sh VNODE TYPES
+.Bl -tag -width VSOCK
+.It Dv VNON
+No type.
+.It Dv VREG
+A regular file; may be with or without VM object backing.
+If you want to make sure this get a backing object, call
+.Xr vfs_object_create 9 .
+.It Dv VDIR
+A directory.
+.It Dv VBLK
+A block device; may be with or without VM object backing.
+If you want to make sure this get a backing object, call
+.Xr vfs_object_create 9 .
+.It Dv VCHR
+A character device.
+.It Dv VLNK
+A symbolic link.
+.It Dv VSOCK
+A socket.
+Advisory locking will not work on this.
+.It Dv VFIFO
+A FIFO (named pipe).
+Advisory locking will not work on this.
+.It Dv VBAD
+An old style bad sector map
+.El
+.Sh IMPLEMENTATION NOTES
+VFIFO uses the "struct fileops" from
+.Pa /sys/kern/sys_pipe.c .
+VSOCK uses the "struct fileops" from
+.Pa /sys/kern/sys_socket.c .
+Everything else uses the one from
+.Pa /sys/kern/vfs_vnops.c .
+.Pp
+The VFIFO/VSOCK code, which is why "struct fileops" is used at all, is
+an artifact of an incomplete integration of the VFS code into the
+kernel.
+.Pp
+Calls to
+.Xr malloc 9
+or
+.Xr free 9
+when holding a
+.Nm
+interlock, will cause a LOR (Lock Order Reversal) due to the
+intertwining of VM Objects and Vnodes.
+.Sh SEE ALSO
+.Xr malloc 9 ,
+.Xr VFS 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/vput.9 b/share/man/man9/vput.9
new file mode 100644
index 0000000..47bee09
--- /dev/null
+++ b/share/man/man9/vput.9
@@ -0,0 +1,63 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VPUT 9
+.Sh NAME
+.Nm vput
+.Nd "decrement the use count for a vnode and unlock it"
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft void
+.Fn vput "struct vnode *vp"
+.Sh DESCRIPTION
+Decrement the
+.Va v_usecount
+field of a vnode and unlock the vnode.
+.Bl -tag -width 2n
+.It Fa vp
+the vnode to decrement
+.El
+.Pp
+This operation is functionally equivalent to calling
+.Xr VOP_UNLOCK 9
+followed by
+.Xr vrele 9 .
+.Sh SEE ALSO
+.Xr vnode 9 ,
+.Xr VOP_UNLOCK 9 ,
+.Xr vref 9 ,
+.Xr vrele 9,
+.Xr vrefcnt 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/vref.9 b/share/man/man9/vref.9
new file mode 100644
index 0000000..d979fb3
--- /dev/null
+++ b/share/man/man9/vref.9
@@ -0,0 +1,68 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VREF 9
+.Sh NAME
+.Nm vref
+.Nd increment the use count for a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft void
+.Fn vref "struct vnode *vp"
+.Sh DESCRIPTION
+Increment the
+.Va v_usecount
+field of a vnode.
+.Bl -tag -width 2n
+.It Fa vp
+the vnode to increment
+.El
+.Pp
+Each vnode maintains a reference count of how many parts of the system
+are using the vnode.
+This allows the system to detect when a vnode is
+no longer being used and can be safely recycled for a different file.
+.Pp
+Any code in the system which is using a vnode (e.g.\& during the
+operation of some algorithm or to store in a data structure) should
+call
+.Fn vref .
+.Sh SEE ALSO
+.Xr vget 9 ,
+.Xr vnode 9 ,
+.Xr vput 9 ,
+.Xr vrefcnt 9 ,
+.Xr vrele 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/vrefcnt.9 b/share/man/man9/vrefcnt.9
new file mode 100644
index 0000000..fbf43df
--- /dev/null
+++ b/share/man/man9/vrefcnt.9
@@ -0,0 +1,53 @@
+.\" Copyright (C) 2007 Chad David <davidc@acns.ab.ca>.
+.\" 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd February 10, 2008
+.Os
+.Dt VREFCNT 9
+.Sh NAME
+.Nm vrefcnt
+.Nd returns the use count of a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft int
+.Fn vrefcnt "struct vnode *vp"
+.Sh DESCRIPTION
+Returns the use count of a vnode.
+.Pp
+See
+.Xr vnode 9
+for a detailed description of the vnode reference counts.
+.Sh SEE ALSO
+.Xr vget 9 ,
+.Xr vnode 9 ,
+.Xr vput 9 ,
+.Xr vrele 9
+.Sh AUTHORS
+This manual page was written by
+.An Chad David .
diff --git a/share/man/man9/vrele.9 b/share/man/man9/vrele.9
new file mode 100644
index 0000000..2491149
--- /dev/null
+++ b/share/man/man9/vrele.9
@@ -0,0 +1,65 @@
+.\" -*- nroff -*-
+.\"
+.\" Copyright (c) 1996 Doug Rabson
+.\"
+.\" All rights reserved.
+.\"
+.\" This program is free software.
+.\"
+.\" 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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd July 24, 1996
+.Os
+.Dt VRELE 9
+.Sh NAME
+.Nm vrele
+.Nd decrement the use count for a vnode
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/vnode.h
+.Ft void
+.Fn vrele "struct vnode *vp"
+.Sh DESCRIPTION
+Decrement the
+.Va v_usecount
+field of a vnode.
+.Bl -tag -width 2n
+.It Fa vp
+the vnode to decrement
+.El
+.Pp
+Any code in the system which is using a vnode should call
+.Fn vrele
+when it is finished with the vnode.
+If the
+.Va v_usecount
+field of the vnode reaches zero, then it will be placed on the free list.
+.Sh SEE ALSO
+.Xr vget 9 ,
+.Xr vnode 9 ,
+.Xr vput 9 ,
+.Xr vref 9 ,
+.Xr vrefcnt 9
+.Sh AUTHORS
+This manual page was written by
+.An Doug Rabson .
diff --git a/share/man/man9/vslock.9 b/share/man/man9/vslock.9
new file mode 100644
index 0000000..fdab0eb
--- /dev/null
+++ b/share/man/man9/vslock.9
@@ -0,0 +1,98 @@
+.\" $NetBSD: vslock.9,v 1.1 1996/06/15 20:47:29 pk Exp $
+.\"
+.\" Copyright (c) 1996 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Paul Kranenburg.
+.\"
+.\" 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 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.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd August 10, 2004
+.Dt VSLOCK 9
+.Os
+.Sh NAME
+.Nm vslock ,
+.Nm vsunlock
+.Nd lock/unlock user space addresses in memory
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/proc.h
+.In vm/vm.h
+.In vm/vm_extern.h
+.Ft int
+.Fn vslock "void *addr" "size_t len"
+.Ft void
+.Fn vsunlock "void *addr" "size_t len"
+.Sh DESCRIPTION
+The
+.Fn vslock
+and
+.Fn vsunlock
+functions respectively lock and unlock a range of
+addresses belonging to the currently running process into memory.
+The actual amount of memory locked is a multiple of the machine's page size.
+The starting page number is computed by truncating
+.Fa addr
+to the nearest preceding page boundary, and by rounding up
+.Fa addr +
+.Fa len
+to the next page boundary.
+The process context to use for this operation is taken from the
+global variable
+.Va curproc .
+.Sh RETURN VALUES
+The
+.Fn vslock
+function will return 0 on success, otherwise it will return
+one of the errors listed below.
+.Sh ERRORS
+The
+.Fn vslock
+function will fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The
+.Fa addr
+and
+.Fa len
+parameters specify a memory range that wraps around the end of the
+machine address space.
+.It Bq Er ENOMEM
+The size of the specified address range exceeds the system
+limit on locked memory.
+.It Bq Er ENOMEM
+Locking the requested address range would cause the process to exceed
+its per-process locked memory limit.
+.It Bq Er EFAULT
+Some portion of the indicated address range is not allocated.
+There was an error faulting/mapping a page.
+.El
diff --git a/share/man/man9/watchdog.9 b/share/man/man9/watchdog.9
new file mode 100644
index 0000000..25634c9
--- /dev/null
+++ b/share/man/man9/watchdog.9
@@ -0,0 +1,81 @@
+.\"
+.\" Copyright (c) 2004 Poul-Henning Kamp <phk@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 DEVELOPERS ``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 DEVELOPERS 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$
+.\"
+.Dd February 28, 2004
+.Dt WATCHDOG 9
+.Os
+.Sh NAME
+.Nm watchdog
+.Nd "software and hardware watchdog facility"
+.Sh SYNOPSIS
+.In sys/watchdog.h
+.Ft void
+.Fn watchdog_fn "void *private" "u_int cmd" "int *error"
+.Fn EVENTHANDLER_REGISTER watchdog_list watchdog_fn private 0
+.Fn EVENTHANDLER_DEREGISTER watchdog_list eventhandler_tag
+.Sh DESCRIPTION
+To implement a watchdog in software or hardware, only a single
+function needs to be written and registered on the global
+.Va watchdog_list .
+.Pp
+The function must examine the
+.Fa cmd
+argument and act on it as
+follows:
+.Pp
+If
+.Fa cmd
+is zero, the watchdog must be disabled and the
+.Fa error
+argument left untouched.
+If the watchdog cannot be disabled, the
+.Fa error
+argument must be set to
+.Dv EOPNOTSUPP .
+.Pp
+Else the watchdog should be reset and configured to a timeout of
+.Pq 1 << Pq Fa cmd No & Dv WD_INTERVAL
+nanoseconds or larger and the
+.Fa error
+argument be set to zero to signal arming of a watchdog.
+.Pp
+If the watchdog cannot be configured to the proposed timeout, it
+must be disabled and the
+.Fa error
+argument left as is (to avoid hiding the arming of another watchdog).
+.Pp
+There is no specification of what the watchdog should do when it
+times out, but a hardware reset or similar
+.Dq "drastic but certain"
+behaviour is recommended.
+.Sh SEE ALSO
+.Xr watchdog 4
+.Sh AUTHORS
+.An -nosplit
+The
+.Nm
+facility and this manual page was written
+.An Poul-Henning Kamp Aq phk@FreeBSD.org .
diff --git a/share/man/man9/zero_copy.9 b/share/man/man9/zero_copy.9
new file mode 100644
index 0000000..50488d3
--- /dev/null
+++ b/share/man/man9/zero_copy.9
@@ -0,0 +1,168 @@
+.\"
+.\" Copyright (c) 2002 Kenneth D. Merry.
+.\" 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,
+.\" without modification, immediately at the beginning of the file.
+.\" 2. 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 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$
+.\"
+.Dd December 5, 2004
+.Dt ZERO_COPY 9
+.Os
+.Sh NAME
+.Nm zero_copy ,
+.Nm zero_copy_sockets
+.Nd "zero copy sockets code"
+.Sh SYNOPSIS
+.Cd "options ZERO_COPY_SOCKETS"
+.Sh DESCRIPTION
+The
+.Fx
+kernel includes a facility for eliminating data copies on
+socket reads and writes.
+.Pp
+This code is collectively known as the zero copy sockets code, because during
+normal network I/O, data will not be copied by the CPU at all.
+Rather it
+will be DMAed from the user's buffer to the NIC (for sends), or DMAed from
+the NIC to a buffer that will then be given to the user (receives).
+.Pp
+The zero copy sockets code uses the standard socket read and write
+semantics, and therefore has some limitations and restrictions that
+programmers should be aware of when trying to take advantage of this
+functionality.
+.Pp
+For sending data, there are no special requirements or capabilities that
+the sending NIC must have.
+The data written to the socket, though, must be
+at least a page in size and page aligned in order to be mapped into the
+kernel.
+If it does not meet the page size and alignment constraints, it
+will be copied into the kernel, as is normally the case with socket I/O.
+.Pp
+The user should be careful not to overwrite buffers that have been written
+to the socket before the data has been freed by the kernel, and the
+copy-on-write mapping cleared.
+If a buffer is overwritten before it has
+been given up by the kernel, the data will be copied, and no savings in CPU
+utilization and memory bandwidth utilization will be realized.
+.Pp
+The
+.Xr socket 2
+API does not really give the user any indication of when his data has
+actually been sent over the wire, or when the data has been freed from
+kernel buffers.
+For protocols like TCP, the data will be kept around in
+the kernel until it has been acknowledged by the other side; it must be
+kept until the acknowledgement is received in case retransmission is required.
+.Pp
+From an application standpoint, the best way to guarantee that the data has
+been sent out over the wire and freed by the kernel (for TCP-based sockets)
+is to set a socket buffer size (see the
+.Dv SO_SNDBUF
+socket option in the
+.Xr setsockopt 2
+manual page) appropriate for the application and network environment and then
+make sure you have sent out twice as much data as the socket buffer size
+before reusing a buffer.
+For TCP, the send and receive socket buffer sizes
+generally directly correspond to the TCP window size.
+.Pp
+For receiving data, in order to take advantage of the zero copy receive
+code, the user must have a NIC that is configured for an MTU greater than
+the architecture page size.
+(E.g., for i386 it would be 4KB.)
+Additionally, in order for zero copy receive to work,
+packet payloads must be at least a page in size and page aligned.
+.Pp
+Achieving page aligned payloads requires a NIC that can split an incoming
+packet into multiple buffers.
+It also generally requires some sort of
+intelligence on the NIC to make sure that the payload starts in its own
+buffer.
+This is called
+.Dq "header splitting" .
+Currently the only NICs with
+support for header splitting are Alteon Tigon 2 based boards running
+slightly modified firmware.
+The
+.Fx
+.Xr ti 4
+driver includes modified firmware for Tigon 2 boards only.
+Header
+splitting code can be written, however, for any NIC that allows putting
+received packets into multiple buffers and that has enough programmability
+to determine that the header should go into one buffer and the payload into
+another.
+.Pp
+You can also do a form of header splitting that does not require any NIC
+modifications if your NIC is at least capable of splitting packets into
+multiple buffers.
+This requires that you optimize the NIC driver for your
+most common packet header size.
+If that size (ethernet + IP + TCP headers)
+is generally 66 bytes, for instance, you would set the first buffer in a
+set for a particular packet to be 66 bytes long, and then subsequent
+buffers would be a page in size.
+For packets that have headers that are
+exactly 66 bytes long, your payload will be page aligned.
+.Pp
+The other requirement for zero copy receive to work is that the buffer that
+is the destination for the data read from a socket must be at least a page
+in size and page aligned.
+.Pp
+Obviously the requirements for receive side zero copy are impossible to
+meet without NIC hardware that is programmable enough to do header
+splitting of some sort.
+Since most NICs are not that programmable, or their
+manufacturers will not share the source code to their firmware, this approach
+to zero copy receive is not widely useful.
+.Pp
+There are other approaches, such as RDMA and TCP Offload, that may
+potentially help alleviate the CPU overhead associated with copying data
+out of the kernel.
+Most known techniques require some sort of support at
+the NIC level to work, and describing such techniques is beyond the scope
+of this manual page.
+.Pp
+The zero copy send and zero copy receive code can be individually turned
+off via the
+.Va kern.ipc.zero_copy.send
+and
+.Va kern.ipc.zero_copy.receive
+.Nm sysctl
+variables respectively.
+.Sh SEE ALSO
+.Xr sendfile 2 ,
+.Xr socket 2 ,
+.Xr ti 4
+.Sh HISTORY
+The zero copy sockets code first appeared in
+.Fx 5.0 ,
+although it has
+been in existence in patch form since at least mid-1999.
+.Sh AUTHORS
+.An -nosplit
+The zero copy sockets code was originally written by
+.An Andrew Gallatin Aq gallatin@FreeBSD.org
+and substantially modified and updated by
+.An Kenneth Merry Aq ken@FreeBSD.org .
diff --git a/share/man/man9/zone.9 b/share/man/man9/zone.9
new file mode 100644
index 0000000..953c6c1
--- /dev/null
+++ b/share/man/man9/zone.9
@@ -0,0 +1,214 @@
+.\"-
+.\" Copyright (c) 2001 Dag-Erling Coïdan Smørgrav
+.\" 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$
+.\"
+.Dd June 19, 2008
+.Dt ZONE 9
+.Os
+.Sh NAME
+.Nm uma_zcreate ,
+.Nm uma_zalloc ,
+.Nm uma_zalloc_arg ,
+.Nm uma_zfree ,
+.Nm uma_zfree_arg ,
+.Nm uma_zdestroy ,
+.Nm uma_zone_set_max
+.Nd zone allocator
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/queue.h
+.In vm/uma.h
+.Ft uma_zone_t
+.Fo uma_zcreate
+.Fa "char *name" "int size"
+.Fa "uma_ctor ctor" "uma_dtor dtor" "uma_init uminit" "uma_fini fini"
+.Fa "int align" "u_int16_t flags"
+.Fc
+.Ft "void *"
+.Fn uma_zalloc "uma_zone_t zone" "int flags"
+.Ft "void *"
+.Fn uma_zalloc_arg "uma_zone_t zone" "void *arg" "int flags"
+.Ft void
+.Fn uma_zfree "uma_zone_t zone" "void *item"
+.Ft void
+.Fn uma_zfree_arg "uma_zone_t zone" "void *item" "void *arg"
+.Ft void
+.Fn uma_zdestroy "uma_zone_t zone"
+.Ft void
+.Fn uma_zone_set_max "uma_zone_t zone" "int nitems"
+.Sh DESCRIPTION
+The zone allocator provides an efficient interface for managing
+dynamically-sized collections of items of similar size.
+The zone allocator can work with preallocated zones as well as with
+runtime-allocated ones, and is therefore available much earlier in the
+boot process than other memory management routines.
+.Pp
+A zone is an extensible collection of items of identical size.
+The zone allocator keeps track of which items are in use and which
+are not, and provides functions for allocating items from the zone and
+for releasing them back (which makes them available for later use).
+.Pp
+After the first allocation of an item,
+it will have been cleared to zeroes, however subsequent allocations
+will retain the contents as of the last free.
+.Pp
+The
+.Fn uma_zcreate
+function creates a new zone from which items may then be allocated from.
+The
+.Fa name
+argument is a text name of the zone for debugging and stats; this memory
+should not be freed until the zone has been deallocated.
+.Pp
+The
+.Fa ctor
+and
+.Fa dtor
+arguments are callback functions that are called by
+the uma subsystem at the time of the call to
+.Fn uma_zalloc
+and
+.Fn uma_zfree
+respectively.
+Their purpose is to provide hooks for initializing or
+destroying things that need to be done at the time of the allocation
+or release of a resource.
+A good usage for the
+.Fa ctor
+and
+.Fa dtor
+callbacks
+might be to adjust a global count of the number of objects allocated.
+.Pp
+The
+.Fa uminit
+and
+.Fa fini
+arguments are used to optimize the allocation of
+objects from the zone.
+They are called by the uma subsystem whenever
+it needs to allocate or free several items to satisfy requests or memory
+pressure.
+A good use for the
+.Fa uminit
+and
+.Fa fini
+callbacks might be to
+initialize and destroy mutexes contained within the object.
+This would
+allow one to re-use already initialized mutexes when an object is returned
+from the uma subsystem's object cache.
+They are not called on each call to
+.Fn uma_zalloc
+and
+.Fn uma_zfree
+but rather in a batch mode on several objects.
+.Pp
+To allocate an item from a zone, simply call
+.Fn uma_zalloc
+with a pointer to that zone
+and set the
+.Fa flags
+argument to selected flags as documented in
+.Xr malloc 9 .
+It will return a pointer to an item if successful,
+or
+.Dv NULL
+in the rare case where all items in the zone are in use and the
+allocator is unable to grow the zone
+or when
+.Dv M_NOWAIT
+is specified.
+.Pp
+Items are released back to the zone from which they were allocated by
+calling
+.Fn uma_zfree
+with a pointer to the zone and a pointer to the item.
+.Pp
+The variations
+.Fn uma_zalloc_arg
+and
+.Fn uma_zfree_arg
+allow to
+specify an argument for the
+.Dv ctor
+and
+.Dv dtor
+functions, respectively.
+.Pp
+Created zones,
+which are empty,
+can be destroyed using
+.Fn uma_zdestroy ,
+freeing all memory that was allocated for the zone.
+All items allocated from the zone with
+.Fn uma_zalloc
+must have been freed with
+.Fn uma_zfree
+before.
+.Pp
+The purpose of
+.Fn uma_zone_set_max
+is to limit the maximum amount of memory that the system can dedicated
+toward the zone specified by the
+.Fa zone
+argument.
+The
+.Fa nitems
+argument gives the upper limit of items in the zone.
+This limits the total number of items in the zone which includes:
+allocated items, free items and free items in the per-cpu caches.
+On systems with more than one CPU it may not be possible to allocate
+the specified number of items even when there is no shortage of memory,
+because all of the remaining free items may be in the caches of the
+other CPUs when the limit is hit.
+.Sh RETURN VALUES
+The
+.Fn uma_zalloc
+function returns a pointer to an item, or
+.Dv NULL
+if the zone ran out of unused items and the allocator was unable to
+enlarge it.
+.Sh SEE ALSO
+.Xr malloc 9
+.Sh HISTORY
+The zone allocator first appeared in
+.Fx 3.0 .
+It was radically changed in
+.Fx 5.0
+to function as a slab allocator.
+.Sh AUTHORS
+.An -nosplit
+The zone allocator was written by
+.An John S. Dyson .
+The zone allocator was rewritten in large parts by
+.An Jeff Roberson Aq jeff@FreeBSD.org
+to function as a slab allocator.
+.Pp
+This manual page was written by
+.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org .
+Changes for UMA by
+.An Jeroen Ruigrok van der Werven Aq asmodai@FreeBSD.org .
diff --git a/share/me/Makefile b/share/me/Makefile
new file mode 100644
index 0000000..6a9d6de
--- /dev/null
+++ b/share/me/Makefile
@@ -0,0 +1,29 @@
+# @(#)Makefile 8.2 (Berkeley) 3/27/94
+# $FreeBSD$
+
+MELIB= ${BINDIR}/me
+TMLIB= ${BINDIR}/tmac
+MESRCS= acm.me chars.me deltext.me eqn.me float.me footnote.me \
+ index.me letterhead.me local.me null.me refer.me sh.me \
+ tbl.me thesis.me
+TMSRCS= tmac.orig_me
+FILES= ${MESRCS:S/$/.tmp/} ${TMSRCS:S/$/.tmp/} revisions
+CLEANFILES+= ${MESRCS:S/$/.tmp/} ${TMSRCS:S/$/.tmp/}
+
+MAN= orig_me.7
+
+.for file in ${MESRCS} ${TMSRCS}
+${file}.tmp: ${file}
+ sed -f ${.CURDIR}/strip.sed < ${.ALLSRC} > ${.TARGET}
+.endfor
+
+.for file in ${MESRCS:S/$/.tmp/} revisions
+FILESDIR_${file}= ${MELIB}
+FILESNAME_${file}= ${file:R}
+.endfor
+.for file in ${TMSRCS:S/$/.tmp/}
+FILESDIR_${file}= ${TMLIB}
+FILESNAME_${file}= ${file:R}
+.endfor
+
+.include <bsd.prog.mk>
diff --git a/share/me/acm.me b/share/me/acm.me
new file mode 100644
index 0000000..e5d6703
--- /dev/null
+++ b/share/me/acm.me
@@ -0,0 +1,87 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)acm.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.de ac
+.ll 8.9i
+.nr $s 0.5i
+.if !\\n($T \
+. po 1.0i
+.ie "\\$2"*" \
+\{\
+. nr hm 0.375i
+. nr tm 1.125i
+. pl 14.25i
+. nr bm 1.5i
+. de $h ..
+. tl ''%''
+...
+. rm $f
+.\}
+.el \
+\{\
+. nr hm 0
+. nr tm 0
+. pl 15i
+. nr bm 3i
+. nr fm 0.9i
+. de $f ..
+. ti 0
+\h'|0.5i'\\\\n%\h'|1.25i'\\$2\h'|3i'\\$1
+. br
+...
+. rm $h
+.\}
+.bp
+.rs
+.sp 0.75i
+.rm ac
+..
+.if t .tm Line \n(c. -- macro .ac will not work in TROFF -- request ignored.
+.if t .rm ac
+.de +c \" *** begin chapter
+.if \\n(?A \
+\{\
+. nr ch 0 1
+. pn 1
+. ep
+. af % 1
+. bp
+.\}
+.nr ?A 0
+.sp 1i
+.if \\n(.$ \
+. $c "\\$1"
+..
+.nr c. \n(_0
diff --git a/share/me/chars.me b/share/me/chars.me
new file mode 100644
index 0000000..7ff7b4f
--- /dev/null
+++ b/share/me/chars.me
@@ -0,0 +1,94 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)chars.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.\" *** special characters ***
+.\" this file uses temp strings of the form #x.
+.if n \
+\{\
+. ds #[ \f1
+. ds #] \fP
+. ds #h 0
+. ds #v 0.8m
+. ds #f 0.3m
+.\}
+.if t \
+\{\
+. ds #[ \&
+. ds #] \&
+. ds #h ((1u-(\\\\n(.fu%2u))*0.13m)
+. ds #v 0.6m
+. ds #f 0
+.\}
+.\" \" accents
+.ds ' \k_\h'-(\\n(.wu*8/10-\*(#h)'\*(#[\(aa\h'|\\n_u'\*(#]
+.ds ` \k_\h'-(\\n(.wu*7/10-\*(#h)'\*(#[\(ga\h'|\\n_u'\*(#]
+.\" \" umlaut
+.ds : \k_\h'-(\\n(.wu*8/10-\*(#h+0.1m+\*(#f)'\v'-\*(#v'\*(#[\z.\h'0.2m+\*(#f'.\h'|\\n_u'\v'\*(#v'\*(#]
+.\" \" circumflex and tilde
+.ds ^ \k_\h'-(\\n(.wu-\*(#h-0.05m)'\*(#[^\h'|\\n_u'\*(#]
+.ds ~ \k_\h'-(\\n(.wu-\*(#h-0.05m)'\*(#[~\h'|\\n_u'\*(#]
+.\" \" cedilla and czech
+.ds , \k_\h'-(\\n(.wu)'\*(#[,\h'|\\n_u'\*(#]
+.ds v \k_\h'-(\\n(.wu*9/10-\*(#h)'\v'-\*(#v'\*(#[\s-4v\s0\v'\*(#v'\h'|\\n_u'\*(#]
+.\" \" Norwegian A or angstrom
+.ds o \k_\h'-(\\n(.wu+\w'\(de'u-\*(#h)/2u'\v'-0.4n'\*(#[\z\(de\v'0.4n'\h'|\\n_u'\*(#]
+.\" \" there exists, for all
+.ds qe \*(#[\v'0.5m'\z\(em\v'-0.65m'\z\(em\v'-0.65m'\z\(em\v'0.8m'\h'0.3m'|\h'-0.3m'\*(#]
+.ds qa \*(#[\h'-0.24m'\z\e\h'0.48m'\z\(sl\h'-0.24m'\v'-0.15m'\(em\v'0.15m'\*(#]
+.if t \
+\{\
+. ds qe \s-2\v'0.45m'\z\(em\v'-0.625m'\z\(em\v'-0.625m'\(em\v'0.8m'\s0\h'-0.1m'\v'-0.05m'\(br\v'0.05m'\h'0.1m'
+. ds qa \z\e\h'0.35m'\z\(sl\h'-0.33m'\v'-0.3m'\s-4\(em\s0\v'0.3m'\h'0.15m'
+.\}
+.if \n($T \
+\{\
+. ds ' \*(#[\h'-1'\(aa\*(#]
+. ds ` \*(#[\h'-1'\(ga\*(#]
+. ds : \&
+. ds ^ \*(#[\h'-1'^\*(#]
+. ds ~ \*(#[\h'-1'~\*(#]
+. ds , \*(#[\h'-1',\*(#]
+. ds v \&
+. ds o \&
+. ds qe EXISTS
+. ds qa FORALL
+.\}
+.rm #[
+.rm #]
+.rm #h
+.rm #v
+.rm #f
+.nr c. \n(_0
diff --git a/share/me/deltext.me b/share/me/deltext.me
new file mode 100644
index 0000000..44375cf
--- /dev/null
+++ b/share/me/deltext.me
@@ -0,0 +1,53 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)deltext.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.de (d \" *** begin delayed text
+.am |d )d
+.sp \\n(bsu
+..
+.de )d \" *** end delayed text
+.if \\n# \
+. nr $d +1
+.ds # [\\n($d]\k#
+.rr #
+..
+.de pd \" *** print delayed text
+.|d
+.rm |d
+.nr $d 1 1
+.ds # [1]\k#
+..
+.nr c. \n(_0
diff --git a/share/me/eqn.me b/share/me/eqn.me
new file mode 100644
index 0000000..df2671c
--- /dev/null
+++ b/share/me/eqn.me
@@ -0,0 +1,112 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)eqn.me 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.\" %beginstrip%
+.\"
+.de EQ \" *** equation start
+.ec
+.if !\\n(?e \
+\{\
+. if "\\n(.z"|e" .tm Line \\n(c. -- Nested .EQ request
+. @D 1 "\\$1" "\\$2"
+. @C 2
+. di |e
+.\}
+.ls 1
+.in 0
+.nf
+..
+.de EN \" *** equation end
+.br
+.ie "\\$1"C" \
+\{\
+. nr ?e 1
+. sp \\n(esu
+.\}
+.el \
+\{\
+. nr ?e 0
+. di
+. if \\n(dn \
+. @q \" actual equation output
+. rm |e
+. rm 10
+. rm 11
+. rm 12
+. rm 13
+. rm 14
+. rm 15
+. rm 16
+. rm 17
+. rm 18
+. rm 19
+. rm 20
+. rm 21
+. rm 22
+. rm 23
+. ev
+.\}
+..
+.de @q \" --- equation output
+.nr _Q \\n(dnu
+.ev
+.sp \\n(esu \" output rest of preceding text
+.@C 2 \" .ev 2 may be jumbled from header
+.ie \\n(_d=1 \
+. in (\\n(.lu+\\n($iu-\\n(dlu)/2u
+.el .ie \\n(_d=2 \
+. in \\n($iu
+.el .ie \\n(_d=3 \
+. in \\n(biu+\\n($iu
+.el .if \\n(_d=4 \
+. in 0
+.if !"\\n(.z"" \!.ne \\n(_Qu
+.ne \\n(_Qu+\n(.Vu \" keep it on one page
+.mk _q
+.if \n@>1 .tm --@e: _Q=\\n(_Q _q=\\n(_q nl=\\n(nl |p=\\*(|p
+.if !"\\*(|p"" \
+\{\
+. rs
+. sp (\\n(_Qu-\\n(.vu)/2u
+. tl """\\*(|p"
+. rt \\n(_qu
+.\}
+.|e
+.sp |\\n(_qu+\\n(_Qu
+.sp \\n(esu+\\n(.Lv-1v
+.rr _q
+.rr _Q
+..
+.nr c. \n(_0
diff --git a/share/me/float.me b/share/me/float.me
new file mode 100644
index 0000000..b9ff0b0
--- /dev/null
+++ b/share/me/float.me
@@ -0,0 +1,100 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)float.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.de (z \" *** begin floating keep
+.if \n@>4 .tm >> (z, .z=\n(.z
+.@D 4 \\$1 \\$2
+.@(
+.nr ?T 0
+..
+.de )z \" *** end floating keep
+.if \n@>4 .tm >> )z, .z=\n(.z
+.sp \\n(zsu
+.@)
+.if \n@>4 .tm -- )z << @), .z=\n(.z
+.rr _0
+.if !\\n(?b \
+. nr dn +(\\n(ppu*\\n($ru)/2u+\\n(zsu
+.nr dl -\n(.H \" fudge factor necessary to make it work
+.ie ((\\n(dn+\n(.V)>=\\n(.t):(\\n(?a):((\\n(dl>\\n($l)&(\\n($c>1)) \
+\{\
+. nr ?a 1
+. if (\\n(dl>\\n($l)&(\\n($m>1) \
+. nr ?w 1 \" mark wider than one column (top)
+. ds |x |t
+.\}
+.el \
+\{\
+. nr ?b 1
+. if (\\n(dl>\\n($l)&(\\n($m>1) \
+. nr ?W 1 \" mark wider than one column (bottom)
+. nr _b +\\n(dnu
+. ch @f -\\n(_bu
+. ds |x |b
+.\}
+.da \\*(|x \" copy to save macro
+.nf
+.ls 1
+.nr ?k 1
+.if \n@>4 .tm -- )z >> \\*(|x
+\!.if \\\\n(nl>(\\\\n(tm+2v) .ne \\n(dnu-\\n(zsu
+.|k\" \" and the body
+.ec
+.if \n@>4 .tm -- )z << \\*(|x, .z=\\n(.z
+.nr ?k 0
+.rm |k\" \" remove the temp macro
+.da
+.in 0
+.ls 1
+.xl \\n($lu
+.ev
+.if \n@>4 .tm << )z, .z=\\n(.z
+..
+.de @k \" --- output floating keep
+.if \n@>4 .tm >> @k, $1=\\$1, .z=\\n(.z
+.ev 1
+.nf
+.ls 1
+.in 0
+.sp \\n(zsu
+.\\$1
+.ec
+.br
+.rm \\$1
+.ev
+.nr ?T 0
+..
+.nr c. \n(_0
diff --git a/share/me/footnote.me b/share/me/footnote.me
new file mode 100644
index 0000000..de567ed
--- /dev/null
+++ b/share/me/footnote.me
@@ -0,0 +1,118 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)footnote.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.de (f \" *** begin footnote
+.ec
+.if "\\n(.z"|f" .tm Line \\n(c. -- Illegal footnote nesting
+.ie "\\n(.z"" \
+\{\
+. nr _D \\n(dn
+. nr _0 1v+\\n(nlu
+. ev 2
+. da |f
+. in 0
+. xl \\n($lu-\\n(fuu
+. @F \\n(ff
+. sz \\n(fp
+. vs \\n(.su*\\n($Ru
+. if !\\n(?f \
+\{\
+. nr _b +1v \" allow space for $s
+. $s
+. \}
+. br
+. if \\n(.p-\\n(_b-\\n(_0-\\n(.h-1v-\\n(fs<0 \
+\{\
+. da\" \" won't fit on page at all
+. bc
+. if !\\n(?f \
+. rm |f
+. da |f
+.\" next five lines could be dropped if headers had their own environment
+. in 0 \" reset everything from .bc
+. xl \\n($lu-\\n(fuu
+. @F \\n(ff
+. sz \\n(fp
+. vs \\n(.su*\\n($Ru
+. if !\\n(?f \
+. $s
+. br
+. \}
+. rr _0
+. sp \\n(fsu
+. nr ?f 1
+. fi
+. if !"\\$1"_" \
+. ti \\n(fiu
+. if \n@>2 .tm << (f $f=\\n($f
+.\}
+.el \
+\{\
+. ev 2
+\!.(f \\$1
+.\}
+..
+.de )f \" *** end footnote
+.ie "\\n(.z"|f" \
+\{\
+. if \\n* \
+. nr $f +1
+. ds * \\*[\\n($f\\*]\k*
+. rr *
+. in 0
+. da
+. ev
+. if \\n(_w<\\n(dl \
+. nr _w \\n(dl \" compute maximum fn width
+. nr _b +\\n(dn
+. ch @f -\\n(_bu
+. if \\n(.p-\\n(_b<=\\n(nl \
+. ch @f \\n(nlu+\n(.Vu
+. nr dn _D
+. rr _D
+.\}
+.el \
+\{\
+. br
+\!.)f
+. ev
+.\}
+..
+.if \n(ff<=0 \
+. nr ff 1 \" footnote font: Times Roman
+.if \n(fp<=0 \
+. nr fp 8 \" footnote pointsize
+.nr c. \n(_0
diff --git a/share/me/index.me b/share/me/index.me
new file mode 100644
index 0000000..a2fe528
--- /dev/null
+++ b/share/me/index.me
@@ -0,0 +1,109 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)index.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.de (x \" *** begin index entry
+.if \n@>4 .tm >> (x, .z=\\n(.z
+.ds |X x
+.if \\n(.$>0 \
+. ds |X \\$1
+.\" please note these cases MUST be in this order
+.ie !"\\n(.z"" \
+\{\
+. ev 2 \" if in a diversion, save & process later
+\!.(x \\*(|X
+.rm |X
+.\}
+.el \
+\{\
+. am %\\*(|X )x
+. sp \\n(xsu
+. ti -\\n(piu
+.\}
+..
+.de )x \" *** end index entry
+.if \n@>4 .tm >> )x, .z=\\n(.z
+.ie "\\n(.z"" \
+\{\
+. ds |x \\n%
+. if \\n(.$>0 \
+. ds |x \\$1
+. if "\\*(|x"_" \
+. ig ..
+. am %\\*(|X ..
+. if \w"\\$2">(\\n(.l-\\n(.i-\\n(.k) \
+. ti +\\n(xuu
+\\\\a\\\\t\\$2\\*(|x
+...
+. rm |x
+. rm |X
+.\}
+.el \
+\{\
+\!.)x \\$1 \\$2
+. br \" if in a diversion, save & process later
+. ev
+.\}
+..
+.de xp \" *** print the index
+.br
+.@C 2
+.ls 1
+.vs \\n(.su*\\n($Ru
+.fi
+.in +\\n(piu
+.ds |X x
+.if \\n(.$>0 \
+. ds |X \\$1
+.xl -(\\n(xuu+\w'...'u)
+.di |x
+.%\\*(|X
+.br
+.di
+.rm %\\*(|X
+.xl \\n($lu
+.rm |X
+.ev
+.nf
+.in 0
+.ta \\n(.lu-\\n(xuuR \\n(.luR
+.|x
+.fi
+.in
+.rm |x
+..
+.if \n(xu<=0 \
+. nr xu 0.5i \" index undent
+.nr c. \n(_0
diff --git a/share/me/letterhead.me b/share/me/letterhead.me
new file mode 100644
index 0000000..7792d29
--- /dev/null
+++ b/share/me/letterhead.me
@@ -0,0 +1,100 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)letterhead.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.\" This file defines the local letterhead. It should be changed as
+.\" necessary for your organization.
+.\" This version prints the U.C. letterhead, complete with seal.
+.\" Unfortunately, it assumes that you have ditroff and the seal font.
+.\"
+.nr xx \n(.d
+.nr xy \n(.u
+.nr xz \n(.f
+.lp
+.rs
+.nr xw \n(.s
+.nf
+.\" .ie "\*(.T"psc" \{\
+.ie \n(.g \{\
+. po 0.85i
+. sp |0.7i
+. ft R \}
+.el \{\
+. po 0.4i
+. sp |0.5i
+. ie "\*(.T"ip" \
+. ft R
+. el \
+. ft cr
+.\}
+.ps 12
+.vs 0.14i
+.in 0
+UNIVERSITY OF CALIFORNIA, BERKELEY
+.sp 0.3i-1v
+.ie "\*(.T"psc" \{\
+\l'11.3c' \h'|13.5c'\l'4.2c'
+.br
+\s6\|BERKELEY \(bu DAVIS \(bu IRVINE \(bu LOS ANGELES \(bu RIVERSIDE \(bu SAN DIEGO \(bu SAN FRANCISCO \h'|11.35c' \z\(uc \h'|13.85c' SANTA BARBARA \(bu SANTA CRUZ\s10
+.sp -0.2c
+\l'11.3c' \h'|13.5c'\l'4.2c'\s7 \}
+.el \{\
+.ps 7
+\D't 0.013i'\D'l 4.5i 0'\h'0.83i'\D'l 1.85i 0'
+.sp 0.13i-1v
+\!s5
+\D't 0.024i'\|BERKELEY \v'-0.035i'\D'l 0 0'\v'0.035i' DAVIS \v'-0.035i'\D'l 0 0'\v'0.035i' IRVINE \v'-0.035i'\D'l 0 0'\v'0.035i' LOS ANGELES \v'-0.035i'\D'l 0 0'\v'0.035i' RIVERSIDE \v'-0.035i'\D'l 0 0'\v'0.035i' SAN DIEGO \v'-0.035i'\D'l 0 0'\v'0.035i' SAN FRANCISCO\h'|4.9i'\u\f(slseal\fP\h'|5.475i'\dSANTA BARBARA \v'-0.035i'\D'l 0 0'\v'0.035i' SANTA CRUZ
+.sp 0.07i-1v
+\D't 0.013i'\D'l 4.5i 0'\h'0.83i'\D'l 1.85i 0' \}
+.sp 0.5i-1v
+\|COLLEGE OF ENGINEERING\h'|4.1i'BERKELEY, CALIFORNIA 94720
+\|DEPARTMENT OF ELECTRICAL ENGINEERING
+\0\0AND COMPUTER SCIENCES\D't 3u'
+\|COMPUTER SCIENCE DIVISION
+.ft \n(xz
+.ps \n(xw
+.if "\$1"d" \
+\{\
+. sp 4p
+\h'|4.1i'\*(td
+.\}
+.if \n(xy .fi
+.ie \n(xx>\n(.d \
+. sp |\n(xxu
+.el .sp 0.3i
+.vs
+.in
+.po
+.nr c. \n(_0
diff --git a/share/me/local.me b/share/me/local.me
new file mode 100644
index 0000000..8139e8d
--- /dev/null
+++ b/share/me/local.me
@@ -0,0 +1,43 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)local.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.\" this file may contain local macros, which are initialized with
+.\" the ".lo" request. All macros and number registers in this file
+.\" should be named ".*X", where X is any letter (upper or lower case)
+.\" or digit, to avoid naming conflicts.
+.\"
+.\" *** insert new definitions before this line ***
+.nr c. \n(_0
diff --git a/share/me/null.me b/share/me/null.me
new file mode 100644
index 0000000..df6385e
--- /dev/null
+++ b/share/me/null.me
@@ -0,0 +1,39 @@
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)null.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.\" This file should be null -- it is called when tmac.e is sourced
+.\" for the second... time. Of course, you could give an error
+.\" message.....
+.cc .
diff --git a/share/me/orig_me.7 b/share/me/orig_me.7
new file mode 100644
index 0000000..afb7cb9
--- /dev/null
+++ b/share/me/orig_me.7
@@ -0,0 +1,318 @@
+.\" Copyright (c) 1980, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)me.7 8.1 (Berkeley) 6/5/93
+.\" $FreeBSD$
+.\"
+.hc %
+.TH ORIG_ME 7 "June 5, 1993"
+.UC 3
+.SH NAME
+orig_me \- macros for formatting papers
+.SH SYNOPSIS
+.B "nroff \-orig_me"
+[ options ]
+file ...
+.br
+.B "troff \-orig_me"
+[ options ]
+file ...
+.SH DESCRIPTION
+This package of
+.I nroff
+and
+.I troff
+macro definitions provides a canned formatting
+facility for tech%nical papers in various formats.
+When producing 2-column output on a terminal, filter
+the output through
+.IR col (1).
+.PP
+The macro requests are defined below.
+Many
+.I nroff
+and
+.I troff
+requests are unsafe in conjunction with
+this package, however, these requests may be used with
+impunity after the first .pp:
+.nf
+.IP
+.ta \w'.sz +n 'u
+\&.bp begin new page
+\&.br break output line here
+\&.sp n insert n spacing lines
+\&.ls n (line spacing) n=1 single, n=2 double space
+\&.na no alignment of right margin
+\&.ce n center next n lines
+\&.ul n underline next n lines
+\&.sz +n add n to point size
+.fi
+.PP
+Output of the
+.I eqn,
+.I neqn,
+.I refer,
+and
+.IR tbl (1)
+preprocessors
+for equations and tables is acceptable as input.
+.SH FILES
+/usr/share/tmac/tmac.e
+.br
+/usr/share/me/*
+.SH "SEE ALSO"
+eqn(1), troff(1), refer(1), tbl(1)
+.br
+\-me Reference Manual, Eric P. Allman
+.br
+Writing Papers with Nroff Using \-me
+.tr &.
+.SH REQUESTS
+In the following list,
+\*(lqinitialization\*(rq
+refers to the first .pp, .lp, .ip, .np, .sh, or .uh macro.
+This list is incomplete;
+see
+.I "The \-me Reference Manual"
+for interesting details.
+.PP
+.ta \w'.eh \'x\'y\'z\' 'u +\w'Initial 'u +\w'Cause 'u
+.br
+.di x
+ \ka
+.br
+.di
+.in \nau
+.ti 0
+Request Initial Cause Explanation
+.ti 0
+ Value Break
+.br
+.in \nau
+.ti 0
+\&.(c - yes Begin centered block
+.ti 0
+\&.(d - no Begin delayed text
+.ti 0
+\&.(f - no Begin footnote
+.ti 0
+\&.(l - yes Begin list
+.ti 0
+\&.(q - yes Begin major quote
+.ti 0
+\&.(x \fIx\fR - no Begin indexed item in index
+.I x
+.ti 0
+\&.(z - no Begin floating keep
+.ti 0
+\&.)c - yes End centered block
+.ti 0
+\&.)d - yes End delayed text
+.ti 0
+\&.)f - yes End footnote
+.ti 0
+\&.)l - yes End list
+.ti 0
+\&.)q - yes End major quote
+.ti 0
+\&.)x - yes End index item
+.ti 0
+\&.)z - yes End floating keep
+.ti 0
+\&.++ \fIm H\fR - no Define paper section.
+.I m
+defines the part of the paper, and can be
+.B C
+(chapter),
+.B A
+(appendix),
+.B P
+(preliminary, e.g., abstract, table of contents, etc.),
+.B B
+(bibliography),
+.B RC
+(chapters renumbered from page one each chapter),
+or
+.B RA
+(appendix renumbered from page one).
+.ti 0
+\&.+c \fIT\fR - yes Begin chapter (or appendix, etc., as
+set by .++).
+.I T
+is the chapter title.
+.ti 0
+\&.1c 1 yes One column format on a new page.
+.ti 0
+\&.2c 1 yes Two column format.
+.ti 0
+\&.EN - yes Space after equation
+produced by
+.I eqn
+or
+.IR neqn .
+.ti 0
+\&.EQ \fIx y\fR - yes Precede equation; break out and
+add space.
+Equation number is
+.IR y .
+The optional argument \fIx\fR
+may be
+.I I
+to indent equation (default),
+.I L
+to left-adjust the equation, or
+.I C
+to center the equation.
+.ti 0
+\&.GE - yes End \fIgremlin\fP picture.
+.ti 0
+\&.GS - yes Begin \fIgremlin\fP picture.
+.ti 0
+\&.PE - yes End \fIpic\fP picture.
+.ti 0
+\&.PS - yes Begin \fIpic\fP picture.
+.ti 0
+\&.TE - yes End table.
+.ti 0
+\&.TH - yes End heading section of table.
+.ti 0
+\&.TS \fIx\fR - yes Begin table; if \fIx\fR is
+.I H
+table has repeated heading.
+.ti 0
+\&.ac \fIA N\fR - no Set up for ACM style output.
+.I A
+is the Author's name(s),
+.I N
+is the total number of pages.
+Must be given before the first initialization.
+.ti 0
+\&.b \fIx\fR no no Print
+.I x
+in boldface; if no argument switch to boldface.
+.ti 0
+\&.ba \fI+n\fR 0 yes Augments the base indent by
+.I n.
+This indent is used to set the indent on regular text
+(like paragraphs).
+.ti 0
+\&.bc no yes Begin new column
+.ti 0
+\&.bi \fIx\fR no no Print
+.I x
+in bold italics (nofill only)
+.ti 0
+\&.bu - yes Begin bulleted paragraph
+.ti 0
+\&.bx \fIx\fR no no Print \fIx\fR in a box (nofill only).
+.ti 0
+\&.ef \fI\'x\'y\'z\'\fR \'\'\'\' no Set even footer to x y z
+.ti 0
+\&.eh \fI\'x\'y\'z\'\fR \'\'\'\' no Set even header to x y z
+.ti 0
+\&.fo \fI\'x\'y\'z\'\fR \'\'\'\' no Set footer to x y z
+.ti 0
+\&.hx - no Suppress headers and footers on next page.
+.ti 0
+\&.he \fI\'x\'y\'z\'\fR \'\'\'\' no Set header to x y z
+.ti 0
+\&.hl - yes Draw a horizontal line
+.ti 0
+\&.i \fIx\fR no no Italicize
+.I x;
+if
+.I x
+missing, italic text follows.
+.ti 0
+\&.ip \fIx y\fR no yes Start indented paragraph,
+with hanging tag
+.IR x .
+Indentation is
+.I y
+ens (default 5).
+.ti 0
+\&.lp yes yes Start left-blocked paragraph.
+.ti 0
+\&.lo - no Read in a file of local macros of the
+form
+.BI \&.* x.
+Must be given before initialization.
+.ti 0
+\&.np 1 yes Start numbered paragraph.
+.ti 0
+\&.of \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd footer to x y z
+.ti 0
+\&.oh \fI\'x\'y\'z\'\fR \'\'\'\' no Set odd header to x y z
+.ti 0
+\&.pd - yes Print delayed text.
+.ti 0
+\&.pp no yes Begin paragraph.
+First line indented.
+.ti 0
+\&.r yes no Roman text follows.
+.ti 0
+\&.re - no Reset tabs to default values.
+.ti 0
+\&.sc no no Read in a file of special characters
+and diacritical marks.
+Must be given before initialization.
+.ti 0
+\&.sh \fIn x\fR - yes Section head follows,
+font automatically bold.
+.I n
+is level of section,
+.I x
+is title of section.
+.ti 0
+\&.sk no no Leave the next page blank.
+Only one page is remembered ahead.
+.ti 0
+\&.sm \fIx\fR - no Set
+.I x
+in a smaller pointsize.
+.ti 0
+\&.sz \fI+n\fR 10p no Augment the point size by
+.I n
+points.
+.ti 0
+\&.th no no Produce the paper in thesis format.
+Must be given before initialization.
+.ti 0
+\&.tp no yes Begin title page.
+.ti 0
+\&.u \fIx\fR - no Underline argument (even in \fItroff\fR).
+(Nofill only).
+.ti 0
+\&.uh - yes Like .sh but unnumbered.
+.ti 0
+\&.xp \fIx\fR - no Print index
+.I x.
diff --git a/share/me/refer.me b/share/me/refer.me
new file mode 100644
index 0000000..f24e501
--- /dev/null
+++ b/share/me/refer.me
@@ -0,0 +1,129 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)refer.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.de ][ \" *** refer output
+.if \\$1>5 .tm Bad arg to []
+.[\\$1
+..
+.de [0 \" --- other
+.(f
+.ip "\\*([F.\0"
+.if !"\\*([A"" \\*([A,
+.if !"\\*([T"" \\f2\\*([T\\f1\c
+.if !"\\*([T"" .if !"\\*([O"" ,\
+.ie !"\\*([O"" \\*([O
+.el .if !"\\*([T"" \&.
+.if !"\\*([D"" \\*([D.
+.@p
+.)f
+..
+.de [1 \" --- journal article
+.(f
+.ip "\\*([F.\0"
+\\*([A,
+.if !"\\*([T"" \\*(lq\\*([T,\\*(rq
+.if "\\*([V"" \\f2\\*([J\\f1,
+.if !"\\*([V"" \\f2\\*([J\\f1
+.if !"\\*([V"" .if n Vol.\&
+.if !"\\*([V"" \\f3\\*([V\\f1\c
+.if !"\\*([N"" (\\*([N)\c
+.if !"\\*([P"" \
+\{\
+. ie \\n([P>0 \ pp.\&
+. el \ p.\&
+\\*([P
+.\}
+.if !"\\*([I"" .if "\\*([R"" \\*([I,
+(\\*([D).
+.if !"\\*([O"" \\*([O
+.)f
+..
+.de [2 \" --- book
+.(f
+.ip "\\*([F.\0"
+\\*([A, \\f2\\*([T,\\f1
+\\*([I\c
+.if !"\\*([C"" , \\*([C\c
+ (\\*([D).
+.if !"\\*([G"" Gov't. ordering no. \\*([G
+.if !"\\*([O"" \\*([O
+.)f
+..
+.de [3 \" --- article in book
+.(f
+.ip "\\*([F.\0"
+\\*([A, \\*(lq\\*([T,\\*(rq
+.if !"\\*([P"" pp. \\*([P
+in \\f2\\*([B\\f1, \c
+.if !"\\*([E"" ed. \\*([E,\c
+.if !"\\*([I"" \\*([I\c
+.if !"\\*([C"" , \\*([C\c
+ (\\*([D).
+.if !"\\*([O"" \\*([O
+.)f
+..
+.de [4 \" --- report
+.(f
+.ip "\\*([F.\0"
+\\*([A, \\*(lq\\*([T,\\*(rq
+\\*([R\c
+.if !"\\*([G"" \& (\\*([G)\c
+.if !"\\*([I"" , \\*([I\c
+.if !"\\*([C"" , \\*([C\c
+ (\\*([D).
+.if !"\\*([O"" \\*([O
+.)f
+..
+.de [5 \" --- tm style
+.(f
+.ip "\\*([F.\0"
+\\*([A, \\f2\\*([T\\f1,
+.ie \\n(TN \\*([M.
+.el Bell Laboratories internal memorandum (\\*([D).
+.)f
+..
+.de ]<
+.$p References
+.lp
+.rm (f )f
+..
+.de ]>
+.sp
+..
+.de ]-
+.rm [V [P [A [T [N [C [B [O [R [I [E [D
+..
+.nr c. \n(_0
diff --git a/share/me/revisions b/share/me/revisions
new file mode 100644
index 0000000..e144063
--- /dev/null
+++ b/share/me/revisions
@@ -0,0 +1,230 @@
+2.28 12 May 86
+-- Fix footnotes if no -rv flag specified
+
+2.27 17 Apr 86
+-- Assume non-C/A/T typesetters -- use -rv2 to get old function
+
+2.26 27 Mar 86
+-- Always go into fill mode in .sh; necessary to get output format
+ correct.
+
+2.25 3 Mar 86
+-- Drop basic unit scaling on .sz and .ps requests; this confuses some
+ versions of troff.
+
+2.24 7 Jan 86
+-- Merge ditroff and troff versions.
+-- Add support for pic, gremlin, and ideal.
+-- Add .lh macro to print a letterhead.
+-- Adjust .bi (bold italics) to be more device resolution independent.
+
+2.23 23 Jun 85
+-- Allow .]< to initialize refer macros (as well as .]-).
+
+2.22 27 Apr 85
+-- Fix incorrect comment strip in $p macro.
+-- Drop into fill mode in .TS so that text boxes will work properly.
+
+2.21 4 Mar 85
+-- Change \*- macro from \- to \(em in troff.
+-- Change block indent (\n(bi) from 4n to 4m to look better in troff.
+
+2.20 18 Feb 85
+-- Don't reset ii register in .bu or .np
+
+2.19 14 Feb 85
+-- add .bu and .sm macros (bullet and smaller).
+-- have .np take a fixed .ip width.
+
+2.18 14 Feb 85
+-- Avoid cut marks on laser printers.
+
+2.17 14 Feb 85
+-- Some bug fixes as reported from many places.
+
+2.16 11 Oct 84
+-- Improve some tracing.
+-- Minor improvements from rrh.
+
+2.15 10 Apr 83
+-- Fix a name conflict between .sh and floating keeps (as suggested
+ by Hy Murviet).
+
+2.14 28 Dec 81
+-- Integrate the refer macros into -me. This is basically a cheap
+ and dirty modification of the -ms version, and is probably not
+ terribly compatible with the usual -me standards. This can be
+ tuned later if needed.
+
+2.13 22 Dec 81
+-- Allow the -rb<x> flag to set the font you want for bold font --
+ set it to font <x>. Default 2 (italic) in nroff, 3 (bold) in
+ troff.
+
+2.12 20 Mar 81
+-- Remove silly "." at top of page on dumb terminals -- lpr is smarter
+ now.
+
+2.11 19 Mar 81
+-- Fixed indexes to indent on second line.
+
+2.10 26 Feb 81
+-- Improvement to nested index solution, now works for ()b & ()z.
+
+2.9 10 Dec 80
+-- More stuff to make indices inside keeps work correctly.
+
+2.8 10 Nov 80
+-- Had .)c do a .br to insure that the final line is forced out.
+
+2.7 24 Sep 80
+-- Fixed bug in 2.6
+
+2.6 23 Sep 80
+-- Fixed problem introduced by 2.2 which occured in footnotes and
+ index entries in filled keeps
+
+2.5 29 Aug 80
+-- Changed umlaut to not be so tricky -- it seems to backfire.
+
+2.4 25 Aug 80
+-- Fixed bug in indices caused by 2.2.
+
+2.3 20 Aug 80
+-- Fixed bug in footnotes caused by 2.2.
+-- Changed temp file names that macros that do dynamic loading rename
+ themselves to. For example, if you say '.TS ... .(f' when both of
+ them have been used for the first time, the @T macro got used twice.
+
+2.2 18 Aug 80
+-- Suspended footnote & index processing until final output
+ (so that they will work properly in keeps).
+
+2.1 18 Aug 80
+-- Release 2. No changes.
+
+Mod 28 18 Aug 80
+-- If \nv is set on entry, handle .po differently (for vtroff).
+-- Allow ".nr fi 0".
+
+Mod 27 30 Jun 80
+-- Put in a cludge to try to make multi-columned output work
+ with wide floating keeps. Moves all wide keeps to the top
+ of the next real page.
+
+Mod 26 9 Nov 79
+-- Fixed footnote bug that caused the first line of footnotes
+ that were broken across a page to be indented.
+
+Mod 25 1 Oct 79
+-- Fixed footnote bug that caused footnotes invoked at the
+ top of pages to come out in bold font.
+-- Fixed equation bug that caused equations at the top of
+ page to be improperly centered.
+
+Mod 24 27 Sep 79
+-- Changed delimiter in all \w's to " from ', to allow for
+ apostrophes in labels.
+-- Increased footnote fudge factor.
+-- Changed \x factor in \*[ & \*< to be one half previous value.
+
+Mod 23 24 Aug 79
+-- Changed .ip to start new line if the tag is too long for
+ the space provided.
+
+Mod 22 11 Jul 79
+-- Changed .ac to handle new paper (with second parameter
+ == "*").
+
+Mod 21 24 Apr 79
+-- Changed \*[ and \*< to use \x -- to avoid line overlap.
+
+Mod 20 6 Apr 79
+-- Changed 12-pitch DTC terminals to still space 1/6 inch (instead
+ of 1/8 inch), unless the 'x' register is non-zero -- do-able with
+ the -rx1 option on the nroff command line.
+
+Mod 19 28 Mar 79
+-- Had .ep do a .rs, to avoid occasional problems (like with
+ .+c (again).
+-- Added the 'X' register: if non-zero on startup on a 12-pitch
+ terminal, it outputs 6 LPI instead of 8 LPI.
+
+Mod 18 26 Mar 79
+-- Had .+c reset indent, to solve problems of prelim material
+ after a .ip (as with references)
+
+Mod 17 19 Mar 79
+-- Fixed a bug in .++ which caused it to renumber pages incorrectly,
+ the result of nroff starting a new page immediately upon reaching
+ the end of the previous page (damn!).
+
+Mod 16 8 Mar 79
+-- Fixed a bug in .++ which caused it to change page number formats
+ before forcing out the page.
+-- Changed tmac.e so that extra '.so's to the package will next to
+ 'null.me'.
+-- Changed .sh so that a title of "_" will cause section depth change
+ side-effects only (base indent will remain the same, and no output
+ will occur).
+
+Mod 15a 7 Mar 79
+-- Fixed a bug in Mod 15 which caused .ip's to fail.
+
+Mod 15 2 Mar 79
+-- Changed .@p to do paragraph indents normally in keeps, which
+ will override the indent parameter in keeps with paragraph
+ forms in them (use .ba to fix this).
+
+Mod 14 23 Feb 79
+-- Fixed .ip so it would hyphenate correctly.
+
+Mod 13 16 Feb 79
+-- Added .rs before eqn title output to fix vertical centering
+ problem.
+
+Mod 12 15 Feb 79
+-- Changed NROFF bold font to be regular .ul (.cu is a pain).
+-- Changed .sh to output regular spaces instead of unpaddable
+ spaces.
+-- Fixed bug in .1c with bad line length (didn't reset \n($l).
+
+Mod 11 13 Feb 79
+-- Added hook to .$c to call .$C (for index entries or whatever).
+
+Mod 10 12 Feb 79
+-- Had .xp print in current environment and not reset to single
+ spacing, to allow more control over output format.
+
+Mod 9 26 Dec 78
+-- Fixed yet another problem with equation spacing.
+
+Mod 8 18 Dec 78
+-- Fixed .@q to solve a problem with \n(dn getting lost on
+ equations at top of page.
+
+Mod 7 11 Dec 78
+-- Had .@q (equation output) move to end of equation after
+ equation output (eqn doesn't seem to space quite right).
+
+Mod 6 27 Nov 78
+-- Fixed the umlaut on DTC output to be prettier.
+
+Mod 5 5 Nov 78
+-- Fixed a bug with the second parameter to .ip.
+
+Mod 4 2 Nov 78
+-- Added .uh command (unnumbered heading).
+-- Changed .$p and .sh accordingly.
+
+Mod 3 2 Oct 78
+-- Fixed .ne command in .$p (print section headings).
+
+Mod 2 25 Sep 78
+-- Changed .np to use () instead of [].
+
+Mod 1 12 Sep 78
+-- Fixed footnote fudge factor (curse NROFF!!)
+-- Put "needs" on .(z, .)z.
+
+Mod 0 11 Sep 78
diff --git a/share/me/sh.me b/share/me/sh.me
new file mode 100644
index 0000000..6f427d9
--- /dev/null
+++ b/share/me/sh.me
@@ -0,0 +1,142 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)sh.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.de sh \" *** section heading
+.fi
+.if (\\n(si>0)&(\\n(si<1n) \
+. nr si \\n(sin
+.ce 0
+.@d "\\$1" +1 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
+.if !"\\$2"_" \
+\{\
+. ds |n \&\\$2
+. $p "\\*(|n" "\\*($n" \\n($0
+. $0 "\\*(|n" "\\*($n" \\n($0
+. rm |n
+.\}
+.nr $p 0 1 \" reset .np count
+..
+.de @d \" --- change section depth
+.if !""\\$1" \
+. nr $0 \\$1
+.if \\n($0&(\\n(.$>1) \
+. nr $\\n($0 \\$2
+.ds $n \&\"
+.ie \\n($0>=1 \
+\{\
+. if '\\n($1'0' \
+. nr $1 1
+. if (\\n(.$>=3) .if !"\\$3"-" \
+. nr $1 \\$3
+. as $n \\n($1
+.\}
+.el \
+. nr $1 0
+.ie \\n($0>=2 \
+\{\
+. if '\\n($2'0' \
+. nr $2 1
+. if (\\n(.$>=4) .if !"\\$4"-" \
+. nr $2 \\$4
+. as $n .\\n($2
+.\}
+.el \
+. nr $2 0
+.ie \\n($0>=3 \
+\{\
+. if '\\n($3'0' \
+. nr $3 1
+. if (\\n(.$>=5) .if !"\\$5"-" \
+. nr $3 \\$5
+. as $n .\\n($3
+.\}
+.el \
+. nr $3 0
+.ie \\n($0>=4 \
+\{\
+. if '\\n($4'0' \
+. nr $4 1
+. if (\\n(.$>=6) .if !"\\$6"-" \
+. nr $4 \\$6
+. as $n .\\n($4
+.\}
+.el \
+. nr $4 0
+.ie \\n($0>=5 \
+\{\
+. if '\\n($5'0' \
+. nr $5 1
+. if (\\n(.$>=7) .if !"\\$7"-" \
+. nr $5 \\$7
+. as $n .\\n($5
+.\}
+.el \
+. nr $5 0
+.ie \\n($0>=6 \
+\{\
+. if '\\n($6'0' \
+. nr $6 1
+. if (\\n(.$>=8) .if !"\\$8"-" \
+. nr $6 \\$8
+. as $n .\\n($6
+.\}
+.el \
+. nr $6 0
+..
+.de sx \" *** heading up, no increment (2.1.1 -> 2.1)
+.ce 0
+.ul 0
+.nr _0 \\n($0-1
+.if \\n(.$ .nr _0 +1
+.if \\n(.$ .nr _0 \\$1
+.@d \\n(_0
+.rr _0
+.$p "" "" \\n($0
+.nr $p 0 1 \" reset .np count
+..
+.de uh \" *** unnumbered section heading
+.$p "\\$1"
+.$0 "\\$1"
+..
+.if \n(sf<=0 \
+. nr sf 8 \" section font -- Times Bold
+.if \n(sp<=0 \
+. nr sp 10 \" section title pointsize
+.if \n(ss<=0 \
+. nr ss 12p \" section prespacing
+.if \n(si<=0 \
+. nr si 0 \" section indent
+.nr c. \n(_0
diff --git a/share/me/strip.sed b/share/me/strip.sed
new file mode 100644
index 0000000..3d80bf7
--- /dev/null
+++ b/share/me/strip.sed
@@ -0,0 +1,44 @@
+#! /bin/sed -f
+#
+# Copyright (c) 1988, 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.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the University of
+# California, Berkeley and its contributors.
+# 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.
+#
+# @(#)strip.sed 8.1 (Berkeley) 6/5/93
+#
+
+/%beginstrip%/{
+ h
+ s/.*/.\\" This version has had comments stripped; an unstripped version is available./p
+ g
+}
+/%beginstrip%/,$s/[. ][ ]*\\".*//
+/^$/d
+/\\n@/d
diff --git a/share/me/summary.external b/share/me/summary.external
new file mode 100644
index 0000000..faed3e9
--- /dev/null
+++ b/share/me/summary.external
@@ -0,0 +1,238 @@
+" F\(sc comment (to end of line)
+# S optional delayed text tag string
+$ F\(sc interpolate argument
+$0 R section depth
+$0\(dg M invoked after section title printed
+$1 R first section number
+$1\(dg M invoked before printing depth 1 section
+$2 R second section number
+$2\(dg M invoked before printing depth 2 section
+$3 R third section number
+$3\(dg M invoked before printing depth 3 section
+$4 R fourth section number
+$4\(dg M invoked before printing depth 4 section
+$5 R fifth section number
+$5\(dg M invoked before printing depth 5 section
+$6 R sixth section number
+$6\(dg M invoked before printing depth 6 section
+$C\(dg M called at beginning of chapter
+$H\(dg M text header
+$R\(dd R relative vertical spacing in displays
+$c R current column number
+$c\(dd M print chapter title
+$d R delayed text number
+$f R footnote number
+$f\(dd M print footer
+$h\(dd M print header
+$i R paragraph base indent
+$l R column width
+$m R number of columns in effect
+$n S section name
+$p R numbered paragraph number
+$p\(dd M print section heading (internal macro)
+$r\(dd R relative vertical spacing in text
+$s R column indent
+$s\(dd M footnote separator (from text)
+% R\(sc current page number
+& F\(sc zero width character, useful for hiding controls
+( F\(sc interpolate special character
+(b M begin block
+(c M begin centered block
+(d M begin delayed text
+(f M begin footnote
+(l M begin list
+(q M begin quote
+(space) F\(sc unpaddable space
+(x M begin index entry
+(z M begin floating keep
+)b M end block
+)c M end centered block
+)d M end delayed text
+)f M end footnote
+)l M end list
+)q M end quote
+)x M end index entry
+)z M end floating keep
+* F\(sc interpolate string
+* S optional footnote tag string
+++ M set paper section type
++c M begin chapter
+, S cedilla
+- F\(sc minus sign
+- S 3/4 em dash
+0 F\(sc unpaddable digit-width space
+1c M revert to single columned output
+2c M begin two columned output
+: S umlat
+< S begin subscript
+> S end subscript
+EN M end equation
+EQ M begin equation
+L F\(sc vertical line drawing function
+TE M end table
+TH M end header of table
+TS M begin table
+[ S begin superscript
+\&.$ R\(sc number of arguments to macro
+\&.i R\(sc current indent
+\&.l R\(sc current line length
+\&.s R\(sc current point size
+\&\' S acute accent
+\&\` S grave accent
+\' F\(sc acute accent
+\` F\(sc grave accent
+] S end superscript
+^ F\(sc 1/12 em narrow space
+^ S caret
+ac M ACM mode
+ad M\(sc set text adjustment
+af M\(sc assign format to register
+am M\(sc append to macro
+ar M set page numbers in arabic
+as M\(sc append to string
+b M bold font
+ba M set base indent
+bc M begin new column
+bi M bold italic
+bi R display (block) indent
+bl M blank lines (even at top of page)
+bm R bottom title margin
+bp M\(sc begin page
+br M\(sc break (start new line)
+bs R display (block) pre/post spacing
+bt R block keep threshold
+bx M boxed
+c F\(sc continue input
+ce M\(sc center lines
+ch R current chapter number
+de M\(sc define macro
+df R display font
+ds M\(sc define string
+dw R\(sc current day of week
+dw S current day of week
+dy R\(sc day of month
+e F\(sc printable version of \e
+ef M set footer (even numbered pages only)
+eh M set header (even numbered pages only)
+el M\(sc else part of conditional
+ep M end page
+es R equation pre/post space
+f F\(sc inline font change
+fc M\(sc set field characters
+ff R footnote font
+fi M\(sc fill output lines
+fi R footnote indent (first line only)
+fm R footer margin
+fo M set footer
+fp R footnote pointsize
+fs R footnote prespace
+fu R footnote undent (from right margin)
+h F\(sc local horizontal motion
+hc M\(sc set hyphenation character
+he M set header
+hl M draw horizontal line
+hm R header margin
+hx M suppress headers and footers on next page
+hy M\(sc set hyphenation mode
+i M italic font
+ie M\(sc conditional with else
+if M\(sc conditional
+ii R indented paragraph indent
+in M\(sc indent (transient, use .ba for pervasive)
+ip M begin indented paragraph
+ix M indent, no break
+l F\(sc horizontal line drawing function
+lc M\(sc set leader repetition character
+ll M set line length
+lo M load local macros
+lp M begin left justified paragraph
+lq S left quote marks
+ls M\(sc set multi-line spacing
+m1 M set space from top of page to header
+m2 M set space from header to text
+m3 M set space from text to footer
+m4 M set space from footer to bottom of page
+mc M\(sc insert margin character
+mk M\(sc mark vertical position
+mo R\(sc month of year
+mo S current month
+n F\(sc interpolate number register
+n1 M number lines in margin
+n2 M number lines in margin
+na M\(sc turn off text adjustment
+ne M\(sc need vertical space
+nf M\(sc don't fill output lines
+nh M\(sc turn off hyphenation
+np M begin numbered paragraph
+nr M\(sc set number register
+ns M\(sc no space mode
+o S circle (e.g., for Norse A)
+of M set footer (odd numbered pages only)
+oh M set header (odd numbered pages only)
+pa M begin page
+pd M print delayed text
+pf R paragraph font
+pi R paragraph indent
+pl M\(sc set page length
+pn M\(sc set next page number
+po M\(sc page offset
+po R simulated page offset
+pp M begin paragraph
+pp R paragraph pointsize
+ps R paragraph prespace
+q M quoted
+qa S for all
+qe S there exists
+qi R quote indent (also shortens line)
+qp R quote pointsize
+qs R quote pre/post space
+r M roman font
+rb M real bold font
+re M reset tabs
+rm M\(sc remove macro or string
+rn M\(sc rename macro or string
+ro M set page numbers in roman
+rq S right quote marks
+rr M\(sc remove register
+rs M\(sc restore spacing
+rt M\(sc return to vertical position
+s F\(sc inline size change
+sc M load special characters
+sf R section title font
+sh M begin numbered section
+si R relative base indent per section depth
+sk M skip next page
+so M\(sc source input file
+so R additional section title offset
+sp M\(sc vertical space
+sp R section title pointsize
+ss R section prespace
+sx M change section depth
+sz M set pointsize and vertical spacing
+ta M\(sc set tab stops
+tc M\(sc set tab repetition character
+td S today's date
+tf R title font
+th M set thesis mode
+ti M\(sc temporary indent (next line only)
+tl M\(sc three part title
+tm R top title margin
+tp M begin title page
+tp R title pointsize
+tr M\(sc translate
+u M underlined
+uh M unnumbered section
+ul M\(sc underline next line
+v F\(sc local vertical motion
+v S czeck ``e''
+w F\(sc return width of string
+xl M set line length (local)
+xp M print index
+xs R index entry prespace
+xu R index undent (from right margin)
+yr R\(sc year (last two digits only)
+zs R floating keep pre/post space
+{ F\(sc begin conditional group
+| F\(sc 1/6 em narrow space
+} F\(sc end conditional group
+~ S tilde
diff --git a/share/me/tbl.me b/share/me/tbl.me
new file mode 100644
index 0000000..ab251df
--- /dev/null
+++ b/share/me/tbl.me
@@ -0,0 +1,143 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)tbl.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.de TS \" *** table start
+.sp \\n(bsu
+.@C 1
+.fi \" drop into fill mode for text boxes
+.if "\\$1"H" \
+\{\
+. di |h \" save header part
+. nr ?T 1
+.\}
+.ls 1
+.ch @f -(\\n(_bu+1v) \" set pseudo-trap for bottom line
+..
+.de TH \" *** end header part of table
+.nr T. 0
+.T# 0
+.di
+.nr _i \\n(.i
+.in 0
+.|h \" put in the initial header
+.in \\n(_iu
+.rr _i
+.mk #T
+..
+.de TE \" *** table end
+.nr ?T 0
+.ch @f -\\n(_bu \" reset pseudo-trap
+.ev
+.sp \\n(bsu+\\n(.Lv-1v
+.re
+.rr 31
+.rr 32
+.rr 33
+.rr 34
+.rr 35
+.rr 36
+.rr 37
+.rr 38
+.rr 39
+.rr 40
+.rr 41
+.rr 42
+.rr 43
+.rr 44
+.rr 45
+.rr 46
+.rr 47
+.rr 48
+.rr 49
+.rr 50
+.rr 51
+.rr 52
+.rr 53
+.rr 54
+.rr 55
+.rr 56
+.rr 57
+.rr 58
+.rr 59
+.rr 60
+.rr 61
+.rr 62
+.rr 63
+.rr 64
+.rr 65
+.rr 66
+.rr 67
+.rr 68
+.rr 69
+.rr 70
+.rr 71
+.rr 72
+.rr 73
+.rr 74
+.rr 75
+.rr 76
+.rr 77
+.rr 78
+.rr 79
+.rr 80
+.rr 81
+.rr 82
+.rr 83
+.rr 84
+.rr 85
+.rr 86
+.rr 87
+.rr 88
+.rr 89
+.rr 90
+.rr 91
+.rr 92
+.rr 93
+.rr 94
+.rr 95
+.rr 96
+.rr 97
+.rr 98
+.rr 99
+.rr #I
+.rr #T
+.rr #a
+.rr ##
+.rr #-
+.rr #^
+.rr T.
+..
+.nr c. \n(_0
diff --git a/share/me/test/test.accent b/share/me/test/test.accent
new file mode 100644
index 0000000..5b0da66
--- /dev/null
+++ b/share/me/test/test.accent
@@ -0,0 +1,7 @@
+.sc
+.sp 4
+.b e\\*'migre
+.sp 4
+.b emigre\\*`
+.sp 4
+.b e\\*'migre\\*`
diff --git a/share/me/test/test.umlaut b/share/me/test/test.umlaut
new file mode 100644
index 0000000..67358d2
--- /dev/null
+++ b/share/me/test/test.umlaut
@@ -0,0 +1,39 @@
+.sc
+.lp
+.ec $
+umlaut is: $*:
+.ec
+.sp
+\w"umlau\*:t"
+.sp
+.XX "umlau\*:t"
+null
+.sp
+.de XX
+null
+..
+.XX "umlau\\\\*:t"
+.br
+.XX "umlau\\*:t"
+.br
+.XX "umlau\*:t"
+.sp
+.de XX
+.ec ^
+$1 = ^$1
+.br
+$2 = ^$2
+.ec
+..
+.XX "umlau\*:t"
+.sp
+.de XX
+$1 = \\$1
+.br
+$2 = \\$2
+..
+.XX "umlau\*:t"
+.sp
+.i "umlau\*:t"
+.sp
+.b "umlau\*:t"
diff --git a/share/me/thesis.me b/share/me/thesis.me
new file mode 100644
index 0000000..c33f28f
--- /dev/null
+++ b/share/me/thesis.me
@@ -0,0 +1,53 @@
+.nr _0 \n(c.
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)thesis.me 8.1 (Berkeley) 6/5/93
+.\"
+.\" %beginstrip%
+.\"
+.\" Setup for thesis.
+.\" This file should be modified to keep up with the standard
+.\" for a doctoral thesis at Berkeley. Other macros which may
+.\" be useful for a thesis are defined here.
+.\"
+.nr tf 1 \" set titles in Roman
+.he '''%'
+.if n .if \n(_o \
+. po 1.5i
+.if t .po 1.125i \" + .5 inch (off 8i paper roll) = 1.5i
+.ll 5.75i \" allow 1/4 inch fudge
+.if n .if 1n=0.1i \
+. ll 5.8i \" make it even character amount
+.m1 1i
+.nr ?t 1
+.ls 2
+.nr c. \n(_0
diff --git a/share/me/tmac.orig_me b/share/me/tmac.orig_me
new file mode 100644
index 0000000..87c1687
--- /dev/null
+++ b/share/me/tmac.orig_me
@@ -0,0 +1,1192 @@
+.nr _0 \n(.c
+.\" Copyright (c) 1988, 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)tmac.e 8.1 (Berkeley) 6/5/93
+.\"
+.\" $FreeBSD$
+.\"
+.\" %beginstrip%
+.\"
+.\"**********************************************************************
+.\"* *
+.\"* ****** - M E N R O F F / T R O F F M A C R O S ****** *
+.\"* *
+.\"* Produced for your edification and enjoyment by: *
+.\"* Eric Allman *
+.\"* Electronics Research Laboratory *
+.\"* U.C. Berkeley. *
+.\"* current address: *
+.\"* Britton-Lee, Inc. *
+.\"* 1919 Addison Street Suite 105 *
+.\"* Berkeley, California 94704 *
+.\"* *
+.\"* VERSION 8.1 First Release: 11 Sept 1978 *
+.\"* See file \*(||/revisions for revision history *
+.\"* *
+.\"* Documentation is available. *
+.\"* *
+.\"**********************************************************************
+.\"
+.\" Code on .de commands:
+.\" *** a user interface macro.
+.\" &&& a user interface macro which is redefined
+.\" when used to be the real thing.
+.\" $$$ a macro which may be redefined by the user
+.\" to provide variant functions.
+.\" --- an internal macro.
+.\"
+.\" library directory for sourced files:
+.ds || /usr/old/lib/me
+.if \n@>0 .ds || .
+.\"
+.if !\n(.V .tm You are using the wrong version of NROFF/TROFF!!
+.if !\n(.V .tm This macro package works only on the version seven
+.if !\n(.V .tm release of NROFF and TROFF.
+.if !\n(.V .ex
+.if \n(pf \
+. nx \*(||/null.me
+.\" *** INTERNAL GP MACROS ***
+.de @C \" --- change ev's, taking info with us
+.nr _S \\n(.s
+.nr _V \\n(.v
+.nr _F \\n(.f
+.nr _I \\n(.i
+.ev \\$1
+.ps \\n(_S
+.vs \\n(_Vu
+.ft \\n(_F
+'in \\n(_Iu
+.xl \\n($lu
+.lt \\n($lu
+.rr _S
+.rr _V
+.rr _F
+.rr _I
+.ls 1
+'ce 0
+..
+.de @D \" --- determine display type (Indent, Left, Center)
+.ds |p "\\$3
+.nr _d \\$1
+.ie "\\$2"C" \
+. nr _d 1
+.el .ie "\\$2"L" \
+. nr _d 2
+.el .ie "\\$2"I" \
+. nr _d 3
+.el .ie "\\$2"M" \
+. nr _d 4
+.el \
+. ds |p "\\$2
+..
+.de @z \" --- end macro
+.if \n@>1 .tm >> @z, .z=\\n(.z ?a=\\n(?a
+.if !"\\n(.z"" \
+\{\
+. tm Line \\n(c. -- Unclosed block, footnote, or other diversion (\\n(.z)
+. di
+. ex
+.\}
+.if \\n(?a \
+. bp \" force out final table
+.rm bp
+.rm @b\" \" don't start another page
+.if t \
+. wh -1p @m
+.br
+.if \n@>1 .tm << @z
+..
+.de @I \" --- initialize processor
+.rm th
+.rm ac
+.rm lo
+.rm sc
+.rm @I
+..
+.\" *** STANDARD HEADERS AND FOOTERS ***
+.de he \" *** define header
+.ie !\\n(.$ \
+\{\
+. rm |4
+. rm |5
+.\}
+.el \
+\{\
+. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.\}
+..
+.de eh \" *** define even header
+.ie !\\n(.$ \
+. rm |4
+.el \
+. ds |4 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.de oh \" *** define odd header
+.ie !\\n(.$ \
+. rm |5
+.el \
+. ds |5 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.de fo \" *** define footer
+.ie !\\n(.$ \
+\{\
+. rm |6
+. rm |7
+.\}
+.el \
+\{\
+. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+.\}
+..
+.de ef \" *** define even foot
+.ie !\\n(.$ \
+. rm |6
+.el \
+. ds |6 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.de of \" *** define odd footer
+.ie !\\n(.$ \
+. rm |7
+.el \
+. ds |7 "\\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
+..
+.de ep \" *** end page (must always be followed by a .bp)
+.if \\n(nl>0 \
+\{\
+. wh 0
+. rs
+. @b
+.\}
+..
+.\" *** INTERNAL HEADER AND FOOTER MACROS ***
+.de @h \" --- header
+.if \n@>1 .tm >> @h %=\\n% ?a=\\n(?a ?b=\\n(?b ?w=\\n(?w
+.if (\\n(.i+\\n(.o)>=\\n(.l \
+. tm Line \\n(c. -- Offset + indent exceeds line length
+.if t .if (\\n(.l+\\n(.o)>7.75i \
+. tm Line \\n(c. -- Offset + line length exceeds paper width
+.\" initialize a pile of junk
+.nr ?h \\n(?H \" transfer "next page" to "this page"
+.rr ?H
+.nr ?c \\n(?C
+.rr ?C
+.if !"\\*(|4"" .rn |4 |0
+.if !"\\*(|5"" .rn |5 |1
+.if !"\\*(|6"" .rn |6 |2
+.if !"\\*(|7"" .rn |7 |3
+.nr _w 0 \" reset max footnote width
+.nr ?W 0 \" no wide floats this page (yet)
+.nr ?I 1
+.\" begin actual header stuff
+.ev 2
+.rs
+.if t .@m \" output cut mark
+.if \\n(hm>0 \
+. sp |\\n(hmu \" move to header position
+.@t $h \" output header title
+.if \\n(tm<=0 \
+. nr tm \n(.Vu
+.sp |\\n(tmu \" move to top of text
+.ev
+.mk _k \" for columned output
+.if \\n(?n .nm 1 \" restore line numbering if n1 mode
+.nr $c 1 \" set first column
+.if \n@>4 .tm -- @h >> .ns nl=\\n(nl %=\\n% _k=\\n(_k tm=\\n(tm
+.ie \\n(?s \
+\{\
+. rr ?s
+. rs
+' @b
+.\}
+.el \
+. @n \" begin the column
+.if \n@>2 .tm << @h
+..
+.if \nv=2 \
+\{\
+. de @m \" --- output cut mark (only on C/A/T-style)
+. @O 0
+. lt 7.5i
+. tl '\(rn''\(rn'
+. @O
+. lt
+..
+.\}
+.de @n \" --- new column or page
+.if \n@>3 .tm >> @n nl=\\n(nl %=\\n% ?f=\\n(?f ?o=\\n(?o
+.if \\n(bm<=0 \
+. nr bm \\n(.Vu
+.if (\\n(_w<=\\n($l)&(\\n(?W=0) \
+\{\
+. nr _b (\\n(ppu*\\n($ru)/2u \" compute fudge factor (must be < 1P)
+. if \\n(_bu>((\\n(bmu-\\n(fmu-(\\n(tpu*\\n($ru))/2u) \
+. nr _b (\\n(ppu*\\n($ru)-\n(.Vu
+. nr _b +\\n(bmu
+.\}
+.nr _B \\n(_bu
+.ch @f
+.wh -\\n(_bu @f
+.nr _b +(\\n(ppu*\\n($ru) \" add 1 paragraph v in case of sweep past
+.if \n@>2 .tm @n .p=\\n(.p bm=\\n(bm _b=\\n(_b _B=\\n(_B
+.nr ?f 0 \" reset footnote flag
+.if \\n(?o \
+\{\
+. (f _ \" reprocess footnotes which run off page
+. nf
+. |o
+. fi
+. )f
+. rm |o
+.\}
+.nr ?o 0
+.if \\n(?T \
+\{\
+. nr _i \\n(.i
+. in \\n($iu
+. |h \" output the table header
+. in \\n(_iu
+. rr _i
+. mk #T \" for tbl commands
+. ns
+.\}
+.if (\\n(?a)&((\\n($c<2):(\\n(?w=0)) \
+\{\
+. nr ?a 0 \" output floating keep
+. @k |t
+. if \\n(?w \
+. mk _k \" don't overstrike wide keeps
+. nr ?w 0
+.\}
+.os
+.$H \" special column header macro
+.ns
+..
+.de @f \" --- footer
+.if \n@>1 .tm >> @f %=\\n% nl=\\n(nl ?a=\\n(?a ?b=\\n(?b ?f=\\n(?f
+.if \n@>2 .nr VL \\n(.pu-\\n(nlu
+.if \n@>2 .tm @f bm=\\n(bm _B=\\n(_B _b=\\n(_b .p-nl=\\n(VL
+.ec
+.if \\n(?T \
+\{\
+. nr T. 1 \" for tbl commands (to output bottom line)
+. T# 1 \" output the sides and bottom lines
+. br
+.\}
+.ev 2
+.ce 0
+.if \\n(?b \
+\{\
+. nr ?b 0
+. @k |b\" \" output bottom of page tables
+.\}
+.if \\n(?f \
+. @o \" output footnote if present
+.ie \\n($c<\\n($m \
+. @c \" handle new column
+.el \
+. @e \" new page
+.ev
+.if \n@>2 .tm << @f
+..
+.de @o \" --- output footnote
+.nf
+.ls 1
+.in 0
+.if \n@>2 .tm @o last printed text = \\n(nl placing @r trap at -\\n(_B
+.wh -\\n(_Bu @r
+.|f
+.fi
+.if \n@>2 .tm @o triggered @r (?o) = \\n(?o
+.if \\n(?o \
+\{\
+. di \" just in case triggered @r
+. if \\n(dn=0 \
+\{\
+. rm |o
+. nr ?o 0
+. \}
+. nr dn \\n(_D
+. rr _D
+.\}
+.rm |f
+.ch @r
+..
+.de @c \" --- new column
+.if \n@>2 .tm >> @c %=\\n%
+.rs
+.sp |\\n(_ku
+.@O +\\n($lu+\\n($su
+.nr $c +1
+.@n
+..
+.de @e \" --- end page
+.if \n@>2 .tm >> @e
+.@O \\n(_ou
+.rs
+.sp |\\n(.pu-\\n(fmu-(\\n(tpu*\\n($ru) \" move to footer position
+.@t $f \" output footer title
+.nr ?h 0
+.bp
+..
+.de @t \" --- output header or footer title
+.if !\\n(?h \
+\{\
+. sz \\n(tp \" set header/footer type fonts, etc.
+. @F \\n(tf
+. lt \\n(_Lu \" make title span entire page
+. nf
+. \\$1
+. br
+.\}
+..
+.de $h \" $$$ print header
+.rm |z
+.if !\\n(?c \
+\{\
+. if e .ds |z "\\*(|0
+. if o .ds |z "\\*(|1
+.\}
+.if !\(ts\\*(|z\(ts\(ts \
+' tl \\*(|z
+.rm |z
+..
+.de $f \" $$$ print footer
+.rm |z
+.if \\n(?c \
+\{\
+. if e .ds |z "\\*(|0
+. if o .ds |z "\\*(|1
+.\}
+.if \(ts\\*(|z\(ts\(ts \
+\{\
+. if e .ds |z "\\*(|2
+. if o .ds |z "\\*(|3
+.\}
+.if !\(ts\\*(|z\(ts\(ts \
+' tl \\*(|z
+.rm |z
+..
+.de @r \" --- reprocess overflow footnotes
+.if \n@>3 .tm >> @r .z=\\n(.z ?f=\\n(?f ?a=\\n(?a ?b=\\n(?b _b=\\n(_b
+.di |o \" save overflow footnote
+.nr ?o 1
+.nr _D \\n(dn
+.ns
+..
+.\" *** COMMANDS WITH VARIANT DEFINITIONS ***
+.rn bp @b \" --- begin page
+.de bp \" *** begin new page (overrides columns)
+.nr $c \\n($m \" force new page, not new column
+.ie \\n(nl>0 \
+. @b \\$1
+.el \
+\{\
+. if \\n(.$>0 \
+. pn \\$1
+. if \\n(?I \
+. @h \" 'spring' the header trap
+.\}
+.br
+.wh 0 @h \" reset header
+..
+.rn ll xl \" *** special line length (local)
+.de ll \" *** line length (global to environments)
+.xl \\$1
+.lt \\$1
+.nr $l \\n(.l
+.if (\\n($m<=1):(\\n($l>\\n(_L) \
+. nr _L \\n(.l
+..
+.rn po @O \" --- local page offset
+.de po \" *** page offset
+.@O \\$1
+.nr _o \\n(.o
+..
+.\" *** MISCELLANEOUS ROFF COMMANDS ***
+.de hx \" *** suppress headers and footers next page
+.nr ?H 1
+..
+.de ix \" *** indent, no break
+'in \\$1
+..
+.de bl \" *** contiguous blank lines
+.br
+.ne \\$1
+.rs
+.sp \\$1
+..
+.de n1 \" *** line numbering 1
+.nm 1
+.xl -\w'0000'u
+.nr ?n 1
+..
+.de n2 \" *** line numbering 2
+.nm \\$1
+.ie \\n(.$ \
+. xl -\w'0000'u
+.el \
+. xl \\n($lu
+..
+.de pa \" *** new page
+.bp \\$1
+..
+.de ro \" *** roman page numbers
+.af % i
+..
+.de ar \" *** arabic page numbers
+.af % 1
+..
+.de m1 \" *** position one space
+.nr _0 \\n(hmu
+.nr hm \\$1v
+.nr tm +\\n(hmu-\\n(_0u
+.rr _0
+..
+.de m2 \" *** position two space
+.nr tm \\n(hmu+\\n(tpp+\\$1v
+..
+.de m3 \" *** position three space
+.nr bm \\n(fmu+\\n(tpp+\\$1v
+..
+.de m4 \" *** position four space
+.nr _0 \\n(fmu
+.nr fm \\$1v
+.nr bm +\\n(fmu-\\n(_0u
+..
+.de sk \" *** leave a blank page (next page)
+.if \\n(.$>0 \
+. tm Line \\n(c. -- I cannot skip multiple pages
+.nr ?s 1
+..
+.\" *** MISCELLANEOUS USER SUPPORT COMMANDS ***
+.de re \" *** reset tabs (TROFF defines 15 stops default)
+.ta 0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i +0.5i
+..
+.if t .ig
+.de re \" *** reset tabs (NROFF version)
+.ta 0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i +0.8i
+..
+.de ba \" *** set base indent
+.ie \\n(.$ \
+. nr $i \\$1n
+.el \
+. nr $i \\n(siu*\\n($0u
+..
+.de hl \" *** draw horizontal line
+.br
+\l'\\n(.lu-\\n(.iu'
+.sp
+..
+.\" *** PARAGRAPHING ***
+.de pp \" *** paragraph
+.lp \\n(piu
+..
+.de lp \" *** left aligned paragraph
+.@p
+.if \\n(.$ \
+. ti +\\$1
+.nr $p 0 1
+..
+.de ip \" *** indented paragraph w/ optional tag
+.if (\\n(ii>0)&(\\n(ii<1n) \
+. nr ii \\n(iin
+.nr _0 \\n(ii
+.if \\n(.$>1 \
+. nr _0 \\$2n
+.@p \\n(_0u
+.if \\w"\\$1" \
+\{\
+. ti -\\n(_0u
+. ie \\w"\\$1">=\\n(_0 \
+\{\
+\&\\$1
+. br
+. \}
+. el \&\\$1\h'|\\n(_0u'\c
+.\}
+.rr _0
+..
+.de np \" *** numbered paragraph
+.if \\n($p<0 \
+. nr $p 0 \" reset number after .bu
+.nr $p +1 \" increment paragraph number
+.@p \w'\0(000)\0'u
+.ti -\w'\0(000)\0'u
+\0(\\n($p)\h'|\w'\0(000)\0'u'\c
+..
+.de bu \" *** bulleted paragraph
+.br
+.if \\n($p<0 \
+. ns \" don't space between .bu paragraphs
+.nr $p 0-1 \" mark "bulleted paragraph" mode
+.@p \w'\0\(bu\0'u
+.ti -\w'\0\(bu\0'u
+\0\(bu\0\c
+..
+.de @p \" --- initialize for paragraph
+.@I \" initialize macro processor
+.if "\\n(.z"|e" .tm Line \\n(c. -- Unmatched continued equation
+.in \\n($iu+\\n(pou
+.if \\n(.$ \
+. in +\\$1n
+.ce 0
+.fi
+.@F \\n(pf
+.sz \\n(pp
+.sp \\n(psu
+.ne \\n(.Lv+\\n(.Vu
+.ns
+..
+.\" *** SECTION HEADINGS ***
+.de sh \" &&& section heading
+.rn sh @T
+.so \\*(||/sh.me
+.sh "\\$1" "\\$2" \\$3 \\$4 \\$5 \\$6 \\$7 \\$8
+.rm @T
+..
+.de $p \" $$$ print section heading
+.if (\\n(si>0)&(\\n(.$>2) \
+. nr $i \\$3*\\n(si
+.in \\n($iu
+.ie !"\\$1\\$2"" \
+\{\
+. sp \\n(ssu \" one of them is non-null
+. ne \\n(.Lv+\\n(.Vu+\\n(psu+(\\n(spu*\\n($ru*\\n(.Lu)
+. ie \\n(.$>2 \
+. ti -(\\n(siu-\\n(sou)
+. el \
+. ti +\\n(sou
+. @F \\n(sf
+. sz \\n(sp
+. if \\$3>0 \
+. $\\$3
+. if \w"\\$2">0 \\$2.
+. if \w"\\$1">0 \\$1\f1\ \ \&
+.\}
+.el \
+. sp \\n(psu
+.@F \\n(pf
+.sz \\n(pp
+..
+.de uh \" *** unnumbered section heading
+.rn uh @T
+.so \\*(||/sh.me
+.uh "\\$1"
+.rm @T
+..
+.\" *** COLUMNED OUTPUT ***
+.de 2c \" *** double columned output
+.br
+.if \\n($m>1 \
+. 1c \" revert to 1c if already 2c
+.nr $c 1
+.nr $m 2
+.if \\n(.$>1 \
+. nr $m \\$2
+.if \\n(.$>0 \
+. nr $s \\$1n \" param 1: column separation
+.nr $l (\\n(.l-((\\n($m-1)*\\n($s))/\\n($m
+.xl \\n($lu
+.mk _k
+.ns
+..
+.de 1c \" *** single columned output
+.br
+.nr $c 1
+.nr $m 1
+.ll \\n(_Lu \" return to normal output
+.sp |\\n(.hu
+.@O \\n(_ou
+..
+.de bc \" *** begin column
+.sp 24i
+..
+.\" *** FLOATING TABLES AND NONFLOATING BLOCKS ***
+.de (z \" &&& begin floating keep
+.rn (z @V
+.so \\*(||/float.me
+.(z \\$1 \\$2
+.rm @V
+..
+.de )z \" &&& end floating keep
+.tm Line \\n(c. -- unmatched .)z
+..
+.de (t \" XXX temp ref to (z
+.(z \\$1 \\$2
+..
+.de )t \" XXX temp ref to )t
+.)z \\$1 \\$2
+..
+.de (b \" *** begin block
+.br
+.@D 3 \\$1 \\$2
+.sp \\n(bsu
+.@(
+..
+.de )b \" *** end block
+.br
+.@)
+.if (\\n(bt=0):(\\n(.t<\\n(bt) \
+. ne \\n(dnu \" make it all on one page
+.ls 1
+.nf
+.|k
+.ec
+.fi
+.in 0
+.xl \\n($lu
+.ev
+.rm |k
+.sp \\n(bsu+\\n(.Lv-1v
+..
+.de @( \" --- begin keep
+.if !"\\n(.z"" .tm Line \\n(c. -- Illegal nested keep \\n(.z
+.@M
+.di |k
+\!'rs
+..
+.de @M \" --- set modes for display
+.nr ?k 1
+.@C 1
+.@F \\n(df
+.vs \\n(.su*\\n($Ru
+.nf
+.if "\\*(|p"F" \
+. fi \" set fill mode if "F" parameter
+.if \\n(_d=4 \
+. in 0
+.if \\n(_d=3 \
+\{\
+. in +\\n(biu
+. xl -\\n(biu
+.\}
+.if \\n(_d=1 \
+. ce 10000
+..
+.de @) \" --- end keep
+.br
+.if !"\\n(.z"|k" .tm Line \\n(c. -- Close of a keep which has never been opened
+.nr ?k 0
+.di
+.in 0
+.ce 0
+..
+.de (c \" *** begin block centered text
+.if "\\n(.z"|c" .tm Line \\n(c. -- Nested .(c requests
+.di |c
+..
+.de )c \" *** end block centered text
+.if !"\\n(.z"|c" .tm Line \\n(c. -- Unmatched .)c
+.br \" force out final line
+.di
+.if \n@>4 .tm >> .)c .l=\\n(.l .i=\\n(.i $i=\\n($i dl=\\n(dl
+.ev 1
+.ls 1
+.in (\\n(.lu-\\n(.iu-\\n(dlu)/2u
+.if \n@>4 .tm -- .)c << .in .l=\\n(.l .i=\\n(.i dl=\\n(dl
+.nf
+.|c
+.ec
+.in
+.ls
+.ev
+.rm |c
+..
+.\" *** BLOCK QUOTES (OR WHATEVER) AND LISTS ***
+.de (q \" *** begin block quote
+.br
+.@C 1
+.fi
+.sp \\n(qsu
+.in +\\n(qiu
+.xl -\\n(qiu
+.sz \\n(qp
+..
+.de )q \" *** end block quote
+.br
+.ev
+.sp \\n(qsu+\\n(.Lv-1v
+.nr ?k 0
+..
+.de (l \" *** begin list
+.br
+.sp \\n(bsu
+.@D 3 \\$1 \\$2
+.@M
+..
+.de )l \" *** end list
+.br
+.ev
+.sp \\n(bsu+\\n(.Lv-1v
+.nr ?k 0
+..
+.\" *** PREPROCESSOR SUPPORT ***
+.\"
+.\" EQN
+.\"
+.de EQ \" &&& begin equation
+.rn EQ @T
+.so \\*(||/eqn.me
+.EQ \\$1 \\$2
+.rm @T
+..
+.\"
+.\" TBL
+.\"
+.de TS \" &&& begin table
+.rn TS @W
+.so \\*(||/tbl.me
+.TS \\$1 \\$2
+.rm @W
+..
+.\"
+.\" REFER
+.\"
+.de ]- \" &&& initialize reference
+.rn ]- @]
+.so \\*(||/refer.me
+.]-
+.rm @]
+..
+.de ]< \" &&& initialize reference
+.rn ]< @]
+.so \\*(||/refer.me
+.]<
+.rm @]
+..
+.if n .ds [. " [
+.if t .ds [. \s-2\v'-.4m'\f1
+.if n .ds .] ]
+.if t .ds .] \v'.4m'\s+2\fP
+.if n .ds <. "
+.if t .ds <. .
+.if n .ds >. .
+.if t .ds >. "
+.\"
+.\" IDEAL
+.\"
+.de IS \" *** start ideal picture
+.nr g7 \\n(.u
+.ls 1
+..
+.de IF
+.if \\n(g7 .fi
+.ls
+..
+.de IE \" *** end ideal picture
+.if \\n(g7 .fi
+.ls
+..
+.\"
+.\" PIC
+.\"
+.de PS \" *** start picture: $1=height, $2=width in units or inches
+.if t \
+. sp 0.3
+.nr g7 \\$2
+.in (\\n(.lu-\\n(g7u)/2u
+.ne \\$1u
+.nr g7 \\n(.u
+.ls 1
+..
+.de PE \" *** end picture
+.ls
+.in
+.if \\n(g7 .fi
+.if t .sp .6
+..
+.\"
+.\" GREMLIN
+.\"
+.de GS \" *** start gremlin picture
+.nr g7 (\\n(.lu-\\n(g1u)/2u
+.if "\\$1"L" .nr g7 \\n(.iu
+.if "\\$1"R" .nr g7 \\n(.lu-\\n(g1u
+.in \\n(g7u
+.nr g7 \\n(.u
+.ls 1
+.nf
+.ne \\n(g2u
+..
+.de GE \" *** end gremlin picture
+.GF
+.if t .sp .6
+..
+.de GF \" *** finish gremlin picture; stay at top
+.ls
+.in
+.if \\n(g7 .fi
+..
+.\" *** FONT AIDS ***
+.de sz \" *** set point size and vertical spacing
+.ps \\$1
+.vs \\n(.su*\\n($ru \" default vs at pointsize + 20%
+.bd S B \\n(.su/3u
+..
+.de r \" *** enter roman font
+.nr _F \\n(.f
+.ul 0
+.ft 1
+.if \\n(.$ \&\\$1\f\\n(_F\\$2
+.rr _F
+..
+.de i \" *** enter italic
+.nr _F \\n(.f
+.ul 0
+.ft 2
+.if \\n(.$ \&\\$1\f\\n(_F\\$2
+.rr _F
+..
+.de b \" *** enter boldface (underline in NROFF)
+.nr _F \\n(.f
+.ul 0
+.ft \\n($b
+.if \\n(.$ \&\\$1\f\\n(_F\\$2
+.rr _F
+..
+.de rb \" *** enter real boldface (not underlined in NROFF)
+.nr _F \\n(.f
+.ul 0
+.ft 3
+.if \\n(.$ \&\\$1\f\\n(_F\\$2
+.rr _F
+..
+.de u \" *** enter underlined word
+\&\\$1\l'|0\(ul'\\$2
+..
+.de q \" *** enter quoted word
+\&\\*(lq\\$1\\*(rq\\$2
+..
+.de bi \" *** enter word in bold italics
+.ft 2
+.ie t \&\k~\\$1\h'|\\n~u+(\\w' 'u/4u)'\\$1\fP\\$2
+.el \&\\$1\fP\\$2
+..
+.de bx \" *** enter boxed word
+.ie \\n($T \&\f2\\$1\fP\\$2
+.el \k~\(br\|\\$1\|\(br\l'|\\n~u\(rn'\l'|\\n~u\(ul'\^\\$2
+..
+.de sm \" *** print in smaller font
+\s-1\\$1\\s0\\$2
+..
+.de @F \" --- change font (8 -> underlined, 0 -> no change)
+.nr ~ \\$1
+.if \\n~>0 \
+\{\
+. ul 0
+. if \\n~=8 \
+. nr ~ \\n($b
+. ft \\n~
+.\}
+.rr ~
+..
+.\" *** FOOTNOTING ***
+.de (f \" &&& begin footnote
+.rn (f @U
+.so \\*(||/footnote.me
+.(f \\$1 \\$2
+.rm @U
+..
+.de )f \" &&& end footnote
+.tm Line \\n(c. -- unmatched .)f
+..
+.de $s \" $$$ footnote separator
+\l'2i'
+.if n \
+. sp 0.3
+..
+.\" *** DELAYED TEXT ***
+.de (d \" &&& begin delayed text
+.rn (d @U
+.so \\*(||/deltext.me
+.(d \\$1 \\$2
+.rm @U
+..
+.de )d \" &&& end delayed text
+.tm Line \\n(c. -- unmatched .)d
+..
+.\" *** INDEXES (TABLE OF CONTENTS) ***
+.de (x \" &&& begin index
+.rn (x @U
+.so \\*(||/index.me
+.(x \\$1 \\$2
+.rm @U
+..
+.de )x \" &&& end index entry
+.tm Line \\n(c. -- unmatched .)x
+..
+.\" *** STUFF FOR "STANDARD" PAPERS ***
+.de th \" *** set "thesis" mode
+.so \\*(||/thesis.me
+.rm th
+..
+.de +c \" *** begin chapter
+.ep \" force out footnotes
+.if \\n(?o:\\n(?a \
+\{\
+. bp \" force out a table or more footnote
+. rs
+. ep
+.\}
+.nr ?C 1
+.nr $f 1 1
+.ds * \\*[1\\*]\k*
+.if \\n(?R \
+. pn 1
+.bp
+.in \\n($iu \" reset the indent
+.rs
+.ie \\n(.$ \
+. $c "\\$1"
+.el \
+. sp 3
+..
+.de ++ \" *** declare chapter type
+.nr _0 0
+.if "\\$1"C" \
+. nr _0 1 \" chapter
+.if "\\$1"RC" \
+. nr _0 11 \" renumbered chapter
+.if "\\$1"A" \
+. nr _0 2 \" appendix
+.if "\\$1"RA" \
+. nr _0 12 \" renumbered appendix
+.if "\\$1"P" \
+. nr _0 3 \" preliminary material
+.if "\\$1"B" \
+. nr _0 4 \" bibliographic material
+.if "\\$1"AB" \
+. nr _0 5 \" abstract
+.if \\n(_0=0 \
+. tm Line \\n(c. -- Bad mode to .++
+.nr ?R 0
+.if \\n(_0>10 \
+.\{
+. nr ?R 1
+. nr _0 -10
+.\}
+.nr ch 0 1
+.if (\\n(_0=3):(\\n(_0=5) \
+. pn 1 \" must do before .ep
+.ep \" end page for correct page number types
+.if \\n(_0=1 \
+\{\
+. af ch 1
+. af % 1
+.\}
+.if \\n(_0=2 \
+\{\
+. af ch A
+. af % 1
+.\}
+.if \\n(_0=3 \
+. af % i
+.if \\n(_0=4 \
+. af % 1
+.if \\n(_0=5 \
+. af % 1
+.if \\n(.$>1 \
+. he \\$2
+.if !\\n(_0=\\n(_M .if \\n(_M=3 \
+. pn 1
+.nr _M \\n(_0
+.rr _0
+..
+.de $c \" $$$ print chapter title
+.sz 12
+.ft B
+.ce 1000
+.if \\n(_M<3 \
+. nr ch +1
+.ie \\n(_M=1 CHAPTER\ \ \\n(ch
+.el .if \\n(_M=2 APPENDIX\ \ \\n(ch
+.if \w"\\$1" .sp 3-\\n(.L
+.if \w"\\$1" \\$1
+.if (\\n(_M<3):(\w"\\$1") \
+. sp 4-\\n(.L
+.ce 0
+.ft
+.sz
+.ie \\n(_M=1 \
+. $C Chapter \\n(ch "\\$1"
+.el .if \\n(_M=2 \
+. $C Appendix \\n(ch "\\$1"
+..
+.de tp \" *** title page
+.hx
+.bp
+.br
+.rs
+.pn \\n%
+..
+.de ac \" *** setup for ACM photo-ready paper
+.rn ac @T
+.so \\*(||/acm.me
+.ac "\\$1" "\\$2"
+.rm @T
+..
+.de lo \" *** pull in the set of local macros
+.\" all these macros should be named "*X", where X is any letter
+.so \\*(||/local.me
+.rm lo
+..
+.de lh \" *** letterhead
+.so \\*(||/letterhead.me
+..
+.\" *** DATES ***
+.if \n(mo=1 .ds mo January
+.if \n(mo=2 .ds mo February
+.if \n(mo=3 .ds mo March
+.if \n(mo=4 .ds mo April
+.if \n(mo=5 .ds mo May
+.if \n(mo=6 .ds mo June
+.if \n(mo=7 .ds mo July
+.if \n(mo=8 .ds mo August
+.if \n(mo=9 .ds mo September
+.if \n(mo=10 .ds mo October
+.if \n(mo=11 .ds mo November
+.if \n(mo=12 .ds mo December
+.if \n(dw=1 .ds dw Sunday
+.if \n(dw=2 .ds dw Monday
+.if \n(dw=3 .ds dw Tuesday
+.if \n(dw=4 .ds dw Wednesday
+.if \n(dw=5 .ds dw Thursday
+.if \n(dw=6 .ds dw Friday
+.if \n(dw=7 .ds dw Saturday
+.ds td \*(mo \n(dy, \n(yr+1900
+.\" *** PARAMETRIC INITIALIZATIONS ***
+.if (1m<0.1i)&(\nx!=0) \
+. vs 9p \" for 12-pitch DTC terminals
+.rr x
+.nr $r \n(.v/\n(.s \" ratio of vs to ps for .sz request
+.nr $R \n($r \" ratio for displays & footnotes
+.nr hm 4v \" header margin
+.nr tm 7v \" top margin
+.nr bm 6v \" bottom margin
+.nr fm 3v \" footer margin
+.nr tf 3 \" title font: (real) Times Bold
+.nr tp 10 \" title point size
+.hy 14
+.nr bi 4m \" indent for blocks
+.nr pi 5n \" indent for paragraphs
+.nr pf 1 \" normal text font
+.nr pp 10 \" normal text point size
+.nr qi 4n \" indent for quotes
+.nr qp -1 \" down one point
+.nr ii 5n \" indent for .ip's and .np's
+.nr $m 1 \" max number of columns
+.nr $s 4n \" column separation
+.bd S B 3
+.\" *** OTHER INITIALIZATION ***
+.ds [ \u\x'-0.25v'
+.ds ] \d
+.ds < \d\x'0.25v'
+.ds > \u
+.ds - --
+.if t \
+\{\
+. ds [ \v'-0.4m'\x'-0.2m'\s-3
+. ds ] \s0\v'0.4m'
+. ds < \v'0.4m'\x'0.2m'\s-3
+. ds > \s0\v'-0.4m'
+. ds - \(em
+. nr fi 0.3i
+.\}
+.if n \
+\{\
+. nr fi 3n
+.\}
+.nr _o \n(.o
+.if n .po 1i
+.if \n(.V=1v \
+. nr $T 2
+.if n .if \n(.T=0 \
+. nr $T 1
+.if \nv=2 \
+\{\
+. nr $T 0
+. po -0.5i \" make ugly line on LHS on C/A/T typesetters
+.\}
+.if \n($T \
+\{\
+. if \n($T=1 \
+. po 0
+. ds [ [
+. ds ] ]
+. ds < <
+. ds > >
+.\}
+.nr $b \nb \" figure the real font 8 font
+.rr b
+.if \n($b=0 \
+\{\
+. if n .nr $b 2 \" italic
+. if t .nr $b 3 \" bold
+.\}
+.nr ps 0.5v \" paragraph pre/post spacing
+.if \n($T \
+. nr ps 1v
+.if t .nr ps 0.35v
+.nr bs \n(ps \" block pre/post spacing
+.nr qs \n(ps \" quote pre/post spacing
+.nr zs 1v \" float-block pre/postspacing
+.nr xs 0.2v \" index prespacing
+.nr fs 0.2v \" footnote prespacing
+.if \n($T \
+. nr fs 0
+.if n .nr es 1v \" equation pre/postspacing
+.if t .nr es 0.5v
+.wh 0 @h \" set header
+.nr $l \n(.lu \" line length
+.nr _L \n(.lu \" line length of page
+.nr $c 1 \" current column number
+.nr $f 1 1 \" footnote number
+.ds * \*[1\*]\k*\" \" footnote "name"
+.nr $d 1 1 \" delayed text number
+.ds # [1]\k#\" \" delayed text "name"
+.nr _M 1 \" chapter mode is chapter
+.ds lq \&"\" \" left quote
+.ds rq \&"\" \" right quote
+.if t \
+. ds lq ``
+.if t \
+. ds rq ''
+.em @z
+.\" *** FOREIGN LETTERS AND SPECIAL CHARACTERS ***
+.de sc \" *** define special characters
+.so \\*(||/chars.me
+.rm sc
+..
+.ll 6.0i
+.lt 6.0i
diff --git a/share/misc/Makefile b/share/misc/Makefile
new file mode 100644
index 0000000..305baf6
--- /dev/null
+++ b/share/misc/Makefile
@@ -0,0 +1,14 @@
+# From: @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+.PATH: ${.CURDIR}/../../sys/dev/usb
+
+FILES= ascii birthtoken bsd-family-tree committers-doc.dot committers-ports.dot \
+ committers-src.dot eqnchar flowers init.ee \
+ iso3166 iso639 latin1 man.template mdoc.template operator pci_vendors \
+ scsi_modes usb_hid_usages usbdevs
+
+NO_OBJ=
+FILESDIR= ${BINDIR}/misc
+
+.include <bsd.prog.mk>
diff --git a/share/misc/ascii b/share/misc/ascii
new file mode 100644
index 0000000..b7bcef5
--- /dev/null
+++ b/share/misc/ascii
@@ -0,0 +1,50 @@
+|000 nul|001 soh|002 stx|003 etx|004 eot|005 enq|006 ack|007 bel|
+|010 bs |011 ht |012 nl |013 vt |014 np |015 cr |016 so |017 si |
+|020 dle|021 dc1|022 dc2|023 dc3|024 dc4|025 nak|026 syn|027 etb|
+|030 can|031 em |032 sub|033 esc|034 fs |035 gs |036 rs |037 us |
+|040 sp |041 ! |042 " |043 # |044 $ |045 % |046 & |047 ' |
+|050 ( |051 ) |052 * |053 + |054 , |055 - |056 . |057 / |
+|060 0 |061 1 |062 2 |063 3 |064 4 |065 5 |066 6 |067 7 |
+|070 8 |071 9 |072 : |073 ; |074 < |075 = |076 > |077 ? |
+|100 @ |101 A |102 B |103 C |104 D |105 E |106 F |107 G |
+|110 H |111 I |112 J |113 K |114 L |115 M |116 N |117 O |
+|120 P |121 Q |122 R |123 S |124 T |125 U |126 V |127 W |
+|130 X |131 Y |132 Z |133 [ |134 \ |135 ] |136 ^ |137 _ |
+|140 ` |141 a |142 b |143 c |144 d |145 e |146 f |147 g |
+|150 h |151 i |152 j |153 k |154 l |155 m |156 n |157 o |
+|160 p |161 q |162 r |163 s |164 t |165 u |166 v |167 w |
+|170 x |171 y |172 z |173 { |174 | |175 } |176 ~ |177 del|
+
+| 00 nul| 01 soh| 02 stx| 03 etx| 04 eot| 05 enq| 06 ack| 07 bel|
+| 08 bs | 09 ht | 0a nl | 0b vt | 0c np | 0d cr | 0e so | 0f si |
+| 10 dle| 11 dc1| 12 dc2| 13 dc3| 14 dc4| 15 nak| 16 syn| 17 etb|
+| 18 can| 19 em | 1a sub| 1b esc| 1c fs | 1d gs | 1e rs | 1f us |
+| 20 sp | 21 ! | 22 " | 23 # | 24 $ | 25 % | 26 & | 27 ' |
+| 28 ( | 29 ) | 2a * | 2b + | 2c , | 2d - | 2e . | 2f / |
+| 30 0 | 31 1 | 32 2 | 33 3 | 34 4 | 35 5 | 36 6 | 37 7 |
+| 38 8 | 39 9 | 3a : | 3b ; | 3c < | 3d = | 3e > | 3f ? |
+| 40 @ | 41 A | 42 B | 43 C | 44 D | 45 E | 46 F | 47 G |
+| 48 H | 49 I | 4a J | 4b K | 4c L | 4d M | 4e N | 4f O |
+| 50 P | 51 Q | 52 R | 53 S | 54 T | 55 U | 56 V | 57 W |
+| 58 X | 59 Y | 5a Z | 5b [ | 5c \ | 5d ] | 5e ^ | 5f _ |
+| 60 ` | 61 a | 62 b | 63 c | 64 d | 65 e | 66 f | 67 g |
+| 68 h | 69 i | 6a j | 6b k | 6c l | 6d m | 6e n | 6f o |
+| 70 p | 71 q | 72 r | 73 s | 74 t | 75 u | 76 v | 77 w |
+| 78 x | 79 y | 7a z | 7b { | 7c | | 7d } | 7e ~ | 7f del|
+
+| 0 nul| 1 soh| 2 stx| 3 etx| 4 eot| 5 enq| 6 ack| 7 bel|
+| 8 bs | 9 ht | 10 nl | 11 vt | 12 np | 13 cr | 14 so | 15 si |
+| 16 dle| 17 dc1| 18 dc2| 19 dc3| 20 dc4| 21 nak| 22 syn| 23 etb|
+| 24 can| 25 em | 26 sub| 27 esc| 28 fs | 29 gs | 30 rs | 31 us |
+| 32 sp | 33 ! | 34 " | 35 # | 36 $ | 37 % | 38 & | 39 ' |
+| 40 ( | 41 ) | 42 * | 43 + | 44 , | 45 - | 46 . | 47 / |
+| 48 0 | 49 1 | 50 2 | 51 3 | 52 4 | 53 5 | 54 6 | 55 7 |
+| 56 8 | 57 9 | 58 : | 59 ; | 60 < | 61 = | 62 > | 63 ? |
+| 64 @ | 65 A | 66 B | 67 C | 68 D | 69 E | 70 F | 71 G |
+| 72 H | 73 I | 74 J | 75 K | 76 L | 77 M | 78 N | 79 O |
+| 80 P | 81 Q | 82 R | 83 S | 84 T | 85 U | 86 V | 87 W |
+| 88 X | 89 Y | 90 Z | 91 [ | 92 \ | 93 ] | 94 ^ | 95 _ |
+| 96 ` | 97 a | 98 b | 99 c |100 d |101 e |102 f |103 g |
+|104 h |105 i |106 j |107 k |108 l |109 m |110 n |111 o |
+|112 p |113 q |114 r |115 s |116 t |117 u |118 v |119 w |
+|120 x |121 y |122 z |123 { |124 | |125 } |126 ~ |127 del|
diff --git a/share/misc/birthtoken b/share/misc/birthtoken
new file mode 100644
index 0000000..9b4a498
--- /dev/null
+++ b/share/misc/birthtoken
@@ -0,0 +1,14 @@
+# Birthday : Birth Stone : Birth Flower
+# @(#)birthtoken 8.1 (Berkeley) 6/8/93
+January:Garnet:Carnation
+February:Amethyst:Violet
+March:Aquamarine:Jonquil
+April:Diamond:Sweetpea
+May:Emerald:Lily Of The Valley
+June:Pearl:Rose
+July:Ruby:Larkspur
+August:Peridot:Gladiolus
+September:Sapphire:Aster
+October:Opal:Calendula
+November:Topaz:Chrysanthemum
+December:Turquoise:Narcissus
diff --git a/share/misc/bsd-family-tree b/share/misc/bsd-family-tree
new file mode 100644
index 0000000..aa043bf
--- /dev/null
+++ b/share/misc/bsd-family-tree
@@ -0,0 +1,553 @@
+The UNIX system family tree: Research and BSD
+---------------------------------------------
+
+First Edition (V1)
+ |
+Second Edition (V2)
+ |
+Third Edition (V3)
+ |
+Fourth Edition (V4)
+ |
+Fifth Edition (V5)
+ |
+Sixth Edition (V6) -----*
+ \ |
+ \ |
+ \ |
+Seventh Edition (V7) |
+ \ |
+ \ 1BSD
+ 32V |
+ \ 2BSD---------------*
+ \ / |
+ \ / |
+ \/ |
+ 3BSD |
+ | |
+ 4.0BSD 2.7.9BSD
+ | |
+ 4.1BSD --------------> 2.8BSD
+ | |
+ 4.1aBSD -----------\ |
+ | \ |
+ 4.1bBSD \ |
+ | \ |
+ *------ 4.1cBSD --------------> 2.9BSD
+ / | |
+Eighth Edition | 2.9BSD-Seismo
+ | | |
+ +----<--- 4.2BSD 2.9.1BSD
+ | | |
+ +----<--- 4.3BSD -------------> 2.10BSD
+ | | / |
+Ninth Edition | / 2.10.1BSD
+ | 4.3BSD Tahoe-----+ |
+ | | \ |
+ | | \ |
+ v | 2.11BSD
+Tenth Edition | |
+ | 2.11BSD rev #430
+ 4.3BSD NET/1 |
+ | v
+ 4.3BSD Reno
+ |
+ *---------- 4.3BSD NET/2 -------------------+-------------*
+ | | | |
+386BSD 0.0 | | BSD/386 ALPHA
+ | | | |
+386BSD 0.1 ------------>+ | BSD/386 0.3.[13]
+ | \ | 4.4BSD Alpha |
+ | 386BSD 1.0 | | BSD/386 0.9.[34]
+ | | 4.4BSD |
+ | | / | |
+ | | 4.4BSD-Encumbered | |
+ | NetBSD 0.8 | BSD/386 1.0
+ | | | |
+FreeBSD 1.0 NetBSD 0.9 | BSD/386 1.1
+ | | .----- 4.4BSD Lite |
+FreeBSD 1.1 | / / | \ |
+ | | / / | \ |
+FreeBSD 1.1.5 .---|--------' / | \ |
+ | / | / | \ |
+FreeBSD 1.1.5.1 / | / | \ |
+ | / NetBSD 1.0 <-' | \ |
+ | / | | \ |
+FreeBSD 2.0 <--' | | BSD/OS 2.0
+ | \ | |
+FreeBSD 2.0.5 \ | BSD/OS 2.0.1
+ | .-----\------------- 4.4BSD Lite2 |
+ | | \ | | | | |
+ | | .-----|------Rhapsody | | | |
+ | | | | NetBSD 1.3 | | |
+ | | | | OpenBSD 2.3 | |
+ | | | | BSD/OS 3.0 |
+FreeBSD 2.1 | | | |
+ | | | | NetBSD 1.1 ------. BSD/OS 2.1
+ | FreeBSD 2.1.5 | | | \ |
+ | | | | NetBSD 1.2 \ BSD/OS 3.0
+ | FreeBSD 2.1.6 | | | \ OpenBSD 2.0 |
+ | | | | | \ | |
+ | FreeBSD 2.1.6.1 | | | \ | |
+ | | | | | \ | |
+ | FreeBSD 2.1.7 | | | | | |
+ | | | | | NetBSD 1.2.1 | |
+ | FreeBSD 2.1.7.1 | | | | |
+ | | | | | |
+ | | | | | |
+ *-FreeBSD 2.2 | | | | |
+ | \ | | | | |
+ | FreeBSD 2.2.1 | | | | |
+ | | | | | | |
+ | FreeBSD 2.2.2 | | | OpenBSD 2.1 |
+ | | | | | | |
+ | FreeBSD 2.2.5 | | | | |
+ | | | | | OpenBSD 2.2 |
+ | | | | NetBSD 1.3 | |
+ | FreeBSD 2.2.6 | | | | | |
+ | | | | | NetBSD 1.3.1 | BSD/OS 3.1
+ | | | | | | OpenBSD 2.3 |
+ | | | | | NetBSD 1.3.2 | |
+ | FreeBSD 2.2.7 | | | | | |
+ | | | | | | | BSD/OS 4.0
+ | v | | | | | |
+ | FreeBSD 2.2.8 | | | | | |
+ | | | | | OpenBSD 2.4 |
+FreeBSD 3.0 <--------* | | v | |
+ | | | NetBSD 1.3.3 | |
+ *---FreeBSD 3.1 | | | |
+ | | | | | BSD/OS 4.0.1
+ | FreeBSD 3.2----* | NetBSD 1.4 OpenBSD 2.5 |
+ | | | | | | | | |
+ | | | | | | | | |
+ | | | | | | | | |
+ | FreeBSD 3.3 | | | | NetBSD 1.4.1 | |
+ | | | | | | | OpenBSD 2.6 |
+ | FreeBSD 3.4 | | | | | | |
+ | | | | | | | | BSD/OS 4.1
+FreeBSD 4.0 | | | | | NetBSD 1.4.2 | |
+ | | | | | | | | |
+ | | | | | | | | |
+ | FreeBSD 3.5 | | | | | OpenBSD 2.7 |
+ | | | | | | | | |
+ | FreeBSD 3.5.1 | | | | | | |
+ | | | | | | | |
+ *---FreeBSD 4.1 | | | | | | |
+ | | | | (?) | | | |
+ | FreeBSD 4.1.1 | | / | | | |
+ | | | | / | | | |
+ | FreeBSD 4.2 Darwin/ | NetBSD 1.4.3 | |
+ | | Mac OS X | OpenBSD 2.8 BSD/OS 4.2
+ | | | | | |
+ | | | | | |
+ | | 10.0 NetBSD 1.5 | |
+ | FreeBSD 4.3 | | | | |
+ | | | | | OpenBSD 2.9 |
+ | | | | NetBSD 1.5.1 | |
+ | | | | | | |
+ | FreeBSD 4.4-. | | NetBSD 1.5.2 | |
+ | | | Mac OS X | | | |
+ | | | 10.1 | | OpenBSD 3.0 |
+ | FreeBSD 4.5 | | | | | |
+ | | \ | | | | BSD/OS 4.3
+ | FreeBSD 4.6 \ | | | OpenBSD 3.1 |
+ | | \ | | NetBSD 1.5.3 | |
+ | FreeBSD 4.6.2 Mac OS X | | |
+ | | 10.2 | | |
+ | FreeBSD 4.7 | | | |
+ | | | NetBSD 1.6 OpenBSD 3.2 |
+ | FreeBSD 4.8 | | | | |
+ | | | | NetBSD 1.6.1 | |
+ | |--------. | | | OpenBSD 3.3 BSD/OS 5.0
+ | | \ | | | | |
+ | FreeBSD 4.9 | | | | OpenBSD 3.4 BSD/OS 5.1 ISE
+ | | | | | | |
+ | | | | | NetBSD 1.6.2 |
+ | | | | | | |
+ | | | | | | OpenBSD 3.5
+ | | | | | v |
+ | FreeBSD 4.10 | | | |
+ | | | | | |
+ | FreeBSD 4.11 | | | |
+ | | | | |
+ | `-|------|-----------------|---------------------.
+ | | | | \
+FreeBSD 5.0 | | | |
+ | | | | |
+FreeBSD 5.1 | | | DragonFly 1.0
+ | \ | | | |
+ | ----- Mac OS X | | |
+ | 10.3 | | |
+FreeBSD 5.2 | | | |
+ | | | | | |
+ | FreeBSD 5.2.1 | | | |
+ | | | | |
+ *-------FreeBSD 5.3 | | | |
+ | | | | OpenBSD 3.6 |
+ | | | NetBSD 2.0 | |
+ | | | | | | | DragonFly 1.2.0
+ | | Mac OS X | | NetBSD 2.0.2 | |
+ | | 10.4 | | | | |
+ | FreeBSD 5.4 | | | | | |
+ | | | | | | OpenBSD 3.7 |
+ | | | | | NetBSD 2.0.3 | |
+ | | | | | | | |
+ *--FreeBSD | | | | v OpenBSD 3.8 |
+ | 6.0 | | | | | |
+ | | | | | \ | |
+ | | | | | NetBSD 2.1 | |
+ | | | | | | |
+ | | | | NetBSD 3.0 | |
+ | | | | | | | | DragonFly 1.4.0
+ | | | | | | | OpenBSD 3.9 |
+ | FreeBSD | | | | | | |
+ | 6.1 | | | | | | |
+ | | FreeBSD 5.5 | | | | | |
+ | | | | | NetBSD 3.0.1 | DragonFly 1.6.0
+ | | | | | | | |
+ | | | | | | OpenBSD 4.0 |
+ | | | | | NetBSD 3.0.2 | |
+ | | | | NetBSD 3.1 | |
+ | FreeBSD 6.2 | | | |
+ | | | | | DragonFly 1.8.0
+ | | | | OpenBSD 4.1 |
+ | | | | | DragonFly 1.10.0
+ | | Mac OS X | | |
+ | | 10.5 | | |
+ | | | | OpenBSD 4.2 |
+ | | | NetBSD 4.0 | |
+ | FreeBSD 6.3 | | | |
+ | \ | | | |
+ *--FreeBSD | | | | DragonFly 1.12.0
+ | 7.0 | | | | |
+ | | | | | OpenBSD 4.3 |
+ | V | | | | DragonFly 2.0.0
+ | FreeBSD | | OpenBSD 4.4 |
+ | 6.4 | | | |
+ | | | | |
+FreeBSD 8 -current | NetBSD -current OpenBSD -current |
+ | | | | |
+ v v v v v
+
+Time
+----------------
+
+Time tolerance +/- 6 months, depending on which book/article you read; if it
+was the announcement in Usenet or if it was available as tape.
+
+[44B] McKusick, Marshall Kirk, Keith Bostic, Michael J Karels,
+ and John Quarterman. The Design and Implementation of
+ the 4.4BSD Operating System.
+[APL] Apple website [http://www.apple.com/macosx/]
+[BSDI] Berkeley Software Design, Inc.
+[DFB] DragonFlyBSD Project, The.
+[DOC] README, COPYRIGHT on tape.
+[FBD] FreeBSD Project, The.
+[KB] Keith Bostic. BSD2.10 available from Usenix. comp.unix.sources,
+ Volume 11, Info 4, April, 1987.
+[KKK] Mike Karels, Kirk McKusick, and Keith Bostic. tahoe announcement.
+ comp.bugs.4bsd.ucb-fixes, June 15, 1988.
+[KSJ] Michael J. Karels, Carl F. Smith, and William F. Jolitz.
+ Changes in the Kernel in 2.9BSD. Second Berkeley Software
+ Distribution UNIX Version 2.9, July, 1983.
+[NBD] NetBSD Project, The.
+[OBD] OpenBSD Project, The.
+[QCU] Salus, Peter H. A quarter century of UNIX.
+[SMS] Steven M. Schultz. 2.11BSD, UNIX for the PDP-11.
+[USE] Usenet announcement.
+[WRS] Wind River Systems, Inc.
+[dmr] Dennis Ritchie, via E-Mail
+
+Multics 1965
+UNIX Summer 1969
+ DEC PDP-7
+First Edition 1971-11-03 [QCU]
+ DEC PDP-11/20, Assembler
+Second Edition 1972-06-12 [QCU]
+ 10 UNIX installations
+Third Edition 1973-02-xx [QCU]
+ Pipes, 16 installations
+Fourth Edition 1973-11-xx [QCU]
+ rewriting in C effected,
+ above 30 installations
+Fifth Edition 1974-06-xx [QCU]
+ above 50 installations
+Sixth Edition 1975-05-xx [QCU]
+ port to DEC Vax
+Seventh Edition 1979-01-xx [QCU]
+ first portable UNIX
+Eighth Edition 1985-02-xx [QCU]
+ VAX 11/750, VAX 11/780 [dmr]
+ descended from 4.1c BSD [dmr]
+ descended from 4.1 BSD [44B]
+ scooping-out and replacement of the character-device
+ and networking part by the streams mechanism
+
+Ninth Edition 1986-09-xx [QCU]
+Tenth Edition 1989-10-xx [QCU]
+
+1BSD late 1977
+ 1978-03-09 [QCU]
+ PDP-11, Pascal, ex(1)
+ 30 free copies of 1BSD sent out
+ 35 tapes sold for 50 USD [QCU]
+2BSD mid 1978 [QCU]
+ 75 2BSD tapes shipped
+2.7.9BSD ?? [SMS]
+2.8BSD 1981-07-xx [KSJ]
+
+2.8.1BSD 1982-01-xx [QCU]
+ set of performance improvements
+2.9BSD 1983-07-xx [KSJ]
+2.9.1BSD 1983-11-xx
+2.9BSD-Seismo 1985-08-xx [SMS]
+2.10BSD 1987-04-xx [KKK]
+2.10.1BSD 1989-01-xx [SMS]
+2.11BSD 1992-02-xx [SMS]
+2.11BSD rev #430 1999-12-13 [SMS]
+
+32V 1978-1[01]-xx [QCU]
+3BSD late 1979 [QCU]
+ virtual memory, page replacement,
+ demand paging
+4.0BSD 1980-10-xx
+4.1BSD 1981-07-08 [DOC]
+4.1aBSD 1982-04-xx
+ alpha release, 100 sites, networking [44B]
+4.1bBSD internal release, fast filesystem [44B]
+4.1cBSD late 1982
+ beta release, IPC [44B]
+4.2BSD 1983-09-xx [QCU]
+ 1983-08-03 [DOC]
+4.3BSD 1986-06-xx [QCU]
+ 1986-04-05 [KB], [DOC]
+4.3BSD Tahoe 1988-06-15 [QCU], [DOC]
+4.3BSD NET/1 1988-11-xx [QCU]
+ 1989-01-01 [DOC]
+4.3BSD Reno 1990-06-29 [QCU], [DOC]
+4.3BSD NET/2 1991-06-28 [QCU], [DOC]
+
+BSD/386 ALPHA 1991-12-xx [BSDI]
+ first code released to people outside BSDI
+386BSD 0.0 1992-02-xx [DOC]
+BSD/386 0.3.1 1992-04-xx [BSDI] first ext. beta; B customers
+BSD/386 0.3.3 1992-06-xx [BSDI] first CDROM version
+386BSD 0.1 1992-07-28 [DOC]
+4.4BSD Alpha 1992-07-07
+BSD/386 0.9.3 1992-10-xx [BSDI]
+ first external gamma; G customers
+BSD/386 0.9.4 1992-12-xx [BSDI]
+ would have been 1.0 except for request
+ for preliminary injunction
+BSD/386 1.0 1993-03-xx [BSDI]
+ injunction denied; first official release
+NetBSD 0.8 1993-04-20 [NBD]
+4.4BSD 1993-06-01 [USE]
+NetBSD 0.9 1993-08-23 [NBD]
+FreeBSD 1.0 1993-11-01 [FBD]
+FreeBSD 1.0.2 1993-11-14 [FBD]
+ supersedes 1.0 13 days after release.
+BSD/386 1.1 1994-02-xx [BSDI]
+4.4BSD Lite 1994-03-01 [USE]
+FreeBSD 1.1 1994-05-07 [FBD]
+FreeBSD 1.1.5 1994-06-30 [FBD]
+FreeBSD 1.1.5.1 1994-07-05 [FBD]
+ supersedes 1.1.5 5 days after release.
+NetBSD 1.0 1994-10-26 [NBD]
+386BSD 1.0 1994-11-12 [USE]
+FreeBSD 2.0 1994-11-23 [FBD]
+BSD/OS 2.0 1995-01-xx [BSDI] 4.4 lite based
+FreeBSD 2.0.5 1995-06-10 [FBD]
+BSD/OS 2.0.1 1995-06-xx [BSDI]
+4.4BSD Lite Release 2 1995-06-xx [44B]
+ the true final distribution from the CSRG
+FreeBSD 2.1.0 1995-11-19 [FBD]
+NetBSD 1.1 1995-11-26 [NBD]
+BSD/OS 2.1 1996-01-xx [BSDI]
+FreeBSD 2.1.5 1996-07-14 [FBD]
+NetBSD 1.2 1996-10-04 [NBD]
+OpenBSD 2.0 1996-10-18 [OBD]
+FreeBSD 2.1.6 1996-11-16 [FBD]
+FreeBSD 2.1.6.1 1996-11-25 [FBD] (sendmail security release)
+Rhapsody 1997-xx-xx
+FreeBSD 2.1.7 1997-02-20 [FBD]
+BSD/OS 3.0 1997-02-xx [BSDI] 4.4 lite2 based
+FreeBSD 2.2.0 1997-03-16 [FBD]
+FreeBSD 2.2.1 1997-03-25 [FBD]
+FreeBSD 2.2.2 1997-05-16 [FBD]
+NetBSD 1.2.1 1997-05-20 [NBD] (patch release)
+OpenBSD 2.1 1997-06-01 [OBD]
+FreeBSD 2.2.5 1997-10-22 [FBD]
+OpenBSD 2.2 1997-12-01 [OBD]
+NetBSD 1.3 1998-01-04 [NBD]
+FreeBSD 2.2.6 1998-03-25 [FBD]
+NetBSD 1.3.1 1998-03-09 [NBD] (patch release)
+BSD/OS 3.1 1998-03-xx [BSDI]
+OpenBSD 2.3 1998-05-19 [OBD]
+NetBSD 1.3.2 1998-05-29 [NBD] (patch release)
+FreeBSD 2.2.7 1998-07-22 [FBD]
+BSD/OS 4.0 1998-08-xx [BSDI]
+ 2-lock MP support, ELF executables
+FreeBSD 3.0 1998-10-16 [FBD]
+ FreeBSD-3.0 is a snapshot from -current,
+ while 3.1 and 3.2 are from 3.x-stable which
+ was branched quite some time after 3.0-release
+FreeBSD 2.2.8 1998-11-29 [FBD]
+OpenBSD 2.4 1998-12-01 [OBD]
+NetBSD 1.3.3 1998-12-23 [NBD] (patch release)
+FreeBSD 3.1 1999-02-15 [FBD]
+BSD/OS 4.0.1 1999-03-xx [BSDI]
+NetBSD 1.4 1999-05-12 [NBD]
+FreeBSD 3.2 1999-05-17 [FBD]
+OpenBSD 2.5 1999-05-19 [OBD]
+NetBSD 1.4.1 1999-08-26 [NBD] (patch release)
+FreeBSD 3.3 1999-09-17 [FBD]
+OpenBSD 2.6 1999-12-01 [OBD]
+FreeBSD 3.4 1999-12-20 [FBD]
+BSD/OS 4.1 1999-12-xx [BSDI]
+FreeBSD 4.0 2000-03-13 [FBD]
+NetBSD 1.4.2 2000-03-19 [NBD] (patch release)
+OpenBSD 2.7 2000-06-15 [OBD]
+FreeBSD 3.5 2000-06-24 [FBD]
+FreeBSD 4.1 2000-07-27 [FBD]
+FreeBSD 3.5.1 2000-07-28 [FBD]
+FreeBSD 4.1.1 2000-09-25 [FBD] (a network-only patch release)
+FreeBSD 4.2 2000-11-21 [FBD]
+NetBSD 1.4.3 2000-11-25 [NBD] (patch release)
+BSD/OS 4.2 2000-11-29 [BSDI]
+OpenBSD 2.8 2000-12-01 [OBD]
+NetBSD 1.5 2000-12-06 [NBD]
+Mac OS X 10.0 2001-03-24 [APL]
+FreeBSD 4.3 2001-04-20 [FBD]
+OpenBSD 2.9 2001-06-01 [OBD]
+NetBSD 1.5.1 2001-07-11 [NBD] (patch release)
+NetBSD 1.5.2 2001-09-13 [NBD] (patch release)
+FreeBSD 4.4 2001-09-18 [FBD]
+Mac OS X 10.1 2001-09-29 [APL]
+OpenBSD 3.0 2001-12-01 [OBD]
+FreeBSD 4.5 2002-01-29 [FBD]
+BSD/OS 4.3 2002-03-14 [WRS]
+OpenBSD 3.1 2002-05-19 [OBD]
+FreeBSD 4.6 2002-06-15 [FBD]
+NetBSD 1.5.3 2002-07-22 [NBD] (patch release)
+FreeBSD 4.6.2 2002-08-15 [FBD] (patch release)
+Mac OS X 10.2 2002-08-23 [APL]
+NetBSD 1.6 2002-09-14 [NBD]
+FreeBSD 4.7 2002-10-08 [FBD]
+OpenBSD 3.2 2002-11-01 [OBD]
+FreeBSD 5.0 2003-01-17 [FBD]
+ FreeBSD 5.0 is a separate branch off of
+ -current, similar to 3.0.
+FreeBSD 4.8 2003-04-03 [FBD]
+NetBSD 1.6.1 2003-04-21 [NBD] (patch release)
+OpenBSD 3.3 2003-05-01 [OBD]
+BSD/OS 5.0 2003-05-?? [WRS]
+FreeBSD 5.1 2003-06-09 [FBD]
+Mac OS X 10.3 2003-10-24 [APL]
+FreeBSD 4.9 2003-10-28 [FBD]
+BSD/OS 5.1 ISE 2003-10-?? [WRS] (final version)
+OpenBSD 3.4 2003-11-01 [OBD]
+FreeBSD 5.2 2004-01-12 [FBD]
+FreeBSD 5.2.1 2004-02-22 [FBD] (patch release)
+NetBSD 1.6.2 2004-03-01 [NBD] (patch release)
+OpenBSD 3.5 2004-04-01 [OBD]
+FreeBSD 4.10 2004-05-27 [FBD]
+DragonFly 1.0 2004-07-12 [DFB]
+OpenBSD 3.6 2004-10-29 [OBD]
+FreeBSD 5.3 2004-11-06 [FBD]
+NetBSD 2.0 2004-12-09 [NBD]
+FreeBSD 4.11 2005-01-25 [FBD]
+DragonFly 1.2.0 2005-04-08 [DFB]
+NetBSD 2.0.2 2005-04-14 [NBD] (security/critical release)
+Mac OS X 10.4 2005-04-29 [APL]
+FreeBSD 5.4 2005-05-09 [FBD]
+OpenBSD 3.7 2005-05-19 [OBD]
+NetBSD 2.0.3 2005-10-31 [NBD] (security/critical release)
+OpenBSD 3.8 2005-11-01 [OBD]
+FreeBSD 6.0 2005-11-01 [FBD]
+NetBSD 2.1 2005-11-02 [NBD]
+NetBSD 3.0 2005-12-23 [NBD]
+DragonFly 1.4.0 2006-01-08 [DFB]
+OpenBSD 3.9 2006-05-01 [OBD]
+FreeBSD 6.1 2006-05-08 [FBD]
+FreeBSD 5.5 2006-05-25 [FBD]
+NetBSD 3.0.1 2006-07-24 [NBD] (security/critical release)
+DragonFly 1.6.0 2006-07-24 [DFB]
+OpenBSD 4.0 2006-11-01 [OBD]
+NetBSD 3.0.2 2006-11-04 [NBD] (security/critical release)
+NetBSD 3.1 2006-11-04 [NBD]
+FreeBSD 6.2 2007-01-15 [FBD]
+DragonFly 1.8.0 2007-01-30 [DFB]
+OpenBSD 4.1 2007-05-01 [OBD]
+DragonFly 1.10.0 2007-08-06 [DFB]
+Mac OS X 10.5 2007-10-26 [APL]
+OpenBSD 4.2 2007-11-01 [OBD]
+NetBSD 4.0 2007-12-19 [NBD]
+FreeBSD 6.3 2008-01-18 [FBD]
+DragonFly 1.12.0 2008-02-26 [DFB]
+FreeBSD 7.0 2008-02-27 [FBD]
+OpenBSD 4.3 2008-05-01 [OBD]
+DragonFly 2.0.0 2008-07-21 [DFB]
+OpenBSD 4.4 2008-11-01 [OBD]
+FreeBSD 6.4 2008-11-28 [FBD]
+
+Bibliography
+------------------------
+
+Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and John
+Quarterman. The Design and Implementation of the 4.3BSD UNIX Operating
+System. Reading, Mass. Addison-Wesley, 1989. ISBN 0-201-06196-1
+
+Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing
+Company, Inc., 1994. ISBN 0-201-54777-5
+
+McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John
+Quarterman. The Design and Implementation of the 4.4BSD Operating
+System. Reading, Mass. Addison-Wesley, 1996. ISBN 0-201-54979-4
+
+McKusick, Marshall Kirk, George Neville-Neil. The Design and
+Implementation of the FreeBSD Operating System.
+Addison-Wesley Professional, Published: Aug 2, 2004. ISBN 0-201-70245-2
+
+Doug McIlroy. Research Unix Reader.
+
+Michael G. Brown. The Role of BSD in the Development of Unix.
+Presented to the Tasmanian Unix Special Interest Group of the
+Australian Computer Society, Hobart, August 1993.
+
+Peter H. Salus. Unix at 25. Byte Magazine, October 1994.
+URL: http://www.byte.com/art/9410/sec8/art3.htm
+
+Andreas Klemm, Lars Köller. If you're going to San Francisco ...
+Die freien BSD-Varianten von Unix. c't April 1997, page 368ff.
+
+BSD Release Announcements collection.
+URL: http://www.de.FreeBSD.org/de/ftp/releases/
+
+BSD Hypertext Man Pages
+URL: http://www.FreeBSD.org/cgi/man.cgi
+
+UNIX history graphing project
+URL: http://minnie.tuhs.org/Unix_History/index.html
+
+UNIX history
+URL: http://www.levenez.com/unix/
+
+James Howard: The BSD Family Tree
+URL: http://ezine.daemonnews.org/200104/bsd_family.html
+("what are the differences between FreeBSD, NetBSD, and OpenBSD?")
+
+
+Acknowledgments
+---------------
+
+Josh Gilliam for suggestions, bug fixes, and finding very old
+original BSD announcements from Usenet or tapes.
+
+Steven M. Schultz for providing 2.8BSD, 2.10BSD, 2.11BSD manual pages.
+
+--
+Copyright (c) 1997-2007 Wolfram Schneider <wosch@FreeBSD.ORG>
+URL: http://cvsweb.freebsd.org/src/share/misc/bsd-family-tree
+
+$FreeBSD$
diff --git a/share/misc/committers-doc.dot b/share/misc/committers-doc.dot
new file mode 100644
index 0000000..083800f
--- /dev/null
+++ b/share/misc/committers-doc.dot
@@ -0,0 +1,127 @@
+# $FreeBSD$
+
+# This file is meant to list all FreeBSD doc+www committers and describe the
+# mentor-mentee relationships between them.
+# The graphical output can be generated from this file with the following
+# command:
+# $ dot -T png -o file.png committers-doc.dot
+#
+# The dot binary is part of the graphics/graphviz port.
+
+digraph doc {
+
+# Node definitions follow this example:
+#
+# foo [label="Foo Bar\nfoo@FreeBSD.org\n????/??/??"]
+#
+# ????/??/?? is the date when the commit bit was obtained, usually the one you
+# can find looking at CVS logs for the access (or avail) file under CVSROOT.
+# Use YYYY/MM/DD format.
+#
+# For returned commit bits, the node definition will follow this example:
+#
+# foo [label="Foo Bar\nfoo@FreeBSD.org\n????/??/??\n????/??/??"]
+#
+# The first date is the same as for an active committer, the second date is
+# the date when the commit bit has been returned. Again, check CVS logs.
+
+node [color=grey62, style=filled, bgcolor=black];
+
+# Alumni go here. Try to keep things sorted.
+
+node [color=lightblue2, style=filled, bgcolor=black];
+
+# Current doc committers go here. Try to keep things sorted.
+
+ache [label="Andrey Chernov\nache@FreeBSD.org\n1997/06/13"]
+ale [label="Alex Dupre\nale@FreeBSD.org\n2003/12/22"]
+blackend [label="Marc Fonvieille\nblackend@FreeBSD.org\n2002/06/16"]
+bmah [label="Bruce A. Mah\nbmah@FreeBSD.org\n2000/08/22"]
+brd [label="Brad Davis\nbrd@FreeBSD.org\n2005/06/01"]
+brueffer [label="Christian Brueffer\nbrueffer@FreeBSD.org\n2003/01/13"]
+bvs [label="Vitaly Bogdanov\nbvs@FreeBSD.org\n2005/10/03"]
+ceri [label="Ceri Davies\nceri@FreeBSD.org\n2002/03/17"]
+chinsan [label="Chinsan Huang\nchinsan@FreeBSD.org\n2006/09/20"]
+danger [label="Daniel Gerzo\ndanger@FreeBSD.org\n2006/08/20"]
+den [label="Denis Peplin\nden@FreeBSD.org\n2003/09/13"]
+delphij [label="Xin Li\ndelphij@FreeBSD.org\n2004/09/14"]
+gabor [label="Gabor Kovesdan\ngabor@FreeBSD.org\n2007/02/02"]
+ganbold [label="Ganbold Tsagaankhuu\nganbold@FreeBSD.org\n2008/02/26"]
+garys [label="Gary W. Swearingen\ngarys@FreeBSD.org\n2005/08/21"]
+jcamou [label="Jesus R. Camou\njcamou@FreeBSD.org\n2005/03/02"]
+jesusr [label="Jesus Rodriguez Cuesta\njesusr@FreeBSD.org\n1998/12/10"]
+jim [label="Jim Mock\njim@FreeBSD.org\n1999/08/11\n2003/12/15"]
+jkois [label="Johann Kois\njkois@FreeBSD.org\n2004/11/11"]
+joel [label="Joel Dahl\njoel@FreeBSD.org\n2005/04/05"]
+josef [label="Josef El-Rayes\njosef@FreeBSD.org\n2004/01/15"]
+keramida [label="Giorgos Keramidas\nkeramida@FreeBSD.org\n2001/10/12"]
+loader [label="Fukang Chen\nloader@FreeBSD.org\n2007/07/30"]
+linimon [label="Mark Linimon\nlinimon@FreeBSD.org\n2004/03/31"]
+manolis [label="Manolis Kiagias\nmanolis@FreeBSD.org\n2008/05/24"]
+marcel [label="Marcel Moolenaar\nmarcel@FreeBSD.org\n1999/07/03"]
+marck [label="Dmitry Morozovsky\nmarck@FreeBSD.org\n2004/08/10"]
+miwi [label="Martin Wilke\nmiwi@FreeBSD.org\n2007/10/26"]
+murray [label="Murray Stokely\nmurray@FreeBSD.org\n2000/04/05"]
+nik [label="Nik Clayton\nnik@FreeBSD.org\n1998/02/26"]
+pav [label="Pav Lucistnik\npav@FreeBSD.org\n2005/08/12"]
+pgj [label="Gabor Pali\npgj@FreeBSD.org\n2008/04/21"]
+remko [label="Remko Lodder\nremko@FreeBSD.org\n2004/10/16"]
+rene [label="Rene Ladan\nrene@FreeBSD.org\n2008/11/03"]
+roam [label="Peter Pentchev\nroam@FreeBSD.org\n2003/02/14"]
+simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2003/07/20"]
+trhodes [label="Tom Rhodes\ntrhodes@FreeBSD.org\n2002/03/25"]
+
+# Here are the mentor/mentee relationships.
+# Group together all the mentees for a particular mentor.
+# Keep the list sorted by mentor login.
+
+blackend -> ale
+
+brueffer -> joel
+
+ceri -> brd
+ceri -> brueffer
+ceri -> linimon
+ceri -> roam
+ceri -> simon
+
+den -> marck
+
+delphij -> chinsan
+delphij -> loader
+
+gabor -> pgj
+gabor -> manolis
+
+jesusr -> jcamou
+
+jim -> trhodes
+
+jkois -> miwi
+
+keramida -> blackend
+keramida -> danger
+keramida -> gabor
+keramida -> ganbold
+keramida -> garys
+keramida -> pav
+
+marck -> bvs
+
+mheinen -> jkois
+
+murray -> ceri
+murray -> delphij
+
+nik -> bmah
+nik -> keramida
+
+remko -> jkois
+remko -> rene
+
+simon -> josef
+simon -> remko
+
+trhodes -> danger
+trhodes -> jcamou
+}
diff --git a/share/misc/committers-ports.dot b/share/misc/committers-ports.dot
new file mode 100644
index 0000000..2bfe07e
--- /dev/null
+++ b/share/misc/committers-ports.dot
@@ -0,0 +1,320 @@
+# $FreeBSD$
+
+# This file is meant to list all FreeBSD ports committers and describe the
+# mentor-mentee relationships between them.
+# The graphical output can be generated from this file with the following
+# command:
+# $ dot -T png -o file.png committers-ports.dot
+#
+# The dot binary is part of the graphics/graphviz port.
+
+digraph ports {
+
+# Node definitions follow this example:
+#
+# foo [label="Foo Bar\nfoo@FreeBSD.org\n????/??/??"]
+#
+# ????/??/?? is the date when the commit bit was obtained, usually the one you
+# can find looking at CVS logs for the access (or avail) file under CVSROOT.
+#
+# For returned commit bits, the node definition will follow this example:
+#
+# foo [label="Foo Bar\nfoo@FreeBSD.org\n????/??/??\n????/??/??"]
+#
+# The first date is the same as for an active committer, the second date is
+# the date when the commit bit has been returned. Again, check CVS logs.
+
+node [color=grey62, style=filled, bgcolor=black];
+
+# Alumni go here.. Try to keep things sorted.
+
+adamw [label="Adam Weinberger\nadamw@FreeBSD.org\n2002/10/16\n2006/09/25"]
+asami [label="Satoshi Asami\nasami@FreeBSD.org\n1994/11/18\n2001/09/11"]
+billf [label="Bill Fumerola\nbillf@FreeBSD.org\n1998/11/11\n2006/12/14"]
+bmah [label="Bruce A. Mah\nbmah@FreeBSD.org\n2000/08/23\n2006/12/19"]
+jmallett [label="Juli Mallett\njmallett@FreeBSD.org\n2003/01/16\n2006/08/10"]
+marcel [label="Marcel Moolenaar\nmarcel@FreeBSD.org\n1999/07/03\n2007/07/01"]
+steve [label="Steve Price\nsteve@FreeBSD.org\nxxxx/xx/xx\nxxxx/xx/xx"]
+will [label="Will Andrews\nwill@FreeBSD.org\n2000/03/20\n2006/09/01"]
+
+node [color=lightblue2, style=filled, bgcolor=black];
+
+# Current ports committers go here. Try to keep things sorted.
+
+ache [label="Andrey Chernov\nache@FreeBSD.org\n1994/11/15"]
+acm [label="Jose Alonso Cardenas Marquez\nacm@FreeBSD.org\n2006/07/18"]
+ahze [label="Michael Johnson\nahze@FreeBSD.org\n2004/10/29"]
+ale [label="Alex Dupre\nale@FreeBSD.org\n2004/01/12"]
+alepulver [label="Alejandro Pulver\nalepulver@FreeBSD.org\n2006/04/01"]
+alexbl [label="Alexander Botero-Lowry\nalexbl@FreeBSD.org\n2006/09/11"]
+amdmi3 [label="Dmitry Marakasov\namdmi3@FreeBSD.org\n2008/06/19"]
+anray [label="Andrey Slusar\nanray@FreeBSD.org\n2005/12/11"]
+araujo [label="Marcelo Araujo\naraujo@FreeBSD.org\n2007/04/26"]
+arved [label="Tilman Linneweh\narved@FreeBSD.org\n2002/10/15"]
+az [label="Andrej Zverev\naz@FreeBSD.org\n2005/10/03"]
+beech [label="Beech Rintoul\nbeech@FreeBSD.org\n2007/05/30"]
+bland [label="Alexander Nedotsukov\nbland@FreeBSD.org\n2003/08/14"]
+brix [label="Henrik Brix Andersen\nbrix@FreeBSD.org\n2007/10/31"]
+brooks [label="Brooks Davies\nbrooks@FreeBSD.org\n2004/05/03"]
+bsam [label="Boris Samorodov\nbsam@FreeBSD.org\n2006/07/20"]
+chinsan [label="Chinsan Huang\nchinsan@FreeBSD.org\n2007/06/12"]
+clement [label="Clement Laforet\nclement@FreeBSD.org\n2003/12/17"]
+clsung [label="Cheng-Lung Sung\nclsung@FreeBSD.org\n2004/8/18"]
+cperciva [label="Colin Percival\ncperciva@FreeBSD.org\n2006/01/31"]
+daichi [label="Daichi Goto\ndaichi@FreeBSD.org\n2002/10/17"]
+danfe [label="Alexey Dokuchaev\ndanfe@FreeBSD.org\n2004/08/20"]
+db [label="Diane Bruce\ndb@FreeBSD.org\n2007/01/18"]
+delphij [label="Xin Li\ndelphij@FreeBSD.org\n2006/05/01"]
+demon [label="Dmitry Sivachenko\ndemon@FreeBSD.org\n2000/11/13"]
+dryice [label="Dryice Dong Liu\ndryice@FreeBSD.org\n2006/12/25"]
+edwin [label="Edwin Groothuis\nedwin@FreeBSD.org\n2002/10/22"]
+ehaupt [label="Emanuel Haupt\nehaupt@FreeBSD.org\n2005/10/03"]
+eik [label="Oliver Eikemeier\neik@FreeBSD.org\n2003/11/12"]
+erwin [label="Erwin Lansing\nerwin@FreeBSD.org\n2003/06/04"]
+farrokhi [label="Babak Farrokhi\nfarrokhi@FreeBSD.org\n2006/11/07"]
+fjoe [label="Max Khon\nfjoe@FreeBSD.org\n2001/08/06"]
+flz [label="Florent Thoumie\nflz@FreeBSD.org\n2005/03/01"]
+gabor [label="Gabor Kovesdan\ngabor@FreeBSD.org\n2006/12/05"]
+gahr [label="Pietro Cerutti\ngahr@FreeBSD.org\n2008/02/20"]
+garga [label="Renato Botelho\ngarga@FreeBSD.org\n2005/07/11"]
+gerald [label="Gerald Pfeifer\gerald@FreeBSD.org\n2002/04/03"]
+glewis [label="Greg Lewis\nglewis@FreeBSD.org\n2002/04/08"]
+hq [label="Herve Quiroz\nhq@FreeBSD.org\n2004/08/05"]
+ijliao [label="Ying-Chieh Liao\nijliao@FreeBSD.org\n2001/01/20"]
+itetcu [label="Ion-Mihai Tetcu\nitetcu@FreeBSD.org\n2006/06/07"]
+jadawin [label="Philippe Audeoud\njadawin@FreeBSD.org\n2008/03/02"]
+jkim [label="Jung-uk Kim\njkim@FreeBSD.org\n2007/09/12"]
+jmelo [label="Jean Milanez Melo\njmelo@FreeBSD.org\n2006/03/31"]
+joerg [label="Joerg Wunsch\njoerg@FreeBSD.org\n1994/08/22"]
+johans [label="Johan Selst\njohans@FreeBSD.org\n2006/04/01"]
+josef [label="Josef El-Rayes\njosef@FreeBSD.org\n2004/12/20"]
+jpaetzel [label="Josh Paetzel\njpaetzel@FreeBSD.org\n2008/09/05"]
+jylefort [label="Jean-Yves Lefort\njylefort@FreeBSD.org\n2005/04/12"]
+kevlo [label="Kevin Lo\nkevlo@FreeBSD.org\n2003/02/21"]
+knu [label="Akinori Musha\nknu@FreeBSD.org\n2000/03/22"]
+krion [label="Kirill Ponomarew\nkrion@FreeBSD.org\n2003/07/20"]
+kwm [label="Koop Mast\nkwm@FreeBSD.org\n2004/09/14"]
+koitsu [label="Jeremy Chadwick\nkoitsu@FreeBSD.org\n2006/11/10"]
+laszlof [label="Frank Laszlo\nlaszlof@FreeBSD.org\n2006/11/07"]
+lawrance [label="Sam Lawrance\nlawrance@FreeBSD.org\n2005/04/11\n2007/02/21"]
+lbr [label="Lars Balker Rasmussen\nlbr@FreeBSD.org\n2006/04/30"]
+leeym [label="Yen-Ming Lee\nleeym@FreeBSD.org\n2002/08/14"]
+lev [label="Lev Serebryakov\nlev@FreeBSD.org\n2003/06/17"]
+linimon [label="Mark Linimon\nlinimon@FreeBSD.org\n2003/10/23"]
+lioux [label="Mario Sergio Fujikawa Ferriera\nlioux@FreeBSD.org\n2000/10/14"]
+lippe [label="Felippe de Meirelles Motta\nlippe@FreeBSD.org\n2008/03/08"]
+lth [label="Lars Thegler\nlth@FreeBSD.org\n2004/05/04"]
+lwhsu [label="Li-Wen Hsu\nlwhsu@FreeBSD.org\n2007/04/03"]
+lx [label="David Thiel\nlx@FreeBSD.org\n2006/11/29"]
+maho [label="Maho Nakata\nmaho@FreeBSD.org\n2002/10/17"]
+marcus [label="Joe Marcus Clarke\nmarcus@FreeBSD.org\n2002/04/05"]
+markus [label="Markus Brueffer\nmarkus@FreeBSD.org\n2004/02/21"]
+mat [label="Mathieu Arnold\nmat@FreeBSD.org\n2003/08/15"]
+mezz [label="Jeremy Messenger\nmezz@FreeBSD.org\n2004/04/30"]
+miwi [label="Martin Wilke\nmiwi@FreeBSD.org\n2006/06/04"]
+mm [label="Martin Matuska\nmm@FreeBSD.org\n2007/04/04"]
+mnag [label="Marcus Alves Grando\nmnag@FreeBSD.org\n2005/09/15"]
+nemoliu [label="Tong Liu\nnemoliu@FreeBSD.org\n2007/04/25"]
+netchild [label="Alexander Leidinger\nnetchild@FreeBSD.org\n2002/03/19"]
+nobutaka [label="Nobutaka Mantani\nnobutaka@FreeBSD.org\n2001/11/02"]
+nork [label="Norikatsu Shigemura\nnork@FreeBSD.org\n2002/04/01"]
+novel [label="Roman Bogorodskiy\nnovel@FreeBSD.org\n2005/03/07"]
+nox [label="Juergen Lock\nnox@FreeBSD.org\n2006/12/22"]
+obrien [label="David E. O'Brien\nobrien@FreeBSD.org\n1996/10/29"]
+mharo [label="Michael Haro\nmharo@FreeBSD.org\n1999/04/13"]
+osa [label="Sergey A. Osokin\nosa@FreeBSD.org\n2003/06/04"]
+pat [label="Patrick Li\npat@FreeBSD.org\n2001/11/14"]
+pav [label="Pav Lucistnik\npav@FreeBSD.org\n2003/11/12"]
+philip [label="Philip Paeps\nphilip@FreeBSD.org\n2005/10/19"]
+pgollucci [label="Philip M. Gollucci\npgollucci@FreeBSD.org\n2008/07/21"]
+rafan [label="Rong-En Fan\nrafan@FreeBSD.org\n2006/06/23"]
+rnoland [label="Robert Noland\nrnoland@FreeBSD.org\n2008/07/21"]
+sat [label="Andrew Pantyukhin\nsat@FreeBSD.org\n2006/05/06"]
+sem [label="Sergey Matveychuk\nsem@FreeBSD.org\n2004/07/07"]
+sergei [label="Sergei Kolobov\nsergei@FreeBSD.org\n2003/10/21"]
+shaun [label="Shaun Amott\nshaun@FreeBSD.org\n2006/06/19"]
+simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2005/01/08"]
+sobomax[label="Maxim Sobolev\nsobomax@FreeBSD.org\n2000/05/17"]
+stas [label="Stanislav Sedov\nstas@FreeBSD.org\n2006/09/18"]
+stefan [label="Stefan Walter\nstefan@FreeBSD.org\n2006/05/07"]
+tabthorpe [label="Thomas Abthorpe\ntabthorpe@FreeBSD.org\n2007/08/20"]
+tdb [label="Tim Bishop\ntdb@FreeBSD.org\n2005/11/30"]
+timur [label="Timur Bakeyev\ntimur@FreeBSD.org\n2007/06/07"]
+trasz [label="Edward Tomasz Napierala\ntrasz@FreeBSD.org\n2007/04/12"]
+trhodes [label="Tom Rhodes\ntrhodes@FreeBSD.org\n2004/07/06"]
+thierry [label="Thierry Thomas\nthierry@FreeBSD.org\n2004/03/15"]
+tmclaugh [label="Tom McLaughlin\ntmclaugh@FreeBSD.org\n2005/09/15"]
+vd [label="Vasil Dimov\nvd@FreeBSD.org\n2006/01/19"]
+wxs [label="Wesley Shields\nwxs@FreeBSD.org\n2008/01/03"]
+xride [label="Soeren Straarup\nxride@FreeBSD.org\n2006/09/27"]
+znerd [label="Ernst de Haan\nznerd@FreeBSD.org\n2001/11/15"]
+
+# Here are the mentor/mentee relationships.
+# Group together all the mentees for a particular mentor.
+# Keep the list sorted by mentor login.
+
+adamw -> ahze
+adamw -> jylefort
+adamw -> mezz
+adamw -> pav
+
+ade -> jpaetzel
+
+ahze -> shaun
+ahze -> tmclaugh
+
+araujo -> lippe
+araujo -> pgollucci
+
+arved -> markus
+arved -> stefan
+
+asami -> obrien
+
+billf -> sobomax
+billf -> will
+
+clement -> tdb
+clement -> lawrance
+
+clsung -> lwhsu
+clsung -> tabthorpe
+
+delphij -> nemoliu
+delphij -> rafan
+
+demon -> mat
+
+edwin -> cperciva
+edwin -> erwin
+edwin -> linimon
+edwin -> lx
+
+ehaupt -> db
+
+eik -> sem
+eik -> trhodes
+
+erwin -> brix
+erwin -> clement
+erwin -> gabor
+erwin -> lbr
+erwin -> lth
+erwin -> simon
+
+fjoe -> danfe
+fjoe -> krion
+fjoe -> osa
+
+flz -> garga
+flz -> johans
+flz -> laszlof
+
+gabor -> lippe
+
+garga -> acm
+garga -> alepulver
+garga -> mm
+garga -> rnoland
+garga -> vd
+garga -> wxs
+garga -> xride
+
+glewis -> hq
+glewis -> jkim
+
+ijliao -> leeym
+
+itetcu -> araujo
+itetcu -> dryice
+
+joerg -> netchild
+
+knu -> daichi
+knu -> maho
+knu -> nobutaka
+knu -> nork
+
+krion -> brooks
+krion -> miwi
+krion -> novel
+krion -> philip
+krion -> sat
+krion -> sem
+krion -> sergei
+
+lawrance -> itetcu
+
+leeym -> clsung
+
+lioux -> pat
+
+marcus -> ahze
+marcus -> bland
+marcus -> eik
+marcus -> jmallett
+
+mat -> thierry
+
+mezz -> tmclaugh
+
+miwi -> amdmi3
+miwi -> farrokhi
+miwi -> gahr
+miwi -> nox
+miwi -> tabthorpe
+miwi -> trasz
+
+mnag -> jmelo
+
+netchild -> bsam
+
+nork -> ale
+
+novel -> alexbl
+novel -> ehaupt
+
+obrien -> mharo
+obrien -> gerald
+
+pat -> adamw
+
+pav -> ahze
+pav -> flz
+pav -> josef
+pav -> kwm
+pav -> mnag
+
+philip -> koitsu
+
+rafan -> chinsan
+
+sat -> beech
+
+sem -> az
+sem -> anray
+sem -> delphij
+sem -> stas
+
+shaun -> timur
+
+sobomax -> demon
+sobomax -> glewis
+sobomax -> lev
+sobomax -> marcus
+sobomax -> znerd
+
+stas -> araujo
+
+steve -> netchild
+
+tabthorpe -> jadawin
+
+thierry -> jadawin
+
+tmclaugh -> itetcu
+tmclaugh -> xride
+
+will -> lioux
+
+}
diff --git a/share/misc/committers-src.dot b/share/misc/committers-src.dot
new file mode 100644
index 0000000..78ce794
--- /dev/null
+++ b/share/misc/committers-src.dot
@@ -0,0 +1,420 @@
+# $FreeBSD$
+
+# This file is meant to list all FreeBSD src committers and describe the
+# mentor-mentee relationships between them.
+# The graphical output can be generated from this file with the following
+# command:
+# $ dot -T png -o file.png committers-src.dot
+#
+# The dot binary is part of the graphics/graphviz port.
+
+digraph src {
+
+# Node definitions follow this example:
+#
+# foo [label="Foo Bar\nfoo@FreeBSD.org\n????/??/??"]
+#
+# ????/??/?? is the date when the commit bit was obtained, usually the one you
+# can find looking at CVS logs for the access (or avail) file under CVSROOT.
+#
+# For returned commit bits, the node definition will follow this example:
+#
+# foo [label="Foo Bar\nfoo@FreeBSD.org\n????/??/??\n????/??/??"]
+#
+# The first date is the same as for an active committer, the second date is
+# the date when the commit bit has been returned. Again, check CVS logs.
+
+node [color=grey62, style=filled, bgcolor=black];
+
+# Alumni go here.. Try to keep things sorted.
+
+adrian [label="Adrian Chadd\nadrian@FreeBSD.org\n2000/07/03\n2006/05/30"]
+alm [label="Andrew Moore\nalm@FreeBSD.org\n1993/06/12\n????/??/??"]
+archie [label="Archie Cobbs\narchie@FreeBSD.org\n1998/11/06\n2006/06/09"]
+asmodai [label="Jeroen Ruigrok\nasmodai@FreeBSD.org\n1999/12/16\n2001/11/16"]
+cjc [label="Crist J. Clark\ncjc@FreeBSD.org\n2001/06/01\n2006/12/29"]
+furuta [label="Atsushi Furuta\nfuruta@FreeBSD.org\n2000/06/21\n????/??/??"]
+jtc [label="J.T. Conklin\njtc@FreeBSD.org\n1993/06/12\n????/??/??"]
+keichii [label="Michael Wu\nkeichii@FreeBSD.org\n2001/03/07\n2006/04/28"]
+mb [label="Maxim Bolotin\nmb@FreeBSD.org\n2000/04/06\n????/??/??"]
+nate [label="Nate Willams\nnate@FreeBSD.org\n1993/06/12\n2003/12/15"]
+non [label="Noriaki Mitsnaga\nnon@FreeBSD.org\n2000/06/19\n2007/03/06"]
+rgrimes [label="Rod Grimes\nrgrimes@FreeBSD.org\n1993/06/12\n????/??/??"]
+shafeeq [label="Shafeeq Sinnamohideen\nshafeeq@FreeBSD.org\n2000/06/19\n????/??/??"]
+sheldonh [label="Sheldon Hearn\nsheldonh@FreeBSD.org\n1999/06/14\n2006/05/13"]
+shin [label="Yoshinobu Inoue\nshin@FreeBSD.org\n1999/07/29\n2003/03/08"]
+tmm [label="Thomas Moestl\ntmm@FreeBSD.org\n2001/03/07\n2006/07/12"]
+toshi [label="Toshihiko Arai\ntoshi@FreeBSD.org\n2000/07/06\n????/??/??"]
+tshiozak [label="Takuya SHIOZAKI\ntshiozak@FreeBSD.org\n2001/04/25\n2003/03/08"]
+uch [label="UCHIYAMA Yasushi\nuch@FreeBSD.org\n2000/06/21\n????/??/??"]
+
+node [color=lightblue2, style=filled, bgcolor=black];
+
+# Current src committers go here. Try to keep things sorted.
+
+ache [label="Andrey Chernov\nache@FreeBSD.org\n1993/10/31"]
+akiyama [label="Shunsuke Akiyama\nakiyama@FreeBSD.org\n2000/06/19"]
+ambrisko [label="Doug Ambrisko\nambrisko@FreeBSD.org\n2001/12/19"]
+andre [label="Andre Oppermann\nandre@FreeBSD.org\n2003/11/12"]
+anholt [label="Eric Anholt\nanholt@FreeBSD.org\n2002/04/22"]
+antoine [label="Antoine Brodin\nantoine@FreeBSD.org\n2008/02/03"]
+ariff [label="Ariff Abdullah\nariff@FreeBSD.org\n2005/11/14"]
+benjsc [label="Benjamin Close\nbenjsc@FreeBSD.org\n2007/02/09"]
+benno [label="Benno Rice\nbenno@FreeBSD.org\n2000/11/02"]
+bmah [label="Bruce A. Mah\nbmah@FreeBSD.org\n2002/01/29"]
+bmilekic [label="Bosko Milekic\nbmilekic@FreeBSD.org\n????/??/??"]
+bms [label="Bruce M Simpson\nbms@FreeBSD.org\n2003/08/06"]
+brian [label="Brian Somers\nbrian@FreeBSD.org\n1996/12/16"]
+brooks [label="Brooks Davis\nbrooks@FreeBSD.org\n2001/06/21"]
+brueffer [label="Christian Brueffer\nbrueffer@FreeBSD.org\n2006/02/28"]
+bruno [label="Bruno Ducrot\nbruno@FreeBSD.org\n2005/07/18"]
+bz [label="Bjoern A. Zeeb\nbz@FreeBSD.org\n2004/07/27"]
+ceri [label="Ceri Davies\nceri@FreeBSD.org\n2006/11/07"]
+cokane [label="Coleman Kane\ncokane@FreeBSD.org\n2000/06/19"]
+cperciva [label="Colin Percival\ncperciva@FreeBSD.org\n2004/01/20"]
+csjp [label="Christian S.J. Peron\ncsjp@FreeBSD.org\n2004/05/04"]
+davidxu [label="David Xu\ndavidxu@FreeBSD.org\n2002/09/02"]
+dds [label="Diomidis Spinellis\ndds@FreeBSD.org\n2003/06/20"]
+delphij [label="Xin Li\ndelphij@FreeBSD.org\n2004/09/14"]
+des [label="Dag-Erling Smorgrav\ndes@FreeBSD.org\n1998/04/03"]
+dg [label="David Greenman\ndg@FreeBSD.org\n1993/06/14"]
+dhartmei [label="Daniel Hartmeier\ndhartmei@FreeBSD.org\n2004/04/06"]
+dmlb [label="Duncan Barclay\ndmlb@FreeBSD.org\n2001/12/14"]
+dwmalone [label="David Malone\ndwmalone@FreeBSD.org\n2000/07/11"]
+ed [label="Ed Schouten\ned@FreeBSD.org\n2008/05/22"]
+edwin [label="Edwin Groothuis\nedwin@FreeBSD.org\n2007/06/25"]
+eik [label="Oliver Eikemeier\neik@FreeBSD.org\n2004/05/20"]
+emaste [label="Ed Maste\nemaste@FreeBSD.org\n2005/10/04"]
+emax [label="Maksim Yevmenkin\nemax@FreeBSD.org\n2003/10/12"]
+eri [label="Ermal Luci\neri@FreeBSD.org\n2008/06/11"]
+fanf [label="Tony Finch\nfanf@FreeBSD.org\n2002/05/05"]
+fjoe [label="Max Khon\nfjoe@FreeBSD.org\n2001/08/06"]
+flz [label="Florent Thoumie\nflz@FreeBSD.org\n2006/03/30"]
+gad [label="Garance A. Drosehn\ngad@FreeBSD.org\n2000/10/27"]
+gallatin [label="Andrew Gallatin\ngallatin@FreeBSD.org\n????/??/??"]
+gibbs [label="Justin T. Gibbs\ngibbs@FreeBSD.org\n????/??/??"]
+glebius [label="Gleb Smirnoff\nglebius@FreeBSD.org\n2004/07/14"]
+gnn [label="George V. Neville-Neil\ngnn@FreeBSD.org\n2004/10/11"]
+grehan [label="Peter Grehan\ngrehan@FreeBSD.org\n2002/08/08"]
+grog [label="Greg Lehey\ngrog@FreeBSD.org\n1998/08/30"]
+gshapiro [label="Gregory Shapiro\ngshapiro@FreeBSD.org\n2000/07/12"]
+iedowse [label="Ian Dowse\niedowse@FreeBSD.org\n2000/12/01"]
+imp [label="Warner Losh\nimp@FreeBSD.org\n1996/09/20"]
+ivoras [label="Ivan Voras\nivoras@FreeBSD.org\n2008/06/10"]
+jake [label="Jake Burkholder\njake@FreeBSD.org\n2000/05/16"]
+jayanth [label="Jayanth Vijayaraghavan\njayanth@FreeBSD.org\n2000/05/08"]
+jinmei [label="JINMEI Tatuya\njinmei@FreeBSD.org\n2007/03/17"]
+jdp [label="John Polstra\njdp@FreeBSD.org\n????/??/??"]
+jhb [label="John Baldwin\njhb@FreeBSD.org\n1999/08/23"]
+jkh [label="Jordan K. Hubbard\njkh@FreeBSD.org\n1993/06/12"]
+jkim [label="Jung-uk Kim\njkim@FreeBSD.org\n2005/07/06"]
+jkoshy [label="A. Joseph Koshy\njkoshy@FreeBSD.org\n1998/05/13"]
+jls [label="Jordan Sissel\njls@FreeBSD.org\n2006/12/06"]
+joe [label="Josef Karthauser\njoe@FreeBSD.org\n1999/10/22"]
+joerg [label="Joerg Wunsch\njoerg@FreeBSD.org\n1993/11/14"]
+jon [label="Jonathan Chen\njon@FreeBSD.org\n2000/10/17"]
+julian [label="Julian Elischer\njulian@FreeBSD.org\n1993/??/??"]
+kaiw [label="Kai Wang\nkaiw@FreeBSD.org\n2007/09/26"]
+kensmith [label="Ken Smith\nkensmith@FreeBSD.org\n2004/01/23"]
+kevlo [label="Kevin Lo\nkevlo@FreeBSD.org\n2006/07/23"]
+kmacy [label="Kip Macy\nkmacy@FreeBSD.org\n2005/06/01"]
+le [label="Lukas Ertl\nle@FreeBSD.org\n2004/02/02"]
+linimon [label="Mark Linimon\nlinimon@FreeBSD.org\n2006/09/30"]
+lstewart [label="Lawrence Stewart\nlstewart@FreeBSD.org\n2008/10/06"]
+lulf [label="Ulf Lilleengen\nlulf@FreeBSD.org\n2007/10/24"]
+marcel [label="Marcel Moolenaar\nmarcel@FreeBSD.org\n1999/07/03"]
+marks [label="Mark Santcroos\nmarks@FreeBSD.org\n2004/03/18"]
+markus [label="Markus Brueffer\nmarkus@FreeBSD.org\n2006/06/01"]
+matteo [label="Matteo Riondato\nmatteo@FreeBSD.org\n2006/01/18"]
+mav [label="Alexander Motin\nmav@FreeBSD.org\n2007/04/12"]
+maxim [label="Maxim Konovalov\nmaxim@FreeBSD.org\n2002/02/07"]
+mjacob [label="Matt Jacob\nmjacob@FreeBSD.org\n1997/08/13"]
+mlaier [label="Max Laier\nmlaier@FreeBSD.org\n2004/02/10"]
+mr [label="Michael Reifenberger\nmr@FreeBSD.org\n2001/09/30"]
+murray [label="Murray Stokely\nmurray@FreeBSD.org\n2000/04/05"]
+netchild [label="Alexander Leidinger\nnetchild@FreeBSD.org\n2005/03/31"]
+njl [label="Nate Lawson\nnjl@FreeBSD.org\n2002/08/07"]
+nwhitehorn [label="Nathan Whitehorn\nnwhitehorn@FreeBSD.org\n2008/07/03"]
+obrien [label="David E. O'Brien\nobrien@FreeBSD.org\n1996/10/29"]
+olli [label="Oliver Fromme\nolli@FreeBSD.org\n2008/02/14"]
+onoe [label="Atsushi Onoe\nonoe@FreeBSD.org\n2000/07/21"]
+peadar [label="Peter Edwards\npeadar@FreeBSD.org\n2004/03/08"]
+peter [label="Peter Wemm\npeter@FreeBSD.org\n????/??/??"]
+philip [label="Philip Paeps\nphilip@FreBSD.org\n2004/01/21"]
+phk [label="Poul-Henning Kamp\nphk@FreeBSD.org\n1994/02/21"]
+pho [label="Peter Holm \npho@FreeBSD.org\n2008/11/16"]
+pjd [label="Pawel Jakub Dawidek\npjd@FreeBSD.org\n2004/02/02"]
+ps [label="Paul Saab\nps@FreeBSD.org\n2000/02/23"]
+qingli [label="Qing Li\nqingli@FreeBSD.org\n2005/04/13"]
+rafan [label="Rong-En Fan\nrafan@FreeBSD.org\n2007/01/31"]
+remko [label="Remko Lodder\nremko@FreeBSD.org\n2007/02/23"]
+rik [label="Roman Kurakin\nrik@FreeBSD.org\n2003/12/18"]
+rink [label="Rink Springer\nrink@FreeBSD.org\n2006/01/16"]
+rnoland [label="Robert Noland\nrnoland@FreeBSD.org\n2008/09/15"]
+roberto [label="Ollivier Robert\nroberto@FreeBSD.org\n1995/02/22"]
+rpaulo [label="Rui Paulo\nrpaulo@FreeBSD.org\n2007/09/25"]
+rrs [label="Randall R Stewart\nrrs@FreeBSD.org\n2007/02/08"]
+rse [label="Ralf S. Engelschall\nrse@FreeBSD.org\n1997/07/31"]
+ru [label="Ruslan Ermilov\nru@FreeBSD.org\n1999/05/27"]
+rwatson [label="Robert N. M. Watson\nrwatson@FreeBSD.org\n1999/12/16"]
+sam [label="Sam Leffler\nsam@FreeBSD.org\n2002/07/02"]
+sanpei [label="MIHIRA Sanpei Yoshiro\nsanpei@FreeBSD.org\n2000/06/19"]
+scf [label="Sean C. Farley\nscf@FreeBSD.org\n2007/06/24"]
+schweikh [label="Jens Schweikhardt\nschweikh@FreeBSD.org\n2001/04/06"]
+sepotvin [label="Stephane E. Potvin\nsepotvin@FreeBSD.org\n2007/02/15"]
+shiba [label="Takeshi Shibagaki\nshiba@FreeBSD.org\n2000/06/19"]
+simon [label="Simon L. Nielsen\nsimon@FreeBSD.org\n2006/03/07"]
+sobomax [label="Maxim Sobolev\nsobomax@FreeBSD.org\n2001/07/25"]
+sson [label="Stacey Son\nsson@FreeBSD.org\n2008/07/08"]
+suz [label="SUZUKI Shinsuke\nsuz@FreeBSD.org\n2002/03/26"]
+syrinx [label="Shteryana Shopova\nsyrinx@FreeBSD.org\n2006/10/07"]
+takawata [label="Takanori Watanabe\ntakawata@FreeBSD.org\n2000/07/06"]
+thompsa [label="Andrew Thompson\nthompsa@FreeBSD.org\n2005/05/25"]
+ticso [label="Bernd Walter\nticso@FreeBSD.org\n2002/01/31"]
+trasz [label="Edward Tomasz Napierala\ntrasz@FreeBSD.org\n2008/08/22"]
+trhodes [label="Tom Rhodes\ntrhodes@FreeBSD.org\n2002/05/28"]
+ume [label="Hajimu UMEMOTO\nume@FreeBSD.org\n2000/02/26"]
+vanhu [label="Yvan Vanhullebus\nvanhu@FreeBSD.org\n2008/07/21"]
+versus [label="Konrad Jankowski\nversus@FreeBSD.org\n2008/10/27"]
+weongyo [label="Weongyo Jeong\nweongyo@FreeBSD.org\n2007/12/21"]
+wes [label="Wes Peters\nwes@FreeBSD.org\n1998/11/25"]
+wilko [label="Wilko Bulte\nwilko@FreeBSD.org\n2000/01/13"]
+wsalamon [label="Wayne Salamon\nwsalamon@FreeBSD.org\n2005/06/25"]
+yar [label="Yar Tikhiy\nyar@FreeBSD.org\n2001/03/25"]
+yongari [label="Pyun YongHyeon\nyongari@FreeBSD.org\n2004/08/01"]
+zec [label="Marko Zec\nzec@FreeBSD.org\n2008/06/22"]
+
+# Pseudo target representing rev 1.1 of commit.allow
+day1 [label="Birth of FreeBSD"]
+
+# Here are the mentor/mentee relationships.
+# Group together all the mentees for a particular mentor.
+# Keep the list sorted by mentor login.
+
+day1 -> jtc
+day1 -> jkh
+day1 -> nate
+day1 -> rgrimes
+day1 -> alm
+day1 -> dg
+
+andre -> qingli
+
+anholt -> jkim
+
+benno -> grehan
+
+billf -> dougb
+billf -> gad
+billf -> jedgar
+billf -> jhb
+billf -> shafeeq
+
+bmilekic -> csjp
+
+bms -> dhartmei
+bms -> mlaier
+bms -> thompsa
+
+brian -> joe
+
+brooks -> bushman
+
+bz -> syrinx
+
+cperciva -> flz
+cperciva -> simon
+
+csjp -> bushman
+
+delphij -> rafan
+
+des -> anholt
+des -> hmp
+des -> mike
+des -> olli
+des -> ru
+
+dds -> versus
+
+dwmalone -> fanf
+dwmalone -> peadar
+
+eivind -> des
+eivind -> rwatson
+
+emax -> markus
+
+gallatin -> ticso
+
+gibbs -> mjacob
+gibbs -> njl
+
+glebius -> mav
+
+gnn -> jinmei
+gnn -> rrs
+gnn -> ivoras
+gnn -> vanhu
+gnn -> lstewart
+
+grog -> edwin
+grog -> le
+
+imp -> akiyama
+imp -> ambrisko
+imp -> bmah
+imp -> bruno
+imp -> dmlb
+imp -> emax
+imp -> furuta
+imp -> joe
+imp -> jon
+imp -> keichii
+imp -> mb
+imp -> mr
+imp -> non
+imp -> onoe
+imp -> remko
+imp -> rik
+imp -> rink
+imp -> sanpei
+imp -> shiba
+imp -> takawata
+imp -> toshi
+imp -> uch
+
+jake -> bms
+jake -> gordon
+jake -> harti
+jake -> jeff
+jake -> kmacy
+jake -> robert
+jake -> yongari
+
+jb -> sson
+
+jdp -> fjoe
+
+jhb -> arr
+jhb -> jeff
+jhb -> kbyanc
+jhb -> rnoland
+
+jkh -> imp
+jkh -> jlemon
+jkh -> joerg
+jkh -> phk
+jkh -> wes
+jkh -> yar
+
+jkoshy -> kaiw
+
+jlemon -> bmilekic
+jlemon -> brooks
+
+joerg -> brian
+joerg -> eik
+joerg -> le
+joerg -> netchild
+
+julian -> glebius
+julian -> davidxu
+julian -> archie
+julian -> adrian
+julian -> zec
+
+kib -> lulf
+
+kmacy -> lstewart
+
+marcel -> arun
+marcel -> marius
+marcel -> nwhitehorn
+
+mdodd -> jake
+
+mlaier -> benjsc
+mlaier -> dhartmei
+mlaier -> thompsa
+mlaier -> eri
+
+msmith -> cokane
+msmith -> scottl
+
+murray -> delphij
+
+netchild -> ariff
+
+njl -> marks
+njl -> philip
+njl -> rpaulo
+njl -> sepotvin
+
+obrien -> benno
+obrien -> groudier
+obrien -> gshapiro
+obrien -> kan
+obrien -> sam
+
+peter -> asmodai
+peter -> jayanth
+peter -> ps
+
+philip -> jls
+philip -> matteo
+
+pjd -> lulf
+
+ru -> ceri
+ru -> cjc
+ru -> eik
+ru -> maxim
+ru -> sobomax
+
+rwatson -> adrian
+rwatson -> antoine
+rwatson -> bmah
+rwatson -> brueffer
+rwatson -> bz
+rwatson -> cperciva
+rwatson -> emaste
+rwatson -> gnn
+rwatson -> kensmith
+rwatson -> kmacy
+rwatson -> linimon
+rwatson -> shafeeq
+rwatson -> tmm
+rwatson -> trasz
+rwatson -> trhodes
+rwatson -> wsalamon
+
+sam -> andre
+sam -> benjsc
+sam -> sephe
+
+schweikh -> dds
+
+scottl -> pjd
+scottl -> sah
+scottl -> yongari
+
+sheldonh -> dwmalone
+sheldonh -> iedowse
+
+shin -> ume
+
+sos -> marcel
+
+thompsa -> weongyo
+thompsa -> eri
+
+ume -> jinmei
+ume -> suz
+ume -> tshiozak
+
+wes -> scf
+
+wollman -> gad
+
+}
diff --git a/share/misc/eqnchar b/share/misc/eqnchar
new file mode 100644
index 0000000..b933974
--- /dev/null
+++ b/share/misc/eqnchar
@@ -0,0 +1,90 @@
+.EQ
+tdefine ciplus % "\o'\(pl\(ci'" %
+ndefine ciplus % O+ %
+tdefine citimes % "\o'\(mu\(ci'" %
+ndefine citimes % Ox %
+tdefine =wig % "\(eq\h'-\w'\(eq'u-\w'\s-2\(ap'u/2u'\v'-.4m'\s-2\z\(ap\(ap\s+2\v'.4m'\h'\w'\(eq'u-\w'\s-2\(ap'u/2u'" %
+ndefine =wig % ="~" %
+tdefine bigstar % "\o'\(pl\(mu'" %
+ndefine bigstar % X|- %
+tdefine =dot % "\z\(eq\v'-.6m'\h'.2m'\s+2.\s-2\v'.6m'\h'.1m'" %
+ndefine =dot % = dot %
+tdefine orsign % "\s-2\v'-.15m'\z\e\e\h'-.05m'\z\(sl\(sl\v'.15m'\s+2" %
+ndefine orsign % \e/ %
+tdefine andsign % "\s-2\v'-.15m'\z\(sl\(sl\h'-.05m'\z\e\e\v'.15m'\s+2" %
+ndefine andsign % /\e %
+tdefine =del % "\v'.3m'\z=\v'-.6m'\h'.3m'\s-1\(*D\s+1\v'.3m'" %
+ndefine =del % = to DELTA %
+tdefine oppA % "\s-2\v'-.15m'\z\e\e\h'-.05m'\z\(sl\(sl\v'-.15m'\h'-.75m'\z-\z-\h'.2m'\z-\z-\v'.3m'\h'.4m'\s+2" %
+ndefine oppA % V- %
+tdefine oppE %"\s-3\v'.2m'\z\(em\v'-.5m'\z\(em\v'-.5m'\z\(em\v'.55m'\h'.9m'\z\(br\z\(br\v'.25m'\s+3" %
+ndefine oppE % E/ %
+tdefine incl % "\s-1\z\(or\h'-.1m'\v'-.45m'\z\(em\v'.7m'\z\(em\v'.2m'\(em\v'-.45m'\s+1" %
+ndefine incl % C_ %
+tdefine nomem % "\o'\(mo\(sl'" %
+ndefine nomem % C-/ %
+tdefine angstrom % "\fR\zA\v'-.3m'\h'.2m'\(de\v'.3m'\fP\h'.2m'" %
+ndefine angstrom % A to o %
+tdefine star %{ roman "\v'.5m'\s+3*\s-3\v'-.5m'"}%
+ndefine star % * %
+tdefine || % \(or\(or %
+tdefine <wig % "\z<\v'.4m'\(ap\v'-.4m'" %
+ndefine <wig %{ < from "~" }%
+tdefine >wig % "\z>\v'.4m'\(ap\v'-.4m'" %
+ndefine >wig %{ > from "~" }%
+tdefine langle % "\s-3\b'\(sl\e'\s0" %
+ndefine langle %<%
+tdefine rangle % "\s-3\b'\e\(sl'\s0" %
+ndefine rangle %>%
+tdefine hbar % "\zh\v'-.6m'\h'.05m'\(ru\v'.6m'" %
+ndefine hbar % h\u-\d %
+ndefine ppd % _| %
+tdefine ppd % "\o'\(ru\s-2\(or\s+2'" %
+tdefine <-> % "\o'\(<-\(->'" %
+ndefine <-> % "<-->" %
+tdefine <=> % "\s-2\z<\v'.05m'\h'.2m'\z=\h'.55m'=\h'-.6m'\v'-.05m'>\s+2" %
+ndefine <=> % "<=>" %
+tdefine |< % "\o'<\(or'" %
+ndefine |< % <| %
+tdefine |> % "\o'>\(or'" %
+ndefine |> % |> %
+tdefine ang % "\v'-.15m'\z\s-2\(sl\s+2\v'.15m'\(ru" %
+ndefine ang % /_ %
+tdefine rang % "\z\(or\h'.15m'\(ru" %
+ndefine rang % L %
+tdefine 3dot % "\v'-.8m'\z.\v'.5m'\z.\v'.5m'.\v'-.2m'" %
+ndefine 3dot % .\u.\u.\d\d %
+tdefine thf % ".\v'-.5m'.\v'.5m'." %
+ndefine thf % ..\u.\d %
+tdefine quarter % roman \(14 %
+ndefine quarter % 1/4 %
+tdefine 3quarter % roman \(34 %
+ndefine 3quarter % 3/4 %
+tdefine degree % \(de %
+ndefine degree % nothing sup o %
+tdefine square % \(sq %
+ndefine square % [] %
+tdefine circle % \(ci %
+ndefine circle % O %
+tdefine blot % "\fB\(sq\fP" %
+ndefine blot % HIX %
+tdefine bullet % \(bu %
+ndefine bullet % oxe %
+tdefine -wig % "\(~=" %
+ndefine -wig % - to "~" %
+tdefine wig % \(ap %
+ndefine wig % "~" %
+tdefine prop % \(pt %
+ndefine prop % oc %
+tdefine empty % \(es %
+ndefine empty % O/ %
+tdefine member % \(mo %
+ndefine member % C- %
+tdefine cup % \(cu %
+ndefine cup % U %
+define cap % \(ca %
+define subset % \(sb %
+define supset % \(sp %
+define !subset % \(ib %
+define !supset % \(ip %
+.EN
diff --git a/share/misc/flowers b/share/misc/flowers
new file mode 100644
index 0000000..107551c
--- /dev/null
+++ b/share/misc/flowers
@@ -0,0 +1,48 @@
+# Flower : Meaning
+# @(#)flowers 8.1 (Berkeley) 6/8/93
+#
+# Upside down reverses the meaning.
+African violet:Such worth is rare.
+Apple blossom:Preference.
+Bachelor's button:Celibacy.
+Bay leaf:I change but in death.
+Camelia:Reflected loveliness.
+Chrysanthemum, other color:Slighted love.
+Chrysanthemum, red:I love.
+Chrysanthemum, white:Truth.
+Clover:Be mine.
+Crocus:Abuse not.
+Daffodil:Innocence.
+Forget-me-not:True love.
+Fuchsia:Fast.
+Gardenia:Secret, untold love.
+Honeysuckle:Bonds of love.
+Ivy:Friendship, fidelity, marriage.
+Jasmine:Amiability, transports of joy, sensuality.
+Leaves (dead):Melancholy.
+Lilac:Youthful innocence.
+Lilly of the valley:Return of happiness.
+Lilly:Purity, sweetness.
+Magnolia:Dignity, perseverance.
+Marigold:Jealousy.
+Mint:Virtue.
+Orange blossom:Your purity equals your loveliness.
+Orchid:Beauty, magnificence.
+Pansy:Thoughts.
+Peach blossom:I am your captive.
+Petunia:Your presence soothes me.
+Poppy:Sleep.
+Rose, any color:Love.
+Rose, deep red:Bashful shame.
+Rose, single, pink:Simplicity.
+Rose, thornless, any color:Early attachment.
+Rose, white:I am worthy of you.
+Rose, yellow:Decrease of love, rise of jealousy.
+Rosebud, white:Girlhood, and a heart ignorant of love.
+Rosemary:Remembrance.
+Sunflower:Haughtiness.
+Tulip, red:Declaration of love.
+Tulip, yellow:Hopeless love.
+Violet, blue:Faithfulness.
+Violet, white:Modesty.
+Zinnia:Thoughts of absent friends.
diff --git a/share/misc/init.ee b/share/misc/init.ee
new file mode 100644
index 0000000..cc1534e
--- /dev/null
+++ b/share/misc/init.ee
@@ -0,0 +1,3 @@
+emacs
+noexpand
+nomargins
diff --git a/share/misc/iso3166 b/share/misc/iso3166
new file mode 100644
index 0000000..c6f65c0
--- /dev/null
+++ b/share/misc/iso3166
@@ -0,0 +1,520 @@
+# $FreeBSD$
+#
+# ISO 3166 country codes
+# This includes many places that are not legally independent countries,
+# but which is it convenient to refer to separately from their
+# parent lands.
+#
+# The original information in this file comes from ftp.ripe.net,
+# which got it from DIN, the official keeper of these codes.
+# The file format used by RIPE was not suitable, so it has been
+# rearranged to put the two-letter country code first. The country
+# names were capitalized, and most parenthetical designations have
+# been deleted unless necessary to distinguish two countries.
+#
+# The ISO3166 Maintenance Agency can be found at:
+# http://www.iso.ch/iso/en/prods-services/iso3166ma/index.html
+#
+# two three number name
+AF AFG 004 Afghanistan
+AL ALB 008 Albania
+AX ALA 248 Aland Islands
+DZ DZA 012 Algeria
+AS ASM 016 American Samoa
+AD AND 020 Andorra
+AO AGO 024 Angola
+AI AIA 660 Anguilla
+AQ ATA 010 Antarctica
+AG ATG 028 Antigua and Barbuda
+AR ARG 032 Argentina
+AM ARM 051 Armenia
+AW ABW 533 Aruba
+AU AUS 036 Australia
+AT AUT 040 Austria
+AZ AZE 031 Azerbaijan
+BS BHS 044 Bahamas
+BH BHR 048 Bahrain
+BD BGD 050 Bangladesh
+BB BRB 052 Barbados
+BY BLR 112 Belarus
+BE BEL 056 Belgium
+BZ BLZ 084 Belize
+BJ BEN 204 Benin
+BM BMU 060 Bermuda
+BT BTN 064 Bhutan
+BO BOL 068 Bolivia
+BA BIH 070 Bosnia and Herzegowina
+BW BWA 072 Botswana
+BV BVT 074 Bouvet Island
+BR BRA 076 Brazil
+IO IOT 086 British Indian Ocean Territory
+BN BRN 096 Brunei Darussalam
+BG BGR 100 Bulgaria
+BF BFA 854 Burkina Faso
+BI BDI 108 Burundi
+KH KHM 116 Cambodia
+CM CMR 120 Cameroon
+CA CAN 124 Canada
+CV CPV 132 Cape Verde
+KY CYM 136 Cayman Islands
+CF CAF 140 Central African Republic
+TD TCD 148 Chad
+CL CHL 152 Chile
+CN CHN 156 China
+CX CXR 162 Christmas Island
+CC CCK 166 Cocos (Keeling) Islands
+CO COL 170 Colombia
+KM COM 174 Comoros
+CG COG 178 Congo (Rep.)
+CD COD 180 Congo (Dem. Rep.)
+CK COK 184 Cook Islands
+CR CRI 188 Costa Rica
+CI CIV 384 Cote d'Ivoire
+HR HRV 191 Croatia
+CU CUB 192 Cuba
+CY CYP 196 Cyprus
+CZ CZE 203 Czech Republic
+DK DNK 208 Denmark
+DJ DJI 262 Djibouti
+DM DMA 212 Dominica
+DO DOM 214 Dominican Republic
+TL TLS 626 Timor-Leste
+EC ECU 218 Ecuador
+EG EGY 818 Egypt
+SV SLV 222 El Salvador
+GQ GNQ 226 Equatorial Guinea
+ER ERI 232 Eritrea
+EE EST 233 Estonia
+ET ETH 231 Ethiopia
+FK FLK 238 Falkland Islands
+FO FRO 234 Faroe Islands
+FJ FJI 242 Fiji
+FI FIN 246 Finland
+FR FRA 250 France
+GF GUF 254 French Guiana
+PF PYF 258 French Polynesia
+TF ATF 260 French Southern Territories
+GA GAB 266 Gabon
+GM GMB 270 Gambia
+GE GEO 268 Georgia
+DE DEU 276 Germany
+GH GHA 288 Ghana
+GI GIB 292 Gibraltar
+GR GRC 300 Greece
+GL GRL 304 Greenland
+GD GRD 308 Grenada
+GP GLP 312 Guadeloupe
+GU GUM 316 Guam
+GT GTM 320 Guatemala
+GG GGY 831 Guernsey
+GN GIN 324 Guinea
+GW GNB 624 Guinea-Bissau
+GY GUY 328 Guyana
+HT HTI 332 Haiti
+HM HMD 334 Heard and McDonald Islands
+HN HND 340 Honduras
+HK HKG 344 Hong Kong
+HU HUN 348 Hungary
+IS ISL 352 Iceland
+IN IND 356 India
+ID IDN 360 Indonesia
+IR IRN 364 Iran
+IQ IRQ 368 Iraq
+IE IRL 372 Ireland
+IM IMN 833 Isle of Man
+IL ISR 376 Israel
+IT ITA 380 Italy
+JM JAM 388 Jamaica
+JP JPN 392 Japan
+JE JEY 832 Jersey
+JO JOR 400 Jordan
+KZ KAZ 398 Kazakhstan
+KE KEN 404 Kenya
+KI KIR 296 Kiribati
+KP PRK 408 Korea (Democratic People's Republic of)
+KR KOR 410 Korea (Republic of)
+KW KWT 414 Kuwait
+KG KGZ 417 Kyrgyzstan
+LA LAO 418 Lao People's Democratic Republic
+LV LVA 428 Latvia
+LB LBN 422 Lebanon
+LS LSO 426 Lesotho
+LR LBR 430 Liberia
+LY LBY 434 Libyan Arab Jamahiriya
+LI LIE 438 Liechtenstein
+LT LTU 440 Lithuania
+LU LUX 442 Luxembourg
+MO MAC 446 Macao
+MK MKD 807 Macedonia (The Former Yugoslav Republic of)
+MG MDG 450 Madagascar
+MW MWI 454 Malawi
+MY MYS 458 Malaysia
+MV MDV 462 Maldives
+ML MLI 466 Mali
+MT MLT 470 Malta
+MH MHL 584 Marshall Islands
+MQ MTQ 474 Martinique
+MR MRT 478 Mauritania
+MU MUS 480 Mauritius
+YT MYT 175 Mayotte
+MX MEX 484 Mexico
+FM FSM 583 Micronesia (Federated States of)
+MD MDA 498 Moldova
+MC MCO 492 Monaco
+MN MNG 496 Mongolia
+ME MNE 499 Montenegro
+MS MSR 500 Montserrat
+MA MAR 504 Morocco
+MZ MOZ 508 Mozambique
+MM MMR 104 Myanmar
+NA NAM 516 Namibia
+NR NRU 520 Nauru
+NP NPL 524 Nepal
+NL NLD 528 Netherlands
+AN ANT 530 Netherlands Antilles
+NC NCL 540 New Caledonia
+NZ NZL 554 New Zealand
+NI NIC 558 Nicaragua
+NE NER 562 Niger
+NG NGA 566 Nigeria
+NU NIU 570 Niue
+NF NFK 574 Norfolk Island
+MP MNP 580 Northern Mariana Islands
+NO NOR 578 Norway
+OM OMN 512 Oman
+PK PAK 586 Pakistan
+PW PLW 585 Palau
+PS PSE 275 Occupied Palestinian Territory
+PA PAN 591 Panama
+PG PNG 598 Papua-New Guinea
+PY PRY 600 Paraguay
+PE PER 604 Peru
+PH PHL 608 Philippines
+PN PCN 612 Pitcairn
+PL POL 616 Poland
+PT PRT 620 Portugal
+PR PRI 630 Puerto Rico
+QA QAT 634 Qatar
+RE REU 638 Reunion
+RO ROU 642 Romania
+RU RUS 643 Russian Federation
+RW RWA 646 Rwanda
+BL BLM 652 Saint Barthelemy
+KN KNA 659 Saint Kitts and Nevis
+LC LCA 662 Saint Lucia
+MF MAF 663 Saint Martin (French part)
+VC VCT 670 Saint Vincent and the Grenadines
+WS WSM 882 Samoa
+SM SMR 674 San Marino
+ST STP 678 Sao Tome and Principe
+SA SAU 682 Saudi Arabia
+SN SEN 686 Senegal
+RS SRB 688 Serbia
+SC SYC 690 Seychelles
+SL SLE 694 Sierra Leone
+SG SGP 702 Singapore
+SK SVK 703 Slovakia
+SI SVN 705 Slovenia
+SB SLB 090 Solomon Islands
+SO SOM 706 Somalia
+ZA ZAF 710 South Africa
+GS SGS 239 South Georgia and the South Sandwich Islands
+ES ESP 724 Spain
+LK LKA 144 Sri Lanka
+SH SHN 654 St. Helena
+PM SPM 666 St. Pierre and Miquelon
+SD SDN 736 Sudan
+SR SUR 740 Suriname
+SJ SJM 744 Svalbard and Jan Mayen Islands
+SZ SWZ 748 Swaziland
+SE SWE 752 Sweden
+CH CHE 756 Switzerland
+SY SYR 760 Syrian Arab Republic
+TW TWN 158 Taiwan
+TJ TJK 762 Tajikistan
+TZ TZA 834 Tanzania
+TH THA 764 Thailand
+TG TGO 768 Togo
+TK TKL 772 Tokelau
+TO TON 776 Tonga
+TT TTO 780 Trinidad and Tobago
+TN TUN 788 Tunisia
+TR TUR 792 Turkey
+TM TKM 795 Turkmenistan
+TC TCA 796 Turks and Caicos Islands
+TV TUV 798 Tuvalu
+UG UGA 800 Uganda
+UA UKR 804 Ukraine
+AE ARE 784 United Arab Emirates
+GB GBR 826 United Kingdom
+US USA 840 United States
+UM UMI 581 United States Minor Outlying Islands
+UY URY 858 Uruguay
+UZ UZB 860 Uzbekistan
+VU VUT 548 Vanuatu
+VA VAT 336 Vatican City State
+VE VEN 862 Venezuela
+VN VNM 704 Viet Nam
+VG VGB 092 Virgin Islands (British)
+VI VIR 850 Virgin Islands (U.S.)
+WF WLF 876 Wallis and Futuna Islands
+EH ESH 732 Western Sahara
+YE YEM 887 Yemen
+ZM ZMB 894 Zambia
+ZW ZWE 716 Zimbabwe
+#
+# Revision history:
+#
+#
+# List of changes applied, as specified in registration newsletters:
+#
+# Newsletter III-1, 1989-12-5:
+# Burma deleted, Myanmar added (same numeric value, change of country name)
+#
+# Newsletter III-2, 1990-07-16
+# Namibia, changing information not included in this file
+#
+# Newsletter III-3, 1990-08-14
+# Afghanistan, changing information not included in this file
+#
+# Newsletter III-4, 1990-08-14
+# Ethiopia, changing information not included in this file
+#
+# Newsletter III-5, 1990-08-14
+# Fiji, changing information not included in this file
+#
+# Newsletter III-6, 1990-08-14
+# Hungary, changing information not included in this file
+#
+# Newsletter III-7, 1990-08-14
+# Unification of Yemen, under new numeric code
+#
+# Newsletter III-8, 1990-08-14
+# Romania, changing information not included in this file
+#
+# Newsletter III-9, 1990-08-14
+# Poland, changing information not included in this file
+#
+# Newsletter III-10, 1990-08-14
+# Kampuchea deleted, Cambodia added (same numeric value, change of name)
+#
+# Newsletter III-11, 1990-08-14
+# Benin, changing information not included in this file
+#
+# Newsletter III-12, 1990-12-04
+# Czechoslovakia, changing information not included in this file
+#
+# Newsletter III-13, 1990-10-30
+# Germany unified (DDR deleted, new name and numeric code for unified Germany)
+#
+# Newsletter III-14 1991-02-10
+# Mozambique, changing information not included in this file
+#
+# Newsletter III-15 1991-02-10
+# Bulgaria, changing information not included in this file
+#
+# Newsletter III-16 1992-06-15
+# ESTONIA added (EE, EST, 233)
+#
+# Newsletter III-17 1992-06-15
+# LATVIA added (LV, LVA, 428)
+#
+# Newsletter III-18 1992-06-15
+# Lithuania added
+#
+# Newsletter III-19 1992-06-15
+# Belarus, named and 3c changed
+#
+# Newsletter III-20 1992-04-06
+# Albania, changing information not included in this file
+#
+# Newsletter III-21 1992-04-06
+# Congo, changing information not included in this file
+#
+# Newsletter III-22 1992-04-19
+# Micronesia, name changed to Micronesia (Federated States of)
+#
+# Newsletter III-23 1992-04-19
+# Ukraine, name changed
+#
+# Newsletter III-24 1993-06-18
+# France, Metropolitan (FX) added (European part of France thus excluding:
+# GF, GP, MQ, NC, PF, PM, RE, TF, WF, YT)
+#
+# Newsletter III-25, 1991-12-18
+# Pitcairn, changing information not included in this file
+#
+# Newsletter III-26, 1992-06-15
+# Croatia, added NR, HRV, 191
+#
+# Newsletter III-27, 1992-06-15
+# Armenia, added AM, ARM, 051
+#
+# Newsletter III-28, 1992-08-28
+# Georgia added
+#
+# Newsletter III-29, 1992-06-15
+# Russian Federation added
+#
+# Newsletter III-30, 1992-06-15
+# Turkmenistan added
+#
+# Newsletter III-31, 1992-06-15
+# Kazakhstan added
+#
+# Newsletter III-32, 1992-06-15
+# Kyrgyzstan added
+#
+# Newsletter III-33, 1992-06-15
+# Tajikistan added
+#
+# Newsletter III-34, 1992-06-15
+# Uzbekistan added
+#
+# Newsletter III-35, 1992-06-15
+# Azerbaijan added
+#
+# Newsletter III-36 1992-06-15
+# MOLDOVA, REPUBLIC OF added (MD, MDA, 498)
+#
+# Newsletter III-37 1992-08-30
+# USSR deleted
+#
+# Newsletter III-38, 1993-06-15
+# Slovenia, number code 705 assigned
+#
+# Newsletter III-39 (undated)
+# BOSNIA AND HERZEGOWINA added (BA, BIH, 070)
+#
+# Newsletter III-40 1993-07-12
+# YEMEN, REPUBLIC OF changed to YEMEN
+#
+# Newsletter III-41 1993-07-28
+# MAURITIUS, changes outside this document
+#
+# Newletter III-42 1993-07-12
+# SAINT VINCENT AND THE GRENADINES, changes outside this document
+#
+# Newsletter III-43 1993-07-12
+# MONGOLIA, changes outside this document
+#
+# Newsletter III-44 1993-07-22
+# PANAMA, changed numeric code from 590 to 591
+#
+# Newsletter III-45 1993-07-28
+# YUGOSLAVIA changed numeric code from 890 to 891
+#
+# Newsletter III-46 1993-07-12
+# NEUTRAL ZONE deleted
+#
+# Newsletter III-47 1993-07-12
+# NETHERLANDS ANTILLES changed numeric code from 532 to 530
+#
+# Newsletter III-48, 1993-07-12
+# Added MAYOTTE
+#
+# Newsletter III-49, 1993-06-15
+# Slovakia added
+#
+# Newsletter III-50, 1993-06-15
+# Czech Republic added
+#
+# Newsletter III-51, 1993-06-15
+# Czechoslovakia officially deleted
+#
+# Newsletter III-52, 1993-07-02
+# Angola, changing information not included in this file. Offical name
+# change to Republic of Angola
+#
+# Newsletter III-53, 1993-07-12
+# Madagascar, changing information not included in this file. Official
+# name change to Republic of Madagascar
+#
+# Newsletter III-54, 1993-07-23
+# South Georgia and the South Sandwich Islands, previously covered by
+# Falkland Islands
+#
+# Newsletter III-55, 1993-07-16
+# Ethiopia, numeric code change to 231
+#
+# Newsletter III-56, 1993-07-16
+# Eritrea, changing information not included in this file
+# Previously covered by the entry ET
+#
+# Newsletter III-57, 1993-07-16
+# Macedonia, the former Yugoslav Republic of,
+# Previously covered by the entry YU
+#
+# Newsletter III-58, 1993-07-16
+# Afghanistan, changing information not included in this file
+# Official name change to Islamic State of Afghanistan
+#
+# Newsletter III-32, 1993-07-25 ammendment
+# Kyrgyzstan, changing information not included in this file. Offical name
+# change to Kyrgyz Republic
+#
+# Newsletter III-59, 1994-01-26
+# Andorra, changing information not included in this file. Offical name
+# change to Pricipality of Andorra
+#
+# Newsletter III-60, 1994-01-26
+# Cambodia, changing information not included in this file. Offical name
+# change to Kingdom of Cambodia
+#
+# Thu Feb 10 1994
+# At this point the fourth edition of ISO 3166 appears. It can *now* be
+# ordered from national standards institutions. The RIPE NCC will continue
+# tracking changes.
+#
+# [deletia]
+# Newsletter IV-2 1997-07-14
+# ZAIRE (ZA) changed to CONGO, THE DEMOCRATIC REPUBLIC OF THE (CD)
+# change of name, alpha-2 and alpha-3, numeric remains 180
+#
+# Newsletter V-3 2002-02-01
+# ROMANIA (RO) changed alpha-3 code from ROM to ROU. Numeric remains 642.
+#
+# Newsletter V-4 2002-05-20
+# KAZAKSTAN (KZ) changed short name to KAZAKHSTAN (no change in this file,
+# which already had the `h' spelling). MACAU (MO) changed short name to
+# MACAO (again). Numeric, alpha-2, and alpha-3 codes remain unchanged.
+# AFGHANISTAN (AF), AZERBAIJAN (AZ), BAHRAIN (BH), BOSNIA AND HERZEGOVINA
+# (BA), FIJI (FJ), HONG KONG (HK), KIRIBATI (KI), NIUE (NU), SOMALIA (SO),
+# and VENEZUELA (VE) all changed official names, which are not included in
+# this file.
+#
+# Newsletter V-5 2002-05-20
+# EAST TIMOR changed alpha-2 code from TP to TL and alpha-3 from TMP to TLS.
+# Numeric remains 626.
+#
+# Newsletter V-6 2002-11-15
+# EAST TIMOR (TL) changed short name to TIMOR-LESTE. Codes unchanged.
+#
+# Newsletter V-7 2003-01-14
+# COMOROS (KM) changed official name, not included in this file.
+#
+# Newsletter V-8 2003-07-23
+# YUGOSLAVIA (YU) changed official name, short name, alpha-2, and alpha-3.
+#
+# Newsletter V-9 2004-02-13
+# ALAND ISLANDS (AX) added as a new entry. In the official newsletter,
+# this territory is shown with the correct (Swedish) orthography. As this
+# file is restricted to the ASCII character set, we have substituted the
+# letter `A' for the Swedish letter U+00C5. (The Finnish name for this
+# semi-autonomous territory is Ahvenanmaa, but the official place-names
+# in the territory are Swedish-only.) Note that the standard collation
+# order for Swedish in Finland would sort this letter after Z.
+#
+# Newsletter V-10 2004-04-26
+# Name changes not relevant to this file.
+#
+# Newsletter V-11 2006-03-29
+# GUERNSEY (GG), ISLE OF MAN (IM), and JERSEY (JE) added as new entries.
+# These territories were previously included as a part of the UNITED
+# KINGDOM (GB).
+#
+# Newsletter V-12 2006-09-26
+# Removed SERBIA AND MONTENEGRO (CS). Added SERBIA (RS) and MONTENEGRO (ME).
+#
+# Newsletter VI-1 2007-09-21
+# Added SAINT BARTHELEMY (BL) and SAINT MARTIN (MF).
diff --git a/share/misc/iso639 b/share/misc/iso639
new file mode 100644
index 0000000..57d62a0
--- /dev/null
+++ b/share/misc/iso639
@@ -0,0 +1,473 @@
+# $FreeBSD$
+#
+# ISO 639-2 language codes
+#
+# From http://www.loc.gov/standards/iso639-2/ :
+#
+# The Library of Congress has been designated the ISO 639-2/RA for the
+# purpose of processing requests for alpha-3 language codes comprising the
+# International Standard, Codes for the representation of names of
+# languages -- Part 2: alpha-3 code. The ISO 639-2/RA receives and reviews
+# applications for requesting new language codes and for the change of
+# existing ones according to criteria indicated in the standard. It
+# maintains an accurate list of information associated with registered
+# language codes, processes updates of registered language codes, and
+# distributes them on a regular basis to subscribers and other parties.
+#
+# This is the official site of the ISO 639-2 Registration Authority and thus
+# is the only one authorized by ISO. If you have questions concerning ISO
+# 639-2 please contact us at:
+#
+# Library of Congress
+# Network Development and MARC Standards Office
+# Washington, DC 20540-4402
+# E-mail: iso639-2@loc.gov
+# Phone: +1 202 707 6237
+# FAX: +1 202 707 0115
+#
+# For general discussion about ISO language codes, write to: iso639@dkuug.dk
+
+# a2: ISO 639-1 Alpha-2 code
+# bib: ISO 639-2/B bibliographic code
+# term: ISO 639-2/B terminology code
+
+# a2 bib term name
+aa aar aar Afar
+ab abk abk Abkhazian
+ ace ace Achinese
+ ach ach Acoli
+ ada ada Adangme
+ afa afa Afro-Asiatic (Other)
+ afh afh Afrihili
+af afr afr Afrikaans
+ aka aka Akan
+ akk akk Akkadian
+sq alb sqi Albanian
+ ale ale Aleut
+ alg alg Algonquian languages
+am amh amh Amharic
+ ang ang English, Old (ca.450-1100)
+ apa apa Apache languages
+ar ara ara Arabic
+ arc arc Aramaic
+hy arm hye Armenian
+ arn arn Araucanian
+ arp arp Arapaho
+ art art Artificial (Other)
+ arw arw Arawak
+as asm asm Assamese
+ ast ast Asturian; Bable
+ ath ath Athapascan languages
+ aus aus Australian languages
+ ava ava Avaric
+ae ave ave Avestan
+ awa awa Awadhi
+ay aym aym Aymara
+az aze aze Azerbaijani
+ bad bad Banda
+ bai bai Bamileke languages
+ba bak bak Bashkir
+ bal bal Baluchi
+ bam bam Bambara
+ ban ban Balinese
+eu baq eus Basque
+ bas bas Basa
+ bat bat Baltic (Other)
+ bej bej Beja
+be bel bel Belarusian
+ bem bem Bemba
+bn ben ben Bengali
+ ber ber Berber (Other)
+ bho bho Bhojpuri
+bh bih bih Bihari
+ bik bik Bikol
+ bin bin Bini
+bi bis bis Bislama
+ bla bla Siksika
+ bnt bnt Bantu (Other)
+bs bos bos Bosnian
+ bra bra Braj
+br bre bre Breton
+ btk btk Batak (Indonesia)
+ bua bua Buriat
+ bug bug Buginese
+bg bul bul Bulgarian
+my bur mya Burmese
+ cad cad Caddo
+ cai cai Central American Indian (Other)
+ car car Carib
+ca cat cat Catalan
+ cau cau Caucasian (Other)
+ ceb ceb Cebuano
+ cel cel Celtic (Other)
+ch cha cha Chamorro
+ chb chb Chibcha
+ce che che Chechen
+ chg chg Chagatai
+zh chi zho Chinese
+ chk chk Chuukese
+ chm chm Mari
+ chn chn Chinook jargon
+ cho cho Choctaw
+ chp chp Chipewyan
+ chr chr Cherokee
+cu chu chu Church Slavic
+cv chv chv Chuvash
+ chy chy Cheyenne
+ cmc cmc Chamic languages
+ cop cop Coptic
+kw cor cor Cornish
+co cos cos Corsican
+ cpe cpe Creoles and pidgins, English based (Other)
+ cpf cpf Creoles and pidgins, French-based (Other)
+ cpp cpp Creoles and pidgins, Portuguese-based (Other)
+ cre cre Cree
+ crp crp Creoles and pidgins (Other)
+ cus cus Cushitic (Other)
+cs cze ces Czech
+ dak dak Dakota
+da dan dan Danish
+ day day Dayak
+ del del Delaware
+ den den Slave (Athapascan)
+ dgr dgr Dogrib
+ din din Dinka
+ div div Divehi
+ doi doi Dogri
+ dra dra Dravidian (Other)
+ dua dua Duala
+ dum dum Dutch, Middle (ca.1050-1350)
+nl dut nld Dutch
+ dyu dyu Dyula
+dz dzo dzo Dzongkha
+ efi efi Efik
+ egy egy Egyptian (Ancient)
+ eka eka Ekajuk
+ elx elx Elamite
+en eng eng English
+ enm enm English, Middle (1100-1500)
+eo epo epo Esperanto
+et est est Estonian
+ ewe ewe Ewe
+ ewo ewo Ewondo
+ fan fan Fang
+fo fao fao Faroese
+ fat fat Fanti
+fj fij fij Fijian
+fi fin fin Finnish
+ fiu fiu Finno-Ugrian (Other)
+ fon fon Fon
+fr fre fra French
+ frm frm French, Middle (ca.1400-1600)
+ fro fro French, Old (842-ca.1400)
+fy fry fry Frisian
+ ful ful Fulah
+ fur fur Friulian
+ gaa gaa Ga
+ gay gay Gayo
+ gba gba Gbaya
+ gem gem Germanic (Other)
+ka geo kat Georgian
+de ger deu German
+ gez gez Geez
+ gil gil Gilbertese
+gd gla gla Gaelic (Scots)
+ga gle gle Irish
+gl glg glg Gallegan
+gv glv glv Manx
+ gmh gmh German, Middle High (ca.1050-1500)
+ goh goh German, Old High (ca.750-1050)
+ gon gon Gondi
+ gor gor Gorontalo
+ got got Gothic
+ grb grb Grebo
+ grc grc Greek, Ancient (to 1453)
+el gre ell Greek, Modern (1453-)
+gn grn grn Guarani
+gu guj guj Gujarati
+ gwi gwi Gwich´in
+ hai hai Haida
+ha hau hau Hausa
+ haw haw Hawaiian
+he heb heb Hebrew
+hz her her Herero
+ hil hil Hiligaynon
+ him him Himachali
+hi hin hin Hindi
+ hit hit Hittite
+ hmn hmn Hmong
+ho hmo hmo Hiri Motu
+hu hun hun Hungarian
+ hup hup Hupa
+ iba iba Iban
+ ibo ibo Igbo
+is ice isl Icelandic
+ ijo ijo Ijo
+iu iku iku Inuktitut
+ie ile ile Interlingue
+ ilo ilo Iloko
+ia ina ina Interlingua (International Auxiliary Language Association)
+ inc inc Indic (Other)
+id ind ind Indonesian
+ ine ine Indo-European (Other)
+ik ipk ipk Inupiaq
+ ira ira Iranian (Other)
+ iro iro Iroquoian languages
+it ita ita Italian
+jv jav jav Javanese
+ja jpn jpn Japanese
+ jpr jpr Judeo-Persian
+ jrb jrb Judeo-Arabic
+ kaa kaa Kara-Kalpak
+ kab kab Kabyle
+ kac kac Kachin
+kl kal kal Kalaallisut
+ kam kam Kamba
+kn kan kan Kannada
+ kar kar Karen
+ks kas kas Kashmiri
+ kau kau Kanuri
+ kaw kaw Kawi
+kk kaz kaz Kazakh
+ kha kha Khasi
+ khi khi Khoisan (Other)
+km khm khm Khmer
+ kho kho Khotanese
+ki kik kik Kikuyu
+rw kin kin Kinyarwanda
+ky kir kir Kirghiz
+ kmb kmb Kimbundu
+ kok kok Konkani
+kv kom kom Komi
+ kon kon Kongo
+ko kor kor Korean
+ kos kos Kosraean
+ kpe kpe Kpelle
+ kro kro Kru
+ kru kru Kurukh
+kj kua kua Kuanyama
+ kum kum Kumyk
+ku kur kur Kurdish
+ kut kut Kutenai
+ lad lad Ladino
+ lah lah Lahnda
+ lam lam Lamba
+lo lao lao Lao
+la lat lat Latin
+lv lav lav Latvian
+ lez lez Lezghian
+ln lin lin Lingala
+lt lit lit Lithuanian
+ lol lol Mongo
+ loz loz Lozi
+lb ltz ltz Letzeburgesch
+ lua lua Luba-Lulua
+ lub lub Luba-Katanga
+ lug lug Ganda
+ lui lui Luiseno
+ lun lun Lunda
+ luo luo Luo (Kenya and Tanzania)
+ lus lus lushai
+mk mac mkd Macedonian
+ mad mad Madurese
+ mag mag Magahi
+mh mah mah Marshall
+ mai mai Maithili
+ mak mak Makasar
+ml mal mal Malayalam
+ man man Mandingo
+mi mao mri Maori
+ map map Austronesian (Other)
+mr mar mar Marathi
+ mas mas Masai
+ms may msa Malay
+ mdr mdr Mandar
+ men men Mende
+ mga mga Irish, Middle (900-1200)
+ mic mic Micmac
+ min min Minangkabau
+ mis mis Miscellaneous languages
+ mkh mkh Mon-Khmer (Other)
+mg mlg mlg Malagasy
+mt mlt mlt Maltese
+ mnc mnc Manchu
+ mni mni Manipuri
+ mno mno Manobo languages
+ moh moh Mohawk
+mo mol mol Moldavian
+mn mon mon Mongolian
+ mos mos Mossi
+ mul mul Multiple languages
+ mun mun Munda languages
+ mus mus Creek
+ mwr mwr Marwari
+ myn myn Mayan languages
+ nah nah Nahuatl
+ nai nai North American Indian
+na nau nau Nauru
+nv nav nav Navajo
+nr nbl nbl Ndebele, South
+nd nde nde Ndebele, North
+ng ndo ndo Ndonga
+ nds nds Low German; Low Saxon; German, Low; Saxon, Low
+ne nep nep Nepali
+ new new Newari
+ nia nia Nias
+ nic nic Niger-Kordofanian (Other)
+ niu niu Niuean
+ non non Norse, Old
+no nor nor Norwegian
+nn nno nno Norwegian Nynorsk
+nb nob nob Norwegian Bokmål
+ nso nso Sotho, Northern
+ nub nub Nubian languages
+ny nya nya Chichewa; Nyanja
+ nym nym Nyamwezi
+ nyn nyn Nyankole
+ nyo nyo Nyoro
+ nzi nzi Nzima
+oc oci oci Occitan (post 1500); Provençal
+ oji oji Ojibwa
+or ori ori Oriya
+om orm orm Oromo
+ osa osa Osage
+os oss oss Ossetian; Ossetic
+ ota ota Turkish, Ottoman (1500-1928)
+ oto oto Otomian languages
+ paa paa Papuan (Other)
+ pag pag Pangasinan
+ pal pal Pahlavi
+ pam pam Pampanga
+pa pan pan Panjabi
+ pap pap Papiamento
+ pau pau Palauan
+ peo peo Persian, Old (ca.600-400 B.C.)
+fa per fas Persian
+ phi phi Philippine (Other)
+ phn phn Phoenician
+pi pli pli Pali
+pl pol pol Polish
+ pon pon Pohnpeian
+pt por por Portuguese
+ pra pra Prakrit languages
+ pro pro Provençal, Old (to 1500)
+ps pus pus Pushto
+ qaa-qtz qaa-qtz Reserved for local use
+qu que que Quechua
+ raj raj Rajasthani
+ rap rap Rapanui
+ rar rar Rarotongan
+ roa roa Romance (Other)
+rm roh roh Raeto-Romance
+ rom rom Romany
+ro rum ron Romanian
+rn run run Rundi
+ru rus rus Russian
+ sad sad Sandawe
+sg sag sag Sango
+ sah sah Yakut
+ sai sai South American Indian (Other)
+ sal sal Salishan languages
+ sam sam Samaritan Aramaic
+sa san san Sanskrit
+ sas sas Sasak
+ sat sat Santali
+sr scc srp Serbian
+ sco sco Scots
+hr scr hrv Croatian
+ sel sel Selkup
+ sem sem Semitic (Other)
+ sga sga Irish, Old (to 900)
+ sgn sgn Sign Languages
+ shn shn Shan
+ sid sid Sidamo
+si sin sin Sinhalese
+ sio sio Siouan languages
+ sit sit Sino-Tibetan (Other)
+ sla sla Slavic (Other)
+sk slo slk Slovak
+sl slv slv Slovenian
+se sme sme Northern Sami
+ smi smi Sami languages (Other)
+sm smo smo Samoan
+sn sna sna Shona
+sd snd snd Sindhi
+ snk snk Soninke
+ sog sog Sogdian
+so som som Somali
+ son son Songhai
+st sot sot Sotho, Southern
+es spa spa Spanish
+sc srd srd Sardinian
+ srr srr Serer
+ ssa ssa Nilo-Saharan (Other)
+ss ssw ssw Swati
+ suk suk Sukuma
+su sun sun Sundanese
+ sus sus Susu
+ sux sux Sumerian
+sw swa swa Swahili
+sv swe swe Swedish
+ syr syr Syriac
+ty tah tah Tahitian
+ tai tai Tai (Other)
+ta tam tam Tamil
+tt tat tat Tatar
+te tel tel Telugu
+ tem tem Timne
+ ter ter Tereno
+ tet tet Tetum
+tg tgk tgk Tajik
+tl tgl tgl Tagalog
+th tha tha Thai
+bo tib bod Tibetan
+ tig tig Tigre
+ti tir tir Tigrinya
+ tiv tiv Tiv
+ tkl tkl Tokelau
+ tli tli Tlingit
+ tmh tmh Tamashek
+ tog tog Tonga (Nyasa)
+to ton ton Tonga (Tonga Islands)
+ tpi tpi Tok Pisin
+ tsi tsi Tsimshian
+tn tsn tsn Tswana
+ts tso tso Tsonga
+tk tuk tuk Turkmen
+ tum tum Tumbuka
+tr tur tur Turkish
+ tut tut Altaic (Other)
+ tvl tvl Tuvalu
+tw twi twi Twi
+ tyv tyv Tuvinian
+ uga uga Ugaritic
+ug uig uig Uighur
+uk ukr ukr Ukrainian
+ umb umb Umbundu
+ und und Undetermined
+ur urd urd Urdu
+uz uzb uzb Uzbek
+ vai vai Vai
+ ven ven Venda
+vi vie vie Vietnamese
+vo vol vol Volapük
+ vot vot Votic
+ wak wak Wakashan languages
+ wal wal Walamo
+ war war Waray
+ was was Washo
+cy wel cym Welsh
+ wen wen Sorbian languages
+wo wol wol Wolof
+xh xho xho Xhosa
+ yao yao Yao
+ yap yap Yapese
+yi yid yid Yiddish
+yo yor yor Yoruba
+ ypk ypk Yupik languages
+ zap zap Zapotec
+ zen zen Zenaga
+za zha zha Zhuang
+ znd znd Zande
+zu zul zul Zulu
+ zun zun Zuni
diff --git a/share/misc/latin1 b/share/misc/latin1
new file mode 100644
index 0000000..a4144e6
--- /dev/null
+++ b/share/misc/latin1
@@ -0,0 +1,40 @@
+# $FreeBSD$
+
+|240 nbs|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 ÿ |
+
+| a0 nbs| a1 ¡ | a2 ¢ | a3 £ | a4 ¤ | a5 ¥ | a6 ¦ | a7 § |
+| a8 ¨ | a9 © | aa ª | ab « | ac ¬ | ad ­ | ae ® | af ¯ |
+| b0 ° | b1 ± | b2 ² | b3 ³ | b4 ´ | b5 µ | b6 ¶ | b7 · |
+| b8 ¸ | b9 ¹ | ba º | bb » | bc ¼ | bd ½ | be ¾ | bf ¿ |
+| c0 À | c1 Á | c2 Â | c3 Ã | c4 Ä | c5 Å | c6 Æ | c7 Ç |
+| c8 È | c9 É | ca Ê | cb Ë | cc Ì | cd Í | ce Î | cf Ï |
+| d0 Ð | d1 Ñ | d2 Ò | d3 Ó | d4 Ô | d5 Õ | d6 Ö | d7 × |
+| d8 Ø | d9 Ù | da Ú | db Û | dc Ü | dd Ý | de Þ | df ß |
+| e0 à | e1 á | e2 â | e3 ã | e4 ä | e5 å | e6 æ | e7 ç |
+| e8 è | e9 é | ea ê | eb ë | ec ì | ed í | ee î | ef ï |
+| f0 ð | f1 ñ | f2 ò | f3 ó | f4 ô | f5 õ | f6 ö | f7 ÷ |
+| f8 ø | f9 ù | fa ú | fb û | fc ü | fd ý | fe þ | ff ÿ |
+
+|160 nbs|161 ¡ |162 ¢ |163 £ |164 ¤ |165 ¥ |166 ¦ |167 § |
+|168 ¨ |169 © |170 ª |171 « |172 ¬ |173 ­ |174 ® |175 ¯ |
+|176 ° |177 ± |178 ² |179 ³ |180 ´ |181 µ |182 ¶ |183 · |
+|184 ¸ |185 ¹ |186 º |187 » |188 ¼ |189 ½ |190 ¾ |191 ¿ |
+|192 À |193 Á |194 Â |195 Ã |196 Ä |197 Å |198 Æ |199 Ç |
+|200 È |201 É |202 Ê |203 Ë |204 Ì |205 Í |206 Î |207 Ï |
+|208 Ð |209 Ñ |210 Ò |211 Ó |212 Ô |213 Õ |214 Ö |215 × |
+|216 Ø |217 Ù |218 Ú |219 Û |220 Ü |221 Ý |222 Þ |223 ß |
+|224 à |225 á |226 â |227 ã |228 ä |229 å |230 æ |231 ç |
+|232 è |233 é |234 ê |235 ë |236 ì |237 í |238 î |239 ï |
+|240 ð |241 ñ |242 ò |243 ó |244 ô |245 õ |246 ö |247 ÷ |
+|248 ø |249 ù |250 ú |251 û |252 ü |253 ý |254 þ |255 ÿ |
diff --git a/share/misc/man.template b/share/misc/man.template
new file mode 100644
index 0000000..228de3d
--- /dev/null
+++ b/share/misc/man.template
@@ -0,0 +1,8 @@
+.TH NAME SECTION local
+.SH NAME
+.SH SYNOPSIS
+.SH DESCRIPTION
+.SH FILES
+.SH SEE ALSO
+.SH DIAGNOSTICS
+.SH BUGS
diff --git a/share/misc/mdoc.template b/share/misc/mdoc.template
new file mode 100644
index 0000000..1ecacfc
--- /dev/null
+++ b/share/misc/mdoc.template
@@ -0,0 +1,35 @@
+.\" $FreeBSD$
+.\"
+.\" The following requests are required for all man pages.
+.Dd Month day, year
+.Os [OPERATING_SYSTEM] [version/release]
+.Dt DOCUMENT_TITLE [section number] [architecture/volume]
+.Sh NAME
+.Nm name
+.Nd one line description of name
+.\" This next request is for sections 2 and 3 only.
+.\" .Sh LIBRARY
+.Sh SYNOPSIS
+.Sh DESCRIPTION
+.\" The following requests should be uncommented and used where appropriate.
+.\" .Sh IMPLEMENTATION NOTES
+.\" This next request is for sections 2, 3 and 9 function return values only.
+.\" .Sh RETURN VALUES
+.\" This next request is for sections 1, 6, 7 and 8 only.
+.\" .Sh ENVIRONMENT
+.\" .Sh FILES
+.\" This next request is for sections 1, 6, 7 and 8 only
+.\" (command return values (to shell)).
+.\" .Sh EXIT STATUS
+.\" .Sh EXAMPLES
+.\" This next request is for sections 1, 6, 7, 8 and 9 only
+.\" (fprintf/stderr type diagnostics).
+.\" .Sh DIAGNOSTICS
+.\" .Sh COMPATIBILITY
+.\" This next request is for sections 2, 3 and 9 error and signal handling only.
+.\" .Sh ERRORS
+.\" .Sh SEE ALSO
+.\" .Sh STANDARDS
+.\" .Sh HISTORY
+.\" .Sh AUTHORS
+.\" .Sh BUGS
diff --git a/share/misc/operator b/share/misc/operator
new file mode 100644
index 0000000..b293f31
--- /dev/null
+++ b/share/misc/operator
@@ -0,0 +1,19 @@
+Operator Associativity
+-----------------------------------------------------
+() [] -> . left to right
+! ~ ++ -- - (type) * & sizeof right to left
+* / % left to right
++ - left to right
+<< >> left to right
+< <= > >= left to right
+== != left to right
+& left to right
+^ left to right
+| left to right
+&& left to right
+|| left to right
+?: right to left
+= += -= *= /= %= <<= >>= &= ^= |= right to left
+, left to right
+
+$FreeBSD$
diff --git a/share/misc/organization.dot b/share/misc/organization.dot
new file mode 100644
index 0000000..5b65bed
--- /dev/null
+++ b/share/misc/organization.dot
@@ -0,0 +1,120 @@
+# $FreeBSD$
+
+# This file is meant to show the infrastructural organization of the
+# FreeBSD Project; what kind of teams we have and how they relate to
+# each other.
+# For a detailed description of the responsibilities and duties of the listed
+# teams, please see our Administration page at
+# http://www.freebsd.org/administration.html .
+#
+# The graphical output can be generated from this file with the following
+# command:
+# $ dot -T png -o file.png organization.dot
+#
+# The dot binary is part of the graphics/graphviz port.
+
+digraph org {
+
+node [color=lightblue2, style=filled, bgcolor=black];
+
+# Meta-categories go here
+
+_devel [label="FreeBSD Developers"]
+_admin [label="FreeBSD Infrastructure Administrators"]
+_misc [label="Miscellaneous Hats"]
+
+# Development teams go here alphabetically sorted
+
+core [label="Core Team\ncore@FreeBSD.org\nwilko, brooks, keramida, imp,\ngnn, wes, hrs, murray,\nrwatson"]
+coresecretary [label="Core Team Secretary\ncore-secretary@FreeBSD.org\njoel"]
+doccommitters [label="Doc/www Committers\ndoc-committers@FreeBSD.org"]
+doceng [label="Documentation Engineering Team\ndoceng@FreeBSD.org\nnik, blackend, hrs,\nmurray"]
+portscommitters [label="Ports Committers\nports-committers@FreeBSD.org"]
+portmgr [label="Port Management Team\nportmgr@FreeBSD.org\nmarcus, kris, erwin,\nlinimon, pav, krion"]
+portmgrsecretary [label="Port Management Team Secretary\nportmgr-secretary@FreeBSD.org\nerwin"]
+re [label="Primary Release Engineering Team\nre@FreeBSD.org\nmux, bmah, hrs, kensmith,\nmurray, rwatson, dwhite"]
+realpha [label="FreeBSD/alpha Release Engineering Team\nre-alpha@FreeBSD.org\nwilko, murray, rwatson"]
+reamd64 [label="FreeBSD/amd64 Release Engineering Team\nre-amd64@FreeBSD.org\nobrien"]
+rei386 [label="FreeBSD/i386 Release Engineering Team\nre-i386@FreeBSD.org\nmurray, rwatson"]
+reia64 [label="FreeBSD/ia64 Release Engineering Team\nre-ia64@FreeBSD.org\nmarcel"]
+repc98 [label="FreeBSD/pc98 Release Engineering Team\nre-pc98@FreeBSD.org\nnyan"]
+reppc [label="FreeBSD/ppc Release Engineering Team\nre-ppc@FreeBSD.org\ngrehan"]
+resparc64 [label="FreeBSD/sparc64 Release Engineering Team\nre-sparc64@FreeBSD.org\njake, phk, tmm, obrien,\nkensmith, murray, rwatson"]
+secteam [label="Security Team\nsecteam@FreeBSD.org\nmnag, remko, gnn, simon, philip,\ncperciva, csjp, des,\nnectar, rwatson"]
+secteamsecretary [label="Security Team Secretary\nsecteam-secretary@FreeBSD.org\nremko"]
+securityofficer [label="Security Officer Team\nsecurity-officer@FreeBSD.org\ncperciva, simon, nectar"]
+srccommitters [label="Src Committers\nsrc-committers@FreeBSD.org"]
+
+# Admin teams go here alphabetically sorted
+
+accounts [label="Accounts Team\naccounts@FreeBSD.org\nmarkm, simon, kensmith,\ndhw"]
+backups [label="Backup Administrators\nbackups@FreeBSD.org\nsimon, kensmith,\ndhw"]
+bugmeister [label="Bugmeister Team\nbugmeister@FreeBSD.org\nceri, linimon, remko"]
+clusteradm [label="Cluster Administrators\nclusteradm@FreeBSD.org\nbillf, simon, ps,\nkensmith, peter"]
+cvsupmaster [label="CVSup Mirror Site Coordinators\ncvsup-master@FreeBSD.org\nkuriyama, jdp,\nkensmith"]
+dcvs [label="CVS doc/www Repository Managers\ndcvs@FreeBSD.org\njoe, kuriyama, markm,\nsimon"]
+dnsadm [label="DNS Administrators\ndnsadm@FreeBSD.org\nbillf, dg, ps,\nkensmith, peter"]
+mirroradmin [label="FTP/WWW Mirror Site Coordinators\nmirror-admin@FreeBSD.org\nkuriyama, kensmith"]
+ncvs [label="CVS src Repository Managers\nncvs@FreeBSD.org\njoe, kuriyama, markm,\nsimon, peter"]
+pcvs [label="CVS ports Repository Managers\npcvs@FreeBSD.org\nmarcus, joe, kuriyama,\nmarkm, simon"]
+perforceadmin [label="Perforce Repository Administrators\nperforce-admin@FreeBSD.org\nscottl, kensmith, gordon,\nrwatson, peter, dhw"]
+postmaster [label="Postmaster Team\npostmaster@FreeBSD.org\njmb, brd, dhw"]
+refadm [label="Reference Systems Administrators\nrefadm@FreeBSD.org\njake, billf, markm, simon,\nobrien, ps, kensmith,\npeter, dhw"]
+webmaster [label="Webmaster Team\nwebmaster@FreeBSD.org\nnik, kuriyama, simon,\njesusr, wosch"]
+
+# Misc hats go here alphabetically sorted
+
+donations [label="Donations Team\ndonations@FreeBSD.org\nwilko, brueffer,\nobrien, trhodes, ds,\nrwatson"]
+marketing [label="Marketing Team\nmarketing@FreeBSD.org\nSteven Beedle, Denise Ebery, deb,\njkoshy, Dru Lavigne, mwlucas, imp,\nKris Moore, murray, mattt,\nJeremy C. Reed, rwatson"]
+vendorrelations [label="Vendor Relations Team\nvendor-relations@FreeBSD.org\nbrueffer, gioria, jmg, rik,\nphilip, hmp, marks,\nmurray"]
+
+# Here are the team relationships.
+# Group together all the entries for the superior team.
+# Keep the list sorted by the superior team entry.
+
+_admin -> accounts
+_admin -> backups
+_admin -> bugmeister
+_admin -> clusteradm
+_admin -> ncvs
+_admin -> pcvs
+_admin -> dcvs
+_admin -> cvsupmaster
+_admin -> dnsadm
+_admin -> mirroradmin
+_admin -> perforceadmin
+_admin -> refadm
+_admin -> postmaster
+_admin -> webmaster
+
+_devel -> core
+
+_misc -> donations
+_misc -> marketing
+_misc -> vendorrelations
+
+core -> coresecretary
+core -> doceng
+core -> portmgr
+core -> re
+core -> securityofficer
+core -> srccommitters
+
+doceng -> doccommitters
+
+portmgr -> portmgrsecretary
+portmgr -> portscommitters
+
+re -> realpha
+re -> reamd64
+re -> rei386
+re -> reia64
+re -> repc98
+re -> reppc
+re -> resparc64
+
+securityofficer -> secteam
+
+secteam -> secteamsecretary
+
+}
diff --git a/share/misc/pci_vendors b/share/misc/pci_vendors
new file mode 100644
index 0000000..8a4a835
--- /dev/null
+++ b/share/misc/pci_vendors
@@ -0,0 +1,9713 @@
+; $FreeBSD$
+;
+; Automatically generated by src/tools/tools/pciid/mk_pci_vendors.pl
+; (with the -l option), using the following source lists:
+;
+; http://www.pcidatabase.com/reports.php?type=tab-delimeted
+; http://members.datafast.net.au/dft0802/downloads/pcidevs.txt
+;
+; Manual edits on this file will be lost!
+;
+0000 Gammagraphx Inc
+001A Ascend Communications Inc
+0033 Paradyne Corp.
+003D Real 3D (Was: Lockheed Martin-Marietta Corp)
+ 00D1 i740 PCI Graphics Accelerator
+0070 Hauppauge Computer Works Inc.
+ 4000 WinTV PVR-350
+ 4001 WinTV PVR-250 (v1)
+ 4009 WinTV PVR-250
+ 4801 WinTV PVR-250 MCE
+0071 Nebula Electronics Ltd
+0100 Ncipher Corp. Ltd
+0123 General Dynamics
+0246 Addtron(??)
+0315 SK - Electronics Co., Ltd.
+0357 TTTech AG
+ 000A TTP-Monitoring Card V2.0
+0403 Future Technology Devices International Ltd
+0432 SCM Microsystems Inc
+ 0001 Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet]
+045E Microsoft
+ 006E MN-510 802.11b wireless USB paddle
+ 00C2 MN-710 wireless USB paddle
+0482 Kyocera
+04CF Myson Century Inc
+ 8818 CS8818 USB2.0-to-ATAPI Bridge Controller with Embedded PHY
+050D Belkin
+ 001A FSD7000 802.11g PCI Wireless card
+ 0109 F5U409-CU USB/Serial Portable Adapter
+ 7050 F5D7050 802.11g Wireless USB Adapter
+ 705C F5D7050 v4
+05A9 OmniVision
+ 8519 OV519 series
+05E3 CyberDoor
+ 0701 CBD516
+066F Sigmatel Inc
+ 3410 SMTP3410
+ 3500 SMTP3500
+0675 Dynalink
+ 1700 IS64PH ISDN Adapter
+ 1702 IS64PH ISDN Adapter
+ 1703 ISDN Adapter (PCI Bus, DV, W)
+ 1704 ISDN Adapter (PCI Bus, D, C)
+067B Prolific Technology Inc
+ 2303 PL-2303 USB-to-Serial Converter
+ 3507 PL-3507 Hi-Speed USB & IEEE 1394 Combo to IDE Bridge Controller
+069D Hughes Network Systems (HNS)
+0700 Stream Machine
+0721 Sapphire Inc
+07CA AVerMedia Technologies Inc
+ B808 AVerTV DVB-T Volar (USB 2.0)
+0815 LinTech GmbH
+ 0002 ELKA SO-PCI
+0871 Berkom
+ FFA1 A1T HCF-PCI Card
+ FFA2 T-Concept HCF-PCI Card
+ FFA4 A4T
+ FFA8 Scitel Quadro
+09C1 Arris
+ 0704 CM 200E Cable Modem
+0A89 BREA Technologies Inc.
+0B0B Rhino Equiment Corp.
+ 0105 Rhino R1T1
+ 0205 Rhino R4FXO
+ 0206 RCB4FXO 4-channel FXO analog telphony card
+ 0305 Rhino R4T1
+ 0405 Rhino R8FXX
+ 0406 RCB8FXX 8-channel modular analog telphony card
+ 0505 Rhino R24FXX
+ 0506 RCB24FXS 24-Channel FXS analog telphony card
+ 0605 Rhino R2T1
+ 0705 Rhino R24FXS
+ 0706 RCB24FXO 24-Channel FXO analog telphony card
+ 0905 R1T3 Single T3 Digital Telephony Card
+ 0906 RCB24FXX 24-channel modular analog telphony card
+ 0A06 RCB672FXX 672-channel modular analog telphony card
+0B49 ASCII Corporation
+ 064F Trance Vibrator
+0E11 Compaq Computer Corp (Now owned by Hewlett-Packard)
+ 0001 PCI to EISA Bridge
+ 0002 PCI to ISA Bridge
+ 000F CPQB1A9 StorageWorks Library Adapter (HVD)
+ 0012 686P7 686P7
+ 0046 Smart Array 64xx Controller
+ 0049 NC7132 Gigabit Upgrade Module
+ 004A NC6136 Gigabit Server Adapter
+ 007C NC7770 1000BaseTX
+ 007D NC6770 1000BaseTX
+ 0085 NC7780 1000BaseTX
+ 00BB NC7760
+ 00C0 AIC-7899G 64-bit, 66MHz Dual Channel Wide Ultra3 SCSI Controller
+ 00CA NC7771
+ 00CB NC7781
+ 00CF NC7772
+ 00D0 NC7782
+ 00D1 NC7783
+ 00E3 NC7761
+ 0508 Netelligent 4/16 TR PCI UTP/STP Controller
+ 1000 Triflex/Pentium Bridge, Model 1000
+ 2000 Triflex/Pentium Bridge, Model 2000
+ 3032 QVision 1280/p v0 GUI Accelerator
+ 3033 QVision 1280/p v1 GUI Accelerator
+ 3034 QVision 1280/p v2 GUI Accelerator
+ 4000 Triflex Model 4000 Pentium Bridge
+ 4030 SMART-2/P
+ 4031 SMART-2SL
+ 4032 Smart Array 3200
+ 4033 Smart Array 3100ES
+ 4034 Smart Array 221
+ 4040 Integrated Array
+ 4048 Compaq Raid LC2
+ 4050 Smart Array 4200
+ 4051 Smart Array 4250ES
+ 4058 Smart Array 431
+ 4070 Smart Array 5300
+ 4080 Smart Array 5i
+ 4082 Smart Array 532
+ 4083 Smart Array 5312
+ 4091 Smart Array 6i
+ 409A Smart Array 641
+ 409B Smart Array 642
+ 409C Smart Array 6400
+ 409D Smart Array 6400 EM
+ 6010 Model 6010 HotPlug PCI Bridge
+ 7020 USB Controller
+ A0EC Original Compaq fibre Channel HBA
+ A0F0 Advanced System Management Controller
+ A0F3 Triflex PCI to ISA PnP Bridge
+ A0F7 PCI Hot Plug Controller
+ A0F8 ZFMicro USB Open Host Controller
+ A0FC HPFC-5166A Tachyon TL 64-bit/66MHz Fibre Channel Adapter
+ AE10 Smart-2 Array Controller
+ AE29 MIS-L PCI to ISA Bridge
+ AE2A MPC CPU to PCI Bridge
+ AE2B MIS-E PCI to ISA PnP Bridge
+ AE31 System Management Controller
+ AE32 Netelligent 10/100 TX PCI UTP TLAN 2.3
+ AE33 Triflex Dual EIDE Controller
+ AE34 Netelligent 10 T PCI UTP TLAN 2.3
+ AE35 Integrated NetFlex 3/P TLAN 2.3
+ AE40 Dual-port Netelligent 10/100 TX PCI TLAN 3.03
+ AE43 Integrated Netelligent 10/100 TX PCI TLAN 2.3
+ AE69 CETUS-L PCI to ISA Bridge
+ AE6C DRACO PCI Bridge
+ AE6D NorthStar CPU to PCI Bridge
+ B011 Dual Port Netelligent 10/100 TX
+ B012 Netelligent 10 T/2 UTP/Coax PCI
+ B01E NC3120 Fast Ethernet NIC
+ B01F NC3122 Fast Ethernet NIC
+ B02F NC1120 Ethernet NIC
+ B030 Netelligent WS 1500 10/100TX Embedded UTP/Coax Controller
+ B04A 699209-003 10/100TX WOL UTP Controller
+ B060 CISS SMART2 Array Controller
+ B0C6 NC3161 Fast Ethernet Embedded Controller with WOL
+ B0C7 NC3160 Fast Ethernet NIC
+ B0D7 NC3121 Fast Ethernet NIC (Rev A & B)
+ B0DD NC3131 Fast Ethernet NIC
+ B0DE NC3132 Fast Ethernet Module
+ B0DF NC6132 Gigabit Module
+ B0E0 NC6133 Gigabit Module
+ B0E1 NC3133 Fast Ethernet Module
+ B123 NC6134 Gigabit NIC
+ B134 NC3163 Fast Ethernet NIC
+ B13C NC3162 Fast Ethernet NIC
+ B144 NC3123 Fast Ethernet NIC
+ B163 NC3134 Fast Ethernet NIC
+ B164 NC3135 Fast Ethernet Upgrade Module
+ B178 CISSB SMART2 Array Controller
+ B196 0230 Conexant SoftK56 Modem
+ B1A4 NC7131 Gigabit Server Adapter
+ B200 Memory Hot-Plug Controller
+ B203 iLo Integrated Lights Out Processor
+ B204 iLo Integrated Lights Out Processor
+ F095 FCA2101 HP StorageWorks 2 Gb, 64-Bit/66-MHz PCI-to-Fibre Channel Host Bus Adapter for Windows 2000, Windows
+ F130 ThunderLAN 1.0 NetFlex-3/P
+ F150 ThunderLAN 2.3 NetFlex-3/P with BNC
+ F700 LP7000 Compaq/Emulex Fibre Channel HBA
+ F800 LP8000 64-bit Compaq/Emulex Fibre Channel HBA
+0E55 HaSoTec GmbH
+1000 LSI Logic (Was: Symbios Logic, NCR)
+ 0001 LSI53C810/A/AE PCI-SCSI I/O Processor
+ 0002 53C820 820 Fast-Wide-SCSI Adapter
+ 0003 LSI53C825/A/AE PCI to SCSI I/O Processor (Fast Wide)
+ 0004 53C815 815X Fast-SCSI Adapter
+ 0005 53C810AP,810ASP, 2081X Fast/Ultra/Wide SCSI Adapter
+ 0006 LSI53C860/860E PCI to Ultra SCSI I/O Processor
+ 000A LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode)
+ 000B LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller
+ 000C LSI53C895 PCI to Ultra2 SCSI I/O Processor with LVD Link
+ 000D 53C885 Ultra Wide SCSI, Ethernet
+ 000F LSI53C875/E,LSI53C876/E PCI to Ultra SCSI I/O Processor
+ 0010 LSI53C1510 I2O-Ready PCI RAID Ultra2 SCSI Controller (Intelligent mode)
+ 0012 LSI53C895A PCI to Ultra2 SCSI Controller
+ 0013 LSI53C875A PCI to Ultra SCSI Controller
+ 0020 LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Multifunction Controller
+ 0021 LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller
+ 0030 LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller
+ 0031 LSI53C1030ZC PCI-X SCSI Controller
+ 0032 LSI53C1035 PCI-X to Ultra320 SCSI Controller
+ 0033 1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI
+ 0035 LSI53C1035 PCI-X SCSI Controller
+ 0040 LSI53C1035 LSI53C1035 PCI-X to Ultra320 SCSI Controller (RAID mode)
+ 0041 53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI
+ 0050 SAS 3000 series, 4-port with 1064 -StorPort
+ 0054 SAS 3000 series, 8-port with 1068 -StorPort
+ 0056 SAS 3000 series, 4-port with 1064E -StorPort
+ 0058 SAS 3000 series, 8-port with 1068E -StorPort
+ 005A SAS 3000 series, 6-port with 1066E -StorPort
+ 005C SAS1064A PCI-X Fusion-MPT SAS
+ 005E SAS 3000 series, 6-port with 1066 -StorPort
+ 0060 MegaRAID SAS 1078
+ 0062 LSISAS1078 PCI-Express Fusion-MPT SAS
+ 008F 53C810 LSI 53C8xx SCSI host adapter chip
+ 0407 MegaRAID
+ 0408 MegaRAID
+ 0409 MegaRAID Family RAID Controller
+ 0411 MegaRAID Family RAID Controller
+ 0621 LSIFC909 Fibre Channel I/O Processor
+ 0622 LSIFC929 Dial Channel Fibre Channel I/O Processor
+ 0623 LSIFC929 Dual Channel Fibre Channel I/O Processor
+ 0624 LSIFC919 Single Channel Fibre Channel I/O Processor
+ 0625 LSIFC919 Single Channel Fibre Channel I/O Processor
+ 0626 LSIFC929X Dual Channel Fibre Channel I/O Processor
+ 0627 LSIFC929X Dual Channel Fibre Channel I/O Processor
+ 0628 LSIFC919X Single Channel Fibre Channel I/O Processor
+ 0629 LSIFC919X Single Channel Fibre Channel I/O Processor
+ 0630 LSIFC920 Fibre Channel I/O Processor
+ 0640 LSIFC949X Fibre Channel Adapter
+ 0642 LSIFC939X Fibre Channel Adapter
+ 0646 LSIFC949ES Fibre Channel Adapter
+ 0701 53C885 NT50 DigitalScape Fast Ethernet Adapter
+ 0702 Yellowfin G-NIC Gigabit Ethernet Controller
+ 0804 SA2010
+ 0805 SA2010ZC
+ 0806 SA2020
+ 0807 SA2020ZC
+ 0901 61C102 USB Controller
+ 1000 63C815 Fast SCSI Controller
+ 1001 53C895 Symbios Ultra2 SCSI controller
+ 1010 LSI 53C102000 Single channel SCSI controller
+ 1960 MegaRAID
+1001 Kolter Electronic - Germany
+ 0010 PCI1616 Measurement Card with 32 digital I/O lines
+ 0011 ispLSI1032E OPTO-PCI, 16 IN / 16 OUT 24 VDC
+ 0012 ispLSI1032E PCI-AD, PCI-ADDA analog I/O-card
+ 0013 ispLSI1032E PCI-OptoRel, PCI-Relais 16 Relais & Opto
+ 0014 ispLSI1032E Timer, Pulse & Counter-card 16..32 bit
+ 0015 ispLSI1032E PCI-DAC416, 4 channel D/A16bit precision
+ 0016 ispLSI1032E PCI-MFB high-speed analog I/O
+ 0017 ispLSI1032E PROTO-3 PCI, digital I/O with chipselect
+ 0020 ispLSI1032E Universal digital I/O PCI-Interface
+1002 ATI Technologies Inc
+ 0B12 ati 1900 ati 1900
+ 3150 M24 1P Radeon Mobility X600
+ 3151 FIREMV 2400
+ 3152 Mobility Radeon X300
+ 3154 M24 1T FireGL
+ 3171 FIREMV 2400 Secondary
+ 3E50 Radeon X600 Series
+ 3E54 RV380 FireGL V3200
+ 3E70 Radeon X600 Series Secondary
+ 3E74 FIREGL V3200 Secondary
+ 4136 A3 Radeon IGP 320
+ 4137 RS200 Radeon IGP 340
+ 4144 Radeon 9500 Series (R300)
+ 4145 R300 Radeon 9200 (M+X)
+ 4146 Radeon 9700 (R300)
+ 4147 Fire GL Z1 AGP/Pro Video Accelerator (128 MB, 4P)
+ 4148 Radeon 9800 SE (R350)
+ 4149 Radeon 9500 Family
+ 414A Radeon 9800 Family
+ 414B Fire GL X2
+ 4150 Radeon 9600 Series (V350)
+ 4151 Radeon 9600 (RV350)
+ 4152 Radeon 9600 XT (V350)
+ 4153 RV350 Radeon 9550
+ 4154 Fire GL T2
+ 4155 Fire GL T2
+ 4156 Fire GL T2
+ 4157 Fire GL T2
+ 4158 200E17af Mach 32
+ 4164 Radeon 9500 Series, secondary R300 (128bit mem bus)
+ 4165 Radeon 9700 Pro (R300 AE) - Secondary
+ 4166 Radeon 9600TX - Secondary
+ 4167 Fire GL Z1 AGP/Pro Secondary Video Accelerator (128 MB, 4P)
+ 4168 Radeon 9800 SE - Secondary (R350)
+ 4169 Radeon 9500 Family - Secondary
+ 4170 Radeon 9600 Series - Secondary
+ 4171 Radeon 9600 (RV350) - Secondary
+ 4172 RV360 Radeon 9600 XT - Secondary
+ 4173 RV350 Radeon 9550 - Secondary
+ 4174 FireGL T2 - Seocndary
+ 4175 Radeon 9600 Series Secondary
+ 4237 Radeon 7000 IGP
+ 4242 R200AIW All-In-Wonder 8500DV
+ 4243 Radeon 8500 DV OHCI FireWire Controller
+ 4336 rs200 Radeon IGP 320M
+ 4337 RS200M Mobility M6 (U2)
+ 4341 AD1981 AC'97 Audio Controller
+ 4342 IXP 150 HUB Bridge
+ 4345 IXP 150 EHCI USB Controller
+ 4347 IXP 150 OHCI USB Controller #1
+ 4348 IXP 150 OHCI USB Controller #2
+ 4349 IXP SB200 ATA Controller
+ 434C IXP 150 LPC Controller
+ 434D a75-s226 Agere Systems AC'97 Modem device
+ 4353 IXP SB200 SMBUS Controller
+ 4354 Mach64 CT (215CT222)
+ 4358 216l0sas25 Mach64 CX
+ 4361 AC'97 Audio Controller
+ 4363 IXP SB300 SMBUS Controller
+ 4369 IXP SB300 ATA Controller
+ 436D IXP SB300 AC'97 Modem Controller
+ 436E IXP SB300 Serial ATA Controller
+ 4370 IXP_AUDIO_400 IXP AC'97 Audio Controller
+ 4371 IXP SB400 PCI-PCI Bridge
+ 4372 IXP SB400 SMBus
+ 4373 IXP SB400 EHCI USB 2.0 Controller
+ 4374 IXP SB400 OHCI USB Controller
+ 4375 IXP SB400 OHCI USB Controller
+ 4376 ? Radeo SB400 = RS480 Southbridge/IDE Controller
+ 4377 IXP SB400 PCI-ISA Bridge
+ 4378 IXP SB400 AC'97 Modem Controller
+ 4379 IXP SB400 Serial ATA Controller
+ 437A IXP SB400 Serial ATA Controller
+ 437B OEM Intel Corporation& Microsoft UAA Bus Driver for High Definition Audio
+ 4380 IXP SB600 Serial ATA Controller
+ 4381 IXP SB600 Serial ATA RAID Controller
+ 4382 IXP SB600 AC'97 Audio Controller
+ 4383 IXP SB600 High Definition Audio Controller
+ 4384 IXP SB600 PCI to PCI Bridge
+ 4385 IXP SB600 SMBUS Controller
+ 4386 IXP SB600 USB Controller (EHCI)
+ 4387 IXP SB600 USB Controller (OHCI0)
+ 4388 IXP SB600 USB Controller (OHCI1)
+ 4389 IXP SB600 USB Controller (OHCI2)
+ 438A IXP SB600 USB Controller (OHCI3)
+ 438B IXP SB600 USB Controller (OHCI4)
+ 438C IXP SB600 ATA Controller
+ 438D IXP SB600 PCI to LPC Bridge
+ 438E IXP SB600 AC'97 Modem Controller
+ 4437 Radeon Mobility 7000 IGP
+ 4554 Mach64 ET
+ 4654 Mach64 VT 113--34004-104
+ 4742 (GT-C2U2) ATI Rage Pro AGP 2X 8mb
+ 4744 Rage 3D Pro AGP 2x Rage 3D Pro AGP 2x
+ 4747 Rage 3D Pro GT-C2U2
+ 4749 ATI 3D RAGE PRO AGP 2X (GT-C2U2) ATI ALL IN WONDER PRO (8MB)
+ 474C Rage XC PCI-66 k7 som+
+ 474D Rage XL AGP 2x SLAT
+ 474E Rage XC AGP 2x
+ 474F Rage XL PCI-66 I Need Driver for the Chip
+ 4750 ATI 3D Rage Pro 215GP ATI 3D Rage Pro 215GP
+ 4751 Rage 3D Pro PCI (PQFP Package, Limited 3D)
+ 4752 Rage XL PCI
+ 4753 Rage XC PCI
+ 4754 Mach 64 VT Rage 3D II Graphics Accelerator
+ 4755 Rage 3D II+pci 3d rage 2 + dvd
+ 4756 Rage 3D IIC PCI [Mach64 GT IIC] (PQFP Package)
+ 4757 Rage 3D IIC AGP (BGA Package)
+ 4758 Mach64 GX (210888GX)
+ 4759 215r2qzua21 m3d agp card on agp slot
+ 475A Rage 3D IIC AGP (PQFP Package)
+ 4964 Radeon 9000 Series (RV250 Id)
+ 4965 Radeon 9000 Series (RV250 Ie)
+ 4966 RV250 Radeon 9000/9000 Pro
+ 4967 Radeon 9000 (RV250)
+ 496E RV250 Radeon 9000/9000 Pro - Secondary
+ 496F Radeon 9000 (RV250) - Secondary
+ 4A48 Radeon X800 Series (R420 JH)
+ 4A49 R423 Radeon X800 gt
+ 4A4A Radeon X800 Series
+ 4A4B Radeon X800 Series
+ 4A4C Radeon X800 Series (R420 JL)
+ 4A4D FireGL X3 (R420 JM)
+ 4A4E Radeon Mobility 9800 (M18 JN)
+ 4A4F Radeon X800 SE
+ 4A50 Radeon X800 XT Platinum
+ 4A54 Radeon X800 VE (R420)
+ 4A68 Radeon X800 Series Secondary
+ 4A69 Radeon X800 Series - Secondary
+ 4A6A Radeon X800 Series - Secondary
+ 4A6B Radeon X800 - Secondary
+ 4A6C Radeon X800 Series Secondary
+ 4A6D FIREGL X3-256 Secondary
+ 4A6F Radeon X800 SE Secondary
+ 4A70 Radeon X800 XT Platinum - Secondary
+ 4A74 Radeon X800 VE (R420) (Secondary)
+ 4B49 Radeon X850XT
+ 4B4A Radeon X850 SE
+ 4B4B Radeon X850 PRO
+ 4B4C Radeon X850XT-PE
+ 4B69 Radeon X850XT secondary
+ 4B6A Radeon X850 SE Secondary
+ 4B6B Radeon X850 PRO secondary
+ 4B6C Radeon X850XT-PE Secondary
+ 4C42 Rage 3D LT Pro AGP 133MHz (BGA-312 Package)
+ 4C44 Rage 3D LT Pro AGP Rage 3D LT Pro AGP 133 MHz
+ 4C45 Rage Mobility M3 AGP
+ 4C46 Rage Mobility M3 AGP 2x
+ 4C47 ati rage pro Rage 3D LT-G
+ 4C49 Rage 3D LT Pro PCI (BGA-312 Package)
+ 4C4D 01541014 Rage P/M Mobility AGP 2x
+ 4C4E 216lo sasa25 Rage Mobility l
+ 4C50 VEN_1002&DEV_4C50&SUBSYS_4C501002&REV_DC Rage 3D LT Pro PCI
+ 4C51 Rage 3D LT Pro PCI (BGA-256 Package, Limited 3D)
+ 4C52 1241243 Rage P/M Mobility agp
+ 4C53 216L0SASA25 Rage L Mobility PCI
+ 4C54 Mach64 LT (264LT)
+ 4C57 fdds Radeon Mobility M7 LW
+ 4C58 FireGL Mobility
+ 4C59 Mobility 6 Radeon Mobility M6 LY
+ 4C5A Radeon Mobility M6 LZ
+ 4C64 Radeon Mobility M9-GL
+ 4C65 Radeon Mobility 9000 (R250 Le)
+ 4C66 ATI MOBILITY RADEON 9000 (Microsoft Corporation - Radeon Mobility M9
+ 4C67 Radeon Mobility 9000 (R250 Lg)
+ 4C6E Radeon Mobility 9000 - Secondary (R250 Ln)
+ 4D46 Rage Mobility 128 AGP 4x
+ 4D4C Rage Mobility 128 AGP
+ 4D50 Unified AVStream Driver
+ 4D51 Unified AVStream Driver
+ 4D52 ATI Theater 550 Pro ATI Theater 550 Pro
+ 4D53 Unified AVStream Driver
+ 4E44 Radeon 9700/Pro, 9500 Series (R300)
+ 4E45 Radeon 9700/9500 Series (R300)
+ 4E46 Radeon 9600TX (R300)
+ 4E47 Fire GL X1/Z1 AGP/Pro Video Accelerator (R300-WS)
+ 4E48 Radeon 9800 Pro (R350)
+ 4E49 Radeon 9800 (R350) (??)
+ 4E4A Radeon 9800 XT (R350)
+ 4E4B FGL9800XT ATI FIREGL X2-256T
+ 4E50 Mobility Radeon 9700 (M10 NP) (RV350)
+ 4E51 Mobility Radeon 9600 (M10 NQ)
+ 4E52 Mobility Radeon 9500/9600 (M10) (RV350)
+ 4E53 Radeon Mobility 9600 (M10 NS)
+ 4E54 Radeon Mobility M10 NT (RV350-WS)
+ 4E56 FireGL Mobility T2e (M11 NV)
+ 4E64 Radeon 9700/Pro, 9500 (R300) Series - Secondary
+ 4E65 Radeon 9700/9500 Series (R300) - Secondary
+ 4E66 Radeon 9600TX (R300) - Secondary
+ 4E67 Fire GL X1/Z1 AGP/Pro Secondary Video Accelerator
+ 4E68 Radeon 9800 Pro (R350) - Secondary
+ 4E69 Radeon 9800 (R350) - Secondary
+ 4E6A Radeon 9800 XT (R350) - Secondary
+ 4E6B FGL9800XT ATI FIREGL X2-256T Secondary
+ 4E71 Radeon Mobility 9600 (M10 NQ) (secondary)
+ 4F72 Radeon 9000 Series (RV250)
+ 4F73 Radeon 9000 Series (RV250) (Secondary)
+ 5041 gt Rage 128 Pro PA PCI
+ 5042 Rage 128 Pro PB AGP 2x
+ 5043 1231324445 Rage 128 Pro PC AGP 4x
+ 5044 Rage 128 PD/Pro PCI (TMDS)
+ 5045 Rage 128 PE/Pro AGP 2x (TMDS)
+ 5046 Rage 128 PF/Pro AGP 4x (TMDS)
+ 5047 215R3BUA22 3d Rage pro agp 2x
+ 5048 Rage 128 Pro PH AGP Rage 128 Pro PH AGP 2x
+ 5049 bk2.0.2.vr001.001.002.002.004.025.prt3.ty.t Rage 128 Pro PI AGP 4x
+ 504A Rage 128 Pro PJ PCI Rage 128 Pro PJ PCI (TMDS)
+ 504B Rage 128 Pro PK AGP Rage 128 Pro PK AGP 2x (TMDS)
+ 504C Rage 128 Pro PL AGP 4x (TMDS)
+ 504D Rage 128 Pro PM PCI Rage 128 Pro PM PCI
+ 504E Rage 128 Pro PN AGP Rage 128 Pro PN AGP 2x
+ 504F Rage 128 Pro PO AGP Rage 128 Pro PO AGP 4x
+ 5050 Rage 128 Pro PP PCI Rage 128 Pro PP PCI (TMDS)
+ 5051 Rage 128 Pro PQ AGP Rage 128 Pro PQ AGP 2x (TMDS)
+ 5052 Rage 128 Pro PR AGP Rage 128 Pro PR AGP 4x (TMDS)
+ 5053 Rage 128 Pro PS PCI Rage 128 Pro PS PCI
+ 5054 Rage 128 Pro PT AGP Rage 128 Pro PT AGP 2x
+ 5055 rage 128 pro agp 4x tmds rage 128 pro agp 4x tmds
+ 5056 Rage 128 Pro PV PCI Rage 128 Pro PV PCI (TMDS)
+ 5057 Rage 128 Pro PW AGP Rage 128 Pro PW AGP 2x (TMDS)
+ 5058 Rage 128 Pro PX AGP 4x (TMDS)
+ 5144 Radeon 7200 QD SDR/DDR Radeon 7200 QD SDR/DDR
+ 5145 Radeon QE
+ 5146 Radeon QF
+ 5147 Radeon QG
+ 5148 R200 Radeon R200 QH
+ 5149 Radeon R200 QI
+ 514A Radeon R200 QJ
+ 514B Radeon R200 QK
+ 514C R200 Radeon 8500 / 8500LE
+ 514D Radeon 9100 Series (R200)
+ 514E Radeon R200 QM
+ 514F Radeon R200 QN
+ 5154 Radeon 8500 R200 QT
+ 5155 Radeon 9100 R200 QU
+ 5157 Radeon 7500 Series (RV200)
+ 5158 radeon 9700 or 9200 Radeon 7500 QX
+ 5159 RV100 Radeon 7000 / Radeon VE
+ 515A Radeon VE QZ
+ 515E Radeon ES1000 Radeon ES1000
+ 515F ES1000
+ 5168 Radeon R200 Qh
+ 5169 Radeon R200 Qi
+ 516A Radeon R200 Qj
+ 516B Radeon R200 Qk
+ 516C Radeon 8500 / 8500LE
+ 516D Radeon 9100 Series (R200) - Secondary
+ 5245 215R46ASA22 Rage 128 GL PCI
+ 5246 Rage 128 PRO Rage 32MB
+ 5247 Rage 128 RG
+ 524B g01080-108 Rage 128 VR RK PCI
+ 524C Rage 128 VR RL AGP 2x
+ 5345 Rage 128 4x SE PCI
+ 5346 Rage 128 SF 4x AGP 2x Rage 128 SF 4x AGP 2x
+ 5347 Rage 128 SG 4x AGP 4x
+ 5348 Rage 128 4x SH
+ 534B Rage 128 SK PCI Rage 128 4x SK PCI
+ 534C Rage 128 SL AGP 2x Rage 128 4x SL AGP 2x
+ 534D Rage 128 SM AGP 4x Rage 128 4x SM AGP 4x
+ 534E Rage 128 4x
+ 5354 Mach 64 ST
+ 5446 Rage 128 PRO ULTRA Video Controller (VGA Compatible)
+ 544C Rage 128 Pro TL
+ 5452 Rage 128 Pro TR
+ 5453 Rage 128 Pro Ultra TS
+ 5454 Rage 128 Pro Ultra TT
+ 5455 Rage 128 Pro Ultra TU
+ 5460 RV370 Radeon X300 Mobility (M22)
+ 5461 Mobility Radeon X300
+ 5462 Mobility Radeon X600 SE
+ 5464 FireGL GL (M22)
+ 5548 Radeon X800 (R423 UH)
+ 5549 Radeon X800 Pro
+ 554A Radeon X800 XT Platinum
+ 554B Radeon X800 SE
+ 554C R430 XTP
+ 554D R430 Radeon X800 XL
+ 554E Radeon X800 Series
+ 554F Radeon X800 Series
+ 5550 FireGL V7100 (R423)
+ 5551 R423GL-SE ATI FIREGL V5100 PCI-EX Primary
+ 5552 FireGL V5100 (R423 UR)
+ 5554 FireGL V7100 (R423 UT)
+ 5568 Radeon X800 Series Secondary
+ 5569 Radeon X800 Pro - Secondary
+ 556A Radeon X800 XT Platinum - Secondary
+ 556B Radeon X800 SE - Secondary
+ 556C R430 XTP Secondary
+ 556D R430 Radeon X800 XL - Secondary
+ 556E Radeon X800 Series - Secondary
+ 556F Radeon X800 Series - Secondary
+ 5570 FIREGL V7100 Secondary
+ 5571 R423GL-SE ATI FIREGL V5100 PCI-EX Secondary
+ 564A Mobility FIREGL V5000 (M26)
+ 564B Mobility FIREGL V5000
+ 564F Mobility Radeon X700 XL PCIe (M26)
+ 5652 Mobility Radeon X700
+ 5653 Mobility Radeon X700
+ 5654 215VT2CA42 Mach 64 VT VIDEO XPRESSION
+ 5655 Mach 64 VT3
+ 5656 Mach 64 VT4 PCI Mach 64 VT4 PCI
+ 5657 Radeon X550/X700 Series
+ 5673 Mobility Radeon X700 Secondary
+ 5677 Radeon X550/X700 Series Secondary
+ 5830 RS300/100 Host Bridge
+ 5831 RS300/133 Host Bridge
+ 5832 RS300/166 Host Bridge
+ 5833 Radeon IGP9100 RS300/200 Host Bridge
+ 5834 RS300 Radeon 9100 IGP
+ 5835 Mobility Radeon 9100 IGP (RS300M AGP)
+ 5838 Radeon 9100 IGP AGP Bridge
+ 5854 Radeon XPRESS 200 Series Secondary
+ 5874 Radeon XPRESS 200 Series Secondary
+ 5940 RV280 Radeon 9200 Pro - Secondary
+ 5941 RV280 ATI Radeon 9200 - Secondary
+ 5942 Radeon 9000U Family - Secondary
+ 5944 Radeon 9200SE PCI (RV280)
+ 5950 RS480 Host Bridge
+ 5951 Radeon Xpress 200 (RS480/RS482/RX480/RX482) Host bridge
+ 5952 CrossFire Xpress 3200 (RD580) Chipset Host Bridge
+ 5954 na ATI Radeon Xpress 200 Series - RS480
+ 5955 ??? Mobility Radeon XPRESS 200
+ 5956 RD790 GFX Dual Slot
+ 5957 RX790 GFX Single Slot
+ 5958 RD780 GFX Dual Slot
+ 5960 RV280 Radeon 9200 Pro
+ 5961 RV280 ATI RADEON 9200 se agp
+ 5962 Radeon 9000U Family
+ 5964 Radeon 9200 Radeon 9200 SE Series
+ 5965 Nvidia FireMV 2200
+ 5969 ES1000
+ 5974 Radeon XPRESS 200 Series
+ 5975 Radeon XPRESS 200M SERIES
+ 5978 RD790 PCI to PCI bridge (external gfx0 port A)
+ 5979 RD790 PCI to PCI bridge (external gfx0 port B)
+ 597A RD790 PCI to PCI bridge (PCIe gpp port A)
+ 597B RD790 PCI to PCI bridge (PCIe gpp port B)
+ 597C RD790 PCI to PCI bridge (PCIe gpp port C)
+ 597D RD790 PCI to PCI bridge (PCIe gpp port D)
+ 597E RD790 PCI to PCI bridge (PCIe gpp port E)
+ 597F RD790 PCI to PCI bridge (PCIe gpp port F)
+ 5980 RD790 PCI to PCI bridge (external gfx1 port A)
+ 5981 RD790 PCI to PCI bridge (external gfx1 port B)
+ 5982 RD790 PCI to PCI bridge (NB-SB link)
+ 5A10 RD890 GFX dual slot (2x16) PCI-e Hydra
+ 5A11 RD890 single slot GFX Hydra
+ 5A12 RD890 dual slot (2x8) PCI-e GFX Hydra
+ 5A13 RD890 PCI to PCI bridge (external gfx0 port A)
+ 5A14 RD890 PCI to PCI bridge (external gfx0 port B)
+ 5A15 RD890 PCI to PCI bridge (PCIe gpp port A)
+ 5A16 RD890 PCI to PCI bridge (PCIe gpp port B)
+ 5A17 RD890 PCI to PCI bridge (PCIe gpp port C)
+ 5A18 RD890 PCI to PCI bridge (PCIe gpp port D)
+ 5A19 RD890 PCI to PCI bridge (PCIe gpp port E)
+ 5A1A RD890 PCI to PCI bridge (PCIe gpp port F)
+ 5A1B RD890 PCI to PCI bridge (PCIe gpp port G)
+ 5A1C RD890 PCI to PCI bridge (PCIe gpp port H)
+ 5A1D RD890 PCI to PCI bridge (external gfx1 port A)
+ 5A1E RD890 PCI to PCI bridge (external gfx1 port B)
+ 5A1F RD890 PCI to PCI bridge (NB-SB link)
+ 5A30 RS400/100 Host Bridge
+ 5A31 RS400/133 Host Bridge
+ 5A32 RS400/166 Host Bridge
+ 5A33 RC410 Northbridge: Radeon Xpress 200
+ 5A34 RS480 PCI-X Root Port
+ 5A36 RS480 PCI Bridge
+ 5A37 RS480 PCI Bridge
+ 5A38 RS480 PCI Bridge
+ 5A39 RS480 PCI Bridge
+ 5A3F RS480 PCI Bridge
+ 5A41 Radeon XPRESS 200
+ 5A42 X200M SUBSYS_11821043&REV_00\4&1CF2FBB4&0&2808
+ 5A43 Radeon XPRESS 200 Series Secondary
+ 5A61 Radeon XPress 200 (RC410) Radeon Xpress 200 (RC410) VGA card
+ 5A62 Radeon Xpress 200M (RS410)
+ 5A63 Radeon XPRESS 200 Series Secondary
+ 5B60 Radeon X300 ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]
+ 5B61 RV371
+ 5B62 RV380 RADEON X600 Series 265MB
+ 5B63 Radeon X550 Series
+ 5B64 FireGL V3100 (RV370 5B64)
+ 5B65 FireGL D1100 (RV370 5B65)
+ 5B66 RV370X
+ 5B70 Radeon X300 Series - Secondary
+ 5B71 RV371 Secondary
+ 5B72 Radeon X600 Series - Secondary
+ 5B73 Radeon X550 Series - Secondary
+ 5B74 FireGL V3100 (RV370)- Secondary
+ 5B75 FIREMV 2200 Secondary
+ 5B76 RV370X Secondary
+ 5C61 bk-ati ver008.016m.085.006 Mobility Radeon 9200
+ 5C63 RV280 (M9+) Mobility Radeon 9200
+ 5D44 Radeon 9200 SE Series - Secondary (RV280)
+ 5D45 RV280 ATI FireMV 2200 PCI Secondary
+ 5D48 Mobility Radeon X800 XT
+ 5D49 Mobility FireGL V5100
+ 5D4A Mobility Radeon X800 PCI-E Graphics adapter from Clevo D900T notebook
+ 5D4C R480 CONSUMER 4P
+ 5D4D Radeon XT850 Radeon XT850
+ 5D4E Radeon X800 GT
+ 5D4F r480 x800gto 256 pci-e
+ 5D50 FIREGL V7200
+ 5D52 Radeon X850 Series
+ 5D57 Radeon X800 XT
+ 5D6C R480 CONSUMER 4P Secondary
+ 5D6D Radeon X850 Series - Secondary
+ 5D6E Radeon X800 GT Secondary
+ 5D6F Radeon X850 Series - Secondary
+ 5D70 FIREGL V7200 Secondary
+ 5D72 Radeon X850 Series - Secondary
+ 5D77 Radeon X800 XT - Secondary
+ 5E48 FireGL V5000 (RV410)
+ 5E49 FireGL V3300 (RV410)
+ 5E4A Radeon X700 Series
+ 5E4B Radeon X700 Series
+ 5E4C Radeon X700 Series
+ 5E4D Radeon X700 Series
+ 5E4F Radeon X700 SE
+ 5E68 FIREGL V5000 Secondary
+ 5E6A Radeon X700 Series - Secondary
+ 5E6B Radeon X700 Series - Secondary
+ 5E6C Radeon X700 Series - Secondary
+ 5E6D Radeon X700 Series - Secondary
+ 5E6F Radeon X700 SE - Secondary
+ 5F57 Radeon X800XT PCIe (R423)
+ 700F A3/U1 PCI to AGP Bridge
+ 7010 RS200 PCI to AGP Bridge
+ 7100 Radeon X1800 Series
+ 7101 Mobility Radeon X1800 XT
+ 7102 Radeon Mobility X1800
+ 7103 Mobility FireGL V7200
+ 7104 FireGL V7200 (R520 GL)
+ 7105 R520 [FireGL]
+ 7106 Mobility FireGL V7100
+ 7108 Radeon Mobility X1800
+ 7109 Radeon X1800 Series - Secondary
+ 710A Radeon X1800 GTO
+ 710B Radeon X1800
+ 710C Radeon X1800
+ 710E FIREGL V7300
+ 710F FIREGL V7350
+ 7120 Radeon X1800 Series Secondary
+ 7124 FireGL V7200 (R520 GL) - Secondary
+ 7125 Radeon X1800 Series Secondary
+ 7128 Radeon X1800 Series Secondary
+ 7129 Radeon X1800 Series - Secondary
+ 712A Radeon X1800 GTO - Secondary
+ 712B Radeon X1800 Series Secondary
+ 712C Radeon X1800 Series Secondary
+ 712E FIREGL V7300 Secondary
+ 712F FIREGL V7350 Secondary
+ 7140 Radeon X1300 Series
+ 7141 RV505
+ 7142 N/A Radeon X1300 Pro or X1550
+ 7143 Radeon X1550 Series (RV505)
+ 7145 x1400 PCI\VEN_1002&DEV_7145&SUBSYS_20031028&REV_00\4&1C9EC085&0&0008
+ 7146 N/A Radeon X1300 XGE
+ 7147 Radeon X1550 64-bit (RV505)
+ 7149 216CZJAKA12FAG ATI Mobility Radeon X1300, M52-64
+ 714A Mobility Radeon X1300
+ 714B Mobility Radeon X1300
+ 714C Mobility Radeon X1300
+ 714D Radeon X1300 (RV515)
+ 714E Radeon X1300 (RV515)
+ 714F RV505
+ 7151 RV505
+ 7152 FireGL V3300 (RV515GL)
+ 7153 FireGL V3350 (RV515GL)
+ 715E Radeon X1300 Series
+ 715F Radeon X1300 Series
+ 7160 Radeon X1300 Series - Secondary
+ 7161 RV505 Secondary
+ 7162 Radeon X1300 Series - Secondary
+ 7163 Radeon X1300 PRO Secondary
+ 7166 Radeon X1300 Series - Secondary
+ 7167 Radeon X1300 Series Secondary
+ 7169 M52 Secondary
+ 716D Radeon X1300 Series Secondary
+ 716E Radeon X1300 Series Secondary
+ 716F RV505 Secondary
+ 7171 RV505 Secondary
+ 7172 FireGL V3300 (RV515GL) Secondary
+ 717E Radeon X1300 Series Secondary
+ 717F Radeon X1300 Series Secondary
+ 7180 Radeon X1300 Series
+ 7181 Radeon X1600 Series (RV516XT)
+ 7183 RV505 Radeon X1300/X1550 Series
+ 7186 Mobility Radeon X1450 PCI\VEN_1002&DEV_7186&SUBSYS_12311043&REV_00\4&2D404BB6&0&0008
+ 7187 Radeon 1300 Radeon 1300
+ 718B Mobility Radeon X1350
+ 718C Mobility Radeon X1350
+ 718D Mobility Radeon X1450
+ 718F Radeon X1300 Series
+ 7193 Radeon X1550 Series
+ 7196 Mobility Radeon X1350
+ 719F Radeon X1550 Series
+ 71A0 Radeon X1300 Series Secondary
+ 71A1 Radeon X1600 Series (RV516XT) Secondary
+ 71A3 Radeon X1300 Series Secondary
+ 71A7 Radeon 1300 Radeon 1300 Secondary
+ 71B3 Radeon X1550 Series Secondary
+ 71C0 Radeon X1600 Series
+ 71C1 Radeon X1650 Series
+ 71C2 ATI X1600 Pro PCI-E ATI X1600 Pro PCI-E
+ 71C3 Radeon X1600 Series
+ 71C4 Mobility FIREGL V5200
+ 71C5 RV530? Radeon X1600 Mobility
+ 71C6 Radeon X1650 Series (RV530 LE)
+ 71CD Radeon X1600 Series
+ 71CE Radeon X1600 PRO / X1300XT (RV530 VE)
+ 71D2 FIREGL V3400
+ 71D5 Mobility Radeon X1700 (M66-P)
+ 71D6 Mobility Radeon X1700 (M66-XT)
+ 71DA FIREGL V5200
+ 71DE RV530 SE
+ 71E0 Radeon X1600 Series Secondary
+ 71E1 Radeon X1650 Series Secondary
+ 71E2 Radeon X1600 Series Secondary
+ 71E3 Radeon X1600 Series Secondary
+ 71E5 M56 Secondary
+ 71E6 Radeon X1650 Series Secondary (RV530 LE)
+ 71ED Radeon X1600 Series Secondary
+ 71EE Radeon X1600 PRO / X1300XT Secondary (RV530 VE)
+ 71F2 FIREGL V3400 Secondary
+ 71FA FIREGL V5200 Secondary
+ 71FE RV530 SE Secondary
+ 7240 Radeon X1900 (R580)
+ 7241 Radeon X1900 (R580)
+ 7242 Radeon X1900 (R580)
+ 7243 Radeon X1900 (R580)
+ 7244 Radeon X1950XT Series
+ 7245 Radeon X1900 (R580)
+ 7246 Radeon X1900 (R580)
+ 7247 Radeon X1900 (R580)
+ 7248 Radeon X1900 (R580)
+ 7249 Radeon X1900 Series
+ 724A Radeon X1900 (R580)
+ 724B 180636911721 R580LE
+ 724C Radeon X1900 (R580)
+ 724D Radeon X1900 (R580)
+ 724E FireGL V7300/V7350 PCIe (R580)
+ 724F Radeon X1900 Series
+ 7260 Radeon X1950 Series Secondary
+ 7263 Radeon X1900 Series Secondary
+ 7264 Radeon X1950XT Series Secondary
+ 7265 Radeon X1900 Series Secondary
+ 7266 Radeon X1900 Series Secondary
+ 7267 Radeon X1900 Series Secondary
+ 7268 Radeon X1950 Series Secondary
+ 7269 Radeon X1900 Series Secondary
+ 726A Radeon X1900 Series Secondary
+ 726B Radeon X1900 Secondary
+ 726C Radeon X1900 Series Secondary
+ 726D Radeon X1900 Series Secondary
+ 726E FireGL V7300/V7350 PCIe (R580) - Secondary
+ 726F Radeon X1900 Series Secondary
+ 7280 Radeon X1950 Pro Radeon X1950 Pro Series AGP (0x7280)
+ 7288 Radeon X1950 GT
+ 7291 Radeon X1650 XT (PCIe)
+ 7293 Radeon X1650 Series
+ 72A0 Radeon X1950 Pro Secondary Radeon X1950 Pro Series AGP (0x72A0)
+ 72A8 Radeon X1950 GT (Secondary)
+ 72B1 Radeon X1650 XT (Secondary) (PCIe)
+ 72B3 Radeon X1650 Series (Secondary)
+ 7830 RS350/100 Host Bridge
+ 7831 RS350/133 Host Bridge
+ 7832 RS350/166 Host Bridge
+ 7833 RS350 Radeon 9100 Pro
+ 7834 Radeon 9000/9100 Pro IGP Series
+ 7835 Radeon Mobility 9200 IGP
+ 7838 Radeon 9100 IGP PCI/AGP Bridge
+ 7919 Radeon X1200 Series Audio Controller
+ 791E Radeon X1200 Series
+ 791F RS690 ATI Mobility Radeon x1250
+ 793F Radeon X1200 Series (Secondary)
+ 7941 Radeon XPRESS 1300
+ 7942 Radeon XPRESS 1300M
+ 7C37 Radeon 9600 SE (RV350 AQ)
+ 9876 ATI GTC (GT-C2U2) ATI 3D Rage Pro AGP 2X
+ CAB0 A3/U1 S2K CPU to PCI Bridge
+ CAB1 A3/U1 Slot1 CPU to PCI Bridge
+ CAB2 RS200 CPU to PCI Bridge
+ CAB3 R200 AGP Bridge [Mobility Radeon 7000 IGP]
+ CBB2 RS200 CPU to PCI Bridge
+1003 ULSI Systems
+ 0201 0x0201 GUI Accelerator
+1004 VLSI Technology
+ 0005 82C591/2-FC1 CPU Bridge
+ 0006 82C593 ISA Bridge
+ 0007 82C594 Wildcat System Controller
+ 0008 82C596/7 Wildcat PCI to ISA Bridge
+ 0009 82C597-AFC2
+ 000C 82C541
+ 000D 82C543
+ 0100 dtdftdfz CPU to PCI Bridge for notebook
+ 0101 82C532 Peripheral Controller
+ 0102 82C534 PCI to PCI Bridge
+ 0103 82C538 PCI to ISA Bridge
+ 0104 82C535 CPU to PCI Bridge
+ 0105 82C147 IrDA Controller
+ 0200 82C975 RISC GUI Accelerator
+ 0280 82C925 RISC GUI Accelerator
+ 0304 SAA7785 ThunderBird PCI Audio Accelerator
+ 0305 QSound ThunderBird PCI Audio Gameport
+ 0306 QSound ThunderBird PCI Audio Support Registers
+ 0307 Thunderbird Avenger Audio Accelerator
+ 0308 Thunderbird Avenger GamePort Enumerator
+ 0702 VAS96011 Golden Gate II
+ 0703 Tollgate
+1005 Advance Logic (ADL) Inc
+ 2064 ALG2032/2064
+ 2128 ALG2364A
+ 2301 AVL2301 GUI Accelerator
+ 2302 ALG2302 GUI Accelerator
+ 2364 ALG2364 GUI Accelerator
+ 2464 ALG2364A
+ 2501 ALG2564A/25128A
+1006 Reply Group
+1007 Netframe Systems Inc.
+1008 Epson
+100A Phoenix Technologies Ltd.
+100B National Semiconductors
+ 0001 DP83810 10/100 Fast Ethernet Adapter
+ 0002 PC87415 PCI-IDE DMA Master Mode Interface Ctrlr
+ 000E PC87560 Legacy I/O Controller
+ 000F CS4210 OHCI Compliant FireWire Controller
+ 0011 PC87560 PCI System I/O
+ 0012 USB Controller
+ 001B LM4560 Advanced PCI Audio Accelerator
+ 0020 DP83815/16 Fast Ethernet Adapter (MacPhyter/MacPhyter-II)
+ 0021 PC82440 PCI to ISA Bridge
+ 0022 DP83820/1 10/100/1000 Gigabit Ethernet Adapter
+ 0028 CS5535 Host bridge
+ 002A CS5535 GeodeLink PCI South Bridge
+ 002B CS5535 ISA Bridge
+ 002D 5535 Geode IDE Controller
+ 002E Castle (CS5535) GEODE - GX3 Audio
+ 002F Geode USB Controller
+ 0030 NSC Geode VGA Compatible Device
+ 0035 DP83065 [Saturn] 10/100/1000 Ethernet Controller
+ 0500 SCx200 LPC Bridge and GPIO
+ 0501 SCx200 SMI Status and ACPI
+ 0502 SC1100/SCx200 IDE Controller
+ 0503 SC1100/SCx200 XpressAUDIO
+ 0504 SCx200 Video Processor
+ 0505 SCx200 X-Bus Expansion Interface
+ 0510 SC1100 LPC Bridge and GPIO
+ 0511 SC1100 SMI Status and ACPI
+ 0515 SC1100 X-Bus Expansion Interface
+ D001 PC87410 PCI EIDE Controller (Single FIFO)
+100C TSENG LABS Inc
+ 3202 ET4000W32P-A GUI Accelerator
+ 3205 ET4000W32P-B GUI Accelerator
+ 3206 ET4000W32P-C GUI Accelerator
+ 3207 ET4000W32P-D GUI Accelerator
+ 3208 ET6000 Graphics/Multimedia Engine
+ 4702 ET6300
+100D AST Research
+100E Weitek
+ 0564 STPC Client Host Bridge
+ 55CC STPC Client South Bridge
+ 9000 P9000 WeitekPower GUI Accelerator
+ 9001 WeitekPower P9000 Viper
+ 9002 WeitekPower P9000 Viper
+ 9100 WeitekPower P9100 Viper
+1010 Video Logic Ltd.
+1011 Digital Equipment Corporation
+ 0001 DecChip 21050 PCI to PCI Bridge
+ 0002 DecChip 21040 "Tulip" Ethernet Adapter
+ 0004 DecChip 21030 "TGA" Graphics Accelerator
+ 0007 Zephyr NV-RAM
+ 0008 KZPSA SCSI to SCSI Adapter
+ 0009 DecChip 21140 Fast Ethernet Adapter
+ 000A DecChip 21230 Video Codec
+ 000C DC21130 PCI Integrated Graphics & Video Accel
+ 000D DecChip TGA2 PDXGB
+ 000F FDDI "DEFPA"
+ 0014 DecChip 21041 "Tulip Plus" Ethernet Adapter
+ 0016 ATM-Controller "DGLPB"
+ 0017 PV-PCI Graphics Controller (ZLXp-L)
+ 0019 DC21142/3 PCI/CardBus 10/100 Mbit Ethernet Ctlr
+ 001A Farallon PN9000SX Gigabit Ethernet
+ 0021 21052[-AB] PCI-PCI Bridge
+ 0022 21150-AA PCI to PCI Bridge
+ 0023 DC21150 PCI to PCI Bridge
+ 0024 21151/2 PCI to PCI Bridge
+ 0025 21153 PCI to PCI Bridge
+ 0026 21154 PCI to PCI Bridge
+ 0034 Modem56 CardBus
+ 0045 DC21553 PCI to PCI Bridge
+ 0046 21554 PCI-to-PCI Bridge
+ 1065 21285 Core Logic for StongArm SA-110 Microprocessor
+ 2000 3X-KPCON-AA Fault Mgr (3.3v/5v Universal PCI)
+1012 Micronics Computers Inc.
+1013 Cirrus Logic
+ 0038 FW82371EB pci
+ 0040 CL-GD7555 Flat Panel GUI Accelerator
+ 004C CL-GD7556 64-bit Accelerated LCD/CRT Controller
+ 00A0 CL-GD5440 GUI Accelerator
+ 00A2 CL-GD5432 Alpine GUI Accelerator
+ 00A4 CL-GD5434 Alpine GUI Accelerator
+ 00A8 CL-GD5434 Alpine GUI Accelerator
+ 00AC CL-GD5426 Video card (i guess?)
+ 00B0 CL-GD5440
+ 00B8 CL-GD5446 64-bit VisualMedia Accelerator
+ 00BC CL-GD5480 64-bit SGRAM GUI accelerator
+ 00D0 CL-GD5462 Laguna VisualMedia graphics accelerator
+ 00D2 CL-GD5462 (Laguna I)
+ 00D4 CL-GD5455 Laguna 3D VisualMedia Graphics Accel
+ 00D5 CL-GD5464 Laguna BD
+ 00D6 CL-GD5465 Laguna 3D VisualMedia Graphics Accel
+ 00E8 CL-GD5436U
+ 1013 cs4610 accelerator do audio do pci de sound fusion
+ 1100 CL-PD6729 PCI-to-PC Card host adapter
+ 1110 CL-PD6832 PCMCIA/CardBus Controller
+ 1112 CL-PD6834 PCMCIA/CardBus Controller
+ 1113 CL-PD6833 PCI-to-CardBus Host Adapter
+ 1200 CL-GD7542 Nordic GUI Accelerator
+ 1202 CL-GD7543 Viking GUI Accelerator
+ 1204 CL-GD7541 Nordic-lite VGA Cntrlr
+ 4000 1085 Ambient CLM Data Fax Voice
+ 4400 CL-CD4400 Communications Controller
+ 6001 CS4610 CrystalClear SoundFusion PCI Audio Accelerator
+ 6003 Crystal CS4610/14/22/24/30 SoundFusion PCI Audio Accelerator
+ 6004 Crystal CS4615 SoundFusion PCI Audio Accelerator
+ 6005 Crystal CS4281 SoundFusion PCI Audio Accelerator
+ 9876 cirrus logic crystal CS 4614 SoundFusion PCI Audio Accelerator
+1014 Elektronik
+ 0002 MCA Bridge MCA Bridge
+ 0005 Alta Lite CPU Bridge
+ 0007 Alta MP CPU Bridge
+ 000A Fire Coral PCI to ISA Bridge with PnP Port
+ 0017 CPU to PCI Bridge
+ 0018 Auto LANStreamer TR Auto LANStreamer
+ 001B GXT-150P Graphics Adapter
+ 001C Carrera
+ 001D 82G2675 scsi-2 fast pci adapter
+ 0020 PCI to MCA Bridge
+ 0022 82351/2 PCI to PCI Bridge
+ 002D Python
+ 002E ServeRAID I/II/3x/4H Coppertime RAID SCSI Adapter
+ 0031 2 Port Serial Adapter
+ 0036 Miami/PCI 32-bit LocalBus Bridge
+ 0037 IBM27-82660 PowerPC to PCI Bridge and Memory Ctrlr
+ 003A CPU to PCI Bridge
+ 003C GXT250P/GXT255P Graphics Adapter
+ 003E 85H9533 16/4 Token Ring Controller UTP/STP
+ 0045 SSA Adapter
+ 0046 MPIC Interrupt Controller
+ 0047 PCI to PCI Bridge
+ 0048 PCI to PCI Bridge
+ 0049 Warhead SCSI Controller
+ 004D IBM 3780IDSP MPEG-2 Decoder
+ 004E ATM Controller (14104E00)
+ 004F ATM Controller (14104F00)
+ 0050 ATM Controller (14105000)
+ 0053 85h9533 25 MBit ATM controller
+ 0054 GXT500P/GXT550P Graphics Adapter
+ 0057 85g1897 MPEG PCI Bridge
+ 005C i82557B 10/100 PCI Ethernet Adapter
+ 005D 05J3506 TCP/IP networking device
+ 005E GXT800P Graphics Adapter
+ 007C ATM Controller (14107C00)
+ 007D 3780IDSP MPEG-2 Decoder
+ 008B EADS PCI to PCI Bridge
+ 008E GXT3000P Graphics Adapter
+ 0090 GXT-3000P
+ 0091 SSA Adapter
+ 0095 20H2999 PCI Docking Bridge
+ 0096 Chukar chipset SCSI Controller
+ 009F PCI 4758 Cryptographic Accelerator
+ 00A1 PowerNP NPr2.7 ATM support device
+ 00A5 ATM Controller (1410A500)
+ 00A6 ATM 155MBPS MM Controller (1410A600)
+ 00B7 GXT2000 256-bit Graphics Rasterizer (Fire GL1)
+ 00B8 GXT2000P Graphics Adapter
+ 00BE ATM 622MBPS Controller (1410be00)
+ 00CE 02LI537 Adapter 2 Token Ring Adapter
+ 00DC Advanced Systems Management Adapter (ASMA)
+ 00F9 CPC700 Memory Controller and PCI Bridge
+ 00FC CPC710 PCI-64 Bridge
+ 0104 Gigabit Ethernet-SX Adapter
+ 0105 CPC710 PCI-32 Bridge
+ 010F Remote Supervisor+Serial Port+Mouse/Keyboard
+ 011B Raid controller
+ 0142 Yotta Video Compositor Input
+ 0144 Yotta Video Compositor Output
+ 0156 405GP PLB to PCI Bridge
+ 015E 622Mbps ATM PCI Adapter
+ 0160 64bit/66MHz PCI ATM 155 MMF
+ 016E GXT4000P Graphics Adapter
+ 0170 RC1000 Rasterizer/IBM GT1000 Geometr
+ 017D GXT300P Graphics Adapter
+ 0180 Snipe chipset SCSI Controller
+ 0188 EADS-X PCI-X to PCI-X Bridge
+ 01A2 82801 Modem: Intel Corporation 82440MX AC'97 Modem Controller (prog-if 00 [Generic])
+ 01A7 IBM 133 PCI-X Bridge R1.1
+ 01BD ServeRAID 4/5 Morpheus SCSI RAID Controller
+ 01C1 64bit/66MHz PCI ATM 155 UTP
+ 01E6 Cryptographic Accelerator
+ 01EF 440GP PLB to PCI-X Bridge
+ 01FF 10/100 Mbps Ethernet
+ 0219 Multiport Serial Adapter
+ 021B GXT6500P Graphics Adapter
+ 021C GXT4500P Graphics Adapter
+ 0233 GXT135P Graphics Adapter
+ 0266 PCI-X Dual Channel SCSI
+ 0268 Gigabit Ethernet-SX Adapter (PCI-X)
+ 0269 10/100/1000 Base-TX Ethernet Adapter (PCI-X)
+ 027F 440GX Embedded PowerPC CPU
+ 028C Citrine chipset SCSI Controller
+ 0295 NECSCE 11508082 IBM SurePOS Riser Card Function 0
+ 0297 NECSCE 11508082 IBM SurePOS Riser Card Function 1 (UARTs)
+ 02A1 Calgary PCI-X Host Bridge
+ 0302 PCI-X Host Bridge
+ 0314 ZISC 036 Neural accelerator Card
+ 3022 QLA3022 Network Adapter
+ 4022 QLA3022 Network Adapter
+ FFFF MPIC 2 Interrupt Controller
+1015 LSI Logic Corp of Canada
+1016 Fujitsu ICL Personal Systems
+1017 Spea Software AG
+ 5343 v7-mpeg modul SPEA 3D Accelerator
+1018 Unisys Corporation
+1019 Elitegroup Computer System
+ 1B10 sis-648D VIA chipset
+101A NCR Corporation
+ 0005 8156 100VG/AnyLAN Adapter
+ 0009 Altera FLEX ??? Raid Controller ???
+ 1DC1 Bynet
+101B Vitesse Semiconductor
+101C Western Digital
+ 0193 WD33C193A PCI-SCSI Bridge
+ 0196 WD33C196A PCI-SCSI Bridge
+ 0197 WD33C197A PCI-Wide SCSI Bridge
+ 0296 WD33C296A PCI-Wide SCSI Bridge
+ 3193 WD7193 Fast SCSI II Host Adapter
+ 3197 WD7197 Fast Wide SCSI II Host Adapter
+ 3296 WD7296a Fast Wide SCSI II Host Adapter
+ 4296 WD34C294 Wide Fast-20 SCSI Host Adapter
+ 9710 Pipeline 9710
+ 9712 Pipeline 9712
+ C24A 90C (??)
+101E American Megatrends Inc.
+ 0009 MegaRAID 428 Ultra RAID Controller (rev 03)
+ 1960 80960RP i960RP Microprocessor
+ 9010 MegaRAID 428 Ultra Fast Wide SCSI RAID Controller
+ 9030 EIDE Controller
+ 9031 EIDE Controller
+ 9032 EIDE & SCSI Controller
+ 9033 I960 SCSI Controller
+ 9040 Multimedia card
+ 9060 MegaRAID 434 Ultra GT RAID Controller
+ 9063 MegaRAC Controller
+101F PictureTel Corp.
+1020 Hitachi Computer Electronics
+1021 Oki Electric Industry
+1022 Advanced Micro Devices (AMD)
+ 0058 SSA Adapter [Advanced SerialRAID/X]
+ 02BD Obsidian chipset SCSI controller
+ 0308 CalIOC2 PCI-E Root Port
+ 1100 (K8) Athlon 64/Opteron HyperTransport Technology Configuration
+ 1101 (K8) Athlon 64/Opteron Address Map
+ 1102 (K8) Athlon 64/Opteron DRAM Controller
+ 1103 (K8) Athlon 64/Opteron Miscellaneous Control
+ 1200 (Family 10h) Athlon 64/Opteron/Sempron HyperTransport Technology Configuration
+ 1201 (Family 10h) Athlon 64/Opteron/Sempron Address Map
+ 1202 (Family 10h) Athlon 64/Opteron/Sempron DRAM Controller
+ 1203 (Family 10h) Athlon 64/Opteron/Sempron Miscellaneous Control
+ 1204 (Family 10h) Athlon 64/Opteron/Sempron Link Control
+ 1300 (Family 11h) Athlon 64/Opteron/Sempron HyperTransport Technology Configuration
+ 1301 (Family 11h) Athlon 64/Opteron/Sempron Address Map
+ 1302 (Family 11h) Athlon 64/Opteron/Sempron DRAM Controller
+ 1303 (Family 11h) Athlon 64/Opteron/Sempron Miscellaneous Control
+ 1304 (Family 11h) Athlon 64/Opteron/Sempron Link Control
+ 2000 Am79C970/1/2/3/5/6 PCnet LANCE PCI Ethernet Controller
+ 2001 AM79C978 PCnet Single Chip Home Networking Controller 1/10Mbps
+ 2003 Am1772 Wireless LAN chipset
+ 2020 AM53C974 SCSI Bridge (AKA Qlogic Fast!SCSI Basic, Tekram DC-390)
+ 2040 AM79C974 Ethernet & SCSI Bridge
+ 2080 Conrad Kostecki
+ 2081 Unknown GeodeLX graphics adapter
+ 2082 GX3 Geode GX3 AES Crypto Driver
+ 208F CS5536 GeodeLink PCI South Bridge
+ 2090 CS5536 [Geode companion] ISA
+ 2091 CS5536 [Geode companion] FLASH
+ 2093 CS5536 CS5536 Audio Controller
+ 2094 CS5536 CS5536 OHCI USB Host Controller
+ 2095 CS5536 CS5536 EHCI USB Host Controller
+ 2096 CS5536 [Geode companion] UDC
+ 2097 CS5536 [Geode companion] UOC
+ 209A CS5536 CS5536 IDE Controller
+ 3000 Elan SC520 MicroController PCI Bus Host Brdge
+ 4361 AC'97 Audio
+ 5E4B RV410 Radeon X700 Pro
+ 7004 AMD-751 (Irongate) CPU to PCI Bridge (SMP Chipset)
+ 7006 AMD-751 Processor-to-PCI Bridge / Memory Ctrlr
+ 7007 AMD-751 AGP and PCI-to-PCI Bridge (1x/2x AGP)
+ 700A AMD-IGR4 AGP Host to PCI Bridge
+ 700B AMD-IGR4 AGP PCI to PCI Bridge
+ 700C AMD-762 CPU to PCI Bridge (SMP chipset)
+ 700D AMD-762 CPU to PCI Bridge (AGP 4x)
+ 700E AMD-761 CPU to PCI Bridge
+ 700F AMD-761 CPU to AGP Bridge (AGP 4x)
+ 7400 AMD-755 (Cobra) PCI to ISA Bridge
+ 7401 AMD-755 Bus Master IDE Controller
+ 7403 AMD-755 (Cobra) Power Management Controller
+ 7404 AMD-755 (Cobra) USB Open Host Controller
+ 7408 AMD-756 (Viper) PCI to ISA Bridge
+ 7409 AMD-756 (Viper) EIDE Controller
+ 740B AMD-756 (Viper) Power Management Controller
+ 740C AMD-756 (Viper) USB Open Host Controller
+ 7410 AMD-766 (ViperPlus) PCI to ISA/LPC Bridge
+ 7411 AMD-766 (ViperPlus) EIDE Controller
+ 7412 AMD-766 (ViperPlus) USB Controller
+ 7413 AMD-766 (ViperPlus) Power Management Controller
+ 7414 AMD-766 (ViperPlus) OpenHCD USB Host Controller
+ 7440 AMD-768 (Opus) PCI to ISA/LPC Bridge
+ 7441 AMD-768 (Opus) EIDE Controller
+ 7443 AMD-768 (Opus) ACPI Controller
+ 7445 AMD-768 (Opus) AC'97 Audio
+ 7446 AMD-768 (Opus) AC'97 Modem
+ 7448 AMD-768 (Opus) PCI Bridge
+ 7449 AMD-768 (Opus) USB Controller
+ 7450 AMD-8131 PCI-X Bridge
+ 7451 AMD-8131 PCI-X IOAPIC
+ 7454 AMD-8151 AGP Device (System Controller)
+ 7455 AMD-8151 AGP Bridge
+ 7458 AMD-8132 PCI-X Bridge
+ 7459 AMD-8132 PCI-X IOAPIC
+ 7460 AMD-8111 PCI Bridge
+ 7461 AMD-8111 USB 2.0 Controller
+ 7462 AMD-8111 Ethernet Controller
+ 7463 AMD-8111 USB Enhanced Host Controller
+ 7464 AMD-8111 USB OpenHCI Host Controller
+ 7468 AMD-8111 LPC Bridge
+ 7469 AMD-8111 UltraATA/133 Controller
+ 746A AMD-8111 SMBus 2.0 Controller
+ 746B AMD-8111 ACPI System Management Controller
+ 746D c-media cmi8738 Audio Controller
+ 746E AMD-8111 AC'97 Modem
+ 756B AMD-8111 ACPI Controller
+1023 Trident Microsystems
+ 0194 82C194 CardBus Controller
+ 2000 4DWAVE-DX advanced PCI DirectSound accelerator
+ 2001 4D WAVE DX SOUND ACCELERATOR PCI Audio
+ 2100 Cyber-XP4 Video Accelerator
+ 2200 Volari V3 Video adapter
+ 8400 CyberBlade i7 sausgauos
+ 8420 51331071 compaq 100
+ 8500 Cyber CyberBlade i1 AGP (51)
+ 8520 Trident Video Accelerator CyberBlade i1 windows 98
+ 8620 CyberBlade-i1 trident
+ 8820 CyberBlade XP zczxzczx
+ 9320 TGUI9320 32-bit GUI Accelerator
+ 9350 TGUI9350 32-bit GUI Accelerator
+ 9360 Flat panel GUI Accelerator
+ 9382 Cyber9382 Reference Design
+ 9383 Cyber9383 Reference Design
+ 9385 Cyber9385 Reference Design
+ 9386 Cyber9386 Video Accelerator
+ 9388 Cyber9388 Video Accelerator
+ 9397 Cyber9397 Video Accelerator 3D
+ 939A Cyber9397DVD Video Accelerator
+ 9420 TGUI9420 DGi GUI Accelerator
+ 9430 TGUI9430 GUI Accelerator
+ 9440 TGUI9440 DGi GUI Accelerator
+ 9460 TGUI9460 32-bit GUI Accelerator
+ 9470 TGUI9470
+ 9520 Cyber9520 Video Accelerator
+ 9525 Cyber9525 Video Accelerator
+ 9540 Cyber9540 Video Accelerator
+ 9660 TGUI9660XGi/968x/938x GUI Accelerator
+ 9680 TGUI9680 GUI Accelerator
+ 9682 TGUI9682 Multimedia Accelerator
+ 9683 TGUI9683 GUI Accelerator
+ 9685 ProVIDIA 9685 2MB VGA
+ 9750 3DImage 9750 PCI/AGP trident dgi
+ 9753 TGUI9753 Video Accelerator
+ 9754 TGUI9753 Wave Video Accelerator
+ 9759 TGUI975? Image GUI Accelerator
+ 9783 TGUI9783
+ 9785 TGUI9785
+ 9850 3D Image 9850 AGP 4mb
+ 9880 Blade 3D 9880 gggggg
+ 9910 00011178 CyberBlade XP
+ 9930 CyberBlade XPm
+1024 Zenith Data Systems
+1025 Acer Incorporated
+ 0028 AC97 ID:SIL REV:0x27, 08 Agere Systems soft modem chip
+ 1435 M1435 CPU to PCI & PCI to ISA Bridge
+ 1445 ALI M1445 VL to PCI Bridge & Enhanced IDE Adapter
+ 1449 ALI M1449 PCI to ISA Bridge
+ 1451 ALI M1451 Pentium Chipset
+ 1461 ALI M1461 P54C Chipset
+ 1489 ALI M1489 486 Chipset
+ 1511 ALI M1511 Aladdin
+ 1512 ALI M1512 Aladdin
+ 1513 ALI M1513 Aladdin
+ 1521 ALI M1521 Aladdin III CPU Bridge
+ 1523 ALI M1523 ISA Bridge
+ 1531 ALI M1531 Aladdin IV/IV+ North Bridge
+ 1533 ALI M1533 Aladdin IV/V ISA South Bridge
+ 1535 ALI M1535 Aladdin V+ PCI South Bridge
+ 1541 ALI M1541 Aladdin V/V+ AGP+PCI North Bridge
+ 1542 ALI M1542 Aladdin V/V+ AGP+PCI North Bridge
+ 1543 M1543C PCi South Bridge Aladdin IV+/V
+ 1561 ALI M1561 Northbridge [Aladdin 7]
+ 1621 ALI M1621 Aladdin Pro II PCI North Bridge
+ 1631 ALI M1631 Aladdin Pro III PCI North Bridge
+ 1641 ALI M1641 Aladdin Pro IV PCI North Bridge
+ 3141 ALI M3141 GUI Accelerator, 2 MB Video-RAM
+ 3143 ALI M3143 GUI Accelerator, 2 MB Video-RAM with DAC
+ 3145 ALI M3145 GUI Accelerator, 2 MB Video-RAM
+ 3147 ALI M3147 GUI Accelerator, 2 MB Video-RAM with DAC
+ 3149 ALI M3149 GUI Accelerator, 4 MB Video-RAM
+ 3151 ALI M3151 GUI Accelerator, 8 MB Video-RAM
+ 3307 ALI M3307 MPEG-1 Decoder
+ 3309 ALI M3309 MPEG Decoder
+ 3321 ALI M3321 MPEG-II Decoder
+ 5212 ALI M4803
+ 5215 M5217 EIDE Controller
+ 5217 ALI M5217 I/O Controller
+ 5219 ALI M5219 I/O Controller
+ 5225 ALI M5225 EIDE Controller
+ 5229 ALI M5229 EIDE Controller
+ 5235 ALI M5235 I/O Controller
+ 5237 M5237 PCI USB Host Controller
+ 5239 ALI M5273 USB 2.0 Controller
+ 5240 EIDE Controller
+ 5241 PCMCIA Bridge
+ 5242 General Purpose Controller
+ 5243 PCI to PCI Bridge Controller
+ 5244 Floppy Disk Controller
+ 5247 ALI M1541 PCI to PCI Bridge
+ 5251 ALI M5251 P1394 OHCI Controller
+ 5427 ALI PCI to AGP Bridge
+ 5451 ALI M5451 PCI AC-Link Controller Audio Device
+ 5453 ALI M5453 PCI AC-Link Controller Modem Device
+ 7101 ALI M7101 PCI PMU Power Management Controller
+1028 Dell Computer Corporation
+ 0001 PowerEdge 2 /Si Expandable RAID Controller (PERC) (SCSI)
+ 0002 PowerEdge 3/Di Expandable RAID Controller
+ 0003 PowerEdge 3/Si Expandable RAID Controller
+ 0004 PowerEdge 3/Si Expandable RAID Controller
+ 0005 PowerEdge 3/Di Expandable RAID Controller
+ 0006 PowerEdge 3/Di Expandable RAID Controller
+ 0007 Remote Assistant Card 3
+ 0008 PowerEdge Expandable RAID Controller 3/Di
+ 000A PowerEdge 3/Di Expandable RAID Controller
+ 000C Embedded Systems Management Device 4
+ 000E 000E PERC 4/DI Raid Controller
+ 000F PERC 4/Di RAID Controller
+ 0013 PERC 4e/Si and PERC 4e/Di Expandable RAID Controller
+ 0015 PERC 5/i RAID Controller Integrated RAID controller
+ 0287 DELL PERC 320/DC Adaptec 2200S SCSI RAID controller
+ 1000 FA82537EP A Intel 537 epg v.92 modem repackaged by dell
+1029 Siemens Nixdorf AG
+102A LSI Logic, Headland Division
+ 0000 HYDRA Pentium PCI Chipset (MPI)
+ 0010 ASPEN 486 PCI Chipset
+ 0310 L64364 ATMizer r II+ ATM-SAR Chip
+102B Matrox Electronic Systems Ltd.
+ 0010 MGA-I (Impression??)
+ 0518 MGA-PX2085 Atlas GUI Accelerator
+ 0519 MGA-2064W Storm (Millennium board)
+ 051A mga-1164sg-a Hurricane/Cyclone 64-bit graphics chip
+ 051B MGA-2164W Millennium II PCI
+ 051E MGA-1164SG Mystique 220 AGP
+ 051F MGA-2164WA Millennium II AGP
+ 0520 Matrox lnc MGA-G200B Eclipse/Calao
+ 0521 Matrox lnc MGA-G200B Eclipse/Calao
+ 0525 MGA G450 Dual Head Chip of G450 graphics card
+ 0527 Parhelia AGP
+ 0528 Parhelia Parhelia 128MB/256MB/PCI/HR256
+ 0D10 MGA-I Athena (Ultima/Impression board)
+ 1000 MGA-G100 Chipset PCI
+ 1001 MGA-G100 Twister AGP
+ 1525 Fusion G450 AGP
+ 1527 Fusion Plus G800 AGP
+ 2007 Mistral GUI+3D Accelerator
+ 2527 MGA-G550 AGP Chipset
+ 2537 Parhelia-LX Parhelia Chipset AGP
+ 2538 Millennium P650 Series
+ 4536 Meteor 2 STD/MC/Dig Video Capture Card
+ 6573 Shark 10/100 Multiport Switch NIC
+ 80A0 RT.x10 Multimedia Device
+ 9876 RT 2000 Multimedia device
+102C Asiliant (Chips And Technologies)
+ 00B8 64310 Wingine DGX - DRAM Graphics Accelerator
+ 00C0 69000 AGP/PCI Flat Panel/CRT VGA Accelerator
+ 00D0 F65545 Flat Panel GUI Accelerator
+ 00D8 65540 Flat Panel/CRT VGA Controller
+ 00DC F65548 Flat Panel GUI Accelerator
+ 00E0 F65550 HiQV32 GUI Accelerator
+ 00E4 65554 Flat Panel/LCD CRT GUI Accelerator
+ 00E5 F65555 HiQVPro GUI Accelerator
+ 00F0 68554 GUI Controller
+ 00F4 F68554 HiQVision GUI Controller
+ 00F5 68555 GUI Controller
+ 01E0 65560 PCI Flat Panel/CRT VGA Accelerator
+ 0C30 69030 AGP/PCI Flat Panel/CRT VGA Accelerator
+102D Wyse Technologies
+ 50DC 3328 Audio
+102E Olivetti Advanced Technology
+102F Toshiba America
+ 0009 r4x00 CPU Bridge
+ 000A TX3927 CPU Bridge?
+ 0020 Meteor 155 ATM PCI Adapter
+ 0030 TC35815CF PCI 10/100 Mbit Ethernet Controller
+ 0031 TX4938 Integrated 10/100 Mbit Ethernet Controller
+ 0105 TC86C001FG GOKU-S Bus Master IDE Controller
+ 0106 TC86C001FG GOKU-S USB Host Controller
+ 0107 TC86C001FG GOKU-S USB Device Controller
+ 0108 TC86C001FG GOKU-S I2C Bus/SIO/GPIO Controller
+ 0180 TX4927 MIPS Processor
+ 0181 TX4925 MIPS RISC PCI Controller (PCIC)
+ 0182 TX4937 MIPS RISC PCI Controller (PCIC)
+1030 TMC Research
+1031 miro Computer Products AG
+ 5601 MiroVIDEO DC20 Video I/O & JPEG
+ 5607 2IVDC-PCX1 1250400 033893932 video in and out with motion jpeg compression and deco
+ 5631 Media 3D
+ 6057 MiroVIDEO DC10/DC30 DC30D-601601-4.0
+1032 Compaq
+1033 NEC Electronics Hong Kong
+ 0001 upD98409 PCI to 486 like bus Bridge
+ 0002 PCI to VL98 Bridge
+ 0003 ATM Controller
+ 0004 R4000 PCI bus Bridge
+ 0005 PCI to 486 like peripheral bus Bridge
+ 0006 GUI Accelerator
+ 0007 PCI to ux-bus Bridge
+ 0008 GUI Accelerator (vga equivalent)
+ 0009 GUI Accelerator for 98
+ 001A [Nile II]
+ 001D uPD98405 NEASCOT-S20 ATM Integrated SAR Controller
+ 0021 Vrc4373 [Nile I]
+ 0029 PoverVR PCX1 3D Accelerator
+ 002A PoverVR 3D Accelerator
+ 002F NEC D72874GC 1394 Host Controller
+ 0035 udp9210 Dual OHCI controllers plus Single EHCI controller
+ 0036 uPD98409 NEASCOT-S40C ATM Light SAR Controller
+ 003E uPD66369 NAPCCARD CardBus Controller
+ 0046 PoverVR PCX2 3D Accelerator
+ 005A Vrc5074 [Nile 4]
+ 0063 uPD72862 Firewarden OHCI Compliant FireWire Controller
+ 0067 PowerVR Neon 250 PowerVR series II graphics processor
+ 0074 56k Voice Modem
+ 009B Vrc5476
+ 00BE VR4122 64-bit CPU with Northbridge
+ 00CD uPD72870 IEEE1394 1-Chip OHCI Host Controller
+ 00CE uPD72871/2 IEEE1394 1-Chip OHCI Host Controller
+ 00E0 uPD720100A/101 USB 2.0 Enhanced Host Controller
+ 00E7 uPD72874 IEEE1394 OHCI 1.1 2-port PHY-Link Ctrlr
+ 00F2 D72874GC IEEE1394+OHCI+1.1+3-port+PHY-Link+Ctrlr
+ 013A Angel Family MPEG Device
+ 0520 NEC D72874GC 1394 CARD
+1034 Burndy/Framatome Connectors USA Ltd
+1035 Industrial Technology Research
+1036 Future Domain Corp
+ 0000 TMC-18XX/TMC-3260 SCSI-2 Controller (36c70)
+1037 Hitachi Micro Systems Inc
+1038 AMP Incorporated
+1039 Silicon Integrated Systems (SiS)
+ 0001 SiS730 Virtual PCI-to-PCI bridge (AGP)
+ 0002 6202 Virtual PCI to PCI Bridge (AGP)
+ 0003 SiS760 Virtual PCI to PCI Bridge (AGP)
+ 0005 Pentium chipset
+ 0006 SiS 85C501 PCI/ISA Cache Memory Controller (PCMC)
+ 0008 SiS PCI to ISA Bridge (LPC Bridge)
+ 0009 SiS600 Power Management Controller
+ 0016 SiS961/962 SMBus Controller
+ 0018 SiS950 PCI to ISA Bridge (LPC Bridge)
+ 0180 SiS180 IDE UDMA Controller
+ 0181 SiS181 RAID Controller
+ 0182 SiS182 RAID Controller
+ 0191 SIS191 SIS191
+ 0200 SiS5597/98 Onboard Graphics Controller
+ 0204 SiS 6215 PCI
+ 0205 SiS6205 GUI Accelerator with RAM-DAC, UMA-Support
+ 0300 SiS300/SiS305 GUI Accelerator+3D
+ 0305 SiS305 2D/3D/Video/DVD Accelerator
+ 0315 SiS 315 2D/3D Accelerator
+ 0325 SiS330 2D/3D Accelerator
+ 0330 SiS330 Xabre 2D/3D Accelerator
+ 0406 85C501 PCI/ISA Cache Memory Controller (PCMC)
+ 0496 85C496 CPU to PCI & PCI to ISA Bridge
+ 0530 SiS530 Host-to-PCI bridge
+ 0540 SiS540 Host-to-PCI Bridge
+ 0550 SiS550/1/2 CPU to PCI Bridge
+ 0596 SiS596 Pentium PCI chipset with IDE
+ 0597 SiS5513 EIDE Controller (step C)
+ 0601 SiS83C601 PCI Enhanced IDE Controller
+ 0620 SiS620 Host-to-PCI Bridge
+ 0630 SiS630 Host-to-PCI Bridge
+ 0635 SiS 635 Host-to-PCI Bridge
+ 0640 SiS 640 Host-to-PCI Bridge
+ 0645 SiS 645 Host-to-PCI Bridge
+ 0646 SiS645DX Host-to-PCI Bridge
+ 0648 SiS648MX Host-to-PCI Bridge
+ 0649 SiS648FX(??) CPU to PCI Bridge
+ 0650 SiS961 Host-to-PCI Bridge
+ 0651 SiS651 Host-to-PCI Bridge
+ 0652 SiSM650(??) CPU to PCI Bridge
+ 0655 SiS655 Host-to-PCI Bridge
+ 0656 ??? CPU to PCI Bridge
+ 0658 SiS R658 CPU to PCI Bridge
+ 0659 SiS R659 CPU to PCI Bridge
+ 0660 Host-to-PCI Bridge
+ 0661 SiS661FX CPU to PCI Bridge
+ 0662 ??? CPU to PCI Bridge
+ 0663 ??? CPU to PCI Bridge
+ 0730 SiS 730 Host-to-PCI Bridge
+ 0735 SiS 735 Host-to-PCI Bridge
+ 0740 SiS740 CPU to PCI Bridge
+ 0741 SiS741 CPU to PCI Bridge
+ 0745 SiS745 Host-to-PCI Bridge
+ 0746 SiS746 Host-to-PCI Bridge
+ 0748 SiS748 CPU to PCI Bridge
+ 0750 SiS750 CPU to PCI Bridge
+ 0755 SiSM650? Host-to-PCI Bridge
+ 0756 SiS755FX CPU to PCI Bridge
+ 0760 SiS760 Athlon 64 CPU to PCI Bridge
+ 0761 ??? Athlon 64 CPU to PCI Bridge
+ 0762 ??? Athlon 64 CPU to PCI Bridge
+ 0900 SiS900 sis 900 and integrated lan
+ 0901 Device ID = 0900 SiS900 SiS900 10/100 Ethernet Adapter
+ 0962 SiS962 LPC Bridge
+ 0963 SiS963 PCI to ISA Bridge (LPC Bridge)
+ 0964 SiS964 LPC Bridge
+ 0999 sis950 pci\ven_1039&subsys_200b163&rev_a0\3&61aaa01\0&17
+ 1039 SiS5597 SiS5597 SVGA
+ 1182 SiS965/966 182/1182 RAID Controller
+ 1184 SiS Storport AHCI Controller
+ 3602 SiS83C602 EIDE Controller
+ 5107 SiS5107 Hot Docking Controller
+ 5300 SiS540 PCI Display Adapter
+ 5315 SiS530/1/2 GUI Accelerator
+ 5401 SiS5401 486 PCI Chipset
+ 5511 SiS5511/5512 PCI/ISA System Memory Controller
+ 5513 SiS5513 EIDE Controller (A,B step)
+ 5517 SiS5517 Pentium Chipset, CPU to PCI Bridge
+ 5518 SiS5518 UDMA IDE Controller
+ 5571 SiS5571 Pentium Chipset, CPU to PCI Bridge
+ 5581 SiS5581 Pentium Chipset
+ 5582 SiS5582 PCI to ISA Bridge
+ 5591 SiS5591/2 CPU to PCI Bridge
+ 5596 SiS5596 PCI, Memory & VGA Controller
+ 5597 SiS5597 Host to PCI bridge
+ 5600 SiS600 Host-to-PCI Bridge
+ 5630 SiS630 Host-to-PCI Bridge
+ 6204 SiS6204 Video decoder & MPEG interface
+ 6205 SiS6206 PCI VGA Controller
+ 6225 SiS 950 m2284dxs PCI Graphics & Video Accelerator
+ 6236 SiS6236 AGP GUI Accelerator+3D
+ 6300 SiS630/730 GUI Accelerator+3D
+ 6306 SiS530/620 Integrated 3D SVGA Controller
+ 6325 SiS650/1/GL/GX,740 GUI 2D/3D Accelerator
+ 6326 1039 AGP/PCI Graphics & Video Accelerator
+ 6330 SiS661FX/M661FX/760/741/M760/M741 GUI 2D/3D Accelerator
+ 6342 SiS662/760GX/761/761GX
+ 7001 SiS5597/8 Universal Serial Bus Controller
+ 7002 SiS7002 USB 2.0 Enhanced Host Controller
+ 7005 SiS551/552 Memory Stick Controller
+ 7007 SiS OHCI Compliant FireWire Controller
+ 7012 SiS7012 PCI Audio Accelerator
+ 7013 SiS7013 Smart Link 56K Voice Modem
+ 7015 SiS550/1/2 Software Modem
+ 7016 SiS7016 10/100 Ethernet Adapter
+ 7018 SiS7018 PCI Audio Accelerator
+ 7019 SiS550/1/2 Hardware Audio
+ 7300 SiS730 GUI Accelerator + 3D
+ 9876 sis6215 pci vga card for winxp
+103A Seiko Epson Corporation
+103B Tatung Corp. Of America
+103C Hewlett-Packard Company
+ 1005 A4977A Visialize EG
+ 1008 Donner GFX 001
+ 100A hpVisualizeFX Hewlett-Packard VisualizeFX Series Video
+ 1028 Tachyon TL Fibre Channel Adapter
+ 1029 HPFC-5200B Tachyon XL2 Fibre Channel Adapter
+ 102A Tach TS Tachyon TS Fibre Channel Host Adapter
+ 1030 J2585A DeskDirect 10/100VG LAN Adapter
+ 1031 J2585B222 DeskDirect 10/100 NIC
+ 1040 J2973A DeskDirect 10BaseT NIC
+ 1041 J2585B DeskDirect 10/100VG NIC
+ 1042 J2970A DeskDirect 10BaseT/2 NIC
+ 1048 SAS
+ 1049 DIVA1
+ 104A DIVA2
+ 104B SP2
+ 104D J3242A EL-10 Ethernet Adapter
+ 1064 79C970 PCnet Ethernet Controller
+ 10C1 NetServer Smart IRQ Router
+ 10ED TopTools HP Communications Port
+ 1200 82557B 10/100 NIC
+ 1219 NetServer PCI Hot-Plug Controller
+ 121A NetServer SMIC Controller
+ 121B NetServer Legacy COM Port Decoder
+ 121C NetServer PCI COM Port Decoder
+ 1229 zx1 System Bus Adapter
+ 122A zx1 I/O Controller
+ 122B zx1 Local Bus Adapter
+ 12FA Broadcom BCM4306 Broadcom Wireless miniPCI in a HP laptop
+ 2910 E2910A PCI Bus Exerciser
+ 2920 Fast Host Interface
+ 2924 E2924A PCI Host Interface Adapter
+ 2925 E2925A 32 bit PCI Bus Exerciser and Analyzer
+ 2926 E2926A 64 bit PCI Bus Exerciser and Analyzer
+ 2927 E2927A 64 Bit, 66/50MHz PCI Analyzer & Exerciser
+ 2940 E2940A 64 bit, 66/50MHz CompactPCI Analyzer&Exerciser
+ 3220 P600 P600 SmartArray Raid Controller
+ 3222 Smart Array Controller
+ 3230 Smart Array P400 Controller Smart Array P400 Controller
+ 3238 Smart Array E200/E200i Controller
+ 3302 unknown unknown
+103E Solliday Engineering
+103F Logic Modeling (Synopsys)
+1040 AccelGraphics Inc (Kubota Pacific)
+1041 Computrend
+1042 Micron (Was: PC Technology Inc)
+ 1000 RZ1000 EIDE Controller
+ 1001 RZ1001 EIDE Controller
+ 3000 Samurai 0 CPU to PCI Bridge
+ 3010 Samurai 1 CPU to PCI Bridge
+ 3020 Samurai IDE Controller
+ 3030 MT82P664 Samurai 64M2 North Bridge
+ 3120 Samurai-DDR CPU to PCI Bridge
+ 3130 Samurai-DDR AGP Controller
+1043 Asustek Computer Inc.
+ 0675 P4P-800X Cologne Chip
+1044 Adaptec (Formerly: Distributed Processing Technology (DPT))
+ 1012 Domino RAID Engine
+ A400 DPT 2124/9X SmartCache III/RAID SCSI Controller
+ A500 PCI Bridge
+ A501 I2O SmartRAID V Controller
+ A511 Raptor SmartRAID Controller
+1045 OPTi Inc.
+ A0F8 82C750 Vendetta Chipset USB Controller
+ C101 82C264 GUI Accelerator
+ C178 82C178 pci usb card 2- port
+ C556 82C556 Viper
+ C557 82C557/8 Viper-M Pentium Bridge
+ C558 82C558 Viper PCI to ISA Bridge with PnP
+ C567 82C750 Vendetta Chipset (Viper Max) CPU to PCI Bridge
+ C568 82C750 Vendetta Chipset (Viper Max) PCI to ISA Bridge
+ C569 82C579 Viper XPress+ Chipset, Pentium to PCI Bridge
+ C621 82C621 IDE Controller (Single FIFO)
+ C700 82C700 82C700 FireStar PCI to ISA Bridge
+ C701 82C701 FireStar mobile chipset: host bridge
+ C814 82C814 FireBridge II Docking Station Controller
+ C822 82C822 CPU to PCI & PCI to ISA PnP bridge
+ C824 82C824 FireFox PC-Card CardBus Controller
+ C825 82C825 function 0 PCI-to-ISA Bridge
+ C832 82C832 CPU to PCI Bridge and PCI to ISA Bridge
+ C861 82C861 FireLink PCI-to- 5 x USB Bridge( usb1.1 )
+ C881 82C881 FireLink 1394 OHCI Firewire Link Controller
+ C895 82C895
+ C935 82C935 MachOne integrated PCI audio processor
+ D568 82C825 FireBridge II PCI EIDE Controller
+ D768 82C750 Vendetta Chipset UDMA EIDE Controller
+1046 IPC Corporation LTD
+1047 Genoa Systems Corp.
+1048 ELSA GmbH
+ 0253 0x0c92 ELSA GLADIAC 528
+ 0C60 Elsa Gladiac MX NVidia Geforce 2 MX
+ 0C71 Elsa Gladiac 721 NVidia GeForce3 Ti 200
+ 1000 Quick Step 1000 ISDN Controller
+ 3000 QuickStep 3000 ISDN Controller
+ 8901 ELSA GLoria XL
+1049 Fountain Technology
+104A ST Microelectronics (SGS Thomson)
+ 0008 STG 2000X diamond
+ 0009 STG 1764X
+ 0010 STG4000 PowerVR KYRO series 3 graphics processor
+ 0209 STPC Consumer/Industrial North/South Bridge
+ 020A STPC Atlas/Consumer-S/Consumer-II/Elite North Bridge
+ 0210 STPC Atlas ISA Bridge
+ 021A STPC Consumer-S/Elite ISA Bridge
+ 021B STPC Consumer-II ISA Bridge
+ 0228 STPC Atlas IDE Controller
+ 0230 STPC Atlas USB Controller
+ 0500 ST70137 ADSL
+ 0981 DEC-Tulip Compatible 10/100 Ethernet Adapter
+ 1746 STG 1746X
+ 2774 STE10/100A PCI 10/100 Ethernet Controller with PHY
+ 3520 MPEG-II Video Decoder
+104B Mylex / Buslogic
+ 0140 BT-946C PCI-SCSI-2 MultiMaster
+ 1040 BA80c30 PCI-SCSI MultiMaster
+ 8130 BT-930/932/950/952 FlashPoint LT/DL/LW/DW Ultra(wide) SCSI
+104C Texas Instruments (TI)
+ 014E 4610,4515,4610fm device
+ 0500 TNETE100A/110A/211 ThunderLAN 100 Mbit LAN Controller
+ 0508 TI380PCI PCI interface for TI380 compressors
+ 1000 TI PCI Eagle i/f AS
+ 104C PCI1510 PC Card CardBus Controller
+ 3D04 TVP4010 Permedia
+ 3D07 TVP4020 AGP Permedia 2
+ 8000 TSB12LV21 LYNX IEEE1394 FireWire Host Controller
+ 8009 TSB12LV22 OHCI-Lynx PCI IEEE 1394 Host Controller
+ 8010 TSB12LV26 OHCI-Lynx IEEE 1394 Host Controller
+ 8011 PCI4450 OHCI-Lynx IEEE-1394 FireWire Controller
+ 8017 PCI4410A OHCI-Lynx IEEE-1394 FireWire Controller
+ 8019 TSB12LV23 OHCI-Lynx PCI IEEE 1394 Host Controller
+ 8020 TSB12LV26 OHCI-Lynx PCI IEEE 1394 Host Controller
+ 8021 TSB43AA22xxx 1394a-2000 OHCI PHY/Link Layer Ctrlr xxx
+ 8022 TSB43AB22 1394a-2000 Controller (PHY/Link)
+ 8023 TSB43AB21/A IEEE1394a-2000 OHCI PHY/Link-Layer Ctrlr
+ 8024 TSB43AB23 1394a-2000 OHCI PHY/link-layer Controller
+ 8025 TSB82AA2 1394b OHCI-Lynx IEEE 1394 Host Controller
+ 8026 TSB43AB21 1394a-2000 OHCI PHY/link-layer Controller
+ 8027 PCI4451 OHCI-Lynx IEEE-1394 FireWire Adapter
+ 8029 ??? OHCI Compliant IEEE-1394 FireWire Controller
+ 802E PCI7420 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller
+ 8031 PCIxx21/x515 Cardbus Controller
+ 8032 OHCI Compliant IEEE-1394 FireWire Controller
+ 8033 PCIxx11/21 Integrated FlashMedia Controller
+ 8034 10981734 SDA Standard Compliant SD Host Controller
+ 8035 N/A PCI GemCore based SmartCard controller
+ 8038 ff101179 GemCore based SmartCard controller
+ 8039 PCIxx12 Cardbus Controller
+ 803A ??? OHCI Compliant IEEE 1394 Host controller
+ 803B PCIxx12 Integrated Flash Media Controller
+ 803C PCIxx12 SDA Standard Compliant SD Host Controller
+ 803D N/A Texas Instruments PCI GemCore based SmartCard controller
+ 8201 not able to find - where is it? TI UltraMedia Firmware Loader Device
+ 8204 4610, 4515, 4610FM TI UltraMedia Firmware Loader Device test
+ 8231 PCIe to PCI Bridge
+ 8400 PCI-2422 802.11b+ 22Mbps Wireless Adapter
+ 8401 ACX 100 22Mbps Wireless Interface
+ 9000 Wireless Interface (??)
+ 9065 TMX320C6412 Fixed Point Digital Signal Processor
+ 9066 TNETW1130(ACX111) 802.11b/g Wireless Cardbus/PCI Adapter
+ A001 TDC1570 64-Bit PCI ATM Interface
+ A100 TDC1561 32-Bit PCI ATM Interface
+ A102 TNETA1575 HyperSAR Plus w/PCI Host interface & UTOPIA Interface
+ A106 TMS320C6205 Fixed Point DSP
+ A828 PCI2050BPDV PCI-to-PCI Bridge
+ AC10 PCI1050 PC Card Controller
+ AC11 PCI1030/1053 PC Card Controller
+ AC12 PCI1130 PC card CardBus Controller
+ AC13 PCI104c PCI\VEN_104C&DEV_8038&SUBSYS_01821028&REV_00\4&2FA23535&0&0DF0
+ AC15 PCI1131 PC Card CardBus Controller
+ AC16 PCI1250 PC Card CardBus Controller
+ AC17 PCI1220 PC Card CardBus Controller
+ AC18 PCI1260 PC card CardBus Controller
+ AC19 PCI1221 PC card CardBus Controller
+ AC1A PCI1210 PC card CardBus Controller
+ AC1B PCI1450 PC card CardBus Controller
+ AC1C PCI1225 PC Card CardBus Controller
+ AC1D PCI1251 PC Card CardBus Controller
+ AC1E PCI1211 PC Card CardBus Controller
+ AC1F PCI1251B PC card CardBus Controller
+ AC20 PCI2030 PCI to PCI Bridge
+ AC21 PCI2031 PCI to PCI Bridge
+ AC22 PCI2032 PCI Docking Bridge
+ AC23 PCI2250 PCI-to-PCI Bridge
+ AC28 PCI2050/2050I PCI-to-PCI Bridge
+ AC30 PCI1260 PC card CardBus Controller
+ AC40 PCI4450 PC card CardBus Controller
+ AC41 PCI4410 PC card CardBus Controller
+ AC42 PCI4451 PC card CardBus Controller
+ AC43 PCI4550 PC card CardBus Controller
+ AC44 PCI4510SDFSDFSD PC Card Controller SDFSDAFSADFSDAFSDAF
+ AC46 PCI4520 PC Card CardBus Controller
+ AC47 PCI7510 PC Card CardBus Controller
+ AC48 PCI7610 PC Card CardBus Controller
+ AC49 PCI7410 PC Card CardBus Controller
+ AC4A PC Card CardBus Controller with SmartCard
+ AC4B PC Card CardBus Controller with FlashMedia
+ AC4C PC Card CardBus Controller with FlashMedia
+ AC50 PCI1410 PC card cardBus Controller
+ AC51 PCI1420 PC Card CardBus Controller
+ AC52 PCI1451 PC card CardBus Controller
+ AC53 PCI1421 PC card CardBus Controller - 5-in-1 Media Card Reader
+ AC54 PCI1620 PC Card CardBus Controller with UltraMedia
+ AC55 PCI1520 PC Card CardBus Controller
+ AC56 PCI1510 PC Card CardBus Controller
+ AC57 PCI1530 PC Card CardBus Controller
+ AC58 PCI1515 PC Card CardBus Controller
+ AC59 PCI1621 PC Card CardBus Controller with UltraMedia
+ AC5A PCI1610 PC Card CardBus Controller with UltraMedia
+ AC60 PCI2040 PCI to DSP Bridge Controller
+ AC8D PCI7620
+ AC8E PCI7420 CardBus Controller
+ AC8F PCI7420/PCI7620 Dual Socket CardBus and Smart Card Cont. w/ 1394a-2000 OHCI Two-Port PHY/Link-Layer Cont. and SD/MS-Pro Sockets
+ FE00 tsb12lv26 FireWire Host Controller
+ FE03 12C01A FireWire Host Controller
+104D Sony Corporation
+ 8009 CXD1947 i.LINK FireWire PCI Host Controller
+ 8039 CXD3222 OHCI i.LINK (IEEE 1394) PCI Host Ctrlr
+ 8056 0x127a Rockwell HCF 56K Modem
+ 808A Qc pass Memory Stick Controller
+104E Oak Technology Inc
+ 0017 OTI-64017
+ 0107 OTI107 Spitfire VGA Accelerator
+ 0109 Video Adapter
+ 0111 OTI-64111 Spitfire
+ 0217 OTI-64217
+ 0317 OTI-64317
+ 0611 OTI-610 T9732
+104F Co-Time Computer Ltd.
+ 104F iatca8262 Multi I/O
+1050 Winbond Electronics Corp.
+ 0000 004005-34c8c8 Ethernet Controller (NE2000 compatible)
+ 0001 W83769F PCI/IDE controller
+ 0033 W89C33 Winbond W89C33 mPCI 802.11 Wireless LAN Adapter
+ 0105 W82C105 Ethernet Adapter
+ 0628 W83628F/629D PCI to ISA Bridge Set
+ 0840 W89C840F 100/10Mbps Ethernet Controller
+ 0940 W89C940 NE2000-Compatible Ethernet Adapter
+ 1050 W99200F Video capture card
+ 5A5A W89C940F ELANC-PCI Twisted-pair Ether-LAN Ctrlr
+ 6692 W6692CF PCI BusISDN S/T-Controller
+ 9921 W99200AF MPEG1 capture card
+ 9922 W99200F/W9922PF MPEG1/2 Video Encoder
+ 9960 W9960CF Video Codec
+ 9961 W9961CF H.263/H.261 Video Codec
+ 9970 W9970CF Video Accelerator
+ 9971 W9971CF W9971CF
+1051 Anigma Corp.
+ 0100 Motorola MC145575
+1052 Young Micro Systems(??)
+1053 Young Micro systems(??)
+1054 Hitachi Ltd
+ 0001 PCI Bridge
+ 0002 PCI Bus Controller
+ 3505 SH7751 SuperH (SH) 32-Bit RISC MCU/MPU Series
+1055 Standard Microsystems Corp (Was: EFAR Microsystems)
+ 0810 EFAR 486 host Bridge
+ 0922 Pentium/p54c host Bridge
+ 0926 I don´t know pentium 133 intel everex setpnot mx ISA Bridge
+ 9130 SLC90E66 Victory66 UDMA66 EIDE Controller (??)
+ 9460 SLC90E66 Victory66 PCI to ISA Bridge
+ 9461 SLC90E66 Victory66 UDMA66 EIDE Controller
+ 9462 SLC90E66 Victory66 USB Host Controller
+ 9463 SLC90E66 Victory66 Power Management Controller
+1056 ICL
+1057 Motorola
+ 0001 MPC105 PCI Bridge / Memory Controller (PCIB/MC)
+ 0002 MPC106 PCI Bridge/Memory Controller (PCIB/MC)
+ 0003 MPC8240 Integrated Processor
+ 0004 MPC107 PCI Bridge/Memory Controller for PPC
+ 0006 MPC8245 Integrated Processor
+ 0008 MPC8540
+ 0009 MPC8560
+ 0100 MC145575 (HCF-PCI)
+ 0431 KTI829c 100VG Ethernet Controller
+ 1801 DSP56301 24-bit Digital Signal Processor
+ 1802 DSP56305 24-Bit Digital Signal Processor
+ 18C0 MPC8265A/66 PowerQUICC II PCI Bridge
+ 18C1 MPC8271/MPC8272
+ 3052 SM56 Motorola SM56 Software Speakerphone Modem
+ 3055 Motorola SM56 Data Fax Modem
+ 3410 56361 Audio I/O Controller (MIDI)
+ 3421 56IVMR/Phoenix 56ISMR Modem
+ 4801 Raven PowerPC Chipset
+ 4802 Falcon memory control chipset
+ 4803 Hawk
+ 4806 CPX8216
+ 4809 CPX8216T HotSwap Controller
+ 4D68 20268
+ 5600 WDM MOT8888 SM 56 PCI Speakerphone/Data,Fax Modem
+ 5602 Motorola SM56 PCI Modem
+ 5608 Motorola SM56 PCI Fax Voice Modem
+ 5803 MPC5200 32-Bit Embedded PowerPC Processor
+ 5806 MCF54 Coldfire
+ 5808 MPC8220
+ 5809 MPC5200B
+ 6400 MPC190 Security Processor (S1 family, encryption)
+ 6405 MPC184 Security Processor (S1 family)
+1058 Electronics Telecommunication Research Inc (ETRI)
+1059 Kontron Canada (Was: Teknor Microsystems)
+105A Promise Technology Inc
+ 0D30 PDC20265R Promise Ultra100 (tm) IDE Controller (PDC20265)
+ 0D38 PDC20263 FastTrak66 Lite EIDE Controller
+ 1275 PDC20275 FastTrack TX EIDE Controller
+ 3318 PDC20318(??) FastTrak SATA150 TX4 Controller
+ 3319 PDC20319(??) FastTrak SATA150 TX4 Controller
+ 3371 PDC20371(??) FastTrak SATA150 TX2plus Controller
+ 3373 PDC20378 FastTrak 378/SATA 378 RAID Controller
+ 3375 PDC20375(??) FastTrak SATA150 TX2plus Controller
+ 3376 PDC20376 FastTrak 376 SATA/RAID Controller
+ 3515 PDC40719
+ 3519 PDC40519 FastTrak TX4200
+ 3570 PDC20771 FastTrak TX2300 SATA300 Controller
+ 3571 PDC20571 FastTrak TX2200
+ 3574 Promise SATAII150 579 (tm) IDE Controller
+ 3577 PDC40779 SATA-300 779
+ 3D17 PDC40718-GP SATA 300 TX4 Controller
+ 3D18 Promise SATAII150 518 (tm) IDE Controller
+ 3D73 PDC20775 SATAII 300 TX2plus IDE Controller
+ 3D75 PDC20575 SATAII150 TX2plus
+ 4D30 PDC20267 FastTrack100 EIDE Controller
+ 4D33 PDC20246 FastTrak Ultra ATA RAID controller
+ 4D38 PDC20262 FastTrak66 EIDE Controller
+ 4D68 PDC20268 Ultra100 TX2 EIDE Controller
+ 4D69 PDC20269 Ultra133 TX2 EIDE Controller
+ 5275 PDC20276 Ultra133 TX2/FastTrak TX Lite EIDE Controller
+ 5300 DC5300 EIDE Controller
+ 6268 PDC20268R FastTrak100 TX2/TX4/LP EIDE controller
+ 6269 PDC20271 FastTrak TX2000 EIDE controller
+ 6621 PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite)
+ 6622 PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller
+ 6624 PDC20621 [FastTrak SX4100]
+ 6626 PDC20618 (Ultra 618)
+ 6629 FastTrak TX4000 Controller
+ 7275 PDC20277 FastTrak TX/SBFastTrak133 Lite EIDE Controller
+ 8002 SATAII150 SX8
+105B Foxconn International Inc.
+105C Wipro Infotech Limited
+105D Number Nine Visual Technology
+ 2309 Imagine 128 GUI Accelerator
+ 2339 I128s2 Imagine 128 Series 2
+ 493D Revolution 3D (T2R)
+ 5348 Revolution IV Revolution IV
+105E Vtech Engineering Canada Ltd.
+105F Infotronic America Inc.
+1060 United Microelectronics (UMC)
+ 0001 UM82C881 486 PCI Chipset
+ 0002 UM82C886 PCI to ISA Bridge
+ 0101 UM8673F PCI Enhanced IDE Controller
+ 0881 UM8881 HB4 486 PCI Chipset
+ 0886 UM8886 PCI to ISA Bridge
+ 0891 UM82C891 Pentium CPU to PCI bridge
+ 1001 UM886A IDE Cntrlr (dual function)
+ 673A UM8886 Enhanced IDE Controller
+ 673B EIDE Master/DMA
+ 8710 UM8710 GUI Accelerator
+ 8821 CPU to PCI Bridge
+ 8822 PCI to ISA Bridge
+ 8851 Pentium CPU to PCI Bridge
+ 8852 Pentium CPU to ISA Bridge
+ 886A UM8886 PCI to ISA Bridge with EIDE
+ 8881 UM8881F HB4 486 PCI Chipset
+ 8886 UM8886 ISA Bridge (w/o IDE support)
+ 888A UM8886A
+ 8891 UM8891 586 PCI Chipset
+ 9017 UM9017F Ethernet
+ 9018 UM9018 Ethernet
+ 9026 UM9026 Fast Ethernet
+ E881 UM8881 486 Chipset (Notebook)
+ E886 UM8886 PCI to ISA Bridge with EIDE (Notebook)
+ E88A UM8886N PCI / ISA Bridge
+ E891 UM8891 Pentium Chipset (Notebook)
+1061 I.T.T. (X Tech)
+ 0001 ITT AGX013/16 GUI Accelerator
+ 0002 ITT 3204/3501 MPEG Decoder
+1062 Maspar Computer Corp.
+1063 Ocean Office Automation
+1064 Alcatel Cit
+1065 Texas Microsystems
+ 8139 Realtek 8139C Network Card
+1066 Picopower Technology (A division of National)
+ 0000 PT80C826 VL Bridge
+ 0001 PT86C521 Vesuvius V1-LS System Controller
+ 0002 PT86C523 Vesuvius V3-LS PCI to ISA Bridge
+ 0003 PT80C524 PCI to PCI Bridge [Nile]
+ 0004 PT80C525 PCI to PCI Bridge [Nile-II]
+ 0005 National PC87550 System Controller
+ 8002 PT86C523 Vesuvius V3-LS ISA Bridge
+1067 Mitsubishi Electronics
+ 0301 AccelGraphics AccelECLIPSE
+ 0304 AccelGALAXY A2100 [OEM Evans & Sutherland]
+ 0308 Tornado 3000 [OEM Evans & Sutherland]
+ 1002 VG500 [VolumePro Volume Rendering Accelerator]
+1068 Diversified Technology
+1069 Mylex Corp
+ 0001 DAC960P Wide-SCSI RAID Controller
+ 0002 DAC960PD RAID Controller
+ 0010 DAC960PG/PJ/PR/PT/PTL1/PRL RAID Controller
+ 0020 DAC960LA
+ 0050 AcceleRAID Disk Array
+ B166 AcceleRAID 600/500/400/Sapphire Support Device
+ BA55 eXtremeRAID support Device
+ BA56 eXtremeRAID Disk Array
+ BA57 eXtremeRAID 4000/5000 support Device
+106A Aten Research Inc.
+106B Apple Computer Inc.
+ 0001 Bandit PowerPC Host-PCI Bridge
+ 0002 Grand Central I/O Controller
+ 0003 Control Video
+ 0004 PlanB Video-in
+ 0007 OHare I/O Controller
+ 000C DOS on Mac
+ 000E Hydra Mac I/O Controller
+ 0010 Heathrow Mac I/O Controller
+ 0017 Paddington Mac I/O Controller
+ 0018 UniNorth FireWire Controller
+ 0019 KeyLargo USB
+ 001E UniNorth Internal PCI
+ 001F UniNorth Host-PCI bridge
+ 0020 UniNorth AGP interface
+ 0021 UniNorth GMAC
+ 0022 Keylargo Mac I/O Controller
+ 0024 GMAC Ethernet Controller
+ 0025 Pangea I/O Controller
+ 0026 Pangea USB Interface
+ 0027 Pangea AGP interface
+ 0028 Pangea CPU to PCI Bridge
+ 0029 Pangea CPU to PCI Bridge
+ 002D UniNorth 1.5 AGP Bridge
+ 002E UniNorth 1.5 PCI Bridge
+ 002F UniNorth 1.5 Internal PCI
+ 0030 UniNorth/Pangea FireWire Controller
+ 0031 UniNorth 2 FireWire
+ 0032 UniNorth 2 GMAC (Sun GEM)
+ 0033 UniNorth 2 ATA/100
+ 0034 UniNorth 2 AGP
+ 0035 UniNorth 2 PCI
+ 0036 UniNorth 2 Internal PCI
+ 003B Intrepid Integrated ATA Controller
+ 003E KeyLargo/Intrepid Mac I/O
+ 003F KeyLargo/Intrepid USB
+ 0040 K2 KeyLargo USB
+ 0041 K2 KeyLargo Mac/IO
+ 0042 K2 FireWire
+ 0043 K2 ATA/100
+ 0045 K2 HT-PCI Bridge
+ 0046 K2 HT-PCI Bridge
+ 0047 K2 HT-PCI Bridge
+ 0048 K2 HT-PCI Bridge
+ 0049 K2 HT-PCI Bridge
+ 004B U3 AGP
+ 004C K2 GMAC (Sun GEM)
+ 004F Shasta Mac I/O controler
+ 0050 Shasta IDE controler
+ 0051 Shasta Sungem ethernet controler
+ 0052 Shasta Firewire controler
+ 0053 Shasta PCI Bridge
+ 0054 Shasta PCI Bridge
+ 0055 Shasta PCI Bridge
+ 0058 U3L AGP Bridge
+ 0059 U3H AGP Bridge
+ 0066 Intrepid2 AGP Bridge
+ 0067 Intrepid2 PCI Bridge
+ 0068 Intrepid2 PCI Bridge
+ 0069 Intrepid2 ATA/100
+ 006A Intrepid2 Firewire
+ 006B Intrepid2 GMAC (Sun GEM)
+ 1645 Tigon3 Gigabit Ethernet NIC (BCM5701)
+106C Hyundai Electronics America
+ 8801 Dual Pentium ISA/PCI Motherboard
+ 8802 P54C Tr8 PowerPC ISA/PCI Motherboard
+ 8803 Dual Window Graphics Accelerator
+ 8804 ht019a PCI LAN Controller
+ 8805 100-BaseT LAN Controller
+106D Sequent Computer Systems
+106E DFI Inc.
+ 4362 88E8053 Yukon PCI-E Gigabit Ethernet Controller (copper)
+106F City Gate Development LTD
+1070 Daewoo Telecom Ltd.
+1071 Mitac
+ 8160 8060B Mobile Platform
+1072 GIT Co. Ltd.
+1073 Yamaha Corporation
+ 0001 3D graphics Cntrlr
+ 0002 YGV615 RPA3 3D-Graphics Controller
+ 0003 YMF740 PCI Audio Controller
+ 0004 YMF754B PCI Audio Controller
+ 0005 DS1 DS1 Audio
+ 0006 DS1 DS1 Audio
+ 0008 DS1 DS1 Audio
+ 000A YMF740 DS-1L PCI Audio Controller
+ 000C YMF740C DS-1L PCI audio controller
+ 000D YMF724F Yamaha Onboard Sound System
+ 0010 YMF744B-V DS-1 PCI audio controller
+ 0012 YMF754B DS-1E PCI Audio Controller
+ 0020 744 DS-1 Audio
+ 1000 SW1000XG Sound system
+ 2000 DS2416 Digital Mixing Card
+1074 Nexgen Microsystems
+ 4E78 82C500/1 Nx586 Chipset
+1075 Advanced Integration Research
+1076 Chaintech Computer Co Ltd
+1077 QLogic Corporation
+ 1016 ISP10160 Single Channel Ultra3 SCSI Processor
+ 1020 QLA1020/104x Fast-Wide-SCSI "Fast!SCSI IQ" Host Adapter
+ 1022 ISP1022A Fast-Wide-SCSI Host Adapter
+ 1080 QLA1080 LVD SCSI Host Adapter
+ 1216 ISP12160 Dual Channel Ultra3 SCSI Processor
+ 1240 QLA12xx 60-Bit Dual Chanel SCSI Host Adapter
+ 1280 ISP1280 SCSI Host Adapter
+ 2020 ISP2020A Fast!SCSI Basic Adapter
+ 2100 QLA2100 SANblade 2100 64bit FC-AL Adapter
+ 2200 QLA2200 SANblade 2200 PCI FC-AL Adapter
+ 2300 QLA2300 SANblade 2300 64-bit FC-AL Adapter
+ 2312 QLA2312 SANblade 2300 64-bit FC-AL Adapter
+ 2322 QLA2322 Fibre Channel Adapter
+ 2422 ISP2422 QLogic PCI to Fibre Channel Host Adapter for QLA2460
+ 2432 ISP2432 Dual Channel 4G PCIe Fibre Channel Adapter
+ 3010 QLA3010 Network Adapter
+ 3022 QLA3022 Network Adapter
+ 4000 QLA4000 SANblade 4000 iSCSI Adapter
+ 4010 QLA4010 SANblade 4000 iSCSI Adapter
+ 4022 QLA4022 iSCSI TOE Adapter
+ 5432 QLogic Fibre Channel Adapter
+ 6312 QLA6312 Fibre Channel Adapter
+ 6322 QLA6322 Fibre Channel Adapter
+ 6422 EP2422 4-Gbps Fibre Channel to PCI-X 2.0 266MHz controller for Embedded Applications
+ 6432 EP2432 4-Gbps Fibre Channel to PCIe controller for Embedded Applications
+1078 Cyrix Corp (Now owned by VIA)
+ 0000 Cx5520 ISA Bridge Rev.0
+ 0001 MediaGXm MMX Cyrix Integrated CPU
+ 0002 Cx5520 ISA Bridge Rev.1
+ 0100 5530 Kahula/Geode Legacy ISA Bridge
+ 0101 Cx5530 SMI status and ACPI timer
+ 0102 5530 Kahula/Geode IDE Controller
+ 0103 5530 Kahula/Geode Audio
+ 0104 Cx5530 Video Controller
+ 0400 ZFMicro CPU to PCI Bridge
+ 0401 ZFMicro Power Management Controller
+ 0402 ZFMicro IDE Controller
+ 0403 ZFMicro Expansion Bus
+1079 I-Bus
+107A Networth
+107B Gateway 2000
+107C LG Electronics / Goldstar Co Ltd
+107D Leadtek Research
+ 0000 S3-805/P86C850 GUI Accelerator
+ 204D Winfast PX7800 GTX TDH [GeForce 7800 GTX]
+ 2134 WinFast 3D S320 II
+ 2971 WinFast A350 TDH MyViVo [GeForce FX 5900]
+107E Interphase Corp
+ 0001 FLIPPER FRED Local Bus I/F to PCI Peripheral
+ 0002 100 VG amylan Controller
+ 0004 5526 Fibre Channel Host Adapter
+ 0005 x526 Fibre Channel Host Adapter
+ 0008 4575/5525/5575/6575 (i)chipSAR+ 155 MBit ATM controller
+ 9003 5535-4P-BRI-ST
+ 9007 5535-4P-BRI-U
+ 9008 5535-1P-SR
+ 900C 5535-1P-SR-ST
+ 900E 5535-1P-SR-U
+ 9011 5535-1P-PRI
+ 9013 5535-2P-PRI
+ 9023 5535-4P-BRI-ST
+ 9027 5536-4P-BRI-U
+ 9031 5535-1P-PRI
+ 9033 5536-2P-PRI Adapter
+ 9060 6535 CompactPCI T1/E1/J1 Communications Controller
+ 9070 4538 PMC T1/E1/J1 Communications Controller
+ 9080 4532-002/005 PMC ATM Over OC-3/STM-1 Communications Controller
+ 9081 4532-001/004 PMC ATM Over OC-3/STM-1 Communications Controller
+ 9082 4532-000/003 PMC ATM Over OC-3/STM-1 Comm Controller
+ 9090 4531S-000/001 PMC ATM Over T3/E3 Communications Controller
+ 90A0 4539 PMC Quad T1/E1/J1 Communications Controller
+107F Data Technology Corporation
+ 0802 SL82c105 PCI EIDE Controller
+ 0803 EIDE Bus Master Controller
+ 0806 EIDE Controller
+ 1138 High Speed Parallel Port
+ 2015 EIDE Controller
+1080 Cypress Semiconductor
+ 0600 82C596/9 CPU to PCI & PCI to ISA Bridge
+ C691 Cypress CY7c68001
+ C693 82C693 PCI to ISA Bridge
+1081 Supermac Technology Inc
+ 0D47 2330 Radius PCI to NuBUS Bridge
+1082 EFA Corporation Of America
+1083 Forex Computer Corporation
+ 0001 FR710 PCI Enhanced IDE Adapter
+ 0613 Host Bridge (??)
+1084 Parador
+1085 Tulip Computers Int'l BV
+ 0001 UsbDgn Datalaster Interface for OBD automotive
+1086 J. Bond Computer Systems
+1087 Cache Computer
+1088 Microcomputer Systems (M) Son
+1089 Data General Corporation
+108A SBS Technologie (Was: Bit3 Computer)
+ 0001 Model 617 PCI-VME Bus Adapter
+ 0010 Model 618 VME Bridge
+ 0040 dataBLIZZARD
+ 3000 Model 2106 VME Bridge
+108C Oakleigh Systems Inc.
+108D Olicom
+ 0001 OC-3136/37 Token-Ring 16/4 PCI Adapter
+ 0002 OC-3139f Fastload 16/4 PCI/III Token Ring Adapter
+ 0004 OC-3139/3140 RapidFire Token-Ring 16/4 Adapter
+ 0005 OC-3250 GoCard Token Ring 16/4 Adapter
+ 0006 OC-3530 RapidFire Token Ring 100 Adapter
+ 0007 OC-3141 RapidFire Token Ring 16/4 Adapter
+ 0008 OC-3540 RapidFire HSTR 100/16/4 Adapter
+ 000A OC-3150 RapidFire Token-Ring 16/4 PCI Adapter
+ 0011 OC-2805 Ethernet Controller
+ 0012 OC-2325 Ethernet PCI/II 10/100 Controller
+ 0013 OC-2183/2185 PCI/II Ethernet Controller
+ 0014 OC-2326 Ethernet PCI/II 10/100 Controller
+ 0019 OC-2327/50 10/100 Ethernet Controller
+ 0021 OC-6151/52 155 Mbit ATM Adapter
+ 0022 ATM Adapter
+108E Sun Microsystems
+ 0001 SPARC EBUS
+ 1000 SPARC EBUS PCIO PCI I/O Controller
+ 1001 PCIO Happy Meal Ethernet
+ 1100 RIO EBUS
+ 1101 RIO GEM
+ 1102 RIO 1394
+ 1103 RIO USB
+ 1648 [bge] Gigabit Ethernet
+ 2BAD GEM Sun Gigabit Ethernet Card
+ 5000 SME2411 UltraSPARC-IIi Advanced PCI Bridge
+ 5043 SunPCI Co-processor
+ 7063 SunPCi PCI card with Intel or AMD processor
+ 8000 STP2223BGA UPA to PCI Bus Interface Module (U2P)
+ 8001 Schizo PCI Bus Module
+ 8002 Schizo+ PCI Bus Module
+ A000 UltraSPARC IIi Sabre
+ A001 UltraSPARC IIe Hummingbird
+ A801 Tomatillo PCI Bus Module
+ ABBA CE (Cassini Ethernet) 10/100/1000 Ethernet adapter
+108F Systemsoft Corporation
+1090 Encore Computer Corporation
+1091 Intergraph Corporation
+ 0020 3D Graphics Processor
+ 0021 3D graphics processor w/texturing
+ 0040 3D graphics frame buffer
+ 0041 3D graphics frame buffer
+ 0060 Proprietary bus Bridge
+ 00E4 Powerstorm 4D50T
+ 0720 Motion JPEG Codec
+ 07A0 Sun Expert3D-Lite Graphics Accelerator
+ 1091 Sun Expert3D Graphics Accelerator
+1092 Diamond Multimedia Systems
+ 00A0 SpeedStar Pro SE GUI Accelerator
+ 00A8 SpeedStar 64 GUI Accelerator
+ 0550 Viper V550
+ 08D4 Supra 2260 WinModem
+ 094C SupraExpress 56i Pro SupraExpress 56i Pro
+ 09C8 SUP2761 SupraExpress 56i Pro VCC
+ 1002 R6793-12 RS56-pci
+ 1092 Viper V330
+ 6120 Maximum DVD
+ 8810 Stealth SE GUI Accelerator
+ 8811 Stealth 64/SE GUI Accelerator
+ 8880 Stealth Video GUI Accelerator
+ 8881 Stealth Video GUI Accelerator
+ 88B0 Stealth 64 Video GUI Accelerator
+ 88B1 Stealth 64 Video GUI Accelerator
+ 88C0 Stealth 64 GUI Accelerator
+ 88C1 Stealth 64 GUI Accelerator
+ 88D0 Stealth 64 GUI Accelerator
+ 88D1 Stealth 64 GUI Accelerator
+ 88F0 Stealth 64 Video GUI Accelerator
+ 88F1 Stealth 64 Video GUI Accelerator
+ 9876 Supra Express 56i Pro CW #2
+ 9999 Monster Sound Diamand Technology DT0398
+1093 National Instruments
+ 0160 PCI-DIO-96 data adquisition input and output
+ 0161 PCI-1200 Multifunction data acquisition board
+ 0162 PCI-MIO-16XE-50 24MIO 6-03-2
+ 1150 PCI-DIO-32HS High Speed Digital I/O Board
+ 1170 PCI-MIO-16XE-10
+ 1180 PCI-MIO-16E-1
+ 1190 PCI-MIO-16E-4
+ 11B0 PXI-6070E
+ 11C0 PXI-6040E
+ 11D0 PXI-6030E
+ 11E0 PXI-6011E
+ 1270 PCI-6032E Multifunction Data Acquisition Card
+ 12B0 PCI-6534 High Speed DIO
+ 1310 PCI-6602 Data Acquisition Device
+ 1320 PXI-6533
+ 1330 PCI-6031E
+ 1340 PCI-6033E Multifunction Data Acquisition Card
+ 1350 PCI-6071E NI PCI-6071E Multifunction I/O & NI-DAQ
+ 1360 PXI-6602
+ 14E0 PCI-6110
+ 14F0 PCI-6111
+ 17D0 PCI-6503
+ 1870 PCI-6713
+ 1880 PCI-6711
+ 18B0 PCI-6052E
+ 2410 PCI-6733
+ 2890 PCI-6036E
+ 28B0 NI 6014 I/O Terminal NI-DAQ (Legacy) and NI-DAQmx
+ 2A60 PCI-6023E
+ 2A70 PCI-6024E Multifunction Data Acquisition Card
+ 2A80 PCI-6025E Multifunction Data Acquisition Card
+ 2C80 PCI-6035E
+ 2CA0 PCI-6034E Multifunction DAQ
+ 70A9 PCI-6528 Digital I/O at 60V
+ 70AF PCI-6221 16-Bit, 250 kS/s, 16 Analog Inputs
+ 70B8 PCI-6251 M Series High Speed Multifunction DAQ
+ 715D IMAQ-PCI-1426
+ B001 IMAQ-PCI-1408
+ B011 IMAQ-PXI-1408
+ B021 IMAQ-PCI-1424
+ B031 IMAQ-PCI-1413
+ B041 IMAQ-PCI-1407
+ B051 IMAQ-PXI-1407
+ B061 IMAQ-PCI-1411
+ B071 IMAQ-PCI-1422
+ B081 IMAQ-PXI-1422
+ B091 IMAQ-PXI-1411
+ C801 PCI-GPIB GPIB Controller Interface Board
+ C811 PCI-GPIB+
+ C821 PXI-GPIB
+ C831 PMC-GPIB
+ C840 PCI-GPIB
+ D130 PCI-232/2 2-port RS-232 Serial Interface Board
+1094 First International Computers
+1095 Silicon Image Inc (Was: CMD Technology Inc)
+ 0640 PCI-0640 EIDE Adapter (Single FIFO)
+ 0641 PCI0640 PCI EIDE Adapter with RAID 1
+ 0642 PCI-0642 EIDE Adapter with RAID 1
+ 0643 PCI0643 PCI EIDE controller
+ 0646 PCI-0646 EIDE Adapter (Single FIFO)
+ 0647 PCI0647 9738
+ 0648 PCI-648 Bus Master Ultra DMA PCI-IDE/ATA Chip
+ 0649 PCI-649 Ultra ATA/100 PCI to IDE/ATA Controller
+ 0650 PBC-0650A PCI Fast SCSI II Host Adapter
+ 0670 USB0670 USB Controller
+ 0673 USB0673 USB Controller
+ 0680 SiI 0680 (Was: PCI-0680) Ultra ATA133 EIDE Controller
+ 2455 SI3124 SATALink 4-Port PCI-X Host Controller
+ 3112 SiI 3112 SATALink/SATARaid Controller
+ 3114 Sil 3114 SATALink/SATARaid Controller
+ 3124 SiI 3124 PCI-X to Serial ATA Controller
+ 3132 SiI 3132 PCI Express (1x) to 2 Port SATA300
+ 3512 Sil 3512 SATALink/SATARaid Controller
+1096 Alacron
+ 1106 0x3059 0x47204005&RE
+1097 Appian Technology (ETMA)
+ 0038 EIDE Controller (single FIFO)
+1098 Quantum Designs H.K. Ltd
+ 0001 QD8500 EIDE Controller
+ 0002 QD8580 EIDE Controller
+1099 Samsung Electronics Co. Ltd.
+109A Packard Bell
+109B Gemlight Computer Ltd.
+109C Megachips Corporation
+109D Zida Technologies Ltd.
+109E Conexant (Was: Brooktree Corp)
+ 0350 BT848AKPF Bt848AKPF Brooktree Mediastream Controller rev.12
+ 0351 Bt849 Video Capture
+ 0369 Bt878/Fusion878A Video Capture
+ 036C Bt879(??) Video Capture
+ 036E Bt878/Fusion 878A Mediastream Controller
+ 036F Bt878khf Video Capture
+ 0370 Bt880 Video Capture (10 bit High qualtiy cap)
+ 0878 7610144D&REV_02\4&1F7DBC9F&0&09F0 TV Video Capture
+ 0879 Bt879khf Video Capture (Audio Section)
+ 0880 Bt880 Video Capture (Audio Section)
+ 109E BT848akpf bus
+ 2115 BtV 2115 Mera Lun BtV Mediastream Controller 9x
+ 2125 BtV 2125 BtV Mediastream Controller
+ 2164 BtV 2164 Display Adapter
+ 2165 BtV 2165 MediaStream Controller
+ 8230 BtV 8230 ATM Segment/Reassembly Controller (SRC)
+ 8471 Bt8471 32 Channel HDLC Controller
+ 8472 Bt8471/72 32/64-channel HDLC Controllers
+ 8474 Bt8474 128-channel HDLC Controller
+109F Trigem Computer Inc.
+10A0 Meidensha Corporation
+10A1 Juko Electronics Inc. Ltd.
+10A2 Quantum Corporation
+10A3 Everex Systems Inc.
+10A4 Globe Manufacturing Sales
+10A5 Racal Interlan
+10A6 Informtech Industrial
+10A7 Benchmarq
+10A8 Sierra Semiconductor
+ 0000 ? 64-bit GUI Accelerator
+10A9 Silicon Graphics
+ 0001 Crosstalk to PCI Bridge
+ 0002 Linc I/O Controller
+ 0003 IOC3 I/O Controller
+ 0004 O2 MACE
+ 0005 RAD Audio
+ 0006 HPCEX
+ 0007 RPCEX
+ 0008 DiVO VIP
+ 0009 Alteon Gigabit Ethernet
+ 0010 AMP Video I/O
+ 0011 GRIP
+ 0012 SGH PSHAC GSN
+ 1001 Magic Carpet
+ 1002 Lithium
+ 1003 Dual JPEG 1
+ 1004 Dual JPEG 2
+ 1005 Dual JPEG 3
+ 1006 Dual JPEG 4
+ 1007 Dual JPEG 5
+ 1008 Cesium
+ 2001 Fibre Channel
+ 2002 ASDE
+ 8001 O2 1394
+ 8002 G-net NT
+10AA ACC Microelectronics
+ 0000 ACC 2056/2188 CPU to PCI Bridge
+ 2051 Laptop Chipset CPU Bridge
+ 5842 Laptop Chipset ISA Bridge
+10AB Digicom
+10AC Honeywell IASD
+10AD Winbond Systems Labs
+ 0001 W83769F PCI EIDE Controller (Signle FIFO)
+ 0003 SL82C103 EIDE Controller
+ 0005 SL82C105 EIDE Busmaster Controller
+ 0103 sl82c103 PCI-ide mode 4.5 Cntrlr
+ 0105 W83789F Sonata bus master PCI-IDE controller
+ 0150 EIDE Controller
+ 0565 W83C553F/544F ISA Bridge
+10AE Cornerstone Technology
+ 0002 Graphics Controller
+10AF Micro Computer Systems Inc.
+ 0001 IDE Controller
+10B0 CardExpert Technology
+10B1 Cabletron Systems Inc.
+10B2 Raytheon Company
+10B3 Databook Inc.
+ 3106 DB87144 PCI to CardBus Bridge
+ B106 SMC34C90 PCI to CardBus Bridge
+10B4 STB Systems
+ 1B1D Velocity 128 3D
+10B5 PLX Technology Inc.
+ 0364 PCI9080RDK-RC32364 PCI Reference Design Kit for PCI 9080
+ 0401 PCI9080RDK-401B PCI Reference Design Kit for PCI 9080
+ 0480 IOP 480 Integrated PowerPC I/O Processor
+ 0860 PCI9080RDK-860 PCI Reference Design Kit for PCI 9080
+ 0960 PCI 9080RDK-960 PCI Reference Design Kit for PCI 9080
+ 1030 Gazel R685 ISDN card
+ 1054 Gazel R697 dual channel ISDN card
+ 1076 VScom PCI-800S 8 x RS-232 Controller
+ 1077 VScom PCI-400S 4 x RS-232 Controller
+ 1078 PCI 9050 Vision Systems VScom PCI-210
+ 1103 PCI 9050 Vision Systems VScom PCI-200
+ 1146 PCI 9050 Vision Systems VScom PCI-010S
+ 1147 PCI 9050 Vision Systems VScom PCI-020S
+ 1151 Gazel R753 ISDN card
+ 1152 Gazel R753 ISDN card
+ 1860 PCI9054RDK-860 PCI Reference Design Kit for PCI 9054
+ 2021 PCI9080 used in Daktronics VMax Quad Tansmitter Card
+ 2288 Chrislin Industries Memory
+ 2724 Thales PCSM Security Card
+ 3001 PCI9030RDK-LITE PCI Reference Design Kit for PCI 9030
+ 30C1 cPCI9030RDK-LITE CompactPCI Reference Design Kit for PCI 9030
+ 5406 PCI9054RDK-LITE PCI Bus Master Prototyping Kit for PCI 9054
+ 5602 PCI9056RDk-Lite PCI 9056 Rapid Development Kit
+ 56C2 cPCI9056RDK-860 CompactPCI Rapid Design kit for PCI 9056
+ 6466 GBP32 PCI Adaptive Switch Fabric Generator
+ 6520 PCI6520 PCI-X to PCI-X Bridge
+ 7709 PCI9080RDK-SH3 PCI Reference Design kit for PCI 9080
+ 8111 PEX 8111 PCI Express-to-PCI Bridge
+ 8516 PEX 8516 Versatile PCI Express Switch
+ 8532 PEX 8532 Versatile PCI Express Switch
+ 9030 PCI 9030 PCI SMARTarget I/O Accelerator
+ 9036 PCI9036 Interface chip - value 1k
+ 9050 PCI 9050 Target PCI Interface Chip - value 1k
+ 9052 PCI 9052 PCI 9052 Target PLX PCI Interface Chip
+ 9054 PCI 9054 PCI I/O Accelerator
+ 9056 PCI9056 66MHz PCI I/O Accelerator
+ 9060 PCI9060 PCI Bus Master Interface Chip
+ 906D PCI 9060SD PCI Bus Master Interface Chip
+ 906E PCI 9060ES PCI Bus Master Interface Chip
+ 9080 PCI 9080 High performance PCI to Local Bus chip
+ 9601 PCI9656RDK-Lite Rapid Development Kit for PCI 9656
+ 9610 PCI9610 64 bit 66MHz PCI Master I/O Accelerator
+ 9656 PCI9656 64 bit 66MHz PCI I/O Accelerator
+ 96C2 cPCI 9656RDK-860 CompactPCI Rapid Development Kit
+ A001 GTEK Jetport II 2 port serial adapter
+ A100 Blackmagic DeckLink
+ A106 Blackmagic DeckLink
+ C001 GTEK/Cronyx Omega-PCI 8/16/32 port serial adapter
+ C860 cPCI 9054RDK-860 CompactPCI Reference Design Kit for PCI 9054
+10B6 Madge Networks
+ 0001 Smart 16/4 Ringnode (PCI1b)
+ 0002 Smart 16/4 Ringnode (PCIBM2/CardBus)
+ 0003 Smart 16/4 Ringnode (Knossos Series)
+ 0004 Smart 16/4 Ringnode Mk1 (PCIBM1)
+ 0006 16/4 CardBus Adapter (Eric 2)
+ 0007 Presto PCI
+ 0009 Smart 100/16/4 PCi-HS Ringnode
+ 000A Smart 100/16/4 PCI Ringnode
+ 000B 16/4 CardBus Adapter Mk2
+ 1000 Collage 25 ATM Adapter
+ 1001 Collage 155 ATM Adapter
+ 1002 Ambassador ATM Adapter
+10B7 3COM Corp, Networking Division
+ 0001 3C985 1000BaseSX Gigabit Ethernet Adapter
+ 0013 AR5212 802.11abg NIC (3CRDAG675)
+ 0910 3C910-A01
+ 1000 3C905CX-TXNM 3COM 3C905CX-TXNM with 40-0664-003 ASIC
+ 1006 14e4:1645 Broadcom Corporation NetXtreme BCM5701 Gigabit Ethernet
+ 1007 3C556 V.90 Mini-PCI Modem
+ 1201 3c982-TXM 10/100baseTX Dual Port A [Hydra]
+ 1202 3c982-TXM 10/100baseTX Dual Port B [Hydra]
+ 1700 3C940 Gigabit Ethernet PCI CODEC
+ 1F1F 3CRWE777A AirConnect Wireless LAN PCI Card
+ 3390 3C339 Token Link Velocity
+ 3590 3C359 TokenLink Velocity XL Adapter
+ 4500 3c450 Cyclone/unknown
+ 5055 3C555 Laptop Hurricane
+ 5057 3C575 Megahertz 10/100 LAN CardBus PC Card
+ 5157 3C575B Megahertz 10/100 LAN CardBus PC Card
+ 5257 3CCFE575CT Cyclone Fast Ethernet CardBus PC Card
+ 5900 3C590 Ethernet III Bus Fast PCI
+ 5920 3C592 PCI/EISA 10Mbps Demon/Vortex
+ 5950 3C595 PCI Ethernet Adapter 100bTX
+ 5951 3C595 PCI Ethernet Adapter 100bT4
+ 5952 3C595 PCI Ethernet Adapter 100b-MII
+ 5970 3C597 PCI/EISA 10/100 Demon/Vortex
+ 5B57 3C595 Megahertz 10/100 LAN CardBus
+ 6000 3CRSHPW796 [OfficeConnect Wireless CardBus]
+ 6001 3CRWE154G72 [Office Connect Wireless LAN Adapter]
+ 6055 3C556 10/100 Mini PCI Fast Ethernet Adapter
+ 6056 3CN3AC1556B MiniPCI 10/100 Ethernet+Modem56k (see devid:1007)
+ 6560 3CCFE656 Cyclone Ethernet+56k Modem CardBus PC Card
+ 6561 FEM656 10/100 LAN+56K Modem CardBus PC Card
+ 6562 3CCFEM656 [id 6562] Cyclone CardBus PC Card
+ 6563 FEM656B 10/100 LAN+56K Modem CardBus PC Card
+ 6564 3CCFEM656 Cyclone CardBus PC Card
+ 6565 3CCFEM656C Global 10/100 Fast Ethernet+56K Modem CardBus PC Card
+ 7646 3CSOHO100B-TX Hurricane
+ 7770 ??? AirConnect Wireless PCI
+ 7940 3c803 FDDILink UTP Controller
+ 7980 3c804 FDDILink SAS Controller
+ 7990 3c805 FDDILink DAS Controller
+ 80EB 3c940B 10/100/1000Base-T
+ 8811 Token Ring Adapter
+ 9000 3C900-TPO Fast Etherlink PCI TPO NIC
+ 9001 3C900-COMBO Fast Etherlink XL PCI Combo NIC
+ 9004 3C900B-TPO Etherlink XL TPO 10Mb
+ 9005 3C900B-COMBO Fast Etherlink 10Mbps Combo NIC
+ 9006 3C900B-TPC EtherLink XL TPC
+ 900A 3C900B-FL EtherLink PCI Fiber NIC
+ 9050 3C905B - Combo Fast Etherlink XL PCI 10/100
+ 9051 3C905-T4 Fast Etherlink XL 10/100
+ 9054 3C905B-TX Fast Etherlink XL PCI
+ 9055 3C905-TX Fast Etherlink 10/100 PCI TX NIC
+ 9056 3C905B-T4 Fast EtherLink XL 10/100
+ 9058 3C905B-COMBO Deluxe EtherLink 10/100 PCI Combo NIC
+ 905A 3C905B-FX Fast Etherlink XL Fiber 10/100
+ 9200 3C905 CX-TX-M Fast EtherLink for PC Management NIC
+ 9201 3C920B-EMB Integrated Fast Ethernet Controller
+ 9202 3C920B-EMB-WNM Integrated Fast Ethernet Controller
+ 9210 3C920B-EMB-WNM Integrated Fast Ethernet Controller
+ 9300 3C910 Integrated Fast Ethernet Controller (3CSOHO100B-TX Compatible)
+ 9800 3C980-TX Fast EtherLink XL Server Adapter2
+ 9805 3C980-TX 10/100baseTX NIC [Python-T]
+ 9900 3C990-TX [Typhoon]
+ 9902 3CR990-TX-95 EtherLink 10/100 PCI with 3XP Processor
+ 9903 3CR990-TX-97 EtherLink 10/100 PCI with 3XP Processor
+ 9904 3CR990B-TM-X Etherlink 10/100 with 3XP Processor
+ 9905 3C990B-FX 100FX PCI Server NIC w/3XP
+ 9908 3CR990SVR95 Etherlink 10/100 Server with 3XP Processor
+ 9909 3CR990SVR97 Etherlink 10/100 Server with 3XP Processor
+ 990A EC990BSVR Etherlink 10/100 Server with 3XP Processor
+ 990B 3C990SVR [Typhoon Server]
+ D004 3C900B-TPO EtherLink XL PCI
+10B8 Standard Microsystems Corp (SMC,SMSC)
+ 0005 LAN83C170QF/171 EPIC/XF 10/100 Mbps Fast Ethernet Ctrlr
+ 0006 LAN83C175 EPIC/C Ethernet CardBus Integrated Ctrlr
+ 1000 37C665 FDC
+ 1001 37C922 FDC
+ A011 83C170QF Fast ethernet controller
+ B106 SMC34C90 CardBus Controller
+10B9 Acer Labs Incorporated (ALi/ULi)
+ 0101 CMI8338/C3DX PCI Audio Device (OEM)
+ 0102 CMI8338/C3DX PCI Audio Device (OEM)
+ 0111 CMI8738/C3DX C-Media Audio Device (OEM)
+ 0780 ??? Multi-IO Card
+ 0782 ??? Multi-IO Card
+ 10B9 ALI M5273 A1 0539 TS05 CKB42321000B
+ 1435 ALI M1435 VL to PCI Bridge
+ 1445 ALI M1445 VL to PCI Bridge & Enhanced IDE Adapter
+ 1449 ALI M1449 PCI to ISA Bridge
+ 1451 M1451 Pentium CPU to PCI Bridge
+ 1461 ALI M1461 Pentium PCI Chipset
+ 1489 ALI M1489 486 PCI Chipset
+ 1511 M1511 Aladdin 2 Host Bridge
+ 1512 ALI M1512 Aladdin
+ 1513 M1513 Aladdin 2 South Bridge
+ 1521 ALI M1521 Aladdin III CPU to PCI Bridge
+ 1523 ALI M1523 ISA Bridge
+ 1531 ALI M1531 Aladdin IV/IV+ CPU to PCI Bridge
+ 1533 ALI M1533 Aladdin IV ISA Bridge
+ 1535 ALI M1535x ISA Bridge
+ 1541 ALI M1541 Aladdin V/V+ AGP System Controller
+ 1543 ALI M1543 PCI South Bridge Aladdin IV+/V
+ 1561 ALI M1561 Aladdin 7
+ 1563 ALI M1563 South Bridge with Hypertransport Support
+ 1567 ALI M1567 South Bridge with Hypertransport Support
+ 1573 ALI M1573 South Bridge with Hypertransport Support
+ 1575 ALI M1575 South Bridge with Hypertransport Support
+ 1621 ALI M1621 Aladdin Pro II AGP System Controller
+ 1631 ALI M1631 Aladdin Pro III AGP System Controller
+ 1632 ALI M1632 Aladdin i1 CyberBlade AGP System Controller
+ 1641 ALI M1641 Aladdin Pro IV AGP System Controller
+ 1644 ALI M1644 AGP System Controller
+ 1646 ALI M1646 AGP System Controller
+ 1647 ALI M1647 ALiMAGiK 1 AGP System Controller
+ 1651 ALI M1651 Aladdin Pro V AGP System Controller
+ 1661 ALI M1661 AGP System Controller
+ 1667 ALI M1667 AGP System Controller
+ 1671 ALI M1671 AGP System Controller
+ 1672 ALI M1672 AGP System Controller
+ 1681 M1681 P4 Nouth Bridge with HyperTransport
+ 1687 ALI M1687 K8 Northbridge with hypertransport
+ 1689 ULi M1689 K8 Northbridge with AGP and hypertransport
+ 1691 ALi M1691 Pentium 4/Pentium M Northbridge
+ 1695 ULi M1695 K8 Northbridge with PCIe and hypertransport
+ 3141 ALI M3141 GUI Accelerator 2Mb
+ 3143 ALI M3143 GUI Accelerator 2Mb + DAC
+ 3145 ALI M3145 GUI Accelerator 2Mb
+ 3147 ALI M3147 GUI Accelerator 2Mb + DAC
+ 3149 ALI M3149 GUI Accelerator 4Mb
+ 3151 ALI M3151 GUI Accelerator 8Mb
+ 3307 ALI M3307 MPEG-1 Decoder
+ 3309 ALI M3309 MPEG Decoder
+ 5212 ALI M4803
+ 5215 ALI MS4803 PCI Enhanced IDE Controller
+ 5217 ALI M5217 I/O Controller
+ 5219 M5457 AC-Link Modem Interface Controller
+ 5225 ALI M5225 EIDE Controller
+ 5228 M5283 ATA/RAID Controller
+ 5229 M5229 Southbridge EIDE Controller
+ 5235 ALI M5235 I/O Controller
+ 5236 M5273 EHCI USB 2.0
+ 5237 M5273 A1 for windows win 98 OpenHCI 1.1 USB to 2.0
+ 5239 USB 2.0 Enhanced Host Controller
+ 5240 EIDE Controller
+ 5241 PCMCIA Bridge
+ 5242 General Purpose Controller
+ 5243 ALI M1541 PCI to AGP Bridge
+ 5244 Floppy Disk Controller
+ 5246 ULi AGP 3.0 Controller
+ 5247 ALI M1621 PCI to AGP Bridge
+ 5249 M5249 HyperTransport to PCI Bridge
+ 524B ALi PCIe Bridge
+ 524C ALi PCIe Bridge
+ 5251 M5251 IEEE P1394 OpenHCI 1.0 Controller
+ 5253 M5253 IEEE P1394 OpenHCI 1.0 Controller
+ 5261 ALI M5261 Fast Ethernet Controller
+ 5263 ULi M5263 Fast Ethernet Controller
+ 5281 M5281 ALI M5281 SATA/RAID Controller
+ 5287 52871849 ALI SATA controller
+ 5288 M5288 SATA Controller
+ 5289 ALi M5289 SATA/RAID Controller
+ 5427 ALI PCI to AGP Bridge
+ 5450 Agere Systems AC'97 Modem
+ 5451 ALI M5451 PCI AC-Link Controller Audio Device
+ 5453 ALI M5453 PCI AC-Link Controller Modem Device
+ 5455 M1563M Southbridge AC'97 Audio Controller
+ 5457 M1563M AC97 Modem controller
+ 5459 56k Voice Modem
+ 545A 56K Voice Modem
+ 5461 ?? Microsoft UAA Bus Driver for High Definition Audio
+ 5471 M1563M Southbridge Memory Stick Host
+ 5473 M1563M Southbridge MMC/SD controller
+ 7101 ALI M7101 Power Management Controller
+ 7471 M1563M Southbridge Memory Stick Host
+ 9876 mdv92xp xhcth700000b
+10BA Mitsubishi Electronics Corp.
+ 0301 GUI Accelerator
+ 0304 AccelGALAXY A2100
+10BB Dapha Electronics Corporation
+10BC Advanced Logic Research Inc.
+10BD Surecom Technology
+ 0803 MYSON Technology Inc SURECOM EP-320X-S 100/10M Et Ethernet PCI Adapter
+ 0E34 NE34 Ethernet Adapter (NE2000 PCI clone)
+ 5240 0055 IDE Cntrlr
+ 5241 PCMCIA Bridge
+ 5242 General Purpose Controller
+ 5243 00000000 Bus Cntrlr
+ 5244 Floppy Disk Controller
+ 8139 surecom EP-320X-R adapter with realtek 8139c chip realtek 8139c
+10BE Tsenglabs International Corp.
+10BF MOST Corp.
+10C0 Boca Research Inc.
+10C1 ICM Corp. Ltd.
+10C2 Auspex Systems Inc.
+10C3 Samsung Semiconductor Inc
+ 1100 SmartEther100 SC1100 LAN Adapter (i82557B)
+ 8920 KS8920 Fast Ethernet Adapter
+ 8925 KS8925 Fast Ethernet Adapter (??)
+10C4 Award Software International Inc
+10C5 Xerox Corporation
+10C6 Rambus Inc.
+10C7 Media Vision
+10C8 Neomagic Corporation
+ 0000 Graphics Controller
+ 0001 NM2070 MagicGraph 128
+ 0002 NM2090 MagicGraph 128V
+ 0003 NM2093 MagicGraph 128ZV Video Controller
+ 0004 NM2160 MagicGraph 128XD
+ 0005 NM2200 MagicMedia 256AV
+ 0006 NM2360 MagicMedia 256ZX / 256M6D
+ 0016 NM2380 MagicMedia 256XL+
+ 0025 NM2230 NeoMagic MagicMedia 256AV+
+ 0083 NM2097 Graphic Controller NeoMagic MagicGraph128ZV+
+ 8005 NM2200 MagicMedia 256AV Audio Device
+ 8006 NM2360 MagicMedia 256ZX Audio Device
+ 8016 NM2380 MagicMedia 256XL+ Audio Device
+10C9 Dataexpert Corporation
+10CA Fujitsu Microelectronic
+10CB Omron Corporation
+10CC Mentor Arc Inc
+ 0226 PCI to ISA Bridge
+ 0257 CPU to PCI Bridge
+ 0660 Articia S Host Bridge
+ 0661 Articia S PCI Bridge
+10CD Advanced System Products (AdvanSys)
+ 1100 ASC1100 PCI SCSI Host Adapter
+ 1200 ASC1200 PCI SCSI Host Adapter (Fast SCSI II)
+ 1300 ASC1300 PCI SCSI Host Adapter (Fast Wide SCSI II)
+ 2300 ASC2300 PCI SCSI Hode Adapter (Ultra-Wide SCSI II)
+ 2500 ASC38C0800/1600 PCI Ultra 80/160 SCSI Controllers
+ 4000 ASC30c0400 FireWire OHCI Single-Chip Controller
+10CE Radius Inc
+10CF Fujitsu Ltd.
+ 10C5 FMV-103 Serial Parallel Card
+ 2001 MB86605 PCI SCSI Host Adapter (Fast Wide SCSI II)
+ 2002 MB86606 Fast Wide SCSI Controller
+ 2005 MB86974 10/100 Fast Ethernet Adapter
+ 200C MB86974 IEEE1394 OpenHCI Controller
+ 2010 OHCI FireWire Controller
+ 2011 MPEG2 R-Engine (MPEG2 Hardware Encoder)
+ 2019 MB86295 Coral-P Graphics Chip
+ 201E MB86296 Coral-PA Graphics Chip
+10D0 Fujitsu Ltd
+10D1 FuturePlus Systems
+10D2 Molex Incorporated
+10D3 Jabil Circuit Inc.
+10D4 Hualon Microelectronics
+10D5 Autologic Inc.
+10D6 Cetia
+ FF51 0x0100 C87899D
+10D7 BCM Advanced Research
+10D8 Advanced Peripherals Labs
+10D9 Macronix International Co. Ltd.
+ 0066 MX86101P sdas
+ 0431 MX98715
+ 0512 MX98713 Fast Ethernet Adapter (PN102TX)
+ 0531 MX98715/25 Single Chip Fast Ethernet NIC Controller
+ 0532 MX98723/727 PCI/CardBus Fast Ethernet Controller
+ 0553 MX987x5 Ethernet Adapter
+ 8625 MX86250 xiankasqudong
+ 8626 MX86251+3Dfx Voodoo Rush
+ 8627 MX86251+3Dfx Voodoo Rush
+ 8888 MX86250 9619E
+ C115 lc82c115
+10DA Thomas-Conrad Corp
+ 0508 TC4048 Token Ring
+ 3390 Tl3c3x9 Token Ring
+10DB Rohm LSI Research
+10DC CERN-European Lab. for Particle Physics
+ 0001 STAR/RD24 PCI-SCI PMC mezzanine
+ 0002 ATT 2C15-3 (FPGA) SCI bridge on PCI 5 Volt card
+ 0004 EP20S780 ALTERA STRATIX
+ 0010 680-1110-150/400 Simple PMC/PCI to S-LINK interface
+ 0011 680-1110-200/450 Simple S-LINK to PMC/PCI interface
+ 0012 S32PCI64 32-bit S-LINK to 64-bit PCI interface
+ 0021 HIPPI destination
+ 0022 HIPPI source
+ 0033 EP20KE (APEX-FPGA) ALICE DDL to PCI interface (RORC)
+ 0101 SL651 7057 C200 Acquisition card for the SPS Orbit System (MACI)
+ 016A XC4VFX100 CALICE ODR
+ 10DC ATT 2C15-3 (FPGA) TTC sr first TTC chip receiver PMC
+10DD Evans & Sutherland
+ 0001 3D Graphics Processor (?? Freedom GBbus??)
+ 0100 Lightning 1200
+10DE Nvidia Corp
+ 0008 NV1 EDGE 3D Accelerator [NV1]
+ 0009 NV1 EDGE 3D Multimedia [NV1]
+ 0010 Mutara V08 [NV2]
+ 0018 Riva 128 Graphics Accelerator [NV3]
+ 0019 Riva 128ZX GUI+3D Accelerator [NV3]
+ 0020 Riva TNT GUI+3D Accelerator [NV4]
+ 0028 NV5 TNT2 / TNT2 Pro
+ 0029 RIVA TNT2 Ultra [NVULTRA]
+ 002A Riva TNT2 [NV5]
+ 002B Riva TNT2 [NV5]
+ 002C VANTA / VANTA LT [NVVANTA]
+ 002D NV5 TNT2 Model 64 / TNT2 Model 64 Pro
+ 002E Vanta [NV6]
+ 002F Vanta [NV6]
+ 0030 nForce4 Intel Edition LPC Bridge
+ 0034 MCP04 SMBus Controller
+ 0035 nForce4 Intel Edition Parallel ATA Controller
+ 0036 nForce4 Intel Edition Serial ATA Controller
+ 0037 MCP04 Ethernet Controller
+ 0038 MCP04 Ethernet Controller
+ 003A MCP04 AC'97 Audio Controller
+ 003B MCP04 USB Controller
+ 003C MCP04 USB Controller
+ 003D MCP04 PCI Bridge
+ 003E nForce4 Intel Edition Serial ATA Controller
+ 003F nForce4 Intel Edition HyperTransport Registers
+ 0040 GeForce 6800 Ultra [NV40.0]
+ 0041 GeForce 6800 [NV40.1]
+ 0042 GeForce 6800 LE [NV40.2]
+ 0043 GeForce 6800 XE [NV40.3]
+ 0044 GeForce 6800 XT
+ 0045 GeForce 6800 GT [NV40.5]
+ 0046 GeForce 6800 GT
+ 0047 GeForce 6800 GS
+ 0048 GeForce 6800 XT
+ 0049 NV40GL ???
+ 004D Quadro FX 4000 [NV40GL]
+ 004E Quadro FX 4000 [NV40GL]
+ 0050 nForce4 PCI to ISA Bridge
+ 0051 nForce4 ISA Bridge
+ 0052 nForce4 SMBus
+ 0053 NVidia nForce 4 SLI IDE Controller
+ 0054 NVidia nForce 4 SLI IDE Controller
+ 0055 NVidia nForce 4 SLI IDE Controller
+ 0056 nForce4 Ethernet Controller
+ 0057 nForce4 Ultra NVidia Network Bus Enumerator
+ 0058 nForce4 AC'97 Modem
+ 0059 Realtek ALC850 Realtek AC'97 Audio
+ 005A nForce4 USB Controller
+ 005B nForce4 USB 2.0 Controller
+ 005C nForce4 PCI Bridge
+ 005D nForce4 PCIe Bridge
+ 005E nForce4 Memory Controller
+ 005F nForce4 Memory Controller
+ 0060 nForce MCP2 ISA Bridge
+ 0064 nForce MCP-T SMBus Controller
+ 0065 nForce MCP2 EIDE Controller
+ 0066 nForce MCP-T Ethernet Adapter Chip 10/100/HD/FD-Autosense
+ 0067 nForce MCP2 OpenHCI USB Controller
+ 0068 nForce MCP2 EHCI USB 2.0 Controller
+ 0069 nForce AC'97 Modem
+ 006A nForce MCP-T Audio Codec Interface
+ 006B nForce MCP-T? Audio Processing Unit (Dolby Digital)
+ 006C nForce MCP-T CPU to PCI Bridge
+ 006D nForce MCP-T Audio Codec Interface
+ 006E nForce MCP2 OHCI Compliant IEEE 1394 Controller
+ 006F nForce4 Intel Edition Memory Registers
+ 0071 nForce4 Intel Edition CPU to PCI Bridge
+ 0075 nForce4 Intel Edition Memory Registers
+ 0076 nForce4 Intel Edition Memory Registers
+ 0078 nForce4 Intel Edition Memory Registers
+ 0079 nForce4 Intel Edition Memory Registers
+ 007A nForce4 Intel Edition Memory Registers
+ 007B nForce4 Intel Edition Memory Registers
+ 007C nForce4 Intel Edition Memory Registers
+ 007D nForce4 Intel Edition Memory Registers
+ 007E nForce4 Intel Edition PCIe Root Hub
+ 007F nForce4 Intel Edition Memory Registers
+ 0080 nForce MCP2S PCI to ISA Bridge
+ 0084 nForce MCP2S PCI System Management
+ 0085 nForce MCP2S Parallel ATA Controller
+ 0086 nForce MCP2A Ethernet Controller
+ 0087 nForce MCP2A USB Controller
+ 0088 nForce MCP2A USB Controller
+ 0089 nForce AC'97 Modem
+ 008A nForce AC'97 Audio Codec Interface
+ 008B nforce MCP2A PCI Bridge
+ 008C RLT8201BL Single-Port 10/100M Fast Ethernet PHYceiver
+ 008E nForce MCP2S Serial ATA Compatible Controller
+ 0090 GeForce 7800 GTX
+ 0091 GeForce 7800 GTX
+ 0092 NV47 (20x1,7vp) GeForce 7800GT
+ 0093 GeForce 7800 GS
+ 0095 GeForce 7800 SLI
+ 0098 GeForce Go 7800
+ 0099 GeForce Go 7800 GTX
+ 009C G70.1 Quadro FX 350M
+ 009D ? NVIDIA GPU Quadro FX 4500
+ 00A0 RIVA TNT2 Aladdin [NVA0]
+ 00B4 nForce4 Intel Edition Memory Registers
+ 00C0 GeForce 6800 GS [NV41.0]
+ 00C1 NV41.1 NVIDIA GeForce 6800
+ 00C2 GeForce 6800 LE [NV41.2]
+ 00C3 GeForce 6800 XT
+ 00C8 GeForce Go 6800 [NV41.8]
+ 00C9 GeForce Go 6800 Ultra [NV41.9]
+ 00CC NV41 Quadro FX 1400 Go
+ 00CD NV41GL Quadro FX 3450/4000 SDI
+ 00CE NV41GL NVIDIA Quadro FX1400
+ 00D0 nForce 3 LPC Bridge
+ 00D1 nForce 3 Host Bridge
+ 00D2 nForce 3? PCI-to-PCI Bridge
+ 00D3 nForce4 Memory Controller
+ 00D4 nForce MCp2 SMBus Controller
+ 00D5 nForce MCP3? Dual Channel PCI IDE Controller
+ 00D6 nForce MCP3? Networking Controller
+ 00D7 nForce MCP3? OpenHCD USB Host Controller
+ 00D8 nForce MCP3? Enhanced PCI to USB Host Controller
+ 00D9 nForce 3 Agere System PCI Soft Modem
+ 00DA nForce MCP3 Audio Codec Interface
+ 00DD nForce MCP3? PCI-to-PCI Bridge
+ 00DF Marvell 88E1111 Network adapter
+ 00E0 nForce3 250 LPC Interface Bridge
+ 00E1 nForce3 250 Host/PCI Bridge
+ 00E2 nForce3 250 AGP Host to PCI Bridge
+ 00E3 nForce3 250 Serial ATA Controller
+ 00E4 nForce3 250 PCI System Management
+ 00E5 nForce3 250 Parallel ATA Controller
+ 00E6 nForce3 Ethernet Controller
+ 00E7 nForce3 250 OpenHCD USB Controller
+ 00E8 nForce3 250 Enhanced PCI to USB Controller
+ 00E9 nForce3 AC'97 Modem
+ 00EA nForce3 AC'97 Audio Codec Interface
+ 00ED nForce3 250 PCI-PCI Bridge
+ 00EE nForce3 250 Serial ATA Controller
+ 00F0 NVBR02 ???
+ 00F1 NV43+BR02 GeForce 6600 GT AGP
+ 00F2 GeForce 6600 [NV43]
+ 00F3 GeForce 6200
+ 00F4 GeForce 6600 LE
+ 00F5 GeForce 7800 GS
+ 00F6 NV41 Geforce 6800GS
+ 00F8 NVBR02 NVIDIA Quadro FX 3400/4400
+ 00F9 GeForce 6800 Series GPU [BR02.1]
+ 00FA NVBR02.2 GeForce PCX 5750
+ 00FB NVBR02.3 GeForce PCX 5900
+ 00FC NVBR02.4 GeForce PCX 5300
+ 00FD NVBR02GL Quadro NVS 280 PCI-E
+ 00FE NVBR02GL Quadro FX 1300
+ 00FF NVBR02.7 GeForce PCX 4300
+ 0100 GeForce 256 [NV10]
+ 0101 GeForce 256 DDR [NV10DDR]
+ 0102 GeForce 256 Ultra [NV10]
+ 0103 Quadro (GeForce 256 GL) [NV10GL]
+ 0110 NV11 GeForce2 MX / MX 400
+ 0111 NV11DDR GeForce2 MX 100/200 (DDR)
+ 0112 NV11 GeForce2 Go / MX Ultra
+ 0113 NV11GL Quadro2 MXR / EX / Go
+ 0140 GeForce 6600 GT
+ 0141 NV43 NVIDIA GeForce 6600
+ 0142 GeForce 6600 LE
+ 0143 GeForce 6600 VE
+ 0144 GeForce 6600 GO
+ 0145 NV43 NVIDIA GeForce 6610 XL
+ 0146 Geforce Go 6600TE/6200TE [NV43]
+ 0147 GeForce 6700 XL
+ 0148 GeForce Go 6600 [NV43]
+ 0149 GeForce Go 6600 [NV43]
+ 014A Quadro NVS 440
+ 014C Quadro FX 540 MXM
+ 014D Quadro FX 550
+ 014E NV43 NVIDIA Quadro FX 540
+ 014F NV43 NVIDIA GeForce 6200
+ 0150 NV15 GeForce2 GTS / Pro
+ 0151 GeForce2 Ti (DDR) [NV15DDR]
+ 0152 GeForce2 Ultra (BladeRunner) [NV15BR]
+ 0153 Quadro2 Pro [NV15GL]
+ 0160 GeForce 6500
+ 0161 GeForce 6200 TurboCache(TM)
+ 0162 NV44? GeForce 6200SE TurboCache
+ 0163 GeForce 6200 LE
+ 0164 NV44? GeForce FX 6200 Go
+ 0165 NVS285 Quadro NVS 285
+ 0166 GeForce Go 6400 [NV43]
+ 0167 GeForce Go 6200/6400
+ 0168 GeForce Go 6200/6400 [NV43]
+ 0169 GeForce 6250
+ 016A GeForce 7100 GS
+ 0170 GeForce4 MX 460 [NV17.1]
+ 0171 GeForce4 MX 440 [NV17.2]
+ 0172 GeForce4 MX 420 [NV17.3]
+ 0173 GeForce4 MX 440-SE [NV17.4]
+ 0174 NV17M GeForce4 440 Go 64MB
+ 0175 GeForce4 420 Go [NV17M]
+ 0176 GeForce4 420 Go 32M [NV17M]
+ 0177 GeForce4 460 Go [NV17M]
+ 0178 NV17GL.1 Quadro4 500/550 XGL
+ 0179 GeForce4 440 Go 64M [NV17M]
+ 017A NV17GL.2 Quadro4 200/400 NVS
+ 017B Quadro4 550 XGL [NV17GL.3]
+ 017C Quadro4 500 Go GL [NV17M-GL]
+ 017D GeForce4 410 Go [NV17]
+ 0180 GeForce4 MX 440 with AGP 8X [NV18]
+ 0181 NV18B NVIDIA GeForce MX440 with AGP8X
+ 0182 GeForce4 MX 440SE with AGP 8X [NV18.3]
+ 0183 GeForce4 MX 420 with AGP 8X [NV18.4]
+ 0184 GeForce4 MX [NV18]
+ 0185 NV18.6 GeForce4 MX 4000
+ 0186 GeForce4 448 Go [NV18M]
+ 0187 nv18m Geforce4 488 Go
+ 0188 Quadro4 580 XGL [NV18GL.1]
+ 018A Quadro NVS with AGP 8x [NV18GL.2]
+ 018B Quadro4 380 XGL [NV18GL.3]
+ 018C Quadro NVS 50 PCI
+ 018D GeForce4 448 Go [NV18M]
+ 0191 G80 Geforce 8800GTX 768MB
+ 0193 GeForce 8800 GTS
+ 019D G80 Nvidia Quadro FX 5600
+ 019E G80 Nvidia Quadro FX4600
+ 01A0 GeForce2 Integrated Graphics [NVCrush11]
+ 01A4 nForce AGP Controller
+ 01A5 nForce AGP Controller
+ 01A6 nForce AGP Controller
+ 01A8 nForce 220 Memory Controller (SDR)
+ 01A9 nForce 420 Memory Controller (SDR)
+ 01AA nForce 220/230 Memory Controller (DDR)
+ 01AB nForce 415/420/430 Memory Controller (DDR)
+ 01AC nForce 220/230/415/420/430 Memory Controller
+ 01AD nForce 220/230/415/420/430 Memory Controller
+ 01B0 nForce MCP Audio Processing Unit (Dolby Digital)
+ 01B1 nForce MCP Audio Codec Interface
+ 01B2 nForce HUB Interface
+ 01B4 nForce MCP SMBus Controller
+ 01B7 nForce AGP Bridge
+ 01B8 nForce PCI Bridge
+ 01BC nForce MCP ATA Controller
+ 01C1 nForce PC97 Modem (Intel 537)
+ 01C2 nForce MCP OHCI USB Controller
+ 01C3 nForce MCP Networking Adapter
+ 01D0 GeForce 7350 LE
+ 01D1 GeForce 7300 LE
+ 01D3 GeForce 7300 SE
+ 01D6 GeForce Go 7200
+ 01D7 Quadro NVS 110M / GeForce Go 7300
+ 01D8 Quadro NVS 120M / GeForce Go 7400
+ 01DA Quadro NVS 110M
+ 01DB Quadro NVS 120M
+ 01DC nvidia mobile graphics NVIDIA Quadro FX 350M
+ 01DD GeForce 7500 LE
+ 01DE Quadro FX 350
+ 01DF GeForce 7300 GS
+ 01E0 nForce2 AGP Controller
+ 01E1 nForce2 AGP Controller
+ 01E8 nForce2 AGP Host to PCI Bridge
+ 01EA nForce2 Memory Controller 0
+ 01EB nForce2 Memory Controller 1
+ 01EC nForce2 Memory Controller 2
+ 01ED nForce2 Memory Controller 3
+ 01EE nForce2 Memory Controller 4
+ 01EF nForce2 Memory Controller 5
+ 01F0 GeForce4 MX Integrated GPU
+ 0200 GeForce3 [NV20]
+ 0201 GeForce3 Ti200 [NV20.1]
+ 0202 GeForce3 Ti500 [NV20.2]
+ 0203 Quadro DCC [NV20DCC]
+ 0211 GeForce 6800
+ 0212 GeForce 6800 LE
+ 0215 GeForce 6800 GT
+ 0218 GeForce 6800 XT
+ 0221 GeForce 6200
+ 0222 GeForce 6200 A-LE
+ 0240 GeForce 6150
+ 0241 NVS 210S nVidia GForce 6150, build in DELL Optiplex 740 (AMD Processor)
+ 0242 GeForce 6100
+ 0243 C51 PCIe Bridge
+ 0244 C51 PCIe Bridge
+ 0245 Quadro NVS 210S/GeForce 6150LE
+ 0246 C51 PCIe Bridge
+ 0247 GeForce Go 6100
+ 0248 C51 PCIe Bridge
+ 0249 C51 PCIe Bridge
+ 024A C51 PCIe Bridge
+ 024B C51 PCIe Bridge
+ 024C C51 PCIe Bridge
+ 024D C51 PCIe Bridge
+ 024E C51 PCIe Bridge
+ 024F C51 PCIe Bridge
+ 0250 GeForce4 Ti 4600 [NV25.1]
+ 0251 GeForce4 Ti 4400 [NV25.2]
+ 0252 GeForce3 [NV25.3]
+ 0253 NVIDIA Corporation Geforce4 TI 4200 128 Mo
+ 0258 Quadro4 900 XGL [NV25GL.1]
+ 0259 Quadro4 750 XGL [NV25GL.2]
+ 025B Quadro4 700 XGL [NV25GL.4]
+ 0260 MCP51 LPC Bridge
+ 0261 MCP51 LPC Bridge
+ 0262 MCP51 LPC Bridge
+ 0263 MCP51 LPC Bridge
+ 0264 NVIDIA SMB Bus Controller NVIDIA nForce PCI System Management
+ 0265 MCP51 Parallel ATA Controller
+ 0266 MCP51 Serial ATA Controller
+ 0267 MCP51 Serial ATA Controller
+ 0268 MCP51 Ethernet Controller
+ 0269 MCP51 Network Bus Enumerator
+ 026A MCP51 MCI
+ 026B MCP51 AC'97 Audio Controller
+ 026C MCP51 High Definition Audio
+ 026D MCP51 USB Controller
+ 026E MCP51 USB Controller
+ 026F MCP51 PCI Bridge
+ 0270 MCP51 Host Bridge
+ 0271 MCP51 PMU
+ 0272 MCP51 Memory Controller 0
+ 027E C51 Memory Controller 2
+ 027F C51 Memory Controller 3
+ 0280 GeForce4 Ti 4800 [NV28.1]
+ 0281 GeForce4 Ti 4200 with AGP 8x [NV28.2]
+ 0282 GeForce4 Ti 4800 SE [NV28.3]
+ 0286 GeForce4 Ti 4200 Go AGP 8x [NV28]
+ 0288 Quadro4 980 XGL [NV28GL.1]
+ 0289 Quadro4 780 XGL [NV28GL.2]
+ 028C NV28GL Quadro4 700 GoGL
+ 0290 GeForce 7900 GTX
+ 0291 0x0401 BLISS GeForce 7900 GT bios
+ 0292 GeForce 7900 GS
+ 0293 GeForce 7900 GX2
+ 0294 GeForce 7950 GX2
+ 0295 GeForce 7950 GT
+ 0297 GeForce Go 7950 GTX
+ 0298 GeForce Go 7900 GS
+ 0299 GeForce Go 7900 GTX
+ 029A Quadro FX 2500M
+ 029B Quadro FX 1500M
+ 029C G71 Nvidia Quadro FX 5500
+ 029D G71 Quadro FX 3500
+ 029E Quadro FX 1500
+ 029F Quadro FX 4500 X2
+ 02A0 XBOX GeForce3 Integrated GPU [NV2A]
+ 02E0 ??? GeForce 7600 GT
+ 02E1 GeForce 7600 GS
+ 02E2 GeForce 7300 GT
+ 02F0 C51 Host Bridge
+ 02F1 C51 Host Bridge
+ 02F2 C51 Host Bridge
+ 02F3 C51 Host Bridge
+ 02F4 C51 Host Bridge
+ 02F5 C51 Host Bridge
+ 02F6 C51 Host Bridge
+ 02F7 C51 Host Bridge
+ 02F8 C51 Memory Controller 5
+ 02F9 C51 Memory Controller 4
+ 02FA C51 Memory Controller 0
+ 02FB C51 PCIe Bridge
+ 02FC C51 PCIe Bridge
+ 02FD C51 PCIe Bridge
+ 02FE C51 Memory Controller 1
+ 02FF C51 Host Bridge
+ 0300 GeForce FX [NV30.1]
+ 0301 GeForce FX 5800 Ultra [NV30.2]
+ 0302 GeForce FX 5800 [NV30.3]
+ 0308 Quadro FX 2000 [NV30GL.1]
+ 0309 Quadro FX 1000 [NV30GL.2]
+ 030A NV30GL ICE FX 2000
+ 0311 GeForce FX 5600 Ultra [NV31.1]
+ 0312 GeForce FX 5600 [NV31.2]
+ 0313 NV31? ???
+ 0314 GeForce FX 5600XT [NV31.4]
+ 0316 NV31
+ 0317 NV31
+ 0318 NV31GL.1 ???
+ 0319 NV31GL.2 ???
+ 031A NV31GL NVIDIA NV31GL
+ 031B NV31B NVIDIA GeForce FX Go5600
+ 031C NV31C NVIDIA Quadro FX Go700
+ 031D NV31
+ 031E NV31
+ 031F NV31
+ 0320 GeForce FX 5200
+ 0321 GeForce FX 5200 Ultra [NV34.2]
+ 0322 GeForce FX 5200 [NV34.3]
+ 0323 GeForce FX 5200LE [NV34.3]
+ 0324 NV31 nVidia GeForce FX Go 5200, 64MB
+ 0325 nv36m GeForce FX Go 5700
+ 0326 GeForce FX 5500 [NV34.6]
+ 0327 GeForce FX 5100 [NV34.7]
+ 0328 GeForce FX Go 5200 32M/64M
+ 0329 GeForce FX Go 5200 [NV34M]
+ 032A Quadro NVS 280 PCI [NV34GL.3]
+ 032B Quadro FX 500/600 [NV34GL.4]
+ 032C NV34GL NVIDIA NV34GL
+ 032D GeForce FX Go5100 [NV34M]
+ 032F NV34GL ???
+ 0330 GeForce FX 5900 Ultra [NV35.0]
+ 0331 GeForce FX 5900 [NV35.1]
+ 0332 GeForce FX 5900XT [NV35.2]
+ 0333 GeForce FX 5950 Ultra [NV35.3]
+ 0334 GeForce FX 5900ZT [NV35.4]
+ 0338 Quadro FX 3000 [NV35GL]
+ 033F Quadro FX 700 [NV35GL]
+ 0341 GeForce FX 5700 Ultra [NV36.1]
+ 0342 GeForce FX 5700 [NV36.2]
+ 0343 GeForce FX 5700LE [NV36.3]
+ 0344 GeForce FX 5700VE [NV36.4]
+ 0345 NV36.5 ???
+ 0347 GeForce FX Go 5700 [NV36]
+ 0348 GeForce FX Go 5600 [NV36M]
+ 0349 NV36
+ 034B NV36
+ 034C Quadro FX Go1000 [NV36]
+ 034E Quadro FX 1100 [NV36GL]
+ 034F NV36GL? ???
+ 0360 MCP55 LPC Bridge
+ 0361 MCP55 LPC Bridge
+ 0362 MCP55 LPC Bridge
+ 0363 MCP55 LPC Bridge
+ 0364 MCP55 LPC Bridge
+ 0365 MCP55 LPC Bridge
+ 0366 MCP55 LPC Bridge
+ 0367 MCP55 LPC Bridge
+ 0368 MCP55 SMBus
+ 0369 MCP55 Memory Controller
+ 036A MCP55 Memory Controller
+ 036B MCP55 SMU
+ 036C MCP55 USB Controller
+ 036D MCP55 USB Controller
+ 036E MCP55 IDE
+ 036F MCP55 Serial ATA Controller
+ 0370 MCP55 PCI bridge
+ 0371 ADI 1988B 8 Channel High Definition Audio
+ 0372 MCP55 Ethernet
+ 0373 MCP55 Ethernet
+ 0374 MCP55 PCIe bridge
+ 0375 MCP55 PCIe bridge
+ 0376 MCP55 PCIe bridge
+ 0377 MCP55 PCIe bridge
+ 0378 MCP55 PCIe bridge
+ 037A MCP55 Memory Controller
+ 037E MCP55 SATA Controller
+ 037F MCP55 SATA Controller
+ 0390 GeForce 7650 GS
+ 0391 GeForce 7600 GT
+ 0392 GeForce 7600 GS
+ 0393 GeForce 7300 GT
+ 0394 GeForce 7600 LE
+ 0395 GeForce 7300 GT
+ 0397 GeForce Go 7700
+ 0398 ff101179 31b7bfb9
+ 039B GeForce Go 7900 SE
+ 039C Quadro FX 550M
+ 039E Quadro FX 560
+ 03A0 C55 Host Bridge
+ 03A1 C55 Host Bridge
+ 03A2 C55 Host Bridge
+ 03A3 C55 Host Bridge
+ 03A4 C55 Host Bridge
+ 03A5 C55 Host Bridge
+ 03A6 C55 Host Bridge
+ 03A7 C55 Host Bridge
+ 03A8 C55 Memory Controller
+ 03A9 C55 Memory Controller
+ 03AA C55 Memory Controller
+ 03AB C55 Memory Controller
+ 03AC C55 Memory Controller
+ 03AD C55 Memory Controller
+ 03AE C55 Memory Controller
+ 03AF C55 Memory Controller
+ 03B0 C55 Memory Controller
+ 03B1 C55 Memory Controller
+ 03B2 C55 Memory Controller
+ 03B3 C55 Memory Controller
+ 03B4 C55 Memory Controller
+ 03B5 C55 Memory Controller
+ 03B6 C55 Memory Controller
+ 03B7 C55 PCIe bridge
+ 03B8 C55 PCIe bridge
+ 03B9 C55 PCIe bridge
+ 03BA C55 Memory Controller
+ 03BB C55 PCIe bridge
+ 03D0 GeForce 6100 nForce 430
+ 03D1 GeForce 6100 nForce 405
+ 03D2 GeForce 6100 nForce 400
+ 03D5 GeForce 6100 nForce 420
+ 03E0 MCP61 LPC Bridge
+ 03E1 MCP61 LPC Bridge
+ 03E2 MCP61 LPC Bridge
+ 03E3 MCP61 LPC Bridge
+ 03E4 MCP61 High Definition Audio
+ 03E5 MCP61 Ethernet
+ 03E6 MCP61 Ethernet
+ 03E7 MCP61 SATA Controller
+ 03E8 MCP61 PCIe bridge
+ 03E9 MCP61 PCIe bridge
+ 03EA MCP61 Memory Controller
+ 03EB MCP61 SMBus
+ 03EC MCP61 IDE
+ 03EE MCP61 Ethernet
+ 03EF MCP61 Ethernet
+ 03F0 MCP61 High Definition Audio
+ 03F1 MCP61 USB Controller
+ 03F2 MCP61 USB Controller
+ 03F3 MCP61 PCI bridge
+ 03F4 MCP61 SMU
+ 03F5 MCP61 Memory Controller
+ 03F6 MCP61 SATA Controller
+ 03F7 MCP61 SATA Controller
+ 0400 GeForce 8600 GTS
+ 0402 GeForce 8600 GT
+ 0407 GeForce 8600M GT
+ 0409 GeForce 8800M GS
+ 0421 G86 GeForce 8500 GT
+ 0422 GeForce 8400 GS
+ 0423 GeForce 8300 GS
+ 0425 GeForce 8600M GS
+ 0427 unknown Geforce 8600
+ 0428 GeForce 8400M G
+ 0429 Unknown nVidia Quadro FX 570M
+ 0440 MCP65 LPC Bridge
+ 0441 MCP65 LPC Bridge
+ 0442 MCP65 LPC Bridge
+ 0443 MCP65 LPC Bridge
+ 0444 MCP65 Memory Controller
+ 0445 MCP65 Memory Controller
+ 0446 MCP65 SMBus
+ 0447 MCP65 SMU
+ 0448 MCP65 IDE
+ 0449 MCP65 PCI bridge
+ 044A MCP65 High Definition Audio
+ 044B MCP65 High Definition Audio
+ 044C MCP65 AHCI Controller
+ 044D MCP65 AHCI Controller
+ 044E MCP65 AHCI Controller
+ 044F MCP65 AHCI Controller
+ 0450 MCP65 Ethernet
+ 0451 MCP65 Ethernet
+ 0452 MCP65 Ethernet
+ 0453 MCP65 Ethernet
+ 0454 MCP65 USB Controller
+ 0455 MCP65 USB Controller
+ 0456 MCP65 USB Controller
+ 0457 MCP65 USB Controller
+ 0458 MCP65 PCIe bridge
+ 0459 MCP65 PCIe bridge
+ 045A MCP65 PCIe bridge
+ 045C MCP65 SATA Controller
+ 045D MCP65 SATA Controller
+ 045E MCP65 SATA Controller
+ 045F MCP65 SATA Controller
+ 053A GeForce 7050 PV / nForce 630a
+ 053B GeForce 7050 PV / nForce 630a
+ 053E GeForce 7025 / nForce 630a
+ 10DE NV3 Riva 128
+10DF Emulex Corporation
+ 10DF Light Pulse Fibre Channel Adapter
+ 1AE5 LP6000 LightPulse Fibre Channel Host Adapter
+ 1AE6 LP 8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
+ 1AE7 LP 8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:2-3)
+ F005 LP1150e Fibre Channel Host Adapter
+ F085 LightPulse PCI Fibre Channel Host Adapter
+ F095 LightPulse PCI Fibre Channel Host Adapter
+ F098 LightPulse PCI Fibre Channel Host Adapter
+ F0A1 LightPulse PCI Fibre Channel Host Adapter
+ F0A5 PL1050Ex Emulex 1050EX FC HBA - 2GB PCI-EXPRESS
+ F0B5 Viper LightPulse Fibre Channel Host Adapter
+ F0D1 Helios LightPulse Fibre Channel Host Adapter
+ F0D5 LP1150 Fibre Channel Host Adapter
+ F0E1 Zephyr LightPulse Fibre Channel Host Adapter
+ F0E5 Zephyr LightPulse Fibre Channel Host Adapter
+ F0F5 Neptune LightPulse Fibre Channel Host Adapter
+ F0F6 LPX000 Fibre Channel Storport Driver
+ F0F7 LPX000 Fibre Channel Storport Driver
+ F100 LP11000e Fibre Channel Host Adapter
+ F700 LP7000 LightPulse Fibre Channel Host Adapter
+ F701 LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
+ F800 LP8000 LightPulse Fibre Channel Host Adapter
+ F801 LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
+ F900 LightPulse PCI Fibre Channel Host Adapter
+ F901 LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2)
+ F980 LP9802 / DC LP9802 & LP9802DC HBA adapter
+ F981 LP9802 Fibre Channel Host Adapter Alternate ID
+ F982 LP9802 Fibre Channel Host Adapter Alternate ID
+ FA00 LightPulse PCI Fibre Channel Host Adapter
+ FA01 LP101 Fibre Channel Host Adapter
+ FB00 LightPulse PCI Fibre Channel Host Adapter
+ FC00 Thor-X LightPulse Fibre Channel Host Adapter
+ FC10 Helios-X LightPulse Fibre Channel Host Adapter
+ FC20 Zephyr-X LightPulse Fibre Channel Host Adapter
+ FD00 L2A2860 HELIOS v1.11 Emulex LP11002
+ FD11 LPX000 Fibre Channel Storport Driver
+ FD12 LPX000 Fibre Channel Storport Driver
+ FE00 Zephyr-X LightPulse Fibre Channel Host Adapter
+ FE04 LPX000 Fibre Channel Storport Driver
+ FE11 LPX000 Fibre Channel Storport Driver
+ FE12 LPX000 Fibre Channel Storport Driver
+ FF00 Neptune LightPulse Fibre Channel Host Adapter
+10E0 Integrated Micro Solutions
+ 5026 IMS5026/27/28 P54C "Diamond" PCI Chipset
+ 5027 IMS5027
+ 5028 IMS5028 ISA Bridge
+ 8849 IMS8849/8 386/486 PCI Chipset
+ 8853 IMS8853 ATM Network Adapter
+ 9128 IMS9129 TwinTurbo 128 GUI Accelerator
+ 9135 IMS9135 TwinTurbo 128-3D Display Adapter
+10E1 Tekram Technology Corp. Ltd.
+ 0391 TRM-S1040
+ 690C DC-690c
+ DC20 DC-290 EIDE Controller
+ DC29 DC-290
+10E2 Aptix Corporation
+10E3 Tundra Semiconductor Corp.
+ 0000 CA91C042/142 Universe/II VMEbus Bridge
+ 0108 Tsi108 Host Bridge for Single PowerPC
+ 0148 Tundra Tsi148 PCI/X-to-VME Bridge
+ 0513 Tsi320 Dual-Mode PCI-to-PCI Bus Bridge
+ 0850 Tsi850 Power PC Dual PCI Host Bridge
+ 0854 Tsi850 Power PC Single PCI Host Bridge
+ 0860 CA91C860 Qspan PCI to Motorola Processor Bridge
+ 0862 CA91L862A QSpan II PCI to Motorola Processor Bridge
+ 8260 CA91L8200/8260 PowerSpan II PowerPC-to-PCI Bus Switch
+ 8261 CA91L8200/8260 PowerSpan II PowerPC to PCI Bus Switch (Single PCI Bus)
+ A108 Tsi109 Host Bridge for Dual PowerPC
+10E4 Tandem Computers
+10E5 Micro Industries Corporation
+10E6 Gainbery Computer Products Inc.
+10E7 Vadem
+10E8 Applied Micro Circuits Corp.
+ 2011 Q-Motion pci 264 Video Capture/Edit board
+ 4750 S5930/33/35 "Matchmaker" PCI Controller
+ 5920 S5920 32-Bit PCI Bus target interface
+ 8001 S5933 Daktronics VMax transmitter Card
+ 8033 BBK-PCI light Transputer Link Interface
+ 8043 LANai4.x Myrinet LANai interface chip
+ 8062 S5933 Parastation
+ 807D S5933 PCI44
+ 8088 FS Kingsberg Spacetec Format Synchronizer
+ 8089 SOB Kingsberg Spacetec Serial Output Board
+ 809C S5933 Traquair HEPC3
+ 80B1 Data Fire Basic 4MB PCI Active ISDN Controller
+ 80D7 PCI-9112 Data Acquisition Card (ADLINK)
+ 80D8 PCI-7200 40MB/s 32-channels Digital I/O card (ADLINK)
+ 80D9 PCI-9118 Data Acquisition Card (ADLINK)
+ 80DA PCI-9812
+ 811A PCI-DSlink PCI-IEEE1355-DS-DE interface
+ 814C Fastcom ESCC-PCI (Commtech, Inc)
+ 8170 S5933 "Matchmaker" PCI Chipset Development Tool
+ 81B7 S5933 AJAVideo NTV ITU-R.601 Video stillstore
+ 81E6 Multimedia video controller
+ 8291 Fastcom 232/8-PCI (Commtech, Inc)
+ 82AF CQ2240 Data Aquisition Card
+ 82C4 Fastcom 422/4-PCI (Commtech, Inc)
+ 82C5 Fastcom 422/2-PCI (Commtech, Inc)
+ 82C6 Fastcom IG422/1-PCI (Commtech, Inc)
+ 82C7 Fastcom IG232/2-PCI (Commtech, Inc)
+ 82CA Fastcom 232/4-PCI (Commtech, Inc)
+ 82DB AJA HDNTV HD SDI Framestore
+ 82E2 Fastcom DIO24H-PCI (Commtech, Inc)
+ 8851 S5933 on Innes Corp FM Radio Capture card
+10E9 Alps Electronic Corp. Ltd.
+10EA Tvia Inc (Was: InterGraphics Systems (IGS))
+ 1680 IGA-1680 svga
+ 1682 IGA-1682 video
+ 1683 IGA-1683
+ 2000 CyberPro 2010 TV output ram 2MB Cyberpro2010
+ 2010 CyberPro 20xx/2000A vbcvbcvbcvb
+ 5000 CyberPro 5000
+ 5050 CyberPro 5050
+ 5202 CyberPro 5202
+ 5252 CyberPro 5252
+10EB Artists Graphics
+ 0101 3GA 64 bit graphics processor
+ 8111 Twist3 Frame Grabber
+10EC Realtek Semiconductor
+ 0139 rtl8139B ethernet 10/100
+ 0260 RTL260 Driver MS UAA for HD Audio
+ 0262 ALC882 Realtek High Definition Audio
+ 0880 al880 REALTEK ALC880
+ 0885 ALC885 7.1+2 Channel High-Performance HDA Codec with Content Protection
+ 8021 RTL8029AS NIC
+ 8029 RTL8029(as)pci ethernet nic windot XPse
+ 8119 10 32BIT Card Bus 10/100 (10EC-8119)
+ 8129 RTL8129 10/100 Fast Ethernet Controller
+ 8131 LFE8139ATX
+ 8136 RTL8139/810x Family Fast Ethernet NIC
+ 8138 RT8139 (B/C) CardBus Fast Ethernet Adapter
+ 8139 RT8139 (A/B/C/810x/813x/C+) Fast Ethernet Adapter
+ 8167 RTL8169/8110 Family Gigabit Ethernet NIC
+ 8168 RTL8168/8111 PCI-E Gigabit Ethernet NIC
+ 8169 RTL8110SB Single-Chip Gigabit LOM Ethernet Controller
+ 8180 RTL8180L IEEE 802.11b Wireless MAC and Baseband Processor
+ 8185 Extensible 802.11b/g Wireless Device
+ 8197 HSP56 MR Modem
+10ED Ascii Corporation
+ 7310 V7310 VGA Video Overlay Adapter
+10EE Xilinx Corporation
+ 0205 Wildcard TE205P
+ 0210 Wildcard TE210P
+ 0314 Spartan XC2S50E Communications Controller
+ 0405 Wildcard TE405P (2nd Gen)
+ 0410 Wildcard TE410P (2nd Gen)
+ 3FC0 RME Digi96
+ 3FC1 RME Digi96/8
+ 3FC2 RME Digi 96/8 Pro
+ 3FC3 RME Digi96/8 Pad RME Digi96/8 Pad
+ 3FC4 RME Digi9652 Hammerfall DSP
+ 3FC5 RME Digi9652 Hammerfall DSP
+ 3FC6 RME Hammerfall DSP MADI
+ 5343 Seamont SC100 Security Adapter
+ 8130 Durango PMC Virtex-II Bridge, XC2V1000-4FG456C
+ 8381 Ellips Santos Frame Grabber
+ D154 Copley Controls CAN card (PCI-CAN-02)
+10EF Racore Computer Products
+ 8154 M815x Token Ring Adapter
+10F0 Curtiss-Wright Controls Embedded Computing
+ A800 VCL-P Graphics board
+ B300 VCL-M graphics board
+10F1 Tyan Computer
+ 1566 IDE/SCSI
+ 1677 Multimedia
+ 2013 RS-56 sp-pci Conexant RS-56 PCI Modem
+ 2865 Tyan Thunder K8E S2865
+10F2 Achme Computer Inc. - GONE !!!!
+10F3 Alaris Inc.
+10F4 S-Mos Systems
+ 1300 rev1.1 PCI to S5U13x06B0B Bridge Adapter
+10F5 NKK Corporation
+ A001 NDR4000 NR4600 Bridge
+10F6 Creative Electronic Systems SA
+ 0111 CMI8738/C3DX CMI8738/C3DX Multimedia Audio Controller
+10F7 Matsushita Electric Industrial Corp Ltd
+10F8 Altos India Ltd.
+10F9 PC Direct
+10FA Truevision
+ 0000 BT848KPF GUI Accelerator
+ 0001 GUI Accelerator
+ 0002 GUI Accelerator
+ 0003 GUI Accelerator
+ 0004 GUI Accelerator
+ 0005 GUI Accelerator
+ 0006 GUI Accelerator
+ 0007 GUI Accelerator
+ 0008 GUI Accelerator
+ 0009 GUI Accelerator
+ 000A GUI Accelerator
+ 000B GUI Accelerator
+ 000C Targa 1000 Video Capture & Editing card
+ 000D GUI Accelerator
+ 000E GUI Accelerator
+ 000F GUI Accelerator
+ 0010 GUI Accelerator
+ 0011 GUI Accelerator
+ 0012 GUI Accelerator
+ 0013 GUI Accelerator
+ 0014 GUI Accelerator
+ 0015 GUI Accelerator
+10FB Thesys Microelectronic's
+ 186F TH 6255
+10FC I-O Data Device Inc.
+ 0003 Cardbus IDE Controller
+ 0005 Cardbus SCSI CBSC II
+ 8139 4020011B 10
+10FD Soyo Technology Corp. Ltd.
+10FE Fast Electronic GmbH
+10FF N-Cube
+1100 Jazz Multimedia
+ 3044 VT6306L IEEE1394 Firewire 3 Port PCI Card
+1101 Initio Corporation
+ 0002 INI-920 Ultra SCSI Adapter
+ 1060 INI-A100U2W Orchid Ultra-2 SCSI Controller
+ 134A Ultra SCSI Adapter
+ 1622 inic1620 S-ATA Adapter
+ 9100 INI-9010/9010W Fast Wide SCSI Controller
+ 9400 INIC-940 Fast Wide SCSI Controller
+ 9401 INIC-935 Fast Wide SCSI Controller
+ 9500 INIC-950 SCSI Controller
+ 9502 INIC-950P Ultrawide SCSI controller
+ 9700 Fast Wide SCSI Controller
+1102 Creative Technology LTD.
+ 0002 t4780010004541 Sound Blaster Live! (Also Live! 5.1) - OEM from DELL - CT4780
+ 0003 EMU8008 AWE64D OEM (CT4600)
+ 0004 Creative SB Audigy 2 ZS (WDM) Audigy Audio Processor
+ 0005 SB0460 SoundBlaster X-FI XtremeMusic
+ 0006 emu10k1x Soundblaster Live! 5.1
+ 0007 C6SB0410515017656A Audigy SE
+ 0008 Audigy Audio Processor
+ 1017 CT6760 3D Blaster Banshee PCI CT6760
+ 1020 NV5 3D Blaster RIVA TNT2
+ 1047 3D Blaster Annihilator 2
+ 1371 ES1371-3 ES1371, ES1373 AudioPCI
+ 2898 es2898 es56t-p1
+ 4001 EMU10K1 Audigy IEEE1394a Firewire Controller
+ 647D AC'97 Audio Device
+ 7002 EMU10000 Game Port
+ 7003 EMU10K2 Creative Labs SB Audigy MIDI/Game port
+ 7004 ??????? Game port for SB Live! Series
+ 7005 ??? Audigy LS Series Game Port
+ 7802 EMU1OK1-NGF Environmental Audio (SB Live)
+ 8064 SB0100 (SBLive! 5.1 OEM)
+ 8938 EV1938 Sound
+ 9838 Ectiva EV1938
+1103 Triones Technologies Inc. (HighPoint)
+ 0003 HPT343/5/6,HPT363 UDMA EIDE Controller
+ 0004 HPT3xx UDMA66/100/133 EIDE Controller
+ 0005 HPT372x UDMA/ATA133 RAID Controller
+ 0006 HPT302N UDMA/ATA133 RAID Controller
+ 0007 HPT371/N UDMA/ATA133 EIDE Controller
+ 0008 HPT374 Rocket 154x/1640, RocketRAID 154x/1640 RAID EIDE Controller
+ 0009 HPT372N UDMA/ATA133 RAID Controller (OEM)
+ 2300 RocketRAID 230x SATA Controller
+ 2310 RocketRAID 231x SATA Controller
+1104 Rasterops
+1105 Sigma Designs Inc.
+ 1105 REALmagic XCard MPEG 1/2/3/4 DVD Decoder
+ 5000 Multimedia
+ 8300 EM8300 MPEG-2 Decoder (REALmagic Hollywood Plus)
+ 8400 EM8400 MPEG-2 Decoder
+ 8401 EM8401 REALmagic DVD/MPEG-2 A/V Decoder
+ 8470 EM8470 REALmagic DVD/MPEG-4 A/V Decoder
+ 8471 EM8471 REALmagic DVD/MPEG-4 A/V Decoder
+ 8475 EM8475 MPEG-1/2/4 Decoder Card for Video & Audio
+ 8476 EM8476 REALmagic DVD/MPEG-4 A/V Decoder
+ 8485 EM8485 REALmagic DVD/MPEG-4 A/V Decoder
+ 8486 EM8486 REALmagic DVD/MPEG-4 A/V Decoder
+1106 VIA Technologies Inc
+ 0102 Embedded VIA Ethernet Controller
+ 0130 VT6305 VIA Fire 1394.A OHCI Link Layer Ctrlr
+ 0198 P4X600 CPU to PCI Bridge
+ 0204 K8M400 CPU to PCI Bridge
+ 0208 PT890 Standard Host Bridge
+ 0238 K8T890 CPU to PCI Bridge
+ 0258 PT880 CPU to PCI Bridge
+ 0259 PM880 CPU to PCI Bridge
+ 0269 KT880 CPU to PCI Bridge
+ 0282 K8T880Pro CPU to PCI Bridge
+ 0290 K8M890 Standard Host Bridge
+ 0293 PM896 Host Bridge
+ 0296 P4M800 Standard Host Bridge
+ 0305 VT8363/5 KT133/KM133 System Controller
+ 0308 PT894 Standard Host Bridge
+ 0314 CN700/VN800/P4M800CE/Pro Host Bridge
+ 0324 CX700 Host Bridge
+ 0327 P4M890 Standard Host Bridge
+ 0336 K8M890CE Host Bridge
+ 0340 PT900 Host Bridge
+ 0351 VT3351 Host Bridge
+ 0364 P4M900 Host Bridge
+ 0391 VT8371 KX133 System Controller
+ 0501 VT8501 Apollo MVP4 System Controller
+ 0505 VT82C505 VL to PCI Bridge
+ 0561 VT82C570 MV IDE Controller (Single FIFO)
+ 0571 VT82C586A/B/VT82C686/A/B/VT823x/A/C Bus Master IDE Controller
+ 0576 VT82C57x MV System Controller
+ 0581 Bus Master IDE Controller; CX700/VX700 RAID Controller
+ 0585 VT82C585 Apollo VP,VPX,VPX-97 System Controller
+ 0586 VT82C586/A/B PCI to ISA Bridge
+ 0591 VT8237A VIA VT8237A SATA RAID Controller
+ 0595 VT82C595 Apollo VP2,VP2-97 System Controller
+ 0596 VT82C596/A/B "Mobile South" PCI to ISA Bridge
+ 0597 VT82C597/597AT/598MVP Apollo VP3/MVP3 System Controller
+ 0598 VT82C598MVP Apollo MVP3 System Controller
+ 0601 VT8601 Apollo PLE133 CPU to PCI Bridge
+ 0605 VT8605 ProSavage PM133 System Controller
+ 0680 VT82C680 Apollo P6
+ 0686 VT82C686/A/B "Super South" PCI to ISA Bridge
+ 0691 VT82C691/693A/694X Apollo Pro/133/133A System Controller
+ 0692 Apollo Pro/BX Chipset
+ 0693 VT82C693 Apollo Pro Plus CPU to PCI Bridge
+ 0698 VT82C693A Apollo Pro133 AGP
+ 0926 VT86C926 Amazon NE2000-Compatible PCI Ethernet Controller
+ 1000 VT82C570 MV System Controller
+ 1106 VT82C570 MV IDE Controller
+ 1204 K8M400 CPU to PCI Bridge
+ 1208 PT890 Standard Host Bridge
+ 1238 K8T890 CPU to PCI Bridge
+ 1258 PT880 CPU to PCI Bridge
+ 1259 CN400/PM880 CPU to PCI Bridge
+ 1269 KT880 CPU to PCI Bridge
+ 1282 K8T880Pro CPU to PCI Bridge
+ 1290 K8M890 Standard Host Bridge
+ 1293 PM896 Host Bridge
+ 1296 P4M800 Standard Host Bridge
+ 1308 PT894 Standard Host Bridge
+ 1314 CN700/VN800/P4M800CE/Pro Standard Host Bridge
+ 1324 CX700 Host Bridge
+ 1327 P4M890 Standard Host Bridge
+ 1336 K8M890CE Host Bridge
+ 1340 PT900 Host Bridge
+ 1351 VT3351 Host Bridge
+ 1364 P4M900 Host Bridge
+ 1571 VT82C416 IDE Controller
+ 1595 VT82C595 Apollo VP2,VP2-97 System Controller
+ 1708 0x1708 VEN_1106&DEV_1708
+ 2006 VT6105M VIA Rhine III VT6105M Fast Ethernet controller
+ 2204 K8M400 CPU to PCI Bridge
+ 2208 PT890 Standard Host Bridge
+ 2238 K8T890 CPU to PCI Bridge
+ 2258 PT880 CPU to PCI Bridge
+ 2259 PM880 CPU to PCI Bridge
+ 2269 KT880 CPU to PCI Bridge
+ 2282 K8T880Pro CPU to PCI Bridge
+ 2290 K8M890 Standard Host Bridge
+ 2293 PM896 Host Bridge
+ 2296 P4M800 Standard Host Bridge
+ 2308 PT894 Standard Host Bridge
+ 2314 CN700/VN800/P4M800CE/Pro Standard Host Bridge
+ 2324 CX700 Host Bridge
+ 2327 P4M890 Standard Host Bridge
+ 2336 K8M890CE Host Bridge
+ 2340 PT900 Host Bridge
+ 2351 VT3351 Host Bridge
+ 2364 P4M900 Host Bridge
+ 287A VT8251 Standard PCI to PCI Bridge
+ 287B VT8251 Standard PCI to PCIe Bridge
+ 287C VT8251 Standard PCIe Root Port
+ 287D VT8251 Standard PCIe Root Port
+ 287E VT8251 Ultra VLINK Controller
+ 3022 CLE266
+ 3038 VT83C572, VT6202 VIA Rev 5 or later USB Universal Host Controller
+ 3040 VT83C572, VT86C586/A/B Power Management Controller
+ 3041 82C570MV ISA Bridge w/IDE
+ 3043 VT86C100A Rhine 10/100 Ethernet Adapter
+ 3044 VT6306 VIA Fire II IEEE-1394 OHCI Link Layer Controller
+ 3050 VT82C596/596A/596 Power Management and SMBus Controller
+ 3051 Power Management Controller
+ 3053 VT6105M Rhine III Management Adapter
+ 3057 VT82C686A/B ACPI Power Management Controller
+ 3058 VT8237 AC97 Audio Codec (All VIA Chipsets)
+ 3059 VT8237 AC97 Enhanced Audio Controller - the 8251 controller is different
+ 3065 VT6102 Rhine II PCI Fast Ethernet Controller||Used by GERICOM in laptop Webengine Advanced
+ 3068 VT82C686 ECS HSP56 VIA AC97 Modem riser
+ 3074 VT8233 PCI to ISA Bridge
+ 3086 VT82C686 Power Management Controller (??)
+ 3091 VT8633 Apollo Pro 266 CPU to PCI Bridge
+ 3099 VT8366/A,VT8367 Apollo KT266/A,KT333 CPU to PCI Bridge
+ 3101 VT8653 Apollo Pro 266T CPU to PCI Bridge
+ 3102 VT8362 ProSavage KN133 CPU to PCI Bridge
+ 3103 VT8615 CPU to PCI Bridge
+ 3104 VT6202/12 USB 2.0 Enhanced Host Controller
+ 3106 VT6105M/LOM Rhine III PCI Fast Ethernet Controller
+ 3107 VT8233/A AC97' Enhance Audio Controller PCI to ISA Bridge
+ 3108 Unknown Via Unichrome S3 VGA - part of a VIA Northbridge
+ 3109 VT8233/A AC97' Enhance Audio Controller PCI to ISA Bridge
+ 3112 VT8361 Apollo KLE133 System Controller
+ 3113 VPX/VPX2 PCI to PCI Bridge
+ 3116 VT8375 ProSavageDDR PM266/KM266 CPU to PCI Bridge
+ 3118 VIA/S3 Unichrome Pro VGA Adapter
+ 3119 VT6120/VT6121/VT6122 'Velocity' Gigabit Ethernet Controllers
+ 3122 VT8623 Apollo CLE266 CastleRock AGP 8X Controller
+ 3123 VT8623 Apollo CLE266 CastleRock CPU to PCI Bridge
+ 3128 VT8753 Apollo P4X266 System Controller
+ 3133 VT3133 CPU to PCI Bridge
+ 3147 VT8233A PCI to ISA Bridge
+ 3148 VT8751 ProSavageDDR P4M266 System Controller
+ 3149 VT8237 VT6410 SATA RAID Controller
+ 3156 VT8372 ProSavageDDR PN266/KN266 CPU to PCI Bridge
+ 3158 ProSavageDDR P4N266 CPU to PCI Bridge
+ 3164 VT6410 VIA VT6410 RAID Controller
+ 3168 VT8374 P4X400 Host Controller/AGP Bridge
+ 3177 VT8235 PCI to ISA Bridge
+ 3178 ProSavageDDR P4N333 CPU to PCI Bridge
+ 3188 Apollo K8T800 CPU to PCI Bridge
+ 3189 VT8377 Apollo KT400/A/600 CPU to PCI Bridge
+ 3198 ProSavageDDR P4X600 CPU to PCI Bridge
+ 3202 K8N400 CPU to PCI Bridge
+ 3204 1394 i2c CPU to PCI Bridge
+ 3205 KM400 CPU to PCI Bridge
+ 3208 P4X800 CPU to PCI Bridge
+ 3209 P4M400 CPU to PCI Bridge
+ 3213 VPX/VPX2 PCI to PCI Bridge
+ 3218 K8T800M CPU to PCI Bridge
+ 3227 VT8237 PCI-to-ISA Bridge
+ 3230 K8N890CE Display Driver Integrated Graphics
+ 3238 K8T890 CPU-to-PCI Bridge
+ 3249 VT6421 VIA VT6421 RAID Controller
+ 324A CX700 PCI to PCI Bridge
+ 324B CX700 Host Bridge
+ 324E CX700 Internal Module Bus
+ 3258 PT880 CPU-to-PCI Bridge
+ 3259 PM880 CPU to PCI Bridge
+ 3269 KT880 CPU to PCI Bridge
+ 3282 K8T880Pro CPU to PCI Bridge
+ 3287 VT8251 Standard PCI to ISA Bridge
+ 3288 ??? VIA VT8251/8237A High Definition Audio Controller - HDA Codec Realtek ALC660
+ 3290 K8M890 Standard Host Bridge
+ 3296 P4M800 Standard Host Bridge
+ 3324 CX700 Host Bridge
+ 3327 P4M890 Host Bridge
+ 3336 K8M890CE Host Bridge
+ 3337 VT8237A Standard PCI to ISA Bridge
+ 3340 PT900 Host Bridge
+ 3343 VIA/S3G UniChromePro IGP
+ 3344 P4M800PRO&8237R VIA/S3G UniChrome Pro IGP
+ 3349 VT8251 VIA VT8251 AHCI RAID Controller
+ 3351 VT3351 Host Bridge
+ 3364 P4M900 Host Bridge
+ 337A VT8237A Standard PCI to PCI Bridge
+ 337B VT8237A Standard PCI to PCIe Bridge
+ 4149 VT6420 ATA/ATAPI Host Controller
+ 4204 K8M400 CPU to PCI Bridge
+ 4208 PT890 Standard Host Bridge
+ 4238 K8T890 CPU to PCI Bridge
+ 4258 PT880 CPU to PCI Bridge
+ 4259 CN400/PM880 CPU to PCI Bridge
+ 4269 KT880 CPU to PCI Bridge
+ 4282 K8T880Pro CPU to PCI Bridge
+ 4290 K8M890 Standard Host Bridge
+ 4293 PM896 Host Bridge
+ 4296 P4M800 Standard Host Bridge
+ 4308 PT894 Standard Host Bridge
+ 4314 CN700/VN800/P4M800CE/Pro Host Bridge
+ 4324 CX700 Host Bridge
+ 4327 P4M890 Host Bridge
+ 4336 K8M890CE Host Bridge
+ 4340 PT900 Host Bridge
+ 4351 VT3351 Host Bridge
+ 4364 P4M900 Host Bridge
+ 5030 VT82C596 ACPI Power Management Controller
+ 5208 PT890 I/O APIC Interrupt Controller
+ 5238 K8T890 I/O APIC Interrupt Controller
+ 5287 Serial ATA Controller
+ 5290 K8M890 I/O APIC Interrupt Controller
+ 5308 PT894 I/O APIC Interrupt Controller
+ 5324 CX700M2 Bus Master IDE Controller
+ 5327 P4M890 I/O APIC Interrupt Controller
+ 5336 K8M890CE I/O APIC Interrupt Controller
+ 5337 Serial ATA Controller
+ 5340 PT900 I/O APIC Interrupt Controller
+ 5351 VT3351 I/O APIC Interrupt Controller
+ 5364 P4M900 I/O APIC Interrupt Controller
+ 6010 VT86C100A Rhine II Fast Etheenet Adapter (Error??)
+ 6100 VIA VT86C100A Rhine II PCI Fast SATA and ethernet controller
+ 6287 VT8251 AHCI Controller
+ 6327 P4M890 Security Device
+ 6340 Security Device
+ 6364 P4M900 Security Device
+ 7204 K8M400 CPU to PCI Bridge
+ 7205 KM400 VIA Technologies, Inc. VT8378 [S3 UniChrome] Graphics Adapter
+ 7208 PT890 Standard Host Bridge
+ 7238 K8T890 CPU to PCI Bridge
+ 7258 PT880 CPU to PCI Bridge
+ 7259 PM880 CPU to PCI Bridge
+ 7269 KT880 CPU to PCI Bridge
+ 7282 K8T880Pro CPU to PCI Bridge
+ 7290 K8M890 Standard Host Bridge
+ 7293 PM896 Host Bridge
+ 7296 P4M800 Standard Host Bridge
+ 7308 PT894 Standard Host Bridge
+ 7314 CN700/VN800/P4M800CE/Pro Host Bridge
+ 7324 CX700 Host Bridge
+ 7327 P4M890 Standard Host Bridge
+ 7336 K8M890CE Host Bridge
+ 7340 PT900 Host Bridge
+ 7351 VT3351 Host Bridge
+ 7364 P4M900 Host Bridge
+ 8208 PT890 (??) PCI to AGP Bridge
+ 8231 VT8231 PCI to ISA Bridge
+ 8235 VT8751 Power Management Controller
+ 8237 VT8237 AC97 Enhanced Audio Controller - the 8251 controller is different
+ 8305 VT8363/5 Apollo KT133/KM133 PCI to AGP Bridge
+ 8324 CX700 PCI to ISA Bridge
+ 8391 VT8371 Apollo KX133 PCI to AGP Bridge
+ 8501 VT8501 Apollo MVP4 PCI to AGP Bridge
+ 8596 VT82C596 Apollo Pro PCI to AGP Bridge
+ 8597 VT82C597 Apollo VP3 PCI to AGP Bridge
+ 8598 VT82C598MVP/694x Apollo MVP3/Pro133x PCI to AGP Bridge
+ 8601 VT82C601 Apollo PLE133 CPU to AGP Bridge
+ 8602 CPU to AGP Bridge
+ 8605 VT8605 ProSavage PM133 CPU to AGP Bridge
+ 8691 VT82C691/693A/694X Apollo Pro/133/133A PCI to PCI Bridge
+ 8693 VT82C693 Apollo Pro Plus PCI to PCI Bridge
+ 9238 K8T890 I/O APIC
+ 9398 VT8601 2D/3D Graphics Accelerator
+ 9876 VT8233/A AC97' Enhance Audio Controller PCI to ISA Bridge
+ A208 PT890 PCI-to-PCI Bridge
+ A238 K8T890 PCI-to-PCI Bridge
+ A327 P4M890 PCI to PCI Bridge Controller
+ A364 P4M900 PCI to PCI Bridge Controller
+ B091 VT8633 Apollo Pro 266 CPU to AGP Controller
+ B099 VT8366/A,VT8367 Apollo KT266/A,KT333 PCI to AGP Bridge
+ B101 VT8653 Apollo Pro 266T CPU to AGP Controller
+ B102 VT8362 PCI-to-PCI Bridge (AGP)
+ B103 VT8615 PCI-to-PCI Bridge (AGP)
+ B112 VT8361 Apollo KLE133 CPU to AGP Controller
+ B113 VPX/VPX2 I/O APIC
+ B115 VT8363/5 KT/KM133 CPU to AGP Controller
+ B116 VT8375 ProSavageDDR PM266/KM266 PCI to AGP Bridge
+ B133 vt686b CPU to AGP Controller
+ B148 VT8751 ProSavageDDR P4M266 CPU to AGP Bridge
+ B156 VT8372 ProSavageDDR PN266/KN266 PCI to AGP Bridge
+ B158 ProSavageDDR P4N266 PCI to AGP Bridge
+ B168 ProSavageDDR P4X333 CPU to AGP 2.0/3.0 Bridge
+ B188 VT8237 K8HTB CPU to AGP 2.0/3.0 Bridge
+ B198 ProSavageDDR P4X600,Apollo KT400/A/600 CPU to AGP Bridge
+ B213 VPX/VPX2 I/O APIC
+ B999 K8T890 PCI Bridge
+ C208 PT890 PCI-to-PCI Bridge
+ C238 K8T890 PCI-to-PCI Bridge
+ C327 P4M890 PCI to PCI Bridge Controller
+ C340 PT900 PCI to PCI Bridge Controller
+ C364 P4M900 PCI to PCI Bridge Controller
+ D104 VT8237 Integrated Fast Ethernet Controller
+ D208 PT890 PCI-to-PCI Bridge
+ D213 VPX/VPX2 PCI to PCI Bridge
+ D238 K8T890 PCI-to-PCI Bridge
+ D340 PT900 PCI to PCI Bridge Controller
+ E208 PT890 PCI-to-PCI Bridge
+ E238 K8T890 PCI-to-PCI Bridge
+ E340 PT900 PCI to PCI Bridge Controller
+ F208 PT890 PCI-to-PCI Bridge
+ F238 K8T890 PCI-to-PCI Bridge
+ F340 PT900 PCI to PCI Bridge Controller
+1107 Stratus Computer
+ 8576 PCI Host Bridge
+1108 Proteon Inc.
+ 0100 P1690Plus-AA Single Port Token Ring Adapter
+ 0101 P1690Plus-AB Dual Port Token Ring Adapter
+ 0105 P1690Plus Token Ring Adapter
+ 0108 P1690Plus Token Ring Adapter
+ 0138 P1690Plus Token Ring Adapter
+ 0139 P1690Plus Token Ring Adapter
+ 013C P1690Plus Token Ring Adapter
+ 013D P1690Plus Token Ring Adapter
+1109 Adaptec/Cogent Data Technologies
+ 1400 EM110TX EX110TX PCI Fast Ethernet Adapter
+110A Siemens PC Systeme GmBH
+ 0002 Piranha PCI-EIDE-Adapter (2 Port)
+ 0005 Tulip-Controller, Power-Management, Switch Extender
+ 0006 PINC
+ 0015 Multiprocessor Interrupt Controller (MINT)
+ 0017 PCI-WAN Adapter (SiemensCard PWAN)
+ 001D Copernicus Management Controller
+ 113C FPGA-CPTR Hardware Tracer for CP113C/CP113D
+ 113E FPGA-CPTRE Hardware Tracer for CP113E
+ 2101 PEB 20321 Multichannel Network Interface Controller for HDLC
+ 2102 PEB 20534 DMA supported serial communication controller with 4 channels
+ 2103 PEB 20324 MUNICH128X Multichannel NIC for HDLC + Extensions
+ 2104 PSB 4600/4610 PCI Interface for Telephony Applications (PITA)
+ 2106 PEB 20256E Multichannel NIC for HDLC/PPP (256 Channels)
+ 2108 PEB 20256M E MUNICH256FM NIC for HDLC/PPP (256 Channels)
+ 3141 01 PROFIBUS Communication Processor CP5611 A2
+ 3160 MCCA Pentium-PCI Host Bridge Core ASIC
+ 4942 FPGA I-Bus Tracer for MBD
+ 6120 SZB6120 Multimedia Adapter
+110B CHROMATIC Research Inc / Xenon Microsystems
+ 0001 Mpact Media Processor
+ 0002 GM90C7110VX MPACT DVD decoder.
+ 0004 Mpact2 3DVD Media Processor
+110C Mini-Max Technology Inc.
+110D ZNYX Corporation
+110E CPU Technology
+110F Ross Technology
+1110 Powerhouse Systems
+ 6037 Firepower Powerized SMP I/O ASIC
+ 6073 Firepower Powerized SMP I/O ASIC
+1111 Caldera Systems Inc (Was: Santa Cruz Operation)
+1112 Osicom Technologies Inc.
+ 2200 2200 FDDI adapter
+ 2300 2300 Fast Ethernet adapter
+ 2340 4 Port Fast Ethernet Adapter
+ 2400 2400 ATM adapter
+1113 Accton Technology Corporation
+ 1211 EN-1207D Fast Ethernet Adapter
+ 1216 EN-5251 Based Fast Ethernet Adapter
+ 1217 EN-2242 Ethernet Adapter
+ 5105 10Mbps Network Card
+ 9211 EN-1207D Fast Ethernet Adapter
+ 9511 SMC en5251be 0250tabgv27065.1
+ 9876 EN5251BE Ethernet Controller/ drivers
+1114 Atmel Corp.
+ 0506 AT76C506 802.11b Wireless Network Adaptor
+ 3202 AT97SC3202 TPM - Trusted Platform Module
+1115 Dupont Pixel Systems Ltd
+1116 Media 100 Inc (Was: Data Translation)
+ 0022 DT3001
+ 0023 DT3002
+ 0024 DT3003
+ 0025 DT3004
+ 0026 Dt3005
+ 0027 DT3001-PGL
+ 0028 DT3003-PGL
+1117 Datacube Inc.
+ 9500 max-lc SVGA card
+ 9501 MaxPCI image processing board
+1118 Berg Electronics
+1119 ICP vortex Computersysteme GmbH
+ 0000 GDT6000/6020/6050 PCI SCSI RAID Controller
+ 0001 GDT6000B/6010 PCI 1-Channel SCSI RAID Controller
+ 0002 GDT6110/6510 PCI 1-channel SCSI RAID Controller
+ 0003 GDT6120/6520 PCI 2-channel SCSI RAID Controller
+ 0004 GDT6530 PCI 3-channel SCSI RAID Controller
+ 0005 GDT6550 PCI 5-channel SCSI RAID Controller
+ 0006 GDT6117/6517 Wide Ultra SCSI Controller
+ 0007 GDT6127/6527 Wide Ultra SCSI Controller
+ 0008 GDT6537 Wide Ultra SCSI Controller
+ 0009 GDT6557/6557-ECC Wide Ultra SCSI Controller
+ 000A GDT6115/6515 Ultra SCSI Controller
+ 000B GDT6125/6525 Wide SCSI Controller
+ 000C GDT6535 Wide SCSI Controller
+ 000D GDT6555/6555-ECC Wide SCSI Controller
+ 0100 GDT6117RP/6517RP 2 Channel Wide Ultra SCSI
+ 0101 GDT6127RP/6527RP Wide Ultra SCSI HBA
+ 0102 GDT6537RP Wide Ultra SCSI HBA
+ 0103 GDT6557RP Wide Ultra SCSI HBA
+ 0104 GDT6111RP/6511RP Ultra SCSI HBA
+ 0105 GDT6121RP/6521RP Ultra SCSI HBA
+ 0110 GDT6117RD/6517RD Wide Ultra SCSI HBA
+ 0111 GDT6127RD/6527RD Wide Ultra SCSI HBA
+ 0112 GDT6537RD Wide Ultra SCSI HBA
+ 0113 GDT6557RD Wide Ultra SCSI HBA
+ 0114 GDT6111RD/6511RD Ultra SCSI HBA
+ 0115 GDT6127RD/6527RD Ultra SCSI HBA
+ 0118 GDT6x18RD Wide Ultra2 SCSI HBA
+ 0119 GDT6x28RD Wide Ultra2 SCSI HBA
+ 011A GDT6538RD/6638RD Wide Ultra2 SCSI HBA
+ 011B GDT6558RD/6658RD Wide Ultra2 SCSI HBA
+ 0120 GDT6117RP2/6517RP2
+ 0121 GDT6127RP2/6527RP2
+ 0122 GDT6537RP2
+ 0123 GDT6557RP2
+ 0124 GDT6111RP2/6511RP2
+ 0125 GDT6127RP2/6527RP2
+ 0136 GDT 6113RS/6513RS
+ 0137 GDT 6x23RS Disk Array Controller
+ 0138 GDT 6118RS/6518RS/6618RS
+ 0139 GDT 6128RS/6528RS/6628RS
+ 013A GDT 6538RS/6638RS
+ 013B GDT 6558RS/6658RS
+ 013C GDT 6533RS/6633RS
+ 013D GDT 6543RS/6643RS
+ 013E GDT 6553RS/6653RS
+ 013F GDT 6563RS/6663RS
+ 0166 GDT 7113RN/7513RN/7613RN
+ 0167 GDT 7123RN/7523RN/7623RN
+ 0168 GDT7x18RN 64-bit PCI Wide Untra2 SCSI HBA
+ 0169 GDT7x28RN 64-bit PCI Wide Ultra2 SCSI HBA
+ 016A GDT7538RN/7638RN 64-bit PCI Wide Ultra2 SCSI HBA
+ 016B GDT7558RN/7658RN 64-bit PCI Wide Ultra2 SCSI HBA
+ 016C GDT 7533RN/7633RN
+ 016D GDT 7543RN/7643RN
+ 016E GDT 7553RN/7653RN
+ 016F GDT 7563RN/7663RN
+ 01D6 GDT 4x13RZ
+ 01D7 GDT 4x23RZ
+ 01F6 GDT 8x13RZ
+ 01F7 GDT 8x23RZ
+ 01FC GDT 8x33RZ
+ 01FD GDT 8x43RZ
+ 01FE GDT 8x53RZ
+ 01FF GDT 8x63RZ
+ 0210 GDT6519RD/6619RD Fibre Channel HBA
+ 0211 GDT6529RD/6629RD Fibre Channel HBA
+ 0260 GDT7519RN/7619RN 64-bit PCI Fibre Channel HBA
+ 0261 GDT7529RN/7629RN 64-bit PCI Fibre Channel HBA
+ 02F6 GDT8x22RZ Disk Array Controller
+ 0300 GDT Rx Controller
+111A Efficient Networks Inc
+ 0000 155P-MF1 (FPGA)
+ 0002 155P-MF1 (ASCI)
+ 0003 ENI-25P ATM Adapter
+ 0005 SpeedStream ENI-30x0 ATM Adapter
+ 0007 SpeedStream ADSL
+111B Teledyne Electronic Systems
+111C Tricord Systems Inc.
+ 0001 Powerbus Bridge
+111D Integrated Device Technology Inc.
+ 0001 IDT77201/211 NICStAR ATM Adapter
+ 0003 IDT77222/252 MICRO ABR SAR PCI ATM Controller
+ 0004 IDT77V252 MICRO ABR SAR PCI ATM Controller
+111E Eldec Corp
+111F Precision Digital Images
+ 4A47 Precision MX Video engine interface
+ 5243 Frame Capture Bus Interface
+1120 EMC Corp.
+1121 Zilog
+1122 Multi-Tech Systems Inc
+1123 Excellent Design Inc.
+1124 Leutron Vision AG
+1125 Eurocore/Vigra
+1126 Vigra
+1127 FORE Systems Inc
+ 0200 ForeRunner PCA-200 ATM Adapter
+ 0210 PCA-200PC ATM Adapter
+ 0250 ATM
+ 0300 PCA-200EPC ATM Adapter
+ 0310 ATM
+ 0400 ForeRunner HE ATM Adapter
+1129 Firmworks
+112A Hermes Electronics Co. Ltd.
+112B Linotype - Hell AG
+112C Zenith Data Systems
+112D Ravicad
+112E Infomedia Microelectronics
+ 0000 EIDE/hdd and IDE/cd-rom Ctrlr
+ 000B EIDE/hdd and IDE/cd-rom Ctrlr
+112F Imaging Technlogy Inc
+ 0000 MVC IC-PCI
+ 0001 Video Frame Grabber / Processor
+1130 Computervision
+ F211 0x010 USB Audio Sound Card
+1131 Philips Semiconductors
+ 1131 7130 01384E428
+ 1201 PTD3000 VPN IPSEC coprocessor
+ 1234 EHCI USB 2.0 Controller
+ 1301 PTD3210 SSL Accelerator
+ 1562 ISP1561 EHCI USB 2.0 Controller
+ 2780 TDA2780AQ TV deflection controller
+ 3400 UCB1500 Modem Device
+ 3401 UCB1500 Multimedia Audio Device
+ 5400 TriMedia TM1000/1100 Multimedia processor
+ 5402 TriMedia TM-1300EH Media Processor
+ 7130 SAA7135HL Bus 2, périphérique 11, fonction 0 Philips SAA7130HL Multimedia Capture Device
+ 7133 Philips SAA7135hl ENLTV TV/Radio Tuner
+ 7134 SAA7134HL Multimedia Capture Device
+ 7135 SAA???? Multimedia Device(??)
+ 7145 SAA7145ah Multimedia audio controler
+ 7146 SAA7146 Multimedia Bridge Scaler
+ 7162 SAA7162 Hybrid Capture Device
+ 9730 SAA9730 Ethernet controller
+1132 Mitel Corp.
+1133 Eicon Networks Corp (Was: Eicon Technology)
+ 7711 EiconCard C91
+ 7901 EiconCard S90
+ 7902 EiconCard S90
+ 7911 EiconCard S91
+ 7912 EiconCard S91
+ 7941 EiconCard S94
+ 7942 EiconCard S94
+ 7943 EiconCard S94
+ 7944 EiconCard S94
+ 7945 EiconCard S94
+ 7948 EiconCard S94 64-bit/66MHz
+ 9711 EiconCard C91 rev 2.0
+ B921 EiconCard P92
+ B922 EiconCard P92
+ B923 EiconCard P92
+ E001 DIVA Pro 2.0 S/T
+ E002 DIVA 2.0 S/T
+ E003 DIVA Pro 2.0 U
+ E004 DIVA 2.0 U
+ E005 DIVA 2.01 S/T Eicon ISDN card using Siemens IPAC chip
+ E006 Diva CT S/T PCI
+ E007 Diva CT U PCI
+ E008 Diva CT Lite S/T PCI
+ E009 Diva CT Lite U PCI
+ E00A Diva ISDN+V.90 PCI
+ E00B DIVA ISDN 2.02 PCI Eicon ISDN card using Infineon chip
+ E00C Diva 2.02 PCI U
+ E00D Diva ISDN Pro 3.0 PCI
+ E00E Diva ISDN+CT S/T PCI Rev 2
+ E010 Maestra DIVA Server BRI-2M
+ E011 Diva Server BRI 2.0
+ E012 MaestraQ DIVA Server BRI-8M
+ E013 MaestraQ-U DIVA Server 4BRI/PCI
+ E014 MaestraP DIVA Server PRI-30M
+ E015 Diva Server PRI-30M PCI v.2
+ E016 Diva Server Voice 4BRI PCI
+ E017 Diva Server Voice 4BRI PCI Rev 2
+ E018 DIVA Server BRI-2M/-2F
+ E019 DIVA Server Voice PRI 2.0 PCI
+ E01A Diva Server 2FX
+ E01B Diva Server BRI-2M Voice Revision 2
+ E01C Diva Server PRI Rev 3.0
+ E01E Diva Server 2PRI
+ E020 Diva Server 4PRI
+ E022 Diva Server Analog-2P
+ E024 Diva Server Analog-4P
+ E028 Diva Server Analog-8P
+ E02A Diva Server IPM-300
+ E02C Diva Server IPM-600
+1134 Mercury Computer Systems Inc.
+ 0001 Raceway Bridge
+ 0002 DPRB Dual PCI to RapidIO Bridge
+1135 Fuji Xerox Co Ltd
+ 0001 Printer Controller
+1136 Momentum Data Systems
+1137 Cisco Systems Inc
+1138 Ziatech Corporation
+ 8905 8905 STD 32 Bridge
+1139 Dynamic Pictures Inc
+ 0001 VGA Compatable 3D Graphics
+113A FWB Inc
+113B Network Computing Devices
+113C Cyclone Microsystems Inc.
+ 0000 PCI9060 i960 Bridge
+ 0001 PCI9060 i960 Bridge / Evaluation Platform
+ 0911 PCI911 i960Jx I/O Controller
+ 0912 PCI912 i960Cx I/O Controller
+ 0913 PCI913 i960Hx I/O Controller
+ 0914 PCI914 I/O Controller with secondary PCI bus
+113D Leading Edge Products Inc
+113E Sanyo Electric Co
+113F Equinox Systems
+ 0808 SST-64P Adapter
+ 1010 SST-128P Adapter
+ 80C0 SST-16P Adapter
+ 80C4 SST-16P Adapter
+ 80C8 SST-16P Adapter
+ 80D0 SST-16P Adapter
+ 8888 SST-4P Adapter
+ 9090 SST-8P Adapter
+1140 Intervoice Inc
+1141 Crest Microsystem Inc
+ 0001 EIDE/ATAPI super adapter
+1142 Alliance Semiconductor
+ 3210 ProMotion 3210(6410?) VGA and AVI Playback Accelerator
+ 6410 6410 6422 GUI Accelerator
+ 6412 GUI Accelerator
+ 6420 GUI Accelerator
+ 6422 ProMotion-6422 ProMotion-6422
+ 6424 ProVideo 6424 ProMotion AT24 GUI Accelerator
+ 6425 ProMotion AT25 0752 20005
+ 6426 GUI Accelerator
+ 643D AT25 ProMotion-AT3D
+ 9876 ProMotion AT25 139K76B 9808
+1143 Netpower Inc
+1144 Vickers Inc/Cincinnati Milacron
+ 0001 Noservo Controller
+1145 Workbit Corp
+ 8007 NinjaSCSI-32 Workbit
+ F007 NinjaSCSI-32 KME
+ F010 NinjaSCSI-32 Workbit
+ F012 NinjaSCSI-32 Logitec
+ F013 NinjaSCSI-32 Logitec
+ F015 NinjaSCSI-32 Melco
+ F020 CardBus ATAPI Host Adapter
+ F021 NPATA32 CardBus CompactFlash Adapter
+ F024 NPATA-32 CardBus CompactFlash Adapter
+1146 Force Computers
+1147 Interface Corp
+ 1123 123 131dq
+1148 Marvell Semiconductor Germany GmbH
+ 4000 SK-NET FDDI adapter
+ 4200 Token Ring Adapter
+ 4300 SysKonnect Genesis SK-NET Gigabit Ethernet Adapter
+ 4320 Marvell Yukon SysKonnect Gigabit Ethernet SK-98xx Version 2.0
+ 4400 SK-9Dxx Gigabit Ethernet Adapter
+ 4500 SK-9Mxx Gigabit Ethernet Adapter
+ 9000 Marvell Yukon II PCI-X PCI-X 10/100/1000Base-T Server
+ 9843 [Fujitsu] Gigabit Ethernet
+ 9E00 Marvell Yukon EC PCI Express 10/100/1000Base-T Desktop
+1149 Win System Corporation
+114A VMIC
+ 5565 VMIPCI-5565 Ultrahigh-Speed Fiber-Optics Reflective Memory w/ Interrupts
+ 5579 VMIPCI-5579 Reflective Memory Card
+ 5587 VMIPCI-5587 Reflective Memory Card
+ 5588 VMICPCI5588 VMICPCI5588 Reflective Memory Card
+ 6504 VMICPCI-7755 FPGA
+ 7587 VMIVME-7587
+114B Canopus corporation
+114C Annabooks
+114D IC Corporation
+ 2189 0x1002114D PCTel HSP56 PCI Modem
+114E Nikon Systems Inc
+114F Digi International
+ 0002 AccelePort EPC/X
+ 0003 RightSwitch SE-6
+ 0004 AccelePort Xem
+ 0005 AccelePort Xr EIA-232
+ 0006 AccelePort C/X
+ 0007 DataFire PCI 1 S/T Digi Data Fire PCI 1 S/T
+ 0009 AccelePort Xr/J EIA-232
+ 000A AccelePort EPC/J
+ 000C DataFirePRIme T1 (1-port)
+ 000D SyncPort 2-Port (x.25/FR)
+ 0011 AccelePort 8r EIA-232 (IBM)
+ 0012 AccelePort 8r EIA-422
+ 0013 AccelePort Xr EIA-232
+ 0014 AccelePort 8r EIA-422
+ 0015 AccelePort Xem
+ 0016 AccelePort EPC/X
+ 0017 AccelePort C/X
+ 0019 Datafire PCI 1 U (Multifunction)
+ 001A DataFirePRIme E1 (1-port)
+ 001B AccelePort C/X (IBM)
+ 001D DataFire RAS T1/E1/PRI
+ 001F ClydeNonCsu6034
+ 0020 ClydeNonCsu6032
+ 0021 ClydeNonCsu4
+ 0022 ClydeNonCsu2
+ 0023 AccelePort RAS
+ 0024 DataFire RAS B4 ST/U
+ 0026 AccelePort 4r 920
+ 0027 AccelePort 8r 920
+ 0028 ClassicBoard 4
+ 0029 DigiClassic PCI
+ 0034 AccelePort 2r 920
+ 0035 DataFire DSP T1/E1/PRI, Compact PCI
+ 0040 AccelePort Xp
+ 0042 AccelePort 2p PCI
+ 0043 AccelePort 4p
+ 0044 AccelePort 8p
+ 0045 AccelePort 16p
+ 004E AccelePort 32p
+ 0070 Datafire Micro V IOM2 (Europe)
+ 0071 Datafire Micro V (Europe)
+ 0072 Datafire Micro V IOM2 (North America)
+ 0073 Datafire Micro V (North America)
+ 0081 DataFire SYNC 2000 2P Adapter
+ 00B0 Digi Neo 4
+ 00B1 Digi Neo 8
+ 00C8 Digi Neo 2 DB9
+ 00C9 Digi Neo 2 DB9 PRI
+ 00CA Digi Neo 2 RJ45
+ 00CB Digi Neo 2 RJ45 PRI
+ 00D0 ClassicBoard 4 422
+ 00D1 ClassicBoard 8 422
+ 5012 DataFire Sync/570i 2P PCI Adapter
+ 5013 DataFire Sync/570i 4P PCI Adapter
+ 6001 Avanstar
+1150 Thinking Machines Corporation
+1151 JAE Electronics Inc.
+1152 Megatek
+1153 Land Win Electronic Corp
+1154 Melco Inc
+1155 Pine Technology Ltd
+ 0810 486 CPU/PCI Bridge
+ 0922 2838 Pentium CPU/PCI Bridge
+ 0926 PCI/ISA Bridge
+1156 Periscope Engineering
+1157 Avsys Corporation
+1158 Voarx R&D Inc
+ 3011 Tokenet/vg 1001/10m anylan
+ 9050 Lanfleet/Truevalue
+ 9051 Lanfleet/Truevalue
+1159 MuTech Corp
+ 0001 MV-1000
+ 0002 MV-1500 Frame Grabber
+115A Harlequin Ltd
+115B Parallax Graphics
+115C Photron Ltd.
+115D Xircom
+ 0003 RBEM56G-100 Cardbus Ethernet 10/100+Modem 56
+ 0005 CardBus Ethernet 10/100
+ 0007 CardBus Ethernet 10/100
+ 000B CardBus Ethernet 10/100
+ 000C MPCI 3A56GSP-100 PA Mini-PCI V.90 56k Modem
+ 000F CardBus Ethernet 10/100
+ 0016 MPCI Modem 56
+ 0022 MPCI Modem 56
+ 0029 MPCI Modem 56
+ 002B Winmodem built into NEC Versa VXi
+ 0076 Xircom MPCI3B-56G (Lucent SCORPIO) Soft
+ 00D3 2333333333333 Xircom MPCI Modem 56
+ 00D4 MPCI Modem 56k
+ 0101 CardBus 56k Modem
+ 0103 CardBus Ehternet + 56k Modem
+ 0104 RealPort2 CardBus Modem 56
+115E Peer Protocols Inc
+115F Maxtor Corporation
+1160 Megasoft Inc
+1161 PFU Ltd
+ 0001 Host Bridge
+1162 OA Laboratory Co Ltd
+1163 Rendition Inc
+ 0001 Verite 1000 3D Blaster
+ 2000 Verite 2000/2100/2200
+1164 Advanced Peripherals Tech
+1165 Imagraph Corporation
+ 0001 Motion JPEG Recorder/Player with Audio
+1166 ServerWorks (Was: Reliance Computer Corp)
+ 0000 CMIC-LE
+ 0005 NB6536 (CNB20-LE) PCI to PCI Bridge, bus/dev/func 0/0/1
+ 0006 NB6536 (CNB20-HE) Host Bridge, function 2 and function 3
+ 0007 NB6635 (CNB20-LE/HE) CPU to PCI Bridge
+ 0008 NB6536 (CNB20-HE) Hostbridge & MCH, bus/dev/func 0/0/0
+ 0009 NB6536 (CNB20-LE) AGP interface
+ 0010 CIOB30
+ 0011 CMIC-HE
+ 0012 CMIC-LE
+ 0013 CNB20-HE CPU to PCI Bridge & MCH
+ 0014 CNB20-HE Host Bridge
+ 0015 CMIC-GC CPU to PCI Bridge & MCH
+ 0016 CMIC-GC Host Bridge
+ 0017 CMIC-SL
+ 0036 HT1000 PCI/PCI-X bridge
+ 0101 CIOB-X2
+ 0103 BCM5715 Broadcom dual gigabit, pci bridge
+ 0104 HT1000 PCI/PCI-X bridge
+ 0110 CIOB-E I/O Bridge with Gigabit Ethernet ServerWorks Grand Champion
+ 0130 HT1000 PCI-X bridge
+ 0132 HT1000 PCIe bridge
+ 0140 HT2100 PCIe Bridge
+ 0141 HT2100 PCIe Bridge
+ 0142 HT2100 PCIe Bridge
+ 0200 OSB4 PCI to ISA Bridge
+ 0201 CSB5 PCI to ISA Bridge
+ 0203 CSB6 PCI to ISA Bridge
+ 0205 HT1000 Legacy South Bridge
+ 0211 OSB4 PCI EIDE Controller
+ 0212 CSB5 PCI EIDE Controller
+ 0213 OSB6/CSB6 PCI EIDE Controller
+ 0214 HT1000 Legacy IDE controller
+ 0217 OSB6 PCI EIDE Controller (Tertiary)
+ 0220 OSB4 OpenHCI Compliant USB Controller
+ 0221 OSB6 OHCI Compliant USB Controller
+ 0223 0x0223 USB controller
+ 0225 CSB5 PCI Bridge
+ 0227 CSB6 PCI Bridge
+ 0230 ??? PCI to ISA bridge
+ 0234 HT1000 LPC Bridge
+ 0235 Keypad Controller
+ 0236 Local Display Controller
+ 0237 NVRAM Controller
+ 0240 K2 SATA
+ 0241 BC4852 8-Channel RAIDCore™ SATA RAID Host Bus Adapter
+ 0242 RAIDCore BC4000
+ 024A BCM5785 (HT1000) SATA Native SATA Mode
+ 024B BCM5785 (HT1000) PATA/IDE Mode
+1167 Mutoh Industries Inc
+1168 Thine Electronics Inc
+1169 Centre for Development of Advanced Computing
+ 0102 QL5032 32 Channel Digital Input Card Interface
+ 0202 QL5032 16 Channel Digital Output, 16 Channel Digital Input Interface
+ 0302 QL5032 32 Channel Analog Input Interface
+ 0402 QL5032 16 Channel Analog Output / Analog Input Interface
+ 0502 QL5232 8 Channel Timer Counter Interface
+ 0902 QL5232 PCI to TigerSHARC FPGA Interface
+ 2001 Ql5032-33APQ208C PCI to C-DAC RTU bus interface FPGA
+116A Polaris Communications
+ 6100 Bus/Tag Channel
+ 6800 Escon Channel
+ 7100 Bus/Tag Channel
+ 7800 Escon Channel
+116B Connectware Inc
+116C Intelligent Resources
+116D Martin-Marietta
+116E Electronics for Imaging
+ 0500 Vx500 Printer ASIC
+116F Workstation Technology
+1170 Inventec Corporation
+1171 Loughborough Sound Images
+1172 Altera Corporation
+ 0001 EPF6016ATC144-2 S CCA5000243A
+ 0004 - Multi-serial card
+1173 Adobe Systems
+1174 Bridgeport Machines
+1175 Mitron Computer Inc.
+1176 One Stop Systems (Was: SBE Inc; Bought out)
+ 8474 42000133 Conexant Multichannel Synchronous Communications Controller (MUSYCC)
+1177 Silicon Engineering
+1178 Alfa Inc
+ AFA1 Fast Ethernet Adapter
+1179 Toshiba America Information Systems
+ 0102 toshiba america info systems Extended PCI IDE Controller
+ 0103 Extended PCI IDE Controller Type-B
+ 0404 DVD Decoder Card
+ 0406 Tecra Video Capture device
+ 0407 DVD Decoder Card (Version 2)
+ 0601 Pentium Host Bridge for Notebooks
+ 0602 PCI to ISA Bridge for Notebooks
+ 0603 ToPIC95 PCI to CardBus Bridge for Notebooks
+ 0604 PCI to PCI Bridge for Notebooks
+ 0605 PCI to ISA Bridge for Notebooks
+ 0606 PCI to ISA Bridge for Notebooks
+ 0609 PCI to PCI Bridge for Notebooks
+ 060A ToPIC95B Toshiba ToPIC95 CardBus Controller
+ 060F ToPIC97 CardBus Controller
+ 0611 PCI to ISA Bridge
+ 0617 ToPIC100 PCI to CardBus Bridge with ZV support
+ 0618 CPU to PCI and PCI to ISA Bridge
+ 0701 vt82c693 PCI Communication Device
+ 0804 0x0804 Toshiba Smart Media Host Controller
+ 0805 PCI\VEN_1180&DEV_0592&SUBSYS_828D1033&REV_06\4&5A9 SD Card Controller
+ 0D01 0x0D01 FIR Port Type-O
+ 13A8 XR17C158/154/152 Multi-channel PCI UART
+117A A-Trend Technology
+117B LG (Lucky Goldstar) Electronics Inc.
+ 8320 GCE-8320B CD-R/RW Drive
+117C Atto Technology
+ 0030 Ultra320 SCSI Host Adapter
+117D Becton & Dickinson
+117E T/R Systems
+ 0001 Printer Host
+117F Integrated Circuit Systems
+1180 Ricoh Company, Ltd.
+ 0465 RL5c465 CardBus Controller
+ 0466 RL5c466 CardBus Controller
+ 0475 RL5c475 Cardbus Controller
+ 0476 unknown Ricoh R/RL/5C476(II)
+ 0477 RL5c477 CardBus Controller
+ 0478 RL5c478 CardBus Controller
+ 0511 R5C511
+ 0522 R5C522 IEEE-1394 Controller
+ 0551 R5C551 IEEE-1394 Controller
+ 0552 RL5c552 IEEE-1394 Controller
+ 0554 R5C554
+ 0575 SD Bus Host Adapter
+ 0576 SD Bus Host Adapter
+ 0592 13871043 Ricoh Memory Stick Host Controller
+ 0811 R5C811
+ 0822 R5C832, R5C843 SDA Standard Compliant SD Host Controller
+ 0832 unknown IEEE 1394 (4 pin firewire) chip)
+ 0841 R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394
+ 0843 unknown Ricoh MMC Host Controller
+ 0852 unknown Ricoh xD-Picture Card Host Controller
+ 5551 Unknown IEEE 1394 Controller
+1181 Telmatics International
+1183 Fujikura Ltd
+1184 Forks Inc
+1185 Dataworld International Ltd
+ 8929 EIDE Controller
+1186 D-Link System Inc
+ 0100 DEC DC21041-Based Ethernet Adapter
+ 1002 DFE-550TX/580TX/DFE-550FX Fast Ethernet Adapter
+ 1025 DWL-G650 AirPlus Xtreme G Adapter
+ 1026 DWL-AG650 AirXpert Wireless CardBus Adapter
+ 1043 DWL-AG650 AirXpert Wireless CardBus Adapter
+ 1100 DFE-??? Fast Ethernet Adapter
+ 1300 DL 10038C or 10038D (Remark of Realtek RTL-8139) Fast Ethernet Adapter
+ 1301 DFE-530TX Fast Ethernet Adapter
+ 1340 DFE-690TXD CardBus Fast Ethernet Adapter
+ 1405 DFE-520TX Fast Ethernet PCI Adapter
+ 1541 DFE-680TXD CardBus PC Card
+ 1561 DRP-32TXD CardBus PC Card
+ 2027 DWL-G520 AirPlus Xtreme G Adapter
+ 3065 14001186 D-Link DFE-500Tx PCI fast Ethernet adapter Rev.A
+ 3106 DFE 530TX+ rev E1 Fast Ethernet Adapter
+ 3203 DWL-G520 AirPlus Xtreme G Adapter
+ 3300 D-Link Air Wireless Network (DWL-G510) IEEE 802.11g PCI card
+ 3A03 DWL-A650 AirPro Wireless CardBus Adapter(rev.B)
+ 3A04 DWL-AB650 AirPro Multimode Wireless CardBus Adapter
+ 3A05 DWL-AB520 AirPro Multimode Wireless PCI Adapter
+ 3A07 DWL-AG650 AirXpert Wireless CardBus Adapter
+ 3A08 DWL-AG520 AirXpert Wireless PCI Adapter
+ 3A10 DWL-AG650 AirXpert Wireless CardBus Adapter(rev.B)
+ 3A11 DWL-AG520 AirXpert Wireless PCI Adapter(rev.B)
+ 3A12 DWL-G650 AirPlus Wireless CardBus Adapter(rev.C)
+ 3A13 DWL-G520 AirPlus Wireless PCI Adapter(rev.B)
+ 3A14 DWL-AG530 AirPremier Wireless PCI Adapter
+ 3A63 DWL-AG660 AirXpert Wireless CardBus Adapter
+ 3B00 0x3b001186 D-LINK DWL-650+
+ 3B05 DWL-G650+ CardBus PC Card
+ 4000 DL2000 Gigabit Ethernet Adapter
+ 4001 DFE-650TX D Link Fast Ethernet PCMCIA Card
+ 4300 dlg10028 Used on DGE-528T Gigabit adaptor
+ 4346 DGE-560SX Single Fiber Gigabit Ethernet PCI-E Adapter V.A1
+ 4B00 DGE-560T PCIe Gigabit Ethernet Adapter
+ 4B01 DGE-530T V.B1 Gigabit Ethernet Adapter (rev 11)
+ 4B02 DGE-560SX PCIe Gigabit Ethernet Adapter
+ 4B03 DGE-550T Gigabit Ethernet Adapter V.B1
+ 4C00 DGE-530T Gigabit Ethernet Adapter
+ 8400 DWL-650+ CardBus PC Card
+1187 Advanced Technology Laboratories
+1188 Shima Seiki Manufacturing Ltd.
+1189 Matsushita Electronics Co
+ 1592 VL/PCI Bridge
+118A Hilevel Technology
+118B Hypertec Pty Ltd
+118C Corollary Inc
+ 0014 PCIB C-bus II to PCI bus host bridge chip
+ 1117 MAC-94C201B3 Profusion Memory Controller Chip [Xeon 8-way SMP]
+118D BitFlow Inc
+ 0001 n/a Raptor-PCI framegrabber
+ 0012 Model 12 Road Runner Frame Grabber
+ 0014 Model 14 Road Runner Frame Grabber
+ 0024 Model 24 Road Runner Frame Grabber
+ 0044 Model 44 Road Runner Frame Grabber
+ 0112 Model 12 Road Runner Frame Grabber
+ 0114 Model 14 Road Runner Frame Grabber
+ 0124 Model 24 Road Runner Frame Grabber
+ 0144 Model 44 Road Runner Frame Grabber
+ 0212 Model 12 Road Runner Frame Grabber
+ 0214 Model 14 Road Runner Frame Grabber
+ 0224 Model 24 Road Runner Frame Grabber
+ 0244 Model 44 Road Runner Frame Grabber
+ 0312 Model 12 Road Runner Frame Grabber
+ 0314 Model 14 Road Runner Frame Grabber
+ 0324 Model 24 Road Runner Frame Grabber
+ 0344 Model 44 Road Runner Frame Grabber
+118E Hermstedt GmbH
+118F Green Logic
+1190 Tripace
+ 2550 TC-2550 Single Chip Ultra (Wide) SCSI Processor
+ C721 EIDE
+ C731 TP-910/920/940 PCI Ultra (Wide) SCSI Adapter
+1191 Acard Technology Corp.
+ 0001 EIDE Adapter
+ 0002 ATP850UF UltraDMA33 EIDE Controller (AEC6210UF)
+ 0003 SCSI Cache Host Adapter
+ 0004 ATP8400 UltraDMA33 EIDE (Cache??) Controller (AEC6210UF)
+ 0005 ATP850UF UltraDMA33 EIDE Controller (AEC6210UF)
+ 0006 ATP860A UltraDMA66 EIDE Controller, NO-BIOS (AEC6260)
+ 0007 ATP860R UltraDMA66 EIDE Controller (AEC6260)
+ 0008 ATP865 2CH PCI UltraDMA133 IDE Controller
+ 0009 ATP865 2CH PCI UltraDMA133 IDE Controller
+ 000D ATP8620 2S1P PCI-X SATA(3G)/UDMA Combo Controller
+ 8001 ATP8600 SCSI-2 RAID (Cache??) Host Adapter (AEC6820U)
+ 8002 ATP850S SCSI-2 Host Adapter (AEC6710L/F)
+ 8010 ATP870 Ultra Wide SCSI Contoller (AEC6712UW)
+ 8020 ATP870 Ultra SCSI Controller (AEC6712U)
+ 8030 ATP870 SCSI Controller (AEC6710S/6712S)
+ 8040 ATP870 SCSI Controller (AEC6710D)
+ 8050 Ultra Wide SCSI Controller
+ 8060 AEC671x SCSI Host Adapter
+ 8081 AEC-67160 PCI Ultra160 LVD/SE SCSI Adapter
+1192 Densan Co. Ltd
+1193 Zeitnet
+ 0001 ZN1221 ATM Adapter
+ 0002 ZN1225 ATM Adapter
+1194 Toucan Technology
+1195 Ratoc System Inc
+1196 Hytec Electronics Ltd
+1197 Gage Applied Technologies
+ 010C CompuScope 82G 8-bit 2GS/s Analog Input Card
+1198 Lambda Systems Inc
+1199 Attachmate Corp.
+ 0001 IRMA 3270 PCI Adapter
+ 0002 Advanced ISCA PCI Adapter
+ 0201 SDLC PCI Adapter
+119A Mind/Share Inc.
+119B Omega Micro Inc.
+ 1221 82C092G PCI PCMCIA bridge
+119C Information Technology Institute
+119D Bug Sapporo Japan
+119E Fujitsu Microelectronics Ltd.
+ 0001 MB86697 FireStream 155 ATM adapter
+ 0003 MB86695 FireStream 50 ATM adapter
+119F Bull Hn Information Systems
+11A0 Convex Computer Corp
+11A1 Hamamatsu Photonics K.K.
+11A2 Sierra Research and Technology
+11A3 Deuretzbacher GmbH & Co. Eng. KG
+11A4 Barco Graphics NV
+11A5 MicroUnity Systems Engineering Inc.
+11A6 Pure Data Ltd
+11A7 Power Computing Corp.
+11A8 Systech Corp.
+ 7302 NTX-8023-PCI 2MB Long Card
+ 7308 NTX-8023-PCI 8MB Long Card
+ 7402 NTX-8023-PCI 2MB Short Card
+ 7408 NTX-8023-PCI 8MB Short Card
+11A9 InnoSys Inc.
+ 4240 AMCC S5933Q pci matchmaker 9622qac
+11AA Actel
+11AB Marvell Semiconductor (Was: Galileo Technology Ltd)
+ 0146 GT-64010/A System Controller for R4xxx/5000 Family CPUs
+ 11AB 88E8055 PCI-E Gigabit Ethernet Controler
+ 138F W8300 802.11 Adapter
+ 13F8 W8300 802.11 Adapter
+ 1FA6 88W8310 The Libertas™ WLAN 80211bg
+ 1FA7 88W8310 and 88W8000G Libertas 802.11g Chipset
+ 1FAA 8335 Marvell Libertas 802.11b/g Wireless (8335)
+ 1FAB Libertas 802.11b/g Wireless LAN Client Adapter
+ 2A01 Libertas 802.11a/b/g Wireless Controller (CB55)
+ 4320 Yukon 88E8001/8003/8010 PCI Gigabit Ethernet Controller (Copper)
+ 4340 Yukon 88E8021 PCI-X IPMI Gigabit Ethernet Controller
+ 4341 Yukon 88E8022 PCI-X IPMI Gigabit Ethernet Controller
+ 4342 Yukon 88E8061 PCI-E IPMI Gigabit Ethernet Controller
+ 4343 Yukon 88E8062 PCI-E IPMI Gigabit Ethernet Controller
+ 4344 Yukon 88E8021 PCI-X IPMI Gigabit Ethernet Controller
+ 4345 Yukon 88E8022 PCI-X IPMI Gigabit Ethernet Controller
+ 4346 Yukon 88E8061 PCI-E IPMI Gigabit Ethernet Controller
+ 4347 Yukon 88E8062 PCI-E IPMI Gigabit Ethernet Controller
+ 4350 88E8036 Yukon PCI-E Fast Ethernet Controller
+ 4351 88E8036 Yukon PCI-E Fast Ethernet Controller
+ 4352 Yukon 88E8038 PCI-E Fast Ethernet Controller
+ 4353 Yukon 88E8039 PCI-E Fast Ethernet Controller
+ 4356 Yukon 88EC033 PCI-E Fast Ethernet Controller
+ 4360 88E8052 Yukon PCI-E ASF Gigabit Ethernet Controller
+ 4361 88E8036 Marvell Yukon -EC 88E8036 PCI Express Fast Ethernet Controller
+ 4362 88E8053 Marvell Yukon 88E8053 PCI-E Gigabit Ethernet Controller
+ 4363 88E8053 Yukon PCI-E Gigabit Ethernet Controller
+ 4364 88E8056 Yukon PCI-E Gigabit Ethernet Controller
+ 4365 Yukon 88E8070 PCI-E Gigabit Ethernet Controller
+ 4366 Yukon 88EC036 PCI-E Gigabit Ethernet Controller
+ 4367 Yukon 88EC032 based Ethernet Controller
+ 4368 Yukon 88EC034 based Ethernet Controller
+ 4369 Yukon 88EC042 PCI-E Gigabit Ethernet Controller
+ 436A Yukon 88E8058 PCI-E Gigabit Ethernet Controller
+ 436B Yukon 88E8071 PCI-E Gigabit Ethernet Controller
+ 4611 GT-64115 System Controller
+ 4620 GT-64120 System Controller for R5000 & R7000 (64-bit PCI)
+ 4801 GT-48001 8-port Switched Ethernet Controller
+ 4809 GT-48300 4-port (2.4Gb each) Crossbar Switch
+ 5005 Belkin F5D5005 Gigabit Desktop Network PCI Card
+ 5040 88SX5040 4-port SATA I PCI-X Controller
+ 5041 MV88SX5041 4-port SATA PCI-X Controller
+ 5080 MV88SX5080 8-port SATA PCI-X Controller
+ 5081 MV88SX5081 8-port SATA PCI-X Controller
+ 6041 MV88SX6041 Marvell Technology Group Ltd. MV88SX6041 4-port SATA II PCI-X Controller (rev 03)
+ 6042 MV88SX6042 4-port SATA II PCI-X Controller
+ 6081 MV88SX6081 8-port SATA II PCI-X Controller
+ 6101 6101 SATA2 Controller
+ 6111 6111 SATA2 Controller
+ 6120 6120 SATA2 Controller
+ 6121 6121 SATA2 Controller
+ 6122 6122 SATA2 Controller
+ 6140 6140 SATA2 Controller
+ 6141 6141 SATA2 Controller
+ 6145 ? Add-on IC to provide 4x SATA Ports, attached to ICH7 (SthBridge?) via PCI-Express.
+ 6320 GT-64130/131 System Controller for PowerPC Processors
+ 6460 MV64360/64361/64362 System Controller
+ 6480 MV6446x System Controller for PowerPC Processors
+ 6485 MV6446x System Controller for PowerPC Processors, Revision B
+ 7042 MV88SXxxxx Family 4-port SATA II PCIe Controller (??)
+ 9653 GT-96100A Advanced Communication Controller
+ F003 GT-64010 Primary Image Piranha Image Generator
+ F004 GT-64120 Primary Image Barracuda Image Generator
+ F006 GT-64120A Primary Image Cruncher Geometry Accelerator
+11AC Canon Information Systems
+11AD Lite-On Communications Inc
+ 0001 LC82C168 Fast Ethernet Adapter (??)
+ 0002 KNE110TX Kingston EtheRx KNE110TX PCI Fast Ethernet Adapter
+ C115 LC82C115 PNIC II PCI MAC/PHY
+11AE Scitex Corporation Ltd
+ 4153 Bridge Controller
+ 5842 Bridge Controller
+11AF Pro-Log Corp/AVID Technology Inc
+ 0001 9704 Cinema
+11B0 V3 Semiconductor Inc
+ 0001 V960PBC/PSC i960 Local Bus to PCI Bridge
+ 0002 V961PBC/PSC i960Jx Local Bus to PCI Bridge
+ 0004 V962PBC/PSC i960Cx/Hx Local Bus to PCI Bridge
+ 0010 V292PBC/PSC Am29K Local Bus to PCI Bridge
+ 0021 V363EPC i960Sx Local Bus to PCI Bridge
+ 0022 V363EPC i960Jx Local Bus to PCI Bridge
+ 0024 V363EPC i960Cx/Hx Local Bus to PCI Bridge
+ 0030 V363EPC Am29K Local Bus to PCI Bridge
+ 0100 V320USC PCI System Controller for 32-bit MIPS CPUs (9 bit SYSCMD Bus)
+ 0101 V320USC PCI System Controller for 32-bit MIPS CPUs (5 bit SYSCMD Bus)
+ 0102 V320USC PCI System Controller for Super-H SH3 CPU
+ 0103 V320USC PCI System Controller for Super-H SH4 CPU
+ 0200 V370PDC High Perf. SDRAM Controller & I/O Control Unit
+ 0292 V292PBC Am29030/40 PCI Bridge
+ 0500 V340HPC PCI System Controller for 64-bit MIPS CPUs
+ 0960 V96xPBC i960 Bridges for i960 Processors
+ C960 V96DPC i960 Dual PCI Bridge
+11B1 Apricot Computers
+11B2 Eastman Kodak
+11B3 Barr Systems Inc.
+11B4 Leitch Technology International
+11B5 Radstone Technology Ltd.
+ 0001 PMC/PMX1553 1553 Bus Interface Card
+ 0002 PMCF1 FLASH memory Card
+ 0003 PMCMMA Multi Media Adapter
+ 0004 PMCVGO Video Graphics Overlay
+ 0005 PMCPCIS PPzero Slave Interface Card
+ 0006 PMCPCIM PPzero Master Interface Card
+ 0007 PMCQ1 Serial/1553 Interface Card
+ 0008 EPMCQ2 Intelligent Serial/Ethernet Card
+ 0009 PMCPIO1 Parallel I/O Module
+ 000A PMCFA1C Fibre Channel Adapter
+ 000B PMCHH1 High Speed DSP Gateway Module
+ 000C PMCMA2 Memory Adaptor Module
+ 0012 PMCF1 FLASH memory Card (V2)
+ 0013 PMC1553EX 1553 Bus Interface Card
+ 0014 PMC1553E 1553 Bus Interface Card
+ 2200 PMCFA2C Dual Fibre Channel Adapter
+11B6 United Video Corp
+11B7 Motorola
+11B8 Xpoint Technologies Inc
+ 0001 Quad PeerMaster
+11B9 Pathlight Technology Inc.
+ C0ED SSA Controller
+11BA Videotron Corp
+11BB Pyramid Technology/DAPHA Electronics Corp
+11BC Network Peripherals Inc
+ 0001 NPI NuCard PCI FDDI
+11BD Pinnacle Systems Inc.
+ 0015 FireWire IEEE1394
+ BEBE 51015777 pinnacle, bendino V1.0A; 0PC0P6
+ BEDE 51011810 MB87J3560
+11BE International Microcircuits Inc
+11BF Astrodesign Inc.
+11C0 Hewlett Packard
+11C1 Lucent/Agere Systems (Was: AT&T MicroElectronics)
+ 0420 CardBus 56k Modem
+ 0440 LT Winmodem 56k Data+Fax+Voice+DSVD
+ 0441 LT WinModem 56k Data+Fax
+ 0442 1648T00 LT WinModem 56K Data+Fax
+ 0443 LT Winmodem 1646T00
+ 0444 LT Winmodem 845G
+ 0445 LT Winmodem
+ 0446 LT Winmodem
+ 0447 LT Winmodem windowsme
+ 0448 LT Winmodem 56k SV2P2
+ 0449 LT Winmodem 56k 0449144F
+ 044A LT Winmodem 56k
+ 044B LT Winmodem
+ 044C LT Winmodem 9M56PML-G
+ 044D LT Winmodem
+ 044E lucent 1646T00 LT WinModem 56k Data+Fax or Agere F-1156IV/A3
+ 044F 90094-1 LT V.90+DSL WildFire Modem
+ 0450 1456VQH19R-1(INT) LT Winmodem 56K
+ 0451 LT Winmodem LT WinModem 56k Data+Fax+Voice+DSVD
+ 0452 LT Winmodem 1513144
+ 0453 LT Winmodem
+ 0454 LT Winmodem
+ 0455 LT Winmodem
+ 0456 LT Winmodem
+ 0457 LT Winmodem
+ 0458 1648C Mars 3 Mercury v.92 v.44
+ 0459 LT Winmodem
+ 045A LT Winmodem
+ 045B LT WinModem
+ 045C LT WinModem
+ 045D LT WinModem mars2
+ 0461 V90 Wildfire Modem
+ 0462 1690 56K.V90/ADSL Wildwire Modem
+ 0464 This is NOT a Riptide! (as previously stated) Lucent Wildwire v.90 + DSL modem
+ 0480 Venus Winmodem 56k.V90/ADSL Wildfire Modem
+ 048C 56k V.90 Modem
+ 048E svp92-t00 56k V.92modem
+ 048F SV92P-T00 Agere PCI Soft Modem. SV92PL
+ 0600 sv92p2 56k V.92 Modem
+ 0620 SV92PP Agere PCI Soft Modem
+ 3026 ? Agere Systems HDA Modem
+ 5400 OR3TP12 FPSC FPGA with 32/64bit, 33/66MHz core
+ 5801 USB Open Host Controller
+ 5802 USS-312MC 2-port PCI-to-USB OpenHCI Host Ctrlr
+ 5803 USS-344 Quadrabus 4-port OpenHCI USB Host Controller
+ 5805 uss344 USB Advanced Host Controller
+ 5811 FW322 1394A PCI PHY/Link Open Host Ctrlr I/F
+ 9876 lucent 1646T00 LT WinModem 56K Data+Fax
+ AB10 WL60010 Wireless LAN MAC
+ AB11 WL60040 Multimode Wireles LAN MAC
+ AB20 WaveLAN PCI Wireless LAN Adapter
+ AB21 Wireless PCI Adapter
+ AB30 Hermes2? Mini-PCI WaveLAN a/b/g
+ ED00 ET-131x PCI-E Gigabit Ethernet Adapter
+ ED01 ET-1301 PCI-E Fast Ethernet Adapter
+11C2 Sand Microelectronics
+11C3 NEC Corp
+11C4 Document Technologies Industries
+11C5 Shiva Corporatin
+11C6 Dainippon Screen MFG Co Ltd
+ 3001 1 VM-1200 Opto Unit Controller
+11C7 D.C.M. Data Systems
+11C8 Dolphin Interconnect Solutions
+ 0658 PSB 32 32 bit , 33 Mhz PCI-SCI Bridge
+ AB34 802.11b MiniPCI Wireless Card
+ D665 PSB64 64 bit , 33 Mhz PCI-SCI Bridge
+ D667 PSB66 64 bit , 66 Mhz PCI-SCI Bridge. (D33x)
+11C9 MAGMA
+ 0010 16-line serial port w/- DMA
+ 0011 4-line serial port w/- DMA
+11CA LSI Systems Inc
+11CB Specialix International Ltd.
+ 2000 PCI-9050-1100083-11 port small IC
+ 4000 SUPI-1 XIO/SIO Host
+ 8000 T225 Bridge RIO Host
+ 9501 SPEED4+ PCI Adapter
+ 9511 SPEED4+ PCI Adapter Local Bus
+11CC Michels & Kleberhoff Computer GmbH
+11CD HAL Computer Systems Inc.
+11CE Primary Rate Inc
+ 102B 1001 FF00102B
+11CF Pioneer Electronic Corporation
+11D0 Loral Frederal Systems - Manassas
+11D1 AuraVision Corporation
+ 01F7 VxP524 PCI Video Processor
+ 01F8 VxP524 PCI Video Processor
+ 01F9 rev_03 tuner card
+11D2 Intercom Inc.
+11D3 Trancell Systems Inc
+11D4 Analog Devices, Inc.
+ 1535 ADSP-21535 Blackfin DSP PCI Bus Interface
+ 1805 Motorola SM56 PCI Speakerphone Modem
+ 1807 56k Winmodem Chip
+ 1889 AD1980 Sound Chip
+ 1981 AD1981HD SoundMAX Integrated Digital HD Audio
+ 1983 AD1983HD SoundMAX Integrated Digital HD Audio
+ 1986 AD1986A SoundMAX Integrated Digital HD Audio
+ 2192 ADSP-2192 DSP Microcomputer (function #0)
+ 219A ADSP-2192 DSP Microcomputer (function #1)
+ 219E ADSP-2192 DSP Microcomputer (function #2)
+ 2F44 ADSP-2141 SafeNet Crypto Accelerator chip
+11D5 Tahoma Technology
+ 0115 10115 Versatec Parallel Interface (VPI) + Centronics
+ 0116 10118 DR11-W emulator
+ 0117 10117 Versatec Parallel Interface (VPI) + Centronics
+ 0118 10118 DR11-W emulator
+11D6 Tekelec Technologies
+11D7 Trenton Terminals Inc
+11D8 Image Technologies Development
+11D9 Tec Corporation
+11DA Novell
+11DB Sega Enterprises Ltd
+ 1234 Dreamcast Broadband Adapter
+11DC Questra Corp
+11DD Crosfield Electronics Ltd
+11DE Zoran Corporation
+ 6057 ZR36057/36067 MotionJPEG/TV Card
+ 6120 ZR36120PQC MPEG VideoBVPSXI Capture Card
+11DF New Wave PDG
+11E0 Cray Communications A/S
+11E1 Gec Plessey Semiconductors Inc
+11E2 Samsung Information Systems America
+11E3 Quicklogic Corp
+ 5030 PC Watchdog
+11E4 Second Wave Inc
+11E5 IIX Consulting
+11E6 Mitsui-Zosen System Research
+11E7 Toshiba America, Electric Company
+11E8 Digital Processing Systems Inc
+11E9 Highwater Designs Ltd
+11EA Elsag Bailey
+11EB Formation, Inc
+11EC Coreco Inc
+11ED Mediamatics
+11EE Dome Imaging Systems Inc
+11EF Nicolet Technologies B.V.
+11F0 Compu-Shack GmbH
+ 4231 FDDI Network Card
+ 4232 FASTline UTP Quattro
+ 4233 FASTline FO
+ 4234 FASTline UTP
+ 4235 FASTline-II UTP
+ 4236 FASTline-II FO
+ 4731 GIGAline Gigabit Ethernet Adapter
+11F1 Symbios Logic Inc
+11F2 Picture Tel Japan K.K.
+11F3 Keithley Metrabyte
+11F4 Kinetic Systems Corporation
+ 2915 2915
+11F5 Computing Devices International
+11F6 Powermatic Data Systems Ltd
+ 0112 ReadyLink ENET100-VG4
+ 0113 FreedomLine 100
+ 1401 ReadyLink RL2000 Ethernet Adapter (Winbond W89C940)
+ 2011 TXA9882 ReadyLink RL100ATX/PCI Fast Ethernet Adapter
+ 2201 TXA9883 ReadyLink 100TX (Winbond W89C840)
+ 9881 TXA9881? ReadyLink RL100TX Fast Ethernet Adapter
+11F7 Scientific Atlanta
+11F8 PMC-Sierra Inc.
+ 7364 PM7364 FREEDM-32 Frame Engine and Datalink Manager
+ 7366 PM7366 FREEDM-8 Frame Engine and Datalink Manager
+ 7367 PM7367 FREEDM-32P32 Frame Engine and Datalink Manager
+ 7375 PM7375 LASAR-155 ATM SAR
+ 7380 PM7380 FREEDM-32P672 Frame Engine and Datalink Manager
+ 7382 PM7382 FREEDM-32P256 Frame Engine and Datalink Manager
+ 7384 PM7384 FREEDM-84P672 Frame Engine and Datalink Manager
+ 8000 PM8000 SPC 6G SAS/SATA Controller
+ 8010 PM8010 SRC 6G SAS/SATA RAID Controller
+11F9 I-Cube Inc
+11FA Kasan Electronics Company Ltd
+11FB Datel Inc
+11FC Silicon Magic
+11FD High Street Consultants
+11FE Comtrol Corp
+ 0001 RocketPort 32-port
+ 0002 RocketPort 8-port
+ 0003 RocketPort 16-port
+ 0004 RocketPort 4-port
+ 0005 RocketPort 8-port
+ 0006 RocketPort 8-port
+ 0007 RocketPort 4-port
+ 0008 RocketPort 8-port
+ 0009 RocketPort 16-port
+ 000A RocketPort 4-port
+ 000B RocketPort 8-port
+ 000C RocketPort 6-port
+ 000D RocketPort 4-port
+ 000E RocketPort 2-port
+ 000F RocketPort 2-port
+ 0801 RocketPort UPCI 32 port w/external I/F
+ 0802 RocketPort UPCI 8 port w/external I/F
+ 0803 RocketPort UPCI 16 port w/external I/F
+ 0805 RocketPort UPCI 8 port w/octa cable
+ 080C RocketModem III 8 port
+ 080D RocketModem III 4 port
+ 0903 RocketPort Compact PCI 16 port w/external I/F
+ 8015 RocketPort 4-port UART 16954
+11FF Scion Corp
+1200 CSS Corp
+1201 Vista Controls Corp
+1202 Network General Corp
+ 0001 PCI ATM Adapter (NAIATMPCI)
+ 4300 Gigabit Ethernet Adapter
+1203 Bayer Corporation Agfa Div
+1204 Lattice Semiconductor Corp
+1205 Array Corp
+1206 Amdahl Corp
+1208 Parsytec GmbH
+ 4853 HS-Link Device
+1209 Sci Systems Inc
+ 0100 PCI 9054 PLX PCI BRIDGE
+120A Synaptel
+120B Adaptive Solutions
+120C Technical Corp
+120D Compression Labs Inc.
+120E Cyclades Corporation
+ 0100 Cyclom-Y Multiport Serial Card
+ 0101 Cyclom-Y Multiport Serial Card
+ 0102 Cyclom-4Y Multiport Serial Card
+ 0103 Cyclom-4Y Multiport Serial Card
+ 0104 Cyclom-8Y Multiport Serial Card
+ 0105 Cyclom-8Y Multiport Serial Card
+ 0200 Cyclom-Z below 1Mb Intelligent Serial Card
+ 0201 Cyclom-Z above 1Mb Intelligent Serial Card
+ 0300 PC300 RX 2
+ 0301 PC300 RX 1
+ 0302 PC300 TE 2
+ 0303 PC300 TE 1
+ 0310 PC300 TE 2
+ 0311 PC300 TE 1
+ 0320 PC300/TE-M (2 ports)
+ 0321 PC300/TE-M (1 port)
+ 0400 PC400
+120F Essential Communications
+ 0001 Roadrunner
+1210 Hyperparallel Technologies
+1211 Braintech Inc
+1212 Kingston Technology Corp
+1213 Applied Intelligent Systems Inc
+1214 Performance Technologies Inc
+1215 Interware Co Ltd
+1216 Purup Prepress A/S
+1217 O2 Micro Inc
+ 00F7 0x00f71217 1394 Open Host Controller Interface
+ 6729 OZ6729 PCI to PCMCIA Bridge
+ 673A OZ6730 PCI to PCMCIA Bridge
+ 6832 OZ6832/3 CardBus Controller
+ 6836 OZ6836/6860 CardBus Controller
+ 6872 OZ6812 CardBus Controller
+ 6925 OZ6922 CardBus Controller
+ 6933 OZ6933/711E1 SmartCardBus Controller
+ 6972 OZ6912/711E0 SmartCardBus Controller
+ 7110 OZ711Mx MemoryCardBus Accelerator
+ 7112 OZ711EC1/M1 SmartCardBus MultiMediaBay Controller
+ 7113 OZ711EC1 SmartCardBus Controller
+ 7114 OZ711M1 SmartCardBus MultiMediaBay Controller
+ 7120 Unknown device O2Micro Integrated MMC/SD controller
+ 7130 OZ711M3 Integrated MMC/SD/MS/xD/SM Controller
+ 7134 OZ711MP1/MS1 MemoryCardBus Controller 6-in-1
+ 7135 OZ711EZ1 MemoryCardBus Controller
+ 71E2 OZ711E2 SmartCardBus Controller
+ 7212 OZ711M2 SmartCardBus MultiMediaBay Controller
+ 7213 OZ6933E CardBus Controller
+ 7223 OZ711M3 SmartCardBus MultiMediaBay Controller
+ 7233 OZ711MP3/MS3 MemoryCardBus Controller
+1218 Hybricon Corp
+1219 First Virtual Corp
+121A 3dfx Interactive Inc
+ 0001 Voodoo Voodoo 3D Acceleration Chip
+ 0002 Voodoo2 Voodoo 2 3D Accelerator
+ 0003 Voodoo Banshee Voodoo Banshee
+ 0004 VooDoo Banshee [Velocity 100]
+ 0005 Voodoo3 All Voodoo3 chips, 3000
+ 0007 Voodoo4
+ 0009 Voodoo4/5
+ 0010 Rampage Rev.A AGPx4, 0.25µ, 200/2x200 core/RAM
+ 0057 Voodoo 3/3000 [Avenger]
+121B Advanced Telecommunications Modules
+121C Nippon Texa Co Ltd
+121D Lippert Automationstechnik GmbH
+121E CSPI
+121F Arcus Technology Inc
+1220 Ariel Corporation
+ 1220 9622qac AMCC 5933 TMS320C80 DSP/Imaging Board
+1221 Contec Microelectronics Europe BV
+1222 Ancor Communications Inc
+1223 Emerson Network Power, Embedded Computing
+ 0001 KatanaQp Real-Time Processing Blade in a standard single-slot AdvancedTCA® formfactor
+ 0002 KosaiPM Intel® Pentium-M® based AMC Module
+ 0003 PM/Link
+ 0004 PM/T1
+ 0005 PM/E1
+ 0008 PM/SLS
+ 0009 BajaSpan Resource Target
+ 000A BajaSpan Section 0
+ 000B BajaSpan Section 1
+ 000C BajaSpan Section 2
+ 000D BajaSpan Section 3
+ 000E PM/PPC
+ 0044 Memory controller Memory controller
+1224 Interactive Images
+ 1000 CL560? Plum Audio, Video and VTR Controller
+1225 Power I/O Inc.
+1227 Tech-Source
+ 0006 Raptor GFX 8P
+1228 Norsk Elektro Optikk A/S
+1229 Data Kinesis Inc.
+122A Integrated Telecom
+122B LG Industrial Systems Co. Ltd.
+122C sci-worx GmbH
+122D Aztech System Ltd
+ 1206 ICH2 Asus
+ 4201 MR2800W AMR 56K modem
+ 50DC PCI168/3328 Audio Device
+ 80DA 3328 Audio
+122E Xyratex
+122F Andrew Corp.
+1230 Fishcamp Engineering
+1231 Woodward McCoach Inc.
+1232 GPT Limited
+1233 Bus-Tech Inc.
+1234 Technical Corp
+1235 RISQ Modular Systems Inc
+1236 Sigma Designs, Inc
+ 0000 RealMagic64/GX SD6425
+ 0531 MX98715/25 Single Chip Fast Ethernet NIC Controller
+ 3D01 ? RealMagic/2D
+ 6401 REALmagic64/GX GUI Accelerator
+ 9708 realmagic64/gx sd6425
+1237 Alta Technology Corp.
+1238 Adtran
+1239 The 3DO Company
+123A Visicom Laboratories Inc.
+123B Seeq Technology Inc.
+123C Century Systems Inc.
+123D Engineering Design Team Inc.
+ 0000 EasyConnect 8/32
+ 0002 EasyConnect 8/64
+ 0003 EasyIO
+ 0010 PCI-DV PCI-DV Digital Video Interface
+123E Simutech Inc
+123F C-Cube Microsystems
+ 00E4 cl 480 MPEG
+ 5111 DV/MPEG Device
+ 6120 12.03 DVD device
+ 8120 176 i845E
+ 8888 12.03 cPEG C 3.0 DVD/MPEG2 Decoder
+1240 Marathon Technologies Corp.
+1241 DSC Communications
+ 1603 1 keyboard
+1242 Jaycor Networks Inc
+ 1460 JNIC-1460 2-Gb/s Fibre Channel-PCI 64-bit 66 MHz
+ 1560 JNIC-1560 Dual Channel 2 Gb/s Fibre Channel-PCI-X
+ 4643 JNI PCI 64-bit Fibrechannel JNI PCI 64-bit Fibrechannel (needs clone)
+ 6562 FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter
+ 656A FCX-6562 PCI-X Fibre Channel Adapter
+1243 Delphax
+1244 AVM AUDIOVISUELLES MKTG & Computer GmbH
+ 0700 B1 ISDN controller
+ 0800 C4 ISDN Controller
+ 0A00 Fritz!Card A1 ISDN Controller
+ 0E00 Fritz!PCI v2.0 ISDN Controller
+ 1100 C2 ISDN Controller
+ 1200 T1 ISDN Controller
+ 2700 E13 32A5KYW / 2CAKRCT DSP TNETD5100GHK / TNETD5015
+ 2900 Fritz!Card DSL v2.0
+1245 A.P.D., S.A.
+1246 Dipix Technologies Inc
+1247 Xylon Research Inc.
+1248 Central Data Corp.
+1249 Samsung Electronics Co. Ltd.
+124A AEG Electrocom GmbH
+124B Greenspring Computers Inc
+ 0040 cPCI-200 Four Slot IndustryPack Carrier
+124C Solitron Technologies Inc.
+ 0220 . .
+124D Stallion Technologies Inc
+ 0000 EasyConnect 8/32
+ 0002 EasyConnect 8/64
+ 0003 EasyIO PCI
+ 0004 EasyConnection ECRA-PCI
+124E Cylink
+124F Infortrend Technology Inc
+ 0041 IFT-2000 Series PCI RAID Controller
+1250 Hitachi Microcomputer System Ltd.
+1251 VLSI Solution OY
+1253 Guzik Technical Enterprises
+1254 Linear Systems Ltd.
+1255 Optibase Ltd.
+ 1110 MPEG Forge
+ 1210 MPEG Fusion
+ 2110 VideoPlex-pci VideoPlex pci bpc1825 rev a
+ 2120 VideoPlex plus VideoPlex BPC 1851 A
+ 2130 VideoQuest
+1256 Perceptive Solutions Inc.
+ 4201 PCI-2240i Dale EIDE Adapter
+ 4401 PCI-2220i Dale EIDE Adapter
+ 5201 PCI-2000 IntelliCache SCSI Controller
+1257 Vertex Networks Inc.
+1258 Gilbarco Inc.
+1259 Allied Telesyn International
+ 2503 Realtek 8139b
+ 2560 AT-2560 Fast Ethernet Adapter (i82557B)
+ C107 Realtek 8169S
+125A ABB Power Systems
+125B Asix Electronics Corp.
+ 0B95 AX88772 USB2.0 to 10/100M Fast Ethernet Controller
+ 1400 AX88140A ASIX AX88140 Based PCI Fast Ethernet Adapter
+ 1720 AX88172 USB2 to Fast Ethernet Adapter
+125C Aurora Technologies Inc.
+ 0101 Saturn 4520P
+ 0640 Aries 16000P
+125D ESS Technology
+ 0000 ESS336H PCI Fax Modem (early model)
+ 1948 Solo??
+ 1961 Multimedia Device ESS Solo-1 Soundcard
+ 1968 ES2839 Maestro-2 PCI audio accelerator
+ 1969 ES72222 Solo-1 PCI AudioDrive family
+ 1978 ES1978 Maestro-2E Audiodrive, ES1970 Canyon3D
+ 1988 ES1988 ESS Allegro PCI Audio (WDM)
+ 1989 ES1989 Maestro-3 (Alegro) notebook's audiodrive
+ 1990 ES2898S
+ 1998 ES1980 Maestro-3 PCI Audio Accelerator
+ 1999 ES1983 Maestro-3.COMM ES56CVM-PI PCI voice+Fax Modem
+ 199A ES1980 Maestro-3 PCI Audio Accelerator
+ 199B ES1938/41/46 solo audio Maestro-3.COMM PCI Voice+audio
+ 2808 ES336H PCI Fax Modem (later model)
+ 2828 ES2828S TeleDrive
+ 2838 ES2838/2839 SuperLink Modem
+ 2839 2838 Superlink Modem/V.92 chipset 56K
+ 2843 ES2838/2839 SuperLink-MLP Voice Modem
+ 2847 ES2838/2839 SuperLink-MLP 10 Voice Modem
+ 2898 2898 TelDrive ES56T-PI family V.90 PCI modem
+125E Specialvideo Engineering SRL
+125F Concurrent Technologies Inc.
+1260 Intersil Americas Inc (Was: Harris Semiconductor)
+ 3872 PRISM 3 LAN-Express IEEE 802.11b PCI Adapter
+ 3873 PRISM 2.5 802.11b 11Mbps Wireless Controller
+ 3886 ISL3886 [Prism Javelin/Prism Xbow]
+ 3890 ISL3890 PRISM GT 802.11g 54Mbps Wireless Controller
+ 8130 HMP8130 NTSC/PAL Video Decoder
+ 8131 HMP8131 NTSC/PAL Video Decoder
+ FFFF ISL3886IK
+1261 Matsushita-Kotobuki Electronics Industries
+1262 ES Computer Company Ltd
+1263 Sonic Solutions
+1264 Aval Nagasaki Corp.
+1265 Casio Computer Co. Ltd.
+1266 Microdyne Corp.
+ 0001 NE10/100 Adapter (i82557B)
+ 1910 NE2000Plus (RT8029) Ethernet Adapter
+1267 S.A. Telecommunications
+ 1016 NICCY PCI card
+ 4243 Satellite receiver board / MPEG2 decoder
+ 5352 PCR2101
+ 5A4B telsatturbo
+1268 Tektronix
+ 0204 Unknown Tektronix IO Processor / Tektronix PCI Acquisition Interface Rev 204
+1269 Thomson-CSF/TTM
+126A Lexmark International Inc.
+126B Adax Inc.
+126C Nortel Networks (Was: Northern Telecom)
+ 1211 10/100BaseTX [RTL81xx]
+ 126C 802.11b Wireless Ethernet Adapter
+ 1F1F e-mobility 802.11b Wireless LAN PCI Card
+126D Splash Technology Inc.
+126E Sumitomo Metal Industries Ltd.
+126F Silicon Motion Inc
+ 0710 SM710 LynxEM
+ 0712 SM712 LynxEM+
+ 0720 SM720/1 Lynx3DM, SM722 Lynx3DM+
+ 0810 SM810 LynxE
+ 0811 SM811 LynxE
+ 0820 SM820 Lynx3D
+ 0910 SM910 SILICON MOTION
+1270 Olympus Optical Co. Ltd.
+1271 GW Instruments
+ 1025 SoftV90 Data Fax Modem
+1272 Telematics International
+1273 Hughes Network Systems
+ 0002 DirecPC t9p17af-01
+1274 Creative (Was: Ensoniq)
+ 1274 5880x multimedia audio device
+ 1371 ES1371, ES1373 AudioPCI
+ 1373 ES1373 Sound Blaster Audio(PCI)
+ 5000 ES1373 AudioPCI
+ 5880 5880x AudioPci
+1275 Network Appliance Corp
+1276 Switched Network Technologies Inc.
+1277 Comstream
+1278 VMETRO Ltd (was: Transtech Parallel Systems Ltd)
+ 0701 TPE3/TM3 PowerPC Node
+ 0710 TPE5 PowerPC PCI board
+ 1100 PMC-FPGA02
+1279 Transmeta Corp.
+ 0060 TM8000 Efficeon Virtual Northbridge
+ 0061 TMTM8000 Efficeon AGP Bridge
+ 0295 Virtual Northbridge
+ 0395 LongRun Northbridge
+ 0396 SDRAM Controller
+ 0397 BIOS scratchpad
+127A Rockwell Semiconductor Systems (Also Conexant)
+ 1002 RC56HCFPCI HCF 56k V.90 Modem
+ 1003 HCF 56k V.90 Modem
+ 1004 HCF 56k V.90 Modem
+ 1005 R6786-61 HCF 56k V.90 Speakerphone Modem
+ 1022 HCF V.90 Modem
+ 1023 HCF V.90 Data/Fax Modem
+ 1024 HCF 56k PCI Modem
+ 1025 HCF 56k PCI Modem
+ 1026 HCF 56k PCI Speakerphone Modem
+ 1032 HCF 56k PCI Modem
+ 1033 HCF 56k PCI Modem
+ 1034 HCF 56k PCI Modem
+ 1035 RH56D/SP-PCI HCF 56k PCI Speakerphone Modem
+ 1036 HCF 56k PCI Modem
+ 1085 Volcano HCF 56k PCI Modem
+ 2003 Conexant SoftK56 PCI Modem
+ 2004 Conexant SoftK56 PCI Modem
+ 2005 RS56/SP-PCI11P1 Conexant SoftK56 Speakerphone Modem
+ 2013 Conexant SoftK56 Modem
+ 2014 RS56 SP-PCI Conexant SoftK56 Modem
+ 2015 R6793-11 Conexant SoftK56 Speakerphone Modem
+ 2016 HSF 56k Data/Fax/Voice/Speakerphone Modem
+ 2043 Generic SoftK56
+ 2044 Generic SoftK56
+ 2045 Generic SoftK56
+ 2046 Generic SoftK56
+ 2114 R6793-12 Conexant SoftK56 PCI Modem
+ 2F15 U.S. Robotics 56k Fax Host Int
+ 4300 Riptide Bus / Firmware Downloader
+ 4302 Riptide Input Device
+ 4310 Master Riptide PCI Audio Device
+ 4311 Conexant PCI Modem Enumerator
+ 4312 Riptide PCI Game Controller
+ 4320 Riptide PCI Audio Controller
+ 4321 Riptide HCF 56k PCI Modem
+ 4322 Riptide PCI Game Controller
+ 4330 Riptide Bus / Firmware Downloader
+ 4332 Riptide Input Device
+ 4340 Riptide Bus / Firmware Downloader
+ 4342 Riptide Input Device
+ 4350 Riptide Bus / Firmware Downloader (No Audio)
+ 4352 Riptide Input Device
+ 4360 Riptide Bus / Firmware Downloader (No Audio)
+ 4362 Riptide Input Device
+ 5278 Harmonic DVB Network Adapter
+ 8234 RapidFire 616X ATM155 Adapter
+127B Pixera Corp
+127C Crosspoint Solutions Inc.
+127D Vela Research LP
+127E Winnou, L.P.
+127F Fujifilm
+1280 Photoscript Group Ltd.
+1281 Yokogawa Electronic Corp.
+1282 Davicom Semiconductor Inc.
+ 9009 DM9009 Ethernet Adapter
+ 9100 DM9100 Ethernet Controller
+ 9102 DM9102/A/AF 10/100 Mbps Fast Ethernet Controller
+1283 Integrated Technology Express (ITE) Inc
+ 0801 IT8152F/G & IT8172G Audio Digital Controller
+ 673A IT8330G PCI EIDE Controller
+ 8152 IT8152F/G Advanced RISC-to-PCI Companion Chip
+ 8172 IT8172G Ultra RISC (MIPS, SH4) Companion Chip
+ 8211 IT8211F ATA 133 IDE Controller
+ 8212 IT8212F ATA 133 IDE RAID Controller
+ 8330 IT8330G PCI Host Bridge
+ 8872 IT8871/72 PCI to ISA I/O chip with SMB, Parallel Port & GPIO
+ 8875 IT8875F PCI Parallel Port
+ 8888 IT8888F PCI to ISA Bridge with SMB
+ 8889 IT8889F PCI to ISA Bridge
+ 9876 IT8875F PCI I/O CARD
+ E886 IT8330G PCI to ISA Bridge
+1284 Sahara Networks Inc
+1285 Platform Technologies Inc.
+ 0100 ES1849 Maestro-1 AudioDrive
+1286 MAZeT GmbH
+1287 LuxSonor Inc.
+ 001E LS220D DVD Decoder
+ 001F LS220C DVD Decoder
+ 0020 LS242 MPEG/DVD video decoder
+1288 Timestep Corp.
+1289 AVC Technology Inc.
+128A Asante Technologies Inc.
+ F001 Ethernet 10/100 AsanteFAST 10/100 PCI Ethernet Adapter
+128B Transwitch Corporation
+128C Retix Corp.
+128D G2 Networks Inc.
+ 0021 ATM155 Adapter
+128E Hoon Tech co Ltd/Samho Multi Tech Ltd
+ 0008 ST128 WSS/SB
+ 0009 ST128 SAM9407
+ 000A ST128 Game Port
+ 000B ST128 MPU Port
+ 000C ST128 Ctrl Port
+128F Tateno Dennou Inc.
+1290 Sord Computer Corporation
+1291 NCS Computer Italia
+1292 Tritech Microelectronics Intl PTE
+1293 Media Reality Technology
+1294 Rhetorex Inc.
+1295 Imagenation Corp.
+1296 Kofax Image Products
+1297 Holco Ent Co Ltd/Shuttle Computer
+1298 Spellcaster Telecommunications Inc.
+1299 Knowledge Technology Laboratories
+129A VMETRO Inc.
+ 0415 PBT-415 PCI 66MHz Analyzer and 33MHz Exerciser
+ 0515 PBT-515 PCI 66MHz Analyzer and Exerciser
+ 0615 PBT-615 PCI 66MHz and PCI-X 100MHz Bus Analyzer and Exerciser
+ 0715 Vanguard PCI/PMC/cPCI PCI 66MHz and PCI-X 133MHz Bus Analyzer and Exerciser
+ 1100 PMC-FPGA05
+ DD10 DPIO Digital Parallel Input Output Device 32bit, 33MHz PCI bus
+ DD11 DPIO2 Digital Parallel Input Output Device 64bit, 33MHz PCI bus
+ DD12 DPIO2-66 Digital Parallel Input Output Device 64bit, 66MHz PCI bus
+129B Image Access
+129C Xantel Corp/Jaycor
+129D CompCore Multimedia Inc.
+129E Victor Company of Japan Ltd
+129F OEC Medical Systems Inc.
+12A0 Allen-Bradley Company
+12A1 Simpact Associates Inc
+12A2 NewGen Systems Corp.
+12A3 Lucent Technologies AMR
+ ECB8 1646T00 V.92 Lucent Modem
+12A4 NTT Electronics Technology Company
+12A5 Vision Dynamics Ltd.
+12A6 Scalable Networks Inc.
+12A7 AMO GmbH
+12A8 News Datacom
+12A9 Xiotech Corp.
+12AA SDL Communications Inc.
+ 5568 Wan405 WANic 400 series X.21 controller
+ 556C NAI HSSI Sniffer PCI Adapter
+12AB Yuan Yuan Enterprise Co. Ltd.
+ 3000 TUN-200/MPG-200C PCI TV (and possibly DVD Decoder??) Card
+12AC MeasureX Corp.
+12AD Multidata GmbH
+12AE Alteon Networks Inc.
+ 0001 3C986 ACENIC 1000 Base-SX Gigabit Ethernet Adapter
+ 0002 3C986-T Copper Gigabit Ethernet Adapter
+12AF TDK USA Corp.
+12B0 Jorge Scientific Corp.
+12B1 GammaLink
+12B2 General Signal Networks
+ 0209 SNA Link/9000 PCI to ESCON Controller
+12B3 Inter-Face Co. Ltd.
+12B4 Future Tel Inc.
+12B5 Granite Systems Inc.
+12B6 Natural Microsystems
+12B7 ACCUMEN/Cognex Modular Vision Systems
+12B8 Korg
+12B9 3COM Corp, Modem Division (Formerly US Robotics)
+ 1006 5610 5610 56K FaxModem WinModem
+ 1007 AD1807JS US Robotics 56K DATA FAX WINMODEM
+ 1008 USR5610B USR5610B (0005610-02) 56K Performance Pro Modem (PCI Internal)
+12BA Bittware Research/PMC Sierra
+ 0032 Hammerhead-Lite-PCI DSP Prototyping & Development Card
+12BB Nippon Unisoft Corp.
+12BC Array Microsystems
+12BD Computerm Corp.
+12BE Anchor Chips Inc
+ 3041 AN3041Q CO-MEM PCI Bus Interface/Cache
+ 3042 AN3042Q CO-MEM Lite PCI Generic Host Bridge/Shared Memory
+12BF Fujifilm Microdevices
+12C0 Infimed
+12C1 GMM Research Corp.
+ 9080 Sync4hs/CCP/PCI/MP communications coprocessor
+12C2 Mentec Ltd.
+12C3 Holtek Microelectronics Inc.
+ 0058 HT80232 LAN Adapter (NE2000-compatible)
+ 5598 HT80229 Ethernet Adapter (NE2000-compatible)
+12C4 Connect Tech Inc.
+ 0001 Blue Heat PCI/8 RS-232
+ 0002 Blue Heat PCI/4 RS-232
+ 0003 Blue Heat PCI/2 RS-232
+ 0004 Blue Heat PCI/8 RS-485
+ 0005 Blue Heat-8 RS232 BlueHeat 8 Port RS232 Serial Board
+ 0006 Blue Heat PCI/4 RS-485
+ 0007 Blue Heat PCI/2+2 RS-232/485
+ 0008 Blue Heat PCI/2 RS-485
+ 0009 Blue Heat PCI/2+6 RS-232/485
+ 000A Blue Heat PCI/8 RS-485 (BH081101V1)
+ 000B Blue Heat PCI/4 RS-485 (BH041101V1)
+ 000C Blue Heat PCI/2 RS-485 (BH021101V1)
+ 000D Blue Heat PCI/2 PTM
+ 000E Blue Heat PCI Custom Osc
+ 000F Blue Heat PCI/8 RS-485 (BH081104V4)
+ 0100 NT960/PCI
+ 0201 cPCI Titan - 2 Port
+ 0202 cPCI Titan - 4 Port
+ 0300 BLueStorm/LP 2 RS232
+ 0301 BLueStorm/LP 4 RS232
+ 0302 BLueStorm/LP 8 RS232
+ 0303 BLueStorm/LP 2 RS232/RS485
+ 0304 BLueStorm/LP 4 RS232/RS485
+ 0305 BLueStorm/LP 8 RS232/RS485
+ 0306 BLueStorm/LP 2 Opto
+ 0307 BLueStorm/LP 4 Opto
+ 0308 BLueStorm/LP 8 Opto
+ 0309 BLueStorm/LP 2 RS485
+ 030A BLueStorm/LP 4 RS485
+ 030B BLueStorm/LP 8 RS485
+ 0310 CTI PCI UART 1+1 (RS232/485)
+ 0311 CTI PCI UART 2+2 (RS232/485)
+ 0312 CTI PCI UART 4+4 (RS232/485)
+ 0320 CTI PCI UART 2
+ 0321 CTI PCI UART 4
+ 0322 CTI PCI UART 8
+ 0330 CTI PCI UART 2 (RS485)
+ 0331 CTI PCI UART 4 (RS485)
+ 0332 CTI PCI UART 8 (RS485)
+12C5 Picture Elements Inc.
+ 007F ISE PEI Imaging Subsystem Engine
+ 0081 PCIVST PCI Thresholding Engine
+ 0085 Video Simulator/Sender
+ 0086 THR2 Multi-scale Thresholder
+12C6 Mitani Corp.
+12C7 Dialogic Corp.
+ 0546 kssjsjj D120JCT-LS Card
+ 0561 BRI/2 Type Card (Voice Driver)
+ 0647 D/240JCT-T1 Card
+ 0648 D/300JCT-E1 Card
+ 0649 D/300JCT-E1 Card
+ 0651 MSI PCI Card
+ 0673 BRI/160-PCI Card
+ 0674 BRI/120-PCI Card
+ 0675 BRI/80-PCI Card
+ 0676 D/41JCT Card
+ 0685 D/480JCT-2T1 Card
+ 0687 D/600JCT-2E1 (75 Ohm) Card
+ 0689 D/600JCT-2E1 Dialogic 2E1 - JCT series
+ 0707 D/320JCT (Resource Only) Card
+ 0708 D/160JCT (Resource Only) Card
+12C8 G Force Co. Ltd.
+12C9 Gigi Operations
+12CA Integrated Computing Engines, Inc.
+12CB Antex Electronics Corp.
+ 0027 StudioCard
+ 002D BX-12
+ 002E SC-2000
+ 002F LX-44
+ 0030 SC-22
+ 0031 BX-44
+ 0032 LX-24M Professional 20-bit 2-in, 4-out audio Card w/- MPEG2
+ 0033 LX-22M
+ 0034 BX-8
+ 0035 BX-12e
+12CC Pluto Technologies International
+12CD Aims Lab
+12CE Netspeed Inc.
+12CF Prophet Systems Inc.
+12D0 GDE Systems Inc.
+12D1 PsiTech
+12D2 Nvidia (Was:STB,SGS Thompson)
+ 0008 NV1
+ 0009 DAC64
+ 0018 RIVA 128 2D/3D GUI Accelerator
+ 0019 RIVA 128ZX 2D/3D GUI Accelerator
+ 0020 TNT
+ 0028 TNT2
+ 0029 UTNT2
+ 002C VTNT2
+ 00A0 ITNT2
+12D3 Vingmed Sound A/S
+12D4 Ulticom, Inc.
+ 0301 EP1S SS7 Telecommunications Interface Adapter
+12D5 Equator Technologies
+ 1000 MAP-CA Broadband Signal Processor
+ 1002 MAP-1000 Digital Signal Processor
+12D6 Analogic Corp.
+12D7 Biotronic SRL
+12D8 Pericom Semiconductor
+ 71E2 PI7C7300 3 Port PCI to PCI bridge
+ 8150 PI7C8150 2-Port PCI to PCI Bridge
+ 8152 PI7C8152 2-Port PCI-To-PCI Bridge
+ E130 PI7C9X130 PCI-X Bridge
+12D9 Aculab Plc.
+12DA True Time
+12DB Annapolis Micro Systems Inc.
+ 0003 FoxFire II
+12DC Symicron Computer Communication Ltd.
+12DD Management Graphics Inc.
+12DE Rainbow Technologies
+ 0200 Cryptoswift 200
+12DF SBS Technologies Inc.
+ 2102 Infineon PEB 20534 Communications Controller
+ 8236 Unknown PCI Controller
+12E0 Chase Research PLC
+ 0010 ST16C654 Quad UART
+ 0020 ST16C654 Quad UART
+ 0021 8x UART
+ 0030 ST16C654 Quad UART
+12E1 Nintendo Co. Ltd.
+12E2 Datum Inc. Bancomm-Timing Division
+12E3 Imation Corp - Medical Imaging Systems
+12E4 Brooktrout Technology Inc.
+ 1000 TR1000 PRI PRI Controller
+ 1120 TruFax Board
+ 1140 ISDN Controller
+ B005 TR1000 BRI BRI Controller
+ B006 TR1000 BRI BRI Controller
+12E5 XCD Inc/Apex Inc
+12E6 Cirel Systems
+12E7 Sebring Systems Inc
+12E8 CRISC Corp.
+12E9 GE Spacenet
+12EA Zuken
+12EB Aureal Semiconductor
+ 0001 AU8820 Vortex 1 Digital Audio Processor
+ 0002 AU8830 Vortex 2 3D Digital Audio Processor
+ 0003 AU8810 Vortex Digital Audio Processor
+ 8803 Vortex 56k Software Modem
+12EC 3A International Inc.
+ 8139 0xxxx 0xxxx
+12ED Optivision Inc.
+12EE Orange Micro, Inc.
+12EF Vienna Systems
+12F0 Pentek
+12F1 Sorenson Vision Inc.
+12F2 Gammagraphx Inc.
+ 1002 215RAAGCGA11F Grapics Radeon X850
+12F3 Radstone Technology / XING Inc
+12F4 Megatel
+12F5 Forks Inc
+12F6 Dawson France
+12F7 Cognex
+12F8 Electronic-Design GmbH
+ 0002 VideoMaker s3 trio
+12F9 FourFold Technologies
+12FB Spectrum Signal Processing
+ 0001 PMC-MAI
+ 00F5 F5 Dakar
+ 02AD PMC-2MAI
+ 2ADC ePMC-2ADC
+ 3100 PRO-3100
+ 3500 PRO-3500
+ 4D4F Modena
+ 8120 ePMC-8120
+ DA62 Daytona C6201 PCI (Hurricane)
+ DB62 Ingliston XBIF
+ DC62 Ingliston PLX9054
+ DD62 Ingliston JTAG/ISP
+ EDDC ePMC-MSDDC
+ FA01 ePMC-FPGA
+12FC Capital Equipment Corp
+ 5CEC PCI-488 GPIB IEEE 488
+12FD i2S
+12FE esd Electronic System Design GmbH
+12FF Lexicon
+1300 Harman International Industries Inc
+1302 Computer Sciences Corp
+1303 Innovative Integration
+ 0001 0239 cM67 CompactPCI DSP Card
+ 0002 1 M44/cM44 DSP board
+ 0003 1 Quattro6x DSP board
+ 0004 1 Chico/ChicoPlus Data Acquisition Board
+ 0005 1 Code Hammer Jtag Debugger board
+ 0006 1 Matador DSP board
+ 0007 1 Quixote DSP board
+ 0008 1 Quadia C64x DSP
+ 0009 1 Quadia DSP Baseboard
+1304 Juniper Networks Inc.
+1305 NetPhone Inc
+1306 Duet Technologies
+1307 ComputerBoards Inc
+ 0001 PCI-DAS1602/16
+ 0006 PCI-GPIB
+ 000B PCI-DIO48H
+ 000C PCI-PDISO8
+ 000D PCI-PDISO16
+ 000F PCI-DAS1200
+ 0010 PCI-DAS1602/12
+ 0014 PCI-DIO24H
+ 0015 PCI-DIO24H/CTR3
+ 0016 PCI-DIO24H/CTR16
+ 0017 PCI-DIO96H
+ 0018 PCI-CTR05
+ 0019 PCI-DAS1200/JR
+ 001A PCI-DAS1001
+ 001B PCI-DAS1002
+ 001C PCI-DAS1602JR/16
+ 001D PCI-DAS6402/16
+ 001E PCI-DAS6402/12
+ 001F PCI-DAS16/M1
+ 0020 PCI-DDA02/12
+ 0021 PCI-DDA04/12
+ 0022 PCI-DDA08/12
+ 0023 PCI-DDA02/16
+ 0024 PCI-DDA04/16
+ 0025 PCI-DDA08/16
+ 0026 PCI-DAC04/12-HS
+ 0027 PCI-DAC04/16-HS
+ 0028 CIO-DIO24 24 Bit Digital Input/Output Board
+ 0029 PCI-DAS08
+ 002C PCI-INT32
+ 0033 PCI-DUAL-AC5
+ 0034 PCI-DAS-TC
+ 0035 PCI-DAS64/M1/16
+ 0036 PCI-DAS64/M2/16
+ 0037 PCI-DAS64/M3/16
+ 004C PCI-DAS1000
+ 004D PCI-QUAD04
+ 0052 PCI-DAS4020/12
+ 0054 PCI-DIO96
+ 005E PCI-DAS6025
+1308 Jato Technologies Inc.
+ 0001 NetCelerator Adapter
+1309 AB Semicon Ltd
+130A Mitsubishi Electric Microcomputer
+130B Colorgraphic Communications Corp
+130C AMBEX Technologies Inc
+130D Accelerix Inc
+130E Yamatake-Honeywell Co Ltd
+130F Advanet Inc.
+1310 Gespac
+ 0003 9060 CompactPCI Interface
+ 000D FPGA PCI Bridge
+1311 VideoServer Inc
+1312 Robotic Vision Systems Incorporated
+1313 Yaskawa Electric Co.
+1316 Teradyne Inc.
+1317 ADMtek Inc
+ 0531 nm0403A03461H121S122P ADMteck AN986
+ 0981 AN981 FastNIC 10/100 Fast Ethernet Adapter
+ 0985 AN983 FastNIC PCI 10/100 Fast Ethernet Adapter
+ 1985 AN985 FastNIC CardBus 10/100 Fast Ethernet Adapter
+ 2850 016 HSP56 MicroModem
+ 5120 ADM5120 ADMtek ADM5120 SOC (rev: 0)
+ 7892 PCT 789T-A HSP56 MicroModem
+ 8201 ADM8211 based 802.11b Wireless PCI Card
+ 9511 ADM9511 FastNIC PCI 10/100 Fast Ethernet Adapter
+ 9513 ADM9513 FastNIC PCI 10/100 Fast Ethernet Adapter
+1318 Packet Engines, Inc.
+ 0911 G-NIC II 1000BT Network Interface Card
+1319 ForteMedia Inc
+ 0801 FM0801 PCI Card MediaForte made in singapore
+ 0802 FM801-as Xwave PCI Joystick
+ 1000 FM801 PCI Audio Device
+ 1001 FM801 PCI Joystick
+ 1319 FM0801-as Xwave PCI audio controller
+ 4901 FM801-AU ForteMedia PCI Audio Card
+131A Finisar Corp
+131C Nippon Electro-Sensory Devices Corp
+131D Sysmic Inc
+131E Xinex Networks Inc
+131F SIIG Inc
+ 1000 PCI Serial Card
+ 1001 CyberSerial (1-port) 16650
+ 1002 CyberSerial (1-port) 16850
+ 1010 Duet 1S(16550)+1P
+ 1011 Duet 1S(16650)+1P
+ 1012 Duet 1S(16850)+1P
+ 1020 CyberParallel PCI Card
+ 1021 CyberParallel PCI Card
+ 1030 CyberSerial (2-port) 16550
+ 1031 CyberSerial (2-port) 16650
+ 1032 CyberSerial (2-port) 16850
+ 1034 Trio 2S(16550)+1P
+ 1035 Trio 2S(16650)+1P
+ 1036 Trio 2S(16850)+1P
+ 1050 CyberSerial (4-port) 16550
+ 1051 CyberSerial (4-port) 16650
+ 1052 CyberSerial (4-port) 16850
+ 2000 CyberSerial (1-port) 16550
+ 2001 CyberSerial (1-port) 16650
+ 2002 CyberSerial (1-port) 16850
+ 2010 Duet 1S(16550)+1P
+ 2011 Duet 1S(16650)+1P
+ 2012 Duet 1S(16850)+1P
+ 2020 SIIG cyber8000 Communication controller
+ 2021 CyberParallel (2-port)
+ 2030 PCI Serial Card
+ 2031 CyberSerial (2-port) 16650
+ 2032 CyberSerial (2-port) 16850
+ 2040 Trio 1S(16550)+2P
+ 2041 Trio 1S(16650)+2P
+ 2042 Trio 1S(16850)+2P
+ 2050 Siig Inc CyberSerial (4-port) 16550 Siig Inc CyberSerial (4-port) 16550
+ 2051 CyberSerial (4-port) 16650
+ 2052 CyberSerial (4-port) 16850
+ 2060 Trio 2S(16550)+1P
+ 2061 Trio 2S(16650)+1P
+ 2062 Trio 2S(16850)+1P
+1320 Crypto AG
+1321 Arcobel Graphics BV
+1322 MTT Co Ltd
+1323 DOME Inc
+1324 Sphere Communications
+1325 Salix Technologies Inc
+1326 Seachange International
+1327 Voss Scientific
+1328 CIFELLI SYSTEMS CORPORATION
+ 8888 rev 1.5 cPEG™ C 3.0 DVD/MPEG2 decoder
+1329 Productivity Enhancement
+132A Microcom Inc
+132B BroadBand Technologies
+132C Micrel Inc
+132D Integrated Silicon Solution Inc
+1330 MMC Networks
+1331 RadiSys Corporation
+ 0030 ENP-2611
+ 8200 82600 Host Bridge
+ 8201 82600 IDE
+ 8202 82600 USB
+ 8210 82600 PCI Bridge
+1332 Micro Memory, LLC
+ 5410 MM-5410D PCI 32bit Bulk Memory w/DMA
+ 5415 MM-5415CN PCI Memory Module with Battery Backup
+ 5425 MM-5425CN PCI 64/66 Memory Module with Battery Backup
+ 6140 MM-6140D Memory Module
+1334 Redcreek Communications Inc
+1335 Videomail Inc.
+1337 Third Planet Publishing
+1338 BT Electronics
+133A VTEL Corp
+133B Softcom Microsystems
+133C Holontech Corp
+133D S S Technologies
+ 1000 SST-5136-PFB-PCI Industrial I/O Card
+133E Virtual Computer Corp
+133F SCM Microsystems
+1340 Atalla Corp
+1341 Kyoto Microcomputer Co
+1342 Promax Systems Inc
+1343 Phylon Communications Inc
+1344 Micron Technology (Was: Crucial Technology?)
+ 3240 CopperHead CopperTail SC1 AMC AC'97
+ 3320 MT8LLN21PADF North Bridge
+ 3321 21PAD North Bridge
+ 3470 MT7LLN22NCNE South Bridge
+ 4020 CopperHead CopperTail SC1 IDE Controller
+ 4030 CopperHead CopperTail SC1 USB Controller
+1345 Arescom Inc
+1347 Odetics
+1349 Sumitomo Electric Industries Ltd
+134A DTC Technology Corp.
+ 0001 F01 2ASV17184.1 Domex DMX 3191 PCI SCSI Controller
+ 0002 Domex DMX3192U/3194UP SCSI Adapter
+134B ARK Research Corp.
+134C Chori Joho System Co. Ltd
+134D PCTEL Inc.
+ 2188 fa82537ep inter
+ 2189 HSP56 Micromodem
+ 2486 2304WT V.92 MDC Modem
+ 7890 HSP56 MicroModem
+ 7891 PCT 789T HSP MicroModem 56
+ 7892 PCT 789T-A HSP56 MicroModem
+ 7893 S911 K017 HSP MicroModem 56
+ 7894 FT13 HSP MicroModem 56
+ 7895 PCT789T HSP MicroModem 56
+ 7896 pct789t-c HSP MicroModem 56
+ 7897 97860963 HSP MicroModem 56/PCT789T
+ 8086 hfp56 dev
+ 9714 PCT 288-1A PCTEL
+ D800 pct388p-a pctel 56k modem
+134E CSTI
+134F Algo System Co Ltd
+1350 Systec Co Ltd
+1351 Sonix Inc
+1353 Dassault A.T.
+ 0002 Proserver
+ 0003 PCI-FUT
+ 0004 PCI-S0
+ 0005 PCI-FUT-S0
+1354 dWave System Inc
+1355 Kratos Analytical Ltd
+1356 The Logical Co
+1359 Prisa Networks
+135A Brain Boxes Limited
+ 0224 PLX9050 PLX PCI Bus Logic
+135B Giganet Inc.
+135C Quatech Inc
+ 0010 QSC-100
+ 0020 DSC-100
+ 0030 DSC-200/300
+ 0040 QSC-200/300
+ 0050 ESC-100D
+ 0060 ESC-100M
+ 00F0 MPAC-100 Syncronous Serial Card (Zilog 85230)
+ 0170 QSCLP-100
+ 0180 DSCLP-100
+ 0190 SSCLP-100
+ 01A0 QSCLP-200/300
+ 01B0 DSCLP-200/300
+ 01C0 SSCLP-200/300
+135D ABB Network Partner AB
+135E Sealevel Systems Inc.
+ 5101 5101 Route 56
+ 5102 PCI-ACB RS-232 synchronous card
+ 7101 Single Port RS-232/422/485/520
+ 7201 Dual Port RS-232/422/485 Interface
+ 7202 Dual Port RS-232 Interface
+ 7401 Four Port RS-232 Interface
+ 7402 Four Port RS-422/485 Interface
+ 7801 Eight Port RS-232 Interface
+ 8001 8001 Digital I/O Adapter
+135F I-Data International A-S
+1360 Meinberg Funkuhren GmbH & Co. KG
+ 0101 PCI32 DCF77 Radio Clock
+ 0102 PCI509 DCF77 Radio Clock
+ 0103 PCI510 DCF77 Radio Clock
+ 0104 PCI511 DCF77 Radio Clock
+ 0105 PEX511 DCF77 Receiver
+ 0201 GPS167PCI GPS Receiver
+ 0202 GPS168PCI GPS Receiver
+ 0203 GPS169PCI GPS Receiver
+ 0204 GPS170PCI GPS Receiver
+ 0205 GPS170PEX GPS Receiver
+ 0301 TCR510PCI IRIG Timecode Reader
+ 0302 TCR167PCI IRIG Timecode Reader
+ 0303 TCR511PCI IRIG Timecode Reader
+ 0304 TCR511PEX IRIG Timecode Receiver
+1361 Soliton Systems K.K.
+1362 Fujifacom Corp
+1363 Phoenix Technologies Ltd
+1364 ATM Communications Inc
+1365 Hypercope Corp.
+ 9050 HYSDN
+1366 Teijin Seiki Co. Ltd.
+1367 Hitachi Zosen Corporation
+1368 Skyware Corporation
+1369 Digigram
+136A High Soft Tech
+136B Kawasaki Steel Corporation
+ FF01 KL5A72002 Motion JPEG
+136C Adtek System Science Co Ltd
+136D Gigalabs Ltd
+136F Applied Magic Inc
+1370 ATL Products
+1371 CNET Technology Inc
+ 434E GigaCard Network Adapter
+1373 Silicon Vision Inc
+1374 Silicom Ltd
+ 0024 Dual port Giga Ethernet BGE Bypass Server Adapter
+ 0025 Quad port Giga Ethernet BGE Bypass Server Adapter
+ 0026 Dual port Fiber Giga Ethernet 546 Bypass Server Adapter
+ 0027 Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter
+ 0028 Dual port Copper Giga Ethernet 546 Bypass Server Adapter
+ 0029 Dual port Copper Giga Ethernet 546GB Bypass Server Adapter
+ 002A Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter
+ 002B Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter PXE2TBI
+ 002C Quad port Copper Giga Ethernet 546GB Bypass Server Adapter PXG4BPI
+ 002D Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter PXG4BPFI
+ 002E Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter PXG4BPFI-LX
+ 002F Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter PXG2BPFIL
+ 0030 Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter
+ 0031 Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter
+ 0032 Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter
+ 0034 Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter
+ 0035 Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter
+ 0036 Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter
+ 0037 Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter
+ 0038 Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter
+ 0039 Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter
+ 003A Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter
+1375 Boeing - Sunnyvale
+1376 One Stop Systems (Originally LMC; Previously bought out by SBE Inc)
+1377 Electronic Equipment Production GmbH
+1378 Telemann Co Ltd
+1379 Asahi Kasei Microsystems Co Ltd
+137A Mark Of The Unicorn Inc
+ 0001 PCI-324 Audiowire Interface
+137B PPT Vision
+137C Iwatsu Electric Co Ltd
+137D Dynachip Corporation
+137E Patriot Scientific Corp.
+137F Japan Satellite Systems Inc
+1380 Sanritz Automation Co LTC
+1381 Brains Co. Ltd
+1382 Marian - Electronic & Software
+ 0001 ARC88 audio recording card
+ 2008 Prodif 96 Pro sound system
+ 2009 PLX TECHNOLOGY \n PCI9052 \n 0435 \n BX9497.1 MALA SEK'D Prodif 96 Pro - professional audio card
+ 2048 Prodif Plus sound card
+ 2088 Marc 8 Midi 8-in, 8-out sound card
+ 20C8 Marc A sound system
+ 4008 Marc 2 Sound System
+ 4010 Marc 2 Pro sound system
+ 4048 Marc 4 MIDI sound system
+ 4088 Marc 4 Digi sound system
+ 4248 Marc X sound system
+1383 Controlnet Inc
+1384 Reality Simulation Systems Inc
+1385 Netgear Inc
+ 0013 WG311T 108 Mbps Wireless PCI Adapter
+ 006B WA301 802.11b Wireless PCI Adapter
+ 311A GA511 Gigabit Ethernet
+ 4100 MA301 802.11b Wireless Adapter
+ 4105 MA311 802.11b wireless adapter
+ 4251 WG111T 108 Mbps Wireless USB 2.0 Adapter
+ 4400 WAG511 802.11a/b/g Dual Band Wireless PC Card
+ 4600 WAG511 802.11a/b/g Dual Band Wireless PC Card
+ 4601 WAG511 802.11a/b/g Dual Band Wireless PC Card
+ 4610 WAG511 802.11a/b/g Dual Band Wireless PC Card
+ 4800 WG511v1 54 Mbps Wireless PC Card
+ 4900 WG311v1 54 Mbps Wireless PCI Adapter
+ 4A00 WAG311 802.11a/g Wireless PCI Adapter
+ 4B00 WG511T 108 Mbps Wireless PC Card
+ 4C00 WG311v2 54 Mbps Wireless PCI Adapter
+ 4D00 WG311T 108 Mbps Wireless PCI Adapter
+ 4E00 WG511v2 54 Mbps Wireless PC Card
+ 4F00 WG511U Double 108 Mbps Wireless PC Card
+ 5200 GA511 Gigabit PC Card
+ 620A GA620
+ 622A GA622
+ 630A GA630
+ 6B00 WG311v3 54 Mbps Wireless PCI Adapter
+ 6D00 WPNT511 RangeMax 240 Mbps Wireless PC Card
+ 7B00 WN511B RangeMax Next 280 Mbps Wireless PC Card
+ 7C00 WN511T RangeMax Next 300 Mbps Wireless PC Card
+ 7D00 WN311B RangeMax Next 280 Mbps Wireless PCI Adapter
+ 7E00 WN311T RangeMax Next 300 Mbps Wireless PCI Adapter
+ 8169 GA311 Gigabit Ethernet Adapter
+ F004 FA310TX Fast Ethernet Adapter
+ F311 FA311 Fast Ethernet Adapter
+1386 Video Domain Technologies
+1387 Curtiss-Wright Controls Embedded Computing
+ 5310 N/A SCRAMNet GT200
+1388 Hitachi Information Technology Co Ltd
+1389 Applicom International
+ 0001 PCI1500PFB Intelligent fieldbus Adapter
+ 0104 PCI-CANIO PCI-CANIO adapter
+138A Fusion Micromedia Corp
+138B Tokimec Inc
+138C Silicon Reality
+138D Future Techno Designs Pty Ltd
+138E Basler GMBH
+138F Patapsco Designs Inc
+1390 Concept Development Inc.
+1391 Development Concepts Inc
+1392 Medialight Inc
+1393 Moxa Technologies Co Ltd
+ 1010 C101/PCI Super Sync Board
+ 1020 Smartio CP-102 Series
+ 1040 C104H/PCI Smartio
+ 1041 Smartio CP-104UL
+ 1042 Smartio CP-104JU
+ 1140 Industio CT-114I
+ 1141 Industio CP-114 Series
+ 1320 Industio CP-132 Series
+ 1321 Industio CP-132U Series
+ 1340 Industio CP-134U Series
+ 1680 C168H/PCI Smartio
+ 1681 CP-168U CP-168U Smart Serial Board
+ 2040 Intelligent CP-204J
+ 2180 Intelligent C218Turbo/PCI
+ 2210 --- ---
+ 2240 --- ---
+ 3200 Intelligent C320Turbo/PCI
+ 5020 C502/PCI Dual-Port Sync Board
+ 6800 0x0000 dvr capture card
+1394 Level One Communications
+ 0001 LXT1001 NetCelerator Family Gigabit Ethernet Adapter
+1395 Ambicom Inc
+1396 Cipher Systems Inc
+1397 Cologne Chip Designs GmbH
+ 08B4 ISDN network Controller [HFC-4S]
+ 0B4D HFC-8S ISDN 16B8D8S0 ISDN HDLC FIFO Controller with 8 S/T
+ 16B8 ISDN network Controller [HFC-8S]
+ 2BD0 HFC-S PCI A ISDN 2BDS0 ISDN HDLC FIFO Controller
+ 30B1 ISDN network Controller [HFC-E1]
+ 8B4D HFC-4S ISDN 8B4D4S0 ISDN HDLC FIFO Controller with 4 S/T
+ B000 B000 HCF-PCI card
+ B006 B006 HCF-PCI card
+ B007 B007 HCF-PCI card
+ B008 B008 HCF-PCI card
+ B009 B009 HCF-PCI card
+ B00A B00A HCF-PCI card
+ B00B B00B HCF-PCI card
+ B00C B00C HCF-PCI card
+ B100 B100 HCF-PCI card
+ F001 GSM Network Controller [HFC-4GSM]
+1398 Clarion Co. Ltd
+1399 Rios Systems Co Ltd
+139A Alacritech Inc
+ 0001 Quad Port 10/100 Server Accelerator
+ 0003 Single Port 10/100 Server Accelerator
+ 0005 Single Port Gigabit Server Accelerator
+ 0007 SES2000 Alacritech iSCSI Controller
+139B Mediasonic Multimedia Systems Ltd
+139C Quantum 3D Inc
+139D Xstreams PLC/ EPL Limited
+139E Echostar Data Networks
+139F Aethra S.R.L.
+13A0 Crystal Group Inc
+13A1 Kawasaki Heavy Industries Ltd
+13A2 Ositech Communications Inc
+13A3 HI-FN Inc.
+ 0005 7751 Security Processor
+ 0006 6500 Public Key Processor
+ 0007 7811 Security Processor
+ 0012 7951 Security Processor
+ 0014 7814/7851/7854 Security Processor
+ 0015 8065 Security Processor
+ 0016 8065 Security Processor
+ 0017 8165 Security Processor
+ 0018 8154 Security Processor
+ 001D 7956 Cryptographic Processor
+ 0020 7954/7955 Cryptographic Processor
+ 0026 8155 Security Processor
+13A4 Rascom Inc
+13A5 Audio Digital Imaging Inc
+13A6 Videonics Inc
+13A7 Teles AG
+ 6240 Network Controller BSRV2-301A
+13A8 Exar Corp.
+ 0152 XR17C/D152 Dual PCI UART
+ 0154 XR17C154 Four Channel PCI Bus UART
+ 0158 XR17C158 Eight Channel PCI Bus UART (5V)
+13A9 Siemens Medical Solutions
+13AA Nortel Networks - BWA Division
+13AB Arcom Control Systems Ltd
+13AC Motion Media Technology Ltd
+13AD Nexus Inc
+13AE ALD Technology Ltd
+13AF T.Sqware
+13B0 Maxspeed Corp
+13B1 Tamura Corporation
+13B2 Techno Chips Co Ltd
+13B3 Lanart Corp
+13B4 Wellbean Co Inc
+13B5 ARM Ltd
+13B6 DLoG GMBH
+ 13B6 0x13b6 sguiu
+13B7 LOGIC Devices Inc
+13B8 Nokia Telecommunications OY
+13B9 Elecom Co Ltd
+13BA Oxford Instruments
+13BB Sanyo Technosound Co Ltd
+13BC Bitran Corp
+13BD Sharp Corporation
+13BE Miroku Jyoho Service Co Ltd
+13BF Sharewave Inc
+13C0 Microgate Corp.
+ 0010 SyncLink Adapter single port multiprotocol serial adapter
+ 0020 SyncLink SCC low speed single port multiprotocol serial adapter
+ 0030 SyncLink 4 Port Adapter 4 port multiprotocol serial adapter
+ 0070 SyncLink GT Adapter single port multiprotocol serial adapter
+ 0080 SyncLink GT4 Adapter 4 port multiprotocol serial adapter
+ 0090 SyncLink AC Adapter one port asynchronous serial adapter
+ 00A0 SyncLink GT2 Adapter 2 port multiprotocol serial adapter
+ 0210 SyncLink Serial Adapter version 2 single port multiprotocol serial adapter
+13C1 3ware Inc.
+ 1000 9548qad ATA-RAID Controller
+ 1001 7000/8000 series ATA-133 Storage Controller
+ 1002 9000 series SATA/PATA Storage Controller
+ 1003 9550SX/9590SE Series SATA2 Raid Controller
+ 1004 9650SE Series PCI-Express SATA2 Raid Controller
+13C2 Technotrend Systemtechnik GMBH
+ 000E Technotrend/Hauppauge DVB card rev2.3
+13C3 Janz Computer AG
+13C4 Phase Metrics
+13C5 Alphi Technology Corp
+13C6 Condor Engineering Inc
+ 0520 CEI-520 A429 Card
+ 0620 CEI-620 A429 Card
+ 0820 CEI-820 A429 Card
+13C7 Blue Chip Technology Ltd
+ 0ADC Multi-Function Analogue/Digital IO card
+ 0B10 . Parallel I/O Card
+ 0D10 . Digital I/O Card
+ 5744 . Watchdog Card
+13C8 Apptech Inc
+13C9 Eaton Corp
+13CA IOMEGA Corp
+13CB Yano Electric Co Ltd
+13CC Metheus Corporation
+13CD Compatible Systems Corp
+13CE Cocom A/S
+13CF Studio Audio & Video Ltd
+13D0 Techsan Electronics Co Ltd
+ 2103 T228502 B2C2 Sky2PC Core Chip sky star 2 <technisat>
+ 2200 B2C2 Broadband Receiver PCI Adapter (FCIII)
+13D1 AboCom Systems, Inc
+ AB02 Ethernet Controller
+ AB03 Ethernet Controller
+ AB06 FE2000VX 10/100 CardBus /Atelco Fibreline Ethernet Adapter
+ AB08 SMC8035TX EZ Card™ 10/100 Fast Ethernet CardBus Adapter
+13D2 Shark Multimedia Inc
+13D3 IMC Networks
+13D4 Graphics Microsystems Inc
+13D5 Media 100 Inc
+13D6 K.I. Technology Co Ltd
+13D7 Toshiba Engineering Corporation
+ 8086 ac97 note
+13D8 Phobos Corporation
+13D9 Apex PC Solutions Inc
+13DA IntreSource Systems Pty Ltd
+13DB Janich & Klass Computertechnik GmbH
+13DC Netboost Corporation
+13DD Multimedia Bundle Inc
+13DE ABB Robotics Products AB
+13DF E-Tech Inc.
+ 0001 PCI56RVP Modem
+13E0 GVC Corporation
+13E1 Silicom Multimedia Systems Inc
+13E2 Dynamics Research Corp
+13E3 Nest Inc
+13E4 Calculex Inc
+13E5 Telesoft Design Ltd
+13E6 Argosy Research Inc
+13E7 NAC Inc
+13E8 Chip Express Corp
+13E9 Intraserver Technology Inc
+13EA Dallas Semiconductor (Now known as Maxim)
+ 3131 DS3131 BoSS Bit Synchronous HDLC Controller
+ 3134 DS3134/31256 Chateau/Envoy 256 Channel HDLC Controller
+13EB Hauppauge Computer Works Inc
+13EC Zydacron Inc
+ 000A NPC-RC01 Remote control receiver
+13ED Raytheion E-Systems
+13EE Hayes Microcomputer Products Inc
+13EF Coppercom Inc
+13F0 Sundance Technology Inc
+ 0200 FFK 8508 Encore ENL832-TX-ICNT Fast Ethernet PCI Adapter
+ 0201 ST201 Fast Ehternet Adapter
+ 1023 IC Plus IP1000 Family Gigabit Ethernet Adapter
+ 13F0 -PCI\VEN_13F0&DEV_1023&SUBSYS_81801043&REV_41\4&BC ST201 Fast Ethernet Adapter
+13F1 Oce' - Technologies B.V.
+13F2 Ford Microelectronics Inc
+13F3 McData Corp
+13F4 Troika Networks Inc
+ 1401 Zentai Fibre Channel Adapter
+13F5 Kansai Electric Co Ltd
+13F6 C-Media Electronics Inc.
+ 0100 CMI8338/C3DX PCI Audio Device
+ 0101 CMI8338-031 PCI Audio Device
+ 0111 CMI8738/PCI C3DX C-Media Audio Controller
+ 0112 CMI-8378B/PCI-6CH PCI Audio Chip
+ 0211 HSP56 Audiomodem Riser
+ 0300 0x4005 pci audio driver
+13F7 Wildfire Communications
+13F8 Ad Lib Multimedia Inc
+13F9 NTT Advanced Technology Corp.
+13FA Pentland Systems Ltd.
+13FB Aydin Corp
+13FC Computer Peripherals International
+13FD Micro Science Inc
+13FE Advantech Co., Ltd.
+ 1240 PCI-1240-A 4-Axis Stepping/Servo Motor Card
+ 1600 PCI-16xx series PCI multiport serial board (function 0)
+ 1680 PCI-1680U-A 2-port CAN UniversalPCI Communication Card with Isolation
+ 16FF PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD)
+ 1713 PCI-1713 32-channel Isolated Analog Input Card
+ 1724 PCI-1724 14-bit, 32-channel Isolated Analog Output Card
+ 1733 PCI-1733 32-channel isolated digital input card
+ 1750 PCI-1750 Opto Isolated Digital I/O Card w/Counter
+ 1752 PCI-1752
+ 1754 PCI-1754
+ 1756 PCI-1756
+13FF Silicon Spice Inc.
+1400 ArtX Inc
+ 0001 ArtX1 AGP System Controller
+ 0003 ArtX1 Media Device
+ 0004 ArtX1 Display Device
+ 1401 9432 TX hd 2600xt
+1401 CR-Systems A/S
+1402 Meilhaus Electronic GmbH Germany
+ 2E00 ME-2000 / 2600 Multifunction Data Aquistion Card
+1403 Ascor Inc
+1404 Fundamental Software Inc
+1405 Excalibur Systems Inc
+1406 Oce Print Logics Technologies S.A.
+1407 Lava Computer Manufacturing Inc
+ 0100 0439 Lava Dual Serial 550 PCI
+ 0101 Lava Quattro PCI A/B
+ 0102 Lava Quattro PCI C/D
+ 0110 Lava DSerial PCI Port A
+ 0111 Lava DSerial PCI Port B
+ 0180 Lava Octopus PCI Ports 1-4
+ 0181 Lava Octopus PCI Ports 5-8
+ 0200 9923 LavaPort Dual-650 PCI
+ 0201 LavaPort Quad-650 PCI A/B
+ 0202 LavaPort Quad-650 PCI C/D
+ 0220 LavaPort Quad-650 PCI A/B
+ 0221 LavaPort Quad-650 PCI C/D
+ 0400 Lava 8255 PIO PCI
+ 0500 Lava Single Serial 550 PCI
+ 0510 Lava SP Serial 550 PCI
+ 0511 Lava SP BIDIR Parallel PCI
+ 0520 Lava RS422 SS-PCI
+ 0600 4-0 9253 LavaPort 650 PCI
+ 0A00 LavaPort PCI COM Port Accelerator
+ 8000 Lava Parallel
+ 8001 Lava Dual Parallel port A
+ 8002 9923 Lava Dual Parallel port A
+ 8003 Lava Dual Parallel port B
+ 8800 BOCA Research IOPPAR
+1408 Aloka Co. Ltd
+1409 Timedia Technology Co Ltd
+ 7168 40371409 PCI / ISA Asynchronous UART Signal Chips Solution
+ 7268 PCI / ISA IEEE1284 ECP/EPP/SPP/BPP Signal Chips So PCI parallel port
+140A DSP Research Inc
+140B Ramix Inc
+140C Elmic Systems Inc
+140D Matsushita Electrics Works Ltd
+140E Goepel Electronic GmbH
+140F Salient Systems Corp
+1410 Midas Lab Inc
+1411 Ikos Systems Inc
+1412 VIA Technologies Inc (Was: IC Ensemble Inc)
+ 1712 ICE1712 Envy24 Multichannel Audio Controller
+ 1724 VT1720/24 Envy24PT/HT PCI Multi-Channel Audio Controller
+1413 Addonics
+1414 Microsoft Corp
+1415 Oxford Semiconductor Ltd
+ 8401 OX9162 PCI Interface to local bus
+ 8403 OX12PCI840/OX9162 Integrated Parallel Port
+ 9500 OX16PCI954 Quad UART (disabled)
+ 9501 OX16PCI954 Quad UART
+ 9504 OX16PCI954 PCI UARTs (unique bars)
+ 9505 OX16PCI952 PCI UARTs (unique bars)
+ 950A OX16PCI954 Dual PCI UART (??)
+ 950B OXCB950 Integrated High Performance UART (CardBus/PCI Interface)
+ 9510 OX16PCI954 PCI Interface (disabled)
+ 9511 OX9160/OX16PCI954 PCI Interface to 8-bit Local Bus
+ 9512 OX9160/OX16PCI954 PCI Interface to 32-bit Local Bus
+ 9513 OX9160/OX16PCI954 Parallel Port
+ 9521 OX16PCI952 Integrated Dual UART
+ 9523 OX16PCI952 Integrated Parallel Port
+1416 Multiwave Innovation Pte Ltd
+1417 Convergenet Technologies Inc
+1418 Kyushu Electronics Systems Inc
+1419 Excel Switching Corp
+141A Apache Micro Peripherals Inc
+ 1035 PCI Modem Enumerator
+141B Zoom Telephonics Inc
+141C Zoom Telephonics Inc
+141D Digitan Systems Inc
+141E Fanuc Co. Ltd
+141F Visiontech Ltd
+ 6181 KFIR MPEG decoder
+1420 Psion Dacom PLC
+1421 ADS Technologies Inc
+1422 Ygrec Systems Co Ltd
+1423 Custom 7Technology Corp
+1424 Vidoeserver Connections
+1425 ASIC Designers Inc
+1426 Storage Technology Corp
+1427 Better On-line Solutions
+1428 Edec Co Ltd
+1429 Unex Technology Corp.
+142A Kingmax Technology Inc
+142B Radiolan
+142C Minton Optic Industry Co Ltd
+142D Pix Stream Inc
+142E Vitec Multimedia
+142F Radicom Research Inc
+1430 ITT Aerospace/Communications Division
+1431 Gilat Satellite Networks
+1432 Edimax Computer Co
+ 9230 Realtek RTL8169/8110 Family PCI Gigabit Ethernet NIC
+1433 Eltec Elektronik GmbH
+1435 RTD Embedded Technologies, Inc.
+ 0531 DELETE DELETE
+ 4520 PCI4520 PCI Data Acquisition Controller
+ 6020 SPM6020 PCI-104 dspModule
+ 6030 SPM6030 PC/104-Plus dspModule
+ 6420 SPM186420 PC/104-Plus dspModule
+ 6430 SPM176430 PC/104-Plus dspModule
+ 7520 DM7520 PC/104-Plus dataModule
+ 7540 SDM7540 PC/104-Plus dataModule with SmartCal
+1436 CIS Technology Inc
+1437 Nissin Inc Co
+1438 Atmel-Dream
+1439 Outsource Engineering & Manufacturing Inc
+143A Stargate Solutions Inc
+143B Canon Research Center, America
+143C Amlogic Inc
+143D Tamarack Microelectronics Inc
+143E Jones Futurex Inc
+143F Lightwell Co Ltd - Zax Division
+1440 Algol Corp
+1441 Agie SA.
+1442 Phoenix Contact Co GmbH
+ 0002 Interbus PCI MPM Board
+ 0004 Interbus PCI MPM Board
+ 0005 Interbus PCI MPM Board
+1443 Unibrain S.A.
+1444 TRW
+1445 Logical Co Ltd
+1446 Graphin Co. Ltd
+1447 Aim GMBH
+1448 Alesis Studio
+ 0001 ADAT/EDIT Audio Editing
+1449 TUT Systems Inc
+144A ADLINK Technology Inc
+ 7230 PCI-7230
+ 7248 PCI-9052 PLX PCI9052
+ 7250 PCI-7250 PLX PCI9052
+ 7296 PCI-7296 (PLX PCI-9052) 96-ch digital I/O card
+ 7432 PCI-7432
+ 7433 PCI-7433 64-ch digital Input card
+ 7434 PCI-7434
+ 7841 PCI-7841 SJA 1000- baseddual port CAN bus card
+ 8133 PCI-8133
+ 8554 PCI-8554
+ 9111 PCI-9111
+ 9113 PCI-9113
+ 9114 PCI-9114
+144B Loronix Information Systems, Inc.
+144C Catalina Research Inc
+144D Samsung Electronics Co Ltd
+144E Olitec
+144F Askey Computer Corp
+1450 Octave Communications Ind.
+1451 SP3D Chip Design GMBH
+1453 Mycom Inc
+1454 Altiga Networks
+1455 Logic Plus Plus Inc
+1456 Advanced Hardware
+1457 Nuera Communications Inc
+1458 Giga-Byte Technologies
+1459 Dooin Electronics
+145A Escalate Networks Inc
+145B Praim SRL
+145C Cryptek
+145D Gallant Computer Inc
+145E Aashima Technology B.V.
+145F Baldor Electric Company
+ 0001 NextMove PCI Multi-axis Motion Controller
+ 0002 NextMove PCI-2 Multi-axis Motion Controller
+1460 Dynarc Inc
+1461 Avermedia Technologies Inc
+1462 Micro-Star International Co Ltd (MSI)
+ 00C1 NV41.1 NX6800-TD256E
+ 4720 883 Audio controller
+ 5071 883 Audio controller
+ 7960 MCP2T MCP2T
+1463 Fast Corporation
+1464 Interactive Circuits & Systems Ltd
+1465 GN Nettest Telecom Division
+1466 Designpro Inc
+1467 Digicom SPA
+1468 Ambit Microsystems Corp.
+1469 Cleveland Motion Controls
+146A IFR Ltd
+146B Parascan Technologies Ltd
+146C Ruby Tech Corp.
+146D Tachyon Inc.
+146E Williams Electronic Games Inc
+146F Multi Dimensional Consulting Inc
+1470 Bay Networks
+1471 Integrated Telecom Express Inc (ITE)
+ 0188 RoadRunner 10 ADSL PCI
+1472 Daikin Indistries Ltd
+1473 Zapex Technologies Inc
+1474 Doug Carson & Associates
+1475 Picazo Communications
+1476 Mortara Instrument Inc
+1477 Net Insight
+1478 Diatrend Corporation
+1479 Toray Industries Inc
+147A Formosa Industrial Computing
+147B Abit Computer Corp.
+147C Aware Inc
+147D Interworks Computer Products
+147E Matsushita Graphic Communication Systems Inc
+147F Nihon Unisys Ltd.
+1480 SCII Telecom
+1481 Biopac Systems Inc
+1482 Isytec - Integrierte Systemtechnik Gmbh
+1483 Labway Coporation
+1484 Logic Coporation
+1485 Erma - Electronic GMBH
+1486 L3 Communications Telemetry & Instrumentation
+1487 Marquette Medical Systems
+1488 Kontron Electronik GmbH
+1489 KYE Systems Corporation
+148A Opto 22
+148B Innomedialogic Inc.
+148C PowerColor (C.P. Technology Co Ltd)
+ 4011 RV250 RADEON 9000 PRO EVIL COMMANDO
+ 4152 0x1002 0x2079
+148D Digicom Systems Inc.
+ 1003 Rockwell HCF chipset Creative ModemBlaster V.90 PCI DI5655
+148E OSI Plus Corporation
+148F Plant Equipment Inc.
+1490 Stone Microsystems Pty Ltd
+1491 Zeal Corp
+1492 TIME LOGIC Corp
+1493 Maker Communications
+1494 Wintop Technology Inc
+1495 Tokai Communications Industry Co. Ltd
+1496 Joytech Computer Co. Ltd.
+1497 SMA Regelsysteme GmbH
+1498 Tews Datentechnik GmbH
+1499 Micro-Technology Co Ltd
+149A Andor Technology Ltd
+149B Seiko Instruments Inc
+149C Ovislink Corp
+149D Newtek Inc
+149E Mapletree Networks Inc.
+149F Lectron Co Ltd
+14A0 Softing GMBH
+14A1 Systembase Co Ltd
+14A2 Millennium Engineering Inc
+14A3 Maverick Networks
+14A4 GVC/BCM Advanced Research
+14A5 Xionics Document Technologies Inc
+14A6 Inova Computers GmbH & Co KG
+14A7 Mythos Systems Inc
+14A8 Featron Technologies Corp
+14A9 Hivertec Inc.
+ AD1F 1 1
+14AA Advanced MOS Technology Inc
+14AB Mentor Graphics Corp.
+14AC Novaweb Technologies Inc
+14AD Time Space Radio AB
+14AE CTI Inc
+14AF Guillemot Corp
+14B0 BST Communication Technology Ltd
+14B1 Nextcom K.K.
+ 1033 R6795-12 RH56D-PCI
+14B2 Ennovate Networks Inc
+14B3 Xpeed Inc.
+ 0000 9ff-usa-a99-99-0970 DSL NIC
+14B4 Philips Business Electronics B.V.
+14B5 Creamware GmbH
+ 0200 Scope
+ 0300 Pulsar
+ 0400 Pulsar SRB
+ 0600 Pulsar 2
+ 0800 DSP-Board
+ 0900 DSP-Board
+ 0A00 DSP-Board
+ 0B00 DSP-Board
+14B6 Quantum Data Corp.
+14B7 Proxim Inc.
+ 0001 Symphony 4110 pci9052
+14B8 Techsoft Technology Co Ltd
+14B9 Aironet Wireless Communications
+ 0001 PC4800 werwerwerwe
+ 0340 Cisco Systems 340 Series PCI Wireless LAN Adapter
+ 0350 Cisco Systems 350 Series PCI Wireless LAN Adapter
+ 2500 PC2500 DS Wireless PCI LAN Adapter
+ 3100 PC3100 FH Wireless PCI LAN Adapter
+ 3101 PC3100 FH Wireless PCI LAN Adapter
+ 3500 PC3500 FH Wireless PCI LAN Adapter
+ 4500 PC4500 DS Wireless PCI LAN Adapter
+ 4800 PC4800 DS Wireless PCI LAN Adapter
+ A504 A504 Cisco MAC Cisco Aironet 350 Series Mini-PCI (MPI350)
+ A506 AIR-MP21G 802.11b/g wireless adapter
+14BA Internix Inc.
+14BB Semtech Corporation
+14BC Globespan Semiconductor Inc
+14BD Cardio Control N.V.
+14BE L3 Communications
+14BF Spider Communications Inc
+14C0 Compal Electronics, Inc.
+14C1 Myricom Inc.
+ 8043 LANai 9.2 0129 MyriNet
+14C2 DTK Computer
+14C3 Mediatek Corp
+14C4 Iwasaki Information Systems Co Ltd
+14C5 ABB Automation Products AB
+14C6 Data Race Inc
+14C7 Modular Technoloy Holdings Ltd
+14C8 Turbocomm Tech Inc
+14C9 Odin Telesystems Inc
+14CA PE Logic Corp
+14CB Billionton Systems Inc./Cadmus Micro Inc
+14CC Nakayo Telecommunications Inc
+14CD Universal Scientific Ind.
+14CE Whistle Communications
+14CF TEK Microsystems Inc.
+ 2920 FPMC-FIO1-F100-1 Serial I/O Controller aka FPMC-DFLEX64
+14D0 Ericsson AXE R & D
+14D1 Computer HI-TECH Co Ltd
+14D2 Titan Electronics Inc
+ 8001 VScom PCI-010L 1 x Printer Controller
+ 8002 VScom PCI-020L 2 x Printer Controller
+ 8010 VScom PCI-100L 1 x RS-232 Controller
+ 8011 VScom PCI-110L 1 x RS-232 and 1 x Printer Controller
+ 8020 VScom PCI-200L 2 x RS-232 Controller
+ 8021 VScom PCI-210L 2 x RS-232 and 1 x Printer Controller
+ 8040 VScom PCI-400L 4 x RS-232 Controller
+ 8041 VScom PCI-410L 4 x RS-232 and 1 x Printer Controller
+ 8042 VScom PCI-420L 4 x RS-232 and 2 x Printer Controller
+ 8080 VScom PCI-800L 8 x RS-232 Controller
+ A000 VScom PCI-010H 1 x Printer Controller
+ A001 VScom PCI-110H 1 x RS-232 and 1 x Printer Controller
+ A003 VScom PCI-400H 4 x RS-232 Controller
+ A004 VScom PCI-400HF1 4 x RS-232 Controller
+ A005 VScom PCI-200H 2 x RS-232 Controller
+ E001 VScom PCI-010HV2 1 x Printer Controler
+ E010 VScom PCI-100HV2 1 x RS-232 Controller
+ E020 VScom PCI-200HV2 2 x RS-232 Controller
+ FFFF VScom Dummy Controller
+14D3 Cirtech (UK) Ltd
+14D4 Panacom Technology Corporation
+ 0400 Panacom 7 Interface chip
+14D5 Nitsuko Corporation
+14D6 Accusys Inc
+14D7 Hirakawa Hewtech Corp
+14D8 Hopf Elektronik GMBH
+14D9 Alpha Processor Inc
+ 0010 AP1011/SP1011 Sturgeon HyperTransport-PCI Bridge
+14DA National Aerospace Laboratories
+14DB Avlab Technology Inc.
+ 2100 PCI IO 1S
+ 2101 PCI IO 1S-650
+ 2102 PCI IO 1S-850
+ 2110 PCI IO 1S1P OX16PCI952
+ 2111 PCI IO 1S1P-650
+ 2112 PCI IO 1S1P-850
+ 2120 PCI IO 1P, TK9902, Avlab P005
+ 2121 PCI IO 2P
+ 2130 PCI IO 2S 2 Port PCI Serial Card
+ 2131 PCI IO 2S-650
+ 2132 PCI IO 2S-850
+ 2140 PCI IO 2P1S
+ 2141 PCI IO 2P1S-650
+ 2142 PCI IO 2P1S-850
+ 2144 PCI IO 2P2S
+ 2145 PCI IO 2P2S-650
+ 2146 PCI IO 2P2S-850
+ 2150 PCI IO 4S
+ 2151 PCI IO 4S-654
+ 2152 PCI IO 4S-850
+ 2160 PCI IO 2S1P
+ 2161 PCI IO 2S1P-650
+ 2162 PCI IO 2S1P-850
+ 2180 PCI IO 8S VEN_14DB&DEV_2180&SUBSYS_218014DB&REV_00
+ 2181 PCI IO 8S-654 Avlab Technology Inc
+ 2182 PCI IO 8S-850 Avlab Technology Inc
+14DC Amplicon Liveline Limited
+ 0000 PCI230 16-chan A/D, 2-chan D/A, 24 DIO, 3 counter timers
+ 0001 PCI242H 4-port high speed RS-232
+ 0002 PCI244H 8-port high speed RS-232
+ 0003 PCI247H 2-port high speed RS-232
+ 0004 PCI248H 2-port high speed RS-422/485
+ 0005 PCI249H 2-port high speed RS-232 and RS-422/485
+ 0006 PCI260 16-channel analog input (with timers)
+ 0007 PCI224 16-channel 12-bit analog output (with timers)
+ 0008 PCI234 4-channel 16-bit analogue output (with timers)
+ 0009 PCI236 24-channel digital I/O
+ 000A PCI272 72-channel digital I/O
+ 000B PCI215 48-channel digital I/O with 6 counter timers
+ 000C PCI263 16-channel reed relay output
+14DD Bolder Design Labs Inc
+14DE Applied Integration Corporation
+14DF Basis Communications Corp
+14E1 Invertex
+14E2 Infolibria
+14E3 Amtelco
+14E4 Broadcom Corporation
+ 034F NV36GL? ???
+ 0800 BCM33xx/47xx Sentry5 Chipcommon I/O Controller
+ 0804 BCM33xx/47xx Sentry5 PCI Bridge
+ 0805 BCM33xx/47xx Sentry5 MIPS32 CPU
+ 0806 BCM33xx/47xx Sentry5 Ethernet Controller
+ 080B BCM33xx/47xx Sentry5 Crypto Accelerator
+ 080F BCM33xx/47xx Sentry5 DDR/SDR RAM Controller
+ 0811 BCM33xx/47xx Sentry5 External Interface
+ 0816 BCM3302 Sentry5 MIPS32 CPU
+ 1600 BCM5752 NetXtreme BCM5752 Gigabit Ethernet PCI Express
+ 1601 NetXtreme BCM5752M Gigabit Ethernet PCIe
+ 1639 NetXtreme II BCM5709 Gigabit Ethernet
+ 1644 BCM5751F NetXtreme Gigabit Ethernet Controller
+ 1645 BCM5701 NetXtreme BCM5701 Gigabit Ethernet
+ 1646 BCM5702x1 NetXtreme Gigabit Ethernet
+ 1647 BCM5703 NetXtreme Gigabit Ethernet
+ 1648 BCM5704 NetXtreme Dual Gigabit Adapter
+ 164A BCM5706 NetXtreme II Gigabit Ethernet
+ 164C 5708C Broadcom NetXtreme II Gigabit Ethernet Adapter
+ 164D BCM5702FE NetXtreme Fast Ethernet Controller
+ 1653 BCM5788 Broadcom NetXtreme Gigabit Ethernet
+ 1654 BCM5705-2 NetXtreme Gigabit Ethernet
+ 1658 BCM5750A1 NetXtreme Gigabit Ethernet
+ 1659 BCM5721 NetXtreme Gigabit Ethernet PCI Express
+ 165A NetXtreme BCM5722 Gigabit Ethernet PCIe
+ 165D BCM5705M Broadcom NetXtreme Gigabit Ethernet
+ 165E BCM5705MA2 NetXtreme Gigabit Ethernet
+ 1668 NetXtreme BCM5714 Gigabit Ethernet
+ 1669 NetXtreme 5714S Gigabit Ethernet
+ 166A NetXtreme BCM5780 Gigabit Ethernet
+ 166B NetXtreme BCM5780S Gigabit Ethernet
+ 166D NetXtreme Fast Ethernet
+ 166E BCM5705F 10/100 Integrated Controller
+ 1672 NetXtreme BCM5754M Gigabit Ethernet PCIe
+ 1673 B57xx Broadcom NetXtreme Gigabit Ethernet
+ 1674 NetXtreme BCM5756ME Gigabit Ethernet PCIe
+ 1676 BCM5750A1 NetXtreme Gigabit Ethernet
+ 1677 BCM5750A1 NetXtreme Gigabit Ethernet PCI Express
+ 1678 BCM5715C 10/100/100 PCIe Ethernet Controller
+ 1679 NetXtreme 5715S Gigabit Ethernet
+ 167A BCM5754 Broadcom NetXtreme Gigabit Ethernet Controller
+ 167B BCM5755/5780 NetXtreme Gigabit Ethernet
+ 167C BCM5750A1 NetXtreme Gigabit Ethernet
+ 167D BCM5751M Broadcom NetXtreme Gigabit Ethernet
+ 167E BCM5751F NetXtreme Fast Ethernet PCIe
+ 167F NetLink BCM5787F Fast Ethernet PCIe
+ 1693 BCM 5787A Ethernet Controller Broadcom Netlink Gigabit
+ 1696 BCM5782 Broadcom NetXtreme Gigabit Ethernet for hp
+ 169A NetLink BCM5786 Gigabit Ethernet PCIe
+ 169B NetLink BCM5787 Gigabit Ethernet PCIe
+ 169C BCM5788 Broadcom NetLink (TM) Gigabit Ethernet
+ 169D BCM5782k FB Broadcom Ethernet Adapter
+ 16A6 BCM5702X NetXtreme Gigabit Ethernet
+ 16A7 BCM5703X NetXtreme Gigabit Ethernet
+ 16A8 BCM5704S NetXtreme Gigabit Ethernet
+ 16AA BCM5706S NetXtreme II Gigabit Ethernet
+ 16AC NetXtreme II BCM5708S Gigabit Ethernet
+ 16C6 BCM5702A3 NetXtreme Gigabit Ethernet
+ 16C7 BCM5703A3 NetXtreme Gigabit Ethernet
+ 16DD NetLink BCM5781 Gigabit Ethernet PCIe
+ 16F7 BCM5753 NetXtreme BCM5753 Gigabit PCI Express
+ 16FD BCM5753M NetXtreme Gigabit Ethernet PciXpress
+ 16FE BCM5753F NetXtreme Fast Ethernet PCIe
+ 16FF NetXtreme Gigabit Ethernet
+ 170C BCM4401 Broadcom NetLink 4401 10/100 Ethernet NIC
+ 170D BCM5901 NetXtreme Fast Ethernet
+ 170E BCM5901 NetXtreme Fast Ethernet
+ 1712 NetLink BCM5906 Fast Ethernet PCIe
+ 1713 NetLink BCM5906M Fast Ethernet PCIe
+ 3352 BCM3352 BCM3352 QAMLink® Single-Chip 4-Line VoIP
+ 3360 BCM3360 Advanced PHY Broadband Gateway Cable Modem
+ 4210 BCM4210 iLine10 HomePNA 2.0
+ 4211 BCM4211 iLine10 HomeHPNA 2.0 10Mb/s NIC
+ 4212 BCM V.92 56k Modem
+ 4301 BCM4301 802.11b IEEE 802.11b WLAN client chipset
+ 4303 BCM4303 BCM4301 802.11b802.11b Wireless LAN Controller
+ 4305 BCM4307 V.90 56k Modem
+ 4306 BCM4306 Unknown device 4306 (rev 02)
+ 4307 BCM4307 802.11b Wireless LAN Controller
+ 4310 BCM4310 BCM4301 802.11bChipcommon I/O Controller
+ 4311 Dell Wireless 1390 WLAN Mini-PCI Card
+ 4312 BCM4310 broadcom wireless 1490 (dell)
+ 4313 BCM4310 Etnernet Controller
+ 4315 BCM4310 USB Controller
+ 4318 BCM43XX Broadcom 802.11b/g
+ 4319 Dell Wireless 1470 DualBand WLAN
+ 431A 802.11a Network Adapter
+ 4320 BCM94309 802.11b/g Wireless LAN Controller
+ 4321 BCM4306 802.11a Wireless LAN Controller
+ 4322 BCM4306 UART
+ 4323 BCM4306 V.90 56k Modem
+ 4324 BCM4309 802.11a/b/g Wireless LAN Controller
+ 4325 BCM4306 802.11b/g Wireless LAN Controller
+ 4326 BCM4306 Chipcommon I/O Controller?
+ 4328 BCM94321KFBG Broadcom 4321AGN 802.11a/b/g/draft-n Wi-Fi Solution
+ 4329 BCM43XNG 802.11n Network Adapter
+ 432A 802.11n Network Adapter
+ 4344 EDGE/GPRS data and 802.11b/g combo cardbus [GC89]
+ 4401 BCM4401 10/100 Integrated Ethernet Controller
+ 4402 BCM4402 10/100 Integrated Ethernet Controller
+ 4403 BCM4402 V.90 56k Modem
+ 4410 BCM4410 iLine32(tm) Network Adapter
+ 4411 BCM4212 V.90 56k Modem
+ 4412 BCM4412 10/100 Ethernet Network Adapter
+ 4430 BCM44xx CardBus iLine32 HomePNA 2.0
+ 4431 V.90 56k Modem
+ 4432 BCM44xx CardBus 10/100BaseT Ethernet
+ 4610 BCM4610 Sentry5 PCI to SB Bridge
+ 4611 BCM4610 Sentry5 iLine32 HomePNA 1.0
+ 4612 BCM4610 Sentry5 V.90 56k Modem
+ 4613 BCM4610 Sentry5 Ethernet Controller
+ 4614 BCM4610 Sentry5 External Interface
+ 4615 BCM4610 Sentry5 USB Controller
+ 4704 BCM4704 Sentry5 PCI to SB Bridge
+ 4705 BCM4704 Sentry5 802.11b Wireless LAN Controller
+ 4706 BCM4704 Sentry5 Ethernet Controller
+ 4707 BCM4704 Sentry5 USB Controller
+ 4708 BCM4704 Crypto Accelerator
+ 4710 BCM4710 Sentry5 PCI to SB Bridge
+ 4711 BCM47xx Sentry5 iLine32 HomePNA 2.0
+ 4712 BCM47xx Sentry5 V.92 56k modem
+ 4713 BCM47xx Sentry5 Ethernet Controller
+ 4714 BCM47xx Sentry5 External Interface
+ 4715 BCM47xx Sentry5 USB Controller
+ 4716 BCM47xx Sentry5 USB Host Controller
+ 4717 BCM47xx Sentry5 USB Device Controller
+ 4718 BCM47xx Sentry5 Crypto Accelerator
+ 4719 BCM47xx/53xx RoboSwitch Core
+ 4720 BCM4712 MIPS CPU
+ 5365 BCM5365P Sentry5 PCI to SB Bridge
+ 5600 BCM5600 StrataSwitch 24+2 Ethernet Switch Controller
+ 5605 BCM5605 StrataSwitch 24+2 Ethernet Switch Controller
+ 5615 BCM5615 StrataSwitch 24+2 Ethernet Switch Controller
+ 5625 BCM5625 StrataSwitch 24+2 Ethernet Switch Controller
+ 5645 BCM5645 StrataSwitch 24+2 Ethernet Switch Controller
+ 5670 BCM5670 8-Port 10GE Ethernet Switch Fabric
+ 5680 BCM5680 G-Switch 8-Port Gigabit Ethernet Switch Controller
+ 5690 BCM5690 12-port Multi-Layer Gigabit Ethernet Switch
+ 5691 BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller
+ 5692 BCM5692 12-port Multi-Layer Gigabit Ethernet Switch
+ 5695 BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch
+ 5698 BCM5698 12-port Multi-Layer Gigabit Ethernet Switch
+ 5802 BCM5802 The BCM5802 Security Processor integrates Broadcom’s IPSec engine (DES, 3DES, HMAC-SHA-1, HMAC-MD5),
+ 5805 BCM5805 The BCM5805 Security Processor integrates a high-performance IPSec engine (DES, 3DES, HMAC-SHA-1, HM
+ 5820 BCM 5820 Crypto Accelerator
+ 5821 BCM5821 Crypto Accelerator
+ 5822 BCM5822 Crypto Accelerator
+ 5823 BCM5823 Crypto Accelerator
+ 5824 BCM5824 Crypto Accelerator
+ 5840 BCM5840 Crypto Accelerator
+ 5841 BCM5841 Crypto Accelerator
+ 5850 BCM5850 Crypto Accelerator
+ 7321 5751 network card integrated
+ 7411 BCM7411 High Definition Video/Audio Decoder
+14E5 Pixelfusion Ltd
+14E6 Shining Technology Inc
+14E7 3CX
+14E8 Raycer Inc
+14E9 Garnets System Co Ltd
+14EA Planex Communications, Inc.
+ AB06 FNW-3603-TX 10/100 Fast Ethernet CardBus (RTL8139)
+14EB Seiko Epson Corporation
+ 0020 BEMx.x PCI to S5U13xxxB00B Bridge Adapter
+ 0C01 S1D13808 Embedded Memory Display Controller
+14EC Acqiris
+14ED Datakinetics Ltd
+14EE Maspro Kenkoh Corp
+14EF Carry Computer Engineering Co Ltd
+14F0 Canon Reseach Centre France
+14F1 Conexant Systems, Inc.
+ 1002 HCF 56k Modem
+ 1003 HCF 56k Modem
+ 1004 HCF 56k Modem
+ 1005 HCF 56k Modem
+ 1006 HCF 56k Modem
+ 1022 HCF 56k Modem
+ 1023 HCF 56k Modem
+ 1024 HCF 56k Modem
+ 1025 HCF 56k Modem
+ 1026 HCF 56k Modem
+ 1032 HCF 56k Modem
+ 1033 HCF 56K Winmodem
+ 1034 HCF 56k DFVS Modem
+ 1035 PCI Modem Enumerator
+ 1036 PCI Modem Enumerator
+ 1052 HCF 56k Data/Fax Modem (Worldwide)
+ 1053 HCF 56k Data/Fax Modem (Worldwide)
+ 1054 HCF 56k Data/Fax/Voice Modem (Worldwide)
+ 1055 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide)
+ 1056 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
+ 1057 HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide)
+ 1058 HCF P96 Data/Fax/Voice/Spkp Modem
+ 1059 HCF 56k Data/Fax/Voice Modem (Worldwide)
+ 1063 HCF 56k Data/Fax Modem
+ 1064 HCF 56k Data/Fax/Voice Modem
+ 1065 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+ 1066 HCF 56k Data/Fax/Voice/Spkp Modem
+ 1085 CX11250 SmartHSF Mobile Modem host side device
+ 10B3 HCF Data/Fax
+ 10B4 HCF Data/Fax/Remote TAM
+ 10B5 HCF Data/Fax/Voice/Spkp
+ 10B6 HCF Data/Fax/Remote TAM/Spkp
+ 1433 HCF 56k Data/Fax Modem
+ 1434 HCF 56k Data/Fax/Voice Modem
+ 1435 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+ 1436 HCF 56k Data/Fax Modem
+ 1453 HCF 56k Data/Fax Modem
+ 1454 HCF 56k Data/Fax/Voice Modem
+ 1455 HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem
+ 1456 HCF 56k Data/Fax/Voice/Spkp Modem
+ 1610 ADSL AccessRunner PCI Arbitration Device
+ 1611 AccessRunner PCI ADSL Interface Device
+ 1620 ADSL AccessRunner V2 PCI Arbitration Device
+ 1621 AccessRunner V2 PCI ADSL Interface Device
+ 1622 AccessRunner V2 PCI ADSL Yukon WAN Adapter
+ 1803 HCF 56k Modem
+ 1815 HCF 56k Modem
+ 1F10 HCF Data/Fax (USA)
+ 1F11 HCF Data/Fax (Worldwide)
+ 1F14 HCF Data/Fax/Voice (USA)
+ 1F15 HCF Data/Fax/Voice (Worldwide)
+ 2003 SoftK56 Winmodem
+ 2004 SoftK56 RemoteTAM Winmodem
+ 2005 SoftK56 Speakerphone Winmodem
+ 2006 SoftK56 Speakerphone Winmodem
+ 2013 SoftK56 Winmodem
+ 2014 SoftK56 RemoteTAM Winmodem
+ 2015 SoftK56 Speakerphone Winmodem
+ 2016 SoftK56 Speakerphone Winmodem
+ 2043 HSF 56k Data/Fax Modem (WorldW SmartDAA)
+ 2044 HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA)
+ 2045 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA)
+ 2046 HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA)
+ 2053 HSF Data/Fax
+ 2054 HSF Data/Fax/TAM
+ 2055 HSF Data/Fax/Voice/Spkp
+ 2056 HSF Data/Fax/TAM/Spkp
+ 2063 HSF 56k Data/Fax Modem (SmartDAA)
+ 2064 HSF 56k Data/Fax/Voice Modem (SmartDAA)
+ 2065 HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA)
+ 2066 HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA)
+ 2093 HSF 56k Modem
+ 2143 HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA)
+ 2144 HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA)
+ 2145 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA)
+ 2146 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA)
+ 2163 HSF 56k Data/Fax/Cell Modem (Mob SmartDAA)
+ 2164 HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA)
+ 2165 HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA)
+ 2166 HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA)
+ 2343 HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA)
+ 2344 HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA)
+ 2345 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA)
+ 2346 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA)
+ 2363 HSF 56k Data/Fax CardBus Modem (Mob SmartDAA)
+ 2364 HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA)
+ 2365 HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA)
+ 2366 HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA)
+ 2400 unknown unknown
+ 2443 HSF 56k Data/Fax Modem (Mob WorldW SmartDAA)
+ 2444 HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA)
+ 2445 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA)
+ 2446 HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA)
+ 2463 HSF 56k Data/Fax Modem (Mob SmartDAA)
+ 2464 HSF 56k Data/Fax/Voice Modem (Mob SmartDAA)
+ 2465 HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA)
+ 2466 HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA)
+ 2702 cx11252-15 HSFp or Soft V92 Data Fax Modem
+ 2BFA Unknown HDA D100 MDC v.92 Modem
+ 2C06 104D1700 HDAUDIO Soft Data fax Modem with SmartPC
+ 2F00 HSF 56k HSFi Churchill Data/Fax Modem
+ 2F01 HSF 56k HSFi Churchill Data/Fax Modem
+ 2F02 HSF 56k HSFi Churchill Data/Fax Modem
+ 2F10 HSF Data/Fax (USA)
+ 2F11 HSF 56K Data/Fax
+ 2F12 HSF Data/Fax/Voice (USA)
+ 2F13 HSF Data/Fax (USA)
+ 2F14 US Robotics 56K PCI Software Modem
+ 2F15 US Robotics 56K Fax Host Int
+ 2F20 CX11256 Software data fax modem with SmartCP
+ 2F30 rc415st-hm hp/compaq alhena 5-gl6
+ 2F40 ???? Conexant Modem?
+ 5045 0x173410AD HDAUDIO Soft Data fax Modem with SmartPC
+ 5B7A Belived to be a CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder
+ 8234 RS8234 ATM SAR Controller [ServiceSAR Plus]
+ 8237 CN8237 ATM OC2 ServiceSAR+ Controller with BR Traffic Management
+ 8471 CN8471A 32 Channel HDLC Controller
+ 8472 CN8472A 64 Channel HDLC Controller
+ 8474 CN8474A 128 Channel HDLC Controller
+ 8478 CN8478 256 Channel HDLC Controller
+ 8502 CX28500 676 Channel HDLC Controller
+ 8503 CX28500 1024 Channel HDLC Controller
+ 8563 CX28560 2047 Channel HDLC Controller
+ 8800 23880 Conexant 23880 Video Capture (NTSC)
+ 8801 CX2388x TV Capture Chip
+ 8802 CX2388x TV Capture Chip
+ 8803 CX2388x TV Capture Chip
+ 8804 CX2388x TV Capture Chip
+ 8811 CX2388x TV Capture Chip
+ 8852 0x7717 Media class: &#8206;MULTIMEDIA_VIDEO
+14F2 Mobility Electronics, Inc.
+ 0001 Moselle Split Bridge
+ 0002 Capilano Split Bridge
+ 0120 EV1000 PCI to PCI Bridge
+ 0121 EV1000 Parallel port
+ 0122 EV1000 Serial port
+ 0123 EV1000 Keyboard Controller
+ 0124 3103 PCI PS/2 Mouse Port
+14F3 Broadlogic
+ 2030 2030 DVB-S Satellite Reciever
+ 2050 2050 DVB-T Terrestrial (Cable) Reciever
+ 2060 2060 ATSC Terrestrial (Cable) Reciever
+14F4 Tokyo Electronic Industry Co. Ltd.
+14F5 Sopac Ltd
+14F6 Coyote Technologies LLC
+14F7 Wolf Technology Inc
+14F8 Audiocodes Inc
+ 2077 TP-240 dual span E1 VoIP PCI Card
+14F9 AG Communications
+14FA Wandel & Gochermann
+14FB Transas Marine (UK) Ltd
+14FC Quadrics Supercomputers World
+ 0000 QsNet Elan3 Network Adapter
+ 0001 QsNetII Elan4 Network Adapter
+14FD Japan Computer Industry Inc
+ 0001 H260u H260u printer server for HP Printer
+14FE Archtek Telecom Corp.
+14FF Twinhead International Corp.
+1500 Lantech Computer Company
+ 1300 SIS900 10/100M PCI Fast Ethernet Controller
+ 1320 VT86C100A 10/100M PCI Fast Ethernet Controler
+ 1360 RTL8139A 10/100 Mbps PCI Fast Ethernet Controller
+ 1380 DEC21143PD 10/100M PCI Fast Ethernet Controller
+1501 Banksoft Canada Ltd
+1502 Mitsubishi Electric Logistics Support Co Ltd
+1503 Kawasaki LSI USA Inc
+1504 Kaiser Electronics
+1505 ITA Ingenieurburo Fur Testaufgaben GmbH
+1506 Chameleon Systems Inc
+1507 Htec Ltd.
+ 0001 MPC105 [Eagle]
+ 0002 MPC106 [Grackle]
+ 0003 MPC8240 [Kahlua]
+ 0100 MC145575 [HFC-PCI]
+ 0431 KTI829c 100VG
+ 4801 Raven
+ 4802 Falcon
+ 4803 Hawk
+ 4806 CPX8216
+1508 Honda Connectors/Mhotronics Inc
+1509 First International Computer Inc
+150A Forvus Research Inc
+150B Yamashita Systems Corp
+150C Kyopal Co Ltd
+150D Warpspped Inc
+150E C-Port Corporation
+150F Intec GMBH
+1510 Behavior Tech Computer Corp
+1511 Centillium Technology Corp
+1512 Rosun Technologies Inc
+1513 Raychem
+1514 TFL LAN Inc
+1515 Advent design
+1516 Myson Technology Inc
+ 0800 MTD800 10/100 Mbps Fast Ethernet Controller
+ 0803 Myson MTD803/TAMARACK TC6020 PCI Ethernet controller
+ 0891 MTD891 10/100/1000 Mbps Gigabit Ethernet Controller
+1517 Echotek Corporation
+1518 Kontron Modular Computers GmbH (PEP Modular Computers GMBH)
+1519 Telefon Aktiebolaget LM Ericsson
+ 2004 0x1 PCI Interface bus
+151A Globetek Inc.
+ 1002 PCI-1002 4383
+ 1004 PCI-1004
+ 1008 PCI-1008
+151B Combox Ltd
+ 9080 me594v02100 combox combox cb 300a
+151C Digital Audio Labs Inc
+ 0002 CardDeluxe Analog + Digital Audio
+151D Fujitsu Computer Products Of America
+151E Matrix Corp.
+151F Topic Semiconductor Corp
+ 0000 TP560 D/F/V 56k Modem
+ 0568 1.0.1.8 56k Internal Data Fax Voice Modem
+1520 Chaplet System Inc
+1521 Bell Corporation
+1522 Mainpine Limited
+ 0100 PBridge+ PCI Interface Chip
+1523 Music Semiconductors
+1524 ENE Technology Inc
+ 0510 1.4.5.0 PCI Memory Card Reader Controller
+ 0520 PCI SmartMedia / xD Card Reader Controller
+ 0530 CB-712/714/810 Memory Stick Card Reader
+ 0550 CB-712/714/810 Secure Digital Card Reader
+ 0551 PCI SD/MMC Card Reader Controller
+ 0610 ??? PCI Smart Card Reader Controller
+ 1211 CB-1211 CardBus Controller
+ 1225 CB-1225 CardBus Controller
+ 1410 CB-1420 CardBus Controller
+ 1411 CB-710/2/4/810 Cardbus Controller
+ 1412 CB-712/714 CardBus Controller
+ 1420 CB-1420 CardBus Controller
+ 1421 CB-720/722/724 CardBus Controller
+ 1422 CB-722/724 CardBus Controller
+1525 Impact Technologies
+1526 ISS Inc
+1527 Solectron
+1528 Acksys
+1529 American Microsystems Inc
+152A Quickturn Design Systems
+152B Flytech Technology Co Ltd
+152C Macraigor Systems LLC
+152D Quanta Computer Inc
+152E Melec Inc
+152F Philips - Crypto
+1530 Acqis Technology Inc
+1531 Chryon Corp
+1532 Echelon Corporation
+1533 Baltimore
+1534 Road Corporation
+1535 Evergreen Technologies Inc
+1537 Datalex Communications
+1538 Aralion Inc.
+ 0301 Ultima RAID-100/Multi RAID-100 Controller
+ 0303 UltimaRAID-133 Controller
+1539 Atelier Informatiques et Electronique Etudes S.A.
+153A ONO Sokki
+153B Terratec Electronic GMBH
+ 1115 ICE1712 Envy24 IC Ensemble Inc ICE1712 Envy24 Multichannel Audio Controller
+ 1143 SAA7134HL Philips Semiconductors SAA7134HL Multimedia Capture Device
+ 6003 CS4614/22/24 CrystalClear SoundFusion PCI Audio Accel
+153C Antal Electronic
+153D Filanet Corporation
+153E Techwell Inc
+153F MIPS Technologies, Inc
+ DEAD xx12345 Not a chip ...
+1540 Provideo Multimedia Co Ltd
+ 9524 saa7134 PAL/SECAM TV card w/ FM1216ME MK3 tuner (+FM radio)
+1541 Machone Communications
+1542 Vivid Technology Inc
+1543 Silicon Laboratories
+ 3052 Motorola SM56 Speakerphone Modem
+ 3155 Unknown Modem Device on High Definition Audio Bus
+1544 DCM Technologies Ltd.
+1545 VisionTek
+1546 IOI Technology Corp.
+1547 Mitutoyo Corporation
+1548 Jet Propulsion Laboratory
+1549 Interconnect Systems Solutions
+ 80FF PCI-ISA-001 PCI/ISA Bus Bridge
+154A Max Technologies Inc.
+154B Computex Co Ltd
+154C Visual Technology Inc.
+154D PAN International Industrial Corp
+154E Servotest Ltd
+154F Stratabeam Technology
+1550 Open Network Co Ltd
+1551 Smart Electronic Development GMBH
+1552 Racal Airtech Ltd
+1553 Chicony Electronics Co Ltd
+1554 Prolink Microsystems Corp.
+1555 Gesytec GmbH
+ 0002 PLX PCI 9050 Easylon PCI Bus Interface
+1556 PLD Applications
+1557 Mediastar Co. Ltd
+1558 Clevo/Kapok Computer
+1559 SI Logic Ltd
+155A Innomedia Inc
+155B Protac International Corp
+155C Cemax-Icon Inc
+155D MAC System Co Ltd
+155E LP Elektronik GmbH
+ 0020 MFC3 Multi Function Card Version 3
+155F Perle Systems Limited
+1560 Terayon Communications Systems
+1561 Viewgraphics Inc
+1562 Symbol Technologies, Inc.
+ 0001 LA-41x3 Spectrum24 802.11b Wireless LAN PCI Card
+ 0002 LA-5030 Symbol Wireless Networker 802.11a/g CardBus
+ 0003 LA-5033 Symbol Wireless Networker 802.11a/g PCI
+1563 A-Trend Technology Co Ltd
+1564 Yamakatsu Electronics Industry Co Ltd
+1565 Biostar Microtech Int'l Corp
+1566 Ardent Technologies Inc
+1567 Jungsoft
+ 07D2 Disk Protection Card for Windows 2000
+1568 DDK Electronics Inc
+1569 Palit Microsystems Inc
+156A Avtec Systems Inc
+ 5000 NA Wideband Advanced Signal Processor
+ 5100 NA High Data Rate Radio
+156B 2wire Inc
+156C Vidac Electronics GMBH
+ 0001 VMagic MPEG Encoder
+156D Alpha-Top Corp
+156E Alfa Inc.
+156F M-Systems Flash Disk Pioneers Ltd
+1570 Lecroy Corporation
+1571 Contemporary Controls
+ A001 CCSI PCI20-485 ARCNET backplane
+ A002 CCSI PCI20-485D ARCnet
+ A003 CCSI PCI20-485X ARCnet
+ A004 CCSI PCI20-CXB ARCnet
+ A005 CCSI PCI20-CXS ARCnet
+ A006 CCSI PCI20-FOG-SMA ARCnet
+ A007 CCSI PCI20-FOG-ST ARCnet
+ A008 CCSI PCI20-TB5 ARCnet
+ A009 CCSI PCI20-5-485 5 Mbit ARCnet
+ A00A CCSI PCI20-5-485D 5 Mbit ARCnet
+ A00B CCSI PCI20-5-485X 5 Mbit ARCnet
+ A00C CCSI PIC20-5-FOG-ST 5 Mbit ARCnet
+ A00D CCSI PCI20-5-FOG-SMA 5 Mbit ARCnet
+ A00E COM200C22 ARCNET
+ A201 CCSI PCI22-485 10 Mbit ARCnet
+ A202 CCSI PCI22-485D 10 Mbit ARCnet
+ A203 CCSI PCI22-485X 10 Mbit ARCnet
+ A204 CCSI PCI22-CHB 10 Mbit ARCnet
+ A205 CCSI PCI22-FOG-ST 10 Mbit ARCnet
+ A206 CCSI PCI22-THB 10 Mbit ARCnet
+1572 Otis Elevator Company
+1573 Lattice - Vantis
+1574 Fairchild Semiconductor
+1575 Voltaire Advanced Data Security Ltd
+1576 Viewcast Com
+1578 Hitt
+1579 Dual Technology Corporation
+157A Japan Elecronics Ind. Inc
+157B Star Multimedia Corp.
+157C Eurosoft (UK)
+ 8001 Fix2000 PCI Y2K Compliance Card
+157D Gemflex Networks
+157E Transition Networks
+157F PX Instruments Technology Ltd
+1580 Primex Aerospace Co.
+1581 SEH Computertechnik GMBH
+1582 Cytec Corporation
+1583 Inet Technologies Inc
+1584 Uniwill Computer Corp.
+1585 Marconi Commerce Systems SRL
+1586 Lancast Inc
+1587 Konica Corporation
+1588 Solidum Systems Corp
+ 1100 PAX.port 1100 PAX.ware 1100 dual Gb classifier engine
+ 2000 AMD '971 SNP 8023 packet classifier - AMD component
+ 8023 SNP8023 PAX.ware 100 packet classifier
+1589 Atlantek Microsystems Pty Ltd
+158A Digalog Systems Inc
+158B Allied Data Technologies
+ 0015 HLF-VMPEU560-C Standar HSP Modem Series
+158C Hitachi Semiconductor & Devices Sales Co Ltd
+158D Point Multimedia Systems
+158E Lara Technology Inc
+158F Ditect Coop
+1590 3pardata Inc.
+1591 ARN
+1592 Syba Tech Ltd.
+ 0780 Multi-IO Card
+ 0781 W83787IF Multi-IO Card
+ 0782 W837871F Parallel Port Card (EPP)
+ 0783 TC32001 PCI I/O Multi-IO Card
+ 0785 907ab184740802 Multi-IO Card
+ 0786 Winbond w83787if Multi-IO Card
+ 0787 winbond w83787if Multi-IO Card 2 series
+ 0788 w837871f Multi-IO Card
+ 078A 007AB192367002ND Multi-IO Card
+1593 Bops Inc
+1594 Netgame Ltd
+1595 Diva Systems Corp.
+1596 Folsom Research Inc
+1597 Memec Design Services
+1598 Granite Microsystems
+1599 Delta Electronics Inc
+159A General Instrument
+159B Faraday Technology Corp
+159C Stratus Computer Systems
+159D Ningbo Harrison Electronics Co Ltd
+159E A-Max Technology Co Ltd
+159F Galea Network Security
+15A0 Compumaster SRL
+15A1 Geocast Network Systems Inc
+15A2 Catalyst Enterprises Inc
+ 0001 TA700 PCI Bus Analyzer/Exerciser
+15A3 Italtel
+15A4 X-Net OY
+15A5 Toyota MACS Inc
+15A6 Sunlight Ultrasound Technologies Ltd
+15A7 SSE Telecom Inc
+15A8 Shanghai Communications Technologies Center
+15AA Moreton Bay
+15AB Bluesteel Networks Inc
+15AC North Atlantic Instruments
+15AD VMware Inc.
+ 0405 VGA 4.0.5 Virtual SVGA
+ 0710 Virtual SVGA
+ 0720 VMXNET VMware PCI Ethernet Adapter
+ 0801 n/a n/a
+15AE Amersham Pharmacia Biotech
+15B0 Zoltrix International Limited
+ 0001 FM-1789 Pctel
+ 2BD0 2BD0 soft56k voice,data,fax CARP
+15B1 Source Technology Inc
+15B2 Mosaid Technologies Inc.
+15B3 Mellanox Technology
+ 5274 MT21108 InfiniBridge
+ 5A44 MT23108 InfiniHost
+ 5A45 MT23108 Infinihost HCA Flash Recovery
+ 5A46 MT23108 PCI Bridge
+ 5E8C MT24204 InfiniHost III Lx HCA
+ 5E8D MT24204 InfiniHost III Lx HCA Flash Recovery
+ 6274 MT25204 InfiniHost III Lx HCA
+ 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode)
+ 6279 MT25208 InfiniHost III Ex HCA Flash Recovery
+ 6282 MT25208 InfiniHost III Ex
+15B4 CCI/Triad
+15B5 Cimetrics Inc
+15B6 Texas Memory Systems Inc
+15B7 Sandisk Corp.
+15B8 Addi-Data GMBH
+ 3009 xPCI-3504 Analog output board
+15B9 Maestro Digital Communications
+15BA Impacct Technology Corp
+15BB Portwell Inc
+15BC Agilent Technologies
+ 0101 n2530a DX2+ FC-AL Adapter
+ 0103 QX4 4 Port Fibre Channel Controller
+ 2530 ??? HP Communications Port
+ 2531 ??? HP Toptools Remote Control Adapter
+ 2532 ??? HP Toptools Remote Control Adapter
+ 2929 E2929A PCI/PCI-X Bus Analyzer
+15BD DFI Inc.
+15BE Sola Electronics
+15BF High Tech Computer Corp (HTC)
+15C0 BVM Limited
+15C1 Quantel
+15C2 Newer Technology Inc
+15C3 Taiwan Mycomp Co Ltd
+15C4 EVSX Inc
+15C5 Procomp Informatics Ltd
+15C6 Technical University Of Budapest
+15C7 Tateyama System Laboratory Co Ltd
+15C8 Penta Media Co. Ltd
+15C9 Serome Technology Inc
+15CA Bitboys OY
+15CB AG Electronics Ltd
+15CC Hotrail Inc.
+15CD Dreamtech Co Ltd
+15CE Genrad Inc.
+15CF Hilscher GMBH
+15D1 Infineon Technologies AG
+ 0001 TC11IB TriCore 32-Bit Single-Chip MicroController
+ 0002 PEB 20535 E v3.1 DSCC4 4 Channel Serial Communication Controller
+ 0003 PEB 20544 E v1.1 SPOCC Six Port Optimized Communication Controller
+ 0004 PEB 3454 E v1.1 TE3-SPICE Six Port Integrated Communication Controller w/- 4 DS3 Framers & 2 Fast Ethernet MACs
+15D2 FIC (First International Computer Inc)
+15D3 NDS Technologies Israel Ltd
+15D4 Iwill Corporation
+15D5 Tatung Co.
+15D6 Entridia Corporation
+15D7 Rockwell-Collins Inc
+15D8 Cybernetics Technology Co Ltd
+15D9 Super Micro Computer Inc
+15DA Cyberfirm Inc.
+15DB Applied Computing Systems Inc.
+15DC Litronic Inc.
+ 0001 Argus 300 PCI Cryptography Module
+15DD Sigmatel Inc.
+15DE Malleable Technologies Inc
+15DF Infinilink Corp
+15E0 Cacheflow Inc
+15E1 Voice Technologies Group Inc
+15E2 Quicknet Technologies Inc
+ 0500 Internet PhoneJack PCI Card
+15E3 Networth Technologies Inc
+15E4 VSN Systemen BV
+15E5 Valley Technologies Inc
+15E6 Agere Inc.
+15E7 GET Engineering Corp.
+15E8 National Datacomm Corp.
+ 0130 NCP130 Wireless NIC
+ 0131 Prism II InstantWave HR PCI card
+15E9 Pacific Digital Corp.
+ 1841 NetStaQ ADMA-100 ATA controller
+15EA Tokyo Denshi Sekei K.K.
+15EB Drsearch GMBH
+15EC Beckhoff GMBH
+15ED Macrolink Inc
+15EE IN Win Development Inc.
+15EF Intelligent Paradigm Inc
+15F0 B-Tree Systems Inc
+15F1 Times N Systems Inc
+ 2F30 CX11252-15 Conexant HSFi
+15F2 Diagnostic Instruments Inc
+ 0001 Spot RT Spot RT Interface Board
+ 0002 Spot RT #2 Spot RT Interface Board
+ 0003 Spot Insight Spot Insight Interface Board
+15F3 Digitmedia Corp.
+15F4 Valuesoft
+15F5 Power Micro Research
+15F6 Extreme Packet Device Inc
+15F7 Banctec
+15F8 Koga Electronics Co
+15F9 Zenith Electronics Corporation
+15FA Axzam Corporation
+15FB Zilog Inc.
+15FC Techsan Electronics Co Ltd
+15FD N-Cubed.Net
+15FE Kinpo Electronics Inc
+15FF Fastpoint Technologies Inc.
+1600 Northrop Grumman - Canada Ltd
+1601 Tenta Technology
+1602 Prosys-TEC Inc.
+1603 Nokia Wireless Business Communications
+1604 Central System Research Co Ltd
+1605 Pairgain Technologies
+1606 Europop AG
+1607 Lava Semiconductor Manufacturing Inc.
+1608 Automated Wagering International
+1609 Sciemetric Instruments Inc
+160A Kollmorgen Servotronix
+160B Onkyo Corp.
+160C Oregon Micro Systems Inc.
+160D Aaeon Electronics Inc
+160E CML Emergency Services
+160F ITEC Co Ltd
+1610 Tottori Sanyo Electric Co Ltd
+1611 Bel Fuse Inc.
+1612 Telesynergy Research Inc.
+1613 System Craft Inc.
+1614 Jace Tech Inc.
+1615 Equus Computer Systems Inc
+1616 Iotech Inc.
+1617 Rapidstream Inc
+1618 Esec SA
+1619 FarSite Communications Limited
+ 0400 FarSync T2P Two Port Intelligent Sync Comms Card
+ 0440 FarSync T4P Four Port Intelligent Sync Comms Card
+ 0610 FarSync T1U One Port Intelligent Sync Comms Card
+ 0620 FarSync T2U Two Port Intelligent Sync Comms Card
+ 0640 FarSync T4U Four Port Intelligent Sync Comms Card
+ 1610 FarSync TE1 One Port Intelligent Sync Comms Card
+ 1612 FarSync TE1C Channelized Intelligent Sync Comms Card
+ 2610 FarSync DSL-S1 G.SHDSL Intelligent Sync Comms Card
+ 3640 FarSync T4E Four Port Intelligent Sync Comms Card
+161A Wvinten Ltd
+161B Mobilian Israel Ltd
+161C Berkshire Products
+161D Gatec
+161E Kyoei Sangyo Co Ltd
+161F Arima Computer Corporation
+1620 Sigmacom Co Ltd
+1621 Lynx Studio Technology Inc
+ 0020 LynxTWO-A 4 in/4 out Professional Digital Audio Card
+ 0021 LynxTWO-B 2 in/6 out Professional Digital Audio Card
+ 0022 LynxTWO-C 6 in/2 out Professional Digital Audio Card
+ 0023 Lynx L22 2 in/2 out Professional Digital Audio Card
+ 0024 Lynx AES16 16 in/16 out AES/EBU Audio Card
+ 0025 Lynx AES16-SRC 16 in/16 out AES/EBU Audio Card w/SRC
+1622 Nokia Home Communications
+1623 KRF Tech Ltd
+1624 CE Infosys GMBH
+1625 Warp Nine Engineering
+1626 TDK Semiconductor Corp.
+1627 BCom Electronics Inc
+1629 Kongsberg Spacetec a.s.
+ 1003 Format Synchronizer v3.0
+ 2002 Fast Universal Data Output
+162A Sejin Computerland Co Ltd
+162B Shanghai Bell Company Limited
+162C C&H Technologies Inc
+162D Reprosoft Co Ltd
+ 0100 Repeographics controller
+ 0101 Reprographics Controller
+ 0102 Reprographics Controller
+ 0103 Reprographics Controller
+162E Margi Systems Inc
+162F Rohde & Schwarz GMBH & Co KG
+ 1111 TS-PRL1 General Purpose Relay Card
+ 1112 TS-PMA Matrix Module
+ 1113 TS-PSAM Source and Measurement Module
+ 1114 TS-PBAS Basic Interface Module
+ 1115 TS-PICT In-Circuit Test Module
+ 1116 TS-PFG Function Generator Module
+ 1117 TS-PAM Analyzer Module
+ 1118 TS-PDFT Digital Functional Test Module
+1630 Sky Computers Inc
+1631 NEC Computer International
+1632 Verisys Inc
+1633 Adac Corporation
+1634 Visionglobal Network Corp.
+1635 Decros
+1636 Jean Company Ltd
+1637 NSI
+1638 Eumitcom Technology Inc
+ 1100 WL11000P WL11000P
+163A Air Prime Inc
+163B Glotrex Co Ltd
+163C Smart Link
+ 3052 R6793-11 RS56/HSP-PCI
+ FF02 SL1900 PCI Aztech CNR V.92 Modem
+163D Heidelberg Digital LLC
+163E 3dpower
+163F Renishaw PLC
+1640 Intelliworxx Inc
+1641 MKNet Corporation
+1642 Bitland
+1643 Hajime Industries Ltd
+1644 Western Avionics Ltd
+1645 Quick-Serv. Computer Co. Ltd
+1646 Nippon Systemware Co Ltd
+1647 Hertz Systemtechnik GMBH
+1648 MeltDown Systems LLC
+1649 Jupiter Systems
+164A Aiwa Co. Ltd
+164C Department Of Defense
+164D Ishoni Networks
+164E Micrel Inc.
+164F Datavoice (Pty) Ltd.
+ 0001 PLX 9054 PCI interface chip
+ 0002 PLX 9054 PCI interaface chip
+1650 Admore Technology Inc.
+1651 Chaparral Network Storage
+1652 Spectrum Digital Inc.
+1653 Nature Worldwide Technology Corp
+1654 Sonicwall Inc
+1655 Dazzle Multimedia Inc.
+1656 Insyde Software Corp
+1657 Brocade Communications Systems
+1658 Med Associates Inc.
+ 0704 905410B5 DIG 704 PCI - Interface with Millisecond Timer and Interrupts
+1659 Shiba Denshi Systems Inc.
+165A Epix Inc.
+ C100 PIXCI CL1 PCI camera link video capture board
+ D200 PIXCI D2X PCI digital video capture board
+ D300 PIXCI D3X PCI digital video capture board
+165B Real-Time Digital Inc.
+165C Gidel Ltd.
+165D Hsing Tech. Enterprise Co. Ltd.
+165E Hyunju Computer Co. Ltd.
+165F Comartsystem Korea
+ 2000 XILINX SPARTAN 16 Channel Audio Capture Card
+1660 Network Security Technologies Inc. (Net
+1661 Worldspace Corp.
+1662 Int Labs
+1663 Elmec Inc. Ltd.
+1664 Fastfame Technology Co. Ltd.
+1665 Edax Inc.
+1666 Norpak Corporation
+1667 CoSystems Inc.
+1668 Actiontec Electronics Inc.
+ 0100 0304 PCI to PCI Bridge
+166A Komatsu Ltd.
+166B Supernet Inc.
+166C Shade Ltd.
+166D Sibyte Inc.
+ 0001 BCM1125/BCM1250 PCI Configuration Header
+ 0002 BCM1125/BCM1250 HyperTransport Configuration Heade MIPS BCM1125/BCM1250 processors
+166E Schneider Automation Inc.
+166F Televox Software Inc.
+1670 Rearden Steel
+1671 Atan Technology Inc.
+1672 Unitec Co. Ltd.
+1673 Connex
+1675 Square Wave Technology
+1676 Emachines Inc.
+1677 Bernecker + Rainer
+ 104E B&R Dual CAN Interface Card 5LS172.6
+ 12D7 B&R Dual CAN Interface Card 5LS172.61
+ 20AD 5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM
+1678 INH Semiconductor
+1679 Tokyo Electron Device Ltd.
+167B ZyDAS Technology Corp
+167D Samsung Electro-Mechanics Co Ltd
+167E Onnto Corp
+167F Ingenieurbuero Anhaus GmbH
+ 4634 FOB-IO Card
+ 4C32 L2B PCI Board
+ 5344 FOB-SD Card
+ 5443 FOB-TDC Card
+1680 Dunti Corp.
+1681 Hercules
+1682 PINE Technology, Ltd.
+1688 CastleNet Technology Inc.
+168A Utimaco Safeware AG
+168B Circut Assembly Corp (Ca)
+168C Atheros Communications Inc.
+ 0007 AR5000 802.11a Wireless Adapter
+ 0011 AR5210 802.11a Wireless Adapter
+ 0012 AR5211 802.11a/b/g Mini-PCI Wireless Adapter
+ 0013 AR5212, AR5213 802.11a/b/g Wireless Adapter
+ 0014 Wireless Network Adapter
+ 0015 Wireless Network Adapter
+ 0016 Wireless Network Adapter
+ 0017 Wireless Network Adapter
+ 0018 Wireless Network Adapter
+ 0019 Wireless Network Adapter
+ 001A Atheros AR5005G Atheros AR5005G 802.11abg NIC Chipset / TP-Link (TL-WN551G)
+ 001B AR5006 family 802.11abg Wireless NIC
+ 001C AR5006 family 802.11abg Wireless NIC
+ 0020 AR5005VL 802.11bg Wireless NIC
+ 0023 AR5008 Wireless Network Adapter
+ 0024 AR5008 Atheros 802.11a/b/g/n (pre-N) radio
+ 1014 AR5212 Atheros AR5212 802.11abg wireless
+ FF19 AR5006X Wireless Network Adapter
+ FF1C AR5008 Wireless Network Adapter
+ FF1D AR5008 Wireless Network Adapter
+ FF96 AR5212 LAN-Express AS IEEE 802.11g miniPCI adapter
+168D NMI Electronics Ltd.
+168E Hyundai MultiCAV Computer Co. Ltd.
+168F KDS Innotech Corp.
+1690 NetContinuum, Inc.
+1693 FERMA
+ 0212 PLX PCI9054 EPONINE ESR-PCI Board
+ 0213 Motorola MPC8245 EPONINE MTM120 PCI Board
+1695 EPoX Computer Co., Ltd.
+1696 Hitachi Video and Information System Inc
+169A Otari Inc
+169B Decsys Corporation
+169C Netcell Corporation
+ 0044 SyncRAID SR3000/5000 Series SATA RAID Controllers
+169D Link Evolution Corp
+16A5 Tekram Technology Co Ltd
+16A8 Shatai Systems Inc
+16AA Enseo
+16AB Global Sun Technology Inc
+ 1100 GL24110P
+ 1101 PLX9052 PCMCIA-to-PCI Wireless LAN
+ 1102 PCMCIA-to-PCI Wireless Network Bridge
+ 8501 WL-8305 Wireless LAN PCI Adapter
+16AE SafeNet Inc.
+ 1141 SafeXcel-1141 ???
+16AF Nextcomm Inc
+16B0 Wincor Nixdorf International GmbH
+16B2 Design Of Systems On Silicon (DS2)
+16B3 CNF Mobile Solutions
+16B4 Aspex Technology Ltd
+16B8 Sonnet Technologies, Inc.
+16BD Aristos Logic Corporation
+16BE Creatix Polymedia GmbH
+16C3 Insilicon Corporation
+16C5 Puretek Industrial Co Ltd
+16C6 Micrel-Kendin
+ 8695 Centaur KS8695 ARM processor
+16C7 Micrel - Kendin Operations
+16C8 OCTASIC Inc
+16C9 EONIC B.V. The Netherlands
+16CA Cenatek Inc.
+ 0001 Rocket Drive Solid State Disk
+16CB Minolta Co. Ltd.
+16CC Inari Inc.
+16CD Densitron Computers Ltd
+16CE Roland Corp(??)
+16CF Roland Corp
+16D0 Systemax
+16D2 Axis Corporation
+16D5 Acromag Inc
+ 0504 PMC-DX504 Reconfigurable FPGA with LVDS I/O
+ 0520 PMC520 Serial Communication, 232 Octal
+ 0521 PMC521 Serial Communication, 422/485 Octal
+ 1020 PMC-AX1020 Reconfigurable FPGA with A/D & D/A
+ 1065 PMC-AX1065 Reconfigurable FPGA with A/D & D/A
+ 2004 PMC-DX2004 Reconfigurable FPGA with LVDS I/O
+ 2020 PMC-AX2020 Reconfigurable FPGA with A/D & D/A
+ 2065 PMC-AX2065 Reconfigurable FPGA with A/D & D/A
+ 3020 PMC-AX3020 Reconfigurable FPGA with A/D & D/A
+ 3065 PMC-AX3065 Reconfigurable FPGA with A/D & D/A
+ 4243 PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module
+ 4248 PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module
+ 424B PMC-DX2002 Reconfigurable FPGA with Differential I/O
+ 4253 PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O
+ 4312 PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
+ 4313 PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
+ 4322 PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O
+ 4323 PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O
+ 4350 PMC-DX501 Reconfigurable Digital I/O Module
+ 4353 PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O
+ 4357 PMC-DX502 Reconfigurable Differential I/O Module
+ 4457 PMC730, APC730, AcPC730 Multifunction Module
+ 464D PMC408 32-Channel Digital Input/Output Module
+ 4A42 PMC483, APC483, AcPC483 Counter Timer Module
+ 4A50 PMC484, APC484, AcPC484 Counter Timer Module
+ 4A56 PMC230 16-Bit Analog Output Module
+ 4B47 PMC330 16-Bit Analog Input Module
+ 4C40 PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O
+ 4C60 PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O
+ 4D4D PMC341 Simultaneous Sampling Analog Input Module
+ 4D4E PMC482, APC482, AcPC482 Counter Timer Board
+ 524D PMC-DX2001 Reconfigurable FPGA with TTL I/O
+ 5335 PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O
+16D8 Omnicluster Technologies
+16DA Marek Micro GmBH
+16DE Digital Stream Technology Inc
+16DF Pika Technology Inc
+16E0 Third Millenium Test Solutions, Inc.
+16E2 Geotest-Marvin Test Systems Inc
+16E3 European Space agency
+16E5 Intellon Corporation
+16E7 Keisoku Giken Co Ltd
+16E9 Silicon Sccess Networks
+16EB Inside Telnetcom Co Ltd
+16EC U.S. Robotics
+ 0116 RTL8169S RealTek 8169S chip
+ 1007 0637 U.S. Robotics 56K Win INT
+ 2013 11323A U.S. Robotics 56K Voice Host Int
+ 2F00 USRobotics 5660A - Internal Soft Modem http://www.usr.com/support/product-template.asp?prod=5660a
+ 2F12 E129336-1 U.S.Robotic (A- Modem/PCI)
+ 3685 ??? Wireless Access Adapter Model 022415
+ 5685 E129336-1 U.S. Robotics 56K Voice Host Int (A-Modem/ PCI)
+16ED Sycron N.V.
+ 1001 UMIO communication Card
+16EE Canberra Industries Inc
+16EF Amigo Technology
+16F0 TLA Inc.
+16F1 Adicti Corp.
+16F2 Bosch Rexroth AG
+16F3 Jetway Information Co., Ltd
+16F4 VWEB Corp
+16F6 VideoTele.com Inc.
+16F7 Advanced Rendering Technology Ltd
+16FC Ciena Corp
+16FE Fujitsu LSI Solution Ltd
+1700 Antara LLC
+1701 Interactive Computer Products Inc.
+1702 Internet Machines Corp (IMC)
+1703 Desana Systems
+1704 Clearwater Networks
+1705 Digital First
+1706 Pacific Broadband Communications
+1707 Cogency Semiconductor Inc.
+1708 Harris Corp.
+1709 Zarlink Semiconductor (Was: Mitel Semiconductor)
+170A Alpine Electronics Inc.
+170B NetOctave Inc.
+ 0100 NSP2000-SSL Crypto Aceletator
+170C YottaYotta Inc.
+170D SensoMotoric Instruments GmbH
+170E San Valley Systems, Inc.
+170F Cyberdyne Inc.
+1710 Pelago Nutworks
+1711 Netscreen Technologies Inc
+1712 NICE Systems Inc.
+1713 TOPCON Corp.
+1714 Science Park Corp
+1715 The Imaging Source Europe GMbH
+1716 Aldec Inc
+1717 Runtop Inc
+1718 Pixela corp
+1719 EZChip Technologies
+171A Fantasma Networks Inc
+171B Andor System Support Co Ltd
+171C Merilus Inc
+171D TEAC Corp
+171E Realchip Inc
+171F Pijnenburg
+1720 Top Layer Networks Inc
+1721 Glonet Systems INC
+1722 Trimedia Technologies Inc
+1725 Vitesse Semiconductor
+ 7174 VSC7174 VSC7174 PCI/PCI-X SATA Controller
+1726 Avaya
+1729 Danam Communications INC
+172A Accelerated Encryption
+172C Ampere Inc
+172E Digianswer A/S
+172F Sparkle Computer Co Ltd
+1730 Brainvision Inc
+1734 Fujitsu-Siemens Computers GmbH
+ 007A Rage XL ATI Rage XL (rev 27)
+ 1011 AIC-7902W Adaptec AIC-7902 Dual Channel U320 SCSI
+ 1012 CSB6 Serverworks Southbridge with RAID/IDE (rev a0), OHCI USB (rev 05), GCLE-2 Host Bridge
+ 1013 BCM5703 Broadcom Corp. NetXtreme Gigabyte Ethernet
+1735 ATEN International Co Ltd
+1737 LinkSys
+ 0013 WMP54G Wireless Pci Card
+ 0015 WMP54GS Wireless Pci Card
+ 1032 EG1032 Gigabit Ethernet
+ 1064 Gigabit Network Adapter
+ AB08 21x4x DEC-Tulip compatible 10/100 Ethernet
+ AB09 PCM200 10/100 CardBus Ethernet Adapter
+1738 Harris Corp
+1739 Interface Concept
+173B Broadcom (Was: Altima Communications Inc)
+ 03E8 AC1000 Gigabit Ethernet Adapter
+ 03E9 AC1001 Gigabit Ethernet
+ 03EA AC1002 Gigabit Ethernet Adapter
+ 03EB AC1003 Gigabit Ethernet
+1740 Ulyssix Technologies Inc
+1743 Peppercon AG
+ 8139 ROL/F-100 Fast Ethernet Adapter with ROL
+1745 VIXS
+ 2020 PureTV
+ 2100 PureTV
+1746 Corrent Corp
+1747 Test Research Inc
+1749 RLX Technologies Inc
+174A Spirent Communications
+174B PC Partner Limited
+ 0260 RV280 Saphire Radeon 9250
+ 0261 RV280 Sapphire Radeon 9250 - Secondary
+ 7176 RV250 RADEON 9000 ATLANTIS PRO
+ 7177 RV280 RADEON 9000 ATLANTIS PRO - Secondary
+ 7C12 RV280 RADEON 9200 ATLANTIS - Secondary
+ 7C13 RV280 RADEON 9200 ATLANTIS
+174C Intelitek
+174D WellX Telecom
+174E Xi'an Tongshi Data Co Ltd
+174F TAIKO Electric Works Ltd
+1751 Pixelworks Inc
+1752 Global Brands Manufacture Ltd.
+1753 TeraRecon, Inc.
+ 1001 VP500 VolumePro 500
+ 1004 VP1000 VolumePro 1000
+1754 Antares Microsystems Inc
+1755 Alchemy Semiconductor Inc.
+ 0000 Au1500 Au1500 Processor
+1757 Laservall S.P.A.
+1758 National Hybrid Inc
+1759 Trinamic Microchips
+175C AudioScience Inc
+175D CTC Parker Automation
+175E Ascension Technology Corp
+175F Asita Technologies Inc
+1760 Tedia Spol. Sr.o
+1761 Pickering Interfaces Ltd
+1762 JR3 Inc
+1763 Cmicro Corporation
+1764 Micro Vision Co Ltd
+1765 Future Systems Inc
+1766 Eurotech Spa
+1767 Well Communication Corp
+1768 Malachite Technologies Inc
+176A General Dynamics Canada
+176E Kaba Mas Corporation
+176F SAYA Limited
+1771 InnoVision Multimedia Ltd
+1772 Siber Core Technologies Inc
+1773 Soma Networks Inc
+1775 SBS Technologies Inc
+1778 For-A Company Limited
+1779 V One Multimedia PTE Ltd
+177B Racal Instruments Inc
+177C Tanbac Co Ltd
+177D Cavium Networks
+177E Jeol USA Inc
+177F Precision Instruments Inc
+1780 Unixtar Technology Inc
+1782 Lightsand Communications Inc
+1783 Trebia Networks
+1784 Lockheed Martin Systems Integration
+1787 Hightech Information System Ltd (Medion??)
+1789 Ennyah Technologies Corp
+178A Sandcraft Inc
+178D DesignTech Co Ltd
+178E Envara
+1790 Zuken Inc
+1791 Dotcast Inc
+1792 Artiza Networks Inc
+1793 Unitech Electronics Co., Ltd
+1795 OKB SAPR Ltd
+ 0003 Accord 5MX
+ 0005 Accord-TINY
+ 0006 Accord 5MX miniPCI
+ 0010 Accord 5.5 PCI
+ 0020 Accord 5.5 PCIe
+1796 Forschungszentrum (Research Centre) Julich
+ 0001 SIS1100 [Gigabit link]
+ 0002 HOTlink
+ 0003 Counter Timer
+ 0004 CAMAC Controller
+ 0005 PROFIBUS
+ 0006 AMCC HOTlink
+1797 JumpTec h, GMBH
+1798 iReady Corp
+1799 Belkin Research and Development Labs
+ 6001 Wireless PCI Card - F5D6001
+ 6020 Wireless PCMCIA Card - F5D6020
+ 6060 Wireless PDA Card - F5D6060
+ 7000 Wireless PCI Card - F5D7000
+179B Ratio Entwicklungen GmbH
+179C Indus TeQ Site Pvt Ltd
+ 0557 DP-PCI-557 [PCI 1553B]
+ 0566 DP-PCI-566 [Intelligent PCI 1553B]
+ 5031 DP-CPCI-5031-Synchro Module
+ 5121 DP-CPCI-5121-IP Carrier
+ 5211 DP-CPCI-5211-IP Carrier
+ 5679 AGE Display Module
+179D SES Japn Co Ltd
+179E IntelliBus Network Systems
+17A0 Genesys Logic, Inc
+ 8033 GL880S USB 1.1 Controller
+ 8034 GL880S USB 2.0 Controller
+17A1 Macro Image Technology Inc
+17A3 Dongguan Chang'an Global Smart Electronic Factory
+17A4 Resonext Communications Inc
+17A5 Quest Tech Consulting Inc
+17A6 Primarion
+17A7 Start Network Technology Co., Ltd.
+17A8 Gtech
+17A9 Arunta Comsec Pty Ltd
+17AA Legend Ltd. (Beijing)
+17AB Phillips Components
+17AD Genesys Logic Inc
+17AE NEC Corp
+17AF Hightech Information Systems, Ltd.
+ 4150 200 HIS Excalibur Radeon 9600
+17B0 Sphinx Elektronik GmbH
+17B1 Astec Inc
+17B2 Aeroflex Test Solutions
+17B3 Hawking Technologies Inc
+ AB08 PN672TX 10/100 Ethernet
+17B4 Indra Networks Inc
+ 0011 WebEnhance 100 GZIP Compression Card
+17B5 Emerge Core Networks LLC
+17B6 GE Medical Systems
+17B7 CAE
+17B9 Sapura Devices
+17BA Sandburst Corporation
+17BB ArTile Microsystems Inc
+17BC Infiniswitch Corporation
+17BD Merging Technologies
+17BE Philips Semiconductors
+17BF Max Diligent Technology Inc
+17C0 Wistron Corporation
+17C1 Nital Consulting Services Inc
+17C2 Newisys Inc
+17C3 Protogate Inc
+17C4 Movita Tehnologies Inc
+17C5 Digital Safety Technologies Inc
+17C6 American Computers & Digital Components Inc
+17C7 Bystronic Laser AG
+17C8 Hexium Ltd
+17C9 OPCiel Networks Inc
+17CA Uniwide Technologies
+17CB Woodside Networks Inc
+ 0001 AGN100 802.11 a/b/g True MIMO Wireless Card
+ 0002 AGN300 802.11 a/b/g True MIMO Wireless Card
+17CC NetChip Technology Inc
+ 2280 Net 2280 USB 2.0 Device Controller
+17CD Tality Corporation
+17CF Z-Com Inc
+17D0 Fodus Communications Inc
+17D1 Patton Electronics
+17D2 Red River
+17D3 Areca Technology Corporation
+ 1110 ARC-1110 4-Port PCI-X to SATA RAID Controller
+ 1120 ARC-1120 8-Port PCI-X to SATA RAID Controller
+ 1130 ARC-1130 12-Port PCI-X to SATA RAID Controller
+ 1160 ARC-1160 16-Port PCI-X to SATA RAID Controller
+ 1210 ARC-1210 4-Port PCIe to SATA RAID Controller
+ 1220 ARC-1220 8-Port PCIe to SATA RAID Controller
+ 1230 ARC-1230 12-Port PCIe to SATA RAID Controller
+ 1260 ARC-1260 16-Port PCIe to SATA RAID Controller
+17D4 Darim Vision Company
+17D5 S2IO Technologies
+ 5831 X3 and X4 Xframe 10GbE PCI-X Adapter
+ 5832 H2 Xframe II 10GbE PCI-X 2.0 Adapter
+17D6 Virtual Silicon Technology Inc
+17D7 SITA
+17D8 Wing-Span Enterprise Co Ltd
+17D9 Leader Electronics Corp
+17DA 0-In Design Automation Inc
+17DB Cray Inc
+17DC Visiowave S.A.
+17DD ICOM Inc
+17DE Kworld Computer Co Ltd
+17DF Dini Group LaJalla Inc
+17E0 Integrated Circuit Solution Incorporation
+17E1 ETI A/S
+17E2 DoTop Technology Inc
+17E3 Opteon Corporation
+17E4 Sectra AB
+ 0001 KK671 Cardbus encryption board
+ 0002 KK672 Cardbus encryption board
+17E5 Paceline Systems
+17E6 Entropic Communications Inc
+17E7 Mitsubishi Electric Engineering Company Limited
+17E8 Chrontel Inc
+17E9 DH electronics GmbH
+17EA iStor Networks Inc
+17EB Aplux Communications Ltd
+17EC Chip Engines Inc
+17ED Arbor Technology Corp
+17EE Connect Components, Ltd.
+ 4153 RV350 Radeon 9550
+17EF Sonexis
+17F0 Velio Communications Inc
+17F1 Interactive Silicon Inc
+17F2 Albatron Corp
+17F3 RDC Semiconductor Co Ltd
+ 6020 R6020 North Bridge
+ 6030 R6030 ISA Bridge
+ 6040 R6040 MAC Controller
+ 6060 R6060 USB 1.1 Controller
+ 6061 R6061 USB 2.0 Controller
+17F4 MicroPlex Printware AG
+17F5 Cymer Inc
+17F6 Leopard Logic Inc
+17F7 Topdek Semiconductor Inc
+17F8 Bermai Inc
+17F9 GemTek Technology Co Ltd
+17FA E-MOVE Technology Co Ltd
+17FB Wavecrest Corp
+17FC Iogear Inc
+17FD Netexcell
+17FE Linksys (Was: InProComm Inc)
+ 2120 WMP11v4 802.11b PCI Card
+ 2220 INPROCOMM IPN 2220 Wireless LAN Adapter
+17FF Benq Corp
+1800 Virtual IP group Inc
+1801 Pro-Nets Technology Corp
+1802 Sinus Messtechnik GmbH
+1803 ProdaSafe GmbH
+1804 Enterasys Networks
+1805 Euresys S.A.
+1806 Nexio Systems Inc
+1807 Comit Systems Inc
+1808 Pigeon Point System
+1809 Emuzed Inc
+180A Brecis Communications
+180B Formoza-Altair
+180C ICP Electronics Inc
+180D Prolific Technology Inc
+180E HCL Technologies Ltd
+1810 HCL Technologies Ltd
+1811 Wipro Technologies
+1812 LANergy
+1813 Ambient Technologies Inc.
+ 4000 MD5628D-L-A intel V.92 HaM Modem
+ 4100 Ambient MD8820 Intel HaM V.92 Modem
+1814 Ralink Technology, Corp
+ 0101 2460 802.11b RT2460 802.11b Baseband/MAC integrated chip
+ 0200 RT2500 802.11g PCI
+ 0201 0x03011814 Zonet ZEW1601 (Ralink Chipset) 802.11b/g WLAN Card
+ 0301 RT2561/RT61 802.11g PCI
+ 0302 RT2525 2.4GHz transceiver + RT2560 MAC/BBP wireless a/b
+ 0401 RT2600 802.11 MIMO
+1815 devolo AG
+1816 Pro Team Computer Corporation
+1817 JAE
+1818 SMAR Equipamentos Industriais Ltd
+1819 Rosta Ltd
+181A NurLogic Design Inc
+181B Comax Technology Inc
+181C Yamatake Corporation
+181D eInfochips
+181E TiARIS
+181F Tachys Technologies
+1820 InfiniCon Systems, Inc.
+1821 RedSwitch Inc
+1822 TwinHan Technology Co Ltd (AKA: VisionPlus)
+ 4E35 Mantis DTV PCI Bridge Controller [Ver 1.0]
+1823 FulCrum Microsystems
+1824 2C Computing Inc
+1825 Computer Access Technology Corporation
+1826 Cradle Technologies Inc
+1827 Denali Software Inc
+1828 Xsido Corporation
+1829 Verisity Design Inc
+182A Ampro Computers Inc
+182B Commetrex Corporation
+182C SYNAD Technology Ltd
+182D SiteCom Europe BV
+ 3069 ISDN PCI DC-105V2
+ 9790 WL-121 Wireless Network Adapter 100g+ [Ver.3]
+182E Raza Foundries Inc
+ 0008 XLR516 Processor
+1830 Credence
+1831 Glimmergalss Networks
+1832 Acquisition Logic Inc
+1833 Cognitronics Corporation
+1834 Delphi Connection Systems
+1835 SimpleTech Inc
+1836 IPFlex Inc
+1837 Sierra Logic Inc
+1838 Precision Photonics Corp
+1839 Genesis Microchip Inc
+183A Transwarp Networks Inc
+183B Mikrom GmbH
+ 08A7 MVC100 DVI
+ 08A8 MVC101 SDI
+ 08A9 MVC102 DVI+Audio
+183C GCT Semicondustor Inc
+183D SI Packets
+183E Telewise Communications Inc
+183F Computer Ultrasound Global Inc
+1840 vpr Matrix Inc
+1841 Lamprey Networks Inc
+1842 Camtel Technology Corp
+1843 Firstech Technology Co Ltd
+1844 Controlnet Inc
+1845 Siliquent Technologies Ltd
+1846 Lucent Technologies NS UK
+1847 Engim Inc
+1848 Microcom C.E. as
+1849 ASRock Inc
+184A Thales Computers
+184B Systec Corporation
+184C Hirose Electric Co Ltd
+184D ICTV Inc
+184E Netlogic Microsystems Inc
+184F Ionwerks Inc
+1850 Advantest Corp
+1851 Microtune Inc
+1852 Anritsu Corp
+1853 Oasis Silicon Systems AG
+1854 LG Electronics
+1855 Cascade Semiconductor Solutions Inc
+1856 Silicon Logic Engineering Inc
+185B Compro Technology Inc
+185F Wistron NeWeb Corp
+1860 Primagraphics Ltd.
+1864 SilverBack
+ 2110 ISNAP 2110
+1866 Supergrace
+1867 Topspin Communications
+ 5A44 MT23108 PCI-X HCA
+ 5A45 MT23108 PCI-X HCA flash recovery
+ 5A46 MT23108 PCI-X HCA bridge
+ 6278 MT25208 InfiniHost III Ex (Tavor compatibility mode)
+ 6282 MT25208 InfiniHost III Ex
+186C Humusoft S.R.O
+187E ZyXEL Communication Corporation
+1885 Avvida Systems Inc
+1887 Elan Digital Systems Ltd
+1888 Varisys Limited
+ 0301 VMFX1 FPGA PMC module
+ 0601 VSM2 dual PMC carrier
+ 0710 VS14x series PowerPC PCI board
+ 0720 VS24x series PowerPC PCI board
+ 2503 Bt881 Video Capture (10 bit High qualtiy cap)
+ 2504 Bt878 Video Capture
+ 3503 nVidia NV28 VGA Geforce4 MX440
+ 3505 nVidia NV28 VGA Geforce4 Ti4200
+188A Ample Communications Inc
+188D Millogic Ltd.
+1890 Egenera, Inc.
+1894 KNC One
+1896 B&B Electronics Manufacturing Company Inc
+1898 DIC Information Technology Ltd
+ 2001 DVB Receiver Card
+18A1 Astute Networks Inc
+18AC DViCO Corp
+ D500 FusionHDTV 5
+ D800 FusionHDTV 3 Gold
+ D810 FusionHDTV 3
+ D820 FusionHDTV 3 Gold-T
+18B8 Ammasso
+ B001 AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor
+18BC Info-Tek Corp.
+18C3 Micronas Semiconductor Holding AG
+18C8 Cray Inc (Was: Octigabay System)
+18C9 ARVOO Engineering BV
+ 1011 Leonardo CL Video processor
+ 1012 Leonardo CL-P Video processor
+ 1013 Leonardo CL-DB Video processor
+ 1014 Leonardo CL-P-DB Video processor
+ 1015 Leonardo CL-DVR Video processor
+ 1016 Leonardo CL-DVR-DB Video processor
+ 2011 Picasso 2SQ Framegrabber
+ 2012 Picasso 3C/3Cpro Framegrabber
+ 2013 Picasso LS Framegrabber
+ 2014 Picasso CL Framegrabber
+ 2015 Picasso FI Framegrabber
+ 2016 Picasso SDI Framegrabber
+ 2017 Picasso DUO Framegrabber
+ 2021 Colory Framegrabber
+ 3011 Valentino Video Output Board
+18CA XGI Technology Inc
+ 0040 8085 Volari Family
+18D0 Kobian Pte Ltd
+18D2 Sitecom
+18D4 Celestica
+18DD Artimi Inc
+18E6 MPL AG
+ 0001 OSCI [Octal Serial Communication Interface]
+18EC Cesnet z.s.p.o.
+ C006 COMBO6
+ C045 COMBO6E
+ C050 COMBO-PTM
+ C058 COMBO6X
+18F1 Spectrum Systementwicklung Microelectronic GmbH
+18F4 Napatech A/S
+18F6 NextIO
+ 1000 [Nexsis] Switch Virtual P2P PCIe Bridge
+ 1050 [Nexsis] Switch Virtual P2P PCI Bridge
+ 2000 [Nexsis] Switch Integrated Mgmt. Endpoint
+18F7 Commtech, Inc.
+ 0001 ESCC-PCI-335 Fastcom:ESCC-PCI-335 Syncronous RS422/485 serial communication adapter
+ 0002 422/4-PCI-335 Fastcom:422/4-PCI-335 Asyncronous RS422/485 serial adapter
+ 0004 422/2-PCI-335 Fastcom:422/2-PCI-335 Asyncronous RS422/485 serial adapter
+ 0005 Fastcom IGESCC-PCI-ISO/1
+ 000A 232/4-PCI-335 Fastcom:232/4-PCI-335 Asyncronous RS232 serial adapter
+18FB Resilience Corporation
+1904 Hangzhou Silan Microelectronics Co Ltd
+ 8139 RTL8139D (Realtek) PCI 10/100BaseTX ethernet adaptor
+1905 WIS Technology, Inc.
+1910 Seaway Networks
+ 0001 SW5000-NCA Seaway Network Content Accelerator
+1923 Sangoma Technologies Corp
+ 0040 A200/Remora FXO/FXS Analog AFT card
+ 0100 A104d QUAD T1/E1 AFT card
+ 0300 A101 single-port T1/E1
+ 0400 A104u Quad T1/E1 AFT
+1924 Level 5 Networks Inc
+192E TransDimension
+ 0104 PCI Development Card
+1931 Option N.V.
+ 000C Qualcomm MSM6275 UMTS chip
+1942 ClearSpeed Technology plc
+ E511 CSX600 Advance Accelerator Board
+194A DapTechnology B.V.
+ 1111 FireSpy3850
+ 1112 FireSpy450b
+ 1113 FireSpy450bT
+ 1114 FireSpy850
+ 1115 FireSpy850bT
+1957 Freescale Semiconductor Inc
+ 0012 MPC8548 [PowerQUICC III]
+ 0080 MPC8349E
+ 0081 MPC8349
+ 0082 MPC8347E TBGA
+ 0083 MPC8347 TBGA
+ 0084 MPC8347E PBGA
+ 0085 MPC8347 PBGA
+ 0086 MPC8343E
+ 0087 MPC8343
+1958 Faster Technology LLC
+1959 PA Semi Inc
+1966 Orad Hi-Tec Systems
+ 1975 DVG64 family
+1969 Attansic (Now owned by Atheros)
+ 1048 L1 Gigabit Ethernet 10/100/1000Base-T Ethernet Controller
+ 2048 L2 Fast Ethernet 10/100 Base-T Controller
+196A Sensory Networks Inc
+ 0101 NodalCore C-1000 Content Classification Accelerator
+ 0102 NodalCore C-2000 Content Classification Accelerator
+ 0105 NodalCore C-3000 Content Classification Accelerator
+196D Club-3D BV
+1971 AGEIA Technologies Inc
+ 1011 Physics Processing Unit [PhysX]
+ 1975 DVG64 family
+197B JMicron Technology Corp
+ 2360 JMicron 20360/20363 AHCI Controller
+ 2361 JMB361 AHCI/IDE
+ 2363 JMB36X PCIe-to-SATA-300/IDE RAID Controller
+ 2365 JMB365 AHCI/IDE
+ 2366 JMB366 AHCI/IDE
+ 2368 JMB368 IDE Controller
+1989 Montilio Inc
+ 0001 RapidFile Bridge
+ 8001 RapidFile Bridge
+1993 Innominate Security Technologies AG
+199A Pulse-LINK Inc
+19A2 ServerEngines LLC
+ 0001 ACA2400 Crypto Accelerator
+ 0200 BladeEngine 10Gb PCI-E iSCSI adapter
+ 0201 BladeEngine 10Gb PCI-E Network Adpater
+ 0520 4135 HFT Interface Controller
+19A8 DAQDATA GmbH
+19AC Kasten Chase Applied Research
+ 0001 ACA2400 Crypto Accelerator
+19AE Progeny Systems Corp
+19D4 Quixant Limited
+19E2 Vector Informatik GmbH
+1A03 ASPEED Technology Inc
+1A08 Sierra Semiconductor
+ 0000 SC15064
+1A1D GFaI e.V.
+1A22 Ambric Inc
+1A29 Fortinet Inc
+1A42 Imaginant
+1A51 Hectronic AB
+1A5D Celoxica
+1A71 XenSource Inc
+1A73 Violin Technologies Inc
+1A77 Lightfleet Corporation
+1A78 Virident Systems Inc
+1A8C Verigy Pte Ltd
+ 1100 E8001-66443 PCIe CIC
+1B13 Jaton Corporation USA
+ 0001 GeForce4 MX 440 nVidia Corporation NV17
+1B28 Taicom Data Systems Co Ltd
+1C1C DTC / Symphony / Forex Computer Corp
+ 0001 FR710/82C101 EIDE
+1D44 Distributed Processing Technology (DPT)
+ A400 PM2x24/PM3224 SCSI Adapter
+1DE1 Tekram Technology
+ 0391 TRM-S1040 DC-315U Ultra SCSI Controller
+ 2020 DC-390 SCSI Controller
+ 690C DC-690C IDE Cache Controller
+ DC29 DC290M Bus Master IDE PCI 2 controllers
+1DE2 A/DHOC Systems
+ 1190 001 Slave PCI protyting board
+1FC0 Tumsan Oy
+ 0300 E2200 Dual E1/Rawpipe Card
+1FC1 PathScale Inc
+1FCE Cognio Inc
+1FCF Miranda Technologies Ltd.
+2000 Agat-RT(??)
+ 0DDD Alder-9P computer telephony interface board
+ 2800 56K Voice Modem
+2001 Temporal Research Ltd
+2002 Automation Technology GmbH
+ 2003 PCI Frame Grabber
+2003 Netodragon?? Smartlink??
+ 8800 Netodragon 56K voice modem
+2004 Smart Link Ltd
+2014 NONTECH Nonnenmacher GmbH
+ 0004 aa551234 PCI Master Target
+ 0040 0xff8000 PCI to Private Bus Bridge
+21C3 21st Century Computer Corp
+22B8 Motorola Inc
+2348 Racore
+ 2010 8142 100VG/AnyLAN
+2646 Kingston Technology Corp
+270B Xantel Corp
+270F ChainTech Computer Co. Ltd.
+2711 AVID Technology Inc
+2EC1 Zenic Inc
+3000 Hansol Electronics Inc
+3030 C-Net
+3142 Post Impression Systems
+3388 PLX Technology (Was: HiNT Corp)
+ 0013 HiNT HC4 PCI to ISDN bridge, Multimedia audio Controller
+ 0014 HiNT HC4 PCI to ISDN bridge, Network Controller
+ 0020 PCI 6154/6254 HB2/HB6 Universal PCI to PCI bridge (transparent mode)
+ 0021 PCI 6140/52/6254 HB1/1-SE/HB6 Universal PCI to PCI Bridge (non-transparent mode)
+ 0022 PCI 6150 HB4 PCI to PCI Bridge
+ 0026 PCI 6154 HB2 PCI to PCI Bridge
+ 0028 PCI 6540 HB8 Dual Mode PCI-X-to-PCI-X Bridge (transparent mode)
+ 0029 PCI 6540 HB8 Dual Mode PCI-X-to-PCI-X Bridge (non-transparent mode)
+ 0030 PCI 6520 HB7 Transparent PCI-X-to-PCI-X Bridge
+ 0031 PCI 6156 Synchronous 32-Bit, 33 MHz PCI-to-PCI Bridge for Video Capture Applications
+ 101A E.Band [AudioTrak Inca88]
+ 101B E.Band [AudioTrak Inca88]
+ 8011 VXPro II Chipset CPU to PCI Bridge
+ 8012 VXPro II Chipset PCI to ISA Bridge
+ 8013 VXPro II Chipset EIDE Controller
+ A101 Blackmagic DeckLink
+ A102 Blackmagic DeckLink
+ A103 Blackmagic DeckLink
+ A104 Blackmagic DeckLink
+ A105 Blackmagic DeckLink
+3411 Quantum Designs (H.K.) Inc.
+3513 ARCOM Control Systems Ltd.
+3842 EVGA.COM
+38D0 mfp-online.de
+ 62D6 fieldbus-master PCI Measurement bus Controller for EPSI
+38EF 4links
+3D3D 3Dlabs, Inc. Ltd
+ 0001 GLint 300SX 3D Accelerator
+ 0002 GLint 500TX Sapphire 3D Accelerator
+ 0003 GLint Delta Geometry processor
+ 0004 3C0SX 2D+3D Accelerator
+ 0005 Permedia 2D+3D Accelerator
+ 0006 GLint MX 3D Accelerator
+ 0007 3D Extreme Permedia II 2D+3D Accelerator
+ 0008 GLint Gamma G1
+ 0009 Permedia2v 2d+3d chipset, integrated ramdac
+ 000A Permedia 3
+ 000C Permedia 3
+ 000D GLINT R4 3D Accelerator
+ 000E GLINT Gamma G2
+ 0011 GLint R4 rev B
+ 0012 GLint R5 rev A
+ 0013 GLint R5 rev B
+ 0020 VP10 visual processor
+ 0022 VP10 visual processor
+ 0024 VP9 visual processor
+ 0030 0x030000 3Dlabs Wildcat Realizm 800
+ 0100 Permedia II 2D+3D Accelerator
+ 07A1 Wildcat III 6210
+ 07A2 Sun XVR-500 Graphics Accelerator
+ 07A3 Wildcat IV 7210
+ 1004 Permedia 3D+3D Accelerator
+ 3D04 Permedia 2D+3D Accelerator
+ FFFF Glint VGA (Error??)
+4005 Avance Logic Inc.
+ 0300 ALS300 PCI Audio Device
+ 0308 3220 PCI Audio Device + modem
+ 0309 ALS300+ PCI Input Controller
+ 1064 ALG-2064 GUI Accelerator
+ 2064 ALG-2032/64i GUI Accelerator
+ 2128 ALG-2364A GUI Accelerator
+ 2301 AVL-2301 GUI Accelerator
+ 2302 ALG-2302 GUI Accelerator
+ 2303 AVG-2302 GUI Accelerator
+ 2364 ALG2364 GUI Accelerator
+ 2464 ALG2464 GUI Accelerator
+ 2501 ALG2564A/25128A GUI Accelerator
+ 4000 ALS4000 Audio Chipset
+4033 Delta Networks Inc
+ 1300 SIS900 10/100Mbps Fast Ethernet Controller
+ 1320 VT86C100A 10/100M PCI Fast Ethernet Controller
+ 1360 RTL8139A 10/100 Mbps PCI Fast Ethernet Controller
+ 1380 DEC 21143PD 10/100M PCI Fast Ethernet Controller
+ 7001 ISL36341M PRISM 2.5 Mini-PCI 802.11b Wireless Controller
+4040 NetXen Incorporated
+ 0001 NXB-10GXSR 10 Gigabit Ethernet PCIe Adapter with SR-XFP optical interface
+ 0002 NXB-10GCX4 10 Gigabit Ethernet PCIe Adapter with CX4 copper interface
+ 0003 NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface
+ 0004 BladeCenter-H 10 Gigabit Ethernet High Speed Daughter Card
+4143 Digital Equipment Corp
+4144 Alpha Data Parallel Systems Ltd
+ 0040 ADM-XRC Virtex-E Bridge
+ 0041 ADM-XRC-II Lite Virtex-II Bridge
+ 0042 ADM-XRC-II Virtex-II Bridge
+ 0043 ADM-XPL Virtex-II Pro Bridge
+ 0044 ADM-XP Virtex-II Pro PCI/PCI-X Bridge
+ 0045 ADP-WRC-II Virtex-II Bridge
+ 0046 ADP-DRC-II Virtex-II Bridge
+ 0049 ADP-XPI Virtex-II Pro PCI
+ 004A ADP-XPI (PCI-X) Virtex-II Pro PCI-X Bridge
+ 004F ADM-XRC-4FX Virtex-II Pro PCI-X Bridge
+ 0050 ADM-XRC-5LX Virtex-4LX Bridge
+ 0051 ADM-XRC-5T1 ADM-XRC-5T1
+416C Aladdin Knowledge Systems
+ 0100 AlladinCARD
+ 0200 CPC
+4250 Burke Porter Ltd
+434D ?? Unknown (Present in WinXP Drivers)
+ 1002 56K Voice Modem
+4444 Conexant Inc (Was: Globespan, ICompression Inc)
+ 0002 iTVC12 MPEG Codec
+ 0016 iTVC16/CX23416 MPEG Codec
+ 0803 iTVC15/CX23415 MPEG Codec
+4468 Bridgeport Machines
+4594 Cogetec Informatique Inc
+45FB Baldor Electric Company
+4680 UMAX Computer Corp.
+4843 Hercules Computer Technology Inc
+4916 RedCreek Communications Inc
+ 1960 RedCreek PCI Adapter
+4943 Growth Networks
+494F ICS Advent
+ 22C0 Watchdog WDT500
+ ACA8 PCI-AI/1216 ADC Card
+ ACA9 PCI-AI/1216(M) ADC Card
+4954 Integral Technologies
+4978 Axil Computer Inc.
+4A14 NetVin
+ 5000 NV5000 RPTI RTL8029-Based PCI Ethernet Adapter
+4ABD Applied Biosystems Division
+4B10 Buslogic Inc
+ 3080 SCSI Host Adapter
+ 4010 Wide SCSI Host Adapter
+4C48 Lung Hwa Electronics
+4C53 SBS Technologies (AKA: SBS-Or Industrial Computers)
+ 0000 PLUSTEST Diagnostics Device
+4CA1 Seanix Technology Inc
+4CCC Computer Conversions Corp
+4D51 Mediaq Inc.
+ 0200 MQ-200
+4D54 Microtechnica Co Ltd
+4DDC ILC Data Device Corp.
+ 0100 DD-42924I5-300 (ARINC 429 Data Bus)
+ 0801 BU-65570I1 MIL-STD-1553 Test and Simulation
+ 0802 BU-65570I2 MIL-STD-1553 Test and Simulation
+ 0811 BU-65572I1 MIL-STD-1553 Test and Simulation
+ 0812 BU-65572I2 MIL-STD-1553 Test and Simulation
+ 0881 BU-65570T1 MIL-STD-1553 Test and Simulation
+ 0882 BU-65570T2 MIL-STD-1553 Test and Simulation
+ 0891 BU-65572T1 MIL-STD-1553 Test and Simulation
+ 0892 BU-65572T2 MIL-STD-1553 Test and Simulation
+ 0901 BU-65565C1 MIL-STD-1553 Data Bus
+ 0902 BU-65565C2 MIL-STD-1553 Data Bus
+ 0903 BU-65565C3 MIL-STD-1553 Data Bus
+ 0904 BU-65565C4 MIL-STD-1553 Data Bus
+ 0B01 BU-65569I1 MIL-STD-1553 Data Bus
+ 0B02 BU-65569I2 MIL-STD-1553 Data Bus
+ 0B03 BU-65569I3 MIL-STD-1553 Data Bus
+ 0B04 BU-65569I4 MIL-STD-1553 Data Bus
+5046 GemTek Technology corp
+ 1001 PCI Radio
+5053 TBS/Voyetra Technologies
+ 2010 Daytona Audio Adapter
+5136 S S Technologies
+5143 Qualcomm Inc.
+5145 Ensoniq (Oldest ID)
+ 3031 Concert AudioPCI
+5168 Animation Technologies Inc
+5301 Alliance Semiconductor Corp
+ 0001 ProMotion aT3D
+5333 S3 Graphics Co., Ltd
+ 0551 86C551 Plato/PX
+ 5333 S3 86c765 via
+ 5631 86C325 Virge 3D GUI Accelerator
+ 8800 86C866 Vision 866 GUI Accelerator
+ 8801 86C964 Vision 964 GUI Accelerator
+ 8810 86C732 Trio 32 GUI Accelerator
+ 8811 86C732 Trio32, 86C764 Trio64, 86C765 Trio64V+ Rev 01
+ 8812 86CM65? Aurora 64V+
+ 8813 86C764 Trio64, 86C765 Trio64V+ Rev 03
+ 8814 86C767 Trio 64UV+
+ 8815 86CM66 Aurora128
+ 883D 86C988 ViRGE/VX 3D GUI Accelerator
+ 8870 Fire GL
+ 8880 86C868 Vision 868 GUI Accelerator VRAM rev. 0
+ 8881 86C868 Vision 868 GUI Accelerator VRAM rev. 1
+ 8882 86C868 Vision 868 GUI Accelerator VRAM rev. 2
+ 8883 86C868 Vision 868 GUI Accelerator VRAM rev. 3
+ 88B0 86C928 Vision 928 GUI Accelerator VRAM rev. 0
+ 88B1 86C928 Vision 928 GUI Accelerator VRAM rev. 1
+ 88B2 86C928 Vision 928 GUI Accelerator VRAM rev. 2
+ 88B3 86C928 Vision 928 GUI Accelerator VRAM rev. 3
+ 88C0 86C864 Vision 864 GUI Accelerator DRAM rev. 0
+ 88C1 86C864 Vision 864 GUI Accelerator DRAM rev. 1
+ 88C2 86C864 Vision 864 GUI Accelerator DRAM rev. 2
+ 88C3 86C864 Vision 864 GUI Accelerator DRAM rev. 3
+ 88D0 86C964 Vision 964 GUI Accelerator VRAM rev. 0
+ 88D1 86C964 Vision 964-P GUI Accelerator VRAM rev. 1
+ 88D2 86C964 Vision 964-P GUI Accelerator DRAM rev 2
+ 88D3 86C964 Vision 964-P GUI Accelerator VRAM rev. 3
+ 88F0 86C968 Vision 968 GUI Accelerator VRAM rev. 0
+ 88F1 86C968 Vision 968 GUI Accelerator VRAM rev. 1
+ 88F2 86C968 Vision 968 GUI Accelerator VRAM rev. 2
+ 88F3 86C968 Vision 968 GUI Accelerator VRAM rev. 3
+ 8900 86C775 Trio64V2/DX
+ 8901 pci\ven_5333dev_8C2E&SUBSYS_00011179&REV_05\4&74C6 Trio64V2/DX-/GX Graphics Drivers
+ 8902 86C551 SMA Family
+ 8903 TrioV Family
+ 8904 86C365 Trio3D QFP, 86C366 Trio3D BGA
+ 8905 86c765 86C765 Trio64V+ compatible
+ 8906 86c765 86C765 Trio64V+ compatible
+ 8907 86c765 86C765 Trio64V+ compatible
+ 8908 9711 MCN74 86C765 Trio64V+ compatible
+ 8909 7699688 86C765 Trio64V+ compatible
+ 890A 0x00091011 86C765 Trio64V+ compatible
+ 890B 9726 c19394.00 86C765 Trio64V+ compatible
+ 890C 86C765 Trio64V+ compatible
+ 890D 86C765 Trio64V+ compatible
+ 890E 9711 MCN74 86C765 Trio64V+ compatible
+ 890F 86c765 86C765 Trio64V+ compatible
+ 8A01 86C375 ViRGE/DX, 86C385 ViRGE/GX
+ 8A10 86C357 ViRGE/GX2, 86C359 ViRGE/GX2+
+ 8A11 86C359 ViRGE /GX2+ Macrovision
+ 8A12 86C359 ViRGE /GX2+
+ 8A13 86C368 Trio3D2x & Trio3D2x+ AGP / Trio3D2x & Trio3D2x+ 8MB
+ 8A20 86C391 S3savage3D
+ 8A21 86C390 Savage3D/MV
+ 8A22 86C394/5/6/7/8 Savage4 LT/GT/Pro-M/Pro/Xtreme
+ 8A23 86C394-397 Savage 4
+ 8A25 Savage4 ProSavage PM133
+ 8A26 86C370/7 ProSavage
+ 8C00 85C260 ViRGE/M3 (ViRGE/MX)
+ 8C01 86C260 ViRGE/M5 (ViRGE/MX)
+ 8C02 86C240 ViRGE/MXC
+ 8C03 86C280 ViRGE/MX+ Macrovision
+ 8C10 86C270 Savage/MX,274 Savage/IX,290 Savage/MX+MV,294 Savage/IX+MV
+ 8C11 82C270-294 Savage/MX
+ 8C12 86C270/274/290/294 Savage MX/IX/MX+MV/IX+MV
+ 8C13 82C294 SAVAGE IX
+ 8C22 86C508 SuperSavage 128/MX
+ 8C24 SuperSavage MX/64
+ 8C26 SuperSavage MX/64C
+ 8C2A 86C544 SuperSavage 128/IX
+ 8C2B 86C553 SuperSavage 128/IX DDR
+ 8C2C 86C564 SuperSavage/IX
+ 8C2D 86C573 SuperSavage/IX DDR
+ 8C2E 86C584 SuperSavage/IXC SDRAM
+ 8C2F 86C594 SuperSavage/IXC DDR
+ 8D01 82C380 Twister, 82C381 Twister T
+ 8D02 86c387 Twister K
+ 8D03 VT8751 ProSavageDDR P4M266
+ 8D04 86C410 ProSavage DDR
+ 8E00 86C777 DeltaChromeS8, 86C787 DeltaChromeF1
+ 8E01 86C732 DeltaChromeX9m
+ 8E10 GammaChromeS18
+ 8E48 Chrome 20 Series
+ 9102 86c410 Inno Savage 2000
+ CA00 86C617 SonicVibes PCI Audio Accelerator
+5401 Ericsson
+ 0101 DSSS Wireless LAN PCI Card
+5430 Evergreen Technologies Inc
+ 0100 AcceleraPCI Upgrade Card Adapter
+544C Teralogic Inc
+ 0350 TL880-based HDTV/ATSC tuner
+5455 Technische Universitaet Berlin
+ 4458 S5933 PCI to MyBus Bridge
+5519 Cnet Technologies Inc
+5544 Dunord Technologies
+ 0001 I-30xx Scanner Interface
+5555 Genroco Inc.
+ 0003 VPI General Digital Video Component Digital Video OEM computer module
+5654 VoiceTronix Pty Ltd
+ 3132 OpenSwitch12
+5700 Netpower
+5851 Exacq Technologies
+6356 UltraStor
+ 4002 ULTRA24 SCSI Host
+ 4102 ULTRA24 SCSI Host
+ 4202 ULTRA24 SCSI Host
+ 4302 ULTRA24 SCSI Host
+ 4402 ULTRA24 SCSI Host
+ 4502 ULTRA24 SCSI Host
+ 4602 ULTRA24 SCSI Host
+ 4702 ULTRA24 SCSI Host
+ 4802 ULTRA24 SCSI Host
+ 4902 ULTRA24 SCSI Host
+ 4A02 ULTRA24 SCSI Host
+ 4B02 ULTRA24 SCSI Host
+ 4C02 ULTRA24 SCSI Host
+ 4D02 ULTRA24 SCSI Host
+ 4E02 ULTRA24 SCSI Host
+ 4F02 ULTRA24 SCSI Host
+6374 c't Magazin fuer Computertechnik
+ 6773 CT-GPPCI General Purpose PCI Interface
+6409 Logitec Corp.
+6666 Decision Computer International Co.
+ 0001 815 PCCOM4
+ 0002 PCCOM8
+ 0004 PCCOM2
+ 0101 PCI 8255/8254 I/O Card
+6809 Kurusugawa Electronics Industry Inc
+7063 pcHDTV
+ 2000 HD-2000
+ 3000 HD-3000
+ 5500 HD5500 HDTV
+7604 O.N. Electric Co. Ltd.
+7747 DaoGuo Technology Co Ltd
+7BDE Midac Corporation
+7FED PowerTV
+8001 Beyertone AG Germany
+8008 Quancom Electronic GmbH
+ 0010 PWDOG1 Watchdog
+ 0011 PWDOG2 Watchdog2
+ 0016 PROTO2
+ 0100 PREL8
+ 0102 PREL16
+ 0103 POPTOREL16
+ 0105 POPTO16IN
+ 0106 PTTL24IO
+ 0107 PUNIREL
+ 1000 PDAC4
+ 1001 PAD12DAC4
+ 1002 PAD16DAC4
+ 1005 PAD12
+ 1006 PAD16
+ 3000 POPTOLCA
+ 3100 PCIPROTO
+ 3103 PCIOPTO16IO
+ 3104 PCIOPTOREL16
+ 3203 PCIOPTO16IO/LC
+ 3204 PCIREL16
+ 3301 PCITTL32IO
+ 3302 PCIGPIB
+807D Asustek Computer Inc
+8086 Intel Corporation
+ 0007 82379AB (??)
+ 0008 Extended Express System Support Controller
+ 0039 21145 Ethernet Adapter
+ 0122 82437FX 430FX (Triton) System Controller
+ 0309 80303 I/O Processor PCI-to-PCI Bridge Unit
+ 030D 80312 I/O Companion Unit PCI-to-PCI Bridge
+ 0318 80219 400 MHz Gen Purpose PCI Processor Address Translation Unit
+ 0319 80219 600 MHz Gen Purpose PCI Processor Address Translation Unit
+ 0326 6700/6702PXH I/OxAPIC Interrupt Controller A
+ 0327 6700PXH I/OxAPIC Interrupt Controller B
+ 0329 6700PXH PCI Express-to-PCI Express Bridge A
+ 032A 6700PXH PCI Express-to-PCI Express Bridge B
+ 032C 6702PXH PCI Express-to-PCI Express Bridge
+ 032D 41110 [Lanai-V] Serial to Parallel PCI Bridge - Single Segment Bridge
+ 0330 80332 [Dobson] I/O processor A-segment Bridge
+ 0331 80332 [Dobson] I/O processor A-segment IOAPIC
+ 0332 80332 [Dobson] I/O processor B-segment Bridge
+ 0333 80332 [Dobson] I/O processor B-segment IOAPIC
+ 0334 80332 [Dobson] I/O processor Address Translation Unit (ATU)
+ 0335 80331 [Lindsay] I/O processor PCI-X bridge
+ 0336 80331 [Lindsay] I/O processor Address Translation Unit (ATU)
+ 0340 41210 [Lanai] Serial to Parallel PCI Bridge A-segment Bridge
+ 0341 41210 [Lanai] Serial to Parallel PCI Bridge B-segment Bridge
+ 0370 80333 Segment-A PCI Express-to-PCI Express Bridge
+ 0371 80333 A-Bus IOAPIC
+ 0372 80333 Segment-B PCI Express-to-PCI Express Bridge
+ 0373 80333 B-Bus IOAPIC
+ 0374 80333 Address Translation Unit
+ 0482 82375MB PCI-EISA Bridge (PCEB)
+ 0483 82424TX/ZX (Saturn) Cache/DRAM Controller
+ 0484 82378ZB/IB,82379AB PCI to ISA Bridge, System I/O
+ 0486 82420EX/ZX 486 PCIset System, ISA Bridge & EIDE Controller
+ 04A3 82434LX/NX (Mercury/Neptune) Cache/DRAM Controller
+ 04D0 82437FX 430FX CPU to PCI Bridge
+ 0500 E8870 Processor Bus Controller
+ 0501 E8870 Memory Controller
+ 0502 E8870 Scalability Port 0
+ 0503 E8870 Scalability Port 1 / Global Performance Monitoring
+ 0510 E8870IO Hub Interface Port 0 (8-bit Compatibility)
+ 0511 E8870IO Hub Interface Port 1
+ 0512 E8870IO Hub Interface Port 2
+ 0513 E8870IO Hub Interface Port 3
+ 0514 E8870IO Hub Interface Port 4
+ 0515 E8870IO Server I/O Hub (SIOH)
+ 0516 E8870IO Reliabilty, Availability and Serviceability (RAS)
+ 0530 E8870SP Scalability Port 0
+ 0531 E8870SP Scalability Port 1
+ 0532 E8870SP Scalability Port 2
+ 0533 E8870SP Scalability Port 3
+ 0534 E8870SP Scalability Port 4
+ 0535 E8870SP Scalability Port 5
+ 0536 E8870SP Scalability Port Switch Global Registers
+ 0537 E8870SP Interleave Configuration Registers
+ 0600 Storage RAID Controller
+ 0601 RAID Controller
+ 061F 80303 I/O Processor
+ 0960 80960RP i960 RP Microprocessor/Bridge
+ 0962 80960RM/RN i960RM/RN Microprocessor/Bridge
+ 0964 80960RP i960 RP Microprocessor Bridge
+ 1000 82542 Gigabit Ethernet Controller
+ 1001 2572 10/100/1000 Ethernet Controller (Fiber)
+ 1002 Pro 100 LAN+Modem 56 CardBus II
+ 1004 82543GC Gigabit Ethernet Controller (Copper)
+ 1008 82544EI/GC Gigabit Ethernet Controller (Copper)
+ 1009 82544EI Gigabit Ethernet Controller (Fiber)
+ 100A 82540EM Gigabit Ethernet Controller
+ 100C 82543EI/GC Gigabit Ethernet Controller (Copper)
+ 100D 82544GC Gigabit Ethernet Controller (LOM)
+ 100E 82540EM Gigabit Ethernet Controller
+ 100F 82545EM Gigabit Ethernet Controller (copper)
+ 1010 82546EB Dual Port Gigabit Ethernet Controller (Copper)
+ 1011 82545EM Gigabit Ethernet Controller (Fiber)
+ 1012 82546EB Dual Port Gigabit Ethernet Controller (Fiber)
+ 1013 82541EI Gigabit Ethernet Controller (Copper)
+ 1014 82541ER Gigabit Ethernet Controller
+ 1015 82540EM Gigabit Ethernet Controller (LOM)
+ 1016 82540EP Gigabit Ethernet Controller (LOM)
+ 1017 82540EP Gigabit Ethernet Controller (LOM)
+ 1018 82541EI PRO/1000 MT Mobile connection
+ 1019 82547EI Gigabit Ethernet Controller (LOM)
+ 101A 82547EI Gigabit Ethernet Controller (LOM)
+ 101D 82546EB Dual Port Gigabit Ethernet Controller
+ 101E 82540EP Gigabit Ethernet Controller (Mobile)
+ 1026 82545GM Gigabit Ethernet Controller
+ 1027 82545GM Gigabit Ethernet Controller (Fiber)
+ 1028 82545GM Gigabit Ethernet Controller
+ 1029 82559 Fast Ethernet PCI/CardBus Controller
+ 1030 825593 PCI Networking device
+ 1031 82801CAM (ICH3) PRO/100 VE (LOM) Network Connection
+ 1032 82801CAM (ICH3) PRO/100 VE Network Connection
+ 1033 82801CAM (ICH3) PRO/100 VM Network Connection
+ 1034 82801CAM (ICH3) PRO/100 VM Network Connection
+ 1035 82801CAM (ICH3)/82562EH based Phoneline Network Connection
+ 1036 82801CAM (ICH3)/82562EH based Phoneline Network Connection
+ 1037 82801CAM (ICH3) Chipset Ethernet Controller
+ 1038 82801CAM (ICH3) PRO/100 VM (KM) Network Connection
+ 1039 82801DB/DBL (ICH4/ICH4-L) PRO/100 VE Network Connection
+ 103A 82801DB/DBL (ICH4/ICH4-L) PRO/100 VE Network Connection
+ 103B 82801DB/DBL (ICH4/ICH4-L) PRO/100 VM Network Connection
+ 103C 82801DB/DBL (ICH4/ICH4-L) PRO/100 VM Network Connection
+ 103D 82801DB (ICH4) PRO/100 VE Network Connection
+ 103E 82801DB (ICH4) PRO/100 VM Network Connection
+ 1040 536EP V.92 PCI (DSP) Data Fax Modem
+ 1042 PRO/Wireless 2011 LAN PCI Card
+ 1043 82801 Intel(R) PRO/Wireless 2100 LAN Card Driver
+ 1048 82597EX 10 Gigabit Ethernet Controller
+ 1049 82566MM Gigabit Network Connection
+ 104A 82566DM Gigabit Network Connection
+ 104B 82566DC Gigabit Network Connection
+ 104C 82562V 10/100 Network Connection
+ 104D 82566MC Gigabit Network Connection
+ 1050 82801EB/ER PRO/100 VE Network Connection
+ 1051 82801EB/ER (ICH5/ICH5R) PRO/100 VE Network Connection
+ 1052 82801EB/ER PRO/100 VM Network Connection
+ 1053 82801EB/ER PRO/100 VM Network Connection
+ 1054 82801EB/ER PRO/100 VE Network Connection (mobile)
+ 1055 82801EB/ER PRO/100 VM Network Connection (mobile)
+ 1056 PRO/100 VE Network Connection
+ 1057 PRO/100 VE Network Connection
+ 1059 82551QM Fast Ethernet PCI/CardBus Controller
+ 105B 82546GB Gigabit Ethernet Controller (Copper)
+ 105E PRO/1000 PT
+ 105F PRO/1000 PF
+ 1060 PRO/1000 PB
+ 1064 82562EZ PRO/100 Ethernet Controller
+ 1065 82562ET/EZ/GT/GZ PRO/100 VE Ethernet Controller
+ 1066 82562EM/EX/GX PRO/100 VM (LOM) Ethernet Controller
+ 1067 82562EM/EX/GX PRO/100 VM Ethernet Controller
+ 1068 82562ET/EZ/GT/GZ PRO/100 VE (LOM) Ethernet Controller Mobile
+ 1069 82562EM/EX/GX PRO/100 VM (LOM) Ethernet Controller Mobile
+ 106A 82562G\t PRO/100 VE (LOM) Ethernet Controller
+ 106B 82562G\t PRO/100 VE Ethernet Controller Mobile
+ 1075 82547EI Gigabit Ethernet Controller
+ 1076 82541EI Gigabit Ethernet Controller
+ 1077 82547EI Gigabit Ethernet Controller (Mobile)
+ 1078 82541ER Gigabit Ethernet Controller
+ 1079 82546EB Dual Port Gigabit Ethernet Controller
+ 107A 82546EB Dual Port Gigabit Ethernet Controller (Fiber)
+ 107B 82546EB Dual Port Gigabit Ethernet Controller (Copper)
+ 107C PRO/1000 GT
+ 107D PRO/1000 PT
+ 107E PRO/1000 PF
+ 107F PRO/1000 PB
+ 1080 0321CGEA04 FA82537EP
+ 1081 PRO/1000 EB Network Connection
+ 1082 PRO/1000 EB Server Connection
+ 1083 PRO/1000 EB Backplane Connection
+ 1084 Enterprise Southbridge IDE Redirection
+ 1085 Enterprise Southbridge Serial Port Redirection
+ 1086 Enterprise Southbridge IPMI/KCS0
+ 1087 Enterprise Southbridge UHCI Redirection
+ 1089 Enterprise Southbridge BT
+ 108A PRO/1000 P
+ 108B PC82573V Intel network controller (PCIE Gigabit Ethernet)
+ 108C 82573E Intel Corporation 82573E Gigabit Ethernet Controller (Copper)
+ 108D Active Management Technology - IDE
+ 108E Active Management Technology - KCS
+ 108F Active Management Technology - SOL
+ 1091 PRO/100 VM Network Connection
+ 1092 82562GZ PRO/100 VE Network Controller
+ 1093 PRO/100 VM Network Connection
+ 1094 PRO/100 VE Network Connection
+ 1095 PRO/100 VE Network Connection
+ 1096 PRO/1000 EB Network Connection
+ 1097 PRO/1000 EB Server Connection
+ 1098 PRO/1000 EB Backplane Connection
+ 1099 82546GB Quad Port Server Adapter
+ 109A 82573L Intel PRO/1000 PL Network Adaptor
+ 109B 82546GB PRO/1000 GF Quad Port Server Adapter
+ 109E 82597-based CX4 10 Gigabit Adapter
+ 10A0 82571EB PRO/1000 AT Quad Port Bypass Adapter
+ 10A1 82571EB PRO/1000 AF Quad Port Bypass Adapter
+ 10A4 82571EB Gigabit Ethernet Controller
+ 10B0 82573L PRO/1000 PL Network Connection
+ 10B2 82573V PRO/1000 PM Network Connection
+ 10B3 82573E PRO/1000 PM Network Connection
+ 10B4 82573L PRO/1000 PL Network Connection
+ 10B5 82546GB PRO/1000 GT Quad Port Server Adapter
+ 10B9 82572EI PRO/1000 PT Desktop Adapter (Copper)
+ 10BA PRO/1000 EB1 Network Connection with I/O Acceleration
+ 10BB PRO/1000 EB1 Backplane Connection with I/O Acceleration
+ 10BC 82571EB Gigabit Ethernet Controller (Copper)
+ 10BD 82566DM-2 Gigabit Network Connection
+ 10C0 82562V-2 10/100 Network Connection
+ 10C2 82562G-2 10/100 Network Connection
+ 10C3 82562GT-2 10/100 Network Connection
+ 10C4 82562GT 10/100 Network Connection
+ 10C5 82562G 10/100 Network Connection
+ 1100 82815 815/E (Solano) Host to I/O Hub Bridge with 100MHz DRAM Controller
+ 1101 82815 815/E (Solano) PCI to AGP Bridge
+ 1102 82815 815/E (Solano) Internal GUI Accelerator
+ 1107 PRO/1000 MF Server Adapter (LX)
+ 1110 82815 815/E (Solano) Host to I/O Hub Bridge, AGP Not Implemented
+ 1112 82815 815/E (Solano) Internal GUI Accelerator
+ 1120 82815 815/E (Solano) Host to I/O Hub Bridge, AGP Implemented
+ 1121 82815 815/E (Solano) PCI to AGP Bridge
+ 1130 82815/EM/EP/P 815/EM/EP/P (Solano) Host to I/O Hub Bridge
+ 1131 82815/EM/EP/P 815/EM/EP/P (Solano) PCI to AGP Bridge
+ 1132 82815/EM/EP/P 815/EM/EP/P (Solano) Interal GUI Accelerator
+ 1161 82806AA PCI64 Hub Advanced Programmable Interrupt Controller
+ 1162 BECC XScale 80200 Companion Chip (FPGA by ADI Engineering Inc)
+ 1179 82546EB Dual Port Gigabit Ethernet Controller
+ 1200 IXP1200 Network Processor
+ 1209 8255xER/IT Fast Ethernet Controller
+ 1221 82092AA PCI to PCMCIA Bridge
+ 1222 82092AA EIDE Controller
+ 1223 SAA 7116 H Video Controller
+ 1225 82452KX/GX Orion Extended Express Processor to PCI Bridge
+ 1226 82596 EtherExpress PRO/10
+ 1227 82865g EtherExpress PRO100
+ 1228 EE PRO/100 Smart Intelligent 10/100 Fast Ethernet Adapter
+ 1229 82550/1/7/8/9 EtherExpress PRO/100(B) Ethernet Adapter
+ 122D 82437FX 430FX (Triton) Cache/DRAM Controller
+ 122E 82371FB PCI to ISA Bridge (Triton)
+ 1230 82338/82371FB PIIX PCI EIDE Controller
+ 1231 16345 DSVD Modem
+ 1234 82371MX 430MX Mobile Chipset MPIIX + EIDE + I/O
+ 1235 82437MX 430MX Mobile Chipset System Controller
+ 1237 82440/1FX 440FX (Natoma) System Controller
+ 1239 82371FB 430FX PCI EIDE Controller
+ 123B 82380PB PCI to PCI Docking Bridge
+ 123C 82380AB Mobile PCI-to-ISA Bridge (MISA)
+ 123D 683053 Programmable Interrupt Device
+ 123E 82466GX Integrated Hot-Plug Controller ("Hidden" mode)
+ 123F 82466GX Integrated Hot-Plug Controller (IHPC)
+ 1240 Intel752 AGP Graphics Accelerator
+ 124B 82380FB 380FB Mobile Chipset PCI Bridge
+ 1250 82430HX System Controller (TXC)
+ 12D8 92XX SIGMATEL STAC 92XX C-Major HD Audio
+ 1360 82806AA Hub Interface to PCI Bridge
+ 1361 82806AA PCI64 Hub Controller (HRes), APIC
+ 1460 82870P2 P64H2 PCI/PCI-X Hub Controller
+ 1461 P64H2 I/O Advanced Programmable Interrupt Controller
+ 1462 82870P2 P64H2 PCI/PCI-X Hot Plug Controller
+ 1960 80960RP i960RP Microprocessor
+ 1962 Windows 2003 Server Promise SuperTrak SX6000 (tm) IDE RAID Controller
+ 1A10 Celeron(tm) Processor to I/O Controller
+ 1A11 Celeron(tm) Processor to I/O Controller
+ 1A12 ??? Eicon DIVA Server Voice PRI 2.0 (PCI)
+ 1A13 ??? Eicon DIVA Server Voice PRI 2.0 (PCI)
+ 1A20 82840 840 (Carmel) Chipset
+ 1A21 82840 840 (Carmel) Chipset Host to I/O Hub Bridge (Dual CPU)
+ 1A22 82840 840 (Carmel) Chipset Host to I/O Hub Bridge (Quad CPU)
+ 1A23 82840 840 (Carmel) Chipset PCI to AGP Bridge
+ 1A24 82840 840 (Carmel) Chipset PCI Bridge (Hub B)
+ 1A30 82845G[GL/GV/GE/PE] Host-Hub Interface Bridge
+ 1A31 82845/E/MP/MZ Brookdale CPU to AGP Bridge
+ 1A38 5000 5000 Series Chipset DMA Engine
+ 1A48 82597-based 10 Gigabit Adapter
+ 1B48 82597-based 10 Gigabit Adapter
+ 2125 82801AB AC'97 Audio Controller
+ 2410 82801AA 8xx Chipset LPC Interface Bridge
+ 2411 82801AA IDE Controller (UltraATA/66)
+ 2412 82801AA 8xx Chipset USB Controllers
+ 2413 82801AA 8xx Chipset SMBus Controller
+ 2415 Intel 82801DBM IDE Controller (UltraATA/100) Aureal (AD1881 SOUNDMAX) Placa Mãe Asaki P3-141
+ 2416 82801AA 8xx Chipset AC'97 PCI Modem
+ 2418 82801AA 8xx Chipset Hub to PCI Bridge
+ 2420 82801AB 8xx Chipset LPC Interface Bridge
+ 2421 82801AB IDE Controller (UltraATA/33)
+ 2422 82801AB 8xx Chipset USB Controller
+ 2423 82801AB 8xx Chipset SMBus Controller
+ 2425 82801AB 8xx Chipset AC'97 Audio Controller
+ 2426 82801AB 8xx Chipset AC'97 PCI Modem
+ 2428 82801AB 8xx Chipset Hub to PCI Bridge
+ 2431 82810 pci bus
+ 2440 82801BA (ICH2) LPC Interface Controller
+ 2441 82801BA (ICH2) UltraATA/66 EIDE Controller
+ 2442 82801BA/BAM (ICH2/ICH2-M) USB Universal Host Controller
+ 2443 82801BA/BAM (ICH2/ICH2-M) SMBus Controller
+ 2444 82801BA/BAM (ICH2/ICH2-M) USB Universal Host Controller
+ 2445 82801BA/BAM (ICH2/ICH2-M) AC'97 Audio Controller
+ 2446 82801BA/BAM (ICH2/ICH2-M) AC'97 Modem Controller
+ 2448 82801BAM/CAM/DBM (ICH2-M/3-M/4-M) Hub Interface to PCI Bridge
+ 2449 82559ER 82559ER Integrated 10Base-T/100Base-TX Ethernet Controller
+ 244A 82801BAM (ICH2-M) UltraATA/100 IDE Controller
+ 244B 82801BA (ICH2) UltraATA/100 IDE Controller
+ 244C 82801BAM (ICH2-M) LPC Interface Controller
+ 244E 82801 Family (ICH2/3/4/4/5/5/6/7/8/9,63xxESB) Hub Interface to PCI Bridge
+ 2450 82801E PCI to ISA Bridge (LPC Bridge)
+ 2452 82801E USB Controller
+ 2453 82801E SMBus Controller
+ 2459 82562 based Fast Ethernet Connection
+ 245B 82801E EIDE Controller
+ 245D 82562 based Fast Ethernet Connection
+ 245E 82801E Hub Interface to PCI Bridge
+ 2480 82801CA/CAM (ICH3-S/ICH3-M) LPC Interface
+ 2481 82801CA (ICH3-S/ICH3-M) UltraATA/66 IDE Controller
+ 2482 82801CA/CAM (ICH3-S/ICH3-M) USB Controller #1
+ 2483 82801CA/CAM (ICH3-S/ICH3-M) SMBus Controller
+ 2484 82801CA/CAM (ICH3-S/ICH3-M) USB Controller #2
+ 2485 82801CA/CAM (ICH3-S/ICH3-M) AC'97 Audio Controller
+ 2486 82801CA/CAM (ICH3-S/ICH3-M) AC'97 Modem Controller
+ 2487 82801CA/CAM USB Controller #3 (ICH3-S/ICH3-M)
+ 248A 82801CAM (ICH3-M) UltraATA/100 EIDE Controller
+ 248B 82801CA (ICH3) UltraATA/100 EIDE Controller
+ 248C 82801CAM LPC Interface or ISA bridge: see Notes
+ 248D 82801(??) USB 2.0 Enhanced Host Controller w/HCReset Disabled
+ 24C0 82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge
+ 24C1 82801DBL (ICH4-L) IDE Controller
+ 24C2 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1
+ 24C3 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller
+ 24C4 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2
+ 24C5 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller
+ 24C6 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller
+ 24C7 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3
+ 24CA 82801DBM (ICH4-M) UltraATA/100 EIDE Controller
+ 24CB 82801DB/DBL (ICH4/ICH4-L) UltraATA/100 EIDE Controller
+ 24CC 82801DBM (ICH4-M) LPC Interface Bridge
+ 24CD 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB 2.0 EHCI Controller
+ 24D0 82801EB/ER (ICH5/ICH5R) LPC Interface Bridge
+ 24D1 82801EB (ICH5) SATA Controller
+ 24D2 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1
+ 24D3 82801EB/ER (ICH5/ICH5R) SMBus Controller
+ 24D4 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2
+ 24D5 815B104D multimedia audio device (codec AC97) SoundMAX or VIA
+ 24D6 82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller
+ 24D7 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3
+ 24DB 82801EB/ER (ICH5/ICH5R) EIDE Controller
+ 24DC 82801EB LPC Interface Controller
+ 24DD 82801EB/ER (ICH5/ICH5R) USB 2.0 EHCI Controller
+ 24DE 82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4
+ 24DF 82801ER (ICH5R) SATA Controller
+ 2500 82820 Host-Hub Interface Bridge / DRAM Ctrlr
+ 2501 82820 820 (Camino) Chipset Host Bridge (MCH) (UP Only)
+ 2502 82820
+ 2503 82820
+ 2504 82820
+ 250B 82820 820 (Camino) Chipset CPU Host Bridge (MCH) (RDRAM Only)
+ 250F 82820 820 (Camino) Chipset PCI to AGP Bridge
+ 2520 82805AA Memory Translator Hub (MTH)
+ 2521 82804AA Memory Repeater Hub for SDRAM (MRH-S)
+ 2530 82850/E Host-Hub Interface Bridge(A2 step)
+ 2531 82860 (860) CPU to I/O Hub Bridge (Interface A)
+ 2532 82850/850E/860 AGP Bridge
+ 2533 82860 (860) PCI Bridge (Hub Interface B)
+ 2534 82860 (860) PCI Bridge (Hub Interface C)
+ 2535 82860 (860) PCI Bridge
+ 2536 82860 (860) PCI Bridge
+ 2537 82850/82860 (850/860) ??? Controller
+ 2539 82860 (Quad Processor mode)
+ 2540 E7500 System Controller (MCH, Hub Interface A)
+ 2541 E7500 System Controller (MCH, Hub Interface A) Error Reporter
+ 2543 E7500/E7501 HI_B Virtual PCI-to-PCI Bridge
+ 2544 E7500/E7501 HI_B PCI-to-PCI Bridge Error Reporting
+ 2545 E7500/E7501 HI_C Virtual PCI-to-PCI Bridge
+ 2546 E7500/E7501 HI_C PCI-to-PCI Bridge Error Reporting
+ 2547 E7500/E7501 HI_D Virtual PCI-to-PCI Bridge
+ 2548 E7500/E7501 HI_D PCI-to-PCI Bridge Error Reporting
+ 254C E7501 Host Controller
+ 2550 E7505 Host Controller
+ 2551 E7205/E7505 Host RAS Controller
+ 2552 E7205/E7505 PCI-to-AGP Bridge
+ 2553 E7505 Hub Interface_B PCI-to-PCI Bridge
+ 2554 E7505 Hub Interface_B PCI to PCI Bridge Error Reporing
+ 255D E7205 Host Controller
+ 2560 82845G/GL/GV/GE/PE DRAM Controller / Host-Hub I/F Bridge
+ 2561 82845G/GL/GV/GE/PE Brookdale Host to AGP Bridge
+ 2562 82845G/GL/GV/GE/PE Integrated Graphics Device
+ 2570 82865G/PE/P, 82848P DRAM Controller / Host-Hub Interface
+ 2571 82865G/PE/P, 82848P PCI-to-AGP Bridge
+ 2572 82865G Integrated Graphics Device
+ 2573 82865G/PE/P, 82848P PCI-to-CSA Bridge
+ 2576 82865G/PE/P, 82848P Overflow Configuration
+ 2578 82875P/E7210 DRAM Controller / Host-Hub Interface
+ 2579 82875P PCI-to-AGP Bridge
+ 257B 82875P/E7210 PCI to CSA Bridge
+ 257E 82875P,E7210 PCU to I/O Memory Controller (Overflow Configuration)
+ 2580 82915G/GV/GL/P/PL/GL/910GE/GL Grantsdale Host Bridge/DRAM Controller
+ 2581 82915G/GV/GL/P/PL/GL/910GE/GL Grantsdale Host-PCIe Graphics Bridge
+ 2582 82915G/GV/GL, 82910GL Integrated Graphics Device
+ 2584 82925X/XE Host Bridge / DRAM Controller
+ 2585 82925X/XE Host-PCIe Graphics Bridge
+ 2588 E7221 Host Bridge/DRAM Controller
+ 2589 E7220/E7221 PCIe Root Port
+ 258A E7221 Integrated Graphics Controller
+ 2590 915GM Mobile Intel(R) 915GM/PM/GMS/910GML Express Processor to DRAM Controller
+ 2591 82915PM/GM PCIe Graphics Port
+ 2592 82915GM/GMS, 82910GML Integrated Graphics Device
+ 25A1 6300ESB LPC Inteface Controller
+ 25A2 6300ESB IDE Controller
+ 25A3 6300ESB Serial ATA Controller
+ 25A4 6300ESB SMBus Controller
+ 25A6 6300ESB AC'97 Audio Controller
+ 25A7 6300ESB AC'97 Modem Controller
+ 25A9 6300ESB USB 1.1 UHCI Controller #1
+ 25AA 6300ESB USB 1.1 UHCI Controller #2
+ 25AB 6300ESB Watchdog Timer
+ 25AC 6300ESB I/O Advanced Programmable Interrupt Controller
+ 25AD 6300ESB USB 2.0 EHCI Controller
+ 25AE 6300ESB Hub Interface to PCI-X Bridge
+ 25B0 6300ESB Serial ATA Controller (RAID mode)
+ 25C0 5000X Chipset Memory Controller Hub
+ 25D0 5000Z Chipset Memory Controller Hub
+ 25D4 5000V Chipset Memory Controller Hub
+ 25D8 5000P Chipset Memory Controller Hub
+ 25E2 5000 Series Chipset PCIe x4 Port 2
+ 25E3 5000 Series Chipset PCIe x4 Port 3
+ 25E4 5000 Series Chipset PCIe x4 Port 4
+ 25E5 5000 Series Chipset PCIe x4 Port 5
+ 25E6 5000 Series Chipset PCIe x4 Port 6
+ 25E7 5000 Series Chipset PCIe x4 Port 7
+ 25E8 5000 Series Chipset AMB Memory Mapped Registers
+ 25F0 5000 Series Chipset Error Reporting Registers
+ 25F1 5000 Series Chipset Reserved Registers
+ 25F3 5000 Series Chipset Reserved Registers
+ 25F5 5000 Series Chipset FBD Registers
+ 25F6 5000 Series Chipset FBD Registers
+ 25F7 5000 Series Chipset PCIe x8 Port 2-3
+ 25F8 5000 Series Chipset PCIe x8 Port 4-5
+ 25F9 5000 Series Chipset PCIe x8 Port 6-7
+ 25FA 5000X Chipset PCIe x16 Port 4-7
+ 2600 E8500/E8501 Hub Interface 1.5
+ 2601 E8500/E8501 PCIe x4 Port D
+ 2602 E8500/E8501 PCIe x4 Port C0
+ 2603 E8500/E8501 PCIe x4 Port C1
+ 2604 E8500/E8501 PCIe x4 Port B0
+ 2605 E8500/E8501 PCIe x4 Port B1
+ 2606 E8500/E8501 PCIe x4 Port A0
+ 2607 E8500/E8501 PCIe x4 Port A1
+ 2608 E8500/E8501 PCIe x8 Port C
+ 2609 E8500/E8501 PCIe x8 Port B
+ 260A E8500/E8501 PCIe x8 Port A
+ 260C E8500/E8501 IMI Registers
+ 2610 E8500/E8501 Front Side Bus, Boot and Interrupt Registers
+ 2611 E8500/E8501 Address Mapping Registers
+ 2612 E8500/E8501 RAS Registers
+ 2613 E8500/E8501 Miscellaneous Registers
+ 2614 E8500/E8501 Miscellaneous Registers
+ 2615 E8500/E8501 Miscellaneous Registers
+ 2617 E8500/E8501 Debug Registers
+ 2618 E8500/E8501 Debug Registers
+ 2619 E8500/E8501 Debug Registers
+ 261A E8500/E8501 Debug Registers
+ 261B E8500/E8501 Debug Registers
+ 261C E8500/E8501 Debug Registers
+ 261D E8500/E8501 Debug Registers
+ 261E E8500/E8501 Debug Registers
+ 2620 E8500/E8501 XMB A/B/C/D Identification Registers
+ 2621 E8500/E8501 XMB A/B/C/D Miscellaneous Registers
+ 2622 E8500/E8501 XMB A/B/C/D Memory Interleaving Registers
+ 2623 E8500/E8501 XMB A/B/C/D DDR Initialization and Calibration Registers
+ 2624 E8500/E8501 XMB A/B/C/D Reserved
+ 2625 E8500/E8501 XMB A/B/C/D Reserved
+ 2626 E8500/E8501 XMB A/B/C/D Reserved
+ 2627 E8500/E8501 XMB A/B/C/D Reserved
+ 2640 82801FB/FR (ICH6/ICH6R) LPC Interface Bridge
+ 2641 82801FBM LPC Interface Bridge (ICH6-M)
+ 2642 82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge
+ 2651 82801FB (ICH6) SATA Controller
+ 2652 82801FR/FRW (ICH6R/ICH6RW) SATA Controller
+ 2653 82801FBM (ICH6M) SATA Controller
+ 2658 82801FB/FR/FW/FRW USB UHCI Controller #1
+ 2659 82801FB/FR/FW/FRW USB UHCI Controller #2
+ 265A 82801FB/FR/FW/FRW USB UHCI Controller #3
+ 265B 82801FB/FR/FW/FRW USB UHCI Controller #4
+ 265C 82801FB/FR/FW/FRW USB 2.0 EHCI Controller
+ 2660 82801FB/FR/FW/FRW PCI Express Port 1
+ 2662 82801FB/FR/FW/FRW PCI Express Port 2
+ 2664 82801FB (ICH6) PCIe Root Port 3
+ 2666 82801FB/FR/FW/FRW PCI Express Port 4
+ 2668 11583659 Realtek High Definition Audio Controllers
+ 266A 82801FB (ICH6) SMBus Controller
+ 266C 82801FB/FR/FW/FRW LAN Controller
+ 266D Intel 82801DB Realtek ALC655 @ Intel 82801EB ICH5-M - AC'97 Audio Controller [B-1] PCI
+ 266E Intel Corporation 82830M/MG SDRAM Controller / Ho AC '97 Audio Controller/ Sigmatel (SoundMAX Integrated Digital Audio)
+ 266F 82801FB/FBM Ultra ATA Storage Controllers - 266F
+ 2670 631xESB/632xESB/3100 LPC Interface Controller
+ 2680 631xESB/632xESB/3100 Serial ATA Storage Controller
+ 2681 62089A2 LSI LOGIC, 62089A2, LSISAS1068 B0, T 0620, WE 119200.1
+ 2682 Enterprise Southbridge SATA cc=RAID
+ 2683 Enterprise Southbridge SATA cc=RAID
+ 2688 631xESB/632xESB/3100 Chipset USB Universal Host Controller #1
+ 2689 631xESB/632xESB/3100 Chipset USB Universal Host Controller #2
+ 268A 631xESB/632xESB/3100 Chipset USB Universal Host Controller #3
+ 268B 631xESB/632xESB/3100 Chipset USB Universal Host Controller #4
+ 268C 631xESB/632xESB/3100 Chipset USB2 Enhanced Host Controller
+ 2690 631xESB/632xESB/3100 PCIe Root Port 1
+ 2692 631xESB/632xESB/3100 PCIe Root Port 2
+ 2694 631xESB/632xESB/3100 PCIe Root Port 3
+ 2696 631xESB/632xESB/3100 PCIe Root Port 4
+ 2698 Enterprise Southbridge AC'97 Audio
+ 2699 Enterprise Southbridge AC'97 Modem
+ 269A Enterprise Southbridge High Definition Audio
+ 269B 631xESB/632xESB/3100 SMBus Controller
+ 269E 631xESB/632xESB/3100 Ultra ATA Storage Controller
+ 2770 82945G/GZ/P/PL Host Bridge/DRAM Controller
+ 2771 82945G/GZ/P/PL Host to PCI Express Bridge
+ 2772 82945G Integrated Graphics Controller
+ 2774 82955X Memory Controller Hub
+ 2775 82955X PCIe Root Port
+ 2776 82945G Integrated Graphics Controller
+ 2778 E7230/3000/3010 Processor to I/O Controller
+ 2779 E7230/3000/3010 PCIe Root Port
+ 277A 82975X PCIe Root Port
+ 277C 82975X Intel 975X Express Chipset
+ 277D 82975X PCIe Root Port
+ 2780 82915G/GV/GL, 82910GL Integrated Graphics Device (Secondary) (??)
+ 2782 82915G Graphics device: 82915G/GV/910GL Express Chipset Family
+ 2790 82915GM/GMS, 82910GML Integrated Graphics Device (Secondary) (??)
+ 2792 Mobile 82915GLx/x/x Mobile Intel(R) 915GM/GMS/, 910GML Express Chipset Family
+ 27A0 955XM/945GM/PM/GMS/940GML Express Processor to DRAM Controller
+ 27A1 955XM/945GM/PM/GMS/940GML Express PCIe Root Port
+ 27A2 Mobile 945GM/GU Express Integrated Graphics Controller
+ 27A3 Intel Hardware Monitoring (Found on Apple Mac Family Computers)
+ 27A6 Mobile 945GM/GU Express Integrated Graphics Controller
+ 27B0 82801GH (ICH7DH) LPC Interface Controller
+ 27B1 82801GBM (ICH7) LPC Interface Controller
+ 27B8 945GL Intel 82801GB/GR (ICH7 Family) LPC Interface Controller - 27B8
+ 27B9 82801GBM (ICH7-M) LPC Interface Controller
+ 27BD 82801GHM (ICH7-M DH) LPC Interface Controller
+ 27C0 82801GB/GR/GH (ICH7 Family) Serial ATA Storage Controller
+ 27C1 82801GB I/O Controller Hub SATA cc=AHCI
+ 27C3 Intel 945PL Intel MegaRAID Storage technology
+ 27C4 82801GBM/GHM (ICH7-M Family) Serial ATA Storage Controller
+ 27C5 82801GB Mobile I/O Controller Hub SATA cc=AHCI
+ 27C6 82801G (ICH7 Family) Serial ATA Storage Controller (RAID)
+ 27C8 82801G (ICH7 Family) USB Universal Host Controller
+ 27C9 82801G (ICH7 Family) USB Universal Host Controller
+ 27CA 82801G (ICH7 Family) USB Universal Host Controller
+ 27CB 82801G (ICH7 Family) USB Universal Host Controller
+ 27CC 82801G (ICH7 Family) USB 2.0 Enhanced Host Controller
+ 27D0 82801G (ICH7 Family) PCIe Root Port
+ 27D2 82801G (ICH7 Family) PCIe Root Port
+ 27D4 82801G (ICH7 Family) PCIe Root Port
+ 27D6 82801G (ICH7 Family) PCIe Root Port
+ 27D8 82801G (ICH7 Family) High Definition Audio
+ 27DA 82801G (ICH7 Family) SMBus Controller
+ 27DC Intel PRO/100 Intel(R) PRO/100 VE Network Connection
+ 27DD 82801GB I/O Controller Hub AC'97 Modem
+ 27DE 82801GB I/O Controller Hub AC'97 Audio
+ 27DF 82801G (ICH7 Family) Ultra ATA Storage Controller
+ 27E0 82801GR/GH/GHM (ICH7 Family) PCIe Root Port
+ 27E2 82801GR/GH/GHM (ICH7 Family) PCIe Root Port
+ 2810 82801HB/HR (ICH8/R) LPC Interface Controller
+ 2811 ICH8M (ICH8 Family) LPC Interface Controller
+ 2812 82801HH (ICH8DH) LPC Interface Controller
+ 2814 82801HO (ICH8DO) LPC Interface Controller
+ 2815 ICH8M-E (ICH8 Family) LPC Interface Controller
+ 2820 ICH8 4 port Serial ATA Storage Controller ?
+ 2821 ICH8R (ICH8 Family) SATA AHCI Controller
+ 2822 ICH8R/ICH9R (ICH8/9 Family) SATA RAID Controller
+ 2824 82801HR/HO/HH (ICH8R/DO/DH) SATA AHCI Controller
+ 2825 ? ICH8 2 port Serial ATA Storage Controller
+ 2828 ICH8M (ICH8 Family) 3 port SATA Controller
+ 2829 82801 Intel(R) 82801HEM/HBM SATA AHCI Controller
+ 282A Mobile SATA RAID Controller
+ 2830 82801H (ICH8 Family) USB UHCI #1
+ 2831 82801H (ICH8 Family) USB UHCI #2
+ 2832 82801H (ICH8 Family) USB UHCI #3
+ 2834 82801H (ICH8 Family) USB UHCI #4
+ 2835 82801H (ICH8 Family) USB UHCI #5
+ 2836 82801H (ICH8 Family) USB2 EHCI #1
+ 283A 81EC1043 (?) ICH8 Enhanced USB2 Enhanced Host Controller
+ 283E 82801H (ICH8 Family) SMBus Controller
+ 283F 82801H (ICH8 Family) PCIe Port 1
+ 2841 82801H (ICH8 Family) PCIe Port 2
+ 2843 82801H (ICH8 Family) PCIe Port 3
+ 2845 82801H (ICH8 Family) PCIe Port 4
+ 2847 82801H (ICH8 Family) PCIe Port 5
+ 2849 82801H (ICH8 Family) PCIe Port 6
+ 284B 82801H &SUBSYS_81EC1043&REV_02\3&11583659&0&D8
+ 284F 82801H (ICH8 Family) Thermal Reporting Device
+ 2850 82801H (ICH8 Family) Ultra ATA Storage Controllers
+ 28B4 Management Engine Interface
+ 28C4 Management Engine Interface
+ 28D4 Management Engine Interface
+ 28E4 Management Engine Interface
+ 28F4 Management Engine Interface
+ 2910 82801IB/IR/IH (ICH9 Family) LPC Interface Controller
+ 2911 82801IB/IR/IH (ICH9 Family) Mobile LPC Interface Controller
+ 2912 82801IH (ICH9DH) LPC Interface Controller
+ 2913 82801IB/IR/IH (ICH9 Family) MDH LPC Interface Controller
+ 2914 82801IB/IR/IH (ICH9 Family) DO LPC Interface Controller
+ 2915 82801IB/IR/IH (ICH9 Family) MDO LPC Interface Controller
+ 2916 82801IR (ICH9R) LPC Interface Controller
+ 2918 82801IB (ICH9) LPC Interface Controller
+ 2920 82801IB/IR/IH (ICH9 Family) 4 port Serial ATA Storage Controller 1
+ 2921 82801IB/IR/IH (ICH9 Family) 2 port Serial ATA Storage Controller 1
+ 2922 82801IB/IR/IH (ICH9 Family) 6 port SATA AHCI Controller
+ 2923 82801IB/IR/IH (ICH9 Family) 4 port SATA AHCI Controller
+ 2925 82801IB/IR/IH (ICH9 Family) SATA RAID Controller
+ 2926 82801IB/IR/IH (ICH9 Family) 2 port Serial ATA Storage Controller 2
+ 2928 82801IB/IR/IH (ICH9 Family) Mobile 2 port Serial ATA Storage Controller 1
+ 2929 82801IB/IR/IH (ICH9 Family) Mobile SATA AHCI Controller
+ 292C 82801IB/IR/IH (ICH9 Family) Mobile SATA RAID Controller
+ 292D 82801IB/IR/IH (ICH9 Family) Mobile 2 port Serial ATA Storage Controller 2
+ 292E 82801IB/IR/IH (ICH9 Family) Mobile 1 port Serial ATA Storage Controller 2
+ 2930 82801IB/IR/IH (ICH9 Family) SMBus Controller
+ 2932 82801IB/IR/IH (ICH9 Family) Thermal Subsystem
+ 2934 82801IB/IR/IH (ICH9 Family) USB Universal Host Controller
+ 2935 82801IB/IR/IH (ICH9 Family) USB Universal Host Controller
+ 2936 82801IB/IR/IH (ICH9 Family) USB Universal Host Controller
+ 2937 82801IB/IR/IH (ICH9 Family) USB Universal Host Controller
+ 2938 82801IB/IR/IH (ICH9 Family) USB Universal Host Controller
+ 2939 82801IB/IR/IH (ICH9 Family) USB Universal Host Controller
+ 293A 82801IB/IR/IH (ICH9 Family) USB2 Enhanced Host Controller
+ 293B 82801IB/IR/IH (ICH9 Family) USB2 Enhanced Host Controller
+ 293C 82801IB/IR/IH (ICH9 Family) USB2 Enhanced Host Controller
+ 293D 82801IB/IR/IH (ICH9 Family) USB2 Enhanced Host Controller
+ 293E 82801IB/IR/IH (ICH9 Family) HD Audio Controller
+ 2940 82801IB/IR/IH (ICH9 Family) PCIe Root Port 1
+ 2941 82801IB/IR/IH (ICH9 Family) PCIe Root Port 1
+ 2942 82801IB/IR/IH (ICH9 Family) PCIe Root Port 2
+ 2943 82801IB/IR/IH (ICH9 Family) PCIe Root Port 2
+ 2944 82801IB/IR/IH (ICH9 Family) PCIe Root Port 3
+ 2945 82801IB/IR/IH (ICH9 Family) PCIe Root Port 3
+ 2946 82801IB/IR/IH (ICH9 Family) PCIe Root Port 4
+ 2947 82801IB/IR/IH (ICH9 Family) PCIe Root Port 4
+ 2948 82801IB/IR/IH (ICH9 Family) PCIe Root Port 5
+ 2949 82801IB/IR/IH (ICH9 Family) PCIe Root Port 5
+ 294A 82801IB/IR/IH (ICH9 Family) PCIe Root Port 6
+ 294B 82801IB/IR/IH (ICH9 Family) PCIe Root Port 6
+ 294C 82801IB/IR/IH (ICH9 Family) Gigabit Ethernet Controller
+ 2970 946GZ/PL/GL Processor to I/O Controller
+ 2971 946GZ/PL/GL PCIe Root Port
+ 2972 946GZ/GL Integrated Graphics Controller
+ 2973 946GZ/GL Integrated Graphics Controller
+ 2974 946GZ/GL HECI Controller
+ 2975 946GZ/GL HECI Controller
+ 2976 946GZ/GL PT IDER Controller
+ 2977 946GZ/GL KT Controller
+ 2980 Processor to I/O Controller
+ 2981 PCIe Root Port
+ 2982 G965 Graphics Media Accelerator
+ 2983 G965 Graphics Media Accelerator
+ 2987 Active Management Technology - SOL
+ 2990 Q963/Q965 Memory Controller Hub
+ 2991 Q963/Q965 PCIe Root Port
+ 2992 Q963/Q965 Integrated Graphics Controller
+ 2993 Q963/Q965 Integrated Graphics Controller
+ 2994 0x8086 Intel(R) Management Engine Interface
+ 2995 Q963/Q965 HECI Controller
+ 2996 Q963/Q965 PT IDER Controller
+ 2997 Q965/Q963 Intel PCI Serial Port
+ 29A0 ?(82P965) Intel P965/G965 Processor to I/O Controller
+ 29A1 ?(82Q965, 82G965, 82P965) Intel P965/G965 PCI Express Root Port
+ 29A2 G965 Integrated Graphics Controller
+ 29A3 G965 Integrated Graphics Controller
+ 29A4 P965/G965 HECI Controller
+ 29A5 P965/G965 HECI Controller
+ 29A6 P965/G965 PT IDER Controller
+ 29A7 P965/G965 KT Controller
+ 29B0 (??) DRAM Controller
+ 29B1 (??) PCIe Root Port
+ 29B2 (??) Integrated Graphics Controller
+ 29B3 (??) Integrated Graphics Controller
+ 29B4 (??) HECI Controller
+ 29B5 (??) HECI Controller
+ 29B6 (??) PT IDER Controller
+ 29B7 (??) Serial KT Controller
+ 29C0 (Bearlake) Processor to I/O Controller
+ 29C1 (Bearlake) PCIe Root Port
+ 29C2 (Bearlake) Integrated Graphics Controller
+ 29C3 (Bearlake) Integrated Graphics Controller
+ 29C4 (Bearlake) HECI Controller
+ 29C5 (Bearlake) HECI Controller
+ 29C6 (Bearlake) PT IDER Controller
+ 29C7 (Bearlake) Serial KT Controller
+ 29CF (Bearlake) Virtual HECI Controller
+ 29D0 (Bearlake) Processor to I/O Controller
+ 29D1 (Bearlake) PCIe Root Port
+ 29D2 (Bearlake) Integrated Graphics Controller
+ 29D3 (Bearlake) Integrated Graphics Controller
+ 29D4 (Bearlake) HECI Controller
+ 29D5 (Bearlake) HECI Controller
+ 29D6 (Bearlake) PT IDER Controller
+ 29D7 (Bearlake) Serial KT Controller
+ 29E0 (Bearlake) Processor to I/O Controller
+ 29E1 (Bearlake) PCIe Root Port
+ 29E4 (Bearlake) HECI Controller
+ 29E5 (Bearlake) HECI Controller
+ 29E6 (Bearlake) PT IDER Controller
+ 29E7 (Bearlake) Serial KT Controller
+ 29E9 (Bearlake) Host-Secondary PCIe Bridge
+ 29F0 (Bearlake) Processor to I/O Controller
+ 29F1 (Bearlake) PCIe Root Port 1
+ 29F4 (Bearlake) Server HECI Controller
+ 29F5 (Bearlake) Server HECI Controller
+ 29F6 (Bearlake) Server PT IDER Controller
+ 29F7 (Bearlake) Server Serial KT Controller
+ 29F9 (Bearlake) PCIe Root Port 2
+ 2A00 Mobile PM965/GM965/GL960 Express Processor to DRAM Controller
+ 2A01 Mobile PM965/GM965/GL960 Express PCIe Root Port
+ 2A02 Mobile 965 Express Integrated Graphics Controller
+ 2A03 Mobile 965 Express Integrated Graphics Controller
+ 2A04 Mobile HECI Controller
+ 2A05 Mobile HECI Controller
+ 2A06 Mobile PT IDER Controller
+ 2A07 Mobile KT Controller
+ 3092 SRCU32 I2O 1.5 RAID Controller
+ 3200 31244 PCI-X to Serial ATA Controller
+ 3340 82855PM Processor to I/O Controller
+ 3341 82855PM Processor to AGP Controller
+ 3342 82855PM Power Management
+ 348D 82541EI Gigabit Ethernet Controller
+ 3500 631xESB/632xESB PCIe Upstream Port
+ 3501 6310ESB PCIe Upstream Port
+ 3504 631xESB/632xESB I/OxAPIC Interrupt Controller
+ 3505 6310ESB I/OxAPIC Interrupt Controller
+ 350C 631xESB/632xESB PCIe to PCI-X Bridge
+ 350D 6310ESB PCIe to PCI-X Bridge
+ 3510 631xESB/632xESB PCIe Downstream Port E1
+ 3511 6310ESB PCIe Downstream Port E1
+ 3514 631xESB/632xESB PCIe Downstream Port E2
+ 3515 6310ESB PCIe Downstream Port E2
+ 3518 631xESB/632xESB PCIe Downstream Port E3
+ 3519 6310ESB PCIe Downstream Port E3
+ 3575 82830[MP] Host-Hub I/F Bridge / SDRAM Controller
+ 3576 82830M/MP CPU to AGP Bridge
+ 3577 82830M/MG Integrated Graphics Device
+ 3578 82830[MP] CPU to I/O Bridge
+ 3579 82835 SDRAM Controlller / Host-Hub Interface Bridge
+ 357B 82835 Integrated Graphics Device
+ 3580 82852GM/GME/GMV/PM, 855GM/GME Montara Host-Hub Interface Bridge
+ 3581 82852GME/PM Montara Virtual PCI to AGP Bridge
+ 3582 82852GM/GME/GMV/PM, 855GM/GME Montara Integrated Graphics Device
+ 3584 82852GM/GME/GMV/PM, 855GM/GME Montara System Memory Controller
+ 3585 82852GM/GME/GMV/PM, 855GM/GME Montara Configuration Process
+ 3590 E7520 Server Memory Controller Hub
+ 3591 E752x Memory Controller Hub Error Reporting Registers
+ 3592 E732x Server Memory Controller Hub
+ 3593 E752x Memory Controller Hub Error Reporting Registers
+ 3594 E752x Memory Controller Hub DMA Controller
+ 3595 E752x Memory Controller Hub PCIe Port A0
+ 3596 E752x Memory Controller Hub PCIe Port A1
+ 3597 E752x Memory Controller Hub PCIe Port B0
+ 3598 E752x Memory Controller Hub PCIe Port B1
+ 3599 E752x Memory Controller Hub PCIe Port C0
+ 359A E752x Memory Controller Hub DMA Controller
+ 359B E752x Memory Controller Hub Extended Configuration Registers
+ 359E E7525 Workstation Memory Controller Hub
+ 35B0 3100 Chipset Memory I/O Controller Hub
+ 35B1 3100 Chipset DRAM Controller Error Reporting Registers
+ 35B5 3100 Chipset Enhanced DMA Controller
+ 35B6 3100 Chipset PCIe Port A
+ 35B7 3100 Chipset PCIe Port A1
+ 35C8 3100 Chipset Extended Configuration Test Overflow Registers
+ 3600 (Caneland) Memory Controller Hub
+ 3604 (Caneland) PCIe Port 1
+ 3605 (Caneland) PCIe Port 2
+ 3606 (Caneland) PCIe Port 3
+ 3607 (Caneland) PCIe Port 4
+ 3608 (Caneland) PCIe Port 5
+ 3609 (Caneland) PCIe Port 6
+ 360A (Caneland) PCIe Port 7
+ 360B PCI\VEN_8086&DEV_2448&SUBSYS_00000000&REV881\3&18d who knows&erka
+ 360C (Caneland) FSB Registers
+ 360D (Caneland) Snoop Filter Registers
+ 360E (Caneland) Debug and Miscellaneous Registers
+ 360F (Caneland) FBD Branch 0 Registers
+ 3610 (Caneland) FBD Branch 1 Registers
+ 4000 Creatix V.90 HaM Modem
+ 4008 (??) Memory Controller Hub
+ 4010 (??) Memory Controller Hub
+ 4021 (??) PCIe Port 1
+ 4022 (??) PCIe Port 2
+ 4023 (??) PCIe Port 3
+ 4024 (??) PCIe Port 4
+ 4025 (??) PCIe Port 5
+ 4026 (??) PCIe Port 6
+ 4027 (??) PCIe Port 7
+ 4028 (??) PCIe Port 8
+ 4029 (??) PCIe Port 9
+ 402D (??) IBIST Registers
+ 402E (??) IBIST Registers
+ 402F (??) DMA/DCA Engine
+ 4030 (??) FSB Registers
+ 4032 (??) I/OxAPIC
+ 4035 (??) FBD Registers
+ 4036 (??) FBD Registers
+ 4220 MPCI3B driverIntel PRO/Wireless 2200BG
+ 4222 10418086 Intel 3945ABG Wireless LAN controller
+ 4223 2915ABG Intel (R) PRO/Wireless 2200BG Network Connection, (R) PRO/Wireless 2915ABG Network Connection
+ 4224 Intel Pro Wireless 2915ABG 802.11a/b/g WLan adapter
+ 4227 PRO/Wireless 3945ABG Network Connection
+ 4228 PRO/Wireless 3965ABG Network Connection
+ 4229 Intel 4965AGN Intel® Wireless WiFi Link 4965AGN(supporting 802.11a/b/g/Draft-N)
+ 422D Intel 4965AGN Intel® Wireless WiFi Link 4965AGN
+ 4230 Intel 4965AGN Intel® Wireless WiFi Link 4965AGN
+ 4233 Intel 4965AGN Intel® Wireless WiFi Link 4965AGN
+ 5001 PRO/DSL 2100 Modem - PPP
+ 5005 PRO/DSL 2200 Modem - PPPoA
+ 5200 EtherExpress PRO/100 Server PCI to PCI Bridge
+ 5201 EtherExpress PRO/100 Server Ethernet Adapter
+ 5309 80303 I/O Processor Address Translation Unit
+ 530D 80312 I/O Companion Unit Address Translation
+ 5378 GW80314 I/O Companion Chip (with SRAM)
+ 5379 GW80314 I/O Companion Chip (without SRAM)
+ 537C 31154 133MHz PCI-X to PCI-X Bridge
+ 65E0 (??) Memory Controller Hub
+ 65E2 (??) PCIe x4 Port 2
+ 65E3 (??) PCIe x4 Port 3
+ 65E4 (??) PCIe x4 Port 4
+ 65E5 (??) PCIe x4 Port 5
+ 65E6 (??) PCIe x4 Port 6
+ 65E7 (??) PCIe x4 Port 7
+ 65F0 (??) FSB Registers
+ 65F1 (??) Reserved Registers
+ 65F3 (??) Reserved Registers
+ 65F5 (??) DDR Channel 0 Registers
+ 65F6 (??) DDR Channel 1 Registers
+ 65F7 (??) PCIe x8 Port 2-3
+ 65F8 (??) PCIe x8 Port 4-5
+ 65F9 (??) PCIe x8 Port 6-7
+ 65FA (??) PCIe x16 Port 4-7
+ 65FF (??) DMA Engine
+ 6960 EHCI 960 emulator
+ 7000 82371SB PIIX3 PCI-to-ISA Bridge (Triton II)
+ 7010 82371SB PIIX3 IDE Interface (Triton II)
+ 7020 82371SB PIIX3 USB Host Controller (Triton II)
+ 7030 82437VX 430VX System Controller
+ 7050 Intercast Video Capture Card
+ 7051 PB 642365-003 Intel Business Video Conferencing Card
+ 7100 82439TX System Controller (MTXC), part of 430TX chipset
+ 7110 82371AB/EB/MB PIIX4/4E/4M ISA Bridge
+ 7111 82371AB/EB/MB PIIX4/4E/4M IDE Controller
+ 7112 82371AB/EB/MB PIIX4/4E/4M USB Interface
+ 7113 82371AB/EB/MB PIIX4/4E/4M Power Management Controller
+ 7120 82810 Host-Hub Interface Bridge / DRAM Ctrlr
+ 7121 82810 810 Chipset Graphics Controller
+ 7122 82810-DC100 Host-Hub Interface Bridge / DRAM Ctrlr
+ 7123 82810-DC100 Intel® 82810 Graphics Controller
+ 7124 82810E 810e Host-Hub Interface and Memory Controller
+ 7125 82810E Intel Direct AGP 810 Chipset
+ 7126 82810 810 Chipset Host Bridge and Memory Controller Hub
+ 7127 82810E 810 Chipset Graphics Controller (at 133MHz)
+ 7128 82810-M DC-100 810 Chipset Host Bridge and Graphics Controller
+ 712A 82810-M DC-133 810 Chipset Host Bridge and Graphics Controller
+ 7180 Intel 82801(r) AAA AC'97 Audio Device Host/PCI bridge in 440LX/EX AGP chipset
+ 7181 82443 ex/lx AGP device in 440LX/EX AGP chipset
+ 7182 440LX/EX intel
+ 7190 82443BX/ZX 440BX/ZX CPU to PCI Bridge (AGP Implemented)
+ 7191 82443BX/ZX 440BX/ZX AGPset PCI-to-PCI bridge
+ 7192 82443BX/ZX 440BX/ZX CPU to PCI Bridge (AGP Not Implemented)
+ 7194 82440MX CPU to I/O Controller
+ 7195 82440MX AC'97 Audio Controller
+ 7196 82440 - 443MX AC97 Modem Controller (Winmodem)
+ 7198 82443MX PCI to ISA Bridge
+ 7199 82443MX EIDE Controller
+ 719A 82443MX USB Universal Host Controller
+ 719B 82443MX Power Management Controller
+ 71A0 82443GX 440GX CPU to PCI Bridge (AGP Implemented)
+ 71A1 82443GX 440GX PCI to AGP Bridge
+ 71A2 82443GX 440GX CPU to PCI Bridge (AGP Not Implemented)
+ 7221 82810 graphics device
+ 7600 82472FB/82468GX PCI to ISA/LPC Bridge
+ 7601 82472FB/82468GX PCI EIDE Controller
+ 7602 82472FB/82468GX USB Universal Host Controller
+ 7603 82472FB/82468GX System Management Bus Controller
+ 7605 82372FB IEEE1394 OpenHCI Host Controller
+ 7800 Intel740 AGP Graphics Accelerator
+ 8002 Trusted Execution Technology
+ 8086 sldajfoiasjlk lsdurjlk
+ 84C4 82454KX/GX 450KX/GX Orion System Controller
+ 84C5 82453KX/GX 450KX/GX Memory Controller (Orion)
+ 84CA 82451NX 450NX PCIset Memory & I/O Controller
+ 84CB 82454NX/82467GX 450NX PCI Expander Bridge
+ 84E0 82460GX 460GX System Address Controller
+ 84E1 82460GX 460GX System Data Controller
+ 84E2 82460GX 460GX AGP Bridge (GXB Function 2)
+ 84E3 82460GX 460GX Memory Address Controller
+ 84E4 82460GX 460GX Memory Data Controller
+ 84E6 82466GX 460GX Wide and fast PCI eXpander Bridge
+ 84EA 82460GX 460GX AGP Bridge (GXB Function 1)
+ 8500 IXP4XX - Intel Network Processor family. IXP420, IXP421, IXP422, IXP425 and IXC1100
+ 85A1 6300ESB LPC Bridge
+ 85A2 6300ESB IDE Controller
+ 85A3 6300ESB Serial ATA Controller
+ 85A4 6300ESB SMBus Controller
+ 85A6 6300ESB AC'97 Audio Controller
+ 85A7 6300ESB AC'97 Modem Controller
+ 85A9 6300ESB USB 1.1 UHCI Controller #1
+ 85AA 6300ESB USB 1.1 UHCI Controller #2
+ 9000 IXP2000 Family Network Processor
+ 9001 IXP2400 Network Processor
+ 9002 IXP2300 Network Processor
+ 9004 IXP2800 Network Processor
+ 9620 I2O RAID PCI to PCI Bridge
+ 9621 SRCU21 I2O 1.5 RAID Controller (F/W<6.0)
+ 9622 SRCUxx I2O 1.5 RAID Controller (F/W<6.0)
+ 9641 SRCU31 I2O 1.5 RAID Controller (F/W<6.0)
+ 96A1 SRCU31L I2O 1.5 RAID Controller (F/W<6.0)
+ 9874 AC97 AUDIO CONTROLLER
+ 9876 i845 intel brokdale
+ A01F PRO/10GbE LR Server Adapter retail verson
+ A11F PRO/10GbE LR Server Adapter OEM version
+ B152 S21152BB PCI to PCI Bridge
+ B154 S21152BA,S21154AE/BE PCI to PCI Bridge
+ B555 21555 Non-Transparent PCI-to-PCI Bridge
+ FFFF 82450KX/GX Orion Cache/DRAM Controller (Buggy ID)
+8384 Sigmatel Inc (??)
+8401 TRENDware International Inc
+8800 Trigem Computer
+ 2008 Video assistent component
+8866 T-Square Design Inc.
+ 1689 T2-MP3-001 MP3 player/FM radio/voice recorder 256 Mo flash
+8888 Silicon Magic Corp
+8912 TRX
+8E0E Computone Corporation
+8E2E KTI
+ 3000 ET32/Px Ethernet Adapter
+9004 Adaptec Inc
+ 0078 aic-7880p AHA-2940UW/CN
+ 1078 AIC-7810C RAID Coprocessor
+ 1160 AIC-1160 Family Fibre Channel Adapter
+ 2178 AIC-7821 SCSI Host Adapter
+ 3860 AHA-2930CU PCI SCSI Controller
+ 3B78 AHA-4944W/4944UW QuadChannel Fast-Wide/Ultra-Wide Diff. SCSI Ctrlr
+ 5075 AIC-755x SCSI Controller
+ 5078 AVA-2902I/E,AVA-2904,AVA-2910 (AIC-7850P) Fast/Wide SCSI II
+ 5175 AIC-755x SCSI Controller
+ 5178 AIC-7850 Fast SCSI Controller
+ 5275 AIC-755x SCSI Controller
+ 5278 AIC-7850 Fast SCSI Controller
+ 5375 AIC-755x SCSI Controller
+ 5378 AIC-7850 Fast SCSI Controller
+ 5475 AIC-755x SCSI Controller
+ 5478 AIC-7850 Fast SCSI Controller
+ 5575 AVA-2930 SCSI Host Adapter
+ 5578 AIC-7855 Fast SCSI Controller
+ 5647 ANA-7711 TCP Offload Engine
+ 5675 AIC-755x SCSI Controller
+ 5678 AIC-7856 Fast SCSI Controller
+ 5775 AIC-755x SCSI Controller
+ 5778 AIC-7850 Fast SCSI Controller
+ 5800 AIC-5800 IEEE-1394 FireWire Controller
+ 5900 ANA-5910/5930/5940 ATM155 & 25 LAN Adapter
+ 5905 ANA-5910A/5930A/5940A ATM Adapter
+ 6038 AHA-2930C Ultra SCSI Adpater (VAR)
+ 6075 AIC-7560? CardBus Ultra SCSI Controller
+ 6078 AIC-7860 PCI SCSI Controller
+ 6178 AIC-7861 AHA-2940AU PCI SCSI Controller
+ 6278 AIC-7860 SCSI Controller
+ 6378 AIC-7860 SCSI Controller
+ 6478 AIC-786x SCSI Controller
+ 6578 AIC-786x SCSI Controller
+ 6678 AIC-786x SCSI Controller
+ 6778 AIC-786x SCSI Controller
+ 6915 ANA620xx/ANA69011A Fast Ethernet
+ 7078 AIC-7870 Fast and Wide SCSI Ctrlr
+ 7178 AHA-2940/2940W Fast/Fast-Wide SCSI Ctrlr
+ 7278 AHA-3940/3940W Multichannel Fast/Fast-Wide SCSI Ctrlr
+ 7378 AHA-3985 4 Channel RAID SCSI Host Adapter
+ 7478 AHA-2944/W SCSI Host Adapter
+ 7578 AHA-3944/3944W Multichannel Fast/Fast-Wide Diff. SCSI Ctrlr
+ 7678 AHA-4944W/4944UW QuadChannel Fast-Wide/Ultra-Wide Diff. SCSI Ctrlr
+ 7710 ANA-7711F Network Accelerator Card (NAC) - Optical
+ 7711 ANA-7711C Network Accelerator Card (NAC) - Copper
+ 7778 AIC-787x SCSI Controller
+ 7810 AIC-7810 Memory Controller IC
+ 7815 AIC-7515 RAID + Memory Controller IC
+ 7850 aic-7850 Fast/Wide SCSI-2 Controller
+ 7855 AHA-2930 Single channel SCSI Host Adapter
+ 7860 AIC-7860 based PCI SCSI Controller
+ 7870 AIC-7870 Fast/Wide SCSI-2 Controller
+ 7871 AHA-2940 Fast/Wide SCSI Host Adapter
+ 7872 AHA-3940 Dual-Channel FAST/Wide SCSI Host Adapter
+ 7873 AHA-3985 4 Channel RAID SCSI Host Adapter (AIC-7873)
+ 7874 aha 2944 Differential SCSI
+ 7880 AIC-7880P Ultra/Ultra Wide SCSI Chipset
+ 7890 AIC-7890 SCSI controller
+ 7891 AIC-789x SCSI controller
+ 7892 AIC-789x SCSI controller
+ 7893 AIC-7895C SCSI Controller
+ 7894 AIC-789x SCSI controller
+ 7895 AIC-7895 Ultra-Wide SCSI Ctrlr on AHA-2940 AHA-394x
+ 7896 AIC-789x SCSI controller
+ 7897 AIC-789x SCSI controller
+ 8078 AIC-7880P Ultra/Ultra Wide SCSI Chipset
+ 8178 AHA-2940U/UW/2940D Ultra/Ultra Wide/Dual SCSI Host Adapter
+ 8278 AHA-3940U/UW/UWD Ultra/Ultra Wide/Dual SCSI Host Adapter
+ 8378 AIC-7883U SCSI Controller
+ 8478 ADAPTEC 2940UW CN SCSI Ultra-Wide Diff. SCSI Ctrlr
+ 8578 AHA-3944U/3944UWD Fast-Wide/Ultra-Wide Diff. SCSI Ctrlr
+ 8678 AHA-4944UW QuadChannel Ultra-Wide Diff. SCSI Ctrlr
+ 8778 AHA-2940UW Pro AIC-788x Ultra-Wide SCSI Controller
+ 8878 AHA-2930UW Ultra-Wide SCSI Controller
+ 8B78 ABA-1030 ABA
+ EC78 AHA-4944W/4944UW QuadChannel Fast-Wide/Ultra-Wide Diff. SCSI Ctrlr
+9005 Adaptec Inc
+ 0010 AIC-7890AB scsi controller AHA-2940U2W/U2B,2950U2W Ultra2 SCSI
+ 0011 11111 AHA-2930U2 Ultra2 SCSI Host Adapter
+ 0013 AIC-7890/1 SCSI Host Adapter
+ 001F AHA-2940U2/AHA-2940U2W AIC-7890/1 Ultra2 SCSI Controller
+ 0020 AIC-789x SCSI Controller
+ 002F AIC-789x SCSI Controller
+ 0030 AIC-789x SCSI Controller
+ 003F AIC-789x SCSI Controller
+ 0050 AHA-3940U2x/AHA-3950U2x Ultra2 SCSI Controller
+ 0051 AHA-3950U2x Ultra2 SCSI Controller
+ 0053 AIC-7896 SCSI Controller
+ 005F AIC-7896/7 Ultra2 SCSI Controller
+ 0080 29160/N/LP Ultra160 (AIC-7892A) SCSI Host Adapter
+ 0081 19160 AIC-7892B Ultra160 SCSI Adapter
+ 0082 2915/2930LP PCI SCSI Controller
+ 0083 AIC-7892D Ultra160 SCSI Host Adapter
+ 008F AIC-7892 Ultra160 SCSI Host Adapter
+ 00C0 AHA-39160 (AIC-7899A) Ultra160 SCSI Host Adapter
+ 00C1 AIC-7899B Ultra160 SCSI Host Adapter
+ 00C3 AIC-7899D Ultra160 SCSI Host Adapter
+ 00C5 RAID Subsystem HBA
+ 00CF AIC-7899P Ultra160 SCSI Host Adapter
+ 0241 Serial ATA II RAID 1420SA
+ 0250 ServeRAID Controller
+ 0258 AAC-RAID Adaptec AAR-2410SA SATA 4-Port Raid
+ 0279 ServeRAID 6M
+ 0283 AAC-RAID
+ 0284 AAC-RAID
+ 0285 AAC-RAID RAID Controller
+ 0286 AAC-RAID (Rocket)
+ 0410 AIC-9410W SAS (Razor HBA RAID)
+ 0412 AIC-9410W SAS (Razor HBA non-RAID)
+ 0415 ASC-58300 SAS/SATA Controller
+ 0416 ASC-58300 SAS/SATA Controller
+ 041E AIC-9410W SAS (Razor ASIC non-RAID)
+ 041F AIC-9410W SAS (Razor ASIC RAID)=20
+ 0430 AIC-9405W SAS (Razor-Lite HBA RAID)
+ 0432 AIC-9405W SAS (Razor-Lite HBA non-RAID)
+ 043E AIC-9405W SAS (Razor-Lite ASIC non-RAID)=20
+ 043F AIC-9405W SAS (Razor-Lite ASIC RAID)=20
+ 0500 Obsidian chipset SCSI controller
+ 0503 Scamp chipset SCSI controller
+ 0910 AUA-3100B
+ 091E AUA-3100B
+ 8000 ASC-29320A Ultra320 SCSI Controller
+ 800F AIC-7901 Ultra320 SCSI Controller
+ 8010 ASC-39320 Ultra320 SCSI Controller
+ 8011 ASC-39320D Ultra320 SCSI Controller
+ 8012 ASC-29320 Ultra320 SCSI Controller
+ 8013 ASC-29320B Ultra320 SCSI Controller
+ 8014 ASC-29320LP Ultra320 SCSI Controller
+ 8015 SCSI Card 39320 Ultra320 SCSI Controller
+ 8016 ASC-39320A Ultra320 SCSI Controller
+ 8017 ASC-29320ALP Ultra320 SCSI Controller
+ 801C AIC-????? Ultra320 SCSI Controller
+ 801D AIC-7902B Ultra320 SCSI Controller
+ 801E AIC-7901 Ultra320 SCSI Controller
+ 801F AIC-7902 Ultra320 SCSI Controller
+ 8080 ASC-29320A Ultra320 HostRAID Controller
+ 808F AIC-7901 Ultra320 HostRAID Controller
+ 8090 ASC-39320 HostRAID SCSI Controller
+ 8091 ASC-39320D HostRAID SCSI Controller
+ 8092 ASC-29320 HostRAID SCSI Controller
+ 8093 ASC-29320B HostRAID SCSI Controller
+ 8094 ASC-29320LP HostRAID SCSI Controller
+ 8095 ASC-39320 HostRAID SCSI Controller
+ 8096 ASC-39320A HostRAID SCSI Controller
+ 8097 ASC-29320ALP HostRAID SCSI Controller
+ 809C ASC-39320D HostRAID SCSI Controller
+ 809D AIC-7902B HostRAID SCSI Controller
+ 809E AIC-7901A HostRAID SCSI Controller
+ 809F AIC-7902B HostRAID SCSI Controller
+907F Atronics
+ 2015 IDE-2015PL EIDE Controller
+919A Gigapixel Corp
+9412 Holtek
+ 6565 HT6565 PCI EIDE Controller
+9699 Omni Media Technology Inc.
+9710 MosChip Semiconductors (Was: Netmos Technology)
+ 7780 USB IRDA-port
+ 9250 MCS9250 PCI to PCI Bridge
+ 9705 Nm9705 Parallel Port Adapter
+ 9715 Nm9715 Dual Parallel Port Adapter
+ 9735 Nm9735 Single Parallel / Dual Serial Port Adapter
+ 9745 Nm9745 Dual UART and PCI-ISA Bridge
+ 9755 Nm9755 Parallel Port and PCI-ISA Bridge
+ 9805 Nm9805 Parallel Port Adapter
+ 9815 Nm9715CV Parallel/Serial Port Adapter
+ 9820 Nm9820 Single PCI UART
+ 9825 Nm9825 Single PCI UART
+ 9835 Nm9835 Parallel/Serial Port Adapter
+ 9845 Nm9845 Parallel/Serial Port Adapter
+ 9855 Nm9855 Parallel/Serial Port Adapter
+9877 Pan Asia Superitendence Corp
+9902 StarGen, Inc.
+ 0001 SG2010 PCI-to-PCI Bridge
+ 0002 SG2010 PCI to high speed serial bridge
+ 0003 SG1010 6 Port Serial Switch & PCI to PCI Bridge
+A0A0 Aopen Inc.
+A0F1 Unisys Corporation
+A200 NEC Corp.
+A259 Hewlett Packard
+A25A Hewlett Packard Convex Division
+A25B Hewlett Packard GmbH PL24-MKT
+A304 Sony
+A727 3com Corporation
+ 0013 3CRPAG175 Wireless PC Card
+AA42 Scitex Digital Video
+ 03A3 9400-0931 CharKey
+AAAA Parallels Software International Inc
+ 1112 PCI Tool Device
+ 1131 Parallels Video Driver
+AC1E Digital Receiver Technology Inc
+AC3D Actuality Systems
+AECB Adrienne Electronics Corporation
+B00C IC Book Labs
+ 001C IC80+PCI POST Diagnostics Card
+ 011C IC128 PCI Parallel Port Controller
+ 021C Gunboat x4 Quad PCI Serial Port Controller (Low Speed)
+ 031C Gunboat x4 Pro Quad PCI Serial Port Controller (High Speed)
+ 041C Ironclad x8 Octal PCI Serial Port Controller (Standard Speed)
+ 051C Ironclad x8 Pro Octal PCI Serial Port Controller (High Speed)
+ 061C IC138 PCI Parallel Port Controller
+ 081C Dreadnought x16 Pro 16-port PCI Serial Controller (High Speed)
+ 091C Dreadnought x16 Lite 16-port Serial Controller
+B1B3 Shiva Europe Ltd.
+B54B Contec Co Ltd
+B894 Brown & Sharpe Mfg. Co.
+BDBD Blackmagic Design
+ A106 Blackmagic DeckLink
+ A107 Blackmagic DeckLink
+ A108 Blackmagic DeckLink
+ A109 Blackmagic DeckLink
+ A10B Blackmagic DeckLink
+ A10C Blackmagic DeckLink
+ A10E Blackmagic DeckLink
+ A10F Blackmagic DeckLink
+ A112 Blackmagic DeckLink
+ A113 Blackmagic DeckLink
+ A114 Blackmagic DeckLink
+ A115 Blackmagic DeckLink
+BEEF Mindstream Computing
+C001 TSI Telsys
+C0A9 Micron (Crucial Technology)
+C0DE Motorola
+ 5600 62802
+ C0DE 62802-51 oZ0030
+C0FE Motion Engineering Inc.
+C622 Hudson Soft Co Ltd
+CA50 Varian Australia Pty. Ltd.
+CAFE Chrysalis-ITS
+CCCC Catapult Communications
+CDDD Tyxz Inc
+ 0101 DeepSea 1 High-Speed Stereo Vision Capture Card
+D161 Digium, Inc
+ 0205 Wildcard TE205P
+ 0210 Wildcard TE210P
+ 0405 Wildcard TE405P Quad-Span togglable E1/T1/J1 card 5.0v
+ 0406 Wildcard TE406P Quad-Span togglable E1/T1/J1 echo cancellation card 5.0v
+ 0410 Wildcard TE410P Quad-Span togglable E1/T1/J1 card 3.3v
+ 0411 Wildcard TE411P Quad-Span togglable E1/T1/J1 echo cancellation card 3.3v
+ 2400 Wildcard TDM2400P
+D4D4 Curtiss-Wright Controls Embedded Computing
+ 0601 PCI Mezzanine Card
+D531 I+ME ACTIA GmBH
+D841 Super PCI(??)
+D84D Exsys
+DC93 Dawicontrol
+DEAD Indigita Corporation
+DEAF Middle Digital, Inc
+ 9050 PC Weasel PCI VGA Device
+ 9051 PC Weasel PCI Serial Communication Device
+ 9052 PC Weasel PCI
+E000 Winbond
+ E000 W89C940 Ethernet Adapter
+E159 Tiger Jet Network Inc
+ 0001 Multiple devices use this ID: General Purpose I/O Controller
+ 0002 Tiger 100APC ISDN Chipset
+ 0600 Tiger 600 PCI-to-PCI Bridge
+E4BF EKF Elektronik GMBH
+EA01 Eagle Technology
+ 000A PCI-773 Temperature Card
+ 0032 PCI-730 & PC104P-30 Card
+ 003E PCI-762 Opto-Isolator Card
+ 0041 PCI-763 Reed Relay Card
+ 0043 PCI-769 Opto-Isolator Reed Relay Combo Card
+ 0046 PCI-766 Analog Output Card
+ 0052 PCI-703 Analog I/O Card
+ 0800 PCI-800 Digital I/O Card
+EA60 RME
+ 9896 Digi32
+ 9897 Digi32 Pro
+ 9898 Digi32/8
+EABB Aashima Technology B.V.
+EACE Endace Measurement Systems Ltd.
+ 3100 DAG 3.10 OC-3/OC-12
+ 3200 DAG 3.2x OC-3/OC-12
+ 320E DAG 3.2E Fast Ethernet
+ 340E DAG 3.4E Fast Ethernet
+ 341E DAG 3.41E Fast Ethernet
+ 3500 DAG 3.5 OC-3/OC-12
+ 351C DAG 3.5ECM Fast Ethernet
+ 4100 DAG 4.10 OC-48
+ 4110 DAG 4.11 OC-48
+ 4200 DAG 4.2 OC-48
+ 420E DAG 4.2E Dual Gigabit Ethernet
+ 430E DAG 4.3E Dual Gigabit Ethernet
+EC80 Belkin Corp
+ EC00 F5D6000
+ECC0 Echo Digital Audio Corporation
+ 0050 Gina24_301
+ 0051 Gina24_361
+ 0060 Layla24
+ 0070 Mona_301_80
+ 0071 Mona_301_66
+ 0072 Mona_361
+ 0080 Mia
+EDD8 ARK Logic, Inc
+ A091 ARK1000PV Stingray GUI Accelerator
+ A099 ARK2000PV Stingray GUI Accelerator
+ A0A1 Stingray 64 ARK2000MT 64-bit GUI W/DCI Playback
+ A0A9 ARK2000MI Quadro645 GUI Accelerator
+ A0B1 ARK2000MI+ GUI Accelerator
+F1D0 AJA Video
+ C0FE Xena HS/HD-R
+ C0FF Kona/Xena 2
+ CAFE KONA SD SMPTE 259M I/O
+ CFEE Xena LS/SD-22-DA/SD-DA
+ DCAF Kona HD
+ DFEE Xena HD-DA
+ EFAC KONA SD SMPTE 259M I/O
+ FACD KONA HD SMPTE 292M I/O
+F5F5 F5 Networks Inc.
+FA57 Interagon AS (Was: Fast Search & Transfer ASA)
+ 0001 PMC Pattern Matching Chip
+FEBD Ultraview Corp
+FEDA Broadcom (Was: Epigram Inc; Bought out in 1999)
+ A0FA BCM4210 iLine10 HomePNA 2.0
+ A10E BCM4230 iLine10 HomePNA 2.0
+FEDE Fedetec Inc
+ 0003 TABIC PCI v3
+FFFD XenSource Inc
+ 0101 PCI Event Channel Controller
+FFFE VMWare Inc (Older Product Versions)
+ 0710 Virtual SVGA
diff --git a/share/misc/scsi_modes b/share/misc/scsi_modes
new file mode 100644
index 0000000..687bcfa
--- /dev/null
+++ b/share/misc/scsi_modes
@@ -0,0 +1,358 @@
+# SCSI mode page data base.
+
+# Copyright (c) 1995 HD Associates
+# Copyright (c) 2001 The FreeBSD Project
+# (contact: dufault@hda.com)
+# 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 HD Associates
+# may not be used to endorse or promote products derived from this software
+# without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY HD ASSOCIATES ``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 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 ordering is alphabetical by page name, as it appears in the SCSI spec.
+
+# 'i' is a byte-sized integral types, followed by a field width of
+# 1 through 4 (1 to 4 bytes).
+#
+# 'b' is a bit-sized integral type
+# 't' is a bitfield type- followed by a bit field width
+#
+# 'c' values are character arrays
+# 'z' values are null-padded strings
+#
+#
+# '*' suppresses assignment (for 'seeking').
+# Bitfields are MSB to LSB.
+
+
+# ALL DEVICE TYPES
+
+0x0a "Control Mode Page" {
+ {Reserved} *t7
+ {RLEC} t1
+ {Queue Algorithm Modifier} t4
+ {Reserved} *t2
+ {QErr} t1
+ {DQue} t1
+ {EECA} t1
+ {Reserved} *t4
+ {RAENP} t1
+ {UAAENP} t1
+ {EAENP} t1
+ {Reserved} *i1
+ {Ready AEN Holdoff Period} i2
+}
+
+0x02 "Disconnect-Reconnect Page" {
+ {Buffer Full Ratio} i1
+ {Buffer Empty Ratio} i1
+ {Bus Inactivity Limit} i2
+ {Disconnect Time Limit} i2
+ {Connect Time Limit} i2
+ {Maximum Burst Size} i2
+ {Reserved} *t6
+ {DTDC} t2
+ {Reserved} *i1
+ {Reserved} *i1
+ {Reserved} *i1
+}
+
+0x09 "Peripheral Device Page" {
+ {Interface Identifier} i2
+ {Reserved} *i1
+ {Reserved} *i1
+ {Reserved} *i1
+ {Reserved} *i1
+}
+
+0x1a "Power Control" {
+ {Reserved} *i1
+ {Reserved} *t6
+ {Idle} t1
+ {Standby} t1
+ {Idle Condition Timer} i4
+ {Standby Condition Timer} i4
+}
+
+# DIRECT ACCESS DEVICES
+0x08 "Caching Page" {
+ {IC} t1
+ {ABPF} t1
+ {CAP} t1
+ {DISC} t1
+ {SIZE} t1
+ {WCE} t1
+ {MF} t1
+ {RCD} t1
+ {Demand Retention Priority} t4
+ {Write Retention Priority} t4
+ {Disable Pre-fetch Transfer Length} i2
+ {Minimum Pre-fetch} i2
+ {Maximum Pre-fetch} i2
+ {Maximum Pre-fetch Ceiling} i2
+}
+
+0x05 "Flexible Disk Page" {
+ {Transfer rate} i2
+ {Number of heads} i1
+ {Sectors per track} i1
+ {Data bytes per sector} i2
+ {Number of cylinders} i2
+ {Starting cylinder-write precompensation} i2
+ {Starting cylinder-reduced write current} i2
+ {Drive step rate} i2
+ {Drive step pulse width} i1
+ {Head settle delay} i2
+ {Motor on delay} i1
+ {Motor off delay} i1
+ {TRDY} t1
+ {SSN} t1
+ {MO} t1
+ {Reserved} *t5
+ {Reserved} *t4
+ {SPC} t4
+ {Write Compensation} i1
+ {Head load delay} i1
+ {Head unload delay} i1
+ {Pin 34} t4
+ {Pin 2} t4
+ {Pin 4} t4
+ {Pin 1} t4
+ {Medium rotation rate} i2
+ {Reserved} *i1
+ {Reserved} *i1
+}
+
+0x03 "Format Device Page" {
+ {Tracks per Zone} i2
+ {Alternate Sectors per Zone} i2
+ {Alternate Tracks per Zone} i2
+ {Alternate Tracks per Logical Unit} i2
+ {Sectors per Track} i2
+ {Data Bytes per Physical Sector} i2
+ {Interleave} i2
+ {Track Skew Factor} i2
+ {Cylinder Skew Factor} i2
+ {SSEC} t1
+ {HSEC} t1
+ {RMB} t1
+ {SURF} t1
+ {Reserved} *t4
+}
+
+0x0b "Medium Types Supported Page" {
+ {Reserved} *i1
+ {Reserved} *i1
+ {Medium type one supported} i1
+ {Medium type two supported} i1
+ {Medium type three supported} i1
+ {Medium type four supported} i1
+}
+
+# Notch page (0x0c)
+0x0c "Notch and Partition Page";
+
+0x01 "Read-Write Error Recovery Page" {
+ {AWRE (Auto Write Reallocation Enbld)} t1
+ {ARRE (Auto Read Reallocation Enbld)} t1
+ {TB (Transfer Block)} t1
+ {RC (Read Continuous)} t1
+ {EER (Enable Early Recovery)} t1
+ {PER (Post Error)} t1
+ {DTE (Disable Transfer on Error)} t1
+ {DCR (Disable Correction)} t1
+ {Read Retry Count} i1
+ {Correction Span} i1
+ {Head Offset Count} i1
+ {Data Strobe Offset Count} i1
+ {Reserved} *i1
+ {Write Retry Count} i1
+ {Reserved} *i1
+ {Recovery Time Limit} i2
+}
+
+0x04 "Rigid Disk Drive Geometry Page" {
+ {Number of Cylinders} i3
+ {Number of Heads} i1
+ {Starting Cylinder-Write Precompensation} i3
+ {Starting Cylinder-Reduced Write Current} i3
+ {Drive Step Rate} i2
+ {Landing Zone Cylinder} i3
+ {Reserved} *t6
+ {RPL} t2
+ {Rotational Offset} i1
+ {Reserved} *i1
+ {Medium Rotation Rate} i2
+ {Reserved} *i1
+ {Reserved} *i1
+}
+
+0x07 "Verify Error Recovery Page" {
+ {Reserved} *t4
+ {EER} t1
+ {PER} t1
+ {DTE} t1
+ {DCR} t1
+ {Verify Retry Count} i1
+ {Verify Correction Span} i1
+ {Reserved} *i1
+ {Reserved} *i1
+ {Reserved} *i1
+ {Reserved} *i1
+ {Reserved} *i1
+ {Verify Recovery Time Limit} i2
+}
+
+0x0E "CD-ROM Audio Control Parameters Page" {
+ {Reserved} *t5
+ {Immed} t1
+ {SOTC} t1
+ {Reserved} *t1
+ {Reserved} *i2
+ {APRVal} t1
+ {Reserved} *t3
+ {Format of LBAs / sec.} t4
+ {Logical Blocks per Second of Audio Playback} i2
+ {Reserved} *t4
+ {Output Port 0 Channel Selection} t4
+ {Output Port 0 Volume} i1
+ {Reserved} *t4
+ {Output Port 1 Channel Selection} t4
+ {Output Port 1 Volume} i1
+ {Reserved} *t4
+ {Output Port 2 Channel Selection} t4
+ {Output Port 2 Volume} i1
+ {Reserved} *t4
+ {Output Port 3 Channel Selection} t4
+ {Output Port 3 Volume} i1
+}
+
+# SEQUENTIAL ACCESS DEVICES
+0x10 "Device Configuration Page" {
+ {Reserved} *t1
+ {Change Active Partition} t1
+ {Change Active Format} t1
+ {Active Format} t5
+ {Active Partition} i1
+ {Write Buffer Full Ratio} i1
+ {Write Buffer Empty Ratio} i1
+ {Write Delay Time} i2
+ {Data Buffer Recovery} t1
+ {Block Identifiers Support} t1
+ {Report Setmarks} t1
+ {Automatic Velocity Control} t1
+ {Stop on Consecutive Filemarks} t2
+ {Recover Buffer Order} t1
+ {Report Early-Warning} t1
+ {Gap Size} i1
+ {EOD Defined} t3
+ {Enable EOD Generation} t1
+ {Synchronize at Early-Warning} t1
+ {Reserved} *t3
+ {Buffer Size at Early-Warning} i3
+ {Select Data Compression Algorithm} i1
+ {Reserved} *t5
+ {SCSI-3 Associated Write Protect} t1
+ {SCSI-3 Persistent Write Protect} t1
+ {SCSI-3 Permanent Write Protect} t1
+}
+
+0x0f "Data Compression Page" {
+ {Data Compression Enabled} t1
+ {Date Compression Capable} t1
+ {Reserved} *t6
+ {Data Decompression Capable} t1
+ {Data Decompression Report on Exception} t2
+ {Reserved} *t5
+ {Compression Algorithm} i4
+ {Decompression Algorithm} i4
+ {Reserved} *i4
+}
+
+# Removable devices
+0x1b "Removable Block Access Capacities Page" {
+ {System Floppy Type Device} t1
+ {Supports Reporting Format Progress} t1
+ {Reserved} *t6
+ {Non CD Optical Device} t1
+ {Single or Multiple LUN Supported} t1
+ {Reserved} *t3
+ {Total Logical Units Supported} t3
+ {Reserved} *i8
+}
+
+# CD-ROM (and CD-R[W]) devices
+0x2a "CD capabilities and mechanical status page" {
+ {Reserved} *t4
+ {Method 2} t1
+ {CD-RW Read} t1
+ {CD-R Read} t1
+ {Reserved} *t4
+ {Test Write} t1
+ {CD-RW Write} t1
+ {CD-R Write} t1
+ {Reserved} *t1
+ {Multi Session} t1
+ {Mode 2 Form 2} t1
+ {Mode 2 Form 1} t1
+ {Digital Port (2)} t1
+ {Digital Port (1)} t1
+ {Composite} t1
+ {Audio Play} t1
+ {Read Bar Code} t1
+ {UPC} t1
+ {ISRC} t1
+ {C2 Pointers are supported} t1
+ {R-W De-interleaved & corrected} t1
+ {R-W Supported} t1
+ {CD-DA Stream is Accurate} t1
+ {CD-DA Commands Supported} t1
+ {Loading Mechanism Type} t3
+ {Reserved} *t1
+ {Eject} t1
+ {Prevent Jumper} t1
+ {Lock State} t1
+ {Lock} t1
+ {Reserved} *t4
+ {S/W Slot Selection} t1
+ {Changer Supports Disc Present reporting} t1
+ {Separate Channel Mute Supported} t1
+ {Separate volume levels per channel} t1
+ {Maximum Read Speed Supported (kBps)} i2
+ {Number of Volume Leves Supported} i2
+ {Buffer Size supported by Drive (KB)} i2
+ {Current Read Speed Selected (kBps)} i2
+ {Reserved} *i1
+ {Reserved} *t2
+ {Length} t2
+ {LSBF} t1
+ {RCK} t1
+ {BCK} t1
+ {Reserved} *t1
+ {Maximum Write Speed Supported (kBps)} i2
+ {Current Write Speed Supported (kBps)} i2
+};
+
+0x00 "Vendor-Specific";
diff --git a/share/misc/usb_hid_usages b/share/misc/usb_hid_usages
new file mode 100644
index 0000000..2e66836
--- /dev/null
+++ b/share/misc/usb_hid_usages
@@ -0,0 +1,1730 @@
+# $FreeBSD$
+#
+# USB HID usage table
+# Syntax:
+# - lines that do not start with a white space give the number and name of
+# a usage page.
+# - lines that start with a white space give the number and name of
+# a usage with the last given page.
+# If the number is * then the line matches all usages and the name
+# is a printf formatting string that will be given the usage number.
+#
+1 Generic Desktop
+ 0x00 Undefined
+ 0x01 Pointer
+ 0x02 Mouse
+ 0x03 Reserved
+ 0x04 Joystick
+ 0x05 Game Pad
+ 0x06 Keyboard
+ 0x07 Keypad
+ 0x08 Multi-axis Controller
+ 0x09 Tablet PC System Controls
+ 0x30 X
+ 0x31 Y
+ 0x32 Z
+ 0x33 Rx
+ 0x34 Ry
+ 0x35 Rz
+ 0x36 Slider
+ 0x37 Dial
+ 0x38 Wheel
+ 0x39 Hat Switch
+ 0x3A Counted Buffer
+ 0x3B Byte Count
+ 0x3C Motion Wakeup
+ 0x3D Start
+ 0x3E Select
+ 0x40 Vx
+ 0x41 Vy
+ 0x42 Vz
+ 0x43 Vbrx
+ 0x44 Vbry
+ 0x45 Vbrx
+ 0x46 Vno
+ 0x47 Feature Notification
+ 0x48 Resolution Multiplier
+ 0x80 System Control
+ 0x81 System Power Down
+ 0x82 System Sleep
+ 0x83 System Wake Up
+ 0x84 System Context Menu
+ 0x85 System Main Menu
+ 0x86 System App Menu
+ 0x87 System Menu Help
+ 0x88 System Menu Exit
+ 0x89 System Menu Select
+ 0x8A System Menu Right
+ 0x8B System Menu Left
+ 0x8C System Menu Up
+ 0x8D System Menu Down
+ 0x8E System Cold Restart
+ 0x8F System Warm Restart
+ 0x90 D-pad Up
+ 0x91 D-pad Down
+ 0x92 D-pad Right
+ 0x93 D-pad Left
+ 0xA0 System Dock
+ 0xA1 System Undock
+ 0xA2 System Setup
+ 0xA3 System Break
+ 0xA4 System Debugger Break
+ 0xA5 Application Break
+ 0xA6 Application Debugger Break
+ 0xA7 System Speaker Mute
+ 0xA8 System Hibernate
+ 0xB0 System Display Invert
+ 0xB1 System Display Internal
+ 0xB2 System Display External
+ 0xB3 System Display Both
+ 0xB4 System Display Dual
+ 0xB5 System Display Toggle Int/Ext
+ 0xB6 System Display Swap Primary/Secondary
+ 0xB7 System Display LCD Autoscale
+
+2 Simulation Controls
+ 0x00 Undefined
+ 0x01 Flight Simulation Device
+ 0x02 Automobile Simulation Device
+ 0x03 Tank Simulation Device
+ 0x04 Spaceship Simulation Device
+ 0x05 Submarine Simulation Device
+ 0x06 Sailing Simulation Device
+ 0x07 Motorcycle Simulation Device
+ 0x08 Sports Simulation Device
+ 0x09 Airplane Simulation Device
+ 0x0A Helicopter Simulation Device
+ 0x0B Magic Carpet Simulation Device
+ 0x0C Bicycle Simulation Device
+ 0x20 Flight Control Stick
+ 0x21 Flight Stick
+ 0x22 Cyclic Control
+ 0x23 Cyclic Trim
+ 0x24 Flight Yoke
+ 0x25 Track Control
+ 0x26 Reserved
+ 0xB0 Aileron
+ 0xB1 Aileron Trim
+ 0xB2 Anti-Torque Control
+ 0xB3 Autopilot Enable
+ 0xB4 Chaff Release
+ 0xB5 Collective Control
+ 0xB6 Dive Brake
+ 0xB7 Electronic Countermeasures
+ 0xB8 Elevator
+ 0xB9 Elevator Trim
+ 0xBA Rudder
+ 0xBB Throttle
+ 0xBC Flight Communication
+ 0xBD Flare Release
+ 0xBE Landing Gear
+ 0xBF Toe Brake
+ 0xC0 Trigger
+ 0xC1 Weapons Arm
+ 0xC2 Weapons Select
+ 0xC3 Wing Flaps
+ 0xC4 Accelerator
+ 0xC5 Brake
+ 0xC6 Clutch
+ 0xC7 Shifter
+ 0xC8 Steering
+ 0xC9 Turret Direction
+ 0xCA Barrel Elevation
+ 0xCB Dive Plane
+ 0xCC Ballast
+ 0xCD Bicycle Crank
+ 0xCE Handle Bars
+ 0xCF Front Brake
+ 0xD0 Rear Brake
+
+3 VR Controls
+ 0x00 Unidentified
+ 0x01 Belt
+ 0x02 Body Suit
+ 0x03 Flexor
+ 0x04 Glove
+ 0x05 Head Tracker
+ 0x06 Head Mounted Display
+ 0x07 Hand Tracker
+ 0x08 Oculometer
+ 0x09 Vest
+ 0x0A Animatronic Device
+ 0x20 Stereo Enable
+ 0x21 Display Enable
+
+4 Sports Controls
+ 0x00 Unidentified
+ 0x01 Baseball Bat
+ 0x02 Golf Club
+ 0x03 Rowing Machine
+ 0x04 Treadmill
+ 0x30 Oar
+ 0x31 Slope
+ 0x32 Rate
+ 0x33 Stick Speed
+ 0x34 Stick Face Angle
+ 0x35 Stick Heel/Toe
+ 0x36 Stick Follow Through
+ 0x37 Stick Tempo
+ 0x38 Stick Type
+ 0x39 Stick Height
+ 0x50 Putter
+ 0x51 1 Iron
+ 0x52 2 Iron
+ 0x53 3 Iron
+ 0x54 4 Iron
+ 0x55 5 Iron
+ 0x56 6 Iron
+ 0x57 7 Iron
+ 0x58 8 Iron
+ 0x59 9 Iron
+ 0x5A 10 Iron
+ 0x5B 11 Iron
+ 0x5C Sand Wedge
+ 0x5D Loft Wedge
+ 0x5E Power Wedge
+ 0x5F 1 Wood
+ 0x60 3 Wood
+ 0x61 5 Wood
+ 0x62 7 Wood
+ 0x63 9 Wood
+
+5 Game Controls
+ 0x00 Undefined
+ 0x01 3D Game Controller
+ 0x02 Pinball Device
+ 0x03 Gun Device
+ 0x20 Point of View
+ 0x21 Turn Right/Left
+ 0x22 Pitch Forward/Backward
+ 0x23 Roll Right/Left
+ 0x24 Move Right/Left
+ 0x25 Move Forward/Backward
+ 0x26 Move Up/Down
+ 0x27 Lean Right/Left
+ 0x28 Lean Forward/Backward
+ 0x29 Height of POV
+ 0x2A Flipper
+ 0x2B Secondary Flipper
+ 0x2C Bump
+ 0x2D New Game
+ 0x2E Shoot Ball
+ 0x2F Player
+ 0x30 Gun Bolt
+ 0x31 Gun Clip
+ 0x32 Gun Selector
+ 0x33 Gun Single Shot
+ 0x34 Gun Burst
+ 0x35 Gun Automatic
+ 0x36 Gun Safety
+ 0x37 Gamepad Fire/Jump
+ 0x39 Gamepad Trigger
+
+6 Generic Device Control
+ 0x00 Unidentified
+ 0x20 Battery Strength
+ 0x21 Wireless Channel
+ 0x22 Wireless ID
+ 0x23 Discover Wireless Control
+ 0x24 Security Code Character Entered
+ 0x25 Security Code Character Erased
+ 0x26 Security Code Cleared
+
+7 Keyboard
+ 0x00 Reserved (no event indicated)
+ 0x01 Keyboard ErrorRollOver
+ 0x02 Keyboard POSTFail
+ 0x03 Keyboard ErrorUndefined
+ 0x04 Keyboard a and A
+ 0x05 Keyboard b and B
+ 0x06 Keyboard c and C
+ 0x07 Keyboard d and D
+ 0x08 Keyboard e and E
+ 0x09 Keyboard f and F
+ 0x0A Keyboard g and G
+ 0x0B Keyboard h and H
+ 0x0C Keyboard i and I
+ 0x0D Keyboard j and J
+ 0x0E Keyboard k and K
+ 0x0F Keyboard l and L
+ 0x10 Keyboard m and M
+ 0x11 Keyboard n and N
+ 0x12 Keyboard o and O
+ 0x13 Keyboard p and P
+ 0x14 Keyboard q and Q
+ 0x15 Keyboard r and R
+ 0x16 Keyboard s and S
+ 0x17 Keyboard t and T
+ 0x18 Keyboard u and U
+ 0x19 Keyboard v and V
+ 0x1A Keyboard w and W
+ 0x1B Keyboard x and X
+ 0x1C Keyboard y and Y
+ 0x1D Keyboard z and Z
+ 0x1E Keyboard 1 and !
+ 0x1F Keyboard 2 and @
+ 0x20 Keyboard 3 and #
+ 0x21 Keyboard 4 and $
+ 0x22 Keyboard 5 and %
+ 0x23 Keyboard 6 and ^
+ 0x24 Keyboard 7 and &
+ 0x25 Keyboard 8 and *
+ 0x26 Keyboard 9 and (
+ 0x27 Keyboard 0 and )
+ 0x28 Keyboard Return (ENTER)
+ 0x29 Keyboard ESCAPE
+ 0x2A Keyboard DELETE (Backspace)
+ 0x2B Keyboard Tab
+ 0x2C Keyboard Spacebar
+ 0x2D Keyboard - and (underscore)
+ 0x2E Keyboard = and +
+ 0x2F Keyboard [ and {
+ 0x30 Keyboard ] and }
+ 0x31 Keyboard \ and |
+ 0x32 Keyboard Non-US # and ~
+ 0x33 Keyboard ; and :
+ 0x34 Keyboard ' and "
+ 0x35 Keyboard Grave Accent and Tilde
+ 0x36 Keyboard , and <
+ 0x37 Keyboard . and >
+ 0x38 Keyboard / and ?
+ 0x39 Keyboard Caps Lock
+ 0x3A Keyboard F1
+ 0x3B Keyboard F2
+ 0x3C Keyboard F3
+ 0x3D Keyboard F4
+ 0x3E Keyboard F5
+ 0x3F Keyboard F6
+ 0x40 Keyboard F7
+ 0x41 Keyboard F8
+ 0x42 Keyboard F9
+ 0x43 Keyboard F10
+ 0x44 Keyboard F11
+ 0x45 Keyboard F12
+ 0x46 Keyboard PrintScreen
+ 0x47 Keyboard Scroll Lock
+ 0x48 Keyboard Pause
+ 0x49 Keyboard Insert
+ 0x4A Keyboard Home
+ 0x4B Keyboard PageUp
+ 0x4C Keyboard Delete Forward
+ 0x4D Keyboard End
+ 0x4E Keyboard PageDown
+ 0x4F Keyboard RightArrow
+ 0x50 Keyboard LeftArrow
+ 0x51 Keyboard DownArrow
+ 0x52 Keyboard UpArrow
+ 0x53 Keypad Num Lock and Clear
+ 0x54 Keypad /
+ 0x55 Keypad *
+ 0x56 Keypad -
+ 0x57 Keypad +
+ 0x58 Keypad ENTER
+ 0x59 Keypad 1 and End
+ 0x5A Keypad 2 and Down Arrow
+ 0x5B Keypad 3 and PageDn
+ 0x5C Keypad 4 and Left Arrow
+ 0x5D Keypad 5
+ 0x5E Keypad 6 and Right Arrow
+ 0x5F Keypad 7 and Home
+ 0x60 Keypad 8 and Up Arrow
+ 0x61 Keypad 9 and PageUp
+ 0x62 Keypad 0 and Insert
+ 0x63 Keypad . and Delete
+ 0x64 Keyboard Non-US \ and |
+ 0x65 Keyboard Application
+ 0x66 Keyboard Power
+ 0x67 Keypad =
+ 0x68 Keyboard F13
+ 0x69 Keyboard F14
+ 0x6A Keyboard F15
+ 0x6B Keyboard F16
+ 0x6C Keyboard F17
+ 0x6D Keyboard F18
+ 0x6E Keyboard F19
+ 0x6F Keyboard F20
+ 0x70 Keyboard F21
+ 0x71 Keyboard F22
+ 0x72 Keyboard F23
+ 0x73 Keyboard F24
+ 0x74 Keyboard Execute
+ 0x75 Keyboard Help
+ 0x76 Keyboard Menu
+ 0x77 Keyboard Select
+ 0x78 Keyboard Stop
+ 0x79 Keyboard Again
+ 0x7A Keyboard Undo
+ 0x7B Keyboard Cut
+ 0x7C Keyboard Copy
+ 0x7D Keyboard Paste
+ 0x7E Keyboard Find
+ 0x7F Keyboard Mute
+ 0x80 Keyboard Volume Up
+ 0x81 Keyboard Volume Down
+ 0x82 Keyboard Locking Caps Lock
+ 0x83 Keyboard Locking Num Lock
+ 0x84 Keyboard Locking Scroll Lock
+ 0x85 Keypad Comma
+ 0x86 Keypad Equal Sign
+ 0x87 Keyboard International1
+ 0x88 Keyboard International2
+ 0x89 Keyboard International3
+ 0x8A Keyboard International4
+ 0x8B Keyboard International5
+ 0x8C Keyboard International6
+ 0x8D Keyboard International7
+ 0x8E Keyboard International8
+ 0x8F Keyboard International9
+ 0x90 Keyboard LANG1
+ 0x91 Keyboard LANG2
+ 0x92 Keyboard LANG3
+ 0x93 Keyboard LANG4
+ 0x94 Keyboard LANG5
+ 0x95 Keyboard LANG6
+ 0x96 Keyboard LANG7
+ 0x97 Keyboard LANG8
+ 0x98 Keyboard LANG9
+ 0x99 Keyboard Alternate Erase
+ 0x9A Keyboard SysReq/Attention
+ 0x9B Keyboard Cancel
+ 0x9C Keyboard Clear
+ 0x9D Keyboard Prior
+ 0x9E Keyboard Return
+ 0x9F Keyboard Separator
+ 0xA0 Keyboard Out
+ 0xA1 Keyboard Oper
+ 0xA2 Keyboard Clear/Again
+ 0xA3 Keyboard CrSel/Props
+ 0xA4 Keyboard ExSel
+ 0xB0 Keypad 00
+ 0xB1 Keypad 000
+ 0xB2 Thousands Separator
+ 0xB3 Decimal Separator
+ 0xB4 Currency Unit
+ 0xB5 Currency Sub-unit
+ 0xB6 Keypad (
+ 0xB7 Keypad )
+ 0xB8 Keypad {
+ 0xB9 Keypad }
+ 0xBA Keypad Tab
+ 0xBB Keypad Backspace
+ 0xBC Keypad A
+ 0xBD Keypad B
+ 0xBE Keypad C
+ 0xBF Keypad D
+ 0xC0 Keypad E
+ 0xC1 Keypad F
+ 0xC2 Keypad XOR
+ 0xC3 Keypad ^
+ 0xC4 Keypad %
+ 0xC5 Keypad <
+ 0xC6 Keypad >
+ 0xC7 Keypad &
+ 0xC8 Keypad &&
+ 0xC9 Keypad |
+ 0xCA Keypad ||
+ 0xCB Keypad :
+ 0xCC Keypad #
+ 0xCD Keypad Space
+ 0xCE Keypad @
+ 0xCF Keypad !
+ 0xD0 Keypad Memory Store
+ 0xD1 Keypad Memory Recall
+ 0xD2 Keypad Memory Clear
+ 0xD3 Keypad Memory Add
+ 0xD4 Keypad Memory Subtract
+ 0xD5 Keypad Memory Multiply
+ 0xD6 Keypad Memory Divide
+ 0xD7 Keypad +/-
+ 0xD8 Keypad Clear
+ 0xD9 Keypad Clear Entry
+ 0xDA Keypad Binary
+ 0xDB Keypad Octal
+ 0xDC Keypad Decimal
+ 0xDD Keypad Hexadecimal
+ 0xE0 Keyboard LeftControl
+ 0xE1 Keyboard LeftShift
+ 0xE2 Keyboard LeftAlt
+ 0xE3 Keyboard Left GUI
+ 0xE4 Keyboard RightControl
+ 0xE5 Keyboard RightShift
+ 0xE6 Keyboard RightAlt
+ 0xE7 Keyboard Right GUI
+
+8 LEDs
+ 0x00 Undefined
+ 0x01 Num Lock
+ 0x02 Caps Lock
+ 0x03 Scroll Lock
+ 0x04 Compose
+ 0x05 Kana
+ 0x06 Power
+ 0x07 Shift
+ 0x08 Do Not Disturb
+ 0x09 Mute
+ 0x0A Tone Enable
+ 0x0B High Cut Filter
+ 0x0C Low Cut Filter
+ 0x0D Equalizer Enable
+ 0x0E Sound Field On
+ 0x0F Surround On
+ 0x10 Repeat
+ 0x11 Stereo
+ 0x12 Sampling Rate Detect
+ 0x13 Spinning
+ 0x14 CAV
+ 0x15 CLV
+ 0x16 Recording Format Detect
+ 0x17 Off-Hook
+ 0x18 Ring
+ 0x19 Message Waiting
+ 0x1A Data Mode
+ 0x1B Battery Operation
+ 0x1C Battery OK
+ 0x1D Battery Low
+ 0x1E Speaker
+ 0x1F Head Set
+ 0x20 Hold
+ 0x21 Microphone
+ 0x22 Coverage
+ 0x23 Night Mode
+ 0x24 Send Calls
+ 0x25 Call Pickup
+ 0x26 Conference
+ 0x27 Stand-by
+ 0x28 Camera On
+ 0x29 Camera Off
+ 0x2A On-Line
+ 0x2B Off-Line
+ 0x2C Busy
+ 0x2D Ready
+ 0x2E Paper-Out
+ 0x2F Paper-Jam
+ 0x30 Remote
+ 0x31 Forward
+ 0x32 Reverse
+ 0x33 Stop
+ 0x34 Rewind
+ 0x35 Fast Forward
+ 0x36 Play
+ 0x37 Pause
+ 0x38 Record
+ 0x39 Error
+ 0x3A Usage Selected Indicator
+ 0x3B Usage In Use Indicator
+ 0x3C Usage Multi Mode Indicator
+ 0x3D Indicator On
+ 0x3E Indicator Flash
+ 0x3F Indicator Slow Blink
+ 0x40 Indicator Fast Blink
+ 0x41 Indicator Off
+ 0x42 Flash On Time
+ 0x43 Slow Blink On Time
+ 0x44 Slow Blink Off Time
+ 0x45 Fast Blink On Time
+ 0x46 Fast Blink Off Time
+ 0x47 Usage Indicator Color
+ 0x48 Indicator Red
+ 0x49 Indicator Green
+ 0x4A Indicator Amber
+ 0x4B Generic Indicator
+ 0x4C System Suspend
+ 0x4D External Power Connected
+
+9 Button
+ 0x00 No Button Pressed
+ * Button %d
+
+10 Ordinal
+ 0x00 Reserved
+ * Instance %d
+
+11 Telephony
+ 0x00 Unassigned
+ 0x01 Phone
+ 0x02 Answering Machine
+ 0x03 Message Controls
+ 0x04 Handset
+ 0x05 Headset
+ 0x06 Telephony Key Pad
+ 0x07 Programmable Button
+ 0x20 Hook Switch
+ 0x21 Flash
+ 0x22 Feature
+ 0x23 Hold
+ 0x24 Redial
+ 0x25 Transfer
+ 0x26 Drop
+ 0x27 Park
+ 0x28 Forward Calls
+ 0x29 Alternate Function
+ 0x2A Line
+ 0x2B Speaker Phone
+ 0x2C Conference
+ 0x2D Ring Enable
+ 0x2E Ring Select
+ 0x2F Phone Mute
+ 0x30 Caller ID
+ 0x31 Send
+ 0x50 Speed Dial
+ 0x51 Store Number
+ 0x52 Recall Number
+ 0x53 Phone Directory
+ 0x70 Voice Mail
+ 0x71 Screen Calls
+ 0x72 Do Not Disturb
+ 0x73 Message
+ 0x74 Answer On/Off
+ 0x90 Inside Dial Tone
+ 0x91 Outside Dial Tone
+ 0x92 Inside Ring Tone
+ 0x93 Outside Ring Tone
+ 0x94 Priority Ring Tone
+ 0x95 Inside Ringback
+ 0x96 Priority Ringback
+ 0x97 Line Busy Tone
+ 0x98 Reorder Tone
+ 0x99 Call Waiting Tone
+ 0x9A Confirmation Tone 1
+ 0x9B Confirmation Tone 2
+ 0x9C Tones Off
+ 0x9D Outside Ringback
+ 0x9E Ringer
+ 0xB0 Phone Key 0
+ 0xB1 Phone Key 1
+ 0xB2 Phone Key 2
+ 0xB3 Phone Key 3
+ 0xB4 Phone Key 4
+ 0xB5 Phone Key 5
+ 0xB6 Phone Key 6
+ 0xB7 Phone Key 7
+ 0xB8 Phone Key 8
+ 0xB9 Phone Key 9
+ 0xBA Phone Key Star
+ 0xBB Phone Key Pound
+ 0xBC Phone Key A
+ 0xBD Phone Key B
+ 0xBE Phone Key C
+ 0xBF Phone Key D
+
+12 Consumer
+ 0x00 Unassigned
+ 0x01 Consumer Control
+ 0x02 Numeric Key Pad
+ 0x03 Programmable Buttons
+ 0x04 Microphone
+ 0x05 Headphone
+ 0x06 Graphic Equalizer
+ 0x20 +10
+ 0x21 +100
+ 0x22 AM/PM
+ 0x30 Power
+ 0x31 Reset
+ 0x32 Sleep
+ 0x33 Sleep After
+ 0x34 Sleep Mode
+ 0x35 Illumination
+ 0x36 Function Buttons
+ 0x40 Menu
+ 0x41 Menu Pick
+ 0x42 Menu Up
+ 0x43 Menu Down
+ 0x44 Menu Left
+ 0x45 Menu Right
+ 0x46 Menu Escape
+ 0x47 Menu Value Increase
+ 0x48 Menu Value Decrease
+ 0x60 Data On Screen
+ 0x61 Closed Caption
+ 0x62 Closed Caption Select
+ 0x63 VCR/TV
+ 0x64 Broadcast Mode
+ 0x65 Snapshot
+ 0x66 Still
+ 0x80 Selection
+ 0x81 Assign Selection
+ 0x82 Mode Step
+ 0x83 Recall Last
+ 0x84 Enter Channel
+ 0x85 Order Movie
+ 0x86 Channel
+ 0x87 Media Selection
+ 0x88 Media Select Computer
+ 0x89 Media Select TV
+ 0x8A Media Select WWW
+ 0x8B Media Select DVD
+ 0x8C Media Select Telephone
+ 0x8D Media Select Program Guide
+ 0x8E Media Select Video Phone
+ 0x8F Media Select Games
+ 0x90 Media Select Messages
+ 0x91 Media Select CD
+ 0x92 Media Select VCR
+ 0x93 Media Select Tuner
+ 0x94 Quit
+ 0x95 Help
+ 0x96 Media Select Tape
+ 0x97 Media Select Cable
+ 0x98 Media Select Satellite
+ 0x99 Media Select Security
+ 0x9A Media Select Home
+ 0x9B Media Select Call
+ 0x9C Channel Increment
+ 0x9D Channel Decrement
+ 0x9E Media Select SAP
+ 0xA0 VCR Plus
+ 0xA1 Once
+ 0xA2 Daily
+ 0xA3 Weekly
+ 0xA4 Monthly
+ 0xB0 Play
+ 0xB1 Pause
+ 0xB2 Record
+ 0xB3 Fast Forward
+ 0xB4 Rewind
+ 0xB5 Scan Next Track
+ 0xB6 Scan Previous Track
+ 0xB7 Stop
+ 0xB8 Eject
+ 0xB9 Random Play
+ 0xBA Select DisC
+ 0xBB Enter Disc
+ 0xBC Repeat
+ 0xBD Tracking
+ 0xBE Track Normal
+ 0xBF Slow Tracking
+ 0xC0 Frame Forward
+ 0xC1 Frame Back
+ 0xC2 Mark
+ 0xC3 Clear Mark
+ 0xC4 Repeat From Mark
+ 0xC5 Return To Mark
+ 0xC6 Search Mark Forward
+ 0xC7 Search Mark Backwards
+ 0xC8 Counter Reset
+ 0xC9 Show Counter
+ 0xCA Tracking Increment
+ 0xCB Tracking Decrement
+ 0xCC Stop/Eject
+ 0xCD Play/Pause
+ 0xCE Play/Skip
+ 0xE0 Volume
+ 0xE1 Balance
+ 0xE2 Mute
+ 0xE3 Bass
+ 0xE4 Treble
+ 0xE5 Bass Boost
+ 0xE6 Surround Mode
+ 0xE7 Loudness
+ 0xE8 MPX
+ 0xE9 Volume Increment
+ 0xEA Volume Decrement
+ 0xF0 Speed Select
+ 0xF1 Playback Speed
+ 0xF2 Standard Play
+ 0xF3 Long Play
+ 0xF4 Extended Play
+ 0xF5 Slow
+ 0x100 Fan Enable
+ 0x101 Fan Speed
+ 0x102 Light Enable
+ 0x103 Light Illumination Level
+ 0x104 Climate Control Enable
+ 0x105 Room Temperature
+ 0x106 Security Enable
+ 0x107 Fire Alarm
+ 0x108 Police Alarm
+ 0x109 Proximity
+ 0x10A Motion
+ 0x10B Duress Alarm
+ 0x10C Holdup Alarm
+ 0x10D Medical Alarm
+ 0x150 Balance Right
+ 0x151 Balance Left
+ 0x152 Bass Increment
+ 0x153 Bass Decrement
+ 0x154 Treble Increment
+ 0x155 Treble Decrement
+ 0x160 Speaker System
+ 0x161 Channel Left
+ 0x162 Channel Right
+ 0x163 Channel Center
+ 0x164 Channel Front
+ 0x165 Channel Center Front
+ 0x166 Channel Side
+ 0x167 Channel Surround
+ 0x168 Channel Low Frequency Enhancement
+ 0x169 Channel Top
+ 0x16A Channel Unknown
+ 0x170 Sub-channel
+ 0x171 Sub-channel Increment
+ 0x172 Sub-channel Decrement
+ 0x173 Alternate Audio Increment
+ 0x174 Alternate Audio Decrement
+ 0x180 Application Launch Buttons
+ 0x181 AL Launch Button Configuration Tool
+ 0x182 AL Programmable Button Configuration
+ 0x183 AL Consumer Control Configuration
+ 0x184 AL Word Processor
+ 0x185 AL Text Editor
+ 0x186 AL Spreadsheet
+ 0x187 AL Graphics Editor
+ 0x188 AL Presentation App
+ 0x189 AL Database App
+ 0x18A AL Email Reader
+ 0x18B AL Newsreader
+ 0x18C AL Voicemail
+ 0x18D AL Contacts/Address Book
+ 0x18E AL Calendar/Schedule
+ 0x18F AL Task/Project Manager
+ 0x190 AL Log/Journal/Timecard
+ 0x191 AL Checkbook/Finance
+ 0x192 AL Calculator
+ 0x193 AL A/V Capture/Playback
+ 0x194 AL Local Machine Browser
+ 0x195 AL LAN/WAN Browser
+ 0x196 AL Internet Browser
+ 0x197 AL Remote Networking/ISP Connect
+ 0x198 AL Network Conference
+ 0x199 AL Network Chat
+ 0x19A AL Telephony/Dialer
+ 0x19B AL Logon
+ 0x19C AL Logoff
+ 0x19D AL Logon/Logoff
+ 0x19E AL Terminal Lock/Screensaver
+ 0x19F AL Control Panel
+ 0x1A0 AL Command Line Processor/Run
+ 0x1A1 AL Process/Task Manager
+ 0x1A2 AL Select Tast/Application
+ 0x1A3 AL Next Task/Application
+ 0x1A4 AL Previous Task/Application
+ 0x1A5 AL Preemptive Halt Task/Application
+ 0x1A6 AL Integrated Help Center
+ 0x1A7 AL Documents
+ 0x1A8 AL Thesaurus
+ 0x1A9 AL Dictionary
+ 0x1AA AL Desktop
+ 0x1AB AC Spell Check
+ 0x1AC AL Grammar Check
+ 0x1AD AL Wireless Status
+ 0x1AE AL Keyboard Layout
+ 0x1AF AL Virus Protection
+ 0x1B0 AL Encryption
+ 0x1B1 AL Screen Saver
+ 0x1B2 AL Alarms
+ 0x1B3 AL Clock
+ 0x1B4 AL File Browser
+ 0x1B5 AL Power Status
+ 0x1B6 AL Image Browser
+ 0x1B7 AL Audio Browser
+ 0x1B8 AL Movie Browser
+ 0x1B9 AL Digital Rights Manager
+ 0x1BA AL Digital Wallet
+ 0x1BC AL Instant Messaging
+ 0x1BD AL OEM Feature/Tips/Tutorial Browser
+ 0x1BE AL OEM Help
+ 0x1BF AL Online Community
+ 0x1C0 AL Entertainment Content Browser
+ 0x1C1 AL Online Shopping Browser
+ 0x1C2 AL SmartCard Information/Help
+ 0x1C3 AL Market Monitor/Finance Browser
+ 0x1C4 AL Customized Corporate News Browser
+ 0x1C5 AL Online Activity Browser
+ 0x1C6 AL Research/Search Browser
+ 0x1C7 AL Audio Player
+ 0x200 Generic GUI Application Controls
+ 0x201 AC New
+ 0x202 AC Open
+ 0x203 AC Close
+ 0x204 AC Exit
+ 0x205 AC Maximize
+ 0x206 AC Minimize
+ 0x207 AC Save
+ 0x208 AC Print
+ 0x209 AC Properties
+ 0x21A AC Undo
+ 0x21B AC Copy
+ 0x21C AC Cut
+ 0x21D AC Paste
+ 0x21E AC Select All
+ 0x21F AC Find
+ 0x220 AC Find and Replace
+ 0x221 AC Search
+ 0x222 AC Go To
+ 0x223 AC Home
+ 0x224 AC Back
+ 0x225 AC Forward
+ 0x226 AC Stop
+ 0x227 AC Refresh
+ 0x228 AC Previous Link
+ 0x229 AC Next Link
+ 0x22A AC Bookmarks
+ 0x22B AC History
+ 0x22C AC Subscriptions
+ 0x22D AC Zoom In
+ 0x22E AC Zoom Out
+ 0x22F AC Zoom
+ 0x230 AC Full Screen View
+ 0x231 AC Normal View
+ 0x232 AC View Toggle
+ 0x233 AC Scroll Up
+ 0x234 AC Scroll Down
+ 0x235 AC Scroll
+ 0x236 AC Pan Left
+ 0x237 AC Pan Right
+ 0x238 AC Pan
+ 0x239 AC New Window
+ 0x23A AC Tile Horizontally
+ 0x23B AC Tile Vertically
+ 0x23C AC Format
+ 0x23D AC Edit
+ 0x23E AC Bold
+ 0x23F AC Italics
+ 0x240 AC Underline
+ 0x241 AC Strikethrough
+ 0x242 AC Subscript
+ 0x243 AC Superscript
+ 0x244 AC All Caps
+ 0x245 AC Rotate
+ 0x246 AC Resize
+ 0x247 AC Flip Horizontal
+ 0x248 AC Flip Vertical
+ 0x249 AC Mirror Horizontal
+ 0x24A AC Mirror Vertical
+ 0x24B AC Font Select
+ 0x24C AC Font Color
+ 0x24D AC Font Size
+ 0x24E AC Justify Left
+ 0x24F AC Justify Center H
+ 0x250 AC Justify Right
+ 0x251 AC Justify Block H
+ 0x252 AC Justify Top
+ 0x253 AC Justify Center V
+ 0x254 AC Justify Bottom
+ 0x255 AC Justify Block V
+ 0x256 AC Justify Decrease
+ 0x257 AC Justify Increase
+ 0x258 AC Numbered List
+ 0x259 AC Restart Numbering
+ 0x25A AC Bulleted List
+ 0x25B AC Promote
+ 0x25C AC Demote
+ 0x25D AC Yes
+ 0x25E AC No
+ 0x25F AC Cancel
+ 0x260 AC Catalog
+ 0x261 AC Buy/Checkout
+ 0x262 AC Add to Cart
+ 0x263 AC Expand
+ 0x264 AC Expand All
+ 0x265 AC Collapse
+ 0x266 AC Collapse All
+ 0x267 AC Print Preview
+ 0x268 AC Paste Special
+ 0x269 AC Insert Mode
+ 0x26A AC Delete
+ 0x26B AC Lock
+ 0x26C AC Unlock
+ 0x26D AC Protect
+ 0x26E AC Unprotect
+ 0x26F AC Attach Comment
+ 0x270 AC Delete Comment
+ 0x271 AC View Comment
+ 0x272 AC Select Word
+ 0x273 AC Select Sentence
+ 0x274 AC Select Paragraph
+ 0x275 AC Select Column
+ 0x276 AC Select Row
+ 0x277 AC Select Table
+ 0x278 AC Select Object
+ 0x279 AC Redo/Repeat
+ 0x27A AC Sort
+ 0x27B AC Sort Ascending
+ 0x27C AC Sort Descending
+ 0x27D AC Filter
+ 0x27E AC Set Clock
+ 0x27F AC View Clock
+ 0x280 AC Select Time Zone
+ 0x281 AC Edit Time Zones
+ 0x282 AC Set Alarm
+ 0x283 AC Clear Alarm
+ 0x284 AC Snooze Alarm
+ 0x285 AC Reset Alarm
+ 0x286 AC Synchronize
+ 0x287 AC Send/Receive
+ 0x288 AC Send To
+ 0x289 AC Reply
+ 0x28A AC Reply All
+ 0x28B AC Forward Msg
+ 0x28C AC Send
+ 0x28D AC Attach File
+ 0x28E AC Upload
+ 0x28F AC Download (Save Target As)
+ 0x290 AC Set Borders
+ 0x291 AC Insert Row
+ 0x292 AC Insert Column
+ 0x293 AC Insert File
+ 0x294 AC Insert Picture
+ 0x295 AC Insert Object
+ 0x296 AC Insert Symbol
+ 0x297 AC Save and Close
+ 0x298 AC Rename
+ 0x299 AC Merge
+ 0x29A AC Split
+ 0x29B AC Distribute Horizontally
+ 0x29C AC Distribute Vertically
+
+13 Digitizer
+ 0x00 Undefined
+ 0x01 Digitizer
+ 0x02 Pen
+ 0x03 Light Pen
+ 0x04 Touch Screen
+ 0x05 Touch Pad
+ 0x06 White Board
+ 0x07 Coordinate Measuring Machine
+ 0x08 3D Digitizer
+ 0x09 Stereo Plotter
+ 0x0A Articulated Arm
+ 0x0B Armature
+ 0x0C Multiple Point Digitizer
+ 0x0D Free Space Wand
+ 0x20 Stylus
+ 0x21 Puck
+ 0x22 Finger
+ 0x30 Tip Pressure
+ 0x31 Barrel Pressure
+ 0x32 In Range
+ 0x33 Touch
+ 0x34 Untouch
+ 0x35 Tap
+ 0x36 Quality
+ 0x37 Data Valid
+ 0x38 Transducer Index
+ 0x39 Tablet Function Keys
+ 0x3A Program Change Keys
+ 0x3B Battery Strength
+ 0x3C Invert
+ 0x3D X Tilt
+ 0x3E Y Tilt
+ 0x3F Azimuth
+ 0x40 Altitude
+ 0x41 Twist
+ 0x42 Tip Switch
+ 0x43 Secondary Tip Switch
+ 0x44 Barrel Switch
+ 0x45 Eraser
+ 0x46 Tablet Pick
+
+15 Physical Interface Device
+ 0x00 Undefined
+ 0x01 Physical Interface Device
+ 0x20 Normal
+ 0x21 Set Effect Report
+ 0x22 Effect Block Index
+ 0x23 Parameter Block Offset
+ 0x24 ROM Flag
+ 0x25 Effect Type
+ 0x26 ET Constant Force
+ 0x27 ET Ramp
+ 0x28 ET Custom Force Data
+ 0x30 ET Square
+ 0x31 ET Sine
+ 0x32 ET Triangle
+ 0x33 ET Sawtooth Up
+ 0x34 ET Sawtooth Down
+ 0x40 ET Spring
+ 0x41 ET Damper
+ 0x42 ET Inertia
+ 0x43 ET Friction
+ 0x50 Duration
+ 0x51 Sample Period
+ 0x52 Gain
+ 0x53 Trigger Button
+ 0x54 Trigger Repeat Interval
+ 0x55 Axes Enable
+ 0x56 Direction Enable
+ 0x57 Direction
+ 0x58 Type Specific Block Offset
+ 0x59 Block Type
+ 0x5A Set Envelope Report
+ 0x5B Attack Level
+ 0x5C Attack Time
+ 0x5D Fade Level
+ 0x5E Fade Time
+ 0x5F Set Condition Report
+ 0x60 CP Offset
+ 0x61 Positive Coefficient
+ 0x62 Negative Coefficient
+ 0x63 Positive Saturation
+ 0x64 Negative Saturation
+ 0x65 Dead Band
+ 0x66 Download Force Sample
+ 0x67 Isoch Custom Force Enable
+ 0x68 Custom Force Data Report
+ 0x69 Custom Force Data
+ 0x6A Custom Force Vendor Defined Data
+ 0x6B Set Custom Force Report
+ 0x6C Custom Force Data Offset
+ 0x6D Sample Count
+ 0x6E Set Periodic Report
+ 0x6F Offset
+ 0x70 Magnitude
+ 0x71 Phase
+ 0x72 Period
+ 0x73 Set Constant Force Report
+ 0x74 Set Ramp Force Report
+ 0x75 Ramp Start
+ 0x76 Ramp End
+ 0x77 Effect Operation Report
+ 0x78 Effect Operation
+ 0x79 Op Effect Start
+ 0x7A Op Effect Start Solo
+ 0x7B Op Effect Stop
+ 0x7C Loop Count
+ 0x7D Device Gain Report
+ 0x7E Device Gain
+ 0x7F PID Pool Report
+ 0x80 RAM Pool Size
+ 0x81 ROM Pool Size
+ 0x82 ROM Effect Block Count
+ 0x83 Simultaneous Effects Max
+ 0x84 Pool Alignment
+ 0x85 PID Pool Move Report
+ 0x86 Move Source
+ 0x87 Move Destination
+ 0x88 Move Length
+ 0x89 PID Block Load Report
+ 0x8B Block Load Status
+ 0x8C Block Load Success
+ 0x8D Block Load Full
+ 0x8E Block Load Error
+ 0x8F Block Handle
+ 0x90 PID Block Free Report
+ 0x91 Type Specific Block Handle
+ 0x92 PID State Report
+ 0x94 Effect Playing
+ 0x95 PID Device Control Report
+ 0x96 PID Device Control
+ 0x97 DC Enable Actuators
+ 0x98 DC Disable Actuators
+ 0x99 DC Stop All Effects
+ 0x9A DC Device Reset
+ 0x9B DC Device Pause
+ 0x9C DC Device Continue
+ 0x9F Device Paused
+ 0xA0 Actuators Enable
+ 0xA4 Safety Switch
+ 0xA5 Actuator Override Switch
+ 0xA6 Actuator Power
+ 0xA7 Start Delay
+ 0xA8 Parameter Block Size
+ 0xA9 Device Managed Pool
+ 0xAA Shared Parameter Blocks
+ 0xAB Create New Effect Report
+ 0xAC RAM Pool Available
+
+16 Unicode
+ * Unicode Char u%04x
+
+20 Alphnumeric Display
+ 0x00 Undefined
+ 0x01 Alphanumeric Display
+ 0x02 Bitmapped Display
+ 0x20 Display Attributes Report
+ 0x21 ASCII Character Set
+ 0x22 Data Read Back
+ 0x23 Font Read Back
+ 0x24 Display Control Report
+ 0x25 Clear Display
+ 0x26 Display Enable
+ 0x27 Screen Saver Delay
+ 0x28 Screen Saver Enable
+ 0x29 Vertical Scroll
+ 0x2A Horizontal Scroll
+ 0x2B Character Report
+ 0x2C Display Data
+ 0x2D Display Status
+ 0x2E Stat Not Ready
+ 0x2F Stat Ready
+ 0x30 Err Not a loadable character
+ 0x31 Err Font data cannot be read
+ 0x32 Cursor Position Report
+ 0x33 Row
+ 0x34 Column
+ 0x35 Rows
+ 0x36 Columns
+ 0x37 Cursor Pixel Positioning
+ 0x38 Cursor Mode
+ 0x39 Cursor Enable
+ 0x3A Cursor Blink
+ 0x3B Font Report
+ 0x3C Font Data
+ 0x3D Character Width
+ 0x3E Character Height
+ 0x3F Character Spacing Horizontal
+ 0x40 Character Spacing Vertical
+ 0x41 Unicode Character Set
+ 0x42 Font 7-Segment
+ 0x43 7-Segment Direct Map
+ 0x44 Font 14-Segment
+ 0x45 14-Segment Direct Map
+ 0x46 Display Brightness
+ 0x47 Display Contrast
+ 0x48 Character Attribute
+ 0x49 Attribute Readback
+ 0x4A Attribute Data
+ 0x4B Char Attr Enhance
+ 0x4C Char Attr Underline
+ 0x4D Char Attr Blink
+ 0x80 Bitmap Size X
+ 0x81 Bitmap Size Y
+ 0x83 Bit Depth Format
+ 0x84 Display Orientation
+ 0x85 Palette Report
+ 0x86 Palette Data Size
+ 0x87 Palette Data Offset
+ 0x88 Palette Data
+ 0x8A Blit Report
+ 0x8B Blit Rectangle X1
+ 0x8C Blit Rectangle Y1
+ 0x8D Blit Rectangle X2
+ 0x8E Blit Rectangle Y2
+ 0x8F Blit Data
+ 0x90 Soft Button
+ 0x91 Soft Button ID
+ 0x92 Soft Button Side
+ 0x93 Soft Button Offset 1
+ 0x94 Soft Button Offset 2
+ 0x95 Soft Button Report
+
+64 Medical Instrument
+ 0x00 Undefined
+ 0x01 Medical Ultrasound
+ 0x20 VCR/Acquisition
+ 0x21 Freeze/Thaw
+ 0x22 Clip Store
+ 0x23 Update
+ 0x24 Next
+ 0x25 Save
+ 0x26 Print
+ 0x27 Microphone Enable
+ 0x40 Cine
+ 0x41 Transmit Power
+ 0x42 Volume
+ 0x43 Focus
+ 0x44 Depth
+ 0x60 Soft Step - Primary
+ 0x61 Soft Step - Secondary
+ 0x70 Depth Gain Compensation
+ 0x80 Zoom Select
+ 0x81 Zoom Adjust
+ 0x82 Spectral Doppler Mode Select
+ 0x83 Spectral Doppler Adjust
+ 0x84 Color Doppler Mode Select
+ 0x85 Color Doppler Adjust
+ 0x86 Motion Mode Select
+ 0x87 Motion Mode Adjust
+ 0x88 2-D Mode Select
+ 0x89 2-D Mode Adjust
+ 0xA0 Soft Control Select
+ 0xA1 Soft Control Adjust
+
+128 Monitor
+ 0x00 Undefined
+ 0x01 Monitor Control
+ 0x02 EDID Information
+ 0x03 VDIF Information
+ 0x04 VESA Version
+
+129 Monitor Enumerated Values
+ 0x00 unassigned
+ * ENUM %d
+
+130 VESA Virtual Controls
+ 0x01 Degauss
+ 0x10 Brightness
+ 0x12 Contrast
+ 0x16 Red Video Gain
+ 0x18 Green Video Gain
+ 0x1A Blue Video Gain
+ 0x1C Focus
+ 0x20 Horizontal Position
+ 0x22 Horizontal Size
+ 0x24 Horizontal Pincushion
+ 0x26 Horizontal Pincushion Balance
+ 0x28 Horizontal Misconvergence
+ 0x2A Horizontal Linearity
+ 0x2C Horizontal Linearity Balance
+ 0x30 Vertical Position
+ 0x32 Vertical Size
+ 0x34 Vertical Pincushion
+ 0x36 Vertical Pincushion Balance
+ 0x38 Vertical Misconvergence
+ 0x3A Vertical Linearity
+ 0x3C Vertical Linearity Balance
+ 0x40 Parallelogram Distortion
+ 0x42 Trapezoidal Distortion
+ 0x44 Tilt
+ 0x46 Top Corner Distortion Control
+ 0x48 Top Corner Distortion Balance
+ 0x4A Bottom Corner Distortion Control
+ 0x4C Bottom Corner Distortion Balance
+ 0x56 Horizontal Moiré
+ 0x58 Vertical Moiré
+ 0x5E Input Level Select
+ 0x60 Input Source Select
+ 0x6C Red Video Black Level
+ 0x6E Green Video Black Level
+ 0x70 Blue Video Black Level
+ 0xA2 Auto Size Center
+ 0xA4 Polarity Horizontal Synchronization
+ 0xA6 Polarity Vertical Synchronization
+ 0xA8 Synchronization Type
+ 0xAA Screen Orientation
+ 0xAC Horizontal Frequency
+ 0xAE Vertical Frequency
+ 0xB0 Settings
+ 0xCA On Screen Display
+ 0xD4 Stereo Mode
+
+132 Power Device
+ 0x00 Undefined
+ 0x01 iName
+ 0x02 PresentStatus
+ 0x03 ChangedStatus
+ 0x04 UPS
+ 0x05 PowerSupply
+ 0x10 BatterySystem
+ 0x11 BatterySystemID
+ 0x12 Battery
+ 0x13 BatteryID
+ 0x14 Charger
+ 0x15 ChargerID
+ 0x16 PowerConverter
+ 0x17 PowerConverterID
+ 0x18 OutletSystem
+ 0x19 OutletSystemID
+ 0x1A Input
+ 0x1B InputID
+ 0x1C Output
+ 0x1D OutputID
+ 0x1E Flow
+ 0x1F FlowID
+ 0x20 Outlet
+ 0x21 OutletID
+ 0x22 Gang
+ 0x23 GangID
+ 0x24 PowerSummary
+ 0x25 PowerSummeryID
+ 0x30 Voltage
+ 0x31 Current
+ 0x32 Frequency
+ 0x33 ApparentPower
+ 0x34 ActivePower
+ 0x35 PercentLoad
+ 0x36 Temperature
+ 0x37 Humidity
+ 0x38 BadCount
+ 0x40 ConfigVoltage
+ 0x41 ConfigCurrent
+ 0x42 ConfigFrequency
+ 0x43 ConfigApparentPower
+ 0x44 ConfigActivePower
+ 0x45 ConfigPercentLoad
+ 0x46 ConfigTemperature
+ 0x47 ConfigHumidity
+ 0x50 SwitchOnControl
+ 0x51 SwitchOffControl
+ 0x52 ToggleControl
+ 0x53 LowVoltageTransfer
+ 0x54 HighVoltageTransfer
+ 0x55 DelayBeforeReboot
+ 0x56 DelayBeforeStartup
+ 0x57 DelayBeforeShutdown
+ 0x58 Test
+ 0x59 ModuleReset
+ 0x5A AudibleAlarmControl
+ 0x60 Present
+ 0x61 Good
+ 0x62 InternalFailure
+ 0x63 VoltageOutOfRange
+ 0x64 FrequencyOutOfRange
+ 0x65 Overload
+ 0x66 OverCharged
+ 0x67 OverTemperature
+ 0x68 ShutdownRequested
+ 0x69 ShutdownImminent
+ 0x6A Reserved
+ 0x6B SwitchOn/Off
+ 0x6C Switchable
+ 0x6D Used
+ 0x6E Boost
+ 0x6F Buck
+ 0x70 Initialized
+ 0x71 Tested
+ 0x72 Awaiting Power
+ 0x73 CommunicationLost
+ 0xFD iManufacturer
+ 0xFE iProduct
+ 0xFF iSerialNumber
+
+133 Battery System
+ 0x00 Undefined
+ 0x01 SMBBatteryMode
+ 0x02 SMBBatteryStatus
+ 0x03 SMBAlarmWarning
+ 0x04 SMBChargerMode
+ 0x05 SMBChargerStatus
+ 0x06 SMBChargerSpecInfo
+ 0x07 SMBSelectorState
+ 0x08 SMBSelectorPresets
+ 0x09 SMBSelectorInfo
+ 0x10 OptionalMfgFunction1
+ 0x11 OptionalMfgFunction2
+ 0x12 OptionalMfgFunction3
+ 0x13 OptionalMfgFunction4
+ 0x14 OptionalMfgFunction5
+ 0x15 ConnectionToSMBus
+ 0x16 OutputConnection
+ 0x17 ChargerConnection
+ 0x18 BatteryInsertion
+ 0x19 Usenext
+ 0x1A OKToUse
+ 0x1B BatterySupported
+ 0x1C SelectorRevision
+ 0x1D ChargingIndicator
+ 0x28 ManufacturerAccess
+ 0x29 RemainingCapacityLimit
+ 0x2A RemainingTimeLimit
+ 0x2B AtRate
+ 0x2C CapacityMode
+ 0x2D BroadcastToCharger
+ 0x2E PrimaryBattery
+ 0x2F ChargeController
+ 0x40 TerminateCharge
+ 0x41 TermminateDischarge
+ 0x42 BelowRemainingCapacityLimit
+ 0x43 RemainingTimeLimitExpired
+ 0x44 Charging
+ 0x45 Discharging
+ 0x46 FullyCharged
+ 0x47 FullyDischarged
+ 0x48 ConditioningFlag
+ 0x49 AtRateOK
+ 0x4A SMBErrorCode
+ 0x4B NeedReplacement
+ 0x60 AtRateTimeToFull
+ 0x61 AtRateTimeToEmpty
+ 0x62 AverageCurrent
+ 0x63 Maxerror
+ 0x64 RelativeStateOfCharge
+ 0x65 AbsoluteStateOfCharge
+ 0x66 RemainingCapacity
+ 0x67 FullChargeCapacity
+ 0x68 RunTimeToEmpty
+ 0x69 AverageTimeToEmpty
+ 0x6A AverageTimeToFull
+ 0x6B CycleCount
+ 0x80 BattPackModelLevel
+ 0x81 InternalChargeController
+ 0x82 PrimaryBatterySupport
+ 0x83 DesignCapacity
+ 0x84 SpecificationInfo
+ 0x85 ManufacturerDate
+ 0x86 SerialNumber
+ 0x87 iManufacturerName
+ 0x88 iDevicename
+ 0x89 iDeviceChemistery
+ 0x8A ManufacturerData
+ 0x8B Rechargeable
+ 0x8C WarningCapacityLimit
+ 0x8D CapacityGranularity1
+ 0x8E CapacityGranularity2
+ 0x8F iOEMInformation
+ 0xC0 InhibitCharge
+ 0xC1 EnablePolling
+ 0xC2 ResetToZero
+ 0xD0 ACPresent
+ 0xD1 BatteryPresent
+ 0xD2 PowerFail
+ 0xD3 AlarmInhibited
+ 0xD4 ThermistorUnderRange
+ 0xD5 ThermistorHot
+ 0xD6 ThermistorCold
+ 0xD7 ThermistorOverRange
+ 0xD8 VoltageOutOfRange
+ 0xD9 CurrentOutOfRange
+ 0xDA CurrentNotRegulated
+ 0xDB VoltageNotRegulated
+ 0xDC MasterMode
+ 0xF0 ChargerSelectorSupport
+ 0xF1 ChargerSpec
+ 0xF2 Level2
+ 0xF3 Level3
+
+140 Bar Code Scanner
+ 0x00 Undefined
+ 0x01 Bar Code Badge Reader
+ 0x02 Bar Code Scanner
+ 0x03 Dumb Bar Code Scanner
+ 0x04 Cordless Scanner Base
+ 0x05 Bar Code Scanner Cradle
+ 0x10 Attribute Report
+ 0x11 Settings Report
+ 0x12 Scanned Data Report
+ 0x13 Raw Scanned Data Report
+ 0x14 Trigger Report
+ 0x15 Status Report
+ 0x16 UPC/EAN Control Report
+ 0x17 EAN 2/3 Label Control Report
+ 0x18 Code 39 Control Report
+ 0x19 Interleaved 2 of 5 Control Report
+ 0x1A Standard 2 of 5 Control Report
+ 0x1B MSI Plessey Control Report
+ 0x1C Codabar Control Report
+ 0x1D Code 128 Control Report
+ 0x1E Misc 1D Control Report
+ 0x1F 2D Control Report
+ 0x30 Aiming/Pointer Mode
+ 0x31 Bar Code Present Sensor
+ 0x32 Class 1A Laser
+ 0x33 Class 2 Laser
+ 0x34 Heater Present
+ 0x35 Contact Scanner
+ 0x36 Electronic Article Surveillance Notification
+ 0x37 Constant Electronic Article
+ 0x38 Error Indication
+ 0x39 Fixed Beeper
+ 0x3A Good Decode Indication
+ 0x3B Hands Free Scanning
+ 0x3C Intrinsically Safe
+ 0x3D Klasse Eins Laser
+ 0x3E Long Range Scanner
+ 0x3F Mirror Speed Control
+ 0x40 Not On File Indication
+ 0x41 Programmable Beeper
+ 0x42 Triggerless
+ 0x43 Wand
+ 0x44 Water Resistant
+ 0x45 Multi-Range Scanner
+ 0x46 Proximity Sensor
+ 0x4D Fragment Decoding
+ 0x4E Scanner Read Confidence
+ 0x4F Data Prefix
+ 0x50 Prefix AIMI
+ 0x51 Prefix None
+ 0x52 Prefix Proprietary
+ 0x55 Active Time
+ 0x56 Aiming Laser Pattern
+ 0x57 Bar Code Present
+ 0x58 Beeper State
+ 0x59 Laser On Time
+ 0x5A Laser State
+ 0x5B Lockout Timeout
+ 0x5C Motor State
+ 0x5D Motor Timeout
+ 0x5E Power On Reset Scanner
+ 0x5F Prevent Read of Barcodes
+ 0x60 Initiate Barcode Read
+ 0x61 Trigger State
+ 0x62 Trigger Mode
+ 0x63 Trigger Mode Blinking Laser On
+ 0x64 Trigger Mode Continuous Laser On
+ 0x65 Trigger Mode Laser on while Pulled
+ 0x66 Trigger Mode Laser stays on after Trigger release
+ 0x6D Commit Parameters to NVM
+ 0x6E Parameter Scanning
+ 0x6F Parameters Changed
+ 0x70 Set parapeter default values
+ 0x75 Scanner In Cradle
+ 0x76 Scanner In Range
+ 0x7A Aim Duration
+ 0x7B Good Read Lamp Duration
+ 0x7C Good Read Lamp Intensity
+ 0x7D Good Read LED
+ 0x7E Good Read Tone Frequence
+ 0x7F Good Read Tone Length
+ 0x80 Good Read Tone Volume
+ 0x82 No Read Message
+ 0x83 Not On File Volume
+ 0x84 Powerup Beep
+ 0x85 Sound Error Beep
+ 0x86 Sound Good Read Beep
+ 0x87 Sound Not On File Beep
+ 0x88 Good Read When to Write
+ 0x89 GRWTI After Decode
+ 0x8A GRWTI Beep/Lamp after transmit
+ 0x8B GRWTI No Beep/Lamp use at all
+ 0x91 Bookland EAN
+ 0x92 Convert EAN 8 to 13 Type
+ 0x93 Convert UPC A to EAN-13
+ 0x94 Convert UPC-E to A
+ 0x95 EAN-13
+ 0x96 EAN-8
+ 0x97 EAN-99 128_Mandatory
+ 0x98 EAN-99 P5/128_Optional
+ 0x9A UPC/EAN
+ 0x9B UPC/EAN Coupon Code
+ 0x9C UPC/EAN Periodicals
+ 0x9D UPC-A
+ 0x9E UPC-A with 128 Mandatory
+ 0x9F UPC-A with 128 Optional
+ 0xA0 UPC-A with P5 Optional
+ 0xA1 UPC-E
+ 0xA2 UPC-E1
+ 0xA9 Periodical
+ 0xAA Periodical Auto-Discriminate + 2
+ 0xAB Periodical Only Decode with + 2
+ 0xAC Periodical Ignore + 2
+ 0xAD Periodical Auto-Discriminate + 5
+ 0xAE Periodical Only Decode with + 5
+ 0xAF Periodical Ignore + 5
+ 0xB0 Check
+ 0xB1 Check Disable Price
+ 0xB2 Check Enable 4 digit Price
+ 0xB3 Check Enable 5 digit Price
+ 0xB4 Check Enable European 4 digit Price
+ 0xB5 Check European 5 digit Price
+ 0xB7 EAN Two Label
+ 0xB8 EAN Three Label
+ 0xB9 EAN 8 Flag Digit 1
+ 0xBA EAN 8 Flag Digit 2
+ 0xBB EAN 8 Flag Digit 3
+ 0xBC EAN 13 Flag Digit 1
+ 0xBD EAN 13 Flag Digit 2
+ 0xBE EAN 13 Flag Digit 3
+ 0xBF Add EAN 2/3 Label Definition
+ 0xC0 Clear all EAN 2/3 Label Definitions
+ 0xC3 Codabar
+ 0xC4 Code 128
+ 0xC7 Code 39
+ 0xC8 Code 93
+ 0xC9 Full ASCII Conversion
+ 0xCA Interleaved 2 of 5
+ 0xCB Italian Pharmacy Code
+ 0xCC MSI/Plessey
+ 0xCD Standard 2 of 5 IATA
+ 0xCE Standard 2 of 5
+ 0xD3 Transmit Start/Stop
+ 0xD4 Tri-Optic
+ 0xD5 UCC/EAN-128
+ 0xD6 Check Digit
+ 0xD7 Check Digit Disable
+ 0xD8 Check Digit Enable Interleaved 2 of 5 OPCC
+ 0xD9 Check Digit Enable Interleaved 2 of 5 USS
+ 0xDA Check Digit Enable Standard 2 of 5 OPCC
+ 0xDB Check Digit Enable Standard 2 of 5 USS
+ 0xDC Check Digit Enable One MSI Plessey
+ 0xDD Check Digit Enable Two MSI Plessey
+ 0xDE Check Digit Codabar Enable
+ 0xDF Check Digit Code 39 Enable
+ 0xF0 Transmit Check Digit
+ 0xF1 Disable Check Digit Transmit
+ 0xF2 Enable Check Digit Transmit
+ 0xFB Symbology Identifier 1
+ 0xFC Symbology Identifier 2
+ 0xFD Symbology Identifier 3
+ 0xFE Decoded Data
+ 0xFF Decode Data Continued
+ 0x100 Bar Space Data
+ 0x101 Scanner Data Accuracy
+ 0x102 Raw Data Polarity
+ 0x103 Polarity Inverted Bar Code
+ 0x104 Polarity Normal Bar Code
+ 0x106 Minimum Length to Decode
+ 0x107 Maximum Length to Decode
+ 0x108 First Discrete Length to Decode
+ 0x109 Second Discrete Length to Decode
+ 0x10A Data Length Method
+ 0x10B DL Method Read any
+ 0x10C DL Method Check in Range
+ 0x10D DL Method Check for Discrete
+ 0x110 Aztec Code
+ 0x111 BC412
+ 0x112 Channel Code
+ 0x113 Code 16
+ 0x114 Code 32
+ 0x115 Code 49
+ 0x116 Code One
+ 0x117 Colorcode
+ 0x118 Data Matrix
+ 0x119 MaxiCode
+ 0x11A MicroPDF
+ 0x11B PDF-417
+ 0x11C PosiCode
+ 0x11D QR Code
+ 0x11E SuperCode
+ 0x11F UltraCode
+ 0x120 USD-5 (Slug Code)
+ 0x121 VeriCode
+
+141 Weighing Device
+ 0x00 Undefined
+ 0x01 Weighing Device
+ 0x20 Scale Device
+ 0x21 Scale Class I Metric
+ 0x22 Scale Class I Metric
+ 0x23 Scale Class II Metric
+ 0x24 Scale Class III Metric
+ 0x25 Scale Class IIIL Metric
+ 0x26 Scale Class IV Metric
+ 0x27 Scale Class III English
+ 0x28 Scale Class IIIL English
+ 0x29 Scale Class IV English
+ 0x2A Scale Class Generic
+ 0x30 Scale Attribute Report
+ 0x31 Scale Control Report
+ 0x32 Scale Data Report
+ 0x33 Scale Status Report
+ 0x34 Scale Weight Limit Report
+ 0x35 Scale Statistics Report
+ 0x40 Data Weight
+ 0x41 Data Scaling
+ 0x50 Weight Unit
+ 0x51 Weight Unit Milligram
+ 0x52 Weight Unit Gram
+ 0x53 Weight Unit Kilogram
+ 0x54 Weight Unit Carats
+ 0x55 Weight Unit Taels
+ 0x56 Weight Unit Grains
+ 0x57 Weight Unit Pennyweights
+ 0x58 Weight Unit Metric Ton
+ 0x59 Weight Unit Avoir Ton
+ 0x5A Weight Unit Troy Ounce
+ 0x5B Weight Unit Ounce
+ 0x5C Weight Unit Pound
+ 0x60 Calibration Count
+ 0x61 Re-Zero Count
+ 0x70 Scale Status
+ 0x71 Scale Status Fault
+ 0x72 Scale Status Stable at Center of Zero
+ 0x73 Scale Status In Motion
+ 0x74 Scale Status Weight Stable
+ 0x75 Scale Status Under Zero
+ 0x76 Scale Status Over Weight Limit
+ 0x77 Scale Status Requires Rezeroing
+ 0x80 Zero Scale
+ 0x81 Enforced Zero Return
+
+142 Magnetic Stripe Reader
+ 0x00 Undefined
+ 0x01 MSR Device Read-Only
+ 0x11 Track 1 Length
+ 0x12 Track 2 Length
+ 0x13 Track 3 Length
+ 0x14 Track JIS Length
+ 0x20 Track Data
+ 0x21 Track 1 Data
+ 0x22 Track 2 Data
+ 0x23 Track 3 Data
+ 0x24 Track JIS Data
+
+144 Camera Control
+
+145 Arcade Device
+
+# Some Microsoft non-standard extensions
+0xFF00 Microsoft
+ 0xE9 Base Up
+ 0xEA Base Down
diff --git a/share/mk/Makefile b/share/mk/Makefile
new file mode 100644
index 0000000..3d58f28
--- /dev/null
+++ b/share/mk/Makefile
@@ -0,0 +1,17 @@
+# $FreeBSD$
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+
+FILES= bsd.README
+FILES+= bsd.compat.mk bsd.cpu.mk bsd.dep.mk bsd.doc.mk bsd.endian.mk
+FILES+= bsd.files.mk bsd.incs.mk bsd.info.mk bsd.init.mk
+FILES+= bsd.kmod.mk
+FILES+= bsd.lib.mk bsd.libnames.mk bsd.links.mk bsd.man.mk bsd.nls.mk
+FILES+= bsd.obj.mk bsd.own.mk
+FILES+= bsd.port.mk bsd.port.options.mk bsd.port.post.mk
+FILES+= bsd.port.pre.mk bsd.port.subdir.mk bsd.prog.mk
+FILES+= bsd.snmpmod.mk bsd.subdir.mk bsd.sys.mk bsd.symver.mk
+FILES+= sys.mk version_gen.awk
+NO_OBJ=
+FILESDIR= ${BINDIR}/mk
+
+.include <bsd.prog.mk>
diff --git a/share/mk/bsd.README b/share/mk/bsd.README
new file mode 100644
index 0000000..2c8a8cd
--- /dev/null
+++ b/share/mk/bsd.README
@@ -0,0 +1,361 @@
+# @(#)bsd.README 8.2 (Berkeley) 4/2/94
+# $FreeBSD$
+
+This is the README file for the "include" files for the FreeBSD
+source tree. The files are installed in /usr/share/mk, and are by
+convention, named with the suffix ".mk". These files store several
+build options and should be handled with caution.
+
+Note, this file is not intended to replace reading through the .mk
+files for anything tricky.
+
+There are two main types of make include files. One type is the generally
+usable make include files, such as bsd.prog.mk and bsd.lib.mk. The other is
+the internal make include files, such as bsd.files.mk and bsd.man.mk, which
+can not/should not be used directly but are used by the other make include
+files. In most cases it is only interesting to include bsd.prog.mk or
+bsd.lib.mk.
+
+bsd.cpu.mk - sets CPU/arch-related variables
+bsd.dep.mk - handle Makefile dependencies
+bsd.doc.mk - building troff system documents
+bsd.files.mk - install of general purpose files
+bsd.incs.mk - install of include files
+bsd.info.mk - building GNU Info hypertext system
+bsd.init.mk - initialization for the make include files
+bsd.kmod.mk - building loadable kernel modules
+bsd.lib.mk - support for building libraries
+bsd.libnames.mk - define library names
+bsd.links.mk - install of links (sym/hard)
+bsd.man.mk - install of manual pages and their links
+bsd.nls.mk - build and install of NLS catalogs
+bsd.obj.mk - creating 'obj' directories and cleaning up
+bsd.own.mk - define common variables
+bsd.port.mk - building ports
+bsd.port.post.mk - building ports
+bsd.port.pre.mk - building ports
+bsd.port.subdir.mk - targets for building subdirectories for ports
+bsd.prog.mk - building programs from source files
+bsd.snmpmod.mk - building modules for the SNMP daemon bsnmpd
+bsd.subdir.mk - targets for building subdirectories
+bsd.sys.mk - common settings used for building FreeBSD sources
+sys.mk - default rules for all makes
+
+This file does not document bsd.port*.mk. They are documented in ports(7).
+
+See also make(1), mkdep(1), style.Makefile(5) and `PMake - A
+Tutorial', located in /usr/share/doc/psd/12.make.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+Random things worth knowing about this document:
+
+If appropriate when documenting the variables the default value is
+indicated using square brackets e.g. [gzip].
+In some cases the default value depend on other values (e.g. system
+architecture). In these cases the most common value is indicated.
+
+This document contains some simple examples of the usage of the BSD make
+include files. For more examples look at the makefiles in the FreeBSD
+source tree.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+RANDOM THINGS WORTH KNOWING:
+
+The files are like C-style #include files, and pretty much behave like
+you'd expect. The syntax is slightly different in that a single '.' is
+used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
+
+One difference that will save you lots of debugging time is that inclusion
+of the file is normally done at the *end* of the Makefile. The reason for
+this is because .mk files often modify variables and behavior based on the
+values of variables set in the Makefile. To make this work, remember that
+the FIRST target found is the target that is used, i.e. if the Makefile has:
+
+ a:
+ echo a
+ a:
+ echo a number two
+
+the command "make a" will echo "a". To make things confusing, the SECOND
+variable assignment is the overriding one, i.e. if the Makefile has:
+
+ a= foo
+ a= bar
+
+ b:
+ echo ${a}
+
+the command "make b" will echo "bar". This is for compatibility with the
+way the V7 make behaved.
+
+It's fairly difficult to make the BSD .mk files work when you're building
+multiple programs in a single directory. It's a lot easier split up the
+programs than to deal with the problem. Most of the agony comes from making
+the "obj" directory stuff work right, not because we switch to a new version
+of make. So, don't get mad at us, figure out a better way to handle multiple
+architectures so we can quit using the symbolic link stuff. (Imake doesn't
+count.)
+
+The file .depend in the source directory is expected to contain dependencies
+for the source files. This file is read automatically by make after reading
+the Makefile.
+
+The variable DESTDIR works as before. It's not set anywhere but will change
+the tree where the file gets installed.
+
+The profiled libraries are no longer built in a different directory than
+the regular libraries. A new suffix, ".po", is used to denote a profiled
+object.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <sys.mk> has the default rules for all makes, in the BSD
+environment or otherwise. You probably don't want to touch this file.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.man.mk> handles installing manual pages and their
+links.
+
+It has three targets:
+
+ all-man:
+ build manual pages.
+ maninstall:
+ install the manual pages and their links.
+ manlint:
+ verify the validity of manual pages.
+
+It sets/uses the following variables:
+
+MANDIR Base path for manual installation.
+
+MANGRP Manual group.
+
+MANOWN Manual owner.
+
+MANMODE Manual mode.
+
+MANSUBDIR Subdirectory under the manual page section, i.e. "/vax"
+ or "/tahoe" for machine specific manual pages.
+
+MAN The manual pages to be installed (use a .1 - .9 suffix).
+
+MLINKS List of manual page links (using a .1 - .9 suffix). The
+ linked-to file must come first, the linked file second,
+ and there may be multiple pairs. The files are soft-linked.
+
+The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
+it exists.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.own.mk> contains the owners, groups, etc. for both
+manual pages and binaries.
+
+It has no targets.
+
+It sets/uses the following variables:
+
+BINGRP Binary group.
+
+BINOWN Binary owner.
+
+BINMODE Binary mode.
+
+MANDIR Base path for manual installation.
+
+MANGRP Manual group.
+
+MANOWN Manual owner.
+
+MANMODE Manual mode.
+
+This file is generally useful when building your own Makefiles so that
+they use the same default owners etc. as the rest of the tree.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.prog.mk> handles building programs from one or
+more source files, along with their manual pages. It has a limited number
+of suffixes, consistent with the current needs of the BSD tree.
+
+It has seven targets:
+
+ all:
+ build the program and its manual page
+ clean:
+ remove the program and any object files.
+ cleandir:
+ remove all of the files removed by the target clean, as
+ well as .depend, tags, and any manual pages.
+ depend:
+ make the dependencies for the source files, and store
+ them in the file .depend.
+ install:
+ install the program and its manual pages; if the Makefile
+ does not itself define the target install, the targets
+ beforeinstall and afterinstall may also be used to cause
+ actions immediately before and after the install target
+ is executed.
+ lint:
+ run lint on the source files
+ tags:
+ create a tags file for the source files.
+
+It sets/uses the following variables:
+
+BINGRP Binary group.
+
+BINOWN Binary owner.
+
+BINMODE Binary mode.
+
+CLEANFILES Additional files to remove and
+CLEANDIRS additional directories to remove during clean and cleandir
+ targets. "rm -f" and "rm -rf" used respectively.
+
+CFLAGS Flags to the compiler when creating C objects.
+
+FILES A list of non-executable files.
+ The installation is controlled by the FILESNAME, FILESOWN,
+ FILESGRP, FILESMODE, FILESDIR variables that can be
+ further specialized by FILES<VAR>_<file>.
+
+LDADD Additional loader objects. Usually used for libraries.
+ For example, to load with the compatibility and utility
+ libraries, use:
+
+ LDFILES=-lutil -lcompat
+
+LDFLAGS Additional loader flags.
+
+LINKS The list of binary links; should be full pathnames, the
+ linked-to file coming first, followed by the linked
+ file. The files are hard-linked. For example, to link
+ /bin/test and /bin/[, use:
+
+ LINKS= ${DESTDIR}/bin/test ${DESTDIR}/bin/[
+
+MAN Manual pages (should end in .1 - .9). If no MAN variable
+ is defined, "MAN=${PROG}.1" is assumed.
+
+PROG The name of the program to build. If not supplied, nothing
+ is built.
+
+PROG_CXX If defined, the name of the program to build. Also
+ causes <bsd.prog.mk> to link the program with the
+ standard C++ library. PROG_CXX overrides the value
+ of PROG if PROG is also set.
+
+PROGNAME The name that the above program will be installed as, if
+ different from ${PROG}.
+
+SRCS List of source files to build the program. If SRCS is not
+ defined, it's assumed to be ${PROG}.c or, if PROG_CXX is
+ defined, ${PROG_CXX}.cc.
+
+DPADD Additional dependencies for the program. Usually used for
+ libraries. For example, to depend on the compatibility and
+ utility libraries use:
+
+ SRCLIB=${LIBCOMPAT} ${LIBUTIL}
+
+ There is a predefined identifier for each (non-profiled,
+ non-shared) library and object. Library file names are
+ transformed to identifiers by removing the extension and
+ converting to upper case.
+
+ There are no special identifiers for profiled or shared
+ libraries or objects. The identifiers for the standard
+ libraries are used in DPADD. This works correctly iff all
+ the libraries are built at the same time. Unfortunately,
+ it causes unnecessary relinks to shared libraries when
+ only the static libraries have changed. Dependencies on
+ shared libraries should be only on the library version
+ numbers.
+
+STRIP The flag passed to the install program to cause the binary
+ to be stripped. This is to be used when building your
+ own install script so that the entire system can be made
+ stripped/not-stripped using a single nob.
+
+SUBDIR A list of subdirectories that should be built as well.
+ Each of the targets will execute the same target in the
+ subdirectories.
+
+SCRIPTS A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
+ The installation is controlled by the SCRIPTSNAME, SCRIPTSOWN,
+ SCRIPTSGRP, SCRIPTSMODE, SCRIPTSDIR variables that can be
+ further specialized by SCRIPTS<VAR>_<script>.
+
+The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
+if it exists, as well as the include file <bsd.man.mk>.
+
+Some simple examples:
+
+To build foo from foo.c with a manual page foo.1, use:
+
+ PROG= foo
+
+ .include <bsd.prog.mk>
+
+To build foo from foo.c with a manual page foo.2, add the line:
+
+ MAN= foo.2
+
+If foo does not have a manual page at all, add the line:
+
+ NO_MAN=
+
+If foo has multiple source files, add the line:
+
+ SRCS= a.c b.c c.c d.c
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.subdir.mk> contains the default targets for building
+subdirectories. It has the same seven targets as <bsd.prog.mk>: all, clean,
+cleandir, depend, install, lint, and tags. For all of the directories
+listed in the variable SUBDIRS, the specified directory will be visited
+and the target made. There is also a default target which allows the
+command "make subdir" where subdir is any directory listed in the variable
+SUBDIRS.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.lib.mk> has support for building libraries. It has
+the same seven targets as <bsd.prog.mk>: all, clean, cleandir, depend,
+install, lint, and tags. It has a limited number of suffixes, consistent
+with the current needs of the BSD tree.
+
+It sets/uses the following variables:
+
+LIBDIR Target directory for libraries.
+
+LINTLIBDIR Target directory for lint libraries.
+
+LIBGRP Library group.
+
+LIBOWN Library owner.
+
+LIBMODE Library mode.
+
+LDADD Additional loader objects.
+
+MAN The manual pages to be installed (use a .1 - .9 suffix).
+
+SRCS List of source files to build the library. Suffix types
+ .s, .c, and .f are supported. Note, .s files are preferred
+ to .c files of the same name. (This is not the default for
+ versions of make.)
+
+The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
+if it exists, as well as the include file <bsd.man.mk>.
+
+It has rules for building profiled objects; profiled libraries are
+built by default.
+
+Libraries are ranlib'd before installation.
diff --git a/share/mk/bsd.compat.mk b/share/mk/bsd.compat.mk
new file mode 100644
index 0000000..6a86871
--- /dev/null
+++ b/share/mk/bsd.compat.mk
@@ -0,0 +1,41 @@
+# $FreeBSD$
+
+.if !defined(BURN_BRIDGES)
+.for oldnew in \
+ NOATM:NO_ATM \
+ NOCLEANDIR:NO_CLEANDIR \
+ NOCRYPT:NO_CRYPT \
+ NODOCCOMPRESS:NO_DOCCOMPRESS \
+ NOEXTRADEPEND:NO_EXTRADEPEND \
+ NOFORTH:NO_FORTH \
+ NOFSCHG:NO_FSCHG \
+ NOGAMES:NO_GAMES \
+ NOHTML:NO_HTML \
+ NOINET6:NO_INET6 \
+ NOINFO:NO_INFO \
+ NOINFOCOMPRESS:NO_INFOCOMPRESS \
+ NOINSTALLLIB:NO_INSTALLLIB \
+ NOLIBPTHREAD:NO_LIBPTHREAD \
+ NOLIBTHR:NO_LIBTHR \
+ NOLINT:NO_LINT \
+ NOMAN:NO_MAN \
+ NOMANCOMPRESS:NO_MANCOMPRESS \
+ NOMLINKS:NO_MLINKS \
+ NOOBJ:NO_OBJ \
+ NOPAM:NO_PAM \
+ NOPIC:NO_PIC \
+ NOPROFILE:NO_PROFILE \
+ NO_RCMNDS:NO_RCMDS \
+ NOSHARE:NO_SHARE \
+ NOSHARED:NO_SHARED \
+ NOTAGS:NO_TAGS
+.for old in ${oldnew:C/:.*//}
+.for new in ${oldnew:C/.*://}
+.if defined(${old}) && !defined(${new})
+.warning ${old} is deprecated in favour of ${new}
+${new}= ${${old}}
+.endif
+.endfor
+.endfor
+.endfor
+.endif
diff --git a/share/mk/bsd.cpu.mk b/share/mk/bsd.cpu.mk
new file mode 100644
index 0000000..631d054
--- /dev/null
+++ b/share/mk/bsd.cpu.mk
@@ -0,0 +1,222 @@
+# $FreeBSD$
+
+# Set default CPU compile flags and baseline CPUTYPE for each arch. The
+# compile flags must support the minimum CPU type for each architecture but
+# may tune support for more advanced processors.
+
+.if !defined(CPUTYPE) || empty(CPUTYPE)
+_CPUCFLAGS =
+. if ${MACHINE_ARCH} == "i386"
+MACHINE_CPU = i486
+. elif ${MACHINE_ARCH} == "amd64"
+MACHINE_CPU = amd64 sse2 sse
+. elif ${MACHINE_ARCH} == "ia64"
+MACHINE_CPU = itanium
+. elif ${MACHINE_ARCH} == "powerpc"
+MACHINE_CPU = aim
+. elif ${MACHINE_ARCH} == "sparc64"
+. elif ${MACHINE_ARCH} == "arm"
+MACHINE_CPU = arm
+. elif ${MACHINE_ARCH} == "mips"
+MACHINE_CPU = mips
+. endif
+.else
+
+# Handle aliases (not documented in make.conf to avoid user confusion
+# between e.g. i586 and pentium)
+
+. if ${MACHINE_ARCH} == "i386"
+. if ${CPUTYPE} == "nocona"
+CPUTYPE = prescott
+. elif ${CPUTYPE} == "core" || ${CPUTYPE} == "core2"
+CPUTYPE = prescott
+. elif ${CPUTYPE} == "p4"
+CPUTYPE = pentium4
+. elif ${CPUTYPE} == "p4m"
+CPUTYPE = pentium4m
+. elif ${CPUTYPE} == "p3"
+CPUTYPE = pentium3
+. elif ${CPUTYPE} == "p3m"
+CPUTYPE = pentium3m
+. elif ${CPUTYPE} == "p-m"
+CPUTYPE = pentium-m
+. elif ${CPUTYPE} == "p2"
+CPUTYPE = pentium2
+. elif ${CPUTYPE} == "i686"
+CPUTYPE = pentiumpro
+. elif ${CPUTYPE} == "i586/mmx"
+CPUTYPE = pentium-mmx
+. elif ${CPUTYPE} == "i586"
+CPUTYPE = pentium
+. elif ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || \
+ ${CPUTYPE} == "k8"
+CPUTYPE = athlon-mp
+. elif ${CPUTYPE} == "k7"
+CPUTYPE = athlon
+. endif
+. elif ${MACHINE_ARCH} == "amd64"
+. if ${CPUTYPE} == "prescott" || ${CPUTYPE} == "core2"
+CPUTYPE = nocona
+. endif
+. endif
+
+###############################################################################
+# Logic to set up correct gcc optimization flag. This must be included
+# after /etc/make.conf so it can react to the local value of CPUTYPE
+# defined therein. Consult:
+# http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html
+# http://gcc.gnu.org/onlinedocs/gcc/IA_002d64-Options.html
+# http://gcc.gnu.org/onlinedocs/gcc/RS_002f6000-and-PowerPC-Options.html
+# http://gcc.gnu.org/onlinedocs/gcc/MIPS-Options.html
+# http://gcc.gnu.org/onlinedocs/gcc/SPARC-Options.html
+# http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html
+
+. if ${MACHINE_ARCH} == "i386"
+. if ${CPUTYPE} == "crusoe"
+_CPUCFLAGS = -march=i686 -falign-functions=0 -falign-jumps=0 -falign-loops=0
+. elif ${CPUTYPE} == "k5"
+_CPUCFLAGS = -march=pentium
+. else
+_CPUCFLAGS = -march=${CPUTYPE}
+. endif # GCC on 'i386'
+. if ${CPUTYPE} == "crusoe"
+_ICC_CPUCFLAGS = -tpp6 -xiM
+. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \
+ ${CPUTYPE} == "athlon-4"
+_ICC_CPUCFLAGS = -tpp6 -xiMK
+. elif ${CPUTYPE} == "athlon-tbird" || ${CPUTYPE} == "athlon"
+_ICC_CPUCFLAGS = -tpp6 -xiM
+. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2" || ${CPUTYPE} == "k6"
+_ICC_CPUCFLAGS = -tpp6 -xi
+. elif ${CPUTYPE} == "k5"
+_ICC_CPUCFLAGS = -tpp5
+. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m"
+_ICC_CPUCFLAGS = -tpp7 -xiMKW
+. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m" || \
+ ${CPUTYPE} == "pentium-m"
+_ICC_CPUCFLAGS = -tpp6 -xiMK
+. elif ${CPUTYPE} == "pentium2" || ${CPUTYPE} == "pentiumpro"
+_ICC_CPUCFLAGS = -tpp6 -xiM
+. elif ${CPUTYPE} == "pentium-mmx"
+_ICC_CPUCFLAGS = -tpp5 -xM
+. elif ${CPUTYPE} == "pentium"
+_ICC_CPUCFLAGS = -tpp5
+. else
+_ICC_CPUCFLAGS =
+. endif # ICC on 'i386'
+. elif ${MACHINE_ARCH} == "amd64"
+_CPUCFLAGS = -march=${CPUTYPE}
+. elif ${MACHINE_ARCH} == "arm"
+. if ${CPUTYPE} == "xscale"
+#XXX: gcc doesn't seem to like -mcpu=xscale, and dies while rebuilding itself
+#_CPUCFLAGS = -mcpu=xscale
+_CPUCFLAGS = -march=armv5te -D__XSCALE__
+. else
+_CPUCFLAGS = -mcpu=${CPUTYPE}
+. endif
+. elif ${MACHINE_ARCH} == "powerpc"
+. if ${CPUTYPE} == "e500"
+MACHINE_CPU = booke
+_CPUCFLAGS = -Wa,-me500 -msoft-float
+. endif
+. elif ${MACHINE_ARCH} == "mips"
+. if ${CPUTYPE} == "mips32"
+_CPUCFLAGS = -march=mips32
+. elif ${CPUTYPE} == "mips32r2"
+_CPUCFLAGS = -march=mips32r2
+. elif ${CPUTYPE} == "mips64"
+_CPUCFLAGS = -march=mips64
+. elif ${CPUTYPE} == "mips64r2"
+_CPUCFLAGS = -march=mips64r2
+. elif ${CPUTYPE} == "mips4kc"
+_CPUCFLAGS = -march=4kc
+. elif ${CPUTYPE} == "mips24kc"
+_CPUCFLAGS = -march=24kc
+. endif
+. endif
+
+# Set up the list of CPU features based on the CPU type. This is an
+# unordered list to make it easy for client makefiles to test for the
+# presence of a CPU feature.
+
+. if ${MACHINE_ARCH} == "i386"
+. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64"
+MACHINE_CPU = athlon-xp athlon k7 3dnow sse2 sse mmx k6 k5 i586 i486 i386
+. elif ${CPUTYPE} == "athlon-mp" || ${CPUTYPE} == "athlon-xp" || \
+ ${CPUTYPE} == "athlon-4"
+MACHINE_CPU = athlon-xp athlon k7 3dnow sse mmx k6 k5 i586 i486 i386
+. elif ${CPUTYPE} == "athlon" || ${CPUTYPE} == "athlon-tbird"
+MACHINE_CPU = athlon k7 3dnow mmx k6 k5 i586 i486 i386
+. elif ${CPUTYPE} == "k6-3" || ${CPUTYPE} == "k6-2"
+MACHINE_CPU = 3dnow mmx k6 k5 i586 i486 i386
+. elif ${CPUTYPE} == "k6"
+MACHINE_CPU = mmx k6 k5 i586 i486 i386
+. elif ${CPUTYPE} == "k5"
+MACHINE_CPU = k5 i586 i486 i386
+. elif ${CPUTYPE} == "c3"
+MACHINE_CPU = 3dnow mmx i586 i486 i386
+. elif ${CPUTYPE} == "c3-2"
+MACHINE_CPU = sse mmx i586 i486 i386
+. elif ${CPUTYPE} == "c7"
+MACHINE_CPU = sse3 sse2 sse i686 mmx i586 i486 i386
+. elif ${CPUTYPE} == "prescott"
+MACHINE_CPU = sse3 sse2 sse i686 mmx i586 i486 i386
+. elif ${CPUTYPE} == "pentium4" || ${CPUTYPE} == "pentium4m" || ${CPUTYPE} == "pentium-m"
+MACHINE_CPU = sse2 sse i686 mmx i586 i486 i386
+. elif ${CPUTYPE} == "pentium3" || ${CPUTYPE} == "pentium3m"
+MACHINE_CPU = sse i686 mmx i586 i486 i386
+. elif ${CPUTYPE} == "pentium2"
+MACHINE_CPU = i686 mmx i586 i486 i386
+. elif ${CPUTYPE} == "pentiumpro"
+MACHINE_CPU = i686 i586 i486 i386
+. elif ${CPUTYPE} == "pentium-mmx"
+MACHINE_CPU = mmx i586 i486 i386
+. elif ${CPUTYPE} == "pentium"
+MACHINE_CPU = i586 i486 i386
+. elif ${CPUTYPE} == "i486"
+MACHINE_CPU = i486 i386
+. elif ${CPUTYPE} == "i386"
+MACHINE_CPU = i386
+. endif
+. elif ${MACHINE_ARCH} == "amd64"
+. if ${CPUTYPE} == "opteron" || ${CPUTYPE} == "athlon64" || ${CPUTYPE} == "k8"
+MACHINE_CPU = k8 3dnow
+. elif ${CPUTYPE} == "nocona"
+MACHINE_CPU = sse3
+. endif
+MACHINE_CPU += amd64 sse2 sse mmx
+. elif ${MACHINE_ARCH} == "ia64"
+. if ${CPUTYPE} == "itanium"
+MACHINE_CPU = itanium
+. endif
+. endif
+.endif
+
+.if ${MACHINE_ARCH} == "arm" && defined(TARGET_BIG_ENDIAN)
+CFLAGS += -mbig-endian
+LDFLAGS += -mbig-endian
+LD += -EB
+.endif
+
+.if ${MACHINE_ARCH} == "mips"
+. if defined(TARGET_BIG_ENDIAN)
+CFLAGS += -EB
+LDFLAGS += -Wl,-EB
+LD += -EB
+. else
+CFLAGS += -EL
+LDFLAGS += -Wl,-EL
+LD += -EL
+. endif
+CFLAGS += -msoft-float -G0 -mno-dsp -mabicalls
+.endif
+
+# NB: COPTFLAGS is handled in /usr/src/sys/conf/kern.pre.mk
+
+.if !defined(NO_CPU_CFLAGS)
+. if ${CC} == "icc"
+CFLAGS += ${_ICC_CPUCFLAGS}
+. else
+CFLAGS += ${_CPUCFLAGS}
+. endif
+.endif
diff --git a/share/mk/bsd.dep.mk b/share/mk/bsd.dep.mk
new file mode 100644
index 0000000..cdcadb0
--- /dev/null
+++ b/share/mk/bsd.dep.mk
@@ -0,0 +1,198 @@
+# $FreeBSD$
+#
+# The include file <bsd.dep.mk> handles Makefile dependencies.
+#
+#
+# +++ variables +++
+#
+# CTAGS A tags file generation program [gtags]
+#
+# CTAGSFLAGS Options for ctags(1) [not set]
+#
+# DEPENDFILE dependencies file [.depend]
+#
+# GTAGSFLAGS Options for gtags(1) [-o]
+#
+# HTAGSFLAGS Options for htags(1) [not set]
+#
+# MKDEP Options for ${MKDEPCMD} [not set]
+#
+# MKDEPCMD Makefile dependency list program [mkdep]
+#
+# SRCS List of source files (c, c++, assembler)
+#
+# DPSRCS List of source files which are needed for generating
+# dependencies, ${SRCS} are always part of it.
+#
+# +++ targets +++
+#
+# cleandepend:
+# Remove depend and tags file
+#
+# depend:
+# Make the dependencies for the source files, and store
+# them in the file ${DEPENDFILE}.
+#
+# tags:
+# In "ctags" mode, create a tags file for the source files.
+# In "gtags" mode, create a (GLOBAL) gtags file for the
+# source files. If HTML is defined, htags(1) is also run
+# after gtags(1).
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.dep.mk cannot be included directly.
+.endif
+
+CTAGS?= gtags
+CTAGSFLAGS?=
+GTAGSFLAGS?= -o
+HTAGSFLAGS?=
+
+.if ${CC} != "cc"
+MKDEPCMD?= CC='${CC}' mkdep
+.else
+MKDEPCMD?= mkdep
+.endif
+DEPENDFILE?= .depend
+
+# Keep `tags' here, before SRCS are mangled below for `depend'.
+.if !target(tags) && defined(SRCS) && !defined(NO_TAGS)
+tags: ${SRCS}
+.if ${CTAGS:T} == "ctags"
+ @${CTAGS} ${CTAGSFLAGS} -f /dev/stdout \
+ ${.ALLSRC:N*.h} | sed "s;${.CURDIR}/;;" > ${.TARGET}
+.elif ${CTAGS:T} == "gtags"
+ @cd ${.CURDIR} && ${CTAGS} ${GTAGSFLAGS} ${.OBJDIR}
+.if defined(HTML)
+ @cd ${.CURDIR} && htags ${HTAGSFLAGS} -d ${.OBJDIR} ${.OBJDIR}
+.endif
+.endif
+.endif
+
+.if defined(SRCS)
+CLEANFILES?=
+
+.if !exists(${.OBJDIR}/${DEPENDFILE})
+.for _S in ${SRCS:N*.[hly]}
+${_S:R}.o: ${_S}
+.endfor
+.endif
+
+.for _LSRC in ${SRCS:M*.l:N*/*}
+.for _LC in ${_LSRC:R}.c
+${_LC}: ${_LSRC}
+ ${LEX} -t ${LFLAGS} ${.ALLSRC} > ${.TARGET}
+.if !exists(${.OBJDIR}/${DEPENDFILE})
+${_LC:R}.o: ${_LC}
+.endif
+SRCS:= ${SRCS:S/${_LSRC}/${_LC}/}
+CLEANFILES+= ${_LC}
+.endfor
+.endfor
+
+.for _YSRC in ${SRCS:M*.y:N*/*}
+.for _YC in ${_YSRC:R}.c
+SRCS:= ${SRCS:S/${_YSRC}/${_YC}/}
+CLEANFILES+= ${_YC}
+.if !empty(YFLAGS:M-d) && !empty(SRCS:My.tab.h)
+.ORDER: ${_YC} y.tab.h
+${_YC} y.tab.h: ${_YSRC}
+ ${YACC} ${YFLAGS} ${.ALLSRC}
+ cp y.tab.c ${_YC}
+CLEANFILES+= y.tab.c y.tab.h
+.elif !empty(YFLAGS:M-d)
+.for _YH in ${_YC:R}.h
+.ORDER: ${_YC} ${_YH}
+${_YC} ${_YH}: ${_YSRC}
+ ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
+SRCS+= ${_YH}
+CLEANFILES+= ${_YH}
+.endfor
+.else
+${_YC}: ${_YSRC}
+ ${YACC} ${YFLAGS} -o ${_YC} ${.ALLSRC}
+.endif
+.if !exists(${.OBJDIR}/${DEPENDFILE})
+${_YC:R}.o: ${_YC}
+.endif
+.endfor
+.endfor
+.endif
+
+.if !target(depend)
+.if defined(SRCS)
+depend: beforedepend ${DEPENDFILE} afterdepend
+
+# Different types of sources are compiled with slightly different flags.
+# Split up the sources, and filter out headers and non-applicable flags.
+.if ${CC} == "icc"
+MKDEP_CFLAGS= ${CFLAGS:M-X*} ${CFLAGS:M-[BID]*}
+MKDEP_CXXFLAGS= ${CXXFLAGS:M-X*} ${CXXFLAGS:M-[BID]*}
+MKDEP_OBJCFLAGS=${OBJCFLAGS:M-X*} ${OBJCFLAGS:M-[BID]*}
+.else
+MKDEP_CFLAGS= ${CFLAGS:M-nostdinc*} ${CFLAGS:M-[BID]*}
+MKDEP_CXXFLAGS= ${CXXFLAGS:M-nostdinc*} ${CXXFLAGS:M-[BID]*}
+MKDEP_OBJCFLAGS=${OBJCFLAGS:M-nostdinc*} ${OBJCFLAGS:M-[BID]*} ${OBJCFLAGS:M-Wno-import*}
+.endif
+
+DPSRCS+= ${SRCS}
+${DEPENDFILE}: ${DPSRCS}
+ rm -f ${DEPENDFILE}
+.if !empty(DPSRCS:M*.[cS])
+ ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} \
+ ${MKDEP_CFLAGS} ${.ALLSRC:M*.[cS]}
+.endif
+.if !empty(DPSRCS:M*.cc) || !empty(DPSRCS:M*.C) || !empty(DPSRCS:M*.cpp) || \
+ !empty(DPSRCS:M*.cxx)
+ ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} \
+ ${MKDEP_CXXFLAGS} \
+ ${.ALLSRC:M*.cc} ${.ALLSRC:M*.C} ${.ALLSRC:M*.cpp} ${.ALLSRC:M*.cxx}
+.endif
+.if !empty(DPSRCS:M*.m)
+ ${MKDEPCMD} -f ${DEPENDFILE} -a ${MKDEP} \
+ ${MKDEP_OBJCFLAGS} ${.ALLSRC:M*.m}
+.endif
+.if target(_EXTRADEPEND)
+_EXTRADEPEND: .USE
+${DEPENDFILE}: _EXTRADEPEND
+.endif
+
+.ORDER: ${DEPENDFILE} afterdepend
+.else
+depend: beforedepend afterdepend
+.endif
+.if !target(beforedepend)
+beforedepend:
+.else
+.ORDER: beforedepend ${DEPENDFILE}
+.ORDER: beforedepend afterdepend
+.endif
+.if !target(afterdepend)
+afterdepend:
+.endif
+.endif
+
+.if !target(cleandepend)
+cleandepend:
+.if defined(SRCS)
+.if ${CTAGS:T} == "ctags"
+ rm -f ${DEPENDFILE} tags
+.elif ${CTAGS:T} == "gtags"
+ rm -f ${DEPENDFILE} GPATH GRTAGS GSYMS GTAGS
+.if defined(HTML)
+ rm -rf HTML
+.endif
+.endif
+.endif
+.endif
+
+.if !target(checkdpadd) && (defined(DPADD) || defined(LDADD))
+_LDADD_FROM_DPADD= ${DPADD:C;^/usr/lib/lib(.*)\.a$;-l\1;}
+_LDADD_CANONICALIZED= ${LDADD:S/$//}
+checkdpadd:
+.if ${_LDADD_FROM_DPADD} != ${_LDADD_CANONICALIZED}
+ @echo ${.CURDIR}
+ @echo "DPADD -> ${_LDADD_FROM_DPADD}"
+ @echo "LDADD -> ${_LDADD_CANONICALIZED}"
+.endif
+.endif
diff --git a/share/mk/bsd.doc.mk b/share/mk/bsd.doc.mk
new file mode 100644
index 0000000..539d4c3
--- /dev/null
+++ b/share/mk/bsd.doc.mk
@@ -0,0 +1,196 @@
+# from: @(#)bsd.doc.mk 5.3 (Berkeley) 1/2/91
+# $FreeBSD$
+#
+# The include file <bsd.doc.mk> handles installing BSD troff documents.
+#
+#
+# +++ variables +++
+#
+# DCOMPRESS_CMD Program to compress troff documents. Output is to stdout.
+# [${COMPRESS_CMD}]
+#
+# DESTDIR Change the tree where the documents get installed. [not set]
+#
+# DOC Document name. [paper]
+#
+# EXTRA Extra files (not SRCS) that make up the document. [not set]
+#
+# LPR Printer command. [lpr]
+#
+# MACROS Macro packages used to build the document. [not set]
+#
+# NO_DOCCOMPRESS If you do not want formatted troff documents to be
+# compressed when they are installed. [not set]
+#
+# PRINTERDEVICE Indicates which output formats will be generated
+# (ascii, ps, html). [ascii]
+#
+# SRCDIR Directory where source files live. [${.CURDIR}]
+#
+# SRCS List of source files. [not set]
+#
+# TRFLAGS Additional flags to groff(1). [not set]
+#
+# USE_EQN If set, preprocess with eqn(1). [not set]
+#
+# USE_PIC If set, preprocess with pic(1). [not set]
+#
+# USE_REFER If set, preprocess with refer(1). [not set]
+#
+# USE_SOELIM If set, preprocess with soelim(1). [not set]
+#
+# USE_TBL If set, preprocess with tbl(1). [not set]
+#
+# VOLUME Volume the document belongs to. [not set]
+
+.include <bsd.init.mk>
+
+PRINTERDEVICE?= ascii
+
+BIB?= bib
+GREMLIN?= grn
+GRIND?= vgrind -f
+INDXBIB?= indxbib
+PIC?= pic
+REFER?= refer
+.for _dev in ${PRINTERDEVICE:Mascii}
+ROFF.ascii?= groff -Tascii ${TRFLAGS} -mtty-char ${MACROS} -o${PAGES}
+.endfor
+.for _dev in ${PRINTERDEVICE:Nascii}
+ROFF.${_dev}?= groff -T${_dev} ${TRFLAGS} ${MACROS} -o${PAGES}
+.endfor
+SOELIM?= soelim
+TBL?= tbl
+
+DOC?= paper
+LPR?= lpr
+
+.if defined(USE_EQN)
+TRFLAGS+= -e
+.endif
+.if defined(USE_PIC)
+TRFLAGS+= -p
+.endif
+.if defined(USE_REFER)
+TRFLAGS+= -R
+.endif
+.if defined(USE_SOELIM)
+TRFLAGS+= -I${SRCDIR}
+.endif
+.if defined(USE_TBL)
+TRFLAGS+= -t
+.endif
+
+DCOMPRESS_EXT?= ${COMPRESS_EXT}
+DCOMPRESS_CMD?= ${COMPRESS_CMD}
+.for _dev in ${PRINTERDEVICE:Mhtml}
+DFILE.html= ${DOC}.html
+.endfor
+.for _dev in ${PRINTERDEVICE:Nhtml}
+.if defined(NO_DOCCOMPRESS)
+DFILE.${_dev}= ${DOC}.${_dev}
+.else
+DFILE.${_dev}= ${DOC}.${_dev}${DCOMPRESS_EXT}
+.endif
+.endfor
+
+PAGES?= 1-
+
+UNROFF?= unroff
+HTML_SPLIT?= yes
+UNROFFFLAGS?= -fhtml
+.if ${HTML_SPLIT} == "yes"
+UNROFFFLAGS+= split=1
+.endif
+
+# Compatibility mode flag for groff. Use this when formatting documents with
+# Berkeley me macros (orig_me(7)).
+COMPAT?= -C
+
+.PATH: ${.CURDIR} ${SRCDIR}
+
+.for _dev in ${PRINTERDEVICE}
+all: ${DFILE.${_dev}}
+.endfor
+
+.if !target(print)
+.for _dev in ${PRINTERDEVICE}
+print: ${DFILE.${_dev}}
+.endfor
+print:
+.for _dev in ${PRINTERDEVICE}
+.if defined(NO_DOCCOMPRESS)
+ ${LPR} ${DFILE.${_dev}}
+.else
+ ${DCOMPRESS_CMD} -d ${DFILE.${_dev}} | ${LPR}
+.endif
+.endfor
+.endif
+
+.for _dev in ${PRINTERDEVICE:Nascii:Nps:Nhtml}
+CLEANFILES+= ${DOC}.${_dev} ${DOC}.${_dev}${DCOMPRESS_EXT}
+.endfor
+CLEANFILES+= ${DOC}.ascii ${DOC}.ascii${DCOMPRESS_EXT} \
+ ${DOC}.ps ${DOC}.ps${DCOMPRESS_EXT} \
+ ${DOC}.html ${DOC}-*.html
+
+realinstall:
+.for _dev in ${PRINTERDEVICE:Mhtml}
+ cd ${SRCDIR}; \
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${DOC}*.html ${DESTDIR}${BINDIR}/${VOLUME}
+.endfor
+.for _dev in ${PRINTERDEVICE:Nhtml}
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${DFILE.${_dev}} ${DESTDIR}${BINDIR}/${VOLUME}
+.endfor
+
+spell: ${SRCS}
+ (cd ${.CURDIR}; spell ${SRCS} ) | sort | \
+ comm -23 - ${.CURDIR}/spell.ok > ${DOC}.spell
+
+BINDIR?= /usr/share/doc
+BINMODE= 444
+
+SRCDIR?= ${.CURDIR}
+
+.if defined(EXTRA) && !empty(EXTRA)
+_stamp.extra: ${EXTRA}
+ touch ${.TARGET}
+.endif
+
+CLEANFILES+= _stamp.extra
+.for _dev in ${PRINTERDEVICE:Nhtml}
+.if !target(${DFILE.${_dev}})
+.if target(_stamp.extra)
+${DFILE.${_dev}}: _stamp.extra
+.endif
+${DFILE.${_dev}}: ${SRCS}
+.if defined(NO_DOCCOMPRESS)
+ ${ROFF.${_dev}} ${.ALLSRC:N_stamp.extra} > ${.TARGET}
+.else
+ ${ROFF.${_dev}} ${.ALLSRC:N_stamp.extra} | ${DCOMPRESS_CMD} > ${.TARGET}
+.endif
+.endif
+.endfor
+
+.for _dev in ${PRINTERDEVICE:Mhtml}
+.if !target(${DFILE.html})
+.if target(_stamp.extra)
+${DFILE.html}: _stamp.extra
+.endif
+${DFILE.html}: ${SRCS}
+.if defined(MACROS) && !empty(MACROS)
+ cd ${SRCDIR}; ${UNROFF} ${MACROS} ${UNROFFFLAGS} \
+ document=${DOC} ${SRCS}
+.else # unroff(1) requires a macro package as an argument
+ cd ${SRCDIR}; ${UNROFF} -ms ${UNROFFFLAGS} \
+ document=${DOC} ${SRCS}
+.else
+.endif
+.endif
+.endfor
+
+DISTRIBUTION?= doc
+
+.include <bsd.obj.mk>
diff --git a/share/mk/bsd.endian.mk b/share/mk/bsd.endian.mk
new file mode 100644
index 0000000..c2b141f
--- /dev/null
+++ b/share/mk/bsd.endian.mk
@@ -0,0 +1,14 @@
+# $FreeBSD$
+
+.if ${MACHINE_ARCH} == "amd64" || \
+ ${MACHINE_ARCH} == "i386" || \
+ ${MACHINE_ARCH} == "ia64" || \
+ (${MACHINE_ARCH} == "arm" && !defined(TARGET_BIG_ENDIAN)) || \
+ (${MACHINE_ARCH} == "mips" && !defined(TARGET_BIG_ENDIAN))
+TARGET_ENDIANNESS= 1234
+.elif ${MACHINE_ARCH} == "powerpc" || \
+ ${MACHINE_ARCH} == "sparc64" || \
+ ${MACHINE_ARCH} == "arm" || \
+ ${MACHINE_ARCH} == "mips"
+TARGET_ENDIANNESS= 4321
+.endif
diff --git a/share/mk/bsd.files.mk b/share/mk/bsd.files.mk
new file mode 100644
index 0000000..240f958
--- /dev/null
+++ b/share/mk/bsd.files.mk
@@ -0,0 +1,69 @@
+# $FreeBSD$
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.files.mk cannot be included directly.
+.endif
+
+FILESGROUPS?= FILES
+
+.if !target(buildfiles)
+.for group in ${FILESGROUPS}
+buildfiles: ${${group}}
+.endfor
+.endif
+
+all: buildfiles
+
+.if !target(installfiles)
+.for group in ${FILESGROUPS}
+.if defined(${group}) && !empty(${group})
+
+${group}OWN?= ${SHAREOWN}
+${group}GRP?= ${SHAREGRP}
+${group}MODE?= ${SHAREMODE}
+${group}DIR?= ${BINDIR}
+
+_${group}FILES=
+.for file in ${${group}}
+.if defined(${group}OWN_${file:T}) || defined(${group}GRP_${file:T}) || \
+ defined(${group}MODE_${file:T}) || defined(${group}DIR_${file:T}) || \
+ defined(${group}NAME_${file:T})
+${group}OWN_${file:T}?= ${${group}OWN}
+${group}GRP_${file:T}?= ${${group}GRP}
+${group}MODE_${file:T}?= ${${group}MODE}
+${group}DIR_${file:T}?= ${${group}DIR}
+.if defined(${group}NAME)
+${group}NAME_${file:T}?= ${${group}NAME}
+.else
+${group}NAME_${file:T}?= ${file:T}
+.endif
+installfiles: _${group}INS_${file:T}
+_${group}INS_${file:T}: ${file}
+ ${INSTALL} -o ${${group}OWN_${.ALLSRC:T}} \
+ -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \
+ ${.ALLSRC} \
+ ${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}}
+.else
+_${group}FILES+= ${file}
+.endif
+.endfor
+.if !empty(_${group}FILES)
+installfiles: _${group}INS
+_${group}INS: ${_${group}FILES}
+.if defined(${group}NAME)
+ ${INSTALL} -o ${${group}OWN} -g ${${group}GRP} \
+ -m ${${group}MODE} ${.ALLSRC} \
+ ${DESTDIR}${${group}DIR}/${${group}NAME}
+.else
+ ${INSTALL} -o ${${group}OWN} -g ${${group}GRP} \
+ -m ${${group}MODE} ${.ALLSRC} ${DESTDIR}${${group}DIR}
+.endif
+.endif
+
+.endif # defined(${group}) && !empty(${group})
+.endfor
+
+.endif # !target(installfiles)
+
+realinstall: installfiles
+.ORDER: beforeinstall installfiles
diff --git a/share/mk/bsd.incs.mk b/share/mk/bsd.incs.mk
new file mode 100644
index 0000000..d51fb17
--- /dev/null
+++ b/share/mk/bsd.incs.mk
@@ -0,0 +1,84 @@
+# $FreeBSD$
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.incs.mk cannot be included directly.
+.endif
+
+.if !defined(NO_INCS) && ${MK_TOOLCHAIN} != "no"
+
+INCSGROUPS?= INCS
+
+.if !target(buildincludes)
+.for group in ${INCSGROUPS}
+buildincludes: ${${group}}
+.endfor
+.endif
+
+all: buildincludes
+
+.if !target(installincludes)
+.for group in ${INCSGROUPS}
+.if defined(${group}) && !empty(${group})
+
+${group}OWN?= ${BINOWN}
+${group}GRP?= ${BINGRP}
+${group}MODE?= ${NOBINMODE}
+${group}DIR?= ${INCLUDEDIR}
+
+_${group}INCS=
+.for header in ${${group}}
+.if defined(${group}OWN_${header:T}) || defined(${group}GRP_${header:T}) || \
+ defined(${group}MODE_${header:T}) || defined(${group}DIR_${header:T}) || \
+ defined(${group}NAME_${header:T})
+${group}OWN_${header:T}?= ${${group}OWN}
+${group}GRP_${header:T}?= ${${group}GRP}
+${group}MODE_${header:T}?= ${${group}MODE}
+${group}DIR_${header:T}?= ${${group}DIR}
+.if defined(${group}NAME)
+${group}NAME_${header:T}?= ${${group}NAME}
+.else
+${group}NAME_${header:T}?= ${header:T}
+.endif
+installincludes: _${group}INS_${header:T}
+_${group}INS_${header:T}: ${header}
+ ${INSTALL} -C -o ${${group}OWN_${.ALLSRC:T}} \
+ -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \
+ ${.ALLSRC} \
+ ${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}}
+.else
+_${group}INCS+= ${header}
+.endif
+.endfor
+.if !empty(_${group}INCS)
+installincludes: _${group}INS
+_${group}INS: ${_${group}INCS}
+.if defined(${group}NAME)
+ ${INSTALL} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
+ ${.ALLSRC} ${DESTDIR}${${group}DIR}/${${group}NAME}
+.else
+ ${INSTALL} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
+ ${.ALLSRC} ${DESTDIR}${${group}DIR}
+.endif
+.endif
+
+.endif # defined(${group}) && !empty(${group})
+.endfor
+
+.if defined(INCSLINKS) && !empty(INCSLINKS)
+installincludes:
+ @set ${INCSLINKS}; \
+ while test $$# -ge 2; do \
+ l=$$1; \
+ shift; \
+ t=${DESTDIR}$$1; \
+ shift; \
+ ${ECHO} $$t -\> $$l; \
+ ln -fs $$l $$t; \
+ done; true
+.endif
+.endif # !target(installincludes)
+
+realinstall: installincludes
+.ORDER: beforeinstall installincludes
+
+.endif # !defined(NO_INCS) && ${MK_TOOLCHAIN} != "no"
diff --git a/share/mk/bsd.info.mk b/share/mk/bsd.info.mk
new file mode 100644
index 0000000..9c3220d
--- /dev/null
+++ b/share/mk/bsd.info.mk
@@ -0,0 +1,199 @@
+# $FreeBSD$
+#
+# The include file <bsd.info.mk> handles installing GNU (tech)info files.
+# Texinfo is a documentation system that uses a single source
+# file to produce both on-line information and printed output.
+#
+#
+# +++ variables +++
+#
+# CLEANFILES Additional files to remove for the clean and cleandir targets.
+#
+# DESTDIR Change the tree where the info files gets installed. [not set]
+#
+# DVIPS A program which convert a TeX DVI file to PostScript [dvips]
+#
+# DVIPS2ASCII A program to convert a PostScript file which was prior
+# converted from a TeX DVI file to ascii/latin1 [dvips2ascii]
+#
+# FORMATS Indicates which output formats will be generated
+# (info, dvi, latin1, ps, html). [info]
+#
+# ICOMPRESS_CMD Program to compress info files. Output is to
+# stdout. [${COMPRESS_CMD}]
+#
+# INFO texinfo files, without suffix. [set in Makefile]
+#
+# INFO2HTML A program for converting GNU info files into HTML files
+# [info2html]
+#
+# INFODIR Base path for GNU's hypertext system
+# called Info (see info(1)). [${SHAREDIR}/info]
+#
+# INFODIRFILE Top level node/index for info files. [dir]
+#
+# INFOGRP Info group. [${SHAREGRP}]
+#
+# INFOMODE Info mode. [${NOBINMODE}]
+#
+# INFOOWN Info owner. [${SHAREOWN}]
+#
+# INFOSECTION Default section (if one could not be found in
+# the Info file). [Miscellaneous]
+#
+# INSTALLINFO A program for installing directory entries from Info
+# file in the ${INFODIR}/${INFODIRFILE}. [install-info]
+#
+# INSTALLINFOFLAGS Options for ${INSTALLINFO} command. [--quiet]
+#
+# INSTALLINFODIRS ???
+#
+# MAKEINFO A program for converting GNU Texinfo files into Info
+# file. [makeinfo]
+#
+# MAKEINFOFLAGS Options for ${MAKEINFO} command. [--no-split]
+#
+# NO_INFOCOMPRESS If you do not want info files be
+# compressed when they are installed. [not set]
+#
+# TEX A program for converting tex files into dvi files [tex]
+#
+#
+# +++ targets +++
+#
+# install:
+# Install the info files.
+#
+#
+# bsd.obj.mk: cleandir and obj
+
+.include <bsd.init.mk>
+
+MAKEINFO?= makeinfo
+MAKEINFOFLAGS+= --no-split # simplify some things, e.g., compression
+SRCDIR?= ${.CURDIR}
+INFODIRFILE?= dir
+INSTALLINFO?= install-info
+INSTALLINFOFLAGS+=--quiet
+INFOSECTION?= Miscellaneous
+ICOMPRESS_CMD?= ${COMPRESS_CMD}
+ICOMPRESS_EXT?= ${COMPRESS_EXT}
+FORMATS?= info
+INFO2HTML?= info2html
+TEX?= tex
+DVIPS?= dvips
+DVIPS2ASCII?= dvips2ascii
+
+.SUFFIXES: ${ICOMPRESS_EXT} .info .texi .texinfo .dvi .ps .latin1 .html
+
+.texi.info .texinfo.info:
+ ${MAKEINFO} ${MAKEINFOFLAGS} -I ${.CURDIR} -I ${SRCDIR} ${.IMPSRC} \
+ -o ${.TARGET}
+
+.texi.dvi .texinfo.dvi:
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC} </dev/null
+# Run again to resolve cross references.
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC} </dev/null
+
+.texinfo.latin1 .texi.latin1:
+ perl -npe 's/(^\s*\\input\s+texinfo\s+)/$$1\n@tex\n\\global\\hsize=120mm\n@end tex\n\n/' ${.IMPSRC} >> ${.IMPSRC:T:R}-la.texi
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
+# Run again to resolve cross references.
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
+ ${DVIPS} -o /dev/stdout ${.IMPSRC:T:R}-la.dvi | \
+ ${DVIPS2ASCII} > ${.TARGET}.new
+ mv -f ${.TARGET}.new ${.TARGET}
+
+.dvi.ps:
+ ${DVIPS} -o ${.TARGET} ${.IMPSRC}
+
+.info.html:
+ ${INFO2HTML} ${.IMPSRC}
+ ln -f ${.TARGET:R}.info.Top.html ${.TARGET}
+
+.PATH: ${.CURDIR} ${SRCDIR}
+
+.for _f in ${FORMATS}
+IFILENS+= ${INFO:S/$/.${_f}/}
+.endfor
+
+.if ${MK_INFO} != "no"
+CLEANFILES+= ${IFILENS}
+.if !defined(NO_INFOCOMPRESS)
+CLEANFILES+= ${IFILENS:S/$/${ICOMPRESS_EXT}/}
+IFILES= ${IFILENS:S/$/${ICOMPRESS_EXT}/:S/.html${ICOMPRESS_EXT}/.html/}
+all: ${IFILES}
+.else
+IFILES= ${IFILENS}
+all: ${IFILES}
+.endif
+.else
+all:
+.endif
+
+.for x in ${IFILENS}
+${x:S/$/${ICOMPRESS_EXT}/}: ${x}
+ ${ICOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
+.endfor
+
+.for x in ${INFO}
+INSTALLINFODIRS+= ${x:S/$/-install/}
+${x:S/$/-install/}:
+.if !empty(.MAKEFLAGS:M-j)
+ lockf -k ${DESTDIR}${INFODIR}/${INFODIRFILE} \
+ ${INSTALLINFO} ${INSTALLINFOFLAGS} \
+ --defsection=${INFOSECTION} \
+ --defentry=${INFOENTRY_${x}} \
+ ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE}
+.else
+ ${INSTALLINFO} ${INSTALLINFOFLAGS} \
+ --defsection=${INFOSECTION} \
+ --defentry=${INFOENTRY_${x}} \
+ ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE}
+.endif
+.endfor
+
+.PHONY: ${INSTALLINFODIRS}
+
+.if defined(SRCS)
+CLEANFILES+= ${INFO}.texi
+${INFO}.texi: ${SRCS}
+ cat ${.ALLSRC} > ${.TARGET}
+.endif
+
+# tex garbage
+.if !empty(FORMATS:Mps) || !empty(FORMATS:Mdvi) || !empty(FORMATS:Mlatin1)
+.for _f in aux cp fn ky log out pg toc tp vr dvi
+CLEANFILES+= ${INFO:S/$/.${_f}/} ${INFO:S/$/-la.${_f}/}
+.endfor
+CLEANFILES+= ${INFO:S/$/-la.texi/}
+.endif
+
+.if !empty(FORMATS:Mhtml)
+CLEANFILES+= ${INFO:S/$/.info.*.html/} ${INFO:S/$/.info/}
+.endif
+
+.if ${MK_INFO} != "no" && defined(INFO)
+install: ${INSTALLINFODIRS}
+.if !empty(IFILES:N*.html)
+ ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
+ ${IFILES:N*.html} ${DESTDIR}${INFODIR}
+.endif
+.if !empty(FORMATS:Mhtml)
+ ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
+ ${INFO:S/$/.info.*.html/} ${DESTDIR}${INFODIR}
+.endif
+.else
+# The indirection in the following is to avoid the null install rule
+# "install:" from being overridden by the implicit .sh rule if there
+# happens to be a source file named install.sh. This assumes that there
+# is no source file named __null_install.sh.
+install: __null_install
+__null_install:
+.endif
+
+.include <bsd.obj.mk>
diff --git a/share/mk/bsd.init.mk b/share/mk/bsd.init.mk
new file mode 100644
index 0000000..72a6de0
--- /dev/null
+++ b/share/mk/bsd.init.mk
@@ -0,0 +1,15 @@
+# $FreeBSD$
+
+# The include file <bsd.init.mk> includes ../Makefile.inc and
+# <bsd.own.mk>; this is used at the top of all <bsd.*.mk> files
+# that actually "build something".
+
+.if !target(__<bsd.init.mk>__)
+__<bsd.init.mk>__:
+.if exists(${.CURDIR}/../Makefile.inc)
+.include "${.CURDIR}/../Makefile.inc"
+.endif
+.include <bsd.compat.mk>
+.include <bsd.own.mk>
+.MAIN: all
+.endif # !target(__<bsd.init.mk>__)
diff --git a/share/mk/bsd.kmod.mk b/share/mk/bsd.kmod.mk
new file mode 100644
index 0000000..9c0434f
--- /dev/null
+++ b/share/mk/bsd.kmod.mk
@@ -0,0 +1,17 @@
+# $FreeBSD$
+
+# Search for kernel source tree in standard places.
+.for _dir in ${.CURDIR}/../.. ${.CURDIR}/../../.. ${.CURDIR}/../../../.. \
+ ${.CURDIR}/../../../../.. /sys /usr/src/sys
+.if !defined(SYSDIR) && exists(${_dir}/kern/) && exists(${_dir}/conf/kmod.mk)
+SYSDIR= ${_dir}
+.endif
+.endfor
+.if !defined(SYSDIR) || !exists(${SYSDIR}/kern/) || \
+ !exists(${SYSDIR}/conf/kmod.mk)
+.error "can't find kernel source tree"
+.endif
+
+.include "${SYSDIR}/conf/kmod.mk"
+
+.include <bsd.sys.mk>
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
new file mode 100644
index 0000000..741c9cb
--- /dev/null
+++ b/share/mk/bsd.lib.mk
@@ -0,0 +1,393 @@
+# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91
+# $FreeBSD$
+#
+
+.include <bsd.init.mk>
+
+# Set up the variables controlling shared libraries. After this section,
+# SHLIB_NAME will be defined only if we are to create a shared library.
+# SHLIB_LINK will be defined only if we are to create a link to it.
+# INSTALL_PIC_ARCHIVE will be defined only if we are to create a PIC archive.
+.if defined(NO_PIC)
+.undef SHLIB_NAME
+.undef INSTALL_PIC_ARCHIVE
+.else
+.if !defined(SHLIB) && defined(LIB)
+SHLIB= ${LIB}
+.endif
+.if !defined(SHLIB_NAME) && defined(SHLIB) && defined(SHLIB_MAJOR)
+SHLIB_NAME= lib${SHLIB}.so.${SHLIB_MAJOR}
+.endif
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME:M*.so.*)
+SHLIB_LINK?= ${SHLIB_NAME:R}
+.endif
+SONAME?= ${SHLIB_NAME}
+.endif
+
+.if defined(CRUNCH_CFLAGS)
+CFLAGS+= ${CRUNCH_CFLAGS}
+.endif
+
+.if ${MK_ASSERT_DEBUG} == "no"
+CFLAGS+= -DNDEBUG
+NO_WERROR=
+.endif
+
+.if defined(DEBUG_FLAGS)
+CFLAGS+= ${DEBUG_FLAGS}
+
+.if !defined(NO_CTF) && (${DEBUG_FLAGS:M-g} != "")
+CTFFLAGS+= -g
+.endif
+.endif
+
+.if !defined(DEBUG_FLAGS)
+STRIP?= -s
+.endif
+
+.include <bsd.libnames.mk>
+
+# prefer .s to a .c, add .po, remove stuff not used in the BSD libraries
+# .So used for PIC object files
+.SUFFIXES:
+.SUFFIXES: .out .o .po .So .S .asm .s .c .cc .cpp .cxx .m .C .f .y .l .ln
+
+.if !defined(PICFLAG)
+.if ${MACHINE_ARCH} == "sparc64"
+PICFLAG=-fPIC
+.else
+PICFLAG=-fpic
+.endif
+.endif
+
+.if ${CC} == "icc"
+PO_FLAG=-p
+.else
+PO_FLAG=-pg
+.endif
+
+.c.po:
+ ${CC} ${PO_FLAG} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.c.So:
+ ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.cc.po .C.po .cpp.po .cxx.po:
+ ${CXX} ${PO_FLAG} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+
+.cc.So .C.So .cpp.So .cxx.So:
+ ${CXX} ${PICFLAG} -DPIC ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+
+.f.po:
+ ${FC} -pg ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.f.So:
+ ${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.m.po:
+ ${OBJC} ${OBJCFLAGS} -pg -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.m.So:
+ ${OBJC} ${PICFLAG} -DPIC ${OBJCFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.s.po .s.So:
+ ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.asm.po:
+ ${CC} -x assembler-with-cpp -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.asm.So:
+ ${CC} -x assembler-with-cpp ${PICFLAG} -DPIC ${CFLAGS} \
+ -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.S.po:
+ ${CC} -DPROF ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.S.So:
+ ${CC} ${PICFLAG} -DPIC ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+all: objwarn
+
+.include <bsd.symver.mk>
+
+# Allow libraries to specify their own version map or have it
+# automatically generated (see bsd.symver.mk above).
+.if ${MK_SYMVER} == "yes" && !empty(VERSION_MAP)
+${SHLIB_NAME}: ${VERSION_MAP}
+LDFLAGS+= -Wl,--version-script=${VERSION_MAP}
+.endif
+
+.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
+OBJS+= ${SRCS:N*.h:R:S/$/.o/}
+.endif
+
+.if defined(LIB) && !empty(LIB)
+_LIBS= lib${LIB}.a
+
+lib${LIB}.a: ${OBJS} ${STATICOBJS}
+ @${ECHO} building static ${LIB} library
+ @rm -f ${.TARGET}
+.if !defined(NM)
+ @${AR} cq ${.TARGET} `lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
+.else
+ @${AR} cq ${.TARGET} `NM='${NM}' lorder ${OBJS} ${STATICOBJS} | tsort -q` ${ARADD}
+.endif
+ ${RANLIB} ${.TARGET}
+.endif
+
+.if !defined(INTERNALLIB)
+
+.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
+_LIBS+= lib${LIB}_p.a
+POBJS+= ${OBJS:.o=.po} ${STATICOBJS:.o=.po}
+
+lib${LIB}_p.a: ${POBJS}
+ @${ECHO} building profiled ${LIB} library
+ @rm -f ${.TARGET}
+.if !defined(NM)
+ @${AR} cq ${.TARGET} `lorder ${POBJS} | tsort -q` ${ARADD}
+.else
+ @${AR} cq ${.TARGET} `NM='${NM}' lorder ${POBJS} | tsort -q` ${ARADD}
+.endif
+ ${RANLIB} ${.TARGET}
+.endif
+
+.if defined(SHLIB_NAME) || \
+ defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
+SOBJS+= ${OBJS:.o=.So}
+.endif
+
+.if defined(SHLIB_NAME)
+_LIBS+= ${SHLIB_NAME}
+
+${SHLIB_NAME}: ${SOBJS}
+ @${ECHO} building shared library ${SHLIB_NAME}
+ @rm -f ${.TARGET} ${SHLIB_LINK}
+.if defined(SHLIB_LINK)
+ @ln -fs ${.TARGET} ${SHLIB_LINK}
+.endif
+.if !defined(NM)
+ @${CC} ${LDFLAGS} -shared -Wl,-x \
+ -o ${.TARGET} -Wl,-soname,${SONAME} \
+ `lorder ${SOBJS} | tsort -q` ${LDADD}
+.else
+ @${CC} ${LDFLAGS} -shared -Wl,-x \
+ -o ${.TARGET} -Wl,-soname,${SONAME} \
+ `NM='${NM}' lorder ${SOBJS} | tsort -q` ${LDADD}
+.endif
+.if defined(CTFMERGE)
+ ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SOBJS}
+.endif
+.endif
+
+.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
+_LIBS+= lib${LIB}_pic.a
+
+lib${LIB}_pic.a: ${SOBJS}
+ @${ECHO} building special pic ${LIB} library
+ @rm -f ${.TARGET}
+ @${AR} cq ${.TARGET} ${SOBJS} ${ARADD}
+ ${RANLIB} ${.TARGET}
+.endif
+
+.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
+LINTLIB= llib-l${LIB}.ln
+_LIBS+= ${LINTLIB}
+LINTOBJS+= ${SRCS:M*.c:.c=.ln}
+
+${LINTLIB}: ${LINTOBJS}
+ @${ECHO} building lint library ${.TARGET}
+ @rm -f ${.TARGET}
+ ${LINT} ${LINTLIBFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
+.endif
+
+.endif # !defined(INTERNALLIB)
+
+all: ${_LIBS}
+
+.if ${MK_MAN} != "no"
+all: _manpages
+.endif
+
+_EXTRADEPEND:
+ @TMP=_depend$$$$; \
+ sed -e 's/^\([^\.]*\).o[ ]*:/\1.o \1.po \1.So:/' < ${DEPENDFILE} \
+ > $$TMP; \
+ mv $$TMP ${DEPENDFILE}
+.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
+.if defined(DPADD) && !empty(DPADD)
+ echo ${SHLIB_NAME}: ${DPADD} >> ${DEPENDFILE}
+.endif
+.endif
+
+.if !target(install)
+
+.if defined(PRECIOUSLIB)
+.if !defined(NO_FSCHG)
+SHLINSTALLFLAGS+= -fschg
+.endif
+SHLINSTALLFLAGS+= -S
+.endif
+
+_INSTALLFLAGS:= ${INSTALLFLAGS}
+.for ie in ${INSTALLFLAGS_EDIT}
+_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
+.endfor
+_SHLINSTALLFLAGS:= ${SHLINSTALLFLAGS}
+.for ie in ${INSTALLFLAGS_EDIT}
+_SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}}
+.endfor
+
+.if !defined(INTERNALLIB)
+realinstall: _libinstall
+.ORDER: beforeinstall _libinstall
+_libinstall:
+.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no"
+ ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} lib${LIB}.a ${DESTDIR}${LIBDIR}
+.endif
+.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
+ ${INSTALL} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} lib${LIB}_p.a ${DESTDIR}${LIBDIR}
+.endif
+.if defined(SHLIB_NAME)
+ ${INSTALL} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
+ ${SHLIB_NAME} ${DESTDIR}${SHLIBDIR}
+.if defined(SHLIB_LINK)
+.if ${SHLIBDIR} == ${LIBDIR}
+ ln -fs ${SHLIB_NAME} ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
+.else
+ ln -fs ${_SHLIBDIRPREFIX}${SHLIBDIR}/${SHLIB_NAME} \
+ ${DESTDIR}${LIBDIR}/${SHLIB_LINK}
+.if exists(${DESTDIR}${LIBDIR}/${SHLIB_NAME})
+ -chflags noschg ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
+ rm -f ${DESTDIR}${LIBDIR}/${SHLIB_NAME}
+.endif
+.endif
+.endif
+.endif
+.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no"
+ ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${LIBDIR}
+.endif
+.if defined(WANT_LINT) && !defined(NO_LINT) && defined(LIB) && !empty(LIB)
+ ${INSTALL} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
+ ${_INSTALLFLAGS} ${LINTLIB} ${DESTDIR}${LINTLIBDIR}
+.endif
+.endif # !defined(INTERNALLIB)
+
+.include <bsd.nls.mk>
+.include <bsd.files.mk>
+.include <bsd.incs.mk>
+.include <bsd.links.mk>
+
+.if ${MK_MAN} != "no"
+realinstall: _maninstall
+.ORDER: beforeinstall _maninstall
+.endif
+
+.endif
+
+.if !target(lint)
+lint: ${SRCS:M*.c}
+ ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
+.endif
+
+.if ${MK_MAN} != "no"
+.include <bsd.man.mk>
+.endif
+
+.include <bsd.dep.mk>
+
+.if !exists(${.OBJDIR}/${DEPENDFILE})
+.if defined(LIB) && !empty(LIB)
+${OBJS} ${STATICOBJS} ${POBJS}: ${SRCS:M*.h}
+.for _S in ${SRCS:N*.[hly]}
+${_S:R}.po: ${_S}
+.endfor
+.endif
+.if defined(SHLIB_NAME) || \
+ defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
+${SOBJS}: ${SRCS:M*.h}
+.for _S in ${SRCS:N*.[hly]}
+${_S:R}.So: ${_S}
+.endfor
+.endif
+.endif
+
+.if !target(clean)
+clean:
+.if defined(CLEANFILES) && !empty(CLEANFILES)
+ rm -f ${CLEANFILES}
+.endif
+.if defined(LIB) && !empty(LIB)
+ rm -f a.out ${OBJS} ${OBJS:S/$/.tmp/} ${STATICOBJS}
+.endif
+.if !defined(INTERNALLIB)
+.if ${MK_PROFILE} != "no" && defined(LIB) && !empty(LIB)
+ rm -f ${POBJS} ${POBJS:S/$/.tmp/}
+.endif
+.if defined(SHLIB_NAME) || \
+ defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
+ rm -f ${SOBJS} ${SOBJS:.So=.so} ${SOBJS:S/$/.tmp/}
+.endif
+.if defined(SHLIB_NAME)
+.if defined(SHLIB_LINK)
+ rm -f ${SHLIB_LINK}
+.endif
+.if defined(LIB) && !empty(LIB)
+ rm -f lib${LIB}.so.* lib${LIB}.so
+.endif
+.endif
+.if defined(WANT_LINT) && defined(LIB) && !empty(LIB)
+ rm -f ${LINTOBJS}
+.endif
+.endif # !defined(INTERNALLIB)
+.if defined(_LIBS) && !empty(_LIBS)
+ rm -f ${_LIBS}
+.endif
+.if defined(CLEANDIRS) && !empty(CLEANDIRS)
+ rm -rf ${CLEANDIRS}
+.endif
+.if !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
+ rm -f ${VERSION_MAP}
+.endif
+.endif
+
+.include <bsd.obj.mk>
+
+.include <bsd.sys.mk>
diff --git a/share/mk/bsd.libnames.mk b/share/mk/bsd.libnames.mk
new file mode 100644
index 0000000..0a364af
--- /dev/null
+++ b/share/mk/bsd.libnames.mk
@@ -0,0 +1,162 @@
+# $FreeBSD$
+
+# The include file <bsd.libnames.mk> define library names.
+# Other include files (e.g. bsd.prog.mk, bsd.lib.mk) include this
+# file where necessary.
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.libnames.mk cannot be included directly.
+.endif
+
+LIBCRT0?= ${DESTDIR}${LIBDIR}/crt0.o
+
+LIBALIAS?= ${DESTDIR}${LIBDIR}/libalias.a
+LIBARCHIVE?= ${DESTDIR}${LIBDIR}/libarchive.a
+LIBASN1?= ${DESTDIR}${LIBDIR}/libasn1.a
+LIBATM?= ${DESTDIR}${LIBDIR}/libatm.a
+LIBAUDITD?= ${DESTDIR}${LIBDIR}/libauditd.a
+LIBAVL?= ${DESTDIR}${LIBDIR}/libavl.a
+LIBBEGEMOT?= ${DESTDIR}${LIBDIR}/libbegemot.a
+.if ${MK_BIND_LIBS} != "no"
+LIBBIND?= ${DESTDIR}${LIBDIR}/libbind.a
+LIBBIND9?= ${DESTDIR}${LIBDIR}/libbind9.a
+.endif
+LIBBLUETOOTH?= ${DESTDIR}${LIBDIR}/libbluetooth.a
+LIBBSDXML?= ${DESTDIR}${LIBDIR}/libbsdxml.a
+LIBBSM?= ${DESTDIR}${LIBDIR}/libbsm.a
+LIBBSNMP?= ${DESTDIR}${LIBDIR}/libbsnmp.a
+LIBBZ2?= ${DESTDIR}${LIBDIR}/libbz2.a
+LIBC?= ${DESTDIR}${LIBDIR}/libc.a
+LIBC_PIC?= ${DESTDIR}${LIBDIR}/libc_pic.a
+LIBCALENDAR?= ${DESTDIR}${LIBDIR}/libcalendar.a
+LIBCAM?= ${DESTDIR}${LIBDIR}/libcam.a
+LIBCOM_ERR?= ${DESTDIR}${LIBDIR}/libcom_err.a
+LIBCOMPAT?= ${DESTDIR}${LIBDIR}/libcompat.a
+LIBCRYPT?= ${DESTDIR}${LIBDIR}/libcrypt.a
+LIBCRYPTO?= ${DESTDIR}${LIBDIR}/libcrypto.a
+LIBCTF?= ${DESTDIR}${LIBDIR}/libctf.a
+LIBCURSES?= ${DESTDIR}${LIBDIR}/libcurses.a
+LIBDEVINFO?= ${DESTDIR}${LIBDIR}/libdevinfo.a
+LIBDEVSTAT?= ${DESTDIR}${LIBDIR}/libdevstat.a
+LIBDIALOG?= ${DESTDIR}${LIBDIR}/libdialog.a
+LIBDISK?= ${DESTDIR}${LIBDIR}/libdisk.a
+LIBDNS?= ${DESTDIR}${LIBDIR}/libdns.a
+LIBDTRACE?= ${DESTDIR}${LIBDIR}/libdtrace.a
+LIBDWARF?= ${DESTDIR}${LIBDIR}/libdwarf.a
+LIBEDIT?= ${DESTDIR}${LIBDIR}/libedit.a
+LIBELF?= ${DESTDIR}${LIBDIR}/libelf.a
+LIBFETCH?= ${DESTDIR}${LIBDIR}/libfetch.a
+LIBFL?= "don't use LIBFL, use LIBL"
+LIBFORM?= ${DESTDIR}${LIBDIR}/libform.a
+LIBFTPIO?= ${DESTDIR}${LIBDIR}/libftpio.a
+LIBG2C?= ${DESTDIR}${LIBDIR}/libg2c.a
+LIBGCC?= ${DESTDIR}${LIBDIR}/libgcc.a
+LIBGCC_PIC?= ${DESTDIR}${LIBDIR}/libgcc_pic.a
+LIBGEOM?= ${DESTDIR}${LIBDIR}/libgeom.a
+LIBGNUREGEX?= ${DESTDIR}${LIBDIR}/libgnuregex.a
+LIBGSSAPI?= ${DESTDIR}${LIBDIR}/libgssapi.a
+LIBGSSAPI_KRB5?= ${DESTDIR}${LIBDIR}/libgssapi_krb5.a
+LIBHDB?= ${DESTDIR}${LIBDIR}/libhdb.a
+LIBHISTORY?= ${DESTDIR}${LIBDIR}/libhistory.a
+LIBHEIMNTLM?= ${DESTDIR}${LIBDIR}/libheimntlm.a
+LIBHX509?= ${DESTDIR}${LIBDIR}/libhx509.a
+LIBIPSEC?= ${DESTDIR}${LIBDIR}/libipsec.a
+.if ${MK_IPX} != "no"
+LIBIPX?= ${DESTDIR}${LIBDIR}/libipx.a
+.endif
+.if ${MK_BIND_LIBS} != "no"
+LIBISC?= ${DESTDIR}${LIBDIR}/libisc.a
+LIBISCCC?= ${DESTDIR}${LIBDIR}/libisccc.a
+LIBISCCFG?= ${DESTDIR}${LIBDIR}/libisccfg.a
+.endif
+LIBKADM5CLNT?= ${DESTDIR}${LIBDIR}/libkadm5clnt.a
+LIBKADM5SRV?= ${DESTDIR}${LIBDIR}/libkadm5srv.a
+LIBKAFS5?= ${DESTDIR}${LIBDIR}/libkafs5.a
+LIBKEYCAP?= ${DESTDIR}${LIBDIR}/libkeycap.a
+LIBKICONV?= ${DESTDIR}${LIBDIR}/libkiconv.a
+LIBKRB5?= ${DESTDIR}${LIBDIR}/libkrb5.a
+LIBKVM?= ${DESTDIR}${LIBDIR}/libkvm.a
+LIBL?= ${DESTDIR}${LIBDIR}/libl.a
+LIBLN?= "don't use LIBLN, use LIBL"
+.if ${MK_BIND} != "no"
+LIBLWRES?= ${DESTDIR}${LIBDIR}/liblwres.a
+.endif
+LIBM?= ${DESTDIR}${LIBDIR}/libm.a
+LIBMAGIC?= ${DESTDIR}${LIBDIR}/libmagic.a
+LIBMD?= ${DESTDIR}${LIBDIR}/libmd.a
+LIBMEMSTAT?= ${DESTDIR}${LIBDIR}/libmemstat.a
+LIBMENU?= ${DESTDIR}${LIBDIR}/libmenu.a
+.if ${MK_SENDMAIL} != "no"
+LIBMILTER?= ${DESTDIR}${LIBDIR}/libmilter.a
+.endif
+LIBMP?= ${DESTDIR}${LIBDIR}/libmp.a
+.if ${MK_NCP} != "no"
+LIBNCP?= ${DESTDIR}${LIBDIR}/libncp.a
+.endif
+LIBNCURSES?= ${DESTDIR}${LIBDIR}/libncurses.a
+LIBNCURSESW?= ${DESTDIR}${LIBDIR}/libncursesw.a
+LIBNETGRAPH?= ${DESTDIR}${LIBDIR}/libnetgraph.a
+LIBNGATM?= ${DESTDIR}${LIBDIR}/libngatm.a
+LIBNVPAIR?= ${DESTDIR}${LIBDIR}/libnvpair.a
+LIBOBJC?= ${DESTDIR}${LIBDIR}/libobjc.a
+LIBOPIE?= ${DESTDIR}${LIBDIR}/libopie.a
+
+# The static PAM library doesn't know its secondary dependencies,
+# so we have to specify them explicitly.
+LIBPAM?= ${DESTDIR}${LIBDIR}/libpam.a
+MINUSLPAM= -lpam
+.if defined(LDFLAGS) && !empty(LDFLAGS:M-static)
+.if ${MK_KERBEROS} != "no"
+LIBPAM+= ${LIBKRB5} ${LIBHX509} ${LIBASN1} ${LIBCRYPTO} ${LIBCRYPT} \
+ ${LIBROKEN} ${LIBCOM_ERR}
+MINUSLPAM+= -lkrb5 -lhx509 -lasn1 -lcrypto -lcrypt -lroken -lcom_err
+.endif
+LIBPAM+= ${LIBRADIUS} ${LIBTACPLUS} ${LIBCRYPT} \
+ ${LIBUTIL} ${LIBOPIE} ${LIBMD}
+MINUSLPAM+= -lradius -ltacplus -lcrypt \
+ -lutil -lopie -lmd
+.if ${MK_OPENSSH} != "no"
+LIBPAM+= ${LIBSSH} ${LIBCRYPTO} ${LIBCRYPT}
+MINUSLPAM+= -lssh -lcrypto -lcrypt
+.endif
+.if ${MK_NIS} != "no"
+LIBPAM+= ${LIBYPCLNT}
+MINUSLPAM+= -lypclnt
+.endif
+.endif
+
+LIBPANEL?= ${DESTDIR}${LIBDIR}/libpanel.a
+LIBPCAP?= ${DESTDIR}${LIBDIR}/libpcap.a
+LIBPMC?= ${DESTDIR}${LIBDIR}/libpmc.a
+LIBPROC?= ${DESTDIR}${LIBDIR}/libproc.a
+LIBPTHREAD?= ${DESTDIR}${LIBDIR}/libpthread.a
+LIBRADIUS?= ${DESTDIR}${LIBDIR}/libradius.a
+LIBREADLINE?= ${DESTDIR}${LIBDIR}/libreadline.a
+LIBROKEN?= ${DESTDIR}${LIBDIR}/libroken.a
+LIBRPCSVC?= ${DESTDIR}${LIBDIR}/librpcsvc.a
+LIBSBUF?= ${DESTDIR}${LIBDIR}/libsbuf.a
+LIBSDP?= ${DESTDIR}${LIBDIR}/libsdp.a
+LIBSMB?= ${DESTDIR}${LIBDIR}/libsmb.a
+LIBSSH?= ${DESTDIR}${LIBDIR}/libssh.a
+LIBSSL?= ${DESTDIR}${LIBDIR}/libssl.a
+LIBSTAND?= ${DESTDIR}${LIBDIR}/libstand.a
+LIBSTDCPLUSPLUS?= ${DESTDIR}${LIBDIR}/libstdc++.a
+LIBTACPLUS?= ${DESTDIR}${LIBDIR}/libtacplus.a
+LIBTERMCAP?= ${DESTDIR}${LIBDIR}/libtermcap.a
+LIBTERMLIB?= "don't use LIBTERMLIB, use LIBTERMCAP"
+LIBTINFO?= "don't use LIBTINFO, use LIBNCURSES"
+LIBUFS?= ${DESTDIR}${LIBDIR}/libufs.a
+LIBUGIDFW?= ${DESTDIR}${LIBDIR}/libugidfw.a
+LIBUMEM?= ${DESTDIR}${LIBDIR}/libumem.a
+LIBUSBHID?= ${DESTDIR}${LIBDIR}/libusbhid.a
+LIBUSB20?= ${DESTDIR}${LIBDIR}/libusb20.a
+LIBUTIL?= ${DESTDIR}${LIBDIR}/libutil.a
+LIBUUTIL?= ${DESTDIR}${LIBDIR}/libuutil.a
+LIBVGL?= ${DESTDIR}${LIBDIR}/libvgl.a
+LIBWRAP?= ${DESTDIR}${LIBDIR}/libwrap.a
+LIBXPG4?= ${DESTDIR}${LIBDIR}/libxpg4.a
+LIBY?= ${DESTDIR}${LIBDIR}/liby.a
+LIBYPCLNT?= ${DESTDIR}${LIBDIR}/libypclnt.a
+LIBZ?= ${DESTDIR}${LIBDIR}/libz.a
+LIBZFS?= ${DESTDIR}${LIBDIR}/libzfs.a
+LIBZPOOL?= ${DESTDIR}${LIBDIR}/libzpool.a
diff --git a/share/mk/bsd.links.mk b/share/mk/bsd.links.mk
new file mode 100644
index 0000000..49f557a
--- /dev/null
+++ b/share/mk/bsd.links.mk
@@ -0,0 +1,31 @@
+# $FreeBSD$
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.links.mk cannot be included directly.
+.endif
+
+afterinstall: _installlinks
+.ORDER: realinstall _installlinks
+_installlinks:
+.if defined(LINKS) && !empty(LINKS)
+ @set ${LINKS}; \
+ while test $$# -ge 2; do \
+ l=${DESTDIR}$$1; \
+ shift; \
+ t=${DESTDIR}$$1; \
+ shift; \
+ ${ECHO} $$t -\> $$l; \
+ ln -f $$l $$t; \
+ done; true
+.endif
+.if defined(SYMLINKS) && !empty(SYMLINKS)
+ @set ${SYMLINKS}; \
+ while test $$# -ge 2; do \
+ l=$$1; \
+ shift; \
+ t=${DESTDIR}$$1; \
+ shift; \
+ ${ECHO} $$t -\> $$l; \
+ ln -fs $$l $$t; \
+ done; true
+.endif
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
new file mode 100644
index 0000000..8602b55
--- /dev/null
+++ b/share/mk/bsd.man.mk
@@ -0,0 +1,250 @@
+# $FreeBSD$
+#
+# The include file <bsd.man.mk> handles installing manual pages and
+# their links.
+#
+#
+# +++ variables +++
+#
+# DESTDIR Change the tree where the man pages gets installed. [not set]
+#
+# MANDIR Base path for manual installation. [${SHAREDIR}/man/man]
+#
+# MANOWN Manual owner. [${SHAREOWN}]
+#
+# MANGRP Manual group. [${SHAREGRP}]
+#
+# MANMODE Manual mode. [${NOBINMODE}]
+#
+# MANSUBDIR Subdirectory under the manual page section, i.e. "/i386"
+# or "/tahoe" for machine specific manual pages.
+#
+# MAN The manual pages to be installed. For sections see
+# variable ${SECTIONS}
+#
+# MCOMPRESS_CMD Program to compress man pages. Output is to
+# stdout. [${COMPRESS_CMD}]
+#
+# MLINKS List of manual page links (using a suffix). The
+# linked-to file must come first, the linked file
+# second, and there may be multiple pairs. The files
+# are hard-linked.
+#
+# NO_MANCOMPRESS If you do not want unformatted manual pages to be
+# compressed when they are installed. [not set]
+#
+# NO_MLINKS If you do not want install manual page links. [not set]
+#
+# MANFILTER command to pipe the raw man page through before compressing
+# or installing. Can be used to do sed substitution.
+#
+# MANBUILDCAT create preformatted manual pages in addition to normal
+# pages. [not set]
+#
+# MROFF_CMD command and flags to create preformatted pages
+#
+# +++ targets +++
+#
+# maninstall:
+# Install the manual pages and their links.
+#
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.man.mk cannot be included directly.
+.endif
+
+MINSTALL?= ${INSTALL} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
+
+CATDIR= ${MANDIR:H:S/$/\/cat/}
+CATEXT= .cat
+MROFF_CMD?= groff -Tascii -mtty-char -man -t
+
+MCOMPRESS_CMD?= ${COMPRESS_CMD}
+MCOMPRESS_EXT?= ${COMPRESS_EXT}
+
+SECTIONS= 1 1aout 2 3 4 5 6 7 8 9
+.SUFFIXES: ${SECTIONS:S/^/./g}
+
+# Backwards compatibility.
+.if !defined(MAN)
+.for __sect in ${SECTIONS}
+.if defined(MAN${__sect}) && !empty(MAN${__sect})
+MAN+= ${MAN${__sect}}
+.endif
+.endfor
+.endif
+
+_manpages:
+all-man: _manpages
+
+.if defined(NO_MANCOMPRESS)
+
+# Make special arrangements to filter to a temporary file at build time
+# for NO_MANCOMPRESS.
+.if defined(MANFILTER)
+FILTEXTENSION= .filt
+.else
+FILTEXTENSION=
+.endif
+
+ZEXT=
+
+.if defined(MANFILTER)
+.if defined(MAN) && !empty(MAN)
+CLEANFILES+= ${MAN:T:S/$/${FILTEXTENSION}/g}
+CLEANFILES+= ${MAN:T:S/$/${CATEXT}${FILTEXTENSION}/g}
+.for __page in ${MAN}
+.for __target in ${__page:T:S/$/${FILTEXTENSION}/g}
+_manpages: ${__target}
+${__target}: ${__page}
+ ${MANFILTER} < ${.ALLSRC} > ${.TARGET}
+.endfor
+.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
+.for __target in ${__page:T:S/$/${CATEXT}${FILTEXTENSION}/g}
+_manpages: ${__target}
+${__target}: ${__page}
+ ${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} > ${.TARGET}
+.endfor
+.endif
+.endfor
+.endif
+.else
+.if defined(MAN) && !empty(MAN)
+CLEANFILES+= ${MAN:T:S/$/${CATEXT}/g}
+.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
+.for __page in ${MAN}
+.for __target in ${__page:T:S/$/${CATEXT}/g}
+_manpages: ${__target}
+${__target}: ${__page}
+ ${MROFF_CMD} ${.ALLSRC} > ${.TARGET}
+.endfor
+.endfor
+.else
+_manpages: ${MAN}
+.endif
+.endif
+.endif
+
+.else
+
+ZEXT= ${MCOMPRESS_EXT}
+
+.if defined(MAN) && !empty(MAN)
+CLEANFILES+= ${MAN:T:S/$/${MCOMPRESS_EXT}/g}
+CLEANFILES+= ${MAN:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g}
+.for __page in ${MAN}
+.for __target in ${__page:T:S/$/${MCOMPRESS_EXT}/}
+_manpages: ${__target}
+${__target}: ${__page}
+.if defined(MANFILTER)
+ ${MANFILTER} < ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
+.else
+ ${MCOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
+.endif
+.endfor
+.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
+.for __target in ${__page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/}
+_manpages: ${__target}
+${__target}: ${__page}
+.if defined(MANFILTER)
+ ${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} | ${MCOMPRESS_CMD} > ${.TARGET}
+.else
+ ${MROFF_CMD} ${.ALLSRC} | ${MCOMPRESS_CMD} > ${.TARGET}
+.endif
+.endfor
+.endif
+.endfor
+.endif
+
+.endif
+
+maninstall: _maninstall
+_maninstall:
+.if defined(MAN) && !empty(MAN)
+_maninstall: ${MAN}
+.if defined(NO_MANCOMPRESS)
+.if defined(MANFILTER)
+.for __page in ${MAN}
+ ${MINSTALL} ${__page:T:S/$/${FILTEXTENSION}/g} \
+ ${DESTDIR}${MANDIR}${__page:E}${MANSUBDIR}/${__page}
+.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
+ ${MINSTALL} ${__page:T:S/$/${CATEXT}${FILTEXTENSION}/g} \
+ ${DESTDIR}${CATDIR}${__page:E}${MANSUBDIR}/${__page}
+.endif
+.endfor
+.else
+ @set ${.ALLSRC:C/\.([^.]*)$/.\1 \1/}; \
+ while : ; do \
+ case $$# in \
+ 0) break;; \
+ 1) echo "warn: missing extension: $$1"; break;; \
+ esac; \
+ page=$$1; shift; sect=$$1; shift; \
+ d=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}; \
+ ${ECHO} ${MINSTALL} $${page} $${d}; \
+ ${MINSTALL} $${page} $${d}; \
+ done
+.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
+.for __page in ${MAN}
+ ${MINSTALL} ${__page:T:S/$/${CATEXT}/} \
+ ${DESTDIR}${CATDIR}${__page:E}${MANSUBDIR}/${__page:T}
+.endfor
+.endif
+.endif
+.else
+.for __page in ${MAN}
+ ${MINSTALL} ${__page:T:S/$/${MCOMPRESS_EXT}/g} \
+ ${DESTDIR}${MANDIR}${__page:E}${MANSUBDIR}
+.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
+ ${MINSTALL} ${__page:T:S/$/${CATEXT}${MCOMPRESS_EXT}/g} \
+ ${DESTDIR}${CATDIR}${__page:E}${MANSUBDIR}/${__page:T:S/$/${MCOMPRESS_EXT}/}
+.endif
+.endfor
+.endif
+.endif
+
+.if !defined(NO_MLINKS) && defined(MLINKS) && !empty(MLINKS)
+ @set ${MLINKS:C/\.([^.]*)$/.\1 \1/}; \
+ while : ; do \
+ case $$# in \
+ 0) break;; \
+ [123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
+ esac; \
+ name=$$1; shift; sect=$$1; shift; \
+ l=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
+ name=$$1; shift; sect=$$1; shift; \
+ t=${DESTDIR}${MANDIR}$${sect}${MANSUBDIR}/$$name; \
+ ${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
+ rm -f $${t} $${t}${MCOMPRESS_EXT}; \
+ ln $${l}${ZEXT} $${t}${ZEXT}; \
+ done
+.if defined(MANBUILDCAT) && !empty(MANBUILDCAT)
+ @set ${MLINKS:C/\.([^.]*)$/.\1 \1/}; \
+ while : ; do \
+ case $$# in \
+ 0) break;; \
+ [123]) echo "warn: empty MLINK: $$1 $$2 $$3"; break;; \
+ esac; \
+ name=$$1; shift; sect=$$1; shift; \
+ l=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
+ name=$$1; shift; sect=$$1; shift; \
+ t=${DESTDIR}${CATDIR}$${sect}${MANSUBDIR}/$$name; \
+ ${ECHO} $${t}${ZEXT} -\> $${l}${ZEXT}; \
+ rm -f $${t} $${t}${MCOMPRESS_EXT}; \
+ ln $${l}${ZEXT} $${t}${ZEXT}; \
+ done
+.endif
+.endif
+
+manlint:
+.if defined(MAN) && !empty(MAN)
+.for __page in ${MAN}
+manlint: ${__page}lint
+${__page}lint: ${__page}
+.if defined(MANFILTER)
+ ${MANFILTER} < ${.ALLSRC} | ${MROFF_CMD} -ww -z
+.else
+ ${MROFF_CMD} -ww -z ${.ALLSRC}
+.endif
+.endfor
+.endif
diff --git a/share/mk/bsd.nls.mk b/share/mk/bsd.nls.mk
new file mode 100644
index 0000000..48093eb
--- /dev/null
+++ b/share/mk/bsd.nls.mk
@@ -0,0 +1,74 @@
+# $FreeBSD$
+#
+# This include file <bsd.nls.mk> handles building and installing Native
+# Language Support (NLS) catalogs
+#
+# +++ variables +++
+#
+# GENCAT A program for converting .msg files into compiled NLS
+# .cat files. [gencat]
+#
+# NLS Source or intermediate .msg files. [set in Makefile]
+#
+# NLSDIR Base path for National Language Support files
+# installation. [${SHAREDIR}/nls]
+#
+# NLSGRP National Language Support files group. [${SHAREGRP}]
+#
+# NLSMODE National Language Support files mode. [${NOBINMODE}]
+#
+# NLSOWN National Language Support files owner. [${SHAREOWN}]
+
+.if !target(__<bsd.init.mk>__)
+.error bsd.nls.mk cannot be included directly.
+.endif
+
+GENCAT?= gencat
+
+.SUFFIXES: .cat .msg
+
+.msg.cat:
+ ${GENCAT} ${.TARGET} ${.IMPSRC}
+
+.if defined(NLS) && !empty(NLS) && ${MK_NLS} != "no"
+
+#
+# .msg file pre-build rules
+#
+NLSSRCDIR?= ${.CURDIR}
+.for file in ${NLS}
+.if defined(NLSSRCFILES)
+NLSSRCFILES_${file}?= ${NLSSRCFILES}
+.endif
+.if defined(NLSSRCFILES_${file})
+NLSSRCDIR_${file}?= ${NLSSRCDIR}
+${file}.msg: ${NLSSRCFILES_${file}:S/^/${NLSSRCDIR_${file}}\//}
+ @rm -f ${.TARGET}
+ cat ${.ALLSRC} > ${.TARGET}
+CLEANFILES+= ${file}.msg
+.endif
+.endfor
+
+#
+# .cat file build rules
+#
+NLS:= ${NLS:=.cat}
+CLEANFILES+= ${NLS}
+FILESGROUPS?= FILES
+FILESGROUPS+= NLS
+NLSDIR?= ${SHAREDIR}/nls
+
+#
+# installation rules
+#
+.for file in ${NLS}
+NLSNAME_${file:T}= ${file:T:R}/${NLSNAME}.cat
+.if defined(NLSLINKS_${file:R}) && !empty(NLSLINKS_${file:R})
+NLSLINKS+= ${file:R}
+.endif
+.for dst in ${NLSLINKS_${file:R}}
+SYMLINKS+= ../${file:R}/${NLSNAME}.cat ${NLSDIR}/${dst}/${NLSNAME}.cat
+.endfor
+.endfor
+
+.endif # defined(NLS) && !empty(NLS) && ${MK_NLS} != "no"
diff --git a/share/mk/bsd.obj.mk b/share/mk/bsd.obj.mk
new file mode 100644
index 0000000..bd8f2aa
--- /dev/null
+++ b/share/mk/bsd.obj.mk
@@ -0,0 +1,133 @@
+# $FreeBSD$
+#
+# The include file <bsd.obj.mk> handles creating the 'obj' directory
+# and cleaning up object files, etc.
+#
+# +++ variables +++
+#
+# CLEANDIRS Additional directories to remove for the clean target.
+#
+# CLEANFILES Additional files to remove for the clean target.
+#
+# MAKEOBJDIR A pathname for the directory where the targets
+# are built. Note: MAKEOBJDIR is an *environment* variable
+# and works properly only if set as an environment variable,
+# not as a global or command line variable!
+#
+# E.g. use `env MAKEOBJDIR=temp-obj make'
+#
+# MAKEOBJDIRPREFIX Specifies somewhere other than /usr/obj to root the object
+# tree. Note: MAKEOBJDIRPREFIX is an *environment* variable
+# and works properly only if set as an environment variable,
+# not as a global or command line variable!
+#
+# E.g. use `env MAKEOBJDIRPREFIX=/somewhere/obj make'
+#
+# NO_OBJ Do not create object directories. This should not be set
+# if anything is built.
+#
+# +++ targets +++
+#
+# clean:
+# remove ${CLEANFILES}; remove ${CLEANDIRS} and all contents.
+#
+# cleandir:
+# remove the build directory (and all its contents) created by obj
+#
+# obj:
+# create build directory.
+#
+
+.if !target(__<bsd.obj.mk>__)
+__<bsd.obj.mk>__:
+.include <bsd.own.mk>
+
+.if defined(MAKEOBJDIRPREFIX)
+CANONICALOBJDIR:=${MAKEOBJDIRPREFIX}${.CURDIR}
+.else
+CANONICALOBJDIR:=/usr/obj${.CURDIR}
+.endif
+
+#
+# Warn of unorthodox object directory.
+#
+# The following directories are tried in order for ${.OBJDIR}:
+#
+# 1. ${MAKEOBJDIRPREFIX}/`pwd`
+# 2. ${MAKEOBJDIR}
+# 3. obj.${MACHINE}
+# 4. obj
+# 5. /usr/obj/`pwd`
+# 6. ${.CURDIR}
+#
+# If ${.OBJDIR} is constructed using canonical cases 1 or 5, or
+# case 2 (using MAKEOBJDIR), don't issue a warning. Otherwise,
+# issue a warning differentiating between cases 6 and (3 or 4).
+#
+objwarn:
+.if !defined(NO_OBJ) && ${.OBJDIR} != ${CANONICALOBJDIR} && \
+ !(defined(MAKEOBJDIRPREFIX) && exists(${CANONICALOBJDIR}/)) && \
+ !(defined(MAKEOBJDIR) && exists(${MAKEOBJDIR}/))
+.if ${.OBJDIR} == ${.CURDIR}
+ @${ECHO} "Warning: Object directory not changed from original ${.CURDIR}"
+.elif exists(${.CURDIR}/obj.${MACHINE}/) || exists(${.CURDIR}/obj/)
+ @${ECHO} "Warning: Using ${.OBJDIR} as object directory instead of\
+ canonical ${CANONICALOBJDIR}"
+.endif
+.endif
+
+.if !defined(NO_OBJ)
+.if !target(obj)
+obj: .PHONY
+ @if ! test -d ${CANONICALOBJDIR}/; then \
+ mkdir -p ${CANONICALOBJDIR}; \
+ if ! test -d ${CANONICALOBJDIR}/; then \
+ ${ECHO} "Unable to create ${CANONICALOBJDIR}."; \
+ exit 1; \
+ fi; \
+ ${ECHO} "${CANONICALOBJDIR} created for ${.CURDIR}"; \
+ fi
+.endif
+
+.if !target(objlink)
+objlink:
+ @if test -d ${CANONICALOBJDIR}/; then \
+ rm -f ${.CURDIR}/obj; \
+ ln -s ${CANONICALOBJDIR} ${.CURDIR}/obj; \
+ else \
+ echo "No ${CANONICALOBJDIR} to link to - do a make obj."; \
+ fi
+.endif
+.endif # !defined(NO_OBJ)
+
+#
+# where would that obj directory be?
+#
+.if !target(whereobj)
+whereobj:
+ @echo ${.OBJDIR}
+.endif
+
+.if ${CANONICALOBJDIR} != ${.CURDIR} && exists(${CANONICALOBJDIR}/)
+cleanobj:
+ @rm -rf ${CANONICALOBJDIR}
+.else
+cleanobj: clean cleandepend
+.endif
+ @if [ -L ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi
+
+.if !target(clean)
+clean:
+.if defined(CLEANFILES) && !empty(CLEANFILES)
+ rm -f ${CLEANFILES}
+.endif
+.if defined(CLEANDIRS) && !empty(CLEANDIRS)
+ rm -rf ${CLEANDIRS}
+.endif
+.endif
+
+cleandir: cleanobj
+
+.include <bsd.subdir.mk>
+
+.endif # !target(__<bsd.obj.mk>__)
diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
new file mode 100644
index 0000000..5910a13
--- /dev/null
+++ b/share/mk/bsd.own.mk
@@ -0,0 +1,538 @@
+# $FreeBSD$
+#
+# The include file <bsd.own.mk> set common variables for owner,
+# group, mode, and directories. Defaults are in brackets.
+#
+#
+# +++ variables +++
+#
+# DESTDIR Change the tree where the file gets installed. [not set]
+#
+# DISTDIR Change the tree where the file for a distribution
+# gets installed (see /usr/src/release/Makefile). [not set]
+#
+# COMPRESS_CMD Program to compress documents.
+# Output is to stdout. [gzip -cn]
+#
+# COMPRESS_EXT File name extension of ${COMPRESS_CMD} command. [.gz]
+#
+# BINOWN Binary owner. [root]
+#
+# BINGRP Binary group. [wheel]
+#
+# BINMODE Binary mode. [555]
+#
+# NOBINMODE Mode for non-executable files. [444]
+#
+# LIBDIR Base path for libraries. [/usr/lib]
+#
+# LIBCOMPATDIR Base path for compat libraries. [/usr/lib/compat]
+#
+# LIBDATADIR Base path for misc. utility data files. [/usr/libdata]
+#
+# LINTLIBDIR Base path for lint libraries. [/usr/libdata/lint]
+#
+# SHLIBDIR Base path for shared libraries. [${LIBDIR}]
+#
+# LIBOWN Library owner. [${BINOWN}]
+#
+# LIBGRP Library group. [${BINGRP}]
+#
+# LIBMODE Library mode. [${NOBINMODE}]
+#
+#
+# KMODDIR Base path for loadable kernel modules
+# (see kld(4)). [/boot/kernel]
+#
+# KMODOWN KLD owner. [${BINOWN}]
+#
+# KMODGRP KLD group. [${BINGRP}]
+#
+# KMODMODE KLD mode. [${BINMODE}]
+#
+#
+# SHAREDIR Base path for architecture-independent ascii
+# text files. [/usr/share]
+#
+# SHAREOWN ASCII text file owner. [root]
+#
+# SHAREGRP ASCII text file group. [wheel]
+#
+# SHAREMODE ASCII text file mode. [${NOBINMODE}]
+#
+#
+# DOCDIR Base path for system documentation (e.g. PSD, USD,
+# handbook, FAQ etc.). [${SHAREDIR}/doc]
+#
+# DOCOWN Documentation owner. [${SHAREOWN}]
+#
+# DOCGRP Documentation group. [${SHAREGRP}]
+#
+# DOCMODE Documentation mode. [${NOBINMODE}]
+#
+#
+# INFODIR Base path for GNU's hypertext system
+# called Info (see info(1)). [${SHAREDIR}/info]
+#
+# INFOOWN Info owner. [${SHAREOWN}]
+#
+# INFOGRP Info group. [${SHAREGRP}]
+#
+# INFOMODE Info mode. [${NOBINMODE}]
+#
+#
+# MANDIR Base path for manual installation. [${SHAREDIR}/man/man]
+#
+# MANOWN Manual owner. [${SHAREOWN}]
+#
+# MANGRP Manual group. [${SHAREGRP}]
+#
+# MANMODE Manual mode. [${NOBINMODE}]
+#
+#
+# NLSDIR Base path for National Language Support files
+# installation. [${SHAREDIR}/nls]
+#
+# NLSOWN National Language Support files owner. [${SHAREOWN}]
+#
+# NLSGRP National Language Support files group. [${SHAREGRP}]
+#
+# NLSMODE National Language Support files mode. [${NOBINMODE}]
+#
+# INCLUDEDIR Base path for standard C include files [/usr/include]
+
+.if !target(__<bsd.own.mk>__)
+__<bsd.own.mk>__:
+
+.if !defined(_WITHOUT_SRCCONF)
+SRCCONF?= /etc/src.conf
+.if exists(${SRCCONF})
+.include "${SRCCONF}"
+.endif
+.endif
+
+# Binaries
+BINOWN?= root
+BINGRP?= wheel
+BINMODE?= 555
+NOBINMODE?= 444
+
+.if defined(MODULES_WITH_WORLD)
+KMODDIR?= /boot/modules
+.else
+KMODDIR?= /boot/kernel
+.endif
+KMODOWN?= ${BINOWN}
+KMODGRP?= ${BINGRP}
+KMODMODE?= ${BINMODE}
+
+LIBDIR?= /usr/lib
+LIBCOMPATDIR?= /usr/lib/compat
+LIBDATADIR?= /usr/libdata
+LINTLIBDIR?= /usr/libdata/lint
+SHLIBDIR?= ${LIBDIR}
+LIBOWN?= ${BINOWN}
+LIBGRP?= ${BINGRP}
+LIBMODE?= ${NOBINMODE}
+
+
+# Share files
+SHAREDIR?= /usr/share
+SHAREOWN?= root
+SHAREGRP?= wheel
+SHAREMODE?= ${NOBINMODE}
+
+MANDIR?= ${SHAREDIR}/man/man
+MANOWN?= ${SHAREOWN}
+MANGRP?= ${SHAREGRP}
+MANMODE?= ${NOBINMODE}
+
+DOCDIR?= ${SHAREDIR}/doc
+DOCOWN?= ${SHAREOWN}
+DOCGRP?= ${SHAREGRP}
+DOCMODE?= ${NOBINMODE}
+
+INFODIR?= ${SHAREDIR}/info
+INFOOWN?= ${SHAREOWN}
+INFOGRP?= ${SHAREGRP}
+INFOMODE?= ${NOBINMODE}
+
+NLSDIR?= ${SHAREDIR}/nls
+NLSOWN?= ${SHAREOWN}
+NLSGRP?= ${SHAREGRP}
+NLSMODE?= ${NOBINMODE}
+
+INCLUDEDIR?= /usr/include
+
+# Common variables
+.if !defined(DEBUG_FLAGS)
+STRIP?= -s
+.endif
+
+COMPRESS_CMD?= gzip -cn
+COMPRESS_EXT?= .gz
+
+.if !defined(_WITHOUT_SRCCONF)
+#
+# Define MK_* variables (which are either "yes" or "no") for users
+# to set via WITH_*/WITHOUT_* in /etc/src.conf and override in the
+# make(1) environment.
+# These should be tested with `== "no"' or `!= "no"' in makefiles.
+# The NO_* variables should only be set by makefiles.
+#
+
+#
+# Supported NO_* options (if defined, MK_* will be forced to "no",
+# regardless of user's setting).
+#
+.for var in \
+ INSTALLLIB \
+ MAN \
+ PROFILE
+.if defined(NO_${var})
+WITHOUT_${var}=
+.endif
+.endfor
+
+#
+# Compat NO_* options (same as above, except their use is deprecated).
+#
+.if !defined(BURN_BRIDGES)
+.for var in \
+ ACPI \
+ ATM \
+ AUDIT \
+ AUTHPF \
+ BIND \
+ BIND_DNSSEC \
+ BIND_ETC \
+ BIND_LIBS_LWRES \
+ BIND_MTREE \
+ BIND_NAMED \
+ BIND_UTILS \
+ BLUETOOTH \
+ BOOT \
+ CALENDAR \
+ CPP \
+ CRYPT \
+ CVS \
+ CXX \
+ DICT \
+ DYNAMICROOT \
+ EXAMPLES \
+ FORTH \
+ FP_LIBC \
+ GAMES \
+ GCOV \
+ GDB \
+ GNU \
+ GPIB \
+ GROFF \
+ HTML \
+ INET6 \
+ INFO \
+ IPFILTER \
+ IPX \
+ KERBEROS \
+ LIB32 \
+ LIBPTHREAD \
+ LIBTHR \
+ LOCALES \
+ LPR \
+ MAILWRAPPER \
+ NETCAT \
+ NIS \
+ NLS \
+ NLS_CATALOGS \
+ NS_CACHING \
+ OBJC \
+ OPENSSH \
+ OPENSSL \
+ PAM \
+ PF \
+ RCMDS \
+ RCS \
+ RESCUE \
+ SENDMAIL \
+ SETUID_LOGIN \
+ SHAREDOCS \
+ SYSCONS \
+ TCSH \
+ TOOLCHAIN \
+ USB \
+ WPA_SUPPLICANT_EAPOL
+.if defined(NO_${var})
+#.warning NO_${var} is deprecated in favour of WITHOUT_${var}=
+WITHOUT_${var}=
+.endif
+.endfor
+.endif # !defined(BURN_BRIDGES)
+
+#
+# Older-style variables that enabled behaviour when set.
+#
+.if defined(YES_HESIOD)
+WITH_HESIOD=
+.endif
+.if defined(MAKE_IDEA)
+WITH_IDEA=
+.endif
+
+#
+# MK_* options which default to "yes".
+#
+.for var in \
+ ACCT \
+ ACPI \
+ AMD \
+ APM \
+ ASSERT_DEBUG \
+ AT \
+ ATM \
+ AUDIT \
+ AUTHPF \
+ BIND \
+ BIND_DNSSEC \
+ BIND_ETC \
+ BIND_LIBS_LWRES \
+ BIND_MTREE \
+ BIND_NAMED \
+ BIND_UTILS \
+ BLUETOOTH \
+ BOOT \
+ BSD_CPIO \
+ BSNMP \
+ BZIP2 \
+ CALENDAR \
+ CDDL \
+ CPP \
+ CRYPT \
+ CTM \
+ CVS \
+ CXX \
+ DICT \
+ DYNAMICROOT \
+ EXAMPLES \
+ FLOPPY \
+ FORTH \
+ FP_LIBC \
+ FREEBSD_UPDATE \
+ GAMES \
+ GCOV \
+ GDB \
+ GNU \
+ GNU_GREP \
+ GPIB \
+ GROFF \
+ HTML \
+ INET6 \
+ INFO \
+ INSTALLLIB \
+ IPFILTER \
+ IPFW \
+ IPX \
+ JAIL \
+ KERBEROS \
+ KVM \
+ LEGACY_CONSOLE \
+ LIB32 \
+ LIBPTHREAD \
+ LIBTHR \
+ LOCALES \
+ LOCATE \
+ LPR \
+ MAIL \
+ MAILWRAPPER \
+ MAKE \
+ MAN \
+ NCP \
+ NDIS \
+ NETCAT \
+ NETGRAPH \
+ NIS \
+ NLS \
+ NLS_CATALOGS \
+ NS_CACHING \
+ NTP \
+ OBJC \
+ OPENSSH \
+ OPENSSL \
+ PAM \
+ PF \
+ PKGTOOLS \
+ PMC \
+ PORTSNAP \
+ PPP \
+ PROFILE \
+ QUOTAS \
+ RCMDS \
+ RCS \
+ RESCUE \
+ ROUTED \
+ SENDMAIL \
+ SETUID_LOGIN \
+ SHAREDOCS \
+ SLIP \
+ SSP \
+ SYSINSTALL \
+ SYMVER \
+ SYSCONS \
+ TCSH \
+ TELNET \
+ TEXTPROC \
+ TOOLCHAIN \
+ USB \
+ WIRELESS \
+ WPA_SUPPLICANT_EAPOL \
+ ZFS \
+ ZONEINFO
+.if defined(WITH_${var}) && defined(WITHOUT_${var})
+.error WITH_${var} and WITHOUT_${var} can't both be set.
+.endif
+.if defined(MK_${var})
+.error MK_${var} can't be set by a user.
+.endif
+.if defined(WITHOUT_${var})
+MK_${var}:= no
+.else
+MK_${var}:= yes
+.endif
+.endfor
+
+#
+# MK_* options which default to "no".
+#
+.for var in \
+ BIND_LIBS \
+ GNU_CPIO \
+ HESIOD \
+ IDEA
+.if defined(WITH_${var}) && defined(WITHOUT_${var})
+.error WITH_${var} and WITHOUT_${var} can't both be set.
+.endif
+.if defined(MK_${var})
+.error MK_${var} can't be set by a user.
+.endif
+.if defined(WITH_${var})
+MK_${var}:= yes
+.else
+MK_${var}:= no
+.endif
+.endfor
+
+#
+# Force some options off if their dependencies are off.
+# Order is somewhat important.
+#
+.if ${MK_LIBPTHREAD} == "no"
+MK_LIBTHR:= no
+.endif
+
+.if ${MK_LIBTHR} == "no"
+MK_BIND:= no
+.endif
+
+.if ${MK_BIND} == "no"
+MK_BIND_DNSSEC:= no
+MK_BIND_ETC:= no
+MK_BIND_LIBS:= no
+MK_BIND_LIBS_LWRES:= no
+MK_BIND_MTREE:= no
+MK_BIND_NAMED:= no
+MK_BIND_UTILS:= no
+.endif
+
+.if ${MK_BIND_MTREE} == "no"
+MK_BIND_ETC:= no
+.endif
+
+.if ${MK_CDDL} == "no"
+MK_ZFS:= no
+.endif
+
+.if ${MK_CRYPT} == "no"
+MK_OPENSSL:= no
+MK_OPENSSH:= no
+MK_KERBEROS:= no
+.endif
+
+.if ${MK_IPX} == "no"
+MK_NCP:= no
+.endif
+
+.if ${MK_MAIL} == "no"
+MK_MAILWRAPPER:= no
+MK_SENDMAIL:= no
+.endif
+
+.if ${MK_OPENSSL} == "no"
+MK_OPENSSH:= no
+MK_KERBEROS:= no
+.endif
+
+.if ${MK_PF} == "no"
+MK_AUTHPF:= no
+.endif
+
+.if ${MK_TEXTPROC} == "no"
+MK_GROFF:= no
+.endif
+
+.if ${MK_TOOLCHAIN} == "no"
+MK_GDB:= no
+.endif
+
+#
+# Set defaults for the MK_*_SUPPORT variables.
+#
+
+#
+# MK_*_SUPPORT options which default to "yes" unless their corresponding
+# MK_* variable is set to "no".
+#
+.for var in \
+ BZIP2 \
+ GNU \
+ INET6 \
+ IPX \
+ KERBEROS \
+ KVM \
+ NETGRAPH \
+ PAM \
+ WIRELESS
+.if defined(WITH_${var}_SUPPORT) && defined(WITHOUT_${var}_SUPPORT)
+.error WITH_${var}_SUPPORT and WITHOUT_${var}_SUPPORT can't both be set.
+.endif
+.if defined(MK_${var}_SUPPORT)
+.error MK_${var}_SUPPORT can't be set by a user.
+.endif
+.if defined(WITHOUT_${var}_SUPPORT) || ${MK_${var}} == "no"
+MK_${var}_SUPPORT:= no
+.else
+MK_${var}_SUPPORT:= yes
+.endif
+.endfor
+
+#
+# MK_* options whose default value depends on another option.
+#
+.for vv in \
+ GSSAPI/KERBEROS
+.if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H})
+.error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set.
+.endif
+.if defined(MK_${vv:H})
+.error MK_${vv:H} can't be set by a user.
+.endif
+.if defined(WITH_${vv:H})
+MK_${vv:H}:= yes
+.elif defined(WITHOUT_${vv:H})
+MK_${vv:H}:= no
+.else
+MK_${vv:H}:= ${MK_${vv:T}}
+.endif
+.endfor
+
+.endif # !_WITHOUT_SRCCONF
+
+.endif # !target(__<bsd.own.mk>__)
diff --git a/share/mk/bsd.pkg.mk b/share/mk/bsd.pkg.mk
new file mode 100644
index 0000000..3d1ca42
--- /dev/null
+++ b/share/mk/bsd.pkg.mk
@@ -0,0 +1,48 @@
+# $FreeBSD$
+
+WRKDIR=${.OBJDIR}
+.if ${.OBJDIR} == ${.CURDIR}
+WRKDIR=${.CURDIR}/work
+.endif
+NO_WRKSUBDIR=YES
+NO_CHECKSUM=YES
+NO_BUILD=YES
+
+fetch:
+extract:
+patch:
+configure:
+build:
+
+.if target(__<bsd.obj.mk>__)
+clean: do-clean
+.if ${CANONICALOBJDIR} != ${.CURDIR} && exists(${CANONICALOBJDIR}/)
+ @rm -rf ${CANONICALOBJDIR}
+.else
+ @if [ -L ${.CURDIR}/obj ]; then rm -f ${.CURDIR}/obj; fi
+.if defined(CLEANFILES) && !empty(CLEANFILES)
+ rm -f ${CLEANFILES}
+.endif
+.if defined(CLEANDIRS) && !empty(CLEANDIRS)
+ rm -rf ${CLEANDIRS}
+.endif
+.endif
+.endif
+
+.if !target(beforeinstall)
+beforeinstall:
+.endif
+.if !target(afterinstall)
+afterinstall:
+.endif
+
+install: install-message check-categories check-conflicts \
+ run-depends lib-depends pre-install pre-install-script \
+ generate-plist check-already-installed \
+ check-umask install-mtree pre-su-install \
+ pre-su-install-script \
+ beforeinstall realinstall afterinstall \
+ add-plist-info post-install post-install-script \
+ compress-man run-ldconfig fake-pkg
+
+.include <bsd.port.mk>
diff --git a/share/mk/bsd.port.mk b/share/mk/bsd.port.mk
new file mode 100644
index 0000000..99374a5
--- /dev/null
+++ b/share/mk/bsd.port.mk
@@ -0,0 +1,11 @@
+# $FreeBSD$
+
+PORTSDIR?= /usr/ports
+BSDPORTMK?= ${PORTSDIR}/Mk/bsd.port.mk
+
+# Needed to keep bsd.own.mk from reading in /etc/src.conf
+# and setting MK_* variables when building ports.
+_WITHOUT_SRCCONF=
+
+.include <bsd.own.mk>
+.include "${BSDPORTMK}"
diff --git a/share/mk/bsd.port.options.mk b/share/mk/bsd.port.options.mk
new file mode 100644
index 0000000..e043cc2
--- /dev/null
+++ b/share/mk/bsd.port.options.mk
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+USEOPTIONSMK= yes
+INOPTIONSMK= yes
+
+.include <bsd.port.mk>
+
+.undef INOPTIONSMK
diff --git a/share/mk/bsd.port.post.mk b/share/mk/bsd.port.post.mk
new file mode 100644
index 0000000..d64dc12
--- /dev/null
+++ b/share/mk/bsd.port.post.mk
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+AFTERPORTMK= yes
+
+.include <bsd.port.mk>
+
+.undef AFTERPORTMK
diff --git a/share/mk/bsd.port.pre.mk b/share/mk/bsd.port.pre.mk
new file mode 100644
index 0000000..dff464e
--- /dev/null
+++ b/share/mk/bsd.port.pre.mk
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+BEFOREPORTMK= yes
+
+.include <bsd.port.mk>
+
+.undef BEFOREPORTMK
diff --git a/share/mk/bsd.port.subdir.mk b/share/mk/bsd.port.subdir.mk
new file mode 100644
index 0000000..5115602
--- /dev/null
+++ b/share/mk/bsd.port.subdir.mk
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+PORTSDIR?= /usr/ports
+BSDPORTSUBDIRMK?= ${PORTSDIR}/Mk/bsd.port.subdir.mk
+
+.include "${BSDPORTSUBDIRMK}"
diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk
new file mode 100644
index 0000000..c8f2f72
--- /dev/null
+++ b/share/mk/bsd.prog.mk
@@ -0,0 +1,229 @@
+# from: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91
+# $FreeBSD$
+
+.include <bsd.init.mk>
+
+.SUFFIXES: .out .o .c .cc .cpp .cxx .C .m .y .l .ln .s .S .asm
+
+# XXX The use of COPTS in modern makefiles is discouraged.
+.if defined(COPTS)
+CFLAGS+=${COPTS}
+.endif
+
+.if ${MK_ASSERT_DEBUG} == "no"
+CFLAGS+= -DNDEBUG
+NO_WERROR=
+.endif
+
+.if defined(DEBUG_FLAGS)
+CFLAGS+=${DEBUG_FLAGS}
+
+.if !defined(NO_CTF) && (${DEBUG_FLAGS:M-g} != "")
+CTFFLAGS+= -g
+.endif
+.endif
+
+.if defined(CRUNCH_CFLAGS)
+CFLAGS+=${CRUNCH_CFLAGS}
+.endif
+
+.if !defined(DEBUG_FLAGS)
+STRIP?= -s
+.endif
+
+.if defined(NO_SHARED) && (${NO_SHARED} != "no" && ${NO_SHARED} != "NO")
+LDFLAGS+= -static
+.endif
+
+.if defined(PROG_CXX)
+PROG= ${PROG_CXX}
+.endif
+
+.if defined(PROG)
+.if defined(SRCS)
+
+# If there are Objective C sources, link with Objective C libraries.
+.if !empty(SRCS:M*.m)
+.if defined(OBJCLIBS)
+LDADD+= ${OBJCLIBS}
+.else
+DPADD+= ${LIBOBJC} ${LIBPTHREAD}
+LDADD+= -lobjc -lpthread
+.endif
+.endif
+
+OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
+
+${PROG}: ${OBJS}
+.if defined(PROG_CXX)
+ ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+.else
+ ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+.endif
+.if defined(CTFMERGE)
+ ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS}
+.endif
+
+.else # !defined(SRCS)
+
+.if !target(${PROG})
+.if defined(PROG_CXX)
+SRCS= ${PROG}.cc
+.else
+SRCS= ${PROG}.c
+.endif
+
+# Always make an intermediate object file because:
+# - it saves time rebuilding when only the library has changed
+# - the name of the object gets put into the executable symbol table instead of
+# the name of a variable temporary object.
+# - it's useful to keep objects around for crunching.
+OBJS= ${PROG}.o
+
+${PROG}: ${OBJS}
+.if defined(PROG_CXX)
+ ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+.else
+ ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD}
+.endif
+.if defined(CTFMERGE)
+ ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${OBJS}
+.endif
+.endif
+
+.endif
+
+.if ${MK_MAN} != "no" && !defined(MAN) && \
+ !defined(MAN1) && !defined(MAN2) && !defined(MAN3) && \
+ !defined(MAN4) && !defined(MAN5) && !defined(MAN6) && \
+ !defined(MAN7) && !defined(MAN8) && !defined(MAN9) && \
+ !defined(MAN1aout)
+MAN= ${PROG}.1
+MAN1= ${MAN}
+.endif
+.endif
+
+all: objwarn ${PROG} ${SCRIPTS}
+.if ${MK_MAN} != "no"
+all: _manpages
+.endif
+
+.if defined(PROG)
+CLEANFILES+= ${PROG}
+.endif
+
+.if defined(OBJS)
+CLEANFILES+= ${OBJS}
+.endif
+
+.include <bsd.libnames.mk>
+
+.if defined(PROG)
+_EXTRADEPEND:
+.if defined(LDFLAGS) && !empty(LDFLAGS:M-nostdlib)
+.if defined(DPADD) && !empty(DPADD)
+ echo ${PROG}: ${DPADD} >> ${DEPENDFILE}
+.endif
+.else
+ echo ${PROG}: ${LIBC} ${DPADD} >> ${DEPENDFILE}
+.if defined(PROG_CXX)
+ echo ${PROG}: ${LIBSTDCPLUSPLUS} >> ${DEPENDFILE}
+.endif
+.endif
+.endif
+
+.if !target(install)
+
+.if defined(PRECIOUSPROG)
+.if !defined(NO_FSCHG)
+INSTALLFLAGS+= -fschg
+.endif
+INSTALLFLAGS+= -S
+.endif
+
+_INSTALLFLAGS:= ${INSTALLFLAGS}
+.for ie in ${INSTALLFLAGS_EDIT}
+_INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
+.endfor
+
+.if !target(realinstall) && !defined(INTERNALPROG)
+realinstall: _proginstall
+.ORDER: beforeinstall _proginstall
+_proginstall:
+.if defined(PROG)
+.if defined(PROGNAME)
+ ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME}
+.else
+ ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
+ ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}
+.endif
+.endif
+.endif # !target(realinstall)
+
+.if defined(SCRIPTS) && !empty(SCRIPTS)
+realinstall: _scriptsinstall
+.ORDER: beforeinstall _scriptsinstall
+
+SCRIPTSDIR?= ${BINDIR}
+SCRIPTSOWN?= ${BINOWN}
+SCRIPTSGRP?= ${BINGRP}
+SCRIPTSMODE?= ${BINMODE}
+
+.for script in ${SCRIPTS}
+.if defined(SCRIPTSNAME)
+SCRIPTSNAME_${script:T}?= ${SCRIPTSNAME}
+.else
+SCRIPTSNAME_${script:T}?= ${script:T:R}
+.endif
+SCRIPTSDIR_${script:T}?= ${SCRIPTSDIR}
+SCRIPTSOWN_${script:T}?= ${SCRIPTSOWN}
+SCRIPTSGRP_${script:T}?= ${SCRIPTSGRP}
+SCRIPTSMODE_${script:T}?= ${SCRIPTSMODE}
+_scriptsinstall: _SCRIPTSINS_${script:T}
+_SCRIPTSINS_${script:T}: ${script}
+ ${INSTALL} -o ${SCRIPTSOWN_${.ALLSRC:T}} \
+ -g ${SCRIPTSGRP_${.ALLSRC:T}} -m ${SCRIPTSMODE_${.ALLSRC:T}} \
+ ${.ALLSRC} \
+ ${DESTDIR}${SCRIPTSDIR_${.ALLSRC:T}}/${SCRIPTSNAME_${.ALLSRC:T}}
+.endfor
+.endif
+
+NLSNAME?= ${PROG}
+.include <bsd.nls.mk>
+
+.include <bsd.files.mk>
+.include <bsd.incs.mk>
+.include <bsd.links.mk>
+
+.if ${MK_MAN} != "no"
+realinstall: _maninstall
+.ORDER: beforeinstall _maninstall
+.endif
+
+.endif
+
+.if !target(lint)
+lint: ${SRCS:M*.c}
+.if defined(PROG)
+ ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.ALLSRC}
+.endif
+.endif
+
+.if ${MK_MAN} != "no"
+.include <bsd.man.mk>
+.endif
+
+.include <bsd.dep.mk>
+
+.if defined(PROG) && !exists(${.OBJDIR}/${DEPENDFILE})
+${OBJS}: ${SRCS:M*.h}
+.endif
+
+.include <bsd.obj.mk>
+
+.include <bsd.sys.mk>
+
+.if defined(PORTNAME)
+.include <bsd.pkg.mk>
+.endif
diff --git a/share/mk/bsd.snmpmod.mk b/share/mk/bsd.snmpmod.mk
new file mode 100644
index 0000000..552f936
--- /dev/null
+++ b/share/mk/bsd.snmpmod.mk
@@ -0,0 +1,27 @@
+# $FreeBSD$
+
+INCSDIR= ${INCLUDEDIR}/bsnmp
+
+SHLIB_NAME= snmp_${MOD}.so.${SHLIB_MAJOR}
+SRCS+= ${MOD}_oid.h ${MOD}_tree.c ${MOD}_tree.h
+CLEANFILES+= ${MOD}_oid.h ${MOD}_tree.c ${MOD}_tree.h
+CFLAGS+= -I.
+
+${MOD}_oid.h: ${MOD}_tree.def ${EXTRAMIBDEFS} ${EXTRAMIBSYMS}
+ cat ${.ALLSRC} | gensnmptree -e ${XSYM} > ${.TARGET}
+
+.ORDER: ${MOD}_tree.c ${MOD}_tree.h
+${MOD}_tree.c ${MOD}_tree.h: ${MOD}_tree.def ${EXTRAMIBDEFS}
+ cat ${.ALLSRC} | gensnmptree -p ${MOD}_
+
+.if defined(DEFS)
+FILESGROUPS+= DEFS
+DEFSDIR= ${SHAREDIR}/snmp/defs
+.endif
+
+.if defined(BMIBS)
+FILESGROUPS+= BMIBS
+BMIBSDIR= ${SHAREDIR}/snmp/mibs
+.endif
+
+.include <bsd.lib.mk>
diff --git a/share/mk/bsd.subdir.mk b/share/mk/bsd.subdir.mk
new file mode 100644
index 0000000..4753f64
--- /dev/null
+++ b/share/mk/bsd.subdir.mk
@@ -0,0 +1,95 @@
+# from: @(#)bsd.subdir.mk 5.9 (Berkeley) 2/1/91
+# $FreeBSD$
+#
+# The include file <bsd.subdir.mk> contains the default targets
+# for building subdirectories.
+#
+# For all of the directories listed in the variable SUBDIRS, the
+# specified directory will be visited and the target made. There is
+# also a default target which allows the command "make subdir" where
+# subdir is any directory listed in the variable SUBDIRS.
+#
+#
+# +++ variables +++
+#
+# DISTRIBUTION Name of distribution. [base]
+#
+# SUBDIR A list of subdirectories that should be built as well.
+# Each of the targets will execute the same target in the
+# subdirectories.
+#
+# +++ targets +++
+#
+# distribute:
+# This is a variant of install, which will
+# put the stuff into the right "distribution".
+#
+# afterinstall, all, all-man, beforeinstall, checkdpadd,
+# clean, cleandepend, cleandir, depend, install, lint, maninstall,
+# manlint, obj, objlink, realinstall, regress, tags
+#
+
+.include <bsd.init.mk>
+
+DISTRIBUTION?= base
+.if !target(distribute)
+distribute:
+.for dist in ${DISTRIBUTION}
+ ${_+_}cd ${.CURDIR}; \
+ ${MAKE} install -DNO_SUBDIR DESTDIR=${DISTDIR}/${dist} SHARED=copies
+.endfor
+.endif
+
+_SUBDIR: .USE
+.if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR)
+ @${_+_}for entry in ${SUBDIR}; do \
+ if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
+ ${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} (${.TARGET:realinstall=install})"; \
+ edir=$${entry}.${MACHINE_ARCH}; \
+ cd ${.CURDIR}/$${edir}; \
+ else \
+ ${ECHODIR} "===> ${DIRPRFX}$$entry (${.TARGET:realinstall=install})"; \
+ edir=$${entry}; \
+ cd ${.CURDIR}/$${edir}; \
+ fi; \
+ ${MAKE} ${.TARGET:realinstall=install} \
+ DIRPRFX=${DIRPRFX}$$edir/; \
+ done
+.endif
+
+${SUBDIR}: .PHONY
+ ${_+_}@if test -d ${.TARGET}.${MACHINE_ARCH}; then \
+ cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \
+ else \
+ cd ${.CURDIR}/${.TARGET}; \
+ fi; \
+ ${MAKE} all
+
+.for __target in all all-man checkdpadd clean cleandepend cleandir \
+ depend distribute lint maninstall manlint \
+ obj objlink realinstall regress tags \
+ ${SUBDIR_TARGETS}
+${__target}: _SUBDIR
+.endfor
+
+.for __target in files includes
+.for __stage in build install
+${__stage}${__target}:
+.if make(${__stage}${__target})
+${__stage}${__target}: _SUBDIR
+.endif
+.endfor
+${__target}:
+ ${_+_}cd ${.CURDIR}; ${MAKE} build${__target}; ${MAKE} install${__target}
+.endfor
+
+.if !target(install)
+.if !target(beforeinstall)
+beforeinstall:
+.endif
+.if !target(afterinstall)
+afterinstall:
+.endif
+install: beforeinstall realinstall afterinstall
+.ORDER: beforeinstall realinstall afterinstall
+.endif
diff --git a/share/mk/bsd.symver.mk b/share/mk/bsd.symver.mk
new file mode 100644
index 0000000..7626274
--- /dev/null
+++ b/share/mk/bsd.symver.mk
@@ -0,0 +1,47 @@
+# $FreeBSD$
+
+.if !target(__<bsd.symver.mk>__)
+__<bsd.symver.mk>__:
+
+.include <bsd.init.mk>
+
+# Generate the version map given the version definitions
+# and symbol maps.
+.if ${MK_SYMVER} == "yes" && !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
+# Find the awk script that generates the version map.
+VERSION_GEN?= version_gen.awk
+VERSION_MAP?= Version.map
+
+CLEANFILES+= ${VERSION_MAP}
+
+# Compute the make's -m path.
+_mpath=
+_oarg=
+.for _arg in ${.MAKEFLAGS}
+.if ${_oarg} == "-m"
+_mpath+= ${_arg}
+.endif
+_oarg= ${_arg}
+.endfor
+_mpath+= /usr/share/mk
+
+# Look up ${VERSION_GEN} in ${_mpath}.
+_vgen=
+.for path in ${_mpath}
+.if empty(_vgen)
+.if exists(${path}/${VERSION_GEN})
+_vgen= ${path}/${VERSION_GEN}
+.endif
+.endif
+.endfor
+.if empty(_vgen)
+.error ${VERSION_GEN} not found in the search path.
+.endif
+
+# Run the symbol maps through the C preprocessor before passing
+# them to the symbol version generator.
+${VERSION_MAP}: ${VERSION_DEF} ${_vgen} ${SYMBOL_MAPS}
+ cat ${SYMBOL_MAPS} | ${CPP} - - \
+ | awk -v vfile=${VERSION_DEF} -f ${_vgen} > ${.TARGET}
+.endif # !empty(VERSION_DEF) && !empty(SYMBOL_MAPS)
+.endif # !target(__<bsd.symver.mk>__)
diff --git a/share/mk/bsd.sys.mk b/share/mk/bsd.sys.mk
new file mode 100644
index 0000000..197c1d6
--- /dev/null
+++ b/share/mk/bsd.sys.mk
@@ -0,0 +1,85 @@
+# $FreeBSD$
+#
+# This file contains common settings used for building FreeBSD
+# sources.
+
+# Enable various levels of compiler warning checks. These may be
+# overridden (e.g. if using a non-gcc compiler) by defining NO_WARNS.
+
+# for GCC: http://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html#IDX143
+
+.if !defined(NO_WARNS) && ${CC} != "icc"
+. if defined(CSTD)
+. if ${CSTD} == "k&r"
+CFLAGS += -traditional
+. elif ${CSTD} == "c89" || ${CSTD} == "c90"
+CFLAGS += -std=iso9899:1990
+. elif ${CSTD} == "c94" || ${CSTD} == "c95"
+CFLAGS += -std=iso9899:199409
+. elif ${CSTD} == "c99"
+CFLAGS += -std=iso9899:1999
+. else
+CFLAGS += -std=${CSTD}
+. endif
+# -pedantic is problematic because it also imposes namespace restrictions
+#CFLAGS += -pedantic
+. endif
+. if defined(WARNS)
+. if ${WARNS} >= 1
+CWARNFLAGS += -Wsystem-headers
+. if !defined(NO_WERROR)
+CWARNFLAGS += -Werror
+. endif
+. endif
+. if ${WARNS} >= 2
+CWARNFLAGS += -Wall -Wno-format-y2k
+. endif
+. if ${WARNS} >= 3
+CWARNFLAGS += -W -Wno-unused-parameter -Wstrict-prototypes\
+ -Wmissing-prototypes -Wpointer-arith
+. endif
+. if ${WARNS} >= 4
+CWARNFLAGS += -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch\
+ -Wshadow -Wcast-align -Wunused-parameter
+. endif
+# BDECFLAGS
+. if ${WARNS} >= 6
+CWARNFLAGS += -Wchar-subscripts -Winline -Wnested-externs -Wredundant-decls
+. endif
+. if ${WARNS} >= 2 && ${WARNS} <= 4
+# XXX Delete -Wuninitialized by default for now -- the compiler doesn't
+# XXX always get it right.
+CWARNFLAGS += -Wno-uninitialized
+. endif
+. if !defined(WITH_GCC3)
+CWARNFLAGS += -Wno-pointer-sign
+. endif
+. endif
+
+. if defined(FORMAT_AUDIT)
+WFORMAT = 1
+. endif
+. if defined(WFORMAT)
+. if ${WFORMAT} > 0
+#CWARNFLAGS += -Wformat-nonliteral -Wformat-security -Wno-format-extra-args
+CWARNFLAGS += -Wformat=2 -Wno-format-extra-args
+. if !defined(NO_WERROR)
+CWARNFLAGS += -Werror
+. endif
+. endif
+. endif
+.endif
+
+.if defined(IGNORE_PRAGMA)
+CWARNFLAGS += -Wno-unknown-pragmas
+.endif
+
+.if ${MK_SSP} != "no" && ${CC} != "icc" && ${MACHINE_ARCH} != "ia64" && \
+ ${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "mips"
+# Don't use -Wstack-protector as it breaks world with -Werror.
+SSP_CFLAGS ?= -fstack-protector
+CFLAGS += ${SSP_CFLAGS}
+.endif
+
+# Allow user-specified additional warning flags
+CFLAGS += ${CWARNFLAGS}
diff --git a/share/mk/sys.mk b/share/mk/sys.mk
new file mode 100644
index 0000000..c469a03
--- /dev/null
+++ b/share/mk/sys.mk
@@ -0,0 +1,357 @@
+# from: @(#)sys.mk 8.2 (Berkeley) 3/21/94
+# $FreeBSD$
+
+unix ?= We run FreeBSD, not UNIX.
+.FreeBSD ?= true
+
+# If the special target .POSIX appears (without prerequisites or
+# commands) before the first noncomment line in the makefile, make shall
+# process the makefile as specified by the Posix 1003.2 specification.
+# make(1) sets the special macro %POSIX in this case (to the actual
+# value "1003.2", for what it's worth).
+#
+# The rules below use this macro to distinguish between Posix-compliant
+# and default behaviour.
+
+.if defined(%POSIX)
+.SUFFIXES: .o .c .y .l .a .sh .f
+.else
+.SUFFIXES: .out .a .ln .o .c .cc .cpp .cxx .C .m .F .f .e .r .y .l .S .asm .s .cl .p .h .sh
+.endif
+
+AR ?= ar
+.if defined(%POSIX)
+ARFLAGS ?= -rv
+.else
+ARFLAGS ?= rl
+.endif
+RANLIB ?= ranlib
+
+AS ?= as
+AFLAGS ?=
+
+.if defined(%POSIX)
+CC ?= c89
+CFLAGS ?= -O
+.else
+CC ?= cc
+.if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "mips"
+CFLAGS ?= -O -pipe
+.else
+CFLAGS ?= -O2 -pipe
+.endif
+.if defined(NO_STRICT_ALIASING)
+CFLAGS += -fno-strict-aliasing
+.endif
+.endif
+
+# Turn CTF conversion off by default for now. This default could be
+# changed later if DTrace becomes popular.
+.if !defined(WITH_CTF)
+NO_CTF = 1
+.endif
+
+# C Type Format data is required for DTrace
+CTFFLAGS ?= -L VERSION
+
+.if !defined(NO_CTF)
+CTFCONVERT ?= ctfconvert
+CTFMERGE ?= ctfmerge
+.if defined(CFLAGS) && (${CFLAGS:M-g} != "")
+CTFFLAGS += -g
+.else
+CFLAGS += -g
+.endif
+.endif
+
+CXX ?= c++
+CXXFLAGS ?= ${CFLAGS:N-std=*:N-Wnested-externs:N-W*-prototypes:N-Wno-pointer-sign}
+
+CPP ?= cpp
+
+.if empty(.MAKEFLAGS:M-s)
+ECHO ?= echo
+ECHODIR ?= echo
+.else
+ECHO ?= true
+.if ${.MAKEFLAGS:M-s} == "-s"
+ECHODIR ?= echo
+.else
+ECHODIR ?= true
+.endif
+.endif
+
+.if !empty(.MAKEFLAGS:M-n) && ${.MAKEFLAGS:M-n} == "-n"
+_+_ ?=
+.else
+_+_ ?= +
+.endif
+
+.if defined(%POSIX)
+FC ?= fort77
+FFLAGS ?= -O 1
+.else
+FC ?= f77
+FFLAGS ?= -O
+.endif
+EFLAGS ?=
+
+INSTALL ?= install
+
+LEX ?= lex
+LFLAGS ?=
+
+LD ?= ld
+LDFLAGS ?=
+
+LINT ?= lint
+LINTFLAGS ?= -cghapbx
+LINTKERNFLAGS ?= ${LINTFLAGS}
+LINTOBJFLAGS ?= -cghapbxu -i
+LINTOBJKERNFLAGS?= ${LINTOBJFLAGS}
+LINTLIBFLAGS ?= -cghapbxu -C ${LIB}
+
+MAKE ?= make
+
+OBJC ?= cc
+OBJCFLAGS ?= ${OBJCINCLUDES} ${CFLAGS} -Wno-import
+
+PC ?= pc
+PFLAGS ?=
+
+RC ?= f77
+RFLAGS ?=
+
+SHELL ?= sh
+
+YACC ?= yacc
+.if defined(%POSIX)
+YFLAGS ?=
+.else
+YFLAGS ?= -d
+.endif
+
+.if defined(%POSIX)
+
+# Posix 1003.2 mandated rules
+#
+# Quoted directly from the Posix 1003.2 draft, only the macros
+# $@, $< and $* have been replaced by ${.TARGET}, ${.IMPSRC}, and
+# ${.PREFIX}, resp.
+
+# SINGLE SUFFIX RULES
+.c:
+ ${CC} ${CFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.f:
+ ${FC} ${FFLAGS} ${LDFLAGS} -o ${.TARGET} ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.sh:
+ cp ${.IMPSRC} ${.TARGET}
+ chmod a+x ${.TARGET}
+
+# DOUBLE SUFFIX RULES
+
+.c.o:
+ ${CC} ${CFLAGS} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.f.o:
+ ${FC} ${FFLAGS} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.y.o:
+ ${YACC} ${YFLAGS} ${.IMPSRC}
+ ${CC} ${CFLAGS} -c y.tab.c
+ rm -f y.tab.c
+ mv y.tab.o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.l.o:
+ ${LEX} ${LFLAGS} ${.IMPSRC}
+ ${CC} ${CFLAGS} -c lex.yy.c
+ rm -f lex.yy.c
+ mv lex.yy.o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.y.c:
+ ${YACC} ${YFLAGS} ${.IMPSRC}
+ mv y.tab.c ${.TARGET}
+
+.l.c:
+ ${LEX} ${LFLAGS} ${.IMPSRC}
+ mv lex.yy.c ${.TARGET}
+
+.c.a:
+ ${CC} ${CFLAGS} -c ${.IMPSRC}
+ ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
+ rm -f ${.PREFIX}.o
+
+.f.a:
+ ${FC} ${FFLAGS} -c ${.IMPSRC}
+ ${AR} ${ARFLAGS} ${.TARGET} ${.PREFIX}.o
+ rm -f ${.PREFIX}.o
+
+.else
+
+# non-Posix rule set
+
+.sh:
+ cp -p ${.IMPSRC} ${.TARGET}
+ chmod a+x ${.TARGET}
+
+.c.ln:
+ ${LINT} ${LINTOBJFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} || \
+ touch ${.TARGET}
+
+.cc.ln .C.ln .cpp.ln .cxx.ln:
+ ${LINT} ${LINTOBJFLAGS} ${CXXFLAGS:M-[DIU]*} ${.IMPSRC} || \
+ touch ${.TARGET}
+
+.c:
+ ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.c.o:
+ ${CC} ${CFLAGS} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.cc .cpp .cxx .C:
+ ${CXX} ${CXXFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
+
+.cc.o .cpp.o .cxx.o .C.o:
+ ${CXX} ${CXXFLAGS} -c ${.IMPSRC}
+
+.m.o:
+ ${OBJC} ${OBJCFLAGS} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.p.o:
+ ${PC} ${PFLAGS} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.e .r .F .f:
+ ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} \
+ -o ${.TARGET}
+
+.e.o .r.o .F.o .f.o:
+ ${FC} ${RFLAGS} ${EFLAGS} ${FFLAGS} -c ${.IMPSRC}
+
+.S.o:
+ ${CC} ${CFLAGS} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.asm.o:
+ ${CC} -x assembler-with-cpp ${CFLAGS} -c ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.s.o:
+ ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+# XXX not -j safe
+.y.o:
+ ${YACC} ${YFLAGS} ${.IMPSRC}
+ ${CC} ${CFLAGS} -c y.tab.c -o ${.TARGET}
+ rm -f y.tab.c
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.l.o:
+ ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
+ ${CC} ${CFLAGS} -c ${.PREFIX}.tmp.c -o ${.TARGET}
+ rm -f ${.PREFIX}.tmp.c
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+# XXX not -j safe
+.y.c:
+ ${YACC} ${YFLAGS} ${.IMPSRC}
+ mv y.tab.c ${.TARGET}
+
+.l.c:
+ ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.TARGET}
+
+.s.out .c.out .o.out:
+ ${CC} ${CFLAGS} ${LDFLAGS} ${.IMPSRC} ${LDLIBS} -o ${.TARGET}
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.f.out .F.out .r.out .e.out:
+ ${FC} ${EFLAGS} ${RFLAGS} ${FFLAGS} ${LDFLAGS} ${.IMPSRC} \
+ ${LDLIBS} -o ${.TARGET}
+ rm -f ${.PREFIX}.o
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+# XXX not -j safe
+.y.out:
+ ${YACC} ${YFLAGS} ${.IMPSRC}
+ ${CC} ${CFLAGS} ${LDFLAGS} y.tab.c ${LDLIBS} -ly -o ${.TARGET}
+ rm -f y.tab.c
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+.l.out:
+ ${LEX} -t ${LFLAGS} ${.IMPSRC} > ${.PREFIX}.tmp.c
+ ${CC} ${CFLAGS} ${LDFLAGS} ${.PREFIX}.tmp.c ${LDLIBS} -ll -o ${.TARGET}
+ rm -f ${.PREFIX}.tmp.c
+.if defined(CTFCONVERT)
+ ${CTFCONVERT} ${CTFFLAGS} ${.TARGET}
+.endif
+
+# FreeBSD build pollution. Hide it in the non-POSIX part of the ifdef.
+__MAKE_CONF?=/etc/make.conf
+.if exists(${__MAKE_CONF})
+.include "${__MAKE_CONF}"
+.endif
+
+.if defined(__MAKE_SHELL) && !empty(__MAKE_SHELL)
+SHELL= ${__MAKE_SHELL}
+.SHELL: path=${__MAKE_SHELL}
+.endif
+
+# Default executable format
+# XXX hint for bsd.port.mk
+OBJFORMAT?= elf
+
+# Toggle on warnings
+.WARN: dirsyntax
+
+.endif
+
+.include <bsd.compat.mk>
+.include <bsd.cpu.mk>
diff --git a/share/mk/version_gen.awk b/share/mk/version_gen.awk
new file mode 100644
index 0000000..93fbc4f
--- /dev/null
+++ b/share/mk/version_gen.awk
@@ -0,0 +1,249 @@
+#
+# Copyright (C) 2006 Daniel M. Eischen. 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.
+#
+# $FreeBSD$
+#
+
+#
+# Make a list of all the library versions listed in the master file.
+#
+# versions[] - array indexed by version name, contains number
+# of symbols (+ 1) found for each version.
+# successors[] - array index by version name, contains successor
+# version name.
+# symbols[][] - array index by [version name, symbol index], contains
+# names of symbols defined for each version.
+# names[] - array index is symbol name and value is its first version seen,
+# used to check for duplicate symbols and warn about them.
+#
+BEGIN {
+ brackets = 0;
+ errors = warns = 0;
+ version_count = 0;
+ current_version = "";
+ stderr = "/dev/stderr";
+ while (getline < vfile) {
+ # Strip comments.
+ sub("#.*$", "", $0);
+
+ # Strip leading and trailing whitespace.
+ sub("^[ \t]+", "", $0);
+ sub("[ \t]+$", "", $0);
+
+ if (/^[a-zA-Z0-9._]+[ \t]*{$/) {
+ # Strip brace.
+ sub("{", "", $1);
+ brackets++;
+ symver = $1;
+ versions[symver] = 1;
+ successors[symver] = "";
+ generated[symver] = 0;
+ version_count++;
+ }
+ else if (/^}[ \t]*[a-zA-Z0-9._]+[ \t]*;$/) {
+ v = $1 != "}" ? $1 : $2;
+ # Strip brace.
+ sub("}", "", v);
+ # Strip semicolon.
+ sub(";", "", v);
+ if (symver == "") {
+ printf("File %s: Unmatched bracket.\n",
+ vfile) > stderr;
+ errors++;
+ }
+ else if (versions[v] != 1) {
+ printf("File %s: `%s' has unknown " \
+ "successor `%s'.\n",
+ vfile, symver, v) > stderr;
+ errors++;
+ }
+ else
+ successors[symver] = v;
+ brackets--;
+ }
+ else if (/^}[ \t]*;$/) {
+ if (symver == "") {
+ printf("File %s: Unmatched bracket.\n",
+ vfile) > stderr;
+ errors++;
+ }
+ # No successor
+ brackets--;
+ }
+ else if (/^}$/) {
+ printf("File %s: Missing final semicolon.\n",
+ vfile) > stderr;
+ errors++;
+ }
+ else if (/^$/)
+ ; # Ignore blank lines.
+ else {
+ printf("File %s: Unknown directive: `%s'.\n",
+ vfile, $0) > stderr;
+ errors++;
+ }
+ }
+ brackets = 0;
+}
+
+{
+ # Set meaningful filename for diagnostics.
+ filename = FILENAME != "" ? FILENAME : "<stdin>";
+
+ # Delete comments, preceding and trailing whitespace, then
+ # consume blank lines.
+ sub("#.*$", "", $0);
+ sub("^[ \t]+", "", $0);
+ sub("[ \t]+$", "", $0);
+ if ($0 == "")
+ next;
+}
+
+/^[a-zA-Z0-9._]+[ \t]*{$/ {
+ # Strip bracket from version name.
+ sub("{", "", $1);
+ if (current_version != "") {
+ printf("File %s, line %d: Illegal nesting detected.\n",
+ filename, FNR) > stderr;
+ errors++;
+ }
+ else if (versions[$1] == 0) {
+ printf("File %s, line %d: Undefined " \
+ "library version `%s'.\n", filename, FNR, $1) > stderr;
+ errors++;
+ # Remove this entry from the versions.
+ delete versions[$1];
+ }
+ else
+ current_version = $1;
+ brackets++;
+ next;
+}
+
+/^[a-zA-Z0-9._]+[ \t]*;$/ {
+ # Strip semicolon.
+ sub(";", "", $1);
+ if (current_version != "") {
+ count = versions[current_version];
+ versions[current_version]++;
+ symbols[current_version, count] = $1;
+ if ($1 in names && names[$1] != current_version) {
+ #
+ # A graver case when a dup symbol appears under
+ # different versions in the map. That can result
+ # in subtle problems with the library later.
+ #
+ printf("File %s, line %d: Duplicated symbol `%s' " \
+ "in version `%s', first seen in `%s'. " \
+ "Did you forget to move it to ObsoleteVersions?\n",
+ filename, FNR, $1,
+ current_version, names[$1]) > stderr;
+ errors++;
+ }
+ else if (names[$1] == current_version) {
+ #
+ # A harmless case: a dup symbol with the same version.
+ #
+ printf("File %s, line %d: warning: " \
+ "Duplicated symbol `%s' in version `%s'.\n",
+ filename, FNR, $1, current_version) > stderr;
+ warns++;
+ }
+ else
+ names[$1] = current_version;
+ }
+ else {
+ printf("File %s, line %d: Symbol `%s' outside version scope.\n",
+ filename, FNR, $1) > stderr;
+ errors++;
+ }
+ next;
+}
+
+/^}[ \t]*;$/ {
+ brackets--;
+ if (brackets < 0) {
+ printf("File %s, line %d: Unmatched bracket.\n",
+ filename, FNR, $1) > stderr;
+ errors++;
+ brackets = 0; # Reset
+ }
+ current_version = "";
+ next;
+}
+
+
+{
+ printf("File %s, line %d: Unknown directive: `%s'.\n",
+ filename, FNR, $0) > stderr;
+ errors++;
+}
+
+function print_version(v)
+{
+ # This function is recursive, so return if this version
+ # has already been printed. Otherwise, if there is an
+ # ancestral version, recursively print its symbols before
+ # printing the symbols for this version.
+ #
+ if (generated[v] == 1)
+ return;
+ if (successors[v] != "")
+ print_version(successors[v]);
+
+ printf("%s {\n", v);
+
+ # The version count is always one more that actual,
+ # so the loop ranges from 1 to n-1.
+ #
+ for (i = 1; i < versions[v]; i++) {
+ if (i == 1)
+ printf("global:\n");
+ printf("\t%s;\n", symbols[v, i]);
+ }
+
+ version_count--;
+ if (version_count == 0) {
+ printf("local:\n");
+ printf("\t*;\n");
+ }
+ if (successors[v] == "")
+ printf("};\n");
+ else
+ printf("} %s;\n", successors[v]);
+ printf("\n");
+
+ generated[v] = 1;
+ }
+
+END {
+ if (errors) {
+ printf("%d error(s) total.\n", errors) > stderr;
+ exit(1);
+ }
+ # OK, no errors.
+ for (v in versions) {
+ print_version(v);
+ }
+}
diff --git a/share/mklocale/Makefile b/share/mklocale/Makefile
new file mode 100644
index 0000000..1cfa338
--- /dev/null
+++ b/share/mklocale/Makefile
@@ -0,0 +1,97 @@
+# $FreeBSD$
+
+LOCALES= UTF-8 \
+ am_ET.UTF-8 \
+ be_BY.CP1131 \
+ bg_BG.CP1251 \
+ el_GR.ISO8859-7 \
+ hi_IN.ISCII-DEV \
+ hy_AM.ARMSCII-8 \
+ ja_JP.SJIS \
+ ja_JP.eucJP \
+ kk_KZ.PT154 \
+ ko_KR.CP949 \
+ ko_KR.eucKR \
+ la_LN.ISO8859-1 \
+ la_LN.ISO8859-15 \
+ la_LN.ISO8859-2 \
+ la_LN.ISO8859-4 \
+ la_LN.US-ASCII \
+ lt_LT.ISO8859-13 \
+ ru_RU.CP866 \
+ ru_RU.ISO8859-5 \
+ ru_RU.KOI8-R \
+ tr_TR.ISO8859-9 \
+ uk_UA.KOI8-U \
+ zh_CN.eucCN \
+ zh_CN.GB18030 \
+ zh_CN.GB2312 \
+ zh_CN.GBK \
+ zh_HK.Big5HKSCS \
+ zh_TW.Big5
+
+LOCALEDIR= /usr/share/locale
+
+.SUFFIXES: .src .out
+
+.src.out:
+ mklocale -o ${.TARGET} ${.IMPSRC}
+
+FILES= ${LOCALES:S/$/.out/}
+FILESNAME= LC_CTYPE
+
+.for locale in ${LOCALES}
+FILESDIR_${locale}.out= ${LOCALEDIR}/${locale}
+.endfor
+
+CLEANFILES= ${FILES}
+
+ENCODINGS= CP1251 ISO8859-1 ISO8859-2 ISO8859-4 ISO8859-5 \
+ ISO8859-15 US-ASCII UTF-8
+
+ASCIILINKS= en_AU en_CA en_GB en_NZ en_US
+US-ASCII_US-ASCII= ${ASCIILINKS:C/^/la_LN:/}
+
+LATIN1XLINKS= af_ZA ca_ES da_DK de_AT de_CH de_DE en_AU en_CA en_GB en_NZ \
+ en_US es_ES eu_ES fi_FI fr_BE fr_CA fr_CH fr_FR is_IS it_CH \
+ it_IT nb_NO nl_BE nl_NL nn_NO no_NO pt_PT sv_SE
+LATIN1LINKS= ${LATIN1XLINKS} pt_BR
+ISO8859-1_ISO8859-1= ${LATIN1LINKS:C/^/la_LN:/}
+
+LATIN15LINKS= ${LATIN1XLINKS} et_EE
+ISO8859-15_ISO8859-15= ${LATIN15LINKS:C/^/la_LN:/}
+
+LATIN2LINKS= cs_CZ hr_HR hu_HU pl_PL sl_SI sr_YU ro_RO sk_SK
+ISO8859-2_ISO8859-2= ${LATIN2LINKS:C/^/la_LN:/}
+
+LATIN4LINKS= lt_LT
+ISO8859-4_ISO8859-4= ${LATIN4LINKS:C/^/la_LN:/}
+
+LATIN5LINKS= sr_YU uk_UA be_BY
+ISO8859-5_ISO8859-5= ${LATIN5LINKS:C/^/ru_RU:/}
+
+CP1251LINKS= ru_RU be_BY uk_UA
+CP1251_CP1251= ${CP1251LINKS:C/^/bg_BG:/}
+
+UTF8LINKS= af_ZA be_BY bg_BG ca_ES cs_CZ da_DK de_AT de_CH de_DE el_GR \
+ en_AU en_CA en_GB en_IE en_NZ en_US es_ES et_EE eu_ES fi_FI \
+ fr_BE \
+ fr_CA fr_CH fr_FR he_IL hr_HR hu_HU hy_AM is_IS it_CH it_IT \
+ ja_JP kk_KZ ko_KR lt_LT mn_MN \
+ nb_NO nl_BE nl_NL nn_NO no_NO pl_PL pt_BR pt_PT \
+ ro_RO ru_RU sk_SK sl_SI sr_YU sv_SE tr_TR uk_UA zh_CN zh_HK \
+ zh_TW
+UTF-8_UTF-8= ${UTF8LINKS:C/^/:/}
+
+
+SYMLINKS=
+.for enc1 in ${ENCODINGS}
+.for enc2 in ${ENCODINGS}
+.for lang_terr in ${${enc1}_${enc2}}
+SYMLINKS+= ../${lang_terr:C/:.*$//:C/.+$/&./}${enc1}/${FILESNAME} \
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+.endfor
+.endfor
+.endfor
+
+.include <bsd.prog.mk>
diff --git a/share/mklocale/README.locale_name b/share/mklocale/README.locale_name
new file mode 100644
index 0000000..08faffe
--- /dev/null
+++ b/share/mklocale/README.locale_name
@@ -0,0 +1,9 @@
+$FreeBSD$
+
+Locale name string format must be compliant with XPG3 and
+using following format.
+ <locale name> ::= <language>_<territory>.<encoding>
+ <language> ::= based on ISO 639
+ <territory> ::= based on ISO 3166 (country code)
+ <encoding> ::= X11 codeset preferred
+
diff --git a/share/mklocale/UTF-8.src b/share/mklocale/UTF-8.src
new file mode 100644
index 0000000..73a7cc7
--- /dev/null
+++ b/share/mklocale/UTF-8.src
@@ -0,0 +1,2400 @@
+/*
+ * Unicode 3.2 ctypes table
+ *
+ * Generated by Hye-Shik Chang <perky@FreeBSD.org>
+ *
+ * WARNING: UCS-4 used here as the internal representation, not UTF-8.
+ * See lib/libc/locale/utf8.c.
+ *
+ * $FreeBSD$
+ */
+
+/*
+ * UCD(Unicode Character Database) Terms of Use
+ *
+ * Disclaimer
+ *
+ * The Unicode Character Database is provided as is by Unicode, Inc. No claims
+ * are made as to fitness for any particular purpose. No warranties of any kind
+ * are expressed or implied. The recipient agrees to determine applicability of
+ * information provided. If this file has been purchased on magnetic or optical
+ * media from Unicode, Inc., the sole remedy for any claim will be exchange of
+ * defective media within 90 days of receipt.
+ *
+ * This disclaimer is applicable for all other data files accompanying the
+ * Unicode Character Database, some of which have been compiled by the Unicode
+ * Consortium, and some of which have been supplied by other sources.
+ *
+ * Limitations on Rights to Redistribute This Data
+ *
+ * Recipient is granted the right to make copies in any form for internal
+ * distribution and to freely use the information supplied in the creation of
+ * products supporting the UnicodeTM Standard. The files in the Unicode
+ * Character Database can be redistributed to third parties or other
+ * organizations (whether for profit or not) as long as this notice and the
+ * disclaimer notice are retained. Information can be extracted from these
+ * files and used in documentation or programs, as long as there is an
+ * accompanying notice indicating the source.
+ */
+
+ENCODING "UTF-8"
+VARIABLE Unicode 3.2 Character Types
+
+
+/*
+ * U+0000 - U+007F : Basic Latin
+ */
+
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x0000 - 0x001f 0x007f
+DIGIT '0' - '9'
+GRAPH 0x0021 - 0x007e
+LOWER 'a' - 'z'
+PUNCT 0x0021 - 0x002f 0x003a - 0x0040 0x005b - 0x0060 0x007b - 0x007e
+SPACE 0x0009 - 0x000d 0x0020
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'A' - 'F' 'a' - 'f'
+BLANK 0x0009 0x000b 0x0020
+PRINT 0x0020 - 0x007e
+SWIDTH1 0x0020 - 0x007e
+
+MAPUPPER < 'a' - 'z' : 'A' >
+MAPLOWER < 'A' - 'Z' : 'a' >
+TODIGIT < '0' - '9' : 0x0000 >
+TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 >
+
+
+/*
+ * U+0080 - U+00FF : Latin-1 Supplement
+ */
+
+ALPHA 0x00aa 0x00b5 0x00ba 0x00c0 - 0x00d6 0x00d8 - 0x00f6
+ALPHA 0x00f8 - 0x00ff
+CONTROL 0x0080 - 0x009f
+GRAPH 0x00a1 - 0x00ff
+LOWER 0x00aa 0x00b5 0x00ba 0x00df - 0x00f6 0x00f8 - 0x00ff
+PUNCT 0x00a1 - 0x00a9 0x00ab - 0x00b1 0x00b4 0x00b6 - 0x00b8
+PUNCT 0x00bb 0x00bf 0x00d7 0x00f7
+SPACE 0x0085 0x00a0
+UPPER 0x00c0 - 0x00d6 0x00d8 - 0x00de
+BLANK 0x00a0
+PRINT 0x00a0 - 0x00ff
+SPECIAL 0x00b2 0x00b3 0x00b9 0x00bc - 0x00be
+SWIDTH1 0x00a0 - 0x00ff
+
+MAPUPPER < 0x00b5 0x039c >
+MAPUPPER < 0x00e0 - 0x00f6 : 0x00c0 >
+MAPUPPER < 0x00f8 - 0x00fe : 0x00d8 >
+MAPUPPER < 0x00ff 0x0178 >
+MAPLOWER < 0x00c0 - 0x00d6 : 0x00e0 >
+MAPLOWER < 0x00d8 - 0x00de : 0x00f8 >
+
+
+/*
+ * U+0100 - U+017F : Latin Extended-A
+ */
+
+ALPHA 0x0100 - 0x017f
+GRAPH 0x0100 - 0x017f
+LOWER 0x0101 0x0103 0x0105 0x0107 0x0109 0x010b 0x010d
+LOWER 0x010f 0x0111 0x0113 0x0115 0x0117 0x0119 0x011b
+LOWER 0x011d 0x011f 0x0121 0x0123 0x0125 0x0127 0x0129
+LOWER 0x012b 0x012d 0x012f 0x0131 0x0133 0x0135 0x0137 0x0138
+LOWER 0x013a 0x013c 0x013e 0x0140 0x0142 0x0144 0x0146
+LOWER 0x0148 0x0149 0x014b 0x014d 0x014f 0x0151 0x0153
+LOWER 0x0155 0x0157 0x0159 0x015b 0x015d 0x015f 0x0161
+LOWER 0x0163 0x0165 0x0167 0x0169 0x016b 0x016d 0x016f
+LOWER 0x0171 0x0173 0x0175 0x0177 0x017a 0x017c 0x017e 0x017f
+UPPER 0x0100 0x0102 0x0104 0x0106 0x0108 0x010a 0x010c
+UPPER 0x010e 0x0110 0x0112 0x0114 0x0116 0x0118 0x011a
+UPPER 0x011c 0x011e 0x0120 0x0122 0x0124 0x0126 0x0128
+UPPER 0x012a 0x012c 0x012e 0x0130 0x0132 0x0134 0x0136
+UPPER 0x0139 0x013b 0x013d 0x013f 0x0141 0x0143 0x0145
+UPPER 0x0147 0x014a 0x014c 0x014e 0x0150 0x0152 0x0154
+UPPER 0x0156 0x0158 0x015a 0x015c 0x015e 0x0160 0x0162
+UPPER 0x0164 0x0166 0x0168 0x016a 0x016c 0x016e 0x0170
+UPPER 0x0172 0x0174 0x0176 0x0178 0x0179 0x017b 0x017d
+PRINT 0x0100 - 0x017f
+SWIDTH1 0x0100 - 0x017f
+
+MAPUPPER < 0x0101 0x0100 >
+MAPUPPER < 0x0103 0x0102 >
+MAPUPPER < 0x0105 0x0104 >
+MAPUPPER < 0x0107 0x0106 >
+MAPUPPER < 0x0109 0x0108 >
+MAPUPPER < 0x010b 0x010a >
+MAPUPPER < 0x010d 0x010c >
+MAPUPPER < 0x010f 0x010e >
+MAPUPPER < 0x0111 0x0110 >
+MAPUPPER < 0x0113 0x0112 >
+MAPUPPER < 0x0115 0x0114 >
+MAPUPPER < 0x0117 0x0116 >
+MAPUPPER < 0x0119 0x0118 >
+MAPUPPER < 0x011b 0x011a >
+MAPUPPER < 0x011d 0x011c >
+MAPUPPER < 0x011f 0x011e >
+MAPUPPER < 0x0121 0x0120 >
+MAPUPPER < 0x0123 0x0122 >
+MAPUPPER < 0x0125 0x0124 >
+MAPUPPER < 0x0127 0x0126 >
+MAPUPPER < 0x0129 0x0128 >
+MAPUPPER < 0x012b 0x012a >
+MAPUPPER < 0x012d 0x012c >
+MAPUPPER < 0x012f 0x012e >
+MAPUPPER < 0x0131 'I' >
+MAPUPPER < 0x0133 0x0132 >
+MAPUPPER < 0x0135 0x0134 >
+MAPUPPER < 0x0137 0x0136 >
+MAPUPPER < 0x013a 0x0139 >
+MAPUPPER < 0x013c 0x013b >
+MAPUPPER < 0x013e 0x013d >
+MAPUPPER < 0x0140 0x013f >
+MAPUPPER < 0x0142 0x0141 >
+MAPUPPER < 0x0144 0x0143 >
+MAPUPPER < 0x0146 0x0145 >
+MAPUPPER < 0x0148 0x0147 >
+MAPUPPER < 0x014b 0x014a >
+MAPUPPER < 0x014d 0x014c >
+MAPUPPER < 0x014f 0x014e >
+MAPUPPER < 0x0151 0x0150 >
+MAPUPPER < 0x0153 0x0152 >
+MAPUPPER < 0x0155 0x0154 >
+MAPUPPER < 0x0157 0x0156 >
+MAPUPPER < 0x0159 0x0158 >
+MAPUPPER < 0x015b 0x015a >
+MAPUPPER < 0x015d 0x015c >
+MAPUPPER < 0x015f 0x015e >
+MAPUPPER < 0x0161 0x0160 >
+MAPUPPER < 0x0163 0x0162 >
+MAPUPPER < 0x0165 0x0164 >
+MAPUPPER < 0x0167 0x0166 >
+MAPUPPER < 0x0169 0x0168 >
+MAPUPPER < 0x016b 0x016a >
+MAPUPPER < 0x016d 0x016c >
+MAPUPPER < 0x016f 0x016e >
+MAPUPPER < 0x0171 0x0170 >
+MAPUPPER < 0x0173 0x0172 >
+MAPUPPER < 0x0175 0x0174 >
+MAPUPPER < 0x0177 0x0176 >
+MAPUPPER < 0x017a 0x0179 >
+MAPUPPER < 0x017c 0x017b >
+MAPUPPER < 0x017e 0x017d >
+MAPUPPER < 0x017f 'S' >
+MAPLOWER < 0x0100 0x0101 >
+MAPLOWER < 0x0102 0x0103 >
+MAPLOWER < 0x0104 0x0105 >
+MAPLOWER < 0x0106 0x0107 >
+MAPLOWER < 0x0108 0x0109 >
+MAPLOWER < 0x010a 0x010b >
+MAPLOWER < 0x010c 0x010d >
+MAPLOWER < 0x010e 0x010f >
+MAPLOWER < 0x0110 0x0111 >
+MAPLOWER < 0x0112 0x0113 >
+MAPLOWER < 0x0114 0x0115 >
+MAPLOWER < 0x0116 0x0117 >
+MAPLOWER < 0x0118 0x0119 >
+MAPLOWER < 0x011a 0x011b >
+MAPLOWER < 0x011c 0x011d >
+MAPLOWER < 0x011e 0x011f >
+MAPLOWER < 0x0120 0x0121 >
+MAPLOWER < 0x0122 0x0123 >
+MAPLOWER < 0x0124 0x0125 >
+MAPLOWER < 0x0126 0x0127 >
+MAPLOWER < 0x0128 0x0129 >
+MAPLOWER < 0x012a 0x012b >
+MAPLOWER < 0x012c 0x012d >
+MAPLOWER < 0x012e 0x012f >
+MAPLOWER < 0x0130 'i' >
+MAPLOWER < 0x0132 0x0133 >
+MAPLOWER < 0x0134 0x0135 >
+MAPLOWER < 0x0136 0x0137 >
+MAPLOWER < 0x0139 0x013a >
+MAPLOWER < 0x013b 0x013c >
+MAPLOWER < 0x013d 0x013e >
+MAPLOWER < 0x013f 0x0140 >
+MAPLOWER < 0x0141 0x0142 >
+MAPLOWER < 0x0143 0x0144 >
+MAPLOWER < 0x0145 0x0146 >
+MAPLOWER < 0x0147 0x0148 >
+MAPLOWER < 0x014a 0x014b >
+MAPLOWER < 0x014c 0x014d >
+MAPLOWER < 0x014e 0x014f >
+MAPLOWER < 0x0150 0x0151 >
+MAPLOWER < 0x0152 0x0153 >
+MAPLOWER < 0x0154 0x0155 >
+MAPLOWER < 0x0156 0x0157 >
+MAPLOWER < 0x0158 0x0159 >
+MAPLOWER < 0x015a 0x015b >
+MAPLOWER < 0x015c 0x015d >
+MAPLOWER < 0x015e 0x015f >
+MAPLOWER < 0x0160 0x0161 >
+MAPLOWER < 0x0162 0x0163 >
+MAPLOWER < 0x0164 0x0165 >
+MAPLOWER < 0x0166 0x0167 >
+MAPLOWER < 0x0168 0x0169 >
+MAPLOWER < 0x016a 0x016b >
+MAPLOWER < 0x016c 0x016d >
+MAPLOWER < 0x016e 0x016f >
+MAPLOWER < 0x0170 0x0171 >
+MAPLOWER < 0x0172 0x0173 >
+MAPLOWER < 0x0174 0x0175 >
+MAPLOWER < 0x0176 0x0177 >
+MAPLOWER < 0x0178 0x00ff >
+MAPLOWER < 0x0179 0x017a >
+MAPLOWER < 0x017b 0x017c >
+MAPLOWER < 0x017d 0x017e >
+
+
+/*
+ * U+0180 - U+024F : Latin Extended-B
+ */
+
+ALPHA 0x0180 - 0x01ba 0x01bc - 0x01bf 0x01c4 - 0x0220 0x0222 - 0x0233
+GRAPH 0x0180 - 0x0220 0x0222 - 0x0233
+LOWER 0x0180 0x0183 0x0185 0x0188 0x018c 0x018d 0x0192
+LOWER 0x0195 0x0199 - 0x019b 0x019e 0x01a1 0x01a3 0x01a5
+LOWER 0x01a8 0x01aa 0x01ab 0x01ad 0x01b0 0x01b4 0x01b6
+LOWER 0x01b9 0x01ba 0x01bd - 0x01bf 0x01c6 0x01c9 0x01cc
+LOWER 0x01ce 0x01d0 0x01d2 0x01d4 0x01d6 0x01d8 0x01da
+LOWER 0x01dc 0x01dd 0x01df 0x01e1 0x01e3 0x01e5 0x01e7
+LOWER 0x01e9 0x01eb 0x01ed 0x01ef 0x01f0 0x01f3 0x01f5
+LOWER 0x01f9 0x01fb 0x01fd 0x01ff 0x0201 0x0203 0x0205
+LOWER 0x0207 0x0209 0x020b 0x020d 0x020f 0x0211 0x0213
+LOWER 0x0215 0x0217 0x0219 0x021b 0x021d 0x021f 0x0223
+LOWER 0x0225 0x0227 0x0229 0x022b 0x022d 0x022f 0x0231
+LOWER 0x0233
+UPPER 0x0181 0x0182 0x0184 0x0186 0x0187 0x0189 - 0x018b
+UPPER 0x018e - 0x0191 0x0193 0x0194 0x0196 - 0x0198 0x019c 0x019d
+UPPER 0x019f 0x01a0 0x01a2 0x01a4 0x01a6 0x01a7 0x01a9
+UPPER 0x01ac 0x01ae 0x01af 0x01b1 - 0x01b3 0x01b5 0x01b7 0x01b8
+UPPER 0x01bc 0x01c4 0x01c7 0x01ca 0x01cd 0x01cf 0x01d1
+UPPER 0x01d3 0x01d5 0x01d7 0x01d9 0x01db 0x01de 0x01e0
+UPPER 0x01e2 0x01e4 0x01e6 0x01e8 0x01ea 0x01ec 0x01ee
+UPPER 0x01f1 0x01f4 0x01f6 - 0x01f8 0x01fa 0x01fc 0x01fe
+UPPER 0x0200 0x0202 0x0204 0x0206 0x0208 0x020a 0x020c
+UPPER 0x020e 0x0210 0x0212 0x0214 0x0216 0x0218 0x021a
+UPPER 0x021c 0x021e 0x0220 0x0222 0x0224 0x0226 0x0228
+UPPER 0x022a 0x022c 0x022e 0x0230 0x0232
+PRINT 0x0180 - 0x0220 0x0222 - 0x0233
+SWIDTH1 0x0180 - 0x0220 0x0222 - 0x0233
+
+MAPUPPER < 0x0183 0x0182 >
+MAPUPPER < 0x0185 0x0184 >
+MAPUPPER < 0x0188 0x0187 >
+MAPUPPER < 0x018c 0x018b >
+MAPUPPER < 0x0192 0x0191 >
+MAPUPPER < 0x0195 0x01f6 >
+MAPUPPER < 0x0199 0x0198 >
+MAPUPPER < 0x019e 0x0220 >
+MAPUPPER < 0x01a1 0x01a0 >
+MAPUPPER < 0x01a3 0x01a2 >
+MAPUPPER < 0x01a5 0x01a4 >
+MAPUPPER < 0x01a8 0x01a7 >
+MAPUPPER < 0x01ad 0x01ac >
+MAPUPPER < 0x01b0 0x01af >
+MAPUPPER < 0x01b4 0x01b3 >
+MAPUPPER < 0x01b6 0x01b5 >
+MAPUPPER < 0x01b9 0x01b8 >
+MAPUPPER < 0x01bd 0x01bc >
+MAPUPPER < 0x01bf 0x01f7 >
+MAPUPPER < 0x01c5 0x01c4 >
+MAPUPPER < 0x01c6 0x01c4 >
+MAPUPPER < 0x01c8 0x01c7 >
+MAPUPPER < 0x01c9 0x01c7 >
+MAPUPPER < 0x01cb 0x01ca >
+MAPUPPER < 0x01cc 0x01ca >
+MAPUPPER < 0x01ce 0x01cd >
+MAPUPPER < 0x01d0 0x01cf >
+MAPUPPER < 0x01d2 0x01d1 >
+MAPUPPER < 0x01d4 0x01d3 >
+MAPUPPER < 0x01d6 0x01d5 >
+MAPUPPER < 0x01d8 0x01d7 >
+MAPUPPER < 0x01da 0x01d9 >
+MAPUPPER < 0x01dc 0x01db >
+MAPUPPER < 0x01dd 0x018e >
+MAPUPPER < 0x01df 0x01de >
+MAPUPPER < 0x01e1 0x01e0 >
+MAPUPPER < 0x01e3 0x01e2 >
+MAPUPPER < 0x01e5 0x01e4 >
+MAPUPPER < 0x01e7 0x01e6 >
+MAPUPPER < 0x01e9 0x01e8 >
+MAPUPPER < 0x01eb 0x01ea >
+MAPUPPER < 0x01ed 0x01ec >
+MAPUPPER < 0x01ef 0x01ee >
+MAPUPPER < 0x01f2 0x01f1 >
+MAPUPPER < 0x01f3 0x01f1 >
+MAPUPPER < 0x01f5 0x01f4 >
+MAPUPPER < 0x01f9 0x01f8 >
+MAPUPPER < 0x01fb 0x01fa >
+MAPUPPER < 0x01fd 0x01fc >
+MAPUPPER < 0x01ff 0x01fe >
+MAPUPPER < 0x0201 0x0200 >
+MAPUPPER < 0x0203 0x0202 >
+MAPUPPER < 0x0205 0x0204 >
+MAPUPPER < 0x0207 0x0206 >
+MAPUPPER < 0x0209 0x0208 >
+MAPUPPER < 0x020b 0x020a >
+MAPUPPER < 0x020d 0x020c >
+MAPUPPER < 0x020f 0x020e >
+MAPUPPER < 0x0211 0x0210 >
+MAPUPPER < 0x0213 0x0212 >
+MAPUPPER < 0x0215 0x0214 >
+MAPUPPER < 0x0217 0x0216 >
+MAPUPPER < 0x0219 0x0218 >
+MAPUPPER < 0x021b 0x021a >
+MAPUPPER < 0x021d 0x021c >
+MAPUPPER < 0x021f 0x021e >
+MAPUPPER < 0x0223 0x0222 >
+MAPUPPER < 0x0225 0x0224 >
+MAPUPPER < 0x0227 0x0226 >
+MAPUPPER < 0x0229 0x0228 >
+MAPUPPER < 0x022b 0x022a >
+MAPUPPER < 0x022d 0x022c >
+MAPUPPER < 0x022f 0x022e >
+MAPUPPER < 0x0231 0x0230 >
+MAPUPPER < 0x0233 0x0232 >
+MAPLOWER < 0x0181 0x0253 >
+MAPLOWER < 0x0182 0x0183 >
+MAPLOWER < 0x0184 0x0185 >
+MAPLOWER < 0x0186 0x0254 >
+MAPLOWER < 0x0187 0x0188 >
+MAPLOWER < 0x0189 - 0x018a : 0x0256 >
+MAPLOWER < 0x018b 0x018c >
+MAPLOWER < 0x018e 0x01dd >
+MAPLOWER < 0x018f 0x0259 >
+MAPLOWER < 0x0190 0x025b >
+MAPLOWER < 0x0191 0x0192 >
+MAPLOWER < 0x0193 0x0260 >
+MAPLOWER < 0x0194 0x0263 >
+MAPLOWER < 0x0196 0x0269 >
+MAPLOWER < 0x0197 0x0268 >
+MAPLOWER < 0x0198 0x0199 >
+MAPLOWER < 0x019c 0x026f >
+MAPLOWER < 0x019d 0x0272 >
+MAPLOWER < 0x019f 0x0275 >
+MAPLOWER < 0x01a0 0x01a1 >
+MAPLOWER < 0x01a2 0x01a3 >
+MAPLOWER < 0x01a4 0x01a5 >
+MAPLOWER < 0x01a6 0x0280 >
+MAPLOWER < 0x01a7 0x01a8 >
+MAPLOWER < 0x01a9 0x0283 >
+MAPLOWER < 0x01ac 0x01ad >
+MAPLOWER < 0x01ae 0x0288 >
+MAPLOWER < 0x01af 0x01b0 >
+MAPLOWER < 0x01b1 - 0x01b2 : 0x028a >
+MAPLOWER < 0x01b3 0x01b4 >
+MAPLOWER < 0x01b5 0x01b6 >
+MAPLOWER < 0x01b7 0x0292 >
+MAPLOWER < 0x01b8 0x01b9 >
+MAPLOWER < 0x01bc 0x01bd >
+MAPLOWER < 0x01c4 0x01c6 >
+MAPLOWER < 0x01c5 0x01c6 >
+MAPLOWER < 0x01c7 0x01c9 >
+MAPLOWER < 0x01c8 0x01c9 >
+MAPLOWER < 0x01ca 0x01cc >
+MAPLOWER < 0x01cb 0x01cc >
+MAPLOWER < 0x01cd 0x01ce >
+MAPLOWER < 0x01cf 0x01d0 >
+MAPLOWER < 0x01d1 0x01d2 >
+MAPLOWER < 0x01d3 0x01d4 >
+MAPLOWER < 0x01d5 0x01d6 >
+MAPLOWER < 0x01d7 0x01d8 >
+MAPLOWER < 0x01d9 0x01da >
+MAPLOWER < 0x01db 0x01dc >
+MAPLOWER < 0x01de 0x01df >
+MAPLOWER < 0x01e0 0x01e1 >
+MAPLOWER < 0x01e2 0x01e3 >
+MAPLOWER < 0x01e4 0x01e5 >
+MAPLOWER < 0x01e6 0x01e7 >
+MAPLOWER < 0x01e8 0x01e9 >
+MAPLOWER < 0x01ea 0x01eb >
+MAPLOWER < 0x01ec 0x01ed >
+MAPLOWER < 0x01ee 0x01ef >
+MAPLOWER < 0x01f1 0x01f3 >
+MAPLOWER < 0x01f2 0x01f3 >
+MAPLOWER < 0x01f4 0x01f5 >
+MAPLOWER < 0x01f6 0x0195 >
+MAPLOWER < 0x01f7 0x01bf >
+MAPLOWER < 0x01f8 0x01f9 >
+MAPLOWER < 0x01fa 0x01fb >
+MAPLOWER < 0x01fc 0x01fd >
+MAPLOWER < 0x01fe 0x01ff >
+MAPLOWER < 0x0200 0x0201 >
+MAPLOWER < 0x0202 0x0203 >
+MAPLOWER < 0x0204 0x0205 >
+MAPLOWER < 0x0206 0x0207 >
+MAPLOWER < 0x0208 0x0209 >
+MAPLOWER < 0x020a 0x020b >
+MAPLOWER < 0x020c 0x020d >
+MAPLOWER < 0x020e 0x020f >
+MAPLOWER < 0x0210 0x0211 >
+MAPLOWER < 0x0212 0x0213 >
+MAPLOWER < 0x0214 0x0215 >
+MAPLOWER < 0x0216 0x0217 >
+MAPLOWER < 0x0218 0x0219 >
+MAPLOWER < 0x021a 0x021b >
+MAPLOWER < 0x021c 0x021d >
+MAPLOWER < 0x021e 0x021f >
+MAPLOWER < 0x0220 0x019e >
+MAPLOWER < 0x0222 0x0223 >
+MAPLOWER < 0x0224 0x0225 >
+MAPLOWER < 0x0226 0x0227 >
+MAPLOWER < 0x0228 0x0229 >
+MAPLOWER < 0x022a 0x022b >
+MAPLOWER < 0x022c 0x022d >
+MAPLOWER < 0x022e 0x022f >
+MAPLOWER < 0x0230 0x0231 >
+MAPLOWER < 0x0232 0x0233 >
+
+
+/*
+ * U+0250 - U+02AF : IPA Extensions
+ */
+
+ALPHA 0x0250 - 0x02ad
+GRAPH 0x0250 - 0x02ad
+LOWER 0x0250 - 0x02ad
+PRINT 0x0250 - 0x02ad
+SWIDTH1 0x0250 - 0x02ad
+
+MAPUPPER < 0x0253 0x0181 >
+MAPUPPER < 0x0254 0x0186 >
+MAPUPPER < 0x0256 - 0x0257 : 0x0189 >
+MAPUPPER < 0x0259 0x018f >
+MAPUPPER < 0x025b 0x0190 >
+MAPUPPER < 0x0260 0x0193 >
+MAPUPPER < 0x0263 0x0194 >
+MAPUPPER < 0x0268 0x0197 >
+MAPUPPER < 0x0269 0x0196 >
+MAPUPPER < 0x026f 0x019c >
+MAPUPPER < 0x0272 0x019d >
+MAPUPPER < 0x0275 0x019f >
+MAPUPPER < 0x0280 0x01a6 >
+MAPUPPER < 0x0283 0x01a9 >
+MAPUPPER < 0x0288 0x01ae >
+MAPUPPER < 0x028a - 0x028b : 0x01b1 >
+MAPUPPER < 0x0292 0x01b7 >
+
+
+/*
+ * U+02B0 - U+02FF : Spacing Modifier Letters
+ */
+
+GRAPH 0x02b0 - 0x02ee
+PUNCT 0x02b9 0x02ba 0x02c2 - 0x02cf 0x02d2 - 0x02df 0x02e5 - 0x02ed
+PRINT 0x02b0 - 0x02ee
+SWIDTH1 0x02b0 - 0x02ee
+
+
+/*
+ * U+0300 - U+036F : Combining Diacritical Marks
+ */
+
+GRAPH 0x0300 - 0x034E 0x0350 - 0x036f
+PRINT 0x0300 - 0x034E 0x0350 - 0x036f
+SWIDTH0 0x0300 - 0x034E 0x0350 - 0x036f
+
+MAPUPPER < 0x0345 0x0399 >
+
+
+/*
+ * U+0370 - U+03FF : Greek and Coptic
+ */
+
+ALPHA 0x0386 0x0388 - 0x038a 0x038c 0x038e - 0x03a1 0x03a3 - 0x03ce
+ALPHA 0x03d0 - 0x03f5
+GRAPH 0x0374 0x0375 0x037a 0x037e 0x0384 - 0x038a 0x038c
+GRAPH 0x038e - 0x03a1 0x03a3 - 0x03ce 0x03d0 - 0x03f6
+LOWER 0x0390 0x03ac - 0x03ce 0x03d0 0x03d1 0x03d5 - 0x03d7
+LOWER 0x03d9 0x03db 0x03dd 0x03df 0x03e1 0x03e3 0x03e5
+LOWER 0x03e7 0x03e9 0x03eb 0x03ed 0x03ef - 0x03f3 0x03f5
+PUNCT 0x0374 0x0375 0x037e 0x0384 0x0385 0x0387 0x03f6
+UPPER 0x0386 0x0388 - 0x038a 0x038c 0x038e 0x038f 0x0391 - 0x03a1
+UPPER 0x03a3 - 0x03ab 0x03d2 - 0x03d4 0x03d8 0x03da 0x03dc
+UPPER 0x03de 0x03e0 0x03e2 0x03e4 0x03e6 0x03e8 0x03ea
+UPPER 0x03ec 0x03ee 0x03f4
+PRINT 0x0374 0x0375 0x037a 0x037e 0x0384 - 0x038a 0x038c
+PRINT 0x038e - 0x03a1 0x03a3 - 0x03ce 0x03d0 - 0x03f6
+SWIDTH1 0x0374 0x0375 0x037a 0x037e 0x0384 - 0x038a 0x038c
+SWIDTH1 0x038e - 0x03a1 0x03a3 - 0x03ce 0x03d0 - 0x03f6
+
+MAPUPPER < 0x03ac 0x0386 >
+MAPUPPER < 0x03ad - 0x03af : 0x0388 >
+MAPUPPER < 0x03b1 - 0x03c1 : 0x0391 >
+MAPUPPER < 0x03c2 0x03a3 >
+MAPUPPER < 0x03c3 - 0x03cb : 0x03a3 >
+MAPUPPER < 0x03cc 0x038c >
+MAPUPPER < 0x03cd - 0x03ce : 0x038e >
+MAPUPPER < 0x03d0 0x0392 >
+MAPUPPER < 0x03d1 0x0398 >
+MAPUPPER < 0x03d5 0x03a6 >
+MAPUPPER < 0x03d6 0x03a0 >
+MAPUPPER < 0x03d9 0x03d8 >
+MAPUPPER < 0x03db 0x03da >
+MAPUPPER < 0x03dd 0x03dc >
+MAPUPPER < 0x03df 0x03de >
+MAPUPPER < 0x03e1 0x03e0 >
+MAPUPPER < 0x03e3 0x03e2 >
+MAPUPPER < 0x03e5 0x03e4 >
+MAPUPPER < 0x03e7 0x03e6 >
+MAPUPPER < 0x03e9 0x03e8 >
+MAPUPPER < 0x03eb 0x03ea >
+MAPUPPER < 0x03ed 0x03ec >
+MAPUPPER < 0x03ef 0x03ee >
+MAPUPPER < 0x03f0 0x039a >
+MAPUPPER < 0x03f1 0x03a1 >
+MAPUPPER < 0x03f2 0x03a3 >
+MAPUPPER < 0x03f5 0x0395 >
+MAPLOWER < 0x0386 0x03ac >
+MAPLOWER < 0x0388 - 0x038a : 0x03ad >
+MAPLOWER < 0x038c 0x03cc >
+MAPLOWER < 0x038e - 0x038f : 0x03cd >
+MAPLOWER < 0x0391 - 0x03a1 : 0x03b1 >
+MAPLOWER < 0x03a3 - 0x03ab : 0x03c3 >
+MAPLOWER < 0x03d8 0x03d9 >
+MAPLOWER < 0x03da 0x03db >
+MAPLOWER < 0x03dc 0x03dd >
+MAPLOWER < 0x03de 0x03df >
+MAPLOWER < 0x03e0 0x03e1 >
+MAPLOWER < 0x03e2 0x03e3 >
+MAPLOWER < 0x03e4 0x03e5 >
+MAPLOWER < 0x03e6 0x03e7 >
+MAPLOWER < 0x03e8 0x03e9 >
+MAPLOWER < 0x03ea 0x03eb >
+MAPLOWER < 0x03ec 0x03ed >
+MAPLOWER < 0x03ee 0x03ef >
+MAPLOWER < 0x03f4 0x03b8 >
+
+
+/*
+ * U+0400 - U+04FF : Cyrillic
+ */
+
+ALPHA 0x0400 - 0x0481 0x048a - 0x04ce 0x04d0 - 0x04f5 0x04f8 0x04f9
+GRAPH 0x0400 - 0x0486 0x0488 - 0x04ce 0x04d0 - 0x04f5 0x04f8 0x04f9
+LOWER 0x0430 - 0x045f 0x0461 0x0463 0x0465 0x0467 0x0469
+LOWER 0x046b 0x046d 0x046f 0x0471 0x0473 0x0475 0x0477
+LOWER 0x0479 0x047b 0x047d 0x047f 0x0481 0x048b 0x048d
+LOWER 0x048f 0x0491 0x0493 0x0495 0x0497 0x0499 0x049b
+LOWER 0x049d 0x049f 0x04a1 0x04a3 0x04a5 0x04a7 0x04a9
+LOWER 0x04ab 0x04ad 0x04af 0x04b1 0x04b3 0x04b5 0x04b7
+LOWER 0x04b9 0x04bb 0x04bd 0x04bf 0x04c2 0x04c4 0x04c6
+LOWER 0x04c8 0x04ca 0x04cc 0x04ce 0x04d1 0x04d3 0x04d5
+LOWER 0x04d7 0x04d9 0x04db 0x04dd 0x04df 0x04e1 0x04e3
+LOWER 0x04e5 0x04e7 0x04e9 0x04eb 0x04ed 0x04ef 0x04f1
+LOWER 0x04f3 0x04f5 0x04f7 0x04f9
+PUNCT 0x0482
+UPPER 0x0400 - 0x042f 0x0460 0x0462 0x0464 0x0466 0x0468
+UPPER 0x046a 0x046c 0x046e 0x0470 0x0472 0x0474 0x0476
+UPPER 0x0478 0x047a 0x047c 0x047e 0x0480 0x048a 0x048c
+UPPER 0x048e 0x0490 0x0492 0x0494 0x0496 0x0498 0x049a
+UPPER 0x049c 0x049e 0x04a0 0x04a2 0x04a4 0x04a6 0x04a8
+UPPER 0x04aa 0x04ac 0x04ae 0x04b0 0x04b2 0x04b4 0x04b6
+UPPER 0x04b8 0x04ba 0x04bc 0x04be 0x04c0 0x04c1 0x04c3
+UPPER 0x04c5 0x04c7 0x04c9 0x04cb 0x04cd 0x04d0 0x04d2
+UPPER 0x04d4 0x04d6 0x04d8 0x04da 0x04dc 0x04de 0x04e0
+UPPER 0x04e2 0x04e4 0x04e6 0x04e8 0x04ea 0x04ec 0x04ee
+UPPER 0x04f0 0x04f2 0x04f4 0x04f6 0x04f8
+PRINT 0x0400 - 0x0486 0x0488 - 0x04ce 0x04d0 - 0x04f9
+SWIDTH0 0x0483 - 0x0486 0x0488 - 0x0489
+SWIDTH1 0x0400 - 0x0482 0x048a - 0x04ce 0x04d0 - 0x04f9
+
+MAPUPPER < 0x0430 - 0x044f : 0x0410 >
+MAPUPPER < 0x0450 - 0x045f : 0x0400 >
+MAPUPPER < 0x0461 0x0460 >
+MAPUPPER < 0x0463 0x0462 >
+MAPUPPER < 0x0465 0x0464 >
+MAPUPPER < 0x0467 0x0466 >
+MAPUPPER < 0x0469 0x0468 >
+MAPUPPER < 0x046b 0x046a >
+MAPUPPER < 0x046d 0x046c >
+MAPUPPER < 0x046f 0x046e >
+MAPUPPER < 0x0471 0x0470 >
+MAPUPPER < 0x0473 0x0472 >
+MAPUPPER < 0x0475 0x0474 >
+MAPUPPER < 0x0477 0x0476 >
+MAPUPPER < 0x0479 0x0478 >
+MAPUPPER < 0x047b 0x047a >
+MAPUPPER < 0x047d 0x047c >
+MAPUPPER < 0x047f 0x047e >
+MAPUPPER < 0x0481 0x0480 >
+MAPUPPER < 0x048b 0x048a >
+MAPUPPER < 0x048d 0x048c >
+MAPUPPER < 0x048f 0x048e >
+MAPUPPER < 0x0491 0x0490 >
+MAPUPPER < 0x0493 0x0492 >
+MAPUPPER < 0x0495 0x0494 >
+MAPUPPER < 0x0497 0x0496 >
+MAPUPPER < 0x0499 0x0498 >
+MAPUPPER < 0x049b 0x049a >
+MAPUPPER < 0x049d 0x049c >
+MAPUPPER < 0x049f 0x049e >
+MAPUPPER < 0x04a1 0x04a0 >
+MAPUPPER < 0x04a3 0x04a2 >
+MAPUPPER < 0x04a5 0x04a4 >
+MAPUPPER < 0x04a7 0x04a6 >
+MAPUPPER < 0x04a9 0x04a8 >
+MAPUPPER < 0x04ab 0x04aa >
+MAPUPPER < 0x04ad 0x04ac >
+MAPUPPER < 0x04af 0x04ae >
+MAPUPPER < 0x04b1 0x04b0 >
+MAPUPPER < 0x04b3 0x04b2 >
+MAPUPPER < 0x04b5 0x04b4 >
+MAPUPPER < 0x04b7 0x04b6 >
+MAPUPPER < 0x04b9 0x04b8 >
+MAPUPPER < 0x04bb 0x04ba >
+MAPUPPER < 0x04bd 0x04bc >
+MAPUPPER < 0x04bf 0x04be >
+MAPUPPER < 0x04c2 0x04c1 >
+MAPUPPER < 0x04c4 0x04c3 >
+MAPUPPER < 0x04c6 0x04c5 >
+MAPUPPER < 0x04c8 0x04c7 >
+MAPUPPER < 0x04ca 0x04c9 >
+MAPUPPER < 0x04cc 0x04cb >
+MAPUPPER < 0x04ce 0x04cd >
+MAPUPPER < 0x04d1 0x04d0 >
+MAPUPPER < 0x04d3 0x04d2 >
+MAPUPPER < 0x04d5 0x04d4 >
+MAPUPPER < 0x04d7 0x04d6 >
+MAPUPPER < 0x04d9 0x04d8 >
+MAPUPPER < 0x04db 0x04da >
+MAPUPPER < 0x04dd 0x04dc >
+MAPUPPER < 0x04df 0x04de >
+MAPUPPER < 0x04e1 0x04e0 >
+MAPUPPER < 0x04e3 0x04e2 >
+MAPUPPER < 0x04e5 0x04e4 >
+MAPUPPER < 0x04e7 0x04e6 >
+MAPUPPER < 0x04e9 0x04e8 >
+MAPUPPER < 0x04eb 0x04ea >
+MAPUPPER < 0x04ed 0x04ec >
+MAPUPPER < 0x04ef 0x04ee >
+MAPUPPER < 0x04f1 0x04f0 >
+MAPUPPER < 0x04f3 0x04f2 >
+MAPUPPER < 0x04f5 0x04f4 >
+MAPUPPER < 0x04f7 0x04f6 >
+MAPUPPER < 0x04f9 0x04f8 >
+MAPLOWER < 0x0400 - 0x040f : 0x0450 >
+MAPLOWER < 0x0410 - 0x042f : 0x0430 >
+MAPLOWER < 0x0460 0x0461 >
+MAPLOWER < 0x0462 0x0463 >
+MAPLOWER < 0x0464 0x0465 >
+MAPLOWER < 0x0466 0x0467 >
+MAPLOWER < 0x0468 0x0469 >
+MAPLOWER < 0x046a 0x046b >
+MAPLOWER < 0x046c 0x046d >
+MAPLOWER < 0x046e 0x046f >
+MAPLOWER < 0x0470 0x0471 >
+MAPLOWER < 0x0472 0x0473 >
+MAPLOWER < 0x0474 0x0475 >
+MAPLOWER < 0x0476 0x0477 >
+MAPLOWER < 0x0478 0x0479 >
+MAPLOWER < 0x047a 0x047b >
+MAPLOWER < 0x047c 0x047d >
+MAPLOWER < 0x047e 0x047f >
+MAPLOWER < 0x0480 0x0481 >
+MAPLOWER < 0x048a 0x048b >
+MAPLOWER < 0x048c 0x048d >
+MAPLOWER < 0x048e 0x048f >
+MAPLOWER < 0x0490 0x0491 >
+MAPLOWER < 0x0492 0x0493 >
+MAPLOWER < 0x0494 0x0495 >
+MAPLOWER < 0x0496 0x0497 >
+MAPLOWER < 0x0498 0x0499 >
+MAPLOWER < 0x049a 0x049b >
+MAPLOWER < 0x049c 0x049d >
+MAPLOWER < 0x049e 0x049f >
+MAPLOWER < 0x04a0 0x04a1 >
+MAPLOWER < 0x04a2 0x04a3 >
+MAPLOWER < 0x04a4 0x04a5 >
+MAPLOWER < 0x04a6 0x04a7 >
+MAPLOWER < 0x04a8 0x04a9 >
+MAPLOWER < 0x04aa 0x04ab >
+MAPLOWER < 0x04ac 0x04ad >
+MAPLOWER < 0x04ae 0x04af >
+MAPLOWER < 0x04b0 0x04b1 >
+MAPLOWER < 0x04b2 0x04b3 >
+MAPLOWER < 0x04b4 0x04b5 >
+MAPLOWER < 0x04b6 0x04b7 >
+MAPLOWER < 0x04b8 0x04b9 >
+MAPLOWER < 0x04ba 0x04bb >
+MAPLOWER < 0x04bc 0x04bd >
+MAPLOWER < 0x04be 0x04bf >
+MAPLOWER < 0x04c1 0x04c2 >
+MAPLOWER < 0x04c3 0x04c4 >
+MAPLOWER < 0x04c5 0x04c6 >
+MAPLOWER < 0x04c7 0x04c8 >
+MAPLOWER < 0x04c9 0x04ca >
+MAPLOWER < 0x04cb 0x04cc >
+MAPLOWER < 0x04cd 0x04ce >
+MAPLOWER < 0x04d0 0x04d1 >
+MAPLOWER < 0x04d2 0x04d3 >
+MAPLOWER < 0x04d4 0x04d5 >
+MAPLOWER < 0x04d6 0x04d7 >
+MAPLOWER < 0x04d8 0x04d9 >
+MAPLOWER < 0x04da 0x04db >
+MAPLOWER < 0x04dc 0x04dd >
+MAPLOWER < 0x04de 0x04df >
+MAPLOWER < 0x04e0 0x04e1 >
+MAPLOWER < 0x04e2 0x04e3 >
+MAPLOWER < 0x04e4 0x04e5 >
+MAPLOWER < 0x04e6 0x04e7 >
+MAPLOWER < 0x04e8 0x04e9 >
+MAPLOWER < 0x04ea 0x04eb >
+MAPLOWER < 0x04ec 0x04ed >
+MAPLOWER < 0x04ee 0x04ef >
+MAPLOWER < 0x04f0 0x04f1 >
+MAPLOWER < 0x04f2 0x04f3 >
+MAPLOWER < 0x04f4 0x04f5 >
+MAPLOWER < 0x04f6 0x04f7 >
+MAPLOWER < 0x04f8 0x04f9 >
+
+
+/*
+ * U+0500 - U+052F : Cyrillic Supplementary
+ */
+
+ALPHA 0x0500 - 0x050f
+GRAPH 0x0500 - 0x050f
+LOWER 0x0501 0x0503 0x0505 0x0507 0x0509 0x050b 0x050d
+LOWER 0x050f
+UPPER 0x0500 0x0502 0x0504 0x0506 0x0508 0x050a 0x050c
+UPPER 0x050e
+PRINT 0x0500 - 0x050f
+SWIDTH1 0x0500 - 0x050f
+
+MAPUPPER < 0x0501 0x0500 >
+MAPUPPER < 0x0503 0x0502 >
+MAPUPPER < 0x0505 0x0504 >
+MAPUPPER < 0x0507 0x0506 >
+MAPUPPER < 0x0509 0x0508 >
+MAPUPPER < 0x050b 0x050a >
+MAPUPPER < 0x050d 0x050c >
+MAPUPPER < 0x050f 0x050e >
+MAPLOWER < 0x0500 0x0501 >
+MAPLOWER < 0x0502 0x0503 >
+MAPLOWER < 0x0504 0x0505 >
+MAPLOWER < 0x0506 0x0507 >
+MAPLOWER < 0x0508 0x0509 >
+MAPLOWER < 0x050a 0x050b >
+MAPLOWER < 0x050c 0x050d >
+MAPLOWER < 0x050e 0x050f >
+
+
+/*
+ * U+0530 - U+058F : Armenian
+ */
+
+ALPHA 0x0531 - 0x0556 0x0561 - 0x0587
+GRAPH 0x0531 - 0x0556 0x0559 - 0x055f 0x0561 - 0x0587 0x0589 0x058a
+LOWER 0x0561 - 0x0587
+PUNCT 0x055a - 0x055f 0x0589 0x058a
+UPPER 0x0531 - 0x0556
+PRINT 0x0531 - 0x0556 0x0559 - 0x055f 0x0561 - 0x0587 0x0589 0x058a
+SWIDTH1 0x0531 - 0x0556 0x0559 - 0x055f 0x0561 - 0x0587 0x0589 0x058a
+
+MAPUPPER < 0x0561 - 0x0586 : 0x0531 >
+MAPLOWER < 0x0531 - 0x0556 : 0x0561 >
+
+
+/*
+ * U+0590 - U+05FF : Hebrew
+ */
+
+GRAPH 0x0591 - 0x05a1 0x05a3 - 0x05b9 0x05bb - 0x05c4 0x05d0 - 0x05ea
+GRAPH 0x05f0 - 0x05f4
+PUNCT 0x05be 0x05c0 0x05c3 0x05f3 0x05f4
+PRINT 0x0591 - 0x05a1 0x05a3 - 0x05b9 0x05bb - 0x05c4 0x05d0 - 0x05ea
+PRINT 0x05f0 - 0x05f4
+SWIDTH1 0x0591 - 0x05a1 0x05a3 - 0x05b9 0x05bb - 0x05c4 0x05d0 - 0x05ea
+SWIDTH1 0x05f0 - 0x05f4
+
+
+/*
+ * U+0600 - U+06FF : Arabic
+ */
+
+CONTROL 0x06dd
+GRAPH 0x060c 0x061b 0x061f 0x0621 - 0x063a 0x0640 - 0x0655
+GRAPH 0x0660 - 0x06dc 0x06de - 0x06ed 0x06f0 - 0x06fe
+PUNCT 0x060c 0x061b 0x061f 0x066a - 0x066d 0x06d4 0x06e9
+PUNCT 0x06fd 0x06fe
+PRINT 0x060c 0x061b 0x061f 0x0621 - 0x063a 0x0640 - 0x0655
+PRINT 0x0660 - 0x06dc 0x06de - 0x06ed 0x06f0 - 0x06fe
+SWIDTH1 0x060c 0x061b 0x061f 0x0621 - 0x063a 0x0640 - 0x0655
+SWIDTH1 0x0660 - 0x06dc 0x06de - 0x06ed 0x06f0 - 0x06fe
+
+
+/*
+ * U+0700 - U+074F : Syriac
+ */
+
+CONTROL 0x070f
+GRAPH 0x0700 - 0x070d 0x0710 - 0x072c 0x0730 - 0x074a
+PUNCT 0x0700 - 0x070d
+PRINT 0x0700 - 0x070d 0x0710 - 0x072c 0x0730 - 0x074a
+SWIDTH1 0x0700 - 0x070d 0x0710 - 0x072c 0x0730 - 0x074a
+
+
+/*
+ * U+0780 - U+07BF : Thaana
+ */
+
+GRAPH 0x0780 - 0x07b1
+PRINT 0x0780 - 0x07b1
+SWIDTH1 0x0780 - 0x07b1
+
+
+/*
+ * U+0900 - U+097F : Devanagari
+ */
+
+GRAPH 0x0901 - 0x0903 0x0905 - 0x0939 0x093c - 0x094d 0x0950 - 0x0954
+GRAPH 0x0958 - 0x0970
+PUNCT 0x0964 0x0965 0x0970
+PRINT 0x0901 - 0x0903 0x0905 - 0x0939 0x093c - 0x094d 0x0950 - 0x0954
+PRINT 0x0958 - 0x0970
+SWIDTH1 0x0901 - 0x0903 0x0905 - 0x0939 0x093c - 0x094d 0x0950 - 0x0954
+SWIDTH1 0x0958 - 0x0970
+
+
+/*
+ * U+0980 - U+09FF : Bengali
+ */
+
+GRAPH 0x0981 - 0x0983 0x0985 - 0x098c 0x098f 0x0990 0x0993 - 0x09a8
+GRAPH 0x09aa - 0x09b0 0x09b2 0x09b6 - 0x09b9 0x09bc 0x09be - 0x09c4
+GRAPH 0x09c7 0x09c8 0x09cb - 0x09cd 0x09d7 0x09dc 0x09dd
+GRAPH 0x09df - 0x09e3 0x09e6 - 0x09fa
+PUNCT 0x09f2 0x09f3 0x09fa
+PRINT 0x0981 - 0x0983 0x0985 - 0x098c 0x098f 0x0990 0x0993 - 0x09a8
+PRINT 0x09aa - 0x09b0 0x09b2 0x09b6 - 0x09b9 0x09bc 0x09be - 0x09c4
+PRINT 0x09c7 0x09c8 0x09cb - 0x09cd 0x09d7 0x09dc 0x09dd
+PRINT 0x09df - 0x09e3 0x09e6 - 0x09fa
+SPECIAL 0x09f4 - 0x09f9
+SWIDTH1 0x0981 - 0x0983 0x0985 - 0x098c 0x098f 0x0990 0x0993 - 0x09a8
+SWIDTH1 0x09aa - 0x09b0 0x09b2 0x09b6 - 0x09b9 0x09bc 0x09be - 0x09c4
+SWIDTH1 0x09c7 0x09c8 0x09cb - 0x09cd 0x09d7 0x09dc 0x09dd
+SWIDTH1 0x09df - 0x09e3 0x09e6 - 0x09fa
+
+
+/*
+ * U+0A00 - U+0A7F : Gurmukhi
+ */
+
+GRAPH 0x0a02 0x0a05 - 0x0a0a 0x0a0f 0x0a10 0x0a13 - 0x0a28
+GRAPH 0x0a2a - 0x0a30 0x0a32 0x0a33 0x0a35 0x0a36 0x0a38 0x0a39
+GRAPH 0x0a3c 0x0a3e - 0x0a42 0x0a47 0x0a48 0x0a4b - 0x0a4d
+GRAPH 0x0a59 - 0x0a5c 0x0a5e 0x0a66 - 0x0a74
+PRINT 0x0a02 0x0a05 - 0x0a0a 0x0a0f 0x0a10 0x0a13 - 0x0a28
+PRINT 0x0a2a - 0x0a30 0x0a32 0x0a33 0x0a35 0x0a36 0x0a38 0x0a39
+PRINT 0x0a3c 0x0a3e - 0x0a42 0x0a47 0x0a48 0x0a4b - 0x0a4d
+PRINT 0x0a59 - 0x0a5c 0x0a5e 0x0a66 - 0x0a74
+SWIDTH1 0x0a02 0x0a05 - 0x0a0a 0x0a0f 0x0a10 0x0a13 - 0x0a28
+SWIDTH1 0x0a2a - 0x0a30 0x0a32 0x0a33 0x0a35 0x0a36 0x0a38 0x0a39
+SWIDTH1 0x0a3c 0x0a3e - 0x0a42 0x0a47 0x0a48 0x0a4b - 0x0a4d
+SWIDTH1 0x0a59 - 0x0a5c 0x0a5e 0x0a66 - 0x0a74
+
+
+/*
+ * U+0A80 - U+0AFF : Gujarati
+ */
+
+GRAPH 0x0a81 - 0x0a83 0x0a85 - 0x0a8b 0x0a8d 0x0a8f - 0x0a91
+GRAPH 0x0a93 - 0x0aa8 0x0aaa - 0x0ab0 0x0ab2 0x0ab3 0x0ab5 - 0x0ab9
+GRAPH 0x0abc - 0x0ac5 0x0ac7 - 0x0ac9 0x0acb - 0x0acd 0x0ad0
+GRAPH 0x0ae0 0x0ae6 - 0x0aef
+PRINT 0x0a81 - 0x0a83 0x0a85 - 0x0a8b 0x0a8d 0x0a8f - 0x0a91
+PRINT 0x0a93 - 0x0aa8 0x0aaa - 0x0ab0 0x0ab2 0x0ab3 0x0ab5 - 0x0ab9
+PRINT 0x0abc - 0x0ac5 0x0ac7 - 0x0ac9 0x0acb - 0x0acd 0x0ad0
+PRINT 0x0ae0 0x0ae6 - 0x0aef
+SWIDTH1 0x0a81 - 0x0a83 0x0a85 - 0x0a8b 0x0a8d 0x0a8f - 0x0a91
+SWIDTH1 0x0a93 - 0x0aa8 0x0aaa - 0x0ab0 0x0ab2 0x0ab3 0x0ab5 - 0x0ab9
+SWIDTH1 0x0abc - 0x0ac5 0x0ac7 - 0x0ac9 0x0acb - 0x0acd 0x0ad0
+SWIDTH1 0x0ae0 0x0ae6 - 0x0aef
+
+
+/*
+ * U+0B00 - U+0B7F : Oriya
+ */
+
+GRAPH 0x0b01 - 0x0b03 0x0b05 - 0x0b0c 0x0b0f 0x0b10 0x0b13 - 0x0b28
+GRAPH 0x0b2a - 0x0b30 0x0b32 0x0b33 0x0b36 - 0x0b39 0x0b3c - 0x0b43
+GRAPH 0x0b47 0x0b48 0x0b4b - 0x0b4d 0x0b56 0x0b57 0x0b5c 0x0b5d
+GRAPH 0x0b5f - 0x0b61 0x0b66 - 0x0b70
+PUNCT 0x0b70
+PRINT 0x0b01 - 0x0b03 0x0b05 - 0x0b0c 0x0b0f 0x0b10 0x0b13 - 0x0b28
+PRINT 0x0b2a - 0x0b30 0x0b32 0x0b33 0x0b36 - 0x0b39 0x0b3c - 0x0b43
+PRINT 0x0b47 0x0b48 0x0b4b - 0x0b4d 0x0b56 0x0b57 0x0b5c 0x0b5d
+PRINT 0x0b5f - 0x0b61 0x0b66 - 0x0b70
+SWIDTH1 0x0b01 - 0x0b03 0x0b05 - 0x0b0c 0x0b0f 0x0b10 0x0b13 - 0x0b28
+SWIDTH1 0x0b2a - 0x0b30 0x0b32 0x0b33 0x0b36 - 0x0b39 0x0b3c - 0x0b43
+SWIDTH1 0x0b47 0x0b48 0x0b4b - 0x0b4d 0x0b56 0x0b57 0x0b5c 0x0b5d
+SWIDTH1 0x0b5f - 0x0b61 0x0b66 - 0x0b70
+
+
+/*
+ * U+0B80 - U+0BFF : Tamil
+ */
+
+GRAPH 0x0b82 0x0b83 0x0b85 - 0x0b8a 0x0b8e - 0x0b90 0x0b92 - 0x0b95
+GRAPH 0x0b99 0x0b9a 0x0b9c 0x0b9e 0x0b9f 0x0ba3 0x0ba4
+GRAPH 0x0ba8 - 0x0baa 0x0bae - 0x0bb5 0x0bb7 - 0x0bb9 0x0bbe - 0x0bc2
+GRAPH 0x0bc6 - 0x0bc8 0x0bca - 0x0bcd 0x0bd7 0x0be7 - 0x0bf2
+PRINT 0x0b82 0x0b83 0x0b85 - 0x0b8a 0x0b8e - 0x0b90 0x0b92 - 0x0b95
+PRINT 0x0b99 0x0b9a 0x0b9c 0x0b9e 0x0b9f 0x0ba3 0x0ba4
+PRINT 0x0ba8 - 0x0baa 0x0bae - 0x0bb5 0x0bb7 - 0x0bb9 0x0bbe - 0x0bc2
+PRINT 0x0bc6 - 0x0bc8 0x0bca - 0x0bcd 0x0bd7 0x0be7 - 0x0bf2
+SPECIAL 0x0bf0 - 0x0bf2
+SWIDTH1 0x0b82 0x0b83 0x0b85 - 0x0b8a 0x0b8e - 0x0b90 0x0b92 - 0x0b95
+SWIDTH1 0x0b99 0x0b9a 0x0b9c 0x0b9e 0x0b9f 0x0ba3 0x0ba4
+SWIDTH1 0x0ba8 - 0x0baa 0x0bae - 0x0bb5 0x0bb7 - 0x0bb9 0x0bbe - 0x0bc2
+SWIDTH1 0x0bc6 - 0x0bc8 0x0bca - 0x0bcd 0x0bd7 0x0be7 - 0x0bf2
+
+
+/*
+ * U+0C00 - U+0C7F : Telugu
+ */
+
+GRAPH 0x0c01 - 0x0c03 0x0c05 - 0x0c0c 0x0c0e - 0x0c10 0x0c12 - 0x0c28
+GRAPH 0x0c2a - 0x0c33 0x0c35 - 0x0c39 0x0c3e - 0x0c44 0x0c46 - 0x0c48
+GRAPH 0x0c4a - 0x0c4d 0x0c55 0x0c56 0x0c60 0x0c61 0x0c66 - 0x0c6f
+PRINT 0x0c01 - 0x0c03 0x0c05 - 0x0c0c 0x0c0e - 0x0c10 0x0c12 - 0x0c28
+PRINT 0x0c2a - 0x0c33 0x0c35 - 0x0c39 0x0c3e - 0x0c44 0x0c46 - 0x0c48
+PRINT 0x0c4a - 0x0c4d 0x0c55 0x0c56 0x0c60 0x0c61 0x0c66 - 0x0c6f
+SWIDTH1 0x0c01 - 0x0c03 0x0c05 - 0x0c0c 0x0c0e - 0x0c10 0x0c12 - 0x0c28
+SWIDTH1 0x0c2a - 0x0c33 0x0c35 - 0x0c39 0x0c3e - 0x0c44 0x0c46 - 0x0c48
+SWIDTH1 0x0c4a - 0x0c4d 0x0c55 0x0c56 0x0c60 0x0c61 0x0c66 - 0x0c6f
+
+
+/*
+ * U+0C80 - U+0CFF : Kannada
+ */
+
+GRAPH 0x0c82 0x0c83 0x0c85 - 0x0c8c 0x0c8e - 0x0c90 0x0c92 - 0x0ca8
+GRAPH 0x0caa - 0x0cb3 0x0cb5 - 0x0cb9 0x0cbe - 0x0cc4 0x0cc6 - 0x0cc8
+GRAPH 0x0cca - 0x0ccd 0x0cd5 0x0cd6 0x0cde 0x0ce0 0x0ce1
+GRAPH 0x0ce6 - 0x0cef
+PRINT 0x0c82 0x0c83 0x0c85 - 0x0c8c 0x0c8e - 0x0c90 0x0c92 - 0x0ca8
+PRINT 0x0caa - 0x0cb3 0x0cb5 - 0x0cb9 0x0cbe - 0x0cc4 0x0cc6 - 0x0cc8
+PRINT 0x0cca - 0x0ccd 0x0cd5 0x0cd6 0x0cde 0x0ce0 0x0ce1
+PRINT 0x0ce6 - 0x0cef
+SWIDTH1 0x0c82 0x0c83 0x0c85 - 0x0c8c 0x0c8e - 0x0c90 0x0c92 - 0x0ca8
+SWIDTH1 0x0caa - 0x0cb3 0x0cb5 - 0x0cb9 0x0cbe - 0x0cc4 0x0cc6 - 0x0cc8
+SWIDTH1 0x0cca - 0x0ccd 0x0cd5 0x0cd6 0x0cde 0x0ce0 0x0ce1
+SWIDTH1 0x0ce6 - 0x0cef
+
+
+/*
+ * U+0D00 - U+0D7F : Malayalam
+ */
+
+GRAPH 0x0d02 0x0d03 0x0d05 - 0x0d0c 0x0d0e - 0x0d10 0x0d12 - 0x0d28
+GRAPH 0x0d2a - 0x0d39 0x0d3e - 0x0d43 0x0d46 - 0x0d48 0x0d4a - 0x0d4d
+GRAPH 0x0d57 0x0d60 0x0d61 0x0d66 - 0x0d6f
+PRINT 0x0d02 0x0d03 0x0d05 - 0x0d0c 0x0d0e - 0x0d10 0x0d12 - 0x0d28
+PRINT 0x0d2a - 0x0d39 0x0d3e - 0x0d43 0x0d46 - 0x0d48 0x0d4a - 0x0d4d
+PRINT 0x0d57 0x0d60 0x0d61 0x0d66 - 0x0d6f
+SWIDTH1 0x0d02 0x0d03 0x0d05 - 0x0d0c 0x0d0e - 0x0d10 0x0d12 - 0x0d28
+SWIDTH1 0x0d2a - 0x0d39 0x0d3e - 0x0d43 0x0d46 - 0x0d48 0x0d4a - 0x0d4d
+SWIDTH1 0x0d57 0x0d60 0x0d61 0x0d66 - 0x0d6f
+
+
+/*
+ * U+0D80 - U+0DFF : Sinhala
+ */
+
+GRAPH 0x0d82 0x0d83 0x0d85 - 0x0d96 0x0d9a - 0x0db1 0x0db3 - 0x0dbb
+GRAPH 0x0dbd 0x0dc0 - 0x0dc6 0x0dca 0x0dcf - 0x0dd4 0x0dd6
+GRAPH 0x0dd8 - 0x0ddf 0x0df2 - 0x0df4
+PUNCT 0x0df4
+PRINT 0x0d82 0x0d83 0x0d85 - 0x0d96 0x0d9a - 0x0db1 0x0db3 - 0x0dbb
+PRINT 0x0dbd 0x0dc0 - 0x0dc6 0x0dca 0x0dcf - 0x0dd4 0x0dd6
+PRINT 0x0dd8 - 0x0ddf 0x0df2 - 0x0df4
+SWIDTH1 0x0d82 0x0d83 0x0d85 - 0x0d96 0x0d9a - 0x0db1 0x0db3 - 0x0dbb
+SWIDTH1 0x0dbd 0x0dc0 - 0x0dc6 0x0dca 0x0dcf - 0x0dd4 0x0dd6
+SWIDTH1 0x0dd8 - 0x0ddf 0x0df2 - 0x0df4
+
+
+/*
+ * U+0E00 - U+0E7F : Thai
+ */
+
+GRAPH 0x0e01 - 0x0e3a 0x0e3f - 0x0e5b
+PUNCT 0x0e3f 0x0e4f 0x0e5a 0x0e5b
+PRINT 0x0e01 - 0x0e3a 0x0e3f - 0x0e5b
+SWIDTH0 0x0e31 0x0e34 - 0x0e3a 0x0e47 - 0x0e4e
+SWIDTH1 0x0e01 - 0x0e30 0x0e32 - 0x0e33 0x0e3f - 0x0e46 0x0e4f - 0x0e5b
+
+
+/*
+ * U+0E80 - U+0EFF : Lao
+ */
+
+GRAPH 0x0e81 0x0e82 0x0e84 0x0e87 0x0e88 0x0e8a 0x0e8d
+GRAPH 0x0e94 - 0x0e97 0x0e99 - 0x0e9f 0x0ea1 - 0x0ea3 0x0ea5
+GRAPH 0x0ea7 0x0eaa 0x0eab 0x0ead - 0x0eb9 0x0ebb - 0x0ebd
+GRAPH 0x0ec0 - 0x0ec4 0x0ec6 0x0ec8 - 0x0ecd 0x0ed0 - 0x0ed9
+GRAPH 0x0edc 0x0edd
+PRINT 0x0e81 0x0e82 0x0e84 0x0e87 0x0e88 0x0e8a 0x0e8d
+PRINT 0x0e94 - 0x0e97 0x0e99 - 0x0e9f 0x0ea1 - 0x0ea3 0x0ea5
+PRINT 0x0ea7 0x0eaa 0x0eab 0x0ead - 0x0eb9 0x0ebb - 0x0ebd
+PRINT 0x0ec0 - 0x0ec4 0x0ec6 0x0ec8 - 0x0ecd 0x0ed0 - 0x0ed9
+PRINT 0x0edc 0x0edd
+SWIDTH1 0x0e81 0x0e82 0x0e84 0x0e87 0x0e88 0x0e8a 0x0e8d
+SWIDTH1 0x0e94 - 0x0e97 0x0e99 - 0x0e9f 0x0ea1 - 0x0ea3 0x0ea5
+SWIDTH1 0x0ea7 0x0eaa 0x0eab 0x0ead - 0x0eb9 0x0ebb - 0x0ebd
+SWIDTH1 0x0ec0 - 0x0ec4 0x0ec6 0x0ec8 - 0x0ecd 0x0ed0 - 0x0ed9
+SWIDTH1 0x0edc 0x0edd
+
+
+/*
+ * U+0F00 - U+0FFF : Tibetan
+ */
+
+GRAPH 0x0f00 - 0x0f47 0x0f49 - 0x0f6a 0x0f71 - 0x0f8b 0x0f90 - 0x0f97
+GRAPH 0x0f99 - 0x0fbc 0x0fbe - 0x0fcc 0x0fcf
+PUNCT 0x0f01 - 0x0f17 0x0f1a - 0x0f1f 0x0f34 0x0f36 0x0f38
+PUNCT 0x0f3a - 0x0f3d 0x0f85 0x0fbe - 0x0fc5 0x0fc7 - 0x0fcc
+PUNCT 0x0fcf
+PRINT 0x0f00 - 0x0f47 0x0f49 - 0x0f6a 0x0f71 - 0x0f8b 0x0f90 - 0x0f97
+PRINT 0x0f99 - 0x0fbc 0x0fbe - 0x0fcc 0x0fcf
+SPECIAL 0x0f2a - 0x0f33
+PHONOGRAM 0x0f00
+SWIDTH1 0x0f00 - 0x0f47 0x0f49 - 0x0f6a 0x0f71 - 0x0f8b 0x0f90 - 0x0f97
+SWIDTH1 0x0f99 - 0x0fbc 0x0fbe - 0x0fcc 0x0fcf
+
+
+/*
+ * U+1000 - U+109F : Myanmar
+ */
+
+GRAPH 0x1000 - 0x1021 0x1023 - 0x1027 0x1029 0x102a 0x102c - 0x1032
+GRAPH 0x1036 - 0x1039 0x1040 - 0x1059
+PUNCT 0x104a - 0x104f
+PRINT 0x1000 - 0x1021 0x1023 - 0x1027 0x1029 0x102a 0x102c - 0x1032
+PRINT 0x1036 - 0x1039 0x1040 - 0x1059
+SWIDTH1 0x1000 - 0x1021 0x1023 - 0x1027 0x1029 0x102a 0x102c - 0x1032
+SWIDTH1 0x1036 - 0x1039 0x1040 - 0x1059
+
+
+/*
+ * U+10A0 - U+10FF : Georgian
+ */
+
+ALPHA 0x10a0 - 0x10c5
+GRAPH 0x10a0 - 0x10c5 0x10d0 - 0x10f8 0x10fb
+PUNCT 0x10fb
+UPPER 0x10a0 - 0x10c5
+PRINT 0x10a0 - 0x10c5 0x10d0 - 0x10f8 0x10fb
+SWIDTH1 0x10a0 - 0x10c5 0x10d0 - 0x10f8 0x10fb
+
+
+/*
+ * U+1100 - U+11FF : Hangul Jamo
+ */
+
+GRAPH 0x1100 - 0x1159 0x115f - 0x11a2 0x11a8 - 0x11f9
+PRINT 0x1100 - 0x1159 0x115f - 0x11a2 0x11a8 - 0x11f9
+SWIDTH1 0x1160 - 0x11a2 0x11a8 - 0x11f9
+SWIDTH2 0x1100 - 0x1159 0x115f
+
+
+/*
+ * U+1200 - U+137F : Ethiopic
+ */
+
+GRAPH 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d
+GRAPH 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286
+GRAPH 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5
+GRAPH 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce
+GRAPH 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310
+GRAPH 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a
+GRAPH 0x1361 - 0x137c
+PUNCT 0x1361 - 0x1368
+PRINT 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d
+PRINT 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286
+PRINT 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5
+PRINT 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce
+PRINT 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310
+PRINT 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a
+PRINT 0x1361 - 0x137c
+SPECIAL 0x1372 - 0x137c
+PHONOGRAM 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d
+PHONOGRAM 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286
+PHONOGRAM 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5
+PHONOGRAM 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce
+PHONOGRAM 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310
+PHONOGRAM 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a
+SWIDTH1 0x1200 - 0x1206 0x1208 - 0x1246 0x1248 0x124a - 0x124d
+SWIDTH1 0x1250 - 0x1256 0x1258 0x125a - 0x125d 0x1260 - 0x1286
+SWIDTH1 0x1288 0x128a - 0x128d 0x1290 - 0x12ae 0x12b0 0x12b2 - 0x12b5
+SWIDTH1 0x12b8 - 0x12be 0x12c0 0x12c2 - 0x12c5 0x12c8 - 0x12ce
+SWIDTH1 0x12d0 - 0x12d6 0x12d8 - 0x12ee 0x12f0 - 0x130e 0x1310
+SWIDTH1 0x1312 - 0x1315 0x1318 - 0x131e 0x1320 - 0x1346 0x1348 - 0x135a
+SWIDTH1 0x1361 - 0x137c
+
+
+/*
+ * U+13A0 - U+13FF : Cherokee
+ */
+
+GRAPH 0x13a0 - 0x13f4
+PRINT 0x13a0 - 0x13f4
+SWIDTH1 0x13a0 - 0x13f4
+
+
+/*
+ * U+1400 - U+167F : Unified Canadian Aboriginal Syllabics
+ */
+
+GRAPH 0x1401 - 0x1676
+PUNCT 0x166d 0x166e
+PRINT 0x1401 - 0x1676
+PHONOGRAM 0x1401 - 0x166c 0x166f - 0x1676
+SWIDTH1 0x1401 - 0x1676
+
+
+/*
+ * U+1680 - U+169F : Ogham
+ */
+
+GRAPH 0x1681 - 0x169c
+PUNCT 0x169b 0x169c
+SPACE 0x1680
+BLANK 0x1680
+PRINT 0x1680 - 0x169c
+SWIDTH1 0x1680 - 0x169c
+
+
+/*
+ * U+16A0 - U+16FF : Runic
+ */
+
+GRAPH 0x16a0 - 0x16f0
+PUNCT 0x16eb - 0x16ed
+PRINT 0x16a0 - 0x16f0
+SPECIAL 0x16ee - 0x16f0
+SWIDTH1 0x16a0 - 0x16f0
+
+
+/*
+ * U+1700 - U+171F : Tagalog
+ */
+
+GRAPH 0x1700 - 0x170c 0x170e - 0x1714
+PRINT 0x1700 - 0x170c 0x170e - 0x1714
+SWIDTH1 0x1700 - 0x170c 0x170e - 0x1714
+
+
+/*
+ * U+1720 - U+173F : Hanunoo
+ */
+
+GRAPH 0x1720 - 0x1736
+PUNCT 0x1735 0x1736
+PRINT 0x1720 - 0x1736
+SWIDTH1 0x1720 - 0x1736
+
+
+/*
+ * U+1740 - U+175F : Buhid
+ */
+
+GRAPH 0x1740 - 0x1753
+PRINT 0x1740 - 0x1753
+SWIDTH1 0x1740 - 0x1753
+
+
+/*
+ * U+1760 - U+177F : Tagbanwa
+ */
+
+GRAPH 0x1760 - 0x176c 0x176e - 0x1770 0x1772 0x1773
+PRINT 0x1760 - 0x176c 0x176e - 0x1770 0x1772 0x1773
+SWIDTH1 0x1760 - 0x176c 0x176e - 0x1770 0x1772 0x1773
+
+
+/*
+ * U+1780 - U+17FF : Khmer
+ */
+
+GRAPH 0x1780 - 0x17dc 0x17e0 - 0x17e9
+PUNCT 0x17d4 - 0x17d6 0x17d8 - 0x17db
+PRINT 0x1780 - 0x17dc 0x17e0 - 0x17e9
+SWIDTH1 0x1780 - 0x17dc 0x17e0 - 0x17e9
+
+
+/*
+ * U+1800 - U+18AF : Mongolian
+ */
+
+CONTROL 0x180e
+GRAPH 0x1800 - 0x180d 0x1810 - 0x1819 0x1820 - 0x1877 0x1880 - 0x18a9
+PUNCT 0x1800 - 0x180a
+PRINT 0x1800 - 0x180d 0x1810 - 0x1819 0x1820 - 0x1877 0x1880 - 0x18a9
+SWIDTH1 0x1800 - 0x180d 0x1810 - 0x1819 0x1820 - 0x1877 0x1880 - 0x18a9
+
+
+/*
+ * U+1DC0 - U+1DFF : Combining Diacritical Marks Supplement
+ */
+
+GRAPH 0x1DC0 - 0x1DC3
+PRINT 0x1DC0 - 0x1DC3
+SWIDTH0 0x1DC0 - 0x1DC3
+
+
+/*
+ * U+1E00 - U+1EFF : Latin Extended Additional
+ */
+
+ALPHA 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9
+GRAPH 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9
+LOWER 0x1e01 0x1e03 0x1e05 0x1e07 0x1e09 0x1e0b 0x1e0d
+LOWER 0x1e0f 0x1e11 0x1e13 0x1e15 0x1e17 0x1e19 0x1e1b
+LOWER 0x1e1d 0x1e1f 0x1e21 0x1e23 0x1e25 0x1e27 0x1e29
+LOWER 0x1e2b 0x1e2d 0x1e2f 0x1e31 0x1e33 0x1e35 0x1e37
+LOWER 0x1e39 0x1e3b 0x1e3d 0x1e3f 0x1e41 0x1e43 0x1e45
+LOWER 0x1e47 0x1e49 0x1e4b 0x1e4d 0x1e4f 0x1e51 0x1e53
+LOWER 0x1e55 0x1e57 0x1e59 0x1e5b 0x1e5d 0x1e5f 0x1e61
+LOWER 0x1e63 0x1e65 0x1e67 0x1e69 0x1e6b 0x1e6d 0x1e6f
+LOWER 0x1e71 0x1e73 0x1e75 0x1e77 0x1e79 0x1e7b 0x1e7d
+LOWER 0x1e7f 0x1e81 0x1e83 0x1e85 0x1e87 0x1e89 0x1e8b
+LOWER 0x1e8d 0x1e8f 0x1e91 0x1e93 0x1e95 - 0x1e9b 0x1ea1
+LOWER 0x1ea3 0x1ea5 0x1ea7 0x1ea9 0x1eab 0x1ead 0x1eaf
+LOWER 0x1eb1 0x1eb3 0x1eb5 0x1eb7 0x1eb9 0x1ebb 0x1ebd
+LOWER 0x1ebf 0x1ec1 0x1ec3 0x1ec5 0x1ec7 0x1ec9 0x1ecb
+LOWER 0x1ecd 0x1ecf 0x1ed1 0x1ed3 0x1ed5 0x1ed7 0x1ed9
+LOWER 0x1edb 0x1edd 0x1edf 0x1ee1 0x1ee3 0x1ee5 0x1ee7
+LOWER 0x1ee9 0x1eeb 0x1eed 0x1eef 0x1ef1 0x1ef3 0x1ef5
+LOWER 0x1ef7 0x1ef9
+UPPER 0x1e00 0x1e02 0x1e04 0x1e06 0x1e08 0x1e0a 0x1e0c
+UPPER 0x1e0e 0x1e10 0x1e12 0x1e14 0x1e16 0x1e18 0x1e1a
+UPPER 0x1e1c 0x1e1e 0x1e20 0x1e22 0x1e24 0x1e26 0x1e28
+UPPER 0x1e2a 0x1e2c 0x1e2e 0x1e30 0x1e32 0x1e34 0x1e36
+UPPER 0x1e38 0x1e3a 0x1e3c 0x1e3e 0x1e40 0x1e42 0x1e44
+UPPER 0x1e46 0x1e48 0x1e4a 0x1e4c 0x1e4e 0x1e50 0x1e52
+UPPER 0x1e54 0x1e56 0x1e58 0x1e5a 0x1e5c 0x1e5e 0x1e60
+UPPER 0x1e62 0x1e64 0x1e66 0x1e68 0x1e6a 0x1e6c 0x1e6e
+UPPER 0x1e70 0x1e72 0x1e74 0x1e76 0x1e78 0x1e7a 0x1e7c
+UPPER 0x1e7e 0x1e80 0x1e82 0x1e84 0x1e86 0x1e88 0x1e8a
+UPPER 0x1e8c 0x1e8e 0x1e90 0x1e92 0x1e94 0x1ea0 0x1ea2
+UPPER 0x1ea4 0x1ea6 0x1ea8 0x1eaa 0x1eac 0x1eae 0x1eb0
+UPPER 0x1eb2 0x1eb4 0x1eb6 0x1eb8 0x1eba 0x1ebc 0x1ebe
+UPPER 0x1ec0 0x1ec2 0x1ec4 0x1ec6 0x1ec8 0x1eca 0x1ecc
+UPPER 0x1ece 0x1ed0 0x1ed2 0x1ed4 0x1ed6 0x1ed8 0x1eda
+UPPER 0x1edc 0x1ede 0x1ee0 0x1ee2 0x1ee4 0x1ee6 0x1ee8
+UPPER 0x1eea 0x1eec 0x1eee 0x1ef0 0x1ef2 0x1ef4 0x1ef6
+UPPER 0x1ef8
+PRINT 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9
+SWIDTH1 0x1e00 - 0x1e9b 0x1ea0 - 0x1ef9
+
+MAPUPPER < 0x1e01 0x1e00 >
+MAPUPPER < 0x1e03 0x1e02 >
+MAPUPPER < 0x1e05 0x1e04 >
+MAPUPPER < 0x1e07 0x1e06 >
+MAPUPPER < 0x1e09 0x1e08 >
+MAPUPPER < 0x1e0b 0x1e0a >
+MAPUPPER < 0x1e0d 0x1e0c >
+MAPUPPER < 0x1e0f 0x1e0e >
+MAPUPPER < 0x1e11 0x1e10 >
+MAPUPPER < 0x1e13 0x1e12 >
+MAPUPPER < 0x1e15 0x1e14 >
+MAPUPPER < 0x1e17 0x1e16 >
+MAPUPPER < 0x1e19 0x1e18 >
+MAPUPPER < 0x1e1b 0x1e1a >
+MAPUPPER < 0x1e1d 0x1e1c >
+MAPUPPER < 0x1e1f 0x1e1e >
+MAPUPPER < 0x1e21 0x1e20 >
+MAPUPPER < 0x1e23 0x1e22 >
+MAPUPPER < 0x1e25 0x1e24 >
+MAPUPPER < 0x1e27 0x1e26 >
+MAPUPPER < 0x1e29 0x1e28 >
+MAPUPPER < 0x1e2b 0x1e2a >
+MAPUPPER < 0x1e2d 0x1e2c >
+MAPUPPER < 0x1e2f 0x1e2e >
+MAPUPPER < 0x1e31 0x1e30 >
+MAPUPPER < 0x1e33 0x1e32 >
+MAPUPPER < 0x1e35 0x1e34 >
+MAPUPPER < 0x1e37 0x1e36 >
+MAPUPPER < 0x1e39 0x1e38 >
+MAPUPPER < 0x1e3b 0x1e3a >
+MAPUPPER < 0x1e3d 0x1e3c >
+MAPUPPER < 0x1e3f 0x1e3e >
+MAPUPPER < 0x1e41 0x1e40 >
+MAPUPPER < 0x1e43 0x1e42 >
+MAPUPPER < 0x1e45 0x1e44 >
+MAPUPPER < 0x1e47 0x1e46 >
+MAPUPPER < 0x1e49 0x1e48 >
+MAPUPPER < 0x1e4b 0x1e4a >
+MAPUPPER < 0x1e4d 0x1e4c >
+MAPUPPER < 0x1e4f 0x1e4e >
+MAPUPPER < 0x1e51 0x1e50 >
+MAPUPPER < 0x1e53 0x1e52 >
+MAPUPPER < 0x1e55 0x1e54 >
+MAPUPPER < 0x1e57 0x1e56 >
+MAPUPPER < 0x1e59 0x1e58 >
+MAPUPPER < 0x1e5b 0x1e5a >
+MAPUPPER < 0x1e5d 0x1e5c >
+MAPUPPER < 0x1e5f 0x1e5e >
+MAPUPPER < 0x1e61 0x1e60 >
+MAPUPPER < 0x1e63 0x1e62 >
+MAPUPPER < 0x1e65 0x1e64 >
+MAPUPPER < 0x1e67 0x1e66 >
+MAPUPPER < 0x1e69 0x1e68 >
+MAPUPPER < 0x1e6b 0x1e6a >
+MAPUPPER < 0x1e6d 0x1e6c >
+MAPUPPER < 0x1e6f 0x1e6e >
+MAPUPPER < 0x1e71 0x1e70 >
+MAPUPPER < 0x1e73 0x1e72 >
+MAPUPPER < 0x1e75 0x1e74 >
+MAPUPPER < 0x1e77 0x1e76 >
+MAPUPPER < 0x1e79 0x1e78 >
+MAPUPPER < 0x1e7b 0x1e7a >
+MAPUPPER < 0x1e7d 0x1e7c >
+MAPUPPER < 0x1e7f 0x1e7e >
+MAPUPPER < 0x1e81 0x1e80 >
+MAPUPPER < 0x1e83 0x1e82 >
+MAPUPPER < 0x1e85 0x1e84 >
+MAPUPPER < 0x1e87 0x1e86 >
+MAPUPPER < 0x1e89 0x1e88 >
+MAPUPPER < 0x1e8b 0x1e8a >
+MAPUPPER < 0x1e8d 0x1e8c >
+MAPUPPER < 0x1e8f 0x1e8e >
+MAPUPPER < 0x1e91 0x1e90 >
+MAPUPPER < 0x1e93 0x1e92 >
+MAPUPPER < 0x1e95 0x1e94 >
+MAPUPPER < 0x1e9b 0x1e60 >
+MAPUPPER < 0x1ea1 0x1ea0 >
+MAPUPPER < 0x1ea3 0x1ea2 >
+MAPUPPER < 0x1ea5 0x1ea4 >
+MAPUPPER < 0x1ea7 0x1ea6 >
+MAPUPPER < 0x1ea9 0x1ea8 >
+MAPUPPER < 0x1eab 0x1eaa >
+MAPUPPER < 0x1ead 0x1eac >
+MAPUPPER < 0x1eaf 0x1eae >
+MAPUPPER < 0x1eb1 0x1eb0 >
+MAPUPPER < 0x1eb3 0x1eb2 >
+MAPUPPER < 0x1eb5 0x1eb4 >
+MAPUPPER < 0x1eb7 0x1eb6 >
+MAPUPPER < 0x1eb9 0x1eb8 >
+MAPUPPER < 0x1ebb 0x1eba >
+MAPUPPER < 0x1ebd 0x1ebc >
+MAPUPPER < 0x1ebf 0x1ebe >
+MAPUPPER < 0x1ec1 0x1ec0 >
+MAPUPPER < 0x1ec3 0x1ec2 >
+MAPUPPER < 0x1ec5 0x1ec4 >
+MAPUPPER < 0x1ec7 0x1ec6 >
+MAPUPPER < 0x1ec9 0x1ec8 >
+MAPUPPER < 0x1ecb 0x1eca >
+MAPUPPER < 0x1ecd 0x1ecc >
+MAPUPPER < 0x1ecf 0x1ece >
+MAPUPPER < 0x1ed1 0x1ed0 >
+MAPUPPER < 0x1ed3 0x1ed2 >
+MAPUPPER < 0x1ed5 0x1ed4 >
+MAPUPPER < 0x1ed7 0x1ed6 >
+MAPUPPER < 0x1ed9 0x1ed8 >
+MAPUPPER < 0x1edb 0x1eda >
+MAPUPPER < 0x1edd 0x1edc >
+MAPUPPER < 0x1edf 0x1ede >
+MAPUPPER < 0x1ee1 0x1ee0 >
+MAPUPPER < 0x1ee3 0x1ee2 >
+MAPUPPER < 0x1ee5 0x1ee4 >
+MAPUPPER < 0x1ee7 0x1ee6 >
+MAPUPPER < 0x1ee9 0x1ee8 >
+MAPUPPER < 0x1eeb 0x1eea >
+MAPUPPER < 0x1eed 0x1eec >
+MAPUPPER < 0x1eef 0x1eee >
+MAPUPPER < 0x1ef1 0x1ef0 >
+MAPUPPER < 0x1ef3 0x1ef2 >
+MAPUPPER < 0x1ef5 0x1ef4 >
+MAPUPPER < 0x1ef7 0x1ef6 >
+MAPUPPER < 0x1ef9 0x1ef8 >
+MAPLOWER < 0x1e00 0x1e01 >
+MAPLOWER < 0x1e02 0x1e03 >
+MAPLOWER < 0x1e04 0x1e05 >
+MAPLOWER < 0x1e06 0x1e07 >
+MAPLOWER < 0x1e08 0x1e09 >
+MAPLOWER < 0x1e0a 0x1e0b >
+MAPLOWER < 0x1e0c 0x1e0d >
+MAPLOWER < 0x1e0e 0x1e0f >
+MAPLOWER < 0x1e10 0x1e11 >
+MAPLOWER < 0x1e12 0x1e13 >
+MAPLOWER < 0x1e14 0x1e15 >
+MAPLOWER < 0x1e16 0x1e17 >
+MAPLOWER < 0x1e18 0x1e19 >
+MAPLOWER < 0x1e1a 0x1e1b >
+MAPLOWER < 0x1e1c 0x1e1d >
+MAPLOWER < 0x1e1e 0x1e1f >
+MAPLOWER < 0x1e20 0x1e21 >
+MAPLOWER < 0x1e22 0x1e23 >
+MAPLOWER < 0x1e24 0x1e25 >
+MAPLOWER < 0x1e26 0x1e27 >
+MAPLOWER < 0x1e28 0x1e29 >
+MAPLOWER < 0x1e2a 0x1e2b >
+MAPLOWER < 0x1e2c 0x1e2d >
+MAPLOWER < 0x1e2e 0x1e2f >
+MAPLOWER < 0x1e30 0x1e31 >
+MAPLOWER < 0x1e32 0x1e33 >
+MAPLOWER < 0x1e34 0x1e35 >
+MAPLOWER < 0x1e36 0x1e37 >
+MAPLOWER < 0x1e38 0x1e39 >
+MAPLOWER < 0x1e3a 0x1e3b >
+MAPLOWER < 0x1e3c 0x1e3d >
+MAPLOWER < 0x1e3e 0x1e3f >
+MAPLOWER < 0x1e40 0x1e41 >
+MAPLOWER < 0x1e42 0x1e43 >
+MAPLOWER < 0x1e44 0x1e45 >
+MAPLOWER < 0x1e46 0x1e47 >
+MAPLOWER < 0x1e48 0x1e49 >
+MAPLOWER < 0x1e4a 0x1e4b >
+MAPLOWER < 0x1e4c 0x1e4d >
+MAPLOWER < 0x1e4e 0x1e4f >
+MAPLOWER < 0x1e50 0x1e51 >
+MAPLOWER < 0x1e52 0x1e53 >
+MAPLOWER < 0x1e54 0x1e55 >
+MAPLOWER < 0x1e56 0x1e57 >
+MAPLOWER < 0x1e58 0x1e59 >
+MAPLOWER < 0x1e5a 0x1e5b >
+MAPLOWER < 0x1e5c 0x1e5d >
+MAPLOWER < 0x1e5e 0x1e5f >
+MAPLOWER < 0x1e60 0x1e61 >
+MAPLOWER < 0x1e62 0x1e63 >
+MAPLOWER < 0x1e64 0x1e65 >
+MAPLOWER < 0x1e66 0x1e67 >
+MAPLOWER < 0x1e68 0x1e69 >
+MAPLOWER < 0x1e6a 0x1e6b >
+MAPLOWER < 0x1e6c 0x1e6d >
+MAPLOWER < 0x1e6e 0x1e6f >
+MAPLOWER < 0x1e70 0x1e71 >
+MAPLOWER < 0x1e72 0x1e73 >
+MAPLOWER < 0x1e74 0x1e75 >
+MAPLOWER < 0x1e76 0x1e77 >
+MAPLOWER < 0x1e78 0x1e79 >
+MAPLOWER < 0x1e7a 0x1e7b >
+MAPLOWER < 0x1e7c 0x1e7d >
+MAPLOWER < 0x1e7e 0x1e7f >
+MAPLOWER < 0x1e80 0x1e81 >
+MAPLOWER < 0x1e82 0x1e83 >
+MAPLOWER < 0x1e84 0x1e85 >
+MAPLOWER < 0x1e86 0x1e87 >
+MAPLOWER < 0x1e88 0x1e89 >
+MAPLOWER < 0x1e8a 0x1e8b >
+MAPLOWER < 0x1e8c 0x1e8d >
+MAPLOWER < 0x1e8e 0x1e8f >
+MAPLOWER < 0x1e90 0x1e91 >
+MAPLOWER < 0x1e92 0x1e93 >
+MAPLOWER < 0x1e94 0x1e95 >
+MAPLOWER < 0x1ea0 0x1ea1 >
+MAPLOWER < 0x1ea2 0x1ea3 >
+MAPLOWER < 0x1ea4 0x1ea5 >
+MAPLOWER < 0x1ea6 0x1ea7 >
+MAPLOWER < 0x1ea8 0x1ea9 >
+MAPLOWER < 0x1eaa 0x1eab >
+MAPLOWER < 0x1eac 0x1ead >
+MAPLOWER < 0x1eae 0x1eaf >
+MAPLOWER < 0x1eb0 0x1eb1 >
+MAPLOWER < 0x1eb2 0x1eb3 >
+MAPLOWER < 0x1eb4 0x1eb5 >
+MAPLOWER < 0x1eb6 0x1eb7 >
+MAPLOWER < 0x1eb8 0x1eb9 >
+MAPLOWER < 0x1eba 0x1ebb >
+MAPLOWER < 0x1ebc 0x1ebd >
+MAPLOWER < 0x1ebe 0x1ebf >
+MAPLOWER < 0x1ec0 0x1ec1 >
+MAPLOWER < 0x1ec2 0x1ec3 >
+MAPLOWER < 0x1ec4 0x1ec5 >
+MAPLOWER < 0x1ec6 0x1ec7 >
+MAPLOWER < 0x1ec8 0x1ec9 >
+MAPLOWER < 0x1eca 0x1ecb >
+MAPLOWER < 0x1ecc 0x1ecd >
+MAPLOWER < 0x1ece 0x1ecf >
+MAPLOWER < 0x1ed0 0x1ed1 >
+MAPLOWER < 0x1ed2 0x1ed3 >
+MAPLOWER < 0x1ed4 0x1ed5 >
+MAPLOWER < 0x1ed6 0x1ed7 >
+MAPLOWER < 0x1ed8 0x1ed9 >
+MAPLOWER < 0x1eda 0x1edb >
+MAPLOWER < 0x1edc 0x1edd >
+MAPLOWER < 0x1ede 0x1edf >
+MAPLOWER < 0x1ee0 0x1ee1 >
+MAPLOWER < 0x1ee2 0x1ee3 >
+MAPLOWER < 0x1ee4 0x1ee5 >
+MAPLOWER < 0x1ee6 0x1ee7 >
+MAPLOWER < 0x1ee8 0x1ee9 >
+MAPLOWER < 0x1eea 0x1eeb >
+MAPLOWER < 0x1eec 0x1eed >
+MAPLOWER < 0x1eee 0x1eef >
+MAPLOWER < 0x1ef0 0x1ef1 >
+MAPLOWER < 0x1ef2 0x1ef3 >
+MAPLOWER < 0x1ef4 0x1ef5 >
+MAPLOWER < 0x1ef6 0x1ef7 >
+MAPLOWER < 0x1ef8 0x1ef9 >
+
+
+/*
+ * U+1F00 - U+1FFF : Greek Extended
+ */
+
+ALPHA 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d
+ALPHA 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d
+ALPHA 0x1f80 - 0x1fb4 0x1fb6 - 0x1fbc 0x1fbe 0x1fc2 - 0x1fc4
+ALPHA 0x1fc6 - 0x1fcc 0x1fd0 - 0x1fd3 0x1fd6 - 0x1fdb 0x1fe0 - 0x1fec
+ALPHA 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffc
+GRAPH 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d
+GRAPH 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d
+GRAPH 0x1f80 - 0x1fb4 0x1fb6 - 0x1fc4 0x1fc6 - 0x1fd3 0x1fd6 - 0x1fdb
+GRAPH 0x1fdd - 0x1fef 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffe
+LOWER 0x1f00 - 0x1f07 0x1f10 - 0x1f15 0x1f20 - 0x1f27 0x1f30 - 0x1f37
+LOWER 0x1f40 - 0x1f45 0x1f50 - 0x1f57 0x1f60 - 0x1f67 0x1f70 - 0x1f7d
+LOWER 0x1f80 - 0x1f87 0x1f90 - 0x1f97 0x1fa0 - 0x1fa7 0x1fb0 - 0x1fb4
+LOWER 0x1fb6 0x1fb7 0x1fbe 0x1fc2 - 0x1fc4 0x1fc6 0x1fc7
+LOWER 0x1fd0 - 0x1fd3 0x1fd6 0x1fd7 0x1fe0 - 0x1fe7 0x1ff2 - 0x1ff4
+LOWER 0x1ff6 0x1ff7
+PUNCT 0x1fbd 0x1fbf - 0x1fc1 0x1fcd - 0x1fcf 0x1fdd - 0x1fdf
+PUNCT 0x1fed - 0x1fef 0x1ffd 0x1ffe
+UPPER 0x1f08 - 0x1f0f 0x1f18 - 0x1f1d 0x1f28 - 0x1f2f 0x1f38 - 0x1f3f
+UPPER 0x1f48 - 0x1f4d 0x1f59 0x1f5b 0x1f5d 0x1f5f 0x1f68 - 0x1f6f
+UPPER 0x1fb8 - 0x1fbb 0x1fc8 - 0x1fcb 0x1fd8 - 0x1fdb 0x1fe8 - 0x1fec
+UPPER 0x1ff8 - 0x1ffb
+PRINT 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d
+PRINT 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d
+PRINT 0x1f80 - 0x1fb4 0x1fb6 - 0x1fc4 0x1fc6 - 0x1fd3 0x1fd6 - 0x1fdb
+PRINT 0x1fdd - 0x1fef 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffe
+SWIDTH1 0x1f00 - 0x1f15 0x1f18 - 0x1f1d 0x1f20 - 0x1f45 0x1f48 - 0x1f4d
+SWIDTH1 0x1f50 - 0x1f57 0x1f59 0x1f5b 0x1f5d 0x1f5f - 0x1f7d
+SWIDTH1 0x1f80 - 0x1fb4 0x1fb6 - 0x1fc4 0x1fc6 - 0x1fd3 0x1fd6 - 0x1fdb
+SWIDTH1 0x1fdd - 0x1fef 0x1ff2 - 0x1ff4 0x1ff6 - 0x1ffe
+
+MAPUPPER < 0x1f00 - 0x1f07 : 0x1f08 >
+MAPUPPER < 0x1f10 - 0x1f15 : 0x1f18 >
+MAPUPPER < 0x1f20 - 0x1f27 : 0x1f28 >
+MAPUPPER < 0x1f30 - 0x1f37 : 0x1f38 >
+MAPUPPER < 0x1f40 - 0x1f45 : 0x1f48 >
+MAPUPPER < 0x1f51 0x1f59 >
+MAPUPPER < 0x1f53 0x1f5b >
+MAPUPPER < 0x1f55 0x1f5d >
+MAPUPPER < 0x1f57 0x1f5f >
+MAPUPPER < 0x1f60 - 0x1f67 : 0x1f68 >
+MAPUPPER < 0x1f70 - 0x1f71 : 0x1fba >
+MAPUPPER < 0x1f72 - 0x1f75 : 0x1fc8 >
+MAPUPPER < 0x1f76 - 0x1f77 : 0x1fda >
+MAPUPPER < 0x1f78 - 0x1f79 : 0x1ff8 >
+MAPUPPER < 0x1f7a - 0x1f7b : 0x1fea >
+MAPUPPER < 0x1f7c - 0x1f7d : 0x1ffa >
+MAPUPPER < 0x1f80 - 0x1f87 : 0x1f88 >
+MAPUPPER < 0x1f90 - 0x1f97 : 0x1f98 >
+MAPUPPER < 0x1fa0 - 0x1fa7 : 0x1fa8 >
+MAPUPPER < 0x1fb0 - 0x1fb1 : 0x1fb8 >
+MAPUPPER < 0x1fb3 0x1fbc >
+MAPUPPER < 0x1fbe 0x0399 >
+MAPUPPER < 0x1fc3 0x1fcc >
+MAPUPPER < 0x1fd0 - 0x1fd1 : 0x1fd8 >
+MAPUPPER < 0x1fe0 - 0x1fe1 : 0x1fe8 >
+MAPUPPER < 0x1fe5 0x1fec >
+MAPUPPER < 0x1ff3 0x1ffc >
+MAPLOWER < 0x1f08 - 0x1f0f : 0x1f00 >
+MAPLOWER < 0x1f18 - 0x1f1d : 0x1f10 >
+MAPLOWER < 0x1f28 - 0x1f2f : 0x1f20 >
+MAPLOWER < 0x1f38 - 0x1f3f : 0x1f30 >
+MAPLOWER < 0x1f48 - 0x1f4d : 0x1f40 >
+MAPLOWER < 0x1f59 0x1f51 >
+MAPLOWER < 0x1f5b 0x1f53 >
+MAPLOWER < 0x1f5d 0x1f55 >
+MAPLOWER < 0x1f5f 0x1f57 >
+MAPLOWER < 0x1f68 - 0x1f6f : 0x1f60 >
+MAPLOWER < 0x1f88 - 0x1f8f : 0x1f80 >
+MAPLOWER < 0x1f98 - 0x1f9f : 0x1f90 >
+MAPLOWER < 0x1fa8 - 0x1faf : 0x1fa0 >
+MAPLOWER < 0x1fb8 - 0x1fb9 : 0x1fb0 >
+MAPLOWER < 0x1fba - 0x1fbb : 0x1f70 >
+MAPLOWER < 0x1fbc 0x1fb3 >
+MAPLOWER < 0x1fc8 - 0x1fcb : 0x1f72 >
+MAPLOWER < 0x1fcc 0x1fc3 >
+MAPLOWER < 0x1fd8 - 0x1fd9 : 0x1fd0 >
+MAPLOWER < 0x1fda - 0x1fdb : 0x1f76 >
+MAPLOWER < 0x1fe8 - 0x1fe9 : 0x1fe0 >
+MAPLOWER < 0x1fea - 0x1feb : 0x1f7a >
+MAPLOWER < 0x1fec 0x1fe5 >
+MAPLOWER < 0x1ff8 - 0x1ff9 : 0x1f78 >
+MAPLOWER < 0x1ffa - 0x1ffb : 0x1f7c >
+MAPLOWER < 0x1ffc 0x1ff3 >
+
+
+/*
+ * U+2000 - U+206F : General Punctuation
+ */
+
+CONTROL 0x200c - 0x200f 0x202a - 0x202e 0x2060 - 0x2063 0x206a - 0x206f
+GRAPH 0x2010 - 0x2027 0x2030 - 0x2052 0x2057
+PUNCT 0x2010 - 0x2027 0x2030 - 0x2052 0x2057
+SPACE 0x2000 - 0x200b 0x2028 0x2029 0x202f 0x205f
+BLANK 0x2000 - 0x200b 0x202f 0x205f
+PRINT 0x2000 - 0x200b 0x2010 - 0x2029 0x202f - 0x2052 0x2057
+PRINT 0x205f
+SWIDTH1 0x2000 - 0x200b 0x2010 - 0x2029 0x202f - 0x2052 0x2057
+SWIDTH1 0x205f
+
+
+/*
+ * U+2070 - U+209F : Superscripts and Subscripts
+ */
+
+ALPHA 0x2071 0x207f
+GRAPH 0x2070 0x2071 0x2074 - 0x208e
+LOWER 0x2071 0x207f
+PUNCT 0x207a - 0x207e 0x208a - 0x208e
+PRINT 0x2070 0x2071 0x2074 - 0x208e
+SPECIAL 0x2070 0x2074 - 0x2079 0x2080 - 0x2089
+SWIDTH1 0x2070 0x2071 0x2074 - 0x208e
+
+
+/*
+ * U+20A0 - U+20CF : Currency Symbols
+ */
+
+GRAPH 0x20a0 - 0x20b1
+PUNCT 0x20a0 - 0x20b1
+PRINT 0x20a0 - 0x20b1
+SWIDTH1 0x20a0 - 0x20b1
+
+
+/*
+ * U+20D0 - U+20FF : Combining Diacritical Marks for Symbols
+ */
+
+GRAPH 0x20d0 - 0x20eb
+PRINT 0x20d0 - 0x20eb
+SWIDTH0 0x20d0 - 0x20eb
+
+
+/*
+ * U+2100 - U+214F : Letterlike Symbols
+ */
+
+ALPHA 0x2102 0x2107 0x210a - 0x2113 0x2115 0x2119 - 0x211d
+ALPHA 0x2124 0x2126 0x2128 0x212a - 0x212d 0x212f - 0x2131
+ALPHA 0x2133 0x2134 0x2139 0x213d - 0x213f 0x2145 - 0x2149
+GRAPH 0x2100 - 0x213a 0x213d - 0x214b
+LOWER 0x210a 0x210e 0x210f 0x2113 0x212f 0x2134 0x2139
+LOWER 0x213d 0x2146 - 0x2149
+PUNCT 0x2100 0x2101 0x2103 - 0x2106 0x2108 0x2109 0x2114
+PUNCT 0x2116 - 0x2118 0x211e - 0x2123 0x2125 0x2127 0x2129
+PUNCT 0x212e 0x2132 0x213a 0x2140 - 0x2144 0x214a 0x214b
+UPPER 0x2102 0x2107 0x210b - 0x210d 0x2110 - 0x2112 0x2115
+UPPER 0x2119 - 0x211d 0x2124 0x2126 0x2128 0x212a - 0x212d
+UPPER 0x2130 0x2131 0x2133 0x213e 0x213f 0x2145
+PRINT 0x2100 - 0x213a 0x213d - 0x214b
+SWIDTH1 0x2100 - 0x213a 0x213d - 0x214b
+
+MAPLOWER < 0x2126 0x03c9 >
+MAPLOWER < 0x212a 'k' >
+MAPLOWER < 0x212b 0x00e5 >
+
+
+/*
+ * U+2150 - U+218F : Number Forms
+ */
+
+GRAPH 0x2153 - 0x2183
+PRINT 0x2153 - 0x2183
+SPECIAL 0x2153 - 0x2183
+SWIDTH1 0x2153 - 0x2183
+
+MAPUPPER < 0x2170 - 0x217f : 0x2160 >
+MAPLOWER < 0x2160 - 0x216f : 0x2170 >
+
+
+/*
+ * U+2190 - U+21FF : Arrows
+ */
+
+GRAPH 0x2190 - 0x21ff
+PUNCT 0x2190 - 0x21ff
+PRINT 0x2190 - 0x21ff
+SWIDTH1 0x2190 - 0x21ff
+
+
+/*
+ * U+2200 - U+22FF : Mathematical Operators
+ */
+
+GRAPH 0x2200 - 0x22ff
+PUNCT 0x2200 - 0x22ff
+PRINT 0x2200 - 0x22ff
+SWIDTH1 0x2200 - 0x22ff
+
+
+/*
+ * U+2300 - U+23FF : Miscellaneous Technical
+ */
+
+GRAPH 0x2300 - 0x23ce
+PUNCT 0x2300 - 0x23ce
+PRINT 0x2300 - 0x23ce
+SWIDTH1 0x2300 - 0x2328 0x232b - 0x23ce
+SWIDTH2 0x2329 0x232a
+
+
+/*
+ * U+2400 - U+243F : Control Pictures
+ */
+
+GRAPH 0x2400 - 0x2426
+PUNCT 0x2400 - 0x2426
+PRINT 0x2400 - 0x2426
+SWIDTH1 0x2400 - 0x2426
+
+
+/*
+ * U+2440 - U+245F : Optical Character Recognition
+ */
+
+GRAPH 0x2440 - 0x244a
+PUNCT 0x2440 - 0x244a
+PRINT 0x2440 - 0x244a
+SWIDTH1 0x2440 - 0x244a
+
+
+/*
+ * U+2460 - U+24FF : Enclosed Alphanumerics
+ */
+
+GRAPH 0x2460 - 0x24fe
+PUNCT 0x249c - 0x24e9
+PRINT 0x2460 - 0x24fe
+SPECIAL 0x2460 - 0x249b 0x24ea - 0x24fe
+SWIDTH1 0x2460 - 0x24fe
+
+MAPUPPER < 0x24d0 - 0x24e9 : 0x24b6 >
+MAPLOWER < 0x24b6 - 0x24cf : 0x24d0 >
+
+
+/*
+ * U+2500 - U+257F : Box Drawing
+ */
+
+GRAPH 0x2500 - 0x257f
+PUNCT 0x2500 - 0x257f
+PRINT 0x2500 - 0x257f
+SWIDTH1 0x2500 - 0x257f
+
+
+/*
+ * U+2580 - U+259F : Block Elements
+ */
+
+GRAPH 0x2580 - 0x259f
+PUNCT 0x2580 - 0x259f
+PRINT 0x2580 - 0x259f
+SWIDTH1 0x2580 - 0x259f
+
+
+/*
+ * U+25A0 - U+25FF : Geometric Shapes
+ */
+
+GRAPH 0x25a0 - 0x25ff
+PUNCT 0x25a0 - 0x25ff
+PRINT 0x25a0 - 0x25ff
+SWIDTH1 0x25a0 - 0x25ff
+
+
+/*
+ * U+2600 - U+26FF : Miscellaneous Symbols
+ */
+
+GRAPH 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689
+PUNCT 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689
+PRINT 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689
+SWIDTH1 0x2600 - 0x2613 0x2616 0x2617 0x2619 - 0x267d 0x2680 - 0x2689
+
+
+/*
+ * U+2700 - U+27BF : Dingbats
+ */
+
+GRAPH 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b
+GRAPH 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2794
+GRAPH 0x2798 - 0x27af 0x27b1 - 0x27be
+PUNCT 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b
+PUNCT 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2775
+PUNCT 0x2794 0x2798 - 0x27af 0x27b1 - 0x27be
+PRINT 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b
+PRINT 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2794
+PRINT 0x2798 - 0x27af 0x27b1 - 0x27be
+SPECIAL 0x2776 - 0x2793
+SWIDTH1 0x2701 - 0x2704 0x2706 - 0x2709 0x270c - 0x2727 0x2729 - 0x274b
+SWIDTH1 0x274d 0x274f - 0x2752 0x2756 0x2758 - 0x275e 0x2761 - 0x2794
+SWIDTH1 0x2798 - 0x27af 0x27b1 - 0x27be
+
+
+/*
+ * U+27C0 - U+27EF : Miscellaneous Mathematical Symbols-A
+ */
+
+GRAPH 0x27d0 - 0x27eb
+PUNCT 0x27d0 - 0x27eb
+PRINT 0x27d0 - 0x27eb
+SWIDTH1 0x27d0 - 0x27eb
+
+
+/*
+ * U+27F0 - U+27FF : Supplemental Arrows-A
+ */
+
+GRAPH 0x27f0 - 0x27ff
+PUNCT 0x27f0 - 0x27ff
+PRINT 0x27f0 - 0x27ff
+SWIDTH1 0x27f0 - 0x27ff
+
+
+/*
+ * U+2800 - U+28FF : Braille Patterns
+ */
+
+GRAPH 0x2800 - 0x28ff
+PUNCT 0x2800 - 0x28ff
+PRINT 0x2800 - 0x28ff
+SWIDTH1 0x2800 - 0x28ff
+
+
+/*
+ * U+2900 - U+297F : Supplemental Arrows-B
+ */
+
+GRAPH 0x2900 - 0x297f
+PUNCT 0x2900 - 0x297f
+PRINT 0x2900 - 0x297f
+SWIDTH1 0x2900 - 0x297f
+
+
+/*
+ * U+2980 - U+29FF : Miscellaneous Mathematical Symbols-B
+ */
+
+GRAPH 0x2980 - 0x29ff
+PUNCT 0x2980 - 0x29ff
+PRINT 0x2980 - 0x29ff
+SWIDTH1 0x2980 - 0x29ff
+
+
+/*
+ * U+2A00 - U+2AFF : Supplemental Mathematical Operators
+ */
+
+GRAPH 0x2a00 - 0x2aff
+PUNCT 0x2a00 - 0x2aff
+PRINT 0x2a00 - 0x2aff
+SWIDTH1 0x2a00 - 0x2aff
+
+
+/*
+ * U+2E80 - U+2EFF : CJK Radicals Supplement
+ */
+
+GRAPH 0x2e80 - 0x2e99 0x2e9b - 0x2ef3
+PUNCT 0x2e80 - 0x2e99 0x2e9b - 0x2ef3
+PRINT 0x2e80 - 0x2e99 0x2e9b - 0x2ef3
+SWIDTH2 0x2e80 - 0x2e99 0x2e9b - 0x2ef3
+
+
+/*
+ * U+2F00 - U+2FDF : Kangxi Radicals
+ */
+
+GRAPH 0x2f00 - 0x2fd5
+PUNCT 0x2f00 - 0x2fd5
+PRINT 0x2f00 - 0x2fd5
+SWIDTH2 0x2f00 - 0x2fd5
+
+
+/*
+ * U+2FF0 - U+2FFF : Ideographic Description Characters
+ */
+
+GRAPH 0x2ff0 - 0x2ffb
+PUNCT 0x2ff0 - 0x2ffb
+PRINT 0x2ff0 - 0x2ffb
+SWIDTH2 0x2ff0 - 0x2ffb
+
+
+/*
+ * U+3000 - U+303F : CJK Symbols and Punctuation
+ */
+
+GRAPH 0x3001 - 0x303f
+PUNCT 0x3001 - 0x3004 0x3008 - 0x3020 0x3030 0x3036 0x3037
+PUNCT 0x303d - 0x303f
+SPACE 0x3000
+BLANK 0x3000
+PRINT 0x3000 - 0x303f
+IDEOGRAM 0x3006
+SPECIAL 0x3007 0x3021 - 0x3029 0x3038 - 0x303a
+SWIDTH1 0x303f
+SWIDTH2 0x3000 - 0x303e
+
+
+/*
+ * U+3040 - U+309F : Hiragana
+ */
+
+GRAPH 0x3041 - 0x3096 0x3099 - 0x309f
+PUNCT 0x309b 0x309c
+PRINT 0x3041 - 0x3096 0x3099 - 0x309f
+PHONOGRAM 0x3041 - 0x3096 0x309f
+SWIDTH0 0x3099 - 0x309a
+SWIDTH2 0x3041 - 0x3096 0x309b - 0x309f
+
+
+/*
+ * U+30A0 - U+30FF : Katakana
+ */
+
+GRAPH 0x30a0 - 0x30ff
+PUNCT 0x30a0 0x30fb
+PRINT 0x30a0 - 0x30ff
+PHONOGRAM 0x30a1 - 0x30fa 0x30ff
+SWIDTH2 0x30a0 - 0x30ff
+
+
+/*
+ * U+3100 - U+312F : Bopomofo
+ */
+
+GRAPH 0x3105 - 0x312c
+PRINT 0x3105 - 0x312c
+SWIDTH2 0x3105 - 0x312c
+
+
+/*
+ * U+3130 - U+318F : Hangul Compatibility Jamo
+ */
+
+GRAPH 0x3131 - 0x318e
+PRINT 0x3131 - 0x318e
+PHONOGRAM 0x3131 - 0x3163 0x3165 - 0x318e
+SWIDTH2 0x3131 - 0x318e
+
+
+/*
+ * U+3190 - U+319F : Kanbun
+ */
+
+GRAPH 0x3190 - 0x319f
+PUNCT 0x3190 0x3191 0x3196 - 0x319f
+PRINT 0x3190 - 0x319f
+SPECIAL 0x3192 - 0x3195
+SWIDTH2 0x3190 - 0x319f
+
+
+/*
+ * U+31A0 - U+31BF : Bopomofo Extended
+ */
+
+GRAPH 0x31a0 - 0x31b7
+PRINT 0x31a0 - 0x31b7
+SWIDTH2 0x31a0 - 0x31b7
+
+
+/*
+ * U+31F0 - U+31FF : Katakana Phonetic Extensions
+ */
+
+GRAPH 0x31f0 - 0x31ff
+PRINT 0x31f0 - 0x31ff
+PHONOGRAM 0x31f0 - 0x31ff
+SWIDTH2 0x31f0 - 0x31ff
+
+
+/*
+ * U+3200 - U+32FF : Enclosed CJK Letters and Months
+ */
+
+GRAPH 0x3200 - 0x321c 0x3220 - 0x3243 0x3251 - 0x327b 0x327f - 0x32cb
+GRAPH 0x32d0 - 0x32fe
+PUNCT 0x3200 - 0x321c 0x322a - 0x3243 0x3260 - 0x327b 0x327f
+PUNCT 0x328a - 0x32b0 0x32c0 - 0x32cb 0x32d0 - 0x32fe
+PRINT 0x3200 - 0x321c 0x3220 - 0x3243 0x3251 - 0x327b 0x327f - 0x32cb
+PRINT 0x32d0 - 0x32fe
+SPECIAL 0x3220 - 0x3229 0x3251 - 0x325f 0x3280 - 0x3289 0x32b1 - 0x32bf
+SWIDTH2 0x3200 - 0x321c 0x3220 - 0x3243 0x3251 - 0x327b 0x327f - 0x32cb
+SWIDTH2 0x32d0 - 0x32fe
+
+
+/*
+ * U+3300 - U+33FF : CJK Compatibility
+ */
+
+GRAPH 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe
+PUNCT 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe
+PRINT 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe
+SWIDTH2 0x3300 - 0x3376 0x337b - 0x33dd 0x33e0 - 0x33fe
+
+
+/*
+ * U+3400 - U+4DBF : CJK Unified Ideographs Extension A
+ */
+
+GRAPH 0x3400 - 0x4db5
+PRINT 0x3400 - 0x4db5
+IDEOGRAM 0x3400 - 0x4db5
+SWIDTH2 0x3400 - 0x4db5
+
+
+/*
+ * U+4E00 - U+9FFF : CJK Unified Ideographs
+ */
+
+GRAPH 0x4e00 - 0x9fa5
+PRINT 0x4e00 - 0x9fa5
+IDEOGRAM 0x4e00 - 0x9fa5
+SWIDTH2 0x4e00 - 0x9fa5
+
+
+/*
+ * U+A000 - U+A48F : Yi Syllables
+ */
+
+GRAPH 0xa000 - 0xa48c
+PRINT 0xa000 - 0xa48c
+PHONOGRAM 0xa000 - 0xa48c
+SWIDTH2 0xa000 - 0xa48c
+
+
+/*
+ * U+A490 - U+A4CF : Yi Radicals
+ */
+
+GRAPH 0xa490 - 0xa4c6
+PUNCT 0xa490 - 0xa4c6
+PRINT 0xa490 - 0xa4c6
+SWIDTH2 0xa490 - 0xa4c6
+
+
+/*
+ * U+AC00 - U+D7AF : Hangul Syllables
+ */
+
+GRAPH 0xac00 - 0xd7a3
+PRINT 0xac00 - 0xd7a3
+PHONOGRAM 0xac00 - 0xd7a3
+SWIDTH2 0xac00 - 0xd7a3
+
+
+/*
+ * U+D800 - U+DB7F : High Surrogates
+ */
+
+PRINT 0xd800 - 0xdb7f
+SWIDTH1 0xd800 - 0xdb7f
+
+
+/*
+ * U+DB80 - U+DBFF : High Private Use Surrogates
+ */
+
+PRINT 0xdb80 - 0xdbff
+SWIDTH1 0xdb80 - 0xdbff
+
+
+/*
+ * U+DC00 - U+DFFF : Low Surrogates
+ */
+
+PRINT 0xdc00 - 0xdfff
+SWIDTH1 0xdc00 - 0xdfff
+
+
+/*
+ * U+E000 - U+F8FF : Private Use Area
+ */
+
+GRAPH 0xe000 - 0xf8ff
+PRINT 0xe000 - 0xf8ff
+SWIDTH1 0xe000 - 0xf8ff
+
+
+/*
+ * U+F900 - U+FAFF : CJK Compatibility Ideographs
+ */
+
+GRAPH 0xf900 - 0xfa2d 0xfa30 - 0xfa6a
+PRINT 0xf900 - 0xfa2d 0xfa30 - 0xfa6a
+IDEOGRAM 0xf900 - 0xfa2d 0xfa30 - 0xfa6a
+SWIDTH2 0xf900 - 0xfa2d 0xfa30 - 0xfa6a
+
+
+/*
+ * U+FB00 - U+FB4F : Alphabetic Presentation Forms
+ */
+
+ALPHA 0xfb00 - 0xfb06 0xfb13 - 0xfb17
+GRAPH 0xfb00 - 0xfb06 0xfb13 - 0xfb17 0xfb1d - 0xfb36 0xfb38 - 0xfb3c
+GRAPH 0xfb3e 0xfb40 0xfb41 0xfb43 0xfb44 0xfb46 - 0xfb4f
+LOWER 0xfb00 - 0xfb06 0xfb13 - 0xfb17
+PUNCT 0xfb29
+PRINT 0xfb00 - 0xfb06 0xfb13 - 0xfb17 0xfb1d - 0xfb36 0xfb38 - 0xfb3c
+PRINT 0xfb3e 0xfb40 0xfb41 0xfb43 0xfb44 0xfb46 - 0xfb4f
+SWIDTH1 0xfb00 - 0xfb06 0xfb13 - 0xfb17 0xfb1d - 0xfb36 0xfb38 - 0xfb3c
+SWIDTH1 0xfb3e 0xfb40 0xfb41 0xfb43 0xfb44 0xfb46 - 0xfb4f
+
+
+/*
+ * U+FB50 - U+FDFF : Arabic Presentation Forms-A
+ */
+
+GRAPH 0xfb50 - 0xfbb1 0xfbd3 - 0xfd3f 0xfd50 - 0xfd8f 0xfd92 - 0xfdc7
+GRAPH 0xfdf0 - 0xfdfc
+PUNCT 0xfd3e 0xfd3f 0xfdfc
+PRINT 0xfb50 - 0xfbb1 0xfbd3 - 0xfd3f 0xfd50 - 0xfd8f 0xfd92 - 0xfdc7
+PRINT 0xfdf0 - 0xfdfc
+SWIDTH1 0xfb50 - 0xfbb1 0xfbd3 - 0xfd3f 0xfd50 - 0xfd8f 0xfd92 - 0xfdc7
+SWIDTH1 0xfdf0 - 0xfdfc
+
+
+/*
+ * U+FE00 - U+FE0F : Variation Selectors
+ */
+
+GRAPH 0xfe00 - 0xfe0f
+PRINT 0xfe00 - 0xfe0f
+SWIDTH1 0xfe00 - 0xfe0f
+
+
+/*
+ * U+FE20 - U+FE2F : Combining Half Marks
+ */
+
+GRAPH 0xfe20 - 0xfe23
+PRINT 0xfe20 - 0xfe23
+SWIDTH0 0xfe20 - 0xfe23
+
+
+/*
+ * U+FE30 - U+FE4F : CJK Compatibility Forms
+ */
+
+GRAPH 0xfe30 - 0xfe46 0xfe49 - 0xfe4f
+PUNCT 0xfe30 - 0xfe46 0xfe49 - 0xfe4f
+PRINT 0xfe30 - 0xfe46 0xfe49 - 0xfe4f
+SWIDTH2 0xfe30 - 0xfe46 0xfe49 - 0xfe4f
+
+
+/*
+ * U+FE50 - U+FE6F : Small Form Variants
+ */
+
+GRAPH 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b
+PUNCT 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b
+PRINT 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b
+SWIDTH2 0xfe50 - 0xfe52 0xfe54 - 0xfe66 0xfe68 - 0xfe6b
+
+
+/*
+ * U+FE70 - U+FEFF : Arabic Presentation Forms-B
+ */
+
+CONTROL 0xfeff
+GRAPH 0xfe70 - 0xfe74 0xfe76 - 0xfefc
+PRINT 0xfe70 - 0xfe74 0xfe76 - 0xfefc
+SWIDTH1 0xfe70 - 0xfe74 0xfe76 - 0xfefc
+
+
+/*
+ * U+FF00 - U+FFEF : Halfwidth and Fullwidth Forms
+ */
+
+ALPHA 0xff21 - 0xff3a 0xff41 - 0xff5a
+GRAPH 0xff01 - 0xffbe 0xffc2 - 0xffc7 0xffca - 0xffcf 0xffd2 - 0xffd7
+GRAPH 0xffda - 0xffdc 0xffe0 - 0xffe6 0xffe8 - 0xffee
+LOWER 0xff41 - 0xff5a
+PUNCT 0xff01 - 0xff0f 0xff1a - 0xff20 0xff3b - 0xff40 0xff5b - 0xff65
+PUNCT 0xffe0 - 0xffe6 0xffe8 - 0xffee
+UPPER 0xff21 - 0xff3a
+PRINT 0xff01 - 0xffbe 0xffc2 - 0xffc7 0xffca - 0xffcf 0xffd2 - 0xffd7
+PRINT 0xffda - 0xffdc 0xffe0 - 0xffe6 0xffe8 - 0xffee
+PHONOGRAM 0xff66 - 0xff6f 0xff71 - 0xff9d 0xffa1 - 0xffbe 0xffc2 - 0xffc7
+PHONOGRAM 0xffca - 0xffcf 0xffd2 - 0xffd7 0xffda - 0xffdc
+SWIDTH1 0xff61 - 0xffbe 0xffc2 - 0xffc7 0xffca - 0xffcf 0xffd2 - 0xffd7
+SWIDTH1 0xffda - 0xffdc 0xffe8 - 0xffee
+SWIDTH2 0xff01 - 0xff60 0xffe0 - 0xffe6
+
+MAPUPPER < 0xff41 - 0xff5a : 0xff21 >
+MAPLOWER < 0xff21 - 0xff3a : 0xff41 >
+
+
+/*
+ * U+FFF0 - U+FFFF : Specials
+ */
+
+CONTROL 0xfff9 - 0xfffb
+GRAPH 0xfffc 0xfffd
+PUNCT 0xfffc 0xfffd
+PRINT 0xfffc 0xfffd
+SWIDTH1 0xfffc 0xfffd
+
+
+/*
+ * U+10300 - U+1032F : Old Italic
+ */
+
+GRAPH 0x10300 - 0x1031e 0x10320 - 0x10323
+PRINT 0x10300 - 0x1031e 0x10320 - 0x10323
+SPECIAL 0x10320 - 0x10323
+SWIDTH1 0x10300 - 0x1031e 0x10320 - 0x10323
+
+
+/*
+ * U+10330 - U+1034F : Gothic
+ */
+
+GRAPH 0x10330 - 0x1034a
+PRINT 0x10330 - 0x1034a
+SPECIAL 0x1034a
+SWIDTH1 0x10330 - 0x1034a
+
+
+/*
+ * U+10400 - U+1044F : Deseret
+ */
+
+ALPHA 0x10400 - 0x10425 0x10428 - 0x1044d
+GRAPH 0x10400 - 0x10425 0x10428 - 0x1044d
+LOWER 0x10428 - 0x1044d
+UPPER 0x10400 - 0x10425
+PRINT 0x10400 - 0x10425 0x10428 - 0x1044d
+SWIDTH1 0x10400 - 0x10425 0x10428 - 0x1044d
+
+MAPUPPER < 0x10428 - 0x1044d : 0x10400 >
+MAPLOWER < 0x10400 - 0x10425 : 0x10428 >
+
+
+/*
+ * U+1D000 - U+1D0FF : Byzantine Musical Symbols
+ */
+
+GRAPH 0x1d000 - 0x1d0f5
+PUNCT 0x1d000 - 0x1d0f5
+PRINT 0x1d000 - 0x1d0f5
+SWIDTH1 0x1d000 - 0x1d0f5
+
+
+/*
+ * U+1D100 - U+1D1FF : Musical Symbols
+ */
+
+CONTROL 0x1d173 - 0x1d17a
+GRAPH 0x1d100 - 0x1d126 0x1d12a - 0x1d172 0x1d17b - 0x1d1dd
+PUNCT 0x1d100 - 0x1d126 0x1d12a - 0x1d164 0x1d16a - 0x1d16c
+PUNCT 0x1d183 0x1d184 0x1d18c - 0x1d1a9 0x1d1ae - 0x1d1dd
+PRINT 0x1d100 - 0x1d126 0x1d12a - 0x1d158 0x1d15a - 0x1d172
+PRINT 0x1d17b - 0x1d1dd
+SWIDTH0 0x1d165 - 0x1d169 0x1d16d - 0x1d172 0x1d17b - 0x1d182
+SWIDTH0 0x1d185 - 0x1d18b 0x1d1aa - 0x1d1ad
+SWIDTH1 0x1d100 - 0x1d126 0x1d12a - 0x1d158 0x1d15a - 0x1d164
+SWIDTH1 0x1d16a - 0x1d16c 0x1d183 0x1d184 0x1d18c - 0x1d1a9
+SWIDTH1 0x1d1ae - 0x1d1dd
+
+
+/*
+ * U+1D400 - U+1D7FF : Mathematical Alphanumeric Symbols
+ */
+
+ALPHA 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f
+ALPHA 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9
+ALPHA 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505
+ALPHA 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c
+ALPHA 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544
+ALPHA 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d6c0
+ALPHA 0x1d6c2 - 0x1d6da 0x1d6dc - 0x1d6fa 0x1d6fc - 0x1d714
+ALPHA 0x1d716 - 0x1d734 0x1d736 - 0x1d74e 0x1d750 - 0x1d76e
+ALPHA 0x1d770 - 0x1d788 0x1d78a - 0x1d7a8 0x1d7aa - 0x1d7c2
+ALPHA 0x1d7c4 - 0x1d7c9
+GRAPH 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f
+GRAPH 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9
+GRAPH 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505
+GRAPH 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c
+GRAPH 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544
+GRAPH 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d7c9
+GRAPH 0x1d7ce - 0x1d7ff
+LOWER 0x1d41a - 0x1d433 0x1d44e - 0x1d454 0x1d456 - 0x1d467
+LOWER 0x1d482 - 0x1d49b 0x1d4b6 - 0x1d4b9 0x1d4bb 0x1d4bd - 0x1d4c0
+LOWER 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d4cf 0x1d4ea - 0x1d503
+LOWER 0x1d51e - 0x1d537 0x1d552 - 0x1d56b 0x1d586 - 0x1d59f
+LOWER 0x1d5ba - 0x1d5d3 0x1d5ee - 0x1d607 0x1d622 - 0x1d63b
+LOWER 0x1d656 - 0x1d66f 0x1d68a - 0x1d6a3 0x1d6c2 - 0x1d6da
+LOWER 0x1d6dc - 0x1d6e1 0x1d6fc - 0x1d714 0x1d716 - 0x1d71b
+LOWER 0x1d736 - 0x1d74e 0x1d750 - 0x1d755 0x1d770 - 0x1d788
+LOWER 0x1d78a - 0x1d78f 0x1d7aa - 0x1d7c2 0x1d7c4 - 0x1d7c9
+PUNCT 0x1d6c1 0x1d6db 0x1d6fb 0x1d715 0x1d735 0x1d74f
+PUNCT 0x1d76f 0x1d789 0x1d7a9 0x1d7c3
+UPPER 0x1d400 - 0x1d419 0x1d434 - 0x1d44d 0x1d468 - 0x1d481
+UPPER 0x1d49c 0x1d49e 0x1d49f 0x1d4a2 0x1d4a5 0x1d4a6
+UPPER 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b5 0x1d4d0 - 0x1d4e9
+UPPER 0x1d504 0x1d505 0x1d507 - 0x1d50a 0x1d50d - 0x1d514
+UPPER 0x1d516 - 0x1d51c 0x1d538 0x1d539 0x1d53b - 0x1d53e
+UPPER 0x1d540 - 0x1d544 0x1d546 0x1d54a - 0x1d550 0x1d56c - 0x1d585
+UPPER 0x1d5a0 - 0x1d5b9 0x1d5d4 - 0x1d5ed 0x1d608 - 0x1d621
+UPPER 0x1d63c - 0x1d655 0x1d670 - 0x1d689 0x1d6a8 - 0x1d6c0
+UPPER 0x1d6e2 - 0x1d6fa 0x1d71c - 0x1d734 0x1d756 - 0x1d76e
+UPPER 0x1d790 - 0x1d7a8
+PRINT 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f
+PRINT 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9
+PRINT 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505
+PRINT 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c
+PRINT 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544
+PRINT 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d7c9
+PRINT 0x1d7ce - 0x1d7ff
+SWIDTH1 0x1d400 - 0x1d454 0x1d456 - 0x1d49c 0x1d49e 0x1d49f
+SWIDTH1 0x1d4a2 0x1d4a5 0x1d4a6 0x1d4a9 - 0x1d4ac 0x1d4ae - 0x1d4b9
+SWIDTH1 0x1d4bb 0x1d4bd - 0x1d4c0 0x1d4c2 0x1d4c3 0x1d4c5 - 0x1d505
+SWIDTH1 0x1d507 - 0x1d50a 0x1d50d - 0x1d514 0x1d516 - 0x1d51c
+SWIDTH1 0x1d51e - 0x1d539 0x1d53b - 0x1d53e 0x1d540 - 0x1d544
+SWIDTH1 0x1d546 0x1d54a - 0x1d550 0x1d552 - 0x1d6a3 0x1d6a8 - 0x1d7c9
+SWIDTH1 0x1d7ce - 0x1d7ff
+
+
+/*
+ * U+20000 - U+2A6DF : CJK Unified Ideographs Extension B
+ */
+
+GRAPH 0x20000 - 0x2a6d6
+PRINT 0x20000 - 0x2a6d6
+IDEOGRAM 0x20000 - 0x2a6d6
+SWIDTH2 0x20000 - 0x2a6d6
+
+
+/*
+ * U+2F800 - U+2FA1F : CJK Compatibility Ideographs Supplement
+ */
+
+GRAPH 0x2f800 - 0x2fa1d
+PRINT 0x2f800 - 0x2fa1d
+IDEOGRAM 0x2f800 - 0x2fa1d
+SWIDTH2 0x2f800 - 0x2fa1d
+
+
+/*
+ * U+E0000 - U+E007F : Tags
+ */
+
+CONTROL 0xe0001 0xe0020 - 0xe007f
+
+
+/*
+ * U+F0000 - U+FFFFF : Supplementary Private Use Area-A
+ */
+
+GRAPH 0xf0000 - 0xffffd
+PRINT 0xf0000 - 0xffffd
+SWIDTH1 0xf0000 - 0xffffd
+
+
+/*
+ * U+100000 - U+10FFFF : Supplementary Private Use Area-B
+ */
+
+GRAPH 0x100000 - 0x10fffd
+PRINT 0x100000 - 0x10fffd
+SWIDTH1 0x100000 - 0x10fffd
diff --git a/share/mklocale/am_ET.UTF-8.src b/share/mklocale/am_ET.UTF-8.src
new file mode 100644
index 0000000..312a268
--- /dev/null
+++ b/share/mklocale/am_ET.UTF-8.src
@@ -0,0 +1,44 @@
+/*
+ * Amharic Language (Ethiopic) Locale with UTF-8 Encoding
+ *
+ * ሚካኤሠጥላáˆáŠ• <mtm@FreeBSD.Org>
+ * Last updated Mon Aug 04 02:06:00 EST 2003
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "UTF-8"
+
+/* ALPHA 'A' - 'Z' 'a' - 'z' 'ሀ' - 'áš' */
+ALPHA 'A' - 'Z' 'a' - 'z' 0xe18880 - 0xe18d9a
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+
+/* DIGIT '0' - '9' 'á©' - 'á±' */
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xfa
+LOWER 'a' - 'z'
+
+/*
+ * PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 'á¢' - 'á¨'
+ */
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xe18da2 - 0xe18da8
+SPACE 0x09 - 0x0d 0x20 0xe18da1
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xe18da1
+PRINT 0x20 - 0x7e 0x1200 - 0x137c
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+
+/*
+ * TODIGIT <0xe18da8'á¨' - 'á±' : 1>
+ * No Zero digit
+ */
+TODIGIT <0xe18da8 - 0xe18db1 : 1>
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/be_BY.CP1131.src b/share/mklocale/be_BY.CP1131.src
new file mode 100644
index 0000000..7674e1d
--- /dev/null
+++ b/share/mklocale/be_BY.CP1131.src
@@ -0,0 +1,65 @@
+/*
+ * Belarusian language. Modern/standard (1959) grammar.
+ * Prepared by Yury Tarasievich <spytar@yahoo.com>
+ * $FreeBSD$
+ */
+
+ENCODING "NONE"
+VARIABLE Belarusian CP1131 (extending the and based on: Russian Alternative code table (CP866) by <ache@nagual.pp.ru>)
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0x80 - 0xaf 0xe0 - 0xf7
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0x80 - 0xfe
+LOWER 'a' - 'z' 0xa0 - 0xaf 0xe0 - 0xef 0xf1 0xf3 0xf5 0xf7
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0xb0 - 0xdf 0xf8 - 0xfe
+SPACE 0x09 - 0x0d 0x20 0xff
+UPPER 'A' - 'Z' 0x80 - 0x9f 0xf0 0xf2 0xf4 0xf6
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xff
+PRINT 0x20 - 0x7e 0x80 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0x80 - 0x8f : 0xa0>
+MAPLOWER <0x90 - 0x9f : 0xe0>
+MAPLOWER <0xa0 - 0xaf : 0xa0>
+MAPLOWER <0xe0 - 0xef : 0xe0>
+MAPLOWER <0xf0 0xf1>
+MAPLOWER <0xf1 0xf1>
+MAPLOWER <0xf2 0xf3>
+MAPLOWER <0xf3 0xf3>
+MAPLOWER <0xf4 0xf5>
+MAPLOWER <0xf5 0xf5>
+MAPLOWER <0xf6 0xf7>
+MAPLOWER <0xf7 0xf7>
+MAPLOWER <0xf8 0xf9>
+MAPLOWER <0xf9 0xf9>
+MAPLOWER <0xfc 0xfd>
+MAPLOWER <0xfd 0xfd>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0x80 - 0x9f : 0x80>
+MAPUPPER <0xa0 - 0xaf : 0x80>
+MAPUPPER <0xe0 - 0xef : 0x90>
+MAPUPPER <0xf0 0xf0>
+MAPUPPER <0xf1 0xf0>
+MAPUPPER <0xf2 0xf2>
+MAPUPPER <0xf3 0xf2>
+MAPUPPER <0xf4 0xf4>
+MAPUPPER <0xf5 0xf4>
+MAPUPPER <0xf6 0xf6>
+MAPUPPER <0xf7 0xf6>
+MAPUPPER <0xf8 0xf8>
+MAPUPPER <0xf9 0xf8>
+MAPLOWER <0xfc 0xfc>
+MAPLOWER <0xfd 0xfc>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/bg_BG.CP1251.src b/share/mklocale/bg_BG.CP1251.src
new file mode 100644
index 0000000..4540c47
--- /dev/null
+++ b/share/mklocale/bg_BG.CP1251.src
@@ -0,0 +1,88 @@
+/*
+ * LOCALE_CTYPE for Bulgarian Cyrillic character set (CP1251)
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE Bulgarian Cyrillic character set (CP1251) by <roam@ringlet.net>
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z'
+ALPHA 0x80 0x81 0x83 0x8a 0x8c - 0x90 0x9a 0x9c - 0x9f
+ALPHA 0xa1 - 0xa3 0xa5 0xa8 0xaa 0xaf 0xb2 - 0xb4 0xb8 0xba
+ALPHA 0xbc - 0xff
+CONTROL 0x00 - 0x1f 0x7f 0x98
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0x80 - 0x97 0x99 - 0x9f 0xa1 - 0xff
+LOWER 'a' - 'z' 0x83 0x90 0x9a 0x9c - 0x9f 0xa2 0xb3 0xb4 0xb8
+LOWER 0xba 0xbc 0xbe 0xbf 0xe0 - 0xff
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0x82 0x84 - 0x89 0x8b 0x91 - 0x97 0x99 0x9b 0xa4
+PUNCT 0xa6 0xa7 0xa9 0xab - 0xae 0xb0 0xb1 0xb5 - 0xb7 0xb9 0xbb
+SPACE 0x09 - 0x0d 0x20 0xa0
+UPPER 'A' - 'Z' 0x80 0x81 0x8a 0x8c - 0x8f 0xa1 0xa3 0xa5 0xa8
+UPPER 0xaa 0xaf 0xb2 0xbd 0xc0 - 0xdf
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0x80 - 0x97 0x99 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0x80 0x90>
+MAPLOWER <0x81 0x83>
+MAPLOWER <0x83 0x83>
+MAPLOWER <0x8a 0x9a>
+MAPLOWER <0x8c - 0x8f : 0x9c>
+MAPLOWER <0x90 0x90>
+MAPLOWER <0x9a 0x9a>
+MAPLOWER <0x9c - 0x9f : 0x9c>
+MAPLOWER <0xa1 0xa2>
+MAPLOWER <0xa2 0xa2>
+MAPLOWER <0xa3 0xbc>
+MAPLOWER <0xa5 0xb4>
+MAPLOWER <0xa8 0xb8>
+MAPLOWER <0xaa 0xba>
+MAPLOWER <0xaf 0xbf>
+MAPLOWER <0xb2 0xb3>
+MAPLOWER <0xb3 - 0xb4 : 0xb3>
+MAPLOWER <0xb8 0xb8>
+MAPLOWER <0xba 0xba>
+MAPLOWER <0xbc 0xbc>
+MAPLOWER <0xbd 0xbe>
+MAPLOWER <0xbe - 0xbf : 0xbe>
+MAPLOWER <0xc0 - 0xdf : 0xe0>
+MAPLOWER <0xe0 - 0xff : 0xe0>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0x80 - 0x81 : 0x80>
+MAPUPPER <0x83 0x81>
+MAPUPPER <0x8a 0x8a>
+MAPUPPER <0x8c - 0x8f : 0x8c>
+MAPUPPER <0x90 0x80>
+MAPUPPER <0x9a 0x8a>
+MAPUPPER <0x9c - 0x9f : 0x8c>
+MAPUPPER <0xa1 0xa1>
+MAPUPPER <0xa2 0xa1>
+MAPUPPER <0xa3 0xa3>
+MAPUPPER <0xa5 0xa5>
+MAPUPPER <0xa8 0xa8>
+MAPUPPER <0xaa 0xaa>
+MAPUPPER <0xaf 0xaf>
+MAPUPPER <0xb2 0xb2>
+MAPUPPER <0xb3 0xb2>
+MAPUPPER <0xb4 0xa5>
+MAPUPPER <0xb8 0xa8>
+MAPUPPER <0xba 0xaa>
+MAPUPPER <0xbc 0xa3>
+MAPUPPER <0xbd 0xbd>
+MAPUPPER <0xbe 0xbd>
+MAPUPPER <0xbf 0xaf>
+MAPUPPER <0xc0 - 0xdf : 0xc0>
+MAPUPPER <0xe0 - 0xff : 0xc0>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/el_GR.ISO8859-7.src b/share/mklocale/el_GR.ISO8859-7.src
new file mode 100644
index 0000000..aeaba38
--- /dev/null
+++ b/share/mklocale/el_GR.ISO8859-7.src
@@ -0,0 +1,45 @@
+/*
+ * LOCALE_CTYPE for Greek/ISO8859-7 set
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "NONE"
+VARIABLE Greek/ISO8859-7 character set by <past@netmode.ntua.gr>
+
+ALPHA 'A' - 'Z' 'a' - 'z' 0xb6 0xb8 - 0xba 0xbc 0xbe - 0xfe
+BLANK ' ' '\t' 0xa0
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0xa1 - 0xb5 0xb7 0xbb 0xbd
+SPACE 0x09 - 0x0d ' ' 0xa0
+UPPER 'A' - 'Z' 0xb6 0xb8 - 0xba 0xbc 0xbe - 0xbf 0xc1 - 0xdb
+LOWER 'a' - 'z' 0xc0 0xdc - 0xfe
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xb6 0xdc>
+MAPLOWER <0xb8 - 0xba : 0xdd>
+MAPLOWER <0xbc 0xfc>
+MAPLOWER <0xbe - 0xbf : 0xfd>
+MAPLOWER <0xc1 - 0xdb : 0xe1>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xc0 0xda>
+MAPUPPER <0xdc 0xb6>
+MAPUPPER <0xdd - 0xdf : 0xb8>
+MAPUPPER <0xe0 0xdb>
+MAPUPPER <0xe1 - 0xf1 : 0xc1>
+MAPUPPER <0xf2 0xd3>
+MAPUPPER <0xf3 - 0xfb : 0xd3>
+MAPUPPER <0xfc 0xbc>
+MAPUPPER <0xfd - 0xfe : 0xbe>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/hi_IN.ISCII-DEV.src b/share/mklocale/hi_IN.ISCII-DEV.src
new file mode 100644
index 0000000..59916e8
--- /dev/null
+++ b/share/mklocale/hi_IN.ISCII-DEV.src
@@ -0,0 +1,35 @@
+/*
+ * Hindi Language Locale with ISCII-DEV Encoding
+ *
+ * Arun Sharma <arun@sharma-home.net>
+ * Last updated Mon Nov 19 23:07:46 PST 2001
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "NONE"
+
+ALPHA 'A' - 'Z' 'a' - 'z' '¡' - 'ê'
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xfa
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20 0xa0
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0xa0 - 0xfa
+
+/* ?DIGIT 'ñ' - 'ú' */
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'ñ' - 'ú' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/hy_AM.ARMSCII-8.src b/share/mklocale/hy_AM.ARMSCII-8.src
new file mode 100644
index 0000000..7ccc8d6
--- /dev/null
+++ b/share/mklocale/hy_AM.ARMSCII-8.src
@@ -0,0 +1,200 @@
+/*
+ * LOCALE_CTYPE for Armenian armscii-8 character set
+ *
+ * Made available by Vahe Khachikyan <vahe@khachikyan.de>
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE Armenian ARMSCII-8 character set by <vahe@khachikyan.de>
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0xa2 0xb2 - 0xfd
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xA1 - 0xFE
+LOWER 'a' - 'z' 0xa2 0xb3 0xb5 0xb7 0xb9 0xbb 0xbd 0xbf 0xc1 0xc3 0xc5 0xc7 0xc9 0xcb 0xcd 0xcf 0xd1 0xd3 0xd5 0xd7 0xd9 0xdb 0xdd 0xdf 0xe1 0xe3 0xe5 0xe7 0xe9 0xeb 0xed 0xef 0xf1 0xf3 0xf5 0xf7 0xf9 0xfb 0xfd
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa3-0xb1
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z' 0xb2 0xb4 0xb6 0xb8 0xba 0xbc 0xbe 0xc0 0xc2 0xc4 0xc6 0xc8 0xca 0xcc 0xce 0xd0 0xd2 0xd4 0xd6 0xd8 0xda 0xdc 0xde 0xe0 0xe2 0xe4 0xe6 0xe8 0xea 0xec 0xee 0xf0 0xf2 0xf4 0xf6 0xf8 0xfa 0xfc
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e 0xa1 - 0xfe
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+#
+# Upper to lower
+#
+MAPLOWER <0xb2 0xb3>
+MAPLOWER <0xb4 0xb5>
+MAPLOWER <0xb6 0xb7>
+MAPLOWER <0xb8 0xb9>
+MAPLOWER <0xba 0xbb>
+MAPLOWER <0xbc 0xbd>
+MAPLOWER <0xbe 0xbf>
+MAPLOWER <0xc0 0xc1>
+MAPLOWER <0xc2 0xc3>
+MAPLOWER <0xc4 0xc5>
+MAPLOWER <0xc6 0xc7>
+MAPLOWER <0xc8 0xc9>
+MAPLOWER <0xca 0xcb>
+MAPLOWER <0xcc 0xcd>
+MAPLOWER <0xce 0xcf>
+MAPLOWER <0xd0 0xd1>
+MAPLOWER <0xd2 0xd3>
+MAPLOWER <0xd4 0xd5>
+MAPLOWER <0xd6 0xd7>
+MAPLOWER <0xd8 0xd9>
+MAPLOWER <0xda 0xdb>
+MAPLOWER <0xdc 0xdd>
+MAPLOWER <0xde 0xdf>
+MAPLOWER <0xe0 0xe1>
+MAPLOWER <0xe2 0xe3>
+MAPLOWER <0xe4 0xe5>
+MAPLOWER <0xe6 0xe7>
+MAPLOWER <0xe8 0xe9>
+MAPLOWER <0xea 0xeb>
+MAPLOWER <0xec 0xed>
+MAPLOWER <0xee 0xef>
+MAPLOWER <0xf0 0xf1>
+MAPLOWER <0xf2 0xf3>
+MAPLOWER <0xf4 0xf5>
+MAPLOWER <0xf6 0xf7>
+MAPLOWER <0xf8 0xf9>
+MAPLOWER <0xfa 0xfb>
+MAPLOWER <0xfc 0xfd>
+#
+# Lowers to lower
+#
+MAPLOWER <0xb3 0xb3>
+MAPLOWER <0xb5 0xb5>
+MAPLOWER <0xb7 0xb7>
+MAPLOWER <0xb9 0xb9>
+MAPLOWER <0xbb 0xbb>
+MAPLOWER <0xbd 0xbd>
+MAPLOWER <0xbf 0xbf>
+MAPLOWER <0xc1 0xc1>
+MAPLOWER <0xc3 0xc3>
+MAPLOWER <0xc5 0xc5>
+MAPLOWER <0xc7 0xc7>
+MAPLOWER <0xc9 0xc9>
+MAPLOWER <0xcb 0xcb>
+MAPLOWER <0xcd 0xcd>
+MAPLOWER <0xcf 0xcf>
+MAPLOWER <0xd1 0xd1>
+MAPLOWER <0xd3 0xd3>
+MAPLOWER <0xd5 0xd5>
+MAPLOWER <0xd7 0xd7>
+MAPLOWER <0xd9 0xd9>
+MAPLOWER <0xdb 0xdb>
+MAPLOWER <0xdd 0xdd>
+MAPLOWER <0xdf 0xdf>
+MAPLOWER <0xe1 0xe1>
+MAPLOWER <0xe3 0xe3>
+MAPLOWER <0xe5 0xe5>
+MAPLOWER <0xe7 0xe7>
+MAPLOWER <0xe9 0xe9>
+MAPLOWER <0xeb 0xeb>
+MAPLOWER <0xed 0xed>
+MAPLOWER <0xef 0xef>
+MAPLOWER <0xf1 0xf1>
+MAPLOWER <0xf3 0xf3>
+MAPLOWER <0xf5 0xf5>
+MAPLOWER <0xf7 0xf7>
+MAPLOWER <0xf9 0xf9>
+MAPLOWER <0xfb 0xfb>
+MAPLOWER <0xfd 0xfd>
+
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+#
+# lower to upper
+#
+MAPUPPER <0xb3 0xb2>
+MAPUPPER <0xb5 0xb4>
+MAPUPPER <0xb7 0xb6>
+MAPUPPER <0xb9 0xb8>
+MAPUPPER <0xbb 0xba>
+MAPUPPER <0xbd 0xbc>
+MAPUPPER <0xbf 0xbe>
+MAPUPPER <0xc1 0xc0>
+MAPUPPER <0xc3 0xc2>
+MAPUPPER <0xc5 0xc4>
+MAPUPPER <0xc7 0xc6>
+MAPUPPER <0xc9 0xc8>
+MAPUPPER <0xcb 0xca>
+MAPUPPER <0xcd 0xcc>
+MAPUPPER <0xcf 0xce>
+MAPUPPER <0xd1 0xd0>
+MAPUPPER <0xd3 0xd2>
+MAPUPPER <0xd5 0xd4>
+MAPUPPER <0xd7 0xd6>
+MAPUPPER <0xd9 0xd8>
+MAPUPPER <0xdb 0xda>
+MAPUPPER <0xdd 0xdc>
+MAPUPPER <0xdf 0xde>
+MAPUPPER <0xe1 0xe0>
+MAPUPPER <0xe3 0xe2>
+MAPUPPER <0xe5 0xe4>
+MAPUPPER <0xe7 0xe6>
+MAPUPPER <0xe9 0xe8>
+MAPUPPER <0xeb 0xea>
+MAPUPPER <0xed 0xec>
+MAPUPPER <0xef 0xee>
+MAPUPPER <0xf1 0xf0>
+MAPUPPER <0xf3 0xf2>
+MAPUPPER <0xf5 0xf4>
+MAPUPPER <0xf7 0xf6>
+MAPUPPER <0xf9 0xf8>
+MAPUPPER <0xfb 0xfa>
+MAPUPPER <0xfd 0xfc>
+#
+# Upper to upper
+#
+MAPUPPER <0xb2 0xb2>
+MAPUPPER <0xb4 0xb4>
+MAPUPPER <0xb6 0xb6>
+MAPUPPER <0xb8 0xb8>
+MAPUPPER <0xba 0xba>
+MAPUPPER <0xbc 0xbc>
+MAPUPPER <0xbe 0xbe>
+MAPUPPER <0xc0 0xc0>
+MAPUPPER <0xc2 0xc2>
+MAPUPPER <0xc4 0xc4>
+MAPUPPER <0xc6 0xc6>
+MAPUPPER <0xc8 0xc8>
+MAPUPPER <0xca 0xca>
+MAPUPPER <0xcc 0xcc>
+MAPUPPER <0xce 0xce>
+MAPUPPER <0xd0 0xd0>
+MAPUPPER <0xd2 0xd2>
+MAPUPPER <0xd4 0xd4>
+MAPUPPER <0xd6 0xd6>
+MAPUPPER <0xd8 0xd8>
+MAPUPPER <0xda 0xda>
+MAPUPPER <0xdc 0xdc>
+MAPUPPER <0xde 0xde>
+MAPUPPER <0xe0 0xe0>
+MAPUPPER <0xe2 0xe2>
+MAPUPPER <0xe4 0xe4>
+MAPUPPER <0xe6 0xe6>
+MAPUPPER <0xe8 0xe8>
+MAPUPPER <0xea 0xea>
+MAPUPPER <0xec 0xec>
+MAPUPPER <0xee 0xee>
+MAPUPPER <0xf0 0xf0>
+MAPUPPER <0xf2 0xf2>
+MAPUPPER <0xf4 0xf4>
+MAPUPPER <0xf6 0xf6>
+MAPUPPER <0xf8 0xf8>
+MAPUPPER <0xfa 0xfa>
+MAPUPPER <0xfc 0xfc>
+
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/ja_JP.SJIS.src b/share/mklocale/ja_JP.SJIS.src
new file mode 100644
index 0000000..0de5a88
--- /dev/null
+++ b/share/mklocale/ja_JP.SJIS.src
@@ -0,0 +1,290 @@
+/*
+ * ja_JP.SJIS locale table for BSD4.4/rune
+ * version 1.0
+ * (C) Sin'ichiro MIYATANI / Phase One, Inc
+ * May 12, 1995
+ *
+ * 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 Phase One, Inc.
+ * 4. The name of Phase One, Inc. 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.
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "MSKanji"
+
+/*
+ * ASCII byte code
+ */
+ALPHA 'A'-'Z' 'a'-'z'
+CONTROL 0x00-0x1f 0x7f
+DIGIT '0'-'9'
+GRAPH 0x21-0x7e
+LOWER 'a'-'z'
+PUNCT 0x21-0x2f 0x3a-0x40 0x5b-0x60 0x7b-0x7e
+SPACE 0x09-0x0d 0x20
+UPPER 'A'-'Z'
+XDIGIT '0'-'9' 'a'-'f' 'A'-'F'
+BLANK ' ' '\t'
+PRINT 0x20-0x7e
+SWIDTH1 0x20-0x7e
+
+MAPLOWER <'A'-'Z':'a'><'a'-'z':'a'>
+MAPUPPER <'A'-'Z':'A'><'a'-'z':'A'>
+TODIGIT <'0'-'9':0>
+TODIGIT <'A'-'F':10><'a'-'f':10>
+
+/*
+ * JIS X201
+ */
+PUNCT 0xa1-0xa5
+SPACE 0xa0
+BLANK 0xa0
+SPECIAL 0xa1-0xdf
+PHONOGRAM 0xa6-0xdf
+SWIDTH1 0xa0-0xdf
+
+/*
+ * JIS X208/SJIS
+ */
+/* 100 */
+PUNCT 0x8141-0x8151 0x8159-0x815a 0x815c-0x817e 0x8180-0x819e
+SPACE 0x8140
+BLANK 0x8140
+PHONOGRAM 0x8152-0x8158 0x815b
+
+/* 200 */
+PUNCT 0x819f-0x81ac 0x81b8-0x81bf 0x81c8-0x81ce 0x81da-0x81e8
+PUNCT 0x81f0-0x81f7 0x81fc
+
+/* 300 */
+/* ?DIGIT 0x824f-0x8258 */
+/* ?XDIGIT 0x8260-0x8265 0x8281-0x8286 */
+ALPHA 0x8260-0x8279 0x8281-0x829a
+UPPER 0x8260-0x8279
+LOWER 0x8281-0x829a
+
+MAPLOWER <0x8260-0x8279:0x8281>
+MAPLOWER <0x8281-0x829a:0x8281>
+MAPUPPER <0x8260-0x8279:0x8260>
+MAPUPPER <0x8281-0x829a:0x8260>
+TODIGIT <0x824f-0x8258:0>
+TODIGIT <0x8260-0x8265:10>
+TODIGIT <0x8281-0x8286:10>
+
+/* 400 */
+PHONOGRAM 0x829f-0x82f1
+
+/* 500 */
+PHONOGRAM 0x8340-0x837e
+PHONOGRAM 0x8380-0x8396
+
+/* 600 */
+UPPER 0x839f-0x83b6
+LOWER 0x83bf-0x83d6
+MAPLOWER <0x839f-0x83b6:0x83bf>
+MAPLOWER <0x83bf-0x83d6:0x83bf>
+MAPUPPER <0x839f-0x83b6:0x839f>
+MAPUPPER <0x83bf-0x83d6:0x839f>
+
+/* 700 */
+UPPER 0x8440-0x8460
+LOWER 0x8470-0x847e 0x8480-0x8491
+MAPLOWER <0x8440-0x844e:0x8470><0x844f-0x8460:0x8480>
+MAPLOWER <0x8470-0x847e:0x8470><0x8480-0x8491:0x8480>
+MAPUPPER <0x8440-0x8460:0x8440>
+MAPUPPER <0x8470-0x847e:0x8440><0x8480-0x8491:0x844f>
+
+/* 800 */
+SPECIAL 0x849f-0x84be
+
+SWIDTH2 0x8140-0x817e 0x8180-0x819e /* 100 */
+SWIDTH2 0x819f-0x81ac 0x81b8-0x81bf /* 200 */
+SWIDTH2 0x81c8-0x81ce 0x81da-0x81e8
+SWIDTH2 0x81f0-0x81f7 0x81fc
+SWIDTH2 0x824f-0x8258 0x8260-0x8279 /* 300 */
+SWIDTH2 0x8281-0x829a
+SWIDTH2 0x829f-0x82f1 /* 400 */
+SWIDTH2 0x8340-0x837e /* 500 */
+SWIDTH2 0x8380-0x8396
+SWIDTH2 0x839f-0x83b6 /* 600 */
+SWIDTH2 0x83bf-0x83d6
+SWIDTH2 0x8440-0x8460 /* 700 */
+SWIDTH2 0x8470-0x847e 0x8480-0x8491
+SWIDTH2 0x849f-0x84be /* 800 */
+
+/* 1600- */
+IDEOGRAM 0x889f-0x88fc /* 1600 */
+IDEOGRAM 0x8940-0x897e 0x8980-0x899e /* 1700 */
+IDEOGRAM 0x899f-0x89fc /* 1800 */
+IDEOGRAM 0x8a40-0x8a7e 0x8a80-0x8a9e /* 1900 */
+IDEOGRAM 0x8a9f-0x8afc /* 2000 */
+IDEOGRAM 0x8b40-0x8b7e 0x8b80-0x8b9e /* 2100 */
+IDEOGRAM 0x8b9f-0x8bfc /* 2200 */
+IDEOGRAM 0x8c40-0x8c7e 0x8c80-0x8c9e /* 2300 */
+IDEOGRAM 0x8c9f-0x8cfc /* 2400 */
+IDEOGRAM 0x8d40-0x8d7e 0x8d80-0x8d9e /* 2500 */
+IDEOGRAM 0x8d9f-0x8dfc /* 2600 */
+IDEOGRAM 0x8e40-0x8e7e 0x8e80-0x8e9e /* 2700 */
+IDEOGRAM 0x8e9f-0x8efc /* 2800 */
+IDEOGRAM 0x8f40-0x8f7e 0x8f80-0x8f9e /* 2900 */
+IDEOGRAM 0x8f9f-0x8ffc /* 3000 */
+IDEOGRAM 0x9040-0x907e 0x9080-0x909e /* 3100 */
+IDEOGRAM 0x909f-0x90fc /* 3200 */
+IDEOGRAM 0x9140-0x917e 0x9180-0x919e /* 3300 */
+IDEOGRAM 0x919f-0x91fc /* 3400 */
+IDEOGRAM 0x9240-0x927e 0x9280-0x929e /* 3500 */
+IDEOGRAM 0x929f-0x92fc /* 3600 */
+IDEOGRAM 0x9340-0x937e 0x9380-0x939e /* 3700 */
+IDEOGRAM 0x939f-0x93fc /* 3800 */
+IDEOGRAM 0x9440-0x947e 0x9480-0x949e /* 3900 */
+IDEOGRAM 0x949f-0x94fc /* 4000 */
+IDEOGRAM 0x9540-0x957e 0x9580-0x959e /* 4100 */
+IDEOGRAM 0x959f-0x95fc /* 4200 */
+IDEOGRAM 0x9640-0x967e 0x9680-0x969e /* 4300 */
+IDEOGRAM 0x969f-0x96fc /* 4400 */
+IDEOGRAM 0x9740-0x977e 0x9780-0x979e /* 4500 */
+IDEOGRAM 0x979f-0x97fc /* 4600 */
+IDEOGRAM 0x9840-0x987e 0x9880-0x989e /* 4700 */
+IDEOGRAM 0x989f-0x98fc /* 4800 */
+IDEOGRAM 0x9940-0x997e 0x9980-0x999e /* 4900 */
+IDEOGRAM 0x999f-0x99fc /* 5000 */
+IDEOGRAM 0x9a40-0x9a7e 0x9a80-0x9a9e /* 5100 */
+IDEOGRAM 0x9a9f-0x9afc /* 5200 */
+IDEOGRAM 0x9b40-0x9b7e 0x9b80-0x9b9e /* 5300 */
+IDEOGRAM 0x9b9f-0x9bfc /* 5400 */
+IDEOGRAM 0x9c40-0x9c7e 0x9c80-0x9c9e /* 5500 */
+IDEOGRAM 0x9c9f-0x9cfc /* 5600 */
+IDEOGRAM 0x9d40-0x9d7e 0x9d80-0x9d9e /* 5700 */
+IDEOGRAM 0x9d9f-0x9dfc /* 5800 */
+IDEOGRAM 0x9e40-0x9e7e 0x9e80-0x9e9e /* 5900 */
+IDEOGRAM 0x9e9f-0x9efc /* 6000 */
+IDEOGRAM 0x9f40-0x9f7e 0x9f80-0x9f9e /* 6100 */
+IDEOGRAM 0x9f9f-0x9ffc /* 6200 */
+IDEOGRAM 0xe040-0xe07e 0xe080-0xe09e /* 6300 */
+IDEOGRAM 0xe09f-0xe0fc /* 6400 */
+IDEOGRAM 0xe140-0xe17e 0xe180-0xe19e /* 6500 */
+IDEOGRAM 0xe19f-0xe1fc /* 6600 */
+IDEOGRAM 0xe240-0xe27e 0xe280-0xe29e /* 6700 */
+IDEOGRAM 0xe29f-0xe2fc /* 6800 */
+IDEOGRAM 0xe340-0xe37e 0xe380-0xe39e /* 6900 */
+IDEOGRAM 0xe39f-0xe3fc /* 7000 */
+IDEOGRAM 0xe440-0xe47e 0xe480-0xe49e /* 7100 */
+IDEOGRAM 0xe49f-0xe4fc /* 7200 */
+IDEOGRAM 0xe540-0xe57e 0xe580-0xe59e /* 7300 */
+IDEOGRAM 0xe59f-0xe5fc /* 7400 */
+IDEOGRAM 0xe640-0xe67e 0xe680-0xe69e /* 7500 */
+IDEOGRAM 0xe69f-0xe6fc /* 7600 */
+IDEOGRAM 0xe740-0xe77e 0xe780-0xe79e /* 7700 */
+IDEOGRAM 0xe79f-0xe7fc /* 7800 */
+IDEOGRAM 0xe840-0xe87e 0xe880-0xe89e /* 7900 */
+IDEOGRAM 0xe89f-0xe8fc /* 8000 */
+IDEOGRAM 0xe940-0xe97e 0xe980-0xe99e /* 8100 */
+IDEOGRAM 0xe99f-0xe9fc /* 8200 */
+IDEOGRAM 0xea40-0xea7e 0xea80-0xea9e /* 8300 */
+IDEOGRAM 0xea9f-0xeaa4 /* 8400 */
+IDEOGRAM 0xed40-0xed7e 0xed80-0xedfc
+IDEOGRAM 0xee40-0xee7e 0xee80-0xeeeb
+DIGIT 0xeeef-0xeef8
+TODIGIT <0xeeef-0xeef8:1>
+PUNCT 0xeef9-0xeefc
+DIGIT 0xfa40-0xfa49
+TODIGIT <0xfa40-0xfa49:1>
+DIGIT 0xfa4a-0xfa53
+TODIGIT <0xfa4a-0xfa53:1>
+PUNCT 0xfa54-0xfafb
+IDEOGRAM 0xfa5c-0xfa7e 0xfa80-0xfafc
+IDEOGRAM 0xfb40-0xfb7e 0xfb80-0xfbfc
+IDEOGRAM 0xfc40-0xfc4b
+
+SWIDTH2 0x889f-0x88fc /* 1600 */
+SWIDTH2 0x8940-0x897e 0x8980-0x899e /* 1700 */
+SWIDTH2 0x899f-0x89fc /* 1800 */
+SWIDTH2 0x8a40-0x8a7e 0x8a80-0x8a9e /* 1900 */
+SWIDTH2 0x8a9f-0x8afc /* 2000 */
+SWIDTH2 0x8b40-0x8b7e 0x8b80-0x8b9e /* 2100 */
+SWIDTH2 0x8b9f-0x8bfc /* 2200 */
+SWIDTH2 0x8c40-0x8c7e 0x8c80-0x8c9e /* 2300 */
+SWIDTH2 0x8c9f-0x8cfc /* 2400 */
+SWIDTH2 0x8d40-0x8d7e 0x8d80-0x8d9e /* 2500 */
+SWIDTH2 0x8d9f-0x8dfc /* 2600 */
+SWIDTH2 0x8e40-0x8e7e 0x8e80-0x8e9e /* 2700 */
+SWIDTH2 0x8e9f-0x8efc /* 2800 */
+SWIDTH2 0x8f40-0x8f7e 0x8f80-0x8f9e /* 2900 */
+SWIDTH2 0x8f9f-0x8ffc /* 3000 */
+SWIDTH2 0x9040-0x907e 0x9080-0x909e /* 3100 */
+SWIDTH2 0x909f-0x90fc /* 3200 */
+SWIDTH2 0x9140-0x917e 0x9180-0x919e /* 3300 */
+SWIDTH2 0x919f-0x91fc /* 3400 */
+SWIDTH2 0x9240-0x927e 0x9280-0x929e /* 3500 */
+SWIDTH2 0x929f-0x92fc /* 3600 */
+SWIDTH2 0x9340-0x937e 0x9380-0x939e /* 3700 */
+SWIDTH2 0x939f-0x93fc /* 3800 */
+SWIDTH2 0x9440-0x947e 0x9480-0x949e /* 3900 */
+SWIDTH2 0x949f-0x94fc /* 4000 */
+SWIDTH2 0x9540-0x957e 0x9580-0x959e /* 4100 */
+SWIDTH2 0x959f-0x95fc /* 4200 */
+SWIDTH2 0x9640-0x967e 0x9680-0x969e /* 4300 */
+SWIDTH2 0x969f-0x96fc /* 4400 */
+SWIDTH2 0x9740-0x977e 0x9780-0x979e /* 4500 */
+SWIDTH2 0x979f-0x97fc /* 4600 */
+SWIDTH2 0x9840-0x987e 0x9880-0x989e /* 4700 */
+SWIDTH2 0x989f-0x98fc /* 4800 */
+SWIDTH2 0x9940-0x997e 0x9980-0x999e /* 4900 */
+SWIDTH2 0x999f-0x99fc /* 5000 */
+SWIDTH2 0x9a40-0x9a7e 0x9a80-0x9a9e /* 5100 */
+SWIDTH2 0x9a9f-0x9afc /* 5200 */
+SWIDTH2 0x9b40-0x9b7e 0x9b80-0x9b9e /* 5300 */
+SWIDTH2 0x9b9f-0x9bfc /* 5400 */
+SWIDTH2 0x9c40-0x9c7e 0x9c80-0x9c9e /* 5500 */
+SWIDTH2 0x9c9f-0x9cfc /* 5600 */
+SWIDTH2 0x9d40-0x9d7e 0x9d80-0x9d9e /* 5700 */
+SWIDTH2 0x9d9f-0x9dfc /* 5800 */
+SWIDTH2 0x9e40-0x9e7e 0x9e80-0x9e9e /* 5900 */
+SWIDTH2 0x9e9f-0x9efc /* 6000 */
+SWIDTH2 0x9f40-0x9f7e 0x9f80-0x9f9e /* 6100 */
+SWIDTH2 0x9f9f-0x9ffc /* 6200 */
+SWIDTH2 0xe040-0xe07e 0xe080-0xe09e /* 6300 */
+SWIDTH2 0xe09f-0xe0fc /* 6400 */
+SWIDTH2 0xe140-0xe17e 0xe180-0xe19e /* 6500 */
+SWIDTH2 0xe19f-0xe1fc /* 6600 */
+SWIDTH2 0xe240-0xe27e 0xe280-0xe29e /* 6700 */
+SWIDTH2 0xe29f-0xe2fc /* 6800 */
+SWIDTH2 0xe340-0xe37e 0xe380-0xe39e /* 6900 */
+SWIDTH2 0xe39f-0xe3fc /* 7000 */
+SWIDTH2 0xe440-0xe47e 0xe480-0xe49e /* 7100 */
+SWIDTH2 0xe49f-0xe4fc /* 7200 */
+SWIDTH2 0xe540-0xe57e 0xe580-0xe59e /* 7300 */
+SWIDTH2 0xe59f-0xe5fc /* 7400 */
+SWIDTH2 0xe640-0xe67e 0xe680-0xe69e /* 7500 */
+SWIDTH2 0xe69f-0xe6fc /* 7600 */
+SWIDTH2 0xe740-0xe77e 0xe780-0xe79e /* 7700 */
+SWIDTH2 0xe79f-0xe7fc /* 7800 */
+SWIDTH2 0xe840-0xe87e 0xe880-0xe89e /* 7900 */
+SWIDTH2 0xe89f-0xe8fc /* 8000 */
+SWIDTH2 0xe940-0xe97e 0xe980-0xe99e /* 8100 */
+SWIDTH2 0xe99f-0xe9fc /* 8200 */
+SWIDTH2 0xea40-0xea7e 0xea80-0xea9e /* 8300 */
+SWIDTH2 0xea9f-0xeaa4 /* 8400 */
diff --git a/share/mklocale/ja_JP.eucJP.src b/share/mklocale/ja_JP.eucJP.src
new file mode 100644
index 0000000..50f2275
--- /dev/null
+++ b/share/mklocale/ja_JP.eucJP.src
@@ -0,0 +1,245 @@
+# @(#)Japanese 8.1 (Berkeley) 6/6/93
+
+/*
+ * Japanese LOCALE_CTYPE definitions using EUC of JIS character sets
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "EUC"
+
+/* JIS JIS JIS */
+/* X201 X208 X201 */
+/* 00-7f 84-fe */
+
+VARIABLE 1 0x0000 2 0x8080 2 0x0080 3 0x8000 0x8080
+
+/*
+ * Code Set 1
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+SWIDTH1 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' >
+MAPLOWER < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' >
+MAPUPPER < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 >
+TODIGIT < 'a' - 'f' : 10 >
+
+/*
+ * Code Set 2
+ */
+
+SPACE 0xa1a1
+BLANK 0xa1a1
+PHONOGRAM 0xa1bc
+SPECIAL 0xa1a2 - 0xa1fe
+PUNCT 0xa1a2 - 0xa1f8 /* A few too many in here... */
+SWIDTH2 0xa1a1 - 0xa1fe
+
+SPECIAL 0xa2a1 - 0xa2ae 0xa2ba - 0xa2c1 0xa2ca - 0xa2d0 0xa2dc - 0xa2ea
+SPECIAL 0xa2f2 - 0xa2f9 0xa2fe
+SWIDTH2 0xa2a1 - 0xa2ae 0xa2ba - 0xa2c1 0xa2ca - 0xa2d0 0xa2dc - 0xa2ea
+SWIDTH2 0xa2f2 - 0xa2f9 0xa2fe
+
+/* ?DIGIT 0xa3b0 - 0xa3b9 */
+UPPER 0xa3c1 - 0xa3da /* Romaji */
+LOWER 0xa3e1 - 0xa3fa /* Romaji */
+SWIDTH2 0xa3b0 - 0xa3b9 /* Zenkaku Digit */
+SWIDTH2 0xa3c1 - 0xa3da /* Zenkaku Alphabet */
+SWIDTH2 0xa3e1 - 0xa3fa /* Zenkaku Alphabet */
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > /* English */
+MAPLOWER < 0xa3e1 - 0xa3fa : 0xa3e1 > /* English */
+MAPUPPER < 0xa3c1 - 0xa3da : 0xa3c1 >
+MAPUPPER < 0xa3e1 - 0xa3fa : 0xa3c1 >
+
+/* ?XDIGIT 0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6 */
+
+TODIGIT < 0xa3b0 - 0xa3b9 : 0 >
+TODIGIT < 0xa3c1 - 0xa3c6 : 10 >
+TODIGIT < 0xa3e1 - 0xa3e6 : 10 >
+
+PHONOGRAM 0xa4a1 - 0xa4f3
+PHONOGRAM 0xa5a1 - 0xa5f6
+SWIDTH2 0xa4a1 - 0xa4f3 /* Zenkaku Hiragana */
+SWIDTH2 0xa5a1 - 0xa5f6 /* Zenkaku Katakana */
+
+UPPER 0xa6a1 - 0xa6b8 /* Greek */
+LOWER 0xa6c1 - 0xa6d8 /* Greek */
+SWIDTH2 0xa6a1 - 0xa6b8 /* Zenkaku Greek */
+SWIDTH2 0xa6c1 - 0xa6d8 /* Zenkaku Greek */
+MAPLOWER < 0xa6a1 - 0xa6b8 : 0xa6c1 >
+MAPLOWER < 0xa6c1 - 0xa6d8 : 0xa6c1 >
+MAPUPPER < 0xa6a1 - 0xa6b8 : 0xa6a1 >
+MAPUPPER < 0xa6c1 - 0xa6d8 : 0xa6a1 >
+
+UPPER 0xa7a1 - 0xa7c1 /* Cyrillic */
+LOWER 0xa7d1 - 0xa7f1 /* Cyrillic */
+SWIDTH2 0xa7a1 - 0xa7c1 /* Zenkaku Cyrillic */
+SWIDTH2 0xa7d1 - 0xa7f1 /* Zenkaku Cyrillic */
+MAPLOWER < 0xa7a1 - 0xa7c1 : 0xa7d1 >
+MAPLOWER < 0xa7d1 - 0xa7f1 : 0xa7d1 >
+MAPUPPER < 0xa7a1 - 0xa7c1 : 0xa7a1 >
+MAPUPPER < 0xa7d1 - 0xa7f1 : 0xa7a1 >
+
+SPECIAL 0xa8a1 - 0xa8c0
+SWIDTH2 0xa8a1 - 0xa8c0
+
+IDEOGRAM 0xb0a1 - 0xb0fe
+IDEOGRAM 0xb1a1 - 0xb1fe
+IDEOGRAM 0xb2a1 - 0xb2fe
+IDEOGRAM 0xb3a1 - 0xb3fe
+IDEOGRAM 0xb4a1 - 0xb4fe
+IDEOGRAM 0xb5a1 - 0xb5fe
+IDEOGRAM 0xb6a1 - 0xb6fe
+IDEOGRAM 0xb7a1 - 0xb7fe
+IDEOGRAM 0xb8a1 - 0xb8fe
+IDEOGRAM 0xb9a1 - 0xb9fe
+IDEOGRAM 0xbaa1 - 0xbafe
+IDEOGRAM 0xbba1 - 0xbbfe
+IDEOGRAM 0xbca1 - 0xbcfe
+IDEOGRAM 0xbda1 - 0xbdfe
+IDEOGRAM 0xbea1 - 0xbefe
+IDEOGRAM 0xbfa1 - 0xbffe
+IDEOGRAM 0xc0a1 - 0xc0fe
+IDEOGRAM 0xc1a1 - 0xc1fe
+IDEOGRAM 0xc2a1 - 0xc2fe
+IDEOGRAM 0xc3a1 - 0xc3fe
+IDEOGRAM 0xc4a1 - 0xc4fe
+IDEOGRAM 0xc5a1 - 0xc5fe
+IDEOGRAM 0xc6a1 - 0xc6fe
+IDEOGRAM 0xc7a1 - 0xc7fe
+IDEOGRAM 0xc8a1 - 0xc8fe
+IDEOGRAM 0xc9a1 - 0xc9fe
+IDEOGRAM 0xcaa1 - 0xcafe
+IDEOGRAM 0xcba1 - 0xcbfe
+IDEOGRAM 0xcca1 - 0xccfe
+IDEOGRAM 0xcda1 - 0xcdfe
+IDEOGRAM 0xcea1 - 0xcefe
+IDEOGRAM 0xcfa1 - 0xcfd3
+IDEOGRAM 0xd0a1 - 0xd0fe
+IDEOGRAM 0xd1a1 - 0xd1fe
+IDEOGRAM 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd3a1 - 0xd3fe
+IDEOGRAM 0xd4a1 - 0xd4fe
+IDEOGRAM 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd6a1 - 0xd6fe
+IDEOGRAM 0xd7a1 - 0xd7fe
+IDEOGRAM 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd9a1 - 0xd9fe
+IDEOGRAM 0xdaa1 - 0xdafe
+IDEOGRAM 0xdba1 - 0xdbfe
+IDEOGRAM 0xdca1 - 0xdcfe
+IDEOGRAM 0xdda1 - 0xddfe
+IDEOGRAM 0xdea1 - 0xdefe
+IDEOGRAM 0xdfa1 - 0xdffe
+IDEOGRAM 0xe0a1 - 0xe0fe
+IDEOGRAM 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe2a1 - 0xe2fe
+IDEOGRAM 0xe3a1 - 0xe3fe
+IDEOGRAM 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe5a1 - 0xe5fe
+IDEOGRAM 0xe6a1 - 0xe6fe
+IDEOGRAM 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe8a1 - 0xe8fe
+IDEOGRAM 0xe9a1 - 0xe9fe
+IDEOGRAM 0xeaa1 - 0xeafe
+IDEOGRAM 0xeba1 - 0xebfe
+IDEOGRAM 0xeca1 - 0xecfe
+IDEOGRAM 0xeda1 - 0xedfe
+IDEOGRAM 0xeea1 - 0xeefe
+IDEOGRAM 0xefa1 - 0xeffe
+IDEOGRAM 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf1a1 - 0xf1fe
+IDEOGRAM 0xf2a1 - 0xf2fe
+IDEOGRAM 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf4a1 - 0xf4a4
+
+SWIDTH2 0xb0a1 - 0xb0fe
+SWIDTH2 0xb1a1 - 0xb1fe
+SWIDTH2 0xb2a1 - 0xb2fe
+SWIDTH2 0xb3a1 - 0xb3fe
+SWIDTH2 0xb4a1 - 0xb4fe
+SWIDTH2 0xb5a1 - 0xb5fe
+SWIDTH2 0xb6a1 - 0xb6fe
+SWIDTH2 0xb7a1 - 0xb7fe
+SWIDTH2 0xb8a1 - 0xb8fe
+SWIDTH2 0xb9a1 - 0xb9fe
+SWIDTH2 0xbaa1 - 0xbafe
+SWIDTH2 0xbba1 - 0xbbfe
+SWIDTH2 0xbca1 - 0xbcfe
+SWIDTH2 0xbda1 - 0xbdfe
+SWIDTH2 0xbea1 - 0xbefe
+SWIDTH2 0xbfa1 - 0xbffe
+SWIDTH2 0xc0a1 - 0xc0fe
+SWIDTH2 0xc1a1 - 0xc1fe
+SWIDTH2 0xc2a1 - 0xc2fe
+SWIDTH2 0xc3a1 - 0xc3fe
+SWIDTH2 0xc4a1 - 0xc4fe
+SWIDTH2 0xc5a1 - 0xc5fe
+SWIDTH2 0xc6a1 - 0xc6fe
+SWIDTH2 0xc7a1 - 0xc7fe
+SWIDTH2 0xc8a1 - 0xc8fe
+SWIDTH2 0xc9a1 - 0xc9fe
+SWIDTH2 0xcaa1 - 0xcafe
+SWIDTH2 0xcba1 - 0xcbfe
+SWIDTH2 0xcca1 - 0xccfe
+SWIDTH2 0xcda1 - 0xcdfe
+SWIDTH2 0xcea1 - 0xcefe
+SWIDTH2 0xcfa1 - 0xcfd3
+SWIDTH2 0xd0a1 - 0xd0fe
+SWIDTH2 0xd1a1 - 0xd1fe
+SWIDTH2 0xd2a1 - 0xd2fe
+SWIDTH2 0xd3a1 - 0xd3fe
+SWIDTH2 0xd4a1 - 0xd4fe
+SWIDTH2 0xd5a1 - 0xd5fe
+SWIDTH2 0xd6a1 - 0xd6fe
+SWIDTH2 0xd7a1 - 0xd7fe
+SWIDTH2 0xd8a1 - 0xd8fe
+SWIDTH2 0xd9a1 - 0xd9fe
+SWIDTH2 0xdaa1 - 0xdafe
+SWIDTH2 0xdba1 - 0xdbfe
+SWIDTH2 0xdca1 - 0xdcfe
+SWIDTH2 0xdda1 - 0xddfe
+SWIDTH2 0xdea1 - 0xdefe
+SWIDTH2 0xdfa1 - 0xdffe
+SWIDTH2 0xe0a1 - 0xe0fe
+SWIDTH2 0xe1a1 - 0xe1fe
+SWIDTH2 0xe2a1 - 0xe2fe
+SWIDTH2 0xe3a1 - 0xe3fe
+SWIDTH2 0xe4a1 - 0xe4fe
+SWIDTH2 0xe5a1 - 0xe5fe
+SWIDTH2 0xe6a1 - 0xe6fe
+SWIDTH2 0xe7a1 - 0xe7fe
+SWIDTH2 0xe8a1 - 0xe8fe
+SWIDTH2 0xe9a1 - 0xe9fe
+SWIDTH2 0xeaa1 - 0xeafe
+SWIDTH2 0xeba1 - 0xebfe
+SWIDTH2 0xeca1 - 0xecfe
+SWIDTH2 0xeda1 - 0xedfe
+SWIDTH2 0xeea1 - 0xeefe
+SWIDTH2 0xefa1 - 0xeffe
+SWIDTH2 0xf0a1 - 0xf0fe
+SWIDTH2 0xf1a1 - 0xf1fe
+SWIDTH2 0xf2a1 - 0xf2fe
+SWIDTH2 0xf3a1 - 0xf3fe
+SWIDTH2 0xf4a1 - 0xf4a4
+
+/* We don't have codeset 3 and 4.
+ So codeset 3 is only dummy definition
+ */
+PRINT 0xa1 - 0xfe
+SPECIAL 0xa1 - 0xfe
+SWIDTH1 0xa1 - 0xfe
diff --git a/share/mklocale/kk_KZ.PT154.src b/share/mklocale/kk_KZ.PT154.src
new file mode 100644
index 0000000..2c6ac79
--- /dev/null
+++ b/share/mklocale/kk_KZ.PT154.src
@@ -0,0 +1,105 @@
+/*
+ * LOCALE_CTYPE for PT154 character set (IANA PTCP154)
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE PT154 character set by Birsh T <birsh@mail.kz>
+
+ALPHA 'A' - 'Z' 'a' - 'z' 0x80 - 0x83 0x86 - 0x90 0x98 - 0x9f
+ALPHA 0xa1 - 0xa6 0xa8 0xaa 0xad 0xaf 0xb1 - 0xb5 0xb8 0xba
+ALPHA 0xbc - 0xff
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0x80 - 0x9f 0xa1 - 0xff
+LOWER 'a' - 'z' 0x83 0x89 0x90 0x98 - 0x9f 0xa2 0xad 0xb1
+LOWER 0xb3 - 0xb5 0xb8 0xba 0xbc 0xbe 0xbf 0xe0 - 0xff
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0x84 0x85 0x91 - 0x97 0xa7 0xa9 0xab 0xac 0xae 0xb0 0xb6 0xb7
+PUNCT 0xb9 0xbb
+SPACE 0x09 - 0x0d 0x20 0xa0
+UPPER 'A' - 'Z' 0x80 - 0x82 0x86 - 0x88 0x8a - 0x8f 0xa1 0xa3 - 0xa6
+UPPER 0xa8 0xaa 0xaf 0xb2 0xbd 0xc0 - 0xdf
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0x80 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0x80 0x90>
+MAPLOWER <0x90 0x90>
+MAPLOWER <0x81 0x83>
+MAPLOWER <0x83 0x83>
+MAPLOWER <0x82 0xad>
+MAPLOWER <0xad 0xad>
+MAPLOWER <0x86 0x99>
+MAPLOWER <0x99 0x99>
+MAPLOWER <0x87 0x89>
+MAPLOWER <0x89 0x89>
+MAPLOWER <0x88 0x98>
+MAPLOWER <0x98 0x98>
+MAPLOWER <0x8a - 0x8f : 0x9a>
+MAPLOWER <0x9a - 0x9f : 0x9a>
+MAPLOWER <0xa1 0xa2>
+MAPLOWER <0xa2 0xa2>
+MAPLOWER <0xa3 0xbc>
+MAPLOWER <0xbc 0xbc>
+MAPLOWER <0xa4 0xb5>
+MAPLOWER <0xb5 0xb5>
+MAPLOWER <0xa5 0xb4>
+MAPLOWER <0xb4 0xb4>
+MAPLOWER <0xa6 0xb1>
+MAPLOWER <0xb1 0xb1>
+MAPLOWER <0xa8 0xb8>
+MAPLOWER <0xb8 0xb8>
+MAPLOWER <0xaa 0xba>
+MAPLOWER <0xba 0xba>
+MAPLOWER <0xaf 0xbf>
+MAPLOWER <0xbf 0xbf>
+MAPLOWER <0xb2 0xb3>
+MAPLOWER <0xb3 0xb3>
+MAPLOWER <0xbd 0xbe>
+MAPLOWER <0xbe 0xbe>
+MAPLOWER <0xc0 - 0xdf : 0xe0>
+MAPLOWER <0xe0 - 0xff : 0xe0>
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0x80 0x80>
+MAPUPPER <0x90 0x80>
+MAPUPPER <0x81 0x81>
+MAPUPPER <0x83 0x81>
+MAPUPPER <0x82 0x82>
+MAPUPPER <0xad 0x82>
+MAPUPPER <0x86 0x86>
+MAPUPPER <0x99 0x86>
+MAPUPPER <0x87 0x87>
+MAPUPPER <0x89 0x87>
+MAPUPPER <0x88 0x88>
+MAPUPPER <0x98 0x88>
+MAPUPPER <0x8a - 0x8f : 0x8a>
+MAPUPPER <0x9a - 0x9f : 0x8a>
+MAPUPPER <0xa1 0xa1>
+MAPUPPER <0xa2 0xa1>
+MAPUPPER <0xa3 0xa3>
+MAPUPPER <0xbc 0xa3>
+MAPUPPER <0xa4 0xa4>
+MAPUPPER <0xb5 0xa4>
+MAPUPPER <0xa5 0xa5>
+MAPUPPER <0xb4 0xa5>
+MAPUPPER <0xa6 0xa6>
+MAPUPPER <0xb1 0xa6>
+MAPUPPER <0xa8 0xa8>
+MAPUPPER <0xb8 0xa8>
+MAPUPPER <0xaa 0xaa>
+MAPUPPER <0xba 0xaa>
+MAPUPPER <0xaf 0xaf>
+MAPUPPER <0xbf 0xaf>
+MAPUPPER <0xb2 0xb2>
+MAPUPPER <0xb3 0xb2>
+MAPUPPER <0xbd 0xbd>
+MAPUPPER <0xbe 0xbd>
+MAPUPPER <0xc0 - 0xdf : 0xc0>
+MAPUPPER <0xe0 - 0xff : 0xc0>
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/ko_KR.CP949.src b/share/mklocale/ko_KR.CP949.src
new file mode 100644
index 0000000..cda9626
--- /dev/null
+++ b/share/mklocale/ko_KR.CP949.src
@@ -0,0 +1,188 @@
+/*
+ * Korean LC_CTYPE definitions using CP949 character sets
+ * (ko_KR.CP949.src)
+ *
+ * CP949 contains four character sets:
+ *
+ * <0x00-0x7f> ASCII equivalent
+ * <0xa1-0xfd><0xa1-0xfe> EUC instance of KS X 1001:2002
+ * <0x81-0xa0><0x41-0xfe> Hangul syllables GAGG-JWAK
+ * <0xa1-0xc6><0x41-0xa0> Hangul syllables JWAT-HIH (ends with C652)
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "GBK" /* CP949 isn't GBK, but they have same encoding method. */
+
+/*
+ * ASCII equivalent
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' > < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' > < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 >
+
+/*
+ * KS X 1001:2002
+ */
+ALPHA 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+UPPER 0xa3c1 - 0xa3da
+LOWER 0xa3e1 - 0xa3fa
+PUNCT 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0
+PUNCT 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+SPACE 0xa1a1
+BLANK 0xa1a1
+PRINT 0xa1a1 - 0xfefe
+SPECIAL 0xa1a2 - 0xa2e8 0xa3b0 - 0xa3b9
+
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > < 0xa3e1 - 0xa3fa : 0xa3e1 >
+MAPUPPER < 0xa3c1 - 0xa3da : 0xa3c1 > < 0xa3e1 - 0xa3fa : 0xa3c1 >
+TODIGIT < 0xa3b0 - 0xa3b9 : 0 >
+TODIGIT < 0xa3c1 - 0xa3c6 : 10 > < 0xa3e1 - 0xa3e6 : 10 >
+
+UPPER 0xa5c1 - 0xa5d8 /* Greek */
+LOWER 0xa5e1 - 0xa5f8 /* Greek */
+MAPLOWER < 0xa5c1 - 0xa5d8 : 0xa5e1 > < 0xa5e1 - 0xa5f8 : 0xa5e1 >
+MAPUPPER < 0xa5c1 - 0xa5d8 : 0xa5c1 > < 0xa5e1 - 0xa5f8 : 0xa5c1 >
+
+UPPER 0xaca1 - 0xacc1 /* Cyrillic */
+LOWER 0xacd1 - 0xacf1 /* Cyrillic */
+MAPLOWER < 0xaca1 - 0xacc1 : 0xacd1 > < 0xacd1 - 0xacf1 : 0xacd1 >
+MAPUPPER < 0xaca1 - 0xacc1 : 0xaca1 > < 0xacd1 - 0xacf1 : 0xaca1 >
+
+SPECIAL 0xa5a1 - 0xa5aa 0xa5b0 - 0xa5b9 /* Greek Digits */
+MAPLOWER < 0xa5a1 - 0xa5aa : 0xa5a1 > < 0xa5b0 - 0xa5b9 : 0xa5a1 >
+MAPUPPER < 0xa5a1 - 0xa5aa : 0xa5b0 > < 0xa5b0 - 0xa5b9 : 0xa5b0 >
+SPECIAL 0xa6a1 - 0xa6e4 0xa7a1 - 0xa7ef /* Symbols */
+SPECIAL 0xa8a1 - 0xa8fe 0xa9a1 - 0xa9fe /* Circled Symbols */
+
+PHONOGRAM 0xa4a1 - 0xa4fe /* Full-width Hangul glyph */
+PHONOGRAM 0xaaa1 - 0xaaf3 /* Full-width Hirakana */
+PHONOGRAM 0xaba1 - 0xabf6 /* Full-width Katakana */
+
+PHONOGRAM 0xb0a1 - 0xb0fe 0xb1a1 - 0xb1fe 0xb2a1 - 0xb2fe
+PHONOGRAM 0xb3a1 - 0xb3fe 0xb4a1 - 0xb4fe 0xb5a1 - 0xb5fe
+PHONOGRAM 0xb6a1 - 0xb6fe 0xb7a1 - 0xb7fe 0xb8a1 - 0xb8fe
+PHONOGRAM 0xb9a1 - 0xb9fe 0xbaa1 - 0xbafe 0xbba1 - 0xbbfe
+PHONOGRAM 0xbca1 - 0xbcfe 0xbda1 - 0xbdfe 0xbea1 - 0xbefe
+PHONOGRAM 0xbfa1 - 0xbffe 0xc0a1 - 0xc0fe 0xc1a1 - 0xc1fe
+PHONOGRAM 0xc2a1 - 0xc2fe 0xc3a1 - 0xc3fe 0xc4a1 - 0xc4fe
+PHONOGRAM 0xc5a1 - 0xc5fe 0xc6a1 - 0xc6fe 0xc7a1 - 0xc7fe
+PHONOGRAM 0xc8a1 - 0xc8fe /* Hangul composed */
+
+IDEOGRAM 0xcaa1 - 0xcafe 0xcba1 - 0xcbfe 0xcca1 - 0xccfe
+IDEOGRAM 0xcda1 - 0xcdfe 0xcea1 - 0xcefe 0xcfa1 - 0xcffe
+IDEOGRAM 0xd0a1 - 0xd0fe 0xd1a1 - 0xd1fe 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd3a1 - 0xd3fe 0xd4a1 - 0xd4fe 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd6a1 - 0xd6fe 0xd7a1 - 0xd7fe 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd9a1 - 0xd9fe 0xdaa1 - 0xdafe 0xdba1 - 0xdbfe
+IDEOGRAM 0xdca1 - 0xdcfe 0xdda1 - 0xddfe 0xdea1 - 0xdefe
+IDEOGRAM 0xdfa1 - 0xdffe 0xe0a1 - 0xe0fe 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe2a1 - 0xe2fe 0xe3a1 - 0xe3fe 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe5a1 - 0xe5fe 0xe6a1 - 0xe6fe 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe8a1 - 0xe8fe 0xe9a1 - 0xe9fe 0xeaa1 - 0xeafe
+IDEOGRAM 0xeba1 - 0xebfe 0xeca1 - 0xecfe 0xeda1 - 0xedfe
+IDEOGRAM 0xeea1 - 0xeefe 0xefa1 - 0xeffe 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf1a1 - 0xf1fe 0xf2a1 - 0xf2fe 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf4a1 - 0xf4fe 0xf5a1 - 0xf5fe 0xf6a1 - 0xf6fe
+IDEOGRAM 0xf7a1 - 0xf7fe 0xf8a1 - 0xf8fe 0xf9a1 - 0xf9fe
+IDEOGRAM 0xfaa1 - 0xfafe 0xfba1 - 0xfbfe 0xfca1 - 0xfcfe
+IDEOGRAM 0xfda1 - 0xfdfe /* Hanja */
+
+/*
+ * Hangul syllables GAGG-JWAK
+ */
+
+PHONOGRAM 0x8141 - 0x815a 0x8161 - 0x817a 0x8181 - 0x81fe
+PHONOGRAM 0x8241 - 0x825a 0x8261 - 0x827a 0x8281 - 0x82fe
+PHONOGRAM 0x8341 - 0x835a 0x8361 - 0x837a 0x8381 - 0x83fe
+PHONOGRAM 0x8441 - 0x845a 0x8461 - 0x847a 0x8481 - 0x84fe
+PHONOGRAM 0x8541 - 0x855a 0x8561 - 0x857a 0x8581 - 0x85fe
+PHONOGRAM 0x8641 - 0x865a 0x8661 - 0x867a 0x8681 - 0x86fe
+PHONOGRAM 0x8741 - 0x875a 0x8761 - 0x877a 0x8781 - 0x87fe
+PHONOGRAM 0x8841 - 0x885a 0x8861 - 0x887a 0x8881 - 0x88fe
+PHONOGRAM 0x8941 - 0x895a 0x8961 - 0x897a 0x8981 - 0x89fe
+PHONOGRAM 0x8a41 - 0x8a5a 0x8a61 - 0x8a7a 0x8a81 - 0x8afe
+PHONOGRAM 0x8b41 - 0x8b5a 0x8b61 - 0x8b7a 0x8b81 - 0x8bfe
+PHONOGRAM 0x8c41 - 0x8c5a 0x8c61 - 0x8c7a 0x8c81 - 0x8cfe
+PHONOGRAM 0x8d41 - 0x8d5a 0x8d61 - 0x8d7a 0x8d81 - 0x8dfe
+PHONOGRAM 0x8e41 - 0x8e5a 0x8e61 - 0x8e7a 0x8e81 - 0x8efe
+PHONOGRAM 0x8f41 - 0x8f5a 0x8f61 - 0x8f7a 0x8f81 - 0x8ffe
+PHONOGRAM 0x9041 - 0x905a 0x9061 - 0x907a 0x9081 - 0x90fe
+PHONOGRAM 0x9141 - 0x915a 0x9161 - 0x917a 0x9181 - 0x91fe
+PHONOGRAM 0x9241 - 0x925a 0x9261 - 0x927a 0x9281 - 0x92fe
+PHONOGRAM 0x9341 - 0x935a 0x9361 - 0x937a 0x9381 - 0x93fe
+PHONOGRAM 0x9441 - 0x945a 0x9461 - 0x947a 0x9481 - 0x94fe
+PHONOGRAM 0x9541 - 0x955a 0x9561 - 0x957a 0x9581 - 0x95fe
+PHONOGRAM 0x9641 - 0x965a 0x9661 - 0x967a 0x9681 - 0x96fe
+PHONOGRAM 0x9741 - 0x975a 0x9761 - 0x977a 0x9781 - 0x97fe
+PHONOGRAM 0x9841 - 0x985a 0x9861 - 0x987a 0x9881 - 0x98fe
+PHONOGRAM 0x9941 - 0x995a 0x9961 - 0x997a 0x9981 - 0x99fe
+PHONOGRAM 0x9a41 - 0x9a5a 0x9a61 - 0x9a7a 0x9a81 - 0x9afe
+PHONOGRAM 0x9b41 - 0x9b5a 0x9b61 - 0x9b7a 0x9b81 - 0x9bfe
+PHONOGRAM 0x9c41 - 0x9c5a 0x9c61 - 0x9c7a 0x9c81 - 0x9cfe
+PHONOGRAM 0x9d41 - 0x9d5a 0x9d61 - 0x9d7a 0x9d81 - 0x9dfe
+PHONOGRAM 0x9e41 - 0x9e5a 0x9e61 - 0x9e7a 0x9e81 - 0x9efe
+PHONOGRAM 0x9f41 - 0x9f5a 0x9f61 - 0x9f7a 0x9f81 - 0x9ffe
+PHONOGRAM 0xa041 - 0xa05a 0xa061 - 0xa07a 0xa081 - 0xa0fe
+
+/*
+ * Hangul syllables JWAT-HIH
+ */
+
+PHONOGRAM 0xa141 - 0xa15a 0xa161 - 0xa17a 0xa181 - 0xa1a0
+PHONOGRAM 0xa241 - 0xa25a 0xa261 - 0xa27a 0xa281 - 0xa2a0
+PHONOGRAM 0xa341 - 0xa35a 0xa361 - 0xa37a 0xa381 - 0xa3a0
+PHONOGRAM 0xa441 - 0xa45a 0xa461 - 0xa47a 0xa481 - 0xa4a0
+PHONOGRAM 0xa541 - 0xa55a 0xa561 - 0xa57a 0xa581 - 0xa5a0
+PHONOGRAM 0xa641 - 0xa65a 0xa661 - 0xa67a 0xa681 - 0xa6a0
+PHONOGRAM 0xa741 - 0xa75a 0xa761 - 0xa77a 0xa781 - 0xa7a0
+PHONOGRAM 0xa841 - 0xa85a 0xa861 - 0xa87a 0xa881 - 0xa8a0
+PHONOGRAM 0xa941 - 0xa95a 0xa961 - 0xa97a 0xa981 - 0xa9a0
+PHONOGRAM 0xaa41 - 0xaa5a 0xaa61 - 0xaa7a 0xaa81 - 0xaaa0
+PHONOGRAM 0xab41 - 0xab5a 0xab61 - 0xab7a 0xab81 - 0xaba0
+PHONOGRAM 0xac41 - 0xac5a 0xac61 - 0xac7a 0xac81 - 0xaca0
+PHONOGRAM 0xad41 - 0xad5a 0xad61 - 0xad7a 0xad81 - 0xada0
+PHONOGRAM 0xae41 - 0xae5a 0xae61 - 0xae7a 0xae81 - 0xaea0
+PHONOGRAM 0xaf41 - 0xaf5a 0xaf61 - 0xaf7a 0xaf81 - 0xafa0
+PHONOGRAM 0xb041 - 0xb05a 0xb061 - 0xb07a 0xb081 - 0xb0a0
+PHONOGRAM 0xb141 - 0xb15a 0xb161 - 0xb17a 0xb181 - 0xb1a0
+PHONOGRAM 0xb241 - 0xb25a 0xb261 - 0xb27a 0xb281 - 0xb2a0
+PHONOGRAM 0xb341 - 0xb35a 0xb361 - 0xb37a 0xb381 - 0xb3a0
+PHONOGRAM 0xb441 - 0xb45a 0xb461 - 0xb47a 0xb481 - 0xb4a0
+PHONOGRAM 0xb541 - 0xb55a 0xb561 - 0xb57a 0xb581 - 0xb5a0
+PHONOGRAM 0xb641 - 0xb65a 0xb661 - 0xb67a 0xb681 - 0xb6a0
+PHONOGRAM 0xb741 - 0xb75a 0xb761 - 0xb77a 0xb781 - 0xb7a0
+PHONOGRAM 0xb841 - 0xb85a 0xb861 - 0xb87a 0xb881 - 0xb8a0
+PHONOGRAM 0xb941 - 0xb95a 0xb961 - 0xb97a 0xb981 - 0xb9a0
+PHONOGRAM 0xba41 - 0xba5a 0xba61 - 0xba7a 0xba81 - 0xbaa0
+PHONOGRAM 0xbb41 - 0xbb5a 0xbb61 - 0xbb7a 0xbb81 - 0xbba0
+PHONOGRAM 0xbc41 - 0xbc5a 0xbc61 - 0xbc7a 0xbc81 - 0xbca0
+PHONOGRAM 0xbd41 - 0xbd5a 0xbd61 - 0xbd7a 0xbd81 - 0xbda0
+PHONOGRAM 0xbe41 - 0xbe5a 0xbe61 - 0xbe7a 0xbe81 - 0xbea0
+PHONOGRAM 0xbf41 - 0xbf5a 0xbf61 - 0xbf7a 0xbf81 - 0xbfa0
+PHONOGRAM 0xc041 - 0xc05a 0xc061 - 0xc07a 0xc081 - 0xc0a0
+PHONOGRAM 0xc141 - 0xc15a 0xc161 - 0xc17a 0xc181 - 0xc1a0
+PHONOGRAM 0xc241 - 0xc25a 0xc261 - 0xc27a 0xc281 - 0xc2a0
+PHONOGRAM 0xc341 - 0xc35a 0xc361 - 0xc37a 0xc381 - 0xc3a0
+PHONOGRAM 0xc441 - 0xc45a 0xc461 - 0xc47a 0xc481 - 0xc4a0
+PHONOGRAM 0xc541 - 0xc55a 0xc561 - 0xc57a 0xc581 - 0xc5a0
+PHONOGRAM 0xc641 - 0xc652
+
+/* Every real-world Korean softwares process all codepoints upper than
+ * 0x8000 (even invalid) as one full-width character per two bytes. */
+SWIDTH2 0x8000 - 0xffff
+
+/* End of LC_CTYPE definition */
diff --git a/share/mklocale/ko_KR.eucKR.src b/share/mklocale/ko_KR.eucKR.src
new file mode 100644
index 0000000..9870adc
--- /dev/null
+++ b/share/mklocale/ko_KR.eucKR.src
@@ -0,0 +1,166 @@
+/*
+ * Korean LC_CTYPE definitions using EUC-KR character sets
+ * (ko_KR.EUC.src)
+ *
+ * Choi Jun Ho, junker@jazz.snu.ac.kr
+ * NARAE, Seoul National Univ., CS Dept.
+ * Last Updated on Mar 24 1997
+ *
+ * It is based on manpage mklocale(1), euc(4), ja_JP.EUC.src.
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "EUC"
+
+/* EUC-KR(KS C 5601.1992)
+ * 0xa1a1-0xfefe
+ * byte 1: 0xa1-0xfe
+ * byte 2: 0xa1-0xfe
+ */
+
+/* We have only codeset 1 and 2, so others are dummy.
+ But it must be defined to work in 2.2 xpg4 locale routine...
+ */
+VARIABLE 1 0x0000 2 0x8080 2 0x0080 3 0x8000 0x8080
+
+/*
+ * Code Set 1, US-ASCII equivalent
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+SWIDTH1 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' > < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' > < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 >
+
+/*
+ * Code Set 2, EUC-KR
+ */
+ALPHA 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+SWIDTH2 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+/* ?DIGIT 0xa3b0 - 0xa3b9 */
+SWIDTH2 0xa3b0 - 0xa3b9
+UPPER 0xa3c1 - 0xa3da
+LOWER 0xa3e1 - 0xa3fa
+PUNCT 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+SWIDTH2 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+SPACE 0xa1a1
+SWIDTH2 0xa1a1
+/* ?XDIGIT 0xa3b0 - 0xa3b9 0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6 */
+BLANK 0xa1a1
+PRINT 0xa1a1 - 0xfefe
+SPECIAL 0xa1a2 - 0xa2e5
+SWIDTH2 0xa1a1 - 0xa2e5
+
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > < 0xa3e1 - 0xa3fa : 0xa3e1 >
+MAPUPPER < 0xa3c1 - 0xa3da : 0xa3c1 > < 0xa3b0 - 0xa3b9 : 0xa3c1 >
+TODIGIT < 0xa3b0 - 0xa3b9 : 0 >
+TODIGIT < 0xa3c1 - 0xa3c6 : 10 > < 0xa3e1 - 0xa3e6 : 10 >
+
+
+UPPER 0xa5c1 - 0xa5d8 /* Greek */
+LOWER 0xa5e1 - 0xa5f8 /* Greek */
+SWIDTH2 0xa5c1 - 0xa5d8 /* Greek */
+SWIDTH2 0xa5e1 - 0xa5f8 /* Greek */
+MAPLOWER < 0xa5c1 - 0xa5d8 : 0xa5e1 > < 0xa5e1 - 0xa5f8 : 0xa5e1 >
+MAPUPPER < 0xa5c1 - 0xa5d8 : 0xa5c1 > < 0xa5e1 - 0xa5f8 : 0xa5c1 >
+
+UPPER 0xaca1 - 0xacc1 /* Cyrillic */
+LOWER 0xacd1 - 0xacf1 /* Cyrillic */
+SWIDTH2 0xaca1 - 0xacc1 /* Cyrillic */
+SWIDTH2 0xacd1 - 0xacf1 /* Cyrillic */
+MAPLOWER < 0xaca1 - 0xacc1 : 0xacd1 > < 0xacd1 - 0xacf1 : 0xacd1 >
+MAPUPPER < 0xaca1 - 0xacc1 : 0xaca1 > < 0xacd1 - 0xacf1 : 0xaca1 >
+
+/* ?DIGIT 0xa5a1 - 0xa5aa 0xa5b0 - 0xa5b9 */ /* Greek Digit */
+SPECIAL 0xa6a1 - 0xa6e4 0xa7a1 - 0xa7ef /* Symbols */
+SPECIAL 0xa8a1 - 0xa8fe 0xa9a1 - 0xa9fe /* Circle Symbols */
+SWIDTH2 0xa5a1 - 0xa5aa 0xa5b0 - 0xa5b9 /* Greek Digit */
+SWIDTH2 0xa6a1 - 0xa6e4 0xa7a1 - 0xa7ef /* Symbols */
+SWIDTH2 0xa8a1 - 0xa8fe 0xa9a1 - 0xa9fe /* Circle Symbols */
+
+PHONOGRAM 0xa4a1 - 0xa4fe /* Full-width Hangul glyph */
+PHONOGRAM 0xaaa1 - 0xaaf3 /* Full-width Hirakana */
+PHONOGRAM 0xaba1 - 0xabf6 /* Full-width Katakana */
+SWIDTH2 0xa4a1 - 0xa4fe /* Full-width Hangul glyph */
+SWIDTH2 0xaaa1 - 0xaaf3 /* Full-width Hirakana */
+SWIDTH2 0xaba1 - 0xabf6 /* Full-width Katakana */
+
+PHONOGRAM 0xb0a1 - 0xb0fe 0xb1a1 - 0xb1fe 0xb2a1 - 0xb2fe
+PHONOGRAM 0xb3a1 - 0xb3fe 0xb4a1 - 0xb4fe 0xb5a1 - 0xb5fe
+PHONOGRAM 0xb6a1 - 0xb6fe 0xb7a1 - 0xb7fe 0xb8a1 - 0xb8fe
+PHONOGRAM 0xb9a1 - 0xb9fe 0xbaa1 - 0xbafe 0xbba1 - 0xbbfe
+PHONOGRAM 0xbca1 - 0xbcfe 0xbda1 - 0xbdfe 0xbea1 - 0xbefe
+PHONOGRAM 0xbfa1 - 0xbffe 0xc0a1 - 0xc0fe 0xc1a1 - 0xc1fe
+PHONOGRAM 0xc2a1 - 0xc2fe 0xc3a1 - 0xc3fe 0xc4a1 - 0xc4fe
+PHONOGRAM 0xc5a1 - 0xc5fe 0xc6a1 - 0xc6fe 0xc7a1 - 0xc7fe
+PHONOGRAM 0xc8a1 - 0xc8fe /* Hangul composed */
+
+SWIDTH2 0xb0a1 - 0xb0fe 0xb1a1 - 0xb1fe 0xb2a1 - 0xb2fe
+SWIDTH2 0xb3a1 - 0xb3fe 0xb4a1 - 0xb4fe 0xb5a1 - 0xb5fe
+SWIDTH2 0xb6a1 - 0xb6fe 0xb7a1 - 0xb7fe 0xb8a1 - 0xb8fe
+SWIDTH2 0xb9a1 - 0xb9fe 0xbaa1 - 0xbafe 0xbba1 - 0xbbfe
+SWIDTH2 0xbca1 - 0xbcfe 0xbda1 - 0xbdfe 0xbea1 - 0xbefe
+SWIDTH2 0xbfa1 - 0xbffe 0xc0a1 - 0xc0fe 0xc1a1 - 0xc1fe
+SWIDTH2 0xc2a1 - 0xc2fe 0xc3a1 - 0xc3fe 0xc4a1 - 0xc4fe
+SWIDTH2 0xc5a1 - 0xc5fe 0xc6a1 - 0xc6fe 0xc7a1 - 0xc7fe
+SWIDTH2 0xc8a1 - 0xc8fe /* Hangul composed */
+
+IDEOGRAM 0xcaa1 - 0xcafe 0xcba1 - 0xcbfe 0xcca1 - 0xccfe
+IDEOGRAM 0xcda1 - 0xcdfe 0xcea1 - 0xcefe 0xcfa1 - 0xcffe
+IDEOGRAM 0xd0a1 - 0xd0fe 0xd1a1 - 0xd1fe 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd3a1 - 0xd3fe 0xd4a1 - 0xd4fe 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd6a1 - 0xd6fe 0xd7a1 - 0xd7fe 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd9a1 - 0xd9fe 0xdaa1 - 0xdafe 0xdba1 - 0xdbfe
+IDEOGRAM 0xdca1 - 0xdcfe 0xdda1 - 0xddfe 0xdea1 - 0xdefe
+IDEOGRAM 0xdfa1 - 0xdffe 0xe0a1 - 0xe0fe 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe2a1 - 0xe2fe 0xe3a1 - 0xe3fe 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe5a1 - 0xe5fe 0xe6a1 - 0xe6fe 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe8a1 - 0xe8fe 0xe9a1 - 0xe9fe 0xeaa1 - 0xeafe
+IDEOGRAM 0xeba1 - 0xebfe 0xeca1 - 0xecfe 0xeda1 - 0xedfe
+IDEOGRAM 0xeea1 - 0xeefe 0xefa1 - 0xeffe 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf1a1 - 0xf1fe 0xf2a1 - 0xf2fe 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf4a1 - 0xf4fe 0xf5a1 - 0xf5fe 0xf6a1 - 0xf6fe
+IDEOGRAM 0xf7a1 - 0xf7fe 0xf8a1 - 0xf8fe 0xf9a1 - 0xf9fe
+IDEOGRAM 0xfaa1 - 0xfafe 0xfba1 - 0xfbfe 0xfca1 - 0xfcfe
+IDEOGRAM 0xfda1 - 0xfdfe /* Hanja */
+
+SWIDTH2 0xcaa1 - 0xcafe 0xcba1 - 0xcbfe 0xcca1 - 0xccfe
+SWIDTH2 0xcda1 - 0xcdfe 0xcea1 - 0xcefe 0xcfa1 - 0xcffe
+SWIDTH2 0xd0a1 - 0xd0fe 0xd1a1 - 0xd1fe 0xd2a1 - 0xd2fe
+SWIDTH2 0xd3a1 - 0xd3fe 0xd4a1 - 0xd4fe 0xd5a1 - 0xd5fe
+SWIDTH2 0xd6a1 - 0xd6fe 0xd7a1 - 0xd7fe 0xd8a1 - 0xd8fe
+SWIDTH2 0xd9a1 - 0xd9fe 0xdaa1 - 0xdafe 0xdba1 - 0xdbfe
+SWIDTH2 0xdca1 - 0xdcfe 0xdda1 - 0xddfe 0xdea1 - 0xdefe
+SWIDTH2 0xdfa1 - 0xdffe 0xe0a1 - 0xe0fe 0xe1a1 - 0xe1fe
+SWIDTH2 0xe2a1 - 0xe2fe 0xe3a1 - 0xe3fe 0xe4a1 - 0xe4fe
+SWIDTH2 0xe5a1 - 0xe5fe 0xe6a1 - 0xe6fe 0xe7a1 - 0xe7fe
+SWIDTH2 0xe8a1 - 0xe8fe 0xe9a1 - 0xe9fe 0xeaa1 - 0xeafe
+SWIDTH2 0xeba1 - 0xebfe 0xeca1 - 0xecfe 0xeda1 - 0xedfe
+SWIDTH2 0xeea1 - 0xeefe 0xefa1 - 0xeffe 0xf0a1 - 0xf0fe
+SWIDTH2 0xf1a1 - 0xf1fe 0xf2a1 - 0xf2fe 0xf3a1 - 0xf3fe
+SWIDTH2 0xf4a1 - 0xf4fe 0xf5a1 - 0xf5fe 0xf6a1 - 0xf6fe
+SWIDTH2 0xf7a1 - 0xf7fe 0xf8a1 - 0xf8fe 0xf9a1 - 0xf9fe
+SWIDTH2 0xfaa1 - 0xfafe 0xfba1 - 0xfbfe 0xfca1 - 0xfcfe
+SWIDTH2 0xfda1 - 0xfdfe /* Hanja */
+
+/* We don't have codeset 3 and 4.
+ So codeset 3 is only dummy definition
+ */
+PRINT 0xa1 - 0xfe
+SPECIAL 0xa1 - 0xfe
+SWIDTH1 0xa1 - 0xfe
+
+/* End of LC_CTYPE definition */
diff --git a/share/mklocale/la_LN.ISO8859-1.src b/share/mklocale/la_LN.ISO8859-1.src
new file mode 100644
index 0000000..0545dd1
--- /dev/null
+++ b/share/mklocale/la_LN.ISO8859-1.src
@@ -0,0 +1,40 @@
+/*
+ * Standard LOCALE_CTYPE for the ISO 8859-1 Locale
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE ISO 8859-1 Latin-1 character set
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0xc0 - 0xd6 0xd8 - 0xf6 0xf8 - 0xff
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+LOWER 'a' - 'z' 0xdf - 0xf6 0xf8 - 0xff
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa1 - 0xbf 0xd7 0xf7
+SPACE 0x09 - 0x0d ' ' 0xa0
+UPPER 'A' - 'Z' 0xc0 - 0xd6 0xd8 - 0xde
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xc0 - 0xd6 : 0xe0>
+MAPLOWER <0xd8 - 0xde : 0xf8>
+MAPLOWER <0xdf - 0xf6 : 0xdf>
+MAPLOWER <0xf8 - 0xff : 0xf8>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xc0 - 0xd6 : 0xc0>
+MAPUPPER <0xd8 - 0xde : 0xd8>
+MAPUPPER <0xe0 - 0xf6 : 0xc0>
+MAPUPPER <0xf8 - 0xfe : 0xd8>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/la_LN.ISO8859-15.src b/share/mklocale/la_LN.ISO8859-15.src
new file mode 100644
index 0000000..ac780d3
--- /dev/null
+++ b/share/mklocale/la_LN.ISO8859-15.src
@@ -0,0 +1,48 @@
+/*
+ * Standard LOCALE_CTYPE for the ISO 8859-15 Locale
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE ISO 8859-15 Latin-9 character set
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0xa6 0xa8 0xb4 0xb8 0xbc - 0xbe 0xc0 - 0xd6 0xd8 - 0xf6 0xf8 - 0xff
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+LOWER 'a' - 'z' 0xa8 0xb8 0xbd 0xdf - 0xf6 0xf8 - 0xff
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa1 - 0xa5 0xa7 0xa9 - 0xb3 0xb5 - 0xb7 0xb9 - 0xbb 0xbf 0xd7 0xf7
+SPACE 0x09 - 0x0d ' ' 0xa0
+UPPER 'A' - 'Z' 0xa6 0xb4 0xbc 0xbe 0xc0 - 0xd6 0xd8 - 0xde
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xa6 - 0xa6 : 0xa8>
+MAPLOWER <0xb4 - 0xb4 : 0xb8>
+MAPLOWER <0xbc - 0xbc : 0xbd>
+MAPLOWER <0xbe - 0xbe : 0xff>
+MAPLOWER <0xc0 - 0xd6 : 0xe0>
+MAPLOWER <0xd8 - 0xde : 0xf8>
+MAPLOWER <0xdf - 0xf6 : 0xdf>
+MAPLOWER <0xf8 - 0xff : 0xf8>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xa8 - 0xa8 : 0xa6>
+MAPUPPER <0xb8 - 0xb8 : 0xb4>
+MAPUPPER <0xbd - 0xbd : 0xbc>
+MAPUPPER <0xc0 - 0xd6 : 0xc0>
+MAPUPPER <0xd8 - 0xde : 0xd8>
+MAPUPPER <0xe0 - 0xf6 : 0xc0>
+MAPUPPER <0xf8 - 0xfe : 0xd8>
+MAPUPPER <0xff - 0xff : 0xbe>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/la_LN.ISO8859-2.src b/share/mklocale/la_LN.ISO8859-2.src
new file mode 100644
index 0000000..9a28807
--- /dev/null
+++ b/share/mklocale/la_LN.ISO8859-2.src
@@ -0,0 +1,78 @@
+/*
+ * LOCALE_CTYPE for the iso_8859_2 Locale
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "NONE"
+VARIABLE ISO 8859-2 Latin-2 character set
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z'
+ALPHA 0xa1 0xa3 0xa5 0xa6 0xa9 - 0xac 0xae 0xaf
+ALPHA 0xb1 0xb3 0xb5 0xb6 0xb9 - 0xbc 0xbe 0xbf
+ALPHA 0xc0 - 0xd6 0xd8 - 0xf6 0xf8 - 0xfe
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+LOWER 'a' - 'z'
+LOWER 0xb1 0xb3 0xb5 0xb6 0xb9 - 0xbc 0xbe 0xbf
+LOWER 0xdf - 0xf6 0xf8 - 0xfe
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0xa2 0xa4 0xa7 0xa8 0xad 0xb0 0xb2 0xb4 0xb7 0xb8 0xbd
+PUNCT 0xd7 0xf7 0xff
+SPACE 0x09 - 0x0d 0x20 0xa0
+UPPER 'A' - 'Z'
+UPPER 0xa1 0xa3 0xa5 0xa6 0xa9 - 0xac 0xae 0xaf
+UPPER 0xc0 - 0xd6 0xd8 - 0xde
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xa1 0xb1>
+MAPLOWER <0xa3 0xb3>
+MAPLOWER <0xa5 0xb5>
+MAPLOWER <0xa6 0xb6>
+MAPLOWER <0xa9 - 0xac : 0xb9>
+MAPLOWER <0xae 0xbe>
+MAPLOWER <0xaf 0xbf>
+MAPLOWER <0xb1 0xb1>
+MAPLOWER <0xb3 0xb3>
+MAPLOWER <0xb5 0xb5>
+MAPLOWER <0xb6 0xb6>
+MAPLOWER <0xb9 - 0xbc : 0xb9>
+MAPLOWER <0xbe 0xbe>
+MAPLOWER <0xbf 0xbf>
+MAPLOWER <0xc0 - 0xd6 : 0xe0>
+MAPLOWER <0xd8 - 0xde : 0xf8>
+MAPLOWER <0xdf - 0xf6 : 0xdf>
+MAPLOWER <0xf8 - 0xfe : 0xf8>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xa1 0xa1>
+MAPUPPER <0xa3 0xa3>
+MAPUPPER <0xa5 0xa5>
+MAPUPPER <0xa6 0xa6>
+MAPUPPER <0xa9 - 0xac : 0xa9>
+MAPUPPER <0xae 0xae>
+MAPUPPER <0xaf 0xaf>
+MAPUPPER <0xb1 0xa1>
+MAPUPPER <0xb3 0xa3>
+MAPUPPER <0xb5 0xa5>
+MAPUPPER <0xb6 0xa6>
+MAPUPPER <0xb9 - 0xbc : 0xa9>
+MAPUPPER <0xbe 0xae>
+MAPUPPER <0xbf 0xaf>
+MAPUPPER <0xc0 - 0xd6 : 0xc0>
+MAPUPPER <0xd8 - 0xdf : 0xd8>
+MAPUPPER <0xe0 - 0xf6 : 0xc0>
+MAPUPPER <0xf8 - 0xfe : 0xd8>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/la_LN.ISO8859-4.src b/share/mklocale/la_LN.ISO8859-4.src
new file mode 100644
index 0000000..2a4d833
--- /dev/null
+++ b/share/mklocale/la_LN.ISO8859-4.src
@@ -0,0 +1,78 @@
+/*
+ * LOCALE_CTYPE for the iso_8859_4 Locale
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "NONE"
+VARIABLE ISO 8859-4 Latin-4 character set
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z'
+ALPHA 0xa1 - 0xa3 0xa5 0xa6 0xa9 - 0xac 0xae
+ALPHA 0xb1 0xb3 0xb5 0xb6 0xb9 - 0xd6 0xd8 - 0xf6 0xf8 - 0xfe
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+LOWER 'a' - 'z'
+LOWER 0xa2 0xb1 0xb3 0xb5 0xb6 0xb9 - 0xbc 0xbe 0xbf
+LOWER 0xdf - 0xf6 0xf8 - 0xfe
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0xa4 0xa7 0xa8 0xad 0xaf 0xb0 0xb2 0xb4 0xb7 0xb8
+PUNCT 0xd7 0xf7 0xff
+SPACE 0x09 - 0x0d 0x20 0xa0
+UPPER 'A' - 'Z'
+UPPER 0xa1 0xa3 0xa5 0xa6 0xa9 - 0xac 0xae
+UPPER 0xc0 - 0xd6 0xd8 - 0xde
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xa1 0xb1>
+MAPLOWER <0xa2 0xa2>
+MAPLOWER <0xa3 0xb3>
+MAPLOWER <0xa5 0xb5>
+MAPLOWER <0xa6 0xb6>
+MAPLOWER <0xa9 - 0xac : 0xb9>
+MAPLOWER <0xae 0xbe>
+MAPLOWER <0xb1 0xb1>
+MAPLOWER <0xb3 0xb3>
+MAPLOWER <0xb5 0xb5>
+MAPLOWER <0xb6 0xb6>
+MAPLOWER <0xb9 - 0xbc : 0xb9>
+MAPLOWER <0xbd 0xbf>
+MAPLOWER <0xbe 0xbe>
+MAPLOWER <0xbf 0xbf>
+MAPLOWER <0xc0 - 0xd6 : 0xe0>
+MAPLOWER <0xd8 - 0xde : 0xf8>
+MAPLOWER <0xdf - 0xf6 : 0xdf>
+MAPLOWER <0xf8 - 0xfe : 0xf8>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xa1 0xa1>
+MAPUPPER <0xa3 0xa3>
+MAPUPPER <0xa5 0xa5>
+MAPUPPER <0xa6 0xa6>
+MAPUPPER <0xa9 - 0xac : 0xa9>
+MAPUPPER <0xae 0xae>
+MAPUPPER <0xb1 0xa1>
+MAPUPPER <0xb3 0xa3>
+MAPUPPER <0xb5 0xa5>
+MAPUPPER <0xb6 0xa6>
+MAPUPPER <0xb9 - 0xbc : 0xa9>
+MAPUPPER <0xbd 0xbd>
+MAPUPPER <0xbe 0xae>
+MAPUPPER <0xbf 0xbd>
+MAPUPPER <0xc0 - 0xd6 : 0xc0>
+MAPUPPER <0xd8 - 0xde : 0xd8>
+MAPUPPER <0xe0 - 0xf6 : 0xc0>
+MAPUPPER <0xf8 - 0xfe : 0xd8>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/la_LN.US-ASCII.src b/share/mklocale/la_LN.US-ASCII.src
new file mode 100644
index 0000000..5e30d82
--- /dev/null
+++ b/share/mklocale/la_LN.US-ASCII.src
@@ -0,0 +1,29 @@
+/*
+ * Standard LOCALE_CTYPE for the US-ASCII Locale
+ *
+ * $FreeBSD$
+ */
+ENCODING "ASCII"
+VARIABLE Strict 7bit US-ASCII locale
+
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/lt_LT.ISO8859-13.src b/share/mklocale/lt_LT.ISO8859-13.src
new file mode 100644
index 0000000..ddd248f
--- /dev/null
+++ b/share/mklocale/lt_LT.ISO8859-13.src
@@ -0,0 +1,49 @@
+/*
+ * LOCALE_CTYPE for the iso_8859_13 Locale
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "NONE"
+VARIABLE ISO 8859-13 Latin-7 character set
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z'
+ALPHA 0xaa 0xba 0xc0 - 0xd6 0xd8 - 0xde 0xe0 - 0xf6 0xf8 - 0xfe
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+LOWER 'a' - 'z'
+LOWER 0xba 0xdf - 0xf6 0xf8 - 0xfe
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0xa1 - 0xa9 0xab - 0xb9 0xbb -0xbf 0xd7 0xdf 0xf7 0xff
+SPACE 0x09 - 0x0d 0x20 0xa0
+UPPER 'A' - 'Z'
+UPPER 0xaa 0xc0 - 0xd6 0xd8 - 0xde
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xaa 0xba>
+MAPLOWER <0xba 0xba>
+MAPLOWER <0xc0 - 0xd6 : 0xe0>
+MAPLOWER <0xd8 - 0xde : 0xf8>
+MAPLOWER <0xe0 - 0xf6 : 0xe0>
+MAPLOWER <0xf8 - 0xfe : 0xf8>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xaa 0xaa>
+MAPUPPER <0xba 0xaa>
+MAPUPPER <0xc0 - 0xd6 : 0xc0>
+MAPUPPER <0xd8 - 0xdf : 0xd8>
+MAPUPPER <0xe0 - 0xf6 : 0xc0>
+MAPUPPER <0xf8 - 0xfe : 0xd8>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/ru_RU.CP866.src b/share/mklocale/ru_RU.CP866.src
new file mode 100644
index 0000000..081f757
--- /dev/null
+++ b/share/mklocale/ru_RU.CP866.src
@@ -0,0 +1,56 @@
+/*
+ * LOCALE_CTYPE for Russian Alternative character set (CP866)
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE Russian Alternative code table (CP866) by <ache@nagual.pp.ru>
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0x80 - 0xaf 0xe0 - 0xf7
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0x80 - 0xfe
+LOWER 'a' - 'z' 0xa0 - 0xaf 0xe0 - 0xef 0xf1 0xf3 0xf5 0xf7
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0xb0 - 0xdf 0xf8 - 0xfe
+SPACE 0x09 - 0x0d 0x20 0xff
+UPPER 'A' - 'Z' 0x80 - 0x9f 0xf0 0xf2 0xf4 0xf6
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xff
+PRINT 0x20 - 0x7e 0x80 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0x80 - 0x8f : 0xa0>
+MAPLOWER <0x90 - 0x9f : 0xe0>
+MAPLOWER <0xa0 - 0xaf : 0xa0>
+MAPLOWER <0xe0 - 0xef : 0xe0>
+MAPLOWER <0xf0 0xf1>
+MAPLOWER <0xf1 0xf1>
+MAPLOWER <0xf2 0xf3>
+MAPLOWER <0xf3 0xf3>
+MAPLOWER <0xf4 0xf5>
+MAPLOWER <0xf5 0xf5>
+MAPLOWER <0xf6 0xf7>
+MAPLOWER <0xf7 0xf7>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0x80 - 0x9f : 0x80>
+MAPUPPER <0xa0 - 0xaf : 0x80>
+MAPUPPER <0xe0 - 0xef : 0x90>
+MAPUPPER <0xf0 0xf0>
+MAPUPPER <0xf1 0xf0>
+MAPUPPER <0xf2 0xf2>
+MAPUPPER <0xf3 0xf2>
+MAPUPPER <0xf4 0xf4>
+MAPUPPER <0xf5 0xf4>
+MAPUPPER <0xf6 0xf6>
+MAPUPPER <0xf7 0xf6>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/ru_RU.ISO8859-5.src b/share/mklocale/ru_RU.ISO8859-5.src
new file mode 100644
index 0000000..4b6f637
--- /dev/null
+++ b/share/mklocale/ru_RU.ISO8859-5.src
@@ -0,0 +1,46 @@
+/*
+ * LOCALE_CTYPE for ISO8859-5 set
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "NONE"
+VARIABLE ISO8859-5 charset, initially submitted by <nms@ethereal.ru>
+
+ALPHA 'A' - 'Z' 'a' - 'z'
+ALPHA 0xa1 - 0xac 0xae - 0xef 0xf1 - 0xfc 0xfe 0xff
+BLANK ' ' '\t' 0xa0
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+LOWER 'a' - 'z'
+LOWER 0xd0 - 0xef 0xf1 - 0xfc 0xfe 0xff
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+PUNCT 0xad 0xf0 0xfd
+SPACE 0x09 - 0x0d 0x20 0xa0
+UPPER 'A' - 'Z'
+UPPER 0xa1 - 0xac 0xae - 0xcf
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xb0 - 0xcf : 0xd0>
+MAPLOWER <0xd0 - 0xef : 0xd0>
+MAPLOWER <0xa1 - 0xac : 0xf1>
+MAPLOWER <0xf1 - 0xfc : 0xf1>
+MAPLOWER <0xae - 0xaf : 0xfe>
+MAPLOWER <0xfe - 0xff : 0xfe>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xb0 - 0xcf : 0xb0>
+MAPUPPER <0xd0 - 0xef : 0xb0>
+MAPUPPER <0xa1 - 0xac : 0xa1>
+MAPUPPER <0xf1 - 0xfc : 0xa1>
+MAPUPPER <0xae - 0xaf : 0xae>
+MAPUPPER <0xfe - 0xff : 0xae>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/ru_RU.KOI8-R.src b/share/mklocale/ru_RU.KOI8-R.src
new file mode 100644
index 0000000..d9eac8f
--- /dev/null
+++ b/share/mklocale/ru_RU.KOI8-R.src
@@ -0,0 +1,40 @@
+/*
+ * LOCALE_CTYPE for Russian koi8-r character set (RFC1489)
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE Russian KOI8-R character set by <ache@nagual.pp.ru>
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0xa3 0xb3 0xc0 - 0xff
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0x80 - 0x99 0x9b - 0xff
+LOWER 'a' - 'z' 0xa3 0xc0 - 0xdf
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20 0x9a
+UPPER 'A' - 'Z' 0xb3 0xe0 - 0xff
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0x9a
+PRINT 0x20 - 0x7e 0x80 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xb3 0xa3>
+MAPLOWER <0xa3 0xa3>
+MAPLOWER <0xe0 - 0xff : 0xc0>
+MAPLOWER <0xc0 - 0xdf : 0xc0>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xb3 0xb3>
+MAPUPPER <0xa3 0xb3>
+MAPUPPER <0xe0 - 0xff : 0xe0>
+MAPUPPER <0xc0 - 0xdf : 0xe0>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/tr_TR.ISO8859-9.src b/share/mklocale/tr_TR.ISO8859-9.src
new file mode 100644
index 0000000..5f5dce0
--- /dev/null
+++ b/share/mklocale/tr_TR.ISO8859-9.src
@@ -0,0 +1,48 @@
+/*
+ * Standard LOCALE_CTYPE for the ISO 8859-9 Locale
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE ISO 8859-9 Latin-5 character set
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0xc0 - 0xd6 0xd8 - 0xf6 0xf8 - 0xff
+CONTROL 0x00 - 0x1f 0x7f - 0x9f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0xa1 - 0xff
+LOWER 'a' - 'z' 0xdf - 0xf6 0xf8 - 0xff
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e 0xa1 - 0xbf 0xd7 0xf7
+SPACE 0x09 - 0x0d ' ' 0xa0
+UPPER 'A' - 'Z' 0xc0 - 0xd6 0xd8 - 0xde
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0xa0
+PRINT 0x20 - 0x7e 0xa0 - 0xff
+
+MAPLOWER <'A' - 'H' : 'a'>
+MAPLOWER <'I' 0xfd>
+MAPLOWER <'J' - 'Z' : 'j'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xc0 - 0xd6 : 0xe0>
+MAPLOWER <0xd8 - 0xdc : 0xf8>
+MAPLOWER <0xdd 'i'>
+MAPLOWER <0xde 0xfe>
+MAPLOWER <0xdf - 0xf6 : 0xdf>
+MAPLOWER <0xf8 - 0xff : 0xf8>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'h' : 'A'>
+MAPUPPER <'i' 0xdd>
+MAPUPPER <'j' - 'z' : 'J'>
+MAPUPPER <0xc0 - 0xd6 : 0xc0>
+MAPUPPER <0xd8 - 0xde : 0xd8>
+MAPUPPER <0xe0 - 0xf6 : 0xc0>
+MAPUPPER <0xf8 - 0xfc : 0xd8>
+MAPUPPER <0xfd 'I'>
+MAPUPPER <0xfe 0xde>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/uk_UA.KOI8-U.src b/share/mklocale/uk_UA.KOI8-U.src
new file mode 100644
index 0000000..6abe203
--- /dev/null
+++ b/share/mklocale/uk_UA.KOI8-U.src
@@ -0,0 +1,56 @@
+/*
+ * LOCALE_CTYPE for Ukrainian koi8-u character set (RFC2319)
+ *
+ * $FreeBSD$
+ */
+ENCODING "NONE"
+VARIABLE Ukrainian koi8-u character set
+
+#
+# This is a comment
+#
+ALPHA 'A' - 'Z' 'a' - 'z' 0xa3 0xb3 0xa4 0xb4 0xa6 0xb6 0xa7 0xb7 0xad 0xbd 0xc0 - 0xff
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e 0x80 - 0x99 0x9b - 0xff
+LOWER 'a' - 'z' 0xa3 0xa4 0xa6 0xa7 0xad 0xc0 - 0xdf
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20 0x9a
+UPPER 'A' - 'Z' 0xb3 0xb4 0xb6 0xb7 0xbd 0xe0 - 0xff
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t' 0x9a
+PRINT 0x20 - 0x7e 0x80 - 0xff
+
+MAPLOWER <'A' - 'Z' : 'a'>
+MAPLOWER <'a' - 'z' : 'a'>
+MAPLOWER <0xb3 0xa3>
+MAPLOWER <0xa3 0xa3>
+MAPLOWER <0xb4 0xa4>
+MAPLOWER <0xa4 0xa4>
+MAPLOWER <0xb6 0xa6>
+MAPLOWER <0xa6 0xa6>
+MAPLOWER <0xb7 0xa7>
+MAPLOWER <0xa7 0xa7>
+MAPLOWER <0xbd 0xad>
+MAPLOWER <0xad 0xad>
+MAPLOWER <0xe0 - 0xff : 0xc0>
+MAPLOWER <0xc0 - 0xdf : 0xc0>
+
+MAPUPPER <'A' - 'Z' : 'A'>
+MAPUPPER <'a' - 'z' : 'A'>
+MAPUPPER <0xb3 0xb3>
+MAPUPPER <0xa3 0xb3>
+MAPUPPER <0xb4 0xb4>
+MAPUPPER <0xa4 0xb4>
+MAPUPPER <0xb6 0xb6>
+MAPUPPER <0xa6 0xb6>
+MAPUPPER <0xb7 0xb7>
+MAPUPPER <0xa7 0xb7>
+MAPUPPER <0xbd 0xbd>
+MAPUPPER <0xad 0xbd>
+MAPUPPER <0xe0 - 0xff : 0xe0>
+MAPUPPER <0xc0 - 0xdf : 0xe0>
+
+TODIGIT <'0' - '9' : 0>
+TODIGIT <'A' - 'F' : 10>
+TODIGIT <'a' - 'f' : 10>
diff --git a/share/mklocale/zh_CN.GB18030.src b/share/mklocale/zh_CN.GB18030.src
new file mode 100644
index 0000000..9c2d875
--- /dev/null
+++ b/share/mklocale/zh_CN.GB18030.src
@@ -0,0 +1,7100 @@
+/*
+ * This code is ported to FreeBSD by a group of Chinese FreeBSD Enthusiast:
+ * Robin Hu <huxw@knight.6test.edu.cn>
+ * Kang Liu <liukang@bjpu.edu.cn>
+ * Xin Li <delphij@frontfree.net>
+ * Shen Chuan-Hsing <statue@freebsd.sinica.edu.tw>
+ *
+ * Copyright (c)2003 Citrus 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$
+ */
+
+ENCODING "GB18030"
+
+/*
+ * ASCII compatible
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+BLANK ' ' '\t' '\v'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+MAPLOWER < 'A' - 'Z' : 'a' > < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' > < 'a' - 'z' : 'A' >
+PRINT 0x20 - 0x7e
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 >
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+/*
+ * GBK compatible
+ */
+ALPHA 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+ALPHA 0xa6a1 - 0xa6b8 0xa6c1 - 0xa6d8
+ALPHA 0xa7a1 - 0xa7c1 0xa7d1 - 0xa7f1
+ALPHA 0xa8a1 - 0xa8bb 0xa8bd - 0xa8c0
+BLANK 0xa1a1
+GRAPH 0xa140 - 0xa17e 0xa180 - 0xa1a0 0xa1a9
+GRAPH 0xa240 - 0xa27e 0xa280 - 0xa2a0 0xa2ab - 0xa2b0 0xa2e4 0xa2ef 0xa2f0 0xa2fd 0xa2fe
+GRAPH 0xa340 - 0xa37e 0xa380 - 0xa3a0
+GRAPH 0xa440 - 0xa47e 0xa480 - 0xa4a0 0xa4f4 - 0xa4fe
+GRAPH 0xa540 - 0xa57e 0xa580 - 0xa5a0 0xa5f7 - 0xa5fe
+GRAPH 0xa640 - 0xa67e 0xa680 - 0xa6a0 0xa6b9 - 0xa6c0 0xa6d9 - 0xa6df 0xa6ec 0xa6ed 0xa6f3 0xa6f6 - 0xa6fe
+GRAPH 0xa740 - 0xa77e 0xa780 - 0xa7a0 0xa7c2 - 0xa7d0 0xa7f2 - 0xa7fe
+GRAPH 0xa896 - 0xa8a0 0xa8bc 0xa8c1 - 0xa8fe
+GRAPH 0xa958 0xa95b 0xa95d - 0xa960 0xa963 0xa964 0xa966 0xa967 0xa997 - 0xa9a3 0xa9f0 - 0xa9fe
+GRAPH 0xaaa1 - 0xaafe
+GRAPH 0xaba1 - 0xabfe
+GRAPH 0xaca1 - 0xacfe
+GRAPH 0xada1 - 0xadfe
+GRAPH 0xaea1 - 0xaefe
+GRAPH 0xafa1 - 0xaffe
+GRAPH 0xd7fa - 0xd7fe
+GRAPH 0xf8a1 - 0xf8fe
+GRAPH 0xf9a1 - 0xf9fe
+GRAPH 0xfaa1 - 0xfafe
+GRAPH 0xfba1 - 0xfbfe
+GRAPH 0xfca1 - 0xfcfe
+GRAPH 0xfda1 - 0xfdfe
+GRAPH 0xfe51 - 0xfe53 0xfe59 0xfe61 0xfe66 0xfe67 0xfe6c 0xfe6d 0xfe76 0xfe7e 0xfe90 0xfe91 0xfea0 - 0xfefe
+IDEOGRAM 0x8140 - 0x817e 0x8180 - 0x81fe
+IDEOGRAM 0x8240 - 0x827e 0x8280 - 0x82fe
+IDEOGRAM 0x8340 - 0x837e 0x8380 - 0x83fe
+IDEOGRAM 0x8440 - 0x847e 0x8480 - 0x84fe
+IDEOGRAM 0x8540 - 0x857e 0x8580 - 0x85fe
+IDEOGRAM 0x8640 - 0x867e 0x8680 - 0x86fe
+IDEOGRAM 0x8740 - 0x877e 0x8780 - 0x87fe
+IDEOGRAM 0x8840 - 0x887e 0x8880 - 0x88fe
+IDEOGRAM 0x8940 - 0x897e 0x8980 - 0x89fe
+IDEOGRAM 0x8a40 - 0x8a7e 0x8a80 - 0x8afe
+IDEOGRAM 0x8b40 - 0x8b7e 0x8b80 - 0x8bfe
+IDEOGRAM 0x8c40 - 0x8c7e 0x8c80 - 0x8cfe
+IDEOGRAM 0x8d40 - 0x8d7e 0x8d80 - 0x8dfe
+IDEOGRAM 0x8e40 - 0x8e7e 0x8e80 - 0x8efe
+IDEOGRAM 0x8f40 - 0x8f7e 0x8f80 - 0x8ffe
+IDEOGRAM 0x9040 - 0x907e 0x9080 - 0x90fe
+IDEOGRAM 0x9140 - 0x917e 0x9180 - 0x91fe
+IDEOGRAM 0x9240 - 0x927e 0x9280 - 0x92fe
+IDEOGRAM 0x9340 - 0x937e 0x9380 - 0x93fe
+IDEOGRAM 0x9440 - 0x947e 0x9480 - 0x94fe
+IDEOGRAM 0x9540 - 0x957e 0x9580 - 0x95fe
+IDEOGRAM 0x9640 - 0x967e 0x9680 - 0x96fe
+IDEOGRAM 0x9740 - 0x977e 0x9780 - 0x97fe
+IDEOGRAM 0x9840 - 0x987e 0x9880 - 0x98fe
+IDEOGRAM 0x9940 - 0x997e 0x9980 - 0x99fe
+IDEOGRAM 0x9a40 - 0x9a7e 0x9a80 - 0x9afe
+IDEOGRAM 0x9b40 - 0x9b7e 0x9b80 - 0x9bfe
+IDEOGRAM 0x9c40 - 0x9c7e 0x9c80 - 0x9cfe
+IDEOGRAM 0x9d40 - 0x9d7e 0x9d80 - 0x9dfe
+IDEOGRAM 0x9e40 - 0x9e7e 0x9e80 - 0x9efe
+IDEOGRAM 0x9f40 - 0x9f7e 0x9f80 - 0x9ffe
+IDEOGRAM 0xa040 - 0xa07e 0xa080 - 0xa0fe
+IDEOGRAM 0xa965
+IDEOGRAM 0xaa40 - 0xaa7e 0xaa80 - 0xaaa0
+IDEOGRAM 0xab40 - 0xab7e 0xab80 - 0xaba0
+IDEOGRAM 0xac40 - 0xac7e 0xac80 - 0xaca0
+IDEOGRAM 0xad40 - 0xad7e 0xad80 - 0xada0
+IDEOGRAM 0xae40 - 0xae7e 0xae80 - 0xaea0
+IDEOGRAM 0xaf40 - 0xaf7e 0xaf80 - 0xafa0
+IDEOGRAM 0xb040 - 0xb07e 0xb080 - 0xb0fe
+IDEOGRAM 0xb140 - 0xb17e 0xb180 - 0xb1fe
+IDEOGRAM 0xb240 - 0xb27e 0xb280 - 0xb2fe
+IDEOGRAM 0xb340 - 0xb37e 0xb380 - 0xb3fe
+IDEOGRAM 0xb440 - 0xb47e 0xb480 - 0xb4fe
+IDEOGRAM 0xb540 - 0xb57e 0xb580 - 0xb5fe
+IDEOGRAM 0xb640 - 0xb67e 0xb680 - 0xb6fe
+IDEOGRAM 0xb740 - 0xb77e 0xb780 - 0xb7fe
+IDEOGRAM 0xb840 - 0xb87e 0xb880 - 0xb8fe
+IDEOGRAM 0xb940 - 0xb97e 0xb980 - 0xb9fe
+IDEOGRAM 0xba40 - 0xba7e 0xba80 - 0xbafe
+IDEOGRAM 0xbb40 - 0xbb7e 0xbb80 - 0xbbfe
+IDEOGRAM 0xbc40 - 0xbc7e 0xbc80 - 0xbcfe
+IDEOGRAM 0xbd40 - 0xbd7e 0xbd80 - 0xbdfe
+IDEOGRAM 0xbe40 - 0xbe7e 0xbe80 - 0xbefe
+IDEOGRAM 0xbf40 - 0xbf7e 0xbf80 - 0xbffe
+IDEOGRAM 0xc040 - 0xc07e 0xc080 - 0xc0fe
+IDEOGRAM 0xc140 - 0xc17e 0xc180 - 0xc1fe
+IDEOGRAM 0xc240 - 0xc27e 0xc280 - 0xc2fe
+IDEOGRAM 0xc340 - 0xc37e 0xc380 - 0xc3fe
+IDEOGRAM 0xc440 - 0xc47e 0xc480 - 0xc4fe
+IDEOGRAM 0xc540 - 0xc57e 0xc580 - 0xc5fe
+IDEOGRAM 0xc640 - 0xc67e 0xc680 - 0xc6fe
+IDEOGRAM 0xc740 - 0xc77e 0xc780 - 0xc7fe
+IDEOGRAM 0xc840 - 0xc87e 0xc880 - 0xc8fe
+IDEOGRAM 0xc940 - 0xc97e 0xc980 - 0xc9fe
+IDEOGRAM 0xca40 - 0xca7e 0xca80 - 0xcafe
+IDEOGRAM 0xcb40 - 0xcb7e 0xcb80 - 0xcbfe
+IDEOGRAM 0xcc40 - 0xcc7e 0xcc80 - 0xccfe
+IDEOGRAM 0xcd40 - 0xcd7e 0xcd80 - 0xcdfe
+IDEOGRAM 0xce40 - 0xce7e 0xce80 - 0xcefe
+IDEOGRAM 0xcf40 - 0xcf7e 0xcf80 - 0xcffe
+IDEOGRAM 0xd040 - 0xd07e 0xd080 - 0xd0fe
+IDEOGRAM 0xd140 - 0xd17e 0xd180 - 0xd1fe
+IDEOGRAM 0xd240 - 0xd27e 0xd280 - 0xd2fe
+IDEOGRAM 0xd340 - 0xd37e 0xd380 - 0xd3fe
+IDEOGRAM 0xd440 - 0xd47e 0xd480 - 0xd4fe
+IDEOGRAM 0xd540 - 0xd57e 0xd580 - 0xd5fe
+IDEOGRAM 0xd640 - 0xd67e 0xd680 - 0xd6fe
+IDEOGRAM 0xd740 - 0xd77e 0xd780 - 0xd7f9
+IDEOGRAM 0xd840 - 0xd87e 0xd880 - 0xd8fe
+IDEOGRAM 0xd940 - 0xd97e 0xd980 - 0xd9fe
+IDEOGRAM 0xda40 - 0xda7e 0xda80 - 0xdafe
+IDEOGRAM 0xdb40 - 0xdb7e 0xdb80 - 0xdbfe
+IDEOGRAM 0xdc40 - 0xdc7e 0xdc80 - 0xdcfe
+IDEOGRAM 0xdd40 - 0xdd7e 0xdd80 - 0xddfe
+IDEOGRAM 0xde40 - 0xde7e 0xde80 - 0xdefe
+IDEOGRAM 0xdf40 - 0xdf7e 0xdf80 - 0xdffe
+IDEOGRAM 0xe040 - 0xe07e 0xe080 - 0xe0fe
+IDEOGRAM 0xe140 - 0xe17e 0xe180 - 0xe1fe
+IDEOGRAM 0xe240 - 0xe27e 0xe280 - 0xe2fe
+IDEOGRAM 0xe340 - 0xe37e 0xe380 - 0xe3fe
+IDEOGRAM 0xe440 - 0xe47e 0xe480 - 0xe4fe
+IDEOGRAM 0xe540 - 0xe57e 0xe580 - 0xe5fe
+IDEOGRAM 0xe640 - 0xe67e 0xe680 - 0xe6fe
+IDEOGRAM 0xe740 - 0xe77e 0xe780 - 0xe7fe
+IDEOGRAM 0xe840 - 0xe87e 0xe880 - 0xe8fe
+IDEOGRAM 0xe940 - 0xe97e 0xe980 - 0xe9fe
+IDEOGRAM 0xea40 - 0xea7e 0xea80 - 0xeafe
+IDEOGRAM 0xeb40 - 0xeb7e 0xeb80 - 0xebfe
+IDEOGRAM 0xec40 - 0xec7e 0xec80 - 0xecfe
+IDEOGRAM 0xed40 - 0xed7e 0xed80 - 0xedfe
+IDEOGRAM 0xee40 - 0xee7e 0xee80 - 0xeefe
+IDEOGRAM 0xef40 - 0xef7e 0xef80 - 0xeffe
+IDEOGRAM 0xf040 - 0xf07e 0xf080 - 0xf0fe
+IDEOGRAM 0xf140 - 0xf17e 0xf180 - 0xf1fe
+IDEOGRAM 0xf240 - 0xf27e 0xf280 - 0xf2fe
+IDEOGRAM 0xf340 - 0xf37e 0xf380 - 0xf3fe
+IDEOGRAM 0xf440 - 0xf47e 0xf480 - 0xf4fe
+IDEOGRAM 0xf540 - 0xf57e 0xf580 - 0xf5fe
+IDEOGRAM 0xf640 - 0xf67e 0xf680 - 0xf6fe
+IDEOGRAM 0xf740 - 0xf77e 0xf780 - 0xf7fe
+IDEOGRAM 0xf840 - 0xf87e 0xf880 - 0xf8a0
+IDEOGRAM 0xf940 - 0xf97e 0xf980 - 0xf9a0
+IDEOGRAM 0xfa40 - 0xfa7e 0xfa80 - 0xfaa0
+IDEOGRAM 0xfb40 - 0xfb7e 0xfb80 - 0xfba0
+IDEOGRAM 0xfc40 - 0xfc7e 0xfc80 - 0xfca0
+IDEOGRAM 0xfd40 - 0xfd7e 0xfd80 - 0xfda0
+IDEOGRAM 0xfe40 - 0xfe4f 0xfe55 0xfe56 0xfe5a - 0xfe5c 0xfe5f 0xfe60 0xfe62 - 0xfe65 0xfe68 - 0xfe6a 0xfe6f 0xfe70 0xfe72 0xfe77 0xfe78 0xfe7a - 0xfe7d 0xfe80 - 0xfe83 0xfe85 - 0xfe8f 0xfe92 - 0xfe9f
+LOWER 0xa3e1 - 0xa3fa
+LOWER 0xa6c1 - 0xa6d8
+LOWER 0xa7d1 - 0xa7f1
+LOWER 0xa8a1 - 0xa8bb 0xa8bd - 0xa8c0
+MAPLOWER < 0xa2f1 - 0xa2fa : 0xa2a1 >
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 >
+MAPLOWER < 0xa6a1 - 0xa6b8 : 0xa6c1 >
+MAPLOWER < 0xa7a1 - 0xa7c1 : 0xa7d1 >
+MAPUPPER < 0xa2a1 - 0xa2aa : 0xa2f1 >
+MAPUPPER < 0xa3e1 - 0xa3fa : 0xa3c1 >
+MAPUPPER < 0xa6c1 - 0xa6d8 : 0xa6a1 >
+MAPUPPER < 0xa7d1 - 0xa7f1 : 0xa7a1 >
+PHONOGRAM 0xa4a1 - 0xa4f3
+PHONOGRAM 0xa5a1 - 0xa5f6
+PRINT 0xa1a1
+PUNCT 0xa1a2 - 0xa1a8 0xa1aa - 0xa1fe
+PUNCT 0xa2e3
+PUNCT 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+PUNCT 0xa6e0 - 0xa6eb 0xa6ee - 0xa6f2 0xa6f4 0xa6f5
+PUNCT 0xa840 - 0xa87e 0xa880 - 0xa895
+PUNCT 0xa949 - 0xa957 0xa959 0xa95a 0xa95c 0xa961 0xa962 0xa968 - 0xa97e 0xa980 - 0xa995 0xa9a4 - 0xa9ef
+PUNCT 0xfe50 0xfe54 0xfe57 0xfe58 0xfe5d 0xfe5e 0xfe6b 0xfe6e 0xfe71 0xfe73 - 0xfe75 0xfe79 0xfe84
+SPACE 0xa1a1
+SPECIAL 0xa2a1 - 0xa2aa 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc
+SPECIAL 0xa940 - 0xa948 0xa996
+SWIDTH2 0x8140 - 0x817e 0x8180 - 0x81fe
+SWIDTH2 0x8240 - 0x827e 0x8280 - 0x82fe
+SWIDTH2 0x8440 - 0x847e 0x8480 - 0x84fe
+SWIDTH2 0x8540 - 0x857e 0x8580 - 0x85fe
+SWIDTH2 0x8640 - 0x867e 0x8680 - 0x86fe
+SWIDTH2 0x8740 - 0x877e 0x8780 - 0x87fe
+SWIDTH2 0x8840 - 0x887e 0x8880 - 0x88fe
+SWIDTH2 0x8940 - 0x897e 0x8980 - 0x89fe
+SWIDTH2 0x8a40 - 0x8a7e 0x8a80 - 0x8afe
+SWIDTH2 0x8b40 - 0x8b7e 0x8b80 - 0x8bfe
+SWIDTH2 0x8c40 - 0x8c7e 0x8c80 - 0x8cfe
+SWIDTH2 0x8d40 - 0x8d7e 0x8d80 - 0x8dfe
+SWIDTH2 0x8e40 - 0x8e7e 0x8e80 - 0x8efe
+SWIDTH2 0x8f40 - 0x8f7e 0x8f80 - 0x8ffe
+SWIDTH2 0x9040 - 0x907e 0x9080 - 0x90fe
+SWIDTH2 0x9140 - 0x917e 0x9180 - 0x91fe
+SWIDTH2 0x9240 - 0x927e 0x9280 - 0x92fe
+SWIDTH2 0x9340 - 0x937e 0x9380 - 0x93fe
+SWIDTH2 0x9440 - 0x947e 0x9480 - 0x94fe
+SWIDTH2 0x9540 - 0x957e 0x9580 - 0x95fe
+SWIDTH2 0x9640 - 0x967e 0x9680 - 0x96fe
+SWIDTH2 0x9740 - 0x977e 0x9780 - 0x97fe
+SWIDTH2 0x9840 - 0x987e 0x9880 - 0x98fe
+SWIDTH2 0x9940 - 0x997e 0x9980 - 0x99fe
+SWIDTH2 0x9a40 - 0x9a7e 0x9a80 - 0x9afe
+SWIDTH2 0x9b40 - 0x9b7e 0x9b80 - 0x9bfe
+SWIDTH2 0x9c40 - 0x9c7e 0x9c80 - 0x9cfe
+SWIDTH2 0x9d40 - 0x9d7e 0x9d80 - 0x9dfe
+SWIDTH2 0x9e40 - 0x9e7e 0x9e80 - 0x9efe
+SWIDTH2 0x9f40 - 0x9f7e 0x9f80 - 0x9ffe
+SWIDTH2 0xa040 - 0xa07e 0xa080 - 0xa0fe
+SWIDTH2 0xa1a1 - 0xa1a3 0xa1a8 0xa1a9 0xa1ab 0xa1b2 - 0xa1bf 0xa1e7 0xa1e9 0xa1ea 0xa1fe
+SWIDTH2 0xa2e5 - 0xa2ee
+SWIDTH2 0xa3a1 - 0xa3fe
+SWIDTH2 0xa4a1 - 0xa4f3
+SWIDTH2 0xa5a1 - 0xa5f6
+SWIDTH2 0xa6e0 - 0xa6eb 0xa6ee - 0xa6f2 0xa6f4 0xa6f5
+SWIDTH2 0xa893 - 0xa895 0xa8c5 - 0xa8e9
+SWIDTH2 0xa940 - 0xa957 0xa95a 0xa960 - 0xa97e 0xa980 - 0xa996
+SWIDTH2 0xaa40 - 0xaa7e 0xaa80 - 0xaaa0
+SWIDTH2 0xab40 - 0xab7e 0xab80 - 0xaba0
+SWIDTH2 0xac40 - 0xac7e 0xac80 - 0xaca0
+SWIDTH2 0xad40 - 0xad7e 0xad80 - 0xada0
+SWIDTH2 0xae40 - 0xae7e 0xae80 - 0xaea0
+SWIDTH2 0xaf40 - 0xaf7e 0xaf80 - 0xafa0
+SWIDTH2 0xb040 - 0xb07e 0xb080 - 0xb0fe
+SWIDTH2 0xb140 - 0xb17e 0xb180 - 0xb1fe
+SWIDTH2 0xb240 - 0xb27e 0xb280 - 0xb2fe
+SWIDTH2 0xb340 - 0xb37e 0xb380 - 0xb3fe
+SWIDTH2 0xb440 - 0xb47e 0xb480 - 0xb4fe
+SWIDTH2 0xb540 - 0xb57e 0xb580 - 0xb5fe
+SWIDTH2 0xb640 - 0xb67e 0xb680 - 0xb6fe
+SWIDTH2 0xb740 - 0xb77e 0xb780 - 0xb7fe
+SWIDTH2 0xb840 - 0xb87e 0xb880 - 0xb8fe
+SWIDTH2 0xb940 - 0xb97e 0xb980 - 0xb9fe
+SWIDTH2 0xba40 - 0xba7e 0xba80 - 0xbafe
+SWIDTH2 0xbb40 - 0xbb7e 0xbb80 - 0xbbfe
+SWIDTH2 0xbc40 - 0xbc7e 0xbc80 - 0xbcfe
+SWIDTH2 0xbd40 - 0xbd7e 0xbd80 - 0xbdfe
+SWIDTH2 0xbe40 - 0xbe7e 0xbe80 - 0xbefe
+SWIDTH2 0xbf40 - 0xbf7e 0xbf80 - 0xbffe
+SWIDTH2 0xc040 - 0xc07e 0xc080 - 0xc0fe
+SWIDTH2 0xc140 - 0xc17e 0xc180 - 0xc1fe
+SWIDTH2 0xc240 - 0xc27e 0xc280 - 0xc2fe
+SWIDTH2 0xc340 - 0xc37e 0xc380 - 0xc3fe
+SWIDTH2 0xc440 - 0xc47e 0xc480 - 0xc4fe
+SWIDTH2 0xc540 - 0xc57e 0xc580 - 0xc5fe
+SWIDTH2 0xc640 - 0xc67e 0xc680 - 0xc6fe
+SWIDTH2 0xc740 - 0xc77e 0xc780 - 0xc7fe
+SWIDTH2 0xc840 - 0xc87e 0xc880 - 0xc8fe
+SWIDTH2 0xc940 - 0xc97e 0xc980 - 0xc9fe
+SWIDTH2 0xca40 - 0xca7e 0xca80 - 0xcafe
+SWIDTH2 0xcb40 - 0xcb7e 0xcb80 - 0xcbfe
+SWIDTH2 0xcc40 - 0xcc7e 0xcc80 - 0xccfe
+SWIDTH2 0xcd40 - 0xcd7e 0xcd80 - 0xcdfe
+SWIDTH2 0xce40 - 0xce7e 0xce80 - 0xcefe
+SWIDTH2 0xcf40 - 0xcf7e 0xcf80 - 0xcffe
+SWIDTH2 0xd040 - 0xd07e 0xd080 - 0xd0fe
+SWIDTH2 0xd140 - 0xd17e 0xd180 - 0xd1fe
+SWIDTH2 0xd240 - 0xd27e 0xd280 - 0xd2fe
+SWIDTH2 0xd340 - 0xd37e 0xd380 - 0xd3fe
+SWIDTH2 0xd440 - 0xd47e 0xd480 - 0xd4fe
+SWIDTH2 0xd540 - 0xd57e 0xd580 - 0xd5fe
+SWIDTH2 0xd640 - 0xd67e 0xd680 - 0xd6fe
+SWIDTH2 0xd740 - 0xd77e 0xd780 - 0xd7f9
+SWIDTH2 0xd840 - 0xd87e 0xd880 - 0xd8fe
+SWIDTH2 0xd940 - 0xd97e 0xd980 - 0xd9fe
+SWIDTH2 0xda40 - 0xda7e 0xda80 - 0xdafe
+SWIDTH2 0xdb40 - 0xdb7e 0xdb80 - 0xdbfe
+SWIDTH2 0xdc40 - 0xdc7e 0xdc80 - 0xdcfe
+SWIDTH2 0xdd40 - 0xdd7e 0xdd80 - 0xddfe
+SWIDTH2 0xde40 - 0xde7e 0xde80 - 0xdefe
+SWIDTH2 0xdf40 - 0xdf7e 0xdf80 - 0xdffe
+SWIDTH2 0xe040 - 0xe07e 0xe080 - 0xe0fe
+SWIDTH2 0xe140 - 0xe17e 0xe180 - 0xe1fe
+SWIDTH2 0xe240 - 0xe27e 0xe280 - 0xe2fe
+SWIDTH2 0xe340 - 0xe37e 0xe380 - 0xe3fe
+SWIDTH2 0xe440 - 0xe47e 0xe480 - 0xe4fe
+SWIDTH2 0xe540 - 0xe57e 0xe580 - 0xe5fe
+SWIDTH2 0xe640 - 0xe67e 0xe680 - 0xe6fe
+SWIDTH2 0xe740 - 0xe77e 0xe780 - 0xe7fe
+SWIDTH2 0xe840 - 0xe87e 0xe880 - 0xe8fe
+SWIDTH2 0xe940 - 0xe97e 0xe980 - 0xe9fe
+SWIDTH2 0xea40 - 0xea7e 0xea80 - 0xeafe
+SWIDTH2 0xeb40 - 0xeb7e 0xeb80 - 0xebfe
+SWIDTH2 0xec40 - 0xec7e 0xec80 - 0xecfe
+SWIDTH2 0xed40 - 0xed7e 0xed80 - 0xedfe
+SWIDTH2 0xee40 - 0xee7e 0xee80 - 0xeefe
+SWIDTH2 0xef40 - 0xef7e 0xef80 - 0xeffe
+SWIDTH2 0xf040 - 0xf07e 0xf080 - 0xf0fe
+SWIDTH2 0xf140 - 0xf17e 0xf180 - 0xf1fe
+SWIDTH2 0xf240 - 0xf27e 0xf280 - 0xf2fe
+SWIDTH2 0xf340 - 0xf37e 0xf380 - 0xf3fe
+SWIDTH2 0xf440 - 0xf47e 0xf480 - 0xf4fe
+SWIDTH2 0xf540 - 0xf57e 0xf580 - 0xf5fe
+SWIDTH2 0xf640 - 0xf67e 0xf680 - 0xf6fe
+SWIDTH2 0xf740 - 0xf77e 0xf780 - 0xf7fe
+SWIDTH2 0xf840 - 0xf87e 0xf880 - 0xf8a0
+SWIDTH2 0xf940 - 0xf97e 0xf980 - 0xf9a0
+SWIDTH2 0xfa40 - 0xfa7e 0xfa80 - 0xfaa0
+SWIDTH2 0xfb40 - 0xfb7e 0xfb80 - 0xfba0
+SWIDTH2 0xfc40 - 0xfc7e 0xfc80 - 0xfca0
+SWIDTH2 0xfd40 - 0xfd7e 0xfd80 - 0xfda0
+SWIDTH2 0xfe40 - 0xfe50 0xfe54 - 0xfe58 0xfe5a - 0xfe60 0xfe62 - 0xfe65 0xfe68 - 0xfe6b 0xfe6e - 0xfe75 0xfe77 - 0xfe7d 0xfe80 - 0xfe8f 0xfe92 - 0xfe9f
+TODIGIT < 0xa3b0 - 0xa3b9 : 0x0000 >
+UPPER 0xa3c1 - 0xa3da
+UPPER 0xa6a1 - 0xa6b8
+UPPER 0xa7a1 - 0xa7c1
+
+/*
+ * Unicode BMP compatible
+ */
+ALPHA 0x01308439
+ALPHA 0x01308538
+ALPHA 0x01308632 0x01308638 0x01308639
+ALPHA 0x01308730 - 0x01308739
+ALPHA 0x01308830 - 0x01308839
+ALPHA 0x01308930 - 0x01308939
+ALPHA 0x01308a30 - 0x01308a39
+ALPHA 0x01308b30 - 0x01308b39
+ALPHA 0x01308c30 - 0x01308c39
+ALPHA 0x01308d30 - 0x01308d39
+ALPHA 0x01308e30 - 0x01308e39
+ALPHA 0x01308f30 - 0x01308f39
+ALPHA 0x01309030 - 0x01309039
+ALPHA 0x01309130 - 0x01309139
+ALPHA 0x01309230 - 0x01309239
+ALPHA 0x01309330 - 0x01309339
+ALPHA 0x01309430 - 0x01309439
+ALPHA 0x01309530 - 0x01309539
+ALPHA 0x01309630 - 0x01309639
+ALPHA 0x01309730 - 0x01309739
+ALPHA 0x01309830 - 0x01309839
+ALPHA 0x01309930 - 0x01309939
+ALPHA 0x01309a30 - 0x01309a39
+ALPHA 0x01309b30 - 0x01309b39
+ALPHA 0x01309c30 - 0x01309c39
+ALPHA 0x01309d30 - 0x01309d36 0x01309d38 0x01309d39
+ALPHA 0x01309e30 0x01309e31 0x01309e36 - 0x01309e39
+ALPHA 0x01309f30 - 0x01309f39
+ALPHA 0x0130a030 - 0x0130a039
+ALPHA 0x0130a130 - 0x0130a139
+ALPHA 0x0130a230 - 0x0130a239
+ALPHA 0x0130a330 - 0x0130a339
+ALPHA 0x0130a430 - 0x0130a439
+ALPHA 0x0130a530 - 0x0130a539
+ALPHA 0x0130a630 - 0x0130a639
+ALPHA 0x0130a731 - 0x0130a739
+ALPHA 0x0130a830 - 0x0130a838
+ALPHA 0x0130ab37 - 0x0130ab39
+ALPHA 0x0130ac30 - 0x0130ac39
+ALPHA 0x0130ad30 - 0x0130ad39
+ALPHA 0x0130ae30 - 0x0130ae39
+ALPHA 0x0130af30 - 0x0130af39
+ALPHA 0x0130b030 - 0x0130b039
+ALPHA 0x0130b130 - 0x0130b139
+ALPHA 0x0130b230 - 0x0130b239
+ALPHA 0x0130b330 - 0x0130b339
+ALPHA 0x0130b430 - 0x0130b438
+ALPHA 0x0130ca30 0x0130ca32 - 0x0130ca34 0x0130ca36 0x0130ca38 0x0130ca39
+ALPHA 0x0130cb30 0x0130cb32 - 0x0130cb39
+ALPHA 0x0130cc30 - 0x0130cc34 0x0130cc36 - 0x0130cc39
+ALPHA 0x0130cd30 - 0x0130cd39
+ALPHA 0x0130ce30 - 0x0130ce39
+ALPHA 0x0130cf30 - 0x0130cf39
+ALPHA 0x0130d030 - 0x0130d033
+ALPHA 0x0130d134 - 0x0130d139
+ALPHA 0x0130d230 - 0x0130d239
+ALPHA 0x0130d330 - 0x0130d339
+ALPHA 0x0130d430 - 0x0130d439
+ALPHA 0x0130d530 - 0x0130d539
+ALPHA 0x0130d630 - 0x0130d639
+ALPHA 0x0130d730 - 0x0130d737
+ALPHA 0x0130d836 - 0x0130d839
+ALPHA 0x0130d930 - 0x0130d939
+ALPHA 0x0130da30 - 0x0130da39
+ALPHA 0x0130db30 - 0x0130db39
+ALPHA 0x0130dc30 - 0x0130dc39
+ALPHA 0x0130dd30 - 0x0130dd39
+ALPHA 0x0130de30 - 0x0130de39
+ALPHA 0x0130df30 - 0x0130df34 0x0130df36 - 0x0130df39
+ALPHA 0x0130e030 - 0x0130e039
+ALPHA 0x0130e130 - 0x0130e139
+ALPHA 0x0130e230 - 0x0130e239
+ALPHA 0x0130e330 - 0x0130e333 0x0130e336 0x0130e337
+ALPHA 0x0130e434 - 0x0130e439
+ALPHA 0x0130e530 - 0x0130e539
+ALPHA 0x0130e933 - 0x0130e939
+ALPHA 0x0130ea30 - 0x0130ea39
+ALPHA 0x0130eb30 - 0x0130eb39
+ALPHA 0x0130ec30 - 0x0130ec39
+ALPHA 0x0130ed30
+ALPHA 0x0130ee31 - 0x0130ee39
+ALPHA 0x0130ef30 - 0x0130ef39
+ALPHA 0x0130f030 - 0x0130f039
+ALPHA 0x0130f130 - 0x0130f139
+ALPHA 0x01339430 - 0x01339439
+ALPHA 0x01339530 - 0x01339539
+ALPHA 0x01339630 - 0x01339639
+ALPHA 0x01339730 - 0x01339737
+ALPHA 0x0135ee34 - 0x0135ee39
+ALPHA 0x0135ef30 - 0x0135ef39
+ALPHA 0x0135f030 - 0x0135f039
+ALPHA 0x0135f130 - 0x0135f139
+ALPHA 0x0135f230 - 0x0135f239
+ALPHA 0x0135f330 - 0x0135f339
+ALPHA 0x0135f430 - 0x0135f439
+ALPHA 0x0135f530 - 0x0135f539
+ALPHA 0x0135f630 - 0x0135f639
+ALPHA 0x0135f730 - 0x0135f739
+ALPHA 0x0135f830 - 0x0135f839
+ALPHA 0x0135f930 - 0x0135f939
+ALPHA 0x0135fa30 - 0x0135fa39
+ALPHA 0x0135fb30 - 0x0135fb39
+ALPHA 0x0135fc30 - 0x0135fc39
+ALPHA 0x0135fd30 - 0x0135fd39
+ALPHA 0x0135fe34 - 0x0135fe39
+ALPHA 0x01368130 - 0x01368139
+ALPHA 0x01368230 - 0x01368239
+ALPHA 0x01368330 - 0x01368339
+ALPHA 0x01368430 - 0x01368439
+ALPHA 0x01368530 - 0x01368539
+ALPHA 0x01368630 - 0x01368639
+ALPHA 0x01368730 - 0x01368739
+ALPHA 0x01368830 - 0x01368839
+ALPHA 0x01368930 - 0x01368933
+ALPHA 0x01368a30 - 0x01368a39
+ALPHA 0x01368b30 - 0x01368b39
+ALPHA 0x01368c30 0x01368c31 0x01368c34 - 0x01368c39
+ALPHA 0x01368d32 - 0x01368d39
+ALPHA 0x01368e30 - 0x01368e39
+ALPHA 0x01368f30 - 0x01368f39
+ALPHA 0x01369030 - 0x01369039
+ALPHA 0x01369132 - 0x01369137
+ALPHA 0x01369230 - 0x01369237 0x01369239
+ALPHA 0x01369331 0x01369333 0x01369335 - 0x01369339
+ALPHA 0x01369430 - 0x01369439
+ALPHA 0x01369530 - 0x01369539
+ALPHA 0x01369630 - 0x01369635 0x01369638 0x01369639
+ALPHA 0x01369730 - 0x01369739
+ALPHA 0x01369830 - 0x01369839
+ALPHA 0x01369930 - 0x01369939
+ALPHA 0x01369a30 - 0x01369a39
+ALPHA 0x01369b30 - 0x01369b39
+ALPHA 0x01369c30 0x01369c32 - 0x01369c38
+ALPHA 0x01369d30 0x01369d34 - 0x01369d36 0x01369d38 0x01369d39
+ALPHA 0x01369e30 - 0x01369e34 0x01369e38 0x01369e39
+ALPHA 0x01369f30 0x01369f31 0x01369f34 - 0x01369f39
+ALPHA 0x0136a034 - 0x0136a039
+ALPHA 0x0136a130 - 0x0136a136
+ALPHA 0x0136a232 - 0x0136a234 0x0136a236 - 0x0136a239
+ALPHA 0x0136a330 - 0x0136a332
+ALPHA 0x0136ad33
+ALPHA 0x0136ae37
+ALPHA 0x0136bb37
+ALPHA 0x0136bc30 0x0136bc32 - 0x0136bc39
+ALPHA 0x0136bd30 0x0136bd31 0x0136bd33 0x0136bd36 - 0x0136bd39
+ALPHA 0x0136be30 0x0136be36 0x0136be38
+ALPHA 0x0136bf30 0x0136bf32 - 0x0136bf35 0x0136bf37 - 0x0136bf39
+ALPHA 0x0136c031 0x0136c032 0x0136c037
+ALPHA 0x0136c131 - 0x0136c133 0x0136c139
+ALPHA 0x0136c230 - 0x0136c233
+ALPHA 0x0430b232 - 0x0430b238
+ALPHA 0x0430b431 - 0x0430b435
+BLANK 0x01308432
+BLANK 0x0134ac34
+BLANK 0x0136a336 - 0x0136a339
+BLANK 0x0136a430 - 0x0136a437
+BLANK 0x0136a732
+BLANK 0x0136ab35
+CONTROL 0x01308130 - 0x01308139
+CONTROL 0x01308230 - 0x01308239
+CONTROL 0x01308330 - 0x01308339
+CONTROL 0x01308430 0x01308431
+CONTROL 0x01319631
+CONTROL 0x01319b31
+CONTROL 0x0134d432
+CONTROL 0x0136a438 0x0136a439
+CONTROL 0x0136a530 0x0136a531
+CONTROL 0x0136a637 - 0x0136a639
+CONTROL 0x0136a730 0x0136a731
+CONTROL 0x0136ab36 - 0x0136ab39
+CONTROL 0x0136ac36 - 0x0136ac39
+CONTROL 0x0136ad30 0x0136ad31
+CONTROL 0x04319533
+CONTROL 0x0431a433 - 0x0431a435
+GRAPH 0x01309d37
+GRAPH 0x01309e32 - 0x01309e35
+GRAPH 0x0130b531 - 0x0130b539
+GRAPH 0x0130b632 - 0x0130b638
+GRAPH 0x0130b739
+GRAPH 0x0130b830
+GRAPH 0x0130b934 - 0x0130b938
+GRAPH 0x0130ba38
+GRAPH 0x0130bc36 - 0x0130bc39
+GRAPH 0x0130bd30 - 0x0130bd39
+GRAPH 0x0130be30 - 0x0130be39
+GRAPH 0x0130bf30 - 0x0130bf39
+GRAPH 0x0130c030 - 0x0130c039
+GRAPH 0x0130c130 - 0x0130c139
+GRAPH 0x0130c230 - 0x0130c239
+GRAPH 0x0130c330 - 0x0130c339
+GRAPH 0x0130c430 - 0x0130c435
+GRAPH 0x0130c632 - 0x0130c639
+GRAPH 0x0130c730 - 0x0130c737
+GRAPH 0x0130c838
+GRAPH 0x0130d739
+GRAPH 0x0130d830 - 0x0130d832 0x0130d834 0x0130d835
+GRAPH 0x0130ed33
+GRAPH 0x0130f239
+GRAPH 0x0130f330 - 0x0130f339
+GRAPH 0x0130f430 - 0x0130f435 0x0130f437 - 0x0130f439
+GRAPH 0x0130f530 - 0x0130f539
+GRAPH 0x0130f630 - 0x0130f639
+GRAPH 0x0130f731 - 0x0130f733 0x0130f735 0x0130f737 0x0130f738
+GRAPH 0x0130f830
+GRAPH 0x0130f932 - 0x0130f939
+GRAPH 0x0130fa30 - 0x0130fa39
+GRAPH 0x0130fb30 - 0x0130fb38
+GRAPH 0x0130fc34 - 0x0130fc36
+GRAPH 0x01318333 - 0x01318339
+GRAPH 0x01318430 - 0x01318439
+GRAPH 0x01318530 - 0x01318538
+GRAPH 0x01318634 - 0x01318639
+GRAPH 0x01318730 - 0x01318739
+GRAPH 0x01318830 - 0x01318835
+GRAPH 0x01318b30 - 0x01318b39
+GRAPH 0x01318c30 - 0x01318c39
+GRAPH 0x01318d30 - 0x01318d39
+GRAPH 0x01318e30 - 0x01318e39
+GRAPH 0x01318f30 - 0x01318f39
+GRAPH 0x01319030 - 0x01319039
+GRAPH 0x01319130 - 0x01319139
+GRAPH 0x01319230 - 0x01319239
+GRAPH 0x01319330 - 0x01319339
+GRAPH 0x01319430 - 0x01319439
+GRAPH 0x01319530 0x01319531 0x01319533 - 0x01319539
+GRAPH 0x01319630 0x01319632 - 0x01319639
+GRAPH 0x01319730 - 0x01319732 0x01319734 - 0x01319737
+GRAPH 0x01319930 - 0x01319932
+GRAPH 0x01319b32 - 0x01319b39
+GRAPH 0x01319c30 - 0x01319c39
+GRAPH 0x01319d30 - 0x01319d39
+GRAPH 0x01319e30 0x01319e34 - 0x01319e39
+GRAPH 0x01319f30 - 0x01319f39
+GRAPH 0x0131a030 - 0x0131a039
+GRAPH 0x0131a130
+GRAPH 0x0131a634 - 0x0131a639
+GRAPH 0x0131a730 - 0x0131a739
+GRAPH 0x0131a830 - 0x0131a839
+GRAPH 0x0131a930 - 0x0131a939
+GRAPH 0x0131aa30 - 0x0131aa39
+GRAPH 0x0131ab30 - 0x0131ab33
+GRAPH 0x0131cc39
+GRAPH 0x0131cd30 0x0131cd31 0x0131cd33 - 0x0131cd39
+GRAPH 0x0131ce30 - 0x0131ce39
+GRAPH 0x0131cf30 - 0x0131cf39
+GRAPH 0x0131d030 - 0x0131d039
+GRAPH 0x0131d130 - 0x0131d139
+GRAPH 0x0131d230 - 0x0131d235 0x0131d238 0x0131d239
+GRAPH 0x0131d330 - 0x0131d339
+GRAPH 0x0131d430 - 0x0131d435 0x0131d438 0x0131d439
+GRAPH 0x0131d530 - 0x0131d532 0x0131d536 - 0x0131d539
+GRAPH 0x0131d630 - 0x0131d637
+GRAPH 0x0131d937 - 0x0131d939
+GRAPH 0x0131da31 - 0x0131da38
+GRAPH 0x0131db31 0x0131db32 0x0131db35 - 0x0131db39
+GRAPH 0x0131dc30 - 0x0131dc39
+GRAPH 0x0131dd30 - 0x0131dd36 0x0131dd38 0x0131dd39
+GRAPH 0x0131de30 - 0x0131de34 0x0131de36
+GRAPH 0x0131df30 - 0x0131df33 0x0131df36 0x0131df38 0x0131df39
+GRAPH 0x0131e030 - 0x0131e034 0x0131e037 0x0131e038
+GRAPH 0x0131e131 - 0x0131e133
+GRAPH 0x0131e233 0x0131e238 0x0131e239
+GRAPH 0x0131e331 - 0x0131e335
+GRAPH 0x0131e438 0x0131e439
+GRAPH 0x0131e636 0x0131e639
+GRAPH 0x0131e730 - 0x0131e734 0x0131e739
+GRAPH 0x0131e830 0x0131e833 - 0x0131e839
+GRAPH 0x0131e930 - 0x0131e939
+GRAPH 0x0131ea30 - 0x0131ea34 0x0131ea36 - 0x0131ea39
+GRAPH 0x0131eb30 - 0x0131eb32 0x0131eb34 0x0131eb35 0x0131eb37 0x0131eb38
+GRAPH 0x0131ec30 0x0131ec31 0x0131ec34 0x0131ec36 - 0x0131ec39
+GRAPH 0x0131ed30 0x0131ed35 0x0131ed36 0x0131ed39
+GRAPH 0x0131ee30 0x0131ee31
+GRAPH 0x0131ef33 - 0x0131ef36 0x0131ef38
+GRAPH 0x0131f136 - 0x0131f139
+GRAPH 0x0131f230
+GRAPH 0x0131f333 - 0x0131f335 0x0131f337 - 0x0131f339
+GRAPH 0x0131f430 - 0x0131f433 0x0131f435 0x0131f437 - 0x0131f439
+GRAPH 0x0131f531 - 0x0131f539
+GRAPH 0x0131f630 - 0x0131f639
+GRAPH 0x0131f730 - 0x0131f732 0x0131f734 - 0x0131f739
+GRAPH 0x0131f830 0x0131f832 0x0131f833 0x0131f835 - 0x0131f839
+GRAPH 0x0131f932 - 0x0131f939
+GRAPH 0x0131fa30 0x0131fa31 0x0131fa33 - 0x0131fa35 0x0131fa37 - 0x0131fa39
+GRAPH 0x0131fb32
+GRAPH 0x0131fc38
+GRAPH 0x01328231 - 0x01328233 0x01328235 - 0x01328239
+GRAPH 0x01328330 - 0x01328332 0x01328335 0x01328336 0x01328339
+GRAPH 0x01328430 - 0x01328439
+GRAPH 0x01328530 - 0x01328539
+GRAPH 0x01328630 0x01328632 - 0x01328638
+GRAPH 0x01328730 0x01328731 0x01328734 - 0x01328737
+GRAPH 0x01328830 - 0x01328837
+GRAPH 0x01328931 0x01328932 0x01328935 - 0x01328937
+GRAPH 0x01328a36 0x01328a37
+GRAPH 0x01328b32 0x01328b33 0x01328b35 - 0x01328b37
+GRAPH 0x01328f30 0x01328f31 0x01328f33 - 0x01328f38
+GRAPH 0x01329032 - 0x01329034 0x01329036 - 0x01329039
+GRAPH 0x01329133 0x01329134 0x01329136 0x01329138 0x01329139
+GRAPH 0x01329233 0x01329234 0x01329238 0x01329239
+GRAPH 0x01329330 0x01329334 - 0x01329339
+GRAPH 0x01329430 0x01329431 0x01329433 - 0x01329435
+GRAPH 0x01329530 - 0x01329534 0x01329538 0x01329539
+GRAPH 0x01329630 0x01329632 - 0x01329635
+GRAPH 0x01329735
+GRAPH 0x01329b37 - 0x01329b39
+GRAPH 0x01329c31 - 0x01329c38
+GRAPH 0x01329d30 - 0x01329d32 0x01329d34 - 0x01329d39
+GRAPH 0x01329e30 - 0x01329e39
+GRAPH 0x01329f30 - 0x01329f36 0x01329f38 0x01329f39
+GRAPH 0x0132a030 - 0x0132a037 0x0132a039
+GRAPH 0x0132a130 - 0x0132a133 0x0132a138 0x0132a139
+GRAPH 0x0132a230 - 0x0132a234 0x0132a236 - 0x0132a238
+GRAPH 0x0132a330 - 0x0132a333
+GRAPH 0x0132a431 0x0132a432
+GRAPH 0x0132a532 0x0132a533
+GRAPH 0x0132a836 0x0132a837 0x0132a839
+GRAPH 0x0132a930 - 0x0132a936 0x0132a938 0x0132a939
+GRAPH 0x0132aa30 0x0132aa32 - 0x0132aa39
+GRAPH 0x0132ab30 - 0x0132ab39
+GRAPH 0x0132ac30 - 0x0132ac34 0x0132ac36 - 0x0132ac39
+GRAPH 0x0132ad30 - 0x0132ad35 0x0132ad37 - 0x0132ad39
+GRAPH 0x0132ae30 0x0132ae31 0x0132ae36 - 0x0132ae39
+GRAPH 0x0132af30 - 0x0132af32 0x0132af34 - 0x0132af36 0x0132af38 0x0132af39
+GRAPH 0x0132b030 0x0132b031 0x0132b039
+GRAPH 0x0132b130 0x0132b138
+GRAPH 0x0132b230 0x0132b231
+GRAPH 0x0132b534 0x0132b535 0x0132b537 - 0x0132b539
+GRAPH 0x0132b630 - 0x0132b634 0x0132b636 - 0x0132b638
+GRAPH 0x0132b730 - 0x0132b739
+GRAPH 0x0132b830 - 0x0132b839
+GRAPH 0x0132b930 - 0x0132b932 0x0132b934 - 0x0132b939
+GRAPH 0x0132ba30 - 0x0132ba39
+GRAPH 0x0132bb34 - 0x0132bb39
+GRAPH 0x0132bc32 - 0x0132bc34 0x0132bc36 - 0x0132bc39
+GRAPH 0x0132bd39
+GRAPH 0x0132be38 0x0132be39
+GRAPH 0x0132c232 0x0132c233 0x0132c235 - 0x0132c239
+GRAPH 0x0132c330 - 0x0132c339
+GRAPH 0x0132c430 - 0x0132c432 0x0132c436 - 0x0132c439
+GRAPH 0x0132c530 - 0x0132c539
+GRAPH 0x0132c630 - 0x0132c639
+GRAPH 0x0132c731 - 0x0132c739
+GRAPH 0x0132c831 0x0132c834 - 0x0132c839
+GRAPH 0x0132c930 0x0132c934 0x0132c939
+GRAPH 0x0132ca30 - 0x0132ca34 0x0132ca36 0x0132ca38 0x0132ca39
+GRAPH 0x0132cb30 - 0x0132cb35
+GRAPH 0x0132cd34 0x0132cd35
+GRAPH 0x0132ce39
+GRAPH 0x0132cf30 - 0x0132cf39
+GRAPH 0x0132d030 - 0x0132d039
+GRAPH 0x0132d130 - 0x0132d139
+GRAPH 0x0132d230 - 0x0132d239
+GRAPH 0x0132d330 - 0x0132d339
+GRAPH 0x0132d430 - 0x0132d436
+GRAPH 0x0132d532 - 0x0132d539
+GRAPH 0x0132d630 - 0x0132d636
+GRAPH 0x0132db37 0x0132db38
+GRAPH 0x0132dc30 0x0132dc33 0x0132dc34 0x0132dc36 0x0132dc39
+GRAPH 0x0132dd36 - 0x0132dd39
+GRAPH 0x0132de31 - 0x0132de37 0x0132de39
+GRAPH 0x0132df30 0x0132df31 0x0132df33 0x0132df35 0x0132df38 0x0132df39
+GRAPH 0x0132e031 - 0x0132e039
+GRAPH 0x0132e130 - 0x0132e133 0x0132e135 - 0x0132e137
+GRAPH 0x0132e230 - 0x0132e234 0x0132e236 0x0132e238 0x0132e239
+GRAPH 0x0132e330 - 0x0132e333
+GRAPH 0x0132e438 0x0132e439
+GRAPH 0x0132ea38 0x0132ea39
+GRAPH 0x0132ed37 0x0132ed39
+GRAPH 0x0132ee31 0x0132ee36 - 0x0132ee39
+GRAPH 0x0132ef30 - 0x0132ef35 0x0132ef37 - 0x0132ef39
+GRAPH 0x0132f030 - 0x0132f039
+GRAPH 0x0132f130 - 0x0132f139
+GRAPH 0x0132f230 - 0x0132f239
+GRAPH 0x0132f330 0x0132f337 - 0x0132f339
+GRAPH 0x0132f430 - 0x0132f439
+GRAPH 0x0132f530 - 0x0132f536 0x0132f538 0x0132f539
+GRAPH 0x0132f630 - 0x0132f633 0x0132f638 0x0132f639
+GRAPH 0x0132f730 - 0x0132f735 0x0132f737 - 0x0132f739
+GRAPH 0x0132f830 - 0x0132f839
+GRAPH 0x0132f930 - 0x0132f939
+GRAPH 0x0132fa30 - 0x0132fa39
+GRAPH 0x0132fb30 - 0x0132fb32
+GRAPH 0x0132fc32
+GRAPH 0x01338430 - 0x01338439
+GRAPH 0x01338530 - 0x01338539
+GRAPH 0x01338630 - 0x01338639
+GRAPH 0x01338730 - 0x01338733 0x01338735 - 0x01338739
+GRAPH 0x01338831 0x01338832 0x01338834 - 0x01338839
+GRAPH 0x01338930 0x01338934 - 0x01338937
+GRAPH 0x01338c30 - 0x01338c39
+GRAPH 0x01339838 0x01339839
+GRAPH 0x01339930 - 0x01339939
+GRAPH 0x01339a30 - 0x01339a39
+GRAPH 0x01339b30 - 0x01339b39
+GRAPH 0x01339c30 - 0x01339c38
+GRAPH 0x01339d36 - 0x01339d39
+GRAPH 0x01339e30 - 0x01339e39
+GRAPH 0x01339f30 - 0x01339f39
+GRAPH 0x0133a030 - 0x0133a039
+GRAPH 0x0133a130 - 0x0133a139
+GRAPH 0x0133a230 - 0x0133a239
+GRAPH 0x0133a330 - 0x0133a339
+GRAPH 0x0133a430 - 0x0133a439
+GRAPH 0x0133a530 - 0x0133a539
+GRAPH 0x0133a630 - 0x0133a635
+GRAPH 0x0133a731 - 0x0133a739
+GRAPH 0x0133a830 - 0x0133a839
+GRAPH 0x0133a930 - 0x0133a939
+GRAPH 0x0133aa30 - 0x0133aa39
+GRAPH 0x0133ab30 - 0x0133ab39
+GRAPH 0x0133ac30 - 0x0133ac39
+GRAPH 0x0133ad30 - 0x0133ad38
+GRAPH 0x0133ae34 - 0x0133ae39
+GRAPH 0x0133af30 - 0x0133af39
+GRAPH 0x0133b030 - 0x0133b039
+GRAPH 0x0133b130 - 0x0133b139
+GRAPH 0x0133b230 - 0x0133b239
+GRAPH 0x0133b330 - 0x0133b339
+GRAPH 0x0133b430 - 0x0133b439
+GRAPH 0x0133b530 - 0x0133b539
+GRAPH 0x0133b630 - 0x0133b635
+GRAPH 0x0133e038 0x0133e039
+GRAPH 0x0133e130 - 0x0133e139
+GRAPH 0x0133e230 - 0x0133e239
+GRAPH 0x0133e330 - 0x0133e339
+GRAPH 0x0133e430 - 0x0133e439
+GRAPH 0x0133e530 - 0x0133e539
+GRAPH 0x0133e630 - 0x0133e639
+GRAPH 0x0133e730 - 0x0133e739
+GRAPH 0x0133e830 - 0x0133e839
+GRAPH 0x0133e930 - 0x0133e932
+GRAPH 0x0134ac35 - 0x0134ac39
+GRAPH 0x0134ad30 - 0x0134ad39
+GRAPH 0x0134ae30 - 0x0134ae39
+GRAPH 0x0134af30 0x0134af36 - 0x0134af39
+GRAPH 0x0134b030 - 0x0134b039
+GRAPH 0x0134b130 - 0x0134b139
+GRAPH 0x0134b230 - 0x0134b239
+GRAPH 0x0134b330 - 0x0134b339
+GRAPH 0x0134b430 - 0x0134b439
+GRAPH 0x0134b530 - 0x0134b539
+GRAPH 0x0134b630 - 0x0134b639
+GRAPH 0x0134b730
+GRAPH 0x0134b932 - 0x0134b939
+GRAPH 0x0134ba30 - 0x0134ba34 0x0134ba36 - 0x0134ba39
+GRAPH 0x0134bb30 - 0x0134bb32
+GRAPH 0x0134bc34 - 0x0134bc39
+GRAPH 0x0134bd30 - 0x0134bd39
+GRAPH 0x0134be30 - 0x0134be34
+GRAPH 0x0134bf36 - 0x0134bf39
+GRAPH 0x0134c030 - 0x0134c039
+GRAPH 0x0134c130 - 0x0134c135
+GRAPH 0x0134c238 0x0134c239
+GRAPH 0x0134c330 - 0x0134c339
+GRAPH 0x0134c430 0x0134c432 - 0x0134c434 0x0134c436 0x0134c437
+GRAPH 0x0134c630 - 0x0134c639
+GRAPH 0x0134c730 - 0x0134c739
+GRAPH 0x0134c830 - 0x0134c839
+GRAPH 0x0134c930 - 0x0134c939
+GRAPH 0x0134ca30 - 0x0134ca39
+GRAPH 0x0134cb30 - 0x0134cb39
+GRAPH 0x0134cc30 - 0x0134cc39
+GRAPH 0x0134cd30 - 0x0134cd39
+GRAPH 0x0134ce30 - 0x0134ce33 0x0134ce37
+GRAPH 0x0134cf32
+GRAPH 0x0134d339
+GRAPH 0x0134d430 0x0134d431
+GRAPH 0x0134d630 - 0x0134d639
+GRAPH 0x0134d730 - 0x0134d739
+GRAPH 0x0134d830 - 0x0134d839
+GRAPH 0x0134d930 - 0x0134d939
+GRAPH 0x0134da30 - 0x0134da39
+GRAPH 0x0134db30 - 0x0134db39
+GRAPH 0x0134dc30 - 0x0134dc39
+GRAPH 0x0134dd30 - 0x0134dd39
+GRAPH 0x0134de30 - 0x0134de37
+GRAPH 0x0134df36 - 0x0134df39
+GRAPH 0x0134e030 - 0x0134e039
+GRAPH 0x0134e130 - 0x0134e139
+GRAPH 0x0134e230 - 0x0134e239
+GRAPH 0x0134e330 - 0x0134e337
+GRAPH 0x0136b637 - 0x0136b639
+GRAPH 0x0136b730 - 0x0136b739
+GRAPH 0x0136b830 - 0x0136b839
+GRAPH 0x0136b930 - 0x0136b933
+GRAPH 0x0136c033 - 0x0136c036
+GRAPH 0x0139a434 - 0x0139a439
+GRAPH 0x0139a531 - 0x0139a535
+GRAPH 0x0139a631 0x0139a632
+GRAPH 0x0139a731 0x0139a732
+GRAPH 0x0139a836 - 0x0139a838
+GRAPH 0x0139ae34
+GRAPH 0x0139b434 - 0x0139b439
+GRAPH 0x0139b530 - 0x0139b539
+GRAPH 0x0139b630 - 0x0139b637
+GRAPH 0x0336c739
+GRAPH 0x0336c830 - 0x0336c839
+GRAPH 0x0336c930 - 0x0336c939
+GRAPH 0x0336ca30 - 0x0336ca39
+GRAPH 0x0336cb30 - 0x0336cb39
+GRAPH 0x0336cc30 - 0x0336cc39
+GRAPH 0x0336cd30 - 0x0336cd39
+GRAPH 0x0336ce30 - 0x0336ce39
+GRAPH 0x0336cf30 - 0x0336cf39
+GRAPH 0x0336d030 - 0x0336d039
+GRAPH 0x0336d130 - 0x0336d139
+GRAPH 0x0336d230 - 0x0336d239
+GRAPH 0x0336d330 - 0x0336d339
+GRAPH 0x0336d430 - 0x0336d439
+GRAPH 0x0336d530 - 0x0336d539
+GRAPH 0x0336d630 - 0x0336d639
+GRAPH 0x0336d730 - 0x0336d739
+GRAPH 0x0336d830 - 0x0336d839
+GRAPH 0x0336d930 - 0x0336d939
+GRAPH 0x0336da30 - 0x0336da39
+GRAPH 0x0336db30 - 0x0336db39
+GRAPH 0x0336dc30 - 0x0336dc39
+GRAPH 0x0336dd30 - 0x0336dd39
+GRAPH 0x0336de30 - 0x0336de39
+GRAPH 0x0336df30 - 0x0336df39
+GRAPH 0x0336e030 - 0x0336e039
+GRAPH 0x0336e130 - 0x0336e139
+GRAPH 0x0336e230 - 0x0336e239
+GRAPH 0x0336e330 - 0x0336e339
+GRAPH 0x0336e430 - 0x0336e439
+GRAPH 0x0336e530 - 0x0336e539
+GRAPH 0x0336e630 - 0x0336e639
+GRAPH 0x0336e730 - 0x0336e739
+GRAPH 0x0336e830 - 0x0336e839
+GRAPH 0x0336e930 - 0x0336e939
+GRAPH 0x0336ea30 - 0x0336ea39
+GRAPH 0x0336eb30 - 0x0336eb39
+GRAPH 0x0336ec30 - 0x0336ec39
+GRAPH 0x0336ed30 - 0x0336ed39
+GRAPH 0x0336ee30 - 0x0336ee39
+GRAPH 0x0336ef30 - 0x0336ef39
+GRAPH 0x0336f030 - 0x0336f039
+GRAPH 0x0336f130 - 0x0336f139
+GRAPH 0x0336f230 - 0x0336f239
+GRAPH 0x0336f330 - 0x0336f339
+GRAPH 0x0336f430 - 0x0336f439
+GRAPH 0x0336f530 - 0x0336f539
+GRAPH 0x0336f630 - 0x0336f639
+GRAPH 0x0336f730 - 0x0336f739
+GRAPH 0x0336f830 - 0x0336f839
+GRAPH 0x0336f930 - 0x0336f939
+GRAPH 0x0336fa30 - 0x0336fa39
+GRAPH 0x0336fb30 - 0x0336fb39
+GRAPH 0x0336fc30 - 0x0336fc39
+GRAPH 0x0336fd30 - 0x0336fd39
+GRAPH 0x0336fe30 - 0x0336fe39
+GRAPH 0x03378130 - 0x03378139
+GRAPH 0x03378230 - 0x03378239
+GRAPH 0x03378330 - 0x03378339
+GRAPH 0x03378430 - 0x03378439
+GRAPH 0x03378530 - 0x03378539
+GRAPH 0x03378630 - 0x03378639
+GRAPH 0x03378730 - 0x03378739
+GRAPH 0x03378830 - 0x03378839
+GRAPH 0x03378930 - 0x03378939
+GRAPH 0x03378a30 - 0x03378a39
+GRAPH 0x03378b30 - 0x03378b39
+GRAPH 0x03378c30 - 0x03378c39
+GRAPH 0x03378d30 - 0x03378d39
+GRAPH 0x03378e30 - 0x03378e39
+GRAPH 0x03378f30 - 0x03378f39
+GRAPH 0x03379030 - 0x03379039
+GRAPH 0x03379130 - 0x03379139
+GRAPH 0x03379230 - 0x03379239
+GRAPH 0x03379330 - 0x03379339
+GRAPH 0x03379430 - 0x03379439
+GRAPH 0x03379530 - 0x03379539
+GRAPH 0x03379630 - 0x03379639
+GRAPH 0x03379730 - 0x03379739
+GRAPH 0x03379830 - 0x03379839
+GRAPH 0x03379930 - 0x03379939
+GRAPH 0x03379a30 - 0x03379a39
+GRAPH 0x03379b30 - 0x03379b39
+GRAPH 0x03379c30 - 0x03379c39
+GRAPH 0x03379d30 - 0x03379d39
+GRAPH 0x03379e30 - 0x03379e39
+GRAPH 0x03379f30 - 0x03379f39
+GRAPH 0x0337a030 - 0x0337a039
+GRAPH 0x0337a130 - 0x0337a139
+GRAPH 0x0337a230 - 0x0337a239
+GRAPH 0x0337a330 - 0x0337a339
+GRAPH 0x0337a430 - 0x0337a439
+GRAPH 0x0337a530 - 0x0337a539
+GRAPH 0x0337a630 - 0x0337a639
+GRAPH 0x0337a730 - 0x0337a739
+GRAPH 0x0337a830 - 0x0337a839
+GRAPH 0x0337a930 - 0x0337a939
+GRAPH 0x0337aa30 - 0x0337aa39
+GRAPH 0x0337ab30 - 0x0337ab39
+GRAPH 0x0337ac30 - 0x0337ac39
+GRAPH 0x0337ad30 - 0x0337ad39
+GRAPH 0x0337ae30 - 0x0337ae39
+GRAPH 0x0337af30 - 0x0337af39
+GRAPH 0x0337b030 - 0x0337b039
+GRAPH 0x0337b130 - 0x0337b139
+GRAPH 0x0337b230 - 0x0337b239
+GRAPH 0x0337b330 - 0x0337b339
+GRAPH 0x0337b430 - 0x0337b439
+GRAPH 0x0337b530 - 0x0337b539
+GRAPH 0x0337b630 - 0x0337b639
+GRAPH 0x0337b730 - 0x0337b739
+GRAPH 0x0337b830 - 0x0337b839
+GRAPH 0x0337b930 - 0x0337b939
+GRAPH 0x0337ba30 - 0x0337ba39
+GRAPH 0x0337bb30 - 0x0337bb39
+GRAPH 0x0337bc30 - 0x0337bc39
+GRAPH 0x0337bd30 - 0x0337bd39
+GRAPH 0x0337be30 - 0x0337be39
+GRAPH 0x0337bf30 - 0x0337bf39
+GRAPH 0x0337c030 - 0x0337c039
+GRAPH 0x0337c130 - 0x0337c139
+GRAPH 0x0337c230 - 0x0337c239
+GRAPH 0x0337c330 - 0x0337c339
+GRAPH 0x0337c430 - 0x0337c439
+GRAPH 0x0337c530 - 0x0337c539
+GRAPH 0x0337c630 - 0x0337c639
+GRAPH 0x0337c730 - 0x0337c739
+GRAPH 0x0337c830 - 0x0337c839
+GRAPH 0x0337c930 - 0x0337c939
+GRAPH 0x0337ca30 - 0x0337ca39
+GRAPH 0x0337cb30 - 0x0337cb39
+GRAPH 0x0337cc30 - 0x0337cc39
+GRAPH 0x0337cd30 - 0x0337cd39
+GRAPH 0x0337ce30 - 0x0337ce39
+GRAPH 0x0337cf30 - 0x0337cf39
+GRAPH 0x0337d030 - 0x0337d039
+GRAPH 0x0337d130 - 0x0337d139
+GRAPH 0x0337d230 - 0x0337d239
+GRAPH 0x0337d330 - 0x0337d339
+GRAPH 0x0337d430 - 0x0337d439
+GRAPH 0x0337d530 - 0x0337d539
+GRAPH 0x0337d630 - 0x0337d639
+GRAPH 0x0337d730 - 0x0337d739
+GRAPH 0x0337d830 - 0x0337d839
+GRAPH 0x0337d930 - 0x0337d939
+GRAPH 0x0337da30 - 0x0337da39
+GRAPH 0x0337db30 - 0x0337db39
+GRAPH 0x0337dc30 - 0x0337dc39
+GRAPH 0x0337dd30 - 0x0337dd39
+GRAPH 0x0337de30 - 0x0337de39
+GRAPH 0x0337df30 - 0x0337df39
+GRAPH 0x0337e030 - 0x0337e039
+GRAPH 0x0337e130 - 0x0337e139
+GRAPH 0x0337e230 - 0x0337e239
+GRAPH 0x0337e330 - 0x0337e339
+GRAPH 0x0337e430 - 0x0337e439
+GRAPH 0x0337e530 - 0x0337e539
+GRAPH 0x0337e630 - 0x0337e639
+GRAPH 0x0337e730 - 0x0337e739
+GRAPH 0x0337e830 - 0x0337e839
+GRAPH 0x0337e930 - 0x0337e939
+GRAPH 0x0337ea30 - 0x0337ea39
+GRAPH 0x0337eb30 - 0x0337eb39
+GRAPH 0x0337ec30 - 0x0337ec39
+GRAPH 0x0337ed30 - 0x0337ed39
+GRAPH 0x0337ee30 - 0x0337ee39
+GRAPH 0x0337ef30 - 0x0337ef39
+GRAPH 0x0337f030 - 0x0337f039
+GRAPH 0x0337f130 - 0x0337f139
+GRAPH 0x0337f230 - 0x0337f239
+GRAPH 0x0337f330 - 0x0337f339
+GRAPH 0x0337f430 - 0x0337f439
+GRAPH 0x0337f530 - 0x0337f539
+GRAPH 0x0337f630 - 0x0337f639
+GRAPH 0x0337f730 - 0x0337f739
+GRAPH 0x0337f830 - 0x0337f839
+GRAPH 0x0337f930 - 0x0337f939
+GRAPH 0x0337fa30 - 0x0337fa39
+GRAPH 0x0337fb30 - 0x0337fb39
+GRAPH 0x0337fc30 - 0x0337fc39
+GRAPH 0x0337fd30 - 0x0337fd39
+GRAPH 0x0337fe30 - 0x0337fe39
+GRAPH 0x03388130 - 0x03388139
+GRAPH 0x03388230 - 0x03388239
+GRAPH 0x03388330 - 0x03388339
+GRAPH 0x03388430 - 0x03388439
+GRAPH 0x03388530 - 0x03388539
+GRAPH 0x03388630 - 0x03388639
+GRAPH 0x03388730 - 0x03388739
+GRAPH 0x03388830 - 0x03388839
+GRAPH 0x03388930 - 0x03388939
+GRAPH 0x03388a30 - 0x03388a39
+GRAPH 0x03388b30 - 0x03388b39
+GRAPH 0x03388c30 - 0x03388c39
+GRAPH 0x03388d30 - 0x03388d39
+GRAPH 0x03388e30 - 0x03388e39
+GRAPH 0x03388f30 - 0x03388f39
+GRAPH 0x03389030 - 0x03389039
+GRAPH 0x03389130 - 0x03389139
+GRAPH 0x03389230 - 0x03389239
+GRAPH 0x03389330 - 0x03389339
+GRAPH 0x03389430 - 0x03389439
+GRAPH 0x03389530 - 0x03389539
+GRAPH 0x03389630 - 0x03389639
+GRAPH 0x03389730 - 0x03389739
+GRAPH 0x03389830 - 0x03389839
+GRAPH 0x03389930 - 0x03389939
+GRAPH 0x03389a30 - 0x03389a39
+GRAPH 0x03389b30 - 0x03389b39
+GRAPH 0x03389c30 - 0x03389c39
+GRAPH 0x03389d30 - 0x03389d39
+GRAPH 0x03389e30 - 0x03389e39
+GRAPH 0x03389f30 - 0x03389f39
+GRAPH 0x0338a030 - 0x0338a039
+GRAPH 0x0338a130 - 0x0338a139
+GRAPH 0x0338a230 - 0x0338a239
+GRAPH 0x0338a330 - 0x0338a339
+GRAPH 0x0338a430 - 0x0338a439
+GRAPH 0x0338a530 - 0x0338a539
+GRAPH 0x0338a630 - 0x0338a639
+GRAPH 0x0338a730 - 0x0338a739
+GRAPH 0x0338a830 - 0x0338a839
+GRAPH 0x0338a930 - 0x0338a939
+GRAPH 0x0338aa30 - 0x0338aa39
+GRAPH 0x0338ab30 - 0x0338ab39
+GRAPH 0x0338ac30 - 0x0338ac39
+GRAPH 0x0338ad30 - 0x0338ad39
+GRAPH 0x0338ae30 - 0x0338ae39
+GRAPH 0x0338af30 - 0x0338af39
+GRAPH 0x0338b030 - 0x0338b039
+GRAPH 0x0338b130 - 0x0338b139
+GRAPH 0x0338b230 - 0x0338b239
+GRAPH 0x0338b330 - 0x0338b339
+GRAPH 0x0338b430 - 0x0338b439
+GRAPH 0x0338b530 - 0x0338b539
+GRAPH 0x0338b630 - 0x0338b639
+GRAPH 0x0338b730 - 0x0338b739
+GRAPH 0x0338b830 - 0x0338b839
+GRAPH 0x0338b930 - 0x0338b939
+GRAPH 0x0338ba30 - 0x0338ba39
+GRAPH 0x0338bb30 - 0x0338bb39
+GRAPH 0x0338bc30 - 0x0338bc39
+GRAPH 0x0338bd30 - 0x0338bd39
+GRAPH 0x0338be30 - 0x0338be39
+GRAPH 0x0338bf30 - 0x0338bf39
+GRAPH 0x0338c030 - 0x0338c039
+GRAPH 0x0338c130 - 0x0338c139
+GRAPH 0x0338c230 - 0x0338c239
+GRAPH 0x0338c330 - 0x0338c339
+GRAPH 0x0338c430 - 0x0338c439
+GRAPH 0x0338c530 - 0x0338c539
+GRAPH 0x0338c630 - 0x0338c639
+GRAPH 0x0338c730 - 0x0338c739
+GRAPH 0x0338c830 - 0x0338c839
+GRAPH 0x0338c930 - 0x0338c939
+GRAPH 0x0338ca30 - 0x0338ca39
+GRAPH 0x0338cb30 - 0x0338cb39
+GRAPH 0x0338cc30 - 0x0338cc39
+GRAPH 0x0338cd30 - 0x0338cd39
+GRAPH 0x0338ce30 - 0x0338ce39
+GRAPH 0x0338cf30 - 0x0338cf39
+GRAPH 0x0338d030 - 0x0338d039
+GRAPH 0x0338d130 - 0x0338d139
+GRAPH 0x0338d230 - 0x0338d239
+GRAPH 0x0338d330 - 0x0338d339
+GRAPH 0x0338d430 - 0x0338d439
+GRAPH 0x0338d530 - 0x0338d539
+GRAPH 0x0338d630 - 0x0338d639
+GRAPH 0x0338d730 - 0x0338d739
+GRAPH 0x0338d830 - 0x0338d839
+GRAPH 0x0338d930 - 0x0338d939
+GRAPH 0x0338da30 - 0x0338da39
+GRAPH 0x0338db30 - 0x0338db39
+GRAPH 0x0338dc30 - 0x0338dc39
+GRAPH 0x0338dd30 - 0x0338dd39
+GRAPH 0x0338de30 - 0x0338de39
+GRAPH 0x0338df30 - 0x0338df39
+GRAPH 0x0338e030 - 0x0338e039
+GRAPH 0x0338e130 - 0x0338e139
+GRAPH 0x0338e230 - 0x0338e239
+GRAPH 0x0338e330 - 0x0338e339
+GRAPH 0x0338e430 - 0x0338e439
+GRAPH 0x0338e530 - 0x0338e539
+GRAPH 0x0338e630 - 0x0338e639
+GRAPH 0x0338e730 - 0x0338e739
+GRAPH 0x0338e830 - 0x0338e839
+GRAPH 0x0338e930 - 0x0338e939
+GRAPH 0x0338ea30 - 0x0338ea39
+GRAPH 0x0338eb30 - 0x0338eb39
+GRAPH 0x0338ec30 - 0x0338ec39
+GRAPH 0x0338ed30 - 0x0338ed39
+GRAPH 0x0338ee30 - 0x0338ee39
+GRAPH 0x0338ef30 - 0x0338ef39
+GRAPH 0x0338f030 - 0x0338f039
+GRAPH 0x0338f130 - 0x0338f139
+GRAPH 0x0338f230 - 0x0338f239
+GRAPH 0x0338f330 - 0x0338f339
+GRAPH 0x0338f430 - 0x0338f439
+GRAPH 0x0338f530 - 0x0338f539
+GRAPH 0x0338f630 - 0x0338f639
+GRAPH 0x0338f730 - 0x0338f739
+GRAPH 0x0338f830 - 0x0338f839
+GRAPH 0x0338f930 - 0x0338f939
+GRAPH 0x0338fa30 - 0x0338fa39
+GRAPH 0x0338fb30 - 0x0338fb39
+GRAPH 0x0338fc30 - 0x0338fc39
+GRAPH 0x0338fd30 - 0x0338fd39
+GRAPH 0x0338fe30 - 0x0338fe39
+GRAPH 0x03398130 - 0x03398139
+GRAPH 0x03398230 - 0x03398239
+GRAPH 0x03398330 - 0x03398339
+GRAPH 0x03398430 - 0x03398439
+GRAPH 0x03398530 - 0x03398539
+GRAPH 0x03398630 - 0x03398639
+GRAPH 0x03398730 - 0x03398739
+GRAPH 0x03398830 - 0x03398839
+GRAPH 0x03398930 - 0x03398939
+GRAPH 0x03398a30 - 0x03398a39
+GRAPH 0x03398b30 - 0x03398b39
+GRAPH 0x03398c30 - 0x03398c39
+GRAPH 0x03398d30 - 0x03398d39
+GRAPH 0x03398e30 - 0x03398e39
+GRAPH 0x03398f30 - 0x03398f39
+GRAPH 0x03399030 - 0x03399039
+GRAPH 0x03399130 - 0x03399139
+GRAPH 0x03399230 - 0x03399239
+GRAPH 0x03399330 - 0x03399339
+GRAPH 0x03399430 - 0x03399439
+GRAPH 0x03399530 - 0x03399539
+GRAPH 0x03399630 - 0x03399639
+GRAPH 0x03399730 - 0x03399739
+GRAPH 0x03399830 - 0x03399839
+GRAPH 0x03399930 - 0x03399939
+GRAPH 0x03399a30 - 0x03399a39
+GRAPH 0x03399b30 - 0x03399b39
+GRAPH 0x03399c30 - 0x03399c39
+GRAPH 0x03399d30 - 0x03399d39
+GRAPH 0x03399e30 - 0x03399e39
+GRAPH 0x03399f30 - 0x03399f39
+GRAPH 0x0339a030 - 0x0339a039
+GRAPH 0x0339a130 - 0x0339a139
+GRAPH 0x0339a230 - 0x0339a239
+GRAPH 0x0339a330 - 0x0339a339
+GRAPH 0x0339a430 - 0x0339a439
+GRAPH 0x0339a530 - 0x0339a539
+GRAPH 0x0339a630 - 0x0339a639
+GRAPH 0x0339a730 - 0x0339a739
+GRAPH 0x0339a830 - 0x0339a839
+GRAPH 0x0339a930 - 0x0339a939
+GRAPH 0x0339aa30 - 0x0339aa39
+GRAPH 0x0339ab30 - 0x0339ab39
+GRAPH 0x0339ac30 - 0x0339ac39
+GRAPH 0x0339ad30 - 0x0339ad39
+GRAPH 0x0339ae30 - 0x0339ae39
+GRAPH 0x0339af30 - 0x0339af39
+GRAPH 0x0339b030 - 0x0339b039
+GRAPH 0x0339b130 - 0x0339b139
+GRAPH 0x0339b230 - 0x0339b239
+GRAPH 0x0339b330 - 0x0339b339
+GRAPH 0x0339b430 - 0x0339b439
+GRAPH 0x0339b530 - 0x0339b539
+GRAPH 0x0339b630 - 0x0339b639
+GRAPH 0x0339b730 - 0x0339b739
+GRAPH 0x0339b830 - 0x0339b839
+GRAPH 0x0339b930 - 0x0339b939
+GRAPH 0x0339ba30 - 0x0339ba39
+GRAPH 0x0339bb30 - 0x0339bb39
+GRAPH 0x0339bc30 - 0x0339bc39
+GRAPH 0x0339bd30 - 0x0339bd39
+GRAPH 0x0339be30 - 0x0339be39
+GRAPH 0x0339bf30 - 0x0339bf39
+GRAPH 0x0339c030 - 0x0339c039
+GRAPH 0x0339c130 - 0x0339c139
+GRAPH 0x0339c230 - 0x0339c239
+GRAPH 0x0339c330 - 0x0339c339
+GRAPH 0x0339c430 - 0x0339c439
+GRAPH 0x0339c530 - 0x0339c539
+GRAPH 0x0339c630 - 0x0339c639
+GRAPH 0x0339c730 - 0x0339c739
+GRAPH 0x0339c830 - 0x0339c839
+GRAPH 0x0339c930 - 0x0339c939
+GRAPH 0x0339ca30 - 0x0339ca39
+GRAPH 0x0339cb30 - 0x0339cb39
+GRAPH 0x0339cc30 - 0x0339cc39
+GRAPH 0x0339cd30 - 0x0339cd39
+GRAPH 0x0339ce30 - 0x0339ce39
+GRAPH 0x0339cf30 - 0x0339cf39
+GRAPH 0x0339d030 - 0x0339d039
+GRAPH 0x0339d130 - 0x0339d139
+GRAPH 0x0339d230 - 0x0339d239
+GRAPH 0x0339d330 - 0x0339d339
+GRAPH 0x0339d430 - 0x0339d439
+GRAPH 0x0339d530 - 0x0339d539
+GRAPH 0x0339d630 - 0x0339d639
+GRAPH 0x0339d730 - 0x0339d739
+GRAPH 0x0339d830 - 0x0339d839
+GRAPH 0x0339d930 - 0x0339d939
+GRAPH 0x0339da30 - 0x0339da39
+GRAPH 0x0339db30 - 0x0339db39
+GRAPH 0x0339dc30 - 0x0339dc39
+GRAPH 0x0339dd30 - 0x0339dd39
+GRAPH 0x0339de30 - 0x0339de39
+GRAPH 0x0339df30 - 0x0339df39
+GRAPH 0x0339e030 - 0x0339e039
+GRAPH 0x0339e130 - 0x0339e139
+GRAPH 0x0339e230 - 0x0339e239
+GRAPH 0x0339e330 - 0x0339e339
+GRAPH 0x0339e430 - 0x0339e439
+GRAPH 0x0339e530 - 0x0339e539
+GRAPH 0x0339e630 - 0x0339e639
+GRAPH 0x0339e730 - 0x0339e739
+GRAPH 0x0339e830 - 0x0339e839
+GRAPH 0x0339e930 - 0x0339e939
+GRAPH 0x0339ea30 - 0x0339ea39
+GRAPH 0x0339eb30 - 0x0339eb39
+GRAPH 0x0339ec30 - 0x0339ec39
+GRAPH 0x0339ed30 - 0x0339ed39
+GRAPH 0x0339ee30 - 0x0339ee39
+GRAPH 0x0339ef30 - 0x0339ef39
+GRAPH 0x0339f030 - 0x0339f039
+GRAPH 0x0339f130 - 0x0339f139
+GRAPH 0x0339f230 - 0x0339f239
+GRAPH 0x0339f330 - 0x0339f339
+GRAPH 0x0339f430 - 0x0339f439
+GRAPH 0x0339f530 - 0x0339f539
+GRAPH 0x0339f630 - 0x0339f639
+GRAPH 0x0339f730 - 0x0339f739
+GRAPH 0x0339f830 - 0x0339f839
+GRAPH 0x0339f930 - 0x0339f939
+GRAPH 0x0339fa30 - 0x0339fa39
+GRAPH 0x0339fb30 - 0x0339fb39
+GRAPH 0x0339fc30 - 0x0339fc39
+GRAPH 0x0339fd30 - 0x0339fd39
+GRAPH 0x0339fe30 - 0x0339fe39
+GRAPH 0x04308130
+GRAPH 0x0430b531 - 0x0430b539
+GRAPH 0x0430b630 - 0x0430b632 0x0430b634 - 0x0430b639
+GRAPH 0x0430b730 - 0x0430b736 0x0430b738 0x0430b739
+GRAPH 0x0430b830 - 0x0430b832 0x0430b834 0x0430b836 0x0430b837 0x0430b839
+GRAPH 0x0430b930 0x0430b932 - 0x0430b939
+GRAPH 0x0430ba30 - 0x0430ba39
+GRAPH 0x0430bb30 - 0x0430bb39
+GRAPH 0x0430bc30 - 0x0430bc39
+GRAPH 0x0430bd30 - 0x0430bd39
+GRAPH 0x0430be30 - 0x0430be39
+GRAPH 0x0430bf30 - 0x0430bf39
+GRAPH 0x0430c030 - 0x0430c039
+GRAPH 0x0430c130 - 0x0430c139
+GRAPH 0x0430c230 - 0x0430c239
+GRAPH 0x0430c330 - 0x0430c339
+GRAPH 0x0430c733 - 0x0430c739
+GRAPH 0x0430c830 - 0x0430c839
+GRAPH 0x0430c930 - 0x0430c939
+GRAPH 0x0430ca30 - 0x0430ca39
+GRAPH 0x0430cb30 - 0x0430cb39
+GRAPH 0x0430cc30 - 0x0430cc39
+GRAPH 0x0430cd30 - 0x0430cd39
+GRAPH 0x0430ce30 - 0x0430ce39
+GRAPH 0x0430cf30 - 0x0430cf39
+GRAPH 0x0430d030 - 0x0430d039
+GRAPH 0x0430d130 - 0x0430d139
+GRAPH 0x0430d230 - 0x0430d239
+GRAPH 0x0430d330 - 0x0430d339
+GRAPH 0x0430d430 - 0x0430d439
+GRAPH 0x0430d530 - 0x0430d539
+GRAPH 0x0430d630 - 0x0430d639
+GRAPH 0x0430d730 - 0x0430d739
+GRAPH 0x0430d830 - 0x0430d839
+GRAPH 0x0430d930 - 0x0430d939
+GRAPH 0x0430da30 - 0x0430da39
+GRAPH 0x0430db30 - 0x0430db39
+GRAPH 0x0430dc30 - 0x0430dc39
+GRAPH 0x0430dd30 - 0x0430dd39
+GRAPH 0x0430de30 - 0x0430de39
+GRAPH 0x0430df30 - 0x0430df39
+GRAPH 0x0430e030 - 0x0430e039
+GRAPH 0x0430e130 - 0x0430e139
+GRAPH 0x0430e230 - 0x0430e239
+GRAPH 0x0430e330 - 0x0430e339
+GRAPH 0x0430e430 - 0x0430e439
+GRAPH 0x0430e530 - 0x0430e539
+GRAPH 0x0430e630 - 0x0430e639
+GRAPH 0x0430e730 - 0x0430e739
+GRAPH 0x0430e830 - 0x0430e839
+GRAPH 0x0430e930 - 0x0430e939
+GRAPH 0x0430ea30 - 0x0430ea39
+GRAPH 0x0430eb30 - 0x0430eb35
+GRAPH 0x0430ed34 - 0x0430ed39
+GRAPH 0x0430ee30 - 0x0430ee39
+GRAPH 0x0430ef30 - 0x0430ef39
+GRAPH 0x0430f030 - 0x0430f039
+GRAPH 0x0430f130 - 0x0430f139
+GRAPH 0x0430f230 - 0x0430f239
+GRAPH 0x0430f330 - 0x0430f337
+GRAPH 0x0430f430 - 0x0430f439
+GRAPH 0x0430f530 - 0x0430f539
+GRAPH 0x0430f630 - 0x0430f639
+GRAPH 0x0430f730 - 0x0430f739
+GRAPH 0x0430f830 - 0x0430f839
+GRAPH 0x0430f930 - 0x0430f933
+GRAPH 0x0430fd34 - 0x0430fd39
+GRAPH 0x0430fe30 - 0x0430fe35
+GRAPH 0x04318130 - 0x04318139
+GRAPH 0x04318230 - 0x04318235
+GRAPH 0x04318432 - 0x04318435
+GRAPH 0x04318730 - 0x04318734 0x04318736 - 0x04318739
+GRAPH 0x04318830 - 0x04318839
+GRAPH 0x04318930 - 0x04318939
+GRAPH 0x04318a30 - 0x04318a39
+GRAPH 0x04318b30 - 0x04318b39
+GRAPH 0x04318c30 - 0x04318c39
+GRAPH 0x04318d30 - 0x04318d39
+GRAPH 0x04318e30 - 0x04318e39
+GRAPH 0x04318f30 - 0x04318f39
+GRAPH 0x04319030 - 0x04319039
+GRAPH 0x04319130 - 0x04319139
+GRAPH 0x04319230 - 0x04319239
+GRAPH 0x04319330 - 0x04319339
+GRAPH 0x04319430 - 0x04319439
+GRAPH 0x04319530
+GRAPH 0x04319732
+GRAPH 0x04319b38 0x04319b39
+GRAPH 0x04319c30
+IDEOGRAM 0x0139ee39
+IDEOGRAM 0x0139ef30 - 0x0139ef39
+IDEOGRAM 0x0139f030 - 0x0139f039
+IDEOGRAM 0x0139f130 - 0x0139f139
+IDEOGRAM 0x0139f230 - 0x0139f239
+IDEOGRAM 0x0139f330 - 0x0139f339
+IDEOGRAM 0x0139f430 - 0x0139f439
+IDEOGRAM 0x0139f530 - 0x0139f539
+IDEOGRAM 0x0139f630 - 0x0139f639
+IDEOGRAM 0x0139f730 - 0x0139f739
+IDEOGRAM 0x0139f830 - 0x0139f839
+IDEOGRAM 0x0139f930 - 0x0139f939
+IDEOGRAM 0x0139fa30 - 0x0139fa39
+IDEOGRAM 0x0139fb30 - 0x0139fb39
+IDEOGRAM 0x0139fc30 - 0x0139fc39
+IDEOGRAM 0x0139fd30 - 0x0139fd39
+IDEOGRAM 0x0139fe30 - 0x0139fe39
+IDEOGRAM 0x02308130 - 0x02308139
+IDEOGRAM 0x02308230 - 0x02308239
+IDEOGRAM 0x02308330 - 0x02308339
+IDEOGRAM 0x02308430 - 0x02308439
+IDEOGRAM 0x02308530 - 0x02308539
+IDEOGRAM 0x02308630 - 0x02308639
+IDEOGRAM 0x02308730 - 0x02308739
+IDEOGRAM 0x02308830 - 0x02308839
+IDEOGRAM 0x02308930 - 0x02308939
+IDEOGRAM 0x02308a30 - 0x02308a39
+IDEOGRAM 0x02308b30 - 0x02308b39
+IDEOGRAM 0x02308c30 - 0x02308c39
+IDEOGRAM 0x02308d30 - 0x02308d39
+IDEOGRAM 0x02308e30 - 0x02308e39
+IDEOGRAM 0x02308f30 - 0x02308f39
+IDEOGRAM 0x02309030 - 0x02309039
+IDEOGRAM 0x02309130 - 0x02309139
+IDEOGRAM 0x02309230 - 0x02309239
+IDEOGRAM 0x02309330 - 0x02309339
+IDEOGRAM 0x02309430 - 0x02309439
+IDEOGRAM 0x02309530 - 0x02309539
+IDEOGRAM 0x02309630 - 0x02309639
+IDEOGRAM 0x02309730 - 0x02309739
+IDEOGRAM 0x02309830 - 0x02309839
+IDEOGRAM 0x02309930 - 0x02309939
+IDEOGRAM 0x02309a30 - 0x02309a39
+IDEOGRAM 0x02309b30 - 0x02309b39
+IDEOGRAM 0x02309c30 - 0x02309c39
+IDEOGRAM 0x02309d30 - 0x02309d39
+IDEOGRAM 0x02309e30 - 0x02309e39
+IDEOGRAM 0x02309f30 - 0x02309f39
+IDEOGRAM 0x0230a030 - 0x0230a039
+IDEOGRAM 0x0230a130 - 0x0230a139
+IDEOGRAM 0x0230a230 - 0x0230a239
+IDEOGRAM 0x0230a330 - 0x0230a339
+IDEOGRAM 0x0230a430 - 0x0230a439
+IDEOGRAM 0x0230a530 - 0x0230a539
+IDEOGRAM 0x0230a630 - 0x0230a639
+IDEOGRAM 0x0230a730 - 0x0230a739
+IDEOGRAM 0x0230a830 - 0x0230a839
+IDEOGRAM 0x0230a930 - 0x0230a939
+IDEOGRAM 0x0230aa30 - 0x0230aa39
+IDEOGRAM 0x0230ab30 - 0x0230ab39
+IDEOGRAM 0x0230ac30 - 0x0230ac39
+IDEOGRAM 0x0230ad30 - 0x0230ad39
+IDEOGRAM 0x0230ae30 - 0x0230ae39
+IDEOGRAM 0x0230af30 - 0x0230af39
+IDEOGRAM 0x0230b030 - 0x0230b039
+IDEOGRAM 0x0230b130 - 0x0230b139
+IDEOGRAM 0x0230b230 - 0x0230b239
+IDEOGRAM 0x0230b330 - 0x0230b339
+IDEOGRAM 0x0230b430 - 0x0230b439
+IDEOGRAM 0x0230b530 - 0x0230b539
+IDEOGRAM 0x0230b630 - 0x0230b639
+IDEOGRAM 0x0230b730 - 0x0230b739
+IDEOGRAM 0x0230b830 - 0x0230b839
+IDEOGRAM 0x0230b930 - 0x0230b939
+IDEOGRAM 0x0230ba30 - 0x0230ba39
+IDEOGRAM 0x0230bb30 - 0x0230bb39
+IDEOGRAM 0x0230bc30 - 0x0230bc39
+IDEOGRAM 0x0230bd30 - 0x0230bd39
+IDEOGRAM 0x0230be30 - 0x0230be39
+IDEOGRAM 0x0230bf30 - 0x0230bf39
+IDEOGRAM 0x0230c030 - 0x0230c039
+IDEOGRAM 0x0230c130 - 0x0230c139
+IDEOGRAM 0x0230c230 - 0x0230c239
+IDEOGRAM 0x0230c330 - 0x0230c339
+IDEOGRAM 0x0230c430 - 0x0230c439
+IDEOGRAM 0x0230c530 - 0x0230c539
+IDEOGRAM 0x0230c630 - 0x0230c639
+IDEOGRAM 0x0230c730 - 0x0230c739
+IDEOGRAM 0x0230c830 - 0x0230c839
+IDEOGRAM 0x0230c930 - 0x0230c939
+IDEOGRAM 0x0230ca30 - 0x0230ca39
+IDEOGRAM 0x0230cb30 - 0x0230cb39
+IDEOGRAM 0x0230cc30 - 0x0230cc39
+IDEOGRAM 0x0230cd30 - 0x0230cd39
+IDEOGRAM 0x0230ce30 - 0x0230ce39
+IDEOGRAM 0x0230cf30 - 0x0230cf39
+IDEOGRAM 0x0230d030 - 0x0230d039
+IDEOGRAM 0x0230d130 - 0x0230d139
+IDEOGRAM 0x0230d230 - 0x0230d239
+IDEOGRAM 0x0230d330 - 0x0230d339
+IDEOGRAM 0x0230d430 - 0x0230d439
+IDEOGRAM 0x0230d530 - 0x0230d539
+IDEOGRAM 0x0230d630 - 0x0230d639
+IDEOGRAM 0x0230d730 - 0x0230d739
+IDEOGRAM 0x0230d830 - 0x0230d839
+IDEOGRAM 0x0230d930 - 0x0230d939
+IDEOGRAM 0x0230da30 - 0x0230da39
+IDEOGRAM 0x0230db30 - 0x0230db39
+IDEOGRAM 0x0230dc30 - 0x0230dc39
+IDEOGRAM 0x0230dd30 - 0x0230dd39
+IDEOGRAM 0x0230de30 - 0x0230de39
+IDEOGRAM 0x0230df30 - 0x0230df39
+IDEOGRAM 0x0230e030 - 0x0230e039
+IDEOGRAM 0x0230e130 - 0x0230e139
+IDEOGRAM 0x0230e230 - 0x0230e239
+IDEOGRAM 0x0230e330 - 0x0230e339
+IDEOGRAM 0x0230e430 - 0x0230e439
+IDEOGRAM 0x0230e530 - 0x0230e539
+IDEOGRAM 0x0230e630 - 0x0230e639
+IDEOGRAM 0x0230e730 - 0x0230e739
+IDEOGRAM 0x0230e830 - 0x0230e839
+IDEOGRAM 0x0230e930 - 0x0230e939
+IDEOGRAM 0x0230ea30 - 0x0230ea39
+IDEOGRAM 0x0230eb30 - 0x0230eb39
+IDEOGRAM 0x0230ec30 - 0x0230ec39
+IDEOGRAM 0x0230ed30 - 0x0230ed39
+IDEOGRAM 0x0230ee30 - 0x0230ee39
+IDEOGRAM 0x0230ef30 - 0x0230ef39
+IDEOGRAM 0x0230f030 - 0x0230f039
+IDEOGRAM 0x0230f130 - 0x0230f139
+IDEOGRAM 0x0230f230 - 0x0230f239
+IDEOGRAM 0x0230f330 - 0x0230f339
+IDEOGRAM 0x0230f430 - 0x0230f439
+IDEOGRAM 0x0230f530 - 0x0230f539
+IDEOGRAM 0x0230f630 - 0x0230f639
+IDEOGRAM 0x0230f730 - 0x0230f739
+IDEOGRAM 0x0230f830 - 0x0230f839
+IDEOGRAM 0x0230f930 - 0x0230f939
+IDEOGRAM 0x0230fa30 - 0x0230fa39
+IDEOGRAM 0x0230fb30 - 0x0230fb39
+IDEOGRAM 0x0230fc30 - 0x0230fc39
+IDEOGRAM 0x0230fd30 - 0x0230fd39
+IDEOGRAM 0x0230fe30 - 0x0230fe39
+IDEOGRAM 0x02318130 - 0x02318139
+IDEOGRAM 0x02318230 - 0x02318239
+IDEOGRAM 0x02318330 - 0x02318339
+IDEOGRAM 0x02318430 - 0x02318439
+IDEOGRAM 0x02318530 - 0x02318539
+IDEOGRAM 0x02318630 - 0x02318639
+IDEOGRAM 0x02318730 - 0x02318739
+IDEOGRAM 0x02318830 - 0x02318839
+IDEOGRAM 0x02318930 - 0x02318939
+IDEOGRAM 0x02318a30 - 0x02318a39
+IDEOGRAM 0x02318b30 - 0x02318b39
+IDEOGRAM 0x02318c30 - 0x02318c39
+IDEOGRAM 0x02318d30 - 0x02318d39
+IDEOGRAM 0x02318e30 - 0x02318e39
+IDEOGRAM 0x02318f30 - 0x02318f39
+IDEOGRAM 0x02319030 - 0x02319039
+IDEOGRAM 0x02319130 - 0x02319139
+IDEOGRAM 0x02319230 - 0x02319239
+IDEOGRAM 0x02319330 - 0x02319339
+IDEOGRAM 0x02319430 - 0x02319439
+IDEOGRAM 0x02319530 - 0x02319539
+IDEOGRAM 0x02319630 - 0x02319639
+IDEOGRAM 0x02319730 - 0x02319739
+IDEOGRAM 0x02319830 - 0x02319839
+IDEOGRAM 0x02319930 - 0x02319939
+IDEOGRAM 0x02319a30 - 0x02319a39
+IDEOGRAM 0x02319b30 - 0x02319b39
+IDEOGRAM 0x02319c30 - 0x02319c39
+IDEOGRAM 0x02319d30 - 0x02319d39
+IDEOGRAM 0x02319e30 - 0x02319e39
+IDEOGRAM 0x02319f30 - 0x02319f39
+IDEOGRAM 0x0231a030 - 0x0231a039
+IDEOGRAM 0x0231a130 - 0x0231a139
+IDEOGRAM 0x0231a230 - 0x0231a239
+IDEOGRAM 0x0231a330 - 0x0231a339
+IDEOGRAM 0x0231a430 - 0x0231a439
+IDEOGRAM 0x0231a530 - 0x0231a539
+IDEOGRAM 0x0231a630 - 0x0231a639
+IDEOGRAM 0x0231a730 - 0x0231a739
+IDEOGRAM 0x0231a830 - 0x0231a839
+IDEOGRAM 0x0231a930 - 0x0231a939
+IDEOGRAM 0x0231aa30 - 0x0231aa39
+IDEOGRAM 0x0231ab30 - 0x0231ab39
+IDEOGRAM 0x0231ac30 - 0x0231ac39
+IDEOGRAM 0x0231ad30 - 0x0231ad39
+IDEOGRAM 0x0231ae30 - 0x0231ae39
+IDEOGRAM 0x0231af30 - 0x0231af39
+IDEOGRAM 0x0231b030 - 0x0231b039
+IDEOGRAM 0x0231b130 - 0x0231b139
+IDEOGRAM 0x0231b230 - 0x0231b239
+IDEOGRAM 0x0231b330 - 0x0231b339
+IDEOGRAM 0x0231b430 - 0x0231b439
+IDEOGRAM 0x0231b530 - 0x0231b539
+IDEOGRAM 0x0231b630 - 0x0231b639
+IDEOGRAM 0x0231b730 - 0x0231b739
+IDEOGRAM 0x0231b830 - 0x0231b839
+IDEOGRAM 0x0231b930 - 0x0231b939
+IDEOGRAM 0x0231ba30 - 0x0231ba39
+IDEOGRAM 0x0231bb30 - 0x0231bb39
+IDEOGRAM 0x0231bc30 - 0x0231bc39
+IDEOGRAM 0x0231bd30 - 0x0231bd39
+IDEOGRAM 0x0231be30 - 0x0231be39
+IDEOGRAM 0x0231bf30 - 0x0231bf39
+IDEOGRAM 0x0231c030 - 0x0231c039
+IDEOGRAM 0x0231c130 - 0x0231c139
+IDEOGRAM 0x0231c230 - 0x0231c239
+IDEOGRAM 0x0231c330 - 0x0231c339
+IDEOGRAM 0x0231c430 - 0x0231c439
+IDEOGRAM 0x0231c530 - 0x0231c539
+IDEOGRAM 0x0231c630 - 0x0231c639
+IDEOGRAM 0x0231c730 - 0x0231c739
+IDEOGRAM 0x0231c830 - 0x0231c839
+IDEOGRAM 0x0231c930 - 0x0231c939
+IDEOGRAM 0x0231ca30 - 0x0231ca39
+IDEOGRAM 0x0231cb30 - 0x0231cb39
+IDEOGRAM 0x0231cc30 - 0x0231cc39
+IDEOGRAM 0x0231cd30 - 0x0231cd39
+IDEOGRAM 0x0231ce30 - 0x0231ce39
+IDEOGRAM 0x0231cf30 - 0x0231cf39
+IDEOGRAM 0x0231d030 - 0x0231d039
+IDEOGRAM 0x0231d130 - 0x0231d139
+IDEOGRAM 0x0231d230 - 0x0231d239
+IDEOGRAM 0x0231d330 - 0x0231d339
+IDEOGRAM 0x0231d430 - 0x0231d439
+IDEOGRAM 0x0231d530 - 0x0231d539
+IDEOGRAM 0x0231d630 - 0x0231d639
+IDEOGRAM 0x0231d730 - 0x0231d739
+IDEOGRAM 0x0231d830 - 0x0231d839
+IDEOGRAM 0x0231d930 - 0x0231d939
+IDEOGRAM 0x0231da30 - 0x0231da39
+IDEOGRAM 0x0231db30 - 0x0231db39
+IDEOGRAM 0x0231dc30 - 0x0231dc39
+IDEOGRAM 0x0231dd30 - 0x0231dd39
+IDEOGRAM 0x0231de30 - 0x0231de39
+IDEOGRAM 0x0231df30 - 0x0231df39
+IDEOGRAM 0x0231e030 - 0x0231e039
+IDEOGRAM 0x0231e130 - 0x0231e139
+IDEOGRAM 0x0231e230 - 0x0231e239
+IDEOGRAM 0x0231e330 - 0x0231e339
+IDEOGRAM 0x0231e430 - 0x0231e439
+IDEOGRAM 0x0231e530 - 0x0231e539
+IDEOGRAM 0x0231e630 - 0x0231e639
+IDEOGRAM 0x0231e730 - 0x0231e739
+IDEOGRAM 0x0231e830 - 0x0231e839
+IDEOGRAM 0x0231e930 - 0x0231e939
+IDEOGRAM 0x0231ea30 - 0x0231ea39
+IDEOGRAM 0x0231eb30 - 0x0231eb39
+IDEOGRAM 0x0231ec30 - 0x0231ec39
+IDEOGRAM 0x0231ed30 - 0x0231ed39
+IDEOGRAM 0x0231ee30 - 0x0231ee39
+IDEOGRAM 0x0231ef30 - 0x0231ef39
+IDEOGRAM 0x0231f030 - 0x0231f039
+IDEOGRAM 0x0231f130 - 0x0231f139
+IDEOGRAM 0x0231f230 - 0x0231f239
+IDEOGRAM 0x0231f330 - 0x0231f339
+IDEOGRAM 0x0231f430 - 0x0231f439
+IDEOGRAM 0x0231f530 - 0x0231f539
+IDEOGRAM 0x0231f630 - 0x0231f639
+IDEOGRAM 0x0231f730 - 0x0231f739
+IDEOGRAM 0x0231f830 - 0x0231f839
+IDEOGRAM 0x0231f930 - 0x0231f939
+IDEOGRAM 0x0231fa30 - 0x0231fa39
+IDEOGRAM 0x0231fb30 - 0x0231fb39
+IDEOGRAM 0x0231fc30 - 0x0231fc39
+IDEOGRAM 0x0231fd30 - 0x0231fd39
+IDEOGRAM 0x0231fe30 - 0x0231fe39
+IDEOGRAM 0x02328130 - 0x02328139
+IDEOGRAM 0x02328230 - 0x02328239
+IDEOGRAM 0x02328330 - 0x02328339
+IDEOGRAM 0x02328430 - 0x02328439
+IDEOGRAM 0x02328530 - 0x02328539
+IDEOGRAM 0x02328630 - 0x02328639
+IDEOGRAM 0x02328730 - 0x02328739
+IDEOGRAM 0x02328830 - 0x02328839
+IDEOGRAM 0x02328930 - 0x02328939
+IDEOGRAM 0x02328a30 - 0x02328a39
+IDEOGRAM 0x02328b30 - 0x02328b39
+IDEOGRAM 0x02328c30 - 0x02328c39
+IDEOGRAM 0x02328d30 - 0x02328d39
+IDEOGRAM 0x02328e30 - 0x02328e39
+IDEOGRAM 0x02328f30 - 0x02328f39
+IDEOGRAM 0x02329030 - 0x02329039
+IDEOGRAM 0x02329130 - 0x02329139
+IDEOGRAM 0x02329230 - 0x02329239
+IDEOGRAM 0x02329330 - 0x02329339
+IDEOGRAM 0x02329430 - 0x02329439
+IDEOGRAM 0x02329530 - 0x02329539
+IDEOGRAM 0x02329630 - 0x02329639
+IDEOGRAM 0x02329730 - 0x02329739
+IDEOGRAM 0x02329830 - 0x02329839
+IDEOGRAM 0x02329930 - 0x02329939
+IDEOGRAM 0x02329a30 - 0x02329a39
+IDEOGRAM 0x02329b30 - 0x02329b39
+IDEOGRAM 0x02329c30 - 0x02329c39
+IDEOGRAM 0x02329d30 - 0x02329d39
+IDEOGRAM 0x02329e30 - 0x02329e39
+IDEOGRAM 0x02329f30 - 0x02329f39
+IDEOGRAM 0x0232a030 - 0x0232a039
+IDEOGRAM 0x0232a130 - 0x0232a139
+IDEOGRAM 0x0232a230 - 0x0232a239
+IDEOGRAM 0x0232a330 - 0x0232a339
+IDEOGRAM 0x0232a430 - 0x0232a439
+IDEOGRAM 0x0232a530 - 0x0232a539
+IDEOGRAM 0x0232a630 - 0x0232a639
+IDEOGRAM 0x0232a730 - 0x0232a739
+IDEOGRAM 0x0232a830 - 0x0232a839
+IDEOGRAM 0x0232a930 - 0x0232a939
+IDEOGRAM 0x0232aa30 - 0x0232aa39
+IDEOGRAM 0x0232ab30 - 0x0232ab39
+IDEOGRAM 0x0232ac30 - 0x0232ac39
+IDEOGRAM 0x0232ad30 - 0x0232ad39
+IDEOGRAM 0x0232ae30 - 0x0232ae39
+IDEOGRAM 0x0232af30 - 0x0232af39
+IDEOGRAM 0x0232b030 - 0x0232b039
+IDEOGRAM 0x0232b130 - 0x0232b139
+IDEOGRAM 0x0232b230 - 0x0232b239
+IDEOGRAM 0x0232b330 - 0x0232b339
+IDEOGRAM 0x0232b430 - 0x0232b439
+IDEOGRAM 0x0232b530 - 0x0232b539
+IDEOGRAM 0x0232b630 - 0x0232b639
+IDEOGRAM 0x0232b730 - 0x0232b739
+IDEOGRAM 0x0232b830 - 0x0232b839
+IDEOGRAM 0x0232b930 - 0x0232b939
+IDEOGRAM 0x0232ba30 - 0x0232ba39
+IDEOGRAM 0x0232bb30 - 0x0232bb39
+IDEOGRAM 0x0232bc30 - 0x0232bc39
+IDEOGRAM 0x0232bd30 - 0x0232bd39
+IDEOGRAM 0x0232be30 - 0x0232be39
+IDEOGRAM 0x0232bf30 - 0x0232bf39
+IDEOGRAM 0x0232c030 - 0x0232c039
+IDEOGRAM 0x0232c130 - 0x0232c139
+IDEOGRAM 0x0232c230 - 0x0232c239
+IDEOGRAM 0x0232c330 - 0x0232c339
+IDEOGRAM 0x0232c430 - 0x0232c439
+IDEOGRAM 0x0232c530 - 0x0232c539
+IDEOGRAM 0x0232c630 - 0x0232c639
+IDEOGRAM 0x0232c730 - 0x0232c739
+IDEOGRAM 0x0232c830 - 0x0232c839
+IDEOGRAM 0x0232c930 - 0x0232c939
+IDEOGRAM 0x0232ca30 - 0x0232ca39
+IDEOGRAM 0x0232cb30 - 0x0232cb39
+IDEOGRAM 0x0232cc30 - 0x0232cc39
+IDEOGRAM 0x0232cd30 - 0x0232cd39
+IDEOGRAM 0x0232ce30 - 0x0232ce39
+IDEOGRAM 0x0232cf30 - 0x0232cf39
+IDEOGRAM 0x0232d030 - 0x0232d039
+IDEOGRAM 0x0232d130 - 0x0232d139
+IDEOGRAM 0x0232d230 - 0x0232d239
+IDEOGRAM 0x0232d330 - 0x0232d339
+IDEOGRAM 0x0232d430 - 0x0232d439
+IDEOGRAM 0x0232d530 - 0x0232d539
+IDEOGRAM 0x0232d630 - 0x0232d639
+IDEOGRAM 0x0232d730 - 0x0232d739
+IDEOGRAM 0x0232d830 - 0x0232d839
+IDEOGRAM 0x0232d930 - 0x0232d939
+IDEOGRAM 0x0232da30 - 0x0232da39
+IDEOGRAM 0x0232db30 - 0x0232db39
+IDEOGRAM 0x0232dc30 - 0x0232dc39
+IDEOGRAM 0x0232dd30 - 0x0232dd39
+IDEOGRAM 0x0232de30 - 0x0232de39
+IDEOGRAM 0x0232df30 - 0x0232df39
+IDEOGRAM 0x0232e030 - 0x0232e039
+IDEOGRAM 0x0232e130 - 0x0232e139
+IDEOGRAM 0x0232e230 - 0x0232e239
+IDEOGRAM 0x0232e330 - 0x0232e339
+IDEOGRAM 0x0232e430 - 0x0232e439
+IDEOGRAM 0x0232e530 - 0x0232e539
+IDEOGRAM 0x0232e630 - 0x0232e639
+IDEOGRAM 0x0232e730 - 0x0232e739
+IDEOGRAM 0x0232e830 - 0x0232e839
+IDEOGRAM 0x0232e930 - 0x0232e939
+IDEOGRAM 0x0232ea30 - 0x0232ea39
+IDEOGRAM 0x0232eb30 - 0x0232eb39
+IDEOGRAM 0x0232ec30 - 0x0232ec39
+IDEOGRAM 0x0232ed30 - 0x0232ed39
+IDEOGRAM 0x0232ee30 - 0x0232ee39
+IDEOGRAM 0x0232ef30 - 0x0232ef39
+IDEOGRAM 0x0232f030 - 0x0232f039
+IDEOGRAM 0x0232f130 - 0x0232f139
+IDEOGRAM 0x0232f230 - 0x0232f239
+IDEOGRAM 0x0232f330 - 0x0232f339
+IDEOGRAM 0x0232f430 - 0x0232f439
+IDEOGRAM 0x0232f530 - 0x0232f539
+IDEOGRAM 0x0232f630 - 0x0232f639
+IDEOGRAM 0x0232f730 - 0x0232f739
+IDEOGRAM 0x0232f830 - 0x0232f839
+IDEOGRAM 0x0232f930 - 0x0232f939
+IDEOGRAM 0x0232fa30 - 0x0232fa39
+IDEOGRAM 0x0232fb30 - 0x0232fb39
+IDEOGRAM 0x0232fc30 - 0x0232fc39
+IDEOGRAM 0x0232fd30 - 0x0232fd39
+IDEOGRAM 0x0232fe30 - 0x0232fe39
+IDEOGRAM 0x02338130 - 0x02338139
+IDEOGRAM 0x02338230 - 0x02338239
+IDEOGRAM 0x02338330 - 0x02338339
+IDEOGRAM 0x02338430 - 0x02338439
+IDEOGRAM 0x02338530 - 0x02338539
+IDEOGRAM 0x02338630 - 0x02338639
+IDEOGRAM 0x02338730 - 0x02338739
+IDEOGRAM 0x02338830 - 0x02338839
+IDEOGRAM 0x02338930 - 0x02338939
+IDEOGRAM 0x02338a30 - 0x02338a39
+IDEOGRAM 0x02338b30 - 0x02338b39
+IDEOGRAM 0x02338c30 - 0x02338c39
+IDEOGRAM 0x02338d30 - 0x02338d39
+IDEOGRAM 0x02338e30 - 0x02338e39
+IDEOGRAM 0x02338f30 - 0x02338f39
+IDEOGRAM 0x02339030 - 0x02339039
+IDEOGRAM 0x02339130 - 0x02339139
+IDEOGRAM 0x02339230 - 0x02339239
+IDEOGRAM 0x02339330 - 0x02339339
+IDEOGRAM 0x02339430 - 0x02339439
+IDEOGRAM 0x02339530 - 0x02339539
+IDEOGRAM 0x02339630 - 0x02339639
+IDEOGRAM 0x02339730 - 0x02339739
+IDEOGRAM 0x02339830 - 0x02339839
+IDEOGRAM 0x02339930 - 0x02339939
+IDEOGRAM 0x02339a30 - 0x02339a39
+IDEOGRAM 0x02339b30 - 0x02339b39
+IDEOGRAM 0x02339c30 - 0x02339c39
+IDEOGRAM 0x02339d30 - 0x02339d39
+IDEOGRAM 0x02339e30 - 0x02339e39
+IDEOGRAM 0x02339f30 - 0x02339f39
+IDEOGRAM 0x0233a030 - 0x0233a039
+IDEOGRAM 0x0233a130 - 0x0233a139
+IDEOGRAM 0x0233a230 - 0x0233a239
+IDEOGRAM 0x0233a330 - 0x0233a339
+IDEOGRAM 0x0233a430 - 0x0233a439
+IDEOGRAM 0x0233a530 - 0x0233a539
+IDEOGRAM 0x0233a630 - 0x0233a639
+IDEOGRAM 0x0233a730 - 0x0233a739
+IDEOGRAM 0x0233a830 - 0x0233a839
+IDEOGRAM 0x0233a930 - 0x0233a939
+IDEOGRAM 0x0233aa30 - 0x0233aa39
+IDEOGRAM 0x0233ab30 - 0x0233ab39
+IDEOGRAM 0x0233ac30 - 0x0233ac39
+IDEOGRAM 0x0233ad30 - 0x0233ad39
+IDEOGRAM 0x0233ae30 - 0x0233ae39
+IDEOGRAM 0x0233af30 - 0x0233af39
+IDEOGRAM 0x0233b030 - 0x0233b039
+IDEOGRAM 0x0233b130 - 0x0233b139
+IDEOGRAM 0x0233b230 - 0x0233b239
+IDEOGRAM 0x0233b330 - 0x0233b339
+IDEOGRAM 0x0233b430 - 0x0233b439
+IDEOGRAM 0x0233b530 - 0x0233b539
+IDEOGRAM 0x0233b630 - 0x0233b639
+IDEOGRAM 0x0233b730 - 0x0233b739
+IDEOGRAM 0x0233b830 - 0x0233b839
+IDEOGRAM 0x0233b930 - 0x0233b939
+IDEOGRAM 0x0233ba30 - 0x0233ba39
+IDEOGRAM 0x0233bb30 - 0x0233bb39
+IDEOGRAM 0x0233bc30 - 0x0233bc39
+IDEOGRAM 0x0233bd30 - 0x0233bd39
+IDEOGRAM 0x0233be30 - 0x0233be39
+IDEOGRAM 0x0233bf30 - 0x0233bf39
+IDEOGRAM 0x0233c030 - 0x0233c039
+IDEOGRAM 0x0233c130 - 0x0233c139
+IDEOGRAM 0x0233c230 - 0x0233c239
+IDEOGRAM 0x0233c330 - 0x0233c339
+IDEOGRAM 0x0233c430 - 0x0233c439
+IDEOGRAM 0x0233c530 - 0x0233c539
+IDEOGRAM 0x0233c630 - 0x0233c639
+IDEOGRAM 0x0233c730 - 0x0233c739
+IDEOGRAM 0x0233c830 - 0x0233c839
+IDEOGRAM 0x0233c930 - 0x0233c939
+IDEOGRAM 0x0233ca30 - 0x0233ca39
+IDEOGRAM 0x0233cb30 - 0x0233cb39
+IDEOGRAM 0x0233cc30 - 0x0233cc39
+IDEOGRAM 0x0233cd30 - 0x0233cd39
+IDEOGRAM 0x0233ce30 - 0x0233ce39
+IDEOGRAM 0x0233cf30 - 0x0233cf39
+IDEOGRAM 0x0233d030 - 0x0233d039
+IDEOGRAM 0x0233d130 - 0x0233d139
+IDEOGRAM 0x0233d230 - 0x0233d239
+IDEOGRAM 0x0233d330 - 0x0233d339
+IDEOGRAM 0x0233d430 - 0x0233d439
+IDEOGRAM 0x0233d530 - 0x0233d539
+IDEOGRAM 0x0233d630 - 0x0233d639
+IDEOGRAM 0x0233d730 - 0x0233d739
+IDEOGRAM 0x0233d830 - 0x0233d839
+IDEOGRAM 0x0233d930 - 0x0233d939
+IDEOGRAM 0x0233da30 - 0x0233da39
+IDEOGRAM 0x0233db30 - 0x0233db39
+IDEOGRAM 0x0233dc30 - 0x0233dc39
+IDEOGRAM 0x0233dd30 - 0x0233dd39
+IDEOGRAM 0x0233de30 - 0x0233de39
+IDEOGRAM 0x0233df30 - 0x0233df39
+IDEOGRAM 0x0233e030 - 0x0233e039
+IDEOGRAM 0x0233e130 - 0x0233e139
+IDEOGRAM 0x0233e230 - 0x0233e239
+IDEOGRAM 0x0233e330 - 0x0233e339
+IDEOGRAM 0x0233e430 - 0x0233e439
+IDEOGRAM 0x0233e530 - 0x0233e539
+IDEOGRAM 0x0233e630 - 0x0233e639
+IDEOGRAM 0x0233e730 - 0x0233e739
+IDEOGRAM 0x0233e830 - 0x0233e839
+IDEOGRAM 0x0233e930 - 0x0233e939
+IDEOGRAM 0x0233ea30 - 0x0233ea39
+IDEOGRAM 0x0233eb30 - 0x0233eb39
+IDEOGRAM 0x0233ec30 - 0x0233ec39
+IDEOGRAM 0x0233ed30 - 0x0233ed39
+IDEOGRAM 0x0233ee30 - 0x0233ee39
+IDEOGRAM 0x0233ef30 - 0x0233ef39
+IDEOGRAM 0x0233f030 - 0x0233f039
+IDEOGRAM 0x0233f130 - 0x0233f139
+IDEOGRAM 0x0233f230 - 0x0233f239
+IDEOGRAM 0x0233f330 - 0x0233f339
+IDEOGRAM 0x0233f430 - 0x0233f439
+IDEOGRAM 0x0233f530 - 0x0233f539
+IDEOGRAM 0x0233f630 - 0x0233f639
+IDEOGRAM 0x0233f730 - 0x0233f739
+IDEOGRAM 0x0233f830 - 0x0233f839
+IDEOGRAM 0x0233f930 - 0x0233f939
+IDEOGRAM 0x0233fa30 - 0x0233fa39
+IDEOGRAM 0x0233fb30 - 0x0233fb39
+IDEOGRAM 0x0233fc30 - 0x0233fc39
+IDEOGRAM 0x0233fd30 - 0x0233fd39
+IDEOGRAM 0x0233fe30 - 0x0233fe39
+IDEOGRAM 0x02348130 - 0x02348139
+IDEOGRAM 0x02348230 - 0x02348239
+IDEOGRAM 0x02348330 - 0x02348339
+IDEOGRAM 0x02348430 - 0x02348439
+IDEOGRAM 0x02348530 - 0x02348539
+IDEOGRAM 0x02348630 - 0x02348639
+IDEOGRAM 0x02348730 - 0x02348739
+IDEOGRAM 0x02348830 - 0x02348839
+IDEOGRAM 0x02348930 - 0x02348939
+IDEOGRAM 0x02348a30 - 0x02348a39
+IDEOGRAM 0x02348b30 - 0x02348b39
+IDEOGRAM 0x02348c30 - 0x02348c39
+IDEOGRAM 0x02348d30 - 0x02348d39
+IDEOGRAM 0x02348e30 - 0x02348e39
+IDEOGRAM 0x02348f30 - 0x02348f39
+IDEOGRAM 0x02349030 - 0x02349039
+IDEOGRAM 0x02349130 - 0x02349139
+IDEOGRAM 0x02349230 - 0x02349239
+IDEOGRAM 0x02349330 - 0x02349339
+IDEOGRAM 0x02349430 - 0x02349439
+IDEOGRAM 0x02349530 - 0x02349539
+IDEOGRAM 0x02349630 - 0x02349639
+IDEOGRAM 0x02349730 - 0x02349739
+IDEOGRAM 0x02349830 - 0x02349839
+IDEOGRAM 0x02349930 - 0x02349939
+IDEOGRAM 0x02349a30 - 0x02349a39
+IDEOGRAM 0x02349b30 - 0x02349b39
+IDEOGRAM 0x02349c30 - 0x02349c39
+IDEOGRAM 0x02349d30 - 0x02349d39
+IDEOGRAM 0x02349e30 - 0x02349e39
+IDEOGRAM 0x02349f30 - 0x02349f39
+IDEOGRAM 0x0234a030 - 0x0234a039
+IDEOGRAM 0x0234a130 - 0x0234a139
+IDEOGRAM 0x0234a230 - 0x0234a239
+IDEOGRAM 0x0234a330 - 0x0234a339
+IDEOGRAM 0x0234a430 - 0x0234a439
+IDEOGRAM 0x0234a530 - 0x0234a539
+IDEOGRAM 0x0234a630 - 0x0234a639
+IDEOGRAM 0x0234a730 - 0x0234a739
+IDEOGRAM 0x0234a830 - 0x0234a839
+IDEOGRAM 0x0234a930 - 0x0234a939
+IDEOGRAM 0x0234aa30 - 0x0234aa39
+IDEOGRAM 0x0234ab30 - 0x0234ab39
+IDEOGRAM 0x0234ac30 - 0x0234ac39
+IDEOGRAM 0x0234ad30 - 0x0234ad39
+IDEOGRAM 0x0234ae30 - 0x0234ae39
+IDEOGRAM 0x0234af30 - 0x0234af39
+IDEOGRAM 0x0234b030 - 0x0234b039
+IDEOGRAM 0x0234b130 - 0x0234b139
+IDEOGRAM 0x0234b230 - 0x0234b239
+IDEOGRAM 0x0234b330 - 0x0234b339
+IDEOGRAM 0x0234b430 - 0x0234b439
+IDEOGRAM 0x0234b530 - 0x0234b539
+IDEOGRAM 0x0234b630 - 0x0234b639
+IDEOGRAM 0x0234b730 - 0x0234b739
+IDEOGRAM 0x0234b830 - 0x0234b839
+IDEOGRAM 0x0234b930 - 0x0234b939
+IDEOGRAM 0x0234ba30 - 0x0234ba39
+IDEOGRAM 0x0234bb30 - 0x0234bb39
+IDEOGRAM 0x0234bc30 - 0x0234bc39
+IDEOGRAM 0x0234bd30 - 0x0234bd39
+IDEOGRAM 0x0234be30 - 0x0234be39
+IDEOGRAM 0x0234bf30 - 0x0234bf39
+IDEOGRAM 0x0234c030 - 0x0234c039
+IDEOGRAM 0x0234c130 - 0x0234c139
+IDEOGRAM 0x0234c230 - 0x0234c239
+IDEOGRAM 0x0234c330 - 0x0234c339
+IDEOGRAM 0x0234c430 - 0x0234c439
+IDEOGRAM 0x0234c530 - 0x0234c539
+IDEOGRAM 0x0234c630 - 0x0234c639
+IDEOGRAM 0x0234c730 - 0x0234c739
+IDEOGRAM 0x0234c830 - 0x0234c839
+IDEOGRAM 0x0234c930 - 0x0234c939
+IDEOGRAM 0x0234ca30 - 0x0234ca39
+IDEOGRAM 0x0234cb30 - 0x0234cb39
+IDEOGRAM 0x0234cc30 - 0x0234cc39
+IDEOGRAM 0x0234cd30 - 0x0234cd39
+IDEOGRAM 0x0234ce30 - 0x0234ce39
+IDEOGRAM 0x0234cf30 - 0x0234cf39
+IDEOGRAM 0x0234d030 - 0x0234d039
+IDEOGRAM 0x0234d130 - 0x0234d139
+IDEOGRAM 0x0234d230 - 0x0234d239
+IDEOGRAM 0x0234d330 - 0x0234d339
+IDEOGRAM 0x0234d430 - 0x0234d439
+IDEOGRAM 0x0234d530 - 0x0234d539
+IDEOGRAM 0x0234d630 - 0x0234d639
+IDEOGRAM 0x0234d730 - 0x0234d739
+IDEOGRAM 0x0234d830 - 0x0234d839
+IDEOGRAM 0x0234d930 - 0x0234d939
+IDEOGRAM 0x0234da30 - 0x0234da39
+IDEOGRAM 0x0234db30 - 0x0234db39
+IDEOGRAM 0x0234dc30 - 0x0234dc39
+IDEOGRAM 0x0234dd30 - 0x0234dd39
+IDEOGRAM 0x0234de30 - 0x0234de39
+IDEOGRAM 0x0234df30 - 0x0234df39
+IDEOGRAM 0x0234e030 - 0x0234e039
+IDEOGRAM 0x0234e130 - 0x0234e139
+IDEOGRAM 0x0234e230 - 0x0234e239
+IDEOGRAM 0x0234e330 - 0x0234e339
+IDEOGRAM 0x0234e430 - 0x0234e439
+IDEOGRAM 0x0234e530 - 0x0234e539
+IDEOGRAM 0x0234e630 - 0x0234e639
+IDEOGRAM 0x0234e730 - 0x0234e739
+IDEOGRAM 0x0234e830 - 0x0234e839
+IDEOGRAM 0x0234e930 - 0x0234e939
+IDEOGRAM 0x0234ea30 - 0x0234ea39
+IDEOGRAM 0x0234eb30 - 0x0234eb39
+IDEOGRAM 0x0234ec30 - 0x0234ec39
+IDEOGRAM 0x0234ed30 - 0x0234ed39
+IDEOGRAM 0x0234ee30 - 0x0234ee39
+IDEOGRAM 0x0234ef30 - 0x0234ef39
+IDEOGRAM 0x0234f030 - 0x0234f039
+IDEOGRAM 0x0234f130 - 0x0234f139
+IDEOGRAM 0x0234f230 - 0x0234f239
+IDEOGRAM 0x0234f330 - 0x0234f339
+IDEOGRAM 0x0234f430 - 0x0234f439
+IDEOGRAM 0x0234f530 - 0x0234f539
+IDEOGRAM 0x0234f630 - 0x0234f639
+IDEOGRAM 0x0234f730 - 0x0234f739
+IDEOGRAM 0x0234f830 - 0x0234f839
+IDEOGRAM 0x0234f930 - 0x0234f939
+IDEOGRAM 0x0234fa30 - 0x0234fa39
+IDEOGRAM 0x0234fb30 - 0x0234fb39
+IDEOGRAM 0x0234fc30 - 0x0234fc39
+IDEOGRAM 0x0234fd30 - 0x0234fd39
+IDEOGRAM 0x0234fe30 - 0x0234fe39
+IDEOGRAM 0x02358130 - 0x02358139
+IDEOGRAM 0x02358230 - 0x02358239
+IDEOGRAM 0x02358330 - 0x02358339
+IDEOGRAM 0x02358430 - 0x02358439
+IDEOGRAM 0x02358530 - 0x02358539
+IDEOGRAM 0x02358630 - 0x02358639
+IDEOGRAM 0x02358730 - 0x02358738
+IDEOGRAM 0x04308131 - 0x04308139
+IDEOGRAM 0x04308230 - 0x04308239
+IDEOGRAM 0x04308330 - 0x04308339
+IDEOGRAM 0x04308430 - 0x04308439
+IDEOGRAM 0x04308530 - 0x04308539
+IDEOGRAM 0x04308630 - 0x04308639
+IDEOGRAM 0x04308730 - 0x04308739
+IDEOGRAM 0x04308830 - 0x04308839
+IDEOGRAM 0x04308930 - 0x04308939
+IDEOGRAM 0x04308a30 - 0x04308a39
+IDEOGRAM 0x04308b30 - 0x04308b39
+IDEOGRAM 0x04308c30 - 0x04308c39
+IDEOGRAM 0x04308d30 - 0x04308d39
+IDEOGRAM 0x04308e30 - 0x04308e39
+IDEOGRAM 0x04308f30 - 0x04308f39
+IDEOGRAM 0x04309030 - 0x04309039
+IDEOGRAM 0x04309130 - 0x04309139
+IDEOGRAM 0x04309230 - 0x04309239
+IDEOGRAM 0x04309330 - 0x04309339
+IDEOGRAM 0x04309430 - 0x04309439
+IDEOGRAM 0x04309530 - 0x04309539
+IDEOGRAM 0x04309630 - 0x04309639
+IDEOGRAM 0x04309730 - 0x04309739
+IDEOGRAM 0x04309830 - 0x04309839
+IDEOGRAM 0x04309930 - 0x04309939
+IDEOGRAM 0x04309a30 - 0x04309a39
+IDEOGRAM 0x04309b30 - 0x04309b39
+IDEOGRAM 0x04309c30 - 0x04309c39
+IDEOGRAM 0x04309d30 0x04309d31 0x04309d34 - 0x04309d39
+IDEOGRAM 0x04309e30 - 0x04309e39
+IDEOGRAM 0x04309f30 - 0x04309f39
+IDEOGRAM 0x0430a030 - 0x0430a039
+IDEOGRAM 0x0430a130 - 0x0430a139
+IDEOGRAM 0x0430a230 - 0x0430a239
+IDEOGRAM 0x0430a330 - 0x0430a332
+LOWER 0x01308439
+LOWER 0x01308538
+LOWER 0x01308632
+LOWER 0x01308938 0x01308939
+LOWER 0x01308a30 - 0x01308a39
+LOWER 0x01308b30 - 0x01308b37
+LOWER 0x01308c30 0x01308c32 0x01308c34 0x01308c36 0x01308c38
+LOWER 0x01308d30 0x01308d32 0x01308d34 0x01308d37 0x01308d39
+LOWER 0x01308e31 0x01308e34 0x01308e36 0x01308e38
+LOWER 0x01308f30 0x01308f32 0x01308f34 0x01308f36 0x01308f39
+LOWER 0x01309031 0x01309033 0x01309035 0x01309037 0x01309039
+LOWER 0x01309130 0x01309132 0x01309134 0x01309136 0x01309138
+LOWER 0x01309230 0x01309233 0x01309235 0x01309237
+LOWER 0x01309330 0x01309332 0x01309334 0x01309336 0x01309338
+LOWER 0x01309430 0x01309432 0x01309434 0x01309436 0x01309438
+LOWER 0x01309530 0x01309532 0x01309534 0x01309536 0x01309539
+LOWER 0x01309631 0x01309633 0x01309635 0x01309637 0x01309639
+LOWER 0x01309732 0x01309734 0x01309736 - 0x01309738
+LOWER 0x01309831 0x01309833 0x01309836
+LOWER 0x01309930 0x01309931 0x01309936 0x01309939
+LOWER 0x01309a33 - 0x01309a35 0x01309a38
+LOWER 0x01309b31 0x01309b33 0x01309b35 0x01309b38
+LOWER 0x01309c30 0x01309c31 0x01309c33 0x01309c36
+LOWER 0x01309d30 0x01309d32 0x01309d35 0x01309d36 0x01309d39
+LOWER 0x01309e30 0x01309e31 0x01309e38
+LOWER 0x01309f31 0x01309f34
+LOWER 0x0130a033 0x0130a035 0x0130a037 0x0130a039
+LOWER 0x0130a131 0x0130a133 0x0130a135 0x0130a137 0x0130a139
+LOWER 0x0130a231 0x0130a232 0x0130a235 0x0130a237
+LOWER 0x0130a332 0x0130a334 0x0130a336 0x0130a338
+LOWER 0x0130a430 0x0130a432 0x0130a434 0x0130a436 0x0130a438
+LOWER 0x0130a530 0x0130a532 0x0130a534 0x0130a536 0x0130a538
+LOWER 0x0130a630 0x0130a632 0x0130a634 0x0130a636 0x0130a638
+LOWER 0x0130a732 0x0130a734 0x0130a736 0x0130a738
+LOWER 0x0130a830 0x0130a832 0x0130a834 0x0130a836 0x0130a838
+LOWER 0x0130ab37 - 0x0130ab39
+LOWER 0x0130ac30 - 0x0130ac39
+LOWER 0x0130ad30 - 0x0130ad39
+LOWER 0x0130ae30 - 0x0130ae39
+LOWER 0x0130af30 - 0x0130af39
+LOWER 0x0130b030 - 0x0130b039
+LOWER 0x0130b130 - 0x0130b139
+LOWER 0x0130b230 - 0x0130b239
+LOWER 0x0130b330 - 0x0130b339
+LOWER 0x0130b430 - 0x0130b438
+LOWER 0x0130cb30 0x0130cb34 - 0x0130cb39
+LOWER 0x0130cc30 - 0x0130cc34 0x0130cc36 0x0130cc37
+LOWER 0x0130cd31 - 0x0130cd33 0x0130cd35 0x0130cd37 0x0130cd39
+LOWER 0x0130ce31 0x0130ce33 0x0130ce35 0x0130ce37 0x0130ce39
+LOWER 0x0130cf31 0x0130cf33 0x0130cf35 0x0130cf37 - 0x0130cf39
+LOWER 0x0130d030 0x0130d031 0x0130d033
+LOWER 0x0130d239
+LOWER 0x0130d330 - 0x0130d339
+LOWER 0x0130d430 - 0x0130d433 0x0130d435 0x0130d437 0x0130d439
+LOWER 0x0130d531 0x0130d533 0x0130d535 0x0130d537 0x0130d539
+LOWER 0x0130d631 0x0130d633 0x0130d635 0x0130d637 0x0130d639
+LOWER 0x0130d731 0x0130d733 0x0130d735 0x0130d737
+LOWER 0x0130d837 0x0130d839
+LOWER 0x0130d931 0x0130d933 0x0130d935 0x0130d937 0x0130d939
+LOWER 0x0130da31 0x0130da33 0x0130da35 0x0130da37 0x0130da39
+LOWER 0x0130db31 0x0130db33 0x0130db35 0x0130db37 0x0130db39
+LOWER 0x0130dc31 0x0130dc33 0x0130dc35 0x0130dc37 0x0130dc39
+LOWER 0x0130dd31 0x0130dd33 0x0130dd35 0x0130dd37 0x0130dd39
+LOWER 0x0130de32 0x0130de34 0x0130de36 0x0130de38
+LOWER 0x0130df30 0x0130df32 0x0130df34 0x0130df37 0x0130df39
+LOWER 0x0130e031 0x0130e033 0x0130e035 0x0130e037 0x0130e039
+LOWER 0x0130e131 0x0130e133 0x0130e135 0x0130e137 0x0130e139
+LOWER 0x0130e231 0x0130e233 0x0130e235 0x0130e237 0x0130e239
+LOWER 0x0130e331 0x0130e333 0x0130e337
+LOWER 0x0130e435 0x0130e437 0x0130e439
+LOWER 0x0130e531 0x0130e533 0x0130e535 0x0130e537 0x0130e539
+LOWER 0x0130ee31 - 0x0130ee39
+LOWER 0x0130ef30 - 0x0130ef39
+LOWER 0x0130f030 - 0x0130f039
+LOWER 0x0130f130 - 0x0130f139
+LOWER 0x0135ee35 0x0135ee37 0x0135ee39
+LOWER 0x0135ef31 0x0135ef33 0x0135ef35 0x0135ef37 0x0135ef39
+LOWER 0x0135f031 0x0135f033 0x0135f035 0x0135f037 0x0135f039
+LOWER 0x0135f131 0x0135f133 0x0135f135 0x0135f137 0x0135f139
+LOWER 0x0135f231 0x0135f233 0x0135f235 0x0135f237 0x0135f239
+LOWER 0x0135f331 0x0135f333 0x0135f335 0x0135f337 0x0135f339
+LOWER 0x0135f431 0x0135f433 0x0135f435 0x0135f437 0x0135f439
+LOWER 0x0135f531 0x0135f533 0x0135f535 0x0135f537 0x0135f539
+LOWER 0x0135f631 0x0135f633 0x0135f635 0x0135f637 0x0135f639
+LOWER 0x0135f731 0x0135f733 0x0135f735 0x0135f737 0x0135f739
+LOWER 0x0135f831 0x0135f833 0x0135f835 0x0135f837 0x0135f839
+LOWER 0x0135f931 0x0135f933 0x0135f935 0x0135f937 0x0135f939
+LOWER 0x0135fa31 0x0135fa33 0x0135fa35 0x0135fa37 0x0135fa39
+LOWER 0x0135fb31 0x0135fb33 0x0135fb35 0x0135fb37 0x0135fb39
+LOWER 0x0135fc31 0x0135fc33 0x0135fc35 0x0135fc37 0x0135fc39
+LOWER 0x0135fd31 0x0135fd33 - 0x0135fd39
+LOWER 0x0135fe35 0x0135fe37 0x0135fe39
+LOWER 0x01368131 0x01368133 0x01368135 0x01368137 0x01368139
+LOWER 0x01368231 0x01368233 0x01368235 0x01368237 0x01368239
+LOWER 0x01368331 0x01368333 0x01368335 0x01368337 0x01368339
+LOWER 0x01368431 0x01368433 0x01368435 0x01368437 0x01368439
+LOWER 0x01368531 0x01368533 0x01368535 0x01368537 0x01368539
+LOWER 0x01368631 0x01368633 0x01368635 0x01368637 0x01368639
+LOWER 0x01368731 0x01368733 0x01368735 0x01368737 0x01368739
+LOWER 0x01368831 0x01368833 0x01368835 0x01368837 0x01368839
+LOWER 0x01368931 0x01368933
+LOWER 0x01368a30 - 0x01368a37
+LOWER 0x01368b36 - 0x01368b39
+LOWER 0x01368c30 0x01368c31
+LOWER 0x01368d32 - 0x01368d39
+LOWER 0x01368e38 0x01368e39
+LOWER 0x01368f30 - 0x01368f35
+LOWER 0x01369034 - 0x01369039
+LOWER 0x01369230 - 0x01369237
+LOWER 0x01369336 - 0x01369339
+LOWER 0x01369430 - 0x01369433
+LOWER 0x01369532 - 0x01369539
+LOWER 0x01369630 - 0x01369635 0x01369638 0x01369639
+LOWER 0x01369730 - 0x01369735
+LOWER 0x01369834 - 0x01369839
+LOWER 0x01369930 0x01369931
+LOWER 0x01369a30 - 0x01369a37
+LOWER 0x01369b36 - 0x01369b39
+LOWER 0x01369c30 0x01369c32 0x01369c33
+LOWER 0x01369d30 0x01369d34 - 0x01369d36 0x01369d38 0x01369d39
+LOWER 0x01369e38 0x01369e39
+LOWER 0x01369f30 0x01369f31 0x01369f34 0x01369f35
+LOWER 0x0136a034 - 0x0136a039
+LOWER 0x0136a130 0x0136a131
+LOWER 0x0136a232 - 0x0136a234 0x0136a236 0x0136a237
+LOWER 0x0136ad33
+LOWER 0x0136ae37
+LOWER 0x0136bc32 0x0136bc36 0x0136bc37
+LOWER 0x0136bd31
+LOWER 0x0136bf37
+LOWER 0x0136c032 0x0136c037
+LOWER 0x0136c131
+LOWER 0x0136c230 - 0x0136c233
+LOWER 0x0430b232 - 0x0430b238
+LOWER 0x0430b431 - 0x0430b435
+MAPLOWER < 0xa2fb - 0xa2fc : 0x0136c530 >
+MAPLOWER < 0x01308638 0xa8a4 >
+MAPLOWER < 0x01308639 0xa8a2 >
+MAPLOWER < 0x01308730 0x01308939 >
+MAPLOWER < 0x01308731 - 0x01308735 : 0x01308a30 >
+MAPLOWER < 0x01308736 0xa8a8 >
+MAPLOWER < 0x01308737 0xa8a6 >
+MAPLOWER < 0x01308738 0xa8ba >
+MAPLOWER < 0x01308739 0x01308a35 >
+MAPLOWER < 0x01308830 0xa8ac >
+MAPLOWER < 0x01308831 0xa8aa >
+MAPLOWER < 0x01308832 - 0x01308835 : 0x01308a36 >
+MAPLOWER < 0x01308836 0xa8b0 >
+MAPLOWER < 0x01308837 0xa8ae >
+MAPLOWER < 0x01308838 - 0x01308839 : 0x01308b30 >
+MAPLOWER < 0x01308930 - 0x01308931 : 0x01308b32 >
+MAPLOWER < 0x01308932 0xa8b4 >
+MAPLOWER < 0x01308933 0xa8b2 >
+MAPLOWER < 0x01308934 0x01308b34 >
+MAPLOWER < 0x01308935 0xa8b9 >
+MAPLOWER < 0x01308936 - 0x01308937 : 0x01308b35 >
+MAPLOWER < 0x01308b38 0xa8a1 >
+MAPLOWER < 0x01308b39 0x01308c30 >
+MAPLOWER < 0x01308c31 0x01308c32 >
+MAPLOWER < 0x01308c33 0x01308c34 >
+MAPLOWER < 0x01308c35 0x01308c36 >
+MAPLOWER < 0x01308c37 0x01308c38 >
+MAPLOWER < 0x01308c39 0x01308d30 >
+MAPLOWER < 0x01308d31 0x01308d32 >
+MAPLOWER < 0x01308d33 0x01308d34 >
+MAPLOWER < 0x01308d35 0xa8a5 >
+MAPLOWER < 0x01308d36 0x01308d37 >
+MAPLOWER < 0x01308d38 0x01308d39 >
+MAPLOWER < 0x01308e30 0x01308e31 >
+MAPLOWER < 0x01308e32 0xa8a7 >
+MAPLOWER < 0x01308e33 0x01308e34 >
+MAPLOWER < 0x01308e35 0x01308e36 >
+MAPLOWER < 0x01308e37 0x01308e38 >
+MAPLOWER < 0x01308e39 0x01308f30 >
+MAPLOWER < 0x01308f31 0x01308f32 >
+MAPLOWER < 0x01308f33 0x01308f34 >
+MAPLOWER < 0x01308f35 0x01308f36 >
+MAPLOWER < 0x01308f37 0xa8a9 >
+MAPLOWER < 0x01308f38 0x01308f39 >
+MAPLOWER < 0x01309030 0x01309031 >
+MAPLOWER < 0x01309032 0x69 >
+MAPLOWER < 0x01309034 0x01309035 >
+MAPLOWER < 0x01309036 0x01309037 >
+MAPLOWER < 0x01309038 0x01309039 >
+MAPLOWER < 0x01309131 0x01309132 >
+MAPLOWER < 0x01309133 0x01309134 >
+MAPLOWER < 0x01309135 0x01309136 >
+MAPLOWER < 0x01309137 0x01309138 >
+MAPLOWER < 0x01309139 0x01309230 >
+MAPLOWER < 0x01309231 0xa8bd >
+MAPLOWER < 0x01309232 0x01309233 >
+MAPLOWER < 0x01309234 0xa8be >
+MAPLOWER < 0x01309236 0x01309237 >
+MAPLOWER < 0x01309238 0xa8ad >
+MAPLOWER < 0x01309239 0x01309330 >
+MAPLOWER < 0x01309331 0x01309332 >
+MAPLOWER < 0x01309333 0x01309334 >
+MAPLOWER < 0x01309335 0x01309336 >
+MAPLOWER < 0x01309337 0x01309338 >
+MAPLOWER < 0x01309339 0x01309430 >
+MAPLOWER < 0x01309431 0x01309432 >
+MAPLOWER < 0x01309433 0x01309434 >
+MAPLOWER < 0x01309435 0x01309436 >
+MAPLOWER < 0x01309437 0x01309438 >
+MAPLOWER < 0x01309439 0x01309530 >
+MAPLOWER < 0x01309531 0x01309532 >
+MAPLOWER < 0x01309533 0x01309534 >
+MAPLOWER < 0x01309535 0x01309536 >
+MAPLOWER < 0x01309537 0xa8b1 >
+MAPLOWER < 0x01309538 0x01309539 >
+MAPLOWER < 0x01309630 0x01309631 >
+MAPLOWER < 0x01309632 0x01309633 >
+MAPLOWER < 0x01309634 0x01309635 >
+MAPLOWER < 0x01309636 0x01309637 >
+MAPLOWER < 0x01309638 0x01309639 >
+MAPLOWER < 0x01309730 0x01308b37 >
+MAPLOWER < 0x01309731 0x01309732 >
+MAPLOWER < 0x01309733 0x01309734 >
+MAPLOWER < 0x01309735 0x01309736 >
+MAPLOWER < 0x01309739 0x0130ab39 >
+MAPLOWER < 0x01309830 0x01309831 >
+MAPLOWER < 0x01309832 0x01309833 >
+MAPLOWER < 0x01309834 0x0130ac30 >
+MAPLOWER < 0x01309835 0x01309836 >
+MAPLOWER < 0x01309837 - 0x01309838 : 0x0130ac32 >
+MAPLOWER < 0x01309839 0x01309930 >
+MAPLOWER < 0x01309932 0x0130a033 >
+MAPLOWER < 0x01309933 0x0130ac35 >
+MAPLOWER < 0x01309934 0x0130ac37 >
+MAPLOWER < 0x01309935 0x01309936 >
+MAPLOWER < 0x01309937 0x0130ad32 >
+MAPLOWER < 0x01309938 0x0130ad34 >
+MAPLOWER < 0x01309a30 0x0130ae30 >
+MAPLOWER < 0x01309a31 0x0130ad39 >
+MAPLOWER < 0x01309a32 0x01309a33 >
+MAPLOWER < 0x01309a36 0x0130ae36 >
+MAPLOWER < 0x01309a37 0x0130ae39 >
+MAPLOWER < 0x01309a39 0x0130af32 >
+MAPLOWER < 0x01309b30 0x01309b31 >
+MAPLOWER < 0x01309b32 0x01309b33 >
+MAPLOWER < 0x01309b34 0x01309b35 >
+MAPLOWER < 0x01309b36 0x0130b033 >
+MAPLOWER < 0x01309b37 0x01309b38 >
+MAPLOWER < 0x01309b39 0x0130b036 >
+MAPLOWER < 0x01309c32 0x01309c33 >
+MAPLOWER < 0x01309c34 0x0130b131 >
+MAPLOWER < 0x01309c35 0x01309c36 >
+MAPLOWER < 0x01309c37 - 0x01309c38 : 0x0130b133 >
+MAPLOWER < 0x01309c39 0x01309d30 >
+MAPLOWER < 0x01309d31 0x01309d32 >
+MAPLOWER < 0x01309d33 0x0130b231 >
+MAPLOWER < 0x01309d34 0x01309d35 >
+MAPLOWER < 0x01309d38 0x01309d39 >
+MAPLOWER < 0x01309e36 0x01309e38 >
+MAPLOWER < 0x01309e37 0x01309e38 >
+MAPLOWER < 0x01309e39 0x01309f31 >
+MAPLOWER < 0x01309f30 0x01309f31 >
+MAPLOWER < 0x01309f32 0x01309f34 >
+MAPLOWER < 0x01309f33 0x01309f34 >
+MAPLOWER < 0x01309f35 0xa8a3 >
+MAPLOWER < 0x01309f36 0xa8ab >
+MAPLOWER < 0x01309f37 0xa8af >
+MAPLOWER < 0x01309f38 0xa8b3 >
+MAPLOWER < 0x01309f39 0xa8b5 >
+MAPLOWER < 0x0130a030 - 0x0130a032 : 0xa8b6 >
+MAPLOWER < 0x0130a034 0x0130a035 >
+MAPLOWER < 0x0130a036 0x0130a037 >
+MAPLOWER < 0x0130a038 0x0130a039 >
+MAPLOWER < 0x0130a130 0x0130a131 >
+MAPLOWER < 0x0130a132 0x0130a133 >
+MAPLOWER < 0x0130a134 0x0130a135 >
+MAPLOWER < 0x0130a136 0x0130a137 >
+MAPLOWER < 0x0130a138 0x0130a139 >
+MAPLOWER < 0x0130a230 0x0130a231 >
+MAPLOWER < 0x0130a233 0x0130a235 >
+MAPLOWER < 0x0130a234 0x0130a235 >
+MAPLOWER < 0x0130a236 0x0130a237 >
+MAPLOWER < 0x0130a238 0x01309939 >
+MAPLOWER < 0x0130a239 0x01309e31 >
+MAPLOWER < 0x0130a330 0xa8bf >
+MAPLOWER < 0x0130a331 0x0130a332 >
+MAPLOWER < 0x0130a333 0x0130a334 >
+MAPLOWER < 0x0130a335 0x0130a336 >
+MAPLOWER < 0x0130a337 0x0130a338 >
+MAPLOWER < 0x0130a339 0x0130a430 >
+MAPLOWER < 0x0130a431 0x0130a432 >
+MAPLOWER < 0x0130a433 0x0130a434 >
+MAPLOWER < 0x0130a435 0x0130a436 >
+MAPLOWER < 0x0130a437 0x0130a438 >
+MAPLOWER < 0x0130a439 0x0130a530 >
+MAPLOWER < 0x0130a531 0x0130a532 >
+MAPLOWER < 0x0130a533 0x0130a534 >
+MAPLOWER < 0x0130a535 0x0130a536 >
+MAPLOWER < 0x0130a537 0x0130a538 >
+MAPLOWER < 0x0130a539 0x0130a630 >
+MAPLOWER < 0x0130a631 0x0130a632 >
+MAPLOWER < 0x0130a633 0x0130a634 >
+MAPLOWER < 0x0130a635 0x0130a636 >
+MAPLOWER < 0x0130a637 0x0130a638 >
+MAPLOWER < 0x0130a639 0x01309a38 >
+MAPLOWER < 0x0130a731 0x0130a732 >
+MAPLOWER < 0x0130a733 0x0130a734 >
+MAPLOWER < 0x0130a735 0x0130a736 >
+MAPLOWER < 0x0130a737 0x0130a738 >
+MAPLOWER < 0x0130a739 0x0130a830 >
+MAPLOWER < 0x0130a831 0x0130a832 >
+MAPLOWER < 0x0130a833 0x0130a834 >
+MAPLOWER < 0x0130a835 0x0130a836 >
+MAPLOWER < 0x0130a837 0x0130a838 >
+MAPLOWER < 0x0130ca30 0x0130cb34 >
+MAPLOWER < 0x0130ca32 - 0x0130ca34 : 0x0130cb35 >
+MAPLOWER < 0x0130ca36 0x0130cc32 >
+MAPLOWER < 0x0130ca38 - 0x0130ca39 : 0x0130cc33 >
+MAPLOWER < 0x0130cb32 - 0x0130cb33 : 0x0130cc30 >
+MAPLOWER < 0x0130cd34 0x0130cd35 >
+MAPLOWER < 0x0130cd36 0x0130cd37 >
+MAPLOWER < 0x0130cd38 0x0130cd39 >
+MAPLOWER < 0x0130ce30 0x0130ce31 >
+MAPLOWER < 0x0130ce32 0x0130ce33 >
+MAPLOWER < 0x0130ce34 0x0130ce35 >
+MAPLOWER < 0x0130ce36 0x0130ce37 >
+MAPLOWER < 0x0130ce38 0x0130ce39 >
+MAPLOWER < 0x0130cf30 0x0130cf31 >
+MAPLOWER < 0x0130cf32 0x0130cf33 >
+MAPLOWER < 0x0130cf34 0x0130cf35 >
+MAPLOWER < 0x0130cf36 0x0130cf37 >
+MAPLOWER < 0x0130d032 0xa6c8 >
+MAPLOWER < 0x0130d134 0x0130d239 >
+MAPLOWER < 0x0130d135 - 0x0130d139 : 0x0130d330 >
+MAPLOWER < 0x0130d230 - 0x0130d234 : 0x0130d335 >
+MAPLOWER < 0x0130d235 - 0x0130d238 : 0x0130d430 >
+MAPLOWER < 0x0130d434 0x0130d435 >
+MAPLOWER < 0x0130d436 0x0130d437 >
+MAPLOWER < 0x0130d438 0x0130d439 >
+MAPLOWER < 0x0130d530 0x0130d531 >
+MAPLOWER < 0x0130d532 0x0130d533 >
+MAPLOWER < 0x0130d534 0x0130d535 >
+MAPLOWER < 0x0130d536 0x0130d537 >
+MAPLOWER < 0x0130d538 0x0130d539 >
+MAPLOWER < 0x0130d630 0x0130d631 >
+MAPLOWER < 0x0130d632 0x0130d633 >
+MAPLOWER < 0x0130d634 0x0130d635 >
+MAPLOWER < 0x0130d636 0x0130d637 >
+MAPLOWER < 0x0130d638 0x0130d639 >
+MAPLOWER < 0x0130d730 0x0130d731 >
+MAPLOWER < 0x0130d732 0x0130d733 >
+MAPLOWER < 0x0130d734 0x0130d735 >
+MAPLOWER < 0x0130d736 0x0130d737 >
+MAPLOWER < 0x0130d836 0x0130d837 >
+MAPLOWER < 0x0130d838 0x0130d839 >
+MAPLOWER < 0x0130d930 0x0130d931 >
+MAPLOWER < 0x0130d932 0x0130d933 >
+MAPLOWER < 0x0130d934 0x0130d935 >
+MAPLOWER < 0x0130d936 0x0130d937 >
+MAPLOWER < 0x0130d938 0x0130d939 >
+MAPLOWER < 0x0130da30 0x0130da31 >
+MAPLOWER < 0x0130da32 0x0130da33 >
+MAPLOWER < 0x0130da34 0x0130da35 >
+MAPLOWER < 0x0130da36 0x0130da37 >
+MAPLOWER < 0x0130da38 0x0130da39 >
+MAPLOWER < 0x0130db30 0x0130db31 >
+MAPLOWER < 0x0130db32 0x0130db33 >
+MAPLOWER < 0x0130db34 0x0130db35 >
+MAPLOWER < 0x0130db36 0x0130db37 >
+MAPLOWER < 0x0130db38 0x0130db39 >
+MAPLOWER < 0x0130dc30 0x0130dc31 >
+MAPLOWER < 0x0130dc32 0x0130dc33 >
+MAPLOWER < 0x0130dc34 0x0130dc35 >
+MAPLOWER < 0x0130dc36 0x0130dc37 >
+MAPLOWER < 0x0130dc38 0x0130dc39 >
+MAPLOWER < 0x0130dd30 0x0130dd31 >
+MAPLOWER < 0x0130dd32 0x0130dd33 >
+MAPLOWER < 0x0130dd34 0x0130dd35 >
+MAPLOWER < 0x0130dd36 0x0130dd37 >
+MAPLOWER < 0x0130dd38 0x0130dd39 >
+MAPLOWER < 0x0130de31 0x0130de32 >
+MAPLOWER < 0x0130de33 0x0130de34 >
+MAPLOWER < 0x0130de35 0x0130de36 >
+MAPLOWER < 0x0130de37 0x0130de38 >
+MAPLOWER < 0x0130de39 0x0130df30 >
+MAPLOWER < 0x0130df31 0x0130df32 >
+MAPLOWER < 0x0130df33 0x0130df34 >
+MAPLOWER < 0x0130df36 0x0130df37 >
+MAPLOWER < 0x0130df38 0x0130df39 >
+MAPLOWER < 0x0130e030 0x0130e031 >
+MAPLOWER < 0x0130e032 0x0130e033 >
+MAPLOWER < 0x0130e034 0x0130e035 >
+MAPLOWER < 0x0130e036 0x0130e037 >
+MAPLOWER < 0x0130e038 0x0130e039 >
+MAPLOWER < 0x0130e130 0x0130e131 >
+MAPLOWER < 0x0130e132 0x0130e133 >
+MAPLOWER < 0x0130e134 0x0130e135 >
+MAPLOWER < 0x0130e136 0x0130e137 >
+MAPLOWER < 0x0130e138 0x0130e139 >
+MAPLOWER < 0x0130e230 0x0130e231 >
+MAPLOWER < 0x0130e232 0x0130e233 >
+MAPLOWER < 0x0130e234 0x0130e235 >
+MAPLOWER < 0x0130e236 0x0130e237 >
+MAPLOWER < 0x0130e238 0x0130e239 >
+MAPLOWER < 0x0130e330 0x0130e331 >
+MAPLOWER < 0x0130e332 0x0130e333 >
+MAPLOWER < 0x0130e336 0x0130e337 >
+MAPLOWER < 0x0130e434 0x0130e435 >
+MAPLOWER < 0x0130e436 0x0130e437 >
+MAPLOWER < 0x0130e438 0x0130e439 >
+MAPLOWER < 0x0130e530 0x0130e531 >
+MAPLOWER < 0x0130e532 0x0130e533 >
+MAPLOWER < 0x0130e534 0x0130e535 >
+MAPLOWER < 0x0130e536 0x0130e537 >
+MAPLOWER < 0x0130e538 0x0130e539 >
+MAPLOWER < 0x0130e933 - 0x0130e939 : 0x0130ee31 >
+MAPLOWER < 0x0130ea30 - 0x0130ea31 : 0x0130ee38 >
+MAPLOWER < 0x0130ea32 - 0x0130ea39 : 0x0130ef30 >
+MAPLOWER < 0x0130eb30 - 0x0130eb31 : 0x0130ef38 >
+MAPLOWER < 0x0130eb32 - 0x0130eb39 : 0x0130f030 >
+MAPLOWER < 0x0130ec30 - 0x0130ec31 : 0x0130f038 >
+MAPLOWER < 0x0130ec32 - 0x0130ec39 : 0x0130f130 >
+MAPLOWER < 0x0130ed30 0x0130f138 >
+MAPLOWER < 0x0135ee34 0x0135ee35 >
+MAPLOWER < 0x0135ee36 0x0135ee37 >
+MAPLOWER < 0x0135ee38 0x0135ee39 >
+MAPLOWER < 0x0135ef30 0x0135ef31 >
+MAPLOWER < 0x0135ef32 0x0135ef33 >
+MAPLOWER < 0x0135ef34 0x0135ef35 >
+MAPLOWER < 0x0135ef36 0x0135ef37 >
+MAPLOWER < 0x0135ef38 0x0135ef39 >
+MAPLOWER < 0x0135f030 0x0135f031 >
+MAPLOWER < 0x0135f032 0x0135f033 >
+MAPLOWER < 0x0135f034 0x0135f035 >
+MAPLOWER < 0x0135f036 0x0135f037 >
+MAPLOWER < 0x0135f038 0x0135f039 >
+MAPLOWER < 0x0135f130 0x0135f131 >
+MAPLOWER < 0x0135f132 0x0135f133 >
+MAPLOWER < 0x0135f134 0x0135f135 >
+MAPLOWER < 0x0135f136 0x0135f137 >
+MAPLOWER < 0x0135f138 0x0135f139 >
+MAPLOWER < 0x0135f230 0x0135f231 >
+MAPLOWER < 0x0135f232 0x0135f233 >
+MAPLOWER < 0x0135f234 0x0135f235 >
+MAPLOWER < 0x0135f236 0x0135f237 >
+MAPLOWER < 0x0135f238 0x0135f239 >
+MAPLOWER < 0x0135f330 0x0135f331 >
+MAPLOWER < 0x0135f332 0x0135f333 >
+MAPLOWER < 0x0135f334 0x0135f335 >
+MAPLOWER < 0x0135f336 0x0135f337 >
+MAPLOWER < 0x0135f338 0x0135f339 >
+MAPLOWER < 0x0135f430 0x0135f431 >
+MAPLOWER < 0x0135f432 0x0135f433 >
+MAPLOWER < 0x0135f434 0x0135f435 >
+MAPLOWER < 0x0135f436 0x0135f437 >
+MAPLOWER < 0x0135f438 0x0135f439 >
+MAPLOWER < 0x0135f530 0x0135f531 >
+MAPLOWER < 0x0135f532 0x0135f533 >
+MAPLOWER < 0x0135f534 0x0135f535 >
+MAPLOWER < 0x0135f536 0x0135f537 >
+MAPLOWER < 0x0135f538 0x0135f539 >
+MAPLOWER < 0x0135f630 0x0135f631 >
+MAPLOWER < 0x0135f632 0x0135f633 >
+MAPLOWER < 0x0135f634 0x0135f635 >
+MAPLOWER < 0x0135f636 0x0135f637 >
+MAPLOWER < 0x0135f638 0x0135f639 >
+MAPLOWER < 0x0135f730 0x0135f731 >
+MAPLOWER < 0x0135f732 0x0135f733 >
+MAPLOWER < 0x0135f734 0x0135f735 >
+MAPLOWER < 0x0135f736 0x0135f737 >
+MAPLOWER < 0x0135f738 0x0135f739 >
+MAPLOWER < 0x0135f830 0x0135f831 >
+MAPLOWER < 0x0135f832 0x0135f833 >
+MAPLOWER < 0x0135f834 0x0135f835 >
+MAPLOWER < 0x0135f836 0x0135f837 >
+MAPLOWER < 0x0135f838 0x0135f839 >
+MAPLOWER < 0x0135f930 0x0135f931 >
+MAPLOWER < 0x0135f932 0x0135f933 >
+MAPLOWER < 0x0135f934 0x0135f935 >
+MAPLOWER < 0x0135f936 0x0135f937 >
+MAPLOWER < 0x0135f938 0x0135f939 >
+MAPLOWER < 0x0135fa30 0x0135fa31 >
+MAPLOWER < 0x0135fa32 0x0135fa33 >
+MAPLOWER < 0x0135fa34 0x0135fa35 >
+MAPLOWER < 0x0135fa36 0x0135fa37 >
+MAPLOWER < 0x0135fa38 0x0135fa39 >
+MAPLOWER < 0x0135fb30 0x0135fb31 >
+MAPLOWER < 0x0135fb32 0x0135fb33 >
+MAPLOWER < 0x0135fb34 0x0135fb35 >
+MAPLOWER < 0x0135fb36 0x0135fb37 >
+MAPLOWER < 0x0135fb38 0x0135fb39 >
+MAPLOWER < 0x0135fc30 0x0135fc31 >
+MAPLOWER < 0x0135fc32 0x0135fc33 >
+MAPLOWER < 0x0135fc34 0x0135fc35 >
+MAPLOWER < 0x0135fc36 0x0135fc37 >
+MAPLOWER < 0x0135fc38 0x0135fc39 >
+MAPLOWER < 0x0135fd30 0x0135fd31 >
+MAPLOWER < 0x0135fd32 0x0135fd33 >
+MAPLOWER < 0x0135fe34 0x0135fe35 >
+MAPLOWER < 0x0135fe36 0x0135fe37 >
+MAPLOWER < 0x0135fe38 0x0135fe39 >
+MAPLOWER < 0x01368130 0x01368131 >
+MAPLOWER < 0x01368132 0x01368133 >
+MAPLOWER < 0x01368134 0x01368135 >
+MAPLOWER < 0x01368136 0x01368137 >
+MAPLOWER < 0x01368138 0x01368139 >
+MAPLOWER < 0x01368230 0x01368231 >
+MAPLOWER < 0x01368232 0x01368233 >
+MAPLOWER < 0x01368234 0x01368235 >
+MAPLOWER < 0x01368236 0x01368237 >
+MAPLOWER < 0x01368238 0x01368239 >
+MAPLOWER < 0x01368330 0x01368331 >
+MAPLOWER < 0x01368332 0x01368333 >
+MAPLOWER < 0x01368334 0x01368335 >
+MAPLOWER < 0x01368336 0x01368337 >
+MAPLOWER < 0x01368338 0x01368339 >
+MAPLOWER < 0x01368430 0x01368431 >
+MAPLOWER < 0x01368432 0x01368433 >
+MAPLOWER < 0x01368434 0x01368435 >
+MAPLOWER < 0x01368436 0x01368437 >
+MAPLOWER < 0x01368438 0x01368439 >
+MAPLOWER < 0x01368530 0x01368531 >
+MAPLOWER < 0x01368532 0x01368533 >
+MAPLOWER < 0x01368534 0x01368535 >
+MAPLOWER < 0x01368536 0x01368537 >
+MAPLOWER < 0x01368538 0x01368539 >
+MAPLOWER < 0x01368630 0x01368631 >
+MAPLOWER < 0x01368632 0x01368633 >
+MAPLOWER < 0x01368634 0x01368635 >
+MAPLOWER < 0x01368636 0x01368637 >
+MAPLOWER < 0x01368638 0x01368639 >
+MAPLOWER < 0x01368730 0x01368731 >
+MAPLOWER < 0x01368732 0x01368733 >
+MAPLOWER < 0x01368734 0x01368735 >
+MAPLOWER < 0x01368736 0x01368737 >
+MAPLOWER < 0x01368738 0x01368739 >
+MAPLOWER < 0x01368830 0x01368831 >
+MAPLOWER < 0x01368832 0x01368833 >
+MAPLOWER < 0x01368834 0x01368835 >
+MAPLOWER < 0x01368836 0x01368837 >
+MAPLOWER < 0x01368838 0x01368839 >
+MAPLOWER < 0x01368930 0x01368931 >
+MAPLOWER < 0x01368932 0x01368933 >
+MAPLOWER < 0x01368a38 - 0x01368a39 : 0x01368a30 >
+MAPLOWER < 0x01368b30 - 0x01368b35 : 0x01368a32 >
+MAPLOWER < 0x01368c34 - 0x01368c37 : 0x01368b36 >
+MAPLOWER < 0x01368c38 - 0x01368c39 : 0x01368c30 >
+MAPLOWER < 0x01368e30 - 0x01368e37 : 0x01368d32 >
+MAPLOWER < 0x01368f36 - 0x01368f37 : 0x01368e38 >
+MAPLOWER < 0x01368f38 - 0x01368f39 : 0x01368f30 >
+MAPLOWER < 0x01369030 - 0x01369033 : 0x01368f32 >
+MAPLOWER < 0x01369132 - 0x01369137 : 0x01369034 >
+MAPLOWER < 0x01369239 0x01369231 >
+MAPLOWER < 0x01369331 0x01369233 >
+MAPLOWER < 0x01369333 0x01369235 >
+MAPLOWER < 0x01369335 0x01369237 >
+MAPLOWER < 0x01369434 - 0x01369437 : 0x01369336 >
+MAPLOWER < 0x01369438 - 0x01369439 : 0x01369430 >
+MAPLOWER < 0x01369530 - 0x01369531 : 0x01369432 >
+MAPLOWER < 0x01369736 - 0x01369737 : 0x01369638 >
+MAPLOWER < 0x01369738 - 0x01369739 : 0x01369730 >
+MAPLOWER < 0x01369830 - 0x01369833 : 0x01369732 >
+MAPLOWER < 0x01369932 - 0x01369937 : 0x01369834 >
+MAPLOWER < 0x01369938 - 0x01369939 : 0x01369930 >
+MAPLOWER < 0x01369a38 - 0x01369a39 : 0x01369a30 >
+MAPLOWER < 0x01369b30 - 0x01369b35 : 0x01369a32 >
+MAPLOWER < 0x01369c34 - 0x01369c35 : 0x01369b36 >
+MAPLOWER < 0x01369c36 - 0x01369c37 : 0x01369532 >
+MAPLOWER < 0x01369c38 0x01369b39 >
+MAPLOWER < 0x01369e30 - 0x01369e33 : 0x01369534 >
+MAPLOWER < 0x01369e34 0x01369d35 >
+MAPLOWER < 0x01369f36 - 0x01369f37 : 0x01369e38 >
+MAPLOWER < 0x01369f38 - 0x01369f39 : 0x01369538 >
+MAPLOWER < 0x0136a132 - 0x0136a133 : 0x0136a034 >
+MAPLOWER < 0x0136a134 - 0x0136a135 : 0x01369632 >
+MAPLOWER < 0x0136a136 0x0136a039 >
+MAPLOWER < 0x0136a238 - 0x0136a239 : 0x01369630 >
+MAPLOWER < 0x0136a330 - 0x0136a331 : 0x01369634 >
+MAPLOWER < 0x0136a332 0x0136a233 >
+MAPLOWER < 0x0136be38 0xa6d8 >
+MAPLOWER < 0x0136bf32 0x6b >
+MAPLOWER < 0x0136bf33 0x01308a32 >
+MAPLOWER < 0x0136c436 - 0x0136c439 : 0x0136c532 >
+MAPLOWER < 0x01379032 - 0x01379033 : 0x01379238 >
+MAPLOWER < 0x01379034 - 0x01379039 : 0x01379330 >
+MAPLOWER < 0x01379130 - 0x01379133 : 0x01379336 >
+MAPLOWER < 0x01379134 - 0x01379139 : 0x01379430 >
+MAPLOWER < 0x01379230 - 0x01379233 : 0x01379436 >
+MAPLOWER < 0x01379234 - 0x01379237 : 0x01379530 >
+MAPUPPER < 0xa8a1 0x01308b38 >
+MAPUPPER < 0xa8a2 0x01308639 >
+MAPUPPER < 0xa8a3 0x01309f35 >
+MAPUPPER < 0xa8a4 0x01308638 >
+MAPUPPER < 0xa8a5 0x01308d35 >
+MAPUPPER < 0xa8a6 0x01308737 >
+MAPUPPER < 0xa8a7 0x01308e32 >
+MAPUPPER < 0xa8a8 0x01308736 >
+MAPUPPER < 0xa8a9 0x01308f37 >
+MAPUPPER < 0xa8aa 0x01308831 >
+MAPUPPER < 0xa8ab 0x01309f36 >
+MAPUPPER < 0xa8ac 0x01308830 >
+MAPUPPER < 0xa8ad 0x01309238 >
+MAPUPPER < 0xa8ae 0x01308837 >
+MAPUPPER < 0xa8af 0x01309f37 >
+MAPUPPER < 0xa8b0 0x01308836 >
+MAPUPPER < 0xa8b1 0x01309537 >
+MAPUPPER < 0xa8b2 0x01308933 >
+MAPUPPER < 0xa8b3 0x01309f38 >
+MAPUPPER < 0xa8b4 0x01308932 >
+MAPUPPER < 0xa8b5 0x01309f39 >
+MAPUPPER < 0xa8b6 - 0xa8b8 : 0x0130a030 >
+MAPUPPER < 0xa8b9 0x01308935 >
+MAPUPPER < 0xa8ba 0x01308738 >
+MAPUPPER < 0xa8bd 0x01309231 >
+MAPUPPER < 0xa8be 0x01309234 >
+MAPUPPER < 0xa8bf 0x0130a330 >
+MAPUPPER < 0x01308538 0xa6ac >
+MAPUPPER < 0x01308939 0x01308730 >
+MAPUPPER < 0x01308a30 - 0x01308a34 : 0x01308731 >
+MAPUPPER < 0x01308a35 0x01308739 >
+MAPUPPER < 0x01308a36 - 0x01308a39 : 0x01308832 >
+MAPUPPER < 0x01308b30 - 0x01308b31 : 0x01308838 >
+MAPUPPER < 0x01308b32 - 0x01308b33 : 0x01308930 >
+MAPUPPER < 0x01308b34 0x01308934 >
+MAPUPPER < 0x01308b35 - 0x01308b36 : 0x01308936 >
+MAPUPPER < 0x01308b37 0x01309730 >
+MAPUPPER < 0x01308c30 0x01308b39 >
+MAPUPPER < 0x01308c32 0x01308c31 >
+MAPUPPER < 0x01308c34 0x01308c33 >
+MAPUPPER < 0x01308c36 0x01308c35 >
+MAPUPPER < 0x01308c38 0x01308c37 >
+MAPUPPER < 0x01308d30 0x01308c39 >
+MAPUPPER < 0x01308d32 0x01308d31 >
+MAPUPPER < 0x01308d34 0x01308d33 >
+MAPUPPER < 0x01308d37 0x01308d36 >
+MAPUPPER < 0x01308d39 0x01308d38 >
+MAPUPPER < 0x01308e31 0x01308e30 >
+MAPUPPER < 0x01308e34 0x01308e33 >
+MAPUPPER < 0x01308e36 0x01308e35 >
+MAPUPPER < 0x01308e38 0x01308e37 >
+MAPUPPER < 0x01308f30 0x01308e39 >
+MAPUPPER < 0x01308f32 0x01308f31 >
+MAPUPPER < 0x01308f34 0x01308f33 >
+MAPUPPER < 0x01308f36 0x01308f35 >
+MAPUPPER < 0x01308f39 0x01308f38 >
+MAPUPPER < 0x01309031 0x01309030 >
+MAPUPPER < 0x01309033 0x49 >
+MAPUPPER < 0x01309035 0x01309034 >
+MAPUPPER < 0x01309037 0x01309036 >
+MAPUPPER < 0x01309039 0x01309038 >
+MAPUPPER < 0x01309132 0x01309131 >
+MAPUPPER < 0x01309134 0x01309133 >
+MAPUPPER < 0x01309136 0x01309135 >
+MAPUPPER < 0x01309138 0x01309137 >
+MAPUPPER < 0x01309230 0x01309139 >
+MAPUPPER < 0x01309233 0x01309232 >
+MAPUPPER < 0x01309237 0x01309236 >
+MAPUPPER < 0x01309330 0x01309239 >
+MAPUPPER < 0x01309332 0x01309331 >
+MAPUPPER < 0x01309334 0x01309333 >
+MAPUPPER < 0x01309336 0x01309335 >
+MAPUPPER < 0x01309338 0x01309337 >
+MAPUPPER < 0x01309430 0x01309339 >
+MAPUPPER < 0x01309432 0x01309431 >
+MAPUPPER < 0x01309434 0x01309433 >
+MAPUPPER < 0x01309436 0x01309435 >
+MAPUPPER < 0x01309438 0x01309437 >
+MAPUPPER < 0x01309530 0x01309439 >
+MAPUPPER < 0x01309532 0x01309531 >
+MAPUPPER < 0x01309534 0x01309533 >
+MAPUPPER < 0x01309536 0x01309535 >
+MAPUPPER < 0x01309539 0x01309538 >
+MAPUPPER < 0x01309631 0x01309630 >
+MAPUPPER < 0x01309633 0x01309632 >
+MAPUPPER < 0x01309635 0x01309634 >
+MAPUPPER < 0x01309637 0x01309636 >
+MAPUPPER < 0x01309639 0x01309638 >
+MAPUPPER < 0x01309732 0x01309731 >
+MAPUPPER < 0x01309734 0x01309733 >
+MAPUPPER < 0x01309736 0x01309735 >
+MAPUPPER < 0x01309737 0x53 >
+MAPUPPER < 0x01309831 0x01309830 >
+MAPUPPER < 0x01309833 0x01309832 >
+MAPUPPER < 0x01309836 0x01309835 >
+MAPUPPER < 0x01309930 0x01309839 >
+MAPUPPER < 0x01309936 0x01309935 >
+MAPUPPER < 0x01309939 0x0130a238 >
+MAPUPPER < 0x01309a33 0x01309a32 >
+MAPUPPER < 0x01309a38 0x0130a639 >
+MAPUPPER < 0x01309b31 0x01309b30 >
+MAPUPPER < 0x01309b33 0x01309b32 >
+MAPUPPER < 0x01309b35 0x01309b34 >
+MAPUPPER < 0x01309b38 0x01309b37 >
+MAPUPPER < 0x01309c33 0x01309c32 >
+MAPUPPER < 0x01309c36 0x01309c35 >
+MAPUPPER < 0x01309d30 0x01309c39 >
+MAPUPPER < 0x01309d32 0x01309d31 >
+MAPUPPER < 0x01309d35 0x01309d34 >
+MAPUPPER < 0x01309d39 0x01309d38 >
+MAPUPPER < 0x01309e31 0x0130a239 >
+MAPUPPER < 0x01309e37 0x01309e36 >
+MAPUPPER < 0x01309e38 0x01309e36 >
+MAPUPPER < 0x01309f30 0x01309e39 >
+MAPUPPER < 0x01309f31 0x01309e39 >
+MAPUPPER < 0x01309f33 0x01309f32 >
+MAPUPPER < 0x01309f34 0x01309f32 >
+MAPUPPER < 0x0130a033 0x01309932 >
+MAPUPPER < 0x0130a035 0x0130a034 >
+MAPUPPER < 0x0130a037 0x0130a036 >
+MAPUPPER < 0x0130a039 0x0130a038 >
+MAPUPPER < 0x0130a131 0x0130a130 >
+MAPUPPER < 0x0130a133 0x0130a132 >
+MAPUPPER < 0x0130a135 0x0130a134 >
+MAPUPPER < 0x0130a137 0x0130a136 >
+MAPUPPER < 0x0130a139 0x0130a138 >
+MAPUPPER < 0x0130a231 0x0130a230 >
+MAPUPPER < 0x0130a234 0x0130a233 >
+MAPUPPER < 0x0130a235 0x0130a233 >
+MAPUPPER < 0x0130a237 0x0130a236 >
+MAPUPPER < 0x0130a332 0x0130a331 >
+MAPUPPER < 0x0130a334 0x0130a333 >
+MAPUPPER < 0x0130a336 0x0130a335 >
+MAPUPPER < 0x0130a338 0x0130a337 >
+MAPUPPER < 0x0130a430 0x0130a339 >
+MAPUPPER < 0x0130a432 0x0130a431 >
+MAPUPPER < 0x0130a434 0x0130a433 >
+MAPUPPER < 0x0130a436 0x0130a435 >
+MAPUPPER < 0x0130a438 0x0130a437 >
+MAPUPPER < 0x0130a530 0x0130a439 >
+MAPUPPER < 0x0130a532 0x0130a531 >
+MAPUPPER < 0x0130a534 0x0130a533 >
+MAPUPPER < 0x0130a536 0x0130a535 >
+MAPUPPER < 0x0130a538 0x0130a537 >
+MAPUPPER < 0x0130a630 0x0130a539 >
+MAPUPPER < 0x0130a632 0x0130a631 >
+MAPUPPER < 0x0130a634 0x0130a633 >
+MAPUPPER < 0x0130a636 0x0130a635 >
+MAPUPPER < 0x0130a638 0x0130a637 >
+MAPUPPER < 0x0130a732 0x0130a731 >
+MAPUPPER < 0x0130a734 0x0130a733 >
+MAPUPPER < 0x0130a736 0x0130a735 >
+MAPUPPER < 0x0130a738 0x0130a737 >
+MAPUPPER < 0x0130a830 0x0130a739 >
+MAPUPPER < 0x0130a832 0x0130a831 >
+MAPUPPER < 0x0130a834 0x0130a833 >
+MAPUPPER < 0x0130a836 0x0130a835 >
+MAPUPPER < 0x0130a838 0x0130a837 >
+MAPUPPER < 0x0130ab39 0x01309739 >
+MAPUPPER < 0x0130ac30 0x01309834 >
+MAPUPPER < 0x0130ac32 - 0x0130ac33 : 0x01309837 >
+MAPUPPER < 0x0130ac35 0x01309933 >
+MAPUPPER < 0x0130ac37 0x01309934 >
+MAPUPPER < 0x0130ad32 0x01309937 >
+MAPUPPER < 0x0130ad34 0x01309938 >
+MAPUPPER < 0x0130ad39 0x01309a31 >
+MAPUPPER < 0x0130ae30 0x01309a30 >
+MAPUPPER < 0x0130ae36 0x01309a36 >
+MAPUPPER < 0x0130ae39 0x01309a37 >
+MAPUPPER < 0x0130af32 0x01309a39 >
+MAPUPPER < 0x0130b033 0x01309b36 >
+MAPUPPER < 0x0130b036 0x01309b39 >
+MAPUPPER < 0x0130b131 0x01309c34 >
+MAPUPPER < 0x0130b133 - 0x0130b134 : 0x01309c37 >
+MAPUPPER < 0x0130b231 0x01309d33 >
+MAPUPPER < 0x0130c335 0xa6a9 >
+MAPUPPER < 0x0130cb34 0x0130ca30 >
+MAPUPPER < 0x0130cb35 - 0x0130cb37 : 0x0130ca32 >
+MAPUPPER < 0x0130cb39 0xa6b2 >
+MAPUPPER < 0x0130cc30 - 0x0130cc31 : 0x0130cb32 >
+MAPUPPER < 0x0130cc32 0x0130ca36 >
+MAPUPPER < 0x0130cc33 - 0x0130cc34 : 0x0130ca38 >
+MAPUPPER < 0x0130cc36 0xa6a2 >
+MAPUPPER < 0x0130cc37 0xa6a8 >
+MAPUPPER < 0x0130cd31 0xa6b5 >
+MAPUPPER < 0x0130cd32 0xa6b0 >
+MAPUPPER < 0x0130cd35 0x0130cd34 >
+MAPUPPER < 0x0130cd37 0x0130cd36 >
+MAPUPPER < 0x0130cd39 0x0130cd38 >
+MAPUPPER < 0x0130ce31 0x0130ce30 >
+MAPUPPER < 0x0130ce33 0x0130ce32 >
+MAPUPPER < 0x0130ce35 0x0130ce34 >
+MAPUPPER < 0x0130ce37 0x0130ce36 >
+MAPUPPER < 0x0130ce39 0x0130ce38 >
+MAPUPPER < 0x0130cf31 0x0130cf30 >
+MAPUPPER < 0x0130cf33 0x0130cf32 >
+MAPUPPER < 0x0130cf35 0x0130cf34 >
+MAPUPPER < 0x0130cf37 0x0130cf36 >
+MAPUPPER < 0x0130cf38 0xa6aa >
+MAPUPPER < 0x0130cf39 0xa6b1 >
+MAPUPPER < 0x0130d030 0xa6b2 >
+MAPUPPER < 0x0130d033 0xa6a5 >
+MAPUPPER < 0x0130d239 0x0130d134 >
+MAPUPPER < 0x0130d330 - 0x0130d334 : 0x0130d135 >
+MAPUPPER < 0x0130d335 - 0x0130d339 : 0x0130d230 >
+MAPUPPER < 0x0130d430 - 0x0130d433 : 0x0130d235 >
+MAPUPPER < 0x0130d435 0x0130d434 >
+MAPUPPER < 0x0130d437 0x0130d436 >
+MAPUPPER < 0x0130d439 0x0130d438 >
+MAPUPPER < 0x0130d531 0x0130d530 >
+MAPUPPER < 0x0130d533 0x0130d532 >
+MAPUPPER < 0x0130d535 0x0130d534 >
+MAPUPPER < 0x0130d537 0x0130d536 >
+MAPUPPER < 0x0130d539 0x0130d538 >
+MAPUPPER < 0x0130d631 0x0130d630 >
+MAPUPPER < 0x0130d633 0x0130d632 >
+MAPUPPER < 0x0130d635 0x0130d634 >
+MAPUPPER < 0x0130d637 0x0130d636 >
+MAPUPPER < 0x0130d639 0x0130d638 >
+MAPUPPER < 0x0130d731 0x0130d730 >
+MAPUPPER < 0x0130d733 0x0130d732 >
+MAPUPPER < 0x0130d735 0x0130d734 >
+MAPUPPER < 0x0130d737 0x0130d736 >
+MAPUPPER < 0x0130d837 0x0130d836 >
+MAPUPPER < 0x0130d839 0x0130d838 >
+MAPUPPER < 0x0130d931 0x0130d930 >
+MAPUPPER < 0x0130d933 0x0130d932 >
+MAPUPPER < 0x0130d935 0x0130d934 >
+MAPUPPER < 0x0130d937 0x0130d936 >
+MAPUPPER < 0x0130d939 0x0130d938 >
+MAPUPPER < 0x0130da31 0x0130da30 >
+MAPUPPER < 0x0130da33 0x0130da32 >
+MAPUPPER < 0x0130da35 0x0130da34 >
+MAPUPPER < 0x0130da37 0x0130da36 >
+MAPUPPER < 0x0130da39 0x0130da38 >
+MAPUPPER < 0x0130db31 0x0130db30 >
+MAPUPPER < 0x0130db33 0x0130db32 >
+MAPUPPER < 0x0130db35 0x0130db34 >
+MAPUPPER < 0x0130db37 0x0130db36 >
+MAPUPPER < 0x0130db39 0x0130db38 >
+MAPUPPER < 0x0130dc31 0x0130dc30 >
+MAPUPPER < 0x0130dc33 0x0130dc32 >
+MAPUPPER < 0x0130dc35 0x0130dc34 >
+MAPUPPER < 0x0130dc37 0x0130dc36 >
+MAPUPPER < 0x0130dc39 0x0130dc38 >
+MAPUPPER < 0x0130dd31 0x0130dd30 >
+MAPUPPER < 0x0130dd33 0x0130dd32 >
+MAPUPPER < 0x0130dd35 0x0130dd34 >
+MAPUPPER < 0x0130dd37 0x0130dd36 >
+MAPUPPER < 0x0130dd39 0x0130dd38 >
+MAPUPPER < 0x0130de32 0x0130de31 >
+MAPUPPER < 0x0130de34 0x0130de33 >
+MAPUPPER < 0x0130de36 0x0130de35 >
+MAPUPPER < 0x0130de38 0x0130de37 >
+MAPUPPER < 0x0130df30 0x0130de39 >
+MAPUPPER < 0x0130df32 0x0130df31 >
+MAPUPPER < 0x0130df34 0x0130df33 >
+MAPUPPER < 0x0130df37 0x0130df36 >
+MAPUPPER < 0x0130df39 0x0130df38 >
+MAPUPPER < 0x0130e031 0x0130e030 >
+MAPUPPER < 0x0130e033 0x0130e032 >
+MAPUPPER < 0x0130e035 0x0130e034 >
+MAPUPPER < 0x0130e037 0x0130e036 >
+MAPUPPER < 0x0130e039 0x0130e038 >
+MAPUPPER < 0x0130e131 0x0130e130 >
+MAPUPPER < 0x0130e133 0x0130e132 >
+MAPUPPER < 0x0130e135 0x0130e134 >
+MAPUPPER < 0x0130e137 0x0130e136 >
+MAPUPPER < 0x0130e139 0x0130e138 >
+MAPUPPER < 0x0130e231 0x0130e230 >
+MAPUPPER < 0x0130e233 0x0130e232 >
+MAPUPPER < 0x0130e235 0x0130e234 >
+MAPUPPER < 0x0130e237 0x0130e236 >
+MAPUPPER < 0x0130e239 0x0130e238 >
+MAPUPPER < 0x0130e331 0x0130e330 >
+MAPUPPER < 0x0130e333 0x0130e332 >
+MAPUPPER < 0x0130e337 0x0130e336 >
+MAPUPPER < 0x0130e435 0x0130e434 >
+MAPUPPER < 0x0130e437 0x0130e436 >
+MAPUPPER < 0x0130e439 0x0130e438 >
+MAPUPPER < 0x0130e531 0x0130e530 >
+MAPUPPER < 0x0130e533 0x0130e532 >
+MAPUPPER < 0x0130e535 0x0130e534 >
+MAPUPPER < 0x0130e537 0x0130e536 >
+MAPUPPER < 0x0130e539 0x0130e538 >
+MAPUPPER < 0x0130ee31 - 0x0130ee37 : 0x0130e933 >
+MAPUPPER < 0x0130ee38 - 0x0130ee39 : 0x0130ea30 >
+MAPUPPER < 0x0130ef30 - 0x0130ef37 : 0x0130ea32 >
+MAPUPPER < 0x0130ef38 - 0x0130ef39 : 0x0130eb30 >
+MAPUPPER < 0x0130f030 - 0x0130f037 : 0x0130eb32 >
+MAPUPPER < 0x0130f038 - 0x0130f039 : 0x0130ec30 >
+MAPUPPER < 0x0130f130 - 0x0130f137 : 0x0130ec32 >
+MAPUPPER < 0x0130f138 0x0130ed30 >
+MAPUPPER < 0x0135ee35 0x0135ee34 >
+MAPUPPER < 0x0135ee37 0x0135ee36 >
+MAPUPPER < 0x0135ee39 0x0135ee38 >
+MAPUPPER < 0x0135ef31 0x0135ef30 >
+MAPUPPER < 0x0135ef33 0x0135ef32 >
+MAPUPPER < 0x0135ef35 0x0135ef34 >
+MAPUPPER < 0x0135ef37 0x0135ef36 >
+MAPUPPER < 0x0135ef39 0x0135ef38 >
+MAPUPPER < 0x0135f031 0x0135f030 >
+MAPUPPER < 0x0135f033 0x0135f032 >
+MAPUPPER < 0x0135f035 0x0135f034 >
+MAPUPPER < 0x0135f037 0x0135f036 >
+MAPUPPER < 0x0135f039 0x0135f038 >
+MAPUPPER < 0x0135f131 0x0135f130 >
+MAPUPPER < 0x0135f133 0x0135f132 >
+MAPUPPER < 0x0135f135 0x0135f134 >
+MAPUPPER < 0x0135f137 0x0135f136 >
+MAPUPPER < 0x0135f139 0x0135f138 >
+MAPUPPER < 0x0135f231 0x0135f230 >
+MAPUPPER < 0x0135f233 0x0135f232 >
+MAPUPPER < 0x0135f235 0x0135f234 >
+MAPUPPER < 0x0135f237 0x0135f236 >
+MAPUPPER < 0x0135f239 0x0135f238 >
+MAPUPPER < 0x0135f331 0x0135f330 >
+MAPUPPER < 0x0135f333 0x0135f332 >
+MAPUPPER < 0x0135f335 0x0135f334 >
+MAPUPPER < 0x0135f337 0x0135f336 >
+MAPUPPER < 0x0135f339 0x0135f338 >
+MAPUPPER < 0x0135f431 0x0135f430 >
+MAPUPPER < 0x0135f433 0x0135f432 >
+MAPUPPER < 0x0135f435 0x0135f434 >
+MAPUPPER < 0x0135f437 0x0135f436 >
+MAPUPPER < 0x0135f439 0x0135f438 >
+MAPUPPER < 0x0135f531 0x0135f530 >
+MAPUPPER < 0x0135f533 0x0135f532 >
+MAPUPPER < 0x0135f535 0x0135f534 >
+MAPUPPER < 0x0135f537 0x0135f536 >
+MAPUPPER < 0x0135f539 0x0135f538 >
+MAPUPPER < 0x0135f631 0x0135f630 >
+MAPUPPER < 0x0135f633 0x0135f632 >
+MAPUPPER < 0x0135f635 0x0135f634 >
+MAPUPPER < 0x0135f637 0x0135f636 >
+MAPUPPER < 0x0135f639 0x0135f638 >
+MAPUPPER < 0x0135f731 0x0135f730 >
+MAPUPPER < 0x0135f733 0x0135f732 >
+MAPUPPER < 0x0135f735 0x0135f734 >
+MAPUPPER < 0x0135f737 0x0135f736 >
+MAPUPPER < 0x0135f739 0x0135f738 >
+MAPUPPER < 0x0135f831 0x0135f830 >
+MAPUPPER < 0x0135f833 0x0135f832 >
+MAPUPPER < 0x0135f835 0x0135f834 >
+MAPUPPER < 0x0135f837 0x0135f836 >
+MAPUPPER < 0x0135f839 0x0135f838 >
+MAPUPPER < 0x0135f931 0x0135f930 >
+MAPUPPER < 0x0135f933 0x0135f932 >
+MAPUPPER < 0x0135f935 0x0135f934 >
+MAPUPPER < 0x0135f937 0x0135f936 >
+MAPUPPER < 0x0135f939 0x0135f938 >
+MAPUPPER < 0x0135fa31 0x0135fa30 >
+MAPUPPER < 0x0135fa33 0x0135fa32 >
+MAPUPPER < 0x0135fa35 0x0135fa34 >
+MAPUPPER < 0x0135fa37 0x0135fa36 >
+MAPUPPER < 0x0135fa39 0x0135fa38 >
+MAPUPPER < 0x0135fb31 0x0135fb30 >
+MAPUPPER < 0x0135fb33 0x0135fb32 >
+MAPUPPER < 0x0135fb35 0x0135fb34 >
+MAPUPPER < 0x0135fb37 0x0135fb36 >
+MAPUPPER < 0x0135fb39 0x0135fb38 >
+MAPUPPER < 0x0135fc31 0x0135fc30 >
+MAPUPPER < 0x0135fc33 0x0135fc32 >
+MAPUPPER < 0x0135fc35 0x0135fc34 >
+MAPUPPER < 0x0135fc37 0x0135fc36 >
+MAPUPPER < 0x0135fc39 0x0135fc38 >
+MAPUPPER < 0x0135fd31 0x0135fd30 >
+MAPUPPER < 0x0135fd33 0x0135fd32 >
+MAPUPPER < 0x0135fd39 0x0135f830 >
+MAPUPPER < 0x0135fe35 0x0135fe34 >
+MAPUPPER < 0x0135fe37 0x0135fe36 >
+MAPUPPER < 0x0135fe39 0x0135fe38 >
+MAPUPPER < 0x01368131 0x01368130 >
+MAPUPPER < 0x01368133 0x01368132 >
+MAPUPPER < 0x01368135 0x01368134 >
+MAPUPPER < 0x01368137 0x01368136 >
+MAPUPPER < 0x01368139 0x01368138 >
+MAPUPPER < 0x01368231 0x01368230 >
+MAPUPPER < 0x01368233 0x01368232 >
+MAPUPPER < 0x01368235 0x01368234 >
+MAPUPPER < 0x01368237 0x01368236 >
+MAPUPPER < 0x01368239 0x01368238 >
+MAPUPPER < 0x01368331 0x01368330 >
+MAPUPPER < 0x01368333 0x01368332 >
+MAPUPPER < 0x01368335 0x01368334 >
+MAPUPPER < 0x01368337 0x01368336 >
+MAPUPPER < 0x01368339 0x01368338 >
+MAPUPPER < 0x01368431 0x01368430 >
+MAPUPPER < 0x01368433 0x01368432 >
+MAPUPPER < 0x01368435 0x01368434 >
+MAPUPPER < 0x01368437 0x01368436 >
+MAPUPPER < 0x01368439 0x01368438 >
+MAPUPPER < 0x01368531 0x01368530 >
+MAPUPPER < 0x01368533 0x01368532 >
+MAPUPPER < 0x01368535 0x01368534 >
+MAPUPPER < 0x01368537 0x01368536 >
+MAPUPPER < 0x01368539 0x01368538 >
+MAPUPPER < 0x01368631 0x01368630 >
+MAPUPPER < 0x01368633 0x01368632 >
+MAPUPPER < 0x01368635 0x01368634 >
+MAPUPPER < 0x01368637 0x01368636 >
+MAPUPPER < 0x01368639 0x01368638 >
+MAPUPPER < 0x01368731 0x01368730 >
+MAPUPPER < 0x01368733 0x01368732 >
+MAPUPPER < 0x01368735 0x01368734 >
+MAPUPPER < 0x01368737 0x01368736 >
+MAPUPPER < 0x01368739 0x01368738 >
+MAPUPPER < 0x01368831 0x01368830 >
+MAPUPPER < 0x01368833 0x01368832 >
+MAPUPPER < 0x01368835 0x01368834 >
+MAPUPPER < 0x01368837 0x01368836 >
+MAPUPPER < 0x01368839 0x01368838 >
+MAPUPPER < 0x01368931 0x01368930 >
+MAPUPPER < 0x01368933 0x01368932 >
+MAPUPPER < 0x01368a30 - 0x01368a31 : 0x01368a38 >
+MAPUPPER < 0x01368a32 - 0x01368a37 : 0x01368b30 >
+MAPUPPER < 0x01368b36 - 0x01368b39 : 0x01368c34 >
+MAPUPPER < 0x01368c30 - 0x01368c31 : 0x01368c38 >
+MAPUPPER < 0x01368d32 - 0x01368d39 : 0x01368e30 >
+MAPUPPER < 0x01368e38 - 0x01368e39 : 0x01368f36 >
+MAPUPPER < 0x01368f30 - 0x01368f31 : 0x01368f38 >
+MAPUPPER < 0x01368f32 - 0x01368f35 : 0x01369030 >
+MAPUPPER < 0x01369034 - 0x01369039 : 0x01369132 >
+MAPUPPER < 0x01369231 0x01369239 >
+MAPUPPER < 0x01369233 0x01369331 >
+MAPUPPER < 0x01369235 0x01369333 >
+MAPUPPER < 0x01369237 0x01369335 >
+MAPUPPER < 0x01369336 - 0x01369339 : 0x01369434 >
+MAPUPPER < 0x01369430 - 0x01369431 : 0x01369438 >
+MAPUPPER < 0x01369432 - 0x01369433 : 0x01369530 >
+MAPUPPER < 0x01369532 - 0x01369533 : 0x01369c36 >
+MAPUPPER < 0x01369534 - 0x01369537 : 0x01369e30 >
+MAPUPPER < 0x01369538 - 0x01369539 : 0x01369f38 >
+MAPUPPER < 0x01369630 - 0x01369631 : 0x0136a238 >
+MAPUPPER < 0x01369632 - 0x01369633 : 0x0136a134 >
+MAPUPPER < 0x01369634 - 0x01369635 : 0x0136a330 >
+MAPUPPER < 0x01369638 - 0x01369639 : 0x01369736 >
+MAPUPPER < 0x01369730 - 0x01369731 : 0x01369738 >
+MAPUPPER < 0x01369732 - 0x01369735 : 0x01369830 >
+MAPUPPER < 0x01369834 - 0x01369839 : 0x01369932 >
+MAPUPPER < 0x01369930 - 0x01369931 : 0x01369938 >
+MAPUPPER < 0x01369a30 - 0x01369a31 : 0x01369a38 >
+MAPUPPER < 0x01369a32 - 0x01369a37 : 0x01369b30 >
+MAPUPPER < 0x01369b36 - 0x01369b37 : 0x01369c34 >
+MAPUPPER < 0x01369b39 0x01369c38 >
+MAPUPPER < 0x01369d30 0xa6a9 >
+MAPUPPER < 0x01369d35 0x01369e34 >
+MAPUPPER < 0x01369e38 - 0x01369e39 : 0x01369f36 >
+MAPUPPER < 0x0136a034 - 0x0136a035 : 0x0136a132 >
+MAPUPPER < 0x0136a039 0x0136a136 >
+MAPUPPER < 0x0136a233 0x0136a332 >
+MAPUPPER < 0x0136c530 - 0x0136c531 : 0xa2fb >
+MAPUPPER < 0x0136c532 - 0x0136c535 : 0x0136c436 >
+MAPUPPER < 0x01379238 - 0x01379239 : 0x01379032 >
+MAPUPPER < 0x01379330 - 0x01379335 : 0x01379034 >
+MAPUPPER < 0x01379336 - 0x01379339 : 0x01379130 >
+MAPUPPER < 0x01379430 - 0x01379435 : 0x01379134 >
+MAPUPPER < 0x01379436 - 0x01379439 : 0x01379230 >
+MAPUPPER < 0x01379530 - 0x01379533 : 0x01379234 >
+PHONOGRAM 0x0132e834
+PHONOGRAM 0x0133b732 - 0x0133b738
+PHONOGRAM 0x0133b830 - 0x0133b839
+PHONOGRAM 0x0133b930 - 0x0133b939
+PHONOGRAM 0x0133ba30 - 0x0133ba39
+PHONOGRAM 0x0133bb30 - 0x0133bb39
+PHONOGRAM 0x0133bc30 - 0x0133bc39
+PHONOGRAM 0x0133bd30 - 0x0133bd39
+PHONOGRAM 0x0133be30 - 0x0133be32 0x0133be34 0x0133be36 - 0x0133be39
+PHONOGRAM 0x0133bf32 - 0x0133bf38
+PHONOGRAM 0x0133c030 0x0133c032 - 0x0133c035 0x0133c038 0x0133c039
+PHONOGRAM 0x0133c130 - 0x0133c139
+PHONOGRAM 0x0133c230 - 0x0133c239
+PHONOGRAM 0x0133c330 - 0x0133c339
+PHONOGRAM 0x0133c430 - 0x0133c436 0x0133c438
+PHONOGRAM 0x0133c530 - 0x0133c533 0x0133c536 - 0x0133c539
+PHONOGRAM 0x0133c630 - 0x0133c639
+PHONOGRAM 0x0133c730 - 0x0133c739
+PHONOGRAM 0x0133c830 - 0x0133c836 0x0133c838
+PHONOGRAM 0x0133c930 - 0x0133c933 0x0133c936 - 0x0133c939
+PHONOGRAM 0x0133ca30 - 0x0133ca32 0x0133ca34 0x0133ca36 - 0x0133ca39
+PHONOGRAM 0x0133cb32 - 0x0133cb38
+PHONOGRAM 0x0133cc30 - 0x0133cc36 0x0133cc38 0x0133cc39
+PHONOGRAM 0x0133cd30 - 0x0133cd39
+PHONOGRAM 0x0133ce30 - 0x0133ce39
+PHONOGRAM 0x0133cf30 0x0133cf32 - 0x0133cf39
+PHONOGRAM 0x0133d030 - 0x0133d039
+PHONOGRAM 0x0133d130 - 0x0133d139
+PHONOGRAM 0x0133d230 - 0x0133d232 0x0133d234 0x0133d236 - 0x0133d239
+PHONOGRAM 0x0133d332 - 0x0133d338
+PHONOGRAM 0x0133d430 - 0x0133d439
+PHONOGRAM 0x0133d530 - 0x0133d539
+PHONOGRAM 0x0133d630 - 0x0133d639
+PHONOGRAM 0x0133d730 - 0x0133d738
+PHONOGRAM 0x0133d830 - 0x0133d839
+PHONOGRAM 0x0133d930 - 0x0133d938
+PHONOGRAM 0x0133ea35 - 0x0133ea39
+PHONOGRAM 0x0133eb30 - 0x0133eb39
+PHONOGRAM 0x0133ec30 - 0x0133ec39
+PHONOGRAM 0x0133ed30 - 0x0133ed39
+PHONOGRAM 0x0133ee30 - 0x0133ee39
+PHONOGRAM 0x0133ef30 - 0x0133ef39
+PHONOGRAM 0x0133f030 - 0x0133f039
+PHONOGRAM 0x0133f130 - 0x0133f139
+PHONOGRAM 0x0133f230 - 0x0133f239
+PHONOGRAM 0x0133f330 - 0x0133f339
+PHONOGRAM 0x0133f430 - 0x0133f439
+PHONOGRAM 0x0133f530 - 0x0133f539
+PHONOGRAM 0x0133f630 - 0x0133f639
+PHONOGRAM 0x0133f730 - 0x0133f739
+PHONOGRAM 0x0133f830 - 0x0133f839
+PHONOGRAM 0x0133f930 - 0x0133f939
+PHONOGRAM 0x0133fa30 - 0x0133fa39
+PHONOGRAM 0x0133fb30 - 0x0133fb39
+PHONOGRAM 0x0133fc30 - 0x0133fc39
+PHONOGRAM 0x0133fd30 - 0x0133fd39
+PHONOGRAM 0x0133fe30 - 0x0133fe39
+PHONOGRAM 0x01348130 - 0x01348139
+PHONOGRAM 0x01348230 - 0x01348239
+PHONOGRAM 0x01348330 - 0x01348339
+PHONOGRAM 0x01348430 - 0x01348439
+PHONOGRAM 0x01348530 - 0x01348539
+PHONOGRAM 0x01348630 - 0x01348639
+PHONOGRAM 0x01348730 - 0x01348739
+PHONOGRAM 0x01348830 - 0x01348839
+PHONOGRAM 0x01348930 - 0x01348939
+PHONOGRAM 0x01348a30 - 0x01348a39
+PHONOGRAM 0x01348b30 - 0x01348b39
+PHONOGRAM 0x01348c30 - 0x01348c39
+PHONOGRAM 0x01348d30 - 0x01348d39
+PHONOGRAM 0x01348e30 - 0x01348e39
+PHONOGRAM 0x01348f30 - 0x01348f39
+PHONOGRAM 0x01349030 - 0x01349039
+PHONOGRAM 0x01349130 - 0x01349139
+PHONOGRAM 0x01349230 - 0x01349239
+PHONOGRAM 0x01349330 - 0x01349339
+PHONOGRAM 0x01349430 - 0x01349439
+PHONOGRAM 0x01349530 - 0x01349539
+PHONOGRAM 0x01349630 - 0x01349639
+PHONOGRAM 0x01349730 - 0x01349739
+PHONOGRAM 0x01349830 - 0x01349839
+PHONOGRAM 0x01349930 - 0x01349939
+PHONOGRAM 0x01349a30 - 0x01349a39
+PHONOGRAM 0x01349b30 - 0x01349b39
+PHONOGRAM 0x01349c30 - 0x01349c39
+PHONOGRAM 0x01349d30 - 0x01349d39
+PHONOGRAM 0x01349e30 - 0x01349e39
+PHONOGRAM 0x01349f30 - 0x01349f39
+PHONOGRAM 0x0134a030 - 0x0134a039
+PHONOGRAM 0x0134a130 - 0x0134a139
+PHONOGRAM 0x0134a230 - 0x0134a239
+PHONOGRAM 0x0134a330 - 0x0134a339
+PHONOGRAM 0x0134a430 - 0x0134a439
+PHONOGRAM 0x0134a530 - 0x0134a539
+PHONOGRAM 0x0134a630 - 0x0134a639
+PHONOGRAM 0x0134a730 - 0x0134a739
+PHONOGRAM 0x0134a830 - 0x0134a839
+PHONOGRAM 0x0134a930 - 0x0134a939
+PHONOGRAM 0x0134aa30 - 0x0134aa34 0x0134aa37 - 0x0134aa39
+PHONOGRAM 0x0134ab30 - 0x0134ab34
+PHONOGRAM 0x0139a636 - 0x0139a638
+PHONOGRAM 0x0139a733 0x0139a735 - 0x0139a738
+PHONOGRAM 0x0139a830
+PHONOGRAM 0x0139a933 - 0x0139a939
+PHONOGRAM 0x0139aa30 - 0x0139aa39
+PHONOGRAM 0x0139ab30 - 0x0139ab39
+PHONOGRAM 0x0139ac30 - 0x0139ac39
+PHONOGRAM 0x0139ad30 - 0x0139ad39
+PHONOGRAM 0x0139ae30 - 0x0139ae33 0x0139ae35 - 0x0139ae39
+PHONOGRAM 0x0139af30 - 0x0139af39
+PHONOGRAM 0x0139b030 - 0x0139b039
+PHONOGRAM 0x0139b130 - 0x0139b139
+PHONOGRAM 0x0139b230 - 0x0139b236
+PHONOGRAM 0x0139bc34 - 0x0139bc39
+PHONOGRAM 0x0139bd30 - 0x0139bd39
+PHONOGRAM 0x02359833 - 0x02359839
+PHONOGRAM 0x02359930 - 0x02359939
+PHONOGRAM 0x02359a30 - 0x02359a39
+PHONOGRAM 0x02359b30 - 0x02359b39
+PHONOGRAM 0x02359c30 - 0x02359c39
+PHONOGRAM 0x02359d30 - 0x02359d39
+PHONOGRAM 0x02359e30 - 0x02359e39
+PHONOGRAM 0x02359f30 - 0x02359f39
+PHONOGRAM 0x0235a030 - 0x0235a039
+PHONOGRAM 0x0235a130 - 0x0235a139
+PHONOGRAM 0x0235a230 - 0x0235a239
+PHONOGRAM 0x0235a330 - 0x0235a339
+PHONOGRAM 0x0235a430 - 0x0235a439
+PHONOGRAM 0x0235a530 - 0x0235a539
+PHONOGRAM 0x0235a630 - 0x0235a639
+PHONOGRAM 0x0235a730 - 0x0235a739
+PHONOGRAM 0x0235a830 - 0x0235a839
+PHONOGRAM 0x0235a930 - 0x0235a939
+PHONOGRAM 0x0235aa30 - 0x0235aa39
+PHONOGRAM 0x0235ab30 - 0x0235ab39
+PHONOGRAM 0x0235ac30 - 0x0235ac39
+PHONOGRAM 0x0235ad30 - 0x0235ad39
+PHONOGRAM 0x0235ae30 - 0x0235ae39
+PHONOGRAM 0x0235af30 - 0x0235af39
+PHONOGRAM 0x0235b030 - 0x0235b039
+PHONOGRAM 0x0235b130 - 0x0235b139
+PHONOGRAM 0x0235b230 - 0x0235b239
+PHONOGRAM 0x0235b330 - 0x0235b339
+PHONOGRAM 0x0235b430 - 0x0235b439
+PHONOGRAM 0x0235b530 - 0x0235b539
+PHONOGRAM 0x0235b630 - 0x0235b639
+PHONOGRAM 0x0235b730 - 0x0235b739
+PHONOGRAM 0x0235b830 - 0x0235b839
+PHONOGRAM 0x0235b930 - 0x0235b939
+PHONOGRAM 0x0235ba30 - 0x0235ba39
+PHONOGRAM 0x0235bb30 - 0x0235bb39
+PHONOGRAM 0x0235bc30 - 0x0235bc39
+PHONOGRAM 0x0235bd30 - 0x0235bd39
+PHONOGRAM 0x0235be30 - 0x0235be39
+PHONOGRAM 0x0235bf30 - 0x0235bf39
+PHONOGRAM 0x0235c030 - 0x0235c039
+PHONOGRAM 0x0235c130 - 0x0235c139
+PHONOGRAM 0x0235c230 - 0x0235c239
+PHONOGRAM 0x0235c330 - 0x0235c339
+PHONOGRAM 0x0235c430 - 0x0235c439
+PHONOGRAM 0x0235c530 - 0x0235c539
+PHONOGRAM 0x0235c630 - 0x0235c639
+PHONOGRAM 0x0235c730 - 0x0235c739
+PHONOGRAM 0x0235c830 - 0x0235c839
+PHONOGRAM 0x0235c930 - 0x0235c939
+PHONOGRAM 0x0235ca30 - 0x0235ca39
+PHONOGRAM 0x0235cb30 - 0x0235cb39
+PHONOGRAM 0x0235cc30 - 0x0235cc39
+PHONOGRAM 0x0235cd30 - 0x0235cd39
+PHONOGRAM 0x0235ce30 - 0x0235ce39
+PHONOGRAM 0x0235cf30 - 0x0235cf39
+PHONOGRAM 0x0235d030 - 0x0235d039
+PHONOGRAM 0x0235d130 - 0x0235d139
+PHONOGRAM 0x0235d230 - 0x0235d239
+PHONOGRAM 0x0235d330 - 0x0235d339
+PHONOGRAM 0x0235d430 - 0x0235d439
+PHONOGRAM 0x0235d530 - 0x0235d539
+PHONOGRAM 0x0235d630 - 0x0235d639
+PHONOGRAM 0x0235d730 - 0x0235d739
+PHONOGRAM 0x0235d830 - 0x0235d839
+PHONOGRAM 0x0235d930 - 0x0235d939
+PHONOGRAM 0x0235da30 - 0x0235da39
+PHONOGRAM 0x0235db30 - 0x0235db39
+PHONOGRAM 0x0235dc30 - 0x0235dc39
+PHONOGRAM 0x0235dd30 - 0x0235dd39
+PHONOGRAM 0x0235de30 - 0x0235de39
+PHONOGRAM 0x0235df30 - 0x0235df39
+PHONOGRAM 0x0235e030 - 0x0235e039
+PHONOGRAM 0x0235e130 - 0x0235e139
+PHONOGRAM 0x0235e230 - 0x0235e239
+PHONOGRAM 0x0235e330 - 0x0235e339
+PHONOGRAM 0x0235e430 - 0x0235e439
+PHONOGRAM 0x0235e530 - 0x0235e539
+PHONOGRAM 0x0235e630 - 0x0235e639
+PHONOGRAM 0x0235e730 - 0x0235e739
+PHONOGRAM 0x0235e830 - 0x0235e839
+PHONOGRAM 0x0235e930 - 0x0235e939
+PHONOGRAM 0x0235ea30 - 0x0235ea39
+PHONOGRAM 0x0235eb30 - 0x0235eb39
+PHONOGRAM 0x0235ec30 - 0x0235ec39
+PHONOGRAM 0x0235ed30 - 0x0235ed39
+PHONOGRAM 0x0235ee30 - 0x0235ee39
+PHONOGRAM 0x0235ef30 - 0x0235ef39
+PHONOGRAM 0x0235f030 - 0x0235f039
+PHONOGRAM 0x0235f130 - 0x0235f139
+PHONOGRAM 0x0235f230 - 0x0235f239
+PHONOGRAM 0x0235f330 - 0x0235f339
+PHONOGRAM 0x0235f430 - 0x0235f439
+PHONOGRAM 0x0235f530 - 0x0235f539
+PHONOGRAM 0x0235f630 - 0x0235f639
+PHONOGRAM 0x0235f730 - 0x0235f739
+PHONOGRAM 0x0235f830 - 0x0235f839
+PHONOGRAM 0x0235f930 - 0x0235f939
+PHONOGRAM 0x0235fa30 - 0x0235fa39
+PHONOGRAM 0x0235fb30 - 0x0235fb39
+PHONOGRAM 0x0235fc30 - 0x0235fc39
+PHONOGRAM 0x0235fd30 - 0x0235fd39
+PHONOGRAM 0x0235fe30 - 0x0235fe39
+PHONOGRAM 0x02368130 - 0x02368139
+PHONOGRAM 0x02368230 - 0x02368239
+PHONOGRAM 0x02368330 - 0x02368339
+PHONOGRAM 0x02368430 - 0x02368439
+PHONOGRAM 0x02368530 - 0x02368539
+PHONOGRAM 0x02368630 - 0x02368639
+PHONOGRAM 0x02368730 - 0x02368739
+PHONOGRAM 0x02368830 - 0x02368839
+PHONOGRAM 0x02368930 - 0x02368939
+PHONOGRAM 0x02368a30 - 0x02368a39
+PHONOGRAM 0x02368b30 - 0x02368b39
+PHONOGRAM 0x02368c30 - 0x02368c39
+PHONOGRAM 0x02368d30 - 0x02368d39
+PHONOGRAM 0x02368e30 - 0x02368e37
+PHONOGRAM 0x0237cf35 - 0x0237cf39
+PHONOGRAM 0x0237d030 - 0x0237d039
+PHONOGRAM 0x0237d130 - 0x0237d139
+PHONOGRAM 0x0237d230 - 0x0237d239
+PHONOGRAM 0x0237d330 - 0x0237d339
+PHONOGRAM 0x0237d430 - 0x0237d439
+PHONOGRAM 0x0237d530 - 0x0237d539
+PHONOGRAM 0x0237d630 - 0x0237d639
+PHONOGRAM 0x0237d730 - 0x0237d739
+PHONOGRAM 0x0237d830 - 0x0237d839
+PHONOGRAM 0x0237d930 - 0x0237d939
+PHONOGRAM 0x0237da30 - 0x0237da39
+PHONOGRAM 0x0237db30 - 0x0237db39
+PHONOGRAM 0x0237dc30 - 0x0237dc39
+PHONOGRAM 0x0237dd30 - 0x0237dd39
+PHONOGRAM 0x0237de30 - 0x0237de39
+PHONOGRAM 0x0237df30 - 0x0237df39
+PHONOGRAM 0x0237e030 - 0x0237e039
+PHONOGRAM 0x0237e130 - 0x0237e139
+PHONOGRAM 0x0237e230 - 0x0237e239
+PHONOGRAM 0x0237e330 - 0x0237e339
+PHONOGRAM 0x0237e430 - 0x0237e439
+PHONOGRAM 0x0237e530 - 0x0237e539
+PHONOGRAM 0x0237e630 - 0x0237e639
+PHONOGRAM 0x0237e730 - 0x0237e739
+PHONOGRAM 0x0237e830 - 0x0237e839
+PHONOGRAM 0x0237e930 - 0x0237e939
+PHONOGRAM 0x0237ea30 - 0x0237ea39
+PHONOGRAM 0x0237eb30 - 0x0237eb39
+PHONOGRAM 0x0237ec30 - 0x0237ec39
+PHONOGRAM 0x0237ed30 - 0x0237ed39
+PHONOGRAM 0x0237ee30 - 0x0237ee39
+PHONOGRAM 0x0237ef30 - 0x0237ef39
+PHONOGRAM 0x0237f030 - 0x0237f039
+PHONOGRAM 0x0237f130 - 0x0237f139
+PHONOGRAM 0x0237f230 - 0x0237f239
+PHONOGRAM 0x0237f330 - 0x0237f339
+PHONOGRAM 0x0237f430 - 0x0237f439
+PHONOGRAM 0x0237f530 - 0x0237f539
+PHONOGRAM 0x0237f630 - 0x0237f639
+PHONOGRAM 0x0237f730 - 0x0237f739
+PHONOGRAM 0x0237f830 - 0x0237f839
+PHONOGRAM 0x0237f930 - 0x0237f939
+PHONOGRAM 0x0237fa30 - 0x0237fa39
+PHONOGRAM 0x0237fb30 - 0x0237fb39
+PHONOGRAM 0x0237fc30 - 0x0237fc39
+PHONOGRAM 0x0237fd30 - 0x0237fd39
+PHONOGRAM 0x0237fe30 - 0x0237fe39
+PHONOGRAM 0x02388130 - 0x02388139
+PHONOGRAM 0x02388230 - 0x02388239
+PHONOGRAM 0x02388330 - 0x02388339
+PHONOGRAM 0x02388430 - 0x02388439
+PHONOGRAM 0x02388530 - 0x02388539
+PHONOGRAM 0x02388630 - 0x02388639
+PHONOGRAM 0x02388730 - 0x02388739
+PHONOGRAM 0x02388830 - 0x02388839
+PHONOGRAM 0x02388930 - 0x02388939
+PHONOGRAM 0x02388a30 - 0x02388a39
+PHONOGRAM 0x02388b30 - 0x02388b39
+PHONOGRAM 0x02388c30 - 0x02388c39
+PHONOGRAM 0x02388d30 - 0x02388d39
+PHONOGRAM 0x02388e30 - 0x02388e39
+PHONOGRAM 0x02388f30 - 0x02388f39
+PHONOGRAM 0x02389030 - 0x02389039
+PHONOGRAM 0x02389130 - 0x02389139
+PHONOGRAM 0x02389230 - 0x02389239
+PHONOGRAM 0x02389330 - 0x02389339
+PHONOGRAM 0x02389430 - 0x02389439
+PHONOGRAM 0x02389530 - 0x02389539
+PHONOGRAM 0x02389630 - 0x02389639
+PHONOGRAM 0x02389730 - 0x02389739
+PHONOGRAM 0x02389830 - 0x02389839
+PHONOGRAM 0x02389930 - 0x02389939
+PHONOGRAM 0x02389a30 - 0x02389a39
+PHONOGRAM 0x02389b30 - 0x02389b39
+PHONOGRAM 0x02389c30 - 0x02389c39
+PHONOGRAM 0x02389d30 - 0x02389d39
+PHONOGRAM 0x02389e30 - 0x02389e39
+PHONOGRAM 0x02389f30 - 0x02389f39
+PHONOGRAM 0x0238a030 - 0x0238a039
+PHONOGRAM 0x0238a130 - 0x0238a139
+PHONOGRAM 0x0238a230 - 0x0238a239
+PHONOGRAM 0x0238a330 - 0x0238a339
+PHONOGRAM 0x0238a430 - 0x0238a439
+PHONOGRAM 0x0238a530 - 0x0238a539
+PHONOGRAM 0x0238a630 - 0x0238a639
+PHONOGRAM 0x0238a730 - 0x0238a739
+PHONOGRAM 0x0238a830 - 0x0238a839
+PHONOGRAM 0x0238a930 - 0x0238a939
+PHONOGRAM 0x0238aa30 - 0x0238aa39
+PHONOGRAM 0x0238ab30 - 0x0238ab39
+PHONOGRAM 0x0238ac30 - 0x0238ac39
+PHONOGRAM 0x0238ad30 - 0x0238ad39
+PHONOGRAM 0x0238ae30 - 0x0238ae39
+PHONOGRAM 0x0238af30 - 0x0238af39
+PHONOGRAM 0x0238b030 - 0x0238b039
+PHONOGRAM 0x0238b130 - 0x0238b139
+PHONOGRAM 0x0238b230 - 0x0238b239
+PHONOGRAM 0x0238b330 - 0x0238b339
+PHONOGRAM 0x0238b430 - 0x0238b439
+PHONOGRAM 0x0238b530 - 0x0238b539
+PHONOGRAM 0x0238b630 - 0x0238b639
+PHONOGRAM 0x0238b730 - 0x0238b739
+PHONOGRAM 0x0238b830 - 0x0238b839
+PHONOGRAM 0x0238b930 - 0x0238b939
+PHONOGRAM 0x0238ba30 - 0x0238ba39
+PHONOGRAM 0x0238bb30 - 0x0238bb39
+PHONOGRAM 0x0238bc30 - 0x0238bc39
+PHONOGRAM 0x0238bd30 - 0x0238bd39
+PHONOGRAM 0x0238be30 - 0x0238be39
+PHONOGRAM 0x0238bf30 - 0x0238bf39
+PHONOGRAM 0x0238c030 - 0x0238c039
+PHONOGRAM 0x0238c130 - 0x0238c139
+PHONOGRAM 0x0238c230 - 0x0238c239
+PHONOGRAM 0x0238c330 - 0x0238c339
+PHONOGRAM 0x0238c430 - 0x0238c439
+PHONOGRAM 0x0238c530 - 0x0238c539
+PHONOGRAM 0x0238c630 - 0x0238c639
+PHONOGRAM 0x0238c730 - 0x0238c739
+PHONOGRAM 0x0238c830 - 0x0238c839
+PHONOGRAM 0x0238c930 - 0x0238c939
+PHONOGRAM 0x0238ca30 - 0x0238ca39
+PHONOGRAM 0x0238cb30 - 0x0238cb39
+PHONOGRAM 0x0238cc30 - 0x0238cc39
+PHONOGRAM 0x0238cd30 - 0x0238cd39
+PHONOGRAM 0x0238ce30 - 0x0238ce39
+PHONOGRAM 0x0238cf30 - 0x0238cf39
+PHONOGRAM 0x0238d030 - 0x0238d039
+PHONOGRAM 0x0238d130 - 0x0238d139
+PHONOGRAM 0x0238d230 - 0x0238d239
+PHONOGRAM 0x0238d330 - 0x0238d339
+PHONOGRAM 0x0238d430 - 0x0238d439
+PHONOGRAM 0x0238d530 - 0x0238d539
+PHONOGRAM 0x0238d630 - 0x0238d639
+PHONOGRAM 0x0238d730 - 0x0238d739
+PHONOGRAM 0x0238d830 - 0x0238d839
+PHONOGRAM 0x0238d930 - 0x0238d939
+PHONOGRAM 0x0238da30 - 0x0238da39
+PHONOGRAM 0x0238db30 - 0x0238db39
+PHONOGRAM 0x0238dc30 - 0x0238dc39
+PHONOGRAM 0x0238dd30 - 0x0238dd39
+PHONOGRAM 0x0238de30 - 0x0238de39
+PHONOGRAM 0x0238df30 - 0x0238df39
+PHONOGRAM 0x0238e030 - 0x0238e039
+PHONOGRAM 0x0238e130 - 0x0238e139
+PHONOGRAM 0x0238e230 - 0x0238e239
+PHONOGRAM 0x0238e330 - 0x0238e339
+PHONOGRAM 0x0238e430 - 0x0238e439
+PHONOGRAM 0x0238e530 - 0x0238e539
+PHONOGRAM 0x0238e630 - 0x0238e639
+PHONOGRAM 0x0238e730 - 0x0238e739
+PHONOGRAM 0x0238e830 - 0x0238e839
+PHONOGRAM 0x0238e930 - 0x0238e939
+PHONOGRAM 0x0238ea30 - 0x0238ea39
+PHONOGRAM 0x0238eb30 - 0x0238eb39
+PHONOGRAM 0x0238ec30 - 0x0238ec39
+PHONOGRAM 0x0238ed30 - 0x0238ed39
+PHONOGRAM 0x0238ee30 - 0x0238ee39
+PHONOGRAM 0x0238ef30 - 0x0238ef39
+PHONOGRAM 0x0238f030 - 0x0238f039
+PHONOGRAM 0x0238f130 - 0x0238f139
+PHONOGRAM 0x0238f230 - 0x0238f239
+PHONOGRAM 0x0238f330 - 0x0238f339
+PHONOGRAM 0x0238f430 - 0x0238f439
+PHONOGRAM 0x0238f530 - 0x0238f539
+PHONOGRAM 0x0238f630 - 0x0238f639
+PHONOGRAM 0x0238f730 - 0x0238f739
+PHONOGRAM 0x0238f830 - 0x0238f839
+PHONOGRAM 0x0238f930 - 0x0238f939
+PHONOGRAM 0x0238fa30 - 0x0238fa39
+PHONOGRAM 0x0238fb30 - 0x0238fb39
+PHONOGRAM 0x0238fc30 - 0x0238fc39
+PHONOGRAM 0x0238fd30 - 0x0238fd39
+PHONOGRAM 0x0238fe30 - 0x0238fe39
+PHONOGRAM 0x02398130 - 0x02398139
+PHONOGRAM 0x02398230 - 0x02398239
+PHONOGRAM 0x02398330 - 0x02398339
+PHONOGRAM 0x02398430 - 0x02398439
+PHONOGRAM 0x02398530 - 0x02398539
+PHONOGRAM 0x02398630 - 0x02398639
+PHONOGRAM 0x02398730 - 0x02398739
+PHONOGRAM 0x02398830 - 0x02398839
+PHONOGRAM 0x02398930 - 0x02398939
+PHONOGRAM 0x02398a30 - 0x02398a39
+PHONOGRAM 0x02398b30 - 0x02398b39
+PHONOGRAM 0x02398c30 - 0x02398c39
+PHONOGRAM 0x02398d30 - 0x02398d39
+PHONOGRAM 0x02398e30 - 0x02398e39
+PHONOGRAM 0x02398f30 - 0x02398f39
+PHONOGRAM 0x02399030 - 0x02399039
+PHONOGRAM 0x02399130 - 0x02399139
+PHONOGRAM 0x02399230 - 0x02399239
+PHONOGRAM 0x02399330 - 0x02399339
+PHONOGRAM 0x02399430 - 0x02399439
+PHONOGRAM 0x02399530 - 0x02399539
+PHONOGRAM 0x02399630 - 0x02399639
+PHONOGRAM 0x02399730 - 0x02399739
+PHONOGRAM 0x02399830 - 0x02399839
+PHONOGRAM 0x02399930 - 0x02399939
+PHONOGRAM 0x02399a30 - 0x02399a39
+PHONOGRAM 0x02399b30 - 0x02399b39
+PHONOGRAM 0x02399c30 - 0x02399c39
+PHONOGRAM 0x02399d30 - 0x02399d39
+PHONOGRAM 0x02399e30 - 0x02399e39
+PHONOGRAM 0x02399f30 - 0x02399f39
+PHONOGRAM 0x0239a030 - 0x0239a039
+PHONOGRAM 0x0239a130 - 0x0239a139
+PHONOGRAM 0x0239a230 - 0x0239a239
+PHONOGRAM 0x0239a330 - 0x0239a339
+PHONOGRAM 0x0239a430 - 0x0239a439
+PHONOGRAM 0x0239a530 - 0x0239a539
+PHONOGRAM 0x0239a630 - 0x0239a639
+PHONOGRAM 0x0239a730 - 0x0239a739
+PHONOGRAM 0x0239a830 - 0x0239a839
+PHONOGRAM 0x0239a930 - 0x0239a939
+PHONOGRAM 0x0239aa30 - 0x0239aa39
+PHONOGRAM 0x0239ab30 - 0x0239ab39
+PHONOGRAM 0x0239ac30 - 0x0239ac39
+PHONOGRAM 0x0239ad30 - 0x0239ad39
+PHONOGRAM 0x0239ae30 - 0x0239ae39
+PHONOGRAM 0x0239af30 - 0x0239af39
+PHONOGRAM 0x0239b030 - 0x0239b039
+PHONOGRAM 0x0239b130 - 0x0239b139
+PHONOGRAM 0x0239b230 - 0x0239b239
+PHONOGRAM 0x0239b330 - 0x0239b339
+PHONOGRAM 0x0239b430 - 0x0239b439
+PHONOGRAM 0x0239b530 - 0x0239b539
+PHONOGRAM 0x0239b630 - 0x0239b639
+PHONOGRAM 0x0239b730 - 0x0239b739
+PHONOGRAM 0x0239b830 - 0x0239b839
+PHONOGRAM 0x0239b930 - 0x0239b939
+PHONOGRAM 0x0239ba30 - 0x0239ba39
+PHONOGRAM 0x0239bb30 - 0x0239bb39
+PHONOGRAM 0x0239bc30 - 0x0239bc39
+PHONOGRAM 0x0239bd30 - 0x0239bd39
+PHONOGRAM 0x0239be30 - 0x0239be39
+PHONOGRAM 0x0239bf30 - 0x0239bf39
+PHONOGRAM 0x0239c030 - 0x0239c039
+PHONOGRAM 0x0239c130 - 0x0239c139
+PHONOGRAM 0x0239c230 - 0x0239c239
+PHONOGRAM 0x0239c330 - 0x0239c339
+PHONOGRAM 0x0239c430 - 0x0239c439
+PHONOGRAM 0x0239c530 - 0x0239c539
+PHONOGRAM 0x0239c630 - 0x0239c639
+PHONOGRAM 0x0239c730 - 0x0239c739
+PHONOGRAM 0x0239c830 - 0x0239c839
+PHONOGRAM 0x0239c930 - 0x0239c939
+PHONOGRAM 0x0239ca30 - 0x0239ca39
+PHONOGRAM 0x0239cb30 - 0x0239cb39
+PHONOGRAM 0x0239cc30 - 0x0239cc39
+PHONOGRAM 0x0239cd30 - 0x0239cd39
+PHONOGRAM 0x0239ce30 - 0x0239ce39
+PHONOGRAM 0x0239cf30 - 0x0239cf39
+PHONOGRAM 0x0239d030 - 0x0239d039
+PHONOGRAM 0x0239d130 - 0x0239d139
+PHONOGRAM 0x0239d230 - 0x0239d239
+PHONOGRAM 0x0239d330 - 0x0239d339
+PHONOGRAM 0x0239d430 - 0x0239d439
+PHONOGRAM 0x0239d530 - 0x0239d539
+PHONOGRAM 0x0239d630 - 0x0239d639
+PHONOGRAM 0x0239d730 - 0x0239d739
+PHONOGRAM 0x0239d830 - 0x0239d839
+PHONOGRAM 0x0239d930 - 0x0239d939
+PHONOGRAM 0x0239da30 - 0x0239da39
+PHONOGRAM 0x0239db30 - 0x0239db39
+PHONOGRAM 0x0239dc30 - 0x0239dc39
+PHONOGRAM 0x0239dd30 - 0x0239dd39
+PHONOGRAM 0x0239de30 - 0x0239de39
+PHONOGRAM 0x0239df30 - 0x0239df39
+PHONOGRAM 0x0239e030 - 0x0239e039
+PHONOGRAM 0x0239e130 - 0x0239e139
+PHONOGRAM 0x0239e230 - 0x0239e239
+PHONOGRAM 0x0239e330 - 0x0239e339
+PHONOGRAM 0x0239e430 - 0x0239e439
+PHONOGRAM 0x0239e530 - 0x0239e539
+PHONOGRAM 0x0239e630 - 0x0239e639
+PHONOGRAM 0x0239e730 - 0x0239e739
+PHONOGRAM 0x0239e830 - 0x0239e839
+PHONOGRAM 0x0239e930 - 0x0239e939
+PHONOGRAM 0x0239ea30 - 0x0239ea39
+PHONOGRAM 0x0239eb30 - 0x0239eb39
+PHONOGRAM 0x0239ec30 - 0x0239ec39
+PHONOGRAM 0x0239ed30 - 0x0239ed39
+PHONOGRAM 0x0239ee30 - 0x0239ee39
+PHONOGRAM 0x0239ef30 - 0x0239ef39
+PHONOGRAM 0x0239f030 - 0x0239f039
+PHONOGRAM 0x0239f130 - 0x0239f139
+PHONOGRAM 0x0239f230 - 0x0239f239
+PHONOGRAM 0x0239f330 - 0x0239f339
+PHONOGRAM 0x0239f430 - 0x0239f439
+PHONOGRAM 0x0239f530 - 0x0239f539
+PHONOGRAM 0x0239f630 - 0x0239f639
+PHONOGRAM 0x0239f730 - 0x0239f739
+PHONOGRAM 0x0239f830 - 0x0239f839
+PHONOGRAM 0x0239f930 - 0x0239f939
+PHONOGRAM 0x0239fa30 - 0x0239fa39
+PHONOGRAM 0x0239fb30 - 0x0239fb39
+PHONOGRAM 0x0239fc30 - 0x0239fc39
+PHONOGRAM 0x0239fd30 - 0x0239fd39
+PHONOGRAM 0x0239fe30 - 0x0239fe39
+PHONOGRAM 0x03308130 - 0x03308139
+PHONOGRAM 0x03308230 - 0x03308239
+PHONOGRAM 0x03308330 - 0x03308339
+PHONOGRAM 0x03308430 - 0x03308439
+PHONOGRAM 0x03308530 - 0x03308539
+PHONOGRAM 0x03308630 - 0x03308639
+PHONOGRAM 0x03308730 - 0x03308739
+PHONOGRAM 0x03308830 - 0x03308839
+PHONOGRAM 0x03308930 - 0x03308939
+PHONOGRAM 0x03308a30 - 0x03308a39
+PHONOGRAM 0x03308b30 - 0x03308b39
+PHONOGRAM 0x03308c30 - 0x03308c39
+PHONOGRAM 0x03308d30 - 0x03308d39
+PHONOGRAM 0x03308e30 - 0x03308e39
+PHONOGRAM 0x03308f30 - 0x03308f39
+PHONOGRAM 0x03309030 - 0x03309039
+PHONOGRAM 0x03309130 - 0x03309139
+PHONOGRAM 0x03309230 - 0x03309239
+PHONOGRAM 0x03309330 - 0x03309339
+PHONOGRAM 0x03309430 - 0x03309439
+PHONOGRAM 0x03309530 - 0x03309539
+PHONOGRAM 0x03309630 - 0x03309639
+PHONOGRAM 0x03309730 - 0x03309739
+PHONOGRAM 0x03309830 - 0x03309839
+PHONOGRAM 0x03309930 - 0x03309939
+PHONOGRAM 0x03309a30 - 0x03309a39
+PHONOGRAM 0x03309b30 - 0x03309b39
+PHONOGRAM 0x03309c30 - 0x03309c39
+PHONOGRAM 0x03309d30 - 0x03309d39
+PHONOGRAM 0x03309e30 - 0x03309e39
+PHONOGRAM 0x03309f30 - 0x03309f39
+PHONOGRAM 0x0330a030 - 0x0330a039
+PHONOGRAM 0x0330a130 - 0x0330a139
+PHONOGRAM 0x0330a230 - 0x0330a239
+PHONOGRAM 0x0330a330 - 0x0330a339
+PHONOGRAM 0x0330a430 - 0x0330a439
+PHONOGRAM 0x0330a530 - 0x0330a539
+PHONOGRAM 0x0330a630 - 0x0330a639
+PHONOGRAM 0x0330a730 - 0x0330a739
+PHONOGRAM 0x0330a830 - 0x0330a839
+PHONOGRAM 0x0330a930 - 0x0330a939
+PHONOGRAM 0x0330aa30 - 0x0330aa39
+PHONOGRAM 0x0330ab30 - 0x0330ab39
+PHONOGRAM 0x0330ac30 - 0x0330ac39
+PHONOGRAM 0x0330ad30 - 0x0330ad39
+PHONOGRAM 0x0330ae30 - 0x0330ae39
+PHONOGRAM 0x0330af30 - 0x0330af39
+PHONOGRAM 0x0330b030 - 0x0330b039
+PHONOGRAM 0x0330b130 - 0x0330b139
+PHONOGRAM 0x0330b230 - 0x0330b239
+PHONOGRAM 0x0330b330 - 0x0330b339
+PHONOGRAM 0x0330b430 - 0x0330b439
+PHONOGRAM 0x0330b530 - 0x0330b539
+PHONOGRAM 0x0330b630 - 0x0330b639
+PHONOGRAM 0x0330b730 - 0x0330b739
+PHONOGRAM 0x0330b830 - 0x0330b839
+PHONOGRAM 0x0330b930 - 0x0330b939
+PHONOGRAM 0x0330ba30 - 0x0330ba39
+PHONOGRAM 0x0330bb30 - 0x0330bb39
+PHONOGRAM 0x0330bc30 - 0x0330bc39
+PHONOGRAM 0x0330bd30 - 0x0330bd39
+PHONOGRAM 0x0330be30 - 0x0330be39
+PHONOGRAM 0x0330bf30 - 0x0330bf39
+PHONOGRAM 0x0330c030 - 0x0330c039
+PHONOGRAM 0x0330c130 - 0x0330c139
+PHONOGRAM 0x0330c230 - 0x0330c239
+PHONOGRAM 0x0330c330 - 0x0330c339
+PHONOGRAM 0x0330c430 - 0x0330c439
+PHONOGRAM 0x0330c530 - 0x0330c539
+PHONOGRAM 0x0330c630 - 0x0330c639
+PHONOGRAM 0x0330c730 - 0x0330c739
+PHONOGRAM 0x0330c830 - 0x0330c839
+PHONOGRAM 0x0330c930 - 0x0330c939
+PHONOGRAM 0x0330ca30 - 0x0330ca39
+PHONOGRAM 0x0330cb30 - 0x0330cb39
+PHONOGRAM 0x0330cc30 - 0x0330cc39
+PHONOGRAM 0x0330cd30 - 0x0330cd39
+PHONOGRAM 0x0330ce30 - 0x0330ce39
+PHONOGRAM 0x0330cf30 - 0x0330cf39
+PHONOGRAM 0x0330d030 - 0x0330d039
+PHONOGRAM 0x0330d130 - 0x0330d139
+PHONOGRAM 0x0330d230 - 0x0330d239
+PHONOGRAM 0x0330d330 - 0x0330d339
+PHONOGRAM 0x0330d430 - 0x0330d439
+PHONOGRAM 0x0330d530 - 0x0330d539
+PHONOGRAM 0x0330d630 - 0x0330d639
+PHONOGRAM 0x0330d730 - 0x0330d739
+PHONOGRAM 0x0330d830 - 0x0330d839
+PHONOGRAM 0x0330d930 - 0x0330d939
+PHONOGRAM 0x0330da30 - 0x0330da39
+PHONOGRAM 0x0330db30 - 0x0330db39
+PHONOGRAM 0x0330dc30 - 0x0330dc39
+PHONOGRAM 0x0330dd30 - 0x0330dd39
+PHONOGRAM 0x0330de30 - 0x0330de39
+PHONOGRAM 0x0330df30 - 0x0330df39
+PHONOGRAM 0x0330e030 - 0x0330e039
+PHONOGRAM 0x0330e130 - 0x0330e139
+PHONOGRAM 0x0330e230 - 0x0330e239
+PHONOGRAM 0x0330e330 - 0x0330e339
+PHONOGRAM 0x0330e430 - 0x0330e439
+PHONOGRAM 0x0330e530 - 0x0330e539
+PHONOGRAM 0x0330e630 - 0x0330e639
+PHONOGRAM 0x0330e730 - 0x0330e739
+PHONOGRAM 0x0330e830 - 0x0330e839
+PHONOGRAM 0x0330e930 - 0x0330e939
+PHONOGRAM 0x0330ea30 - 0x0330ea39
+PHONOGRAM 0x0330eb30 - 0x0330eb39
+PHONOGRAM 0x0330ec30 - 0x0330ec39
+PHONOGRAM 0x0330ed30 - 0x0330ed39
+PHONOGRAM 0x0330ee30 - 0x0330ee39
+PHONOGRAM 0x0330ef30 - 0x0330ef39
+PHONOGRAM 0x0330f030 - 0x0330f039
+PHONOGRAM 0x0330f130 - 0x0330f139
+PHONOGRAM 0x0330f230 - 0x0330f239
+PHONOGRAM 0x0330f330 - 0x0330f339
+PHONOGRAM 0x0330f430 - 0x0330f439
+PHONOGRAM 0x0330f530 - 0x0330f539
+PHONOGRAM 0x0330f630 - 0x0330f639
+PHONOGRAM 0x0330f730 - 0x0330f739
+PHONOGRAM 0x0330f830 - 0x0330f839
+PHONOGRAM 0x0330f930 - 0x0330f939
+PHONOGRAM 0x0330fa30 - 0x0330fa39
+PHONOGRAM 0x0330fb30 - 0x0330fb39
+PHONOGRAM 0x0330fc30 - 0x0330fc39
+PHONOGRAM 0x0330fd30 - 0x0330fd39
+PHONOGRAM 0x0330fe30 - 0x0330fe39
+PHONOGRAM 0x03318130 - 0x03318139
+PHONOGRAM 0x03318230 - 0x03318239
+PHONOGRAM 0x03318330 - 0x03318339
+PHONOGRAM 0x03318430 - 0x03318439
+PHONOGRAM 0x03318530 - 0x03318539
+PHONOGRAM 0x03318630 - 0x03318639
+PHONOGRAM 0x03318730 - 0x03318739
+PHONOGRAM 0x03318830 - 0x03318839
+PHONOGRAM 0x03318930 - 0x03318939
+PHONOGRAM 0x03318a30 - 0x03318a39
+PHONOGRAM 0x03318b30 - 0x03318b39
+PHONOGRAM 0x03318c30 - 0x03318c39
+PHONOGRAM 0x03318d30 - 0x03318d39
+PHONOGRAM 0x03318e30 - 0x03318e39
+PHONOGRAM 0x03318f30 - 0x03318f39
+PHONOGRAM 0x03319030 - 0x03319039
+PHONOGRAM 0x03319130 - 0x03319139
+PHONOGRAM 0x03319230 - 0x03319239
+PHONOGRAM 0x03319330 - 0x03319339
+PHONOGRAM 0x03319430 - 0x03319439
+PHONOGRAM 0x03319530 - 0x03319539
+PHONOGRAM 0x03319630 - 0x03319639
+PHONOGRAM 0x03319730 - 0x03319739
+PHONOGRAM 0x03319830 - 0x03319839
+PHONOGRAM 0x03319930 - 0x03319939
+PHONOGRAM 0x03319a30 - 0x03319a39
+PHONOGRAM 0x03319b30 - 0x03319b39
+PHONOGRAM 0x03319c30 - 0x03319c39
+PHONOGRAM 0x03319d30 - 0x03319d39
+PHONOGRAM 0x03319e30 - 0x03319e39
+PHONOGRAM 0x03319f30 - 0x03319f39
+PHONOGRAM 0x0331a030 - 0x0331a039
+PHONOGRAM 0x0331a130 - 0x0331a139
+PHONOGRAM 0x0331a230 - 0x0331a239
+PHONOGRAM 0x0331a330 - 0x0331a339
+PHONOGRAM 0x0331a430 - 0x0331a439
+PHONOGRAM 0x0331a530 - 0x0331a539
+PHONOGRAM 0x0331a630 - 0x0331a639
+PHONOGRAM 0x0331a730 - 0x0331a739
+PHONOGRAM 0x0331a830 - 0x0331a839
+PHONOGRAM 0x0331a930 - 0x0331a939
+PHONOGRAM 0x0331aa30 - 0x0331aa39
+PHONOGRAM 0x0331ab30 - 0x0331ab39
+PHONOGRAM 0x0331ac30 - 0x0331ac39
+PHONOGRAM 0x0331ad30 - 0x0331ad39
+PHONOGRAM 0x0331ae30 - 0x0331ae39
+PHONOGRAM 0x0331af30 - 0x0331af39
+PHONOGRAM 0x0331b030 - 0x0331b039
+PHONOGRAM 0x0331b130 - 0x0331b139
+PHONOGRAM 0x0331b230 - 0x0331b239
+PHONOGRAM 0x0331b330 - 0x0331b339
+PHONOGRAM 0x0331b430 - 0x0331b439
+PHONOGRAM 0x0331b530 - 0x0331b539
+PHONOGRAM 0x0331b630 - 0x0331b639
+PHONOGRAM 0x0331b730 - 0x0331b739
+PHONOGRAM 0x0331b830 - 0x0331b839
+PHONOGRAM 0x0331b930 - 0x0331b939
+PHONOGRAM 0x0331ba30 - 0x0331ba39
+PHONOGRAM 0x0331bb30 - 0x0331bb39
+PHONOGRAM 0x0331bc30 - 0x0331bc39
+PHONOGRAM 0x0331bd30 - 0x0331bd39
+PHONOGRAM 0x0331be30 - 0x0331be39
+PHONOGRAM 0x0331bf30 - 0x0331bf39
+PHONOGRAM 0x0331c030 - 0x0331c039
+PHONOGRAM 0x0331c130 - 0x0331c139
+PHONOGRAM 0x0331c230 - 0x0331c239
+PHONOGRAM 0x0331c330 - 0x0331c339
+PHONOGRAM 0x0331c430 - 0x0331c439
+PHONOGRAM 0x0331c530 - 0x0331c539
+PHONOGRAM 0x0331c630 - 0x0331c639
+PHONOGRAM 0x0331c730 - 0x0331c739
+PHONOGRAM 0x0331c830 - 0x0331c839
+PHONOGRAM 0x0331c930 - 0x0331c939
+PHONOGRAM 0x0331ca30 - 0x0331ca39
+PHONOGRAM 0x0331cb30 - 0x0331cb39
+PHONOGRAM 0x0331cc30 - 0x0331cc39
+PHONOGRAM 0x0331cd30 - 0x0331cd39
+PHONOGRAM 0x0331ce30 - 0x0331ce39
+PHONOGRAM 0x0331cf30 - 0x0331cf39
+PHONOGRAM 0x0331d030 - 0x0331d039
+PHONOGRAM 0x0331d130 - 0x0331d139
+PHONOGRAM 0x0331d230 - 0x0331d239
+PHONOGRAM 0x0331d330 - 0x0331d339
+PHONOGRAM 0x0331d430 - 0x0331d439
+PHONOGRAM 0x0331d530 - 0x0331d539
+PHONOGRAM 0x0331d630 - 0x0331d639
+PHONOGRAM 0x0331d730 - 0x0331d739
+PHONOGRAM 0x0331d830 - 0x0331d839
+PHONOGRAM 0x0331d930 - 0x0331d939
+PHONOGRAM 0x0331da30 - 0x0331da39
+PHONOGRAM 0x0331db30 - 0x0331db39
+PHONOGRAM 0x0331dc30 - 0x0331dc39
+PHONOGRAM 0x0331dd30 - 0x0331dd39
+PHONOGRAM 0x0331de30 - 0x0331de39
+PHONOGRAM 0x0331df30 - 0x0331df39
+PHONOGRAM 0x0331e030 - 0x0331e039
+PHONOGRAM 0x0331e130 - 0x0331e139
+PHONOGRAM 0x0331e230 - 0x0331e239
+PHONOGRAM 0x0331e330 - 0x0331e339
+PHONOGRAM 0x0331e430 - 0x0331e439
+PHONOGRAM 0x0331e530 - 0x0331e539
+PHONOGRAM 0x0331e630 - 0x0331e639
+PHONOGRAM 0x0331e730 - 0x0331e739
+PHONOGRAM 0x0331e830 - 0x0331e839
+PHONOGRAM 0x0331e930 - 0x0331e939
+PHONOGRAM 0x0331ea30 - 0x0331ea39
+PHONOGRAM 0x0331eb30 - 0x0331eb39
+PHONOGRAM 0x0331ec30 - 0x0331ec39
+PHONOGRAM 0x0331ed30 - 0x0331ed39
+PHONOGRAM 0x0331ee30 - 0x0331ee39
+PHONOGRAM 0x0331ef30 - 0x0331ef39
+PHONOGRAM 0x0331f030 - 0x0331f039
+PHONOGRAM 0x0331f130 - 0x0331f139
+PHONOGRAM 0x0331f230 - 0x0331f239
+PHONOGRAM 0x0331f330 - 0x0331f339
+PHONOGRAM 0x0331f430 - 0x0331f439
+PHONOGRAM 0x0331f530 - 0x0331f539
+PHONOGRAM 0x0331f630 - 0x0331f639
+PHONOGRAM 0x0331f730 - 0x0331f739
+PHONOGRAM 0x0331f830 - 0x0331f839
+PHONOGRAM 0x0331f930 - 0x0331f939
+PHONOGRAM 0x0331fa30 - 0x0331fa39
+PHONOGRAM 0x0331fb30 - 0x0331fb39
+PHONOGRAM 0x0331fc30 - 0x0331fc39
+PHONOGRAM 0x0331fd30 - 0x0331fd39
+PHONOGRAM 0x0331fe30 - 0x0331fe39
+PHONOGRAM 0x03328130 - 0x03328139
+PHONOGRAM 0x03328230 - 0x03328239
+PHONOGRAM 0x03328330 - 0x03328339
+PHONOGRAM 0x03328430 - 0x03328439
+PHONOGRAM 0x03328530 - 0x03328539
+PHONOGRAM 0x03328630 - 0x03328639
+PHONOGRAM 0x03328730 - 0x03328739
+PHONOGRAM 0x03328830 - 0x03328839
+PHONOGRAM 0x03328930 - 0x03328939
+PHONOGRAM 0x03328a30 - 0x03328a39
+PHONOGRAM 0x03328b30 - 0x03328b39
+PHONOGRAM 0x03328c30 - 0x03328c39
+PHONOGRAM 0x03328d30 - 0x03328d39
+PHONOGRAM 0x03328e30 - 0x03328e39
+PHONOGRAM 0x03328f30 - 0x03328f39
+PHONOGRAM 0x03329030 - 0x03329039
+PHONOGRAM 0x03329130 - 0x03329139
+PHONOGRAM 0x03329230 - 0x03329239
+PHONOGRAM 0x03329330 - 0x03329339
+PHONOGRAM 0x03329430 - 0x03329439
+PHONOGRAM 0x03329530 - 0x03329539
+PHONOGRAM 0x03329630 - 0x03329639
+PHONOGRAM 0x03329730 - 0x03329739
+PHONOGRAM 0x03329830 - 0x03329839
+PHONOGRAM 0x03329930 - 0x03329939
+PHONOGRAM 0x03329a30 - 0x03329a39
+PHONOGRAM 0x03329b30 - 0x03329b39
+PHONOGRAM 0x03329c30 - 0x03329c39
+PHONOGRAM 0x03329d30 - 0x03329d39
+PHONOGRAM 0x03329e30 - 0x03329e39
+PHONOGRAM 0x03329f30 - 0x03329f39
+PHONOGRAM 0x0332a030 - 0x0332a039
+PHONOGRAM 0x0332a130 - 0x0332a139
+PHONOGRAM 0x0332a230 - 0x0332a239
+PHONOGRAM 0x0332a330 - 0x0332a339
+PHONOGRAM 0x0332a430 - 0x0332a439
+PHONOGRAM 0x0332a530 - 0x0332a539
+PHONOGRAM 0x0332a630 - 0x0332a639
+PHONOGRAM 0x0332a730 - 0x0332a739
+PHONOGRAM 0x0332a830 - 0x0332a839
+PHONOGRAM 0x0332a930 - 0x0332a939
+PHONOGRAM 0x0332aa30 - 0x0332aa39
+PHONOGRAM 0x0332ab30 - 0x0332ab39
+PHONOGRAM 0x0332ac30 - 0x0332ac39
+PHONOGRAM 0x0332ad30 - 0x0332ad39
+PHONOGRAM 0x0332ae30 - 0x0332ae39
+PHONOGRAM 0x0332af30 - 0x0332af39
+PHONOGRAM 0x0332b030 - 0x0332b039
+PHONOGRAM 0x0332b130 - 0x0332b139
+PHONOGRAM 0x0332b230 - 0x0332b239
+PHONOGRAM 0x0332b330 - 0x0332b339
+PHONOGRAM 0x0332b430 - 0x0332b439
+PHONOGRAM 0x0332b530 - 0x0332b539
+PHONOGRAM 0x0332b630 - 0x0332b639
+PHONOGRAM 0x0332b730 - 0x0332b739
+PHONOGRAM 0x0332b830 - 0x0332b839
+PHONOGRAM 0x0332b930 - 0x0332b939
+PHONOGRAM 0x0332ba30 - 0x0332ba39
+PHONOGRAM 0x0332bb30 - 0x0332bb39
+PHONOGRAM 0x0332bc30 - 0x0332bc39
+PHONOGRAM 0x0332bd30 - 0x0332bd39
+PHONOGRAM 0x0332be30 - 0x0332be39
+PHONOGRAM 0x0332bf30 - 0x0332bf39
+PHONOGRAM 0x0332c030 - 0x0332c039
+PHONOGRAM 0x0332c130 - 0x0332c139
+PHONOGRAM 0x0332c230 - 0x0332c239
+PHONOGRAM 0x0332c330 - 0x0332c339
+PHONOGRAM 0x0332c430 - 0x0332c439
+PHONOGRAM 0x0332c530 - 0x0332c539
+PHONOGRAM 0x0332c630 - 0x0332c639
+PHONOGRAM 0x0332c730 - 0x0332c739
+PHONOGRAM 0x0332c830 - 0x0332c839
+PHONOGRAM 0x0332c930 - 0x0332c939
+PHONOGRAM 0x0332ca30 - 0x0332ca39
+PHONOGRAM 0x0332cb30 - 0x0332cb39
+PHONOGRAM 0x0332cc30 - 0x0332cc39
+PHONOGRAM 0x0332cd30 - 0x0332cd39
+PHONOGRAM 0x0332ce30 - 0x0332ce39
+PHONOGRAM 0x0332cf30 - 0x0332cf39
+PHONOGRAM 0x0332d030 - 0x0332d039
+PHONOGRAM 0x0332d130 - 0x0332d139
+PHONOGRAM 0x0332d230 - 0x0332d239
+PHONOGRAM 0x0332d330 - 0x0332d339
+PHONOGRAM 0x0332d430 - 0x0332d439
+PHONOGRAM 0x0332d530 - 0x0332d539
+PHONOGRAM 0x0332d630 - 0x0332d639
+PHONOGRAM 0x0332d730 - 0x0332d739
+PHONOGRAM 0x0332d830 - 0x0332d839
+PHONOGRAM 0x0332d930 - 0x0332d939
+PHONOGRAM 0x0332da30 - 0x0332da39
+PHONOGRAM 0x0332db30 - 0x0332db39
+PHONOGRAM 0x0332dc30 - 0x0332dc39
+PHONOGRAM 0x0332dd30 - 0x0332dd39
+PHONOGRAM 0x0332de30 - 0x0332de39
+PHONOGRAM 0x0332df30 - 0x0332df39
+PHONOGRAM 0x0332e030 - 0x0332e039
+PHONOGRAM 0x0332e130 - 0x0332e139
+PHONOGRAM 0x0332e230 - 0x0332e239
+PHONOGRAM 0x0332e330 - 0x0332e339
+PHONOGRAM 0x0332e430 - 0x0332e439
+PHONOGRAM 0x0332e530 - 0x0332e539
+PHONOGRAM 0x0332e630 - 0x0332e639
+PHONOGRAM 0x0332e730 - 0x0332e739
+PHONOGRAM 0x0332e830 - 0x0332e839
+PHONOGRAM 0x0332e930 - 0x0332e939
+PHONOGRAM 0x0332ea30 - 0x0332ea39
+PHONOGRAM 0x0332eb30 - 0x0332eb39
+PHONOGRAM 0x0332ec30 - 0x0332ec39
+PHONOGRAM 0x0332ed30 - 0x0332ed39
+PHONOGRAM 0x0332ee30 - 0x0332ee39
+PHONOGRAM 0x0332ef30 - 0x0332ef39
+PHONOGRAM 0x0332f030 - 0x0332f039
+PHONOGRAM 0x0332f130 - 0x0332f139
+PHONOGRAM 0x0332f230 - 0x0332f239
+PHONOGRAM 0x0332f330 - 0x0332f339
+PHONOGRAM 0x0332f430 - 0x0332f439
+PHONOGRAM 0x0332f530 - 0x0332f539
+PHONOGRAM 0x0332f630 - 0x0332f639
+PHONOGRAM 0x0332f730 - 0x0332f739
+PHONOGRAM 0x0332f830 - 0x0332f839
+PHONOGRAM 0x0332f930 - 0x0332f939
+PHONOGRAM 0x0332fa30 - 0x0332fa39
+PHONOGRAM 0x0332fb30 - 0x0332fb39
+PHONOGRAM 0x0332fc30 - 0x0332fc39
+PHONOGRAM 0x0332fd30 - 0x0332fd39
+PHONOGRAM 0x0332fe30 - 0x0332fe39
+PHONOGRAM 0x03338130 - 0x03338139
+PHONOGRAM 0x03338230 - 0x03338239
+PHONOGRAM 0x03338330 - 0x03338339
+PHONOGRAM 0x03338430 - 0x03338439
+PHONOGRAM 0x03338530 - 0x03338539
+PHONOGRAM 0x03338630 - 0x03338639
+PHONOGRAM 0x03338730 - 0x03338739
+PHONOGRAM 0x03338830 - 0x03338839
+PHONOGRAM 0x03338930 - 0x03338939
+PHONOGRAM 0x03338a30 - 0x03338a39
+PHONOGRAM 0x03338b30 - 0x03338b39
+PHONOGRAM 0x03338c30 - 0x03338c39
+PHONOGRAM 0x03338d30 - 0x03338d39
+PHONOGRAM 0x03338e30 - 0x03338e39
+PHONOGRAM 0x03338f30 - 0x03338f39
+PHONOGRAM 0x03339030 - 0x03339039
+PHONOGRAM 0x03339130 - 0x03339139
+PHONOGRAM 0x03339230 - 0x03339239
+PHONOGRAM 0x03339330 - 0x03339339
+PHONOGRAM 0x03339430 - 0x03339439
+PHONOGRAM 0x03339530 - 0x03339539
+PHONOGRAM 0x03339630 - 0x03339639
+PHONOGRAM 0x03339730 - 0x03339739
+PHONOGRAM 0x03339830 - 0x03339839
+PHONOGRAM 0x03339930 - 0x03339939
+PHONOGRAM 0x03339a30 - 0x03339a39
+PHONOGRAM 0x03339b30 - 0x03339b39
+PHONOGRAM 0x03339c30 - 0x03339c39
+PHONOGRAM 0x03339d30 - 0x03339d39
+PHONOGRAM 0x03339e30 - 0x03339e39
+PHONOGRAM 0x03339f30 - 0x03339f39
+PHONOGRAM 0x0333a030 - 0x0333a039
+PHONOGRAM 0x0333a130 - 0x0333a139
+PHONOGRAM 0x0333a230 - 0x0333a239
+PHONOGRAM 0x0333a330 - 0x0333a339
+PHONOGRAM 0x0333a430 - 0x0333a439
+PHONOGRAM 0x0333a530 - 0x0333a539
+PHONOGRAM 0x0333a630 - 0x0333a639
+PHONOGRAM 0x0333a730 - 0x0333a739
+PHONOGRAM 0x0333a830 - 0x0333a839
+PHONOGRAM 0x0333a930 - 0x0333a939
+PHONOGRAM 0x0333aa30 - 0x0333aa39
+PHONOGRAM 0x0333ab30 - 0x0333ab39
+PHONOGRAM 0x0333ac30 - 0x0333ac39
+PHONOGRAM 0x0333ad30 - 0x0333ad39
+PHONOGRAM 0x0333ae30 - 0x0333ae39
+PHONOGRAM 0x0333af30 - 0x0333af39
+PHONOGRAM 0x0333b030 - 0x0333b039
+PHONOGRAM 0x0333b130 - 0x0333b139
+PHONOGRAM 0x0333b230 - 0x0333b239
+PHONOGRAM 0x0333b330 - 0x0333b339
+PHONOGRAM 0x0333b430 - 0x0333b439
+PHONOGRAM 0x0333b530 - 0x0333b539
+PHONOGRAM 0x0333b630 - 0x0333b639
+PHONOGRAM 0x0333b730 - 0x0333b739
+PHONOGRAM 0x0333b830 - 0x0333b839
+PHONOGRAM 0x0333b930 - 0x0333b939
+PHONOGRAM 0x0333ba30 - 0x0333ba39
+PHONOGRAM 0x0333bb30 - 0x0333bb39
+PHONOGRAM 0x0333bc30 - 0x0333bc39
+PHONOGRAM 0x0333bd30 - 0x0333bd39
+PHONOGRAM 0x0333be30 - 0x0333be39
+PHONOGRAM 0x0333bf30 - 0x0333bf39
+PHONOGRAM 0x0333c030 - 0x0333c039
+PHONOGRAM 0x0333c130 - 0x0333c139
+PHONOGRAM 0x0333c230 - 0x0333c239
+PHONOGRAM 0x0333c330 - 0x0333c339
+PHONOGRAM 0x0333c430 - 0x0333c439
+PHONOGRAM 0x0333c530 - 0x0333c539
+PHONOGRAM 0x0333c630 - 0x0333c639
+PHONOGRAM 0x0333c730 - 0x0333c739
+PHONOGRAM 0x0333c830 - 0x0333c839
+PHONOGRAM 0x0333c930 - 0x0333c939
+PHONOGRAM 0x0333ca30 - 0x0333ca39
+PHONOGRAM 0x0333cb30 - 0x0333cb39
+PHONOGRAM 0x0333cc30 - 0x0333cc39
+PHONOGRAM 0x0333cd30 - 0x0333cd39
+PHONOGRAM 0x0333ce30 - 0x0333ce39
+PHONOGRAM 0x0333cf30 - 0x0333cf39
+PHONOGRAM 0x0333d030 - 0x0333d039
+PHONOGRAM 0x0333d130 - 0x0333d139
+PHONOGRAM 0x0333d230 - 0x0333d239
+PHONOGRAM 0x0333d330 - 0x0333d339
+PHONOGRAM 0x0333d430 - 0x0333d439
+PHONOGRAM 0x0333d530 - 0x0333d539
+PHONOGRAM 0x0333d630 - 0x0333d639
+PHONOGRAM 0x0333d730 - 0x0333d739
+PHONOGRAM 0x0333d830 - 0x0333d839
+PHONOGRAM 0x0333d930 - 0x0333d939
+PHONOGRAM 0x0333da30 - 0x0333da39
+PHONOGRAM 0x0333db30 - 0x0333db39
+PHONOGRAM 0x0333dc30 - 0x0333dc39
+PHONOGRAM 0x0333dd30 - 0x0333dd39
+PHONOGRAM 0x0333de30 - 0x0333de39
+PHONOGRAM 0x0333df30 - 0x0333df39
+PHONOGRAM 0x0333e030 - 0x0333e039
+PHONOGRAM 0x0333e130 - 0x0333e139
+PHONOGRAM 0x0333e230 - 0x0333e239
+PHONOGRAM 0x0333e330 - 0x0333e339
+PHONOGRAM 0x0333e430 - 0x0333e439
+PHONOGRAM 0x0333e530 - 0x0333e539
+PHONOGRAM 0x0333e630 - 0x0333e639
+PHONOGRAM 0x0333e730 - 0x0333e739
+PHONOGRAM 0x0333e830 - 0x0333e839
+PHONOGRAM 0x0333e930 - 0x0333e939
+PHONOGRAM 0x0333ea30 - 0x0333ea39
+PHONOGRAM 0x0333eb30 - 0x0333eb39
+PHONOGRAM 0x0333ec30 - 0x0333ec39
+PHONOGRAM 0x0333ed30 - 0x0333ed39
+PHONOGRAM 0x0333ee30 - 0x0333ee39
+PHONOGRAM 0x0333ef30 - 0x0333ef39
+PHONOGRAM 0x0333f030 - 0x0333f039
+PHONOGRAM 0x0333f130 - 0x0333f139
+PHONOGRAM 0x0333f230 - 0x0333f239
+PHONOGRAM 0x0333f330 - 0x0333f339
+PHONOGRAM 0x0333f430 - 0x0333f439
+PHONOGRAM 0x0333f530 - 0x0333f539
+PHONOGRAM 0x0333f630 - 0x0333f639
+PHONOGRAM 0x0333f730 - 0x0333f739
+PHONOGRAM 0x0333f830 - 0x0333f839
+PHONOGRAM 0x0333f930 - 0x0333f939
+PHONOGRAM 0x0333fa30 - 0x0333fa39
+PHONOGRAM 0x0333fb30 - 0x0333fb39
+PHONOGRAM 0x0333fc30 - 0x0333fc39
+PHONOGRAM 0x0333fd30 - 0x0333fd39
+PHONOGRAM 0x0333fe30 - 0x0333fe39
+PHONOGRAM 0x03348130 - 0x03348139
+PHONOGRAM 0x03348230 - 0x03348239
+PHONOGRAM 0x03348330 - 0x03348339
+PHONOGRAM 0x03348430 - 0x03348439
+PHONOGRAM 0x03348530 - 0x03348539
+PHONOGRAM 0x03348630 - 0x03348639
+PHONOGRAM 0x03348730 - 0x03348739
+PHONOGRAM 0x03348830 - 0x03348839
+PHONOGRAM 0x03348930 - 0x03348939
+PHONOGRAM 0x03348a30 - 0x03348a39
+PHONOGRAM 0x03348b30 - 0x03348b39
+PHONOGRAM 0x03348c30 - 0x03348c39
+PHONOGRAM 0x03348d30 - 0x03348d39
+PHONOGRAM 0x03348e30 - 0x03348e39
+PHONOGRAM 0x03348f30 - 0x03348f39
+PHONOGRAM 0x03349030 - 0x03349039
+PHONOGRAM 0x03349130 - 0x03349139
+PHONOGRAM 0x03349230 - 0x03349239
+PHONOGRAM 0x03349330 - 0x03349339
+PHONOGRAM 0x03349430 - 0x03349439
+PHONOGRAM 0x03349530 - 0x03349539
+PHONOGRAM 0x03349630 - 0x03349639
+PHONOGRAM 0x03349730 - 0x03349739
+PHONOGRAM 0x03349830 - 0x03349839
+PHONOGRAM 0x03349930 - 0x03349939
+PHONOGRAM 0x03349a30 - 0x03349a39
+PHONOGRAM 0x03349b30 - 0x03349b39
+PHONOGRAM 0x03349c30 - 0x03349c39
+PHONOGRAM 0x03349d30 - 0x03349d39
+PHONOGRAM 0x03349e30 - 0x03349e39
+PHONOGRAM 0x03349f30 - 0x03349f39
+PHONOGRAM 0x0334a030 - 0x0334a039
+PHONOGRAM 0x0334a130 - 0x0334a139
+PHONOGRAM 0x0334a230 - 0x0334a239
+PHONOGRAM 0x0334a330 - 0x0334a339
+PHONOGRAM 0x0334a430 - 0x0334a439
+PHONOGRAM 0x0334a530 - 0x0334a539
+PHONOGRAM 0x0334a630 - 0x0334a639
+PHONOGRAM 0x0334a730 - 0x0334a739
+PHONOGRAM 0x0334a830 - 0x0334a839
+PHONOGRAM 0x0334a930 - 0x0334a939
+PHONOGRAM 0x0334aa30 - 0x0334aa39
+PHONOGRAM 0x0334ab30 - 0x0334ab39
+PHONOGRAM 0x0334ac30 - 0x0334ac39
+PHONOGRAM 0x0334ad30 - 0x0334ad39
+PHONOGRAM 0x0334ae30 - 0x0334ae39
+PHONOGRAM 0x0334af30 - 0x0334af39
+PHONOGRAM 0x0334b030 - 0x0334b039
+PHONOGRAM 0x0334b130 - 0x0334b139
+PHONOGRAM 0x0334b230 - 0x0334b239
+PHONOGRAM 0x0334b330 - 0x0334b339
+PHONOGRAM 0x0334b430 - 0x0334b439
+PHONOGRAM 0x0334b530 - 0x0334b539
+PHONOGRAM 0x0334b630 - 0x0334b639
+PHONOGRAM 0x0334b730 - 0x0334b739
+PHONOGRAM 0x0334b830 - 0x0334b839
+PHONOGRAM 0x0334b930 - 0x0334b939
+PHONOGRAM 0x0334ba30 - 0x0334ba39
+PHONOGRAM 0x0334bb30 - 0x0334bb39
+PHONOGRAM 0x0334bc30 - 0x0334bc39
+PHONOGRAM 0x0334bd30 - 0x0334bd39
+PHONOGRAM 0x0334be30 - 0x0334be39
+PHONOGRAM 0x0334bf30 - 0x0334bf39
+PHONOGRAM 0x0334c030 - 0x0334c039
+PHONOGRAM 0x0334c130 - 0x0334c139
+PHONOGRAM 0x0334c230 - 0x0334c239
+PHONOGRAM 0x0334c330 - 0x0334c339
+PHONOGRAM 0x0334c430 - 0x0334c439
+PHONOGRAM 0x0334c530 - 0x0334c539
+PHONOGRAM 0x0334c630 - 0x0334c639
+PHONOGRAM 0x0334c730 - 0x0334c739
+PHONOGRAM 0x0334c830 - 0x0334c839
+PHONOGRAM 0x0334c930 - 0x0334c939
+PHONOGRAM 0x0334ca30 - 0x0334ca39
+PHONOGRAM 0x0334cb30 - 0x0334cb39
+PHONOGRAM 0x0334cc30 - 0x0334cc39
+PHONOGRAM 0x0334cd30 - 0x0334cd39
+PHONOGRAM 0x0334ce30 - 0x0334ce39
+PHONOGRAM 0x0334cf30 - 0x0334cf39
+PHONOGRAM 0x0334d030 - 0x0334d039
+PHONOGRAM 0x0334d130 - 0x0334d139
+PHONOGRAM 0x0334d230 - 0x0334d239
+PHONOGRAM 0x0334d330 - 0x0334d339
+PHONOGRAM 0x0334d430 - 0x0334d439
+PHONOGRAM 0x0334d530 - 0x0334d539
+PHONOGRAM 0x0334d630 - 0x0334d639
+PHONOGRAM 0x0334d730 - 0x0334d739
+PHONOGRAM 0x0334d830 - 0x0334d839
+PHONOGRAM 0x0334d930 - 0x0334d939
+PHONOGRAM 0x0334da30 - 0x0334da39
+PHONOGRAM 0x0334db30 - 0x0334db39
+PHONOGRAM 0x0334dc30 - 0x0334dc39
+PHONOGRAM 0x0334dd30 - 0x0334dd39
+PHONOGRAM 0x0334de30 - 0x0334de39
+PHONOGRAM 0x0334df30 - 0x0334df39
+PHONOGRAM 0x0334e030 - 0x0334e039
+PHONOGRAM 0x0334e130 - 0x0334e139
+PHONOGRAM 0x0334e230 - 0x0334e239
+PHONOGRAM 0x0334e330 - 0x0334e339
+PHONOGRAM 0x0334e430 - 0x0334e439
+PHONOGRAM 0x0334e530 - 0x0334e539
+PHONOGRAM 0x0334e630 - 0x0334e639
+PHONOGRAM 0x0334e730 - 0x0334e739
+PHONOGRAM 0x0334e830 - 0x0334e839
+PHONOGRAM 0x0334e930 - 0x0334e939
+PHONOGRAM 0x0334ea30 - 0x0334ea39
+PHONOGRAM 0x0334eb30 - 0x0334eb39
+PHONOGRAM 0x0334ec30 - 0x0334ec39
+PHONOGRAM 0x0334ed30 - 0x0334ed39
+PHONOGRAM 0x0334ee30 - 0x0334ee39
+PHONOGRAM 0x0334ef30 - 0x0334ef39
+PHONOGRAM 0x0334f030 - 0x0334f039
+PHONOGRAM 0x0334f130 - 0x0334f139
+PHONOGRAM 0x0334f230 - 0x0334f239
+PHONOGRAM 0x0334f330 - 0x0334f339
+PHONOGRAM 0x0334f430 - 0x0334f439
+PHONOGRAM 0x0334f530 - 0x0334f539
+PHONOGRAM 0x0334f630 - 0x0334f639
+PHONOGRAM 0x0334f730 - 0x0334f739
+PHONOGRAM 0x0334f830 - 0x0334f839
+PHONOGRAM 0x0334f930 - 0x0334f939
+PHONOGRAM 0x0334fa30 - 0x0334fa39
+PHONOGRAM 0x0334fb30 - 0x0334fb39
+PHONOGRAM 0x0334fc30 - 0x0334fc39
+PHONOGRAM 0x0334fd30 - 0x0334fd39
+PHONOGRAM 0x0334fe30 - 0x0334fe39
+PHONOGRAM 0x03358130 - 0x03358139
+PHONOGRAM 0x03358230 - 0x03358239
+PHONOGRAM 0x03358330 - 0x03358339
+PHONOGRAM 0x03358430 - 0x03358439
+PHONOGRAM 0x03358530 - 0x03358539
+PHONOGRAM 0x03358630 - 0x03358639
+PHONOGRAM 0x03358730 - 0x03358739
+PHONOGRAM 0x03358830 - 0x03358839
+PHONOGRAM 0x03358930 - 0x03358939
+PHONOGRAM 0x03358a30 - 0x03358a39
+PHONOGRAM 0x03358b30 - 0x03358b39
+PHONOGRAM 0x03358c30 - 0x03358c39
+PHONOGRAM 0x03358d30 - 0x03358d39
+PHONOGRAM 0x03358e30 - 0x03358e39
+PHONOGRAM 0x03358f30 - 0x03358f39
+PHONOGRAM 0x03359030 - 0x03359039
+PHONOGRAM 0x03359130 - 0x03359139
+PHONOGRAM 0x03359230 - 0x03359239
+PHONOGRAM 0x03359330 - 0x03359339
+PHONOGRAM 0x03359430 - 0x03359439
+PHONOGRAM 0x03359530 - 0x03359539
+PHONOGRAM 0x03359630 - 0x03359639
+PHONOGRAM 0x03359730 - 0x03359739
+PHONOGRAM 0x03359830 - 0x03359839
+PHONOGRAM 0x03359930 - 0x03359939
+PHONOGRAM 0x03359a30 - 0x03359a39
+PHONOGRAM 0x03359b30 - 0x03359b39
+PHONOGRAM 0x03359c30 - 0x03359c39
+PHONOGRAM 0x03359d30 - 0x03359d39
+PHONOGRAM 0x03359e30 - 0x03359e39
+PHONOGRAM 0x03359f30 - 0x03359f39
+PHONOGRAM 0x0335a030 - 0x0335a039
+PHONOGRAM 0x0335a130 - 0x0335a139
+PHONOGRAM 0x0335a230 - 0x0335a239
+PHONOGRAM 0x0335a330 - 0x0335a339
+PHONOGRAM 0x0335a430 - 0x0335a439
+PHONOGRAM 0x0335a530 - 0x0335a539
+PHONOGRAM 0x0335a630 - 0x0335a639
+PHONOGRAM 0x0335a730 - 0x0335a739
+PHONOGRAM 0x0335a830 - 0x0335a839
+PHONOGRAM 0x0335a930 - 0x0335a939
+PHONOGRAM 0x0335aa30 - 0x0335aa39
+PHONOGRAM 0x0335ab30 - 0x0335ab39
+PHONOGRAM 0x0335ac30 - 0x0335ac39
+PHONOGRAM 0x0335ad30 - 0x0335ad39
+PHONOGRAM 0x0335ae30 - 0x0335ae39
+PHONOGRAM 0x0335af30 - 0x0335af39
+PHONOGRAM 0x0335b030 - 0x0335b039
+PHONOGRAM 0x0335b130 - 0x0335b139
+PHONOGRAM 0x0335b230 - 0x0335b239
+PHONOGRAM 0x0335b330 - 0x0335b339
+PHONOGRAM 0x0335b430 - 0x0335b439
+PHONOGRAM 0x0335b530 - 0x0335b539
+PHONOGRAM 0x0335b630 - 0x0335b639
+PHONOGRAM 0x0335b730 - 0x0335b739
+PHONOGRAM 0x0335b830 - 0x0335b839
+PHONOGRAM 0x0335b930 - 0x0335b939
+PHONOGRAM 0x0335ba30 - 0x0335ba39
+PHONOGRAM 0x0335bb30 - 0x0335bb39
+PHONOGRAM 0x0335bc30 - 0x0335bc39
+PHONOGRAM 0x0335bd30 - 0x0335bd39
+PHONOGRAM 0x0335be30 - 0x0335be39
+PHONOGRAM 0x0335bf30 - 0x0335bf39
+PHONOGRAM 0x0335c030 - 0x0335c039
+PHONOGRAM 0x0335c130 - 0x0335c139
+PHONOGRAM 0x0335c230 - 0x0335c239
+PHONOGRAM 0x0335c330 - 0x0335c339
+PHONOGRAM 0x0335c430 - 0x0335c439
+PHONOGRAM 0x0335c530 - 0x0335c539
+PHONOGRAM 0x0335c630 - 0x0335c639
+PHONOGRAM 0x0335c730 - 0x0335c739
+PHONOGRAM 0x0335c830 - 0x0335c839
+PHONOGRAM 0x0335c930 - 0x0335c939
+PHONOGRAM 0x0335ca30 - 0x0335ca39
+PHONOGRAM 0x0335cb30 - 0x0335cb39
+PHONOGRAM 0x0335cc30 - 0x0335cc39
+PHONOGRAM 0x0335cd30 - 0x0335cd39
+PHONOGRAM 0x0335ce30 - 0x0335ce39
+PHONOGRAM 0x0335cf30 - 0x0335cf39
+PHONOGRAM 0x0335d030 - 0x0335d039
+PHONOGRAM 0x0335d130 - 0x0335d139
+PHONOGRAM 0x0335d230 - 0x0335d239
+PHONOGRAM 0x0335d330 - 0x0335d339
+PHONOGRAM 0x0335d430 - 0x0335d439
+PHONOGRAM 0x0335d530 - 0x0335d539
+PHONOGRAM 0x0335d630 - 0x0335d639
+PHONOGRAM 0x0335d730 - 0x0335d739
+PHONOGRAM 0x0335d830 - 0x0335d839
+PHONOGRAM 0x0335d930 - 0x0335d939
+PHONOGRAM 0x0335da30 - 0x0335da39
+PHONOGRAM 0x0335db30 - 0x0335db39
+PHONOGRAM 0x0335dc30 - 0x0335dc39
+PHONOGRAM 0x0335dd30 - 0x0335dd39
+PHONOGRAM 0x0335de30 - 0x0335de39
+PHONOGRAM 0x0335df30 - 0x0335df39
+PHONOGRAM 0x0335e030 - 0x0335e039
+PHONOGRAM 0x0335e130 - 0x0335e139
+PHONOGRAM 0x0335e230 - 0x0335e239
+PHONOGRAM 0x0335e330 - 0x0335e339
+PHONOGRAM 0x0335e430 - 0x0335e439
+PHONOGRAM 0x0335e530 - 0x0335e539
+PHONOGRAM 0x0335e630 - 0x0335e639
+PHONOGRAM 0x0335e730 - 0x0335e739
+PHONOGRAM 0x0335e830 - 0x0335e839
+PHONOGRAM 0x0335e930 - 0x0335e939
+PHONOGRAM 0x0335ea30 - 0x0335ea39
+PHONOGRAM 0x0335eb30 - 0x0335eb39
+PHONOGRAM 0x0335ec30 - 0x0335ec39
+PHONOGRAM 0x0335ed30 - 0x0335ed39
+PHONOGRAM 0x0335ee30 - 0x0335ee39
+PHONOGRAM 0x0335ef30 - 0x0335ef39
+PHONOGRAM 0x0335f030 - 0x0335f039
+PHONOGRAM 0x0335f130 - 0x0335f139
+PHONOGRAM 0x0335f230 - 0x0335f239
+PHONOGRAM 0x0335f330 - 0x0335f339
+PHONOGRAM 0x0335f430 - 0x0335f439
+PHONOGRAM 0x0335f530 - 0x0335f539
+PHONOGRAM 0x0335f630 - 0x0335f639
+PHONOGRAM 0x0335f730 - 0x0335f739
+PHONOGRAM 0x0335f830 - 0x0335f839
+PHONOGRAM 0x0335f930 - 0x0335f939
+PHONOGRAM 0x0335fa30 - 0x0335fa39
+PHONOGRAM 0x0335fb30 - 0x0335fb39
+PHONOGRAM 0x0335fc30 - 0x0335fc39
+PHONOGRAM 0x0335fd30 - 0x0335fd39
+PHONOGRAM 0x0335fe30 - 0x0335fe39
+PHONOGRAM 0x03368130 - 0x03368139
+PHONOGRAM 0x03368230 - 0x03368239
+PHONOGRAM 0x03368330 - 0x03368339
+PHONOGRAM 0x03368430 - 0x03368439
+PHONOGRAM 0x03368530 - 0x03368539
+PHONOGRAM 0x03368630 - 0x03368639
+PHONOGRAM 0x03368730 - 0x03368739
+PHONOGRAM 0x03368830 - 0x03368839
+PHONOGRAM 0x03368930 - 0x03368939
+PHONOGRAM 0x03368a30 - 0x03368a39
+PHONOGRAM 0x03368b30 - 0x03368b39
+PHONOGRAM 0x03368c30 - 0x03368c39
+PHONOGRAM 0x03368d30 - 0x03368d39
+PHONOGRAM 0x03368e30 - 0x03368e39
+PHONOGRAM 0x03368f30 - 0x03368f39
+PHONOGRAM 0x03369030 - 0x03369039
+PHONOGRAM 0x03369130 - 0x03369139
+PHONOGRAM 0x03369230 - 0x03369239
+PHONOGRAM 0x03369330 - 0x03369339
+PHONOGRAM 0x03369430 - 0x03369439
+PHONOGRAM 0x03369530 - 0x03369539
+PHONOGRAM 0x03369630 - 0x03369639
+PHONOGRAM 0x03369730 - 0x03369739
+PHONOGRAM 0x03369830 - 0x03369839
+PHONOGRAM 0x03369930 - 0x03369939
+PHONOGRAM 0x03369a30 - 0x03369a39
+PHONOGRAM 0x03369b30 - 0x03369b39
+PHONOGRAM 0x03369c30 - 0x03369c39
+PHONOGRAM 0x03369d30 - 0x03369d39
+PHONOGRAM 0x03369e30 - 0x03369e39
+PHONOGRAM 0x03369f30 - 0x03369f39
+PHONOGRAM 0x0336a030 - 0x0336a039
+PHONOGRAM 0x0336a130 - 0x0336a139
+PHONOGRAM 0x0336a230 - 0x0336a239
+PHONOGRAM 0x0336a330 - 0x0336a339
+PHONOGRAM 0x0336a430 - 0x0336a439
+PHONOGRAM 0x0336a530 - 0x0336a539
+PHONOGRAM 0x0336a630 - 0x0336a639
+PHONOGRAM 0x0336a730 - 0x0336a739
+PHONOGRAM 0x0336a830 - 0x0336a839
+PHONOGRAM 0x0336a930 - 0x0336a939
+PHONOGRAM 0x0336aa30 - 0x0336aa39
+PHONOGRAM 0x0336ab30 - 0x0336ab39
+PHONOGRAM 0x0336ac30 - 0x0336ac39
+PHONOGRAM 0x0336ad30 - 0x0336ad39
+PHONOGRAM 0x0336ae30 - 0x0336ae39
+PHONOGRAM 0x0336af30 - 0x0336af39
+PHONOGRAM 0x0336b030 - 0x0336b039
+PHONOGRAM 0x0336b130 - 0x0336b139
+PHONOGRAM 0x0336b230 - 0x0336b239
+PHONOGRAM 0x0336b330 - 0x0336b339
+PHONOGRAM 0x0336b430 - 0x0336b439
+PHONOGRAM 0x0336b530 - 0x0336b539
+PHONOGRAM 0x0336b630 - 0x0336b639
+PHONOGRAM 0x0336b730 - 0x0336b739
+PHONOGRAM 0x0336b830 - 0x0336b839
+PHONOGRAM 0x0336b930 - 0x0336b939
+PHONOGRAM 0x0336ba30 - 0x0336ba39
+PHONOGRAM 0x0336bb30 - 0x0336bb39
+PHONOGRAM 0x0336bc30 - 0x0336bc39
+PHONOGRAM 0x0336bd30 - 0x0336bd39
+PHONOGRAM 0x0336be30 - 0x0336be36
+PHONOGRAM 0x04319632 - 0x04319639
+PHONOGRAM 0x04319730 0x04319731 0x04319733 - 0x04319739
+PHONOGRAM 0x04319830 - 0x04319839
+PHONOGRAM 0x04319930 - 0x04319939
+PHONOGRAM 0x04319a30 - 0x04319a39
+PRINT 0x01308432
+PRINT 0x0134ac34
+PRINT 0x0136a336 - 0x0136a339
+PRINT 0x0136a430 - 0x0136a437
+PRINT 0x0136a635 0x0136a636
+PRINT 0x0136a732
+PRINT 0x0136ab35
+PUNCT 0x01308433 - 0x01308438
+PUNCT 0x01308530 - 0x01308534 0x01308537 0x01308539
+PUNCT 0x01308630 0x01308633 0x01308637
+PUNCT 0x0130b630 0x0130b631 0x0130b639
+PUNCT 0x0130b730 - 0x0130b738
+PUNCT 0x0130b831 - 0x0130b839
+PUNCT 0x0130b930 - 0x0130b933 0x0130b939
+PUNCT 0x0130ba30 - 0x0130ba37
+PUNCT 0x0130c832 0x0130c833
+PUNCT 0x0130c932 0x0130c938 0x0130c939
+PUNCT 0x0130ca31
+PUNCT 0x0130d034
+PUNCT 0x0130d738
+PUNCT 0x0130ed34 - 0x0130ed39
+PUNCT 0x0130f231 0x0130f232
+PUNCT 0x0130f734 0x0130f736 0x0130f739
+PUNCT 0x0130fc37 0x0130fc38
+PUNCT 0x01318132
+PUNCT 0x01318237
+PUNCT 0x01318331
+PUNCT 0x01318a36 - 0x01318a39
+PUNCT 0x01319532
+PUNCT 0x01319733
+PUNCT 0x01319933 0x01319934 0x01319936 - 0x01319939
+PUNCT 0x01319a30 - 0x01319a39
+PUNCT 0x0131d638 0x0131d639
+PUNCT 0x0131d830
+PUNCT 0x0131e530 0x0131e531 0x0131e538
+PUNCT 0x01328d32
+PUNCT 0x0132cd36
+PUNCT 0x0132d531
+PUNCT 0x0132d637
+PUNCT 0x0132d738 0x0132d739
+PUNCT 0x0132e835 - 0x0132e839
+PUNCT 0x0132e930 - 0x0132e939
+PUNCT 0x0132ea30 - 0x0132ea37
+PUNCT 0x0132eb30 - 0x0132eb35
+PUNCT 0x0132ed36 0x0132ed38
+PUNCT 0x0132ee30 0x0132ee32 - 0x0132ee35
+PUNCT 0x0132f537
+PUNCT 0x0132fb34 - 0x0132fb39
+PUNCT 0x0132fc30 0x0132fc31 0x0132fc33 - 0x0132fc38
+PUNCT 0x0132fd31
+PUNCT 0x01338b34 - 0x01338b39
+PUNCT 0x01339d31
+PUNCT 0x0133da35 - 0x0133da39
+PUNCT 0x0133db30 - 0x0133db32
+PUNCT 0x0134aa35 0x0134aa36
+PUNCT 0x0134af31 0x0134af32
+PUNCT 0x0134b731 - 0x0134b733
+PUNCT 0x0134be35 0x0134be36
+PUNCT 0x0134ce34 - 0x0134ce36 0x0134ce38 0x0134ce39
+PUNCT 0x0134cf30 0x0134cf31
+PUNCT 0x0134d238 0x0134d239
+PUNCT 0x0134d330 - 0x0134d338
+PUNCT 0x01369c39
+PUNCT 0x01369d31 - 0x01369d33
+PUNCT 0x01369e35 - 0x01369e37
+PUNCT 0x0136a031 - 0x0136a033
+PUNCT 0x0136a137 - 0x0136a139
+PUNCT 0x0136a333 0x0136a334
+PUNCT 0x0136a532 - 0x0136a539
+PUNCT 0x0136a630 - 0x0136a634
+PUNCT 0x0136a733 - 0x0136a739
+PUNCT 0x0136a830 - 0x0136a839
+PUNCT 0x0136a930 - 0x0136a939
+PUNCT 0x0136aa30 - 0x0136aa32 0x0136aa37
+PUNCT 0x0136ae32 - 0x0136ae36
+PUNCT 0x0136af38 0x0136af39
+PUNCT 0x0136b030 - 0x0136b032
+PUNCT 0x0136b230 - 0x0136b239
+PUNCT 0x0136b330 - 0x0136b336
+PUNCT 0x0136bb35 0x0136bb36 0x0136bb38 0x0136bb39
+PUNCT 0x0136bc31
+PUNCT 0x0136bd32 0x0136bd34 0x0136bd35
+PUNCT 0x0136be31 - 0x0136be35 0x0136be37 0x0136be39
+PUNCT 0x0136bf31 0x0136bf36
+PUNCT 0x0136c030 0x0136c038
+PUNCT 0x0136c134 - 0x0136c138
+PUNCT 0x0136c234 0x0136c235
+PUNCT 0x0136c732 - 0x0136c739
+PUNCT 0x0136c830 - 0x0136c839
+PUNCT 0x0136c930 - 0x0136c939
+PUNCT 0x0136ca30 - 0x0136ca39
+PUNCT 0x0136cb30 - 0x0136cb39
+PUNCT 0x0136cc30 - 0x0136cc39
+PUNCT 0x0136cd30 - 0x0136cd39
+PUNCT 0x0136ce30 - 0x0136ce39
+PUNCT 0x0136cf30 - 0x0136cf39
+PUNCT 0x0136d030 - 0x0136d039
+PUNCT 0x0136d130 - 0x0136d139
+PUNCT 0x0136d230 - 0x0136d239
+PUNCT 0x0136d330 - 0x0136d339
+PUNCT 0x0136d430 - 0x0136d439
+PUNCT 0x0136d530 - 0x0136d539
+PUNCT 0x0136d630 - 0x0136d639
+PUNCT 0x0136d730 - 0x0136d739
+PUNCT 0x0136d830 - 0x0136d839
+PUNCT 0x0136d930 - 0x0136d939
+PUNCT 0x0136da30 - 0x0136da39
+PUNCT 0x0136db30 - 0x0136db39
+PUNCT 0x0136dc30 - 0x0136dc39
+PUNCT 0x0136dd30 - 0x0136dd39
+PUNCT 0x0136de30 - 0x0136de39
+PUNCT 0x0136df30 - 0x0136df39
+PUNCT 0x0136e030 - 0x0136e039
+PUNCT 0x0136e130 - 0x0136e139
+PUNCT 0x0136e230 - 0x0136e239
+PUNCT 0x0136e330 - 0x0136e339
+PUNCT 0x0136e430 - 0x0136e439
+PUNCT 0x0136e530 - 0x0136e539
+PUNCT 0x0136e630 - 0x0136e639
+PUNCT 0x0136e730 - 0x0136e739
+PUNCT 0x0136e830 - 0x0136e839
+PUNCT 0x0136e930 - 0x0136e939
+PUNCT 0x0136ea30 - 0x0136ea39
+PUNCT 0x0136eb30 - 0x0136eb39
+PUNCT 0x0136ec30 - 0x0136ec39
+PUNCT 0x0136ed30 - 0x0136ed39
+PUNCT 0x0136ee30 - 0x0136ee39
+PUNCT 0x0136ef30 - 0x0136ef39
+PUNCT 0x0136f030 - 0x0136f039
+PUNCT 0x0136f130 - 0x0136f139
+PUNCT 0x0136f230 - 0x0136f239
+PUNCT 0x0136f330 - 0x0136f339
+PUNCT 0x0136f430 - 0x0136f439
+PUNCT 0x0136f530 - 0x0136f539
+PUNCT 0x0136f630 - 0x0136f639
+PUNCT 0x0136f730 - 0x0136f739
+PUNCT 0x0136f830 - 0x0136f839
+PUNCT 0x0136f930 - 0x0136f939
+PUNCT 0x0136fa30 - 0x0136fa39
+PUNCT 0x0136fb30 - 0x0136fb39
+PUNCT 0x0136fc30
+PUNCT 0x01378330 - 0x01378339
+PUNCT 0x01378430 - 0x01378439
+PUNCT 0x01378530 - 0x01378539
+PUNCT 0x01378630 - 0x01378638
+PUNCT 0x01378934 - 0x01378939
+PUNCT 0x01378a30 - 0x01378a34
+PUNCT 0x01378d36 - 0x01378d39
+PUNCT 0x01378e30 - 0x01378e39
+PUNCT 0x01378f30 - 0x01378f39
+PUNCT 0x01379030 - 0x01379039
+PUNCT 0x01379130 - 0x01379139
+PUNCT 0x01379230 - 0x01379239
+PUNCT 0x01379330 - 0x01379339
+PUNCT 0x01379430 - 0x01379439
+PUNCT 0x01379530 - 0x01379533
+PUNCT 0x01379736 - 0x01379739
+PUNCT 0x01379830 - 0x01379839
+PUNCT 0x01379930 - 0x01379939
+PUNCT 0x01379a30 - 0x01379a39
+PUNCT 0x01379b30 - 0x01379b39
+PUNCT 0x01379c30 - 0x01379c39
+PUNCT 0x01379d30 - 0x01379d39
+PUNCT 0x01379e30 - 0x01379e39
+PUNCT 0x01379f30 - 0x01379f39
+PUNCT 0x0137a030 - 0x0137a039
+PUNCT 0x0137a130 - 0x0137a139
+PUNCT 0x0137a230 - 0x0137a239
+PUNCT 0x0137a330 - 0x0137a339
+PUNCT 0x0137a430 - 0x0137a433 0x0137a436 0x0137a437 0x0137a439
+PUNCT 0x0137a530 - 0x0137a539
+PUNCT 0x0137a630 - 0x0137a639
+PUNCT 0x0137a730 - 0x0137a739
+PUNCT 0x0137a830 - 0x0137a839
+PUNCT 0x0137a930 - 0x0137a939
+PUNCT 0x0137aa30 - 0x0137aa39
+PUNCT 0x0137ab30 - 0x0137ab39
+PUNCT 0x0137ac30 - 0x0137ac39
+PUNCT 0x0137ad30 - 0x0137ad39
+PUNCT 0x0137ae30 - 0x0137ae37
+PUNCT 0x0137af30 - 0x0137af39
+PUNCT 0x0137bb39
+PUNCT 0x0137bc30 - 0x0137bc32 0x0137bc34 - 0x0137bc37
+PUNCT 0x0137bd30 - 0x0137bd39
+PUNCT 0x0137be30 - 0x0137be39
+PUNCT 0x0137bf30 - 0x0137bf37 0x0137bf39
+PUNCT 0x0137c030 - 0x0137c039
+PUNCT 0x0137c130 - 0x0137c139
+PUNCT 0x0137c230 - 0x0137c239
+PUNCT 0x0137c330 - 0x0137c333 0x0137c335 0x0137c337 - 0x0137c339
+PUNCT 0x0137c430 0x0137c434 0x0137c436 - 0x0137c439
+PUNCT 0x0137c530 - 0x0137c532 0x0137c535 - 0x0137c539
+PUNCT 0x0137c630 - 0x0137c639
+PUNCT 0x0137c730 - 0x0137c735
+PUNCT 0x0137ca36
+PUNCT 0x0137cb30 - 0x0137cb39
+PUNCT 0x0137cc30 - 0x0137cc39
+PUNCT 0x0137cd30 - 0x0137cd33 0x0137cd35 - 0x0137cd39
+PUNCT 0x0137ce30 - 0x0137ce38
+PUNCT 0x0137d036 - 0x0137d039
+PUNCT 0x0137d130 - 0x0137d139
+PUNCT 0x0137d230 - 0x0137d239
+PUNCT 0x0137d330 - 0x0137d333 0x0137d338 0x0137d339
+PUNCT 0x0137d430 - 0x0137d439
+PUNCT 0x0137d530 - 0x0137d539
+PUNCT 0x0137d630 - 0x0137d639
+PUNCT 0x0137d730 - 0x0137d739
+PUNCT 0x0137d830 - 0x0137d839
+PUNCT 0x0137d930 - 0x0137d939
+PUNCT 0x0137da30 - 0x0137da39
+PUNCT 0x0137db30 - 0x0137db39
+PUNCT 0x0137dc30 - 0x0137dc39
+PUNCT 0x0137dd30 - 0x0137dd39
+PUNCT 0x0137de30 - 0x0137de39
+PUNCT 0x0137df30 - 0x0137df39
+PUNCT 0x0137e030 - 0x0137e039
+PUNCT 0x0137e130 - 0x0137e139
+PUNCT 0x0137e230 - 0x0137e239
+PUNCT 0x0137e330 - 0x0137e339
+PUNCT 0x0137e430 - 0x0137e439
+PUNCT 0x0137e530 - 0x0137e539
+PUNCT 0x0137e630 - 0x0137e639
+PUNCT 0x0137e730 - 0x0137e739
+PUNCT 0x0137e830 - 0x0137e839
+PUNCT 0x0137e930 - 0x0137e939
+PUNCT 0x0137ea30 - 0x0137ea39
+PUNCT 0x0137eb30 - 0x0137eb39
+PUNCT 0x0137ec30 - 0x0137ec39
+PUNCT 0x0137ed30 - 0x0137ed39
+PUNCT 0x0137ee30 - 0x0137ee39
+PUNCT 0x0137ef30 - 0x0137ef39
+PUNCT 0x0137f030 - 0x0137f039
+PUNCT 0x0137f130 - 0x0137f139
+PUNCT 0x0137f230 - 0x0137f239
+PUNCT 0x0137f330 - 0x0137f339
+PUNCT 0x0137f430 - 0x0137f439
+PUNCT 0x0137f530 - 0x0137f539
+PUNCT 0x0137f630 - 0x0137f639
+PUNCT 0x0137f730 - 0x0137f739
+PUNCT 0x0137f830 - 0x0137f839
+PUNCT 0x0137f930 - 0x0137f939
+PUNCT 0x0137fa30 - 0x0137fa39
+PUNCT 0x0137fb30 - 0x0137fb39
+PUNCT 0x0137fc30 - 0x0137fc39
+PUNCT 0x0137fd30 - 0x0137fd39
+PUNCT 0x0137fe30 - 0x0137fe39
+PUNCT 0x01388130 - 0x01388139
+PUNCT 0x01388230 - 0x01388239
+PUNCT 0x01388330 - 0x01388339
+PUNCT 0x01388430 - 0x01388439
+PUNCT 0x01388530 - 0x01388539
+PUNCT 0x01388630 - 0x01388639
+PUNCT 0x01388730 - 0x01388739
+PUNCT 0x01388830 - 0x01388839
+PUNCT 0x01388930 - 0x01388939
+PUNCT 0x01388a30 - 0x01388a39
+PUNCT 0x01388b30 - 0x01388b39
+PUNCT 0x01388c30 - 0x01388c39
+PUNCT 0x01388d30 - 0x01388d39
+PUNCT 0x01388e30 - 0x01388e39
+PUNCT 0x01388f30 - 0x01388f39
+PUNCT 0x01389030 - 0x01389039
+PUNCT 0x01389130 - 0x01389139
+PUNCT 0x01389230 - 0x01389239
+PUNCT 0x01389330 - 0x01389339
+PUNCT 0x01389430 - 0x01389439
+PUNCT 0x01389530 - 0x01389539
+PUNCT 0x01389630 - 0x01389639
+PUNCT 0x01389730 - 0x01389739
+PUNCT 0x01389830 - 0x01389839
+PUNCT 0x01389930 - 0x01389939
+PUNCT 0x01389a30 - 0x01389a39
+PUNCT 0x01389b30 - 0x01389b39
+PUNCT 0x01389c30 - 0x01389c39
+PUNCT 0x01389d30 - 0x01389d39
+PUNCT 0x01389e30 - 0x01389e39
+PUNCT 0x01389f30 - 0x01389f39
+PUNCT 0x0138a030 - 0x0138a039
+PUNCT 0x0138a130 - 0x0138a139
+PUNCT 0x0138a230 - 0x0138a239
+PUNCT 0x0138a330 - 0x0138a339
+PUNCT 0x0138a430 0x0138a431
+PUNCT 0x0138fd38 0x0138fd39
+PUNCT 0x0138fe30 - 0x0138fe39
+PUNCT 0x01398130 - 0x01398137 0x01398139
+PUNCT 0x01398230 - 0x01398239
+PUNCT 0x01398330 - 0x01398339
+PUNCT 0x01398430 - 0x01398439
+PUNCT 0x01398530 - 0x01398539
+PUNCT 0x01398630 - 0x01398639
+PUNCT 0x01398730 - 0x01398739
+PUNCT 0x01398830 - 0x01398839
+PUNCT 0x01398930 - 0x01398939
+PUNCT 0x01398b32 - 0x01398b39
+PUNCT 0x01398c30 - 0x01398c39
+PUNCT 0x01398d30 - 0x01398d39
+PUNCT 0x01398e30 - 0x01398e39
+PUNCT 0x01398f30 - 0x01398f39
+PUNCT 0x01399030 - 0x01399039
+PUNCT 0x01399130 - 0x01399139
+PUNCT 0x01399230 - 0x01399239
+PUNCT 0x01399330 - 0x01399339
+PUNCT 0x01399430 - 0x01399439
+PUNCT 0x01399530 - 0x01399539
+PUNCT 0x01399630 - 0x01399639
+PUNCT 0x01399730 - 0x01399739
+PUNCT 0x01399830 - 0x01399839
+PUNCT 0x01399930 - 0x01399939
+PUNCT 0x01399a30 - 0x01399a39
+PUNCT 0x01399b30 - 0x01399b39
+PUNCT 0x01399c30 - 0x01399c39
+PUNCT 0x01399d30 - 0x01399d39
+PUNCT 0x01399e30 - 0x01399e39
+PUNCT 0x01399f30 - 0x01399f39
+PUNCT 0x0139a030 - 0x0139a035
+PUNCT 0x0139a336 - 0x0139a339
+PUNCT 0x0139a430 - 0x0139a433
+PUNCT 0x0139a530 0x0139a536 0x0139a537
+PUNCT 0x0139a633 0x0139a634
+PUNCT 0x0139a734 0x0139a739
+PUNCT 0x0139b238 0x0139b239
+PUNCT 0x0139b334 - 0x0139b339
+PUNCT 0x0139b430 - 0x0139b433
+PUNCT 0x0139be30 - 0x0139be39
+PUNCT 0x0139bf30 - 0x0139bf39
+PUNCT 0x0139c030 - 0x0139c038
+PUNCT 0x0139c132 - 0x0139c139
+PUNCT 0x0139c230 - 0x0139c239
+PUNCT 0x0139c330 - 0x0139c336
+PUNCT 0x0139c635 - 0x0139c639
+PUNCT 0x0139c730 - 0x0139c739
+PUNCT 0x0139c830 - 0x0139c839
+PUNCT 0x0139c930 - 0x0139c932 0x0139c936
+PUNCT 0x0139ca37 - 0x0139ca39
+PUNCT 0x0139cb30 - 0x0139cb39
+PUNCT 0x0139cc30 - 0x0139cc39
+PUNCT 0x0139cd30 - 0x0139cd39
+PUNCT 0x0139ce30 - 0x0139ce34
+PUNCT 0x0139d030 - 0x0139d039
+PUNCT 0x0139d130 0x0139d131 0x0139d136 - 0x0139d139
+PUNCT 0x0139d230 - 0x0139d239
+PUNCT 0x0139d330 - 0x0139d339
+PUNCT 0x0139d430 - 0x0139d439
+PUNCT 0x0139d530 - 0x0139d539
+PUNCT 0x0139d630 - 0x0139d632 0x0139d634 - 0x0139d639
+PUNCT 0x0139d730 - 0x0139d739
+PUNCT 0x0139d830 - 0x0139d839
+PUNCT 0x0139d930 - 0x0139d939
+PUNCT 0x0139da30 - 0x0139da39
+PUNCT 0x0139db30 - 0x0139db39
+PUNCT 0x0139dc30 - 0x0139dc39
+PUNCT 0x0139dd30 - 0x0139dd39
+PUNCT 0x0139de30 - 0x0139de39
+PUNCT 0x0139df30 - 0x0139df39
+PUNCT 0x0139e030 - 0x0139e039
+PUNCT 0x0139e130 - 0x0139e139
+PUNCT 0x0139e230 - 0x0139e232 0x0139e237 - 0x0139e239
+PUNCT 0x0139e330 - 0x0139e339
+PUNCT 0x0139e430 - 0x0139e439
+PUNCT 0x0139e530 - 0x0139e539
+PUNCT 0x0139e630 - 0x0139e639
+PUNCT 0x0139e730 - 0x0139e739
+PUNCT 0x0139e830 - 0x0139e839
+PUNCT 0x0139e930 - 0x0139e939
+PUNCT 0x0139ea30 - 0x0139ea39
+PUNCT 0x0139eb30 - 0x0139eb34 0x0139eb37 - 0x0139eb39
+PUNCT 0x0139ec30 - 0x0139ec39
+PUNCT 0x0139ed30 - 0x0139ed39
+PUNCT 0x0139ee30 - 0x0139ee37
+PUNCT 0x02368f31 - 0x02368f39
+PUNCT 0x02369030 - 0x02369039
+PUNCT 0x02369130 - 0x02369139
+PUNCT 0x02369230 - 0x02369239
+PUNCT 0x02369330 - 0x02369339
+PUNCT 0x02369430 - 0x02369435
+PUNCT 0x0430b633
+PUNCT 0x0430eb36 0x0430eb37
+PUNCT 0x0430fe36
+PUNCT 0x04318538 0x04318539
+PUNCT 0x04318630 0x04318634
+PUNCT 0x04319535 - 0x04319539
+PUNCT 0x04319630 0x04319631
+PUNCT 0x0431a234 0x0431a236 - 0x0431a239
+PUNCT 0x0431a330 - 0x0431a332
+PUNCT 0x0431a436 0x0431a437
+SPACE 0x01308135
+SPACE 0x01308432
+SPACE 0x0134ac34
+SPACE 0x0136a336 - 0x0136a339
+SPACE 0x0136a430 - 0x0136a437
+SPACE 0x0136a635 0x0136a636
+SPACE 0x0136a732
+SPACE 0x0136ab35
+SPECIAL 0x01308535 0x01308536
+SPECIAL 0x01308631 0x01308634 - 0x01308636
+SPECIAL 0x0131e532 - 0x0131e537
+SPECIAL 0x01329a30 - 0x01329a32
+SPECIAL 0x0132ec36 - 0x0132ec39
+SPECIAL 0x0132ed30 - 0x0132ed35
+SPECIAL 0x0133dc32 - 0x0133dc39
+SPECIAL 0x0133dd30 - 0x0133dd32
+SPECIAL 0x0134b734 - 0x0134b736
+SPECIAL 0x0136ad32 0x0136ad36 - 0x0136ad39
+SPECIAL 0x0136ae30 0x0136ae31 0x0136ae38 0x0136ae39
+SPECIAL 0x0136af30 - 0x0136af37
+SPECIAL 0x0136c333 - 0x0136c339
+SPECIAL 0x0136c430 - 0x0136c439
+SPECIAL 0x0136c530 - 0x0136c539
+SPECIAL 0x01378c36 - 0x01378c39
+SPECIAL 0x01378d30 - 0x01378d35
+SPECIAL 0x01379534 - 0x01379539
+SPECIAL 0x01379630 - 0x01379639
+SPECIAL 0x01379730 - 0x01379734
+SPECIAL 0x0137c736 - 0x0137c739
+SPECIAL 0x0137c830 - 0x0137c839
+SPECIAL 0x0137c930 - 0x0137c939
+SPECIAL 0x0137ca30 - 0x0137ca35
+SPECIAL 0x0139a538 0x0139a539
+SPECIAL 0x0139a630
+SPECIAL 0x0139b330 - 0x0139b333
+SPECIAL 0x0139c530 - 0x0139c539
+SPECIAL 0x0139c630 - 0x0139c634
+SPECIAL 0x0139c937 - 0x0139c939
+SPECIAL 0x0139ca30 - 0x0139ca36
+SPECIAL 0x0139ce35 - 0x0139ce39
+SPECIAL 0x0139cf30 - 0x0139cf39
+SWIDTH2 0x01339d36 - 0x01339d39
+SWIDTH2 0x01339e30 - 0x01339e39
+SWIDTH2 0x01339f30 - 0x01339f39
+SWIDTH2 0x0133a030 - 0x0133a039
+SWIDTH2 0x0133a130 - 0x0133a139
+SWIDTH2 0x0133a230 - 0x0133a239
+SWIDTH2 0x0133a330 - 0x0133a339
+SWIDTH2 0x0133a430 - 0x0133a439
+SWIDTH2 0x0133a530 - 0x0133a539
+SWIDTH2 0x0133a630 - 0x0133a635
+SWIDTH2 0x0133a731
+SWIDTH2 0x0136eb35 0x0136eb36
+SWIDTH2 0x0138fd38 0x0138fd39
+SWIDTH2 0x0138fe30 - 0x0138fe39
+SWIDTH2 0x01398130 - 0x01398137 0x01398139
+SWIDTH2 0x01398230 - 0x01398239
+SWIDTH2 0x01398330 - 0x01398339
+SWIDTH2 0x01398430 - 0x01398439
+SWIDTH2 0x01398530 - 0x01398539
+SWIDTH2 0x01398630 - 0x01398639
+SWIDTH2 0x01398730 - 0x01398739
+SWIDTH2 0x01398830 - 0x01398839
+SWIDTH2 0x01398930 - 0x01398939
+SWIDTH2 0x01398b32 - 0x01398b39
+SWIDTH2 0x01398c30 - 0x01398c39
+SWIDTH2 0x01398d30 - 0x01398d39
+SWIDTH2 0x01398e30 - 0x01398e39
+SWIDTH2 0x01398f30 - 0x01398f39
+SWIDTH2 0x01399030 - 0x01399039
+SWIDTH2 0x01399130 - 0x01399139
+SWIDTH2 0x01399230 - 0x01399239
+SWIDTH2 0x01399330 - 0x01399339
+SWIDTH2 0x01399430 - 0x01399439
+SWIDTH2 0x01399530 - 0x01399539
+SWIDTH2 0x01399630 - 0x01399639
+SWIDTH2 0x01399730 - 0x01399739
+SWIDTH2 0x01399830 - 0x01399839
+SWIDTH2 0x01399930 - 0x01399939
+SWIDTH2 0x01399a30 - 0x01399a39
+SWIDTH2 0x01399b30 - 0x01399b39
+SWIDTH2 0x01399c30 - 0x01399c39
+SWIDTH2 0x01399d30 - 0x01399d39
+SWIDTH2 0x01399e30 - 0x01399e39
+SWIDTH2 0x01399f30 - 0x01399f39
+SWIDTH2 0x0139a030 - 0x0139a035
+SWIDTH2 0x0139a336 - 0x0139a339
+SWIDTH2 0x0139a430 - 0x0139a439
+SWIDTH2 0x0139a530 - 0x0139a539
+SWIDTH2 0x0139a630 - 0x0139a633 0x0139a636 - 0x0139a638
+SWIDTH2 0x0139a731 - 0x0139a739
+SWIDTH2 0x0139a830 0x0139a836 - 0x0139a838
+SWIDTH2 0x0139a933 - 0x0139a939
+SWIDTH2 0x0139aa30 - 0x0139aa39
+SWIDTH2 0x0139ab30 - 0x0139ab39
+SWIDTH2 0x0139ac30 - 0x0139ac39
+SWIDTH2 0x0139ad30 - 0x0139ad39
+SWIDTH2 0x0139ae30 - 0x0139ae39
+SWIDTH2 0x0139af30 - 0x0139af39
+SWIDTH2 0x0139b030 - 0x0139b039
+SWIDTH2 0x0139b130 - 0x0139b139
+SWIDTH2 0x0139b230 - 0x0139b236 0x0139b238 0x0139b239
+SWIDTH2 0x0139b330 - 0x0139b339
+SWIDTH2 0x0139b430 - 0x0139b439
+SWIDTH2 0x0139b530 - 0x0139b539
+SWIDTH2 0x0139b630 - 0x0139b637
+SWIDTH2 0x0139bc34 - 0x0139bc39
+SWIDTH2 0x0139bd30 - 0x0139bd39
+SWIDTH2 0x0139be30 - 0x0139be39
+SWIDTH2 0x0139bf30 - 0x0139bf39
+SWIDTH2 0x0139c030 - 0x0139c038
+SWIDTH2 0x0139c132 - 0x0139c139
+SWIDTH2 0x0139c230 - 0x0139c239
+SWIDTH2 0x0139c330 - 0x0139c336
+SWIDTH2 0x0139c530 - 0x0139c539
+SWIDTH2 0x0139c630 - 0x0139c639
+SWIDTH2 0x0139c730 - 0x0139c739
+SWIDTH2 0x0139c830 - 0x0139c839
+SWIDTH2 0x0139c930 - 0x0139c932 0x0139c936 - 0x0139c939
+SWIDTH2 0x0139ca30 - 0x0139ca39
+SWIDTH2 0x0139cb30 - 0x0139cb39
+SWIDTH2 0x0139cc30 - 0x0139cc39
+SWIDTH2 0x0139cd30 - 0x0139cd39
+SWIDTH2 0x0139ce30 - 0x0139ce39
+SWIDTH2 0x0139cf30 - 0x0139cf39
+SWIDTH2 0x0139d030 - 0x0139d039
+SWIDTH2 0x0139d130 0x0139d131 0x0139d136 - 0x0139d139
+SWIDTH2 0x0139d230 - 0x0139d239
+SWIDTH2 0x0139d330 - 0x0139d339
+SWIDTH2 0x0139d430 - 0x0139d439
+SWIDTH2 0x0139d530 - 0x0139d539
+SWIDTH2 0x0139d630 - 0x0139d632 0x0139d634 - 0x0139d639
+SWIDTH2 0x0139d730 - 0x0139d739
+SWIDTH2 0x0139d830 - 0x0139d839
+SWIDTH2 0x0139d930 - 0x0139d939
+SWIDTH2 0x0139da30 - 0x0139da39
+SWIDTH2 0x0139db30 - 0x0139db39
+SWIDTH2 0x0139dc30 - 0x0139dc39
+SWIDTH2 0x0139dd30 - 0x0139dd39
+SWIDTH2 0x0139de30 - 0x0139de39
+SWIDTH2 0x0139df30 - 0x0139df39
+SWIDTH2 0x0139e030 - 0x0139e039
+SWIDTH2 0x0139e130 - 0x0139e139
+SWIDTH2 0x0139e230 - 0x0139e232 0x0139e237 - 0x0139e239
+SWIDTH2 0x0139e330 - 0x0139e339
+SWIDTH2 0x0139e430 - 0x0139e439
+SWIDTH2 0x0139e530 - 0x0139e539
+SWIDTH2 0x0139e630 - 0x0139e639
+SWIDTH2 0x0139e730 - 0x0139e739
+SWIDTH2 0x0139e830 - 0x0139e839
+SWIDTH2 0x0139e930 - 0x0139e939
+SWIDTH2 0x0139ea30 - 0x0139ea39
+SWIDTH2 0x0139eb30 - 0x0139eb34 0x0139eb37 - 0x0139eb39
+SWIDTH2 0x0139ec30 - 0x0139ec39
+SWIDTH2 0x0139ed30 - 0x0139ed39
+SWIDTH2 0x0139ee30 - 0x0139ee37 0x0139ee39
+SWIDTH2 0x0139ef30 - 0x0139ef39
+SWIDTH2 0x0139f030 - 0x0139f039
+SWIDTH2 0x0139f130 - 0x0139f139
+SWIDTH2 0x0139f230 - 0x0139f239
+SWIDTH2 0x0139f330 - 0x0139f339
+SWIDTH2 0x0139f430 - 0x0139f439
+SWIDTH2 0x0139f530 - 0x0139f539
+SWIDTH2 0x0139f630 - 0x0139f639
+SWIDTH2 0x0139f730 - 0x0139f739
+SWIDTH2 0x0139f830 - 0x0139f839
+SWIDTH2 0x0139f930 - 0x0139f939
+SWIDTH2 0x0139fa30 - 0x0139fa39
+SWIDTH2 0x0139fb30 - 0x0139fb39
+SWIDTH2 0x0139fc30 - 0x0139fc39
+SWIDTH2 0x0139fd30 - 0x0139fd39
+SWIDTH2 0x0139fe30 - 0x0139fe39
+SWIDTH2 0x02308130 - 0x02308139
+SWIDTH2 0x02308230 - 0x02308239
+SWIDTH2 0x02308330 - 0x02308339
+SWIDTH2 0x02308430 - 0x02308439
+SWIDTH2 0x02308530 - 0x02308539
+SWIDTH2 0x02308630 - 0x02308639
+SWIDTH2 0x02308730 - 0x02308739
+SWIDTH2 0x02308830 - 0x02308839
+SWIDTH2 0x02308930 - 0x02308939
+SWIDTH2 0x02308a30 - 0x02308a39
+SWIDTH2 0x02308b30 - 0x02308b39
+SWIDTH2 0x02308c30 - 0x02308c39
+SWIDTH2 0x02308d30 - 0x02308d39
+SWIDTH2 0x02308e30 - 0x02308e39
+SWIDTH2 0x02308f30 - 0x02308f39
+SWIDTH2 0x02309030 - 0x02309039
+SWIDTH2 0x02309130 - 0x02309139
+SWIDTH2 0x02309230 - 0x02309239
+SWIDTH2 0x02309330 - 0x02309339
+SWIDTH2 0x02309430 - 0x02309439
+SWIDTH2 0x02309530 - 0x02309539
+SWIDTH2 0x02309630 - 0x02309639
+SWIDTH2 0x02309730 - 0x02309739
+SWIDTH2 0x02309830 - 0x02309839
+SWIDTH2 0x02309930 - 0x02309939
+SWIDTH2 0x02309a30 - 0x02309a39
+SWIDTH2 0x02309b30 - 0x02309b39
+SWIDTH2 0x02309c30 - 0x02309c39
+SWIDTH2 0x02309d30 - 0x02309d39
+SWIDTH2 0x02309e30 - 0x02309e39
+SWIDTH2 0x02309f30 - 0x02309f39
+SWIDTH2 0x0230a030 - 0x0230a039
+SWIDTH2 0x0230a130 - 0x0230a139
+SWIDTH2 0x0230a230 - 0x0230a239
+SWIDTH2 0x0230a330 - 0x0230a339
+SWIDTH2 0x0230a430 - 0x0230a439
+SWIDTH2 0x0230a530 - 0x0230a539
+SWIDTH2 0x0230a630 - 0x0230a639
+SWIDTH2 0x0230a730 - 0x0230a739
+SWIDTH2 0x0230a830 - 0x0230a839
+SWIDTH2 0x0230a930 - 0x0230a939
+SWIDTH2 0x0230aa30 - 0x0230aa39
+SWIDTH2 0x0230ab30 - 0x0230ab39
+SWIDTH2 0x0230ac30 - 0x0230ac39
+SWIDTH2 0x0230ad30 - 0x0230ad39
+SWIDTH2 0x0230ae30 - 0x0230ae39
+SWIDTH2 0x0230af30 - 0x0230af39
+SWIDTH2 0x0230b030 - 0x0230b039
+SWIDTH2 0x0230b130 - 0x0230b139
+SWIDTH2 0x0230b230 - 0x0230b239
+SWIDTH2 0x0230b330 - 0x0230b339
+SWIDTH2 0x0230b430 - 0x0230b439
+SWIDTH2 0x0230b530 - 0x0230b539
+SWIDTH2 0x0230b630 - 0x0230b639
+SWIDTH2 0x0230b730 - 0x0230b739
+SWIDTH2 0x0230b830 - 0x0230b839
+SWIDTH2 0x0230b930 - 0x0230b939
+SWIDTH2 0x0230ba30 - 0x0230ba39
+SWIDTH2 0x0230bb30 - 0x0230bb39
+SWIDTH2 0x0230bc30 - 0x0230bc39
+SWIDTH2 0x0230bd30 - 0x0230bd39
+SWIDTH2 0x0230be30 - 0x0230be39
+SWIDTH2 0x0230bf30 - 0x0230bf39
+SWIDTH2 0x0230c030 - 0x0230c039
+SWIDTH2 0x0230c130 - 0x0230c139
+SWIDTH2 0x0230c230 - 0x0230c239
+SWIDTH2 0x0230c330 - 0x0230c339
+SWIDTH2 0x0230c430 - 0x0230c439
+SWIDTH2 0x0230c530 - 0x0230c539
+SWIDTH2 0x0230c630 - 0x0230c639
+SWIDTH2 0x0230c730 - 0x0230c739
+SWIDTH2 0x0230c830 - 0x0230c839
+SWIDTH2 0x0230c930 - 0x0230c939
+SWIDTH2 0x0230ca30 - 0x0230ca39
+SWIDTH2 0x0230cb30 - 0x0230cb39
+SWIDTH2 0x0230cc30 - 0x0230cc39
+SWIDTH2 0x0230cd30 - 0x0230cd39
+SWIDTH2 0x0230ce30 - 0x0230ce39
+SWIDTH2 0x0230cf30 - 0x0230cf39
+SWIDTH2 0x0230d030 - 0x0230d039
+SWIDTH2 0x0230d130 - 0x0230d139
+SWIDTH2 0x0230d230 - 0x0230d239
+SWIDTH2 0x0230d330 - 0x0230d339
+SWIDTH2 0x0230d430 - 0x0230d439
+SWIDTH2 0x0230d530 - 0x0230d539
+SWIDTH2 0x0230d630 - 0x0230d639
+SWIDTH2 0x0230d730 - 0x0230d739
+SWIDTH2 0x0230d830 - 0x0230d839
+SWIDTH2 0x0230d930 - 0x0230d939
+SWIDTH2 0x0230da30 - 0x0230da39
+SWIDTH2 0x0230db30 - 0x0230db39
+SWIDTH2 0x0230dc30 - 0x0230dc39
+SWIDTH2 0x0230dd30 - 0x0230dd39
+SWIDTH2 0x0230de30 - 0x0230de39
+SWIDTH2 0x0230df30 - 0x0230df39
+SWIDTH2 0x0230e030 - 0x0230e039
+SWIDTH2 0x0230e130 - 0x0230e139
+SWIDTH2 0x0230e230 - 0x0230e239
+SWIDTH2 0x0230e330 - 0x0230e339
+SWIDTH2 0x0230e430 - 0x0230e439
+SWIDTH2 0x0230e530 - 0x0230e539
+SWIDTH2 0x0230e630 - 0x0230e639
+SWIDTH2 0x0230e730 - 0x0230e739
+SWIDTH2 0x0230e830 - 0x0230e839
+SWIDTH2 0x0230e930 - 0x0230e939
+SWIDTH2 0x0230ea30 - 0x0230ea39
+SWIDTH2 0x0230eb30 - 0x0230eb39
+SWIDTH2 0x0230ec30 - 0x0230ec39
+SWIDTH2 0x0230ed30 - 0x0230ed39
+SWIDTH2 0x0230ee30 - 0x0230ee39
+SWIDTH2 0x0230ef30 - 0x0230ef39
+SWIDTH2 0x0230f030 - 0x0230f039
+SWIDTH2 0x0230f130 - 0x0230f139
+SWIDTH2 0x0230f230 - 0x0230f239
+SWIDTH2 0x0230f330 - 0x0230f339
+SWIDTH2 0x0230f430 - 0x0230f439
+SWIDTH2 0x0230f530 - 0x0230f539
+SWIDTH2 0x0230f630 - 0x0230f639
+SWIDTH2 0x0230f730 - 0x0230f739
+SWIDTH2 0x0230f830 - 0x0230f839
+SWIDTH2 0x0230f930 - 0x0230f939
+SWIDTH2 0x0230fa30 - 0x0230fa39
+SWIDTH2 0x0230fb30 - 0x0230fb39
+SWIDTH2 0x0230fc30 - 0x0230fc39
+SWIDTH2 0x0230fd30 - 0x0230fd39
+SWIDTH2 0x0230fe30 - 0x0230fe39
+SWIDTH2 0x02318130 - 0x02318139
+SWIDTH2 0x02318230 - 0x02318239
+SWIDTH2 0x02318330 - 0x02318339
+SWIDTH2 0x02318430 - 0x02318439
+SWIDTH2 0x02318530 - 0x02318539
+SWIDTH2 0x02318630 - 0x02318639
+SWIDTH2 0x02318730 - 0x02318739
+SWIDTH2 0x02318830 - 0x02318839
+SWIDTH2 0x02318930 - 0x02318939
+SWIDTH2 0x02318a30 - 0x02318a39
+SWIDTH2 0x02318b30 - 0x02318b39
+SWIDTH2 0x02318c30 - 0x02318c39
+SWIDTH2 0x02318d30 - 0x02318d39
+SWIDTH2 0x02318e30 - 0x02318e39
+SWIDTH2 0x02318f30 - 0x02318f39
+SWIDTH2 0x02319030 - 0x02319039
+SWIDTH2 0x02319130 - 0x02319139
+SWIDTH2 0x02319230 - 0x02319239
+SWIDTH2 0x02319330 - 0x02319339
+SWIDTH2 0x02319430 - 0x02319439
+SWIDTH2 0x02319530 - 0x02319539
+SWIDTH2 0x02319630 - 0x02319639
+SWIDTH2 0x02319730 - 0x02319739
+SWIDTH2 0x02319830 - 0x02319839
+SWIDTH2 0x02319930 - 0x02319939
+SWIDTH2 0x02319a30 - 0x02319a39
+SWIDTH2 0x02319b30 - 0x02319b39
+SWIDTH2 0x02319c30 - 0x02319c39
+SWIDTH2 0x02319d30 - 0x02319d39
+SWIDTH2 0x02319e30 - 0x02319e39
+SWIDTH2 0x02319f30 - 0x02319f39
+SWIDTH2 0x0231a030 - 0x0231a039
+SWIDTH2 0x0231a130 - 0x0231a139
+SWIDTH2 0x0231a230 - 0x0231a239
+SWIDTH2 0x0231a330 - 0x0231a339
+SWIDTH2 0x0231a430 - 0x0231a439
+SWIDTH2 0x0231a530 - 0x0231a539
+SWIDTH2 0x0231a630 - 0x0231a639
+SWIDTH2 0x0231a730 - 0x0231a739
+SWIDTH2 0x0231a830 - 0x0231a839
+SWIDTH2 0x0231a930 - 0x0231a939
+SWIDTH2 0x0231aa30 - 0x0231aa39
+SWIDTH2 0x0231ab30 - 0x0231ab39
+SWIDTH2 0x0231ac30 - 0x0231ac39
+SWIDTH2 0x0231ad30 - 0x0231ad39
+SWIDTH2 0x0231ae30 - 0x0231ae39
+SWIDTH2 0x0231af30 - 0x0231af39
+SWIDTH2 0x0231b030 - 0x0231b039
+SWIDTH2 0x0231b130 - 0x0231b139
+SWIDTH2 0x0231b230 - 0x0231b239
+SWIDTH2 0x0231b330 - 0x0231b339
+SWIDTH2 0x0231b430 - 0x0231b439
+SWIDTH2 0x0231b530 - 0x0231b539
+SWIDTH2 0x0231b630 - 0x0231b639
+SWIDTH2 0x0231b730 - 0x0231b739
+SWIDTH2 0x0231b830 - 0x0231b839
+SWIDTH2 0x0231b930 - 0x0231b939
+SWIDTH2 0x0231ba30 - 0x0231ba39
+SWIDTH2 0x0231bb30 - 0x0231bb39
+SWIDTH2 0x0231bc30 - 0x0231bc39
+SWIDTH2 0x0231bd30 - 0x0231bd39
+SWIDTH2 0x0231be30 - 0x0231be39
+SWIDTH2 0x0231bf30 - 0x0231bf39
+SWIDTH2 0x0231c030 - 0x0231c039
+SWIDTH2 0x0231c130 - 0x0231c139
+SWIDTH2 0x0231c230 - 0x0231c239
+SWIDTH2 0x0231c330 - 0x0231c339
+SWIDTH2 0x0231c430 - 0x0231c439
+SWIDTH2 0x0231c530 - 0x0231c539
+SWIDTH2 0x0231c630 - 0x0231c639
+SWIDTH2 0x0231c730 - 0x0231c739
+SWIDTH2 0x0231c830 - 0x0231c839
+SWIDTH2 0x0231c930 - 0x0231c939
+SWIDTH2 0x0231ca30 - 0x0231ca39
+SWIDTH2 0x0231cb30 - 0x0231cb39
+SWIDTH2 0x0231cc30 - 0x0231cc39
+SWIDTH2 0x0231cd30 - 0x0231cd39
+SWIDTH2 0x0231ce30 - 0x0231ce39
+SWIDTH2 0x0231cf30 - 0x0231cf39
+SWIDTH2 0x0231d030 - 0x0231d039
+SWIDTH2 0x0231d130 - 0x0231d139
+SWIDTH2 0x0231d230 - 0x0231d239
+SWIDTH2 0x0231d330 - 0x0231d339
+SWIDTH2 0x0231d430 - 0x0231d439
+SWIDTH2 0x0231d530 - 0x0231d539
+SWIDTH2 0x0231d630 - 0x0231d639
+SWIDTH2 0x0231d730 - 0x0231d739
+SWIDTH2 0x0231d830 - 0x0231d839
+SWIDTH2 0x0231d930 - 0x0231d939
+SWIDTH2 0x0231da30 - 0x0231da39
+SWIDTH2 0x0231db30 - 0x0231db39
+SWIDTH2 0x0231dc30 - 0x0231dc39
+SWIDTH2 0x0231dd30 - 0x0231dd39
+SWIDTH2 0x0231de30 - 0x0231de39
+SWIDTH2 0x0231df30 - 0x0231df39
+SWIDTH2 0x0231e030 - 0x0231e039
+SWIDTH2 0x0231e130 - 0x0231e139
+SWIDTH2 0x0231e230 - 0x0231e239
+SWIDTH2 0x0231e330 - 0x0231e339
+SWIDTH2 0x0231e430 - 0x0231e439
+SWIDTH2 0x0231e530 - 0x0231e539
+SWIDTH2 0x0231e630 - 0x0231e639
+SWIDTH2 0x0231e730 - 0x0231e739
+SWIDTH2 0x0231e830 - 0x0231e839
+SWIDTH2 0x0231e930 - 0x0231e939
+SWIDTH2 0x0231ea30 - 0x0231ea39
+SWIDTH2 0x0231eb30 - 0x0231eb39
+SWIDTH2 0x0231ec30 - 0x0231ec39
+SWIDTH2 0x0231ed30 - 0x0231ed39
+SWIDTH2 0x0231ee30 - 0x0231ee39
+SWIDTH2 0x0231ef30 - 0x0231ef39
+SWIDTH2 0x0231f030 - 0x0231f039
+SWIDTH2 0x0231f130 - 0x0231f139
+SWIDTH2 0x0231f230 - 0x0231f239
+SWIDTH2 0x0231f330 - 0x0231f339
+SWIDTH2 0x0231f430 - 0x0231f439
+SWIDTH2 0x0231f530 - 0x0231f539
+SWIDTH2 0x0231f630 - 0x0231f639
+SWIDTH2 0x0231f730 - 0x0231f739
+SWIDTH2 0x0231f830 - 0x0231f839
+SWIDTH2 0x0231f930 - 0x0231f939
+SWIDTH2 0x0231fa30 - 0x0231fa39
+SWIDTH2 0x0231fb30 - 0x0231fb39
+SWIDTH2 0x0231fc30 - 0x0231fc39
+SWIDTH2 0x0231fd30 - 0x0231fd39
+SWIDTH2 0x0231fe30 - 0x0231fe39
+SWIDTH2 0x02328130 - 0x02328139
+SWIDTH2 0x02328230 - 0x02328239
+SWIDTH2 0x02328330 - 0x02328339
+SWIDTH2 0x02328430 - 0x02328439
+SWIDTH2 0x02328530 - 0x02328539
+SWIDTH2 0x02328630 - 0x02328639
+SWIDTH2 0x02328730 - 0x02328739
+SWIDTH2 0x02328830 - 0x02328839
+SWIDTH2 0x02328930 - 0x02328939
+SWIDTH2 0x02328a30 - 0x02328a39
+SWIDTH2 0x02328b30 - 0x02328b39
+SWIDTH2 0x02328c30 - 0x02328c39
+SWIDTH2 0x02328d30 - 0x02328d39
+SWIDTH2 0x02328e30 - 0x02328e39
+SWIDTH2 0x02328f30 - 0x02328f39
+SWIDTH2 0x02329030 - 0x02329039
+SWIDTH2 0x02329130 - 0x02329139
+SWIDTH2 0x02329230 - 0x02329239
+SWIDTH2 0x02329330 - 0x02329339
+SWIDTH2 0x02329430 - 0x02329439
+SWIDTH2 0x02329530 - 0x02329539
+SWIDTH2 0x02329630 - 0x02329639
+SWIDTH2 0x02329730 - 0x02329739
+SWIDTH2 0x02329830 - 0x02329839
+SWIDTH2 0x02329930 - 0x02329939
+SWIDTH2 0x02329a30 - 0x02329a39
+SWIDTH2 0x02329b30 - 0x02329b39
+SWIDTH2 0x02329c30 - 0x02329c39
+SWIDTH2 0x02329d30 - 0x02329d39
+SWIDTH2 0x02329e30 - 0x02329e39
+SWIDTH2 0x02329f30 - 0x02329f39
+SWIDTH2 0x0232a030 - 0x0232a039
+SWIDTH2 0x0232a130 - 0x0232a139
+SWIDTH2 0x0232a230 - 0x0232a239
+SWIDTH2 0x0232a330 - 0x0232a339
+SWIDTH2 0x0232a430 - 0x0232a439
+SWIDTH2 0x0232a530 - 0x0232a539
+SWIDTH2 0x0232a630 - 0x0232a639
+SWIDTH2 0x0232a730 - 0x0232a739
+SWIDTH2 0x0232a830 - 0x0232a839
+SWIDTH2 0x0232a930 - 0x0232a939
+SWIDTH2 0x0232aa30 - 0x0232aa39
+SWIDTH2 0x0232ab30 - 0x0232ab39
+SWIDTH2 0x0232ac30 - 0x0232ac39
+SWIDTH2 0x0232ad30 - 0x0232ad39
+SWIDTH2 0x0232ae30 - 0x0232ae39
+SWIDTH2 0x0232af30 - 0x0232af39
+SWIDTH2 0x0232b030 - 0x0232b039
+SWIDTH2 0x0232b130 - 0x0232b139
+SWIDTH2 0x0232b230 - 0x0232b239
+SWIDTH2 0x0232b330 - 0x0232b339
+SWIDTH2 0x0232b430 - 0x0232b439
+SWIDTH2 0x0232b530 - 0x0232b539
+SWIDTH2 0x0232b630 - 0x0232b639
+SWIDTH2 0x0232b730 - 0x0232b739
+SWIDTH2 0x0232b830 - 0x0232b839
+SWIDTH2 0x0232b930 - 0x0232b939
+SWIDTH2 0x0232ba30 - 0x0232ba39
+SWIDTH2 0x0232bb30 - 0x0232bb39
+SWIDTH2 0x0232bc30 - 0x0232bc39
+SWIDTH2 0x0232bd30 - 0x0232bd39
+SWIDTH2 0x0232be30 - 0x0232be39
+SWIDTH2 0x0232bf30 - 0x0232bf39
+SWIDTH2 0x0232c030 - 0x0232c039
+SWIDTH2 0x0232c130 - 0x0232c139
+SWIDTH2 0x0232c230 - 0x0232c239
+SWIDTH2 0x0232c330 - 0x0232c339
+SWIDTH2 0x0232c430 - 0x0232c439
+SWIDTH2 0x0232c530 - 0x0232c539
+SWIDTH2 0x0232c630 - 0x0232c639
+SWIDTH2 0x0232c730 - 0x0232c739
+SWIDTH2 0x0232c830 - 0x0232c839
+SWIDTH2 0x0232c930 - 0x0232c939
+SWIDTH2 0x0232ca30 - 0x0232ca39
+SWIDTH2 0x0232cb30 - 0x0232cb39
+SWIDTH2 0x0232cc30 - 0x0232cc39
+SWIDTH2 0x0232cd30 - 0x0232cd39
+SWIDTH2 0x0232ce30 - 0x0232ce39
+SWIDTH2 0x0232cf30 - 0x0232cf39
+SWIDTH2 0x0232d030 - 0x0232d039
+SWIDTH2 0x0232d130 - 0x0232d139
+SWIDTH2 0x0232d230 - 0x0232d239
+SWIDTH2 0x0232d330 - 0x0232d339
+SWIDTH2 0x0232d430 - 0x0232d439
+SWIDTH2 0x0232d530 - 0x0232d539
+SWIDTH2 0x0232d630 - 0x0232d639
+SWIDTH2 0x0232d730 - 0x0232d739
+SWIDTH2 0x0232d830 - 0x0232d839
+SWIDTH2 0x0232d930 - 0x0232d939
+SWIDTH2 0x0232da30 - 0x0232da39
+SWIDTH2 0x0232db30 - 0x0232db39
+SWIDTH2 0x0232dc30 - 0x0232dc39
+SWIDTH2 0x0232dd30 - 0x0232dd39
+SWIDTH2 0x0232de30 - 0x0232de39
+SWIDTH2 0x0232df30 - 0x0232df39
+SWIDTH2 0x0232e030 - 0x0232e039
+SWIDTH2 0x0232e130 - 0x0232e139
+SWIDTH2 0x0232e230 - 0x0232e239
+SWIDTH2 0x0232e330 - 0x0232e339
+SWIDTH2 0x0232e430 - 0x0232e439
+SWIDTH2 0x0232e530 - 0x0232e539
+SWIDTH2 0x0232e630 - 0x0232e639
+SWIDTH2 0x0232e730 - 0x0232e739
+SWIDTH2 0x0232e830 - 0x0232e839
+SWIDTH2 0x0232e930 - 0x0232e939
+SWIDTH2 0x0232ea30 - 0x0232ea39
+SWIDTH2 0x0232eb30 - 0x0232eb39
+SWIDTH2 0x0232ec30 - 0x0232ec39
+SWIDTH2 0x0232ed30 - 0x0232ed39
+SWIDTH2 0x0232ee30 - 0x0232ee39
+SWIDTH2 0x0232ef30 - 0x0232ef39
+SWIDTH2 0x0232f030 - 0x0232f039
+SWIDTH2 0x0232f130 - 0x0232f139
+SWIDTH2 0x0232f230 - 0x0232f239
+SWIDTH2 0x0232f330 - 0x0232f339
+SWIDTH2 0x0232f430 - 0x0232f439
+SWIDTH2 0x0232f530 - 0x0232f539
+SWIDTH2 0x0232f630 - 0x0232f639
+SWIDTH2 0x0232f730 - 0x0232f739
+SWIDTH2 0x0232f830 - 0x0232f839
+SWIDTH2 0x0232f930 - 0x0232f939
+SWIDTH2 0x0232fa30 - 0x0232fa39
+SWIDTH2 0x0232fb30 - 0x0232fb39
+SWIDTH2 0x0232fc30 - 0x0232fc39
+SWIDTH2 0x0232fd30 - 0x0232fd39
+SWIDTH2 0x0232fe30 - 0x0232fe39
+SWIDTH2 0x02338130 - 0x02338139
+SWIDTH2 0x02338230 - 0x02338239
+SWIDTH2 0x02338330 - 0x02338339
+SWIDTH2 0x02338430 - 0x02338439
+SWIDTH2 0x02338530 - 0x02338539
+SWIDTH2 0x02338630 - 0x02338639
+SWIDTH2 0x02338730 - 0x02338739
+SWIDTH2 0x02338830 - 0x02338839
+SWIDTH2 0x02338930 - 0x02338939
+SWIDTH2 0x02338a30 - 0x02338a39
+SWIDTH2 0x02338b30 - 0x02338b39
+SWIDTH2 0x02338c30 - 0x02338c39
+SWIDTH2 0x02338d30 - 0x02338d39
+SWIDTH2 0x02338e30 - 0x02338e39
+SWIDTH2 0x02338f30 - 0x02338f39
+SWIDTH2 0x02339030 - 0x02339039
+SWIDTH2 0x02339130 - 0x02339139
+SWIDTH2 0x02339230 - 0x02339239
+SWIDTH2 0x02339330 - 0x02339339
+SWIDTH2 0x02339430 - 0x02339439
+SWIDTH2 0x02339530 - 0x02339539
+SWIDTH2 0x02339630 - 0x02339639
+SWIDTH2 0x02339730 - 0x02339739
+SWIDTH2 0x02339830 - 0x02339839
+SWIDTH2 0x02339930 - 0x02339939
+SWIDTH2 0x02339a30 - 0x02339a39
+SWIDTH2 0x02339b30 - 0x02339b39
+SWIDTH2 0x02339c30 - 0x02339c39
+SWIDTH2 0x02339d30 - 0x02339d39
+SWIDTH2 0x02339e30 - 0x02339e39
+SWIDTH2 0x02339f30 - 0x02339f39
+SWIDTH2 0x0233a030 - 0x0233a039
+SWIDTH2 0x0233a130 - 0x0233a139
+SWIDTH2 0x0233a230 - 0x0233a239
+SWIDTH2 0x0233a330 - 0x0233a339
+SWIDTH2 0x0233a430 - 0x0233a439
+SWIDTH2 0x0233a530 - 0x0233a539
+SWIDTH2 0x0233a630 - 0x0233a639
+SWIDTH2 0x0233a730 - 0x0233a739
+SWIDTH2 0x0233a830 - 0x0233a839
+SWIDTH2 0x0233a930 - 0x0233a939
+SWIDTH2 0x0233aa30 - 0x0233aa39
+SWIDTH2 0x0233ab30 - 0x0233ab39
+SWIDTH2 0x0233ac30 - 0x0233ac39
+SWIDTH2 0x0233ad30 - 0x0233ad39
+SWIDTH2 0x0233ae30 - 0x0233ae39
+SWIDTH2 0x0233af30 - 0x0233af39
+SWIDTH2 0x0233b030 - 0x0233b039
+SWIDTH2 0x0233b130 - 0x0233b139
+SWIDTH2 0x0233b230 - 0x0233b239
+SWIDTH2 0x0233b330 - 0x0233b339
+SWIDTH2 0x0233b430 - 0x0233b439
+SWIDTH2 0x0233b530 - 0x0233b539
+SWIDTH2 0x0233b630 - 0x0233b639
+SWIDTH2 0x0233b730 - 0x0233b739
+SWIDTH2 0x0233b830 - 0x0233b839
+SWIDTH2 0x0233b930 - 0x0233b939
+SWIDTH2 0x0233ba30 - 0x0233ba39
+SWIDTH2 0x0233bb30 - 0x0233bb39
+SWIDTH2 0x0233bc30 - 0x0233bc39
+SWIDTH2 0x0233bd30 - 0x0233bd39
+SWIDTH2 0x0233be30 - 0x0233be39
+SWIDTH2 0x0233bf30 - 0x0233bf39
+SWIDTH2 0x0233c030 - 0x0233c039
+SWIDTH2 0x0233c130 - 0x0233c139
+SWIDTH2 0x0233c230 - 0x0233c239
+SWIDTH2 0x0233c330 - 0x0233c339
+SWIDTH2 0x0233c430 - 0x0233c439
+SWIDTH2 0x0233c530 - 0x0233c539
+SWIDTH2 0x0233c630 - 0x0233c639
+SWIDTH2 0x0233c730 - 0x0233c739
+SWIDTH2 0x0233c830 - 0x0233c839
+SWIDTH2 0x0233c930 - 0x0233c939
+SWIDTH2 0x0233ca30 - 0x0233ca39
+SWIDTH2 0x0233cb30 - 0x0233cb39
+SWIDTH2 0x0233cc30 - 0x0233cc39
+SWIDTH2 0x0233cd30 - 0x0233cd39
+SWIDTH2 0x0233ce30 - 0x0233ce39
+SWIDTH2 0x0233cf30 - 0x0233cf39
+SWIDTH2 0x0233d030 - 0x0233d039
+SWIDTH2 0x0233d130 - 0x0233d139
+SWIDTH2 0x0233d230 - 0x0233d239
+SWIDTH2 0x0233d330 - 0x0233d339
+SWIDTH2 0x0233d430 - 0x0233d439
+SWIDTH2 0x0233d530 - 0x0233d539
+SWIDTH2 0x0233d630 - 0x0233d639
+SWIDTH2 0x0233d730 - 0x0233d739
+SWIDTH2 0x0233d830 - 0x0233d839
+SWIDTH2 0x0233d930 - 0x0233d939
+SWIDTH2 0x0233da30 - 0x0233da39
+SWIDTH2 0x0233db30 - 0x0233db39
+SWIDTH2 0x0233dc30 - 0x0233dc39
+SWIDTH2 0x0233dd30 - 0x0233dd39
+SWIDTH2 0x0233de30 - 0x0233de39
+SWIDTH2 0x0233df30 - 0x0233df39
+SWIDTH2 0x0233e030 - 0x0233e039
+SWIDTH2 0x0233e130 - 0x0233e139
+SWIDTH2 0x0233e230 - 0x0233e239
+SWIDTH2 0x0233e330 - 0x0233e339
+SWIDTH2 0x0233e430 - 0x0233e439
+SWIDTH2 0x0233e530 - 0x0233e539
+SWIDTH2 0x0233e630 - 0x0233e639
+SWIDTH2 0x0233e730 - 0x0233e739
+SWIDTH2 0x0233e830 - 0x0233e839
+SWIDTH2 0x0233e930 - 0x0233e939
+SWIDTH2 0x0233ea30 - 0x0233ea39
+SWIDTH2 0x0233eb30 - 0x0233eb39
+SWIDTH2 0x0233ec30 - 0x0233ec39
+SWIDTH2 0x0233ed30 - 0x0233ed39
+SWIDTH2 0x0233ee30 - 0x0233ee39
+SWIDTH2 0x0233ef30 - 0x0233ef39
+SWIDTH2 0x0233f030 - 0x0233f039
+SWIDTH2 0x0233f130 - 0x0233f139
+SWIDTH2 0x0233f230 - 0x0233f239
+SWIDTH2 0x0233f330 - 0x0233f339
+SWIDTH2 0x0233f430 - 0x0233f439
+SWIDTH2 0x0233f530 - 0x0233f539
+SWIDTH2 0x0233f630 - 0x0233f639
+SWIDTH2 0x0233f730 - 0x0233f739
+SWIDTH2 0x0233f830 - 0x0233f839
+SWIDTH2 0x0233f930 - 0x0233f939
+SWIDTH2 0x0233fa30 - 0x0233fa39
+SWIDTH2 0x0233fb30 - 0x0233fb39
+SWIDTH2 0x0233fc30 - 0x0233fc39
+SWIDTH2 0x0233fd30 - 0x0233fd39
+SWIDTH2 0x0233fe30 - 0x0233fe39
+SWIDTH2 0x02348130 - 0x02348139
+SWIDTH2 0x02348230 - 0x02348239
+SWIDTH2 0x02348330 - 0x02348339
+SWIDTH2 0x02348430 - 0x02348439
+SWIDTH2 0x02348530 - 0x02348539
+SWIDTH2 0x02348630 - 0x02348639
+SWIDTH2 0x02348730 - 0x02348739
+SWIDTH2 0x02348830 - 0x02348839
+SWIDTH2 0x02348930 - 0x02348939
+SWIDTH2 0x02348a30 - 0x02348a39
+SWIDTH2 0x02348b30 - 0x02348b39
+SWIDTH2 0x02348c30 - 0x02348c39
+SWIDTH2 0x02348d30 - 0x02348d39
+SWIDTH2 0x02348e30 - 0x02348e39
+SWIDTH2 0x02348f30 - 0x02348f39
+SWIDTH2 0x02349030 - 0x02349039
+SWIDTH2 0x02349130 - 0x02349139
+SWIDTH2 0x02349230 - 0x02349239
+SWIDTH2 0x02349330 - 0x02349339
+SWIDTH2 0x02349430 - 0x02349439
+SWIDTH2 0x02349530 - 0x02349539
+SWIDTH2 0x02349630 - 0x02349639
+SWIDTH2 0x02349730 - 0x02349739
+SWIDTH2 0x02349830 - 0x02349839
+SWIDTH2 0x02349930 - 0x02349939
+SWIDTH2 0x02349a30 - 0x02349a39
+SWIDTH2 0x02349b30 - 0x02349b39
+SWIDTH2 0x02349c30 - 0x02349c39
+SWIDTH2 0x02349d30 - 0x02349d39
+SWIDTH2 0x02349e30 - 0x02349e39
+SWIDTH2 0x02349f30 - 0x02349f39
+SWIDTH2 0x0234a030 - 0x0234a039
+SWIDTH2 0x0234a130 - 0x0234a139
+SWIDTH2 0x0234a230 - 0x0234a239
+SWIDTH2 0x0234a330 - 0x0234a339
+SWIDTH2 0x0234a430 - 0x0234a439
+SWIDTH2 0x0234a530 - 0x0234a539
+SWIDTH2 0x0234a630 - 0x0234a639
+SWIDTH2 0x0234a730 - 0x0234a739
+SWIDTH2 0x0234a830 - 0x0234a839
+SWIDTH2 0x0234a930 - 0x0234a939
+SWIDTH2 0x0234aa30 - 0x0234aa39
+SWIDTH2 0x0234ab30 - 0x0234ab39
+SWIDTH2 0x0234ac30 - 0x0234ac39
+SWIDTH2 0x0234ad30 - 0x0234ad39
+SWIDTH2 0x0234ae30 - 0x0234ae39
+SWIDTH2 0x0234af30 - 0x0234af39
+SWIDTH2 0x0234b030 - 0x0234b039
+SWIDTH2 0x0234b130 - 0x0234b139
+SWIDTH2 0x0234b230 - 0x0234b239
+SWIDTH2 0x0234b330 - 0x0234b339
+SWIDTH2 0x0234b430 - 0x0234b439
+SWIDTH2 0x0234b530 - 0x0234b539
+SWIDTH2 0x0234b630 - 0x0234b639
+SWIDTH2 0x0234b730 - 0x0234b739
+SWIDTH2 0x0234b830 - 0x0234b839
+SWIDTH2 0x0234b930 - 0x0234b939
+SWIDTH2 0x0234ba30 - 0x0234ba39
+SWIDTH2 0x0234bb30 - 0x0234bb39
+SWIDTH2 0x0234bc30 - 0x0234bc39
+SWIDTH2 0x0234bd30 - 0x0234bd39
+SWIDTH2 0x0234be30 - 0x0234be39
+SWIDTH2 0x0234bf30 - 0x0234bf39
+SWIDTH2 0x0234c030 - 0x0234c039
+SWIDTH2 0x0234c130 - 0x0234c139
+SWIDTH2 0x0234c230 - 0x0234c239
+SWIDTH2 0x0234c330 - 0x0234c339
+SWIDTH2 0x0234c430 - 0x0234c439
+SWIDTH2 0x0234c530 - 0x0234c539
+SWIDTH2 0x0234c630 - 0x0234c639
+SWIDTH2 0x0234c730 - 0x0234c739
+SWIDTH2 0x0234c830 - 0x0234c839
+SWIDTH2 0x0234c930 - 0x0234c939
+SWIDTH2 0x0234ca30 - 0x0234ca39
+SWIDTH2 0x0234cb30 - 0x0234cb39
+SWIDTH2 0x0234cc30 - 0x0234cc39
+SWIDTH2 0x0234cd30 - 0x0234cd39
+SWIDTH2 0x0234ce30 - 0x0234ce39
+SWIDTH2 0x0234cf30 - 0x0234cf39
+SWIDTH2 0x0234d030 - 0x0234d039
+SWIDTH2 0x0234d130 - 0x0234d139
+SWIDTH2 0x0234d230 - 0x0234d239
+SWIDTH2 0x0234d330 - 0x0234d339
+SWIDTH2 0x0234d430 - 0x0234d439
+SWIDTH2 0x0234d530 - 0x0234d539
+SWIDTH2 0x0234d630 - 0x0234d639
+SWIDTH2 0x0234d730 - 0x0234d739
+SWIDTH2 0x0234d830 - 0x0234d839
+SWIDTH2 0x0234d930 - 0x0234d939
+SWIDTH2 0x0234da30 - 0x0234da39
+SWIDTH2 0x0234db30 - 0x0234db39
+SWIDTH2 0x0234dc30 - 0x0234dc39
+SWIDTH2 0x0234dd30 - 0x0234dd39
+SWIDTH2 0x0234de30 - 0x0234de39
+SWIDTH2 0x0234df30 - 0x0234df39
+SWIDTH2 0x0234e030 - 0x0234e039
+SWIDTH2 0x0234e130 - 0x0234e139
+SWIDTH2 0x0234e230 - 0x0234e239
+SWIDTH2 0x0234e330 - 0x0234e339
+SWIDTH2 0x0234e430 - 0x0234e439
+SWIDTH2 0x0234e530 - 0x0234e539
+SWIDTH2 0x0234e630 - 0x0234e639
+SWIDTH2 0x0234e730 - 0x0234e739
+SWIDTH2 0x0234e830 - 0x0234e839
+SWIDTH2 0x0234e930 - 0x0234e939
+SWIDTH2 0x0234ea30 - 0x0234ea39
+SWIDTH2 0x0234eb30 - 0x0234eb39
+SWIDTH2 0x0234ec30 - 0x0234ec39
+SWIDTH2 0x0234ed30 - 0x0234ed39
+SWIDTH2 0x0234ee30 - 0x0234ee39
+SWIDTH2 0x0234ef30 - 0x0234ef39
+SWIDTH2 0x0234f030 - 0x0234f039
+SWIDTH2 0x0234f130 - 0x0234f139
+SWIDTH2 0x0234f230 - 0x0234f239
+SWIDTH2 0x0234f330 - 0x0234f339
+SWIDTH2 0x0234f430 - 0x0234f439
+SWIDTH2 0x0234f530 - 0x0234f539
+SWIDTH2 0x0234f630 - 0x0234f639
+SWIDTH2 0x0234f730 - 0x0234f739
+SWIDTH2 0x0234f830 - 0x0234f839
+SWIDTH2 0x0234f930 - 0x0234f939
+SWIDTH2 0x0234fa30 - 0x0234fa39
+SWIDTH2 0x0234fb30 - 0x0234fb39
+SWIDTH2 0x0234fc30 - 0x0234fc39
+SWIDTH2 0x0234fd30 - 0x0234fd39
+SWIDTH2 0x0234fe30 - 0x0234fe39
+SWIDTH2 0x02358130 - 0x02358139
+SWIDTH2 0x02358230 - 0x02358239
+SWIDTH2 0x02358330 - 0x02358339
+SWIDTH2 0x02358430 - 0x02358439
+SWIDTH2 0x02358530 - 0x02358539
+SWIDTH2 0x02358630 - 0x02358639
+SWIDTH2 0x02358730 - 0x02358738
+SWIDTH2 0x02359833 - 0x02359839
+SWIDTH2 0x02359930 - 0x02359939
+SWIDTH2 0x02359a30 - 0x02359a39
+SWIDTH2 0x02359b30 - 0x02359b39
+SWIDTH2 0x02359c30 - 0x02359c39
+SWIDTH2 0x02359d30 - 0x02359d39
+SWIDTH2 0x02359e30 - 0x02359e39
+SWIDTH2 0x02359f30 - 0x02359f39
+SWIDTH2 0x0235a030 - 0x0235a039
+SWIDTH2 0x0235a130 - 0x0235a139
+SWIDTH2 0x0235a230 - 0x0235a239
+SWIDTH2 0x0235a330 - 0x0235a339
+SWIDTH2 0x0235a430 - 0x0235a439
+SWIDTH2 0x0235a530 - 0x0235a539
+SWIDTH2 0x0235a630 - 0x0235a639
+SWIDTH2 0x0235a730 - 0x0235a739
+SWIDTH2 0x0235a830 - 0x0235a839
+SWIDTH2 0x0235a930 - 0x0235a939
+SWIDTH2 0x0235aa30 - 0x0235aa39
+SWIDTH2 0x0235ab30 - 0x0235ab39
+SWIDTH2 0x0235ac30 - 0x0235ac39
+SWIDTH2 0x0235ad30 - 0x0235ad39
+SWIDTH2 0x0235ae30 - 0x0235ae39
+SWIDTH2 0x0235af30 - 0x0235af39
+SWIDTH2 0x0235b030 - 0x0235b039
+SWIDTH2 0x0235b130 - 0x0235b139
+SWIDTH2 0x0235b230 - 0x0235b239
+SWIDTH2 0x0235b330 - 0x0235b339
+SWIDTH2 0x0235b430 - 0x0235b439
+SWIDTH2 0x0235b530 - 0x0235b539
+SWIDTH2 0x0235b630 - 0x0235b639
+SWIDTH2 0x0235b730 - 0x0235b739
+SWIDTH2 0x0235b830 - 0x0235b839
+SWIDTH2 0x0235b930 - 0x0235b939
+SWIDTH2 0x0235ba30 - 0x0235ba39
+SWIDTH2 0x0235bb30 - 0x0235bb39
+SWIDTH2 0x0235bc30 - 0x0235bc39
+SWIDTH2 0x0235bd30 - 0x0235bd39
+SWIDTH2 0x0235be30 - 0x0235be39
+SWIDTH2 0x0235bf30 - 0x0235bf39
+SWIDTH2 0x0235c030 - 0x0235c039
+SWIDTH2 0x0235c130 - 0x0235c139
+SWIDTH2 0x0235c230 - 0x0235c239
+SWIDTH2 0x0235c330 - 0x0235c339
+SWIDTH2 0x0235c430 - 0x0235c439
+SWIDTH2 0x0235c530 - 0x0235c539
+SWIDTH2 0x0235c630 - 0x0235c639
+SWIDTH2 0x0235c730 - 0x0235c739
+SWIDTH2 0x0235c830 - 0x0235c839
+SWIDTH2 0x0235c930 - 0x0235c939
+SWIDTH2 0x0235ca30 - 0x0235ca39
+SWIDTH2 0x0235cb30 - 0x0235cb39
+SWIDTH2 0x0235cc30 - 0x0235cc39
+SWIDTH2 0x0235cd30 - 0x0235cd39
+SWIDTH2 0x0235ce30 - 0x0235ce39
+SWIDTH2 0x0235cf30 - 0x0235cf39
+SWIDTH2 0x0235d030 - 0x0235d039
+SWIDTH2 0x0235d130 - 0x0235d139
+SWIDTH2 0x0235d230 - 0x0235d239
+SWIDTH2 0x0235d330 - 0x0235d339
+SWIDTH2 0x0235d430 - 0x0235d439
+SWIDTH2 0x0235d530 - 0x0235d539
+SWIDTH2 0x0235d630 - 0x0235d639
+SWIDTH2 0x0235d730 - 0x0235d739
+SWIDTH2 0x0235d830 - 0x0235d839
+SWIDTH2 0x0235d930 - 0x0235d939
+SWIDTH2 0x0235da30 - 0x0235da39
+SWIDTH2 0x0235db30 - 0x0235db39
+SWIDTH2 0x0235dc30 - 0x0235dc39
+SWIDTH2 0x0235dd30 - 0x0235dd39
+SWIDTH2 0x0235de30 - 0x0235de39
+SWIDTH2 0x0235df30 - 0x0235df39
+SWIDTH2 0x0235e030 - 0x0235e039
+SWIDTH2 0x0235e130 - 0x0235e139
+SWIDTH2 0x0235e230 - 0x0235e239
+SWIDTH2 0x0235e330 - 0x0235e339
+SWIDTH2 0x0235e430 - 0x0235e439
+SWIDTH2 0x0235e530 - 0x0235e539
+SWIDTH2 0x0235e630 - 0x0235e639
+SWIDTH2 0x0235e730 - 0x0235e739
+SWIDTH2 0x0235e830 - 0x0235e839
+SWIDTH2 0x0235e930 - 0x0235e939
+SWIDTH2 0x0235ea30 - 0x0235ea39
+SWIDTH2 0x0235eb30 - 0x0235eb39
+SWIDTH2 0x0235ec30 - 0x0235ec39
+SWIDTH2 0x0235ed30 - 0x0235ed39
+SWIDTH2 0x0235ee30 - 0x0235ee39
+SWIDTH2 0x0235ef30 - 0x0235ef39
+SWIDTH2 0x0235f030 - 0x0235f039
+SWIDTH2 0x0235f130 - 0x0235f139
+SWIDTH2 0x0235f230 - 0x0235f239
+SWIDTH2 0x0235f330 - 0x0235f339
+SWIDTH2 0x0235f430 - 0x0235f439
+SWIDTH2 0x0235f530 - 0x0235f539
+SWIDTH2 0x0235f630 - 0x0235f639
+SWIDTH2 0x0235f730 - 0x0235f739
+SWIDTH2 0x0235f830 - 0x0235f839
+SWIDTH2 0x0235f930 - 0x0235f939
+SWIDTH2 0x0235fa30 - 0x0235fa39
+SWIDTH2 0x0235fb30 - 0x0235fb39
+SWIDTH2 0x0235fc30 - 0x0235fc39
+SWIDTH2 0x0235fd30 - 0x0235fd39
+SWIDTH2 0x0235fe30 - 0x0235fe39
+SWIDTH2 0x02368130 - 0x02368139
+SWIDTH2 0x02368230 - 0x02368239
+SWIDTH2 0x02368330 - 0x02368339
+SWIDTH2 0x02368430 - 0x02368439
+SWIDTH2 0x02368530 - 0x02368539
+SWIDTH2 0x02368630 - 0x02368639
+SWIDTH2 0x02368730 - 0x02368739
+SWIDTH2 0x02368830 - 0x02368839
+SWIDTH2 0x02368930 - 0x02368939
+SWIDTH2 0x02368a30 - 0x02368a39
+SWIDTH2 0x02368b30 - 0x02368b39
+SWIDTH2 0x02368c30 - 0x02368c39
+SWIDTH2 0x02368d30 - 0x02368d39
+SWIDTH2 0x02368e30 - 0x02368e37
+SWIDTH2 0x02368f31 - 0x02368f39
+SWIDTH2 0x02369030 - 0x02369039
+SWIDTH2 0x02369130 - 0x02369139
+SWIDTH2 0x02369230 - 0x02369239
+SWIDTH2 0x02369330 - 0x02369339
+SWIDTH2 0x02369430 - 0x02369435
+SWIDTH2 0x0237cf35 - 0x0237cf39
+SWIDTH2 0x0237d030 - 0x0237d039
+SWIDTH2 0x0237d130 - 0x0237d139
+SWIDTH2 0x0237d230 - 0x0237d239
+SWIDTH2 0x0237d330 - 0x0237d339
+SWIDTH2 0x0237d430 - 0x0237d439
+SWIDTH2 0x0237d530 - 0x0237d539
+SWIDTH2 0x0237d630 - 0x0237d639
+SWIDTH2 0x0237d730 - 0x0237d739
+SWIDTH2 0x0237d830 - 0x0237d839
+SWIDTH2 0x0237d930 - 0x0237d939
+SWIDTH2 0x0237da30 - 0x0237da39
+SWIDTH2 0x0237db30 - 0x0237db39
+SWIDTH2 0x0237dc30 - 0x0237dc39
+SWIDTH2 0x0237dd30 - 0x0237dd39
+SWIDTH2 0x0237de30 - 0x0237de39
+SWIDTH2 0x0237df30 - 0x0237df39
+SWIDTH2 0x0237e030 - 0x0237e039
+SWIDTH2 0x0237e130 - 0x0237e139
+SWIDTH2 0x0237e230 - 0x0237e239
+SWIDTH2 0x0237e330 - 0x0237e339
+SWIDTH2 0x0237e430 - 0x0237e439
+SWIDTH2 0x0237e530 - 0x0237e539
+SWIDTH2 0x0237e630 - 0x0237e639
+SWIDTH2 0x0237e730 - 0x0237e739
+SWIDTH2 0x0237e830 - 0x0237e839
+SWIDTH2 0x0237e930 - 0x0237e939
+SWIDTH2 0x0237ea30 - 0x0237ea39
+SWIDTH2 0x0237eb30 - 0x0237eb39
+SWIDTH2 0x0237ec30 - 0x0237ec39
+SWIDTH2 0x0237ed30 - 0x0237ed39
+SWIDTH2 0x0237ee30 - 0x0237ee39
+SWIDTH2 0x0237ef30 - 0x0237ef39
+SWIDTH2 0x0237f030 - 0x0237f039
+SWIDTH2 0x0237f130 - 0x0237f139
+SWIDTH2 0x0237f230 - 0x0237f239
+SWIDTH2 0x0237f330 - 0x0237f339
+SWIDTH2 0x0237f430 - 0x0237f439
+SWIDTH2 0x0237f530 - 0x0237f539
+SWIDTH2 0x0237f630 - 0x0237f639
+SWIDTH2 0x0237f730 - 0x0237f739
+SWIDTH2 0x0237f830 - 0x0237f839
+SWIDTH2 0x0237f930 - 0x0237f939
+SWIDTH2 0x0237fa30 - 0x0237fa39
+SWIDTH2 0x0237fb30 - 0x0237fb39
+SWIDTH2 0x0237fc30 - 0x0237fc39
+SWIDTH2 0x0237fd30 - 0x0237fd39
+SWIDTH2 0x0237fe30 - 0x0237fe39
+SWIDTH2 0x02388130 - 0x02388139
+SWIDTH2 0x02388230 - 0x02388239
+SWIDTH2 0x02388330 - 0x02388339
+SWIDTH2 0x02388430 - 0x02388439
+SWIDTH2 0x02388530 - 0x02388539
+SWIDTH2 0x02388630 - 0x02388639
+SWIDTH2 0x02388730 - 0x02388739
+SWIDTH2 0x02388830 - 0x02388839
+SWIDTH2 0x02388930 - 0x02388939
+SWIDTH2 0x02388a30 - 0x02388a39
+SWIDTH2 0x02388b30 - 0x02388b39
+SWIDTH2 0x02388c30 - 0x02388c39
+SWIDTH2 0x02388d30 - 0x02388d39
+SWIDTH2 0x02388e30 - 0x02388e39
+SWIDTH2 0x02388f30 - 0x02388f39
+SWIDTH2 0x02389030 - 0x02389039
+SWIDTH2 0x02389130 - 0x02389139
+SWIDTH2 0x02389230 - 0x02389239
+SWIDTH2 0x02389330 - 0x02389339
+SWIDTH2 0x02389430 - 0x02389439
+SWIDTH2 0x02389530 - 0x02389539
+SWIDTH2 0x02389630 - 0x02389639
+SWIDTH2 0x02389730 - 0x02389739
+SWIDTH2 0x02389830 - 0x02389839
+SWIDTH2 0x02389930 - 0x02389939
+SWIDTH2 0x02389a30 - 0x02389a39
+SWIDTH2 0x02389b30 - 0x02389b39
+SWIDTH2 0x02389c30 - 0x02389c39
+SWIDTH2 0x02389d30 - 0x02389d39
+SWIDTH2 0x02389e30 - 0x02389e39
+SWIDTH2 0x02389f30 - 0x02389f39
+SWIDTH2 0x0238a030 - 0x0238a039
+SWIDTH2 0x0238a130 - 0x0238a139
+SWIDTH2 0x0238a230 - 0x0238a239
+SWIDTH2 0x0238a330 - 0x0238a339
+SWIDTH2 0x0238a430 - 0x0238a439
+SWIDTH2 0x0238a530 - 0x0238a539
+SWIDTH2 0x0238a630 - 0x0238a639
+SWIDTH2 0x0238a730 - 0x0238a739
+SWIDTH2 0x0238a830 - 0x0238a839
+SWIDTH2 0x0238a930 - 0x0238a939
+SWIDTH2 0x0238aa30 - 0x0238aa39
+SWIDTH2 0x0238ab30 - 0x0238ab39
+SWIDTH2 0x0238ac30 - 0x0238ac39
+SWIDTH2 0x0238ad30 - 0x0238ad39
+SWIDTH2 0x0238ae30 - 0x0238ae39
+SWIDTH2 0x0238af30 - 0x0238af39
+SWIDTH2 0x0238b030 - 0x0238b039
+SWIDTH2 0x0238b130 - 0x0238b139
+SWIDTH2 0x0238b230 - 0x0238b239
+SWIDTH2 0x0238b330 - 0x0238b339
+SWIDTH2 0x0238b430 - 0x0238b439
+SWIDTH2 0x0238b530 - 0x0238b539
+SWIDTH2 0x0238b630 - 0x0238b639
+SWIDTH2 0x0238b730 - 0x0238b739
+SWIDTH2 0x0238b830 - 0x0238b839
+SWIDTH2 0x0238b930 - 0x0238b939
+SWIDTH2 0x0238ba30 - 0x0238ba39
+SWIDTH2 0x0238bb30 - 0x0238bb39
+SWIDTH2 0x0238bc30 - 0x0238bc39
+SWIDTH2 0x0238bd30 - 0x0238bd39
+SWIDTH2 0x0238be30 - 0x0238be39
+SWIDTH2 0x0238bf30 - 0x0238bf39
+SWIDTH2 0x0238c030 - 0x0238c039
+SWIDTH2 0x0238c130 - 0x0238c139
+SWIDTH2 0x0238c230 - 0x0238c239
+SWIDTH2 0x0238c330 - 0x0238c339
+SWIDTH2 0x0238c430 - 0x0238c439
+SWIDTH2 0x0238c530 - 0x0238c539
+SWIDTH2 0x0238c630 - 0x0238c639
+SWIDTH2 0x0238c730 - 0x0238c739
+SWIDTH2 0x0238c830 - 0x0238c839
+SWIDTH2 0x0238c930 - 0x0238c939
+SWIDTH2 0x0238ca30 - 0x0238ca39
+SWIDTH2 0x0238cb30 - 0x0238cb39
+SWIDTH2 0x0238cc30 - 0x0238cc39
+SWIDTH2 0x0238cd30 - 0x0238cd39
+SWIDTH2 0x0238ce30 - 0x0238ce39
+SWIDTH2 0x0238cf30 - 0x0238cf39
+SWIDTH2 0x0238d030 - 0x0238d039
+SWIDTH2 0x0238d130 - 0x0238d139
+SWIDTH2 0x0238d230 - 0x0238d239
+SWIDTH2 0x0238d330 - 0x0238d339
+SWIDTH2 0x0238d430 - 0x0238d439
+SWIDTH2 0x0238d530 - 0x0238d539
+SWIDTH2 0x0238d630 - 0x0238d639
+SWIDTH2 0x0238d730 - 0x0238d739
+SWIDTH2 0x0238d830 - 0x0238d839
+SWIDTH2 0x0238d930 - 0x0238d939
+SWIDTH2 0x0238da30 - 0x0238da39
+SWIDTH2 0x0238db30 - 0x0238db39
+SWIDTH2 0x0238dc30 - 0x0238dc39
+SWIDTH2 0x0238dd30 - 0x0238dd39
+SWIDTH2 0x0238de30 - 0x0238de39
+SWIDTH2 0x0238df30 - 0x0238df39
+SWIDTH2 0x0238e030 - 0x0238e039
+SWIDTH2 0x0238e130 - 0x0238e139
+SWIDTH2 0x0238e230 - 0x0238e239
+SWIDTH2 0x0238e330 - 0x0238e339
+SWIDTH2 0x0238e430 - 0x0238e439
+SWIDTH2 0x0238e530 - 0x0238e539
+SWIDTH2 0x0238e630 - 0x0238e639
+SWIDTH2 0x0238e730 - 0x0238e739
+SWIDTH2 0x0238e830 - 0x0238e839
+SWIDTH2 0x0238e930 - 0x0238e939
+SWIDTH2 0x0238ea30 - 0x0238ea39
+SWIDTH2 0x0238eb30 - 0x0238eb39
+SWIDTH2 0x0238ec30 - 0x0238ec39
+SWIDTH2 0x0238ed30 - 0x0238ed39
+SWIDTH2 0x0238ee30 - 0x0238ee39
+SWIDTH2 0x0238ef30 - 0x0238ef39
+SWIDTH2 0x0238f030 - 0x0238f039
+SWIDTH2 0x0238f130 - 0x0238f139
+SWIDTH2 0x0238f230 - 0x0238f239
+SWIDTH2 0x0238f330 - 0x0238f339
+SWIDTH2 0x0238f430 - 0x0238f439
+SWIDTH2 0x0238f530 - 0x0238f539
+SWIDTH2 0x0238f630 - 0x0238f639
+SWIDTH2 0x0238f730 - 0x0238f739
+SWIDTH2 0x0238f830 - 0x0238f839
+SWIDTH2 0x0238f930 - 0x0238f939
+SWIDTH2 0x0238fa30 - 0x0238fa39
+SWIDTH2 0x0238fb30 - 0x0238fb39
+SWIDTH2 0x0238fc30 - 0x0238fc39
+SWIDTH2 0x0238fd30 - 0x0238fd39
+SWIDTH2 0x0238fe30 - 0x0238fe39
+SWIDTH2 0x02398130 - 0x02398139
+SWIDTH2 0x02398230 - 0x02398239
+SWIDTH2 0x02398330 - 0x02398339
+SWIDTH2 0x02398430 - 0x02398439
+SWIDTH2 0x02398530 - 0x02398539
+SWIDTH2 0x02398630 - 0x02398639
+SWIDTH2 0x02398730 - 0x02398739
+SWIDTH2 0x02398830 - 0x02398839
+SWIDTH2 0x02398930 - 0x02398939
+SWIDTH2 0x02398a30 - 0x02398a39
+SWIDTH2 0x02398b30 - 0x02398b39
+SWIDTH2 0x02398c30 - 0x02398c39
+SWIDTH2 0x02398d30 - 0x02398d39
+SWIDTH2 0x02398e30 - 0x02398e39
+SWIDTH2 0x02398f30 - 0x02398f39
+SWIDTH2 0x02399030 - 0x02399039
+SWIDTH2 0x02399130 - 0x02399139
+SWIDTH2 0x02399230 - 0x02399239
+SWIDTH2 0x02399330 - 0x02399339
+SWIDTH2 0x02399430 - 0x02399439
+SWIDTH2 0x02399530 - 0x02399539
+SWIDTH2 0x02399630 - 0x02399639
+SWIDTH2 0x02399730 - 0x02399739
+SWIDTH2 0x02399830 - 0x02399839
+SWIDTH2 0x02399930 - 0x02399939
+SWIDTH2 0x02399a30 - 0x02399a39
+SWIDTH2 0x02399b30 - 0x02399b39
+SWIDTH2 0x02399c30 - 0x02399c39
+SWIDTH2 0x02399d30 - 0x02399d39
+SWIDTH2 0x02399e30 - 0x02399e39
+SWIDTH2 0x02399f30 - 0x02399f39
+SWIDTH2 0x0239a030 - 0x0239a039
+SWIDTH2 0x0239a130 - 0x0239a139
+SWIDTH2 0x0239a230 - 0x0239a239
+SWIDTH2 0x0239a330 - 0x0239a339
+SWIDTH2 0x0239a430 - 0x0239a439
+SWIDTH2 0x0239a530 - 0x0239a539
+SWIDTH2 0x0239a630 - 0x0239a639
+SWIDTH2 0x0239a730 - 0x0239a739
+SWIDTH2 0x0239a830 - 0x0239a839
+SWIDTH2 0x0239a930 - 0x0239a939
+SWIDTH2 0x0239aa30 - 0x0239aa39
+SWIDTH2 0x0239ab30 - 0x0239ab39
+SWIDTH2 0x0239ac30 - 0x0239ac39
+SWIDTH2 0x0239ad30 - 0x0239ad39
+SWIDTH2 0x0239ae30 - 0x0239ae39
+SWIDTH2 0x0239af30 - 0x0239af39
+SWIDTH2 0x0239b030 - 0x0239b039
+SWIDTH2 0x0239b130 - 0x0239b139
+SWIDTH2 0x0239b230 - 0x0239b239
+SWIDTH2 0x0239b330 - 0x0239b339
+SWIDTH2 0x0239b430 - 0x0239b439
+SWIDTH2 0x0239b530 - 0x0239b539
+SWIDTH2 0x0239b630 - 0x0239b639
+SWIDTH2 0x0239b730 - 0x0239b739
+SWIDTH2 0x0239b830 - 0x0239b839
+SWIDTH2 0x0239b930 - 0x0239b939
+SWIDTH2 0x0239ba30 - 0x0239ba39
+SWIDTH2 0x0239bb30 - 0x0239bb39
+SWIDTH2 0x0239bc30 - 0x0239bc39
+SWIDTH2 0x0239bd30 - 0x0239bd39
+SWIDTH2 0x0239be30 - 0x0239be39
+SWIDTH2 0x0239bf30 - 0x0239bf39
+SWIDTH2 0x0239c030 - 0x0239c039
+SWIDTH2 0x0239c130 - 0x0239c139
+SWIDTH2 0x0239c230 - 0x0239c239
+SWIDTH2 0x0239c330 - 0x0239c339
+SWIDTH2 0x0239c430 - 0x0239c439
+SWIDTH2 0x0239c530 - 0x0239c539
+SWIDTH2 0x0239c630 - 0x0239c639
+SWIDTH2 0x0239c730 - 0x0239c739
+SWIDTH2 0x0239c830 - 0x0239c839
+SWIDTH2 0x0239c930 - 0x0239c939
+SWIDTH2 0x0239ca30 - 0x0239ca39
+SWIDTH2 0x0239cb30 - 0x0239cb39
+SWIDTH2 0x0239cc30 - 0x0239cc39
+SWIDTH2 0x0239cd30 - 0x0239cd39
+SWIDTH2 0x0239ce30 - 0x0239ce39
+SWIDTH2 0x0239cf30 - 0x0239cf39
+SWIDTH2 0x0239d030 - 0x0239d039
+SWIDTH2 0x0239d130 - 0x0239d139
+SWIDTH2 0x0239d230 - 0x0239d239
+SWIDTH2 0x0239d330 - 0x0239d339
+SWIDTH2 0x0239d430 - 0x0239d439
+SWIDTH2 0x0239d530 - 0x0239d539
+SWIDTH2 0x0239d630 - 0x0239d639
+SWIDTH2 0x0239d730 - 0x0239d739
+SWIDTH2 0x0239d830 - 0x0239d839
+SWIDTH2 0x0239d930 - 0x0239d939
+SWIDTH2 0x0239da30 - 0x0239da39
+SWIDTH2 0x0239db30 - 0x0239db39
+SWIDTH2 0x0239dc30 - 0x0239dc39
+SWIDTH2 0x0239dd30 - 0x0239dd39
+SWIDTH2 0x0239de30 - 0x0239de39
+SWIDTH2 0x0239df30 - 0x0239df39
+SWIDTH2 0x0239e030 - 0x0239e039
+SWIDTH2 0x0239e130 - 0x0239e139
+SWIDTH2 0x0239e230 - 0x0239e239
+SWIDTH2 0x0239e330 - 0x0239e339
+SWIDTH2 0x0239e430 - 0x0239e439
+SWIDTH2 0x0239e530 - 0x0239e539
+SWIDTH2 0x0239e630 - 0x0239e639
+SWIDTH2 0x0239e730 - 0x0239e739
+SWIDTH2 0x0239e830 - 0x0239e839
+SWIDTH2 0x0239e930 - 0x0239e939
+SWIDTH2 0x0239ea30 - 0x0239ea39
+SWIDTH2 0x0239eb30 - 0x0239eb39
+SWIDTH2 0x0239ec30 - 0x0239ec39
+SWIDTH2 0x0239ed30 - 0x0239ed39
+SWIDTH2 0x0239ee30 - 0x0239ee39
+SWIDTH2 0x0239ef30 - 0x0239ef39
+SWIDTH2 0x0239f030 - 0x0239f039
+SWIDTH2 0x0239f130 - 0x0239f139
+SWIDTH2 0x0239f230 - 0x0239f239
+SWIDTH2 0x0239f330 - 0x0239f339
+SWIDTH2 0x0239f430 - 0x0239f439
+SWIDTH2 0x0239f530 - 0x0239f539
+SWIDTH2 0x0239f630 - 0x0239f639
+SWIDTH2 0x0239f730 - 0x0239f739
+SWIDTH2 0x0239f830 - 0x0239f839
+SWIDTH2 0x0239f930 - 0x0239f939
+SWIDTH2 0x0239fa30 - 0x0239fa39
+SWIDTH2 0x0239fb30 - 0x0239fb39
+SWIDTH2 0x0239fc30 - 0x0239fc39
+SWIDTH2 0x0239fd30 - 0x0239fd39
+SWIDTH2 0x0239fe30 - 0x0239fe39
+SWIDTH2 0x03308130 - 0x03308139
+SWIDTH2 0x03308230 - 0x03308239
+SWIDTH2 0x03308330 - 0x03308339
+SWIDTH2 0x03308430 - 0x03308439
+SWIDTH2 0x03308530 - 0x03308539
+SWIDTH2 0x03308630 - 0x03308639
+SWIDTH2 0x03308730 - 0x03308739
+SWIDTH2 0x03308830 - 0x03308839
+SWIDTH2 0x03308930 - 0x03308939
+SWIDTH2 0x03308a30 - 0x03308a39
+SWIDTH2 0x03308b30 - 0x03308b39
+SWIDTH2 0x03308c30 - 0x03308c39
+SWIDTH2 0x03308d30 - 0x03308d39
+SWIDTH2 0x03308e30 - 0x03308e39
+SWIDTH2 0x03308f30 - 0x03308f39
+SWIDTH2 0x03309030 - 0x03309039
+SWIDTH2 0x03309130 - 0x03309139
+SWIDTH2 0x03309230 - 0x03309239
+SWIDTH2 0x03309330 - 0x03309339
+SWIDTH2 0x03309430 - 0x03309439
+SWIDTH2 0x03309530 - 0x03309539
+SWIDTH2 0x03309630 - 0x03309639
+SWIDTH2 0x03309730 - 0x03309739
+SWIDTH2 0x03309830 - 0x03309839
+SWIDTH2 0x03309930 - 0x03309939
+SWIDTH2 0x03309a30 - 0x03309a39
+SWIDTH2 0x03309b30 - 0x03309b39
+SWIDTH2 0x03309c30 - 0x03309c39
+SWIDTH2 0x03309d30 - 0x03309d39
+SWIDTH2 0x03309e30 - 0x03309e39
+SWIDTH2 0x03309f30 - 0x03309f39
+SWIDTH2 0x0330a030 - 0x0330a039
+SWIDTH2 0x0330a130 - 0x0330a139
+SWIDTH2 0x0330a230 - 0x0330a239
+SWIDTH2 0x0330a330 - 0x0330a339
+SWIDTH2 0x0330a430 - 0x0330a439
+SWIDTH2 0x0330a530 - 0x0330a539
+SWIDTH2 0x0330a630 - 0x0330a639
+SWIDTH2 0x0330a730 - 0x0330a739
+SWIDTH2 0x0330a830 - 0x0330a839
+SWIDTH2 0x0330a930 - 0x0330a939
+SWIDTH2 0x0330aa30 - 0x0330aa39
+SWIDTH2 0x0330ab30 - 0x0330ab39
+SWIDTH2 0x0330ac30 - 0x0330ac39
+SWIDTH2 0x0330ad30 - 0x0330ad39
+SWIDTH2 0x0330ae30 - 0x0330ae39
+SWIDTH2 0x0330af30 - 0x0330af39
+SWIDTH2 0x0330b030 - 0x0330b039
+SWIDTH2 0x0330b130 - 0x0330b139
+SWIDTH2 0x0330b230 - 0x0330b239
+SWIDTH2 0x0330b330 - 0x0330b339
+SWIDTH2 0x0330b430 - 0x0330b439
+SWIDTH2 0x0330b530 - 0x0330b539
+SWIDTH2 0x0330b630 - 0x0330b639
+SWIDTH2 0x0330b730 - 0x0330b739
+SWIDTH2 0x0330b830 - 0x0330b839
+SWIDTH2 0x0330b930 - 0x0330b939
+SWIDTH2 0x0330ba30 - 0x0330ba39
+SWIDTH2 0x0330bb30 - 0x0330bb39
+SWIDTH2 0x0330bc30 - 0x0330bc39
+SWIDTH2 0x0330bd30 - 0x0330bd39
+SWIDTH2 0x0330be30 - 0x0330be39
+SWIDTH2 0x0330bf30 - 0x0330bf39
+SWIDTH2 0x0330c030 - 0x0330c039
+SWIDTH2 0x0330c130 - 0x0330c139
+SWIDTH2 0x0330c230 - 0x0330c239
+SWIDTH2 0x0330c330 - 0x0330c339
+SWIDTH2 0x0330c430 - 0x0330c439
+SWIDTH2 0x0330c530 - 0x0330c539
+SWIDTH2 0x0330c630 - 0x0330c639
+SWIDTH2 0x0330c730 - 0x0330c739
+SWIDTH2 0x0330c830 - 0x0330c839
+SWIDTH2 0x0330c930 - 0x0330c939
+SWIDTH2 0x0330ca30 - 0x0330ca39
+SWIDTH2 0x0330cb30 - 0x0330cb39
+SWIDTH2 0x0330cc30 - 0x0330cc39
+SWIDTH2 0x0330cd30 - 0x0330cd39
+SWIDTH2 0x0330ce30 - 0x0330ce39
+SWIDTH2 0x0330cf30 - 0x0330cf39
+SWIDTH2 0x0330d030 - 0x0330d039
+SWIDTH2 0x0330d130 - 0x0330d139
+SWIDTH2 0x0330d230 - 0x0330d239
+SWIDTH2 0x0330d330 - 0x0330d339
+SWIDTH2 0x0330d430 - 0x0330d439
+SWIDTH2 0x0330d530 - 0x0330d539
+SWIDTH2 0x0330d630 - 0x0330d639
+SWIDTH2 0x0330d730 - 0x0330d739
+SWIDTH2 0x0330d830 - 0x0330d839
+SWIDTH2 0x0330d930 - 0x0330d939
+SWIDTH2 0x0330da30 - 0x0330da39
+SWIDTH2 0x0330db30 - 0x0330db39
+SWIDTH2 0x0330dc30 - 0x0330dc39
+SWIDTH2 0x0330dd30 - 0x0330dd39
+SWIDTH2 0x0330de30 - 0x0330de39
+SWIDTH2 0x0330df30 - 0x0330df39
+SWIDTH2 0x0330e030 - 0x0330e039
+SWIDTH2 0x0330e130 - 0x0330e139
+SWIDTH2 0x0330e230 - 0x0330e239
+SWIDTH2 0x0330e330 - 0x0330e339
+SWIDTH2 0x0330e430 - 0x0330e439
+SWIDTH2 0x0330e530 - 0x0330e539
+SWIDTH2 0x0330e630 - 0x0330e639
+SWIDTH2 0x0330e730 - 0x0330e739
+SWIDTH2 0x0330e830 - 0x0330e839
+SWIDTH2 0x0330e930 - 0x0330e939
+SWIDTH2 0x0330ea30 - 0x0330ea39
+SWIDTH2 0x0330eb30 - 0x0330eb39
+SWIDTH2 0x0330ec30 - 0x0330ec39
+SWIDTH2 0x0330ed30 - 0x0330ed39
+SWIDTH2 0x0330ee30 - 0x0330ee39
+SWIDTH2 0x0330ef30 - 0x0330ef39
+SWIDTH2 0x0330f030 - 0x0330f039
+SWIDTH2 0x0330f130 - 0x0330f139
+SWIDTH2 0x0330f230 - 0x0330f239
+SWIDTH2 0x0330f330 - 0x0330f339
+SWIDTH2 0x0330f430 - 0x0330f439
+SWIDTH2 0x0330f530 - 0x0330f539
+SWIDTH2 0x0330f630 - 0x0330f639
+SWIDTH2 0x0330f730 - 0x0330f739
+SWIDTH2 0x0330f830 - 0x0330f839
+SWIDTH2 0x0330f930 - 0x0330f939
+SWIDTH2 0x0330fa30 - 0x0330fa39
+SWIDTH2 0x0330fb30 - 0x0330fb39
+SWIDTH2 0x0330fc30 - 0x0330fc39
+SWIDTH2 0x0330fd30 - 0x0330fd39
+SWIDTH2 0x0330fe30 - 0x0330fe39
+SWIDTH2 0x03318130 - 0x03318139
+SWIDTH2 0x03318230 - 0x03318239
+SWIDTH2 0x03318330 - 0x03318339
+SWIDTH2 0x03318430 - 0x03318439
+SWIDTH2 0x03318530 - 0x03318539
+SWIDTH2 0x03318630 - 0x03318639
+SWIDTH2 0x03318730 - 0x03318739
+SWIDTH2 0x03318830 - 0x03318839
+SWIDTH2 0x03318930 - 0x03318939
+SWIDTH2 0x03318a30 - 0x03318a39
+SWIDTH2 0x03318b30 - 0x03318b39
+SWIDTH2 0x03318c30 - 0x03318c39
+SWIDTH2 0x03318d30 - 0x03318d39
+SWIDTH2 0x03318e30 - 0x03318e39
+SWIDTH2 0x03318f30 - 0x03318f39
+SWIDTH2 0x03319030 - 0x03319039
+SWIDTH2 0x03319130 - 0x03319139
+SWIDTH2 0x03319230 - 0x03319239
+SWIDTH2 0x03319330 - 0x03319339
+SWIDTH2 0x03319430 - 0x03319439
+SWIDTH2 0x03319530 - 0x03319539
+SWIDTH2 0x03319630 - 0x03319639
+SWIDTH2 0x03319730 - 0x03319739
+SWIDTH2 0x03319830 - 0x03319839
+SWIDTH2 0x03319930 - 0x03319939
+SWIDTH2 0x03319a30 - 0x03319a39
+SWIDTH2 0x03319b30 - 0x03319b39
+SWIDTH2 0x03319c30 - 0x03319c39
+SWIDTH2 0x03319d30 - 0x03319d39
+SWIDTH2 0x03319e30 - 0x03319e39
+SWIDTH2 0x03319f30 - 0x03319f39
+SWIDTH2 0x0331a030 - 0x0331a039
+SWIDTH2 0x0331a130 - 0x0331a139
+SWIDTH2 0x0331a230 - 0x0331a239
+SWIDTH2 0x0331a330 - 0x0331a339
+SWIDTH2 0x0331a430 - 0x0331a439
+SWIDTH2 0x0331a530 - 0x0331a539
+SWIDTH2 0x0331a630 - 0x0331a639
+SWIDTH2 0x0331a730 - 0x0331a739
+SWIDTH2 0x0331a830 - 0x0331a839
+SWIDTH2 0x0331a930 - 0x0331a939
+SWIDTH2 0x0331aa30 - 0x0331aa39
+SWIDTH2 0x0331ab30 - 0x0331ab39
+SWIDTH2 0x0331ac30 - 0x0331ac39
+SWIDTH2 0x0331ad30 - 0x0331ad39
+SWIDTH2 0x0331ae30 - 0x0331ae39
+SWIDTH2 0x0331af30 - 0x0331af39
+SWIDTH2 0x0331b030 - 0x0331b039
+SWIDTH2 0x0331b130 - 0x0331b139
+SWIDTH2 0x0331b230 - 0x0331b239
+SWIDTH2 0x0331b330 - 0x0331b339
+SWIDTH2 0x0331b430 - 0x0331b439
+SWIDTH2 0x0331b530 - 0x0331b539
+SWIDTH2 0x0331b630 - 0x0331b639
+SWIDTH2 0x0331b730 - 0x0331b739
+SWIDTH2 0x0331b830 - 0x0331b839
+SWIDTH2 0x0331b930 - 0x0331b939
+SWIDTH2 0x0331ba30 - 0x0331ba39
+SWIDTH2 0x0331bb30 - 0x0331bb39
+SWIDTH2 0x0331bc30 - 0x0331bc39
+SWIDTH2 0x0331bd30 - 0x0331bd39
+SWIDTH2 0x0331be30 - 0x0331be39
+SWIDTH2 0x0331bf30 - 0x0331bf39
+SWIDTH2 0x0331c030 - 0x0331c039
+SWIDTH2 0x0331c130 - 0x0331c139
+SWIDTH2 0x0331c230 - 0x0331c239
+SWIDTH2 0x0331c330 - 0x0331c339
+SWIDTH2 0x0331c430 - 0x0331c439
+SWIDTH2 0x0331c530 - 0x0331c539
+SWIDTH2 0x0331c630 - 0x0331c639
+SWIDTH2 0x0331c730 - 0x0331c739
+SWIDTH2 0x0331c830 - 0x0331c839
+SWIDTH2 0x0331c930 - 0x0331c939
+SWIDTH2 0x0331ca30 - 0x0331ca39
+SWIDTH2 0x0331cb30 - 0x0331cb39
+SWIDTH2 0x0331cc30 - 0x0331cc39
+SWIDTH2 0x0331cd30 - 0x0331cd39
+SWIDTH2 0x0331ce30 - 0x0331ce39
+SWIDTH2 0x0331cf30 - 0x0331cf39
+SWIDTH2 0x0331d030 - 0x0331d039
+SWIDTH2 0x0331d130 - 0x0331d139
+SWIDTH2 0x0331d230 - 0x0331d239
+SWIDTH2 0x0331d330 - 0x0331d339
+SWIDTH2 0x0331d430 - 0x0331d439
+SWIDTH2 0x0331d530 - 0x0331d539
+SWIDTH2 0x0331d630 - 0x0331d639
+SWIDTH2 0x0331d730 - 0x0331d739
+SWIDTH2 0x0331d830 - 0x0331d839
+SWIDTH2 0x0331d930 - 0x0331d939
+SWIDTH2 0x0331da30 - 0x0331da39
+SWIDTH2 0x0331db30 - 0x0331db39
+SWIDTH2 0x0331dc30 - 0x0331dc39
+SWIDTH2 0x0331dd30 - 0x0331dd39
+SWIDTH2 0x0331de30 - 0x0331de39
+SWIDTH2 0x0331df30 - 0x0331df39
+SWIDTH2 0x0331e030 - 0x0331e039
+SWIDTH2 0x0331e130 - 0x0331e139
+SWIDTH2 0x0331e230 - 0x0331e239
+SWIDTH2 0x0331e330 - 0x0331e339
+SWIDTH2 0x0331e430 - 0x0331e439
+SWIDTH2 0x0331e530 - 0x0331e539
+SWIDTH2 0x0331e630 - 0x0331e639
+SWIDTH2 0x0331e730 - 0x0331e739
+SWIDTH2 0x0331e830 - 0x0331e839
+SWIDTH2 0x0331e930 - 0x0331e939
+SWIDTH2 0x0331ea30 - 0x0331ea39
+SWIDTH2 0x0331eb30 - 0x0331eb39
+SWIDTH2 0x0331ec30 - 0x0331ec39
+SWIDTH2 0x0331ed30 - 0x0331ed39
+SWIDTH2 0x0331ee30 - 0x0331ee39
+SWIDTH2 0x0331ef30 - 0x0331ef39
+SWIDTH2 0x0331f030 - 0x0331f039
+SWIDTH2 0x0331f130 - 0x0331f139
+SWIDTH2 0x0331f230 - 0x0331f239
+SWIDTH2 0x0331f330 - 0x0331f339
+SWIDTH2 0x0331f430 - 0x0331f439
+SWIDTH2 0x0331f530 - 0x0331f539
+SWIDTH2 0x0331f630 - 0x0331f639
+SWIDTH2 0x0331f730 - 0x0331f739
+SWIDTH2 0x0331f830 - 0x0331f839
+SWIDTH2 0x0331f930 - 0x0331f939
+SWIDTH2 0x0331fa30 - 0x0331fa39
+SWIDTH2 0x0331fb30 - 0x0331fb39
+SWIDTH2 0x0331fc30 - 0x0331fc39
+SWIDTH2 0x0331fd30 - 0x0331fd39
+SWIDTH2 0x0331fe30 - 0x0331fe39
+SWIDTH2 0x03328130 - 0x03328139
+SWIDTH2 0x03328230 - 0x03328239
+SWIDTH2 0x03328330 - 0x03328339
+SWIDTH2 0x03328430 - 0x03328439
+SWIDTH2 0x03328530 - 0x03328539
+SWIDTH2 0x03328630 - 0x03328639
+SWIDTH2 0x03328730 - 0x03328739
+SWIDTH2 0x03328830 - 0x03328839
+SWIDTH2 0x03328930 - 0x03328939
+SWIDTH2 0x03328a30 - 0x03328a39
+SWIDTH2 0x03328b30 - 0x03328b39
+SWIDTH2 0x03328c30 - 0x03328c39
+SWIDTH2 0x03328d30 - 0x03328d39
+SWIDTH2 0x03328e30 - 0x03328e39
+SWIDTH2 0x03328f30 - 0x03328f39
+SWIDTH2 0x03329030 - 0x03329039
+SWIDTH2 0x03329130 - 0x03329139
+SWIDTH2 0x03329230 - 0x03329239
+SWIDTH2 0x03329330 - 0x03329339
+SWIDTH2 0x03329430 - 0x03329439
+SWIDTH2 0x03329530 - 0x03329539
+SWIDTH2 0x03329630 - 0x03329639
+SWIDTH2 0x03329730 - 0x03329739
+SWIDTH2 0x03329830 - 0x03329839
+SWIDTH2 0x03329930 - 0x03329939
+SWIDTH2 0x03329a30 - 0x03329a39
+SWIDTH2 0x03329b30 - 0x03329b39
+SWIDTH2 0x03329c30 - 0x03329c39
+SWIDTH2 0x03329d30 - 0x03329d39
+SWIDTH2 0x03329e30 - 0x03329e39
+SWIDTH2 0x03329f30 - 0x03329f39
+SWIDTH2 0x0332a030 - 0x0332a039
+SWIDTH2 0x0332a130 - 0x0332a139
+SWIDTH2 0x0332a230 - 0x0332a239
+SWIDTH2 0x0332a330 - 0x0332a339
+SWIDTH2 0x0332a430 - 0x0332a439
+SWIDTH2 0x0332a530 - 0x0332a539
+SWIDTH2 0x0332a630 - 0x0332a639
+SWIDTH2 0x0332a730 - 0x0332a739
+SWIDTH2 0x0332a830 - 0x0332a839
+SWIDTH2 0x0332a930 - 0x0332a939
+SWIDTH2 0x0332aa30 - 0x0332aa39
+SWIDTH2 0x0332ab30 - 0x0332ab39
+SWIDTH2 0x0332ac30 - 0x0332ac39
+SWIDTH2 0x0332ad30 - 0x0332ad39
+SWIDTH2 0x0332ae30 - 0x0332ae39
+SWIDTH2 0x0332af30 - 0x0332af39
+SWIDTH2 0x0332b030 - 0x0332b039
+SWIDTH2 0x0332b130 - 0x0332b139
+SWIDTH2 0x0332b230 - 0x0332b239
+SWIDTH2 0x0332b330 - 0x0332b339
+SWIDTH2 0x0332b430 - 0x0332b439
+SWIDTH2 0x0332b530 - 0x0332b539
+SWIDTH2 0x0332b630 - 0x0332b639
+SWIDTH2 0x0332b730 - 0x0332b739
+SWIDTH2 0x0332b830 - 0x0332b839
+SWIDTH2 0x0332b930 - 0x0332b939
+SWIDTH2 0x0332ba30 - 0x0332ba39
+SWIDTH2 0x0332bb30 - 0x0332bb39
+SWIDTH2 0x0332bc30 - 0x0332bc39
+SWIDTH2 0x0332bd30 - 0x0332bd39
+SWIDTH2 0x0332be30 - 0x0332be39
+SWIDTH2 0x0332bf30 - 0x0332bf39
+SWIDTH2 0x0332c030 - 0x0332c039
+SWIDTH2 0x0332c130 - 0x0332c139
+SWIDTH2 0x0332c230 - 0x0332c239
+SWIDTH2 0x0332c330 - 0x0332c339
+SWIDTH2 0x0332c430 - 0x0332c439
+SWIDTH2 0x0332c530 - 0x0332c539
+SWIDTH2 0x0332c630 - 0x0332c639
+SWIDTH2 0x0332c730 - 0x0332c739
+SWIDTH2 0x0332c830 - 0x0332c839
+SWIDTH2 0x0332c930 - 0x0332c939
+SWIDTH2 0x0332ca30 - 0x0332ca39
+SWIDTH2 0x0332cb30 - 0x0332cb39
+SWIDTH2 0x0332cc30 - 0x0332cc39
+SWIDTH2 0x0332cd30 - 0x0332cd39
+SWIDTH2 0x0332ce30 - 0x0332ce39
+SWIDTH2 0x0332cf30 - 0x0332cf39
+SWIDTH2 0x0332d030 - 0x0332d039
+SWIDTH2 0x0332d130 - 0x0332d139
+SWIDTH2 0x0332d230 - 0x0332d239
+SWIDTH2 0x0332d330 - 0x0332d339
+SWIDTH2 0x0332d430 - 0x0332d439
+SWIDTH2 0x0332d530 - 0x0332d539
+SWIDTH2 0x0332d630 - 0x0332d639
+SWIDTH2 0x0332d730 - 0x0332d739
+SWIDTH2 0x0332d830 - 0x0332d839
+SWIDTH2 0x0332d930 - 0x0332d939
+SWIDTH2 0x0332da30 - 0x0332da39
+SWIDTH2 0x0332db30 - 0x0332db39
+SWIDTH2 0x0332dc30 - 0x0332dc39
+SWIDTH2 0x0332dd30 - 0x0332dd39
+SWIDTH2 0x0332de30 - 0x0332de39
+SWIDTH2 0x0332df30 - 0x0332df39
+SWIDTH2 0x0332e030 - 0x0332e039
+SWIDTH2 0x0332e130 - 0x0332e139
+SWIDTH2 0x0332e230 - 0x0332e239
+SWIDTH2 0x0332e330 - 0x0332e339
+SWIDTH2 0x0332e430 - 0x0332e439
+SWIDTH2 0x0332e530 - 0x0332e539
+SWIDTH2 0x0332e630 - 0x0332e639
+SWIDTH2 0x0332e730 - 0x0332e739
+SWIDTH2 0x0332e830 - 0x0332e839
+SWIDTH2 0x0332e930 - 0x0332e939
+SWIDTH2 0x0332ea30 - 0x0332ea39
+SWIDTH2 0x0332eb30 - 0x0332eb39
+SWIDTH2 0x0332ec30 - 0x0332ec39
+SWIDTH2 0x0332ed30 - 0x0332ed39
+SWIDTH2 0x0332ee30 - 0x0332ee39
+SWIDTH2 0x0332ef30 - 0x0332ef39
+SWIDTH2 0x0332f030 - 0x0332f039
+SWIDTH2 0x0332f130 - 0x0332f139
+SWIDTH2 0x0332f230 - 0x0332f239
+SWIDTH2 0x0332f330 - 0x0332f339
+SWIDTH2 0x0332f430 - 0x0332f439
+SWIDTH2 0x0332f530 - 0x0332f539
+SWIDTH2 0x0332f630 - 0x0332f639
+SWIDTH2 0x0332f730 - 0x0332f739
+SWIDTH2 0x0332f830 - 0x0332f839
+SWIDTH2 0x0332f930 - 0x0332f939
+SWIDTH2 0x0332fa30 - 0x0332fa39
+SWIDTH2 0x0332fb30 - 0x0332fb39
+SWIDTH2 0x0332fc30 - 0x0332fc39
+SWIDTH2 0x0332fd30 - 0x0332fd39
+SWIDTH2 0x0332fe30 - 0x0332fe39
+SWIDTH2 0x03338130 - 0x03338139
+SWIDTH2 0x03338230 - 0x03338239
+SWIDTH2 0x03338330 - 0x03338339
+SWIDTH2 0x03338430 - 0x03338439
+SWIDTH2 0x03338530 - 0x03338539
+SWIDTH2 0x03338630 - 0x03338639
+SWIDTH2 0x03338730 - 0x03338739
+SWIDTH2 0x03338830 - 0x03338839
+SWIDTH2 0x03338930 - 0x03338939
+SWIDTH2 0x03338a30 - 0x03338a39
+SWIDTH2 0x03338b30 - 0x03338b39
+SWIDTH2 0x03338c30 - 0x03338c39
+SWIDTH2 0x03338d30 - 0x03338d39
+SWIDTH2 0x03338e30 - 0x03338e39
+SWIDTH2 0x03338f30 - 0x03338f39
+SWIDTH2 0x03339030 - 0x03339039
+SWIDTH2 0x03339130 - 0x03339139
+SWIDTH2 0x03339230 - 0x03339239
+SWIDTH2 0x03339330 - 0x03339339
+SWIDTH2 0x03339430 - 0x03339439
+SWIDTH2 0x03339530 - 0x03339539
+SWIDTH2 0x03339630 - 0x03339639
+SWIDTH2 0x03339730 - 0x03339739
+SWIDTH2 0x03339830 - 0x03339839
+SWIDTH2 0x03339930 - 0x03339939
+SWIDTH2 0x03339a30 - 0x03339a39
+SWIDTH2 0x03339b30 - 0x03339b39
+SWIDTH2 0x03339c30 - 0x03339c39
+SWIDTH2 0x03339d30 - 0x03339d39
+SWIDTH2 0x03339e30 - 0x03339e39
+SWIDTH2 0x03339f30 - 0x03339f39
+SWIDTH2 0x0333a030 - 0x0333a039
+SWIDTH2 0x0333a130 - 0x0333a139
+SWIDTH2 0x0333a230 - 0x0333a239
+SWIDTH2 0x0333a330 - 0x0333a339
+SWIDTH2 0x0333a430 - 0x0333a439
+SWIDTH2 0x0333a530 - 0x0333a539
+SWIDTH2 0x0333a630 - 0x0333a639
+SWIDTH2 0x0333a730 - 0x0333a739
+SWIDTH2 0x0333a830 - 0x0333a839
+SWIDTH2 0x0333a930 - 0x0333a939
+SWIDTH2 0x0333aa30 - 0x0333aa39
+SWIDTH2 0x0333ab30 - 0x0333ab39
+SWIDTH2 0x0333ac30 - 0x0333ac39
+SWIDTH2 0x0333ad30 - 0x0333ad39
+SWIDTH2 0x0333ae30 - 0x0333ae39
+SWIDTH2 0x0333af30 - 0x0333af39
+SWIDTH2 0x0333b030 - 0x0333b039
+SWIDTH2 0x0333b130 - 0x0333b139
+SWIDTH2 0x0333b230 - 0x0333b239
+SWIDTH2 0x0333b330 - 0x0333b339
+SWIDTH2 0x0333b430 - 0x0333b439
+SWIDTH2 0x0333b530 - 0x0333b539
+SWIDTH2 0x0333b630 - 0x0333b639
+SWIDTH2 0x0333b730 - 0x0333b739
+SWIDTH2 0x0333b830 - 0x0333b839
+SWIDTH2 0x0333b930 - 0x0333b939
+SWIDTH2 0x0333ba30 - 0x0333ba39
+SWIDTH2 0x0333bb30 - 0x0333bb39
+SWIDTH2 0x0333bc30 - 0x0333bc39
+SWIDTH2 0x0333bd30 - 0x0333bd39
+SWIDTH2 0x0333be30 - 0x0333be39
+SWIDTH2 0x0333bf30 - 0x0333bf39
+SWIDTH2 0x0333c030 - 0x0333c039
+SWIDTH2 0x0333c130 - 0x0333c139
+SWIDTH2 0x0333c230 - 0x0333c239
+SWIDTH2 0x0333c330 - 0x0333c339
+SWIDTH2 0x0333c430 - 0x0333c439
+SWIDTH2 0x0333c530 - 0x0333c539
+SWIDTH2 0x0333c630 - 0x0333c639
+SWIDTH2 0x0333c730 - 0x0333c739
+SWIDTH2 0x0333c830 - 0x0333c839
+SWIDTH2 0x0333c930 - 0x0333c939
+SWIDTH2 0x0333ca30 - 0x0333ca39
+SWIDTH2 0x0333cb30 - 0x0333cb39
+SWIDTH2 0x0333cc30 - 0x0333cc39
+SWIDTH2 0x0333cd30 - 0x0333cd39
+SWIDTH2 0x0333ce30 - 0x0333ce39
+SWIDTH2 0x0333cf30 - 0x0333cf39
+SWIDTH2 0x0333d030 - 0x0333d039
+SWIDTH2 0x0333d130 - 0x0333d139
+SWIDTH2 0x0333d230 - 0x0333d239
+SWIDTH2 0x0333d330 - 0x0333d339
+SWIDTH2 0x0333d430 - 0x0333d439
+SWIDTH2 0x0333d530 - 0x0333d539
+SWIDTH2 0x0333d630 - 0x0333d639
+SWIDTH2 0x0333d730 - 0x0333d739
+SWIDTH2 0x0333d830 - 0x0333d839
+SWIDTH2 0x0333d930 - 0x0333d939
+SWIDTH2 0x0333da30 - 0x0333da39
+SWIDTH2 0x0333db30 - 0x0333db39
+SWIDTH2 0x0333dc30 - 0x0333dc39
+SWIDTH2 0x0333dd30 - 0x0333dd39
+SWIDTH2 0x0333de30 - 0x0333de39
+SWIDTH2 0x0333df30 - 0x0333df39
+SWIDTH2 0x0333e030 - 0x0333e039
+SWIDTH2 0x0333e130 - 0x0333e139
+SWIDTH2 0x0333e230 - 0x0333e239
+SWIDTH2 0x0333e330 - 0x0333e339
+SWIDTH2 0x0333e430 - 0x0333e439
+SWIDTH2 0x0333e530 - 0x0333e539
+SWIDTH2 0x0333e630 - 0x0333e639
+SWIDTH2 0x0333e730 - 0x0333e739
+SWIDTH2 0x0333e830 - 0x0333e839
+SWIDTH2 0x0333e930 - 0x0333e939
+SWIDTH2 0x0333ea30 - 0x0333ea39
+SWIDTH2 0x0333eb30 - 0x0333eb39
+SWIDTH2 0x0333ec30 - 0x0333ec39
+SWIDTH2 0x0333ed30 - 0x0333ed39
+SWIDTH2 0x0333ee30 - 0x0333ee39
+SWIDTH2 0x0333ef30 - 0x0333ef39
+SWIDTH2 0x0333f030 - 0x0333f039
+SWIDTH2 0x0333f130 - 0x0333f139
+SWIDTH2 0x0333f230 - 0x0333f239
+SWIDTH2 0x0333f330 - 0x0333f339
+SWIDTH2 0x0333f430 - 0x0333f439
+SWIDTH2 0x0333f530 - 0x0333f539
+SWIDTH2 0x0333f630 - 0x0333f639
+SWIDTH2 0x0333f730 - 0x0333f739
+SWIDTH2 0x0333f830 - 0x0333f839
+SWIDTH2 0x0333f930 - 0x0333f939
+SWIDTH2 0x0333fa30 - 0x0333fa39
+SWIDTH2 0x0333fb30 - 0x0333fb39
+SWIDTH2 0x0333fc30 - 0x0333fc39
+SWIDTH2 0x0333fd30 - 0x0333fd39
+SWIDTH2 0x0333fe30 - 0x0333fe39
+SWIDTH2 0x03348130 - 0x03348139
+SWIDTH2 0x03348230 - 0x03348239
+SWIDTH2 0x03348330 - 0x03348339
+SWIDTH2 0x03348430 - 0x03348439
+SWIDTH2 0x03348530 - 0x03348539
+SWIDTH2 0x03348630 - 0x03348639
+SWIDTH2 0x03348730 - 0x03348739
+SWIDTH2 0x03348830 - 0x03348839
+SWIDTH2 0x03348930 - 0x03348939
+SWIDTH2 0x03348a30 - 0x03348a39
+SWIDTH2 0x03348b30 - 0x03348b39
+SWIDTH2 0x03348c30 - 0x03348c39
+SWIDTH2 0x03348d30 - 0x03348d39
+SWIDTH2 0x03348e30 - 0x03348e39
+SWIDTH2 0x03348f30 - 0x03348f39
+SWIDTH2 0x03349030 - 0x03349039
+SWIDTH2 0x03349130 - 0x03349139
+SWIDTH2 0x03349230 - 0x03349239
+SWIDTH2 0x03349330 - 0x03349339
+SWIDTH2 0x03349430 - 0x03349439
+SWIDTH2 0x03349530 - 0x03349539
+SWIDTH2 0x03349630 - 0x03349639
+SWIDTH2 0x03349730 - 0x03349739
+SWIDTH2 0x03349830 - 0x03349839
+SWIDTH2 0x03349930 - 0x03349939
+SWIDTH2 0x03349a30 - 0x03349a39
+SWIDTH2 0x03349b30 - 0x03349b39
+SWIDTH2 0x03349c30 - 0x03349c39
+SWIDTH2 0x03349d30 - 0x03349d39
+SWIDTH2 0x03349e30 - 0x03349e39
+SWIDTH2 0x03349f30 - 0x03349f39
+SWIDTH2 0x0334a030 - 0x0334a039
+SWIDTH2 0x0334a130 - 0x0334a139
+SWIDTH2 0x0334a230 - 0x0334a239
+SWIDTH2 0x0334a330 - 0x0334a339
+SWIDTH2 0x0334a430 - 0x0334a439
+SWIDTH2 0x0334a530 - 0x0334a539
+SWIDTH2 0x0334a630 - 0x0334a639
+SWIDTH2 0x0334a730 - 0x0334a739
+SWIDTH2 0x0334a830 - 0x0334a839
+SWIDTH2 0x0334a930 - 0x0334a939
+SWIDTH2 0x0334aa30 - 0x0334aa39
+SWIDTH2 0x0334ab30 - 0x0334ab39
+SWIDTH2 0x0334ac30 - 0x0334ac39
+SWIDTH2 0x0334ad30 - 0x0334ad39
+SWIDTH2 0x0334ae30 - 0x0334ae39
+SWIDTH2 0x0334af30 - 0x0334af39
+SWIDTH2 0x0334b030 - 0x0334b039
+SWIDTH2 0x0334b130 - 0x0334b139
+SWIDTH2 0x0334b230 - 0x0334b239
+SWIDTH2 0x0334b330 - 0x0334b339
+SWIDTH2 0x0334b430 - 0x0334b439
+SWIDTH2 0x0334b530 - 0x0334b539
+SWIDTH2 0x0334b630 - 0x0334b639
+SWIDTH2 0x0334b730 - 0x0334b739
+SWIDTH2 0x0334b830 - 0x0334b839
+SWIDTH2 0x0334b930 - 0x0334b939
+SWIDTH2 0x0334ba30 - 0x0334ba39
+SWIDTH2 0x0334bb30 - 0x0334bb39
+SWIDTH2 0x0334bc30 - 0x0334bc39
+SWIDTH2 0x0334bd30 - 0x0334bd39
+SWIDTH2 0x0334be30 - 0x0334be39
+SWIDTH2 0x0334bf30 - 0x0334bf39
+SWIDTH2 0x0334c030 - 0x0334c039
+SWIDTH2 0x0334c130 - 0x0334c139
+SWIDTH2 0x0334c230 - 0x0334c239
+SWIDTH2 0x0334c330 - 0x0334c339
+SWIDTH2 0x0334c430 - 0x0334c439
+SWIDTH2 0x0334c530 - 0x0334c539
+SWIDTH2 0x0334c630 - 0x0334c639
+SWIDTH2 0x0334c730 - 0x0334c739
+SWIDTH2 0x0334c830 - 0x0334c839
+SWIDTH2 0x0334c930 - 0x0334c939
+SWIDTH2 0x0334ca30 - 0x0334ca39
+SWIDTH2 0x0334cb30 - 0x0334cb39
+SWIDTH2 0x0334cc30 - 0x0334cc39
+SWIDTH2 0x0334cd30 - 0x0334cd39
+SWIDTH2 0x0334ce30 - 0x0334ce39
+SWIDTH2 0x0334cf30 - 0x0334cf39
+SWIDTH2 0x0334d030 - 0x0334d039
+SWIDTH2 0x0334d130 - 0x0334d139
+SWIDTH2 0x0334d230 - 0x0334d239
+SWIDTH2 0x0334d330 - 0x0334d339
+SWIDTH2 0x0334d430 - 0x0334d439
+SWIDTH2 0x0334d530 - 0x0334d539
+SWIDTH2 0x0334d630 - 0x0334d639
+SWIDTH2 0x0334d730 - 0x0334d739
+SWIDTH2 0x0334d830 - 0x0334d839
+SWIDTH2 0x0334d930 - 0x0334d939
+SWIDTH2 0x0334da30 - 0x0334da39
+SWIDTH2 0x0334db30 - 0x0334db39
+SWIDTH2 0x0334dc30 - 0x0334dc39
+SWIDTH2 0x0334dd30 - 0x0334dd39
+SWIDTH2 0x0334de30 - 0x0334de39
+SWIDTH2 0x0334df30 - 0x0334df39
+SWIDTH2 0x0334e030 - 0x0334e039
+SWIDTH2 0x0334e130 - 0x0334e139
+SWIDTH2 0x0334e230 - 0x0334e239
+SWIDTH2 0x0334e330 - 0x0334e339
+SWIDTH2 0x0334e430 - 0x0334e439
+SWIDTH2 0x0334e530 - 0x0334e539
+SWIDTH2 0x0334e630 - 0x0334e639
+SWIDTH2 0x0334e730 - 0x0334e739
+SWIDTH2 0x0334e830 - 0x0334e839
+SWIDTH2 0x0334e930 - 0x0334e939
+SWIDTH2 0x0334ea30 - 0x0334ea39
+SWIDTH2 0x0334eb30 - 0x0334eb39
+SWIDTH2 0x0334ec30 - 0x0334ec39
+SWIDTH2 0x0334ed30 - 0x0334ed39
+SWIDTH2 0x0334ee30 - 0x0334ee39
+SWIDTH2 0x0334ef30 - 0x0334ef39
+SWIDTH2 0x0334f030 - 0x0334f039
+SWIDTH2 0x0334f130 - 0x0334f139
+SWIDTH2 0x0334f230 - 0x0334f239
+SWIDTH2 0x0334f330 - 0x0334f339
+SWIDTH2 0x0334f430 - 0x0334f439
+SWIDTH2 0x0334f530 - 0x0334f539
+SWIDTH2 0x0334f630 - 0x0334f639
+SWIDTH2 0x0334f730 - 0x0334f739
+SWIDTH2 0x0334f830 - 0x0334f839
+SWIDTH2 0x0334f930 - 0x0334f939
+SWIDTH2 0x0334fa30 - 0x0334fa39
+SWIDTH2 0x0334fb30 - 0x0334fb39
+SWIDTH2 0x0334fc30 - 0x0334fc39
+SWIDTH2 0x0334fd30 - 0x0334fd39
+SWIDTH2 0x0334fe30 - 0x0334fe39
+SWIDTH2 0x03358130 - 0x03358139
+SWIDTH2 0x03358230 - 0x03358239
+SWIDTH2 0x03358330 - 0x03358339
+SWIDTH2 0x03358430 - 0x03358439
+SWIDTH2 0x03358530 - 0x03358539
+SWIDTH2 0x03358630 - 0x03358639
+SWIDTH2 0x03358730 - 0x03358739
+SWIDTH2 0x03358830 - 0x03358839
+SWIDTH2 0x03358930 - 0x03358939
+SWIDTH2 0x03358a30 - 0x03358a39
+SWIDTH2 0x03358b30 - 0x03358b39
+SWIDTH2 0x03358c30 - 0x03358c39
+SWIDTH2 0x03358d30 - 0x03358d39
+SWIDTH2 0x03358e30 - 0x03358e39
+SWIDTH2 0x03358f30 - 0x03358f39
+SWIDTH2 0x03359030 - 0x03359039
+SWIDTH2 0x03359130 - 0x03359139
+SWIDTH2 0x03359230 - 0x03359239
+SWIDTH2 0x03359330 - 0x03359339
+SWIDTH2 0x03359430 - 0x03359439
+SWIDTH2 0x03359530 - 0x03359539
+SWIDTH2 0x03359630 - 0x03359639
+SWIDTH2 0x03359730 - 0x03359739
+SWIDTH2 0x03359830 - 0x03359839
+SWIDTH2 0x03359930 - 0x03359939
+SWIDTH2 0x03359a30 - 0x03359a39
+SWIDTH2 0x03359b30 - 0x03359b39
+SWIDTH2 0x03359c30 - 0x03359c39
+SWIDTH2 0x03359d30 - 0x03359d39
+SWIDTH2 0x03359e30 - 0x03359e39
+SWIDTH2 0x03359f30 - 0x03359f39
+SWIDTH2 0x0335a030 - 0x0335a039
+SWIDTH2 0x0335a130 - 0x0335a139
+SWIDTH2 0x0335a230 - 0x0335a239
+SWIDTH2 0x0335a330 - 0x0335a339
+SWIDTH2 0x0335a430 - 0x0335a439
+SWIDTH2 0x0335a530 - 0x0335a539
+SWIDTH2 0x0335a630 - 0x0335a639
+SWIDTH2 0x0335a730 - 0x0335a739
+SWIDTH2 0x0335a830 - 0x0335a839
+SWIDTH2 0x0335a930 - 0x0335a939
+SWIDTH2 0x0335aa30 - 0x0335aa39
+SWIDTH2 0x0335ab30 - 0x0335ab39
+SWIDTH2 0x0335ac30 - 0x0335ac39
+SWIDTH2 0x0335ad30 - 0x0335ad39
+SWIDTH2 0x0335ae30 - 0x0335ae39
+SWIDTH2 0x0335af30 - 0x0335af39
+SWIDTH2 0x0335b030 - 0x0335b039
+SWIDTH2 0x0335b130 - 0x0335b139
+SWIDTH2 0x0335b230 - 0x0335b239
+SWIDTH2 0x0335b330 - 0x0335b339
+SWIDTH2 0x0335b430 - 0x0335b439
+SWIDTH2 0x0335b530 - 0x0335b539
+SWIDTH2 0x0335b630 - 0x0335b639
+SWIDTH2 0x0335b730 - 0x0335b739
+SWIDTH2 0x0335b830 - 0x0335b839
+SWIDTH2 0x0335b930 - 0x0335b939
+SWIDTH2 0x0335ba30 - 0x0335ba39
+SWIDTH2 0x0335bb30 - 0x0335bb39
+SWIDTH2 0x0335bc30 - 0x0335bc39
+SWIDTH2 0x0335bd30 - 0x0335bd39
+SWIDTH2 0x0335be30 - 0x0335be39
+SWIDTH2 0x0335bf30 - 0x0335bf39
+SWIDTH2 0x0335c030 - 0x0335c039
+SWIDTH2 0x0335c130 - 0x0335c139
+SWIDTH2 0x0335c230 - 0x0335c239
+SWIDTH2 0x0335c330 - 0x0335c339
+SWIDTH2 0x0335c430 - 0x0335c439
+SWIDTH2 0x0335c530 - 0x0335c539
+SWIDTH2 0x0335c630 - 0x0335c639
+SWIDTH2 0x0335c730 - 0x0335c739
+SWIDTH2 0x0335c830 - 0x0335c839
+SWIDTH2 0x0335c930 - 0x0335c939
+SWIDTH2 0x0335ca30 - 0x0335ca39
+SWIDTH2 0x0335cb30 - 0x0335cb39
+SWIDTH2 0x0335cc30 - 0x0335cc39
+SWIDTH2 0x0335cd30 - 0x0335cd39
+SWIDTH2 0x0335ce30 - 0x0335ce39
+SWIDTH2 0x0335cf30 - 0x0335cf39
+SWIDTH2 0x0335d030 - 0x0335d039
+SWIDTH2 0x0335d130 - 0x0335d139
+SWIDTH2 0x0335d230 - 0x0335d239
+SWIDTH2 0x0335d330 - 0x0335d339
+SWIDTH2 0x0335d430 - 0x0335d439
+SWIDTH2 0x0335d530 - 0x0335d539
+SWIDTH2 0x0335d630 - 0x0335d639
+SWIDTH2 0x0335d730 - 0x0335d739
+SWIDTH2 0x0335d830 - 0x0335d839
+SWIDTH2 0x0335d930 - 0x0335d939
+SWIDTH2 0x0335da30 - 0x0335da39
+SWIDTH2 0x0335db30 - 0x0335db39
+SWIDTH2 0x0335dc30 - 0x0335dc39
+SWIDTH2 0x0335dd30 - 0x0335dd39
+SWIDTH2 0x0335de30 - 0x0335de39
+SWIDTH2 0x0335df30 - 0x0335df39
+SWIDTH2 0x0335e030 - 0x0335e039
+SWIDTH2 0x0335e130 - 0x0335e139
+SWIDTH2 0x0335e230 - 0x0335e239
+SWIDTH2 0x0335e330 - 0x0335e339
+SWIDTH2 0x0335e430 - 0x0335e439
+SWIDTH2 0x0335e530 - 0x0335e539
+SWIDTH2 0x0335e630 - 0x0335e639
+SWIDTH2 0x0335e730 - 0x0335e739
+SWIDTH2 0x0335e830 - 0x0335e839
+SWIDTH2 0x0335e930 - 0x0335e939
+SWIDTH2 0x0335ea30 - 0x0335ea39
+SWIDTH2 0x0335eb30 - 0x0335eb39
+SWIDTH2 0x0335ec30 - 0x0335ec39
+SWIDTH2 0x0335ed30 - 0x0335ed39
+SWIDTH2 0x0335ee30 - 0x0335ee39
+SWIDTH2 0x0335ef30 - 0x0335ef39
+SWIDTH2 0x0335f030 - 0x0335f039
+SWIDTH2 0x0335f130 - 0x0335f139
+SWIDTH2 0x0335f230 - 0x0335f239
+SWIDTH2 0x0335f330 - 0x0335f339
+SWIDTH2 0x0335f430 - 0x0335f439
+SWIDTH2 0x0335f530 - 0x0335f539
+SWIDTH2 0x0335f630 - 0x0335f639
+SWIDTH2 0x0335f730 - 0x0335f739
+SWIDTH2 0x0335f830 - 0x0335f839
+SWIDTH2 0x0335f930 - 0x0335f939
+SWIDTH2 0x0335fa30 - 0x0335fa39
+SWIDTH2 0x0335fb30 - 0x0335fb39
+SWIDTH2 0x0335fc30 - 0x0335fc39
+SWIDTH2 0x0335fd30 - 0x0335fd39
+SWIDTH2 0x0335fe30 - 0x0335fe39
+SWIDTH2 0x03368130 - 0x03368139
+SWIDTH2 0x03368230 - 0x03368239
+SWIDTH2 0x03368330 - 0x03368339
+SWIDTH2 0x03368430 - 0x03368439
+SWIDTH2 0x03368530 - 0x03368539
+SWIDTH2 0x03368630 - 0x03368639
+SWIDTH2 0x03368730 - 0x03368739
+SWIDTH2 0x03368830 - 0x03368839
+SWIDTH2 0x03368930 - 0x03368939
+SWIDTH2 0x03368a30 - 0x03368a39
+SWIDTH2 0x03368b30 - 0x03368b39
+SWIDTH2 0x03368c30 - 0x03368c39
+SWIDTH2 0x03368d30 - 0x03368d39
+SWIDTH2 0x03368e30 - 0x03368e39
+SWIDTH2 0x03368f30 - 0x03368f39
+SWIDTH2 0x03369030 - 0x03369039
+SWIDTH2 0x03369130 - 0x03369139
+SWIDTH2 0x03369230 - 0x03369239
+SWIDTH2 0x03369330 - 0x03369339
+SWIDTH2 0x03369430 - 0x03369439
+SWIDTH2 0x03369530 - 0x03369539
+SWIDTH2 0x03369630 - 0x03369639
+SWIDTH2 0x03369730 - 0x03369739
+SWIDTH2 0x03369830 - 0x03369839
+SWIDTH2 0x03369930 - 0x03369939
+SWIDTH2 0x03369a30 - 0x03369a39
+SWIDTH2 0x03369b30 - 0x03369b39
+SWIDTH2 0x03369c30 - 0x03369c39
+SWIDTH2 0x03369d30 - 0x03369d39
+SWIDTH2 0x03369e30 - 0x03369e39
+SWIDTH2 0x03369f30 - 0x03369f39
+SWIDTH2 0x0336a030 - 0x0336a039
+SWIDTH2 0x0336a130 - 0x0336a139
+SWIDTH2 0x0336a230 - 0x0336a239
+SWIDTH2 0x0336a330 - 0x0336a339
+SWIDTH2 0x0336a430 - 0x0336a439
+SWIDTH2 0x0336a530 - 0x0336a539
+SWIDTH2 0x0336a630 - 0x0336a639
+SWIDTH2 0x0336a730 - 0x0336a739
+SWIDTH2 0x0336a830 - 0x0336a839
+SWIDTH2 0x0336a930 - 0x0336a939
+SWIDTH2 0x0336aa30 - 0x0336aa39
+SWIDTH2 0x0336ab30 - 0x0336ab39
+SWIDTH2 0x0336ac30 - 0x0336ac39
+SWIDTH2 0x0336ad30 - 0x0336ad39
+SWIDTH2 0x0336ae30 - 0x0336ae39
+SWIDTH2 0x0336af30 - 0x0336af39
+SWIDTH2 0x0336b030 - 0x0336b039
+SWIDTH2 0x0336b130 - 0x0336b139
+SWIDTH2 0x0336b230 - 0x0336b239
+SWIDTH2 0x0336b330 - 0x0336b339
+SWIDTH2 0x0336b430 - 0x0336b439
+SWIDTH2 0x0336b530 - 0x0336b539
+SWIDTH2 0x0336b630 - 0x0336b639
+SWIDTH2 0x0336b730 - 0x0336b739
+SWIDTH2 0x0336b830 - 0x0336b839
+SWIDTH2 0x0336b930 - 0x0336b939
+SWIDTH2 0x0336ba30 - 0x0336ba39
+SWIDTH2 0x0336bb30 - 0x0336bb39
+SWIDTH2 0x0336bc30 - 0x0336bc39
+SWIDTH2 0x0336bd30 - 0x0336bd39
+SWIDTH2 0x0336be30 - 0x0336be36
+SWIDTH2 0x04308131 - 0x04308139
+SWIDTH2 0x04308230 - 0x04308239
+SWIDTH2 0x04308330 - 0x04308339
+SWIDTH2 0x04308430 - 0x04308439
+SWIDTH2 0x04308530 - 0x04308539
+SWIDTH2 0x04308630 - 0x04308639
+SWIDTH2 0x04308730 - 0x04308739
+SWIDTH2 0x04308830 - 0x04308839
+SWIDTH2 0x04308930 - 0x04308939
+SWIDTH2 0x04308a30 - 0x04308a39
+SWIDTH2 0x04308b30 - 0x04308b39
+SWIDTH2 0x04308c30 - 0x04308c39
+SWIDTH2 0x04308d30 - 0x04308d39
+SWIDTH2 0x04308e30 - 0x04308e39
+SWIDTH2 0x04308f30 - 0x04308f39
+SWIDTH2 0x04309030 - 0x04309039
+SWIDTH2 0x04309130 - 0x04309139
+SWIDTH2 0x04309230 - 0x04309239
+SWIDTH2 0x04309330 - 0x04309339
+SWIDTH2 0x04309430 - 0x04309439
+SWIDTH2 0x04309530 - 0x04309539
+SWIDTH2 0x04309630 - 0x04309639
+SWIDTH2 0x04309730 - 0x04309739
+SWIDTH2 0x04309830 - 0x04309839
+SWIDTH2 0x04309930 - 0x04309939
+SWIDTH2 0x04309a30 - 0x04309a39
+SWIDTH2 0x04309b30 - 0x04309b39
+SWIDTH2 0x04309c30 - 0x04309c39
+SWIDTH2 0x04309d30 0x04309d31 0x04309d34 - 0x04309d39
+SWIDTH2 0x04309e30 - 0x04309e39
+SWIDTH2 0x04309f30 - 0x04309f39
+SWIDTH2 0x0430a030 - 0x0430a039
+SWIDTH2 0x0430a130 - 0x0430a139
+SWIDTH2 0x0430a230 - 0x0430a239
+SWIDTH2 0x0430a330 - 0x0430a332
+SWIDTH2 0x04318538 0x04318539
+SWIDTH2 0x04318630 0x04318634
+SWIDTH2 0x04319535 0x04319536
+SWIDTH2 0x0431a234
+TODIGIT < 0x01308535 - 0x01308536 : 0x0002 >
+TODIGIT < 0x01308631 0x0001 >
+TODIGIT < 0x01318936 - 0x01318939 : 0x0000 >
+TODIGIT < 0x01318a30 - 0x01318a35 : 0x0000 >
+TODIGIT < 0x01319830 - 0x01319839 : 0x0000 >
+TODIGIT < 0x0131d730 - 0x0131d739 : 0x0000 >
+TODIGIT < 0x0131e338 - 0x0131e339 : 0x0000 >
+TODIGIT < 0x0131e430 - 0x0131e437 : 0x0000 >
+TODIGIT < 0x0131f036 - 0x0131f039 : 0x0000 >
+TODIGIT < 0x0131f130 - 0x0131f135 : 0x0000 >
+TODIGIT < 0x0131fd34 - 0x0131fd39 : 0x0000 >
+TODIGIT < 0x0131fe30 - 0x0131fe33 : 0x0000 >
+TODIGIT < 0x01328c32 - 0x01328c39 : 0x0000 >
+TODIGIT < 0x01328d30 - 0x01328d31 : 0x0000 >
+TODIGIT < 0x01329931 - 0x01329939 : 0x0001 >
+TODIGIT < 0x0132a538 - 0x0132a539 : 0x0000 >
+TODIGIT < 0x0132a630 - 0x0132a637 : 0x0000 >
+TODIGIT < 0x0132b236 - 0x0132b239 : 0x0000 >
+TODIGIT < 0x0132b330 - 0x0132b335 : 0x0000 >
+TODIGIT < 0x0132bf34 - 0x0132bf39 : 0x0000 >
+TODIGIT < 0x0132c030 - 0x0132c033 : 0x0000 >
+TODIGIT < 0x0132d638 - 0x0132d639 : 0x0000 >
+TODIGIT < 0x0132d730 - 0x0132d737 : 0x0000 >
+TODIGIT < 0x0132e336 - 0x0132e339 : 0x0000 >
+TODIGIT < 0x0132e430 - 0x0132e435 : 0x0000 >
+TODIGIT < 0x0132eb36 - 0x0132eb39 : 0x0000 >
+TODIGIT < 0x0132ec30 - 0x0132ec35 : 0x0000 >
+TODIGIT < 0x01338a34 - 0x01338a39 : 0x0000 >
+TODIGIT < 0x01338b30 - 0x01338b33 : 0x0000 >
+TODIGIT < 0x0133db33 - 0x0133db39 : 0x0001 >
+TODIGIT < 0x0133dc30 - 0x0133dc31 : 0x0001 >
+TODIGIT < 0x0134cf36 - 0x0134cf39 : 0x0000 >
+TODIGIT < 0x0134d030 - 0x0134d035 : 0x0000 >
+TODIGIT < 0x0134d434 - 0x0134d439 : 0x0000 >
+TODIGIT < 0x0134d530 - 0x0134d533 : 0x0000 >
+TODIGIT < 0x0136ad32 0x0000 >
+TODIGIT < 0x0136ad36 - 0x0136ad39 : 0x0004 >
+TODIGIT < 0x0136ae30 - 0x0136ae31 : 0x0004 >
+TODIGIT < 0x0136ae38 - 0x0136ae39 : 0x0000 >
+TODIGIT < 0x0136af30 - 0x0136af37 : 0x0000 >
+UPPER 0x01308638 0x01308639
+UPPER 0x01308730 - 0x01308739
+UPPER 0x01308830 - 0x01308839
+UPPER 0x01308930 - 0x01308937
+UPPER 0x01308b38 0x01308b39
+UPPER 0x01308c31 0x01308c33 0x01308c35 0x01308c37 0x01308c39
+UPPER 0x01308d31 0x01308d33 0x01308d35 0x01308d36 0x01308d38
+UPPER 0x01308e30 0x01308e32 0x01308e33 0x01308e35 0x01308e37 0x01308e39
+UPPER 0x01308f31 0x01308f33 0x01308f35 0x01308f37 0x01308f38
+UPPER 0x01309030 0x01309032 0x01309034 0x01309036 0x01309038
+UPPER 0x01309131 0x01309133 0x01309135 0x01309137 0x01309139
+UPPER 0x01309231 0x01309232 0x01309234 0x01309236 0x01309238 0x01309239
+UPPER 0x01309331 0x01309333 0x01309335 0x01309337 0x01309339
+UPPER 0x01309431 0x01309433 0x01309435 0x01309437 0x01309439
+UPPER 0x01309531 0x01309533 0x01309535 0x01309537 0x01309538
+UPPER 0x01309630 0x01309632 0x01309634 0x01309636 0x01309638
+UPPER 0x01309730 0x01309731 0x01309733 0x01309735 0x01309739
+UPPER 0x01309830 0x01309832 0x01309834 0x01309835 0x01309837 - 0x01309839
+UPPER 0x01309932 - 0x01309935 0x01309937 0x01309938
+UPPER 0x01309a30 - 0x01309a32 0x01309a36 0x01309a37 0x01309a39
+UPPER 0x01309b30 0x01309b32 0x01309b34 0x01309b36 0x01309b37 0x01309b39
+UPPER 0x01309c32 0x01309c34 0x01309c35 0x01309c37 - 0x01309c39
+UPPER 0x01309d31 0x01309d33 0x01309d34 0x01309d38
+UPPER 0x01309e36 0x01309e39
+UPPER 0x01309f32 0x01309f35 - 0x01309f39
+UPPER 0x0130a030 - 0x0130a032 0x0130a034 0x0130a036 0x0130a038
+UPPER 0x0130a130 0x0130a132 0x0130a134 0x0130a136 0x0130a138
+UPPER 0x0130a230 0x0130a233 0x0130a236 0x0130a238 0x0130a239
+UPPER 0x0130a330 0x0130a331 0x0130a333 0x0130a335 0x0130a337 0x0130a339
+UPPER 0x0130a431 0x0130a433 0x0130a435 0x0130a437 0x0130a439
+UPPER 0x0130a531 0x0130a533 0x0130a535 0x0130a537 0x0130a539
+UPPER 0x0130a631 0x0130a633 0x0130a635 0x0130a637 0x0130a639
+UPPER 0x0130a731 0x0130a733 0x0130a735 0x0130a737 0x0130a739
+UPPER 0x0130a831 0x0130a833 0x0130a835 0x0130a837
+UPPER 0x0130ca30 0x0130ca32 - 0x0130ca34 0x0130ca36 0x0130ca38 0x0130ca39
+UPPER 0x0130cb32 0x0130cb33
+UPPER 0x0130cc38 0x0130cc39
+UPPER 0x0130cd30 0x0130cd34 0x0130cd36 0x0130cd38
+UPPER 0x0130ce30 0x0130ce32 0x0130ce34 0x0130ce36 0x0130ce38
+UPPER 0x0130cf30 0x0130cf32 0x0130cf34 0x0130cf36
+UPPER 0x0130d032
+UPPER 0x0130d134 - 0x0130d139
+UPPER 0x0130d230 - 0x0130d238
+UPPER 0x0130d434 0x0130d436 0x0130d438
+UPPER 0x0130d530 0x0130d532 0x0130d534 0x0130d536 0x0130d538
+UPPER 0x0130d630 0x0130d632 0x0130d634 0x0130d636 0x0130d638
+UPPER 0x0130d730 0x0130d732 0x0130d734 0x0130d736
+UPPER 0x0130d836 0x0130d838
+UPPER 0x0130d930 0x0130d932 0x0130d934 0x0130d936 0x0130d938
+UPPER 0x0130da30 0x0130da32 0x0130da34 0x0130da36 0x0130da38
+UPPER 0x0130db30 0x0130db32 0x0130db34 0x0130db36 0x0130db38
+UPPER 0x0130dc30 0x0130dc32 0x0130dc34 0x0130dc36 0x0130dc38
+UPPER 0x0130dd30 0x0130dd32 0x0130dd34 0x0130dd36 0x0130dd38
+UPPER 0x0130de30 0x0130de31 0x0130de33 0x0130de35 0x0130de37 0x0130de39
+UPPER 0x0130df31 0x0130df33 0x0130df36 0x0130df38
+UPPER 0x0130e030 0x0130e032 0x0130e034 0x0130e036 0x0130e038
+UPPER 0x0130e130 0x0130e132 0x0130e134 0x0130e136 0x0130e138
+UPPER 0x0130e230 0x0130e232 0x0130e234 0x0130e236 0x0130e238
+UPPER 0x0130e330 0x0130e332 0x0130e336
+UPPER 0x0130e434 0x0130e436 0x0130e438
+UPPER 0x0130e530 0x0130e532 0x0130e534 0x0130e536 0x0130e538
+UPPER 0x0130e933 - 0x0130e939
+UPPER 0x0130ea30 - 0x0130ea39
+UPPER 0x0130eb30 - 0x0130eb39
+UPPER 0x0130ec30 - 0x0130ec39
+UPPER 0x0130ed30
+UPPER 0x01339430 - 0x01339439
+UPPER 0x01339530 - 0x01339539
+UPPER 0x01339630 - 0x01339639
+UPPER 0x01339730 - 0x01339737
+UPPER 0x0135ee34 0x0135ee36 0x0135ee38
+UPPER 0x0135ef30 0x0135ef32 0x0135ef34 0x0135ef36 0x0135ef38
+UPPER 0x0135f030 0x0135f032 0x0135f034 0x0135f036 0x0135f038
+UPPER 0x0135f130 0x0135f132 0x0135f134 0x0135f136 0x0135f138
+UPPER 0x0135f230 0x0135f232 0x0135f234 0x0135f236 0x0135f238
+UPPER 0x0135f330 0x0135f332 0x0135f334 0x0135f336 0x0135f338
+UPPER 0x0135f430 0x0135f432 0x0135f434 0x0135f436 0x0135f438
+UPPER 0x0135f530 0x0135f532 0x0135f534 0x0135f536 0x0135f538
+UPPER 0x0135f630 0x0135f632 0x0135f634 0x0135f636 0x0135f638
+UPPER 0x0135f730 0x0135f732 0x0135f734 0x0135f736 0x0135f738
+UPPER 0x0135f830 0x0135f832 0x0135f834 0x0135f836 0x0135f838
+UPPER 0x0135f930 0x0135f932 0x0135f934 0x0135f936 0x0135f938
+UPPER 0x0135fa30 0x0135fa32 0x0135fa34 0x0135fa36 0x0135fa38
+UPPER 0x0135fb30 0x0135fb32 0x0135fb34 0x0135fb36 0x0135fb38
+UPPER 0x0135fc30 0x0135fc32 0x0135fc34 0x0135fc36 0x0135fc38
+UPPER 0x0135fd30 0x0135fd32
+UPPER 0x0135fe34 0x0135fe36 0x0135fe38
+UPPER 0x01368130 0x01368132 0x01368134 0x01368136 0x01368138
+UPPER 0x01368230 0x01368232 0x01368234 0x01368236 0x01368238
+UPPER 0x01368330 0x01368332 0x01368334 0x01368336 0x01368338
+UPPER 0x01368430 0x01368432 0x01368434 0x01368436 0x01368438
+UPPER 0x01368530 0x01368532 0x01368534 0x01368536 0x01368538
+UPPER 0x01368630 0x01368632 0x01368634 0x01368636 0x01368638
+UPPER 0x01368730 0x01368732 0x01368734 0x01368736 0x01368738
+UPPER 0x01368830 0x01368832 0x01368834 0x01368836 0x01368838
+UPPER 0x01368930 0x01368932
+UPPER 0x01368a38 0x01368a39
+UPPER 0x01368b30 - 0x01368b35
+UPPER 0x01368c34 - 0x01368c39
+UPPER 0x01368e30 - 0x01368e37
+UPPER 0x01368f36 - 0x01368f39
+UPPER 0x01369030 - 0x01369033
+UPPER 0x01369132 - 0x01369137
+UPPER 0x01369239
+UPPER 0x01369331 0x01369333 0x01369335
+UPPER 0x01369434 - 0x01369439
+UPPER 0x01369530 0x01369531
+UPPER 0x01369c34 - 0x01369c37
+UPPER 0x01369e30 - 0x01369e33
+UPPER 0x01369f36 - 0x01369f39
+UPPER 0x0136a132 - 0x0136a136
+UPPER 0x0136a238 0x0136a239
+UPPER 0x0136a330 0x0136a331
+UPPER 0x0136bb37
+UPPER 0x0136bc30 0x0136bc33 - 0x0136bc35 0x0136bc38 0x0136bc39
+UPPER 0x0136bd30 0x0136bd33 0x0136bd36 - 0x0136bd39
+UPPER 0x0136be30 0x0136be36 0x0136be38
+UPPER 0x0136bf30 0x0136bf32 - 0x0136bf35 0x0136bf38 0x0136bf39
+UPPER 0x0136c031
+UPPER 0x0136c132 0x0136c133 0x0136c139
diff --git a/share/mklocale/zh_CN.GB2312.src b/share/mklocale/zh_CN.GB2312.src
new file mode 100644
index 0000000..8836089
--- /dev/null
+++ b/share/mklocale/zh_CN.GB2312.src
@@ -0,0 +1,243 @@
+/*
+ * GB2312 first byte: A1-FE
+ * second byte: A1-FE
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "GB2312"
+
+/*
+ * ASCII compatible
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+BLANK ' ' '\t'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+MAPLOWER < 'A' - 'Z' : 'a' > < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' > < 'a' - 'z' : 'A' >
+PRINT 0x20 - 0x7e
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 >
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+
+/*
+ * GB2312 data
+ */
+ALPHA 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+ALPHA 0xa6a1 - 0xa6b8 0xa6c1 - 0xa6d8
+ALPHA 0xa7a1 - 0xa7c1 0xa7d1 - 0xa7f1
+ALPHA 0xa8a1 - 0xa8bb 0xa8bd - 0xa8c0
+BLANK 0xa1a1
+DIGIT 0xa2a1 - 0xa2aa 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc
+DIGIT 0xa3b0 - 0xa3b9
+GRAPH 0xa1a9
+GRAPH 0xa2ab - 0xa2b0 0xa2e4 0xa2ef 0xa2f0 0xa2fd 0xa2fe
+GRAPH 0xa4f4 - 0xa4fe
+GRAPH 0xa5f7 - 0xa5fe
+GRAPH 0xa6b9 - 0xa6c0 0xa6d9 - 0xa6df 0xa6ec 0xa6ed 0xa6f3 0xa6f6 - 0xa6fe
+GRAPH 0xa7c2 - 0xa7d0 0xa7f2 - 0xa7fe
+GRAPH 0xa8bc 0xa8c1 - 0xa8fe
+GRAPH 0xa9a1-0xa9a3 0xa9f0 - 0xa9fe
+GRAPH 0xaaa1 - 0xaafe
+GRAPH 0xaba1 - 0xabfe
+GRAPH 0xaca1 - 0xacfe
+GRAPH 0xada1 - 0xadfe
+GRAPH 0xaea1 - 0xaefe
+GRAPH 0xafa1 - 0xaffe
+GRAPH 0xd7fa - 0xd7fe
+IDEOGRAM 0xb0a1 - 0xb0fe
+IDEOGRAM 0xb1a1 - 0xb1fe
+IDEOGRAM 0xb2a1 - 0xb2fe
+IDEOGRAM 0xb3a1 - 0xb3fe
+IDEOGRAM 0xb4a1 - 0xb4fe
+IDEOGRAM 0xb5a1 - 0xb5fe
+IDEOGRAM 0xb6a1 - 0xb6fe
+IDEOGRAM 0xb7a1 - 0xb7fe
+IDEOGRAM 0xb8a1 - 0xb8fe
+IDEOGRAM 0xb9a1 - 0xb9fe
+IDEOGRAM 0xbaa1 - 0xbafe
+IDEOGRAM 0xbba1 - 0xbbfe
+IDEOGRAM 0xbca1 - 0xbcfe
+IDEOGRAM 0xbda1 - 0xbdfe
+IDEOGRAM 0xbea1 - 0xbefe
+IDEOGRAM 0xbfa1 - 0xbffe
+IDEOGRAM 0xc0a1 - 0xc0fe
+IDEOGRAM 0xc1a1 - 0xc1fe
+IDEOGRAM 0xc2a1 - 0xc2fe
+IDEOGRAM 0xc3a1 - 0xc3fe
+IDEOGRAM 0xc4a1 - 0xc4fe
+IDEOGRAM 0xc5a1 - 0xc5fe
+IDEOGRAM 0xc6a1 - 0xc6fe
+IDEOGRAM 0xc7a1 - 0xc7fe
+IDEOGRAM 0xc8a1 - 0xc8fe
+IDEOGRAM 0xc9a1 - 0xc9fe
+IDEOGRAM 0xcaa1 - 0xcafe
+IDEOGRAM 0xcba1 - 0xcbfe
+IDEOGRAM 0xcca1 - 0xccfe
+IDEOGRAM 0xcda1 - 0xcdfe
+IDEOGRAM 0xcea1 - 0xcefe
+IDEOGRAM 0xcfa1 - 0xcffe
+IDEOGRAM 0xd0a1 - 0xd0fe
+IDEOGRAM 0xd1a1 - 0xd1fe
+IDEOGRAM 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd3a1 - 0xd3fe
+IDEOGRAM 0xd4a1 - 0xd4fe
+IDEOGRAM 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd6a1 - 0xd6fe
+IDEOGRAM 0xd7a1 - 0xd7fe
+IDEOGRAM 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd9a1 - 0xd9fe
+IDEOGRAM 0xdaa1 - 0xdafe
+IDEOGRAM 0xdba1 - 0xdbfe
+IDEOGRAM 0xdca1 - 0xdcfe
+IDEOGRAM 0xdda1 - 0xddfe
+IDEOGRAM 0xdea1 - 0xdefe
+IDEOGRAM 0xdfa1 - 0xdffe
+IDEOGRAM 0xe0a1 - 0xe0fe
+IDEOGRAM 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe2a1 - 0xe2fe
+IDEOGRAM 0xe3a1 - 0xe3fe
+IDEOGRAM 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe5a1 - 0xe5fe
+IDEOGRAM 0xe6a1 - 0xe6fe
+IDEOGRAM 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe8a1 - 0xe8fe
+IDEOGRAM 0xe9a1 - 0xe9fe
+IDEOGRAM 0xeaa1 - 0xeafe
+IDEOGRAM 0xeba1 - 0xebfe
+IDEOGRAM 0xeca1 - 0xecfe
+IDEOGRAM 0xeda1 - 0xedfe
+IDEOGRAM 0xeea1 - 0xeefe
+IDEOGRAM 0xefa1 - 0xeffe
+IDEOGRAM 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf1a1 - 0xf1fe
+IDEOGRAM 0xf2a1 - 0xf2fe
+IDEOGRAM 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf4a1 - 0xf4fe
+IDEOGRAM 0xf5a1 - 0xf5fe
+IDEOGRAM 0xf6a1 - 0xf6fe
+IDEOGRAM 0xf7a1 - 0xf7fe
+LOWER 0xa2a1 - 0xa2aa
+LOWER 0xa3e1 - 0xa3fa
+LOWER 0xa6c1 - 0xa6d8
+LOWER 0xa7d1 - 0xa7f1
+LOWER 0xa8a1 - 0xa8bb 0xa8bd - 0xa8c0
+MAPLOWER < 0xa2f1 - 0xa2fa : 0xa2a1 > < 0xa2a1 - 0xa2aa : 0xa2a1 >
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > < 0xa3e1 - 0xa3fa : 0xa3e1 >
+MAPLOWER < 0xa6a1 - 0xa6b8 : 0xa6c1 > < 0xa6c1 - 0xa6d8 : 0xa6c1 >
+MAPLOWER < 0xa7a1 - 0xa7c1 : 0xa7d1 > < 0xa7d1 - 0xa7f1 : 0xa7d1 >
+MAPUPPER < 0xa2a1 - 0xa2aa : 0xa2f1 > < 0xa2f1 - 0xa2fc : 0xa2f1 >
+MAPUPPER < 0xa3e1 - 0xa3fa : 0xa3c1 > < 0xa3c1 - 0xa3da : 0xa3c1 >
+MAPUPPER < 0xa6c1 - 0xa6d8 : 0xa6a1 > < 0xa6a1 - 0xa6b8 : 0xa6a1 >
+MAPUPPER < 0xa7d1 - 0xa7f1 : 0xa7a1 > < 0xa7a1 - 0xa7c1 : 0xa7a1 >
+PHONOGRAM 0xa4a1 - 0xa4f3 /* Hiragana */
+PHONOGRAM 0xa5a1 - 0xa5f6 /* Katakana */
+PHONOGRAM 0xa8c5 - 0xa8e9 /* Pin yin */
+PRINT 0xa1a1
+PUNCT 0xa1a2 - 0xa1a8 0xa1aa - 0xa1fe
+PUNCT 0xa2e3
+PUNCT 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+PUNCT 0xa6e0 - 0xa6eb 0xa6ee - 0xa6f2 0xa6f4 0xa6f5
+PUNCT 0xa9a4 - 0xa9ef
+SPACE 0xa1a1
+SPECIAL 0xa2a1 - 0xa2aa 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc
+SPECIAL 0xa8a1 - 0xa8c0
+SPECIAL 0xa9a4 - 0xa9ef /* Box drawings */
+SWIDTH2 0xa1a1 - 0xa1a3 0xa1a8 0xa1a9 0xa1ab 0xa1b2 - 0xa1bf 0xa1e7 0xa1e9 0xa1ea 0xa1fe
+SWIDTH2 0xa2e5 - 0xa2ee
+SWIDTH2 0xa3a1 - 0xa3fe
+SWIDTH2 0xa4a1 - 0xa4f3
+SWIDTH2 0xa5a1 - 0xa5f6
+SWIDTH2 0xa6e0 - 0xa6eb 0xa6ee - 0xa6f2 0xa6f4 0xa6f5
+SWIDTH2 0xa8c5 - 0xa8e9
+SWIDTH2 0xb0a1 - 0xb0fe
+SWIDTH2 0xb1a1 - 0xb1fe
+SWIDTH2 0xb2a1 - 0xb2fe
+SWIDTH2 0xb3a1 - 0xb3fe
+SWIDTH2 0xb4a1 - 0xb4fe
+SWIDTH2 0xb5a1 - 0xb5fe
+SWIDTH2 0xb6a1 - 0xb6fe
+SWIDTH2 0xb7a1 - 0xb7fe
+SWIDTH2 0xb8a1 - 0xb8fe
+SWIDTH2 0xb9a1 - 0xb9fe
+SWIDTH2 0xbaa1 - 0xbafe
+SWIDTH2 0xbba1 - 0xbbfe
+SWIDTH2 0xbca1 - 0xbcfe
+SWIDTH2 0xbda1 - 0xbdfe
+SWIDTH2 0xbea1 - 0xbefe
+SWIDTH2 0xbfa1 - 0xbffe
+SWIDTH2 0xc0a1 - 0xc0fe
+SWIDTH2 0xc1a1 - 0xc1fe
+SWIDTH2 0xc2a1 - 0xc2fe
+SWIDTH2 0xc3a1 - 0xc3fe
+SWIDTH2 0xc4a1 - 0xc4fe
+SWIDTH2 0xc5a1 - 0xc5fe
+SWIDTH2 0xc6a1 - 0xc6fe
+SWIDTH2 0xc7a1 - 0xc7fe
+SWIDTH2 0xc8a1 - 0xc8fe
+SWIDTH2 0xc9a1 - 0xc9fe
+SWIDTH2 0xcaa1 - 0xcafe
+SWIDTH2 0xcba1 - 0xcbfe
+SWIDTH2 0xcca1 - 0xccfe
+SWIDTH2 0xcda1 - 0xcdfe
+SWIDTH2 0xcea1 - 0xcefe
+SWIDTH2 0xcfa1 - 0xcffe
+SWIDTH2 0xd0a1 - 0xd0fe
+SWIDTH2 0xd1a1 - 0xd1fe
+SWIDTH2 0xd2a1 - 0xd2fe
+SWIDTH2 0xd3a1 - 0xd3fe
+SWIDTH2 0xd4a1 - 0xd4fe
+SWIDTH2 0xd5a1 - 0xd5fe
+SWIDTH2 0xd6a1 - 0xd6fe
+SWIDTH2 0xd7a1 - 0xd7f9
+SWIDTH2 0xd8a1 - 0xd8fe
+SWIDTH2 0xd9a1 - 0xd9fe
+SWIDTH2 0xdaa1 - 0xdafe
+SWIDTH2 0xdba1 - 0xdbfe
+SWIDTH2 0xdca1 - 0xdcfe
+SWIDTH2 0xdda1 - 0xddfe
+SWIDTH2 0xdea1 - 0xdefe
+SWIDTH2 0xdfa1 - 0xdffe
+SWIDTH2 0xe0a1 - 0xe0fe
+SWIDTH2 0xe1a1 - 0xe1fe
+SWIDTH2 0xe2a1 - 0xe2fe
+SWIDTH2 0xe3a1 - 0xe3fe
+SWIDTH2 0xe4a1 - 0xe4fe
+SWIDTH2 0xe5a1 - 0xe5fe
+SWIDTH2 0xe6a1 - 0xe6fe
+SWIDTH2 0xe7a1 - 0xe7fe
+SWIDTH2 0xe8a1 - 0xe8fe
+SWIDTH2 0xe9a1 - 0xe9fe
+SWIDTH2 0xeaa1 - 0xeafe
+SWIDTH2 0xeba1 - 0xebfe
+SWIDTH2 0xeca1 - 0xecfe
+SWIDTH2 0xeda1 - 0xedfe
+SWIDTH2 0xeea1 - 0xeefe
+SWIDTH2 0xefa1 - 0xeffe
+SWIDTH2 0xf0a1 - 0xf0fe
+SWIDTH2 0xf1a1 - 0xf1fe
+SWIDTH2 0xf2a1 - 0xf2fe
+SWIDTH2 0xf3a1 - 0xf3fe
+SWIDTH2 0xf4a1 - 0xf4fe
+SWIDTH2 0xf5a1 - 0xf5fe
+SWIDTH2 0xf6a1 - 0xf6fe
+SWIDTH2 0xf7a1 - 0xf7fe
+TODIGIT < 0xa2a1 - 0xa2aa : 1 >
+TODIGIT < 0xa2b1 - 0xa2c4 : 1 >
+TODIGIT < 0xa2c5 - 0xa2d8 : 1 >
+TODIGIT < 0xa2d9 - 0xa2e2 : 1 >
+TODIGIT < 0xa2e5 - 0xa2ee : 1 >
+TODIGIT < 0xa2f1 - 0xa2fc : 1 >
+TODIGIT < 0xa3b0 - 0xa3b9 : 0 >
+TODIGIT < 0xa3c1 - 0xa3c6 : 10 > < 0xa3e1 - 0xa3e6 : 10 >
+UPPER 0xa2f1 - 0xa2fc
+UPPER 0xa3c1 - 0xa3da
+UPPER 0xa6a1 - 0xa6b8 /* Greek */
+UPPER 0xa7a1 - 0xa7c1 /* Cyrillic */
+XDIGIT 0xa3b0 - 0xa3b9 0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6
diff --git a/share/mklocale/zh_CN.GBK.src b/share/mklocale/zh_CN.GBK.src
new file mode 100644
index 0000000..3af1f1b
--- /dev/null
+++ b/share/mklocale/zh_CN.GBK.src
@@ -0,0 +1,328 @@
+/*
+ * GBK first byte: 81-FE
+ * second byte: 40-7E, 80-FE
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "GBK"
+/* VARIABLE GBK character set */
+
+/*
+ * ASCII
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+SWIDTH1 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' > < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' > < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 >
+
+/*
+ * the real thing
+ */
+IDEOGRAM 0x8140 - 0x817e 0x8180 - 0x81fe
+IDEOGRAM 0x8240 - 0x827e 0x8280 - 0x82fe
+IDEOGRAM 0x8340 - 0x837e 0x8380 - 0x83fe
+IDEOGRAM 0x8440 - 0x847e 0x8480 - 0x84fe
+IDEOGRAM 0x8540 - 0x857e 0x8580 - 0x85fe
+IDEOGRAM 0x8640 - 0x867e 0x8680 - 0x86fe
+IDEOGRAM 0x8740 - 0x877e 0x8780 - 0x87fe
+IDEOGRAM 0x8840 - 0x887e 0x8880 - 0x88fe
+IDEOGRAM 0x8940 - 0x897e 0x8980 - 0x89fe
+IDEOGRAM 0x8a40 - 0x8a7e 0x8a80 - 0x8afe
+IDEOGRAM 0x8b40 - 0x8b7e 0x8b80 - 0x8bfe
+IDEOGRAM 0x8c40 - 0x8c7e 0x8c80 - 0x8cfe
+IDEOGRAM 0x8d40 - 0x8d7e 0x8d80 - 0x8dfe
+IDEOGRAM 0x8e40 - 0x8e7e 0x8e80 - 0x8efe
+IDEOGRAM 0x8f40 - 0x8f7e 0x8f80 - 0x8ffe
+IDEOGRAM 0x9040 - 0x907e 0x9080 - 0x90fe
+IDEOGRAM 0x9140 - 0x917e 0x9180 - 0x91fe
+IDEOGRAM 0x9240 - 0x927e 0x9280 - 0x92fe
+IDEOGRAM 0x9340 - 0x937e 0x9380 - 0x93fe
+IDEOGRAM 0x9440 - 0x947e 0x9480 - 0x94fe
+IDEOGRAM 0x9540 - 0x957e 0x9580 - 0x95fe
+IDEOGRAM 0x9640 - 0x967e 0x9680 - 0x96fe
+IDEOGRAM 0x9740 - 0x977e 0x9780 - 0x97fe
+IDEOGRAM 0x9840 - 0x987e 0x9880 - 0x98fe
+IDEOGRAM 0x9940 - 0x997e 0x9980 - 0x99fe
+IDEOGRAM 0x9a40 - 0x9a7e 0x9a80 - 0x9afe
+IDEOGRAM 0x9b40 - 0x9b7e 0x9b80 - 0x9bfe
+IDEOGRAM 0x9c40 - 0x9c7e 0x9c80 - 0x9cfe
+IDEOGRAM 0x9d40 - 0x9d7e 0x9d80 - 0x9dfe
+IDEOGRAM 0x9e40 - 0x9e7e 0x9e80 - 0x9efe
+IDEOGRAM 0x9f40 - 0x9f7e 0x9f80 - 0x9ffe
+IDEOGRAM 0xa040 - 0xa07e 0xa080 - 0xa0fe
+
+SPACE 0xa1a1
+BLANK 0xa1a1
+PUNCT 0xa1a2 - 0xa1fe
+
+/* full width 0 1 2 .. 9 */
+/* ?DIGIT 0xa2a1 - 0xa2aa 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc */
+
+TODIGIT < 0xa2a1 - 0xa2aa : 1 >
+TODIGIT < 0xa2b1 - 0xa2c4 : 1 >
+TODIGIT < 0xa2c5 - 0xa2d8 : 1 >
+TODIGIT < 0xa2d9 - 0xa2e2 : 1 >
+TODIGIT < 0xa2e5 - 0xa2ee : 1 >
+TODIGIT < 0xa2f1 - 0xa2fc : 1 >
+
+ALPHA 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+/* ?DIGIT 0xa3b0 - 0xa3b9 */
+UPPER 0xa3c1 - 0xa3da
+LOWER 0xa3e1 - 0xa3fa
+PUNCT 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+/* ?XDIGIT 0xa3b0 - 0xa3b9 0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6 */
+
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > < 0xa3e1 - 0xa3fa : 0xa3e1 >
+MAPUPPER < 0xa3c1 - 0xa3da : 0xa3c1 > < 0xa3b0 - 0xa3b9 : 0xa3c1 >
+TODIGIT < 0xa3b0 - 0xa3b9 : 0 >
+TODIGIT < 0xa3c1 - 0xa3c6 : 10 > < 0xa3e1 - 0xa3e6 : 10 >
+
+PHONOGRAM 0xa4a1 - 0xa4f3 /* Hiragana */
+PHONOGRAM 0xa5a1 - 0xa5f6 /* Katakana */
+
+UPPER 0xa6a1 - 0xa6b8 /* Greek */
+LOWER 0xa6c1 - 0xa6d8 /* Greek */
+MAPLOWER < 0xa6a1 - 0xa6b8 : 0xa6c1 > < 0xa6c1 - 0xa6d8 : 0xa6c1 >
+MAPUPPER < 0xa6a1 - 0xa6b8 : 0xa6a1 > < 0xa6c1 - 0xa6d8 : 0xa6a1 >
+
+UPPER 0xa7a1 - 0xa7c1 /* Cyrillic */
+LOWER 0xa7d1 - 0xa7f1 /* Cyrillic */
+MAPLOWER < 0xa7a1 - 0xa7c1 : 0xa7d1 > < 0xa7d1 - 0xa7f1 : 0xa7d1 >
+MAPUPPER < 0xa7a1 - 0xa7c1 : 0xa7a1 > < 0xa7d1 - 0xa7f1 : 0xa7a1 >
+
+PUNCT 0xa840 - 0xa853
+SPECIAL 0xa854 - 0xa877 /* Box drawings */
+PUNCT 0xa878 - 0xa87e 0xa880 - 0xa895
+SPECIAL 0xa8a1 - 0xa8c0
+PHONOGRAM 0xa8c5 - 0xa8e9 /* Pin yin */
+TODIGIT < 0xa940 - 0xa948 : 1 >
+SPECIAL 0xa949 - 0xa95a 0xa95c 0xa960 - 0xa97e 0xa980 - 0xa996
+SPECIAL 0xa9a4 - 0xa9ef /* Box drawings */
+
+IDEOGRAM 0xaa40 - 0xaa7e 0xaa80 - 0xaaa0
+IDEOGRAM 0xab40 - 0xab7e 0xab80 - 0xaba0
+IDEOGRAM 0xac40 - 0xac7e 0xac80 - 0xaca0
+IDEOGRAM 0xad40 - 0xad7e 0xad80 - 0xada0
+IDEOGRAM 0xae40 - 0xae7e 0xae80 - 0xaea0
+IDEOGRAM 0xaf40 - 0xaf7e 0xaf80 - 0xafa0
+IDEOGRAM 0xb040 - 0xb07e 0xb080 - 0xb0fe
+IDEOGRAM 0xb140 - 0xb17e 0xb180 - 0xb1fe
+IDEOGRAM 0xb240 - 0xb27e 0xb280 - 0xb2fe
+IDEOGRAM 0xb340 - 0xb37e 0xb380 - 0xb3fe
+IDEOGRAM 0xb440 - 0xb47e 0xb480 - 0xb4fe
+IDEOGRAM 0xb540 - 0xb57e 0xb580 - 0xb5fe
+IDEOGRAM 0xb640 - 0xb67e 0xb680 - 0xb6fe
+IDEOGRAM 0xb740 - 0xb77e 0xb780 - 0xb7fe
+IDEOGRAM 0xb840 - 0xb87e 0xb880 - 0xb8fe
+IDEOGRAM 0xb940 - 0xb97e 0xb980 - 0xb9fe
+IDEOGRAM 0xba40 - 0xba7e 0xba80 - 0xbafe
+IDEOGRAM 0xbb40 - 0xbb7e 0xbb80 - 0xbbfe
+IDEOGRAM 0xbc40 - 0xbc7e 0xbc80 - 0xbcfe
+IDEOGRAM 0xbd40 - 0xbd7e 0xbd80 - 0xbdfe
+IDEOGRAM 0xbe40 - 0xbe7e 0xbe80 - 0xbefe
+IDEOGRAM 0xbf40 - 0xbf7e 0xbf80 - 0xbffe
+IDEOGRAM 0xc040 - 0xc07e 0xc080 - 0xc0fe
+IDEOGRAM 0xc140 - 0xc17e 0xc180 - 0xc1fe
+IDEOGRAM 0xc240 - 0xc27e 0xc280 - 0xc2fe
+IDEOGRAM 0xc340 - 0xc37e 0xc380 - 0xc3fe
+IDEOGRAM 0xc440 - 0xc47e 0xc480 - 0xc4fe
+IDEOGRAM 0xc540 - 0xc57e 0xc580 - 0xc5fe
+IDEOGRAM 0xc640 - 0xc67e 0xc680 - 0xc6fe
+IDEOGRAM 0xc740 - 0xc77e 0xc780 - 0xc7fe
+IDEOGRAM 0xc840 - 0xc87e 0xc880 - 0xc8fe
+IDEOGRAM 0xc940 - 0xc97e 0xc980 - 0xc9fe
+IDEOGRAM 0xca40 - 0xca7e 0xca80 - 0xcafe
+IDEOGRAM 0xcb40 - 0xcb7e 0xcb80 - 0xcbfe
+IDEOGRAM 0xcc40 - 0xcc7e 0xcc80 - 0xccfe
+IDEOGRAM 0xcd40 - 0xcd7e 0xcd80 - 0xcdfe
+IDEOGRAM 0xce40 - 0xce7e 0xce80 - 0xcefe
+IDEOGRAM 0xcf40 - 0xcf7e 0xcf80 - 0xcffe
+IDEOGRAM 0xd040 - 0xd07e 0xd080 - 0xd0fe
+IDEOGRAM 0xd140 - 0xd17e 0xd180 - 0xd1fe
+IDEOGRAM 0xd240 - 0xd27e 0xd280 - 0xd2fe
+IDEOGRAM 0xd340 - 0xd37e 0xd380 - 0xd3fe
+IDEOGRAM 0xd440 - 0xd47e 0xd480 - 0xd4fe
+IDEOGRAM 0xd540 - 0xd57e 0xd580 - 0xd5fe
+IDEOGRAM 0xd640 - 0xd67e 0xd680 - 0xd6fe
+IDEOGRAM 0xd740 - 0xd77e 0xd780 - 0xd7fe
+IDEOGRAM 0xd840 - 0xd87e 0xd880 - 0xd8fe
+IDEOGRAM 0xd940 - 0xd97e 0xd980 - 0xd9fe
+IDEOGRAM 0xda40 - 0xda7e 0xda80 - 0xdafe
+IDEOGRAM 0xdb40 - 0xdb7e 0xdb80 - 0xdbfe
+IDEOGRAM 0xdc40 - 0xdc7e 0xdc80 - 0xdcfe
+IDEOGRAM 0xdd40 - 0xdd7e 0xdd80 - 0xddfe
+IDEOGRAM 0xde40 - 0xde7e 0xde80 - 0xdefe
+IDEOGRAM 0xdf40 - 0xdf7e 0xdf80 - 0xdffe
+IDEOGRAM 0xe040 - 0xe07e 0xe080 - 0xe0fe
+IDEOGRAM 0xe140 - 0xe17e 0xe180 - 0xe1fe
+IDEOGRAM 0xe240 - 0xe27e 0xe280 - 0xe2fe
+IDEOGRAM 0xe340 - 0xe37e 0xe380 - 0xe3fe
+IDEOGRAM 0xe440 - 0xe47e 0xe480 - 0xe4fe
+IDEOGRAM 0xe540 - 0xe57e 0xe580 - 0xe5fe
+IDEOGRAM 0xe640 - 0xe67e 0xe680 - 0xe6fe
+IDEOGRAM 0xe740 - 0xe77e 0xe780 - 0xe7fe
+IDEOGRAM 0xe840 - 0xe87e 0xe880 - 0xe8fe
+IDEOGRAM 0xe940 - 0xe97e 0xe980 - 0xe9fe
+IDEOGRAM 0xea40 - 0xea7e 0xea80 - 0xeafe
+IDEOGRAM 0xeb40 - 0xeb7e 0xeb80 - 0xebfe
+IDEOGRAM 0xec40 - 0xec7e 0xec80 - 0xecfe
+IDEOGRAM 0xed40 - 0xed7e 0xed80 - 0xedfe
+IDEOGRAM 0xee40 - 0xee7e 0xee80 - 0xeefe
+IDEOGRAM 0xef40 - 0xef7e 0xef80 - 0xeffe
+IDEOGRAM 0xf040 - 0xf07e 0xf080 - 0xf0fe
+IDEOGRAM 0xf140 - 0xf17e 0xf180 - 0xf1fe
+IDEOGRAM 0xf240 - 0xf27e 0xf280 - 0xf2fe
+IDEOGRAM 0xf340 - 0xf37e 0xf380 - 0xf3fe
+IDEOGRAM 0xf440 - 0xf47e 0xf480 - 0xf4fe
+IDEOGRAM 0xf540 - 0xf57e 0xf580 - 0xf5fe
+IDEOGRAM 0xf640 - 0xf67e 0xf680 - 0xf6fe
+IDEOGRAM 0xf740 - 0xf77e 0xf780 - 0xf7fe
+IDEOGRAM 0xf840 - 0xf87e 0xf880 - 0xf8a0
+IDEOGRAM 0xf940 - 0xf97e 0xf980 - 0xf9a0
+IDEOGRAM 0xfa40 - 0xfa7e 0xfa80 - 0xfaa0
+IDEOGRAM 0xfb40 - 0xfb7e 0xfb80 - 0xfba0
+IDEOGRAM 0xfc40 - 0xfc7e 0xfc80 - 0xfca0
+IDEOGRAM 0xfd40 - 0xfd7e 0xfd80 - 0xfda0
+IDEOGRAM 0xfe40 - 0xfe7e 0xfe80 - 0xfea0
+
+/* The GBK characters are all full-width */
+SWIDTH2 0x8140 - 0x817e 0x8180 - 0x81fe
+SWIDTH2 0x8240 - 0x827e 0x8280 - 0x82fe
+SWIDTH2 0x8340 - 0x837e 0x8380 - 0x83fe
+SWIDTH2 0x8440 - 0x847e 0x8480 - 0x84fe
+SWIDTH2 0x8540 - 0x857e 0x8580 - 0x85fe
+SWIDTH2 0x8640 - 0x867e 0x8680 - 0x86fe
+SWIDTH2 0x8740 - 0x877e 0x8780 - 0x87fe
+SWIDTH2 0x8840 - 0x887e 0x8880 - 0x88fe
+SWIDTH2 0x8940 - 0x897e 0x8980 - 0x89fe
+SWIDTH2 0x8a40 - 0x8a7e 0x8a80 - 0x8afe
+SWIDTH2 0x8b40 - 0x8b7e 0x8b80 - 0x8bfe
+SWIDTH2 0x8c40 - 0x8c7e 0x8c80 - 0x8cfe
+SWIDTH2 0x8d40 - 0x8d7e 0x8d80 - 0x8dfe
+SWIDTH2 0x8e40 - 0x8e7e 0x8e80 - 0x8efe
+SWIDTH2 0x8f40 - 0x8f7e 0x8f80 - 0x8ffe
+SWIDTH2 0x9040 - 0x907e 0x9080 - 0x90fe
+SWIDTH2 0x9140 - 0x917e 0x9180 - 0x91fe
+SWIDTH2 0x9240 - 0x927e 0x9280 - 0x92fe
+SWIDTH2 0x9340 - 0x937e 0x9380 - 0x93fe
+SWIDTH2 0x9440 - 0x947e 0x9480 - 0x94fe
+SWIDTH2 0x9540 - 0x957e 0x9580 - 0x95fe
+SWIDTH2 0x9640 - 0x967e 0x9680 - 0x96fe
+SWIDTH2 0x9740 - 0x977e 0x9780 - 0x97fe
+SWIDTH2 0x9840 - 0x987e 0x9880 - 0x98fe
+SWIDTH2 0x9940 - 0x997e 0x9980 - 0x99fe
+SWIDTH2 0x9a40 - 0x9a7e 0x9a80 - 0x9afe
+SWIDTH2 0x9b40 - 0x9b7e 0x9b80 - 0x9bfe
+SWIDTH2 0x9c40 - 0x9c7e 0x9c80 - 0x9cfe
+SWIDTH2 0x9d40 - 0x9d7e 0x9d80 - 0x9dfe
+SWIDTH2 0x9e40 - 0x9e7e 0x9e80 - 0x9efe
+SWIDTH2 0x9f40 - 0x9f7e 0x9f80 - 0x9ffe
+SWIDTH2 0xa040 - 0xa07e 0xa080 - 0xa0fe
+SWIDTH2 0xa140 - 0xa17e 0xa180 - 0xa1fe
+SWIDTH2 0xa240 - 0xa27e 0xa280 - 0xa2fe
+SWIDTH2 0xa340 - 0xa37e 0xa380 - 0xa3fe
+SWIDTH2 0xa440 - 0xa47e 0xa480 - 0xa4fe
+SWIDTH2 0xa540 - 0xa57e 0xa580 - 0xa5fe
+SWIDTH2 0xa640 - 0xa67e 0xa680 - 0xa6fe
+SWIDTH2 0xa740 - 0xa77e 0xa780 - 0xa7fe
+SWIDTH2 0xa840 - 0xa87e 0xa880 - 0xa8fe
+SWIDTH2 0xa940 - 0xa97e 0xa980 - 0xa9fe
+SWIDTH2 0xaa40 - 0xaa7e 0xaa80 - 0xaafe
+SWIDTH2 0xab40 - 0xab7e 0xab80 - 0xabfe
+SWIDTH2 0xac40 - 0xac7e 0xac80 - 0xacfe
+SWIDTH2 0xad40 - 0xad7e 0xad80 - 0xadfe
+SWIDTH2 0xae40 - 0xae7e 0xae80 - 0xaefe
+SWIDTH2 0xaf40 - 0xaf7e 0xaf80 - 0xaffe
+SWIDTH2 0xb040 - 0xb07e 0xb080 - 0xb0fe
+SWIDTH2 0xb140 - 0xb17e 0xb180 - 0xb1fe
+SWIDTH2 0xb240 - 0xb27e 0xb280 - 0xb2fe
+SWIDTH2 0xb340 - 0xb37e 0xb380 - 0xb3fe
+SWIDTH2 0xb440 - 0xb47e 0xb480 - 0xb4fe
+SWIDTH2 0xb540 - 0xb57e 0xb580 - 0xb5fe
+SWIDTH2 0xb640 - 0xb67e 0xb680 - 0xb6fe
+SWIDTH2 0xb740 - 0xb77e 0xb780 - 0xb7fe
+SWIDTH2 0xb840 - 0xb87e 0xb880 - 0xb8fe
+SWIDTH2 0xb940 - 0xb97e 0xb980 - 0xb9fe
+SWIDTH2 0xba40 - 0xba7e 0xba80 - 0xbafe
+SWIDTH2 0xbb40 - 0xbb7e 0xbb80 - 0xbbfe
+SWIDTH2 0xbc40 - 0xbc7e 0xbc80 - 0xbcfe
+SWIDTH2 0xbd40 - 0xbd7e 0xbd80 - 0xbdfe
+SWIDTH2 0xbe40 - 0xbe7e 0xbe80 - 0xbefe
+SWIDTH2 0xbf40 - 0xbf7e 0xbf80 - 0xbffe
+SWIDTH2 0xc040 - 0xc07e 0xc080 - 0xc0fe
+SWIDTH2 0xc140 - 0xc17e 0xc180 - 0xc1fe
+SWIDTH2 0xc240 - 0xc27e 0xc280 - 0xc2fe
+SWIDTH2 0xc340 - 0xc37e 0xc380 - 0xc3fe
+SWIDTH2 0xc440 - 0xc47e 0xc480 - 0xc4fe
+SWIDTH2 0xc540 - 0xc57e 0xc580 - 0xc5fe
+SWIDTH2 0xc640 - 0xc67e 0xc680 - 0xc6fe
+SWIDTH2 0xc740 - 0xc77e 0xc780 - 0xc7fe
+SWIDTH2 0xc840 - 0xc87e 0xc880 - 0xc8fe
+SWIDTH2 0xc940 - 0xc97e 0xc980 - 0xc9fe
+SWIDTH2 0xca40 - 0xca7e 0xca80 - 0xcafe
+SWIDTH2 0xcb40 - 0xcb7e 0xcb80 - 0xcbfe
+SWIDTH2 0xcc40 - 0xcc7e 0xcc80 - 0xccfe
+SWIDTH2 0xcd40 - 0xcd7e 0xcd80 - 0xcdfe
+SWIDTH2 0xce40 - 0xce7e 0xce80 - 0xcefe
+SWIDTH2 0xcf40 - 0xcf7e 0xcf80 - 0xcffe
+SWIDTH2 0xd040 - 0xd07e 0xd080 - 0xd0fe
+SWIDTH2 0xd140 - 0xd17e 0xd180 - 0xd1fe
+SWIDTH2 0xd240 - 0xd27e 0xd280 - 0xd2fe
+SWIDTH2 0xd340 - 0xd37e 0xd380 - 0xd3fe
+SWIDTH2 0xd440 - 0xd47e 0xd480 - 0xd4fe
+SWIDTH2 0xd540 - 0xd57e 0xd580 - 0xd5fe
+SWIDTH2 0xd640 - 0xd67e 0xd680 - 0xd6fe
+SWIDTH2 0xd740 - 0xd77e 0xd780 - 0xd7fe
+SWIDTH2 0xd840 - 0xd87e 0xd880 - 0xd8fe
+SWIDTH2 0xd940 - 0xd97e 0xd980 - 0xd9fe
+SWIDTH2 0xda40 - 0xda7e 0xda80 - 0xdafe
+SWIDTH2 0xdb40 - 0xdb7e 0xdb80 - 0xdbfe
+SWIDTH2 0xdc40 - 0xdc7e 0xdc80 - 0xdcfe
+SWIDTH2 0xdd40 - 0xdd7e 0xdd80 - 0xddfe
+SWIDTH2 0xde40 - 0xde7e 0xde80 - 0xdefe
+SWIDTH2 0xdf40 - 0xdf7e 0xdf80 - 0xdffe
+SWIDTH2 0xe040 - 0xe07e 0xe080 - 0xe0fe
+SWIDTH2 0xe140 - 0xe17e 0xe180 - 0xe1fe
+SWIDTH2 0xe240 - 0xe27e 0xe280 - 0xe2fe
+SWIDTH2 0xe340 - 0xe37e 0xe380 - 0xe3fe
+SWIDTH2 0xe440 - 0xe47e 0xe480 - 0xe4fe
+SWIDTH2 0xe540 - 0xe57e 0xe580 - 0xe5fe
+SWIDTH2 0xe640 - 0xe67e 0xe680 - 0xe6fe
+SWIDTH2 0xe740 - 0xe77e 0xe780 - 0xe7fe
+SWIDTH2 0xe840 - 0xe87e 0xe880 - 0xe8fe
+SWIDTH2 0xe940 - 0xe97e 0xe980 - 0xe9fe
+SWIDTH2 0xea40 - 0xea7e 0xea80 - 0xeafe
+SWIDTH2 0xeb40 - 0xeb7e 0xeb80 - 0xebfe
+SWIDTH2 0xec40 - 0xec7e 0xec80 - 0xecfe
+SWIDTH2 0xed40 - 0xed7e 0xed80 - 0xedfe
+SWIDTH2 0xee40 - 0xee7e 0xee80 - 0xeefe
+SWIDTH2 0xef40 - 0xef7e 0xef80 - 0xeffe
+SWIDTH2 0xf040 - 0xf07e 0xf080 - 0xf0fe
+SWIDTH2 0xf140 - 0xf17e 0xf180 - 0xf1fe
+SWIDTH2 0xf240 - 0xf27e 0xf280 - 0xf2fe
+SWIDTH2 0xf340 - 0xf37e 0xf380 - 0xf3fe
+SWIDTH2 0xf440 - 0xf47e 0xf480 - 0xf4fe
+SWIDTH2 0xf540 - 0xf57e 0xf580 - 0xf5fe
+SWIDTH2 0xf640 - 0xf67e 0xf680 - 0xf6fe
+SWIDTH2 0xf740 - 0xf77e 0xf780 - 0xf7fe
+SWIDTH2 0xf840 - 0xf87e 0xf880 - 0xf8fe
+SWIDTH2 0xf940 - 0xf97e 0xf980 - 0xf9fe
+SWIDTH2 0xfa40 - 0xfa7e 0xfa80 - 0xfafe
+SWIDTH2 0xfb40 - 0xfb7e 0xfb80 - 0xfbfe
+SWIDTH2 0xfc40 - 0xfc7e 0xfc80 - 0xfcfe
+SWIDTH2 0xfd40 - 0xfd7e 0xfd80 - 0xfdfe
+SWIDTH2 0xfe40 - 0xfe7e 0xfe80 - 0xfefe
diff --git a/share/mklocale/zh_CN.eucCN.src b/share/mklocale/zh_CN.eucCN.src
new file mode 100644
index 0000000..477244b1
--- /dev/null
+++ b/share/mklocale/zh_CN.eucCN.src
@@ -0,0 +1,255 @@
+/*-
+ * Copyright (c) 1998, Luoqi Chen
+ * 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$
+ */
+
+ENCODING "EUC"
+VARIABLE 1 0x0000 2 0x8080 2 0x0080 3 0x8000 0x8080
+
+/*
+ * Code Set 1
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+SWIDTH1 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' > < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' > < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 > < 'a' - 'f' : 10 >
+
+/*
+ * Code Set 2
+ */
+SPACE 0xa1a1
+BLANK 0xa1a1
+PUNCT 0xa1a2 - 0xa1fe
+SWIDTH2 0xa1a1 - 0xa1fe
+
+/* ?DIGIT 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc */
+SWIDTH2 0xa2b1 - 0xa2e2 0xa2e5 - 0xa2ee 0xa2f1 - 0xa2fc
+
+TODIGIT < 0xa2b1 - 0xa2c4 : 0 >
+TODIGIT < 0xa2c5 - 0xa2d8 : 0 >
+TODIGIT < 0xa2d9 - 0xa2e2 : 0 >
+TODIGIT < 0xa2e5 - 0xa2ee : 0 >
+TODIGIT < 0xa2f1 - 0xa2fc : 0 >
+
+ALPHA 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+SWIDTH2 0xa3c1 - 0xa3da 0xa3e1 - 0xa3fa
+/* ?DIGIT 0xa3b0 - 0xa3b9 */
+SWIDTH2 0xa3b0 - 0xa3b9
+UPPER 0xa3c1 - 0xa3da
+LOWER 0xa3e1 - 0xa3fa
+PUNCT 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+SWIDTH2 0xa3a1 - 0xa3af 0xa3ba - 0xa3c0 0xa3db - 0xa3e0 0xa3fb - 0xa3fe
+/* ?XDIGIT 0xa3b0 - 0xa3b9 0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6 */
+
+MAPLOWER < 0xa3c1 - 0xa3da : 0xa3e1 > < 0xa3e1 - 0xa3fa : 0xa3e1 >
+MAPUPPER < 0xa3c1 - 0xa3da : 0xa3c1 > < 0xa3b0 - 0xa3b9 : 0xa3c1 >
+TODIGIT < 0xa3b0 - 0xa3b9 : 0 >
+TODIGIT < 0xa3c1 - 0xa3c6 : 10 > < 0xa3e1 - 0xa3e6 : 10 >
+
+PHONOGRAM 0xa4a1 - 0xa4f3 /* Hiragana */
+PHONOGRAM 0xa5a1 - 0xa5f6 /* Katakana */
+SWIDTH2 0xa4a1 - 0xa4f3 /* Hiragana */
+SWIDTH2 0xa5a1 - 0xa5f6 /* Katakana */
+
+UPPER 0xa6a1 - 0xa6b8 /* Greek */
+LOWER 0xa6c1 - 0xa6d8 /* Greek */
+SWIDTH2 0xa6a1 - 0xa6b8 /* Greek */
+SWIDTH2 0xa6c1 - 0xa6d8 /* Greek */
+MAPLOWER < 0xa6a1 - 0xa6b8 : 0xa6c1 > < 0xa6c1 - 0xa6d8 : 0xa6c1 >
+MAPUPPER < 0xa6a1 - 0xa6b8 : 0xa6a1 > < 0xa6c1 - 0xa6d8 : 0xa6a1 >
+
+UPPER 0xa7a1 - 0xa7c1 /* Cyrillic */
+LOWER 0xa7d1 - 0xa7f1 /* Cyrillic */
+SWIDTH2 0xa7a1 - 0xa7c1 /* Cyrillic */
+SWIDTH2 0xa7d1 - 0xa7f1 /* Cyrillic */
+MAPLOWER < 0xa7a1 - 0xa7c1 : 0xa7d1 > < 0xa7d1 - 0xa7f1 : 0xa7d1 >
+MAPUPPER < 0xa7a1 - 0xa7c1 : 0xa7a1 > < 0xa7d1 - 0xa7f1 : 0xa7a1 >
+
+SPECIAL 0xa8a1 - 0xa8ba
+SWIDTH2 0xa8a1 - 0xa8ba
+PHONOGRAM 0xa8c5 - 0xa8e9 /* Pin yin */
+SWIDTH2 0xa8c5 - 0xa8e9 /* Pin yin */
+SPECIAL 0xa9a4 - 0xa9ef /* Box drawings */
+SWIDTH2 0xa9a4 - 0xa9ef /* Box drawings */
+
+IDEOGRAM 0xb0a1 - 0xb0fe
+IDEOGRAM 0xb1a1 - 0xb1fe
+IDEOGRAM 0xb2a1 - 0xb2fe
+IDEOGRAM 0xb3a1 - 0xb3fe
+IDEOGRAM 0xb4a1 - 0xb4fe
+IDEOGRAM 0xb5a1 - 0xb5fe
+IDEOGRAM 0xb6a1 - 0xb6fe
+IDEOGRAM 0xb7a1 - 0xb7fe
+IDEOGRAM 0xb8a1 - 0xb8fe
+IDEOGRAM 0xb9a1 - 0xb9fe
+IDEOGRAM 0xbaa1 - 0xbafe
+IDEOGRAM 0xbba1 - 0xbbfe
+IDEOGRAM 0xbca1 - 0xbcfe
+IDEOGRAM 0xbda1 - 0xbdfe
+IDEOGRAM 0xbea1 - 0xbefe
+IDEOGRAM 0xbfa1 - 0xbffe
+IDEOGRAM 0xc0a1 - 0xc0fe
+IDEOGRAM 0xc1a1 - 0xc1fe
+IDEOGRAM 0xc2a1 - 0xc2fe
+IDEOGRAM 0xc3a1 - 0xc3fe
+IDEOGRAM 0xc4a1 - 0xc4fe
+IDEOGRAM 0xc5a1 - 0xc5fe
+IDEOGRAM 0xc6a1 - 0xc6fe
+IDEOGRAM 0xc7a1 - 0xc7fe
+IDEOGRAM 0xc8a1 - 0xc8fe
+IDEOGRAM 0xc9a1 - 0xc9fe
+IDEOGRAM 0xcaa1 - 0xcafe
+IDEOGRAM 0xcba1 - 0xcbfe
+IDEOGRAM 0xcca1 - 0xccfe
+IDEOGRAM 0xcda1 - 0xcdfe
+IDEOGRAM 0xcea1 - 0xcefe
+IDEOGRAM 0xcfa1 - 0xcfd3
+IDEOGRAM 0xd0a1 - 0xd0fe
+IDEOGRAM 0xd1a1 - 0xd1fe
+IDEOGRAM 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd3a1 - 0xd3fe
+IDEOGRAM 0xd4a1 - 0xd4fe
+IDEOGRAM 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd6a1 - 0xd6fe
+IDEOGRAM 0xd7a1 - 0xd7fe
+IDEOGRAM 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd9a1 - 0xd9fe
+IDEOGRAM 0xdaa1 - 0xdafe
+IDEOGRAM 0xdba1 - 0xdbfe
+IDEOGRAM 0xdca1 - 0xdcfe
+IDEOGRAM 0xdda1 - 0xddfe
+IDEOGRAM 0xdea1 - 0xdefe
+IDEOGRAM 0xdfa1 - 0xdffe
+IDEOGRAM 0xe0a1 - 0xe0fe
+IDEOGRAM 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe2a1 - 0xe2fe
+IDEOGRAM 0xe3a1 - 0xe3fe
+IDEOGRAM 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe5a1 - 0xe5fe
+IDEOGRAM 0xe6a1 - 0xe6fe
+IDEOGRAM 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe8a1 - 0xe8fe
+IDEOGRAM 0xe9a1 - 0xe9fe
+IDEOGRAM 0xeaa1 - 0xeafe
+IDEOGRAM 0xeba1 - 0xebfe
+IDEOGRAM 0xeca1 - 0xecfe
+IDEOGRAM 0xeda1 - 0xedfe
+IDEOGRAM 0xeea1 - 0xeefe
+IDEOGRAM 0xefa1 - 0xeffe
+IDEOGRAM 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf1a1 - 0xf1fe
+IDEOGRAM 0xf2a1 - 0xf2fe
+IDEOGRAM 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf4a1 - 0xf4fe
+IDEOGRAM 0xf5a1 - 0xf5fe
+IDEOGRAM 0xf6a1 - 0xf6fe
+IDEOGRAM 0xf7a1 - 0xf7fe
+
+SWIDTH2 0xb0a1 - 0xb0fe
+SWIDTH2 0xb1a1 - 0xb1fe
+SWIDTH2 0xb2a1 - 0xb2fe
+SWIDTH2 0xb3a1 - 0xb3fe
+SWIDTH2 0xb4a1 - 0xb4fe
+SWIDTH2 0xb5a1 - 0xb5fe
+SWIDTH2 0xb6a1 - 0xb6fe
+SWIDTH2 0xb7a1 - 0xb7fe
+SWIDTH2 0xb8a1 - 0xb8fe
+SWIDTH2 0xb9a1 - 0xb9fe
+SWIDTH2 0xbaa1 - 0xbafe
+SWIDTH2 0xbba1 - 0xbbfe
+SWIDTH2 0xbca1 - 0xbcfe
+SWIDTH2 0xbda1 - 0xbdfe
+SWIDTH2 0xbea1 - 0xbefe
+SWIDTH2 0xbfa1 - 0xbffe
+SWIDTH2 0xc0a1 - 0xc0fe
+SWIDTH2 0xc1a1 - 0xc1fe
+SWIDTH2 0xc2a1 - 0xc2fe
+SWIDTH2 0xc3a1 - 0xc3fe
+SWIDTH2 0xc4a1 - 0xc4fe
+SWIDTH2 0xc5a1 - 0xc5fe
+SWIDTH2 0xc6a1 - 0xc6fe
+SWIDTH2 0xc7a1 - 0xc7fe
+SWIDTH2 0xc8a1 - 0xc8fe
+SWIDTH2 0xc9a1 - 0xc9fe
+SWIDTH2 0xcaa1 - 0xcafe
+SWIDTH2 0xcba1 - 0xcbfe
+SWIDTH2 0xcca1 - 0xccfe
+SWIDTH2 0xcda1 - 0xcdfe
+SWIDTH2 0xcea1 - 0xcefe
+SWIDTH2 0xcfa1 - 0xcfd3
+SWIDTH2 0xd0a1 - 0xd0fe
+SWIDTH2 0xd1a1 - 0xd1fe
+SWIDTH2 0xd2a1 - 0xd2fe
+SWIDTH2 0xd3a1 - 0xd3fe
+SWIDTH2 0xd4a1 - 0xd4fe
+SWIDTH2 0xd5a1 - 0xd5fe
+SWIDTH2 0xd6a1 - 0xd6fe
+SWIDTH2 0xd7a1 - 0xd7fe
+SWIDTH2 0xd8a1 - 0xd8fe
+SWIDTH2 0xd9a1 - 0xd9fe
+SWIDTH2 0xdaa1 - 0xdafe
+SWIDTH2 0xdba1 - 0xdbfe
+SWIDTH2 0xdca1 - 0xdcfe
+SWIDTH2 0xdda1 - 0xddfe
+SWIDTH2 0xdea1 - 0xdefe
+SWIDTH2 0xdfa1 - 0xdffe
+SWIDTH2 0xe0a1 - 0xe0fe
+SWIDTH2 0xe1a1 - 0xe1fe
+SWIDTH2 0xe2a1 - 0xe2fe
+SWIDTH2 0xe3a1 - 0xe3fe
+SWIDTH2 0xe4a1 - 0xe4fe
+SWIDTH2 0xe5a1 - 0xe5fe
+SWIDTH2 0xe6a1 - 0xe6fe
+SWIDTH2 0xe7a1 - 0xe7fe
+SWIDTH2 0xe8a1 - 0xe8fe
+SWIDTH2 0xe9a1 - 0xe9fe
+SWIDTH2 0xeaa1 - 0xeafe
+SWIDTH2 0xeba1 - 0xebfe
+SWIDTH2 0xeca1 - 0xecfe
+SWIDTH2 0xeda1 - 0xedfe
+SWIDTH2 0xeea1 - 0xeefe
+SWIDTH2 0xefa1 - 0xeffe
+SWIDTH2 0xf0a1 - 0xf0fe
+SWIDTH2 0xf1a1 - 0xf1fe
+SWIDTH2 0xf2a1 - 0xf2fe
+SWIDTH2 0xf3a1 - 0xf3fe
+SWIDTH2 0xf4a1 - 0xf4fe
+SWIDTH2 0xf5a1 - 0xf5fe
+SWIDTH2 0xf6a1 - 0xf6fe
+SWIDTH2 0xf7a1 - 0xf7fe
diff --git a/share/mklocale/zh_HK.Big5HKSCS.src b/share/mklocale/zh_HK.Big5HKSCS.src
new file mode 100644
index 0000000..aa2600e
--- /dev/null
+++ b/share/mklocale/zh_HK.Big5HKSCS.src
@@ -0,0 +1,257 @@
+/*
+ * big5hkscs first byte: 81-FE
+ * second byte: 40-7E, A1-FE
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "GBK"
+/* VARIABLE BIG5 character set */
+
+/*
+ * ASCII
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' >
+MAPLOWER < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' >
+MAPUPPER < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 >
+TODIGIT < 'a' - 'f' : 10 >
+
+/*
+ * the real thing
+ */
+IDEOGRAM 0x8840 - 0x887e 0x88a1 - 0x88aa
+IDEOGRAM 0x8940 - 0x8941 0x8943 0x8946 - 0x8949 0x894c - 0x897e
+IDEOGRAM 0x89a1 - 0x89a6 0x89ab - 0x89ae 0x89b0 - 0x89b2 0x89b5 - 0x89bf
+IDEOGRAM 0x89c1 - 0x89c3 0x89c5 - 0x89fe
+IDEOGRAM 0x8a40 0x8a41 0x8a43 - 0x8a62 0x8a64 - 0x8a74 0x8a76 - 0x8a7e
+IDEOGRAM 0x8aa1 - 0x8aaa 0x8aac - 0x8ab0 0x8ab2 - 0x8ab9 0x8abb - 0x8ac7
+IDEOGRAM 0x8ac9 - 0x8acc 0x8ace - 0x8adc 0x8adf - 0x8af4 0x8af6 - 0x8afe
+IDEOGRAM 0x8b40 - 0x8b53 0x8b55 - 0x8b7e 0x8ba1 - 0x8bdc 0x8bde - 0x8bfd
+IDEOGRAM 0x8c40 - 0x8c61 0x8c63 - 0x8c7e 0x8ca1 - 0x8ca5 0x8ca7 - 0x8cdc
+IDEOGRAM 0x8d60 - 0x8d7e 0x8da1 - 0x8ddc
+IDEOGRAM 0x8e40 - 0x8e68 0x8e6a - 0x8e6e 0x8e70 - 0x8e7d 0x8ea1 - 0x8eaa
+IDEOGRAM 0x8eac - 0x8eb3 0x8eb5 - 0x8ecc 0x8ece 0x8ecf 0x8ed1 - 0x8efe
+IDEOGRAM 0x8f40 - 0x8f56 0x8f58 - 0x8f68 0x8f6a - 0x8f6d 0x8f6f - 0x8f7e
+IDEOGRAM 0x8fa1 - 0x8fca 0x8fcd - 0x8ffd
+IDEOGRAM 0x9040 - 0x906c 0x906e - 0x9079 0x907b - 0x907e 0x90a1 - 0x90db
+IDEOGRAM 0x90dd - 0x90f0 0x90f2 - 0x90fe
+IDEOGRAM 0x9140 - 0x917e 0x91a1 - 0x91be 0x91c0 - 0x91ef
+IDEOGRAM 0x9240 - 0x9242 0x9245 - 0x927e 0x92a1 - 0x92ae
+IDEOGRAM 0x92b3 - 0x92c7 0x92c8 - 0x92d0 0x92d2 - 0x92fe
+IDEOGRAM 0x9340 - 0x937e 0x93a1 - 0x93fe
+IDEOGRAM 0x9440 - 0x9446 0x9448 - 0x947e 0x94a1 - 0x94c9 0x94cb - 0x94fe
+IDEOGRAM 0x9540 - 0x957e 0x95a1 - 0x95d8 0x95da - 0x95fe
+IDEOGRAM 0x9640 - 0x9643 0x9645 - 0x967e 0x96a1 - 0x96ec
+IDEOGRAM 0x96ee - 0x96fb 0x96fd - 0x96fe
+IDEOGRAM 0x9740 - 0x977e 0x97a1 - 0x97fe
+IDEOGRAM 0x9840 - 0x987e 0x98a1 - 0x98fe
+IDEOGRAM 0x9940 - 0x997e 0x99a1 - 0x99fe
+IDEOGRAM 0x9a40 - 0x9a7e 0x9aa1 - 0x9afe
+IDEOGRAM 0x9b40 - 0x9b60 0x9b62 - 0x9b75 0x9b77 0x9b79 0x9b7a
+IDEOGRAM 0x9b7c - 0x9b7e 0x9ba1 - 0x9bc5 0x9bc7 - 0x9bdd
+IDEOGRAM 0x9bdf - 0x9beb 0x9bed - 0x9bf5 0x9bf7 - 0x9bfe
+IDEOGRAM 0x9c40 0x9c41 0x9c43 - 0x9c52 0x9c54 - 0x9c61 0x9c63 - 0x9c67
+IDEOGRAM 0x9c69 0x9c6a 0x9c6c - 0x9c76 0x9c78 - 0x9c7e 0x9ca1 - 0x9cbb
+IDEOGRAM 0x9cbe - 0x9ccf 0x9cd1 - 0x9cfe
+IDEOGRAM 0x9d40 - 0x9d56 0x9d58 0x9d59 0x9d5b - 0x9d7e
+IDEOGRAM 0x9da1 - 0x9dc3 0x9dc5 - 0x9dfe
+IDEOGRAM 0x9e40 - 0x9e7e 0x9ea1 - 0x9ea8 0x9eaa 0x9eab 0x9ead - 0x9ec3
+IDEOGRAM 0x9ec5 - 0x9eee 0x9ef0 - 0x9ef3 0x9ef5 - 0x9efc 0x9efe
+IDEOGRAM 0x9f40 - 0x9f4d 0x9f4f - 0x9f5f 0x9f61 - 0x9f65 0x9f67 - 0x9f7e
+IDEOGRAM 0x9fa1 - 0x9fac 0x9fae - 0x9fb0 0x9fb2 - 0x9fbf 0x9fc1 - 0x9fc7
+IDEOGRAM 0x9fc9 0x9fca 0x9fcc - 0x9fd7 0x9fd9 0x9fdb - 0x9fe5
+IDEOGRAM 0x9fe7 - 0x9fe9 0x9feb - 0x9fee 0x9ff0 - 0x9ffe
+IDEOGRAM 0xa040 - 0xa053 0xa055 0xa056 0xa058 0xa059 0xa05b - 0xa061
+IDEOGRAM 0xa064 - 0xa071 0xa073 - 0xa076 0xa078 - 0xa07e
+IDEOGRAM 0xa0a1 - 0xa0a4 0xa0a6 - 0xa0ac 0xa0ae 0xa0b0 - 0xa0d2
+IDEOGRAM 0xa0d4 0xa0d6 - 0xa0de 0xa0e0 0xa0e2 0xa0e3 0xa0e5 - 0xa0fe
+
+PUNCT 0xa141 - 0xa17e 0xa1a1 - 0xa1ac
+
+SPECIAL 0xa1ad - 0xa1fe 0xa240 - 0xa27e 0xa2a1 - 0xa2ae
+
+/* full width 0 1 2 .. 9 */
+/* ?DIGIT 0xa2af - 0xa2b8 */
+
+/* map these (SuChou Code (12) and Roman (I II etc.) number (10)) to digits */
+TODIGIT < 0xa2b9 - 0xa2c2 : 1 >
+TODIGIT < 0xa2c3 - 0xa2ce : 1 >
+
+/* full width A .. Z and a .. z */
+/* note the lower case alphabets are not continuous */
+UPPER 0xa2cf - 0xa2e8
+LOWER 0xa2e9 - 0xa2fe 0xa340 - 0xa343
+
+/* we have to got two line for each 'cause they are not continuous */
+MAPLOWER < 0xa2cf - 0xa2e4 : 0xa2e9 > < 0xa2e5 - 0xa2e8 : 0xa340 >
+MAPLOWER < 0xa2e9 - 0xa2fe : 0xa2e9 > < 0xa340 - 0xa343 : 0xa340 >
+MAPUPPER < 0xa2cf - 0xa2e4 : 0xa2cf > < 0xa2e5 - 0xa2e8 : 0xa2e5 >
+MAPUPPER < 0xa2e9 - 0xa2fe : 0xa2cf > < 0xa340 - 0xa343 : 0xa2e5 >
+
+/* ?XDIGIT 0xa2cf - 0xa2d4 0xa2e9 - 0xa2ee */
+
+SPACE 0xa3bc
+BLANK 0xa3bc
+/* bopomofo symbols */
+PHONOGRAM 0xa374 - 0xa37e 0xa3a1 - 0xa3bb
+/* tone symbols */
+PHONOGRAM 0xa3bd - 0xa3bf
+/* control */
+CONTROL 0xa3c0 - 0xa3fe
+
+/* greek */
+UPPER 0xa344 - 0xa35b
+LOWER 0xa35c - 0xa373
+MAPUPPER < 0xa344 - 0xa35b : 0xa344 > < 0xa35c - 0xa373 : 0xa344 >
+MAPLOWER < 0xa344 - 0xa35b : 0xa35c > < 0xa35c - 0xa373 : 0xa35c >
+
+/* cyrillic (russian etc) */
+UPPER 0xc7f3 - 0xc7fe 0xc840 - 0xc854
+LOWER 0xc855 - 0xc875
+MAPUPPER < 0xc7f3 - 0xc7fe : 0xc7f3 > < 0xc840 - 0xc854 : 0xc840 >
+MAPUPPER < 0xc855 - 0xc860 : 0xc7f3 > < 0xc861 - 0xc875 : 0xc840 >
+MAPLOWER < 0xc7f3 - 0xc7fe : 0xc855 > < 0xc840 - 0xc854 : 0xc861 >
+MAPLOWER < 0xc855 - 0xc860 : 0xc855 > < 0xc861 - 0xc875 : 0xc861 >
+
+IDEOGRAM 0xa440 - 0xa47e 0xa4a1 - 0xa4fe
+IDEOGRAM 0xa540 - 0xa57e 0xa5a1 - 0xa5fe
+IDEOGRAM 0xa640 - 0xa67e 0xa6a1 - 0xa6fe
+IDEOGRAM 0xa740 - 0xa77e 0xa7a1 - 0xa7fe
+IDEOGRAM 0xa840 - 0xa87e 0xa8a1 - 0xa8fe
+IDEOGRAM 0xa940 - 0xa97e 0xa9a1 - 0xa9fe
+IDEOGRAM 0xaa40 - 0xaa7e 0xaaa1 - 0xaafe
+IDEOGRAM 0xab40 - 0xab7e 0xaba1 - 0xabfe
+IDEOGRAM 0xac40 - 0xac7e 0xaca1 - 0xacfe
+IDEOGRAM 0xad40 - 0xad7e 0xada1 - 0xadfe
+IDEOGRAM 0xae40 - 0xae7e 0xaea1 - 0xaefe
+IDEOGRAM 0xaf40 - 0xaf7e 0xafa1 - 0xaffe
+IDEOGRAM 0xb040 - 0xb07e 0xb0a1 - 0xb0fe
+IDEOGRAM 0xb140 - 0xb17e 0xb1a1 - 0xb1fe
+IDEOGRAM 0xb240 - 0xb27e 0xb2a1 - 0xb2fe
+IDEOGRAM 0xb340 - 0xb37e 0xb3a1 - 0xb3fe
+IDEOGRAM 0xb440 - 0xb47e 0xb4a1 - 0xb4fe
+IDEOGRAM 0xb540 - 0xb57e 0xb5a1 - 0xb5fe
+IDEOGRAM 0xb640 - 0xb67e 0xb6a1 - 0xb6fe
+IDEOGRAM 0xb740 - 0xb77e 0xb7a1 - 0xb7fe
+IDEOGRAM 0xb840 - 0xb87e 0xb8a1 - 0xb8fe
+IDEOGRAM 0xb940 - 0xb97e 0xb9a1 - 0xb9fe
+IDEOGRAM 0xba40 - 0xba7e 0xbaa1 - 0xbafe
+IDEOGRAM 0xbb40 - 0xbb7e 0xbba1 - 0xbbfe
+IDEOGRAM 0xbc40 - 0xbc7e 0xbca1 - 0xbcfe
+IDEOGRAM 0xbd40 - 0xbd7e 0xbda1 - 0xbdfe
+IDEOGRAM 0xbe40 - 0xbe7e 0xbea1 - 0xbefe
+IDEOGRAM 0xbf40 - 0xbf7e 0xbfa1 - 0xbffe
+IDEOGRAM 0xc040 - 0xc07e 0xc0a1 - 0xc0fe
+IDEOGRAM 0xc140 - 0xc17e 0xc1a1 - 0xc1fe
+IDEOGRAM 0xc240 - 0xc27e 0xc2a1 - 0xc2fe
+IDEOGRAM 0xc340 - 0xc37e 0xc3a1 - 0xc3fe
+IDEOGRAM 0xc440 - 0xc47e 0xc4a1 - 0xc4fe
+IDEOGRAM 0xc540 - 0xc57e 0xc5a1 - 0xc5fe
+IDEOGRAM 0xc640 - 0xc67e
+
+IDEOGRAM 0xc940 - 0xc97e 0xc9a1 - 0xc9fe
+IDEOGRAM 0xca40 - 0xca7e 0xcaa1 - 0xcafe
+IDEOGRAM 0xcb40 - 0xcb7e 0xcba1 - 0xcbfe
+IDEOGRAM 0xcc40 - 0xcc7e 0xcca1 - 0xccfe
+IDEOGRAM 0xcd40 - 0xcd7e 0xcda1 - 0xcdfe
+IDEOGRAM 0xce40 - 0xce7e 0xcea1 - 0xcefe
+IDEOGRAM 0xcf40 - 0xcf7e 0xcfa1 - 0xcffe
+IDEOGRAM 0xd040 - 0xd07e 0xd0a1 - 0xd0fe
+IDEOGRAM 0xd140 - 0xd17e 0xd1a1 - 0xd1fe
+IDEOGRAM 0xd240 - 0xd27e 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd340 - 0xd37e 0xd3a1 - 0xd3fe
+IDEOGRAM 0xd440 - 0xd47e 0xd4a1 - 0xd4fe
+IDEOGRAM 0xd540 - 0xd57e 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd640 - 0xd67e 0xd6a1 - 0xd6fe
+IDEOGRAM 0xd740 - 0xd77e 0xd7a1 - 0xd7fe
+IDEOGRAM 0xd840 - 0xd87e 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd940 - 0xd97e 0xd9a1 - 0xd9fe
+IDEOGRAM 0xda40 - 0xda7e 0xdaa1 - 0xdafe
+IDEOGRAM 0xdb40 - 0xdb7e 0xdba1 - 0xdbfe
+IDEOGRAM 0xdc40 - 0xdc7e 0xdca1 - 0xdcfe
+IDEOGRAM 0xdd40 - 0xdd7e 0xdda1 - 0xddfe
+IDEOGRAM 0xde40 - 0xde7e 0xdea1 - 0xdefe
+IDEOGRAM 0xdf40 - 0xdf7e 0xdfa1 - 0xdffe
+IDEOGRAM 0xe040 - 0xe07e 0xe0a1 - 0xe0fe
+IDEOGRAM 0xe140 - 0xe17e 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe240 - 0xe27e 0xe2a1 - 0xe2fe
+IDEOGRAM 0xe340 - 0xe37e 0xe3a1 - 0xe3fe
+IDEOGRAM 0xe440 - 0xe47e 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe540 - 0xe57e 0xe5a1 - 0xe5fe
+IDEOGRAM 0xe640 - 0xe67e 0xe6a1 - 0xe6fe
+IDEOGRAM 0xe740 - 0xe77e 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe840 - 0xe87e 0xe8a1 - 0xe8fe
+IDEOGRAM 0xe940 - 0xe97e 0xe9a1 - 0xe9fe
+IDEOGRAM 0xea40 - 0xea7e 0xeaa1 - 0xeafe
+IDEOGRAM 0xeb40 - 0xeb7e 0xeba1 - 0xebfe
+IDEOGRAM 0xec40 - 0xec7e 0xeca1 - 0xecfe
+IDEOGRAM 0xed40 - 0xed7e 0xeda1 - 0xedfe
+IDEOGRAM 0xee40 - 0xee7e 0xeea1 - 0xeefe
+IDEOGRAM 0xef40 - 0xef7e 0xefa1 - 0xeffe
+IDEOGRAM 0xf040 - 0xf07e 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf140 - 0xf17e 0xf1a1 - 0xf1fe
+IDEOGRAM 0xf240 - 0xf27e 0xf2a1 - 0xf2fe
+IDEOGRAM 0xf340 - 0xf37e 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf440 - 0xf47e 0xf4a1 - 0xf4fe
+IDEOGRAM 0xf540 - 0xf57e 0xf5a1 - 0xf5fe
+IDEOGRAM 0xf640 - 0xf67e 0xf6a1 - 0xf6fe
+IDEOGRAM 0xf740 - 0xf77e 0xf7a1 - 0xf7fe
+IDEOGRAM 0xf840 - 0xf87e 0xf8a1 - 0xf8fe
+IDEOGRAM 0xf940 - 0xf97e 0xf9a1 - 0xf9dc
+
+/* Eten external charset 0xc6a1 - 0xc8d3 */
+
+/* lots strange numbers */
+SPECIAL 0xc6a1 - 0xc6be
+
+TODIGIT < 0xc6a1 - 0xc6aa : 1 > < 0xc6ab - 0xc6b4 : 1 >
+TODIGIT < 0xc6b5 - 0xc6be : 1>
+
+/* these are HanZi Radicals */
+SPECIAL 0xc6bf - 0xc6ce 0xc6d0 - 0xc6d2 0xc6d4 0xc6d6
+SPECIAL 0xc879 - 0xc87e 0xc8a1 - 0xc8a4 0xc8d4 - 0xc8f1
+
+/* who knows what these are ... */
+SPECIAL 0xc6d8 - 0xc6dd 0xc6e0 - 0xc6e6 0xc876 - 0xc878
+
+/* hiragana */
+SPECIAL 0xc6e7 - 0xc6fe 0xc740 - 0xc77a
+
+/* katakana */
+SPECIAL 0xc77b - 0xc77e 0xc7a1 - 0xc7f2
+
+/* various Japanese symbols */
+SPECIAL 0xc8cd - 0xc8d3
+
+/* latin small letter */
+SPECIAL 0xc8fe - 0xc8fe
+
+/* line drawing glyphs */
+SPECIAL 0xf9dd - 0xf9fe
+
+
+IDEOGRAM 0xfa40 - 0xfa5e 0xfa60 - 0xfa65 0xfa67 - 0xfa7e 0xfaa1 - 0xfabc
+IDEOGRAM 0xfabd - 0xfac4 0xfac6 - 0xfad4 0xfad6 - 0xfafe
+IDEOGRAM 0xfb40 - 0xfb47 0xfb49 - 0xfb7e 0xfba1 - 0xfbb7 0xfbb9 - 0xfbf2
+IDEOGRAM 0xfbf4 - 0xfbf8 0xfbfa - 0xfbfe
+IDEOGRAM 0xfc40 - 0xfc4e 0xfc50 - 0xfc6b 0xfc6d - 0xfc7e 0xfca1 - 0xfcb8
+IDEOGRAM 0xfcba - 0xfce1 0xfce3 - 0xfcf0 0xfcf2 - 0xfcfe
+IDEOGRAM 0xfd40 - 0xfd7e 0xfda1 - 0xfdb6 0xfdb9 0xfdba 0xfdbc - 0xfdf0
+IDEOGRAM 0xfdf2 - 0xfdfe
+IDEOGRAM 0xfe40 - 0xfe51 0xfe53 - 0xfe7e 0xfea1 - 0xfea9 0xfeab - 0xfbdc
+IDEOGRAM 0xfede - 0xfefe
diff --git a/share/mklocale/zh_TW.Big5.src b/share/mklocale/zh_TW.Big5.src
new file mode 100644
index 0000000..6671c87
--- /dev/null
+++ b/share/mklocale/zh_TW.Big5.src
@@ -0,0 +1,308 @@
+/*
+ * big5 first byte: A1-FE
+ * second byte: 40-7E, A1-FE
+ *
+ * $FreeBSD$
+ */
+
+ENCODING "BIG5"
+/* VARIABLE BIG5 character set */
+
+/*
+ * ASCII
+ */
+ALPHA 'A' - 'Z' 'a' - 'z'
+CONTROL 0x00 - 0x1f 0x7f
+DIGIT '0' - '9'
+GRAPH 0x21 - 0x7e
+LOWER 'a' - 'z'
+PUNCT 0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e
+SPACE 0x09 - 0x0d 0x20
+UPPER 'A' - 'Z'
+XDIGIT '0' - '9' 'a' - 'f' 'A' - 'F'
+BLANK ' ' '\t'
+PRINT 0x20 - 0x7e
+SWIDTH1 0x20 - 0x7e
+
+MAPLOWER < 'A' - 'Z' : 'a' >
+MAPLOWER < 'a' - 'z' : 'a' >
+MAPUPPER < 'A' - 'Z' : 'A' >
+MAPUPPER < 'a' - 'z' : 'A' >
+TODIGIT < '0' - '9' : 0 >
+TODIGIT < 'A' - 'F' : 10 >
+TODIGIT < 'a' - 'f' : 10 >
+
+/*
+ * the real thing
+ */
+
+PUNCT 0xa141 - 0xa17e 0xa1a1 - 0xa1ac
+SWIDTH2 0xa141 - 0xa17e 0xa1a1 - 0xa1ac
+
+SPECIAL 0xa1ad - 0xa1fe 0xa240 - 0xa27e 0xa2a1 - 0xa2ae
+SWIDTH2 0xa1ad - 0xa1fe 0xa240 - 0xa27e 0xa2a1 - 0xa2ae
+
+/* full width 0 1 2 .. 9 */
+/* ?DIGIT 0xa2af - 0xa2b8 */
+/* SWIDTH2 0xa2af - 0xa2b8 */
+
+/* map these (SuChou Code (12) and Roman (I II etc.) number (10)) to digits */
+TODIGIT < 0xa2b9 - 0xa2c2 : 1 >
+TODIGIT < 0xa2c3 - 0xa2ce : 1 >
+
+/* full width A .. Z and a .. z */
+/* note the lower case alphabets are not continuous */
+UPPER 0xa2cf - 0xa2e8
+LOWER 0xa2e9 - 0xa2fe 0xa340 - 0xa343
+SWIDTH2 0xa2cf - 0xa2e8
+SWIDTH2 0xa2e9 - 0xa2fe 0xa340 - 0xa343
+
+/* we have to got two line for each 'cause they are not continuous */
+MAPLOWER < 0xa2cf - 0xa2e4 : 0xa2e9 > < 0xa2e5 - 0xa2e8 : 0xa340 >
+MAPLOWER < 0xa2e9 - 0xa2fe : 0xa2e9 > < 0xa340 - 0xa343 : 0xa340 >
+MAPUPPER < 0xa2cf - 0xa2e4 : 0xa2cf > < 0xa2e5 - 0xa2e8 : 0xa2e5 >
+MAPUPPER < 0xa2e9 - 0xa2fe : 0xa2cf > < 0xa340 - 0xa343 : 0xa2e5 >
+
+/* ?XDIGIT 0xa2cf - 0xa2d4 0xa2e9 - 0xa2ee */
+/* SWIDTH2 0xa2cf - 0xa2d4 0xa2e9 - 0xa2ee */
+
+SPACE 0xa3bc
+BLANK 0xa3bc
+SWIDTH2 0xa3bc
+/* bopomofo symbols */
+PHONOGRAM 0xa374 - 0xa37e 0xa3a1 - 0xa3bb
+SWIDTH2 0xa374 - 0xa37e 0xa3a1 - 0xa3bb
+/* tone symbols */
+PHONOGRAM 0xa3bd - 0xa3bf
+SWIDTH2 0xa3bd - 0xa3bf
+/* control */
+CONTROL 0xa3c0 - 0xa3fe
+
+/* greek */
+UPPER 0xa344 - 0xa35b
+LOWER 0xa35c - 0xa373
+SWIDTH2 0xa344 - 0xa35b
+SWIDTH2 0xa35c - 0xa373
+MAPUPPER < 0xa344 - 0xa35b : 0xa344 > < 0xa35c - 0xa373 : 0xa344 >
+MAPLOWER < 0xa344 - 0xa35b : 0xa35c > < 0xa35c - 0xa373 : 0xa35c >
+
+/* cyrillic (russian etc) */
+UPPER 0xc7f3 - 0xc7fe 0xc840 - 0xc854
+LOWER 0xc855 - 0xc875
+SWIDTH2 0xc7f3 - 0xc7fe 0xc840 - 0xc854
+SWIDTH2 0xc855 - 0xc875
+MAPUPPER < 0xc7f3 - 0xc7fe : 0xc7f3 > < 0xc840 - 0xc854 : 0xc840 >
+MAPUPPER < 0xc855 - 0xc860 : 0xc7f3 > < 0xc861 - 0xc875 : 0xc840 >
+MAPLOWER < 0xc7f3 - 0xc7fe : 0xc855 > < 0xc840 - 0xc854 : 0xc861 >
+MAPLOWER < 0xc855 - 0xc860 : 0xc855 > < 0xc861 - 0xc875 : 0xc861 >
+
+IDEOGRAM 0xa440 - 0xa47e 0xa4a1 - 0xa4fe
+IDEOGRAM 0xa540 - 0xa57e 0xa5a1 - 0xa5fe
+IDEOGRAM 0xa640 - 0xa67e 0xa6a1 - 0xa6fe
+IDEOGRAM 0xa740 - 0xa77e 0xa7a1 - 0xa7fe
+IDEOGRAM 0xa840 - 0xa87e 0xa8a1 - 0xa8fe
+IDEOGRAM 0xa940 - 0xa97e 0xa9a1 - 0xa9fe
+IDEOGRAM 0xaa40 - 0xaa7e 0xaaa1 - 0xaafe
+IDEOGRAM 0xab40 - 0xab7e 0xaba1 - 0xabfe
+IDEOGRAM 0xac40 - 0xac7e 0xaca1 - 0xacfe
+IDEOGRAM 0xad40 - 0xad7e 0xada1 - 0xadfe
+IDEOGRAM 0xae40 - 0xae7e 0xaea1 - 0xaefe
+IDEOGRAM 0xaf40 - 0xaf7e 0xafa1 - 0xaffe
+IDEOGRAM 0xb040 - 0xb07e 0xb0a1 - 0xb0fe
+IDEOGRAM 0xb140 - 0xb17e 0xb1a1 - 0xb1fe
+IDEOGRAM 0xb240 - 0xb27e 0xb2a1 - 0xb2fe
+IDEOGRAM 0xb340 - 0xb37e 0xb3a1 - 0xb3fe
+IDEOGRAM 0xb440 - 0xb47e 0xb4a1 - 0xb4fe
+IDEOGRAM 0xb540 - 0xb57e 0xb5a1 - 0xb5fe
+IDEOGRAM 0xb640 - 0xb67e 0xb6a1 - 0xb6fe
+IDEOGRAM 0xb740 - 0xb77e 0xb7a1 - 0xb7fe
+IDEOGRAM 0xb840 - 0xb87e 0xb8a1 - 0xb8fe
+IDEOGRAM 0xb940 - 0xb97e 0xb9a1 - 0xb9fe
+IDEOGRAM 0xba40 - 0xba7e 0xbaa1 - 0xbafe
+IDEOGRAM 0xbb40 - 0xbb7e 0xbba1 - 0xbbfe
+IDEOGRAM 0xbc40 - 0xbc7e 0xbca1 - 0xbcfe
+IDEOGRAM 0xbd40 - 0xbd7e 0xbda1 - 0xbdfe
+IDEOGRAM 0xbe40 - 0xbe7e 0xbea1 - 0xbefe
+IDEOGRAM 0xbf40 - 0xbf7e 0xbfa1 - 0xbffe
+IDEOGRAM 0xc040 - 0xc07e 0xc0a1 - 0xc0fe
+IDEOGRAM 0xc140 - 0xc17e 0xc1a1 - 0xc1fe
+IDEOGRAM 0xc240 - 0xc27e 0xc2a1 - 0xc2fe
+IDEOGRAM 0xc340 - 0xc37e 0xc3a1 - 0xc3fe
+IDEOGRAM 0xc440 - 0xc47e 0xc4a1 - 0xc4fe
+IDEOGRAM 0xc540 - 0xc57e 0xc5a1 - 0xc5fe
+IDEOGRAM 0xc640 - 0xc67e
+
+SWIDTH2 0xa440 - 0xa47e 0xa4a1 - 0xa4fe
+SWIDTH2 0xa540 - 0xa57e 0xa5a1 - 0xa5fe
+SWIDTH2 0xa640 - 0xa67e 0xa6a1 - 0xa6fe
+SWIDTH2 0xa740 - 0xa77e 0xa7a1 - 0xa7fe
+SWIDTH2 0xa840 - 0xa87e 0xa8a1 - 0xa8fe
+SWIDTH2 0xa940 - 0xa97e 0xa9a1 - 0xa9fe
+SWIDTH2 0xaa40 - 0xaa7e 0xaaa1 - 0xaafe
+SWIDTH2 0xab40 - 0xab7e 0xaba1 - 0xabfe
+SWIDTH2 0xac40 - 0xac7e 0xaca1 - 0xacfe
+SWIDTH2 0xad40 - 0xad7e 0xada1 - 0xadfe
+SWIDTH2 0xae40 - 0xae7e 0xaea1 - 0xaefe
+SWIDTH2 0xaf40 - 0xaf7e 0xafa1 - 0xaffe
+SWIDTH2 0xb040 - 0xb07e 0xb0a1 - 0xb0fe
+SWIDTH2 0xb140 - 0xb17e 0xb1a1 - 0xb1fe
+SWIDTH2 0xb240 - 0xb27e 0xb2a1 - 0xb2fe
+SWIDTH2 0xb340 - 0xb37e 0xb3a1 - 0xb3fe
+SWIDTH2 0xb440 - 0xb47e 0xb4a1 - 0xb4fe
+SWIDTH2 0xb540 - 0xb57e 0xb5a1 - 0xb5fe
+SWIDTH2 0xb640 - 0xb67e 0xb6a1 - 0xb6fe
+SWIDTH2 0xb740 - 0xb77e 0xb7a1 - 0xb7fe
+SWIDTH2 0xb840 - 0xb87e 0xb8a1 - 0xb8fe
+SWIDTH2 0xb940 - 0xb97e 0xb9a1 - 0xb9fe
+SWIDTH2 0xba40 - 0xba7e 0xbaa1 - 0xbafe
+SWIDTH2 0xbb40 - 0xbb7e 0xbba1 - 0xbbfe
+SWIDTH2 0xbc40 - 0xbc7e 0xbca1 - 0xbcfe
+SWIDTH2 0xbd40 - 0xbd7e 0xbda1 - 0xbdfe
+SWIDTH2 0xbe40 - 0xbe7e 0xbea1 - 0xbefe
+SWIDTH2 0xbf40 - 0xbf7e 0xbfa1 - 0xbffe
+SWIDTH2 0xc040 - 0xc07e 0xc0a1 - 0xc0fe
+SWIDTH2 0xc140 - 0xc17e 0xc1a1 - 0xc1fe
+SWIDTH2 0xc240 - 0xc27e 0xc2a1 - 0xc2fe
+SWIDTH2 0xc340 - 0xc37e 0xc3a1 - 0xc3fe
+SWIDTH2 0xc440 - 0xc47e 0xc4a1 - 0xc4fe
+SWIDTH2 0xc540 - 0xc57e 0xc5a1 - 0xc5fe
+SWIDTH2 0xc640 - 0xc67e
+
+IDEOGRAM 0xc940 - 0xc97e 0xc9a1 - 0xc9fe
+IDEOGRAM 0xca40 - 0xca7e 0xcaa1 - 0xcafe
+IDEOGRAM 0xcb40 - 0xcb7e 0xcba1 - 0xcbfe
+IDEOGRAM 0xcc40 - 0xcc7e 0xcca1 - 0xccfe
+IDEOGRAM 0xcd40 - 0xcd7e 0xcda1 - 0xcdfe
+IDEOGRAM 0xce40 - 0xce7e 0xcea1 - 0xcefe
+IDEOGRAM 0xcf40 - 0xcf7e 0xcfa1 - 0xcffe
+IDEOGRAM 0xd040 - 0xd07e 0xd0a1 - 0xd0fe
+IDEOGRAM 0xd140 - 0xd17e 0xd1a1 - 0xd1fe
+IDEOGRAM 0xd240 - 0xd27e 0xd2a1 - 0xd2fe
+IDEOGRAM 0xd340 - 0xd37e 0xd3a1 - 0xd3fe
+IDEOGRAM 0xd440 - 0xd47e 0xd4a1 - 0xd4fe
+IDEOGRAM 0xd540 - 0xd57e 0xd5a1 - 0xd5fe
+IDEOGRAM 0xd640 - 0xd67e 0xd6a1 - 0xd6fe
+IDEOGRAM 0xd740 - 0xd77e 0xd7a1 - 0xd7fe
+IDEOGRAM 0xd840 - 0xd87e 0xd8a1 - 0xd8fe
+IDEOGRAM 0xd940 - 0xd97e 0xd9a1 - 0xd9fe
+IDEOGRAM 0xda40 - 0xda7e 0xdaa1 - 0xdafe
+IDEOGRAM 0xdb40 - 0xdb7e 0xdba1 - 0xdbfe
+IDEOGRAM 0xdc40 - 0xdc7e 0xdca1 - 0xdcfe
+IDEOGRAM 0xdd40 - 0xdd7e 0xdda1 - 0xddfe
+IDEOGRAM 0xde40 - 0xde7e 0xdea1 - 0xdefe
+IDEOGRAM 0xdf40 - 0xdf7e 0xdfa1 - 0xdffe
+IDEOGRAM 0xe040 - 0xe07e 0xe0a1 - 0xe0fe
+IDEOGRAM 0xe140 - 0xe17e 0xe1a1 - 0xe1fe
+IDEOGRAM 0xe240 - 0xe27e 0xe2a1 - 0xe2fe
+IDEOGRAM 0xe340 - 0xe37e 0xe3a1 - 0xe3fe
+IDEOGRAM 0xe440 - 0xe47e 0xe4a1 - 0xe4fe
+IDEOGRAM 0xe540 - 0xe57e 0xe5a1 - 0xe5fe
+IDEOGRAM 0xe640 - 0xe67e 0xe6a1 - 0xe6fe
+IDEOGRAM 0xe740 - 0xe77e 0xe7a1 - 0xe7fe
+IDEOGRAM 0xe840 - 0xe87e 0xe8a1 - 0xe8fe
+IDEOGRAM 0xe940 - 0xe97e 0xe9a1 - 0xe9fe
+IDEOGRAM 0xea40 - 0xea7e 0xeaa1 - 0xeafe
+IDEOGRAM 0xeb40 - 0xeb7e 0xeba1 - 0xebfe
+IDEOGRAM 0xec40 - 0xec7e 0xeca1 - 0xecfe
+IDEOGRAM 0xed40 - 0xed7e 0xeda1 - 0xedfe
+IDEOGRAM 0xee40 - 0xee7e 0xeea1 - 0xeefe
+IDEOGRAM 0xef40 - 0xef7e 0xefa1 - 0xeffe
+IDEOGRAM 0xf040 - 0xf07e 0xf0a1 - 0xf0fe
+IDEOGRAM 0xf140 - 0xf17e 0xf1a1 - 0xf1fe
+IDEOGRAM 0xf240 - 0xf27e 0xf2a1 - 0xf2fe
+IDEOGRAM 0xf340 - 0xf37e 0xf3a1 - 0xf3fe
+IDEOGRAM 0xf440 - 0xf47e 0xf4a1 - 0xf4fe
+IDEOGRAM 0xf540 - 0xf57e 0xf5a1 - 0xf5fe
+IDEOGRAM 0xf640 - 0xf67e 0xf6a1 - 0xf6fe
+IDEOGRAM 0xf740 - 0xf77e 0xf7a1 - 0xf7fe
+IDEOGRAM 0xf840 - 0xf87e 0xf8a1 - 0xf8fe
+IDEOGRAM 0xf940 - 0xf97e 0xf9a1 - 0xf9dc
+
+SWIDTH2 0xc940 - 0xc97e 0xc9a1 - 0xc9fe
+SWIDTH2 0xca40 - 0xca7e 0xcaa1 - 0xcafe
+SWIDTH2 0xcb40 - 0xcb7e 0xcba1 - 0xcbfe
+SWIDTH2 0xcc40 - 0xcc7e 0xcca1 - 0xccfe
+SWIDTH2 0xcd40 - 0xcd7e 0xcda1 - 0xcdfe
+SWIDTH2 0xce40 - 0xce7e 0xcea1 - 0xcefe
+SWIDTH2 0xcf40 - 0xcf7e 0xcfa1 - 0xcffe
+SWIDTH2 0xd040 - 0xd07e 0xd0a1 - 0xd0fe
+SWIDTH2 0xd140 - 0xd17e 0xd1a1 - 0xd1fe
+SWIDTH2 0xd240 - 0xd27e 0xd2a1 - 0xd2fe
+SWIDTH2 0xd340 - 0xd37e 0xd3a1 - 0xd3fe
+SWIDTH2 0xd440 - 0xd47e 0xd4a1 - 0xd4fe
+SWIDTH2 0xd540 - 0xd57e 0xd5a1 - 0xd5fe
+SWIDTH2 0xd640 - 0xd67e 0xd6a1 - 0xd6fe
+SWIDTH2 0xd740 - 0xd77e 0xd7a1 - 0xd7fe
+SWIDTH2 0xd840 - 0xd87e 0xd8a1 - 0xd8fe
+SWIDTH2 0xd940 - 0xd97e 0xd9a1 - 0xd9fe
+SWIDTH2 0xda40 - 0xda7e 0xdaa1 - 0xdafe
+SWIDTH2 0xdb40 - 0xdb7e 0xdba1 - 0xdbfe
+SWIDTH2 0xdc40 - 0xdc7e 0xdca1 - 0xdcfe
+SWIDTH2 0xdd40 - 0xdd7e 0xdda1 - 0xddfe
+SWIDTH2 0xde40 - 0xde7e 0xdea1 - 0xdefe
+SWIDTH2 0xdf40 - 0xdf7e 0xdfa1 - 0xdffe
+SWIDTH2 0xe040 - 0xe07e 0xe0a1 - 0xe0fe
+SWIDTH2 0xe140 - 0xe17e 0xe1a1 - 0xe1fe
+SWIDTH2 0xe240 - 0xe27e 0xe2a1 - 0xe2fe
+SWIDTH2 0xe340 - 0xe37e 0xe3a1 - 0xe3fe
+SWIDTH2 0xe440 - 0xe47e 0xe4a1 - 0xe4fe
+SWIDTH2 0xe540 - 0xe57e 0xe5a1 - 0xe5fe
+SWIDTH2 0xe640 - 0xe67e 0xe6a1 - 0xe6fe
+SWIDTH2 0xe740 - 0xe77e 0xe7a1 - 0xe7fe
+SWIDTH2 0xe840 - 0xe87e 0xe8a1 - 0xe8fe
+SWIDTH2 0xe940 - 0xe97e 0xe9a1 - 0xe9fe
+SWIDTH2 0xea40 - 0xea7e 0xeaa1 - 0xeafe
+SWIDTH2 0xeb40 - 0xeb7e 0xeba1 - 0xebfe
+SWIDTH2 0xec40 - 0xec7e 0xeca1 - 0xecfe
+SWIDTH2 0xed40 - 0xed7e 0xeda1 - 0xedfe
+SWIDTH2 0xee40 - 0xee7e 0xeea1 - 0xeefe
+SWIDTH2 0xef40 - 0xef7e 0xefa1 - 0xeffe
+SWIDTH2 0xf040 - 0xf07e 0xf0a1 - 0xf0fe
+SWIDTH2 0xf140 - 0xf17e 0xf1a1 - 0xf1fe
+SWIDTH2 0xf240 - 0xf27e 0xf2a1 - 0xf2fe
+SWIDTH2 0xf340 - 0xf37e 0xf3a1 - 0xf3fe
+SWIDTH2 0xf440 - 0xf47e 0xf4a1 - 0xf4fe
+SWIDTH2 0xf540 - 0xf57e 0xf5a1 - 0xf5fe
+SWIDTH2 0xf640 - 0xf67e 0xf6a1 - 0xf6fe
+SWIDTH2 0xf740 - 0xf77e 0xf7a1 - 0xf7fe
+SWIDTH2 0xf840 - 0xf87e 0xf8a1 - 0xf8fe
+SWIDTH2 0xf940 - 0xf97e 0xf9a1 - 0xf9dc
+
+/* Eten external charset 0xc6a1 - 0xc8d3 */
+
+/* lots strange numbers */
+SPECIAL 0xc6a1 - 0xc6be
+SWIDTH2 0xc6a1 - 0xc6be
+
+TODIGIT < 0xc6a1 - 0xc6aa : 1 > < 0xc6ab - 0xc6b4 : 1 >
+TODIGIT < 0xc6b5 - 0xc6be : 1>
+
+/* these are HanZi Radicals */
+SPECIAL 0xc6bf - 0xc6d7 0xc879 - 0xc87e 0xc8a1 - 0xc8a4
+SWIDTH2 0xc6bf - 0xc6d7 0xc879 - 0xc87e 0xc8a1 - 0xc8a4
+
+/* who knows what these are ... */
+SPECIAL 0xc6d8 - 0xc6e6 0xc876 - 0xc878
+SWIDTH2 0xc6d8 - 0xc6e6 0xc876 - 0xc878
+
+/* hiragana */
+SPECIAL 0xc6e7 - 0xc6fe 0xc740 - 0xc77a
+SWIDTH2 0xc6e7 - 0xc6fe 0xc740 - 0xc77a
+
+/* katakana */
+SPECIAL 0xc77b - 0xc77e 0xc7a1 - 0xc7f2
+SWIDTH2 0xc77b - 0xc77e 0xc7a1 - 0xc7f2
+
+/* ZIP code (in Japan) */
+SPECIAL 0xc8a5 - 0xc8cc
+SWIDTH2 0xc8a5 - 0xc8cc
+
+/* various Japanese symbols */
+SPECIAL 0xc8cd - 0xc8d3
+SWIDTH2 0xc8cd - 0xc8d3
+
+/* line drawing glyphs */
+SPECIAL 0xf9dd - 0xf9ff
+SWIDTH2 0xf9dd - 0xf9ff
+
+
diff --git a/share/monetdef/Makefile b/share/monetdef/Makefile
new file mode 100644
index 0000000..3c72505
--- /dev/null
+++ b/share/monetdef/Makefile
@@ -0,0 +1,131 @@
+# $FreeBSD$
+
+LOCALES= af_ZA.ISO8859-1 \
+ am_ET.UTF-8 \
+ be_BY.CP1131 \
+ be_BY.CP1251 \
+ be_BY.ISO8859-5 \
+ be_BY.UTF-8 \
+ bg_BG.CP1251 \
+ bg_BG.UTF-8 \
+ ca_ES.ISO8859-1 \
+ cs_CZ.ISO8859-2 \
+ cs_CZ.UTF-8 \
+ da_DK.ISO8859-1 \
+ de_AT.ISO8859-1 \
+ de_CH.ISO8859-1 \
+ de_DE.ISO8859-1 \
+ el_GR.ISO8859-7 \
+ en_AU.ISO8859-1 \
+ en_CA.ISO8859-1 \
+ en_GB.ISO8859-1 \
+ en_GB.UTF-8 \
+ en_IE.UTF-8 \
+ en_NZ.ISO8859-1 \
+ en_US.ISO8859-1 \
+ es_ES.ISO8859-1 \
+ et_EE.ISO8859-15 \
+ fi_FI.ISO8859-1 \
+ fr_BE.ISO8859-1 \
+ fr_CA.ISO8859-1 \
+ fr_FR.ISO8859-1 \
+ he_IL.UTF-8 \
+ hi_IN.ISCII-DEV \
+ hr_HR.ISO8859-2 \
+ hu_HU.ISO8859-2 \
+ hy_AM.ARMSCII-8 \
+ hy_AM.UTF-8 \
+ is_IS.ISO8859-1 \
+ it_IT.ISO8859-1 \
+ ja_JP.eucJP \
+ ja_JP.UTF-8 \
+ kk_KZ.PT154 \
+ kk_KZ.UTF-8 \
+ ko_KR.eucKR \
+ ko_KR.UTF-8 \
+ lt_LT.ISO8859-13 \
+ mn_MN.UTF-8 \
+ nl_BE.ISO8859-1 \
+ nl_NL.ISO8859-1 \
+ no_NO.ISO8859-1 \
+ pl_PL.ISO8859-2 \
+ pl_PL.UTF-8 \
+ pt_BR.ISO8859-1 \
+ pt_PT.ISO8859-1 \
+ ro_RO.ISO8859-2 \
+ ru_RU.CP1251 \
+ ru_RU.CP866 \
+ ru_RU.ISO8859-5 \
+ ru_RU.KOI8-R \
+ ru_RU.UTF-8 \
+ sk_SK.ISO8859-2 \
+ sl_SI.ISO8859-2 \
+ sr_YU.ISO8859-2 \
+ sr_YU.ISO8859-5 \
+ sr_YU.UTF-8 \
+ sv_SE.ISO8859-1 \
+ tr_TR.ISO8859-9 \
+ uk_UA.CP1251 \
+ uk_UA.ISO8859-5 \
+ uk_UA.KOI8-U \
+ uk_UA.UTF-8 \
+ zh_CN.eucCN \
+ zh_CN.GB18030 \
+ zh_CN.GB2312 \
+ zh_CN.UTF-8 \
+ zh_HK.UTF-8 \
+ zh_TW.Big5
+
+LOCALEDIR= /usr/share/locale
+
+.SUFFIXES: .src .out
+
+.src.out:
+ grep -v '^#' < ${.IMPSRC} > ${.TARGET}
+
+FILES= ${LOCALES:S/$/.out/}
+FILESNAME= LC_MONETARY
+
+.for lang in ${LOCALES}
+FILESDIR_${lang}.out= ${LOCALEDIR}/${lang}
+.endfor
+
+CLEANFILES= ${FILES}
+
+ENCODINGS= Big5 Big5HKSCS CP949 eucJP eucKR GB2312 GBK \
+ ISO8859-1 ISO8859-2 ISO8859-4 ISO8859-7 ISO8859-9 \
+ ISO8859-13 ISO8859-15 SJIS US-ASCII UTF-8
+
+Big5_UTF-8= zh_TW
+eucJP_SJIS= ja_JP
+eucKR_CP949= ko_KR
+GB2312_GBK= zh_CN
+ISO8859-1_ISO8859-1= es_ES:eu_ES de_CH:fr_CH de_CH:it_CH no_NO:nb_NO no_NO:nn_NO
+ISO8859-1_ISO8859-15= af_ZA ca_ES da_DK de_AT de_CH de_DE en_AU en_CA \
+ en_GB en_NZ en_US es_ES fi_FI fr_BE fr_CA fr_CH fr_FR \
+ is_IS it_IT it_CH nl_BE nl_NL nb_NO nn_NO no_NO pt_PT sv_SE
+ISO8859-1_US-ASCII= en_AU en_CA en_GB en_NZ en_US
+ISO8859-1_UTF-8= af_ZA ca_ES da_DK de_AT de_CH de_DE en_AU en_CA en_NZ \
+ en_US es_ES fi_FI fr_BE fr_CA fr_FR is_IS it_IT nl_BE \
+ nl_NL nb_NO nn_NO no_NO pt_BR pt_PT sv_SE
+ISO8859-2_UTF-8= hr_HR hu_HU ro_RO sk_SK sl_SI sr_YU
+ISO8859-7_UTF-8= el_GR
+ISO8859-9_UTF-8= tr_TR
+ISO8859-13_ISO8859-4= lt_LT
+ISO8859-13_UTF-8= lt_LT
+ISO8859-15_ISO8859-15= es_ES:eu_ES
+ISO8859-15_UTF-8= et_EE
+UTF-8_Big5HKSCS= zh_HK
+UTF-8_UTF-8= es_ES:eu_ES de_CH:fr_CH de_CH:it_CH
+
+SYMLINKS=
+.for enc1 in ${ENCODINGS}
+.for enc2 in ${ENCODINGS}
+.for lang_terr in ${${enc1}_${enc2}}
+SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+.endfor
+.endfor
+.endfor
+
+.include <bsd.prog.mk>
diff --git a/share/monetdef/af_ZA.ISO8859-1.src b/share/monetdef/af_ZA.ISO8859-1.src
new file mode 100644
index 0000000..4a17750
--- /dev/null
+++ b/share/monetdef/af_ZA.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+ZAR
+# currency_symbol
+R
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/am_ET.UTF-8.src b/share/monetdef/am_ET.UTF-8.src
new file mode 100644
index 0000000..dfabaec
--- /dev/null
+++ b/share/monetdef/am_ET.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+ETB
+# currency_symbol
+$
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/be_BY.CP1131.src b/share/monetdef/be_BY.CP1131.src
new file mode 100644
index 0000000..a39e5f3
--- /dev/null
+++ b/share/monetdef/be_BY.CP1131.src
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+BYR
+# currency_symbol
+àã¡.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/be_BY.CP1251.src b/share/monetdef/be_BY.CP1251.src
new file mode 100644
index 0000000..ec4f95f
--- /dev/null
+++ b/share/monetdef/be_BY.CP1251.src
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+BYR
+# currency_symbol
+ðóá.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/be_BY.ISO8859-5.src b/share/monetdef/be_BY.ISO8859-5.src
new file mode 100644
index 0000000..e49691c
--- /dev/null
+++ b/share/monetdef/be_BY.ISO8859-5.src
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+BYR
+# currency_symbol
+àãÑ.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/be_BY.UTF-8.src b/share/monetdef/be_BY.UTF-8.src
new file mode 100644
index 0000000..a103547
--- /dev/null
+++ b/share/monetdef/be_BY.UTF-8.src
@@ -0,0 +1,35 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+BYR
+# currency_symbol
+руб.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/bg_BG.CP1251.src b/share/monetdef/bg_BG.CP1251.src
new file mode 100644
index 0000000..4d8efff
--- /dev/null
+++ b/share/monetdef/bg_BG.CP1251.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+BGN
+# currency_symbol
+ëâ.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/bg_BG.UTF-8.src b/share/monetdef/bg_BG.UTF-8.src
new file mode 100644
index 0000000..be1d688
--- /dev/null
+++ b/share/monetdef/bg_BG.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+BGN
+# currency_symbol
+лв.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ca_ES.ISO8859-1.src b/share/monetdef/ca_ES.ISO8859-1.src
new file mode 100644
index 0000000..c6b2a13
--- /dev/null
+++ b/share/monetdef/ca_ES.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/cs_CZ.ISO8859-2.src b/share/monetdef/cs_CZ.ISO8859-2.src
new file mode 100644
index 0000000..2ca0f33
--- /dev/null
+++ b/share/monetdef/cs_CZ.ISO8859-2.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CZK
+# currency_symbol
+Kè
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/cs_CZ.UTF-8.src b/share/monetdef/cs_CZ.UTF-8.src
new file mode 100644
index 0000000..cc10a62
--- /dev/null
+++ b/share/monetdef/cs_CZ.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CZK
+# currency_symbol
+KÄ
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/da_DK.ISO8859-1.src b/share/monetdef/da_DK.ISO8859-1.src
new file mode 100644
index 0000000..a18b4cb
--- /dev/null
+++ b/share/monetdef/da_DK.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+DKK
+# currency_symbol
+kr
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+2
+# n_cs_precedes
+1
+# n_sep_by_space
+2
+# p_sign_posn
+4
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/de_AT.ISO8859-1.src b/share/monetdef/de_AT.ISO8859-1.src
new file mode 100644
index 0000000..63f7774
--- /dev/null
+++ b/share/monetdef/de_AT.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/de_CH.ISO8859-1.src b/share/monetdef/de_CH.ISO8859-1.src
new file mode 100644
index 0000000..9bb3e8e
--- /dev/null
+++ b/share/monetdef/de_CH.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CHF
+# currency_symbol
+Fr.
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+4
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/de_DE.ISO8859-1.src b/share/monetdef/de_DE.ISO8859-1.src
new file mode 100644
index 0000000..c95cd1e
--- /dev/null
+++ b/share/monetdef/de_DE.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/el_GR.ISO8859-7.src b/share/monetdef/el_GR.ISO8859-7.src
new file mode 100644
index 0000000..8b1a9a5
--- /dev/null
+++ b/share/monetdef/el_GR.ISO8859-7.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/en_AU.ISO8859-1.src b/share/monetdef/en_AU.ISO8859-1.src
new file mode 100644
index 0000000..32c4298
--- /dev/null
+++ b/share/monetdef/en_AU.ISO8859-1.src
@@ -0,0 +1,48 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+AUD
+# currency_symbol
+$
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# int_p_cs_precedes
+1
+# int_n_cs_precedes;
+1
+# int_p_sep_by_space;
+0
+# int_n_sep_by_space;
+0
+# int_p_sign_posn;
+1
+# int_n_sign_posn;
+1
+# EOF
diff --git a/share/monetdef/en_CA.ISO8859-1.src b/share/monetdef/en_CA.ISO8859-1.src
new file mode 100644
index 0000000..75e31f6
--- /dev/null
+++ b/share/monetdef/en_CA.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CAD
+# currency_symbol
+$
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/en_GB.ISO8859-1.src b/share/monetdef/en_GB.ISO8859-1.src
new file mode 100644
index 0000000..a0472d3
--- /dev/null
+++ b/share/monetdef/en_GB.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+GBP
+# currency_symbol
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/en_GB.UTF-8.src b/share/monetdef/en_GB.UTF-8.src
new file mode 100644
index 0000000..e187d8c
--- /dev/null
+++ b/share/monetdef/en_GB.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+GBP
+# currency_symbol
+£
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/en_IE.UTF-8.src b/share/monetdef/en_IE.UTF-8.src
new file mode 100644
index 0000000..1ddcc5c
--- /dev/null
+++ b/share/monetdef/en_IE.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+€
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/en_NZ.ISO8859-1.src b/share/monetdef/en_NZ.ISO8859-1.src
new file mode 100644
index 0000000..1cb8261
--- /dev/null
+++ b/share/monetdef/en_NZ.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+NZD
+# currency_symbol
+$
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/en_US.ISO8859-1.src b/share/monetdef/en_US.ISO8859-1.src
new file mode 100644
index 0000000..faf42e5
--- /dev/null
+++ b/share/monetdef/en_US.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+USD
+# currency_symbol
+$
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/es_ES.ISO8859-1.src b/share/monetdef/es_ES.ISO8859-1.src
new file mode 100644
index 0000000..81d7a60
--- /dev/null
+++ b/share/monetdef/es_ES.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/et_EE.ISO8859-15.src b/share/monetdef/et_EE.ISO8859-15.src
new file mode 100644
index 0000000..a03ad1a
--- /dev/null
+++ b/share/monetdef/et_EE.ISO8859-15.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EEK
+# currency_symbol
+kr
+# mon_decimal_point
+.
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/fi_FI.ISO8859-1.src b/share/monetdef/fi_FI.ISO8859-1.src
new file mode 100644
index 0000000..372e77b
--- /dev/null
+++ b/share/monetdef/fi_FI.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+2
+# n_cs_precedes
+0
+# n_sep_by_space
+2
+# p_sign_posn
+1
+# n_sign_posn
+2
+# EOF
diff --git a/share/monetdef/fr_BE.ISO8859-1.src b/share/monetdef/fr_BE.ISO8859-1.src
new file mode 100644
index 0000000..23c0fcd
--- /dev/null
+++ b/share/monetdef/fr_BE.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/fr_CA.ISO8859-1.src b/share/monetdef/fr_CA.ISO8859-1.src
new file mode 100644
index 0000000..64ff444
--- /dev/null
+++ b/share/monetdef/fr_CA.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CAD
+# currency_symbol
+$
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+2
+# EOF
diff --git a/share/monetdef/fr_FR.ISO8859-1.src b/share/monetdef/fr_FR.ISO8859-1.src
new file mode 100644
index 0000000..8211d14
--- /dev/null
+++ b/share/monetdef/fr_FR.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+2
+# EOF
diff --git a/share/monetdef/he_IL.UTF-8.src b/share/monetdef/he_IL.UTF-8.src
new file mode 100644
index 0000000..7468457
--- /dev/null
+++ b/share/monetdef/he_IL.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+ILS
+# currency_symbol
+₪
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/hi_IN.ISCII-DEV.src b/share/monetdef/hi_IN.ISCII-DEV.src
new file mode 100644
index 0000000..cc6de74
--- /dev/null
+++ b/share/monetdef/hi_IN.ISCII-DEV.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+INR
+# currency_symbol
+ÏÞȬ
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;2;0
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/hr_HR.ISO8859-2.src b/share/monetdef/hr_HR.ISO8859-2.src
new file mode 100644
index 0000000..ea1cc94
--- /dev/null
+++ b/share/monetdef/hr_HR.ISO8859-2.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+HRK
+# currency_symbol
+Kn
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/hu_HU.ISO8859-2.src b/share/monetdef/hu_HU.ISO8859-2.src
new file mode 100644
index 0000000..183f155
--- /dev/null
+++ b/share/monetdef/hu_HU.ISO8859-2.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+HUF
+# currency_symbol
+Ft
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+2
+# n_cs_precedes
+1
+# n_sep_by_space
+2
+# p_sign_posn
+4
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/hy_AM.ARMSCII-8.src b/share/monetdef/hy_AM.ARMSCII-8.src
new file mode 100644
index 0000000..5d8ed16
--- /dev/null
+++ b/share/monetdef/hy_AM.ARMSCII-8.src
@@ -0,0 +1,39 @@
+# $FreeBSD$
+#
+# LC_MONETARY source for ARMSCII-8 locale for FreeBSD
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+AMD
+# currency_symbol
+¸ð
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/hy_AM.UTF-8.src b/share/monetdef/hy_AM.UTF-8.src
new file mode 100644
index 0000000..80396b1
--- /dev/null
+++ b/share/monetdef/hy_AM.UTF-8.src
@@ -0,0 +1,39 @@
+# $FreeBSD$
+#
+# LC_MONETARY source for ARMSCII-8 locale for FreeBSD
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+AMD
+# currency_symbol
+Ô´Õ
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/is_IS.ISO8859-1.src b/share/monetdef/is_IS.ISO8859-1.src
new file mode 100644
index 0000000..66a8037
--- /dev/null
+++ b/share/monetdef/is_IS.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+ISK
+# currency_symbol
+kr
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/it_IT.ISO8859-1.src b/share/monetdef/it_IT.ISO8859-1.src
new file mode 100644
index 0000000..c6b2a13
--- /dev/null
+++ b/share/monetdef/it_IT.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ja_JP.UTF-8.src b/share/monetdef/ja_JP.UTF-8.src
new file mode 100644
index 0000000..fce3288
--- /dev/null
+++ b/share/monetdef/ja_JP.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+JPY
+# currency_symbol
+Â¥
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/ja_JP.eucJP.src b/share/monetdef/ja_JP.eucJP.src
new file mode 100644
index 0000000..462a88d
--- /dev/null
+++ b/share/monetdef/ja_JP.eucJP.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+JPY
+# currency_symbol
+\
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/kk_KZ.PT154.src b/share/monetdef/kk_KZ.PT154.src
new file mode 100644
index 0000000..8b61e80
--- /dev/null
+++ b/share/monetdef/kk_KZ.PT154.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+KZT
+# currency_symbol
+òã.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/kk_KZ.UTF-8.src b/share/monetdef/kk_KZ.UTF-8.src
new file mode 100644
index 0000000..ddf0353
--- /dev/null
+++ b/share/monetdef/kk_KZ.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+KZT
+# currency_symbol
+тг.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ko_KR.UTF-8.src b/share/monetdef/ko_KR.UTF-8.src
new file mode 100644
index 0000000..5d69ac5
--- /dev/null
+++ b/share/monetdef/ko_KR.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+KRW
+# currency_symbol
+â‚©
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/ko_KR.eucKR.src b/share/monetdef/ko_KR.eucKR.src
new file mode 100644
index 0000000..0723dfa
--- /dev/null
+++ b/share/monetdef/ko_KR.eucKR.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+KRW
+# currency_symbol
+\
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/lt_LT.ISO8859-13.src b/share/monetdef/lt_LT.ISO8859-13.src
new file mode 100644
index 0000000..790e0c9
--- /dev/null
+++ b/share/monetdef/lt_LT.ISO8859-13.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+LTL
+# currency_symbol
+Lt
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/mn_MN.UTF-8.src b/share/monetdef/mn_MN.UTF-8.src
new file mode 100644
index 0000000..a2638a7
--- /dev/null
+++ b/share/monetdef/mn_MN.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+MNT
+# currency_symbol
+â‚®
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/nl_BE.ISO8859-1.src b/share/monetdef/nl_BE.ISO8859-1.src
new file mode 100644
index 0000000..23c0fcd
--- /dev/null
+++ b/share/monetdef/nl_BE.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/nl_NL.ISO8859-1.src b/share/monetdef/nl_NL.ISO8859-1.src
new file mode 100644
index 0000000..b5a0992
--- /dev/null
+++ b/share/monetdef/nl_NL.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+2
+# EOF
diff --git a/share/monetdef/no_NO.ISO8859-1.src b/share/monetdef/no_NO.ISO8859-1.src
new file mode 100644
index 0000000..1819533
--- /dev/null
+++ b/share/monetdef/no_NO.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+NOK
+# currency_symbol
+kr
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+4
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/pl_PL.ISO8859-2.src b/share/monetdef/pl_PL.ISO8859-2.src
new file mode 100644
index 0000000..b749031
--- /dev/null
+++ b/share/monetdef/pl_PL.ISO8859-2.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+PLN
+# currency_symbol
+z³
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+2
+# n_cs_precedes
+1
+# n_sep_by_space
+2
+# p_sign_posn
+4
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/pl_PL.UTF-8.src b/share/monetdef/pl_PL.UTF-8.src
new file mode 100644
index 0000000..5138186
--- /dev/null
+++ b/share/monetdef/pl_PL.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+PLN
+# currency_symbol
+zł
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+2
+# n_cs_precedes
+1
+# n_sep_by_space
+2
+# p_sign_posn
+4
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/pt_BR.ISO8859-1.src b/share/monetdef/pt_BR.ISO8859-1.src
new file mode 100644
index 0000000..0614e9f
--- /dev/null
+++ b/share/monetdef/pt_BR.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+BRL
+# currency_symbol
+R$
+# mon_decimal_point (possibly incorrect for pt_BR)
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/pt_PT.ISO8859-1.src b/share/monetdef/pt_PT.ISO8859-1.src
new file mode 100644
index 0000000..23c0fcd
--- /dev/null
+++ b/share/monetdef/pt_PT.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+EUR
+# currency_symbol
+Eu
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ro_RO.ISO8859-2.src b/share/monetdef/ro_RO.ISO8859-2.src
new file mode 100644
index 0000000..4f543c4
--- /dev/null
+++ b/share/monetdef/ro_RO.ISO8859-2.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+ROL
+# currency_symbol
+Lei
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ru_RU.CP1251.src b/share/monetdef/ru_RU.CP1251.src
new file mode 100644
index 0000000..e02ea16
--- /dev/null
+++ b/share/monetdef/ru_RU.CP1251.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+RUB
+# currency_symbol
+ðóá.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ru_RU.CP866.src b/share/monetdef/ru_RU.CP866.src
new file mode 100644
index 0000000..26473b3
--- /dev/null
+++ b/share/monetdef/ru_RU.CP866.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+RUB
+# currency_symbol
+àã¡.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ru_RU.ISO8859-5.src b/share/monetdef/ru_RU.ISO8859-5.src
new file mode 100644
index 0000000..82b1e53
--- /dev/null
+++ b/share/monetdef/ru_RU.ISO8859-5.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+RUB
+# currency_symbol
+àãÑ.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ru_RU.KOI8-R.src b/share/monetdef/ru_RU.KOI8-R.src
new file mode 100644
index 0000000..168caf7
--- /dev/null
+++ b/share/monetdef/ru_RU.KOI8-R.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+RUB
+# currency_symbol
+ÒÕÂ.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/ru_RU.UTF-8.src b/share/monetdef/ru_RU.UTF-8.src
new file mode 100644
index 0000000..fe823ca
--- /dev/null
+++ b/share/monetdef/ru_RU.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+RUB
+# currency_symbol
+руб.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/sk_SK.ISO8859-2.src b/share/monetdef/sk_SK.ISO8859-2.src
new file mode 100644
index 0000000..dc2ac34
--- /dev/null
+++ b/share/monetdef/sk_SK.ISO8859-2.src
@@ -0,0 +1,38 @@
+# $FreeBSD$
+#
+# Slovak monetary definition by Juraj Bednar <juraj@bednar.sk>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+SKK
+# currency_symbol
+Sk
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+2
+# n_cs_precedes
+1
+# n_sep_by_space
+2
+# p_sign_posn
+4
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/sl_SI.ISO8859-2.src b/share/monetdef/sl_SI.ISO8859-2.src
new file mode 100644
index 0000000..2448e45
--- /dev/null
+++ b/share/monetdef/sl_SI.ISO8859-2.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+SIT
+# currency_symbol
+SIT
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+2
+# n_cs_precedes
+0
+# n_sep_by_space
+2
+# p_sign_posn
+2
+# n_sign_posn
+2
+# EOF
diff --git a/share/monetdef/sr_YU.ISO8859-2.src b/share/monetdef/sr_YU.ISO8859-2.src
new file mode 100644
index 0000000..b706e29
--- /dev/null
+++ b/share/monetdef/sr_YU.ISO8859-2.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+YUD
+# currency_symbol
+din
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+2
+# n_cs_precedes
+0
+# n_sep_by_space
+2
+# p_sign_posn
+2
+# n_sign_posn
+2
+# EOF
diff --git a/share/monetdef/sr_YU.ISO8859-5.src b/share/monetdef/sr_YU.ISO8859-5.src
new file mode 100644
index 0000000..e5e9f4c
--- /dev/null
+++ b/share/monetdef/sr_YU.ISO8859-5.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+YUD
+# currency_symbol
+ÔØÝ
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/sr_YU.UTF-8.src b/share/monetdef/sr_YU.UTF-8.src
new file mode 100644
index 0000000..6e8b013
--- /dev/null
+++ b/share/monetdef/sr_YU.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+YUD
+# currency_symbol
+дин
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/sv_SE.ISO8859-1.src b/share/monetdef/sv_SE.ISO8859-1.src
new file mode 100644
index 0000000..a835567
--- /dev/null
+++ b/share/monetdef/sv_SE.ISO8859-1.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+SEK
+# currency_symbol
+kr
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/tr_TR.ISO8859-9.src b/share/monetdef/tr_TR.ISO8859-9.src
new file mode 100644
index 0000000..41d4547
--- /dev/null
+++ b/share/monetdef/tr_TR.ISO8859-9.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+TRL
+# currency_symbol
+L
+# mon_decimal_point
+,
+# mon_thousands_sep
+.
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+1
+# n_cs_precedes
+1
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/uk_UA.CP1251.src b/share/monetdef/uk_UA.CP1251.src
new file mode 100644
index 0000000..807dded
--- /dev/null
+++ b/share/monetdef/uk_UA.CP1251.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+UAH
+# currency_symbol
+ãðí.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/uk_UA.ISO8859-5.src b/share/monetdef/uk_UA.ISO8859-5.src
new file mode 100644
index 0000000..b95e3bd
--- /dev/null
+++ b/share/monetdef/uk_UA.ISO8859-5.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+UAH
+# currency_symbol
+ÓàÝ.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/uk_UA.KOI8-U.src b/share/monetdef/uk_UA.KOI8-U.src
new file mode 100644
index 0000000..5464d14
--- /dev/null
+++ b/share/monetdef/uk_UA.KOI8-U.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+UAH
+# currency_symbol
+ÇÒÎ.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/uk_UA.UTF-8.src b/share/monetdef/uk_UA.UTF-8.src
new file mode 100644
index 0000000..842c02f
--- /dev/null
+++ b/share/monetdef/uk_UA.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+UAH
+# currency_symbol
+грн.
+# mon_decimal_point
+,
+# mon_thousands_sep
+
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+0
+# p_sep_by_space
+1
+# n_cs_precedes
+0
+# n_sep_by_space
+1
+# p_sign_posn
+1
+# n_sign_posn
+1
+# EOF
diff --git a/share/monetdef/zh_CN.GB18030.src b/share/monetdef/zh_CN.GB18030.src
new file mode 100644
index 0000000..e1c0ef2
--- /dev/null
+++ b/share/monetdef/zh_CN.GB18030.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CNY
+# currency_symbol
+£¤
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/zh_CN.GB2312.src b/share/monetdef/zh_CN.GB2312.src
new file mode 100644
index 0000000..e1c0ef2
--- /dev/null
+++ b/share/monetdef/zh_CN.GB2312.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CNY
+# currency_symbol
+£¤
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/zh_CN.UTF-8.src b/share/monetdef/zh_CN.UTF-8.src
new file mode 100644
index 0000000..136d66c
--- /dev/null
+++ b/share/monetdef/zh_CN.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CNY
+# currency_symbol
+ï¿¥
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/zh_CN.eucCN.src b/share/monetdef/zh_CN.eucCN.src
new file mode 100644
index 0000000..3f5fc24
--- /dev/null
+++ b/share/monetdef/zh_CN.eucCN.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+CNY
+# currency_symbol
+£¤
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/monetdef/zh_HK.UTF-8.src b/share/monetdef/zh_HK.UTF-8.src
new file mode 100644
index 0000000..64921a9
--- /dev/null
+++ b/share/monetdef/zh_HK.UTF-8.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+HKD
+# currency_symbol
+HK$
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+2
+# frac_digits
+2
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+0
+# EOF
diff --git a/share/monetdef/zh_TW.Big5.src b/share/monetdef/zh_TW.Big5.src
new file mode 100644
index 0000000..1e86417
--- /dev/null
+++ b/share/monetdef/zh_TW.Big5.src
@@ -0,0 +1,36 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# int_curr_symbol (last character always SPACE)
+TWD
+# currency_symbol
+NT$
+# mon_decimal_point
+.
+# mon_thousands_sep
+,
+# mon_grouping, separated by ;
+3;3
+# positive_sign
+
+# negative_sign
+-
+# int_frac_digits
+0
+# frac_digits
+0
+# p_cs_precedes
+1
+# p_sep_by_space
+0
+# n_cs_precedes
+1
+# n_sep_by_space
+0
+# p_sign_posn
+1
+# n_sign_posn
+4
+# EOF
diff --git a/share/msgdef/Makefile b/share/msgdef/Makefile
new file mode 100644
index 0000000..f31dcaa
--- /dev/null
+++ b/share/msgdef/Makefile
@@ -0,0 +1,140 @@
+# $FreeBSD$
+
+LOCALES= af_ZA.ISO8859-1 \
+ am_ET.UTF-8 \
+ be_BY.CP1131 \
+ be_BY.CP1251 \
+ be_BY.ISO8859-5 \
+ be_BY.UTF-8 \
+ bg_BG.CP1251 \
+ bg_BG.UTF-8 \
+ ca_ES.ISO8859-1 \
+ cs_CZ.ISO8859-2 \
+ da_DK.ISO8859-1 \
+ de_DE.ISO8859-1 \
+ el_GR.ISO8859-7 \
+ el_GR.UTF-8 \
+ en_CA.ISO8859-1 \
+ en_GB.ISO8859-1 \
+ en_US.ISO8859-1 \
+ es_ES.ISO8859-1 \
+ et_EE.ISO8859-15 \
+ eu_ES.ISO8859-1 \
+ fi_FI.ISO8859-1 \
+ fr_BE.ISO8859-1 \
+ fr_CH.ISO8859-1 \
+ fr_FR.ISO8859-1 \
+ he_IL.UTF-8 \
+ hi_IN.ISCII-DEV \
+ hr_HR.ISO8859-2 \
+ hu_HU.ISO8859-2 \
+ hy_AM.ARMSCII-8 \
+ hy_AM.UTF-8 \
+ is_IS.ISO8859-1 \
+ it_IT.ISO8859-1 \
+ ja_JP.eucJP \
+ ja_JP.SJIS \
+ ja_JP.UTF-8 \
+ kk_KZ.PT154 \
+ kk_KZ.UTF-8 \
+ ko_KR.UTF-8 \
+ ko_KR.eucKR \
+ lt_LT.ISO8859-13 \
+ mn_MN.UTF-8 \
+ nl_NL.ISO8859-1 \
+ no_NO.ISO8859-1 \
+ pl_PL.ISO8859-2 \
+ pt_PT.ISO8859-1 \
+ ro_RO.ISO8859-2 \
+ ru_RU.CP1251 \
+ ru_RU.CP866 \
+ ru_RU.ISO8859-5 \
+ ru_RU.KOI8-R \
+ ru_RU.UTF-8 \
+ sl_SI.ISO8859-2 \
+ sr_YU.ISO8859-2 \
+ sr_YU.ISO8859-5 \
+ sr_YU.UTF-8 \
+ sv_SE.ISO8859-1 \
+ tr_TR.ISO8859-9 \
+ uk_UA.CP1251 \
+ uk_UA.ISO8859-5 \
+ uk_UA.KOI8-U \
+ uk_UA.UTF-8 \
+ zh_CN.eucCN \
+ zh_CN.GB18030 \
+ zh_CN.GB2312 \
+ zh_CN.UTF-8 \
+ zh_TW.Big5 \
+ zh_TW.UTF-8
+
+LOCALEDIR= /usr/share/locale
+
+.SUFFIXES: .src .out
+
+.src.out:
+ grep -v '^#' < ${.IMPSRC} > ${.TARGET}
+
+FILES= ${LOCALES:S/$/.out/}
+FILESNAME= LC_MESSAGES
+
+.for locale in ${LOCALES}
+FILESDIR_${locale}.out= ${LOCALEDIR}/${locale}
+.endfor
+
+CLEANFILES= ${FILES}
+
+CZ_LINKS= cs_CZ:sk_SK
+DE_LINKS= de_DE:de_AT de_DE:de_CH
+FR_LINKS= fr_FR:fr_CA
+GB_LINKS= en_GB:en_AU en_GB:en_NZ
+IT_LINKS= it_IT:it_CH
+NL_LINKS= nl_NL:nl_BE
+NO_LINKS= no_NO:nb_NO no_NO:nn_NO
+PT_LINKS= pt_PT:pt_BR
+
+ENCODINGS= Big5 Big5HKSCS CP949 eucKR GB2312 GBK \
+ ISO8859-1 ISO8859-2 ISO8859-4 ISO8859-9 ISO8859-13 ISO8859-15 \
+ US-ASCII UTF-8
+
+Big5_Big5HKSCS= zh_TW:zh_HK
+eucKR_CP949= ko_KR
+GB2312_GBK= zh_CN
+ISO8859-1_ISO8859-1= ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} ${IT_LINKS} \
+ ${NL_LINKS} ${NO_LINKS} ${PT_LINKS}
+ISO8859-1_ISO8859-15= af_ZA ca_ES da_DK de_DE en_CA en_GB en_US es_ES \
+ eu_ES fi_FI fr_BE fr_CH fr_FR is_IS it_IT nl_NL no_NO \
+ pt_PT sv_SE \
+ ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} ${IT_LINKS} \
+ ${NL_LINKS} ${NO_LINKS}
+ISO8859-1_US-ASCII= ${GB_LINKS} en_CA en_GB en_US
+ISO8859-1_UTF-8= af_ZA ca_ES da_DK de_DE en_CA en_GB en_US es_ES eu_ES \
+ fi_FI fr_BE fr_CH fr_FR is_IS it_IT nb_NO nl_NL nn_NO no_NO \
+ pt_PT sv_SE
+ISO8859-2_ISO8859-2= ${CZ_LINKS}
+ISO8859-2_UTF-8= cs_CZ hr_HR hu_HU pl_PL ro_RO sl_SI
+ISO8859-9_UTF-8= tr_TR
+ISO8859-13_ISO8859-4= lt_LT
+ISO8859-13_UTF-8= lt_LT
+ISO8859-15_UTF-8= et_EE
+UTF-8_UTF-8= ${CZ_LINKS} ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} en_GB:en_IE \
+ ${IT_LINKS} ${NL_LINKS} ${NO_LINKS} ${PT_LINKS} zh_TW:zh_HK
+
+SYMLINKS=
+.for enc1 in ${ENCODINGS}
+.for enc2 in ${ENCODINGS}
+.for lang_terr in ${${enc1}_${enc2}}
+SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+.endfor
+.endfor
+.endfor
+
+beforeinstall:
+.for locale in ${LOCALES}
+.if exists(${DESTDIR}${LOCALEDIR}/${locale}/LC_MESSAGES/)
+ rm -rf ${DESTDIR}${LOCALEDIR}/${locale}/LC_MESSAGES
+.endif
+.endfor
+
+.include <bsd.prog.mk>
diff --git a/share/msgdef/af_ZA.ISO8859-1.src b/share/msgdef/af_ZA.ISO8859-1.src
new file mode 100644
index 0000000..a87da07
--- /dev/null
+++ b/share/msgdef/af_ZA.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[jJyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/am_ET.UTF-8.src b/share/msgdef/am_ET.UTF-8.src
new file mode 100644
index 0000000..a2b25ed
--- /dev/null
+++ b/share/msgdef/am_ET.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[á‹­áˆáŠ•yY].*
+# noexpr
+^[አይáˆáŠ•nN].*
+# yesstr
+á‹­áˆáŠ•
+# nostr
+አይáˆáŠ•
+# EOF
diff --git a/share/msgdef/be_BY.CP1131.src b/share/msgdef/be_BY.CP1131.src
new file mode 100644
index 0000000..ed0a05e
--- /dev/null
+++ b/share/msgdef/be_BY.CP1131.src
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[â’yY].*
+# noexpr
+^[­nN].*
+# yesstr
+â ª
+# nostr
+­¥
+# EOF
diff --git a/share/msgdef/be_BY.CP1251.src b/share/msgdef/be_BY.CP1251.src
new file mode 100644
index 0000000..a401228
--- /dev/null
+++ b/share/msgdef/be_BY.CP1251.src
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[òÒyY].*
+# noexpr
+^[íÍnN].*
+# yesstr
+òàê
+# nostr
+íå
+# EOF
diff --git a/share/msgdef/be_BY.ISO8859-5.src b/share/msgdef/be_BY.ISO8859-5.src
new file mode 100644
index 0000000..a36e126
--- /dev/null
+++ b/share/msgdef/be_BY.ISO8859-5.src
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[âÂyY].*
+# noexpr
+^[ݽnN].*
+# yesstr
+âÐÚ
+# nostr
+ÝÕ
+# EOF
diff --git a/share/msgdef/be_BY.UTF-8.src b/share/msgdef/be_BY.UTF-8.src
new file mode 100644
index 0000000..8d23237
--- /dev/null
+++ b/share/msgdef/be_BY.UTF-8.src
@@ -0,0 +1,13 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[тТyY].*
+# noexpr
+^[нÐnN].*
+# yesstr
+так
+# nostr
+не
+# EOF
diff --git a/share/msgdef/bg_BG.CP1251.src b/share/msgdef/bg_BG.CP1251.src
new file mode 100644
index 0000000..e52d30d
--- /dev/null
+++ b/share/msgdef/bg_BG.CP1251.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[äÄyY].*
+# noexpr
+^[íÍnN].*
+# yesstr
+äà
+# nostr
+íå
+# EOF
diff --git a/share/msgdef/bg_BG.UTF-8.src b/share/msgdef/bg_BG.UTF-8.src
new file mode 100644
index 0000000..72dca12
--- /dev/null
+++ b/share/msgdef/bg_BG.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[дДyY].*
+# noexpr
+^[нÐnN].*
+# yesstr
+да
+# nostr
+не
+# EOF
diff --git a/share/msgdef/ca_ES.ISO8859-1.src b/share/msgdef/ca_ES.ISO8859-1.src
new file mode 100644
index 0000000..e839a0a
--- /dev/null
+++ b/share/msgdef/ca_ES.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[sSyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/cs_CZ.ISO8859-2.src b/share/msgdef/cs_CZ.ISO8859-2.src
new file mode 100644
index 0000000..a6fc836
--- /dev/null
+++ b/share/msgdef/cs_CZ.ISO8859-2.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[aAyY].*
+# noexpr
+^[nN].*
+# yesstr
+ano
+# nostr
+ne
+# EOF
diff --git a/share/msgdef/da_DK.ISO8859-1.src b/share/msgdef/da_DK.ISO8859-1.src
new file mode 100644
index 0000000..a87da07
--- /dev/null
+++ b/share/msgdef/da_DK.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[jJyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/de_DE.ISO8859-1.src b/share/msgdef/de_DE.ISO8859-1.src
new file mode 100644
index 0000000..a87da07
--- /dev/null
+++ b/share/msgdef/de_DE.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[jJyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/el_GR.ISO8859-7.src b/share/msgdef/el_GR.ISO8859-7.src
new file mode 100644
index 0000000..85d433e
--- /dev/null
+++ b/share/msgdef/el_GR.ISO8859-7.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[íÍyY].*
+# noexpr
+^[ïÏnN].*
+# yesstr
+ÍÁÉ
+# nostr
+Ï×É
+# EOF
diff --git a/share/msgdef/el_GR.UTF-8.src b/share/msgdef/el_GR.UTF-8.src
new file mode 100644
index 0000000..560675e
--- /dev/null
+++ b/share/msgdef/el_GR.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[νÎyY].*
+# noexpr
+^[οΟnN].*
+# yesstr
+ÎΑΙ
+# nostr
+ΟΧΙ
+# EOF
diff --git a/share/msgdef/en_CA.ISO8859-1.src b/share/msgdef/en_CA.ISO8859-1.src
new file mode 100644
index 0000000..7a66f55
--- /dev/null
+++ b/share/msgdef/en_CA.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yYoO].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/en_GB.ISO8859-1.src b/share/msgdef/en_GB.ISO8859-1.src
new file mode 100644
index 0000000..f80c8fa
--- /dev/null
+++ b/share/msgdef/en_GB.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/en_US.ISO8859-1.src b/share/msgdef/en_US.ISO8859-1.src
new file mode 100644
index 0000000..bc2594d
--- /dev/null
+++ b/share/msgdef/en_US.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yYsS].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/es_ES.ISO8859-1.src b/share/msgdef/es_ES.ISO8859-1.src
new file mode 100644
index 0000000..e839a0a
--- /dev/null
+++ b/share/msgdef/es_ES.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[sSyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/et_EE.ISO8859-15.src b/share/msgdef/et_EE.ISO8859-15.src
new file mode 100644
index 0000000..0d31afd
--- /dev/null
+++ b/share/msgdef/et_EE.ISO8859-15.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[1JjYy].*
+# noexpr
+^[0EeNn].*
+# EOF
diff --git a/share/msgdef/eu_ES.ISO8859-1.src b/share/msgdef/eu_ES.ISO8859-1.src
new file mode 100644
index 0000000..8eaba38
--- /dev/null
+++ b/share/msgdef/eu_ES.ISO8859-1.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[bByY].*
+# noexpr
+^[eEnN].*
+# yesstr
+bai
+# nostr
+ez
+# EOF
diff --git a/share/msgdef/fi_FI.ISO8859-1.src b/share/msgdef/fi_FI.ISO8859-1.src
new file mode 100644
index 0000000..ac0092a
--- /dev/null
+++ b/share/msgdef/fi_FI.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[kKjJyY].*
+# noexpr
+^[nNeE].*
+# EOF
diff --git a/share/msgdef/fr_BE.ISO8859-1.src b/share/msgdef/fr_BE.ISO8859-1.src
new file mode 100644
index 0000000..14f8e23
--- /dev/null
+++ b/share/msgdef/fr_BE.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[oOyYjJ1].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/fr_CH.ISO8859-1.src b/share/msgdef/fr_CH.ISO8859-1.src
new file mode 100644
index 0000000..4af7638
--- /dev/null
+++ b/share/msgdef/fr_CH.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[oOjJsSyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/fr_FR.ISO8859-1.src b/share/msgdef/fr_FR.ISO8859-1.src
new file mode 100644
index 0000000..80d0218
--- /dev/null
+++ b/share/msgdef/fr_FR.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[oOyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/he_IL.UTF-8.src b/share/msgdef/he_IL.UTF-8.src
new file mode 100644
index 0000000..ef87399
--- /dev/null
+++ b/share/msgdef/he_IL.UTF-8.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY×›].*
+# noexpr
+^[nNל].*
+# EOF
diff --git a/share/msgdef/hi_IN.ISCII-DEV.src b/share/msgdef/hi_IN.ISCII-DEV.src
new file mode 100644
index 0000000..f9ec934
--- /dev/null
+++ b/share/msgdef/hi_IN.ISCII-DEV.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[ØyY].*
+# noexpr
+^[ÆnN].*
+# EOF
diff --git a/share/msgdef/hr_HR.ISO8859-2.src b/share/msgdef/hr_HR.ISO8859-2.src
new file mode 100644
index 0000000..a711ff7
--- /dev/null
+++ b/share/msgdef/hr_HR.ISO8859-2.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[dDyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/hu_HU.ISO8859-2.src b/share/msgdef/hu_HU.ISO8859-2.src
new file mode 100644
index 0000000..4f009c7
--- /dev/null
+++ b/share/msgdef/hu_HU.ISO8859-2.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[iIyY].*
+# noexpr
+^[nN].*
+# yesstr
+igen
+# nostr
+nem
+# EOF
diff --git a/share/msgdef/hy_AM.ARMSCII-8.src b/share/msgdef/hy_AM.ARMSCII-8.src
new file mode 100644
index 0000000..c11b38e
--- /dev/null
+++ b/share/msgdef/hy_AM.ARMSCII-8.src
@@ -0,0 +1,17 @@
+# $FreeBSD$
+#
+# msgdef source for ARMSCII-8 locale for FreeBSD
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[³²yY].*
+# noexpr
+^[áànN].*
+# yesstr
+²Ûá
+# nostr
+àã
+# EOF
diff --git a/share/msgdef/hy_AM.UTF-8.src b/share/msgdef/hy_AM.UTF-8.src
new file mode 100644
index 0000000..749637d
--- /dev/null
+++ b/share/msgdef/hy_AM.UTF-8.src
@@ -0,0 +1,17 @@
+# $FreeBSD$
+#
+# msgdef source for ARMSCII-8 locale for FreeBSD
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[Õ¡Ô±yY].*
+# noexpr
+^[Õ¸ÕˆnN].*
+# yesstr
+Ô±ÕµÕ¸
+# nostr
+ÕˆÕ¹
+# EOF
diff --git a/share/msgdef/is_IS.ISO8859-1.src b/share/msgdef/is_IS.ISO8859-1.src
new file mode 100644
index 0000000..a87da07
--- /dev/null
+++ b/share/msgdef/is_IS.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[jJyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/it_IT.ISO8859-1.src b/share/msgdef/it_IT.ISO8859-1.src
new file mode 100644
index 0000000..e839a0a
--- /dev/null
+++ b/share/msgdef/it_IT.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[sSyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/ja_JP.SJIS.src b/share/msgdef/ja_JP.SJIS.src
new file mode 100644
index 0000000..8a209e5
--- /dev/null
+++ b/share/msgdef/ja_JP.SJIS.src
@@ -0,0 +1,13 @@
+# $FreeBSD$
+#
+# XXX: ja_JP.SJIS contains english messages only. Someone familiar with
+# this locale is wanted to complete it!
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/ja_JP.UTF-8.src b/share/msgdef/ja_JP.UTF-8.src
new file mode 100644
index 0000000..476ef44
--- /dev/null
+++ b/share/msgdef/ja_JP.UTF-8.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yYyYã¯ãƒ].*
+# noexpr
+^[nNnNã„イ].*
+# EOF
diff --git a/share/msgdef/ja_JP.eucJP.src b/share/msgdef/ja_JP.eucJP.src
new file mode 100644
index 0000000..2f06e01
--- /dev/null
+++ b/share/msgdef/ja_JP.eucJP.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY£ù£Ù¤Ï¥Ï].*
+# noexpr
+^[nN£î£Î¤¤¥¤].*
+# EOF
diff --git a/share/msgdef/kk_KZ.PT154.src b/share/msgdef/kk_KZ.PT154.src
new file mode 100644
index 0000000..583096f
--- /dev/null
+++ b/share/msgdef/kk_KZ.PT154.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[èÈyY].*
+# noexpr
+^[æÆnN].*
+# yesstr
+èÿ
+# nostr
+æîê
+# EOF
diff --git a/share/msgdef/kk_KZ.UTF-8.src b/share/msgdef/kk_KZ.UTF-8.src
new file mode 100644
index 0000000..23cd9cb
--- /dev/null
+++ b/share/msgdef/kk_KZ.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[иИyY].*
+# noexpr
+^[жЖnN].*
+# yesstr
+иÑ
+# nostr
+жок
+# EOF
diff --git a/share/msgdef/ko_KR.UTF-8.src b/share/msgdef/ko_KR.UTF-8.src
new file mode 100644
index 0000000..7921ba0
--- /dev/null
+++ b/share/msgdef/ko_KR.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yYyY예].*
+# noexpr
+^[nNnN아].*
+# yesstr
+예
+# nostr
+아니오
+# EOF
diff --git a/share/msgdef/ko_KR.eucKR.src b/share/msgdef/ko_KR.eucKR.src
new file mode 100644
index 0000000..097d4dd
--- /dev/null
+++ b/share/msgdef/ko_KR.eucKR.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY£ù£Ù¿¹].*
+# noexpr
+^[nN£î£Î¾Æ].*
+# yesstr
+¿¹
+# nostr
+¾Æ´Ï¿À
+# EOF
diff --git a/share/msgdef/lt_LT.ISO8859-13.src b/share/msgdef/lt_LT.ISO8859-13.src
new file mode 100644
index 0000000..296f158
--- /dev/null
+++ b/share/msgdef/lt_LT.ISO8859-13.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[tTyY].*
+# noexpr
+^[nN].*
+# yesstr
+taip
+# nostr
+ne
+# EOF
diff --git a/share/msgdef/mn_MN.UTF-8.src b/share/msgdef/mn_MN.UTF-8.src
new file mode 100644
index 0000000..8851f6a
--- /dev/null
+++ b/share/msgdef/mn_MN.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[тТyY].*
+# noexpr
+^[Ò¯Ò®nN].*
+# yesstr
+тийм
+# nostr
+үгүй
+# EOF
diff --git a/share/msgdef/nl_NL.ISO8859-1.src b/share/msgdef/nl_NL.ISO8859-1.src
new file mode 100644
index 0000000..a87da07
--- /dev/null
+++ b/share/msgdef/nl_NL.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[jJyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/no_NO.ISO8859-1.src b/share/msgdef/no_NO.ISO8859-1.src
new file mode 100644
index 0000000..a87da07
--- /dev/null
+++ b/share/msgdef/no_NO.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[jJyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/pl_PL.ISO8859-2.src b/share/msgdef/pl_PL.ISO8859-2.src
new file mode 100644
index 0000000..a7acd2a
--- /dev/null
+++ b/share/msgdef/pl_PL.ISO8859-2.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[tTyY].*
+# noexpr
+^[nN].*
+# yesstr
+tak
+# nostr
+nie
+# EOF
diff --git a/share/msgdef/pt_PT.ISO8859-1.src b/share/msgdef/pt_PT.ISO8859-1.src
new file mode 100644
index 0000000..e839a0a
--- /dev/null
+++ b/share/msgdef/pt_PT.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[sSyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/ro_RO.ISO8859-2.src b/share/msgdef/ro_RO.ISO8859-2.src
new file mode 100644
index 0000000..a711ff7
--- /dev/null
+++ b/share/msgdef/ro_RO.ISO8859-2.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[dDyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/ru_RU.CP1251.src b/share/msgdef/ru_RU.CP1251.src
new file mode 100644
index 0000000..5774d94
--- /dev/null
+++ b/share/msgdef/ru_RU.CP1251.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[äÄyY].*
+# noexpr
+^[íÍnN].*
+# yesstr
+äà
+# nostr
+íåò
+# EOF
diff --git a/share/msgdef/ru_RU.CP866.src b/share/msgdef/ru_RU.CP866.src
new file mode 100644
index 0000000..df2b035
--- /dev/null
+++ b/share/msgdef/ru_RU.CP866.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[¤„yY].*
+# noexpr
+^[­nN].*
+# yesstr
+¤ 
+# nostr
+­½â
+# EOF
diff --git a/share/msgdef/ru_RU.ISO8859-5.src b/share/msgdef/ru_RU.ISO8859-5.src
new file mode 100644
index 0000000..360485e
--- /dev/null
+++ b/share/msgdef/ru_RU.ISO8859-5.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[Ô´yY].*
+# noexpr
+^[ݽnN].*
+# yesstr
+ÔÐ
+# nostr
+ÝÕâ
+# EOF
diff --git a/share/msgdef/ru_RU.KOI8-R.src b/share/msgdef/ru_RU.KOI8-R.src
new file mode 100644
index 0000000..465cfa6
--- /dev/null
+++ b/share/msgdef/ru_RU.KOI8-R.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[ÄäyY].*
+# noexpr
+^[ÎînN].*
+# yesstr
+ÄÁ
+# nostr
+ÎÅÔ
+# EOF
diff --git a/share/msgdef/ru_RU.UTF-8.src b/share/msgdef/ru_RU.UTF-8.src
new file mode 100644
index 0000000..21882ca
--- /dev/null
+++ b/share/msgdef/ru_RU.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[дДyY].*
+# noexpr
+^[нÐnN].*
+# yesstr
+да
+# nostr
+нет
+# EOF
diff --git a/share/msgdef/sl_SI.ISO8859-2.src b/share/msgdef/sl_SI.ISO8859-2.src
new file mode 100644
index 0000000..9686b4f
--- /dev/null
+++ b/share/msgdef/sl_SI.ISO8859-2.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[YyJj].*
+# noexpr
+^[Nn].*
+# EOF
diff --git a/share/msgdef/sr_YU.ISO8859-2.src b/share/msgdef/sr_YU.ISO8859-2.src
new file mode 100644
index 0000000..a711ff7
--- /dev/null
+++ b/share/msgdef/sr_YU.ISO8859-2.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[dDyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/sr_YU.ISO8859-5.src b/share/msgdef/sr_YU.ISO8859-5.src
new file mode 100644
index 0000000..24ec0c7
--- /dev/null
+++ b/share/msgdef/sr_YU.ISO8859-5.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[Ô´yY].*
+# noexpr
+^[ݽnN].*
+# yesstr
+ÔÐ
+# nostr
+ÝÕ
+# EOF
diff --git a/share/msgdef/sr_YU.UTF-8.src b/share/msgdef/sr_YU.UTF-8.src
new file mode 100644
index 0000000..72dca12
--- /dev/null
+++ b/share/msgdef/sr_YU.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[дДyY].*
+# noexpr
+^[нÐnN].*
+# yesstr
+да
+# nostr
+не
+# EOF
diff --git a/share/msgdef/sv_SE.ISO8859-1.src b/share/msgdef/sv_SE.ISO8859-1.src
new file mode 100644
index 0000000..a87da07
--- /dev/null
+++ b/share/msgdef/sv_SE.ISO8859-1.src
@@ -0,0 +1,10 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[jJyY].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/tr_TR.ISO8859-9.src b/share/msgdef/tr_TR.ISO8859-9.src
new file mode 100644
index 0000000..4732994
--- /dev/null
+++ b/share/msgdef/tr_TR.ISO8859-9.src
@@ -0,0 +1,11 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+# XXX: I with dot above also should be included to yesexpr
+^[IiYy].*
+# noexpr
+^[nN].*
+# EOF
diff --git a/share/msgdef/uk_UA.CP1251.src b/share/msgdef/uk_UA.CP1251.src
new file mode 100644
index 0000000..f3fd776
--- /dev/null
+++ b/share/msgdef/uk_UA.CP1251.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[òÒyY].*
+# noexpr
+^[íÍnN].*
+# yesstr
+òàê
+# nostr
+í³
+# EOF
diff --git a/share/msgdef/uk_UA.ISO8859-5.src b/share/msgdef/uk_UA.ISO8859-5.src
new file mode 100644
index 0000000..cc508146
--- /dev/null
+++ b/share/msgdef/uk_UA.ISO8859-5.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[âÂyY].*
+# noexpr
+^[ݽnN].*
+# yesstr
+âÐÚ
+# nostr
+Ýö
+# EOF
diff --git a/share/msgdef/uk_UA.KOI8-U.src b/share/msgdef/uk_UA.KOI8-U.src
new file mode 100644
index 0000000..5eec972
--- /dev/null
+++ b/share/msgdef/uk_UA.KOI8-U.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[ÔôyY].*
+# noexpr
+^[ÎînN].*
+# yesstr
+ÔÁË
+# nostr
+Φ
+# EOF
diff --git a/share/msgdef/uk_UA.UTF-8.src b/share/msgdef/uk_UA.UTF-8.src
new file mode 100644
index 0000000..cfc5a2e
--- /dev/null
+++ b/share/msgdef/uk_UA.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[тТyY].*
+# noexpr
+^[нÐnN].*
+# yesstr
+так
+# nostr
+ні
+# EOF
diff --git a/share/msgdef/zh_CN.GB18030.src b/share/msgdef/zh_CN.GB18030.src
new file mode 100644
index 0000000..6e9cd83
--- /dev/null
+++ b/share/msgdef/zh_CN.GB18030.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY£ù£ÙÊÇ].*
+# noexpr
+^[nN£î£Î²»·ñ].*
+# yesstr
+ÊÇ
+# nostr
+·ñ
+# EOF
diff --git a/share/msgdef/zh_CN.GB2312.src b/share/msgdef/zh_CN.GB2312.src
new file mode 100644
index 0000000..6e9cd83
--- /dev/null
+++ b/share/msgdef/zh_CN.GB2312.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY£ù£ÙÊÇ].*
+# noexpr
+^[nN£î£Î²»·ñ].*
+# yesstr
+ÊÇ
+# nostr
+·ñ
+# EOF
diff --git a/share/msgdef/zh_CN.UTF-8.src b/share/msgdef/zh_CN.UTF-8.src
new file mode 100644
index 0000000..975134e
--- /dev/null
+++ b/share/msgdef/zh_CN.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yYyY是].*
+# noexpr
+^[nNnNä¸å¦].*
+# yesstr
+是
+# nostr
+å¦
+# EOF
diff --git a/share/msgdef/zh_CN.eucCN.src b/share/msgdef/zh_CN.eucCN.src
new file mode 100644
index 0000000..6e9cd83
--- /dev/null
+++ b/share/msgdef/zh_CN.eucCN.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY£ù£ÙÊÇ].*
+# noexpr
+^[nN£î£Î²»·ñ].*
+# yesstr
+ÊÇ
+# nostr
+·ñ
+# EOF
diff --git a/share/msgdef/zh_TW.Big5.src b/share/msgdef/zh_TW.Big5.src
new file mode 100644
index 0000000..cc1bfce
--- /dev/null
+++ b/share/msgdef/zh_TW.Big5.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yY£B¢ç¬O].*
+# noexpr
+^[nN¢ö¢Ü¤£§_].*
+# yesstr
+¬O
+# nostr
+§_
+# EOF
diff --git a/share/msgdef/zh_TW.UTF-8.src b/share/msgdef/zh_TW.UTF-8.src
new file mode 100644
index 0000000..975134e
--- /dev/null
+++ b/share/msgdef/zh_TW.UTF-8.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# yesexpr
+^[yYyY是].*
+# noexpr
+^[nNnNä¸å¦].*
+# yesstr
+是
+# nostr
+å¦
+# EOF
diff --git a/share/numericdef/Makefile b/share/numericdef/Makefile
new file mode 100644
index 0000000..6f91240
--- /dev/null
+++ b/share/numericdef/Makefile
@@ -0,0 +1,129 @@
+# $FreeBSD$
+
+LOCALES= af_ZA.ISO8859-1 \
+ am_ET.UTF-8 \
+ be_BY.CP1251 \
+ bg_BG.CP1251 \
+ ca_ES.ISO8859-1 \
+ cs_CZ.ISO8859-2 \
+ da_DK.ISO8859-1 \
+ de_DE.ISO8859-1 \
+ el_GR.ISO8859-7 \
+ en_US.ISO8859-1 \
+ es_ES.ISO8859-1 \
+ et_EE.ISO8859-15 \
+ eu_ES.ISO8859-1 \
+ fi_FI.ISO8859-1 \
+ fr_BE.ISO8859-1 \
+ fr_FR.ISO8859-1 \
+ hi_IN.ISCII-DEV \
+ hr_HR.ISO8859-2 \
+ hu_HU.ISO8859-2 \
+ hy_AM.ARMSCII-8 \
+ is_IS.ISO8859-1 \
+ it_IT.ISO8859-1 \
+ ja_JP.eucJP \
+ kk_KZ.PT154 \
+ ko_KR.eucKR \
+ lt_LT.ISO8859-13 \
+ mn_MN.UTF-8 \
+ nl_NL.ISO8859-1 \
+ no_NO.ISO8859-1 \
+ pl_PL.ISO8859-2 \
+ pt_BR.ISO8859-1 \
+ pt_PT.ISO8859-1 \
+ ro_RO.ISO8859-2 \
+ ru_RU.KOI8-R \
+ sk_SK.ISO8859-2 \
+ sl_SI.ISO8859-2 \
+ sr_YU.ISO8859-2 \
+ sr_YU.ISO8859-5 \
+ sv_SE.ISO8859-1 \
+ tr_TR.ISO8859-9 \
+ uk_UA.KOI8-U \
+ zh_CN.eucCN
+
+LOCALEDIR= /usr/share/locale
+
+.SUFFIXES: .src .out
+
+.src.out:
+ grep -v '^#' < ${.IMPSRC} > ${.TARGET}
+
+FILES= ${LOCALES:S/$/.out/}
+FILESNAME= LC_NUMERIC
+
+.for locale in ${LOCALES}
+FILESDIR_${locale}.out= ${LOCALEDIR}/${locale}
+.endfor
+
+CLEANFILES= ${FILES}
+
+ENCODINGS= ARMSCII-8 Big5 Big5HKSCS \
+ CP1131 CP1251 CP866 CP949 \
+ eucCN eucJP eucKR GB18030 GB2312 GBK \
+ ISO8859-1 ISO8859-2 ISO8859-4 ISO8859-5 ISO8859-7 ISO8859-9 \
+ ISO8859-13 ISO8859-15 \
+ KOI8-R KOI8-U PT154 SJIS US-ASCII UTF-8
+
+BE_LINKS= fr_BE:nl_BE
+DE_LINKS= de_DE:de_AT de_DE:de_CH
+FR_LINKS= fr_FR:fr_CA fr_FR:fr_CH
+GB_LINKS= en_GB:en_AU en_GB:en_NZ
+IT_LINKS= it_IT:it_CH
+NO_LINKS= no_NO:nb_NO no_NO:nn_NO
+US_LINKS= en_US:en_CA en_US:en_GB
+
+ARMSCII-8_UTF-8= hy_AM
+Big5_UTF-8= zh_TW:zh_HK zh_TW
+CP1251_CP1131= be_BY
+CP1251_ISO8859-5= be_BY
+CP1251_UTF-8= be_BY bg_BG
+CP866_UTF-8= ru_RU
+eucCN_Big5= zh_CN:zh_TW
+eucCN_Big5HKSCS= zh_CN:zh_HK
+eucCN_GB18030= zh_CN
+eucCN_GB2312= zh_CN
+eucCN_GBK= zh_CN
+eucCN_UTF-8= zh_CN
+eucJP_SJIS= ja_JP
+eucJP_UTF-8= ja_JP
+eucKR_CP949= ko_KR
+eucKR_UTF-8= ko_KR
+ISO8859-1_ISO8859-15= af_ZA ca_ES da_DK de_DE en_US es_ES eu_ES fi_FI \
+ fr_BE fr_FR is_IS it_CH it_IT nl_NL no_NO pt_PT sv_SE \
+ ${BE_LINKS} ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} \
+ ${IT_LINKS} ${NO_LINKS} ${US_LINKS}
+ISO8859-1_ISO8859-1= ${BE_LINKS} ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} \
+ ${IT_LINKS} ${NO_LINKS} ${US_LINKS}
+ISO8859-1_US-ASCII= en_US ${GB_LINKS} ${US_LINKS}
+ISO8859-1_UTF-8= af_ZA ca_ES da_DK de_DE en_US es_ES eu_ES fi_FI fr_BE \
+ fr_FR is_IS it_IT nl_NL no_NO pt_BR pt_PT sv_SE
+ISO8859-2_UTF-8= cs_CZ hr_HR hu_HU pl_PL ro_RO sk_SK sl_SI
+ISO8859-5_UTF-8= sr_YU uk_UA
+ISO8859-5_CP1251= uk_UA
+ISO8859-7_UTF-8= el_GR
+ISO8859-9_UTF-8= tr_TR
+ISO8859-13_ISO8859-4= lt_LT
+ISO8859-13_UTF-8= lt_LT
+ISO8859-15_UTF-8= et_EE
+KOI8-R_CP1251= ru_RU
+KOI8-R_CP866= ru_RU
+KOI8-R_ISO8859-5= ru_RU
+KOI8-U_ISO8859-5= uk_UA
+PT154_UTF-8= kk_KZ
+US-ASCII_UTF-8= en_US:he_IL
+UTF-8_UTF-8= ${BE_LINKS} ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} en_GB:en_IE \
+ ${IT_LINKS} ${NO_LINKS} ${US_LINKS}
+
+SYMLINKS=
+.for enc1 in ${ENCODINGS}
+.for enc2 in ${ENCODINGS}
+.for lang_terr in ${${enc1}_${enc2}}
+SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+.endfor
+.endfor
+.endfor
+
+.include <bsd.prog.mk>
diff --git a/share/numericdef/af_ZA.ISO8859-1.src b/share/numericdef/af_ZA.ISO8859-1.src
new file mode 100644
index 0000000..9c48fd3
--- /dev/null
+++ b/share/numericdef/af_ZA.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/am_ET.UTF-8.src b/share/numericdef/am_ET.UTF-8.src
new file mode 100644
index 0000000..cd49d36
--- /dev/null
+++ b/share/numericdef/am_ET.UTF-8.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+.
+# thousands_sep
+,
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/be_BY.CP1251.src b/share/numericdef/be_BY.CP1251.src
new file mode 100644
index 0000000..0b0b623
--- /dev/null
+++ b/share/numericdef/be_BY.CP1251.src
@@ -0,0 +1,11 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping
+3;3
+# EOF
diff --git a/share/numericdef/bg_BG.CP1251.src b/share/numericdef/bg_BG.CP1251.src
new file mode 100644
index 0000000..6867781
--- /dev/null
+++ b/share/numericdef/bg_BG.CP1251.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping
+3;3
+# EOF
diff --git a/share/numericdef/ca_ES.ISO8859-1.src b/share/numericdef/ca_ES.ISO8859-1.src
new file mode 100644
index 0000000..0036ad3
--- /dev/null
+++ b/share/numericdef/ca_ES.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+-1
+# EOF
diff --git a/share/numericdef/cs_CZ.ISO8859-2.src b/share/numericdef/cs_CZ.ISO8859-2.src
new file mode 100644
index 0000000..6867781
--- /dev/null
+++ b/share/numericdef/cs_CZ.ISO8859-2.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping
+3;3
+# EOF
diff --git a/share/numericdef/da_DK.ISO8859-1.src b/share/numericdef/da_DK.ISO8859-1.src
new file mode 100644
index 0000000..9c48fd3
--- /dev/null
+++ b/share/numericdef/da_DK.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/de_DE.ISO8859-1.src b/share/numericdef/de_DE.ISO8859-1.src
new file mode 100644
index 0000000..0036ad3
--- /dev/null
+++ b/share/numericdef/de_DE.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+-1
+# EOF
diff --git a/share/numericdef/el_GR.ISO8859-7.src b/share/numericdef/el_GR.ISO8859-7.src
new file mode 100644
index 0000000..20911c9
--- /dev/null
+++ b/share/numericdef/el_GR.ISO8859-7.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping
+3;3
+# EOF
diff --git a/share/numericdef/en_US.ISO8859-1.src b/share/numericdef/en_US.ISO8859-1.src
new file mode 100644
index 0000000..cd49d36
--- /dev/null
+++ b/share/numericdef/en_US.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+.
+# thousands_sep
+,
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/es_ES.ISO8859-1.src b/share/numericdef/es_ES.ISO8859-1.src
new file mode 100644
index 0000000..0036ad3
--- /dev/null
+++ b/share/numericdef/es_ES.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+-1
+# EOF
diff --git a/share/numericdef/et_EE.ISO8859-15.src b/share/numericdef/et_EE.ISO8859-15.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/et_EE.ISO8859-15.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/eu_ES.ISO8859-1.src b/share/numericdef/eu_ES.ISO8859-1.src
new file mode 100644
index 0000000..f182a55
--- /dev/null
+++ b/share/numericdef/eu_ES.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+-1
+# EOF
diff --git a/share/numericdef/fi_FI.ISO8859-1.src b/share/numericdef/fi_FI.ISO8859-1.src
new file mode 100644
index 0000000..9c48fd3
--- /dev/null
+++ b/share/numericdef/fi_FI.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/fr_BE.ISO8859-1.src b/share/numericdef/fr_BE.ISO8859-1.src
new file mode 100644
index 0000000..f182a55
--- /dev/null
+++ b/share/numericdef/fr_BE.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+-1
+# EOF
diff --git a/share/numericdef/fr_FR.ISO8859-1.src b/share/numericdef/fr_FR.ISO8859-1.src
new file mode 100644
index 0000000..0036ad3
--- /dev/null
+++ b/share/numericdef/fr_FR.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+-1
+# EOF
diff --git a/share/numericdef/hi_IN.ISCII-DEV.src b/share/numericdef/hi_IN.ISCII-DEV.src
new file mode 100644
index 0000000..99d11f6
--- /dev/null
+++ b/share/numericdef/hi_IN.ISCII-DEV.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+.
+# thousands_sep
+,
+# grouping, separated by ;
+2;3
+# EOF
diff --git a/share/numericdef/hr_HR.ISO8859-2.src b/share/numericdef/hr_HR.ISO8859-2.src
new file mode 100644
index 0000000..27148ff
--- /dev/null
+++ b/share/numericdef/hr_HR.ISO8859-2.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+0;0
+# EOF
diff --git a/share/numericdef/hu_HU.ISO8859-2.src b/share/numericdef/hu_HU.ISO8859-2.src
new file mode 100644
index 0000000..6867781
--- /dev/null
+++ b/share/numericdef/hu_HU.ISO8859-2.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping
+3;3
+# EOF
diff --git a/share/numericdef/hy_AM.ARMSCII-8.src b/share/numericdef/hy_AM.ARMSCII-8.src
new file mode 100644
index 0000000..70aeb8d
--- /dev/null
+++ b/share/numericdef/hy_AM.ARMSCII-8.src
@@ -0,0 +1,15 @@
+# $FreeBSD$
+#
+# LC_NUMERIC source file for ARMSCII-8 locale for FreeBSD
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/is_IS.ISO8859-1.src b/share/numericdef/is_IS.ISO8859-1.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/is_IS.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/it_IT.ISO8859-1.src b/share/numericdef/it_IT.ISO8859-1.src
new file mode 100644
index 0000000..8e5095d
--- /dev/null
+++ b/share/numericdef/it_IT.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+0;0
+# EOF
diff --git a/share/numericdef/ja_JP.eucJP.src b/share/numericdef/ja_JP.eucJP.src
new file mode 100644
index 0000000..cd49d36
--- /dev/null
+++ b/share/numericdef/ja_JP.eucJP.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+.
+# thousands_sep
+,
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/kk_KZ.PT154.src b/share/numericdef/kk_KZ.PT154.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/kk_KZ.PT154.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/ko_KR.eucKR.src b/share/numericdef/ko_KR.eucKR.src
new file mode 100644
index 0000000..cd49d36
--- /dev/null
+++ b/share/numericdef/ko_KR.eucKR.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+.
+# thousands_sep
+,
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/lt_LT.ISO8859-13.src b/share/numericdef/lt_LT.ISO8859-13.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/lt_LT.ISO8859-13.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/mn_MN.UTF-8.src b/share/numericdef/mn_MN.UTF-8.src
new file mode 100644
index 0000000..cd49d36
--- /dev/null
+++ b/share/numericdef/mn_MN.UTF-8.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+.
+# thousands_sep
+,
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/nl_NL.ISO8859-1.src b/share/numericdef/nl_NL.ISO8859-1.src
new file mode 100644
index 0000000..0036ad3
--- /dev/null
+++ b/share/numericdef/nl_NL.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+-1
+# EOF
diff --git a/share/numericdef/no_NO.ISO8859-1.src b/share/numericdef/no_NO.ISO8859-1.src
new file mode 100644
index 0000000..9c48fd3
--- /dev/null
+++ b/share/numericdef/no_NO.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/pl_PL.ISO8859-2.src b/share/numericdef/pl_PL.ISO8859-2.src
new file mode 100644
index 0000000..6867781
--- /dev/null
+++ b/share/numericdef/pl_PL.ISO8859-2.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping
+3;3
+# EOF
diff --git a/share/numericdef/pt_BR.ISO8859-1.src b/share/numericdef/pt_BR.ISO8859-1.src
new file mode 100644
index 0000000..9c48fd3
--- /dev/null
+++ b/share/numericdef/pt_BR.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+.
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/pt_PT.ISO8859-1.src b/share/numericdef/pt_PT.ISO8859-1.src
new file mode 100644
index 0000000..27148ff
--- /dev/null
+++ b/share/numericdef/pt_PT.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+0;0
+# EOF
diff --git a/share/numericdef/ro_RO.ISO8859-2.src b/share/numericdef/ro_RO.ISO8859-2.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/ro_RO.ISO8859-2.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/ru_RU.KOI8-R.src b/share/numericdef/ru_RU.KOI8-R.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/ru_RU.KOI8-R.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/sk_SK.ISO8859-2.src b/share/numericdef/sk_SK.ISO8859-2.src
new file mode 100644
index 0000000..1977624
--- /dev/null
+++ b/share/numericdef/sk_SK.ISO8859-2.src
@@ -0,0 +1,14 @@
+# $FreeBSD$
+#
+# Slovak numeric definition
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping
+3;3
+# EOF
diff --git a/share/numericdef/sl_SI.ISO8859-2.src b/share/numericdef/sl_SI.ISO8859-2.src
new file mode 100644
index 0000000..900949a
--- /dev/null
+++ b/share/numericdef/sl_SI.ISO8859-2.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+0;0
+# EOF
diff --git a/share/numericdef/sr_YU.ISO8859-2.src b/share/numericdef/sr_YU.ISO8859-2.src
new file mode 100644
index 0000000..27148ff
--- /dev/null
+++ b/share/numericdef/sr_YU.ISO8859-2.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+0;0
+# EOF
diff --git a/share/numericdef/sr_YU.ISO8859-5.src b/share/numericdef/sr_YU.ISO8859-5.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/sr_YU.ISO8859-5.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/sv_SE.ISO8859-1.src b/share/numericdef/sv_SE.ISO8859-1.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/sv_SE.ISO8859-1.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/tr_TR.ISO8859-9.src b/share/numericdef/tr_TR.ISO8859-9.src
new file mode 100644
index 0000000..27148ff
--- /dev/null
+++ b/share/numericdef/tr_TR.ISO8859-9.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+0;0
+# EOF
diff --git a/share/numericdef/uk_UA.KOI8-U.src b/share/numericdef/uk_UA.KOI8-U.src
new file mode 100644
index 0000000..4ebc899
--- /dev/null
+++ b/share/numericdef/uk_UA.KOI8-U.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+,
+# thousands_sep
+
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/numericdef/zh_CN.eucCN.src b/share/numericdef/zh_CN.eucCN.src
new file mode 100644
index 0000000..cd49d36
--- /dev/null
+++ b/share/numericdef/zh_CN.eucCN.src
@@ -0,0 +1,12 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# decimal_point
+.
+# thousands_sep
+,
+# grouping, separated by ;
+3;3
+# EOF
diff --git a/share/security/Makefile b/share/security/Makefile
new file mode 100644
index 0000000..c25a52d
--- /dev/null
+++ b/share/security/Makefile
@@ -0,0 +1,8 @@
+# $FreeBSD$
+
+FILES= lomac-policy.contexts
+NO_OBJ=
+FILESDIR= ${BINDIR}/security
+
+.include "${.CURDIR}/../Makefile.inc"
+.include <bsd.prog.mk>
diff --git a/share/security/lomac-policy.contexts b/share/security/lomac-policy.contexts
new file mode 100644
index 0000000..e01bd28
--- /dev/null
+++ b/share/security/lomac-policy.contexts
@@ -0,0 +1,29 @@
+# $FreeBSD$
+#
+# This is a sample LOMAC policy based upon the PLM defined in the
+# original FreeBSD LOMAC port. It may be configured on a
+# system via setfsmac(8).
+
+.* lomac/high
+/sbin/dhclient lomac/high[low]
+/dev(/.*)? lomac/equal
+# This is not an exhaustive list of all "privileged" devices.
+/dev/mdctl lomac/high
+/dev/pci lomac/high
+/dev/k?mem lomac/high
+/dev/io lomac/high
+/dev/agp.* lomac/high
+(/var)?/tmp(/.*)? lomac/equal
+/tmp/\.X11-unix lomac/high[equal]
+/tmp/\.X11-unix/.* lomac/equal
+/proc(/.*)? lomac/equal
+/mnt.* lomac/low
+(/usr)?/home lomac/high[low]
+(/usr)?/home/.* lomac/low
+/var/mail(/.*)? lomac/low
+/var/spool/mqueue(/.*)? lomac/low
+(/mnt)?/cdrom(/.*)? lomac/high
+(/usr)?/home/(ftp|samba)(/.*)? lomac/high
+/var/log/sendmail\.st lomac/low
+/var/run/utmp lomac/equal
+/var/log/(lastlog|wtmp) lomac/equal
diff --git a/share/sendmail/Makefile b/share/sendmail/Makefile
new file mode 100644
index 0000000..00427dc
--- /dev/null
+++ b/share/sendmail/Makefile
@@ -0,0 +1,34 @@
+# $FreeBSD$
+#
+# Doing a make install builds /usr/share/sendmail/
+
+SENDMAIL_DIR=${.CURDIR}/../../contrib/sendmail
+CFDIR= cf
+CFDIRS!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( \( -name CVS -o -name .svn \) -prune \) -o -type d -print)
+CFFILES!= (cd ${SENDMAIL_DIR}; find -L ${CFDIR} \( \( -name CVS -o -name .svn \) -prune \) -o -type f -print)
+
+DDIR= ${DESTDIR}/usr/share/sendmail
+
+NO_OBJ=
+
+# Define SHARED to indicate whether you want symbolic links to the system
+# source (``symlinks''), or a separate copy (``copies'')
+SHARED?= copies
+
+all clean cleandir depend lint tags:
+
+beforeinstall: ${SHARED}
+
+copies::
+ if [ -L ${DDIR}/${CFDIR} ]; then rm -f ${DDIR}/${CFDIR}; fi
+.for dir in ${CFDIRS}
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 755 -d ${DDIR}/${dir}
+.endfor
+.for file in ${CFFILES}
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 444 ${SENDMAIL_DIR}/${file} ${DDIR}/${file}
+.endfor
+
+symlinks::
+ rm -rf ${DDIR}/${CFDIR}; ln -s ${SENDMAIL_DIR}/${CFDIR} ${DDIR}/${CFDIR}
+
+.include <bsd.prog.mk>
diff --git a/share/skel/Makefile b/share/skel/Makefile
new file mode 100644
index 0000000..ffe8015
--- /dev/null
+++ b/share/skel/Makefile
@@ -0,0 +1,14 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+FILESGROUPS= FILES1 FILES2
+FILES1= dot.cshrc dot.login dot.login_conf dot.mailrc dot.profile \
+ dot.shrc
+FILES2= dot.mail_aliases dot.rhosts
+FILES1DIR= /usr/share/skel
+FILES2DIR= /usr/share/skel
+FILES1MODE= 0644
+FILES2MODE= 0600
+NO_OBJ=
+
+.include <bsd.prog.mk>
diff --git a/share/skel/dot.cshrc b/share/skel/dot.cshrc
new file mode 100644
index 0000000..5fa2319
--- /dev/null
+++ b/share/skel/dot.cshrc
@@ -0,0 +1,34 @@
+# $FreeBSD$
+#
+# .cshrc - csh resource script, read at beginning of execution by each shell
+#
+# see also csh(1), environ(7).
+#
+
+alias h history 25
+alias j jobs -l
+alias la ls -a
+alias lf ls -FA
+alias ll ls -lA
+
+# A righteous umask
+umask 22
+
+set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin $HOME/bin)
+
+setenv EDITOR vi
+setenv PAGER more
+setenv BLOCKSIZE K
+
+if ($?prompt) then
+ # An interactive shell -- set some stuff up
+ set filec
+ set history = 100
+ set savehist = 100
+ set mail = (/var/mail/$USER)
+ if ( $?tcsh ) then
+ bindkey "^W" backward-delete-word
+ bindkey -k up history-search-backward
+ bindkey -k down history-search-forward
+ endif
+endif
diff --git a/share/skel/dot.login b/share/skel/dot.login
new file mode 100644
index 0000000..894021a
--- /dev/null
+++ b/share/skel/dot.login
@@ -0,0 +1,8 @@
+# $FreeBSD$
+#
+# .login - csh login script, read by login shell, after `.cshrc' at login.
+#
+# see also csh(1), environ(7).
+#
+
+[ -x /usr/games/fortune ] && /usr/games/fortune freebsd-tips
diff --git a/share/skel/dot.login_conf b/share/skel/dot.login_conf
new file mode 100644
index 0000000..3c4b025
--- /dev/null
+++ b/share/skel/dot.login_conf
@@ -0,0 +1,7 @@
+# $FreeBSD$
+#
+# see login.conf(5)
+#
+#me:\
+# :charset=iso-8859-1:\
+# :lang=de_DE.ISO8859-1:
diff --git a/share/skel/dot.mail_aliases b/share/skel/dot.mail_aliases
new file mode 100644
index 0000000..e319ef8
--- /dev/null
+++ b/share/skel/dot.mail_aliases
@@ -0,0 +1,13 @@
+# $FreeBSD$
+#
+# .mail_aliases - private mail aliases
+#
+# see also mail(1)
+#
+
+# FreeBSD Mailing lists aliases
+# alias freebsd-bugs freebsd-bugs@FreeBSD.org
+# alias freebsd-questions freebsd-questions@FreeBSD.org
+
+# an alias for your good friends
+# alias bicycle christoph gerhardt velophil zentralrad
diff --git a/share/skel/dot.mailrc b/share/skel/dot.mailrc
new file mode 100644
index 0000000..9ab6ac0
--- /dev/null
+++ b/share/skel/dot.mailrc
@@ -0,0 +1,17 @@
+# $FreeBSD$
+#
+# .mailrc - mail resources
+#
+# see also mail(1)
+#
+
+set append ask autoprint
+set indentprefix="> "
+set PAGER=more
+set EDITOR=vi
+set VISUAL=vi
+set folder=Mail
+retain bcc cc date from subject to
+
+# include your private mail aliases
+source ~/.mail_aliases
diff --git a/share/skel/dot.profile b/share/skel/dot.profile
new file mode 100644
index 0000000..2e1ca0c
--- /dev/null
+++ b/share/skel/dot.profile
@@ -0,0 +1,24 @@
+# $FreeBSD$
+#
+# .profile - Bourne Shell startup script for login shells
+#
+# see also sh(1), environ(7).
+#
+
+# remove /usr/games if you want
+PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:$HOME/bin; export PATH
+
+# Setting TERM is normally done through /etc/ttys. Do only override
+# if you're sure that you'll never log in via telnet or xterm or a
+# serial line.
+# Use cons25l1 for iso-* fonts
+# TERM=cons25; export TERM
+
+BLOCKSIZE=K; export BLOCKSIZE
+EDITOR=vi; export EDITOR
+PAGER=more; export PAGER
+
+# set ENV to a file invoked each time sh is started for interactive use.
+ENV=$HOME/.shrc; export ENV
+
+[ -x /usr/games/fortune ] && /usr/games/fortune freebsd-tips
diff --git a/share/skel/dot.rhosts b/share/skel/dot.rhosts
new file mode 100644
index 0000000..30132d5
--- /dev/null
+++ b/share/skel/dot.rhosts
@@ -0,0 +1,9 @@
+# $FreeBSD$
+#
+# .rhosts - trusted remote host name and user data base
+#
+# see hosts.equiv(5), rsh(1), rlogin(1), rcp(1)
+#
+# This file should NOT be group or other readable.
+# OtherMachine
+# OtherMachine myFriend
diff --git a/share/skel/dot.shrc b/share/skel/dot.shrc
new file mode 100644
index 0000000..7349169
--- /dev/null
+++ b/share/skel/dot.shrc
@@ -0,0 +1,47 @@
+# $FreeBSD$
+#
+# .shrc - bourne shell startup file
+#
+# This file will be used if the shell is invoked for interactive use and
+# the environment variable ENV is set to this file.
+#
+# see also sh(1), environ(7).
+#
+
+
+# file permissions: rwxr-xr-x
+#
+# umask 022
+
+# Enable the builtin emacs(1) command line editor in sh(1),
+# e.g. C-a -> beginning-of-line.
+set -o emacs
+
+# Uncomment this and comment the above to enable the builtin vi(1) command
+# line editor in sh(1), e.g. ESC to go into visual mode.
+# set -o vi
+
+
+# some useful aliases
+alias h='fc -l'
+alias j=jobs
+alias m=$PAGER
+alias ll='ls -laFo'
+alias l='ls -l'
+alias g='egrep -i'
+
+# # be paranoid
+# alias cp='cp -ip'
+# alias mv='mv -i'
+# alias rm='rm -i'
+
+
+# # set prompt: ``username@hostname$ ''
+# PS1="`whoami`@`hostname | sed 's/\..*//'`"
+# case `id -u` in
+# 0) PS1="${PS1}# ";;
+# *) PS1="${PS1}$ ";;
+# esac
+
+# search path for cd(1)
+# CDPATH=.:$HOME
diff --git a/share/snmp/Makefile b/share/snmp/Makefile
new file mode 100644
index 0000000..1bfc5b9
--- /dev/null
+++ b/share/snmp/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR= mibs
+
+.include <bsd.subdir.mk>
diff --git a/share/snmp/mibs/FREEBSD-MIB.txt b/share/snmp/mibs/FREEBSD-MIB.txt
new file mode 100644
index 0000000..cf6f080
--- /dev/null
+++ b/share/snmp/mibs/FREEBSD-MIB.txt
@@ -0,0 +1,79 @@
+-- *****************************************************************
+-- This file is in the public domain.
+--
+-- FreeBSD SMI { enterprises 2238 }
+--
+-- $FreeBSD$
+--
+-- *****************************************************************
+
+FREEBSD-MIB DEFINITIONS ::= BEGIN
+
+IMPORTS
+ MODULE-IDENTITY,
+ OBJECT-IDENTITY,
+ enterprises
+ FROM SNMPv2-SMI;
+
+freeBSD MODULE-IDENTITY
+ LAST-UPDATED "200610311000Z"
+ ORGANIZATION "The FreeBSD Project."
+ CONTACT-INFO
+ "phk@FreeBSD.org is contact person for this file.
+ core@FreeBSD.org is the final authority."
+ DESCRIPTION
+ "The Structure of Management Information for the
+ FreeBSD Project enterprise MIB subtree."
+ REVISION "200610310800Z"
+ DESCRIPTION
+ "Initial version of this MIB module."
+ ::= { enterprises 2238 } -- assigned by IANA
+
+
+freeBSDsrc OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "Subtree for things which lives in the src tree."
+ ::= { freeBSD 1 }
+
+freeBSDports OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "Subtree for things which lives in the ports tree."
+ ::= { freeBSD 2 }
+
+freeBSDpeople OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "Subtree for FreeBSD people.
+ Under this branch any FreeBSD committer may claim
+ a subtree. Grab the next sequential oid in the list.
+ These assignments are not revoked when committers leave
+ the FreeBSD project.
+ "
+ ::= { freeBSD 3 }
+
+freeBSDpeoplePhk OBJECT-IDENTITY
+ STATUS current DESCRIPTION
+ "Subtree for phk@FreeBSD.org"
+ ::= {freeBSDpeople 1}
+
+freeBSDVersion OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "Subtree to register FreeBSD versions. The OID for a FreeBSD
+ version is formed by appending the dot delimited numbers
+ from the release number to this base OID. Examples:
+
+ 5.2.1-STABLE: freeBSDVersion.5.2.1
+ 6.1-STABLE: freeBSDVersion.6.1
+ 7.0-CURRENT: freeBSDVersion.7.0
+
+ There is no indication whether this is STABLE or CURRENT.
+
+ The sysObjectId is automatically set to the value indicated
+ by the uname(3) release field by bsnmpd(1). This initial
+ value can be overwritten in the configuration file."
+ ::= { freeBSD 4 }
+
+END
diff --git a/share/snmp/mibs/Makefile b/share/snmp/mibs/Makefile
new file mode 100644
index 0000000..8de73c9
--- /dev/null
+++ b/share/snmp/mibs/Makefile
@@ -0,0 +1,7 @@
+# $FreeBSD$
+
+FILES= FREEBSD-MIB.txt
+NO_OBJ=
+FILESDIR= ${SHAREDIR}/snmp/mibs
+
+.include <bsd.prog.mk>
diff --git a/share/syscons/Makefile b/share/syscons/Makefile
new file mode 100644
index 0000000..9cbf100
--- /dev/null
+++ b/share/syscons/Makefile
@@ -0,0 +1,5 @@
+# $FreeBSD$
+
+SUBDIR= fonts keymaps scrnmaps
+
+.include <bsd.subdir.mk>
diff --git a/share/syscons/fonts/INDEX.fonts b/share/syscons/fonts/INDEX.fonts
new file mode 100644
index 0000000..b7a786c
--- /dev/null
+++ b/share/syscons/fonts/INDEX.fonts
@@ -0,0 +1,420 @@
+#
+# $FreeBSD$
+#
+# database for vidfont(8)
+#
+# Format <file>:<lang>:<description>
+#
+# lang: ar bg cs da de el en es fi fr hr hu hy is it iw ja ko nl no pl
+# pt ro ru sh sk sl sv tr uk zh
+# lang: lang,lang
+#
+# Example:
+# german.iso.kbd:de:Deutsch ISO
+# german.iso.kbd:en:German ISO
+#
+# If lang empty use 'en' (us-english) as default.
+#
+# See also setlocale(3),
+# /usr/share/locale, /usr/X11/lib/X11/locale/locale.alias
+######################################################################
+# Subject: ISO 8859-1 National Character Set FAQ
+# Date: 23 Nov 1994 15:48:14 GMT
+# Archive-name: internationalization/iso-8859-1-charset
+#
+# ISO 8859-1 supports the following languages:
+# Afrikaans, Catalan, Danish, Dutch, English, Faroese, Finnish, French,
+# German, Galician, Irish, Icelandic, Italian, Norwegian, Portuguese,
+# Spanish and Swedish.
+#
+# (It has been called to my attention that Albanian can be written with
+# ISO 8859-1 also. However, from a standards point of view, ISO 8859-2
+# is the appropriate character set for Balkan countries.)
+#
+# ISO 8859-1 is just one part of the ISO-8859 standard, which specifies
+# several character sets, e.g.:
+# 8859-1 Europe, Latin America
+# 8859-2 Eastern Europe
+# 8859-3 SE Europe/miscellaneous (Esperanto, Maltese, etc.)
+# 8859-4 Scandinavia/Baltic (mostly covered by 8859-1 also)
+# 8859-5 Cyrillic
+# 8859-6 Arabic
+# 8859-7 Greek
+# 8859-8 Hebrew
+# 8859-9 Latin5, same as 8859-1 except for Turkish instead of Icelandic
+# 8859-10 Latin6, for Eskimo/Scandinavian languages
+# 8859-15 Latin9, same as 8859-1 except for new characters incl. Euro/OE/oe.
+#
+################################
+# Language support: MENU, FONT
+#
+MENU:en:Choose your keyboard font
+MENU:de:Wähle Deine Schrift
+MENU:fr:Choisissez votre fonte écran
+MENU:pl:Wybierz czcionkê ekranow±
+MENU:es:Escoja el juego de caracteres
+MENU:iw:äîéùøäî ïôåâ øçá
+MENU:uk:÷ÉÂÅÒ¦ÔØ ÛÒÉÆÔ
+MENU:el:ÅðéëÝîôå ôç ãñáììáôïóåéñÜ ôçò êïíóüëáò
+MENU:hy:ÀÝïñ»ù ·ñ³ýÇÏ ë³ñù³íáñÙ³Ý ï³é³ï»ë³ÏÁ
+#
+FONT:en:cp437-8x16.fnt
+FONT:de,fr,es,is,it,sv,da,fi,nl,no,pt:iso-8x16.fnt
+FONT:ru:koi8-r-8x16.fnt
+FONT:hr,hu,pl,cs:iso02-8x16.fnt
+FONT:lt:iso04-8x16.fnt
+FONT:iw:iso08-8x16.fnt
+FONT:uk:koi8-u-8x16.fnt
+FONT:el:iso07-8x16.fnt
+FONT:hy:armscii8-8x16.fnt
+#
+armscii8-8x16.fnt:hy:ARMSCII-8 Îá¹³íáñÙ³Ý ³ÕáõëÛ³Ï, 8x16
+armscii8-8x16.fnt:ru:ëÏÄÉÒÏ×ËÁ ARMSCII-8, 8x16
+armscii8-8x16.fnt:en:ARMSCII-8 Character set, 8x16
+armscii8-8x16.fnt:de:ARMSCII-8 Zeichensatz, 8x16
+
+armscii8-8x14.fnt:hy:ARMSCII-8 Îá¹³íáñÙ³Ý ³ÕáõëÛ³Ï, 8x14
+armscii8-8x14.fnt:ru:ëÏÄÉÒÏ×ËÁ ARMSCII-8, 8x14
+armscii8-8x14.fnt:en:ARMSCII-8 Character set, 8x14
+armscii8-8x14.fnt:de:ARMSCII-8 Zeichensatz, 8x14
+
+armscii8-8x8.fnt:hy:ARMSCII-8 Îá¹³íáñÙ³Ý ³ÕáõëÛ³Ï, 8x8
+armscii8-8x8.fnt:ru:ëÏÄÉÒÏ×ËÁ ARMSCII-8, 8x8
+armscii8-8x8.fnt:en:ARMSCII-8 Character set, 8x8
+armscii8-8x8.fnt:de:ARMSCII-8 Zeichensatz, 8x8
+
+cp437-8x14.fnt:en:Codepage 437 English, 8x14
+cp437-8x14.fnt:de:Codeseite 437 Englisch, 8x14
+cp437-8x14.fnt:fr:Code page 437 Anglais, 8x14
+cp437-8x14.fnt:es:Página de códigos 437 inglés, 8x14
+cp437-8x14.fnt:uk:ûÒÉÆÔ 437 ÁÎÇ̦ÊÓØËÉÊ, 8x14
+
+cp437-8x16.fnt:en:Codepage 437 English, 8x16
+cp437-8x16.fnt:de:Codeseite 437 Englisch, 8x16
+cp437-8x16.fnt:fr:Code page 437 Anglais, 8x16
+cp437-8x16.fnt:es:Página de códigos 437 inglés, 8x16
+cp437-8x16.fnt:uk:ûÒÉÆÔ 437 ÁÎÇ̦ÊÓØËÉÊ, 8x16
+
+cp437-thin-8x16.fnt:en:Codepage 437 English, 8x16 (thin)
+cp437-thin-8x16.fnt:de:Codeseite 437 Englisch, 8x16 (dünn)
+cp437-thin-8x16.fnt:fr:Code page 437 Anglais, 8x16 (dünn)
+cp437-thin-8x16.fnt:es:Página de códigos 437 inglés, 8x16 (fina)
+cp437-thin-8x16.fnt:uk:ûÒÉÆÔ 437 ÁÎÇ̦ÊÓØËÉÊ, 8x16 (ÔÏÎËÉÊ)
+
+cp437-8x8.fnt:en:Codepage 437 English, 8x8
+cp437-8x8.fnt:de:Codeseite 437 Englisch, 8x8
+cp437-8x8.fnt:fr:Code page 437 Anglais, 8x8
+cp437-8x8.fnt:es:Página de códigos 437 inglés, 8x8
+cp437-8x8.fnt:uk:ûÒÉÆÔ 437 ÁÎÇ̦ÊÓØËÉÊ, 8x8
+
+cp437-thin-8x8.fnt:en:Codepage 437 English, 8x8 (thin)
+cp437-thin-8x8.fnt:de:Codeseite 437 Englisch, 8x8 (dünn)
+cp437-thin-8x8.fnt:fr:Code page 437 Anglais, 8x8 (dünn)
+cp437-thin-8x8.fnt:es:Página de códigos 437 inglés, 8x8 (fina)
+cp437-thin-8x8.fnt:uk:ûÒÉÆÔ 437 ÁÎÇ̦ÊÓØËÉÊ, 8x8 (ÔÏÎËÉÊ)
+
+cp850-8x14.fnt:en:Codepage 850 Multilingual Latin I, 8x14
+cp850-8x14.fnt:de:Codeseite 850 Mehrsprachig (Lateinisch I), 8x14
+cp850-8x14.fnt:fr:Latin multilingual I, 8x14
+cp850-8x14.fnt:es:Página de códigos 850 multilingüe, 8x14
+cp850-8x14.fnt:uk:ûÒÉÆÔ 850 ÌÁÔÉÎÉÃÑ I, 8x14
+
+cp850-8x16.fnt:en:Codepage 850 Multilingual Latin I, 8x16
+cp850-8x16.fnt:de:Codeseite 850 Mehrsprachig (Lateinisch I), 8x16
+cp850-8x16.fnt:fr:Latin multilingual I, 8x16
+cp850-8x16.fnt:es:Página de códigos 850 multilingüe, 8x16
+cp850-8x16.fnt:uk:ûÒÉÆÔ 850 ÌÁÔÉÎÉÃÑ I, 8x16
+
+cp850-thin-8x16.fnt:en:Codepage 850 Multilingual Latin I, 8x16 (thin)
+cp850-thin-8x16.fnt:de:Codeseite 850 Mehrsprachig (Lateinisch I), 8x16 (dünn)
+cp850-thin-8x16.fnt:fr:Latin multilingual I, 8x16 (fine)
+cp850-thin-8x16.fnt:es:Página de códigos 850 multilingüe, 8x16 (fina)
+cp850-thin-8x16.fnt:uk:ûÒÉÆÔ 850 ÌÁÔÉÎÉÃÑ I, 8x16 (ÔÏÎËÉÊ)
+
+cp850-8x8.fnt:en:Codepage 850 Multilingual Latin I, 8x8
+cp850-8x8.fnt:de:Codeseite 850 Mehrsprachig (Lateinisch I), 8x8
+cp850-8x8.fnt:fr:Latin multilingual I, 8x8
+cp850-8x8.fnt:es:Página de códigos 850 multilingüe, 8x8
+cp850-8x8.fnt:uk:ûÒÉÆÔ 850 ÌÁÔÉÎÉÃÑ I, 8x8
+
+cp850-thin-8x8.fnt:en:Codepage 850 Multilingual Latin I, 8x8 (thin)
+cp850-thin-8x8.fnt:de:Codeseite 850 Mehrsprachig (Lateinisch I), 8x8 (dünn)
+cp850-thin-8x8.fnt:fr:Latin multilingual I, 8x8 (fine)
+cp850-thin-8x8.fnt:es:Página de códigos 850 multilingüe, 8x8 (fina)
+cp850-thin-8x8.fnt:uk:ûÒÉÆÔ 850 ÌÁÔÉÎÉÃÑ I, 8x8 (ÔÏÎËÉÊ)
+
+cp865-8x14.fnt:en:Codepage 865 Norwegian, 8x14
+cp865-8x14.fnt:de:Codeseite 865 Norwegen, 8x14
+cp865-8x14.fnt:fr:Code page 865 Norvégien, 8x14
+cp865-8x14.fnt:es:Página de códigos 865 noruego, 8x14
+cp865-8x14.fnt:uk:ûÒÉÆÔ 865 ÎÏÒ×ÅÚØËÉÊ, 8x14
+
+cp865-8x16.fnt:en:Codepage 865 Norwegian, 8x16
+cp865-8x16.fnt:de:Codeseite 865 Norwegen, 8x16
+cp865-8x16.fnt:fr:Code page 865 Norvégien, 8x16
+cp865-8x16.fnt:es:Página de códigos 865 noruego, 8x16
+cp865-8x16.fnt:uk:ûÒÉÆÔ 865 ÎÏÒ×ÅÚØËÉÊ, 8x16
+
+cp865-thin-8x16.fnt:en:Codepage 865 Norwegian, 8x16 (thin)
+cp865-thin-8x16.fnt:de:Codeseite 865 Norwegen, 8x16 (dünn)
+cp865-thin-8x16.fnt:fr:Code page 865 Norvégien, 8x16 (fine)
+cp865-thin-8x16.fnt:es:Página de códigos 865 noruego, 8x16 (fina)
+cp865-thin-8x16.fnt:uk:ûÒÉÆÔ 865 ÎÏÒ×ÅÚØËÉÊ, 8x16 (ÔÏÎËÉÊ)
+
+cp865-8x8.fnt:en:Codepage 885 Norwegian, 8x8
+cp865-8x8.fnt:de:Codeseite 865 Norwegen, 8x8
+cp865-8x8.fnt:fr:Code page 865 Norvégien, 8x8
+cp865-8x8.fnt:es:Página de códigos 865 noruego, 8x8
+cp865-8x8.fnt:uk:ûÒÉÆÔ 865 ÎÏÒ×ÅÚØËÉÊ, 8x8
+
+cp865-thin-8x8.fnt:en:Codepage 885 Norwegian, 8x8 (thin)
+cp865-thin-8x8.fnt:de:Codeseite 885 Norwegen, 8x8 (thin)
+cp865-thin-8x8.fnt:fr:Code page 885 Norvégien, 8x8 (fine)
+cp865-thin-8x8.fnt:es:Página de códigos 865 noruego, 8x8 (fina)
+cp865-thin-8x8.fnt:uk:ûÒÉÆÔ 885 ÎÏÒ×ÅÚØËÉÊ, 8x8 (ÔÏÎËÉÊ)
+
+cp866-8x8.fnt:en:Codepage 866 Russian, 8x8
+cp866-8x8.fnt:de:Codeseite 866 Russisch, 8x8
+cp866-8x8.fnt:ru:ûÒÉÆÔ cp866 ÒÕÓÓËÉÊ, 8x8
+cp866-8x8.fnt:fr:Code page 866 Russe, 8x8
+cp866-8x8.fnt:es:Página de códigos 866 ruso, 8x8
+cp866-8x8.fnt:uk:ûÒÉÆÔ cp866 ÒÏÓ¦ÊÓØËÉÊ, 8x8
+
+cp866-8x14.fnt:en:Codepage 866 Russian, 8x14
+cp866-8x14.fnt:de:Codeseite 866 Russisch, 8x14
+cp866-8x14.fnt:ru:ûÒÉÆÔ cp866 ÒÕÓÓËÉÊ, 8x14
+cp866-8x14.fnt:fr:Code page 866 Russe, 8x14
+cp866-8x14.fnt:es:Página de códigos 866 ruso, 8x14
+cp866-8x14.fnt:uk:ûÒÉÆÔ cp866 ÒÏÓ¦ÊÓØËÉÊ, 8x14
+
+cp866-8x16.fnt:en:Codepage 866 Russian, 8x16
+cp866-8x16.fnt:de:Codeseite 866 Russisch, 8x16
+cp866-8x16.fnt:ru:ûÒÉÆÔ cp866 ÒÕÓÓËÉÊ, 8x16
+cp866-8x16.fnt:fr:Code page 866 Russe, 8x16
+cp866-8x16.fnt:es:Página de códigos 866 ruso, 8x16
+cp866-8x16.fnt:uk:ûÒÉÆÔ cp866 ÒÏÓ¦ÊÓØËÉÊ, 8x16
+
+cp866b-8x16.fnt:en:Codepage 866 (b) Russian, 8x16
+cp866b-8x16.fnt:de:Codeseite 866 (b) Russisch, 8x16
+cp866b-8x16.fnt:ru:ûÒÉÆÔ cp866 (b) ÒÕÓÓËÉÊ, 8x16
+cp866b-8x16.fnt:fr:Code page 866 (b) Russe, 8x16
+cp866b-8x16.fnt:es:Página de códigos 866 (b) ruso, 8x16
+cp866b-8x16.fnt:uk:ûÒÉÆÔ cp866 (b) ÒÏÓ¦ÊÓØËÉÊ, 8x16
+
+cp866c-8x16.fnt:en:Codepage 866 (c) Russian, 8x16
+cp866c-8x16.fnt:de:Codeseite 866 (c) Russisch, 8x16
+cp866c-8x16.fnt:ru:ûÒÉÆÔ cp866 (c) ÒÕÓÓËÉÊ, 8x16
+cp866c-8x16.fnt:fr:Code page 866 (c) Russe, 8x16
+cp866c-8x16.fnt:es:Página de códigos 866 (c) ruso, 8x16
+cp866c-8x16.fnt:uk:ûÒÉÆÔ cp866 (c) ÒÏÓ¦ÊÓØËÉÊ, 8x16
+
+cp1251-8x8.fnt:en:Codepage 1251 Cyrillic, 8x8
+cp1251-8x8.fnt:ru:ûÒÉÆÔ cp1251 ËÉÒÉÌÌÉÃÁ, 8x8
+cp1251-8x8.fnt:uk:ûÒÉÆÔ cp1251-ËÉÒÉÌÉÃÑ, 8x8
+
+cp1251-8x14.fnt:en:Codepage 1251 Cyrillic, 8x14
+cp1251-8x14.fnt:ru:ûÒÉÆÔ cp1251 ËÉÒÉÌÌÉÃÁ, 8x14
+cp1251-8x14.fnt:uk:ûÒÉÆÔ cp1251-ËÉÒÉÌÉÃÑ, 8x14
+
+cp1251-8x16.fnt:en:Codepage 1251 Cyrillic, 8x16
+cp1251-8x16.fnt:ru:ûÒÉÆÔ cp1251 ËÉÒÉÌÌÉÃÁ, 8x16
+cp1251-8x16.fnt:uk:ûÒÉÆÔ cp1251-ËÉÒÉÌÉÃÑ, 8x16
+
+swiss-1131-8x16.fnt:en:Codepage 1131 Belarusian, 8x16 (swiss)
+swiss-1251-8x16.fnt:en:Codepage 1251 Cyrillic, 8x16 (swiss)
+
+haik8-8x16.fnt:hy:гۻñ»Ý haik8 ¥û·ï³·áñÍ»É armscii8 í»ñ³Ïṩ Ñ»ï¤
+haik8-8x16.fnt:ru:áÒÍÑÎÓËÁÑ haik8 (ÔÏÌØËÏ ÄÌÑ ÐÅÒÅËÏÄÉÒÏ×ËÉ Ó armscii8)
+haik8-8x16.fnt:en:haik8 codepage (use only with armscii8 screenmap)
+haik8-8x16.fnt:de:haik8 Zeichensatz (nur mit armscii8 umwandler verwenden)
+
+haik8-8x14.fnt:hy:гۻñ»Ý haik8 ¥û·ï³·áñÍ»É armscii8 í»ñ³Ïṩ Ñ»ï¤
+haik8-8x14.fnt:ru:áÒÍÑÎÓËÁÑ haik8 (ÔÏÌØËÏ ÄÌÑ ÐÅÒÅËÏÄÉÒÏ×ËÉ Ó armscii8)
+haik8-8x14.fnt:en:haik8 codepage (use only with armscii8 screenmap)
+haik8-8x14.fnt:de:haik8 Zeichensatz (nur mit armscii8 umwandler verwenden)
+
+haik8-8x8.fnt:hy:гۻñ»Ý haik8 ¥û·ï³·áñÍ»É armscii8 í»ñ³Ïṩ Ñ»ï¤
+haik8-8x8.fnt:ru:áÒÍÑÎÓËÁÑ haik8 (ÔÏÌØËÏ ÄÌÑ ÐÅÒÅËÏÄÉÒÏ×ËÉ Ó armscii8)
+haik8-8x8.fnt:en:haik8 codepage (use only with armscii8 screenmap)
+haik8-8x8.fnt:de:haik8 Zeichensatz (nur mit armscii8 umwandler verwenden)
+
+iso-8x16.fnt:en:ISO-8859-1 West European, 8x16
+iso-8x16.fnt:de:ISO-8859-1 Westeuropa, 8x16
+iso-8x16.fnt:fr:ISO-8859-1 Est européen, 8x16
+iso-8x16.fnt:es:ISO-8859-1 europeo occidental, 8x16
+iso-8x16.fnt:uk:ISO-8859-1 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x16
+
+iso-8x14.fnt:en:ISO-8859-1 West European, 8x14
+iso-8x14.fnt:de:ISO-8859-1 Westeuropa, 8x14
+iso-8x14.fnt:fr:ISO-8859-1 Est européen, 8x14
+iso-8x14.fnt:es:ISO-8859-1 europeo occidental, 8x14
+iso-8x14.fnt:uk:ISO-8859-1 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x14
+
+iso-8x8.fnt:en:ISO-8859-1 West European, 8x8
+iso-8x8.fnt:de:ISO-8859-1 Westeuropa, 8x8
+iso-8x8.fnt:fr:ISO-8859-1 Est européen, 8x8
+iso-8x8.fnt:es:ISO-8859-1 europeo occidental, 8x8
+iso-8x8.fnt:uk:ISO-8859-1 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x8
+
+iso-thin-8x16.fnt:en:ISO-8859-1 West European, 8x16 (thin)
+iso-thin-8x16.fnt:de:ISO-8859-1 Westeuropa, 8x16 (dünn)
+iso-thin-8x16.fnt:fr:ISO-8859-1 Est européen, 8x16 (fine)
+iso-thin-8x16.fnt:es:ISO-8859-1 europeo occidental, 8x16 (fina)
+iso-thin-8x16.fnt:uk:ISO-8859-1 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x16 (ÔÏÎËÉÊ)
+
+iso02-8x16.fnt:en:ISO-8859-2 Central European, 8x16
+iso02-8x16.fnt:de:ISO-8859-2 Mitteleuropa, 8x16
+iso02-8x16.fnt:es:ISO-8859-2 centroeuropeo, 8x16
+iso02-8x16.fnt:uk:ISO-8859-2 ãÅÎÔÒÁÌØÎÁ ´×ÒÏÐÁ, 8x16
+
+iso02-8x14.fnt:en:ISO-8859-2 Central European, 8x14
+iso02-8x14.fnt:de:ISO-8859-2 Mitteleuropa, 8x14
+iso02-8x14.fnt:es:ISO-8859-2 centroeuropeo, 8x14
+iso02-8x14.fnt:uk:ISO-8859-2 ãÅÎÔÒÁÌØÎÁ ´×ÒÏÐÁ, 8x14
+
+iso02-8x8.fnt:en:ISO-8859-2 Central European, 8x8
+iso02-8x8.fnt:de:ISO-8859-2 Mitteleuropa, 8x8
+iso02-8x8.fnt:es:ISO-8859-2 centroeuropeo, 8x8
+iso02-8x8.fnt:uk:ISO-8859-2 ãÅÎÔÒÁÌØÎÁ ´×ÒÏÐÁ, 8x8
+
+iso04-8x16.fnt:en:ISO-8859-4 Baltic, 8x16
+iso04-8x16.fnt:es:ISO-8859-4 báltico, 8x16
+
+iso04-wide-8x16.fnt:en:ISO-8859-4 Baltic wide, 8x16
+iso04-wide-8x16.fnt:es:ISO-8859-4 báltico, 8x16 (ancha)
+
+iso04-8x14.fnt:en:ISO-8859-4 Baltic, 8x14
+iso04-8x14.fnt:es:ISO-8859-4 báltico, 8x14
+
+iso04-8x8.fnt:en:ISO-8859-4 Baltic, 8x8
+iso04-8x8.fnt:es:ISO-8859-4 báltico, 8x8
+
+iso05-8x8.fnt:en:ISO-8859-5 Cyrillic, 8x8
+iso05-8x8.fnt:ru:ISO-8859-5 ËÉÒÉÌÌÉÃÁ, 8x8
+iso05-8x8.fnt:uk:ISO-8859-5 ËÉÒÉÌÉÃÑ, 8x8
+
+iso05-8x14.fnt:en:ISO-8859-5 Cyrillic, 8x14
+iso05-8x14.fnt:ru:ISO-8859-5 ËÉÒÉÌÌÉÃÁ, 8x14
+iso05-8x14.fnt:uk:ISO-8859-5 ËÉÒÉÌÉÃÑ, 8x14
+
+iso05-8x16.fnt:en:ISO-8859-5 Cyrillic, 8x16
+iso05-8x16.fnt:ru:ISO-8859-5 ËÉÒÉÌÌÉÃÁ, 8x16
+iso05-8x16.fnt:uk:ISO-8859-5 ËÉÒÉÌÉÃÑ, 8x16
+
+iso07-8x16.fnt:en:ISO-8859-7 Greek, 8x16
+iso07-8x16.fnt:el:ISO-8859-7 ÅëëçíéêÞ, 8x16
+
+iso07-8x14.fnt:en:ISO-8859-7 Greek, 8x14
+iso07-8x14.fnt:el:ISO-8859-7 ÅëëçíéêÞ, 8x14
+
+iso07-8x8.fnt:en:ISO-8859-7 Greek, 8x8
+iso07-8x8.fnt:el:ISO-8859-7 ÅëëçíéêÞ, 8x8
+
+iso08-8x16.fnt:en:ISO-8859-8 Hebrew, 8x16
+iso08-8x16.fnt:iw:ISO-8859-8 8x16 ,úéøáò
+
+iso08-8x14.fnt:en:ISO-8859-8 Hebrew, 8x14
+iso08-8x14.fnt:iw:ISO-8859-8 8x14 ,úéøáò
+
+iso08-8x8.fnt:en:ISO-8859-8 Hebrew, 8x8
+iso08-8x8.fnt:iw:ISO-8859-8 8x8 ,úéøáò
+
+iso09-8x16.fnt:en:ISO-8859-9 Turkish, 8x16
+iso09-8x16.fnt:uk:ISO-8859-9 ÔÕÒÅÃØËÉÊ, 8x16
+
+iso04-vga9-8x16.fnt:en:ISO-8859-4 Baltic (VGA 9bit mapped), 8x16
+iso04-vga9-8x16.fnt:es:ISO-8859-4 báltico, 8x16 (VGA 9 bits)
+
+iso04-vga9-wide-8x16.fnt:en:ISO-8859-4 Baltic wide (VGA 9bit mapped), 8x16
+iso04-vga9-wide-8x16.fnt:es:ISO-8859-4 báltico, 8x16 (VGA 9 bits, ancha)
+
+iso04-vga9-8x14.fnt:en:ISO-8859-4 Baltic (VGA 9bit mapped), 8x14
+iso04-vga9-8x14.fnt:es:ISO-8859-4 báltico, 8x14 (VGA 9 bits)
+
+iso04-vga9-8x8.fnt:en:ISO-8859-4 Baltic (VGA 9bit mapped), 8x8
+iso04-vga9-8x8.fnt:es:ISO-8859-4 báltico, 8x8 (VGA 9 bits)
+
+iso15-8x16.fnt:en:ISO-8859-15 West European, 8x16
+iso15-8x16.fnt:de:ISO-8859-15 Westeuropa, 8x16
+iso15-8x16.fnt:fr:ISO-8859-15 Est européen, 8x16
+iso15-8x16.fnt:es:ISO-8859-15 europeo occidental, 8x16
+iso15-8x16.fnt:uk:ISO-8859-15 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x16
+
+iso15-8x14.fnt:en:ISO-8859-15 West European, 8x14
+iso15-8x14.fnt:de:ISO-8859-15 Westeuropa, 8x14
+iso15-8x14.fnt:fr:ISO-8859-15 Est européen, 8x14
+iso15-8x14.fnt:es:ISO-8859-15 europeo occidental, 8x14
+iso15-8x14.fnt:uk:ISO-8859-15 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x14
+
+iso15-8x8.fnt:en:ISO-8859-15 West European, 8x8
+iso15-8x8.fnt:de:ISO-8859-15 Westeuropa, 8x8
+iso15-8x8.fnt:fr:ISO-8859-15 Est européen, 8x8
+iso15-8x8.fnt:es:ISO-8859-15 europeo occidental, 8x8
+iso15-8x8.fnt:uk:ISO-8859-15 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x8
+
+iso15-thin-8x16.fnt:en:ISO-8859-15 West European, 8x16 (thin)
+iso15-thin-8x16.fnt:de:ISO-8859-15 Westeuropa, 8x16 (dünn)
+iso15-thin-8x16.fnt:fr:ISO-8859-15 Est européen, 8x16 (fine)
+iso15-thin-8x16.fnt:es:ISO-8859-15 europeo occidental, 8x16 (fina)
+iso15-thin-8x16.fnt:uk:ISO-8859-15 úÁȦÄÎÁ ´×ÒÏÐÁ, 8x16 (ÔÏÎËÉÊ)
+
+koi8-r-8x14.fnt:en:Russian koi8-r, 8x14
+koi8-r-8x14.fnt:de:Russisch koi8-r, 8x14
+koi8-r-8x14.fnt:ru:òÕÓÓËÉÊ ÛÒÉÆÔ koi8-r, 8x14
+koi8-r-8x14.fnt:fr:Russe koi8-r, 8x14
+koi8-r-8x14.fnt:es:koi8-r ruso, 8x14
+koi8-r-8x14.fnt:uk:ûÒÉÆÔ koi8-r ÒÏÓ¦ÊÓØËÉÊ, 8x14
+koi8-r-8x14.fnt:hy:èáõë»ñ»Ý koi8-r Ïá¹³íáñáõÙ, 8x14
+
+koi8-r-8x16.fnt:en:Russian koi8-r, 8x16
+koi8-r-8x16.fnt:de:Russisch koi8-r, 8x16
+koi8-r-8x16.fnt:ru:òÕÓÓËÉÊ ÛÒÉÆÔ koi8-r, 8x16
+koi8-r-8x16.fnt:fr:Russe koi8-r, 8x16
+koi8-r-8x16.fnt:es:koi8-r ruso, 8x16
+koi8-r-8x16.fnt:uk:ûÒÉÆÔ koi8-r ÒÏÓ¦ÊÓØËÉÊ, 8x16
+koi8-r-8x16.fnt:hy:èáõë»ñ»Ý koi8-r Ïá¹³íáñáõÙ, 8x16
+
+koi8-r-8x8.fnt:en:Russian koi8-r, 8x8
+koi8-r-8x8.fnt:de:Russisch koi8-r, 8x8
+koi8-r-8x8.fnt:ru:òÕÓÓËÉÊ ÛÒÉÆÔ koi8-r, 8x8
+koi8-r-8x8.fnt:fr:Russe koi8-r, 8x8
+koi8-r-8x8.fnt:es:koi8-r ruso, 8x8
+koi8-r-8x8.fnt:uk:ûÒÉÆÔ koi8-r ÒÏÓ¦ÊÓØËÉÊ, 8x8
+koi8-r-8x8.fnt:hy:èáõë»ñ»Ý koi8-r Ïá¹³íáñáõÙ, 8x8
+
+koi8-rb-8x16.fnt:en:Russian koi8-r (b), 8x16
+koi8-rb-8x16.fnt:de:Russisch koi8-r (b), 8x16
+koi8-rb-8x16.fnt:ru:òÕÓÓËÉÊ ÛÒÉÆÔ koi8-r (b), 8x16
+koi8-rb-8x16.fnt:fr:Russe koi8-r (b), 8x16
+koi8-rb-8x16.fnt:es:koi8-r (b) ruso, 8x16
+koi8-rb-8x16.fnt:uk:ûÒÉÆÔ koi8-r (b) ÒÏÓ¦ÊÓØËÉÊ, 8x16
+koi8-rb-8x16.fnt:hy:èáõë»ñ»Ý koi8-r (b) Ïá¹³íáñáõÙ, 8x16
+
+koi8-rc-8x16.fnt:en:Russian koi8-r (c), 8x16
+koi8-rc-8x16.fnt:de:Russisch koi8-r (c), 8x16
+koi8-rc-8x16.fnt:ru:òÕÓÓËÉÊ ÛÒÉÆÔ koi8-r (c), 8x16
+koi8-rc-8x16.fnt:fr:Russe koi8-r (c), 8x16
+koi8-rc-8x16.fnt:es:koi8-r (c) ruso, 8x16
+koi8-rc-8x16.fnt:uk:ûÒÉÆÔ koi8-r (c) ÒÏÓ¦ÊÓØËÉÊ, 8x16
+koi8-rc-8x16.fnt:hy:èáõë»ñ»Ý koi8-r (c) Ïá¹³íáñáõÙ, 8x16
+
+cp866u-8x16.fnt:en:Ukrainian font cp866u, 8x16
+cp866u-8x16.fnt:uk:ûÒÉÆÔ cp866u ÕËÒÁ§ÎÓØËÉÊ, 8x16
+
+cp866u-8x14.fnt:en:Ukrainian font cp866u, 8x14
+cp866u-8x14.fnt:uk:ûÒÉÆÔ cp866u ÕËÒÁ§ÎÓØËÉÊ, 8x14
+
+cp866u-8x8.fnt:en:Ukrainian font cp866u, 8x8
+cp866u-8x8.fnt:uk:ûÒÉÆÔ cp866u ÕËÒÁ§ÎÓØËÉÊ, 8x8
+
+koi8-u-8x16.fnt:en:Ukrainian font koi8-u, 8x16
+koi8-u-8x16.fnt:uk:ûÒÉÆÔ koi8-u ÕËÒÁ§ÎÓØËÉÊ, 8x16
+
+koi8-u-8x14.fnt:en:Ukrainian font koi8-u, 8x14
+koi8-u-8x14.fnt:uk:ûÒÉÆÔ koi8-u ÕËÒÁ§ÎÓØËÉÊ, 8x14
+
+koi8-u-8x8.fnt:en:Ukrainian font koi8-u, 8x8
+koi8-u-8x8.fnt:uk:ûÒÉÆÔ koi8-u ÕËÒÁ§ÎÓØËÉÊ, 8x8
+
+# (fset 'langnew
+# "\M-}\C-p\C-k\C-y\C-m\C-y\M-}")
diff --git a/share/syscons/fonts/Makefile b/share/syscons/fonts/Makefile
new file mode 100644
index 0000000..e915309
--- /dev/null
+++ b/share/syscons/fonts/Makefile
@@ -0,0 +1,37 @@
+# $FreeBSD$
+
+FILES= armscii8-8x8.fnt armscii8-8x14.fnt armscii8-8x16.fnt \
+ cp437-8x8.fnt cp437-8x14.fnt cp437-8x16.fnt \
+ cp437-thin-8x8.fnt cp437-thin-8x16.fnt \
+ cp850-8x8.fnt cp850-8x14.fnt cp850-8x16.fnt \
+ cp850-thin-8x8.fnt cp850-thin-8x16.fnt \
+ cp865-8x8.fnt cp865-8x14.fnt cp865-8x16.fnt \
+ cp865-thin-8x8.fnt cp865-thin-8x16.fnt \
+ cp866-8x8.fnt cp866-8x14.fnt cp866-8x16.fnt \
+ cp866b-8x16.fnt cp866c-8x16.fnt \
+ cp866u-8x16.fnt cp866u-8x14.fnt cp866u-8x8.fnt \
+ cp1251-8x8.fnt cp1251-8x14.fnt cp1251-8x16.fnt \
+ haik8-8x8.fnt haik8-8x14.fnt haik8-8x16.fnt \
+ iso-8x8.fnt iso-8x14.fnt iso-8x16.fnt \
+ iso02-8x8.fnt iso02-8x14.fnt iso02-8x16.fnt \
+ iso04-8x8.fnt iso04-8x14.fnt iso04-8x16.fnt iso04-wide-8x16.fnt \
+ iso04-vga9-8x8.fnt iso04-vga9-8x14.fnt iso04-vga9-8x16.fnt \
+ iso04-vga9-wide-8x16.fnt \
+ iso05-8x8.fnt iso05-8x14.fnt iso05-8x16.fnt \
+ iso07-8x8.fnt iso07-8x14.fnt iso07-8x16.fnt \
+ iso08-8x8.fnt iso08-8x14.fnt iso08-8x16.fnt \
+ iso09-8x16.fnt \
+ iso15-8x8.fnt iso15-8x14.fnt iso15-8x16.fnt \
+ iso-thin-8x16.fnt iso15-thin-8x16.fnt \
+ koi8-r-8x8.fnt koi8-r-8x14.fnt koi8-r-8x16.fnt \
+ koi8-rb-8x16.fnt koi8-rc-8x16.fnt \
+ koi8-u-8x8.fnt koi8-u-8x14.fnt koi8-u-8x16.fnt \
+ swiss-8x16.fnt swiss-8x8.fnt \
+ swiss-1251-8x16.fnt swiss-1131-8x16.fnt \
+ INDEX.fonts
+
+FILESDIR= ${SHAREDIR}/syscons/fonts
+
+NO_OBJ=
+
+.include <bsd.prog.mk>
diff --git a/share/syscons/fonts/armscii8-8x14.fnt b/share/syscons/fonts/armscii8-8x14.fnt
new file mode 100644
index 0000000..edc81c9
--- /dev/null
+++ b/share/syscons/fonts/armscii8-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 armscii8-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````&#P\/#P8&!@`&!@``/YF9F;,`````````````&QL;/[^
+M;&S^_FQL;```&'[;V-A^&QO;VWX8&```YJSL&!@P,&YJS@```#AL;&PX=MS<
+MS,QV````&!@8,``````````````8&#`P,#`P,#`8&`P``!@8#`P,#`P,#!@8
+M,````````&8\_SQF````````````&!A^&!@``````````````````!@8&#``
+M````````_@`````````````````````P,`````8,#!@8,#!@8,#`````.&S.
+MWM[6]O;F;#@````8.'@8&!@8&!@8?@```#ALQL8&#!@P8,;^````_(P8,#@,
+M!@;&;#@````<'#P\;&S,_@P,'@```/[`P/C,!@8&QFPX````.&S`P/CLQL;&
+M;#@```#^Q@8,#!@8,#`P,````#ALQL9L.&S&QFPX````.&S&QL9N/@8&;#@`
+M````````&!@````8&``````````8&````!@8,&`````&#!@P8#`8#`8`````
+M`````/X``/X`````````8#`8#`8,&#!@````/&;#`P8,&!@`&!@``````'S&
+MQM[>WMS`?````!`X?.[&QL;^QL;&````_&9F9GQF9F9F9OP```!\QL;`P,#`
+MP,;&?````/AL9F9F9F9F9FSX````_F9B8&AX:&!B9OX```#^9F)@:'AH8&!@
+M\````'S&QL;`P,[&QLYZ````QL;&QL;^QL;&QL8````\&!@8&!@8&!@8/```
+M`!X,#`P,#`P,S,QX````YF9L;'AX>&QL9N8```#P8&!@8&!@8&)F_@```(+&
+M[O[^UM;&QL;&````QL;FYO;VWL[.QL8```!\QL;&QL;&QL;&?````/QF9F9F
+M9GQ@8&#P````?,;&QL;&QL;>_GP.!@#\9F9F9FQX;&9FY@```'S&QL!@.`P&
+MQL9\````?EH8&!@8&!@8&#P```#&QL;&QL;&QL;&?````,;&QL;&QL;&?#@0
+M````P\/#P]O;V]O_9F8```#&QFQL.#@X;&S&Q@```&9F9F9F/!@8&!@\````
+M_L:,#!@0,&!BQOX````\,#`P,#`P,#`P/````,#`8&`P,!@8#`P&````/`P,
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`P&```
+M````````````````>`Q\S,S,=@```.!@8&!\9F9F9F;<`````````'S&P,#`
+MQGP````<#`P,?,S,S,S,=@````````!\QL;\P,9\````/&9F8/!@8&!@8/``
+M````````=LS,S,S,?`P,S.!@8&!\9F9F9F;F`````!@8`#@8&!@8&#P`````
+M#`P`'`P,#`P,#`S,S.!@8&!F9FQX;&;F````.!@8&!@8&!@8&#P`````````
+M[/[6UM;&Q@````````#<9F9F9F9F`````````'S&QL;&QGP`````````W&9F
+M9F9F?&!@8`````!VS,S,S,Q\#`P,`````-QV9F!@8/``````````?,;`?`;&
+M?````!`P,##\,#`P,#8<`````````,;&QL;&QGL`````````QL;&[GPX$```
+M``````#&QM;6UOYL`````````,;N?#A\[L8`````````QL;&QL;&?@8&?```
+M``#^Q@PX8,;^````&!@8&##@,!@8&!@.```8&!@8&```&!@8&!@``!@8&!@,
+M!PP8&!@8<````';<````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````#!,4KJ49!@`````X&!@8&!@8&QL;#\`````````,'@P```P>#``
+M`&`P.!P<'!P<'#@P8```#!@X<'!P<'!P.!@,`````````&PV&QLV;```````
+M````-FS8V&PV``````````#^_@`````````````````````P>#```&`P&`P`
+M````````````````````````&#P8,`````````!\?'P``````````````,+F
+M?`````````````````"2DI(````#=MR```````````````P8,&``````````
+M````/$:6C`````````````#,S,S,S,S,W-[/>P````````#6UM;6UM9J````
+M>,S,S,S,P,#^P,``````````^,S,S,#`_L#`P'C,S,S,S,Q_#`P,````````
+M`'S,S,S,S'\,#`QXS,S,S,S,SPP,#`````````#XS,S,S,S/#`P,P,#^P,#,
+MS,S,S'@```#`P,#`_L#`S,S,?````#QF9F9F9CX&#-C^PP```````,S,S,S,
+MS'P,#`_`P,#^P,#`P/@,#'@``,#`P,#XP,#`P/@,.```>,S,S,S,S,#`P/X`
+M````````^,S,S,S,P,#`_GS&QL;/UM;6UM;,`````````/S&S];6ULS`P,`,
+M#`Q_S,S,S,S,>`````P,#`Q_S,S,S,Q\````P,#`^,S,S,S,P,````#`P,#`
+M^,S,S,S,S,#`P,#`P,#`P,#`P,#\!@```````&!@8&!@8&!@8'[`P,#VUM;6
+MUM;6S````,#`P,#VUM;6UM;.P,#`P'[[S,S,S,S,S'@```#`>`P,?\S,S,S,
+M>````,#`S,S,S,S,?`P,````P,#`P,S,S,S,S'P,#`P8,!@,&#!@P/`\#@P`
+M`,#`P,#XS,S,S,S,````/&9F9F8&!@9LV&X````P?@P8,'#8V,S.=@```'C,
+MS,S,S,S,#`P/`````````/C,S,S,S,P,#`\.VW`P>,S,S,S<;````!PV8&#X
+M;&9F9FXZ````S\S,S,S,S,S,S'@````/#`P,S,S,S,S,?````'C,#!PX;`P,
+MS,QX``````````P,#`P,#`QLW'#@8&!F9F9F9F9F/````.!@8&!F9F9F9F8^
+M````^`Q\S,S`P,#,S'@`````````>,S,S`P8,&#`?GC,S,S,S,S,S,S,````
+M`````/C,S,S,S,P```!XS,S,S`P,#-AP,!@````````8,!@,&#!@P,!^?MO;
+MV]O;VQL;`P,`````````V]O;V]O;?P,#`V#PV,S&9C86'-C^PP```````'#8
+MS,QL.#!@P'YXS,S,S,S/S,S,S`````````#XS,S,S,S/````S,S,S,S,S,S,
+MS'@`````````S,S,S,S,?`````P,S,S,S,S,?`P/````#`P,#,S,S,S,S'P,
+M#`]XS,S`8#`8#,S,>`````````#<UM;6UM9V````>,S,S,S,S,S`P,``````
+M````^,S,S,S,S,#`P'C,S,QXS`P,S,QX`````````,S,S,S,S'P,S'C`P/#8
+MV-C8V,[`P`````````!@8&!@8&!\````$!!\UM;6UM9\$!``````$!`0W-;6
+MUM;6=A`0$#QF9F9F?&!@_F!@`````````'QF9F9F?&#^8&!XS,S,S,S,S,S,
+M>`````````!XS,S,S,QX````<-#0T'P6%M;6UGP```!PT-#0?!86UM;6?!`0
+=$#@X&!@P````````````````````````````````
+`
+end
diff --git a/share/syscons/fonts/armscii8-8x16.fnt b/share/syscons/fonts/armscii8-8x16.fnt
new file mode 100644
index 0000000..2a7767f
--- /dev/null
+++ b/share/syscons/fonts/armscii8-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 armscii8-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````!@\/#P\&!@8`!@8
+M``````!F9F;,````````````````;&QL_OYL;/[^;&QL````&!A^V]C8?AL;
+MV]M^&!@`````YJSL&!@P,&YJS@``````.&QL;#AVW-S,S'8``````!@8&#``
+M``````````````P8&#`P,#`P,#`8&`P````P&!@,#`P,#`P,&!@P````````
+M``!F//\\9@``````````````&!A^&!@`````````````````````&!@8,```
+M`````````/X````````````````````````P,```````!@P,&!@P,&!@P,``
+M`````#ALSM[>UO;VYFPX```````8.'@8&!@8&!@8?@``````.&S&Q@8,&#!@
+MQOX``````/R,&#`X#`8&QFPX```````<'#P\;&S,_@P,'@``````_L#`^,P&
+M!@;&;#@``````#ALP,#X[,;&QFPX``````#^Q@8,#!@8,#`P,```````.&S&
+MQFPX;,;&;#@``````#ALQL;&;CX&!FPX````````````&!@````8&```````
+M`````!@8````&!@P8```````!@P8,&`P&`P&`````````````/X``/X`````
+M``````!@,!@,!@P8,&```````#QFPP,&#!@8`!@8`````````'S&QM[>WMS`
+M?```````$#A\[L;&QO[&QL8``````/QF9F9\9F9F9F;\``````!\QL;`P,#`
+MP,;&?```````^&QF9F9F9F9F;/@``````/YF8F!H>&A@8F;^``````#^9F)@
+M:'AH8&!@\```````?,;&QL#`SL;&SGH``````,;&QL;&_L;&QL;&```````\
+M&!@8&!@8&!@8/```````'@P,#`P,#`S,S'@``````.9F;&QX>'AL;&;F````
+M``#P8&!@8&!@8&)F_@``````@L;N_O[6UL;&QL8``````,;&YN;V]M[.SL;&
+M``````!\QL;&QL;&QL;&?```````_&9F9F9F?&!@8/```````'S&QL;&QL;&
+MWOY\#@8```#\9F9F9FQX;&9FY@``````?,;&P&`X#`;&QGP``````'Y:&!@8
+M&!@8&!@\``````#&QL;&QL;&QL;&?```````QL;&QL;&QL9\.!```````,/#
+MP\/;V]O;_V9F``````#&QFQL.#@X;&S&Q@``````9F9F9F8\&!@8&#P`````
+M`/[&C`P8$#!@8L;^```````\,#`P,#`P,#`P/```````P,!@8#`P&!@,#`8`
+M`````#P,#`P,#`P,#`P\```````0.&S&````````````````````````````
+M````_P```#`P,!@`````````````````````>`Q\S,S,=@``````X&!@8'QF
+M9F9F9MP```````````!\QL#`P,9\```````<#`P,?,S,S,S,=@``````````
+M`'S&QOS`QGP``````#QF9F#P8&!@8&#P````````````=LS,S,S,?`P,S'@`
+MX&!@8'QF9F9F9N8````````8&``X&!@8&!@\````````#`P`'`P,#`P,#`S,
+MS'@`X&!@8&9F;'AL9N8``````#@8&!@8&!@8&!@\````````````[/[6UM;&
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@8/```````';,S,S,S'P,#`P>``````#<=F9@8&#P````````````
+M?,;`?`;&?```````$#`P,/PP,#`P-AP```````````#&QL;&QL9[````````
+M````QL;&[GPX$````````````,;&UM;6_FP```````````#&[GPX?.[&````
+M````````QL;&QL;&?@8&?````````/[&##A@QOX`````#A@8&!@PX#`8&!@8
+M#@`````8&!@8&```&!@8&!@```!P&!@8&`P'#!@8&!AP``````!VW```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````,$Q2NI1D&````````.!@8&!@8&!L;&P_````````
+M````,'@P```P>#``````8#`X'!P<'!P<.#!@``````P8.'!P<'!P<#@8#```
+M`````````&PV&QLV;``````````````V;-C8;#8`````````````_OX`````
+M```````````````````P>#``````8#`8#```````````````````````````
+M`!@\&#````````````!\?'P`````````````````PN9\````````````````
+M````DI*2```````#=MR`````````````````#!@P8````````````````#Q&
+MEHP```````````````#,S,S,S,S,W-[/>P```````````-;6UM;6UFH`````
+M`'C,S,S,S,#`_L#`````````````^,S,S,#`_L#`P```>,S,S,S,S'\,#`P`
+M``````````!\S,S,S,Q_#`P,``!XS,S,S,S,SPP,#````````````/C,S,S,
+MS,\,#`P``,#`_L#`S,S,S,QX``````#`P,#`_L#`S,S,?```````/&9F9F9F
+M/@8,V/[#``````````#,S,S,S,Q\#`P/``#`P,#^P,#`P/@,#'@`````P,#`
+MP/C`P,#`^`PX`````'C,S,S,S,S`P,#^````````````^,S,S,S,P,#`_@``
+M?,;&QL_6UM;6ULP```````````#\QL_6UM;,P,#````,#`Q_S,S,S,S,>```
+M````#`P,#'_,S,S,S'P``````,#`P/C,S,S,S,#```````#`P,#`^,S,S,S,
+MS,#`P```P,#`P,#`P,#`P/P&``````````!@8&!@8&!@8&!^``#`P,#VUM;6
+MUM;6S```````P,#`P/;6UM;6UL[`P,```,!^^\S,S,S,S,QX``````#`>`P,
+M?\S,S,S,>```````P,#,S,S,S,Q\#`P``````,#`P,#,S,S,S,Q\#`P,```8
+M,!@,&#!@P/`\#@P`````P,#`P/C,S,S,S,P``````#QF9F9F!@8&;-AN````
+M```P?@P8,'#8V,S.=@``````>,S,S,S,S,P,#`\```````````#XS,S,S,S,
+M#`P/```.VW`P>,S,S,S<;```````'#9@8/AL9F9F;CH``````,_,S,S,S,S,
+MS,QX```````/#`P,S,S,S,S,?```````>,P,'#AL#`S,S'@````````````,
+M#`P,#`P,;-QP``#@8&!F9F9F9F9F/```````X&!@8&9F9F9F9CX``````/@,
+M?,S,P,#`S,QX````````````>,S,S`P8,&#`?@``>,S,S,S,S,S,S,P`````
+M``````#XS,S,S,S,``````!XS,S,S`P,#-AP,!@``````````!@P&`P8,&#`
+MP'X``'[;V]O;V]L;&P,#````````````V]O;V]O;?P,#`P``8/#8S,9F-A8<
+MV/[#``````````!PV,S,;#@P8,!^``!XS,S,S,S/S,S,S````````````/C,
+MS,S,S,\``````,S,S,S,S,S,S,QX````````````S,S,S,S,?```````#`S,
+MS,S,S,Q\#`\```````P,#`S,S,S,S,Q\#`P/``!XS,S`8#`8#,S,>```````
+M`````-S6UM;6UG8``````'C,S,S,S,S,P,#`````````````^,S,S,S,S,#`
+MP```>,S,S'C,#`S,S'@```````````#,S,S,S,Q\#,QX``#`P/#8V-C8V,[`
+MP````````````&!@8&!@8'P``````!`0?-;6UM;6?!`0````````$!`0W-;6
+MUM;6=A`0$```/&9F9F9\8&#^8&````````````!\9F9F9GQ@_F!@``!XS,S,
+MS,S,S,S,>````````````'C,S,S,S'@``````'#0T-!\%A;6UM9\``````!P
+MT-#0?!86UM;6?!`0$```.#@8&#``````````````````````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/armscii8-8x8.fnt b/share/syscons/fonts/armscii8-8x8.fnt
new file mode 100644
index 0000000..338e465
--- /dev/null
+++ b/share/syscons/fonts/armscii8-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 armscii8-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````!+*+'F>-%-(P,#`V-C8=@``
+M`#`P`#`P`&`P&!@8,&``&#!@8&`P&```;#8;-FP````V;-AL-@``````__\`
+M````````,#```#`8#``````````````P,&``````?'P```````!P/P``````
+M`-O;```!#G"``````!PP0```````'C4F``````#&QL;&QF\[````V]O;V_\`
+M?,;&P,#XP````'C,P,#PP'S&QL;&?P8```!XS,S,?@Q\QL;&Q@<&````>,S,
+MS`X,P,#^P,;&?`#`P/S`S,QX`#YC-ARX_H,```!XS,Q\#`[`P/S`P/X#``#`
+MP/C`P/@,?,;&QL#`_@```'C,S,#`_'S&W];>P,````!\QL_6W,`&!G_&QL9\
+M```,#'[,S'@`P/S&QL#`P```P,#XS,S`P,#`P,#`_`8```#`P,#`P/C`P//;
+MV\[```#`P,#SV\[`YSQFP\-F/`#`-PQFP\9\`,#`QL9^!@8`P,#,S,S,?`S\
+M_@;\_@8&`,#`^,S,S,P`?,;&#&B:9@``$#!XS,QZ`'S&QL;&!@<```!XS,S,
+M#`X/\&QFP\/_`!S@,,C,S/P`Q\;&QL;&?``.#`S,S,QX`#A^!O@&?C@``#A^
+M!OP&?CC@8&!C8V,^`.!@9F9F9CP`X'X>,&`S'@``>,P,,&#`_'S&QL;&QL8`
+M``!XS,S,S`!\Q@;,<!@,```P8#`8,&(\?MO;VQL#`P```-O;V]MO`SQF9ARX
+M_H,``#QF9F8<</Y\QL;&Q\;&````>,S,S,X`QL;&QL;&?````,S,S,QX``8&
+MQL9^!@<`#`S,S,S\#`Y^YS`8#.=^````UMO;VVL`?,;&QL#`P````'C,S,S`
+MP'S&?/P#@WX```!XS'@,S'C`P,#PP,#`````P,#`P.``&'[;V]M^&``8&-[;
+MV]M[&#YC8WY@_V```#QF9GQ@_&`\9L/#PV8\````/&9F9CP`.%@^&QO;?@`X
+76#X;&]M^&#`P8```````````````````
+`
+end
diff --git a/share/syscons/fonts/cp1251-8x14.fnt b/share/syscons/fonts/cp1251-8x14.fnt
new file mode 100644
index 0000000..ae7075a
--- /dev/null
+++ b/share/syscons/fonts/cp1251-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 cp1251-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````````````````````^/A@8'Q^
+M9FYL````&!!^?F!@8&!@8&```````````````&!@8,```````!@0?'Q@8&!@
+M``````````````!F9F;,``````````````#;VP``````&!C^&!@8&!@8````
+M```8&/X8&!C^&!@``````#QB8/[`_F!B/````````(:,&#!JR@`````````8
+M.'C8V-[;V]X`````````,&#`P&`P````````V-C8V/[;V=O>````&!#&S-C@
+M\-C,QL8``````/S\,#`\/C8V-@``````QL;&QL;&QOXX.`````!@8/A@?'YF
+M9F8.#`````#`P,!@`````````````,!@8&````````````#,S,QF````````
+M`````,QF9F8````````````````8/#P8````````````````_OX`````````
+M````````__\``````````````````````````/%;55$`````````````````
+M`#AXV-[9W@````````#`8#`P8,````````````#8V/[9V=X````````8$,S8
+M\-C,S```````````_/PP/#8V``````````#&QL;^.#@`````````````````
+M`````"@0QL;&QL9^!L9\````````*!#&QL;&QGX&?````!X,#`P,#,S,>```
+M``````!:/&9F/%H````````&!GY^8&!@8&```````!@8&!@``!@8&!@`````
+M,$!`,$A(,`@(,```;`#^QL#`\,#`QOP`````?(*:HIJ"?```````````?,;`
+M\,#`QL9\`````````#-FS,QF,P````````````#^_@("`````````````/CX
+M`````````'R2JK*J@GP```````!F`#P8&!@8&!@8/``````````0*"@0````
+M````````&!A^&!@`?@```````#P8&!@8&!@8/``````````8`!@8&!@8````
+M```````&?GY@8&```````````(3,_,S&P,#`````?.CHZ&@H*"@H````````
+M```8&!@```````````!L`'S&_,#&?`````````"*S>JXFXB+``````````!\
+MQO#`QGP`````````S&8S,V;,````````!@8`#@8&!@9F9CP```!\QL9@.`S&
+MQGP``````````'S&<!S&?```````QL8`&!@8&!@8```````^9L;&QO[&QL8`
+M`````/[`P/S&QL;&_```````_,;&QOS&QL;\``````#^QL#`P,#`P,``````
+M`#QL;&QL;&QL_L:"````_L;`P/#`P,;\``````#6UM94?-;6UM8``````'S&
+M!AP&!L;&?```````QL;&SM[VYL;&``````S:QL;.WO;FQL8``````,;,V/#P
+MV,S&Q@``````'C9FQL;&QL;&``````""QL;N[O[6QL8``````,;&QL;^QL;&
+MQ@``````?L;&QL;&QL;\``````#^QL;&QL;&QL8``````/S&QL;&_,#`P```
+M````?,;&P,#`QL9\``````!^?EH8&!@8&!@``````,;&QL;&?@;&?```````
+M?-;6UM;6?!`X``````#&QFPX.&S&QL8``````,S,S,S,S,S,_@(&````QL;&
+MQL9^!@8&`````-;6UM;6UM;6UOX`````UM;6UM;6UM;6_@(&````X.!@?&9F
+M9F9\``````#&QL;FMK:VMN8``````,#`P/S&QL;&_```````?,8&'@8&QL9\
+M``````"<MK:V]K:VMIP``````'[&QL;&?C9FQ@``````````?,;&_L;&````
+M``````#^P/S&QOP``````````/S&_,;&_```````````_L+`P,#`````````
+M```\;&QL;/[&@@```````'S&_,#&?```````````UM9\UM;6``````````!\
+MQAP&QGP``````````,;.WO;FQ@````````P8QL[>]L;&``````````#&S/C8
+MS,8``````````#YF9F9FQ@``````````QL[^UL;&``````````#&QL;^QL8`
+M`````````'[&QL;&_```````````_L;&QL;&``````````#\QL;&QOS`P```
+M`````'S&P,#&?```````````?EH8&!@8``````````#&QL;&QGX&?```````
+M$'S6UM;6?!`X````````QFPX.&S&``````````#,S,S,S/X&#````````,;&
+MQGX&!@``````````UM;6UM;^``````````#6UM;6UOX"!@```````.!@?&9F
+M?```````````QL;FMK;F``````````#`P/S&QOP``````````'S&'@;&?```
+=````````G+:V]K:<``````````!^QGXV9L8`````
+`
+end
diff --git a/share/syscons/fonts/cp1251-8x16.fnt b/share/syscons/fonts/cp1251-8x16.fnt
new file mode 100644
index 0000000..184728e
--- /dev/null
+++ b/share/syscons/fonts/cp1251-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 cp1251-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M`````````````````````````````````/CX8&!\?F9F;FP`````&!!^?F!@
+M8&!@8&!@`````````````````&!@8,`````````8$'Q\8&!@8&``````````
+M````````9F9FS`````````````````#;VP```````!@8&/X8&!@8&!@`````
+M```8&!C^&!C^&!@8````````/&;`^,#`^,!F/`````````````"&C!@P:LH`
+M```````8.'C8V-[;V]O>````````````,&#`P&`P``````````#8V-C8_MO9
+MV]X`````&!#"QLS8\/C,QL;&````````_/PP,#P^-C8V-@```````,;&QL;&
+MQO[^.#@```````!@8&#X8'Q^9F9F#`P`````P,#`8````````````````&#`
+MP,````````````````#,S,QF````````````````S&9F9@``````````````
+M`````!@\/!@```````````````````#^_@``````````````````__\`````
+M``````````````````````````#Q6U5140``````````````````.'AXWMG9
+MW@```````````,!@,#!@P`````````````#8V-C^V=G>`````````!@0Q,S8
+M\-C,S````````````/S\,#PV-C8```````````#&QL;&_C@X````````````
+M```````````````H$,;&QL;&?@8&QGP`````````*!#&QL;&QGX&?```````
+M'@P,#`P,S,S,>````````````%H\9F8\6@`````````&!GY^8&!@8&!@````
+M````&!@8&!@``!@8&!@8`````#!`0#!(2#`("#``````;`#^QL#`\,#`P,;^
+M``````!\@IJBFH)\`````````````#QFP,#P\,#`9CP````````````S9LS,
+M9C,```````````````#^_@("````````````````^/@``````````'R2JK*J
+M@GP``````````&8`/!@8&!@8&!@8/```````````$"@H$```````````````
+M```8&'X8&`!^````````/!@8&!@8&!@8/``````````8`!@8&!@8&!@`````
+M```````&?GY@8&!@````````````A,S\S,;`P,```````'SHZ.AH*"@H*"@`
+M````````````&!@8`````````````&P`?,;&_,#&?````````````(K-ZKB;
+MB(L```````````!\QL#PP,9\````````````S&8S,V;,``````````8&``X&
+M!@8&9F8\``````!\QL9@.`P&QL9\````````````?,9@.`S&?````````&8`
+M&!@8&!@8&!@````````^9L;&QO[&QL;&````````_L#`P/S&QL;&_```````
+M`/S&QL;\QL;&QOP```````#^QL#`P,#`P,#`````````/&QL;&QL;&QL_L:"
+M`````/[&P,#PP,#`QOX```````#6UM94?-;6UM;6````````?,8&!AP&!L;&
+M?````````,;&QL;.WO;FQL8```````S:QL;&SM[VYL;&````````QLS8\/#8
+MS,;&Q@```````!XV9L;&QL;&QL8```````#&QN[N_O[6UL;&````````QL;&
+MQO[&QL;&Q@```````'[&QL;&QL;&QOP```````#^QL;&QL;&QL;&````````
+M_,;&QL;&_,#`P````````'S&QL#`P,#&QGP```````!^?EH8&!@8&!@8````
+M````QL;&QL;&?@;&?````````'S6UM;6UM9\$#@```````#&QFPX.&S&QL;&
+M````````S,S,S,S,S,S,_@(&!````,;&QL;&?@8&!@8```````#6UM;6UM;6
+MUM;^````````UM;6UM;6UM;6_@(&!````.#@8&!\9F9F9GP```````#&QL;&
+MYK:VMK;F````````P,#`P/S&QL;&_````````'C,!@8>'@8&S'@```````"<
+MMK:V]K:VMK:<````````?L;&QL9^-F;&Q@```````````'S&QL;^QL8`````
+M``````#^P/S&QL;\````````````_,;&_,;&_````````````/[&PL#`P,``
+M```````````\;&QL;&S^QH(`````````?,;&_,#&?````````````-;6UGS6
+MUM8```````````!\Q@8<!L9\````````````QL;.WO;FQ@`````````,&,;&
+MSM[VYL8```````````#&S-CXV,S&````````````/F9F9F9FQ@``````````
+M`,;N_M;&QL8```````````#&QL;^QL;&````````````?L;&QL;&_```````
+M`````/[&QL;&QL8```````````#\QL;&QL;\P,#`````````?,;`P,+&?```
+M`````````'Y:&!@8&!@```````````#&QL;&QL9^!L9\```````0?-;6UM;6
+M?!`X`````````,9L.#ALQL8```````````#,S,S,S,S^!@P`````````QL;&
+MQGX&!@```````````-;6UM;6UOX```````````#6UM;6UM;^`@8$````````
+MX&!\9F9F?````````````,;&YK:VMN8```````````#`P/S&QL;\````````
+M````?,8&'@;&?````````````)RVMO:VMIP```````````!^QL9^-F;&````
+!````
+`
+end
diff --git a/share/syscons/fonts/cp1251-8x8.fnt b/share/syscons/fonts/cp1251-8x8.fnt
new file mode 100644
index 0000000..9cb2270
--- /dev/null
+++ b/share/syscons/fonts/cp1251-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 cp1251-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&QFPX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,QV`.!@8'QF9MP```!XS,#,>``<#`Q\S,QV````
+M>,S\P'@`.&Q@\&!@\````';,S'P,^.!@;'9F9N8`,`!P,#`P>``,``P,#,S,
+M>.!@9FQX;.8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````-QF
+M9GQ@\```=LS,?`P>``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,=@``
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP``````````````````/S\,#PV,S8`$'Y@
+M8&!@8````````&`P,```$'Y@8&````````#,9F8``````-O;```8_A@8&!@`
+M`!C^&!C^&``\8OC`^&(\``"&C!@P:LH`.'C8WMO;W@``,&#`P&`P`-C8V/[9
+MV=X`&-;,^/C,Q@#\_#`\-C8V`,;&QL;^.#@`8/A@?'YF9@S`P&```````,!@
+M8```````S,QF``````#,9F8`````````&#P\&````````/[^````````__\`
+M````````````\5M540```````#AXWMG>``#`8#`P8,````#8V/[9W@`8$,S8
+M\-C,````_#`\-C8```#&QOXX.````````````&MC8S\#8SX``!#,S,Q\#/@>
+M#`P,S,QX``!:/&9F/%H`!GY^8&!@8```&!@``!@8`#!`,$@P"#``9@!^8'Q@
+M?@!\@IJBFH)\`#QBP/C`8CP``#-FS,QF,P``````_OX"``````#X^```?)*J
+MLJJ"?`!F`!@8&!@8```0*"@0```````8?A@`?@`\&!@8&!@\`!@`&!@8&!@`
+M```&?F!@8```A,S\S,;`P'SHZ&@H*"@`````&!@```!L`'C,_,!X`(K-ZKB;
+MB(L````^8'Q@/@``S&8S,V;,``P`#`P,S,QX>,S@<!S,>````'S`>`SX``!F
+M`!@8&!@`'C9F9GYF9@!\8&!\9F9\`'QF9GQF9GP`?F!@8&!@8``X;&QL;&S^
+MQGY@8'Q@8'X`V]M^/'[;VP`\9@8<!F8\`&9F;GYV9F8`/&9N?G9F9@!F;'AP
+M>&QF`!XV9F9F9F8`QN[^_M;&Q@!F9F9^9F9F`#QF9F9F9CP`?F9F9F9F9@!\
+M9F9F?&!@`#QF8&!@9CP`?A@8&!@8&`!F9F8^!F8\`'[;V]M^&!@`9F8\&#QF
+M9@!F9F9F9F9_`V9F9CX&!@8`V]O;V]O;_P#;V]O;V]O_`^!@8'QF9GP`QL;&
+M]M[>]@!@8&!\9F9\`'B,!CX&C'@`SMO;^]O;S@`^9F9F/C9F````>`Q\S'8`
+M`#Q@/&9F/````'QF?&9\````?F!@8&`````\;&QL_L8``#QF?F`\````VWX\
+M?ML````\9@QF/````&9N?G9F```89FY^=F8```!F;'AL9@```!XV9F9F````
+MQO[^UL8```!F9GYF9@```#QF9F8\````?F9F9F8```!\9F9\8````#QF8&8\
+M````?A@8&!@```!F9CX&/````'[;VWX8````9CP8/&8```!F9F9F?P,``&9F
+M/@8&````V]O;V_\```#;V]O;_P,``.!@?&9\````QL;VWO8```!@8'QF?```
+7`'P&/@9\````SMO[V\X````^9CXV9@``
+`
+end
diff --git a/share/syscons/fonts/cp437-8x14.fnt b/share/syscons/fonts/cp437-8x14.fnt
new file mode 100644
index 0000000..81a192f
--- /dev/null
+++ b/share/syscons/fonts/cp437-8x14.fnt
@@ -0,0 +1,83 @@
+begin 666 cp437-8x14
+M`````````````````````'Z!I8&!O9F!?@``````?O_;___#Y_]^````````
+M;/[^_OY\.!`````````0.'S^?#@0````````&#P\Y^?G&!@\```````8/'[_
+M_WX8&#P``````````!@\/!@``````/______Y\/#Y_______`````#QF0D)F
+M/`````#_____PYF]O9G#_____P``'@X:,GC,S,QX```````\9F9F/!A^&!@`
+M`````#\S/S`P,'#PX```````?V-_8V-C9^?FP``````8&-L\YSS;&!@`````
+M`(#`X/C^^.#`@````````@8./OX^#@8"```````8/'X8&!A^/!@``````&9F
+M9F9F9@!F9@``````?]O;VWL;&QL;`````'S&8#ALQL9L.`S&?```````````
+M`/[^_@``````&#Q^&!@8?CP8?@`````8/'X8&!@8&!@``````!@8&!@8&'X\
+M&``````````8#/X,&````````````#!@_F`P`````````````,#`P/X`````
+M```````H;/YL*```````````$#@X?'S^_@````````#^_GQ\.#@0````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````$#ALQL;^````````/&;"P,#"
+M9CP,!GP```#,S`#,S,S,S'8`````#!@P`'S&_L#&?``````0.&P`>`Q\S,QV
+M``````#,S`!X#'S,S'8`````8#`8`'@,?,S,=@`````X;#@`>`Q\S,QV````
+M`````#QF8&8\#`8\````$#AL`'S&_L#&?```````S,P`?,;^P,9\`````&`P
+M&`!\QO[`QGP``````&9F`#@8&!@8/``````8/&8`.!@8&!@\`````&`P&``X
+M&!@8&#P`````QL80.&S&QO[&Q@```#AL.``X;,;&_L;&````&#!@`/YF8'Q@
+M9OX`````````S'8V?MC8;@``````/FS,S/[,S,S.`````!`X;`!\QL;&QGP`
+M`````,;&`'S&QL;&?`````!@,!@`?,;&QL9\`````#!XS`#,S,S,S'8`````
+M8#`8`,S,S,S,=@``````QL8`QL;&QGX&#'@``,;&.&S&QL;&;#@`````QL8`
+MQL;&QL;&?``````8&#QF8&!F/!@8`````#AL9&#P8&!@YOP``````&9F/!A^
+M&'X8&`````#XS,SXQ,S>S,S&``````X;&!@8?A@8&!C8<```&#!@`'@,?,S,
+M=@`````,&#``.!@8&!@\`````!@P8`!\QL;&QGP`````&#!@`,S,S,S,=@``
+M````=MP`W&9F9F9F````=MP`QN;V_M[.QL8`````/&QL/@!^```````````X
+M;&PX`'P````````````P,``P,&#&QGP```````````#^P,#`````````````
+M`/X&!@8``````,#`QLS8,&#<A@P8/@``P,#&S-@P9LZ>/@8&````&!@`&!@\
+M/#P8`````````#9LV&PV````````````V&PV;-@``````!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
+M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
+M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
+M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
+M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
+M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
+M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
+M\/#P#P\/#P\/#P\/#P\/#P__________````````````````=MS8V-QV````
+M`````'S&_,;&_,#`0````/[&QL#`P,#`P`````````#^;&QL;&QL``````#^
+MQF`P&#!@QOX``````````'[8V-C8<`````````!F9F9F?&!@P````````';<
+M&!@8&!@``````'X8/&9F9CP8?@``````.&S&QO[&QFPX```````X;,;&QFQL
+M;.X``````!XP&`P^9F9F/```````````?MO;?@`````````#!G[;V_-^8,``
+M`````!PP8&!\8&`P'````````'S&QL;&QL;&````````_@``_@``_@``````
+M```8&'X8&```_P``````,!@,!@P8,`!^```````,&#!@,!@,`'X```````X;
+M&Q@8&!@8&!@8&!@8&!@8&!@8V-AP````````&!@`?@`8&```````````=MP`
+M=MP````````X;&PX````````````````````&!@`````````````````&```
+M```````/#`P,#`SL;#P<`````-AL;&QL;```````````<-@P8,CX````````
+=``````!\?'Q\?'P`````````````````````````
+`
+end
diff --git a/share/syscons/fonts/cp437-8x16.fnt b/share/syscons/fonts/cp437-8x16.fnt
new file mode 100644
index 0000000..88df93e
--- /dev/null
+++ b/share/syscons/fonts/cp437-8x16.fnt
@@ -0,0 +1,95 @@
+begin 666 cp437-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^`````````#QFPL#`P,)F/`P&?`````#,``#,
+MS,S,S,QV```````,&#``?,;^P,#&?```````$#AL`'@,?,S,S'8```````#,
+M``!X#'S,S,QV``````!@,!@`>`Q\S,S,=@``````.&PX`'@,?,S,S'8`````
+M`````#QF8&!F/`P&/``````0.&P`?,;^P,#&?````````,8``'S&_L#`QGP`
+M`````&`P&`!\QO[`P,9\````````9@``.!@8&!@8/```````&#QF`#@8&!@8
+M&#P``````&`P&``X&!@8&!@\``````#&`!`X;,;&_L;&Q@`````X;#@`.&S&
+MQO[&QL8`````&#!@`/YF8'Q@8&;^````````````S'8V?MC8;@```````#YL
+MS,S^S,S,S,X``````!`X;`!\QL;&QL9\````````Q@``?,;&QL;&?```````
+M8#`8`'S&QL;&QGP``````#!XS`#,S,S,S,QV``````!@,!@`S,S,S,S,=@``
+M`````,8``,;&QL;&QGX&#'@``,8`?,;&QL;&QL9\``````#&`,;&QL;&QL;&
+M?```````&!@\9F!@8&8\&!@``````#AL9&#P8&!@8.;\````````9F8\&'X8
+M?A@8&```````^,S,^,3,WLS,S,8```````X;&!@8?A@8&!@8V'`````8,&``
+M>`Q\S,S,=@``````#!@P`#@8&!@8&#P``````!@P8`!\QL;&QL9\```````8
+M,&``S,S,S,S,=@```````';<`-QF9F9F9F8`````=MP`QN;V_M[.QL;&````
+M```\;&P^`'X`````````````.&QL.`!\```````````````P,``P,&#`QL9\
+M`````````````/[`P,#```````````````#^!@8&!@```````,#`PL;,&#!@
+MW(8,&#X```#`P,+&S!@P9LZ>/@8&`````!@8`!@8&#P\/!@````````````V
+M;-AL-@``````````````V&PV;-@````````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````';<V-C8W'8`````
+M``!XS,S,V,S&QL;,````````_L;&P,#`P,#`P```````````_FQL;&QL;&P`
+M````````_L9@,!@P8,;^````````````?MC8V-C8<```````````9F9F9F9\
+M8&#``````````';<&!@8&!@8`````````'X8/&9F9CP8?@`````````X;,;&
+M_L;&;#@````````X;,;&QFQL;&SN````````'C`8##YF9F9F/```````````
+M`'[;V]M^`````````````P9^V]OS?F#`````````'#!@8'Q@8&`P'```````
+M``!\QL;&QL;&QL8``````````/X``/X``/X````````````8&'X8&```_P``
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&-C8V'```````````!@8`'X`&!@`````````````=MP`
+M=MP`````````.&QL.````````````````````````!@8````````````````
+M````&```````````#PP,#`P,[&QL/!P``````-AL;&QL;`````````````!P
+MV#!@R/@`````````````````?'Q\?'Q\?```````````````````````````
+!`#!@
+`
+end
diff --git a/share/syscons/fonts/cp437-8x8.fnt b/share/syscons/fonts/cp437-8x8.fnt
new file mode 100644
index 0000000..9df31c6
--- /dev/null
+++ b/share/syscons/fonts/cp437-8x8.fnt
@@ -0,0 +1,49 @@
+begin 666 cp437-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+M?#A\$!`X?/Y\.'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F,X;&PXS'@`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&QFPX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,QV`.!@8'QF9MP```!XS,#,>``<#`Q\S,QV````
+M>,S\P'@`.&Q@\&!@\````';,S'P,^.!@;'9F9N8`,`!P,#`P>``,``P,#,S,
+M>.!@9FQX;.8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````-QF
+M9GQ@\```=LS,?`P>``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,=@``
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````$#ALQL;^`'C,P,QX&`QX`,P`
+MS,S,?@`<`'C,_,!X`'[#/`8^9C\`S`!X#'S,?@#@`'@,?,Q^`#`P>`Q\S'X`
+M``!XP,!X##A^PSQF?F`\`,P`>,S\P'@`X`!XS/S`>`#,`'`P,#!X`'S&.!@8
+M&#P`X`!P,#`P>`#&.&S&_L;&`#`P`'C,_,P`'`#\8'A@_````'\,?\Q_`#YL
+MS/[,S,X`>,P`>,S,>```S`!XS,QX``#@`'C,S'@`>,P`S,S,?@``X`#,S,Q^
+M``#,`,S,?`SXPQ@\9F8\&`#,`,S,S,QX`!@8?L#`?A@8.&QD\&#F_`#,S'C\
+M,/PP,/C,S/K&S\;'#AL8/!@8V'`<`'@,?,Q^`#@`<#`P,'@``!P`>,S,>```
+M'`#,S,Q^``#X`/C,S,P`_`#,[/S<S``\;&P^`'X``#AL;#@`?```,``P8,#,
+M>`````#\P,```````/P,#```P\;,WC-FS`_#QLS;-V_/`Q@8`!@8&!@``#-F
+MS&8S````S&8S9LP``"*((H@BB"*(5:I5JE6J5:K;=]ONVW?;[A@8&!@8&!@8
+M&!@8&/@8&!@8&/@8^!@8&#8V-C;V-C8V`````/XV-C8``/@8^!@8&#8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````-C8V-OX````8&/@8^```````
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8&!@?&!\8&!@V-C8V-S8V-C8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V&!C_`/\````V
+M-C8V_P``````_P#_&!@8`````/\V-C8V-C8V/P```!@8'Q@?```````?&!\8
+M&!@`````/S8V-C8V-C;_-C8V&!C_&/\8&!@8&!@8^``````````?&!@8____
+M______\`````______#P\/#P\/#P#P\/#P\/#P______````````=MS(W'8`
+M`'C,^,SXP,``_,S`P,#```#^;&QL;&P`_,Q@,&#,_````'[8V-AP``!F9F9F
+M?&#``';<&!@8&`#\,'C,S'@P_#ALQO[&;#@`.&S&QFQL[@`<,!A\S,QX````
+M?MO;?@``!@Q^V]M^8,`X8,#XP&`X`'C,S,S,S,P``/P`_`#\```P,/PP,`#\
+M`&`P&#!@`/P`&#!@,!@`_``.&QL8&!@8&!@8&!@8V-AP,#``_``P,```=MP`
+M=MP``#AL;#@`````````&!@`````````&`````\,#`SL;#P<>&QL;&P```!P
+7&#!@>```````/#P\/```````````````
+`
+end
diff --git a/share/syscons/fonts/cp437-thin-8x16.fnt b/share/syscons/fonts/cp437-thin-8x16.fnt
new file mode 100644
index 0000000..15f36b9
--- /dev/null
+++ b/share/syscons/fonts/cp437-thin-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp437-thin-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``#X*
+M$B)XA(2$A'@````````X1$1$1#@0?!`0````````/R$_("`@(&#@P```````
+M`#\A/R$A(2$C9^;`````````$!#6..XXUA`0``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````0.'P0$!!\.!``````````0D)"0D)"0@!"
+M0@```````'^)B8EY"0D)"0D``````'R&0#A$@H)$.`3"?```````````````
+M_O[^_@```````!`X?!`0$'PX$'P````````0.'P0$!`0$!`0````````$!`0
+M$!`0$'PX$`````````````@$_@0(```````````````@0/Y`(```````````
+M`````("`@/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````0.#@X$!`0`!`0
+M``````!"0D)"``````````````````!$1/Y$1$3^1$0`````$!!\@H)`,`P$
+M@H)\$!``````````@H0($"!"@@```````#A$1#@X1T1$1#L``````"`@0```
+M````````````````!`@0$!`0$!`(!````````"`0"`@("`@($"``````````
+M```D&/\8)```````````````$!!\$!`````````````````````0$!`@````
+M`````````/X````````````````````````0$`````````````($"!`@0(``
+M```````X1(*"DI*"@D0X````````"!@X"`@("`@(/@```````'R"`@0($"!`
+M@OX```````!\@@("/`("`H)\````````#!0D1(3^!`0$#@```````/Z`@(#\
+M`@("@GP````````X0("`_(*"@H)\````````_H("`@0($!`0$````````'R"
+M@H)\@H*"@GP```````!\@H*"?@("`@1X```````````0$````!`0````````
+M````$!`````0$"``````````!`@0($`@$`@$````````````?@``?@``````
+M``````!`(!`(!`@0($````````!\@H("!`@(``@(`````````'R"@IZ2DHR`
+M?````````!`H1(*"_H*"@H(```````#\0D)"?$)"0D+\````````/$*"@("`
+M@()"/````````/A$0D)"0D)"1/@```````#^0D)(>$A`0D+^````````_D)"
+M2'A(0$!`X````````#Q"@H"`GH*"1CH```````""@H*"_H*"@H*"````````
+M.!`0$!`0$!`0.`````````X$!`0$!(2$A'@```````#"0D)$2'A$0D+"````
+M````X$!`0$!`0$)"_@```````(+&JI*"@H*"@H(```````""@L*BDHJ&@H*"
+M````````.$2"@H*"@H)$.````````/Q"0D)\0$!`0.````````!\@H*"@H*"
+MDHI\!`(`````_$)"0GQ$0D)"P@```````'R"@D`P#`2"@GP```````#^DI(0
+M$!`0$!`X````````@H*"@H*"@H*"?````````(*"@H*"@H)$*!````````""
+M@H*"@H*2JL:"````````@H)$*!`H1(*"@@```````(*"@D0X$!`0$#@`````
+M``#^@H($&"!`@H+^````````/"`@("`@("`@/`````````"`0"`0"`0"`0``
+M```````\!`0$!`0$!`0\`````!`H1((`````````````````````````````
+M````_P``$!`(````````````````````````>`1\A(2,=@```````,!`0'A$
+M0D)"0GP```````````!\@H"`@()\````````#`0$/$2$A(2,=@``````````
+M`'R"@OZ`@GP````````X1$1`X$!`0$#@````````````=HR$A(2$?`2$>```
+M`,!`0'Q"0D)"0L(````````0$``P$!`0$!`X`````````@(`!@("`@("`D)"
+M/````,!`0$)$2'A$0L(````````P$!`0$!`0$!`X````````````[)*2DI*2
+MD@```````````-QB0D)"0D(```````````!\@H*"@H)\````````````W&)"
+M0D)"?$!`X````````':,A(2$A'P$!`X```````#<8D)`0$#@````````````
+M?(*`?`*"?````````"`@(/@@("`@(AP```````````"$A(2$A(QV````````
+M````0D)"0D(D&````````````(*"@I*JQH(```````````""1"@0*$2"````
+M````````@H*"@H*"?@($>````````/Z$"!`@0OX````````.$!`08!`0$!`.
+M````````$!`0$``0$!`0$````````'`("`@&"`@("'````````!VW```````
+M```````````````0*$2"@H+^`````````#Q"@H"`@()"/`0"?`````"$``"$
+MA(2$A(QV```````$"!``?(*"_H""?```````$"A$`'@$?(2$C'8```````"$
+MA`!X!'R$A(QV``````!`(!``>`1\A(2,=@``````.$0X`'@$?(2$C'8`````
+M`````#Q"0$!"/`0"/``````0*$0`?(*"_H""?````````(0``'R"@OZ`@GP`
+M`````$`@$`!\@H+^@()\````````1$0`&`@("`@('```````&"1"`!@("`@(
+M"!P``````$`@$``8"`@("`@<``````""`!`H1(*"_H*"@@`````X1#@0*$2"
+M@OZ"@H(`````"!`@_D)`0'Q`0$+^````````````C%(R?HB8;@```````#Y$
+MA(3^A(2$A(8``````!`H1`!\@H*"@H)\````````1```?(*"@H*"?```````
+M0"`0`'R"@H*"@GP``````#!(A`"$A(2$A(QV``````!`(!``A(2$A(2,=@``
+M`````((```""@H*"@GX"!'@``((`?(*"@H*"@H)\``````""`(*"@H*"@H*"
+M?```````$!`X1$!`0$@X$!```````#A$1$#@0$!`0$+\````````1$0H$'P0
+M?!`0$```````^(2$^(2$GH2$A(8```````8)"`@(/@@("`@(2#`````($"``
+M>`1\A(2,=@``````!`@0`!@("`@("!P```````@0(`!\@H*"@H)\```````(
+M$"``A(2$A(2,=@```````';<`-QB0D)"0D(`````=MP`@L*BDHJ&@H*"````
+M```\1$0^`'X`````````````.$1$.`!\```````````````@(``@($"`@H)\
+M`````````````/[`P,#```````````````#^!@8&!@```````("`@H2($"!`
+MG`($"!X```"`@(*$B!`@1HH2/@("`````!`0`!`0$#@X.!`````````````D
+M2)!()```````````````B$0B1(@````````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````&*4F(B8E&(`````
+M``!XA(2$N(2"@H*\@```````_H*"@("`@("`@```````````_D1$1$1$1$0`
+M````````_H)`(!`@0(+^````````````?HB(B(B(<```````````0D)"0D)\
+M0$#``````````'+4"`@("`@(`````````'P0.$1$1#@0?``````````X1(*"
+M_H*"1#@````````X1(*"@D0H*"CN````````'A`(!#Y"0D)"/```````````
+M`'Z9F9E^`````````````0)^B9&A?D"`````````'"!`0'A`0$`@'```````
+M``!\@H*"@H*"@H(``````````/X``/X``/X````````````0$'P0$```_@``
+M```````0"`0"!`@0`'X`````````"!`@0"`0"`!^````````#A$1$!`0$!`0
+M$!`0$!`("`@("`@("`B(B'!P`````````!`0`'P`$!``````````````=MP`
+M=MP`````````.$1$.``````````````````````````8````````````````
+M```8&```````````#P@("`@(Z"@H*!@``````-AD1$1$1`````````````!P
+MB!`@2'@`````````````````?'Q\?'Q\?```````````````````````````
+!`!`@
+`
+end
diff --git a/share/syscons/fonts/cp437-thin-8x8.fnt b/share/syscons/fonts/cp437-thin-8x8.fnt
new file mode 100644
index 0000000..e9ab160
--- /dev/null
+++ b/share/syscons/fonts/cp437-thin-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp437-thin-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[6
+M$!!\$!`X[/Y\$'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_Q\#
+M!7V$A(1X/D%!03X(/@@_(3\@("!@P#\A/R$A(V;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`$#A\$!!\.!`D)"0D)``D`'^2DG(2$A(`/F$X1$0XC'@`````
+M?GY^`!`X?!!\.!#^$#A\$!`0$``0$!`0?#@0```(!/X$"````"!`_D`@````
+M`("`@/X````D9O]F)````!@\?O__````__]^/!@`````````````$#@X$!``
+M$``D)"0``````"0D_R3_)"0`$'R`>`3X$```QLP8,&;&`#A$.%:$A'8`("!`
+M```````0($!`0"`0`"`0"`@($"```$0X_CA$````$!#^$!``````````$!`@
+M````_````````````!`0``($"!`@0(``?(*&BI*B?``0,!`0$!!\`'B$!!!`
+MA/P`>(0$.`2$>``(&"A(_@@<`/R`^`0$A'@`.$"`^(2$>`#\A`@0("`@`'B$
+MA'B$A'@`>(2$?`0(<```$!```!`0```0$```$!`@$"!`@$`@$````/P``/P`
+M`"`0"`0($"``>(0$"!``$`!\@IZ2GH!X`#!(A(3\A(0`_$)"?$)"_``\0H"`
+M@$(\`/A$0D)"1/@`_D)(>$A"_@#^0DAX2$#@`#Q"@(".0CX`A(2$_(2$A``X
+M$!`0$!`X``X$!`1$1#@`PD1(<$1"P@#@0$!`0$+^`(+&JI*"@H(`@L*BDHJ&
+M@@`X1(*"@D0X`/Q"0GQ`0.``.$2"@H)4.`3\0D)\1$+"`#B$@'@$A'0`_I(0
+M$!`0.`"$A(2$A(3\`(2$A(2$2#``@H*"DJK&@@""1"@0*$2"`()$*!`0$#@`
+M_H2($")"_@!X0$!`0$!X`(!`(!`(!`(`>`@("`@(>``0*$2"````````````
+M``#_("`0`````````'@$?(1V`,!`?$)"0MP```!XA("$>``,!'R$A(1V````
+M>(3\@'@`.$1`X$!`X````':$A'P$^,!`3&)"0L(`$``P$!`0.``$``0$!(2$
+M>,!`0D1X1,(`,!`0$!`0.````.R2DI*"````^(2$A(0```!XA(2$>````-Q"
+M0GQ`X```=H2$?`0.``#<8D!`X````'R`>`3X`!`0?!`0$@P```"$A(2$=@``
+M`(2$A$@P````@I*JQH(```"$2#!(A````(2$A'P$^```_(@P1/P`&"`@P"`@
+M&``0$!``$!`0`&`0$`P0$&``9)@`````````$"A$@H+^`'B$@(1X&`1X`(0`
+MA(2$>@`,`'B$_(!X`'Z!/`(^0CT`A`!X!'R$>@#``'@$?(1Z`"`@>`1\A'H`
+M``!X@(!X!#A^@3Q"?D`\`(0`>(3\@'@`8`!XA/R`>`!(`#`0$!`X`'R",!`0
+M$#@`8``P$!`0.`"".$2"_H*"`#`01(+^@H(`#/Q`>$!`_````&<9?YAW`#](
+MB/^(B(\`>(1XA(2$>`"$`'B$A(1X`,``>(2$A'@`?H%"0D)"/``@$$)"0D(\
+M`(0`A(2$?`3X0A@D0D(D&`"$`(2$A(1X`!`0?H"`?A`0.$1$X$""_`!$*!!\
+M$'P0$/B$A/B"AX*##!(0.!`0D&`<`'@$?(1Z`!@`,!`0$#@`"!!XA(2$>``(
+M$(2$A(1Z`&28N,2$A(0`9)B$I)2$A``\1$0Z`'X``#A$1#@`?```(``@0("$
+M>`````#\P,```````/P,#```0D1(5FE"A`]"1$A394F/`1`0`!`X.!```")$
+MB$0B````1"(1(D0``"*((H@BB"*(5:I5JE6J5:IWW7?==]UWW1@8&!@8&!@8
+M&!@8&/@8&!@8&/@8^!@8&#8V-C;V-C8V`````/XV-C8``/@8^!@8&#8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````-C8V-OX````8&/@8^```````
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8&!@?&!\8&!@V-C8V-S8V-C8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V&!C_`/\````V
+M-C8V_P``````_P#_&!@8`````/\V-C8V-C8V/P```!@8'Q@?```````?&!\8
+M&!@`````/S8V-C8V-C;_-C8V&!C_&/\8&!@8&!@8^``````````?&!@8____
+M______\`````______#P\/#P\/#P#P\/#P\/#P______````````8I2(E&(`
+M`'B$^(3X@(``_(2`@("```#^*"@H*"@`_(1`($"$_````'Z(B(AP``!"0D)"
+M?$"``':("`@("`#X('"(B'`@^#A$@OZ"1#@`.$2"@B@H;``<$`A\A(1X````
+M?)*2?````@1^B9%^0(`X0(#X@$`X`'B$A(2$A(0``/P`_`#\```@(/P@(`#\
+M`$`@$"!``/P`$"!`(!``_``.$1$0$!`0$`@("`@(B(AP("``^``@(```9)@`
+M9)@``#A$1#@``````````!@````````8&`````<$!`1D)!P,6$1$1$0````P
+72!`@>```````/#P\/``````````````8
+`
+end
diff --git a/share/syscons/fonts/cp850-8x14.fnt b/share/syscons/fonts/cp850-8x14.fnt
new file mode 100644
index 0000000..803f95d
--- /dev/null
+++ b/share/syscons/fonts/cp850-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 cp850-8x14
+M``````````````````````!^@:6!@;V9@7X``````'[_V___P^?_?@``````
+M`&S^_O[^?#@0````````$#A\_GPX$````````!@\/.?GYQ@8/```````&#Q^
+M__]^&!@\```````````8/#P8`````/_______^?#P^?_____```````\9D)"
+M9CP```#______\.9O;V9P____P```!X.&C)XS,S,>```````/&9F9CP8?A@8
+M```````_,S\P,#!P\.```````']C?V-C8V?GYL``````&!C;/.<\VQ@8````
+M``"`P.#X_OC@P(````````(&#C[^/@X&`@``````&#Q^&!@8?CP8``````!F
+M9F9F9F8`9F8``````'_;V]M[&QL;&P````!\QF`X;,;&;#@,QGP`````````
+M``#^_OX``````!@\?A@8&'X\&'X`````&#Q^&!@8&!@8```````8&!@8&!A^
+M/!@`````````&`S^#!@````````````P8/Y@,`````````````#`P,#^````
+M````````*&S^;"@``````````!`X.'Q\_OX`````````_OY\?#@X$```````
+M````````````````````&#P\/!@8`!@8````9F9F)````````````````&QL
+M_FQL;/YL;````!@8?,;"P'P&AL9\&!@``````,+&#!@P9L8``````#AL;#AV
+MW,S,=@```!@8&#`````````````````,&#`P,#`P&`P``````#`8#`P,#`P8
+M,`````````!F//\\9@```````````!@8?A@8`````````````````!@8&#``
+M`````````/X`````````````````````&!@```````(&#!@P8,"`````````
+M.&S&QM;&QFPX```````8.'@8&!@8&'X``````'S&!@P8,&#&_@``````?,8&
+M!CP&!L9\```````,'#QLS/X,#!X``````/[`P,#\!@;&?```````.&#`P/S&
+MQL9\``````#^Q@8,&#`P,#```````'S&QL9\QL;&?```````?,;&QGX&!@QX
+M````````&!@````8&``````````8&````!@8,```````#!@P8,!@,!@,````
+M``````!^``!^`````````&`P&`P&#!@P8```````?,;&#!@8`!@8``````!\
+MQL;>WM[<P'P``````!`X;,;&_L;&Q@``````_&9F9GQF9F;\```````\9L+`
+MP,#"9CP``````/AL9F9F9F9L^```````_F9B:'AH8F;^``````#^9F)H>&A@
+M8/```````#QFPL#`WL9F.@``````QL;&QO[&QL;&```````\&!@8&!@8&#P`
+M`````!X,#`P,#,S,>```````YF9L;'AL;&;F``````#P8&!@8&!B9OX`````
+M`,;N_M;&QL;&Q@``````QN;V_M[.QL;&``````!\QL;&QL;&QGP``````/QF
+M9F9\8&!@\```````?,;&QL;&UMY\#@````#\9F9F?&QF9N8``````'S&QF`X
+M#,;&?```````?GY:&!@8&!@\``````#&QL;&QL;&QGP``````,;&QL;&QFPX
+M$```````QL;&QM;6_FQL``````#&QL9\.'S&QL8``````&9F9F8\&!@8/```
+M````_L:,&#!@PL;^```````\,#`P,#`P,#P``````(#`X'`X'`X&`@``````
+M/`P,#`P,#`P\```0.&S&``````````````````````````````#_`#`8#```
+M``````````````````!X#'S,S'8``````.!@8'AL9F9F?```````````?,;`
+MP,9\```````<#`P\;,S,S'8``````````'S&_L#&?```````'#8R,'PP,#!X
+M``````````!VS,S,?`S,>````.!@8&QV9F9FY@``````&!@`.!@8&!@\````
+M```&!@`.!@8&!F9F/````.!@8&9L>&QFY@``````.!@8&!@8&!@\````````
+M``#L_M;6UM8``````````-QF9F9F9@``````````?,;&QL9\``````````#<
+M9F9F?&!@\````````';,S,Q\#`P>````````W'9F8&#P``````````!\QG`<
+MQGP``````!`P,/PP,#`V'```````````S,S,S,QV``````````#&QL9L.!``
+M`````````,;&UM;^;```````````QFPX.&S&``````````#&QL;&?@8,>```
+M`````/[,&#!F_@``````#A@8&'`8&!@.```````8&!@8&!@8&!@``````'`8
+M&!@.&!@8<````';<`````````````````````!`X;,;&_@```````#QFPL#`
+MP,)F/`QX````S```S,S,S,QV``````P8,`!\QO[`QGP`````$#AL`'@,?,S,
+M=@``````Q@``>`Q\S,QV`````&`P&`!X#'S,S'8`````.&PX`'@,?,S,=@``
+M````````?,;`P,9\#'@``!`X;`!\QO[`QGP``````,8``'S&_L#&?`````!@
+M,!@`?,;^P,9\``````!F```X&!@8&#P`````&#QF`#@8&!@8/`````!@,!@`
+M.!@8&!@\````Q@`0.&S&QO[&QL8``#AL.!`X;,;&_L;&Q@``#!@`_F9B:'AH
+M8F;^``````````#L-G;<V&X``````#YLS,S^S,S,S@`````0.&P`?,;&QL9\
+M``````#&``!\QL;&QGP`````8#`8`'S&QL;&?``````P>,P`S,S,S,QV````
+M`&`P&`#,S,S,S'8``````,8``,;&QL9^!@QX`,8`?,;&QL;&QL9\````Q@#&
+MQL;&QL;&QGP``````````'S.WO;F?``````X;&1@\&!@8.;\``````1\SL[6
+MUM;FYGQ`````````QFPX.&S&```````.&Q@8&'X8&!C8<`````P8,`!X#'S,
+MS'8`````#!@P`#@8&!@8/``````,&#``?,;&QL9\``````P8,`#,S,S,S'8`
+M`````';<`-QF9F9F9@``=MP`QN;V_M[.QL;&`````#QL;#X`?@``````````
+M.&QL.`!\````````````,#``,#!@QL9\```````X1+JJLJJJ1#@`````````
+M``#^!@8&``````!@X&-F;!@P;L,&#!\``&#@8V9L&C9NVC\&!@```!@8`!@8
+M/#P\&``````````V;-AL-@```````````-AL-FS8`````!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@P8,`0.&S&QO[&QL8``#ALQA`X;,;&_L;&Q@``&`P&
+M$#ALQL;^QL;&```````X1)JBHJ*:1#@``#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^```````````8&'S&P,#&
+M?!@8``````!F9CP8?AA^&!@```````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8````=MP`>`Q\S,QV``!VW``0
+M.&S&QO[&QL8``#8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V``````#&?,;&QGS&```````T&"P&/F9F9CP`
+M`````/AL9F;V9F9L^```.&P`_F9B:'AH8F;^````Q@#^9F)H>&AB9OX``#`8
+M`/YF8FAX:&)F_@``````````.!@8&!@\```,&``\&!@8&!@8&#P``#QF`#P8
+M&!@8&!@8/````&8`/!@8&!@8&!@\```8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````_________P``&!@8&````!@8
+M&!@`,!@`/!@8&!@8&!@\``#_________`````````!@P`'S&QL;&QL;&?```
+M````>,S,S-C,QL;,```X;`!\QL;&QL;&QGP``#`8`'S&QL;&QL;&?```````
+M=MP`?,;&QL9\``!VW`!\QL;&QL;&QGP``````````&9F9F9F?&#`````X&!@
+M?&9F9F9\8/````#P8'QF9F9\8/```!@P`,;&QL;&QL;&?```.&P`QL;&QL;&
+MQL9\```P&`#&QL;&QL;&QGP`````#!@P`,;&QL9^!@SX#!@`9F9F9CP8&!@\
+M````_P`````````````````,&#```````````````````````/X`````````
+M````&!A^&!@``'X`````````````````_P#_`.`P8S;L&#9NVC\&!@````!_
+MV]O;>QL;&QL`````?,9@.&S&QFPX#,9\```````8`'X`&```````````````
+M`````!@,>``X;&PX`````````````,8`````````````````````````&```
+M```````8.!@8&#P``````````'@,.`P,>```````````/&8,&#)^````````
+=````````?GY^?GY^````````````````````````
+`
+end
diff --git a/share/syscons/fonts/cp850-8x16.fnt b/share/syscons/fonts/cp850-8x16.fnt
new file mode 100644
index 0000000..10f7bb2
--- /dev/null
+++ b/share/syscons/fonts/cp850-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp850-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P```#`8#```````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````<-C(P>#`P,#!X````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````QL;&QL9L.````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'```````';<````````
+M```````````````0.&S&QL;^`````````#QFPL#`P,#"9CP8<`````#,``#,
+MS,S,S,QV```````,&#``?,;^P,#&?```````$#AL`'@,?,S,S'8```````#,
+M``!X#'S,S,QV``````!@,!@`>`Q\S,S,=@``````.&PX`'@,?,S,S'8`````
+M``````!\QL#`P,9\&'`````0.&P`?,;^P,#&?````````,8``'S&_L#`QGP`
+M`````&`P&`!\QO[`P,9\````````9@``.!@8&!@8/```````&#QF`#@8&!@8
+M&#P``````&`P&``X&!@8&!@\``````#&`!`X;,;&_L;&Q@`````X;#@0.&S&
+MQO[&QL8`````#!@`_F9B:'AH8F;^````````````[#8V?MC8;@```````#YL
+MS,S^S,S,S,X``````!`X;`!\QL;&QL9\````````Q@``?,;&QL;&?```````
+M8#`8`'S&QL;&QGP``````#!XS`#,S,S,S,QV``````!@,!@`S,S,S,S,=@``
+M`````,8``,;&QL;&QGX&#'@``,8`?,;&QL;&QL9\``````#&`,;&QL;&QL;&
+M?````````````'S.WO;FQGP``````#AL9&#P8&!@8.;\```````$?,[.UM;6
+MUN;F?$```````````,9L.#ALQ@````````X;&!@8?A@8&-AP```````8,&``
+M>`Q\S,S,=@``````#!@P`#@8&!@8&#P``````!@P8`!\QL;&QL9\```````8
+M,&``S,S,S,S,=@```````';<`-QF9F9F9F8`````=MP`QN;V_M[.QL;&````
+M````/&QL/@!^`````````````#AL;#@`?``````````````P,``P,&#`QL9\
+M````````?(*RJK*JJH)\``````````````#^!@8&!@```````&#@8F9L&#!@
+MW(8,&#X```!@X&)F;!@P9LZ:/P8&`````!@8`!@8&#P\/!@````````````V
+M;-AL-@``````````````V&PV;-@````````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&&#`$#ALQL;^QL;&Q@````!\QA`X;,;&_L;&QL8`
+M````#`80.&S&QO[&QL;&````````?(*:HJ*BFH)\```````V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@`````````````8&'S&P,#&?!@8`````````&9F/!A^&'X8&```````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8``!VW`!X#'S,S,QV`````';<`#ALQL;^QL;&
+MQ@`````V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V`````,9\QL;&QGS&````````
+M-!@L!CYF9F9F/````````/AL9F;V9F9F;/@`````.&P`_F9B:'AH8F;^````
+M``#&`/YF8FAX:&)F_@`````P&`#^9F)H>&AB9OX````````````X&!@8&!@\
+M``````P8`#P8&!@8&!@8/``````\9@`\&!@8&!@8&#P``````&8`/!@8&!@8
+M&!@\`````!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#___________\`&!@8&!@``!@8&!@8````,!@`
+M/!@8&!@8&!@\`````/________\````````````8,`!\QL;&QL;&QGP`````
+M``!XS,S,V,S&QL;,`````#AL`'S&QL;&QL;&?``````P&`!\QL;&QL;&QGP`
+M``````!VW`!\QL;&QL9\`````';<`'S&QL;&QL;&?````````````&9F9F9F
+M9GQ@8,````#@8&!\9F9F9F9\8&#P````\&!\9F9F9GQ@\``````8,`#&QL;&
+MQL;&QGP`````.&P`QL;&QL;&QL9\`````#`8`,;&QL;&QL;&?```````#!@P
+M`,;&QL;&QGX&#/@`#!@`9F9F9CP8&!@\``````#_````````````````````
+M#!@P`````````````````````````/X````````````````8&'X8&```?@``
+M``````````````````#_`/\``.`P8C;L&#!FSIH_!@8`````?]O;VWL;&QL;
+M&P``````?,9@.&S&QFPX#,9\```````````8`'X`&```````````````````
+M````&`QX````.&QL.````````````````,8`````````````````````````
+M```8````````````&#@8&!@\`````````````'P&/`8&?``````````````\
+M9@P8,GX`````````````````?GY^?GY^?@``````````````````````````
+!``P8
+`
+end
diff --git a/share/syscons/fonts/cp850-8x8.fnt b/share/syscons/fonts/cp850-8x8.fnt
new file mode 100644
index 0000000..21a4aa4
--- /dev/null
+++ b/share/syscons/fonts/cp850-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp850-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+MUA`X$#A\_OY\$#@``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`&-L\Y^<\VQB`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F$\9F8\AGP`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````&#P\&!@`
+M&`!F9B0``````&QL_FS^;&P`&#Y@/`9\&```QLP8,&;&`#AL.';<S'8`&!@P
+M```````,&#`P,!@,`#`8#`P,&#```&8\_SQF````&!A^&!@`````````&!@P
+M````?@```````````!@8``8,&#!@P(``.&S&UL9L.``8.!@8&!A^`'S&!APP
+M9OX`?,8&/`;&?``</&S,_@P>`/[`P/P&QGP`.&#`_,;&?`#^Q@P8,#`P`'S&
+MQGS&QGP`?,;&?@8,>```&!@``!@8```8&```&!@P!@P8,!@,!@```'X``'X`
+M`&`P&`P8,&``?,8,&!@`&`!\QM[>WL!X`#ALQO[&QL8`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CH`QL;&_L;&Q@`\
+M&!@8&!@\`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@!\QL;&QL9\`/QF9GQ@8/``?,;&QL;.?`[\9F9\;&;F`#QF,!@,9CP`?GY:
+M&!@8/`#&QL;&QL9\`,;&QL;&;#@`QL;&UM;^;`#&QFPX;,;&`&9F9CP8&#P`
+M_L:,&#)F_@`\,#`P,#`\`,!@,!@,!@(`/`P,#`P,/``0.&S&````````````
+M``#_,!@,`````````'@,?,QV`.!@?&9F9MP```!\QL#&?``<#'S,S,QV````
+M?,;^P'P`/&9@^&!@\````';,S'P,^.!@;'9F9N8`&``X&!@8/``&``8&!F9F
+M/.!@9FQX;.8`.!@8&!@8/````.S^UM;6````W&9F9F8```!\QL;&?````-QF
+M9GQ@\```=LS,?`P>``#<=F!@\````'[`?`;\`#`P_#`P-AP```#,S,S,=@``
+M`,;&QFPX````QM;6_FP```#&;#ALQ@```,;&QGX&_```?DP8,GX`#A@8<!@8
+M#@`8&!@8&!@8`'`8&`X8&'``=MP`````````$#ALQL;^`'S&P,#&?`QXS`#,
+MS,S,=@`,&'S&_L!\`'R">`Q\S'8`Q@!X#'S,=@`P&'@,?,QV`#`P>`Q\S'8`
+M``!^P,!^##A\@GS&_L!\`,8`?,;^P'P`,!A\QO[`?`!F`#@8&!@\`'R".!@8
+M&#P`,!@`.!@8/`#&.&S&_L;&`#AL?,;^QL8`&##^P/C`_@```'X2_I#^`#YL
+MS/[,S,X`?()\QL;&?`#&`'S&QL9\`#`8?,;&QGP`>(0`S,S,=@!@,,S,S,QV
+M`,8`QL;&?@;\QCALQL9L.`#&`,;&QL9\```"?,[6YGR`.&QD\&!F_``Z;,[6
+MYFRX``#&;#ALQ@``#AL8/!C8<``8,'@,?,QV``P8`#@8&#P`#!A\QL;&?``8
+M,,S,S,QV`';<`-QF9F8`=MP`YO;>S@`\;&P^`'X``#AL;#@`?```&``8&#!C
+M/@!^@;FEN:6!?@```/X&!@``8^9L?C-FS`]CYFQZ-FK?!A@`&!@\/!@``#-F
+MS&8S````S&8S9LP``"*((H@BB"*(5:I5JE6J5:IWW7?==]UWW1@8&!@8&!@8
+M&!@8&/@8&!@P8#ALQO[&`'R".&S&_L8`&`PX;,;^Q@!^@9VAH9V!?C8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````&!A^P,!^&!AF9CQ^&'X8&```
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8=MQ\!G[&?@!VW#ALQO[&`#8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V`,9\QL9\Q@`P
+M?@Q\S,QX`/AL9O9F;/@`?(+^P/S`_@#&`/[`_,#^`#`8_L#\P/X````X&!@8
+M/``,&#P8&!@\`#Q"/!@8&#P`9@`\&!@8/``8&!@8^``````````?&!@8____
+M______\`````_____Q@8&```&!@8,!@\&!@8/`#_____`````#!@.&S&;#@`
+M>,S,V,S&S`!\@CALQFPX``P&.&S&;#@`=MQ\QL;&?`!VW#ALQFPX````9F9F
+M9GS`X&!\9F9\8/#P8'QF?&#P`!@PQL;&QGP`?((`QL;&?`!@,,;&QL9\`!@P
+MQL;&?@;\#!AF9CP8/`#_``````````P8,```````````?@`````8&'X8&`!^
+M````````_P#_X3+D.O8J7X9_V]M[&QL;`#YA/&9F/(9\`!@`?@`8````````
+M`!@,.#AL;#@``````,8````````````8`````!@X&!@\````>`PX#'@```!X
+7#!@P?```````/#P\/``````````````8
+`
+end
diff --git a/share/syscons/fonts/cp850-thin-8x16.fnt b/share/syscons/fonts/cp850-thin-8x16.fnt
new file mode 100644
index 0000000..dab3fe0
--- /dev/null
+++ b/share/syscons/fonts/cp850-thin-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp850-thin-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``#X*
+M$B)XA(2$A'@````````X1$1$1#@0?!`0````````/R$_("`@(&#@P```````
+M`#\A/R$A(2$C9^;`````````$!#6..XXUA`0``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````0.'P0$!!\.!``````````0D)"0D)"0@!"
+M0@```````'^)B8EY"0D)"0D``````'R&0#A$@H)$.`3"?```````````````
+M_O[^_@```````!`X?!`0$'PX$'P````````0.'P0$!`0$!`0````````$!`0
+M$!`0$'PX$`````````````@$_@0(```````````````@0/Y`(```````````
+M`````("`@/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````0.#@X$!`0`!`0
+M``````!"0D)"``````````````````!$1/Y$1$3^1$0`````$!!\@H)`,`P$
+M@H)\$!``````````@H0($"!"@@```````#A$1#@X1T1$1#L``````"`@0```
+M````````````````!`@0$!`0$!`(!````````"`0"`@("`@($"``````````
+M```D&/\8)```````````````$!!\$!`````````````````````0$!`@````
+M`````````/X````````````````````````0$`````````````($"!`@0(``
+M```````X1(*"DI*"@D0X````````"!@X"`@("`@(/@```````'R"`@0($"!`
+M@OX```````!\@@("/`("`H)\````````#!0D1(3^!`0$#@```````/Z`@(#\
+M`@("@GP````````X0("`_(*"@H)\````````_H("`@0($!`0$````````'R"
+M@H)\@H*"@GP```````!\@H*"?@("`@1X```````````0$````!`0````````
+M````$!`````0$"``````````!`@0($`@$`@$````````````?@``?@``````
+M``````!`(!`(!`@0($````````!\@H("!`@(``@(`````````'R"@IZ2DHR`
+M?````````!`H1(*"_H*"@H(```````#\0D)"?$)"0D+\````````/$*"@("`
+M@()"/````````/A$0D)"0D)"1/@```````#^0D)(>$A`0D+^````````_D)"
+M2'A(0$!`X````````#Q"@H"`GH*"1CH```````""@H*"_H*"@H*"````````
+M.!`0$!`0$!`0.`````````X$!`0$!(2$A'@```````#"0D)$2'A$0D+"````
+M````X$!`0$!`0$)"_@```````(+&JI*"@H*"@H(```````""@L*BDHJ&@H*"
+M````````.$2"@H*"@H)$.````````/Q"0D)\0$!`0.````````!\@H*"@H*"
+MDHI\!`(`````_$)"0GQ$0D)"P@```````'R"@D`P#`2"@GP```````#^DI(0
+M$!`0$!`X````````@H*"@H*"@H*"?````````(*"@H*"@H)$*!````````""
+M@H*"@H*2JL:"````````@H)$*!`H1(*"@@```````(*"@D0X$!`0$#@`````
+M``#^@H($&"!`@H+^````````/"`@("`@("`@/`````````"`0"`0"`0"`0``
+M```````\!`0$!`0$!`0\`````!`H1((`````````````````````````````
+M````_P``$!`(````````````````````````>`1\A(2,=@```````,!`0'A$
+M0D)"0GP```````````!\@H"`@()\````````#`0$/$2$A(2,=@``````````
+M`'R"@OZ`@GP````````X1$1`X$!`0$#@````````````=HR$A(2$?`2$>```
+M`,!`0'Q"0D)"0L(````````0$``P$!`0$!`X`````````@(`!@("`@("`D)"
+M/````,!`0$)$2'A$0L(````````P$!`0$!`0$!`X````````````[)*2DI*2
+MD@```````````-QB0D)"0D(```````````!\@H*"@H)\````````````W&)"
+M0D)"?$!`X````````':,A(2$A'P$!`X```````#<8D)`0$#@````````````
+M?(*`?`*"?````````"`@(/@@("`@(AP```````````"$A(2$A(QV````````
+M````0D)"0D(D&````````````(*"@I*JQH(```````````""1"@0*$2"````
+M`````````(*"@H*"?@($>````````/Z$"!`@0OX````````.$!`08!`0$!`.
+M````````$!`0$``0$!`0$````````'`("`@&"`@("'````````!VW```````
+M```````````````0*$2"@H+^`````````#Q"@H"`@()"/`0"?`````"$``"$
+MA(2$A(QV```````$"!``?(*"_H""?```````$"A$`'@$?(2$C'8```````"$
+MA`!X!'R$A(QV``````!`(!``>`1\A(2,=@``````.$0X`'@$?(2$C'8`````
+M`````#Q"0$!"/`0"/``````0*$0`?(*"_H""?````````(0``'R"@OZ`@GP`
+M`````$`@$`!\@H+^@()\````````1$0`&`@("`@('```````&"1"`!@("`@(
+M"!P``````$`@$``8"`@("`@<``````""`!`H1(*"_H*"@@`````X1#@0*$2"
+M@OZ"@H(`````"!`@_D)`0'Q`0$+^````````````C%(R?HB8;@```````#Y$
+MA(3^A(2$A(8``````!`H1`!\@H*"@H)\````````1```?(*"@H*"?```````
+M0"`0`'R"@H*"@GP``````#!(A`"$A(2$A(QV``````!`(!``A(2$A(2,=@``
+M``````""``""@H*"@GX"!'@``((`?(*"@H*"@H)\``````""`(*"@H*"@H*"
+M?````````````'R&BI*BPGP``````#A$1$#@0$!`0$+\```````"/$R*DI*B
+MHL+$N````````````()$*!`H1((```````8)"`@(/@@("`@(2#`````($"``
+M>`1\A(2,=@``````!`@0`!@("`@("!P```````@0(`!\@H*"@H)\```````(
+M$"``A(2$A(2,=@```````';<`-QB0D)"0D(`````=MP`@L*BDHJ&@H*"````
+M```\1$0^`'X`````````````.$1$.`!\```````````````@(``@($"`@H)\
+M````````?(*RJK*JJH)\``````````````#^!@8&!@```````("`@H2($"!`
+MG`($"!X```"`@(*$B!`@1HH2/@("`````!`0`!`0$#@X.!`````````````D
+M2)!()```````````````B$0B1(@````````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&`@0(!`H1(*"_H*"@@``````?((0*$2"@OZ"@H(`
+M````(!`($"A$@H+^@H*"````````?(*:HJ*BFH)\```````V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@```````````!`0.$1`0$!(.!`0````````1$0H$'P0?!`0$```````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8``!VW`!X!'R$A(QV``````!VW!`H1(*"_H*"
+M@@`````V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V`````()\@H*"@GR"````````
+M-!@L!CYF9F9F/````````/A$0D+R0D)"1/@`````?((`_D)`0'Q`0$+^````
+M``!$`/Y"0$!\0$!"_@`````@$`C^0D!`?$!`0OX````````````8"`@("`@8
+M``````@0(#P0$!`0$!`0.``````X1``X$!`0$!`0$#@``````$0`.!`0$!`0
+M$!`X`````!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#___________\``!`0$!``$!`0$!``````(!`(
+M/!`0$!`0$!`X`````/________\````````````($"!\@H*"@H*"@GP`````
+M``!XA(2$N(2"@H*\@````'R"`'R"@H*"@H*"?``````0"`1\@H*"@H*"@GP`
+M``````!VW`!\@H*"@H)\`````';<`'R"@H*"@H*"?```````````0D)"0D)\
+M0$#```````#`0$!\0D)"0D)\0$#@````X$!\0D)"0GQ`X``````$"!""@H*"
+M@H*"@GP`````?((`@H*"@H*"@H)\`````"`0"(*"@H*"@H*"?`````````0(
+M$`""@H*"@GX"!'@`!`@0@H*"1#@0$!`X``````#_````````````````````
+M!`@0`````````````````````````/X````````````````0$'P0$```_@``
+M````````````_P#_``````````#@,6(TZ!`L5*3O!`0`````?HJ*BGH*"@H*
+M"@``````?()`.$2"@D0X!()\`````````!`0`'P`$!``````````````````
+M```$`CP`````.$1$.```````````````````````@@``````````````````
+M```8`````````````````!@("`@("!@``````'P"/`("?`````````````!P
+MB!`@2'@`````````````````?'Q\?'Q\?```````````````````````````
+!`!`@
+`
+end
diff --git a/share/syscons/fonts/cp850-thin-8x8.fnt b/share/syscons/fonts/cp850-thin-8x8.fnt
new file mode 100644
index 0000000..0648564
--- /dev/null
+++ b/share/syscons/fonts/cp850-thin-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp850-thin-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[6
+M$!!\$!`X[/Y\$'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_Q\#
+M!7V$A(1X/D%!03X(/@@_(3\@("!@P#\A/R$A(V;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`$#A\$!!\.!`D)"0D)``D`'^2DG(2$A(`/F$X1$0XC'@`````
+M?GY^`!`X?!!\.!#^$#A\$!`0$``0$!`0?#@0```(!/X$"````"!`_D`@````
+M`("`@/X````D9O]F)````!@\?O__````__]^/!@`````````````$#@X$!``
+M$``D)"0``````"0D_R3_)"0`$'R`>`3X$```QLP8,&;&`#A$.%:$A'8`("!`
+M```````0($!`0"`0`"`0"`@($"```$0X_CA$````$!#^$!``````````$!`@
+M````_````````````!`0``($"!`@0(``?(*&BI*B?``0,!`0$!!\`'B$!!!`
+MA/P`>(0$.`2$>``(&"A(_@@<`/R`^`0$A'@`.$"`^(2$>`#\A`@0("`@`'B$
+MA'B$A'@`>(2$?`0(<```$!```!`0```0$```$!`@$"!`@$`@$````/P``/P`
+M`"`0"`0($"``>(0$"!``$`!\@IZ2GH!X`#!(A(3\A(0`_$)"?$)"_``\0H"`
+M@$(\`/A$0D)"1/@`_D)(>$A"_@#^0DAX2$#@`#Q"@(".0CX`A(2$_(2$A``X
+M$!`0$!`X``X$!`1$1#@`PD1(<$1"P@#@0$!`0$+^`(+&JI*"@H(`@L*BDHJ&
+M@@`X1(*"@D0X`/Q"0GQ`0.``.$2"@H)4.`3\0D)\1$+"`#B$@'@$A'0`_I(0
+M$!`0.`"$A(2$A(3\`(2$A(2$2#``@H*"DJK&@@""1"@0*$2"`()$*!`0$#@`
+M_H2($")"_@!X0$!`0$!X`(!`(!`(!`(`>`@("`@(>``0*$2"````````````
+M``#_("`0`````````'@$?(1V`,!`?$)"0MP```!XA("$>``,!'R$A(1V````
+M>(3\@'@`.$1`X$!`X````':$A'P$^,!`3&)"0L(`$``P$!`0.``$``0$!(2$
+M>,!`0D1X1,(`,!`0$!`0.````.R2DI*"````^(2$A(0```!XA(2$>````-Q"
+M0GQ`X```=H2$?`0.``#<8D!`X````'R`>`3X`!`0?!`0$@P```"$A(2$=@``
+M`(2$A$@P````@I*JQH(```"$2#!(A````(2$A'P$^```_(@P1/P`&"`@P"`@
+M&``0$!``$!`0`&`0$`P0$&``9)@`````````$"A$@H+^`'B$@(1X&`1X`(0`
+MA(2$>@`,`'B$_(!X`'Z!/`(^0CT`A`!X!'R$>@#``'@$?(1Z`"`@>`1\A'H`
+M``!X@(!X!#A^@3Q"?D`\`(0`>(3\@'@`8`!XA/R`>`!(`#`0$!`X`'R",!`0
+M$#@`8``P$!`0.`"".$2"_H*"`#`01(+^@H(`#/Q`>$!`_````&<9?YAW`#](
+MB/^(B(\`>(1XA(2$>`"$`'B$A(1X`,``>(2$A'@`?H%"0D)"/``@$$)"0D(\
+M`(0`A(2$?`3X0A@D0D(D&`"$`(2$A(1X```"?(J"HGR`.$1$X$""_``Z1(J2
+MHD2X``!")!@8)$(`#!(0.!`0D&`<`'@$?(1Z`!@`,!`0$#@`"!!XA(2$>``(
+M$(2$A(1Z`&28N,2$A(0`9)B$I)2$A``\1$0Z`'X``#A$1#@`?```(``@0("$
+M>`!^@;FEN:6!?@```/P,#```0D1(5FE"A`]"1$A394F/`1`0`!`X.!```")$
+MB$0B````1"(1(D0``"*((H@BB"*(5:I5JE6J5:IWW7?==]UWW1@8&!@8&!@8
+M&!@8&/@8&!@,$$2"_H*"`'X01(+^@H(`,!!$@OZ"@@!^@9VAH9V!?C8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````$!!\@(!\$!""1#A\$'P0$```
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@89)@\`CY"/0!DF#A$@OZ"@C8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V`()\@H)\@@`@
+M?@1\A(1X`/A$0O)"1/@`>/Q`>$!`_`!$_$!X0$#\`&#\0'A`0/P````8"`@(
+M'``($#@0$!`X`#A$.!`0$#@`*``X$!`0.``8&!@8^``````````?&!@8____
+M______\`````_____Q`0$```$!`0$`@X$!`0.`#_____``````P8)$)")!@`
+M`'B$^(3X@(`\&"1"0B08`#`8)$)")!@`9)AXA(2$>`!DF!@D0D(D&`!"0D)"
+M?$"`P$!X1$1X0.#@0'A$>$#@``0(A(2$A'@`>`"$A(2$>``@@(2$A(1X``0(
+MA(2$?`3X!`A")!`0.`#_``````````@0(```````````?@`````@(/P@(`#\
+M````````_P#_X1+D&O8J7X(^2DHZ"@H*`#Y!/$)"/()\("``^``@(```````
+M``@$.#A$1#@``````$0````````````8``````@8"`@<````>`0X!'@````P
+72!`@>```````/#P\/``````````````8
+`
+end
diff --git a/share/syscons/fonts/cp865-8x14.fnt b/share/syscons/fonts/cp865-8x14.fnt
new file mode 100644
index 0000000..a5a2dd7
--- /dev/null
+++ b/share/syscons/fonts/cp865-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 cp865-8x14
+M``````````````````````!^@:6!@;V9@7X``````'[_V___P^?_?@``````
+M`&S^_O[^?#@0````````$#A\_GPX$````````!@\/.?GYQ@8/```````&#Q^
+M__]^&!@\```````````8/#P8`````/_______^?#P^?_____```````\9D)"
+M9CP```#______\.9O;V9P____P```!X.&C)XS,S,>```````/&9F9CP8?A@8
+M```````_,S\P,#!P\.```````']C?V-C8V?GYL``````&!C;/.<\VQ@8````
+M``"`P.#X_OC@P(````````(&#C[^/@X&`@``````&#Q^&!@8?CP8``````!F
+M9F9F9F8`9F8``````'_;V]M[&QL;&P````!\QF`X;,;&;#@,QGP`````````
+M``#^_OX``````!@\?A@8&'X\&'X`````&#Q^&!@8&!@8```````8&!@8&!A^
+M/!@`````````&`S^#!@````````````P8/Y@,`````````````#`P,#^````
+M````````*&S^;"@``````````!`X.'Q\_OX`````````_OY\?#@X$```````
+M````````````````````&#P\/!@8`!@8````9F9F)````````````````&QL
+M_FQL;/YL;````!@8?,;"P'P&AL9\&!@``````,+&#!@P9L8``````#AL;#AV
+MW,S,=@```!@8&#`````````````````,&#`P,#`P&`P``````#`8#`P,#`P8
+M,`````````!F//\\9@```````````!@8?A@8`````````````````!@8&#``
+M`````````/X`````````````````````&!@```````(&#!@P8,"`````````
+M.&S&QM;&QFPX```````8.'@8&!@8&'X``````'S&!@P8,&#&_@``````?,8&
+M!CP&!L9\```````,'#QLS/X,#!X``````/[`P,#\!@;&?```````.&#`P/S&
+MQL9\``````#^Q@8,&#`P,#```````'S&QL9\QL;&?```````?,;&QGX&!@QX
+M````````&!@````8&``````````8&````!@8,```````#!@P8,!@,!@,````
+M``````!^``!^`````````&`P&`P&#!@P8```````?,;&#!@8`!@8``````!\
+MQL;>WM[<P'P``````!`X;,;&_L;&Q@``````_&9F9GQF9F;\```````\9L+`
+MP,#"9CP``````/AL9F9F9F9L^```````_F9B:'AH8F;^``````#^9F)H>&A@
+M8/```````#QFPL#`WL9F.@``````QL;&QO[&QL;&```````\&!@8&!@8&#P`
+M`````!X,#`P,#,S,>```````YF9L;'AL;&;F``````#P8&!@8&!B9OX`````
+M`,;N_M;&QL;&Q@``````QN;V_M[.QL;&``````!\QL;&QL;&QGP``````/QF
+M9F9\8&!@\```````?,;&QL;&UMY\#@````#\9F9F?&QF9N8``````'S&QF`X
+M#,;&?```````?GY:&!@8&!@\``````#&QL;&QL;&QGP``````,;&QL;&QFPX
+M$```````QL;&QM;6_FQL``````#&QL9\.'S&QL8``````&9F9F8\&!@8/```
+M````_L:,&#!@PL;^```````\,#`P,#`P,#P``````(#`X'`X'`X&`@``````
+M/`P,#`P,#`P\```0.&S&``````````````````````````````#_`#`8#```
+M``````````````````!X#'S,S'8``````.!@8'AL9F9F?```````````?,;`
+MP,9\```````<#`P\;,S,S'8``````````'S&_L#&?```````'#8R,'PP,#!X
+M``````````!VS,S,?`S,>````.!@8&QV9F9FY@``````&!@`.!@8&!@\````
+M```&!@`.!@8&!F9F/````.!@8&9L>&QFY@``````.!@8&!@8&!@\````````
+M``#L_M;6UM8``````````-QF9F9F9@``````````?,;&QL9\``````````#<
+M9F9F?&!@\````````';,S,Q\#`P>````````W'9F8&#P``````````!\QG`<
+MQGP``````!`P,/PP,#`V'```````````S,S,S,QV``````````#&QL9L.!``
+M`````````,;&UM;^;```````````QFPX.&S&``````````#&QL;&?@8,>```
+M`````/[,&#!F_@``````#A@8&'`8&!@.```````8&!@8&!@8&!@``````'`8
+M&!@.&!@8<````';<`````````````````````!`X;,;&_@```````#QFPL#`
+MP,)F/`QX````S```S,S,S,QV``````P8,`!\QO[`QGP`````$#AL`'@,?,S,
+M=@``````Q@``>`Q\S,QV`````&`P&`!X#'S,S'8`````.&PX`'@,?,S,=@``
+M````````?,;`P,9\#'@``!`X;`!\QO[`QGP``````,8``'S&_L#&?`````!@
+M,!@`?,;^P,9\``````!F```X&!@8&#P`````&#QF`#@8&!@8/`````!@,!@`
+M.!@8&!@\````Q@`0.&S&QO[&QL8``#AL.!`X;,;&_L;&Q@``#!@`_F9B:'AH
+M8F;^``````````#L-G;<V&X``````#YLS,S^S,S,S@`````0.&P`?,;&QL9\
+M``````#&``!\QL;&QGP`````8#`8`'S&QL;&?``````P>,P`S,S,S,QV````
+M`&`P&`#,S,S,S'8``````,8``,;&QL9^!@QX`,8`?,;&QL;&QL9\````Q@#&
+MQL;&QL;&QGP``````````'S.WO;F?``````X;&1@\&!@8.;\``````1\SL[6
+MUM;FYGQ`````_&9F?&)F;V9F\P`````.&Q@8&'X8&!C8<`````P8,`!X#'S,
+MS'8`````#!@P`#@8&!@8/``````,&#``?,;&QL9\``````P8,`#,S,S,S'8`
+M`````';<`-QF9F9F9@``=MP`QN;V_M[.QL;&`````#QL;#X`?@``````````
+M.&QL.`!\````````````,#``,#!@QL9\````````````_L#`P```````````
+M``#^!@8&``````!@X&-F;!@P;L,&#!\``&#@8V9L&C9NVC\&!@```!@8`!@8
+M/#P\&``````````V;-AL-@```````````,9\QL;&?,8``!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
+M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
+M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
+M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
+M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
+M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
+M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
+M\/#P#P\/#P\/#P\/#P\/#P__________`````````````````';<V-C<=@``
+M````>,S,S-C,QL;,``````#^QL;`P,#`P,```````````/YL;&QL;```````
+M_L9@,!@P8,;^``````````!^V-C8V'```````````&9F9F9F?&#```````!V
+MW!@8&!@8``````!^&#QF9F8\&'X``````#ALQL;^QL9L.```````.&S&QL9L
+M;&SN```````>,!@,/F9F9CP``````````'[;VWX``````````P9^V]OS?F#`
+M```````>,&!@?F!@,!X```````!\QL;&QL;&Q@```````/X``/X``/X`````
+M````&!A^&!@``'X``````#`8#`8,&#``?@``````#!@P8#`8#`!^``````X;
+M&Q@8&!@8&!@8&!@8&!@8&!@8V-AP```````````8`'X`&````````````';<
+M`';<```````X;&PX`````````````````````!@8````````````````&```
+M```````/#`P,#`P,[&P\'````&PV-C8V-@``````````/&8,&#)^````````
+=````````?GY^?GY^````````````````````````
+`
+end
diff --git a/share/syscons/fonts/cp865-8x16.fnt b/share/syscons/fonts/cp865-8x16.fnt
new file mode 100644
index 0000000..e23b5b8
--- /dev/null
+++ b/share/syscons/fonts/cp865-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp865-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P```#`8#```````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````<-C(P>#`P,#!X````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````QL;&QL9L.````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'```````';<````````
+M```````````````0.&S&QL;^`````````#QFPL#`P,#"9CP8<`````#,``#,
+MS,S,S,QV```````,&#``?,;^P,#&?```````$#AL`'@,?,S,S'8```````#,
+M``!X#'S,S,QV``````!@,!@`>`Q\S,S,=@``````.&PX`'@,?,S,S'8`````
+M``````!\QL#`P,9\&'`````0.&P`?,;^P,#&?````````,8``'S&_L#`QGP`
+M`````&`P&`!\QO[`P,9\````````9@``.!@8&!@8/```````&#QF`#@8&!@8
+M&#P``````&`P&``X&!@8&!@\``````#&`!`X;,;&_L;&Q@`````X;#@0.&S&
+MQO[&QL8`````#!@`_F9B:'AH8F;^````````````[#8V?MC8;@```````#YL
+MS,S^S,S,S,X``````!`X;`!\QL;&QL9\````````Q@``?,;&QL;&?```````
+M8#`8`'S&QL;&QGP``````#!XS`#,S,S,S,QV``````!@,!@`S,S,S,S,=@``
+M`````,8``,;&QL;&QGX&#'@``,8`?,;&QL;&QL9\``````#&`,;&QL;&QL;&
+M?````````````'S&SM;FQGP``````#AL9&#P8&!@8.;\```````$?,[.UM;6
+MUN;F?$``````^,S,^,3,WLS,S,8```````X;&!@8?A@8&-AP```````8,&``
+M>`Q\S,S,=@``````#!@P`#@8&!@8&#P``````!@P8`!\QL;&QL9\```````8
+M,&``S,S,S,S,=@```````';<`-QF9F9F9F8`````=MP`QN;V_M[.QL;&````
+M````/&QL/@!^`````````````#AL;#@`?``````````````P,``P,&#`QL9\
+M`````````````/[`P,#```````````````#^!@8&!@```````&#@8F9L&#!@
+MW(8,&#X```!@X&)F;!@P9LZ:/P8&`````!@8`!@8&#P\/!@````````````V
+M;-AL-@````````````#&?,;&QL9\Q@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````';<V-C8W'8`````
+M``!XS,S,V,S&QL;,````````_L;&P,#`P,#`P````````````/YL;&QL;&P`
+M``````#^QF`P&!@P8,;^````````````?MC8V-C8<````````````&9F9F9F
+M9GQ@8,```````';<&!@8&!@8````````?A@\9F9F9CP8?@```````#ALQL;^
+MQL;&;#@````````X;,;&QFQL;&SN````````'C`8##YF9F9F/```````````
+M`'[;V]M^`````````````P9^V]OS?F#`````````'#!@8'Q@8&`P'```````
+M``!\QL;&QL;&QL8``````````/X``/X``/X````````````8&'X8&```?@``
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&!C8V-AP```````````8`'X`&```````````````=MP`
+M=MP`````````.&QL.````````````````````````!@8````````````````
+M```8````````````#PP,#`P,[&QL/!P``````&PV-C8V-@`````````````\
+M9@P8,GX`````````````````?GY^?GY^?@``````````````````````````
+!``P8
+`
+end
diff --git a/share/syscons/fonts/cp865-8x8.fnt b/share/syscons/fonts/cp865-8x8.fnt
new file mode 100644
index 0000000..de8b0b3
--- /dev/null
+++ b/share/syscons/fonts/cp865-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp865-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+MUA`X$#A\_OY\$#@``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`&-L\Y^<\VQB`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F$\9F8\AGP`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````&#P\&!@`
+M&`!F9B0``````&QL_FS^;&P`&#Y@/`9\&```QLP8,&;&`#AL.';<S'8`&!@P
+M```````,&#`P,!@,`#`8#`P,&#```&8\_SQF````&!A^&!@`````````&!@P
+M````?@```````````!@8``8,&#!@P(``.&S&UL9L.``8.!@8&!A^`'S&!APP
+M9OX`?,8&/`;&?``</&S,_@P>`/[`P/P&QGP`.&#`_,;&?`#^Q@P8,#`P`'S&
+MQGS&QGP`?,;&?@8,>```&!@``!@8```8&```&!@P!@P8,!@,!@```'X``'X`
+M`&`P&`P8,&``?,8,&!@`&`!\QM[>WL!X`#ALQO[&QL8`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CH`QL;&_L;&Q@`\
+M&!@8&!@\`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@!\QL;&QL9\`/QF9GQ@8/``?,;&QL;.?`[\9F9\;&;F`#QF,!@,9CP`?GY:
+M&!@8/`#&QL;&QL9\`,;&QL;&;#@`QL;&UM;^;`#&QFPX;,;&`&9F9CP8&#P`
+M_L:,&#)F_@`\,#`P,#`\`,!@,!@,!@(`/`P,#`P,/``0.&S&````````````
+M``#_,!@,`````````'@,?,QV`.!@?&9F9MP```!\QL#&?``<#'S,S,QV````
+M?,;^P'P`/&9@^&!@\````';,S'P,^.!@;'9F9N8`&``X&!@8/``&``8&!F9F
+M/.!@9FQX;.8`.!@8&!@8/````.S^UM;6````W&9F9F8```!\QL;&?````-QF
+M9GQ@\```=LS,?`P>``#<=F!@\````'[`?`;\`#`P_#`P-AP```#,S,S,=@``
+M`,;&QFPX````QM;6_FP```#&;#ALQ@```,;&QGX&_```?DP8,GX`#A@8<!@8
+M#@`8&!@8&!@8`'`8&`X8&'``=MP`````````$#ALQL;^`'S&P,#&?`QXS`#,
+MS,S,=@`,&'S&_L!\`'R">`Q\S'8`Q@!X#'S,=@`P&'@,?,QV`#`P>`Q\S'8`
+M``!^P,!^##A\@GS&_L!\`,8`?,;^P'P`,!A\QO[`?`!F`#@8&!@\`'R".!@8
+M&#P`,!@`.!@8/`#&.&S&_L;&`#AL?,;^QL8`&##^P/C`_@```'X2_I#^`#YL
+MS/[,S,X`?()\QL;&?`#&`'S&QL9\`#`8?,;&QGP`>(0`S,S,=@!@,,S,S,QV
+M`,8`QL;&?@;\QCALQL9L.`#&`,;&QL9\```"?,[6YGR`.&QD\&!F_``Z;,[6
+MYFRX`/C,S/K&S\;'#AL8/!C8<``8,'@,?,QV``P8`#@8&#P`#!A\QL;&?``8
+M,,S,S,QV`';<`-QF9F8`=MP`YO;>S@`\;&P^`'X``#AL;#@`?```&``8&#!C
+M/@````#^P,```````/X&!@``8^9L?C-FS`]CYFQZ-FK?!A@`&!@\/!@``#-F
+MS&8S````QGS&QGS&`"*((H@BB"*(5:I5JE6J5:IWW7?==]UWW1@8&!@8&!@8
+M&!@8&/@8&!@8&/@8^!@8&#8V-C;V-C8V`````/XV-C8``/@8^!@8&#8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````-C8V-OX````8&/@8^```````
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8&!@?&!\8&!@V-C8V-S8V-C8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V&!C_`/\````V
+M-C8V_P``````_P#_&!@8`````/\V-C8V-C8V/P```!@8'Q@?```````?&!\8
+M&!@`````/S8V-C8V-C;_-C8V&!C_&/\8&!@8&!@8^``````````?&!@8____
+M______\`````______#P\/#P\/#P#P\/#P\/#P______````````=MS(W'8`
+M>,S,V,S&S`#^QL#`P,#`````_FQL;&P`_L9@,&#&_@```'[8V-AP````9F9F
+M9GS``';<&!@8&`!^&#QF9CP8?CALQO[&;#@`.&S&QFQL[@`.&`P^9F8\````
+M?MO;?@``!@Q^V]M^8,`>,&!^8#`>``!\QL;&QL8``/X`_@#^```8&'X8&`!^
+M`#`8#!@P`'X`#!@P&`P`?@`.&QL8&!@8&!@8&!@8V-AP`!@`?@`8````=MP`
+M=MP``#AL;#@`````````&!@````````8``````\,#`SL;#P<;#8V-C8```!X
+7#!@P?```````/#P\/``````````````8
+`
+end
diff --git a/share/syscons/fonts/cp865-thin-8x16.fnt b/share/syscons/fonts/cp865-thin-8x16.fnt
new file mode 100644
index 0000000..aa8709a
--- /dev/null
+++ b/share/syscons/fonts/cp865-thin-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp865-thin-8x16
+M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``#X*
+M$B)XA(2$A'@````````X1$1$1#@0?!`0````````/R$_("`@(&#@P```````
+M`#\A/R$A(2$C9^;`````````$!#6..XXUA`0``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````0.'P0$!!\.!``````````0D)"0D)"0@!"
+M0@```````'^)B8EY"0D)"0D``````'R&0#A$@H)$.`3"?```````````````
+M_O[^_@```````!`X?!`0$'PX$'P````````0.'P0$!`0$!`0````````$!`0
+M$!`0$'PX$`````````````@$_@0(```````````````@0/Y`(```````````
+M`````("`@/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````0.#@X$!`0`!`0
+M``````!"0D)"``````````````````!$1/Y$1$3^1$0`````$!!\@H)`,`P$
+M@H)\$!``````````@H0($"!"@@```````#A$1#@X1T1$1#L``````"`@0```
+M````````````````!`@0$!`0$!`(!````````"`0"`@("`@($"``````````
+M```D&/\8)```````````````$!!\$!`````````````````````0$!`@````
+M`````````/X````````````````````````0$`````````````($"!`@0(``
+M```````X1(*"DI*"@D0X````````"!@X"`@("`@(/@```````'R"`@0($"!`
+M@OX```````!\@@("/`("`H)\````````#!0D1(3^!`0$#@```````/Z`@(#\
+M`@("@GP````````X0("`_(*"@H)\````````_H("`@0($!`0$````````'R"
+M@H)\@H*"@GP```````!\@H*"?@("`@1X```````````0$````!`0````````
+M````$!`````0$"``````````!`@0($`@$`@$````````````?@``?@``````
+M``````!`(!`(!`@0($````````!\@H("!`@(``@(`````````'R"@IZ2DHR`
+M?````````!`H1(*"_H*"@H(```````#\0D)"?$)"0D+\````````/$*"@("`
+M@()"/````````/A$0D)"0D)"1/@```````#^0D)(>$A`0D+^````````_D)"
+M2'A(0$!`X````````#Q"@H"`GH*"1CH```````""@H*"_H*"@H*"````````
+M.!`0$!`0$!`0.`````````X$!`0$!(2$A'@```````#"0D)$2'A$0D+"````
+M````X$!`0$!`0$)"_@```````(+&JI*"@H*"@H(```````""@L*BDHJ&@H*"
+M````````.$2"@H*"@H)$.````````/Q"0D)\0$!`0.````````!\@H*"@H*"
+MDHI\!`(`````_$)"0GQ$0D)"P@```````'R"@D`P#`2"@GP```````#^DI(0
+M$!`0$!`X````````@H*"@H*"@H*"?````````(*"@H*"@H)$*!````````""
+M@H*"@H*2JL:"````````@H)$*!`H1(*"@@```````(*"@D0X$!`0$#@`````
+M``#^@H($&"!`@H+^````````/"`@("`@("`@/`````````"`0"`0"`0"`0``
+M```````\!`0$!`0$!`0\`````!`H1((`````````````````````````````
+M````_P``$!`(````````````````````````>`1\A(2,=@```````,!`0'A$
+M0D)"0GP```````````!\@H"`@()\````````#`0$/$2$A(2,=@``````````
+M`'R"@OZ`@GP````````X1$1`X$!`0$#@````````````=HR$A(2$?`2$>```
+M`,!`0'Q"0D)"0L(````````0$``P$!`0$!`X`````````@(`!@("`@("`D)"
+M/````,!`0$)$2'A$0L(````````P$!`0$!`0$!`X````````````[)*2DI*2
+MD@```````````-QB0D)"0D(```````````!\@H*"@H)\````````````W&)"
+M0D)"?$!`X````````':,A(2$A'P$!`X```````#<8D)`0$#@````````````
+M?(*`?`*"?````````"`@(/@@("`@(AP```````````"$A(2$A(QV````````
+M````0D)"0D(D&````````````(*"@I*JQH(```````````""1"@0*$2"````
+M````````@H*"@H*"?@($>````````/Z$"!`@0OX````````.$!`08!`0$!`.
+M````````$!`0$``0$!`0$````````'`("`@&"`@("'````````!VW```````
+M```````````````0*$2"@H+^`````````#Q"@H"`@()"/`0"?`````"$``"$
+MA(2$A(QV```````$"!``?(*"_H""?```````$"A$`'@$?(2$C'8```````"$
+MA`!X!'R$A(QV``````!`(!``>`1\A(2,=@``````.$0X`'@$?(2$C'8`````
+M`````#Q"0$!"/`0"/``````0*$0`?(*"_H""?````````(0``'R"@OZ`@GP`
+M`````$`@$`!\@H+^@()\````````1$0`&`@("`@('```````&"1"`!@("`@(
+M"!P``````$`@$``8"`@("`@<``````""`!`H1(*"_H*"@@`````X1#@0*$2"
+M@OZ"@H(`````"!`@_D)`0'Q`0$+^````````````C%(R?HB8;@```````#Y$
+MA(3^A(2$A(8``````!`H1`!\@H*"@H)\````````1```?(*"@H*"?```````
+M0"`0`'R"@H*"@GP``````#!(A`"$A(2$A(QV``````!`(!``A(2$A(2,=@``
+M`````((```""@H*"@GX"!'@``((`?(*"@H*"@H)\``````""`(*"@H*"@H*"
+M?````````````'R&BI*BPGP``````#A$1$#@0$!`0$+\```````"/$R*DI*B
+MHL+$N```````^(2$^(2$GH2$A(8```````8)"`@(/@@("`@(2#`````($"``
+M>`1\A(2,=@``````!`@0`!@("`@("!P```````@0(`!\@H*"@H)\```````(
+M$"``A(2$A(2,=@```````';<`-QB0D)"0D(`````=MP`@L*BDHJ&@H*"````
+M```\1$0^`'X`````````````.$1$.`!\```````````````@(``@($"`@H)\
+M`````````````/[`P,#```````````````#^!@8&!@```````("`@H2($"!`
+MG`($"!X```"`@(*$B!`@1HH2/@("`````!`0`!`0$#@X.!`````````````D
+M2)!()`````````````""?(*"@H)\@@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````&*4F(B8E&(`````
+M``!XA(2$N(2"@H*\@```````_H*"@("`@("`@```````````_D1$1$1$1$0`
+M````````_H)`(!`@0(+^````````````?HB(B(B(<```````````0D)"0D)\
+M0$#``````````'+4"`@("`@(`````````'P0.$1$1#@0?``````````X1(*"
+M_H*"1#@````````X1(*"@D0H*"CN````````'A`(!#Y"0D)"/```````````
+M`'Z9F9E^`````````````0)^B9&A?D"`````````'"!`0'A`0$`@'```````
+M``!\@H*"@H*"@H(``````````/X``/X``/X````````````0$'P0$```_@``
+M```````0"`0"!`@0`'X`````````"!`@0"`0"`!^````````#A$1$!`0$!`0
+M$!`0$!`("`@("`@("`B(B'```````````!`0`'P`$!``````````````=MP`
+M=MP`````````.$1$.````````````````````````!@8````````````````
+M````&```````````#P@("`@(Z"@H*!@``````-AD1$1$1`````````````!P
+MB!`@2'@`````````````````?'Q\?'Q\?```````````````````````````
+!`!`@
+`
+end
diff --git a/share/syscons/fonts/cp865-thin-8x8.fnt b/share/syscons/fonts/cp865-thin-8x8.fnt
new file mode 100644
index 0000000..3346ed0
--- /dev/null
+++ b/share/syscons/fonts/cp865-thin-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp865-thin-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[6
+M$!!\$!`X[/Y\$'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_Q\#
+M!7V$A(1X/D%!03X(/@@_(3\@("!@P#\A/R$A(V;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`$#A\$!!\.!`D)"0D)``D`'^2DG(2$A(`/F$X1$0XC'@`````
+M?GY^`!`X?!!\.!#^$#A\$!`0$``0$!`0?#@0```(!/X$"````"!`_D`@````
+M`("`@/X````D9O]F)````!@\?O__````__]^/!@`````````````$#@X$!``
+M$``D)"0``````"0D_R3_)"0`$'R`>`3X$```QLP8,&;&`#A$.%:$A'8`("!`
+M```````0($!`0"`0`"`0"`@($"```$0X_CA$````$!#^$!``````````$!`@
+M````_````````````!`0``($"!`@0(``?(*&BI*B?``0,!`0$!!\`'B$!!!`
+MA/P`>(0$.`2$>``(&"A(_@@<`/R`^`0$A'@`.$"`^(2$>`#\A`@0("`@`'B$
+MA'B$A'@`>(2$?`0(<```$!```!`0```0$```$!`@$"!`@$`@$````/P``/P`
+M`"`0"`0($"``>(0$"!``$`!\@IZ2GH!X`#!(A(3\A(0`_$)"?$)"_``\0H"`
+M@$(\`/A$0D)"1/@`_D)(>$A"_@#^0DAX2$#@`#Q"@(".0CX`A(2$_(2$A``X
+M$!`0$!`X``X$!`1$1#@`PD1(<$1"P@#@0$!`0$+^`(+&JI*"@H(`@L*BDHJ&
+M@@`X1(*"@D0X`/Q"0GQ`0.``.$2"@H)4.`3\0D)\1$+"`#B$@'@$A'0`_I(0
+M$!`0.`"$A(2$A(3\`(2$A(2$2#``@H*"DJK&@@""1"@0*$2"`()$*!`0$#@`
+M_H2($")"_@!X0$!`0$!X`(!`(!`(!`(`>`@("`@(>``0*$2"````````````
+M``#_("`0`````````'@$?(1V`,!`?$)"0MP```!XA("$>``,!'R$A(1V````
+M>(3\@'@`.$1`X$!`X````':$A'P$^,!`3&)"0L(`$``P$!`0.``$``0$!(2$
+M>,!`0D1X1,(`,!`0$!`0.````.R2DI*"````^(2$A(0```!XA(2$>````-Q"
+M0GQ`X```=H2$?`0.``#<8D!`X````'R`>`3X`!`0?!`0$@P```"$A(2$=@``
+M`(2$A$@P````@I*JQH(```"$2#!(A````(2$A'P$^```_(@P1/P`&"`@P"`@
+M&``0$!``$!`0`&`0$`P0$&``9)@`````````$"A$@H+^`'B$@(1X&`1X`(0`
+MA(2$>@`,`'B$_(!X`'Z!/`(^0CT`A`!X!'R$>@#``'@$?(1Z`"`@>`1\A'H`
+M``!X@(!X!#A^@3Q"?D`\`(0`>(3\@'@`8`!XA/R`>`!(`#`0$!`X`'R",!`0
+M$#@`8``P$!`0.`"".$2"_H*"`#`01(+^@H(`#/Q`>$!`_````&<9?YAW`#](
+MB/^(B(\`>(1XA(2$>`"$`'B$A(1X`,``>(2$A'@`?H%"0D)"/``@$$)"0D(\
+M`(0`A(2$?`3X0A@D0D(D&`"$`(2$A(1X```"?(J"HGR`.$1$X$""_``Z1(J2
+MHD2X`/B$A/B"AX*##!(0.!`0D&`<`'@$?(1Z`!@`,!`0$#@`"!!XA(2$>``(
+M$(2$A(1Z`&28N,2$A(0`9)B$I)2$A``\1$0Z`'X``#A$1#@`?```(``@0("$
+M>`````#\P,```````/P,#```0D1(5FE"A`]"1$A394F/`1`0`!`X.!```")$
+MB$0B````@GR"@GR"`"*((H@BB"*(5:I5JE6J5:IWW7?==]UWW1@8&!@8&!@8
+M&!@8&/@8&!@8&/@8^!@8&#8V-C;V-C8V`````/XV-C8``/@8^!@8&#8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````-C8V-OX````8&/@8^```````
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8&!@?&!\8&!@V-C8V-S8V-C8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V&!C_`/\````V
+M-C8V_P``````_P#_&!@8`````/\V-C8V-C8V/P```!@8'Q@?```````?&!\8
+M&!@`````/S8V-C8V-C;_-C8V&!C_&/\8&!@8&!@8^``````````?&!@8____
+M______\`````______#P\/#P\/#P#P\/#P\/#P______````````8I2(E&(`
+M`'B$^(3X@(``_(2`@("```#^*"@H*"@`_(1`($"$_````'Z(B(AP``!"0D)"
+M?$"``':("`@("`#X('"(B'`@^#A$@OZ"1#@`.$2"@B@H;``<$`A\A(1X````
+M?)*2?````@1^B9%^0(`X0(#X@$`X`'B$A(2$A(0``/P`_`#\```@(/P@(`#\
+M`$`@$"!``/P`$"!`(!``_``.$1$0$!`0$`@("`@(B(AP("``^``@(```9)@`
+M9)@``#A$1#@`````````&!@`````````&`````<$!`1D)!P,6$1$1$0````P
+72!`@>```````/#P\/```````````````
+`
+end
diff --git a/share/syscons/fonts/cp866-8x14.fnt b/share/syscons/fonts/cp866-8x14.fnt
new file mode 100644
index 0000000..b4c0729
--- /dev/null
+++ b/share/syscons/fonts/cp866-8x14.fnt
@@ -0,0 +1,83 @@
+begin 644 cp866-8x14
+M`````````````````````'Z!I8&!I9F!?@``````?O_;___#Y_]^````````
+M;/[^_OY\.!`````````0.'S^?#@0````````&#P\Y^?G&!@\```````8/'[_
+M_WX8&#P``````````!@\/!@``````/______Y\/#Y_______`````#QF0D)F
+M/`````#_____PYF]O9G#_____P``'@X:,GC,S,QX```````\9F9F/!A^&!@`
+M`````#\S/S`P,'#PX```````?V-_8V-C9^?FP``````8&-L\YSS;&!@`````
+M`(#`X/C^^.#`@````````@8./OX^#@8"```````8/'X8&!A^/!@``````&9F
+M9F9F9@!F9@``````?]O;VWL;&QL;`````'S&8#ALQL9L.`S&?```````````
+M`/[^_@``````&#Q^&!@8?CP8?@`````8/'X8&!@8&!@``````!@8&!@8&'X\
+M&``````````8#/X,&````````````#!@_F`P`````````````,#`P/X`````
+M```````H;/YL*```````````$#@X?'S^_@````````#^_GQ\.#@0````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````$#ALQL;^````````/F;&QL;^
+MQL;&``````#^P,#\QL;&QOP``````/S&QL;\QL;&_```````_L;`P,#`P,#`
+M```````\;&QL;&QL;/[&@@```/[&P,#PP,#&_@``````UM;65'S6UM;6````
+M``!\Q@8<!@;&QGP``````,;&QL[>]N;&Q@`````,VL;&SM[VYL;&``````#&
+MS-CP\-C,QL8``````!XV9L;&QL;&Q@``````@L;&[N[^UL;&``````#&QL;&
+M_L;&QL8``````'[&QL;&QL;&_```````_L;&QL;&QL;&``````#\QL;&QOS`
+MP,```````'S&QL#`P,;&?```````?GY:&!@8&!@8``````#&QL;&QGX&QGP`
+M`````'S6UM;6UGP0.```````QL9L.#ALQL;&``````#,S,S,S,S,S/X"!@``
+M`,;&QL;&?@8&!@````#6UM;6UM;6UM;^`````-;6UM;6UM;6UOX"!@```.#@
+M8'QF9F9F?```````QL;&YK:VMK;F``````#`P,#\QL;&QOP``````'S&!AX&
+M!L;&?```````G+:VMO:VMK:<``````!^QL;&QGXV9L8``````````'S&QO[&
+MQ@``````````_L#\QL;\``````````#\QOS&QOP``````````/["P,#`P```
+M````````/&QL;&S^QH(```````!\QOS`QGP``````````-;6?-;6U@``````
+M````?,8<!L9\``````````#&SM[VYL8````````,&,;.WO;FQ@``````````
+MQLSXV,S&```````````^9F9F9L8``````````,;N_M;&Q@``````````QL;&
+M_L;&``````````!^QL;&QOP``````````/[&QL;&Q@```!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
+M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
+M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
+M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
+M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
+M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
+M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
+M\/#P#P\/#P\/#P\/#P\/#P__________````````````````_,;&QL;\P,``
+M``````!\QL#`QGP``````````'Y:&!@8&```````````QL;&QL9^!GP`````
+M`!!\UM;6UGP0.````````,9L.#ALQ@``````````S,S,S,S^!@P```````#&
+MQL9^!@8``````````-;6UM;6_@``````````UM;6UM;^`@8```````#@8'QF
+M9GP``````````,;&YK:VY@``````````P,#\QL;\``````````!\QAX&QGP`
+M`````````)RVMO:VG```````````?L9^-F;&````;&P`_L;`\,#`QOX`````
+M`&QL`'S&_,#&?```````,!@,!@P8,`!^```````,&#!@,!@,`'X```````X;
+M&Q@8&!@8&!@8&!@8&!@8&!@8V-AP````````&!@`?@`8&```````````=MP`
+M=MP````````X;&PX````````````````````&!@`````````````````&```
+M```````/#`P,#`SL;#P<``````!\@KJJHJ*JNH)\````<-@P8,CX````````
+=``````!\?'Q\?'P```````````````````````!\
+`
+end
diff --git a/share/syscons/fonts/cp866-8x16.fnt b/share/syscons/fonts/cp866-8x16.fnt
new file mode 100644
index 0000000..a2f4a1d
--- /dev/null
+++ b/share/syscons/fonts/cp866-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp866-8x16
+M````````````````````````?H&E@8&EF8&!?@```````'[_V___V^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X&
+M#AIXS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^`````````#YFQL;&_L;&QL8```````#^P,#`
+M_,;&QL;\````````_,;&QOS&QL;&_````````/[&P,#`P,#`P,`````````\
+M;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````-;6UE1\UM;6UM8`````
+M``!\Q@8&'`8&QL9\````````QL;&QL[>]N;&Q@``````#-K&QL;.WO;FQL8`
+M``````#&S-CP\-C,QL;&````````'C9FQL;&QL;&Q@```````,;&[N[^_M;6
+MQL8```````#&QL;&_L;&QL;&````````?L;&QL;&QL;&_````````/[&QL;&
+MQL;&QL8```````#\QL;&QL;\P,#`````````?,;&P,#`P,;&?````````'Y^
+M6A@8&!@8&!@```````#&QL;&QL9^!L9\````````?-;6UM;6UGP0.```````
+M`,;&;#@X;,;&QL8```````#,S,S,S,S,S,S^`@8$````QL;&QL9^!@8&!@``
+M`````-;6UM;6UM;6UOX```````#6UM;6UM;6UM;^`@8$````X.!@8'QF9F9F
+M?````````,;&QL;FMK:VMN8```````#`P,#`_,;&QL;\````````>,P&!AX>
+M!@;,>````````)RVMK;VMK:VMIP```````!^QL;&QGXV9L;&````````````
+M?,;&QO[&Q@```````````/[`_,;&QOP```````````#\QL;\QL;\````````
+M````_L;"P,#`P````````````#QL;&QL;/[&@@````````!\QL;\P,9\````
+M````````UM;6?-;6U@```````````'S&!AP&QGP```````````#&QL[>]N;&
+M``````````P8QL;.WO;FQ@```````````,;,V/C8S,8````````````^9F9F
+M9F;&````````````QN[^UL;&Q@```````````,;&QO[&QL8```````````!^
+MQL;&QL;\````````````_L;&QL;&Q@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````/S&QL;&QOS`P,``
+M``````!\QL#`PL9\````````````?EH8&!@8&````````````,;&QL;&QGX&
+MQGP``````!!\UM;6UM9\$#@`````````QFPX.&S&Q@```````````,S,S,S,
+MS/X&#`````````#&QL;&?@8&````````````UM;6UM;6_@```````````-;6
+MUM;6UOX"!@0```````#@8'QF9F9\````````````QL;FMK:VY@``````````
+M`,#`_,;&QOP```````````!\Q@8>!L9\````````````G+:V]K:VG```````
+M`````'[&QGXV9L8`````9F8`_L;`P/#`P,;^````````;&P`?,;&_,#&?```
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&-C8V'```````````!@8`'X`&!@`````````````=MP`
+M=MP`````````.&QL.````````````````````````!@8````````````````
+M````&```````````#PP,#`P,[&QL/!P```````!\@KJJHJ*BJKJ"?`````!P
+MV#!@R/@`````````````````?'Q\?'Q\?```````````````````````````
+!`#!@
+`
+end
diff --git a/share/syscons/fonts/cp866-8x8.fnt b/share/syscons/fonts/cp866-8x8.fnt
new file mode 100644
index 0000000..8f3a33a
--- /dev/null
+++ b/share/syscons/fonts/cp866-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 cp866-8x8
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+M?#A\$!`X?/Y\.'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F,X;&PXS'@`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````$#ALQL;^`!XV9F9^9F8`?&!@
+M?&9F?`!\9F9\9F9\`'Y@8&!@8&``.&QL;&QL_L9^8&!\8&!^`-O;?CQ^V]L`
+M/&8&'`9F/`!F9FY^=F9F`#QF;GYV9F8`9FQX<'AL9@`>-F9F9F9F`,;N_O[6
+MQL8`9F9F?F9F9@`\9F9F9F8\`'YF9F9F9F8`?&9F9GQ@8``\9F!@8&8\`'X8
+M&!@8&!@`9F9F/@9F/`!^V]O;?A@8`&9F/!@\9F8`9F9F9F9F?P-F9F8^!@8&
+M`-O;V]O;V_\`V]O;V]O;_P/@8&!\9F9\`,;&QO;>WO8`8&!@?&9F?`!XC`8^
+M!HQX`,[;V_O;V\X`/F9F9CXV9@```'@,?,QV```\8#QF9CP```!\9GQF?```
+M`'Y@8&!@````/&QL;/[&```\9GY@/````-M^/'[;````/&8,9CP```!F;GYV
+M9@``&&9N?G9F````9FQX;&8````>-F9F9@```,;^_M;&````9F9^9F8````\
+M9F9F/````'YF9F9F`!%$$4011!%$5:I5JE6J5:K==]UWW7?==Q@8&!@8&!@8
+M&!@8^!@8&!@8^!CX&!@8&#8V-O8V-C8V````_C8V-C8`^!CX&!@8&#;V!O8V
+M-C8V-C8V-C8V-C8`_@;V-C8V-C;V!OX`````-C8V_@`````8^!CX````````
+M`/@8&!@8&!@8'P`````8&!C_`````````/\8&!@8&!@8'Q@8&!@```#_````
+M`!@8&/\8&!@8&!\8'Q@8&!@V-C8W-C8V-C8W,#\``````#\P-S8V-C8V]P#_
+M``````#_`/<V-C8V-C<P-S8V-C8`_P#_`````#;W`/<V-C8V&/\`_P`````V
+M-C;_``````#_`/\8&!@8````_S8V-C8V-C8_`````!@?&!\``````!\8'Q@8
+M&!@````_-C8V-C8V-O\V-C8V&/\8_Q@8&!@8&!CX`````````!\8&!@8____
+M______\```#_______#P\/#P\/#P#P\/#P\/#P____\`````````?&9F?&``
+M```\9F!F/````'X8&!@8````9F8^!CP```!^V]M^&````&8\&#QF````9F9F
+M9G\#``!F9CX&!@```-O;V]O_````V]O;V_\#``#@8'QF?````,;&]M[V````
+M8&!\9GP```!\!CX&?````,[;^]O.````/F8^-F8`9@!^8'Q@?@`D`#QF?F`\
+M```P&`P&#!@P``P8,&`P&`P.&QL8&!@8&!@8&!@8V-AP`!@8`'X`&!@`=MP`
+M=MP````X;&PX`````````!@````````X.`````,"!@3,:#@0/$*9H:&90CPP
+72!`@>```````?'Q\?`````````!"?@`X
+`
+end
diff --git a/share/syscons/fonts/cp866b-8x16.fnt b/share/syscons/fonts/cp866b-8x16.fnt
new file mode 100644
index 0000000..e0ad3ca
--- /dev/null
+++ b/share/syscons/fonts/cp866b-8x16.fnt
@@ -0,0 +1,95 @@
+begin 664 cp866b-8x16
+M``````````````!$`````````'Z!I8&!O9F!@7X```````!^_]O__\/G__]^
+M````````9O____]^?CP\&!@`````&!@\/'Y^_WY^/#P8&``````8/#P89O__
+M9A@\?@`````8&#P\?O___WX8/'X`````````&#P\/!@```````#______^?#
+MP\/G________`````#QF0D)"9CP``````/_____#F;V]O9G#______\````>
+M#AHR>,S,S,QX````````/&9F9F8\&'X8&````````#\S,S\P,#!P\.``````
+M``!_8V-_8V-C9^?FP```````&!C;/.?G/-L8&````````(#`X/C^_OC@P(``
+M```````"!@X^_OX^#@8"`````!@\?A@8&!@8&!@8&'X\&```9F9F9F9F9F9F
+M`&9F`````'_;V]O;VWL;&QL;&P````!\QF`X;,;&;#@,QGP`````````````
+M`/[^_O[^`````!@\?A@8&!@8?CP8?@```!@\?O\8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8_WX\&`````````@,#O\.#`@````````````0,'#_<#`0````````
+M`````,#`P,#^_@`````````````D9O]F)````````````!`0.#A\?/[^````
+M``````#^_GQ\.#@0$````````````````````````````!@\/#P\&!@8&``8
+M&`````!C8\8`````````````````;&QL_OYL;&S^_FQL;````!A^V]OH>#P>
+M%]O;?A@8``#FINP,&!@P,&!NRLX`````.&QL;#@X;<W&QLMS`````!@8,```
+M```````````````,&!@P,#`P,#`P&!@,````,!@8#`P,#`P,#!@8,```````
+M`&9F//__/&9F````````````&!A^?A@8`````````````````````!@8,```
+M`````````'Y^````````````````````````&!@`````!@8,#!@8,#!@8,#`
+M`````'S&QL;.WO;FQL;&?``````8.'@8&!@8&!@8&'X`````/&;#PP,&#!@P
+M8,/_`````/[&#!@\!@,#`\-F/``````<'#P\;&S,S?\-#!X`````_L#`P/SF
+MPP,#PV8\`````#QFQL#\YL/#P\-F/`````#^Q@8,#!@8,#`P,#``````/&;#
+MPV8\9L/#PV8\`````#QFP\/#PV<_`V-F/```````````&!@`````&!@`````
+M`````!@8`````!@8,``````#!@P8,'`P&`P&`P``````````?GX`?GX`````
+M`````,!@,!@,!@P8,&#``````#QFP\,#!@P8&``8&````````'[#P]_;V][`
+MP'P`````$#A\[L;&QL;^QL;&`````/YC8V-C?F-C8V-C_@`````\9L/#P,#`
+MP,/#9CP`````_&9C8V-C8V-C8V;\`````/]C86!D?&1@8&%C_P````#_8V%@
+M9'QD8&!@8/@`````/&;#P\#`S\/#PV<]`````,;&QL;&_L;&QL;&Q@`````\
+M&!@8&!@8&!@8&#P`````#P8&!@8&!@;&QL9\`````.-C9F9L?&QF9F-CXP``
+M``#P8&!@8&!@8&!A8_\`````P^?__]O;V\/#P\/#`````,;&YN;V]M[>SL[&
+MQ@`````\9L/#P\/#P\/#9CP`````_F-C8V-C?F!@8&#P`````#QFP\/#P\/#
+MR\]^/`8'``#^8V-C8V-^;&9F9O<`````?L/#P,!^`P,#P\-^`````/_;F1@8
+M&!@8&!@8/`````#&QL;&QL;&QL;&QGP`````QL;&QL;&QL;&?#@0`````,/#
+MP\/;V]O;V_]F9@````#&QFQL.#@X.&QLQL8`````P\/#P^=^/!@8&!@\````
+M`/[&C`P8&#`P8&+&_@`````\,#`P,#`P,#`P,#P`````P,!@8#`P&!@,#`8&
+M`````#P,#`P,#`P,#`P,/``````8/&;#````````````````````````````
+M````_P```#`P&```````````````````````/`8^9F9F9CL`````X&!@8'YC
+M8V-C8V/>``````````!\QL#`P,#&?``````.!@8&?L;&QL;&QGL`````````
+M`'S&QO[`P,9\`````#QF9F#P8&!@8&!@\```````````>\;&QL;&QGX&QGP`
+MX&!@8'QF9F9F9F;F```````8&``X&!@8&!@8/```````!@8`#@8&!@8&!@9F
+M9CP`X&!@8&9F;'AL9F;F`````#@8&!@8&!@8&!@8/```````````YO_;V]O#
+MP\,``````````-QF9F9F9F9F``````````!\QL;&QL;&?```````````WF-C
+M8V-C8WY@8/```````'O&QL;&QL9^!@8/``````#><V-@8&!@\```````````
+M?,;`<!P&QGP``````!`P,/PP,#`P,#8<``````````#&QL;&QL;&>P``````
+M````QL;&QNY\.!```````````,/#V]O;V_]F``````````#&[GPX.'SNQ@``
+M````````QL;&QL;&QGX,&'```````/[&#!@P8,;^``````X8&!@8<'`8&!@8
+M#@`````8&!@8&```&!@8&!@`````<!@8&!@>'A@8&!AP``````!VW```````
+M````````````````$#ALQL;&_@`````````0.&S&QO[&QL;&````````_F)B
+M8'QF9F9F_````````/QF9F9\9F9F9OP```````#^8F)@8&!@8&#P````````
+M'C9F9F9F9F9F_\.!`````/YF8FAX:&!B9OX```````#6UE14?'Q4UM;6````
+M````?,8&!CP&!@;&?````````,;&SL[6YN;&QL8`````.#C&QL[.UN;FQL;&
+M````````YF9L;'AX;&QFY@```````!XV9L;&QL;&QL8```````#&[O[^UL;&
+MQL;&````````QL;&QO[&QL;&Q@```````'S&QL;&QL;&QGP```````#^QL;&
+MQL;&QL;&````````_&9F9GQ@8&!@\````````#QFPL#`P,#"9CP```````!^
+M6A@8&!@8&!@\````````QL;&QL9^!@;&?```````/!A^V]O;V]M^&#P`````
+M``#&QFQ\.#A\;,;&````````S,S,S,S,S,S,_@8&`````,;&QL;&?@8&!@8`
+M``````#;V]O;V]O;V]O_````````V]O;V]O;V]O;_P,#`````/BP,#`\-C8V
+M-GP```````##P\/#\]O;V]OS````````\&!@8'QF9F9F_````````'C,!B8^
+M)@8&S'@```````#.V]O;^]O;V]O.````````/V9F9CX^9F9FYP``````````
+M`'@,?,S,S'8```````(&/&!@?&9F9F8\````````````_&9F?&9F_```````
+M`````'XR,C`P,'@````````````>-C9F9F;_P\,`````````?,;^P,#&?```
+M`````````-;65'Q4UM8````````````\9@8,!F8\````````````QL;.UN;&
+MQ@`````````X.,;&SM;FQL8```````````#F;'AX;&;F````````````'C9F
+M9F9F9@```````````,;N_O[6UL8```````````#&QL;^QL;&````````````
+M?,;&QL;&?````````````/[&QL;&QL8```""$((0@A""$((0@A""$((0PQC#
+M&,,8PQC#&,,8PQC#&-B#VA/8@]H3V(/:$]B#VA,8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&!CX&!@8&!@8&!@8&!@8&/@8^!@8&!@8&!@V-C8V-C8V-O8V-C8V
+M-C8V``````````#^-C8V-C8V-@```````/@8^!@8&!@8&!@V-C8V-C;V!O8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@```````/X&]C8V-C8V-C8V-C8V-C;V
+M!OX`````````-C8V-C8V-C;^`````````!@8&!@8&/@8^```````````````
+M`````/@8&!@8&!@8&!@8&!@8&!@?`````````!@8&!@8&!@8_P``````````
+M`````````/\8&!@8&!@8&!@8&!@8&!@?&!@8&!@8&```````````_P``````
+M```8&!@8&!@8&/\8&!@8&!@8&!@8&!@8'Q@?&!@8&!@8&#8V-C8V-C8V-S8V
+M-C8V-C8V-C8V-C8W,#\`````````````````/S`W-C8V-C8V-C8V-C8V-O<`
+M_P````````````````#_`/<V-C8V-C8V-C8V-C8V-S`W-C8V-C8V-@``````
+M`/\`_P`````````V-C8V-C;W`/<V-C8V-C8V&!@8&!@8_P#_`````````#8V
+M-C8V-C8V_P````````````````#_`/\8&!@8&!@8``````````#_-C8V-C8V
+M-C8V-C8V-C8V/P`````````8&!@8&!@?&!\`````````````````'Q@?&!@8
+M&!@8&```````````/S8V-C8V-C8V-C8V-C8V-O\V-C8V-C8V&!@8&!@8_QC_
+M&!@8&!@8&!@8&!@8&!@8^````````````````````!\8&!@8&!@8________
+M_____________P``````````___________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#___________``````````````````#<9F9F9F9\8&#P
+M````````?,;`P,#&?````````````'Y:&!@8&#P```````````#&QL;&QGX&
+M!L9\```````\&'[;V]O;?A@8/````````,9L.#@X;,8```````````#,S,S,
+MS,S^!@8`````````QL;&QGX&!@```````````-;6UM;6UOX```````````#6
+MUM;6UM;^`P,`````````^+`P/C,S?@```````````,;&QO;>WO8`````````
+M``#P8&!\9F;\````````````/F<#'P-G/@```````````,[;V_O;V\X`````
+M``````!^S,S\;,S.``````!L;`#^9F!\8&!F_@```````,8``'S&_L#`QGP`
+M`````&`P&`P&#!@P8`!^```````,&#!@P&`P&`P`?```````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&!@8V/AP`````````!@8`'Y^`!@8````````````=MP`
+M=MP``````````#AL;&PX`````````````````````!@8````````````````
+M````&```````````#PP,#`P,#`SL;#P<````````/$*9H:&90CP```````!P
+MB!!@B/@`````````````````?'Q\?'Q\?````````````````````$)"?@``
+!`!!@
+`
+end
diff --git a/share/syscons/fonts/cp866c-8x16.fnt b/share/syscons/fonts/cp866c-8x16.fnt
new file mode 100644
index 0000000..f7f6a10
--- /dev/null
+++ b/share/syscons/fonts/cp866c-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 cp866c-8x16
+M````````````````````````?H&E@8&EF8&!?@```````'[_V___V^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X&
+M#AIXS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^`````````#YFQL;&_L;&QL8```````#^P,#`
+M_,;&QL;\````````_,;&QOS&QL;&_````````/[&P,#`P,#`P,`````````\
+M;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````-;6UE1\UM;6UM8`````
+M``!\Q@8&'`8&QL9\````````QL;&QL[>]N;&Q@``````#-K&QL;.WO;FQL8`
+M``````#&S-CP\-C,QL;&````````'C9FQL;&QL;&Q@```````,;&[N[^_M;6
+MQL8```````#&QL;&_L;&QL;&````````?L;&QL;&QL;&_````````/[&QL;&
+MQL;&QL8```````#\QL;&QL;\P,#`````````?,;&P,#`P,;&?````````'Y^
+M6A@8&!@8&!@```````#&QL;&QL9^!L9\````````?-;6UM;6UGP0.```````
+M`,;&;#@X;,;&QL8```````#,S,S,S,S,S,S^`@8$````QL;&QL9^!@8&!@``
+M`````-;6UM;6UM;6UOX```````#6UM;6UM;6UM;^`@8$````X.!@8'QF9F9F
+M?````````,;&QL;FMK:VMN8```````#`P,#`_,;&QL;\````````>,P&!AX>
+M!@;,>````````)RVMK;VMK:VMIP```````!^QL;&QGXV9L;&````````````
+M?,;&QO[&Q@```````````/[`_,;&QOP```````````#\QL;\QL;\````````
+M````_L;"P,#`P````````````#QL;&QL;/[&@@````````!\QL;\P,9\````
+M````````UM;6?-;6U@```````````'S&!AP&QGP```````````#&QL[>]N;&
+M``````````P8QL;.WO;FQ@```````````,;,V/C8S,8````````````^9F9F
+M9F;&````````````QN[^UL;&Q@```````````,;&QO[&QL8```````````!^
+MQL;&QL;\````````````_L;&QL;&Q@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@0_F9B8&!@8&!@\````````#QFP,#HT,#`9CP`
+M```````V)`!X,#`P,#!X````````&!``>#`P,#`P>````````'S&QF`X#`;&
+MQGP```````!@\&!L=F9F9F;F!@PP````#`@`/!@8&!@8&!BP8````"08`,;&
+MQL;&QGX&QGP```````+^P,#`P,#`````````&!``QLS8^-C,Q@``````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8``````#&QL;&QL;^$!`X```````'B,NKJ*N;
+MB````````&#P8&!\9F9F9N8```````````!\QL!\!L9\``````#P8&!@?&9F
+M9F9FYP`````,&``\&!@8&!@8&!BP8````&#X8&!\=F9F9F;G````````_L;&
+MQL;&QL;&QOX```!L.,;&QL;&QGX&QGP```````!\;&QL;FEI:6G.````````
+MS,S,S/[)R<G)S@`````,&``\&!@8&!@8&#P`````-B0`/!@8&!@8&!@\````
+M````````S,S,_LG)S@```````````#Q,3$Y)2<X````````8$`#^PL#`P,#`
+M````````````/&+`^,!B/``````"!O[`P,#`P,#`P,``````&!#&QLS8\/#8
+MS,;&`````!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````/S&QL;&QOS`P,``
+M``````!\QL#`PL9\````````````?EH8&!@8&````````````,;&QL;&QGX&
+MQGP``````!!\UM;6UM9\$#@`````````QFPX.&S&Q@```````````,S,S,S,
+MS/X&#`````````#&QL;&?@8&````````````UM;6UM;6_@```````````-;6
+MUM;6UOX"!@0```````#@8'QF9F9\````````````QL;FMK:VY@``````````
+M`,#`_,;&QOP```````````!\Q@8>!L9\````````````G+:V]K:VG```````
+M`````'[&QGXV9L8`````9F8`_L;`P/#`P,;^````````;&P`?,;&_,#&?```
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&!@8&!@8
+M&!@8&!@8&!@8&!@8&-C8V'```````````!@8`'X`&!@`````````````=MP`
+M=MP`````````.&QL.````````````````````````!@8````````````````
+M````&```````````#PP,#`P,[&QL/!P```````#&QL;&QL;&QL;^$!`X``!P
+MV#!@R/@`````````````````?'Q\?'Q\?```````````````````````````
+!`#!@
+`
+end
diff --git a/share/syscons/fonts/cp866u-8x14.fnt b/share/syscons/fonts/cp866u-8x14.fnt
new file mode 100644
index 0000000..9251f5e
--- /dev/null
+++ b/share/syscons/fonts/cp866u-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 cp866u-8x14.fnt
+M`````````````````````'Z!I8&!I9F!?@``````?O_;___#Y_]^````````
+M;/[^_OY\.!`````````0.'S^?#@0````````&#P\Y^?G&!@\```````8/'[_
+M_WX8&#P``````````!@\/!@``````/______Y\/#Y_______`````#QF0D)F
+M/`````#_____PYF]O9G#_____P``'@X:,GC,S,QX```````\9F9F/!A^&!@`
+M`````#\S/S`P,'#PX```````?V-_8V-C9^?FP``````8&-L\YSS;&!@`````
+M`(#`X/C^^.#`@````````@8./OX^#@8"```````8/'X8&!A^/!@``````&9F
+M9F9F9@!F9@``````?]O;VWL;&QL;`````'S&8#ALQL9L.`S&?```````````
+M`/[^_@``````&#Q^&!@8?CP8?@`````8/'X8&!@8&!@``````!@8&!@8&'X\
+M&``````````8#/X,&````````````#!@_F`P`````````````,#`P/X`````
+M```````H;/YL*```````````$#@X?'S^_@````````#^_GQ\.#@0````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````$#ALQL;^````````/F;&QL;^
+MQL;&``````#^P,#\QL;&QOP``````/S&QL;\QL;&_```````_L;`P,#`P,#`
+M```````\;&QL;&QL;/[&@@```/[&P,#PP,#&_@``````UM;65'S6UM;6````
+M``!\Q@8<!@;&QGP``````,;&QL[>]N;&Q@`````,VL;&SM[VYL;&``````#&
+MS-CP\-C,QL8``````!XV9L;&QL;&Q@``````@L;&[N[^UL;&``````#&QL;&
+M_L;&QL8``````'[&QL;&QL;&_```````_L;&QL;&QL;&``````#\QL;&QOS`
+MP,```````'S&QL#`P,;&?```````?GY:&!@8&!@8``````#&QL;&QGX&QGP`
+M`````'S6UM;6UGP0.```````QL9L.#ALQL;&``````#,S,S,S,S,S/X"!@``
+M`,;&QL;&?@8&!@````#6UM;6UM;6UM;^`````-;6UM;6UM;6UOX"!@```.#@
+M8'QF9F9F?```````QL;&YK:VMK;F``````#`P,#\QL;&QOP``````'S&!AX&
+M!L;&?```````G+:VMO:VMK:<``````!^QL;&QGXV9L8``````````'S&QO[&
+MQ@``````````_L#\QL;\``````````#\QOS&QOP``````````/["P,#`P```
+M````````/&QL;&S^QH(```````!\QOS`QGP``````````-;6?-;6U@``````
+M````?,8<!L9\``````````#&SM[VYL8````````,&,;.WO;FQ@``````````
+MQLSXV,S&```````````^9F9F9L8``````````,;N_M;&Q@``````````QL;&
+M_L;&``````````!^QL;&QOP``````````/[&QL;&Q@```!%$$4011!%$$401
+M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
+M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
+M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
+M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
+M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
+M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
+M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
+M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
+M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
+M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
+M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
+M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
+M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
+M\/#P#P\/#P\/#P\/#P\/#P__________````````````````_,;&QL;\P,``
+M``````!\QL#`QGP``````````'Y:&!@8&```````````QL;&QL9^!GP`````
+M`!!\UM;6UGP0.````````,9L.#ALQ@``````````S,S,S,S^!@P```````#&
+MQL9^!@8``````````-;6UM;6_@``````````UM;6UM;^`@8```````#@8'QF
+M9GP``````````,;&YK:VY@``````````P,#\QL;\``````````!\QAX&QGP`
+M`````````)RVMO:VG```````````?L9^-F;&````;&P`_L;`\,#`QOX`````
+M`&QL`'S&_,#&?``````&_L#`P,#`P,#```````````;^P,#`P,```````'S&
+MP,#XP,#&?```````````?,;PP,9\`````!@`/!@8&!@8&#P``````!`0`#@8
+M&!@8/`````!F`#P8&!@8&!@\```````H*``X&!@8&#P`````````````&```
+M```````/#`P,#`SL;#P<``````!\@KJJHJ*JNH)\````<-@P8,CX````````
+=``````!\?'Q\?'P```````````````````````!\
+`
+end
diff --git a/share/syscons/fonts/cp866u-8x16.fnt b/share/syscons/fonts/cp866u-8x16.fnt
new file mode 100644
index 0000000..78965b0
--- /dev/null
+++ b/share/syscons/fonts/cp866u-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 cp866u-8x16.fnt
+M````````````````````````?H&E@8&EF8&!?@```````'[_V___V^?__WX`
+M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
+M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X&
+M#AIXS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
+M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
+M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
+M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
+M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
+M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
+M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
+M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M```````````````0.&S&QL;^`````````#YFQL;&_L;&QL8```````#^P,#`
+M_,;&QL;\````````_,;&QOS&QL;&_````````/[&P,#`P,#`P,`````````\
+M;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````-;6UE1\UM;6UM8`````
+M``!\Q@8&'`8&QL9\````````QL;&QL[>]N;&Q@``````#-K&QL;.WO;FQL8`
+M``````#&S-CP\-C,QL;&````````'C9FQL;&QL;&Q@```````,;&[N[^_M;6
+MQL8```````#&QL;&_L;&QL;&````````?L;&QL;&QL;&_````````/[&QL;&
+MQL;&QL8```````#\QL;&QL;\P,#`````````?,;&P,#`P,;&?````````'Y^
+M6A@8&!@8&!@```````#&QL;&QL9^!L9\````````?-;6UM;6UGP0.```````
+M`,;&;#@X;,;&QL8```````#,S,S,S,S,S,S^`@8$````QL;&QL9^!@8&!@``
+M`````-;6UM;6UM;6UOX```````#6UM;6UM;6UM;^`@8$````X.!@8'QF9F9F
+M?````````,;&QL;FMK:VMN8```````#`P,#`_,;&QL;\````````>,P&!AX>
+M!@;,>````````)RVMK;VMK:VMIP```````!^QL;&QGXV9L;&````````````
+M?,;&QO[&Q@```````````/[`_,;&QOP```````````#\QL;\QL;\````````
+M````_L;"P,#`P````````````#QL;&QL;/[&@@````````!\QL;\P,9\````
+M````````UM;6?-;6U@```````````'S&!AP&QGP```````````#&QL[>]N;&
+M``````````P8QL;.WO;FQ@```````````,;,V/C8S,8````````````^9F9F
+M9F;&````````````QN[^UL;&Q@```````````,;&QO[&QL8```````````!^
+MQL;&QL;\````````````_L;&QL;&Q@`````11!%$$4011!%$$4011!%$5:I5
+MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
+M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
+M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
+M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
+M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
+M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
+M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
+M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
+M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
+M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
+M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
+M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
+M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#_________\``````````````````/S&QL;&QOS`P,``
+M``````!\QL#`PL9\````````````?EH8&!@8&````````````,;&QL;&QGX&
+MQGP``````!!\UM;6UM9\$#@`````````QFPX.&S&Q@```````````,S,S,S,
+MS/X&#`````````#&QL;&?@8&````````````UM;6UM;6_@```````````-;6
+MUM;6UOX"!@0```````#@8'QF9F9\````````````QL;FMK:VY@``````````
+M`,#`_,;&QOP```````````!\Q@8>!L9\````````````G+:V]K:VG```````
+M`````'[&QGXV9L8`````9F8`_L;`P/#`P,;^````````;&P`?,;&_,#&?```
+M````!O[`P,#`P,#`P,````````````;^P,#`P,#`````````/&;`P/C`P,!F
+M/````````````'S&P/#`QGP``````!@`/!@8&!@8&!@\````````$!``.!@8
+M&!@8/```````9@`\&!@8&!@8&#P````````H*``X&!@8&!@\````````````
+M````&```````````#PP,#`P,[&QL/!P```````!\@KJJHJ*BJKJ"?`````!P
+MV#!@R/@`````````````````?'Q\?'Q\?```````````````````````````
+!`#!@
+`
+end
diff --git a/share/syscons/fonts/cp866u-8x8.fnt b/share/syscons/fonts/cp866u-8x8.fnt
new file mode 100644
index 0000000..f979393
--- /dev/null
+++ b/share/syscons/fonts/cp866u-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 cp866u-8x8.fnt
+M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+M?#A\$!`X?/Y\.'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F,X;&PXS'@`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````$#ALQL;^`!XV9F9^9F8`?&!@
+M?&9F?`!\9F9\9F9\`'Y@8&!@8&``.&QL;&QL_L9^8&!\8&!^`-O;?CQ^V]L`
+M/&8&'`9F/`!F9FY^=F9F`#QF;GYV9F8`9FQX<'AL9@`>-F9F9F9F`,;N_O[6
+MQL8`9F9F?F9F9@`\9F9F9F8\`'YF9F9F9F8`?&9F9GQ@8``\9F!@8&8\`'X8
+M&!@8&!@`9F9F/@9F/`!^V]O;?A@8`&9F/!@\9F8`9F9F9F9F?P-F9F8^!@8&
+M`-O;V]O;V_\`V]O;V]O;_P/@8&!\9F9\`,;&QO;>WO8`8&!@?&9F?`!XC`8^
+M!HQX`,[;V_O;V\X`/F9F9CXV9@```'@,?,QV```\8#QF9CP```!\9GQF?```
+M`'Y@8&!@````/&QL;/[&```\9GY@/````-M^/'[;````/&8,9CP```!F;GYV
+M9@``&&9N?G9F````9FQX;&8````>-F9F9@```,;^_M;&````9F9^9F8````\
+M9F9F/````'YF9F9F`!%$$4011!%$5:I5JE6J5:K==]UWW7?==Q@8&!@8&!@8
+M&!@8^!@8&!@8^!CX&!@8&#8V-O8V-C8V````_C8V-C8`^!CX&!@8&#;V!O8V
+M-C8V-C8V-C8V-C8`_@;V-C8V-C;V!OX`````-C8V_@`````8^!CX````````
+M`/@8&!@8&!@8'P`````8&!C_`````````/\8&!@8&!@8'Q@8&!@```#_````
+M`!@8&/\8&!@8&!\8'Q@8&!@V-C8W-C8V-C8W,#\``````#\P-S8V-C8V]P#_
+M``````#_`/<V-C8V-C<P-S8V-C8`_P#_`````#;W`/<V-C8V&/\`_P`````V
+M-C;_``````#_`/\8&!@8````_S8V-C8V-C8_`````!@?&!\``````!\8'Q@8
+M&!@````_-C8V-C8V-O\V-C8V&/\8_Q@8&!@8&!CX`````````!\8&!@8____
+M______\```#_______#P\/#P\/#P#P\/#P\/#P____\`````````?&9F?&``
+M```\9F!F/````'X8&!@8````9F8^!CP```!^V]M^&````&8\&#QF````9F9F
+M9G\#``!F9CX&!@```-O;V]O_````V]O;V_\#``#@8'QF?````,;&]M[V````
+M8&!\9GP```!\!CX&?````,[;^]O.````/F8^-F8`9@!^8'Q@?@`D`#QF?F`\
+M``9^8&!@8&````9^8&!@8``\9L#XP&8\````?,#XP'P`,'@P,#`P>``@`'`P
+M,#!X`$AX,#`P,'@`4`!P,#`P>``````X.`````,"!@3,:#@0/$*9H:&90CPP
+72!`@>```````?'Q\?`````````!"?@`X
+`
+end
diff --git a/share/syscons/fonts/haik8-8x14.fnt b/share/syscons/fonts/haik8-8x14.fnt
new file mode 100644
index 0000000..ce9fead
--- /dev/null
+++ b/share/syscons/fonts/haik8-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 haik8-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````&#P\/#P8&!@`&!@``/YF9F;,`````````````&QL;/[^
+M;&S^_FQL;```&'[;V-A^&QO;VWX8&```YJSL&!@P,&YJS@```#AL;&PX=MS<
+MS,QV````&!@8,``````````````8&#`P,#`P,#`8&`P``!@8#`P,#`P,#!@8
+M,````````&8\_SQF````````````&!A^&!@``````````````````!@8&#``
+M````````_@`````````````````````P,`````8,#!@8,#!@8,#`````.&S.
+MWM[6]O;F;#@````8.'@8&!@8&!@8?@```#ALQL8&#!@P8,;^````_(P8,#@,
+M!@;&;#@````<'#P\;&S,_@P,'@```/[`P/C,!@8&QFPX````.&S`P/CLQL;&
+M;#@```#^Q@8,#!@8,#`P,````#ALQL9L.&S&QFPX````.&S&QL9N/@8&;#@`
+M````````&!@````8&``````````8&````!@8,&`````&#!@P8#`8#`8`````
+M`````/X``/X`````````8#`8#`8,&#!@````/&;#`P8,&!@`&!@``````'S&
+MQM[>WMS`?````!`X?.[&QL;^QL;&````_&9F9GQF9F9F9OP```!\QL;`P,#`
+MP,;&?````/AL9F9F9F9F9FSX````_F9B8&AX:&!B9OX```#^9F)@:'AH8&!@
+M\````'S&QL;`P,[&QLYZ````QL;&QL;^QL;&QL8````\&!@8&!@8&!@8/```
+M`!X,#`P,#`P,S,QX````YF9L;'AX>&QL9N8```#P8&!@8&!@8&)F_@```(+&
+M[O[^UM;&QL;&````QL;FYO;VWL[.QL8```!\QL;&QL;&QL;&?````/QF9F9F
+M9GQ@8&#P````?,;&QL;&QL;>_GP.!@#\9F9F9FQX;&9FY@```'S&QL!@.`P&
+MQL9\````?EH8&!@8&!@8&#P```#&QL;&QL;&QL;&?````,;&QL;&QL;&?#@0
+M````P\/#P]O;V]O_9F8```#&QFQL.#@X;&S&Q@```&9F9F9F/!@8&!@\````
+M_L:,#!@0,&!BQOX````\,#`P,#`P,#`P/````,#`8&`P,!@8#`P&````/`P,
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`P&```
+M````````````````>`Q\S,S,=@```.!@8&!\9F9F9F;<`````````'S&P,#`
+MQGP````<#`P,?,S,S,S,=@````````!\QL;\P,9\````/&9F8/!@8&!@8/``
+M````````=LS,S,S,?`P,S.!@8&!\9F9F9F;F`````!@8`#@8&!@8&#P`````
+M#`P`'`P,#`P,#`S,S.!@8&!F9FQX;&;F````.!@8&!@8&!@8&#P`````````
+M[/[6UM;&Q@````````#<9F9F9F9F`````````'S&QL;&QGP`````````W&9F
+M9F9F?&!@8`````!VS,S,S,Q\#`P,`````-QV9F!@8/``````````?,;`?`;&
+M?````!`P,##\,#`P,#8<`````````,;&QL;&QGL`````````QL;&[GPX$```
+M``````#&QM;6UOYL`````````,;N?#A\[L8`````````QL;&QL;&?@8&?```
+M``#^Q@PX8,;^````&!@8&##@,!@8&!@.```8&!@8&```&!@8&!@``!@8&!@,
+M!PP8&!@8<````';<````````````````````````````````````````````
+M````````````,$Q2NI1D&`````#@8&!@8&!@;&QL/P`````````P>#```#!X
+M,```8#`X'!P<'!P<.#!@```,&#AP<'!P<'`X&`P`````````;#8;&S9L````
+M```````V;-C8;#8``````````/[^`````````````````````#!X,```8#`8
+M#``````````````````````````8/!@P`````````'Q\?```````````````
+MPN9\`````````````````)*2D@````-VW(``````````````#!@P8```````
+M```````\1I:,`````````````,S,S,S,S,S<WL][`````````-;6UM;6UFH`
+M``!XS,S,S,S`P/[`P`````````#XS,S,P,#^P,#`>,S,S,S,S'\,#`P`````
+M````?,S,S,S,?PP,#'C,S,S,S,S/#`P,`````````/C,S,S,S,\,#`S`P/[`
+MP,S,S,S,>````,#`P,#^P,#,S,Q\````/&9F9F9F/@8,V/[#````````S,S,
+MS,S,?`P,#\#`P/[`P,#`^`P,>```P,#`P/C`P,#`^`PX``!XS,S,S,S,P,#`
+M_@````````#XS,S,S,S`P,#^?,;&QL_6UM;6ULP`````````_,;/UM;6S,#`
+MP`P,#'_,S,S,S,QX````#`P,#'_,S,S,S'P```#`P,#XS,S,S,S`P````,#`
+MP,#XS,S,S,S,P,#`P,#`P,#`P,#`P/P&````````8&!@8&!@8&!@?L#`P/;6
+MUM;6UM;,````P,#`P/;6UM;6UL[`P,#`?OO,S,S,S,S,>````,!X#`Q_S,S,
+MS,QX````P,#,S,S,S,Q\#`P```#`P,#`S,S,S,S,?`P,#!@P&`P8,&#`\#P.
+M#```P,#`P/C,S,S,S,P````\9F9F9@8&!FS8;@```#!^#!@P<-C8S,YV````
+M>,S,S,S,S,P,#`\`````````^,S,S,S,S`P,#P[;<#!XS,S,S-QL````'#9@
+M8/AL9F9F;CH```#/S,S,S,S,S,S,>`````\,#`S,S,S,S,Q\````>,P,'#AL
+M#`S,S'@`````````#`P,#`P,#&S<<.!@8&9F9F9F9F8\````X&!@8&9F9F9F
+M9CX```#X#'S,S,#`P,S,>`````````!XS,S,#!@P8,!^````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````'C,S,S,S,S,S,S,````
+M`````/C,S,S,S,P```!XS,S,S`P,#-AP,!@````````8,!@,&#!@P,!^?MO;
+MV]O;VQL;`P,`````````V]O;V]O;?P,#`V#PV,S&9C86'-C^PP```````'#8
+MS,QL.#!@P'YXS,S,S,S/S,S,S`````````#XS,S,S,S/````S,S,S,S,S,S,
+MS'@`````````S,S,S,S,?`````P,S,S,S,S,?`P/````#`P,#,S,S,S,S'P,
+M#`]XS,S`8#`8#,S,>`````````#<UM;6UM9V````>,S,S,S,S,S`P,``````
+M````^,S,S,S,S,#`P'C,S,QXS`P,S,QX`````````,S,S,S,S'P,S'C`P/#8
+MV-C8V,[`P`````````!@8&!@8&!\````$!!\UM;6UM9\$!``````$!`0W-;6
+MUM;6=A`0$#QF9F9F?&!@_F!@`````````'QF9F9F?&#^8&!XS,S,S,S,S,S,
+M>`````````!XS,S,S,QX````<-#0T'P6%M;6UGP```!PT-#0?!86UM;6?!`0
+=$#@X&!@P````````````````````````````````
+`
+end
diff --git a/share/syscons/fonts/haik8-8x16.fnt b/share/syscons/fonts/haik8-8x16.fnt
new file mode 100644
index 0000000..6ada660
--- /dev/null
+++ b/share/syscons/fonts/haik8-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 haik8-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````!@\/#P\&!@8`!@8
+M``````!F9F;,````````````````;&QL_OYL;/[^;&QL````&!A^V]C8?AL;
+MV]M^&!@`````YJSL&!@P,&YJS@``````.&QL;#AVW-S,S'8``````!@8&#``
+M``````````````P8&#`P,#`P,#`8&`P````P&!@,#`P,#`P,&!@P````````
+M``!F//\\9@``````````````&!A^&!@`````````````````````&!@8,```
+M`````````/X````````````````````````P,```````!@P,&!@P,&!@P,``
+M`````#ALSM[>UO;VYFPX```````8.'@8&!@8&!@8?@``````.&S&Q@8,&#!@
+MQOX``````/R,&#`X#`8&QFPX```````<'#P\;&S,_@P,'@``````_L#`^,P&
+M!@;&;#@``````#ALP,#X[,;&QFPX``````#^Q@8,#!@8,#`P,```````.&S&
+MQFPX;,;&;#@``````#ALQL;&;CX&!FPX````````````&!@````8&```````
+M`````!@8````&!@P8```````!@P8,&`P&`P&`````````````/X``/X`````
+M``````!@,!@,!@P8,&```````#QFPP,&#!@8`!@8`````````'S&QM[>WMS`
+M?```````$#A\[L;&QO[&QL8``````/QF9F9\9F9F9F;\``````!\QL;`P,#`
+MP,;&?```````^&QF9F9F9F9F;/@``````/YF8F!H>&A@8F;^``````#^9F)@
+M:'AH8&!@\```````?,;&QL#`SL;&SGH``````,;&QL;&_L;&QL;&```````\
+M&!@8&!@8&!@8/```````'@P,#`P,#`S,S'@``````.9F;&QX>'AL;&;F````
+M``#P8&!@8&!@8&)F_@``````@L;N_O[6UL;&QL8``````,;&YN;V]M[.SL;&
+M``````!\QL;&QL;&QL;&?```````_&9F9F9F?&!@8/```````'S&QL;&QL;&
+MWOY\#@8```#\9F9F9FQX;&9FY@``````?,;&P&`X#`;&QGP``````'Y:&!@8
+M&!@8&!@\``````#&QL;&QL;&QL;&?```````QL;&QL;&QL9\.!```````,/#
+MP\/;V]O;_V9F``````#&QFQL.#@X;&S&Q@``````9F9F9F8\&!@8&#P`````
+M`/[&C`P8$#!@8L;^```````\,#`P,#`P,#`P/```````P,!@8#`P&!@,#`8`
+M`````#P,#`P,#`P,#`P\```````0.&S&````````````````````````````
+M````_P```#`P,!@`````````````````````>`Q\S,S,=@``````X&!@8'QF
+M9F9F9MP```````````!\QL#`P,9\```````<#`P,?,S,S,S,=@``````````
+M`'S&QOS`QGP``````#QF9F#P8&!@8&#P````````````=LS,S,S,?`P,S'@`
+MX&!@8'QF9F9F9N8````````8&``X&!@8&!@\````````#`P`'`P,#`P,#`S,
+MS'@`X&!@8&9F;'AL9N8``````#@8&!@8&!@8&!@\````````````[/[6UM;&
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@8/```````';,S,S,S'P,#`P>``````#<=F9@8&#P````````````
+M?,;`?`;&?```````$#`P,/PP,#`P-AP```````````#&QL;&QL9[````````
+M````QL;&[GPX$````````````,;&UM;6_FP```````````#&[GPX?.[&````
+M````````QL;&QL;&?@8&?````````/[&##A@QOX`````#A@8&!@PX#`8&!@8
+M#@`````8&!@8&```&!@8&!@```!P&!@8&`P'#!@8&!AP``````!VW```````
+M`````````````````````````````````````````````````````````#!,
+M4KJ49!@```````#@8&!@8&!@;&QL/P```````````#!X,```,'@P`````&`P
+M.!P<'!P<'#@P8``````,&#AP<'!P<'`X&`P```````````!L-AL;-FP`````
+M````````-FS8V&PV`````````````/[^````````````````````````,'@P
+M`````&`P&`P````````````````````````````8/!@P````````````?'Q\
+M`````````````````,+F?````````````````````)*2D@```````W;<@```
+M``````````````P8,&`````````````````\1I:,````````````````S,S,
+MS,S,S-S>SWL```````````#6UM;6UM9J``````!XS,S,S,S`P/[`P```````
+M`````/C,S,S`P/[`P,```'C,S,S,S,Q_#`P,````````````?,S,S,S,?PP,
+M#```>,S,S,S,S,\,#`P```````````#XS,S,S,S/#`P,``#`P/[`P,S,S,S,
+M>```````P,#`P/[`P,S,S'P``````#QF9F9F9CX&#-C^PP``````````S,S,
+MS,S,?`P,#P``P,#`_L#`P,#X#`QX`````,#`P,#XP,#`P/@,.`````!XS,S,
+MS,S,P,#`_@```````````/C,S,S,S,#`P/X``'S&QL;/UM;6UM;,````````
+M````_,;/UM;6S,#`P```#`P,?\S,S,S,S'@```````P,#`Q_S,S,S,Q\````
+M``#`P,#XS,S,S,S`P```````P,#`P/C,S,S,S,S`P,```,#`P,#`P,#`P,#\
+M!@``````````8&!@8&!@8&!@?@``P,#`]M;6UM;6ULP``````,#`P,#VUM;6
+MUM;.P,#```#`?OO,S,S,S,S,>```````P'@,#'_,S,S,S'@``````,#`S,S,
+MS,S,?`P,``````#`P,#`S,S,S,S,?`P,#```&#`8#!@P8,#P/`X,`````,#`
+MP,#XS,S,S,S,```````\9F9F9@8&!FS8;@``````,'X,&#!PV-C,SG8`````
+M`'C,S,S,S,S,#`P/````````````^,S,S,S,S`P,#P``#MMP,'C,S,S,W&P`
+M`````!PV8&#X;&9F9FXZ``````#/S,S,S,S,S,S,>```````#PP,#,S,S,S,
+MS'P``````'C,#!PX;`P,S,QX````````````#`P,#`P,#&S<<```X&!@9F9F
+M9F9F9CP``````.!@8&!F9F9F9F8^``````#X#'S,S,#`P,S,>```````````
+M`'C,S,P,&#!@P'X`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````>,S,S,S,S,S,S,P`````
+M``````#XS,S,S,S,``````!XS,S,S`P,#-AP,!@``````````!@P&`P8,&#`
+MP'X``'[;V]O;V]L;&P,#````````````V]O;V]O;?P,#`P``8/#8S,9F-A8<
+MV/[#``````````!PV,S,;#@P8,!^``!XS,S,S,S/S,S,S````````````/C,
+MS,S,S,\``````,S,S,S,S,S,S,QX````````````S,S,S,S,?```````#`S,
+MS,S,S,Q\#`\```````P,#`S,S,S,S,Q\#`P/``!XS,S`8#`8#,S,>```````
+M`````-S6UM;6UG8``````'C,S,S,S,S,P,#`````````````^,S,S,S,S,#`
+MP```>,S,S'C,#`S,S'@```````````#,S,S,S,Q\#,QX``#`P/#8V-C8V,[`
+MP````````````&!@8&!@8'P``````!`0?-;6UM;6?!`0````````$!`0W-;6
+MUM;6=A`0$```/&9F9F9\8&#^8&````````````!\9F9F9GQ@_F!@``!XS,S,
+MS,S,S,S,>````````````'C,S,S,S'@``````'#0T-!\%A;6UM9\``````!P
+MT-#0?!86UM;6?!`0$```.#@8&#``````````````````````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/haik8-8x8.fnt b/share/syscons/fonts/haik8-8x8.fnt
new file mode 100644
index 0000000..84b61b5
--- /dev/null
+++ b/share/syscons/fonts/haik8-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 haik8-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````````````````````````$LHL
+M>9XT4TC`P,#8V-AV````,#``,#``8#`8&!@P8``8,&!@8#`8``!L-ALV;```
+M`#9LV&PV``````#__P`````````P,```,!@,`````````````#`P8`````!\
+M?````````'`_````````V]L```$.<(``````'#!````````>-28``````,;&
+MQL;&;SL```#;V]O;_P!\QL;`P/C`````>,S`P/#`?,;&QL9_!@```'C,S,Q^
+M#'S&QL;&!P8```!XS,S,#@S`P/[`QL9\`,#`_,#,S'@`/F,V'+C^@P```'C,
+MS'P,#L#`_,#`_@,``,#`^,#`^`Q\QL;&P,#^````>,S,P,#\?,;?UM[`P```
+M`'S&S];<P`8&?\;&QGP```P,?LS,>`#`_,;&P,#```#`P/C,S,#`P,#`P,#\
+M!@```,#`P,#`^,#`\]O;SL```,#`P//;SL#G/&;#PV8\`,`W#&;#QGP`P,#&
+MQGX&!@#`P,S,S,Q\#/S^!OS^!@8`P,#XS,S,S`!\QL8,:)IF```0,'C,S'H`
+M?,;&QL8&!P```'C,S,P,#@_P;&;#P_\`'.`PR,S,_`#'QL;&QL9\``X,#,S,
+MS'@`.'X&^`9^.```.'X&_`9^..!@8&-C8SX`X&!F9F9F/`#@?AXP8#,>``!X
+MS`PP8,#\````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````'S&QL;&QL8`
+M``!XS,S,S`!\Q@;,<!@,```P8#`8,&(\?MO;VQL#`P```-O;V]MO`SQF9ARX
+M_H,``#QF9F8<</Y\QL;&Q\;&````>,S,S,X`QL;&QL;&?````,S,S,QX``8&
+MQL9^!@<`#`S,S,S\#`Y^YS`8#.=^````UMO;VVL`?,;&QL#`P````'C,S,S`
+MP'S&?/P#@WX```!XS'@,S'C`P,#PP,#`````P,#`P.``&'[;V]M^&``8&-[;
+MV]M[&#YC8WY@_V```#QF9GQ@_&`\9L/#PV8\````/&9F9CP`.%@^&QO;?@`X
+76#X;&]M^&#`P8```````````````````
+`
+end
diff --git a/share/syscons/fonts/iso-8x14.fnt b/share/syscons/fonts/iso-8x14.fnt
new file mode 100644
index 0000000..45d93a7
--- /dev/null
+++ b/share/syscons/fonts/iso-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````-C9_
+M-C8V?S8V````"`@^8V!@/@,#8SX("`````!A8P8,&#!C0P``````'#8V'#MN
+M9F8[`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\?CQF````````````&!A^&!@`````````````````&!@8,```
+M````````?@`````````````````````8&````````0,&#!@P8$`````````^
+M8V=O>W-C8SX```````P</`P,#`P,/P``````/F,#!@P8,&-_```````^8P,#
+M'@,#8SX```````8.'C9F?P8&#P``````?F!@8'X#`V,^```````<,&!@?F-C
+M8SX``````']C`P8,&!@8&```````/F-C8SYC8V,^```````^8V-C/P,#!AP`
+M````````&!@````8&``````````8&````!@8,``````&#!@P8#`8#`8`````
+M````?@```'X`````````8#`8#`8,&#!@```````^8V,&#`P`#`P``````#YC
+M8V]O;VY@/@``````"!PV8V-_8V-C``````!^,S,S/C,S,WX``````!XS8&!@
+M8&`S'@``````?#8S,S,S,S9\``````!_,S`T/#0P,W\``````'\S,#0\-#`P
+M>```````'C-@8&!O8S,=``````!C8V-C?V-C8V,``````#P8&!@8&!@8/```
+M````#P8&!@8&9F8\``````!S,S8V/#8V,W,``````'@P,#`P,#`S?P``````
+M8W=_:V-C8V-C``````!C<WM_;V=C8V,``````!PV8V-C8V,V'```````?C,S
+M,SXP,#!X```````<-F-C8V-K/AP&`P```'XS,S,^-C,S<P``````/F-C,!P&
+M8V,^``````!^6A@8&!@8&#P``````&-C8V-C8V-C/@``````8V-C8V-C-AP(
+M``````!C8V-C8VMK?S8``````&-C8S8<-F-C8P``````9F9F9F8\&!@\````
+M``!_8P8,&#!@8W\``````#PP,#`P,#`P/```````0&`P&`P&`P$````````\
+M#`P,#`P,##P````('#9C``````````````````````````````#_&!@,````
+M`````````````````#P&/F9F.P``````<#`P/C,S,S-N```````````^8V!@
+M8SX```````X&!CYF9F9F.P``````````/F-_8&,^```````>,S!\,#`P,'@`
+M`````````#MF9F8^!F8\````<#`P-CLS,S-S```````,#``<#`P,#!X`````
+M``P,`!P,#`P,#,QX````<#`P,S8\-C-S```````<#`P,#`P,#!X`````````
+M`&9_:VMK:P``````````;C,S,S,S```````````^8V-C8SX``````````&XS
+M,S,^,#!X````````.V9F9CX&!@\```````!N,S`P,'@``````````#YC.`YC
+M/@````````@8?A@8&!L.``````````!F9F9F9CL``````````&-C8S8<"```
+M````````8V-K:W\V``````````!C-AP<-F,``````````&-F9F8^!F8\````
+M````?V8,&#-_```````.&!@8<!@8&`X``````!@8&!@8&!@8&```````<!@8
+M&`X8&!AP```````[;@``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````&!@`&!@\/#P8````````"`@^8V!@8SX("````!PV,#!\,#!S?@``
+M`````$(\9F9F/$(```````!F9F8\&'X8?A@``````!@8&!@`&!@8&``````^
+M8S`<-F-C-AP&8SX``&-C```````````````````^05U145U!/@`````X!#Q$
+M/`!\`````````````!LV;#8;``````````````!_`P,``````````````'\`
+M````````````/D%=55E503X`````?@`````````````````X;&PX````````
+M`````````!@8?A@8`'X`````.&P8,&1\``````````!\##@,;#@`````````
+M``8,&````````````````````&9F9F9F.V#`````?]O;VWL;&QL;````````
+M```8&```````````````````````#`P&'``P<#`P,'@``````````#A$1$0X
+M`'P`````````````;#8;-FP```````!@X&-F;!@S9\\?`P,``&#@8V9L&#!N
+MPP8,'P``\#!C]FP8,V?/'P,#````&!@`&!@P8V,^````8#`8`!PV8V-_8V,`
+M```#!@P`'#9C8W]C8P````@<-@`<-F-C?V-C````.VX`"!PV8V-_8V,`````
+M8V,('#9C8W]C8P```!PV'``<-F-C?V-C```````?-F9F9WYF9F<``````!XS
+M8&!@8&`S'@P&'&`P&`!_,S`^,#-_````!@P8`'\S,#XP,W\````('#8`?S,P
+M/C`S?P````!C8P!_,S`^,#-_````8#`8`#P8&!@8&#P````&#!@`/!@8&!@8
+M/````!@\9@`\&!@8&!@\`````&9F`#P8&!@8&#P``````#PV,S-[,S,V/```
+M`#MN`&-S>W]O9V-C````8#`8`!PV8V-C-AP````#!@P`'#9C8V,V'`````@<
+M-@`<-F-C8S8<`````#MN`!PV8V-C-AP`````8V,`'#9C8V,V'````````&,V
+M'`@<-F,```````,>-F=O:WMS-CQ@``!@,!@`8V-C8V-C/@````,&#`!C8V-C
+M8V,^````"!PV`&-C8V-C8SX`````8V,`8V-C8V-C/@````8,&`!F9F8\&!@\
+M`````'@P/C,S/C`P,'@``````!PV8V9L9V-K;F!@``!@,!@`/`8^9F8[````
+M``8,&``\!CYF9CL`````"!PV`#P&/F9F.P``````.VX`/`8^9F8[``````!F
+M9@`\!CYF9CL`````'#8<`#P&/F9F.P``````````=@L[;F@W```````````^
+M8V!@8SX,!AP`,!@,`#YC?V!C/@`````#!@P`/F-_8&,^``````@<-@`^8W]@
+M8SX``````&-C`#YC?V!C/@````!@,!@`.!@8&!@\``````8,&``X&!@8&#P`
+M````&#QF`#@8&!@8/```````9F8`.!@8&!@\```````V'#8&/F9F9CP`````
+M`#MN`&XS,S,S,P````!@,!@`/F-C8V,^``````8,&``^8V-C8SX`````"!PV
+M`#YC8V-C/@``````.VX`/F-C8V,^``````!C8P`^8V-C8SX``````!@8``!^
+M```8&``````````#/F=O>W,^8````&`P&`!F9F9F9CL`````!@P8`&9F9F9F
+M.P`````8/&8`9F9F9F8[``````!F9@!F9F9F9CL`````!@P8`&-F9F8^!F8\
+=`````'@P/C,S,S,^,'@```!F9@!F9F9F/@9F/```
+`
+end
diff --git a/share/syscons/fonts/iso-8x16.fnt b/share/syscons/fonts/iso-8x16.fnt
new file mode 100644
index 0000000..e596679
--- /dev/null
+++ b/share/syscons/fonts/iso-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````\9L/#V]O#PV8\````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,/G___;P\/#P\,```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````#_VYD8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,/#P\/#P\-F/!@```````##
+MP\/#P]O;_V9F````````P\-F/!@8/&;#PP```````,/#PV8\&!@8&#P`````
+M``#_PX8,&#!@P</_````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````YO_;V]O;
+MVP```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````P\/#PV8\&````````````,/#P]O;_V8```````````##9CP8/&;#````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````!@8`!@8&#P\/!@``````!@8?L/`P,##?A@8```````X
+M;&1@\&!@8&#F_`````````""QGS&QL;&?,:"``````##9CP8_QC_&!@8````
+M````&!@8&``8&!@8&```````?,9@.&S&QFPX#,9\`````,8`````````````
+M````````?,:"NJ*BNH+&?```````<!AXR'@`^``````````````````V;-AL
+M-@```````````````/X&!@8&````````````````?`````````````!\QH*Z
+MJK*J@L9\``````#^````````````````````.&QL.```````````````````
+M`!@8?A@8``!^``````!PV#!@R/@`````````````^!@P&-AP````````````
+M&#!@``````````````````````!F9F9F9GYC8,```````'_;V]M[&QL;&QL`
+M`````````````!@8```````````````````````8#`8\````8.!@8&#P````
+M`````````'#8B-AP`/@`````````````````V&PV;-@`````````P,#"QLP8
+M,&;.ECX&!@```,#`PL;,&#!@SIL&#!\```#P,'(V[!@P9LZ6/@8&`````#`P
+M`#`P8,#&QGP`````8#`8`#ALQL;^QL;&``````P8,``X;,;&_L;&Q@`````0
+M.&P`.&S&QO[&QL8``````';<`#ALQL;^QL;&``````#&`!`X;,;&_L;&Q@``
+M```X;#@`.&S&QO[&QL8````````^;,S,_LS,S,S.````````/&;"P,#`PF8\
+M#`9\```P&`P`_F9@?&!@9OX`````&#!@`/YF8'Q@8&;^`````!`X;`#^9F!\
+M8&!F_@``````Q@#^9F!@?&!@9OX`````,!@,`#P8&!@8&!@\``````P8,``\
+M&!@8&!@8/``````8/&8`/!@8&!@8&#P``````&8`/!@8&!@8&!@\````````
+M>&QF9F;V9F9L>`````!VW`#&YO;^WL[&QL8`````8#`8`'S&QL;&QL9\````
+M``P8,`!\QL;&QL;&?``````0.&P`?,;&QL;&QGP`````=MP`?,;&QL;&QL9\
+M``````#&`'S&QL;&QL;&?```````````QFPX$#ALQ@```````@9\SL[>UM;V
+MYN9\P(```&`P&`#&QL;&QL;&?``````,&#``QL;&QL;&QGP`````$#AL`,;&
+MQL;&QL9\``````#&`,;&QL;&QL;&?``````,&#``P\-F/!@8&#P`````\&!\
+M9F9F?&!@8&#P````````.&S&SMS8S,;6W,"`````8#`8`'@,?,S,S'8`````
+M`!@P8`!X#'S,S,QV```````0.&P`>`Q\S,S,=@```````';<`'@,?,S,S'8`
+M``````#,``!X#'S,S,QV```````X;#@`>`Q\S,S,=@```````````&X[&W[8
+MW'<``````````#QF8&!F/`P&/`````!@,!@`?,;^P,#&?```````#!@P`'S&
+M_L#`QGP``````!`X;`!\QO[`P,9\````````Q@``?,;^P,#&?```````8#`8
+M`#@8&!@8&#P```````8,&``X&!@8&!@\```````8/&8`.!@8&!@8/```````
+M`&8``#@8&!@8&#P``````&PX.&P,/&S,S,QX````````=MP`W&9F9F9F9@``
+M````8#`8`'S&QL;&QGP``````!@P8`!\QL;&QL9\```````0.&P`?,;&QL;&
+M?````````';<`'S&QL;&QGP```````#&``!\QL;&QL9\```````````8&`!^
+M`!@8```````````"!GS.WM;VYGS`@````&`P&`#,S,S,S,QV```````8,&``
+MS,S,S,S,=@``````,'C,`,S,S,S,S'8```````#,``#,S,S,S,QV```````8
+M,&``QL;&QL;&?@8,^`````#P8'QF9F9F9GQ@8/````!F9@#N9F9F9F8^!@PX
+!````
+`
+end
diff --git a/share/syscons/fonts/iso-8x8.fnt b/share/syscons/fonts/iso-8x8.fnt
new file mode 100644
index 0000000..2a5b4bb
--- /dev/null
+++ b/share/syscons/fonts/iso-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&QFPX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,QV`.!@8'QF9MP```!XS,#,>``<#`Q\S,QV````
+M>,S\P'@`.&Q@\&!@\````';,S'P,^.!@;'9F9N8`,`!P,#`P>``,``P,#,S,
+M>.!@9FQX;.8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````-QF
+M9GQ@\```=LS,?`P>``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,=@``
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````#``,#!X>#`````0?,#`?!``
+M.&!@\&#\``##/&9F/,,``,S,>##\,``8&!@`&!@8`'[`?,9\!OP`Q@``````
+M``!\@KJBNH)\`!P&'B(?/P```#-FS&8S````_@8`````````````````?(*Z
+MLJJ"?`#^`````````#AL.````````!!\$`!\```<-@88/@```!X"#@(>````
+M&#```````````,S,S,QVP'[*RGX*"@H`````&``````````````8,`8.!@8&
+M````#A$1$0X?````S&8S9LP``&#@9FPS9P\#8.!F;#9J!`[P()9L,V</`S``
+M,&#`S'@`&`PP>,S\S`!@P#!XS/S,`'B$,'C,_,P`9I@P>,S\S`#,`#!XS/S,
+M`#!(,'C,_,P`/GB8G/B8G@`\9L#`P&8<,#`8_F)X8OX`&##^8GAB_@`X1/YB
+M>&+^`&8`_F)X8OX`8#!X,#`P>``8,'@P,#!X`'B$>#`P,'@`S`!X,#`P>`!X
+M;&;V9FQX`&:8YO;>SL8`,!A\QL;&?``8,'S&QL9\`#A$?,;&QGP`9IA\QL;&
+M?`#&`'S&QL9\``#&;#@X;,8`!GS.FK+F>,!@,,S,S,S\`!@PS,S,S/P`>(3,
+MS,S,_`#,`,S,S,S\`!@PS,QX,'@`8'AL>&!@8`!XS,3<QL;<P#`8>`Q\S'8`
+M&#!X#'S,=@!XA'@,?,QV`&:8>`Q\S'8`S`!X#'S,=@`P2#@,?,QV````[#)^
+ML&X````\9L!F'#`P&'C,_,!X`!@P>,S\P'@`>(1XS/S`>`#,`'C,_,!X`&`P
+M`'`P,'@`&#``<#`P>`!PB`!P,#!X`,P``'`P,'@`;#AL#&S,>`!FF/C,S,S,
+M`&`P`'S&QGP`&#``?,;&?``X1`!\QL9\`&:8`'S&QGP`Q@``?,;&?````!@`
+M?@`8````!GS>]GS`8#``S,S,=@`8,`#,S,QV`#!(`,S,S'8`S```S,S,=@`8
+7,,S,S'P,^.!X;&9L>.``S`#,S,Q\#/@`
+`
+end
diff --git a/share/syscons/fonts/iso-thin-8x16.fnt b/share/syscons/fonts/iso-thin-8x16.fnt
new file mode 100644
index 0000000..50abaca
--- /dev/null
+++ b/share/syscons/fonts/iso-thin-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso-thin-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````0$!`0$!`0```0
+M$```````)"0D)````````````````"0D)'XD)"1^)"0D```````(/TA(2#X)
+M"0E^"````````#!),@0($"9)!@`````````8)"08)2(B(AT``````!@("!``
+M````````````````!`@0$!`0$!`(!````````!`(!`0$!`0$"!``````````
+M```D&'X8)`````````````@("'\("`@``````````````````````!@8"!``
+M````````?@`````````````````````````8&``````````!`@0($"!`@```
+M```````8)$)"0D)"0B08````````"!@("`@("`@('````````#Q"`@($"!`@
+M0'X````````\0@("'`("`D(\`````````@8*$B)"?P("`@```````'Y`0$!\
+M`@("0CP````````\0$!`?$)"0D(\````````?@("!`0("!`0$````````#Q"
+M0D(\0D)"0CP````````\0D)"0CX"`@(\````````````&!@``!@8````````
+M```````8&````!@("!``````!`@0($`@$`@$````````````?@``?@``````
+M```````@$`@$`@0($"`````````\0@("!`@0```0$````````!PB25555DP@
+M'@```````#Q"0D)"?D)"0D(```````!\0D)"?$)"0D)\````````/$)`0$!`
+M0$!"/````````'A$0D)"0D)"1'@```````!^0$!`?$!`0$!^````````?D!`
+M0'Q`0$!`0````````#Y`0$!.0D)"0CX```````!"0D)"?D)"0D)"````````
+M'`@("`@("`@('`````````X"`@("`@)"0CP```````!"1$A08&!02$1"````
+M````0$!`0$!`0$!`?@```````$%C54E!04%!04$```````!"8E)22DI&0D)"
+M````````/$)"0D)"0D)"/````````'Q"0D)"?$!`0$`````````\0D)"0D)"
+M0DH\!`(`````?$)"0D)\4$A$0@```````#Q"0$`\`@("0CP```````!_"`@(
+M"`@("`@(````````0D)"0D)"0D)"/````````$%!04%!(B(4%`@```````!!
+M04%!04%)56-!````````04$B%`@(%")!00```````$%!02(4"`@("`@`````
+M``!^`@($"!`@0$!^````````/"`@("`@("`@/`````````"`0"`0"`0"`0``
+M```````\!`0$!`0$!`0\````````"!0B````````````````````````````
+M`````/\``!@0$`@`````````````````````/$("/D)"/0```````$!`0'Q"
+M0D)"0GP````````````\0D!`0$(\`````````@("/D)"0D)"/@``````````
+M`#Q"0GY`0CP````````.$!!^$!`0$!`0````````````/D)"0D)"/@("/```
+M`$!`0'Q"0D)"0D(````````("``X"`@("`@(`````````@(`#@("`@("`@)"
+M/````$!`0$)$2'!(1$(```````!P$!`0$!`0$!`0````````````=DE)24E)
+M20```````````'Q"0D)"0D(````````````\0D)"0D(\````````````?$)"
+M0D)"?$!`0````````#Y"0D)"0CX"`@(```````!<8D!`0$!`````````````
+M/$)`/`)"/````````!`0$'P0$!`0$`X```````````!"0D)"0D(]````````
+M````0D)"0D(D&````````````$E)24E)238```````````!"0B08)$)"````
+M````````0D)"0D)"/@("/````````'X$"!`@0'X```````P0$!`0(!`0$!`,
+M```````0$!`0$!`0$!`0$!``````,`@("`@$"`@("#`````````R3```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````$!```!`0$!`0$!``````````"`@\2DA(2CP("```````
+M'"(B('@@("`A?@```````$$^(B(B/D$```````````!!(A0("#X(/@@(````
+M```("`@("```"`@("`@``````#Q"(#Q"0D(\!$(\`````"0D)```````````
+M````````/D%!75%174%!/@`````````X1$0^`'X`````````````"1(D2)!(
+M)!()````````````````````/@("````````````_P`````````````^05U5
+M655504$^````````_P```````````````````!@D)"08````````````````
+M```("#X("``^````````,$@0('@``````````````'`(,`AP````````````
+M``($"```````````````````````0D)"0D)^04!`@````'Q24E)<4%!04%!0
+M````````````&!@```````````````````````````($"````!`P$!``````
+M```````````8)!@`/````````````````)!()!()$B1(D```````$#`0$1($
+M"!$C10\!`0```!`P$!$2!`@0)DD"!`\````P2!`)2C0($2-%#P$!```````0
+M$``0$!`@0$!"/```,`P`/$)"0GY"0D)"``````PP`#Q"0D)^0D)"0@`````8
+M)``\0D)"?D)"0D(`````,DP`/$)"0GY"0D)"```````D`#Q"0D)^0D)"0@``
+M```8)!@\0D)"?D)"0D(````````_2$A(?DA(2$A/````````/$)`0$!`0$!"
+M/`0"/``8!@`^("`@/"`@(#X`````!A@`/B`@(#P@("`^``````P2`#X@("`\
+M("`@/@`````4%``^("`@/"`@(#X`````&`8`'`@("`@("`@<``````88`!P(
+M"`@("`@('``````(%``<"`@("`@("!P`````%!0`'`@("`@("`@<````````
+M>$1"0O)"0D)$>```````&28`06%1245#04$`````,`P`/$)"0D)"0D(\````
+M``PP`#Q"0D)"0D)"/``````8)``\0D)"0D)"0CP`````,DP`/$)"0D)"0D(\
+M``````!F`#Q"0D)"0D)"/````````````"(4"!0B```````````!&B1*2E)2
+M)%B``````#`,`$)"0D)"0D)"/``````,,`!"0D)"0D)"0CP`````&"0`0D)"
+M0D)"0D(\``````!F`$)"0D)"0D)"/``````$"`!!02(4"`@("`@``````"`@
+M."0B(B(D."`@(```````'B$A(3XA(2$^("`@````$`@$`#Q"`CY"0CT`````
+M``0($``\0@(^0D(]```````0*$0`/$("/D)"/0```````#),`#Q"`CY"0CT`
+M```````D)``\0@(^0D(]```````<(AP`/$("/D)"/0```````````#8)"3Y(
+M2#X````````````\0D!`0$(\"`1X```@$`@`/$)"?D!"/```````!`@0`#Q"
+M0GY`0CP``````!@D0@`\0D)^0$(\````````)"0`/$)"?D!"/```````$`@$
+M`#@("`@("`@```````0($``X"`@("`@(```````(%"(`.`@("`@("```````
+M`"(B`#@("`@("`@````````=`@8*`CY"0D(^````````,DP`?$)"0D)"0@``
+M````(!`(`#Q"0D)"0CP```````@0(``\0D)"0D(\````````&"0`/$)"0D)"
+M/````````#),`#Q"0D)"0CP````````D```\0D)"0D(\``````````````@`
+M/@`(`````````````!TB14E1(EP``````"`0"`!"0D)"0D(]```````($"``
+M0D)"0D)"/0``````&"1"`$)"0D)"0CT````````D)`!"0D)"0D(]````````
+M!`@``$)"0D)"/@("/````"`@."0D)"@P("`@```````D)```0D)"0D(^`@(\
+!````
+`
+end
diff --git a/share/syscons/fonts/iso02-8x14.fnt b/share/syscons/fonts/iso02-8x14.fnt
new file mode 100644
index 0000000..68b9c0d
--- /dev/null
+++ b/share/syscons/fonts/iso02-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso02-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(`````````X
+M;,;6UM;&;#@``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`S,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````'S&QL;&QL;&?```````_&9F
+M9GQ@8&#P``````!\QL;&QL;6WGP,#@```/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;6UM;^[FP``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````<-C(P>#`P,'@`
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QM;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````$#ALQL;^QL;.&`X``,9\`````````````````/!D;'APX.)F_@``
+M``````#&?,;&?,8``````!ON8&!@8&!B9OX````,&`!\QL9P',;&?`````!\
+MQF`X;,;&;#@.QGP``&QL``````````````!L.`!\QL9P',;&?```````?,;&
+M8#@,QL9\&'``-AP`?GY:&!@8&#P````,&`#^QHP8,&+&_@```````````'X`
+M````````;#@`_L:,&#!BQOX````8&`#^QHP8,&+&_@`````X;&PX````````
+M``````````!X#'S,S'8P'```````````````,#`<````.!H>'!@X>%@\````
+M``P8,```````````````&^Y@8&!@8&!@\``````,&#``?,9P',9\`````&PX
+M````````````````````````````&!AP````;#@`?,9P',9\``````````!\
+MQG`<QGP8<`!L.``0,##\,#`V'``````,&#``_LP8,&;^`````#9LV```````
+M`````````&PX`/[,&#!F_@``````&!@`_LP8,&;^````#!@`_&9F?&QF9N8`
+M```,&``0.&S&_L;&Q@```#AL`!`X;,;^QL;&````QGP`$#ALQO[&QL8`````
+MQ@`0.&S&_L;&Q@``````]FQ@8&!@8F;^````#!@`/&;"P,#"9CP``````#QF
+MPL#`P,)F/!AP`&PX`#QFPL#`PF8\````#!@`_F9B>&AB9OX``````/YF8FAX
+M:&)F_C`<``#&`/YF8GAH8F;^````;#@`_F9B>&AB9OX````,&``\&!@8&!@8
+M/````!PV`#P8&!@8&!@\````;#@`^&QF9F9F;/@``````/AL9F;V9F9L^```
+M``P8`,;F]O[>SL;&````;#@`QN;V_M[.QL8````,&`!\QL;&QL;&?````#AL
+M`'S&QL;&QL9\````-FP`?,;&QL;&QGP`````Q@!\QL;&QL;&?```````````
+MQFPX;,8`````;#@`_&9F?&QF9N8````X;#C&QL;&QL;&?`````P8`,;&QL;&
+MQL9\````-FP`QL;&QL;&QGP`````Q@#&QL;&QL;&?`````P8`&9F9F8\&!@\
+M``````!^?EH8&!@8&#P,.````'C,S,S8S,;&S``````,&#``W'9F8&#P````
+M``P8,`!X#'S,S'8`````$#AL`'@,?,S,=@``````QGP`>`Q\S,QV``````#,
+M``!X#'S,S'8``````.9L8&!@8&!@\``````,&#``?,;`P,9\``````````!\
+MQL#`QGP8<````&PX`'S&P,#&?``````,&#``?,;^P,9\``````````!\QO[`
+MQGPP'````,8``'S&_L#&?```````;#@`?,;^P,9\``````P8,``X&!@8&#P`
+M````$#AL`#@8&!@8/````&PX`!P,##QLS,QV```````,#'X,/&S,S'8`````
+M#!@P`-QF9F9F9@``````;#@`W&9F9F9F``````P8,`!\QL;&QGP`````$#AL
+M`'S&QL;&?```````-FP`?,;&QL9\``````#&``!\QL;&QGP`````````&!@`
+M?@`8&```````;#@`W'9F8&#P`````#AL.`#,S,S,S'8`````#!@P`,S,S,S,
+M=@``````;-@`S,S,S,QV``````#,``#,S,S,S'8`````#!@P`,;&QL9^!@SX
+=````$#`P_#`P,#8<##@``!@8````````````````
+`
+end
diff --git a/share/syscons/fonts/iso02-8x16.fnt b/share/syscons/fonts/iso02-8x16.fnt
new file mode 100644
index 0000000..da3fe09
--- /dev/null
+++ b/share/syscons/fonts/iso02-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso02-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````!@8&#``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&#!@P,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````<-C(P>#`P,#!X````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````S,S,S,QX,````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````!`X;,;&_L;&QL88,!X``,9\````````````````````
+M\&1L>'#@X&)F_@``````````QGS&QL9\Q@```````!ON8&!@8&!@8F;^````
+M``P8`'S&QF`X#,;&?```````?,9@.&S&QFPX#,9\`````&QL````````````
+M`````&PX`'S&QF`X#,;&?````````'S&QF`X#`;&QGP8#'@`-AP`?GY:&!@8
+M&!@\``````P8`/[&C!@P8,+&_@``````````````?@``````````;#@`_L:,
+M&#!@PL;^`````!@8`/[&C!@P8,+&_@``````.&QL.```````````````````
+M``!X#'S,S,QV&#`>`````````````````#!@/````#@:'AP8.'A8&#P`````
+M``P8,``````````````````;[F!@8&!@8&!@\```````#!@P`'S&8#@,QGP`
+M`````&PX`````````````````````````````````!@,>````&PX`'S&8#@,
+MQGP```````````!\QF`X#,9\&`QX`&PX`!`P,/PP,#`V'```````#!@P`/[,
+M&#!@QOX``````#9LV```````````````````;#@`_LP8,&#&_@```````!@8
+M`/[,&#!@QOX`````#!@`_&9F9GQL9F;F``````P8`!`X;,;&_L;&Q@`````X
+M;``0.&S&QO[&QL8`````QGP`$#ALQL;^QL;&``````#&`!`X;,;&_L;&Q@``
+M`````/9L8&!@8&!B9OX`````#!@`/&;"P,#`PF8\````````/&;"P,#`P,)F
+M/`P&?`!L.``\9L+`P,#"9CP`````#!@`_F9B8'A@8F;^````````_F9B:'AH
+M8&)F_A@P'@``Q@#^9F)H>&AB9OX`````;#@`_F9B:'AH8F;^``````P8`#P8
+M&!@8&!@8/``````<-@`\&!@8&!@8&#P`````;#@`^&QF9F9F9FSX````````
+M^&QF9O9F9F9L^``````,&`#&YO;^WL[&QL8`````;#@`QN;V_M[.QL;&````
+M``P8`'S&QL;&QL;&?``````X;`!\QL;&QL;&QGP`````-FP`?,;&QL;&QL9\
+M``````#&`'S&QL;&QL;&?````````````,9L.&S&````````;#@`_&9F9GQL
+M9F;F`````#AL.,;&QL;&QL;&?``````,&`#&QL;&QL;&QGP`````-FP`QL;&
+MQL;&QL9\``````#&`,;&QL;&QL;&?``````,&`!F9F9F/!@8&#P```````!^
+M?EH8&!@8&!@\&`QX````>,S,S-C,QL;&S```````#!@P`-QV9F!@8/``````
+M``P8,`!X#'S,S,QV```````0.&P`>`Q\S,S,=@```````,9\`'@,?,S,S'8`
+M``````#,``!X#'S,S,QV````````YFQ@8&!@8&!@\```````#!@P`'S&P,#`
+MQGP```````````!\QL#`P,9\&`QX````;#@`?,;`P,#&?```````#!@P`'S&
+M_L#`QGP```````````!\QO[`P,9\,&`\````Q@``?,;^P,#&?````````&PX
+M`'S&_L#`QGP```````P8,``X&!@8&!@\```````0.&P`.!@8&!@8/`````!L
+M.``<#`P\;,S,S'8````````,#'X,/&S,S,QV```````,&#``W&9F9F9F9@``
+M`````&PX`-QF9F9F9F8```````P8,`!\QL;&QL9\```````0.&P`?,;&QL;&
+M?````````#9L`'S&QL;&QGP```````#&``!\QL;&QL9\```````````8&`!^
+M`!@8`````````&PX`-QV9F!@8/```````#AL.`#,S,S,S,QV```````,&#``
+MS,S,S,S,=@```````#9L`,S,S,S,S'8```````#,``#,S,S,S,QV```````,
+M&#``QL;&QL;&?@8,^````!`P,/PP,#`P-AP8#'@``!@8````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso02-8x8.fnt b/share/syscons/fonts/iso02-8x8.fnt
new file mode 100644
index 0000000..4246950
--- /dev/null
+++ b/share/syscons/fonts/iso02-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso02-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````&#P\&!@`
+M&`!L;&P``````&QL_FS^;&P`&#Y@/`9\&```QLP8,&;&`#AL.';<S'8`&!@P
+M```````,&#`P,!@,`#`8#`P,&#```&8\_SQF````&!A^&!@`````````&!@P
+M````_@```````````!@8``8,&#!@P(``?,;&UL;&?``8.!@8&!A^`#QF!APP
+M9GX`/&8&'`9F/``</&S,_@P>`'Y@?`8&9CP`'#!@?&9F/`!^9@8,&!@8`#QF
+M9CQF9CP`/&9F/@8,.```&!@``!@8```8&```&!@P#!@P8#`8#````'X``'X`
+M`&`P&`P8,&``/&8&#!@`&`!\QM[>WL!X`!@\9F9^9F8`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`9F9F?F9F9@`\
+M&!@8&!@\`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``/&9F9FX\#@#\9F9\;&;F`#QF,!@,9CP`?EH8
+M&!@8/`!F9F9F9F9^`&9F9F9F/!@`QL;&UO[NQ@#&;#@X;,;&`&9F9CP8&#P`
+M_L:,&#)F_@`\,#`P,#`\`,!@,!@,!@(`/`P,#`P,/``0.&S&````````````
+M``#_,#`8`````````'@,?,QV`.!@8'QF9MP````\9F!F/``<#`Q\S,QV````
+M/&9^8#P`'#8P>#`P>````';,S'P,^.!@;'9F9N8`&``X&!@8/``&``8&!F9F
+M/.!@9FQX;.8`.!@8&!@8/````,S^_M;&````?&9F9F8````\9F9F/````-QF
+M9GQ@\```=LS,?`P>``#<=F9@\````#Y@/`9\`!`P?#`P-!@```#,S,S,=@``
+M`&9F9CP8````QM;^_FP```#&;#ALQ@```&9F9CX&?```?DP8,GX`#A@8<!@8
+M#@`8&!@8&!@8`'`8&`X8&'``=MP`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````!@\9GYF;A@.QGP```````#P
+M:'CPXF;^``!"/&9F/$(`^VY@8&)F_@`,&'S".(9\`#QF.&QL.,QX9@``````
+M``!L.'S".(9\`#QF,!@,9CPX-AQ^6A@8/``,&/Z&&&+^`````'X`````;#C^
+MAAAB_@`8`/Z&&&+^`#AL;#@```````!X#'S,=AP````````P'#@:'CQX&#P`
+M#!@```````#[;F!@8&#P``P8/$`X!'@`;#@````````````````,.&PX/$`X
+M!'@````^8#P&?#AL.#!\,#08``P8`'P8,'P`-FP```````!L.`!\&#!\```8
+M`'P8,'P`#!C\QOS,Q@`,&#QF?F9F`!PV/&9^9F8`9CP\9GYF9@!F&#QF?F9F
+M`.9L8&!B9OX`#!A\QL#&?``\9L#`P&8\.&PX?,;`QGP`#!C^8'A@_@#^8FAX
+M:&+^',8`_F!X8/X`;#C^8'A@_@`,&#P8&!@\`!PV/!@8&#P`;#C\9F9F_`#X
+M;&;V9FSX``P8YO;>SL8`;#CF]M[.Q@`,&'S&QL9\`#AL?,;&QGP`-FQ\QL;&
+M?`#&?,;&QL9\``#&;#ALQ@``;#C\QOS,Q@`X;/;&QL9\``P8QL;&QGP`-FS&
+MQL;&?`#&`,;&QL9\``Q^9F8\&#P`?EH8&!@8/`YXS,S8S,;,``P8W'9F8/``
+M#!AX#'S,=@`X;'@,?,QV`,9\>`Q\S'8`S`!X#'S,=@!S-C`P,#!X``P8`#Q@
+M8#P````\9F!F/#@V'``\8&`\``P8/&9^8#P````\9GY@/!QF`#QF?F`\`#8<
+M/&9^8#P`#!@X&!@8/``<-C@8&!@\`&PX#`Q\S'8`##X,?,S,=@`,&'QF9F9F
+M`&PX?&9F9F8`#!@`/&9F/``<-@`\9F8\`#9L`#QF9CP`9@`\9F9F/```&`!^
+M`!@``&PXW'9F8/``,,PPS,S,=@`8,`#,S,QV`&S8`,S,S'8`S`#,S,S,=@`,
+7&&9F9CX&?!`P?#`P-!@.&```````````
+`
+end
diff --git a/share/syscons/fonts/iso04-8x14.fnt b/share/syscons/fonts/iso04-8x14.fnt
new file mode 100644
index 0000000..f6e1b33
--- /dev/null
+++ b/share/syscons/fonts/iso04-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso04-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\/!@8`!@8````[NYFS```````````````;&QL
+M_FQL_FQL;````!A^V]O8>!P>F]M^&!@``.:F[!P8,'!NRLX`````.&PX,'9^
+MS,S,=@```#@X&#````````````````P8,#`P,#`P&`P`````,!@,#`P,#`P8
+M,`````````!L./XX;````````````!@8?A@8```````````````````X.!@P
+M`````````/X`````````````````````.#@`````!@8,#!@P,&#`P`````!\
+MQL[6UM;6YL9\`````!@X>!@8&!@8&'X`````?,;&!@P8,&#&_@````!\Q@8&
+M/`8&!L9\``````P</&S,S/X,#!X`````_L#`P/P&!L;&?`````!\QL#`_,;&
+MQL9\`````/[&!@P8,#`P,#``````?,;&QGS&QL;&?`````!\QL;&QGX&!L9\
+M`````````#@X````.#@`````````.#@````X.!@P````#!@P8&`P&`P`````
+M``````#^`/X``````````&`P&`P,&#!@``````!\QL8,&!@8`!@8`````'S&
+MQL;>WM[<P'X`````.&S&QL;^QL;&Q@````#\9F9F?&9F9F;\`````#QFPL#`
+MP,#"9CP`````^&QF9F9F9F9L^`````#^9F!@?&!@8&;^`````/YF8&!\8&!@
+M8/``````?,;&P,#.QL;&?`````#&QL;&_L;&QL;&`````#P8&!@8&!@8&#P`
+M````/!@8&!@8&-C8<`````#&QLS8\/#8S,;&`````/!@8&!@8&!B9OX`````
+MQL;N[O[6UL;&Q@````#&QN;F]M[.SL;&`````'S&QL;&QL;&QGP`````_&9F
+M9F9\8&!@\`````!\QL;&QL;&UMY\!@```/QF9F9\>&QF9N8`````?,;`P'`<
+M!@;&?`````#_VYD8&!@8&!@\`````,;&QL;&QL;&QGP`````QL;&QL;&QFPX
+M$`````#&QL;6UM;^[L;&`````,;&QFPX.&S&QL8`````9F9F9F8\&!@8/```
+M``#^QH8,&#!@PL;^`````'Q@8&!@8&!@8'P`````P,!@8#`8&`P&!@````!\
+M#`P,#`P,#`Q\````$#ALQ@````````````````````````````#_`#@X,!@`
+M`````````````````'@,?,S,S'8`````X&!@?&9F9F9F_`````````!\QL#`
+MP,9\`````!P,#'S,S,S,S'X`````````?,;&_L#&?``````<-C`P_#`P,#!X
+M`````````';.QL;&SG8&_```X&!@?&9F9F9FY@`````8&``X&!@8&!@\````
+M``P,`!P,#`P,#,S,>```X&!@9F9L>&QFY@`````X&!@8&!@8&!@\````````
+M`.S^UM;&QL8`````````W&9F9F9F9@````````!\QL;&QL9\`````````-QF
+M9F9F9GQ@\```````=LS,S,S,?`P.``````#<9F!@8&#P`````````'S&P'P&
+MQGP`````,#`P_#`P,#`V'`````````#,S,S,S,QV`````````,;&QL9L.!``
+M````````QL;6UM;^;`````````#&QFPX;,;&`````````,;&;&PX,#!@P```
+M````_H8,&#!B_@`````.&!@8<!@8&!@.`````!@8&!@8&!@8&!@`````<!@8
+M&`X8&!@8<````';<````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`,;^````.'S&QL;^QL;&SA@.``````#F;'AX;&;F`````/QF9F9\>&QF9N8,
+M>```````QGS&QL9\Q@``=MP`/!@8&!@8&!@\`````/!@8&!@8&!B9OX,>`!\
+MQF`X;,;&;#C.QGP``&QL``````````````!L.`!\QL9@.`P&QGP``'P`_F9@
+M8'Q@8&!F_@````!\QL;`P,[&QL9\#'@``/_;F1@>/'@8&#P`````````````
+M?```````9CP`_L8,&#!@P,;^``!\```````````````````X;&PX````````
+M``````````!X#'S,S,QV&`X``````````````!@8#@``````W'9F8&!@\##@
+M``P8,````````````````';<`#@8&!@8&#P`````.!@8&!@8&!@8/!CP`&PX
+M`````````````````````````````!@8<```;#@`?,9@.`S&?```````?`!\
+MQL;^P,9\```\8#@`=L[&QL;.=@;\````,#`P_#`\>/`V'`````#<_O;FQL;&
+MQL;<`````&PX`/[,&#!@QOX```````#<_O;FQL8&'```?``X?,;&QO[&QL;&
+M```,&!`X;,;&_L;&QL8``#AL$#ALQL;^QL;&Q@``=MP0.&S&QO[&QL;&``#&
+MQCALQL;&_L;&QL8``#AL.!`X;,;^QL;&Q@`````_;,S,_\S,S,S/`````#P8
+M&!@8&!@8&#PP'F8\/&;"P,#`P,)F/```#AC^9F!@?&!@8&;^`````/YF8&!\
+M8&!@9OXP'FP`_F9@8'Q@8&!F_@``&!C^9F!@?&!@8&;^```,&"`\&!@8&!@8
+M&#P``#QF`#P8&!@8&!@8/```?@`\&!@8&!@8&!@\`````/AL9F;V]F9F;/@`
+M````QL;FYO;>SL[&Q@QX?`!\QL;&QL;&QL9\`````,;&S-CP\-C,QL8,>#AL
+M`'S&QL;&QL;&?```=MP`?,;&QL;&QL9\``!L;`!\QL;&QL;&QGP`````````
+M9CP8/&8``````@1\SL[6UM;6YN9\0(```,;&QL;&QL;&QGPP'`P8QL;&QL;&
+MQL;&?```.&P`QL;&QL;&QL9\``#&Q@#&QL;&QL;&QGP``';<`,;&QL;&QL;&
+M?```?`#&QL;&QL;&QL9\`````'C,S,S8S,;&QLP``````'P`>`Q\S,S,=@``
+M`!@P8`!X#'S,S,QV````$#AL`'@,?,S,S'8`````=MP`>`Q\S,S,=@````#,
+MS`!X#'S,S,QV````.&PX`'@,?,S,S'8`````````;AE_V-C8;P`````8&``X
+M&!@8&!@\,!X``&PX`'S&P,#`QGP````,&#``?,;&_L#&?`````````!\QL;^
+MP,9\&!X``&QL`'S&QO[`QGP`````&!@`?,;&_L#&?`````P8,``X&!@8&!@\
+M````&#QF`#@8&!@8&#P``````'P`.!@8&!@8/``````,?@Q\S,S,S,Q^````
+M`````-QF9F9F9F8,>````'P`?,;&QL;&?`````#@8&!F9FQX;&;F#'@`$#AL
+M`'S&QL;&QGP`````=MP`?,;&QL;&?`````!L;`!\QL;&QL9\````````&!@`
+M?@`8&``````````&?,[6UM;F?,````````#,S,S,S,QV,!X`#!@P`,S,S,S,
+MS'8````0.&P`S,S,S,S,=@````#,S`#,S,S,S,QV`````';<`,S,S,S,S'8`
+=`````/P`S,S,S,S,=@```!@8````````````````
+`
+end
diff --git a/share/syscons/fonts/iso04-8x16.fnt b/share/syscons/fonts/iso04-8x16.fnt
new file mode 100644
index 0000000..861a6cf
--- /dev/null
+++ b/share/syscons/fonts/iso04-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso04-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````&#P\/#P8&``8
+M&```````[NYFS`````````````````!L;&S^;&S^;&QL`````!@8?MO86#@<
+M'MO;?A@8`````.*F[!@8,&!NRHX````````X;#@P=G[,S,QV```````X.!@P
+M``````````````````P8,#`P,#`P&`P````````P&`P,#`P,#!@P````````
+M````;#C^.&P``````````````!@8?A@8`````````````````````#@X&#``
+M``````````#^````````````````````````.#@````````"!@P8&#!@8,"`
+M````````?,;.UM;6UN;&?````````!AX&!@8&!@8&'X```````!\QL8&#!@P
+M8,;^````````?,8&!CP&!@;&?`````````P</&S,S/X,#!X```````#^P,#`
+M_`8&QL9\````````?,;`P/S&QL;&?````````/[&!@P8,#`P,#````````!\
+MQL;&?,;&QL9\````````?,;&QL9^!@;&?````````````#@X````.#@`````
+M```````X.````#@X&#````````P8,&!@,!@,``````````````#^`/X`````
+M````````8#`8#`P8,&``````````?,;&#!@8&``8&````````'S&QL;>WM[<
+MP'X````````X;,;&QO[&QL;&````````_&9F9GQF9F9F_````````#QFPL#`
+MP,#"9CP```````#X;&9F9F9F9FSX````````_F9@8'Q@8&!F_@```````/YF
+M8&!\8&!@8/````````!\QL;`P,[.QL9\````````QL;&QO[&QL;&Q@``````
+M`#P8&!@8&!@8&#P````````\&!@8&!@8V-AP````````QL;,V/#PV,S&Q@``
+M`````/!@8&!@8&!B9OX```````#&QN[N_M;6QL;&````````QL;FYO;>SL[&
+MQ@```````'S&QL;&QL;&QGP```````#\9F9F9GQ@8&#P````````?,;&QL;&
+MQM;>?`8``````/QF9F9\>&QF9N8```````!\QL#`<!P&QL9\````````_]N9
+M&!@8&!@8/````````,;&QL;&QL;&QGP```````#&QL;&QL;&;#@0````````
+MQL;&UM;6_N[&Q@```````,;&QFPX.&S&QL8```````!F9F9F9CP8&!@\````
+M````_L:&#!@P8,+&_@```````'Q@8&!@8&!@8'P```````"`P&!@,!@,#`8"
+M````````?`P,#`P,#`P,?```````$#ALQ@``````````````````````````
+M``````#_```X.#`8`````````````````````'@,?,S,S'8```````#@8&!\
+M9F9F9F;\````````````?,;`P,#&?````````!P,#'S,S,S,S'X`````````
+M``!\QL;^P,9\````````'#8P_#`P,#`P>````````````';.QL;&SG8&_```
+M``#@8&!\9F9F9F;F````````&!@`.!@8&!@8/`````````P,`!P,#`P,#,S,
+M>`````#@8&!F9FQX;&;F````````.!@8&!@8&!@8/````````````.S^UM;&
+MQL8```````````#<9F9F9F9F````````````?,;&QL;&?````````````-QF
+M9F9F9GQ@\`````````!VS,S,S,Q\#!X`````````W&9@8&!@\```````````
+M`'S&8#@,QGP````````P,##\,#`P,#8<````````````S,S,S,S,=@``````
+M`````,;&QL9L.!````````````#&QM;6UOYL````````````QL9L.&S&Q@``
+M`````````,;&;&PX,#!@P`````````#^S!@P8,;^````````#A@8&'`8&!@8
+M#@```````!@8&!@8&!@8&!@```````!P&!@8#A@8&!AP````````=MP`````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````,;^```````X;,;&QO[&QL;.&`X`````````YFQX>&QFY@``````
+M`/QF9F9\>&QF9O88\````````,9\QL;&?,8`````=MP`/!@8&!@8&!@8/```
+M`````/!@8&!@8&!B9OX,>```?,9@.&S&QFPX#,9\`````&QL````````````
+M`````&PX`'S&P,!P'`;&QGP```!\``#^9F!@?&!@8&;^````````?,;&P,#.
+MSL;&?`QX`````/_;F1@>/'@8&#P```````````````!\````````;#@`_L:&
+M#!@P8,+&_@```'P`````````````````````.&QL.```````````````````
+M````>`Q\S,S,=C`>```````````````````P'@````````#<9F!@8&#P&/``
+M#!@P`````````````````````';<`#@8&!@8&#P````````X&!@8&!@8&!@\
+M#'@``&PX``````````````````````````````````QX``````!L.`!\QF`X
+M#,9\`````````'P`?,;&_L#&?```````/&`P`';.QL;&SG8&_``````P,##\
+M,#QX\#8<````````W/[FQL;&QL;&W````````&PX`/[,&#!@QOX`````````
+M`-S^YL;&Q@8<`````'P`.&S&QL;^QL;&Q@````P8(#ALQL;&_L;&QL8````X
+M;``X;,;&QO[&QL;&````=MP`.&S&QL;^QL;&Q@```&QL`#ALQL;&_L;&QL8`
+M```X;#@`.&S&QO[&QL;&````````/VS,S/_,S,S,SP```````#P8&!@8&!@8
+M&#PP'@!F/``\9L+`P,#`PF8\````&#!`_F9@8'Q@8&!F_@```````/YF8&!\
+M8&!@9OXP'@!L;`#^9F!@?&!@8&;^````&!@`_F9@8'A@8&!F_@````P8(#P8
+M&!@8&!@8&#P````\9@`\&!@8&!@8&!@\`````#P`/!@8&!@8&!@8/```````
+M`/AL9F;V]F9F;/@```````#&QN;V_M[.QL;&#'@``'P`?,;&QL;&QL;&?```
+M`````,;&S-CP\-C,QL8,>``X;`!\QL;&QL;&QL9\````=MP`?,;&QL;&QL;&
+M?`````#&`'S&QL;&QL;&QGP```````````#&;#ALQ@````````(&?,[>UM;6
+MUO;F?,"``````,;&QL;&QL;&QGQ@/``,&"#&QL;&QL;&QL9\````.&P`QL;&
+MQL;&QL;&?`````#&`,;&QL;&QL;&QGP```!VW`#&QL;&QL;&QL9\`````'P`
+MQL;&QL;&QL;&?```````>,S,S-C,QL;&S,``````````?`!X#'S,S,QV````
+M```8,&``>`Q\S,S,=@``````$#AL`'@,?,S,S'8```````!VW`!X#'S,S,QV
+M````````S,P`>`Q\S,S,=@``````.&PX`'@,?,S,S'8```````````!N&7_8
+MV-AO````````&!@`.!@8&!@8/#`<`````&PX`'S&P,#`QGP```````P8,`!\
+MQL;^P,9\````````````?,;&_L#&?#`>`````&QL`'S&QO[`QGP``````!`X
+M$`!\QL;^P,9\```````,&#``.!@8&!@8/```````$#AL`#@8&!@8&#P`````
+M````?``X&!@8&!@\````````#'X,?,S,S,S,?@```````````-QF9F9F9F8,
+M>```````?`!\QL;&QL9\````````X&!@9F9L>&QFYACP````$#AL`'S&QL;&
+MQGP```````!VW`!\QL;&QL9\````````;&P`?,;&QL;&?```````````&!@`
+M?@`8&`````````````9\SM[6]N9\P```````````S,S,S,S,=F`\````&#!@
+M`,S,S,S,S'8``````!`X;`#,S,S,S,QV````````S,P`S,S,S,S,=@``````
+M`';<`,S,S,S,S'8`````````_`#,S,S,S,QV`````!@8````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso04-8x8.fnt b/share/syscons/fonts/iso04-8x8.fnt
new file mode 100644
index 0000000..8d9fdc6b
--- /dev/null
+++ b/share/syscons/fonts/iso04-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso04-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````!@\/!@8
+M`!@`[F;,``````!L_FQL;/YL&'[;V'X;VWX``,;,&#!FQ@`X;#I^S,QV`#@8
+M<```````#!@P,#`8#``P&`P,#!@P``!L./XX;````!@8?A@8````````.!AP
+M`````/X````````````8&``&#!@8,&#``'S&SM;FQGP`&'@8&!@8?@!\QHPX
+M8,+^`'S&!CP&QGP`'#QLS/X,'@#^P/P&!L9\`'S&P/S&QGP`_L8&#!@P,`!\
+MQL9\QL9\`'S&QGX&QGP``!@8`!@8````&!@`&!AP```8,&`P&`````#^`/X`
+M````,!@,&#```'S&S!@8`!@`?,;&WMS`?@`X;,;&_L;&`/QF9GQF9OP`/&;"
+MP,)F/`#X;&9F9FSX`/YF8'Q@9OX`_F9@?&!@\`!\QL#.QL9\`,;&QO[&QL8`
+M/!@8&!@8/``\&!@8V-AP`,;,V/#8S,8`\&!@8&)F_@#&QN[^UL;&`,;F]M[.
+MQL8`?,;&QL;&?`#\9F9\8&#P`'S&QM;6?`8`_&9F?'AFY@!\QL!\!L9\`/_;
+MF1@8&#P`QL;&QL;&?`#&QL;&;#@0`,;&UM;^[FP`QL9L.&S&Q@!F9F8\&!@\
+M`/[&C#ABQOX`?&!@8&!@?`#`8#`P&`P&`'P,#`P,#'P`.&S&````````````
+M``#_`#@P&`````````!X#'S,=@#@8'QF9F;\````>,S`S'@`#@Q\S,S,?@``
+M`'S&_L!\`!PV,/PP,'@``';,S'P,^```X&!\9F;F&!@`.!@8&#P,#``<#`S,
+M>`#@8&9L>&SF`#@8&!@8&#P```#L_M;6Q@```-QF9F9F````?,;&QGP``-QF
+M9GQ@\```=LS,?`X.````W&9@8/````!\P'P&_``P,/PP,#8<````S,S,S'8`
+M``#&QFPX$````,;6UOYL````QFPX;,8```#,S'P,^````/Z,.&+^``X8&'`8
+M&`X8&!@8&!@8&`!P&!@.&!AP`';<````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````#&_CALQO[&SA@.````YFQX;.;\
+M9GYL9N88<`!"/&9F/$(`=MPX&!@8&#SP8&!B9OX8<#QF.&QL.,QX9@``````
+M``!L.'S`?`;&?'P`_F!\8&;^/&;`SF8^&'``_YD>/'@8/```````/```;#C^
+MC!@R9OY\`````````#AL;#@```````!X#'S,=@\````````0'```W'9F\##@
+M&#``````````=MP`.!@8/#@8&!@8/!AP;#@````````````````$'`!L.'S`
+M?`;\`'P`?,;^P'PX8#!^S'P,^``P,/PP.'8<`-S^]L;&QMQL.`#^C#AB_@``
+MW/[VQ@8<?`!\QL;^QL8,&'S&QO[&QGR"?,;&_L;&QGQ\QL;^QL;&.&S&QO[&
+MQCAL.&S&_L;&`#YXV/[8V-YX,#`P,'@P'&PX?,;`P,9\#AC^8GA@9O[^9F!X
+M8&;^'&S^9F!\8&;^&/YF8'Q@9OX,&#P8&!@8/#Q"/!@8&!@\/``\&!@8&#P`
+M^&QF]O9L^,;F]M[.Q@PX?`!\QL;&QGS&S/C8S,8,.'R"?,;&QL9\=MQ\QL;&
+MQGS&?,;&QL;&?```QFPX;,8``W[.WM;VYOS&QL;&QGPP'APPQL;&QL9\.&P`
+MQL;&QGS&`,;&QL;&?';<`,;&QL9\?`#&QL;&QGP`?,;\QL;\P`!\`'@,?,QV
+M#!@@>`Q\S'8`>(1X#'S,=FPX`'@,?,QV`,P`>`Q\S'8`.&QX#'S,=@```&X[
+M?MA^&``X&!@\&`X`S'AXS,#,>`P8`'S&_L!\``!\QO[`>AX`;`!\QO[`?``X
+M`'S&_L!\#!@@.!@8&#P`/$(X&!@8/``\`#@8&!@\``P^#'S,S'8``-SFQL88
+M<`!\`'S&QL9\`.!F;'ALYAQ\Q@!\QL;&?';<`'S&QL9\`&P`?,;&QGP``!@`
+M?@`8```&?,[6YGS```#,S,Q^,!P,&"#,S,S,=GC,`,S,S,QV`,P`S,S,S'9V
+7W`#,S,S,=@!X`,S,S,QV&```````````
+`
+end
diff --git a/share/syscons/fonts/iso04-vga9-8x14.fnt b/share/syscons/fonts/iso04-vga9-8x14.fnt
new file mode 100644
index 0000000..0cf8838
--- /dev/null
+++ b/share/syscons/fonts/iso04-vga9-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso04-vga9-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\/!@8`!@8````[NYFS```````````````;&QL
+M_FQL_FQL;````!A^V]O8>!P>F]M^&!@``.:F[!P8,'!NRLX`````.&PX,'9^
+MS,S,=@```#@X&#````````````````P8,#`P,#`P&`P`````,!@,#`P,#`P8
+M,`````````!L./XX;````````````!@8?A@8```````````````````X.!@P
+M`````````/X`````````````````````.#@`````!@8,#!@P,&#`P`````!\
+MQL[6UM;6YL9\`````!@X>!@8&!@8&'X`````?,;&!@P8,&#&_@````!\Q@8&
+M/`8&!L9\``````P</&S,S/X,#!X`````_L#`P/P&!L;&?`````!\QL#`_,;&
+MQL9\`````/[&!@P8,#`P,#``````?,;&QGS&QL;&?`````!\QL;&QGX&!L9\
+M`````````#@X````.#@`````````.#@````X.!@P````#!@P8&`P&`P`````
+M``````#^`/X``````````&`P&`P,&#!@``````!\QL8,&!@8`!@8`````'S&
+MQL;>WM[<P'X`````.&S&QL;^QL;&Q@````#\9F9F?&9F9F;\`````#QFPL#`
+MP,#"9CP`````^&QF9F9F9F9L^`````#^9F!@?&!@8&;^`````/YF8&!\8&!@
+M8/``````?,;&P,#.QL;&?`````#&QL;&_L;&QL;&`````#P8&!@8&!@8&#P`
+M````/!@8&!@8&-C8<`````#&QLS8\/#8S,;&`````/!@8&!@8&!B9OX`````
+MQL;N[O[6UL;&Q@````#&QN;F]M[.SL;&`````'S&QL;&QL;&QGP`````_&9F
+M9F9\8&!@\`````!\QL;&QL;&UMY\!@```/QF9F9\>&QF9N8`````?,;`P'`<
+M!@;&?`````#_VYD8&!@8&!@\`````,;&QL;&QL;&QGP`````QL;&QL;&QFPX
+M$`````#&QL;6UM;^[L;&`````,;&QFPX.&S&QL8`````9F9F9F8\&!@8/```
+M``#^QH8,&#!@PL;^`````'Q@8&!@8&!@8'P`````P,!@8#`8&`P&!@````!\
+M#`P,#`P,#`Q\````$#ALQ@````````````````````````````#_`#@X,!@`
+M`````````````````'@,?,S,S'8`````X&!@?&9F9F9F_`````````!\QL#`
+MP,9\`````!P,#'S,S,S,S'X`````````?,;&_L#&?``````<-C`P_#`P,#!X
+M`````````';.QL;&SG8&_```X&!@?&9F9F9FY@`````8&``X&!@8&!@\````
+M``P,`!P,#`P,#,S,>```X&!@9F9L>&QFY@`````X&!@8&!@8&!@\````````
+M`.S^UM;&QL8`````````W&9F9F9F9@````````!\QL;&QL9\`````````-QF
+M9F9F9GQ@\```````=LS,S,S,?`P.``````#<9F!@8&#P`````````'S&P'P&
+MQGP`````,#`P_#`P,#`V'`````````#,S,S,S,QV`````````,;&QL9L.!``
+M````````QL;6UM;^;`````````#&QFPX;,;&`````````,;&;&PX,#!@P```
+M````_H8,&#!B_@`````.&!@8<!@8&!@.`````!@8&!@8&!@8&!@`````<!@8
+M&`X8&!@8<````';<`````````````````````````````````'P`.'S&QL;^
+MQL;&Q@``#!@0.&S&QO[&QL;&```X;!`X;,;&_L;&QL8``';<$#ALQL;^QL;&
+MQ@``QL8X;,;&QO[&QL;&```X;#@0.&S&_L;&QL8`````/VS,S/_,S,S,SP``
+M```\&!@8&!@8&!@\,!YF/#QFPL#`P,#"9CP```X8_F9@8'Q@8&!F_@````#^
+M9F!@?&!@8&;^,!YL`/YF8&!\8&!@9OX``!@8_F9@8'Q@8&!F_@``#!@@/!@8
+M&!@8&!@\```\9@`\&!@8&!@8&#P``'X`/!@8&!@8&!@8/`````#X;&9F]O9F
+M9FSX`````,;&YN;VWL[.QL8,>'P`?,;&QL;&QL;&?`````#&QLS8\/#8S,;&
+M#'@X;`!\QL;&QL;&QGP``';<`'S&QL;&QL;&?```;&P`?,;&QL;&QL9\````
+M`````&8\&#QF``````($?,[.UM;6UN;F?$"```#&QL;&QL;&QL9\,!P,&,;&
+MQL;&QL;&QGP``#AL`,;&QL;&QL;&?```QL8`QL;&QL;&QL9\``!VW`#&QL;&
+MQL;&QGP``'P`QL;&QL;&QL;&?`````!XS,S,V,S&QL;,````````````````
+M`,;^````.'S&QL;^QL;&SA@.``````#F;'AX;&;F`````/QF9F9\>&QF9N8,
+M>```````QGS&QL9\Q@``=MP`/!@8&!@8&!@\`````/!@8&!@8&!B9OX,>`!\
+MQF`X;,;&;#C.QGP``&QL``````````````!L.`!\QL9@.`P&QGP``'P`_F9@
+M8'Q@8&!F_@````!\QL;`P,[&QL9\#'@``/_;F1@>/'@8&#P`````````````
+M?```````9CP`_L8,&#!@P,;^``!\```````````````````X;&PX````````
+M``````````!X#'S,S,QV&`X``````````````!@8#@``````W'9F8&!@\##@
+M``P8,````````````````';<`#@8&!@8&#P`````.!@8&!@8&!@8/!CP`&PX
+M`````````````````````````````!@8<```;#@`?,9@.`S&?```````?`!\
+MQL;^P,9\```\8#@`=L[&QL;.=@;\````,#`P_#`\>/`V'`````#<_O;FQL;&
+MQL;<`````&PX`/[,&#!@QOX```````#<_O;FQL8&'```````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````'P`>`Q\S,S,=@``
+M`!@P8`!X#'S,S,QV````$#AL`'@,?,S,S'8`````=MP`>`Q\S,S,=@````#,
+MS`!X#'S,S,QV````.&PX`'@,?,S,S'8`````````;AE_V-C8;P`````8&``X
+M&!@8&!@\,!X``&PX`'S&P,#`QGP````,&#``?,;&_L#&?`````````!\QL;^
+MP,9\&!X``&QL`'S&QO[`QGP`````&!@`?,;&_L#&?`````P8,``X&!@8&!@\
+M````&#QF`#@8&!@8&#P``````'P`.!@8&!@8/``````,?@Q\S,S,S,Q^````
+M`````-QF9F9F9F8,>````'P`?,;&QL;&?`````#@8&!F9FQX;&;F#'@`$#AL
+M`'S&QL;&QGP`````=MP`?,;&QL;&?`````!L;`!\QL;&QL9\````````&!@`
+M?@`8&``````````&?,[6UM;F?,````````#,S,S,S,QV,!X`#!@P`,S,S,S,
+MS'8````0.&P`S,S,S,S,=@````#,S`#,S,S,S,QV`````';<`,S,S,S,S'8`
+=`````/P`S,S,S,S,=@```!@8````````````````
+`
+end
diff --git a/share/syscons/fonts/iso04-vga9-8x16.fnt b/share/syscons/fonts/iso04-vga9-8x16.fnt
new file mode 100644
index 0000000..42cf631
--- /dev/null
+++ b/share/syscons/fonts/iso04-vga9-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso04-vga9-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````&#P\/#P8&``8
+M&```````[NYFS`````````````````!L;&S^;&S^;&QL`````!@8?MO86#@<
+M'MO;?A@8`````.*F[!@8,&!NRHX````````X;#@P=G[,S,QV```````X.!@P
+M``````````````````P8,#`P,#`P&`P````````P&`P,#`P,#!@P````````
+M````;#C^.&P``````````````!@8?A@8`````````````````````#@X&#``
+M``````````#^````````````````````````.#@````````"!@P8&#!@8,"`
+M````````?,;.UM;6UN;&?````````!AX&!@8&!@8&'X```````!\QL8&#!@P
+M8,;^````````?,8&!CP&!@;&?`````````P</&S,S/X,#!X```````#^P,#`
+M_`8&QL9\````````?,;`P/S&QL;&?````````/[&!@P8,#`P,#````````!\
+MQL;&?,;&QL9\````````?,;&QL9^!@;&?````````````#@X````.#@`````
+M```````X.````#@X&#````````P8,&!@,!@,``````````````#^`/X`````
+M````````8#`8#`P8,&``````````?,;&#!@8&``8&````````'S&QL;>WM[<
+MP'X````````X;,;&QO[&QL;&````````_&9F9GQF9F9F_````````#QFPL#`
+MP,#"9CP```````#X;&9F9F9F9FSX````````_F9@8'Q@8&!F_@```````/YF
+M8&!\8&!@8/````````!\QL;`P,[.QL9\````````QL;&QO[&QL;&Q@``````
+M`#P8&!@8&!@8&#P````````\&!@8&!@8V-AP````````QL;,V/#PV,S&Q@``
+M`````/!@8&!@8&!B9OX```````#&QN[N_M;6QL;&````````QL;FYO;>SL[&
+MQ@```````'S&QL;&QL;&QGP```````#\9F9F9GQ@8&#P````````?,;&QL;&
+MQM;>?`8``````/QF9F9\>&QF9N8```````!\QL#`<!P&QL9\````````_]N9
+M&!@8&!@8/````````,;&QL;&QL;&QGP```````#&QL;&QL;&;#@0````````
+MQL;&UM;6_N[&Q@```````,;&QFPX.&S&QL8```````!F9F9F9CP8&!@\````
+M````_L:&#!@P8,+&_@```````'Q@8&!@8&!@8'P```````"`P&!@,!@,#`8"
+M````````?`P,#`P,#`P,?```````$#ALQ@``````````````````````````
+M``````#_```X.#`8`````````````````````'@,?,S,S'8```````#@8&!\
+M9F9F9F;\````````````?,;`P,#&?````````!P,#'S,S,S,S'X`````````
+M``!\QL;^P,9\````````'#8P_#`P,#`P>````````````';.QL;&SG8&_```
+M``#@8&!\9F9F9F;F````````&!@`.!@8&!@8/`````````P,`!P,#`P,#,S,
+M>`````#@8&!F9FQX;&;F````````.!@8&!@8&!@8/````````````.S^UM;&
+MQL8```````````#<9F9F9F9F````````````?,;&QL;&?````````````-QF
+M9F9F9GQ@\`````````!VS,S,S,Q\#!X`````````W&9@8&!@\```````````
+M`'S&8#@,QGP````````P,##\,#`P,#8<````````````S,S,S,S,=@``````
+M`````,;&QL9L.!````````````#&QM;6UOYL````````````QL9L.&S&Q@``
+M`````````,;&;&PX,#!@P`````````#^S!@P8,;^````````#A@8&'`8&!@8
+M#@```````!@8&!@8&!@8&!@```````!P&!@8#A@8&!AP````````=MP`````
+M````````````````````````````````?``X;,;&QO[&QL;&````#!@@.&S&
+MQL;^QL;&Q@```#AL`#ALQL;&_L;&QL8```!VW``X;,;&QO[&QL;&````;&P`
+M.&S&QL;^QL;&Q@```#AL.``X;,;&_L;&QL8````````_;,S,_\S,S,S/````
+M````/!@8&!@8&!@8/#`>`&8\`#QFPL#`P,#"9CP````8,$#^9F!@?&!@8&;^
+M````````_F9@8'Q@8&!F_C`>`&QL`/YF8&!\8&!@9OX````8&`#^9F!@>&!@
+M8&;^````#!@@/!@8&!@8&!@8/````#QF`#P8&!@8&!@8&#P`````/``\&!@8
+M&!@8&!@\````````^&QF9O;V9F9L^````````,;&YO;^WL[&QL8,>```?`!\
+MQL;&QL;&QL9\````````QL;,V/#PV,S&Q@QX`#AL`'S&QL;&QL;&QGP```!V
+MW`!\QL;&QL;&QL9\`````,8`?,;&QL;&QL;&?````````````,9L.&S&````
+M`````@9\SM[6UM;6]N9\P(``````QL;&QL;&QL;&?&`\``P8(,;&QL;&QL;&
+MQGP````X;`#&QL;&QL;&QL9\`````,8`QL;&QL;&QL;&?````';<`,;&QL;&
+MQL;&QGP`````?`#&QL;&QL;&QL9\``````!XS,S,V,S&QL;,P```````````
+M`````````,;^```````X;,;&QO[&QL;.&`X`````````YFQX>&QFY@``````
+M`/QF9F9\>&QF9O88\````````,9\QL;&?,8`````=MP`/!@8&!@8&!@8/```
+M`````/!@8&!@8&!B9OX,>```?,9@.&S&QFPX#,9\`````&QL````````````
+M`````&PX`'S&P,!P'`;&QGP```!\``#^9F!@?&!@8&;^````````?,;&P,#.
+MSL;&?`QX`````/_;F1@>/'@8&#P```````````````!\````````;#@`_L:&
+M#!@P8,+&_@```'P`````````````````````.&QL.```````````````````
+M````>`Q\S,S,=C`>```````````````````P'@````````#<9F!@8&#P&/``
+M#!@P`````````````````````';<`#@8&!@8&#P````````X&!@8&!@8&!@\
+M#'@``&PX``````````````````````````````````QX``````!L.`!\QF`X
+M#,9\`````````'P`?,;&_L#&?```````/&`P`';.QL;&SG8&_``````P,##\
+M,#QX\#8<````````W/[FQL;&QL;&W````````&PX`/[,&#!@QOX`````````
+M`-S^YL;&Q@8<````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````?`!X#'S,S,QV````
+M```8,&``>`Q\S,S,=@``````$#AL`'@,?,S,S'8```````!VW`!X#'S,S,QV
+M````````S,P`>`Q\S,S,=@``````.&PX`'@,?,S,S'8```````````!N&7_8
+MV-AO````````&!@`.!@8&!@8/#`<`````&PX`'S&P,#`QGP```````P8,`!\
+MQL;^P,9\````````````?,;&_L#&?#`>`````&QL`'S&QO[`QGP``````!`X
+M$`!\QL;^P,9\```````,&#``.!@8&!@8/```````$#AL`#@8&!@8&#P`````
+M````?``X&!@8&!@\````````#'X,?,S,S,S,?@```````````-QF9F9F9F8,
+M>```````?`!\QL;&QL9\````````X&!@9F9L>&QFYACP````$#AL`'S&QL;&
+MQGP```````!VW`!\QL;&QL9\````````;&P`?,;&QL;&?```````````&!@`
+M?@`8&`````````````9\SM[6]N9\P```````````S,S,S,S,=F`\````&#!@
+M`,S,S,S,S'8``````!`X;`#,S,S,S,QV````````S,P`S,S,S,S,=@``````
+M`';<`,S,S,S,S'8`````````_`#,S,S,S,QV`````!@8````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso04-vga9-8x8.fnt b/share/syscons/fonts/iso04-vga9-8x8.fnt
new file mode 100644
index 0000000..53b81a2
--- /dev/null
+++ b/share/syscons/fonts/iso04-vga9-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso04-vga9-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````````````!@\/!@8
+M`!@`[F;,``````!L_FQL;/YL&'[;V'X;VWX``,;,&#!FQ@`X;#I^S,QV`#@8
+M<```````#!@P,#`8#``P&`P,#!@P``!L./XX;````!@8?A@8````````.!AP
+M`````/X````````````8&``&#!@8,&#``'S&SM;FQGP`&'@8&!@8?@!\QHPX
+M8,+^`'S&!CP&QGP`'#QLS/X,'@#^P/P&!L9\`'S&P/S&QGP`_L8&#!@P,`!\
+MQL9\QL9\`'S&QGX&QGP``!@8`!@8````&!@`&!AP```8,&`P&`````#^`/X`
+M````,!@,&#```'S&S!@8`!@`?,;&WMS`?@`X;,;&_L;&`/QF9GQF9OP`/&;"
+MP,)F/`#X;&9F9FSX`/YF8'Q@9OX`_F9@?&!@\`!\QL#.QL9\`,;&QO[&QL8`
+M/!@8&!@8/``\&!@8V-AP`,;,V/#8S,8`\&!@8&)F_@#&QN[^UL;&`,;F]M[.
+MQL8`?,;&QL;&?`#\9F9\8&#P`'S&QM;6?`8`_&9F?'AFY@!\QL!\!L9\`/_;
+MF1@8&#P`QL;&QL;&?`#&QL;&;#@0`,;&UM;^[FP`QL9L.&S&Q@!F9F8\&!@\
+M`/[&C#ABQOX`?&!@8&!@?`#`8#`P&`P&`'P,#`P,#'P`.&S&````````````
+M``#_`#@P&`````````!X#'S,=@#@8'QF9F;\````>,S`S'@`#@Q\S,S,?@``
+M`'S&_L!\`!PV,/PP,'@``';,S'P,^```X&!\9F;F&!@`.!@8&#P,#``<#`S,
+M>`#@8&9L>&SF`#@8&!@8&#P```#L_M;6Q@```-QF9F9F````?,;&QGP``-QF
+M9GQ@\```=LS,?`X.````W&9@8/````!\P'P&_``P,/PP,#8<````S,S,S'8`
+M``#&QFPX$````,;6UOYL````QFPX;,8```#,S'P,^````/Z,.&+^``X8&'`8
+M&`X8&!@8&!@8&`!P&!@.&!AP`';<`````````````````'P`?,;&_L;&#!A\
+MQL;^QL9\@GS&QO[&QL9\?,;&_L;&QCALQL;^QL8X;#ALQO[&Q@`^>-C^V-C>
+M>#`P,#!X,!QL.'S&P,#&?`X8_F)X8&;^_F9@>&!F_AQL_F9@?&!F_AC^9F!\
+M8&;^#!@\&!@8&#P\0CP8&!@8/#P`/!@8&!@\`/AL9O;V;/C&YO;>SL8,.'P`
+M?,;&QL9\QLSXV,S&##A\@GS&QL;&?';<?,;&QL9\QGS&QL;&QGP``,9L.&S&
+M``-^SM[6]N;\QL;&QL9\,!X<,,;&QL;&?#AL`,;&QL9\Q@#&QL;&QGQVW`#&
+MQL;&?'P`QL;&QL9\`'S&_,;&_,````````#&_CALQO[&SA@.````YFQX;.;\
+M9GYL9N88<`!"/&9F/$(`=MPX&!@8&#SP8&!B9OX8<#QF.&QL.,QX9@``````
+M``!L.'S`?`;&?'P`_F!\8&;^/&;`SF8^&'``_YD>/'@8/```````/```;#C^
+MC!@R9OY\`````````#AL;#@```````!X#'S,=@\````````0'```W'9F\##@
+M&#``````````=MP`.!@8/#@8&!@8/!AP;#@````````````````$'`!L.'S`
+M?`;\`'P`?,;^P'PX8#!^S'P,^``P,/PP.'8<`-S^]L;&QMQL.`#^C#AB_@``
+MW/[VQ@8<````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````````````````````````````````````````!\`'@,?,QV
+M#!@@>`Q\S'8`>(1X#'S,=FPX`'@,?,QV`,P`>`Q\S'8`.&QX#'S,=@```&X[
+M?MA^&``X&!@\&`X`S'AXS,#,>`P8`'S&_L!\``!\QO[`>AX`;`!\QO[`?``X
+M`'S&_L!\#!@@.!@8&#P`/$(X&!@8/``\`#@8&!@\``P^#'S,S'8``-SFQL88
+M<`!\`'S&QL9\`.!F;'ALYAQ\Q@!\QL;&?';<`'S&QL9\`&P`?,;&QGP``!@`
+M?@`8```&?,[6YGS```#,S,Q^,!P,&"#,S,S,=GC,`,S,S,QV`,P`S,S,S'9V
+7W`#,S,S,=@!X`,S,S,QV&```````````
+`
+end
diff --git a/share/syscons/fonts/iso04-vga9-wide-8x16.fnt b/share/syscons/fonts/iso04-vga9-wide-8x16.fnt
new file mode 100644
index 0000000..7f78bb7
--- /dev/null
+++ b/share/syscons/fonts/iso04-vga9-wide-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso04-vga9-wide-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\/!@8&!@`
+M&!@```#N[F;,`````````````````&QL;/[^;&QL_OYL;&P``!A^V]OH>#P>
+M%QO;VWX8&```YJ;L#!@8,#!@;LK.`````#AL;&PX.&W-QL;+<P```#@X&#``
+M````````````````#!@8,#`P,#`P,!@8#````#`8&`P,#`P,#`P8&#``````
+M``!F9CS__SQF9@```````````!@8?GX8&``````````````````````X.!@P
+M``````````!^?@```````````````````````#@X``````8&#`P8&#`P8&#`
+MP`````!\QL[.UM;6UN;FQGP`````&#AX&!@8&!@8&!A^`````#QFP\,#!@P8
+M,&##_P````#^Q@P8/`8#`P/#9CP`````'!P\/&QLS,W_#0P>`````/[`P,#\
+MYL,#`\-F/``````\9L;`_.;#P\/#9CP`````_L8&#`P8&#`P,#`P`````#QF
+MP\-F/&;#P\-F/``````\9L/#P\-G/P-C9CP``````````#@X`````#@X````
+M```````X.``````X.!@P````!@P8,&!@,!@,!@```````````'Y^`'Y^````
+M``````!@,!@,!@8,&#!@```````\9L/#`P8,&!@`&!@```````!^P\/?V]O>
+MP,!\`````!`X?.[&QO[&QL;&Q@````#^8V-C8WYC8V-C8_X`````/&;#P\#`
+MP,##PV8\`````/QF8V-C8V-C8V-F_`````#_8V%@9'QD8&!A8_\`````_V-A
+M8&1\9&!@8&#X`````#QFP\/`P,_#P\-F/`````#&QL;&QO[&QL;&QL8`````
+M/!@8&!@8&!@8&!@\``````\&!@8&!@8&QL;&?`````#C8V9F;'QL9F9C8^,`
+M````\&!@8&!@8&!@86/_`````,/G___;V]O#P\/#PP````#&QN;F]O;>WL[.
+MQL8`````/&;#P\/#P\/#PV8\`````/YC8V-C8WY@8&!@\``````\9L/#P\/#
+MP\O/?CP&!P``_F-C8V-^;&9F9F;W`````'[#Q\!@/`8#X^/#?@````#_VYD8
+M&!@8&!@8&#P`````QL;&QL;&QL;&QL9\`````,;&QL;&QL;&QGPX$`````##
+MP\/#V]O;V]O_9F8`````QL9L;#@X.#AL;,;&`````,/#P\/G?CP8&!@8/```
+M``#^QHP,&!@P,&!BQOX`````/#`P,#`P,#`P,#`\`````,#`8&`P,!@8#`P&
+M!@`````\#`P,#`P,#`P,##P`````&#QFPP``````````````````````````
+M`````/\``#@X,!@``````````````````````'P&?L;&QL9[`````.!@8&!^
+M8V-C8V-CW@``````````?,;`P,#`QGP`````#@8&!G[&QL;&QL9[````````
+M``!\QL;^P,#&?``````\9F9@\&!@8&!@8/```````````'O&QL;&QGX&QGP`
+M`.!@8&!^8V-C8V-CXP``````&!@`.!@8&!@8&#P```````P,`!P,#`P,#`S,
+MS'@``.!@8&!F9FQX;&9FY@`````X&!@8&!@8&!@8&#P``````````.;_V]O;
+MP\/#``````````#<9F9F9F9F9@``````````?,;&QL;&QGP``````````-YC
+M8V-C8V-^8/````````![QL;&QL;&?@8/````````WG-C8&!@8/``````````
+M`'S&P'`<!L9\```````P,##\,#`P,#`V'```````````QL;&QL;&QGL`````
+M`````,;&QL;N?#@0``````````##P]O;V]O_9@``````````QNY\.#A\[L8`
+M`````````,/#9F8\&!@P,.````````#^Q@P8,&#&_@`````.&!@8&'!P&!@8
+M&`X`````&!@8&!@8&!@8&!@8`````'`8&!@8'AX8&!@8<`````!VW```````
+M````````````````````````````````?!`X?.[&QO[&QL;&Q@``#!@@.'SN
+MQL;^QL;&QL8``#AL$#A\[L;&_L;&QL;&``!VW!`X?.[&QO[&QL;&Q@``;&P0
+M.'SNQL;^QL;&QL8``#AL.`!\[L;&_L;&QL;&`````#]LS,S,_\S,S,S,SP``
+M```\&!@8&!@8&!@8&#PP'F8\/&;#P\#`P,##PV8\```.&/]C86!D?&1@8&%C
+M_P````#_8V%@9'QD8&!A8_\8#V8D_V-A8&1\9&!@86/_```8&/]C86!D?&1@
+M8&%C_P``#A@\&!@8&!@8&!@8&#P``#QF`#P8&!@8&!@8&!@\``!^`#P8&!@8
+M&!@8&!@8/`````#\9F-C8_/S8V-C9OP`````QL;FYO;VWM[.SL;&#'A^`#QF
+MP\/#P\/#P\-F/`````#C8V9F;'QL9F9C8^,&/#QF`#QFP\/#P\/#PV8\``!V
+MW``\9L/#P\/#P\-F/```9F8\9L/#P\/#P\/#9CP``````````,9L.#ALQ@``
+M`````3UFQ\O+V]O;T]-FO(````#&QL;&QL;&QL;&QGP9#A@PQL;&QL;&QL;&
+MQL9\```X;`#&QL;&QL;&QL;&?```QL8`QL;&QL;&QL;&QGP``';<`,;&QL;&
+MQL;&QL9\``#^`,;&QL;&QL;&QL;&?`````!\QL;&W,;#P\/#QLS`````````
+M``````````##_P```!`X?.[&QO[&QL;&SA@/````````YFQX>&QFY@``````
+M_F-C8V-^;&9F9F;W&/``````@L9\QL;&QGS&@@``=MP`/!@8&!@8&!@8&#P`
+M````\&!@8&!@8&!@86/_#CP``'S&8#ALQL9L.`S&?````&QL````````````
+M`````&8\?L/'P&`\!@/CX\-^``!^`/]C86!D?&1@8&%C_P`````\9L/#P,#/
+MP\/#9CP,>```_]N9&!L>/'C8&!@\``````````````!\?```````;#C^QHP,
+M&!@P,&!BQOX``'P`````````````````````.&QL.```````````````````
+M````?`9^QL;&QGL8#P``````````````````,!X```````#><V-@8&!@\!CP
+M#!@P`````````````````````';<`#@8&!@8&!@\`````#@8&!@8&!@8&!@8
+M/`QX`&PX```````````````````````````````````,>`````!L.`!\QL!P
+M'`;&?````````'P`?,;&_L#`QGP`````/&`P`'O&QL;&QGX&QGP````P,##\
+M,#QX\#`V'`````#<_N;&QL;&QL;&QMP``````&PX`/[&#!@P8,;^````````
+M`-S^YL;&QL;&!AP`````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````?`!\!G[&QL;&>P``
+M```,&#``?`9^QL;&QGL`````$#AL`'P&?L;&QL9[``````!VW`!\!G[&QL;&
+M>P``````;&P`?`9^QL;&QGL`````.&PX`'P&?L;&QL9[``````````!N&QM_
+MV-C8;P``````&!@`.!@8&!@8&#PP'````&PX`'S&P,#`P,9\``````P8,`!\
+MQL;^P,#&?```````````?,;&_L#`QGPP'@```&QL`'S&QO[`P,9\`````!`X
+M$`!\QL;^P,#&?``````,&#``.!@8&!@8&#P`````$#AL`#@8&!@8&!@\````
+M````?``X&!@8&!@8/``````.!G\&?L;&QL;&QGL``````````-QF9F9F9F9F
+M#'@`````?`!\QL;&QL;&?`````#@8&!@9F9L>&QF9N88\```$#AL`'S&QL;&
+MQL9\``````!VW`!\QL;&QL;&?```````;&P`?,;&QL;&QGP``````````!@8
+M`'X`&!@```````````9\SM[6UO;F?,``````````QL;&QL;&QGM@/```#!@P
+M`,;&QL;&QL9[`````!`X;`#&QL;&QL;&>P``````;&P`QL;&QL;&QGL`````
+M`';<`,;&QL;&QL9[````````?`#&QL;&QL;&>P```!@8````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso04-wide-8x16.fnt b/share/syscons/fonts/iso04-wide-8x16.fnt
new file mode 100644
index 0000000..e216b5b
--- /dev/null
+++ b/share/syscons/fonts/iso04-wide-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso04-wide-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\/!@8&!@`
+M&!@```#N[F;,`````````````````&QL;/[^;&QL_OYL;&P``!A^V]OH>#P>
+M%QO;VWX8&```YJ;L#!@8,#!@;LK.`````#AL;&PX.&W-QL;+<P```#@X&#``
+M````````````````#!@8,#`P,#`P,!@8#````#`8&`P,#`P,#`P8&#``````
+M``!F9CS__SQF9@```````````!@8?GX8&``````````````````````X.!@P
+M``````````!^?@```````````````````````#@X``````8&#`P8&#`P8&#`
+MP`````!\QL[.UM;6UN;FQGP`````&#AX&!@8&!@8&!A^`````#QFP\,#!@P8
+M,&##_P````#^Q@P8/`8#`P/#9CP`````'!P\/&QLS,W_#0P>`````/[`P,#\
+MYL,#`\-F/``````\9L;`_.;#P\/#9CP`````_L8&#`P8&#`P,#`P`````#QF
+MP\-F/&;#P\-F/``````\9L/#P\-G/P-C9CP``````````#@X`````#@X````
+M```````X.``````X.!@P````!@P8,&!@,!@,!@```````````'Y^`'Y^````
+M``````!@,!@,!@8,&#!@```````\9L/#`P8,&!@`&!@```````!^P\/?V]O>
+MP,!\`````!`X?.[&QO[&QL;&Q@````#^8V-C8WYC8V-C8_X`````/&;#P\#`
+MP,##PV8\`````/QF8V-C8V-C8V-F_`````#_8V%@9'QD8&!A8_\`````_V-A
+M8&1\9&!@8&#X`````#QFP\/`P,_#P\-F/`````#&QL;&QO[&QL;&QL8`````
+M/!@8&!@8&!@8&!@\``````\&!@8&!@8&QL;&?`````#C8V9F;'QL9F9C8^,`
+M````\&!@8&!@8&!@86/_`````,/G___;V]O#P\/#PP````#&QN;F]O;>WL[.
+MQL8`````/&;#P\/#P\/#PV8\`````/YC8V-C8WY@8&!@\``````\9L/#P\/#
+MP\O/?CP&!P``_F-C8V-^;&9F9F;W`````'[#Q\!@/`8#X^/#?@````#_VYD8
+M&!@8&!@8&#P`````QL;&QL;&QL;&QL9\`````,;&QL;&QL;&QGPX$`````##
+MP\/#V]O;V]O_9F8`````QL9L;#@X.#AL;,;&`````,/#P\/G?CP8&!@8/```
+M``#^QHP,&!@P,&!BQOX`````/#`P,#`P,#`P,#`\`````,#`8&`P,!@8#`P&
+M!@`````\#`P,#`P,#`P,##P`````&#QFPP``````````````````````````
+M`````/\``#@X,!@``````````````````````'P&?L;&QL9[`````.!@8&!^
+M8V-C8V-CW@``````````?,;`P,#`QGP`````#@8&!G[&QL;&QL9[````````
+M``!\QL;^P,#&?``````\9F9@\&!@8&!@8/```````````'O&QL;&QGX&QGP`
+M`.!@8&!^8V-C8V-CXP``````&!@`.!@8&!@8&#P```````P,`!P,#`P,#`S,
+MS'@``.!@8&!F9FQX;&9FY@`````X&!@8&!@8&!@8&#P``````````.;_V]O;
+MP\/#``````````#<9F9F9F9F9@``````````?,;&QL;&QGP``````````-YC
+M8V-C8V-^8/````````![QL;&QL;&?@8/````````WG-C8&!@8/``````````
+M`'S&P'`<!L9\```````P,##\,#`P,#`V'```````````QL;&QL;&QGL`````
+M`````,;&QL;N?#@0``````````##P]O;V]O_9@``````````````````````
+M`````````,/#9F8\&!@P,.````````#^Q@P8,&#&_@`````.&!@8&'!P&!@8
+M&`X`````&!@8&!@8&!@8&!@8`````'`8&!@8'AX8&!@8<`````!VW```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````##_P```!`X?.[&QO[&QL;&SA@/````````YFQX>&QFY@``````
+M_F-C8V-^;&9F9F;W&/``````@L9\QL;&QGS&@@``=MP`/!@8&!@8&!@8&#P`
+M````\&!@8&!@8&!@86/_#CP``'S&8#ALQL9L.`S&?````&QL````````````
+M`````&8\?L/'P&`\!@/CX\-^``!^`/]C86!D?&1@8&%C_P`````\9L/#P,#/
+MP\/#9CP,>```_]N9&!L>/'C8&!@\``````````````!\?```````;#C^QHP,
+M&!@P,&!BQOX``'P`````````````````````.&QL.```````````````````
+M````?`9^QL;&QGL8#P``````````````````,!X```````#><V-@8&!@\!CP
+M#!@P`````````````````````';<`#@8&!@8&!@\`````#@8&!@8&!@8&!@8
+M/`QX`&PX```````````````````````````````````,>`````!L.`!\QL!P
+M'`;&?````````'P`?,;&_L#`QGP`````/&`P`'O&QL;&QGX&QGP````P,##\
+M,#QX\#`V'`````#<_N;&QL;&QL;&QMP``````&PX`/[&#!@P8,;^````````
+M`-S^YL;&QL;&!AP``'P0.'SNQL;^QL;&QL8```P8(#A\[L;&_L;&QL;&```X
+M;!`X?.[&QO[&QL;&Q@``=MP0.'SNQL;^QL;&QL8``&QL$#A\[L;&_L;&QL;&
+M```X;#@`?.[&QO[&QL;&Q@`````_;,S,S/_,S,S,S,\`````/!@8&!@8&!@8
+M&!@\,!YF/#QFP\/`P,#`P\-F/```#AC_8V%@9'QD8&!A8_\`````_V-A8&1\
+M9&!@86/_&`]F)/]C86!D?&1@8&%C_P``&!C_8V%@9'QD8&!A8_\```X8/!@8
+M&!@8&!@8&!@\```\9@`\&!@8&!@8&!@8/```?@`\&!@8&!@8&!@8&#P`````
+M_&9C8V/S\V-C8V;\`````,;&YN;V]M[>SL[&Q@QX?@`\9L/#P\/#P\/#9CP`
+M````XV-F9FQ\;&9F8V/C!CP\9@`\9L/#P\/#P\-F/```=MP`/&;#P\/#P\/#
+M9CP``&9F/&;#P\/#P\/#PV8\``````````#&;#@X;,8```````$]9L?+R]O;
+MV]/39KR`````QL;&QL;&QL;&QL9\&0X8,,;&QL;&QL;&QL;&?```.&P`QL;&
+MQL;&QL;&QGP``,;&`,;&QL;&QL;&QL9\``!VW`#&QL;&QL;&QL;&?```_@#&
+MQL;&QL;&QL;&QGP`````?,;&QMS&P\/#P\;,P```````?`!\!G[&QL;&>P``
+M```,&#``?`9^QL;&QGL`````$#AL`'P&?L;&QL9[``````!VW`!\!G[&QL;&
+M>P``````;&P`?`9^QL;&QGL`````.&PX`'P&?L;&QL9[``````````!N&QM_
+MV-C8;P``````&!@`.!@8&!@8&#PP'````&PX`'S&P,#`P,9\``````P8,`!\
+MQL;^P,#&?```````````?,;&_L#`QGPP'@```&QL`'S&QO[`P,9\`````!`X
+M$`!\QL;^P,#&?``````,&#``.!@8&!@8&#P`````$#AL`#@8&!@8&!@\````
+M````?``X&!@8&!@8/``````.!G\&?L;&QL;&QGL``````````-QF9F9F9F9F
+M#'@`````?`!\QL;&QL;&?`````#@8&!@9F9L>&QF9N88\```$#AL`'S&QL;&
+MQL9\``````!VW`!\QL;&QL;&?```````;&P`?,;&QL;&QGP``````````!@8
+M`'X`&!@```````````9\SM[6UO;F?,``````````QL;&QL;&QGM@/```#!@P
+M`,;&QL;&QL9[`````!`X;`#&QL;&QL;&>P``````;&P`QL;&QL;&QGL`````
+M`';<`,;&QL;&QL9[````````?`#&QL;&QL;&>P```!@8````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso05-8x14.fnt b/share/syscons/fonts/iso05-8x14.fnt
new file mode 100644
index 0000000..f1df540
--- /dev/null
+++ b/share/syscons/fonts/iso05-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso05-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW```````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````&QL`/[&P/#`P,;^``````#X8&!@?&9F9FP````8,`!^8&!@8&!@8```
+M````?,;`P/C`P,9\``````!\QL9@.`S&QGP`````&``\&!@8&!@8/`````!F
+M`#P8&!@8&!@\```````>#`P,#`S,S'@``````!@X>-C>V]O;W@``````V-C8
+MV/[;V]O>``````#\,#`P/#8V-C8````8,`#,V/#PV,S,S````````````'P`
+M````````*!``QL;&QGX&QGP``````,;&QL;&QOXX.```````/F;&QL;^QL;&
+M``````#^P,#\QL;&QOP``````/S&QL;\QL;&_```````_L;`P,#`P,#`````
+M```\;&QL;&QL;/[&@@```/[&P,#PP,#&_@``````UM;65'S6UM;6``````!\
+MQ@8<!@;&QGP``````,;&QL[>]N;&Q@`````,VL;&SM[VYL;&``````#&S-CP
+M\-C,QL8``````!XV9L;&QL;&Q@``````@L;&[N[^UL;&``````#&QL;&_L;&
+MQL8``````'[&QL;&QL;&_```````_L;&QL;&QL;&``````#\QL;&QOS`P,``
+M`````'S&QL#`P,;&?```````?GY:&!@8&!@8``````#&QL;&QGX&QGP`````
+M`'S6UM;6UGP0.```````QL9L.#ALQL;&``````#,S,S,S,S,S/X"!@```,;&
+MQL;&?@8&!@````#6UM;6UM;6UM;^`````-;6UM;6UM;6UOX"!@```.#@8'QF
+M9F9F?```````QL;&YK:VMK;F``````#`P,#\QL;&QOP``````'S&!AX&!L;&
+M?```````G+:VMO:VMK:<``````!^QL;&QGXV9L8``````````'S&QO[&Q@``
+M````````_L#\QL;\``````````#\QOS&QOP``````````/["P,#`P```````
+M````/&QL;&S^QH(```````!\QOS`QGP``````````-;6?-;6U@``````````
+M?,8<!L9\``````````#&SM[VYL8````````,&,;.WO;FQ@``````````QLSX
+MV,S&```````````^9F9F9L8``````````,;N_M;&Q@``````````QL;&_L;&
+M``````````!^QL;&QOP``````````/[&QL;&Q@``````````_,;&QL;\P,``
+M``````!\QL#`QGP``````````'Y:&!@8&```````````QL;&QL9^!GP`````
+M`!!\UM;6UGP0.````````,9L.#ALQ@``````````S,S,S,S^!@P```````#&
+MQL9^!@8``````````-;6UM;6_@``````````UM;6UM;^`@8```````#@8'QF
+M9GP``````````,;&YK:VY@``````````P,#\QL;\``````````!\QAX&QGP`
+M`````````)RVMO:VG```````````?L9^-F;&``````"(BLWJN)B+B(L`````
+M`&QL`'S&_,#&?```````8&#X8'QF9F9F#``````8,`!\8&!@8&``````````
+M`'S&\,#&?```````````?,9P',9\```````0$``X&!@8&#P``````"@H`#@8
+M&!@8/```````!`0`#@8&!@9F9CP````````X>-[;V]X``````````-C8_MO;
+MW@``````,##\,#PV-C8V```````8,`#,V/#8S,P`````?,9@.&S&QFPX#,9\
+=````*!``QL;&QL9^!GP```````#&QL;^.#@`````
+`
+end
diff --git a/share/syscons/fonts/iso05-8x16.fnt b/share/syscons/fonts/iso05-8x16.fnt
new file mode 100644
index 0000000..3fdaa20
--- /dev/null
+++ b/share/syscons/fonts/iso05-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso05-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\`````````````````````````````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M``````````````!F9@#^QL#`\,#`QOX```````#X8&!@?&9F9F9L`````!@P
+M`'Y@8&!@8&!@8````````#QFP,#XP,#`9CP```````!\QL9@.`P&QL9\````
+M```8`#P8&!@8&!@8/```````9@`\&!@8&!@8&#P````````>#`P,#`S,S,QX
+M````````&#AXV-C>V]O;W@```````-C8V-C8_MO;V]X```````#\,#`P/#8V
+M-C8V`````!@P`,;,V/#XS,;&Q@``````````````?```````````*!``QL;&
+MQGX&!L9\````````QL;&QL;&QOXX.````````#YFQL;&_L;&QL8```````#^
+MP,#`_,;&QL;\````````_,;&QOS&QL;&_````````/[&P,#`P,#`P,``````
+M```\;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````-;6UE1\UM;6UM8`
+M``````!\Q@8&'`8&QL9\````````QL;&QL[>]N;&Q@``````#-K&QL;.WO;F
+MQL8```````#&S-CP\-C,QL;&````````'C9FQL;&QL;&Q@```````,;&[N[^
+M_M;6QL8```````#&QL;&_L;&QL;&````````?L;&QL;&QL;&_````````/[&
+MQL;&QL;&QL8```````#\QL;&QL;\P,#`````````?,;&P,#`P,;&?```````
+M`'Y^6A@8&!@8&!@```````#&QL;&QL9^!L9\````````?-;6UM;6UGP0.```
+M`````,;&;#@X;,;&QL8```````#,S,S,S,S,S,S^`@8$````QL;&QL9^!@8&
+M!@```````-;6UM;6UM;6UOX```````#6UM;6UM;6UM;^`@8$````X.!@8'QF
+M9F9F?````````,;&QL;FMK:VMN8```````#`P,#`_,;&QL;\````````>,P&
+M!AX>!@;,>````````)RVMK;VMK:VMIP```````!^QL;&QGXV9L;&````````
+M````?,;&QO[&Q@```````````/[`_,;&QOP```````````#\QL;\QL;\````
+M````````_L;"P,#`P````````````#QL;&QL;/[&@@````````!\QL;\P,9\
+M````````````UM;6?-;6U@```````````'S&!AP&QGP```````````#&QL[>
+M]N;&``````````P8QL;.WO;FQ@```````````,;,V/C8S,8````````````^
+M9F9F9F;&````````````QN[^UL;&Q@```````````,;&QO[&QL8`````````
+M``!^QL;&QL;\````````````_L;&QL;&Q@```````````/S&QL;&QOS`P,``
+M``````!\QL#`PL9\````````````?EH8&!@8&````````````,;&QL;&QGX&
+MQGP``````!!\UM;6UM9\$#@`````````QFPX.&S&Q@```````````,S,S,S,
+MS/X&#`````````#&QL;&?@8&````````````UM;6UM;6_@```````````-;6
+MUM;6UOX"!@0```````#@8'QF9F9\````````````QL;FMK:VY@``````````
+M`,#`_,;&QOP```````````!\Q@8>!L9\````````````G+:V]K:VG```````
+M`````'[&QGXV9L8```````"(BLWJN)B+B(N(````````;&P`?,;&_,#&?```
+M`````&!@8/A@?&9F9F8,```````8,`!\8&!@8&!@````````````?,;`\,#&
+M?````````````'S&8#@,QGP````````0$``X&!@8&!@\````````*"@`.!@8
+M&!@8/`````````0$``X&!@8&!@9F9CP````````8.'C>V]O>````````````
+MV-C8_MO;W@```````#`P,/PP/#8V-C8````````8,`#$S-CPV,S,``````!\
+MQF`X;,;&;#@,QGP``````"@0`,;&QL;&QGX&QGP```````#&QL;&_C@X````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso05-8x8.fnt b/share/syscons/fonts/iso05-8x8.fnt
new file mode 100644
index 0000000..e34a79b
--- /dev/null
+++ b/share/syscons/fonts/iso05-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso05-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````&8`?F!\8'X`^&!@?&9F;``8
+M?F!@8&!@`#QFP/C`9CP`>,S@<!S,>``P>#`P,#!X`$AX,#`P,'@`'@P,#,S,
+M>``X>-C>V]O>`-C8V/[;V]X`_#`P/#8V-@`8ULSX^,S&`````'@`````&&9F
+M/@9F/`#&QL;&_C@X`!XV9F9^9F8`?&!@?&9F?`!\9F9\9F9\`'Y@8&!@8&``
+M.&QL;&QL_L9^8&!\8&!^`-O;?CQ^V]L`/&8&'`9F/`!F9FY^=F9F`#QF;GYV
+M9F8`9FQX<'AL9@`>-F9F9F9F`,;N_O[6QL8`9F9F?F9F9@`\9F9F9F8\`'YF
+M9F9F9F8`?&9F9GQ@8``\9F!@8&8\`'X8&!@8&!@`9F9F/@9F/`!^V]O;?A@8
+M`&9F/!@\9F8`9F9F9F9F?P-F9F8^!@8&`-O;V]O;V_\`V]O;V]O;_P/@8&!\
+M9F9\`,;&QO;>WO8`8&!@?&9F?`!XC`8^!HQX`,[;V_O;V\X`/F9F9CXV9@``
+M`'@,?,QV```\8#QF9CP```!\9GQF?````'Y@8&!@````/&QL;/[&```\9GY@
+M/````-M^/'[;````/&8,9CP```!F;GYV9@``&&9N?G9F````9FQX;&8````>
+M-F9F9@```,;^_M;&````9F9^9F8````\9F9F/````'YF9F9F````?&9F?&``
+M```\9F!F/````'X8&!@8````9F8^!CP```!^V]M^&````&8\&#QF````9F9F
+M9G\#``!F9CX&!@```-O;V]O_````V]O;V_\#``#@8'QF?````,;&]M[V````
+M8&!\9GP```!\!CX&?````,[;^]O.````/F8^-F8`BLWJN)N(BP`D`#QF?F`\
+M`&!@^&!\9F8,&`!^8&!@8````'S`^,!\````?,!X#/@`(`!P,#`P>`!0`'`P
+M,#!X``@`'`P,S,QX```X>-[;W@```-C8_MO>`#`P_#`\-C8`&!#,V/#8S`!^
+7P'S&?`;\`!@`9F8^!CP```#&QOXX.```
+`
+end
diff --git a/share/syscons/fonts/iso07-8x14.fnt b/share/syscons/fonts/iso07-8x14.fnt
new file mode 100644
index 0000000..e89426b
--- /dev/null
+++ b/share/syscons/fonts/iso07-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso07-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````&#P\/!@8`!@8`````&9F9B0```````````````!L
+M;/YL;/YL;````!@8?,;"P'P&AL9\&!@`````PL8<.&#&A@```````#AL;#AV
+MW,S,=@`````P,#!@```````````````,&#`P,#`P&`P``````#`8#`P,#`P8
+M,```````````9CS_/&8````````````8&'X8&````````````````!@8&#``
+M``````````#^````````````````````&!@````````"!@P8,&#`@```````
+M.&S&QM;&QFPX```````8.'@8&!@8&'X``````'S&!@P8,&#&_@``````?,8&
+M!CP&!L9\```````,'#QLS/X,#!X``````/[`P,#\!@;&?```````.&#`P/S&
+MQL9\``````#^Q@8&#!@P,#```````'S&QL9\QL;&?```````?,;&QGX&!@QX
+M`````````!@8```8&```````````&!@``!@8,`````````8,&#`P&`P&````
+M``````!^``!^``````````!@,!@,#!@P8```````?,;&#!@8`!@8``````!\
+MQL;&WM[<P'P``````!`X;,;&_L;&Q@``````_&9F9GQF9F;\```````\9L+`
+MP,#"9CP``````/AL9F9F9F9L^```````_F9B:'AH8F;^``````#^9F)H>&A@
+M8/```````#QFPL#`WL9F.@``````QL;&QO[&QL;&```````\&!@8&!@8&#P`
+M`````!X,#`P,S,S,>```````YF9F;'AL9F;F``````#P8&!@8&!B9OX`````
+M`,;N_O[6QL;&Q@``````QN;V_M[.QL;&``````!\QL;&QL;&QGP``````/QF
+M9F9\8&!@\```````?,;&QL;&UMY\#`X```#\9F9F?&QF9N8``````'S&QF`X
+M#,;&?```````?GY:&!@8&!@\``````#&QL;&QL;&QGP``````,;&QL;&QFPX
+M$```````QL;&UM;6_NYL``````#&QFQ\.'QLQL8``````&9F9F8\&!@8/```
+M````_L:&#!@P8L;^```````\,#`P,#`P,#P``````(#`X'`X'`X&`@``````
+M/`P,#`P,#`P\```0.&S&``````````````````````````````#_8#`8````
+M``````````````````!X#'S,S'8``````.!@8'AL9F9F?```````````?,;`
+MP,9\```````<#`P\;,S,S'8``````````'S&_L#&?```````'#8R,'@P,#!X
+M`````````';,S,S,?`S,>````.!@8&QV9F9FY@``````&!@`.!@8&!@\````
+M```&!@`.!@8&!F9F/````.!@8&9L>&QFY@``````.!@8&!@8&!@\````````
+M``#L_M;6UL8``````````-QF9F9F9@``````````?,;&QL9\`````````-QF
+M9F9F?&!@8```````=LS,S,Q\#`P,````````W'9F8&#P``````````!\QG`<
+MQGP``````!`P,/PP,#`V'```````````S,S,S,QV``````````#&QL;&;#@`
+M`````````,;&UM;^;```````````QFPX.&S&`````````,;&QL;&?@8,^```
+M`````/Z,.'#&_@``````#A@8&'`8&!@.```````8&!@8&!@8&!@``````'`8
+M&!@.&!@8<````';<````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````P8&`P``````````````P&!@P``````````````#AL9&#P8&!@[/P`
+M```````````````````````````````````````````8&!@8&``8&!@8&```
+M`'S&8#ALQFPX#,9\``!F9@```````````````!AFPYFAH9G#9A@`````````
+M`````````````````````#9LV&PV````````````_P,#``````````````!^
+M````````````````````````````````````_P`````````X;&PX````````
+M````````&!A^&!@`?@``````/&8,&#)^`````````#QF!AX&9CP`````````
+M!@P8```````````````&#!C#````````````````P)"X;,;&_L;&Q@```!@8
+M``````````````````"_L3`P/C`Q,3\``````+.S,S,_,S,S,P``````O)@8
+M&!@8&!@\````````V&PV;-@``````````)ZS,S,S,S,S'@```&#@8F9L&#!@
+MW(8,&#X```"SLS,S'@P,#!X``````)ZS(2$A(3,2,P````P(`&8`&!@8&!@.
+M```````0.&S&QO[&QL8``````/QF9F9\9F9F_```````_F)@8&!@8&#P````
+M```0.&S&QL;&QOX``````/YF8FAX:&)F_@``````_L:&#!@P8L;^``````#&
+MQL;&_L;&QL8``````'S&QL;^QL;&?```````/!@8&!@8&!@\``````#F9F9L
+M>&QF9N8``````!`X;,;&QL;&Q@``````QN[^_M;&QL;&``````#&YO;^WL[&
+MQL8``````/Z"``!\``""_@``````?,;&QL;&QL9\``````#^QL;&QL;&QL8`
+M`````/QF9F9\8&!@\`````````````````````````#^P&`P&#!@P/X`````
+M`'Y^6A@8&!@8/```````9F9F9CP8&!@\```````\&'Z9F7X8&#P``````,;&
+M;'PX?&S&Q@``````&-O;V]M^&!@\```````\9L/#P\-F).<`````PQ@8&!@8
+M&!@8&````,,`9F9F9CP8&!@\```````X$`![SLS,S'L`````.!``?,;`>,#&
+M?```````.!``W&9F9F9F!@8````X$``8&!@8&`X`````&,,``.=F9F9F/```
+M````````>\[,S,Q[``````!\QL;&_,;&QOS`P```````PV8\&#QF0F8\``!\
+M8#`8>,S,S,QX`````````'S&P'C`QGP```#\#!@P8,#`P,!X#`QX````````
+MW&9F9F9F!@8````^8V-C?V-C8SX``````````!@8&!@8#@``````````YFQX
+M;&;F```````X;`P,##9F9F8``````````&9F9F9F?V!@````````@L;&;&PX
+M````_&#`>#!@P,#`?`8&?````````'S&QL;&?```````````_V9F9F9F````
+M```````\9F9F9GQ@8````````#YCP&`X#,9\````````?\S,S,QX````````
+M``!\,#`P-AP``````````.=F9F9F/```````````7-;6UM9\$!````````#&
+M;#@X;,8``````````-;6UM;6?!`0````````9L/#V_]F``````##```8&!@8
+M&`X``````,,``.=F9F9F/```````.!``?,;&QL9\```````X$`#G9F9F9CP`
+=`````#@0`&;#P]O_9@``````````````````````
+`
+end
diff --git a/share/syscons/fonts/iso07-8x16.fnt b/share/syscons/fonts/iso07-8x16.fnt
new file mode 100644
index 0000000..932b19e
--- /dev/null
+++ b/share/syscons/fonts/iso07-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso07-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P```#`8#```````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````<-C(P>#`P,#!X````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````QL;&QL9L.````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'```````';<````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````,&!@,`````````````````P&!@P````````````````X
+M;&1@\&!@8&#L_```````````````````````````````````````````````
+M````&!@8&!@``!@8&!@8`````'S&8#ALQL9L.`S&?````&9F````````````
+M````````&&;#F:&AF<-F&````````````````````````````````````#9L
+MV&PV``````````````#_`P,`````````````````?@``````````````````
+M``````````````````````#_````````````.&QL.``````````````````8
+M&'X8&`!^```````````\9@P8,GX````````````\9@8>!F8\````````````
+M!@P8``````````````````8,&,,`````````````````P)"X;,;&_L;&QL8`
+M`````!@8````````````````````O[$P,#XP,#$Q/P```````+.S,S,_,S,S
+M,P````````"\F!@8&!@8&!@\``````````#8;#9LV````````````)ZS,S,S
+M,S,S'@````````!@X&)F;!@P8-R&#!@>````L[,S,QX,#`P,'@```````)ZS
+M(2$A(2$S$C,`````#`@`9@`8&!@8&!@.````````$#ALQL;^QL;&Q@``````
+M`/QF9F9\9F9F9OP```````#^8F!@8&!@8&#P````````$#ALQL;&QL;&_@``
+M`````/YF8FAX:&!B9OX```````#^QH8,&#!@PL;^````````QL;&QO[&QL;&
+MQ@```````'S&QL;^QL;&QGP````````\&!@8&!@8&!@\````````YF9F;'AX
+M;&9FY@```````!`X;,;&QL;&QL8```````#&[O[^UL;&QL;&````````QN;V
+M_M[.QL;&Q@```````/Z"``!\````@OX```````!\QL;&QL;&QL9\````````
+M_L;&QL;&QL;&Q@```````/QF9F9\8&!@8/``````````````````````````
+M````_L!@,!@8,&#`_@```````'Y^6A@8&!@8&#P```````!F9F9F/!@8&!@\
+M````````/!A^F9F9?A@8/````````,;&;'PX.'QLQL8````````8V]O;V]M^
+M&!@\````````/&;#P\/#PV8DYP``````PQ@8&!@8&!@8&!@`````PP!F9F9F
+M/!@8&!@\````````.!``>\[,S,S,>P```````#@0`'S&P'C`QGP````````X
+M$`#<9F9F9F9F!@8&````.!``&!@8&!@8#@``````&,,``.=F9F9F9CP`````
+M``````![SLS,S,Q[````````?,;&QL;\QL;&_,#`P````````,-F/!@\9D)F
+M/````'Q@,!AXS,S,S,QX````````````?,;`>,#&?````````/P,&#!@P,#`
+MP'@,#'@```````#<9F9F9F9F!@8&````/F-C8W]C8V-C/@```````````!@8
+M&!@8&`X```````````#F;'AX;&;F````````.&P,#`PV9F9F9@``````````
+M`&9F9F9F9G]@8&````````""QL9L;#@X````````_&#`>#!@P,#`?`8&/```
+M`````'S&QL;&QGP```````````#_9F9F9F9F````````````/&9F9F9F?&!@
+M8````````#YCP,!@.`S&?`````````!_S,S,S,QX````````````?#`P,#`V
+M'````````````.=F9F9F9CP```````````!<UM;6UM9\$!`0````````QFPX
+M.#ALQ@```````````-;6UM;6UGP0$!````````!FP\/#V_]F````````PP``
+M&!@8&!@8#@```````,,``.=F9F9F9CP````````X$`!\QL;&QL9\````````
+M.!``YV9F9F9F/````````#@0`&;#P\/;_V8`````````````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso07-8x8.fnt b/share/syscons/fonts/iso07-8x8.fnt
new file mode 100644
index 0000000..956b399
--- /dev/null
+++ b/share/syscons/fonts/iso07-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso07-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````&#P\&!@`
+M&`!F9B0``````&QL_FS^;&P`&#Y@/`9\&```QLP8,&;&`#AL.';<S'8`&!@P
+M```````,&#`P,!@,`#`8#`P,&#```&8\_SQF````&!A^&!@`````````&!@P
+M````?@```````````!@8``8,&#!@P(``.&S&UL9L.``8.!@8&!A^`'S&!APP
+M9OX`?,8&/`;&?``</&S,_@P>`/[`P/P&QGP`/&#`_,;&?`#^Q@8,&#`P`'S&
+MQGS&QGP`?,;&?@8,>```&!@``!@8```8&```&!@P!@P8,!@,!@```'X``'X`
+M`&`P&`P8,&``?,8,&!@`&`!\QM[>WL!X`#ALQO[&QL8`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CH`QL;&_L;&Q@`\
+M&!@8&!@\`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@!\QL;&QL9\`/QF9GQ@8/``?,;&QL;.?`[\9F9\;&;F`#QF,!@,9CP`?EH8
+M&!@8/`#&QL;&QL9\`,;&QL;&;#@`QL;&UM;^;`#&QFPX;,;&`&9F9CP8&#P`
+M_L:,&#)F_@`\,#`P,#`\`,!@,!@,!@(`/`P,#`P,/``0.&S&````````````
+M``#_,!@,`````````'@,?,QV`.!@8'QF9MP```!\QL#&?``<#`Q\S,QV````
+M?,;^P'P`/&9@^&!@\````';,S'P,^.!@;'9F9N8`&``X&!@8/``&``8&!F9F
+M/.!@9FQX;.8`.!@8&!@8/````.S^UM;&````W&9F9F8```!\QL;&?````-QF
+M9GQ@\```=LS,?`P>``#<=F!@\````'[`?`;\`#`P_#`P-AP```#,S,S,=@``
+M`,;&QFPX````QM;6_FP```#&;#ALQ@```,;&QGX&_```?DP8,GX`#A@8<!@8
+M#@`8&!@8&!@8`'`8&`X8&'``=MP`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````#!`,```````#`(,```````\
+M9F#X8&;^```````````````````````8&!@`&!@8`'[`?,9\!OP`9@``````
+M```X1+JBND0X```````````````S9LQF,P````#_`P```````'P`````````
+M``````````#_`````#AL.```````,##\,#``_``P2!`@>````'`(,`AP````
+M"!`````````(TP```````%RV8W]C8V,`&!@```````!?D!`>$!`?`+.S,S\S
+M,S,`7HP,#`P,'@``S&8S9LP``%RV8V-C-AP`0,!,4@0('@"SLS,>#`P>`%RV
+M8V,V%'<`"-,`,#`P/``X;,;^QL;&`/QF9GQF9OP`_L#`P,#`P``0.&S&QL;^
+M`/[`P/S`P/X`_@8,&#!@_@#&QL;^QL;&`'S&QO[&QGP`?A@8&!@8?@#&S-CP
+MV,S&`!`X;,;&QL8`QN[^UL;&Q@#&YO;>SL;&`/[&`#@`QOX`?,;&QL;&?`#_
+M9F9F9F9F`/S&QOS`P,````````````#^P&`P8,#^`'X8&!@8&!@`9F9F/!@8
+M&``0?-;6?!`X`,;&;#ALQL8`$-;6UGP0.``X;,;&;"CN`,,\&!@8&#P`9@!F
+M9CP8/``($';,S,QV``@0?L!\P'X`"!"\9F9F9@8($#`P,#`\``C3`.9F9CP`
+M``!ZS,S,>@!XS-C\QL;\@```QFPX;,9\?C`8?,;&?````'[`?,!^`'X&'#!@
+M/@(<``"\9F9F9@9\QN8^AL9\````,#`P,!P```#&W/#<Q@!\Q@8>-F;&````
+MQL;&YMW```""QL9L.`!^&#`\8#X"'```?,;&QGP```#_9F9F9@```'S&QOS`
+MP```?L#`?`8<``!^V,S,>````/PP,#8<````YF9F9CP````<5M;6?!```,)L
+M.&R&````$-;6UGP0``!$UM;6;`#,`#`P,#`\`&8`YF9F9CP`"!!\QL;&?``(
+7$.9F9F8\``@01-;6UFP`````````````
+`
+end
diff --git a/share/syscons/fonts/iso08-8x14.fnt b/share/syscons/fonts/iso08-8x14.fnt
new file mode 100644
index 0000000..560c46c
--- /dev/null
+++ b/share/syscons/fonts/iso08-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso08-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````8V-C(@``````````````-C9_
+M-C8V?S8V````#`P^8V%@/@-#8SX,#```````86,&#!@S8P``````'#8V'#MN
+M9F8[````,#!@``````````````````P8,#`P,#`8#```````&`P&!@8&!@P8
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````0,&#!@P8$`````````<
+M-F-C:V-C-AP```````P</`P,#`P,/P``````/F,#!@P8,&-_```````^8P,#
+M'@,#8SX```````8.'C9F?P8&#P``````?V!@8'X#`V,^```````<,&!@?F-C
+M8SX``````']C`P8,&!@8&```````/F-C8SYC8V,^```````^8V-C/P,#!CP`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@```````^8V,&#`P`#`P``````#YC
+M8V]O;VQ@/@``````"!PV8V-_8V-C``````!^,S,S/C,S,WX``````!XS86!@
+M8&$S'@``````?#8S,S,S,S9\``````!_,S$T/#0Q,W\``````'\S,30\-#`P
+M>```````'C-A8&!O8S,=``````!C8V-C?V-C8V,``````#P8&!@8&!@8/```
+M````#P8&!@8&9F8\``````!S,S8V/#8V,W,``````'@P,#`P,#$S?P``````
+M8W=_:V-C8V-C``````!C<WM_;V=C8V,``````#YC8V-C8V-C/@``````?C,S
+M,SXP,#!X```````^8V-C8V-K;SX'`````'XS,S,^-C,S<P``````/F-C,!P&
+M8V,^``````!^?EH8&!@8&#P``````&-C8V-C8V-C/@``````8V-C8V-C-AP(
+M``````!C8V-C:VM_-C8``````&9F9CP8/&9F9@``````9F9F9CP8&!@\````
+M``!_8T8,&#!A8W\``````#PP,#`P,#`P/```````0&!P.!P.!P,!```````\
+M#`P,#`P,##P````('#9C`````````````````````````````/\`,!@,````
+M`````````````````#P&/F9F.P``````<#`P/#8S,S,^```````````^8V!@
+M8SX```````X&!AXV9F9F.P``````````/F-_8&,^```````<-C(P?#`P,'@`
+M`````````#MF9F8^!F8\````<#`P-CLS,S-S```````,#``<#`P,#!X`````
+M``8&``X&!@8&9F8\````<#`P,S8\-C-S```````X&!@8&!@8&#P`````````
+M`'9_:VMK:P``````````;C,S,S,S```````````^8V-C8SX``````````&XS
+M,S,^,#!X````````.V9F9CX&!@\```````!N.S,P,'@``````````#YC.`YC
+M/@``````"!@8?A@8&!L.``````````!F9F9F9CL``````````&-C8V,V'```
+M````````8V-K:W\V``````````!C-AP<-F,``````````&-C8V,_`P8\````
+M````?V8,&#-_```````.&!@8<!@8&`X``````!@8&!@8&!@8&```````<!@8
+M&`X8&!AP`````#MN````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````!@8?L/`P,-^&!@`````'#8R,'@P,#!S?@``
+M`````,9\QL;&?,8```````!F9CP8?AA^&!@`````&!@8&````!@8&!@````^
+M8S`<-F-C-AP&8SX``,8````````````````````X1)JBHJ*:1#@`````````
+MQFPX.&S&`````````!LV;#8;``````````````!_`P,#``````````````#^
+M````````````.$2ZJK*JJD0X````_P`````````````````X;&PX````````
+M````````&!A^&!@``'X`````/&8,&#)^``````````!X##@,#'@`````````
+M``P8,````````````````````#,S,S,S/C!@````?]O;VWL;&QL;````````
+M````&````````````````````````!@,>``8.!@8&#P``````````````!@`
+M?@`8````````````;#8;-FP```````!@X&-F;!@V;MH_!@8``&#@8V9L&#!N
+MPP8,'P``X#!C-NP8-F[:/P8&````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````_P#_`````&-C,SMN9F-C````
+M````?`8&!@8&!G\````````<!@8&!AXV8P```````'\&!@8&!@8&````````
+M?@,#`V-C8V,````````X#`P,#`P,#````````'X8&!@,#!@P````````?C-C
+M8V-C8V,```````!F:VMC8V-F/````````#P&!@8,````````````?@,#!@8&
+M!@8&!P````!^`P,#`P,&?`````!@8'X#`P,&#!@8````````?F-C8V-C8W\`
+M``````!N>S-C8V-C;P```````!P&!@P,#`P,#`X`````'`8&!@8&!CX`````
+M``!^,V-C8V-F/````````#,S,S,S&PY\````````?"9F=@8&!@8&!P````!^
+M(V-S`P,#?P```````&9F9F9L>&!@8'``````8V,S'@P&`W\```````!^`P,S
+M-C8W,#`P`````'X#`P,#`P,#````````:VMK:VM[8SX```````!^,S,S,S,S
+M<P``````````````````````````````````````````````````````````
+=````````````````````````````````````````
+`
+end
diff --git a/share/syscons/fonts/iso08-8x16.fnt b/share/syscons/fonts/iso08-8x16.fnt
new file mode 100644
index 0000000..a89d770
--- /dev/null
+++ b/share/syscons/fonts/iso08-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso08-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M`````/\``#`8#```````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9MP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````<-C(P>#`P,#!X````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````QL;&QL9L.````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'```````';<````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````!@8?,;`P,#&?!@8```````X
+M;&1@\&!@8&#F_```````````QGS&QL;&?,8```````!F9CP8?AA^&!@8````
+M```8&!@8&```&!@8&!@`````?,9@.&S&QFPX#,9\`````,8`````````````
+M````````?(*:HJ*BFH)\`````````````,9L.#ALQ@`````````````V;-AL
+M-@```````````````/X&!@8&````````````````_@````````````!\@KJJ
+MLJJJ@GP```````#_````````````````````.&QL.```````````````````
+M`!@8?A@8``!^```````\9@P8,GX`````````````?`8\!@9\````````````
+M``P8,```````````````````````9F9F9F9F?&!@P````'_;V]M[&QL;&QL`
+M`````````````!@`````````````````````````&`QX````&#@8&!@\````
+M```````````````8`'X`&```````````````V&PV;-@`````````8.!B9FP8
+M,&;.FC\&!@```&#@8F9L&#!@W(8,&#X```#@,&(V[!@P9LZ:/P8&````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````/\`_P``````QL9F=MS,QL8`````
+M`````/@,#`P,#`S^```````````X#`P,#!PVY@``````````_@P,#`P,#`P`
+M`````````/P&!@;&QL;&``````````!P&!@8&!@8&```````````_#`P,!@8
+M,&```````````/QFQL;&QL;&``````````#,UM;&QL;&?```````````<!@8
+M&#```````````````/P&!@8,#`P,#`P.``````#\!@8&!@8&_````````,#`
+M_`8&!@8,&!@``````````/QFQL;&QL;^``````````#<=F;&QL;&W@``````
+M````.`P,&!@8&!@8&!P``````#@,#`P,#`Q\``````````#\9L;&QL;,>```
+M````````[F9F9F9F+/@``````````/A,S,SL#`P,#`P.``````#\1L;&Y@8&
+M_@``````````[F9F;'A@8&!@8'```````.YF9C08#`;^``````````#\!@9F
+M9&QN8&!@8```````_`8&!@8&!@8``````````-;6UM;6]L9\``````````#\
+M9F9F9F;FY@``````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/iso08-8x8.fnt b/share/syscons/fonts/iso08-8x8.fnt
new file mode 100644
index 0000000..ca563fc
--- /dev/null
+++ b/share/syscons/fonts/iso08-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso08-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````&#P\&!@`
+M&`!L;&P``````&QL_FS^;&P`&#Y@/`9\&```QLP8,&;&`#AL.';<S'8`,#!@
+M```````,&#`P,!@,`#`8#`P,&#```&8\_SQF````&!A^&!@`````````&!@P
+M````?@```````````!@8``8,&#!@P(``.&S&UL9L.``8.!@8&!A^`#QF!APP
+M9GX`/&8&'`9F/``</&S,_@P>`'Y@?`8&9CP`'#!@?&9F/`!^9@8,&!@8`#QF
+M9CQF9CP`/&9F/@8,.```&!@``!@8```8&```&!@P#!@P8#`8#````'X``'X`
+M`#`8#`8,&#``/&8&#!@`&`!\QM[>WL!X`!@\9F9^9F8`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`9F9F?F9F9@`\
+M&!@8&!@\`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@!\QL;&QL9\`/QF9GQ@8/``?,;&QL;.?`[\9F9\;&;F`#QF<#@.9CP`?EH8
+M&!@8/`!F9F9F9F9^`&9F9F9F/!@`QL;&UO[NQ@#&QFPX.&S&`&9F9CP8&#P`
+M_L:,&#)F_@`\,#`P,#`\`,!@,!@,!@(`/`P,#`P,/``0.&S&````````````
+M``#_,#`8`````````'@,?,QV`.!@8'QF9MP````\9F!F/``<#`Q\S,QV````
+M/&9^8#P`'#8P>#`P>````';,S'P,^.!@;'9F9N8`&``X&!@8/``&``8&!F9F
+M/.!@9FQX;.8`.!@8&!@8/````,S^_M;&````W&9F9F8````\9F9F/````-QF
+M9GQ@\```=LS,?`P>``#<=F9@\````#Y@/`9\`!`P?#`P-!@```#,S,S,=@``
+M`&9F9CP8````QM;^_FP```#&;#ALQ@```&9F9CX&?```?DP8,GX`#A@8<!@8
+M#@`8&!@`&!@8`'`8&`X8&'``=MP`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````&!A^P,!^&!@X
+M;&3P8.;\``#&?,;&?,8`9F8\?AA^&!@8&!@``!@8&#YC/&9F/,9\`,8`````
+M``!^@9VAH9V!?@#&;#ALQ@```#-FS&8S``````!^!@8``````'X`````?H&Y
+MI;FE@7[_`````````#AL;#@`````&!A^&!@`?@!X#!@P?````'@,.`QX````
+M#!@P`````````&9F9F9\P'_;VWL;&QL`````&````````````!@,.!@X&!@\
+M`````!@`?@`8````S&8S9LP``,/&S-HV;M\&P\;,WC-FS`_A,N0Z]BI?A@``
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````/\`_P#&9G;<S,8`
+M`/@,#`P,_@``.`P,'#3F``#^#`P,#`P``/P&!L;&Q@``<!@8&!@8```\&!@,
+M&#```/QFQL;&Q@``S-;6QLQX```X#`P8`````/P&!@P,#`X`_`8&!@;\`,#\
+M!@8,&!@``/QFQL;&_@``W'9FQL;>```X#!@8&!@<`#@,#`P,?```_&;&QLQX
+M``!F9F9F-OP``/A,S.P,#`X`_$;&Y@;^``!F9F9\8&!P`&8V'`P&?@``_`9F
+M;&Y@8`#\!@8&!@8``-;6UO;&?```_&9F9N;F````````````````````````
+7````````````````````````````````
+`
+end
diff --git a/share/syscons/fonts/iso09-8x16.fnt b/share/syscons/fonts/iso09-8x16.fnt
new file mode 100644
index 0000000..8eff1b7
--- /dev/null
+++ b/share/syscons/fonts/iso09-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso09-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````\9L/#V]O#PV8\````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,/G___;P\/#P\,```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````#_VYD8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,/#P\/#P\-F/!@```````##
+MP\/#P]O;_V9F````````P\-F/!@8/&;#PP```````,/#PV8\&!@8&#P`````
+M``#_PX8,&#!@P</_````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````YO_;V]O;
+MVP```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````P\/#PV8\&````````````,/#P]O;_V8```````````##9CP8/&;#````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````!@8`!@8&#P\/!@``````!@8?L/`P,##?A@8```````X
+M;&1@\&!@8&#F_`````````""QGS&QL;&?,:"``````##9CP8_QC_&!@8````
+M````&!@8&``8&!@8&```````?,9@.&S&QFPX#,9\`````,8`````````````
+M````````?,:"NJ*BNH+&?```````<!AXR'@`^``````````````````V;-AL
+M-@```````````````/X&!@8&````````````````?`````````````!\QH*Z
+MJK*J@L9\``````#^````````````````````.&QL.```````````````````
+M`!@8?A@8``!^``````!PV#!@R/@`````````````^!@P&-AP````````````
+M&#!@``````````````````````!F9F9F9GYC8,```````'_;V]M[&QL;&QL`
+M`````````````!@8```````````````````````8#`8\````8.!@8&#P````
+M`````````'#8B-AP`/@`````````````````V&PV;-@`````````P,#"QLP8
+M,&;.ECX&!@```,#`PL;,&#!@SIL&#!\```#P,'(V[!@P9LZ6/@8&`````#`P
+M`#`P8,#&QGP`````8#`8`#ALQL;^QL;&``````P8,``X;,;&_L;&Q@`````0
+M.&P`.&S&QO[&QL8``````';<`#ALQL;^QL;&``````#&`!`X;,;&_L;&Q@``
+M```X;#@`.&S&QO[&QL8````````^;,S,_LS,S,S.````````/&;"P,#`P,)F
+M/!@P```P&`P`_F9@?&!@9OX`````&#!@`/YF8'Q@8&;^`````!`X;`#^9F!\
+M8&!F_@``````Q@#^9F!@?&!@9OX`````,!@,`#P8&!@8&!@\``````P8,``\
+M&!@8&!@8/``````8/&8`/!@8&!@8&#P``````&8`/!@8&!@8&!@\`````$(\
+M`#QFPL#>QL9F.@````!VW`#&YO;^WL[&QL8`````8#`8`'S&QL;&QL9\````
+M``P8,`!\QL;&QL;&?``````0.&P`?,;&QL;&QGP`````=MP`?,;&QL;&QL9\
+M``````#&`'S&QL;&QL;&?```````````QFPX$#ALQ@```````@9\SL[>UM;V
+MYN9\P(```&`P&`#&QL;&QL;&?``````,&#``QL;&QL;&QGP`````$#AL`,;&
+MQL;&QL9\``````#&`,;&QL;&QL;&?````````!@`/!@8&!@8&#P```````!\
+MQL9@.`P&QL9\&#``````.&S&SMS8S,;6W,"`````8#`8`'@,?,S,S'8`````
+M`!@P8`!X#'S,S,QV```````0.&P`>`Q\S,S,=@```````';<`'@,?,S,S'8`
+M``````#,``!X#'S,S,QV```````X;#@`>`Q\S,S,=@```````````&X[&W[8
+MW'<```````````!\QL#`P,9\&#````!@,!@`?,;^P,#&?```````#!@P`'S&
+M_L#`QGP``````!`X;`!\QO[`P,9\````````Q@``?,;^P,#&?```````8#`8
+M`#@8&!@8&#P```````8,&``X&!@8&!@\```````8/&8`.!@8&!@8/```````
+M`&8``#@8&!@8&#P```````!$.`!VS,S,S,Q\#,QX````=MP`W&9F9F9F9@``
+M````8#`8`'S&QL;&QGP``````!@P8`!\QL;&QL9\```````0.&P`?,;&QL;&
+M?````````';<`'S&QL;&QGP```````#&``!\QL;&QL9\```````````8&`!^
+M`!@8```````````"!GS.WM;VYGS`@````&`P&`#,S,S,S,QV```````8,&``
+MS,S,S,S,=@``````,'C,`,S,S,S,S'8```````#,``#,S,S,S,QV````````
+M````.!@8&!@8/````````````'S&8#@,QGP8,`````!F9@#N9F9F9F8^!@PX
+!````
+`
+end
diff --git a/share/syscons/fonts/iso15-8x14.fnt b/share/syscons/fonts/iso15-8x14.fnt
new file mode 100644
index 0000000..2c8adda
--- /dev/null
+++ b/share/syscons/fonts/iso15-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 iso15-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````-C9_
+M-C8V?S8V````"`@^8V!@/@,#8SX("`````!A8P8,&#!C0P``````'#8V'#MN
+M9F8[`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\?CQF````````````&!A^&!@`````````````````&!@8,```
+M````````?@`````````````````````8&````````0,&#!@P8$`````````^
+M8V=O>W-C8SX```````P</`P,#`P,/P``````/F,#!@P8,&-_```````^8P,#
+M'@,#8SX```````8.'C9F?P8&#P``````?F!@8'X#`V,^```````<,&!@?F-C
+M8SX``````']C`P8,&!@8&```````/F-C8SYC8V,^```````^8V-C/P,#!AP`
+M````````&!@````8&``````````8&````!@8,``````&#!@P8#`8#`8`````
+M````?@```'X`````````8#`8#`8,&#!@```````^8V,&#`P`#`P``````#YC
+M8V]O;VY@/@``````"!PV8V-_8V-C``````!^,S,S/C,S,WX``````!XS8&!@
+M8&`S'@``````?#8S,S,S,S9\``````!_,S`T/#0P,W\``````'\S,#0\-#`P
+M>```````'C-@8&!O8S,=``````!C8V-C?V-C8V,``````#P8&!@8&!@8/```
+M````#P8&!@8&9F8\``````!S,S8V/#8V,W,``````'@P,#`P,#`S?P``````
+M8W=_:V-C8V-C``````!C<WM_;V=C8V,``````!PV8V-C8V,V'```````?C,S
+M,SXP,#!X```````<-F-C8V-K/AP&`P```'XS,S,^-C,S<P``````/F-C,!P&
+M8V,^``````!^6A@8&!@8&#P``````&-C8V-C8V-C/@``````8V-C8V-C-AP(
+M``````!C8V-C8VMK?S8``````&-C8S8<-F-C8P``````9F9F9F8\&!@\````
+M``!_8P8,&#!@8W\``````#PP,#`P,#`P/```````0&`P&`P&`P$````````\
+M#`P,#`P,##P````('#9C``````````````````````````````#_&!@,````
+M`````````````````#P&/F9F.P``````<#`P/C,S,S-N```````````^8V!@
+M8SX```````X&!CYF9F9F.P``````````/F-_8&,^```````>,S!\,#`P,'@`
+M`````````#MF9F8^!F8\````<#`P-CLS,S-S```````,#``<#`P,#!X`````
+M``P,`!P,#`P,#,QX````<#`P,S8\-C-S```````<#`P,#`P,#!X`````````
+M`&9_:VMK:P``````````;C,S,S,S```````````^8V-C8SX``````````&XS
+M,S,^,#!X````````.V9F9CX&!@\```````!N,S`P,'@``````````#YC.`YC
+M/@````````@8?A@8&!L.``````````!F9F9F9CL``````````&-C8S8<"```
+M````````8V-K:W\V``````````!C-AP<-F,``````````&-F9F8^!F8\````
+M````?V8,&#-_```````.&!@8<!@8&`X``````!@8&!@8&!@8&```````<!@8
+M&`X8&!AP```````[;@``````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````&!@`&!@\/#P8````````"`@^8V!@8SX("````!PV,#!\,#!S?@``
+M```>,6#^8/Q@,QX```````!F9F8\&'X8?A@````<"``^8S`<!F,^```````^
+M8S`<-F-C-AP&8SX`-AP(`#YC.`YC/@`````````^05U145U!/@`````X!#Q$
+M/`!\`````````````!LV;#8;``````````````!_`P,``````````````'\`
+M````````````/D%=55E503X`````?@`````````````````X;&PX````````
+M`````````!@8?A@8`'X`````.&P8,&1\``````````!\##@,;#@`````````
+M'`@`?V8,&#!C?P```````````&9F9F9F.V#`````?]O;VWL;&QL;````````
+M```8&``````````V'`@`?V8,&#-_```````P<#`P,'@``````````#A$1$0X
+M`'P`````````````;#8;-FP````````?-F9F9V9F-A\``````````#9K:VYH
+M-P````!F`&9F9F8\&!@\````````&!@`&!@P8V,^````8#`8`!PV8V-_8V,`
+M```#!@P`'#9C8W]C8P````@<-@`<-F-C?V-C````.VX`"!PV8V-_8V,`````
+M8V,('#9C8W]C8P```!PV'``<-F-C?V-C```````?-F9F9WYF9F<``````!XS
+M8&!@8&`S'@P&'&`P&`!_,S`^,#-_````!@P8`'\S,#XP,W\````('#8`?S,P
+M/C`S?P````!C8P!_,S`^,#-_````8#`8`#P8&!@8&#P````&#!@`/!@8&!@8
+M/````!@\9@`\&!@8&!@\`````&9F`#P8&!@8&#P``````#PV,S-[,S,V/```
+M`#MN`&-S>W]O9V-C````8#`8`!PV8V-C-AP````#!@P`'#9C8V,V'`````@<
+M-@`<-F-C8S8<`````#MN`!PV8V-C-AP`````8V,`'#9C8V,V'````````&,V
+M'`@<-F,```````,>-F=O:WMS-CQ@``!@,!@`8V-C8V-C/@````,&#`!C8V-C
+M8V,^````"!PV`&-C8V-C8SX`````8V,`8V-C8V-C/@````8,&`!F9F8\&!@\
+M`````'@P/C,S/C`P,'@``````!PV8V9L9V-K;F!@``!@,!@`/`8^9F8[````
+M``8,&``\!CYF9CL`````"!PV`#P&/F9F.P``````.VX`/`8^9F8[``````!F
+M9@`\!CYF9CL`````'#8<`#P&/F9F.P``````````=@L[;F@W```````````^
+M8V!@8SX,!AP`,!@,`#YC?V!C/@`````#!@P`/F-_8&,^``````@<-@`^8W]@
+M8SX``````&-C`#YC?V!C/@````!@,!@`.!@8&!@\``````8,&``X&!@8&#P`
+M````&#QF`#@8&!@8/```````9F8`.!@8&!@\```````V'#8&/F9F9CP`````
+M`#MN`&XS,S,S,P````!@,!@`/F-C8V,^``````8,&``^8V-C8SX`````"!PV
+M`#YC8V-C/@``````.VX`/F-C8V,^``````!C8P`^8V-C8SX``````!@8``!^
+M```8&``````````#/F=O>W,^8````&`P&`!F9F9F9CL`````!@P8`&9F9F9F
+M.P`````8/&8`9F9F9F8[``````!F9@!F9F9F9CL`````!@P8`&-F9F8^!F8\
+=`````'@P/C,S,S,^,'@```!F9@!F9F9F/@9F/```
+`
+end
diff --git a/share/syscons/fonts/iso15-8x16.fnt b/share/syscons/fonts/iso15-8x16.fnt
new file mode 100644
index 0000000..617f166
--- /dev/null
+++ b/share/syscons/fonts/iso15-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso15-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````\9L/#V]O#PV8\````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,/G___;P\/#P\,```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````#_VYD8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,/#P\/#P\-F/!@```````##
+MP\/#P]O;_V9F````````P\-F/!@8/&;#PP```````,/#PV8\&!@8&#P`````
+M``#_PX8,&#!@P</_````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````YO_;V]O;
+MVP```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````P\/#PV8\&````````````,/#P]O;_V8```````````##9CP8/&;#````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&!@8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````!@8`!@8&#P\/!@``````!@8?L/`P,##?A@8```````X
+M;&1@\&!@8&#F_````````!XQ8&#^8/Q@,1X```````##9CP8_QC_&!@8````
+M`&PX$`!\QF`P&`S&?```````?,9@.&S&QFPX#,9\`````&PX$`!\QF`X#,9\
+M````````?,:"NJ*BNH+&?```````<!AXR'@`^``````````````````V;-AL
+M-@```````````````/X&!@8&````````````````?`````````````!\QH*Z
+MJK*J@L9\``````#^````````````````````.&QL.```````````````````
+M`!@8?A@8``!^``````!PV#!@R/@`````````````^!@P&-AP````````````
+M;#@0`/[&#!@P8,;^``````````!F9F9F9GYC8,```````'_;V]M[&QL;&QL`
+M`````````````!@8``````````!L.!``_LP8,&#&_@``````8.!@8&#P````
+M`````````'#8B-AP`/@`````````````````V&PV;-@``````````'[,S,S.
+MS,S,S'X```````````!NV]O>V-QG``````##`,/#9CP8&!@8/````````#`P
+M`#`P8,#&QGP`````8#`8`#ALQL;^QL;&``````P8,``X;,;&_L;&Q@`````0
+M.&P`.&S&QO[&QL8``````';<`#ALQL;^QL;&``````#&`!`X;,;&_L;&Q@``
+M```X;#@`.&S&QO[&QL8````````^;,S,_LS,S,S.````````/&;"P,#`PF8\
+M#`9\```P&`P`_F9@?&!@9OX`````&#!@`/YF8'Q@8&;^`````!`X;`#^9F!\
+M8&!F_@``````Q@#^9F!@?&!@9OX`````,!@,`#P8&!@8&!@\``````P8,``\
+M&!@8&!@8/``````8/&8`/!@8&!@8&#P``````&8`/!@8&!@8&!@\````````
+M>&QF9F;V9F9L>`````!VW`#&YO;^WL[&QL8`````8#`8`'S&QL;&QL9\````
+M``P8,`!\QL;&QL;&?``````0.&P`?,;&QL;&QGP`````=MP`?,;&QL;&QL9\
+M``````#&`'S&QL;&QL;&?```````````QFPX$#ALQ@```````@9\SL[>UM;V
+MYN9\P(```&`P&`#&QL;&QL;&?``````,&#``QL;&QL;&QGP`````$#AL`,;&
+MQL;&QL9\``````#&`,;&QL;&QL;&?``````,&#``P\-F/!@8&#P`````\&!\
+M9F9F?&!@8&#P````````.&S&SMS8S,;6W,"`````8#`8`'@,?,S,S'8`````
+M`!@P8`!X#'S,S,QV```````0.&P`>`Q\S,S,=@```````';<`'@,?,S,S'8`
+M``````#,``!X#'S,S,QV```````X;#@`>`Q\S,S,=@```````````&X[&W[8
+MW'<``````````#QF8&!F/`P&/`````!@,!@`?,;^P,#&?```````#!@P`'S&
+M_L#`QGP``````!`X;`!\QO[`P,9\````````Q@``?,;^P,#&?```````8#`8
+M`#@8&!@8&#P```````8,&``X&!@8&!@\```````8/&8`.!@8&!@8/```````
+M`&8``#@8&!@8&#P``````&PX.&P,/&S,S,QX````````=MP`W&9F9F9F9@``
+M````8#`8`'S&QL;&QGP``````!@P8`!\QL;&QL9\```````0.&P`?,;&QL;&
+M?````````';<`'S&QL;&QGP```````#&``!\QL;&QL9\```````````8&`!^
+M`!@8```````````"!GS.WM;VYGS`@````&`P&`#,S,S,S,QV```````8,&``
+MS,S,S,S,=@``````,'C,`,S,S,S,S'8```````#,``#,S,S,S,QV```````8
+M,&``QL;&QL;&?@8,^`````#P8'QF9F9F9GQ@8/````!F9@#N9F9F9F8^!@PX
+!````
+`
+end
diff --git a/share/syscons/fonts/iso15-8x8.fnt b/share/syscons/fonts/iso15-8x8.fnt
new file mode 100644
index 0000000..c0e65fa
--- /dev/null
+++ b/share/syscons/fonts/iso15-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 iso15-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&QFPX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,QV`.!@8'QF9MP```!XS,#,>``<#`Q\S,QV````
+M>,S\P'@`.&Q@\&!@\````';,S'P,^.!@;'9F9N8`,`!P,#`P>``,``P,#,S,
+M>.!@9FQX;.8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````-QF
+M9GQ@\```=LS,?`P>``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,=@``
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````#``,#!X>#`````0?,#`?!``
+M.&!@\&#\``X9,'XP&0X``,S,>##\,``P?,!X#/@``'[`?,9\!OP`,'S`>`SX
+M``!\@KJBNH)\`!P&'B(?/P```#-FS&8S````_@8`````````````````?(*Z
+MLJJ"?`#^`````````#AL.````````!!\$`!\```<-@88/@```!X"#@(>````
+M,/R8,&3\`````,S,S,QVP'[*RGX*"@H`````&``````P_)@P9/P```8.!@8&
+M````#A$1$0X?````S&8S9LP``%C8W-A8/@```&S2WM!N````S,QX,'@``#``
+M,&#`S'@`&`PP>,S\S`!@P#!XS/S,`'B$,'C,_,P`9I@P>,S\S`#,`#!XS/S,
+M`#!(,'C,_,P`/GB8G/B8G@`\9L#`P&8<,#`8_F)X8OX`&##^8GAB_@`X1/YB
+M>&+^`&8`_F)X8OX`8#!X,#`P>``8,'@P,#!X`'B$>#`P,'@`S`!X,#`P>`!X
+M;&;V9FQX`&:8YO;>SL8`,!A\QL;&?``8,'S&QL9\`#A$?,;&QGP`9IA\QL;&
+M?`#&`'S&QL9\``#&;#@X;,8`!GS.FK+F>,!@,,S,S,S\`!@PS,S,S/P`>(3,
+MS,S,_`#,`,S,S,S\`!@PS,QX,'@`8'AL>&!@8`!XS,3<QL;<P#`8>`Q\S'8`
+M&#!X#'S,=@!XA'@,?,QV`&:8>`Q\S'8`S`!X#'S,=@`P2#@,?,QV````[#)^
+ML&X````\9L!F'#`P&'C,_,!X`!@P>,S\P'@`>(1XS/S`>`#,`'C,_,!X`&`P
+M`'`P,'@`&#``<#`P>`!PB`!P,#!X`,P``'`P,'@`;#AL#&S,>`!FF/C,S,S,
+M`&`P`'S&QGP`&#``?,;&?``X1`!\QL9\`&:8`'S&QGP`Q@``?,;&?````!@`
+M?@`8````!GS>]GS`8#``S,S,=@`8,`#,S,QV`#!(`,S,S'8`S```S,S,=@`8
+7,,S,S'P,^.!X;&9L>.``S`#,S,Q\#/@`
+`
+end
diff --git a/share/syscons/fonts/iso15-thin-8x16.fnt b/share/syscons/fonts/iso15-thin-8x16.fnt
new file mode 100644
index 0000000..1cb4d67
--- /dev/null
+++ b/share/syscons/fonts/iso15-thin-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 iso15-thin-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````0$!`0$!`0```0
+M$```````)"0D)````````````````"0D)'XD)"1^)"0D```````(/TA(2#X)
+M"0E^"````````#!),@0($"9)!@`````````8)"08)2(B(AT``````!@("!``
+M````````````````!`@0$!`0$!`(!````````!`(!`0$!`0$"!``````````
+M```D&'X8)`````````````@("'\("`@``````````````````````!@8"!``
+M````````?@`````````````````````````8&``````````!`@0($"!`@```
+M```````8)$)"0D)"0B08````````"!@("`@("`@('````````#Q"`@($"!`@
+M0'X````````\0@("'`("`D(\`````````@8*$B)"?P("`@```````'Y`0$!\
+M`@("0CP````````\0$!`?$)"0D(\````````?@("!`0("!`0$````````#Q"
+M0D(\0D)"0CP````````\0D)"0CX"`@(\````````````&!@``!@8````````
+M```````8&````!@("!``````!`@0($`@$`@$````````````?@``?@``````
+M```````@$`@$`@0($"`````````\0@("!`@0```0$````````!PB25555DP@
+M'@```````#Q"0D)"?D)"0D(```````!\0D)"?$)"0D)\````````/$)`0$!`
+M0$!"/````````'A$0D)"0D)"1'@```````!^0$!`?$!`0$!^````````?D!`
+M0'Q`0$!`0````````#Y`0$!.0D)"0CX```````!"0D)"?D)"0D)"````````
+M'`@("`@("`@('`````````X"`@("`@)"0CP```````!"1$A08&!02$1"````
+M````0$!`0$!`0$!`?@```````$%C54E!04%!04$```````!"8E)22DI&0D)"
+M````````/$)"0D)"0D)"/````````'Q"0D)"?$!`0$`````````\0D)"0D)"
+M0DH\!`(`````?$)"0D)\4$A$0@```````#Q"0$`\`@("0CP```````!_"`@(
+M"`@("`@(````````0D)"0D)"0D)"/````````$%!04%!(B(4%`@```````!!
+M04%!04%)56-!````````04$B%`@(%")!00```````$%!02(4"`@("`@`````
+M``!^`@($"!`@0$!^````````/"`@("`@("`@/`````````"`0"`0"`0"`0``
+M```````\!`0$!`0$!`0\````````"!0B````````````````````````````
+M`````/\``!@0$`@`````````````````````/$("/D)"/0```````$!`0'Q"
+M0D)"0GP````````````\0D!`0$(\`````````@("/D)"0D)"/@``````````
+M`#Q"0GY`0CP````````.$!!^$!`0$!`0````````````/D)"0D)"/@("/```
+M`$!`0'Q"0D)"0D(````````("``X"`@("`@(`````````@(`#@("`@("`@)"
+M/````$!`0$)$2'!(1$(```````!P$!`0$!`0$!`0````````````=DE)24E)
+M20```````````'Q"0D)"0D(````````````\0D)"0D(\````````````?$)"
+M0D)"?$!`0````````#Y"0D)"0CX"`@(```````!<8D!`0$!`````````````
+M/$)`/`)"/````````!`0$'P0$!`0$`X```````````!"0D)"0D(]````````
+M````0D)"0D(D&````````````$E)24E)238```````````!"0B08)$)"````
+M````````0D)"0D)"/@("/````````'X$"!`@0'X```````P0$!`0(!`0$!`,
+M```````0$!`0$!`0$!`0$!``````,`@("`@$"`@("#`````````R3```````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````$!```!`0$!`0$!``````````"`@\2DA(2CP("```````
+M'"(B('@@("`A?@```````!XA('X@?B`A'@````````!!(A0("#X(/@@(````
+M`"08`#Q"0$`\`@)"/````````#Q"(#Q"0D(\!$(\```````D&``\0D`\`D(\
+M````````/D%!75%174%!/@`````````X1$0^`'X`````````````"1(D2)!(
+M)!()`````````````/X"`@(`````````$!```!`0$!`0$!```````#Y!755=
+M655503X`````````?@```````````````````!@D)"08````````````````
+M```("#X("``^````````,$@0('@``````````````'`(,`AP````````````
+M)!@`?@($"!`@0$!^````````````0D)"0D)^04!`@````#Y*2DHZ"@H*"@H`
+M````````````&!@`````````````)!@`?@0($"!`?@```````!!P$!`0````
+M```````````8)!@`/````````````````)!()!()$B1(D````````'^(B(B.
+MB(B(B'\```````````!ND9&?D)%N`````!04`$%!(A0("`@("``````````0
+M$``0$!`@0$!"/```,`P`/$)"0GY"0D)"``````PP`#Q"0D)^0D)"0@`````8
+M)``\0D)"?D)"0D(`````,DP`/$)"0GY"0D)"```````D`#Q"0D)^0D)"0@``
+M```8)!@\0D)"?D)"0D(````````_2$A(?DA(2$A/````````/$)`0$!`0$!"
+M/`0"/``8!@`^("`@/"`@(#X`````!A@`/B`@(#P@("`^``````P2`#X@("`\
+M("`@/@`````4%``^("`@/"`@(#X`````&`8`'`@("`@("`@<``````88`!P(
+M"`@("`@('``````(%``<"`@("`@("!P`````%!0`'`@("`@("`@<````````
+M>$1"0O)"0D)$>```````&28`06%1245#04$`````,`P`/$)"0D)"0D(\````
+M``PP`#Q"0D)"0D)"/``````8)``\0D)"0D)"0CP`````,DP`/$)"0D)"0D(\
+M``````!F`#Q"0D)"0D)"/`````````""1"@0*$2"```````````9)D1*2E)2
+M(F28`````#`,`$)"0D)"0D)"/``````,,`!"0D)"0D)"0CP`````&"0`0D)"
+M0D)"0D(\``````!F`$)"0D)"0D)"/``````$"!!!02(4"`@("`@``````"`@
+M(#XA(2$Q+B`@("``````'B$A(3XA(2$Q+B``````$`@$`#Q"`CY"0CT`````
+M``0($``\0@(^0D(]```````0*$0`/$("/D)"/0```````#),`#Q"`CY"0CT`
+M```````D)``\0@(^0D(]```````<(AP`/$("/D)"/0```````````#8)"3Y(
+M2#X````````````\0D!`0$(\"`1X```@$`@`/$)"?D!"/```````!`@0`#Q"
+M0GY`0CP``````!@D0@`\0D)^0$(\````````)"0`/$)"?D!"/```````$`@$
+M`#@("`@("`@```````0($``X"`@("`@(```````(%"(`.`@("`@("```````
+M`"(B`#@("`@("`@````````P3`0\0D)"0D(\````````,DP`?$)"0D)"0@``
+M````(!`(`#Q"0D)"0CP```````@0(``\0D)"0D(\````````&"0`/$)"0D)"
+M/````````#),`#Q"0D)"0CP````````D```\0D)"0D(\```````````8&`#_
+M`!@8`````````````!TB14E1(EP``````"`0"`!"0D)"0D(]```````($"``
+M0D)"0D)"/0``````&"1"`$)"0D)"0CT````````D)`!"0D)"0D(]````````
+M!`@0`$)"0D)"/@("/```("`@/B$A(2$Q+B`@(``````D)```0D)"0D(^`@(\
+!````
+`
+end
diff --git a/share/syscons/fonts/koi8-r-8x14.fnt b/share/syscons/fonts/koi8-r-8x14.fnt
new file mode 100644
index 0000000..1a137c6
--- /dev/null
+++ b/share/syscons/fonts/koi8-r-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 koi8-r-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW`````````````````````````````````````````#_
+M````````&!@8&!@8&!@8&!@8&!@`````````'Q@8&!@8&`````````#X&!@8
+M&!@8&!@8&!@8&!\````````8&!@8&!@8^````````!@8&!@8&!@?&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@`````````_Q@8&!@8&!@8&!@8&!C_````````&!@8
+M&!@8&/\8&!@8&!C_________``````````````````#_________________
+M___________P\/#P\/#P\/#P\/#P\`\/#P\/#P\/#P\/#P\/$4011!%$$401
+M1!%$$415JE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UW```.&QL8&!@8&!@8
+M&!@`````?'Q\?'Q\`````````````!@8``````````\,#`P,#.QL/!P`````
+M````=MP`=MP`````````#!@P8#`8#`!^```````P&`P&#!@P`'X`````````
+M`````````````!@8&!@8&!@8V-AP`````#AL;#@`````````````<-@P8,CX
+M```````````````````8````````````&!@`?@`8&````````````/\`_P``
+M`````#8V-C8V-C8V-C8V-C8V```````?&!\8&!@8&!@``&QL`'S&_,#&?```
+M```````````_-C8V-C8V```````_,#<V-C8V-C8``````/@8^!@8&!@8&```
+M``````#^-C8V-C8V``````#^!O8V-C8V-C88&!@8&!\8'P```````#8V-C8V
+M-C8_````````-C8V-C8W,#\````````8&!@8&/@8^````````#8V-C8V-C;^
+M````````-C8V-C;V!OX````````8&!@8&!\8'Q@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8W,#<V-C8V-C88&!@8&/@8^!@8&!@8&&QL`/[&P/#`P,;^````
+M-C8V-C8V-O8V-C8V-C8V-C8V-O8&]C8V-C8V-@``````_P#_&!@8&!@8````
+M`````/\V-C8V-C8``````/\`]S8V-C8V-A@8&!@8_P#_````````-C8V-C8V
+M-O\````````V-C8V-O<`_P```````!@8&!@8_QC_&!@8&!@8-C8V-C8V-O\V
+M-C8V-C8V-C8V-O<`]S8V-C8V-@``?(*ZJJ*BJKJ"?`````````"<MK;VMIP`
+M`````````'S&QO[&Q@``````````_L#\QL;\``````````#,S,S,S/X&#```
+M`````#QL;&QL_L:"````````?,;\P,9\`````````!!\UM;6UGP0.```````
+M`/["P,#`P```````````QFPX.&S&``````````#&SM[VYL8````````,&,;.
+MWO;FQ@``````````QLSXV,S&```````````^9F9F9L8``````````,;N_M;&
+MQ@``````````QL;&_L;&``````````!^QL;&QOP``````````/[&QL;&Q@``
+M````````?L9^-F;&``````````#\QL;&QOS`P````````'S&P,#&?```````
+M````?EH8&!@8``````````#&QL;&QGX&?````````-;6?-;6U@``````````
+M_,;\QL;\``````````#`P/S&QOP``````````,;&YK:VY@``````````?,8<
+M!L9\``````````#6UM;6UOX``````````'S&'@;&?```````````UM;6UM;^
+M`@8```````#&QL9^!@8``````````.!@?&9F?```````G+:VMO:VMK:<````
+M```^9L;&QO[&QL8``````/[`P/S&QL;&_```````S,S,S,S,S,S^`@8````\
+M;&QL;&QL;/[&@@```/[&P,#PP,#&_@``````?-;6UM;6?!`X``````#^QL#`
+MP,#`P,```````,;&;#@X;,;&Q@``````QL;&SM[VYL;&``````S:QL;.WO;F
+MQL8``````,;,V/#PV,S&Q@``````'C9FQL;&QL;&``````""QL;N[O[6QL8`
+M`````,;&QL;^QL;&Q@``````?L;&QL;&QL;\``````#^QL;&QL;&QL8`````
+M`'[&QL;&?C9FQ@``````_,;&QL;\P,#```````!\QL;`P,#&QGP``````'Y^
+M6A@8&!@8&```````QL;&QL9^!L9\``````#6UM94?-;6UM8``````/S&QL;\
+MQL;&_```````P,#`_,;&QL;\``````#&QL;FMK:VMN8``````'S&!AP&!L;&
+M?`````#6UM;6UM;6UM;^``````!\Q@8>!@;&QGP`````UM;6UM;6UM;6_@(&
+=````QL;&QL9^!@8&``````#@X&!\9F9F9GP`````
+`
+end
diff --git a/share/syscons/fonts/koi8-r-8x16.fnt b/share/syscons/fonts/koi8-r-8x16.fnt
new file mode 100644
index 0000000..6d088c7
--- /dev/null
+++ b/share/syscons/fonts/koi8-r-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 koi8-r-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````_P``````````&!@8&!@8
+M&!@8&!@8&!@8&``````````?&!@8&!@8&!@`````````^!@8&!@8&!@8&!@8
+M&!@8&!\``````````!@8&!@8&!CX```````````8&!@8&!@8'Q@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&`````````#_&!@8&!@8&!@8&!@8&!@8_P``````
+M````&!@8&!@8&/\8&!@8&!@8&/________\`````````````````````____
+M______________________________#P\/#P\/#P\/#P\/#P\/`/#P\/#P\/
+M#P\/#P\/#P\/$4011!%$$4011!%$$4011%6J5:I5JE6J5:I5JE6J5:K==]UW
+MW7?==]UWW7?==]UW```.&QL8&!@8&!@8&!@8&`````!\?'Q\?'Q\````````
+M````````&!@```````````\,#`P,#.QL;#P<````````````=MP`=MP`````
+M```````,&#!@,!@,`'X`````````,!@,!@P8,`!^````````````````````
+M```````8&!@8&!@8&-C8V'```````#AL;#@```````````````!PV#!@R/@`
+M`````````````````````!@``````````````!@8`'X`&!@`````````````
+M_P#_```````````V-C8V-C8V-C8V-C8V-C8V```````?&!\8&!@8&!@8&```
+M;&P`?,;&_,#&?```````````````/S8V-C8V-C8V```````_,#<V-C8V-C8V
+M-@``````^!CX&!@8&!@8&!@`````````_C8V-C8V-C8V``````#^!O8V-C8V
+M-C8V-A@8&!@8'Q@?```````````V-C8V-C8V/P``````````-C8V-C8W,#\`
+M`````````!@8&!@8^!CX```````````V-C8V-C8V_@``````````-C8V-C;V
+M!OX``````````!@8&!@8'Q@?&!@8&!@8&!@V-C8V-C8V-S8V-C8V-C8V-C8V
+M-C8W,#<V-C8V-C8V-A@8&!@8^!CX&!@8&!@8&!AF9@#^QL#`\,#`QOX`````
+M-C8V-C8V-O8V-C8V-C8V-C8V-C8V]@;V-C8V-C8V-C8``````/\`_Q@8&!@8
+M&!@8`````````/\V-C8V-C8V-@``````_P#W-C8V-C8V-C88&!@8&/\`_P``
+M````````-C8V-C8V-O\``````````#8V-C8V]P#_```````````8&!@8&/\8
+M_Q@8&!@8&!@8-C8V-C8V-O\V-C8V-C8V-C8V-C8V]P#W-C8V-C8V-C8``'R"
+MNJJBHJ*JNH)\``````````"<MK;VMK:<````````````?,;&QO[&Q@``````
+M`````/[`_,;&QOP```````````#,S,S,S,S^!@P`````````/&QL;&QL_L:"
+M`````````'S&QOS`QGP``````````!!\UM;6UM9\$#@`````````_L;"P,#`
+MP````````````,9L.#ALQL8```````````#&QL[>]N;&``````````P8QL;.
+MWO;FQ@```````````,;,V/C8S,8````````````^9F9F9F;&````````````
+MQN[^UL;&Q@```````````,;&QO[&QL8```````````!^QL;&QL;\````````
+M````_L;&QL;&Q@```````````'[&QGXV9L8```````````#\QL;&QL;\P,#`
+M````````?,;`P,+&?````````````'Y:&!@8&!@```````````#&QL;&QL9^
+M!L9\````````UM;6?-;6U@```````````/S&QOS&QOP```````````#`P/S&
+MQL;\````````````QL;FMK:VY@```````````'S&!AP&QGP```````````#6
+MUM;6UM;^````````````?,8&'@;&?````````````-;6UM;6UOX"!@0`````
+M``#&QL;&?@8&````````````X&!\9F9F?````````)RVMK;VMK:VMIP`````
+M```^9L;&QO[&QL;&````````_L#`P/S&QL;&_````````,S,S,S,S,S,S/X"
+M!@0````\;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````'S6UM;6UM9\
+M$#@```````#^QL#`P,#`P,#`````````QL9L.#ALQL;&Q@```````,;&QL;.
+MWO;FQL8```````S:QL;&SM[VYL;&````````QLS8\/#8S,;&Q@```````!XV
+M9L;&QL;&QL8```````#&QN[N_O[6UL;&````````QL;&QO[&QL;&Q@``````
+M`'[&QL;&QL;&QOP```````#^QL;&QL;&QL;&````````?L;&QL9^-F;&Q@``
+M`````/S&QL;&QOS`P,````````!\QL;`P,#`QL9\````````?GY:&!@8&!@8
+M&````````,;&QL;&QGX&QGP```````#6UM94?-;6UM;6````````_,;&QOS&
+MQL;&_````````,#`P,#\QL;&QOP```````#&QL;&YK:VMK;F````````?,8&
+M!AP&!L;&?````````-;6UM;6UM;6UOX```````!XS`8&'AX&!LQX````````
+MUM;6UM;6UM;6_@(&!````,;&QL;&?@8&!@8```````#@X&!@?&9F9F9\````
+!````
+`
+end
diff --git a/share/syscons/fonts/koi8-r-8x8.fnt b/share/syscons/fonts/koi8-r-8x8.fnt
new file mode 100644
index 0000000..1c08eab
--- /dev/null
+++ b/share/syscons/fonts/koi8-r-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 koi8-r-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP``````````````````````/\`````&!@8
+M&!@8&!@````?&!@8&````/@8&!@8&!@8'P`````8&!CX`````!@8&!\8&!@8
+M&!@8^!@8&!@```#_&!@8&!@8&/\`````&!@8_Q@8&!C___\``````````/__
+M_______________P\/#P\/#P\`\/#P\/#P\/$4011!%$$415JE6J5:I5JMUW
+MW7?==]UW#AL;&!@8&!@``'Q\?'P````````8`````P(&!,QH.!``=MP`=MP`
+M```,&#!@,!@,`#`8#`8,&#```````$)^`!@8&!@8V-AP`#AL;#@````P2!`@
+M>````````#@X`````!@8`'X`&!@`_P#_`````#8V-C8V-C8V`!\8'Q@8&!@D
+M`#QF?F`\`````#\V-C8V`#\P-S8V-C8`^!CX&!@8&````/XV-C8V`/X&]C8V
+M-C88'Q@?`````#8V-C\`````-C<P/P`````8^!CX`````#8V-OX`````-O8&
+M_@`````8'Q@?&!@8&#8V-C<V-C8V-C<P-S8V-C88^!CX&!@8&&8`?F!\8'X`
+M-C8V]C8V-C8V]@;V-C8V-@#_`/\8&!@8````_S8V-C8`_P#W-C8V-AC_`/\`
+M````-C8V_P`````V]P#_`````!C_&/\8&!@8-C8V_S8V-C8V]P#W-C8V-CQ"
+MF:&AF4(\``#.V_O;S@```'@,?,QV```\8#QF9CP```!F9F9F?P,``#QL;&S^
+MQ@``/&9^8#P```!^V]M^&````'Y@8&!@````9CP8/&8```!F;GYV9@``&&9N
+M?G9F````9FQX;&8````>-F9F9@```,;^_M;&````9F9^9F8````\9F9F/```
+M`'YF9F9F````/F8^-F8```!\9F9\8````#QF8&8\````?A@8&!@```!F9CX&
+M/````-M^/'[;````?&9\9GP```!@8'QF?````,;&]M[V````/&8,9CP```#;
+MV]O;_P```'P&/@9\````V]O;V_\#``!F9CX&!@```.!@?&9\`,[;V_O;V\X`
+M'C9F9GYF9@!\8&!\9F9\`&9F9F9F9G\#.&QL;&QL_L9^8&!\8&!^`'[;V]M^
+M&!@`?F!@8&!@8`!F9CP8/&9F`&9F;GYV9F8`/&9N?G9F9@!F;'AP>&QF`!XV
+M9F9F9F8`QN[^_M;&Q@!F9F9^9F9F`#QF9F9F9CP`?F9F9F9F9@`^9F9F/C9F
+M`'QF9F9\8&``/&9@8&!F/`!^&!@8&!@8`&9F9CX&9CP`V]M^/'[;VP!\9F9\
+M9F9\`&!@8'QF9GP`QL;&]M[>]@`\9@8<!F8\`-O;V]O;V_\`>(P&/@:,>`#;
+7V]O;V]O_`V9F9CX&!@8`X&!@?&9F?```
+`
+end
diff --git a/share/syscons/fonts/koi8-rb-8x16.fnt b/share/syscons/fonts/koi8-rb-8x16.fnt
new file mode 100644
index 0000000..6989719
--- /dev/null
+++ b/share/syscons/fonts/koi8-rb-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 koi8-rb-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M`````````````````````````````````````````````!@\/#P\&!@8&``8
+M&`````!C8\8`````````````````;&QL_OYL;&S^_FQL;````!A^V]OH>#P>
+M%]O;?A@8``#FINP,&!@P,&!NRLX`````.&QL;#@X;<W&QLMS`````!@8,```
+M```````````````,&!@P,#`P,#`P&!@,````,!@8#`P,#`P,#!@8,```````
+M`&9F//__/&9F````````````&!A^?A@8`````````````````````!@8,```
+M`````````'Y^````````````````````````&!@`````!@8,#!@8,#!@8,#`
+M`````'S&QL;.WO;FQL;&?``````8.'@8&!@8&!@8&'X`````/&;#PP,&#!@P
+M8,/_`````/[&#!@\!@,#`\-F/``````<'#P\;&S,S?\-#!X`````_L#`P/SF
+MPP,#PV8\`````#QFQL#\YL/#P\-F/`````#^Q@8,#!@8,#`P,#``````/&;#
+MPV8\9L/#PV8\`````#QFP\/#PV<_`V-F/```````````&!@`````&!@`````
+M`````!@8`````!@8,``````#!@P8,'`P&`P&`P``````````?GX`?GX`````
+M`````,!@,!@,!@P8,&#``````#QFP\,#!@P8&``8&````````'[#P]_;V][`
+MP'P`````$#A\[L;&QL;^QL;&`````/YC8V-C?F-C8V-C_@`````\9L/#P,#`
+MP,/#9CP`````_&9C8V-C8V-C8V;\`````/]C86!D?&1@8&%C_P````#_8V%@
+M9'QD8&!@8/@`````/&;#P\#`S\/#PV<]`````,;&QL;&_L;&QL;&Q@`````\
+M&!@8&!@8&!@8&#P`````#P8&!@8&!@;&QL9\`````.-C9F9L?&QF9F-CXP``
+M``#P8&!@8&!@8&!A8_\`````P^?__]O;V\/#P\/#`````,;&YN;V]M[>SL[&
+MQ@`````\9L/#P\/#P\/#9CP`````_F-C8V-C?F!@8&#P`````#QFP\/#P\/#
+MR\]^/`8'``#^8V-C8V-^;&9F9O<`````?L/#P,!^`P,#P\-^`````/_;F1@8
+M&!@8&!@8/`````#&QL;&QL;&QL;&QGP`````QL;&QL;&QL;&?#@0`````,/#
+MP\/;V]O;V_]F9@````#&QFQL.#@X.&QLQL8`````P\/#P^=^/!@8&!@\````
+M`/[&C`P8&#`P8&+&_@`````\,#`P,#`P,#`P,#P`````P,!@8#`P&!@,#`8&
+M`````#P,#`P,#`P,#`P,/``````8/&;#````````````````````````````
+M````_P```#`P&```````````````````````/`8^9F9F9CL`````X&!@8'YC
+M8V-C8V/>``````````!\QL#`P,#&?``````.!@8&?L;&QL;&QGL`````````
+M`'S&QO[`P,9\`````#QF9F#P8&!@8&!@\```````````>\;&QL;&QGX&QGP`
+MX&!@8'QF9F9F9F;F```````8&``X&!@8&!@8/```````!@8`#@8&!@8&!@9F
+M9CP`X&!@8&9F;'AL9F;F`````#@8&!@8&!@8&!@8/```````````YO_;V]O#
+MP\,``````````-QF9F9F9F9F``````````!\QL;&QL;&?```````````WF-C
+M8V-C8WY@8/```````'O&QL;&QL9^!@8/``````#><V-@8&!@\```````````
+M?,;`<!P&QGP``````!`P,/PP,#`P,#8<``````````#&QL;&QL;&>P``````
+M````QL;&QNY\.!```````````,/#V]O;V_]F``````````#&[GPX.'SNQ@``
+M````````QL;&QL;&QGX,&'```````/[&#!@P8,;^``````X8&!@8<'`8&!@8
+M#@`````8&!@8&```&!@8&!@`````<!@8&!@>'A@8&!AP``````!VW```````
+M`````````````````````````````````````````/\`````````&!@8&!@8
+M&!@8&!@8&!@8&```````````'Q@8&!@8&!@``````````/@8&!@8&!@8&!@8
+M&!@8&!@?`````````!@8&!@8&!@8^``````````8&!@8&!@8&!\8&!@8&!@8
+M&!@8&!@8&!CX&!@8&!@8&```````````_Q@8&!@8&!@8&!@8&!@8&/\`````
+M````&!@8&!@8&!C_&!@8&!@8&/__________`````````````````````/__
+M______________________________#P\/#P\/#P\/#P\/#P\/`/#P\/#P\/
+M#P\/#P\/#P\/@A""$((0@A""$((0@A""$,,8PQC#&,,8PQC#&,,8PQC8@]H3
+MV(/:$]B#VA/8@]H3```.&QL8&!@8&!@8&!@8&`````!\?'Q\?'Q\````````
+M````````&!@```````````\,#`P,#`P,[&P\'```````````=MP`=MP`````
+M``````P8,&#`8#`8#`!\``````!@,!@,!@P8,&``?@````````````````!"
+M0GX````8&!@8&!@8&!@8V/AP```````X;&QL.`````````````!PB!!@B/@`
+M`````````````````````!@``````````````!@8`'Y^`!@8````````````
+M`/\`_P`````````V-C8V-C8V-C8V-C8V-C8V````````'Q@?&!@8&!@8&```
+M`,8``'S&_L#`QGP``````````````#\V-C8V-C8V````````/S`W-C8V-C8V
+M-@```````/@8^!@8&!@8&!@``````````/XV-C8V-C8V````````_@;V-C8V
+M-C8V-A@8&!@8&!\8'P`````````V-C8V-C8V-C\`````````-C8V-C8V-S`_
+M`````````!@8&!@8&/@8^``````````V-C8V-C8V-OX`````````-C8V-C8V
+M]@;^`````````!@8&!@8&!\8'Q@8&!@8&!@V-C8V-C8V-C<V-C8V-C8V-C8V
+M-C8V-S`W-C8V-C8V-A@8&!@8&/@8^!@8&!@8&!@``&QL`/YF8'Q@8&;^````
+M-C8V-C8V-C;V-C8V-C8V-C8V-C8V-O8&]C8V-C8V-C8```````#_`/\8&!@8
+M&!@8``````````#_-C8V-C8V-@```````/\`]S8V-C8V-C88&!@8&!C_`/\`
+M````````-C8V-C8V-C;_`````````#8V-C8V-O<`_P`````````8&!@8&!C_
+M&/\8&!@8&!@8-C8V-C8V-C;_-C8V-C8V-C8V-C8V-O<`]S8V-C8V-C8````\
+M0IFAH9E"/```````````````SMO;^]O;S@```````````'@,?,S,S'8`````
+M``(&/&!@?&9F9F8\````````````S,S,S,S,_@8&`````````!XV-F9F9O_#
+MPP````````!\QO[`P,9\```````````\&'[;V]O;?A@8/````````'XR,C`P
+M,'@```````````#&;#@X.&S&````````````QL;.UN;&Q@`````````X.,;&
+MSM;FQL8```````````#F;'AX;&;F````````````'C9F9F9F9@``````````
+M`,;N_O[6UL8```````````#&QL;^QL;&````````````?,;&QL;&?```````
+M`````/[&QL;&QL8```````````!^S,S\;,S.````````````W&9F9F9F?&!@
+M\````````'S&P,#`QGP```````````!^6A@8&!@\````````````QL;&QL9^
+M!@;&?````````-;65'Q4UM8```````````#\9F9\9F;\````````````\&!@
+M?&9F_````````````,;&QO;>WO8````````````\9@8,!F8\````````````
+MUM;6UM;6_@```````````#YG`Q\#9SX```````````#6UM;6UM;^`P,`````
+M````QL;&QGX&!@```````````/BP,#XS,WX```````#.V]O;^]O;V]O.````
+M````$#ALQL;^QL;&Q@```````/YB8F!\9F9F9OP```````#,S,S,S,S,S,S^
+M!@8`````'C9F9F9F9F9F_\.!`````/YF8FAX:&!B9OX``````#P8?MO;V]O;
+M?A@\````````_F)B8&!@8&!@\````````,;&;'PX.'QLQL8```````#&QL[.
+MUN;FQL;&`````#@XQL;.SM;FYL;&Q@```````.9F;&QX>&QL9N8````````>
+M-F;&QL;&QL;&````````QN[^_M;&QL;&Q@```````,;&QL;^QL;&QL8`````
+M``!\QL;&QL;&QL9\````````_L;&QL;&QL;&Q@```````#]F9F8^/F9F9N<`
+M``````#\9F9F?&!@8&#P````````/&;"P,#`P,)F/````````'Y:&!@8&!@8
+M&#P```````#&QL;&QGX&!L9\````````UM945'Q\5-;6U@```````/QF9F9\
+M9F9F9OP```````#P8&!@?&9F9F;\````````P\/#P_/;V]O;\P```````'S&
+M!@8\!@8&QGP```````#;V]O;V]O;V]O_````````>,P&)CXF!@;,>```````
+M`-O;V]O;V]O;V_\#`P````#&QL;&QGX&!@8&````````^+`P,#PV-C8V?```
+!````
+`
+end
diff --git a/share/syscons/fonts/koi8-rc-8x16.fnt b/share/syscons/fonts/koi8-rc-8x16.fnt
new file mode 100644
index 0000000..36ec698
--- /dev/null
+++ b/share/syscons/fonts/koi8-rc-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 koi8-rc-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````_P``````````&!@8&!@8
+M&!@8&!@8&!@8&``````````?&!@8&!@8&!@`````````^!@8&!@8&!@8&!@8
+M&!@8&!\``````````!@8&!@8&!CX```````````8&!@8&!@8'Q@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&`````````#_&!@8&!@8&!@8&!@8&!@8_P``````
+M````&!@8&!@8&/\8&!@8&!@8&/________\`````````````````````____
+M______________________________#P\/#P\/#P\/#P\/#P\/`/#P\/#P\/
+M#P\/#P\/#P\/$4011!%$$4011!%$$4011%6J5:I5JE6J5:I5JE6J5:K==]UW
+MW7?==]UWW7?==]UW```.&QL8&!@8&!@8&!@8&`````!\?'Q\?'Q\````````
+M````````&!@```````````\,#`P,#.QL;#P<````````````=MP`=MP`````
+M```````,&#!@,!@,`'X`````````,!@,!@P8,`!^````````````````````
+M```````8&!@8&!@8&-C8V'```````#AL;#@```````````````!PV#!@R/@`
+M`````````````````````!@``````````````!@8`'X`&!@`````````_L;&
+MQL;&QL;&QOX``````&#P8&QV9F9F9N8&##`````8$`#^PL#`P,#`````````
+M;&P`?,;&_,#&?````````````#QBP/C`8CP```````````!\QL!\!L9\````
+M````&!``>#`P,#`P>````````#8D`'@P,#`P,'@````````,"``\&!@8&!@8
+M&+!@````````/$Q,3DE)S@```````````,S,S/[)R<X```````!@\&!@?&9F
+M9F;F````````&!``QLS8^-C,Q@```````````O[`P,#`P,`````````D&`#&
+MQL;&QL9^!L9\````````QL;&QL;&_A`0.```````!XC+JZBKFX@``````&#X
+M8&!\=F9F9F;G`````!@0_F9B8&!@8&!@\`````!F9@#^QL#`\,#`QOX`````
+M```\9L#`Z-#`P&8\````````?,;&8#@,!L;&?``````,&``\&!@8&!@8&#P`
+M````-B0`/!@8&!@8&!@\``````P8`#P8&!@8&!@8&+!@`````'QL;&QN:6EI
+M:<X```````#,S,S,_LG)R<G.``````#P8&!@?&9F9F9FYP`````8$,;&S-CP
+M\-C,QL8``````@;^P,#`P,#`P,#``````&PXQL;&QL;&?@;&?````````,;&
+MQL;&QL;&QOX0$#@```````"<MK;VMK:<````````````?,;&QO[&Q@``````
+M`````/[`_,;&QOP```````````#,S,S,S,S^!@P`````````/&QL;&QL_L:"
+M`````````'S&QOS`QGP``````````!!\UM;6UM9\$#@`````````_L;"P,#`
+MP````````````,9L.#ALQL8```````````#&QL[>]N;&``````````P8QL;.
+MWO;FQ@```````````,;,V/C8S,8````````````^9F9F9F;&````````````
+MQN[^UL;&Q@```````````,;&QO[&QL8```````````!^QL;&QL;\````````
+M````_L;&QL;&Q@```````````'[&QGXV9L8```````````#\QL;&QL;\P,#`
+M````````?,;`P,+&?````````````'Y:&!@8&!@```````````#&QL;&QL9^
+M!L9\````````UM;6?-;6U@```````````/S&QOS&QOP```````````#`P/S&
+MQL;\````````````QL;FMK:VY@```````````'S&!AP&QGP```````````#6
+MUM;6UM;^````````````?,8&'@;&?````````````-;6UM;6UOX"!@0`````
+M``#&QL;&?@8&````````````X&!\9F9F?````````)RVMK;VMK:VMIP`````
+M```^9L;&QO[&QL;&````````_L#`P/S&QL;&_````````,S,S,S,S,S,S/X"
+M!@0````\;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````'S6UM;6UM9\
+M$#@```````#^QL#`P,#`P,#`````````QL9L.#ALQL;&Q@```````,;&QL;.
+MWO;FQL8```````S:QL;&SM[VYL;&````````QLS8\/#8S,;&Q@```````!XV
+M9L;&QL;&QL8```````#&QN[N_O[6UL;&````````QL;&QO[&QL;&Q@``````
+M`'[&QL;&QL;&QOP```````#^QL;&QL;&QL;&````````?L;&QL9^-F;&Q@``
+M`````/S&QL;&QOS`P,````````!\QL;`P,#`QL9\````````?GY:&!@8&!@8
+M&````````,;&QL;&QGX&QGP```````#6UM94?-;6UM;6````````_,;&QOS&
+MQL;&_````````,#`P,#\QL;&QOP```````#&QL;&YK:VMK;F````````?,8&
+M!AP&!L;&?````````-;6UM;6UM;6UOX```````!XS`8&'AX&!LQX````````
+MUM;6UM;6UM;6_@(&!````,;&QL;&?@8&!@8```````#@X&!@?&9F9F9\````
+!````
+`
+end
diff --git a/share/syscons/fonts/koi8-u-8x14.fnt b/share/syscons/fonts/koi8-u-8x14.fnt
new file mode 100644
index 0000000..919d042
--- /dev/null
+++ b/share/syscons/fonts/koi8-u-8x14.fnt
@@ -0,0 +1,84 @@
+# $FreeBSD$
+begin 644 koi8-u-8x14
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
+M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
+MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
+M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
+M````````_@`````````````````````8&````````@8,&#!@P(````````!\
+MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
+M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
+MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
+M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
+M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
+MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
+MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
+M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
+M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
+MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
+M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
+MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
+M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
+M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
+M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
+M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
+MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
+M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
+M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
+M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
+M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
+M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````&9F9F8\&```
+M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
+M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
+M&`X8&!AP``````!VW`````````````````````````````````````````#_
+M````````&!@8&!@8&!@8&!@8&!@`````````'Q@8&!@8&`````````#X&!@8
+M&!@8&!@8&!@8&!\````````8&!@8&!@8^````````!@8&!@8&!@?&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@`````````_Q@8&!@8&!@8&!@8&!C_````````&!@8
+M&!@8&/\8&!@8&!C_________``````````````````#_________________
+M___________P\/#P\/#P\/#P\/#P\`\/#P\/#P\/#P\/#P\/$4011!%$$401
+M1!%$$415JE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UW```.&QL8&!@8&!@8
+M&!@`````?'Q\?'Q\`````````````!@8``````````\,#`P,#.QL/!P`````
+M````=MP`=MP`````````#!@P8#`8#`!^```````P&`P&#!@P`'X`````````
+M`````````````!@8&!@8&!@8V-AP`````#AL;#@`````````````<-@P8,CX
+M```````````````````8````````````&!@`?@`8&````````````/\`_P``
+M`````#8V-C8V-C8V-C8V-C8V```````?&!\8&!@8&!@``&QL`'S&_,#&?```
+M````````?,;PP,9\```````````_,#<V-C8V-C8``!`0`#@8&!@8/```````
+M*"@`.!@8&!@\``````````#^!O8V-C8V-C88&!@8&!\8'P```````#8V-C8V
+M-C8_````````-C8V-C8W,#\````````8&!@8&/@8^``````````````&_L#`
+MP,#`````-C8V-C;V!OX````````8&!@8&!\8'Q@8&!@8&#8V-C8V-C8W-C8V
+M-C8V-C8V-C8W,#<V-C8V-C88&!@8&/@8^!@8&!@8&&QL`/[&P/#`P,;^````
+M``!\QL#`^,#`QGP````V-C8V-O8&]C8V-C8V-@`8`#P8&!@8&!@\`````&8`
+M/!@8&!@8&#P``````````/\`]S8V-C8V-A@8&!@8_P#_````````-C8V-C8V
+M-O\````````V-C8V-O<`_P```````!@8&!@8_QC_&!@8&!@8``;^P,#`P,#`
+MP,`````V-C8V-O<`]S8V-C8V-@``?(*ZJJ*BJKJ"?`````````"<MK;VMIP`
+M`````````'S&QO[&Q@``````````_L#\QL;\``````````#,S,S,S/X&#```
+M`````#QL;&QL_L:"````````?,;\P,9\`````````!!\UM;6UGP0.```````
+M`/["P,#`P```````````QFPX.&S&``````````#&SM[VYL8````````,&,;.
+MWO;FQ@``````````QLSXV,S&```````````^9F9F9L8``````````,;N_M;&
+MQ@``````````QL;&_L;&``````````!^QL;&QOP``````````/[&QL;&Q@``
+M````````?L9^-F;&``````````#\QL;&QOS`P````````'S&P,#&?```````
+M````?EH8&!@8``````````#&QL;&QGX&?````````-;6?-;6U@``````````
+M_,;\QL;\``````````#`P/S&QOP``````````,;&YK:VY@``````````?,8<
+M!L9\``````````#6UM;6UOX``````````'S&'@;&?```````````UM;6UM;^
+M`@8```````#&QL9^!@8``````````.!@?&9F?```````G+:VMO:VMK:<````
+M```^9L;&QO[&QL8``````/[`P/S&QL;&_```````S,S,S,S,S,S^`@8````\
+M;&QL;&QL;/[&@@```/[&P,#PP,#&_@``````?-;6UM;6?!`X``````#^QL#`
+MP,#`P,```````,;&;#@X;,;&Q@``````QL;&SM[VYL;&``````S:QL;.WO;F
+MQL8``````,;,V/#PV,S&Q@``````'C9FQL;&QL;&``````""QL;N[O[6QL8`
+M`````,;&QL;^QL;&Q@``````?L;&QL;&QL;\``````#^QL;&QL;&QL8`````
+M`'[&QL;&?C9FQ@``````_,;&QL;\P,#```````!\QL;`P,#&QGP``````'Y^
+M6A@8&!@8&```````QL;&QL9^!L9\``````#6UM94?-;6UM8``````/S&QL;\
+MQL;&_```````P,#`_,;&QL;\``````#&QL;FMK:VMN8``````'S&!AP&!L;&
+M?`````#6UM;6UM;6UM;^``````!\Q@8>!@;&QGP`````UM;6UM;6UM;6_@(&
+=````QL;&QL9^!@8&``````#@X&!\9F9F9GP`````
+`
+end
diff --git a/share/syscons/fonts/koi8-u-8x16.fnt b/share/syscons/fonts/koi8-u-8x16.fnt
new file mode 100644
index 0000000..5b7b880
--- /dev/null
+++ b/share/syscons/fonts/koi8-u-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 644 koi8-u-8x16
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````8/#P\&!@8`!@8
+M``````!F9F8D``````````````````!L;/YL;&S^;&P`````&!A\QL+`?`8&
+MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
+M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
+M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
+M`````````/X````````````````````````8&````````````@8,&#!@P(``
+M```````X;,;&UM;&QFPX````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
+MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
+M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
+MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
+M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
+M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8`````````'S&QM[>WMS`
+M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
+MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
+M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
+M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
+M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
+M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
+MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
+M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
+MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
+M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
+M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
+M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
+M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
+M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
+M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
+M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
+MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
+M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
+M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
+M````9F9F9F8\&````````````,;&UM;6_FP```````````#&;#@X.&S&````
+M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
+M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
+M````````````````````````````````````````_P``````````&!@8&!@8
+M&!@8&!@8&!@8&``````````?&!@8&!@8&!@`````````^!@8&!@8&!@8&!@8
+M&!@8&!\``````````!@8&!@8&!CX```````````8&!@8&!@8'Q@8&!@8&!@8
+M&!@8&!@8&/@8&!@8&!@8&`````````#_&!@8&!@8&!@8&!@8&!@8_P``````
+M````&!@8&!@8&/\8&!@8&!@8&/________\`````````````````````____
+M______________________________#P\/#P\/#P\/#P\/#P\/`/#P\/#P\/
+M#P\/#P\/#P\/$4011!%$$4011!%$$4011%6J5:I5JE6J5:I5JE6J5:K==]UW
+MW7?==]UWW7?==]UW```.&QL8&!@8&!@8&!@8&`````!\?'Q\?'Q\````````
+M````````&!@```````````\,#`P,#.QL;#P<````````````=MP`=MP`````
+M```````,&#!@,!@,`'X`````````,!@,!@P8,`!^````````````````````
+M```````8&!@8&!@8&-C8V'```````#AL;#@```````````````!PV#!@R/@`
+M`````````````````````!@``````````````!@8`'X`&!@`````````````
+M_P#_```````````V-C8V-C8V-C8V-C8V-C8V```````?&!\8&!@8&!@8&```
+M;&P`?,;&_,#&?````````````'S&P/#`QGP````````````_,#<V-C8V-C8V
+M-@``$!``.!@8&!@8/````````"@H`#@8&!@8&#P```````````#^!O8V-C8V
+M-C8V-A@8&!@8'Q@?```````````V-C8V-C8V/P``````````-C8V-C8W,#\`
+M`````````!@8&!@8^!CX````````````````!O[`P,#`P,``````-C8V-C;V
+M!OX``````````!@8&!@8'Q@?&!@8&!@8&!@V-C8V-C8V-S8V-C8V-C8V-C8V
+M-C8W,#<V-C8V-C8V-A@8&!@8^!CX&!@8&!@8&!AF9@#^QL#`\,#`QOX`````
+M```\9L#`^,#`P&8\`````#8V-C8V]@;V-C8V-C8V-C8`&``\&!@8&!@8&#P`
+M`````&8`/!@8&!@8&!@\````````````_P#W-C8V-C8V-C88&!@8&/\`_P``
+M````````-C8V-C8V-O\``````````#8V-C8V]P#_```````````8&!@8&/\8
+M_Q@8&!@8&!@8``;^P,#`P,#`P,#``````#8V-C8V]P#W-C8V-C8V-C8``'R"
+MNJJBHJ*JNH)\``````````"<MK;VMK:<````````````?,;&QO[&Q@``````
+M`````/[`_,;&QOP```````````#,S,S,S,S^!@P`````````/&QL;&QL_L:"
+M`````````'S&QOS`QGP``````````!!\UM;6UM9\$#@`````````_L;"P,#`
+MP````````````,9L.#ALQL8```````````#&QL[>]N;&``````````P8QL;.
+MWO;FQ@```````````,;,V/C8S,8````````````^9F9F9F;&````````````
+MQN[^UL;&Q@```````````,;&QO[&QL8```````````!^QL;&QL;\````````
+M````_L;&QL;&Q@```````````'[&QGXV9L8```````````#\QL;&QL;\P,#`
+M````````?,;`P,+&?````````````'Y:&!@8&!@```````````#&QL;&QL9^
+M!L9\````````UM;6?-;6U@```````````/S&QOS&QOP```````````#`P/S&
+MQL;\````````````QL;FMK:VY@```````````'S&!AP&QGP```````````#6
+MUM;6UM;^````````````?,8&'@;&?````````````-;6UM;6UOX"!@0`````
+M``#&QL;&?@8&````````````X&!\9F9F?````````)RVMK;VMK:VMIP`````
+M```^9L;&QO[&QL;&````````_L#`P/S&QL;&_````````,S,S,S,S,S,S/X"
+M!@0````\;&QL;&QL;&S^QH(`````_L;`P/#`P,#&_@```````'S6UM;6UM9\
+M$#@```````#^QL#`P,#`P,#`````````QL9L.#ALQL;&Q@```````,;&QL;.
+MWO;FQL8```````S:QL;&SM[VYL;&````````QLS8\/#8S,;&Q@```````!XV
+M9L;&QL;&QL8```````#&QN[N_O[6UL;&````````QL;&QO[&QL;&Q@``````
+M`'[&QL;&QL;&QOP```````#^QL;&QL;&QL;&````````?L;&QL9^-F;&Q@``
+M`````/S&QL;&QOS`P,````````!\QL;`P,#`QL9\````````?GY:&!@8&!@8
+M&````````,;&QL;&QGX&QGP```````#6UM94?-;6UM;6````````_,;&QOS&
+MQL;&_````````,#`P,#\QL;&QOP```````#&QL;&YK:VMK;F````````?,8&
+M!AP&!L;&?````````-;6UM;6UM;6UOX```````!XS`8&'AX&!LQX````````
+MUM;6UM;6UM;6_@(&!````,;&QL;&?@8&!@8```````#@X&!@?&9F9F9\````
+!````
+`
+end
diff --git a/share/syscons/fonts/koi8-u-8x8.fnt b/share/syscons/fonts/koi8-u-8x8.fnt
new file mode 100644
index 0000000..a27eb8a
--- /dev/null
+++ b/share/syscons/fonts/koi8-u-8x8.fnt
@@ -0,0 +1,50 @@
+# $FreeBSD$
+begin 644 koi8-u-8x8
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M````````````````````````````````````````````````````,'AX,#``
+M,`!L;&P``````&QL_FS^;&P`,'S`>`SX,```QLP8,&;&`#AL.';<S'8`8&#`
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````,##\,#``````````,#!@
+M````_````````````#`P``8,&#!@P(``?,;.WO;F?``P<#`P,##\`'C,##A@
+MS/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`.&#`^,S,>`#\S`P8,#`P`'C,
+MS'C,S'@`>,S,?`P8<```,#```#`P```P,```,#!@&#!@P&`P&````/P``/P`
+M`&`P&`P8,&``>,P,&#``,`!\QM[>WL!X`#!XS,S\S,P`_&9F?&9F_``\9L#`
+MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
+M,#`P,#!X`!X,#`S,S'@`YF9L>&QFY@#P8&!@8F;^`,;N_O[6QL8`QN;VWL[&
+MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,X'`<S'@`_+0P
+M,#`P>`#,S,S,S,S\`,S,S,S,>#``QL;&UO[NQ@#&1&PX.&S&`,S,S'@P,'@`
+M_L:,&#)F_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'@,?,Q\`&!@8'QF9GP```!XS,#,>``,#`Q\S,Q\````
+M>,S\P'@`.&Q@\&!@\````'S,S'P,^&!@?&9F9F8`,`!P,#`P>``,``P,#`QL
+M.&!@9FQX;&8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````'QF
+M9GQ@8```?,S,?`P,``#<=F9@\````'S`>`SX`!`P?#`P-!@```#,S,S,?```
+M`,S,S'@P````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP``````````````````````/\`````&!@8
+M&!@8&!@````?&!@8&````/@8&!@8&!@8'P`````8&!CX`````!@8&!\8&!@8
+M&!@8^!@8&!@```#_&!@8&!@8&/\`````&!@8_Q@8&!C___\``````````/__
+M_______________P\/#P\/#P\`\/#P\/#P\/$4011!%$$415JE6J5:I5JMUW
+MW7?==]UW#AL;&!@8&!@``'Q\?'P````````8`````P(&!,QH.!``=MP`=MP`
+M```,&#!@,!@,`#`8#`8,&#```````$)^`!@8&!@8V-AP`#AL;#@````P2!`@
+M>````````#@X`````!@8`'X`&!@`_P#_`````#8V-C8V-C8V`!\8'Q@8&!@D
+M`#QF?F`\````?,#XP'P``#\P-S8V-C8@`'`P,#!X`%``<#`P,'@``/X&]C8V
+M-C88'Q@?`````#8V-C\`````-C<P/P`````8^!CX```````&?F!@8&``-O8&
+M_@`````8'Q@?&!@8&#8V-C<V-C8V-C<P-S8V-C88^!CX&!@8&&8`?F!\8'X`
+M/&;`^,!F/``V]@;V-C8V-C!X,#`P,'@`2'@P,#`P>```_P#W-C8V-AC_`/\`
+M````-C8V_P`````V]P#_`````!C_&/\8&!@8!GY@8&!@8``V]P#W-C8V-CQ"
+MF:&AF4(\``#.V_O;S@```'@,?,QV```\8#QF9CP```!F9F9F?P,``#QL;&S^
+MQ@``/&9^8#P```!^V]M^&````'Y@8&!@````9CP8/&8```!F;GYV9@``&&9N
+M?G9F````9FQX;&8````>-F9F9@```,;^_M;&````9F9^9F8````\9F9F/```
+M`'YF9F9F````/F8^-F8```!\9F9\8````#QF8&8\````?A@8&!@```!F9CX&
+M/````-M^/'[;````?&9\9GP```!@8'QF?````,;&]M[V````/&8,9CP```#;
+MV]O;_P```'P&/@9\````V]O;V_\#``!F9CX&!@```.!@?&9\`,[;V_O;V\X`
+M'C9F9GYF9@!\8&!\9F9\`&9F9F9F9G\#.&QL;&QL_L9^8&!\8&!^`'[;V]M^
+M&!@`?F!@8&!@8`!F9CP8/&9F`&9F;GYV9F8`/&9N?G9F9@!F;'AP>&QF`!XV
+M9F9F9F8`QN[^_M;&Q@!F9F9^9F9F`#QF9F9F9CP`?F9F9F9F9@`^9F9F/C9F
+M`'QF9F9\8&``/&9@8&!F/`!^&!@8&!@8`&9F9CX&9CP`V]M^/'[;VP!\9F9\
+M9F9\`&!@8'QF9GP`QL;&]M[>]@`\9@8<!F8\`-O;V]O;V_\`>(P&/@:,>`#;
+7V]O;V]O_`V9F9CX&!@8`X&!@?&9F?```
+`
+end
diff --git a/share/syscons/fonts/swiss-1131-8x16.fnt b/share/syscons/fonts/swiss-1131-8x16.fnt
new file mode 100644
index 0000000..c5ed887
--- /dev/null
+++ b/share/syscons/fonts/swiss-1131-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 600 swiss-1131-8x16
+M`````````!``````````````/$*!YZ69@9E"/````````#Q^_YG;Y__G?CP`
+M````````;/[^_O[^?#@0```````````0.'S^?#@0`````````#@X$-;^UA`X
+M?'P````````0.'S^_E00.'Q\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C!XS,S,S'@````````\9F9F/!A^&!@8```````@,#@\-C8P</#P8```````
+M`#XB/B(B(B(F;N1`````````$))4*,8H5)(0````````0&!P>'Q^?'AP8$``
+M``````(&#AX^?CX>#@8"````````&#Q^&!@8&'X\&```````9F9F9F9F9@!F
+M9@```````'[T]/1T%!04%!0``````!XP>-S.YW,['@QX````````````````
+M_O[^_@```````!@\?A@8&!@8?CP8`/\````8/'X8&!@8&!@8&```````&!@8
+M&!@8&!A^/!@```````````P&_P8,```````````````P8/]@,```````````
+M,V;N`````````````````````"1F_V8D`````````````!@\/'Y^__\`````
+M``````#__WY^/#P8```````````````````````````````8&!@8&!@8```8
+M&```````=V;,`````````````````&QL;/YL;&S^;&QL`````!!\UM#0<#@<
+M%A;6?!``````QL8,#!@P,&!@QL8``````#AL;#APUMS,S,QV```````<&#``
+M```````````````,&!@P,#`P,#`P&!@,````,!@8#`P,#`P,#!@8,```````
+M```8&/\\/&8`````````````&!A^&!@``````````````````````!P8,```
+M`````````'X`````````````````````````&!@``````P,&!@P,&!@P,&!@
+MP,````!\QL;&UM;6QL;&?```````&!@X>!@8&!@8&'X``````'S&!@8,&#!@
+MP,#^``````!\Q@8&/`8&!@;&?```````#`S,S,S,_@P,#`P``````/[`P,#\
+M!@8&!L9\```````\8,#`_,;&QL;&?```````_@8&#`P8&#`P,#```````'S&
+MQL9\QL;&QL9\``````!\QL;&QGX&!@P8<``````````8&``````8&```````
+M````&!@`````'!@P```````&#!@P8,!@,!@,!@```````````'X``'X`````
+M`````,!@,!@,!@P8,&#```````!\Q@8&#!@P,``P,```````?,;&QM[>WM[<
+MP'P``````#@X.&QL;'S&QL;&``````#\QL;&_,;&QL;&_```````/&;`P,#`
+MP,#`9CP``````/C,QL;&QL;&QLSX``````#^P,#`_,#`P,#`_@``````_L#`
+MP/S`P,#`P,```````#QFP,#`SL;&QF8\``````#&QL;&QO[&QL;&Q@``````
+M/!@8&!@8&!@8&#P``````!X&!@8&!@;&QL9\``````#&QLS8\.#PV,S&Q@``
+M````P,#`P,#`P,#`P/X``````,;N_O[6UL;&QL;&``````#&YO;^WL[&QL;&
+MQ@``````?,;&QL;&QL;&QGP``````/S&QL;&_,#`P,#```````!\QL;&QL;&
+MQO;>?`P&````_,;&QL;\V,S,QL8``````'S&P,!@.`P&!L9\``````#_&!@8
+M&!@8&!@8&```````QL;&QL;&QL;&QGP``````,;&QL;&;&QL.#@0``````#&
+MQL;&QM;6_N[&Q@``````QL9L;#@X.&QLQL8``````,/#9F8\/!@8&!@8````
+M``#^!@P,&!@P8&#`_@``````/#`P,#`P,#`P,#P`````P,!@8#`P&!@,#`8&
+M`P,````\#`P,#`P,#`P,/``````0.&S&````````````````````````````
+M````_P````!P,!@``````````````````````'P&?L;&QGX``````,#`P,#\
+MQL;&QL;\````````````?,;`P,#&?```````!@8&!G[&QL;&QGX`````````
+M``!\QO[`P,9\```````\9F!@\&!@8&!@8````````````'[&QL;&QGX&QGP`
+M`,#`P,#\QL;&QL;&```````8&```&!@8&!@8&```````!@8```8&!@8&!@;&
+MQGP```#`P,#&S-CPV,S&```````X&!@8&!@8&!@8/````````````.S^_M;&
+MQL8```````````#\QL;&QL;&````````````?,;&QL;&?````````````/S&
+MQL;&QOS`P,````````!^QL;&QL9^!@8&````````_,;`P,#`P```````````
+M`'S`<!P&!GP````````0,##\,#`P,#`<````````````QL;&QL;&?```````
+M`````,;&;&PX.!````````````#&QL;6UO[&````````````QFPX.#ALQ@``
+M`````````,;&QL;&QGX&QGP```````#^!@P8,&#^```````.&!@8,&`P&!@8
+M#@`````8&!@8&!@8&!@8&!@``````'`8&!@,!@P8&!AP``````!VW```````
+M```````````````0.&S&QL;^`````````#@X.&QL;'S&QL;&``````#\P,#`
+M_,;&QL;&_```````_,;&QOS&QL;&QOP``````/[`P,#`P,#`P,#````````\
+M9F9F9F9F9F9F?L-F````_L#`P/S`P,#`P/X``````-;65'PX.#A\5-;6````
+M``!\Q@8&/`8&!@;&?```````QL[>_O;FQL;&QL8```!$.,;.WO[VYL;&QL;&
+M``````#&QLS8\.#PV,S&Q@``````.#@X;&QL;,;&QL8``````,;N_O[6UL;&
+MQL;&``````#&QL;&QO[&QL;&Q@``````?,;&QL;&QL;&QGP``````/[&QL;&
+MQL;&QL;&``````#\QL;&QOS`P,#`P```````/&;`P,#`P,#`9CP``````/\8
+M&!@8&!@8&!@8``````#&QL;&QGX&!@;&?```````$'S6UM;6?!`0$!``````
+M`,;&;&PX.#AL;,;&``````#&QL;&QL;&QL;&_@,&````QL;&QL9^!@8&!@8`
+M`````-;6UM;6UM;6UM;^``````#6UM;6UM;6UM;6_@,&````\+`P,#PV-C8V
+M-CP``````,;&QL;RVMK:VMKV```````P,#`P/#8V-C8V/```````?,8&!CX&
+M!@8&QGP``````)RVMK;VMK:VMK:<``````!^QL;&QGXV9F;&Q@``````````
+M`'P&?L;&QGX```````````#\P/S&QL;\````````````_,;&_,;&_```````
+M`````/S`P,#`P,`````````````\9F9F9F;_PV8`````````?,;^P,#&?```
+M`````````-9\.#@X?-8```````````!\Q@8\!L9\````````````QL;.WO;F
+MQ@```````$0X`,;&SM[VYL8```````````#&S-CPV,S&````````````$#@X
+M;&S&Q@```````````,;N_O[6QL8```````````#&QL;^QL;&````````````
+M?,;&QL;&?````````````/[&QL;&QL8```!$$4011!%$$4011!%$$401JE6J
+M5:I5JE6J5:I5JE6J57?==]UWW7?==]UWW7?==]T8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&!CX&!@8&!@8&!@8&!@8&/@8^!@8&!@8&!@V-C8V-C8V-O8V-C8V
+M-C8V``````````#^-C8V-C8V-@```````/@8^!@8&!@8&!@V-C8V-C;V!O8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@```````/X&]C8V-C8V-C8V-C8V-C;V
+M!OX`````````-C8V-C8V-C;^`````````!@8&!@8&/@8^```````````````
+M`````/@8&!@8&!@8&!@8&!@8&!@?`````````!@8&!@8&!@8_P``````````
+M`````````/\8&!@8&!@8&!@8&!@8&!@?&!@8&!@8&```````````_P``````
+M```8&!@8&!@8&/\8&!@8&!@8&!@8&!@8'Q@?&!@8&!@8&#8V-C8V-C8V-S8V
+M-C8V-C8V-C8V-C8W,#\`````````````````/S`W-C8V-C8V-C8V-C8V-O<`
+M_P````````````````#_`/<V-C8V-C8V-C8V-C8V-S`W-C8V-C8V-@``````
+M`/\`_P`````````V-C8V-C;W`/<V-C8V-C8V&!@8&!@8_P#_`````````#8V
+M-C8V-C8V_P````````````````#_`/\8&!@8&!@8``````````#_-C8V-C8V
+M-C8V-C8V-C8V/P`````````8&!@8&!@?&!\`````````````````'Q@?&!@8
+M&!@8&```````````/S8V-C8V-C8V-C8V-C8V-O\V-C8V-C8V&!@8&!@8_P#_
+M&!@8&!@8&!@8&!@8&!@8^````````````````````!\8&!@8&!@8________
+M_____________P``````````___________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#___________``````````````````#\QL;&QL;\P,#`
+M````````?,;`P,#&?````````````'X8&!@8&!@```````````#&QL;&QL9^
+M!L9\````````?-;6UM;6?!`0$````````,9L.#@X;,8```````````#&QL;&
+MQL;^`P8`````````QL;&?@8&!@```````````-;6UM;6UOX```````````#6
+MUM;6UM;^`P8`````````\+`P/#8V/````````````,;&QOK.SOH`````````
+M``!@8&!\9F9\````````````?,8&/@;&?````````````,S6UO;6ULP`````
+M``````!^QL9^-F;&````;&P`_L#`_,#`P,#`_@```````&QL`'S&_L#`QGP`
+M`````'S&P,#XP,#`P,9\````````````?,;`^,#&?````"0D`#P8&!@8&!@8
+M&#P``````#8V```8&!@8&!@8````1#@`QL;&QGX&!@;&?````````$0X`,;&
+MQL;&QGX&QGP8&``\&!@8&!@8&!@\```````8&```&!@8&!@8&```````````
+M```8&`````````````!F9CQF9F9F/&9F````!@;^P,#`P,#`P,#`P```````
+M```,#/S`P,#`P,`````````````8/#P8````````````````````````````
+!````
+`
+end
diff --git a/share/syscons/fonts/swiss-1251-8x16.fnt b/share/syscons/fonts/swiss-1251-8x16.fnt
new file mode 100644
index 0000000..c686206
--- /dev/null
+++ b/share/syscons/fonts/swiss-1251-8x16.fnt
@@ -0,0 +1,96 @@
+# $FreeBSD$
+begin 600 swiss-1251-8x16
+M`````````!``````````````/$*!YZ69@9E"/````````#Q^_YG;Y__G?CP`
+M````````;/[^_O[^?#@0```````````0.'S^?#@0`````````#@X$-;^UA`X
+M?'P````````0.'S^_E00.'Q\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C!XS,S,S'@````````\9F9F/!A^&!@8```````@,#@\-C8P</#P8```````
+M`#XB/B(B(B(F;N1`````````$))4*,8H5)(0````````0&!P>'Q^?'AP8$``
+M``````(&#AX^?CX>#@8"````````&#Q^&!@8&'X\&```````9F9F9F9F9@!F
+M9@```````'[T]/1T%!04%!0``````!XP>-S.YW,['@QX````````````````
+M_O[^_@```````!@\?A@8&!@8?CP8`/\````8/'X8&!@8&!@8&```````&!@8
+M&!@8&!A^/!@```````````P&_P8,```````````````P8/]@,```````````
+M,V;N`````````````````````"1F_V8D`````````````!@\/'Y^__\`````
+M``````#__WY^/#P8```````````````````````````````8&!@8&!@8```8
+M&```````=V;,`````````````````&QL;/YL;&S^;&QL`````!!\UM#0<#@<
+M%A;6?!``````QL8,#!@P,&!@QL8``````#AL;#APUMS,S,QV```````<&#``
+M```````````````,&!@P,#`P,#`P&!@,````,!@8#`P,#`P,#!@8,```````
+M```8&/\\/&8`````````````&!A^&!@``````````````````````!P8,```
+M`````````'X`````````````````````````&!@``````P,&!@P,&!@P,&!@
+MP,````!\QL;&UM;6QL;&?```````&!@X>!@8&!@8&'X``````'S&!@8,&#!@
+MP,#^``````!\Q@8&/`8&!@;&?```````#`S,S,S,_@P,#`P``````/[`P,#\
+M!@8&!L9\```````\8,#`_,;&QL;&?```````_@8&#`P8&#`P,#```````'S&
+MQL9\QL;&QL9\``````!\QL;&QGX&!@P8<``````````8&``````8&```````
+M````&!@`````'!@P```````&#!@P8,!@,!@,!@```````````'X``'X`````
+M`````,!@,!@,!@P8,&#```````!\Q@8&#!@P,``P,```````?,;&QM[>WM[<
+MP'P``````#@X.&QL;'S&QL;&``````#\QL;&_,;&QL;&_```````/&;`P,#`
+MP,#`9CP``````/C,QL;&QL;&QLSX``````#^P,#`_,#`P,#`_@``````_L#`
+MP/S`P,#`P,```````#QFP,#`SL;&QF8\``````#&QL;&QO[&QL;&Q@``````
+M/!@8&!@8&!@8&#P``````!X&!@8&!@;&QL9\``````#&QLS8\.#PV,S&Q@``
+M````P,#`P,#`P,#`P/X``````,;N_O[6UL;&QL;&``````#&YO;^WL[&QL;&
+MQ@``````?,;&QL;&QL;&QGP``````/S&QL;&_,#`P,#```````!\QL;&QL;&
+MQO;>?`P&````_,;&QL;\V,S,QL8``````'S&P,!@.`P&!L9\``````#_&!@8
+M&!@8&!@8&```````QL;&QL;&QL;&QGP``````,;&QL;&;&QL.#@0``````#&
+MQL;&QM;6_N[&Q@``````QL9L;#@X.&QLQL8``````,/#9F8\/!@8&!@8````
+M``#^!@P,&!@P8&#`_@``````/#`P,#`P,#`P,#P`````P,!@8#`P&!@,#`8&
+M`P,````\#`P,#`P,#`P,/``````0.&S&````````````````````````````
+M````_P````!P,!@``````````````````````'P&?L;&QGX``````,#`P,#\
+MQL;&QL;\````````````?,;`P,#&?```````!@8&!G[&QL;&QGX`````````
+M``!\QO[`P,9\```````\9F!@\&!@8&!@8````````````'[&QL;&QGX&QGP`
+M`,#`P,#\QL;&QL;&```````8&```&!@8&!@8&```````!@8```8&!@8&!@;&
+MQGP```#`P,#&S-CPV,S&```````X&!@8&!@8&!@8/````````````.S^_M;&
+MQL8```````````#\QL;&QL;&````````````?,;&QL;&?````````````/S&
+MQL;&QOS`P,````````!^QL;&QL9^!@8&````````_,;`P,#`P```````````
+M`'S`<!P&!GP````````0,##\,#`P,#`<````````````QL;&QL;&?```````
+M`````,;&;&PX.!````````````#&QL;6UO[&````````````QFPX.#ALQ@``
+M`````````,;&QL;&QGX&QGP```````#^!@P8,&#^```````.&!@8,&`P&!@8
+M#@`````8&!@8&!@8&!@8&!@``````'`8&!@,!@P8&!AP``````!VW```````
+M```````````````0.&S&QL;^`````````/Q@8&!^8V-C8V=L````&#``_L#`
+MP,#`P,#`P```````````````````'!@P```````8,`#\P,#`P,#`````````
+M``````````!W9LP`````````````````V]L`````````&!A^&!@8&!@8````
+M`````!@8?A@8?A@8&```````'C(P?C!^,#`R'@```````,;&#`P8,#!@8-O;
+M```````X>-C8WMO;V]O;W@``````````#!@P,!@,`````````-C8V-C8_MO;
+MV]O>````&#``QLS8\.#PV,S&Q@``````_&!@8'YC8V-C8V,``````,;&QL;&
+MQL;&QL;^.#@```!@8/A@?&9F9F9F9@P8````#!@X`````````````````!P8
+M,``````````````````S9NX`````````````````=V;,````````````````
+M```````8/#P8`````````````````'X```````````````````#_````````
+M`````````````````````````````/%;55$``````````````````#A8V-[;
+MV]X``````````&`P&!@P8```````````````V-C8_MO;W@```````!@P`,;,
+MV/#8S,8``````&!@^&!\9F9F9F9F````````````QL;&QL;&_C@X````````
+M``````````````!$.,;&QL;&?@8&!L9\````````1#@`QL;&QL;&?@;&?```
+M'@8&!@8&!L;&QGP```````!F9CQF9F9F/&9F````!@;^P,#`P,#`P,#`P```
+M```8&!@8&!@8&!@8&!@`````'C!XW,[G<SL>#'@`````;&P`_L#`_,#`P,#`
+M_@``````/F-=45%=8SX``````````#QFP,#`_,#`P&8\```````````V;-C8
+M;#8``````````````/X&!@8`````````````````?@`````````````^8UU5
+M655C/@```````&9F`!@8&!@8&!@8&!@``````#AL;#@`````````````````
+M`!@8?A@8``#_`````!@8`#P8&!@8&!@8&#P``````!@8```8&!@8&!@8````
+M``````P,_,#`P,#`P```````````9F9F9F9F?&!@P````'[T]/1T%!04%!0`
+M`````````````!@8`````````````&QL`'S&_L#`QGP``````,C(ZNW=VLC/
+MR,C(````````````?,;`^,#&?```````````V&PV-FS8``````````8&```&
+M!@8&!@8&QL9\``!\QL#`8#@,!@;&?````````````'S`<!P&!GP``````&9F
+M`!@8&!@8&!@````````X.#AL;&Q\QL;&Q@``````_,#`P/S&QL;&QOP`````
+M`/S&QL;\QL;&QL;\``````#^P,#`P,#`P,#`P```````/&9F9F9F9F9F9G[#
+M9@```/[`P,#\P,#`P,#^``````#6UE1\.#@X?%36U@``````?,8&!CP&!@8&
+MQGP``````,;.WO[VYL;&QL;&````1#C&SM[^]N;&QL;&Q@``````QL;,V/#@
+M\-C,QL8``````#@X.&QL;&S&QL;&``````#&[O[^UM;&QL;&Q@``````QL;&
+MQL;^QL;&QL8``````'S&QL;&QL;&QL9\``````#^QL;&QL;&QL;&Q@``````
+M_,;&QL;\P,#`P,```````#QFP,#`P,#`P&8\``````#_&!@8&!@8&!@8&```
+M````QL;&QL9^!@8&QGP``````!!\UM;6UGP0$!`0``````#&QFQL.#@X;&S&
+MQ@``````QL;&QL;&QL;&QOX#!@```,;&QL;&?@8&!@8&``````#6UM;6UM;6
+MUM;6_@``````UM;6UM;6UM;6UOX#!@```/"P,#`\-C8V-C8\``````#&QL;&
+M]M[>WM[>]@``````,#`P,#PV-C8V-CP``````'S&!@8^!@8&!L9\``````"<
+MMK:V]K:VMK:VG```````?L;&QL9^-F9FQL8```````````!\!G[&QL9^````
+M````````_,#\QL;&_````````````/S&QOS&QOP```````````#\P,#`P,#`
+M````````````/&9F9F9F_\-F`````````'S&_L#`QGP```````````#6?#@X
+M.'S6````````````?,8&/`;&?````````````,;&SM[VYL8```````!$.`#&
+MQL[>]N;&````````````QLS8\-C,Q@```````````!`X.&QLQL8`````````
+M``#&[O[^UL;&````````````QL;&_L;&Q@```````````'S&QL;&QGP`````
+M``````#^QL;&QL;&````````````_,;&QL;&_,#`P````````'S&P,#`QGP`
+M``````````!^&!@8&!@8````````````QL;&QL;&?@;&?````````'S6UM;6
+MUGP0$!````````#&;#@X.&S&````````````QL;&QL;&_@,&`````````,;&
+MQGX&!@8```````````#6UM;6UM;^````````````UM;6UM;6_@,&````````
+M`/"P,#PV-CP```````````#&QL;ZSL[Z````````````8&!@?&9F?```````
+M`````'S&!CX&QGP```````````#,UM;VUM;,````````````?L;&?C9FQ@``
+!````
+`
+end
diff --git a/share/syscons/fonts/swiss-8x16.fnt b/share/syscons/fonts/swiss-8x16.fnt
new file mode 100644
index 0000000..eaa92a8
--- /dev/null
+++ b/share/syscons/fonts/swiss-8x16.fnt
@@ -0,0 +1,95 @@
+begin 644 swiss-8x16
+M`````````!``````````````/$*!YZ69@9E"/````````#Q^_YG;Y__G?CP`
+M````````;/[^_O[^?#@0```````````0.'S^?#@0`````````#@X$-;^UA`X
+M?'P````````0.'S^_E00.'Q\`````````````!@\/!@```````#________G
+MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
+M&C!XS,S,S'@````````\9F9F/!A^&!@8```````@,#@\-C8P</#P8```````
+M`#XB/B(B(B(F;N1`````````$))4*,8H5)(0````````0&!P>'Q^?'AP8$``
+M``````(&#AX^?CX>#@8"````````&#Q^&!@8&'X\&```````9F9F9F9F9@!F
+M9@```````'[T]/1T%!04%!0``````!XP>-S.YW,['@QX````````````````
+M_O[^_@```````!@\?A@8&!@8?CP8`/\````8/'X8&!@8&!@8&```````&!@8
+M&!@8&!A^/!@```````````P&_P8,```````````````P8/]@,```````````
+M,V;N`````````````````````"1F_V8D`````````````!@\/'Y^__\`````
+M``````#__WY^/#P8```````````````````````````````8&!@8&!@8```8
+M&```````=V;,`````````````````&QL;/YL;&S^;&QL`````!!\UM#0<#@<
+M%A;6?!``````QL8,#!@P,&!@QL8``````#AL;#APUMS,S,QV```````<&#``
+M```````````````,&!@P,#`P,#`P&!@,````,!@8#`P,#`P,#!@8,```````
+M```8&/\\/&8`````````````&!A^&!@``````````````````````!P8,```
+M`````````'X`````````````````````````&!@``````P,&!@P,&!@P,&!@
+MP,````!\QL;&UM;6QL;&?```````&!@X>!@8&!@8&'X``````'S&!@8,&#!@
+MP,#^``````!\Q@8&/`8&!@;&?```````#`S,S,S,_@P,#`P``````/[`P,#\
+M!@8&!L9\```````\8,#`_,;&QL;&?```````_@8&#`P8&#`P,#```````'S&
+MQL9\QL;&QL9\``````!\QL;&QGX&!@P8<``````````8&``````8&```````
+M````&!@`````'!@P```````&#!@P8,!@,!@,!@```````````'X``'X`````
+M`````,!@,!@,!@P8,&#```````!\Q@8&#!@P,``P,```````?,;&QM[>WM[<
+MP'P``````#@X.&QL;'S&QL;&``````#\QL;&_,;&QL;&_```````/&;`P,#`
+MP,#`9CP``````/C,QL;&QL;&QLSX``````#^P,#`_,#`P,#`_@``````_L#`
+MP/S`P,#`P,```````#QFP,#`SL;&QF8\``````#&QL;&QO[&QL;&Q@``````
+M/!@8&!@8&!@8&#P``````!X&!@8&!@;&QL9\``````#&QLS8\.#PV,S&Q@``
+M````P,#`P,#`P,#`P/X``````,;N_O[6UL;&QL;&``````#&YO;^WL[&QL;&
+MQ@``````?,;&QL;&QL;&QGP``````/S&QL;&_,#`P,#```````!\QL;&QL;&
+MQO;>?`P&````_,;&QL;\V,S,QL8``````'S&P,!@.`P&!L9\``````#_&!@8
+M&!@8&!@8&```````QL;&QL;&QL;&QGP``````,;&QL;&;&QL.#@0``````#&
+MQL;&QM;6_N[&Q@``````QL9L;#@X.&QLQL8``````,/#9F8\/!@8&!@8````
+M``#^!@P,&!@P8&#`_@``````/#`P,#`P,#`P,#P`````P,!@8#`P&!@,#`8&
+M`P,````\#`P,#`P,#`P,/``````0.&S&````````````````````````````
+M````_P````!P,!@``````````````````````'P&?L;&QGX``````,#`P,#\
+MQL;&QL;\````````````?,;`P,#&?```````!@8&!G[&QL;&QGX`````````
+M``!\QO[`P,9\```````\9F!@\&!@8&!@8````````````'[&QL;&QGX&QGP`
+M`,#`P,#\QL;&QL;&```````8&```&!@8&!@8&```````!@8```8&!@8&!@;&
+MQGP```#`P,#&S-CPV,S&```````X&!@8&!@8&!@8/````````````.S^_M;&
+MQL8```````````#\QL;&QL;&````````````?,;&QL;&?````````````/S&
+MQL;&QOS`P,````````!^QL;&QL9^!@8&````````_,;`P,#`P```````````
+M`'S`<!P&!GP````````0,##\,#`P,#`<````````````QL;&QL;&?```````
+M`````,;&;&PX.!````````````#&QL;6UO[&````````````QFPX.#ALQ@``
+M`````````,;&QL;&QGX&QGP```````#^!@P8,&#^```````.&!@8,&`P&!@8
+M#@`````8&!@8&!@8&!@8&!@``````'`8&!@,!@P8&!AP``````!VW```````
+M```````````````0.&S&QL;^`````````#QFP,#`P,#`9CP8F'````!L;`#&
+MQL;&QL9\```````&#!@`?,;^P,#&?```````&#QF`'P&?L;&QGX```````!L
+M;`!\!G[&QL9^``````!@,!@`?`9^QL;&?@`````X;&PX`'P&?L;&QGX`````
+M``````!\QL#`P,9\.)AP```8/&8`?,;^P,#&?````````&QL`'S&_L#`QGP`
+M`````&`P&`!\QO[`P,9\````````9F8`&!@8&!@8&```````&#QF`!@8&!@8
+M&!@``````&`P&``8&!@8&!@8`````&QL$#ALQL;^QL;&Q@`````X;&PX;,;&
+M_L;&QL8`````&##^P,#`_,#`P,#^````````````?)(2?I"0;@```````'Z0
+MD)#\D)"0D)X``````!@\9@!\QL;&QL9\````````;&P`?,;&QL;&?```````
+M8#`8`'S&QL;&QGP``````!@\9@#&QL;&QL9\``````!@,!@`QL;&QL;&?```
+M`````&QL`,;&QL;&QGX&!GP`;`!\QL;&QL;&QL9\`````&QL`,;&QL;&QL;&
+M?``````````8&'[#P,#`PWX8&``````X;&#P8/!@8&;\````````9F9F/!A^
+M&'X8&````````/S&QL;&_,;/QL8'```````.&Q@8&#P8&!@8V'`````&#!@`
+M?`9^QL;&?@``````!@P8`!@8&!@8&!@```````8,&`!\QL;&QL9\```````,
+M&#``QL;&QL;&?````````';<`/S&QL;&QL8`````=MP`QN;V_M[.QL;&````
+M````?`9^QL;&?@``_@```````'S&QL;&QGP``/X````````8```8&!@,!L9\
+M`````````````/[`P,````````````````#^!@8&`````````!@X&!@8`/\`
+M&"P8,#P````8.!@8&`#_`!@X:'P8`````!@``!@8&!@8&!@````````````V
+M;-C8;#8`````````````V&PV-FS8``````!$$4011!%$$4011!%$$401JE6J
+M5:I5JE6J5:I5JE6J57?==]UWW7?==]UWW7?==]T8&!@8&!@8&!@8&!@8&!@8
+M&!@8&!@8&!CX&!@8&!@8&!@8&!@8&/@8^!@8&!@8&!@V-C8V-C8V-O8V-C8V
+M-C8V``````````#^-C8V-C8V-@```````/@8^!@8&!@8&!@V-C8V-C;V!O8V
+M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@```````/X&]C8V-C8V-C8V-C8V-C;V
+M!OX`````````-C8V-C8V-C;^`````````!@8&!@8&/@8^```````````````
+M`````/@8&!@8&!@8&!@8&!@8&!@?`````````!@8&!@8&!@8_P``````````
+M`````````/\8&!@8&!@8&!@8&!@8&!@?&!@8&!@8&```````````_P``````
+M```8&!@8&!@8&/\8&!@8&!@8&!@8&!@8'Q@?&!@8&!@8&#8V-C8V-C8V-S8V
+M-C8V-C8V-C8V-C8W,#\`````````````````/S`W-C8V-C8V-C8V-C8V-O<`
+M_P````````````````#_`/<V-C8V-C8V-C8V-C8V-S`W-C8V-C8V-@``````
+M`/\`_P`````````V-C8V-C;W`/<V-C8V-C8V&!@8&!@8_P#_`````````#8V
+M-C8V-C8V_P````````````````#_`/\8&!@8&!@8``````````#_-C8V-C8V
+M-C8V-C8V-C8V/P`````````8&!@8&!@?&!\`````````````````'Q@?&!@8
+M&!@8&```````````/S8V-C8V-C8V-C8V-C8V-O\V-C8V-C8V&!@8&!@8_P#_
+M&!@8&!@8&!@8&!@8&!@8^````````````````````!\8&!@8&!@8________
+M_____________P``````````___________P\/#P\/#P\/#P\/#P\/#P#P\/
+M#P\/#P\/#P\/#P\/#___________``````````````````!WW,S,WG,`````
+M``!\QL;,V,S&QL;<P,``````_L;&P,#`P,#`P````````````W[L;&QL;&@`
+M``````#^QF`P&#!@P,;^````````````?_#8V-C8<````````````&9F9F9F
+M9GQ@8,```````';<&!@8&!@8````````&!A^V]O;VWX8&````````#ALQL;^
+MQL;&;#@````````\9L/#P\-F9N?G````````'C`8##YF9F9F/```````````
+M`'[;V]M^`````````````P9^S]OS?F#`````````'#!@8'Q@8&`P'```````
+M``!\QL;&QL;&QL8``````````/X``/X``/X````````````8&'X8&```_P``
+M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^``````````X;&Q@8&!@8
+M&!@8&!@8&!@8&!@8&!C8V'```````````!@8`'X`&!@`````````````=MP`
+M=MP``````````#AL;#@``````````````````````!@8````````````````
+M````&`````````````,#!@8,#-AX,!````````#8;&QL;&P`````````````
+M>,P8,&#\````````````````?'Q\?'Q\?```````````````$`@`````````
+!`,P8
+`
+end
diff --git a/share/syscons/fonts/swiss-8x8.fnt b/share/syscons/fonts/swiss-8x8.fnt
new file mode 100644
index 0000000..d95036a
--- /dev/null
+++ b/share/syscons/fonts/swiss-8x8.fnt
@@ -0,0 +1,49 @@
+begin 644 swiss-8x8
+M````$`````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
+MDA!\`!`X?/Y\.'P``!@\/!@``/__Y\/#Y___`#QF0D)F/`#_PYF]O9G#_P\'
+M#WW,S,QX/&9F9CP8?A@_,S\P,'#PX']C?V-C9^;`F5H\Y^<\6IF`X/C^^."`
+M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`/F,X;&PXAOP`````
+M?GY^`!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
+M`,#`P/X````D9O]F)````!@\?O__````__]^/!@`````````````&#P\&!@`
+M&`!L;&P``````&QL_FS^;&P`&'[`?`;\&```QLP8,&;&`#AL.';<S'8`&!@P
+M```````8,&!@8#`8`&`P&!@8,&```&8\_SQF````&!A^&!@`````````&!@P
+M````?@```````````!@8``8,&#!@P(``?,[>]N;&?``P<#`P,##\`'S&!AQP
+MP/X`?,8&/`;&?``,S,S,_@P,`/[`_`8&QGP`/&#`_,;&?`#^!`P8,#`P`'S&
+MQGS&QGP`?,;&?@8,>```&!@``!@8```8&```&!@P&#!@P&`P&````'X`?@``
+M`&`P&`P8,&``?,8,&#``,`!\QM[>W,!\`#ALQL;^QL8`_,;&_,;&_`!\QL#`
+MP,9\`/C,QL;&S/@`_L#`^,#`_@#^P,#XP,#``'S&P,#.QGX`QL;&_L;&Q@!X
+M,#`P,#!X``X&!@;&QGP`QLS8\-C,Q@#`P,#`P,#^`,;N_O[6QL8`QN;VWL[&
+MQ@!\QL;&QL9\`/S&QOS`P,``?,;&QMK,=@#\QL;\V,S&`'S&P'P&QGP`_#`P
+M,#`P,`#&QL;&QL9\`,;&QL9L.!``QL;&QM;^;`#&QFPX;,;&`,S,S'@P,#``
+M_@8,&#!@_@!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
+M``#_,#`8`````````'P&?L9^`,#`_,;&QOP```!\QL#&?``&!G[&QL9^````
+M?,;^P'P`'#8P>#`P,````'[&QGX&_,#`W/;&QL8`,``P,#`P,``,``P,#,S,
+M>&!@9FQX;&8`<#`P,#`P>````,S^_M;6````W.;&QL8```!\QL;&?````/S&
+MQOS`P```?L;&?@8'``#\QL#`P````'[`?`;\`#`P_#`P,#````#&QL;&?@``
+M`,;&;#@0````QL;6_FP```#&;#ALQ@```,;&QGX&_```_@P88/X`'#`PX#`P
+M'``8&!@`&!@8`.`P,!PP,.``=MP`````````$#ALQL;^`'S&P,9\#`9\`,P`
+MS,S,=@`<`'C,_,!X`'Z!/`8^9CL`S`!X#'S,=@#@`'@,?,QV`#`P>`Q\S'8`
+M``!\QL!X##A^@3QF?F`\`,P`>,S\P'@`X`!XS/S`>`#,`'`P,#!X`'R".!@8
+M&#P`X`!P,#`P>`#&$'S&_L;&`#`P`'C,_,P`'`#\8'A@_````'\,?\Q_`#YL
+MS/[,S,X`>(0`>,S,>```S`!XS,QX``#@`'C,S'@`>(0`S,S,=@``X`#,S,QV
+M``#,`,S,?`SXPQ@\9F8\&`#,`,S,S,QX`!@8?L#`?A@8.&QD\&#F_`#,S'@P
+M_##\,/C,S/K&S\;##AL8/!@8V'`<`'@,?,QV`#@`<#`P,'@``!P`>,S,>```
+M'`#,S,QV``#X`+C,S,P`_`#,[/S<S``\;&P^`'X``#AL;#@`?```&``8&#!F
+M/`````#\P,```````/P,#```QLS8-FO"A`_#QLS;-VW/`Q@`&!@\/!@``#-F
+MS&8S````S&8S9LP``"*((H@BB"*(5:I5JE6J5:K;]MMOVW[7[1@8&!@8&!@8
+M&!@8&/@8&!@8&/@8^!@8&#8V-C;V-C8V`````/XV-C8``/@8^!@8&#8V]@;V
+M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````-C8V-OX````8&/@8^```````
+M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
+M`!@8&!C_&!@8&!@?&!\8&!@V-C8V-S8V-C8V-S`_```````_,#<V-C8V-O<`
+M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V&!C_`/\````V
+M-C8V_P``````_P#_&!@8`````/\V-C8V-C8V/P```!@8'Q@?```````?&!\8
+M&!@`````/S8V-C8V-C;_-C8V&!C_&/\8&!@8&!@8^``````````?&!@8____
+M______\`````______#P\/#P\/#P#P\/#P\/#P______````````=MS(W'8`
+M`'C,^,SXP,``_,S`P,#`````_FQL;&P`_,Q@,&#,_````'[8V-AP``!F9F9F
+M?&#``';<&!@8&`#\,'C,S'@P_#ALQO[&;#@`.&S&QFQL[@`<,!A\S,QX````
+M?MO;?@``!@Q^V]M^8,`X8,#XP&`X`'C,S,S,S,P``'X`?@!^```8&'X8&`!^
+M`&`P&#!@`/P`&#!@,!@`_``.&QL8&!@8&!@8&!@8V-AP&!@`?@`8&```=MP`
+M=MP``#AL;#@`````````&!@`````````&`````\,#`SL;#P<6&QL;&P```!P
+7F#!@^```````/#P\/```````"!``````
+`
+end
diff --git a/share/syscons/keymaps/INDEX.keymaps b/share/syscons/keymaps/INDEX.keymaps
new file mode 100644
index 0000000..88246c0
--- /dev/null
+++ b/share/syscons/keymaps/INDEX.keymaps
@@ -0,0 +1,451 @@
+# $FreeBSD$
+#
+# database for kbdmap(8)
+#
+# Format <file>:<lang>:<description>
+#
+# lang: ar bg cs da de el en es fi fr hr hu hy is it iw ja kk ko nl no pl
+# pt ro ru sh sk sl sv tr uk zh
+# lang: lang,lang
+#
+# If lang empty use 'en' (us-english) as default.
+#
+# Example:
+# german.iso.kbd:de:deutsch ISO-8859-1
+# german.iso.kbd:en:german ISO-8859-1
+#
+# See also setlocal
+# /usr/share/locale, /usr/X11/lib/X11/locale/locale.alias
+#
+#
+# Language support: MENU, FONT
+#
+MENU:en:Choose your keyboard language
+MENU:da,no,sv:Vælg dit keyboard layout
+MENU:de:Wählen Sie Ihre Tastaturbelegung
+MENU:fr:Choisissez la nationalité de votre clavier
+MENU:pl:Wybierz uk³ad klawiatury
+MENU:pt:Escolha o layout do teclado
+MENU:es:Seleccione el idioma de su teclado
+MENU:iw:êìù úãì÷îä úôù úà øçá
+MENU:uk:BÉÂÅÒ¦ÔØ ÒÏÚËÌÁÄËÕ ËÌÁצÁÔÕÒÉ
+MENU:el:ÅðéëÝîôå ôï ðëçêôñïëüãéï ôçò êïíóüëáò
+MENU:hy:ÀÝïñ»ù ëï»Õݳ߳ñÇ ¹³ë³íáñáõÃÛáõÝÁ
+#
+FONT:en:cp437-8x16.fnt
+FONT:de,fr,da,no,sv,pt,es:iso-8x16.fnt
+FONT:ru:koi8-r-8x16.fnt
+FONT:pl:iso02-8x16.fnt
+FONT:iw:iso08-8x16.fnt
+FONT:uk:koi8-u-8x16.fnt
+FONT:el:iso07-8x16.fnt
+FONT:hy:haik8-8x16.fnt
+#
+be.iso.kbd:en:Belgian ISO-8859-1
+be.iso.kbd:de:Belgisch ISO-8859-1
+be.iso.kbd:pt,es:Belga ISO-8859-1
+
+be.iso.acc.kbd:en:Belgian ISO-8859-1 (accent keys)
+be.iso.acc.kbd:de:Belgisch ISO-8859-1 (mit Akzenten)
+be.iso.acc.kbd:pt:Belga ISO-8859-1 (com acentos)
+be.iso.acc.kbd:es:Belga ISO-8859-1 (con acentos)
+
+bg.bds.ctrlcaps.kbd:bg:Bulgarian BDS
+bg.phonetic.ctrlcaps.kbd:bg:Bulgarian Phonetic
+
+br275.iso.kbd:en:Brazilian 275 ISO-8859-1
+br275.iso.kbd:de:Brasilianisch 275 ISO-8859-1
+br275.iso.kbd:pt:Brasileiro 275 ISO-8859-1
+br275.iso.kbd:es:Brasileño 275 ISO-8859-1
+
+br275.iso.acc.kbd:en:Brazilian 275 ISO-8859-1 (accent keys)
+br275.iso.acc.kbd:de:Brasilianisch 275 ISO-8859-1 (mit Akzenten)
+br275.iso.acc.kbd:pt:Brasileiro 275 ISO-8859-1 (com acentos)
+br275.iso.acc.kbd:es:Brasileño 275 ISO-8859-1 (con acentos)
+
+br275.cp850.kbd:en:Brazilian 275 Codepage 850
+br275.cp850.kbd:de:Brasilianisch 275 Codeseite 850
+br275.cp850.kbd:pt:Brasileiro 275 Codepage 850
+br275.cp850.kbd:es:Brasileño 275 Codepage 850
+
+by.cp1131.kbd:en:Belarusian Codepage 1131
+by.cp1251.kbd:en:Belarusian Codepage 1251
+by.iso5.kbd:en:Belarusian ISO-8859-5
+
+ce.iso2.kbd:en:Central European ISO-8859-2
+ce.iso2.kbd:de:Zentral Europäisch ISO-8859-2
+ce.iso2.kbd:es:Centroeuropeo ISO-8859-2
+
+colemak.iso15.acc.kbd:en:Colemak ergonomic alternative
+
+cs.latin2.qwertz.kbd:en:Czech ISO-8859-2 (QWERTZ, accent keys)
+cs.latin2.qwertz.kbd:es:Checo ISO-8859-2 (QWERTZ, con acentos)
+
+cz.iso2.kbd:en:Czech ISO-8859-2
+cz.iso2.kbd:de:Tschechisch ISO-8859-2
+cz.iso2.kbd:es:Checo ISO-8859-2
+
+danish.iso.kbd:en:Danish ISO-8859-1
+danish.iso.kbd:da:Dansk ISO-8859-1
+danish.iso.kbd:de:Dänisch ISO-8859-1
+danish.iso.kbd:fr:Danois ISO-8859-1
+danish.iso.kbd:pt:Dinamarquês ISO-8859-1
+danish.iso.kbd:es:Danés ISO-8859-1
+
+danish.cp865.kbd:en:Danish Codepage 865
+danish.cp865.kbd:da:Dansk Code page 865
+danish.cp865.kbd:de:Dänisch Codeseite 865
+danish.cp865.kbd:fr:Danois Code page 865
+danish.cp865.kbd:pt:Dinamarquês Codepage 865
+danish.cp865.kbd:es:Danés Codepage 865
+
+eee_nordic.kbd:en:Nordic layout on Asus eeePC
+
+el.iso07.kbd:en:Greek ISO-8859-7 (104 keys)
+el.iso07.kbd:el:Åëëçíéêü ISO-8859-7 (104 ðëÞêôñùí)
+
+estonian.iso.kbd:en:Estonian ISO-8859-1
+estonian.iso.kbd:de:Estnisch ISO-8859-1
+estonian.iso.kbd:es:Estonio ISO-8859-1
+
+estonian.iso15.kbd:en:Estonian ISO-8859-15
+estonian.iso15.kbd:de:Estnisch ISO-8859-15
+estonian.iso15.kbd:es:Estonio ISO-8859-15
+
+estonian.cp850.kbd:en:Estonian Codepage 850
+estonian.cp850.kbd:de:Estnisch Codeseite 850
+estonian.cp850.kbd:es:Estonio Codepage 850
+
+finnish.iso.kbd:en:Finnish ISO-8859-1
+finnish.iso.kbd:de:Finnisch ISO-8859-1
+finnish.iso.kbd:es:Finlandés ISO-8859-1
+
+finnish.cp850.kbd:en:Finnish Codepage 850
+finnish.cp850.kbd:de:Finnisch Codeseite 850
+finnish.cp850.kbd:es:Finlandés Codepage 850
+
+fr.iso.kbd:en:French ISO-8859-1
+fr.iso.kbd:de:Französisch ISO-8859-1
+fr.iso.kbd:fr:Français ISO-8859-1
+fr.iso.kbd:pt:Francês ISO-8859-1
+fr.iso.kbd:es:Francés ISO-8859-1
+fr.iso.kbd:uk:æÒÁÎÃÕÚØËÁ ISO-8859-1
+
+fr.iso.acc.kbd:en:French ISO-8859-1 (accent keys)
+fr.iso.acc.kbd:de:Französisch ISO-8859-1 (mit Akzenten)
+fr.iso.acc.kbd:fr:Français ISO-8859-1 (accent keys)
+fr.iso.acc.kbd:pt:Francês ISO-8859-1 (com acentos)
+fr.iso.acc.kbd:es:Francés ISO-8859-1 (con acentos)
+fr.iso.acc.kbd:uk:æÒÁÎÃÕÚØËÁ ISO-8859-1 (accent keys)
+
+fr.macbook.acc.kbd:en:French Macbook/Macbook Pro ISO-8859-15 (accent keys)
+fr.macbook.acc.kbd:de:Französisch Macbook/Macbook Pro ISO-8859-15 (mit Aksenten)
+fr.macbook.acc.kbd:fr:Français Macbook/Macbook Pro ISO-8859-15 (accent keys)
+fr.macbook.acc.kbd:pt:Francês Macbook/Macbook Pro ISO-8859-15 (com acentos)
+fr.macbook.acc.kbd:es:Francés Macbook/Macbook Pro ISO-8859-15 (con acentos)
+
+fr.dvorak.kbd:en:French Dvorak-like
+fr.dvorak.kbd:de:Französisch Dvorak
+fr.dvorak.kbd:fr:Français Dvorak
+fr.dvorak.kbd:pt:Francês Dvorak
+fr.dvorak.kbd:es:Francés Dvorak
+fr.dvorak.kbd:uk:French Dvorak-like
+
+fr.dvorak.acc.kbd:en:French Dvorak-like (accent keys)
+fr.dvorak.acc.kbd:de:Französisch Dvorak (mit Akzenten)
+fr.dvorak.acc.kbd:fr:Français Dvorak (accent keys)
+fr.dvorak.acc.kbd:pt:Francês Dvorak (com acentos)
+fr.dvorak.acc.kbd:es:Francés Dvorak (con acentos)
+fr.dvorak.acc.kbd:uk:French Dvorak-like (accent keys)
+
+fr_CA.iso.acc.kbd:en:French Canadian ISO-8859-1 (accent keys)
+fr_CA.iso.acc.kbd:de:Französisch Kanada ISO-8859-1 (mit Akzenten)
+fr_CA.iso.acc.kbd:es:Francocanadiense ISO-8859-1 (con acentos)
+fr_CA.iso.acc.kbd:uk:æÒÁÎÃÕÚØËÏ-ËÁÎÁÄÓØËÁ ISO-8859-1 (accent keys)
+
+german.iso.kbd:en:German ISO-8859-1
+german.iso.kbd:de:Deutsch ISO-8859-1
+german.iso.kbd:fr:Allemand ISO-8859-1
+german.iso.kbd:pt:Alemão ISO-8859-1
+german.iso.kbd:es:Alemán ISO-8859-1
+german.iso.kbd:uk:î¦ÍÅÃØËÁ ISO-8859-1
+
+german.iso.acc.kbd:en:German ISO-8859-1 (accent keys)
+german.iso.acc.kbd:de:Deutsch ISO-8859-1 (mit Akzenten)
+german.iso.acc.kbd:fr:Allemand ISO-8859-1 (avec accents)
+german.iso.acc.kbd:pt:Alemão ISO-8859-1 (com acentos)
+german.iso.acc.kbd:es:Alemán ISO-8859-1 (con acentos)
+german.iso.acc.kbd:uk:î¦ÍÅÃØËÁ ISO-8859-1 (accent keys)
+
+german.cp850.kbd:en:German Codepage 850
+german.cp850.kbd:de:Deutsch Codeseite 850
+german.cp850.kbd:fr:Allemand Code page 850
+german.cp850.kbd:pt:Alemão Codepage 850
+german.cp850.kbd:es:Alemán Codepage 850
+german.cp850.kbd:uk:î¦ÍÅÃØËÁ CP-850
+
+gr.elot.acc.kbd:en:Greek ISO-8859-7 ELOT
+gr.elot.acc.kbd:el:Åëëçíéêü ISO-8859-7 ÅËÏÔ
+
+gr.us101.acc.kbd:en:Greek ISO-8859-7 (101 keys)
+gr.us101.acc.kbd:el:Åëëçíéêü ISO-8859-7 (101 ðëÞêôñùí)
+
+iw.iso8.kbd:en:Hebrew ISO-8859-8
+iw.iso8.kbd:he:ISO-8859-8 úéøáò
+
+hr.iso.kbd:en:Croatian ISO-8859-2
+hr.iso.kbd:de:Kroatisch ISO-8859-2
+hr.iso.kbd:es:Croata ISO-8859-2
+
+hu.iso2.101keys.kbd:en:Hungarian 101 ISO-8859-2
+hu.iso2.101keys.kbd:de:Ungarisch 101 ISO-8859-2
+hu.iso2.101keys.kbd:es:Húngaro 101 ISO-8859-2
+
+hu.iso2.102keys.kbd:en:Hungarian 102 ISO-8859-2
+hu.iso2.102keys.kbd:de:Ungarisch 102 ISO-8859-2
+hu.iso2.102keys.kbd:es:Húngaro 102 ISO-8859-2
+
+hy.armscii-8.kbd:hy:гۻñ»Ý ÑÝãÛáõݳÛÇÝ ¥Phonetic¤ ¹³ë³íáñáõÃÛáõÝ
+hy.armscii-8.kbd:ru:áÒÍÑÎÓËÁÑ ÆÏÎÅÔÉÞÅÓËÁÑ ÒÁÓËÌÁÄËÁ
+hy.armscii-8.kbd:en:Armenian phonetic layout
+hy.armscii-8.kbd:de:Armenische phonetische Tastenbelegung
+
+icelandic.iso.kbd:en:Icelandic ISO-8859-1
+icelandic.iso.kbd:de:Isländisch ISO-8859-1
+icelandic.iso.kbd:pt:Islandês ISO-8859-1
+icelandic.iso.kbd:es:Islandés ISO-8859-1
+
+icelandic.iso.acc.kbd:en:Icelandic ISO-8859-1 (accent keys)
+icelandic.iso.acc.kbd:de:Isländisch ISO-8859-1 (mit Akzenten)
+icelandic.iso.acc.kbd:pt:Islandês ISO-8859-1 (com acentos)
+icelandic.iso.acc.kbd:es:Islandés ISO-8859-1 (con acentos)
+
+it.iso.kbd:en:Italian ISO-8859-1
+it.iso.kbd:de:Italienisch ISO-8859-1
+it.iso.kbd:pt,es:Italiano ISO-8859-1
+it.iso.kbd:uk:¶ÔÁ̦ÊÓØËÁ ISO-8859-1
+
+jp.106.kbd:en:Japanese 106
+jp.106.kbd:de:Japanisch 106
+jp.106.kbd:pt:Japonês 106
+jp.106.kbd:es:Japonés 106
+jp.106.kbd:uk:ñÐÏÎÓØËÁ 106
+
+jp.106x.kbd:en:Japanese 106x
+jp.106x.kbd:de:Japanisch 106x
+jp.106x.kbd:pt:Japonês 106x
+jp.106x.kbd:es:Japonés 106x
+jp.106x.kbd:uk:ñÐÏÎÓØËÁ 106x
+
+jp.pc98.kbd:en:Japanese PC-98x1
+
+jp.pc98.iso.kbd:en:Japanese PC-98x1 (ISO)
+
+kk.pt154.kst.kbd:en:Kazakh PT154 codepage
+kk.pt154.io.kbd:en:Kazakh PT154 codepage
+
+latinamerican.kbd:en:Latin American
+latinamerican.kbd:de:Latein Amerikanisch
+latinamerican.kbd:pt,es:América Latina
+
+latinamerican.iso.acc.kbd:en:Latin American (accent keys)
+latinamerican.iso.acc.kbd:de:Latein Amerikanisch (mit Akzenten)
+latinamerican.iso.acc.kbd:pt,es:América Latina (com acentos)
+
+lt.iso4.kbd:en:Lithuanian ISO-8859-4
+lt.iso4.kbd:es:Lituano ISO-8859-4
+
+norwegian.iso.kbd:en:Norwegian ISO-8859-1
+norwegian.iso.kbd:no:Norsk ISO-8859-1
+norwegian.iso.kbd:de:Norwegisch ISO-8859-1
+norwegian.iso.kbd:pt:Norueguês ISO-8859-1
+norwegian.iso.kbd:es:Noruego ISO-8859-1
+norwegian.dvorak.kbd:en:Norwegian dvorak
+norwegian.dvorak.kbd:no:Norsk dvorak
+norwegian.dvorak.kbd:de:Norwegisch dvorak
+norwegian.dvorak.kbd:pt:Norueguês dvorak
+norwegian.dvorak.kbd:es:Noruego Idvorak
+
+pl_PL.ISO8859-2.kbd:en:Polish ISO-8859-2 (programmer's)
+pl_PL.ISO8859-2.kbd:de:Polnisch ISO-8859-2 (für Programmierer)
+pl_PL.ISO8859-2.kbd:pl:Polska ISO-8859-2 (programisty)
+pl_PL.ISO8859-2.kbd:pt:Polonês ISO-8859-2 (para programadores)
+pl_PL.ISO8859-2.kbd:es:Polaco ISO-8859-2 (para programadores)
+
+pt.iso.kbd:en:Portuguese ISO-8859-1
+pt.iso.kbd:de:Portugisisch ISO-8859-1
+pt.iso.kbd:pt:Português ISO-8859-1
+pt.iso.kbd:es:Portugués ISO-8859-1
+
+pt.iso.acc.kbd:en:Portuguese ISO-8859-1 (accent keys)
+pt.iso.acc.kbd:de:Portugisisch ISO-8859-1 (mit Akzenten)
+pt.iso.acc.kbd:pt:Português ISO-8859-1 (com acentos)
+pt.iso.acc.kbd:es:Portugués ISO-8859-1 (con acentos)
+
+ru.cp866.kbd:en:Russian Codepage 866 (alternative)
+ru.cp866.kbd:de:Russisch Codeseite 866 (alternativ)
+ru.cp866.kbd:ru:òÕÓÓËÉÊ Codepage 866 (alternative)
+ru.cp866.kbd:fr:Russe Code page 866 (alternative)
+ru.cp866.kbd:pt:Russo Codepage 866 (alternativo)
+ru.cp866.kbd:es:Ruso Codepage 866 (alternativo)
+ru.cp866.kbd:uk:òÏÓ¦ÊÓØËÁ CP-866 (ÁÌØÔÅÒÎÁÔÉ×ÎÁ)
+
+ru.iso5.kbd:en:Russian ISO-8859-5
+ru.iso5.kbd:ru:òÕÓÓËÉÊ ISO-8859-5
+ru.iso5.kbd:uk:òÏÓ¦ÊÓØËÉÊ ISO-8859-5
+
+ru.koi8-r.kbd:en:Russian koi8-r
+ru.koi8-r.kbd:de:Russisch koi8-r
+ru.koi8-r.kbd:ru:òÕÓÓËÉÊ koi8-r
+ru.koi8-r.kbd:fr:Russe koi8-r
+ru.koi8-r.kbd:pt:Russo koi8-r
+ru.koi8-r.kbd:es:Ruso koi8-r
+ru.koi8-r.kbd:uk:òÏÓ¦ÊÓØËÁ koi8-r
+
+ru.koi8-r.shift.kbd:en:Russian koi8-r (shift)
+ru.koi8-r.shift.kbd:de:Russisch koi8-r (shift)
+ru.koi8-r.shift.kbd:ru:òÕÓÓËÉÊ koi8-r (shift)
+ru.koi8-r.shift.kbd:fr:Russe koi8-r (shift)
+ru.koi8-r.shift.kbd:pt:Russo koi8-r (shift)
+ru.koi8-r.shift.kbd:es:Ruso koi8-r (shift)
+ru.koi8-r.shift.kbd:uk:òÏÓ¦ÊÓØËÁ koi8-r (shift)
+
+spanish.iso.kbd:en:Spanish ISO-8859-1
+spanish.iso.kbd:de:Spanisch ISO-8859-1
+spanish.iso.kbd:pt:Espanhol ISO-8859-1
+spanish.iso.kbd:es:Español ISO-8859-1
+
+spanish.iso.acc.kbd:en:Spanish ISO-8859-1 (accent keys)
+spanish.iso.acc.kbd:de:Spanisch ISO-8859-1 (accent keys)
+spanish.iso.acc.kbd:pt:Espanhol ISO-8859-1 (com acentos)
+spanish.iso.acc.kbd:es:Español ISO-8859-1 (con acentos)
+
+spanish.iso15.acc.kbd:en:Spanish ISO-8859-15 (accent keys)
+spanish.iso15.acc.kbd:de:Spanisch ISO-8859-15 (accent keys)
+spanish.iso15.acc.kbd:pt:Espanhol ISO-8859-15 (com acentos)
+spanish.iso15.acc.kbd:es:Español ISO-8859-15 (con acentos)
+
+si.iso.kbd:en:Slovenian ISO-8859-2
+si.iso.kbd:de:Slovenisch ISO-8859-2
+si.iso.kbd:pt:Eslovênio ISO-8859-2
+si.iso.kbd:es:Esloveno ISO-8859-2
+
+sk.iso2.kbd:en:Slovak ISO-8859-2
+sk.iso2.kbd:de:Slovakisch ISO-8859-2
+sk.iso2.kbd:es:Eslovaco ISO-8859-2
+
+swedish.iso.kbd:en:Swedish ISO-8859-1
+swedish.iso.kbd:de:Schwedisch ISO-8859-1
+swedish.iso.kbd:fr:Suédois ISO-8859-1
+swedish.iso.kbd:pt,es:Sueco ISO-8859-1
+
+swedish.cp850.kbd:en:Swedish Codepage 850
+swedish.cp850.kbd:de:Schwedisch Codeseite 850
+swedish.cp850.kbd:fr:Suédois Code page 850
+swedish.cp850.kbd:pt,es:Sueco Codepage 850
+
+swissfrench.iso.kbd:en:Swiss-French ISO-8859-1
+swissfrench.iso.kbd:de:Schweiz-Französisch ISO-8859-1
+swissfrench.iso.kbd:fr:Suisse-Français ISO-8859-1
+swissfrench.iso.kbd:es:Francosuizo ISO-8859-1
+
+swissfrench.iso.acc.kbd:en:Swiss-French ISO-8859-1 (accent keys)
+swissfrench.iso.acc.kbd:de:Schweiz-Französisch ISO-8859-1 (mit Akzenten)
+swissfrench.iso.acc.kbd:fr:Suisse-Français ISO-8859-1 (avec accents)
+swissfrench.iso.acc.kbd:es:Francosuizo ISO-8859-1 (con acentos)
+
+swissfrench.cp850.kbd:en:Swiss-French Codepage 850
+swissfrench.cp850.kbd:de:Schweiz-Französisch Codeseite 850
+swissfrench.cp850.kbd:fr:Suisse-Français Code Page 850
+swissfrench.cp850.kbd:es:Francosuizo Codepage 850
+
+swissgerman.iso.kbd:en:Swiss-German ISO-8859-1
+swissgerman.iso.kbd:de:Schweiz-Deutsch ISO-8859-1
+swissgerman.iso.kbd:fr:Suisse-Allemand ISO-8859-1
+swissgerman.iso.kbd:pt:Suiço-Alemão ISO-8859-1
+swissgerman.iso.kbd:es:Germanosuizo ISO-8859-1
+
+swissgerman.iso.acc.kbd:en:Swiss-German ISO-8859-1 (accent keys)
+swissgerman.iso.acc.kbd:de:Schweiz-Deutsch ISO-8859-1 (mit Akzenten)
+swissgerman.iso.acc.kbd:fr:Suisse-Allemand ISO-8859-1 (avec accents)
+swissgerman.iso.acc.kbd:pt:Suiço-Alemão ISO-8859-1 (com acentos)
+swissgerman.iso.acc.kbd:es:Germanosuizo ISO-8859-1 (con acentos)
+
+swissgerman.cp850.kbd:en:Swiss-German Codepage 850
+swissgerman.cp850.kbd:de:Schweiz-Deutsch Codeseite 850
+swissgerman.cp850.kbd:fr:Suisse-Allemand Code Page 850
+swissgerman.cp850.kbd:pt:Suiço-Alemão Codepage 850
+swissgerman.cp850.kbd:es:Germanosuizo Codepage 850
+
+tr.iso9.q.kbd:en:Turkish ISO-8859-9
+tr.iso9.q.kbd:uk:ôÕÒÅÃØËÁ ISO-8859-9
+
+uk.iso.kbd:en:United Kingdom ISO-8859-1
+uk.iso.kbd:de:Vereinigtes Königreich ISO-8859-1
+uk.iso.kbd:fr:Royaume Uni ISO-8859-1
+uk.iso.kbd:pt:Reino Unido ISO-8859-1
+uk.iso.kbd:es:Británico ISO-8859-1
+
+uk.cp850.kbd:en:United Kingdom Codepage 850
+uk.cp850.kbd:de:Vereinigtes Königreich Codeseite 850
+uk.cp850.kbd:fr:Royaume Uni Code page 850
+uk.cp850.kbd:pt:Reino Unido Codepage 850
+uk.cp850.kbd:es:Británico Codepage 850
+
+us.iso.kbd:en:United States of America ISO-8859-1
+us.iso.kbd:de:US-amerikanisch ISO-8859-1
+us.iso.kbd:fr:États Unis d'Amérique ISO-8859-1
+us.iso.kbd:pt:Estados Unidos da América ISO-8859-1
+us.iso.kbd:es:Estadounidense ISO-8859-1
+
+us.iso.acc.kbd:en:United States of America ISO-8859-1 (accent keys)
+us.iso.acc.kbd:de:US-amerikanisch ISO-8859-1 (mit Akzenten)
+us.iso.acc.kbd:fr:États Unis d'Amérique ISO-8859-1 (avec accents)
+us.iso.acc.kbd:pt:Estados Unidos da América ISO-8859-1 (com acentos)
+us.iso.acc.kbd:es:Estadounidense ISO-8859-1 (con acentos)
+
+us.dvorak.kbd:en:United States of America dvorak
+us.dvorak.kbd:de:US-amerikanisch dvorak
+us.dvorak.kbd:fr:États Unis d'Amérique dvorak
+us.dvorak.kbd:pt:Estados Unidos da América dvorak
+us.dvorak.kbd:es:Estadounidense dvorak
+
+us.dvorakr.kbd:en:United States of America righthand dvorak
+us.dvorakr.kbd:de:US-amerikanisch dvorak rechte Hand
+us.dvorakr.kbd:fr:États Unis d'Amérique dvorakr
+us.dvorakr.kbd:pt:Estados Unidos da América dvorakr
+us.dvorakr.kbd:es:Estadounidense dvorak diestro
+
+us.dvorakl.kbd:en:United States of America lefthand dvorak
+us.dvorakl.kbd:de:US-amerikanisch dvorak linke Hand
+us.dvorakl.kbd:fr:États Unis d'Amérique dvorakl
+us.dvorakl.kbd:pt:Estados Unidos da América dvorakl
+us.dvorakl.kbd:es:Estadounidense dvorak zurdo
+
+us.dvorakx.kbd:en:United States of America dvorakx
+us.dvorakx.kbd:de:US-amerikanisch dvorakx
+us.dvorakx.kbd:fr:États Unis d'Amérique dvorakx
+us.dvorakx.kbd:pt:Estados Unidos da América dvorakx
+us.dvorakx.kbd:es:Estadounidense dvorakx
+
+us.emacs.kbd:en:United States of America Emacs optimized layout
+us.emacs.kbd:de:US-amerikanisch für Emacs optimiert
+us.emacs.kbd:fr:États Unis d'Amérique emacs
+us.emacs.kbd:pt:Estados Unidos da América emacs
+us.emacs.kbd:es:Estadounidense optimizado para Emacs
+
+us.unix.kbd:en:United States of America Traditional Unix Workstation
+us.unix.kbd:de:US-amerikanisch traditionelles Unix Layout
+us.unix.kbd:fr:États Unis d'Amérique unix
+us.unix.kbd:pt:Estados Unidos da América unix
+us.unix.kbd:es:Estadounidense Unix tradicional
+
+ua.iso5.kbd:en:Ukrainian ISO-8859-5
+ua.iso5.kbd:ru:õËÒÁÉÎÓËÉÊ ISO-8859-5
+ua.iso5.kbd:uk:õËÒÁ§ÎÓØËÁ ISO-8859-5
+
+ua.koi8-u.kbd:en:Ukrainian koi8-u
+ua.koi8-u.kbd:uk:õËÒÁ§ÎÓØËÁ koi8-u
+
+ua.koi8-u.shift.alt.kbd:en:Ukrainian koi8-u with koi8-r (shift)
+ua.koi8-u.shift.alt.kbd:uk:õËÒÁ§ÎÓØËÁ koi8-u Ú koi8-r (shift)
diff --git a/share/syscons/keymaps/Makefile b/share/syscons/keymaps/Makefile
new file mode 100644
index 0000000..65d2f03
--- /dev/null
+++ b/share/syscons/keymaps/Makefile
@@ -0,0 +1,52 @@
+# $FreeBSD$
+
+FILES= INDEX.keymaps \
+ be.iso.kbd be.iso.acc.kbd \
+ bg.bds.ctrlcaps.kbd bg.phonetic.ctrlcaps.kbd \
+ br275.iso.kbd br275.iso.acc.kbd br275.cp850.kbd \
+ by.cp1131.kbd by.cp1251.kbd by.iso5.kbd \
+ ce.iso2.kbd \
+ colemak.iso15.acc.kbd \
+ cs.latin2.qwertz.kbd \
+ cz.iso2.kbd \
+ danish.iso.kbd danish.cp865.kbd dutch.iso.acc.kbd \
+ el.iso07.kbd \
+ estonian.iso.kbd estonian.iso15.kbd estonian.cp850.kbd \
+ finnish.iso.kbd finnish.cp850.kbd \
+ fr.iso.kbd fr.iso.acc.kbd fr.dvorak.kbd fr.dvorak.acc.kbd \
+ fr.macbook.acc.kbd \
+ fr_CA.iso.acc.kbd \
+ german.iso.kbd german.iso.acc.kbd german.cp850.kbd \
+ gr.elot.acc.kbd gr.us101.acc.kbd \
+ hr.iso.kbd \
+ hu.iso2.101keys.kbd hu.iso2.102keys.kbd \
+ hy.armscii-8.kbd \
+ icelandic.iso.kbd icelandic.iso.acc.kbd \
+ it.iso.kbd \
+ iw.iso8.kbd \
+ jp.106.kbd jp.106x.kbd jp.pc98.kbd jp.pc98.iso.kbd \
+ kk.pt154.kst.kbd kk.pt154.io.kbd \
+ latinamerican.kbd latinamerican.iso.acc.kbd \
+ lt.iso4.kbd \
+ norwegian.iso.kbd norwegian.dvorak.kbd \
+ pl_PL.ISO8859-2.kbd \
+ pt.iso.kbd pt.iso.acc.kbd \
+ ru.koi8-r.kbd ru.koi8-r.shift.kbd ru.koi8-r.win.kbd \
+ ru.cp866.kbd ru.iso5.kbd \
+ si.iso.kbd \
+ sk.iso2.kbd \
+ spanish.iso.kbd spanish.iso.acc.kbd spanish.iso15.acc.kbd \
+ swedish.iso.kbd swedish.cp850.kbd \
+ swissfrench.iso.kbd swissfrench.iso.acc.kbd swissfrench.cp850.kbd \
+ swissgerman.iso.kbd swissgerman.iso.acc.kbd swissgerman.cp850.kbd \
+ tr.iso9.q.kbd \
+ ua.koi8-u.kbd ua.koi8-u.shift.alt.kbd ua.iso5.kbd \
+ uk.iso.kbd uk.iso-ctrl.kbd uk.cp850.kbd uk.cp850-ctrl.kbd \
+ us.iso.kbd us.dvorak.kbd us.dvorakx.kbd us.emacs.kbd us.pc-ctrl.kbd \
+ us.unix.kbd us.iso.acc.kbd
+
+FILESDIR= ${SHAREDIR}/syscons/keymaps
+
+NO_OBJ=
+
+.include <bsd.prog.mk>
diff --git a/share/syscons/keymaps/be.iso.acc.kbd b/share/syscons/keymaps/be.iso.acc.kbd
new file mode 100644
index 0000000..83a093c
--- /dev/null
+++ b/share/syscons/keymaps/be.iso.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop '|' '|' nop nop O
+ 003 233 '2' nul nul '@' '@' nul nul O
+ 004 '"' '3' nop nop '#' '#' nop nop O
+ 005 ''' '4' nop nop ''' '4' nop nop O
+ 006 '(' '5' nop nop '(' '5' nop nop O
+ 007 167 '6' rs rs '^' '^' rs rs O
+ 008 232 '7' nop nop 232 '7' nop nop O
+ 009 '!' '8' nop nop '!' '8' nop nop O
+ 010 231 '9' nop nop '{' '{' nop nop O
+ 011 224 '0' nop nop '}' '}' nop nop O
+ 012 ')' 176 nop nop ')' 176 nop nop O
+ 013 '-' '_' us us '-' '_' us us O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 'a' 'A' soh soh C
+ 017 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dcir duml esc esc '[' '[' esc esc O
+ 027 '$' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr O
+ 040 249 '%' nop nop dacu dacu nop nop O
+ 041 178 179 nop nop 178 179 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 181 163 nop nop dgra dgra nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' etb etb C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop ',' '?' nop nop C
+ 051 ';' '.' nop nop ';' '.' nop nop O
+ 052 ':' '/' nop nop ':' '/' nop nop O
+ 053 '=' '+' nop nop dtil dtil nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '\' '\' fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/be.iso.kbd b/share/syscons/keymaps/be.iso.kbd
new file mode 100644
index 0000000..8d16a81
--- /dev/null
+++ b/share/syscons/keymaps/be.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop '|' '|' nop nop O
+ 003 233 '2' nul nul '@' '@' nul nul O
+ 004 '"' '3' nop nop '#' '#' nop nop O
+ 005 ''' '4' nop nop ''' '4' nop nop O
+ 006 '(' '5' nop nop '(' '5' nop nop O
+ 007 167 '6' rs rs '^' '^' rs rs O
+ 008 232 '7' nop nop 232 '7' nop nop O
+ 009 '!' '8' nop nop '!' '8' nop nop O
+ 010 231 '9' nop nop '{' '{' nop nop O
+ 011 224 '0' nop nop '}' '}' nop nop O
+ 012 ')' 176 nop nop ')' 176 nop nop O
+ 013 '-' '_' us us '-' '_' us us O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 'a' 'A' soh soh C
+ 017 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '^' 168 esc esc '[' '[' esc esc O
+ 027 '$' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 249 '%' nop nop ''' ''' nop nop O
+ 041 178 179 nop nop 178 179 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 181 163 nop nop '`' '`' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' etb etb C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop ',' '?' nop nop O
+ 051 ';' '.' nop nop ';' '.' nop nop O
+ 052 ':' '/' nop nop ':' '/' nop nop O
+ 053 '=' '+' nop nop '~' '~' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '\' '\' fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/bg.bds.ctrlcaps.kbd b/share/syscons/keymaps/bg.bds.ctrlcaps.kbd
new file mode 100644
index 0000000..5c76466
--- /dev/null
+++ b/share/syscons/keymaps/bg.bds.ctrlcaps.kbd
@@ -0,0 +1,245 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock alock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '?' nul nul '2' '@' nul nul O
+ 132 '3' '+' nop nop '3' '#' nop nop O
+ 133 '4' '"' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '=' rs rs '6' '^' rs rs O
+ 136 '7' ':' nop nop '7' '&' nop nop O
+ 137 '8' '/' nop nop '8' '*' nop nop O
+ 138 '9' '-' nop nop '9' '(' nop nop O
+ 139 '0' 185 nop nop '0' ')' nop nop O
+ 140 '-' '-' us us '-' '_' us us O
+ 141 '.' 'V' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 ',' 251 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 243 211 etb etb 'w' 'W' etb etb C
+ 146 229 197 enq enq 'e' 'E' enq enq C
+ 147 232 200 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 248 216 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 249 217 em em 'y' 'Y' em em C
+ 150 234 202 nak nak 'u' 'U' nak nak C
+ 151 241 209 ht ht 'i' 'I' ht ht C
+ 152 228 196 si si 'o' 'O' si si C
+ 153 231 199 dle dle 'p' 'P' dle dle C
+ 154 246 214 esc esc '[' '{' esc esc C
+ 155 ';' 167 gs gs ']' '}' gs gs C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 252 220 soh soh 'a' 'A' soh soh C
+ 159 255 223 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 224 192 eot eot 'd' 'D' eot eot C
+ 161 238 206 ack ack 'f' 'F' ack ack C
+ 162 230 198 bel bel 'g' 'G' bel bel C
+ 163 227 195 bs bs 'h' 'H' bs bs C
+ 164 242 210 nl nl 'j' 'J' nl nl C
+ 165 237 205 vt vt 'k' 'K' vt vt C
+ 166 226 194 ff ff 'l' 'L' ff ff C
+ 167 236 204 nop nop ';' ':' nop nop C
+ 168 247 215 nop nop ''' '"' nop nop C
+ 169 '(' ')' nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 254 222 sub sub 'z' 'Z' sub sub C
+ 173 233 201 can can 'x' 'X' can can C
+ 174 250 218 etx etx 'c' 'C' etx etx C
+ 175 231 199 syn syn 'v' 'V' syn syn C
+ 176 244 212 stx stx 'b' 'B' stx stx C
+ 177 245 213 so so 'n' 'N' so so C
+ 178 239 207 cr cr 'm' 'M' cr cr C
+ 179 240 208 nop nop ',' '<' nop nop C
+ 180 235 203 nop nop '.' '>' nop nop C
+ 181 225 193 nop nop '/' '?' nop nop C
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock alock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+
+
+
diff --git a/share/syscons/keymaps/bg.phonetic.ctrlcaps.kbd b/share/syscons/keymaps/bg.phonetic.ctrlcaps.kbd
new file mode 100644
index 0000000..20a22ad
--- /dev/null
+++ b/share/syscons/keymaps/bg.phonetic.ctrlcaps.kbd
@@ -0,0 +1,260 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock alock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 255 223 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 226 194 etb etb 'w' 'W' etb etb C
+ 146 229 197 enq enq 'e' 'E' enq enq C
+ 147 240 208 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 242 210 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 250 218 em em 'y' 'Y' em em C
+ 150 243 211 nak nak 'u' 'U' nak nak C
+ 151 232 200 ht ht 'i' 'I' ht ht C
+ 152 238 206 si si 'o' 'O' si si C
+ 153 239 207 dle dle 'p' 'P' dle dle C
+ 154 248 216 esc esc '[' '{' esc esc C
+ 155 249 217 gs gs ']' '}' gs gs C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 224 192 soh soh 'a' 'A' soh soh C
+ 159 241 209 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 228 196 eot eot 'd' 'D' eot eot C
+ 161 244 212 ack ack 'f' 'F' ack ack C
+ 162 227 195 bel bel 'g' 'G' bel bel C
+ 163 245 213 bs bs 'h' 'H' bs bs C
+ 164 233 201 nl nl 'j' 'J' nl nl C
+ 165 234 202 vt vt 'k' 'K' vt vt C
+ 166 235 203 ff ff 'l' 'L' ff ff C
+ 167 ';' ':' nop nop ';' ':' nop nop O
+ 168 ''' '"' nop nop ''' '"' nop nop O
+ 169 247 215 nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 254 222 fs fs '\' '|' fs fs C
+ 172 231 199 sub sub 'z' 'Z' sub sub C
+ 173 252 220 can can 'x' 'X' can can C
+ 174 246 214 etx etx 'c' 'C' etx etx C
+ 175 230 198 syn syn 'v' 'V' syn syn C
+ 176 225 193 stx stx 'b' 'B' stx stx C
+ 177 237 205 so so 'n' 'N' so so C
+ 178 236 204 cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock alock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+ 237 nop nop nop nop nop nop nop nop O
+ 238 nop nop nop nop nop nop nop nop O
+ 239 nop nop nop nop nop nop nop nop O
+ 240 nop nop nop nop nop nop nop nop O
+ 241 nop nop nop nop nop nop nop nop O
+ 242 nop nop nop nop nop nop nop nop O
+ 243 nop nop nop nop nop nop nop nop O
+ 244 nop nop nop nop nop nop nop nop O
+ 245 nop nop nop nop nop nop nop nop O
+ 246 nop nop nop nop nop nop nop nop O
+ 247 nop nop nop nop nop nop nop nop O
+ 248 nop nop nop nop nop nop nop nop O
+ 249 nop nop nop nop nop nop nop nop O
+ 250 nop nop nop nop nop nop nop nop O
+ 251 nop nop nop nop nop nop nop nop O
+ 252 nop nop nop nop nop nop nop nop O
+ 253 nop nop nop nop nop nop nop nop O
+ 254 nop nop nop nop nop nop nop nop O
+ 255 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/br275.cp850.kbd b/share/syscons/keymaps/br275.cp850.kbd
new file mode 100644
index 0000000..36ab3ed
--- /dev/null
+++ b/share/syscons/keymaps/br275.cp850.kbd
@@ -0,0 +1,132 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 251 '!' nop nop O
+ 003 '2' '@' nul nul 253 '@' nul nul O
+ 004 '3' '#' nop nop 252 '#' nop nop O
+ 005 '4' '$' nop nop 156 '$' nop nop O
+ 006 '5' '%' nop nop 189 '%' nop nop O
+ 007 '6' 249 rs rs 170 168 rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop 245 '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 239 '`' nop nop 239 '`' nop nop O
+ 027 '[' '{' esc esc 166 '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 135 128 nop nop 135 128 nop nop C
+ 040 '~' '^' nop nop '~' '^' nop nop O
+ 041 ''' '"' nop nop ''' '"' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs 167 '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 ';' ':' nop nop ';' ':' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 '/' '?' nop nop 248 '?' nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 '.' '.' '.' '.' '.' '.' '.' '.' N
diff --git a/share/syscons/keymaps/br275.iso.acc.kbd b/share/syscons/keymaps/br275.iso.acc.kbd
new file mode 100644
index 0000000..01d04f6
--- /dev/null
+++ b/share/syscons/keymaps/br275.iso.acc.kbd
@@ -0,0 +1,157 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 185 '!' nop nop O
+ 003 '2' '@' nul nul 178 '@' nul nul O
+ 004 '3' '#' nop nop 179 '#' nop nop O
+ 005 '4' '$' nop nop 163 '$' nop nop O
+ 006 '5' '%' nop nop 162 '%' nop nop O
+ 007 '6' duml rs rs 172 duml rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop 167 '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dacu dgra nop nop dacu dgra nop nop O
+ 027 '[' '{' esc esc 170 '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 231 199 nop nop 231 199 nop nop C
+ 040 dtil dcir nop nop dtil dcir nop nop O
+ 041 ''' '"' nop nop ''' '"' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs 186 '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 ';' ':' nop nop ';' ':' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 '/' '?' nop nop 176 '?' nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 '.' '.' '.' '.' '.' '.' '.' '.' N
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/br275.iso.kbd b/share/syscons/keymaps/br275.iso.kbd
new file mode 100644
index 0000000..cec66de
--- /dev/null
+++ b/share/syscons/keymaps/br275.iso.kbd
@@ -0,0 +1,132 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 185 '!' nop nop O
+ 003 '2' '@' nul nul 178 '@' nul nul O
+ 004 '3' '#' nop nop 179 '#' nop nop O
+ 005 '4' '$' nop nop 163 '$' nop nop O
+ 006 '5' '%' nop nop 162 '%' nop nop O
+ 007 '6' 168 rs rs 172 168 rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop 167 '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 180 '`' nop nop 180 '`' nop nop O
+ 027 '[' '{' esc esc 170 '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 231 199 nop nop 231 199 nop nop C
+ 040 '~' '^' nop nop '~' '^' nop nop O
+ 041 ''' '"' nop nop ''' '"' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs 186 '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 ';' ':' nop nop ';' ':' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 '/' '?' nop nop 176 '?' nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 '.' '.' '.' '.' '.' '.' '.' '.' N
diff --git a/share/syscons/keymaps/by.cp1131.kbd b/share/syscons/keymaps/by.cp1131.kbd
new file mode 100644
index 0000000..1c526e6
--- /dev/null
+++ b/share/syscons/keymaps/by.cp1131.kbd
@@ -0,0 +1,224 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' nul nul O
+ 132 '3' 'ü' nop nop '3' '#' nop nop O
+ 133 '4' ';' nop nop '4' ';' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' ':' rs rs '6' '^' rs rs O
+ 136 '7' '?' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 '©' '‰' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'æ' '–' etb etb 'w' 'W' etb etb C
+ 146 'ã' '“' enq enq 'e' 'E' enq enq C
+ 147 'ª' 'Š' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 '¥' '…' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 '­' '' em em 'y' 'Y' em em C
+ 150 '£' 'ƒ' nak nak 'u' 'U' nak nak C
+ 151 'è' '˜' ht ht 'i' 'I' ht ht C
+ 152 '÷' 'ö' si si 'o' 'O' si si C
+ 153 '§' '‡' dle dle 'p' 'P' dle dle C
+ 154 'å' '•' esc esc '[' '{' esc esc C
+ 155 ''' ''' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'ä' '”' soh soh 'a' 'A' soh soh C
+ 159 'ë' '›' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 '¢' '‚' eot eot 'd' 'D' eot eot C
+ 161 ' ' '€' ack ack 'f' 'F' ack ack C
+ 162 '¯' '' bel bel 'g' 'G' bel bel C
+ 163 'à' '' bs bs 'h' 'H' bs bs C
+ 164 '®' 'Ž' nl nl 'j' 'J' nl nl C
+ 165 '«' '‹' vt vt 'k' 'K' vt vt C
+ 166 '¤' '„' ff ff 'l' 'L' ff ff C
+ 167 '¦' '†' nop nop ';' ':' nop nop C
+ 168 'í' '' nop nop ''' '"' nop nop C
+ 169 'ñ' 'ð' nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 'ï' 'Ÿ' sub sub 'z' 'Z' sub sub C
+ 173 'ç' '—' can can 'x' 'X' can can C
+ 174 'á' '‘' etx etx 'c' 'C' etx etx C
+ 175 '¬' 'Œ' syn syn 'v' 'V' syn syn C
+ 176 'ù' 'ø' stx stx 'b' 'B' stx stx C
+ 177 'â' '’' so so 'n' 'N' so so C
+ 178 'ì' 'œ' cr cr 'm' 'M' cr cr C
+ 179 '¡' '' nop nop ',' '<' nop nop C
+ 180 'î' 'ž' nop nop '.' '>' nop nop C
+ 181 '.' ',' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/by.cp1251.kbd b/share/syscons/keymaps/by.cp1251.kbd
new file mode 100644
index 0000000..596507d
--- /dev/null
+++ b/share/syscons/keymaps/by.cp1251.kbd
@@ -0,0 +1,224 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' nul nul O
+ 132 '3' '¹' nop nop '3' '#' nop nop O
+ 133 '4' ';' nop nop '4' ';' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' ':' rs rs '6' '^' rs rs O
+ 136 '7' '?' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'é' 'É' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'ö' 'Ö' etb etb 'w' 'W' etb etb C
+ 146 'ó' 'Ó' enq enq 'e' 'E' enq enq C
+ 147 'ê' 'Ê' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 'å' 'Å' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'í' 'Í' em em 'y' 'Y' em em C
+ 150 'ã' 'Ã' nak nak 'u' 'U' nak nak C
+ 151 'ø' 'Ø' ht ht 'i' 'I' ht ht C
+ 152 '¢' '¡' si si 'o' 'O' si si C
+ 153 'ç' 'Ç' dle dle 'p' 'P' dle dle C
+ 154 'õ' 'Õ' esc esc '[' '{' esc esc C
+ 155 ''' ''' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'ô' 'Ô' soh soh 'a' 'A' soh soh C
+ 159 'û' 'Û' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'â' 'Â' eot eot 'd' 'D' eot eot C
+ 161 'à' 'À' ack ack 'f' 'F' ack ack C
+ 162 'ï' 'Ï' bel bel 'g' 'G' bel bel C
+ 163 'ð' 'Ð' bs bs 'h' 'H' bs bs C
+ 164 'î' 'Î' nl nl 'j' 'J' nl nl C
+ 165 'ë' 'Ë' vt vt 'k' 'K' vt vt C
+ 166 'ä' 'Ä' ff ff 'l' 'L' ff ff C
+ 167 'æ' 'Æ' nop nop ';' ':' nop nop C
+ 168 'ý' 'Ý' nop nop ''' '"' nop nop C
+ 169 '¸' '¨' nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 'ÿ' 'ß' sub sub 'z' 'Z' sub sub C
+ 173 '÷' '×' can can 'x' 'X' can can C
+ 174 'ñ' 'Ñ' etx etx 'c' 'C' etx etx C
+ 175 'ì' 'Ì' syn syn 'v' 'V' syn syn C
+ 176 '³' '²' stx stx 'b' 'B' stx stx C
+ 177 'ò' 'Ò' so so 'n' 'N' so so C
+ 178 'ü' 'Ü' cr cr 'm' 'M' cr cr C
+ 179 'á' 'Á' nop nop ',' '<' nop nop C
+ 180 'þ' 'Þ' nop nop '.' '>' nop nop C
+ 181 '.' ',' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/by.iso5.kbd b/share/syscons/keymaps/by.iso5.kbd
new file mode 100644
index 0000000..bd17ec0
--- /dev/null
+++ b/share/syscons/keymaps/by.iso5.kbd
@@ -0,0 +1,224 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' nul nul O
+ 132 '3' 'ð' nop nop '3' '#' nop nop O
+ 133 '4' ';' nop nop '4' ';' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' ':' rs rs '6' '^' rs rs O
+ 136 '7' '?' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'Ù' '¹' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'æ' 'Æ' etb etb 'w' 'W' etb etb C
+ 146 'ã' 'Ã' enq enq 'e' 'E' enq enq C
+ 147 'Ú' 'º' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 'Õ' 'µ' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'Ý' '½' em em 'y' 'Y' em em C
+ 150 'Ó' '³' nak nak 'u' 'U' nak nak C
+ 151 'è' 'È' ht ht 'i' 'I' ht ht C
+ 152 'þ' '®' si si 'o' 'O' si si C
+ 153 '×' '·' dle dle 'p' 'P' dle dle C
+ 154 'å' 'Å' esc esc '[' '{' esc esc C
+ 155 ''' ''' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'ä' 'Ä' soh soh 'a' 'A' soh soh C
+ 159 'ë' 'Ë' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'Ò' '²' eot eot 'd' 'D' eot eot C
+ 161 'Ð' '°' ack ack 'f' 'F' ack ack C
+ 162 'ß' '¿' bel bel 'g' 'G' bel bel C
+ 163 'à' 'À' bs bs 'h' 'H' bs bs C
+ 164 'Þ' '¾' nl nl 'j' 'J' nl nl C
+ 165 'Û' '»' vt vt 'k' 'K' vt vt C
+ 166 'Ô' '´' ff ff 'l' 'L' ff ff C
+ 167 'Ö' '¶' nop nop ';' ':' nop nop C
+ 168 'í' 'Í' nop nop ''' '"' nop nop C
+ 169 'ñ' '¡' nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 'ï' 'Ï' sub sub 'z' 'Z' sub sub C
+ 173 'ç' 'Ç' can can 'x' 'X' can can C
+ 174 'á' 'Á' etx etx 'c' 'C' etx etx C
+ 175 'Ü' '¼' syn syn 'v' 'V' syn syn C
+ 176 'ö' '¦' stx stx 'b' 'B' stx stx C
+ 177 'â' 'Â' so so 'n' 'N' so so C
+ 178 'ì' 'Ì' cr cr 'm' 'M' cr cr C
+ 179 'Ñ' '±' nop nop ',' '<' nop nop C
+ 180 'î' 'Î' nop nop '.' '>' nop nop C
+ 181 '.' ',' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/ce.iso2.kbd b/share/syscons/keymaps/ce.iso2.kbd
new file mode 100644
index 0000000..68d2bf8
--- /dev/null
+++ b/share/syscons/keymaps/ce.iso2.kbd
@@ -0,0 +1,237 @@
+# Keyboard map for Central European languages under FreeBSD.
+# Created by G. Adam Stanislav <adam@whizkidtech.net>
+#
+# Version 1.0 - 1999-03-18
+#
+# $FreeBSD$
+#
+# This map uses the US QWERTY keyboard for its basic layout.
+# It adds a "third row" to the top of the PC keyboard. To
+# access the third row, press and hold the Alt key, then
+# strike a key in the top row.
+#
+# Note that some of the third-row keys produce characters.
+# Others must be followed by another keystroke resulting
+# in accented characters. To print the accent mark alone,
+# press the space bar after pressing and releasing the
+# alt-accent mark key.
+#
+# In most cases I have mapped a key to a character or an
+# accent mark because the key on the US QWERTY keyboard
+# somewhat resembles the result.
+#
+# In addition to the top row, three keys on the numeric keypad
+# are mapped for the use with IS 8859-2 when combined with the
+# Alt key: The dot (del) key combined with alt will print a
+# comma instead of a dot; alt-/ will show the division mark,
+# and alt-* the multpilication sign.
+#
+# If you have an ISO-8859-2 font loaded, you can see the layout here:
+#
+# alt-` ² (ogonek) and alt-~ ¸ (cedilla)
+# Examples: ê±þçº
+# alt-! ß (German double s)
+# alt-@ ° (degree)
+# alt-# ¤ (currency)
+# alt-$ § (section, called paragraf in most CE languages)
+# alt-% ¨ (umlaut, dve bodky)
+# Examples: äüöë
+# alt-^ ^ (circumflex, vokáò)
+# Examples: ôâî
+# alt-& ­ (hyphen, pomlèka, rozdeµovacie znamienko)
+# alt-* ° (ring)
+# Examples: ùÙ
+# alt-( ½ (Hungarian long umlaut)
+# Examples: õû
+# alt-) ÿ (dot accent)
+# Examples: ¿¯
+# alt-- ´ (acute, då¾eò, èárka)
+# Examples: á¶éíúñ¼àå
+# alt-= · (caron, mäkèeò, háèek) and alt-+ ¢ (breve)
+# Examples: ãèøµï»ò¾
+# alt-\ / (slash)
+# Examples: ð³
+# alt-/ [on numeric keypad] ÷
+# alt-* [on numeric keypad] ×
+# alt-. [on numeric keypad] ,
+#
+# This layout offers access to the entire character set of
+# ISO 8859-2, used by Slovak, Czech, German, Polish, Croatian,
+# Slovenian, Rumanian, Hungarian, and probably other languages,
+# while remaining fully compatible with the default US QWERTY
+# keyboard.
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 223 223 nop nop O
+ 003 '2' '@' nul nul 176 176 nul nul O
+ 004 '3' '#' nop nop 164 164 nop nop O
+ 005 '4' '$' nop nop 167 167 nop nop O
+ 006 '5' '%' nop nop duml duml nop nop O
+ 007 '6' '^' rs rs dcir dcir rs rs O
+ 008 '7' '&' nop nop 173 173 nop nop O
+ 009 '8' '*' nop nop drin drin nop nop O
+ 010 '9' '(' nop nop ddac ddac nop nop O
+ 011 '0' ')' nop nop ddot ddot nop nop O
+ 012 '-' '_' us us dacu dacu us us O
+ 013 '=' '+' nop nop dcar dbre nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'k' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop dogo dced nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs dsla dsla fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' 215 215 215 215 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' 247 247 247 247 N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra 000
+ dacu 180 ( 'a' 225 ) ( 'A' 193 )
+ ( 'c' 230 ) ( 'C' 198 )
+ ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 )
+ ( 'l' 229 ) ( 'L' 197 )
+ ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 243 ) ( 'O' 211 )
+ ( 'r' 224 ) ( 'R' 192 )
+ ( 's' 182 ) ( 'S' 166 )
+ ( 'u' 250 ) ( 'U' 218 )
+ ( 'y' 253 ) ( 'Y' 221 )
+ ( 'z' 188 ) ( 'Z' 172 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 )
+ ( 'i' 238 ) ( 'I' 206 )
+ ( 'o' 244 ) ( 'O' 212 )
+ dtil 000
+ dmac 000
+ dbre 162 ( 'a' 227 ) ( 'A' 195 )
+ ( 'c' 232 ) ( 'C' 200 )
+ ( 'd' 239 ) ( 'D' 207 )
+ ( 'e' 236 ) ( 'E' 204 )
+ ( 'l' 181 ) ( 'L' 165 )
+ ( 'n' 242 ) ( 'N' 210 )
+ ( 'r' 248 ) ( 'R' 216 )
+ ( 's' 185 ) ( 'S' 169 )
+ ( 't' 187 ) ( 'T' 171 )
+ ( 'z' 190 ) ( 'Z' 174 )
+ ddot 255 ( 'z' 0xbf ) ( 'Z' 0xaf )
+ duml 168 ( 'a' 228 ) ( 'A' 196 )
+ ( 'e' 235 ) ( 'E' 203 )
+ ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 )
+ dsla '/' ( 'd' 240 ) ( 'D' 208 )
+ ( 'l' 179 ) ( 'L' 163 )
+ drin 176 ( 'u' 249 ) ( 'U' 217 )
+ dced 184 ( 'a' 177 ) ( 'A' 161 )
+ ( 'c' 231 ) ( 'C' 199 )
+ ( 'e' 234 ) ( 'E' 202 )
+ ( 's' 186 ) ( 'S' 170 )
+ ( 't' 254 ) ( 'T' 222 )
+ dapo 000
+ ddac 189 ( 'o' 245 ) ( 'O' 213 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dogo 178 ( 'a' 177 ) ( 'A' 161 )
+ ( 'c' 231 ) ( 'C' 199 )
+ ( 'e' 234 ) ( 'E' 202 )
+ ( 's' 186 ) ( 'S' 170 )
+ ( 't' 254 ) ( 'T' 222 )
+ dcar 183 ( 'a' 227 ) ( 'A' 195 )
+ ( 'c' 232 ) ( 'C' 200 )
+ ( 'd' 239 ) ( 'D' 207 )
+ ( 'e' 236 ) ( 'E' 204 )
+ ( 'l' 181 ) ( 'L' 165 )
+ ( 'n' 242 ) ( 'N' 210 )
+ ( 'r' 248 ) ( 'R' 216 )
+ ( 's' 185 ) ( 'S' 169 )
+ ( 't' 187 ) ( 'T' 171 )
+ ( 'z' 190 ) ( 'Z' 174 )
+
diff --git a/share/syscons/keymaps/colemak.iso15.acc.kbd b/share/syscons/keymaps/colemak.iso15.acc.kbd
new file mode 100644
index 0000000..9d56ca7
--- /dev/null
+++ b/share/syscons/keymaps/colemak.iso15.acc.kbd
@@ -0,0 +1,149 @@
+# $FreeBSD$
+#
+# Colemak Layout for FreeBSD console
+# 2006-01-01 Shai Coleman, http://colemak.com/ . Public domain.
+
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+
+ 041 '`' '~' nop nop dtil '~' nop nop O
+ 002 '1' '!' nop nop '¡' '¹' nop nop O
+ 003 '2' '@' nul nul 'º' '²' nul nul O
+ 004 '3' '#' nop nop 'ª' '³' nop nop O
+ 005 '4' '$' nop nop '¢' '£' nop nop O
+ 006 '5' '%' nop nop '¤' '¥' nop nop O
+ 007 '6' '^' rs rs '~' '~' rs rs O
+ 008 '7' '&' nop nop 'ð' 'Ð' nop nop O
+ 009 '8' '*' nop nop 'þ' 'Þ' nop nop O
+ 010 '9' '(' nop nop '~' '~' nop nop O
+ 011 '0' ')' nop nop '~' '~' nop nop O
+ 012 '-' '_' us us '~' '~' us us O
+ 013 '=' '+' nop nop '×' '÷' nop nop O
+
+ 016 'q' 'Q' dc1 dc1 'ä' 'Ä' dc1 dc1 C
+ 017 'w' 'W' etb etb 'å' 'Å' etb etb C
+ 018 'f' 'F' ack ack 'ã' 'Ã' ack ack C
+ 019 'p' 'P' dle dle 'ø' 'Ø' dle dle C
+ 020 'g' 'G' bel bel '~' '~' bel bel C
+ 021 'j' 'J' nl nl '~' '~' nl nl C
+ 022 'l' 'L' ff ff '~' '~' ff ff C
+ 023 'u' 'U' nak nak 'ú' 'Ú' nak nak C
+ 024 'y' 'Y' em em 'ü' 'Ü' em em C
+ 025 ';' ':' nop nop 'ö' 'Ö' nop nop O
+ 026 '[' '{' esc esc '«' '~' esc esc O
+ 027 ']' '}' gs gs '»' '~' gs gs O
+ 043 '\' '|' fs fs '~' '~' fs fs O
+
+ 030 'a' 'A' soh soh 'á' 'Á' soh soh C
+ 031 'r' 'R' dc2 dc2 dgra '~' dc2 dc2 C
+ 032 's' 'S' dc3 dc3 'ß' '~' dc3 dc3 C
+ 033 't' 'T' dc4 dc4 dacu '~' dc4 dc4 C
+ 034 'd' 'D' eot eot duml '~' eot eot C
+ 035 'h' 'H' bs bs '~' '~' bs bs C
+ 036 'n' 'N' so so 'ñ' 'Ñ' so so C
+ 037 'e' 'E' enq enq 'é' 'É' enq enq C
+ 038 'i' 'I' ht ht 'í' 'Í' ht ht C
+ 039 'o' 'O' si si 'ó' 'Ó' si si C
+ 040 ''' '"' nop nop 'õ' 'Õ' nop nop O
+
+ 044 'z' 'Z' sub sub 'æ' 'Æ' sub sub C
+ 045 'x' 'X' can can dcir '~' can can C
+ 046 'c' 'C' etx etx 'ç' 'Ç' etx etx C
+ 047 'v' 'V' syn syn '½' '¼' syn syn C
+ 048 'b' 'B' stx stx '~' '~' stx stx C
+ 049 'k' 'K' vt vt drin '~' vt vt C
+ 050 'm' 'M' cr cr '~' '~' cr cr C
+ 051 ',' '<' nop nop dced '~' nop nop O
+ 052 '.' '>' nop nop '~' '~' nop nop O
+ 053 '/' '?' nop nop '¿' '~' nop nop O
+
+ 058 bs bs bs bs bs bs bs bs O
+ 086 '-' '_' us us '~' '~' us us O
+ 057 ' ' ' ' nul nul ' ' ' ' susp susp O
+
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug debug O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nscr nscr ht btab nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr nop nop debug debug debug debug O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 saver saver susp susp nop nop susp susp O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/cs.latin2.qwertz.kbd b/share/syscons/keymaps/cs.latin2.qwertz.kbd
new file mode 100644
index 0000000..fefebe0
--- /dev/null
+++ b/share/syscons/keymaps/cs.latin2.qwertz.kbd
@@ -0,0 +1,286 @@
+# Czech Standard Typewriter QWERTZ Keyboard
+# by Rudolf Cejka <cejkar@dcse.fee.vutbr.cz>
+#
+# $FreeBSD$
+#
+# English/Czech keyboard lock: (Left)Alt+Shift
+# English/Czech keyboard shift: (Right)AltGr
+#
+# Meta shift: (Right|Left)Windows, Menu
+#
+# Previous screen: Ctrl+(Grey)Left
+# Next screen: Ctrl+(Grey)Right
+#
+# Screen saver: Shift+Pause
+# Suspend power (APM): (Left)Alt+Pause
+#
+# Accent characters (viewable with ISO_8859-2 fonts):
+# acute: [=/+] and =SZszRALCEINOUYralceinouy => ´¦¬¶¼ÀÁÅÆÉÍÑÓÚÝàáåæéíñóúý
+# caron: Shift+[=/+] and =LSTZlstzCEDNRcednrUu => ·¥©«®µ¹»¾ÈÌÏÒØèìïòøÙù
+# circumflex: Alt+Ctrl+[=/+] and =AIOaio => ^ÂÎÔâîô
+# breve: Ctrl+Shift+[=/+] and =Aa => ¢Ãã
+# cedilla: Ctrl+[-/_] and -SsCTct => ¸ªºÇÞçþ
+# dot: Alt+[=/+] and =Zz => ÿ¯¿
+# double acute: Alt+Shift+[-/_] and -OUou => ½ÕÛõû
+# double dot: Alt+Shift+[=/+] and =AEOUaeou => ¨ÄËÖÜäëöü
+# ogonek: Ctrl+Shift+[-/_] and -AaEe => ²¡±Êê
+# ring: Ctrl+[=/+] and =Uuso78/ => °Ùùߤ§×÷
+# slash: Alt+[-/_] and -LlDd => ­£³Ðð
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug panic O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 056 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 meta meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug panic O
+ 130 '+' '1' nop nop '+' '1' nop nop O
+ 131 236 '2' nop nop 236 '2' nop nop O
+ 132 185 '3' nop nop 185 '3' nop nop O
+ 133 232 '4' nop nop 232 '4' nop nop O
+ 134 248 '5' nop nop 248 '5' nop nop O
+ 135 190 '6' nop nop 190 '6' nop nop O
+ 136 253 '7' nop nop 253 '7' nop nop O
+ 137 225 '8' nop nop 225 '8' nop nop O
+ 138 237 '9' nop nop 237 '9' nop nop O
+ 139 233 '0' nop nop 233 '0' nop nop O
+ 140 '=' '%' dced dogo dsla ddac nop nop O
+ 141 dacu dcar drin dbre ddot duml dcir nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'w' 'W' etb etb 'w' 'W' etb etb C
+ 146 'e' 'E' enq enq 'e' 'E' enq enq C
+ 147 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 150 'u' 'U' nak nak 'u' 'U' nak nak C
+ 151 'i' 'I' ht ht 'i' 'I' ht ht C
+ 152 'o' 'O' si si 'o' 'O' si si C
+ 153 'p' 'P' dle dle 'p' 'P' dle dle C
+ 154 250 '/' nop nop 250 '/' nop nop O
+ 155 ')' '(' nop nop ')' '(' nop nop O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'a' 'A' soh soh 'a' 'A' soh soh C
+ 159 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'd' 'D' eot eot 'd' 'D' eot eot C
+ 161 'f' 'F' ack ack 'f' 'F' ack ack C
+ 162 'g' 'G' bel bel 'g' 'G' bel bel C
+ 163 'h' 'H' bs bs 'h' 'H' bs bs C
+ 164 'j' 'J' nl nl 'j' 'J' nl nl C
+ 165 'k' 'K' vt vt 'k' 'K' vt vt C
+ 166 'l' 'L' ff ff 'l' 'L' ff ff C
+ 167 249 '"' nop nop 249 '"' nop nop O
+ 168 167 '!' nop nop 167 '!' nop nop O
+ 169 '`' ';' nop nop '`' ';' nop nop O
+ 170 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 'y' 'Y' em em 'y' 'Y' em em C
+ 173 'x' 'X' can can 'x' 'X' can can C
+ 174 'c' 'C' etx etx 'c' 'C' etx etx C
+ 175 'v' 'V' syn syn 'v' 'V' syn syn C
+ 176 'b' 'B' stx stx 'b' 'B' stx stx C
+ 177 'n' 'N' so so 'n' 'N' so so C
+ 178 'm' 'M' cr cr 'm' 'M' cr cr C
+ 179 ',' '?' nop nop ',' '?' nop nop O
+ 180 '.' ':' nop nop '.' ':' nop nop O
+ 181 '-' '_' us us '-' '_' us us O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 184 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl N
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 meta meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+
+ dacu 180 ( 180 180 ) ( 'S' 166 ) ( 'Z' 172 ) ( 's' 182 )
+ ( 'z' 188 ) ( 'R' 192 ) ( 'A' 193 ) ( 'L' 197 )
+ ( 'C' 198 ) ( 'E' 201 ) ( 'I' 205 ) ( 'N' 209 )
+ ( 'O' 211 ) ( 'U' 218 ) ( 'Y' 221 ) ( 'r' 224 )
+ ( 'a' 225 ) ( 'l' 229 ) ( 'c' 230 ) ( 'e' 233 )
+ ( 'i' 237 ) ( 'n' 241 ) ( 'o' 243 ) ( 'u' 250 )
+ ( 'y' 253 )
+ dcir '^' ( '^' '^' ) ( 'A' 194 ) ( 'I' 206 ) ( 'O' 212 )
+ ( 'a' 226 ) ( 'i' 238 ) ( 'o' 244 )
+ dbre 162 ( 162 162 ) ( 'A' 195 ) ( 'a' 227 )
+ ddot 255 ( 255 255 ) ( 'Z' 175 ) ( 'z' 191 )
+ duml 168 ( 168 168 ) ( 'A' 196 ) ( 'E' 203 ) ( 'O' 214 )
+ ( 'U' 220 ) ( 'a' 228 ) ( 'e' 235 ) ( 'o' 246 )
+ ( 'u' 252 )
+ dsla 173 ( 173 173 ) ( 'L' 163 ) ( 'l' 179 ) ( 'D' 208 )
+ ( 'd' 240 )
+ drin 176 ( 176 176 ) ( 'U' 217 ) ( 'u' 249 ) ( 's' 223 )
+ ( 'o' 164 ) ( 253 167 ) ( 225 215 ) ( '-' 247 )
+ dced 184 ( 184 184 ) ( 'S' 170 ) ( 's' 186 ) ( 'C' 199 )
+ ( 'T' 222 ) ( 'c' 231 ) ( 't' 254 )
+ ddac 189 ( 189 189 ) ( 'O' 213 ) ( 'U' 219 ) ( 'o' 245 )
+ ( 'u' 251 )
+ dogo 178 ( 178 178 ) ( 'A' 161 ) ( 'a' 177 ) ( 'E' 202 )
+ ( 'e' 234 )
+ dcar 183 ( 183 183 ) ( 'L' 165 ) ( 'S' 169 ) ( 'T' 171 )
+ ( 'Z' 174 ) ( 'l' 181 ) ( 's' 185 ) ( 't' 187 )
+ ( 'z' 190 ) ( 'C' 200 ) ( 'E' 204 ) ( 'D' 207 )
+ ( 'N' 210 ) ( 'R' 216 ) ( 'c' 232 ) ( 'e' 236 )
+ ( 'd' 239 ) ( 'n' 242 ) ( 'r' 248 ) ( 'U' 217 )
+ ( 'u' 249 )
diff --git a/share/syscons/keymaps/cz.iso2.kbd b/share/syscons/keymaps/cz.iso2.kbd
new file mode 100644
index 0000000..50626c0
--- /dev/null
+++ b/share/syscons/keymaps/cz.iso2.kbd
@@ -0,0 +1,319 @@
+# Keyboard map for Czech language under FreeBSD.
+# Created by G. Adam Stanislav <adam@whizkidtech.net>
+#
+# Version 1.1 - 1999-03-25
+#
+# $FreeBSD$
+#
+# This map is derived from my Central European map
+# (ce.iso2.kbd). The description of the CE map is next.
+# After that is a description of what was added
+# specifically to the Czech map:
+#
+########### CE map described: #################################
+#
+# This map uses the US QWERTY keyboard for its basic layout.
+# It adds a "third row" to the top of the PC keyboard. To
+# access the third row, press and hold the Alt key, then
+# strike a key in the top row.
+#
+# Note that some of the third-row keys produce characters.
+# Others must be followed by another keystroke resulting
+# in accented characters. To print the accent mark alone,
+# press the space bar after pressing and releasing the
+# alt-accent mark key.
+#
+# In most cases I have mapped a key to a character or an
+# accent mark because the key on the US QWERTY keyboard
+# somewhat resembles the result.
+#
+# In addition to the top row, three keys on the numeric keypad
+# are mapped for the use with IS 8859-2 when combined with the
+# Alt key: The dot (del) key combined with alt will print a
+# comma instead of a dot; alt-/ will show the division mark,
+# and alt-* the multpilication sign.
+#
+# If you have an ISO-8859-2 font loaded, you can see the layout here:
+#
+# alt-` ² (ogonek) and alt-~ ¸ (cedilla)
+# Examples: ê±þçº
+# alt-! ß (German double s)
+# alt-@ ° (degree)
+# alt-# ¤ (currency)
+# alt-$ § (section, called paragraf in most CE languages)
+# alt-% ¨ (umlaut, dve bodky)
+# Examples: äüöë
+# alt-^ ^ (circumflex, vokáò)
+# Examples: ôâî
+# alt-& ­ (hyphen, pomlèka, rozdeµovacie znamienko)
+# alt-* ° (ring)
+# Examples: ùÙ
+# alt-( ½ (Hungarian long umlaut)
+# Examples: õû
+# alt-) ÿ (dot accent)
+# Examples: ¿¯
+# alt-- ´ (acute, då¾eò, èárka)
+# Examples: á¶éíúñ¼àå
+# alt-= · (caron, mäkèeò, háèek) and alt-+ ¢ (breve)
+# Examples: ãèøµï»ò¾
+# alt-\ / (slash)
+# Examples: ð³
+# alt-/ [on numeric keypad] ÷
+# alt-* [on numeric keypad] ×
+# alt-. [on numeric keypad] ,
+#
+# This layout offers access to the entire character set of
+# ISO 8859-2, used by Slovak, Czech, German, Polish, Croatian,
+# Slovenian, Rumanian, Hungarian, and probably other languages,
+# while remaining fully compatible with the default US QWERTY
+# keyboard.
+#
+########## Czech map described: ###############################
+#
+# In addition to everything described above, pressing
+# Alt-character is a "shortcut" to the most commonly used
+# accented character. For example, Alt-a produces "a acute".
+#
+# In most cases, a character is used with only one possible
+# accent mark in Czech (acute or caron). These are the
+# characters that work unambiguously with the Alt key:
+#
+# r t y u i o s d z c n
+#
+# Two characters are used with two different accent marks:
+#
+# e u
+#
+# Using the Alt-character combination produces the most commonly
+# used result, which is:
+#
+# Alt-e - e acute
+# Alt-u - u ring
+#
+# To produce the other possible result, press Alt and the closest
+# key on the keyboard that is not used with any accent in Czech.
+# That is:
+#
+# Alt-w - e caron
+# Alt-j - u acute
+#
+# If you have any comments, send me email, in English, Czech, or Slovak,
+# to "G. Adam Stanislav" <adam@whizkidtech.net>.
+#
+# If you are sending email from aol.com, hotmail.com, or
+# some other free provider often abused by spammers, I will not
+# receive it. In that case, try <zen@buddhist.com>.
+#
+# Make me know if I miss something. My native tongue is Slovak,
+# and I live in America, so I may have forgotten some of my Czech.
+# I will be glad to make any corrections necessary.
+#
+# Note: This keymap uses the QWERTY model which is used by
+# most of the world. Czech typewriters use the QWERTZ
+# model. If you get a Z when you press the key marked Y,
+# and Y when pressing Z, you have two options:
+#
+# 1. Change the markings on your keyboard to the QWERTY
+# standard; or
+# 2. Edit this file. All you have to do is change 021
+# to 044, and 044 to 021 at the beginning of the
+# respective lines. This will turn your keyboard
+# to the QWERTZ model.
+#
+# The current version of this file is kept at
+# http://www.whizkidtech.net/ISO-8859-2/
+#
+# New in version 1.1: You can keep holding the alt key after pressing
+# an accent key. For example, pressing the acute accent followed by
+# alt-s will produce acute s - in version 1.0 it just beeped.
+#
+# This is more compatible with the universal ISO-8859-2 key map.
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 223 223 nop nop O
+ 003 '2' '@' nul nul 176 176 nul nul O
+ 004 '3' '#' nop nop 164 164 nop nop O
+ 005 '4' '$' nop nop 167 167 nop nop O
+ 006 '5' '%' nop nop duml duml nop nop O
+ 007 '6' '^' rs rs dcir dcir rs rs O
+ 008 '7' '&' nop nop 173 173 nop nop O
+ 009 '8' '*' nop nop drin drin nop nop O
+ 010 '9' '(' nop nop ddac ddac nop nop O
+ 011 '0' ')' nop nop ddot ddot nop nop O
+ 012 '-' '_' us us dacu dacu us us O
+ 013 '=' '+' nop nop dcar dbre nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 236 204 etb etb C
+ 018 'e' 'E' enq enq 233 201 enq enq C
+ 019 'r' 'R' dc2 dc2 248 216 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 187 171 dc4 dc4 C
+ 021 'y' 'Y' em em 253 221 em em C
+ 022 'u' 'U' nak nak 249 217 nak nak C
+ 023 'i' 'I' ht ht 237 205 ht ht C
+ 024 'o' 'O' si si 243 211 si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 185 169 dc3 dc3 C
+ 032 'd' 'D' eot eot 239 207 eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 250 218 nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop dogo dced nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs dsla dsla fs fs O
+ 044 'z' 'Z' sub sub 190 174 sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 232 200 etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 242 210 so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' 215 215 215 215 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' 247 247 247 247 N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra 000
+ dacu 180 ( 'a' 225 ) ( 'A' 193 )
+ ( 225 225 ) ( 193 193 )
+ ( 'c' 230 ) ( 'C' 198 )
+ ( 232 230 ) ( 200 198 )
+ ( 'e' 233 ) ( 'E' 201 )
+ ( 233 233 ) ( 201 201 )
+ ( 'i' 237 ) ( 'I' 205 )
+ ( 237 237 ) ( 205 205 )
+ ( 'l' 229 ) ( 'L' 197 )
+ ( 'n' 241 ) ( 'N' 209 )
+ ( 242 241 ) ( 210 209 )
+ ( 'o' 243 ) ( 'O' 211 )
+ ( 243 243 ) ( 211 211 )
+ ( 'r' 224 ) ( 'R' 192 )
+ ( 248 224 ) ( 216 192 )
+ ( 's' 182 ) ( 'S' 166 )
+ ( 185 182 ) ( 169 166 )
+ ( 'u' 250 ) ( 'U' 218 )
+ ( 249 250 ) ( 217 218 )
+ ( 'y' 253 ) ( 'Y' 221 )
+ ( 253 253 ) ( 221 221 )
+ ( 'z' 188 ) ( 'Z' 172 )
+ ( 190 188 ) ( 174 172 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 )
+ ( 225 226 ) ( 193 194 )
+ ( 'i' 238 ) ( 'I' 206 )
+ ( 237 238 ) ( 205 206 )
+ ( 'o' 244 ) ( 'O' 212 )
+ ( 243 244 ) ( 211 212 )
+ dtil 000
+ dmac 000
+ dbre 162 ( 'a' 227 ) ( 'A' 195 )
+ ( 'c' 232 ) ( 'C' 200 )
+ ( 'd' 239 ) ( 'D' 207 )
+ ( 'e' 236 ) ( 'E' 204 )
+ ( 'l' 181 ) ( 'L' 165 )
+ ( 'n' 242 ) ( 'N' 210 )
+ ( 'r' 248 ) ( 'R' 216 )
+ ( 's' 185 ) ( 'S' 169 )
+ ( 't' 187 ) ( 'T' 171 )
+ ( 'z' 190 ) ( 'Z' 174 )
+ ddot 255 ( 'z' 0xbf ) ( 'Z' 0xaf )
+ duml 168 ( 'a' 228 ) ( 'A' 196 )
+ ( 'e' 235 ) ( 'E' 203 )
+ ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 )
+ dsla '/' ( 'd' 240 ) ( 'D' 208 )
+ ( 'l' 179 ) ( 'L' 163 )
+ drin 176 ( 'u' 249 ) ( 'U' 217 )
+ dced 184 ( 'a' 177 ) ( 'A' 161 )
+ ( 'c' 231 ) ( 'C' 199 )
+ ( 'e' 234 ) ( 'E' 202 )
+ ( 's' 186 ) ( 'S' 170 )
+ ( 't' 254 ) ( 'T' 222 )
+ dapo 000
+ ddac 189 ( 'o' 245 ) ( 'O' 213 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dogo 178 ( 'a' 177 ) ( 'A' 161 )
+ ( 'c' 231 ) ( 'C' 199 )
+ ( 'e' 234 ) ( 'E' 202 )
+ ( 's' 186 ) ( 'S' 170 )
+ ( 't' 254 ) ( 'T' 222 )
+ dcar 183 ( 'a' 227 ) ( 'A' 195 )
+ ( 'c' 232 ) ( 'C' 200 )
+ ( 'd' 239 ) ( 'D' 207 )
+ ( 'e' 236 ) ( 'E' 204 )
+ ( 'l' 181 ) ( 'L' 165 )
+ ( 'n' 242 ) ( 'N' 210 )
+ ( 'r' 248 ) ( 'R' 216 )
+ ( 's' 185 ) ( 'S' 169 )
+ ( 't' 187 ) ( 'T' 171 )
+ ( 'z' 190 ) ( 'Z' 174 )
+
diff --git a/share/syscons/keymaps/danish.cp865.kbd b/share/syscons/keymaps/danish.cp865.kbd
new file mode 100644
index 0000000..026af06
--- /dev/null
+++ b/share/syscons/keymaps/danish.cp865.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 156 '#' nop nop O
+ 005 '4' 175 nop nop '$' 175 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '(' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' '?' nop nop O
+ 013 ''' '`' nop nop '|' '`' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 134 143 nop nop 229 197 nop nop C
+ 027 '"' '^' rs rs '~' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 145 146 nop nop 230 198 nop nop C
+ 040 155 157 nop nop 248 216 nop nop C
+ 041 171 '~' nop nop 171 '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '/' '/' '/' '/' '/' '/' '/' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/danish.iso.kbd b/share/syscons/keymaps/danish.iso.kbd
new file mode 100644
index 0000000..7286ba0
--- /dev/null
+++ b/share/syscons/keymaps/danish.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 158 '#' nop nop O
+ 005 '4' 164 nop nop '$' 164 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '(' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' '?' nop nop O
+ 013 ''' '`' nop nop '|' '`' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 229 197 nop nop 134 143 nop nop C
+ 027 '"' '^' rs rs '~' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 230 198 nop nop 145 146 nop nop C
+ 040 248 216 nop nop 155 157 nop nop C
+ 041 189 167 nop nop 189 167 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/dutch.iso.acc.kbd b/share/syscons/keymaps/dutch.iso.acc.kbd
new file mode 100644
index 0000000..79169a9
--- /dev/null
+++ b/share/syscons/keymaps/dutch.iso.acc.kbd
@@ -0,0 +1,138 @@
+#
+# Dutch keymap, accent keys
+# Created 29.03.2000 by Jeroen v. Yperen <j.vanijperen@student.utwente.nl>
+# Collected by Edwin Groothuis <mavetju@chello.nl>
+# Based on the US standard keymap
+# Accent coding by M. Blapp <mb@imp.ch>
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop 188 '$' nop nop O
+ 006 '5' '%' nop nop 189 '%' nop nop O
+ 007 '6' '&' rs rs 190 '^' rs rs O
+ 008 '7' '_' nop nop 163 '&' nop nop O
+ 009 '8' '(' nop nop '{' '*' nop nop O
+ 010 '9' ')' nop nop '}' '(' nop nop O
+ 011 '0' ''' nop nop 191 ')' nop nop O
+ 012 '/' '?' us us '\' '?' us us O
+ 013 drin dtil nop nop dced dtil nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 182 182 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 duml dcir esc esc '[' dcir esc esc O
+ 027 '*' '|' gs gs ']' 166 gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 223 223 dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 '+' 177 nop nop '+' 177 nop nop O
+ 040 dacu dgra nop nop ''' '"' nop nop O
+ 041 '@' '~' nop nop 172 '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '<' '>' fs fs 166 166 fs fs O
+ 044 'z' 'Z' sub sub 171 171 sub sub C
+ 045 'x' 'X' can can 187 187 can can C
+ 046 'c' 'C' etx etx 162 162 etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 181 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop 183 ':' nop nop O
+ 053 '-' '=' nop nop '-' '=' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nop nop ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 ']' '[' nop nop 124 124 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
diff --git a/share/syscons/keymaps/eee_nordic.kbd b/share/syscons/keymaps/eee_nordic.kbd
new file mode 100644
index 0000000..38e0acf
--- /dev/null
+++ b/share/syscons/keymaps/eee_nordic.kbd
@@ -0,0 +1,131 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 163 nop nop nop O
+ 005 '4' 164 nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+# Alt + Shift + 7 = ÷
+ 008 '7' '/' nop nop '{' '÷' nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+# For left of backspace key, gives with Alt=' and Alt+Shift+Key=|
+ 013 128 '`' nop nop 39 '|' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+# Alt + Ctrl + E = French e (as in café)
+ 018 'e' 'E' enq enq 164 'E' 'é' enq C
+# Alt + R = Copyright sign
+ 019 'r' 'R' dc2 dc2 '®' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+# Alt + U = Mikro, Alt + Shift + U = German u
+ 022 'u' 'U' nak nak 'µ' 'U' 'ü' 'Ü' C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+# Alt + O = Norwegian/Danish Ö
+ 024 'o' 'O' si si 'ø' 'Ø' si si C
+# Alt + P = Pi
+ 025 'p' 'P' dle dle '¶' 'P' dle dle C
+ 026 229 197 nop nop '}' ']' nop nop C
+ 027 168 '^' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+# Alt + A = At sign, Ctrl+Alt = ae, Ctrl+Alt+Shift = AE
+ 030 'a' 'A' soh soh '@' 'A' 'æ' 'Æ' C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop '|' '\' nop nop C
+ 040 228 196 nop nop '{' '[' nop nop C
+ 041 167 189 nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop nop nop nop nop O
+# Alt + Z = Pipe
+ 044 'z' 'Z' sub sub '|' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+# Ctrl + Shift + B = German B
+ 048 'b' 'B' stx 'ß' 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+# Alt + M = Mikro
+ 050 'm' 'M' cr cr 181 'M' cr cr C
+# Alt + [,/;] = <
+ 051 ',' ';' nop nop '<' '<' nop nop O
+# Alt + [./:] = >
+ 052 '.' ':' nop nop '>' '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+# Alt+Arrow up = Page up
+ 095 fkey50 fkey50 fkey50 fkey50 fkey51 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+# Alt+Arrow left = Home
+ 097 fkey53 fkey53 fkey53 fkey53 fkey49 fkey53 fkey53 fkey53 O
+# Alt+Arrow right = End
+ 098 fkey55 fkey55 fkey55 fkey55 fkey57 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+# Alt+Arrow down = Page down
+ 100 fkey58 fkey58 fkey58 fkey58 fkey59 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/el.iso07.kbd b/share/syscons/keymaps/el.iso07.kbd
new file mode 100644
index 0000000..dccf68e
--- /dev/null
+++ b/share/syscons/keymaps/el.iso07.kbd
@@ -0,0 +1,288 @@
+# Greek ISO 8859-7 keyboard for FreeBSD
+# by Basileios Anastasatos <B.Anastasatos@Freemail.gr>
+#
+# $FreeBSD$
+#
+# English/Greek keyboard lock: (Left)Alt+(Left|Right)Shift
+# English/Greek keyboard shift: (Right)AltGr
+#
+# Meta shift: (Right)Windows or Menu
+#
+# Extra escape (for vi users): (Left)Windows
+#
+# Previous screen: Ctrl+Left Arrow
+# Next screen: Ctrl+Right Arrow
+#
+# Screen saver: Shift+Pause
+# Suspend power (APM): (Left)Alt+Pause
+#
+# Composite characters:
+# acute (tonos): [;/:] and ÁÅÇÉÏÕÙáåçéïõù => ¶¸¹º¼¾¿ÜÝÞßüýþ
+# diaeresis (dialytika): Shift+[;/:] and ÉÕéõ => ÚÛúû
+# acute and diaeresis: Ctrl+[;/:] and éõ => Àà
+#
+# Greek semicolon (ano teleia): Shift+'w/W' => ·
+#
+# Other ISO 8859-7 characters:
+#
+# Key combination Code Symbol Name
+#
+# Ctrl+[`/~] 166 ¦ BROKEN BAR
+# Shift+Ctrl+[`/~] 189 ½ VULGAR FRACTION ONE HALF
+# Ctrl+[1/!] 178 ² SUPERSCRIPT TWO
+# Shift+Ctrl+[1/!] 179 ³ SUPERSCRIPT THREE
+# Shift(+Ctrl)+[3/#] 169 © COPYRIGHT SIGN
+# Shift(+Ctrl)+[4/$] 163 £ POUND SIGN
+# Shift(+Ctrl)+[5/%] 167 § SECTION SIGN
+# Shift(+Ctrl)+[7/&] 161 ¡ SINGLE HIGH-REVERSED-9 QUOTATION MARK
+# Shift(+Ctrl)+[8/*] 162 ¢ RIGHT SINGLE QUOTATION MARK
+# Shift(+Ctrl)+[9/(] 171 « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+# Shift(+Ctrl)+[0/)] 187 » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+# Shift(+Ctrl)+[=/+] 177 ± PLUS-MINUS SIGN
+# Shift(+Ctrl)+['/"] 176 ° DEGREE SIGN
+# Shift(+Ctrl)+[,/<] 173 ­ SOFT HYPHEN
+# Shift(+Ctrl)+[./>] 175 ¯ HORIZONTAL BAR
+# Shift(+Ctrl)+[//?] 172 ¬ NOT SIGN
+# Ctrl+Shift+Space 160   NO-BREAK SPACE
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug panic O
+ 002 '1' '!' 178 179 '1' '!' 178 179 O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' 169 169 '3' '#' 169 169 O
+ 005 '4' '$' 163 163 '4' '$' 163 163 O
+ 006 '5' '%' 167 167 '5' '%' 167 167 O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' 161 161 '7' '&' 161 161 O
+ 009 '8' '*' 162 162 '8' '*' 162 162 O
+ 010 '9' '(' 171 171 '9' '(' 171 171 O
+ 011 '0' ')' 187 187 '0' ')' 187 187 O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' 177 177 '=' '+' 177 177 O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' 176 176 ''' '"' 176 176 O
+ 041 '`' '~' 166 189 '`' '~' 166 189 O
+ 042 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' 173 173 ',' '<' 173 173 O
+ 052 '.' '>' 175 175 '.' '>' 175 175 O
+ 053 '/' '?' 172 172 '/' '?' 172 172 O
+ 054 rshift rshift rshift rshift rshifta rshifta rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 056 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 057 ' ' ' ' nul 160 ' ' ' ' susp 160 O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 esc esc fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug panic O
+ 130 '1' '!' 178 179 '1' '!' 178 179 O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' 169 169 '3' '#' 169 169 O
+ 133 '4' '$' 163 163 '4' '$' 163 163 O
+ 134 '5' '%' 167 167 '5' '%' 167 167 O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' 161 161 '7' '&' 161 161 O
+ 137 '8' '*' 162 162 '8' '*' 162 162 O
+ 138 '9' '(' 171 171 '9' '(' 171 171 O
+ 139 '0' ')' 187 187 '0' ')' 187 187 O
+ 140 '-' '_' us us '-' '_' us us O
+ 141 '=' '+' 177 177 '=' '+' 177 177 O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 ';' ':' dc1 dc1 ';' ':' dc1 dc1 C
+ 145 242 183 etb etb 242 183 etb etb C
+ 146 229 197 enq enq 229 197 enq enq C
+ 147 241 209 dc2 dc2 241 209 dc2 dc2 C
+ 148 244 212 dc4 dc4 244 212 dc4 dc4 C
+ 149 245 213 em em 245 213 em em C
+ 150 232 200 nak nak 232 200 nak nak C
+ 151 233 201 ht ht 233 201 ht ht C
+ 152 239 207 si si 239 207 si si C
+ 153 240 208 dle dle 240 208 dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 225 193 soh soh 225 193 soh soh C
+ 159 243 211 dc3 dc3 243 211 dc3 dc3 C
+ 160 228 196 eot eot 228 196 eot eot C
+ 161 246 214 ack ack 246 214 ack ack C
+ 162 227 195 bel bel 227 195 bel bel C
+ 163 231 199 bs bs 231 199 bs bs C
+ 164 238 206 nl nl 238 206 nl nl C
+ 165 234 202 vt vt 234 202 vt vt C
+ 166 235 203 ff ff 235 203 ff ff C
+ 167 dacu ddia ddac nop dacu ddia ddac nop O
+ 168 ''' '"' 176 176 ''' '"' 176 176 O
+ 169 '`' '~' 166 189 '`' '~' 166 189 O
+ 170 lshift lshift lshift lshift lshifta lshifta lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 230 198 sub sub 230 198 sub sub C
+ 173 247 215 can can 247 215 can can C
+ 174 248 216 etx etx 248 216 etx etx C
+ 175 249 217 syn syn 249 217 syn syn C
+ 176 226 194 stx stx 226 194 stx stx C
+ 177 237 205 so so 236 204 so so C
+ 178 236 204 cr cr 235 203 cr cr C
+ 179 ',' '<' 173 173 ',' '<' 173 173 O
+ 180 '.' '>' 175 175 '.' '>' 175 175 O
+ 181 '/' '?' 172 172 '/' '?' 172 172 O
+ 182 rshift rshift rshift rshift rshifta rshifta rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' N
+ 184 lalt lalta lalt lalt lalt lalta lalt lalt O
+ 185 ' ' ' ' nul 160 ' ' ' ' susp 160 O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl N
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ashift ashift ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 pscr pscr fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 nscr nscr fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 esc esc fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 meta meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+
+#
+# accent capital lower
+# ----------------------------------------------
+ dacu 180 ( 180 180 ) ( 193 182 ) ( 225 220 )
+ ( 197 184 ) ( 229 221 )
+ ( 199 185 ) ( 231 222 )
+ ( 201 186 ) ( 233 223 )
+ ( 207 188 ) ( 239 252 )
+ ( 213 190 ) ( 245 253 )
+ ( 217 191 ) ( 249 254 )
+ ddac 181 ( 181 181 ) ( 233 192 )
+ ( 245 224 )
+ ddia 168 ( 168 168 ) ( 201 218 ) ( 233 250 )
+ ( 213 219 ) ( 245 251 )
diff --git a/share/syscons/keymaps/estonian.cp850.kbd b/share/syscons/keymaps/estonian.cp850.kbd
new file mode 100644
index 0000000..b1003ff
--- /dev/null
+++ b/share/syscons/keymaps/estonian.cp850.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 156 156 nop nop O
+ 005 '4' 207 nop nop '$' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 '+' '?' fs fs '\' '\' fs fs O
+ 013 239 96 nop nop 239 96 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 129 154 nop nop 129 154 nop nop C
+ 027 228 229 nop nop 245 245 nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 148 153 nop nop 148 153 nop nop C
+ 040 132 142 nop nop 132 142 nop nop C
+ 041 94 126 nop nop 94 126 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop 171 171 nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/estonian.iso.kbd b/share/syscons/keymaps/estonian.iso.kbd
new file mode 100644
index 0000000..94394f4
--- /dev/null
+++ b/share/syscons/keymaps/estonian.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 163 nop nop nop O
+ 005 '4' 164 nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 180 96 nop nop 180 96 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 252 220 nop nop 252 220 nop nop C
+ 027 245 213 nop nop 167 167 nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop '|' '\' nop nop C
+ 040 228 196 nop nop '{' '[' nop nop C
+ 041 94 126 nop nop 94 126 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop 189 189 nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/estonian.iso15.kbd b/share/syscons/keymaps/estonian.iso15.kbd
new file mode 100644
index 0000000..3e3c33b
--- /dev/null
+++ b/share/syscons/keymaps/estonian.iso15.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 163 nop nop nop O
+ 005 '4' '$' nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 96 96 nop nop 96 96 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 164 enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 252 220 nop nop 252 220 nop nop C
+ 027 245 213 nop nop 167 167 nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 168 166 dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop 246 214 nop nop C
+ 040 228 196 nop nop 94 94 nop nop C
+ 041 126 126 nop nop 126 126 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 184 180 sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/finnish.cp850.kbd b/share/syscons/keymaps/finnish.cp850.kbd
new file mode 100644
index 0000000..11b42ee
--- /dev/null
+++ b/share/syscons/keymaps/finnish.cp850.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 156 156 nop nop O
+ 005 '4' 207 nop nop '$' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 '+' '?' fs fs '\' '\' fs fs O
+ 013 179 180 nop nop 179 180 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 134 143 nop nop 134 143 nop nop C
+ 027 177 176 rs rs 178 178 nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 148 153 nop nop 148 153 nop nop C
+ 040 132 142 nop nop 132 142 nop nop C
+ 041 245 171 nop nop 245 171 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/finnish.iso.kbd b/share/syscons/keymaps/finnish.iso.kbd
new file mode 100644
index 0000000..07a4487
--- /dev/null
+++ b/share/syscons/keymaps/finnish.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 163 nop nop nop O
+ 005 '4' 164 nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 128 '`' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 229 197 nop nop '}' ']' nop nop C
+ 027 168 '^' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop '|' '\' nop nop C
+ 040 228 196 nop nop '{' '[' nop nop C
+ 041 167 189 nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop nop nop nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/fr.dvorak.acc.kbd b/share/syscons/keymaps/fr.dvorak.acc.kbd
new file mode 100644
index 0000000..ba5fa9d
--- /dev/null
+++ b/share/syscons/keymaps/fr.dvorak.acc.kbd
@@ -0,0 +1,149 @@
+# A Dvorak keyboard for French
+#
+# This is a Dvorak-like layout for French
+# according to Francis Leboutte on
+# http://www.algo.be/ergo/dvorak-fr.html
+#
+# Note that letters with accents won't be correctly
+# displayed unless one uses the correct font:
+# vidcontrol -f iso15-8x16.fnt
+#
+# -Frédéric Praca <frederic.praca@freebsd-fr.org>
+# -Clément Pillias <clement.pillias@free.fr> for accent keys
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '=' '1' nop nop nop nop nop nop C
+ 003 '/' '2' nop nop nop nop nop nop C
+ 004 '-' '3' nop nop nop nop nop nop C
+ 005 'è' '4' nop nop nop nop nop nop C
+ 006 '\' '5' nop nop nop nop nop nop C
+ 007 dcir '6' nop nop nop nop nop nop C
+ 008 '(' '7' nop nop nop nop nop nop C
+ 009 dgra '8' nop nop nop nop nop nop C
+ 010 ')' '9' nop nop nop nop nop nop C
+ 011 '"' '0' nop nop nop nop nop nop C
+ 012 '[' '+' nop nop nop nop nop nop C
+ 013 ']' '%' nop nop nop nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ':' '?' nop nop nop nop nop nop O
+ 017 ''' '<' nop nop nop nop nop nop C
+ 018 'é' '>' nop nop nop nop nop nop C
+ 019 'g' 'G' nop nop nop nop nop nop C
+ 020 '.' '!' nop nop nop nop nop nop O
+ 021 'h' 'H' nop nop nop nop nop nop C
+ 022 'v' 'V' nop nop nop nop nop nop C
+ 023 'c' 'C' nop nop nop nop nop nop C
+ 024 'm' 'M' nop nop nop nop nop nop C
+ 025 'k' 'K' nop nop nop nop nop nop C
+ 026 'z' 'Z' nop nop nop nop nop nop C
+ 027 ddia '&' nop nop nop nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'o' 'O' nop nop nop nop nop nop C
+ 031 'a' 'A' nop nop nop nop nop nop C
+ 032 'u' 'U' nop nop nop nop nop nop C
+ 033 'e' 'E' nop nop nop nop nop nop C
+ 034 'b' 'B' nop nop nop nop nop nop C
+ 035 'f' 'F' nop nop nop nop nop nop C
+ 036 's' 'S' nop nop nop nop nop nop C
+ 037 't' 'T' nop nop nop nop nop nop C
+ 038 'n' 'N' nop nop nop nop nop nop C
+ 039 'd' 'D' nop nop nop nop nop nop C
+ 040 'w' 'W' nop nop nop nop nop nop C
+ 041 '_' '*' nop nop nop nop nop nop C
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 dtil '#' nop nop nop nop nop nop O
+ 044 ';' '|' nop nop nop nop nop nop O
+ 045 'q' 'Q' nop nop nop nop nop nop C
+ 046 ',' '@' nop nop nop nop nop nop O
+ 047 'i' 'I' nop nop nop nop nop nop C
+ 048 'y' 'Y' nop nop nop nop nop nop C
+ 049 'x' 'X' nop nop nop nop nop nop C
+ 050 'r' 'R' nop nop nop nop nop nop C
+ 051 'l' 'L' nop nop nop nop nop nop C
+ 052 'p' 'P' nop nop nop nop nop nop C
+ 053 'j' 'J' nop nop nop nop nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 'à' 'ç' nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( '/' '±' ) ( '-' '¼' ) ( 'è' '½' ) ( '\' '¾' )
+ ( '?' 'Æ' ) ( 'C' 'Ç' )
+ ( ':' 'æ' ) ( '`' '$' ) ( 'é' 'É' ) ( 'g' 164 )
+ ( '.' '°' ) ( 'c' 'ç' ) ( 'm' 'µ' )
+ ( 'O' 'Ò' ) ( 'A' 192 ) ( 'U' 'Ù' ) ( 'E' 'È' )
+ ( 'o' 'ò' ) ( 'a' 'à' ) ( 'u' 'ù' ) ( 'e' 'è' )
+ ( 's' '«' ) ( 'n' '»' )
+ ( 'ç' 'Ç' ) ( '|' 188 ) ( 'I' 'Ì' )
+ ( 'à' 192 ) ( ';' 189 ) ( 'q' '{' ) ( ',' '}' )
+ ( 'i' 'ì' ) ( 'r' 'º' ) ( 'p' '§' )
+ ( '!' '¡' )
+ dcir '^' ( 'a' 'â' ) ( 'e' 'ê' ) ( 'i' 'î' ) ( 'o' 'ô' ) ( 'u' 'û' )
+ ( 'A' 'Â' ) ( 'E' 'Ê' ) ( 'I' 'Î' ) ( 'O' 'Ô' ) ( 'U' 'Û' )
+ dtil '~' ( 'n' 'ñ' ) ( 'N' 'Ñ' )
+ ( 'a' 'ã' ) ( 'A' 'Ã' ) ( 'o' 'õ' ) ( 'O' 'Õ' )
+ ddia '"' ( 'a' 'ä' ) ( 'e' 'ë' ) ( 'i' 'ï' ) ( 'o' 'ö' ) ( 'u' 'ü' )
+ ( 'A' 'Ä' ) ( 'E' 'Ë' ) ( 'I' 'Ï' ) ( 'O' 'Ö' ) ( 'U' 'Ü' )
+ ( 'y' 255 ) ( 'Y' 190 )
+ dacu '´' ( 'a' 'á' ) ( 'e' 'é' ) ( 'i' 237 ) ( 'o' 'ó') ( 'u' 'ú' )
+ ( 'A' 'Á' ) ( 'E' 'É' ) ( 'I' 'Í' ) ( 'O' 'Ó' ) ( 'U' 'Ú' )
+ ( 'Y' 221 ) ( 'y' 253 ) \ No newline at end of file
diff --git a/share/syscons/keymaps/fr.dvorak.kbd b/share/syscons/keymaps/fr.dvorak.kbd
new file mode 100644
index 0000000..c473f8d
--- /dev/null
+++ b/share/syscons/keymaps/fr.dvorak.kbd
@@ -0,0 +1,122 @@
+# A Dvorak keyboard for French
+#
+# This is a Dvorak-like layout for French
+# according to Francis Leboutte on
+# http://www.algo.be/ergo/dvorak-fr.html
+#
+# -Frédéric Praca <frederic.praca@freebsd-fr.org>
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '=' '1' nop ' ' '=' '1' nop nop C
+ 003 224 '2' nop '~' 'à' '2' nop nop C
+ 004 '-' '3' nop '#' '-' '3' nop nop C
+ 005 232 '4' nop '{' 'è' '4' nop nop C
+ 006 '/' '5' nop '[' '/' '5' nop nop C
+ 007 '^' '6' nop '|' '^' '6' nop nop C
+ 008 '(' '7' nop '`' '(' '7' nop nop C
+ 009 '`' '8' nop '\' '`' '8' nop nop C
+ 010 ')' '9' nop '^' ')' '9' nop nop C
+ 011 '"' '0' nop '@' '"' '0' nop nop C
+ 012 '[' '|' nop ']' '[' '|' nop nop O
+ 013 ']' '%' nop '}' ']' '%' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ':' '?' nop ' ' ':' '?' nop nop O
+ 017 ''' '<' nop ' ' ''' '<' nop nop C
+ 018 233 '>' nop '?' 'é' '>' nop nop C
+ 019 'g' 'G' nop ' ' 'g' 'G' nop nop C
+ 020 '.' '!' nop ' ' '.' '!' nop nop O
+ 021 'h' 'H' nop ' ' 'h' 'H' nop nop C
+ 022 'v' 'V' nop ' ' 'v' 'V' nop nop C
+ 023 'c' 'C' nop ' ' 'c' 'C' nop nop C
+ 024 'm' 'M' nop ' ' 'm' 'M' nop nop C
+ 025 'k' 'K' nop ' ' 'k' 'K' nop nop C
+ 026 'z' 'Z' nop ' ' 'z' 'Z' nop nop C
+ 027 168 '&' nop '¤' '¨' '&' nop nop C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'o' 'O' nop ' ' 'o' 'O' nop nop C
+ 031 'a' 'A' nop ' ' 'a' 'A' nop nop C
+ 032 'u' 'U' nop ' ' 'u' 'U' nop nop C
+ 033 'e' 'E' nop ' ' 'e' 'E' nop nop C
+ 034 'b' 'B' nop ' ' 'b' 'B' nop nop C
+ 035 'f' 'F' nop ' ' 'f' 'F' nop nop C
+ 036 's' 'S' nop ' ' 's' 'S' nop nop C
+ 037 't' 'T' nop ' ' 't' 'T' nop nop C
+ 038 'n' 'N' nop ' ' 'n' 'N' nop nop C
+ 039 'd' 'D' nop ' ' 'd' 'D' nop nop C
+ 040 'w' 'W' nop ' ' 'w' 'W' nop nop C
+ 041 178 nop nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 126 '#' nop ' ' '~' '#' nop nop O
+ 044 ';' '@' nop ' ' ';' '@' nop nop O
+ 045 'q' 'Q' nop ' ' 'q' 'Q' nop nop C
+ 046 ',' '\' nop ' ' ',' '\' nop nop O
+ 047 'i' 'I' nop ' ' 'i' 'I' nop nop C
+ 048 'y' 'Y' nop ' ' 'y' 'Y' nop nop C
+ 049 'x' 'X' nop ' ' 'x' 'X' nop nop C
+ 050 'r' 'R' nop ' ' 'r' 'R' nop nop C
+ 051 'l' 'L' nop ' ' 'l' 'L' nop nop C
+ 052 'p' 'P' nop ' ' 'p' 'P' nop nop C
+ 053 'j' 'J' nop ' ' 'j' 'J' nop nop N
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '+' '*' nop ' ' '+' '*' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/fr.iso.acc.kbd b/share/syscons/keymaps/fr.iso.acc.kbd
new file mode 100644
index 0000000..99483be
--- /dev/null
+++ b/share/syscons/keymaps/fr.iso.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop nop nop nop nop C
+ 003 233 '2' nul nul '~' nop nop nop C
+ 004 '"' '3' nop nop '#' nop nop nop C
+ 005 ''' '4' nop nop '{' nop nop nop C
+ 006 '(' '5' nop nop '[' nop nop nop C
+ 007 '-' '6' nop nop '|' nop nop nop C
+ 008 232 '7' nop nop '`' nop nop nop C
+ 009 '_' '8' nop nop '\' nop fs nop C
+ 010 231 '9' nop nop '^' nop nop nop C
+ 011 224 '0' nop nop '@' nop nop nop C
+ 012 ')' 176 nop nop ']' nop nop nop C
+ 013 '=' '+' nop nop '}' nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 226 228 dc1 dc1 C
+ 017 'z' 'Z' sub sub 'z' 'Z' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 237 236 em em C
+ 022 'u' 'U' nak nak 251 252 nak nak C
+ 023 'i' 'I' ht ht 238 239 ht ht C
+ 024 'o' 'O' si si 244 246 si si C
+ 025 'p' 'P' dle dle 247 230 dle dle C
+ 026 dcir duml esc esc '[' '{' esc esc O
+ 027 '$' 163 gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 249 '%' nul nul ''' '@' nul nul O
+ 041 178 nop nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '*' 181 nop nop '#' '~' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 223 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop nop nop nop nop O
+ 051 ';' '.' nop nop ',' '<' nop nop O
+ 052 ':' '/' nop nop '.' '>' nop nop O
+ 053 '!' 167 nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 171 187 fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/fr.iso.kbd b/share/syscons/keymaps/fr.iso.kbd
new file mode 100644
index 0000000..1eb4626
--- /dev/null
+++ b/share/syscons/keymaps/fr.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop nop nop nop nop C
+ 003 233 '2' nul nul '~' nop nop nop C
+ 004 '"' '3' nop nop '#' nop nop nop C
+ 005 ''' '4' nop nop '{' nop nop nop C
+ 006 '(' '5' nop nop '[' nop nop nop C
+ 007 '-' '6' nop nop '|' nop nop nop C
+ 008 232 '7' nop nop '`' nop nop nop C
+ 009 '_' '8' nop nop '\' nop fs nop C
+ 010 231 '9' nop nop '^' nop nop nop C
+ 011 224 '0' nop nop '@' nop nop nop C
+ 012 ')' 176 nop nop ']' nop nop nop C
+ 013 '=' '+' nop nop '}' nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 226 228 dc1 dc1 C
+ 017 'z' 'Z' sub sub 'z' 'Z' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 237 236 em em C
+ 022 'u' 'U' nak nak 251 252 nak nak C
+ 023 'i' 'I' ht ht 238 239 ht ht C
+ 024 'o' 'O' si si 244 246 si si C
+ 025 'p' 'P' dle dle 247 230 dle dle C
+ 026 234 244 esc esc '[' '{' esc esc O
+ 027 '$' 163 gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 249 '%' nul nul ''' '@' nul nul O
+ 041 178 nop nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '*' 181 nop nop '#' '~' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 223 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 ',' '?' nop nop nop nop nop nop O
+ 051 ';' '.' nop nop ',' '<' nop nop O
+ 052 ':' '/' nop nop '.' '>' nop nop O
+ 053 '!' 167 nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 171 187 fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/fr.macbook.acc.kbd b/share/syscons/keymaps/fr.macbook.acc.kbd
new file mode 100644
index 0000000..dbd8918
--- /dev/null
+++ b/share/syscons/keymaps/fr.macbook.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '&' '1' nop nop nop nop nop nop C
+ 003 233 '2' nul nul '~' nop nop nop C
+ 004 '"' '3' nop nop '#' nop nop nop C
+ 005 ''' '4' nop nop '{' nop nop nop C
+ 006 '(' '5' nop nop '[' nop nop nop C
+ 007 167 '6' nop nop '|' nop nop nop C
+ 008 232 '7' nop nop '`' nop nop nop C
+ 009 '!' '8' nop nop '\' nop fs nop C
+ 010 231 '9' nop nop '^' nop nop nop C
+ 011 224 '0' nop nop '@' nop nop nop C
+ 012 ')' 176 nop nop ']' nop nop nop C
+ 013 '-' '_' nop nop '}' nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'a' 'A' soh soh 226 228 dc1 dc1 C
+ 017 'z' 'Z' sub sub 'z' 'Z' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 174 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 237 236 em em C
+ 022 'u' 'U' nak nak 251 252 nak nak C
+ 023 'i' 'I' ht ht 238 239 ht ht C
+ 024 'o' 'O' si si 189 188 si si C
+ 025 'p' 'P' dle dle 247 230 dle dle C
+ 026 dcir duml esc esc '[' '{' esc esc O
+ 027 '$' '*' gs gs 164 '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'q' 'Q' dc1 dc1 'q' 'Q' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' '|' ff ff C
+ 039 'm' 'M' cr cr 'm' 'M' cr cr C
+ 040 249 '%' nul nul ''' '@' nul nul O
+ 041 '@' '#' nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 dgra 163 nop nop '#' '~' nop nop O
+ 044 'w' 'W' etb etb 'w' 'W' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 169 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 223 'B' stx stx C
+ 049 'n' 'N' so so '~' 'N' so so C
+ 050 ',' '?' nop nop nop nop nop nop O
+ 051 ';' '.' nop nop ',' '<' nop nop O
+ 052 ':' '/' nop nop '.' '\' nop nop O
+ 053 '=' '+' nop nop nop nop nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 171 187 fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/fr_CA.iso.acc.kbd b/share/syscons/keymaps/fr_CA.iso.acc.kbd
new file mode 100644
index 0000000..e758eb2
--- /dev/null
+++ b/share/syscons/keymaps/fr_CA.iso.acc.kbd
@@ -0,0 +1,145 @@
+# French Canadian keyboard
+# by Alexandre Normand (outcast@globetretrotter.net)
+# with the help of Demis (demis@club-internet.fr)
+#
+# July 4, 1999
+#
+# $FreeBSD$
+
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 177 '!' nop nop O
+ 003 '2' '"' nul nul '@' '"' nul nul O
+ 004 '3' '/' nop nop 163 '/' nop nop O
+ 005 '4' '$' nop nop 162 '$' nop nop O
+ 006 '5' '%' nop nop 164 '%' nop nop O
+ 007 '6' '?' nop nop 172 '?' nop nop O
+ 008 '7' '&' nop nop '|' '&' nop nop O
+ 009 '8' '*' nop nop 178 '*' nop nop O
+ 010 '9' '(' nop nop 179 '(' nop nop O
+ 011 '0' ')' nop nop 188 ')' nop nop O
+ 012 '-' '_' nop nop 189 '_' nop nop O
+ 013 '=' '+' nop nop 190 '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dcir dcir esc esc '[' dcir esc esc O
+ 027 dced duml gs gs ']' duml gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop '~' ':' nop nop O
+ 040 dgra dgra nop nop '{' dgra nop nop O
+ 041 '#' '|' nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '<' '>' fs fs '}' '>' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ''' nop nop '_' ''' nop nop O
+ 052 '.' '.' nop nop nop '.' nop nop O
+ 053 233 201 nop nop dacu 201 nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 171 187 nop nop 176 187 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/german.cp850.kbd b/share/syscons/keymaps/german.cp850.kbd
new file mode 100644
index 0000000..64b7dc9
--- /dev/null
+++ b/share/syscons/keymaps/german.cp850.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul 253 253 nul nul O
+ 004 '3' 245 nop nop 252 252 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 225 '?' fs fs '\' '\' fs fs O
+ 013 ''' '`' nop nop 179 180 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' nul nul C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 129 154 nop nop 129 154 nop nop C
+ 027 '+' '*' nop nop '~' '~' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 148 153 nop nop 148 153 nop nop C
+ 040 132 142 nop nop 132 142 nop nop C
+ 041 '^' 248 rs rs '^' 248 rs rs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' ''' nop nop '#' ''' nop nop O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 230 230 nop nop C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/german.iso.acc.kbd b/share/syscons/keymaps/german.iso.acc.kbd
new file mode 100644
index 0000000..6a9223b
--- /dev/null
+++ b/share/syscons/keymaps/german.iso.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop 178 178 nop nop O
+ 004 '3' 167 nop nop 179 179 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 223 '?' fs fs '\' '\' fs fs O
+ 013 dacu dgra nop nop 179 180 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' nul nul C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 252 220 nop nop 252 220 esc nop C
+ 027 '+' '*' nop nop dtil dtil nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop 246 214 nop nop C
+ 040 228 196 nop nop 228 196 nop nop C
+ 041 dcir 176 rs rs '^' 176 rs rs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' ''' nop nop '#' ''' nop nop O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 181 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' 166 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/german.iso.kbd b/share/syscons/keymaps/german.iso.kbd
new file mode 100644
index 0000000..ca987c8
--- /dev/null
+++ b/share/syscons/keymaps/german.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop 178 178 nop nop O
+ 004 '3' 167 nop nop 179 179 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 223 '?' fs fs '\' '\' fs fs O
+ 013 ''' '`' nop nop 179 180 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' nul nul C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 252 220 nop nop 252 220 esc nop C
+ 027 '+' '*' nop nop '~' '~' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop 246 214 nop nop C
+ 040 228 196 nop nop 228 196 nop nop C
+ 041 '^' 176 rs rs '^' 176 rs rs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' ''' nop nop '#' ''' nop nop O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 181 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' 166 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/gr.elot.acc.kbd b/share/syscons/keymaps/gr.elot.acc.kbd
new file mode 100644
index 0000000..2abc97d
--- /dev/null
+++ b/share/syscons/keymaps/gr.elot.acc.kbd
@@ -0,0 +1,281 @@
+# $FreeBSD$
+#
+# Built on Wed 1 Apr 15:59:44 EEST 1998 by peppe@cs.uoi.gr
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+#
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' '£' nop nop '3' '£' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 171 187 dc1 dc1 C
+ 017 'w' 'W' etb etb 242 211 etb etb C
+ 018 'e' 'E' enq enq 229 197 enq enq C
+ 019 'r' 'R' dc2 dc2 241 209 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 244 212 dc4 dc4 C
+ 021 'y' 'Y' em em 245 213 em em C
+ 022 'u' 'U' nak nak 232 200 nak nak C
+ 023 'i' 'I' ht ht 233 201 ht ht C
+ 024 'o' 'O' si si 239 207 si si C
+ 025 'p' 'P' dle dle 240 208 dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 243 211 dc3 dc3 C
+ 032 'd' 'D' eot eot 228 196 eot eot C
+ 033 'f' 'F' ack ack 246 214 ack ack C
+ 034 'g' 'G' bel bel 227 195 bel bel C
+ 035 'h' 'H' bs bs 231 199 bs bs C
+ 036 'j' 'J' nl nl 238 206 nl nl C
+ 037 'k' 'K' vt vt 234 202 vt vt C
+ 038 'l' 'L' ff ff 235 203 ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 '/' '@' nop nop dacu ddia nop dcir O
+ 041 '`' ''' nop nop '`' ''' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' fs fs '#' '~' fs fs O
+ 044 'z' 'Z' sub sub 230 198 sub sub C
+ 045 'x' 'X' can can 247 215 can can C
+ 046 'c' 'C' etx etx 248 216 etx etx C
+ 047 'v' 'V' syn syn 249 217 syn syn C
+ 048 'b' 'B' stx stx 226 194 stx stx C
+ 049 'n' 'N' so so 237 205 so so C
+ 050 'm' 'M' cr cr 236 204 cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' nop nop '\' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+#
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop esc esc debug nop O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '"' nul nul O
+ 132 '3' '£' nop nop '3' '£' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 171 187 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 242 211 etb etb 'w' 'W' etb etb C
+ 146 229 197 enq enq 'e' 'E' enq enq C
+ 147 241 209 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 244 212 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 245 213 em em 'y' 'Y' em em C
+ 150 232 200 nak nak 'u' 'U' nak nak C
+ 151 233 201 ht ht 'i' 'I' ht ht C
+ 152 239 207 si si 'o' 'O' si si C
+ 153 240 208 dle dle 'p' 'P' dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 225 193 soh soh 'a' 'A' soh soh C
+ 159 243 211 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 228 196 eot eot 'd' 'D' eot eot C
+ 161 246 214 ack ack 'f' 'F' ack ack C
+ 162 227 195 bel bel 'g' 'G' bel bel C
+ 163 231 199 bs bs 'h' 'H' bs bs C
+ 164 238 206 nl nl 'j' 'J' nl nl C
+ 165 234 202 vt vt 'k' 'K' vt vt C
+ 166 235 203 ff ff 'l' 'L' ff ff C
+ 167 ';' ':' nop nop ';' ':' nop nop O
+ 168 dacu ddia dcir nop '/' '@' nop nop O
+ 169 '`' ''' nop nop '`' ''' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '#' '~' fs fs '#' '~' fs fs O
+ 172 230 198 sub sub 'z' 'Z' sub sub C
+ 173 247 215 can can 'x' 'X' can can C
+ 174 248 216 etx etx 'c' 'C' etx etx C
+ 175 249 217 syn syn 'v' 'V' syn syn C
+ 176 226 194 stx stx 'b' 'B' stx stx C
+ 177 237 205 so so 'n' 'N' so so C
+ 178 236 204 cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 ns ns ns ns ns ns ns ns O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 '\' '|' nop nop '\' '|' nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock slock slock slock slock slock slock slock O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
+dgra 000
+dacu 180 (225 220) (193 182) (229 221) (197 184)
+ (233 223) (201 186) (231 222) (199 185)
+ (245 253) (213 190) (239 252) (207 188)
+ (249 254) (217 191)
+
+dcir 181 (233 192) (201 218) (245 224) (213 219)
+
+dtil 000
+
+dmac 000
+
+dbre 000
+
+ddot 000
+
+duml 000
+
+ddia 168 (233 250) (201 218) (245 251) (213 219)
+
+dsla 000
+
+drin 000
+
+dced 000
+
+dapo 000
+
+ddac 000
+
+dogo 000
+
+dcar 000
+
diff --git a/share/syscons/keymaps/gr.us101.acc.kbd b/share/syscons/keymaps/gr.us101.acc.kbd
new file mode 100644
index 0000000..a3a4f41
--- /dev/null
+++ b/share/syscons/keymaps/gr.us101.acc.kbd
@@ -0,0 +1,281 @@
+# $FreeBSD$
+#
+# Built on Wed 1 Apr 15:59:44 EEST 1998 by peppe@cs.uoi.gr
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+#
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 ';' ':' dc1 dc1 C
+ 017 'w' 'W' etb etb 242 211 etb etb C
+ 018 'e' 'E' enq enq 229 197 enq enq C
+ 019 'r' 'R' dc2 dc2 241 209 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 244 212 dc4 dc4 C
+ 021 'y' 'Y' em em 245 213 em em C
+ 022 'u' 'U' nak nak 232 200 nak nak C
+ 023 'i' 'I' ht ht 233 201 ht ht C
+ 024 'o' 'O' si si 239 207 si si C
+ 025 'p' 'P' dle dle 240 208 dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 243 211 dc3 dc3 C
+ 032 'd' 'D' eot eot 228 196 eot eot C
+ 033 'f' 'F' ack ack 246 214 ack ack C
+ 034 'g' 'G' bel bel 227 195 bel bel C
+ 035 'h' 'H' bs bs 231 199 bs bs C
+ 036 'j' 'J' nl nl 238 206 nl nl C
+ 037 'k' 'K' vt vt 234 202 vt vt C
+ 038 'l' 'L' ff ff 235 203 ff ff C
+ 039 ';' ':' nop nop dacu ddia dcir nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 230 198 sub sub C
+ 045 'x' 'X' can can 247 215 can can C
+ 046 'c' 'C' etx etx 248 216 etx etx C
+ 047 'v' 'V' syn syn 249 217 syn syn C
+ 048 'b' 'B' stx stx 226 194 stx stx C
+ 049 'n' 'N' so so 237 205 so so C
+ 050 'm' 'M' cr cr 236 204 cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' nop nop '\' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+#
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop esc esc debug nop O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 ';' ':' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 242 211 etb etb 'w' 'W' etb etb C
+ 146 229 197 enq enq 'e' 'E' enq enq C
+ 147 241 209 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 244 212 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 245 213 em em 'y' 'Y' em em C
+ 150 232 200 nak nak 'u' 'U' nak nak C
+ 151 233 201 ht ht 'i' 'I' ht ht C
+ 152 239 207 si si 'o' 'O' si si C
+ 153 240 208 dle dle 'p' 'P' dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 225 193 soh soh 'a' 'A' soh soh C
+ 159 243 211 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 228 196 eot eot 'd' 'D' eot eot C
+ 161 246 214 ack ack 'f' 'F' ack ack C
+ 162 227 195 bel bel 'g' 'G' bel bel C
+ 163 231 199 bs bs 'h' 'H' bs bs C
+ 164 238 206 nl nl 'j' 'J' nl nl C
+ 165 234 202 vt vt 'k' 'K' vt vt C
+ 166 235 203 ff ff 'l' 'L' ff ff C
+ 167 dacu ddia dcir nop ';' ':' nop nop O
+ 168 ''' '"' nop nop ''' '"' nop nop O
+ 169 '`' '~' nop nop '`' '~' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 230 198 sub sub 'z' 'Z' sub sub C
+ 173 247 215 can can 'x' 'X' can can C
+ 174 248 216 etx etx 'c' 'C' etx etx C
+ 175 249 217 syn syn 'v' 'V' syn syn C
+ 176 226 194 stx stx 'b' 'B' stx stx C
+ 177 237 205 so so 'n' 'N' so so C
+ 178 236 204 cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' alock ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 ns ns ns ns ns ns ns ns O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 '\' '|' nop nop '\' '|' nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock slock slock slock slock slock slock slock O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
+dgra 000
+dacu 180 (225 220) (193 182) (229 221) (197 184)
+ (233 223) (201 186) (231 222) (199 185)
+ (245 253) (213 190) (239 252) (207 188)
+ (249 254) (217 191)
+
+dcir 181 (233 192) (201 218) (245 224) (213 219)
+
+dtil 000
+
+dmac 000
+
+dbre 000
+
+ddot 000
+
+duml 000
+
+ddia 168 (233 250) (201 218) (245 251) (213 219)
+
+dsla 000
+
+drin 000
+
+dced 000
+
+dapo 000
+
+ddac 000
+
+dogo 000
+
+dcar 000
+
diff --git a/share/syscons/keymaps/hr.iso.kbd b/share/syscons/keymaps/hr.iso.kbd
new file mode 100644
index 0000000..a396a31
--- /dev/null
+++ b/share/syscons/keymaps/hr.iso.kbd
@@ -0,0 +1,116 @@
+# Slovenian keyboard
+# Blaz Zupan <blaz@amis.net>
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '~' '~' nop nop O
+ 003 '2' '"' nul nul 183 183 nul nul O
+ 004 '3' '#' nop nop '^' '^' nop nop O
+ 005 '4' '$' nop nop 162 162 nop nop O
+ 006 '5' '%' nop nop 176 176 nop nop O
+ 007 '6' '&' rs rs 178 178 rs rs O
+ 008 '7' '/' nop nop '`' '`' nop nop O
+ 009 '8' '(' nop nop 255 255 nop nop O
+ 010 '9' ')' nop nop ''' ''' nop nop O
+ 011 '0' '=' nop nop 189 189 nop nop O
+ 012 ''' '?' us us 168 168 us us O
+ 013 '+' '*' nop nop 184 184 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '\' '\' dc1 dc1 C
+ 017 'w' 'W' etb etb '|' '|' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 185 169 esc esc 247 247 esc esc C
+ 027 240 208 gs gs 215 215 gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack '[' '[' ack ack C
+ 034 'g' 'G' bel bel ']' ']' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 179 179 vt vt C
+ 038 'l' 'L' ff ff 163 163 ff ff C
+ 039 232 200 nop nop 232 200 nop nop C
+ 040 230 198 nop nop 223 223 nop nop C
+ 041 184 168 nop nop 184 168 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 190 174 fs fs 164 164 fs fs C
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn '@' '@' syn syn C
+ 048 'b' 'B' stx stx '{' '{' stx stx C
+ 049 'n' 'N' so so '}' '}' so so C
+ 050 'm' 'M' cr cr 167 167 cr cr C
+ 051 ',' ';' nop nop '<' ';' '<' nop O
+ 052 '.' ':' nop nop '>' ':' '>' nop O
+ 053 '-' '_' nop nop '-' '_' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/hu.iso2.101keys.kbd b/share/syscons/keymaps/hu.iso2.101keys.kbd
new file mode 100644
index 0000000..7186258
--- /dev/null
+++ b/share/syscons/keymaps/hu.iso2.101keys.kbd
@@ -0,0 +1,293 @@
+# $FreeBSD$
+#
+# This is for use with a US keyboard, with only the
+# Hungarian accented characters added to it, and some tricks:
+# The accented characters are available as Alt + something: (and the upper
+# case version is with Alt + Shift + something)
+# ' -> a'
+# ; -> e'
+# ` -> i'
+# = -> o'
+# 0 -> o:
+# [ -> o"
+# ] -> u'
+# - -> u:
+# \ -> u"
+# (i' and I' has another method: Alt + j -> i' and Alt + i -> I')
+#
+# This keymap file has a switching feature:
+# with the Shift+Ctrl combination,
+# we can change the keyboard from US kbd (with hungarian accented letters as
+# Alt+something) to a US kbd, with the help of which we can type the accented
+# characters
+# without the Alt key (and can type the original characters as Alt + ;). So
+# after loading that keymap:
+# ; -> ;
+# Alt + ; -> e'
+# press Shift+Ctrl, and get:
+# ; -> e'
+# Alt + ; -> ;
+# The keyboard switch can be seen at the CapsLock led: off = normal mode; on =
+# switched mode. By the way, we cannot see the CapsLock key's status ;-(
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop 246 214 nop nop O
+ 012 '-' '_' ns ns 252 220 ns ns C
+ 013 '=' '+' nop nop 243 211 nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 205 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc 245 213 esc esc C
+ 027 ']' '}' gs gs 250 218 gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 237 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop 233 201 nop nop C
+ 040 ''' '"' nop nop 225 193 nop nop C
+ 041 '`' '~' nop nop 237 205 nop nop C
+ 042 lshift lshift alock lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 251 219 fs fs C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop C
+ 054 rshift rshift alock rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 237 205 nop nop nop nop nop nop C
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+# ------------------------------------------------------------------
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '@' nul nul '2' '@' nul nul O
+ 132 '3' '#' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' '%' nop nop '5' '%' nop nop O
+ 135 '6' '^' rs rs '6' '^' rs rs O
+ 136 '7' '&' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 246 214 nop nop '0' ')' nop nop O
+ 140 252 220 ns ns '-' '_' ns ns C
+ 141 243 211 nop nop '=' '+' nop nop C
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'w' 'W' etb etb 'w' 'W' etb etb C
+ 146 'e' 'E' enq enq 'e' 'E' enq enq C
+ 147 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'y' 'Y' em em 'y' 'Y' em em C
+ 150 'u' 'U' nak nak 'u' 'U' nak nak C
+ 151 'i' 'I' ht ht 205 'I' ht ht C
+ 152 'o' 'O' si si 'o' 'O' si si C
+ 153 'p' 'P' dle dle 'p' 'P' dle dle C
+ 154 245 213 esc esc '[' '{' esc esc C
+ 155 250 218 gs gs ']' '}' gs gs C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'a' 'A' soh soh 'a' 'A' soh soh C
+ 159 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'd' 'D' eot eot 'd' 'D' eot eot C
+ 161 'f' 'F' ack ack 'f' 'F' ack ack C
+ 162 'g' 'G' bel bel 'g' 'G' bel bel C
+ 163 'h' 'H' bs bs 'h' 'H' bs bs C
+ 164 'j' 'J' nl nl 237 'J' nl nl C
+ 165 'k' 'K' vt vt 'k' 'K' vt vt C
+ 166 'l' 'L' ff ff 'l' 'L' ff ff C
+ 167 233 201 nop nop ';' ':' nop nop C
+ 168 225 193 nop nop ''' '"' nop nop C
+ 169 237 205 nop nop '`' '~' nop nop C
+ 170 lshift lshift alock lshift lshift lshift lshift lshift O
+ 171 251 219 fs fs '\' '|' fs fs C
+ 172 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 173 'x' 'X' can can 'x' 'X' can can C
+ 174 'c' 'C' etx etx 'c' 'C' etx etx C
+ 175 'v' 'V' syn syn 'v' 'V' syn syn C
+ 176 'b' 'B' stx stx 'b' 'B' stx stx C
+ 177 'n' 'N' so so 'n' 'N' so so C
+ 178 'm' 'M' cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop C
+ 182 rshift rshift alock rshift rshift rshift rshift rshift O
+ 183 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 237 205 nop nop nop nop nop nop C
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr cr cr cr cr cr cr O
+ 218 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
+ 237 nop nop nop nop nop nop nop nop O
+ 238 nop nop nop nop nop nop nop nop O
+ 239 nop nop nop nop nop nop nop nop O
+ 240 nop nop nop nop nop nop nop nop O
+ 241 nop nop nop nop nop nop nop nop O
+ 242 nop nop nop nop nop nop nop nop O
+ 243 nop nop nop nop nop nop nop nop O
+ 244 nop nop nop nop nop nop nop nop O
+ 245 nop nop nop nop nop nop nop nop O
+ 246 nop nop nop nop nop nop nop nop O
+ 247 nop nop nop nop nop nop nop nop O
+ 248 nop nop nop nop nop nop nop nop O
+ 249 nop nop nop nop nop nop nop nop O
+ 250 nop nop nop nop nop nop nop nop O
+ 251 nop nop nop nop nop nop nop nop O
+ 252 nop nop nop nop nop nop nop nop O
+ 253 nop nop nop nop nop nop nop nop O
+ 254 nop nop nop nop nop nop nop nop O
+ 255 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/hu.iso2.102keys.kbd b/share/syscons/keymaps/hu.iso2.102keys.kbd
new file mode 100644
index 0000000..3166a67
--- /dev/null
+++ b/share/syscons/keymaps/hu.iso2.102keys.kbd
@@ -0,0 +1,142 @@
+# This is an as-close-as-possible (closer :-) representation of the
+# Hungarian keyboard standard (after M$'s W*). There are so many PCs in
+# Hungary with that type of keyboard.
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' ''' nop nop '~' nop nop nop O
+ 003 '2' '"' nop nop 183 nop nop nop O
+ 004 '3' '+' nop nop '^' nop rs rs O
+ 005 '4' '!' nop nop 162 nop nop nop O
+ 006 '5' '%' nop nop 176 nop nop nop O
+ 007 '6' '/' rs rs 178 nop rs rs O
+ 008 '7' '=' nop nop '`' nop nop nop O
+ 009 '8' '(' nop nop 255 nop nop nop O
+ 010 '9' ')' nop nop 180 nop nop nop O
+ 011 246 214 nop nop 189 nop nop nop C
+ 012 252 220 nop nop 168 nop nop nop C
+ 013 243 211 nop nop 184 nop nop nop C
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '\' nop fs fs C
+ 017 'w' 'W' etb etb '|' nop etb etb C
+ 018 'e' 'E' enq enq nop nop enq enq C
+ 019 'r' 'R' dc2 dc2 nop nop dc2 dc2 C
+ 020 't' 'T' dc4 dc4 nop nop dc4 dc4 C
+ 021 'z' 'Z' sub sub nop nop sub sub C
+ 022 'u' 'U' nak nak nop nop nak nak C
+ 023 'i' 'I' ht ht 205 nop ht ht C
+ 024 'o' 'O' si si nop nop si si C
+ 025 'p' 'P' dle dle nop nop dle dle C
+ 026 245 213 esc esc 247 nop esc esc C
+ 027 250 218 gs gs 215 nop gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh nop nop soh soh C
+ 031 's' 'S' dc3 dc3 240 nop dc3 dc3 C
+ 032 'd' 'D' eot eot 208 nop eot eot C
+ 033 'f' 'F' ack ack '[' nop esc esc C
+ 034 'g' 'G' bel bel ']' nop gs gs C
+ 035 'h' 'H' bs bs nop nop bs bs C
+ 036 'j' 'J' nl nl 237 nop nl nl C
+ 037 'k' 'K' vt vt 179 nop vt vt C
+ 038 'l' 'L' ff ff 163 nop ff ff C
+ 039 233 201 nop nop '$' nop nop nop C
+ 040 225 193 nop nop 223 nop nop nop C
+ 041 '0' 21 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 251 219 fs fs 164 nop fs fs C
+ 044 'y' 'Y' em em '>' '<' em em C
+ 045 'x' 'X' can can '#' nop can can C
+ 046 'c' 'C' etx etx '&' nop etx etx C
+ 047 'v' 'V' syn syn '@' nop nul nul C
+ 048 'b' 'B' stx stx '{' nop stx stx C
+ 049 'n' 'N' so so '}' nop so so C
+ 050 'm' 'M' cr cr '<' nop cr cr C
+ 051 ',' '?' nop nop ';' nop nop nop O
+ 052 '.' ':' nop nop '>' nop nop nop O
+ 053 '-' '_' ns ns '*' nop nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 237 205 nop nop '<' nop nop nop C
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+# the left Windows key. If you would like to use them,
+# program these keys with:
+# kbdcontrol -f 62 'strings you would like to send'
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+# the right Windows key.
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+# the right Menu pointer key.
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/hy.armscii-8.kbd b/share/syscons/keymaps/hy.armscii-8.kbd
new file mode 100644
index 0000000..d7e8cc9
--- /dev/null
+++ b/share/syscons/keymaps/hy.armscii-8.kbd
@@ -0,0 +1,247 @@
+# $FreeBSD$
+#
+# FreeBSD Armenian Phonetic keyboard layout
+# by Vahe Khachikyan <vahe@khachikyan.de>
+# US <=> Armphonetic lock (AltGrLock) Alt+Ctrl+Shift
+# US <=> Armphonetic shift (AltGr) Alt
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc nop nop debug esc O
+ 002 '1' '!' nop nop 0xBF 0xBE nop nop O
+ 003 '2' '@' nul nul 0xC3 0xC2 nul nul O
+ 004 '3' '#' nop nop 0xF7 0xF6 nop nop O
+ 005 '4' '$' nop nop 0xD3 0xD2 nop nop O
+ 006 '5' '%' nop nop 0xE7 0xE6 nop nop O
+ 007 '6' '^' rs rs 0xA4 0xA5 rs rs O
+ 008 '7' '&' nop nop 0xA2 '%' nop nop O
+ 009 '8' '*' nop nop 0xE9 0xE8 nop nop O
+ 010 '9' '(' nop nop 0xE3 0xE2 nop nop O
+ 011 '0' ')' nop nop 0xD7 0xD6 nop nop O
+ 012 '-' '_' us us 0xA8 0xAC us us O
+ 013 '=' '+' nop nop 0xC5 0xC4 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 0xF9 0xF8 dc1 dc1 C
+ 017 'w' 'W' etb etb 0xE1 0xE0 etb etb C
+ 018 'e' 'E' enq enq 0xBB 0xBA enq enq C
+ 019 'r' 'R' dc2 dc2 0xF1 0xF0 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 0xEF 0xEE dc4 dc4 C
+ 021 'y' 'Y' em em 0xC1 0xC0 em em C
+ 022 'u' 'U' nak nak 0xF5 0xF4 nak nak C
+ 023 'i' 'I' ht ht 0xC7 0xC6 ht ht C
+ 024 'o' 'O' si si 0xFB 0xFA si si C
+ 025 'p' 'P' dle dle 0xE5 0xE4 dle dle C
+ 026 '[' '{' esc esc 0xCB 0xCA esc esc O
+ 027 ']' '}' gs gs 0xCD 0xCC gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl alock lctrl alock O
+ 030 'a' 'A' soh soh 0xB3 0xB2 soh soh C
+ 031 's' 'S' dc3 dc3 0xEB 0xEA dc3 dc3 C
+ 032 'd' 'D' eot eot 0xB9 0xB8 eot eot C
+ 033 'f' 'F' ack ack 0xFD 0xFC ack ack C
+ 034 'g' 'G' bel bel 0xB7 0xB6 bel bel C
+ 035 'h' 'H' bs bs 0xD1 0xD0 bs bs C
+ 036 'j' 'J' nl nl 0xDB 0xDA nl nl C
+ 037 'k' 'K' vt vt 0xCF 0xCE vt vt C
+ 038 'l' 'L' ff ff 0xC9 0xC8 ff ff C
+ 039 ';' ':' nop nop 0xA3 0xAE nop nop O
+ 040 ''' '"' nop nop 0xB0 0xFE nop nop O
+ 041 '`' '~' nop nop 0xAA 0xAF nop nop O
+ 042 lshift lshift lshift lshift lshift lshift alock alock O
+ 043 '\' '|' fs fs 0xDF 0xDE fs fs O
+ 044 'z' 'Z' sub sub 0xBD 0xBC sub sub C
+ 045 'x' 'X' can can 0xD5 0xD4 can can C
+ 046 'c' 'C' etx etx 0xF3 0xF2 etx etx C
+ 047 'v' 'V' syn syn 0xED 0xEC syn syn C
+ 048 'b' 'B' stx stx 0xB5 0xB4 stx stx C
+ 049 'n' 'N' so so 0xDD 0xDC so so C
+ 050 'm' 'M' cr cr 0xD9 0xD8 cr cr C
+ 051 ',' '<' nop nop 0xAB 0xA7 nop nop O
+ 052 '.' '>' nop nop 0xA9 0xA6 nop nop O
+ 053 '/' '?' nop nop 0xA1 0xB1 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' nop nop '*' '*' O
+ 056 lalt lalt lalt alock lalt lalt lalt alock O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 nop nop esc esc esc esc debug esc O
+ 130 0xBF 0xBE nop nop '1' '!' nop nop O
+ 131 0xC3 0xC2 nul nul '2' '@' nul nul O
+ 132 0xF7 0xF6 nop nop '3' '#' nop nop O
+ 133 0xD3 0xD2 nop nop '4' '$' nop nop O
+ 134 0xE7 0xE6 nop nop '5' '%' nop nop O
+ 135 0xA4 0xA5 rs rs '6' '^' rs rs O
+ 136 0xA2 '%' nop nop '7' '&' nop nop O
+ 137 0xE9 0xE8 nop nop '8' '*' nop nop O
+ 138 0xE3 0xE2 nop nop '9' '(' nop nop O
+ 139 0xD7 0xD6 nop nop '0' ')' nop nop O
+ 140 0xA8 0xAC us us '-' '_' us us O
+ 141 0xC5 0xC4 nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 0xF9 0xF8 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 0xE1 0xE0 etb etb 'w' 'W' etb etb C
+ 146 0xBB 0xBA enq enq 'e' 'E' enq enq C
+ 147 0xF1 0xF0 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 0xEF 0xEE dc4 dc4 't' 'T' dc4 dc4 C
+ 149 0xC1 0xC0 em em 'y' 'Y' em em C
+ 150 0xF5 0xF4 nak nak 'u' 'U' nak nak C
+ 151 0xC7 0xC6 ht ht 'i' 'I' ht ht C
+ 152 0xFB 0xFA si si 'o' 'O' si si C
+ 153 0xE5 0xE4 dle dle 'p' 'P' dle dle C
+ 154 0xCB 0xCA esc esc '[' '{' esc esc O
+ 155 0xCD 0xCC gs gs ']' '}' gs gs O
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl alock lctrl alock O
+ 158 0xB3 0xB2 soh soh 'a' 'A' soh soh C
+ 159 0xEB 0xEA dc3 dc3 's' 'S' dc3 dc3 C
+ 160 0xB9 0xB8 eot eot 'd' 'D' eot eot C
+ 161 0xFD 0xFC ack ack 'f' 'F' ack ack C
+ 162 0xB7 0xB6 bel bel 'g' 'G' bel bel C
+ 163 0xD1 0xD0 bs bs 'h' 'H' bs bs C
+ 164 0xDB 0xDA nl nl 'j' 'J' nl nl C
+ 165 0xCF 0xCE vt vt 'k' 'K' vt vt C
+ 166 0xC9 0xC8 ff ff 'l' 'L' ff ff C
+ 167 0xA3 0xAE nop nop ';' ':' nop nop O
+ 168 0xB0 0xFE nop nop ''' '"' nop nop O
+ 169 0xAA 0xAF nop nop '`' '~' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift alock alock O
+ 171 0xDF 0xDE fs fs '|' '|' fs fs O
+ 172 0xBD 0xBC sub sub 'z' 'Z' sub sub C
+ 173 0xD5 0xD4 can can 'x' 'X' can can C
+ 174 0xF3 0xF2 etx etx 'c' 'C' etx etx C
+ 175 0xED 0xEC syn syn 'v' 'V' syn syn C
+ 176 0xB5 0xB4 stx stx 'b' 'B' stx stx C
+ 177 0xDD 0xDC so so 'n' 'N' so so C
+ 178 0xD9 0xD8 cr cr 'm' 'M' cr cr C
+ 179 0xAB 0xA7 nop nop ',' '<' nop nop O
+ 180 0xA9 0xA6 nop nop '.' '>' nop nop O
+ 181 0xA1 0xB1 nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 nop nop '*' '*' '*' '*' '*' '*' O
+ 184 lalt lalt lalt alock lalt lalt lalt alock O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 scr01 scr11 fkey25 fkey37 fkey01 fkey13 scr01 scr11 O
+ 188 scr02 scr12 fkey26 fkey38 fkey02 fkey14 scr02 scr12 O
+ 189 scr03 scr13 fkey27 fkey39 fkey03 fkey15 scr03 scr13 O
+ 190 scr04 scr14 fkey28 fkey40 fkey04 fkey16 scr04 scr14 O
+ 191 scr05 scr15 fkey29 fkey41 fkey05 fkey17 scr05 scr15 O
+ 192 scr06 scr16 fkey30 fkey42 fkey06 fkey18 scr06 scr16 O
+ 193 scr07 scr07 fkey31 fkey43 fkey07 fkey19 scr07 scr07 O
+ 194 scr08 scr08 fkey32 fkey44 fkey08 fkey20 scr08 scr08 O
+ 195 scr09 scr09 fkey33 fkey45 fkey09 fkey21 scr09 scr09 O
+ 196 scr10 scr10 fkey34 fkey46 fkey10 fkey22 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 '7' '7' '7' '7' fkey49 '7' '7' '7' N
+ 200 '8' '8' '8' '8' fkey50 '8' '8' '8' N
+ 201 '9' '9' '9' '9' fkey51 '9' '9' '9' N
+ 202 '-' '-' '-' '-' fkey52 '-' '-' '-' N
+ 203 '4' '4' '4' '4' fkey53 '4' '4' '4' N
+ 204 '5' '5' '5' '5' fkey54 '5' '5' '5' N
+ 205 '6' '6' '6' '6' fkey55 '6' '6' '6' N
+ 206 '+' '+' '+' '+' fkey56 '+' '+' '+' N
+ 207 '1' '1' '1' '1' fkey57 '1' '1' '1' N
+ 208 '2' '2' '2' '2' fkey58 '2' '2' '2' N
+ 209 '3' '3' '3' '3' fkey59 '3' '3' '3' N
+ 210 '0' '0' '0' '0' fkey60 '0' '0' '0' N
+ 211 '.' '.' '.' '.' del '.' boot boot N
+ 212 nop nop nop nop nop nop nop nop O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 scr11 scr11 fkey35 fkey47 fkey11 fkey23 scr11 scr11 O
+ 216 scr12 scr12 fkey36 fkey48 fkey12 fkey24 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nop nop debug debug nscr nscr nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 susp nop slock saver slock saver susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/icelandic.iso.acc.kbd b/share/syscons/keymaps/icelandic.iso.acc.kbd
new file mode 100644
index 0000000..3b930073
--- /dev/null
+++ b/share/syscons/keymaps/icelandic.iso.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul nop nop nul nul O
+ 004 '3' '#' nop nop nop nop nop nop O
+ 005 '4' '$' nop nop nop nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop nop nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 246 214 nop nop '\' nop fs nop C
+ 013 '-' '_' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 240 208 nop nop nop nop nop nop C
+ 027 ''' '?' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 223 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 230 198 nop nop '|' '\' nop nop C
+ 040 dacu dacu nop nop dtil nop nop nop C
+ 041 drin duml nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '+' '*' nop nop '`' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop nop nop nop O
+ 052 '.' ':' nop nop nop nop nop nop O
+ 053 254 222 us nop nop nop nop nop C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/icelandic.iso.kbd b/share/syscons/keymaps/icelandic.iso.kbd
new file mode 100644
index 0000000..4d4b150
--- /dev/null
+++ b/share/syscons/keymaps/icelandic.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul nop nop nul nul O
+ 004 '3' '#' nop nop 163 nop nop nop O
+ 005 '4' '$' nop nop 164 nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop nop nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 246 214 nop nop '\' nop fs nop O
+ 013 '-' '_' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 240 208 nop nop '}' ']' nop nop C
+ 027 ''' '?' nop nop '~' nop nop nop C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 223 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 230 198 nop nop '|' '\' nop nop C
+ 040 180 180 nop nop '~' '[' nop nop C
+ 041 176 168 nop nop '^' '*' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '+' '*' nop nop '`' '*' nop nop C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 254 222 us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/it.iso.kbd b/share/syscons/keymaps/it.iso.kbd
new file mode 100644
index 0000000..9097696
--- /dev/null
+++ b/share/syscons/keymaps/it.iso.kbd
@@ -0,0 +1,172 @@
+# $FreeBSD$
+#
+# Aggiunte ad una tastiera italiana standard :
+#
+# -- ~ : SHIFT + ALT + a accentata
+# -- { : SHIFT + [
+# : ALT + 7
+# -- } : SHIFT + ]
+# : ALT + 0
+# -- [ : definita anche come ALT + 8
+# -- ] : definita anche come ALT + 9
+# -- ` : ALT + '
+# : CTRL + '
+#
+# Per usare la mappatura dare i seguenti comandi:
+#
+# vidcontrol -f 8x16 iso15-8x16.fnt
+# kbdcontrol -l it.iso.kbd
+# setenv LANG it_IT.ISO8859-15
+# setenv MM_CHARSET iso-8859-15
+# setenv TERM cons25l1
+#
+# Per l'utilizzo della stessa in modo permanente e/o
+# per eventuali note su specifiche applicazioni:
+# Gruppo utenti FreeBSD Italia - http://www.gufi.org
+# Gianmarco Home Page - http://www.gufi.org/~gmarco
+#
+#
+# Credits to:
+#
+# Gianmarco Giovannelli <gmarco@giovannelli.it>
+# Nicola Vitale <nivit@libero.it>
+# Marco Trentini <m.trentini@remotelab.org>
+#
+####################################################################
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 185 161 nop nop O
+ 003 '2' '"' nul duml 178 nop nul nul O
+ 004 '3' 163 nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 188 '$' nop nop O
+ 006 '5' '%' nop nop 189 nop nop nop O
+ 007 '6' '&' rs rs 190 nop rs rs O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' 177 nop nop O
+ 011 '0' '=' nop nop '}' 176 nop nop O
+ 012 ''' '?' 96 dacu 96 191 us dgra O
+ 013 236 '^' nop dcir '~' dogo nop dtil O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb nop nop etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 167 174 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 nop nop dc4 dc4 C
+ 021 'y' 'Y' em em nop 165 em em C
+ 022 'u' 'U' nak nak nop nop nak nak C
+ 023 'i' 'I' ht ht nop nop ht ht C
+ 024 'o' 'O' si si 248 216 si si C
+ 025 'p' 'P' dle dle 254 222 dle dle C
+ 026 232 233 esc esc '[' '{' esc esc O
+ 027 '+' '*' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 230 198 soh soh C
+ 031 's' 'S' dc3 dc3 223 167 dc3 dc3 C
+ 032 'd' 'D' eot eot 240 208 eot eot C
+ 033 'f' 'F' ack ack nop 170 ack ack C
+ 034 'g' 'G' bel bel nop nop bel bel C
+ 035 'h' 'H' bs bs nop nop bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' '&' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 242 231 nop nop '@' ddac nop nop O
+ 040 224 176 nop drin '#' '~' nop dtil O
+ 041 '\' '|' fs nop 172 nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 249 167 fs dgra fs fs fs dbre O
+ 044 'z' 'Z' sub sub 171 60 sub sub C
+ 045 'x' 'X' can can 187 62 can can C
+ 046 'c' 'C' etx etx 162 169 etx etx C
+ 047 'v' 'V' syn syn nop 96 syn syn C
+ 048 'b' 'B' stx stx nop 39 stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 186 cr cr C
+ 051 ',' ';' nop nop 95 215 nop nop O
+ 052 '.' ':' nop nop 183 247 nop nop O
+ 053 '-' '_' nop nop ddot ddot nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop 124 166 nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot pdwn O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu ''' ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 175
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/iw.iso8.kbd b/share/syscons/keymaps/iw.iso8.kbd
new file mode 100644
index 0000000..1c047b8
--- /dev/null
+++ b/share/syscons/keymaps/iw.iso8.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '/' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb ''' 'W' etb etb C
+ 018 'e' 'E' enq enq 247 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 248 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 224 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 232 'Y' em em C
+ 022 'u' 'U' nak nak 229 'U' nak nak C
+ 023 'i' 'I' ht ht 239 'I' ht ht C
+ 024 'o' 'O' si si 237 'O' si si C
+ 025 'p' 'P' dle dle 244 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 249 'A' soh soh C
+ 031 's' 'S' dc3 dc3 227 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 226 'D' eot eot C
+ 033 'f' 'F' ack ack 235 'F' ack ack C
+ 034 'g' 'G' bel bel 242 'G' bel bel C
+ 035 'h' 'H' bs bs 233 'H' bs bs C
+ 036 'j' 'J' nl nl 231 'J' nl nl C
+ 037 'k' 'K' vt vt 236 'K' vt vt C
+ 038 'l' 'L' ff ff 234 'L' ff ff C
+ 039 ';' ':' nop nop 243 ':' nop nop O
+ 040 ''' '"' nop nop ',' '"' nop nop O
+ 041 '`' '~' nop nop ';' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 230 'Z' sub sub C
+ 045 'x' 'X' can can 241 'X' can can C
+ 046 'c' 'C' etx etx 225 'C' etx etx C
+ 047 'v' 'V' syn syn 228 'V' syn syn C
+ 048 'b' 'B' stx stx 240 'B' stx stx C
+ 049 'n' 'N' so so 238 'N' so so C
+ 050 'm' 'M' cr cr 246 'M' cr cr C
+ 051 ',' '<' nop nop 250 '<' nop nop O
+ 052 '.' '>' nop nop 245 '>' nop nop O
+ 053 '/' '?' nop nop '.' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/jp.106.kbd b/share/syscons/keymaps/jp.106.kbd
new file mode 100644
index 0000000..c12fbf5
--- /dev/null
+++ b/share/syscons/keymaps/jp.106.kbd
@@ -0,0 +1,118 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop '2' '"' nop nop O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' ''' nop nop '7' ''' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '~' nop nop '0' '~' nop nop O
+ 012 '-' '=' nop nop '-' '=' nop nop O
+ 013 '^' '~' rs rs '^' '~' rs rs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '@' '`' nul nul '@' '`' nul nul O
+ 027 '[' '{' esc esc '[' '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' '+' nop nop ';' '+' nop nop O
+ 040 ':' '*' nop nop ':' '*' nop nop O
+ 041 esc esc esc esc esc esc debug esc O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs ']' '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 115 '\' '_' fs us '\' '_' fs us O
+ 121 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 123 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 125 '\' '|' fs fs '\' '|' fs fs O
diff --git a/share/syscons/keymaps/jp.106x.kbd b/share/syscons/keymaps/jp.106x.kbd
new file mode 100644
index 0000000..cca3a9e
--- /dev/null
+++ b/share/syscons/keymaps/jp.106x.kbd
@@ -0,0 +1,120 @@
+# $FreeBSD$
+#
+# (this one has capslock and control swapped)
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nop nop '2' '"' nop nop O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' ''' nop nop '7' ''' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '~' nop nop '0' '~' nop nop O
+ 012 '-' '=' nop nop '-' '=' nop nop O
+ 013 '^' '~' rs rs '^' '~' rs rs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '@' '`' nul nul '@' '`' nul nul O
+ 027 '[' '{' esc esc '[' '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 clock clock clock clock clock clock clock clock O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' '+' nop nop ';' '+' nop nop O
+ 040 ':' '*' nop nop ':' '*' nop nop O
+ 041 esc esc esc esc esc esc debug esc O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ']' '}' gs gs ']' '}' gs gs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 115 '\' '_' fs us '\' '_' fs us O
+ 121 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 123 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 125 '\' '|' fs fs '\' '|' fs fs O
diff --git a/share/syscons/keymaps/jp.pc98.iso.kbd b/share/syscons/keymaps/jp.pc98.iso.kbd
new file mode 100644
index 0000000..43719f5
--- /dev/null
+++ b/share/syscons/keymaps/jp.pc98.iso.kbd
@@ -0,0 +1,134 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 esc esc esc esc esc esc debug esc O
+ 001 '1' '!' '!' '!' '1' '!' '!' '!' O
+ 002 '2' '@' sub sub '2' '"' nul nul O
+ 003 '3' '#' esc esc '3' '#' esc esc O
+ 004 '4' '$' fs fs '4' '$' fs fs O
+ 005 '5' '%' gs gs '5' '%' gs gs O
+ 006 '6' '^' rs rs '6' '&' rs rs O
+ 007 '7' '&' '&' '&' '7' ''' us us O
+ 008 '8' '*' bs bs '8' '(' del del O
+ 009 '9' '(' '(' '(' '9' ')' '9' '9' O
+ 010 '0' ')' ')' ')' '0' nop '0' '0' O
+ 011 '-' '_' us us '-' '=' '-' '-' O
+ 012 '=' '+' '+' '+' '^' '`' rs rs O
+ 013 '\' '|' fs fs '\' '|' fs fs O
+ 014 bs bs bs bs bs bs bs bs O
+ 015 ht btab ht btab ht btab ht btab O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '@' '~' nul nul O
+ 027 ']' '}' gs gs '[' '{' esc esc O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 'a' 'A' soh soh 'a' 'A' soh soh C
+ 030 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 031 'd' 'D' eot eot 'd' 'D' eot eot C
+ 032 'f' 'F' ack ack 'f' 'F' ack ack C
+ 033 'g' 'G' bel bel 'g' 'G' bel bel C
+ 034 'h' 'H' bs bs 'h' 'H' bs bs C
+ 035 'j' 'J' nl nl 'j' 'J' nl nl C
+ 036 'k' 'K' vt vt 'k' 'K' vt vt C
+ 037 'l' 'L' ff ff 'l' 'L' ff ff C
+ 038 ';' ':' ';' ';' ';' '+' ';' ';' O
+ 039 ''' '"' ''' ''' ':' '*' ':' ':' O
+ 040 '`' '~' '~' '~' ']' '}' gs gs O
+ 041 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 042 'x' 'X' can can 'x' 'X' can can C
+ 043 'c' 'C' etx etx 'c' 'C' etx etx C
+ 044 'v' 'V' syn syn 'v' 'V' syn syn C
+ 045 'b' 'B' stx stx 'b' 'B' stx stx C
+ 046 'n' 'N' so so 'n' 'N' so so C
+ 047 'm' 'M' cr cr 'm' 'M' cr cr C
+ 048 ',' '<' '<' '<' ',' '<' '<' '<' O
+ 049 '.' '>' '>' '>' '.' '>' '>' '>' O
+ 050 '/' '?' del del '/' '?' del del O
+ 051 '\' '|' fs fs nop '_' us us O
+ 052 ' ' ' ' nul nul ' ' ' ' nul nul O
+ 053 esc esc esc esc esc esc esc esc O
+ 054 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 055 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 056 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 057 del del del del del del boot boot N
+ 058 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 059 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 060 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 061 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 062 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 063 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 064 '-' '-' '-' '-' '-' '-' '-' '-' O
+ 065 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 066 '7' '7' '7' '7' '7' '7' '7' '7' O
+ 067 '8' '8' '8' '8' '8' '8' '8' '8' O
+ 068 '9' '9' '9' '9' '9' '9' '9' '9' O
+ 069 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 070 '4' '4' '4' '4' '4' '4' '4' '4' O
+ 071 '5' '5' '5' '5' '5' '5' '5' '5' O
+ 072 '6' '6' '6' '6' '6' '6' '6' '6' O
+ 073 '+' '+' '+' '+' '+' '+' '+' '+' O
+ 074 '1' '1' '1' '1' '1' '1' '1' '1' O
+ 075 '2' '2' '2' '2' '2' '2' '2' '2' O
+ 076 '3' '3' '3' '3' '3' '3' '3' '3' O
+ 077 '=' '=' '=' '=' '=' '=' '=' '=' O
+ 078 '0' '0' '0' '0' '0' '0' '0' '0' O
+ 079 ',' ',' ',' ',' ',' ',' ',' ',' O
+ 080 '.' '.' '.' '.' '.' '.' '.' '.' O
+ 081 meta meta meta meta meta meta meta meta O
+ 082 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 083 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 084 slock slock slock slock slock slock slock slock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 nop nop nop nop nop nop nop nop O
+ 088 nop nop nop nop nop nop nop nop O
+ 089 nop nop nop nop nop nop nop nop O
+ 090 nop nop nop nop nop nop nop nop O
+ 091 nop nop nop nop nop nop nop nop O
+ 092 nop nop nop nop nop nop nop nop O
+ 093 nop nop nop nop nop nop nop nop O
+ 094 nop nop nop nop nop nop nop nop O
+ 095 nop nop nop nop nop nop nop nop O
+ 096 slock saver slock saver susp nop susp nop O
+ 097 nscr nscr debug debug nop nop nop nop O
+ 098 fkey01 fkey13 fkey25 fkey37 scr01 scr01 scr01 scr01 O
+ 099 fkey02 fkey14 fkey26 fkey38 scr02 scr02 scr02 scr02 O
+ 100 fkey03 fkey15 fkey27 fkey39 scr03 scr03 scr03 scr03 O
+ 101 fkey04 fkey16 fkey28 fkey40 scr04 scr04 scr04 scr04 O
+ 102 fkey05 fkey17 fkey29 fkey41 scr05 scr05 scr05 scr05 O
+ 103 fkey06 fkey18 fkey30 fkey42 scr06 scr06 scr06 scr06 O
+ 104 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 105 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 106 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 107 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 113 clock clock clock clock clock clock clock clock O
+ 114 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 115 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 116 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+
diff --git a/share/syscons/keymaps/jp.pc98.kbd b/share/syscons/keymaps/jp.pc98.kbd
new file mode 100644
index 0000000..d9a5d44
--- /dev/null
+++ b/share/syscons/keymaps/jp.pc98.kbd
@@ -0,0 +1,134 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 esc esc esc esc esc esc debug esc O
+ 001 '1' '!' '!' '!' '1' '!' '!' '!' O
+ 002 '2' '"' sub sub '2' '@' nul nul O
+ 003 '3' '#' esc esc '3' '#' esc esc O
+ 004 '4' '$' fs fs '4' '$' fs fs O
+ 005 '5' '%' gs gs '5' '%' gs gs O
+ 006 '6' '&' rs rs '6' '^' rs rs O
+ 007 '7' ''' us us '7' '&' '&' '&' O
+ 008 '8' '(' del del '8' '*' bs bs O
+ 009 '9' ')' '9' '9' '9' '(' '(' '(' O
+ 010 '0' nop '0' '0' '0' ')' ')' ')' O
+ 011 '-' '=' '-' '-' '-' '_' us us O
+ 012 '^' '`' rs rs '=' '+' '+' '+' O
+ 013 '\' '|' fs fs '\' '|' fs fs O
+ 014 bs bs bs bs bs bs bs bs O
+ 015 ht btab ht btab ht btab ht btab O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '@' '~' nul nul '[' '{' esc esc O
+ 027 '[' '{' esc esc ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 'a' 'A' soh soh 'a' 'A' soh soh C
+ 030 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 031 'd' 'D' eot eot 'd' 'D' eot eot C
+ 032 'f' 'F' ack ack 'f' 'F' ack ack C
+ 033 'g' 'G' bel bel 'g' 'G' bel bel C
+ 034 'h' 'H' bs bs 'h' 'H' bs bs C
+ 035 'j' 'J' nl nl 'j' 'J' nl nl C
+ 036 'k' 'K' vt vt 'k' 'K' vt vt C
+ 037 'l' 'L' ff ff 'l' 'L' ff ff C
+ 038 ';' '+' ';' ';' ';' ':' ';' ';' O
+ 039 ':' '*' ':' ':' ''' '"' ''' ''' O
+ 040 ']' '}' gs gs '`' '~' '~' '~' O
+ 041 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 042 'x' 'X' can can 'x' 'X' can can C
+ 043 'c' 'C' etx etx 'c' 'C' etx etx C
+ 044 'v' 'V' syn syn 'v' 'V' syn syn C
+ 045 'b' 'B' stx stx 'b' 'B' stx stx C
+ 046 'n' 'N' so so 'n' 'N' so so C
+ 047 'm' 'M' cr cr 'm' 'M' cr cr C
+ 048 ',' '<' '<' '<' ',' '<' '<' '<' O
+ 049 '.' '>' '>' '>' '.' '>' '>' '>' O
+ 050 '/' '?' del del '/' '?' del del O
+ 051 nop '_' us us '\' '|' fs fs O
+ 052 ' ' ' ' nul nul ' ' ' ' nul nul O
+ 053 esc esc esc esc esc esc esc esc O
+ 054 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 055 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 056 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 057 del del del del del del boot boot N
+ 058 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 059 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 060 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 061 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 062 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 063 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 064 '-' '-' '-' '-' '-' '-' '-' '-' O
+ 065 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 066 '7' '7' '7' '7' '7' '7' '7' '7' O
+ 067 '8' '8' '8' '8' '8' '8' '8' '8' O
+ 068 '9' '9' '9' '9' '9' '9' '9' '9' O
+ 069 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 070 '4' '4' '4' '4' '4' '4' '4' '4' O
+ 071 '5' '5' '5' '5' '5' '5' '5' '5' O
+ 072 '6' '6' '6' '6' '6' '6' '6' '6' O
+ 073 '+' '+' '+' '+' '+' '+' '+' '+' O
+ 074 '1' '1' '1' '1' '1' '1' '1' '1' O
+ 075 '2' '2' '2' '2' '2' '2' '2' '2' O
+ 076 '3' '3' '3' '3' '3' '3' '3' '3' O
+ 077 '=' '=' '=' '=' '=' '=' '=' '=' O
+ 078 '0' '0' '0' '0' '0' '0' '0' '0' O
+ 079 ',' ',' ',' ',' ',' ',' ',' ',' O
+ 080 '.' '.' '.' '.' '.' '.' '.' '.' O
+ 081 meta meta meta meta meta meta meta meta O
+ 082 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 083 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 084 slock slock slock slock slock slock slock slock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 nop nop nop nop nop nop nop nop O
+ 088 nop nop nop nop nop nop nop nop O
+ 089 nop nop nop nop nop nop nop nop O
+ 090 nop nop nop nop nop nop nop nop O
+ 091 nop nop nop nop nop nop nop nop O
+ 092 nop nop nop nop nop nop nop nop O
+ 093 nop nop nop nop nop nop nop nop O
+ 094 nop nop nop nop nop nop nop nop O
+ 095 nop nop nop nop nop nop nop nop O
+ 096 slock saver slock saver susp nop susp nop O
+ 097 nscr nscr debug debug nop nop nop nop O
+ 098 fkey01 fkey13 fkey25 fkey37 scr01 scr01 scr01 scr01 O
+ 099 fkey02 fkey14 fkey26 fkey38 scr02 scr02 scr02 scr02 O
+ 100 fkey03 fkey15 fkey27 fkey39 scr03 scr03 scr03 scr03 O
+ 101 fkey04 fkey16 fkey28 fkey40 scr04 scr04 scr04 scr04 O
+ 102 fkey05 fkey17 fkey29 fkey41 scr05 scr05 scr05 scr05 O
+ 103 fkey06 fkey18 fkey30 fkey42 scr06 scr06 scr06 scr06 O
+ 104 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 105 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 106 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 107 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 113 clock clock clock clock clock clock clock clock O
+ 114 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 115 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 116 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+
diff --git a/share/syscons/keymaps/kk.pt154.io.kbd b/share/syscons/keymaps/kk.pt154.io.kbd
new file mode 100644
index 0000000..1f1727a
--- /dev/null
+++ b/share/syscons/keymaps/kk.pt154.io.kbd
@@ -0,0 +1,244 @@
+# $FreeBSD$
+# KST KazSSR 903-90 with CYRILLIC LETTER IO
+# Birsh T <birsh@mail.kz>, 2003-12-02
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 155 155 debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' us us 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 bs bs del del 136 136 255 255 O
+ 015 ht btab nop nop 137 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 160 160 susp 160 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey54 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 del '.' '.' '.' 174 174 boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 155 155 debug nop O
+ 130 '"' '!' nop nop 177 161 nop nop O
+ 131 186 170 nul nul 178 192 128 128 C
+ 132 179 178 nop nop 179 163 nop nop C
+ 133 156 140 nop nop 180 164 nop nop C
+ 134 131 129 nop nop 181 165 nop nop C
+ 135 ',' ';' rs rs 182 222 158 158 O
+ 136 '.' ':' nop nop 183 166 nop nop O
+ 137 137 135 nop nop 184 170 nop nop C
+ 138 177 166 nop nop 185 168 nop nop C
+ 139 157 141 nop nop 176 169 nop nop C
+ 140 181 164 us us 173 223 159 159 C
+ 141 158 142 nop nop 189 171 nop nop C
+ 142 bs bs del del 136 136 255 255 O
+ 143 ht btab nop nop 137 btab nop nop O
+ 144 233 201 dc1 dc1 241 209 145 145 C
+ 145 246 214 etb etb 247 215 151 151 C
+ 146 243 211 enq enq 229 197 133 133 C
+ 147 234 202 dc2 dc2 242 210 146 146 C
+ 148 229 197 dc4 dc4 244 212 148 148 C
+ 149 237 205 em em 249 217 153 153 C
+ 150 227 195 nak nak 245 213 149 149 C
+ 151 248 216 ht ht 233 201 137 137 C
+ 152 249 217 si si 239 207 143 143 C
+ 153 231 199 dle dle 240 208 144 144 C
+ 154 245 213 esc esc 219 251 155 155 C
+ 155 250 218 gs gs 221 253 157 157 C
+ 156 cr cr nl nl 141 141 138 138 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 244 212 soh soh 225 193 129 129 C
+ 159 251 219 dc3 dc3 243 211 147 147 C
+ 160 226 194 eot eot 228 196 132 132 C
+ 161 224 192 ack ack 230 198 134 134 C
+ 162 239 207 bel bel 231 199 135 135 C
+ 163 240 208 bs bs 232 200 136 136 C
+ 164 238 206 nl nl 234 202 138 138 C
+ 165 235 203 vt vt 235 203 139 139 C
+ 166 228 196 ff ff 236 204 140 140 C
+ 167 230 198 nop nop 187 186 nop nop C
+ 168 253 221 nop nop 167 162 nop nop C
+ 169 '(' ')' nop nop 224 254 nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 184 168 fs fs 220 252 156 156 C
+ 172 255 223 sub sub 250 218 154 154 C
+ 173 247 215 can can 248 216 152 152 C
+ 174 241 209 etx etx 227 195 131 131 C
+ 175 236 204 syn syn 246 214 150 150 C
+ 176 232 200 stx stx 226 194 130 130 C
+ 177 242 210 so so 238 206 142 142 C
+ 178 252 220 cr cr 237 205 141 141 C
+ 179 225 193 nop nop 172 188 nop nop C
+ 180 254 222 nop nop 174 190 nop nop C
+ 181 185 '?' nop nop 175 191 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 170 170 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 160 160 160 160 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey54 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 del '.' '.' '.' 174 174 boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/kk.pt154.kst.kbd b/share/syscons/keymaps/kk.pt154.kst.kbd
new file mode 100644
index 0000000..6bc6ca0
--- /dev/null
+++ b/share/syscons/keymaps/kk.pt154.kst.kbd
@@ -0,0 +1,244 @@
+# $FreeBSD$
+# KST KazSSR 903-90 keyboard implementation
+# Birsh T <birsh@mail.kz>, 2003-12-02
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 155 155 debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' us us 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 bs bs del del 136 136 255 255 O
+ 015 ht btab nop nop 137 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 160 160 susp 160 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey54 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 del '.' '.' '.' 174 174 boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr nscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 155 155 debug nop O
+ 130 '"' '!' nop nop 177 161 nop nop O
+ 131 186 170 nul nul 178 192 128 128 C
+ 132 179 178 nop nop 179 163 nop nop C
+ 133 156 140 nop nop 180 164 nop nop C
+ 134 131 129 nop nop 181 165 nop nop C
+ 135 ',' ';' rs rs 182 222 158 158 O
+ 136 '.' ':' nop nop 183 166 nop nop O
+ 137 137 135 nop nop 184 170 nop nop C
+ 138 177 166 nop nop 185 168 nop nop C
+ 139 157 141 nop nop 176 169 nop nop C
+ 140 181 164 us us 173 223 159 159 C
+ 141 158 142 nop nop 189 171 nop nop C
+ 142 bs bs del del 136 136 255 255 O
+ 143 ht btab nop nop 137 btab nop nop O
+ 144 233 201 dc1 dc1 241 209 145 145 C
+ 145 246 214 etb etb 247 215 151 151 C
+ 146 243 211 enq enq 229 197 133 133 C
+ 147 234 202 dc2 dc2 242 210 146 146 C
+ 148 229 197 dc4 dc4 244 212 148 148 C
+ 149 237 205 em em 249 217 153 153 C
+ 150 227 195 nak nak 245 213 149 149 C
+ 151 248 216 ht ht 233 201 137 137 C
+ 152 249 217 si si 239 207 143 143 C
+ 153 231 199 dle dle 240 208 144 144 C
+ 154 245 213 esc esc 219 251 155 155 C
+ 155 250 218 gs gs 221 253 157 157 C
+ 156 cr cr nl nl 141 141 138 138 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 244 212 soh soh 225 193 129 129 C
+ 159 251 219 dc3 dc3 243 211 147 147 C
+ 160 226 194 eot eot 228 196 132 132 C
+ 161 224 192 ack ack 230 198 134 134 C
+ 162 239 207 bel bel 231 199 135 135 C
+ 163 240 208 bs bs 232 200 136 136 C
+ 164 238 206 nl nl 234 202 138 138 C
+ 165 235 203 vt vt 235 203 139 139 C
+ 166 228 196 ff ff 236 204 140 140 C
+ 167 230 198 nop nop 187 186 nop nop C
+ 168 253 221 nop nop 167 162 nop nop C
+ 169 '(' ')' nop nop 224 254 nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 220 252 156 156 O
+ 172 255 223 sub sub 250 218 154 154 C
+ 173 247 215 can can 248 216 152 152 C
+ 174 241 209 etx etx 227 195 131 131 C
+ 175 236 204 syn syn 246 214 150 150 C
+ 176 232 200 stx stx 226 194 130 130 C
+ 177 242 210 so so 238 206 142 142 C
+ 178 252 220 cr cr 237 205 141 141 C
+ 179 225 193 nop nop 172 188 nop nop C
+ 180 254 222 nop nop 174 190 nop nop C
+ 181 185 '?' nop nop 175 191 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 170 170 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 160 160 160 160 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey54 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 del '.' '.' '.' 174 174 boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr nscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/latinamerican.iso.acc.kbd b/share/syscons/keymaps/latinamerican.iso.acc.kbd
new file mode 100644
index 0000000..aa4f16c
--- /dev/null
+++ b/share/syscons/keymaps/latinamerican.iso.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop '\' '\' nop nop O
+ 013 191 161 nop nop 191 161 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' sub sub C
+ 022 'u' 'U' nak nak 151 129 nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dacu duml esc esc ''' 168 esc esc O
+ 027 '+' '*' gs gs '~' '~' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 241 209 nop nop 241 209 nop nop C
+ 040 '{' '[' nop nop dcir '^' nop nop O
+ 041 '|' 186 fs fs 172 172 fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '}' ']' fs fs dgra '`' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/latinamerican.kbd b/share/syscons/keymaps/latinamerican.kbd
new file mode 100644
index 0000000..0663b69
--- /dev/null
+++ b/share/syscons/keymaps/latinamerican.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '&' rs rs O
+ 008 '7' '/' esc esc '7' '/' esc esc O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' gs gs '8' '(' gs gs O
+ 011 '0' '=' nop nop '9' ')' nop nop O
+ 012 ''' '?' nop nop '\' '\' nop nop O
+ 013 168 173 nop nop 168 173 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' '@' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' sub sub C
+ 022 'u' 'U' nak nak 151 129 nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 ''' '|' esc esc ''' '|' esc esc C
+ 027 '+' '*' gs gs '~' '~' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 164 165 nop nop 164 165 nop nop C
+ 040 '{' '[' nop nop '^' '^' nop nop O
+ 041 '|' 248 fs fs 191 191 fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '}' ']' fs fs '`' '`' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs '\' '>' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 scr03 scr03 scr03 scr03 scr03 scr03 scr03 scr03 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/lt.iso4.kbd b/share/syscons/keymaps/lt.iso4.kbd
new file mode 100644
index 0000000..dbc6c36
--- /dev/null
+++ b/share/syscons/keymaps/lt.iso4.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 232 200 nul nul O
+ 004 '3' '#' nop nop 234 202 nop nop O
+ 005 '4' '$' nop nop 236 204 nop nop O
+ 006 '5' '%' nop nop 231 199 nop nop O
+ 007 '6' '^' rs rs 185 169 rs rs O
+ 008 '7' '&' nop nop 249 217 nop nop O
+ 009 '8' '*' nop nop 254 217 nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop 190 174 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr alock nl nl alock cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' ',' ',' del ',' boot boot N
+ 084 ns ns ns ns ns ns ns ns O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop esc esc debug nop O
+ 130 177 161 nop nop '1' '!' nop nop C
+ 131 232 200 nul nul '2' '@' nul nul C
+ 132 234 202 nop nop '3' '#' nop nop C
+ 133 236 204 nop nop '4' '$' nop nop C
+ 134 231 199 nop nop '5' '%' nop nop C
+ 135 185 169 rs rs '6' '^' rs rs C
+ 136 249 217 nop nop '7' '&' nop nop C
+ 137 254 222 nop nop '8' '*' nop nop C
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 190 174 nop nop '=' '+' nop nop C
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 'w' 'W' etb etb 'w' 'W' etb etb C
+ 146 'e' 'E' enq enq 'e' 'E' enq enq C
+ 147 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 149 'y' 'Y' em em 'y' 'Y' em em C
+ 150 'u' 'U' nak nak 'u' 'U' nak nak C
+ 151 'i' 'I' ht ht 'i' 'I' ht ht C
+ 152 'o' 'O' si si 'o' 'O' si si C
+ 153 'p' 'P' dle dle 'p' 'P' dle dle C
+ 154 '[' '{' esc esc '[' '{' esc esc O
+ 155 ']' '}' gs gs ']' '}' gs gs O
+ 156 cr alock nl nl alock cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 'a' 'A' soh soh 'a' 'A' soh soh C
+ 159 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 160 'd' 'D' eot eot 'd' 'D' eot eot C
+ 161 'f' 'F' ack ack 'f' 'F' ack ack C
+ 162 'g' 'G' bel bel 'g' 'G' bel bel C
+ 163 'h' 'H' bs bs 'h' 'H' bs bs C
+ 164 'j' 'J' nl nl 'j' 'J' nl nl C
+ 165 'k' 'K' vt vt 'k' 'K' vt vt C
+ 166 'l' 'L' ff ff 'l' 'L' ff ff C
+ 167 ';' ':' nop nop ';' ':' nop nop O
+ 168 ''' '"' nop nop ''' '"' nop nop O
+ 169 '`' '~' nop nop '`' '~' nop nop O
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 173 'x' 'X' can can 'x' 'X' can can C
+ 174 'c' 'C' etx etx 'c' 'C' etx etx C
+ 175 'v' 'V' syn syn 'v' 'V' syn syn C
+ 176 'b' 'B' stx stx 'b' 'B' stx stx C
+ 177 'n' 'N' so so 'n' 'N' so so C
+ 178 'm' 'M' cr cr 'm' 'M' cr cr C
+ 179 ',' '<' nop nop ',' '<' nop nop O
+ 180 '.' '>' nop nop '.' '>' nop nop O
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nscr nscr '*' '*' nscr nscr O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del ',' '.' '.' del '.' boot boot N
+ 212 ns ns ns ns ns ns ns ns O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock slock slock slock slock slock slock slock O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+
diff --git a/share/syscons/keymaps/norwegian.dvorak.kbd b/share/syscons/keymaps/norwegian.dvorak.kbd
new file mode 100644
index 0000000..83e8d46
--- /dev/null
+++ b/share/syscons/keymaps/norwegian.dvorak.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 158 '#' nop nop O
+ 005 '4' 164 nop nop '$' 164 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' nop nop '[' '(' esc esc O
+ 010 '9' ')' nop nop ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' esc esc '[' '?' nop nop O
+ 013 '\' '`' nop nop ''' nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 229 197 nop nop '}' ']' nop nop C
+ 017 ',' ';' nop nop ',' '<' nop nop O
+ 018 '.' ':' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 ''' '*' nop nop ''' 215 nop nop O
+ 027 168 '^' rs rs '¬' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '|' 167 nop nop 166 182 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '<' '>' nop nop '|' '\' nop nop C
+ 044 230 198 nop nop '{' '[' nop nop C
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 248 216 nop nop '|' '\' nop nop C
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/norwegian.iso.kbd b/share/syscons/keymaps/norwegian.iso.kbd
new file mode 100644
index 0000000..bf112e5
--- /dev/null
+++ b/share/syscons/keymaps/norwegian.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 158 '#' nop nop O
+ 005 '4' 164 nop nop '$' 164 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '/' nop nop O
+ 009 '8' '(' esc esc '[' '(' esc esc O
+ 010 '9' ')' gs gs ']' ')' gs gs O
+ 011 '0' '=' nop nop '}' '=' nop nop O
+ 012 '+' '?' nop nop '+' '?' nop nop O
+ 013 '\' '`' fs fs ''' nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 233 201 enq enq C
+ 019 'r' 'R' dc2 dc2 174 174 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 254 222 dc4 dc4 C
+ 021 'y' 'Y' em em 255 165 em em C
+ 022 'u' 'U' nak nak 252 220 nak nak C
+ 023 'i' 'I' ht ht 239 207 ht ht C
+ 024 'o' 'O' si si 242 210 si si C
+ 025 'p' 'P' dle dle 182 182 dle dle C
+ 026 229 197 nop nop '}' ']' nop nop C
+ 027 168 '^' rs rs '~' '^' rs rs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 223 223 dc3 dc3 C
+ 032 'd' 'D' eot eot 240 208 eot eot C
+ 033 'f' 'F' ack ack 170 170 ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 248 216 nop nop '|' '\' nop nop C
+ 040 230 198 nop nop '{' '[' nop nop C
+ 041 '|' 167 nop nop 166 182 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' 215 nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 215 215 can can C
+ 046 'c' 'C' etx etx 231 199 etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 241 209 so so C
+ 050 'm' 'M' cr cr 181 186 cr cr C
+ 051 ',' ';' nop nop 184 171 nop nop O
+ 052 '.' ':' nop nop 183 187 nop nop O
+ 053 '-' '_' us us 173 173 us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' fs fs 171 187 fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/pl_PL.ISO8859-2.kbd b/share/syscons/keymaps/pl_PL.ISO8859-2.kbd
new file mode 100644
index 0000000..ee7adaa
--- /dev/null
+++ b/share/syscons/keymaps/pl_PL.ISO8859-2.kbd
@@ -0,0 +1,116 @@
+# Polish ISO-8859-2 keymap by Krzysztof Mlynarski (17:46 27-04-1996 MET DST)
+# (krzysio@hydra.mimuw.edu.pl)
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 234 202 enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 243 211 si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 177 161 soh soh C
+ 031 's' 'S' dc3 dc3 182 166 dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 179 163 ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 191 175 sub sub C
+ 045 'x' 'X' can can 188 172 can can C
+ 046 'c' 'C' etx etx 230 198 etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 241 209 so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/pt.iso.acc.kbd b/share/syscons/keymaps/pt.iso.acc.kbd
new file mode 100644
index 0000000..8d77f0b
--- /dev/null
+++ b/share/syscons/keymaps/pt.iso.acc.kbd
@@ -0,0 +1,141 @@
+#pt.iso.acc.kbd
+#by: pm@dee.uc.pt
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '^' rs rs O
+ 008 '7' '/' nop nop '{' '&' nop nop O
+ 009 '8' '(' nop nop '[' '*' nop nop O
+ 010 '9' ')' nop nop ']' '(' nop nop O
+ 011 '0' '=' nop nop '}' ')' nop nop O
+ 012 ''' '?' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '+' '*' esc esc duml '{' esc esc O
+ 027 dacu dgra gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 231 199 nop nop ';' ':' nop nop O
+ 040 nop nop nop nop ''' '"' nop nop O
+ 041 '\' '|' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 dtil dcir fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop nop nop nop C
+ 052 '.' ':' nop nop '.' '>' nop nop O
+ 053 '-' '_' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' 130 ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/pt.iso.kbd b/share/syscons/keymaps/pt.iso.kbd
new file mode 100644
index 0000000..fda5333
--- /dev/null
+++ b/share/syscons/keymaps/pt.iso.kbd
@@ -0,0 +1,116 @@
+#pt.iso.kbd
+#by: pm@dee.uc.pt
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' rs rs '6' '^' rs rs O
+ 008 '7' '/' nop nop '{' '&' nop nop O
+ 009 '8' '(' nop nop '[' '*' nop nop O
+ 010 '9' ')' nop nop ']' '(' nop nop O
+ 011 '0' '=' nop nop '}' ')' nop nop O
+ 012 ''' '?' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '+' '*' esc esc 'h' '{' esc esc O
+ 027 ''' '`' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 231 199 nop nop ';' ':' nop nop O
+ 040 nop nop nop nop ''' '"' nop nop O
+ 041 '\' '|' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '~' '^' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop nop nop nop C
+ 052 '.' ':' nop nop '.' '>' nop nop O
+ 053 '-' '_' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' 130 ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr cr cr cr cr cr cr O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/ru.cp866.kbd b/share/syscons/keymaps/ru.cp866.kbd
new file mode 100644
index 0000000..84fbb68
--- /dev/null
+++ b/share/syscons/keymaps/ru.cp866.kbd
@@ -0,0 +1,243 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 155 155 debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' us us 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 bs bs del del 136 136 255 255 O
+ 015 ht btab nop nop 137 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 160 160 susp 160 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey54 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 del '.' del del 174 174 boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 del del del del del del boot boot O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 155 155 debug nop O
+ 130 '1' '!' nop nop 177 161 nop nop O
+ 131 '2' '"' nul nul 178 192 128 128 O
+ 132 '3' ':' nop nop 179 163 nop nop O
+ 133 '4' ';' nop nop 180 164 nop nop O
+ 134 '5' '%' nop nop 181 165 nop nop O
+ 135 '6' ',' rs rs 182 222 158 158 O
+ 136 '7' '.' nop nop 183 166 nop nop O
+ 137 '8' '*' nop nop 184 170 nop nop O
+ 138 '9' '(' nop nop 185 168 nop nop O
+ 139 '0' ')' nop nop 176 169 nop nop O
+ 140 '-' '_' us us 173 223 159 159 O
+ 141 '=' '+' nop nop 189 171 nop nop O
+ 142 bs bs del del 136 136 255 255 O
+ 143 ht btab nop nop 137 btab nop nop O
+ 144 169 137 dc1 dc1 241 209 145 145 C
+ 145 230 150 etb etb 247 215 151 151 C
+ 146 227 147 enq enq 229 197 133 133 C
+ 147 170 138 dc2 dc2 242 210 146 146 C
+ 148 165 133 dc4 dc4 244 212 148 148 C
+ 149 173 141 em em 249 217 153 153 C
+ 150 163 131 nak nak 245 213 149 149 C
+ 151 232 152 ht ht 233 201 137 137 C
+ 152 233 153 si si 239 207 143 143 C
+ 153 167 135 dle dle 240 208 144 144 C
+ 154 229 149 esc esc 219 251 155 155 C
+ 155 234 154 gs gs 221 253 157 157 C
+ 156 cr cr nl nl 141 141 138 138 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 228 148 soh soh 225 193 129 129 C
+ 159 235 155 dc3 dc3 243 211 147 147 C
+ 160 162 130 eot eot 228 196 132 132 C
+ 161 160 128 ack ack 230 198 134 134 C
+ 162 175 143 bel bel 231 199 135 135 C
+ 163 224 144 bs bs 232 200 136 136 C
+ 164 174 142 nl nl 234 202 138 138 C
+ 165 171 139 vt vt 235 203 139 139 C
+ 166 164 132 ff ff 236 204 140 140 C
+ 167 166 134 nop nop 187 186 nop nop C
+ 168 237 157 nop nop 167 162 nop nop C
+ 169 '.' '>' nop nop 224 254 nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 220 252 156 156 O
+ 172 239 159 sub sub 250 218 154 154 C
+ 173 231 151 can can 248 216 152 152 C
+ 174 225 145 etx etx 227 195 131 131 C
+ 175 172 140 syn syn 246 214 150 150 C
+ 176 168 136 stx stx 226 194 130 130 C
+ 177 226 146 so so 238 206 142 142 C
+ 178 236 156 cr cr 237 205 141 141 C
+ 179 161 129 nop nop 172 188 nop nop C
+ 180 238 158 nop nop 174 190 nop nop C
+ 181 '/' '?' nop nop 175 191 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 170 170 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' ' ' ' ' 160 160 160 160 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey54 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 del '.' del del 174 174 boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 del del del del 255 255 boot boot O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/ru.iso5.kbd b/share/syscons/keymaps/ru.iso5.kbd
new file mode 100644
index 0000000..fec878f
--- /dev/null
+++ b/share/syscons/keymaps/ru.iso5.kbd
@@ -0,0 +1,243 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '/' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' ':' nop nop O
+ 007 '6' '^' rs rs '6' ',' rs rs O
+ 008 '7' '&' nop nop '7' '.' nop nop O
+ 009 '8' '*' nop nop '8' ';' nop nop O
+ 010 '9' '(' nop nop '9' '?' nop nop O
+ 011 '0' ')' nop nop '0' '%' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop btab btab nop nop O
+ 016 'q' 'Q' dc1 dc1 217 185 dc1 dc1 C
+ 017 'w' 'W' etb etb 230 198 etb etb C
+ 018 'e' 'E' enq enq 227 195 enq enq C
+ 019 'r' 'R' dc2 dc2 218 186 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 213 181 dc4 dc4 C
+ 021 'y' 'Y' em em 221 189 em em C
+ 022 'u' 'U' nak nak 211 179 nak nak C
+ 023 'i' 'I' ht ht 232 200 ht ht C
+ 024 'o' 'O' si si 233 201 si si C
+ 025 'p' 'P' dle dle 215 183 dle dle C
+ 026 '[' '{' esc esc 229 197 esc esc O
+ 027 ']' '}' gs gs 234 202 gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 228 196 soh soh C
+ 031 's' 'S' dc3 dc3 235 203 dc3 dc3 C
+ 032 'd' 'D' eot eot 210 178 eot eot C
+ 033 'f' 'F' ack ack 208 176 ack ack C
+ 034 'g' 'G' bel bel 223 191 bel bel C
+ 035 'h' 'H' bs bs 224 192 bs bs C
+ 036 'j' 'J' nl nl 222 190 nl nl C
+ 037 'k' 'K' vt vt 219 187 vt vt C
+ 038 'l' 'L' ff ff 212 180 ff ff C
+ 039 ';' ':' nop nop 214 182 nop nop O
+ 040 ''' '"' nop nop 237 205 nop nop O
+ 041 '`' '~' nop nop 241 161 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 239 207 sub sub C
+ 045 'x' 'X' can can 231 199 can can C
+ 046 'c' 'C' etx etx 225 193 etx etx C
+ 047 'v' 'V' syn syn 220 188 syn syn C
+ 048 'b' 'B' stx stx 216 184 stx stx C
+ 049 'n' 'N' so so 226 194 so so C
+ 050 'm' 'M' cr cr 236 204 cr cr C
+ 051 ',' '<' nop nop 209 177 nop nop O
+ 052 '.' '>' nop nop 238 206 nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl '*' '*' nl nl O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 fkey90 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 fkey91 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 fkey92 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug nop nop nop nop nop O
+# 093 meta meta meta meta meta meta meta meta O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 del del fkey81 del fkey61 fkey61 boot boot O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' nul nul O
+ 132 '3' '/' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' ':' nop nop '5' '%' nop nop O
+ 135 '6' ',' rs rs '6' '^' rs rs O
+ 136 '7' '.' nop nop '7' '&' nop nop O
+ 137 '8' ';' nop nop '8' '*' nop nop O
+ 138 '9' '?' nop nop '9' '(' nop nop O
+ 139 '0' '%' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop btab btab nop nop O
+ 144 217 185 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 230 198 etb etb 'w' 'W' etb etb C
+ 146 227 195 enq enq 'e' 'E' enq enq C
+ 147 218 186 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 213 181 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 221 189 em em 'y' 'Y' em em C
+ 150 211 179 nak nak 'u' 'U' nak nak C
+ 151 232 200 ht ht 'i' 'I' ht ht C
+ 152 233 201 si si 'o' 'O' si si C
+ 153 215 183 dle dle 'p' 'P' dle dle C
+ 154 229 197 esc esc '[' '{' esc esc C
+ 155 234 202 gs gs ']' '}' gs gs C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 228 196 soh soh 'a' 'A' soh soh C
+ 159 235 203 dc3 dc3 's' 'S' dc3 dc3 C
+ 160 210 178 eot eot 'd' 'D' eot eot C
+ 161 208 176 ack ack 'f' 'F' ack ack C
+ 162 223 191 bel bel 'g' 'G' bel bel C
+ 163 224 192 bs bs 'h' 'H' bs bs C
+ 164 222 190 nl nl 'j' 'J' nl nl C
+ 165 219 187 vt vt 'k' 'K' vt vt C
+ 166 212 180 ff ff 'l' 'L' ff ff C
+ 167 214 182 nop nop ';' ':' nop nop C
+ 168 237 205 nop nop ''' '"' nop nop C
+ 169 241 161 nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 239 207 sub sub 'z' 'Z' sub sub C
+ 173 231 199 can can 'x' 'X' can can C
+ 174 225 193 etx etx 'c' 'C' etx etx C
+ 175 220 188 syn syn 'v' 'V' syn syn C
+ 176 216 184 stx stx 'b' 'B' stx stx C
+ 177 226 194 so so 'n' 'N' so so C
+ 178 236 204 cr cr 'm' 'M' cr cr C
+ 179 209 177 nop nop ',' '<' nop nop C
+ 180 238 206 nop nop '.' '>' nop nop C
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl '*' '*' nl nl O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' ' ' susp O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 fkey90 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 fkey91 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 fkey92 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 del del fkey81 del fkey61 fkey61 boot boot O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
diff --git a/share/syscons/keymaps/ru.koi8-r.kbd b/share/syscons/keymaps/ru.koi8-r.kbd
new file mode 100644
index 0000000..3f15711
--- /dev/null
+++ b/share/syscons/keymaps/ru.koi8-r.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 155 155 debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' us us 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 bs bs del del 136 136 255 255 O
+ 015 ht btab nop nop 137 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 160 160 susp 160 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey54 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 del '.' '.' '.' 174 174 boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 155 155 debug nop O
+ 130 '!' '1' nop nop 177 161 nop nop O
+ 131 '"' '2' nul nul 178 192 128 128 O
+ 132 ''' '3' nop nop 179 163 nop nop O
+ 133 '*' '4' nop nop 180 164 nop nop O
+ 134 ':' '5' nop nop 181 165 nop nop O
+ 135 ',' '6' rs rs 182 222 158 158 O
+ 136 '.' '7' nop nop 183 166 nop nop O
+ 137 ';' '8' nop nop 184 170 nop nop O
+ 138 '(' '9' nop nop 185 168 nop nop O
+ 139 ')' '0' nop nop 176 169 nop nop O
+ 140 '-' '_' us us 173 223 159 159 O
+ 141 '=' '+' nop nop 189 171 nop nop O
+ 142 bs bs del del 136 136 255 255 O
+ 143 ht btab nop nop 137 btab nop nop O
+ 144 202 234 dc1 dc1 241 209 145 145 C
+ 145 195 227 etb etb 247 215 151 151 C
+ 146 213 245 enq enq 229 197 133 133 C
+ 147 203 235 dc2 dc2 242 210 146 146 C
+ 148 197 229 dc4 dc4 244 212 148 148 C
+ 149 206 238 em em 249 217 153 153 C
+ 150 199 231 nak nak 245 213 149 149 C
+ 151 219 251 ht ht 233 201 137 137 C
+ 152 221 253 si si 239 207 143 143 C
+ 153 218 250 dle dle 240 208 144 144 C
+ 154 200 232 esc esc 219 251 155 155 C
+ 155 223 255 gs gs 221 253 157 157 C
+ 156 cr cr nl nl 141 141 138 138 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 198 230 soh soh 225 193 129 129 C
+ 159 217 249 dc3 dc3 243 211 147 147 C
+ 160 215 247 eot eot 228 196 132 132 C
+ 161 193 225 ack ack 230 198 134 134 C
+ 162 208 240 bel bel 231 199 135 135 C
+ 163 210 242 bs bs 232 200 136 136 C
+ 164 207 239 nl nl 234 202 138 138 C
+ 165 204 236 vt vt 235 203 139 139 C
+ 166 196 228 ff ff 236 204 140 140 C
+ 167 214 246 nop nop 187 186 nop nop C
+ 168 220 252 nop nop 167 162 nop nop C
+ 169 163 179 nop nop 224 254 nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 220 252 156 156 O
+ 172 209 241 sub sub 250 218 154 154 C
+ 173 222 254 can can 248 216 152 152 C
+ 174 211 243 etx etx 227 195 131 131 C
+ 175 205 237 syn syn 246 214 150 150 C
+ 176 201 233 stx stx 226 194 130 130 C
+ 177 212 244 so so 238 206 142 142 C
+ 178 216 248 cr cr 237 205 141 141 C
+ 179 194 226 nop nop 172 188 nop nop C
+ 180 192 224 nop nop 174 190 nop nop C
+ 181 '/' '?' nop nop 175 191 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 170 170 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 160 160 160 160 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey54 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 del '.' '.' '.' 174 174 boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/ru.koi8-r.shift.kbd b/share/syscons/keymaps/ru.koi8-r.shift.kbd
new file mode 100644
index 0000000..0d67778
--- /dev/null
+++ b/share/syscons/keymaps/ru.koi8-r.shift.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 155 155 debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' us us 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 bs bs del del 136 136 255 255 O
+ 015 ht btab nop nop 137 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 160 160 susp 160 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey54 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 del '.' '.' '.' 174 174 boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 155 155 debug nop O
+ 130 '1' '!' nop nop 177 161 nop nop O
+ 131 '2' '"' nul nul 178 192 128 128 O
+ 132 '3' ''' nop nop 179 163 nop nop O
+ 133 '4' ';' nop nop 180 164 nop nop O
+ 134 '5' ':' nop nop 181 165 nop nop O
+ 135 '6' ',' rs rs 182 222 158 158 O
+ 136 '7' '.' nop nop 183 166 nop nop O
+ 137 '8' '*' nop nop 184 170 nop nop O
+ 138 '9' '(' nop nop 185 168 nop nop O
+ 139 '0' ')' nop nop 176 169 nop nop O
+ 140 '-' '_' us us 173 223 159 159 O
+ 141 '=' '+' nop nop 189 171 nop nop O
+ 142 bs bs del del 136 136 255 255 O
+ 143 ht btab nop nop 137 btab nop nop O
+ 144 202 234 dc1 dc1 241 209 145 145 C
+ 145 195 227 etb etb 247 215 151 151 C
+ 146 213 245 enq enq 229 197 133 133 C
+ 147 203 235 dc2 dc2 242 210 146 146 C
+ 148 197 229 dc4 dc4 244 212 148 148 C
+ 149 206 238 em em 249 217 153 153 C
+ 150 199 231 nak nak 245 213 149 149 C
+ 151 219 251 ht ht 233 201 137 137 C
+ 152 221 253 si si 239 207 143 143 C
+ 153 218 250 dle dle 240 208 144 144 C
+ 154 200 232 esc esc 219 251 155 155 C
+ 155 223 255 gs gs 221 253 157 157 C
+ 156 cr cr nl nl 141 141 138 138 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 198 230 soh soh 225 193 129 129 C
+ 159 217 249 dc3 dc3 243 211 147 147 C
+ 160 215 247 eot eot 228 196 132 132 C
+ 161 193 225 ack ack 230 198 134 134 C
+ 162 208 240 bel bel 231 199 135 135 C
+ 163 210 242 bs bs 232 200 136 136 C
+ 164 207 239 nl nl 234 202 138 138 C
+ 165 204 236 vt vt 235 203 139 139 C
+ 166 196 228 ff ff 236 204 140 140 C
+ 167 214 246 nop nop 187 186 nop nop C
+ 168 220 252 nop nop 167 162 nop nop C
+ 169 163 179 nop nop 224 254 nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs 220 252 156 156 O
+ 172 209 241 sub sub 250 218 154 154 C
+ 173 222 254 can can 248 216 152 152 C
+ 174 211 243 etx etx 227 195 131 131 C
+ 175 205 237 syn syn 246 214 150 150 C
+ 176 201 233 stx stx 226 194 130 130 C
+ 177 212 244 so so 238 206 142 142 C
+ 178 216 248 cr cr 237 205 141 141 C
+ 179 194 226 nop nop 172 188 nop nop C
+ 180 192 224 nop nop 174 190 nop nop C
+ 181 '/' '?' nop nop 175 191 nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 170 170 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 160 160 160 160 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey54 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 del '.' '.' '.' 174 174 boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/ru.koi8-r.win.kbd b/share/syscons/keymaps/ru.koi8-r.win.kbd
new file mode 100644
index 0000000..e5c8622
--- /dev/null
+++ b/share/syscons/keymaps/ru.koi8-r.win.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop 155 155 debug nop O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' us us 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 bs bs del del 136 136 255 255 O
+ 015 ht btab nop nop 137 btab nop nop O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift alock lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift alock rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' 160 160 susp 160 O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey54 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 del '.' '.' '.' 174 174 boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 saver fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop 155 155 debug nop O
+ 130 '1' '!' nop nop 177 161 nop nop O
+ 131 '2' '"' nul nul 178 192 128 128 O
+ 132 '3' '#' nop nop 179 163 nop nop O
+ 133 '4' ';' nop nop 180 164 nop nop O
+ 134 '5' '%' nop nop 181 165 nop nop O
+ 135 '6' ':' rs rs 182 222 158 158 O
+ 136 '7' '?' nop nop 183 166 nop nop O
+ 137 '8' '*' nop nop 184 170 nop nop O
+ 138 '9' '(' nop nop 185 168 nop nop O
+ 139 '0' ')' nop nop 176 169 nop nop O
+ 140 '-' '_' us us 173 223 159 159 O
+ 141 '=' '+' nop nop 189 171 nop nop O
+ 142 bs bs del del 136 136 255 255 O
+ 143 ht btab nop nop 137 btab nop nop O
+ 144 202 234 dc1 dc1 241 209 145 145 C
+ 145 195 227 etb etb 247 215 151 151 C
+ 146 213 245 enq enq 229 197 133 133 C
+ 147 203 235 dc2 dc2 242 210 146 146 C
+ 148 197 229 dc4 dc4 244 212 148 148 C
+ 149 206 238 em em 249 217 153 153 C
+ 150 199 231 nak nak 245 213 149 149 C
+ 151 219 251 ht ht 233 201 137 137 C
+ 152 221 253 si si 239 207 143 143 C
+ 153 218 250 dle dle 240 208 144 144 C
+ 154 200 232 esc esc 219 251 155 155 C
+ 155 223 255 gs gs 221 253 157 157 C
+ 156 cr cr nl nl 141 141 138 138 O
+ 157 lctrl alock lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 198 230 soh soh 225 193 129 129 C
+ 159 217 249 dc3 dc3 243 211 147 147 C
+ 160 215 247 eot eot 228 196 132 132 C
+ 161 193 225 ack ack 230 198 134 134 C
+ 162 208 240 bel bel 231 199 135 135 C
+ 163 210 242 bs bs 232 200 136 136 C
+ 164 207 239 nl nl 234 202 138 138 C
+ 165 204 236 vt vt 235 203 139 139 C
+ 166 196 228 ff ff 236 204 140 140 C
+ 167 214 246 nop nop 187 186 nop nop C
+ 168 220 252 nop nop 167 162 nop nop C
+ 169 163 179 nop nop 224 254 nop nop C
+ 170 lshift lshift alock lshift lshift lshift lshift lshift O
+ 171 '\' '/' fs fs 220 252 156 156 O
+ 172 209 241 sub sub 250 218 154 154 C
+ 173 222 254 can can 248 216 152 152 C
+ 174 211 243 etx etx 227 195 131 131 C
+ 175 205 237 syn syn 246 214 150 150 C
+ 176 201 233 stx stx 226 194 130 130 C
+ 177 212 244 so so 238 206 142 142 C
+ 178 216 248 cr cr 237 205 141 141 C
+ 179 194 226 nop nop 172 188 nop nop C
+ 180 192 224 nop nop 174 190 nop nop C
+ 181 '.' ',' nop nop 175 191 nop nop O
+ 182 rshift rshift alock rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl 170 170 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' 160 160 160 160 O
+ 186 clock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey54 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 del '.' '.' '.' 174 174 boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 rctrl alock rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr pscr debug debug nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 saver fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/si.iso.kbd b/share/syscons/keymaps/si.iso.kbd
new file mode 100644
index 0000000..1353027
--- /dev/null
+++ b/share/syscons/keymaps/si.iso.kbd
@@ -0,0 +1,116 @@
+# Slovenian keyboard
+# Blaz Zupan <blaz@amis.net>
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '~' '~' nop nop O
+ 003 '2' '"' nul nul 183 183 nul nul O
+ 004 '3' '#' nop nop '^' '^' nop nop O
+ 005 '4' '$' nop nop 162 162 nop nop O
+ 006 '5' '%' nop nop 176 176 nop nop O
+ 007 '6' '&' rs rs 178 178 rs rs O
+ 008 '7' '/' nop nop '`' '`' nop nop O
+ 009 '8' '(' nop nop 255 255 nop nop O
+ 010 '9' ')' nop nop ''' ''' nop nop O
+ 011 '0' '=' nop nop 189 189 nop nop O
+ 012 ''' '?' us us 168 168 us us O
+ 013 '+' '*' nop nop 184 184 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '\' '\' dc1 dc1 C
+ 017 'w' 'W' etb etb '|' '|' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 185 169 esc esc 247 247 esc esc C
+ 027 240 208 gs gs 215 215 gs gs C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack '[' '[' ack ack C
+ 034 'g' 'G' bel bel ']' ']' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 179 179 vt vt C
+ 038 'l' 'L' ff ff 163 163 ff ff C
+ 039 232 200 nop nop 232 200 nop nop C
+ 040 230 198 nop nop 223 223 nop nop C
+ 041 184 168 nop nop 184 168 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 190 174 fs fs 164 164 fs fs C
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn '@' '@' syn syn C
+ 048 'b' 'B' stx stx '{' '{' stx stx C
+ 049 'n' 'N' so so '}' '}' so so C
+ 050 'm' 'M' cr cr 167 167 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' nop nop '-' '_' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' ',' ',' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/sk.iso2.kbd b/share/syscons/keymaps/sk.iso2.kbd
new file mode 100644
index 0000000..14466e8
--- /dev/null
+++ b/share/syscons/keymaps/sk.iso2.kbd
@@ -0,0 +1,358 @@
+# Keyboard map for Slovak language under FreeBSD.
+# Created by G. Adam Stanislav <adam@whizkidtech.net>
+#
+# Version 1.1 - 1999-03-21
+#
+# $FreeBSD$
+#
+# This map is derived from my Central European map
+# (ce.iso2.kbd). The description of the CE map is next.
+# After that is a description of what was added
+# specifically to the Slovak map:
+#
+########### CE map described: #################################
+#
+# This map uses the US QWERTY keyboard for its basic layout.
+# It adds a "third row" to the top of the PC keyboard. To
+# access the third row, press and hold the Alt key, then
+# strike a key in the top row.
+#
+# Note that some of the third-row keys produce characters.
+# Others must be followed by another keystroke resulting
+# in accented characters. To print the accent mark alone,
+# press the space bar after pressing and releasing the
+# alt-accent mark key.
+#
+# In most cases I have mapped a key to a character or an
+# accent mark because the key on the US QWERTY keyboard
+# somewhat resembles the result.
+#
+# In addition to the top row, three keys on the numeric keypad
+# are mapped for the use with IS 8859-2 when combined with the
+# Alt key: The dot (del) key combined with alt will print a
+# comma instead of a dot; alt-/ will show the division mark,
+# and alt-* the multpilication sign.
+#
+# If you have an ISO-8859-2 font loaded, you can see the layout here:
+#
+# alt-` ² (ogonek) and alt-~ ¸ (cedilla)
+# Examples: ê±þçº
+# alt-! ß (German double s)
+# alt-@ ° (degree)
+# alt-# ¤ (currency)
+# alt-$ § (section, called paragraf in most CE languages)
+# alt-% ¨ (umlaut, dve bodky)
+# Examples: äüöë
+# alt-^ ^ (circumflex, vokáò)
+# Examples: ôâî
+# alt-& ­ (hyphen, pomlèka, rozdeµovacie znamienko)
+# alt-* ° (ring)
+# Examples: ùÙ
+# alt-( ½ (Hungarian long umlaut)
+# Examples: õû
+# alt-) ÿ (dot accent)
+# Examples: ¿¯
+# alt-- ´ (acute, då¾eò, èárka)
+# Examples: á¶éíúñ¼àå
+# alt-= · (caron, mäkèeò, háèek) and alt-+ ¢ (breve)
+# Examples: ãèøµï»ò¾
+# alt-\ / (slash)
+# Examples: ð³
+# alt-/ [on numeric keypad] ÷
+# alt-* [on numeric keypad] ×
+# alt-. [on numeric keypad] ,
+#
+# This layout offers access to the entire character set of
+# ISO 8859-2, used by Slovak, Czech, German, Polish, Croatian,
+# Slovenian, Rumanian, Hungarian, and probably other languages,
+# while remaining fully compatible with the default US QWERTY
+# keyboard.
+#
+######### Slovak map described: ###############################
+#
+# In addition to everything described above, pressing
+# Alt-character is a "shortcut" to the most commonly used
+# accented character. For example, Alt-a produces "dlhe a".
+#
+# In most cases, a character is used with only one possible
+# accent mark in Slovak (dlzen alebo makcen). These are the
+# characters that work unambiguously with the Alt key:
+#
+# e r t y u i s d z c n
+#
+# Three characters are used with two different accent marks:
+#
+# o a l
+#
+# Using the Alt-character combination produces the most commonly
+# used result, which is:
+#
+# Alt-o - dlhe o
+# Alt-a - dlhe a
+# Alt-l - makke l
+#
+# To produce the other possible result, press Alt and the closest
+# key on the keyboard that is not used with any accent in Slovak.
+# That is:
+#
+# Alt-p - o s vokanom
+# Alt-q - a s dvoma bodkami
+# Alt-k - dlhe l
+#
+# If you have any comments, send me email, in English or Slovak,
+# to "G. Adam Stanislav" <adam@whizkidtech.net>.
+#
+# If you are sending email from aol.com, hotmail.com, or
+# some other free provider often abused by spammers, I will not
+# receive it. In that case, try <zen@buddhist.com>.
+#
+# Note: This keymap uses the QWERTY model which is used by
+# most of the world. Slovak typewriters use the QWERTZ
+# model. If you get a Z when you press the key marked Y,
+# and Y when pressing Z, you have two options:
+#
+# 1. Change the markings on your keyboard to the QWERTY
+# standard; or
+# 2. Edit this file. All you have to do is change 021
+# to 044, and 044 to 021 at the beginning of the
+# respective lines. This will turn your keyboard
+# to the QWERTZ model.
+#
+# The current version of this file is kept at
+# http://www.whizkidtech.net/ISO-8859-2/
+#
+# New in version 1.0: You can keep holding the alt key after pressing
+# an accent key. For example, pressing the acute accent followed by
+# alt-s will produce acute s - in version 1.0 it just beeped.
+#
+# This is more compatible with the universal ISO-8859-2 key map.
+#
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop 223 223 nop nop O
+ 003 '2' '@' nul nul 176 176 nul nul O
+ 004 '3' '#' nop nop 164 164 nop nop O
+ 005 '4' '$' nop nop 167 167 nop nop O
+ 006 '5' '%' nop nop duml duml nop nop O
+ 007 '6' '^' rs rs dcir dcir rs rs O
+ 008 '7' '&' nop nop 173 173 nop nop O
+ 009 '8' '*' nop nop drin drin nop nop O
+ 010 '9' '(' nop nop ddac ddac nop nop O
+ 011 '0' ')' nop nop ddot ddot nop nop O
+ 012 '-' '_' us us dacu dacu us us O
+ 013 '=' '+' nop nop dcar dbre nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 228 196 dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 233 201 enq enq C
+ 019 'r' 'R' dc2 dc2 224 192 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 187 171 dc4 dc4 C
+ 021 'y' 'Y' em em 253 221 em em C
+ 022 'u' 'U' nak nak 250 218 nak nak C
+ 023 'i' 'I' ht ht 237 205 ht ht C
+ 024 'o' 'O' si si 243 211 si si C
+ 025 'p' 'P' dle dle 244 212 dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 185 169 dc3 dc3 C
+ 032 'd' 'D' eot eot 239 207 eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 229 197 vt vt C
+ 038 'l' 'L' ff ff 181 165 ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop dogo dced nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs dsla dsla fs fs O
+ 044 'z' 'Z' sub sub 190 174 sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 232 200 etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 242 210 so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' 215 215 215 215 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' ',' ',' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' 247 247 247 247 N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra 000
+ dacu 180 ( 'a' 225 ) ( 'A' 193 )
+ ( 225 225 ) ( 193 193 )
+ ( 'c' 230 ) ( 'C' 198 )
+ ( 232 230 ) ( 200 198 )
+ ( 'e' 233 ) ( 'E' 201 )
+ ( 233 233 ) ( 201 201 )
+ ( 'i' 237 ) ( 'I' 205 )
+ ( 237 237 ) ( 205 205 )
+ ( 'l' 229 ) ( 'L' 197 )
+ ( 181 229 ) ( 165 197 )
+ ( 'n' 241 ) ( 'N' 209 )
+ ( 242 241 ) ( 210 209 )
+ ( 'o' 243 ) ( 'O' 211 )
+ ( 243 243 ) ( 211 211 )
+ ( 'r' 224 ) ( 'R' 192 )
+ ( 224 224 ) ( 192 192 )
+ ( 's' 182 ) ( 'S' 166 )
+ ( 185 182 ) ( 169 166 )
+ ( 'u' 250 ) ( 'U' 218 )
+ ( 250 250 ) ( 218 218 )
+ ( 'y' 253 ) ( 'Y' 221 )
+ ( 253 253 ) ( 221 221 )
+ ( 'z' 188 ) ( 'Z' 172 )
+ ( 190 188 ) ( 174 172 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 )
+ ( 225 226 ) ( 193 194 )
+ ( 'i' 238 ) ( 'I' 206 )
+ ( 237 238 ) ( 205 206 )
+ ( 'o' 244 ) ( 'O' 212 )
+ ( 243 244 ) ( 211 212 )
+ dtil 000
+ dmac 000
+ dbre 162 ( 'a' 227 ) ( 'A' 195 )
+ ( 225 227 ) ( 193 195 )
+ ( 'c' 232 ) ( 'C' 200 )
+ ( 232 232 ) ( 200 200 )
+ ( 'd' 239 ) ( 'D' 207 )
+ ( 239 239 ) ( 207 207 )
+ ( 'e' 236 ) ( 'E' 204 )
+ ( 233 236 ) ( 201 204 )
+ ( 'l' 181 ) ( 'L' 165 )
+ ( 181 181 ) ( 165 165 )
+ ( 'n' 242 ) ( 'N' 210 )
+ ( 242 242 ) ( 210 210 )
+ ( 'r' 248 ) ( 'R' 216 )
+ ( 224 248 ) ( 192 216 )
+ ( 's' 185 ) ( 'S' 169 )
+ ( 185 185 ) ( 169 169 )
+ ( 't' 187 ) ( 'T' 171 )
+ ( 187 187 ) ( 171 171 )
+ ( 'z' 190 ) ( 'Z' 174 )
+ ( 190 190 ) ( 174 174 )
+ ddot 255 ( 'z' 191 ) ( 'Z' 175 )
+ ( 190 191 ) ( 174 175 )
+ duml 168 ( 'a' 228 ) ( 'A' 196 )
+ ( 225 228 ) ( 193 196 )
+ ( 'e' 235 ) ( 'E' 203 )
+ ( 233 235 ) ( 201 203 )
+ ( 'o' 246 ) ( 'O' 214 )
+ ( 243 246 ) ( 211 214 )
+ ( 'u' 252 ) ( 'U' 220 )
+ ( 250 252 ) ( 218 220 )
+ dsla '/' ( 'd' 240 ) ( 'D' 208 )
+ ( 239 240 ) ( 207 208 )
+ ( 'l' 179 ) ( 'L' 163 )
+ ( 181 179 ) ( 165 163 )
+ drin 176 ( 'u' 249 ) ( 'U' 217 )
+ ( 250 249 ) ( 218 217 )
+ dced 184 ( 'a' 177 ) ( 'A' 161 )
+ ( 225 177 ) ( 193 161 )
+ ( 'c' 231 ) ( 'C' 199 )
+ ( 232 231 ) ( 200 199 )
+ ( 'e' 234 ) ( 'E' 202 )
+ ( 233 234 ) ( 201 202 )
+ ( 's' 186 ) ( 'S' 170 )
+ ( 185 186 ) ( 169 170 )
+ ( 't' 254 ) ( 'T' 222 )
+ ( 187 254 ) ( 171 222 )
+ dapo 000
+ ddac 189 ( 'o' 245 ) ( 'O' 213 )
+ ( 243 245 ) ( 211 213 )
+ ( 'u' 251 ) ( 'U' 219 )
+ ( 250 251 ) ( 218 219 )
+ dogo 178 ( 'a' 177 ) ( 'A' 161 )
+ ( 225 177 ) ( 193 161 )
+ ( 'c' 231 ) ( 'C' 199 )
+ ( 232 231 ) ( 200 199 )
+ ( 'e' 234 ) ( 'E' 202 )
+ ( 233 234 ) ( 201 202 )
+ ( 's' 186 ) ( 'S' 170 )
+ ( 185 186 ) ( 169 170 )
+ ( 't' 254 ) ( 'T' 222 )
+ ( 187 254 ) ( 171 222 )
+ dcar 183 ( 'a' 227 ) ( 'A' 195 )
+ ( 225 227 ) ( 193 195 )
+ ( 'c' 232 ) ( 'C' 200 )
+ ( 232 232 ) ( 200 200 )
+ ( 'd' 239 ) ( 'D' 207 )
+ ( 239 239 ) ( 207 207 )
+ ( 'e' 236 ) ( 'E' 204 )
+ ( 233 236 ) ( 201 204 )
+ ( 'l' 181 ) ( 'L' 165 )
+ ( 181 181 ) ( 165 165 )
+ ( 'n' 242 ) ( 'N' 210 )
+ ( 242 242 ) ( 210 210 )
+ ( 'r' 248 ) ( 'R' 216 )
+ ( 224 248 ) ( 192 216 )
+ ( 's' 185 ) ( 'S' 169 )
+ ( 185 185 ) ( 169 169 )
+ ( 't' 187 ) ( 'T' 171 )
+ ( 187 187 ) ( 171 171 )
+ ( 'z' 190 ) ( 'Z' 174 )
+ ( 190 190 ) ( 174 174 )
+
diff --git a/share/syscons/keymaps/spanish.iso.acc.kbd b/share/syscons/keymaps/spanish.iso.acc.kbd
new file mode 100644
index 0000000..ae1fd42
--- /dev/null
+++ b/share/syscons/keymaps/spanish.iso.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 183 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '~' '~' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 172 172 nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop ''' '?' nop nop O
+ 013 161 191 nop nop 161 191 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 233 201 enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 250 218 nak nak C
+ 023 'i' 'I' ht ht 237 205 ht ht C
+ 024 'o' 'O' si si 243 211 si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dgra dcir esc esc '[' '[' esc esc O
+ 027 '+' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 241 209 nop nop '~' '~' nop nop C
+ 040 dacu duml nop nop '{' '{' nop nop O
+ 041 186 170 fs fs '\' '\' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 231 199 rs rs '}' '}' rs rs C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/spanish.iso.kbd b/share/syscons/keymaps/spanish.iso.kbd
new file mode 100644
index 0000000..9c08898
--- /dev/null
+++ b/share/syscons/keymaps/spanish.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 183 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '~' '~' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 172 172 nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop ''' '?' nop nop O
+ 013 161 191 nop nop 161 191 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 233 201 enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 250 218 nak nak C
+ 023 'i' 'I' ht ht 237 205 ht ht C
+ 024 'o' 'O' si si 243 211 si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '`' '^' esc esc '[' '[' esc esc O
+ 027 '+' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 241 209 nop nop '~' '~' nop nop C
+ 040 252 220 nop nop '{' '{' nop nop O
+ 041 186 170 fs fs '\' '\' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 231 199 rs rs '}' '}' rs rs C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/spanish.iso15.acc.kbd b/share/syscons/keymaps/spanish.iso15.acc.kbd
new file mode 100644
index 0000000..e3fc3cb
--- /dev/null
+++ b/share/syscons/keymaps/spanish.iso15.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 183 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '~' '~' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 172 172 nop nop O
+ 008 '7' '/' nop nop '7' '/' nop nop O
+ 009 '8' '(' nop nop '8' '(' nop nop O
+ 010 '9' ')' nop nop '9' ')' nop nop O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' nop nop ''' '?' nop nop O
+ 013 161 191 nop nop 161 191 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 164 enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 250 218 nak nak C
+ 023 'i' 'I' ht ht 237 205 ht ht C
+ 024 'o' 'O' si si 243 211 si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 dgra dcir esc esc '[' '[' esc esc O
+ 027 '+' '*' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 241 209 nop nop '~' '~' nop nop C
+ 040 dacu duml nop nop '{' '{' nop nop O
+ 041 186 170 fs fs '\' '\' fs fs O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 231 199 rs rs '}' '}' rs rs C
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '<' '>' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/swedish.cp850.kbd b/share/syscons/keymaps/swedish.cp850.kbd
new file mode 100644
index 0000000..11b42ee
--- /dev/null
+++ b/share/syscons/keymaps/swedish.cp850.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 156 156 nop nop O
+ 005 '4' 207 nop nop '$' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop '6' '&' nop nop O
+ 008 '7' '/' nop nop '{' '{' nop nop O
+ 009 '8' '(' esc esc '[' '[' esc esc O
+ 010 '9' ')' gs gs ']' ']' gs gs O
+ 011 '0' '=' nop nop '}' '}' nop nop O
+ 012 '+' '?' fs fs '\' '\' fs fs O
+ 013 179 180 nop nop 179 180 nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 134 143 nop nop 134 143 nop nop C
+ 027 177 176 rs rs 178 178 nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 148 153 nop nop 148 153 nop nop C
+ 040 132 142 nop nop 132 142 nop nop C
+ 041 245 171 nop nop 245 171 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop ''' '*' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' '|' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/swedish.iso.kbd b/share/syscons/keymaps/swedish.iso.kbd
new file mode 100644
index 0000000..07a4487
--- /dev/null
+++ b/share/syscons/keymaps/swedish.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop nop nop nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '#' nop nop 163 nop nop nop O
+ 005 '4' 164 nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop nop nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '+' '?' nop nop '\' nop fs nop O
+ 013 128 '`' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 229 197 nop nop '}' ']' nop nop C
+ 027 168 '^' nop nop '~' nop nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 214 nop nop '|' '\' nop nop C
+ 040 228 196 nop nop '{' '[' nop nop C
+ 041 167 189 nop nop '\' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ''' '*' nop nop nop nop nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' ';' nop nop nop '<' nop nop O
+ 052 '.' ':' nop nop nop '>' nop nop O
+ 053 '-' '_' us nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/swissfrench.cp850.kbd b/share/syscons/keymaps/swissfrench.cp850.kbd
new file mode 100644
index 0000000..8ca6d5e
--- /dev/null
+++ b/share/syscons/keymaps/swissfrench.cp850.kbd
@@ -0,0 +1,118 @@
+# $FreeBSD$
+#
+# swiss-french cp850 keymap
+# original 13.06.1998 by Francois Tamone <tamone@eig.unige.ch>
+# modified and renamed 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 231 nop nop '4' 135 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 170 170 nop nop O
+ 008 '7' '/' nop nop 221 221 nop nop O
+ 009 '8' '(' esc esc 155 155 esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs ''' ''' fs fs O
+ 013 094 '`' nop nop '~' '~' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 232 252 nop nop '[' 138 nop nop C
+ 027 250 '!' nop nop ']' ']' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 233 246 nop nop 130 144 nop nop C
+ 040 224 228 nop nop '{' 133 nop nop C
+ 041 237 248 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 156 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 230 230 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/swissfrench.iso.acc.kbd b/share/syscons/keymaps/swissfrench.iso.acc.kbd
new file mode 100644
index 0000000..212308d
--- /dev/null
+++ b/share/syscons/keymaps/swissfrench.iso.acc.kbd
@@ -0,0 +1,133 @@
+# $FreeBSD$
+#
+# swissfrench ISO 8859-1 keymap, accent keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 231 nop nop '4' 231 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 172 172 nop nop O
+ 008 '7' '/' nop nop 166 166 nop nop O
+ 009 '8' '(' esc esc 222 222 esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs dacu dacu fs fs O
+ 013 dcir dgra nop nop dtil dtil nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 232 252 esc esc '[' 220 esc esc C
+ 027 duml '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 233 246 nop nop 233 214 nop nop C
+ 040 224 228 nop nop '{' 196 nop nop C
+ 041 167 176 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 163 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 181 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'c' 231 ) ( 'C' 199 )
+ ( 'y' 253 ) ( 'Y' 221 )
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'o' 245 ) ( 'O' 213 )
+ ( 'n' 241 ) ( 'N' 209 )
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
diff --git a/share/syscons/keymaps/swissfrench.iso.kbd b/share/syscons/keymaps/swissfrench.iso.kbd
new file mode 100644
index 0000000..1241c3b
--- /dev/null
+++ b/share/syscons/keymaps/swissfrench.iso.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+#
+# swissfrench ISO 8859-1 keymap, no dead keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 231 nop nop '4' 231 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 172 172 nop nop O
+ 008 '7' '/' nop nop 166 166 nop nop O
+ 009 '8' '(' esc esc 222 222 esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs 180 180 fs fs O
+ 013 '^' '`' nop nop '~' '~' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 232 252 esc esc '[' 220 esc esc C
+ 027 168 '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 233 246 nop nop 233 214 nop nop C
+ 040 224 228 nop nop '{' 196 nop nop C
+ 041 167 176 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 163 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 181 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/swissgerman.cp850.kbd b/share/syscons/keymaps/swissgerman.cp850.kbd
new file mode 100644
index 0000000..f50be73
--- /dev/null
+++ b/share/syscons/keymaps/swissgerman.cp850.kbd
@@ -0,0 +1,118 @@
+# $FreeBSD$
+#
+# swiss-german cp850 keymap
+# original 21.10.1996 by Adrian Steinmann <ast@marabu.ch>
+# modified and renamed 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 135 nop nop '4' 135 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 170 170 nop nop O
+ 008 '7' '/' nop nop 221 221 nop nop O
+ 009 '8' '(' esc esc 155 155 esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs ''' ''' fs fs O
+ 013 094 '`' nop nop '~' '~' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 129 154 esc esc '[' 138 esc esc C
+ 027 250 '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 148 153 nop nop 130 144 nop nop C
+ 040 132 142 nop nop '{' 133 nop nop C
+ 041 237 248 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 156 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 230 230 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del ',' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/swissgerman.iso.acc.kbd b/share/syscons/keymaps/swissgerman.iso.acc.kbd
new file mode 100644
index 0000000..9ca34bd
--- /dev/null
+++ b/share/syscons/keymaps/swissgerman.iso.acc.kbd
@@ -0,0 +1,133 @@
+# $FreeBSD$
+#
+# swissgerman ISO 8859-1 keymap, accent keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 231 nop nop '4' 231 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 172 172 nop nop O
+ 008 '7' '/' nop nop 166 166 nop nop O
+ 009 '8' '(' esc esc 222 222 esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs dacu dacu fs fs O
+ 013 dcir dgra nop nop dtil dtil nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 252 232 esc esc '[' 220 esc esc C
+ 027 duml '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 233 nop nop 246 214 nop nop C
+ 040 228 224 nop nop '{' 196 nop nop C
+ 041 167 176 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 163 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 181 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'c' 231 ) ( 'C' 199 )
+ ( 'y' 253 ) ( 'Y' 221 )
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'o' 245 ) ( 'O' 213 )
+ ( 'n' 241 ) ( 'N' 209 )
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
diff --git a/share/syscons/keymaps/swissgerman.iso.kbd b/share/syscons/keymaps/swissgerman.iso.kbd
new file mode 100644
index 0000000..091a628
--- /dev/null
+++ b/share/syscons/keymaps/swissgerman.iso.kbd
@@ -0,0 +1,117 @@
+# $FreeBSD$
+#
+# swissgerman ISO 8859-1 keymap, no dead keys
+# created 14.11.1999 by Martin Blapp <mb@imp.ch>
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '+' nop nop '|' '|' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' '*' nop nop '#' '#' nop nop O
+ 005 '4' 231 nop nop '4' 231 nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '&' nop nop 172 172 nop nop O
+ 008 '7' '/' nop nop 166 166 nop nop O
+ 009 '8' '(' esc esc 222 222 esc esc O
+ 010 '9' ')' gs gs '9' ')' gs gs O
+ 011 '0' '=' nop nop '0' '=' nop nop O
+ 012 ''' '?' fs fs 180 180 fs fs O
+ 013 '^' '`' nop nop '~' '~' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 252 232 esc esc '[' 220 esc esc C
+ 027 168 '!' gs gs ']' ']' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 246 233 nop nop 246 214 nop nop C
+ 040 228 224 nop nop '{' 196 nop nop C
+ 041 167 176 nop nop nop nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '$' 163 rs rs '}' '}' rs rs O
+ 044 'y' 'Y' em em 'y' 'Y' em em C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 181 181 cr cr C
+ 051 ',' ';' nop nop ',' ';' nop nop O
+ 052 '.' ':' nop nop '.' ':' nop nop O
+ 053 '-' '_' us us '-' '_' us us O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '\' '\' nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/tr.iso9.q.kbd b/share/syscons/keymaps/tr.iso9.q.kbd
new file mode 100644
index 0000000..6651713
--- /dev/null
+++ b/share/syscons/keymaps/tr.iso9.q.kbd
@@ -0,0 +1,129 @@
+# Turkish ISO-8859-9 keymap by Evren Yurtesen (09-12-1999)
+#
+# $FreeBSD$
+#
+# For suggestions and corrections please contact with me.
+#
+# Evren Yurtesen
+# yurtesen@ispro.net.tr
+#
+# Mobile : +358 40 5185215
+#
+# Work Address : ISPRO Internet Servisleri
+# 18 Sokak No:12
+# PK. 35290 Guzelyali/Izmir/TURKEY
+#
+# Work Tel : +90 232 2463992
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '>' nop nop nop O
+ 003 '2' ''' nul nul '£' nop nul nul O
+ 004 '3' '^' nop nop '#' nop nop nop O
+ 005 '4' '+' nop nop '$' nop nop nop O
+ 006 '5' '%' nop nop '½' nop nop nop O
+ 007 '6' '&' nop nop nop nop nop nop O
+ 008 '7' '/' nop nop '{' nop nop nop O
+ 009 '8' '(' nop nop '[' nop nop nop O
+ 010 '9' ')' nop nop ']' nop gs nop O
+ 011 '0' '=' nop nop '}' nop nop nop O
+ 012 '*' '?' nop nop '\' nop fs nop O
+ 013 '-' '_' nop nop nop nop nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 '@' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 253 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 240 208 nop nop 168 208 nop nop C
+ 027 252 220 nop nop '~' nop nop nop C
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 230 198 soh soh C
+ 031 's' 'S' dc3 dc3 223 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 254 222 nop nop 180 222 nop nop C
+ 040 'i' 221 nop nop 'i' 221 nop nop C
+ 041 '"' 'é' nop nop '<' nop nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 ',' ';' nop nop '`' nop nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 246 214 nop nop 246 214 nop nop C
+ 052 231 199 nop nop 231 199 nop nop C
+ 053 '.' ':' us nop nop nop nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '<' '>' nop nop '|' nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/ua.iso5.kbd b/share/syscons/keymaps/ua.iso5.kbd
new file mode 100644
index 0000000..a96d89f
--- /dev/null
+++ b/share/syscons/keymaps/ua.iso5.kbd
@@ -0,0 +1,243 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '/' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' ':' nop nop O
+ 007 '6' '^' rs rs '6' ',' rs rs O
+ 008 '7' '&' nop nop '7' '.' nop nop O
+ 009 '8' '*' nop nop '8' ';' nop nop O
+ 010 '9' '(' nop nop '9' '?' nop nop O
+ 011 '0' ')' nop nop '0' '%' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop btab btab nop nop O
+ 016 'q' 'Q' dc1 dc1 217 185 dc1 dc1 C
+ 017 'w' 'W' etb etb 230 198 etb etb C
+ 018 'e' 'E' enq enq 227 195 enq enq C
+ 019 'r' 'R' dc2 dc2 218 186 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 213 181 dc4 dc4 C
+ 021 'y' 'Y' em em 221 189 em em C
+ 022 'u' 'U' nak nak 211 179 nak nak C
+ 023 'i' 'I' ht ht 232 200 ht ht C
+ 024 'o' 'O' si si 233 201 si si C
+ 025 'p' 'P' dle dle 215 183 dle dle C
+ 026 '[' '{' esc esc 229 197 esc esc O
+ 027 ']' '}' gs gs 247 167 234 202 O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 228 196 soh soh C
+ 031 's' 'S' dc3 dc3 246 166 235 203 C
+ 032 'd' 'D' eot eot 210 178 eot eot C
+ 033 'f' 'F' ack ack 208 176 ack ack C
+ 034 'g' 'G' bel bel 223 191 bel bel C
+ 035 'h' 'H' bs bs 224 192 bs bs C
+ 036 'j' 'J' nl nl 222 190 nl nl C
+ 037 'k' 'K' vt vt 219 187 vt vt C
+ 038 'l' 'L' ff ff 212 180 ff ff C
+ 039 ';' ':' nop nop 214 182 nop nop O
+ 040 ''' '"' nop nop 244 164 237 205 O
+ 041 '`' '~' nop nop '`' '~' 241 161 O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 239 207 sub sub C
+ 045 'x' 'X' can can 231 199 can can C
+ 046 'c' 'C' etx etx 225 193 etx etx C
+ 047 'v' 'V' syn syn 220 188 syn syn C
+ 048 'b' 'B' stx stx 216 184 stx stx C
+ 049 'n' 'N' so so 226 194 so so C
+ 050 'm' 'M' cr cr 236 204 cr cr C
+ 051 ',' '<' nop nop 209 177 nop nop O
+ 052 '.' '>' nop nop 238 206 nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl '*' '*' nl nl O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 fkey90 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 fkey91 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 fkey92 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug nop nop nop nop nop O
+# 093 meta meta meta meta meta meta meta meta O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 del del fkey81 del fkey61 fkey61 boot boot O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' nul nul O
+ 132 '3' '/' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' ':' nop nop '5' '%' nop nop O
+ 135 '6' ',' rs rs '6' '^' rs rs O
+ 136 '7' '.' nop nop '7' '&' nop nop O
+ 137 '8' ';' nop nop '8' '*' nop nop O
+ 138 '9' '?' nop nop '9' '(' nop nop O
+ 139 '0' '%' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop btab btab nop nop O
+ 144 217 185 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 230 198 etb etb 'w' 'W' etb etb C
+ 146 227 195 enq enq 'e' 'E' enq enq C
+ 147 218 186 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 213 181 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 221 189 em em 'y' 'Y' em em C
+ 150 211 179 nak nak 'u' 'U' nak nak C
+ 151 232 200 ht ht 'i' 'I' ht ht C
+ 152 233 201 si si 'o' 'O' si si C
+ 153 215 183 dle dle 'p' 'P' dle dle C
+ 154 229 197 esc esc '[' '{' esc esc C
+ 155 247 167 gs gs ']' '}' 234 202 C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 228 196 soh soh 'a' 'A' soh soh C
+ 159 246 166 dc3 dc3 's' 'S' 235 203 C
+ 160 210 178 eot eot 'd' 'D' eot eot C
+ 161 208 176 ack ack 'f' 'F' ack ack C
+ 162 223 191 bel bel 'g' 'G' bel bel C
+ 163 224 192 bs bs 'h' 'H' bs bs C
+ 164 222 190 nl nl 'j' 'J' nl nl C
+ 165 219 187 vt vt 'k' 'K' vt vt C
+ 166 212 180 ff ff 'l' 'L' ff ff C
+ 167 214 182 nop nop ';' ':' nop nop C
+ 168 244 164 nop nop ''' '"' 237 205 C
+ 169 '`' '~' nop nop '`' '~' 241 161 C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 239 207 sub sub 'z' 'Z' sub sub C
+ 173 231 199 can can 'x' 'X' can can C
+ 174 225 193 etx etx 'c' 'C' etx etx C
+ 175 220 188 syn syn 'v' 'V' syn syn C
+ 176 216 184 stx stx 'b' 'B' stx stx C
+ 177 226 194 so so 'n' 'N' so so C
+ 178 236 204 cr cr 'm' 'M' cr cr C
+ 179 209 177 nop nop ',' '<' nop nop C
+ 180 238 206 nop nop '.' '>' nop nop C
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl '*' '*' nl nl O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' ' ' susp O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 fkey90 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 fkey91 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 fkey92 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 del del fkey81 del fkey61 fkey61 boot boot O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
diff --git a/share/syscons/keymaps/ua.koi8-u.kbd b/share/syscons/keymaps/ua.koi8-u.kbd
new file mode 100644
index 0000000..112a45b
--- /dev/null
+++ b/share/syscons/keymaps/ua.koi8-u.kbd
@@ -0,0 +1,242 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '"' nul nul O
+ 004 '3' '#' nop nop '3' '/' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' ':' nop nop O
+ 007 '6' '^' rs rs '6' ',' rs rs O
+ 008 '7' '&' nop nop '7' '.' nop nop O
+ 009 '8' '*' nop nop '8' ';' nop nop O
+ 010 '9' '(' nop nop '9' '?' nop nop O
+ 011 '0' ')' nop nop '0' '%' nop nop O
+ 012 '-' '_' ns ns '-' '_' ns ns O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop btab btab nop nop O
+ 016 'q' 'Q' dc1 dc1 202 234 dc1 dc1 C
+ 017 'w' 'W' etb etb 195 227 etb etb C
+ 018 'e' 'E' enq enq 213 245 enq enq C
+ 019 'r' 'R' dc2 dc2 203 235 dc2 dc2 C
+ 020 't' 'T' dc4 dc4 197 229 dc4 dc4 C
+ 021 'y' 'Y' em em 206 238 em em C
+ 022 'u' 'U' nak nak 199 231 nak nak C
+ 023 'i' 'I' ht ht 219 251 ht ht C
+ 024 'o' 'O' si si 221 253 si si C
+ 025 'p' 'P' dle dle 218 250 dle dle C
+ 026 '[' '{' esc esc 200 232 esc esc O
+ 027 ']' '}' gs gs 167 183 223 255 O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 198 230 soh soh C
+ 031 's' 'S' dc3 dc3 166 182 217 249 C
+ 032 'd' 'D' eot eot 215 247 eot eot C
+ 033 'f' 'F' ack ack 193 225 ack ack C
+ 034 'g' 'G' bel bel 208 240 bel bel C
+ 035 'h' 'H' bs bs 210 242 bs bs C
+ 036 'j' 'J' nl nl 207 239 nl nl C
+ 037 'k' 'K' vt vt 204 236 vt vt C
+ 038 'l' 'L' ff ff 196 228 ff ff C
+ 039 ';' ':' nop nop 214 246 nop nop O
+ 040 ''' '"' nop nop 164 180 220 252 O
+ 041 '`' '~' nop nop 173 189 163 179 O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 209 241 sub sub C
+ 045 'x' 'X' can can 222 254 can can C
+ 046 'c' 'C' etx etx 211 243 etx etx C
+ 047 'v' 'V' syn syn 205 237 syn syn C
+ 048 'b' 'B' stx stx 201 233 stx stx C
+ 049 'n' 'N' so so 212 244 so so C
+ 050 'm' 'M' cr cr 216 248 cr cr C
+ 051 ',' '<' nop nop 194 226 nop nop O
+ 052 '.' '>' nop nop 192 224 nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl '*' '*' nl nl O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 fkey90 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 fkey91 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 fkey92 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 del del fkey81 del fkey61 fkey61 boot boot O
+ 104 slock slock slock slock slock slock slock slock O
+ 105 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+#
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc esc esc esc esc debug esc O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' nul nul O
+ 132 '3' '/' nop nop '3' '#' nop nop O
+ 133 '4' '$' nop nop '4' '$' nop nop O
+ 134 '5' ':' nop nop '5' '%' nop nop O
+ 135 '6' ',' rs rs '6' '^' rs rs O
+ 136 '7' '.' nop nop '7' '&' nop nop O
+ 137 '8' ';' nop nop '8' '*' nop nop O
+ 138 '9' '?' nop nop '9' '(' nop nop O
+ 139 '0' '%' nop nop '0' ')' nop nop O
+ 140 '-' '_' ns ns '-' '_' ns ns O
+ 141 '=' '+' nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs del del O
+ 143 ht btab nop nop btab btab nop nop O
+ 144 202 234 dc1 dc1 'q' 'Q' dc1 dc1 C
+ 145 195 227 etb etb 'w' 'W' etb etb C
+ 146 213 245 enq enq 'e' 'E' enq enq C
+ 147 203 235 dc2 dc2 'r' 'R' dc2 dc2 C
+ 148 197 229 dc4 dc4 't' 'T' dc4 dc4 C
+ 149 206 238 em em 'y' 'Y' em em C
+ 150 199 231 nak nak 'u' 'U' nak nak C
+ 151 219 251 ht ht 'i' 'I' ht ht C
+ 152 221 253 si si 'o' 'O' si si C
+ 153 218 250 dle dle 'p' 'P' dle dle C
+ 154 200 232 esc esc '[' '{' esc esc C
+ 155 167 183 gs gs ']' '}' 223 255 C
+ 156 cr cr nl nl cr cr nl nl O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 198 230 soh soh 'a' 'A' soh soh C
+ 159 166 182 dc3 dc3 's' 'S' 217 249 C
+ 160 215 247 eot eot 'd' 'D' eot eot C
+ 161 193 225 ack ack 'f' 'F' ack ack C
+ 162 208 240 bel bel 'g' 'G' bel bel C
+ 163 210 242 bs bs 'h' 'H' bs bs C
+ 164 207 239 nl nl 'j' 'J' nl nl C
+ 165 204 236 vt vt 'k' 'K' vt vt C
+ 166 196 228 ff ff 'l' 'L' ff ff C
+ 167 214 246 nop nop ';' ':' nop nop C
+ 168 164 180 nop nop ''' '"' 220 252 C
+ 169 173 189 nop nop '`' '~' 163 179 C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 '\' '|' fs fs '\' '|' fs fs O
+ 172 209 241 sub sub 'z' 'Z' sub sub C
+ 173 222 254 can can 'x' 'X' can can C
+ 174 211 243 etx etx 'c' 'C' etx etx C
+ 175 205 237 syn syn 'v' 'V' syn syn C
+ 176 201 233 stx stx 'b' 'B' stx stx C
+ 177 212 244 so so 'n' 'N' so so C
+ 178 216 248 cr cr 'm' 'M' cr cr C
+ 179 194 226 nop nop ',' '<' nop nop C
+ 180 192 224 nop nop '.' '>' nop nop C
+ 181 '/' '?' nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl '*' '*' nl nl O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' nul ' ' ' ' ' ' ' ' susp O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 fkey90 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 fkey91 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 fkey92 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 200 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 201 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 202 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 203 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 204 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 205 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 206 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 207 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 208 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 209 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 210 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 211 del '.' '.' '.' '.' '.' boot boot N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl cr cr nl nl O
+ 218 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' '/' '/' '/' '/' '/' '/' O
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 del del fkey81 del fkey61 fkey61 boot boot O
+ 232 slock slock slock slock slock slock slock slock O
+ 233 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 meta fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
diff --git a/share/syscons/keymaps/ua.koi8-u.shift.alt.kbd b/share/syscons/keymaps/ua.koi8-u.shift.alt.kbd
new file mode 100644
index 0000000..82cd95f
--- /dev/null
+++ b/share/syscons/keymaps/ua.koi8-u.shift.alt.kbd
@@ -0,0 +1,254 @@
+# $FreeBSD$
+#
+# keyboard mapping for both Ukrainian and Russian languages, koi8-u charset.
+# by sia@lot.cs.kiev.ua
+# based on ru.koi8-r.kbd by ache@FreeBSD.org
+# some additions by petr@i.am and kunia@i.am
+#
+# it has 'i', 'ye','yi',"g'" at positions of '-','=','\','`';
+# ->`1234567890-=\<-
+# ->­1234567890¦¤§<-
+# Lwin,Rwin=Meta, Menu=Screensaver
+# PrScr=NextScreen, Shift+PrScr=PrevScreen
+# Shift+Insert=paste
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc nop nop esc esc debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '"' 128 128 O
+ 004 '3' '#' nop nop '3' ''' nop nop O
+ 005 '4' '$' nop nop '4' ';' nop nop O
+ 006 '5' '%' nop nop '5' ':' nop nop O
+ 007 '6' '^' rs rs '6' ',' 158 158 O
+ 008 '7' '&' nop nop '7' '.' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' ns ns 166 182 159 159 O
+ 013 '=' '+' nop nop 164 180 nop nop O
+ 014 bs bs del del bs bs 255 255 O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 202 234 145 145 C
+ 017 'w' 'W' etb etb 195 227 151 151 C
+ 018 'e' 'E' enq enq 213 245 133 133 C
+ 019 'r' 'R' dc2 dc2 203 235 146 146 C
+ 020 't' 'T' dc4 dc4 197 229 148 148 C
+ 021 'y' 'Y' em em 206 238 153 153 C
+ 022 'u' 'U' nak nak 199 231 149 149 C
+ 023 'i' 'I' ht ht 219 251 137 137 C
+ 024 'o' 'O' si si 221 253 143 143 C
+ 025 'p' 'P' dle dle 218 250 144 144 C
+ 026 '[' '{' esc esc 200 232 155 155 O
+ 027 ']' '}' gs gs 223 255 157 157 O
+ 028 cr cr nl nl cr cr 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 198 230 129 129 C
+ 031 's' 'S' dc3 dc3 217 249 147 147 C
+ 032 'd' 'D' eot eot 215 247 132 132 C
+ 033 'f' 'F' ack ack 193 225 134 134 C
+ 034 'g' 'G' bel bel 208 240 135 135 C
+ 035 'h' 'H' bs bs 210 242 136 136 C
+ 036 'j' 'J' nl nl 207 239 138 138 C
+ 037 'k' 'K' vt vt 204 236 139 139 C
+ 038 'l' 'L' ff ff 196 228 140 140 C
+ 039 ';' ':' nop nop 214 246 nop nop O
+ 040 ''' '"' nop nop 220 252 nop nop O
+ 041 '`' '~' nop nop 173 189 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 167 183 156 156 O
+ 044 'z' 'Z' sub sub 209 241 154 154 C
+ 045 'x' 'X' can can 222 254 152 152 C
+ 046 'c' 'C' etx etx 211 243 131 131 C
+ 047 'v' 'V' syn syn 205 237 150 150 C
+ 048 'b' 'B' stx stx 201 233 130 130 C
+ 049 'n' 'N' so so 212 244 142 142 C
+ 050 'm' 'M' cr cr 216 248 141 141 C
+ 051 ',' '<' nop nop 194 226 nop nop O
+ 052 '.' '>' nop nop 192 224 nop nop O
+ 053 '/' '?' nop nop 163 179 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl '*' '*' 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' ' ' ' ' ' ' ' ' 160 160 O
+ 058 alock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey48 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 fkey54 '.' del del 255 255 boot halt N
+ 084 alock alock alock alock alock alock alock alock O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl 141 141 138 138 O
+ 090 alock rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' nop nop 175 175 nop nop O
+ 092 nscr pscr debug nop nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 del del fkey81 del fkey61 fkey61 boot pdwn O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 saver fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+ 109 nop nop nop nop nop nop nop nop O
+ 110 nop nop nop nop nop nop nop nop O
+ 111 nop nop nop nop nop nop nop nop O
+ 112 nop nop nop nop nop nop nop nop O
+ 113 nop nop nop nop nop nop nop nop O
+ 114 nop nop nop nop nop nop nop nop O
+ 115 nop nop nop nop nop nop nop nop O
+ 116 nop nop nop nop nop nop nop nop O
+ 117 nop nop nop nop nop nop nop nop O
+ 118 nop nop nop nop nop nop nop nop O
+ 119 nop nop nop nop nop nop nop nop O
+ 120 nop nop nop nop nop nop nop nop O
+ 121 nop nop nop nop nop nop nop nop O
+ 122 nop nop nop nop nop nop nop nop O
+ 123 nop nop nop nop nop nop nop nop O
+ 124 nop nop nop nop nop nop nop nop O
+ 125 nop nop nop nop nop nop nop nop O
+ 126 nop nop nop nop nop nop nop nop O
+ 127 nop nop nop nop nop nop nop nop O
+ 128 nop nop nop nop nop nop nop nop O
+ 129 esc esc nop nop esc esc debug nop O
+ 130 '1' '!' nop nop '1' '!' nop nop O
+ 131 '2' '"' nul nul '2' '@' 128 128 O
+ 132 '3' ''' nop nop '3' '#' nop nop O
+ 133 '4' ';' nop nop '4' '$' nop nop O
+ 134 '5' ':' nop nop '5' '%' nop nop O
+ 135 '6' ',' rs rs '6' '^' 158 158 O
+ 136 '7' '.' nop nop '7' '&' nop nop O
+ 137 '8' '*' nop nop '8' '*' nop nop O
+ 138 '9' '(' nop nop '9' '(' nop nop O
+ 139 '0' ')' nop nop '0' ')' nop nop O
+ 140 166 182 ns ns '-' '_' 159 159 O
+ 141 164 180 nop nop '=' '+' nop nop O
+ 142 bs bs del del bs bs 255 255 O
+ 143 ht btab nop nop ht btab nop nop O
+ 144 202 234 dc1 dc1 'q' 'Q' 145 145 C
+ 145 195 227 etb etb 'w' 'W' 151 151 C
+ 146 213 245 enq enq 'e' 'E' 133 133 C
+ 147 203 235 dc2 dc2 'r' 'R' 146 146 C
+ 148 197 229 dc4 dc4 't' 'T' 148 148 C
+ 149 206 238 em em 'y' 'Y' 153 153 C
+ 150 199 231 nak nak 'u' 'U' 149 149 C
+ 151 219 251 ht ht 'i' 'I' 137 137 C
+ 152 221 253 si si 'o' 'O' 143 143 C
+ 153 218 250 dle dle 'p' 'P' 144 144 C
+ 154 200 232 esc esc '[' '{' 155 155 C
+ 155 223 255 gs gs ']' '}' 157 157 C
+ 156 cr cr nl nl cr cr 138 138 O
+ 157 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 158 198 230 soh soh 'a' 'A' 129 129 C
+ 159 217 249 dc3 dc3 's' 'S' 147 147 C
+ 160 215 247 eot eot 'd' 'D' 132 132 C
+ 161 193 225 ack ack 'f' 'F' 134 134 C
+ 162 208 240 bel bel 'g' 'G' 135 135 C
+ 163 210 242 bs bs 'h' 'H' 136 136 C
+ 164 207 239 nl nl 'j' 'J' 138 138 C
+ 165 204 236 vt vt 'k' 'K' 139 139 C
+ 166 196 228 ff ff 'l' 'L' 140 140 C
+ 167 214 246 nop nop ';' ':' nop nop C
+ 168 220 252 nop nop ''' '"' nop nop C
+ 169 173 189 nop nop '`' '~' nop nop C
+ 170 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 171 167 183 fs fs '\' '|' 156 156 O
+ 172 209 241 sub sub 'z' 'Z' 154 154 C
+ 173 222 254 can can 'x' 'X' 152 152 C
+ 174 211 243 etx etx 'c' 'C' 131 131 C
+ 175 205 237 syn syn 'v' 'V' 150 150 C
+ 176 201 233 stx stx 'b' 'B' 130 130 C
+ 177 212 244 so so 'n' 'N' 142 142 C
+ 178 216 248 cr cr 'm' 'M' 141 141 C
+ 179 194 226 nop nop ',' '<' nop nop C
+ 180 192 224 nop nop '.' '>' nop nop C
+ 181 163 179 nop nop '/' '?' nop nop O
+ 182 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 183 '*' '*' nl nl '*' '*' 138 138 O
+ 184 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 185 ' ' ' ' ' ' ' ' ' ' ' ' 160 160 O
+ 186 alock clock clock clock clock clock clock clock O
+ 187 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 188 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 189 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 190 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 191 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 192 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 193 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 194 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 195 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 196 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 197 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 198 slock slock slock slock slock slock slock slock O
+ 199 fkey49 '7' '7' '7' 183 183 183 183 N
+ 200 fkey50 '8' '8' '8' 184 184 184 184 N
+ 201 fkey51 '9' '9' '9' 185 185 185 185 N
+ 202 fkey52 '-' '-' '-' 173 173 173 173 N
+ 203 fkey53 '4' '4' '4' 180 180 180 180 N
+ 204 fkey48 '5' '5' '5' 181 181 181 181 N
+ 205 fkey55 '6' '6' '6' 182 182 182 182 N
+ 206 fkey56 '+' '+' '+' 171 171 171 171 N
+ 207 fkey57 '1' '1' '1' 177 177 177 177 N
+ 208 fkey58 '2' '2' '2' 178 178 178 178 N
+ 209 fkey59 '3' '3' '3' 179 179 179 179 N
+ 210 fkey60 '0' '0' '0' 176 176 176 176 N
+ 211 del '.' del del 255 255 boot halt N
+ 212 alock alock alock alock alock alock alock alock O
+ 213 nop nop nop nop nop nop nop nop O
+ 214 nop nop nop nop nop nop nop nop O
+ 215 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 216 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 217 cr cr nl nl 141 141 138 138 O
+ 218 alock rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 219 '/' '/' nop nop 175 175 nop nop O
+ 220 nscr pscr debug nop nop nop nop nop O
+ 221 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 222 fkey49 fkey49 fkey69 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 223 fkey50 fkey50 fkey70 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 224 fkey51 fkey51 fkey71 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 225 fkey53 fkey53 fkey73 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 226 fkey55 fkey55 fkey75 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 227 fkey57 fkey57 fkey77 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 228 fkey58 fkey58 fkey78 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 229 fkey59 fkey59 fkey79 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 230 fkey60 paste fkey80 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 231 del del fkey81 del fkey61 fkey61 boot pdwn O
+ 232 slock saver slock saver susp nop susp nop O
+ 233 meta fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 234 meta fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 235 saver fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 236 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/uk.cp850-ctrl.kbd b/share/syscons/keymaps/uk.cp850-ctrl.kbd
new file mode 100644
index 0000000..a60410e
--- /dev/null
+++ b/share/syscons/keymaps/uk.cp850-ctrl.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' 156 nop nop '3' 156 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '`' 170 nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '#' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/uk.cp850.kbd b/share/syscons/keymaps/uk.cp850.kbd
new file mode 100644
index 0000000..5cbbb4f
--- /dev/null
+++ b/share/syscons/keymaps/uk.cp850.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '"' nul nul '2' '"' nul nul O
+ 004 '3' 156 nop nop '3' 156 nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '`' 170 nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '#' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/uk.iso-ctrl.kbd b/share/syscons/keymaps/uk.iso-ctrl.kbd
new file mode 100644
index 0000000..986ec75
--- /dev/null
+++ b/share/syscons/keymaps/uk.iso-ctrl.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '`' '`' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 163 nop nop '#' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '^' '^' rs rs O
+ 008 '7' '&' nop nop '[' '[' esc esc O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop ']' ']' gs gs O
+ 011 '0' ')' nop nop '{' '{' nop nop O
+ 012 '-' '_' us us '|' '|' us us O
+ 013 '=' '+' nop nop '}' '}' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '`' 172 nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '~' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/uk.iso.kbd b/share/syscons/keymaps/uk.iso.kbd
new file mode 100644
index 0000000..adaf9d0
--- /dev/null
+++ b/share/syscons/keymaps/uk.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '`' '`' nop nop O
+ 003 '2' '"' nul nul '@' '@' nul nul O
+ 004 '3' 163 nop nop '#' '#' nop nop O
+ 005 '4' '$' 164 164 '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '^' '^' rs rs O
+ 008 '7' '&' nop nop '[' '[' esc esc O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop ']' ']' gs gs O
+ 011 '0' ')' nop nop '{' '{' nop nop O
+ 012 '-' '_' us us '|' '|' us us O
+ 013 '=' '+' nop nop '}' '}' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 164 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '@' nul nul ''' '@' nul nul O
+ 041 '`' 172 nop nop '|' '|' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '#' '~' nop nop '~' '~' nop nop O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 '\' '|' fs fs '\' '|' fs fs O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.dvorak.kbd b/share/syscons/keymaps/us.dvorak.kbd
new file mode 100644
index 0000000..bc475b2
--- /dev/null
+++ b/share/syscons/keymaps/us.dvorak.kbd
@@ -0,0 +1,123 @@
+# A Dvorak keyboard for US English
+#
+# There are some minor variations, but this seems like the most
+# common layout. I personally use one with three more pairs swapped:
+# esc <-> `~, clock <-> lctrl, and =+ <-> \| (supplied as
+# "us.dvorakx.kbd").
+#
+# -Satoshi
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ''' '"' nop nop ''' '"' nop nop O
+ 017 ',' '<' nop nop ',' '<' nop nop O
+ 018 '.' '>' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 '/' '?' nop nop '/' '?' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 ';' ':' nop nop ';' ':' nop nop O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.dvorakl.kbd b/share/syscons/keymaps/us.dvorakl.kbd
new file mode 100644
index 0000000..bc44397
--- /dev/null
+++ b/share/syscons/keymaps/us.dvorakl.kbd
@@ -0,0 +1,116 @@
+# A left handed Dvorak keyboard for US English
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '[' '{' esc esc '[' '{' esc esc O
+ 003 ']' '}' gs gs ']' '}' gs gs O
+ 004 '/' '?' nop nop '/' '?' nop nop O
+ 005 'p' 'P' dle dle 'p' 'P' dle dle C
+ 006 'f' 'F' ack ack 'f' 'F' ack ack C
+ 007 'm' 'M' cr cr 'm' 'M' cr cr C
+ 008 'l' 'L' ff ff 'l' 'L' ff ff C
+ 009 'j' 'J' nl nl 'j' 'J' nl nl C
+ 010 '4' '$' nop nop '4' '$' nop nop O
+ 011 '3' '#' nop nop '3' '#' nop nop O
+ 012 '2' '@' nul nul '2' '@' nul nul O
+ 013 '1' '!' nop nop '1' '!' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ';' ':' nop nop ';' ':' nop nop O
+ 017 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 018 'b' 'B' stx stx 'b' 'B' stx stx C
+ 019 'y' 'Y' em em 'y' 'Y' em em C
+ 020 'u' 'U' nak nak 'u' 'U' nak nak C
+ 021 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 022 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 023 'o' 'O' si si 'o' 'O' si si C
+ 024 '.' '>' nop nop '.' '>' nop nop O
+ 025 '6' '^' rs rs '6' '^' rs rs O
+ 026 '5' '%' nop nop '5' '%' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 '-' '_' us us '-' '_' us us O
+ 031 'k' 'K' vt vt 'k' 'K' vt vt C
+ 032 'c' 'C' etx etx 'c' 'C' etx etx C
+ 033 'd' 'D' eot eot 'd' 'D' eot eot C
+ 034 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'e' 'E' enq enq 'e' 'E' enq enq C
+ 037 'a' 'A' soh soh 'a' 'A' soh soh C
+ 038 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 039 '8' '*' nop nop '8' '*' nop nop O
+ 040 '7' '&' nop nop '7' '&' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 ''' '"' nop nop ''' '"' nop nop O
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'g' 'G' bel bel 'g' 'G' bel bel C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'w' 'W' etb etb 'w' 'W' etb etb C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'i' 'I' ht ht 'i' 'I' ht ht C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '0' ')' nop nop '0' ')' nop nop O
+ 053 '9' '(' nop nop '9' '(' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.dvorakr.kbd b/share/syscons/keymaps/us.dvorakr.kbd
new file mode 100644
index 0000000..94abba8
--- /dev/null
+++ b/share/syscons/keymaps/us.dvorakr.kbd
@@ -0,0 +1,116 @@
+# A right handed Dvorak keyboard for US English
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 'j' 'J' nl nl 'j' 'J' nl nl C
+ 007 'l' 'L' ff ff 'l' 'L' ff ff C
+ 008 'm' 'M' cr cr 'm' 'M' cr cr C
+ 009 'f' 'F' ack ack 'f' 'F' ack ack C
+ 010 'p' 'P' dle dle 'p' 'P' dle dle C
+ 011 '/' '?' nop nop '/' '?' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 '5' '%' nop nop '5' '%' nop nop O
+ 017 '6' '^' rs rs '6' '^' rs rs O
+ 018 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 019 '.' '>' nop nop '.' '>' nop nop O
+ 020 'o' 'O' si si 'o' 'O' si si C
+ 021 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 022 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 023 'u' 'U' nak nak 'u' 'U' nak nak C
+ 024 'y' 'Y' em em 'y' 'Y' em em C
+ 025 'b' 'B' stx stx 'b' 'B' stx stx C
+ 026 ';' ':' nop nop ';' ':' nop nop O
+ 027 '=' '+' nop nop '=' '+' nop nop O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 '7' '&' nop nop '7' '&' nop nop O
+ 031 '8' '*' nop nop '8' '*' nop nop O
+ 032 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 033 'a' 'A' soh soh 'a' 'A' soh soh C
+ 034 'e' 'E' enq enq 'e' 'E' enq enq C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 037 'd' 'D' eot eot 'd' 'D' eot eot C
+ 038 'c' 'C' etx etx 'c' 'C' etx etx C
+ 039 'k' 'K' vt vt 'k' 'K' vt vt C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 '9' '(' nop nop '9' '(' nop nop O
+ 045 '0' ')' nop nop '0' ')' nop nop O
+ 046 'x' 'X' can can 'x' 'X' can can C
+ 047 ',' '<' nop nop ',' '<' nop nop O
+ 048 'i' 'I' ht ht 'i' 'I' ht ht C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'w' 'W' etb etb 'w' 'W' etb etb C
+ 051 'v' 'V' syn syn 'v' 'V' syn syn C
+ 052 'g' 'G' bel bel 'g' 'G' bel bel C
+ 053 ''' '"' nop nop ''' '"' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.dvorakx.kbd b/share/syscons/keymaps/us.dvorakx.kbd
new file mode 100644
index 0000000..18f05fe
--- /dev/null
+++ b/share/syscons/keymaps/us.dvorakx.kbd
@@ -0,0 +1,121 @@
+# A Dvorak keyboard for US English
+#
+# This is the version that I use. For a more "common" (or so I
+# think) layout, try "us.dvorak.kbd".
+#
+# -Satoshi
+#
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 '`' '~' nop nop '`' '~' nop nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '[' '{' esc esc '[' '{' esc esc O
+ 013 ']' '}' gs gs ']' '}' gs gs O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 ''' '"' nop nop ''' '"' nop nop O
+ 017 ',' '<' nop nop ',' '<' nop nop O
+ 018 '.' '>' nop nop '.' '>' nop nop O
+ 019 'p' 'P' dle dle 'p' 'P' dle dle C
+ 020 'y' 'Y' em em 'y' 'Y' em em C
+ 021 'f' 'F' ack ack 'f' 'F' ack ack C
+ 022 'g' 'G' bel bel 'g' 'G' bel bel C
+ 023 'c' 'C' etx etx 'c' 'C' etx etx C
+ 024 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 025 'l' 'L' ff ff 'l' 'L' ff ff C
+ 026 '/' '?' nop nop '/' '?' nop nop O
+ 027 '\' '|' fs fs '\' '|' fs fs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 clock clock clock clock clock clock clock clock O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 'o' 'O' si si 'o' 'O' si si C
+ 032 'e' 'E' enq enq 'e' 'E' enq enq C
+ 033 'u' 'U' nak nak 'u' 'U' nak nak C
+ 034 'i' 'I' ht ht 'i' 'I' ht ht C
+ 035 'd' 'D' eot eot 'd' 'D' eot eot C
+ 036 'h' 'H' bs bs 'h' 'H' bs bs C
+ 037 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 038 'n' 'N' so so 'n' 'N' so so C
+ 039 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 040 '-' '_' us us '-' '_' us us O
+ 041 esc esc nop nop esc esc debug nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '=' '+' nop nop '=' '+' nop nop O
+ 044 ';' ':' nop nop ';' ':' nop nop O
+ 045 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 046 'j' 'J' nl nl 'j' 'J' nl nl C
+ 047 'k' 'K' vt vt 'k' 'K' vt vt C
+ 048 'x' 'X' can can 'x' 'X' can can C
+ 049 'b' 'B' stx stx 'b' 'B' stx stx C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 'w' 'W' etb etb 'w' 'W' etb etb C
+ 052 'v' 'V' syn syn 'v' 'V' syn syn C
+ 053 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.emacs.kbd b/share/syscons/keymaps/us.emacs.kbd
new file mode 100644
index 0000000..553a617
--- /dev/null
+++ b/share/syscons/keymaps/us.emacs.kbd
@@ -0,0 +1,111 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc esc esc O
+ 002 '1' '!' nop nop 177 161 nop nop O
+ 003 '2' '@' nul nul 178 192 128 128 O
+ 004 '3' '#' nop nop 179 163 nop nop O
+ 005 '4' '$' nop nop 180 164 nop nop O
+ 006 '5' '%' nop nop 181 165 nop nop O
+ 007 '6' '^' rs rs 182 222 158 158 O
+ 008 '7' '&' nop nop 183 166 nop nop O
+ 009 '8' '*' nop nop 184 170 nop nop O
+ 010 '9' '(' nop nop 185 168 nop nop O
+ 011 '0' ')' nop nop 176 169 nop nop O
+ 012 '-' '_' us us 173 223 159 159 O
+ 013 '=' '+' nop nop 189 171 nop nop O
+ 014 del del bs bs 255 255 136 136 O
+ 015 ht ht ht ht 137 137 137 137 O
+ 016 'q' 'Q' dc1 dc1 241 209 145 145 C
+ 017 'w' 'W' etb etb 247 215 151 151 C
+ 018 'e' 'E' enq enq 229 197 133 133 C
+ 019 'r' 'R' dc2 dc2 242 210 146 146 C
+ 020 't' 'T' dc4 dc4 244 212 148 148 C
+ 021 'y' 'Y' em em 249 217 153 153 C
+ 022 'u' 'U' nak nak 245 213 149 149 C
+ 023 'i' 'I' ht ht 233 201 137 137 C
+ 024 'o' 'O' si si 239 207 143 143 C
+ 025 'p' 'P' dle dle 240 208 144 144 C
+ 026 '[' '{' esc esc 219 251 155 155 O
+ 027 ']' '}' gs gs 221 253 157 157 O
+ 028 cr cr nl nl 141 141 138 138 O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 225 193 129 129 C
+ 031 's' 'S' dc3 dc3 243 211 147 147 C
+ 032 'd' 'D' eot eot 228 196 132 132 C
+ 033 'f' 'F' ack ack 230 198 134 134 C
+ 034 'g' 'G' bel bel 231 199 135 135 C
+ 035 'h' 'H' bs bs 232 200 136 136 C
+ 036 'j' 'J' nl nl 234 202 138 138 C
+ 037 'k' 'K' vt vt 235 203 139 139 C
+ 038 'l' 'L' ff ff 236 204 140 140 C
+ 039 ';' ':' nop nop 187 186 nop nop O
+ 040 ''' '"' nop nop 167 162 nop nop O
+ 041 '`' '~' nop nop 224 254 nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs 220 252 156 156 O
+ 044 'z' 'Z' sub sub 250 218 154 154 C
+ 045 'x' 'X' can can 248 216 152 152 C
+ 046 'c' 'C' etx etx 227 195 131 131 C
+ 047 'v' 'V' syn syn 246 214 150 150 C
+ 048 'b' 'B' stx stx 226 194 130 130 C
+ 049 'n' 'N' so so 238 206 142 142 C
+ 050 'm' 'M' cr cr 237 205 141 141 C
+ 051 ',' '<' nop nop 172 188 nop nop O
+ 052 '.' '>' nop nop 174 190 nop nop O
+ 053 '/' '?' nop nop 175 191 nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' nl nl 170 170 138 138 O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul nul 160 160 128 128 O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' 183 183 183 183 N
+ 072 fkey50 '8' '8' '8' 184 184 184 184 N
+ 073 fkey51 '9' '9' '9' 185 185 185 185 N
+ 074 fkey52 '-' '-' '-' 173 173 173 173 N
+ 075 fkey53 '4' '4' '4' 180 180 180 180 N
+ 076 fkey54 '5' '5' '5' 181 181 181 181 N
+ 077 fkey55 '6' '6' '6' 182 182 182 182 N
+ 078 fkey56 '+' '+' '+' 171 171 171 171 N
+ 079 fkey57 '1' '1' '1' 177 177 177 177 N
+ 080 fkey58 '2' '2' '2' 178 178 178 178 N
+ 081 fkey59 '3' '3' '3' 179 179 179 179 N
+ 082 fkey60 '0' '0' '0' 176 176 176 176 N
+ 083 nop '.' '.' '.' 174 174 174 174 N
+ 084 us us us us us us us us O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 nop cr cr cr 141 141 141 141 N
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 nop '/' '/' '/' 175 175 175 175 N
+ 092 nop '*' '*' '*' 170 170 170 170 N
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 '7' '7' '7' 183 183 183 183 N
+ 095 fkey50 '8' '8' '8' 184 184 184 184 N
+ 096 fkey51 '9' '9' '9' 185 185 185 185 N
+ 097 fkey53 '4' '4' '4' 180 180 180 180 N
+ 098 fkey55 '6' '6' '6' 182 182 182 182 N
+ 099 fkey57 '1' '1' '1' 177 177 177 177 N
+ 100 fkey58 '2' '2' '2' 178 178 178 178 N
+ 101 fkey59 '3' '3' '3' 179 179 179 179 N
+ 102 fkey60 '0' '0' '0' 176 176 176 176 N
+ 103 fkey54 '5' '5' '5' 181 181 181 181 N
+ 104 slock slock slock slock slock slock slock slock O
+ 105 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.iso.acc.kbd b/share/syscons/keymaps/us.iso.acc.kbd
new file mode 100644
index 0000000..a7faa51
--- /dev/null
+++ b/share/syscons/keymaps/us.iso.acc.kbd
@@ -0,0 +1,139 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug debug O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' dcir rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' drin nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nscr nscr ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop dacu duml nop nop O
+ 041 '`' '~' nop nop dgra dtil nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop dced '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul nul ' ' ' ' susp susp O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr nscr nop nop debug debug debug debug O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 saver saver susp susp nop nop susp susp O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
+
+ dgra '`' ( 'a' 224 ) ( 'A' 192 ) ( 'e' 232 ) ( 'E' 200 )
+ ( 'i' 236 ) ( 'I' 204 ) ( 'o' 242 ) ( 'O' 210 )
+ ( 'u' 249 ) ( 'U' 217 )
+ dacu 180 ( 'a' 225 ) ( 'A' 193 ) ( 'e' 233 ) ( 'E' 201 )
+ ( 'i' 237 ) ( 'I' 205 ) ( 'o' 243 ) ( 'O' 211 )
+ ( 'u' 250 ) ( 'U' 218 ) ( 'y' 253 ) ( 'Y' 221 )
+ dcir '^' ( 'a' 226 ) ( 'A' 194 ) ( 'e' 234 ) ( 'E' 202 )
+ ( 'i' 238 ) ( 'I' 206 ) ( 'o' 244 ) ( 'O' 212 )
+ ( 'u' 251 ) ( 'U' 219 )
+ dtil '~' ( 'a' 227 ) ( 'A' 195 ) ( 'n' 241 ) ( 'N' 209 )
+ ( 'o' 245 ) ( 'O' 213 )
+ dmac 000
+ dbre 000
+ ddot 000
+ duml 168 ( 'a' 228 ) ( 'A' 196 ) ( 'e' 235 ) ( 'E' 203 )
+ ( 'i' 239 ) ( 'I' 207 ) ( 'o' 246 ) ( 'O' 214 )
+ ( 'u' 252 ) ( 'U' 220 ) ( 'y' 255 )
+ dsla 000
+ drin 176 ( 'a' 229 ) ( 'A' 197 )
+ dced 184 ( 'c' 231 ) ( 'C' 199 )
+ dapo 000
+ ddac 000
+ dogo 000
+ dcar 000
diff --git a/share/syscons/keymaps/us.iso.kbd b/share/syscons/keymaps/us.iso.kbd
new file mode 100644
index 0000000..e213392
--- /dev/null
+++ b/share/syscons/keymaps/us.iso.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 clock clock clock clock clock clock clock clock O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.pc-ctrl.kbd b/share/syscons/keymaps/us.pc-ctrl.kbd
new file mode 100644
index 0000000..58b66f3
--- /dev/null
+++ b/share/syscons/keymaps/us.pc-ctrl.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 esc esc esc esc esc esc debug esc O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 bs bs del del bs bs del del O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 '`' '~' nop nop '`' '~' nop nop O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 del '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 fkey61 fkey61 fkey61 fkey61 fkey61 fkey61 boot fkey61 O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/keymaps/us.unix.kbd b/share/syscons/keymaps/us.unix.kbd
new file mode 100644
index 0000000..b883eab
--- /dev/null
+++ b/share/syscons/keymaps/us.unix.kbd
@@ -0,0 +1,114 @@
+# $FreeBSD$
+# alt
+# scan cntrl alt alt cntrl lock
+# code base shift cntrl shift alt shift cntrl shift state
+# ------------------------------------------------------------------
+ 000 nop nop nop nop nop nop nop nop O
+ 001 '`' '~' nop nop '`' '~' debug nop O
+ 002 '1' '!' nop nop '1' '!' nop nop O
+ 003 '2' '@' nul nul '2' '@' nul nul O
+ 004 '3' '#' nop nop '3' '#' nop nop O
+ 005 '4' '$' nop nop '4' '$' nop nop O
+ 006 '5' '%' nop nop '5' '%' nop nop O
+ 007 '6' '^' rs rs '6' '^' rs rs O
+ 008 '7' '&' nop nop '7' '&' nop nop O
+ 009 '8' '*' nop nop '8' '*' nop nop O
+ 010 '9' '(' nop nop '9' '(' nop nop O
+ 011 '0' ')' nop nop '0' ')' nop nop O
+ 012 '-' '_' us us '-' '_' us us O
+ 013 '=' '+' nop nop '=' '+' nop nop O
+ 014 del del bs bs del del bs bs O
+ 015 ht btab nop nop ht btab nop nop O
+ 016 'q' 'Q' dc1 dc1 'q' 'Q' dc1 dc1 C
+ 017 'w' 'W' etb etb 'w' 'W' etb etb C
+ 018 'e' 'E' enq enq 'e' 'E' enq enq C
+ 019 'r' 'R' dc2 dc2 'r' 'R' dc2 dc2 C
+ 020 't' 'T' dc4 dc4 't' 'T' dc4 dc4 C
+ 021 'y' 'Y' em em 'y' 'Y' em em C
+ 022 'u' 'U' nak nak 'u' 'U' nak nak C
+ 023 'i' 'I' ht ht 'i' 'I' ht ht C
+ 024 'o' 'O' si si 'o' 'O' si si C
+ 025 'p' 'P' dle dle 'p' 'P' dle dle C
+ 026 '[' '{' esc esc '[' '{' esc esc O
+ 027 ']' '}' gs gs ']' '}' gs gs O
+ 028 cr cr nl nl cr cr nl nl O
+ 029 clock clock clock clock clock clock clock clock O
+ 030 'a' 'A' soh soh 'a' 'A' soh soh C
+ 031 's' 'S' dc3 dc3 's' 'S' dc3 dc3 C
+ 032 'd' 'D' eot eot 'd' 'D' eot eot C
+ 033 'f' 'F' ack ack 'f' 'F' ack ack C
+ 034 'g' 'G' bel bel 'g' 'G' bel bel C
+ 035 'h' 'H' bs bs 'h' 'H' bs bs C
+ 036 'j' 'J' nl nl 'j' 'J' nl nl C
+ 037 'k' 'K' vt vt 'k' 'K' vt vt C
+ 038 'l' 'L' ff ff 'l' 'L' ff ff C
+ 039 ';' ':' nop nop ';' ':' nop nop O
+ 040 ''' '"' nop nop ''' '"' nop nop O
+ 041 esc esc esc esc esc esc debug esc O
+ 042 lshift lshift lshift lshift lshift lshift lshift lshift O
+ 043 '\' '|' fs fs '\' '|' fs fs O
+ 044 'z' 'Z' sub sub 'z' 'Z' sub sub C
+ 045 'x' 'X' can can 'x' 'X' can can C
+ 046 'c' 'C' etx etx 'c' 'C' etx etx C
+ 047 'v' 'V' syn syn 'v' 'V' syn syn C
+ 048 'b' 'B' stx stx 'b' 'B' stx stx C
+ 049 'n' 'N' so so 'n' 'N' so so C
+ 050 'm' 'M' cr cr 'm' 'M' cr cr C
+ 051 ',' '<' nop nop ',' '<' nop nop O
+ 052 '.' '>' nop nop '.' '>' nop nop O
+ 053 '/' '?' nop nop '/' '?' nop nop O
+ 054 rshift rshift rshift rshift rshift rshift rshift rshift O
+ 055 '*' '*' '*' '*' '*' '*' '*' '*' O
+ 056 lalt lalt lalt lalt lalt lalt lalt lalt O
+ 057 ' ' ' ' nul ' ' ' ' ' ' susp ' ' O
+ 058 lctrl lctrl lctrl lctrl lctrl lctrl lctrl lctrl O
+ 059 fkey01 fkey13 fkey25 fkey37 scr01 scr11 scr01 scr11 O
+ 060 fkey02 fkey14 fkey26 fkey38 scr02 scr12 scr02 scr12 O
+ 061 fkey03 fkey15 fkey27 fkey39 scr03 scr13 scr03 scr13 O
+ 062 fkey04 fkey16 fkey28 fkey40 scr04 scr14 scr04 scr14 O
+ 063 fkey05 fkey17 fkey29 fkey41 scr05 scr15 scr05 scr15 O
+ 064 fkey06 fkey18 fkey30 fkey42 scr06 scr16 scr06 scr16 O
+ 065 fkey07 fkey19 fkey31 fkey43 scr07 scr07 scr07 scr07 O
+ 066 fkey08 fkey20 fkey32 fkey44 scr08 scr08 scr08 scr08 O
+ 067 fkey09 fkey21 fkey33 fkey45 scr09 scr09 scr09 scr09 O
+ 068 fkey10 fkey22 fkey34 fkey46 scr10 scr10 scr10 scr10 O
+ 069 nlock nlock nlock nlock nlock nlock nlock nlock O
+ 070 slock slock slock slock slock slock slock slock O
+ 071 fkey49 '7' '7' '7' '7' '7' '7' '7' N
+ 072 fkey50 '8' '8' '8' '8' '8' '8' '8' N
+ 073 fkey51 '9' '9' '9' '9' '9' '9' '9' N
+ 074 fkey52 '-' '-' '-' '-' '-' '-' '-' N
+ 075 fkey53 '4' '4' '4' '4' '4' '4' '4' N
+ 076 fkey54 '5' '5' '5' '5' '5' '5' '5' N
+ 077 fkey55 '6' '6' '6' '6' '6' '6' '6' N
+ 078 fkey56 '+' '+' '+' '+' '+' '+' '+' N
+ 079 fkey57 '1' '1' '1' '1' '1' '1' '1' N
+ 080 fkey58 '2' '2' '2' '2' '2' '2' '2' N
+ 081 fkey59 '3' '3' '3' '3' '3' '3' '3' N
+ 082 fkey60 '0' '0' '0' '0' '0' '0' '0' N
+ 083 bs '.' '.' '.' '.' '.' boot boot N
+ 084 nop nop nop nop nop nop nop nop O
+ 085 nop nop nop nop nop nop nop nop O
+ 086 nop nop nop nop nop nop nop nop O
+ 087 fkey11 fkey23 fkey35 fkey47 scr11 scr11 scr11 scr11 O
+ 088 fkey12 fkey24 fkey36 fkey48 scr12 scr12 scr12 scr12 O
+ 089 cr cr nl nl cr cr nl nl O
+ 090 rctrl rctrl rctrl rctrl rctrl rctrl rctrl rctrl O
+ 091 '/' '/' '/' '/' '/' '/' '/' '/' N
+ 092 nscr pscr debug debug nop nop nop nop O
+ 093 ralt ralt ralt ralt ralt ralt ralt ralt O
+ 094 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 fkey49 O
+ 095 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 fkey50 O
+ 096 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 fkey51 O
+ 097 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 fkey53 O
+ 098 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 fkey55 O
+ 099 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 fkey57 O
+ 100 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 fkey58 O
+ 101 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 fkey59 O
+ 102 fkey60 paste fkey60 fkey60 fkey60 fkey60 fkey60 fkey60 O
+ 103 bs bs fkey61 fkey61 bs bs boot boot O
+ 104 slock saver slock saver susp nop susp nop O
+ 105 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 fkey62 O
+ 106 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 fkey63 O
+ 107 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 fkey64 O
+ 108 nop nop nop nop nop nop nop nop O
diff --git a/share/syscons/scrnmaps/Makefile b/share/syscons/scrnmaps/Makefile
new file mode 100644
index 0000000..1c5dc88
--- /dev/null
+++ b/share/syscons/scrnmaps/Makefile
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+SCRMAPS = armscii8-2haik8.scm \
+ iso-8859-1_to_cp437.scm iso-8859-4_for_vga9.scm \
+ iso-8859-7_to_cp437.scm \
+ koi8-r2cp866.scm koi8-u2cp866u.scm \
+ us-ascii_to_cp437.scm
+
+SCRMAPS_MK = ${SCRMAPS:R:S/$/.mk/g}
+CLEANFILES+= ${SCRMAPS_MK} ${SCRMAPS}
+
+FILES= ${SCRMAPS}
+FILESDIR= ${SHAREDIR}/syscons/scrnmaps
+
+build-tools: ${SCRMAPS_MK}
+
+${SCRMAPS}: ${.TARGET:R}.mk
+ ./${.TARGET:R}.mk ${.TARGET:R}.tmp
+ uuencode ${.TARGET:R}.tmp ${.TARGET:R} > ${.TARGET}
+ rm -f ${.TARGET:R}.tmp
+
+${SCRMAPS_MK}: ${.TARGET:R} mkscrfil.c
+ ${CC} ${CFLAGS} -I${.CURDIR} -DFIL=\"${.TARGET:R}\" ${LDFLAGS} \
+ -o ${.TARGET} ${.CURDIR}/mkscrfil.c
+
+.include <bsd.prog.mk>
diff --git a/share/syscons/scrnmaps/armscii8-2haik8 b/share/syscons/scrnmaps/armscii8-2haik8
new file mode 100644
index 0000000..f6bc35d
--- /dev/null
+++ b/share/syscons/scrnmaps/armscii8-2haik8
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2002-2003 by Vahe Khachikyan Konstanz, Germany.
+ * 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 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.
+ *
+ *
+ * $FreeBSD$
+ */
+
+scrmap_t scrmap = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0x00
+};
diff --git a/share/syscons/scrnmaps/iso-8859-1_to_cp437 b/share/syscons/scrnmaps/iso-8859-1_to_cp437
new file mode 100644
index 0000000..c18e62f
--- /dev/null
+++ b/share/syscons/scrnmaps/iso-8859-1_to_cp437
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 1996 Joerg Wunsch, Dresden.
+ *
+ * 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 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.
+ *
+ * $FreeBSD$
+ */
+
+scrmap_t scrmap = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0xad, 0x9b, 0x9c, 0x00, 0x9d, 0x7c, 0x00,
+ 0x22, 0x43, 0x61, 0xae, 0x7e, 0x00, 0x52, 0x00,
+ 0xf8, 0xf1, 0xfd, 0x33, 0x27, 0xe6, 0x00, 0xfa,
+ 0x2c, 0x31, 0x6f, 0xaf, 0xac, 0xab, 0x00, 0xa8,
+ 0x41, 0x41, 0x41, 0x41, 0x8e, 0x8f, 0x92, 0x80,
+ 0x45, 0x90, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
+ 0x81, 0xa5, 0x4f, 0x4f, 0x4f, 0x4f, 0x99, 0x4f,
+ 0x4f, 0x55, 0x55, 0x55, 0x9a, 0x59, 0x50, 0xe1,
+ 0x44, 0xa0, 0x83, 0x61, 0x84, 0x86, 0x91, 0x87,
+ 0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b,
+ 0x64, 0xa4, 0x95, 0xa2, 0x93, 0x6f, 0x94, 0x6f,
+ 0x6f, 0x97, 0xa3, 0x96, 0x81, 0x79, 0x70, 0x98
+};
diff --git a/share/syscons/scrnmaps/iso-8859-4_for_vga9 b/share/syscons/scrnmaps/iso-8859-4_for_vga9
new file mode 100644
index 0000000..e096bdc
--- /dev/null
+++ b/share/syscons/scrnmaps/iso-8859-4_for_vga9
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 1998 by Ricardas Cepas.
+ * 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 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.
+ *
+ * $FreeBSD$
+ */
+
+/* exchange 0x80-0x9F and 0xC0-0xDF due to VGA hardware limitation
+ * - eight charcell's column can be extended to ningth in 9 pixel wide mode
+ * only at 0xC0-0xDF area.
+*/
+
+scrmap_t scrmap = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 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,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
+ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
+ 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
+ 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
+ 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
+ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
+ 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
+ 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
+ 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
+ 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
+ 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
+ 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
+ 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
+};
diff --git a/share/syscons/scrnmaps/iso-8859-7_to_cp437 b/share/syscons/scrnmaps/iso-8859-7_to_cp437
new file mode 100644
index 0000000..12c467a
--- /dev/null
+++ b/share/syscons/scrnmaps/iso-8859-7_to_cp437
@@ -0,0 +1,38 @@
+/*
+ * $FreeBSD$
+ */
+
+scrmap_t scrmap = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xff, 0x27, 0x27, 0x9c, 0x00, 0x00, 0x7c, 0x26,
+ 0x00, 0x43, 0x00, 0xae, 0xaa, 0x2d, 0x00, 0x2d,
+ 0xf8, 0xf1, 0xfd, 0x33, 0x00, 0x00, 0x8f, 0xfa,
+ 0x90, 0x48, 0x49, 0xaf, 0x4f, 0xab, 0x59, 0x56,
+ 0x8c, 0x41, 0x42, 0xe2, 0x44, 0x45, 0x5a, 0x48,
+ 0xe9, 0x49, 0x4b, 0x4c, 0x4d, 0x4e, 0xf0, 0x4f,
+ 0xef, 0x50, 0x00, 0xe4, 0x54, 0x59, 0xe8, 0x58,
+ 0x80, 0xea, 0x49, 0x9a, 0xa0, 0x82, 0xa4, 0xa1,
+ 0x98, 0xe0, 0xe1, 0x67, 0xeb, 0xee, 0x7a, 0x6e,
+ 0xe9, 0x69, 0x6b, 0x6c, 0xe6, 0x76, 0x6a, 0x6f,
+ 0xe3, 0x70, 0x73, 0xe5, 0xe7, 0x75, 0xed, 0x78,
+ 0x87, 0x77, 0x8b, 0x98, 0xa2, 0xa3, 0x77, 0x00
+};
diff --git a/share/syscons/scrnmaps/koi8-r2cp866 b/share/syscons/scrnmaps/koi8-r2cp866
new file mode 100644
index 0000000..15f2847
--- /dev/null
+++ b/share/syscons/scrnmaps/koi8-r2cp866
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 1994-2001 by Andrey A. Chernov, Moscow, Russia.
+ * 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 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.
+ *
+ * $FreeBSD$
+ */
+
+scrmap_t scrmap = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0xc4, 0xb3, 0xda, 0xbf, 0xc0, 0xd9, 0xc3, 0xb4,
+ 0xc2, 0xc1, 0xc5, 0xdf, 0xdc, 0xdb, 0xdd, 0xde,
+ 0xb0, 0xb1, 0xb2, 0xf4, 0xfe, 0xf9, 0xfb, 0xf7,
+ 0xf3, 0xf2, 0xff, 0xf5, 0xf8, 0xfd, 0xfa, 0xf6,
+ 0xcd, 0xba, 0xd5, 0xf1, 0xd6, 0xc9, 0xb8, 0xb7,
+ 0xbb, 0xd4, 0xd3, 0xc8, 0xbe, 0xbd, 0xbc, 0xc6,
+ 0xc7, 0xcc, 0xb5, 0xf0, 0xb6, 0xb9, 0xd1, 0xd2,
+ 0xcb, 0xcf, 0xd0, 0xca, 0xd8, 0xd7, 0xce, 0xfc,
+ 0xee, 0xa0, 0xa1, 0xe6, 0xa4, 0xa5, 0xe4, 0xa3,
+ 0xe5, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae,
+ 0xaf, 0xef, 0xe0, 0xe1, 0xe2, 0xe3, 0xa6, 0xa2,
+ 0xec, 0xeb, 0xa7, 0xe8, 0xed, 0xe9, 0xe7, 0xea,
+ 0x9e, 0x80, 0x81, 0x96, 0x84, 0x85, 0x94, 0x83,
+ 0x95, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e,
+ 0x8f, 0x9f, 0x90, 0x91, 0x92, 0x93, 0x86, 0x82,
+ 0x9c, 0x9b, 0x87, 0x98, 0x9d, 0x99, 0x97, 0x9a
+};
diff --git a/share/syscons/scrnmaps/koi8-u2cp866u b/share/syscons/scrnmaps/koi8-u2cp866u
new file mode 100644
index 0000000..7fd86ad
--- /dev/null
+++ b/share/syscons/scrnmaps/koi8-u2cp866u
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 1996 by Igor Sviridov <sia@lot.cs.kiev.ua>
+ * Copyright (C) 1999 by Oleg Cherevko <olwi@icyb.kiev.ua>
+ * Adrey Gapon <andriy@icyb.kiev.ua>
+ * 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 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.
+ *
+ * $FreeBSD$
+ */
+
+scrmap_t scrmap = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0xc4, 0xb3, 0xda, 0xbf, 0xc0, 0xd9, 0xc3, 0xb4,
+ 0xc2, 0xc1, 0xc5, 0xdf, 0xdc, 0xdb, 0xdd, 0xde,
+ 0xb0, 0xb1, 0xb2, 0xd1, 0xfe, 0xd6, 0xfb, 0xd7,
+ 0xb7, 0xb8, 0xff, 0xd2, 0xb6, 0xfd, 0xfa, 0xbd,
+ 0xcd, 0xba, 0xd5, 0xf1, 0xf5, 0xc9, 0xf7, 0xf9,
+ 0xbb, 0xd4, 0xd3, 0xc8, 0xbe, 0xf3, 0xbc, 0xc6,
+ 0xc7, 0xcc, 0xb5, 0xf0, 0xf4, 0xb9, 0xf6, 0xf8,
+ 0xcb, 0xcf, 0xd0, 0xca, 0xd8, 0xf2, 0xce, 0xfc,
+ 0xee, 0xa0, 0xa1, 0xe6, 0xa4, 0xa5, 0xe4, 0xa3,
+ 0xe5, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae,
+ 0xaf, 0xef, 0xe0, 0xe1, 0xe2, 0xe3, 0xa6, 0xa2,
+ 0xec, 0xeb, 0xa7, 0xe8, 0xed, 0xe9, 0xe7, 0xea,
+ 0x9e, 0x80, 0x81, 0x96, 0x84, 0x85, 0x94, 0x83,
+ 0x95, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e,
+ 0x8f, 0x9f, 0x90, 0x91, 0x92, 0x93, 0x86, 0x82,
+ 0x9c, 0x9b, 0x87, 0x98, 0x9d, 0x99, 0x97, 0x9a
+};
diff --git a/share/syscons/scrnmaps/mkscrfil.c b/share/syscons/scrnmaps/mkscrfil.c
new file mode 100644
index 0000000..c981b23
--- /dev/null
+++ b/share/syscons/scrnmaps/mkscrfil.c
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 1994 by Andrew A. Chernov, Moscow, Russia.
+ * 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 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.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/ioctl.h>
+#include <sys/consio.h>
+#include <stdio.h>
+
+#include FIL
+
+int main(int argc, char **argv)
+{
+ FILE *fd;
+
+ if (argc == 2) {
+ if ((fd = fopen(argv[1], "w")) == NULL) {
+ perror(argv[1]);
+ return 1;
+ }
+ fwrite(&scrmap, sizeof(scrmap_t), 1, fd);
+ fclose(fd);
+ return 0;
+ }
+ else {
+ fprintf(stderr, "usage: %s <mapfile>\n", argv[0]);
+ return 1;
+ }
+}
diff --git a/share/syscons/scrnmaps/us-ascii_to_cp437 b/share/syscons/scrnmaps/us-ascii_to_cp437
new file mode 100644
index 0000000..e1155aa
--- /dev/null
+++ b/share/syscons/scrnmaps/us-ascii_to_cp437
@@ -0,0 +1,38 @@
+/*
+ * $FreeBSD$
+ */
+
+scrmap_t scrmap = {
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
diff --git a/share/tabset/3101.uu b/share/tabset/3101.uu
new file mode 100644
index 0000000..5fef678
--- /dev/null
+++ b/share/tabset/3101.uu
@@ -0,0 +1,6 @@
+begin 644 3101
+M&T@@("`@("`@(!LP("`@("`@("`;,"`@("`@("`@&S`@("`@("`@(!LP("`@
+M("`@("`;,"`@("`@("`@&S`@("`@("`@(!LP("`@("`@("`;,"`@("`@("`@
+#&S`*
+`
+end
diff --git a/share/tabset/9837.uu b/share/tabset/9837.uu
new file mode 100644
index 0000000..b5b9941
--- /dev/null
+++ b/share/tabset/9837.uu
@@ -0,0 +1,7 @@
+begin 644 9837
+M&S,-("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@
+M("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@
+M(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@
+3("`@("`@&S$@("`@("`@(!LQ#2`@
+`
+end
diff --git a/share/tabset/Makefile b/share/tabset/Makefile
new file mode 100644
index 0000000..846ef46
--- /dev/null
+++ b/share/tabset/Makefile
@@ -0,0 +1,16 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+FILES= 3101 9837 aa aed512 beehive diablo dtc382 hp700-wy ibm3101 std \
+ stdcrt tandem653 teleray vt100 vt100-w wyse-adds xerox1720 xerox1730 \
+ xerox1730-lm zenith29
+
+CLEANFILES+= ${FILES}
+
+.SUFFIXES: .uu
+.uu:
+ uudecode < ${.IMPSRC}
+
+FILESDIR= ${BINDIR}/tabset
+
+.include <bsd.prog.mk>
diff --git a/share/tabset/aa.uu b/share/tabset/aa.uu
new file mode 100644
index 0000000..b12fac9
--- /dev/null
+++ b/share/tabset/aa.uu
@@ -0,0 +1,6 @@
+begin 644 aa
+M'!`0("`@("`@("`=$#$@("`@("`@'1`Q("`@("`@(!T0,2`@("`@("`=$#$@
+M("`@("`@'1`Q("`@("`@(!T0,2`@("`@("`=$#$@("`@("`@'1`Q("`@("`@
+/(!T0,2`@("`@("`=$!`*
+`
+end
diff --git a/share/tabset/aed512.uu b/share/tabset/aed512.uu
new file mode 100644
index 0000000..c1cef2d
--- /dev/null
+++ b/share/tabset/aed512.uu
@@ -0,0 +1,17 @@
+begin 644 aed512
+M7$5',4U-32Y@-#!+,#`P,3(P,C`X,$LX,#`Q/S\_/S`P7DQ<14,X,$PX,'LX
+M,%Y,7$5+,#$P,3`P/S\_/TLP-C`Q/S\P,#`P8S@Q.#$P,%Q%1S%(2$@N7#`W
+M,C$P,#`P,#$Y03(W1D0P,#9!,C@P1#`P,D$R,#!!-3(T,CE&13@U,C0X-C$P
+M.#8Q,3@V,3(X-C$S-C!.,#,Q0C1#,T8S1C$X,#!.,#0Q0C!#,4(T0S,X,S`Q
+M.#`P3C`P,4(S0C,Q,S`S,#,P,3@P,$XP,3%",T(S,3,P,S`S-#$X,#!.,#(Q
+M0C-",S$S,#,P,S@Q.#`P3C`U,#@P,$XP-C%",T(S,3,S,S4S,#$X,#!<,#<R
+M,3$P,#`P,35!-3A%.$0U,#$Q034X1CA$-3$Q,4$U.3`X1#4R,3%!-3DQ.$0U
+M,S$Q-C!<,#<R,3(P,#`P,35!1#4P,3$X-3A%040U,3$Q.#4X1D%$-3(Q,3@U
+M.3!!1#4S,3$X-3DQ-C!<,#<R,3,P,#`P-$(R,#<Q0S4X-3A%,$$Q.#8U.$4P
+M03!!.#4X14$Y,#`X-3A&,C8X1D$U,C<X-3DP034P03(Y,#$X-3DQ03E&-3$X
+M-C4Y,#@U.3!!.3`Q-C4Y,3@U.3%!-3DP,SA%-3A%.#4Y,$$U.3%%-3A&,CDP
+M,3@U.3$R,#<Q0S4Q.#!!,$$P03`Y,#$X-3A%03DP,#@U.$8R-CA&-C!<,#<R
+M,3,U,#`P,$)!.30W,C`S,41%03DU,#(P,S%$138P7$5<15Q%7$5',4U-32Y>
+"00HU
+`
+end
diff --git a/share/tabset/beehive.uu b/share/tabset/beehive.uu
new file mode 100644
index 0000000..08140c4
--- /dev/null
+++ b/share/tabset/beehive.uu
@@ -0,0 +1,7 @@
+begin 644 beehive
+M#0L*!B`6(!8@%B`6(!8@%B`6(`8@%B`6(!8@%B`6(!8@%B`&(!8@%B`6(!8@
+M%B`6(!8@!B`6(!8@%B`6(!8@%B`6(`8@%B`6(!8@%B`6(!8@%B`&(!8@%B`6
+M(!8@%B`6(!8@!B`6(!8@%B`6(!8@%B`6(`8@%B`6(!8@%B`6(!8@%B`&(!8@
+=%B`6(!8@%B`6(!8@!B`6(!8@%B`6(!8@%B`6"PH6
+`
+end
diff --git a/share/tabset/diablo.uu b/share/tabset/diablo.uu
new file mode 100644
index 0000000..bd2d854
--- /dev/null
+++ b/share/tabset/diablo.uu
@@ -0,0 +1,5 @@
+begin 644 diablo
+M&PD!&SD*&S(;"0D;,1L)$1LQ&PD9&S$;"2$;,1L)*1LQ&PDQ&S$;"3D;,1L)
+K01LQ&PE)&S$;"5$;,1L)61LQ&PEA&S$;"6D;,1L)<1LQ&PEY&S$*"1LY"AL)
+`
+end
diff --git a/share/tabset/dtc382.uu b/share/tabset/dtc382.uu
new file mode 100644
index 0000000..a93028e
--- /dev/null
+++ b/share/tabset/dtc382.uu
@@ -0,0 +1,7 @@
+begin 644 dtc382
+M#1L)("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@
+M("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@
+M(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@
+=("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,0T@
+`
+end
diff --git a/share/tabset/hp700-wy.uu b/share/tabset/hp700-wy.uu
new file mode 100644
index 0000000..f4be8ad
--- /dev/null
+++ b/share/tabset/hp700-wy.uu
@@ -0,0 +1,6 @@
+begin 644 hp700-wy
+M&P`-&P&_O[^_O[^_OQL!O[^_O[^_O[\;`;^_O[^_O[^_&P&_O[^_O[^_OQL!
+MO[^_O[^_O[\;`;^_O[^_O[^_&P&_O[^_O[^_OQL!O[^_O[^_O[\;`;^_O[^_
+/O[^_&P&_O[^_O[^_OPT*
+`
+end
diff --git a/share/tabset/ibm3101.uu b/share/tabset/ibm3101.uu
new file mode 100644
index 0000000..ef493c5
--- /dev/null
+++ b/share/tabset/ibm3101.uu
@@ -0,0 +1,6 @@
+begin 644 ibm3101
+M&T@@("`@("`@(!LP("`@("`@("`;,"`@("`@("`@&S`@("`@("`@(!LP("`@
+M("`@("`;,"`@("`@("`@&S`@("`@("`@(!LP("`@("`@("`;,"`@("`@("`@
+#&S`-
+`
+end
diff --git a/share/tabset/std.uu b/share/tabset/std.uu
new file mode 100644
index 0000000..5564f49
--- /dev/null
+++ b/share/tabset/std.uu
@@ -0,0 +1,6 @@
+begin 644 std
+M#1LS#2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@
+M("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@
+M("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$*
+`
+end
diff --git a/share/tabset/stdcrt.uu b/share/tabset/stdcrt.uu
new file mode 100644
index 0000000..9e496a6
--- /dev/null
+++ b/share/tabset/stdcrt.uu
@@ -0,0 +1,6 @@
+begin 644 stdcrt
+M#1LS#2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@
+M("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@
+%("`;,0T@
+`
+end
diff --git a/share/tabset/tandem653.uu b/share/tabset/tandem653.uu
new file mode 100644
index 0000000..12969f8
--- /dev/null
+++ b/share/tabset/tandem653.uu
@@ -0,0 +1,6 @@
+begin 644 tandem653
+M&S,-&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ
+M("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@
+&("`@&S$*
+`
+end
diff --git a/share/tabset/teleray.uu b/share/tabset/teleray.uu
new file mode 100644
index 0000000..c09f3a1
--- /dev/null
+++ b/share/tabset/teleray.uu
@@ -0,0 +1,5 @@
+begin 644 teleray
+M&T<;63DH&T8;63DP&T8;63DX&T8;63E`&T8;63E(&T8;63E0&T8;63E8&T8;
+,63E@&T8;63EH&T8-
+`
+end
diff --git a/share/tabset/vt100-w.uu b/share/tabset/vt100-w.uu
new file mode 100644
index 0000000..420d947
--- /dev/null
+++ b/share/tabset/vt100-w.uu
@@ -0,0 +1,7 @@
+begin 644 vt100-w
+M#1M;,V<-&T@@("`@("`@(!M(("`@("`@("`;2"`@("`@("`@&T@@("`@("`@
+M(!M(("`@("`@("`;2"`@("`@("`@&T@@("`@("`@(!M(("`@("`@("`;2"`@
+M("`@("`@&T@@("`@("`@(!M(("`@("`@("`;2"`@("`@("`@&T@@("`@("`@
+B(!M(("`@("`@("`;2"`@("`@("`@&T@@("`@("`@(!M(#2`@
+`
+end
diff --git a/share/tabset/vt100.uu b/share/tabset/vt100.uu
new file mode 100644
index 0000000..1a1a7a1
--- /dev/null
+++ b/share/tabset/vt100.uu
@@ -0,0 +1,6 @@
+begin 644 vt100
+M#1M;,V<-&T@@("`@("`@(!M(("`@("`@("`;2"`@("`@("`@&T@@("`@("`@
+M(!M(("`@("`@("`;2"`@("`@("`@&T@@("`@("`@(!M(("`@("`@("`;2"`@
+)("`@("`@&T@-
+`
+end
diff --git a/share/tabset/wyse-adds.uu b/share/tabset/wyse-adds.uu
new file mode 100644
index 0000000..128cd4c
--- /dev/null
+++ b/share/tabset/wyse-adds.uu
@@ -0,0 +1,9 @@
+begin 644 wyse-adds
+M4V5T=&EN9R!T86)S+BXN#1LR(!LR(!LR(!LR(!LR(!LR(!LR(!LR(!LQ(!LR
+M(!LR(!LR(!LR(!LR(!LR(!LR(!LQ(!LR(!LR(!LR(!LR(!LR(!LR(!LR(!LQ
+M(!LR(!LR(!LR(!LR(!LR(!LR(!LR(!LQ(!LR(!LR(!LR(!LR(!LR(!LR(!LR
+M(!LQ(!LR(!LR(!LR(!LR(!LR(!LR(!LR(!LQ(!LR(!LR(!LR(!LR(!LR(!LR
+M(!LR(!LQ(!LR(!LR(!LR(!LR(!LR(!LR(!LR(!LQ(!LR(!LR(!LR(!LR(!LR
+B(!LR(!LR(!LQ(!LR(!LR(!LR(!LR(!LR(!LR(!LR"@H-"ALR
+`
+end
diff --git a/share/tabset/xerox1720.uu b/share/tabset/xerox1720.uu
new file mode 100644
index 0000000..9310d5b
--- /dev/null
+++ b/share/tabset/xerox1720.uu
@@ -0,0 +1,7 @@
+begin 644 xerox1720
+M&S(@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@
+M("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@
+M&S$@("`@("`@(!LQ("`@("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ("`@
+<("`@("`;,2`@("`@("`@&S$@("`@("`@(!LQ#2`@
+`
+end
diff --git a/share/tabset/xerox1730-lm.uu b/share/tabset/xerox1730-lm.uu
new file mode 100644
index 0000000..c209430
--- /dev/null
+++ b/share/tabset/xerox1730-lm.uu
@@ -0,0 +1,8 @@
+begin 644 xerox1730-lm
+M```;#5``````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````;/QLB&SX;%@@;
+M7!L)`1LY#1LR&PD)&S$;"1$;,1L)&1LQ&PDA&S$;"2D;,1L),1LQ&PDY&S$;
+L"4$;,1L)21LQ&PE1&S$;"5D;,1L)81LQ&PEI&S$;"7$;,1L)>1LQ#0D;.0T;
+`
+end
diff --git a/share/tabset/xerox1730.uu b/share/tabset/xerox1730.uu
new file mode 100644
index 0000000..bdda189
--- /dev/null
+++ b/share/tabset/xerox1730.uu
@@ -0,0 +1,8 @@
+begin 644 xerox1730
+M```;#5``````````````````````````````````````````````````````
+M````````````````````````````````````````````````````````````
+M```````````````````````````````````````````````;/QLB&SX;%@@;
+M7`H;"0$;.0T;,AL)"1LQ&PD1&S$;"1D;,1L)(1LQ&PDI&S$;"3$;,1L).1LQ
+J&PE!&S$;"4D;,1L)41LQ&PE9&S$;"6$;,1L):1LQ&PEQ&S$;"7D;,0T*
+`
+end
diff --git a/share/tabset/zenith29.uu b/share/tabset/zenith29.uu
new file mode 100644
index 0000000..09b36a9
--- /dev/null
+++ b/share/tabset/zenith29.uu
@@ -0,0 +1,6 @@
+begin 644 zenith29
+M&ULS9PT;2"`@("`@("`@&T@@("`@("`@(!M(("`@("`@("`;2"`@("`@("`@
+M&T@@("`@("`@(!M(("`@("`@("`;2"`@("`@("`@&T@@("`@("`@(!M(("`@
+(("`@("`;2`H@
+`
+end
diff --git a/share/termcap/Makefile b/share/termcap/Makefile
new file mode 100644
index 0000000..9f6e718
--- /dev/null
+++ b/share/termcap/Makefile
@@ -0,0 +1,32 @@
+# @(#)Makefile 8.1 (Berkeley) 6/8/93
+# $FreeBSD$
+
+# reorder gives an editor command for most common terminals
+# (in reverse order from n'th to 1'st most commonly used)
+# to move them to the front of termcap
+#
+MAN= termcap.5
+
+FILES= termcap termcap.db
+FILESDIR= ${BINDIR}/misc
+CLEANFILES+= termcap termcap.db
+
+termcap: reorder termcap.src
+ TERM=dumb TERMCAP=dumb: ex - ${.CURDIR}/termcap.src < ${.CURDIR}/reorder
+
+.include <bsd.endian.mk>
+.if ${TARGET_ENDIANNESS} == "1234"
+CAP_MKDB_ENDIAN= -l
+.elif ${TARGET_ENDIANNESS} == "4321"
+CAP_MKDB_ENDIAN= -b
+.else
+CAP_MKDB_ENDIAN=
+.endif
+
+termcap.db: termcap
+ cap_mkdb ${CAP_MKDB_ENDIAN} termcap
+
+etc-termcap:
+ ln -fs ${BINDIR}/misc/termcap ${DESTDIR}/etc/termcap
+
+.include <bsd.prog.mk>
diff --git a/share/termcap/README b/share/termcap/README
new file mode 100644
index 0000000..f299ce8
--- /dev/null
+++ b/share/termcap/README
@@ -0,0 +1,55 @@
+# @(#)README 8.1 (Berkeley) 6/8/93
+
+<< 12 May 1983 >>
+To install this directory on your system:
+
+First determine a list of "common terminals" for your system. This list
+will probably be small, and can be empty if you like, but you should
+probably put your own terminal in it.
+
+Second, edit the editor script "reorder" to use this list instead of the
+list built in to it. The changes will be evident from looking at the
+script. Notice that the script contains the terminals in order from least
+common to most common, since the move commands will move them to the front
+in that order, the effect will be to put the most common at the front of
+termcap since that's moved last. The s.* terminals are specials, and
+although they don't have to go to the front, they are probably quite
+common and really should go near the front.
+
+Third, if you are not a super user and cannot create the directory
+/usr/lib/tabset, make a corresponding directory somewhere you can and add
+a line to reorder to globally change all /usr/lib/tabset's to your own
+path name. This change is better than just changing the termcap.src file
+because it makes it easier to diff it from newer distributed versions.
+Try to keep the source as is whenever possible, and put mungings into
+reorder.
+
+Now you can run "make install" which will create an /etc/termcap. Again,
+if you aren't a super user change the cp command to put it where you can.
+In this case you will have to redefine E_TERMCAP in "local/uparm.h", which
+will probably be in subdirectories with the other UCB software.
+
+
+Finally, if you make additions or fixes to termcap, please mail a note
+explaining what you did with the fixed termcap entry (not the whole file,
+please!) to me at one of the addresses below, so it can be incorporated
+back into the original source. I will normally include anything unless
+there is a good reason not to, but I reserve the right to redo it differently.
+
+ uunet!ucbvax!termcap (uucp)
+ termcap@berkeley.cs.edu (Internet)
+
+<< 14 October 1987 >>
+It is probably easiest to make local termcap changes in separate
+files, eg /usr/local/etc/termcap, and encourage people to put
+
+ setenv TERMPATH ~/.termcap:/usr/local/etc/termcap:/etc/termcap
+
+in their shell startup files. This way local system-wide changes can be
+isolated in /usr/local/etc/termcap and user changes in ~/.termcap, all
+without consuming lots of disk or requiring re-integration of local
+changes when system termcap files change.
+
+ John Kunze
+ termcap@berkeley.cs.edu
+
diff --git a/share/termcap/reorder b/share/termcap/reorder
new file mode 100644
index 0000000..8fc94a7
--- /dev/null
+++ b/share/termcap/reorder
@@ -0,0 +1,62 @@
+" $FreeBSD$
+/# << EOH -/k a
+/^adm12|/;.,/^[^ ]/-m'a
+/^pcplot/;.,/^[^ ]/-m'a
+/^c100|/;.,/^[^ ]/-m'a
+/^c100-rv|/;.,/^[^ ]/-m'a
+/^c100-rv-pp|/;.,/^[^ ]/-m'a
+/^c108-4p|/;.,/^[^ ]/-m'a
+/^c108-rv-4p|/;.,/^[^ ]/-m'a
+/^c108|/;.,/^[^ ]/-m'a
+/^c108-rv-8p|/;.,/^[^ ]/-m'a
+/^avt|/;.,/^[^ ]/-m'a
+/^avt-rv|/;.,/^[^ ]/-m'a
+/^avt-4p-s|/;.,/^[^ ]/-m'a
+/^avt-8p-s|/;.,/^[^ ]/-m'a
+/^ansi.sys|/;.,/^[^ ]/-m'a
+/^ansi.sysk|/;.,/^[^ ]/-m'a
+/^nansi.sys|/;.,/^[^ ]/-m'a
+/^nansi.sysk|/;.,/^[^ ]/-m'a
+/^h19k|/;.,/^[^ ]/-m'a
+/^msk22714|/;.,/^[^ ]/-m'a
+/^msk227am|/;.,/^[^ ]/-m'a
+/^msk227|/;.,/^[^ ]/-m'a
+/^pckermit120|/;.,/^[^ ]/-m'a
+/^pckermit|/;.,/^[^ ]/-m'a
+/^kermitam|/;.,/^[^ ]/-m'a
+/^kermit|/;.,/^[^ ]/-m'a
+/^sun-17|/;.,/^[^ ]/-m'a
+/^sun-24|/;.,/^[^ ]/-m'a
+/^sun-34|/;.,/^[^ ]/-m'a
+/^sun-48|/;.,/^[^ ]/-m'a
+/^sun-e-s|/;.,/^[^ ]/-m'a
+/^sun-s|/;.,/^[^ ]/-m'a
+/^sun-e|/;.,/^[^ ]/-m'a
+/^sun|/;.,/^[^ ]/-m'a
+/^xterm|/;.,/^[^ ]/-m'a
+/^adm3|/;.,/^[^ ]/-m'a
+/^adm31|/;.,/^[^ ]/-m'a
+/^adm3a|/;.,/^[^ ]/-m'a
+/^tvi924vb|/;.,/^[^ ]/-m'a
+/^tvi924|/;.,/^[^ ]/-m'a
+/^tvi912|/;.,/^[^ ]/-m'a
+/^920b|/;.,/^[^ ]/-m'a
+/^tvi925vb|/;.,/^[^ ]/-m'a
+/^tvi925|/;.,/^[^ ]/-m'a
+/^vt100|/;.,/^[^ ]/-m'a
+/^vt200|/;.,/^[^ ]/-m'a
+/^hp|/;.,/^[^ ]/-m'a
+/^hp2645|/;.,/^[^ ]/-m'a
+/^2621-nl|/;.,/^[^ ]/-m'a
+/^2621|/;.,/^[^ ]/-m'a
+/^h29|/;.,/^[^ ]/-m'a
+/^h19|/;.,/^[^ ]/-m'a
+/^h19-u|/;.,/^[^ ]/-m'a
+/^h19-us|/;.,/^[^ ]/-m'a
+/^h19-e|/;.,/^[^ ]/-m'a
+/^h19-g|/;.,/^[^ ]/-m'a
+/^dmd|/;.,/^[^ ]/-m'a
+/^s/;.,/^#/-m'a
+'ad
+w! termcap
+q
diff --git a/share/termcap/tck b/share/termcap/tck
new file mode 100644
index 0000000..a0e7c13
--- /dev/null
+++ b/share/termcap/tck
@@ -0,0 +1,91 @@
+#!/bin/sh -
+#
+# Copyright (c) 1991, 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.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the University of
+# California, Berkeley and its contributors.
+# 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.
+#
+# @(#)tck 8.1 (Berkeley) 6/8/93
+#
+
+# Look for default (and termcap-only?) capabilities.
+# Defaults should be removed to save space.
+
+showtc $* | \
+sed -n \
+ -e 's/ bc=^H$/DEFAULT &/p' \
+ -e 's/ bc=\\h$/DEFAULT &/p' \
+ -e 's/ bc=\\10$/DEFAULT &/p' \
+ -e 's/ bc=\\010$/DEFAULT &/p' \
+ -e 's/ bl=^G$/DEFAULT &/p' \
+ -e 's/ bl=\\7$/DEFAULT &/p' \
+ -e 's/ bl=\\07$/DEFAULT &/p' \
+ -e 's/ bl=\\007$/DEFAULT &/p' \
+ -e 's/ cr=^M$/DEFAULT &/p' \
+ -e 's/ cr=\\r$/DEFAULT &/p' \
+ -e 's/ cr=\\15$/DEFAULT &/p' \
+ -e 's/ cr=\\015$/DEFAULT &/p' \
+ -e 's/ ff=^L$/DEFAULT &/p' \
+ -e 's/ ff=^L$/DEFAULT &/p' \
+ -e 's/ ff=\\14$/DEFAULT &/p' \
+ -e 's/ ff=\\014$/DEFAULT &/p' \
+ -e 's/ nl=^J$/DEFAULT &/p' \
+ -e 's/ nl=\\n$/DEFAULT &/p' \
+ -e 's/ nl=\\12$/DEFAULT &/p' \
+ -e 's/ nl=\\012$/DEFAULT &/p' \
+ -e 's/ ta=^I$/DEFAULT &/p' \
+ -e 's/ ta=\\t$/DEFAULT &/p' \
+ -e 's/ ta=\\11$/DEFAULT &/p' \
+ -e 's/ ta=\\011$/DEFAULT &/p' \
+ \
+ -e 's/ bc$/TERMCAP ONLY &/p' \
+ -e 's/ bs$/TERMCAP ONLY &/p' \
+ -e 's/ dB$/TERMCAP ONLY &/p' \
+ -e 's/ dC$/TERMCAP ONLY &/p' \
+ -e 's/ dF$/TERMCAP ONLY &/p' \
+ -e 's/ dN$/TERMCAP ONLY &/p' \
+ -e 's/ dT$/TERMCAP ONLY &/p' \
+ -e 's/ dV$/TERMCAP ONLY &/p' \
+ -e 's/ EP$/TERMCAP ONLY &/p' \
+ -e 's/ HD$/TERMCAP ONLY &/p' \
+ -e 's/ kn$/TERMCAP ONLY &/p' \
+ -e 's/ ko$/TERMCAP ONLY &/p' \
+ -e 's/ LC$/TERMCAP ONLY &/p' \
+ -e 's/ ma$/TERMCAP ONLY &/p' \
+ -e 's/ ml$/TERMCAP ONLY &/p' \
+ -e 's/ mu$/TERMCAP ONLY &/p' \
+ -e 's/ nc$/TERMCAP ONLY &/p' \
+ -e 's/ NL$/TERMCAP ONLY &/p' \
+ -e 's/ nl$/TERMCAP ONLY &/p' \
+ -e 's/ ns$/TERMCAP ONLY &/p' \
+ -e 's/ OP$/TERMCAP ONLY &/p' \
+ -e 's/ pt$/TERMCAP ONLY &/p' \
+ -e 's/ UC$/TERMCAP ONLY &/p' \
+ -e 's/ xr$/TERMCAP ONLY &/p' \
+ -e 's/ xx$/TERMCAP ONLY &/p' \
diff --git a/share/termcap/termcap.5 b/share/termcap/termcap.5
new file mode 100644
index 0000000..bb5b512
--- /dev/null
+++ b/share/termcap/termcap.5
@@ -0,0 +1,2145 @@
+.\" Copyright (c) 1985, 1991, 1993, 1994
+.\" 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.
+.\" 3. All advertising materials mentioning features or use of this software
+.\" must display the following acknowledgement:
+.\" This product includes software developed by the University of
+.\" California, Berkeley and its contributors.
+.\" 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.
+.\"
+.\" @(#)termcap.5 8.3 (Berkeley) 4/16/94
+.\"
+.\" /***************************************************************************
+.\" * COPYRIGHT NOTICE *
+.\" ****************************************************************************
+.\" * ncurses is copyright (C) 1992-1995 *
+.\" * Zeyd M. Ben-Halim *
+.\" * zmbenhal@netcom.com *
+.\" * Eric S. Raymond *
+.\" * esr@snark.thyrsus.com *
+.\" * *
+.\" * Permission is hereby granted to reproduce and distribute ncurses *
+.\" * by any means and for any fee, whether alone or as part of a *
+.\" * larger distribution, in source or in binary form, PROVIDED *
+.\" * this notice is included with any such distribution, and is not *
+.\" * removed from any of its header files. Mention of ncurses in any *
+.\" * applications linked with it is highly appreciated. *
+.\" * *
+.\" * ncurses comes AS IS with no warranty, implied or expressed. *
+.\" * *
+.\" ***************************************************************************/
+.\"
+.\" $FreeBSD$
+.\"
+.Dd April 16, 1994
+.Dt TERMCAP 5
+.Os
+.Sh NAME
+.Nm termcap
+.Nd terminal capability data base
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+file
+is a data base describing terminals,
+used,
+for example,
+by
+.Xr \&vi 1
+and
+.Xr ncurses 3 .
+Terminals are described in
+.Nm
+by giving a set of capabilities that they have and by describing
+how operations are performed.
+Padding requirements and initialization sequences
+are included in
+.Nm .
+.Pp
+Entries in
+.Nm
+consist of a number of `:'-separated fields.
+The first entry for each terminal gives the names that are known for the
+terminal, separated by `|' characters.
+The first name given is the most common abbreviation for the terminal.
+The last name given should be a long name fully identifying the terminal,
+and all others are understood as synonyms for the terminal name.
+All names but the last should be in lower case and contain no blanks;
+the last name may well contain upper case characters and blanks for
+readability.
+.Pp
+Terminal names (except for the last, verbose entry)
+should be chosen using the following conventions.
+The particular piece of hardware making up the terminal
+should have a root name chosen, thus
+.Dq hp2621
+This name should not contain hyphens.
+Modes that the hardware can be in
+or user preferences
+should be indicated by appending a hyphen and an indicator of the mode.
+Therefore, a
+.Dq vt100
+in 132-column mode would be
+.Dq vt100-w .
+The following suffixes should be used where possible:
+.Pp
+.Bl -column indent "With automatic margins (usually default)xx" -offset indent
+.Sy "Suffix Meaning Example"
+-w Wide mode (more than 80 columns) vt100-w
+-am With automatic margins (usually default) vt100-am
+-nam Without automatic margins vt100-nam
+.Pf \- Ar n Ta No "Number of lines on screen aaa-60"
+-na No arrow keys (leave them in local) concept100-na
+.Pf \- Ar \&np Ta No "Number of pages of memory concept100-4p"
+-rv Reverse video concept100-rv
+.El
+.Sh CAPABILITIES
+The description field attempts to convey the semantics of the
+capability.
+You may find some codes in the description field:
+.Pp
+.Bl -tag -width #[1-9]
+.It (P)
+indicates that padding may be specified.
+.It #[1-9]
+in the description field indicates that the string is passed through
+.Xr tparm 3
+or
+.Xr tgoto 3
+with parms as given (#\fIi\fP).
+.It (P*)
+indicates that padding may vary in proportion to the number of
+lines affected.
+.It (#\d\fIi\fP\u)
+indicates the \fIi\fP\uth\d parameter.
+.El
+.Pp
+These are the boolean capabilities:
+.Bd -literal
+\fBBoolean TCap Description\fR
+\fBVariables Code\fR
+auto_left_margin bw cursor_left wraps from column 0 to last
+ column
+auto_right_margin am terminal has automatic margins
+no_esc_ctlc xb beehive (f1=escape, f2=ctrl C)
+ceol_standout_glitch xs standout not erased by overwriting (hp)
+eat_newline_glitch xn newline ignored after 80 cols (concept)
+erase_overstrike eo can erase overstrikes with a blank
+generic_type gn generic line type
+hard_copy hc hardcopy terminal
+has_meta_key km Has a meta key, sets msb high
+has_status_line hs has extra status line
+insert_null_glitch in insert mode distinguishes nulls
+memory_above da display may be retained above the screen
+memory_below db display may be retained below the screen
+move_insert_mode mi safe to move while in insert mode
+move_standout_mode ms safe to move while in standout mode
+over_strike os terminal can overstrike
+status_line_esc_ok es escape can be used on the status line
+dest_tabs_magic_smso xt tabs destructive, magic so char (t1061)
+tilde_glitch hz cannot print ~'s (hazeltine)
+transparent_underline ul underline character overstrikes
+xon_xoff xo terminal uses xon/xoff handshaking
+needs_xon_xoff nx padding will not work, xon/xoff required
+prtr_silent 5i printer will not echo on screen
+hard_cursor HC cursor is hard to see
+non_rev_rmcup NR enter_ca_mode does not reverse exit_ca_mode
+no_pad_char NP pad character does not exist
+non_dest_scroll_region ND scrolling region is non-destructive
+can_change cc terminal can re-define existing colors
+back_color_erase ut screen erased with background color
+hue_lightness_saturation hl terminal uses only HLS color
+ notation (tektronix)
+col_addr_glitch YA only positive motion for column address and
+ micro_column_address caps
+cr_cancels_micro_mode YB using cr turns off micro mode
+has_print_wheel YC printer needs operator to change character
+ set
+row_addr_glitch YD only positive motion for row_address and
+ micro_row_address caps
+semi_auto_right_margin YE printing in last column causes cr
+cpi_changes_res YF changing character pitch changes resolution
+lpi_changes_res YG changing line pitch changes resolution
+.Ed
+.Pp
+These are the numeric capabilities:
+.Bd -literal
+\fBNumeric TCap Description\fR
+\fBVariables Code\fR
+columns co number of columns in aline
+init_tabs it tabs initially every # spaces
+lines li number of lines on screen or page
+lines_of_memory lm lines of memory if > line. 0 => varies
+magic_cookie_glitch sg number of blank chars left by
+ enter_standout_mode or exit_standout_mode
+padding_baud_rate pb lowest baud rate where padding needed
+virtual_terminal vt virtual terminal number (CB/unix)
+width_status_line ws columns in status line
+num_labels Nl number of labels on screen
+label_height lh rows in each label
+label_width lw columns in each label
+max_attributes ma maximum combined attributes terminal can
+ handle
+maximum_windows MW maximum number of definable windows
+magic_cookie_glitch_ul ug number of blanks left by underline
+#
+# These came in with SVr4's color support
+#
+max_colors Co maximum numbers of colors on screen
+max_pairs pa maximum number of color-pairs on the screen
+no_color_video NC video attributes that cannot be used with
+ colors
+#
+# The following numeric capabilities are present in the SVr4.0 term
+# structure, but are not yet documented in the man page.
+# They came in with SVr4's printer support.
+#
+buffer_capacity Ya numbers of bytes buffered before printing
+dot_vert_spacing Yb spacing of pins vertically in pins per inch
+dot_horz_spacing Yc spacing of dots horizontally in dots per
+ inch
+max_micro_address Yd maximum value in micro_..._address
+max_micro_jump Ye maximum value in parm_..._micro
+micro_char_size Yf character size when in micro mode
+micro_line_size Yg line size when in micro mode
+number_of_pins Yh numbers of pins in print-head
+output_res_char Yi horizontal resolution in units per line
+output_res_line Yj vertical resolution in units per line
+output_res_horz_inch Yk horizontal resolution in units per inch
+output_res_vert_inch Yl vertical resolution in units per inch
+print_rate Ym print rate in chars per second
+wide_char_size Yn character step size when in double wide
+ mode
+buttons BT number of buttons on mouse
+bit_image_entwining Yo number of passed for each bit-image row
+bit_image_type Yp type of bit-image device
+.Ed
+.Pp
+These are the string capabilities:
+.Bd -literal
+\fBString TCap Description\fR
+\fBVariables Code\fR
+back_tab bt back tab (P)
+bell bl audible signal (bell) (P)
+carriage_return cr carriage return (P*)
+change_scroll_region cs change region to line #1 to line #2 (P)
+clear_all_tabs ct clear all tab stops (P)
+clear_screen cl clear screen and home cursor (P*)
+clr_eol ce clear to end of line (P)
+clr_eos cd clear to end of screen (P*)
+column_address ch horizontal position #1, absolute (P)
+command_character CC terminal settable cmd character in
+ prototype
+cursor_address cm move to row #1 columns #2
+cursor_down do down one line
+cursor_home ho home cursor
+cursor_invisible vi make cursor invisible
+cursor_left le move left one space
+cursor_mem_address CM memory relative cursor addressing
+cursor_normal ve make cursor appear normal (undo
+ cursor_invisible/cursor_visible)
+cursor_right nd move right one space
+cursor_to_ll ll last line, first column
+cursor_up up up one line
+cursor_visible vs make cursor very visible
+delete_character dc delete character (P*)
+delete_line dl delete line (P*)
+dis_status_line ds disable status line
+down_half_line hd half a line down
+enter_alt_charset_mode as start alternate character set (P)
+enter_blink_mode mb turn on blinking
+enter_bold_mode md turn on bold (extra bright) mode
+enter_ca_mode ti string to start programs using
+ cursor_address
+enter_delete_mode dm enter delete mode
+enter_dim_mode mh turn on half-bright mode
+enter_insert_mode im enter insert mode
+enter_secure_mode mk turn on blank mode (characters invisible)
+enter_protected_mode mp turn on protected mode
+enter_reverse_mode mr turn on reverse video mode
+enter_standout_mode so begin standout mode
+enter_underline_mode us begin underline mode
+erase_chars ec erase #1 characters (P)
+exit_alt_charset_mode ae end alternate character set (P)
+exit_attribute_mode me turn off all attributes
+exit_ca_mode te strings to end programs using cup
+exit_delete_mode ed end delete mode
+exit_insert_mode ei exit insert mode
+exit_standout_mode se exit standout mode
+exit_underline_mode ue exit underline mode
+flash_screen vb visible bell (may not move cursor)
+form_feed ff hardcopy terminal page eject (P*)
+from_status_line fs return from status line
+init_1string i1 initialization string
+init_2string is initialization string
+init_3string i3 initialization string
+init_file if name of initialization file
+insert_character ic insert character (P)
+insert_line al insert line (P*)
+insert_padding ip insert padding after inserted character
+key_backspace kb backspace key
+key_catab ka clear-all-tabs key
+key_clear kC clear-screen or erase key
+key_ctab kt clear-tab key
+key_dc kD delete-character key
+key_dl kL delete-line key
+key_down kd down-arrow key
+key_eic kM sent by rmir or smir in insert mode
+key_eol kE clear-to-end-of-line key
+key_eos kS clear-to-end-of-screen key
+key_f0 k0 F0 function key
+key_f1 k1 F1 function key
+key_f10 k; F10 function key
+key_f2 k2 F2 function key
+key_f3 k3 F3 function key
+key_f4 k4 F4 function key
+key_f5 k5 F5 function key
+key_f6 k6 F6 function key
+key_f7 k7 F7 function key
+key_f8 k8 F8 function key
+key_f9 k9 F9 function key
+key_home kh home key
+key_ic kI insert-character key
+key_il kA insert-line key
+key_left kl left-arrow key
+key_ll kH last-line key
+key_npage kN next-page key
+key_ppage kP prev-page key
+key_right kr right-arrow key
+key_sf kF scroll-forward key
+key_sr kR scroll-backward key
+key_stab kT set-tab key
+key_up ku up-arrow key
+keypad_local ke leave 'keyboard_transmit' mode
+keypad_xmit ks enter 'keyboard_transmit' mode
+lab_f0 l0 label on function key f0 if not f0
+lab_f1 l1 label on function key f1 if not f1
+lab_f10 la label on function key f10 if not f10
+lab_f2 l2 label on function key f2 if not f2
+lab_f3 l3 label on function key f3 if not f3
+lab_f4 l4 label on function key f4 if not f4
+lab_f5 l5 label on function key f5 if not f5
+lab_f6 l6 label on function key f6 if not f6
+lab_f7 l7 label on function key f7 if not f7
+lab_f8 l8 label on function key f8 if not f8
+lab_f9 l9 label on function key f9 if not f9
+meta_off mo turn off meta mode
+meta_on mm turn on meta mode (8th-bit on)
+newline nw newline (behave like cr followed by lf)
+pad_char pc padding char (instead of null)
+parm_dch DC delete #1 chars (P*)
+parm_delete_line DL delete #1 lines (P*)
+parm_down_cursor DO down #1 lines (P*)
+parm_ich IC insert #1 chars (P*)
+parm_index SF scroll forward #1 lines (P)
+parm_insert_line AL insert #1 lines (P*)
+parm_left_cursor LE move #1 chars to the left (P)
+parm_right_cursor RI move #1 chars to the right (P*)
+parm_rindex SR scroll back #1 lines (P)
+parm_up_cursor UP up #1 lines (P*)
+pkey_key pk program function key #1 to type string #2
+pkey_local pl program function key #1 to execute
+ string #2
+pkey_xmit px program function key #1 to transmit
+ string #2
+print_screen ps print contents of screen
+prtr_off pf turn off printer
+prtr_on po turn on printer
+repeat_char rp repeat char #1 #2 times (P*)
+reset_1string r1 reset string
+reset_2string r2 reset string
+reset_3string r3 reset string
+reset_file rf name of reset file
+restore_cursor rc restore cursor to last position of
+ save_cursor
+row_address cv vertical position #1 absolute (P)
+save_cursor sc save current cursor position (P)
+scroll_forward sf scroll text up (P)
+scroll_reverse sr scroll text down (P)
+set_attributes sa define video attributes #1-#9 (PG9)
+set_tab st set a tab in every row, current columns
+set_window wi current window is lines #1-#2 cols #3-#4
+tab ta tab to next 8-space hardware tab stop
+to_status_line ts move to status line
+underline_char uc underline char and move past it
+up_half_line hu half a line up
+init_prog iP path name of program for initialization
+key_a1 K1 upper left of keypad
+key_a3 K3 upper right of keypad
+key_b2 K2 center of keypad
+key_c1 K4 lower left of keypad
+key_c3 K5 lower right of keypad
+prtr_non pO turn on printer for #1 bytes
+termcap_init2 i2 secondary initialization string
+termcap_reset rs terminal reset string
+#
+# SVr1 capabilities stop here. IBM's version of terminfo is the same as
+# SVr4 up to this point, but has a different set afterwards.
+#
+char_padding rP like insert_padding but when in insert mode
+acs_chars ac graphics charset pairs - def=vt100
+plab_norm pn program label #1 to show string #2
+key_btab kB back-tab key
+enter_xon_mode SX turn on xon/xoff handshaking
+exit_xon_mode RX turn off xon/xoff handshaking
+enter_am_mode SA turn on automatic margins
+exit_am_mode RA turn off automatic margins
+xon_character XN XON character
+xoff_character XF XOFF character
+ena_acs eA enable alternate char set
+label_on LO turn on soft labels
+label_off LF turn off soft labels
+key_beg @1 begin key
+key_cancel @2 cancel key
+key_close @3 close key
+key_command @4 command key
+key_copy @5 copy key
+key_create @6 create key
+key_end @7 end key
+key_enter @8 enter/send key
+key_exit @9 exit key
+key_find @0 find key
+key_help %1 help key
+key_mark %2 mark key
+key_message %3 message key
+key_move %4 move key
+key_next %5 next key
+key_open %6 open key
+key_options %7 options key
+key_previous %8 previous key
+key_print %9 print key
+key_redo %0 redo key
+key_reference &1 reference key
+key_refresh &2 refresh key
+key_replace &3 replace key
+key_restart &4 restart key
+key_resume &5 resume key
+key_save &6 save key
+key_suspend &7 suspend key
+key_undo &8 undo key
+key_sbeg &9 shifted key
+key_scancel &0 shifted key
+key_scommand *1 shifted key
+key_scopy *2 shifted key
+key_screate *3 shifted key
+key_sdc *4 shifted key
+key_sdl *5 shifted key
+key_select *6 select key
+key_send *7 shifted key
+key_seol *8 shifted key
+key_sexit *9 shifted key
+key_sfind *0 shifted key
+key_shelp #1 shifted key
+key_shome #2 shifted key
+key_sic #3 shifted key
+key_sleft #4 shifted key
+key_smessage %a shifted key
+key_smove %b shifted key
+key_snext %c shifted key
+key_soptions %d shifted key
+key_sprevious %e shifted key
+key_sprint %f shifted key
+key_sredo %g shifted key
+key_sreplace %h shifted key
+key_sright %i shifted key
+key_srsume %j shifted key
+key_ssave !1 shifted key
+key_ssuspend !2 shifted key
+key_sundo !3 shifted key
+req_for_input RF send next input char (for ptys)
+key_f11 F1 F11 function key
+key_f12 F2 F12 function key
+key_f13 F3 F13 function key
+key_f14 F4 F14 function key
+key_f15 F5 F15 function key
+key_f16 F6 F16 function key
+key_f17 F7 F17 function key
+key_f18 F8 F18 function key
+key_f19 F9 F19 function key
+key_f20 FA F20 function key
+key_f21 FB F21 function key
+key_f22 FC F22 function key
+key_f23 FD F23 function key
+key_f24 FE F24 function key
+key_f25 FF F25 function key
+key_f26 FG F26 function key
+key_f27 FH F27 function key
+key_f28 FI F28 function key
+key_f29 FJ F29 function key
+key_f30 FK F30 function key
+key_f31 FL F31 function key
+key_f32 FM F32 function key
+key_f33 FN F33 function key
+key_f34 FO F34 function key
+key_f35 FP F35 function key
+key_f36 FQ F36 function key
+key_f37 FR F37 function key
+key_f38 FS F38 function key
+key_f39 FT F39 function key
+key_f40 FU F40 function key
+key_f41 FV F41 function key
+key_f42 FW F42 function key
+key_f43 FX F43 function key
+key_f44 FY F44 function key
+key_f45 FZ F45 function key
+key_f46 Fa F46 function key
+key_f47 Fb F47 function key
+key_f48 Fc F48 function key
+key_f49 Fd F49 function key
+key_f50 Fe F50 function key
+key_f51 Ff F51 function key
+key_f52 Fg F52 function key
+key_f53 Fh F53 function key
+key_f54 Fi F54 function key
+key_f55 Fj F55 function key
+key_f56 Fk F56 function key
+key_f57 Fl F57 function key
+key_f58 Fm F58 function key
+key_f59 Fn F59 function key
+key_f60 Fo F60 function key
+key_f61 Fp F61 function key
+key_f62 Fq F62 function key
+key_f63 Fr F63 function key
+clr_bol cb Clear to beginning of line
+clear_margins MC clear right and left soft margins
+set_left_margin ML set left soft margin
+set_right_margin MR set right soft margin
+label_format Lf label format
+set_clock SC set clock, #1 hrs #2 mins #3 secs
+display_clock DK display clock at (#1,#2)
+remove_clock RC remove clock
+create_window CW define a window #1 from #2, #3 to #4, #5
+goto_window WG go to window #1
+hangup HU hang-up phone
+dial_phone DI dial number #1
+quick_dial QD dial number #1 without checking
+tone TO select touch tone dialing
+pulse PU select pulse dialling
+flash_hook fh flash switch hook
+fixed_pause PA pause for 2-3 seconds
+wait_tone WA wait for dial-tone
+user0 u0 User string #0
+user1 u1 User string #1
+user2 u2 User string #2
+user3 u3 User string #3
+user4 u4 User string #4
+user5 u5 User string #5
+user6 u6 User string #6
+user7 u7 User string #7
+user8 u8 User string #8
+user9 u9 User string #9
+#
+# SVr4 added these capabilities to support color
+#
+orig_pair op Set default pair to its original value
+orig_colors oc Set all color pairs to the original ones
+initialize_color Ic initialize color #1 to (#2,#3,#4)
+initialize_pair Ip Initialize color pair #1 to fg=(#2,#3,#4),
+ bg=(#5,#6,#7)
+set_color_pair sp Set current color pair to #1
+set_foreground Sf Set foreground color #1
+set_background Sb Set background color #1
+#
+# SVr4 added these capabilities to support printers
+#
+change_char_pitch ZA Change number of characters per inch
+change_line_pitch ZB Change number of lines per inch
+change_res_horz ZC Change horizontal resolution
+change_res_vert ZD Change vertical resolution
+define_char ZE Define a character
+enter_doublewide_mode ZF Enter double-wide mode
+enter_draft_quality ZG Enter draft-quality mode
+enter_italics_mode ZH Enter italic mode
+enter_leftward_mode ZI Start leftward carriage motion
+enter_micro_mode ZJ Start micro-motion mode
+enter_near_letter_quality ZK Enter NLQ mode
+enter_normal_quality ZL Enter normal-quality mode
+enter_shadow_mode ZM Enter shadow-print mode
+enter_subscript_mode ZN Enter subscript mode
+enter_superscript_mode ZO Enter superscript mode
+enter_upward_mode ZP Start upward carriage motion
+exit_doublewide_mode ZQ End double-wide mode
+exit_italics_mode ZR End italic mode
+exit_leftward_mode ZS End left-motion mode
+exit_micro_mode ZT End micro-motion mode
+exit_shadow_mode ZU End shadow-print mode
+exit_subscript_mode ZV End subscript mode
+exit_superscript_mode ZW End superscript mode
+exit_upward_mode ZX End reverse character motion
+micro_column_address ZY Like column_address in micro mode
+micro_down ZZ Like cursor_down in micro mode
+micro_left Za Like cursor_left in micro mode
+micro_right Zb Like cursor_right in micro mode
+micro_row_address Zc Like row_address in micro mode
+micro_up Zd Like cursor_up in micro mode
+order_of_pins Ze Match software bits to print-head pins
+parm_down_micro Zf Like parm_down_cursor in micro mode
+parm_left_micro Zg Like parm_left_cursor in micro mode
+parm_right_micro Zh Like parm_right_cursor in micro mode
+parm_up_micro Zi Like parm_up_cursor in micro mode
+select_char_set Zj Select character set
+set_bottom_margin Zk Set bottom margin at current line
+set_bottom_margin_parm Zl Set bottom margin at line #1 or #2 lines
+ from bottom
+set_left_margin_parm Zm Set left (right) margin at column #1 (#2)
+set_right_margin_parm Zn Set right margin at column #1
+set_top_margin Zo Set top margin at current line
+set_top_margin_parm Zp Set top (bottom) margin at row #1 (#2)
+start_bit_image Zq Start printing bit image graphics
+start_char_set_def Zr Start character set definition
+stop_bit_image Zs Stop printing bit image graphics
+stop_char_set_def Zt End definition of character aet
+subscript_characters Zu List of subscriptible characters
+superscript_characters Zv List of superscriptible characters
+these_cause_cr Zw Printing any of these chars causes CR
+zero_motion Zx No motion for subsequent character
+#
+# The following string capabilities are present in the SVr4.0 term
+# structure, but are not documented in the man page.
+#
+char_set_names Zy List of character set names
+key_mouse Km Mouse event has occurred
+mouse_info Mi Mouse status information
+req_mouse_pos RQ Request mouse position
+get_mouse Gm Curses should get button events
+set_a_foreground AF Set ANSI foreground color
+set_a_background AB Set ANSI background color
+pkey_plab xl Program function key #1 to type string #2
+ and show string #3
+device_type dv Indicate language/codeset support
+code_set_init ci Init sequence for multiple codesets
+set0_des_seq s0 Shift to code set 0 (EUC set 0, ASCII)
+set1_des_seq s1 Shift to code set 1
+set2_des_seq s2 Shift to code set 2
+set3_des_seq s3 Shift to code set 3
+set_lr_margin ML Set both left and right margins to #1, #2
+set_tb_margin MT Sets both top and bottom margins to #1, #2
+bit_image_repeat Xy Repeat bit image cell #1 #2 times
+bit_image_newline Zz Move to next row of the bit image
+bit_image_carriage_return Yv Move to beginning of same row
+color_names Yw Give name for color #1
+define_bit_image_region Yx Define rectangular bit image region
+end_bit_image_region Yy End a bit-image region
+set_color_band Yz Change to ribbon color #1
+set_page_length YZ Set page length to #1 lines
+#
+# SVr4 added these capabilities for direct PC-clone support
+#
+display_pc_char S1 Display PC character
+enter_pc_charset_mode S2 Enter PC character display mode
+exit_pc_charset_mode S3 Exit PC character display mode
+enter_scancode_mode S4 Enter PC scancode mode
+exit_scancode_mode S5 Exit PC scancode mode
+pc_term_options S6 PC terminal options
+scancode_escape S7 Escape for scancode emulation
+alt_scancode_esc S8 Alternate escape for scancode emulation
+#
+# The XSI Curses standard added these.
+#
+enter_horizontal_hl_mode Xh Enter horizontal highlight mode
+enter_left_hl_mode Xl Enter left highlight mode
+enter_low_hl_mode Xo Enter low highlight mode
+enter_right_hl_mode Xr Enter right highlight mode
+enter_top_hl_mode Xt Enter top highlight mode
+enter_vertical_hl_mode Xv Enter vertical highlight mode
+.Ed
+.Pp
+Obsolete termcap capabilities.
+New software should not rely on them at all.
+.Bd -literal
+\fBBoolean TCap Description\fR
+\fBVariables Code\fR
+linefeed_is_newline NL move down with ^J
+even_parity EP terminal requires even parity
+odd_parity OP terminal requires odd parity
+half_duplex HD terminal is half-duplex
+lower_case_only LC terminal has only lower case
+upper_case_only UC terminal has only upper case
+has_hardware_tabs pt has 8-char tabs invoked with ^I
+return_does_clr_eol xr return clears the line
+tek_4025_insert_line xx Tektronix 4025 insert-line glitch
+backspaces_with_bs bs uses ^H to move left
+crt_no_scrolling ns crt cannot scroll
+no_correctly_working_cr nc no way to go to start of line
+.Ed
+.Bd -literal
+\fBNumber TCap Description\fR
+\fBVariables Code\fR
+backspace_delay dB padding required for ^H
+form_feed_delay dF padding required for ^L
+horizontal_tab_delay dT padding required for ^I
+vertical_tab_delay dV padding required for ^V
+number_of_function_keys kn count of function keys
+carriage_return_delay dC pad needed for CR
+new_line_delay dN pad needed for LF
+.Ed
+.Bd -literal
+\fBString TCap Description\fR
+\fBVariables Code\fR
+other_non_function_keys ko list of self-mapped keycaps
+arrow_key_map ma map arrow keys
+memory_lock_above ml lock visible screen memory above the
+ current line
+memory_unlock mu unlock visible screen memory above the
+ current line
+linefeed_if_not_lf nl use to move down
+backspace_if_not_bs bc move left, if not ^H
+.Ed
+.Ss A Sample Entry
+The following entry, which describes the Concept\-100, is among the more
+complex entries in the
+.Nm
+file as of this writing.
+.Pp
+.Bd -literal
+ca\||\|concept100\||\|c100\||\|concept\||\|c104\||\|concept100-4p\||\|HDS Concept\-100:\e
+ :al=3*\eE^R:am:bl=^G:cd=16*\eE^C:ce=16\eE^U:cl=2*^L:cm=\eEa%+ %+ :\e
+ :co#80:.cr=9^M:db:dc=16\eE^A:dl=3*\eE^B:do=^J:ei=\eE\e200:eo:im=\eE^P:in:\e
+ :ip=16*:is=\eEU\eEf\eE7\eE5\eE8\eEl\eENH\eEK\eE\e200\eEo&\e200\eEo\e47\eE:k1=\eE5:\e
+ :k2=\eE6:k3=\eE7:kb=^h:kd=\eE<:ke=\eEx:kh=\eE?:kl=\eE>:kr=\eE=:ks=\eEX:\e
+ :ku=\eE;:le=^H:li#24:mb=\eEC:me=\eEN\e200:mh=\eEE:mi:mk=\eEH:mp=\eEI:\e
+ :mr=\eED:nd=\eE=:pb#9600:rp=0.2*\eEr%.%+ :se=\eEd\eEe:sf=^J:so=\eEE\eED:\e
+ :.ta=8\et:te=\eEv \e200\e200\e200\e200\e200\e200\eEp\er\en:\e
+ :ti=\eEU\eEv 8p\eEp\er:ue=\eEg:ul:up=\eE;:us=\eEG:\e
+ :vb=\eEk\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\e200\eEK:\e
+ :ve=\eEw:vs=\eEW:vt#8:xn:\e
+ :bs:cr=^M:dC#9:dT#8:nl=^J:ta=^I:pt:
+.Ed
+.Pp
+Entries may continue onto multiple lines by giving a \e as the last
+character of a line, and empty fields
+may be included for readability (here between the last field on a line
+and the first field on the next).
+Comments may be included on lines beginning with
+.Dq # .
+.Ss Types of Capabilities
+Capabilities in
+.Nm
+are of three types: Boolean capabilities,
+which indicate particular features that the terminal has;
+numeric capabilities,
+giving the size of the display or the size of other attributes;
+and string capabilities,
+which give character sequences that can be used to perform particular
+terminal operations.
+All capabilities have two-letter codes.
+For instance, the fact that
+the Concept has
+.Em automatic margins
+(an automatic return and linefeed
+when the end of a line is reached) is indicated by the Boolean capability
+.Sy \&am .
+Hence the description of the Concept includes
+.Sy \&am .
+.Pp
+Numeric capabilities are followed by the character `#' then the value.
+In the example above
+.Sy \&co ,
+which indicates the number of columns the display has,
+gives the value `80' for the Concept.
+.Pp
+Finally, string-valued capabilities, such as
+.Sy \&ce
+(clear-to-end-of-line
+sequence) are given by the two-letter code, an `=', then a string
+ending at the next following `:'.
+A delay in milliseconds may appear after
+the `=' in such a capability,
+which causes padding characters to be supplied by
+.Xr tputs 3
+after the remainder of the string is sent to provide this delay.
+The delay can be either a number,
+such as `20', or a number followed by
+an `*',
+such as `3*'.
+An `*' indicates that the padding required is proportional
+to the number of lines affected by the operation, and the amount given is
+the per-affected-line padding required.
+(In the case of insert-character,
+the factor is still the number of
+.Em lines
+affected;
+this is always 1 unless the terminal has
+.Sy \&in
+and the software uses it.)
+When an `*' is specified, it is sometimes useful to give a delay of the form
+`3.5' to specify a delay per line to tenths of milliseconds.
+(Only one decimal place is allowed.)
+.Pp
+A number of escape sequences are provided in the string-valued capabilities
+for easy encoding of control characters there.
+.Sy \&\eE
+maps to an
+.Dv ESC
+character,
+.Sy \&^X
+maps to a control-X for any appropriate X,
+and the sequences
+.Sy \&\en
+.Sy \&\er
+.Sy \&\et
+.Sy \&\eb
+.Sy \&\ef
+map to linefeed, return, tab, backspace, and formfeed, respectively.
+Finally, characters may be given as three octal digits after a
+.Sy \&\e ,
+and the characters
+.Sy \&^
+and
+.Sy \&\e
+may be given as
+.Sy \&\e^
+and
+.Sy \&\e\e .
+If it is necessary to place a
+.Sy \&:
+in a capability it must be escaped as
+.Sy \e:
+or be encoded as
+.Sy \&\e072 .
+If it is necessary to place a
+.Dv NUL
+character in a string capability it
+must be encoded as
+.Sy \&\e200 .
+(The routines that deal with
+.Nm
+use C strings and strip the high bits of the output very late, so that
+a
+.Sy \&\e200
+comes out as a
+.Sy \&\e000
+would.)
+.Pp
+Sometimes individual capabilities must be commented out.
+To do this, put a period before the capability name.
+For example, see the first
+.Sy \&cr
+and
+.Sy \&ta
+in the example above.
+.Ss Preparing Descriptions
+The most effective way to prepare a terminal description is by imitating
+the description of a similar terminal in
+.Nm
+and to build up a description gradually, using partial descriptions
+with
+.Xr \&vi 1
+to check that they are correct.
+Be aware that a very unusual terminal may expose deficiencies in
+the ability of the
+.Nm
+file to describe it
+or bugs in
+.Xr \&vi 1 .
+To easily test a new terminal description you are working on
+you can put it in your home directory in a file called
+.Pa .termcap
+and programs will look there before looking in
+.Pa /usr/share/misc/termcap .
+You can also set the environment variable
+.Ev TERMPATH
+to a list of absolute file pathnames (separated by spaces or colons),
+one of which contains the description you are working on,
+and programs will search them in the order listed, and nowhere else.
+See
+.Xr termcap 3 .
+The
+.Ev TERMCAP
+environment variable is usually set to the
+.Nm
+entry itself
+to avoid reading files when starting up a program.
+.Pp
+To get the padding for insert-line right
+(if the terminal manufacturer did not document it),
+a severe test is to use
+.Xr \&vi 1
+to edit
+.Pa /etc/passwd
+at 9600 baud, delete roughly 16 lines from the middle of the screen,
+then hit the `u' key several times quickly.
+If the display messes up, more padding is usually needed.
+A similar test can be used for insert-character.
+.Ss Basic Capabilities
+The number of columns on each line of the display is given by the
+.Sy \&co
+numeric capability.
+If the display is a
+.Tn CRT ,
+then the
+number of lines on the screen is given by the
+.Sy \&li
+capability.
+If the display wraps around to the beginning of the next line when
+the cursor reaches the right margin, then it should have the
+.Sy \&am
+capability.
+If the terminal can clear its screen,
+the code to do this is given by the
+.Sy \&cl
+string capability.
+If the terminal overstrikes
+(rather than clearing the position when a character is overwritten),
+it should have the
+.Sy \&os
+capability.
+If the terminal is a printing terminal,
+with no soft copy unit,
+give it both
+.Sy \&hc
+and
+.Sy \&os .
+.Pf ( Sy \&os
+applies to storage scope terminals,
+such as the Tektronix 4010 series,
+as well as to hard copy and
+.Tn APL
+terminals.)
+If there is a code to move the cursor to the left edge of the current row,
+give this as
+.Sy \&cr .
+(Normally this will be carriage-return,
+.Sy \&^M . )
+If there is a code to produce an audible signal (bell, beep,
+etc.),
+give this as
+.Sy \&bl .
+.Pp
+If there is a code (such as backspace)
+to move the cursor one position to the left,
+that capability should be given as
+.Sy \&le .
+Similarly,
+codes to move to the right, up, and down
+should be given as
+.Sy \&nd ,
+.Sy \&up ,
+and
+.Sy \&do ,
+respectively.
+These
+.Em local cursor motions
+should not alter the text they pass over;
+for example, you would not normally use
+.Dq nd=\ \&
+unless the terminal has the
+.Sy \&os
+capability,
+because the space would erase the character moved over.
+.Pp
+A very important point here is that the local cursor motions encoded
+in
+.Nm
+have undefined behavior at the left and top edges of a
+.Tn CRT
+display.
+Programs should never attempt to backspace around the left edge,
+unless
+.Sy \&bw
+is given, and never attempt to go up off the top
+using local cursor motions.
+.Pp
+In order to scroll text up,
+a program goes to the bottom left corner of the screen and sends the
+.Sy \&sf
+(index) string.
+To scroll text down,
+a program goes to the top left corner of the screen and sends the
+.Sy \&sr
+(reverse index) string.
+The strings
+.Sy \&sf
+and
+.Sy \&sr
+have undefined behavior
+when not on their respective corners of the screen.
+Parameterized versions of the scrolling sequences are
+.Sy \&SF
+and
+.Sy \&SR ,
+which have the same semantics as
+.Sy \&sf
+and
+.Sy \&sr
+except that they take one parameter
+and scroll that many lines.
+They also have undefined behavior
+except at the appropriate corner of the screen.
+.Pp
+The
+.Sy \&am
+capability tells whether the cursor sticks at the right
+edge of the screen when text is output there,
+but this does not necessarily apply to
+.Sy \&nd
+from the last column.
+Leftward local motion is defined from the left edge only when
+.Sy \&bw
+is given; then an
+.Sy \&le
+from the left edge will move to the right edge of the previous row.
+This is useful for drawing a box around the edge of the screen,
+for example.
+If the terminal has switch-selectable automatic margins,
+the
+.Nm
+description usually assumes that this feature is on,
+.Em i.e . ,
+.Sy \&am .
+If the terminal has a command
+that moves to the first column of the next line,
+that command can be given as
+.Sy \&nw
+(newline).
+It is permissible for this to clear the remainder of the current line,
+so if the terminal has no correctly-working
+.Tn \&CR
+and
+.Tn \&LF
+it may still be possible to craft a working
+.Sy \&nw
+out of one or both of them.
+.Pp
+These capabilities suffice to describe hardcopy and
+.Dq glass-tty
+terminals.
+Thus the Teletype model 33 is described as
+.Bd -literal -offset indent
+T3\||\|tty33\||\|33\||\|tty\||\|Teletype model 33:\e
+ :bl=^G:co#72:cr=^M:do=^J:hc:os:
+.Ed
+.Pp
+and the Lear Siegler
+.Tn ADM Ns \-3
+is described as
+.Bd -literal -offset indent
+l3\||\|adm3\||\|3\||\|LSI \s-1ADM\s0-3:\e
+:am:bl=^G:cl=^Z:co#80:cr=^M:do=^J:le=^H:li#24:sf=^J:
+.Ed
+.Ss Parameterized Strings
+Cursor addressing and other strings requiring parameters
+are described by a
+parameterized string capability, with
+.Xr printf 3 Ns \-like
+escapes
+.Sy \&%x
+in it,
+while other characters are passed through unchanged.
+For example, to address the cursor the
+.Sy \&cm
+capability is given, using two parameters: the row and column to move to.
+(Rows and columns are numbered from zero and refer to the physical screen
+visible to the user, not to any unseen memory.
+If the terminal has memory-relative cursor addressing,
+that can be indicated by an analogous
+.Sy \&CM
+capability.)
+.Pp
+The
+.Sy \&%
+encodings have the following meanings:
+.Bl -column xxxxx
+.It "%% output `%'"
+.It "%d output value as in"
+.Xr printf 3
+%d
+.It "%2 output value as in"
+.Xr printf 3
+%2d
+.It "%3 output value as in"
+.Xr printf 3
+%3d
+.It "%. output value as in"
+.Xr printf 3
+%c
+.It "%+" Ns Em x Ta No add
+.Em x
+to value, then do %.
+.It "%>" Ns Em \&xy Ta No if
+value >
+.Em x
+then add
+.Em y ,
+no output
+.It "%r reverse order of two parameters, no output"
+.It "%i increment by one, no output"
+.It "%n exclusive-or all parameters with 0140 (Datamedia 2500)"
+.It "\&%B" Ta Tn BCD No "(16*(value/10)) + (value%10), no output"
+.It "%D Reverse coding (value \- 2*(value%16)), no output (Delta Data)."
+.El
+.Pp
+Consider the Hewlett-Packard 2645, which, to get to row 3 and column 12, needs
+to be sent
+.Dq \eE&a12c03Y
+padded for 6 milliseconds.
+Note that the order
+of the row and column coordinates is reversed here
+and that the row and column
+are sent as two-digit integers.
+Thus its
+.Sy \&cm
+capability is
+.Dq Li cm=6\eE&%r%2c%2Y .
+.Pp
+The Datamedia 2500 needs the current row and column sent
+encoded in binary using
+.Dq \&%. .
+Terminals that use
+.Dq %.\&
+need to be able to
+backspace the cursor
+.Pq Sy \&le
+and to move the cursor up one line on the screen
+.Pq Sy \&up .
+This is necessary because it is not always safe to transmit
+.Sy \&\en ,
+.Sy \&^D ,
+and
+.Sy \&\er ,
+as the system may change or discard them.
+(Programs using
+.Nm
+must set terminal modes so that tabs are not expanded, so
+.Sy \&\et
+is safe to send.
+This turns out to be essential for the Ann Arbor 4080.)
+.Pp
+A final example is the Lear Siegler
+.Tn ADM Ns \-3a ,
+which offsets row and column
+by a blank character, thus
+.Dq Li cm=\eE=%+ %+\ \& .
+.Pp
+Row or column absolute cursor addressing
+can be given as single parameter capabilities
+.Sy \&ch
+(horizontal position absolute) and
+.Sy \&cv
+(vertical position absolute).
+Sometimes these are shorter than the more general two-parameter sequence
+(as with the Hewlett-Packard 2645) and can be used in preference to
+.Sy \&cm .
+If there are parameterized local motions
+.Pf ( Em e.g . ,
+move
+.Ar n
+positions to the right)
+these can be given as
+.Sy \&DO ,
+.Sy \&LE ,
+.Sy \&RI ,
+and
+.Sy \&UP
+with a single parameter indicating how many positions to move.
+These are primarily useful if the terminal does not have
+.Sy \&cm ,
+such as the Tektronix 4025.
+.Ss Cursor Motions
+.Pp
+If the terminal has a fast way to home the cursor
+(to the very upper left corner of the screen), this can be given as
+.Sy \&ho .
+Similarly, a fast way of getting to the lower left-hand corner
+can be given as
+.Sy \&ll ;
+this may involve going up with
+.Sy \&up
+from the home position,
+but a program should never do this itself (unless
+.Sy \&ll
+does), because it can
+make no assumption about the effect of moving up from the home position.
+Note that the home position is the same as
+cursor address (0,0): to the top left corner of the screen, not of memory.
+(Therefore, the
+.Dq \eEH
+sequence on Hewlett-Packard terminals
+cannot be used for
+.Sy \&ho . )
+.Ss Area Clears
+If the terminal can clear from the current position to the end of the
+line, leaving the cursor where it is, this should be given as
+.Sy \&ce .
+If the terminal can clear from the current position to the end of the
+display, this should be given as
+.Sy \&cd .
+.Sy \&cd
+must only be invoked from the first column of a line.
+(Therefore,
+it can be simulated by a request to delete a large number of lines,
+if a true
+.Sy \&cd
+is not available.)
+.Ss Insert/Delete Line
+If the terminal can open a new blank line
+before the line containing the cursor,
+this should be given as
+.Sy \&al ;
+this must be invoked only from the first
+position of a line.
+The cursor must then appear at the left of the newly blank line.
+If the terminal can delete the line that the cursor is on, this
+should be given as
+.Sy \&dl ;
+this must only be used from the first position on
+the line to be deleted.
+Versions of
+.Sy \&al
+and
+.Sy \&dl
+which take a single parameter
+and insert or delete that many lines
+can be given as
+.Sy \&AL
+and
+.Sy \&DL .
+If the terminal has a settable scrolling region
+(like the VT100),
+the command to set this can be described with the
+.Sy \&cs
+capability,
+which takes two parameters: the top and bottom lines of the scrolling region.
+The cursor position is, alas, undefined after using this command.
+It is possible to get the effect of insert or delete line
+using this command \(em the
+.Sy \&sc
+and
+.Sy \&rc
+(save and restore cursor) commands are also useful.
+Inserting lines at the top or bottom of the screen can also be done using
+.Sy \&sr
+or
+.Sy \&sf
+on many terminals without a true insert/delete line,
+and is often faster even on terminals with those features.
+.Pp
+If the terminal has the ability to define a window as part of memory
+which all commands affect, it should be given as the parameterized string
+.Sy \&wi .
+The four parameters are the starting and ending lines in memory
+and the starting and ending columns in memory, in that order.
+(This
+.Xr terminfo 5
+capability is described for completeness.
+It is unlikely that any
+.Nm Ns \-using
+program will support it.)
+.Pp
+If the terminal can retain display memory above the screen, then the
+.Sy \&da
+capability should be given;
+if display memory can be retained
+below, then
+.Sy \&db
+should be given.
+These indicate
+that deleting a line or scrolling may bring non-blank lines up from below
+or that scrolling back with
+.Sy \&sr
+may bring down non-blank lines.
+.Ss Insert/Delete Character
+There are two basic kinds of intelligent terminals with respect to
+insert/delete character that can be described using
+.Nm .
+The most common insert/delete character operations affect only the characters
+on the current line and shift characters off the end of the line rigidly.
+Other terminals, such as the Concept\-100 and the Perkin Elmer Owl, make
+a distinction between typed and untyped blanks on the screen, shifting
+upon an insert or delete only to an untyped blank on the screen which is
+either eliminated or expanded to two untyped blanks.
+You can determine
+the kind of terminal you have by clearing the screen then typing
+text separated by cursor motions.
+Type
+.Dq Li abc\ \ \ \ def
+using local
+cursor motions (not spaces) between the
+.Dq abc
+and the
+.Dq def .
+Then position the cursor before the
+.Dq abc
+and put the terminal in insert
+mode.
+If typing characters causes the rest of the line to shift
+rigidly and characters to fall off the end, then your terminal does
+not distinguish between blanks and untyped positions.
+If the
+.Dq abc
+shifts over to the
+.Dq def
+which then move together around the end of the
+current line and onto the next as you insert, then you have the second type of
+terminal and should give the capability
+.Sy \&in ,
+which stands for
+.Dq insert null .
+While these are two logically separate attributes
+(one line
+.Em \&vs .
+multi-line insert mode,
+and special treatment of untyped spaces),
+we have seen no terminals whose insert
+mode cannot be described with the single attribute.
+.Pp
+The
+.Nm
+entries can describe both terminals that have an insert mode and terminals
+that send a simple sequence to open a blank position on the current line.
+Give as
+.Sy \&im
+the sequence to get into insert mode.
+Give as
+.Sy \&ei
+the sequence to leave insert mode.
+Now give as
+.Sy \&ic
+any sequence that needs to be sent just before
+each character to be inserted.
+Most terminals with a true insert mode
+will not give
+.Sy \&ic ;
+terminals that use a sequence to open a screen
+position should give it here.
+(If your terminal has both,
+insert mode is usually preferable to
+.Sy \&ic .
+Do not give both unless the terminal actually requires both to be used
+in combination.)
+If post-insert padding is needed, give this as a number of milliseconds
+in
+.Sy \&ip
+(a string option).
+Any other sequence that may need to be
+sent after insertion of a single character can also be given in
+.Sy \&ip .
+If your terminal needs to be placed into an `insert mode'
+and needs a special code preceding each inserted character,
+then both
+.Sy \&im Ns / Sy \&ei
+and
+.Sy \&ic
+can be given, and both will be used.
+The
+.Sy \&IC
+capability, with one parameter
+.Em n ,
+will repeat the effects of
+.Sy \&ic
+.Em n
+times.
+.Pp
+It is occasionally necessary to move around while in insert mode
+to delete characters on the same line
+.Pf ( Em e.g . ,
+if there is a tab after
+the insertion position).
+If your terminal allows motion while in
+insert mode, you can give the capability
+.Sy \&mi
+to speed up inserting
+in this case.
+Omitting
+.Sy \&mi
+will affect only speed.
+Some terminals
+(notably Datamedia's) must not have
+.Sy \&mi
+because of the way their
+insert mode works.
+.Pp
+Finally, you can specify
+.Sy \&dc
+to delete a single character,
+.Sy \&DC
+with one parameter
+.Em n
+to delete
+.Em n
+characters,
+and delete mode by giving
+.Sy \&dm
+and
+.Sy \&ed
+to enter and exit delete mode
+(which is any mode the terminal needs to be placed in for
+.Sy \&dc
+to work).
+.Ss Highlighting, Underlining, and Visible Bells
+If your terminal has one or more kinds of display attributes,
+these can be represented in a number of different ways.
+You should choose one display form as
+.Em standout mode ,
+representing a good high-contrast, easy-on-the-eyes format
+for highlighting error messages and other attention getters.
+(If you have a choice, reverse video plus half-bright is good,
+or reverse video alone.)
+The sequences to enter and exit standout mode
+are given as
+.Sy \&so
+and
+.Sy \&se ,
+respectively.
+If the code to change into or out of standout
+mode leaves one or even two blank spaces or garbage characters on the screen,
+as the
+.Tn TVI
+912 and Teleray 1061 do,
+then
+.Sy \&sg
+should be given to tell how many characters are left.
+.Pp
+Codes to begin underlining and end underlining can be given as
+.Sy \&us
+and
+.Sy \&ue ,
+respectively.
+Underline mode change garbage is specified by
+.Sy \&ug ,
+similar to
+.Sy \&sg .
+If the terminal has a code to underline the current character and move
+the cursor one position to the right,
+such as the Microterm Mime,
+this can be given as
+.Sy \&uc .
+.Pp
+Other capabilities to enter various highlighting modes include
+.Sy \&mb
+(blinking),
+.Sy \&md
+(bold or extra bright),
+.Sy \&mh
+(dim or half-bright),
+.Sy \&mk
+(blanking or invisible text),
+.Sy \&mp
+(protected),
+.Sy \&mr
+(reverse video),
+.Sy \&me
+(turn off
+.Em all
+attribute modes),
+.Sy \&as
+(enter alternate character set mode), and
+.Sy \&ae
+(exit alternate character set mode).
+Turning on any of these modes singly may or may not turn off other modes.
+.Pp
+If there is a sequence to set arbitrary combinations of mode,
+this should be given as
+.Sy \&sa
+(set attributes), taking 9 parameters.
+Each parameter is either 0 or 1,
+as the corresponding attributes is on or off.
+The 9 parameters are, in order: standout, underline, reverse, blink,
+dim, bold, blank, protect, and alternate character set.
+Not all modes need be supported by
+.Sy \&sa ,
+only those for which corresponding attribute commands exist.
+(It is unlikely that a
+.Nm Ns \-using
+program will support this capability, which is defined for compatibility
+with
+.Xr terminfo 5 . )
+.Pp
+Terminals with the
+.Dq magic cookie
+glitches
+.Pf ( Sy \&sg
+and
+.Sy \&ug ) ,
+rather than maintaining extra attribute bits for each character cell,
+instead deposit special
+.Dq cookies ,
+or
+.Dq garbage characters ,
+when they receive mode-setting sequences,
+which affect the display algorithm.
+.Pp
+Some terminals,
+such as the Hewlett-Packard 2621,
+automatically leave standout
+mode when they move to a new line or when the cursor is addressed.
+Programs using standout mode
+should exit standout mode on such terminals
+before moving the cursor or sending a newline.
+On terminals where this is not a problem,
+the
+.Sy \&ms
+capability should be present
+to say that this overhead is unnecessary.
+.Pp
+If the terminal has
+a way of flashing the screen to indicate an error quietly
+(a bell replacement),
+this can be given as
+.Sy \&vb ;
+it must not move the cursor.
+.Pp
+If the cursor needs to be made more visible than normal
+when it is not on the bottom line
+(to change, for example, a non-blinking underline into an easier-to-find
+block or blinking underline),
+give this sequence as
+.Sy \&vs .
+If there is a way to make the cursor completely invisible, give that as
+.Sy \&vi .
+The capability
+.Sy \&ve ,
+which undoes the effects of both of these modes,
+should also be given.
+.Pp
+If your terminal correctly displays underlined characters
+(with no special codes needed)
+even though it does not overstrike,
+then you should give the capability
+.Sy \&ul .
+If overstrikes are erasable with a blank,
+this should be indicated by giving
+.Sy \&eo .
+.Ss Keypad
+If the terminal has a keypad that transmits codes when the keys are pressed,
+this information can be given.
+Note that it is not possible to handle
+terminals where the keypad only works in local mode
+(this applies, for example, to the unshifted Hewlett-Packard 2621 keys).
+If the keypad can be set to transmit or not transmit,
+give these codes as
+.Sy \&ks
+and
+.Sy \&ke .
+Otherwise the keypad is assumed to always transmit.
+The codes sent by the left-arrow, right-arrow, up-arrow, down-arrow,
+and home keys can be given as
+.Sy \&kl ,
+.Sy \&kr ,
+.Sy \&ku ,
+.Sy \&kd ,
+and
+.Sy \&kh ,
+respectively.
+If there are function keys such as f0, f1, ..., f9, the codes they send
+can be given as
+.Sy \&k0 ,
+.Sy \&k1 ,
+\&...,
+.Sy \&k9 .
+If these keys have labels other than the default f0 through f9, the labels
+can be given as
+.Sy \&l0 ,
+.Sy \&l1 ,
+\&...,
+.Sy \&l9 .
+The codes transmitted by certain other special keys can be given:
+.Sy \&kH
+(home down),
+.Sy \&kb
+(backspace),
+.Sy \&ka
+(clear all tabs),
+.Sy \&kt
+(clear the tab stop in this column),
+.Sy \&kC
+(clear screen or erase),
+.Sy \&kD
+(delete character),
+.Sy \&kL
+(delete line),
+.Sy \&kM
+(exit insert mode),
+.Sy \&kE
+(clear to end of line),
+.Sy \&kS
+(clear to end of screen),
+.Sy \&kI
+(insert character or enter insert mode),
+.Sy \&kA
+(insert line),
+.Sy \&kN
+(next page),
+.Sy \&kP
+(previous page),
+.Sy \&kF
+(scroll forward/down),
+.Sy \&kR
+(scroll backward/up), and
+.Sy \&kT
+(set a tab stop in this column).
+In addition, if the keypad has a 3 by 3 array of keys
+including the four arrow keys, then the other five keys can be given as
+.Sy \&K1 ,
+.Sy \&K2 ,
+.Sy \&K3 ,
+.Sy \&K4 ,
+and
+.Sy \&K5 .
+These keys are useful when the effects of a 3 by 3 directional pad are needed.
+The obsolete
+.Sy \&ko
+capability formerly used to describe
+.Dq other
+function keys has been
+completely supplanted by the above capabilities.
+.Pp
+The
+.Sy \&ma
+entry is also used to indicate arrow keys on terminals that have
+single-character arrow keys.
+It is obsolete but still in use in
+version 2 of
+.Sy \&vi
+which must be run on some minicomputers due to
+memory limitations.
+This field is redundant with
+.Sy \&kl ,
+.Sy \&kr ,
+.Sy \&ku ,
+.Sy \&kd ,
+and
+.Sy \&kh .
+It consists of groups of two characters.
+In each group, the first character is what an arrow key sends, and the
+second character is the corresponding
+.Sy \&vi
+command.
+These commands are
+.Ar h
+for
+.Sy \&kl ,
+.Ar j
+for
+.Sy \&kd ,
+.Ar k
+for
+.Sy \&ku ,
+.Ar l
+for
+.Sy \&kr ,
+and
+.Ar H
+for
+.Sy \&kh .
+For example, the Mime would have
+.Dq Li ma=^Hh^Kj^Zk^Xl
+indicating arrow keys left (^H), down (^K), up (^Z), and right (^X).
+(There is no home key on the Mime.)
+.Ss Tabs and Initialization
+If the terminal needs to be in a special mode when running
+a program that uses these capabilities,
+the codes to enter and exit this mode can be given as
+.Sy \&ti
+and
+.Sy \&te .
+This arises, for example, from terminals like the Concept with more than
+one page of memory.
+If the terminal has only memory-relative cursor addressing and not
+screen-relative cursor addressing,
+a screen-sized window must be fixed into
+the display for cursor addressing to work properly.
+This is also used for the Tektronix 4025, where
+.Sy \&ti
+sets the command character to be the one used by
+.Nm .
+.Pp
+Other capabilities
+include
+.Sy \&is ,
+an initialization string for the terminal,
+and
+.Sy \&if ,
+the name of a file containing long initialization strings.
+These strings are expected to set the terminal into modes
+consistent with the rest of the
+.Nm
+description.
+They are normally sent to the terminal by the
+.Xr tset 1
+program each time the user logs in.
+They will be printed in the following order:
+.Sy \&is ;
+setting tabs using
+.Sy \&ct
+and
+.Sy \&st ;
+and finally
+.Sy \&if .
+.Pf ( Xr Terminfo
+uses
+.Sy \&i\&1-i2
+instead of
+.Sy \&is
+and runs the program
+.Sy \&iP
+and prints
+.Sy "\&i\&3"
+after the other initializations.)
+A pair of sequences that does a harder reset from a totally unknown state
+can be analogously given as
+.Sy \&rs
+and
+.Sy \&if .
+These strings are output by the
+.Xr reset 1
+program, which is used when the terminal gets into a wedged state.
+.Pf ( Xr Terminfo
+uses
+.Sy "\&r1-r3"
+instead of
+.Sy \&rs . )
+Commands are normally placed in
+.Sy \&rs
+and
+.Sy \&rf
+only if they produce annoying effects on the screen and are not necessary
+when logging in.
+For example, the command to set the VT100 into 80-column mode
+would normally be part of
+.Sy \&is ,
+but it causes an annoying glitch of the screen and is not normally needed
+since the terminal is usually already in 80-column mode.
+.Pp
+If the terminal has hardware tabs,
+the command to advance to the next tab stop can be given as
+.Sy \&ta
+(usually
+.Sy \&^I ) .
+A
+.Dq backtab
+command which moves leftward to the previous tab stop
+can be given as
+.Sy \&bt .
+By convention,
+if the terminal driver modes indicate that tab stops are being expanded
+by the computer rather than being sent to the terminal,
+programs should not use
+.Sy \&ta
+or
+.Sy \&bt
+even if they are present,
+since the user may not have the tab stops properly set.
+If the terminal has hardware tabs that are initially set every
+.Ar n
+positions when the terminal is powered up, then the numeric parameter
+.Sy \&it
+is given, showing the number of positions between tab stops.
+This is normally used by the
+.Xr tset 1
+command to determine whether to set the driver mode for hardware tab
+expansion, and whether to set the tab stops.
+If the terminal has tab stops that can be saved in nonvolatile memory, the
+.Nm
+description can assume that they are properly set.
+.Pp
+If there are commands to set and clear tab stops, they can be given as
+.Sy \&ct
+(clear all tab stops) and
+.Sy \&st
+(set a tab stop in the current column of every row).
+If a more complex sequence is needed to set the tabs than can be
+described by this, the sequence can be placed in
+.Sy \&is
+or
+.Sy \&if .
+.Ss Delays
+Certain capabilities control padding in the terminal driver.
+These are primarily needed by hardcopy terminals and are used by the
+.Xr tset 1
+program to set terminal driver modes appropriately.
+Delays embedded in the capabilities
+.Sy \&cr ,
+.Sy \&sf ,
+.Sy \&le ,
+.Sy \&ff ,
+and
+.Sy \&ta
+will cause the appropriate delay bits to be set in the terminal driver.
+If
+.Sy \&pb
+(padding baud rate) is given, these values can be ignored at baud rates
+below the value of
+.Sy \&pb .
+For
+.Bx 4.2
+.Xr tset 1 ,
+the delays are given as numeric capabilities
+.Sy \&dC ,
+.Sy \&dN ,
+.Sy \&dB ,
+.Sy \&dF ,
+and
+.Sy \&dT
+instead.
+.Ss Miscellaneous
+If the terminal requires other than a
+.Dv NUL
+(zero) character as a pad,
+this can be given as
+.Sy \&pc .
+Only the first character of the
+.Sy \&pc
+string is used.
+.Pp
+If the terminal has commands to save and restore the position of the
+cursor, give them as
+.Sy \&sc
+and
+.Sy \&rc .
+.Pp
+If the terminal has an extra
+.Dq status line
+that is not normally used by
+software, this fact can be indicated.
+If the status line is viewed as an extra line below the bottom line,
+then the capability
+.Sy \&hs
+should be given.
+Special strings to go to a position in the status line and to return
+from the status line can be given as
+.Sy \&ts
+and
+.Sy \&fs .
+.Pf ( Xr \&fs
+must leave the cursor position in the same place that it was before
+.Sy \&ts .
+If necessary, the
+.Sy \&sc
+and
+.Sy \&rc
+strings can be included in
+.Sy \&ts
+and
+.Sy \&fs
+to get this effect.)
+The capability
+.Sy \&ts
+takes one parameter, which is the column number of the status line
+to which the cursor is to be moved.
+If escape sequences and other special commands such as tab work while in
+the status line, the flag
+.Sy \&es
+can be given.
+A string that turns off the status line (or otherwise erases its contents)
+should be given as
+.Sy \&ds .
+The status line is normally assumed to be the same width as the
+rest of the screen,
+.Em i.e . ,
+.Sy \&co .
+If the status line is a different width (possibly because the terminal
+does not allow an entire line to be loaded), then its width in columns
+can be indicated with the numeric parameter
+.Sy \&ws .
+.Pp
+If the terminal can move up or down half a line, this can be
+indicated with
+.Sy \&hu
+(half-line up) and
+.Sy \&hd
+(half-line down).
+This is primarily useful for superscripts and subscripts on hardcopy
+terminals.
+If a hardcopy terminal can eject to the next page (form feed),
+give this as
+.Sy \&ff
+(usually
+.Sy \&^L ) .
+.Pp
+If there is a command to repeat a given character a given number of times
+(to save time transmitting a large number of identical characters),
+this can be indicated with the parameterized string
+.Sy \&rp .
+The first parameter is the character to be repeated and the second is
+the number of times to repeat it.
+(This is a
+.Xr terminfo 5
+feature that is unlikely to be supported by a program that uses
+.Nm . )
+.Pp
+If the terminal has a settable command character, such as the
+Tektronix 4025, this can be indicated with
+.Sy \&CC .
+A prototype command character is chosen which is used in all capabilities.
+This character is given in the
+.Sy \&CC
+capability to identify it.
+The following convention is supported on some
+.Ux
+systems:
+The environment is to be searched for a
+.Ev \&CC
+variable,
+and if found,
+all occurrences of the prototype character are replaced by the character
+in the environment variable.
+This use of the
+.Ev \&CC
+environment variable
+is a very bad idea, as it conflicts with
+.Xr make 1 .
+.Pp
+Terminal descriptions that do not represent a specific kind of known
+terminal, such as
+.Em switch ,
+.Em dialup ,
+.Em patch ,
+and
+.Em network ,
+should include the
+.Sy \&gn
+(generic) capability so that programs can complain that they do not know
+how to talk to the terminal.
+(This capability does not apply to
+.Em virtual
+terminal descriptions for which the escape sequences are known.)
+.Pp
+If the terminal uses xoff/xon
+.Pq Tn DC3 Ns / Ns Tn DC1
+handshaking for flow control, give
+.Sy \&xo .
+Padding information should still be included so that routines can make
+better decisions about costs, but actual pad characters will not be
+transmitted.
+.Pp
+If the terminal has a
+.Dq meta key
+which acts as a shift key, setting the
+8th bit of any character transmitted, then this fact can be indicated with
+.Sy \&km .
+Otherwise, software will assume that the 8th bit is parity and it will
+usually be cleared.
+If strings exist to turn this
+.Dq meta mode
+on and off, they can be given as
+.Sy \&mm
+and
+.Sy \&mo .
+.Pp
+If the terminal has more lines of memory than will fit on the screen at once,
+the number of lines of memory can be indicated with
+.Sy \&lm .
+An explicit value of 0 indicates that the number of lines is not fixed,
+but that there is still more memory than fits on the screen.
+.Pp
+If the terminal is one of those supported by the
+.Ux
+system virtual
+terminal protocol, the terminal number can be given as
+.Sy \&vt .
+.Pp
+Media copy strings which control an auxiliary printer
+connected to the terminal can be given as
+.Sy \&ps :
+print the contents of the screen;
+.Sy \&pf :
+turn off the printer; and
+.Sy \&po :
+turn on the printer.
+When the printer is on, all text sent to the terminal will be sent to the
+printer.
+It is undefined whether the text is also displayed on the terminal screen
+when the printer is on.
+A variation
+.Sy \&pO
+takes one parameter and leaves the printer on for as many characters as the
+value of the parameter, then turns the printer off.
+The parameter should not exceed 255.
+All text, including
+.Sy \&pf ,
+is transparently passed to the printer while
+.Sy \&pO
+is in effect.
+.Pp
+Strings to program function keys can be given as
+.Sy \&pk ,
+.Sy \&pl ,
+and
+.Sy \&px .
+Each of these strings takes two parameters: the function key number
+to program (from 0 to 9) and the string to program it with.
+Function key numbers out of this range may program undefined keys
+in a terminal-dependent manner.
+The differences among the capabilities are that
+.Sy \&pk
+causes pressing the given key to be the same as the user typing the given
+string;
+.Sy \&pl
+causes the string to be executed by the terminal in local mode;
+and
+.Sy \&px
+causes the string to be transmitted to the computer.
+Unfortunately, due to lack of a definition for string parameters in
+.Nm ,
+only
+.Xr terminfo 5
+supports these capabilities.
+.Ss Glitches and Braindamage
+Hazeltine terminals, which do not allow `~' characters to be displayed,
+should indicate
+.Sy \&hz .
+.Pp
+The
+.Sy \&nc
+capability, now obsolete, formerly indicated Datamedia terminals,
+which echo
+.Sy \&\er \en
+for
+carriage return then ignore a following linefeed.
+.Pp
+Terminals that ignore a linefeed immediately after an
+.Sy \&am
+wrap, such as the Concept, should indicate
+.Sy \&xn .
+.Pp
+If
+.Sy \&ce
+is required to get rid of standout
+(instead of merely writing normal text on top of it),
+.Sy \&xs
+should be given.
+.Pp
+Teleray terminals, where tabs turn all characters moved over to blanks,
+should indicate
+.Sy \&xt
+(destructive tabs).
+This glitch is also taken to mean that it is not possible
+to position the cursor on top of a
+.Dq magic cookie ,
+and that
+to erase standout mode it is necessary to use delete and insert line.
+.Pp
+The Beehive Superbee, which is unable to correctly transmit the
+.Dv ESC
+or
+.Sy \&^C
+characters, has
+.Sy \&xb ,
+indicating that the
+.Dq \&f\&1
+key is used for
+.Dv ESC
+and
+.Dq \&f\&2
+for ^C.
+(Only certain Superbees have this problem, depending on the
+.Tn ROM . )
+.Pp
+Other specific terminal problems may be corrected by adding more
+capabilities of the form
+.Sy x Em x .
+.Ss Similar Terminals
+If there are two very similar terminals,
+one can be defined as being just like the other with certain exceptions.
+The string capability
+.Sy \&tc
+can be given
+with the name of the similar terminal.
+This capability must be
+.Em last ,
+and the combined length of the entries
+must not exceed 1024.
+The capabilities given before
+.Sy \&tc
+override those in the terminal type invoked by
+.Sy \&tc .
+A capability can be canceled by placing
+.Sy \&xx@
+to the left of the
+.Sy \&tc
+invocation, where
+.Sy \&xx
+is the capability.
+For example, the entry
+.Bd -literal -offset indent
+hn\||\|2621\-nl:ks@:ke@:tc=2621:
+.Ed
+.Pp
+defines a
+.Dq 2621\-nl
+that does not have the
+.Sy \&ks
+or
+.Sy \&ke
+capabilities,
+hence does not turn on the function key labels when in visual mode.
+This is useful for different modes for a terminal, or for different
+user preferences.
+.Sh FILES
+.Bl -tag -width /usr/share/misc/termcap.db -compact
+.It Pa /usr/share/misc/termcap
+File containing terminal descriptions.
+.It Pa /usr/share/misc/termcap.db
+Hash database file containing terminal descriptions (see
+.Xr cap_mkdb 1 ) .
+.El
+.Sh SEE ALSO
+.Xr cap_mkdb 1 ,
+.Xr ex 1 ,
+.Xr more 1 ,
+.Xr tset 1 ,
+.Xr ul 1 ,
+.Xr vi 1 ,
+.Xr ncurses 3 ,
+.Xr printf 3 ,
+.Xr termcap 3 ,
+.Xr term 5
+.Sh CAVEATS AND BUGS
+The
+.Em Note :
+.Nm
+functions
+were replaced by
+.Xr terminfo 5
+in
+.At V
+Release 2.0.
+The transition will be relatively painless if capabilities flagged as
+.Dq obsolete
+are avoided.
+.Pp
+Lines and columns are now stored by the kernel as well as in the termcap
+entry.
+Most programs now use the kernel information primarily; the information
+in this file is used only if the kernel does not have any information.
+.Pp
+The
+.Xr \&vi 1
+program allows only 256 characters for string capabilities, and the routines
+in
+.Xr termlib 3
+do not check for overflow of this buffer.
+The total length of a single entry (excluding only escaped newlines)
+may not exceed 1024.
+.Pp
+Not all programs support all entries.
+.Sh HISTORY
+The
+.Nm
+file format appeared in
+.Bx 3 .
diff --git a/share/termcap/termcap.src b/share/termcap/termcap.src
new file mode 100644
index 0000000..daed167
--- /dev/null
+++ b/share/termcap/termcap.src
@@ -0,0 +1,4576 @@
+# Copyright (c) 1980, 1985, 1989, 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.
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the University of
+# California, Berkeley and its contributors.
+# 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.
+#
+# @(#)termcap.src 8.2 (Berkeley) 11/17/93
+# $FreeBSD$
+
+# Termcap source file
+# John Kunze, Berkeley
+# Craig Leres, Berkeley
+#
+# Please submit changes with send-pr(1).
+#
+# << EOH - after reordering, above header lines survive and this line dies >>
+#
+# DESCRIPTION:
+# This file describes capabilities of various terminals, as needed by
+# software such as screen editors. It does not attempt to describe
+# printing terminals very well, nor graphics terminals. Someday.
+# See termcap(5) in the Unix Programmers Manual for documentation.
+#
+# Conventions: First entry is canonical name for model or mode, last entry
+# is verbose description. Others are mnemonic synonyms for the terminal.
+#
+# Terminal naming conventions:
+# Terminal names look like <manufacturer> <model> - <modes/options>
+# Certain abbreviations (e.g. c100 for concept100) are also allowed
+# for upward compatibility. The part to the left of the dash, if a
+# dash is present, describes the particular hardware of the terminal.
+# The part to the right can be used for flags indicating special ROM's,
+# extra memory, particular terminal modes, or user preferences.
+# All names should be in lower case, for consistency in typing.
+#
+# The following are conventionally used flags:
+# rv Terminal in reverse video mode (black on white)
+# 2p Has two pages of memory. Likewise 4p, 8p, etc.
+# w Wide - in 132 column mode.
+# pp Has a printer port which is used.
+# na No arrow keys - termcap ignores arrow keys which are
+# actually there on the terminal, so the user can use
+# the arrow keys locally.
+#
+# To easily test a new terminal description, put it in $HOME/.termcap
+# and programs will look there before looking in /etc/termcap.
+# You can also setenv TERMPATH to a list of full pathnames (separated
+# by spaces or colons) to be searched by tgetent() in the order listed.
+# The TERMCAP environment variable is usually set to the termcap
+# entry itself to avoid reading files when starting up a program.
+#
+# If you absolutely MUST check for a specific terminal (this is discouraged)
+# check for the 2nd entry (the canonical form) since all other codes are
+# subject to change. We would much rather put in special capabilities
+# to describe your terminal than have you key on the name.
+#
+# Special manufacturer codes:
+# A: hardcopy daisy wheel terminals
+# M: Misc. (with only a few terminals)
+# q: Homemade
+# s: special (dialup, etc.)
+#
+# Comments in this file begin with # - they cannot appear in the middle
+# of a termcap entry. Individual entries are commented out by
+# placing a period between the colon and the capability name.
+#
+# To add a termcap entry under FreeBSD for a new terminal type, insert
+# the entry in the appropriate location in /etc/termcap then issue this
+# command:
+#
+# cap_mkdb -f /usr/share/misc/termcap /etc/termcap
+#
+# Terminfo source entries can be converted to termcap entries with the
+# tic program that is part of the ncurses distribution, see the ports
+# section.
+#
+#
+# This file is to be installed with an editor script (reorder)
+# that moves the most common terminals to the front of the file.
+# # --------------------------------
+#
+# A: DAISY WHEEL PRINTERS
+#
+# The A manufacturer represents Diablo, DTC, Xerox, Qume, and other Daisy
+# wheel terminals until such time as termcap distinguishes between them
+# enough to justify separate codes.
+# This is an "experimental" entry for the SRI Agiles.
+# It has been tried in a minimal way -- the Agile did not blow up!
+# However, it has not been exhaustively tested.
+# Anyone who tries it and finds it wanting should get in touch with:
+# Ralph Keirstead (ralph@sri-unix);
+# EK352; SRI International; 333 Ravenswood Avenue; Menlo Park, CA 94025
+agile|agiles|sri agiles:\
+ :bs:hc:os:pl:co#132:do=^J:kb=^H:up=\E\n:\
+ :hu=\E0:hd=\E9:if=/usr/share/tabset/std:is=\EE\EF\EJ:
+1620|1720|450|ipsi|diablo 1620:\
+ :do=^J:ct=\E2:st=\E1:ch=\E\t%i%.:\
+ :if=/usr/share/tabset/xerox1720:\
+ :kb=^H:le=^H:bs:co#132:hc:hu=\EU:hd=\ED:os:pt:up=\E\n:
+1620-m8|1640-m8|diablo 1620 w/8 column left margin:\
+ :do=^J:co#124:is=\r \E9:tc=1620:
+1640|1740|630|1730|x1700|diablo|xerox|diablo 1640:\
+ :if=/usr/share/tabset/xerox1730:\
+ :us=\EE:ue=\ER:so=\EW:se=\E&:tc=1620:
+1640-lm|1740-lm|630-lm|1730-lm|x1700-lm|diablo-lm|xerox-lm|\
+ diablo 1640 with indented left margin:\
+ :if=/usr/share/tabset/xerox1730-lm:\
+ :co#124:us=\EE:ue=\ER:so=\EW:se=\E&:tc=1620:
+# DTC 382 with VDU. Has no cd so we fake it with ce. Standout works but
+# won't go away without dynamite. The terminal has tabs, but I'm getting
+# tired of fighting the braindamage. If no tab is set or the terminal's
+# in a bad mood, it glitches the screen around all of memory. Note that
+# return puts a blank ("a return character") in the space the cursor was
+# at, so we use ^P return (and thus ^P newline for newline). Note also
+# that if you turn off pt and let Unix expand tabs, curses won't work
+# (current version) because it doesn't turn off this bit, and cursor
+# addressing sends a tab for row/column 9. What a losing terminal! I
+# have been unable to get tabs set in all 96 lines - it always leaves at
+# least one line with no tabs in it, and once you tab through that line,
+# it completely weirds out.
+dtc|ps|dtc382|382:\
+ :do=^J:al=^P^Z:am:le=^H:\
+ :bs:co#80:ce=^P^U:cl=20^P^]:cm=%r^P^Q%.%.:dc=^X:\
+ :dl=^P^S:ei=^Pi:ho=^P^R:im=^PI:ve=^Pb:vs=^PB:pc=\177:te=20^P^]:\
+ :li#24:nd=^PR:.se=^P \200:.so=^P \002^PF:us=^P \020:ue=^P \200:\
+ :up=^P^L:nc:xr:xs:da:db:.pt:cr=^P^M:cd=^P^U^P^S^P^S:\
+ :if=/usr/share/tabset/dtc382:
+dtc300s|300|300s|dtc 300s:\
+ :ct=\E3:st=\E1:do=^J:\
+ :kb=^h:le=^H:bs:co#132:hc:hu=\EH:hd=\Eh:os:pt:up=^Z:
+gsi:\
+ :le=^H:bs:co#132:hc:hd=\Eh:hu=\EH:os:pt:up=^Z:do=^J:
+# This used to have :pl: - maybe they meant :pt:?
+aj830|aj832|aj|anderson jacobson:\
+ :do=^J:le=^H:bs:hc:hd=\E9:hu=\E8:os:up=\E7:
+# From Chris Torek <chris@gyre.umd.edu> Thu, 7 Nov 85 18:21:58 EST
+aj510|AJ510|Anderson-Jacobson model 510:\
+ :ip=.1*:so=\E"I:us=\E"U:cd=\E'P:ce=\E'L:cl=^L:cm=\E#%+ %+ :\
+ :dl=2*\E&D:ue=\E"U:co#80:li#24:se=\E"I:al=2*\E&I:im=\E'I:ei=\E'J:\
+ :dc=.1*\E'D:up=\EY:nd=\EX:bs:am:mi:ti=\E"N:te=\E"N:\
+ :ku=\EY:kd=\EZ:kl=\EW:kr=\EX:pc=\177:
+# From cbosg!ucbvax!pur-ee!cincy!chris Thu Aug 20 09:09:18 1981
+# This is incomplete, but it's a start.
+5520|nec|spinwriter|nec 5520:\
+ :ct=\E3:st=\E1:do=^J:kb=^h:le=^H:bs:co#132:hc:hu=\E]s\E9\E]W:\
+ :hd=\E]s\n\E]W:os:pt:up=\E9:
+qume5|qume|Qume Sprint 5:\
+ :ct=\E3:st=\E1:do=^J:\
+ :kb=^h:le=^H:bs:co#80:hc:hu=\EH:hd=\Eh:os:pt:up=^Z:
+q102|qume102|Qume 102:\
+ :al=\EE:am:bs:bt=\EI:\
+ :cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:ct=\E3:\
+ :dc=\EW:dl=\ER:do=^J:ho=^^:ic=\EQ:\
+ :k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:kd=^J:kl=^H:kr=^L:ku=^K:\
+ :le=^H:li#24:ma=^K^P^L :nd=^L:\
+ :se=\EG0:sg#1:so=\EG4:st=\E1:\
+ :ue=\EG0:ug#1:up=^K:us=\EG8:
+# From ucbvax!mtxinu!sybase!tim (Tim Wood) Fri Sep 27 10:25:24 PDT 1985
+# This entry supports line and character insert and delete, scroll up and
+# down and the arrow keys. To use it, perform the following on your qvt-101
+# 1) enter SET-UP mode, select the SET 3 line;
+# 2) move the cursor to the EMULATION item and hit SPACE
+# until QVT-101B appears
+# 3) enter SHIFT-S
+# 4) exit SET-UP - the terminal is now configured
+q101|qvt101|qvt-101|Qume 101 $310 special:\
+ :al=\EE:am:bt=\EI:ce=\Et:cl=\E*:dc=\EW:\
+ :dl=\ER:do=^J:ic=\EQ:md=\E(:me=\EG0:mh=\E):\
+ :le=^H:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:ku=^K:\
+ :vs=\EM4\040\200\200\200:mr=\EG4:ms:so=\EG4:se=\EG1:
+# I suspect the xerox1720 is the same as the diablo 1620.
+x1720|1700|x1750|xerox 1720:\
+ :co#132:le=^H:bs:hc:os:pt:do=^J:ct=\E2:st=\E1:
+# # --------------------------------
+#
+# B: AT&T ATT
+#
+# AT&T Teletype 5410 Terminal (a.k.a. 4410)
+# From: carvalho%kepler@Berkeley.EDU (Marcio de Carvalho)
+# Date: Thu, 26 Feb 87 09:16:50 PST
+#
+# Although the 5410 supports labels, it blanks the screen after
+# each label is programmed creating to much visual activity.
+# To use the labels, use FL=\E[%d;00q%-16s
+#
+5410|4410|tty5410|att4410|AT&T Teletype 5410 terminal with 80 columns:\
+ :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=5\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:ic=\E[@:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :li#24:nd=\E[C:se=\E[m:so=\E[2;7m:sr=\EM:\
+ :ue=\E[m:up=\E[A:us=\E[4m:EE=\E[m:BO=\E[0;7m:DS=\E[2m:\
+ :KM=/usr/lib/ua/kmap.5410:is=\E[0m^O\E[?6l:kn#8:\
+ :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k4=\EOg:k6=\EOh:\
+ :k7=\EOi:k8=\EOj:ko=nd,up,ho:
+# AT&T 630 MTG DMD from muller%sdcc7@ucsd.edu (Keith Muller)
+att630|dmd630|ATT630|630DMD|630dmd|630MTG|AT&T 630 windowing terminal:\
+ :am:da:db:ms:bs:co#80:it#8:li#60:lm#0:\
+ :up=\E[A:do=\E[B:nd=\E[C:le=\b:UP=\E[%dA:DO=\E[%dB:RI=\E[%dC:\
+ :LE=\E[%dD:cm=\E[%i%d;%dH:ho=\E[H:bt=\E[Z:\
+ :sf=\n:sr=\EM:SF=\E[%dS:SR=\E[%dT:us=\E[4m:ue=\E[m:so=\E[7m:se=\E[m:\
+ :mr=\E[7m:mh=\E[2m:mb=\E[5m:me=\E[m:ce=\E[K:cd=\E[J:cl=\E[H\E[J:\
+ :dc=\E[P:dl=\E[M:al=\E[L:DC=\E[%dP:DL=\E[%dM:AL=\E[%dL:\
+ :ic=\E[@:IC=\E[%d@:sc=\E7:rc=\E8:i2=\E[m:rs=\Ec:\
+ :pf=\E[?4i:po=\E[?5i:\
+ :kb=\b:kC=\E[2J:kh=\E[H:ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:
+dmd630-24|att630-24|ATT630-24|630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines:\
+ :li#24:tc=att630:
+dmd615|att615|ATT615|615DMD|615MTG|AT&T 615 windowing terminal 80 column:\
+ :li#24:tc=att630:
+dmd615-w|att615-w|ATT615-w|615DMD-w|615MTG-w|AT&T 615 windowing terminal 132 column:\
+ :li#24:co#132:tc=att630:
+dmd620|att620|ATT620|620DMD|620MTG|AT&T 620 windowing terminal 80 column:\
+ :li#24:tc=att630:
+dmd620-w|att620-w|ATT620-w|620DMD-w|620MTG-w|AT&T 620 windowing terminal 132 column:\
+ :li#24:co#132:tc=att630:
+# AT&T Teletype 5420 Terminal (a.k.a. 4415) June 5, 1985
+5420|4415|tty5420|att4415|AT&T Teletype 5420 terminal:\
+ :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:im=\E[4h:ei=\E[4l:\
+ :kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :li#24:nd=\E[C:se=\E[m:so=\E[2;7m:sr=\EM:\
+ :ue=\E[m:up=\E[A:us=\E[4m:EE=\E[m:BO=\E[0;7m:DS=\E[2m:\
+ :KM=/usr/lib/ua/kmap.5420:\
+ :is=\E[0m^O\E[1;2;3;4;6l\E[12;13;14;20l\E[?6;97;99l\E[?7h\E[4i\Ex\E[25;1j\212\E[8;0j\E[9;0j\E[10;0j\E[19;1j:\
+ :db:mi:pt:kn#8:k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:\
+ :k7=\EOi:k8=\EOj:ve=\E[11;0j:\
+ :vs=\E[11;1j:ko=bt,nd,up,dc,dl,ho,im,al:
+# AT&T Teletype 5425 Terminal (a.k.a 4425) June 5, 1985
+5425|4425|tty5425|att4425|AT&T Teletype 5425:\
+ :FL=\E[%d;00q%-16s\E~:FE=\E|:KM=/usr/lib/ua/kmap.5425:\
+ :is=\E[0m^O\E[1;2;3;4;6l\E[12;13;14;20l\E[?6l\E[?7h\E[4i\E[9;0j\E[10;0j\E[11;0j\E[21;1j\E[25;1j\212:\
+ :ve=\E[12;0j:vs=\E[12;1j:tc=5420:
+t4|4420|tty4420|Teletype 4420:\
+ :vs=\ER:ve=\ER:am:da:db:mi:cr=\EG:\
+ :nl=\EG\EB:li#23:\
+ :co#80:cl=\EH\EJ:cd=\EJ:cm=\EY%+ %+ :\
+ :bs:up=\E7:do=\EB:nd=\EC:al=\EL:\
+ :dl=\EM:dc=\EP:ic=\E\136:sf=\EH\EM\EY5 :sr=\ET:kb=^H:
+pc6300plus|6300|6300plus:\
+ :al=\E[1L:am:bs:cd=\E[0J:ce=\E[0K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:co#80:\
+ :dc=\E[1P:dl=\E[1M:do=\E[B:ho=\E[H:\
+ :ic=\E[1@:kb=\10:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:li#24:\
+ :k1=\EOc:k2=\EOd:k3=\EOe:k4=\EOf:k5=\EOg:k6=\EOh:k7=\EOi:k8=\EOj:\
+ :k9=\EOk:k10=\EOu:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:up=\E[A:us=\E[4m:\
+ :EE=\E[m:BO=\E[0;7m:CV=\E[=C:CI=\E[=1C:KM=/usr/lib/ua/kmap.s5:
+# AT&T 6386 decompiled and hacked from SVR3.1 terminfo
+# From: caron@polya.Stanford.EDU (Ilan G. Caron)
+# Problems: (1) The mode lines are screwed up - they're not in standout
+# (an extraneous ESC-RD sequence is prepended to each mode line).
+# (2) Cursor addressing into the mode line is often off-by-one,
+# in particular, when the percentage indicator is updated.
+# (3) When reverting to a single window (C-x 1), the display
+# needs refreshing (an extraneous ESC-S seems to be generated).
+# (The above 3 might be manifestations of the same problem).
+# (4) Deletes sometime don't, especially when done fast - does this
+# suggest that I need to pad something?
+AT386|at386|386AT|386at|at/386 console:\
+ :am:bw:eo:xo:Co#8:NC#3:co#80:li#25:pa#64:kn#6:\
+ :@7=\E[Y:AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+ :F1=\EOZ:F2=\EOA:IC=\E[%d@:LE=\E[%dD:RI=\E[%dC:\
+ :SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
+ :ac=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~:\
+ :ae=\E[10m:al=\E[1L:as=\E[12m:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[2J\E[H:cm=\E[%i%2;%2H:cr=\r:dc=\E[P:dl=\E[1M:\
+ :do=\E[B:ho=\E[H:ic=\E[1@:is=\E[0;10;39m:k1=\EOP:\
+ :k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOT:k6=\EOU:k7=\EOV:\
+ :k8=\EOW:k9=\EOX:k;=\EOY:kB=^]:kC=\E[2J:kD=\E[P:\
+ :kI=\E[@:kM=\E0:kN=\E[U:kP=\E[V:kb=\b:kd=\E[B:kh=\E[H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=\E[D:mb=\E[5m:md=\E[1m:\
+ :me=\E[0;10m:mk=\E[9m:mr=\E[7m:nd=\E[C:op=\E[0m:\
+ :se=\E[m:sf=\E[S:so=\E[43;30m:ta=\t:ue=\E[m:up=\E[A:\
+ :sr=\E[T:TC=\E[%d@:IC=\E[%d@:\
+ :us=\E[4m:vb=^G:bc=\E[D:
+s4|PC7300|unixpc|pc7300|7300|3b1|Safari 4:\
+ :so=\E[2;7m:DS=\E[2m:XS=\E[9m:KM=/usr/lib/ua/kmap.s4:tc=pc6300plus:
+# AT&T Teletype 610 Terminal
+b610|610|610bct|tty610:\
+ :CV=\E[25h:CI=\E[25l:KM=/usr/lib/ua/kmap.s4:\
+ :FL=\E[%d;00q%-16s\E[0p:FE=\E[2p:cl=\E[1;1H\E[J:\
+ :is=\E[0m^O\E[25;1|^J\E[8;0|\E[4;13;20l\E[?5l\E[12h\E[?7h\E[?4i:\
+ :ve=\E[?12l:vs=\E[?12h:tc=5420:
+# # --------------------------------
+#
+# C: CONTROL DATA
+#
+cdc456|cdc:\
+ :do=^J:li#24:co#80:cl=^Y^X:nd=^L:up=^Z:le=^H:bs:\
+ :cm=\E1%+ %+ :ho=^Y:al=\E\114:dl=\E\112:ce=^V:cd=^X:am:
+cdc456tst:\
+ :do=^J:li#24:co#80:cl=^y^x:le=^H:bs:cm=\E1%+ %+ :am:
+# # --------------------------------
+#
+# D: DATAMEDIA
+#
+dm1520|dm1521|1521|1520|datamedia 1520:\
+ :do=^J:am:le=^H:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %+ :co#80:ho=^Y:\
+ :ku=^_:kd=^J:kl=^H:kr=^\:kh=^Y:\
+ :li#24:nd=^\:up=^_:xn:ma=^\ ^_^P^YH:pt:
+dm2500|datamedia2500|2500|datamedia 2500:\
+ :do=^J:al=15^P\n^X^]^X^]:le=^H:bs:ce=^W:cl=^^^^\177:\
+ :cm=^L%r%n%.%.:co#80:dc=10*^P\b^X^]:dl=10*^P^Z^X^]:\
+ :dm=^P:ed=^X^]:ei=10\377\377^X^]:ho=^B:ic=10*^P^\^X^]:\
+ :im=^P:li#24:nc:nd=^\:pc=\377:so@=^N:se=^X^]:up=^Z:
+dm3025|datamedia 3025a:\
+ :MT:is=\EQ\EU\EV:do=^J:\
+ :al=130\EP\n\EQ:le=^H:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :\
+ :co#80:dc=6\b:dl=130\EP\EA\EQ:dm=\EP:ed=\EQ:ei=\EQ:ho=\EH:\
+ :im=\EP:ip=6:li#24:nd=\EC:pt:so=\EO1:se=\EO0:up=\EA:
+3045|dm3045|datamedia 3045a:\
+ :is=\EU\EV:do=^J:\
+ :am:le=^H:bs:cd=2\EJ:ce=\EK:cl=2\EM:cm=\EY%r%+ %+ :co#80:\
+ :dc=6\EB:ei=\EP:ho=\EH:im=\EP:ip=6:\
+ :k0=\Ey\r:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:\
+ :k5=\Et\r:k6=\Eu\r:k7=\Ev\r:k8=\Ew\r:k9=\Ex\r:\
+ :kh=\EH:ku=\EA:kr=\EC:li#24:nd=\EC:pc=\177:pt:eo:ul:up=\EA:xn:
+# dt80/1 is a vt100 lookalike, but it doesn't seem to need any padding.
+dt80|dmdt80|dm80|datamedia dt80/1:\
+ :do=^J:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=%i\E[%d;%dH:ho=\E[H:\
+ :nd=\E[C:sr=\EM:so=\E[7m:se=\E[m:up=\E[A:us=\E[4m:ue=\E[m:tc=vt100:
+# except in 132 column mode, where it needs a little padding.
+# This is still less padding than the vt100, and you can always turn on
+# the ^S/^Q handshaking, so you can use vt100 flavors for things like
+# reverse video.
+dt80w|dmdt80w|dm80w|datamedia dt80/1 in 132 char mode:\
+ :do=^J:cd=20\E[0J:co#132:ce=20\E[0K:\
+ :cm=5\E[%i%d;%dH:cl=50\E[H\E[2J:up=5\E[A:tc=dmdt80:
+# # --------------------------------
+#
+# H: HAZELTINE
+#
+# Since nd is blank, when you want to erase something you
+# are out of luck. You will have to do ^L's a lot to
+# redraw the screen. h1000 is untested. It doesn't work in
+# vi - this terminal is too dumb for even vi. (The code is
+# there but it isn't debugged for this case.)
+h1000|hazeltine 1000:\
+ :le=^H:bs:ho=^K:cl=^L:nd= :co#80:li#12:do=^J:
+# Note: the h1552 appears to be the first Hazeltine terminal which
+# is not braindamaged. It has tildes and backprimes and everything!
+# Be sure the auto lf/cr switch is set to cr.
+h1552|hazeltine 1552:\
+ :do=^J:al=\EE:dl=\EO:k1=\EP:l1=blue:k2=\EQ:\
+ :l2=red:k3=\ER:l3=green:tc=vt52:
+h1552rv|hazeltine 1552 reverse video:\
+ :do=^J:so=\ES:se=\ET:tc=h1552:
+# From cbosg!ucbvax!pur-ee!cincy!chris Thu Aug 20 09:09:18 1981
+h1420|hazeltine 1420:\
+ :do=^J:le=^H:bs:am:li#24:co#80:al=\E^Z:dl=\E^S:cd=\E^X:cl=\E\034:\
+ :up=\E^L:nd=^P:ce=\E^O:ta=^N:cm=\E^Q%r%.%+ :so=\E\037:se=\E^Y:
+# New "safe" cursor movement (11/87) from cgs@umd5. Prevents freakout with
+# out-of-range args and tn3270. No hz since it needs to receive ~'s.
+h1500|hazeltine 1500:\
+ :al=40~^Z:am:bs:cd=10~^X:ce=~^O:cl=~^\:cm=~^Q%r%>^^ %+`%+`:\
+ :co#80:dl=40~^S:do=~^K:ho=~^R:kh=~^R:kr=^P:ku=~^L:kd=^J:kl=^H:\
+ :le=^H:li#24:nd=^P:so=~^_:se=~^Y:up=~^L:.cm=~^Q%r%.%.:
+# h1510 assumed to be in sane escape mode. Else use h1500.
+h1510|hazeltine 1510:\
+ :do=^J:al=\E^Z:am:le=^H:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%.%.:\
+ :co#80:dl=\E^S:do=\E^K:hz:li#24:nd=^P:.se=\E^_:.so=\E^Y:up=\E^L:
+h1520|hazeltine 1520:\
+ :do=^J:al=~^Z:am:le=^H:bs:cd=~^X:ce=~^O:cl=~\034:cm=~^Q%r%.%.\200:\
+ :co#80:dl=~^S:do=~^K:hz:li#24:nd=^P:se=~^Y:so=~\037:up=~^L:ho=~^R:
+# Note: h2000 won't work well because of a clash between upper case and ~'s.
+h2000|hazeltine 2000:\
+ :do=^J:al=6~^z:am:le=^H:bs:cl=6~^\:cm=~^q%r%.%.:co#74:\
+ :dl=6~^s:ho=~^r:li#27:nc:pc=\177:
+# Hazeltine esprit entries from Univ of Utah Tue Feb 1 06:39:37 1983
+# J.Lepreau, lepreau@utah-cs, harpo!utah-cs!lepreau
+esprit|hazeltine esprit:\
+ :al=40\E^Z:bs:cd=5\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%>^^ %+`%+`:co#80:\
+ :dl=40\E^S:do=\E^K:ho=\E^R:li#24:nd=^P:se=\E^Y:so=\E^_:up=\E^L:
+esprit-am|hazeltine esprit auto-margin:\
+ :am:tc=esprit:
+# # --------------------------------
+#
+# I: IBM
+#
+# ibm61 and ibm63 from Warren Gish (cswarren@violet.berkeley.edu).
+# installed 12-17-86.
+# 3161 only opens a new line if a null line exists on the screen.
+# To ensure a null line exists, an SBA is performed, positioning the
+# Buffer Address in column 0 of the last line. The last line is then
+# cleared to nulls, BA mode is canceled, and the new line is opened
+# at the cursor position.
+ibm61|ibm3161|3161|IBM 3161-11:\
+ :am:bs:bw:cl=\EL:li#24:co#80:cd=\EJ:al=\EX7 \EI\E Z\EN:\
+ :ce=\EI:cm=\EY%+\040%+\040:nd=\EC:up=\EA:do=\EB:\
+ :dl=\EO:dc=\EQ:kd=\EB:ku=\EA:kl=\ED:kr=\EC:kh=\EH:\
+ :us=\E4\102:ue=\E4\100:so=\E4\110:se=\E4\100:
+# From seth@sirius.ctr.columbia.edu Sun May 20 11:02:34 1990
+ibm3163|ibm63|i3163|3163|IBM 3163:\
+ :al=\EN:am:bs:bt=\E2:cd=\EJ:ce=\EI:cl=\EL:\
+ :cm=\EY%+\040%+\040:co#80:ct=\E 1:dc=\EQ:\
+ :dl=\EO:do=\EB:ds=\E#\072:es:fs=\E=:ho=\EH:\
+ :hs:ic=\EP:kA=\EN:kB=\E2:kC=\EQ:\
+ :kD=\EQ:kE=\EI:kI=\EI:kL=\EO:kS=\EJ:\
+ :kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:kh=\EH:\
+ :le=\ED:li#24:mb=\E4D:md=\E4H:me=\E4@:\
+ :mk=\E4P:mr=\E4A:nd=\EC:\
+ :ds=\E#\::es:fs=\E=\E#;:hs:ts=\E=:ws#80:\
+ :se=\E4@:so=\E4I:ue=\E4@:up=\EA:us=\E4B:
+ibm|ibm3101|3101|i3101|IBM 3101-10:\
+ :do=^J:ct=\EH:st=\E0:\
+ :if=/usr/share/tabset/ibm3101:\
+ :am:le=^H:bs:cl=\EK:li#24:co#80:nd=\EC:up=\EA:cd=\EJ:ce=\EI:\
+ :kd=\EB:kl=\ED:kr=\EC:ku=\EA:ho=\EH:cm=\EY%+\40%+\40:pt:
+ibm327-789|ibm-3277-2|ibm-3278-2|ibm-3278-3|ibm-3278-4|ibm-3278-5|ibm-3279-2|ibm-3279-3:\
+ :tc=ibm327-56:
+ibm327-56|ibm-3275-2|ibm-3276-2|ibm-3276-3|ibm-3276-4|line mode IBM 3270 style:\
+ :gn:ce=\r:cl=\r\n:ho=\r:
+ibm-apl|apl|IBM apl terminal simulator:\
+ :li#25:tc=dm1520:
+# ibmapa* and ibmmono entries come from ACIS 4.3 distribution
+rtpc|ibmapa16|ibm6155|IBM 6155 Extended Monochrome Graphics Display:\
+ :ts=\Ej\EY@%+ \Eo:ds=\Ej\EY@\40\EI\Ek:li#32:tc=ibmconsole:
+# Advanced Monochrome (6153) and Color (6154) Graphics Display:
+ibmapa8c|ibmapa8|ibm6154|ibm6153|IBM 6153/4 Advanced Graphics Display:\
+ :ts=\Ej\EY?%+ \Eo:ds=\Ej\EY?\40\EI\Ek:li#31:tc=ibmconsole:
+ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display color termcap:\
+ :ts=\Ej\EY?%+ \Eo:ds=\Ej\EY?\40\EI\Ek:li#31:mh=\EF\Ef7;:tc=ibmega-c:
+ibmmono|ibmconsole|ibm5151|IBM workstation monochrome:\
+ :se=\Ez:so=\EZ:sr=\EA:al=\EL:dl=\EM:\
+ :kb=^H:us=\EW:ue=\Ew:\
+ :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\EY:\
+ :k0=\E<:I0=f10:kI=\000:kh=\EH:kR=\EG:kP=\Eg:kF=\EE:kN=\EE:\
+ :md=\EZ:me=\Ew\Eq\Ez\EB:mk=\EF\Ef0;\Eb0;:mr=\Ep:\
+ :ts=\Ej\EY8%+ \Eo:fs=\Ek:ds=\Ej\EY8\40\EI\Ek:es:hs:sb:tc=ibm3101:
+ibmega-c|ibm5154-c|IBM Enhanced Color Display color termcap:\
+ :se=\EB:so=\EF\Ef3;:ue=\EB:us=\EF\Ef2;:tc=ibmconsole:
+# from marc pawliger--marc@ibminet.awdpa.ibm.com
+# also in /usr/lpp/bos/bsdsysadmin.
+hft-c|ibm8512|ibm8513|IBM High Function Terminal:\
+ :co#80:li#25:am:ht:\
+ :cm=\E[%i%d;%dH:ti=\E[20;4l\E[?7h\Eb:te=\E[20h:\
+ :nd=\E[C:up=\E[A:do=^J:ho=\E[H:\
+ :ec=\E[%dX:\
+ :cl=\E[H\E[J:cd=\E[J:el=\E[K:\
+ :AL=\E[%dL:DL=\E[%dM:al=\E[L:dl=\E[M:\
+ :im=\E[4h:ei=\E[4l:mi:\
+ :dm=\E[4h:ed=\E[4l:\
+ :so=\E[7m:se=\E[m:ul=\E[4m:ue=\E[m:ms:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\
+ :as=^N:ae=^O:sc=\E[s:rc=\E[u:\
+ :kb=\E[D:kf=\E[C:ku=\E[A:kd=\E[B:kh=\E[H:\
+ :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\
+ :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\E[009q:k0=\E[010q:\
+ :is=\Eb\E[m^O\E[?7h:rs=\Eb\E[m^O\E[?7h\E[H\E[J:
+hft|AIWS High Function Terminal:\
+ :al=\E[L:cr=^M:do=^J:sf=^J:bl=^G:am:le=^H:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:li#25:\
+ :dc=\E[P:dl=\E[M:ho=\E[H:\
+ :ic=\E[@:im=\E6:ei=\E6:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[0m:\
+ :ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:kh=\E[H:kb=^H:\
+ :nd=\E[C:ta=^I:up=\E[A:xo:\
+ :ue=\E[m:us=\E[4m:se=\E[m:so=\E[7m:\
+ :kP=\E[159q:kN=\E[153q:\
+ :k1=\E[001q:k2=\E[002q:k3=\E[003q:k4=\E[004q:\
+ :k5=\E[005q:k6=\E[006q:k7=\E[007q:k8=\E[008q:\
+ :k9=\E[009q:ka=\E[010q:
+# From pryor@math.berkeley.edu
+ibm5081|ibmmpel|IBM 5081 1024x1024 256/4096 color display:\
+ :ts=\Ej\EYA%+ \Eo:fs=\Ek:ds=\Ej\EYA\40\EI\Ek:es:hs:\
+ :li#33:tc=ibmconsole:
+ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 enhanced color display:\
+ :ts=\Ej\EYA%+ \Eo:fs=\Ek:ds=\Ej\EYA\40\EI\Ek:es:hs:\
+ :li#33:tc=ibmega-c:
+# ibm3151 and ibm3151-25 are modified from a Usenet posting
+# from http://www.cs.utk.edu/~shuford/terminal/ibm_3161.termcap.txt
+# Newsgroups: comp.terminals Message-ID: <1rkqgnINNdso@uwm.edu>
+ibm3151|ibm3152|ibm3162|Ibm3162|ibm3151-pc:\
+ :am:mi:ms:\
+ :co#80:li#24:kn#9:\
+ :cd=\EJ:ce=\EI:cl=\EH\EJ:cm=\EY%+ %+ :dc=\EQ:dl=\EO:\
+ :ho=\EH:k1=\Ea\n:k2=\Eb\n:k3=\Ec\n:k4=\Ed\n:k5=\Ee\n:\
+ :k6=\Ef\n:k7=\Eg\n:k8=\Eh\n:k9=\Ei\n:kb=\b:kd=\EB:\
+ :kh=\EH:kl=\ED:kr=\EC:ku=\EA:nd=\EC:se=\E4>b:so=\E4!a:\
+ :te=\E>A:ti=\E>B:ue=\E4=b:up=\EA:us=\E4"a:bc=\ED:\
+ :U8=\E<A:U9=\E<@:\
+ :Us=q:Uv=x:Ux=k:Uw=j:Uz=m:Uy=l:Uu=n:Uq=w:Up=v:Ut=t:Ur=u:\
+ :Ub=\E4$a:Uc=\E4@:Uf=\E4(a:Ug=\E4@:U6=\E r!! 8"P:U7=\E r!! 8$D:\
+ :nl=\EB:ko=le,do,nd,up,dc,dl,cd,ce,ho:
+ibm3151-25|ibm3152-25:\
+ :am:mi:ms:\
+ :co#80:li#25:kn#9:\
+ :cd=\EJ:ce=\EI:cl=\EH\EJ:cm=\EY%+ %+ :dc=\EQ:dl=\EO:\
+ :ho=\EH:k1=\Ea\n:k2=\Eb\n:k3=\Ec\n:k4=\Ed\n:k5=\Ee\n:\
+ :k6=\Ef\n:k7=\Eg\n:k8=\Eh\n:k9=\Ei\n:kb=\b:kd=\EB:\
+ :kh=\EH:kl=\ED:kr=\EC:ku=\EA:nd=\EC:se=\E4>b:so=\E4!a:\
+ :te=\E>A:ti=\E>B:ue=\E4=b:up=\EA:us=\E4"a:bc=\ED:\
+ :U8=\E<A:U9=\E<@:\
+ :Us=q:Uv=x:Ux=k:Uw=j:Uz=m:Uy=l:Uu=n:Uq=w:Up=v:Ut=t:Ur=u:\
+ :Ub=\E4$a:Uc=\E4@:Uf=\E4(a:Ug=\E4@:U6=\E r!! 9"P:U7=\E r!! 9$D:\
+ :nl=\EB:ko=le,do,nd,up,dc,dl,cd,ce,ho:
+# # --------------------------------
+#
+# M: MISCELLANEOUS TERMINALS
+#
+# The tab 132 uses xon/xoff, so no padding needed.
+# ks/ke have nothing to do with arrow keys.
+# is sets 80 col mode, normal video, autowrap on (for am).
+# Seems to be no way to get rid of status line.
+abm80|amtek business machines 80:\
+ :do=^J:al=\E^Z:am:le=^H:bs:cd=\E^X:ce=\E^O:cl=\E^\:cm=\E^Q%r%+ %+ :\
+ :co#80:dl=\E^S:do=\E^K:li#24:nd=^P:.so=\E^_:.se=\E^Y:up=\E^L:\
+ :bw:bt=^T:ho=\E^R:
+tab132|tab|tab132-15|tab 132-15:\
+ :is=\E[?7h\E[?3l\E[?5l:dN@:ks@:ke@:do=^J:\
+ :da:db:al=\E[L:dl=\E[M:dc=\E[P:ei=\E[4l:im=\E[4h:cm=\E[%i%d;%dH:\
+ :ku=\E[A:kd=\E[B:kl=\E[D:tc=vt100:
+tab132w:\
+ :co#132:is=\E[?7h\E[?3h\E[?5l:tc=tab132:
+tab132rv:\
+ :is=\E[?7h\E[?3l\E[?5h:tc=tab132:
+tab132wrv:\
+ :is=\E[?7h\E[?3h\E[?5h:tc=tab132w:
+# This used to say "de#001202" which presumably refers to the stty bits
+# that need to be set for some version of Unix. We need the real delay
+# requirements in MS.
+mw2|Multiwriter 2:\
+ :do=^J:co#132:hc:os:
+ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator:\
+ :do=^J:co#80:li#24:cl=50\E[;H\E[2J:sf=5\ED:\
+ :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\
+ :ce=3\E[K:cd=50\E[J:so=\E[7m:se=\E[m:us=2\E[4m:ue=2\E[m:\
+ :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\
+ :rf=/usr/share/lib/tabset/vt100:\
+ :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\
+ :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:\
+ :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:vt#3:xn:\
+ :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:
+# luna's BMC terminal emulator
+luna|luna68k|LUNA68K Bitmap console:\
+ :li#46:co#88:tc=ansi:
+# SCO console and SOS-Syscons console for 386bsd
+scoansi|SCO Extended ANSI standard crt:\
+ :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%d;%dH:co#80:\
+ :dc=\E[P:dl=\E[M:do=\E[B:bt=\E[Z:ho=\E[H:ic=\E[@:li#25:\
+ :nd=\E[C:pt:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:up=\E[A:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:\
+ :k7=\E[S:k8=\E[T:k9=\E[U:k0=\E[V:\
+ :kb=^h:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:eo:sf=\E[S:sr=\E[T:\
+ :mb=\E[5m:md=\E[1m:me=\E[m:\
+ :GS=\E[12m:GE=\E[10m:GV=\63:GH=D:\
+ :GC=E:GL=\64:GR=C:RT=^J:G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\
+ :GU=A:GD=B:\
+ :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\
+ :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\
+ :HM=\E[H:EN=\E[F:PU=\E[I:PD=\E[G:\
+ :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:
+trs80|trs-80|radio shack trs-80 Model I:\
+ :do=^J:am:le=^H:bs:co#64:li#16:
+d800|Direct 800/A:\
+ :do=^J:co#80:li#24:am:cl=\E[1;1H\E[2J:le=^H:bs:cm=\E[%i%d;%dH:\
+ :nd=\E[C:up=\E[A:ce=\E[K:cd=\E[J:\
+ :so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:xs:vs=\E[>12l:ve=\E[>12h:\
+ :sf=\ED:sr=\EM:da:db:as=\E[1m:ae=\E[0m:ms:pt:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :k5=\EOT:k6=\EOU:k7=\EOV:k8=\EOW:
+vc404|volker-craig 404:\
+ :do=^J:am:le=^H:bs:cd=40^W:ce=20^V:cl=40^X:cm=^P%+ %+ :co#80:\
+ :ho=40^Y:kd=^J:kl=^H:kr=^U:ku=^Z:li#24:ma=^Z^P^U :nd=^U:up=^Z:
+vc404-s|volker-craig 404 w/standout mode:\
+ :do=^J:se=^O:so=^N:tc=vc404:
+vc404-na|volker-craig 404 w/no arrow keys:\
+ :ma@:kr@:ku@:tc=vc404:
+vc404-s-na|volker-craig 404 w/standout mode and no arrow keys:\
+ :se=^O:so=^N:tc=vc404-na:
+# From: wolfgang@cs.sfu.ca
+vc414|vc414h|Volker-Craig 414H in sane escape mode.:\
+ :am:ic=\E\072:dc=\E\063:so=\E\031:se=\E\037:\
+ :kl=^H:kr=^P:ku=\E^L:kd=\E^K:kh=\E^R:\
+ :k0=\EA:k1=\EB:k2=\EC:k3=\ED:k4=\EE:k5=\EF:k6=\EG:k7=\EH:\
+ :l0=PF1:l1=PF2:l2=PF3:l3=PF4:l4=PF5:l5=PF6:l6=PF7:l7=PF8:\
+ :al=40\E^Z:bs:cd=\E^X:ce=10\E^O:cl=40\E^\:co#80:\
+ :do=\E^K:li#24:nd=^P:up=\E^L:
+vc414h-noxon:\
+ :dl=40\E^S:cm=40\E^Q%r%.%.:ho=\E^R:\
+ :tc=vc414h:
+# missing in vc303a and vc303 descriptions: they scroll 2 lines at a time
+vc303a|vc403a|volker-craig 303a:\
+ :do=^J:am:le=^H:bs:ce=20^V:cl=40^X:co#80:ho=40^Y:kd=^J:kl=^H::kr=^U:\
+ :ku=^Z:li#24:ll=^P^@W:nd=^U:ns:up=^Z:
+vc303|vc103|vc203|volker-craig 303:\
+ :do=^J:am:le=^H:bs:cl=40^L:co#80:ho=40^K:kd=^J:kl=^H:\
+ :kr=^I:ku=^N:li#24:ll=^O\200W:nd=^I:ns:up=^N:
+# Test version for Falco ts-1. See "arpavax.hickman@ucb" for info
+falco|ts1|ts-1|falco ts-1:is=\Eu\E3:\
+ :do=^J:al=\EE:am:bs:ce=\ET\EG0^h:cm=\E=%+ %+ :cl=\E*:cd=\EY:co#80:\
+ :dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:k0=^A0\r:kd=^J:kl=^H:pt:\
+ :kr=^L:ku=^K:li#24:nd=^L:se=\Eg0:so=\Eg1:up=^K:us=\Eg1:ue=\Eg0:
+falco-p|falco ts-1sp|falco with paging option:\
+ :is=\EZ\E3\E_c:\
+ :al=\EE:am:bs:ce=\ET\EG0^H\Eg0:cl=\E*:cd=\EY:co#80:dc=\EW:\
+ :dl=\ER:kd=\E[B:kl=\E[D:ei=\Er:im=\Eq:pt:db:\
+ :kr=\E[C:ku=\E[A:li#24:nd=\E[C:se=\Eg0:so=\Eg4:\
+ :up=\E[A:us=\Eg1:ti=\E_d:te=\E_b:\
+ :ue=\Eg0:do=\E[B:cm=\E=%+ %+ :ms:kh=\E[H:da:mi:bt=\EI:
+# NOTE: bg can scroll, it just would rather not (ns) - rwells 3/13/81.
+# (Shouldn't you take out ns and put in an nl instead? - mrh)
+bitgraph|BBN BitGraph terminal:\
+ :do=^J:al=2*\E[L:bs:cd=150\E[J:ce=2\E[K:\
+ :cl=150\E[H\E[J:cm=%i\E[%d;%dH:co#85:\
+ :dl=2*\E[M:k0=\EP:k1=\EQ:k2=\ER:k3=\ES:kd=\EB:ke=\E>:kl=\ED:kr=\EC:\
+ :ks=\E=:ku=\EA:li#64:nd=\E[C:ns:pt:se=\E[0m:so=\E[7m:up=\E[A:sf=280\n:
+d132|datagraphix|datagraphix 132a:\
+ :do=^J:co#80:li#30:cl=^l:ho=\Et:da:db:sf=\Ev:sr=\Ew:\
+ :up=\Ek:nd=\El:vs=\ex:ve=\Em\En:\
+ :al=\E3:ic=\E5:dc=\E6:in:ic=\E5:
+soroc|Soroc 120:\
+ :do=^J:cd=\EY:ce=\ET:cl=2\E*:ma=^K^P^R^L^L :\
+ :kl=^H:ku=^K:kr=^L:kd=^J:tc=adm3a:
+# From: ma179abu%sdcc3@sdcsvax.ucsd.edu (Bill Houle)
+iq140|soroc140|Soroc IQ140 with inverse & dim:\
+ :ic=\EQ:dc=\EW:al=\EE:dl=\ER:ce=\ET:cd=\EY:cl=\E+:cm=\E=%+ %+ :\
+ :up=^K:do=^J:le=^H:nd=^L:ho=^^:ta=\Ei:ma=^Kk^Jj^Hh^Ll^^h:am:bs:\
+ :co#80:li#24:kb=^H:kh=^^:ku=^K:kd=^J:kl=^H:kr=^L:\
+ :k0=^AI:k1=^A@:k2=^AA:k3=^AB:k4=^AC:k5=^AD:k6=^AE:k7=^AF:\
+ :k8=^AG:k9=^AH:se=\E^?:so=\E^?:us=\E):ue=\E(:
+# tec is untested, and taken from CB/Unix virtual terminal driver.
+# Upper case terminal, uses lower case for control sequences!!!
+# The driver shows the C ~ operator used on CM coordinates.
+# Without the terminal in front of me, I can't figure out what's
+# going on, so I've dotted out the cm. Note there is no ~ in tgoto.
+tec400|tec scope:\
+ :do=^J:.cm=l%r%.%.:up=x:do=h:nd=g:le=w:ho=i:so={:se=|:sg#1:\
+ :cl=f:al=e:dl=u:ic=d:dc=t:ce=c:cd=s:
+# From ucbvax!geoff Mon Sep 21 21:15:45 1981
+# This entry has been tested.
+tec500|tec 500:\
+ :do=^J:am:le=^H:bs:cm=\E=%+ %+ :cl=20^Z:\
+ :co#80:ho=^^:li#24:nd=^L:up=^K:so=^]:se=^\:
+# I would appreciate more information on this terminal, such as the
+# manufacturer and the model number. There are too many tecs in here.
+tec:\
+ :li#24:co#80:cl=^l:up=^k:nd=\037:\
+ :am:le=^H:bs:ho=\036:ma=^K^P^_ :do=^J:
+teletec|Teletec Datascreen:\
+ :do=^J:am:le=^H:bs:co#80:cl=^l:ho=^^:li#24:nd=^_:up=^k:
+# From cbosg!ucbvax!SRC:george Fri Sep 11 22:38:32 1981
+ampex|d80|dialogue|dialogue80|ampex dialogue 80:\
+ :ct=\E3:st=\E1:do=^J:is=\EA:us=\El:ue=\Em:\
+ :am:le=^H:bs:pt:cl=75\E*:cm=\E=%+ %+ :\
+ :al=5*\EE:bt=\EI:ic=\EQ:dl=5*\ER:dc=\EW:\
+ :ce=\Et:cd=\Ey:so=\Ej:se=\Ek:li#24:co#80:nd=^L:up=^K:
+# From: atd!dsd!rcb@ucbvax.berkeley.edu (Richard Bascove)
+a210|210|ampex210|ampex a210:\
+ :am:bs:cl=\E*:cm=\E=%+ %+ :al=\EE:bt=\EI:ic=\EQ:\
+ :dl=\ER:dc=\EW:ho=^^:xn:ce=\Et:cd=\Ey:li#24:co#80:nd=^L:up=^K:\
+ :pt:if=/usr/share/tabset/std:is=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En:\
+ :kl=^H:kr=^L:kd=^V:ku=^K:kh=^^:hs:ts=\E.0\Eg\E}\Ef:fs=\E.2:\
+ :kn#10:k0=^A0^M:k1=^A1^M:k2=^A2^M:k3=^A3^M:k4=^A4^M:k5=^A5^M:\
+ :vb=\EU\EX\EU\EX\EU\EX\EU\EX:k6=^A6^M:k7=^A7^M:k8=^A8^M:k9=^A9^M:\
+ :so=\EG4:se=\EG0:us=\EG8:ue=\EG0:ug#1:sg#1:
+digilog|333|digilog 333:\
+ :le=^H:bs:co#80:ce=\030:ho=^n:li#16:nd=^i:up=^o:do=^J:
+ep48|ep4080|execuport 4080:\
+ :am:le=^H:bs:os:co#80:hu=\036:hd=\034:do=^J:
+ep40|ep4000|execuport 4000:\
+ :am:le=^H:bs:os:co#136:hu=\036:hd=\034:do=^J:
+terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200:\
+ :co#120:hc:os:do=^J:
+# AED 512
+# by giles Billingsley (gilesb%ucbcad@berkeley)
+# rewritten 8/82 for newer AEDs and better operation of vi,etc.
+aed|AED|aed512|AED512|aed 512:\
+ :db:co#64:li#40:cl=^L:bs:nd=\Ei0800\001:\
+ :up=^K:ve=\E\E\E\E\E\E\E\072004=000200??\001:\
+ :vb=\EK0001??0000K0001202080\001:\
+ :us=\E\07200>8000140\001:ue=\E\07200>8000100\001:\
+ :uc=\Ei???>l0800i0102\001:\
+ :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\
+ :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\
+ :so=\E\07200>8000140[80C00\001:se=\E[00C80\001:\
+ :is=\EG1MMM.`40K0001202080K8001????00^L\EC80L80{80^L\EK010100????K0601??0000c818100\EG1HHH.\07210000019A27FD006A280D002A200A52429FE8524861086118612861360N031B4C3F3F1800N041B0C1B4C38301800N001B3B313030301800N011B3B313030341800N021B3B313030381800N050800N061B3B313335301800\07211000015A58E8D5011A58F8D5111A5908D5211A5918D531160\07212000015AD5011858EAD5111858FAD52118590AD5311859160\0721300004B2071C5858E0A18658E0A0A858EA900858F268FA5278590A50A29018591A9F51865908590A90165918591A59038E58E8590A591E58F290185912071C5180A0A0A0901858EA900858F268F60\0721350000BA9472031DEA9502031DE60\E\E\E\EG1MMM.^A:
+aed-ucb|AED-UCB|aed512-ucb|AED512-UCB|aed 512 w/o UCB ROM:\
+ :db:co#64:li#40:cl=^L:bs:nd=\Ei0800\001:up=^K:\
+ :ve=\E\E\E\E\E\E\E\072004=000200??\001:\
+ :vb=\EK0001??0000K0001202080\001:\
+ :us=\E\07200>8000140\001:ue=\E\07200>8000100\001:\
+ :uc=\Ei???>l0800i0102\001:\
+ :ti=\E\07200>8000140{<04<0??00001010L<0\072004=0002??00\001:\
+ :te=\E\07200>8000100{804<0??00001000L80\072004=000200??\001:\
+ :so=\E\07200>8000140[80C00\001:se=\E[00C80\001:\
+ :if=/usr/share/tabset/aed512:
+# CIT 80 - vt 100 emulator, the termcap has been modified to remove
+# the delay times and do an auto tab set rather than the indirect
+# file used in vt100.
+cit80|cit 80|Citoh 80:\
+ :co#80:li#24:am:cl=\E[;H\EJ:bs:cm=\E[%i%2;%2H:nd=\E[C:up=\E[A:\
+ :ce=\EK:cd=\EJ:is=\E>:ks=\E[?1h\E=:ke=\E[?1l\E>:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:
+# From mtxinu!sybase!tim (Tim Wood) Fri Sep 27 09:39:12 PDT 1985
+# Alternate cit101 (vt100 em) file used in vt100.
+# Uses 23 lines so can run citsys (like h19sys).
+# 24 May 85 (mtxinu!sybase!tim) - removed 2-byte limit on 'cm' cursor
+# coordinates otherwise there is garbling on long lines in
+# co#132 mode; also added support for multipage memory on the Itoh.
+citc|Citoh fast vt100:\
+ :co#80:li#23:am:cl=\E[;H\E[2J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\
+ :ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
+ :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:\
+ :dc=\E[P:al=\E[L:dl=\E[M:ic=\E[@:vs=\E7\E[U:ve=\E[V\E8:xn:
+cita:\
+ :co#80:li#23:am:cl=\E[;H\E[2J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[3g\E[>5g:\
+ :ks=\E[?1h\E=:ke=\E[?1l\E>:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:vs=\E7\E[U:ve=\E[V\E8:\
+ :vb=\E[?5h\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\E[?5l:xn:
+cit101:li#24:vb@:tc=citc:
+cit101b:li#24:tc=citc:
+cit500|cit-500|cit 500:\
+ :co#80:li#40:cl=50\E[;H\E[2J:bs:am:cm=5\E[%i%2;%2H:nd=2\E[C:up=2\E[A:\
+ :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
+ :is=\E(B\E)0\E>\E[?3l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\
+ :if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
+ :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=5\EM:xn:\
+ :do=\ED:al=\E[L:dc=\E[P:dl=\E[M:
+# Note several versions of blit. I don't know exactly what is what
+# so please send me any corrections to this -- mrh
+# From research!ikeya!rob Tue Aug 31 23:41 EDT 1982
+blit|jerq|blit-pb|blit running teletype rom:\
+ :do=^J:IC=\Ef%+ :DC=\Ee%+ :AL=\EF%+ :DL=\EE%+ :\
+ :mi:dl=\EE!:ic=\Ef!:dc=\Ee!:al=\EF!:\
+ :ce=\EK:cl=^L:cm=\EY%r%+ %+ :co#87:li#72:nd=\EC:\
+ :up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:am:ul:pt:eo:
+cbblit|columbus enhanced tty blit:\
+ :vb=\E^G:so=\EU!:se=\EV!:us=\EU":ue=\EV":cd=\EJ:\
+ :im=\EQ:ei=\ER:ic@:co#88:sf=\EG:tc=blit:
+oblit|ojerq|first version of blit rom:\
+ :do=^J:AL=\Ef%+ :DL=\Ee%+ :mi:dl=\EE:ei=\ER:im=\EQ:dc=\EO:da:db:\
+ :al=\EF:cd=\EJ:ce=\EK:cl=^L:cm=\EY%r%+ %+ :co#88:li#72:nd=\EC:\
+ :up=\EA:vb=\E^G:am:ul:pt:eo:
+daleblit|daleterm|blit running Dale DeJager's ROM:\
+ :ku=\EA:kd=\EB:kr=\EC:kl=\ED:so=\EU!:se=\EV!:us=\EU":ue=\EV":\
+ :da@:db@:tc=oblit:
+datapoint|dp3|dp3360|datapoint 3360:\
+ :do=^J:am:le=^H:bs:cd=^_:ce=^^:cl=^]^_:co#82:ho=^]:li#25:nd=^x:up=^z:
+# From: cbosgd!utcs!romwa@ucbvax.berkeley.edu (mark dornfeld)
+# This termcap is for the LANPAR Technologies VISION 3220
+# terminal. The function key definitions k0-k5 represent the
+# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN,
+# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to
+# PF4 keys.
+v3220|LANPAR Vision II model 3220/3221/3222:\
+ :co#80:li#24:cl=\E[H\E[J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :is=\E>\E[?3l\E[?7h\E[?8h\E[p:ks=\E=:ke=\E>:\
+ :kn#10:k0=\E[1~:k1=\E[2~:k2=\E[3~:k3=\E[4~:k4=\E[5~:k5=\E[6~:\
+ :k6=\E[OP:k7=\E[OQ:k8=\E[OR:k9=\E[OS:\
+ :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\
+ :kh=\E[H:pt:sr=\EM:xn:\
+ :dl=\E[M:dc=\E[P:ei=\E[4l:al=\E[L:im=\E[4h:mi:
+# From ucbvax!faletti (Faletti@Berkeley)
+# FREEDOM 100 by Liberty Electronics USA, SF.
+# :kh=^^: left out because it precludes using change-to-alternate-file in vi.
+# Basic Freedom 100 entry, works with VI at 1200 baud.
+f100|freedom100|freedom|freedom 100 no padding:\
+ :am:bs:bw:mi:ms:pt:co#80:kn#20:li#24:\
+ :ct=\E3:st=\E1:is=\Eg\Ef\r\Ed:kr=^L:\
+ :cl=^Z:do=^J:ho=^^:kb=^H:kl=^H:\:kd=^V:\
+ :ko=dc,al,dl,cl,bt,ce,cd:ku=^K:le=^H:nd=^L:\
+ :ch=\E]%+ :cm=\E=%+ %+ :cv=\E[%+ :sr=\Ej:up=^K:\
+ :al=\EE:bt=\EI:cd=\EY:ce=\ET:dc=\EW:dl=\ER:ei=\Er:im=\Eq:\
+ :se=\EG0:so=\EG4:ue=\EG0:us=\EG8:as=\E$:ae=\E%:\
+ :vb=\Eb\200\200\Ed:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
+ :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k0=^AI\r:\
+ :hs:ts=\Eg\Ef:fs=\r:ds=\Eg\Ef\r:
+f100-rv|freedom100-rv|freedom-rv|freedom100 with reverse video at 1200:\
+ :is=\Eg\Ef\r\Eb:vb=\Ed\200\200\Eb:tc=freedom100:
+# VI at 9600 baud (or EMACS at 1200 -- but may be more than is needed for emacs)
+f100-v|freedom100-v|freedom-v|freedom100 for 9600 vi or 1200 emacs:\
+ :al=6.5*\EE:dl=11.5*\ER:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :tc=freedom100:
+f100-v-rv|freedom100-v-rv|freedom-v-rv|freedom100 rev. vid. for 9600 vi:\
+ :al=6.5*\EE:dl=11.5*\ER:is=\Eg\Ef\r\Eb:\
+ :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\
+ :tc=freedom100:
+# EMACS at 9600 baud -- this still needs some more work on the padding
+f100-e|freedom100-e|freedom-e|freedom100 for 9600 emacs:\
+ :al=8.5*\EE:dl=11.5*\ER:ip=6:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :tc=freedom100:
+f100-e-rv|freedom100-e-rv|freedom-e-rv|freedom100 rev. vid. for emacs 9600:\
+ :al=8.5*\EE:dl=11.5*\ER:ip=6:is=\Eg\Ef\r\Eb:\
+ :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\
+ :tc=freedom100:
+f110-v|freedom110-v|freedom110 for 9600 vi or 1200 emacs:\
+ :is=\Eg\Ef\r\Ed\EO:dc=\EO\EW:im=\EO\Eq:\
+ :al=6.5*\EE:dl=11.5*\ER:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :tc=freedom100:
+# (from kerch@lll-crg)
+f200|freedom200| Freedom 200 VDT by Liberty Electronics :\
+ :if=/usr/share/tabset/stdcrt:al=\EE:am:bs:bt=\EI:cd=\EY:\
+ :ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:do=^V:\
+ :ds=\Eh:ei=\Er:im=\Eq:is=\Eg\El\E\041\062:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
+ :k6=^AE\r:k7=^AE\r:k8=^AF\r:k9=^AG\r:kd=^V:kr=L:\
+ :ku=^K:li#24:ms:nd=^L:se=\EG0:so=\EG4:sr=\Ej:\
+ :te=\EJ\E\\2\E|\041\061^L^Y:ti=\E\\1\EK\E|\041\061L^Y:\
+ :ts=\Ef:ue=\EG0:up=^K:us=\EG8:vb=\Eb\Ed:hs:i2=\E^O\Eg:\
+ :ts=\Ef:fs=^M:ds=\E^N:
+dg6053|data general 6053:\
+ :do=^J:am:le=^H:bs:cm=^P%r%.%.:cl=^L:ho=^H:nd=^S:\
+ :up=^W:ce=^K:co#80:li#24:
+# dg450 and dg200 from cornell
+dg450|dg6134|data general 6134:\
+ :nd=\030:bs@:tc=dg200:
+dg200|data general Dasher 200:\
+ :am:bc=^Y:bs=0:ce=^K:cl=^L:cm=^P%r%+\200%+\200:co#80:do=^Z:\
+ :ho=^H:li#24:\
+ :ll=\036FP\017:se=\036E:so=\036D:up=^W:\
+ :is=\036O\036FQ2\036FB000\036FE\036FA\036FQ2:
+# Note: lesser Dasher terminals will not work with vi because vi insists upon
+# having a command to move straight down from any position on the bottom line
+# and scroll the screen up, or a direct vertical scroll command. The 460 and
+# above have both, the D210/211, for instance, has neither. We must use ANSI
+# mode rather than DG mode because standard UNIX tty drivers assume that ^H is
+# backspace on all terminals. This is not so in DG mode.
+dg460-ansi|Data General Dasher 460, ANSI-mode:\
+ :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J:\
+ :cm=\E[%i%2;%2H:co#80:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ho=\E[H:ic=\E[@:ue=\E[05:ul:up=\E[A:us=\E[4m:is=\036F@:\
+ :k0=\E[001z:k1=\E[002z:k2=\E[003z:k3=\E[004z:k4=\E[005z:k5=\E[006z:\
+ :k6=\E[007z:k7=\E[008z:k8=\E[009z:k9=\E[00\:z:\
+ :kb=\E[D:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:kn#6:\
+ :l0=f1:l1=f2:l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:l9=f10:\
+ :le=^H:li#24:mb=\E[5m:me=\E[0m:mh=\E[2m:mr=\E[7m:ms:mu=\EW:\
+ :nd=\E[C:nl=\ED:pt:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T:
+v603|visual603|603|Visual model 603:\
+ :hs:ts=\EP2~:fs=\E\\:ds=\EP2;1~\E\\:\
+ :im=\E[4h:ei=\E[4l:mi:dc=\E[P:al=\E[L:dl=\E[M:\
+ :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:sb=\EM:\
+ :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\
+ :is=\E>\E[?3l\E[?4l\E[?7h\E[?8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?3l\E[?4l\E[?7h\E[?8h:\
+ :tc=vt100:
+cdi|cdi1203:\
+ :am:le=^H:bs:hc:os:co#80:dC#200:do=^J:
+# ^S is an arrow key! Boy is this guy in for a surprise on v7!
+sol:\
+ :do=^J:am:le=^Y:ho=^H:bs:cm=\E^1%.\E^2%.:cl=^K:ho=^N:co#64:li#16:\
+ :nd=^S:up=^W:kl=^A:kr=^S:ku=^W:kd=^Z:ma=^A^H^S ^W^P^Z^N:
+xl83|Cybernex XL-83:\
+ :do=^J:am:le=^H:bs:cd=62^P:ce=3^O:cl=62^L:cm=^W%+ %+ :co#80:ho=^K:\
+ :kd=^J:kl=^H:ku=^N:li#24:up=^N:nd=^I:
+omron|Omron 8025AG:\
+ :do=^J:al=\EL:am:le=^H:bs:cd=\ER:co#80:ce=\EK:cl=\EJ:\
+ :da:db:dc=\EP:dl=\EM:ho=\EH:li#24:nd=\EC:se=\E4:sf=\ES:\
+ :so=\Ef:sr=\ET:up=\EA:ve=:vs=\EN:
+plasma|plasma panel:\
+ :am:le=^H:bs:cl=^L:co#85:ho=^^:li#45:nd=\030:up=\026:do=^J:
+pty|pseudo teletype:\
+ :do=^J:co#80:li#24:am:cl=\EJ:le=^H:bs:cm=\EG%+ %+ :nd=\EC:\
+ :up=\EA:ce=\EK:cd=\EL:al=\EP:dl=\EN:ic=\EO:\
+ :so=\Ea$:se=\Eb$:us=\Ea!:ue=\Eb!:
+remote|virtual remote terminal:\
+ :co#79:am@:nl@:tc=virtual:
+swtp|ct82|southwest technical products ct82:\
+ :do=^J:am:le=^d:bc=^d:\
+ :al=^\^y:cd=^v:ce=^F:cl=^L:cm=%r^k%.%.:co#82:li#20:\
+ :dl=^z:nd=^s:up=^a:so=^^^v:se=^^^F:dc=^\^h:ic=^\^x:ho=^p:\
+ :sf=^n:sr=^o:ll=^c:\
+ :is=^\^r^^^s^^^d^]^w^i^s^^^]^^^o^]^w^r^i:
+terak|Terak emulating Datamedia 1520:\
+ :tc=dm1520:
+# :is resets scrolling region in case a previous user had used "tset vt100"
+sun|Sun Microsystems Workstation console:\
+ :li#34:co#80:cl=^L:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :am:bs:mi:ms:pt:km:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:is=\E[1r:rs=\E[1r:\
+ :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:kh=\E[H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :al=\E[L:dl=\E[M:ic=\E[@:dc=\E[P:\
+ :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:
+# From john@ucbrenoir Tue Sep 24 13:14:44 1985
+sun-s|Sun Microsystems Workstation window with status line:\
+ :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun:
+sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs:\
+ :hs:ts=\E]l:fs=\E\\:ds=\E]l\E\\:tc=sun-e:
+sun-48|Sun 48-line window:\
+ :li#48:co#80:tc=sun:
+sun-34|Sun 34-line window:\
+ :li#34:co#80:tc=sun:
+sun-24|Sun 24-line window:\
+ :li#24:co#80:tc=sun:
+sun-17|Sun 17-line window:\
+ :li#17:co#80:tc=sun:
+sun-12|Sun 12-line window:\
+ :li#12:co#80:tc=sun:
+sun-1|Sun 1-line window for sysline:\
+ :li#1:co#80:es:hs:ts=\r:fs=\E[K:ds=^L:tc=sun:
+sun-e|sun-nic|sune|Sun Microsystems Workstation without insert character:\
+ :ic@:im@:ei@:tc=sun:
+sun-c|sun-cmd|Sun Microsystems Workstation console with scrollable history:\
+ :te=\E[>4h:ti=\E[>4l:tc=sun:
+# The terminal mvterm is a full color terminal emulation that seems to be
+# specific to a terminal program on Sun workstations called SwitchTerm. It
+# is vt100 compatible with minor changes.
+# Daniel Rudy <dcrudy@pacbell.net>
+mvterm|vv100|mvterm emulator with ANSI colors:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[100m:tc=vt102:
+# For NeWS's psterm from Eric Messick & Hugh Daniel
+psterm|psterm-basic|psterm-80x34:\
+ :am:bs:al=\EA:cd=\EB:ce=\EC:cl=^L:cm=\E%d;%d;:cs=\EE%d;%d;:\
+ :dc=\EF:dl=\EK:do=\EP:ei=\ENi:el=\ENl:fs=\ENl:\
+ :ho=\ER:hs:im=\EOi:is=\EN*:km:kd=\E[B:ku=\E[A:kr=\E[C:kl=\E[D:\
+ :mb=\EOb:md=\EOd:me=\EN*:mr=\EOr:nd=\EV:pt:rc=\034:rs=\EN*:sc=\035:\
+ :se=\ENo:sf=\EW:sl=\EOl:so=\EOo:sr=\EX:te=\ENt:ti=\EOt:ts=\EOl:\
+ :ue=\ENu:le=\ET:ll=\EU:ul:up=\EY:us=\EOu:vb=\EZ:co#80:li#34:
+psterm-96x48:\
+ :co#96:li#48:tc=psterm-basic:
+psterm-90x28:\
+ :co#90:li#28:tc=psterm-basic:
+psterm-80x24:\
+ :co#80:li#24:tc=psterm-basic:
+# This is a faster termcap for psterm. Warning: if you use this termcap,
+# some control characters you type will do strange things to the screen.
+psterm-fast:\
+ :am:bs:al=^A:cd=^B:ce=^C:cl=^L:cm=^D%d;%d;:cs=^E%d;%d;:\
+ :dc=^F:dl=^K:do=^P:ei=^Ni:el=^Nl:fs=^Nl:\
+ :ho=^R:hs:im=^Oi:is=^N*:km:kd=\E[B:ku=\E[A:kr=\E[C:kl=\E[D:\
+ :mb=^Ob:md=^Od:me=^N*:mr=^Or:nd=^V:pt:rc=\034:rs=^N*:sc=\035:\
+ :se=^No:sf=^W:sl=^Ol:so=^Oo:sr=^X:te=^Nt:ti=^Ot:ts=^Ol:ue=^Nu:\
+ :le=^T:ll=^U:ul:up=^Y:us=^Ou:vb=^Z:co#80:li#34:
+apollo:\
+ :al=\EI:am:bs:cd=\EJ:ce=\EK:ch=\EN%d:cl=^L:cm=\EM%+ %d):\
+ :cv=\EO+ :dc=\EP:dl=\EL:do=\EB:ei=\ER:im=\EQ:mi:nd=\EC:se=\ET:sf=\EE:\
+ :so=\ES:sr=\ED:te=\EX:ti=\EW:ue=\EV:up=\EA:us=\EU:co#88:li#53:
+# Apollo termcaps from Gary Darland, goodmanc@garnet
+apollo_15P|apollo 15 inch display:\
+ :dN@:tc=vt132:
+apollo_19L|apollo 19 inch display:\
+ :dN@:tc=vt132:
+apollo_color|apollo color display:\
+ :dN@:tc=vt132:
+virtual|VIRTUAL|cb unix virtual terminal:\
+ :do=^J:co#80:li#24:am:cl=\E\112:le=^H:bs:cm=\E\107%r%.%.:nd=\E\103:\
+ :up=\E\101:ce=\E\113:cd=\E\114:al=\E\120:dl=\E\116:ic=\E\117:\
+ :da:db:kl=\E\104:kr=\E\103:ku=\E\101:kd=\E\102:kh=\E\105:\
+ :so=\E\141\004:se=\E\142\004:us=\E\141\001:ue=\E\142\001:
+it2|intertube2|intertec data systems intertube 2:\
+ :do=^J:am:bs:cl=^L:co#80:ho=^A:li#25:up=^Z:ce=\EK:\
+ :cm=^N%+ %+ :ch=^P%\102%.:cv=^K%.:nd=^F:do=\n:ll=^K^X\r:\
+ :so=\E0P:se=\E0@:
+delta|dd5000|delta data 5000:\
+ :do=^J:am:le=^H:bs:cl=^NR:cm=^O%\068%+9%\068%+9:co#80:li#27:\
+ :ho=^NQ:nc:nd=^Y:up=^Z:ce=^NU:dc=^NV:ma=^K^J^Z^P^Y :xr:
+mdl110|cybernex mdl-110:\
+ :cm=^P%+ %+ :co#80:li#24:am:cl=70^X:le=^H:bs:do=^J:\
+ :nd=^U:up=^Z:ho=^Y:ce=145^N@^V:cd=145^NA^W:al=65^NA^N^]:\
+ :dl=40^NA^N^^:ic=3.5^NA^]:dc=3.5^NA^^:\
+ :so=^NF:se=^NG:ta=43\t:ma=^Z^P:cd=6^N@^V:
+zen30|z30|zentec 30:\
+ :do=^J:mi:co#80:li#24:ma=^L ^R^L^K^P:ul:\
+ :al=1.5*\EE:le=^H:bs:ce=1.0*\ET:cm=\E=%+ %+ :cl=\E*:\
+ :ho=^^:nd=^L:se=\EG0:so=\EG6:up=^K:im=\Eq:ei=\Er:\
+ :am:dc=\EW:dl=1.5*\ER:cd=\EY:
+modgraph|mod|Modgraph terminal emulating vt100, 24x80:\
+ :xn@:rf@:sr=5\EM\E[K:vs=\E\^9;0s\E\^7;1s:\
+ :is=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s:\
+ :tc=vt100:
+# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82)
+# also, has a meta-key (MT)
+# from goldberger@su-csli.arpa
+dmchat|dmchat version of datamedia 2500:\
+ :al=1*^P\n^X^]^X^]:\
+ :MT:km:\
+ :dl=2^P^Z^X^]:\
+ :tc=dm2500:
+# originally from Carol Block at ear (cblock@ear); changed O's to 0's and
+# fixed :is \E from pcuser@garnet.berkeley.edu, 27 Feb 90
+mt70|m70|morrow mt70:\
+ :is=\EG0\E"5:cl=^Z:cm=\E=%+ %+ :do=^J:ic=\EQ:\
+ :dc=\EW:kl=\034L:kr=\034M:ku=\034J:kd=\034K:\
+ :so=\EG4:se=\EG0:us=\EG1:ue=\EG0:vs=\E"2:ve=\E"5\E(:\
+ :tc=adm31:
+# standard-issue France Telecom minitel terminal (made by Philips)
+m2-nam|minitel|minitel-2|minitel-2-nam|minitel 2|France Telecom Minitel:\
+ :li#24:al=\E[L:dl=\E[M:ip=7:dc=\E[P:ei=\E[4l:im=\E[4h:xn:\
+ :ho=\E[H:cl=\E[H\E[J:ug#0:sg#0:\
+ :co#80:am@:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :as=\E(0:ae=\E(B:sf=^j:sr=\EM:is=\E[1;24r\E[24;1H:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :zd=\E[1m:zb=\E[5m:zc=lkmjqxtuwvn:\
+ :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:\
+ :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:
+# from keith bostic (bostic@monet)
+#
+mod2|Modgraph GX-1000, set to 80x24, keypad not enabled:\
+ :is=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;1s\E\^9;1s\E\^27;1:\
+ :bs:cd=50\EJ:ce=3\EK:cl=50\EH\EJ:cm=5\EY%+ %+ :co#80:li#24:nd=2\EC:\
+ :pt:sr=5\EI:up=2\EA:da:db:am:
+wsiris|iris40|iris emulating a 40 line visual 50 (approximately):\
+ :am:al=\EL:is=\E7B0\E7F7\E7C2\E7R3:\
+ :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:ho=\EH:cm=\EY%+ %+ :co#80:li#40:nd=\EC:\
+ :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:\
+ :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\
+ :vs=\E;:ve=\E>:cl=\Ev:ho=\EH:dl=\EM:so=\E9P:se=\E0@:\
+ :HS=\E7F2:HE=\E7F7:\
+ :us=\E7R2\E9P:ue=\E7R3\E0@:\
+ :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite:
+# davis@unidata.ucar.edu
+iris-ansi|iris-ansi-net|IRIS emulating ANSI terminal:\
+ :am:co#80:it#8:li#40:bl=^G:md=\E[1m:cl=\E[H\E[2J:\
+ :ve=\E[9/y\E[12/y\E[=6l:cr=\r:LE=\E[%dD:\
+ :le=\E[D:DO=\E[%dB:do=\n:RI=\E[%dC:\
+ :nd=\E[C:cm=\E[%i%d;%dH:UP=\E[%dA:\
+ :up=\E[A:vs=\E[10/y\E[=1h\E[=2l\E[=6h:\
+ :DL=\E[%dM:dl=\E[M:cd=\E[J:ce=\E[K:cb=\E[1K:\
+ :ho=\E[H:ta=\t:st=\EH:AL=\E[%dL:al=\E[L:\
+ :sf=\ED:is=\E[?1l\E>\E[?7h\E[100g\E[0m\E7\E[r\E8:\
+ :*4=\E[P:*7=\E[147q:#2=\E[143q:#4=\E[158q:\
+ :%f=\E[210q:%i=\E[167q:!2=\E[218q:kb=\b:\
+ :kB=\E[Z:kl=\E[D:kd=\E[B:kr=\E[C:\
+ :ku=\E[A:kD=\177:@7=\E[146q:@8=\r:\
+ :k1=\E[001q:k;=\EOQ:F1=\EOR:F2=\EOS:\
+ :k2=\E[002q:k3=\E[003q:k4=\E[004q:k5=\E[005q:\
+ :k6=\E[006q:k7=\E[007q:k8=\E[008q:k9=\EOP:\
+ :kh=\E[H:kI=\E[139q:kN=\E[154q:kP=\E[150q:\
+ :%9=\E[209q:kM=\E[146q:&7=\E[217q:nw=\EE:\
+ :pk=\EP101;%d.y%s\E\\:rc=\E8:mr=\E[7m:\
+ :sr=\EM:se=\E[m:ue=\E[m:sc=\E7:me=\E[m:\
+ :so=\E[1;7m:us=\E[4m:ct=\E[3g:
+# # --------------------------------
+#
+# N: ANN ARBOR
+#
+# Needs function keys added.
+# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs.
+# Highly modified 6/22 by Mike O'Brien.
+# split out into several for the various screen sizes by dave-yost@rand
+# Modifications made 3/82 by Mark Horton
+# Modified by Tom Quarles at UCB for greater efficiency and more diversity
+# status line moved to top of screen, vb removed 5/82
+#
+# assumes the following setup:
+# A menu: 0000 1010 0001 0000
+# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19
+# C menu: 56 66 0 0 9600 0110 1100
+# D menu: 0110 1001 1 0
+#
+# Briefly, the settings are for the following modes:
+# (values are for bit set/clear with * indicating our preference
+# and the value used to test these termcaps)
+# Note that many of these settings are irrelevant to the termcap
+# and are just set to the default mode of the terminal as shipped
+# by the factory.
+#
+# A menu: 0000 1010 0001 0000
+# Block/underline cursor*
+# blinking/nonblinking cursor*
+# key click/no key click*
+# bell/no bell at column 72*
+#
+# key pad is cursor control*/key pad is numeric
+# return and line feed/return for <cr> key *
+# repeat after .5 sec*/no repeat
+# repeat at 25/15 chars per sec. *
+#
+# hold data until pause pressed/process data unless pause pressed*
+# slow scroll/no slow scroll*
+# Hold in area/don't hold in area*
+# functions keys have default*/function keys disabled on powerup
+#
+# show/don't show position of cursor during page transmit*
+# unused
+# unused
+# unused
+#
+# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19
+# Baud rate (9600*)
+#
+# 2 bits of parity - 00=odd,01=even*,10=space,11=mark
+# 1 stop bit*/2 stop bits
+# parity error detection off*/on
+#
+# keyboard local/on line*
+# half/full duplex*
+# disable/do not disable keyboard after data transmission*
+#
+# transmit entire page/stop transmission at cursor*
+# transfer/do not transfer protected characters*
+# transmit all characters/transmit only selected characters*
+# transmit all selected areas/transmit only 1 selected area*
+#
+# transmit/do not transmit line separators to host*
+# transmit/do not transmit page tab stops tabs to host*
+# transmit/do not transmit column tab stop tabs to host*
+# transmit/do not transmit graphics control (underline,inverse..)*
+#
+# enable*/disable auto XON/XOFF control
+# require/do not require receipt of a DC1 from host after each LF*
+# pause key acts as a meta key/pause key is pause*
+# unused
+#
+# unused
+# unused
+# unused
+# unused
+#
+# XON character (17*)
+# XOFF character (19*)
+#
+# C menu: 56 66 0 0 9600 0110 1100
+# number of lines to print data on (printer) (56*)
+#
+# number of lines on a sheet of paper (printer) (66*)
+#
+# left margin (printer) (0*)
+#
+# number of pad chars on new line to printer (0*)
+#
+# printer baud rate (9600*)
+#
+# printer parity: 00=odd,01=even*,10=space,11=mark
+# printer stop bits: 2*/1
+# print/do not print guarded areas*
+#
+# new line is: 01=LF,10=CR,11=CRLF*
+# unused
+# unused
+#
+# D menu: 0110 1001 1 0
+# LF is newline/LF is down one line, same column*
+# wrap to preceding line if move left from col 1*/don't wrap
+# wrap to next line if move right from col 80*/don't wrap
+# backspace is/is not destructive*
+#
+# display*/ignore DEL character
+# display will not/will scroll*
+# page/column tab stops*
+# erase everything*/erase unprotected only
+#
+# editing extent: 0=display,1=line*,2=field,3=area
+#
+# unused
+#
+aaa-unk|ann arbor ambassador (internal - don't use this directly):\
+ :do=^J:al=3\E[L:am:le=^H:bs:\
+ :cd=\E[J:ce=5\E[K:cl=156\E[H\E[J:cm=\E[%i%d;%dH:co#80:\
+ :dc=4\E[P:dl=3\E[M:ho=\E[H:ic=4\E[@:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:mk=\E[8m:me=\E[m:\
+ :ku=\EM:kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:ko=cl,dc,dl,ce,cd:\
+ :ks=\EP`?z~[H~[[J`>z~[[J`8xz~[M`4xz~[[D`6xz~[[C`2xz~[D\E\\:\
+ :ke=\EP`?y~[H~[[J`>y~[[2J`8xy~[M`4xy~[[D`6xy~[[C`2xy~[D\E\\:\
+ :ch=\E[%i%d`:pt:bw:bt=\E[Z:\
+ :mi:nd=\E[C:se=\E[m:so=\E[7m:ue=\E[m:us=\E[4m:up=\EM:
+aaa-18|ann arbor ambassador/18 lines:\
+ :ti=\E[2J\E[18;0;0;18p:te=\E[60;0;0;18p\E[18;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#18:tc=aaa-unk:
+aaa-20|ann arbor ambassador/20 lines:\
+ :ti=\E[2J\E[20;0;0;20p:te=\E[60;0;0;20p\E[20;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#20:tc=aaa-unk:
+aaa-22|ann arbor ambassador/22 lines:\
+ :ti=\E[2J\E[22;0;0;22p:te=\E[60;0;0;22p\E[22;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#22:tc=aaa-unk:
+aaa-24|ann arbor ambassador/24 lines:\
+ :ti=\E[2J\E[24;0;0;24p:te=\E[60;0;0;24p\E[24;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#24:tc=aaa-unk:
+aaa-26|ann arbor ambassador/26 lines:\
+ :ti=\E[2J\E[26;0;0;26p:te=\E[60;0;0;26p\E[26;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#26:tc=aaa-unk:
+aaa-28|ann arbor ambassador/28 lines:\
+ :ti=\E[2J\E[28;0;0;28p:te=\E[60;0;0;28p\E[28;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#28:tc=aaa-unk:
+aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines:\
+ :ti=\E[2J\E[30;0;0;30p:te=\E[60;0;0;30p\E[30;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#30:tc=aaa-unk:
+aaa-36|ann arbor ambassador/36 lines:\
+ :ti=\E[2J\E[36;0;0;36p:te=\E[60;0;0;36p\E[36;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#36:tc=aaa-unk:
+aaa-40|ann arbor ambassador/40 lines:\
+ :ti=\E[2J\E[40;0;0;40p:te=\E[60;0;0;40p\E[40;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#40:tc=aaa-unk:
+aaa-48|ann arbor ambassador/48 lines:\
+ :ti=\E[2J\E[48;0;0;48p:te=\E[60;0;0;48p\E[48;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#48:tc=aaa-unk:
+aaa-60|ann arbor ambassador/60 lines:\
+ :ti=\E[2J\E[60;0;0;60p:te=\E[60;0;0;60p\E[60;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#60:tc=aaa-unk:
+aaa-unk-s|ann arbor ambassador unknown with/status:\
+ :es:hs:i2=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\
+ :ts=\E7\E[>51h\E[H\E[2K\E[%i%d`:fs=\E[>51l\E8:\
+ :ds=\E7\E[>51h\E[H\E[2K\E[>51l\E8:\
+ :tc=aaa-unk:
+aaa-18-s|ann arbor ambassador/18 lines + status line:\
+ :ti=\E[2J\E[18;1;0;18p:\
+ :te=\E[60;1;0;18p\E[17;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#17:tc=aaa-unk-s:
+aaa-20-s|ann arbor ambassador/20 lines + status line:\
+ :ti=\E[2J\E[20;1;0;20p:\
+ :te=\E[60;1;0;20p\E[19;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#19:tc=aaa-unk-s:
+aaa-22-s|ann arbor ambassador/22 lines + status line:\
+ :ti=\E[2J\E[22;1;0;22p:\
+ :te=\E[60;1;0;22p\E[21;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#21:tc=aaa-unk-s:
+aaa-24-s|ann arbor ambassador/24 lines + status line:\
+ :ti=\E[2J\E[24;1;0;24p:\
+ :te=\E[60;1;0;24p\E[23;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#23:tc=aaa-unk-s:
+aaa-26-s|ann arbor ambassador/26 lines + status line:\
+ :ti=\E[2J\E[26;1;0;26p:\
+ :te=\E[60;1;0;26p\E[25;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#25:tc=aaa-unk-s:
+aaa-28-s|ann arbor ambassador/28 lines + status line:\
+ :ti=\E[2J\E[28;1;0;28p:\
+ :te=\E[60;1;0;28p\E[27;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#27:tc=aaa-unk-s:
+aaa-30-s|ann arbor ambassador/30 lines + status line:\
+ :ti=\E[2J\E[30;1;0;30p:\
+ :te=\E[60;1;0;30p\E[29;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#29:tc=aaa-unk-s:
+aaa-36-s|ann arbor ambassador/36 lines + status line:\
+ :ti=\E[2J\E[36;1;0;36p:\
+ :te=\E[60;1;0;36p\E[35;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#35:tc=aaa-unk-s:
+aaa-40-s|ann arbor ambassador/40 lines + status line:\
+ :ti=\E[2J\E[40;1;0;40p:\
+ :te=\E[60;1;0;40p\E[39;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#39:tc=aaa-unk-s:
+aaa-48-s|ann arbor ambassador/48 lines+sl:\
+ :ti=\E[2J\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\EP`?y~[[2J~[[H\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#47:tc=aaa-unk-s:
+aaa-60-s|ann arbor ambassador/60 lines + status line:\
+ :ti=\E[2J\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:\
+ :is=\EP`+x~M\E\\\E[m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#59:tc=aaa-unk-s:
+aaa-18-rv|ambassador/18 lines+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-18:
+aaa-20-rv|ambassador/20 lines+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-20:
+aaa-22-rv|ambassador/22 lines+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-22:
+aaa-24-rv|ambassador/24 lines+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-24:
+aaa-26-rv|ambassador/26 lines+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-26:
+aaa-28-rv|ambassador/28 lines+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-28:
+aaa-30-rv|ann arbor ambassador/30 lines in reverse video:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-30:
+aaa-36-rv|ann arbor ambassador/36 lines in reverse video:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-36:
+aaa-40-rv|ann arbor ambassador/40 lines in reverse video:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-40:
+aaa-48-rv|ann arbor ambassador/48 lines in reverse video:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-48:
+aaa-60-rv|ann arbor ambassador/60 lines in reverse video:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-60:
+aaa-18-rv-s|aaa-18-s-rv|ambassador/18 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[18;1;0;18p:te=\E[60;1;0;18p\E[17;1H\E[J:li#17:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;18p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-20-rv-s|aaa-20-s-rv|ambassador/20 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[20;1;0;20p:te=\E[60;1;0;20p\E[19;1H\E[J:li#19:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;20p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-22-rv-s|aaa-22-s-rv|ambassador/22 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[22;1;0;22p:te=\E[60;1;0;22p\E[21;1H\E[J:li#21:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;22p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-24-rv-s|aaa-24-s-rv|ambassador/24 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[24;1;0;24p:te=\E[60;1;0;24p\E[23;1H\E[J:li#23:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;24p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-26-rv-s|aaa-26-s-rv|ambassador/26 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[26;1;0;26p:te=\E[60;1;0;26p\E[25;1H\E[J:li#25:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;26p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-28-rv-s|aaa-28-s-rv|ambassador/28 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[28;1;0;28p:te=\E[60;1;0;28p\E[27;1H\E[J:li#27:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;28p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-rv|aaa-30-rv-s|aaa-30-s-rv|ambassador/30 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[30;1;0;30p:te=\E[60;1;0;30p\E[29;1H\E[J:li#29:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-36-rv-s|aaa-36-s-rv|ambassador/36 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[36;1;0;36p:te=\E[60;1;0;36p\E[35;1H\E[J:li#35:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;36p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-40-rv-s|aaa-40-s-rv|ambassador/40 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[40;1;0;40p:te=\E[60;1;0;40p\E[39;1H\E[J:li#39:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;40p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-48-rv-s|aaa-48-s-rv|ambassador/48 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[48;1;0;48p:te=\E[60;1;0;48p\E[47;1H\E[J:li#47:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;48p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-60-rv-s|aaa-60-s-rv|ambassador/60 lines+sl+rv:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :ti=\E[2J\E[60;1;0;60p:te=\E[60;1;0;60p\E[59;1H\E[J:li#59:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;60p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :tc=aaa-unk-s:
+aaa-24-ctxt:\
+ :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24:
+aaa-24-rv-ctxt|ambassador/24+rv:\
+ :ti=\E[30;1H\E[K\E[24;0;0;24p:te=\E[60;1;0;24p\E[60;1H\E[K:tc=aaa-24-rv:
+aaa-s-ctxt|aaa-30-s-ctxt|hairy aaa:\
+ :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:tc=aaa-30-s:
+aaa-s-rv-ctxt|aaa-30-s-rv-ctxt:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;1;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :ti=\E[30;1H\E[K\E[30;1;0;30p:te=\E[60;1;0;30p\E[59;1H\E[K:\
+ :li#29:tc=aaa-unk-s:
+aaa-ctxt|aaa-30-ctxt:\
+ :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:tc=aaa-30:
+aaa-rv-ctxt|aaa-30-rv-ctxt:\
+ :ti=\E[30;0;0;30p:te=\E[60;0;0;30p\E[60;1H\E[K:\
+ :md=\E[1;7m:mr=\E[m:mb=\E[5;7m:mk=\E[7;8m:me=\E[7m:\
+ :us=\E[4;7m:ue=\E[7m:se=\E[7m:so=\E[m:\
+ :is=\EP`+x~M\E\\\E[7m\E7\E[60;0;0;30p\E[3g\E[f\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E[8a\EH\E8\E[>6h\E[1Q:\
+ :li#30:tc=aaa-unk:
+aaa-db|ann arbor ambassador 30/destructive backspace:\
+ :ti=\E[H\E[J\E[30;0;0;30p:te=\E7\E[60;0;0;30p\E8:li#30:\
+ :is=\E[60;0;0;30p\E[H\E[J\E[1Q\E[m\E[20l\E[>30h:le=\E[D:bc=\E[D:bs@:\
+ :tc=aaa-unk:
+annarbor|4080|ann arbor 4080:\
+ :do=^J:pt:ct=^\^P^P:st=^]^P1:cm=^O%r%\066%.%>^S^L%+@:\
+ :co#80:li#40:le=^H:bs:cl=2^L:up=^N:nd=^_:ho=^K:am:\
+ :kb=^^:kd=^J:ku=^N:kl=^H:kr=^_:kh=^K:ma=^_ ^N^P:
+# # --------------------------------
+#
+# P: PC entries for use with kermit
+#
+# greg small (gts@populi)
+#
+# Cannot use :pt:, it does not work (why?). :ho: seems required (why?). [gts]
+# Caution: 4.3 BSD tset does not pass li#25 to stty rows except during login?
+# :cl: clears attributes and sets wrap at margin before clearing the screen.
+ansi.sys|ansisys|PC-DOS 3.1 ANSI.SYS:\
+ :am:bs:ce=\E[K:cl=\E[m\E[7h\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\
+ :ho=\E[H:li#25:nd=\E[C:up=\E[A:\
+ :ms:md=\E[1m:me=\E[m:mr=\E[7m:se=\E[m:so=\E[1m:ue=\E[m:us=\E[4m:\
+ :is=U1 PC-DOS 3.1 ANSI.SYS 9-23-86\n\E[m\E[7h:
+#
+# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS.
+# This should only be used when the terminal emulator cannot redefine the keys.
+# Since redefining keys with ansi.sys also affects PC-DOS programs, the key
+# definitions must be restored. If the terminal emulator is quit while in vi
+# or others using :ks:ke:, the keypad keys will not be defined as per PC-DOS.
+# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix
+# (^U and ^D are already defined for tn3270). The ESC is safe for vi but it
+# does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab.
+# Left arrow is always BS, because PC-dos can tolerate this change.
+# Caution: vi is limited to 256 string bytes, longer crashes or weirds vi.
+# Consequently the End keypad key could not be set (it is relatively safe and
+# actually useful because it sends ^@ O, which beeps and opens a line above).
+ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi:\
+ :ks=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p:\
+ :ke=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p:\
+ :is=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\
+ :tc=ansi.sys:
+#
+# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer.
+nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS:\
+ :al=\E[1L:dl=\E[1M:ic=\E[1@:dc=\E[1P:\
+ :is=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n:\
+ :tc=ansi.sys:
+#
+# See U2 ansi.sysk and U3 nansi.sys above.
+nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi:\
+ :al=\E[1L:dl=\E[1M:ic=\E[1@:dc=\E[1P:\
+ :is=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p:\
+ :tc=ansi.sysk:
+# Hellmuth Michaelis <hm@FreeBSD.org>
+# pcvt vt220 terminal emulator console (pc keyboard & monitor)
+# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
+# 50 lines entries
+# 80 columns
+#---------------------------------------------------------------------------
+pcvt25|dec vt220 with 25 lines:\
+ :li#25:\
+ :co#80:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
+ :tc=pcvtXX:
+
+pcvt28|dec vt220 with 28 lines:\
+ :li#28:\
+ :co#80:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;28r\E[28;1H:\
+ :tc=pcvtXX:
+
+pcvt35|dec vt220 with 35 lines:\
+ :li#35:\
+ :co#80:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;35r\E[35;1H:\
+ :tc=pcvtXX:
+
+pcvt40|dec vt220 with 40 lines:\
+ :li#40:\
+ :co#80:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
+ :tc=pcvtXX:
+
+pcvt43|dec vt220 with 43 lines:\
+ :li#43:\
+ :co#80:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;43r\E[43;1H:\
+ :tc=pcvtXX:
+
+pcvt50|dec vt220 with 50 lines:\
+ :li#50:\
+ :co#80:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;50r\E[50;1H:\
+ :tc=pcvtXX:
+# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
+# 50 lines entries
+# 132 columns
+pcvt25w|dec vt220 with 25 lines and 132 cols:\
+ :li#25:\
+ :co#132:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
+ :tc=pcvtXX:
+
+pcvt28w|dec vt220 with 28 lines and 132 cols:\
+ :li#28:\
+ :co#132:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;28r\E[28;1H:\
+ :tc=pcvtXX:
+
+pcvt35w|dec vt220 with 35 lines and 132 cols:\
+ :li#35:\
+ :co#132:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;35r\E[35;1H:\
+ :tc=pcvtXX:
+
+pcvt40w|dec vt220 with 40 lines and 132 cols:\
+ :li#40:\
+ :co#132:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
+ :tc=pcvtXX:
+
+pcvt43w|dec vt220 with 43 lines and 132 cols:\
+ :li#43:\
+ :co#132:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;43r\E[43;1H:\
+ :tc=pcvtXX:
+
+pcvt50w|dec vt220 with 50 lines and 132 cols:\
+ :li#50:\
+ :co#132:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;50r\E[50;1H:\
+ :tc=pcvtXX:
+# termcap entries for HP-Emulation and 25, 28, 35, 40, 43 and 50
+# lines entries. note that the HP-Emulation uses the bottom 3 lines
+# for status and function key labels, so we get always 3 lines less.
+# "Xs" is a nonstandard, private flag indicating HP-like fkey labels
+# 80 column entries
+pcvt22h|dec vt220 with HP-fkey labels and 22 lines:\
+ :li#22:\
+ :co#80:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;22r\E[22;1H:\
+ :tc=pcvtXX:
+
+pcvt25h|dec vt220 with HP-fkey labels and 25 lines:\
+ :li#25:\
+ :co#80:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
+ :tc=pcvtXX:
+
+pcvt32h|dec vt220 with HP-fkey labels and 32 lines:\
+ :li#32:\
+ :co#80:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;32r\E[32;1H:\
+ :tc=pcvtXX:
+
+pcvt37h|dec vt220 with HP-fkey labels and 37 lines:\
+ :li#37:\
+ :co#80:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;37r\E[37;1H:\
+ :tc=pcvtXX:
+
+pcvt40h|dec vt220 with HP-fkey labels and 40 lines:\
+ :li#40:\
+ :co#80:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
+ :tc=pcvtXX:
+
+pcvt47h|dec vt220 with HP-fkey labels and 47 lines:\
+ :li#47:\
+ :co#80:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;47r\E[47;1H:\
+ :tc=pcvtXX:
+# termcap entries for HP-Emulation and 25, 28, 35, 40, 43 and 50
+# lines entries. note that the HP-Emulation uses the bottom 3 lines
+# for status and function key labels, so we get always 3 lines less.
+# "Xs" is a nonstandard, private flag indicating HP-like fkey labels
+# 132 column entries
+pcvt22hw|dec vt220 with HP-fkey labels, 22 lines and 132 cols:\
+ :li#22:\
+ :co#132:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;22r\E[22;1H:\
+ :tc=pcvtXX:
+
+pcvt25hw|dec vt220 with HP-fkey labels, 25 lines and 132 cols:\
+ :li#25:\
+ :co#132:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
+ :tc=pcvtXX:
+
+pcvt32hw|dec vt220 with HP-fkey labels, 32 lines and 132 cols:\
+ :li#32:\
+ :co#132:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;32r\E[32;1H:\
+ :tc=pcvtXX:
+
+pcvt37hw|dec vt220 with HP-fkey labels, 37 lines and 132 cols:\
+ :li#37:\
+ :co#132:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;37r\E[37;1H:\
+ :tc=pcvtXX:
+
+pcvt40hw|dec vt220 with HP-fkey labels, 40 lines and 132 cols:\
+ :li#40:\
+ :co#132:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
+ :tc=pcvtXX:
+
+pcvt47hw|dec vt220 with HP-fkey labels, 47 lines and 132 cols:\
+ :li#47:\
+ :co#132:\
+ :Xs:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;47r\E[47;1H:\
+ :tc=pcvtXX:
+# main entry, without "is" and "li" capabilities
+pcvtXX|pcvt vt200 emulator (DEC VT220):\
+ :AL=\E[%dL:\
+ :DC=\E[%dP:\
+ :DL=\E[%dM:\
+ :DO=\E[%dB:\
+ :IC=\E[%d@:\
+ :LE=\E[%dD:\
+ :RI=\E[%dC:\
+ :SF=\E[%dS:\
+ :SR=\E[%dT:\
+ :UP=\E[%dA:\
+ :ac=llmmkkjjuuttvvwwqqxxnnpprr``aa:\
+ :ae=^O:\
+ :al=\E[L:\
+ :am:\
+ :as=^N:\
+ :bl=^G:\
+ :bs:\
+ :cb=\E[1K:\
+ :cd=\E[J:\
+ :ce=\E[K:\
+ :cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:\
+ :cr=^M:\
+ :cs=\E[%i%d;%dr:\
+ :ct=\E[3g:\
+ :dc=\E[P:\
+ :dl=\E[M:\
+ :do=^J:\
+ :eA=\E)0:\
+ :ei=\E[4l:\
+ :ho=\E[H:\
+ :im=\E[4h:\
+ :it#8:\
+ :k1=\E[17~:\
+ :k2=\E[18~:\
+ :k3=\E[19~:\
+ :k4=\E[20~:\
+ :k5=\E[21~:\
+ :k6=\E[23~:\
+ :k7=\E[24~:\
+ :k8=\E[25~:\
+ :kD=\E[3~:\
+ :kH=\E[4~:\
+ :kI=\E[2~:\
+ :kN=\E[6~:\
+ :kP=\E[5~:\
+ :kb=\177:\
+ :kd=\EOB:\
+ :ke=\E[?1l\E>:\
+ :kh=\E[1~:\
+ :kl=\EOD:\
+ :km:\
+ :kr=\EOC:\
+ :ks=\E[?1h\E=:\
+ :ku=\EOA:\
+ :le=^H:\
+ :mb=\E[5m:\
+ :md=\E[1m:\
+ :me=\E[m:\
+ :mi:\
+ :mr=\E[7m:\
+ :ms:\
+ :nd=\E[C:\
+ :pb#16000000:\
+ :pt:\
+ :rc=\E8:\
+ :rf=/usr/share/tabset/vt100:\
+ :rs=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :sc=\E7:\
+ :se=\E[27m:\
+ :sf=\ED:\
+ :so=\E[7m:\
+ :sr=\EM:\
+ :st=\EH:\
+ :ue=\E[24m:\
+ :up=\E[A:\
+ :us=\E[4m:\
+ :vt#3:\
+ :xn:
+
+# # --------------------------------
+#
+# T: TELETYPE
+#
+# We need descriptions for the model 40. There are known to be at least three
+# flavors of the 40, both seem more like IBM half duplex forms fillers than
+# ASCII terminals. They have lots of awful braindamage, such as printing
+# a visible newline indicator after each newline. The 40-1 is a half duplex
+# terminal and is hopeless. The 40-2 is braindamaged but has hope and is
+# described here. The 40-4 is a 3270 lookalike and beyond hope.
+# The terminal has visible bell but I don't know it - it's
+# null here to prevent it from showing the BL character.
+# There is an \EG in nl because of a bug in vi (if stty says you have
+# a "newline" style terminal (-crmode) vi figures all it needs is nl
+# to get crlf, even if cr is not ^M.)
+40|tty40|ds40|ds40/2|ds40-2|dataspeed40|teletype dataspeed 40/2:\
+ :cl=160\ER:cd=160\EJ:al=160\EL:dl=160\EM:dc=50\EP:ic=50\E\^:\
+ :nd=\EC:up=\E7:bs:cr=\EG:nl=\EG\EB:do=\EB:co#80:li#24:vb=:\
+ :so=\E3:se=\E4:
+33|tty33|tty|model 33 teletype:\
+ :do=^J:co#72:hc:os:
+43|tty43|model 43 teletype:\
+ :do=^J:kb=^h:am:le=^H:bs:hc:os:co#132:
+37|tty37|model 37 teletype:\
+ :do=^J:le=^H:bs:hc:hu=\E8:hd=\E9:up=\E7:os:
+# From jwb Wed Mar 31 13:25:09 1982 remote from ihuxp
+# This entry appears to avoid the top line - I have no idea why.
+4424|tty4424|teletype 4424M:\
+ :al=\EL:da:db:ip=2:ic=\E\^:dc=\EP:dl=\EM:\
+ :co#80:li#23:am:cl=\E[2;H\E[J:bs:cm=\E[%i%2;%2H\E[B:\
+ :nd=\E[C:up=\E[A:pt:mi:sr=\ET:\
+ :ce=\E[K:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :is=\E[m\E[2;24r:\
+ :kd=\E[B:kl=\E[D:ku=\E[A:kr=\E[C:\
+ :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:
+# Teletype blit.
+dmd|5620|ttydmd|tty5620|5620 terminal 88 columns:\
+ :co#88:li#70:am:bs:pt:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :cl=\E[H\E[J:cd=\E[J:ce=\E[K:al=\E[L:dl=\E[M:do=^J:\
+ :ic=\E[@:dc=\E[P:sr=\E[T:sf=\E[S:le=^H:kb=^H:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:kd=\E[B:kh=\E[H:ho=\E[H:ll=\E[70;1H:\
+ :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:rc=\E8:rs=\Ec:sc=\E7:\
+ :so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:ms:me=\E[0m:mr=\E[7m:
+# # --------------------------------
+#
+# V: VISUAL
+#
+# The Visual 200 beeps when you type a character in insert mode.
+# This is a horribly obnoxious misfeature, and some of the entries
+# below try to get around the problem by ignoring the feature or
+# turning it off when inputting a character. They are said not to
+# work well at 300 baud. (You could always cut the wire to the bell!)
+# From mike@brl-vgr Mon Nov 14 08:34:29 1983
+vi200|vis200|visual 200 with function keys:\
+ :so=\E4:se=\E3:ms:do=^J:\
+ :al=\EL:am:le=^H:bs:cd=\Ey:ce=\Ex:cl=\Ev:\
+ :cm=\EY%+ %+ :co#80:dc=\EO:dl=\EM:ho=\EH:\
+ :ic=\Ei \b\Ej:\
+ :is=\E3\Eb\Ej\E\\\El\EG\Ec\Ek:\
+ :k0=\EP:k1=\EQ:k2=\ER:k3=\E :k4=\E!:k5=\E":k6=\E#:\
+ :k7=\E$:k8=\E%:k9=\E&:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\
+ :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec:
+vi200-rv-ic|visual 200 reverse video using insert char:\
+ :ei=\Ej:im=\Ei:ic@:tc=vi200-rv:
+# The older Visuals didn't come with function keys. This entry uses
+# ks and ke so that the keypad keys can be used as function keys.
+# If your version of vi doesn't support function keys you may want
+# to use V2.
+vi200-f|visual|visual 200 no function keys:\
+ :do=^J:al=\EL:am:le=^H:bs:cd=\Ey:ce=4*\Ex:cl=\Ev:\
+ :cm=\EY%+ %+ :co#80:dc=4*\EO:dl=4*\EM:ho=\EH:\
+ :ic=\Ei \b\Ej:\
+ :is=\E3\Eb\Ej\E\\\El\EG\Ed\Ek:ks=\E=:ke=\E>:\
+ :k0=\E?p:k1=\E?q:k2=\E?r:k3=\E?s:k4=\E?t:k5=\E?u:k6=\E?v:\
+ :k7=\E?w:k8=\E?x:k9=\E?y:kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\
+ :li#24:nd=\EC:pt:sr=\EI:up=\EA:vs=\Ed:ve=\Ec:
+vi200-rv|visual 200 reverse video:\
+ :so=\E4:se=\E3:sr@:vs@:ve@:tc=vi200:
+vi200-ic|visual 200 using insert char:\
+ :ei=\Ej:im=\Ei:ic@:tc=vi200:
+# From: jbs@athena.mit.edu Jeff Siegal
+vi55|Visual 55:\
+ :im=\Ea:ei=\Eb:mi:dc=\Ew:al=\EL:dl=\EM:cs=\E_%+A%+A:\
+ :ho=\EH:cl=\Ev:is=\Ev\E_AX\Eb\EW\E9P\ET:so=\EU:se=\ET:ms:\
+ :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cm=\EY%+ %+ :co#80:li#24:\
+ :nd=\EC:pt:am:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:
+# # --------------------------------
+#
+# X: TEKTRONIX
+#
+tek|tek4012|4012|tektronix 4012:\
+ :do=^J:is=\E^O:le=^H:bs:cl=1000\E^L:co#75:ns:li#35:os:
+tek4013|4013|tektronix 4013:\
+ :as=\E^N:ae=\E^O:dF#1000:tc=4012:
+tek4014|4014|tektronix 4014:\
+ :is=\E^O\E9:co#81:li#38:dF#1000:tc=tek4012:
+tek4015|4015|tektronix 4015:\
+ :as=\E^N:ae=\E^O:tc=4014:
+tek4014-sm|4014-sm|tektronix 4014 in small font:\
+ :is=\E^O\E\072:co#121:li#58:tc=tek4014:
+tek4015-sm|4015-sm|tektronix 4015 in small font:\
+ :as=\E^N:ae=\E^O:tc=4014-sm:
+# I think the 1000UP is supposed to be so expensive it never happens.
+tek4023|4023|tex|tektronix 4023:\
+ :do=^J:so=^_P:se=^_@:cm=\034%r%+ %+ :nd=\t:le=^H:\
+ :bs:cl=4\E^L:co#80:li#24:am:up=1000UP:vt#4:
+# Can't use cursor motion because it's memory relative, and because
+# it only works in the workspace, not the monitor. Same for home.
+# Likewise, standout only works in the workspace.
+# 145 ms padding on al and AL taken out since it doesn't seem to be needed much.
+4025|4027|4024|tek4025|tek4027|tek4024|4025cu|4027cu|tektronix 4024/4025/4027:\
+ :sf=^F^J:do=^F^J:is=\41com 31\r\n^_sto 9 17 25 33 41 49 57 65 73\r:\
+ :ks=^_lea p4 /h/\r^_lea p8 /k/\r^_lea p6 / /\r^_lea p2 /j/\r^_lea f5 /H/\r^_lea p5 /H/\r:\
+ :ke=^_lea p2\r^_lea p4\r^_lea p6\r^_lea p8\r^_lea p5\r^_lea f5\r:\
+ :am:le=^H:bs:da:db:pt:li#34:co#80:cl=^_era\r\n\n:up=^K:nd=^_rig\r:\
+ :al=^_up\r^_ili\r:dl=^_dli\r^F:\
+ :dc=^_dch\r:im=^_ich\r:ei=^F^_dow\r^K:nl=^F\n:\
+ :cd=^_dli 50\r:CC=^_:AL=^_up\r^_ili %d\r:DL=^_dli %d\r^F:\
+ :UP=^_up %d\r:DO=^_dow %d\r:LE=^_lef %d\r:RI=^_rig %d\r:
+# Tektronix 4025A from gwyn@brl-smoke.ARPA (Doug Gwyn )
+# The following status modes are assumed for normal operation (replace the
+# initial "!" by whatever the current command character is):
+# !COM 29 # NOTE: changes command character to GS (^])
+# ^]DUP
+# ^]ECH R
+# ^]EOL
+# ^]RSS T
+# ^]SNO N
+# ^]STO 9 17 25 33 41 49 57 65 73
+# Other modes may be set according to communication requirements.
+# If the command character is inadvertently changed, termcap can't restore it.
+# Insert-character cannot be made to work on both top and bottom rows.
+# Clear-to-end-of-display emulation via !DLI 988 is too groady to use, alas.
+# There also seems to be a problem with vertical motion, perhaps involving
+# delete/insert-line, following a typed carriage return. This terminal sucks.
+# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control!
+tek4025a|4025a|Tektronix 4025A:\
+ :al=^K^]ili;:am:bl=^G:bt=^]bac;:bw:CC=^]:cl=^]era;^J^]rup;:co#80:\
+ :cr=^M:ct=^]sto;:da:db:DC=^]dch %d;:dc=^]dch;:DL=^]dli %d;:dl=^]dli;:\
+ :DO=^]dow %d;:do=^J:it#8:LE=^]lef %d;:le=^H:li#34:nd=^]rig;:\
+ :RI=^]rig %d;:\
+ :rs=!com 29^]del 0^]rss t^]buf^]buf n^]cle^]dis^]dup^]ech r^]eol\
+^]era g^]for n^]pad 203^]pad 209^]sno n^]sto 9 17 25 33 41 49 57 65 73\
+^]wor 0;:\
+ :SF=^]dow %d;:sf=^J:ta=^I:UP=^]up %d;:up=^K:xo:\
+ :ce=^]dch 80;:ch=\r^]rig %d;:\
+ :bs:pt:xx:
+4025-17|4027-17|tek 4025 17 line window:\
+ :li#17:tc=4025:
+4025-17ws|4027-17ws|tek 4025 17 line window in workspace:\
+ :is=\41com 31\r\n^_sto 9,17,25,33,41,49,57,65,73\r^_wor 17\r^_mon 17\r:\
+ :ti=^_wor h\r:te=^_mon h\r:so=^_att e\r:se=^_att s\r:tc=4025-17:
+4025ex|4027ex|tek 4025 w/!:\
+ :ti=\41com 31\r:te=^_com 33\r:\
+ :is=^_com 33\r\n\41sto 9,17,25,33,41,49,57,65,73\r:tc=4025:
+# From jcoker@ucbic
+tek4107|tek4207|4107|4207|Tektronix 4107 graphics terminal with memory:\
+ :ti=\E[?6l\E[H\E[J:te=\E[?6h\E%!0\ELBP0\E%!1\E[32;1f:\
+ :is=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\
+ :li#32:do=^J:al=3\E[L:xn:am:le=^H:bs:cd=\E[J:\
+ :ce=5\E[K:cl=156\E[H\E[J:cm=\E[%i%d;%dH:co#80:dc=4\E[P:dl=3\E[M:\
+ :ho=\E[H:ic=4\E[@:md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:ku=\EM:\
+ :kd=\ED:kl=\E[D:kr=\E[C:kh=\E[H:\
+ :ul:pt:bw:bt=\E[Z:mi:nd=\E[C:se=\E[m:so=\E[7m:\
+ :ue=\E[m:us=\E[4m:up=\EM:
+# Tektronix 4107 with sysline
+4107-s|tek4107-s|Tektronix 4107 with sysline but no memory:\
+ :is=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J:\
+ :es:hs:i2=\E7\E[?6l\E[2K\E[?6h\E8:ts=\E7\E[?6l\E[2K\E[;%i%df:\
+ :fs=\E[?6h\E8:ds=\E7\E[?6l\E[2K\E[?6h\E8:tc=4107:
+# From cbosg!teklabs!davem Wed Sep 16 21:11:41 1981
+# Here's the command file that I use to get rogue to work on the 4025.
+# It should work with any program using the old curses (e.g. it better
+# not try to scroll, or cursor addressing won't work. Also, you can't
+# see the cursor.)
+# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh)
+4025-cr|tek 4025 for curses and rogue:\
+ :is=\41com 31\r\n^_sto 9 17 25 33 41 49 57 65 73\r:\
+ :am:le=^H:bs:pt:li#33:co#80:cm=^_jum%i%d,%d;:up=^K:\
+ :do=^F^J:cl=^_era;:nd=^_rig;:nl=^F\n:ti=^_wor 33h:te=^_wor 0:
+# next two lines commented out since curses only allows 128 chars, sigh.
+# :ti=^_lea p1/b/^_lea p2/j/^_lea p3/n/^_lea p4/h/^_lea p5/ /^_lea p6/l/^_lea p7/y/^_lea p8/k/^_lea p9/u/^_lea p./f/^_lea pt/`era w/13^_lea p0/s/^_wor 33h:\
+# :te=^_lea p1^_lea p2^_lea p3^_lea p4^_lea pt^_lea p5^_lea p6^_lea p7^_lea p8^_lea p9/la/13^_lea p.^_lea p0^_wor 0:
+# The 4110 series may be a wonderful graphics series, but they make the 4025
+# look good for screen editing. In the dialog area, you can't move the cursor
+# off the bottom line. Out of the dialog area, ^K moves it up, but there
+# is no way to scroll.
+4112|4114|tek4112|tektronix 4110 series:\
+ :is=\E3!1:li#34:co#80:am:al=\E[L:bs:bt=\E[Z:\
+ :cd=\E[0J:ce=\E[0K:cl=\E[2J\E[0;0H:cm=\E[%i%d;%dH:\
+ :db:dc=\E[P:dl=\E[M:ic=\E[@:nd=\E[C:se=\E[m:\
+ :so=\E[7m:ue=\E[m:up=\EM:us=\E[4m:vs=:ve=:\
+ :sr=\E7\E[0;0H\E[L\E8:sf=\E7\E[0;0H\E[M\E8:
+4112-nd|4112 not in dialog area:up=^K:ns:tc=4112:
+4112-5|4112 in 5 line dialog area:li#5:tc=4112:
+4113|tek4113|tektronix 4113 color graphics, 5 line dialog area:\
+ :le=^H:do=^J:eo:da:bs:am:li#5:co#80:is=\EKA1\ELL5\ELV0\ELV1:\
+ :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\
+ :cl=\ELZ:uc=^H\ELM1_\ELM0:nd=\LM1 \LM0:\
+ :.as=\E^N:.ae=\E^O:
+4113-34|tek4113-34|tektronix 4113 color graphics, 34 line dialog area:\
+ :is=\EKA1\ELLB2\ELV0\ELV1:li#34:tc=tek4113:
+# ns hidden from vi to allow visual mode. APL font (as, ae) not supported here.
+# uc is slow, but looks nice. Suggest setenv MORE -up . vb needs enough delay
+# to let you see the background color being toggled.
+4113-nd|tek4113-nd|tektronix 4113 color graphics, no dialog area:\
+ :le=^H:do=^J:nd=\t:up=^K:ll=\ELF hl @:ho=\ELF7l\177 @:\
+ :eo:bs:am:li#34:co#80:is=\ELZ\EKA0\ELF7l\177 @:vs=\ELZ\EKA0:\
+ :vb=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0:\
+ :cl=\E\f:uc=^H\EMG1_\EMG0:so=\EMT2:se=\EMT1:\
+ :.ns:.as=\E^N:.ae=\E^O:
+4105|tek4105:\
+ :al=\E[1L:am:bs:cd=\E[J:ce=\E[K:cl=\E[2J\E[H:cm=\E[%i%2;%2H:co#80:\
+ :dc=\E[1P:dl=\E[1M:do=\E[1B:ho=\E[H:im=\E[4h:li#30:mi:nd=\E[1C:\
+ :as=\E[1m:ae=\E[0m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:kb=^h:ku=\E[1A:\
+ :kd=\E[1B:kl=\E[1D:kr=\E[1C:us=\E[4m:ue=\E[0m:is=\E%!1\E[?6l\E[0m:\
+ :mr=\E[<3m:md=\E[<4m:mh=\E[<6m:mb=\E[<7m:me=\E[<1m:ti=\E%!1\E[?6l:xt:
+# This entry is from Tek. Inc. (Brian Biehl)
+4115|tek4115|Tektronix 4115:\
+ :co#80:li#34:\
+ :al=\E[L:am:bc=\E[D:bs:bt=\E[Z:cd=\E[J:ce=\E[K:\
+ :cl=\E[;H\E[2J:cm=\E[%i%d;%dH:da:db:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ei=\E[4l:eo:ho=\E[;H:im=\E[4h:if=/usr/share/tabset/vt100:\
+ :is=\E%\0410\E%\014\ELV0\EKA1\ELBB2\ENU@\075\ELLB2\ELM0\ELV1\EKYA?\E%\0411\E[<1l\E[?7h\E[?8h\E[34;1H\E[34B\E[0m:\
+ :kb=^H:ke=\E>:ks=\E=:nd=\E[C:pt:se=\E[m:so=\E[7m:sr=\EM:\
+ :te=\E%\0410\ELBG8\E%\0411\E[34;1H\E[J:\
+ :ti=\E%\0410\ELBB2\E%\0411:\
+ :ue=\E[m:up=\E[A:us=\E[4m:\
+ :ve=\E%\0410\ELBG8\E%\0411\E[34;1H:\
+ :vs=\E%\0410\ELBB2\E%\0411:
+# The tek4125 emulates a vt100 incorrectly - the scrolling region
+# command is ignored. The following entry replaces the cs with the
+# needed al, dl, and im; removes some cursor pad commands that the tek4125
+# chokes on; and adds a lot of initialization for the tek dialog area.
+# Note that this entry uses all 34 lines and sets the cursor color to green.
+# Steve Jacobson 8/85
+tek4125:\
+ :ks=\E=:li#34:\
+ :is=\E%\!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:dl=\E[1M:\
+ :al=\E[1L:cs@:sc@:rc@:im=\E1:tc=vt100:
+# From carolyn@dali.berkeley.edu Thu Oct 31 12:54:27 1985
+4404|tek4404:\
+ :al=\E[1L:bs:cd=\E[J:ce=\E[K:cl=\E[;H\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :cs=\E[%i%d;%dr:dc=\E[P:dl=\E[1M:do=^J:ei=\E[4l:ho=\E[H:im=\E[4h:\
+ :kd=\E[B:ke=\E[?1h:kl=\E[D:kr=\E[C:ks=\E[?1l:ku=\E[A:li#32::mb=\E[5m:\
+ :md=\E[1m:me=\E[m:nd=\E[C:pt:rc=\E8:sc=\E7:se=\E[27m:so=\E[7m:\
+ :ta=\E[2I:ti=\E%\!1\E[1;32r\E[?6l\E>:te=\E[1;1H\E[0J\E[?6h\E[?1l:\
+ :ue=\E[m:up=\E[A:us=\E[4m:
+# # --------------------------------
+#
+# Z: Miscellaneous
+#
+# These compucolors appear similar, but they at least have different
+# sized screens. I don't know what's going on here.
+8001|ISC8001|compucolor|intecolor:\
+ :do=^J:al=\EU:am:le=^Z:bc=^Z:cl=3*^L:cm=^C%r%.%.:\
+ :co#80:cd=\EQ:dm=\EQ:ed=\EF:dc=\177:dl=\EV:ei=\EF:\
+ :im=\EQ:li#40:nd=1^Y:ta=8\t:up=^\:ho=1^H:pc=^@:
+compucolor2|compucolorII:\
+ :do=^J:pt:am:cm=%r^C%.%.:le=^Z:bc=^Z:li#32:co#64:\
+ :cl=^L:ho=^H:nd=^Y:up=^\:
+# From cithep!eric Wed Sep 16 08:06:44 1981
+intext|Interactive Systems Corporation modified owl 1200:\
+ :do=^J:al=5.5*\020:am:le=^_:bc=^_:le=^H:bs:bt=^Y:cd=5.5*\026J:\
+ :ce=^K\160^R:cl=132\014:cm=\017%+ %+ :co#80:dc=5.5*\022:dl=5.5*\021:\
+ :ei=\026\074:im=\026\073:ip=5.5*:li#24:nd=\036:pt:up=\034:\
+ :se=^V# :sg#1:so=^V$,:ma=^K^P^R^L^L :\
+ :kl=^_:kd=^J:kr=^^:ku=\034:kb=^H:kh=^Z:\
+ :k1=^VA\r:k2=^VB\r:k3=^VC\r:k4=^VD\r:k5=^VE\r:\
+ :k6=^VF\r:k7=^VG\r:k8=^VH\r:k9=^VI\r:k0=^VJ\r:
+# # --------------------------------
+#
+# a: ADDS
+#
+# Regent: lowest common denominator, works on all regents.
+regent|Adds Regent Series:li#24:co#80:am:cl=^L:ll=^A:up=^Z:\
+ :bs:bc=^U:nd=^F:do=^J:ho=\EY :
+# Regent 100 has a bug where if computer sends escape when user is holding
+# down shift key it gets confused, so we avoid escape.
+regent100|Adds Regent 100:k0=^B1^M:k1=^B2^M:k2=^B3^M:k3=^B4^M:\
+ :k4=^B5^M:k5=^B6^M:k6=^B7^M:k7=^B8^M:\
+ :l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:\
+ :so=\E0P:ue=\E0@:us=\E0`:se=\E0@:\
+ :cm=^K%+ %B^P%.:ug#1:sg#1:tc=regent:
+regent20|Adds Regent 20:cd=\Ek:ce=\EK:cm=\EY%+ %+ :tc=regent:
+regent25|Adds Regent 25:kh=^A:kl=^U:kr=^F:ku=^Z:kd=^J:tc=regent20:
+regent40|Adds Regent 40:k0=^B1^M:k1=^B2^M:k2=^B3^M:k3=^B4^M:\
+ :k4=^B5^M:k5=^B6^M:k6=^B7^M:k7=^B8^M:\
+ :l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:\
+ :al=2*\EM:dl=2*\El:\
+ :so=\E0P:ue=\E0@:us=\E0`:se=\E0@:ug#1:sg#1:tc=regent25:
+regent40+|Adds Regent 40+:is=\EB:tc=regent40:
+regent60|regent200|Adds Regent 60:se=\ER\E0@\EV:so=\ER\E0P\EV:dc=\EE:ei=\EF:\
+ :im=\EF:is=\EV\EB:ko=dc,im,ei:tc=regent40+:
+regent60na|regent 60 w/no arrow keys:\
+ :kl@:kr@:ku@:kd@:tc=regent60:
+#
+# adds viewpoint 90 - from cornell
+# Note: emacs sends ei occasionally to insure the terminal is out of
+# insert mode. This unfortunately puts the viewpoint90 IN insert
+# mode. A hack to get around this is: ic=\EF \EF^U. (Also,
+# - ei=:im=: must be present.)
+# - xs indicates glitch that attributes stick to location
+# - bs save to move in standout mode
+# - cl=\EG\Ek clears screen and visual attributes without affecting
+# the status line
+vp90|viewpoint90|adds viewpoint 90:\
+ :bs:bw:cd=\Ek:ce=\EK:cl=\EG\Ek:cm=\EY%+ %+ :co#80:\
+ :dc=\EE:dl=\El:do=^J:ic=\EF \EF^U:ho=\EY :\
+ :nd=^F:up=^Z:\
+ :kb=^H:kd=^J:kh=^A:kl=^U:kr=^F:ku=^Z:li#24:ll=^A:\
+ :so=\ER\E0Q\EV:se=\ER\E0@\EV:\
+ :us=\ER\E0`\EV:ue=\ER\E0@\EV:\
+ :xs:ms:
+# Note: if return acts weird on a980, check internal switch #2
+# on the top chip on the CONTROL pc board.
+a980|adds consul 980:\
+ :do=^J:al=13\E^N:am:le=^H:bs:cl=^L\200^K@:cm=^K%+@\E^E%2:co#80:\
+ :dl=13\E^O:k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:\
+ :k8=\E8:k9=\E9:li#24:nd=\E^E01:so=^Y^^^N:se=^O:up=9:
+viewpt60|viewpoint60|addsviewpoint60|adds viewpoint60:\
+ :tc=regent40:
+# From Onyx:edward Thu Jul 9 09:27:33 1981
+viewpoint|addsviewpoint|adds viewpoint:\
+ :do=^J:am:le=^H:bs:li#24:co#80:cm=\EY%+ %+ :cd=\Ek:ce=\EK:\
+ :up=^Z:cl=^L:ll=^A:kl=^U:kd=^J:ku=^Z:kh=^A:\
+ :so=^N:se=^O:us=^N:ue=^O:is=^O\E0`:vs=^O\E0P:ve=^O\E0`:
+# # --------------------------------
+#
+# b: BEEHIVE
+#
+# Reports are that most of these Beehive entries (except superbee) have not been
+# tested and do not work right. se is a trouble spot. Be warned.
+sb2|sb3|fixed superbee:\
+ :xb@:tc=superbee:
+# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs.
+# good grief - does this entry make sg/ug when it doesn't have to?
+# look at those spaces in se/so. Seems strange to me...
+bh3m|beehiveIIIm:\
+ :if=/usr/share/tabset/beehive:do=^J:\
+ :al=160^S:am:le=^H:bs:cd=^R:ce=^P:cl=^E^R:\
+ :co#80:dl=350^Q:ho=^E:li#20:ll=^E^K:\
+ :nd=^L:pt:se= ^_:so=^] :up=^K:
+# This loses on lines > 80 chars long, use at your own risk
+superbeeic|super bee with insert char:\
+ :im=\EQ:ei=\ER:tc=superbee:
+microb|microbee|micro bee series:\
+ :do=^J:am:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:co#80:cm=\EF%+ %+ :\
+ :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:k9=\Ex:\
+ :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:\
+ :li#24:nd=\EC:pt:se=\Ed@ :so= \EdP:ue=\Ed@:up=\EA:us=\Ed`:
+# Superbee - f1=escape, f2=^C.
+# Note: there are at least 3 kinds of superbees in the world. The sb1
+# holds onto escapes and botches ^C's. The sb2 is the best of the 3.
+# The sb3 puts garbage on the bottom of the screen when you scroll with
+# the switch in the back set to CRLF instead of AEP. This description
+# is tested on the sb2 but should work on all with either switch setting.
+# The f1/f2 business is for the sb1 and the :xb: can be taken out for
+# the other two if you want to try to hit that tiny escape key.
+# This description is tricky: being able to use cm depends on there being
+# 2048 bytes of memory and the hairy nl string.
+sb1|superbee|superb|beehive super bee:\
+ :ct=\E3:st=\E1:is=\EH\EJ:do=^J:\
+ :sf=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\
+ :am:le=^H:bs:cd=3\EJ:ce=3\EK:cl=3\EH\EJ:co#80:cm=\EF%r%3%3:cr=1000\r:\
+ :dC#10:da:db:xb:dc=3\EP:dl=100\EM:so=\E_1:se=\E_3:\
+ :li#25:nl=\n\200\200\200\n\200\200\200\EA\EK\200\200\200\ET\ET:\
+ :nd=\EC:pt:up=\EA:ho=\EH:ve=\n:\
+ :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\
+ :kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:
+# 8675, 8686, and bee from Cyrus Rahman
+8675|harris 8675:\
+ :k1=^F:k2=^P:k3=^N:k4=^V:k5=^J:k6=^T:k7=^H:k8=\177:k9=\Ee:k10=\Ed:\
+ :k11=^W:k12=\ER:k13=\EE:k14=\EI:k15=\Ei:k16=\Eg:\
+ :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU:\
+ :tc=bee:
+8686|harris 8686:\
+ :k1=^B^[p^C:k2=^B^[q^C:k3=^B^[r^C:k4=^B^[s^C:k5=\E3:\
+ :k6=\EI:k7=\ER:k8=\EJ:k9=\E(:k10=\Ej:k11=\EW:\
+ :k12=^B^[{^C:k13=^B^[|^C:k14=^B^[}^C:k15=^B^[~^C:k16=^B^[\177^C:\
+ :is=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\
+ \E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\
+ \E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\
+ \E"8FB5021B7283#:\
+ :tc=bee:
+bee|harris beehive:\
+ :co#80:li#24:am:bs:cd=\EJ:ce=\EK:cl=\EE:nd=\EC:\
+ :cm=\EF%+ %+ :up=\EA:do=\EB:ho=\EH:bt=\E>:\
+ :al=\EL:dc=\EP:dl=\EM:ei=\E@:im=\EQ:mi:\
+ :kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:kb=^H:\
+ :us=\Ed`:ue=\Ed@:so=\EdP:se=\Ed@:\
+ :ko=al,bt,ce,cl,dc,dl,ei,ho,ic,im:
+# # --------------------------------
+#
+# c: CONCEPT (HUMAN DESIGNED SYSTEMS)
+#
+# From vax135!hpk Sat Jun 27 07:41:20 1981
+# Extensive changes to c108 by arpavax:eric Feb 1982
+#
+# There seem to be a number of different versions of the C108 PROMS
+# (with bug fixes in its Z-80 program).
+# The first one that we had would lock out the keyboard of you
+# sent lots of short lines (like /usr/dict/words) at 9600 baud.
+# Try that on your C108 and see if it sends a ^S when you type it.
+# If so, you have an old version of the PROMs.
+# The old one also messed up running vi with a 132-character line-length.
+# You should configure the C108 to send ^S/^Q before running this.
+# It is much faster (at 9600 baud) than the c100 because the delays
+# are not fixed.
+# new status line display entries for c108:
+# hs - has status capability
+# es - escape sequences are OK on status line
+# i2 - second init str - setup term for status display - set programmer mode,
+# select window 2, define window at last line of memory,
+# set bkgnd stat mesg there, select window 0.
+# ts - to status line - select window 2, home cursor, erase to end-of-window,
+# 1/2 bright on, goto(line#0, col#?)
+# fs - from status line - 1/2 bright off, select window 0
+# ds - disable status display - set bkgnd status mesg with illegal window #
+#
+# the following two entries are for emacs -- they are just like the regular
+# entries except that they have buffer overflow control OFF
+e108-8p:\
+ :i2=\EU\E z"\Ev^A\177 !p\E ;"\E z \Ev ^A\177p\Ep\n:\
+ :te=\Ev ^A\177p\Ep\r\n:tc=e108-4p:
+e108-4p:\
+ :is=\EU\E f\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\
+ :tc=c108-4p:
+c108|c108-8p|concept108-8p|concept 108 w/8 pages:\
+ :i2=\EU\E z"\Ev^A\177 !p\E ;"\E z \Ev ^A\177p\Ep\n:\
+ :te=\Ev ^A\177p\Ep\r\n:tc=c108-4p:
+c108-4p|concept108-4p|concept 108 w/4 pages:\
+ :es:hs:ts=\E z"\E?\E^C\Ea %+ :fs=\E z :ds=\E ;\177:\
+ :i2=\EU\E z"\Ev\177 !p\E ;"\E z \Ev \177p\Ep\n:do=^J:pt:\
+ :is=\EU\E F\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\
+ :ti=\EU\Ev 8p\Ep\r:te=\Ev \177p\Ep\r\n:\
+ :al=\E^R:le=^H:bs:cd=\E^C:ce=\E^S:cl=\E?\E^E:cm=\Ea%+ %+ :co#80:\
+ :dc=\E^Q:dl=\E^B:ei=\E\200:eo:im=\E^P:li#24:mi:nd=\E=:\
+ :kb=^h:up=\E;:db:us=\EG:ue=\Eg:vs=\EW:ve=\Ew:am:xn:\
+ :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\
+ :ks=\EX:ke=\Ex:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:\
+ :k1=\E5:k2=\E6:k3=\E7:k4=\E8:k5=\E9:k6=\E\72:\
+ :so=\ED:se=\Ed:mh=\EE:md=\ED:mr=\ED:me=\Ee\Ed\Eg\Ec:
+c108-rv-8p|concept108-rv-8p|concept 108 w/8 pages, in reverse video:\
+ :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\
+ :is=\EU\E F\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\
+ :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :tc=c108-8p:
+c108-rv-4p|concept108-rv-4p|concept 108 w/4 pages, in reverse video:\
+ :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\
+ :is=\EU\E F\Ef\E7\E5\E8\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E!\E^G!\E^HA@ :\
+ :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :tc=c108-4p:
+c108-na|c108-na-8p|concept108-na-8p|concept 108 w/8 pages, no arrows:\
+ :ks@:ke@:k7=\E;:k8=\E<:k9=\E=:tc=c108-8p:
+c108-rv-na|c108-rv-na-8p|concept 108 w/8 pages, no arrows in rev video:\
+ :ts=\E z"\E?\E^C\EE\Ea %+ :fs=\Ee\E z :\
+ :ks@:ke@:k7=\E;:k8=\E<:k9=\E=:tc=c108-rv-8p:
+# this needs new frotz in the cm capability for 2-char addrs when > 95....
+c108-w|c108-w-8p|concept108-w-8p|concept 108 w/8 pages in wide mode:\
+ :is=\EU\E F\Ef\E7\E5\E8\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E"\E^G!\E^HA@ :\
+ :ti=\EU\Ev 8^AD\Ep\r:te=\Ev ^A0^AD\Ep\r\n:pt@:cm@:\
+ :co#132:tc=c108-8p:
+avt-w|avtw|HDS concept avt w/4 or 8 pages; 132 columns:\
+ :is=\E[1*q\E[2!t\E[7!t\E[=4;101;119l\E[=103;107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n:\
+ :ch=\E[%i%3G:cm=\E[%i%2;%3H:co#132:tc=avt:
+avt-8p-s|concept avt w/8 pages & 80 cols running sysline:\
+ :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[2!w\E[192w\E[2*w\E[!w\E[1;191w\E2\r\n:\
+ :hs:es:ts=\E[2!w\E[H\E[J\E[%i%dG:fs=\E[!w:\
+ :ds=\E[2!w\E[2J\E[!w\E[*w:te=\E[1;191w\E2\n:tc=avt:
+avt-4p-s|concept avt w/4 pages & 80 cols running sysline:\
+ :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[2!w\E[96w\E[2*w\E[!w\E[1;95w\E2\r\n:\
+ :hs:es:ts=\E[2!w\E[H\E[J\E[%i%dG:fs=\E[!w:\
+ :ds=\E[2!w\E[2J\E[!w\E[*w:te=\E[1;95w\E2\n:tc=avt:
+avt-rv|HDS concept avt w/4 or 8 pages, 80 columns, reverse video:\
+ :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119l\E[=107;118;205;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n:\
+ :ve=\E[4l:vs=\E[4l:tc=avt:
+avt|HDS concept avt w/4 or 8 pages, 80 columns:\
+ :is=\E[1*q\E[2!t\E[7!t\E[=4;101;103;119;205l\E[=107;118;207h\E)1\E[1Q\EW\E[0!y\E[0\0720\07232!r\E[w\E2\r\n\E[*w:\
+ :ae=^O:al=\E[L:am:as=^N:bs:bt=\E[Z:cd=\E[J:ce=\E[K:\
+ :ch=\E[%i%2G:cl=\E[H\E[J:cm=\E[%i%2;%2H:co#80:cv=\E[%i%2d:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ei=\E1:eo:ho=\E[H:im=\E1:kb=^H:kd=\E[B:\
+ :kh=\E[H:kl=\E[D:ko=do,ho,nd,up:kr=\E[C:\
+ :ks=\E[1;4!z\E[1;8!z\E[1;10!z\E[1;11!z\E[1;12!z\E[1;14!z\E[3;7!z\E[3;9!z:\
+ :ke=\E[;4!z\E[;8!z\E[;10!z\E[;11!z\E[;12!z\E[3;14!z\E[;7!z\E[;9!z:\
+ :ku=\E[A:li#24:mi:nd=\E[C:pt:se=\E[7!{:so=\E[7m:\
+ :te=\E[w\E2\n:ti=\E[1;24w\E2\n:ue=\E[4!{:\
+ :up=\E[A:us=\E[4m:ve=\E[=4;119l:vs=\E[4l\E[=119h:xn:
+#
+# Concepts have only window relative cursor addressing, not screen relative.
+# To get it to work right here, ti/te (which were invented for the concept)
+# lock you into a one page window for screen style programs. To get out of
+# the one page window, we use a clever trick: we set the window size to zero
+# ("\Ev " in te) which the terminal recognizes as an error and resets the
+# window to all of memory.
+#
+# Some tty drivers use cr3 for concept, others use nl3, hence dN/dC below.
+# This padding is only needed at 9600 baud.
+# 2 nulls padding on te isn't always enough. 6 works fine. Maybe less
+# than 6 but more than 2 will work.
+c100|concept|c1004p|c100-4p|concept100|concept 100:\
+ :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\EK\E\200\Eo&\200\Eo\47\E\E^G\041\E^HA@ :\
+ :ti=\EU\Ev 8p\Ep\r:te=\Ev \200\200\200\200\200\200\Ep\r\n:\
+ :al=3*\E^R:am:le=^H:bs:cd=16*\E^C:ce=16\E^U:cl=2*^L:cm=\Ea%+ %+ :co#80:\
+ :dc=16\E^Q:dl=3*\E^B:ei=\E\200:eo:im=\E^P:ip=16*:li#24:mi:nd=\E=:\
+ :pt:kb=^h:ta=8\t:up=\E;:db:us=\EG:ue=\Eg:xn:\
+ :vb=\Ek\200\200\200\200\200\200\200\200\200\200\200\200\200\200\EK:\
+ :.dN#9:dC#9:pb#9600:vt#8:us=\EG:ue=\Eg:so=\EE\ED:se=\Ed\Ee:\
+ :mh=\EE:mr=\ED:mb=\EC:mp=\EI:mk=\EH:me=\EN\200:do=^J:\
+ :ks=\EX:ke=\Ex:ku=\E;:kd=\E<:kl=\E>:kr=\E=:kh=\E?:k1=\E5:k2=\E6:k3=\E7:
+c100-rv-pp|c100-rv-4p-pp|concept100-rv-pp|c100rv4ppp|w/ printer port:\
+ :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\Ek\E\200\Eo&\200\Eo\041\200\EQ"\EY(^W\Eo\47\E\E^G\041\E^HA@ :\
+ :tc=c100-rv:
+c100-rv-na|c100-rv-4p-na|concept100-rv-na|c100rv4pna|c100 with no arrows:\
+ :ks@:ke@:tc=c100-rv:
+c100-rv|c100-rv-4p|concept100-rv|c100rv4p|c100rv|c100 rev video:\
+ :is=\EU\Ef\E7\200\200\E5\E8\200\200\El\ENH\Ek\E\200\Eo&\200\Eo\47\E\E^G\041\E^HA@ :\
+ :vb=\EK\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ek:\
+ :so=\EE:se=\Ee:tc=c100:
+# This is useful at 1200 baud.
+c100-s|concept-s|concept100-s|slow concept 100:\
+ :vb=\Ek\200\EK:pt:dC@:dN@:tc=c100:
+c100-rv-s|concept-rv-s|concept100-rv-s|c100rvs|slow reverse concept 100:\
+ :vb=\EK\200\Ek:pt:dC@:dN@:tc=c100-rv:
+# for syscons
+# common entry without semigraphics
+cons25w|ansiw|ansi80x25-raw:\
+ :am:bs:NP:ms:pt:AX:eo:bw:ut:km:\
+ :co#80:li#25:pa#64:Co#8:it#8:\
+ :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\
+ :dc=\E[P:dl=\E[M:do=\E[B:bt=\E[Z:ho=\E[H:ic=\E[@:cb=\E[1K:\
+ :nd=\E[C:rs=\Ec:so=\E[7m:se=\E[27m:up=\E[A:cr=^M:ta=^I:\
+ :AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:sc=\E7:rc=\E8:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\
+ :k9=\E[U:k;=\E[V:F1=\E[W:F2=\E[X:K2=\E[E:nw=\E[E:ec=\E[%dX:\
+ :kb=^H:kh=\E[H:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:le=^H:sf=\E[S:sr=\E[T:\
+ :kN=\E[G:kP=\E[I:@7=\E[F:kI=\E[L:kD=\177:kB=\E[Z:\
+ :IC=\E[%d@:DC=\E[%dP:SF=\E[%dS:SR=\E[%dT:AL=\E[%dL:DL=\E[%dM:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:cv=\E[%i%dd:ch=\E[%i%d`:\
+ :mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:bl=^G:\
+ :ve=\E[=S:vi=\E[=1S:vs=\E[=2S:
+# CP437 FreeBSD console with ACS support
+cons25|ansis|ansi80x25:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261i^U0\333y\363z\362:\
+ :tc=cons25w:
+cons25-m|ansis-mono|ansi80x25-mono:\
+ :pa@:Co@:AF@:AB@:AX@:op@:us=\E[4m:ue=\E[24m:tc=cons25:
+cons30|ansi80x30:\
+ :li#30:tc=cons25:
+cons30-m|ansi80x30-mono:\
+ :li#30:tc=cons25-m:
+cons43|ansi80x43:\
+ :li#43:tc=cons25:
+cons43-m|ansi80x43-mono:\
+ :li#43:tc=cons25-m:
+cons50|ansil|ansi80x50:\
+ :li#50:tc=cons25:
+cons50-m|ansil-mono|ansi80x50-mono:\
+ :li#50:tc=cons25-m:
+cons60|ansi80x60:\
+ :li#60:tc=cons25:
+cons60-m|ansi80x60-mono:\
+ :li#60:tc=cons25-m:
+# Syscons console with 132 characters (VESA modes)
+cons25-w|ansi132x25:\
+ :co#132:tc=cons25:
+cons30-w|ansi132x30:\
+ :co#132:tc=cons30:
+cons43-w|ansi132x43:\
+ :co#132:tc=cons43:
+cons50-w|ansil-w|ansi132x50:\
+ :co#132:tc=cons50:
+cons60-w|ansi132x60:\
+ :co#132:tc=cons60:
+# KOI8-R/KOI8-U FreeBSD console with ACS support
+cons25r|cons25u|pc3r|ibmpc3r|cons25-koi8:\
+ :ac=q\200x\201m\204v\211j\205t\206n\212u\207l\202w\210k\203y\230z\231f\234~\225a\220h\2210\215:\
+ :tc=cons25w:
+cons25r-m|cons25u-m|pc3r-m|ibmpc3r-mono|cons25-koi8-mono:\
+ :pa@:Co@:AF@:AB@:AX@:op@:us=\E[4m:ue=\E[24m:tc=cons25r:
+cons30r|cons30u|cons30-koi8:\
+ :li#30:tc=cons25r:
+cons30r-m|cons30u-m|cons30-koi8-mono:\
+ :li#30:tc=cons25r-m:
+cons43r|cons43u|cons43-koi8:\
+ :li#43:tc=cons25r:
+cons43r-m|cons43u-m|cons43-koi8-mono:\
+ :li#43:tc=cons25r-m:
+cons50r|cons50u|cons50-koi8:\
+ :li#50:tc=cons25r:
+cons50r-m|cons50u-m|cons50-koi8-mono:\
+ :li#50:tc=cons25r-m:
+cons60r|cons60u|cons60-koi8:\
+ :li#60:tc=cons25r:
+cons60r-m|cons60u-m|cons60-koi8-mono:\
+ :li#60:tc=cons25r-m:
+# Syscons console with 90 characters (VGA modes)
+# KOI8-R/KOI8-U FreeBSD console with ACS support.
+cons25r-v|cons25u-v|pc3r-v|ibmpc3r-vga|cons25-koi8-vga:\
+ :co#90:tc=cons25r:
+cons25r-mv|cons25u-mv|pc3r-mv|ibmpc3r-monovga|cons25-koi8-monovga:\
+ :co#90:tc=cons25r-m:
+cons30r-v|cons30u-v|cons30-koi8-vga:\
+ :co#90:tc=cons30r:
+cons30r-mv|cons30u-mv|cons30-koi8-monovga:\
+ :co#90:tc=cons30r-m:
+cons43r-v|cons43u-v|cons43-koi8-vga:\
+ :co#90:tc=cons43r:
+cons43r-mv|cons43u-mv|cons43-koi8-monovga:\
+ :co#90:tc=cons43r-m:
+cons50r-v|cons50u-v|cons50-koi8-vga:\
+ :co#90:tc=cons50r:
+cons50r-mv|cons50u-mv|cons50-koi8-monovga:\
+ :co#90:tc=cons50r-m:
+cons60r-v|cons60u-v|cons60-koi8-vga:\
+ :co#90:tc=cons60r:
+cons60r-mv|cons60u-mv|cons60-koi8-monovga:\
+ :co#90:tc=cons60r-m:
+# ISO 8859-2 FreeBSD console with ACS support
+cons25l2|cons25-iso8859-2:\
+ :ac=f\260i\247:\
+ :tc=cons25w:
+cons25l2-m|cons25-iso8859-2-mono:\
+ :pa@:Co@:AF@:AB@:AX@:op@:us=\E[4m:ue=\E[24m:tc=cons25l2:
+cons30l2|cons30-iso8859-2:\
+ :li#30:tc=cons25l2:
+cons30l2-m|cons30-iso8859-2-mono:\
+ :li#30:tc=cons25l2-m:
+cons43l2|cons43-iso8859-2:\
+ :li#43:tc=cons25l2:
+cons43l2-m|cons43-iso8859-2-mono:\
+ :li#43:tc=cons25l2-m:
+cons50l2|cons50-iso8859-2:\
+ :li#50:tc=cons25l2:
+cons50l2-m|cons50-iso8859-2-mono:\
+ :li#50:tc=cons25l2-m:
+cons60l2|cons60-iso8859-2:\
+ :li#60:tc=cons25l2:
+cons60l2-m|cons60-iso8859-2-mono:\
+ :li#60:tc=cons25l2-m:
+# ISO 8859-1 FreeBSD console with ACS support
+cons25l1|cons25-iso8859-1:\
+ :ac=f\260g\261}\243+\253,\273i\247:\
+ :tc=cons25w:
+cons25l1-m|cons25-iso8859-1-mono:\
+ :pa@:Co@:AF@:AB@:AX@:op@:us=\E[4m:ue=\E[24m:tc=cons25l1:
+cons30l1|cons30-iso8859-1:\
+ :li#30:tc=cons25l1:
+cons30l1-m|cons30-iso8859-1-mono:\
+ :li#30:tc=cons25l1-m:
+cons43l1|cons43-iso8859-1:\
+ :li#43:tc=cons25l1:
+cons43l1-m|cons43-iso8859-1-mono:\
+ :li#43:tc=cons25l1-m:
+cons50l1|cons50-iso8859-1:\
+ :li#50:tc=cons25l1:
+cons50l1-m|cons50-iso8859-1-mono:\
+ :li#50:tc=cons25l1-m:
+cons60l1|cons60-iso8859-1:\
+ :li#60:tc=cons25l1:
+cons60l1-m|cons60-iso8859-1-mono:\
+ :li#60:tc=cons25l1-m:
+# 132x25 ISO 8859-1 FreeBSD console
+cons25l1-w|:cons25w-iso8859-1:\
+ :co#132:tc=cons25l1:
+cons30l1-w|cons30w-iso8859-1:\
+ :co#132:tc=cons30l1:
+cons43l1-w|cons43w-iso8859-1:\
+ :co#132:tc=cons43l1:
+cons50l1-w|cons50w-iso8859-1:\
+ :co#132:tc=cons50l1:
+cons60l1-w|cons60w-iso8859-1:\
+ :co#132:tc=cons60l1:
+# ISO 8859-7 FreeBSD console with ACS support
+cons25l7:cons25-iso8859-7:\
+ :ac=f\260g\261{\360}\243+\253,\273i\247:\
+ :tc=cons25w:
+cons25l7-m|cons25-iso8859-7-mono:\
+ :pa@:Co@:AF@:AB@:AX@:op@:us=\E[4m:ue=\E[24m:tc=cons25l7:
+cons30l7|cons30-iso8859-7:\
+ :li#30:tc=cons25l7:
+cons30l7-m|cons30-iso8859-7-mono:\
+ :li#30:tc=cons25l7-m:
+cons43l7|cons43-iso8859-7:\
+ :li#43:tc=cons25l7:
+cons43l7-m|cons43-iso8859-7-mono:\
+ :li#43:tc=cons25l7-m:
+cons50l7|cons50-iso8859-7:\
+ :li#50:tc=cons25l7:
+cons50l7-m|cons50-iso8859-7-mono:\
+ :li#50:tc=cons25l7-m:
+cons60l7|cons60-iso8859-7:\
+ :li#60:tc=cons25l7:
+cons60l7-m|cons60-iso8859-7-mono:\
+ :li#60:tc=cons25l7-m:
+#
+dosansi|ANSI.SYS standard crt:\
+ :am:bs:ce=\E[K:cl=\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :do=\E[B:li#25:mi:nd=\E[C:\
+ :se=\E[m:so=\E[7m:up=\E[A:us=\E[4m:ue=\E[m:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\
+ :kh=\EG:kb=^h:ku=\EH:kd=\EP:kl=\EK:kr=\EM:\
+ :k1=\E;:k2=\E<:k3=\E=:k4=\E>:k5=\E?:\
+ :k6=\E@:k7=\EA:k8=\EB:k9=\EC:k0=\ED:
+# # --------------------------------
+#
+# d: DEC (DIGITAL EQUIPMENT CORPORATION)
+#
+# Note that xn glitch in vt100 is not quite the same as concept, since
+# the cursor is left in a different position while in the weird state
+# (concept at beginning of next line, vt100 at end of this line) so
+# all versions of vi before 3.7 don't handle xn right on vt100.
+# I assume you have smooth scroll off or are at a slow enough baud
+# rate that it doesn't matter (1200? or less). Also this assumes
+# that you set auto-nl to "on", if you set it off use vt100-nam below.
+#
+# Since there are two things here called vt100, the installer can make
+# a local decision to make either one standard "vt100" by including
+# it in the list of terminals in reorder, since the first vt100 in
+# /etc/termcap is the one that it will find. The choice is between
+# nam (no automatic margins) and am (automatic margins), as determined
+# by the wrapline switch (group 3 #2). I personally recommend turning
+# on the bit and using vt100-am, since having stuff hammer on the right
+# margin is sort of hard to read. However, the xn glitch does not occur
+# if you turn the bit off.
+#
+# I am unsure about the padding requirements listed here. I have heard
+# a claim that the vt100 needs no padding. It's possible that it needs
+# padding only if the xon/xoff switch is off. For UNIX, this switch
+# should probably be on.
+#
+# The vt100 uses rs and rf rather than is/ct/st because the tab settings
+# are in non-volatile memory and don't need to be reset upon login.
+# You can type "reset" to get them set.
+#
+# Full vt200 keys set added to k1-k4 to help various emulators.
+# Since no pgms asks for funkeys present, it isn't affect standard vt100
+#
+vt100|dec-vt100|vt100-am|vt100am|dec vt100:\
+ :do=2\E[B:co#80:li#24:cl=50\E[H\E[J:sf=2*\ED:\
+ :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\
+ :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
+ :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:\
+ :is=\E>\E[?1;3;4;5l\E[?7;8h\E[1;24r\E[24;1H:\
+ :if=/usr/share/tabset/vt100:nw=2\EE:ho=\E[H:\
+ :as=2\E(0:ae=2\E(B:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||:\
+ :rs=\E>\E[?1;3;4;5l\E[?7;8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=\177:\
+ :k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\EOt:\
+ :k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:@8=\EOM:\
+ :K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:pt:sr=2*\EM:xn:\
+ :sc=2\E7:rc=2\E8:cs=5\E[%i%d;%dr:UP=2\E[%dA:DO=2\E[%dB:RI=2\E[%dC:\
+ :LE=2\E[%dD:ct=2\E[3g:st=2\EH:ta=^I:ms:bl=^G:cr=^M:eo:it#8:\
+ :RA=\E[?7l:SA=\E[?7h:
+vt100-nam|dec-vt100-nam|vt100nam|vt100 w/no am:\
+ :am@:xn@:\
+ :is=\E>\E[?1;3;4;5;7l\E[?8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;3;4;5;7l\E[?8h:\
+ :tc=vt100-am:
+vt100-np|dec-vt100-np|vt100 with no padding:\
+ :NP:do=\E[B:cl=\E[H\E[J:sf=\ED:as=\E(0:ae=\E(B:\
+ :cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:nw=\EE:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:sr=\EM:\
+ :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:UP=\E[%dA:DO=\E[%dB:RI=\E[%dC:\
+ :LE=\E[%dD:ct=\E[3g:st=\EH:tc=vt100-am:
+vt100-nac|dec-vt100-nac|vt100 without pseudographics and padding:\
+ :as@:ae@:ac@:tc=vt100-np:
+gt42|dec gt42:\
+ :do=^J:le=^H:bs:co#72:ns:li#40:os:
+# From ts@pc.ecn.purdue.edu (Thomas Ruschak)
+vt131|dec vt131:\
+ :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[;H\E[2J:\
+ :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\
+ :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
+ :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:.ks=\E[?1h\E=:.ke=\E[?1l\E>:\
+ :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:\
+ :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:pt:sr=5\EM:vt#3:xn:\
+ :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:
+vt132:\
+ :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100:
+gt40|dec gt40:\
+ :do=^J:le=^H:bs:co#72:ns:li#30:os:
+vt50|dec vt50:\
+ :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:co#80:li#12:nd=\EC:pt:up=\EA:
+vt125|vt125-am|DEC vt125:\
+ :xn:do=^J:co#80:li#24:cl=50\E[H\E[2J:dC=10:dN#10:\
+ :le=^H:am:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:ce=3\E[K:cd=50\E[J:\
+ :so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:\
+ :me=2\E[m:is=\E[1;24r\E[24;1H\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :ks=\E[?1h\E=:ke=\E[?1l\E>:if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:\
+ :kr=\EOC:kl=\EOD:kb=^H:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :pt:sr=5\EM:vt#3:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:
+vt125-nam|DEC vt125 no automatic margin:\
+ :am@:tc=vt125-am:
+# DEC gigi color graphic terminal, same as vt52
+gigi|dec gigi terminal:\
+ :co#80:is=200\E>\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :li#24:cl=100\E[;H\E[2J:bs:cm=50\E[%i%2;%2H:nd=200\E[C:up=100\E[A:\
+ :ce=120\E[K:cd=100\E[J:so=20\E[7m:se=20\E[m:us=20\E[4m:ue=20\E[m:\
+ :ks=200\E[?1h\E=:ke=200\E[?1l\E>:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
+ :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=200\EM:\
+ :dC=50:dF=200:dN#50:dT=50:
+# From William King <abvax!wrk@uunet.UU.NET>, basic ln03 entries
+ln03|dec ln03 LaserPrinter:\
+ :co#80:li#66:hc:hu=\EL:hd=\EK:so=\E[1m:se=\E[22m:\
+ :us=\E[4m:ue=\E[24m:
+ln03-w|dec ln03 LaserPrinter 132 cols:\
+ :co#132:tc=ln03:
+dw1|decwriter I:\
+ :do=^J:le=^H:bs:co#72:hc:os:
+# From tut@Topaz.CC Thu May 12 14:49:02 1983
+dw3|la120|decwriter III:\
+ :bs:kb=^H:co#132:hc:os:pt:\
+ :is=\E(B\E[20l\E[w\E[1;132s\E[2g\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\E[z\E[66t\E[1;66r\E[4g\E>\r:
+# From tut@topaz.CC Thu Sep 24 22:10:46 1981
+dw4|decwriter IV:\
+ :do=^J:le=^H:bs:co#132:hc:os:am:\
+ :pt:is=\Ec:k0=\EOP:k1=\EOQ:k2=\EOR:k3=\EOS:kb=^H:
+vt50h|dec vt50h:\
+ :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
+ :co#80:li#12:nd=\EC:pt:sr=\EI:up=\EA:
+vt100-s|dec-vt100-s|vt100 with status line at top:\
+ :li#23:i2=\E[2;24r\E[24;1H:cm@:ho=\E[H^J:cl=50\E[;H^J\E[0J:\
+ :hs:es:ts=\E7\E[1;%dH\E[1K:fs=\E8:tc=vt100-am:
+vt100-s-bot|dec-vt100-s-bot|vt100 with status line at bottom:\
+ :li#23:i2=\E[1;23r\E[23;1H:\
+ :hs:es:ts=\E7\E[24;%dH\E[1K:fs=\E8:tc=vt100-am:
+vt100-nav|dec-vt100-nav|dec vt100 132 cols 14 lines (w/o advanced video option):\
+ :li#14:tc=vt100-w:
+vt100-w|dec-vt100-w|dec vt100 132 cols (w/advanced video):\
+ :if=/usr/share/tabset/vt100-w:\
+ :is=\E>\E[?1;4;5l\E[?3;7;8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;4;5l\E[?3;7;8h:\
+ :co#132:tc=vt100-am:
+vt100-w-nam|dec-vt100-w-nam|dec vt100 132 cols (w/advanced video), no am:\
+ :if=/usr/share/tabset/vt100-w:\
+ :is=\E>\E[?1;4;5;7l\E[?3;8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;4;5;7l\E[?3;8h:\
+ :co#132:vt@:tc=vt100-nam:
+vt102|dec-vt102-am|vt102am|vt100 w/adv. video:\
+ :al=\E[L:dl=\E[M:im=\E[4h:ei=\E[4l:mi:dc=\E[P:\
+ :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:tc=vt100-np:
+vt102-nam|dec-vt102-nam|vt102nam|vt102 w/no am:\
+ :am@:xn@:\
+ :is=\E>\E[?1;3;4;5;7l\E[?8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;3;4;5;7l\E[?8h:\
+ :tc=vt102am:
+vt102-w|dec vt102 132 cols (w/advanced video):\
+ :if=/usr/share/tabset/vt100-w:\
+ :is=\E>\E[?1;4;5l\E[?3;7;8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;4;5l\E[?3;7;8h:\
+ :co#132:vt@:tc=vt102:
+vt102-w-nam|dec-vt102-w-nam|dec vt102 132 cols (w/advanced video), no am:\
+ :if=/usr/share/tabset/vt100-w:\
+ :is=\E>\E[?1;4;5;7l\E[?3;8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;4;5;7l\E[?3;8h:\
+ :co#132:vt@:tc=vt102-nam:
+vt102-nac|dec-vt102-nac|vt102 without pseudographics:\
+ :as@:ae@:ac@:tc=vt102:
+vt52|dec-vt52|dec vt52:\
+ :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:\
+ :nd=\EC:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H:
+# vt61 created by Roger Sacilotto Massachusetts Computer Associates, Inc
+# Similar to vt52 but add al and dl
+#
+vt61|dec vt61:\
+ :al=\EPf:dl=\EPd:tc=vt52:
+dw2|decwriter II:\
+ :do=^J:kb=^h:le=^H:bs:co#132:hc:os:
+# DEC PRO-350 console (VT220-style)
+pro350|decpro|dec pro console:\
+ :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:\
+ :cm=\EY%+ %+ :co#80:ho=\EH:\
+ :kl=\ED:kr=\EC:ku=\EA:kd=\EB:kh=\EH:\
+ :k0=\EE:k1=\EF:k2=\EG:k3=\EH:k4=\EI:k5=\EJ:k6=\Ei:k7=\Ej:\
+ :li#24:nd=\EC:pt:sr=\EI:up=\EA:do=\EB:\
+ :se=\E^N:so=\E^H:us=\E^D:ue=\E^C:\
+ :ae=\EG:as=\EF:
+#
+vt200|vt220|vt220am|vt200am|dec-vt220|dec-vt200|dec vt2X0 series with jump scroll:\
+ :@7=\E[4~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kh=\E[1~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :ve=\E[?25h:vi=\E[?25l:k0@:\
+ :F1=\E[23~:F2=\E[24~:ic=\E[@:IC=\E[%d@:ec=\E[%dX:\
+ :al=\E[L:dl=\E[M:dc=\E[P:\
+ :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:tc=vt100-np:
+vt220-pf|vt200-pf|dec-vt220-pf|dec-vt200-pf|dec vt200 with PF1-PF4:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :tc=vt220:
+vt200-nam|dec-vt200-nam|vt200nam|vt200 w/no am:\
+ :tc=vt220nam:
+vt220-nam|dec-vt220-nam|vt220nam|vt220 w/no am:\
+ :am@:xn@:\
+ :is=\E>\E[?1;3;4;5;7l\E[?8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;3;4;5;7l\E[?8h:\
+ :tc=vt220am:
+vt200-ss|vt220-ss|dec-vt220-ss|dec vt200 series with smooth scroll:\
+ :is=\E>\E[?1;3;5l\E[?4;7;8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;3;5l\E[?4;7;8h:\
+ :tc=vt200:
+vt200-w|vt220-w|dec-vt220-w|vt200-wj|vt220-wj|dec vt200 series; 132 col.; jump scroll:\
+ :is=\E>\E[?1;4;5l\E[?3;7;8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;4;5l\E[?3;7;8h:\
+ :co#132:vt@:tc=vt200:
+vt200-ws|vt220-ws|dec-vt220-ws|dec vt200 series; 132 col.; smooth scroll:\
+ :is=\E>\E[?1;5l\E[?3;4;7;8h\E[1;24r\E[24;1H:\
+ :rs=\E>\E[?1;5l\E[?3;4;7;8h:\
+ :co#132:vt@:tc=vt200:
+vt200-nac|vt220-nac|dec-vt200-nac|dec-vt220-nac|dec vt200 without pseudographics:\
+ :as@:ae@:ac@:tc=vt200:
+#
+vt320|vt300|vt340|vt320 with status line:\
+ :ds=\E[2$~\r\E[1$}\E[K\E[$}:ts=\E[2$~\E[1$}\E[1;%dH:\
+ :fs=\E[$}:tc=vt220:
+dec-vt320|dec-vt300|dec-vt340|dec vt320 with status line:\
+ :tc=vt320:
+vt320-pf|vt300-pf|vt340-pf|vt320 with PF1-PF4:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :tc=vt320:
+dec-vt320-pf|dec-vt300-pf|dec-vt340-pf|dec vt320 with PF1-PF4:\
+ :tc=vt320-pf:
+vt320-nac|vt300-nac|vt340-nac|vt320 without pseudographics:\
+ :as@:ae@:ac@:tc=vt320:
+dec-vt320-nac|dec-vt300-nac|dec-vt340-nac|dec vt320 without pseudographics:\
+ :tc=vt320-nac:
+# The following entry was converted with the "tic -C" command
+# in ncurses. The original terminfo source file was posted to
+# comp.terminals by Daniel A. Glasser on 1991-01-07.
+#
+# The comments in () were inserted by tic.
+#
+# (untranslatable capabilities removed to fit entry within 1023 bytes)
+# (sgr removed to fit entry within 1023 bytes)
+# (acsc removed to fit entry within 1023 bytes)
+# (terminfo-only capabilities suppressed to fit entry within 1023 bytes)
+vt420|vt420-24|dec-vt420|DEC vt420 7 bit controls 80x24 autowrap:\
+ :am:es:hs:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:ws#80:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:\
+ :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:\
+ :ds=\E[2$~\r\E[1$}\E[K\E[$}:ec=\E[%dX:ei=\E[4l:fs=\E[$}:\
+ :ho=\E[H:ic=\E[@:im=\E[4h:is=\E[?7h\E[>\E[?1h\E F\E[?4l:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k6=\E[17~:k7=\E[18~:\
+ :k8=\E[19~:k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:\
+ :kb=^H:kd=\E[B:kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:nw=\EE:rc=\E8:sc=\E7:\
+ :se=\E[27m:sf=\ED:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ts=\E[2$~\E[1$}\E[1;%dH:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+vt400|dec-vt400|DEC VT400 level terminal for telnet alias:\
+ :tc=vt420:
+vt420-w|DEC vt420 7 bit controls 132x24 autowrap:\
+ :co#132:tc=vt420:
+vt420-36|DEC vt420 7 bit controls 80x36 autowrap:\
+ :li#36:tc=vt420:
+vt420-36w|DEC vt420 7 bit controls 132x36 autowrap:\
+ :co#132:li#36:tc=vt420:
+
+# From ftp://gatekeeper.dec.com/pub/DEC/termcaps/ :
+#
+# vt520.tc (9/30/94)
+#
+# VT520/VT525
+#
+# The VT520 is a monochrome text terminal capable of managing up to
+# four independent sessions in the terminal. It has multiple ANSI
+# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console)
+# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950,
+# 925 910+, ADDS A2). This termcap data is for the ANSI emulations only.
+# SCO Console emulation uses the "ansi" entry. Existing ASCII termcap
+# entries are used with the ASCII emulations.
+#
+# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or
+# [Alt]/[Print Screen] depending upon which keyboard and which
+# terminal mode is being used. If Set-Up has been disabled or
+# assigned to an unknown key, Set-Up may be entered by pressing
+# [F3] as the first key after power up, regardless of keyboard type.
+#
+vt520|DEC VT520 :\
+ :am:mi:xn:xo:bs:pt:\
+ :co#80:li#24:kn#3:\
+ :ae=4\E(B:al=\E[L:as=2\E(0:cd=50\E[J:ce=3\E[K:\
+ :cl=50\E[;H\E[2J:cm=10\E[%i%d;%dH:cs=\E[%i%d;%dr:\
+ :dc=\E[P:dl=\E[M:ei=\E[4l:ho=\E[H:\
+ :if=/usr/lib/tabset/vt100:\
+ :im=\E[4h:\
+ :is=\E[1;24r\E[24;1H:\
+ :r3=\E[?67h\E[64;1"p:\
+ :i3=\E[?67h\E[64;1"p:\
+ :k0=\E[29~:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :k5=\E[17~:k6=\E[18~:k7=\E[19~:k8=\E[20~:k9=\E[21~:\
+ :kb=\b:kd=\E[B:ke=\E>:kl=\E[D:\
+ :kr=\E[C:ks=\E=:ku=\E[A:nd=\E[C:\
+ :rc=\E8:rf=/usr/lib/tabset/vt100:\
+ :se=\E[m:so=\E[7m:\
+ :sr=\EM:ue=\E[m:up=\E[A:us=\E[4m:nl=\E[B:ko=do,nd,up:
+#
+vt520nam|vt520-nam|v520n|DEC VT520 with no automargins:\
+ :am@:tc=vt520:
+
+#
+# For ANSI color-enabled terminal emulators
+#
+vt100-color|vt100-co|vt100 emulator with ANSI colors:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m\E[m:tc=vt100:
+vt102-color|vt102-co|vt102 emulator with ANSI colors:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m\E[m:tc=vt102:
+putty|vt220-color|vt220-co|vt220 emulator with ANSI colors:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m\E[m:tc=vt220:
+# Attempt to save some of 1024 buf space truncating description
+# and names list
+vt320-co|vt320 color:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m\E[m:tc=vt320:
+vt320-color|vt320 co:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m\E[m:tc=vt320:
+vt340-co|vt340 color:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m\E[m:tc=vt340:
+vt340-color|vt340 co:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m\E[m:tc=vt340:
+#
+# SC,SB,SH,SW names needed for screen(1)
+#
+SC|screen|VT 100/ANSI X3.64 virtual terminal:\
+ :am:xn:ms:mi:G0:km:\
+ :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\
+ :cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\
+ :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\
+ :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:\
+ :li#24:co#80:us=\E[4m:ue=\E[24m:so=\E[3m:se=\E[23m:\
+ :mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:sr=\EM:al=\E[L:\
+ :AL=\E[%dL:dl=\E[M:DL=\E[%dM:cs=\E[%i%d;%dr:dc=\E[P:\
+ :DC=\E[%dP:im=\E[4h:ei=\E[4l:IC=\E[%d@:\
+ :ks=\E[?1h\E=:ke=\E[?1l\E>:vb=\Eg:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:k5=\E[15~:k6=\E[17~:\
+ :k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\
+ :kh=\E[1~:kI=\E[2~:kD=\E[3~:kH=\E[4~:@7=\E[4~:kP=\E[5~:\
+ :kN=\E[6~:eA=\E(B\E)0:as=^N:ae=^O:ti=\E[?1049h:te=\E[?1049l:\
+ :vi=\E[?25l:ve=\E[34h\E[?25h:vs=\E[34l:\
+ :Co#8:pa#64:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:AX:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:
+SB|screen-bce|VT 100/ANSI X3.64 virtual terminal with bce:\
+ :ut:tc=screen:
+SH|screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line:\
+ :ts=\E_:fs=\E\\:ds=\E_\E\\:tc=screen:
+SW|screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols:\
+ :co#132:tc=screen:
+# $Xorg: termcap,v 1.3 2000/08/17 19:55:10 cpqbld Exp $
+#
+# Note:
+# termcap format is limited to 1023 characters. This set of descriptions
+# is a subset of the terminfo, since not all features can be fit into
+# that limit. The 'xterm' description supports color. The monochrome
+# 'xtermm' drops color in favor of additional function keys. If you need
+# both, use terminfo.
+#
+# The 1023-character limit applies to each entry after resolving the
+# "tc=" strings. Some implementations may discount all or part of the
+# formatting characters in the entry (i.e., the backslash newline tab
+# colon). GNU termcap does not have this limit.
+#
+# I checked the limits using ncurses "captoinfo -CrTv", which prints
+# the resolved length of each entry in a comment at the end - T.Dickey
+#
+# $XFree86: xc/programs/xterm/termcap,v 3.28 2001/01/17 23:46:39 dawes Exp $
+#
+xterm-xfree86|XFree86 xterm:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+ :k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\
+ :@7=\EOF:@8=\EOM:kI=\E[2~:\
+ :kh=\EOH:kP=\E[5~:kN=\E[6~:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:Km=\E[M:tc=xterm-basic:
+#
+# This chunk is used for building the VT220/Sun/PC keyboard variants.
+xterm-basic|xterm common (XFree86):\
+ :li#24:co#80:am:kn#12:km:mi:ms:xn:AX:bl=^G:\
+ :is=\E[!p\E[?3;4l\E[4l\E>:rs=\E[!p\E[?3;4l\E[4l\E>:le=^H:\
+ :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:al=\E[L:dc=\E[P:dl=\E[M:\
+ :UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\
+ :ho=\E[H:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:\
+ :im=\E[4h:ei=\E[4l:ks=\E[?1h\E=:ke=\E[?1l\E>:kD=\E[3~:kb=^H:\
+ :sf=\n:sr=\EM:st=\EH:ct=\E[3g:sc=\E7:rc=\E8:\
+ :eA=\E(B\E)0:as=\E(0:ae=\E(B:ml=\El:mu=\Em:up=\E[A:nd=\E[C:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\
+ :ti=\E[?1049h:te=\E[?1049l:vi=\E[?25l:ve=\E[?25h:\
+ :ut:Co#8:pa#64:op=\E[39;49m:AB=\E[4%dm:AF=\E[3%dm:
+
+# The xterm-xfree86 description has all of the features, but is not completely
+# compatible with vt220. If you are using a Sun or PC keyboard, set the
+# sunKeyboard resource to true:
+# + maps the editing keypad
+# + interprets control-function-key as a second array of keys, so a
+# 12-fkey keyboard can support vt220's 20-fkeys.
+# + maps numeric keypad "+" to ",".
+# + uses DEC-style control sequences for the application keypad.
+#
+xterm-vt220|xterm emulating vt220:\
+ :kH=\E[4~::@7=\E[4~:*6=\E[4~:kh=\E[1~:Km=\E[M:tc=xterm-basic:
+
+xterm-24|xterms|vs100|24x80 xterm:\
+ :li#24:\
+ :tc=xterm:
+xterm-65|65x80 xterm:\
+ :li#65:tc=xterm:
+xterm-bold|xterm with bold for underline:\
+ :so=\E[7m:us=\E[1m:tc=xterm:
+xterm-boldso|xterm with bold for standout:\
+ :se=\E[m:so=\E[1m:tc=xterm:
+xterm-mono|monochrome xterm:\
+ :kn#20:\
+ :st@:ut@:Co@:NC@:op@:AB@:AF@:pa@:Sf@:Sb@:tc=xterm:
+#
+# Alternate terminal description that "works" for interactive shells such as
+# tcsh and bash.
+xterm-noapp|xterm with cursor keys in normal mode:\
+ :kl=\E[D:kd=\E[B:kr=\E[C:ku=\E[A:ks=\E=:ke=\E>:ti@:te@:tc=xterm:
+#
+# These aliases are for compatibility with the terminfo; termcap cannot provide
+# the extra features, but termcap applications still want the names.
+xterm-16color|xterm alias 1:tc=xterm-xfree86:
+xterm-88color|xterm alias 2:tc=xterm-256color:
+xterm-256color|xterm alias 3:tc=xterm-xfree86:
+xterm-nrc|xterm alias 4:tc=xterm:
+xterm-rep|xterm alias 5:tc=xterm:
+xterm-xmc|xterm alias 6:sg#1:tc=xterm:
+#
+# An 8-bit description is doable with termcap, but there are probably no
+# termcap (or BSD curses) applications that are able to use it.
+xterm-8bit|xterm terminal emulator 8-bit controls (X Window System):\
+ :co#80:li#24:\
+ :it#8:am:km:mi:ms:xn:\
+ :AL=\233%dL:DC=\233%dP:DL=\233%dM:DO=\233%dB:IC=\233%d@:LE=\233%dD:\
+ :RI=\233%dC:UP=\233%dA:ae=^O:al=\233L:as=^N:bl=^G:bt=\233Z:\
+ :cd=\233J:ce=\233K:cl=\233H\2332J:cm=\233%i%d;%dH:cr=^M:\
+ :cs=\233%i%d;%dr:ct=\2333g:dc=\233P:dl=\233M:do=^J:up=\233A:nd=\233C:\
+ :ei=\2334l:ho=\233H:im=\2334h:\
+ :is=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8:\
+ :k1=\23311~:k2=\23312~:k3=\23313~:k4=\23314~:k5=\23315~:\
+ :k6=\23317~:k7=\23318~:k8=\23319~:k9=\23320~:kD=\2333~:\
+ :kI=\2332~:kN=\2336~:kP=\2335~:kb=^H:kd=\217B:\
+ :ke=\233?1l\E>:kh=\2331~:kl=\217D:kr=\217C:ks=\233?1h\E=:\
+ :ku=\217A:le=^H:mb=\2335m:md=\2331m:me=\233m^O:mr=\2337m:\
+ :rc=\E8:sc=\E7:se=\23327m:sf=^J:so=\2337m:sr=\215:\
+ :st=\210:ta=^I:te=\233?1049l:ti=\233?1049h:ue=\23324m:us=\2334m:\
+ :vb=\233?5h\233?5l:ve=\233?25h:vi=\233?25l:Km=\233M:
+#
+xterm-hp|XFree86 xterm with hpterm function keys:\
+ :k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:\
+ :kC=\EJ:kD=\EP:@7=\EF:kI=\EQ:kN=\ES:kP=\ET:kh=\Eh:\
+ :kd=\EB:kl=\ED:kr=\EC:ku=\EA:tc=xterm-basic:
+#
+xterm-sco|XFree86 xterm with SCO function keys:\
+ :kl=\E[D:kd=\E[B:kr=\E[C:ku=\E[A:@7=\E[F:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:\
+ :k6=\E[R:k7=\E[S:k8=\E[T:k9=\E[U:k;=\E[V:\
+ :F1=\E[W:F2=\E[X:F3=\E[Y:F5=\E[a:F6=\E[b:\
+ :F7=\E[c:F8=\E[d:F9=\E[e:FA=\E[f:FB=\E[g:\
+ :FC=\E[h:FD=\E[i:FE=\E[j:FF=\E[k:\
+ :kh=\E[H:kI=\E[L:kN=\E[G:kP=\E[I:ac@:tc=xterm-basic:
+#
+xterm-vt52|xterm emulating vt52:\
+ :bs:\
+ :co#80:it#8:li#24:\
+ :ae=\EG:as=\EF:bl=^G:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :\
+ :cr=^M:do=\EB:ho=\EH:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:\
+ :le=\ED:nd=\EC:nw=^M^J:sf=^J:sr=\EI:ta=^I:up=\EA:
+#
+xterm-sun|xterm with Sun functionkeys:\
+ :k1=\E[224z:k2=\E[225z:k3=\E[226z:k4=\E[227z:\
+ :k5=\E[228z:k6=\E[229z:k7=\E[230z:k8=\E[231z:\
+ :k9=\E[232z:k;=\E[233z:F1=\E[192z:F2=\E[193z:\
+ :%1=\E[196z:&8=\E[195z:@0=\E[200z:kI=\E[2z:\
+ :kN=\E[222z:kP=\E[216z:kh=\E[214z:kD=^?:\
+ :Km=\E[M:@5=\E[197z::@7=\E[220z:\
+ :tc=xterm-basic:
+#
+# vi may work better with this entry, because vi doesn't use insert mode much.
+# |xterm-ic|xterm-vi|xterm with insert character instead of insert mode:
+xterm-ic|xterm-vi|xterm with insert char:\
+ :im@:ei@:mi@:ic=\E[@:IC=\E[%d@:tc=xterm:
+#
+# Compatible with the X11R6.3 xterm
+xterm-r6|xterm-old|X11R6 xterm:\
+ :is=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8:\
+ :rs=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8:\
+ :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:DO=\E[%dB:UP=\E[%dA:\
+ :LE=\E[%dD:RI=\E[%dC:al=\E[L:am:bl=^G:\
+ :bs:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:ho=\E[H:\
+ :im=\E[4h:ei=\E[4l:mi:ks=\E[?1h\E=:ke=\E[?1l\E>:@7=\E[4~:kh=\E[1~:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:k;=\E[21~:\
+ :F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:F5=\E[28~:\
+ :F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:FA=\E[34~:\
+ :kn#20:km:@0=\E[1~:kI=\E[2~:kD=^?:*6=\E[4~:kP=\E[5~:kN=\E[6~:\
+ :kb=^H:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
+ :li#24:md=\E[1m:me=\E[m:mr=\E[7m:ms:nd=\E[C:pt:\
+ :eA=\E)0:as=^N:ae=^O:ml=\El:mu=\Em:\
+ :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[m:sr=\EM:\
+ :ti=\E7\E[?47h:te=\E[2J\E[?47l\E8:up=\E[A:us=\E[4m:ue=\E[m:xn:
+#
+# Compatible with the R5 xterm
+xterm-r5|X11R5 xterm X11R5:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:UP=\E[%dA:\
+ :al=\E[L:am:\
+ :bs:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:co#80:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:\
+ :dc=\E[P:dl=\E[M:\
+ :im=\E[4h:ei=\E[4l:mi:\
+ :ho=\E[H:\
+ :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+ :rs=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:kb=^H:kd=\EOB:ke=\E[?1l\E>:\
+ :kl=\EOD:km:kn#4:kr=\EOC:ks=\E[?1h\E=:ku=\EOA:\
+ :@7=\E[4~:kh=\E[1~:\
+ :li#24:md=\E[1m:me=\E[m:mr=\E[7m:ms:nd=\E[C:pt:\
+ :sc=\E7:rc=\E8:sf=\n:so=\E[7m:se=\E[m:sr=\EM:\
+ :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:\
+ :up=\E[A:us=\E[4m:ue=\E[m:xn:
+#
+# This is the only entry which you should have to customize, since "xterm"
+# is widely used for a variety of incompatible terminal emulations including
+# color_xterm and rxvt.
+xterm|xterm-color|X11 terminal emulator:\
+ :ti@:te@:tc=xterm-xfree86:
+# :tc=xterm-r6:
+# dtterm termcap entry - Obtained from Xinside's CDE with permission
+# from Thomas Roell
+dtterm|dtterm-cde10:\
+ :am:km:mi:ms:xn:\
+ :co#80:li#24:Co#8:it#8:lm#0:pa#8:\
+ :AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:\
+ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\
+ :bl=^G:cr=\r:ta=\t:\
+ :cl=\E[H\E[J:cb=\E[1K:ce=\E[K:cd=\E[J:\
+ :cm=\E[%i%d;%dH:ho=\E[H:\
+ :LE=\E[%dD:le=\b:\
+ :DO=\E[%dB:do=\n:\
+ :RI=\E[%dC:nd=\E[C:\
+ :UP=\E[%dA:up=\E[A:\
+ :DC=\E[%dP:dc=\E[P:DL=\E[%dM:dl=\E[M:\
+ :IC=\E[%d@:ic=\E[@:AL=\E[%dL:al=\E[L:\
+ :sc=\E7:rc=\E8:\
+ :sf=\ED:sr=\EM:\
+ :st=\EH:ct=\E[3g:\
+ :me=\E[0m:md=\E[1m:mr=\E[7m:\
+ :as=^N:ae=^O:\
+ :SA=\E[?7h:RA=\E[?7l:\
+ :so=\E[2;7m:se=\E[22;27m:\
+ :us=\E[4m:ue=\E[24m:\
+ :mh=\E[2m:mb=\E[5m:vi=\E[?25l:ve=\E[?25h:ec=\E[%dX:\
+ :mk=\E[8m:i2=\E\sF\E>\E[?1l\E[?7h\E[?45l:\
+ :nw=\EE:op=\E[39;49m:\
+ :kb=\b:kl=\E[D:kd=\E[B:kr=\E[C:ku=\E[A:kD=\E[3~:k1=\E[11~:k2=\E[12~:\
+ :k3=\E[13~:k4=\E[14~:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\
+ :k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:F3=\E[25~:F4=\E[26~:\
+ :F5=\E[28~:F6=\E[29~:F7=\E[31~:F8=\E[32~:F9=\E[33~:F20=\E[34~:\
+ :@0=\E[1~:%1=\E[28~:kI=\E[2~:kN=\E[6~:kP=\E[5~:*6=\E[4~:
+# vs100 emulator using tsim (from lai@decwrl)
+vs100t|tsim|vs100-tsim:\
+ :bs:cm=\EM%+ %+ :ho=\EH:do=^J:up=^K:cl=\EE:ce=\EL:cs=\ES%+ %+ :\
+ :so=\Eh:se=\Er:us=\Eu:ue=\Ev:al=\EI:Al=\E+%+ :dl=\ED:Dl=\E-%+ :\
+ :ic=\Ei:dc=\Ed:is=\ER:rs=\ER:am:cd=\EQ:pt:nd=\En:li#24:co#80:
+kterm|kterm kanji terminal emulator (X window system):\
+ :hs:es:ts=\E[?E\E[?%i%dT:fs=\E[?F:ds=\E[?H:\
+ :KJ:sc=\E7:rc=\E8:cs=\E[%i%d;%dr:TY=ascii:\
+ :eA@:as=\E(0:ae=\E(B:tc=xterm-r6:
+kterm-color|kterm-co|kterm + ANSI colors:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:tc=kterm:
+# # --------------------------------
+#
+# h: HEWLETT PACKARD
+#
+# Note: no "ho" on HP's since that homes to top of memory, not screen.
+# Due to severe 2621 braindamage, the only way to get the arrow keys to
+# transmit anything at all is to turn on the function key labels
+# (f1-f8) with ks, and even then the poor user has to hold down shift!
+# The default 2621 turns off the labels except when it has to enable
+# the function keys. If your installation prefers labels on all the time,
+# or off all the time (at the "expense" of the function keys) move the
+# 2621-nl or 2621-wl labels to the front using reorder.
+# Note: there are newer ROM's for 2621's that allow you to set strap A
+# so the regular arrow keys xmit \EA, etc, as with the 2645. However,
+# even with this strap set, the terminal stops xmitting if you reset it,
+# until you unset and reset the strap! Since there is no way to set/unset
+# the strap with an escape sequence, we don't use it in the default.
+# If you like, you can use 2621-ba (braindamaged arrow keys).
+2621-ba|2621 w/new rom, strap A set:\
+ :ks@:ke@:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:tc=hp2621:
+# 2621 with function labels. Most of the time they are off,
+# but inside vi, the function key labels appear. You have to
+# hold down shift to get them to xmit.
+2621|hp2621|hp2621a|hp2621p|2621a|2621p|2621-pb|hp2621-fl|hp 2621:\
+ :is=\E&j@\r:bt=\Ei:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:pb#19200:\
+ :so=\E&dD:se=\E&d@:us=\E&dD:ue=\E&d@:me=\E&d@:\
+ :kh=\Ep\r:ku=\Et\r:kl=\Eu\r:kr=\Ev\r:kd=\Ew\r:\
+ :kn#8:k1=\Ep\r:k2=\Eq\r:k3=\Er\r:k4=\Es\r:k5=\Et\r:k6=\Eu\r:k7=\Ev\r:\
+ :k8=\Ew\r:ks=\E&jB:ke=\E&j@:ta=2^I:tc=hp:
+# 2621k45: untested
+# 2622: unsure if this is quite it, have only heard about the terminal.
+2621k45|hp2621k45|k45|2622|hp2622|hp 2621 with 45 keyboard:\
+ :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=2621:
+hp2645|2645|hp45:\
+ :mh=\E&dH:mr=\E&dB:us=\E&dD:mb=\E&dA:me=\E&d@:\
+ :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=hp:
+hp|hpterm|hewlett-packard:\
+ :ct=\E3:st=\E1:do=^J:al=\EL:am:le=^H:bs:\
+ :cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\EH\EJ:cm=6\E&a%r%dc%dY:\
+ :co#80:cv=\E&a%dY:da:db:dc=\EP:dl=\EM:ei=\ER:im=\EQ:\
+ :kb=^H:li#24:mi:nd=\EC:pt:se=\E&d@:so=\E&dJ:\
+ :us=\E&dD:ue=\E&d@:up=\EA:xs:vt#6:pb#9600:
+# This entry does not use any of the fancy windowing stuff of the 2621.
+# Indeed, termcap does not yet handle such stuff. We are looking at it.
+hp2626|hp2626a|hp2626p|2626|2626a|2626p|hp 2626:\
+ :dc=2\EP:ip=2:se=\E&d@:so=\E&dB:cd=500\EJ:\
+ :mr=\E&dB:us=\E&dD:mb=\E&dA:mk=\E&dS:me=\E&d@:ue=\E&d@:\
+ :kh=\Eh:ku=\EA:kl=\ED:kr=\EC:kd=\EB:ks=\E&s1A:ke=\E&s0A:\
+ :sf=\ES:ta=2^I:xs:tc=2621:
+# cD is a pain - but it only screws up at 9600 baud.
+# You should use this terminal at 4800 baud or less.
+hp2648|hp2648a|2648a|2648|HP 2648a graphics terminal:\
+ :cl=50\EH\EJ:cm=20\E&a%r%dc%dY:dc=7\EP:ip=5:tc=2645:
+# This terminal should be used at 4800 baud or less.
+hp2645-np|2645 w/no padding:cm=\E&a%r%dc%dY:tc=hp2645:
+# 2640a doesn't have the Y cursor addressing feature, and C is memory relative
+# instead of screen relative, as we need.
+2640|hp2640a|2640a|hp 2640a:\
+ :cm@:ks@:ke@:tc=2645:
+2640b|hp2640b|2644a|hp2644a|hp 264x series:\
+ :ks@:ke@:tc=2645:
+# 2621 using all 48 lines of memory, only 24 visible at any time. Untested.
+2621-48|48 line 2621:\
+ :li#48:ho=\EH:cm=\E&a%r%dc%dR:tc=2621:
+# From: mcvax!westc!ahof@seismo.css.gov (Anton Hofland) (ahof@westc.uucp)
+# For newer versions, :li should correspond to the actual number of lines.
+hp110|HP110|HP110A|Hewlett Packard 110A Portable Computer:\
+ :co#80:li#16:am:db:cl=\E[2J:is=\E&j@\E[=7h:ch=\E&a%2C:cv=\E&a%2R:\
+ :cm=\E&a%2r%2C:ho=\Eh:cr=^M:nl=^J:ks=\E&s1A:ke=\E&s0A:kd=\EB:\
+ :ku=\EA:kr=\EC:kl=\ED:nd=\EC:up=\EA:le=^H:do=^J:bc=^H:bt=\Ei:\
+ :ta=\EI:sf=\E[s\EH\EM\E[u\EJ:sr=\ET:al=\EL:dl=\EM:kb=^H:bl=^G:\
+ :kh=\Eh:dc=\EP:im=\EQ:ei=\ER:mi:ms:xs:mr=\E[7m:mb=\E[5m:me=\E[0m:\
+ :so=\E[7m:se=\E[0m:rs=\E[0m\E&j@:cd=\EJ:ce=\EK:kn#8:k1=\Ep:k2=\Eq:\
+ :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:
+# 2621 with no labels ever. Also prevents vi delays on escape.
+2621-nl|hp2621nl|2621nl|hp2621-nl|hp 2621 with no labels:\
+ :ks@:ke@:kh@:ku@:kl@:kr@:kd@:tc=hp2621-fl:
+# Needed for UCB ARPAVAX console, since lsi-11 expands tabs (wrong).
+hp2621-nt|2621nt|2621-nt|hp2621nt|hp 2621 w/no tabs:\
+ :pt@:tc=hp2621:
+# 2621 with labels on all the time - normal outside vi, function inside vi.
+hp2621wl|2621wl|2621-wl|hp2621-wl|hp 2621 w/labels:\
+ :is=\E&jA\r:ke=\E&jA:tc=hp2621-fl:
+# 2392 (from haddix@arpa?)
+2392|hp2392|hp2392a:\
+ :bt=\Ei:ip=2:is=\E&j@\E3\r:if=/usr/share/tabset/stdcrt:\
+ :ml=\El:MT:mu=\Em:km:\
+ :mh=\E&dH:mr=\E&dB:us=\E&dD:mb=\E&dA:me=\E&d@:\
+ :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\Eh:ks=\E&s1A:ke=\E&s0A:tc=hp:
+# HP 236 console
+# from ddavis@ic.berkeley.edu
+236|hp236|HP236 internal terminal emulator:\
+ :am:bs:li#24:co#80:ce=\EK:cl=\EF:cm=\EE%+ %+ :\
+ :dc=\EJ:dl=\EH:ic=\EI:al=\EG:up=^K:\
+ :so=\EBI:se=\ECI:vs=\EDB:ve=\EDE:
+# hp150 from ddavis@ic.berkeley.edu
+150|hp150|hp150a|150a:\
+ :is=\E&s1A\E&f0a1k2L\Ep\r\E&k0K\E&f0a2k2L\Eq\r\E&f0a3k2L\Er\r\E&f0a4k2L\Es\r\E&f0a5k2L\Et\r\E&f0a6k2L\Eu\r\E&f0a7k2L\Ev\r\E&f0a8k2L\Ew\r\E&k0D\E&s0A:\
+ :bt=\Ei:li#24:cm=\E&a%r%dc%dY:dc=2\EP:ip=2:pb#19200:so=\E&dJ:\
+ :se=\E&d@:us=\E&dD:ue=\E&d@:me=\E&d@:kh=\Eh:ku=\EA:kl=\ED:kr=\EC:\
+ :kd=\EB:kn#8:k1=\Ep:k2=\Eq:k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:\
+ :k8=\Ew:ta=2^I:ct=\E3:st=\E1:do=^J:al=\EL:am:le=^H:\
+ :bs:cd=\EJ:ce=\EK:ch=\E&a%dC:cl=\Eh\EJ:co#80:cv=\E&a%dY:da:db:dl=\EM:\
+ :ei=\ER:im=\EQ:kb=^H:mi:nd=\EC:pt:up=\EA:xs:vt#6:sf=\ES:sr=\ET:\
+ :vs=\E&s1A:ve=\E&s0A:ks=\E&jB\E&j@:ke=\E&j@:
+# From leres@okeeffe: This works on a hp300 console running Utah 4.3 BSD
+300h|hp300h|HP Catseye console:\
+ :am:bs:cm=\E&a%dy%dC:do=\EB:le=\b:nd=\EC:up=\EA:dc=\EP:dl=\EM:\
+ :xs:da:db:mi:co#128:li#51:lm#0:sg#0:bt=\Ei:bl=^G:cr=\r:\
+ :ct=\E3:cl=\E&a0y0C\EJ:ce=\EK:cd=\EJ:ch=\E&a%dC:cv=\E&a%dY:\
+ :se=\E&d@:ue=\E&d@:im=\EQ:so=\E&dB:us=\E&dD:me=\E&d@:ei=\ER:\
+ :if=/usr/share/tabset/stdcrt:al=\EL:kb=\b:kd=\EB:kh=\Eh:kl=\ED:\
+ :kr=\EC:ku=\EA:ke=\E&s0A:ks=\E&s1A:sf=\n:ta=\t:
+# From gregc@ernie.berkeley.edu (Greg Couch)
+9837|hp9837|98720|hp98720|98721|hp98721|HP 9000/300 workstations:\
+ :bs:pt:am:xs:da:db:mi:\
+ :co#128:li#46:lm#0:\
+ :is=\E&v0m1b0i&j@:bt=\Ei:bl=^G:ct=\E3:\
+ :cl=\E&a0y0C\EJ:ce=\EK:cd=\EJ:ch=\E&a%dC:\
+ :cm=\E&a%dy%dC:do=\EB:le=^H:nd=\EC:\
+ :up=\EA:dc=\EP:dl=\EM:im=\EQ:\
+ :so=\E&v5S:us=\E&dD:me=\E&d@:ei=\ER:\
+ :se=\E&v0S:ue=\E&d@:al=\EL:\
+ :kb=^H:kd=\EB:kh=\Eh:kl=\ED:\
+ :kr=\EC:ku=\EA:ke=\E&s0A:ks=\E&s1A:\
+ :cv=\E&a%dY:sf=\n:st=\E1:\
+ :ko=ce,cd,al,im,dl,dc:kN=\EU:kP=\EV:
+# Developed 07SEP90 by Charles A. Finnell of MITRE <finnell@mitre.org>
+98550|hp98550|98550a|hp98550a|HP 9000 Series 300 color console:\
+ :ae=^O:al=\EL:am:as=^N:bl=^G:bs:bt=\Ei:cd=\EJ:ce=\EK:ch=\E&a%dC:\
+ :cl=\EH\EJ:cm=\E&a%dy%dC:co#128:cr=\r:ct=\E3:cv=\E&a%dY:da:db:dc=\EP:\
+ :dl=\EM:do=\n:ei=\ER:if=/usr/share/tabset/9837:im=\EQ:k1=\Ep:k2=\Eq:\
+ :k3=\Er:k4=\Es:k5=\Et:k6=\Eu:k7=\Ev:k8=\Ew:kA=\EL:kC=\EJ:kD=\EP:\
+ :kE=\EK:kF=\ES:kH=\EF:kI=\EQ:kL=\EM:kM=\ER:kN=\EU:kP=\EV:kR=\ET:\
+ :kS=\EJ:kT=\E1:ka=\E3:kb=\b:kd=\EB:ke=\E&s0A:kh=\Eh:kl=\ED:kn#12:\
+ :ko=al,cd,ce,ct,dc,dl,do,ei,im,nd,st,up:kr=\EC:ks=\E&s1A:kt=\E2:\
+ :ku=\EA:le=\b:li#49:lm#0:mb=\E&dA:md=\E&dJ:me=\E&d@:mh=\E&dH:mi:\
+ :mk=\E&ds:mr=\E&dJ:nd=\EC:pt:se=\E&d@:sf=\n:so=\E&dJ:st=\E1:ta=\t:\
+ :ue=\E&d@:up=\EA:us=\E&dD:ve=\E*dQ:vi=\E*dR:xs:
+# From: vic@fine.Princeton.EDU (Victor Duchovni)
+hp700-wy|HP700/41 emulating wyse30:\
+ :al=0.7*\EE:am:bl=^G:bs:bt=\EI:bw:cd=\EY:ce=10\ET:cl=^Z:cm=\E=%+ %+ :\
+ :co#80:cr=^M:ct=\E0:cv=\E[%+ :dc=\EW:dl=\ER:do=^V:ei=\Er:\
+ :ho=^^:if=/usr/share/tabset/hp700-wy:ll=^^^K:mi:ms:nd=^L:nl=^J:pt:\
+ :im=\Eq:is=\E~"\EC\Er\E(\EG0^C\E`9\E`1:kb=^?:kd=^V:\
+ :kh=^^:kl=^H:ko=cl,ho,ce,bt,ta,im,ei,ce,cd:kr=^L:ku=^K:le=^H:li#24:\
+ :rs=\E~"\EC\Er\E(\EG0^C\E`9\E`1:se=10\EG0:sg#1:so=10\EG4:sr=\Ej:\
+ :st=\E1:ue=10\EG0:up=^K:ug#1:us=10\EG8:
+# # --------------------------------
+#
+# i: INFOTON (GENERAL TERMINAL)
+#
+# Infoton is now called General Terminal Corp. or some such thing.
+# gt100 sounds like something DEC would come out with. Lets hope they don't.
+i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100):\
+ :do=^J:cl=^L:cd=\EJ:ce=\EK:li#24:co#80:\
+ :al=\EL:dl=\EM:up=\EA:nd=\EC:ho=\EH:cm=\Ef%r%+ %+ :vb=\Eb\Ea:\
+ :am:le=^H:bs:so=\Eb:se=\Ea:
+i400|400|infoton 400:\
+ :do=^J:al=\E[L:am:le=^H:bs:ce=\E[N:cl=\E[2J:cm=%i\E[%3;%3H:co#80:\
+ :dl=\E[M:li#25:nd=\E[C:up=\E[A:im=\E[4h\E[2Q:ei=\E[4l\E[0Q:\
+ :dc=\E[4h\E[2Q\E[P\E[4l\E[0Q:
+addrinfo:\
+ :do=^J:li#24:co#80:cl=^L:ho=^H:nd=^Y:cd=^K:\
+ :up=^\:am:le=^Z:bc=^Z:cm=\037%+\377%+\377:ll=^H^\:
+infotonKAS:\
+ :do=^J:am:le=^Z:bc=^Z:cd=^K:cl=^L:co#80:li#24:nd=^Y:up=^\:ll=^H^\:
+# # --------------------------------
+#
+# k: HEATHKIT (ZENITH)
+#
+h19-a|h19a|heath-ansi|heathkit-a|heathkit h19 ansi mode:\
+ :\
+ :al=1*\E[1L:am:le=^H:bs:cd=\E[J:ce=\E[K:cl=\E[2J:cm=\E[%i%2;%2H:co#80:\
+ :dc=\E[1P:dl=1*\E[1M:do=\E[1B:ei=\E[4l:ho=\E[H:im=\E[4h:li#24:mi:\
+ :nd=\E[1C:as=\E[10m:ae=\E[11m:ms:pt:se=\E[0m:so=\E[7m:up=\E[1A:\
+ :vs=\E[>4h:ve=\E[>4l:kb=^h:ku=\E[1A:kd=\E[1B:kl=\E[1D:kr=\E[1C:\
+ :kh=\E[H:kn#8:k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:l6=blue:\
+ :l7=red:l8=white:k6=\EOP:k7=\EOQ:k8=\EOR:\
+ :sr=\EM:is=\E<\E[>1;2;3;4;5;6;7;8;9l\E[0m\E[11m\E[?7h:
+h19-bs|h19bs|heathkit w/keypad shifted:\
+ :ks=\Et:ke=\Eu:tc=h19-b:
+# written by David Shewmake, UCSF Medical Information Science
+# ucbvax!ucsfmis!shewmake
+h29|heath-29|z29|zenith-29:\
+ :am:bc=\ED:bt=\E-:do=^J:\
+ :al=\EL:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\
+ :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\
+ :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\
+ :kb=^H:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#1:k0=\E~:l0=HOME:\
+ :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:k6=\EP:k7=\EQ:k8=\ER:k9=\E0I:\
+ :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:us=\Es8:ue=\Es0:
+# the z29-e entry sucks...but it works with emacs
+z29-e|zenith 29 hacked for emacs:\
+ :ip=1.5:ks=\Et:ke=\Eu:vs@:ve@:al=1*\EL:am:le=^H:\
+ :bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:dl=1*\EM:\
+ :do=\EB:ho=\EH:li#24:nd=\EC:as=\EF:ae=\EG:ms:\
+ :pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:kb=^h:\
+ :ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:k1=\ES:k2=\ET:k3=\EU:\
+ :k4=\EV:k5=\EW:l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:es:hs:\
+ :ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:
+# z29 in ansi mode. Assumes that the cursor is in the correct state, and that
+# the world is stable. `rs' causes the terminal to be reset to the state
+# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore
+# cursor, bc -> block cursor.
+# from Mike Meyers
+z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode:\
+ :do=^J:co#80:li#24:cl=\E[2J:pt:ho=\E[H:\
+ :le=^H:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:mb=\E[5m:mr=\E7m:\
+ :ce=\E[K:cd=\E[J:so=\E[7;2m:se=\E[m:us=\E[4m:ue=\E[m:mh=\E[2m:\
+ :md=\E[2m:mr=\E[7m:mb=\E[5m:me=\E[m:\
+ :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>4h\E[>1;2;3;5;6;7;8;9l\E[m\E[11m:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\
+ :k1=\EOS:k2=\EOT:k3=\EOU:k4=\EOV:k5=\EOW:k6=\EOP:k7=\EOQ:k8=\EOR:\
+ :k9=\EOX:k0=\E[~:l0=help:kn#2:ko=ho,cd:if=/usr/share/tabset/zenith29:\
+ :es:hs:ts=\E[s\E[>5;1h\E[25;%i%dH\E[1K:fs=\E[u\E[>5l:ds=\E[>1l:\
+ :cs=\E[%i%d;%dr:sr=\EM:sf=\ED:DO=\E[%dB:UP=\E[%dA:LE=\E[%dD:\
+ :RI=\E[%dC:AL=\E[%dL:DL=\E[%dM:sc=\E[s:rc=\E[r:dc=\E[1P:DC=\E[%dP:\
+ :kC=\E[J:ct=\E[3g:st=\EH:ti=\E[?7l:te=\E[?7h:ps=\E#7:
+z29a-kc-uc|h29a-kc-uc:\
+ :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>1;2;3;4;5;6;7;8;9l\E[m\E[11m:\
+ :tc=z29a:
+z29a-nkc-bc|h29a-nkc-bc:\
+ :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m:\
+ :tc=z29a:
+z29a-nkc-uc|h29a-nkc-uc:\
+ :rs=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m:\
+ :tc=z29a:
+# z100 entry from Brad Brahms at TRW (Brahms@USC-ECLC)
+# usenet: {decvax,ucbvax}!trwrb!trwspp!brahms
+z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor:\
+ :vs=\Ex4\Em71:ve=\Ey4\Em70:tc=z100bw:
+z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc:\
+ :al=5*\EL:bs:cd=\EJ:ce=\EK:cl=5*\EE:cm=1*\EY%+ %+ :co#80:dc=1*\EN:\
+ :dl=5*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\
+ :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\
+ :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#10:\
+ :k0=\EJ:k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\k6=\EP:k7=\EQ:\
+ :k8=\ER:k9=\EOI:
+p19:\
+ :al=2*\EL:dl=2*\EM:tc=h19-b:
+h19-us|h19us|heathkit w/keypad shifted/underscore cursor:\
+ :ks=\Et:ke=\Eu:tc=h19-u:
+h19|heath|h19-b|h19b|heathkit|heath-19|z19|zenith|heathkit h19:\
+ :al=1*\EL:am:le=^H:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:dc=\EN:\
+ :dl=1*\EM:do=\EB:ei=\EO:ho=\EH:im=\E@:li#24:mi:nd=\EC:as=\EF:ae=\EG:\
+ :ms:pt:sr=\EI:se=\Eq:so=\Ep:up=\EA:vs=\Ex4:ve=\Ey4:\
+ :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:kh=\EH:kn#8:ke=\E>:ks=\E=:\
+ :k1=\ES:k2=\ET:k3=\EU:k4=\EV:k5=\EW:\
+ :l6=blue:l7=red:l8=white:k6=\EP:k7=\EQ:k8=\ER:\
+ :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:
+h19-e|h19e|h19 for emacs:ip=1.5:tc=h19-us:
+h19-u|h19u|heathkit with underscore cursor:\
+ :vs@:ve@:tc=h19-b:
+h19-g|h19g|heathkit w/block cursor:\
+ :ve=\Ex4:tc=h19-b:
+# from ucscc!B.fiatlux@ucbvax.berkeley.edu
+ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10/11:\
+ :al=\EL:am:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:\
+ :dl=\EM:do=^J:ho=\EH:is=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>:\
+ :k0=\ES:k1=\EB:k2=\EU:k3=\EV:k4=\EW:k5=\EP:k6=\EQ:k7=\ER:kb=^H:kd=\EB:\
+ :kl=\ED:kr=\EC:ku=\EA:le=^H:li#24:nd=\EC:pt:se=\Eq:so=\Es5:\
+ :sr=\EI:sr=\EI:ue=\Eq:up=\EA:us=\Es2:\
+ :es:hs:ts=\Ej\Ex5\Ex1\EY8%+ \Eo:fs=\Ek\Ey5:ds=\Ey1:
+# # --------------------------------
+#
+# l: LEAR SIEGLER (ADM)
+#
+# If the adm31 gives you trouble with standout mode, check the DIP switch
+# in position 6, bank @c11, 25% from back end of pc. Should be OFF.
+# If there is no such switch, you have an old adm31 and must use oadm31
+adm31|31|lsi adm31:\
+ :is=\Eu\E0:do=^J:al=\EE:am:le=^H:bs:ce=\ET:cm=\E=%+ %+ :\
+ :cl=\E*:cd=\EY:co#80:dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:\
+ :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:\
+ :k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:\
+ :li#24:ma=j^Jk^P^K^Pl ^R^L^L :mi:nd=^L:\
+ :se=\EG0:so=\EG1:up=^K:us=\EG1:ue=\EG0:
+adm2|lsi adm2:\
+ :do=^J:al=\EE:am:le=^H:bs:cd=\EY:ce=\ET:cl=\E;:\
+ :cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:\
+ :ho=^^:ic=\EQ:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K:
+adm3|3|lsi adm3:\
+ :do=^J:am:le=^H:bs:cl=^Z:li#24:ma=^K^P:co#80:
+adm42|42|lsi adm42:\
+ :vs=\EC\E3 \E3(:do=^J:al=270\EE:am:le=^H:bs:cd=\EY:ce=\ET:cl=\E;:\
+ :cm=\E=%+ %+ :co#80:dc=\EW:dl=\ER:ei=\Er:im=\Eq:ip=6*:li#24:\
+ :bt=\EI:nd=^L:se=\EG0:so=\EG4:up=^k:ma=^K^P:pc=\177:
+adm5|5|lsi adm5:\
+ :do=^J:cd=\EY:ce=\ET:do=^J:kb=^H:kh=^^:\
+ :ma=^Hh^Jj^Kk^Ll^^H:se=\EG:sg#1:so=\EG:tc=adm3aplus:
+adm20|lear siegler adm20:\
+ :am:li#24:co#80:bs:cl=^Z:cm=\E=%i%r%+^_%+^_:nd=^L:up=^K:ho=^^:ce=\ET:\
+ :cd=\EY:al=\EE:dl=\ER:ic=\EQ:dc=\EW:so=\E):se=\E(:\
+ :bt=\EI:pt:kn#7:k1=^A:k2=^B:k3=^W:k4=^D:k5=^E:k6:^X:k7=^Z:
+# From Andrew Scott Beals <bandy@lll-crg.ARPA>
+adm12|12|lsi adm12:\
+ :is=\Eq:do=^J:al=\EE:am:le=^H:bs:ce=\ET:cm=\E=%+ %+ :cl=^Z:cd=\EY:\
+ :co#80:dc=\EW:dl=\ER:ei=\Er:ho=^^:im=\Eq:\
+ :k0=^A0\r:k1=^A1\r:k2=^A2\r:k3=^A3\r:k4=^A4\r:\
+ :k5=^A5\r:k6=^A6\r:k7=^A7\r:k8=^A8\r:k9=^A9\r:kd=^J:kl=^H:kr=^L:ku=^K:\
+ :li#24:ma=j^Jk^P^K^Pl ^R^L^L :mi:nd=^L:\
+ :se=\EG0:so=\EG4:up=^K:us=\EG1:ue=\EG0:
+adm3a|3a|lsi adm3a:\
+ :am:do=^J:le=^H:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:\
+ :li#24:ma=^K^P:nd=^L:up=^K:
+adm3a+|3a+|adm3aplus:\
+ :kl=^H:kd=^J:ku=^K:kr=^L:tc=adm3a:
+adm22|22|lsi adm22:\
+ :is=\E%\014\014\014\016\003\000\003\002\003\002\000\000\000\000\000\000\000\000\000\000\000:\
+ :al=\EE:am:bs:bt=\EI:cd=\Ey:ce=\Et:cl=\E+:cm=\000\E=%+ %+ :co#80:\
+ :dc=\EW:dl=\ER:do=^J:ho=^^:ic=\EQ:\
+ :k1=\001@\015:k2=\001A\015:k3=\001B\015:k4=\001C\015:\
+ :k5=\001D\015:k6=\001E\015:k7=\001F\015:kn#7:\
+ :ko=ho:l1=F1:l2=F2:l3=F3:l4=F4:l5=F5:l6=F6:l7=F7:\
+ :kb=^H:kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:\
+ :ma=j^Jk^P^K^Pl ^R^L^L :nd=^L:se=\E(:so=\E):ta=\Ei:up=^K:
+# From: stephen%comp.lancs.ac.uk@ucl-cs.arpa
+adm11|lsi adm11:\
+ :do=^J:bs:\
+ :cd=\EY:ce=\ET:kb=^H:kh=^^:\
+ :ma=^Hh^Jj^Kk^Ll^^H:so=\E):se=\E(:\
+ :kl=^H:kd=^J:ku=^K:kr=^L:\
+ :am:cm=\E=%+ %+ :cl=^Z:co#80:li#24:nd=^L:up=^K:\
+ :hs:ts=\EF\E):fs=\E(^M:ds=\Eh:
+# # --------------------------------
+#
+# m: MICROTERM
+#
+# These mime1 entries refer to the Microterm Mime I or Mime II.
+# The default mime is assumed to be in enhanced act iv mode.
+mime3a|mime1 emulating 3a:\
+ :am@:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:tc=adm3a:
+# New "safe" cursor movement (5/87) from reuss@umd5. Prevents freakout with
+# out-of-range args on Sytek multiplexors. No so and se since it gets confused
+# and it's too dim anyway. No ic since Sytek insists ^S means xoff.
+act4|microterm|microterm act iv:\
+ :am:bs:cd=2.2*^_:ce=.1*^~:cl=12^L:cm=^T%+^X%>/0%+P:co#80:li#24:\
+ :le=^H:nd=^X:up=^Z:ho=^]:al=2.3*^A:do=^K:dc=.1*^D:dl=2.3*^W:\
+ :ku=^Z:kd=^K:kl=^H:kr=^X:\
+ :.so=^N:.se=^N:.ic=2^S:.ip=.1*^V:.cm=^T%.%.:
+# The padding on sr and ta for act5 and mime is a guess and not final.
+# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)...
+microterm5|act5|microterm act v:\
+ :uc=^H\EA:sr=3\EH:ku=^Z:kd=^K:kl=^H:kr=^X:ma=^Z^P^Xl^Kj:tc=act4:
+# Act V in split screen mode. act5s is not tested and said not to work.
+act5s|skinny act5:\
+ :ti=\EP:te=\EQ:li#48:co#39:tc=act5:
+# Mimes using brightness for standout. Half bright is really dim unless
+# you turn up the brightness so far that lines show up on the screen.
+# uc is disabled to get around a curses bug, should be put back in someday.
+mime-fb|full bright mime1:\
+ :so=^Y:se=^S:is=^S\E:tc=mime:
+mime-hb|half bright mime1:\
+ :so=^S:se=^Y:is=^Y\E:tc=mime:
+mime|mime1|mime2|mimei|mimeii|microterm mime1:\
+ :do=^J:al=80^A:am:le=^H:bs:cd=^_:ce=^^:cl=\035^C:cm=^T%+^X%> 0%+P:\
+ :co#80:dl=80^W:ta=2^I:li#24:nd=^X:pt:uc=^U:up=^z:ho=\035:do=^K:\
+ :is=^S\E^Q:ma=^X ^K^J^Z^P:ku=^Z:kd=^K:kl=^H:kr=^X:sr=3^R:vt#9:
+# These termcaps (for mime 2a) put the terminal in low intensity mode
+# since high intensity mode is so obnoxious.
+mime2a-s|microterm mime2a (emulating an enhanced soroc iq120):\
+ :do=^J:al=20*^A:am:le=^H:bs:cd=20*\EJ:ce=\EK:cl=\EL:cm=\E=%+ %+ :\
+ :us=\E6:ue=\E7:co#80:dc=\ED:\
+ :dl=20*^W:kl=^H:kr=^L:ku=^K:kd=^J:ho=^^:is=\E):sr=\EI\
+ :im=\EE:ei=^Z:ip=2:li#24:nd=^L:so=\E\072:se=\E;:up=\EI:
+# This is the preferred mode (but ^X can't be used as a kill character)
+mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52):\
+ :do=^J:al=20*^A:le=^H:bs:cd=20*\EQ:co#80:ce=\EP:cl=\EL:cm=\EY%+ %+ :\
+ :is=^Y:dc=^N:dl=20*^W:ip=2:ei=^Z:ho=\EH:im=^O:kd=\EB:kl=\ED:kr=\EC:\
+ :ku=\EA:li#24:nd=\EC:pt:se=\E9:so=\E8:up=\EA:sr=\EA:us=\E4:ue=\E5:
+mime3ax|mime-3ax|mime1 emulating enhanced 3a:\
+ :al=80^A:dl=80^W:pt:ce=^X:cd=^_:tc=mime3a:
+# # --------------------------------
+#
+# p: PERKIN ELMER
+#
+pe550|bantam|perkin elmer 550:\
+ :do=^J:le=^H:bs:co#80:ce=20\EI:cl=20\EK:cm=\EX%+ \EY%+ :\
+ :ho=\EH:li#24:ll=\EH\EA:nd=\EC:up=\EA:ma=^Z^P:cd=6^N@^V:
+fox|perkin elmer 1100:\
+ :ct=\E3:st=\E1:do=^J:\
+ :am:le=^H:bs:cd=5.5*\EJ:ce=\EI:cl=132\EH\EJ:co#80:ho=\EH:li#24:\
+ :ll=\EH\EA:nd=\EC:cm=\EX%+ \EY%+ :up=\EA:vb=^P^B^P^C:
+owl|perkin elmer 1200:\
+ :ct=\E3:st=\E1:do=^J:al=5.5*\EL:am:le=^H:\
+ :bs:cd=5.5*\EJ:ce=5.5\EI:cl=132\EH\EJ:ho=\EH:ll=\EH\EA:\
+ :cm=\EX%+ \EY%+ :co#80:dc=5.5*\EO:dl=5.5*\EM:ic=\EN:ip=5.5*:\
+ :kb=^h:in:li#24:nd=\EC:up=\EA:se=\E!\200:so=\E!^H:vb=^P^B^P^C:\
+ :k1=\ERA:k2=\ERB:k3=\ERC:k4=\ERD:k5=\ERE:k6=\ERF:\
+ :k7=\ERG:k8=\ERH:k9=\ERI:k0=\ERJ:
+# # --------------------------------
+#
+# q: HOME MADE TERMINALS
+#
+bill croft homebrew:\
+ :do=^J:am:le=^H:bs:cm=\E=%+ %+ :cl=^Z:co#96:ho=^^:li#72:\
+ :nd=^L:up=^K:vb=:
+nucterm|rayterm|NUC homebrew:\
+ :do=^J:am:le=^H:bs:cl=1^L:li#24:co#80:nd=^C:\
+ :up=^N:ho=^B:ll=^K:ce=^A:cd=^E:
+ex3000:\
+ :do=^J:li#24:co#80:ho=^Q:
+carlock|klc:\
+ :do=^J:al=^E:am:bs:ce=^U:cl=100^Z:cm=\E=%+ %+ :co#80:dc=\177:dl=^D:\
+ :ei=^T:ho=^^:im=^T:li#24:nd=^L:se=^V:so=^V:up=^K:vb=\EV\EV:
+# uVAX
+qdss|qdcons|qdss glass tty:\
+ :am:do=^J:le=^H:bs:cm=\E=%.%.:cl=1^Z:co#128:li#57::nd=^L:up=^K:
+exidy|exidy2500|exidy sorcerer as dm2500:\
+ :do=^J:al=^P^J^X:am:le=^H:bs:ce=^W:cl=^^:cm=^L%r%n%.%.:co#64:\
+ :dc=\b:dl=^P^Z^X:dm=^P:ed=^X:ei=^X:ho=^B:ic=^\:\
+ :im=^P:li#30:nd=^\:pt:so=^N:se=^X:up=^Z:
+netx|netronics:\
+ :do=^J:le=^H:bs:cd=2000^F^E:ce=1600^E:cl=466^L:cm=\E=%+@%+@:\
+ :co#64:ho=^D:li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K:
+# This came from the comp ctr who got it from some user. Smart indeed!
+sexidy|exidy smart:\
+ :do=^J:li#24:co#64:cl=^l:ho=^q:nd=^s:\
+ :up=^w:le=^H:bs:le=^a:bc=^a:ma=^x^J:kd=^S:
+ubell|ubellchar:\
+ :if=/usr/share/tabset/ubell:do=^J:am:le=^H:bs:pt:ce=\Ed:cl=^Z:\
+ :cm=\E=%+ %+ :co#80:li#24:nd=^L:up=^K:ma=j^Jk^P^K^Pl :ho=^^:
+ttyWilliams:\
+ :do=^J:co#80:li#12:le=^Y:bc=^Y:do=^K:up=^Z:cl=^^:ce=^_:am:ho=^]:nd=^X:
+xitex|xitex sct-100:\
+ :do=^J:le=^H:bs:cd=2000^F^E:ce=1600^E:cl=400^L:cm=\E=%+@%+@:co#64:\
+ :ho=^D:li#16:ma=j^Jk^Pl :nd=\E+@A:pc=\200:sr=\E=@@^K:up=^K:
+# # --------------------------------
+#
+# s: SPECIALS
+#
+# Special "terminals". These are used to label tty lines when you don't
+# know what kind of terminal is on it. The characteristics of an unknown
+# terminal are the lowest common denominator - they look about like a ti 700.
+# The last one, "other", is like unknown but it allows an escape from software
+# that insists that a "real" unknown terminal is merely so far unspecified.
+network:\
+ :tc=unknown:
+arpanet:\
+ :tc=unknown:
+bussiplexer:\
+ :tc=unknown:
+dialup:\
+ :tc=unknown:
+ethernet:\
+ :tc=unknown:
+lpr|printer|print|printing|line printer:\
+ :do=^J:le=^H:bs:co#132:hc:os:
+plugboard|patch|patchboard:\
+ :tc=unknown:
+# See login.c for "su"
+dumb|su|unknown:\
+ :am:co#80:do=^J:
+switch|intelligent switch:\
+ :tc=unknown:
+ansi|any ansi terminal with pessimistic assumptions:\
+ :co#80:li#24:cl=50\E[;H\E[2J:bs:am:cm=\E[%i%d;%dH:\
+ :nd=\E[C:up=\E[A:ce=\E[K:ho=\E[H:pt:
+other|None of the above, but not exactly unknown:\
+ :gn:cl=\r\n:ho=\r:am:co#80:do=^J:
+# # --------------------------------
+#
+# t: TEXAS INSTRUMENTS
+#
+ti700|ti733|735|ti735|ti silent 700:\
+ :do=^J:le=^H:bs:co#80:hc:os:dC#162:
+ti745|745|743|ti silent 745:\
+ :do=^J:le=^H:bs:co#80:hc:os:
+ti800|ti omni 800:\
+ :do=^J:le=^H:bs:co#132:hc:os:
+# From lesleymw@topaz.berkeley.edu
+ti931|ti 931:\
+ :al=\EN:am:bs:cd=\EJ:ce=\EI:cl=\EL:cm=\EY%+ %+ :co#80:dl=\EO:do=\EB:\
+ :eo:ho=\EH:li#24:ku=\EA:kd=\EB:kr=\EC:kl=\ED:mi:nd:sf=\Eb:sr=\Ea:up=\EA:
+# # --------------------------------
+#
+# v: TELEVIDEO
+#
+# There are some tvi's that require incredible amounts of padding and
+# some that don't. I'm assuming 912 and 920 are the old slow ones,
+# and 912b, 912c, 920b, 920c are the new ones that don't need padding.
+tvi912|912|920|tvi920|old televideo:\
+ :ct=\E3:st=\E1:do=^J:\
+ :al=33*\EE:le=^H:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:dc=\EW:dl=33*\ER:\
+ :kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
+ :bs:am:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\
+ :ho=^^:ic=\EQ:li#24:nd=^L:pt:se=\Ek:so=\Ej:up=^K:us=\El:ue=\Em:\
+ :ma=^K^P^L :sg#1:ug#1:if=/usr/share/tabset/stdcrt:
+# the 912 has a <funct> key that's like shift: <funct>8 xmits "^A8\r".
+# The 920 has this plus real function keys that xmit different things.
+# Termcap makes you use the funct key on the 912 but the real keys on the 920.
+912b|912c|tvi912b|tvi912c|tvi|new televideo 912:\
+ :al=5*\EE:dl=5*\ER:tc=tvi912:
+920b|920c|tvi920b|tvi920c|new televideo 920:\
+ :k0=^AI\r:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:\
+ :k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:al=5*\EE:dl=5*\ER:tc=tvi912:
+# set to page 1 when entering ex (\E-17 )
+# reset to page 0 when exiting ex (\E-07 )
+tvi912-2p|tvi920-2p|912-2p|920-2p|tvi-2p|televideo w/2 pages:\
+ :ti=\E-17 :te=\E-07 :tc=tvi912:
+tvi950-ap|tvi 950 w/alt pages:\
+ :is=\E\\1:ti=\E-06 :te=\E-16 :tc=tvi950:
+tvi950-b|bare tvi950 no is:\
+ :is@:tc=tvi950:
+tvi950-ns|tvi950 w/no standout:\
+ :so@:se@:us@:ue@:tc=tvi950:
+tvi925|925|televideo model 925:\
+ :hs:xn:am:bs:co#80:li#24:cm=\E=%+ %+ :cl=\E*:cd=\Ey:ce=\Et:is=\El\E":\
+ :al=\EE:dl=\ER:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:\
+ :ho=^^:nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:sg#1:us=\EG8:ue=\EG0:ug#1:\
+ :up=^K:do=^V:kb=^H:ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^V^J^L :\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\
+ :k8=^AG\r:k9=^AH\r:k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:\
+ :ts=\Ef:fs=^M\Eg:ds=\Eh:sr=\Ej:
+tvi925vb|925vb|televideo model 925 visual bells:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :tc=tvi925:
+# Since the 925's uses a character position to store the escape sequences to go
+# in and out of both stand out and underline modes, screen positioning is
+# difficult. The following 925 entries don't use these modes.
+tvi925n|925n|televideo model 925 no standout or underline:\
+ :so@:se@:us@:ue@:tc=tvi925:
+tvi925vbn|925vbn|televideo model 925 visual bells no so or ul:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :tc=tvi925n:
+# entry by Tim Curry 5/21/82 Univ. of Central Fla. duke!ucf-cs!tim
+925a|tvi925a|TeleVideo Model 925:\
+ :al=\EE:am:bs:bt=\EI:bw:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:dc=\EW:\
+ :dl=\ER:do=^V:ic=\EQ:if=/usr/share/tabset/std:kb=^H:kd=^V:\
+ :kh=^^:kl=^H:kn#12:kr=^L:ku=^K:li#24:nd=^L:pt:se=\EG0:sg#1:so=\EG4:\
+ :ue=\EG0:ug#1:up=^K:us=\EG8:is=\El\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :ve=\E.4:vs=\E.2:
+# The following tvi descriptions from B:pjphar and virus!mike
+# is for all 950's. It sets the following attributes:
+# full duplex (\EDF) write protect off (\E()
+# conversation mode (\EC) graphics mode off (\E%)
+# white on black (\Ed) auto page flip off (\Ew)
+# turn off status line (\Eg) clear status line (\Ef\r)
+# normal video (\E0) monitor mode off (\EX or \Eu)
+# edit mode (\Er) load blank char to space (\Ee\040)
+# line edit mode (\EO) enable buffer control (^O)
+# protect mode off (\E\047) duplex edit keys (\El)
+# program unshifted send key to send line all (\E016)
+# program shifted send key to send line unprotected (\E004)
+# set the following to nulls:
+# field delimiter (\Ex0\200\200)
+# line delimiter (\Ex1\200\200)
+# start-protected field delimiter (\Ex2\200\200)
+# end-protected field delimiter (\Ex3\200\200)
+# set end of text delimiter to carriage return/null (\Ex4\r\200)
+# CHANGED 4-29-87 to set tabs and keep status line --John Kunze (jak@opal)
+tvi950|950|televideo950:\
+ :ct=\E3:st=\E1:do=^J:\
+ :is=\EDF\EC\Ed\EG0\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\
+ \El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\
+ \Ex3\200\200\Ex4\r\200\Ef\r:if=/usr/share/tabset/stdcrt:\
+ :al=\EE:am:le=^H:bs:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\
+ :co#80:dc=\EW:dl=\ER:do=^V:ei=\Er:ho=^^:im=\Eq:k0=^A0\r:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^V:kh=^^:kl=^H:\
+ :ko=ic\054dc\054al\054dl\054cl\054bt\054ce\054cd:kr=^L:\
+ :ku=^K:li#24:ma=^Vj^Kk^Hh^Ll^^H:mi:ms:nd=^L:pt:se=\EG0:\
+ :sg#1:so=\EG4:sr=\Ej:ue=\EG0:ug#1:up=^K:us=\EG8:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :xn:hs:ts=\Eg\Ef:fs=\r:ds=\Eg\Ef\r:
+#
+# is for 950 with two pages adds the following:
+# set 48 line page (\E\\2)
+# place cursor at page 0, line 24, column 1 (\E-07 )
+# set local (no send) edit keys (\Ek)
+#
+# two page 950 adds the following:
+# when entering ex, set 24 line page (\E\\1)
+# when exiting ex, reset 48 line page (\E\\2)
+# place cursor at 0,24,1 (\E-07 )
+# set duplex (send) edit keys (\El) when entering vi
+# set local (no send) edit keys (\Ek) when exiting vi
+#
+tvi950-2p|950-2p|televideo950 w/2 pages:\
+ :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\
+ \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\
+ \Ex3\200\200\Ex4\r\200\E\\2\E-07 \
+ :te=\E\\2\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950:
+#
+# is for 950 with four pages adds the following:
+# set 96 line page (\E\\3)
+# place cursor at page 0, line 24, column 1 (\E-07 )
+#
+# four page 950 adds the following:
+# when entering ex, set 24 line page (\E\\1)
+# when exiting ex, reset 96 line page (\E\\3)
+# place cursor at 0,24,1 (\E-07 )
+#
+tvi950-4p|950-4p|televideo950 w/4 pages:\
+ :is=\EDF\EC\Ed\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\
+ \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\
+ \Ex3\200\200\Ex4\r\200\E\\3\E-07 \
+ :te=\E\\3\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950:
+#
+# is for reverse video 950 changes the following:
+# set reverse video (\Ed)
+#
+# set vb accordingly (\Ed ...nulls... \Eb)
+#
+tvi950-rv|950-rv|televideo950 rev video:\
+ :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\
+ \El\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\
+ \Ex3\200\200\Ex4\r\200:\
+ :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\
+ :tc=tvi950:
+#
+# uses the appropriate entries from 950-2p and 950-rv
+#
+tvi950-rv-2p|950-rv-2p|televideo950 rev video w/2 pages:\
+ :is=\EDF\EC\Eb\EG0\Eg\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\
+ \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\
+ \Ex3\200\200\Ex4\r\200\E\\2\E-07 :\
+ :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\
+ :te=\E\\2\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950:
+#
+# uses the appropriate entries from 950-4p and 950-rv
+#
+tvi950-rv-4p|950-rv-4p|televideo950 rev video w/4 pages:\
+ :is=\EDF\EC\Eb\EG0\Er\EO\E\047\E(\E%\Ew\EX\Ee ^O\
+ \Ek\E016\E004\Ex0\200\200\Ex1\200\200\Ex2\200\200\
+ \Ex3\200\200\Ex4\r\200\E\\3\E-07 :\
+ :vb=\Ed\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Eb:\
+ :te=\E\\3\E-07 :ti=\E\\1\E-07 :ks=\El:ke=\Ek:tc=tvi950:
+tvi924|924|televideo model 924:\
+ :am:bs:xn:co#80:li#24:cm=\E=%+ %+ :cl=\E*0:cd=\Ey:ce=\Et:is=\Ek0\E"^O:\
+ :al=\EE:dl=\ER:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:ho=^^:\
+ :nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:us=\EG8:ue=\EG0:up=^K:do=^V:kb=^H:\
+ :ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^Vj^Kk^Ll^^H^R^L:k1=^A@\r:k2=^AA\r:\
+ :k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:\
+ :k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:sr=\Ej:\
+ :hs:fs=^Y\Es1:ts=\Ef:ds=\Es0\Ef^Y:
+tvi924vb|924vb|televideo model 924 visual bells:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :tc=tvi924:
+# tvipt termcap from armsis@amber (Gene Rochlin), 9/19/84. Works with vi and
+# rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 char/line (rather than
+# 40), Esc K chooses the normal character set. Not sure padding is needed, but
+# adapted from the tvi920c termcap. so and us are klutzy, but at least use no
+# screen space.
+tvipt|televideopt:if=/usr/share/tabset/stdcrt:\
+ :is=\Ev\Eu\EK:al=5*\EE:am:bs:bt=\EI:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:\
+ :dl=5*\ER:kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:ho=^^:li#24:nd=^L:se=\EF:\
+ :so=\EG1@A\EH:ue=\EF:us=\EG1B@\EH:up=^K:ma=^Kk^Ll^R^L:
+# Vanilla tvi910 -- W. Gish (cswarren@violet) 10/29/86
+tvi910|910|televideo model 910:if=/usr/share/tabset/stdcrt:\
+ :bs:bt=\EI:cd=\EY:ce=\ET:cm=\E=%+ %+ :cl=^Z:co#80:\
+ :kb=^H:ku=^K:kd=^J:kl=^H:kr=^L:k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:\
+ :k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:k9=^AH\r:k0=^AI\r:\
+ :li#24:nd=^L:pt:se=\EG0:so=\EG4:up=^K:us=\EG8:ue=\EG0:\
+ :ho=\E=\001\001:ma=^Kk^Ll^R^L:sg#1:
+# from Alan R. Rogers (rogers%albany@csnet-relay)
+tvi910+|910+|televideo 910+:\
+ :al=5*\EE:am:bs:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+\040%+\040:\
+ :co#80:dc=\EW:dl=\ER:do=^J:ho=^^:ic=\EQ:\
+ :if=/usr/share/tabset/stdcrt:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:\
+ :k4=^AD\r:k5=^AE\r:k6=^AF\r:k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=^H:\
+ :kd=^J:kh=^^:kl=^H:kr=^L:ku=^K:li#24:ll=\E=7\040:ma=^K^P^L\040:\
+ :nd=^L:pt:se=\EG0:sg#1:so=\EG4:ue=\EG0:up=^K:us=\EG8:xn:
+# From Humberto Appleton, beto@cs.utexas.edu, 880521 UT Austin
+tvi970|970|televideo970:\
+ :is=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J:\
+ :ae=\E(B:al=\E[L:as=\E(B:bs:bt=\E[Z:\
+ :cd=\E[0J:ce=\E[0K:cl=\E[H\E[2J:cm=\E[%i%d;%df:co#80:\
+ :da:db:dc=\E[P:dl=\E[M:do=\ED:ei=\E[4l:im=\E[4h:\
+ :k1=\E?a:k2=\E?b:k3=\E?c:k4=\E?d:k5=\E?e:k6=\E?f:k7=\E?g:k8=\E?h:\
+ :k9=\E?i:kb=^H:kd=\E[B:kh=\E[H:kl=\E[D:kr=\E[C:ku=\E[A:\
+ :li#24:mi:ms:nd=\E[C:pt:se=\E[0m:sg#0:so=\E[7m:sr=\EM:\
+ :ue=\E[0m:ug#0:up=\EM:us=\E[4m:vs=\E[1Q:\
+ :vb=\E[5;m\200\200\200\200\200\200\200\200\200\E[0;m
+# From fair@ucbarpa Sun Oct 27 07:21:05 1985
+ims950-b|bare ims950 no is:\
+ :is@:tc=ims950:
+ims950-ns|ims950 w/no standout:\
+ :so@:se@:us@:ue@:tc=ims950:
+ims950|ims televideo 950 emulation:\
+ :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:ko@:kr@:ku@:\
+ :vb@:xn@:tc=tvi950:
+ims950-rv|ims tvi950 rev video:\
+ :k0@:k1@:k2@:k3@:k4@:k5@:k6@:k7@:k8@:k9@:kb@:kd@:kh@:kl@:ko@:kr@:ku@:\
+ :vb@:xn@:tc=tvi950-rv:
+# From Andreas Stolcke <stolcke@icsi.berkeley.edu>
+tvi955|955|televideo955:\
+ :ct=\E3:st=\E1:do=^J:\
+ :rs=\EDF\EC\Eg\Er\EO\E\047\E(\Ew\EX\Ee ^O\
+ \E0P\E6\200\E0p\E4\200\Ef\r:\
+ :is=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El:\
+ :al=\EE:am:le=^H:bs:bt=\EI:cd=\Ey:ce=\Et:cl=\E*:cm=\E=%+ %+ :\
+ :co#80:dc=\EW:dl=\ER:do=^V:ei=\Er:ho=^^:im=\Eq:k0=^A0\r:\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:\
+ :k7=^AF\r:k8=^AG\r:k9=^AH\r:kb=^H:kd=^V:kh=^^:kl=^H:\
+ :ko=ic\054dc\054al\054dl\054cl\054bt\054ce\054cd:kr=^L:\
+ :ku=^K:li#24:ma=^Vj^Kk^Hh^Ll^^H:mi:nd=^L:pt:se=\EG0:\
+ :so=\EG4:sr=\Ej:ue=\EG0:up=^K:us=\EG8:\
+ :vb=\Eb\200\200\200\200\200\200\200\200\200\200\200\200\200\200\200\Ed:\
+ :xn:hs:ts=\Eg\Ef:fs=\r:ds=\Eg\Ef\r:\
+ :mb=\EG2:mh=\E[=5h:me=\EG0\E[=5l:mk=\EG1:mr=\EG4:\
+ :ve=\E.2:vi=\E.0:vs=\E.1:\
+ :xo:RX=^N:SX=^O:RA=\E[=7l:SA=\E[=7h:\
+ :kA=\EE:kB=\EI:kC=\EY:kD=\EW:kE=\ET:kI=\EQ:kL=\ER:kM=\EQ:\
+ :kN=\EK:kP=\EJ:kT=\E1:ka=\E3:kt=\E2:\
+ :as=\E$:ae=\E%:ac=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ:\
+ :5i:ps=\EP:po=\E`:pf=\Ea:
+tvi955-w|955-w|televideo955 w/132 cols:\
+ :is=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El:\
+ :co#132:tc=tvi955:
+# use half-intensity as normal mode, full intensity as bold (md)
+tvi955-hb|955-hb|televideo955 half-bright:\
+ :is=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El:\
+ :mh@:md=\E[=5l:me=\EG0\E[=5h:\
+ :tc=tvi955:
+ims-ansi|ultima2|ultimaII|IMS Ultima II:\
+ :pt:am:bs:co#80:li#24:\
+ :is=\E[0m\E[>14l\E[?1;?5;20l\E>\E[1m^M:if=/usr/share/tabset/vt100:\
+ :cl=\E[;H\E[2J:cd=\E[0J:ce=\E[0K:cm=\E[%i%2;%2H:up=\EM:do=\ED:\
+ :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kh=\E[H:\
+ :so=\E[7m:se=\E[0m\E[1m:us=\E[4m:ue=\E[0m\E[1m:sr=\EM:
+# # --------------------------------
+#
+# w: WYSE
+#
+# The wy{30,50,75,85} entries are recommended by
+# Wyse Technology
+# 3571 North First Street
+# San Jose, CA 95134
+# Entries for the wy60 and wy99 are only based on Wyse's recommendations.
+#
+# Advice on the Wyse 30 and 50 standout mode glitch:
+# (from steve@omni.com or ...pyramid!koosh!steve)
+#
+# These terminals support a "PROTECT" sequence on/off that has no
+# standout-glitch (xmc), while the regular "attribute" stuff enabled
+# with <ESC>G'some-character' gives a 1-space glitch.
+#
+# All but the very old revision firmware on both terminals support a
+# visible PROTECT attribute that's selectable by the ol' SETUP menu.
+# (The older rev. terminals do support PROTECT attribute but only
+# have the options REGULAR and DIM)
+#
+# Get into your terminal's SETUP menu, and down-key to the 5'th
+# menu (on a wyse 30; I think 3'rd or 4'th on a wyse 50) and
+# right-key over to the PROTECT item.
+#
+# Change PROTECT to REVERSE or REVERSE/DIM, and go over to the next
+# item -- ATTRIBUTE and change it to LINE; then save the changes for
+# power-on. (ATTRIBUTE change isn't necessary but looks a whole lot
+# nicer to the eye when inverting the remainder of a line rather then
+# the rest of the screen!).
+#
+# The next thing to do is change your /usr/lib/something?/terminfo/w/wyse50
+# so that it uses the proper escape sequences to turn on/off the protect
+# sequence rather than the very-ugly \EG4 and \EG0.
+#
+# Change standout to \E), standend to \E(, and glitch to 0, which means
+# changing the so, se, and sg fields to :so=\E):se=\E(:sg#0:
+#
+wy30|wyse30|Wyse 30:\
+ :am:bw:hs:mi:xo:bs:pt:\
+ :co#80:li#24:sg#1:ug#1:kn#9:\
+ :ae=\EG0\EH^C:al=2\EE:as=\EG0\EH^B:bt=\EI:cd=80\Ey:\
+ :ce=\Et:cl=80\E*:cm=\E=%+ %+ :ct=\E0:dc=10\EW:dl=1\ER:\
+ :ds=\EF\r:ei=\Er:fs=\r:ho=^^:im=\Eq:ip=2:\
+ :is=\E'\E(\E\^3\E`9^N^T:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
+ :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:kb=\b:\
+ :kd=\n:kh=^^:kl=\b:kr=\f:ku=^K:nd=\f:se=\EG0:so=\EG4:\
+ :sr=3\Ej:st=\E1:ts=\EF:ue=\EG0:up=^K:us=\EG8:ve=\E`1:\
+ :pf=^T:po=^R:\
+ :vi=\E`0:ko=bt,le,do,nd,up,dc,dl,ho,al:
+wy30-vb|wyse30-vb|wyse 30 visual bell:\
+ :vb=\E`8\E`\072\E`9:\
+ :tc=wy30:
+wy50|wyse50|Wyse 50:\
+ :am:bw:hs:mi:xo:bs:pt:\
+ :co#80:li#24:sg#1:ug#1:kn#9:\
+ :ae=\EG0\EH^C:al=\EE:as=\EG0\EH^B:bt=\EI:cd=20\Ey:\
+ :ce=\Et:cl=20\E*:cm=\E=%+ %+ :ct=\E0:dc=1\EW:dl=\ER:\
+ :ds=\EF\r:ei=\Er:fs=\r:ho=^^:i1=30\E`\072\E`9:im=\Eq:\
+ :ip=1:is=^N^T\E'\E(:k1=^A@\r:k2=^AA\r:k3=^AB\r:\
+ :k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:k8=^AG\r:\
+ :k9=^AH\r:kb=\b:kd=\n:kh=^^:kl=\b:kr=\f:ku=^K:nd=\f:\
+ :se=\EG0:so=\EGt:sr=\Ej:st=\E1:ts=\EF:ue=\EG0:up=^K:\
+ :us=\EG8:ve=\E`1:vi=\E`0:\
+ :pf=^T:po=^R:\
+ :ko=bt,le,do,nd,up,dc,dl,ho,al:
+wy50-vb|wyse50-vb|wyse 50 visual bell:\
+ :vb=\E`8\E`\072\E`9:\
+ :tc=wy50:
+wy50-w|wyse50-w|wyse 50 132-column:\
+ :cm=\Ea%i%dR%dC:co#132:dc=2\EW:i1=\E`;\E`9:\
+ :tc=wy50:
+wy50-wvb|wyse50-wvb|wyse 50 132-column visual bell:\
+ :cm=\Ea%i%dR%dC:co#132:dc=2\EW:i1=\E`;\E`9:\
+ :vb=\E`8\E`;\E`9:\
+ :tc=wy50:
+# from John Gillmore hoptoad!gnu@lll-crg.arpa
+wyse-vp|wyse|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on:\
+ :am:do=^J:if=/usr/share/tabset/wyse-adds:\
+ :le=^H:bs:li#24:co#80:cm=\EY%+ %+ :cd=\Ek:ce=\EK:nd=^F:\
+ :up=^Z:cl=^L:ho=^A:ll=^A^Z:kl=^U:kr=^F:kd=^J:ku=^Z:kh=^A:\
+ :pt:so=^N:se=^O:us=^N:ue=^O:dl=\El:al=\EM:im=\Eq:ei=\Er:dc=\EW:\
+ :is=\E`\072\E`9^O\Er:rs=\E`\072\E`9^O\Er:
+wyse-vp-nk|Wyse 50 in ADDS Viewpoint enhanced mode with cursor keys gone:\
+ :kl@:kr@:kd@:ku@:kh@:tc=wyse-vp:
+wyse925|Wyse-50 emulating tvi925:\
+ :xn@:tc=tvi925:
+# Wyse 60 in 24 row native mode.
+# This termcap is a composite of entries submitted by Steve Van Domelen
+# (Wyse Tech, svd@bigboy.wyse.com) and Douglas Good (doug@cli.com).
+# Merged by Paul Vojta (vojta@math.berkeley.edu).
+wy60|wyse60|Wyse 60 in native mode:\
+ :ae=\EH^C:al=4\EE:am:as=\EH^B:bl=^G:bs:bt=\EI:bw:cd=100\Ey:ce=\Et:\
+ :cl=100\E*:cm=\E=%+ %+ :co#80:ct=\E0:da:db:dc=11\EW:dl=5\ER:do=^J:\
+ :ds=\EF\r:ei=\Er:fs=\r:ho=^^:hs:if=/usr/share/tabset/std:im=\Eq:ip=3:\
+ :is=\Ed$\EcD\E'\Er\EH^C\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1^N^T\EwG\Ew0^^^K:\
+ :it#8:k0=^A@\r:k1=^AA\r:k2=^AB\r:k3=^AC\r:k4=^AD\r:k5=^AE\r:k6=^AF\r:\
+ :k7=^AG\r:k8=^AH\r:k9=^AI\r:kb=\b:kd=\EOB:ke=200\EcU:kh=\E{:kl=\EOD:\
+ :kn#10:ko=bt,le,do,nd,up,dc,dl,ho,al:kr=\EOC:\
+ :ks=200\EZ0+\EOA\177\EZ0,\EOB\177\EZ0.\EOC\177\EZ0-\EOD\177\EZ0*\E{\177:\
+ :ku=\EOA:l0=F1:l1=F2:l2=F3:l3=F4:l4=F5:l5=F6:l6=F7:l7=F8:l8=F9:l9=F10:\
+ :le=\b:li#24:ll=^^^K:mb=\EG2:me=\EG0:mh=\EGp:mi:mr=\EG4:ms:nd=\f:pf=^T:\
+ :po=^R:pt:rs=500\E~!\E~4\E`\:\EeF\Ee(\EwG:se=\EG0:sf=^J:so=\EGt:\
+ :sr=7\Ej:st=\E1:ts=\EF:ue=\EG0:up=^K:us=\EG8:
+# Must delete tc= if using infocomp to translate
+wy60-w|wyse60-w|wyse 60 132-column:\
+ :co#132:cm=\Ea%i%dR%dC:dc=16\EW:ip=5:\
+ :rs=500\E~!\E~4\EeF\E`;\Ee(\EwG:tc=wy60:
+wy60-25|wyse60-25|wyse 60 80-column 25-lines:\
+ :li#25:\
+ :rs=500\E~!\E~4\E`\:\EeG\Ee)\EwG:tc=wy60:
+wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines:\
+ :co#132:li#25:cm=\Ea%i%dR%dC:dc=16\EW:ip=5:\
+ :rs=500\E~!\E~4\EeF\E`;\Ee)\EwG:tc=wy60:
+wy60-42|wyse60-42|wyse 60 80-column 42-lines:\
+ :li#42:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\E=%+ %+ :dc=16\EW:\
+ :dl=11\ER:ip=5:sr=10\Ej:\
+ :rs=500\E~!\E~4\E`\:\EeF\Ee*\EwG:tc=wy60:
+wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines:\
+ :co#132:li#42:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\Ea%i%dR%dC:dc=19\EW:\
+ :dl=11\ER:ho=2^^:ip=6:sr=10\Ej:\
+ :rs=500\E~!\E~4\EeF\E`;\Ee*\EwG:tc=wy60:
+wy60-43|wyse60-43|wyse 60 80-column 43-lines:\
+ :li#43:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\E=%+ %+ :dc=16\EW:\
+ :dl=11\ER:ip=5:sr=10\Ej:\
+ :rs=500\E~!\E~4\E`\:\EeF\Ee+\EwG:tc=wy60:
+wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines:\
+ :co#132:li#43:al=11\EE:cd=260\Ey:cl=260\E*:cm=2\Ea%i%dR%dC:dc=19\EW:\
+ :dl=11\ER:ho=2^^:ip=6:sr=10\Ej:\
+ :rs=500\E~!\E~4\EeF\E`;\Ee+\EwG:tc=wy60:
+# Not recommended at high baud rates
+wy60-vb|wyse60-vb|Wyse 60 visual bell:\
+ :vb=\E`8\E`9:\
+ :tc=wy60:
+wy60-w-vb|wy60-wvb|wyse60-w-vb|Wyse 60 132-column visual bell:\
+ :vb=\E`8\E`9:\
+ :tc=wy60-w:
+# The following switch screens for vi and emacs
+wy60-s|wyse60-s|Wyse 60 with screen switching:\
+ :te=50^Z\Ew0:ti=50\Ew1:tc=wy60:
+wy60-w-s|wyse60-w-s|Wyse 60 132-column with screen switching:\
+ :te=50^Z\Ew0:ti=50\Ew1:tc=wy60-w:
+wy60-nt|wyse60-nt|Wyse 60 with broken tab support:\
+ :pt@:tc=wy60:
+#
+# The Wyse 75 is a vt100 lookalike without advanced video.
+#
+# The Wyse 75 can support one attribute (e.g. Dim, Inverse,
+# Underline) without magic cookies. The following description
+# uses this capability, but when more than one attribute is
+# put on the screen at once, all attributes will be changed
+# to be the same as the last attribute given.
+# The Wyse 75 can support more attributes when used with magic
+# cookies. The wy75-mc terminal description uses magic cookies
+# to correctly handle multiple attributes on a screen.
+#
+wy75|wyse75|wyse 75:\
+ :am:hs:mi:ms:xn:xo:bs:pt:\
+ :co#80:li#24:pb#1201:kn#6:\
+ :AL=2*\E[%dL:DC=3*\E[%dP:DL=1*\E[%dM:DO=\E[%dB:\
+ :IC=1*\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\
+ :al=2\E[L:as=\E[0m^N:bt=\E[1Z:cd=30\E[J:ce=3\E[K:\
+ :ch=\E[%i%dG:cl=30\E[H\E[J:cm=\E[%i%d;%dH:\
+ :cs=2\E[%i%d;%dr:ct=\E[3g:dc=3\E[P:dl=\E[M:\
+ :ds=\E[>,^A^A\E[>-^A^A:ei=\E[4l:fs=^A:ho=\E[H:\
+ :im=\E[4h:ip=1:is=\E>\E[?7;?8h\E[4;?1l^O\E)0:kb=\b:\
+ :kd=\E[B:ke=\E[?1l\E>:kh=\E[H:kl=\E[D:kr=\E[C:\
+ :ks=\E[?1l\E[?7h\E=:ku=\E[A:nd=\E[C:r1=\E7\E[1;24r\E8:\
+ :r2=20\E[0m\E[35;?7;?8h\E[30;?1l:r3=80\E[?3l:rc=\E8:\
+ :sc=\E7:se=\E[0m:so=\E[1t\E[7m:sr=2\EM:st=\EH:\
+ :ts=\E[>,^A:ue=\E[0m:up=\E[A:us=\E[2t\E[4m:ve=\E[?25h:\
+ :po=\E[5i:pf=\E[4i:\
+ :vi=\E[?25l:ko=nd,up,dl,ce,ho,al:
+#
+# This terminal description uses the non-hidden attribute mode
+# (with magic cookie).
+#
+wy75-mc|wyse75-mc|wyse 75 with magic cookies:\
+ :ae=\E[0p^O:as=\E[0p^N:ms@:r2=20\E[0p\E[35;?7;?8h\E[30;?1l:\
+ :se=\E[0p:sg#1:so=\E[17p:ue=\E[0p:ug#1:us=\E[8p:\
+ :tc=wy75:
+wy75-vb|wyse75-vb|wyse 75 with visual bell:\
+ :vb=\E[30h\E,\E[30l:\
+ :tc=wy75:
+wy75-w|wyse75-w|wyse 75 in 132 column mode:\
+ :co#132:r3=80\E[?3h:\
+ :tc=wy75:
+wy75-wvb|wyse75-wvb|wyse 75 with visual bell 132 columns:\
+ :co#132:r3=80\E[?3h:vb=\E[30h\E,\E[30l:\
+ :tc=wy75:
+#
+wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad:\
+ :is=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=:\
+ :kd=\EOB:ke=10\E[?1l\E>:kh=\EOH:kl=\EOD:kr=\EOC:\
+ :ks=10\E[?1h\E=:ku=\EOA:\
+ :tc=wyse75:
+#
+# Wyse 85 emulating a vt220 7 bit mode.
+# 24 line screen with status line.
+#
+# The vt220 mode permits more function keys but it wipes out
+# the escape key. I strongly recommend that f11 be set to
+# escape (esc).
+# The terminal may have to be set for 8 data bits and 2 stop
+# bits for the arrow keys to work.
+# The Wyse 85 runs faster with XON/XOFF enabled. Also the
+# (dch) and (ich) work best when XON/XOFF is set. (ich) and
+# (dch) leave trash on the screen when used without XON/XOFF.
+#
+wy85|wyse85|wyse 85:\
+ :am:hs:mi:ms:xn:xo:bs:pt:\
+ :co#80:li#24:kn#3:\
+ :AL=5*\E[%dL:DC=3*\E[%dP:DL=3*\E[%dM:DO=\E[%dB:\
+ :IC=4*\E[%d@:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:ae=^O:\
+ :al=5\E[L:as=^N:bt=\E[Z:cd=110\E[J:ce=\E[K:\
+ :cl=110\E[H\E[J:cm=1\E[%i%d;%dH:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=3\E[P:dl=3\E[M:ds=\E[40l:ei=\E[4l:\
+ :fs=\E[1;24r\E8:ho=\E[H:\
+ :i1=\E[62;1"p\E7\E[?6l\E8\E[?5W:im=\E[4h:ip=3:\
+ :is=16\E[2;4;20;30l\E[?1;4;10;16l\E[12;36h\E[?7;8;25h:\
+ :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\
+ :kb=\b:kd=\E[B:ke=\E>:kh=\E[26~:\
+ :kl=\E[D:kr=\E[C:ks=\E[?1l\E=:ku=\E[A:l1=PF1:l2=PF2:\
+ :l3=PF3:l4=PF4:nd=\E[C:\
+ :r1=\E<\E[3;13l\E[!p\E7\E[1;24r\E8\E(B:\
+ :r2=70\E[35h\E[?3l:rc=\E8:sc=\E7:se=\E[m:so=\E[1m:\
+ :sr=3\EM:st=\EH:ts=\E[40h\E7\E[25;%i%dH:ue=\E[m:\
+ :up=\E[A:us=\E[4m:ve=\E[?25h:vi=\E[?25l:nl=\E[B:\
+ :po=\E[5i:pf=\E[4i:\
+ :ko=do,nd,up:
+#
+# Wyse 85 with visual bell.
+wy85-vb|wyse85-vb|wyse 85 with visual bell:\
+ :vb=\E[30h\E,\E[30l:\
+ :tc=wy85:
+#
+# Wyse 85 in 132-column mode.
+wy85-w|wyse85-w|wyse 85 in 132-column mode:\
+ :co#132:\
+ :r2=120\E[35h\E[?3h:\
+ :tc=wy85:
+#
+# Wyse 85 in 132-column mode with visual bell.
+wy85-wvb|wyse85-wvb|wyse 85 with visual bell 132-columns:\
+ :vb=\E[30h\E,\E[30l:\
+ :tc=wy85:
+# From pett@cgl.ucsf.edu
+wy99|wyse-99gt|wyse99gt|wyse 99GT, 80 col, native mode:\
+ :is=\E\140\072\Ee(\Ew1\Ee-\Ee$\Ee'\EeT^T:ct=\E0:st=\E1:gn:\
+ :li#24:co#80:bl=^G:am:bw:ul:hs:as=\EcE:ae=\EcD:bt=\EI:\
+ :ma=^Kj^Jk^Hh^Ll^^H:cm=\Ea%i%2R%3C:it#8:\
+ :vs=^^\EY\E\140\072:vi=\E`0:es:ws#80:\
+ :lm#0:md=\Ee1\EG6:me=\Ee0\E(:mh=\Ee1\EGb:mb=\Ee1\EG2:\
+ :mk=\Ee1\EG1:mp=\E):mr=\Ee1\EG4:pf=^T:po=\EP\E7:ps=:\Ed&\E7\
+ :fs=\004:ds=\EA31:i2=\EA30:vb=\E\1361\E\1360:da:db:sf=^J:sr=\Ej:\
+ :cl=^Z:ce=\ET:cd=\EY:al=\EE:dl=\ER:dc=\EW:\
+ :so=\EGt:se=\EG0:sg#1:ue=\EG0:us=\EG8:ug#1:ll=\Ea24R1C:\
+ :pt:bs:nd=^L:up=^K:do=^J:ho=^^:kl=^H:kr=^L:ku=^K:kd=^J:kh=^^:kn#20:\
+ :ei=\Er:im=\Eq:mi:if=/usr/share/tabset/stdcrt:\
+ :k1=^A@^M:k2=^AA^M:k3=^AB^M:k4=^AC^M:k5=^AD^M:\
+ :k6=^AE^M:k7=^AF^M:k8=^AG^M:k9=^AH^M:k0=^AI^M:\
+ :l1=^A`^M:l2=^Aa^M:l3=^Ab^M:l4=^Ac^M:l5=^Ad^M:\
+ :l6=^Ae^M:l7=^Af^M:l8=^Ag^M:l9=^Ah^M:l0=^Ai^M:
+# From freudent@eric.ultra.nyu.edu (Eric Freudenthal)
+wy100q|Wyse 100 for Quotron:\
+ :al=\EE:bs:bt=\EI:cd=\EY:ce=\ET:cl=^Z:cm=\E=%+ %+ :co#80:\
+ :dc=\EW:dl=\ER:do=^J:ei=\Er:im=\Eq:is=\E`\072\200\EC\EDF\E0\E'\E(\EA21:\
+ :kd=^J:kl=^H:kr=^L:ku=^K:li#24:nd=^L:up=^K:us=\EG8:ue=\EG0:\
+ :so=\EG4:se=\EG0:sg#1:sr=\Ej:ho=^^:ug#1:
+# # --------------------------------
+#
+# y: TELERAY
+#
+# Note two things called "teleray". Reorder should move the common one
+# to the front if you have either. A dumb teleray with the cursor stuck
+# on the bottom and no obvious model number is probably a 3700.
+t3700|teleray|dumb teleray 3700:\
+ :do=^J:le=^H:bs:cl=^L:co#80:li#24:
+t3800|teleray 3800 series:\
+ :do=^J:le=^H:bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80: \
+ :do=\n:ho=\EH:li#24:ll=\EY7 :nd=\EC:pt:up=^K:
+t1061|teleray 1061:\
+ :if=/usr/share/tabset/teleray:\
+ :ct=\EG:st=\EF:do=^J:\
+ :al=2*\EL:am:le=^H:bs:cd=1\EJ:ce=\EK:cl=1^L:cm=\EY%+ %+ :co#80:\
+ :dc=\EQ:dl=2*\EM:ho=\EH:ic=\EP:ip=0.4*:\
+ :k1=^Z1:k2=^Z2:k3=^Z3:k4=^Z4:k5=^Z5:k6=^Z6:k7=^Z7:k8=^Z8:\
+ :li#24:nd=\EC:pt:se=\ER@:so= \ERD:\
+ :is=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef:\
+ :up=\EA:us=\ERH:ue=\ER@:xs:xt:sg#2:ug#1:
+# "Teleray Arpa Special", officially designated as
+# "Teleray Arpa network model 10" with "Special feature 720".
+# This is the new (1981) fast microcode updating the older "arpa" proms
+# (which gave meta-key and pgmmable-fxn keys). 720 is much much faster,
+# converts the keypad to programmable function keys, and has other goodies.
+# Standout mode is still broken (magic cookie, etc) so is suppressed as no
+# programs handle such lossage properly.
+# Note: this is NOT the old termcap's "t1061f with fast proms."
+# From Univ of Utah, J.Lepreau Tue Feb 1 06:39:37 1983
+# lepreau@utah-cs, harpo!utah-cs!lepreau
+#
+t10|teleray 10 special:\
+ :so@:se@:us@:ue@:\
+ :al=\EL:bs:cd=\EJ:ce=\EK:cl=30\Ej:cm=\EY%+ %+ :co#80:\
+ :dc=\EQ:dl=\EM:ho=\EH:ic=\EP:km:li#24:nd=\EC:pc=\200:pt:\
+ :se=\ER@:so=\ERD:sf=\Eq:sg#2:sr=\Ep:up=\EA:ug#1:ue=\ER@:us=\ERH:\
+ :xs:xt:
+t1061f|teleray 1061 with fast PROMs:\
+ :al=\EL:ip@:dl=\EM:tc=t1061:
+# # --------------------------------
+#
+# z: Miscellaneous
+#
+wind:\
+ :bs:cm=\Ep%r%.%.:cl=\En\120\030\Eo:co#80:\
+ :ho=\Ep\200\200:li#24:nd=^L:up=^K:nl=\035:\
+ :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\
+ :so=\Em\014:se=\Em\003:
+wind16:\
+ :bs:cm=\Ep%r%.%.:cl=\En\120\020\Eo:co#80:\
+ :ho=\Ep\200\200:li#16:nd=^L:up=^K:nl=\035:\
+ :so=\Em\014:se=\Em\003:
+wind40:\
+ :bs:cm=\Ep%r%.%.:cl=\En\120\050\Eo:co#80:\
+ :ho=\Ep\200\200:li#40:nd=^L:up=^K:nl=\035:\
+ :so=\Em\014:se=\Em\003:
+wind50:\
+ :bs:cm=\Ep%r%.%.:cl=\En\128\062\Eo:co#88:\
+ :ho=\Ep\200\200:li#50:nd=^L:up=^K:nl=\035:\
+ :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\
+ :so=\Em\014:se=\Em\003:
+cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars:\
+ :am:bs:cl=^Z:co#73:ho=\036:li#36:nd=^L:up=^K:
+cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars:\
+ :am:bs:cl=^Z:co#85:ho=\036:li#39:nd=^L:up=^K:\
+ :kl=\E3:kr=\E4:ku=\E1:kd=\E2:k1=\E5:k2=\E6:k3=\E7:k4=\E8:\
+ :so=\Em\014:se=\Em\003:
+v50|visual 50:\
+ :am:bs:al=\EL:dl=\EM:\
+ :cd=\Ek:ce=\EK:cl=^Z:cm=\E=%+\040%+\040:co#80:do=^J:ho=\EH:\
+ :kb=^H:kd=\EB:kh=\EH:kl=\ED:kr=\EC:ku=\EA:li#24:ms:nd=^L:pt:\
+ :so=\EU:se=\ET:up=^K:
+trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M:\
+ :nl=^_:al=^D:am:bs:cd=^B:ce=^A:cl=^L:cm=\EY%+ %+ :co#80:\
+ :dl=^K:do=^_:ho=^F:li#24:nd=^]:ms:pt:se=^O:so=^N:up=^^:\
+ :kb=^H:kd=^_:kl=^\:kr=^]:ku=^^:
+# From: ksb@mentor.cc.purdue.edu (Kevin Braunsdorf)
+trs16|trs-80 model 16 console:\
+ :al=\EL:am:bs:cd=\EJ:ce=\EK:cl=^L:cm=\EY%+ %+ :co#80:dc=\EQ:dl=\EM:\
+ :do=\EB:ic=\EP:ho=\EH:kb=^H:kd=\EB:kl=\ED:kn#2:kr=\EC:\
+ :ku=\EA:k0=^A:k1=^B:l0=f1:l1=f2:li#24:nd=\EC:pt:se=\ER@:sg#0:so=\ERD:\
+ :k2=^D:k3=^L:k4=^U:k5=^P:k6=^N:k7=^S:\
+ :l2=f3:l3=f4:l4=f5:l5=f6:l6=f7:l7=f8:\
+ :up=\EA:GS=\ERG:GE=\ERg:GV=s:GH=u:GU=e:GD=c:G1=`:G2=_:G3=b:G4=a:\
+ :BN=\E[?33h:BF=\E[?33l:UC=\E[_\040q:BC=\E[\177\040q:\
+ :PN=\E]=:PS=\E]+:\
+ :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
+# From {pbrown,ctl}@ocf.berkeley.edu, 12 Mar 90
+coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II:\
+ :am:bs:cl=5*^L:li#24:co#80:ho=^A:\
+ :cd=^K:ce=^D:cm=2%r^B%+ %+ :\
+ :bl#7:do=^J:up=^I:nd=^F:so=\037\040:se=\037\041:\
+ :us=\037\042:ue=\037\043:al=\037\060:dl=\037\061:\
+ :ku=^L:kd=^J:kr=^I:kl=^H:ta:mb=\037\042:md=\E\072^A:\
+ :mr=\037\040:me=\037\041\E\072\000:\
+ :vi=\005\040:ve=\005\041
+ps300|Picture System 300:us@:ue@:so@:se@:xt:pt@:tc=vt100:
+masscomp2:co#64:li#21:tc=masscomp:
+masscomp1:co#104:li#36:tc=masscomp:
+masscomp:\
+ :al=\E[L:bs:cd=\E[J:ce=\E[K:co#80:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ei=\E[4l:im=\E[4h:is=\EGc\EGb\EGw:li#24:mi:MT:nd=\E[C:pt:se=\E[0m:\
+ :sg#0:so=\E[7m:cm=\E[%i%d;%dH:ue=\EGau:us=\EGu:up=\E[A:\
+ :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^h:cl=\E[2J:
+# Kimtron TC entries include (undocumented) codes for: enter dim mode (mh),
+# enter bold mode (md), enter reverse mode (mr), turn off all attributes (me)
+# Kimtron ABM 85 added by Dual Systems
+abm85|Kimtron ABM 85:\
+ :is=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq:if=/usr/share/tabset/stdcrt:\
+ :li#24:co#80:am:bs:bw:ms:pt:\
+ :cl=\E*:cd=\Ey:dl=\ER:al=\EE:ce=\Et:dc=\EW:im=\EQ:ei=\Er:\
+ :cm=\E=%+ %+ :do=^J:nd=^L:up=^K:bt=\EI:\
+ :kh=^^:kb=^H:kd=^J:ku=^K:kd=^J:kl=^H:kr=^L:\
+ :so=\Ej:se=\Ek:sg#1:us=\El:ue=\Em:ug#1:
+# Kimtron ABM 85H added by Dual Systems.
+# Some notes about the 85h entries:
+# 1) there are several firmware revs of 85H in the world. Use o85h for
+# firmware revs prior to SP51
+# 2) Make sure to use 85h entry if the terminal is in 85H mode and the
+# 85e entry if it is in 920 emulation mode. They are incompatible in
+# some places and NOT software settable i.e., `is' can't fix change it)
+# 3) In 85h mode, the arrow keys and special functions transmit when
+# the terminal is in dup-edit, and work only locally in local-edit.
+# Vi won't swallow `del char' for instance, but `vs' turns on
+# dup-edit anyway so that the arrow keys will work right. If the
+# arrow keys don't work the way you like, change `vs', `ve', and `is'.
+# 920E mode does not have software commands to toggle between dup
+# and local edit, so you get whatever was set last on the terminal.
+# 4) vb attribute is nice, but seems too slow to work correctly (\Eb<pad>\Ed)
+# 5) Make sure `hidden' attributes are selected. If `embedded' attributes
+# are selected, the entries :sg@: and :ug@: should be removed.
+# 6) auto new-line should be on (selectable from setup mode only)
+#
+# From fair@ucbarpa Sun Oct 27 07:21:05 1985
+85h|85H|abm85h|Kimtron ABM 85H, 85H mode:\
+ :is=\EC\EN\EX^T^N\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef^M\EG0\Ed\E.4\El:\
+ :im=\EZ:kd=^V:so=\EG4:se=\EG0:us=\EG8:ue=\EG0:vb@:vs=\E.2:ve=\E.4:\
+ :mh=\E):mr=\EG4:me=\E(\EG0:sg@:ug@:ds=\Ee:fs=^M:hs:ts=\Eg\Ef:tc=abm85:
+85e|85E|abm85e|Kimtron ABM 85H, 920E mode:\
+ :is=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef^M\Ek\Eq\Em:\
+ :mh=\E):mr=\Ej:me=\E(\Ek:im=\EZ:sg@:ug@:vb@:tc=abm85:
+o85h|oabm85h|Kimtron ABM 85H, old firmware rev.:\
+ :is=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF:\
+ :im=\EZ:sg@:ug@:vb=\200\200\200^G\200\200\200:\
+ :mh=\E):mr=\Ej:me=\E(\Ek:tc=abm85:
+# from malman@bbn-vax.arpa
+kt7|kimtron model kt-7:\
+ :am:bs:co#80:li#24:cm=\E=%+ %+ :cl=^Z:cd=\EY:ce=\ET:is=\El\E":\
+ :al=\EE:dl=\ER:ic=\EQ:dc=\EW:if=/usr/share/tabset/stdcrt:\
+ :ho=^^:nd=^L:bt=\EI:pt:so=\EG4:se=\EG0:sg#0:us=\EG8:ue=\EG0:ug#0:\
+ :up=^K:do=^V:kb=^H:ku=^K:kd=^V:kl=^H:kr=^L:kh=^^:ma=^V^J^L :\
+ :k1=^A@\r:k2=^AA\r:k3=^AB\r:k4=^AC\r:k5=^AD\r:k6=^AE\r:k7=^AF\r:\
+ :k8=^AG\r:k9=^AH\r:k0=^AI\r:ko=ic,dc,al,dl,cl,ce,cd,bt:\
+ :ts=\Ef:fs=\Eg:
+appleII|apple ii plus:vs=\024\103\066:ve=\024\103\062:\
+ :am:co#80:ce=\035:li#24:cl=\014:bs:nd=\034:up=\037:ho=\E\031:pt:\
+ :cd=\013:so=\017:se=\016:cm=\036%r%+ %+ :is=\024T1\016:do=^J:kd=^J:\
+ :vb=\024G1\024T1:kr=^U:
+# Gary Ford 21NOV83
+# New version from ee178aci%sdcc7@SDCSVAX.ARPA Fri Oct 11 21:27:00 1985
+apple-80|apple II with smarterm 80 col:\
+ :am:bs:bt=^R:bw:cd=10*^K:ce=10^]:cl=10*^L:cm=^^%r%+ %+ :\
+ :co#80:cr=10*^M:do=^J:ho=^Y:le=^H:li#24:nd=^\\:up=^_:
+lisa|apple lisa console display, black on white:\
+ :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%i%d;%dH:co#88:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ho=\E[H:ic=\E[@:li#32:\
+ :nd=\E[C:ms:pt:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:up=\E[A:\
+ :kb=^h:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:eo:is=\E>\E[0m^L:\
+ :GS=\E[11m:GE=\E[10m:GV=\140:GH=a:G1=c:G2=f:G3=e:G4=d:GU=u:\
+ :GD=s:GC=b:GL=v:GR=t:CO=\E[5l:CF=\E[5h:
+liswb|apple lisa console display, white on black:\
+ :so=\E[0m:se=\E[0;7m:us=\E[4m:ue=\E[0;7m:is=\E>\E[0;7m^L:\
+ :tc=lisa:
+# The following is a version of the ibm-pc entry distributed with PC/IX,
+# (Interactive Systems' System 3 for the Big Blue), modified by Richard
+# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original,
+# (the former is untrue, and the latter failed under UCB/man); standout and
+# underline modes have been added. Note: this entry describes the "native"
+# capabilities of the PC monochrome display, without ANY emulation; most
+# communications packages (but NOT PC/IX connect) do some kind of emulation.
+pc|ibmpc|ibm pc PC/IX:\
+ :li#24:co#80:am:bs:bw:eo:\
+ :cd=\E[J:ce=\E[K:cl=\Ec:cm=\E[%i%2;%2H:do=\E[B:ho=\E[;H:\
+ :nd=\E[C:up=\E[A:so=\E[7m:se=\E[0m:us=\E[4m:ue=\E[0m:
+pc3|ibmpc3|IBM PC 386BSD Console:\
+ :Co#8:\
+ :DO=\E[%dB:\
+ :F1=\E[W:\
+ :F2=\E[X:\
+ :K1=\E[H:\
+ :K2=\E[I:\
+ :K3=\E[E:\
+ :K4=\E[F:\
+ :K5=\E[G:\
+ :LE=\E[%dD:\
+ :RI=\E[%dC:\
+ :AB=\E[1;%dx:\
+ :AF=\E[2;%dx:\
+ :UP=\E[%dA:\
+ :ac=l\332m\300k\277j\331u\264t\303v\301w\302q\304x\263n\305`^Da\260f\370g\361~\371.^Y-^Xh\261i^U0\333y\363z\362:\
+ :am:\
+ :bl=^G:\
+ :bs:\
+ :cb=\E[1K:\
+ :cd=\E[J:\
+ :ce=\E[K:\
+ :cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:\
+ :co#80:\
+ :cr=^M:\
+ :do=\E[B:\
+ :ho=\E[H:\
+ :is=\E[m:\
+ :it#8:\
+ :k;=\E[V:\
+ :k1=\E[M:\
+ :k2=\E[N:\
+ :k3=\E[O:\
+ :k4=\E[P:\
+ :k5=\E[Q:\
+ :k6=\E[R:\
+ :k7=\E[S:\
+ :k8=\E[T:\
+ :k9=\E[U:\
+ :kD=\177:\
+ :@7=\E[F:\
+ :kN=\E[G:\
+ :kP=\E[I:\
+ :kb=\177:\
+ :kd=\E[B:\
+ :kh=\E[H:\
+ :kl=\E[D:\
+ :kr=\E[C:\
+ :ku=\E[A:\
+ :le=^H:\
+ :li#25:\
+ :ms:\
+ :nd=\E[C:\
+ :op=\E[x:\
+ :pa#64:\
+ :rs=\E[m:\
+ :se=\E[m:\
+ :sf=\E[S:\
+ :so=\E[7;1r\E[7m:\
+ :sr=\E[T:\
+ :ta=^I:\
+ :te=\E[m:\
+ :ti=\E[m:\
+ :up=\E[A:\
+ :ut:
+ibmx|ibmpcx|IBM PC xenix console display:\
+ :al=\E[L:am:bs:cd=\E[J:ce=\E[K:cl=^L:cm=\E[%d;%dH:co#80:\
+ :dc=\E[P:dl=\E[M:do=\E[B:ho=\E[H:ic=\E[@:li#25:\
+ :nd=\E[C:ms:se=\E[0m:so=\E[7m:us=\E[4m:\
+ :ue=\E[m:up=\E[A:MR=\E[0m:\
+ :kb=^h:kh=\E[Y:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:eo:\
+ :GS=\E[11m:GE=\E[10m:\
+ :GC=b:GL=v:GR=t:RT=^J:\
+ :GH=\E[196g:GV=\E[179g:\
+ :GU=\E[193g:GD=\E[194g:\
+ :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\
+ :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\
+ :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\
+ :HM=\E[Y:EN=\E[d:PU=\E[Z:PD=\E[e:
+ibmc|ibmcpc|IBM PC xenix color console display:\
+ :tc=ibm:
+ibmcx|ibmcpcx:\
+ :tc=ibmx:
+kaypro|kaypro2|kaypro II:\
+ :am:bs:cm=\E=%+ %+ :cl=1^Z:co#80:ho=^^:li#24:ma=^K^P:nd=^L:up=^K:\
+ :kr=^L:kl=^H:ku=^K:kd=^J:
+# From Suk Lee ..!{decvax,linus,allegra,ihnp4}!utcsrgv!spoo
+trs100|Radio Shack Model 100:\
+ :am:bs:le=^H:li#8:co#40:ku=^^:kd=^_:kl=^]:kr=^\:up=\EA:\
+ :nd=\EC:ho=\EH:ce=\EK:cd=\EJ:cl=\EE:xt:cm=\EY%+ %+ :\
+ :so=\Ep:se=\Eq:al=\EL:dl=\EM:
+mac|macintosh|Macintosh with MacTerminal:\
+ :al=20\E[L:dl=20\E[M:ip=7:dc=7\E[P:ic=9\E[@:xn:dN#30:tc=vt100:
+zen50|z50:zephyr:\
+ :cm=\E=%+ %+ :cd=\EY:co#80:li#24:\
+ :am:al=\EE:ce=\ET:dc=\EW:dl=\ER:ic=\EQ:\
+ :cl=\E+:bs:ma=^Hh^Ll^Jj^Kk:sg#1:se=\EGO:so=\EG4:\
+ :kl=^H:kr=^L:ku=^K:kd=^J:kh=\036:up=^K:\
+ :BS=^U:CL=^V:CR=^B:RK=^L:UK=^K:LK=^H:DK=^J:HM=\036:
+go140|graphon go-140:\
+ :co#80:li#24:cl=10\E[;H\E[2J:bs:cm=\E[%i%2;%2H:nd=\E[C:up=\E[A:\
+ :ce=\E[K:cd=10\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\
+ :is=\E<\E=\E[?3l\E[?7l\E(B\E[J\E7\E[;r\E8\E[m\E[q:\
+ :dl=\E[M:al=\E[L:dc=\E[P:im=\E[4h:ei=\E[4l:\
+ :ks=\E[?1h\E=:ke=\E[?1l\E>:\
+ :if=/usr/share/tabset/vt100:ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:\
+ :kh=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=\EM:
+go140w|graphon go-140 in 132 column mode:\
+ :co#132:is=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q:\
+ :tc=go140:
+# From edm@nwnexus.WA.COM. Hacked up vt200 termcap to handle GO-225/VT220
+go225|go-225|Graphon 225:\
+ :im=\E[4h:ei=\E[4l:mi:dc=\E[P:al=\E[L:dl=\E[M:\
+ :cs=\E[%i%d;%dr:sf=\ED:sr=\EM:\
+ :ce=\E[K:cl=\E[H\E[J:cd=\E[J:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\
+ :md=\E[1m:mr=\E[7m:mb=\E[5m:me=\E[m:\
+ :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
+ :rs=\E[!p\E[?7h\E[2;1;1#w:rf=/usr/share/tabset/vt100:\
+ :do=^J:co#80:li#25:le=^H:bs:am:ks=\E=:ke=\E>:\
+ :ku=\E[A:kd=\E[B:kr=\E[C:kl=\E[D:kb=^H:kh=\E[H:\
+ :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:vt#3:xn:\
+ :sc=\E7:rc=\E8:ti=\E[2;0#w\E[1;25r:te=\E[!p\E[?7h\E[2;1;1#w:
+sanyo55|sanyo|sanyo mbc-55x pc compatible:\
+ :co#80:li#25:am:cl=\E[H\E[J:bs:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\
+ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:
+# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
+ST|atari st:\
+ :bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#25:nd=\EC:\
+ :pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:\
+ :do=\EB:\
+ :so=\Ep:se=\Eq:dl=\EM:al=\EL:am:
+# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode
+# From Paul M. Aoki, aoki@ucbvax.Berkeley.EDU
+uniterm|uniterm49|UniTerm VT200 emulator, 49 lines:\
+ :li#49:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H:\
+ :tc=vt200:
+# YTERM standard version 1.0. (gts 9-25-84)
+# Straight old ascii keyboard except function keys are Yale (e.g.,ASCII.KBD).
+# Only 80 tab columns (else yterm 1.1 bug). No :xn: in 1.0.
+# Cannot use termcap :sr=\EM: because vi will not work, too bad.
+# vi string is given so that yterm is reset each vi startup.
+yterm10|yterm 1.0 UCB ascii.kbd:\
+ :am:bs:cd=^K:ce=^]:cl=^L:cm=^^%r%+ %+ :co#80:EP:ho=^Y:li#24:nd=^\:pt:\
+ :rc=\E8:sc=\E7:so=\E[7m:se=\E[m:up=^_:us=\E[4m:ue=\E[m:\
+ :is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 for \EHYTERM 1.\EH0 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\
+ :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\
+ :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\
+ :vs=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY0 \EH \EH \EH \EH \EH \EH \EH \EH \EH\r:
+# YTERM varient version 1.1. (gts 9-13-84) Version 1.1 has :xn:.
+yterm11|yterm 1.1 UCB ascii.kbd:\
+ :xn:is=^O\E[7i\E[m\E[?7h\E[?3g\r\EHY1 for \EHYTERM 1.\EH1 with A\EHSCII.KBD\EH 9-13-84\EH \EH \EH \EH \EH\n:\
+ :tc=yterm10:
+# YTERM 1.0 varient no autowrap or tabs
+# X does not remember autowrap or tabs when T is deleted and restarted.
+yterm10nat|yterm 1.0 UCB ascii.kbd no autowrap or tabs:\
+ :am@:pt@:vs=^O\E[7i\E[m\E[?7l\E[?3g\rY2\r:\
+ :is=^O\E[7i\E[m\E[?7l\E[?3g\rY2 for YTERM 1.0 with ASCII.KBD 9-20-84 no autowrap or tabs\n:\
+ :tc=yterm10:
+# KERMIT standard all versions. (gts 9-25-84)
+# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
+kermit|standard kermit:\
+ :bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:ho=\EH:li#24:nd=\EC:up=\EA:\
+ :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\
+ :is=K0 Standard Kermit 9-25-84\n:
+kermitam|standard kermit plus am:\
+ :am:is=K1 Standard Kermit plus Automatic Margins\n:tc=kermit:
+# IBMPC Kermit 1.2. (gts 8-30-84)
+# Bugs :cd:ce: do not work except at beginning of line! :cl: does not work,
+# but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of line).
+pckermit|pckermit12|UCB IBMPC Kermit 1.2:\
+ :am:li#25:cd@:ce@:cl=\EH\EJ:\
+ :is=K2 UCB IBMPC Kermit 1.2 8-30-84\n:tc=kermit:
+# IBMPC Kermit 1.20 (gts 12-19-84)
+# Cannot use line 25, now acts funny like ansi special scrolling region.
+# Initialization must escape from that region by cursor position to line 24.
+# Cannot use character insert because 1.20 goes crazy if insert at col 80.
+# Does not use am: because autowrap mode lost when kermit dropped and restarted.
+pckermit120|UCB IBMPC Kermit 1.20:\
+ :al=\EL:am@:dc=\EN:dl=\EM:do=\EB:ei@:im@:li#24:pt:se=\Eq:so=\Ep:\
+ :is=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20 12-19-84\n:\
+ :vs=\EO\Eq\EEK3:tc=kermit:
+# MS-DOS Kermit 2.27 for the IBMPC (UCB gts 3-17-85)
+# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi.
+# Cannot use line 25, now acts funny like ansi special scrolling region.
+# Initialization must escape from that region by cursor position to line 24.
+# Does not use am: because autowrap mode lost when kermit dropped and restarted.
+# Reverse video for standout like H19.
+msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC:\
+ :al=\EL:am@:bs:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :co#80:\
+ :dc=\EN:dl=\EM:do=\EB:ei=\EO:im=\E@:\
+ :ho=\EH:li#24:nd=\EC:up=\EA:pt:rc=\Ek:sc=\Ej:se=\Eq:so=\Ep:\
+ :ku=^K:kd=^J:kl=^H:kr=^L:kh=^^:ma=^Hh\012j^Kk^Ll^^H:\
+ :is=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n:\
+ :vs=\EO\Eq\EG\EwK4:
+# MS-DOS Kermit 2.27 with automatic margins (UCB gts 3-17-85)
+msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins:\
+ :am:\
+ :is=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n:\
+ :vs=\EO\Eq\EG\EvK5:tc=mskermit227:
+# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC (UCB gts 3-17-85)
+# Automatic margins now default. Use ansi set graphic rendition for standout,
+# underline and ul codes (md,me,mr). Define function keys.
+msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC:\
+ :am:kn#10:\
+ :k0=\E0:k1=\E1:k2=\E2:k3=\E3:k4=\E4:k5=\E5:k6=\E6:k7=\E7:k8=\E8:k9=\E9:\
+ :md=\E[1m:me=\E[m:mr=\E[7m:se=\E[m:so=\E[1m:ue=\E[m:us=\E[4m:\
+ :is=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-17-85\n:\
+ :vs=\EO\Eq\EG\EvK6:tc=mskermit227:
+# From earle@smeagol.UUCP 29 Oct 85 05:40:18 GMT
+# MS-Kermit with Heath-19 emulation mode enabled
+h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin):\
+ :am@:ta@:pt@:xt:da:db:tc=h19-u:
+# Amiga termcap by Kent Polk, kent@swrinde.nde.swri.edu (30 May 90)
+# Added a few more entries, converted caret-type control sequence (^x) entries
+# to '\0xx' entries since a couple of people mentioned loosing '^x' sequences.
+#
+# :as, :ae Support for alternate character sets.
+# :ve=\E[\040p:vi=\E[\060\040p cursor visible/invisible.
+# :xn: vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept)
+# This one appears to fix a problem I always had with a line ending
+# at 'width+1' (I think) followed by a blank line in vi. The blank
+# line tended to disappear and reappear depending on how the screen
+# was refreshed. Note that this is probably needed only if you use
+# something like a Dnet Fterm with the window sized to some peculiar
+# dimension larger than 80 columns.
+# :k0=\E9~ map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;'
+# :F1-FA removed F11 through F20.
+amiga|Amiga ANSI:\
+ :co#80:li#24:am:bs:bw:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:\
+ :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:IC=\E[%d@:\
+ :ae=\017:al=\E[L:as=\016:bl=\007:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
+ :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ho=\E[H:ic=\E[@:is=\E[20l:\
+ :k1=\E0~:k2=\E1~:k3=\E2~:k4=\E3~:k5=\E4~:k6=\E5~:k7=\E6~:k8=\E7~:\
+ :k9=\E8~:k0=\E9~:kn#10:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=\E[D:\
+ :mb=\E[7;2m:md=\E[1m:me=\E[0m:mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:\
+ :rs=\Ec:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T:ue=\E[0m:up=\E[A:us=\E[4m:\
+ :vb=\007:ve=\E[\040p:vi=\E[\060\040p:xn:
+# The pcplot IBM-PC terminal emulation program is really messed up. It is
+# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly,
+# doesn't support scrolling regions, ignores add line commands, and ignores
+# delete line commands. Consequently, the resulting behavior looks like a
+# crude adm3a-type terminal.
+# Steve Jacobson 8/85
+pcplot:\
+ :cs@:sc@:rc@:xn@:tc=vt100:
+# From Joel Rubin, jmrubin@coral, a preliminary TERMCAP for VIDTEX,
+# a terminal program sold by Compuserve. Line and column numbers are
+# computer-dependent (I have a Commodore '64); you should use the meta-B
+# option to shut off clean-breaking of lines. No key codes included
+# since some of them are programmable and most are machine-specific.
+# Works on vi if you don't use clean-breaking. Very similar to the IBM 3101
+# termcap. Escape-D used for backspace because control-H is destructive
+# backspace. There seem to be a few weirdnesses (especially at the beginning
+# of a wrapped line), and the cursor does not, unfortunately, flash.
+vid|vidtex|Compuserve vidtex program:\
+ :am:bc=\ED:cl=^L:li#25:co#40:nd=\EC:up=\EA:cd=\EJ:ce=\EK:\
+ :ho=\EH:cm=\EY%+\40%+\40:pt:
+# Fortune from c160-3bp@Coral (Robert Nathanson) via tut Wed Oct 5, 1983
+fos|fortune|Fortune system:\
+ :is=^_..:li#25:co#80:am:bs:bw:cl=20^L:cd=3*^\Y:\
+ :ic=5^\Q:dc=5^\W:dl=15^\R:al=15^\E:cm=^\C%+ %+ :ta=^Z:ho=10^^:do=3^J:\
+ :up=3^K:bs=^H:kb=^H:kd=^Ay\r:kh=^A?\r:kl=^Aw\r:kr=^Az\r:ku=^Ax\r:\
+ :nl=5^J:so=^\H`:se=^\I`:sg=0:us=^\HP:ue=^\IP:ug=0:ce=^\Z:rv=\EH:re=\EI:\
+ :rg=0:GS=\Eo:GE=^O:GG=0:GV=-:GH=&:GU=%:GD=#:G1=(:G2= :G3=":G4=*:CF=\E]:\
+ :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\
+ :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:PU=^An\r:PD=^Ao\r:\
+ :PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F:
+# basis from Peter Harrison, Computer Graphics Lab, San Francisco
+# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA
+basis|BASIS108 computer with terminal translation table active:\
+ :do=5000^J:nl=5000*^J:\
+ :cd=\EY:ce=\ET:cl=300\E*:ma=^K^P^R^L^L :\
+ :kb=^H:kl=^H:ku=^K:kr=^L:kd=^J:so=\E(:se=\E):tc=adm3a:
+# From Peter Harrison, Computer Graphics Lab, San Francisco
+# ucbvax!ucsfmis!harrison .....uucp
+# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA
+# "These two work. If you don't have the inverse video chip for the
+# Apple with videx then remove the so and se fields."
+DaleApple|Apple with videx videoterm 80 column board with inverse video:\
+ :do=^J:am:le=^H:bs:cd=^K:ce=^]:cl=300^L:cm=^^%r%+ %+ :co#80:ho=^Y:\
+ :kd=^J:kl=^H:kr=^U:kh=^Y:\
+ :li#24:nd=^\:pt:so=^Z3:se=^Z2:up=^_:xn:
+ibmaed|IBM Experimental display:\
+ :al=\EN:am:bs:cd=\EJ:ce=\EI:cl=\EH\EK:cm=\EY%+\40%+\40:co#80:\
+ :dc=\EQ:dl=\EO:do=\EB:ho=\EH:ic=\EP:li#52:\
+ :nd=\EC:ms:so=\E0:se=\E0:us=:ue=:up=\EA:\
+ :kb=^h:ku=\EA:kd=\EB:kl=\ED:kr=\EC:eo:vb=\EG:pt:
+# funny terminal that the TANDEM uses.
+653|t653x|Tandem 653x multipage terminal:\
+ :li#24:co#80:ho=\EH:cm=\023%+ %+ :cl=\EI:cd=\EJ:ce=\EK:am:bs:\
+ :if=/usr/share/tabset/tandem653:sb=\ES:sr=\ET:da:db:so=\E6$:se=\E6 :\
+ :us=\E60:ue=\E6 :sg#1:ug#1:up=\EA:do=\012:le=\010:nd=\EC:\
+ :hs:ts=\Eo:fs=\r:ds=\Eo\r:ws#64:
+# From Paul Leondis, unllab@amber.berkeley.edu
+ifmr|Informer D304:\
+ :am:bs:cd=\E/:ce=\EQ:cl=\EZ:cm=\EY%r%+ %+ :co#80:dc=\E\\:\
+ :do=^J:ic=\E[:li#24:nd=\EC:so=\EJ:se=\EK:up=\EA:\
+ :sr=\En:ho=\EH:
+# From Christian Weisgerber, naddy@mips.inka.de, a TERMCAP entry
+# for Linux consoles.
+linux|Linux Console:\
+ :am:eo:mi:ms:xn:xo:\
+ :co#80:it#8:li#25:\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:K2=\E[G:\
+ :ae=\E[10m:al=\E[L:as=\E[11m:bl=^G:cd=\E[J:ce=\E[K:\
+ :cl=\E[H\E[J:cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:\
+ :ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:ho=\E[H:\
+ :im=\E[4h:k1=\E[[A:k2=\E[[B:k3=\E[[C:k4=\E[[D:k5=\E[[E:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:\
+ :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\E[B:kh=\E[1~:kH=\E[4~:@7=\E[4~:*6=\E[4~:\
+ :kl=\E[D:kr=\E[C:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[0;10m:mh=\E[2m:mr=\E[7m:nd=\E[C:nw=^M^J:rc=\E8:\
+ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :ue=\E[24m:up=\E[A:us=\E[4m:vb=200\E[?5h\E[?5l:\
+ :ve=\E[?25h:vi=\E[?25l:
+linux-m|Linux Console no color:\
+ :pa@:Co@:AF@:AB@:op@:\
+ :tc=linux:
+cygwin:\
+ :xn@:op=\E[39;49m:Km=\E[M:tc=linux:
+# Multilingual Sysinstall (kon2 console)
+# HOSOKAWA, Tatsumi (hosokawa@FreeBSD.org)
+kons25x|kons25-euc:\
+ :ac=q\207x\214m\205v\212j\202t\210n\206u\211l\204w\213k\203y\053z\053f\336~\245a\043h\043`^D.v-\136I^U0\215:\
+ :ve=\E[25h:vi=\E[25l:\
+ :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\
+ :k9=\E[U:k;=\E[V:F1=\E[W:F2=\E[X:K2=\E[E:\
+ :kN=\E[G:kP=\E[I:\
+ :tc=linux:
+kons25x-m|kons25-euc-mono:\
+ :pa@:Co@:Sf@:Sb@:op@:us=\E[4m:ue=\E[m:md@:mh@:tc=kons25x:
+
+# Termcap for Top Gun Telnet and SSH on the Palm Pilot.
+# http://www.ai/~iang/TGssh/
+pilot|tgtelnet:am:xn:bs:co#39:li#16:cl=\Ec:cm=\Em%+ %+ :ho=\Em :nw=\Em~ :\
+ :so=\Eb:se=\EB:bl=^g:cr=^m:do=^j:le=^h:kP=^k:kN=^l:
+
+# Termcap entry for rxvt, taken from the sources of rxvt-2.6.3
+# with additional @7 capability to make END work correctly.
+# From Giorgos Keramidas <charon@labs.gr>
+# Fix alternate character set capabilities (ae, as) -- nectar@freebsd.org
+rxvt-mono|rxvt terminal emulator (monochrome) (X Window System):\
+ :am:eo:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=\E(B:al=\E[L:as=\E(0:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=^J:ei=\E[4l:\
+ :ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:im=\E[4h:\
+ :is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+ :k0=\E[21~:k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:\
+ :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:\
+ :kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=\E>:\
+ :kh=\E[7~:@7=\E[8~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m:\
+ :md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7:\
+ :se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :te=\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:us=\E[4m:\
+ :vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:vs=\E[?25h:
+
+rxvt|rxvt terminal emulator (X Window System):\
+ :pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:tc=rxvt-mono:
+
+# Termcap entry for Eterm, taken from the sources of Eterm-0.9.2
+Eterm|Eterm Terminal Emulator (X11 Window System):\
+ :am:bw:eo:km:mi:ms:xn:xo:\
+ :co#80:it#8:li#24:lm#0:pa#64:Co#8:AF=\E[3%dm:AB=\E[4%dm:op=\E[39m\E[49m:\
+ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
+ :K1=\E[7~:K2=\EOu:K3=\E[5~:K4=\E[8~:K5=\E[6~:LE=\E[%dD:\
+ :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:bl=^G:cd=\E[J:\
+ :ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cr=^M:\
+ :cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:dl=\E[M:do=\E[B:\
+ :ec=\E[%dX:ei=\E[4l:ho=\E[H:i1=\E[?47l\E>\E[?1l:ic=\E[@:\
+ :im=\E[4h:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l:\
+ :k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~:\
+ :k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~:\
+ :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=^H:kd=\E[B:ke=:kh=\E[7~:\
+ :kl=\E[D:kr=\E[C:ks=:ku=\E[A:le=^H:mb=\E[5m:md=\E[1m:\
+ :me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:\
+ :sc=\E7:se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:\
+ :te=\E[2J\E[?47l\E8:ti=\E7\E[?47h:ue=\E[24m:up=\E[A:\
+ :us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l:\
+ :ac=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:
+
+#
+# END OF TERMCAP
+# ------------------------
diff --git a/share/timedef/Makefile b/share/timedef/Makefile
new file mode 100644
index 0000000..12a2e4b
--- /dev/null
+++ b/share/timedef/Makefile
@@ -0,0 +1,153 @@
+# $FreeBSD$
+
+LOCALES= am_ET.UTF-8 \
+ be_BY.CP1131 \
+ be_BY.CP1251 \
+ be_BY.ISO8859-5 \
+ be_BY.UTF-8 \
+ bg_BG.CP1251 \
+ bg_BG.UTF-8 \
+ ca_ES.ISO8859-1 \
+ ca_ES.UTF-8 \
+ cs_CZ.ISO8859-2 \
+ cs_CZ.UTF-8 \
+ da_DK.ISO8859-1 \
+ da_DK.UTF-8 \
+ de_AT.ISO8859-1 \
+ de_AT.UTF-8 \
+ de_DE.ISO8859-1 \
+ de_DE.UTF-8 \
+ el_GR.ISO8859-7 \
+ el_GR.UTF-8 \
+ en_GB.ISO8859-1 \
+ en_US.ISO8859-1 \
+ es_ES.ISO8859-1 \
+ es_ES.UTF-8 \
+ et_EE.ISO8859-15 \
+ et_EE.UTF-8 \
+ eu_ES.ISO8859-1 \
+ fi_FI.ISO8859-1 \
+ fi_FI.UTF-8 \
+ fr_FR.ISO8859-1 \
+ fr_FR.UTF-8 \
+ he_IL.UTF-8 \
+ hi_IN.ISCII-DEV \
+ hr_HR.ISO8859-2 \
+ hr_HR.UTF-8 \
+ hu_HU.ISO8859-2 \
+ hu_HU.UTF-8 \
+ hy_AM.ARMSCII-8 \
+ hy_AM.UTF-8 \
+ is_IS.ISO8859-1 \
+ is_IS.UTF-8 \
+ ja_JP.eucJP \
+ ja_JP.SJIS \
+ ja_JP.UTF-8 \
+ it_IT.ISO8859-1 \
+ it_IT.UTF-8 \
+ kk_KZ.PT154 \
+ kk_KZ.UTF-8 \
+ ko_KR.eucKR \
+ ko_KR.UTF-8 \
+ la_LN.ISO8859-1 \
+ lt_LT.ISO8859-4 \
+ lt_LT.ISO8859-13 \
+ lt_LT.UTF-8 \
+ mn_MN.UTF-8 \
+ nb_NO.ISO8859-1 \
+ nb_NO.UTF-8 \
+ nl_NL.ISO8859-1 \
+ nn_NO.ISO8859-1 \
+ nn_NO.UTF-8 \
+ pl_PL.ISO8859-2 \
+ pl_PL.UTF-8 \
+ pt_BR.ISO8859-1 \
+ pt_BR.UTF-8 \
+ pt_PT.ISO8859-1 \
+ pt_PT.UTF-8 \
+ ro_RO.ISO8859-2 \
+ ro_RO.UTF-8 \
+ ru_RU.CP1251 \
+ ru_RU.CP866 \
+ ru_RU.ISO8859-5 \
+ ru_RU.KOI8-R \
+ ru_RU.UTF-8 \
+ sk_SK.ISO8859-2 \
+ sk_SK.UTF-8 \
+ sl_SI.ISO8859-2 \
+ sl_SI.UTF-8 \
+ sr_YU.ISO8859-2 \
+ sr_YU.ISO8859-5 \
+ sr_YU.UTF-8 \
+ sv_SE.ISO8859-1 \
+ sv_SE.UTF-8 \
+ tr_TR.ISO8859-9 \
+ tr_TR.UTF-8 \
+ uk_UA.CP1251 \
+ uk_UA.ISO8859-5 \
+ uk_UA.KOI8-U \
+ uk_UA.UTF-8 \
+ zh_CN.eucCN \
+ zh_CN.GB18030 \
+ zh_CN.GB2312 \
+ zh_CN.UTF-8 \
+ zh_TW.Big5 \
+ zh_TW.UTF-8
+
+LOCALEDIR= /usr/share/locale
+
+.SUFFIXES: .src .out
+
+.src.out:
+ grep -v '^#' < ${.IMPSRC} > ${.TARGET}
+
+FILES= ${LOCALES:S/$/.out/}
+FILESNAME= LC_TIME
+
+.for locale in ${LOCALES}
+FILESDIR_${locale}.out= ${LOCALEDIR}/${locale}
+.endfor
+
+CLEANFILES= ${FILES}
+
+ENCODINGS= Big5HKSCS CP949 eucKR GB2312 GBK \
+ ISO8859-1 ISO8859-2 ISO8859-4 ISO8859-15 \
+ US-ASCII UTF-8
+
+DE_LINKS= de_DE:de_CH
+FR_LINKS= fr_FR:fr_BE fr_FR:fr_CA fr_FR:fr_CH
+IT_LINKS= it_IT:it_CH
+NL_LINKS= nl_NL:nl_BE
+NO_LINKS= nb_NO:no_NO
+GB_LINKS= en_GB:en_AU en_GB:en_CA en_GB:en_NZ
+
+eucKR_CP949= ko_KR
+GB2312_GBK= zh_CN
+ISO8859-1_ISO8859-1= ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} ${IT_LINKS} \
+ ${NL_LINKS} ${NO_LINKS} en_US:af_ZA
+ISO8859-1_ISO8859-15= ca_ES da_DK de_AT de_DE en_GB en_US es_ES eu_ES \
+ fi_FI fr_FR is_IS it_IT la_LN nl_NL nn_NO no_NO pt_PT \
+ sv_SE \
+ ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} ${IT_LINKS} ${NL_LINKS} \
+ ${NO_LINKS}
+ISO8859-1_US-ASCII= ${GB_LINKS} en_GB en_US la_LN
+ISO8859-1_ISO8859-2= la_LN
+ISO8859-1_ISO8859-4= la_LN
+ISO8859-1_UTF-8= en_GB en_US eu_ES nl_NL
+ISO8859-15_ISO8859-15= en_US:af_ZA
+UTF-8_Big5HKSCS= zh_TW:zh_HK
+UTF-8_UTF-8= ${DE_LINKS} ${FR_LINKS} ${GB_LINKS} ${IT_LINKS} ${NL_LINKS} \
+ ${NO_LINKS} \
+ en_GB:en_IE en_US:af_ZA zh_TW:zh_HK
+
+SYMLINKS=
+.for enc1 in ${ENCODINGS}
+.for enc2 in ${ENCODINGS}
+.for lang_terr in ${${enc1}_${enc2}}
+SYMLINKS+= ../${lang_terr:C/:.*$//}.${enc1}/${FILESNAME} \
+ ${LOCALEDIR}/${lang_terr:C/^.*://}.${enc2}
+.endfor
+.endfor
+.endfor
+
+.include <bsd.prog.mk>
diff --git a/share/timedef/am_ET.UTF-8.src b/share/timedef/am_ET.UTF-8.src
new file mode 100644
index 0000000..8b58e9a
--- /dev/null
+++ b/share/timedef/am_ET.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ጃንዩ
+áŒá‰¥áˆ©
+ማርች
+ኤá•áˆ¨
+ሜይ
+áŒáŠ•
+áŒáˆ‹á‹­
+ኦገስ
+ሴá•á‰´
+ኦክቶ
+ኖቬáˆ
+ዲሴáˆ
+#
+# Long month names
+#
+ጃንዩወሪ
+áŒá‰¥áˆ©á‹ˆáˆª
+ማርች
+ኤá•áˆ¨áˆ
+ሜይ
+áŒáŠ•
+áŒáˆ‹á‹­
+ኦገስት
+ሴá•á‰´áˆá‰ áˆ­
+ኦክቶበር
+ኖቬáˆá‰ áˆ­
+ዲሴáˆá‰ áˆ­
+#
+# Short weekday names
+#
+እሑድ
+ሰኞ
+ማክሰ
+ረቡዕ
+áˆáˆ™áˆµ
+ዓርብ
+ቅዳሜ
+#
+# Long weekday names
+#
+እሑድ
+ሰኞ
+ማክሰኞ
+ረቡዕ
+áˆáˆ™áˆµ
+ዓርብ
+ቅዳሜ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %b %e %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%a %b %e %X %Z %Y
+#
+# Long month names (without case ending)
+#
+ጃንዩወሪ
+áŒá‰¥áˆ©á‹ˆáˆª
+ማርች
+ኤá•áˆ¨áˆ
+ሜይ
+áŒáŠ•
+áŒáˆ‹á‹­
+ኦገስት
+ሴá•á‰´áˆá‰ áˆ­
+ኦክቶበር
+ኖቬáˆá‰ áˆ­
+ዲሴáˆá‰ áˆ­
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/be_BY.CP1131.src b/share/timedef/be_BY.CP1131.src
new file mode 100644
index 0000000..ce1d1d6
--- /dev/null
+++ b/share/timedef/be_BY.CP1131.src
@@ -0,0 +1,100 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+áâã
+«îâ
+á ª
+ªà 
+âà 
+çíà
+«ù¯
+¦­ù
+¢¥à
+ª á
+«ùá
+á­¥
+#
+# Long month names (as in a date)
+#
+áâ㤧¥­ï
+«îâ £ 
+á ª ¢ùª 
+ªà á ¢ùª 
+âà ÷­ï
+çíࢥ­ï
+«ù¯¥­ï
+¦­ù÷­ï
+¢¥à á­ï
+ª áâàëç­ùª 
+«ùáâ ¯ ¤ 
+á­¥¦­ï
+#
+# Short weekday names
+# (padded with a space to conform with other languages)
+­¤
+¯­
+ ÷
+áà
+çæ
+¯â
+á¡
+#
+# Long weekday names
+#
+­ï¤§¥«ï
+¯ ­ï¤§¥« ª
+ ÷â®à ª
+á¥à ¤ 
+ç æ¢¥à
+¯ïâ­ùæ 
+áã¡®â 
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+áâ㤧¥­ì
+«îâë
+á ª ¢ùª
+ªà á ¢ùª
+âà ¢¥­ì
+çíࢥ­ì
+«ù¯¥­ì
+¦­ù¢¥­ì
+¢¥à á¥­ì
+ª áâàëç­ùª
+«ùáâ ¯ ¤
+á­¥¦ ­ì
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/be_BY.CP1251.src b/share/timedef/be_BY.CP1251.src
new file mode 100644
index 0000000..7871e0b
--- /dev/null
+++ b/share/timedef/be_BY.CP1251.src
@@ -0,0 +1,100 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ñòó
+ëþò
+ñàê
+êðà
+òðà
+÷ýð
+ë³ï
+æí³
+âåð
+êàñ
+ë³ñ
+ñíå
+#
+# Long month names (as in a date)
+#
+ñòóäçåíÿ
+ëþòàãà
+ñàêàâ³êà
+êðàñàâ³êà
+òðà¢íÿ
+÷ýðâåíÿ
+ë³ïåíÿ
+æí³¢íÿ
+âåðàñíÿ
+êàñòðû÷í³êà
+ë³ñòàïàäà
+ñíåæíÿ
+#
+# Short weekday names
+# (padded with a space to conform with other languages)
+íä
+ïí
+à¢
+ñð
+÷ö
+ïò
+ñá
+#
+# Long weekday names
+#
+íÿäçåëÿ
+ïàíÿäçåëàê
+à¢òîðàê
+ñåðàäà
+÷àöâåð
+ïÿòí³öà
+ñóáîòà
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+ñòóäçåíü
+ëþòû
+ñàêàâ³ê
+êðàñàâ³ê
+òðàâåíü
+÷ýðâåíü
+ë³ïåíü
+æí³âåíü
+âåðàñåíü
+êàñòðû÷í³ê
+ë³ñòàïàä
+ñíåæàíü
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/be_BY.ISO8859-5.src b/share/timedef/be_BY.ISO8859-5.src
new file mode 100644
index 0000000..85db2ac
--- /dev/null
+++ b/share/timedef/be_BY.ISO8859-5.src
@@ -0,0 +1,100 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+áâã
+Ûîâ
+áÐÚ
+ÚàÐ
+âàÐ
+çíà
+Ûöß
+ÖÝö
+ÒÕà
+ÚÐá
+Ûöá
+áÝÕ
+#
+# Long month names (as in a date)
+#
+áâãÔ×ÕÝï
+ÛîâÐÓÐ
+áÐÚÐÒöÚÐ
+ÚàÐáÐÒöÚÐ
+âàÐþÝï
+çíàÒÕÝï
+ÛößÕÝï
+ÖÝöþÝï
+ÒÕàÐáÝï
+ÚÐáâàëçÝöÚÐ
+ÛöáâÐßÐÔÐ
+áÝÕÖÝï
+#
+# Short weekday names
+# (padded with a space to conform with other languages)
+ÝÔ
+ßÝ
+Ðþ
+áà
+çæ
+ßâ
+áÑ
+#
+# Long weekday names
+#
+ÝïÔ×ÕÛï
+ßÐÝïÔ×ÕÛÐÚ
+ÐþâÞàÐÚ
+áÕàÐÔÐ
+çÐæÒÕà
+ßïâÝöæÐ
+áãÑÞâÐ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+áâãÔ×ÕÝì
+Ûîâë
+áÐÚÐÒöÚ
+ÚàÐáÐÒöÚ
+âàÐÒÕÝì
+çíàÒÕÝì
+ÛößÕÝì
+ÖÝöÒÕÝì
+ÒÕàÐáÕÝì
+ÚÐáâàëçÝöÚ
+ÛöáâÐßÐÔ
+áÝÕÖÐÝì
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/be_BY.UTF-8.src b/share/timedef/be_BY.UTF-8.src
new file mode 100644
index 0000000..958fd23
--- /dev/null
+++ b/share/timedef/be_BY.UTF-8.src
@@ -0,0 +1,100 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ñту
+лют
+Ñак
+кра
+тра
+чÑÑ€
+ліп
+жні
+вер
+каÑ
+ліÑ
+Ñне
+#
+# Long month names (as in a date)
+#
+ÑтудзенÑ
+лютага
+Ñакавіка
+краÑавіка
+траўнÑ
+чÑрвенÑ
+ліпенÑ
+жніўнÑ
+вераÑнÑ
+каÑтрычніка
+ліÑтапада
+ÑнежнÑ
+#
+# Short weekday names
+# (padded with a space to conform with other languages)
+нд
+пн
+аў
+ÑÑ€
+чц
+пт
+Ñб
+#
+# Long weekday names
+#
+нÑдзелÑ
+панÑдзелак
+аўторак
+Ñерада
+чацвер
+пÑтніца
+Ñубота
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Ñтудзень
+люты
+Ñакавік
+краÑавік
+травень
+чÑрвень
+ліпень
+жнівень
+вераÑень
+каÑтрычнік
+ліÑтапад
+Ñнежань
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/bg_BG.CP1251.src b/share/timedef/bg_BG.CP1251.src
new file mode 100644
index 0000000..2164aed
--- /dev/null
+++ b/share/timedef/bg_BG.CP1251.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ßíó
+Ôåâ
+Ìàð
+Àïð
+Ìàé
+Þíè
+Þëè
+Àâã
+Ñåï
+Îêò
+Íîâ
+Äåê
+#
+# Long month names (as in a date)
+#
+ßíóàðè
+Ôåâðóàðè
+Ìàðò
+Àïðèë
+Ìàé
+Þíè
+Þëè
+Àâãóñò
+Ñåïòåìâðè
+Îêòîìâðè
+Íîåìâðè
+Äåêåìâðè
+#
+# Short weekday names
+# (padded with a space to conform with other languages)
+Íä
+Ïí
+Âò
+Ñð
+×ò
+Ïò
+Ñá
+#
+# Long weekday names
+#
+Íåäåëÿ
+Ïîíåäåëíèê
+Âòîðíèê
+Ñðÿäà
+×åòâúðòúê
+Ïåòúê
+Ñúáîòà
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+ßíóàðè
+Ôåâðóàðè
+Ìàðò
+Àïðèë
+Ìàé
+Þíè
+Þëè
+Àâãóñò
+Ñåïòåìâðè
+Îêòîìâðè
+Íîåìâðè
+Äåêåìâðè
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/bg_BG.UTF-8.src b/share/timedef/bg_BG.UTF-8.src
new file mode 100644
index 0000000..5231ef9
--- /dev/null
+++ b/share/timedef/bg_BG.UTF-8.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Яну
+Фев
+Мар
+Ðпр
+Май
+Юни
+Юли
+Ðвг
+Сеп
+Окт
+Ðов
+Дек
+#
+# Long month names (as in a date)
+#
+Януари
+Февруари
+Март
+Ðприл
+Май
+Юни
+Юли
+ÐвгуÑÑ‚
+Септември
+Октомври
+Ðоември
+Декември
+#
+# Short weekday names
+# (padded with a space to conform with other languages)
+Ðд
+Пн
+Ð’Ñ‚
+Ср
+Чт
+Пт
+Сб
+#
+# Long weekday names
+#
+ÐеделÑ
+Понеделник
+Вторник
+СрÑда
+Четвъртък
+Петък
+Събота
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Януари
+Февруари
+Март
+Ðприл
+Май
+Юни
+Юли
+ÐвгуÑÑ‚
+Септември
+Октомври
+Ðоември
+Декември
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ca_ES.ISO8859-1.src b/share/timedef/ca_ES.ISO8859-1.src
new file mode 100644
index 0000000..4bfc990
--- /dev/null
+++ b/share/timedef/ca_ES.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+gen
+feb
+mar
+abr
+mai
+jun
+jul
+ago
+set
+oct
+nov
+des
+#
+# Long month names (as in a date)
+#
+gener
+febrer
+març
+abril
+maig
+juny
+juliol
+agost
+setembre
+octubre
+novembre
+desembre
+#
+# Short weekday names
+#
+diu
+dil
+dim
+dmc
+dij
+div
+dis
+#
+# Long weekday names
+#
+diumenge
+dilluns
+dimarts
+dimecres
+dijous
+divendres
+dissabte
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%A, %e de %B de %Y, %X %Z
+#
+# Long month names (without case ending)
+#
+gener
+febrer
+març
+abril
+maig
+juny
+juliol
+agost
+setembre
+octubre
+novembre
+desembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ca_ES.UTF-8.src b/share/timedef/ca_ES.UTF-8.src
new file mode 100644
index 0000000..70f0243
--- /dev/null
+++ b/share/timedef/ca_ES.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+gen
+feb
+mar
+abr
+mai
+jun
+jul
+ago
+set
+oct
+nov
+des
+#
+# Long month names (as in a date)
+#
+gener
+febrer
+març
+abril
+maig
+juny
+juliol
+agost
+setembre
+octubre
+novembre
+desembre
+#
+# Short weekday names
+#
+diu
+dil
+dim
+dmc
+dij
+div
+dis
+#
+# Long weekday names
+#
+diumenge
+dilluns
+dimarts
+dimecres
+dijous
+divendres
+dissabte
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%A, %e de %B de %Y, %X %Z
+#
+# Long month names (without case ending)
+#
+gener
+febrer
+març
+abril
+maig
+juny
+juliol
+agost
+setembre
+octubre
+novembre
+desembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/cs_CZ.ISO8859-2.src b/share/timedef/cs_CZ.ISO8859-2.src
new file mode 100644
index 0000000..8502b16
--- /dev/null
+++ b/share/timedef/cs_CZ.ISO8859-2.src
@@ -0,0 +1,105 @@
+# Czech month and day names
+# by Rudolf Cejka <cejkar@dcse.fee.vutbr.cz>
+#
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+led
+úno
+bøe
+dub
+kvì
+èrv
+èvc
+srp
+záø
+øíj
+lis
+pro
+#
+# Long month names (as in a date)
+#
+ledna
+února
+bøezna
+dubna
+kvìtna
+èervna
+èervence
+srpna
+záøí
+øíjna
+listopadu
+prosince
+#
+# Short weekday names
+#
+ne
+po
+út
+st
+èt
+pá
+so
+#
+# Long weekday names
+#
+nedìle
+pondìlí
+úterý
+støeda
+ètvrtek
+pátek
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+dp
+#
+# pm
+#
+od
+#
+# date_fmt
+#
+%a %e. %B %Y %X %Z
+#
+# Long month names (without case ending)
+#
+leden
+únor
+bøezen
+duben
+kvìten
+èerven
+èervenec
+srpen
+záøí
+øíjen
+listopad
+prosinec
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/cs_CZ.UTF-8.src b/share/timedef/cs_CZ.UTF-8.src
new file mode 100644
index 0000000..df5db0f
--- /dev/null
+++ b/share/timedef/cs_CZ.UTF-8.src
@@ -0,0 +1,105 @@
+# Czech month and day names
+# by Rudolf Cejka <cejkar@dcse.fee.vutbr.cz>
+#
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+led
+úno
+bře
+dub
+kvÄ›
+Ärv
+Ävc
+srp
+zář
+říj
+lis
+pro
+#
+# Long month names (as in a date)
+#
+ledna
+února
+března
+dubna
+května
+Äervna
+Äervence
+srpna
+září
+října
+listopadu
+prosince
+#
+# Short weekday names
+#
+ne
+po
+út
+st
+Ät
+pá
+so
+#
+# Long weekday names
+#
+neděle
+pondělí
+úterý
+středa
+Ätvrtek
+pátek
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+dp
+#
+# pm
+#
+od
+#
+# date_fmt
+#
+%a %e. %B %Y %X %Z
+#
+# Long month names (without case ending)
+#
+leden
+únor
+březen
+duben
+květen
+Äerven
+Äervenec
+srpen
+září
+říjen
+listopad
+prosinec
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/da_DK.ISO8859-1.src b/share/timedef/da_DK.ISO8859-1.src
new file mode 100644
index 0000000..cfafbaa
--- /dev/null
+++ b/share/timedef/da_DK.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+maj
+jun
+jul
+aug
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+januar
+februar
+marts
+april
+maj
+juni
+juli
+august
+september
+oktober
+november
+december
+#
+# Short weekday names
+#
+søn
+man
+tir
+ons
+tor
+fre
+lør
+#
+# Long weekday names
+#
+søndag
+mandag
+tirsdag
+onsdag
+torsdag
+fredag
+lørdag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+marts
+april
+maj
+juni
+juli
+august
+september
+oktober
+november
+december
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/da_DK.UTF-8.src b/share/timedef/da_DK.UTF-8.src
new file mode 100644
index 0000000..d62f180
--- /dev/null
+++ b/share/timedef/da_DK.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+maj
+jun
+jul
+aug
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+januar
+februar
+marts
+april
+maj
+juni
+juli
+august
+september
+oktober
+november
+december
+#
+# Short weekday names
+#
+søn
+man
+tir
+ons
+tor
+fre
+lør
+#
+# Long weekday names
+#
+søndag
+mandag
+tirsdag
+onsdag
+torsdag
+fredag
+lørdag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+marts
+april
+maj
+juni
+juli
+august
+september
+oktober
+november
+december
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/de_AT.ISO8859-1.src b/share/timedef/de_AT.ISO8859-1.src
new file mode 100644
index 0000000..54b2f84
--- /dev/null
+++ b/share/timedef/de_AT.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mär
+Apr
+Mai
+Jun
+Jul
+Aug
+Sep
+Okt
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Jänner
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# Short weekday names
+#
+So
+Mo
+Di
+Mi
+Do
+Fr
+Sa
+#
+# Long weekday names
+#
+Sonntag
+Montag
+Dienstag
+Mittwoch
+Donnerstag
+Freitag
+Samstag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Jänner
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/de_AT.UTF-8.src b/share/timedef/de_AT.UTF-8.src
new file mode 100644
index 0000000..0dbecc4
--- /dev/null
+++ b/share/timedef/de_AT.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mär
+Apr
+Mai
+Jun
+Jul
+Aug
+Sep
+Okt
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Jänner
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# Short weekday names
+#
+So
+Mo
+Di
+Mi
+Do
+Fr
+Sa
+#
+# Long weekday names
+#
+Sonntag
+Montag
+Dienstag
+Mittwoch
+Donnerstag
+Freitag
+Samstag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Jänner
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/de_DE.ISO8859-1.src b/share/timedef/de_DE.ISO8859-1.src
new file mode 100644
index 0000000..216ca94
--- /dev/null
+++ b/share/timedef/de_DE.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mär
+Apr
+Mai
+Jun
+Jul
+Aug
+Sep
+Okt
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Januar
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# Short weekday names
+#
+So
+Mo
+Di
+Mi
+Do
+Fr
+Sa
+#
+# Long weekday names
+#
+Sonntag
+Montag
+Dienstag
+Mittwoch
+Donnerstag
+Freitag
+Samstag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Januar
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/de_DE.UTF-8.src b/share/timedef/de_DE.UTF-8.src
new file mode 100644
index 0000000..17dafe5
--- /dev/null
+++ b/share/timedef/de_DE.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mär
+Apr
+Mai
+Jun
+Jul
+Aug
+Sep
+Okt
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Januar
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# Short weekday names
+#
+So
+Mo
+Di
+Mi
+Do
+Fr
+Sa
+#
+# Long weekday names
+#
+Sonntag
+Montag
+Dienstag
+Mittwoch
+Donnerstag
+Freitag
+Samstag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Januar
+Februar
+März
+April
+Mai
+Juni
+Juli
+August
+September
+Oktober
+November
+Dezember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/el_GR.ISO8859-7.src b/share/timedef/el_GR.ISO8859-7.src
new file mode 100644
index 0000000..4eb71d7
--- /dev/null
+++ b/share/timedef/el_GR.ISO8859-7.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Éáí
+Öåâ
+Ìáñ
+Áðñ
+Ìáú
+Éïí
+Éïë
+Áõã
+Óåð
+Ïêô
+Íïå
+Äåê
+#
+# Long month names (as in a date)
+#
+Éáíïõáñßïõ
+Öåâñïõáñßïõ
+Ìáñôßïõ
+Áðñéëßïõ
+ÌáÀïõ
+Éïõíßïõ
+Éïõëßïõ
+Áõãïýóôïõ
+Óåðôåìâñßïõ
+Ïêôùâñßïõ
+Íïåìâñßïõ
+Äåêåìâñßïõ
+#
+# Short weekday names
+#
+Êõñ
+Äåõ
+Ôñé
+Ôåô
+Ðåì
+Ðáñ
+Óáâ
+#
+# Long weekday names
+#
+ÊõñéáêÞ
+ÄåõôÝñá
+Ôñßôç
+ÔåôÜñôç
+ÐÝìðôç
+ÐáñáóêåõÞ
+ÓÜââáôï
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+ðì
+#
+# pm
+#
+ìì
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+ÉáíïõÜñéïò
+ÖåâñïõÜñéïò
+ÌÜñôéïò
+Áðñßëéïò
+ÌÜúïò
+Éïýíéïò
+Éïýëéïò
+Áýãïõóôïò
+ÓåðôÝìâñéïò
+Ïêôþâñéïò
+ÍïÝìâñéïò
+ÄåêÝìâñéïò
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/el_GR.UTF-8.src b/share/timedef/el_GR.UTF-8.src
new file mode 100644
index 0000000..ab3824b
--- /dev/null
+++ b/share/timedef/el_GR.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ιαν
+Φεβ
+ΜαÏ
+ΑπÏ
+Μαϊ
+Ιον
+Ιολ
+Αυγ
+Σεπ
+Οκτ
+Îοε
+Δεκ
+#
+# Long month names (as in a date)
+#
+ΙανουαÏίου
+ΦεβÏουαÏίου
+ΜαÏτίου
+ΑπÏιλίου
+ΜαÎου
+Ιουνίου
+Ιουλίου
+ΑυγοÏστου
+ΣεπτεμβÏίου
+ΟκτωβÏίου
+ÎοεμβÏίου
+ΔεκεμβÏίου
+#
+# Short weekday names
+#
+ΚυÏ
+Δευ
+ΤÏι
+Τετ
+Πεμ
+ΠαÏ
+Σαβ
+#
+# Long weekday names
+#
+ΚυÏιακή
+ΔευτέÏα
+ΤÏίτη
+ΤετάÏτη
+Πέμπτη
+ΠαÏασκευή
+Σάββατο
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+πμ
+#
+# pm
+#
+μμ
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+ΙανουάÏιος
+ΦεβÏουάÏιος
+ΜάÏτιος
+ΑπÏίλιος
+Μάϊος
+ΙοÏνιος
+ΙοÏλιος
+ΑÏγουστος
+ΣεπτέμβÏιος
+ΟκτώβÏιος
+ÎοέμβÏιος
+ΔεκέμβÏιος
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/en_GB.ISO8859-1.src b/share/timedef/en_GB.ISO8859-1.src
new file mode 100644
index 0000000..decc266
--- /dev/null
+++ b/share/timedef/en_GB.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mar
+Apr
+May
+Jun
+Jul
+Aug
+Sep
+Oct
+Nov
+Dec
+#
+# Long month names (as in a date)
+#
+January
+February
+March
+April
+May
+June
+July
+August
+September
+October
+November
+December
+#
+# Short weekday names
+#
+Sun
+Mon
+Tue
+Wed
+Thu
+Fri
+Sat
+#
+# Long weekday names
+#
+Sunday
+Monday
+Tuesday
+Wednesday
+Thursday
+Friday
+Saturday
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+January
+February
+March
+April
+May
+June
+July
+August
+September
+October
+November
+December
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/en_US.ISO8859-1.src b/share/timedef/en_US.ISO8859-1.src
new file mode 100644
index 0000000..75019c2
--- /dev/null
+++ b/share/timedef/en_US.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mar
+Apr
+May
+Jun
+Jul
+Aug
+Sep
+Oct
+Nov
+Dec
+#
+# Long month names (as in a date)
+#
+January
+February
+March
+April
+May
+June
+July
+August
+September
+October
+November
+December
+#
+# Short weekday names
+#
+Sun
+Mon
+Tue
+Wed
+Thu
+Fri
+Sat
+#
+# Long weekday names
+#
+Sunday
+Monday
+Tuesday
+Wednesday
+Thursday
+Friday
+Saturday
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%m/%d/%Y
+#
+# c_fmt
+#
+%a %b %e %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%a %b %e %X %Z %Y
+#
+# Long month names (without case ending)
+#
+January
+February
+March
+April
+May
+June
+July
+August
+September
+October
+November
+December
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/es_ES.ISO8859-1.src b/share/timedef/es_ES.ISO8859-1.src
new file mode 100644
index 0000000..33e50fb
--- /dev/null
+++ b/share/timedef/es_ES.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ene
+feb
+mar
+abr
+may
+jun
+jul
+ago
+sep
+oct
+nov
+dic
+#
+# Long month names (as in a date)
+#
+enero
+febrero
+marzo
+abril
+mayo
+junio
+julio
+agosto
+septiembre
+octubre
+noviembre
+diciembre
+#
+# Short weekday names
+#
+dom
+lun
+mar
+mié
+jue
+vie
+sáb
+#
+# Long weekday names
+#
+domingo
+lunes
+martes
+miércoles
+jueves
+viernes
+sábado
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%A, %e de %B de %Y, %X %Z
+#
+# Long month names (without case ending)
+#
+enero
+febrero
+marzo
+abril
+mayo
+junio
+julio
+agosto
+septiembre
+octubre
+noviembre
+diciembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/es_ES.UTF-8.src b/share/timedef/es_ES.UTF-8.src
new file mode 100644
index 0000000..76a4ab7
--- /dev/null
+++ b/share/timedef/es_ES.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ene
+feb
+mar
+abr
+may
+jun
+jul
+ago
+sep
+oct
+nov
+dic
+#
+# Long month names (as in a date)
+#
+enero
+febrero
+marzo
+abril
+mayo
+junio
+julio
+agosto
+septiembre
+octubre
+noviembre
+diciembre
+#
+# Short weekday names
+#
+dom
+lun
+mar
+mié
+jue
+vie
+sáb
+#
+# Long weekday names
+#
+domingo
+lunes
+martes
+miércoles
+jueves
+viernes
+sábado
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%A, %e de %B de %Y, %X %Z
+#
+# Long month names (without case ending)
+#
+enero
+febrero
+marzo
+abril
+mayo
+junio
+julio
+agosto
+septiembre
+octubre
+noviembre
+diciembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/et_EE.ISO8859-15.src b/share/timedef/et_EE.ISO8859-15.src
new file mode 100644
index 0000000..186c31c
--- /dev/null
+++ b/share/timedef/et_EE.ISO8859-15.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jaan
+veebr
+märts
+apr
+mai
+juuni
+juuli
+aug
+sept
+okt
+nov
+dets
+#
+# Long month names (as in a date)
+#
+jaanuar
+veebruar
+märts
+aprill
+mai
+juuni
+juuli
+august
+september
+oktoober
+november
+detsember
+#
+# Short weekday names
+#
+P
+E
+T
+K
+N
+R
+L
+#
+# Long weekday names
+#
+pühapäev
+esmaspäev
+teisipäev
+kolmapäev
+neljapäev
+reede
+laupäev
+#
+# t_fmt
+#
+%H:%M:%S
+#
+# d_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a, %d. %b %Y. %T
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# d_t_fmt
+#
+%A, %d. %B %Y. %T %Z
+#
+# Long month names (without case ending)
+#
+jaanuar
+veebruar
+märts
+aprill
+mai
+juuni
+juuli
+august
+september
+oktoober
+november
+detsember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/et_EE.UTF-8.src b/share/timedef/et_EE.UTF-8.src
new file mode 100644
index 0000000..6cd6fa8
--- /dev/null
+++ b/share/timedef/et_EE.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jaan
+veebr
+märts
+apr
+mai
+juuni
+juuli
+aug
+sept
+okt
+nov
+dets
+#
+# Long month names (as in a date)
+#
+jaanuar
+veebruar
+märts
+aprill
+mai
+juuni
+juuli
+august
+september
+oktoober
+november
+detsember
+#
+# Short weekday names
+#
+P
+E
+T
+K
+N
+R
+L
+#
+# Long weekday names
+#
+pühapäev
+esmaspäev
+teisipäev
+kolmapäev
+neljapäev
+reede
+laupäev
+#
+# t_fmt
+#
+%H:%M:%S
+#
+# d_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a, %d. %b %Y. %T
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# d_t_fmt
+#
+%A, %d. %B %Y. %T %Z
+#
+# Long month names (without case ending)
+#
+jaanuar
+veebruar
+märts
+aprill
+mai
+juuni
+juuli
+august
+september
+oktoober
+november
+detsember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/eu_ES.ISO8859-1.src b/share/timedef/eu_ES.ISO8859-1.src
new file mode 100644
index 0000000..33ee7c1
--- /dev/null
+++ b/share/timedef/eu_ES.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Urt
+Ots
+Mar
+Apr
+Mai
+Eka
+Uzt
+Abu
+Ira
+Urr
+Aza
+Abe
+#
+# Long month names (as in a date)
+#
+urtarrila
+otsaila
+martxoa
+apirila
+maiatza
+ekaina
+uztaila
+abuztua
+iraila
+urria
+azaroa
+abendua
+#
+# Short weekday names
+#
+ig.
+al.
+as.
+az.
+og.
+or.
+lr.
+#
+# Long weekday names
+#
+igandea
+astelehena
+asteartea
+asteazkena
+osteguna
+ostirala
+larunbata
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%Y - %b - %e %a %X
+#
+# am
+#
+a.m.
+#
+# pm
+#
+p.m.
+#
+# date_fmt
+#
+%Y(e)ko %B-ren %ea, %X %Z
+#
+# Long month names (without case ending)
+#
+urtarrila
+otsaila
+martxoa
+apirila
+maiatza
+ekaina
+uztaila
+abuztua
+iraila
+urria
+azaroa
+abendua
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/fi_FI.ISO8859-1.src b/share/timedef/fi_FI.ISO8859-1.src
new file mode 100644
index 0000000..601a55f
--- /dev/null
+++ b/share/timedef/fi_FI.ISO8859-1.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Tam
+Hel
+Maa
+Huh
+Tou
+Kes
+Hei
+Elo
+Syy
+Lok
+Mar
+Jou
+#
+# Long month names (as in a date)
+#
+Tammikuu
+Helmikuu
+Maaliskuu
+Huhtikuu
+Toukokuu
+Kesäkuu
+Heinäkuu
+Elokuu
+Syyskuu
+Lokakuu
+Marraskuu
+Joulukuu
+#
+# Short weekday names
+#
+Su
+Ma
+Ti
+Ke
+To
+Pe
+La
+#
+# Long weekday names
+#
+Sunnuntai
+Maanantai
+Tiistai
+Keskiviikko
+Torstai
+Perjantai
+Lauantai
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Tammikuu
+Helmikuu
+Maaliskuu
+Huhtikuu
+Toukokuu
+Kesäkuu
+Heinäkuu
+Elokuu
+Syyskuu
+Lokakuu
+Marraskuu
+Joulukuu
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/fi_FI.UTF-8.src b/share/timedef/fi_FI.UTF-8.src
new file mode 100644
index 0000000..4e84a2c
--- /dev/null
+++ b/share/timedef/fi_FI.UTF-8.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Tam
+Hel
+Maa
+Huh
+Tou
+Kes
+Hei
+Elo
+Syy
+Lok
+Mar
+Jou
+#
+# Long month names (as in a date)
+#
+Tammikuu
+Helmikuu
+Maaliskuu
+Huhtikuu
+Toukokuu
+Kesäkuu
+Heinäkuu
+Elokuu
+Syyskuu
+Lokakuu
+Marraskuu
+Joulukuu
+#
+# Short weekday names
+#
+Su
+Ma
+Ti
+Ke
+To
+Pe
+La
+#
+# Long weekday names
+#
+Sunnuntai
+Maanantai
+Tiistai
+Keskiviikko
+Torstai
+Perjantai
+Lauantai
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Tammikuu
+Helmikuu
+Maaliskuu
+Huhtikuu
+Toukokuu
+Kesäkuu
+Heinäkuu
+Elokuu
+Syyskuu
+Lokakuu
+Marraskuu
+Joulukuu
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/fr_FR.ISO8859-1.src b/share/timedef/fr_FR.ISO8859-1.src
new file mode 100644
index 0000000..e054692
--- /dev/null
+++ b/share/timedef/fr_FR.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+fév
+mar
+avr
+mai
+jui
+jul
+aoû
+sep
+oct
+nov
+déc
+#
+# Long month names (as in a date)
+#
+janvier
+février
+mars
+avril
+mai
+juin
+juillet
+août
+septembre
+octobre
+novembre
+décembre
+#
+# Short weekday names
+#
+Dim
+Lun
+Mar
+Mer
+Jeu
+Ven
+Sam
+#
+# Long weekday names
+#
+Dimanche
+Lundi
+Mardi
+Mercredi
+Jeudi
+Vendredi
+Samedi
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+janvier
+février
+mars
+avril
+mai
+juin
+juillet
+août
+septembre
+octobre
+novembre
+décembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/fr_FR.UTF-8.src b/share/timedef/fr_FR.UTF-8.src
new file mode 100644
index 0000000..d3db0fb
--- /dev/null
+++ b/share/timedef/fr_FR.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+fév
+mar
+avr
+mai
+jui
+jul
+aoû
+sep
+oct
+nov
+déc
+#
+# Long month names (as in a date)
+#
+janvier
+février
+mars
+avril
+mai
+juin
+juillet
+août
+septembre
+octobre
+novembre
+décembre
+#
+# Short weekday names
+#
+Dim
+Lun
+Mar
+Mer
+Jeu
+Ven
+Sam
+#
+# Long weekday names
+#
+Dimanche
+Lundi
+Mardi
+Mercredi
+Jeudi
+Vendredi
+Samedi
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+janvier
+février
+mars
+avril
+mai
+juin
+juillet
+août
+septembre
+octobre
+novembre
+décembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/he_IL.UTF-8.src b/share/timedef/he_IL.UTF-8.src
new file mode 100644
index 0000000..b4c8b3d
--- /dev/null
+++ b/share/timedef/he_IL.UTF-8.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+ינו
+פבר
+מרץ
+×פר
+מ××™
+יונ
+יול
+×וג
+ספט
+×וק
+נוב
+דצמ
+#
+# Long month names (as in a date)
+#
+ינו×ר
+פברו×ר
+מרץ
+×פריל
+מ××™
+יוני
+יולי
+×וגוסט
+ספטמבר
+×וקטובר
+נובמבר
+דצמבר
+#
+# Short weekday names
+#
+×'
+ב'
+×’'
+ד'
+×”'
+ו'
+ש'
+#
+# Long weekday names
+#
+ר×שון
+שני
+שלישי
+רביעי
+חמישי
+שישי
+שבת
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%y
+#
+# c_fmt
+#
+%Z %H:%M:%S %Y %b %d %a
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%a %b %e %H:%M:%S %Z %Y
+#
+# Long month names (without case ending)
+#
+ינו×ר
+פברו×ר
+מרץ
+×פריל
+מ××™
+יוני
+יולי
+×וגוסט
+ספטמבר
+×וקטובר
+נובמבר
+דצמבר
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/hi_IN.ISCII-DEV.src b/share/timedef/hi_IN.ISCII-DEV.src
new file mode 100644
index 0000000..c1bd33a
--- /dev/null
+++ b/share/timedef/hi_IN.ISCII-DEV.src
@@ -0,0 +1,103 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names -- same as long
+#
+ºÆÔÏÜ
+ÉéÏÔÏÜ
+ÌÚÏè¸
+¤ÈèÏáÑ
+̧
+ºÞÆ
+ºÝÑÚ§
+¤µ×èÂ
+×ÛÂÌèÊÏ
+¤³è½ÞÊÏ
+ÆÔÌèÊÏ
+ÄÛ×ÌèÊÏ
+#
+# Long month names (as in a date)
+#
+ºÆÔÏÜ
+ÉéÏÔÏÜ
+ÌÚÏè¸
+¤ÈèÏáÑ
+̧
+ºÞÆ
+ºÝÑÚ§
+¤µ×èÂ
+×ÛÂÌèÊÏ
+¤³è½ÞÊÏ
+ÆÔÌèÊÏ
+ÄÛ×ÌèÊÏ
+#
+#
+# Short weekday names
+#
+ÏÔ
+×å
+Ì¢
+ÊÝ
+µÝ
+ÕÝ
+ÕÆ
+#
+# Long weekday names
+#
+ÏÔÛÔÚÏ
+×åÌÔÚÏ
+Ì¢µÑÔÚÏ
+ÊÝÅÔÚÏ
+µÝÏÝÔÚÏ
+ÕݳèÏÔÚÏ
+ÕÆÛÔÚÏ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %b %e %X %Y
+#
+# am
+#
+ÈÞÏèÔÚØèÆ
+#
+# pm
+¤ÈÏÚØèÆ
+#
+#
+# date_fmt
+#
+%a %b %e %X %Z %Y
+#
+# Long month names (without case ending)
+#
+ºÆÔÏÜ
+ÉéÏÔÏÜ
+ÌÚÏè¸
+¤ÈèÏáÑ
+̧
+ºÞÆ
+ºÝÑÚ§
+¤µ×èÂ
+×ÛÂÌèÊÏ
+¤³è½ÞÊÏ
+ÆÔÌèÊÏ
+ÄÛ×ÌèÊÏ
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/hr_HR.ISO8859-2.src b/share/timedef/hr_HR.ISO8859-2.src
new file mode 100644
index 0000000..833336b
--- /dev/null
+++ b/share/timedef/hr_HR.ISO8859-2.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Sij
+Vel
+O¾u
+Tra
+Svi
+Lip
+Srp
+Kol
+Ruj
+Lis
+Stu
+Pro
+#
+# Long month names (as in a date)
+#
+Sijeèanj
+Veljaèa
+O¾ujak
+Travanj
+Svibanj
+Lipanj
+Srpanj
+Kolovoz
+Rujan
+Listopad
+Studeni
+Prosinac
+#
+# Short weekday names
+#
+Ne
+Po
+Ut
+Sr
+Èe
+Pe
+Su
+#
+# Long weekday names
+#
+Nedjelja
+Ponedjeljak
+Utorak
+Srijeda
+Èetvrtak
+Petak
+Subota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Sijeèanj
+Veljaèa
+O¾ujak
+Travanj
+Svibanj
+Lipanj
+Srpanj
+Kolovoz
+Rujan
+Listopad
+Studeni
+Prosinac
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/hr_HR.UTF-8.src b/share/timedef/hr_HR.UTF-8.src
new file mode 100644
index 0000000..b4614b2
--- /dev/null
+++ b/share/timedef/hr_HR.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Sij
+Vel
+Ožu
+Tra
+Svi
+Lip
+Srp
+Kol
+Ruj
+Lis
+Stu
+Pro
+#
+# Long month names (as in a date)
+#
+SijeÄanj
+VeljaÄa
+Ožujak
+Travanj
+Svibanj
+Lipanj
+Srpanj
+Kolovoz
+Rujan
+Listopad
+Studeni
+Prosinac
+#
+# Short weekday names
+#
+Ne
+Po
+Ut
+Sr
+ÄŒe
+Pe
+Su
+#
+# Long weekday names
+#
+Nedjelja
+Ponedjeljak
+Utorak
+Srijeda
+ÄŒetvrtak
+Petak
+Subota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+SijeÄanj
+VeljaÄa
+Ožujak
+Travanj
+Svibanj
+Lipanj
+Srpanj
+Kolovoz
+Rujan
+Listopad
+Studeni
+Prosinac
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/hu_HU.ISO8859-2.src b/share/timedef/hu_HU.ISO8859-2.src
new file mode 100644
index 0000000..4f361fc
--- /dev/null
+++ b/share/timedef/hu_HU.ISO8859-2.src
@@ -0,0 +1,101 @@
+# This is a Hungarian LC_TIME file for ISO 8859-2 code-table
+# Made by Gabor Zahemszky <zgabor@CoDe.hu>
+# $FreeBSD$
+#
+# Short month names
+#
+jan
+feb
+már
+ápr
+máj
+jún
+júl
+aug
+sze
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+január
+február
+március
+április
+május
+június
+július
+augusztus
+szeptember
+október
+november
+december
+#
+# Short weekday names
+#
+vas
+hét
+ked
+sze
+csü
+pén
+szo
+#
+# Long weekday names
+#
+vasárnap
+hétfõ
+kedd
+szerda
+csütörtök
+péntek
+szombat
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b %e %X %Y
+#
+# am
+#
+de
+#
+# pm
+#
+du
+#
+# date_fmt
+#
+%Y %b %e %a %X %Z
+#
+# Long month names (without case ending)
+#
+január
+február
+március
+április
+május
+június
+július
+augusztus
+szeptember
+október
+november
+december
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/hu_HU.UTF-8.src b/share/timedef/hu_HU.UTF-8.src
new file mode 100644
index 0000000..e3beb6e
--- /dev/null
+++ b/share/timedef/hu_HU.UTF-8.src
@@ -0,0 +1,101 @@
+# This is a Hungarian LC_TIME file for ISO 8859-2 code-table
+# Made by Gabor Zahemszky <zgabor@CoDe.hu>
+# $FreeBSD$
+#
+# Short month names
+#
+jan
+feb
+már
+ápr
+máj
+jún
+júl
+aug
+sze
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+január
+február
+március
+április
+május
+június
+július
+augusztus
+szeptember
+október
+november
+december
+#
+# Short weekday names
+#
+vas
+hét
+ked
+sze
+csü
+pén
+szo
+#
+# Long weekday names
+#
+vasárnap
+hétfő
+kedd
+szerda
+csütörtök
+péntek
+szombat
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b %e %X %Y
+#
+# am
+#
+de
+#
+# pm
+#
+du
+#
+# date_fmt
+#
+%Y %b %e %a %X %Z
+#
+# Long month names (without case ending)
+#
+január
+február
+március
+április
+május
+június
+július
+augusztus
+szeptember
+október
+november
+december
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/hy_AM.ARMSCII-8.src b/share/timedef/hy_AM.ARMSCII-8.src
new file mode 100644
index 0000000..0232e2b
--- /dev/null
+++ b/share/timedef/hy_AM.ARMSCII-8.src
@@ -0,0 +1,105 @@
+# $FreeBSD$
+#
+# LC_TIME source for ARMSCII-8 locale for FreeBSD
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ÐÝí
+öïñ
+Øñï
+²åñ
+ØÛë
+ÐÝë
+ÐÉë
+ú·ë
+êåï
+ÐÏï
+ÜÛÙ
+¸Ïï
+#
+# Long month names (as in a date)
+#
+ÐáõÝí³ñ
+ö»ïñí³ñ
+سñï
+²åñÇÉ
+سÛÇë
+ÐáõÝÇë
+ÐáõÉÇë
+ú·áëïáë
+ê»åï»Ùµ»ñ
+ÐáÏï»Ùµ»ñ
+ÜáÛ»Ùµ»ñ
+¸»Ïï»Ùµ»ñ
+#
+# Short weekday names
+#
+ÎñÏ
+ºñÏ
+ºñù
+âñù
+ÐÝ·
+àõñ
+ÞµÃ
+#
+# Long weekday names
+#
+ÎÇñ³ÏÇ
+ºñÏáõß³µÃÇ
+ºñ»ùß³µÃÇ
+âáñ»ùß³µÃÇ
+ÐÇÝ·ß³µÃÇ
+àõñµ³Ã
+Þ³µ³Ã
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y Ç. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y é %X (%Z)
+#
+# Long month names (without case ending)
+#
+ÐáõÝí³ñ
+ö»ïñí³ñ
+سñï
+²åñÇÉ
+سÛÇë
+ÐáõÝÇë
+ÐáõÉÇë
+ú·áëïáë
+ê»åï»Ùµ»ñ
+ÐáÏï»Ùµ»ñ
+ÜáÛ»Ùµ»ñ
+¸»Ïï»Ùµ»ñ
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/hy_AM.UTF-8.src b/share/timedef/hy_AM.UTF-8.src
new file mode 100644
index 0000000..6150303
--- /dev/null
+++ b/share/timedef/hy_AM.UTF-8.src
@@ -0,0 +1,105 @@
+# $FreeBSD$
+#
+# LC_TIME source for ARMSCII-8 locale for FreeBSD
+# Made available by Vahe Khachikyan <vahe@khachikyan.de>
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Õ€Õ¶Õ¾
+Õ“Õ¿Ö€
+Õ„Ö€Õ¿
+Ô±ÕºÖ€
+Õ„ÕµÕ½
+Õ€Õ¶Õ½
+Õ€Õ¬Õ½
+Õ•Õ£Õ½
+ÕÕºÕ¿
+Õ€Õ¯Õ¿
+Õ†ÕµÕ´
+Ô´Õ¯Õ¿
+#
+# Long month names (as in a date)
+#
+Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€
+Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€
+Õ„Õ¡Ö€Õ¿
+Ô±ÕºÖ€Õ«Õ¬
+Õ„Õ¡ÕµÕ«Õ½
+Õ€Õ¸Ö‚Õ¶Õ«Õ½
+Õ€Õ¸Ö‚Õ¬Õ«Õ½
+Õ•Õ£Õ¸Õ½Õ¿Õ¸Õ½
+ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€
+Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€
+Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€
+Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€
+#
+# Short weekday names
+#
+Ô¿Ö€Õ¯
+ÔµÖ€Õ¯
+ÔµÖ€Ö„
+Õ‰Ö€Ö„
+Õ€Õ¶Õ£
+ÕˆÖ‚Ö€
+Õ‡Õ¢Õ©
+#
+# Long weekday names
+#
+Ô¿Õ«Ö€Õ¡Õ¯Õ«
+ÔµÖ€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«
+ÔµÖ€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«
+Õ‰Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«
+Õ€Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«
+ÕˆÖ‚Ö€Õ¢Õ¡Õ©
+Õ‡Õ¡Õ¢Õ¡Õ©
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y Õ«. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y Õ©. %X (%Z)
+#
+# Long month names (without case ending)
+#
+Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€
+Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€
+Õ„Õ¡Ö€Õ¿
+Ô±ÕºÖ€Õ«Õ¬
+Õ„Õ¡ÕµÕ«Õ½
+Õ€Õ¸Ö‚Õ¶Õ«Õ½
+Õ€Õ¸Ö‚Õ¬Õ«Õ½
+Õ•Õ£Õ¸Õ½Õ¿Õ¸Õ½
+ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€
+Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€
+Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€
+Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/is_IS.ISO8859-1.src b/share/timedef/is_IS.ISO8859-1.src
new file mode 100644
index 0000000..40ba698
--- /dev/null
+++ b/share/timedef/is_IS.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+maí
+jún
+júl
+ágú
+sep
+okt
+nóv
+des
+#
+# Long month names (as in a date)
+#
+janúar
+febrúar
+mars
+apríl
+maí
+júní
+júlí
+ágúst
+september
+október
+nóvember
+desember
+#
+# Short weekday names
+#
+sun
+mán
+þri
+mið
+fim
+fös
+lau
+#
+# Long weekday names
+#
+sunnudagur
+mánudagur
+þriðjudagur
+miðvikudagur
+fimmtudagur
+föstudagur
+laugardagur
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+fh
+#
+# pm
+#
+eh
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+janúar
+febrúar
+mars
+apríl
+maí
+júní
+júlí
+ágúst
+september
+október
+nóvember
+desember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/is_IS.UTF-8.src b/share/timedef/is_IS.UTF-8.src
new file mode 100644
index 0000000..9851904
--- /dev/null
+++ b/share/timedef/is_IS.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+maí
+jún
+júl
+ágú
+sep
+okt
+nóv
+des
+#
+# Long month names (as in a date)
+#
+janúar
+febrúar
+mars
+apríl
+maí
+júní
+júlí
+ágúst
+september
+október
+nóvember
+desember
+#
+# Short weekday names
+#
+sun
+mán
+þri
+mið
+fim
+fös
+lau
+#
+# Long weekday names
+#
+sunnudagur
+mánudagur
+þriðjudagur
+miðvikudagur
+fimmtudagur
+föstudagur
+laugardagur
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+fh
+#
+# pm
+#
+eh
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+janúar
+febrúar
+mars
+apríl
+maí
+júní
+júlí
+ágúst
+september
+október
+nóvember
+desember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/it_IT.ISO8859-1.src b/share/timedef/it_IT.ISO8859-1.src
new file mode 100644
index 0000000..ae218fd
--- /dev/null
+++ b/share/timedef/it_IT.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Gen
+Feb
+Mar
+Apr
+Mag
+Giu
+Lug
+Ago
+Set
+Ott
+Nov
+Dic
+#
+# Long month names (as in a date)
+#
+Gennaio
+Febbraio
+Marzo
+Aprile
+Maggio
+Giugno
+Luglio
+Agosto
+Settembre
+Ottobre
+Novembre
+Dicembre
+#
+# Short weekday names
+#
+Dom
+Lun
+Mar
+Mer
+Gio
+Ven
+Sab
+#
+# Long weekday names
+#
+Domenica
+Lunedì
+Martedì
+Mercoledì
+Giovedì
+Venerdì
+Sabato
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Gennaio
+Febbraio
+Marzo
+Aprile
+Maggio
+Giugno
+Luglio
+Agosto
+Settembre
+Ottobre
+Novembre
+Dicembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/it_IT.UTF-8.src b/share/timedef/it_IT.UTF-8.src
new file mode 100644
index 0000000..7791d98
--- /dev/null
+++ b/share/timedef/it_IT.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Gen
+Feb
+Mar
+Apr
+Mag
+Giu
+Lug
+Ago
+Set
+Ott
+Nov
+Dic
+#
+# Long month names (as in a date)
+#
+Gennaio
+Febbraio
+Marzo
+Aprile
+Maggio
+Giugno
+Luglio
+Agosto
+Settembre
+Ottobre
+Novembre
+Dicembre
+#
+# Short weekday names
+#
+Dom
+Lun
+Mar
+Mer
+Gio
+Ven
+Sab
+#
+# Long weekday names
+#
+Domenica
+Lunedì
+Martedì
+Mercoledì
+Giovedì
+Venerdì
+Sabato
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Gennaio
+Febbraio
+Marzo
+Aprile
+Maggio
+Giugno
+Luglio
+Agosto
+Settembre
+Ottobre
+Novembre
+Dicembre
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ja_JP.SJIS.src b/share/timedef/ja_JP.SJIS.src
new file mode 100644
index 0000000..e4952d7
--- /dev/null
+++ b/share/timedef/ja_JP.SJIS.src
@@ -0,0 +1,106 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+1ŒŽ
+2ŒŽ
+3ŒŽ
+4ŒŽ
+5ŒŽ
+6ŒŽ
+7ŒŽ
+8ŒŽ
+9ŒŽ
+10ŒŽ
+11ŒŽ
+12ŒŽ
+#
+# Short weekday names
+#
+“ú
+ŒŽ
+‰Î
+…
+–Ø
+‹à
+“y
+#
+# Long weekday names
+#
+“ú—j“ú
+ŒŽ—j“ú
+‰Î—j“ú
+…—j“ú
+–Ø—j“ú
+‹à—j“ú
+“y—j“ú
+#
+# X_fmt
+#
+%HŽž%M•ª%S•b
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+# just following tradition...
+# %a %b %e %H:%M:%S %Y
+%a %b/%e %T %Y
+#
+# am
+#
+#Œß‘O
+AM
+#
+# pm
+#
+#Χ΋
+PM
+#
+# date_fmt
+#
+%Y”N %B%e“ú %A %X %Z
+#
+# Long month names (without case ending)
+#
+1ŒŽ
+2ŒŽ
+3ŒŽ
+4ŒŽ
+5ŒŽ
+6ŒŽ
+7ŒŽ
+8ŒŽ
+9ŒŽ
+10ŒŽ
+11ŒŽ
+12ŒŽ
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ja_JP.UTF-8.src b/share/timedef/ja_JP.UTF-8.src
new file mode 100644
index 0000000..f6aecf3
--- /dev/null
+++ b/share/timedef/ja_JP.UTF-8.src
@@ -0,0 +1,105 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+1月
+2月
+3月
+4月
+5月
+6月
+7月
+8月
+9月
+10月
+11月
+12月
+#
+# Short weekday names
+#
+æ—¥
+月
+ç«
+æ°´
+木
+金
+土
+#
+# Long weekday names
+#
+日曜日
+月曜日
+ç«æ›œæ—¥
+水曜日
+木曜日
+金曜日
+土曜日
+#
+# X_fmt
+#
+%H時%M分%S秒
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+# just following tradition...
+# %a %b %e %H:%M:%S %Y
+%a %b/%e %T %Y
+#
+# am
+#
+#åˆå‰
+AM
+#
+# pm
+#
+#åˆå¾Œ
+PM
+#
+# date_fmt
+#
+%Yå¹´ %B%eæ—¥ %A %X %Z
+#
+# Long month names (without case ending)
+#
+1月
+2月
+3月
+4月
+5月
+6月
+7月
+8月
+9月
+10月
+11月
+12月
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ja_JP.eucJP.src b/share/timedef/ja_JP.eucJP.src
new file mode 100644
index 0000000..a052b92
--- /dev/null
+++ b/share/timedef/ja_JP.eucJP.src
@@ -0,0 +1,105 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+1·î
+2·î
+3·î
+4·î
+5·î
+6·î
+7·î
+8·î
+9·î
+10·î
+11·î
+12·î
+#
+# Short weekday names
+#
+Æü
+·î
+²Ð
+¿å
+ÌÚ
+¶â
+ÅÚ
+#
+# Long weekday names
+#
+ÆüÍËÆü
+·îÍËÆü
+²ÐÍËÆü
+¿åÍËÆü
+ÌÚÍËÆü
+¶âÍËÆü
+ÅÚÍËÆü
+#
+# X_fmt
+#
+%H»þ%Mʬ%SÉÃ
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+# just following tradition...
+# %a %b %e %H:%M:%S %Y
+%a %b/%e %T %Y
+#
+# am
+#
+#¸áÁ°
+AM
+#
+# pm
+#
+#¸á¸å
+PM
+#
+# date_fmt
+#
+%Yǯ %B%eÆü %A %X %Z
+#
+# Long month names (without case ending)
+#
+1·î
+2·î
+3·î
+4·î
+5·î
+6·î
+7·î
+8·î
+9·î
+10·î
+11·î
+12·î
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/kk_KZ.PT154.src b/share/timedef/kk_KZ.PT154.src
new file mode 100644
index 0000000..8bd76aa
--- /dev/null
+++ b/share/timedef/kk_KZ.PT154.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+àœ
+àï
+íàó
+ñºó
+ìàì
+ìàó
+ø³ë
+òàì
+ûð
+àç
+àð
+æåë
+#
+# Long month names (as in a date)
+#
+àœòàð
+àïàí
+íàóðûç
+ñºó³ð
+ìàìûð
+ìàóñûì
+ø³ëäå
+òàìûç
+ûðê‰éåê
+àçàí
+àðàøà
+æåëòîñàí
+#
+# Short weekday names
+#
+æê
+äñ
+ññ
+ñð
+áñ
+æì
+ñí
+#
+# Long weekday names
+#
+æåêñåíá³
+ä‰éñåíá³
+ñåéñåíá³
+ñºðñåíá³
+áåéñåíá³
+æ±ìà
+ñåíá³
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y æ. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y æ. %X (%Z)
+#
+# Long month names (without case ending)
+#
+àíòàð
+àïàí
+íàóðûç
+ñºó³ð
+ìàìûð
+ìàóñûì
+ø³ëäå
+òàìûç
+ûðê‰éåê
+àçàí
+àðàøà
+æåëòîñàí
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/kk_KZ.UTF-8.src b/share/timedef/kk_KZ.UTF-8.src
new file mode 100644
index 0000000..8270a0b
--- /dev/null
+++ b/share/timedef/kk_KZ.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+қаң
+ақп
+нау
+Ñәу
+мам
+мау
+шіл
+там
+қыр
+қаз
+қар
+жел
+#
+# Long month names (as in a date)
+#
+қаңтар
+ақпан
+наурыз
+Ñәуір
+мамыр
+мауÑым
+шілде
+тамыз
+қыркүйек
+қазан
+қараша
+желтоқÑан
+#
+# Short weekday names
+#
+жк
+дÑ
+ÑÑ
+ÑÑ€
+бÑ
+жм
+Ñн
+#
+# Long weekday names
+#
+жекÑенбі
+дүйÑенбі
+ÑейÑенбі
+ÑәрÑенбі
+бейÑенбі
+жұма
+Ñенбі
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y ж. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y ж. %X (%Z)
+#
+# Long month names (without case ending)
+#
+қантар
+ақпан
+наурыз
+Ñәуір
+мамыр
+мауÑым
+шілде
+тамыз
+қыркүйек
+қазан
+қараша
+желтоқÑан
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/ko_KR.UTF-8.src b/share/timedef/ko_KR.UTF-8.src
new file mode 100644
index 0000000..42c248f
--- /dev/null
+++ b/share/timedef/ko_KR.UTF-8.src
@@ -0,0 +1,108 @@
+# $FreeBSD$
+#
+# Originally by CHOI Junho <cjh@FreeBSD.org>
+# 27 Mar 1997
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+1ì›”
+2ì›”
+3ì›”
+4ì›”
+5ì›”
+6ì›”
+7ì›”
+8ì›”
+9ì›”
+10ì›”
+11ì›”
+12ì›”
+#
+# Short weekday names
+#
+ì¼
+ì›”
+í™”
+수
+목
+금
+토
+#
+# Long weekday names
+#
+ì¼ìš”ì¼
+월요ì¼
+화요ì¼
+수요ì¼
+목요ì¼
+금요ì¼
+토요ì¼
+#
+# X_fmt
+#
+%H시 %M분 %S초
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+# just following tradition...
+# %Yë…„ %bì›” %eì¼ %aìš”ì¼ %X
+%a %b/%e %H:%M:%S %Y
+#
+# am
+#
+#오전
+AM
+#
+# pm
+#
+#오후
+PM
+#
+# date_fmt
+#
+%Yë…„ %B %eì¼ %A %X %Z
+#
+# Long month names (without case ending)
+#
+1ì›”
+2ì›”
+3ì›”
+4ì›”
+5ì›”
+6ì›”
+7ì›”
+8ì›”
+9ì›”
+10ì›”
+11ì›”
+12ì›”
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ko_KR.eucKR.src b/share/timedef/ko_KR.eucKR.src
new file mode 100644
index 0000000..b891638
--- /dev/null
+++ b/share/timedef/ko_KR.eucKR.src
@@ -0,0 +1,108 @@
+# $FreeBSD$
+#
+# Originally by CHOI Junho <cjh@FreeBSD.org>
+# 27 Mar 1997
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+1¿ù
+2¿ù
+3¿ù
+4¿ù
+5¿ù
+6¿ù
+7¿ù
+8¿ù
+9¿ù
+10¿ù
+11¿ù
+12¿ù
+#
+# Short weekday names
+#
+ÀÏ
+¿ù
+È­
+¼ö
+¸ñ
+±Ý
+Åä
+#
+# Long weekday names
+#
+ÀÏ¿äÀÏ
+¿ù¿äÀÏ
+È­¿äÀÏ
+¼ö¿äÀÏ
+¸ñ¿äÀÏ
+±Ý¿äÀÏ
+Åä¿äÀÏ
+#
+# X_fmt
+#
+%H½Ã %MºÐ %SÃÊ
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+# just following tradition...
+# %Y³â %b¿ù %eÀÏ %a¿äÀÏ %X
+%a %b/%e %H:%M:%S %Y
+#
+# am
+#
+#¿ÀÀü
+AM
+#
+# pm
+#
+#¿ÀÈÄ
+PM
+#
+# date_fmt
+#
+%Y³â %B %eÀÏ %A %X %Z
+#
+# Long month names (without case ending)
+#
+1¿ù
+2¿ù
+3¿ù
+4¿ù
+5¿ù
+6¿ù
+7¿ù
+8¿ù
+9¿ù
+10¿ù
+11¿ù
+12¿ù
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/la_LN.ISO8859-1.src b/share/timedef/la_LN.ISO8859-1.src
new file mode 100644
index 0000000..357dfa8
--- /dev/null
+++ b/share/timedef/la_LN.ISO8859-1.src
@@ -0,0 +1,104 @@
+# $FreeBSD$
+# This is Latin. The week with seven days was introduced in the
+# Roman Empire 321 AD. (Konstantin I)
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ian
+Feb
+Mar
+Apr
+Mai
+Iun
+Iul
+Aug
+Sep
+Oct
+Nov
+Dec
+#
+# Long month names (as in a date)
+#
+Ianuarius
+Februarius
+Martius
+Aprilis
+Maius
+Iunius
+Iulius
+Augustus
+September
+October
+November
+December
+#
+# Short weekday names
+#
+Sol
+Lun
+Mar
+Mer
+Iov
+Ven
+Sat
+#
+# Long weekday names
+#
+dies Solis
+dies Lunae
+dies Martis
+dies Mercurii
+dies Iovis
+dies Veneris
+dies Saturni
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Ianuarius
+Februarius
+Martius
+Aprilis
+Maius
+Iunius
+Iulius
+Augustus
+September
+October
+November
+December
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/lt_LT.ISO8859-13.src b/share/timedef/lt_LT.ISO8859-13.src
new file mode 100644
index 0000000..7868bc4
--- /dev/null
+++ b/share/timedef/lt_LT.ISO8859-13.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Sau
+Vas
+Kov
+Bal
+Geg
+Bir
+Lie
+Rgp
+Rgs
+Spa
+Lap
+Grd
+#
+# Long month names (as in a date)
+#
+sausio
+vasario
+kovo
+balandþio
+geguþës
+birþelio
+liepos
+rugpjûèio
+rugsëjo
+spalio
+lapkrièio
+gruodþio
+#
+# Short weekday names
+#
+Sk
+Pr
+An
+Tr
+Kt
+Pn
+Ðt
+#
+# Long weekday names
+#
+Sekmadienis
+Pirmadienis
+Antradienis
+Treèiadienis
+Ketvirtadienis
+Penktadienis
+Ðeðtadienis
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y.%m.%d
+#
+# c_fmt
+# %A, %Y m. %B %e d. %T
+%a %b %e %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %Y m. %B %e d. %T %Z
+#
+# Long month names (without case ending)
+#
+sausis
+vasaris
+kovas
+balandis
+geguþë
+birþelis
+liepa
+rugpjûtis
+rugsëjis
+spalis
+lapkritis
+gruodis
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/lt_LT.ISO8859-4.src b/share/timedef/lt_LT.ISO8859-4.src
new file mode 100644
index 0000000..efaf3c1
--- /dev/null
+++ b/share/timedef/lt_LT.ISO8859-4.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Sau
+Vas
+Kov
+Bal
+Geg
+Bir
+Lie
+Rgp
+Rgs
+Spa
+Lap
+Grd
+#
+# Long month names (as in a date)
+#
+sausio
+vasario
+kovo
+baland¾io
+gegu¾ìs
+bir¾elio
+liepos
+rugpjþèio
+rugsìjo
+spalio
+lapkrièio
+gruod¾io
+#
+# Short weekday names
+#
+Sk
+Pr
+An
+Tr
+Kt
+Pn
+©t
+#
+# Long weekday names
+#
+Sekmadienis
+Pirmadienis
+Antradienis
+Treèiadienis
+Ketvirtadienis
+Penktadienis
+©e¹tadienis
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y.%m.%d
+#
+# c_fmt
+# %A, %Y m. %B %e d. %T
+%a %b %e %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %Y m. %B %e d. %T %Z
+#
+# Long month names (without case ending)
+#
+sausis
+vasaris
+kovas
+balandis
+gegu¾ì
+bir¾elis
+liepa
+rugpjþtis
+rugsìjis
+spalis
+lapkritis
+gruodis
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/lt_LT.UTF-8.src b/share/timedef/lt_LT.UTF-8.src
new file mode 100644
index 0000000..dccc748
--- /dev/null
+++ b/share/timedef/lt_LT.UTF-8.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Sau
+Vas
+Kov
+Bal
+Geg
+Bir
+Lie
+Rgp
+Rgs
+Spa
+Lap
+Grd
+#
+# Long month names (as in a date)
+#
+sausio
+vasario
+kovo
+balandžio
+gegužės
+birželio
+liepos
+rugpjÅ«Äio
+rugsÄ—jo
+spalio
+lapkriÄio
+gruodžio
+#
+# Short weekday names
+#
+Sk
+Pr
+An
+Tr
+Kt
+Pn
+Å t
+#
+# Long weekday names
+#
+Sekmadienis
+Pirmadienis
+Antradienis
+TreÄiadienis
+Ketvirtadienis
+Penktadienis
+Šeštadienis
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y.%m.%d
+#
+# c_fmt
+# %A, %Y m. %B %e d. %T
+%a %b %e %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %Y m. %B %e d. %T %Z
+#
+# Long month names (without case ending)
+#
+sausis
+vasaris
+kovas
+balandis
+gegužė
+birželis
+liepa
+rugpjūtis
+rugsÄ—jis
+spalis
+lapkritis
+gruodis
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/mn_MN.UTF-8.src b/share/timedef/mn_MN.UTF-8.src
new file mode 100644
index 0000000..05434e7
--- /dev/null
+++ b/share/timedef/mn_MN.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ÐÑг
+Хоё
+Гур
+Дөр
+Тав
+Зур
+Дол
+Ðай
+ЕÑÓ©
+Ðрв
+11Ñ€
+12Ñ€
+#
+# Long month names (as in a date)
+#
+ÐÑгдүгÑÑÑ€
+Хоёрдугаар
+Гуравдугаар
+ДөрөвдүгÑÑÑ€
+Тавдугаар
+Зургаадугаар
+Долоодугаар
+Ðаймдугаар
+ЕÑдүгÑÑÑ€
+Ðравдугаар
+Ðрван нÑгдүгÑÑÑ€
+Ðрван хоёрдугаар
+#
+# Short weekday names
+#
+ÐÑм
+Дав
+ÐœÑг
+Лха
+Пүр
+Баа
+БÑм
+#
+# Long weekday names
+#
+ÐÑм
+Даваа
+ÐœÑгмар
+Лхагва
+ПүрÑв
+БааÑан
+БÑмба
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y.%m.%d
+#
+# c_fmt
+#
+%Y оны %B Ñарын %e, %A гараг, %X
+#
+# am
+#
+Ò®Ó¨
+#
+# pm
+#
+ҮШ
+#
+# date_fmt
+#
+%Y оны %B Ñарын %e, %A гараг, %X
+#
+# Long month names (without case ending)
+#
+ÐÑгдүгÑÑÑ€ Ñар
+Хоёрдугаар Ñар
+Гуравдугаар Ñар
+ДөрөвдүгÑÑÑ€ Ñар
+Тавдугаар Ñар
+Зургаадугаар Ñар
+Долоодугаар Ñар
+Ðаймдугаар Ñар
+ЕÑдүгÑÑÑ€ Ñар
+Ðравдугаар Ñар
+Ðрван нÑгдүгÑÑÑ€ Ñар
+Ðрван хоёрдугаар Ñар
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/nb_NO.ISO8859-1.src b/share/timedef/nb_NO.ISO8859-1.src
new file mode 100644
index 0000000..e75a503
--- /dev/null
+++ b/share/timedef/nb_NO.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+mai
+jun
+jul
+aug
+sep
+okt
+nov
+des
+#
+# Long month names (as in a date)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# Short weekday names
+#
+søn
+man
+tir
+ons
+tor
+fre
+lør
+#
+# Long weekday names
+#
+søndag
+mandag
+tirsdag
+onsdag
+torsdag
+fredag
+lørdag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/nb_NO.UTF-8.src b/share/timedef/nb_NO.UTF-8.src
new file mode 100644
index 0000000..c7113c4
--- /dev/null
+++ b/share/timedef/nb_NO.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+mai
+jun
+jul
+aug
+sep
+okt
+nov
+des
+#
+# Long month names (as in a date)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# Short weekday names
+#
+søn
+man
+tir
+ons
+tor
+fre
+lør
+#
+# Long weekday names
+#
+søndag
+mandag
+tirsdag
+onsdag
+torsdag
+fredag
+lørdag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/nl_NL.ISO8859-1.src b/share/timedef/nl_NL.ISO8859-1.src
new file mode 100644
index 0000000..bf1bc10
--- /dev/null
+++ b/share/timedef/nl_NL.ISO8859-1.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mrt
+apr
+mei
+jun
+jul
+aug
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+januari
+februari
+maart
+april
+mei
+juni
+juli
+augustus
+september
+oktober
+november
+december
+#
+# Short weekday names
+zo
+ma
+di
+wo
+do
+vr
+za
+#
+# Long weekday names
+#
+zondag
+maandag
+dinsdag
+woensdag
+donderdag
+vrijdag
+zaterdag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d-%m-%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januari
+februari
+maart
+april
+mei
+juni
+juli
+augustus
+september
+oktober
+november
+december
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/nn_NO.ISO8859-1.src b/share/timedef/nn_NO.ISO8859-1.src
new file mode 100644
index 0000000..cd59ba7
--- /dev/null
+++ b/share/timedef/nn_NO.ISO8859-1.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+mai
+jun
+jul
+aug
+sep
+okt
+nov
+des
+#
+# Long month names (as in a date)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# Short weekday names
+#
+sun
+mån
+tys
+ons
+tor
+fre
+lau
+#
+# Long weekday names
+#
+sundag
+måndag
+tysdag
+onsdag
+torsdag
+fredag
+laurdag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/nn_NO.UTF-8.src b/share/timedef/nn_NO.UTF-8.src
new file mode 100644
index 0000000..b14cc15
--- /dev/null
+++ b/share/timedef/nn_NO.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+mai
+jun
+jul
+aug
+sep
+okt
+nov
+des
+#
+# Long month names (as in a date)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# Short weekday names
+#
+sun
+mån
+tys
+ons
+tor
+fre
+lau
+#
+# Long weekday names
+#
+sundag
+måndag
+tysdag
+onsdag
+torsdag
+fredag
+laurdag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+mars
+april
+mai
+juni
+juli
+august
+september
+oktober
+november
+desember
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/pl_PL.ISO8859-2.src b/share/timedef/pl_PL.ISO8859-2.src
new file mode 100644
index 0000000..d511201
--- /dev/null
+++ b/share/timedef/pl_PL.ISO8859-2.src
@@ -0,0 +1,99 @@
+# $FreeBSD$
+#
+# Short month names
+#
+sty
+lut
+mar
+kwi
+maj
+cze
+lip
+sie
+wrz
+pa¼
+lis
+gru
+#
+# Long month names (as in a date)
+#
+stycznia
+lutego
+marca
+kwietnia
+maja
+czerwca
+lipca
+sierpnia
+wrze¶nia
+pa¼dziernika
+listopada
+grudnia
+#
+# Short weekday names
+#
+ndz
+pon
+wto
+¶ro
+czw
+ptk
+sob
+#
+# Long weekday names
+#
+niedziela
+poniedzia³ek
+wtorek
+¶roda
+czwartek
+pi±tek
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y.%m.%d
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %X %Y %Z
+#
+# Long month names (without case ending)
+#
+styczeñ
+luty
+marzec
+kwiecieñ
+maj
+czerwiec
+lipiec
+sierpieñ
+wrzesieñ
+pa¼dziernik
+listopad
+grudzieñ
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/pl_PL.UTF-8.src b/share/timedef/pl_PL.UTF-8.src
new file mode 100644
index 0000000..66d7259
--- /dev/null
+++ b/share/timedef/pl_PL.UTF-8.src
@@ -0,0 +1,99 @@
+# $FreeBSD$
+#
+# Short month names
+#
+sty
+lut
+mar
+kwi
+maj
+cze
+lip
+sie
+wrz
+paź
+lis
+gru
+#
+# Long month names (as in a date)
+#
+stycznia
+lutego
+marca
+kwietnia
+maja
+czerwca
+lipca
+sierpnia
+września
+października
+listopada
+grudnia
+#
+# Short weekday names
+#
+ndz
+pon
+wto
+śro
+czw
+ptk
+sob
+#
+# Long weekday names
+#
+niedziela
+poniedziałek
+wtorek
+środa
+czwartek
+piÄ…tek
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y.%m.%d
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %X %Y %Z
+#
+# Long month names (without case ending)
+#
+styczeń
+luty
+marzec
+kwiecień
+maj
+czerwiec
+lipiec
+sierpień
+wrzesień
+październik
+listopad
+grudzień
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/pt_BR.ISO8859-1.src b/share/timedef/pt_BR.ISO8859-1.src
new file mode 100644
index 0000000..98c9ed7
--- /dev/null
+++ b/share/timedef/pt_BR.ISO8859-1.src
@@ -0,0 +1,103 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+# In Portugal we don't use the 12 + am/pm but the 24h format
+#
+# Short month names
+#
+Jan
+Fev
+Mar
+Abr
+Mai
+Jun
+Jul
+Ago
+Set
+Out
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# Short weekday names
+#
+Dom
+Seg
+Ter
+Qua
+Qui
+Sex
+Sáb
+#
+# Long weekday names
+#
+Domingo
+Segunda Feira
+Terça Feira
+Quarta Feira
+Quinta Feira
+Sexta Feira
+Sábado
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/pt_BR.UTF-8.src b/share/timedef/pt_BR.UTF-8.src
new file mode 100644
index 0000000..7243e58
--- /dev/null
+++ b/share/timedef/pt_BR.UTF-8.src
@@ -0,0 +1,103 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+# In Portugal we don't use the 12 + am/pm but the 24h format
+#
+# Short month names
+#
+Jan
+Fev
+Mar
+Abr
+Mai
+Jun
+Jul
+Ago
+Set
+Out
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# Short weekday names
+#
+Dom
+Seg
+Ter
+Qua
+Qui
+Sex
+Sáb
+#
+# Long weekday names
+#
+Domingo
+Segunda Feira
+Terça Feira
+Quarta Feira
+Quinta Feira
+Sexta Feira
+Sábado
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/pt_PT.ISO8859-1.src b/share/timedef/pt_PT.ISO8859-1.src
new file mode 100644
index 0000000..e030722
--- /dev/null
+++ b/share/timedef/pt_PT.ISO8859-1.src
@@ -0,0 +1,103 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+# In Portugal we don't use the 12 + am/pm but the 24h format
+#
+# Short month names
+#
+Jan
+Fev
+Mar
+Abr
+Mai
+Jun
+Jul
+Ago
+Set
+Out
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# Short weekday names
+#
+Dom
+Seg
+Ter
+Qua
+Qui
+Sex
+Sáb
+#
+# Long weekday names
+#
+Domingo
+Segunda Feira
+Terça Feira
+Quarta Feira
+Quinta Feira
+Sexta Feira
+Sábado
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/pt_PT.UTF-8.src b/share/timedef/pt_PT.UTF-8.src
new file mode 100644
index 0000000..3889f8e
--- /dev/null
+++ b/share/timedef/pt_PT.UTF-8.src
@@ -0,0 +1,103 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+# In Portugal we don't use the 12 + am/pm but the 24h format
+#
+# Short month names
+#
+Jan
+Fev
+Mar
+Abr
+Mai
+Jun
+Jul
+Ago
+Set
+Out
+Nov
+Dez
+#
+# Long month names (as in a date)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# Short weekday names
+#
+Dom
+Seg
+Ter
+Qua
+Qui
+Sex
+Sáb
+#
+# Long weekday names
+#
+Domingo
+Segunda Feira
+Terça Feira
+Quarta Feira
+Quinta Feira
+Sexta Feira
+Sábado
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Janeiro
+Fevereiro
+Março
+Abril
+Maio
+Junho
+Julho
+Agosto
+Setembro
+Outubro
+Novembro
+Dezembro
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/ro_RO.ISO8859-2.src b/share/timedef/ro_RO.ISO8859-2.src
new file mode 100644
index 0000000..e7d4b1b
--- /dev/null
+++ b/share/timedef/ro_RO.ISO8859-2.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ian
+Feb
+Mar
+Apr
+Mai
+Iun
+Iul
+Aug
+Sep
+Oct
+Noi
+Dec
+#
+# Long month names (as in a date)
+#
+Ianuarie
+Februarie
+Martie
+Aprilie
+Mai
+Iunie
+Iulie
+August
+Septembrie
+Octombrie
+Noiembrie
+Decembrie
+#
+# Short weekday names
+#
+Dum
+Lun
+Mar
+Mie
+Joi
+Vin
+Sâm
+#
+# Long weekday names
+#
+Duminicã
+Luni
+Marþi
+Miercuri
+Joi
+Vineri
+Sâmbãtã
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %Y %X
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Ianuarie
+Februarie
+Martie
+Aprilie
+Mai
+Iunie
+Iulie
+August
+Septembrie
+Octombrie
+Noiembrie
+Decembrie
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ro_RO.UTF-8.src b/share/timedef/ro_RO.UTF-8.src
new file mode 100644
index 0000000..b353e7d
--- /dev/null
+++ b/share/timedef/ro_RO.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ian
+Feb
+Mar
+Apr
+Mai
+Iun
+Iul
+Aug
+Sep
+Oct
+Noi
+Dec
+#
+# Long month names (as in a date)
+#
+Ianuarie
+Februarie
+Martie
+Aprilie
+Mai
+Iunie
+Iulie
+August
+Septembrie
+Octombrie
+Noiembrie
+Decembrie
+#
+# Short weekday names
+#
+Dum
+Lun
+Mar
+Mie
+Joi
+Vin
+Sâm
+#
+# Long weekday names
+#
+Duminică
+Luni
+Marţi
+Miercuri
+Joi
+Vineri
+Sâmbătă
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %Y %X
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Ianuarie
+Februarie
+Martie
+Aprilie
+Mai
+Iunie
+Iulie
+August
+Septembrie
+Octombrie
+Noiembrie
+Decembrie
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/ru_RU.CP1251.src b/share/timedef/ru_RU.CP1251.src
new file mode 100644
index 0000000..93eaf12
--- /dev/null
+++ b/share/timedef/ru_RU.CP1251.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ÿíâ
+ôåâ
+ìàð
+àïð
+ìàé
+èþí
+èþë
+àâã
+ñåí
+îêò
+íîÿ
+äåê
+#
+# Long month names (as in a date)
+#
+ÿíâàðÿ
+ôåâðàëÿ
+ìàðòà
+àïðåëÿ
+ìàÿ
+èþíÿ
+èþëÿ
+àâãóñòà
+ñåíòÿáðÿ
+îêòÿáðÿ
+íîÿáðÿ
+äåêàáðÿ
+#
+# Short weekday names
+#
+âñ
+ïí
+âò
+ñð
+÷ò
+ïò
+ñá
+#
+# Long weekday names
+#
+âîñêðåñåíüå
+ïîíåäåëüíèê
+âòîðíèê
+ñðåäà
+÷åòâåðã
+ïÿòíèöà
+ñóááîòà
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y ã. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y ã. %X (%Z)
+#
+# Long month names (without case ending)
+#
+ÿíâàðü
+ôåâðàëü
+ìàðò
+àïðåëü
+ìàé
+èþíü
+èþëü
+àâãóñò
+ñåíòÿáðü
+îêòÿáðü
+íîÿáðü
+äåêàáðü
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/ru_RU.CP866.src b/share/timedef/ru_RU.CP866.src
new file mode 100644
index 0000000..3157dd4
--- /dev/null
+++ b/share/timedef/ru_RU.CP866.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ï­¢
+䥢
+¬ à
+ ¯à
+¬ ©
+¨î­
+¨î«
+ ¢£
+ᥭ
+®ªâ
+­®ï
+¤¥ª
+#
+# Long month names (as in a date)
+#
+ï­¢ àï
+䥢ࠫï
+¬ àâ 
+ ¯à¥«ï
+¬ ï
+¨î­ï
+¨î«ï
+ ¢£ãáâ 
+ᥭâï¡àï
+®ªâï¡àï
+­®ï¡àï
+¤¥ª ¡àï
+#
+# Short weekday names
+#
+¢á
+¯­
+¢â
+áà
+çâ
+¯â
+á¡
+#
+# Long weekday names
+#
+¢®áªà¥á¥­ì¥
+¯®­¥¤¥«ì­¨ª
+¢â®à­¨ª
+á। 
+ç¥â¢¥à£
+¯ïâ­¨æ 
+áã¡¡®â 
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y £. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y £. %X (%Z)
+#
+# Long month names (without case ending)
+#
+ï­¢ àì
+䥢ࠫì
+¬ àâ
+ ¯à¥«ì
+¬ ©
+¨î­ì
+¨î«ì
+ ¢£ãáâ
+ᥭâï¡àì
+®ªâï¡àì
+­®ï¡àì
+¤¥ª ¡àì
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/ru_RU.ISO8859-5.src b/share/timedef/ru_RU.ISO8859-5.src
new file mode 100644
index 0000000..6685577
--- /dev/null
+++ b/share/timedef/ru_RU.ISO8859-5.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ïÝÒ
+äÕÒ
+ÜÐà
+Ðßà
+ÜÐÙ
+ØîÝ
+ØîÛ
+ÐÒÓ
+áÕÝ
+ÞÚâ
+ÝÞï
+ÔÕÚ
+#
+# Long month names (as in a date)
+#
+ïÝÒÐàï
+äÕÒàÐÛï
+ÜÐàâÐ
+ÐßàÕÛï
+ÜÐï
+ØîÝï
+ØîÛï
+ÐÒÓãáâÐ
+áÕÝâïÑàï
+ÞÚâïÑàï
+ÝÞïÑàï
+ÔÕÚÐÑàï
+#
+# Short weekday names
+#
+Òá
+ßÝ
+Òâ
+áà
+çâ
+ßâ
+áÑ
+#
+# Long weekday names
+#
+ÒÞáÚàÕáÕÝìÕ
+ßÞÝÕÔÕÛìÝØÚ
+ÒâÞàÝØÚ
+áàÕÔÐ
+çÕâÒÕàÓ
+ßïâÝØæÐ
+áãÑÑÞâÐ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y Ó. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y Ó. %X (%Z)
+#
+# Long month names (without case ending)
+#
+ïÝÒÐàì
+äÕÒàÐÛì
+ÜÐàâ
+ÐßàÕÛì
+ÜÐÙ
+ØîÝì
+ØîÛì
+ÐÒÓãáâ
+áÕÝâïÑàì
+ÞÚâïÑàì
+ÝÞïÑàì
+ÔÕÚÐÑàì
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/ru_RU.KOI8-R.src b/share/timedef/ru_RU.KOI8-R.src
new file mode 100644
index 0000000..61fd42b
--- /dev/null
+++ b/share/timedef/ru_RU.KOI8-R.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ÑÎ×
+ÆÅ×
+ÍÁÒ
+ÁÐÒ
+ÍÁÊ
+ÉÀÎ
+ÉÀÌ
+Á×Ç
+ÓÅÎ
+ÏËÔ
+ÎÏÑ
+ÄÅË
+#
+# Long month names (as in a date)
+#
+ÑÎ×ÁÒÑ
+ÆÅ×ÒÁÌÑ
+ÍÁÒÔÁ
+ÁÐÒÅÌÑ
+ÍÁÑ
+ÉÀÎÑ
+ÉÀÌÑ
+Á×ÇÕÓÔÁ
+ÓÅÎÔÑÂÒÑ
+ÏËÔÑÂÒÑ
+ÎÏÑÂÒÑ
+ÄÅËÁÂÒÑ
+#
+# Short weekday names
+#
+×Ó
+ÐÎ
+×Ô
+ÓÒ
+ÞÔ
+ÐÔ
+ÓÂ
+#
+# Long weekday names
+#
+×ÏÓËÒÅÓÅÎØÅ
+ÐÏÎÅÄÅÌØÎÉË
+×ÔÏÒÎÉË
+ÓÒÅÄÁ
+ÞÅÔ×ÅÒÇ
+ÐÑÔÎÉÃÁ
+ÓÕÂÂÏÔÁ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y Ç. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y Ç. %X (%Z)
+#
+# Long month names (without case ending)
+#
+ÑÎ×ÁÒØ
+ÆÅ×ÒÁÌØ
+ÍÁÒÔ
+ÁÐÒÅÌØ
+ÍÁÊ
+ÉÀÎØ
+ÉÀÌØ
+Á×ÇÕÓÔ
+ÓÅÎÔÑÂÒØ
+ÏËÔÑÂÒØ
+ÎÏÑÂÒØ
+ÄÅËÁÂÒØ
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/ru_RU.UTF-8.src b/share/timedef/ru_RU.UTF-8.src
new file mode 100644
index 0000000..42fac31
--- /dev/null
+++ b/share/timedef/ru_RU.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ñнв
+фев
+мар
+апр
+май
+июн
+июл
+авг
+Ñен
+окт
+ноÑ
+дек
+#
+# Long month names (as in a date)
+#
+ÑнварÑ
+февралÑ
+марта
+апрелÑ
+маÑ
+июнÑ
+июлÑ
+авгуÑта
+ÑентÑбрÑ
+октÑбрÑ
+ноÑбрÑ
+декабрÑ
+#
+# Short weekday names
+#
+вÑ
+пн
+вт
+ÑÑ€
+чт
+пт
+Ñб
+#
+# Long weekday names
+#
+воÑкреÑенье
+понедельник
+вторник
+Ñреда
+четверг
+пÑтница
+Ñуббота
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%A, %e %B %Y г. %X
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%A, %e %B %Y г. %X (%Z)
+#
+# Long month names (without case ending)
+#
+Ñнварь
+февраль
+март
+апрель
+май
+июнь
+июль
+авгуÑÑ‚
+ÑентÑбрь
+октÑбрь
+ноÑбрь
+декабрь
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/sk_SK.ISO8859-2.src b/share/timedef/sk_SK.ISO8859-2.src
new file mode 100644
index 0000000..4a7d97b
--- /dev/null
+++ b/share/timedef/sk_SK.ISO8859-2.src
@@ -0,0 +1,105 @@
+# Slovak month and day names
+# by Juraj Bednar <juraj@bednar.sk>
+#
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+máj
+jún
+júl
+aug
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+január
+február
+marec
+apríl
+máj
+jún
+júl
+august
+september
+október
+november
+december
+#
+# Short weekday names
+#
+ne
+po
+ut
+st
+¹t
+pi
+so
+#
+# Long weekday names
+#
+nedeµa
+pondelok
+utorok
+streda
+¹tvrtok
+piatok
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e. %B %Y %X %Z
+#
+# Long month names (without case ending)
+#
+január
+február
+marec
+apríl
+máj
+jún
+júl
+august
+september
+október
+november
+december
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/sk_SK.UTF-8.src b/share/timedef/sk_SK.UTF-8.src
new file mode 100644
index 0000000..6987d02
--- /dev/null
+++ b/share/timedef/sk_SK.UTF-8.src
@@ -0,0 +1,105 @@
+# Slovak month and day names
+# by Juraj Bednar <juraj@bednar.sk>
+#
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+máj
+jún
+júl
+aug
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+január
+február
+marec
+apríl
+máj
+jún
+júl
+august
+september
+október
+november
+december
+#
+# Short weekday names
+#
+ne
+po
+ut
+st
+Å¡t
+pi
+so
+#
+# Long weekday names
+#
+nedeľa
+pondelok
+utorok
+streda
+Å¡tvrtok
+piatok
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e. %B %Y %X %Z
+#
+# Long month names (without case ending)
+#
+január
+február
+marec
+apríl
+máj
+jún
+júl
+august
+september
+október
+november
+december
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/sl_SI.ISO8859-2.src b/share/timedef/sl_SI.ISO8859-2.src
new file mode 100644
index 0000000..2ac54d6
--- /dev/null
+++ b/share/timedef/sl_SI.ISO8859-2.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+maj
+jun
+jul
+avg
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+januar
+februar
+marec
+april
+maj
+junij
+julij
+avgust
+september
+oktober
+november
+december
+#
+# Short weekday names
+#
+ned
+pon
+tor
+sre
+èet
+pet
+sob
+#
+# Long weekday names
+#
+nedelja
+ponedeljek
+torek
+sreda
+èetrtek
+petek
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+marec
+april
+maj
+junij
+julij
+avgust
+september
+oktober
+november
+december
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/sl_SI.UTF-8.src b/share/timedef/sl_SI.UTF-8.src
new file mode 100644
index 0000000..9eea0f3
--- /dev/null
+++ b/share/timedef/sl_SI.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+maj
+jun
+jul
+avg
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+januar
+februar
+marec
+april
+maj
+junij
+julij
+avgust
+september
+oktober
+november
+december
+#
+# Short weekday names
+#
+ned
+pon
+tor
+sre
+Äet
+pet
+sob
+#
+# Long weekday names
+#
+nedelja
+ponedeljek
+torek
+sreda
+Äetrtek
+petek
+sobota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+marec
+april
+maj
+junij
+julij
+avgust
+september
+oktober
+november
+december
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/sr_YU.ISO8859-2.src b/share/timedef/sr_YU.ISO8859-2.src
new file mode 100644
index 0000000..7c2470b
--- /dev/null
+++ b/share/timedef/sr_YU.ISO8859-2.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+jan
+feb
+mar
+apr
+maj
+jun
+jul
+avg
+sep
+okt
+nov
+dec
+#
+# Long month names (as in a date)
+#
+januar
+februar
+mart
+april
+maj
+juni
+juli
+avgust
+septembar
+oktobar
+novembar
+decembar
+#
+# Short weekday names
+#
+ned
+pon
+uto
+sre
+èet
+pet
+sub
+#
+# Long weekday names
+#
+nedelja
+ponedeljak
+utorak
+sreda
+èetvrtak
+petak
+subota
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+januar
+februar
+mart
+april
+maj
+juni
+juli
+avgust
+septembar
+oktobar
+novembar
+decembar
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/sr_YU.ISO8859-5.src b/share/timedef/sr_YU.ISO8859-5.src
new file mode 100644
index 0000000..bd51e11
--- /dev/null
+++ b/share/timedef/sr_YU.ISO8859-5.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+øÐÝ
+äÕÑ
+ÜÐà
+Ðßà
+ÜÐø
+øãÝ
+øãÛ
+ÐÒÓ
+áÕß
+ÞÚâ
+ÝÞÒ
+ÔÕæ
+#
+# Long month names (as in a date)
+#
+øÐÝãaà
+äÕÑàãÐà
+ÜÐàâ
+ÐßàØÛ
+ÜÐø
+øãÝØ
+øãÛØ
+ÐÒÓãáâ
+áÕßâÕÜÑÐà
+ÞÚâÞÑÐà
+ÝÞÒÕÜÑÐà
+ÔÕæÕÜÑÐà
+#
+# Short weekday names
+#
+ÝÕÔ
+ßÞÝ
+ãâÞ
+áàÕ
+çÕâ
+ßÕâ
+áãÑ
+#
+# Long weekday names
+#
+ÝÕÔÕùÐ
+ßÞÝÕÔÕùÐÚ
+ãâÞàÐÚ
+áàÕÔÐ
+çÕâÒàâÐÚ
+ßÕâÐÚ
+áãÑÞâÐ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+øÐÝãaà
+äÕÑàãÐà
+ÜÐàâ
+ÐßàØÛ
+ÜÐø
+øãÝØ
+øãÛØ
+ÐÒÓãáâ
+áÕßâÕÜÑÐà
+ÞÚâÞÑÐà
+ÝÞÒÕÜÑÐà
+ÔÕæÕÜÑÐà
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/sr_YU.UTF-8.src b/share/timedef/sr_YU.UTF-8.src
new file mode 100644
index 0000000..2990439
--- /dev/null
+++ b/share/timedef/sr_YU.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+јан
+феб
+мар
+апр
+мај
+јун
+јул
+авг
+Ñеп
+окт
+нов
+дец
+#
+# Long month names (as in a date)
+#
+јануaр
+фебруар
+март
+април
+мај
+јуни
+јули
+авгуÑÑ‚
+Ñептембар
+октобар
+новембар
+децембар
+#
+# Short weekday names
+#
+нед
+пон
+уто
+Ñре
+чет
+пет
+Ñуб
+#
+# Long weekday names
+#
+недеља
+понедељак
+уторак
+Ñреда
+четвртак
+петак
+Ñубота
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+јануaр
+фебруар
+март
+април
+мај
+јуни
+јули
+авгуÑÑ‚
+Ñептембар
+октобар
+новембар
+децембар
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/sv_SE.ISO8859-1.src b/share/timedef/sv_SE.ISO8859-1.src
new file mode 100644
index 0000000..272e29d
--- /dev/null
+++ b/share/timedef/sv_SE.ISO8859-1.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mar
+Apr
+Maj
+Jun
+Jul
+Aug
+Sep
+Okt
+Nov
+Dec
+#
+# Long month names (as in a date)
+#
+Januari
+Februari
+Mars
+April
+Maj
+Juni
+Juli
+Augusti
+September
+Oktober
+November
+December
+#
+# Short weekday names
+#
+Sön
+Mån
+Tis
+Ons
+Tor
+Fre
+Lör
+#
+# Long weekday names
+#
+Söndag
+Måndag
+Tisdag
+Onsdag
+Torsdag
+Fredag
+Lördag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y-%m-%d
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Januari
+Februari
+Mars
+April
+Maj
+Juni
+Juli
+Augusti
+September
+Oktober
+November
+December
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/sv_SE.UTF-8.src b/share/timedef/sv_SE.UTF-8.src
new file mode 100644
index 0000000..316db98
--- /dev/null
+++ b/share/timedef/sv_SE.UTF-8.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Jan
+Feb
+Mar
+Apr
+Maj
+Jun
+Jul
+Aug
+Sep
+Okt
+Nov
+Dec
+#
+# Long month names (as in a date)
+#
+Januari
+Februari
+Mars
+April
+Maj
+Juni
+Juli
+Augusti
+September
+Oktober
+November
+December
+#
+# Short weekday names
+#
+Sön
+MÃ¥n
+Tis
+Ons
+Tor
+Fre
+Lör
+#
+# Long weekday names
+#
+Söndag
+MÃ¥ndag
+Tisdag
+Onsdag
+Torsdag
+Fredag
+Lördag
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%Y-%m-%d
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+am
+#
+# pm
+#
+pm
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Januari
+Februari
+Mars
+April
+Maj
+Juni
+Juli
+Augusti
+September
+Oktober
+November
+December
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/tr_TR.ISO8859-9.src b/share/timedef/tr_TR.ISO8859-9.src
new file mode 100644
index 0000000..d8a5f60
--- /dev/null
+++ b/share/timedef/tr_TR.ISO8859-9.src
@@ -0,0 +1,104 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Evren Yurtesen <yurtesen@ispro.net.tr>
+#
+# Short month names
+#
+Oca
+Þub
+Mar
+Nis
+May
+Haz
+Tem
+Aðu
+Eyl
+Eki
+Kas
+Ara
+#
+# Long month names (as in a date)
+#
+Ocak
+Þubat
+Mart
+Nisan
+Mayýs
+Haziran
+Temmuz
+Aðustos
+Eylül
+Ekim
+Kasým
+Aralýk
+#
+# Short weekday names
+#
+Paz
+Pts
+Sal
+Çar
+Per
+Cum
+Cts
+#
+# Long weekday names
+#
+Pazar
+Pazartesi
+Salý
+Çarþamba
+Perþembe
+Cuma
+Cumartesi
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%e %b %Y %a %Z %X
+#
+# Long month names (without case ending)
+#
+Ocak
+Þubat
+Mart
+Nisan
+Mayýs
+Haziran
+Temmuz
+Aðustos
+Eylül
+Ekim
+Kasým
+Aralýk
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/tr_TR.UTF-8.src b/share/timedef/tr_TR.UTF-8.src
new file mode 100644
index 0000000..def5842
--- /dev/null
+++ b/share/timedef/tr_TR.UTF-8.src
@@ -0,0 +1,104 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Evren Yurtesen <yurtesen@ispro.net.tr>
+#
+# Short month names
+#
+Oca
+Åžub
+Mar
+Nis
+May
+Haz
+Tem
+AÄŸu
+Eyl
+Eki
+Kas
+Ara
+#
+# Long month names (as in a date)
+#
+Ocak
+Åžubat
+Mart
+Nisan
+Mayıs
+Haziran
+Temmuz
+AÄŸustos
+Eylül
+Ekim
+Kasım
+Aralık
+#
+# Short weekday names
+#
+Paz
+Pts
+Sal
+Çar
+Per
+Cum
+Cts
+#
+# Long weekday names
+#
+Pazar
+Pazartesi
+Salı
+Çarşamba
+PerÅŸembe
+Cuma
+Cumartesi
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d/%m/%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+AM
+#
+# pm
+#
+PM
+#
+# date_fmt
+#
+%e %b %Y %a %Z %X
+#
+# Long month names (without case ending)
+#
+Ocak
+Åžubat
+Mart
+Nisan
+Mayıs
+Haziran
+Temmuz
+AÄŸustos
+Eylül
+Ekim
+Kasım
+Aralık
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/uk_UA.CP1251.src b/share/timedef/uk_UA.CP1251.src
new file mode 100644
index 0000000..dc98c49
--- /dev/null
+++ b/share/timedef/uk_UA.CP1251.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ñ³÷
+ëþò
+áåð
+êâ³
+òðà
+÷åð
+ëèï
+ñåð
+âåð
+æîâ
+ëèñ
+ãðó
+#
+# Long month names (as in a date)
+#
+ñ³÷íÿ
+ëþòîãî
+áåðåçíÿ
+êâ³òíÿ
+òðàâíÿ
+÷åðâíÿ
+ëèïíÿ
+ñåðïíÿ
+âåðåñíÿ
+æîâòíÿ
+ëèñòîïàäà
+ãðóäíÿ
+#
+# Short weekday names
+#
+íä
+ïí
+âò
+ñð
+÷ò
+ïò
+ñá
+#
+# Long weekday names
+#
+íåä³ëÿ
+ïîíåä³ëîê
+â³âòîðîê
+ñåðåäà
+÷åòâåð
+ï'ÿòíèöÿ
+ñóáîòà
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+ñ³÷åíü
+ëþòèé
+áåðåçåíü
+êâ³òåíü
+òðàâåíü
+÷åðâåíü
+ëèïåíü
+ñåðïåíü
+âåðåñåíü
+æîâòåíü
+ëèñòîïàä
+ãðóäåíü
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/uk_UA.ISO8859-5.src b/share/timedef/uk_UA.ISO8859-5.src
new file mode 100644
index 0000000..cee575b
--- /dev/null
+++ b/share/timedef/uk_UA.ISO8859-5.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+áöç
+Ûîâ
+ÑÕà
+ÚÒö
+âàÐ
+çÕà
+ÛØß
+áÕà
+ÒÕà
+ÖÞÒ
+ÛØá
+Óàã
+#
+# Long month names (as in a date)
+#
+áöçÝï
+ÛîâÞÓÞ
+ÑÕàÕ×Ýï
+ÚÒöâÝï
+âàÐÒÝï
+çÕàÒÝï
+ÛØßÝï
+áÕàßÝï
+ÒÕàÕáÝï
+ÖÞÒâÝï
+ÛØáâÞßÐÔÐ
+ÓàãÔÝï
+#
+# Short weekday names
+#
+ÝÔ
+ßÝ
+Òâ
+áà
+çâ
+ßâ
+áÑ
+#
+# Long weekday names
+#
+ÝÕÔöÛï
+ßÞÝÕÔöÛÞÚ
+ÒöÒâÞàÞÚ
+áÕàÕÔÐ
+çÕâÒÕà
+ß'ïâÝØæï
+áãÑÞâÐ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+áöçÕÝì
+ÛîâØÙ
+ÑÕàÕ×ÕÝì
+ÚÒöâÕÝì
+âàÐÒÕÝì
+çÕàÒÕÝì
+ÛØßÕÝì
+áÕàßÕÝì
+ÒÕàÕáÕÝì
+ÖÞÒâÕÝì
+ÛØáâÞßÐÔ
+ÓàãÔÕÝì
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/uk_UA.KOI8-U.src b/share/timedef/uk_UA.KOI8-U.src
new file mode 100644
index 0000000..3b711d7
--- /dev/null
+++ b/share/timedef/uk_UA.KOI8-U.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ó¦Þ
+ÌÀÔ
+ÂÅÒ
+Ëצ
+ÔÒÁ
+ÞÅÒ
+ÌÉÐ
+ÓÅÒ
+×ÅÒ
+ÖÏ×
+ÌÉÓ
+ÇÒÕ
+#
+# Long month names (as in a date)
+#
+Ó¦ÞÎÑ
+ÌÀÔÏÇÏ
+ÂÅÒÅÚÎÑ
+ËצÔÎÑ
+ÔÒÁ×ÎÑ
+ÞÅÒ×ÎÑ
+ÌÉÐÎÑ
+ÓÅÒÐÎÑ
+×ÅÒÅÓÎÑ
+ÖÏ×ÔÎÑ
+ÌÉÓÔÏÐÁÄÁ
+ÇÒÕÄÎÑ
+#
+# Short weekday names
+#
+ÎÄ
+ÐÎ
+×Ô
+ÓÒ
+ÞÔ
+ÐÔ
+ÓÂ
+#
+# Long weekday names
+#
+ÎÅĦÌÑ
+ÐÏÎÅĦÌÏË
+צ×ÔÏÒÏË
+ÓÅÒÅÄÁ
+ÞÅÔ×ÅÒ
+Ð'ÑÔÎÉÃÑ
+ÓÕÂÏÔÁ
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Ó¦ÞÅÎØ
+ÌÀÔÉÊ
+ÂÅÒÅÚÅÎØ
+ËצÔÅÎØ
+ÔÒÁ×ÅÎØ
+ÞÅÒ×ÅÎØ
+ÌÉÐÅÎØ
+ÓÅÒÐÅÎØ
+×ÅÒÅÓÅÎØ
+ÖÏ×ÔÅÎØ
+ÌÉÓÔÏÐÁÄ
+ÇÒÕÄÅÎØ
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/uk_UA.UTF-8.src b/share/timedef/uk_UA.UTF-8.src
new file mode 100644
index 0000000..b4edbe9
--- /dev/null
+++ b/share/timedef/uk_UA.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+Ñіч
+лют
+бер
+кві
+тра
+чер
+лип
+Ñер
+вер
+жов
+лиÑ
+гру
+#
+# Long month names (as in a date)
+#
+ÑічнÑ
+лютого
+березнÑ
+квітнÑ
+травнÑ
+червнÑ
+липнÑ
+ÑерпнÑ
+вереÑнÑ
+жовтнÑ
+лиÑтопада
+груднÑ
+#
+# Short weekday names
+#
+нд
+пн
+вт
+ÑÑ€
+чт
+пт
+Ñб
+#
+# Long weekday names
+#
+неділÑ
+понеділок
+вівторок
+Ñереда
+четвер
+п'ÑтницÑ
+Ñубота
+#
+# X_fmt
+#
+%H:%M:%S
+#
+# x_fmt
+#
+%d.%m.%Y
+#
+# c_fmt
+#
+%a %e %b %X %Y
+#
+# am
+#
+
+#
+# pm
+#
+
+#
+# date_fmt
+#
+%a %e %b %Y %X %Z
+#
+# Long month names (without case ending)
+#
+Ñічень
+лютий
+березень
+квітень
+травень
+червень
+липень
+Ñерпень
+вереÑень
+жовтень
+лиÑтопад
+грудень
+#
+# md_order
+#
+dm
+#
+# ampm_fmt
+#
+
+# EOF
diff --git a/share/timedef/zh_CN.GB18030.src b/share/timedef/zh_CN.GB18030.src
new file mode 100644
index 0000000..3000022
--- /dev/null
+++ b/share/timedef/zh_CN.GB18030.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+Ò»ÔÂ
+¶þÔÂ
+ÈýÔÂ
+ËÄÔÂ
+ÎåÔÂ
+ÁùÔÂ
+ÆßÔÂ
+°ËÔÂ
+¾ÅÔÂ
+Ê®ÔÂ
+ʮһÔÂ
+Ê®¶þÔÂ
+#
+# Short weekday names
+#
+ÈÕ
+Ò»
+¶þ
+Èý
+ËÄ
+Îå
+Áù
+#
+# Long weekday names
+#
+ÐÇÆÚÈÕ
+ÐÇÆÚÒ»
+ÐÇÆÚ¶þ
+ÐÇÆÚÈý
+ÐÇÆÚËÄ
+ÐÇÆÚÎå
+ÐÇÆÚÁù
+#
+# X_fmt
+#
+%Hʱ%M·Ö%SÃë
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b/%e %T %Y
+#
+# am
+#
+ÉÏÎç
+#
+# pm
+#
+ÏÂÎç
+#
+# date_fmt
+#
+%YÄê%bÔÂ%eÈÕ %A %X %Z
+#
+# Long month names (without case ending)
+#
+Ò»ÔÂ
+¶þÔÂ
+ÈýÔÂ
+ËÄÔÂ
+ÎåÔÂ
+ÁùÔÂ
+ÆßÔÂ
+°ËÔÂ
+¾ÅÔÂ
+Ê®ÔÂ
+ʮһÔÂ
+Ê®¶þÔÂ
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/zh_CN.GB2312.src b/share/timedef/zh_CN.GB2312.src
new file mode 100644
index 0000000..3000022
--- /dev/null
+++ b/share/timedef/zh_CN.GB2312.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+Ò»ÔÂ
+¶þÔÂ
+ÈýÔÂ
+ËÄÔÂ
+ÎåÔÂ
+ÁùÔÂ
+ÆßÔÂ
+°ËÔÂ
+¾ÅÔÂ
+Ê®ÔÂ
+ʮһÔÂ
+Ê®¶þÔÂ
+#
+# Short weekday names
+#
+ÈÕ
+Ò»
+¶þ
+Èý
+ËÄ
+Îå
+Áù
+#
+# Long weekday names
+#
+ÐÇÆÚÈÕ
+ÐÇÆÚÒ»
+ÐÇÆÚ¶þ
+ÐÇÆÚÈý
+ÐÇÆÚËÄ
+ÐÇÆÚÎå
+ÐÇÆÚÁù
+#
+# X_fmt
+#
+%Hʱ%M·Ö%SÃë
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b/%e %T %Y
+#
+# am
+#
+ÉÏÎç
+#
+# pm
+#
+ÏÂÎç
+#
+# date_fmt
+#
+%YÄê%bÔÂ%eÈÕ %A %X %Z
+#
+# Long month names (without case ending)
+#
+Ò»ÔÂ
+¶þÔÂ
+ÈýÔÂ
+ËÄÔÂ
+ÎåÔÂ
+ÁùÔÂ
+ÆßÔÂ
+°ËÔÂ
+¾ÅÔÂ
+Ê®ÔÂ
+ʮһÔÂ
+Ê®¶þÔÂ
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/zh_CN.UTF-8.src b/share/timedef/zh_CN.UTF-8.src
new file mode 100644
index 0000000..6b1d023
--- /dev/null
+++ b/share/timedef/zh_CN.UTF-8.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+一月
+二月
+三月
+四月
+五月
+六月
+七月
+八月
+ä¹æœˆ
+å月
+å一月
+å二月
+#
+# Short weekday names
+#
+æ—¥
+一
+二
+三
+å››
+五
+å…­
+#
+# Long weekday names
+#
+星期日
+星期一
+星期二
+星期三
+星期四
+星期五
+星期六
+#
+# X_fmt
+#
+%H时%M分%S秒
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b/%e %T %Y
+#
+# am
+#
+上åˆ
+#
+# pm
+#
+下åˆ
+#
+# date_fmt
+#
+%Y年%b月%e日 %A %X %Z
+#
+# Long month names (without case ending)
+#
+一月
+二月
+三月
+四月
+五月
+六月
+七月
+八月
+ä¹æœˆ
+å月
+å一月
+å二月
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/zh_CN.eucCN.src b/share/timedef/zh_CN.eucCN.src
new file mode 100644
index 0000000..3000022
--- /dev/null
+++ b/share/timedef/zh_CN.eucCN.src
@@ -0,0 +1,102 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+#
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+Ò»ÔÂ
+¶þÔÂ
+ÈýÔÂ
+ËÄÔÂ
+ÎåÔÂ
+ÁùÔÂ
+ÆßÔÂ
+°ËÔÂ
+¾ÅÔÂ
+Ê®ÔÂ
+ʮһÔÂ
+Ê®¶þÔÂ
+#
+# Short weekday names
+#
+ÈÕ
+Ò»
+¶þ
+Èý
+ËÄ
+Îå
+Áù
+#
+# Long weekday names
+#
+ÐÇÆÚÈÕ
+ÐÇÆÚÒ»
+ÐÇÆÚ¶þ
+ÐÇÆÚÈý
+ÐÇÆÚËÄ
+ÐÇÆÚÎå
+ÐÇÆÚÁù
+#
+# X_fmt
+#
+%Hʱ%M·Ö%SÃë
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b/%e %T %Y
+#
+# am
+#
+ÉÏÎç
+#
+# pm
+#
+ÏÂÎç
+#
+# date_fmt
+#
+%YÄê%bÔÂ%eÈÕ %A %X %Z
+#
+# Long month names (without case ending)
+#
+Ò»ÔÂ
+¶þÔÂ
+ÈýÔÂ
+ËÄÔÂ
+ÎåÔÂ
+ÁùÔÂ
+ÆßÔÂ
+°ËÔÂ
+¾ÅÔÂ
+Ê®ÔÂ
+ʮһÔÂ
+Ê®¶þÔÂ
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/zh_TW.Big5.src b/share/timedef/zh_TW.Big5.src
new file mode 100644
index 0000000..dee99ae
--- /dev/null
+++ b/share/timedef/zh_TW.Big5.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+1¤ë
+2¤ë
+3¤ë
+4¤ë
+5¤ë
+6¤ë
+7¤ë
+8¤ë
+9¤ë
+10¤ë
+11¤ë
+12¤ë
+#
+# Short weekday names
+#
+¤é
+¤@
+¤G
+¤T
+¥|
+¤­
+¤»
+#
+# Long weekday names
+#
+©P¤é
+©P¤@
+©P¤G
+©P¤T
+©P¥|
+©P¤­
+©P¤»
+#
+# X_fmt
+#
+%H®É%M¤À%S¬í
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b/%e %T %Y
+#
+# am
+#
+¤W¤È
+#
+# pm
+#
+¤U¤È
+#
+# date_fmt
+#
+%Y¦~%b¤ë%e¤é %A %X %Z
+#
+# Long month names (without case ending)
+#
+1¤ë
+2¤ë
+3¤ë
+4¤ë
+5¤ë
+6¤ë
+7¤ë
+8¤ë
+9¤ë
+10¤ë
+11¤ë
+12¤ë
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/timedef/zh_TW.UTF-8.src b/share/timedef/zh_TW.UTF-8.src
new file mode 100644
index 0000000..22b6892
--- /dev/null
+++ b/share/timedef/zh_TW.UTF-8.src
@@ -0,0 +1,101 @@
+# $FreeBSD$
+#
+# WARNING: spaces may be essential at the end of lines
+# WARNING: empty lines are essential too
+#
+# Short month names
+ 1
+ 2
+ 3
+ 4
+ 5
+ 6
+ 7
+ 8
+ 9
+10
+11
+12
+#
+# Long month names (as in a date)
+#
+1月
+2月
+3月
+4月
+5月
+6月
+7月
+8月
+9月
+10月
+11月
+12月
+#
+# Short weekday names
+#
+æ—¥
+一
+二
+三
+å››
+五
+å…­
+#
+# Long weekday names
+#
+周日
+周一
+周二
+周三
+周四
+周五
+周六
+#
+# X_fmt
+#
+%H時%M分%S秒
+#
+# x_fmt
+#
+%Y/%m/%d
+#
+# c_fmt
+#
+%a %b/%e %T %Y
+#
+# am
+#
+上åˆ
+#
+# pm
+#
+下åˆ
+#
+# date_fmt
+#
+%Y年%b月%e日 %A %X %Z
+#
+# Long month names (without case ending)
+#
+1月
+2月
+3月
+4月
+5月
+6月
+7月
+8月
+9月
+10月
+11月
+12月
+#
+# md_order
+#
+md
+#
+# ampm_fmt
+#
+%I:%M:%S %p
+# EOF
diff --git a/share/zoneinfo/Makefile b/share/zoneinfo/Makefile
new file mode 100644
index 0000000..e254277
--- /dev/null
+++ b/share/zoneinfo/Makefile
@@ -0,0 +1,57 @@
+# $FreeBSD$
+
+#
+# HOW TO UPDATE THE ZONEINFO DATA
+#
+# With the use of subversion, this is a little bit simpler than the CVS method.
+#
+# Import the new sources to the vendor branch:
+#
+# $ cd ~/svn/vendor/tzdata/dist
+# $ tar zxvf /usr/ports/distfile/tzdata2008X.tar.gz
+# (check with "svn stat" and "svn diff" if it all makes sense)
+# $ svn commit # Commit message: "Vendor import of tzdata2008X (+details)"
+#
+# Tag it
+#
+# $ cd ~/svn/vendor/tzdata
+# $ svn cp svn+ssh://svn.freebsd.org/base/vendor/tzdata/dist \
+# svn+ssh://svn.freebsd.org/base/vendor/tzdata/tzdata2008X
+# $ svn update # Commit message: "Tag of tzdata2008X"
+#
+# Merge-from-vendor
+#
+# $ cd ~/svn/head/share/zoneinfo
+# $ svn update
+# $ svn merge -c X --accept=postpone \
+# svn+ssh://svn.freebsd.org/base/vendor/tzdata/dist .
+# $ svn update # Commit message: "MFV of tzdata2008X"
+#
+
+CLEANFILES+= yearistype
+
+.if defined(LEAPSECONDS)
+LEAPFILE= -L leapseconds
+.else
+LEAPFILE=
+.endif
+
+TZFILES= africa antarctica asia australasia etcetera europe \
+ factory northamerica southamerica
+POSIXRULES= America/New_York
+
+.if defined(OLDTIMEZONES)
+TZFILES+= backward systemv
+.endif
+
+all: yearistype
+
+beforeinstall:
+ umask 022; cd ${.CURDIR}; \
+ zic -D -d ${DESTDIR}/usr/share/zoneinfo -p ${POSIXRULES} \
+ -u ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
+ ${LEAPFILE} -y ${.OBJDIR}/yearistype ${TZFILES}
+ ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${NOBINMODE} \
+ ${.CURDIR}/zone.tab ${DESTDIR}/usr/share/zoneinfo/
+
+.include <bsd.prog.mk>
diff --git a/share/zoneinfo/africa b/share/zoneinfo/africa
new file mode 100644
index 0000000..34a62b9
--- /dev/null
+++ b/share/zoneinfo/africa
@@ -0,0 +1,840 @@
+# @(#)africa 8.17
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+#
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# Previous editions of this database used WAT, CAT, SAT, and EAT
+# for +0:00 through +3:00, respectively,
+# but Mark R V Murray reports that
+# `SAST' is the official abbreviation for +2:00 in the country of South Africa,
+# `CAT' is commonly used for +2:00 in countries north of South Africa, and
+# `WAT' is probably the best name for +1:00, as the common phrase for
+# the area that includes Nigeria is ``West Africa''.
+# He has heard of ``Western Sahara Time'' for +0:00 but can find no reference.
+#
+# To make things confusing, `WAT' seems to have been used for -1:00 long ago;
+# I'd guess that this was because people needed _some_ name for -1:00,
+# and at the time, far west Africa was the only major land area in -1:00.
+# This usage is now obsolete, as the last use of -1:00 on the African
+# mainland seems to have been 1976 in Western Sahara.
+#
+# To summarize, the following abbreviations seem to have some currency:
+# -1:00 WAT West Africa Time (no longer used)
+# 0:00 GMT Greenwich Mean Time
+# 2:00 CAT Central Africa Time
+# 2:00 SAST South Africa Standard Time
+# and Murray suggests the following abbreviation:
+# 1:00 WAT West Africa Time
+# I realize that this leads to `WAT' being used for both -1:00 and 1:00
+# for times before 1976, but this is the best I can think of
+# until we get more information.
+#
+# I invented the following abbreviations; corrections are welcome!
+# 2:00 WAST West Africa Summer Time
+# 2:30 BEAT British East Africa Time (no longer used)
+# 2:44:45 BEAUT British East Africa Unified Time (no longer used)
+# 3:00 CAST Central Africa Summer Time (no longer used)
+# 3:00 SAST South Africa Summer Time (no longer used)
+# 3:00 EAT East Africa Time
+# 4:00 EAST East Africa Summer Time (no longer used)
+
+# Algeria
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Algeria 1916 only - Jun 14 23:00s 1:00 S
+Rule Algeria 1916 1919 - Oct Sun>=1 23:00s 0 -
+Rule Algeria 1917 only - Mar 24 23:00s 1:00 S
+Rule Algeria 1918 only - Mar 9 23:00s 1:00 S
+Rule Algeria 1919 only - Mar 1 23:00s 1:00 S
+Rule Algeria 1920 only - Feb 14 23:00s 1:00 S
+Rule Algeria 1920 only - Oct 23 23:00s 0 -
+Rule Algeria 1921 only - Mar 14 23:00s 1:00 S
+Rule Algeria 1921 only - Jun 21 23:00s 0 -
+Rule Algeria 1939 only - Sep 11 23:00s 1:00 S
+Rule Algeria 1939 only - Nov 19 1:00 0 -
+Rule Algeria 1944 1945 - Apr Mon>=1 2:00 1:00 S
+Rule Algeria 1944 only - Oct 8 2:00 0 -
+Rule Algeria 1945 only - Sep 16 1:00 0 -
+Rule Algeria 1971 only - Apr 25 23:00s 1:00 S
+Rule Algeria 1971 only - Sep 26 23:00s 0 -
+Rule Algeria 1977 only - May 6 0:00 1:00 S
+Rule Algeria 1977 only - Oct 21 0:00 0 -
+Rule Algeria 1978 only - Mar 24 1:00 1:00 S
+Rule Algeria 1978 only - Sep 22 3:00 0 -
+Rule Algeria 1980 only - Apr 25 0:00 1:00 S
+Rule Algeria 1980 only - Oct 31 2:00 0 -
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Algiers 0:12:12 - LMT 1891 Mar 15 0:01
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 0:00 Algeria WE%sT 1940 Feb 25 2:00
+ 1:00 Algeria CE%sT 1946 Oct 7
+ 0:00 - WET 1956 Jan 29
+ 1:00 - CET 1963 Apr 14
+ 0:00 Algeria WE%sT 1977 Oct 21
+ 1:00 Algeria CE%sT 1979 Oct 26
+ 0:00 Algeria WE%sT 1981 May
+ 1:00 - CET
+
+# Angola
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Luanda 0:52:56 - LMT 1892
+ 0:52:04 - AOT 1911 May 26 # Angola Time
+ 1:00 - WAT
+
+# Benin
+# Whitman says they switched to 1:00 in 1946, not 1934;
+# go with Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Porto-Novo 0:10:28 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ 1:00 - WAT
+
+# Botswana
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Gaborone 1:43:40 - LMT 1885
+ 2:00 - CAT 1943 Sep 19 2:00
+ 2:00 1:00 CAST 1944 Mar 19 2:00
+ 2:00 - CAT
+
+# Burkina Faso
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Ouagadougou -0:06:04 - LMT 1912
+ 0:00 - GMT
+
+# Burundi
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bujumbura 1:57:28 - LMT 1890
+ 2:00 - CAT
+
+# Cameroon
+# Whitman says they switched to 1:00 in 1920; go with Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Douala 0:38:48 - LMT 1912
+ 1:00 - WAT
+
+# Cape Verde
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Cape_Verde -1:34:04 - LMT 1907 # Praia
+ -2:00 - CVT 1942 Sep
+ -2:00 1:00 CVST 1945 Oct 15
+ -2:00 - CVT 1975 Nov 25 2:00
+ -1:00 - CVT
+
+# Central African Republic
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bangui 1:14:20 - LMT 1912
+ 1:00 - WAT
+
+# Chad
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Ndjamena 1:00:12 - LMT 1912
+ 1:00 - WAT 1979 Oct 14
+ 1:00 1:00 WAST 1980 Mar 8
+ 1:00 - WAT
+
+# Comoros
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Comoro 2:53:04 - LMT 1911 Jul # Moroni, Gran Comoro
+ 3:00 - EAT
+
+# Democratic Republic of Congo
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Kinshasa 1:01:12 - LMT 1897 Nov 9
+ 1:00 - WAT
+Zone Africa/Lubumbashi 1:49:52 - LMT 1897 Nov 9
+ 2:00 - CAT
+
+# Republic of the Congo
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Brazzaville 1:01:08 - LMT 1912
+ 1:00 - WAT
+
+# Cote D'Ivoire
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Abidjan -0:16:08 - LMT 1912
+ 0:00 - GMT
+
+# Djibouti
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Djibouti 2:52:36 - LMT 1911 Jul
+ 3:00 - EAT
+
+###############################################################################
+
+# Egypt
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Egypt 1940 only - Jul 15 0:00 1:00 S
+Rule Egypt 1940 only - Oct 1 0:00 0 -
+Rule Egypt 1941 only - Apr 15 0:00 1:00 S
+Rule Egypt 1941 only - Sep 16 0:00 0 -
+Rule Egypt 1942 1944 - Apr 1 0:00 1:00 S
+Rule Egypt 1942 only - Oct 27 0:00 0 -
+Rule Egypt 1943 1945 - Nov 1 0:00 0 -
+Rule Egypt 1945 only - Apr 16 0:00 1:00 S
+Rule Egypt 1957 only - May 10 0:00 1:00 S
+Rule Egypt 1957 1958 - Oct 1 0:00 0 -
+Rule Egypt 1958 only - May 1 0:00 1:00 S
+Rule Egypt 1959 1981 - May 1 1:00 1:00 S
+Rule Egypt 1959 1965 - Sep 30 3:00 0 -
+Rule Egypt 1966 1994 - Oct 1 3:00 0 -
+Rule Egypt 1982 only - Jul 25 1:00 1:00 S
+Rule Egypt 1983 only - Jul 12 1:00 1:00 S
+Rule Egypt 1984 1988 - May 1 1:00 1:00 S
+Rule Egypt 1989 only - May 6 1:00 1:00 S
+Rule Egypt 1990 1994 - May 1 1:00 1:00 S
+# IATA (after 1990) says transitions are at 0:00.
+# Go with IATA starting in 1995, except correct 1995 entry from 09-30 to 09-29.
+Rule Egypt 1995 max - Apr lastFri 0:00s 1:00 S
+Rule Egypt 1995 2005 - Sep lastThu 23:00s 0 -
+# From Steffen Thorsen (2006-09-19):
+# The Egyptian Gazette, issue 41,090 (2006-09-18), page 1, reports:
+# Egypt will turn back clocks by one hour at the midnight of Thursday
+# after observing the daylight saving time since May.
+# http://news.gom.com.eg/gazette/pdf/2006/09/18/01.pdf
+Rule Egypt 2006 only - Sep 21 23:00s 0 -
+# From Dirk Losch (2007-08-14):
+# I received a mail from an airline which says that the daylight
+# saving time in Egypt will end in the night of 2007-09-06 to 2007-09-07.
+# From Jesper Norgaard Welen (2007-08-15): [The following agree:]
+# http://www.nentjes.info/Bill/bill5.htm
+# http://www.timeanddate.com/worldclock/city.html?n=53
+# From Steffen Thorsen (2007-09-04): The official information...:
+# http://www.sis.gov.eg/En/EgyptOnline/Miscellaneous/000002/0207000000000000001580.htm
+Rule Egypt 2007 only - Sep Thu>=1 23:00s 0 -
+# From Abdelrahman Hassan (2007-09-06):
+# Due to the Hijri (lunar Islamic calendar) year being 11 days shorter
+# than the year of the Gregorian calendar, Ramadan shifts earlier each
+# year. This year it will be observed September 13 (September is quite
+# hot in Egypt), and the idea is to make fasting easier for workers by
+# shifting business hours one hour out of daytime heat. Consequently,
+# unless discontinued, next DST may end Thursday 28 August 2008.
+# From Paul Eggert (2007-08-17):
+# For lack of better info, assume the new rule is last Thursday in August.
+Rule Egypt 2008 max - Aug lastThu 23:00s 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Cairo 2:05:00 - LMT 1900 Oct
+ 2:00 Egypt EE%sT
+
+# Equatorial Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Malabo 0:35:08 - LMT 1912
+ 0:00 - GMT 1963 Dec 15
+ 1:00 - WAT
+
+# Eritrea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Asmara 2:35:32 - LMT 1870
+ 2:35:32 - AMT 1890 # Asmara Mean Time
+ 2:35:20 - ADMT 1936 May 5 # Adis Dera MT
+ 3:00 - EAT
+
+# Ethiopia
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that Ethiopia had six narrowly-spaced time zones
+# between 1870 and 1890, and that they merged to 38E50 (2:35:20) in 1890.
+# We'll guess that 38E50 is for Adis Dera.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Addis_Ababa 2:34:48 - LMT 1870
+ 2:35:20 - ADMT 1936 May 5 # Adis Dera MT
+ 3:00 - EAT
+
+# Gabon
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Libreville 0:37:48 - LMT 1912
+ 1:00 - WAT
+
+# Gambia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Banjul -1:06:36 - LMT 1912
+ -1:06:36 - BMT 1935 # Banjul Mean Time
+ -1:00 - WAT 1964
+ 0:00 - GMT
+
+# Ghana
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman says DST was observed from 1931 to ``the present'';
+# go with Shanks & Pottenger.
+Rule Ghana 1936 1942 - Sep 1 0:00 0:20 GHST
+Rule Ghana 1936 1942 - Dec 31 0:00 0 GMT
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Accra -0:00:52 - LMT 1918
+ 0:00 Ghana %s
+
+# Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Conakry -0:54:52 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ -1:00 - WAT 1960
+ 0:00 - GMT
+
+# Guinea-Bissau
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bissau -1:02:20 - LMT 1911 May 26
+ -1:00 - WAT 1975
+ 0:00 - GMT
+
+# Kenya
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Nairobi 2:27:16 - LMT 1928 Jul
+ 3:00 - EAT 1930
+ 2:30 - BEAT 1940
+ 2:44:45 - BEAUT 1960
+ 3:00 - EAT
+
+# Lesotho
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Maseru 1:50:00 - LMT 1903 Mar
+ 2:00 - SAST 1943 Sep 19 2:00
+ 2:00 1:00 SAST 1944 Mar 19 2:00
+ 2:00 - SAST
+
+# Liberia
+# From Paul Eggert (2006-03-22):
+# In 1972 Liberia was the last country to switch
+# from a UTC offset that was not a multiple of 15 or 20 minutes.
+# Howse reports that it was in honor of their president's birthday.
+# Shank & Pottenger report the date as May 1, whereas Howse reports Jan;
+# go with Shanks & Pottenger.
+# For Liberia before 1972, Shanks & Pottenger report -0:44, whereas Howse and
+# Whitman each report -0:44:30; go with the more precise figure.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Monrovia -0:43:08 - LMT 1882
+ -0:43:08 - MMT 1919 Mar # Monrovia Mean Time
+ -0:44:30 - LRT 1972 May # Liberia Time
+ 0:00 - GMT
+
+###############################################################################
+
+# Libya
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Libya 1951 only - Oct 14 2:00 1:00 S
+Rule Libya 1952 only - Jan 1 0:00 0 -
+Rule Libya 1953 only - Oct 9 2:00 1:00 S
+Rule Libya 1954 only - Jan 1 0:00 0 -
+Rule Libya 1955 only - Sep 30 0:00 1:00 S
+Rule Libya 1956 only - Jan 1 0:00 0 -
+Rule Libya 1982 1984 - Apr 1 0:00 1:00 S
+Rule Libya 1982 1985 - Oct 1 0:00 0 -
+Rule Libya 1985 only - Apr 6 0:00 1:00 S
+Rule Libya 1986 only - Apr 4 0:00 1:00 S
+Rule Libya 1986 only - Oct 3 0:00 0 -
+Rule Libya 1987 1989 - Apr 1 0:00 1:00 S
+Rule Libya 1987 1989 - Oct 1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Tripoli 0:52:44 - LMT 1920
+ 1:00 Libya CE%sT 1959
+ 2:00 - EET 1982
+ 1:00 Libya CE%sT 1990 May 4
+# The following entries are from Shanks & Pottenger;
+# the IATA SSIM data contain some obvious errors.
+ 2:00 - EET 1996 Sep 30
+ 1:00 - CET 1997 Apr 4
+ 1:00 1:00 CEST 1997 Oct 4
+ 2:00 - EET
+
+# Madagascar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Antananarivo 3:10:04 - LMT 1911 Jul
+ 3:00 - EAT 1954 Feb 27 23:00s
+ 3:00 1:00 EAST 1954 May 29 23:00s
+ 3:00 - EAT
+
+# Malawi
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Blantyre 2:20:00 - LMT 1903 Mar
+ 2:00 - CAT
+
+# Mali
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Bamako -0:32:00 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ -1:00 - WAT 1960 Jun 20
+ 0:00 - GMT
+
+# Mauritania
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Nouakchott -1:03:48 - LMT 1912
+ 0:00 - GMT 1934 Feb 26
+ -1:00 - WAT 1960 Nov 28
+ 0:00 - GMT
+
+# Mauritius
+
+# From Steffen Thorsen (2008-06-25):
+# Mauritius plans to observe DST from 2008-11-01 to 2009-03-31 on a trial
+# basis....
+# It seems that Mauritius observed daylight saving time from 1982-10-10 to
+# 1983-03-20 as well, but that was not successful....
+# http://www.timeanddate.com/news/time/mauritius-daylight-saving-time.html
+
+# From Alex Krivenyshev (2008-06-25):
+# http://economicdevelopment.gov.mu/portal/site/Mainhomepage/menuitem.a42b24128104d9845dabddd154508a0c/?content_id=0a7cee8b5d69a110VgnVCM1000000a04a8c0RCRD
+
+# From Arthur David Olson (2008-06-30):
+# The www.timeanddate.com article cited by Steffen Thorsen notes that "A
+# final decision has yet to be made on the times that daylight saving
+# would begin and end on these dates." As a place holder, use midnight.
+
+# From Paul Eggert (2008-06-30):
+# Follow Thorsen on DST in 1982/1983, instead of Shanks & Pottenger.
+
+# From Steffen Thorsen (2008-07-10):
+# According to
+# <a href="http://www.lexpress.mu/display_article.php?news_id=111216">
+# http://www.lexpress.mu/display_article.php?news_id=111216
+# </a>
+# (in French), Mauritius will start and end their DST a few days earlier
+# than previously announced (2008-11-01 to 2009-03-31). The new start
+# date is 2008-10-26 at 02:00 and the new end date is 2009-03-27 (no time
+# given, but it is probably at either 2 or 3 wall clock time).
+#
+# A little strange though, since the article says that they moved the date
+# to align itself with Europe and USA which also change time on that date,
+# but that means they have not paid attention to what happened in
+# USA/Canada last year (DST ends first Sunday in November). I also wonder
+# why that they end on a Friday, instead of aligning with Europe which
+# changes two days later.
+
+# From Alex Krivenyshev (2008-07-11):
+# Seems that English language article "The revival of daylight saving
+# time: Energy conservation?"-# No. 16578 (07/11/2008) was originally
+# published on Monday, June 30, 2008...
+#
+# I guess that article in French "Le gouvernement avance l'introduction
+# de l'heure d'ete" stating that DST in Mauritius starting on October 26
+# and ending on March 27, 2009 is the most recent one.
+# ...
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html">
+# http://www.worldtimezone.com/dst_news/dst_news_mauritius02.html
+# </a>
+
+# From Riad M. Hossen Ally (2008-08-03):
+# The Government of Mauritius weblink
+# <a href="http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=3D4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD">
+# http://www.gov.mu/portal/site/pmosite/menuitem.4ca0efdee47462e7440a600248a521ca/?content_id=3D4728ca68b2a5b110VgnVCM1000000a04a8c0RCRD
+# </a>
+# Cabinet Decision of July 18th, 2008 states as follows:
+#
+# 4. ...Cabinet has agreed to the introduction into the National Assembly
+# of the Time Bill which provides for the introduction of summer time in
+# Mauritius. The summer time period which will be of one hour ahead of
+# the standard time, will be aligned with that in Europe and the United
+# States of America. It will start at two o'clock in the morning on the
+# last Sunday of October and will end at two o'clock in the morning on
+# the last Sunday of March the following year. The summer time for the
+# year 2008 - 2009 will, therefore, be effective as from 26 October 2008
+# and end on 29 March 2009.
+
+# From Ed Maste (2008-10-07):
+# THE TIME BILL (No. XXVII of 2008) Explanatory Memorandum states the
+# beginning / ending of summer time is 2 o'clock standard time in the
+# morning of the last Sunday of October / last Sunday of March.
+# <a href="http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf">
+# http://www.gov.mu/portal/goc/assemblysite/file/bill2708.pdf
+# </a>
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Mauritius 1982 only - Oct 10 0:00 1:00 S
+Rule Mauritius 1983 only - Mar 21 0:00 0 -
+Rule Mauritius 2008 max - Oct lastSun 2:00s 1:00 S
+Rule Mauritius 2009 max - Mar lastSun 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
+ 4:00 Mauritius MU%sT # Mauritius Time
+# Agalega Is, Rodriguez
+# no information; probably like Indian/Mauritius
+
+# Mayotte
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Mayotte 3:00:56 - LMT 1911 Jul # Mamoutzou
+ 3:00 - EAT
+
+# Morocco
+# See the `europe' file for Spanish Morocco (Africa/Ceuta).
+
+# From Alex Krivenyshev (2008-05-09):
+# Here is an article that Morocco plan to introduce Daylight Saving Time between
+# 1 June, 2008 and 27 September, 2008.
+#
+# "... Morocco is to save energy by adjusting its clock during summer so it will
+# be one hour ahead of GMT between 1 June and 27 September, according to
+# Communication Minister and Gov ernment Spokesman, Khalid Naciri...."
+#
+# <a href="http://www.worldtimezone.net/dst_news/dst_news_morocco01.html">
+# http://www.worldtimezone.net/dst_news/dst_news_morocco01.html
+# </a>
+# OR
+# <a href="http://en.afrik.com/news11892.html">
+# http://en.afrik.com/news11892.html
+# </a>
+
+# From Alex Krivenyshev (2008-05-09):
+# The Morocco time change can be confirmed on Morocco web site Maghreb Arabe Presse:
+# <a href="http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view">
+# http://www.map.ma/eng/sections/box3/morocco_shifts_to_da/view
+# </a>
+#
+# Morocco shifts to daylight time on June 1st through September 27, Govt.
+# spokesman.
+
+# From Patrice Scattolin (2008-05-09):
+# According to this article:
+# <a href="http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html">
+# http://www.avmaroc.com/actualite/heure-dete-comment-a127896.html
+# </a>
+# (and republished here:
+# <a href="http://www.actu.ma/heure-dete-comment_i127896_0.html">
+# http://www.actu.ma/heure-dete-comment_i127896_0.html
+# </a>
+# )
+# the changes occurs at midnight:
+#
+# saturday night may 31st at midnight (which in french is to be
+# intrepreted as the night between saturday and sunday)
+# sunday night the 28th at midnight
+#
+# Seeing that the 28th is monday, I am guessing that she intends to say
+# the midnight of the 28th which is the midnight between sunday and
+# monday, which jives with other sources that say that it's inclusive
+# june1st to sept 27th.
+#
+# The decision was taken by decree *2-08-224 *but I can't find the decree
+# published on the web.
+#
+# It's also confirmed here:
+# <a href="http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm">
+# http://www.maroc.ma/NR/exeres/FACF141F-D910-44B0-B7FA-6E03733425D1.htm
+# </a>
+# on a government portal as being between june 1st and sept 27th (not yet
+# posted in english).
+#
+# The following google query will generate many relevant hits:
+# <a href="http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search">
+# http://www.google.com/search?hl=en&q=Conseil+de+gouvernement+maroc+heure+avance&btnG=Search
+# </a>
+
+# From Alex Krivenyshev (2008-05-09):
+# Is Western Sahara (part which administrated by Morocco) going to follow
+# Morocco DST changes? Any information? What about other part of
+# Western Sahara - under administration of POLISARIO Front (also named
+# SADR Saharawi Arab Democratic Republic)?
+
+# From Arthur David Olson (2008-05-09):
+# XXX--guess that it is only Morocco for now; guess only 2008 for now.
+
+# From Steffen Thorsen (2008-08-27):
+# Morocco will change the clocks back on the midnight between August 31
+# and September 1. They originally planned to observe DST to near the end
+# of September:
+#
+# One article about it (in French):
+# <a href="http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default">
+# http://www.menara.ma/fr/Actualites/Maroc/Societe/ci.retour_a_l_heure_gmt_a_partir_du_dimanche_31_aout_a_minuit_officiel_.default
+# </a>
+#
+# We have some further details posted here:
+# <a href="http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html">
+# http://www.timeanddate.com/news/time/morocco-ends-dst-early-2008.html
+# </a>
+# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+
+Rule Morocco 1939 only - Sep 12 0:00 1:00 S
+Rule Morocco 1939 only - Nov 19 0:00 0 -
+Rule Morocco 1940 only - Feb 25 0:00 1:00 S
+Rule Morocco 1945 only - Nov 18 0:00 0 -
+Rule Morocco 1950 only - Jun 11 0:00 1:00 S
+Rule Morocco 1950 only - Oct 29 0:00 0 -
+Rule Morocco 1967 only - Jun 3 12:00 1:00 S
+Rule Morocco 1967 only - Oct 1 0:00 0 -
+Rule Morocco 1974 only - Jun 24 0:00 1:00 S
+Rule Morocco 1974 only - Sep 1 0:00 0 -
+Rule Morocco 1976 1977 - May 1 0:00 1:00 S
+Rule Morocco 1976 only - Aug 1 0:00 0 -
+Rule Morocco 1977 only - Sep 28 0:00 0 -
+Rule Morocco 1978 only - Jun 1 0:00 1:00 S
+Rule Morocco 1978 only - Aug 4 0:00 0 -
+Rule Morocco 2008 only - Jun 1 0:00 1:00 S
+Rule Morocco 2008 only - Sep 1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26
+ 0:00 Morocco WE%sT 1984 Mar 16
+ 1:00 - CET 1986
+ 0:00 Morocco WE%sT
+# Western Sahara
+Zone Africa/El_Aaiun -0:52:48 - LMT 1934 Jan
+ -1:00 - WAT 1976 Apr 14
+ 0:00 - WET
+
+# Mozambique
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Maputo 2:10:20 - LMT 1903 Mar
+ 2:00 - CAT
+
+# Namibia
+# The 1994-04-03 transition is from Shanks & Pottenger.
+# Shanks & Pottenger report no DST after 1998-04; go with IATA.
+
+# From Petronella Sibeene (2007-03-30) in
+# <http://allafrica.com/stories/200703300178.html>:
+# While the entire country changes its time, Katima Mulilo and other
+# settlements in Caprivi unofficially will not because the sun there
+# rises and sets earlier compared to other regions. Chief of
+# Forecasting Riaan van Zyl explained that the far eastern parts of
+# the country are close to 40 minutes earlier in sunrise than the rest
+# of the country.
+#
+# From Paul Eggert (2007-03-31):
+# Apparently the Caprivi Strip informally observes Botswana time, but
+# we have no details. In the meantime people there can use Africa/Gaborone.
+
+# RULE NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Namibia 1994 max - Sep Sun>=1 2:00 1:00 S
+Rule Namibia 1995 max - Apr Sun>=1 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Windhoek 1:08:24 - LMT 1892 Feb 8
+ 1:30 - SWAT 1903 Mar # SW Africa Time
+ 2:00 - SAST 1942 Sep 20 2:00
+ 2:00 1:00 SAST 1943 Mar 21 2:00
+ 2:00 - SAST 1990 Mar 21 # independence
+ 2:00 - CAT 1994 Apr 3
+ 1:00 Namibia WA%sT
+
+# Niger
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Niamey 0:08:28 - LMT 1912
+ -1:00 - WAT 1934 Feb 26
+ 0:00 - GMT 1960
+ 1:00 - WAT
+
+# Nigeria
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Lagos 0:13:36 - LMT 1919 Sep
+ 1:00 - WAT
+
+# Reunion
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Reunion 3:41:52 - LMT 1911 Jun # Saint-Denis
+ 4:00 - RET # Reunion Time
+#
+# Scattered Islands (Iles Eparses) administered from Reunion are as follows.
+# The following information about them is taken from
+# Iles Eparses (www.outre-mer.gouv.fr/domtom/ile.htm, 1997-07-22, in French;
+# no longer available as of 1999-08-17).
+# We have no info about their time zone histories.
+#
+# Bassas da India - uninhabited
+# Europa Island - inhabited from 1905 to 1910 by two families
+# Glorioso Is - inhabited until at least 1958
+# Juan de Nova - uninhabited
+# Tromelin - inhabited until at least 1958
+
+# Rwanda
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Kigali 2:00:16 - LMT 1935 Jun
+ 2:00 - CAT
+
+# St Helena
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/St_Helena -0:22:48 - LMT 1890 # Jamestown
+ -0:22:48 - JMT 1951 # Jamestown Mean Time
+ 0:00 - GMT
+# The other parts of the St Helena territory are similar:
+# Tristan da Cunha: on GMT, say Whitman and the CIA
+# Ascension: on GMT, says usno1995 and the CIA
+# Gough (scientific station since 1955; sealers wintered previously):
+# on GMT, says the CIA
+# Inaccessible, Nightingale: no information, but probably GMT
+
+# Sao Tome and Principe
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Sao_Tome 0:26:56 - LMT 1884
+ -0:36:32 - LMT 1912 # Lisbon Mean Time
+ 0:00 - GMT
+
+# Senegal
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Dakar -1:09:44 - LMT 1912
+ -1:00 - WAT 1941 Jun
+ 0:00 - GMT
+
+# Seychelles
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Mahe 3:41:48 - LMT 1906 Jun # Victoria
+ 4:00 - SCT # Seychelles Time
+# From Paul Eggert (2001-05-30):
+# Aldabra, Farquhar, and Desroches, originally dependencies of the
+# Seychelles, were transferred to the British Indian Ocean Territory
+# in 1965 and returned to Seychelles control in 1976. We don't know
+# whether this affected their time zone, so omit this for now.
+# Possibly the islands were uninhabited.
+
+# Sierra Leone
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman gives Mar 31 - Aug 31 for 1931 on; go with Shanks & Pottenger.
+Rule SL 1935 1942 - Jun 1 0:00 0:40 SLST
+Rule SL 1935 1942 - Oct 1 0:00 0 WAT
+Rule SL 1957 1962 - Jun 1 0:00 1:00 SLST
+Rule SL 1957 1962 - Sep 1 0:00 0 GMT
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Freetown -0:53:00 - LMT 1882
+ -0:53:00 - FMT 1913 Jun # Freetown Mean Time
+ -1:00 SL %s 1957
+ 0:00 SL %s
+
+# Somalia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Mogadishu 3:01:28 - LMT 1893 Nov
+ 3:00 - EAT 1931
+ 2:30 - BEAT 1957
+ 3:00 - EAT
+
+# South Africa
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule SA 1942 1943 - Sep Sun>=15 2:00 1:00 -
+Rule SA 1943 1944 - Mar Sun>=15 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Johannesburg 1:52:00 - LMT 1892 Feb 8
+ 1:30 - SAST 1903 Mar
+ 2:00 SA SAST
+# Marion and Prince Edward Is
+# scientific station since 1947
+# no information
+
+# Sudan
+#
+# From <a href="http://www.sunanews.net/sn13jane.html">
+# Sudan News Agency (2000-01-13)
+# </a>, also reported by Michael De Beukelaer-Dossche via Steffen Thorsen:
+# Clocks will be moved ahead for 60 minutes all over the Sudan as of noon
+# Saturday.... This was announced Thursday by Caretaker State Minister for
+# Manpower Abdul-Rahman Nur-Eddin.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Sudan 1970 only - May 1 0:00 1:00 S
+Rule Sudan 1970 1985 - Oct 15 0:00 0 -
+Rule Sudan 1971 only - Apr 30 0:00 1:00 S
+Rule Sudan 1972 1985 - Apr lastSun 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Khartoum 2:10:08 - LMT 1931
+ 2:00 Sudan CA%sT 2000 Jan 15 12:00
+ 3:00 - EAT
+
+# Swaziland
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Mbabane 2:04:24 - LMT 1903 Mar
+ 2:00 - SAST
+
+# Tanzania
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Dar_es_Salaam 2:37:08 - LMT 1931
+ 3:00 - EAT 1948
+ 2:44:45 - BEAUT 1961
+ 3:00 - EAT
+
+# Togo
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Lome 0:04:52 - LMT 1893
+ 0:00 - GMT
+
+# Tunisia
+
+# From Gwillim Law (2005-04-30):
+# My correspondent, Risto Nykanen, has alerted me to another adoption of DST,
+# this time in Tunisia. According to Yahoo France News
+# <http://fr.news.yahoo.com/050426/5/4dumk.html>, in a story attributed to AP
+# and dated 2005-04-26, "Tunisia has decided to advance its official time by
+# one hour, starting on Sunday, May 1. Henceforth, Tunisian time will be
+# UTC+2 instead of UTC+1. The change will take place at 23:00 UTC next
+# Saturday." (My translation)
+#
+# From Oscar van Vlijmen (2005-05-02):
+# LaPresse, the first national daily newspaper ...
+# <http://www.lapresse.tn/archives/archives280405/actualites/lheure.html>
+# ... DST for 2005: on: Sun May 1 0h standard time, off: Fri Sept. 30,
+# 1h standard time.
+#
+# From Atef Loukil (2006-03-28):
+# The daylight saving time will be the same each year:
+# Beginning : the last Sunday of March at 02:00
+# Ending : the last Sunday of October at 03:00 ...
+# http://www.tap.info.tn/en/index.php?option=com_content&task=view&id=1188&Itemid=50
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Tunisia 1939 only - Apr 15 23:00s 1:00 S
+Rule Tunisia 1939 only - Nov 18 23:00s 0 -
+Rule Tunisia 1940 only - Feb 25 23:00s 1:00 S
+Rule Tunisia 1941 only - Oct 6 0:00 0 -
+Rule Tunisia 1942 only - Mar 9 0:00 1:00 S
+Rule Tunisia 1942 only - Nov 2 3:00 0 -
+Rule Tunisia 1943 only - Mar 29 2:00 1:00 S
+Rule Tunisia 1943 only - Apr 17 2:00 0 -
+Rule Tunisia 1943 only - Apr 25 2:00 1:00 S
+Rule Tunisia 1943 only - Oct 4 2:00 0 -
+Rule Tunisia 1944 1945 - Apr Mon>=1 2:00 1:00 S
+Rule Tunisia 1944 only - Oct 8 0:00 0 -
+Rule Tunisia 1945 only - Sep 16 0:00 0 -
+Rule Tunisia 1977 only - Apr 30 0:00s 1:00 S
+Rule Tunisia 1977 only - Sep 24 0:00s 0 -
+Rule Tunisia 1978 only - May 1 0:00s 1:00 S
+Rule Tunisia 1978 only - Oct 1 0:00s 0 -
+Rule Tunisia 1988 only - Jun 1 0:00s 1:00 S
+Rule Tunisia 1988 1990 - Sep lastSun 0:00s 0 -
+Rule Tunisia 1989 only - Mar 26 0:00s 1:00 S
+Rule Tunisia 1990 only - May 1 0:00s 1:00 S
+Rule Tunisia 2005 only - May 1 0:00s 1:00 S
+Rule Tunisia 2005 only - Sep 30 1:00s 0 -
+Rule Tunisia 2006 max - Mar lastSun 2:00s 1:00 S
+Rule Tunisia 2006 max - Oct lastSun 2:00s 0 -
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Shanks & Pottenger say the 1911 switch was on Mar 9; go with Howse's Mar 11.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Tunis 0:40:44 - LMT 1881 May 12
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 1:00 Tunisia CE%sT
+
+# Uganda
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Kampala 2:09:40 - LMT 1928 Jul
+ 3:00 - EAT 1930
+ 2:30 - BEAT 1948
+ 2:44:45 - BEAUT 1957
+ 3:00 - EAT
+
+# Zambia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Lusaka 1:53:08 - LMT 1903 Mar
+ 2:00 - CAT
+
+# Zimbabwe
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Africa/Harare 2:04:12 - LMT 1903 Mar
+ 2:00 - CAT
diff --git a/share/zoneinfo/antarctica b/share/zoneinfo/antarctica
new file mode 100644
index 0000000..ef279cb
--- /dev/null
+++ b/share/zoneinfo/antarctica
@@ -0,0 +1,327 @@
+# @(#)antarctica 8.4
+# <pre>
+
+# From Paul Eggert (1999-11-15):
+# To keep things manageable, we list only locations occupied year-round; see
+# <a href="http://www.comnap.aq/comnap/comnap.nsf/P/Stations/">
+# COMNAP - Stations and Bases
+# </a>
+# and
+# <a href="http://www.spri.cam.ac.uk/bob/periant.htm">
+# Summary of the Peri-Antarctic Islands (1998-07-23)
+# </a>
+# for information.
+# Unless otherwise specified, we have no time zone information.
+#
+# Except for the French entries,
+# I made up all time zone abbreviations mentioned here; corrections welcome!
+# FORMAT is `zzz' and GMTOFF is 0 for locations while uninhabited.
+
+# These rules are stolen from the `europe' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule RussAQ 1981 1984 - Apr 1 0:00 1:00 S
+Rule RussAQ 1981 1983 - Oct 1 0:00 0 -
+Rule RussAQ 1984 1991 - Sep lastSun 2:00s 0 -
+Rule RussAQ 1985 1991 - Mar lastSun 2:00s 1:00 S
+Rule RussAQ 1992 only - Mar lastSat 23:00 1:00 S
+Rule RussAQ 1992 only - Sep lastSat 23:00 0 -
+Rule RussAQ 1993 max - Mar lastSun 2:00s 1:00 S
+Rule RussAQ 1993 1995 - Sep lastSun 2:00s 0 -
+Rule RussAQ 1996 max - Oct lastSun 2:00s 0 -
+
+# These rules are stolen from the `southamerica' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule ArgAQ 1964 1966 - Mar 1 0:00 0 -
+Rule ArgAQ 1964 1966 - Oct 15 0:00 1:00 S
+Rule ArgAQ 1967 only - Apr 2 0:00 0 -
+Rule ArgAQ 1967 1968 - Oct Sun>=1 0:00 1:00 S
+Rule ArgAQ 1968 1969 - Apr Sun>=1 0:00 0 -
+Rule ArgAQ 1974 only - Jan 23 0:00 1:00 S
+Rule ArgAQ 1974 only - May 1 0:00 0 -
+Rule ChileAQ 1972 1986 - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 1987 only - Apr 12 3:00u 0 -
+Rule ChileAQ 1988 1989 - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1988 only - Oct Sun>=1 4:00u 1:00 S
+Rule ChileAQ 1989 only - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 1990 only - Mar 18 3:00u 0 -
+Rule ChileAQ 1990 only - Sep 16 4:00u 1:00 S
+Rule ChileAQ 1991 1996 - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 1997 only - Mar 30 3:00u 0 -
+Rule ChileAQ 1998 only - Mar Sun>=9 3:00u 0 -
+Rule ChileAQ 1998 only - Sep 27 4:00u 1:00 S
+Rule ChileAQ 1999 only - Apr 4 3:00u 0 -
+Rule ChileAQ 1999 max - Oct Sun>=9 4:00u 1:00 S
+Rule ChileAQ 2000 max - Mar Sun>=9 3:00u 0 -
+
+
+# Argentina - year-round bases
+# Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
+# Esperanza, San Martin Land, -6323-05659, since 1952-12-17
+# Jubany, Potter Peninsula, King George Island, -6414-0602320, since 1982-01
+# Marambio, Seymour I, -6414-05637, since 1969-10-29
+# Orcadas, Laurie I, -6016-04444, since 1904-02-22
+# San Martin, Debenham I, -6807-06708, since 1951-03-21
+# (except 1960-03 / 1976-03-21)
+
+# Australia - territories
+# Heard Island, McDonald Islands (uninhabited)
+# previously sealers and scientific personnel wintered
+# <a href="http://web.archive.org/web/20021204222245/http://www.dstc.qut.edu.au/DST/marg/daylight.html">
+# Margaret Turner reports
+# </a> (1999-09-30) that they're UTC+5, with no DST;
+# presumably this is when they have visitors.
+#
+# year-round bases
+# Casey, Bailey Peninsula, -6617+11032, since 1969
+# Davis, Vestfold Hills, -6835+07759, since 1957-01-13
+# (except 1964-11 - 1969-02)
+# Mawson, Holme Bay, -6736+06253, since 1954-02-13
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Casey 0 - zzz 1969
+ 8:00 - WST # Western (Aus) Standard Time
+Zone Antarctica/Davis 0 - zzz 1957 Jan 13
+ 7:00 - DAVT 1964 Nov # Davis Time
+ 0 - zzz 1969 Feb
+ 7:00 - DAVT
+Zone Antarctica/Mawson 0 - zzz 1954 Feb 13
+ 6:00 - MAWT # Mawson Time
+# References:
+# <a href="http://www.antdiv.gov.au/aad/exop/sfo/casey/casey_aws.html">
+# Casey Weather (1998-02-26)
+# </a>
+# <a href="http://www.antdiv.gov.au/aad/exop/sfo/davis/video.html">
+# Davis Station, Antarctica (1998-02-26)
+# </a>
+# <a href="http://www.antdiv.gov.au/aad/exop/sfo/mawson/video.html">
+# Mawson Station, Antarctica (1998-02-25)
+# </a>
+
+# Brazil - year-round base
+# Comandante Ferraz, King George Island, -6205+05824, since 1983/4
+
+# Chile - year-round bases and towns
+# Escudero, South Shetland Is, -621157-0585735, since 1994
+# Presidente Eduadro Frei, King George Island, -6214-05848, since 1969-03-07
+# General Bernardo O'Higgins, Antarctic Peninsula, -6319-05704, since 1948-02
+# Capitan Arturo Prat, -6230-05941
+# Villa Las Estrellas (a town), around the Frei base, since 1984-04-09
+# These locations have always used Santiago time; use TZ='America/Santiago'.
+
+# China - year-round bases
+# Great Wall, King George Island, -6213-05858, since 1985-02-20
+# Zhongshan, Larsemann Hills, Prydz Bay, -6922+07623, since 1989-02-26
+
+# France - year-round bases
+#
+# From Antoine Leca (1997-01-20):
+# Time data are from Nicole Pailleau at the IFRTP
+# (French Institute for Polar Research and Technology).
+# She confirms that French Southern Territories and Terre Adelie bases
+# don't observe daylight saving time, even if Terre Adelie supplies came
+# from Tasmania.
+#
+# French Southern Territories with year-round inhabitants
+#
+# Martin-de-Vivies Base, Amsterdam Island, -374105+0773155, since 1950
+# Alfred-Faure Base, Crozet Islands, -462551+0515152, since 1964
+# Port-aux-Francais, Kerguelen Islands, -492110+0701303, since 1951;
+# whaling & sealing station operated 1908/1914, 1920/1929, and 1951/1956
+#
+# St Paul Island - near Amsterdam, uninhabited
+# fishing stations operated variously 1819/1931
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Kerguelen 0 - zzz 1950 # Port-aux-Francais
+ 5:00 - TFT # ISO code TF Time
+#
+# year-round base in the main continent
+# Dumont-d'Urville, Ile des Petrels, -6640+14001, since 1956-11
+#
+# Another base at Port-Martin, 50km east, began operation in 1947.
+# It was destroyed by fire on 1952-01-14.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/DumontDUrville 0 - zzz 1947
+ 10:00 - PMT 1952 Jan 14 # Port-Martin Time
+ 0 - zzz 1956 Nov
+ 10:00 - DDUT # Dumont-d'Urville Time
+# Reference:
+# <a href="http://en.wikipedia.org/wiki/Dumont_d'Urville_Station">
+# Dumont d'Urville Station (2005-12-05)
+# </a>
+
+# Germany - year-round base
+# Georg von Neumayer, -7039-00815
+
+# India - year-round base
+# Dakshin Gangotri, -7005+01200
+
+# Japan - year-round bases
+# Dome Fuji, -7719+03942
+# Syowa, -690022+0393524
+#
+# From Hideyuki Suzuki (1999-02-06):
+# In all Japanese stations, +0300 is used as the standard time.
+#
+# Syowa station, which is the first antarctic station of Japan,
+# was established on 1957-01-29. Since Syowa station is still the main
+# station of Japan, it's appropriate for the principal location.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Syowa 0 - zzz 1957 Jan 29
+ 3:00 - SYOT # Syowa Time
+# See:
+# <a href="http://www.nipr.ac.jp/english/ara01.html">
+# NIPR Antarctic Research Activities (1999-08-17)
+# </a>
+
+# S Korea - year-round base
+# King Sejong, King George Island, -6213-05847, since 1988
+
+# New Zealand - claims
+# Balleny Islands (never inhabited)
+# Scott Island (never inhabited)
+#
+# year-round base
+# Scott, Ross Island, since 1957-01, is like Antarctica/McMurdo.
+#
+# These rules for New Zealand are stolen from the `australasia' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NZAQ 1974 only - Nov 3 2:00s 1:00 D
+Rule NZAQ 1975 1988 - Oct lastSun 2:00s 1:00 D
+Rule NZAQ 1989 only - Oct 8 2:00s 1:00 D
+Rule NZAQ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
+Rule NZAQ 1975 only - Feb 23 2:00s 0 S
+Rule NZAQ 1976 1989 - Mar Sun>=1 2:00s 0 S
+Rule NZAQ 1990 2007 - Mar Sun>=15 2:00s 0 S
+Rule NZAQ 2007 max - Sep lastSun 2:00s 1:00 D
+Rule NZAQ 2008 max - Apr Sun>=1 2:00s 0 S
+
+# Norway - territories
+# Bouvet (never inhabited)
+#
+# claims
+# Peter I Island (never inhabited)
+
+# Poland - year-round base
+# Arctowski, King George Island, -620945-0582745, since 1977
+
+# Russia - year-round bases
+# Bellingshausen, King George Island, -621159-0585337, since 1968-02-22
+# Mirny, Davis coast, -6633+09301, since 1956-02
+# Molodezhnaya, Alasheyev Bay, -6740+04551,
+# year-round from 1962-02 to 1999-07-01
+# Novolazarevskaya, Queen Maud Land, -7046+01150,
+# year-round from 1960/61 to 1992
+
+# Vostok, since 1957-12-16, temporarily closed 1994-02/1994-11
+# <a href="http://quest.arc.nasa.gov/antarctica/QA/computers/Directions,Time,ZIP">
+# From Craig Mundell (1994-12-15)</a>:
+# Vostok, which is one of the Russian stations, is set on the same
+# time as Moscow, Russia.
+#
+# From Lee Hotz (2001-03-08):
+# I queried the folks at Columbia who spent the summer at Vostok and this is
+# what they had to say about time there:
+# ``in the US Camp (East Camp) we have been on New Zealand (McMurdo)
+# time, which is 12 hours ahead of GMT. The Russian Station Vostok was
+# 6 hours behind that (although only 2 miles away, i.e. 6 hours ahead
+# of GMT). This is a time zone I think two hours east of Moscow. The
+# natural time zone is in between the two: 8 hours ahead of GMT.''
+#
+# From Paul Eggert (2001-05-04):
+# This seems to be hopelessly confusing, so I asked Lee Hotz about it
+# in person. He said that some Antartic locations set their local
+# time so that noon is the warmest part of the day, and that this
+# changes during the year and does not necessarily correspond to mean
+# solar noon. So the Vostok time might have been whatever the clocks
+# happened to be during their visit. So we still don't really know what time
+# it is at Vostok. But we'll guess UTC+6.
+#
+Zone Antarctica/Vostok 0 - zzz 1957 Dec 16
+ 6:00 - VOST # Vostok time
+
+# S Africa - year-round bases
+# Marion Island, -4653+03752
+# Sanae, -7141-00250
+
+# UK
+#
+# British Antarctic Territories (BAT) claims
+# South Orkney Islands
+# scientific station from 1903
+# whaling station at Signy I 1920/1926
+# South Shetland Islands
+#
+# year-round bases
+# Bird Island, South Georgia, -5400-03803, since 1983
+# Deception Island, -6259-06034, whaling station 1912/1931,
+# scientific station 1943/1967,
+# previously sealers and a scientific expedition wintered by accident,
+# and a garrison was deployed briefly
+# Halley, Coates Land, -7535-02604, since 1956-01-06
+# Halley is on a moving ice shelf and is periodically relocated
+# so that it is never more than 10km from its nominal location.
+# Rothera, Adelaide Island, -6734-6808, since 1976-12-01
+#
+# From Paul Eggert (2002-10-22)
+# <http://webexhibits.org/daylightsaving/g.html> says Rothera is -03 all year.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Rothera 0 - zzz 1976 Dec 1
+ -3:00 - ROTT # Rothera time
+
+# Uruguay - year round base
+# Artigas, King George Island, -621104-0585107
+
+# USA - year-round bases
+#
+# Palmer, Anvers Island, since 1965 (moved 2 miles in 1968)
+#
+# From Ethan Dicks (1996-10-06):
+# It keeps the same time as Punta Arenas, Chile, because, just like us
+# and the South Pole, that's the other end of their supply line....
+# I verified with someone who was there that since 1980,
+# Palmer has followed Chile. Prior to that, before the Falklands War,
+# Palmer used to be supplied from Argentina.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/Palmer 0 - zzz 1965
+ -4:00 ArgAQ AR%sT 1969 Oct 5
+ -3:00 ArgAQ AR%sT 1982 May
+ -4:00 ChileAQ CL%sT
+#
+#
+# McMurdo, Ross Island, since 1955-12
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Antarctica/McMurdo 0 - zzz 1956
+ 12:00 NZAQ NZ%sT
+#
+# Amundsen-Scott, South Pole, continuously occupied since 1956-11-20
+#
+# From Paul Eggert (1996-09-03):
+# Normally it wouldn't have a separate entry, since it's like the
+# larger Antarctica/McMurdo since 1970, but it's too famous to omit.
+#
+# From Chris Carrier (1996-06-27):
+# Siple, the first commander of the South Pole station,
+# stated that he would have liked to have kept GMT at the station,
+# but that he found it more convenient to keep GMT+12
+# as supplies for the station were coming from McMurdo Sound,
+# which was on GMT+12 because New Zealand was on GMT+12 all year
+# at that time (1957). (Source: Siple's book 90 degrees SOUTH.)
+#
+# From Susan Smith
+# http://www.cybertours.com/whs/pole10.html
+# (1995-11-13 16:24:56 +1300, no longer available):
+# We use the same time as McMurdo does.
+# And they use the same time as Christchurch, NZ does....
+# One last quirk about South Pole time.
+# All the electric clocks are usually wrong.
+# Something about the generators running at 60.1hertz or something
+# makes all of the clocks run fast. So every couple of days,
+# we have to go around and set them back 5 minutes or so.
+# Maybe if we let them run fast all of the time, we'd get to leave here sooner!!
+#
+Link Antarctica/McMurdo Antarctica/South_Pole
diff --git a/share/zoneinfo/asia b/share/zoneinfo/asia
new file mode 100644
index 0000000..eb9f411
--- /dev/null
+++ b/share/zoneinfo/asia
@@ -0,0 +1,2043 @@
+# @(#)asia 8.24
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+#
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+# std dst
+# LMT Local Mean Time
+# 2:00 EET EEST Eastern European Time
+# 2:00 IST IDT Israel
+# 3:00 AST ADT Arabia*
+# 3:30 IRST IRDT Iran
+# 4:00 GST Gulf*
+# 5:30 IST India
+# 7:00 ICT Indochina*
+# 7:00 WIT west Indonesia
+# 8:00 CIT central Indonesia
+# 8:00 CST China
+# 9:00 CJT Central Japanese Time (1896/1937)*
+# 9:00 EIT east Indonesia
+# 9:00 JST JDT Japan
+# 9:00 KST KDT Korea
+# 9:30 CST (Australian) Central Standard Time
+#
+# See the `europe' file for Russia and Turkey in Asia.
+
+# From Guy Harris:
+# Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
+# additional information from Tom Yap, Sun Microsystems Intercontinental
+# Technical Support (including a page from the Official Airline Guide -
+# Worldwide Edition). The names for time zones are guesses.
+
+###############################################################################
+
+# These rules are stolen from the `europe' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule EUAsia 1981 max - Mar lastSun 1:00u 1:00 S
+Rule EUAsia 1979 1995 - Sep lastSun 1:00u 0 -
+Rule EUAsia 1996 max - Oct lastSun 1:00u 0 -
+Rule E-EurAsia 1981 max - Mar lastSun 0:00 1:00 S
+Rule E-EurAsia 1979 1995 - Sep lastSun 0:00 0 -
+Rule E-EurAsia 1996 max - Oct lastSun 0:00 0 -
+Rule RussiaAsia 1981 1984 - Apr 1 0:00 1:00 S
+Rule RussiaAsia 1981 1983 - Oct 1 0:00 0 -
+Rule RussiaAsia 1984 1991 - Sep lastSun 2:00s 0 -
+Rule RussiaAsia 1985 1991 - Mar lastSun 2:00s 1:00 S
+Rule RussiaAsia 1992 only - Mar lastSat 23:00 1:00 S
+Rule RussiaAsia 1992 only - Sep lastSat 23:00 0 -
+Rule RussiaAsia 1993 max - Mar lastSun 2:00s 1:00 S
+Rule RussiaAsia 1993 1995 - Sep lastSun 2:00s 0 -
+Rule RussiaAsia 1996 max - Oct lastSun 2:00s 0 -
+
+# Afghanistan
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Kabul 4:36:48 - LMT 1890
+ 4:00 - AFT 1945
+ 4:30 - AFT
+
+# Armenia
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger have Yerevan switching to 3:00 (with Russian DST)
+# in spring 1991, then to 4:00 with no DST in fall 1995, then
+# readopting Russian DST in 1997. Go with Shanks & Pottenger, even
+# when they disagree with others. Edgar Der-Danieliantz
+# reported (1996-05-04) that Yerevan probably wouldn't use DST
+# in 1996, though it did use DST in 1995. IATA SSIM (1991/1998) reports that
+# Armenia switched from 3:00 to 4:00 in 1998 and observed DST after 1991,
+# but started switching at 3:00s in 1998.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Yerevan 2:58:00 - LMT 1924 May 2
+ 3:00 - YERT 1957 Mar # Yerevan Time
+ 4:00 RussiaAsia YER%sT 1991 Mar 31 2:00s
+ 3:00 1:00 YERST 1991 Sep 23 # independence
+ 3:00 RussiaAsia AM%sT 1995 Sep 24 2:00s
+ 4:00 - AMT 1997
+ 4:00 RussiaAsia AM%sT
+
+# Azerbaijan
+# From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23):
+# According to the resolution of Cabinet of Ministers, 1997
+# Resolution available at: http://aif.az/docs/daylight_res.pdf
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Azer 1997 max - Mar lastSun 4:00 1:00 S
+Rule Azer 1997 max - Oct lastSun 5:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Baku 3:19:24 - LMT 1924 May 2
+ 3:00 - BAKT 1957 Mar # Baku Time
+ 4:00 RussiaAsia BAK%sT 1991 Mar 31 2:00s
+ 3:00 1:00 BAKST 1991 Aug 30 # independence
+ 3:00 RussiaAsia AZ%sT 1992 Sep lastSat 23:00
+ 4:00 - AZT 1996 # Azerbaijan time
+ 4:00 EUAsia AZ%sT 1997
+ 4:00 Azer AZ%sT
+
+# Bahrain
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
+ 4:00 - GST 1972 Jun
+ 3:00 - AST
+
+# Bangladesh
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dhaka 6:01:40 - LMT 1890
+ 5:53:20 - HMT 1941 Oct # Howrah Mean Time?
+ 6:30 - BURT 1942 May 15 # Burma Time
+ 5:30 - IST 1942 Sep
+ 6:30 - BURT 1951 Sep 30
+ 6:00 - DACT 1971 Mar 26 # Dacca Time
+ 6:00 - BDT # Bangladesh Time
+
+# Bhutan
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Thimphu 5:58:36 - LMT 1947 Aug 15 # or Thimbu
+ 5:30 - IST 1987 Oct
+ 6:00 - BTT # Bhutan Time
+
+# British Indian Ocean Territory
+# Whitman and the 1995 CIA time zone map say 5:00, but the
+# 1997 and later maps say 6:00. Assume the switch occurred in 1996.
+# We have no information as to when standard time was introduced;
+# assume it occurred in 1907, the same year as Mauritius (which
+# then contained the Chagos Archipelago).
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Chagos 4:49:40 - LMT 1907
+ 5:00 - IOT 1996 # BIOT Time
+ 6:00 - IOT
+
+# Brunei
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Brunei 7:39:40 - LMT 1926 Mar # Bandar Seri Begawan
+ 7:30 - BNT 1933
+ 8:00 - BNT
+
+# Burma / Myanmar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Rangoon 6:24:40 - LMT 1880 # or Yangon
+ 6:24:36 - RMT 1920 # Rangoon Mean Time?
+ 6:30 - BURT 1942 May # Burma Time
+ 9:00 - JST 1945 May 3
+ 6:30 - MMT # Myanmar Time
+
+# Cambodia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Phnom_Penh 6:59:40 - LMT 1906 Jun 9
+ 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
+ 7:00 - ICT 1912 May
+ 8:00 - ICT 1931 May
+ 7:00 - ICT
+
+# China
+
+# From Guy Harris:
+# People's Republic of China. Yes, they really have only one time zone.
+
+# From Bob Devine (1988-01-28):
+# No they don't. See TIME mag, 1986-02-17 p.52. Even though
+# China is across 4 physical time zones, before Feb 1, 1986 only the
+# Peking (Bejing) time zone was recognized. Since that date, China
+# has two of 'em -- Peking's and Urumqi (named after the capital of
+# the Xinjiang Uyghur Autonomous Region). I don't know about DST for it.
+#
+# . . .I just deleted the DST table and this editor makes it too
+# painful to suck in another copy.. So, here is what I have for
+# DST start/end dates for Peking's time zone (info from AP):
+#
+# 1986 May 4 - Sept 14
+# 1987 mid-April - ??
+
+# From U. S. Naval Observatory (1989-01-19):
+# CHINA 8 H AHEAD OF UTC ALL OF CHINA, INCL TAIWAN
+# CHINA 9 H AHEAD OF UTC APR 17 - SEP 10
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that China (except for Hong Kong and Macau)
+# has had a single time zone since 1980 May 1, observing summer DST
+# from 1986 through 1991; this contradicts Devine's
+# note about Time magazine, though apparently _something_ happened in 1986.
+# Go with Shanks & Pottenger for now. I made up names for the other
+# pre-1980 time zones.
+
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Shang 1940 only - Jun 3 0:00 1:00 D
+Rule Shang 1940 1941 - Oct 1 0:00 0 S
+Rule Shang 1941 only - Mar 16 0:00 1:00 D
+Rule PRC 1986 only - May 4 0:00 1:00 D
+Rule PRC 1986 1991 - Sep Sun>=11 0:00 0 S
+Rule PRC 1987 1991 - Apr Sun>=10 0:00 1:00 D
+
+# From Anthony Fok (2001-12-20):
+# BTW, I did some research on-line and found some info regarding these five
+# historic timezones from some Taiwan websites. And yes, there are official
+# Chinese names for these locales (before 1949).
+#
+# From Jesper Norgaard Welen (2006-07-14):
+# I have investigated the timezones around 1970 on the
+# http://www.astro.com/atlas site [with provinces and county
+# boundaries summarized below].... A few other exceptions were two
+# counties on the Sichuan side of the Xizang-Sichuan border,
+# counties Dege and Baiyu which lies on the Sichuan side and are
+# therefore supposed to be GMT+7, Xizang region being GMT+6, but Dege
+# county is GMT+8 according to astro.com while Baiyu county is GMT+6
+# (could be true), for the moment I am assuming that those two
+# counties are mistakes in the astro.com data.
+
+# From Paul Eggert (2008-02-11):
+# I just now checked Google News for western news sources that talk
+# about China's single time zone, and couldn't find anything before 1986
+# talking about China being in one time zone. (That article was: Jim
+# Mann, "A clumsy embrace for another western custom: China on daylight
+# time--sort of", Los Angeles Times, 1986-05-05. By the way, this
+# article confirms the tz database's data claiming that China began
+# observing daylight saving time in 1986.
+#
+# From Thomas S. Mullaney (2008-02-11):
+# I think you're combining two subjects that need to treated
+# separately: daylight savings (which, you're correct, wasn't
+# implemented until the 1980s) and the unified time zone centered near
+# Beijing (which was implemented in 1949). Briefly, there was also a
+# "Lhasa Time" in Tibet and "Urumqi Time" in Xinjiang. The first was
+# ceased, and the second eventually recognized (again, in the 1980s).
+#
+# From Paul Eggert (2008-06-30):
+# There seems to be a good chance China switched to a single time zone in 1949
+# rather than in 1980 as Shanks & Pottenger have it, but we don't have a
+# reliable documentary source saying so yet, so for now we still go with
+# Shanks & Pottenger.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Changbai Time ("Long-white Time", Long-white = Heilongjiang area)
+# Heilongjiang (except Mohe county), Jilin
+Zone Asia/Harbin 8:26:44 - LMT 1928 # or Haerbin
+ 8:30 - CHAT 1932 Mar # Changbai Time
+ 8:00 - CST 1940
+ 9:00 - CHAT 1966 May
+ 8:30 - CHAT 1980 May
+ 8:00 PRC C%sT
+# Zhongyuan Time ("Central plain Time")
+# most of China
+Zone Asia/Shanghai 8:05:52 - LMT 1928
+ 8:00 Shang C%sT 1949
+ 8:00 PRC C%sT
+# Long-shu Time (probably due to Long and Shu being two names of that area)
+# Guangxi, Guizhou, Hainan, Ningxia, Sichuan, Shaanxi, and Yunnan;
+# most of Gansu; west Inner Mongolia; west Qinghai; and the Guangdong
+# counties Deqing, Enping, Kaiping, Luoding, Taishan, Xinxing,
+# Yangchun, Yangjiang, Yu'nan, and Yunfu.
+Zone Asia/Chongqing 7:06:20 - LMT 1928 # or Chungking
+ 7:00 - LONT 1980 May # Long-shu Time
+ 8:00 PRC C%sT
+# Xin-zang Time ("Xinjiang-Tibet Time")
+# The Gansu counties Aksay, Anxi, Dunhuang, Subei; west Qinghai;
+# the Guangdong counties Xuwen, Haikang, Suixi, Lianjiang,
+# Zhanjiang, Wuchuan, Huazhou, Gaozhou, Maoming, Dianbai, and Xinyi;
+# east Tibet, including Lhasa, Chamdo, Shigaise, Jimsar, Shawan and Hutubi;
+# east Xinjiang, including Urumqi, Turpan, Karamay, Korla, Minfeng, Jinghe,
+# Wusu, Qiemo, Xinyan, Wulanwusu, Jinghe, Yumin, Tacheng, Tuoli, Emin,
+# Shihezi, Changji, Yanqi, Heshuo, Tuokexun, Tulufan, Shanshan, Hami,
+# Fukang, Kuitun, Kumukuli, Miquan, Qitai, and Turfan.
+Zone Asia/Urumqi 5:50:20 - LMT 1928 # or Urumchi
+ 6:00 - URUT 1980 May # Urumqi Time
+ 8:00 PRC C%sT
+# Kunlun Time
+# West Tibet, including Pulan, Aheqi, Shufu, Shule;
+# West Xinjiang, including Aksu, Atushi, Yining, Hetian, Cele, Luopu, Nileke,
+# Zhaosu, Tekesi, Gongliu, Chabuchaer, Huocheng, Bole, Pishan, Suiding,
+# and Yarkand.
+Zone Asia/Kashgar 5:03:56 - LMT 1928 # or Kashi or Kaxgar
+ 5:30 - KAST 1940 # Kashgar Time
+ 5:00 - KAST 1980 May
+ 8:00 PRC C%sT
+
+# Hong Kong (Xianggang)
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule HK 1946 only - Apr 20 3:30 1:00 S
+Rule HK 1946 only - Dec 1 3:30 0 -
+Rule HK 1947 only - Apr 13 3:30 1:00 S
+Rule HK 1947 only - Dec 30 3:30 0 -
+Rule HK 1948 only - May 2 3:30 1:00 S
+Rule HK 1948 1952 - Oct lastSun 3:30 0 -
+Rule HK 1949 1953 - Apr Sun>=1 3:30 1:00 S
+Rule HK 1953 only - Nov 1 3:30 0 -
+Rule HK 1954 1964 - Mar Sun>=18 3:30 1:00 S
+Rule HK 1954 only - Oct 31 3:30 0 -
+Rule HK 1955 1964 - Nov Sun>=1 3:30 0 -
+Rule HK 1965 1977 - Apr Sun>=16 3:30 1:00 S
+Rule HK 1965 1977 - Oct Sun>=16 3:30 0 -
+Rule HK 1979 1980 - May Sun>=8 3:30 1:00 S
+Rule HK 1979 1980 - Oct Sun>=16 3:30 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Hong_Kong 7:36:36 - LMT 1904 Oct 30
+ 8:00 HK HK%sT
+
+
+###############################################################################
+
+# Taiwan
+
+# Shanks & Pottenger write that Taiwan observed DST during 1945, when it
+# was still controlled by Japan. This is hard to believe, but we don't
+# have any other information.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Taiwan 1945 1951 - May 1 0:00 1:00 D
+Rule Taiwan 1945 1951 - Oct 1 0:00 0 S
+Rule Taiwan 1952 only - Mar 1 0:00 1:00 D
+Rule Taiwan 1952 1954 - Nov 1 0:00 0 S
+Rule Taiwan 1953 1959 - Apr 1 0:00 1:00 D
+Rule Taiwan 1955 1961 - Oct 1 0:00 0 S
+Rule Taiwan 1960 1961 - Jun 1 0:00 1:00 D
+Rule Taiwan 1974 1975 - Apr 1 0:00 1:00 D
+Rule Taiwan 1974 1975 - Oct 1 0:00 0 S
+Rule Taiwan 1980 only - Jun 30 0:00 1:00 D
+Rule Taiwan 1980 only - Sep 30 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Taipei 8:06:00 - LMT 1896 # or Taibei or T'ai-pei
+ 8:00 Taiwan C%sT
+
+# Macau (Macao, Aomen)
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Macau 1961 1962 - Mar Sun>=16 3:30 1:00 S
+Rule Macau 1961 1964 - Nov Sun>=1 3:30 0 -
+Rule Macau 1963 only - Mar Sun>=16 0:00 1:00 S
+Rule Macau 1964 only - Mar Sun>=16 3:30 1:00 S
+Rule Macau 1965 only - Mar Sun>=16 0:00 1:00 S
+Rule Macau 1965 only - Oct 31 0:00 0 -
+Rule Macau 1966 1971 - Apr Sun>=16 3:30 1:00 S
+Rule Macau 1966 1971 - Oct Sun>=16 3:30 0 -
+Rule Macau 1972 1974 - Apr Sun>=15 0:00 1:00 S
+Rule Macau 1972 1973 - Oct Sun>=15 0:00 0 -
+Rule Macau 1974 1977 - Oct Sun>=15 3:30 0 -
+Rule Macau 1975 1977 - Apr Sun>=15 3:30 1:00 S
+Rule Macau 1978 1980 - Apr Sun>=15 0:00 1:00 S
+Rule Macau 1978 1980 - Oct Sun>=15 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Macau 7:34:20 - LMT 1912
+ 8:00 Macau MO%sT 1999 Dec 20 # return to China
+ 8:00 PRC C%sT
+
+
+###############################################################################
+
+# Cyprus
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Cyprus 1975 only - Apr 13 0:00 1:00 S
+Rule Cyprus 1975 only - Oct 12 0:00 0 -
+Rule Cyprus 1976 only - May 15 0:00 1:00 S
+Rule Cyprus 1976 only - Oct 11 0:00 0 -
+Rule Cyprus 1977 1980 - Apr Sun>=1 0:00 1:00 S
+Rule Cyprus 1977 only - Sep 25 0:00 0 -
+Rule Cyprus 1978 only - Oct 2 0:00 0 -
+Rule Cyprus 1979 1997 - Sep lastSun 0:00 0 -
+Rule Cyprus 1981 1998 - Mar lastSun 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Nicosia 2:13:28 - LMT 1921 Nov 14
+ 2:00 Cyprus EE%sT 1998 Sep
+ 2:00 EUAsia EE%sT
+# IATA SSIM (1998-09) has Cyprus using EU rules for the first time.
+
+# Classically, Cyprus belongs to Asia; e.g. see Herodotus, Histories, I.72.
+# However, for various reasons many users expect to find it under Europe.
+Link Asia/Nicosia Europe/Nicosia
+
+# Georgia
+# From Paul Eggert (1994-11-19):
+# Today's _Economist_ (p 60) reports that Georgia moved its clocks forward
+# an hour recently, due to a law proposed by Zurab Murvanidze,
+# an MP who went on a hunger strike for 11 days to force discussion about it!
+# We have no details, but we'll guess they didn't move the clocks back in fall.
+#
+# From Mathew Englander, quoting AP (1996-10-23 13:05-04):
+# Instead of putting back clocks at the end of October, Georgia
+# will stay on daylight savings time this winter to save energy,
+# President Eduard Shevardnadze decreed Wednesday.
+#
+# From the BBC via Joseph S. Myers (2004-06-27):
+#
+# Georgia moved closer to Western Europe on Sunday... The former Soviet
+# republic has changed its time zone back to that of Moscow. As a result it
+# is now just four hours ahead of Greenwich Mean Time, rather than five hours
+# ahead. The switch was decreed by the pro-Western president of Georgia,
+# Mikhail Saakashvili, who said the change was partly prompted by the process
+# of integration into Europe.
+
+# From Teimuraz Abashidze (2005-11-07):
+# Government of Georgia ... decided to NOT CHANGE daylight savings time on
+# [Oct.] 30, as it was done before during last more than 10 years.
+# Currently, we are in fact GMT +4:00, as before 30 October it was GMT
+# +3:00.... The problem is, there is NO FORMAL LAW or governmental document
+# about it. As far as I can find, I was told, that there is no document,
+# because we just DIDN'T ISSUE document about switching to winter time....
+# I don't know what can be done, especially knowing that some years ago our
+# DST rules where changed THREE TIMES during one month.
+
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Tbilisi 2:59:16 - LMT 1880
+ 2:59:16 - TBMT 1924 May 2 # Tbilisi Mean Time
+ 3:00 - TBIT 1957 Mar # Tbilisi Time
+ 4:00 RussiaAsia TBI%sT 1991 Mar 31 2:00s
+ 3:00 1:00 TBIST 1991 Apr 9 # independence
+ 3:00 RussiaAsia GE%sT 1992 # Georgia Time
+ 3:00 E-EurAsia GE%sT 1994 Sep lastSun
+ 4:00 E-EurAsia GE%sT 1996 Oct lastSun
+ 4:00 1:00 GEST 1997 Mar lastSun
+ 4:00 E-EurAsia GE%sT 2004 Jun 27
+ 3:00 RussiaAsia GE%sT 2005 Mar lastSun 2:00
+ 4:00 - GET
+
+# East Timor
+
+# See Indonesia for the 1945 transition.
+
+# From Joao Carrascalao, brother of the former governor of East Timor, in
+# <a href="http://etan.org/et99c/december/26-31/30ETMAY.htm">
+# East Timor may be late for its millennium
+# </a> (1999-12-26/31):
+# Portugal tried to change the time forward in 1974 because the sun
+# rises too early but the suggestion raised a lot of problems with the
+# Timorese and I still don't think it would work today because it
+# conflicts with their way of life.
+
+# From Paul Eggert (2000-12-04):
+# We don't have any record of the above attempt.
+# Most likely our records are incomplete, but we have no better data.
+
+# <a href="http://www.hri.org/news/world/undh/last/00-08-16.undh.html">
+# From Manoel de Almeida e Silva, Deputy Spokesman for the UN Secretary-General
+# (2000-08-16)</a>:
+# The Cabinet of the East Timor Transition Administration decided
+# today to advance East Timor's time by one hour. The time change,
+# which will be permanent, with no seasonal adjustment, will happen at
+# midnight on Saturday, September 16.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dili 8:22:20 - LMT 1912
+ 8:00 - TLT 1942 Feb 21 23:00 # E Timor Time
+ 9:00 - JST 1945 Sep 23
+ 9:00 - TLT 1976 May 3
+ 8:00 - CIT 2000 Sep 17 00:00
+ 9:00 - TLT
+
+# India
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Kolkata 5:53:28 - LMT 1880 # Kolkata
+ 5:53:20 - HMT 1941 Oct # Howrah Mean Time?
+ 6:30 - BURT 1942 May 15 # Burma Time
+ 5:30 - IST 1942 Sep
+ 5:30 1:00 IST 1945 Oct 15
+ 5:30 - IST
+# The following are like Asia/Kolkata:
+# Andaman Is
+# Lakshadweep (Laccadive, Minicoy and Amindivi Is)
+# Nicobar Is
+
+# Indonesia
+#
+# From Gwillim Law (2001-05-28), overriding Shanks & Pottenger:
+# <http://www.sumatera-inc.com/go_to_invest/about_indonesia.asp#standtime>
+# says that Indonesia's time zones changed on 1988-01-01. Looking at some
+# time zone maps, I think that must refer to Western Borneo (Kalimantan Barat
+# and Kalimantan Tengah) switching from UTC+8 to UTC+7.
+#
+# From Paul Eggert (2007-03-10):
+# Here is another correction to Shanks & Pottenger.
+# JohnTWB writes that Japanese forces did not surrender control in
+# Indonesia until 1945-09-01 00:00 at the earliest (in Jakarta) and
+# other formal surrender ceremonies were September 9, 11, and 13, plus
+# September 12 for the regional surrender to Mountbatten in Singapore.
+# These would be the earliest possible times for a change.
+# Regimes horaires pour le monde entier, by Henri Le Corre, (Editions
+# Traditionnelles, 1987, Paris) says that Java and Madura switched
+# from JST to UTC+07:30 on 1945-09-23, and gives 1944-09-01 for Jayapura
+# (Hollandia). For now, assume all Indonesian locations other than Jayapura
+# switched on 1945-09-23.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Jakarta 7:07:12 - LMT 1867 Aug 10
+# Shanks & Pottenger say the next transition was at 1924 Jan 1 0:13,
+# but this must be a typo.
+ 7:07:12 - JMT 1923 Dec 31 23:47:12 # Jakarta
+ 7:20 - JAVT 1932 Nov # Java Time
+ 7:30 - WIT 1942 Mar 23
+ 9:00 - JST 1945 Sep 23
+ 7:30 - WIT 1948 May
+ 8:00 - WIT 1950 May
+ 7:30 - WIT 1964
+ 7:00 - WIT
+Zone Asia/Pontianak 7:17:20 - LMT 1908 May
+ 7:17:20 - PMT 1932 Nov # Pontianak MT
+ 7:30 - WIT 1942 Jan 29
+ 9:00 - JST 1945 Sep 23
+ 7:30 - WIT 1948 May
+ 8:00 - WIT 1950 May
+ 7:30 - WIT 1964
+ 8:00 - CIT 1988 Jan 1
+ 7:00 - WIT
+Zone Asia/Makassar 7:57:36 - LMT 1920
+ 7:57:36 - MMT 1932 Nov # Macassar MT
+ 8:00 - CIT 1942 Feb 9
+ 9:00 - JST 1945 Sep 23
+ 8:00 - CIT
+Zone Asia/Jayapura 9:22:48 - LMT 1932 Nov
+ 9:00 - EIT 1944 Sep 1
+ 9:30 - CST 1964
+ 9:00 - EIT
+
+# Iran
+
+# From Roozbeh Pournader (2003-03-15):
+# This is an English translation of what I just found (originally in Persian).
+# The Gregorian dates in brackets are mine:
+#
+# Official Newspaper No. 13548-1370/6/25 [1991-09-16]
+# No. 16760/T233 H 1370/6/10 [1991-09-01]
+#
+# The Rule About Change of the Official Time of the Country
+#
+# The Board of Ministers, in the meeting dated 1370/5/23 [1991-08-14],
+# based on the suggestion number 2221/D dated 1370/4/22 [1991-07-13]
+# of the Country's Organization for Official and Employment Affairs,
+# and referring to the law for equating the working hours of workers
+# and officers in the whole country dated 1359/4/23 [1980-07-14], and
+# for synchronizing the official times of the country, agreed that:
+#
+# The official time of the country will should move forward one hour
+# at the 24[:00] hours of the first day of Farvardin and should return
+# to its previous state at the 24[:00] hours of the 30th day of
+# Shahrivar.
+#
+# First Deputy to the President - Hassan Habibi
+#
+# From personal experience, that agrees with what has been followed
+# for at least the last 5 years. Before that, for a few years, the
+# date used was the first Thursday night of Farvardin and the last
+# Thursday night of Shahrivar, but I can't give exact dates....
+# I have also changed the abbreviations to what is considered correct
+# here in Iran, IRST for regular time and IRDT for daylight saving time.
+#
+# From Roozbeh Pournader (2005-04-05):
+# The text of the Iranian law, in effect since 1925, clearly mentions
+# that the true solar year is the measure, and there is no arithmetic
+# leap year calculation involved. There has never been any serious
+# plan to change that law....
+#
+# From Paul Eggert (2006-03-22):
+# Go with Shanks & Pottenger before Sept. 1991, and with Pournader thereafter.
+# I used Ed Reingold's cal-persia in GNU Emacs 21.2 to check Persian dates,
+# stopping after 2037 when 32-bit time_t's overflow.
+# That cal-persia used Birashk's approximation, which disagrees with the solar
+# calendar predictions for the year 2025, so I corrected those dates by hand.
+#
+# From Oscar van Vlijmen (2005-03-30), writing about future
+# discrepancies between cal-persia and the Iranian calendar:
+# For 2091 solar-longitude-after yields 2091-03-20 08:40:07.7 UT for
+# the vernal equinox and that gets so close to 12:00 some local
+# Iranian time that the definition of the correct location needs to be
+# known exactly, amongst other factors. 2157 is even closer:
+# 2157-03-20 08:37:15.5 UT. But the Gregorian year 2025 should give
+# no interpretation problem whatsoever. By the way, another instant
+# in the near future where there will be a discrepancy between
+# arithmetical and astronomical Iranian calendars will be in 2058:
+# vernal equinox on 2058-03-20 09:03:05.9 UT. The Java version of
+# Reingold's/Dershowitz' calculator gives correctly the Gregorian date
+# 2058-03-21 for 1 Farvardin 1437 (astronomical).
+#
+# From Steffen Thorsen (2006-03-22):
+# Several of my users have reported that Iran will not observe DST anymore:
+# http://www.irna.ir/en/news/view/line-17/0603193812164948.htm
+#
+# From Reuters (2007-09-16), with a heads-up from Jesper Norgaard Welen:
+# ... the Guardian Council ... approved a law on Sunday to re-introduce
+# daylight saving time ...
+# http://uk.reuters.com/article/oilRpt/idUKBLA65048420070916
+#
+# From Roozbeh Pournader (2007-11-05):
+# This is quoted from Official Gazette of the Islamic Republic of
+# Iran, Volume 63, Number 18242, dated Tuesday 1386/6/24
+# [2007-10-16]. I am doing the best translation I can:...
+# The official time of the country will be moved forward for one hour
+# on the 24 hours of the first day of the month of Farvardin and will
+# be changed back to its previous state on the 24 hours of the
+# thirtieth day of Shahrivar.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Iran 1978 1980 - Mar 21 0:00 1:00 D
+Rule Iran 1978 only - Oct 21 0:00 0 S
+Rule Iran 1979 only - Sep 19 0:00 0 S
+Rule Iran 1980 only - Sep 23 0:00 0 S
+Rule Iran 1991 only - May 3 0:00 1:00 D
+Rule Iran 1992 1995 - Mar 22 0:00 1:00 D
+Rule Iran 1991 1995 - Sep 22 0:00 0 S
+Rule Iran 1996 only - Mar 21 0:00 1:00 D
+Rule Iran 1996 only - Sep 21 0:00 0 S
+Rule Iran 1997 1999 - Mar 22 0:00 1:00 D
+Rule Iran 1997 1999 - Sep 22 0:00 0 S
+Rule Iran 2000 only - Mar 21 0:00 1:00 D
+Rule Iran 2000 only - Sep 21 0:00 0 S
+Rule Iran 2001 2003 - Mar 22 0:00 1:00 D
+Rule Iran 2001 2003 - Sep 22 0:00 0 S
+Rule Iran 2004 only - Mar 21 0:00 1:00 D
+Rule Iran 2004 only - Sep 21 0:00 0 S
+Rule Iran 2005 only - Mar 22 0:00 1:00 D
+Rule Iran 2005 only - Sep 22 0:00 0 S
+Rule Iran 2008 only - Mar 21 0:00 1:00 D
+Rule Iran 2008 only - Sep 21 0:00 0 S
+Rule Iran 2009 2011 - Mar 22 0:00 1:00 D
+Rule Iran 2009 2011 - Sep 22 0:00 0 S
+Rule Iran 2012 only - Mar 21 0:00 1:00 D
+Rule Iran 2012 only - Sep 21 0:00 0 S
+Rule Iran 2013 2015 - Mar 22 0:00 1:00 D
+Rule Iran 2013 2015 - Sep 22 0:00 0 S
+Rule Iran 2016 only - Mar 21 0:00 1:00 D
+Rule Iran 2016 only - Sep 21 0:00 0 S
+Rule Iran 2017 2019 - Mar 22 0:00 1:00 D
+Rule Iran 2017 2019 - Sep 22 0:00 0 S
+Rule Iran 2020 only - Mar 21 0:00 1:00 D
+Rule Iran 2020 only - Sep 21 0:00 0 S
+Rule Iran 2021 2023 - Mar 22 0:00 1:00 D
+Rule Iran 2021 2023 - Sep 22 0:00 0 S
+Rule Iran 2024 only - Mar 21 0:00 1:00 D
+Rule Iran 2024 only - Sep 21 0:00 0 S
+Rule Iran 2025 2027 - Mar 22 0:00 1:00 D
+Rule Iran 2025 2027 - Sep 22 0:00 0 S
+Rule Iran 2028 2029 - Mar 21 0:00 1:00 D
+Rule Iran 2028 2029 - Sep 21 0:00 0 S
+Rule Iran 2030 2031 - Mar 22 0:00 1:00 D
+Rule Iran 2030 2031 - Sep 22 0:00 0 S
+Rule Iran 2032 2033 - Mar 21 0:00 1:00 D
+Rule Iran 2032 2033 - Sep 21 0:00 0 S
+Rule Iran 2034 2035 - Mar 22 0:00 1:00 D
+Rule Iran 2034 2035 - Sep 22 0:00 0 S
+Rule Iran 2036 2037 - Mar 21 0:00 1:00 D
+Rule Iran 2036 2037 - Sep 21 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Tehran 3:25:44 - LMT 1916
+ 3:25:44 - TMT 1946 # Tehran Mean Time
+ 3:30 - IRST 1977 Nov
+ 4:00 Iran IR%sT 1979
+ 3:30 Iran IR%sT
+
+
+# Iraq
+#
+# From Jonathan Lennox (2000-06-12):
+# An article in this week's Economist ("Inside the Saddam-free zone", p. 50 in
+# the U.S. edition) on the Iraqi Kurds contains a paragraph:
+# "The three northern provinces ... switched their clocks this spring and
+# are an hour ahead of Baghdad."
+#
+# But Rives McDow (2000-06-18) quotes a contact in Iraqi-Kurdistan as follows:
+# In the past, some Kurdish nationalists, as a protest to the Iraqi
+# Government, did not adhere to daylight saving time. They referred
+# to daylight saving as Saddam time. But, as of today, the time zone
+# in Iraqi-Kurdistan is on standard time with Baghdad, Iraq.
+#
+# So we'll ignore the Economist's claim.
+
+# From Steffen Thorsen (2008-03-10):
+# The cabinet in Iraq abolished DST last week, according to the following
+# news sources (in Arabic):
+# <a href="http://www.aljeeran.net/wesima_articles/news-20080305-98602.html">
+# http://www.aljeeran.net/wesima_articles/news-20080305-98602.html
+# </a>
+# <a href="http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10">
+# http://www.aswataliraq.info/look/article.tpl?id=2047&IdLanguage=17&IdPublication=4&NrArticle=71743&NrIssue=1&NrSection=10
+# </a>
+#
+# We have published a short article in English about the change:
+# <a href="http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html">
+# http://www.timeanddate.com/news/time/iraq-dumps-daylight-saving.html
+# </a>
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Iraq 1982 only - May 1 0:00 1:00 D
+Rule Iraq 1982 1984 - Oct 1 0:00 0 S
+Rule Iraq 1983 only - Mar 31 0:00 1:00 D
+Rule Iraq 1984 1985 - Apr 1 0:00 1:00 D
+Rule Iraq 1985 1990 - Sep lastSun 1:00s 0 S
+Rule Iraq 1986 1990 - Mar lastSun 1:00s 1:00 D
+# IATA SSIM (1991/1996) says Apr 1 12:01am UTC; guess the `:01' is a typo.
+# Shanks & Pottenger say Iraq did not observe DST 1992/1997; ignore this.
+#
+Rule Iraq 1991 2007 - Apr 1 3:00s 1:00 D
+Rule Iraq 1991 2007 - Oct 1 3:00s 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Baghdad 2:57:40 - LMT 1890
+ 2:57:36 - BMT 1918 # Baghdad Mean Time?
+ 3:00 - AST 1982 May
+ 3:00 Iraq A%sT
+
+
+###############################################################################
+
+# Israel
+
+# From Ephraim Silverberg (2001-01-11):
+#
+# I coined "IST/IDT" circa 1988. Until then there were three
+# different abbreviations in use:
+#
+# JST Jerusalem Standard Time [Danny Braniss, Hebrew University]
+# IZT Israel Zonal (sic) Time [Prof. Haim Papo, Technion]
+# EEST Eastern Europe Standard Time [used by almost everyone else]
+#
+# Since timezones should be called by country and not capital cities,
+# I ruled out JST. As Israel is in Asia Minor and not Eastern Europe,
+# EEST was equally unacceptable. Since "zonal" was not compatible with
+# any other timezone abbreviation, I felt that 'IST' was the way to go
+# and, indeed, it has received almost universal acceptance in timezone
+# settings in Israeli computers.
+#
+# In any case, I am happy to share timezone abbreviations with India,
+# high on my favorite-country list (and not only because my wife's
+# family is from India).
+
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1940 only - Jun 1 0:00 1:00 D
+Rule Zion 1942 1944 - Nov 1 0:00 0 S
+Rule Zion 1943 only - Apr 1 2:00 1:00 D
+Rule Zion 1944 only - Apr 1 0:00 1:00 D
+Rule Zion 1945 only - Apr 16 0:00 1:00 D
+Rule Zion 1945 only - Nov 1 2:00 0 S
+Rule Zion 1946 only - Apr 16 2:00 1:00 D
+Rule Zion 1946 only - Nov 1 0:00 0 S
+Rule Zion 1948 only - May 23 0:00 2:00 DD
+Rule Zion 1948 only - Sep 1 0:00 1:00 D
+Rule Zion 1948 1949 - Nov 1 2:00 0 S
+Rule Zion 1949 only - May 1 0:00 1:00 D
+Rule Zion 1950 only - Apr 16 0:00 1:00 D
+Rule Zion 1950 only - Sep 15 3:00 0 S
+Rule Zion 1951 only - Apr 1 0:00 1:00 D
+Rule Zion 1951 only - Nov 11 3:00 0 S
+Rule Zion 1952 only - Apr 20 2:00 1:00 D
+Rule Zion 1952 only - Oct 19 3:00 0 S
+Rule Zion 1953 only - Apr 12 2:00 1:00 D
+Rule Zion 1953 only - Sep 13 3:00 0 S
+Rule Zion 1954 only - Jun 13 0:00 1:00 D
+Rule Zion 1954 only - Sep 12 0:00 0 S
+Rule Zion 1955 only - Jun 11 2:00 1:00 D
+Rule Zion 1955 only - Sep 11 0:00 0 S
+Rule Zion 1956 only - Jun 3 0:00 1:00 D
+Rule Zion 1956 only - Sep 30 3:00 0 S
+Rule Zion 1957 only - Apr 29 2:00 1:00 D
+Rule Zion 1957 only - Sep 22 0:00 0 S
+Rule Zion 1974 only - Jul 7 0:00 1:00 D
+Rule Zion 1974 only - Oct 13 0:00 0 S
+Rule Zion 1975 only - Apr 20 0:00 1:00 D
+Rule Zion 1975 only - Aug 31 0:00 0 S
+Rule Zion 1985 only - Apr 14 0:00 1:00 D
+Rule Zion 1985 only - Sep 15 0:00 0 S
+Rule Zion 1986 only - May 18 0:00 1:00 D
+Rule Zion 1986 only - Sep 7 0:00 0 S
+Rule Zion 1987 only - Apr 15 0:00 1:00 D
+Rule Zion 1987 only - Sep 13 0:00 0 S
+Rule Zion 1988 only - Apr 9 0:00 1:00 D
+Rule Zion 1988 only - Sep 3 0:00 0 S
+
+# From Ephraim Silverberg
+# (1997-03-04, 1998-03-16, 1998-12-28, 2000-01-17, 2000-07-25, 2004-12-22,
+# and 2005-02-17):
+
+# According to the Office of the Secretary General of the Ministry of
+# Interior, there is NO set rule for Daylight-Savings/Standard time changes.
+# One thing is entrenched in law, however: that there must be at least 150
+# days of daylight savings time annually. From 1993-1998, the change to
+# daylight savings time was on a Friday morning from midnight IST to
+# 1 a.m IDT; up until 1998, the change back to standard time was on a
+# Saturday night from midnight daylight savings time to 11 p.m. standard
+# time. 1996 is an exception to this rule where the change back to standard
+# time took place on Sunday night instead of Saturday night to avoid
+# conflicts with the Jewish New Year. In 1999, the change to
+# daylight savings time was still on a Friday morning but from
+# 2 a.m. IST to 3 a.m. IDT; furthermore, the change back to standard time
+# was also on a Friday morning from 2 a.m. IDT to 1 a.m. IST for
+# 1999 only. In the year 2000, the change to daylight savings time was
+# similar to 1999, but although the change back will be on a Friday, it
+# will take place from 1 a.m. IDT to midnight IST. Starting in 2001, all
+# changes to/from will take place at 1 a.m. old time, but now there is no
+# rule as to what day of the week it will take place in as the start date
+# (except in 2003) is the night after the Passover Seder (i.e. the eve
+# of the 16th of Nisan in the lunar Hebrew calendar) and the end date
+# (except in 2002) is three nights before Yom Kippur [Day of Atonement]
+# (the eve of the 7th of Tishrei in the lunar Hebrew calendar).
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1989 only - Apr 30 0:00 1:00 D
+Rule Zion 1989 only - Sep 3 0:00 0 S
+Rule Zion 1990 only - Mar 25 0:00 1:00 D
+Rule Zion 1990 only - Aug 26 0:00 0 S
+Rule Zion 1991 only - Mar 24 0:00 1:00 D
+Rule Zion 1991 only - Sep 1 0:00 0 S
+Rule Zion 1992 only - Mar 29 0:00 1:00 D
+Rule Zion 1992 only - Sep 6 0:00 0 S
+Rule Zion 1993 only - Apr 2 0:00 1:00 D
+Rule Zion 1993 only - Sep 5 0:00 0 S
+
+# The dates for 1994-1995 were obtained from Office of the Spokeswoman for the
+# Ministry of Interior, Jerusalem, Israel. The spokeswoman can be reached by
+# calling the office directly at 972-2-6701447 or 972-2-6701448.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1994 only - Apr 1 0:00 1:00 D
+Rule Zion 1994 only - Aug 28 0:00 0 S
+Rule Zion 1995 only - Mar 31 0:00 1:00 D
+Rule Zion 1995 only - Sep 3 0:00 0 S
+
+# The dates for 1996 were determined by the Minister of Interior of the
+# time, Haim Ramon. The official announcement regarding 1996-1998
+# (with the dates for 1997-1998 no longer being relevant) can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/1996-1998.ramon.ps.gz
+#
+# The dates for 1997-1998 were altered by his successor, Rabbi Eli Suissa.
+#
+# The official announcements for the years 1997-1999 can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/YYYY.ps.gz
+#
+# where YYYY is the relevant year.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 1996 only - Mar 15 0:00 1:00 D
+Rule Zion 1996 only - Sep 16 0:00 0 S
+Rule Zion 1997 only - Mar 21 0:00 1:00 D
+Rule Zion 1997 only - Sep 14 0:00 0 S
+Rule Zion 1998 only - Mar 20 0:00 1:00 D
+Rule Zion 1998 only - Sep 6 0:00 0 S
+Rule Zion 1999 only - Apr 2 2:00 1:00 D
+Rule Zion 1999 only - Sep 3 2:00 0 S
+
+# The Knesset Interior Committee has changed the dates for 2000 for
+# the third time in just over a year and have set new dates for the
+# years 2001-2004 as well.
+#
+# The official announcement for the start date of 2000 can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-start.ps.gz
+#
+# The official announcement for the end date of 2000 and the dates
+# for the years 2001-2004 can be viewed at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2000-2004.ps.gz
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 2000 only - Apr 14 2:00 1:00 D
+Rule Zion 2000 only - Oct 6 1:00 0 S
+Rule Zion 2001 only - Apr 9 1:00 1:00 D
+Rule Zion 2001 only - Sep 24 1:00 0 S
+Rule Zion 2002 only - Mar 29 1:00 1:00 D
+Rule Zion 2002 only - Oct 7 1:00 0 S
+Rule Zion 2003 only - Mar 28 1:00 1:00 D
+Rule Zion 2003 only - Oct 3 1:00 0 S
+Rule Zion 2004 only - Apr 7 1:00 1:00 D
+Rule Zion 2004 only - Sep 22 1:00 0 S
+
+# The proposed law agreed upon by the Knesset Interior Committee on
+# 2005-02-14 is that, for 2005 and beyond, DST starts at 02:00 the
+# last Friday before April 2nd (i.e. the last Friday in March or April
+# 1st itself if it falls on a Friday) and ends at 02:00 on the Saturday
+# night _before_ the fast of Yom Kippur.
+#
+# Those who can read Hebrew can view the announcement at:
+#
+# ftp://ftp.cs.huji.ac.il/pub/tz/announcements/2005+beyond.ps
+
+# From Paul Eggert (2005-02-22):
+# I used Ephraim Silverberg's dst-israel.el program
+# <ftp://ftp.cs.huji.ac.il/pub/tz/software/dst-israel.el> (2005-02-20)
+# along with Ed Reingold's cal-hebrew in GNU Emacs 21.4,
+# to generate the transitions in this list.
+# (I replaced "lastFri" with "Fri>=26" by hand.)
+# The spring transitions below all correspond to the following Rule:
+#
+# Rule Zion 2005 max - Mar Fri>=26 2:00 1:00 D
+#
+# but older zic implementations (e.g., Solaris 8) do not support
+# "Fri>=26" to mean April 1 in years like 2005, so for now we list the
+# springtime transitions explicitly.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Zion 2005 only - Apr 1 2:00 1:00 D
+Rule Zion 2005 only - Oct 9 2:00 0 S
+Rule Zion 2006 2010 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2006 only - Oct 1 2:00 0 S
+Rule Zion 2007 only - Sep 16 2:00 0 S
+Rule Zion 2008 only - Oct 5 2:00 0 S
+Rule Zion 2009 only - Sep 27 2:00 0 S
+Rule Zion 2010 only - Sep 12 2:00 0 S
+Rule Zion 2011 only - Apr 1 2:00 1:00 D
+Rule Zion 2011 only - Oct 2 2:00 0 S
+Rule Zion 2012 2015 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2012 only - Sep 23 2:00 0 S
+Rule Zion 2013 only - Sep 8 2:00 0 S
+Rule Zion 2014 only - Sep 28 2:00 0 S
+Rule Zion 2015 only - Sep 20 2:00 0 S
+Rule Zion 2016 only - Apr 1 2:00 1:00 D
+Rule Zion 2016 only - Oct 9 2:00 0 S
+Rule Zion 2017 2021 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2017 only - Sep 24 2:00 0 S
+Rule Zion 2018 only - Sep 16 2:00 0 S
+Rule Zion 2019 only - Oct 6 2:00 0 S
+Rule Zion 2020 only - Sep 27 2:00 0 S
+Rule Zion 2021 only - Sep 12 2:00 0 S
+Rule Zion 2022 only - Apr 1 2:00 1:00 D
+Rule Zion 2022 only - Oct 2 2:00 0 S
+Rule Zion 2023 2032 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2023 only - Sep 24 2:00 0 S
+Rule Zion 2024 only - Oct 6 2:00 0 S
+Rule Zion 2025 only - Sep 28 2:00 0 S
+Rule Zion 2026 only - Sep 20 2:00 0 S
+Rule Zion 2027 only - Oct 10 2:00 0 S
+Rule Zion 2028 only - Sep 24 2:00 0 S
+Rule Zion 2029 only - Sep 16 2:00 0 S
+Rule Zion 2030 only - Oct 6 2:00 0 S
+Rule Zion 2031 only - Sep 21 2:00 0 S
+Rule Zion 2032 only - Sep 12 2:00 0 S
+Rule Zion 2033 only - Apr 1 2:00 1:00 D
+Rule Zion 2033 only - Oct 2 2:00 0 S
+Rule Zion 2034 2037 - Mar Fri>=26 2:00 1:00 D
+Rule Zion 2034 only - Sep 17 2:00 0 S
+Rule Zion 2035 only - Oct 7 2:00 0 S
+Rule Zion 2036 only - Sep 28 2:00 0 S
+Rule Zion 2037 only - Sep 13 2:00 0 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Jerusalem 2:20:56 - LMT 1880
+ 2:20:40 - JMT 1918 # Jerusalem Mean Time?
+ 2:00 Zion I%sT
+
+
+
+###############################################################################
+
+# Japan
+
+# `9:00' and `JST' is from Guy Harris.
+
+# From Paul Eggert (1995-03-06):
+# Today's _Asahi Evening News_ (page 4) reports that Japan had
+# daylight saving between 1948 and 1951, but ``the system was discontinued
+# because the public believed it would lead to longer working hours.''
+
+# From Mayumi Negishi in the 2005-08-10 Japan Times
+# <http://www.japantimes.co.jp/cgi-bin/getarticle.pl5?nn20050810f2.htm>:
+# Occupation authorities imposed daylight-saving time on Japan on
+# [1948-05-01].... But lack of prior debate and the execution of
+# daylight-saving time just three days after the bill was passed generated
+# deep hatred of the concept.... The Diet unceremoniously passed a bill to
+# dump the unpopular system in October 1951, less than a month after the San
+# Francisco Peace Treaty was signed. (A government poll in 1951 showed 53%
+# of the Japanese wanted to scrap daylight-saving time, as opposed to 30% who
+# wanted to keep it.)
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that DST in Japan during those years was as follows:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Japan 1948 only - May Sun>=1 2:00 1:00 D
+Rule Japan 1948 1951 - Sep Sat>=8 2:00 0 S
+Rule Japan 1949 only - Apr Sun>=1 2:00 1:00 D
+Rule Japan 1950 1951 - May Sun>=1 2:00 1:00 D
+# but the only locations using it (for birth certificates, presumably, since
+# their audience is astrologers) were US military bases. For now, assume
+# that for most purposes daylight-saving time was observed; otherwise, what
+# would have been the point of the 1951 poll?
+
+# From Hideyuki Suzuki (1998-11-09):
+# 'Tokyo' usually stands for the former location of Tokyo Astronomical
+# Observatory: E 139 44' 40".90 (9h 18m 58s.727), N 35 39' 16".0.
+# This data is from 'Rika Nenpyou (Chronological Scientific Tables) 1996'
+# edited by National Astronomical Observatory of Japan....
+# JST (Japan Standard Time) has been used since 1888-01-01 00:00 (JST).
+# The law is enacted on 1886-07-07.
+
+# From Hideyuki Suzuki (1998-11-16):
+# The ordinance No. 51 (1886) established "standard time" in Japan,
+# which stands for the time on E 135 degree.
+# In the ordinance No. 167 (1895), "standard time" was renamed to "central
+# standard time". And the same ordinance also established "western standard
+# time", which stands for the time on E 120 degree.... But "western standard
+# time" was abolished in the ordinance No. 529 (1937). In the ordinance No.
+# 167, there is no mention regarding for what place western standard time is
+# standard....
+#
+# I wrote "ordinance" above, but I don't know how to translate.
+# In Japanese it's "chokurei", which means ordinance from emperor.
+
+# Shanks & Pottenger claim JST in use since 1896, and that a few
+# places (e.g. Ishigaki) use +0800; go with Suzuki. Guess that all
+# ordinances took effect on Jan 1.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Tokyo 9:18:59 - LMT 1887 Dec 31 15:00u
+ 9:00 - JST 1896
+ 9:00 - CJT 1938
+ 9:00 Japan J%sT
+# Since 1938, all Japanese possessions have been like Asia/Tokyo.
+
+# Jordan
+#
+# From <a href="http://star.arabia.com/990701/JO9.html">
+# Jordan Week (1999-07-01) </a> via Steffen Thorsen (1999-09-09):
+# Clocks in Jordan were forwarded one hour on Wednesday at midnight,
+# in accordance with the government's decision to implement summer time
+# all year round.
+#
+# From <a href="http://star.arabia.com/990930/JO9.html">
+# Jordan Week (1999-09-30) </a> via Steffen Thorsen (1999-11-09):
+# Winter time starts today Thursday, 30 September. Clocks will be turned back
+# by one hour. This is the latest government decision and it's final!
+# The decision was taken because of the increase in working hours in
+# government's departments from six to seven hours.
+#
+# From Paul Eggert (2005-11-22):
+# Starting 2003 transitions are from Steffen Thorsen's web site timeanddate.com.
+#
+# From Steffen Thorsen (2005-11-23):
+# For Jordan I have received multiple independent user reports every year
+# about DST end dates, as the end-rule is different every year.
+#
+# From Steffen Thorsen (2006-10-01), after a heads-up from Hilal Malawi:
+# http://www.petranews.gov.jo/nepras/2006/Sep/05/4000.htm
+# "Jordan will switch to winter time on Friday, October 27".
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Jordan 1973 only - Jun 6 0:00 1:00 S
+Rule Jordan 1973 1975 - Oct 1 0:00 0 -
+Rule Jordan 1974 1977 - May 1 0:00 1:00 S
+Rule Jordan 1976 only - Nov 1 0:00 0 -
+Rule Jordan 1977 only - Oct 1 0:00 0 -
+Rule Jordan 1978 only - Apr 30 0:00 1:00 S
+Rule Jordan 1978 only - Sep 30 0:00 0 -
+Rule Jordan 1985 only - Apr 1 0:00 1:00 S
+Rule Jordan 1985 only - Oct 1 0:00 0 -
+Rule Jordan 1986 1988 - Apr Fri>=1 0:00 1:00 S
+Rule Jordan 1986 1990 - Oct Fri>=1 0:00 0 -
+Rule Jordan 1989 only - May 8 0:00 1:00 S
+Rule Jordan 1990 only - Apr 27 0:00 1:00 S
+Rule Jordan 1991 only - Apr 17 0:00 1:00 S
+Rule Jordan 1991 only - Sep 27 0:00 0 -
+Rule Jordan 1992 only - Apr 10 0:00 1:00 S
+Rule Jordan 1992 1993 - Oct Fri>=1 0:00 0 -
+Rule Jordan 1993 1998 - Apr Fri>=1 0:00 1:00 S
+Rule Jordan 1994 only - Sep Fri>=15 0:00 0 -
+Rule Jordan 1995 1998 - Sep Fri>=15 0:00s 0 -
+Rule Jordan 1999 only - Jul 1 0:00s 1:00 S
+Rule Jordan 1999 2002 - Sep lastThu 0:00s 0 -
+Rule Jordan 2000 max - Mar lastThu 0:00s 1:00 S
+Rule Jordan 2003 only - Oct 24 0:00s 0 -
+Rule Jordan 2004 only - Oct 15 0:00s 0 -
+Rule Jordan 2005 only - Sep lastFri 0:00s 0 -
+Rule Jordan 2006 max - Oct lastFri 0:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Amman 2:23:44 - LMT 1931
+ 2:00 Jordan EE%sT
+
+
+# Kazakhstan
+
+# From Paul Eggert (1996-11-22):
+# Andrew Evtichov (1996-04-13) writes that Kazakhstan
+# stayed in sync with Moscow after 1990, and that Aqtobe (formerly Aktyubinsk)
+# and Aqtau (formerly Shevchenko) are the largest cities in their zones.
+# Guess that Aqtau and Aqtobe diverged in 1995, since that's the first time
+# IATA SSIM mentions a third time zone in Kazakhstan.
+
+# From Paul Eggert (2006-03-22):
+# German Iofis, ELSI, Almaty (2001-10-09) reports that Kazakhstan uses
+# RussiaAsia rules, instead of switching at 00:00 as the IATA has it.
+# Go with Shanks & Pottenger, who have them always using RussiaAsia rules.
+# Also go with the following claims of Shanks & Pottenger:
+#
+# - Kazakhstan did not observe DST in 1991.
+# - Qyzylorda switched from +5:00 to +6:00 on 1992-01-19 02:00.
+# - Oral switched from +5:00 to +4:00 in spring 1989.
+
+# <a href="http://www.kazsociety.org.uk/news/2005/03/30.htm">
+# From Kazakhstan Embassy's News Bulletin #11 (2005-03-21):
+# </a>
+# The Government of Kazakhstan passed a resolution March 15 abolishing
+# daylight saving time citing lack of economic benefits and health
+# complications coupled with a decrease in productivity.
+#
+# From Branislav Kojic (in Astana) via Gwillim Law (2005-06-28):
+# ... what happened was that the former Kazakhstan Eastern time zone
+# was "blended" with the Central zone. Therefore, Kazakhstan now has
+# two time zones, and difference between them is one hour. The zone
+# closer to UTC is the former Western zone (probably still called the
+# same), encompassing four provinces in the west: Aqtobe, Atyrau,
+# Mangghystau, and West Kazakhstan. The other zone encompasses
+# everything else.... I guess that would make Kazakhstan time zones
+# de jure UTC+5 and UTC+6 respectively.
+
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Almaty (formerly Alma-Ata), representing most locations in Kazakhstan
+Zone Asia/Almaty 5:07:48 - LMT 1924 May 2 # or Alma-Ata
+ 5:00 - ALMT 1930 Jun 21 # Alma-Ata Time
+ 6:00 RussiaAsia ALM%sT 1991
+ 6:00 - ALMT 1992
+ 6:00 RussiaAsia ALM%sT 2005 Mar 15
+ 6:00 - ALMT
+# Qyzylorda (aka Kyzylorda, Kizilorda, Kzyl-Orda, etc.)
+Zone Asia/Qyzylorda 4:21:52 - LMT 1924 May 2
+ 4:00 - KIZT 1930 Jun 21 # Kizilorda Time
+ 5:00 - KIZT 1981 Apr 1
+ 5:00 1:00 KIZST 1981 Oct 1
+ 6:00 - KIZT 1982 Apr 1
+ 5:00 RussiaAsia KIZ%sT 1991
+ 5:00 - KIZT 1991 Dec 16 # independence
+ 5:00 - QYZT 1992 Jan 19 2:00
+ 6:00 RussiaAsia QYZ%sT 2005 Mar 15
+ 6:00 - QYZT
+# Aqtobe (aka Aktobe, formerly Akt'ubinsk)
+Zone Asia/Aqtobe 3:48:40 - LMT 1924 May 2
+ 4:00 - AKTT 1930 Jun 21 # Aktyubinsk Time
+ 5:00 - AKTT 1981 Apr 1
+ 5:00 1:00 AKTST 1981 Oct 1
+ 6:00 - AKTT 1982 Apr 1
+ 5:00 RussiaAsia AKT%sT 1991
+ 5:00 - AKTT 1991 Dec 16 # independence
+ 5:00 RussiaAsia AQT%sT 2005 Mar 15 # Aqtobe Time
+ 5:00 - AQTT
+# Mangghystau
+# Aqtau was not founded until 1963, but it represents an inhabited region,
+# so include time stamps before 1963.
+Zone Asia/Aqtau 3:21:04 - LMT 1924 May 2
+ 4:00 - FORT 1930 Jun 21 # Fort Shevchenko T
+ 5:00 - FORT 1963
+ 5:00 - SHET 1981 Oct 1 # Shevchenko Time
+ 6:00 - SHET 1982 Apr 1
+ 5:00 RussiaAsia SHE%sT 1991
+ 5:00 - SHET 1991 Dec 16 # independence
+ 5:00 RussiaAsia AQT%sT 1995 Mar lastSun 2:00 # Aqtau Time
+ 4:00 RussiaAsia AQT%sT 2005 Mar 15
+ 5:00 - AQTT
+# West Kazakhstan
+Zone Asia/Oral 3:25:24 - LMT 1924 May 2 # or Ural'sk
+ 4:00 - URAT 1930 Jun 21 # Ural'sk time
+ 5:00 - URAT 1981 Apr 1
+ 5:00 1:00 URAST 1981 Oct 1
+ 6:00 - URAT 1982 Apr 1
+ 5:00 RussiaAsia URA%sT 1989 Mar 26 2:00
+ 4:00 RussiaAsia URA%sT 1991
+ 4:00 - URAT 1991 Dec 16 # independence
+ 4:00 RussiaAsia ORA%sT 2005 Mar 15 # Oral Time
+ 5:00 - ORAT
+
+# Kyrgyzstan (Kirgizstan)
+# Transitions through 1991 are from Shanks & Pottenger.
+
+# From Paul Eggert (2005-08-15):
+# According to an article dated today in the Kyrgyzstan Development Gateway
+# <http://eng.gateway.kg/cgi-bin/page.pl?id=1&story_name=doc9979.shtml>
+# Kyrgyzstan is canceling the daylight saving time system. I take the article
+# to mean that they will leave their clocks at 6 hours ahead of UTC.
+# From Malik Abdugaliev (2005-09-21):
+# Our government cancels daylight saving time 6th of August 2005.
+# From 2005-08-12 our GMT-offset is +6, w/o any daylight saving.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Kyrgyz 1992 1996 - Apr Sun>=7 0:00s 1:00 S
+Rule Kyrgyz 1992 1996 - Sep lastSun 0:00 0 -
+Rule Kyrgyz 1997 2005 - Mar lastSun 2:30 1:00 S
+Rule Kyrgyz 1997 2004 - Oct lastSun 2:30 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Bishkek 4:58:24 - LMT 1924 May 2
+ 5:00 - FRUT 1930 Jun 21 # Frunze Time
+ 6:00 RussiaAsia FRU%sT 1991 Mar 31 2:00s
+ 5:00 1:00 FRUST 1991 Aug 31 2:00 # independence
+ 5:00 Kyrgyz KG%sT 2005 Aug 12 # Kyrgyzstan Time
+ 6:00 - KGT
+
+###############################################################################
+
+# Korea (North and South)
+
+# From Annie I. Bang (2006-07-10) in
+# <http://www.koreaherald.co.kr/SITE/data/html_dir/2006/07/10/200607100012.asp>:
+# The Ministry of Commerce, Industry and Energy has already
+# commissioned a research project [to reintroduce DST] and has said
+# the system may begin as early as 2008.... Korea ran a daylight
+# saving program from 1949-61 but stopped it during the 1950-53 Korean War.
+
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule ROK 1960 only - May 15 0:00 1:00 D
+Rule ROK 1960 only - Sep 13 0:00 0 S
+Rule ROK 1987 1988 - May Sun>=8 0:00 1:00 D
+Rule ROK 1987 1988 - Oct Sun>=8 0:00 0 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Seoul 8:27:52 - LMT 1890
+ 8:30 - KST 1904 Dec
+ 9:00 - KST 1928
+ 8:30 - KST 1932
+ 9:00 - KST 1954 Mar 21
+ 8:00 ROK K%sT 1961 Aug 10
+ 8:30 - KST 1968 Oct
+ 9:00 ROK K%sT
+Zone Asia/Pyongyang 8:23:00 - LMT 1890
+ 8:30 - KST 1904 Dec
+ 9:00 - KST 1928
+ 8:30 - KST 1932
+ 9:00 - KST 1954 Mar 21
+ 8:00 - KST 1961 Aug 10
+ 9:00 - KST
+
+###############################################################################
+
+# Kuwait
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# From the Arab Times (2007-03-14):
+# The Civil Service Commission (CSC) has approved a proposal forwarded
+# by MP Ahmad Baqer on implementing the daylight saving time (DST) in
+# Kuwait starting from April until the end of Sept this year, reports Al-Anba.
+# <http://www.arabtimesonline.com/arabtimes/kuwait/Viewdet.asp?ID=9950>.
+# From Paul Eggert (2007-03-29):
+# We don't know the details, or whether the approval means it'll happen,
+# so for now we assume no DST.
+Zone Asia/Kuwait 3:11:56 - LMT 1950
+ 3:00 - AST
+
+# Laos
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Vientiane 6:50:24 - LMT 1906 Jun 9 # or Viangchan
+ 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
+ 7:00 - ICT 1912 May
+ 8:00 - ICT 1931 May
+ 7:00 - ICT
+
+# Lebanon
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Lebanon 1920 only - Mar 28 0:00 1:00 S
+Rule Lebanon 1920 only - Oct 25 0:00 0 -
+Rule Lebanon 1921 only - Apr 3 0:00 1:00 S
+Rule Lebanon 1921 only - Oct 3 0:00 0 -
+Rule Lebanon 1922 only - Mar 26 0:00 1:00 S
+Rule Lebanon 1922 only - Oct 8 0:00 0 -
+Rule Lebanon 1923 only - Apr 22 0:00 1:00 S
+Rule Lebanon 1923 only - Sep 16 0:00 0 -
+Rule Lebanon 1957 1961 - May 1 0:00 1:00 S
+Rule Lebanon 1957 1961 - Oct 1 0:00 0 -
+Rule Lebanon 1972 only - Jun 22 0:00 1:00 S
+Rule Lebanon 1972 1977 - Oct 1 0:00 0 -
+Rule Lebanon 1973 1977 - May 1 0:00 1:00 S
+Rule Lebanon 1978 only - Apr 30 0:00 1:00 S
+Rule Lebanon 1978 only - Sep 30 0:00 0 -
+Rule Lebanon 1984 1987 - May 1 0:00 1:00 S
+Rule Lebanon 1984 1991 - Oct 16 0:00 0 -
+Rule Lebanon 1988 only - Jun 1 0:00 1:00 S
+Rule Lebanon 1989 only - May 10 0:00 1:00 S
+Rule Lebanon 1990 1992 - May 1 0:00 1:00 S
+Rule Lebanon 1992 only - Oct 4 0:00 0 -
+Rule Lebanon 1993 max - Mar lastSun 0:00 1:00 S
+Rule Lebanon 1993 1998 - Sep lastSun 0:00 0 -
+Rule Lebanon 1999 max - Oct lastSun 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Beirut 2:22:00 - LMT 1880
+ 2:00 Lebanon EE%sT
+
+# Malaysia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NBorneo 1935 1941 - Sep 14 0:00 0:20 TS # one-Third Summer
+Rule NBorneo 1935 1941 - Dec 14 0:00 0 -
+#
+# peninsular Malaysia
+# The data here are taken from Mok Ly Yng (2003-10-30)
+# <http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html>.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Kuala_Lumpur 6:46:46 - LMT 1901 Jan 1
+ 6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
+ 7:00 - MALT 1933 Jan 1 # Malaya Time
+ 7:00 0:20 MALST 1936 Jan 1
+ 7:20 - MALT 1941 Sep 1
+ 7:30 - MALT 1942 Feb 16
+ 9:00 - JST 1945 Sep 12
+ 7:30 - MALT 1982 Jan 1
+ 8:00 - MYT # Malaysia Time
+# Sabah & Sarawak
+# From Paul Eggert (2006-03-22):
+# The data here are mostly from Shanks & Pottenger, but the 1942, 1945 and 1982
+# transition dates are from Mok Ly Yng.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Kuching 7:21:20 - LMT 1926 Mar
+ 7:30 - BORT 1933 # Borneo Time
+ 8:00 NBorneo BOR%sT 1942 Feb 16
+ 9:00 - JST 1945 Sep 12
+ 8:00 - BORT 1982 Jan 1
+ 8:00 - MYT
+
+# Maldives
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Maldives 4:54:00 - LMT 1880 # Male
+ 4:54:00 - MMT 1960 # Male Mean Time
+ 5:00 - MVT # Maldives Time
+
+# Mongolia
+
+# Shanks & Pottenger say that Mongolia has three time zones, but
+# usno1995 and the CIA map Standard Time Zones of the World (2005-03)
+# both say that it has just one.
+
+# From Oscar van Vlijmen (1999-12-11):
+# <a href="http://www.mongoliatourism.gov.mn/general.htm">
+# General Information Mongolia
+# </a> (1999-09)
+# "Time: Mongolia has two time zones. Three westernmost provinces of
+# Bayan-Ulgii, Uvs, and Hovd are one hour earlier than the capital city, and
+# the rest of the country follows the Ulaanbaatar time, which is UTC/GMT plus
+# eight hours."
+
+# From Rives McDow (1999-12-13):
+# Mongolia discontinued the use of daylight savings time in 1999; 1998
+# being the last year it was implemented. The dates of implementation I am
+# unsure of, but most probably it was similar to Russia, except for the time
+# of implementation may have been different....
+# Some maps in the past have indicated that there was an additional time
+# zone in the eastern part of Mongolia, including the provinces of Dornod,
+# Suhbaatar, and possibly Khentij.
+
+# From Paul Eggert (1999-12-15):
+# Naming and spelling is tricky in Mongolia.
+# We'll use Hovd (also spelled Chovd and Khovd) to represent the west zone;
+# the capital of the Hovd province is sometimes called Hovd, sometimes Dund-Us,
+# and sometimes Jirgalanta (with variant spellings), but the name Hovd
+# is good enough for our purposes.
+
+# From Rives McDow (2001-05-13):
+# In addition to Mongolia starting daylight savings as reported earlier
+# (adopted DST on 2001-04-27 02:00 local time, ending 2001-09-28),
+# there are three time zones.
+#
+# Provinces [at 7:00]: Bayan-ulgii, Uvs, Khovd, Zavkhan, Govi-Altai
+# Provinces [at 8:00]: Khovsgol, Bulgan, Arkhangai, Khentii, Tov,
+# Bayankhongor, Ovorkhangai, Dundgovi, Dornogovi, Omnogovi
+# Provinces [at 9:00]: Dornod, Sukhbaatar
+#
+# [The province of Selenge is omitted from the above lists.]
+
+# From Ganbold Ts., Ulaanbaatar (2004-04-17):
+# Daylight saving occurs at 02:00 local time last Saturday of March.
+# It will change back to normal at 02:00 local time last Saturday of
+# September.... As I remember this rule was changed in 2001.
+#
+# From Paul Eggert (2004-04-17):
+# For now, assume Rives McDow's informant got confused about Friday vs
+# Saturday, and that his 2001 dates should have 1 added to them.
+
+# From Paul Eggert (2005-07-26):
+# We have wildly conflicting information about Mongolia's time zones.
+# Bill Bonnet (2005-05-19) reports that the US Embassy in Ulaanbaatar says
+# there is only one time zone and that DST is observed, citing Microsoft
+# Windows XP as the source. Risto Nykanen (2005-05-16) reports that
+# travelmongolia.org says there are two time zones (UTC+7, UTC+8) with no DST.
+# Oscar van Vlijmen (2005-05-20) reports that the Mongolian Embassy in
+# Washington, DC says there are two time zones, with DST observed.
+# He also found
+# <http://ubpost.mongolnews.mn/index.php?subaction=showcomments&id=1111634894&archive=&start_from=&ucat=1&>
+# which also says that there is DST, and which has a comment by "Toddius"
+# (2005-03-31 06:05 +0700) saying "Mongolia actually has 3.5 time zones.
+# The West (OLGII) is +7 GMT, most of the country is ULAT is +8 GMT
+# and some Eastern provinces are +9 GMT but Sukhbaatar Aimag is SUHK +8.5 GMT.
+# The SUKH timezone is new this year, it is one of the few things the
+# parliament passed during the tumultuous winter session."
+# For now, let's ignore this information, until we have more confirmation.
+
+# From Ganbold Ts. (2007-02-26):
+# Parliament of Mongolia has just changed the daylight-saving rule in February.
+# They decided not to adopt daylight-saving time....
+# http://www.mongolnews.mn/index.php?module=unuudur&sec=view&id=15742
+
+# From Deborah Goldsmith (2008-03-30):
+# We received a bug report claiming that the tz database UTC offset for
+# Asia/Choibalsan (GMT+09:00) is incorrect, and that it should be GMT
+# +08:00 instead. Different sources appear to disagree with the tz
+# database on this, e.g.:
+#
+# <a href="http://www.timeanddate.com/worldclock/city.html?n=1026">
+# http://www.timeanddate.com/worldclock/city.html?n=1026
+# </a>
+# <a href="http://www.worldtimeserver.com/current_time_in_MN.aspx">
+# http://www.worldtimeserver.com/current_time_in_MN.aspx
+# </a>
+#
+# both say GMT+08:00.
+
+# From Steffen Thorsen (2008-03-31):
+# eznis airways, which operates several domestic flights, has a flight
+# schedule here:
+# <a href="http://www.eznis.com/Container.jsp?id=112">
+# http://www.eznis.com/Container.jsp?id=112
+# </a>
+# (click the English flag for English)
+#
+# There it appears that flights between Choibalsan and Ulaanbatar arrive
+# about 1:35 - 1:50 hours later in local clock time, no matter the
+# direction, while Ulaanbaatar-Khvod takes 2 hours in the Eastern
+# direction and 3:35 back, which indicates that Ulaanbatar and Khvod are
+# in different time zones (like we know about), while Choibalsan and
+# Ulaanbatar are in the same time zone (correction needed).
+
+# From Arthur David Olson (2008-05-19):
+# Assume that Choibalsan is indeed offset by 8:00.
+# XXX--in the absence of better information, assume that transition
+# was at the start of 2008-03-31 (the day of Steffen Thorsen's report);
+# this is almost surely wrong.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Mongol 1983 1984 - Apr 1 0:00 1:00 S
+Rule Mongol 1983 only - Oct 1 0:00 0 -
+# Shanks & Pottenger and IATA SSIM say 1990s switches occurred at 00:00,
+# but McDow says the 2001 switches occurred at 02:00. Also, IATA SSIM
+# (1996-09) says 1996-10-25. Go with Shanks & Pottenger through 1998.
+#
+# Shanks & Pottenger say that the Sept. 1984 through Sept. 1990 switches
+# in Choibalsan (more precisely, in Dornod and Sukhbaatar) took place
+# at 02:00 standard time, not at 00:00 local time as in the rest of
+# the country. That would be odd, and possibly is a result of their
+# correction of 02:00 (in the previous edition) not being done correctly
+# in the latest edition; so ignore it for now.
+
+Rule Mongol 1985 1998 - Mar lastSun 0:00 1:00 S
+Rule Mongol 1984 1998 - Sep lastSun 0:00 0 -
+# IATA SSIM (1999-09) says Mongolia no longer observes DST.
+Rule Mongol 2001 only - Apr lastSat 2:00 1:00 S
+Rule Mongol 2001 2006 - Sep lastSat 2:00 0 -
+Rule Mongol 2002 2006 - Mar lastSat 2:00 1:00 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Hovd, a.k.a. Chovd, Dund-Us, Dzhargalant, Khovd, Jirgalanta
+Zone Asia/Hovd 6:06:36 - LMT 1905 Aug
+ 6:00 - HOVT 1978 # Hovd Time
+ 7:00 Mongol HOV%sT
+# Ulaanbaatar, a.k.a. Ulan Bataar, Ulan Bator, Urga
+Zone Asia/Ulaanbaatar 7:07:32 - LMT 1905 Aug
+ 7:00 - ULAT 1978 # Ulaanbaatar Time
+ 8:00 Mongol ULA%sT
+# Choibalsan, a.k.a. Bajan Tuemen, Bajan Tumen, Chojbalsan,
+# Choybalsan, Sanbejse, Tchoibalsan
+Zone Asia/Choibalsan 7:38:00 - LMT 1905 Aug
+ 7:00 - ULAT 1978
+ 8:00 - ULAT 1983 Apr
+ 9:00 Mongol CHO%sT 2008 Mar 31 # Choibalsan Time
+ 8:00 Mongol CHO%sT
+
+# Nepal
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Katmandu 5:41:16 - LMT 1920
+ 5:30 - IST 1986
+ 5:45 - NPT # Nepal Time
+
+# Oman
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Muscat 3:54:20 - LMT 1920
+ 4:00 - GST
+
+# Pakistan
+
+# From Rives McDow (2002-03-13):
+# I have been advised that Pakistan has decided to adopt dst on a
+# TRIAL basis for one year, starting 00:01 local time on April 7, 2002
+# and ending at 00:01 local time October 6, 2002. This is what I was
+# told, but I believe that the actual time of change may be 00:00; the
+# 00:01 was to make it clear which day it was on.
+
+# From Paul Eggert (2002-03-15):
+# Jesper Norgaard found this URL:
+# http://www.pak.gov.pk/public/news/app/app06_dec.htm
+# (dated 2001-12-06) which says that the Cabinet adopted a scheme "to
+# advance the clocks by one hour on the night between the first
+# Saturday and Sunday of April and revert to the original position on
+# 15th October each year". This agrees with McDow's 04-07 at 00:00,
+# but disagrees about the October transition, and makes it sound like
+# it's not on a trial basis. Also, the "between the first Saturday
+# and Sunday of April" phrase, if taken literally, means that the
+# transition takes place at 00:00 on the first Sunday on or after 04-02.
+
+# From Paul Eggert (2003-02-09):
+# DAWN <http://www.dawn.com/2002/10/06/top13.htm> reported on 2002-10-05
+# that 2002 DST ended that day at midnight. Go with McDow for now.
+
+# From Steffen Thorsen (2003-03-14):
+# According to http://www.dawn.com/2003/03/07/top15.htm
+# there will be no DST in Pakistan this year:
+#
+# ISLAMABAD, March 6: Information and Media Development Minister Sheikh
+# Rashid Ahmed on Thursday said the cabinet had reversed a previous
+# decision to advance clocks by one hour in summer and put them back by
+# one hour in winter with the aim of saving light hours and energy.
+#
+# The minister told a news conference that the experiment had rather
+# shown 8 per cent higher consumption of electricity.
+
+# From Alex Krivenyshev (2008-05-15):
+#
+# Here is an article that Pakistan plan to introduce Daylight Saving Time
+# on June 1, 2008 for 3 months.
+#
+# "... The federal cabinet on Wednesday announced a new conservation plan to help
+# reduce load shedding by approving the closure of commercial centres at 9pm and
+# moving clocks forward by one hour for the next three months.
+# ...."
+#
+# <a href="http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html">
+# http://www.worldtimezone.net/dst_news/dst_news_pakistan01.html
+# </a>
+# OR
+# <a href="http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4">
+# http://www.dailytimes.com.pk/default.asp?page=2008%5C05%5C15%5Cstory_15-5-2008_pg1_4
+# </a>
+
+# From Arthur David Olson (2008-05-19):
+# XXX--midnight transitions is a guess; 2008 only is a guess.
+
+# From Alexander Krivenyshev (2008-08-28):
+# Pakistan government has decided to keep the watches one-hour advanced
+# for another 2 months--plan to return to Standard Time on October 31
+# instead of August 31.
+#
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html">
+# http://www.worldtimezone.com/dst_news/dst_news_pakistan02.html
+# </a>
+# OR
+# <a href="http://dailymailnews.com/200808/28/news/dmbrn03.html">
+# http://dailymailnews.com/200808/28/news/dmbrn03.html
+# </a>
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
+Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
+Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
+Rule Pakistan 2008 only - Nov 1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Karachi 4:28:12 - LMT 1907
+ 5:30 - IST 1942 Sep
+ 5:30 1:00 IST 1945 Oct 15
+ 5:30 - IST 1951 Sep 30
+ 5:00 - KART 1971 Mar 26 # Karachi Time
+ 5:00 Pakistan PK%sT # Pakistan Time
+
+# Palestine
+
+# From Amos Shapir (1998-02-15):
+#
+# From 1917 until 1948-05-15, all of Palestine, including the parts now
+# known as the Gaza Strip and the West Bank, was under British rule.
+# Therefore the rules given for Israel for that period, apply there too...
+#
+# The Gaza Strip was under Egyptian rule between 1948-05-15 until 1967-06-05
+# (except a short occupation by Israel from 1956-11 till 1957-03, but no
+# time zone was affected then). It was never formally annexed to Egypt,
+# though.
+#
+# The rest of Palestine was under Jordanian rule at that time, formally
+# annexed in 1950 as the West Bank (and the word "Trans" was dropped from
+# the country's previous name of "the Hashemite Kingdom of the
+# Trans-Jordan"). So the rules for Jordan for that time apply. Major
+# towns in that area are Nablus (Shchem), El-Halil (Hebron), Ramallah, and
+# East Jerusalem.
+#
+# Both areas were occupied by Israel in June 1967, but not annexed (except
+# for East Jerusalem). They were on Israel time since then; there might
+# have been a Military Governor's order about time zones, but I'm not aware
+# of any (such orders may have been issued semi-annually whenever summer
+# time was in effect, but maybe the legal aspect of time was just neglected).
+#
+# The Palestinian Authority was established in 1993, and got hold of most
+# towns in the West Bank and Gaza by 1995. I know that in order to
+# demonstrate...independence, they have been switching to
+# summer time and back on a different schedule than Israel's, but I don't
+# know when this was started, or what algorithm is used (most likely the
+# Jordanian one).
+#
+# To summarize, the table should probably look something like that:
+#
+# Area \ when | 1918-1947 | 1948-1967 | 1967-1995 | 1996-
+# ------------+-----------+-----------+-----------+-----------
+# Israel | Zion | Zion | Zion | Zion
+# West bank | Zion | Jordan | Zion | Jordan
+# Gaza | Zion | Egypt | Zion | Jordan
+#
+# I guess more info may be available from the PA's web page (if/when they
+# have one).
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that Gaza did not observe DST until 1957, but go
+# with Shapir and assume that it observed DST from 1940 through 1947,
+# and that it used Jordanian rules starting in 1996.
+# We don't yet need a separate entry for the West Bank, since
+# the only differences between it and Gaza that we know about
+# occurred before our cutoff date of 1970.
+# However, as we get more information, we may need to add entries
+# for parts of the West Bank as they transitioned from Israel's rules
+# to Palestine's rules. If you have more info about this, please
+# send it to tz@elsie.nci.nih.gov for incorporation into future editions.
+
+# From IINS News Service - Israel - 1998-03-23 10:38:07 Israel time,
+# forwarded by Ephraim Silverberg:
+#
+# Despite the fact that Israel changed over to daylight savings time
+# last week, the PLO Authority (PA) has decided not to turn its clocks
+# one-hour forward at this time. As a sign of independence from Israeli rule,
+# the PA has decided to implement DST in April.
+
+# From Paul Eggert (1999-09-20):
+# Daoud Kuttab writes in
+# <a href="http://www.jpost.com/com/Archive/22.Apr.1999/Opinion/Article-2.html">
+# Holiday havoc
+# </a> (Jerusalem Post, 1999-04-22) that
+# the Palestinian National Authority changed to DST on 1999-04-15.
+# I vaguely recall that they switch back in October (sorry, forgot the source).
+# For now, let's assume that the spring switch was at 24:00,
+# and that they switch at 0:00 on the 3rd Fridays of April and October.
+
+# From Paul Eggert (2005-11-22):
+# Starting 2004 transitions are from Steffen Thorsen's web site timeanddate.com.
+
+# From Steffen Thorsen (2005-11-23):
+# A user from Gaza reported that Gaza made the change early because of
+# the Ramadan. Next year Ramadan will be even earlier, so I think
+# there is a good chance next year's end date will be around two weeks
+# earlier--the same goes for Jordan.
+
+# From Steffen Thorsen (2006-08-17):
+# I was informed by a user in Bethlehem that in Bethlehem it started the
+# same day as Israel, and after checking with other users in the area, I
+# was informed that they started DST one day after Israel. I was not
+# able to find any authoritative sources at the time, nor details if
+# Gaza changed as well, but presumed Gaza to follow the same rules as
+# the West Bank.
+
+# From Steffen Thorsen (2006-09-26):
+# according to the Palestine News Network (2006-09-19):
+# http://english.pnn.ps/index.php?option=com_content&task=view&id=596&Itemid=5
+# > The Council of Ministers announced that this year its winter schedule
+# > will begin early, as of midnight Thursday. It is also time to turn
+# > back the clocks for winter. Friday will begin an hour late this week.
+# I guess it is likely that next year's date will be moved as well,
+# because of the Ramadan.
+
+# From Jesper Norgaard Welen (2007-09-18):
+# According to Steffen Thorsen's web site the Gaza Strip and the rest of the
+# Palestinian territories left DST early on 13.th. of September at 2:00.
+
+# From Paul Eggert (2007-09-20):
+# My understanding is that Gaza and the West Bank disagree even over when
+# the weekend is (Thursday+Friday versus Friday+Saturday), so I'd be a bit
+# surprised if they agreed about DST. But for now, assume they agree.
+# For lack of better information, predict that future changes will be
+# the 2nd Thursday of September at 02:00.
+
+# From Alexander Krivenyshev (2008-08-28):
+# Here is an article, that Mideast running on different clocks at Ramadan.
+#
+# Gaza Strip (as Egypt) ended DST at midnight Thursday (Aug 28, 2008), while
+# the West Bank will end Daylight Saving Time at midnight Sunday (Aug 31, 2008).
+#
+# <a href="http://www.guardian.co.uk/world/feedarticle/7759001">
+# http://www.guardian.co.uk/world/feedarticle/7759001
+# </a>
+# <a href="http://www.abcnews.go.com/International/wireStory?id=5676087">
+# http://www.abcnews.go.com/International/wireStory?id=5676087
+# </a>
+# or
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html">
+# http://www.worldtimezone.com/dst_news/dst_news_gazastrip01.html
+# </a>
+
+# The rules for Egypt are stolen from the `africa' file.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule EgyptAsia 1957 only - May 10 0:00 1:00 S
+Rule EgyptAsia 1957 1958 - Oct 1 0:00 0 -
+Rule EgyptAsia 1958 only - May 1 0:00 1:00 S
+Rule EgyptAsia 1959 1967 - May 1 1:00 1:00 S
+Rule EgyptAsia 1959 1965 - Sep 30 3:00 0 -
+Rule EgyptAsia 1966 only - Oct 1 3:00 0 -
+
+Rule Palestine 1999 2005 - Apr Fri>=15 0:00 1:00 S
+Rule Palestine 1999 2003 - Oct Fri>=15 0:00 0 -
+Rule Palestine 2004 only - Oct 1 1:00 0 -
+Rule Palestine 2005 only - Oct 4 2:00 0 -
+Rule Palestine 2006 max - Apr 1 0:00 1:00 S
+Rule Palestine 2006 only - Sep 22 0:00 0 -
+Rule Palestine 2007 only - Sep Thu>=8 2:00 0 -
+Rule Palestine 2008 max - Aug lastThu 2:00 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Gaza 2:17:52 - LMT 1900 Oct
+ 2:00 Zion EET 1948 May 15
+ 2:00 EgyptAsia EE%sT 1967 Jun 5
+ 2:00 Zion I%sT 1996
+ 2:00 Jordan EE%sT 1999
+ 2:00 Palestine EE%sT
+
+# Paracel Is
+# no information
+
+# Philippines
+# On 1844-08-16, Narciso Claveria, governor-general of the
+# Philippines, issued a proclamation announcing that 1844-12-30 was to
+# be immediately followed by 1845-01-01. Robert H. van Gent has a
+# transcript of the decree in <http://www.phys.uu.nl/~vgent/idl/idl.htm>.
+# The rest of the data are from Shanks & Pottenger.
+
+# From Paul Eggert (2006-04-25):
+# Tomorrow's Manila Standard reports that the Philippines Department of
+# Trade and Industry is considering adopting DST this June when the
+# rainy season begins. See
+# <http://www.manilastandardtoday.com/?page=politics02_april26_2006>.
+# For now, we'll ignore this, since it's not definite and we lack details.
+#
+# From Jesper Norgaard Welen (2006-04-26):
+# ... claims that Philippines had DST last time in 1990:
+# http://story.philippinetimes.com/p.x/ct/9/id/145be20cc6b121c0/cid/3e5bbccc730d258c/
+# [a story dated 2006-04-25 by Cris Larano of Dow Jones Newswires,
+# but no details]
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Phil 1936 only - Nov 1 0:00 1:00 S
+Rule Phil 1937 only - Feb 1 0:00 0 -
+Rule Phil 1954 only - Apr 12 0:00 1:00 S
+Rule Phil 1954 only - Jul 1 0:00 0 -
+Rule Phil 1978 only - Mar 22 0:00 1:00 S
+Rule Phil 1978 only - Sep 21 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Manila -15:56:00 - LMT 1844 Dec 31
+ 8:04:00 - LMT 1899 May 11
+ 8:00 Phil PH%sT 1942 May
+ 9:00 - JST 1944 Nov
+ 8:00 Phil PH%sT
+
+# Qatar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Qatar 3:26:08 - LMT 1920 # Al Dawhah / Doha
+ 4:00 - GST 1972 Jun
+ 3:00 - AST
+
+# Saudi Arabia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Riyadh 3:06:52 - LMT 1950
+ 3:00 - AST
+
+# Singapore
+# The data here are taken from Mok Ly Yng (2003-10-30)
+# <http://www.math.nus.edu.sg/aslaksen/teaching/timezone.html>.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Singapore 6:55:25 - LMT 1901 Jan 1
+ 6:55:25 - SMT 1905 Jun 1 # Singapore M.T.
+ 7:00 - MALT 1933 Jan 1 # Malaya Time
+ 7:00 0:20 MALST 1936 Jan 1
+ 7:20 - MALT 1941 Sep 1
+ 7:30 - MALT 1942 Feb 16
+ 9:00 - JST 1945 Sep 12
+ 7:30 - MALT 1965 Aug 9 # independence
+ 7:30 - SGT 1982 Jan 1 # Singapore Time
+ 8:00 - SGT
+
+# Spratly Is
+# no information
+
+# Sri Lanka
+# From Paul Eggert (1996-09-03):
+# "Sri Lanka advances clock by an hour to avoid blackout"
+# (www.virtual-pc.com/lankaweb/news/items/240596-2.html, 1996-05-24,
+# no longer available as of 1999-08-17)
+# reported ``the country's standard time will be put forward by one hour at
+# midnight Friday (1830 GMT) `in the light of the present power crisis'.''
+#
+# From Dharmasiri Senanayake, Sri Lanka Media Minister (1996-10-24), as quoted
+# by Shamindra in
+# <a href="news:54rka5$m5h@mtinsc01-mgt.ops.worldnet.att.net">
+# Daily News - Hot News Section (1996-10-26)
+# </a>:
+# With effect from 12.30 a.m. on 26th October 1996
+# Sri Lanka will be six (06) hours ahead of GMT.
+
+# From Jesper Norgaard Welen (2006-04-14), quoting Sri Lanka News Online
+# <http://news.sinhalaya.com/wmview.php?ArtID=11002> (2006-04-13):
+# 0030 hrs on April 15, 2006 (midnight of April 14, 2006 +30 minutes)
+# at present, become 2400 hours of April 14, 2006 (midnight of April 14, 2006).
+
+# From Peter Apps and Ranga Sirila of Reuters (2006-04-12) in:
+# <http://today.reuters.co.uk/news/newsArticle.aspx?type=scienceNews&storyID=2006-04-12T172228Z_01_COL295762_RTRIDST_0_SCIENCE-SRILANKA-TIME-DC.XML>
+# [The Tamil Tigers] never accepted the original 1996 time change and simply
+# kept their clocks set five and a half hours ahead of Greenwich Mean
+# Time (GMT), in line with neighbor India.
+# From Paul Eggert (2006-04-18):
+# People who live in regions under Tamil control can use [TZ='Asia/Kolkata'],
+# as that zone has agreed with the Tamil areas since our cutoff date of 1970.
+
+# From K Sethu (2006-04-25):
+# I think the abbreviation LKT originated from the world of computers at
+# the time of or subsequent to the time zone changes by SL Government
+# twice in 1996 and probably SL Government or its standardization
+# agencies never declared an abbreviation as a national standard.
+#
+# I recollect before the recent change the government annoucemments
+# mentioning it as simply changing Sri Lanka Standard Time or Sri Lanka
+# Time and no mention was made about the abbreviation.
+#
+# If we look at Sri Lanka Department of Government's "Official News
+# Website of Sri Lanka" ... http://www.news.lk/ we can see that they
+# use SLT as abbreviation in time stamp at the beginning of each news
+# item....
+#
+# Within Sri Lanka I think LKT is well known among computer users and
+# adminsitrators. In my opinion SLT may not be a good choice because the
+# nation's largest telcom / internet operator Sri Lanka Telcom is well
+# known by that abbreviation - simply as SLT (there IP domains are
+# slt.lk and sltnet.lk).
+#
+# But if indeed our government has adopted SLT as standard abbreviation
+# (that we have not known so far) then it is better that it be used for
+# all computers.
+
+# From Paul Eggert (2006-04-25):
+# One possibility is that we wait for a bit for the dust to settle down
+# and then see what people actually say in practice.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Colombo 5:19:24 - LMT 1880
+ 5:19:32 - MMT 1906 # Moratuwa Mean Time
+ 5:30 - IST 1942 Jan 5
+ 5:30 0:30 IHST 1942 Sep
+ 5:30 1:00 IST 1945 Oct 16 2:00
+ 5:30 - IST 1996 May 25 0:00
+ 6:30 - LKT 1996 Oct 26 0:30
+ 6:00 - LKT 2006 Apr 15 0:30
+ 5:30 - IST
+
+# Syria
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Syria 1920 1923 - Apr Sun>=15 2:00 1:00 S
+Rule Syria 1920 1923 - Oct Sun>=1 2:00 0 -
+Rule Syria 1962 only - Apr 29 2:00 1:00 S
+Rule Syria 1962 only - Oct 1 2:00 0 -
+Rule Syria 1963 1965 - May 1 2:00 1:00 S
+Rule Syria 1963 only - Sep 30 2:00 0 -
+Rule Syria 1964 only - Oct 1 2:00 0 -
+Rule Syria 1965 only - Sep 30 2:00 0 -
+Rule Syria 1966 only - Apr 24 2:00 1:00 S
+Rule Syria 1966 1976 - Oct 1 2:00 0 -
+Rule Syria 1967 1978 - May 1 2:00 1:00 S
+Rule Syria 1977 1978 - Sep 1 2:00 0 -
+Rule Syria 1983 1984 - Apr 9 2:00 1:00 S
+Rule Syria 1983 1984 - Oct 1 2:00 0 -
+Rule Syria 1986 only - Feb 16 2:00 1:00 S
+Rule Syria 1986 only - Oct 9 2:00 0 -
+Rule Syria 1987 only - Mar 1 2:00 1:00 S
+Rule Syria 1987 1988 - Oct 31 2:00 0 -
+Rule Syria 1988 only - Mar 15 2:00 1:00 S
+Rule Syria 1989 only - Mar 31 2:00 1:00 S
+Rule Syria 1989 only - Oct 1 2:00 0 -
+Rule Syria 1990 only - Apr 1 2:00 1:00 S
+Rule Syria 1990 only - Sep 30 2:00 0 -
+Rule Syria 1991 only - Apr 1 0:00 1:00 S
+Rule Syria 1991 1992 - Oct 1 0:00 0 -
+Rule Syria 1992 only - Apr 8 0:00 1:00 S
+Rule Syria 1993 only - Mar 26 0:00 1:00 S
+Rule Syria 1993 only - Sep 25 0:00 0 -
+# IATA SSIM (1998-02) says 1998-04-02;
+# (1998-09) says 1999-03-29 and 1999-09-29; (1999-02) says 1999-04-02,
+# 2000-04-02, and 2001-04-02; (1999-09) says 2000-03-31 and 2001-03-31;
+# (2006) says 2006-03-31 and 2006-09-22;
+# for now ignore all these claims and go with Shanks & Pottenger,
+# except for the 2006-09-22 claim (which seems right for Ramadan).
+Rule Syria 1994 1996 - Apr 1 0:00 1:00 S
+Rule Syria 1994 2005 - Oct 1 0:00 0 -
+Rule Syria 1997 1998 - Mar lastMon 0:00 1:00 S
+Rule Syria 1999 2006 - Apr 1 0:00 1:00 S
+# From Stephen Colebourne (2006-09-18):
+# According to IATA data, Syria will change DST on 21st September [21:00 UTC]
+# this year [only].... This is probably related to Ramadan, like Egypt.
+Rule Syria 2006 only - Sep 22 0:00 0 -
+# From Paul Eggert (2007-03-29):
+# Today the AP reported "Syria will switch to summertime at midnight Thursday."
+# http://www.iht.com/articles/ap/2007/03/29/africa/ME-GEN-Syria-Time-Change.php
+Rule Syria 2007 only - Mar lastFri 0:00 1:00 S
+# From Jesper Norgard (2007-10-27):
+# The sister center ICARDA of my work CIMMYT is confirming that Syria DST will
+# not take place 1.st November at 0:00 o'clock but 1.st November at 24:00 or
+# rather Midnight between Thursday and Friday. This does make more sence than
+# having it between Wednesday and Thursday (two workdays in Syria) since the
+# weekend in Syria is not Saturday and Sunday, but Friday and Saturday. So now
+# it is implemented at midnight of the last workday before weekend...
+#
+# From Steffen Thorsen (2007-10-27):
+# Jesper Norgaard Welen wrote:
+#
+# > "Winter local time in Syria will be observed at midnight of Thursday 1
+# > November 2007, and the clock will be put back 1 hour."
+#
+# I found confirmation on this in this gov.sy-article (Arabic):
+# http://wehda.alwehda.gov.sy/_print_veiw.asp?FileName=12521710520070926111247
+#
+# which using Google's translate tools says:
+# Council of Ministers also approved the commencement of work on
+# identifying the winter time as of Friday, 2/11/2007 where the 60th
+# minute delay at midnight Thursday 1/11/2007.
+Rule Syria 2007 only - Nov Fri>=1 0:00 0 -
+
+# From Stephen Colebourne (2008-03-17):
+# For everyone's info, I saw an IATA time zone change for [Syria] for
+# this month (March 2008) in the last day or so...This is the data IATA
+# are now using:
+# Country Time Standard --- DST Start --- --- DST End --- DST
+# Name Zone Variation Time Date Time Date
+# Variation
+# Syrian Arab
+# Republic SY +0200 2200 03APR08 2100 30SEP08 +0300
+# 2200 02APR09 2100 30SEP09 +0300
+# 2200 01APR10 2100 30SEP10 +0300
+
+# From Arthur David Olson (2008-03-17):
+# Here's a link to English-language coverage by the Syrian Arab News
+# Agency (SANA)...
+# <a href="http://www.sana.sy/eng/21/2008/03/11/165173.htm">
+# http://www.sana.sy/eng/21/2008/03/11/165173.htm
+# </a>...which reads (in part) "The Cabinet approved the suggestion of the
+# Ministry of Electricity to begin daylight savings time on Friday April
+# 4th, advancing clocks one hour ahead on midnight of Thursday April 3rd."
+# Since Syria is two hours east of UTC, the 2200 and 2100 transition times
+# shown above match up with midnight in Syria.
+
+# From Arthur David Olson (2008-03-18):
+# My buest guess at a Syrian rule is "the Friday nearest April 1";
+# coding that involves either using a "Mar Fri>=29" construct that old time zone
+# compilers can't handle or having multiple Rules (a la Israel).
+# For now, use "Apr Fri>=1", and go with IATA on a uniform Sep 30 end.
+
+# From Steffen Thorsen (2008-10-07):
+# Syria has now officially decided to end DST on 2008-11-01 this year,
+# according to the following article in the Syrian Arab News Agency (SANA).
+#
+# The article is in Arabic, and seems to tell that they will go back to
+# winter time on 2008-11-01 at 00:00 local daylight time (delaying/setting
+# clocks back 60 minutes).
+#
+# <a href="http://sana.sy/ara/2/2008/10/07/195459.htm">
+# http://sana.sy/ara/2/2008/10/07/195459.htm
+# </a>
+
+Rule Syria 2008 max - Apr Fri>=1 0:00 1:00 S
+Rule Syria 2008 max - Nov 1 0:00 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Damascus 2:25:12 - LMT 1920 # Dimashq
+ 2:00 Syria EE%sT
+
+# Tajikistan
+# From Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dushanbe 4:35:12 - LMT 1924 May 2
+ 5:00 - DUST 1930 Jun 21 # Dushanbe Time
+ 6:00 RussiaAsia DUS%sT 1991 Mar 31 2:00s
+ 5:00 1:00 DUSST 1991 Sep 9 2:00s
+ 5:00 - TJT # Tajikistan Time
+
+# Thailand
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Bangkok 6:42:04 - LMT 1880
+ 6:42:04 - BMT 1920 Apr # Bangkok Mean Time
+ 7:00 - ICT
+
+# Turkmenistan
+# From Shanks & Pottenger.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Ashgabat 3:53:32 - LMT 1924 May 2 # or Ashkhabad
+ 4:00 - ASHT 1930 Jun 21 # Ashkhabad Time
+ 5:00 RussiaAsia ASH%sT 1991 Mar 31 2:00
+ 4:00 RussiaAsia ASH%sT 1991 Oct 27 # independence
+ 4:00 RussiaAsia TM%sT 1992 Jan 19 2:00
+ 5:00 - TMT
+
+# United Arab Emirates
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Dubai 3:41:12 - LMT 1920
+ 4:00 - GST
+
+# Uzbekistan
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Samarkand 4:27:12 - LMT 1924 May 2
+ 4:00 - SAMT 1930 Jun 21 # Samarkand Time
+ 5:00 - SAMT 1981 Apr 1
+ 5:00 1:00 SAMST 1981 Oct 1
+ 6:00 - TAST 1982 Apr 1 # Tashkent Time
+ 5:00 RussiaAsia SAM%sT 1991 Sep 1 # independence
+ 5:00 RussiaAsia UZ%sT 1992
+ 5:00 - UZT
+Zone Asia/Tashkent 4:37:12 - LMT 1924 May 2
+ 5:00 - TAST 1930 Jun 21 # Tashkent Time
+ 6:00 RussiaAsia TAS%sT 1991 Mar 31 2:00
+ 5:00 RussiaAsia TAS%sT 1991 Sep 1 # independence
+ 5:00 RussiaAsia UZ%sT 1992
+ 5:00 - UZT
+
+# Vietnam
+
+# From Arthur David Olson (2008-03-18):
+# The English-language name of Vietnam's most populous city is "Ho Chi Min City";
+# we use Ho_Chi_Minh below to avoid a name of more than 14 characters.
+
+# From Shanks & Pottenger:
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Ho_Chi_Minh 7:06:40 - LMT 1906 Jun 9
+ 7:06:20 - SMT 1911 Mar 11 0:01 # Saigon MT?
+ 7:00 - ICT 1912 May
+ 8:00 - ICT 1931 May
+ 7:00 - ICT
+
+# Yemen
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Asia/Aden 3:00:48 - LMT 1950
+ 3:00 - AST
diff --git a/share/zoneinfo/australasia b/share/zoneinfo/australasia
new file mode 100644
index 0000000..41608cd
--- /dev/null
+++ b/share/zoneinfo/australasia
@@ -0,0 +1,1454 @@
+# @(#)australasia 8.9
+# <pre>
+
+# This file also includes Pacific islands.
+
+# Notes are at the end of this file
+
+###############################################################################
+
+# Australia
+
+# Please see the notes below for the controversy about "EST" versus "AEST" etc.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Aus 1917 only - Jan 1 0:01 1:00 -
+Rule Aus 1917 only - Mar 25 2:00 0 -
+Rule Aus 1942 only - Jan 1 2:00 1:00 -
+Rule Aus 1942 only - Mar 29 2:00 0 -
+Rule Aus 1942 only - Sep 27 2:00 1:00 -
+Rule Aus 1943 1944 - Mar lastSun 2:00 0 -
+Rule Aus 1943 only - Oct 3 2:00 1:00 -
+# Go with Whitman and the Australian National Standards Commission, which
+# says W Australia didn't use DST in 1943/1944. Ignore Whitman's claim that
+# 1944/1945 was just like 1943/1944.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Northern Territory
+Zone Australia/Darwin 8:43:20 - LMT 1895 Feb
+ 9:00 - CST 1899 May
+ 9:30 Aus CST
+# Western Australia
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AW 1974 only - Oct lastSun 2:00s 1:00 -
+Rule AW 1975 only - Mar Sun>=1 2:00s 0 -
+Rule AW 1983 only - Oct lastSun 2:00s 1:00 -
+Rule AW 1984 only - Mar Sun>=1 2:00s 0 -
+Rule AW 1991 only - Nov 17 2:00s 1:00 -
+Rule AW 1992 only - Mar Sun>=1 2:00s 0 -
+Rule AW 2006 only - Dec 3 2:00s 1:00 -
+Rule AW 2007 2009 - Mar lastSun 2:00s 0 -
+Rule AW 2007 2008 - Oct lastSun 2:00s 1:00 -
+Zone Australia/Perth 7:43:24 - LMT 1895 Dec
+ 8:00 Aus WST 1943 Jul
+ 8:00 AW WST
+Zone Australia/Eucla 8:35:28 - LMT 1895 Dec
+ 8:45 Aus CWST 1943 Jul
+ 8:45 AW CWST
+
+# Queensland
+#
+# From Alex Livingston (1996-11-01):
+# I have heard or read more than once that some resort islands off the coast
+# of Queensland chose to keep observing daylight-saving time even after
+# Queensland ceased to.
+#
+# From Paul Eggert (1996-11-22):
+# IATA SSIM (1993-02/1994-09) say that the Holiday Islands (Hayman, Lindeman,
+# Hamilton) observed DST for two years after the rest of Queensland stopped.
+# Hamilton is the largest, but there is also a Hamilton in Victoria,
+# so use Lindeman.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AQ 1971 only - Oct lastSun 2:00s 1:00 -
+Rule AQ 1972 only - Feb lastSun 2:00s 0 -
+Rule AQ 1989 1991 - Oct lastSun 2:00s 1:00 -
+Rule AQ 1990 1992 - Mar Sun>=1 2:00s 0 -
+Rule Holiday 1992 1993 - Oct lastSun 2:00s 1:00 -
+Rule Holiday 1993 1994 - Mar Sun>=1 2:00s 0 -
+Zone Australia/Brisbane 10:12:08 - LMT 1895
+ 10:00 Aus EST 1971
+ 10:00 AQ EST
+Zone Australia/Lindeman 9:55:56 - LMT 1895
+ 10:00 Aus EST 1971
+ 10:00 AQ EST 1992 Jul
+ 10:00 Holiday EST
+
+# South Australia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AS 1971 1985 - Oct lastSun 2:00s 1:00 -
+Rule AS 1986 only - Oct 19 2:00s 1:00 -
+Rule AS 1987 2007 - Oct lastSun 2:00s 1:00 -
+Rule AS 1972 only - Feb 27 2:00s 0 -
+Rule AS 1973 1985 - Mar Sun>=1 2:00s 0 -
+Rule AS 1986 1989 - Mar Sun>=15 2:00s 0 -
+Rule AS 1990 only - Mar Sun>=18 2:00s 0 -
+Rule AS 1991 only - Mar Sun>=1 2:00s 0 -
+Rule AS 1992 only - Mar Sun>=18 2:00s 0 -
+Rule AS 1993 only - Mar Sun>=1 2:00s 0 -
+Rule AS 1994 only - Mar Sun>=18 2:00s 0 -
+Rule AS 1995 2005 - Mar lastSun 2:00s 0 -
+Rule AS 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AS 2007 only - Mar lastSun 2:00s 0 -
+Rule AS 2008 max - Apr Sun>=1 2:00s 0 -
+Rule AS 2008 max - Oct Sun>=1 2:00s 1:00 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Adelaide 9:14:20 - LMT 1895 Feb
+ 9:00 - CST 1899 May
+ 9:30 Aus CST 1971
+ 9:30 AS CST
+
+# Tasmania
+#
+# From Paul Eggert (2005-08-16):
+# <http://www.bom.gov.au/climate/averages/tables/dst_times.shtml>
+# says King Island didn't observe DST from WWII until late 1971.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AT 1967 only - Oct Sun>=1 2:00s 1:00 -
+Rule AT 1968 only - Mar lastSun 2:00s 0 -
+Rule AT 1968 1985 - Oct lastSun 2:00s 1:00 -
+Rule AT 1969 1971 - Mar Sun>=8 2:00s 0 -
+Rule AT 1972 only - Feb lastSun 2:00s 0 -
+Rule AT 1973 1981 - Mar Sun>=1 2:00s 0 -
+Rule AT 1982 1983 - Mar lastSun 2:00s 0 -
+Rule AT 1984 1986 - Mar Sun>=1 2:00s 0 -
+Rule AT 1986 only - Oct Sun>=15 2:00s 1:00 -
+Rule AT 1987 1990 - Mar Sun>=15 2:00s 0 -
+Rule AT 1987 only - Oct Sun>=22 2:00s 1:00 -
+Rule AT 1988 1990 - Oct lastSun 2:00s 1:00 -
+Rule AT 1991 1999 - Oct Sun>=1 2:00s 1:00 -
+Rule AT 1991 2005 - Mar lastSun 2:00s 0 -
+Rule AT 2000 only - Aug lastSun 2:00s 1:00 -
+Rule AT 2001 max - Oct Sun>=1 2:00s 1:00 -
+Rule AT 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AT 2007 only - Mar lastSun 2:00s 0 -
+Rule AT 2008 max - Apr Sun>=1 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Hobart 9:49:16 - LMT 1895 Sep
+ 10:00 - EST 1916 Oct 1 2:00
+ 10:00 1:00 EST 1917 Feb
+ 10:00 Aus EST 1967
+ 10:00 AT EST
+Zone Australia/Currie 9:35:28 - LMT 1895 Sep
+ 10:00 - EST 1916 Oct 1 2:00
+ 10:00 1:00 EST 1917 Feb
+ 10:00 Aus EST 1971 Jul
+ 10:00 AT EST
+
+# Victoria
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AV 1971 1985 - Oct lastSun 2:00s 1:00 -
+Rule AV 1972 only - Feb lastSun 2:00s 0 -
+Rule AV 1973 1985 - Mar Sun>=1 2:00s 0 -
+Rule AV 1986 1990 - Mar Sun>=15 2:00s 0 -
+Rule AV 1986 1987 - Oct Sun>=15 2:00s 1:00 -
+Rule AV 1988 1999 - Oct lastSun 2:00s 1:00 -
+Rule AV 1991 1994 - Mar Sun>=1 2:00s 0 -
+Rule AV 1995 2005 - Mar lastSun 2:00s 0 -
+Rule AV 2000 only - Aug lastSun 2:00s 1:00 -
+Rule AV 2001 2007 - Oct lastSun 2:00s 1:00 -
+Rule AV 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AV 2007 only - Mar lastSun 2:00s 0 -
+Rule AV 2008 max - Apr Sun>=1 2:00s 0 -
+Rule AV 2008 max - Oct Sun>=1 2:00s 1:00 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Melbourne 9:39:52 - LMT 1895 Feb
+ 10:00 Aus EST 1971
+ 10:00 AV EST
+
+# New South Wales
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule AN 1971 1985 - Oct lastSun 2:00s 1:00 -
+Rule AN 1972 only - Feb 27 2:00s 0 -
+Rule AN 1973 1981 - Mar Sun>=1 2:00s 0 -
+Rule AN 1982 only - Apr Sun>=1 2:00s 0 -
+Rule AN 1983 1985 - Mar Sun>=1 2:00s 0 -
+Rule AN 1986 1989 - Mar Sun>=15 2:00s 0 -
+Rule AN 1986 only - Oct 19 2:00s 1:00 -
+Rule AN 1987 1999 - Oct lastSun 2:00s 1:00 -
+Rule AN 1990 1995 - Mar Sun>=1 2:00s 0 -
+Rule AN 1996 2005 - Mar lastSun 2:00s 0 -
+Rule AN 2000 only - Aug lastSun 2:00s 1:00 -
+Rule AN 2001 2007 - Oct lastSun 2:00s 1:00 -
+Rule AN 2006 only - Apr Sun>=1 2:00s 0 -
+Rule AN 2007 only - Mar lastSun 2:00s 0 -
+Rule AN 2008 max - Apr Sun>=1 2:00s 0 -
+Rule AN 2008 max - Oct Sun>=1 2:00s 1:00 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Australia/Sydney 10:04:52 - LMT 1895 Feb
+ 10:00 Aus EST 1971
+ 10:00 AN EST
+Zone Australia/Broken_Hill 9:25:48 - LMT 1895 Feb
+ 10:00 - EST 1896 Aug 23
+ 9:00 - CST 1899 May
+ 9:30 Aus CST 1971
+ 9:30 AN CST 2000
+ 9:30 AS CST
+
+# Lord Howe Island
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule LH 1981 1984 - Oct lastSun 2:00 1:00 -
+Rule LH 1982 1985 - Mar Sun>=1 2:00 0 -
+Rule LH 1985 only - Oct lastSun 2:00 0:30 -
+Rule LH 1986 1989 - Mar Sun>=15 2:00 0 -
+Rule LH 1986 only - Oct 19 2:00 0:30 -
+Rule LH 1987 1999 - Oct lastSun 2:00 0:30 -
+Rule LH 1990 1995 - Mar Sun>=1 2:00 0 -
+Rule LH 1996 2005 - Mar lastSun 2:00 0 -
+Rule LH 2000 only - Aug lastSun 2:00 0:30 -
+Rule LH 2001 2007 - Oct lastSun 2:00 0:30 -
+Rule LH 2006 only - Apr Sun>=1 2:00 0 -
+Rule LH 2007 only - Mar lastSun 2:00 0 -
+Rule LH 2008 max - Apr Sun>=1 2:00 0 -
+Rule LH 2008 max - Oct Sun>=1 2:00 0:30 -
+Zone Australia/Lord_Howe 10:36:20 - LMT 1895 Feb
+ 10:00 - EST 1981 Mar
+ 10:30 LH LHST
+
+# Australian miscellany
+#
+# Ashmore Is, Cartier
+# no indigenous inhabitants; only seasonal caretakers
+# no times are set
+#
+# Coral Sea Is
+# no indigenous inhabitants; only meteorologists
+# no times are set
+#
+# Macquarie
+# permanent occupation (scientific station) since 1948;
+# sealing and penguin oil station operated 1888/1917
+# like Australia/Hobart
+
+# Christmas
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Christmas 7:02:52 - LMT 1895 Feb
+ 7:00 - CXT # Christmas Island Time
+
+# Cook Is
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Cook 1978 only - Nov 12 0:00 0:30 HS
+Rule Cook 1979 1991 - Mar Sun>=1 0:00 0 -
+Rule Cook 1979 1990 - Oct lastSun 0:00 0:30 HS
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Rarotonga -10:39:04 - LMT 1901 # Avarua
+ -10:30 - CKT 1978 Nov 12 # Cook Is Time
+ -10:00 Cook CK%sT
+
+# Cocos
+# These islands were ruled by the Ross family from about 1830 to 1978.
+# We don't know when standard time was introduced; for now, we guess 1900.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Indian/Cocos 6:27:40 - LMT 1900
+ 6:30 - CCT # Cocos Islands Time
+
+# Fiji
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Fiji 1998 1999 - Nov Sun>=1 2:00 1:00 S
+Rule Fiji 1999 2000 - Feb lastSun 3:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Fiji 11:53:40 - LMT 1915 Oct 26 # Suva
+ 12:00 Fiji FJ%sT # Fiji Time
+
+# French Polynesia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Gambier -8:59:48 - LMT 1912 Oct # Rikitea
+ -9:00 - GAMT # Gambier Time
+Zone Pacific/Marquesas -9:18:00 - LMT 1912 Oct
+ -9:30 - MART # Marquesas Time
+Zone Pacific/Tahiti -9:58:16 - LMT 1912 Oct # Papeete
+ -10:00 - TAHT # Tahiti Time
+# Clipperton (near North America) is administered from French Polynesia;
+# it is uninhabited.
+
+# Guam
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Guam -14:21:00 - LMT 1844 Dec 31
+ 9:39:00 - LMT 1901 # Agana
+ 10:00 - GST 2000 Dec 23 # Guam
+ 10:00 - ChST # Chamorro Standard Time
+
+# Kiribati
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Tarawa 11:32:04 - LMT 1901 # Bairiki
+ 12:00 - GILT # Gilbert Is Time
+Zone Pacific/Enderbury -11:24:20 - LMT 1901
+ -12:00 - PHOT 1979 Oct # Phoenix Is Time
+ -11:00 - PHOT 1995
+ 13:00 - PHOT
+Zone Pacific/Kiritimati -10:29:20 - LMT 1901
+ -10:40 - LINT 1979 Oct # Line Is Time
+ -10:00 - LINT 1995
+ 14:00 - LINT
+
+# N Mariana Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Saipan -14:17:00 - LMT 1844 Dec 31
+ 9:43:00 - LMT 1901
+ 9:00 - MPT 1969 Oct # N Mariana Is Time
+ 10:00 - MPT 2000 Dec 23
+ 10:00 - ChST # Chamorro Standard Time
+
+# Marshall Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Majuro 11:24:48 - LMT 1901
+ 11:00 - MHT 1969 Oct # Marshall Islands Time
+ 12:00 - MHT
+Zone Pacific/Kwajalein 11:09:20 - LMT 1901
+ 11:00 - MHT 1969 Oct
+ -12:00 - KWAT 1993 Aug 20 # Kwajalein Time
+ 12:00 - MHT
+
+# Micronesia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Truk 10:07:08 - LMT 1901
+ 10:00 - TRUT # Truk Time
+Zone Pacific/Ponape 10:32:52 - LMT 1901 # Kolonia
+ 11:00 - PONT # Ponape Time
+Zone Pacific/Kosrae 10:51:56 - LMT 1901
+ 11:00 - KOST 1969 Oct # Kosrae Time
+ 12:00 - KOST 1999
+ 11:00 - KOST
+
+# Nauru
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Nauru 11:07:40 - LMT 1921 Jan 15 # Uaobe
+ 11:30 - NRT 1942 Mar 15 # Nauru Time
+ 9:00 - JST 1944 Aug 15
+ 11:30 - NRT 1979 May
+ 12:00 - NRT
+
+# New Caledonia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NC 1977 1978 - Dec Sun>=1 0:00 1:00 S
+Rule NC 1978 1979 - Feb 27 0:00 0 -
+Rule NC 1996 only - Dec 1 2:00s 1:00 S
+# Shanks & Pottenger say the following was at 2:00; go with IATA.
+Rule NC 1997 only - Mar 2 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Noumea 11:05:48 - LMT 1912 Jan 13
+ 11:00 NC NC%sT
+
+
+###############################################################################
+
+# New Zealand
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NZ 1927 only - Nov 6 2:00 1:00 S
+Rule NZ 1928 only - Mar 4 2:00 0 M
+Rule NZ 1928 1933 - Oct Sun>=8 2:00 0:30 S
+Rule NZ 1929 1933 - Mar Sun>=15 2:00 0 M
+Rule NZ 1934 1940 - Apr lastSun 2:00 0 M
+Rule NZ 1934 1940 - Sep lastSun 2:00 0:30 S
+Rule NZ 1946 only - Jan 1 0:00 0 S
+# Since 1957 Chatham has been 45 minutes ahead of NZ, but there's no
+# convenient notation for this so we must duplicate the Rule lines.
+Rule NZ 1974 only - Nov Sun>=1 2:00s 1:00 D
+Rule Chatham 1974 only - Nov Sun>=1 2:45s 1:00 D
+Rule NZ 1975 only - Feb lastSun 2:00s 0 S
+Rule Chatham 1975 only - Feb lastSun 2:45s 0 S
+Rule NZ 1975 1988 - Oct lastSun 2:00s 1:00 D
+Rule Chatham 1975 1988 - Oct lastSun 2:45s 1:00 D
+Rule NZ 1976 1989 - Mar Sun>=1 2:00s 0 S
+Rule Chatham 1976 1989 - Mar Sun>=1 2:45s 0 S
+Rule NZ 1989 only - Oct Sun>=8 2:00s 1:00 D
+Rule Chatham 1989 only - Oct Sun>=8 2:45s 1:00 D
+Rule NZ 1990 2006 - Oct Sun>=1 2:00s 1:00 D
+Rule Chatham 1990 2006 - Oct Sun>=1 2:45s 1:00 D
+Rule NZ 1990 2007 - Mar Sun>=15 2:00s 0 S
+Rule Chatham 1990 2007 - Mar Sun>=15 2:45s 0 S
+Rule NZ 2007 max - Sep lastSun 2:00s 1:00 D
+Rule Chatham 2007 max - Sep lastSun 2:45s 1:00 D
+Rule NZ 2008 max - Apr Sun>=1 2:00s 0 S
+Rule Chatham 2008 max - Apr Sun>=1 2:45s 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Auckland 11:39:04 - LMT 1868 Nov 2
+ 11:30 NZ NZ%sT 1946 Jan 1
+ 12:00 NZ NZ%sT
+Zone Pacific/Chatham 12:13:48 - LMT 1957 Jan 1
+ 12:45 Chatham CHA%sT
+
+
+# Auckland Is
+# uninhabited; Maori and Moriori, colonial settlers, pastoralists, sealers,
+# and scientific personnel have wintered
+
+# Campbell I
+# minor whaling stations operated 1909/1914
+# scientific station operated 1941/1995;
+# previously whalers, sealers, pastoralists, and scientific personnel wintered
+# was probably like Pacific/Auckland
+
+###############################################################################
+
+
+# Niue
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Niue -11:19:40 - LMT 1901 # Alofi
+ -11:20 - NUT 1951 # Niue Time
+ -11:30 - NUT 1978 Oct 1
+ -11:00 - NUT
+
+# Norfolk
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston
+ 11:12 - NMT 1951 # Norfolk Mean Time
+ 11:30 - NFT # Norfolk Time
+
+# Palau (Belau)
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Palau 8:57:56 - LMT 1901 # Koror
+ 9:00 - PWT # Palau Time
+
+# Papua New Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Port_Moresby 9:48:40 - LMT 1880
+ 9:48:32 - PMMT 1895 # Port Moresby Mean Time
+ 10:00 - PGT # Papua New Guinea Time
+
+# Pitcairn
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Pitcairn -8:40:20 - LMT 1901 # Adamstown
+ -8:30 - PNT 1998 Apr 27 00:00
+ -8:00 - PST # Pitcairn Standard Time
+
+# American Samoa
+Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
+ -11:22:48 - LMT 1911
+ -11:30 - SAMT 1950 # Samoa Time
+ -11:00 - NST 1967 Apr # N=Nome
+ -11:00 - BST 1983 Nov 30 # B=Bering
+ -11:00 - SST # S=Samoa
+
+# Samoa
+Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
+ -11:26:56 - LMT 1911
+ -11:30 - SAMT 1950 # Samoa Time
+ -11:00 - WST # Samoa Time
+
+# Solomon Is
+# excludes Bougainville, for which see Papua New Guinea
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Guadalcanal 10:39:48 - LMT 1912 Oct # Honiara
+ 11:00 - SBT # Solomon Is Time
+
+# Tokelau Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Fakaofo -11:24:56 - LMT 1901
+ -10:00 - TKT # Tokelau Time
+
+# Tonga
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Tonga 1999 only - Oct 7 2:00s 1:00 S
+Rule Tonga 2000 only - Mar 19 2:00s 0 -
+Rule Tonga 2000 2001 - Nov Sun>=1 2:00 1:00 S
+Rule Tonga 2001 2002 - Jan lastSun 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Tongatapu 12:19:20 - LMT 1901
+ 12:20 - TOT 1941 # Tonga Time
+ 13:00 - TOT 1999
+ 13:00 Tonga TO%sT
+
+# Tuvalu
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Funafuti 11:56:52 - LMT 1901
+ 12:00 - TVT # Tuvalu Time
+
+
+# US minor outlying islands
+
+# Howland, Baker
+# Howland was mined for guano by American companies 1857-1878 and British
+# 1886-1891; Baker was similar but exact dates are not known.
+# Inhabited by civilians 1935-1942; U.S. military bases 1943-1944;
+# uninhabited thereafter.
+# Howland observed Hawaii Standard Time (UTC-10:30) in 1937;
+# see page 206 of Elgen M. Long and Marie K. Long,
+# Amelia Earhart: the Mystery Solved, Simon & Schuster (2000).
+# So most likely Howland and Baker observed Hawaii Time from 1935
+# until they were abandoned after the war.
+
+# Jarvis
+# Mined for guano by American companies 1857-1879 and British 1883?-1891?.
+# Inhabited by civilians 1935-1942; IGY scientific base 1957-1958;
+# uninhabited thereafter.
+# no information; was probably like Pacific/Kiritimati
+
+# Johnston
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Johnston -10:00 - HST
+
+# Kingman
+# uninhabited
+
+# Midway
+#
+# From Mark Brader (2005-01-23):
+# [Fallacies and Fantasies of Air Transport History, by R.E.G. Davies,
+# published 1994 by Paladwr Press, McLean, VA, USA; ISBN 0-9626483-5-3]
+# reproduced a Pan American Airways timeables from 1936, for their weekly
+# "Orient Express" flights between San Francisco and Manila, and connecting
+# flights to Chicago and the US East Coast. As it uses some time zone
+# designations that I've never seen before:....
+# Fri. 6:30A Lv. HONOLOLU (Pearl Harbor), H.I. H.L.T. Ar. 5:30P Sun.
+# " 3:00P Ar. MIDWAY ISLAND . . . . . . . . . M.L.T. Lv. 6:00A "
+#
+Zone Pacific/Midway -11:49:28 - LMT 1901
+ -11:00 - NST 1956 Jun 3
+ -11:00 1:00 NDT 1956 Sep 2
+ -11:00 - NST 1967 Apr # N=Nome
+ -11:00 - BST 1983 Nov 30 # B=Bering
+ -11:00 - SST # S=Samoa
+
+# Palmyra
+# uninhabited since World War II; was probably like Pacific/Kiritimati
+
+# Wake
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Wake 11:06:28 - LMT 1901
+ 12:00 - WAKT # Wake Time
+
+
+# Vanuatu
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Vanuatu 1983 only - Sep 25 0:00 1:00 S
+Rule Vanuatu 1984 1991 - Mar Sun>=23 0:00 0 -
+Rule Vanuatu 1984 only - Oct 23 0:00 1:00 S
+Rule Vanuatu 1985 1991 - Sep Sun>=23 0:00 1:00 S
+Rule Vanuatu 1992 1993 - Jan Sun>=23 0:00 0 -
+Rule Vanuatu 1992 only - Oct Sun>=23 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Efate 11:13:16 - LMT 1912 Jan 13 # Vila
+ 11:00 Vanuatu VU%sT # Vanuatu Time
+
+# Wallis and Futuna
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Pacific/Wallis 12:15:20 - LMT 1901
+ 12:00 - WFT # Wallis & Futuna Time
+
+###############################################################################
+
+# NOTES
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Another source occasionally used is Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated), which
+# I found in the UCLA library.
+#
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+# std dst
+# LMT Local Mean Time
+# 8:00 WST WST Western Australia
+# 8:45 CWST CWST Central Western Australia*
+# 9:00 JST Japan
+# 9:30 CST CST Central Australia
+# 10:00 EST EST Eastern Australia
+# 10:00 ChST Chamorro
+# 10:30 LHST LHST Lord Howe*
+# 11:30 NZMT NZST New Zealand through 1945
+# 12:00 NZST NZDT New Zealand 1946-present
+# 12:45 CHAST CHADT Chatham*
+# -11:00 SST Samoa
+# -10:00 HST Hawaii
+# - 8:00 PST Pitcairn*
+#
+# See the `northamerica' file for Hawaii.
+# See the `southamerica' file for Easter I and the Galapagos Is.
+
+###############################################################################
+
+# Australia
+
+# From Paul Eggert (2005-12-08):
+# <a href="http://www.bom.gov.au/climate/averages/tables/dst_times.shtml">
+# Implementation Dates of Daylight Saving Time within Australia
+# </a> summarizes daylight saving issues in Australia.
+
+# From Arthur David Olson (2005-12-12):
+# <a href="http://www.lawlink.nsw.gov.au/lawlink/Corporate/ll_agdinfo.nsf/pages/community_relations_daylight_saving">
+# Lawlink NSW:Daylight Saving in New South Wales
+# </a> covers New South Wales in particular.
+
+# From John Mackin (1991-03-06):
+# We in Australia have _never_ referred to DST as `daylight' time.
+# It is called `summer' time. Now by a happy coincidence, `summer'
+# and `standard' happen to start with the same letter; hence, the
+# abbreviation does _not_ change...
+# The legislation does not actually define abbreviations, at least
+# in this State, but the abbreviation is just commonly taken to be the
+# initials of the phrase, and the legislation here uniformly uses
+# the phrase `summer time' and does not use the phrase `daylight
+# time'.
+# Announcers on the Commonwealth radio network, the ABC (for Australian
+# Broadcasting Commission), use the phrases `Eastern Standard Time'
+# or `Eastern Summer Time'. (Note, though, that as I say in the
+# current australasia file, there is really no such thing.) Announcers
+# on its overseas service, Radio Australia, use the same phrases
+# prefixed by the word `Australian' when referring to local times;
+# time announcements on that service, naturally enough, are made in UTC.
+
+# From Arthur David Olson (1992-03-08):
+# Given the above, what's chosen for year-round use is:
+# CST for any place operating at a GMTOFF of 9:30
+# WST for any place operating at a GMTOFF of 8:00
+# EST for any place operating at a GMTOFF of 10:00
+
+# From Chuck Soper (2006-06-01):
+# I recently found this Australian government web page on time zones:
+# <http://www.australia.gov.au/about-australia-13time>
+# And this government web page lists time zone names and abbreviations:
+# <http://www.bom.gov.au/climate/averages/tables/daysavtm.shtml>
+
+# From Paul Eggert (2001-04-05), summarizing a long discussion about "EST"
+# versus "AEST" etc.:
+#
+# I see the following points of dispute:
+#
+# * How important are unique time zone abbreviations?
+#
+# Here I tend to agree with the point (most recently made by Chris
+# Newman) that unique abbreviations should not be essential for proper
+# operation of software. We have other instances of ambiguity
+# (e.g. "IST" denoting both "Israel Standard Time" and "Indian
+# Standard Time"), and they are not likely to go away any time soon.
+# In the old days, some software mistakenly relied on unique
+# abbreviations, but this is becoming less true with time, and I don't
+# think it's that important to cater to such software these days.
+#
+# On the other hand, there is another motivation for unambiguous
+# abbreviations: it cuts down on human confusion. This is
+# particularly true for Australia, where "EST" can mean one thing for
+# time T and a different thing for time T plus 1 second.
+#
+# * Does the relevant legislation indicate which abbreviations should be used?
+#
+# Here I tend to think that things are a mess, just as they are in
+# many other countries. We Americans are currently disagreeing about
+# which abbreviation to use for the newly legislated Chamorro Standard
+# Time, for example.
+#
+# Personally, I would prefer to use common practice; I would like to
+# refer to legislation only for examples of common practice, or as a
+# tiebreaker.
+#
+# * Do Australians more often use "Eastern Daylight Time" or "Eastern
+# Summer Time"? Do they typically prefix the time zone names with
+# the word "Australian"?
+#
+# My own impression is that both "Daylight Time" and "Summer Time" are
+# common and are widely understood, but that "Summer Time" is more
+# popular; and that the leading "A" is also common but is omitted more
+# often than not. I just used AltaVista advanced search and got the
+# following count of page hits:
+#
+# 1,103 "Eastern Summer Time" AND domain:au
+# 971 "Australian Eastern Summer Time" AND domain:au
+# 613 "Eastern Daylight Time" AND domain:au
+# 127 "Australian Eastern Daylight Time" AND domain:au
+#
+# Here "Summer" seems quite a bit more popular than "Daylight",
+# particularly when we know the time zone is Australian and not US,
+# say. The "Australian" prefix seems to be popular for Eastern Summer
+# Time, but unpopular for Eastern Daylight Time.
+#
+# For abbreviations, tools like AltaVista are less useful because of
+# ambiguity. Many hits are not really time zones, unfortunately, and
+# many hits denote US time zones and not Australian ones. But here
+# are the hit counts anyway:
+#
+# 161,304 "EST" and domain:au
+# 25,156 "EDT" and domain:au
+# 18,263 "AEST" and domain:au
+# 10,416 "AEDT" and domain:au
+#
+# 14,538 "CST" and domain:au
+# 5,728 "CDT" and domain:au
+# 176 "ACST" and domain:au
+# 29 "ACDT" and domain:au
+#
+# 7,539 "WST" and domain:au
+# 68 "AWST" and domain:au
+#
+# This data suggest that Australians tend to omit the "A" prefix in
+# practice. The situation for "ST" versus "DT" is less clear, given
+# the ambiguities involved.
+#
+# * How do Australians feel about the abbreviations in the tz database?
+#
+# If you just count Australians on this list, I count 2 in favor and 3
+# against. One of the "against" votes (David Keegel) counseled delay,
+# saying that both AEST/AEDT and EST/EST are widely used and
+# understood in Australia.
+
+# From Paul Eggert (1995-12-19):
+# Shanks & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+# Mark Prior writes that his newspaper
+# reports that NSW's fall 1995 change will occur at 2:00,
+# but Robert Elz says it's been 3:00 in Victoria since 1970
+# and perhaps the newspaper's `2:00' is referring to standard time.
+# For now we'll continue to assume 2:00s for changes since 1960.
+
+# From Eric Ulevik (1998-01-05):
+#
+# Here are some URLs to Australian time legislation. These URLs are stable,
+# and should probably be included in the data file. There are probably more
+# relevant entries in this database.
+#
+# NSW (including LHI and Broken Hill):
+# <a href="http://www.austlii.edu.au/au/legis/nsw/consol_act/sta1987137/index.html">
+# Standard Time Act 1987 (updated 1995-04-04)
+# </a>
+# ACT
+# <a href="http://www.austlii.edu.au/au/legis/act/consol_act/stasta1972279/index.html">
+# Standard Time and Summer Time Act 1972
+# </a>
+# SA
+# <a href="http://www.austlii.edu.au/au/legis/sa/consol_act/sta1898137/index.html">
+# Standard Time Act, 1898
+# </a>
+
+# From David Grosz (2005-06-13):
+# It was announced last week that Daylight Saving would be extended by
+# one week next year to allow for the 2006 Commonwealth Games.
+# Daylight Saving is now to end for next year only on the first Sunday
+# in April instead of the last Sunday in March.
+#
+# From Gwillim Law (2005-06-14):
+# I did some Googling and found that all of those states (and territory) plan
+# to extend DST together in 2006.
+# ACT: http://www.cmd.act.gov.au/mediareleases/fileread.cfm?file=86.txt
+# New South Wales: http://www.thecouriermail.news.com.au/common/story_page/0,5936,15538869%255E1702,00.html
+# South Australia: http://www.news.com.au/story/0,10117,15555031-1246,00.html
+# Tasmania: http://www.media.tas.gov.au/release.php?id=14772
+# Victoria: I wasn't able to find anything separate, but the other articles
+# allude to it.
+# But not Queensland
+# http://www.news.com.au/story/0,10117,15564030-1248,00.html.
+
+# Northern Territory
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The NORTHERN TERRITORY.. [ Courtesy N.T. Dept of the Chief Minister ]
+# # [ Nov 1990 ]
+# # N.T. have never utilised any DST due to sub-tropical/tropical location.
+# ...
+# Zone Australia/North 9:30 - CST
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# the Northern Territory do[es] not have daylight saving.
+
+# Western Australia
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of WESTERN AUSTRALIA.. [ Courtesy W.A. dept Premier+Cabinet ]
+# # [ Nov 1990 ]
+# # W.A. suffers from a great deal of public and political opposition to
+# # DST in principle. A bill is brought before parliament in most years, but
+# # usually defeated either in the upper house, or in party caucus
+# # before reaching parliament.
+# ...
+# Zone Australia/West 8:00 AW %sST
+# ...
+# Rule AW 1974 only - Oct lastSun 2:00 1:00 D
+# Rule AW 1975 only - Mar Sun>=1 3:00 0 W
+# Rule AW 1983 only - Oct lastSun 2:00 1:00 D
+# Rule AW 1984 only - Mar Sun>=1 3:00 0 W
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# Western Australia...do[es] not have daylight saving.
+
+# From John D. Newman via Bradley White (1991-11-02):
+# Western Australia is still on "winter time". Some DH in Sydney
+# rang me at home a few days ago at 6.00am. (He had just arrived at
+# work at 9.00am.)
+# W.A. is switching to Summer Time on Nov 17th just to confuse
+# everybody again.
+
+# From Arthur David Olson (1992-03-08):
+# The 1992 ending date used in the rules is a best guess;
+# it matches what was used in the past.
+
+# <a href="http://www.bom.gov.au/faq/faqgen.htm">
+# The Australian Bureau of Meteorology FAQ
+# </a> (1999-09-27) writes that Giles Meteorological Station uses
+# South Australian time even though it's located in Western Australia.
+
+# Queensland
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of QUEENSLAND.. [ Courtesy Qld. Dept Premier Econ&Trade Devel ]
+# # [ Dec 1990 ]
+# ...
+# Zone Australia/Queensland 10:00 AQ %sST
+# ...
+# Rule AQ 1971 only - Oct lastSun 2:00 1:00 D
+# Rule AQ 1972 only - Feb lastSun 3:00 0 E
+# Rule AQ 1989 max - Oct lastSun 2:00 1:00 D
+# Rule AQ 1990 max - Mar Sun>=1 3:00 0 E
+
+# From Bradley White (1989-12-24):
+# "Australia/Queensland" now observes daylight time (i.e. from
+# October 1989).
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# ...Queensland...[has] agreed to end daylight saving
+# at 3am tomorrow (March 3)...
+
+# From John Mackin (1991-03-06):
+# I can certainly confirm for my part that Daylight Saving in NSW did in fact
+# end on Sunday, 3 March. I don't know at what hour, though. (It surprised
+# me.)
+
+# From Bradley White (1992-03-08):
+# ...there was recently a referendum in Queensland which resulted
+# in the experimental daylight saving system being abandoned. So, ...
+# ...
+# Rule QLD 1989 1991 - Oct lastSun 2:00 1:00 D
+# Rule QLD 1990 1992 - Mar Sun>=1 3:00 0 S
+# ...
+
+# From Arthur David Olson (1992-03-08):
+# The chosen rules the union of the 1971/1972 change and the 1989-1992 changes.
+
+# From Christopher Hunt (2006-11-21), after an advance warning
+# from Jesper Norgaard Welen (2006-11-01):
+# WA are trialing DST for three years.
+# <http://www.parliament.wa.gov.au/parliament/bills.nsf/9A1B183144403DA54825721200088DF1/$File/Bill175-1B.pdf>
+
+# From Rives McDow (2002-04-09):
+# The most interesting region I have found consists of three towns on the
+# southern coast.... South Australia observes daylight saving time; Western
+# Australia does not. The two states are one and a half hours apart. The
+# residents decided to forget about this nonsense of changing the clock so
+# much and set the local time 20 hours and 45 minutes from the
+# international date line, or right in the middle of the time of South
+# Australia and Western Australia....
+#
+# From Paul Eggert (2002-04-09):
+# This is confirmed by the section entitled
+# "What's the deal with time zones???" in
+# <http://www.earthsci.unimelb.edu.au/~awatkins/null.html>.
+#
+# From Alex Livingston (2006-12-07):
+# ... it was just on four years ago that I drove along the Eyre Highway,
+# which passes through eastern Western Australia close to the southern
+# coast of the continent.
+#
+# I paid particular attention to the time kept there. There can be no
+# dispute that UTC+08:45 was considered "the time" from the border
+# village just inside the border with South Australia to as far west
+# as just east of Caiguna. There can also be no dispute that Eucla is
+# the largest population centre in this zone....
+#
+# Now that Western Australia is observing daylight saving, the
+# question arose whether this part of the state would follow suit. I
+# just called the border village and confirmed that indeed they have,
+# meaning that they are now observing UTC+09:45.
+#
+# (2006-12-09):
+# I personally doubt that either experimentation with daylight saving
+# in WA or its introduction in SA had anything to do with the genesis
+# of this time zone. My hunch is that it's been around since well
+# before 1975. I remember seeing it noted on road maps decades ago.
+
+# From Paul Eggert (2006-12-15):
+# For lack of better info, assume the tradition dates back to the
+# introduction of standard time in 1895.
+
+
+# southeast Australia
+#
+# From Paul Eggert (2007-07-23):
+# Starting autumn 2008 Victoria, NSW, South Australia, Tasmania and the ACT
+# end DST the first Sunday in April and start DST the first Sunday in October.
+# http://www.theage.com.au/news/national/daylight-savings-to-span-six-months/2007/06/27/1182623966703.html
+
+
+# South Australia
+
+# From Bradley White (1991-03-04):
+# A recent excerpt from an Australian newspaper...
+# ...South Australia...[has] agreed to end daylight saving
+# at 3am tomorrow (March 3)...
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of SOUTH AUSTRALIA....[ Courtesy of S.A. Dept of Labour ]
+# # [ Nov 1990 ]
+# ...
+# Zone Australia/South 9:30 AS %sST
+# ...
+# Rule AS 1971 max - Oct lastSun 2:00 1:00 D
+# Rule AS 1972 1985 - Mar Sun>=1 3:00 0 C
+# Rule AS 1986 1990 - Mar Sun>=15 3:00 0 C
+# Rule AS 1991 max - Mar Sun>=1 3:00 0 C
+
+# From Bradley White (1992-03-11):
+# Recent correspondence with a friend in Adelaide
+# contained the following exchange: "Due to the Adelaide Festival,
+# South Australia delays setting back our clocks for a few weeks."
+
+# From Robert Elz (1992-03-13):
+# I heard that apparently (or at least, it appears that)
+# South Aus will have an extra 3 weeks daylight saving every even
+# numbered year (from 1990). That's when the Adelaide Festival
+# is on...
+
+# From Robert Elz (1992-03-16, 00:57:07 +1000):
+# DST didn't end in Adelaide today (yesterday)....
+# But whether it's "4th Sunday" or "2nd last Sunday" I have no idea whatever...
+# (it's just as likely to be "the Sunday we pick for this year"...).
+
+# From Bradley White (1994-04-11):
+# If Sun, 15 March, 1992 was at +1030 as kre asserts, but yet Sun, 20 March,
+# 1994 was at +0930 as John Connolly's customer seems to assert, then I can
+# only conclude that the actual rule is more complicated....
+
+# From John Warburton (1994-10-07):
+# The new Daylight Savings dates for South Australia ...
+# was gazetted in the Government Hansard on Sep 26 1994....
+# start on last Sunday in October and end in last sunday in March.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Tasmania
+
+# The rules for 1967 through 1991 were reported by George Shepherd
+# via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of TASMANIA.. [Courtesy Tasmanian Dept of Premier + Cabinet ]
+# # [ Nov 1990 ]
+
+# From Bill Hart via Guy Harris (1991-10-10):
+# Oh yes, the new daylight savings rules are uniquely tasmanian, we have
+# 6 weeks a year now when we are out of sync with the rest of Australia
+# (but nothing new about that).
+
+# From Alex Livingston (1999-10-04):
+# I heard on the ABC (Australian Broadcasting Corporation) radio news on the
+# (long) weekend that Tasmania, which usually goes its own way in this regard,
+# has decided to join with most of NSW, the ACT, and most of Victoria
+# (Australia) and start daylight saving on the last Sunday in August in 2000
+# instead of the first Sunday in October.
+
+# Sim Alam (2000-07-03) reported a legal citation for the 2000/2001 rules:
+# http://www.thelaw.tas.gov.au/fragview/42++1968+GS3A@EN+2000070300
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Victoria
+
+# The rules for 1971 through 1991 were reported by George Shepherd
+# via Simon Woodhead via Robert Elz (1991-03-06):
+# # The state of VICTORIA.. [ Courtesy of Vic. Dept of Premier + Cabinet ]
+# # [ Nov 1990 ]
+
+# From Scott Harrington (2001-08-29):
+# On KQED's "City Arts and Lectures" program last night I heard an
+# interesting story about daylight savings time. Dr. John Heilbron was
+# discussing his book "The Sun in the Church: Cathedrals as Solar
+# Observatories"[1], and in particular the Shrine of Remembrance[2] located
+# in Melbourne, Australia.
+#
+# Apparently the shrine's main purpose is a beam of sunlight which
+# illuminates a special spot on the floor at the 11th hour of the 11th day
+# of the 11th month (Remembrance Day) every year in memory of Australia's
+# fallen WWI soldiers. And if you go there on Nov. 11, at 11am local time,
+# you will indeed see the sunbeam illuminate the special spot at the
+# expected time.
+#
+# However, that is only because of some special mirror contraption that had
+# to be employed, since due to daylight savings time, the true solar time of
+# the remembrance moment occurs one hour later (or earlier?). Perhaps
+# someone with more information on this jury-rig can tell us more.
+#
+# [1] http://www.hup.harvard.edu/catalog/HEISUN.html
+# [2] http://www.shrine.org.au
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# New South Wales
+
+# From Arthur David Olson:
+# New South Wales and subjurisdictions have their own ideas of a fun time.
+# Based on law library research by John Mackin,
+# who notes:
+# In Australia, time is not legislated federally, but rather by the
+# individual states. Thus, while such terms as ``Eastern Standard Time''
+# [I mean, of course, Australian EST, not any other kind] are in common
+# use, _they have NO REAL MEANING_, as they are not defined in the
+# legislation. This is very important to understand.
+# I have researched New South Wales time only...
+
+# From Eric Ulevik (1999-05-26):
+# DST will start in NSW on the last Sunday of August, rather than the usual
+# October in 2000. [See: Matthew Moore,
+# <a href="http://www.smh.com.au/news/9905/26/pageone/pageone4.html">
+# Two months more daylight saving
+# </a>
+# Sydney Morning Herald (1999-05-26).]
+
+# From Paul Eggert (1999-09-27):
+# See the following official NSW source:
+# <a href="http://dir.gis.nsw.gov.au/cgi-bin/genobject/document/other/daylightsaving/tigGmZ">
+# Daylight Saving in New South Wales.
+# </a>
+#
+# Narrabri Shire (NSW) council has announced it will ignore the extension of
+# daylight saving next year. See:
+# <a href="http://abc.net.au/news/regionals/neweng/monthly/regeng-22jul1999-1.htm">
+# Narrabri Council to ignore daylight saving
+# </a> (1999-07-22). For now, we'll wait to see if this really happens.
+#
+# Victoria will following NSW. See:
+# <a href="http://abc.net.au/local/news/olympics/1999/07/item19990728112314_1.htm">
+# Vic to extend daylight saving
+# </a> (1999-07-28).
+#
+# However, South Australia rejected the DST request. See:
+# <a href="http://abc.net.au/news/olympics/1999/07/item19990719151754_1.htm">
+# South Australia rejects Olympics daylight savings request
+# </a> (1999-07-19).
+#
+# Queensland also will not observe DST for the Olympics. See:
+# <a href="http://abc.net.au/news/olympics/1999/06/item19990601114608_1.htm">
+# Qld says no to daylight savings for Olympics
+# </a> (1999-06-01), which quotes Queensland Premier Peter Beattie as saying
+# ``Look you've got to remember in my family when this came up last time
+# I voted for it, my wife voted against it and she said to me it's all very
+# well for you, you don't have to worry about getting the children out of
+# bed, getting them to school, getting them to sleep at night.
+# I've been through all this argument domestically...my wife rules.''
+#
+# Broken Hill will stick with South Australian time in 2000. See:
+# <a href="http://abc.net.au/news/regionals/brokenh/monthly/regbrok-21jul1999-6.htm">
+# Broken Hill to be behind the times
+# </a> (1999-07-21).
+
+# IATA SSIM (1998-09) says that the spring 2000 change for Australian
+# Capital Territory, New South Wales except Lord Howe Island and Broken
+# Hill, and Victoria will be August 27, presumably due to the Sydney Olympics.
+
+# From Eric Ulevik, referring to Sydney's Sun Herald (2000-08-13), page 29:
+# The Queensland Premier Peter Beattie is encouraging northern NSW
+# towns to use Queensland time.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+# Yancowinna
+
+# From John Mackin (1989-01-04):
+# `Broken Hill' means the County of Yancowinna.
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # YANCOWINNA.. [ Confirmation courtesy of Broken Hill Postmaster ]
+# # [ Dec 1990 ]
+# ...
+# # Yancowinna uses Central Standard Time, despite [its] location on the
+# # New South Wales side of the S.A. border. Most business and social dealings
+# # are with CST zones, therefore CST is legislated by local government
+# # although the switch to Summer Time occurs in line with N.S.W. There have
+# # been years when this did not apply, but the historical data is not
+# # presently available.
+# Zone Australia/Yancowinna 9:30 AY %sST
+# ...
+# Rule AY 1971 1985 - Oct lastSun 2:00 1:00 D
+# Rule AY 1972 only - Feb lastSun 3:00 0 C
+# [followed by other Rules]
+
+# Lord Howe Island
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# LHI... [ Courtesy of Pauline Van Winsen ]
+# [ Dec 1990 ]
+# Lord Howe Island is located off the New South Wales coast, and is half an
+# hour ahead of NSW time.
+
+# From James Lonergan, Secretary, Lord Howe Island Board (2000-01-27):
+# Lord Howe Island summer time in 2000/2001 will commence on the same
+# date as the rest of NSW (i.e. 2000-08-27). For your information the
+# Lord Howe Island Board (controlling authority for the Island) is
+# seeking the community's views on various options for summer time
+# arrangements on the Island, e.g. advance clocks by 1 full hour
+# instead of only 30 minutes. Dependant on the wishes of residents
+# the Board may approach the NSW government to change the existing
+# arrangements. The starting date for summer time on the Island will
+# however always coincide with the rest of NSW.
+
+# From James Lonergan, Secretary, Lord Howe Island Board (2000-10-25):
+# Lord Howe Island advances clocks by 30 minutes during DST in NSW and retards
+# clocks by 30 minutes when DST finishes. Since DST was most recently
+# introduced in NSW, the "changeover" time on the Island has been 02:00 as
+# shown on clocks on LHI. I guess this means that for 30 minutes at the start
+# of DST, LHI is actually 1 hour ahead of the rest of NSW.
+
+# From Paul Eggert (2006-03-22):
+# For Lord Howe dates we use Shanks & Pottenger through 1989, and
+# Lonergan thereafter. For times we use Lonergan.
+
+# From Paul Eggert (2007-07-23):
+# See "southeast Australia" above for 2008 and later.
+
+###############################################################################
+
+# New Zealand
+
+# From Mark Davies (1990-10-03):
+# the 1989/90 year was a trial of an extended "daylight saving" period.
+# This trial was deemed successful and the extended period adopted for
+# subsequent years (with the addition of a further week at the start).
+# source -- phone call to Ministry of Internal Affairs Head Office.
+
+# From George Shepherd via Simon Woodhead via Robert Elz (1991-03-06):
+# # The Country of New Zealand (Australia's east island -) Gee they hate that!
+# # or is Australia the west island of N.Z.
+# # [ courtesy of Geoff Tribble.. Auckland N.Z. ]
+# # [ Nov 1990 ]
+# ...
+# Rule NZ 1974 1988 - Oct lastSun 2:00 1:00 D
+# Rule NZ 1989 max - Oct Sun>=1 2:00 1:00 D
+# Rule NZ 1975 1989 - Mar Sun>=1 3:00 0 S
+# Rule NZ 1990 max - Mar lastSun 3:00 0 S
+# ...
+# Zone NZ 12:00 NZ NZ%sT # New Zealand
+# Zone NZ-CHAT 12:45 - NZ-CHAT # Chatham Island
+
+# From Arthur David Olson (1992-03-08):
+# The chosen rules use the Davies October 8 values for the start of DST in 1989
+# rather than the October 1 value.
+
+# From Paul Eggert (1995-12-19);
+# Shank & Pottenger report 2:00 for all autumn changes in Australia and NZ.
+# Robert Uzgalis writes that the New Zealand Daylight
+# Savings Time Order in Council dated 1990-06-18 specifies 2:00 standard
+# time on both the first Sunday in October and the third Sunday in March.
+# As with Australia, we'll assume the tradition is 2:00s, not 2:00.
+#
+# From Paul Eggert (2006-03-22):
+# The Department of Internal Affairs (DIA) maintains a brief history,
+# as does Carol Squires; see tz-link.htm for the full references.
+# Use these sources in preference to Shanks & Pottenger.
+#
+# For Chatham, IATA SSIM (1991/1999) gives the NZ rules but with
+# transitions at 2:45 local standard time; this confirms that Chatham
+# is always exactly 45 minutes ahead of Auckland.
+
+# From Colin Sharples (2007-04-30):
+# DST will now start on the last Sunday in September, and end on the
+# first Sunday in April. The changes take effect this year, meaning
+# that DST will begin on 2007-09-30 2008-04-06.
+# http://www.dia.govt.nz/diawebsite.nsf/wpg_URL/Services-Daylight-Saving-Daylight-saving-to-be-extended
+
+###############################################################################
+
+
+# Fiji
+
+# Howse writes (p 153) that in 1879 the British governor of Fiji
+# enacted an ordinance standardizing the islands on Antipodean Time
+# instead of the American system (which was one day behind).
+
+# From Rives McDow (1998-10-08):
+# Fiji will introduce DST effective 0200 local time, 1998-11-01
+# until 0300 local time 1999-02-28. Each year the DST period will
+# be from the first Sunday in November until the last Sunday in February.
+
+# From Paul Eggert (2000-01-08):
+# IATA SSIM (1999-09) says DST ends 0100 local time. Go with McDow.
+
+# From the BBC World Service (1998-10-31 11:32 UTC):
+# The Fijiian government says the main reasons for the time change is to
+# improve productivity and reduce road accidents. But correspondents say it
+# also hopes the move will boost Fiji's ability to compete with other pacific
+# islands in the effort to attract tourists to witness the dawning of the new
+# millenium.
+
+# http://www.fiji.gov.fj/press/2000_09/2000_09_13-05.shtml (2000-09-13)
+# reports that Fiji has discontinued DST.
+
+# Johnston
+
+# Johnston data is from usno1995.
+
+
+# Kiribati
+
+# From Paul Eggert (1996-01-22):
+# Today's _Wall Street Journal_ (page 1) reports that Kiribati
+# ``declared it the same day throught the country as of Jan. 1, 1995''
+# as part of the competition to be first into the 21st century.
+
+
+# Kwajalein
+
+# In comp.risks 14.87 (26 August 1993), Peter Neumann writes:
+# I wonder what happened in Kwajalein, where there was NO Friday,
+# 1993-08-20. Thursday night at midnight Kwajalein switched sides with
+# respect to the International Date Line, to rejoin its fellow islands,
+# going from 11:59 p.m. Thursday to 12:00 m. Saturday in a blink.
+
+
+# N Mariana Is, Guam
+
+# Howse writes (p 153) ``The Spaniards, on the other hand, reached the
+# Philippines and the Ladrones from America,'' and implies that the Ladrones
+# (now called the Marianas) kept American date for quite some time.
+# For now, we assume the Ladrones switched at the same time as the Philippines;
+# see Asia/Manila.
+
+# US Public Law 106-564 (2000-12-23) made UTC+10 the official standard time,
+# under the name "Chamorro Standard Time". There is no official abbreviation,
+# but Congressman Robert A. Underwood, author of the bill that became law,
+# wrote in a press release (2000-12-27) that he will seek the use of "ChST".
+
+
+# Micronesia
+
+# Alan Eugene Davis writes (1996-03-16),
+# ``I am certain, having lived there for the past decade, that "Truk"
+# (now properly known as Chuuk) ... is in the time zone GMT+10.''
+#
+# Shanks & Pottenger write that Truk switched from UTC+10 to UTC+11
+# on 1978-10-01; ignore this for now.
+
+# From Paul Eggert (1999-10-29):
+# The Federated States of Micronesia Visitors Board writes in
+# <a href="http://www.fsmgov.org/info/clocks.html">
+# The Federated States of Micronesia - Visitor Information
+# </a> (1999-01-26)
+# that Truk and Yap are UTC+10, and Ponape and Kosrae are UTC+11.
+# We don't know when Kosrae switched from UTC+12; assume January 1 for now.
+
+
+# Midway
+
+# From Charles T O'Connor, KMTH DJ (1956),
+# quoted in the KTMH section of the Radio Heritage Collection
+# <http://radiodx.com/spdxr/KMTH.htm> (2002-12-31):
+# For the past two months we've been on what is known as Daylight
+# Saving Time. This time has put us on air at 5am in the morning,
+# your time down there in New Zealand. Starting September 2, 1956
+# we'll again go back to Standard Time. This'll mean that we'll go to
+# air at 6am your time.
+#
+# From Paul Eggert (2003-03-23):
+# We don't know the date of that quote, but we'll guess they
+# started DST on June 3. Possibly DST was observed other years
+# in Midway, but we have no record of it.
+
+
+# Pitcairn
+
+# From Rives McDow (1999-11-08):
+# A Proclamation was signed by the Governor of Pitcairn on the 27th March 1998
+# with regard to Pitcairn Standard Time. The Proclamation is as follows.
+#
+# The local time for general purposes in the Islands shall be
+# Co-ordinated Universal time minus 8 hours and shall be known
+# as Pitcairn Standard Time.
+#
+# ... I have also seen Pitcairn listed as UTC minus 9 hours in several
+# references, and can only assume that this was an error in interpretation
+# somehow in light of this proclamation.
+
+# From Rives McDow (1999-11-09):
+# The Proclamation regarding Pitcairn time came into effect on 27 April 1998
+# ... at midnight.
+
+# From Howie Phelps (1999-11-10), who talked to a Pitcairner via shortwave:
+# Betty Christian told me yesterday that their local time is the same as
+# Pacific Standard Time. They used to be 1/2 hour different from us here in
+# Sacramento but it was changed a couple of years ago.
+
+
+# Samoa
+
+# Howse writes (p 153, citing p 10 of the 1883-11-18 New York Herald)
+# that in 1879 the King of Samoa decided to change
+# ``the date in his kingdom from the Antipodean to the American system,
+# ordaining -- by a masterpiece of diplomatic flattery -- that
+# the Fourth of July should be celebrated twice in that year.''
+
+
+# Tonga
+
+# From Paul Eggert (1996-01-22):
+# Today's _Wall Street Journal_ (p 1) reports that ``Tonga has been plotting
+# to sneak ahead of [New Zealanders] by introducing daylight-saving time.''
+# Since Kiribati has moved the Date Line it's not clear what Tonga will do.
+
+# Don Mundell writes in the 1997-02-20 Tonga Chronicle
+# <a href="http://www.tongatapu.net.to/tonga/homeland/timebegins.htm">
+# How Tonga became `The Land where Time Begins'
+# </a>:
+
+# Until 1941 Tonga maintained a standard time 50 minutes ahead of NZST
+# 12 hours and 20 minutes ahead of GMT. When New Zealand adjusted its
+# standard time in 1940s, Tonga had the choice of subtracting from its
+# local time to come on the same standard time as New Zealand or of
+# advancing its time to maintain the differential of 13 degrees
+# (approximately 50 minutes ahead of New Zealand time).
+#
+# Because His Majesty King Taufa'ahau Tupou IV, then Crown Prince
+# Tungi, preferred to ensure Tonga's title as the land where time
+# begins, the Legislative Assembly approved the latter change.
+#
+# But some of the older, more conservative members from the outer
+# islands objected. "If at midnight on Dec. 31, we move ahead 40
+# minutes, as your Royal Highness wishes, what becomes of the 40
+# minutes we have lost?"
+#
+# The Crown Prince, presented an unanswerable argument: "Remember that
+# on the World Day of Prayer, you would be the first people on Earth
+# to say your prayers in the morning."
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say the transition was on 1968-10-01; go with Mundell.
+
+# From Eric Ulevik (1999-05-03):
+# Tonga's director of tourism, who is also secretary of the National Millenium
+# Committee, has a plan to get Tonga back in front.
+# He has proposed a one-off move to tropical daylight saving for Tonga from
+# October to March, which has won approval in principle from the Tongan
+# Government.
+
+# From Steffen Thorsen (1999-09-09):
+# * Tonga will introduce DST in November
+#
+# I was given this link by John Letts:
+# <a href="http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm">
+# http://news.bbc.co.uk/hi/english/world/asia-pacific/newsid_424000/424764.stm
+# </a>
+#
+# I have not been able to find exact dates for the transition in November
+# yet. By reading this article it seems like Fiji will be 14 hours ahead
+# of UTC as well, but as far as I know Fiji will only be 13 hours ahead
+# (12 + 1 hour DST).
+
+# From Arthur David Olson (1999-09-20):
+# According to <a href="http://www.tongaonline.com/news/sept1799.html">
+# http://www.tongaonline.com/news/sept1799.html
+# </a>:
+# "Daylight Savings Time will take effect on Oct. 2 through April 15, 2000
+# and annually thereafter from the first Saturday in October through the
+# third Saturday of April. Under the system approved by Privy Council on
+# Sept. 10, clocks must be turned ahead one hour on the opening day and
+# set back an hour on the closing date."
+# Alas, no indication of the time of day.
+
+# From Rives McDow (1999-10-06):
+# Tonga started its Daylight Saving on Saturday morning October 2nd at 0200am.
+# Daylight Saving ends on April 16 at 0300am which is Sunday morning.
+
+# From Steffen Thorsen (2000-10-31):
+# Back in March I found a notice on the website http://www.tongaonline.com
+# that Tonga changed back to standard time one month early, on March 19
+# instead of the original reported date April 16. Unfortunately, the article
+# is no longer available on the site, and I did not make a copy of the
+# text, and I have forgotten to report it here.
+# (Original URL was: http://www.tongaonline.com/news/march162000.htm )
+
+# From Rives McDow (2000-12-01):
+# Tonga is observing DST as of 2000-11-04 and will stop on 2001-01-27.
+
+# From Sione Moala-Mafi (2001-09-20) via Rives McDow:
+# At 2:00am on the first Sunday of November, the standard time in the Kingdom
+# shall be moved forward by one hour to 3:00am. At 2:00am on the last Sunday
+# of January the standard time in the Kingdom shall be moved backward by one
+# hour to 1:00am.
+
+# From Pulu 'Anau (2002-11-05):
+# The law was for 3 years, supposedly to get renewed. It wasn't.
+
+
+# Wake
+
+# From Vernice Anderson, Personal Secretary to Philip Jessup,
+# US Ambassador At Large (oral history interview, 1971-02-02):
+#
+# Saturday, the 14th [of October, 1950] -- ... The time was all the
+# more confusing at that point, because we had crossed the
+# International Date Line, thus getting two Sundays. Furthermore, we
+# discovered that Wake Island had two hours of daylight saving time
+# making calculation of time in Washington difficult if not almost
+# impossible.
+#
+# http://www.trumanlibrary.org/wake/meeting.htm
+
+# From Paul Eggert (2003-03-23):
+# We have no other report of DST in Wake Island, so omit this info for now.
+
+###############################################################################
+
+# The International Date Line
+
+# From Gwillim Law (2000-01-03):
+#
+# The International Date Line is not defined by any international standard,
+# convention, or treaty. Mapmakers are free to draw it as they please.
+# Reputable mapmakers will simply ensure that every point of land appears on
+# the correct side of the IDL, according to the date legally observed there.
+#
+# When Kiribati adopted a uniform date in 1995, thereby moving the Phoenix and
+# Line Islands to the west side of the IDL (or, if you prefer, moving the IDL
+# to the east side of the Phoenix and Line Islands), I suppose that most
+# mapmakers redrew the IDL following the boundary of Kiribati. Even that line
+# has a rather arbitrary nature. The straight-line boundaries between Pacific
+# island nations that are shown on many maps are based on an international
+# convention, but are not legally binding national borders.... The date is
+# governed by the IDL; therefore, even on the high seas, there may be some
+# places as late as fourteen hours later than UTC. And, since the IDL is not
+# an international standard, there are some places on the high seas where the
+# correct date is ambiguous.
+
+# From Wikipedia <http://en.wikipedia.org/wiki/Time_zone> (2005-08-31):
+# Before 1920, all ships kept local apparent time on the high seas by setting
+# their clocks at night or at the morning sight so that, given the ship's
+# speed and direction, it would be 12 o'clock when the Sun crossed the ship's
+# meridian (12 o'clock = local apparent noon). During 1917, at the
+# Anglo-French Conference on Time-keeping at Sea, it was recommended that all
+# ships, both military and civilian, should adopt hourly standard time zones
+# on the high seas. Whenever a ship was within the territorial waters of any
+# nation it would use that nation's standard time. The captain was permitted
+# to change his ship's clocks at a time of his choice following his ship's
+# entry into another zone time--he often chose midnight. These zones were
+# adopted by all major fleets between 1920 and 1925 but not by many
+# independent merchant ships until World War II.
+
+# From Paul Eggert, using references suggested by Oscar van Vlijmen
+# (2005-03-20):
+#
+# The American Practical Navigator (2002)
+# <http://pollux.nss.nima.mil/pubs/pubs_j_apn_sections.html?rid=187>
+# talks only about the 180-degree meridian with respect to ships in
+# international waters; it ignores the international date line.
diff --git a/share/zoneinfo/backward b/share/zoneinfo/backward
new file mode 100644
index 0000000..a65991c
--- /dev/null
+++ b/share/zoneinfo/backward
@@ -0,0 +1,112 @@
+# @(#)backward 8.6
+
+# This file provides links between current names for time zones
+# and their old names. Many names changed in late 1993.
+
+Link Africa/Asmara Africa/Asmera
+Link Africa/Bamako Africa/Timbuktu
+Link America/Argentina/Catamarca America/Argentina/ComodRivadavia
+Link America/Adak America/Atka
+Link America/Argentina/Buenos_Aires America/Buenos_Aires
+Link America/Argentina/Catamarca America/Catamarca
+Link America/Atikokan America/Coral_Harbour
+Link America/Argentina/Cordoba America/Cordoba
+Link America/Tijuana America/Ensenada
+Link America/Indiana/Indianapolis America/Fort_Wayne
+Link America/Indiana/Indianapolis America/Indianapolis
+Link America/Argentina/Jujuy America/Jujuy
+Link America/Indiana/Knox America/Knox_IN
+Link America/Kentucky/Louisville America/Louisville
+Link America/Argentina/Mendoza America/Mendoza
+Link America/Rio_Branco America/Porto_Acre
+Link America/Argentina/Cordoba America/Rosario
+Link America/St_Thomas America/Virgin
+Link Asia/Ashgabat Asia/Ashkhabad
+Link Asia/Chongqing Asia/Chungking
+Link Asia/Dhaka Asia/Dacca
+Link Asia/Kolkata Asia/Calcutta
+Link Asia/Macau Asia/Macao
+Link Asia/Jerusalem Asia/Tel_Aviv
+Link Asia/Ho_Chi_Minh Asia/Saigon
+Link Asia/Thimphu Asia/Thimbu
+Link Asia/Makassar Asia/Ujung_Pandang
+Link Asia/Ulaanbaatar Asia/Ulan_Bator
+Link Atlantic/Faroe Atlantic/Faeroe
+Link Europe/Oslo Atlantic/Jan_Mayen
+Link Australia/Sydney Australia/ACT
+Link Australia/Sydney Australia/Canberra
+Link Australia/Lord_Howe Australia/LHI
+Link Australia/Sydney Australia/NSW
+Link Australia/Darwin Australia/North
+Link Australia/Brisbane Australia/Queensland
+Link Australia/Adelaide Australia/South
+Link Australia/Hobart Australia/Tasmania
+Link Australia/Melbourne Australia/Victoria
+Link Australia/Perth Australia/West
+Link Australia/Broken_Hill Australia/Yancowinna
+Link America/Rio_Branco Brazil/Acre
+Link America/Noronha Brazil/DeNoronha
+Link America/Sao_Paulo Brazil/East
+Link America/Manaus Brazil/West
+Link America/Halifax Canada/Atlantic
+Link America/Winnipeg Canada/Central
+Link America/Regina Canada/East-Saskatchewan
+Link America/Toronto Canada/Eastern
+Link America/Edmonton Canada/Mountain
+Link America/St_Johns Canada/Newfoundland
+Link America/Vancouver Canada/Pacific
+Link America/Regina Canada/Saskatchewan
+Link America/Whitehorse Canada/Yukon
+Link America/Santiago Chile/Continental
+Link Pacific/Easter Chile/EasterIsland
+Link America/Havana Cuba
+Link Africa/Cairo Egypt
+Link Europe/Dublin Eire
+Link Europe/London Europe/Belfast
+Link Europe/Chisinau Europe/Tiraspol
+Link Europe/London GB
+Link Europe/London GB-Eire
+Link Etc/GMT GMT+0
+Link Etc/GMT GMT-0
+Link Etc/GMT GMT0
+Link Etc/GMT Greenwich
+Link Asia/Hong_Kong Hongkong
+Link Atlantic/Reykjavik Iceland
+Link Asia/Tehran Iran
+Link Asia/Jerusalem Israel
+Link America/Jamaica Jamaica
+Link Asia/Tokyo Japan
+Link Pacific/Kwajalein Kwajalein
+Link Africa/Tripoli Libya
+Link America/Tijuana Mexico/BajaNorte
+Link America/Mazatlan Mexico/BajaSur
+Link America/Mexico_City Mexico/General
+Link Pacific/Auckland NZ
+Link Pacific/Chatham NZ-CHAT
+Link America/Denver Navajo
+Link Asia/Shanghai PRC
+Link Pacific/Pago_Pago Pacific/Samoa
+Link Pacific/Truk Pacific/Yap
+Link Europe/Warsaw Poland
+Link Europe/Lisbon Portugal
+Link Asia/Taipei ROC
+Link Asia/Seoul ROK
+Link Asia/Singapore Singapore
+Link Europe/Istanbul Turkey
+Link Etc/UCT UCT
+Link America/Anchorage US/Alaska
+Link America/Adak US/Aleutian
+Link America/Phoenix US/Arizona
+Link America/Chicago US/Central
+Link America/Indiana/Indianapolis US/East-Indiana
+Link America/New_York US/Eastern
+Link Pacific/Honolulu US/Hawaii
+Link America/Indiana/Knox US/Indiana-Starke
+Link America/Detroit US/Michigan
+Link America/Denver US/Mountain
+Link America/Los_Angeles US/Pacific
+Link Pacific/Pago_Pago US/Samoa
+Link Etc/UTC UTC
+Link Etc/UTC Universal
+Link Europe/Moscow W-SU
+Link Etc/UTC Zulu
diff --git a/share/zoneinfo/etcetera b/share/zoneinfo/etcetera
new file mode 100644
index 0000000..cddbe8a
--- /dev/null
+++ b/share/zoneinfo/etcetera
@@ -0,0 +1,80 @@
+# @(#)etcetera 8.1
+
+# These entries are mostly present for historical reasons, so that
+# people in areas not otherwise covered by the tz files could "zic -l"
+# to a time zone that was right for their area. These days, the
+# tz files cover almost all the inhabited world, and the only practical
+# need now for the entries that are not on UTC are for ships at sea
+# that cannot use POSIX TZ settings.
+
+Zone Etc/GMT 0 - GMT
+Zone Etc/UTC 0 - UTC
+Zone Etc/UCT 0 - UCT
+
+# The following link uses older naming conventions,
+# but it belongs here, not in the file `backward',
+# as functions like gmtime load the "GMT" file to handle leap seconds properly.
+# We want this to work even on installations that omit the other older names.
+Link Etc/GMT GMT
+
+Link Etc/UTC Etc/Universal
+Link Etc/UTC Etc/Zulu
+
+Link Etc/GMT Etc/Greenwich
+Link Etc/GMT Etc/GMT-0
+Link Etc/GMT Etc/GMT+0
+Link Etc/GMT Etc/GMT0
+
+# We use POSIX-style signs in the Zone names and the output abbreviations,
+# even though this is the opposite of what many people expect.
+# POSIX has positive signs west of Greenwich, but many people expect
+# positive signs east of Greenwich. For example, TZ='Etc/GMT+4' uses
+# the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
+# (i.e. west of Greenwich) even though many people would expect it to
+# mean 4 hours ahead of UTC (i.e. east of Greenwich).
+#
+# In the draft 5 of POSIX 1003.1-200x, the angle bracket notation
+# (which is not yet supported by the tz code) allows for
+# TZ='<GMT-4>+4'; if you want time zone abbreviations conforming to
+# ISO 8601 you can use TZ='<-0400>+4'. Thus the commonly-expected
+# offset is kept within the angle bracket (and is used for display)
+# while the POSIX sign is kept outside the angle bracket (and is used
+# for calculation).
+#
+# Do not use a TZ setting like TZ='GMT+4', which is four hours behind
+# GMT but uses the completely misleading abbreviation "GMT".
+
+# Earlier incarnations of this package were not POSIX-compliant,
+# and had lines such as
+# Zone GMT-12 -12 - GMT-1200
+# We did not want things to change quietly if someone accustomed to the old
+# way does a
+# zic -l GMT-12
+# so we moved the names into the Etc subdirectory.
+
+Zone Etc/GMT-14 14 - GMT-14 # 14 hours ahead of GMT
+Zone Etc/GMT-13 13 - GMT-13
+Zone Etc/GMT-12 12 - GMT-12
+Zone Etc/GMT-11 11 - GMT-11
+Zone Etc/GMT-10 10 - GMT-10
+Zone Etc/GMT-9 9 - GMT-9
+Zone Etc/GMT-8 8 - GMT-8
+Zone Etc/GMT-7 7 - GMT-7
+Zone Etc/GMT-6 6 - GMT-6
+Zone Etc/GMT-5 5 - GMT-5
+Zone Etc/GMT-4 4 - GMT-4
+Zone Etc/GMT-3 3 - GMT-3
+Zone Etc/GMT-2 2 - GMT-2
+Zone Etc/GMT-1 1 - GMT-1
+Zone Etc/GMT+1 -1 - GMT+1
+Zone Etc/GMT+2 -2 - GMT+2
+Zone Etc/GMT+3 -3 - GMT+3
+Zone Etc/GMT+4 -4 - GMT+4
+Zone Etc/GMT+5 -5 - GMT+5
+Zone Etc/GMT+6 -6 - GMT+6
+Zone Etc/GMT+7 -7 - GMT+7
+Zone Etc/GMT+8 -8 - GMT+8
+Zone Etc/GMT+9 -9 - GMT+9
+Zone Etc/GMT+10 -10 - GMT+10
+Zone Etc/GMT+11 -11 - GMT+11
+Zone Etc/GMT+12 -12 - GMT+12
diff --git a/share/zoneinfo/europe b/share/zoneinfo/europe
new file mode 100644
index 0000000..7bb9864
--- /dev/null
+++ b/share/zoneinfo/europe
@@ -0,0 +1,2594 @@
+# @(#)europe 8.18
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1991, and IATA SSIM is the source for entries afterwards.
+#
+# Other sources occasionally used include:
+#
+# Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+# which I found in the UCLA library.
+#
+# <a href="http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf">
+# William Willett, The Waste of Daylight, 19th edition
+# </a> (1914-03)
+#
+# Brazil's Departamento Servico da Hora (DSH),
+# <a href="http://pcdsh01.on.br/HISTHV.htm">
+# History of Summer Time
+# </a> (1998-09-21, in Portuguese)
+
+#
+# I invented the abbreviations marked `*' in the following table;
+# the rest are from earlier versions of this file, or from other sources.
+# Corrections are welcome!
+# std dst 2dst
+# LMT Local Mean Time
+# -4:00 AST ADT Atlantic
+# -3:00 WGT WGST Western Greenland*
+# -1:00 EGT EGST Eastern Greenland*
+# 0:00 GMT BST BDST Greenwich, British Summer
+# 0:00 GMT IST Greenwich, Irish Summer
+# 0:00 WET WEST WEMT Western Europe
+# 0:19:32.13 AMT NST Amsterdam, Netherlands Summer (1835-1937)*
+# 0:20 NET NEST Netherlands (1937-1940)*
+# 1:00 CET CEST CEMT Central Europe
+# 1:00:14 SET Swedish (1879-1899)*
+# 2:00 EET EEST Eastern Europe
+# 3:00 MSK MSD Moscow
+#
+# A reliable and entertaining source about time zones, especially in Britain,
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+
+# From Peter Ilieve (1994-12-04),
+# The original six [EU members]: Belgium, France, (West) Germany, Italy,
+# Luxembourg, the Netherlands.
+# Plus, from 1 Jan 73: Denmark, Ireland, United Kingdom.
+# Plus, from 1 Jan 81: Greece.
+# Plus, from 1 Jan 86: Spain, Portugal.
+# Plus, from 1 Jan 95: Austria, Finland, Sweden. (Norway negotiated terms for
+# entry but in a referendum on 28 Nov 94 the people voted No by 52.2% to 47.8%
+# on a turnout of 88.6%. This was almost the same result as Norway's previous
+# referendum in 1972, they are the only country to have said No twice.
+# Referendums in the other three countries voted Yes.)
+# ...
+# Estonia ... uses EU dates but not at 01:00 GMT, they use midnight GMT.
+# I don't think they know yet what they will do from 1996 onwards.
+# ...
+# There shouldn't be any [current members who are not using EU rules].
+# A Directive has the force of law, member states are obliged to enact
+# national law to implement it. The only contentious issue was the
+# different end date for the UK and Ireland, and this was always allowed
+# in the Directive.
+
+
+###############################################################################
+
+# Britain (United Kingdom) and Ireland (Eire)
+
+# From Peter Ilieve (1994-07-06):
+#
+# On 17 Jan 1994 the Independent, a UK quality newspaper, had a piece about
+# historical vistas along the Thames in west London. There was a photo
+# and a sketch map showing some of the sightlines involved. One paragraph
+# of the text said:
+#
+# `An old stone obelisk marking a forgotten terrestrial meridian stands
+# beside the river at Kew. In the 18th century, before time and longitude
+# was standardised by the Royal Observatory in Greenwich, scholars observed
+# this stone and the movement of stars from Kew Observatory nearby. They
+# made their calculations and set the time for the Horse Guards and Parliament,
+# but now the stone is obscured by scrubwood and can only be seen by walking
+# along the towpath within a few yards of it.'
+#
+# I have a one inch to one mile map of London and my estimate of the stone's
+# position is 51 deg. 28' 30" N, 0 deg. 18' 45" W. The longitude should
+# be within about +-2". The Ordnance Survey grid reference is TQ172761.
+#
+# [This yields GMTOFF = -0:01:15 for London LMT in the 18th century.]
+
+# From Paul Eggert (1993-11-18):
+#
+# Howse writes that Britain was the first country to use standard time.
+# The railways cared most about the inconsistencies of local mean time,
+# and it was they who forced a uniform time on the country.
+# The original idea was credited to Dr. William Hyde Wollaston (1766-1828)
+# and was popularized by Abraham Follett Osler (1808-1903).
+# The first railway to adopt London time was the Great Western Railway
+# in November 1840; other railways followed suit, and by 1847 most
+# (though not all) railways used London time. On 1847-09-22 the
+# Railway Clearing House, an industry standards body, recommended that GMT be
+# adopted at all stations as soon as the General Post Office permitted it.
+# The transition occurred on 12-01 for the L&NW, the Caledonian,
+# and presumably other railways; the January 1848 Bradshaw's lists many
+# railways as using GMT. By 1855 the vast majority of public
+# clocks in Britain were set to GMT (though some, like the great clock
+# on Tom Tower at Christ Church, Oxford, were fitted with two minute hands,
+# one for local time and one for GMT). The last major holdout was the legal
+# system, which stubbornly stuck to local time for many years, leading
+# to oddities like polls opening at 08:13 and closing at 16:13.
+# The legal system finally switched to GMT when the Statutes (Definition
+# of Time) Act took effect; it received the Royal Assent on 1880-08-02.
+#
+# In the tables below, we condense this complicated story into a single
+# transition date for London, namely 1847-12-01. We don't know as much
+# about Dublin, so we use 1880-08-02, the legal transition time.
+
+# From Paul Eggert (2003-09-27):
+# Summer Time was first seriously proposed by William Willett (1857-1915),
+# a London builder and member of the Royal Astronomical Society
+# who circulated a pamphlet ``The Waste of Daylight'' (1907)
+# that proposed advancing clocks 20 minutes on each of four Sundays in April,
+# and retarding them by the same amount on four Sundays in September.
+# A bill was drafted in 1909 and introduced in Parliament several times,
+# but it met with ridicule and opposition, especially from farming interests.
+# Later editions of the pamphlet proposed one-hour summer time, and
+# it was eventually adopted as a wartime measure in 1916.
+# See: Summer Time Arrives Early, The Times (2000-05-18).
+# A monument to Willett was unveiled on 1927-05-21, in an open space in
+# a 45-acre wood near Chislehurst, Kent that was purchased by popular
+# subscription and open to the public. On the south face of the monolith,
+# designed by G. W. Miller, is the the William Willett Memorial Sundial,
+# which is permanently set to Summer Time.
+
+# From Winston Churchill (1934-04-28):
+# It is one of the paradoxes of history that we should owe the boon of
+# summer time, which gives every year to the people of this country
+# between 160 and 170 hours more daylight leisure, to a war which
+# plunged Europe into darkness for four years, and shook the
+# foundations of civilization throughout the world.
+# -- <a href="http://www.winstonchurchill.org/fh114willett.htm">
+# "A Silent Toast to William Willett", Pictorial Weekly
+# </a>
+
+# From Paul Eggert (1996-09-03):
+# The OED Supplement says that the English originally said ``Daylight Saving''
+# when they were debating the adoption of DST in 1908; but by 1916 this
+# term appears only in quotes taken from DST's opponents, whereas the
+# proponents (who eventually won the argument) are quoted as using ``Summer''.
+
+# From Arthur David Olson (1989-01-19):
+#
+# A source at the British Information Office in New York avers that it's
+# known as "British" Summer Time in all parts of the United Kingdom.
+
+# Date: 4 Jan 89 08:57:25 GMT (Wed)
+# From: Jonathan Leffler
+# [British Summer Time] is fixed annually by Act of Parliament.
+# If you can predict what Parliament will do, you should be in
+# politics making a fortune, not computing.
+
+# From Chris Carrier (1996-06-14):
+# I remember reading in various wartime issues of the London Times the
+# acronym BDST for British Double Summer Time. Look for the published
+# time of sunrise and sunset in The Times, when BDST was in effect, and
+# if you find a zone reference it will say, "All times B.D.S.T."
+
+# From Joseph S. Myers (1999-09-02):
+# ... some military cables (WO 219/4100 - this is a copy from the
+# main SHAEF archives held in the US National Archives, SHAEF/5252/8/516)
+# agree that the usage is BDST (this appears in a message dated 17 Feb 1945).
+
+# From Joseph S. Myers (2000-10-03):
+# On 18th April 1941, Sir Stephen Tallents of the BBC wrote to Sir
+# Alexander Maxwell of the Home Office asking whether there was any
+# official designation; the reply of the 21st was that there wasn't
+# but he couldn't think of anything better than the "Double British
+# Summer Time" that the BBC had been using informally.
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/bbc-19410418.png
+# http://student.cusu.cam.ac.uk/~jsm28/british-time/ho-19410421.png
+
+# From Sir Alexander Maxwell in the above-mentioned letter (1941-04-21):
+# [N]o official designation has as far as I know been adopted for the time
+# which is to be introduced in May....
+# I cannot think of anything better than "Double British Summer Time"
+# which could not be said to run counter to any official description.
+
+# From Paul Eggert (2000-10-02):
+# Howse writes (p 157) `DBST' too, but `BDST' seems to have been common
+# and follows the more usual convention of putting the location name first,
+# so we use `BDST'.
+
+# Peter Ilieve (1998-04-19) described at length
+# the history of summer time legislation in the United Kingdom.
+# Since 1998 Joseph S. Myers has been updating
+# and extending this list, which can be found in
+# <a href="http://student.cusu.cam.ac.uk/~jsm28/british-time/">
+# History of legal time in Britain
+# </a>
+
+# From Joseph S. Myers (1998-01-06):
+#
+# The legal time in the UK outside of summer time is definitely GMT, not UTC;
+# see Lord Tanlaw's speech
+# <a href="http://www.parliament.the-stationery-office.co.uk/pa/ld199697/ldhansrd/pdvn/lds97/text/70611-20.htm#70611-20_head0">
+# (Lords Hansard 11 June 1997 columns 964 to 976)
+# </a>.
+
+# From Paul Eggert (2006-03-22):
+#
+# For lack of other data, follow Shanks & Pottenger for Eire in 1940-1948.
+#
+# Given Ilieve and Myers's data, the following claims by Shanks & Pottenger
+# are incorrect:
+# * Wales did not switch from GMT to daylight saving time until
+# 1921 Apr 3, when they began to conform with the rest of Great Britain.
+# Actually, Wales was identical after 1880.
+# * Eire had two transitions on 1916 Oct 1.
+# It actually just had one transition.
+# * Northern Ireland used single daylight saving time throughout WW II.
+# Actually, it conformed to Britain.
+# * GB-Eire changed standard time to 1 hour ahead of GMT on 1968-02-18.
+# Actually, that date saw the usual switch to summer time.
+# Standard time was not changed until 1968-10-27 (the clocks didn't change).
+#
+# Here is another incorrect claim by Shanks & Pottenger:
+# * Jersey, Guernsey, and the Isle of Man did not switch from GMT
+# to daylight saving time until 1921 Apr 3, when they began to
+# conform with Great Britain.
+# S.R.&O. 1916, No. 382 and HO 45/10811/312364 (quoted above) say otherwise.
+#
+# The following claim by Shanks & Pottenger is possible though doubtful;
+# we'll ignore it for now.
+# * Dublin's 1971-10-31 switch was at 02:00, even though London's was 03:00.
+#
+#
+# Whitman says Dublin Mean Time was -0:25:21, which is more precise than
+# Shanks & Pottenger.
+# Perhaps this was Dunsink Observatory Time, as Dunsink Observatory
+# (8 km NW of Dublin's center) seemingly was to Dublin as Greenwich was
+# to London. For example:
+#
+# "Timeball on the ballast office is down. Dunsink time."
+# -- James Joyce, Ulysses
+
+# From Joseph S. Myers (2005-01-26):
+# Irish laws are available online at www.irishstatutebook.ie. These include
+# various relating to legal time, for example:
+#
+# ZZA13Y1923.html ZZA12Y1924.html ZZA8Y1925.html ZZSIV20PG1267.html
+#
+# ZZSI71Y1947.html ZZSI128Y1948.html ZZSI23Y1949.html ZZSI41Y1950.html
+# ZZSI27Y1951.html ZZSI73Y1952.html
+#
+# ZZSI11Y1961.html ZZSI232Y1961.html ZZSI182Y1962.html
+# ZZSI167Y1963.html ZZSI257Y1964.html ZZSI198Y1967.html
+# ZZA23Y1968.html ZZA17Y1971.html
+#
+# ZZSI67Y1981.html ZZSI212Y1982.html ZZSI45Y1986.html
+# ZZSI264Y1988.html ZZSI52Y1990.html ZZSI371Y1992.html
+# ZZSI395Y1994.html ZZSI484Y1997.html ZZSI506Y2001.html
+#
+# [These are all relative to the root, e.g., the first is
+# <http://www.irishstatutebook.ie/ZZA13Y1923.html>.]
+#
+# (These are those I found, but there could be more. In any case these
+# should allow various updates to the comments in the europe file to cover
+# the laws applicable in Ireland.)
+#
+# (Note that the time in the Republic of Ireland since 1968 has been defined
+# in terms of standard time being GMT+1 with a period of winter time when it
+# is GMT, rather than standard time being GMT with a period of summer time
+# being GMT+1.)
+
+# From Paul Eggert (1999-03-28):
+# Clive Feather (<news:859845706.26043.0@office.demon.net>, 1997-03-31)
+# reports that Folkestone (Cheriton) Shuttle Terminal uses Concession Time
+# (CT), equivalent to French civil time.
+# Julian Hill (<news:36118128.5A14@virgin.net>, 1998-09-30) reports that
+# trains between Dollands Moor (the freight facility next door)
+# and Frethun run in CT.
+# My admittedly uninformed guess is that the terminal has two authorities,
+# the French concession operators and the British civil authorities,
+# and that the time depends on who you're talking to.
+# If, say, the British police were called to the station for some reason,
+# I would expect the official police report to use GMT/BST and not CET/CEST.
+# This is a borderline case, but for now let's stick to GMT/BST.
+
+# From an anonymous contributor (1996-06-02):
+# The law governing time in Ireland is under Statutory Instrument SI 395/94,
+# which gives force to European Union 7th Council Directive # 94/21/EC.
+# Under this directive, the Minister for Justice in Ireland makes appropriate
+# regulations. I spoke this morning with the Secretary of the Department of
+# Justice (tel +353 1 678 9711) who confirmed to me that the correct name is
+# "Irish Summer Time", abbreviated to "IST".
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Summer Time Act, 1916
+Rule GB-Eire 1916 only - May 21 2:00s 1:00 BST
+Rule GB-Eire 1916 only - Oct 1 2:00s 0 GMT
+# S.R.&O. 1917, No. 358
+Rule GB-Eire 1917 only - Apr 8 2:00s 1:00 BST
+Rule GB-Eire 1917 only - Sep 17 2:00s 0 GMT
+# S.R.&O. 1918, No. 274
+Rule GB-Eire 1918 only - Mar 24 2:00s 1:00 BST
+Rule GB-Eire 1918 only - Sep 30 2:00s 0 GMT
+# S.R.&O. 1919, No. 297
+Rule GB-Eire 1919 only - Mar 30 2:00s 1:00 BST
+Rule GB-Eire 1919 only - Sep 29 2:00s 0 GMT
+# S.R.&O. 1920, No. 458
+Rule GB-Eire 1920 only - Mar 28 2:00s 1:00 BST
+# S.R.&O. 1920, No. 1844
+Rule GB-Eire 1920 only - Oct 25 2:00s 0 GMT
+# S.R.&O. 1921, No. 363
+Rule GB-Eire 1921 only - Apr 3 2:00s 1:00 BST
+Rule GB-Eire 1921 only - Oct 3 2:00s 0 GMT
+# S.R.&O. 1922, No. 264
+Rule GB-Eire 1922 only - Mar 26 2:00s 1:00 BST
+Rule GB-Eire 1922 only - Oct 8 2:00s 0 GMT
+# The Summer Time Act, 1922
+Rule GB-Eire 1923 only - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1923 1924 - Sep Sun>=16 2:00s 0 GMT
+Rule GB-Eire 1924 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1925 1926 - Apr Sun>=16 2:00s 1:00 BST
+# The Summer Time Act, 1925
+Rule GB-Eire 1925 1938 - Oct Sun>=2 2:00s 0 GMT
+Rule GB-Eire 1927 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1928 1929 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1930 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1931 1932 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1933 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1934 only - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1935 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1936 1937 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1938 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1939 only - Apr Sun>=16 2:00s 1:00 BST
+# S.R.&O. 1939, No. 1379
+Rule GB-Eire 1939 only - Nov Sun>=16 2:00s 0 GMT
+# S.R.&O. 1940, No. 172 and No. 1883
+Rule GB-Eire 1940 only - Feb Sun>=23 2:00s 1:00 BST
+# S.R.&O. 1941, No. 476
+Rule GB-Eire 1941 only - May Sun>=2 1:00s 2:00 BDST
+Rule GB-Eire 1941 1943 - Aug Sun>=9 1:00s 1:00 BST
+# S.R.&O. 1942, No. 506
+Rule GB-Eire 1942 1944 - Apr Sun>=2 1:00s 2:00 BDST
+# S.R.&O. 1944, No. 932
+Rule GB-Eire 1944 only - Sep Sun>=16 1:00s 1:00 BST
+# S.R.&O. 1945, No. 312
+Rule GB-Eire 1945 only - Apr Mon>=2 1:00s 2:00 BDST
+Rule GB-Eire 1945 only - Jul Sun>=9 1:00s 1:00 BST
+# S.R.&O. 1945, No. 1208
+Rule GB-Eire 1945 1946 - Oct Sun>=2 2:00s 0 GMT
+Rule GB-Eire 1946 only - Apr Sun>=9 2:00s 1:00 BST
+# The Summer Time Act, 1947
+Rule GB-Eire 1947 only - Mar 16 2:00s 1:00 BST
+Rule GB-Eire 1947 only - Apr 13 1:00s 2:00 BDST
+Rule GB-Eire 1947 only - Aug 10 1:00s 1:00 BST
+Rule GB-Eire 1947 only - Nov 2 2:00s 0 GMT
+# Summer Time Order, 1948 (S.I. 1948/495)
+Rule GB-Eire 1948 only - Mar 14 2:00s 1:00 BST
+Rule GB-Eire 1948 only - Oct 31 2:00s 0 GMT
+# Summer Time Order, 1949 (S.I. 1949/373)
+Rule GB-Eire 1949 only - Apr 3 2:00s 1:00 BST
+Rule GB-Eire 1949 only - Oct 30 2:00s 0 GMT
+# Summer Time Order, 1950 (S.I. 1950/518)
+# Summer Time Order, 1951 (S.I. 1951/430)
+# Summer Time Order, 1952 (S.I. 1952/451)
+Rule GB-Eire 1950 1952 - Apr Sun>=14 2:00s 1:00 BST
+Rule GB-Eire 1950 1952 - Oct Sun>=21 2:00s 0 GMT
+# revert to the rules of the Summer Time Act, 1925
+Rule GB-Eire 1953 only - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1953 1960 - Oct Sun>=2 2:00s 0 GMT
+Rule GB-Eire 1954 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1955 1956 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1957 only - Apr Sun>=9 2:00s 1:00 BST
+Rule GB-Eire 1958 1959 - Apr Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1960 only - Apr Sun>=9 2:00s 1:00 BST
+# Summer Time Order, 1961 (S.I. 1961/71)
+# Summer Time (1962) Order, 1961 (S.I. 1961/2465)
+# Summer Time Order, 1963 (S.I. 1963/81)
+Rule GB-Eire 1961 1963 - Mar lastSun 2:00s 1:00 BST
+Rule GB-Eire 1961 1968 - Oct Sun>=23 2:00s 0 GMT
+# Summer Time (1964) Order, 1963 (S.I. 1963/2101)
+# Summer Time Order, 1964 (S.I. 1964/1201)
+# Summer Time Order, 1967 (S.I. 1967/1148)
+Rule GB-Eire 1964 1967 - Mar Sun>=19 2:00s 1:00 BST
+# Summer Time Order, 1968 (S.I. 1968/117)
+Rule GB-Eire 1968 only - Feb 18 2:00s 1:00 BST
+# The British Standard Time Act, 1968
+# (no summer time)
+# The Summer Time Act, 1972
+Rule GB-Eire 1972 1980 - Mar Sun>=16 2:00s 1:00 BST
+Rule GB-Eire 1972 1980 - Oct Sun>=23 2:00s 0 GMT
+# Summer Time Order, 1980 (S.I. 1980/1089)
+# Summer Time Order, 1982 (S.I. 1982/1673)
+# Summer Time Order, 1986 (S.I. 1986/223)
+# Summer Time Order, 1988 (S.I. 1988/931)
+Rule GB-Eire 1981 1995 - Mar lastSun 1:00u 1:00 BST
+Rule GB-Eire 1981 1989 - Oct Sun>=23 1:00u 0 GMT
+# Summer Time Order, 1989 (S.I. 1989/985)
+# Summer Time Order, 1992 (S.I. 1992/1729)
+# Summer Time Order 1994 (S.I. 1994/2798)
+Rule GB-Eire 1990 1995 - Oct Sun>=22 1:00u 0 GMT
+# Summer Time Order 1997 (S.I. 1997/2982)
+# See EU for rules starting in 1996.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/London -0:01:15 - LMT 1847 Dec 1 0:00s
+ 0:00 GB-Eire %s 1968 Oct 27
+ 1:00 - BST 1971 Oct 31 2:00u
+ 0:00 GB-Eire %s 1996
+ 0:00 EU GMT/BST
+Link Europe/London Europe/Jersey
+Link Europe/London Europe/Guernsey
+Link Europe/London Europe/Isle_of_Man
+Zone Europe/Dublin -0:25:00 - LMT 1880 Aug 2
+ -0:25:21 - DMT 1916 May 21 2:00
+ -0:25:21 1:00 IST 1916 Oct 1 2:00s
+ 0:00 GB-Eire %s 1921 Dec 6 # independence
+ 0:00 GB-Eire GMT/IST 1940 Feb 25 2:00
+ 0:00 1:00 IST 1946 Oct 6 2:00
+ 0:00 - GMT 1947 Mar 16 2:00
+ 0:00 1:00 IST 1947 Nov 2 2:00
+ 0:00 - GMT 1948 Apr 18 2:00
+ 0:00 GB-Eire GMT/IST 1968 Oct 27
+ 1:00 - IST 1971 Oct 31 2:00u
+ 0:00 GB-Eire GMT/IST 1996
+ 0:00 EU GMT/IST
+
+###############################################################################
+
+# Europe
+
+# EU rules are for the European Union, previously known as the EC, EEC,
+# Common Market, etc.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule EU 1977 1980 - Apr Sun>=1 1:00u 1:00 S
+Rule EU 1977 only - Sep lastSun 1:00u 0 -
+Rule EU 1978 only - Oct 1 1:00u 0 -
+Rule EU 1979 1995 - Sep lastSun 1:00u 0 -
+Rule EU 1981 max - Mar lastSun 1:00u 1:00 S
+Rule EU 1996 max - Oct lastSun 1:00u 0 -
+# The most recent directive covers the years starting in 2002. See:
+# <a href="http://europa.eu.int/eur-lex/en/lif/dat/2000/en_300L0084.html">
+# Directive 2000/84/EC of the European Parliament and of the Council
+# of 19 January 2001 on summer-time arrangements.
+# </a>
+
+# W-Eur differs from EU only in that W-Eur uses standard time.
+Rule W-Eur 1977 1980 - Apr Sun>=1 1:00s 1:00 S
+Rule W-Eur 1977 only - Sep lastSun 1:00s 0 -
+Rule W-Eur 1978 only - Oct 1 1:00s 0 -
+Rule W-Eur 1979 1995 - Sep lastSun 1:00s 0 -
+Rule W-Eur 1981 max - Mar lastSun 1:00s 1:00 S
+Rule W-Eur 1996 max - Oct lastSun 1:00s 0 -
+
+# Older C-Eur rules are for convenience in the tables.
+# From 1977 on, C-Eur differs from EU only in that C-Eur uses standard time.
+Rule C-Eur 1916 only - Apr 30 23:00 1:00 S
+Rule C-Eur 1916 only - Oct 1 1:00 0 -
+Rule C-Eur 1917 1918 - Apr Mon>=15 2:00s 1:00 S
+Rule C-Eur 1917 1918 - Sep Mon>=15 2:00s 0 -
+Rule C-Eur 1940 only - Apr 1 2:00s 1:00 S
+Rule C-Eur 1942 only - Nov 2 2:00s 0 -
+Rule C-Eur 1943 only - Mar 29 2:00s 1:00 S
+Rule C-Eur 1943 only - Oct 4 2:00s 0 -
+Rule C-Eur 1944 1945 - Apr Mon>=1 2:00s 1:00 S
+# Whitman gives 1944 Oct 7; go with Shanks & Pottenger.
+Rule C-Eur 1944 only - Oct 2 2:00s 0 -
+# From Jesper Norgaard Welen (2008-07-13):
+#
+# I found what is probably a typo of 2:00 which should perhaps be 2:00s
+# in the C-Eur rule from tz database version 2008d (this part was
+# corrected in version 2008d). The circumstancial evidence is simply the
+# tz database itself, as seen below:
+#
+# Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
+# 0:00 France WE%sT 1945 Sep 16 3:00
+#
+# Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+# 0:00 France WE%sT 1945 Sep 16 3:00
+#
+# Zone Europe/Belgrade 1:22:00 - LMT 1884
+# 1:00 1:00 CEST 1945 Sep 16 2:00s
+#
+# Rule France 1945 only - Sep 16 3:00 0 -
+# Rule Belgium 1945 only - Sep 16 2:00s 0 -
+# Rule Neth 1945 only - Sep 16 2:00s 0 -
+#
+# The rule line to be changed is:
+#
+# Rule C-Eur 1945 only - Sep 16 2:00 0 -
+#
+# It seems that Paris, Monaco, Rule France, Rule Belgium all agree on
+# 2:00 standard time, e.g. 3:00 local time. However there are no
+# countries that use C-Eur rules in September 1945, so the only items
+# affected are apparently these ficticious zones that translates acronyms
+# CET and MET:
+#
+# Zone CET 1:00 C-Eur CE%sT
+# Zone MET 1:00 C-Eur ME%sT
+#
+# It this is right then the corrected version would look like:
+#
+# Rule C-Eur 1945 only - Sep 16 2:00s 0 -
+#
+# A small step for mankind though 8-)
+Rule C-Eur 1945 only - Sep 16 2:00s 0 -
+Rule C-Eur 1977 1980 - Apr Sun>=1 2:00s 1:00 S
+Rule C-Eur 1977 only - Sep lastSun 2:00s 0 -
+Rule C-Eur 1978 only - Oct 1 2:00s 0 -
+Rule C-Eur 1979 1995 - Sep lastSun 2:00s 0 -
+Rule C-Eur 1981 max - Mar lastSun 2:00s 1:00 S
+Rule C-Eur 1996 max - Oct lastSun 2:00s 0 -
+
+# E-Eur differs from EU only in that E-Eur switches at midnight local time.
+Rule E-Eur 1977 1980 - Apr Sun>=1 0:00 1:00 S
+Rule E-Eur 1977 only - Sep lastSun 0:00 0 -
+Rule E-Eur 1978 only - Oct 1 0:00 0 -
+Rule E-Eur 1979 1995 - Sep lastSun 0:00 0 -
+Rule E-Eur 1981 max - Mar lastSun 0:00 1:00 S
+Rule E-Eur 1996 max - Oct lastSun 0:00 0 -
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Russia 1917 only - Jul 1 23:00 1:00 MST # Moscow Summer Time
+Rule Russia 1917 only - Dec 28 0:00 0 MMT # Moscow Mean Time
+Rule Russia 1918 only - May 31 22:00 2:00 MDST # Moscow Double Summer Time
+Rule Russia 1918 only - Sep 16 1:00 1:00 MST
+Rule Russia 1919 only - May 31 23:00 2:00 MDST
+Rule Russia 1919 only - Jul 1 2:00 1:00 S
+Rule Russia 1919 only - Aug 16 0:00 0 -
+Rule Russia 1921 only - Feb 14 23:00 1:00 S
+Rule Russia 1921 only - Mar 20 23:00 2:00 M # Midsummer
+Rule Russia 1921 only - Sep 1 0:00 1:00 S
+Rule Russia 1921 only - Oct 1 0:00 0 -
+# Act No.925 of the Council of Ministers of the USSR (1980-10-24):
+Rule Russia 1981 1984 - Apr 1 0:00 1:00 S
+Rule Russia 1981 1983 - Oct 1 0:00 0 -
+# Act No.967 of the Council of Ministers of the USSR (1984-09-13), repeated in
+# Act No.227 of the Council of Ministers of the USSR (1989-03-14):
+Rule Russia 1984 1991 - Sep lastSun 2:00s 0 -
+Rule Russia 1985 1991 - Mar lastSun 2:00s 1:00 S
+#
+Rule Russia 1992 only - Mar lastSat 23:00 1:00 S
+Rule Russia 1992 only - Sep lastSat 23:00 0 -
+Rule Russia 1993 max - Mar lastSun 2:00s 1:00 S
+Rule Russia 1993 1995 - Sep lastSun 2:00s 0 -
+Rule Russia 1996 max - Oct lastSun 2:00s 0 -
+
+# These are for backward compatibility with older versions.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone WET 0:00 EU WE%sT
+Zone CET 1:00 C-Eur CE%sT
+Zone MET 1:00 C-Eur ME%sT
+Zone EET 2:00 EU EE%sT
+
+# Previous editions of this database used abbreviations like MET DST
+# for Central European Summer Time, but this didn't agree with common usage.
+
+# From Markus Kuhn (1996-07-12):
+# The official German names ... are
+#
+# Mitteleuropaeische Zeit (MEZ) = UTC+01:00
+# Mitteleuropaeische Sommerzeit (MESZ) = UTC+02:00
+#
+# as defined in the German Time Act (Gesetz ueber die Zeitbestimmung (ZeitG),
+# 1978-07-25, Bundesgesetzblatt, Jahrgang 1978, Teil I, S. 1110-1111)....
+# I wrote ... to the German Federal Physical-Technical Institution
+#
+# Physikalisch-Technische Bundesanstalt (PTB)
+# Laboratorium 4.41 "Zeiteinheit"
+# Postfach 3345
+# D-38023 Braunschweig
+# phone: +49 531 592-0
+#
+# ... I received today an answer letter from Dr. Peter Hetzel, head of the PTB
+# department for time and frequency transmission. He explained that the
+# PTB translates MEZ and MESZ into English as
+#
+# Central European Time (CET) = UTC+01:00
+# Central European Summer Time (CEST) = UTC+02:00
+
+
+# Albania
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Albania 1940 only - Jun 16 0:00 1:00 S
+Rule Albania 1942 only - Nov 2 3:00 0 -
+Rule Albania 1943 only - Mar 29 2:00 1:00 S
+Rule Albania 1943 only - Apr 10 3:00 0 -
+Rule Albania 1974 only - May 4 0:00 1:00 S
+Rule Albania 1974 only - Oct 2 0:00 0 -
+Rule Albania 1975 only - May 1 0:00 1:00 S
+Rule Albania 1975 only - Oct 2 0:00 0 -
+Rule Albania 1976 only - May 2 0:00 1:00 S
+Rule Albania 1976 only - Oct 3 0:00 0 -
+Rule Albania 1977 only - May 8 0:00 1:00 S
+Rule Albania 1977 only - Oct 2 0:00 0 -
+Rule Albania 1978 only - May 6 0:00 1:00 S
+Rule Albania 1978 only - Oct 1 0:00 0 -
+Rule Albania 1979 only - May 5 0:00 1:00 S
+Rule Albania 1979 only - Sep 30 0:00 0 -
+Rule Albania 1980 only - May 3 0:00 1:00 S
+Rule Albania 1980 only - Oct 4 0:00 0 -
+Rule Albania 1981 only - Apr 26 0:00 1:00 S
+Rule Albania 1981 only - Sep 27 0:00 0 -
+Rule Albania 1982 only - May 2 0:00 1:00 S
+Rule Albania 1982 only - Oct 3 0:00 0 -
+Rule Albania 1983 only - Apr 18 0:00 1:00 S
+Rule Albania 1983 only - Oct 1 0:00 0 -
+Rule Albania 1984 only - Apr 1 0:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Tirane 1:19:20 - LMT 1914
+ 1:00 - CET 1940 Jun 16
+ 1:00 Albania CE%sT 1984 Jul
+ 1:00 EU CE%sT
+
+# Andorra
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Andorra 0:06:04 - LMT 1901
+ 0:00 - WET 1946 Sep 30
+ 1:00 - CET 1985 Mar 31 2:00
+ 1:00 EU CE%sT
+
+# Austria
+
+# From Paul Eggert (2006-03-22): Shanks & Pottenger give 1918-06-16 and
+# 1945-11-18, but the Austrian Federal Office of Metrology and
+# Surveying (BEV) gives 1918-09-16 and for Vienna gives the "alleged"
+# date of 1945-04-12 with no time. For the 1980-04-06 transition
+# Shanks & Pottenger give 02:00, the BEV 00:00. Go with the BEV,
+# and guess 02:00 for 1945-04-12.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Austria 1920 only - Apr 5 2:00s 1:00 S
+Rule Austria 1920 only - Sep 13 2:00s 0 -
+Rule Austria 1946 only - Apr 14 2:00s 1:00 S
+Rule Austria 1946 1948 - Oct Sun>=1 2:00s 0 -
+Rule Austria 1947 only - Apr 6 2:00s 1:00 S
+Rule Austria 1948 only - Apr 18 2:00s 1:00 S
+Rule Austria 1980 only - Apr 6 0:00 1:00 S
+Rule Austria 1980 only - Sep 28 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Vienna 1:05:20 - LMT 1893 Apr
+ 1:00 C-Eur CE%sT 1920
+ 1:00 Austria CE%sT 1940 Apr 1 2:00s
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00s
+ 1:00 1:00 CEST 1945 Apr 12 2:00s
+ 1:00 - CET 1946
+ 1:00 Austria CE%sT 1981
+ 1:00 EU CE%sT
+
+# Belarus
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Minsk 1:50:16 - LMT 1880
+ 1:50 - MMT 1924 May 2 # Minsk Mean Time
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Jun 28
+ 1:00 C-Eur CE%sT 1944 Jul 3
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1991 Mar 31 2:00s
+ 2:00 1:00 EEST 1991 Sep 29 2:00s
+ 2:00 - EET 1992 Mar 29 0:00s
+ 2:00 1:00 EEST 1992 Sep 27 0:00s
+ 2:00 Russia EE%sT
+
+# Belgium
+#
+# From Paul Eggert (1997-07-02):
+# Entries from 1918 through 1991 are taken from:
+# Annuaire de L'Observatoire Royal de Belgique,
+# Avenue Circulaire, 3, B-1180 BRUXELLES, CLVIIe annee, 1991
+# (Imprimerie HAYEZ, s.p.r.l., Rue Fin, 4, 1080 BRUXELLES, MCMXC),
+# pp 8-9.
+# LMT before 1892 was 0:17:30, according to the official journal of Belgium:
+# Moniteur Belge, Samedi 30 Avril 1892, N.121.
+# Thanks to Pascal Delmoitie for these references.
+# The 1918 rules are listed for completeness; they apply to unoccupied Belgium.
+# Assume Brussels switched to WET in 1918 when the armistice took effect.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Belgium 1918 only - Mar 9 0:00s 1:00 S
+Rule Belgium 1918 1919 - Oct Sat>=1 23:00s 0 -
+Rule Belgium 1919 only - Mar 1 23:00s 1:00 S
+Rule Belgium 1920 only - Feb 14 23:00s 1:00 S
+Rule Belgium 1920 only - Oct 23 23:00s 0 -
+Rule Belgium 1921 only - Mar 14 23:00s 1:00 S
+Rule Belgium 1921 only - Oct 25 23:00s 0 -
+Rule Belgium 1922 only - Mar 25 23:00s 1:00 S
+Rule Belgium 1922 1927 - Oct Sat>=1 23:00s 0 -
+Rule Belgium 1923 only - Apr 21 23:00s 1:00 S
+Rule Belgium 1924 only - Mar 29 23:00s 1:00 S
+Rule Belgium 1925 only - Apr 4 23:00s 1:00 S
+# DSH writes that a royal decree of 1926-02-22 specified the Sun following 3rd
+# Sat in Apr (except if it's Easter, in which case it's one Sunday earlier),
+# to Sun following 1st Sat in Oct, and that a royal decree of 1928-09-15
+# changed the transition times to 02:00 GMT.
+Rule Belgium 1926 only - Apr 17 23:00s 1:00 S
+Rule Belgium 1927 only - Apr 9 23:00s 1:00 S
+Rule Belgium 1928 only - Apr 14 23:00s 1:00 S
+Rule Belgium 1928 1938 - Oct Sun>=2 2:00s 0 -
+Rule Belgium 1929 only - Apr 21 2:00s 1:00 S
+Rule Belgium 1930 only - Apr 13 2:00s 1:00 S
+Rule Belgium 1931 only - Apr 19 2:00s 1:00 S
+Rule Belgium 1932 only - Apr 3 2:00s 1:00 S
+Rule Belgium 1933 only - Mar 26 2:00s 1:00 S
+Rule Belgium 1934 only - Apr 8 2:00s 1:00 S
+Rule Belgium 1935 only - Mar 31 2:00s 1:00 S
+Rule Belgium 1936 only - Apr 19 2:00s 1:00 S
+Rule Belgium 1937 only - Apr 4 2:00s 1:00 S
+Rule Belgium 1938 only - Mar 27 2:00s 1:00 S
+Rule Belgium 1939 only - Apr 16 2:00s 1:00 S
+Rule Belgium 1939 only - Nov 19 2:00s 0 -
+Rule Belgium 1940 only - Feb 25 2:00s 1:00 S
+Rule Belgium 1944 only - Sep 17 2:00s 0 -
+Rule Belgium 1945 only - Apr 2 2:00s 1:00 S
+Rule Belgium 1945 only - Sep 16 2:00s 0 -
+Rule Belgium 1946 only - May 19 2:00s 1:00 S
+Rule Belgium 1946 only - Oct 7 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Brussels 0:17:30 - LMT 1880
+ 0:17:30 - BMT 1892 May 1 12:00 # Brussels MT
+ 0:00 - WET 1914 Nov 8
+ 1:00 - CET 1916 May 1 0:00
+ 1:00 C-Eur CE%sT 1918 Nov 11 11:00u
+ 0:00 Belgium WE%sT 1940 May 20 2:00s
+ 1:00 C-Eur CE%sT 1944 Sep 3
+ 1:00 Belgium CE%sT 1977
+ 1:00 EU CE%sT
+
+# Bosnia and Herzegovina
+# see Serbia
+
+# Bulgaria
+#
+# From Plamen Simenov via Steffen Thorsen (1999-09-09):
+# A document of Government of Bulgaria (No.94/1997) says:
+# EET --> EETDST is in 03:00 Local time in last Sunday of March ...
+# EETDST --> EET is in 04:00 Local time in last Sunday of October
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Bulg 1979 only - Mar 31 23:00 1:00 S
+Rule Bulg 1979 only - Oct 1 1:00 0 -
+Rule Bulg 1980 1982 - Apr Sat>=1 23:00 1:00 S
+Rule Bulg 1980 only - Sep 29 1:00 0 -
+Rule Bulg 1981 only - Sep 27 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Sofia 1:33:16 - LMT 1880
+ 1:56:56 - IMT 1894 Nov 30 # Istanbul MT?
+ 2:00 - EET 1942 Nov 2 3:00
+ 1:00 C-Eur CE%sT 1945
+ 1:00 - CET 1945 Apr 2 3:00
+ 2:00 - EET 1979 Mar 31 23:00
+ 2:00 Bulg EE%sT 1982 Sep 26 2:00
+ 2:00 C-Eur EE%sT 1991
+ 2:00 E-Eur EE%sT 1997
+ 2:00 EU EE%sT
+
+# Croatia
+# see Serbia
+
+# Cyprus
+# Please see the `asia' file for Asia/Nicosia.
+
+# Czech Republic
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Czech 1945 only - Apr 8 2:00s 1:00 S
+Rule Czech 1945 only - Nov 18 2:00s 0 -
+Rule Czech 1946 only - May 6 2:00s 1:00 S
+Rule Czech 1946 1949 - Oct Sun>=1 2:00s 0 -
+Rule Czech 1947 only - Apr 20 2:00s 1:00 S
+Rule Czech 1948 only - Apr 18 2:00s 1:00 S
+Rule Czech 1949 only - Apr 9 2:00s 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Prague 0:57:44 - LMT 1850
+ 0:57:44 - PMT 1891 Oct # Prague Mean Time
+ 1:00 C-Eur CE%sT 1944 Sep 17 2:00s
+ 1:00 Czech CE%sT 1979
+ 1:00 EU CE%sT
+
+# Denmark, Faroe Islands, and Greenland
+
+# From Jesper Norgaard Welen (2005-04-26):
+# http://www.hum.aau.dk/~poe/tid/tine/DanskTid.htm says that the law
+# [introducing standard time] was in effect from 1894-01-01....
+# The page http://www.retsinfo.dk/_GETDOCI_/ACCN/A18930008330-REGL
+# confirms this, and states that the law was put forth 1893-03-29.
+#
+# The EU treaty with effect from 1973:
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19722110030-REGL
+#
+# This provoked a new law from 1974 to make possible summer time changes
+# in subsequenet decrees with the law
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/A19740022330-REGL
+#
+# It seems however that no decree was set forward until 1980. I have
+# not found any decree, but in another related law, the effecting DST
+# changes are stated explicitly to be from 1980-04-06 at 02:00 to
+# 1980-09-28 at 02:00. If this is true, this differs slightly from
+# the EU rule in that DST runs to 02:00, not 03:00. We don't know
+# when Denmark began using the EU rule correctly, but we have only
+# confirmation of the 1980-time, so I presume it was correct in 1981:
+# The law is about the management of the extra hour, concerning
+# working hours reported and effect on obligatory-rest rules (which
+# was suspended on that night):
+# http://www.retsinfo.dk/_GETDOCI_/ACCN/C19801120554-REGL
+
+# From Jesper Norgaard Welen (2005-06-11):
+# The Herning Folkeblad (1980-09-26) reported that the night between
+# Saturday and Sunday the clock is set back from three to two.
+
+# From Paul Eggert (2005-06-11):
+# Hence the "02:00" of the 1980 law refers to standard time, not
+# wall-clock time, and so the EU rules were in effect in 1980.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Denmark 1916 only - May 14 23:00 1:00 S
+Rule Denmark 1916 only - Sep 30 23:00 0 -
+Rule Denmark 1940 only - May 15 0:00 1:00 S
+Rule Denmark 1945 only - Apr 2 2:00s 1:00 S
+Rule Denmark 1945 only - Aug 15 2:00s 0 -
+Rule Denmark 1946 only - May 1 2:00s 1:00 S
+Rule Denmark 1946 only - Sep 1 2:00s 0 -
+Rule Denmark 1947 only - May 4 2:00s 1:00 S
+Rule Denmark 1947 only - Aug 10 2:00s 0 -
+Rule Denmark 1948 only - May 9 2:00s 1:00 S
+Rule Denmark 1948 only - Aug 8 2:00s 0 -
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Copenhagen 0:50:20 - LMT 1890
+ 0:50:20 - CMT 1894 Jan 1 # Copenhagen MT
+ 1:00 Denmark CE%sT 1942 Nov 2 2:00s
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+ 1:00 Denmark CE%sT 1980
+ 1:00 EU CE%sT
+Zone Atlantic/Faroe -0:27:04 - LMT 1908 Jan 11 # Torshavn
+ 0:00 - WET 1981
+ 0:00 EU WE%sT
+#
+# From Paul Eggert (2004-10-31):
+# During World War II, Germany maintained secret manned weather stations in
+# East Greenland and Franz Josef Land, but we don't know their time zones.
+# My source for this is Wilhelm Dege's book mentioned under Svalbard.
+#
+# From Paul Eggert (2006-03-22):
+# Greenland joined the EU as part of Denmark, obtained home rule on 1979-05-01,
+# and left the EU on 1985-02-01. It therefore should have been using EU
+# rules at least through 1984. Shanks & Pottenger say Scoresbysund and Godthab
+# used C-Eur rules after 1980, but IATA SSIM (1991/1996) says they use EU
+# rules since at least 1991. Assume EU rules since 1980.
+
+# From Gwillin Law (2001-06-06), citing
+# <http://www.statkart.no/efs/efshefter/2001/efs5-2001.pdf> (2001-03-15),
+# and with translations corrected by Steffen Thorsen:
+#
+# Greenland has four local times, and the relation to UTC
+# is according to the following time line:
+#
+# The military zone near Thule UTC-4
+# Standard Greenland time UTC-3
+# Scoresbysund UTC-1
+# Danmarkshavn UTC
+#
+# In the military area near Thule and in Danmarkshavn DST will not be
+# introduced.
+
+# From Rives McDow (2001-11-01):
+#
+# I correspond regularly with the Dansk Polarcenter, and wrote them at
+# the time to clarify the situation in Thule. Unfortunately, I have
+# not heard back from them regarding my recent letter. [But I have
+# info from earlier correspondence.]
+#
+# According to the center, a very small local time zone around Thule
+# Air Base keeps the time according to UTC-4, implementing daylight
+# savings using North America rules, changing the time at 02:00 local time....
+#
+# The east coast of Greenland north of the community of Scoresbysund
+# uses UTC in the same way as in Iceland, year round, with no dst.
+# There are just a few stations on this coast, including the
+# Danmarkshavn ICAO weather station mentioned in your September 29th
+# email. The other stations are two sledge patrol stations in
+# Mestersvig and Daneborg, the air force base at Station Nord, and the
+# DPC research station at Zackenberg.
+#
+# Scoresbysund and two small villages nearby keep time UTC-1 and use
+# the same daylight savings time period as in West Greenland (Godthab).
+#
+# The rest of Greenland, including Godthab (this area, although it
+# includes central Greenland, is known as west Greenland), keeps time
+# UTC-3, with daylight savings methods according to European rules.
+#
+# It is common procedure to use UTC 0 in the wilderness of East and
+# North Greenland, because it is mainly Icelandic aircraft operators
+# maintaining traffic in these areas. However, the official status of
+# this area is that it sticks with Godthab time. This area might be
+# considered a dual time zone in some respects because of this.
+
+# From Rives McDow (2001-11-19):
+# I heard back from someone stationed at Thule; the time change took place
+# there at 2:00 AM.
+
+# From Paul Eggert (2006-03-22):
+# From 1997 on the CIA map shows Danmarkshavn on GMT;
+# the 1995 map as like Godthab.
+# For lack of better info, assume they were like Godthab before 1996.
+# startkart.no says Thule does not observe DST, but this is clearly an error,
+# so go with Shanks & Pottenger for Thule transitions until this year.
+# For 2007 on assume Thule will stay in sync with US DST rules.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Thule 1991 1992 - Mar lastSun 2:00 1:00 D
+Rule Thule 1991 1992 - Sep lastSun 2:00 0 S
+Rule Thule 1993 2006 - Apr Sun>=1 2:00 1:00 D
+Rule Thule 1993 2006 - Oct lastSun 2:00 0 S
+Rule Thule 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule Thule 2007 max - Nov Sun>=1 2:00 0 S
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Danmarkshavn -1:14:40 - LMT 1916 Jul 28
+ -3:00 - WGT 1980 Apr 6 2:00
+ -3:00 EU WG%sT 1996
+ 0:00 - GMT
+Zone America/Scoresbysund -1:27:52 - LMT 1916 Jul 28 # Ittoqqortoormiit
+ -2:00 - CGT 1980 Apr 6 2:00
+ -2:00 C-Eur CG%sT 1981 Mar 29
+ -1:00 EU EG%sT
+Zone America/Godthab -3:26:56 - LMT 1916 Jul 28 # Nuuk
+ -3:00 - WGT 1980 Apr 6 2:00
+ -3:00 EU WG%sT
+Zone America/Thule -4:35:08 - LMT 1916 Jul 28 # Pituffik air base
+ -4:00 Thule A%sT
+
+# Estonia
+# From Peter Ilieve (1994-10-15):
+# A relative in Tallinn confirms the accuracy of the data for 1989 onwards
+# [through 1994] and gives the legal authority for it,
+# a regulation of the Government of Estonia, No. 111 of 1989....
+#
+# From Peter Ilieve (1996-10-28):
+# [IATA SSIM (1992/1996) claims that the Baltic republics switch at 01:00s,
+# but a relative confirms that Estonia still switches at 02:00s, writing:]
+# ``I do not [know] exactly but there are some little different
+# (confusing) rules for International Air and Railway Transport Schedules
+# conversion in Sunday connected with end of summer time in Estonia....
+# A discussion is running about the summer time efficiency and effect on
+# human physiology. It seems that Estonia maybe will not change to
+# summer time next spring.''
+
+# From Peter Ilieve (1998-11-04), heavily edited:
+# <a href="http://trip.rk.ee/cgi-bin/thw?${BASE}=akt&${OOHTML}=rtd&TA=1998&TO=1&AN=1390">
+# The 1998-09-22 Estonian time law
+# </a>
+# refers to the Eighth Directive and cites the association agreement between
+# the EU and Estonia, ratified by the Estonian law (RT II 1995, 22--27, 120).
+#
+# I also asked [my relative] whether they use any standard abbreviation
+# for their standard and summer times. He says no, they use "suveaeg"
+# (summer time) and "talveaeg" (winter time).
+
+# From <a href="http://www.baltictimes.com/">The Baltic Times</a> (1999-09-09)
+# via Steffen Thorsen:
+# This year will mark the last time Estonia shifts to summer time,
+# a council of the ruling coalition announced Sept. 6....
+# But what this could mean for Estonia's chances of joining the European
+# Union are still unclear. In 1994, the EU declared summer time compulsory
+# for all member states until 2001. Brussels has yet to decide what to do
+# after that.
+
+# From Mart Oruaas (2000-01-29):
+# Regulation no. 301 (1999-10-12) obsoletes previous regulation
+# no. 206 (1998-09-22) and thus sticks Estonia to +02:00 GMT for all
+# the year round. The regulation is effective 1999-11-01.
+
+# From Toomas Soome (2002-02-21):
+# The Estonian government has changed once again timezone politics.
+# Now we are using again EU rules.
+#
+# From Urmet Jaanes (2002-03-28):
+# The legislative reference is Government decree No. 84 on 2002-02-21.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Tallinn 1:39:00 - LMT 1880
+ 1:39:00 - TMT 1918 Feb # Tallinn Mean Time
+ 1:00 C-Eur CE%sT 1919 Jul
+ 1:39:00 - TMT 1921 May
+ 2:00 - EET 1940 Aug 6
+ 3:00 - MSK 1941 Sep 15
+ 1:00 C-Eur CE%sT 1944 Sep 22
+ 3:00 Russia MSK/MSD 1989 Mar 26 2:00s
+ 2:00 1:00 EEST 1989 Sep 24 2:00s
+ 2:00 C-Eur EE%sT 1998 Sep 22
+ 2:00 EU EE%sT 1999 Nov 1
+ 2:00 - EET 2002 Feb 21
+ 2:00 EU EE%sT
+
+# Finland
+#
+# From Hannu Strang (1994-09-25 06:03:37 UTC):
+# Well, here in Helsinki we're just changing from summer time to regular one,
+# and it's supposed to change at 4am...
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say Finland has switched at 02:00 standard time
+# since 1981. Go with Strang instead.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Finland 1942 only - Apr 3 0:00 1:00 S
+Rule Finland 1942 only - Oct 3 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Helsinki 1:39:52 - LMT 1878 May 31
+ 1:39:52 - HMT 1921 May # Helsinki Mean Time
+ 2:00 Finland EE%sT 1981 Mar 29 2:00
+ 2:00 EU EE%sT
+
+# Aaland Is
+Link Europe/Helsinki Europe/Mariehamn
+
+
+# France
+
+# From Ciro Discepolo (2000-12-20):
+#
+# Henri Le Corre, Regimes Horaires pour le monde entier, Editions
+# Traditionnelles - Paris 2 books, 1993
+#
+# Gabriel, Traite de l'heure dans le monde, Guy Tredaniel editeur,
+# Paris, 1991
+#
+# Francoise Gauquelin, Problemes de l'heure resolus en astrologie,
+# Guy tredaniel, Paris 1987
+
+
+#
+# Shank & Pottenger seem to use `24:00' ambiguously; resolve it with Whitman.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule France 1916 only - Jun 14 23:00s 1:00 S
+Rule France 1916 1919 - Oct Sun>=1 23:00s 0 -
+Rule France 1917 only - Mar 24 23:00s 1:00 S
+Rule France 1918 only - Mar 9 23:00s 1:00 S
+Rule France 1919 only - Mar 1 23:00s 1:00 S
+Rule France 1920 only - Feb 14 23:00s 1:00 S
+Rule France 1920 only - Oct 23 23:00s 0 -
+Rule France 1921 only - Mar 14 23:00s 1:00 S
+Rule France 1921 only - Oct 25 23:00s 0 -
+Rule France 1922 only - Mar 25 23:00s 1:00 S
+# DSH writes that a law of 1923-05-24 specified 3rd Sat in Apr at 23:00 to 1st
+# Sat in Oct at 24:00; and that in 1930, because of Easter, the transitions
+# were Apr 12 and Oct 5. Go with Shanks & Pottenger.
+Rule France 1922 1938 - Oct Sat>=1 23:00s 0 -
+Rule France 1923 only - May 26 23:00s 1:00 S
+Rule France 1924 only - Mar 29 23:00s 1:00 S
+Rule France 1925 only - Apr 4 23:00s 1:00 S
+Rule France 1926 only - Apr 17 23:00s 1:00 S
+Rule France 1927 only - Apr 9 23:00s 1:00 S
+Rule France 1928 only - Apr 14 23:00s 1:00 S
+Rule France 1929 only - Apr 20 23:00s 1:00 S
+Rule France 1930 only - Apr 12 23:00s 1:00 S
+Rule France 1931 only - Apr 18 23:00s 1:00 S
+Rule France 1932 only - Apr 2 23:00s 1:00 S
+Rule France 1933 only - Mar 25 23:00s 1:00 S
+Rule France 1934 only - Apr 7 23:00s 1:00 S
+Rule France 1935 only - Mar 30 23:00s 1:00 S
+Rule France 1936 only - Apr 18 23:00s 1:00 S
+Rule France 1937 only - Apr 3 23:00s 1:00 S
+Rule France 1938 only - Mar 26 23:00s 1:00 S
+Rule France 1939 only - Apr 15 23:00s 1:00 S
+Rule France 1939 only - Nov 18 23:00s 0 -
+Rule France 1940 only - Feb 25 2:00 1:00 S
+# The French rules for 1941-1944 were not used in Paris, but Shanks & Pottenger
+# write that they were used in Monaco and in many French locations.
+# Le Corre writes that the upper limit of the free zone was Arneguy, Orthez,
+# Mont-de-Marsan, Bazas, Langon, Lamotte-Montravel, Marouil, La
+# Rochefoucault, Champagne-Mouton, La Roche-Posay, La Haye-Decartes,
+# Loches, Montrichard, Vierzon, Bourges, Moulins, Digoin,
+# Paray-le-Monial, Montceau-les-Mines, Chalons-sur-Saone, Arbois,
+# Dole, Morez, St-Claude, and Collognes (Haute-Savioe).
+Rule France 1941 only - May 5 0:00 2:00 M # Midsummer
+# Shanks & Pottenger say this transition occurred at Oct 6 1:00,
+# but go with Denis Excoffier (1997-12-12),
+# who quotes the Ephemerides Astronomiques for 1998 from Bureau des Longitudes
+# as saying 5/10/41 22hUT.
+Rule France 1941 only - Oct 6 0:00 1:00 S
+Rule France 1942 only - Mar 9 0:00 2:00 M
+Rule France 1942 only - Nov 2 3:00 1:00 S
+Rule France 1943 only - Mar 29 2:00 2:00 M
+Rule France 1943 only - Oct 4 3:00 1:00 S
+Rule France 1944 only - Apr 3 2:00 2:00 M
+Rule France 1944 only - Oct 8 1:00 1:00 S
+Rule France 1945 only - Apr 2 2:00 2:00 M
+Rule France 1945 only - Sep 16 3:00 0 -
+# Shanks & Pottenger give Mar 28 2:00 and Sep 26 3:00;
+# go with Excoffier's 28/3/76 0hUT and 25/9/76 23hUT.
+Rule France 1976 only - Mar 28 1:00 1:00 S
+Rule France 1976 only - Sep 26 1:00 0 -
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time, and Whitman 0:09:05,
+# but Howse quotes the actual French legislation as saying 0:09:21.
+# Go with Howse. Howse writes that the time in France was officially based
+# on PMT-0:09:21 until 1978-08-09, when the time base finally switched to UTC.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Paris 0:09:21 - LMT 1891 Mar 15 0:01
+ 0:09:21 - PMT 1911 Mar 11 0:01 # Paris MT
+# Shanks & Pottenger give 1940 Jun 14 0:00; go with Excoffier and Le Corre.
+ 0:00 France WE%sT 1940 Jun 14 23:00
+# Le Corre says Paris stuck with occupied-France time after the liberation;
+# go with Shanks & Pottenger.
+ 1:00 C-Eur CE%sT 1944 Aug 25
+ 0:00 France WE%sT 1945 Sep 16 3:00
+ 1:00 France CE%sT 1977
+ 1:00 EU CE%sT
+
+# Germany
+
+# From Markus Kuhn (1998-09-29):
+# The German time zone web site by the Physikalisch-Technische
+# Bundesanstalt contains DST information back to 1916.
+# [See tz-link.htm for the URL.]
+
+# From Joerg Schilling (2002-10-23):
+# In 1945, Berlin was switched to Moscow Summer time (GMT+4) by
+# <a href="http://www.dhm.de/lemo/html/biografien/BersarinNikolai/">
+# General [Nikolai] Bersarin</a>.
+
+# From Paul Eggert (2003-03-08):
+# <a href="http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf">
+# http://www.parlament-berlin.de/pds-fraktion.nsf/727459127c8b66ee8525662300459099/defc77cb784f180ac1256c2b0030274b/$FILE/bersarint.pdf
+# </a>
+# says that Bersarin issued an order to use Moscow time on May 20.
+# However, Moscow did not observe daylight saving in 1945, so
+# this was equivalent to CEMT (GMT+3), not GMT+4.
+
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Germany 1946 only - Apr 14 2:00s 1:00 S
+Rule Germany 1946 only - Oct 7 2:00s 0 -
+Rule Germany 1947 1949 - Oct Sun>=1 2:00s 0 -
+# http://www.ptb.de/de/org/4/44/441/salt.htm says the following transition
+# occurred at 3:00 MEZ, not the 2:00 MEZ given in Shanks & Pottenger.
+# Go with the PTB.
+Rule Germany 1947 only - Apr 6 3:00s 1:00 S
+Rule Germany 1947 only - May 11 2:00s 2:00 M
+Rule Germany 1947 only - Jun 29 3:00 1:00 S
+Rule Germany 1948 only - Apr 18 2:00s 1:00 S
+Rule Germany 1949 only - Apr 10 2:00s 1:00 S
+
+Rule SovietZone 1945 only - May 24 2:00 2:00 M # Midsummer
+Rule SovietZone 1945 only - Sep 24 3:00 1:00 S
+Rule SovietZone 1945 only - Nov 18 2:00s 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Berlin 0:53:28 - LMT 1893 Apr
+ 1:00 C-Eur CE%sT 1945 May 24 2:00
+ 1:00 SovietZone CE%sT 1946
+ 1:00 Germany CE%sT 1980
+ 1:00 EU CE%sT
+
+# Georgia
+# Please see the "asia" file for Asia/Tbilisi.
+# Herodotus (Histories, IV.45) says Georgia north of the Phasis (now Rioni)
+# is in Europe. Our reference location Tbilisi is in the Asian part.
+
+# Gibraltar
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Gibraltar -0:21:24 - LMT 1880 Aug 2 0:00s
+ 0:00 GB-Eire %s 1957 Apr 14 2:00
+ 1:00 - CET 1982
+ 1:00 EU CE%sT
+
+# Greece
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman gives 1932 Jul 5 - Nov 1; go with Shanks & Pottenger.
+Rule Greece 1932 only - Jul 7 0:00 1:00 S
+Rule Greece 1932 only - Sep 1 0:00 0 -
+# Whitman gives 1941 Apr 25 - ?; go with Shanks & Pottenger.
+Rule Greece 1941 only - Apr 7 0:00 1:00 S
+# Whitman gives 1942 Feb 2 - ?; go with Shanks & Pottenger.
+Rule Greece 1942 only - Nov 2 3:00 0 -
+Rule Greece 1943 only - Mar 30 0:00 1:00 S
+Rule Greece 1943 only - Oct 4 0:00 0 -
+# Whitman gives 1944 Oct 3 - Oct 31; go with Shanks & Pottenger.
+Rule Greece 1952 only - Jul 1 0:00 1:00 S
+Rule Greece 1952 only - Nov 2 0:00 0 -
+Rule Greece 1975 only - Apr 12 0:00s 1:00 S
+Rule Greece 1975 only - Nov 26 0:00s 0 -
+Rule Greece 1976 only - Apr 11 2:00s 1:00 S
+Rule Greece 1976 only - Oct 10 2:00s 0 -
+Rule Greece 1977 1978 - Apr Sun>=1 2:00s 1:00 S
+Rule Greece 1977 only - Sep 26 2:00s 0 -
+Rule Greece 1978 only - Sep 24 4:00 0 -
+Rule Greece 1979 only - Apr 1 9:00 1:00 S
+Rule Greece 1979 only - Sep 29 2:00 0 -
+Rule Greece 1980 only - Apr 1 0:00 1:00 S
+Rule Greece 1980 only - Sep 28 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Athens 1:34:52 - LMT 1895 Sep 14
+ 1:34:52 - AMT 1916 Jul 28 0:01 # Athens MT
+ 2:00 Greece EE%sT 1941 Apr 30
+ 1:00 Greece CE%sT 1944 Apr 4
+ 2:00 Greece EE%sT 1981
+ # Shanks & Pottenger say it switched to C-Eur in 1981;
+ # go with EU instead, since Greece joined it on Jan 1.
+ 2:00 EU EE%sT
+
+# Hungary
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Hungary 1918 only - Apr 1 3:00 1:00 S
+Rule Hungary 1918 only - Sep 29 3:00 0 -
+Rule Hungary 1919 only - Apr 15 3:00 1:00 S
+Rule Hungary 1919 only - Sep 15 3:00 0 -
+Rule Hungary 1920 only - Apr 5 3:00 1:00 S
+Rule Hungary 1920 only - Sep 30 3:00 0 -
+Rule Hungary 1945 only - May 1 23:00 1:00 S
+Rule Hungary 1945 only - Nov 3 0:00 0 -
+Rule Hungary 1946 only - Mar 31 2:00s 1:00 S
+Rule Hungary 1946 1949 - Oct Sun>=1 2:00s 0 -
+Rule Hungary 1947 1949 - Apr Sun>=4 2:00s 1:00 S
+Rule Hungary 1950 only - Apr 17 2:00s 1:00 S
+Rule Hungary 1950 only - Oct 23 2:00s 0 -
+Rule Hungary 1954 1955 - May 23 0:00 1:00 S
+Rule Hungary 1954 1955 - Oct 3 0:00 0 -
+Rule Hungary 1956 only - Jun Sun>=1 0:00 1:00 S
+Rule Hungary 1956 only - Sep lastSun 0:00 0 -
+Rule Hungary 1957 only - Jun Sun>=1 1:00 1:00 S
+Rule Hungary 1957 only - Sep lastSun 3:00 0 -
+Rule Hungary 1980 only - Apr 6 1:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Budapest 1:16:20 - LMT 1890 Oct
+ 1:00 C-Eur CE%sT 1918
+ 1:00 Hungary CE%sT 1941 Apr 6 2:00
+ 1:00 C-Eur CE%sT 1945
+ 1:00 Hungary CE%sT 1980 Sep 28 2:00s
+ 1:00 EU CE%sT
+
+# Iceland
+#
+# From Adam David (1993-11-06):
+# The name of the timezone in Iceland for system / mail / news purposes is GMT.
+#
+# (1993-12-05):
+# This material is paraphrased from the 1988 edition of the University of
+# Iceland Almanak.
+#
+# From January 1st, 1908 the whole of Iceland was standardised at 1 hour
+# behind GMT. Previously, local mean solar time was used in different parts
+# of Iceland, the almanak had been based on Reykjavik mean solar time which
+# was 1 hour and 28 minutes behind GMT.
+#
+# "first day of winter" referred to [below] means the first day of the 26 weeks
+# of winter, according to the old icelandic calendar that dates back to the
+# time the norsemen first settled Iceland. The first day of winter is always
+# Saturday, but is not dependent on the Julian or Gregorian calendars.
+#
+# (1993-12-10):
+# I have a reference from the Oxford Icelandic-English dictionary for the
+# beginning of winter, which ties it to the ecclesiastical calendar (and thus
+# to the julian/gregorian calendar) over the period in question.
+# the winter begins on the Saturday next before St. Luke's day
+# (old style), or on St. Luke's day, if a Saturday.
+# St. Luke's day ought to be traceable from ecclesiastical sources. "old style"
+# might be a reference to the Julian calendar as opposed to Gregorian, or it
+# might mean something else (???).
+#
+# From Paul Eggert (2006-03-22):
+# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points.
+# We go with the Almanak, except for one claim from Shanks & Pottenger, namely
+# that Reykavik was 21W57 from 1837 to 1908, local mean time before that.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Iceland 1917 1918 - Feb 19 23:00 1:00 S
+Rule Iceland 1917 only - Oct 21 1:00 0 -
+Rule Iceland 1918 only - Nov 16 1:00 0 -
+Rule Iceland 1939 only - Apr 29 23:00 1:00 S
+Rule Iceland 1939 only - Nov 29 2:00 0 -
+Rule Iceland 1940 only - Feb 25 2:00 1:00 S
+Rule Iceland 1940 only - Nov 3 2:00 0 -
+Rule Iceland 1941 only - Mar 2 1:00s 1:00 S
+Rule Iceland 1941 only - Nov 2 1:00s 0 -
+Rule Iceland 1942 only - Mar 8 1:00s 1:00 S
+Rule Iceland 1942 only - Oct 25 1:00s 0 -
+# 1943-1946 - first Sunday in March until first Sunday in winter
+Rule Iceland 1943 1946 - Mar Sun>=1 1:00s 1:00 S
+Rule Iceland 1943 1948 - Oct Sun>=22 1:00s 0 -
+# 1947-1967 - first Sunday in April until first Sunday in winter
+Rule Iceland 1947 1967 - Apr Sun>=1 1:00s 1:00 S
+# 1949 Oct transition delayed by 1 week
+Rule Iceland 1949 only - Oct 30 1:00s 0 -
+Rule Iceland 1950 1966 - Oct Sun>=22 1:00s 0 -
+Rule Iceland 1967 only - Oct 29 1:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Reykjavik -1:27:24 - LMT 1837
+ -1:27:48 - RMT 1908 # Reykjavik Mean Time?
+ -1:00 Iceland IS%sT 1968 Apr 7 1:00s
+ 0:00 - GMT
+
+# Italy
+#
+# From Paul Eggert (2001-03-06):
+# Sicily and Sardinia each had their own time zones from 1866 to 1893,
+# called Palermo Time (+00:53:28) and Cagliari Time (+00:36:32).
+# During World War II, German-controlled Italy used German time.
+# But these events all occurred before the 1970 cutoff,
+# so record only the time in Rome.
+#
+# From Paul Eggert (2006-03-22):
+# For Italian DST we have three sources: Shanks & Pottenger, Whitman, and
+# F. Pollastri
+# <a href="http://toi.iriti.cnr.it/uk/ienitlt.html">
+# Day-light Saving Time in Italy (2006-02-03)
+# </a>
+# (`FP' below), taken from an Italian National Electrotechnical Institute
+# publication. When the three sources disagree, guess who's right, as follows:
+#
+# year FP Shanks&P. (S) Whitman (W) Go with:
+# 1916 06-03 06-03 24:00 06-03 00:00 FP & W
+# 09-30 09-30 24:00 09-30 01:00 FP; guess 24:00s
+# 1917 04-01 03-31 24:00 03-31 00:00 FP & S
+# 09-30 09-29 24:00 09-30 01:00 FP & W
+# 1918 03-09 03-09 24:00 03-09 00:00 FP & S
+# 10-06 10-05 24:00 10-06 01:00 FP & W
+# 1919 03-01 03-01 24:00 03-01 00:00 FP & S
+# 10-04 10-04 24:00 10-04 01:00 FP; guess 24:00s
+# 1920 03-20 03-20 24:00 03-20 00:00 FP & S
+# 09-18 09-18 24:00 10-01 01:00 FP; guess 24:00s
+# 1944 04-02 04-03 02:00 S (see C-Eur)
+# 09-16 10-02 03:00 FP; guess 24:00s
+# 1945 09-14 09-16 24:00 FP; guess 24:00s
+# 1970 05-21 05-31 00:00 S
+# 09-20 09-27 00:00 S
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Italy 1916 only - Jun 3 0:00s 1:00 S
+Rule Italy 1916 only - Oct 1 0:00s 0 -
+Rule Italy 1917 only - Apr 1 0:00s 1:00 S
+Rule Italy 1917 only - Sep 30 0:00s 0 -
+Rule Italy 1918 only - Mar 10 0:00s 1:00 S
+Rule Italy 1918 1919 - Oct Sun>=1 0:00s 0 -
+Rule Italy 1919 only - Mar 2 0:00s 1:00 S
+Rule Italy 1920 only - Mar 21 0:00s 1:00 S
+Rule Italy 1920 only - Sep 19 0:00s 0 -
+Rule Italy 1940 only - Jun 15 0:00s 1:00 S
+Rule Italy 1944 only - Sep 17 0:00s 0 -
+Rule Italy 1945 only - Apr 2 2:00 1:00 S
+Rule Italy 1945 only - Sep 15 0:00s 0 -
+Rule Italy 1946 only - Mar 17 2:00s 1:00 S
+Rule Italy 1946 only - Oct 6 2:00s 0 -
+Rule Italy 1947 only - Mar 16 0:00s 1:00 S
+Rule Italy 1947 only - Oct 5 0:00s 0 -
+Rule Italy 1948 only - Feb 29 2:00s 1:00 S
+Rule Italy 1948 only - Oct 3 2:00s 0 -
+Rule Italy 1966 1968 - May Sun>=22 0:00 1:00 S
+Rule Italy 1966 1969 - Sep Sun>=22 0:00 0 -
+Rule Italy 1969 only - Jun 1 0:00 1:00 S
+Rule Italy 1970 only - May 31 0:00 1:00 S
+Rule Italy 1970 only - Sep lastSun 0:00 0 -
+Rule Italy 1971 1972 - May Sun>=22 0:00 1:00 S
+Rule Italy 1971 only - Sep lastSun 1:00 0 -
+Rule Italy 1972 only - Oct 1 0:00 0 -
+Rule Italy 1973 only - Jun 3 0:00 1:00 S
+Rule Italy 1973 1974 - Sep lastSun 0:00 0 -
+Rule Italy 1974 only - May 26 0:00 1:00 S
+Rule Italy 1975 only - Jun 1 0:00s 1:00 S
+Rule Italy 1975 1977 - Sep lastSun 0:00s 0 -
+Rule Italy 1976 only - May 30 0:00s 1:00 S
+Rule Italy 1977 1979 - May Sun>=22 0:00s 1:00 S
+Rule Italy 1978 only - Oct 1 0:00s 0 -
+Rule Italy 1979 only - Sep 30 0:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Rome 0:49:56 - LMT 1866 Sep 22
+ 0:49:56 - RMT 1893 Nov 1 0:00s # Rome Mean
+ 1:00 Italy CE%sT 1942 Nov 2 2:00s
+ 1:00 C-Eur CE%sT 1944 Jul
+ 1:00 Italy CE%sT 1980
+ 1:00 EU CE%sT
+
+Link Europe/Rome Europe/Vatican
+Link Europe/Rome Europe/San_Marino
+
+# Latvia
+
+# From Liene Kanepe (1998-09-17):
+
+# I asked about this matter Scientific Secretary of the Institute of Astronomy
+# of The University of Latvia Dr. paed Mr. Ilgonis Vilks. I also searched the
+# correct data in juridical acts and I found some juridical documents about
+# changes in the counting of time in Latvia from 1981....
+#
+# Act No.35 of the Council of Ministers of Latvian SSR of 1981-01-22 ...
+# according to the Act No.925 of the Council of Ministers of USSR of 1980-10-24
+# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
+# the hands of the clock 1 hour forward on 1 April at 00:00 (GMT 31 March 21:00)
+# and 1 hour backward on the 1 October at 00:00 (GMT 30 September 20:00).
+#
+# Act No.592 of the Council of Ministers of Latvian SSR of 1984-09-24 ...
+# according to the Act No.967 of the Council of Ministers of USSR of 1984-09-13
+# ...: all year round the time of 2nd time zone + 1 hour, in addition turning
+# the hands of the clock 1 hour forward on the last Sunday of March at 02:00
+# (GMT 23:00 on the previous day) and 1 hour backward on the last Sunday of
+# September at 03:00 (GMT 23:00 on the previous day).
+#
+# Act No.81 of the Council of Ministers of Latvian SSR of 1989-03-22 ...
+# according to the Act No.227 of the Council of Ministers of USSR of 1989-03-14
+# ...: since the last Sunday of March 1989 in Lithuanian SSR, Latvian SSR,
+# Estonian SSR and Kaliningrad region of Russian Federation all year round the
+# time of 2nd time zone (Moscow time minus one hour). On the territory of Latvia
+# transition to summer time is performed on the last Sunday of March at 02:00
+# (GMT 00:00), turning the hands of the clock 1 hour forward. The end of
+# daylight saving time is performed on the last Sunday of September at 03:00
+# (GMT 00:00), turning the hands of the clock 1 hour backward. Exception is
+# 1989-03-26, when we must not turn the hands of the clock....
+#
+# The Regulations of the Cabinet of Ministers of the Republic of Latvia of
+# 1997-01-21 on transition to Summer time ... established the same order of
+# daylight savings time settings as in the States of the European Union.
+
+# From Andrei Ivanov (2000-03-06):
+# This year Latvia will not switch to Daylight Savings Time (as specified in
+# <a href="http://www.lv-laiks.lv/wwwraksti/2000/071072/vd4.htm">
+# The Regulations of the Cabinet of Ministers of the Rep. of Latvia of
+# 29-Feb-2000 (#79)</a>, in Latvian for subscribers only).
+
+# <a href="http://www.rferl.org/newsline/2001/01/3-CEE/cee-030101.html">
+# From RFE/RL Newsline (2001-01-03), noted after a heads-up by Rives McDow:
+# </a>
+# The Latvian government on 2 January decided that the country will
+# institute daylight-saving time this spring, LETA reported.
+# Last February the three Baltic states decided not to turn back their
+# clocks one hour in the spring....
+# Minister of Economy Aigars Kalvitis noted that Latvia had too few
+# daylight hours and thus decided to comply with a draft European
+# Commission directive that provides for instituting daylight-saving
+# time in EU countries between 2002 and 2006. The Latvian government
+# urged Lithuania and Estonia to adopt a similar time policy, but it
+# appears that they will not do so....
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Latvia 1989 1996 - Mar lastSun 2:00s 1:00 S
+Rule Latvia 1989 1996 - Sep lastSun 2:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Riga 1:36:24 - LMT 1880
+ 1:36:24 - RMT 1918 Apr 15 2:00 #Riga Mean Time
+ 1:36:24 1:00 LST 1918 Sep 16 3:00 #Latvian Summer
+ 1:36:24 - RMT 1919 Apr 1 2:00
+ 1:36:24 1:00 LST 1919 May 22 3:00
+ 1:36:24 - RMT 1926 May 11
+ 2:00 - EET 1940 Aug 5
+ 3:00 - MSK 1941 Jul
+ 1:00 C-Eur CE%sT 1944 Oct 13
+ 3:00 Russia MSK/MSD 1989 Mar lastSun 2:00s
+ 2:00 1:00 EEST 1989 Sep lastSun 2:00s
+ 2:00 Latvia EE%sT 1997 Jan 21
+ 2:00 EU EE%sT 2000 Feb 29
+ 2:00 - EET 2001 Jan 2
+ 2:00 EU EE%sT
+
+# Liechtenstein
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Vaduz 0:38:04 - LMT 1894 Jun
+ 1:00 - CET 1981
+ 1:00 EU CE%sT
+
+# Lithuania
+
+# From Paul Eggert (1996-11-22):
+# IATA SSIM (1992/1996) says Lithuania uses W-Eur rules, but since it is
+# known to be wrong about Estonia and Latvia, assume it's wrong here too.
+
+# From Marius Gedminas (1998-08-07):
+# I would like to inform that in this year Lithuanian time zone
+# (Europe/Vilnius) was changed.
+
+# From <a href="http://www.elta.lt/">ELTA</a> No. 972 (2582) (1999-09-29),
+# via Steffen Thorsen:
+# Lithuania has shifted back to the second time zone (GMT plus two hours)
+# to be valid here starting from October 31,
+# as decided by the national government on Wednesday....
+# The Lithuanian government also announced plans to consider a
+# motion to give up shifting to summer time in spring, as it was
+# already done by Estonia.
+
+# From the <a href="http://www.tourism.lt/informa/ff.htm">
+# Fact File, Lithuanian State Department of Tourism
+# </a> (2000-03-27): Local time is GMT+2 hours ..., no daylight saving.
+
+# From a user via Klaus Marten (2003-02-07):
+# As a candidate for membership of the European Union, Lithuania will
+# observe Summer Time in 2003, changing its clocks at the times laid
+# down in EU Directive 2000/84 of 19.I.01 (i.e. at the same times as its
+# neighbour Latvia). The text of the Lithuanian government Order of
+# 7.XI.02 to this effect can be found at
+# http://www.lrvk.lt/nut/11/n1749.htm
+
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Vilnius 1:41:16 - LMT 1880
+ 1:24:00 - WMT 1917 # Warsaw Mean Time
+ 1:35:36 - KMT 1919 Oct 10 # Kaunas Mean Time
+ 1:00 - CET 1920 Jul 12
+ 2:00 - EET 1920 Oct 9
+ 1:00 - CET 1940 Aug 3
+ 3:00 - MSK 1941 Jun 24
+ 1:00 C-Eur CE%sT 1944 Aug
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
+ 2:00 1:00 EEST 1991 Sep 29 2:00s
+ 2:00 C-Eur EE%sT 1998
+ 2:00 - EET 1998 Mar 29 1:00u
+ 1:00 EU CE%sT 1999 Oct 31 1:00u
+ 2:00 - EET 2003 Jan 1
+ 2:00 EU EE%sT
+
+# Luxembourg
+# Whitman disagrees with most of these dates in minor ways;
+# go with Shanks & Pottenger.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Lux 1916 only - May 14 23:00 1:00 S
+Rule Lux 1916 only - Oct 1 1:00 0 -
+Rule Lux 1917 only - Apr 28 23:00 1:00 S
+Rule Lux 1917 only - Sep 17 1:00 0 -
+Rule Lux 1918 only - Apr Mon>=15 2:00s 1:00 S
+Rule Lux 1918 only - Sep Mon>=15 2:00s 0 -
+Rule Lux 1919 only - Mar 1 23:00 1:00 S
+Rule Lux 1919 only - Oct 5 3:00 0 -
+Rule Lux 1920 only - Feb 14 23:00 1:00 S
+Rule Lux 1920 only - Oct 24 2:00 0 -
+Rule Lux 1921 only - Mar 14 23:00 1:00 S
+Rule Lux 1921 only - Oct 26 2:00 0 -
+Rule Lux 1922 only - Mar 25 23:00 1:00 S
+Rule Lux 1922 only - Oct Sun>=2 1:00 0 -
+Rule Lux 1923 only - Apr 21 23:00 1:00 S
+Rule Lux 1923 only - Oct Sun>=2 2:00 0 -
+Rule Lux 1924 only - Mar 29 23:00 1:00 S
+Rule Lux 1924 1928 - Oct Sun>=2 1:00 0 -
+Rule Lux 1925 only - Apr 5 23:00 1:00 S
+Rule Lux 1926 only - Apr 17 23:00 1:00 S
+Rule Lux 1927 only - Apr 9 23:00 1:00 S
+Rule Lux 1928 only - Apr 14 23:00 1:00 S
+Rule Lux 1929 only - Apr 20 23:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Luxembourg 0:24:36 - LMT 1904 Jun
+ 1:00 Lux CE%sT 1918 Nov 25
+ 0:00 Lux WE%sT 1929 Oct 6 2:00s
+ 0:00 Belgium WE%sT 1940 May 14 3:00
+ 1:00 C-Eur WE%sT 1944 Sep 18 3:00
+ 1:00 Belgium CE%sT 1977
+ 1:00 EU CE%sT
+
+# Macedonia
+# see Serbia
+
+# Malta
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Malta 1973 only - Mar 31 0:00s 1:00 S
+Rule Malta 1973 only - Sep 29 0:00s 0 -
+Rule Malta 1974 only - Apr 21 0:00s 1:00 S
+Rule Malta 1974 only - Sep 16 0:00s 0 -
+Rule Malta 1975 1979 - Apr Sun>=15 2:00 1:00 S
+Rule Malta 1975 1980 - Sep Sun>=15 2:00 0 -
+Rule Malta 1980 only - Mar 31 2:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Malta 0:58:04 - LMT 1893 Nov 2 0:00s # Valletta
+ 1:00 Italy CE%sT 1942 Nov 2 2:00s
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00s
+ 1:00 Italy CE%sT 1973 Mar 31
+ 1:00 Malta CE%sT 1981
+ 1:00 EU CE%sT
+
+# Moldova
+
+# From Paul Eggert (2006-03-22):
+# A previous version of this database followed Shanks & Pottenger, who write
+# that Tiraspol switched to Moscow time on 1992-01-19 at 02:00.
+# However, this is most likely an error, as Moldova declared independence
+# on 1991-08-27 (the 1992-01-19 date is that of a Russian decree).
+# In early 1992 there was large-scale interethnic violence in the area
+# and it's possible that some Russophones continued to observe Moscow time.
+# But [two people] separately reported via
+# Jesper Norgaard that as of 2001-01-24 Tiraspol was like Chisinau.
+# The Tiraspol entry has therefore been removed for now.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Chisinau 1:55:20 - LMT 1880
+ 1:55 - CMT 1918 Feb 15 # Chisinau MT
+ 1:44:24 - BMT 1931 Jul 24 # Bucharest MT
+ 2:00 Romania EE%sT 1940 Aug 15
+ 2:00 1:00 EEST 1941 Jul 17
+ 1:00 C-Eur CE%sT 1944 Aug 24
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 May 6
+ 2:00 - EET 1991
+ 2:00 Russia EE%sT 1992
+ 2:00 E-Eur EE%sT 1997
+# See Romania commentary for the guessed 1997 transition to EU rules.
+ 2:00 EU EE%sT
+
+# Monaco
+# Shanks & Pottenger give 0:09:20 for Paris Mean Time; go with Howse's
+# more precise 0:09:21.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Monaco 0:29:32 - LMT 1891 Mar 15
+ 0:09:21 - PMT 1911 Mar 11 # Paris Mean Time
+ 0:00 France WE%sT 1945 Sep 16 3:00
+ 1:00 France CE%sT 1977
+ 1:00 EU CE%sT
+
+# Montenegro
+# see Serbia
+
+# Netherlands
+
+# Howse writes that the Netherlands' railways used GMT between 1892 and 1940,
+# but for other purposes the Netherlands used Amsterdam mean time.
+
+# However, Robert H. van Gent writes (2001-04-01):
+# Howse's statement is only correct up to 1909. From 1909-05-01 (00:00:00
+# Amsterdam mean time) onwards, the whole of the Netherlands (including
+# the Dutch railways) was required by law to observe Amsterdam mean time
+# (19 minutes 32.13 seconds ahead of GMT). This had already been the
+# common practice (except for the railways) for many decades but it was
+# not until 1909 when the Dutch government finally defined this by law.
+# On 1937-07-01 this was changed to 20 minutes (exactly) ahead of GMT and
+# was generally known as Dutch Time ("Nederlandse Tijd").
+#
+# (2001-04-08):
+# 1892-05-01 was the date when the Dutch railways were by law required to
+# observe GMT while the remainder of the Netherlands adhered to the common
+# practice of following Amsterdam mean time.
+#
+# (2001-04-09):
+# In 1835 the authorities of the province of North Holland requested the
+# municipal authorities of the towns and cities in the province to observe
+# Amsterdam mean time but I do not know in how many cases this request was
+# actually followed.
+#
+# From 1852 onwards the Dutch telegraph offices were by law required to
+# observe Amsterdam mean time. As the time signals from the observatory of
+# Leiden were also distributed by the telegraph system, I assume that most
+# places linked up with the telegraph (and railway) system automatically
+# adopted Amsterdam mean time.
+#
+# Although the early Dutch railway companies initially observed a variety
+# of times, most of them had adopted Amsterdam mean time by 1858 but it
+# was not until 1866 when they were all required by law to observe
+# Amsterdam mean time.
+
+# The data before 1945 are taken from
+# <http://www.phys.uu.nl/~vgent/wettijd/wettijd.htm>.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Neth 1916 only - May 1 0:00 1:00 NST # Netherlands Summer Time
+Rule Neth 1916 only - Oct 1 0:00 0 AMT # Amsterdam Mean Time
+Rule Neth 1917 only - Apr 16 2:00s 1:00 NST
+Rule Neth 1917 only - Sep 17 2:00s 0 AMT
+Rule Neth 1918 1921 - Apr Mon>=1 2:00s 1:00 NST
+Rule Neth 1918 1921 - Sep lastMon 2:00s 0 AMT
+Rule Neth 1922 only - Mar lastSun 2:00s 1:00 NST
+Rule Neth 1922 1936 - Oct Sun>=2 2:00s 0 AMT
+Rule Neth 1923 only - Jun Fri>=1 2:00s 1:00 NST
+Rule Neth 1924 only - Mar lastSun 2:00s 1:00 NST
+Rule Neth 1925 only - Jun Fri>=1 2:00s 1:00 NST
+# From 1926 through 1939 DST began 05-15, except that it was delayed by a week
+# in years when 05-15 fell in the Pentecost weekend.
+Rule Neth 1926 1931 - May 15 2:00s 1:00 NST
+Rule Neth 1932 only - May 22 2:00s 1:00 NST
+Rule Neth 1933 1936 - May 15 2:00s 1:00 NST
+Rule Neth 1937 only - May 22 2:00s 1:00 NST
+Rule Neth 1937 only - Jul 1 0:00 1:00 S
+Rule Neth 1937 1939 - Oct Sun>=2 2:00s 0 -
+Rule Neth 1938 1939 - May 15 2:00s 1:00 S
+Rule Neth 1945 only - Apr 2 2:00s 1:00 S
+Rule Neth 1945 only - Sep 16 2:00s 0 -
+#
+# Amsterdam Mean Time was +00:19:32.13 exactly, but the .13 is omitted
+# below because the current format requires GMTOFF to be an integer.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Amsterdam 0:19:32 - LMT 1835
+ 0:19:32 Neth %s 1937 Jul 1
+ 0:20 Neth NE%sT 1940 May 16 0:00 # Dutch Time
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+ 1:00 Neth CE%sT 1977
+ 1:00 EU CE%sT
+
+# Norway
+# http://met.no/met/met_lex/q_u/sommertid.html (2004-01) agrees with Shanks &
+# Pottenger.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Norway 1916 only - May 22 1:00 1:00 S
+Rule Norway 1916 only - Sep 30 0:00 0 -
+Rule Norway 1945 only - Apr 2 2:00s 1:00 S
+Rule Norway 1945 only - Oct 1 2:00s 0 -
+Rule Norway 1959 1964 - Mar Sun>=15 2:00s 1:00 S
+Rule Norway 1959 1965 - Sep Sun>=15 2:00s 0 -
+Rule Norway 1965 only - Apr 25 2:00s 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Oslo 0:43:00 - LMT 1895 Jan 1
+ 1:00 Norway CE%sT 1940 Aug 10 23:00
+ 1:00 C-Eur CE%sT 1945 Apr 2 2:00
+ 1:00 Norway CE%sT 1980
+ 1:00 EU CE%sT
+
+# Svalbard & Jan Mayen
+
+# From Steffen Thorsen (2001-05-01):
+# Although I could not find it explicitly, it seems that Jan Mayen and
+# Svalbard have been using the same time as Norway at least since the
+# time they were declared as parts of Norway. Svalbard was declared
+# as a part of Norway by law of 1925-07-17 no 11, section 4 and Jan
+# Mayen by law of 1930-02-27 no 2, section 2. (From
+# http://www.lovdata.no/all/nl-19250717-011.html and
+# http://www.lovdata.no/all/nl-19300227-002.html). The law/regulation
+# for normal/standard time in Norway is from 1894-06-29 no 1 (came
+# into operation on 1895-01-01) and Svalbard/Jan Mayen seem to be a
+# part of this law since 1925/1930. (From
+# http://www.lovdata.no/all/nl-18940629-001.html ) I have not been
+# able to find if Jan Mayen used a different time zone (e.g. -0100)
+# before 1930. Jan Mayen has only been "inhabitated" since 1921 by
+# Norwegian meteorologists and maybe used the same time as Norway ever
+# since 1921. Svalbard (Arctic/Longyearbyen) has been inhabited since
+# before 1895, and therefore probably changed the local time somewhere
+# between 1895 and 1925 (inclusive).
+
+# From Paul Eggert (2001-05-01):
+#
+# Actually, Jan Mayen was never occupied by Germany during World War II,
+# so it must have diverged from Oslo time during the war, as Oslo was
+# keeping Berlin time.
+#
+# <http://home.no.net/janmayen/history.htm> says that the meteorologists
+# burned down their station in 1940 and left the island, but returned in
+# 1941 with a small Norwegian garrison and continued operations despite
+# frequent air ttacks from Germans. In 1943 the Americans established a
+# radiolocating station on the island, called "Atlantic City". Possibly
+# the UTC offset changed during the war, but I think it unlikely that
+# Jan Mayen used German daylight-saving rules.
+#
+# Svalbard is more complicated, as it was raided in August 1941 by an
+# Allied party that evacuated the civilian population to England (says
+# <http://www.bartleby.com/65/sv/Svalbard.html>). The Svalbard FAQ
+# <http://www.svalbard.com/SvalbardFAQ.html> says that the Germans were
+# expelled on 1942-05-14. However, small parties of Germans did return,
+# and according to Wilhelm Dege's book "War North of 80" (1954)
+# <http://www.ucalgary.ca/UofC/departments/UP/1-55238/1-55238-110-2.html>
+# the German armed forces at the Svalbard weather station code-named
+# Haudegen did not surrender to the Allies until September 1945.
+#
+# All these events predate our cutoff date of 1970. Unless we can
+# come up with more definitive info about the timekeeping during the
+# war years it's probably best just do do the following for now:
+Link Europe/Oslo Arctic/Longyearbyen
+
+# Poland
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Poland 1918 1919 - Sep 16 2:00s 0 -
+Rule Poland 1919 only - Apr 15 2:00s 1:00 S
+Rule Poland 1944 only - Apr 3 2:00s 1:00 S
+# Whitman gives 1944 Nov 30; go with Shanks & Pottenger.
+Rule Poland 1944 only - Oct 4 2:00 0 -
+# For 1944-1948 Whitman gives the previous day; go with Shanks & Pottenger.
+Rule Poland 1945 only - Apr 29 0:00 1:00 S
+Rule Poland 1945 only - Nov 1 0:00 0 -
+# For 1946 on the source is Kazimierz Borkowski,
+# Torun Center for Astronomy, Dept. of Radio Astronomy, Nicolaus Copernicus U.,
+# <http://www.astro.uni.torun.pl/~kb/Artykuly/U-PA/Czas2.htm#tth_tAb1>
+# Thanks to Przemyslaw Augustyniak (2005-05-28) for this reference.
+# He also gives these further references:
+# Mon Pol nr 13, poz 162 (1995) <http://www.abc.com.pl/serwis/mp/1995/0162.htm>
+# Druk nr 2180 (2003) <http://www.senat.gov.pl/k5/dok/sejm/053/2180.pdf>
+Rule Poland 1946 only - Apr 14 0:00s 1:00 S
+Rule Poland 1946 only - Oct 7 2:00s 0 -
+Rule Poland 1947 only - May 4 2:00s 1:00 S
+Rule Poland 1947 1949 - Oct Sun>=1 2:00s 0 -
+Rule Poland 1948 only - Apr 18 2:00s 1:00 S
+Rule Poland 1949 only - Apr 10 2:00s 1:00 S
+Rule Poland 1957 only - Jun 2 1:00s 1:00 S
+Rule Poland 1957 1958 - Sep lastSun 1:00s 0 -
+Rule Poland 1958 only - Mar 30 1:00s 1:00 S
+Rule Poland 1959 only - May 31 1:00s 1:00 S
+Rule Poland 1959 1961 - Oct Sun>=1 1:00s 0 -
+Rule Poland 1960 only - Apr 3 1:00s 1:00 S
+Rule Poland 1961 1964 - May lastSun 1:00s 1:00 S
+Rule Poland 1962 1964 - Sep lastSun 1:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Warsaw 1:24:00 - LMT 1880
+ 1:24:00 - WMT 1915 Aug 5 # Warsaw Mean Time
+ 1:00 C-Eur CE%sT 1918 Sep 16 3:00
+ 2:00 Poland EE%sT 1922 Jun
+ 1:00 Poland CE%sT 1940 Jun 23 2:00
+ 1:00 C-Eur CE%sT 1944 Oct
+ 1:00 Poland CE%sT 1977
+ 1:00 W-Eur CE%sT 1988
+ 1:00 EU CE%sT
+
+# Portugal
+#
+# From Rui Pedro Salgueiro (1992-11-12):
+# Portugal has recently (September, 27) changed timezone
+# (from WET to MET or CET) to harmonize with EEC.
+#
+# Martin Bruckmann (1996-02-29) reports via Peter Ilieve
+# that Portugal is reverting to 0:00 by not moving its clocks this spring.
+# The new Prime Minister was fed up with getting up in the dark in the winter.
+#
+# From Paul Eggert (1996-11-12):
+# IATA SSIM (1991-09) reports several 1991-09 and 1992-09 transitions
+# at 02:00u, not 01:00u. Assume that these are typos.
+# IATA SSIM (1991/1992) reports that the Azores were at -1:00.
+# IATA SSIM (1993-02) says +0:00; later issues (through 1996-09) say -1:00.
+# Guess that the Azores changed to EU rules in 1992 (since that's when Portugal
+# harmonized with the EU), and that they stayed +0:00 that winter.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# DSH writes that despite Decree 1,469 (1915), the change to the clocks was not
+# done every year, depending on what Spain did, because of railroad schedules.
+# Go with Shanks & Pottenger.
+Rule Port 1916 only - Jun 17 23:00 1:00 S
+# Whitman gives 1916 Oct 31; go with Shanks & Pottenger.
+Rule Port 1916 only - Nov 1 1:00 0 -
+Rule Port 1917 only - Feb 28 23:00s 1:00 S
+Rule Port 1917 1921 - Oct 14 23:00s 0 -
+Rule Port 1918 only - Mar 1 23:00s 1:00 S
+Rule Port 1919 only - Feb 28 23:00s 1:00 S
+Rule Port 1920 only - Feb 29 23:00s 1:00 S
+Rule Port 1921 only - Feb 28 23:00s 1:00 S
+Rule Port 1924 only - Apr 16 23:00s 1:00 S
+Rule Port 1924 only - Oct 14 23:00s 0 -
+Rule Port 1926 only - Apr 17 23:00s 1:00 S
+Rule Port 1926 1929 - Oct Sat>=1 23:00s 0 -
+Rule Port 1927 only - Apr 9 23:00s 1:00 S
+Rule Port 1928 only - Apr 14 23:00s 1:00 S
+Rule Port 1929 only - Apr 20 23:00s 1:00 S
+Rule Port 1931 only - Apr 18 23:00s 1:00 S
+# Whitman gives 1931 Oct 8; go with Shanks & Pottenger.
+Rule Port 1931 1932 - Oct Sat>=1 23:00s 0 -
+Rule Port 1932 only - Apr 2 23:00s 1:00 S
+Rule Port 1934 only - Apr 7 23:00s 1:00 S
+# Whitman gives 1934 Oct 5; go with Shanks & Pottenger.
+Rule Port 1934 1938 - Oct Sat>=1 23:00s 0 -
+# Shanks & Pottenger give 1935 Apr 30; go with Whitman.
+Rule Port 1935 only - Mar 30 23:00s 1:00 S
+Rule Port 1936 only - Apr 18 23:00s 1:00 S
+# Whitman gives 1937 Apr 2; go with Shanks & Pottenger.
+Rule Port 1937 only - Apr 3 23:00s 1:00 S
+Rule Port 1938 only - Mar 26 23:00s 1:00 S
+Rule Port 1939 only - Apr 15 23:00s 1:00 S
+# Whitman gives 1939 Oct 7; go with Shanks & Pottenger.
+Rule Port 1939 only - Nov 18 23:00s 0 -
+Rule Port 1940 only - Feb 24 23:00s 1:00 S
+# Shanks & Pottenger give 1940 Oct 7; go with Whitman.
+Rule Port 1940 1941 - Oct 5 23:00s 0 -
+Rule Port 1941 only - Apr 5 23:00s 1:00 S
+Rule Port 1942 1945 - Mar Sat>=8 23:00s 1:00 S
+Rule Port 1942 only - Apr 25 22:00s 2:00 M # Midsummer
+Rule Port 1942 only - Aug 15 22:00s 1:00 S
+Rule Port 1942 1945 - Oct Sat>=24 23:00s 0 -
+Rule Port 1943 only - Apr 17 22:00s 2:00 M
+Rule Port 1943 1945 - Aug Sat>=25 22:00s 1:00 S
+Rule Port 1944 1945 - Apr Sat>=21 22:00s 2:00 M
+Rule Port 1946 only - Apr Sat>=1 23:00s 1:00 S
+Rule Port 1946 only - Oct Sat>=1 23:00s 0 -
+Rule Port 1947 1949 - Apr Sun>=1 2:00s 1:00 S
+Rule Port 1947 1949 - Oct Sun>=1 2:00s 0 -
+# Shanks & Pottenger say DST was observed in 1950; go with Whitman.
+# Whitman gives Oct lastSun for 1952 on; go with Shanks & Pottenger.
+Rule Port 1951 1965 - Apr Sun>=1 2:00s 1:00 S
+Rule Port 1951 1965 - Oct Sun>=1 2:00s 0 -
+Rule Port 1977 only - Mar 27 0:00s 1:00 S
+Rule Port 1977 only - Sep 25 0:00s 0 -
+Rule Port 1978 1979 - Apr Sun>=1 0:00s 1:00 S
+Rule Port 1978 only - Oct 1 0:00s 0 -
+Rule Port 1979 1982 - Sep lastSun 1:00s 0 -
+Rule Port 1980 only - Mar lastSun 0:00s 1:00 S
+Rule Port 1981 1982 - Mar lastSun 1:00s 1:00 S
+Rule Port 1983 only - Mar lastSun 2:00s 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Shanks & Pottenger say the transition from LMT to WET occurred 1911-05-24;
+# Willett says 1912-01-01. Go with Willett.
+Zone Europe/Lisbon -0:36:32 - LMT 1884
+ -0:36:32 - LMT 1912 Jan 1 # Lisbon Mean Time
+ 0:00 Port WE%sT 1966 Apr 3 2:00
+ 1:00 - CET 1976 Sep 26 1:00
+ 0:00 Port WE%sT 1983 Sep 25 1:00s
+ 0:00 W-Eur WE%sT 1992 Sep 27 1:00s
+ 1:00 EU CE%sT 1996 Mar 31 1:00u
+ 0:00 EU WE%sT
+Zone Atlantic/Azores -1:42:40 - LMT 1884 # Ponta Delgada
+ -1:54:32 - HMT 1911 May 24 # Horta Mean Time
+ -2:00 Port AZO%sT 1966 Apr 3 2:00 # Azores Time
+ -1:00 Port AZO%sT 1983 Sep 25 1:00s
+ -1:00 W-Eur AZO%sT 1992 Sep 27 1:00s
+ 0:00 EU WE%sT 1993 Mar 28 1:00u
+ -1:00 EU AZO%sT
+Zone Atlantic/Madeira -1:07:36 - LMT 1884 # Funchal
+ -1:07:36 - FMT 1911 May 24 # Funchal Mean Time
+ -1:00 Port MAD%sT 1966 Apr 3 2:00 # Madeira Time
+ 0:00 Port WE%sT 1983 Sep 25 1:00s
+ 0:00 EU WE%sT
+
+# Romania
+#
+# From Paul Eggert (1999-10-07):
+# <a href="http://www.nineoclock.ro/POL/1778pol.html">
+# Nine O'clock</a> (1998-10-23) reports that the switch occurred at
+# 04:00 local time in fall 1998. For lack of better info,
+# assume that Romania and Moldova switched to EU rules in 1997,
+# the same year as Bulgaria.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Romania 1932 only - May 21 0:00s 1:00 S
+Rule Romania 1932 1939 - Oct Sun>=1 0:00s 0 -
+Rule Romania 1933 1939 - Apr Sun>=2 0:00s 1:00 S
+Rule Romania 1979 only - May 27 0:00 1:00 S
+Rule Romania 1979 only - Sep lastSun 0:00 0 -
+Rule Romania 1980 only - Apr 5 23:00 1:00 S
+Rule Romania 1980 only - Sep lastSun 1:00 0 -
+Rule Romania 1991 1993 - Mar lastSun 0:00s 1:00 S
+Rule Romania 1991 1993 - Sep lastSun 0:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Bucharest 1:44:24 - LMT 1891 Oct
+ 1:44:24 - BMT 1931 Jul 24 # Bucharest MT
+ 2:00 Romania EE%sT 1981 Mar 29 2:00s
+ 2:00 C-Eur EE%sT 1991
+ 2:00 Romania EE%sT 1994
+ 2:00 E-Eur EE%sT 1997
+ 2:00 EU EE%sT
+
+# Russia
+
+# From Paul Eggert (2006-03-22):
+# Except for Moscow after 1919-07-01, I invented the time zone abbreviations.
+# Moscow time zone abbreviations after 1919-07-01, and Moscow rules after 1991,
+# are from Andrey A. Chernov. The rest is from Shanks & Pottenger,
+# except we follow Chernov's report that 1992 DST transitions were Sat
+# 23:00, not Sun 02:00s.
+#
+# From Stanislaw A. Kuzikowski (1994-06-29):
+# But now it is some months since Novosibirsk is 3 hours ahead of Moscow!
+# I do not know why they have decided to make this change;
+# as far as I remember it was done exactly during winter->summer switching
+# so we (Novosibirsk) simply did not switch.
+#
+# From Andrey A. Chernov (1996-10-04):
+# `MSK' and `MSD' were born and used initially on Moscow computers with
+# UNIX-like OSes by several developer groups (e.g. Demos group, Kiae group)....
+# The next step was the UUCP network, the Relcom predecessor
+# (used mainly for mail), and MSK/MSD was actively used there.
+#
+# From Chris Carrier (1996-10-30):
+# According to a friend of mine who rode the Trans-Siberian Railroad from
+# Moscow to Irkutsk in 1995, public air and rail transport in Russia ...
+# still follows Moscow time, no matter where in Russia it is located.
+#
+# For Grozny, Chechnya, we have the following story from
+# John Daniszewski, "Scavengers in the Rubble", Los Angeles Times (2001-02-07):
+# News--often false--is spread by word of mouth. A rumor that it was
+# time to move the clocks back put this whole city out of sync with
+# the rest of Russia for two weeks--even soldiers stationed here began
+# enforcing curfew at the wrong time.
+#
+# From Gwillim Law (2001-06-05):
+# There's considerable evidence that Sakhalin Island used to be in
+# UTC+11, and has changed to UTC+10, in this decade. I start with the
+# SSIM, which listed Yuzhno-Sakhalinsk in zone RU10 along with Magadan
+# until February 1997, and then in RU9 with Khabarovsk and Vladivostok
+# since September 1997.... Although the Kuril Islands are
+# administratively part of Sakhalin oblast', they appear to have
+# remained on UTC+11 along with Magadan.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Kaliningradskaya oblast'.
+Zone Europe/Kaliningrad 1:22:00 - LMT 1893 Apr
+ 1:00 C-Eur CE%sT 1945
+ 2:00 Poland CE%sT 1946
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
+ 2:00 Russia EE%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Adygeya, Arkhangel'skaya oblast',
+# Belgorodskaya oblast', Bryanskaya oblast', Vladimirskaya oblast',
+# Vologodskaya oblast', Voronezhskaya oblast',
+# Respublika Dagestan, Ivanovskaya oblast', Respublika Ingushetiya,
+# Kabarbino-Balkarskaya Respublika, Respublika Kalmykiya,
+# Kalyzhskaya oblast', Respublika Karachaevo-Cherkessiya,
+# Respublika Kareliya, Respublika Komi,
+# Kostromskaya oblast', Krasnodarskij kraj, Kurskaya oblast',
+# Leningradskaya oblast', Lipetskaya oblast', Respublika Marij El,
+# Respublika Mordoviya, Moskva, Moskovskaya oblast',
+# Murmanskaya oblast', Nenetskij avtonomnyj okrug,
+# Nizhegorodskaya oblast', Novgorodskaya oblast', Orlovskaya oblast',
+# Penzenskaya oblast', Pskovskaya oblast', Rostovskaya oblast',
+# Ryazanskaya oblast', Sankt-Peterburg,
+# Respublika Severnaya Osetiya, Smolenskaya oblast',
+# Stavropol'skij kraj, Tambovskaya oblast', Respublika Tatarstan,
+# Tverskaya oblast', Tyl'skaya oblast', Ul'yanovskaya oblast',
+# Chechenskaya Respublika, Chuvashskaya oblast',
+# Yaroslavskaya oblast'
+Zone Europe/Moscow 2:30:20 - LMT 1880
+ 2:30 - MMT 1916 Jul 3 # Moscow Mean Time
+ 2:30:48 Russia %s 1919 Jul 1 2:00
+ 3:00 Russia MSK/MSD 1922 Oct
+ 2:00 - EET 1930 Jun 21
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00s
+ 2:00 Russia EE%sT 1992 Jan 19 2:00s
+ 3:00 Russia MSK/MSD
+#
+# Astrakhanskaya oblast', Kirovskaya oblast', Saratovskaya oblast',
+# Volgogradskaya oblast'. Shanks & Pottenger say Kirov is still at +0400
+# but Wikipedia (2006-05-09) says +0300. Perhaps it switched after the
+# others? But we have no data.
+Zone Europe/Volgograd 2:57:40 - LMT 1920 Jan 3
+ 3:00 - TSAT 1925 Apr 6 # Tsaritsyn Time
+ 3:00 - STAT 1930 Jun 21 # Stalingrad Time
+ 4:00 - STAT 1961 Nov 11
+ 4:00 Russia VOL%sT 1989 Mar 26 2:00s # Volgograd T
+ 3:00 Russia VOL%sT 1991 Mar 31 2:00s
+ 4:00 - VOLT 1992 Mar 29 2:00s
+ 3:00 Russia VOL%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Samarskaya oblast', Udmyrtskaya respublika
+Zone Europe/Samara 3:20:36 - LMT 1919 Jul 1 2:00
+ 3:00 - SAMT 1930 Jun 21
+ 4:00 - SAMT 1935 Jan 27
+ 4:00 Russia KUY%sT 1989 Mar 26 2:00s # Kuybyshev
+ 3:00 Russia KUY%sT 1991 Mar 31 2:00s
+ 2:00 Russia KUY%sT 1991 Sep 29 2:00s
+ 3:00 - KUYT 1991 Oct 20 3:00
+ 4:00 Russia SAM%sT # Samara Time
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Bashkortostan, Komi-Permyatskij avtonomnyj okrug,
+# Kurganskaya oblast', Orenburgskaya oblast', Permskaya oblast',
+# Sverdlovskaya oblast', Tyumenskaya oblast',
+# Khanty-Manskijskij avtonomnyj okrug, Chelyabinskaya oblast',
+# Yamalo-Nenetskij avtonomnyj okrug.
+Zone Asia/Yekaterinburg 4:02:24 - LMT 1919 Jul 15 4:00
+ 4:00 - SVET 1930 Jun 21 # Sverdlovsk Time
+ 5:00 Russia SVE%sT 1991 Mar 31 2:00s
+ 4:00 Russia SVE%sT 1992 Jan 19 2:00s
+ 5:00 Russia YEK%sT # Yekaterinburg Time
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Altaj, Altajskij kraj, Omskaya oblast'.
+Zone Asia/Omsk 4:53:36 - LMT 1919 Nov 14
+ 5:00 - OMST 1930 Jun 21 # Omsk TIme
+ 6:00 Russia OMS%sT 1991 Mar 31 2:00s
+ 5:00 Russia OMS%sT 1992 Jan 19 2:00s
+ 6:00 Russia OMS%sT
+#
+# From Paul Eggert (2006-08-19): I'm guessing about Tomsk here; it's
+# not clear when it switched from +7 to +6.
+# Novosibirskaya oblast', Tomskaya oblast'.
+Zone Asia/Novosibirsk 5:31:40 - LMT 1919 Dec 14 6:00
+ 6:00 - NOVT 1930 Jun 21 # Novosibirsk Time
+ 7:00 Russia NOV%sT 1991 Mar 31 2:00s
+ 6:00 Russia NOV%sT 1992 Jan 19 2:00s
+ 7:00 Russia NOV%sT 1993 May 23 # say Shanks & P.
+ 6:00 Russia NOV%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Kemerovskaya oblast', Krasnoyarskij kraj,
+# Tajmyrskij (Dolgano-Nenetskij) avtonomnyj okrug,
+# Respublika Tuva, Respublika Khakasiya, Evenkijskij avtonomnyj okrug.
+Zone Asia/Krasnoyarsk 6:11:20 - LMT 1920 Jan 6
+ 6:00 - KRAT 1930 Jun 21 # Krasnoyarsk Time
+ 7:00 Russia KRA%sT 1991 Mar 31 2:00s
+ 6:00 Russia KRA%sT 1992 Jan 19 2:00s
+ 7:00 Russia KRA%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Respublika Buryatiya, Irkutskaya oblast',
+# Ust'-Ordynskij Buryatskij avtonomnyj okrug.
+Zone Asia/Irkutsk 6:57:20 - LMT 1880
+ 6:57:20 - IMT 1920 Jan 25 # Irkutsk Mean Time
+ 7:00 - IRKT 1930 Jun 21 # Irkutsk Time
+ 8:00 Russia IRK%sT 1991 Mar 31 2:00s
+ 7:00 Russia IRK%sT 1992 Jan 19 2:00s
+ 8:00 Russia IRK%sT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Aginskij Buryatskij avtonomnyj okrug, Amurskaya oblast',
+# [parts of] Respublika Sakha (Yakutiya), Chitinskaya oblast'.
+# The Sakha districts are: Aldanskij, Amginskij, Anabarskij,
+# Bulunskij, Verkhnekolymskij, Verkhnevilyujskij, Vilyujskij, Gornyj,
+# Zhiganskij, Kobyajskij, Lenskij, Megino-Kangalasskij, Mirninskij,
+# Namskij, Nyurbinskij, Olenekskij, Olekminskij, Srednekolymskij,
+# Suntarskij, Tattinskij, Ust'-Aldanskij, Khangalasskij,
+# Churapchinskij, Eveno-Bytantajskij.
+Zone Asia/Yakutsk 8:38:40 - LMT 1919 Dec 15
+ 8:00 - YAKT 1930 Jun 21 # Yakutsk Time
+ 9:00 Russia YAK%sT 1991 Mar 31 2:00s
+ 8:00 Russia YAK%sT 1992 Jan 19 2:00s
+ 9:00 Russia YAK%sT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Evrejskaya avtonomnaya oblast', Khabarovskij kraj, Primorskij kraj,
+# [parts of] Respublika Sakha (Yakutiya).
+# The Sakha districts are: Verkhoyanskij, Tomponskij, Ust'-Majskij,
+# Ust'-Yanskij.
+Zone Asia/Vladivostok 8:47:44 - LMT 1922 Nov 15
+ 9:00 - VLAT 1930 Jun 21 # Vladivostok Time
+ 10:00 Russia VLA%sT 1991 Mar 31 2:00s
+ 9:00 Russia VLA%sST 1992 Jan 19 2:00s
+ 10:00 Russia VLA%sT
+#
+# Sakhalinskaya oblast'.
+# The Zone name should be Yuzhno-Sakhalinsk, but that's too long.
+Zone Asia/Sakhalin 9:30:48 - LMT 1905 Aug 23
+ 9:00 - CJT 1938
+ 9:00 - JST 1945 Aug 25
+ 11:00 Russia SAK%sT 1991 Mar 31 2:00s # Sakhalin T.
+ 10:00 Russia SAK%sT 1992 Jan 19 2:00s
+ 11:00 Russia SAK%sT 1997 Mar lastSun 2:00s
+ 10:00 Russia SAK%sT
+#
+# From Oscar van Vlijmen (2003-10-18): [This region consists of]
+# Magadanskaya oblast', Respublika Sakha (Yakutiya).
+# Probably also: Kuril Islands.
+# The Sakha districts are: Abyjskij, Allaikhovskij, Momskij,
+# Nizhnekolymskij, Ojmyakonskij.
+Zone Asia/Magadan 10:03:12 - LMT 1924 May 2
+ 10:00 - MAGT 1930 Jun 21 # Magadan Time
+ 11:00 Russia MAG%sT 1991 Mar 31 2:00s
+ 10:00 Russia MAG%sT 1992 Jan 19 2:00s
+ 11:00 Russia MAG%sT
+#
+# From Oscar van Vlijmen (2001-08-25): [This region consists of]
+# Kamchatskaya oblast', Koryakskij avtonomnyj okrug.
+#
+# The Zone name should be Asia/Petropavlovsk-Kamchatski, but that's too long.
+Zone Asia/Kamchatka 10:34:36 - LMT 1922 Nov 10
+ 11:00 - PETT 1930 Jun 21 # P-K Time
+ 12:00 Russia PET%sT 1991 Mar 31 2:00s
+ 11:00 Russia PET%sT 1992 Jan 19 2:00s
+ 12:00 Russia PET%sT
+#
+# Chukotskij avtonomnyj okrug
+Zone Asia/Anadyr 11:49:56 - LMT 1924 May 2
+ 12:00 - ANAT 1930 Jun 21 # Anadyr Time
+ 13:00 Russia ANA%sT 1982 Apr 1 0:00s
+ 12:00 Russia ANA%sT 1991 Mar 31 2:00s
+ 11:00 Russia ANA%sT 1992 Jan 19 2:00s
+ 12:00 Russia ANA%sT
+
+# Serbia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Belgrade 1:22:00 - LMT 1884
+ 1:00 - CET 1941 Apr 18 23:00
+ 1:00 C-Eur CE%sT 1945
+ 1:00 - CET 1945 May 8 2:00s
+ 1:00 1:00 CEST 1945 Sep 16 2:00s
+# Metod Kozelj reports that the legal date of
+# transition to EU rules was 1982-11-27, for all of Yugoslavia at the time.
+# Shanks & Pottenger don't give as much detail, so go with Kozelj.
+ 1:00 - CET 1982 Nov 27
+ 1:00 EU CE%sT
+Link Europe/Belgrade Europe/Ljubljana # Slovenia
+Link Europe/Belgrade Europe/Podgorica # Montenegro
+Link Europe/Belgrade Europe/Sarajevo # Bosnia and Herzegovina
+Link Europe/Belgrade Europe/Skopje # Macedonia
+Link Europe/Belgrade Europe/Zagreb # Croatia
+
+# Slovakia
+Link Europe/Prague Europe/Bratislava
+
+# Slovenia
+# see Serbia
+
+# Spain
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# For 1917-1919 Whitman gives Apr Sat>=1 - Oct Sat>=1;
+# go with Shanks & Pottenger.
+Rule Spain 1917 only - May 5 23:00s 1:00 S
+Rule Spain 1917 1919 - Oct 6 23:00s 0 -
+Rule Spain 1918 only - Apr 15 23:00s 1:00 S
+Rule Spain 1919 only - Apr 5 23:00s 1:00 S
+# Whitman gives 1921 Feb 28 - Oct 14; go with Shanks & Pottenger.
+Rule Spain 1924 only - Apr 16 23:00s 1:00 S
+# Whitman gives 1924 Oct 14; go with Shanks & Pottenger.
+Rule Spain 1924 only - Oct 4 23:00s 0 -
+Rule Spain 1926 only - Apr 17 23:00s 1:00 S
+# Whitman says no DST in 1929; go with Shanks & Pottenger.
+Rule Spain 1926 1929 - Oct Sat>=1 23:00s 0 -
+Rule Spain 1927 only - Apr 9 23:00s 1:00 S
+Rule Spain 1928 only - Apr 14 23:00s 1:00 S
+Rule Spain 1929 only - Apr 20 23:00s 1:00 S
+# Whitman gives 1937 Jun 16, 1938 Apr 16, 1940 Apr 13;
+# go with Shanks & Pottenger.
+Rule Spain 1937 only - May 22 23:00s 1:00 S
+Rule Spain 1937 1939 - Oct Sat>=1 23:00s 0 -
+Rule Spain 1938 only - Mar 22 23:00s 1:00 S
+Rule Spain 1939 only - Apr 15 23:00s 1:00 S
+Rule Spain 1940 only - Mar 16 23:00s 1:00 S
+# Whitman says no DST 1942-1945; go with Shanks & Pottenger.
+Rule Spain 1942 only - May 2 22:00s 2:00 M # Midsummer
+Rule Spain 1942 only - Sep 1 22:00s 1:00 S
+Rule Spain 1943 1946 - Apr Sat>=13 22:00s 2:00 M
+Rule Spain 1943 only - Oct 3 22:00s 1:00 S
+Rule Spain 1944 only - Oct 10 22:00s 1:00 S
+Rule Spain 1945 only - Sep 30 1:00 1:00 S
+Rule Spain 1946 only - Sep 30 0:00 0 -
+Rule Spain 1949 only - Apr 30 23:00 1:00 S
+Rule Spain 1949 only - Sep 30 1:00 0 -
+Rule Spain 1974 1975 - Apr Sat>=13 23:00 1:00 S
+Rule Spain 1974 1975 - Oct Sun>=1 1:00 0 -
+Rule Spain 1976 only - Mar 27 23:00 1:00 S
+Rule Spain 1976 1977 - Sep lastSun 1:00 0 -
+Rule Spain 1977 1978 - Apr 2 23:00 1:00 S
+Rule Spain 1978 only - Oct 1 1:00 0 -
+# The following rules are copied from Morocco from 1967 through 1978.
+Rule SpainAfrica 1967 only - Jun 3 12:00 1:00 S
+Rule SpainAfrica 1967 only - Oct 1 0:00 0 -
+Rule SpainAfrica 1974 only - Jun 24 0:00 1:00 S
+Rule SpainAfrica 1974 only - Sep 1 0:00 0 -
+Rule SpainAfrica 1976 1977 - May 1 0:00 1:00 S
+Rule SpainAfrica 1976 only - Aug 1 0:00 0 -
+Rule SpainAfrica 1977 only - Sep 28 0:00 0 -
+Rule SpainAfrica 1978 only - Jun 1 0:00 1:00 S
+Rule SpainAfrica 1978 only - Aug 4 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Madrid -0:14:44 - LMT 1901 Jan 1 0:00s
+ 0:00 Spain WE%sT 1946 Sep 30
+ 1:00 Spain CE%sT 1979
+ 1:00 EU CE%sT
+Zone Africa/Ceuta -0:21:16 - LMT 1901
+ 0:00 - WET 1918 May 6 23:00
+ 0:00 1:00 WEST 1918 Oct 7 23:00
+ 0:00 - WET 1924
+ 0:00 Spain WE%sT 1929
+ 0:00 SpainAfrica WE%sT 1984 Mar 16
+ 1:00 - CET 1986
+ 1:00 EU CE%sT
+Zone Atlantic/Canary -1:01:36 - LMT 1922 Mar # Las Palmas de Gran C.
+ -1:00 - CANT 1946 Sep 30 1:00 # Canaries Time
+ 0:00 - WET 1980 Apr 6 0:00s
+ 0:00 1:00 WEST 1980 Sep 28 0:00s
+ 0:00 EU WE%sT
+# IATA SSIM (1996-09) says the Canaries switch at 2:00u, not 1:00u.
+# Ignore this for now, as the Canaries are part of the EU.
+
+# Sweden
+
+# From Ivan Nilsson (2001-04-13), superseding Shanks & Pottenger:
+#
+# The law "Svensk forfattningssamling 1878, no 14" about standard time in 1879:
+# From the beginning of 1879 (that is 01-01 00:00) the time for all
+# places in the country is "the mean solar time for the meridian at
+# three degrees, or twelve minutes of time, to the west of the
+# meridian of the Observatory of Stockholm". The law is dated 1878-05-31.
+#
+# The observatory at that time had the meridian 18 degrees 03' 30"
+# eastern longitude = 01:12:14 in time. Less 12 minutes gives the
+# national standard time as 01:00:14 ahead of GMT....
+#
+# About the beginning of CET in Sweden. The lawtext ("Svensk
+# forfattningssamling 1899, no 44") states, that "from the beginning
+# of 1900... ... the same as the mean solar time for the meridian at
+# the distance of one hour of time from the meridian of the English
+# observatory at Greenwich, or at 12 minutes 14 seconds to the west
+# from the meridian of the Observatory of Stockholm". The law is dated
+# 1899-06-16. In short: At 1900-01-01 00:00:00 the new standard time
+# in Sweden is 01:00:00 ahead of GMT.
+#
+# 1916: The lawtext ("Svensk forfattningssamling 1916, no 124") states
+# that "1916-05-15 is considered to begin one hour earlier". It is
+# pretty obvious that at 05-14 23:00 the clocks are set to 05-15 00:00....
+# Further the law says, that "1916-09-30 is considered to end one hour later".
+#
+# The laws regulating [DST] are available on the site of the Swedish
+# Parliament beginning with 1985 - the laws regulating 1980/1984 are
+# not available on the site (to my knowledge they are only available
+# in Swedish): <http://www.riksdagen.se/english/work/sfst.asp> (type
+# "sommartid" without the quotes in the field "Fritext" and then click
+# the Sok-button).
+#
+# (2001-05-13):
+#
+# I have now found a newspaper stating that at 1916-10-01 01:00
+# summertime the church-clocks etc were set back one hour to show
+# 1916-10-01 00:00 standard time. The article also reports that some
+# people thought the switch to standard time would take place already
+# at 1916-10-01 00:00 summer time, but they had to wait for another
+# hour before the event took place.
+#
+# Source: The newspaper "Dagens Nyheter", 1916-10-01, page 7 upper left.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Stockholm 1:12:12 - LMT 1879 Jan 1
+ 1:00:14 - SET 1900 Jan 1 # Swedish Time
+ 1:00 - CET 1916 May 14 23:00
+ 1:00 1:00 CEST 1916 Oct 1 01:00
+ 1:00 - CET 1980
+ 1:00 EU CE%sT
+
+# Switzerland
+# From Howse:
+# By the end of the 18th century clocks and watches became commonplace
+# and their performance improved enormously. Communities began to keep
+# mean time in preference to apparent time -- Geneva from 1780 ....
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# From Whitman (who writes ``Midnight?''):
+Rule Swiss 1940 only - Nov 2 0:00 1:00 S
+Rule Swiss 1940 only - Dec 31 0:00 0 -
+# From Shanks & Pottenger:
+Rule Swiss 1941 1942 - May Sun>=1 2:00 1:00 S
+Rule Swiss 1941 1942 - Oct Sun>=1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Zurich 0:34:08 - LMT 1848 Sep 12
+ 0:29:44 - BMT 1894 Jun # Bern Mean Time
+ 1:00 Swiss CE%sT 1981
+ 1:00 EU CE%sT
+
+# Turkey
+
+# From Amar Devegowda (2007-01-03):
+# The time zone rules for Istanbul, Turkey have not been changed for years now.
+# ... The latest rules are available at -
+# http://www.timeanddate.com/worldclock/timezone.html?n=107
+# From Steffen Thorsen (2007-01-03):
+# I have been able to find press records back to 1996 which all say that
+# DST started 01:00 local time and end at 02:00 local time. I am not sure
+# what happened before that. One example for each year from 1996 to 2001:
+# http://newspot.byegm.gov.tr/arsiv/1996/21/N4.htm
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING97/03/97X03X25.TXT
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING98/03/98X03X02.HTM
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING99/10/99X10X26.HTM#%2016
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2000/03/00X03X06.HTM#%2021
+# http://www.byegm.gov.tr/YAYINLARIMIZ/CHR/ING2001/03/23x03x01.HTM#%2027
+# From Paul Eggert (2007-01-03):
+# Prefer the above source to Shanks & Pottenger for time stamps after 1990.
+
+# From Steffen Thorsen (2007-03-09):
+# Starting 2007 though, it seems that they are adopting EU's 1:00 UTC
+# start/end time, according to the following page (2007-03-07):
+# http://www.ntvmsnbc.com/news/402029.asp
+# The official document is located here - it is in Turkish...:
+# http://rega.basbakanlik.gov.tr/eskiler/2007/03/20070307-7.htm
+# I was able to locate the following seemingly official document
+# (on a non-government server though) describing dates between 2002 and 2006:
+# http://www.alomaliye.com/bkk_2002_3769.htm
+
+# From Sue Williams (2008-08-11):
+# I spotted this news article about a potential change in Turkey.
+#
+# <a href="http://www.hurriyet.com.tr/english/domestic/9626174.asp?scr=1">
+# http://www.hurriyet.com.tr/english/domestic/9626174.asp?scr=1
+# </a>
+
+# From Sue Williams (2008-08-20):
+# This article says that around the end of March 2011, Turkey wants to
+# adjust the clocks forward by 1/2 hour and stay that way permanently.
+# The article indicates that this is a change in timezone offset in addition
+# to stopping observance of DST.
+# This proposal has not yet been approved.
+#
+# Read more here...
+#
+# Turkey to abandon daylight saving time in 2011
+# <a href="http://www.turkishdailynews.com.tr/article.php?enewsid=112989">
+# http://www.turkishdailynews.com.tr/article.php?enewsid=112989
+# </a>
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Turkey 1916 only - May 1 0:00 1:00 S
+Rule Turkey 1916 only - Oct 1 0:00 0 -
+Rule Turkey 1920 only - Mar 28 0:00 1:00 S
+Rule Turkey 1920 only - Oct 25 0:00 0 -
+Rule Turkey 1921 only - Apr 3 0:00 1:00 S
+Rule Turkey 1921 only - Oct 3 0:00 0 -
+Rule Turkey 1922 only - Mar 26 0:00 1:00 S
+Rule Turkey 1922 only - Oct 8 0:00 0 -
+# Whitman gives 1923 Apr 28 - Sep 16 and no DST in 1924-1925;
+# go with Shanks & Pottenger.
+Rule Turkey 1924 only - May 13 0:00 1:00 S
+Rule Turkey 1924 1925 - Oct 1 0:00 0 -
+Rule Turkey 1925 only - May 1 0:00 1:00 S
+Rule Turkey 1940 only - Jun 30 0:00 1:00 S
+Rule Turkey 1940 only - Oct 5 0:00 0 -
+Rule Turkey 1940 only - Dec 1 0:00 1:00 S
+Rule Turkey 1941 only - Sep 21 0:00 0 -
+Rule Turkey 1942 only - Apr 1 0:00 1:00 S
+# Whitman omits the next two transition and gives 1945 Oct 1;
+# go with Shanks & Pottenger.
+Rule Turkey 1942 only - Nov 1 0:00 0 -
+Rule Turkey 1945 only - Apr 2 0:00 1:00 S
+Rule Turkey 1945 only - Oct 8 0:00 0 -
+Rule Turkey 1946 only - Jun 1 0:00 1:00 S
+Rule Turkey 1946 only - Oct 1 0:00 0 -
+Rule Turkey 1947 1948 - Apr Sun>=16 0:00 1:00 S
+Rule Turkey 1947 1950 - Oct Sun>=2 0:00 0 -
+Rule Turkey 1949 only - Apr 10 0:00 1:00 S
+Rule Turkey 1950 only - Apr 19 0:00 1:00 S
+Rule Turkey 1951 only - Apr 22 0:00 1:00 S
+Rule Turkey 1951 only - Oct 8 0:00 0 -
+Rule Turkey 1962 only - Jul 15 0:00 1:00 S
+Rule Turkey 1962 only - Oct 8 0:00 0 -
+Rule Turkey 1964 only - May 15 0:00 1:00 S
+Rule Turkey 1964 only - Oct 1 0:00 0 -
+Rule Turkey 1970 1972 - May Sun>=2 0:00 1:00 S
+Rule Turkey 1970 1972 - Oct Sun>=2 0:00 0 -
+Rule Turkey 1973 only - Jun 3 1:00 1:00 S
+Rule Turkey 1973 only - Nov 4 3:00 0 -
+Rule Turkey 1974 only - Mar 31 2:00 1:00 S
+Rule Turkey 1974 only - Nov 3 5:00 0 -
+Rule Turkey 1975 only - Mar 30 0:00 1:00 S
+Rule Turkey 1975 1976 - Oct lastSun 0:00 0 -
+Rule Turkey 1976 only - Jun 1 0:00 1:00 S
+Rule Turkey 1977 1978 - Apr Sun>=1 0:00 1:00 S
+Rule Turkey 1977 only - Oct 16 0:00 0 -
+Rule Turkey 1979 1980 - Apr Sun>=1 3:00 1:00 S
+Rule Turkey 1979 1982 - Oct Mon>=11 0:00 0 -
+Rule Turkey 1981 1982 - Mar lastSun 3:00 1:00 S
+Rule Turkey 1983 only - Jul 31 0:00 1:00 S
+Rule Turkey 1983 only - Oct 2 0:00 0 -
+Rule Turkey 1985 only - Apr 20 0:00 1:00 S
+Rule Turkey 1985 only - Sep 28 0:00 0 -
+Rule Turkey 1986 1990 - Mar lastSun 2:00s 1:00 S
+Rule Turkey 1986 1990 - Sep lastSun 2:00s 0 -
+Rule Turkey 1991 2006 - Mar lastSun 1:00s 1:00 S
+Rule Turkey 1991 1995 - Sep lastSun 1:00s 0 -
+Rule Turkey 1996 2006 - Oct lastSun 1:00s 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Europe/Istanbul 1:55:52 - LMT 1880
+ 1:56:56 - IMT 1910 Oct # Istanbul Mean Time?
+ 2:00 Turkey EE%sT 1978 Oct 15
+ 3:00 Turkey TR%sT 1985 Apr 20 # Turkey Time
+ 2:00 Turkey EE%sT 2007
+ 2:00 EU EE%sT
+Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
+
+# Ukraine
+#
+# From Igor Karpov, who works for the Ukranian Ministry of Justice,
+# via Garrett Wollman (2003-01-27):
+# BTW, I've found the official document on this matter. It's goverment
+# regulations number 509, May 13, 1996. In my poor translation it says:
+# "Time in Ukraine is set to second timezone (Kiev time). Each last Sunday
+# of March at 3am the time is changing to 4am and each last Sunday of
+# October the time at 4am is changing to 3am"
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Most of Ukraine since 1970 has been like Kiev.
+# "Kyiv" is the transliteration of the Ukrainian name, but
+# "Kiev" is more common in English.
+Zone Europe/Kiev 2:02:04 - LMT 1880
+ 2:02:04 - KMT 1924 May 2 # Kiev Mean Time
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Sep 20
+ 1:00 C-Eur CE%sT 1943 Nov 6
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 Jul 1 2:00
+ 2:00 - EET 1992
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+# Ruthenia used CET 1990/1991.
+# "Uzhhorod" is the transliteration of the Ukrainian name, but
+# "Uzhgorod" is more common in English.
+Zone Europe/Uzhgorod 1:29:12 - LMT 1890 Oct
+ 1:00 - CET 1940
+ 1:00 C-Eur CE%sT 1944 Oct
+ 1:00 1:00 CEST 1944 Oct 26
+ 1:00 - CET 1945 Jun 29
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 Jul 1 2:00
+ 1:00 - CET 1991 Mar 31 3:00
+ 2:00 - EET 1992
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+# Zaporozh'ye and eastern Lugansk oblasts observed DST 1990/1991.
+# "Zaporizhia" is the transliteration of the Ukrainian name, but
+# "Zaporozh'ye" is more common in English. Use the common English
+# spelling, except omit the apostrophe as it is not allowed in
+# portable Posix file names.
+Zone Europe/Zaporozhye 2:20:40 - LMT 1880
+ 2:20 - CUT 1924 May 2 # Central Ukraine T
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Aug 25
+ 1:00 C-Eur CE%sT 1943 Oct 25
+ 3:00 Russia MSK/MSD 1991 Mar 31 2:00
+ 2:00 E-Eur EE%sT 1995
+ 2:00 EU EE%sT
+# Central Crimea used Moscow time 1994/1997.
+Zone Europe/Simferopol 2:16:24 - LMT 1880
+ 2:16 - SMT 1924 May 2 # Simferopol Mean T
+ 2:00 - EET 1930 Jun 21
+ 3:00 - MSK 1941 Nov
+ 1:00 C-Eur CE%sT 1944 Apr 13
+ 3:00 Russia MSK/MSD 1990
+ 3:00 - MSK 1990 Jul 1 2:00
+ 2:00 - EET 1992
+# From Paul Eggert (2006-03-22):
+# The _Economist_ (1994-05-28, p 45) reports that central Crimea switched
+# from Kiev to Moscow time sometime after the January 1994 elections.
+# Shanks (1999) says ``date of change uncertain'', but implies that it happened
+# sometime between the 1994 DST switches. Shanks & Pottenger simply say
+# 1994-09-25 03:00, but that can't be right. For now, guess it
+# changed in May.
+ 2:00 E-Eur EE%sT 1994 May
+# From IATA SSIM (1994/1997), which also says that Kerch is still like Kiev.
+ 3:00 E-Eur MSK/MSD 1996 Mar 31 3:00s
+ 3:00 1:00 MSD 1996 Oct 27 3:00s
+# IATA SSIM (1997-09) says Crimea switched to EET/EEST.
+# Assume it happened in March by not changing the clocks.
+ 3:00 Russia MSK/MSD 1997
+ 3:00 - MSK 1997 Mar lastSun 1:00u
+ 2:00 EU EE%sT
+
+###############################################################################
+
+# One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
+# the last Sunday in March to the last Sunday in September in 1986.
+# The source shows Romania changing a day later than everybody else.
+#
+# According to Bernard Sieloff's source, Poland is in the MET time zone but
+# uses the WE DST rules. The Western USSR uses EET+1 and ME DST rules.
+# Bernard Sieloff's source claims Romania switches on the same day, but at
+# 00:00 standard time (i.e., 01:00 DST). It also claims that Turkey
+# switches on the same day, but switches on at 01:00 standard time
+# and off at 00:00 standard time (i.e., 01:00 DST)
+
+# ...
+# Date: Wed, 28 Jan 87 16:56:27 -0100
+# From: Tom Hofmann
+# ...
+#
+# ...the European time rules are...standardized since 1981, when
+# most European coun[tr]ies started DST. Before that year, only
+# a few countries (UK, France, Italy) had DST, each according
+# to own national rules. In 1981, however, DST started on
+# 'Apr firstSun', and not on 'Mar lastSun' as in the following
+# years...
+# But also since 1981 there are some more national exceptions
+# than listed in 'europe': Switzerland, for example, joined DST
+# one year later, Denmark ended DST on 'Oct 1' instead of 'Sep
+# lastSun' in 1981---I don't know how they handle now.
+#
+# Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
+# Soviet Union (as far as I know).
+#
+# Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG,
+# 4002 Basle, Switzerland
+# ...
+
+# ...
+# Date: Wed, 4 Feb 87 22:35:22 +0100
+# From: Dik T. Winter
+# ...
+#
+# The information from Tom Hofmann is (as far as I know) not entirely correct.
+# After a request from chongo at amdahl I tried to retrieve all information
+# about DST in Europe. I was able to find all from about 1969.
+#
+# ...standardization on DST in Europe started in about 1977 with switches on
+# first Sunday in April and last Sunday in September...
+# In 1981 UK joined Europe insofar that
+# the starting day for both shifted to last Sunday in March. And from 1982
+# the whole of Europe used DST, with switch dates April 1 and October 1 in
+# the Sov[i]et Union. In 1985 the SU reverted to standard Europe[a]n switch
+# dates...
+#
+# It should also be remembered that time-zones are not constants; e.g.
+# Portugal switched in 1976 from MET (or CET) to WET with DST...
+# Note also that though there were rules for switch dates not
+# all countries abided to these dates, and many individual deviations
+# occurred, though not since 1982 I believe. Another note: it is always
+# assumed that DST is 1 hour ahead of normal time, this need not be the
+# case; at least in the Netherlands there have been times when DST was 2 hours
+# in advance of normal time.
+#
+# ...
+# dik t. winter, cwi, amsterdam, nederland
+# ...
+
+# From Bob Devine (1988-01-28):
+# ...
+# Greece: Last Sunday in April to last Sunday in September (iffy on dates).
+# Since 1978. Change at midnight.
+# ...
+# Monaco: has same DST as France.
+# ...
diff --git a/share/zoneinfo/factory b/share/zoneinfo/factory
new file mode 100644
index 0000000..36b3263
--- /dev/null
+++ b/share/zoneinfo/factory
@@ -0,0 +1,8 @@
+# @(#)factory 8.1
+
+# For companies who don't want to put time zone specification in
+# their installation procedures. When users run date, they'll get the message.
+# Also useful for the "comp.sources" version.
+
+# Zone NAME GMTOFF RULES FORMAT
+Zone Factory 0 - "Local time zone must be set--use tzsetup"
diff --git a/share/zoneinfo/leapseconds b/share/zoneinfo/leapseconds
new file mode 100644
index 0000000..a2f4f0b
--- /dev/null
+++ b/share/zoneinfo/leapseconds
@@ -0,0 +1,92 @@
+# @(#)leapseconds 8.6
+
+# Allowance for leapseconds added to each timezone file.
+
+# The International Earth Rotation Service periodically uses leap seconds
+# to keep UTC to within 0.9 s of UT1
+# (which measures the true angular orientation of the earth in space); see
+# Terry J Quinn, The BIPM and the accurate measure of time,
+# Proc IEEE 79, 7 (July 1991), 894-905.
+# There were no leap seconds before 1972, because the official mechanism
+# accounting for the discrepancy between atomic time and the earth's rotation
+# did not exist until the early 1970s.
+
+# The correction (+ or -) is made at the given time, so lines
+# will typically look like:
+# Leap YEAR MON DAY 23:59:60 + R/S
+# or
+# Leap YEAR MON DAY 23:59:59 - R/S
+
+# If the leapsecond is Rolling (R) the given time is local time
+# If the leapsecond is Stationary (S) the given time is UTC
+
+# Leap YEAR MONTH DAY HH:MM:SS CORR R/S
+Leap 1972 Jun 30 23:59:60 + S
+Leap 1972 Dec 31 23:59:60 + S
+Leap 1973 Dec 31 23:59:60 + S
+Leap 1974 Dec 31 23:59:60 + S
+Leap 1975 Dec 31 23:59:60 + S
+Leap 1976 Dec 31 23:59:60 + S
+Leap 1977 Dec 31 23:59:60 + S
+Leap 1978 Dec 31 23:59:60 + S
+Leap 1979 Dec 31 23:59:60 + S
+Leap 1981 Jun 30 23:59:60 + S
+Leap 1982 Jun 30 23:59:60 + S
+Leap 1983 Jun 30 23:59:60 + S
+Leap 1985 Jun 30 23:59:60 + S
+Leap 1987 Dec 31 23:59:60 + S
+Leap 1989 Dec 31 23:59:60 + S
+Leap 1990 Dec 31 23:59:60 + S
+Leap 1992 Jun 30 23:59:60 + S
+Leap 1993 Jun 30 23:59:60 + S
+Leap 1994 Jun 30 23:59:60 + S
+Leap 1995 Dec 31 23:59:60 + S
+Leap 1997 Jun 30 23:59:60 + S
+Leap 1998 Dec 31 23:59:60 + S
+Leap 2005 Dec 31 23:59:60 + S
+Leap 2008 Dec 31 23:59:60 + S
+
+# INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
+#
+# SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
+#
+# SERVICE DE LA ROTATION TERRESTRE
+# OBSERVATOIRE DE PARIS
+# 61, Av. de l'Observatoire 75014 PARIS (France)
+# Tel. : 33 (0) 1 40 51 22 26
+# FAX : 33 (0) 1 40 51 22 91
+# e-mail : services.iers@obspm.fr
+# http://hpiers.obspm.fr/eop-pc
+#
+# Paris, 4 July 2008
+#
+# Bulletin C 36
+#
+# To authorities responsible
+# for the measurement and
+# distribution of time
+#
+# UTC TIME STEP
+# on the 1st of January 2009
+#
+# A positive leap second will be introduced at the end of December 2008.
+# The sequence of dates of the UTC second markers will be:
+#
+# 2008 December 31, 23h 59m 59s
+# 2008 December 31, 23h 59m 60s
+# 2009 January 1, 0h 0m 0s
+#
+# The difference between UTC and the International Atomic Time TAI is:
+#
+# from 2006 January 1, 0h UTC, to 2009 January 1 0h UTC : UTC-TAI = - 33s
+# from 2009 January 1, 0h UTC, until further notice : UTC-TAI = - 34s
+#
+# Leap seconds can be introduced in UTC at the end of the months of December
+# or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
+# six months, either to announce a time step in UTC or to confirm that there
+# will be no time step at the next possible date.
+#
+# Daniel GAMBIS
+# Head
+# Earth Orientation Center of IERS
+# Observatoire de Paris, France
diff --git a/share/zoneinfo/northamerica b/share/zoneinfo/northamerica
new file mode 100644
index 0000000..b8b333c
--- /dev/null
+++ b/share/zoneinfo/northamerica
@@ -0,0 +1,2651 @@
+# @(#)northamerica 8.24
+# <pre>
+
+# also includes Central America and the Caribbean
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (1999-03-22):
+# A reliable and entertaining source about time zones is
+# Derek Howse, Greenwich time and longitude, Philip Wilson Publishers (1997).
+
+###############################################################################
+
+# United States
+
+# From Paul Eggert (1999-03-31):
+# Howse writes (pp 121-125) that time zones were invented by
+# Professor Charles Ferdinand Dowd (1825-1904),
+# Principal of Temple Grove Ladies' Seminary (Saratoga Springs, NY).
+# His pamphlet ``A System of National Time for Railroads'' (1870)
+# was the result of his proposals at the Convention of Railroad Trunk Lines
+# in New York City (1869-10). His 1870 proposal was based on Washington, DC,
+# but in 1872-05 he moved the proposed origin to Greenwich.
+# His proposal was adopted by the railroads on 1883-11-18 at 12:00,
+# and the most of the country soon followed suit.
+
+# From Paul Eggert (2005-04-16):
+# That 1883 transition occurred at 12:00 new time, not at 12:00 old time.
+# See p 46 of David Prerau, Seize the daylight, Thunder's Mouth Press (2005).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data in the US is
+# Thomas G. Shanks, The American Atlas (5th edition),
+# San Diego: ACS Publications, Inc. (1991).
+# Make sure you have the errata sheet; the book is somewhat useless without it.
+# It is the source for most of the pre-1991 US entries below.
+
+# From Paul Eggert (2001-03-06):
+# Daylight Saving Time was first suggested as a joke by Benjamin Franklin
+# in his whimsical essay ``An Economical Project for Diminishing the Cost
+# of Light'' published in the Journal de Paris (1784-04-26).
+# Not everyone is happy with the results:
+#
+# I don't really care how time is reckoned so long as there is some
+# agreement about it, but I object to being told that I am saving
+# daylight when my reason tells me that I am doing nothing of the kind.
+# I even object to the implication that I am wasting something
+# valuable if I stay in bed after the sun has risen. As an admirer
+# of moonlight I resent the bossy insistence of those who want to
+# reduce my time for enjoying it. At the back of the Daylight Saving
+# scheme I detect the bony, blue-fingered hand of Puritanism, eager
+# to push people into bed earlier, and get them up earlier, to make
+# them healthy, wealthy and wise in spite of themselves.
+#
+# -- Robertson Davies, The diary of Samuel Marchbanks,
+# Clarke, Irwin (1947), XIX, Sunday
+#
+# For more about the first ten years of DST in the United States, see
+# Robert Garland's <a href="http://www.clpgh.org/exhibit/dst.html">
+# Ten years of daylight saving from the Pittsburgh standpoint
+# (Carnegie Library of Pittsburgh, 1927)</a>.
+#
+# Shanks says that DST was called "War Time" in the US in 1918 and 1919.
+# However, DST was imposed by the Standard Time Act of 1918, which
+# was the first nationwide legal time standard, and apparently
+# time was just called "Standard Time" or "Daylight Saving Time".
+
+# From Arthur David Olson:
+# US Daylight Saving Time ended on the last Sunday of *October* in 1974.
+# See, for example, the front page of the Saturday, 1974-10-26
+# and Sunday, 1974-10-27 editions of the Washington Post.
+
+# From Arthur David Olson:
+# Before the Uniform Time Act of 1966 took effect in 1967, observance of
+# Daylight Saving Time in the US was by local option, except during wartime.
+
+# From Arthur David Olson (2000-09-25):
+# Last night I heard part of a rebroadcast of a 1945 Arch Oboler radio drama.
+# In the introduction, Oboler spoke of "Eastern Peace Time."
+# An AltaVista search turned up
+# <a href="http://rowayton.org/rhs/hstaug45.html">:
+# "When the time is announced over the radio now, it is 'Eastern Peace
+# Time' instead of the old familiar 'Eastern War Time.' Peace is wonderful."
+# </a> (August 1945) by way of confirmation.
+
+# From Joseph Gallant citing
+# George H. Douglas, _The Early Days of Radio Broadcasting_ (1987):
+# At 7 P.M. (Eastern War Time) [on 1945-08-14], the networks were set
+# to switch to London for Attlee's address, but the American people
+# never got to hear his speech live. According to one press account,
+# CBS' Bob Trout was first to announce the word of Japan's surrender,
+# but a few seconds later, NBC, ABC and Mutual also flashed the word
+# of surrender, all of whom interrupting the bells of Big Ben in
+# London which were to precede Mr. Attlee's speech.
+
+# From Paul Eggert (2003-02-09): It was Robert St John, not Bob Trout. From
+# Myrna Oliver's obituary of St John on page B16 of today's Los Angeles Times:
+#
+# ... a war-weary U.S. clung to radios, awaiting word of Japan's surrender.
+# Any announcement from Asia would reach St. John's New York newsroom on a
+# wire service teletype machine, which had prescribed signals for major news.
+# Associated Press, for example, would ring five bells before spewing out
+# typed copy of an important story, and 10 bells for news "of transcendental
+# importance."
+#
+# On Aug. 14, stalling while talking steadily into the NBC networks' open
+# microphone, St. John heard five bells and waited only to hear a sixth bell,
+# before announcing confidently: "Ladies and gentlemen, World War II is over.
+# The Japanese have agreed to our surrender terms."
+#
+# He had scored a 20-second scoop on other broadcasters.
+
+# From Arthur David Olson (2005-08-22):
+# Paul has been careful to use the "US" rules only in those locations
+# that are part of the United States; this reflects the real scope of
+# U.S. government action. So even though the "US" rules have changed
+# in the latest release, other countries won't be affected.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule US 1918 1919 - Mar lastSun 2:00 1:00 D
+Rule US 1918 1919 - Oct lastSun 2:00 0 S
+Rule US 1942 only - Feb 9 2:00 1:00 W # War
+Rule US 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule US 1945 only - Sep 30 2:00 0 S
+Rule US 1967 2006 - Oct lastSun 2:00 0 S
+Rule US 1967 1973 - Apr lastSun 2:00 1:00 D
+Rule US 1974 only - Jan 6 2:00 1:00 D
+Rule US 1975 only - Feb 23 2:00 1:00 D
+Rule US 1976 1986 - Apr lastSun 2:00 1:00 D
+Rule US 1987 2006 - Apr Sun>=1 2:00 1:00 D
+Rule US 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule US 2007 max - Nov Sun>=1 2:00 0 S
+
+# From Arthur David Olson, 2005-12-19
+# We generate the files specified below to guard against old files with
+# obsolete information being left in the time zone binary directory.
+# We limit the list to names that have appeared in previous versions of
+# this time zone package.
+# We do these as separate Zones rather than as Links to avoid problems if
+# a particular place changes whether it observes DST.
+# We put these specifications here in the northamerica file both to
+# increase the chances that they'll actually get compiled and to
+# avoid the need to duplicate the US rules in another file.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone EST -5:00 - EST
+Zone MST -7:00 - MST
+Zone HST -10:00 - HST
+Zone EST5EDT -5:00 US E%sT
+Zone CST6CDT -6:00 US C%sT
+Zone MST7MDT -7:00 US M%sT
+Zone PST8PDT -8:00 US P%sT
+
+# From Bob Devine (1988-01-28):
+# ...Alaska (and Hawaii) had the timezone names changed in 1967.
+# old new
+# Pacific Standard Time(PST) -same-
+# Yukon Standard Time(YST) -same-
+# Central Alaska S.T. (CAT) Alaska-Hawaii St[an]dard Time (AHST)
+# Nome Standard Time (NT) Bering Standard Time (BST)
+#
+# ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz.
+# The YST zone now covers nearly all of the state, AHST just part
+# of the Aleutian islands. No DST.
+
+# From Paul Eggert (1995-12-19):
+# The tables below use `NST', not `NT', for Nome Standard Time.
+# I invented `CAWT' for Central Alaska War Time.
+
+# From U. S. Naval Observatory (1989-01-19):
+# USA EASTERN 5 H BEHIND UTC NEW YORK, WASHINGTON
+# USA EASTERN 4 H BEHIND UTC APR 3 - OCT 30
+# USA CENTRAL 6 H BEHIND UTC CHICAGO, HOUSTON
+# USA CENTRAL 5 H BEHIND UTC APR 3 - OCT 30
+# USA MOUNTAIN 7 H BEHIND UTC DENVER
+# USA MOUNTAIN 6 H BEHIND UTC APR 3 - OCT 30
+# USA PACIFIC 8 H BEHIND UTC L.A., SAN FRANCISCO
+# USA PACIFIC 7 H BEHIND UTC APR 3 - OCT 30
+# USA ALASKA STD 9 H BEHIND UTC MOST OF ALASKA (AKST)
+# USA ALASKA STD 8 H BEHIND UTC APR 3 - OCT 30 (AKDT)
+# USA ALEUTIAN 10 H BEHIND UTC ISLANDS WEST OF 170W
+# USA - " - 9 H BEHIND UTC APR 3 - OCT 30
+# USA HAWAII 10 H BEHIND UTC
+# USA BERING 11 H BEHIND UTC SAMOA, MIDWAY
+
+# From Arthur David Olson (1989-01-21):
+# The above dates are for 1988.
+# Note the "AKST" and "AKDT" abbreviations, the claim that there's
+# no DST in Samoa, and the claim that there is DST in Alaska and the
+# Aleutians.
+
+# From Arthur David Olson (1988-02-13):
+# Legal standard time zone names, from United States Code (1982 Edition and
+# Supplement III), Title 15, Chapter 6, Section 260 and forward. First, names
+# up to 1967-04-01 (when most provisions of the Uniform Time Act of 1966
+# took effect), as explained in sections 263 and 261:
+# (none)
+# United States standard eastern time
+# United States standard mountain time
+# United States standard central time
+# United States standard Pacific time
+# (none)
+# United States standard Alaska time
+# (none)
+# Next, names from 1967-04-01 until 1983-11-30 (the date for
+# public law 98-181):
+# Atlantic standard time
+# eastern standard time
+# central standard time
+# mountain standard time
+# Pacific standard time
+# Yukon standard time
+# Alaska-Hawaii standard time
+# Bering standard time
+# And after 1983-11-30:
+# Atlantic standard time
+# eastern standard time
+# central standard time
+# mountain standard time
+# Pacific standard time
+# Alaska standard time
+# Hawaii-Aleutian standard time
+# Samoa standard time
+# The law doesn't give abbreviations.
+#
+# From Paul Eggert (2000-01-08), following a heads-up from Rives McDow:
+# Public law 106-564 (2000-12-23) introduced the abbreviation
+# "Chamorro Standard Time" for time in Guam and the Northern Marianas.
+# See the file "australasia".
+
+# From Arthur David Olson, 2005-08-09
+# The following was signed into law on 2005-08-08.
+#
+# H.R. 6, Energy Policy Act of 2005, SEC. 110. DAYLIGHT SAVINGS.
+# (a) Amendment- Section 3(a) of the Uniform Time Act of 1966 (15
+# U.S.C. 260a(a)) is amended--
+# (1) by striking `first Sunday of April' and inserting `second
+# Sunday of March'; and
+# (2) by striking `last Sunday of October' and inserting `first
+# Sunday of November'.
+# (b) Effective Date- Subsection (a) shall take effect 1 year after the
+# date of enactment of this Act or March 1, 2007, whichever is later.
+# (c) Report to Congress- Not later than 9 months after the effective
+# date stated in subsection (b), the Secretary shall report to Congress
+# on the impact of this section on energy consumption in the United
+# States.
+# (d) Right to Revert- Congress retains the right to revert the
+# Daylight Saving Time back to the 2005 time schedules once the
+# Department study is complete.
+
+# US eastern time, represented by New York
+
+# Connecticut, Delaware, District of Columbia, most of Florida,
+# Georgia, southeast Indiana (Dearborn and Ohio counties), eastern Kentucky
+# (except America/Kentucky/Louisville below), Maine, Maryland, Massachusetts,
+# New Hampshire, New Jersey, New York, North Carolina, Ohio,
+# Pennsylvania, Rhode Island, South Carolina, eastern Tennessee,
+# Vermont, Virginia, West Virginia
+
+# From Dave Cantor (2004-11-02):
+# Early this summer I had the occasion to visit the Mount Washington
+# Observatory weather station atop (of course!) Mount Washington [, NH]....
+# One of the staff members said that the station was on Eastern Standard Time
+# and didn't change their clocks for Daylight Saving ... so that their
+# reports will always have times which are 5 hours behind UTC.
+
+# From Paul Eggert (2005-08-26):
+# According to today's Huntsville Times
+# <http://www.al.com/news/huntsvilletimes/index.ssf?/base/news/1125047783228320.xml&coll=1>
+# a few towns on Alabama's "eastern border with Georgia, such as Phenix City
+# in Russell County, Lanett in Chambers County and some towns in Lee County,
+# set their watches and clocks on Eastern time." It quotes H.H. "Bubba"
+# Roberts, city administrator in Phenix City. as saying "We are in the Central
+# time zone, but we do go by the Eastern time zone because so many people work
+# in Columbus."
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule NYC 1920 only - Mar lastSun 2:00 1:00 D
+Rule NYC 1920 only - Oct lastSun 2:00 0 S
+Rule NYC 1921 1966 - Apr lastSun 2:00 1:00 D
+Rule NYC 1921 1954 - Sep lastSun 2:00 0 S
+Rule NYC 1955 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/New_York -4:56:02 - LMT 1883 Nov 18 12:03:58
+ -5:00 US E%sT 1920
+ -5:00 NYC E%sT 1942
+ -5:00 US E%sT 1946
+ -5:00 NYC E%sT 1967
+ -5:00 US E%sT
+
+# US central time, represented by Chicago
+
+# Alabama, Arkansas, Florida panhandle (Bay, Calhoun, Escambia,
+# Gulf, Holmes, Jackson, Okaloosa, Santa Rosa, Walton, and
+# Washington counties), Illinois, western Indiana
+# (Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+# Vanderburgh, and Warrick counties), Iowa, most of Kansas, western
+# Kentucky, Louisiana, Minnesota, Mississippi, Missouri, eastern
+# Nebraska, eastern North Dakota, Oklahoma, eastern South Dakota,
+# western Tennessee, most of Texas, Wisconsin
+
+# From Larry M. Smith (2006-04-26) re Wisconsin:
+# http://www.legis.state.wi.us/statutes/Stat0175.pdf ...
+# is currently enforced at the 01:00 time of change. Because the local
+# "bar time" in the state corresponds to 02:00, a number of citations
+# are issued for the "sale of class 'B' alcohol after prohibited
+# hours" within the deviated hour of this change every year....
+#
+# From Douglas R. Bomberg (2007-03-12):
+# Wisconsin has enacted (nearly eleventh-hour) legislation to get WI
+# Statue 175 closer in synch with the US Congress' intent....
+# http://www.legis.state.wi.us/2007/data/acts/07Act3.pdf
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Chicago 1920 only - Jun 13 2:00 1:00 D
+Rule Chicago 1920 1921 - Oct lastSun 2:00 0 S
+Rule Chicago 1921 only - Mar lastSun 2:00 1:00 D
+Rule Chicago 1922 1966 - Apr lastSun 2:00 1:00 D
+Rule Chicago 1922 1954 - Sep lastSun 2:00 0 S
+Rule Chicago 1955 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Chicago -5:50:36 - LMT 1883 Nov 18 12:09:24
+ -6:00 US C%sT 1920
+ -6:00 Chicago C%sT 1936 Mar 1 2:00
+ -5:00 - EST 1936 Nov 15 2:00
+ -6:00 Chicago C%sT 1942
+ -6:00 US C%sT 1946
+ -6:00 Chicago C%sT 1967
+ -6:00 US C%sT
+# Oliver County, ND switched from mountain to central time on 1992-10-25.
+Zone America/North_Dakota/Center -6:45:12 - LMT 1883 Nov 18 12:14:48
+ -7:00 US M%sT 1992 Oct 25 02:00
+ -6:00 US C%sT
+# Morton County, ND, switched from mountain to central time on
+# 2003-10-26, except for the area around Mandan which was already central time.
+# See <http://dmses.dot.gov/docimages/p63/135818.pdf>.
+# Officially this switch also included part of Sioux County, and
+# Jones, Mellette, and Todd Counties in South Dakota;
+# but in practice these other counties were already observing central time.
+# See <http://www.epa.gov/fedrgstr/EPA-IMPACT/2003/October/Day-28/i27056.htm>.
+Zone America/North_Dakota/New_Salem -6:45:39 - LMT 1883 Nov 18 12:14:21
+ -7:00 US M%sT 2003 Oct 26 02:00
+ -6:00 US C%sT
+
+# US mountain time, represented by Denver
+#
+# Colorado, far western Kansas, Montana, western
+# Nebraska, Nevada border (Jackpot, Owyhee, and Mountain City),
+# New Mexico, southwestern North Dakota,
+# western South Dakota, far western Texas (El Paso County, Hudspeth County,
+# and Pine Springs and Nickel Creek in Culberson County), Utah, Wyoming
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Denver 1920 1921 - Mar lastSun 2:00 1:00 D
+Rule Denver 1920 only - Oct lastSun 2:00 0 S
+Rule Denver 1921 only - May 22 2:00 0 S
+Rule Denver 1965 1966 - Apr lastSun 2:00 1:00 D
+Rule Denver 1965 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Denver -6:59:56 - LMT 1883 Nov 18 12:00:04
+ -7:00 US M%sT 1920
+ -7:00 Denver M%sT 1942
+ -7:00 US M%sT 1946
+ -7:00 Denver M%sT 1967
+ -7:00 US M%sT
+
+# US Pacific time, represented by Los Angeles
+#
+# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
+# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
+# and the northern three-quarters of Idaho county),
+# most of Nevada, most of Oregon, and Washington
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule CA 1948 only - Mar 14 2:00 1:00 D
+Rule CA 1949 only - Jan 1 2:00 0 S
+Rule CA 1950 1966 - Apr lastSun 2:00 1:00 D
+Rule CA 1950 1961 - Sep lastSun 2:00 0 S
+Rule CA 1962 1966 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Los_Angeles -7:52:58 - LMT 1883 Nov 18 12:07:02
+ -8:00 US P%sT 1946
+ -8:00 CA P%sT 1967
+ -8:00 US P%sT
+
+# Alaska
+# AK%sT is the modern abbreviation for -9:00 per USNO.
+#
+# From Paul Eggert (2001-05-30):
+# Howse writes that Alaska switched from the Julian to the Gregorian calendar,
+# and from east-of-GMT to west-of-GMT days, when the US bought it from Russia.
+# This was on 1867-10-18, a Friday; the previous day was 1867-10-06 Julian,
+# also a Friday. Include only the time zone part of this transition,
+# ignoring the switch from Julian to Gregorian, since we can't represent
+# the Julian calendar.
+#
+# As far as we know, none of the exact locations mentioned below were
+# permanently inhabited in 1867 by anyone using either calendar.
+# (Yakutat was colonized by the Russians in 1799, but the settlement
+# was destroyed in 1805 by a Yakutat-kon war party.) However, there
+# were nearby inhabitants in some cases and for our purposes perhaps
+# it's best to simply use the official transition.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Juneau 15:02:19 - LMT 1867 Oct 18
+ -8:57:41 - LMT 1900 Aug 20 12:00
+ -8:00 - PST 1942
+ -8:00 US P%sT 1946
+ -8:00 - PST 1969
+ -8:00 US P%sT 1983 Oct 30 2:00
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Yakutat 14:41:05 - LMT 1867 Oct 18
+ -9:18:55 - LMT 1900 Aug 20 12:00
+ -9:00 - YST 1942
+ -9:00 US Y%sT 1946
+ -9:00 - YST 1969
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Anchorage 14:00:24 - LMT 1867 Oct 18
+ -9:59:36 - LMT 1900 Aug 20 12:00
+ -10:00 - CAT 1942
+ -10:00 US CAT/CAWT 1945 Aug 14 23:00u
+ -10:00 US CAT/CAPT 1946 # Peace
+ -10:00 - CAT 1967 Apr
+ -10:00 - AHST 1969
+ -10:00 US AH%sT 1983 Oct 30 2:00
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Nome 12:58:21 - LMT 1867 Oct 18
+ -11:01:38 - LMT 1900 Aug 20 12:00
+ -11:00 - NST 1942
+ -11:00 US N%sT 1946
+ -11:00 - NST 1967 Apr
+ -11:00 - BST 1969
+ -11:00 US B%sT 1983 Oct 30 2:00
+ -9:00 US Y%sT 1983 Nov 30
+ -9:00 US AK%sT
+Zone America/Adak 12:13:21 - LMT 1867 Oct 18
+ -11:46:38 - LMT 1900 Aug 20 12:00
+ -11:00 - NST 1942
+ -11:00 US N%sT 1946
+ -11:00 - NST 1967 Apr
+ -11:00 - BST 1969
+ -11:00 US B%sT 1983 Oct 30 2:00
+ -10:00 US AH%sT 1983 Nov 30
+ -10:00 US HA%sT
+# The following switches don't quite make our 1970 cutoff.
+#
+# Shanks writes that part of southwest Alaska (e.g. Aniak)
+# switched from -11:00 to -10:00 on 1968-09-22 at 02:00,
+# and another part (e.g. Akiak) made the same switch five weeks later.
+#
+# From David Flater (2004-11-09):
+# In e-mail, 2004-11-02, Ray Hudson, historian/liaison to the Unalaska
+# Historic Preservation Commission, provided this information, which
+# suggests that Unalaska deviated from statutory time from early 1967
+# possibly until 1983:
+#
+# Minutes of the Unalaska City Council Meeting, January 10, 1967:
+# "Except for St. Paul and Akutan, Unalaska is the only important
+# location not on Alaska Standard Time. The following resolution was
+# made by William Robinson and seconded by Henry Swanson: Be it
+# resolved that the City of Unalaska hereby goes to Alaska Standard
+# Time as of midnight Friday, January 13, 1967 (1 A.M. Saturday,
+# January 14, Alaska Standard Time.) This resolution was passed with
+# three votes for and one against."
+
+# Hawaii
+#
+# From Arthur David Olson:
+# And then there's Hawaii.
+# DST was observed for one day in 1933;
+# standard time was changed by half an hour in 1947;
+# it's always standard as of 1986.
+#
+# From Paul Eggert:
+# Shanks says the 1933 experiment lasted for three weeks. Go with Shanks.
+#
+Zone Pacific/Honolulu -10:31:26 - LMT 1900 Jan 1 12:00
+ -10:30 - HST 1933 Apr 30 2:00
+ -10:30 1:00 HDT 1933 May 21 2:00
+ -10:30 US H%sT 1947 Jun 8 2:00
+ -10:00 - HST
+
+# Now we turn to US areas that have diverged from the consensus since 1970.
+
+# Arizona mostly uses MST.
+
+# From Paul Eggert (2002-10-20):
+#
+# The information in the rest of this paragraph is derived from the
+# <a href="http://www.dlapr.lib.az.us/links/daylight.htm">
+# Daylight Saving Time web page (2002-01-23)</a> maintained by the
+# Arizona State Library, Archives and Public Records.
+# Between 1944-01-01 and 1944-04-01 the State of Arizona used standard
+# time, but by federal law railroads, airlines, bus lines, military
+# personnel, and some engaged in interstate commerce continued to
+# observe war (i.e., daylight saving) time. The 1944-03-17 Phoenix
+# Gazette says that was the date the law changed, and that 04-01 was
+# the date the state's clocks would change. In 1945 the State of
+# Arizona used standard time all year, again with exceptions only as
+# mandated by federal law. Arizona observed DST in 1967, but Arizona
+# Laws 1968, ch. 183 (effective 1968-03-21) repealed DST.
+#
+# Shanks says the 1944 experiment came to an end on 1944-03-17.
+# Go with the Arizona State Library instead.
+
+Zone America/Phoenix -7:28:18 - LMT 1883 Nov 18 11:31:42
+ -7:00 US M%sT 1944 Jan 1 00:01
+ -7:00 - MST 1944 Apr 1 00:01
+ -7:00 US M%sT 1944 Oct 1 00:01
+ -7:00 - MST 1967
+ -7:00 US M%sT 1968 Mar 21
+ -7:00 - MST
+# From Arthur David Olson (1988-02-13):
+# A writer from the Inter Tribal Council of Arizona, Inc.,
+# notes in private correspondence dated 1987-12-28 that "Presently, only the
+# Navajo Nation participates in the Daylight Saving Time policy, due to its
+# large size and location in three states." (The "only" means that other
+# tribal nations don't use DST.)
+
+Link America/Denver America/Shiprock
+
+# Southern Idaho (Ada, Adams, Bannock, Bear Lake, Bingham, Blaine,
+# Boise, Bonneville, Butte, Camas, Canyon, Caribou, Cassia, Clark,
+# Custer, Elmore, Franklin, Fremont, Gem, Gooding, Jefferson, Jerome,
+# Lemhi, Lincoln, Madison, Minidoka, Oneida, Owyhee, Payette, Power,
+# Teton, Twin Falls, Valley, Washington counties, and the southern
+# quarter of Idaho county) and eastern Oregon (most of Malheur County)
+# switched four weeks late in 1974.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Boise -7:44:49 - LMT 1883 Nov 18 12:15:11
+ -8:00 US P%sT 1923 May 13 2:00
+ -7:00 US M%sT 1974
+ -7:00 - MST 1974 Feb 3 2:00
+ -7:00 US M%sT
+
+# Indiana
+#
+# For a map of Indiana's time zone regions, see:
+# <a href="http://www.mccsc.edu/time.html">
+# What time is it in Indiana?
+# </a> (2006-03-01)
+#
+# From Paul Eggert (2007-08-17):
+# Since 1970, most of Indiana has been like America/Indiana/Indianapolis,
+# with the following exceptions:
+#
+# - Gibson, Jasper, Lake, LaPorte, Newton, Porter, Posey, Spencer,
+# Vandenburgh, and Warrick counties have been like America/Chicago.
+#
+# - Dearborn and Ohio counties have been like America/New_York.
+#
+# - Clark, Floyd, and Harrison counties have been like
+# America/Kentucky/Louisville.
+#
+# - Crawford, Daviess, Dubois, Knox, Martin, Perry, Pike, Pulaski, Starke,
+# and Switzerland counties have their own time zone histories as noted below.
+#
+# Shanks partitioned Indiana into 345 regions, each with its own time history,
+# and wrote ``Even newspaper reports present contradictory information.''
+# Those Hoosiers! Such a flighty and changeable people!
+# Fortunately, most of the complexity occurred before our cutoff date of 1970.
+#
+# Other than Indianapolis, the Indiana place names are so nondescript
+# that they would be ambiguous if we left them at the `America' level.
+# So we reluctantly put them all in a subdirectory `America/Indiana'.
+
+# From Paul Eggert (2005-08-16):
+# http://www.mccsc.edu/time.html says that Indiana will use DST starting 2006.
+
+# From Nathan Stratton Treadway (2006-03-30):
+# http://www.dot.gov/affairs/dot0406.htm [3705 B]
+# From Deborah Goldsmith (2006-01-18):
+# http://dmses.dot.gov/docimages/pdf95/382329_web.pdf [2.9 MB]
+# From Paul Eggert (2006-01-20):
+# It says "DOT is relocating the time zone boundary in Indiana to move Starke,
+# Pulaski, Knox, Daviess, Martin, Pike, Dubois, and Perry Counties from the
+# Eastern Time Zone to the Central Time Zone.... The effective date of
+# this rule is 2:OO a.m. EST Sunday, April 2, 2006, which is the
+# changeover date from standard time to Daylight Saving Time."
+# Strictly speaking, this means the affected counties will change their
+# clocks twice that night, but this obviously is in error. The intent
+# is that 01:59:59 EST be followed by 02:00:00 CDT.
+
+# From Gwillim Law (2007-02-10):
+# The Associated Press has been reporting that Pulaski County, Indiana is
+# going to switch from Central to Eastern Time on March 11, 2007....
+# http://www.indystar.com/apps/pbcs.dll/article?AID=/20070207/LOCAL190108/702070524/0/LOCAL
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Indianapolis 1941 only - Jun 22 2:00 1:00 D
+Rule Indianapolis 1941 1954 - Sep lastSun 2:00 0 S
+Rule Indianapolis 1946 1954 - Apr lastSun 2:00 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Indianapolis -5:44:38 - LMT 1883 Nov 18 12:15:22
+ -6:00 US C%sT 1920
+ -6:00 Indianapolis C%sT 1942
+ -6:00 US C%sT 1946
+ -6:00 Indianapolis C%sT 1955 Apr 24 2:00
+ -5:00 - EST 1957 Sep 29 2:00
+ -6:00 - CST 1958 Apr 27 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006
+ -5:00 US E%sT
+#
+# Eastern Crawford County, Indiana, left its clocks alone in 1974,
+# as well as from 1976 through 2005.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Marengo 1951 only - Apr lastSun 2:00 1:00 D
+Rule Marengo 1951 only - Sep lastSun 2:00 0 S
+Rule Marengo 1954 1960 - Apr lastSun 2:00 1:00 D
+Rule Marengo 1954 1960 - Sep lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Marengo -5:45:23 - LMT 1883 Nov 18 12:14:37
+ -6:00 US C%sT 1951
+ -6:00 Marengo C%sT 1961 Apr 30 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1974 Jan 6 2:00
+ -6:00 1:00 CDT 1974 Oct 27 2:00
+ -5:00 US E%sT 1976
+ -5:00 - EST 2006
+ -5:00 US E%sT
+#
+# Daviess, Dubois, Knox, and Martin Counties, Indiana,
+# switched from eastern to central time in April 2006, then switched back
+# in November 2007.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Vincennes 1946 only - Apr lastSun 2:00 1:00 D
+Rule Vincennes 1946 only - Sep lastSun 2:00 0 S
+Rule Vincennes 1953 1954 - Apr lastSun 2:00 1:00 D
+Rule Vincennes 1953 1959 - Sep lastSun 2:00 0 S
+Rule Vincennes 1955 only - May 1 0:00 1:00 D
+Rule Vincennes 1956 1963 - Apr lastSun 2:00 1:00 D
+Rule Vincennes 1960 only - Oct lastSun 2:00 0 S
+Rule Vincennes 1961 only - Sep lastSun 2:00 0 S
+Rule Vincennes 1962 1963 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Vincennes -5:50:07 - LMT 1883 Nov 18 12:09:53
+ -6:00 US C%sT 1946
+ -6:00 Vincennes C%sT 1964 Apr 26 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT 2007 Nov 4 2:00
+ -5:00 US E%sT
+#
+# Perry County, Indiana, switched from eastern to central time in April 2006.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Perry 1946 only - Apr lastSun 2:00 1:00 D
+Rule Perry 1946 only - Sep lastSun 2:00 0 S
+Rule Perry 1953 1954 - Apr lastSun 2:00 1:00 D
+Rule Perry 1953 1959 - Sep lastSun 2:00 0 S
+Rule Perry 1955 only - May 1 0:00 1:00 D
+Rule Perry 1956 1963 - Apr lastSun 2:00 1:00 D
+Rule Perry 1960 only - Oct lastSun 2:00 0 S
+Rule Perry 1961 only - Sep lastSun 2:00 0 S
+Rule Perry 1962 1963 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Tell_City -5:47:03 - LMT 1883 Nov 18 12:12:57
+ -6:00 US C%sT 1946
+ -6:00 Perry C%sT 1964 Apr 26 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT
+#
+# Pike County, Indiana moved from central to eastern time in 1977,
+# then switched back in 2006, then switched back again in 2007.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Pike 1955 only - May 1 0:00 1:00 D
+Rule Pike 1955 1960 - Sep lastSun 2:00 0 S
+Rule Pike 1956 1964 - Apr lastSun 2:00 1:00 D
+Rule Pike 1961 1964 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Petersburg -5:49:07 - LMT 1883 Nov 18 12:10:53
+ -6:00 US C%sT 1955
+ -6:00 Pike C%sT 1965 Apr 25 2:00
+ -5:00 - EST 1966 Oct 30 2:00
+ -6:00 US C%sT 1977 Oct 30 2:00
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT 2007 Nov 4 2:00
+ -5:00 US E%sT
+#
+# Starke County, Indiana moved from central to eastern time in 1991,
+# then switched back in 2006.
+# From Arthur David Olson (1991-10-28):
+# An article on page A3 of the Sunday, 1991-10-27 Washington Post
+# notes that Starke County switched from Central time to Eastern time as of
+# 1991-10-27.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Starke 1947 1961 - Apr lastSun 2:00 1:00 D
+Rule Starke 1947 1954 - Sep lastSun 2:00 0 S
+Rule Starke 1955 1956 - Oct lastSun 2:00 0 S
+Rule Starke 1957 1958 - Sep lastSun 2:00 0 S
+Rule Starke 1959 1961 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Knox -5:46:30 - LMT 1883 Nov 18 12:13:30
+ -6:00 US C%sT 1947
+ -6:00 Starke C%sT 1962 Apr 29 2:00
+ -5:00 - EST 1963 Oct 27 2:00
+ -6:00 US C%sT 1991 Oct 27 2:00
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT
+#
+# Pulaski County, Indiana, switched from eastern to central time in
+# April 2006 and then switched back in March 2007.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Pulaski 1946 1960 - Apr lastSun 2:00 1:00 D
+Rule Pulaski 1946 1954 - Sep lastSun 2:00 0 S
+Rule Pulaski 1955 1956 - Oct lastSun 2:00 0 S
+Rule Pulaski 1957 1960 - Sep lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Winamac -5:46:25 - LMT 1883 Nov 18 12:13:35
+ -6:00 US C%sT 1946
+ -6:00 Pulaski C%sT 1961 Apr 30 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1971
+ -5:00 - EST 2006 Apr 2 2:00
+ -6:00 US C%sT 2007 Mar 11 2:00
+ -5:00 US E%sT
+#
+# Switzerland County, Indiana, did not observe DST from 1973 through 2005.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Indiana/Vevay -5:40:16 - LMT 1883 Nov 18 12:19:44
+ -6:00 US C%sT 1954 Apr 25 2:00
+ -5:00 - EST 1969
+ -5:00 US E%sT 1973
+ -5:00 - EST 2006
+ -5:00 US E%sT
+
+# Part of Kentucky left its clocks alone in 1974.
+# This also includes Clark, Floyd, and Harrison counties in Indiana.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Louisville 1921 only - May 1 2:00 1:00 D
+Rule Louisville 1921 only - Sep 1 2:00 0 S
+Rule Louisville 1941 1961 - Apr lastSun 2:00 1:00 D
+Rule Louisville 1941 only - Sep lastSun 2:00 0 S
+Rule Louisville 1946 only - Jun 2 2:00 0 S
+Rule Louisville 1950 1955 - Sep lastSun 2:00 0 S
+Rule Louisville 1956 1960 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Kentucky/Louisville -5:43:02 - LMT 1883 Nov 18 12:16:58
+ -6:00 US C%sT 1921
+ -6:00 Louisville C%sT 1942
+ -6:00 US C%sT 1946
+ -6:00 Louisville C%sT 1961 Jul 23 2:00
+ -5:00 - EST 1968
+ -5:00 US E%sT 1974 Jan 6 2:00
+ -6:00 1:00 CDT 1974 Oct 27 2:00
+ -5:00 US E%sT
+#
+# Wayne County, Kentucky
+#
+# From
+# <a href="http://www.lake-cumberland.com/life/archive/news990129time.shtml">
+# Lake Cumberland LIFE
+# </a> (1999-01-29) via WKYM-101.7:
+# Clinton County has joined Wayne County in asking the DoT to change from
+# the Central to the Eastern time zone.... The Wayne County government made
+# the same request in December. And while Russell County officials have not
+# taken action, the majority of respondents to a poll conducted there in
+# August indicated they would like to change to "fast time" also.
+# The three Lake Cumberland counties are the farthest east of any U.S.
+# location in the Central time zone.
+#
+# From Rich Wales (2000-08-29):
+# After prolonged debate, and despite continuing deep differences of opinion,
+# Wayne County (central Kentucky) is switching from Central (-0600) to Eastern
+# (-0500) time. They won't "fall back" this year. See Sara Shipley,
+# The difference an hour makes, Nando Times (2000-08-29 15:33 -0400).
+#
+# From Paul Eggert (2001-07-16):
+# The final rule was published in the
+# <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=2000_register&docid=fr17au00-22">
+# Federal Register 65, 160 (2000-08-17), page 50154-50158.
+# </a>
+#
+Zone America/Kentucky/Monticello -5:39:24 - LMT 1883 Nov 18 12:20:36
+ -6:00 US C%sT 1946
+ -6:00 - CST 1968
+ -6:00 US C%sT 2000 Oct 29 2:00
+ -5:00 US E%sT
+
+
+# From Rives McDow (2000-08-30):
+# Here ... are all the changes in the US since 1985.
+# Kearny County, KS (put all of county on central;
+# previously split between MST and CST) ... 1990-10
+# Starke County, IN (from CST to EST) ... 1991-10
+# Oliver County, ND (from MST to CST) ... 1992-10
+# West Wendover, NV (from PST TO MST) ... 1999-10
+# Wayne County, KY (from CST to EST) ... 2000-10
+#
+# From Paul Eggert (2001-07-17):
+# We don't know where the line used to be within Kearny County, KS,
+# so omit that change for now.
+# See America/Indiana/Knox for the Starke County, IN change.
+# See America/North_Dakota/Center for the Oliver County, ND change.
+# West Wendover, NV officially switched from Pacific to mountain time on
+# 1999-10-31. See the
+# <a href="http://frwebgate.access.gpo.gov/cgi-bin/getdoc.cgi?dbname=1999_register&docid=fr21oc99-15">
+# Federal Register 64, 203 (1999-10-21), page 56705-56707.
+# </a>
+# However, the Federal Register says that West Wendover already operated
+# on mountain time, and the rule merely made this official;
+# hence a separate tz entry is not needed.
+
+# Michigan
+#
+# From Bob Devine (1988-01-28):
+# Michigan didn't observe DST from 1968 to 1973.
+#
+# From Paul Eggert (1999-03-31):
+# Shanks writes that Michigan started using standard time on 1885-09-18,
+# but Howse writes (pp 124-125, referring to Popular Astronomy, 1901-01)
+# that Detroit kept
+#
+# local time until 1900 when the City Council decreed that clocks should
+# be put back twenty-eight minutes to Central Standard Time. Half the
+# city obeyed, half refused. After considerable debate, the decision
+# was rescinded and the city reverted to Sun time. A derisive offer to
+# erect a sundial in front of the city hall was referred to the
+# Committee on Sewers. Then, in 1905, Central time was adopted
+# by city vote.
+#
+# This story is too entertaining to be false, so go with Howse over Shanks.
+#
+# From Paul Eggert (2001-03-06):
+# Garland (1927) writes ``Cleveland and Detroit advanced their clocks
+# one hour in 1914.'' This change is not in Shanks. We have no more
+# info, so omit this for now.
+#
+# Most of Michigan observed DST from 1973 on, but was a bit late in 1975.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Detroit 1948 only - Apr lastSun 2:00 1:00 D
+Rule Detroit 1948 only - Sep lastSun 2:00 0 S
+Rule Detroit 1967 only - Jun 14 2:00 1:00 D
+Rule Detroit 1967 only - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Detroit -5:32:11 - LMT 1905
+ -6:00 - CST 1915 May 15 2:00
+ -5:00 - EST 1942
+ -5:00 US E%sT 1946
+ -5:00 Detroit E%sT 1973
+ -5:00 US E%sT 1975
+ -5:00 - EST 1975 Apr 27 2:00
+ -5:00 US E%sT
+#
+# Dickinson, Gogebic, Iron, and Menominee Counties, Michigan,
+# switched from EST to CST/CDT in 1973.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER
+Rule Menominee 1946 only - Apr lastSun 2:00 1:00 D
+Rule Menominee 1946 only - Sep lastSun 2:00 0 S
+Rule Menominee 1966 only - Apr lastSun 2:00 1:00 D
+Rule Menominee 1966 only - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Menominee -5:50:27 - LMT 1885 Sep 18 12:00
+ -6:00 US C%sT 1946
+ -6:00 Menominee C%sT 1969 Apr 27 2:00
+ -5:00 - EST 1973 Apr 29 2:00
+ -6:00 US C%sT
+
+# Navassa
+# administered by the US Fish and Wildlife Service
+# claimed by US under the provisions of the 1856 Guano Islands Act
+# also claimed by Haiti
+# occupied 1857/1900 by the Navassa Phosphate Co
+# US lighthouse 1917/1996-09
+# currently uninhabited
+# see Mark Fineman, ``An Isle Rich in Guano and Discord'',
+# _Los Angeles Times_ (1998-11-10), A1, A10; it cites
+# Jimmy Skaggs, _The Great Guano Rush_ (1994).
+
+################################################################################
+
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Other sources occasionally used include:
+#
+# Edward W. Whitman, World Time Differences,
+# Whitman Publishing Co, 2 Niagara Av, Ealing, London (undated),
+# which I found in the UCLA library.
+#
+# <a href="http://www.pettswoodvillage.co.uk/Daylight_Savings_William_Willett.pdf">
+# William Willett, The Waste of Daylight, 19th edition
+# </a> (1914-03)
+#
+# See the `europe' file for Greenland.
+
+# Canada
+
+# From Alain LaBont<e'> (1994-11-14):
+# I post here the time zone abbreviations standardized in Canada
+# for both English and French in the CAN/CSA-Z234.4-89 standard....
+#
+# UTC Standard time Daylight savings time
+# offset French English French English
+# -2:30 - - HAT NDT
+# -3 - - HAA ADT
+# -3:30 HNT NST - -
+# -4 HNA AST HAE EDT
+# -5 HNE EST HAC CDT
+# -6 HNC CST HAR MDT
+# -7 HNR MST HAP PDT
+# -8 HNP PST HAY YDT
+# -9 HNY YST - -
+#
+# HN: Heure Normale ST: Standard Time
+# HA: Heure Avanc<e'>e DT: Daylight saving Time
+#
+# A: de l'Atlantique Atlantic
+# C: du Centre Central
+# E: de l'Est Eastern
+# M: Mountain
+# N: Newfoundland
+# P: du Pacifique Pacific
+# R: des Rocheuses
+# T: de Terre-Neuve
+# Y: du Yukon Yukon
+#
+# From Paul Eggert (1994-11-22):
+# Alas, this sort of thing must be handled by localization software.
+
+# Unless otherwise specified, the data for Canada are all from Shanks
+# & Pottenger.
+
+# From Chris Walton (2006-04-01, 2006-04-25, 2006-06-26, 2007-01-31,
+# 2007-03-01):
+# The British Columbia government announced yesterday that it will
+# adjust daylight savings next year to align with changes in the
+# U.S. and the rest of Canada....
+# http://www2.news.gov.bc.ca/news_releases_2005-2009/2006AG0014-000330.htm
+# ...
+# Nova Scotia
+# Daylight saving time will be extended by four weeks starting in 2007....
+# http://www.gov.ns.ca/just/regulations/rg2/2006/ma1206.pdf
+#
+# [For New Brunswick] the new legislation dictates that the time change is to
+# be done at 02:00 instead of 00:01.
+# http://www.gnb.ca/0062/acts/BBA-2006/Chap-19.pdf
+# ...
+# Manitoba has traditionally changed the clock every fall at 03:00.
+# As of 2006, the transition is to take place one hour earlier at 02:00.
+# http://web2.gov.mb.ca/laws/statutes/ccsm/o030e.php
+# ...
+# [Alberta, Ontario, Quebec] will follow US rules.
+# http://www.qp.gov.ab.ca/documents/spring/CH03_06.CFM
+# http://www.e-laws.gov.on.ca/DBLaws/Source/Regs/English/2006/R06111_e.htm
+# http://www2.publicationsduquebec.gouv.qc.ca/dynamicSearch/telecharge.php?type=5&file=2006C39A.PDF
+# ...
+# P.E.I. will follow US rules....
+# http://www.assembly.pe.ca/bills/pdf_chapter/62/3/chapter-41.pdf
+# ...
+# Province of Newfoundland and Labrador....
+# http://www.hoa.gov.nl.ca/hoa/bills/Bill0634.htm
+# ...
+# Yukon
+# http://www.gov.yk.ca/legislation/regs/oic2006_127.pdf
+# ...
+# N.W.T. will follow US rules. Whoever maintains the government web site
+# does not seem to believe in bookmarks. To see the news release, click the
+# following link and search for "Daylight Savings Time Change". Press the
+# "Daylight Savings Time Change" link; it will fire off a popup using
+# JavaScript.
+# http://www.exec.gov.nt.ca/currentnews/currentPR.asp?mode=archive
+# ...
+# Nunavut
+# An amendment to the Interpretation Act was registered on February 19/2007....
+# http://action.attavik.ca/home/justice-gn/attach/2007/gaz02part2.pdf
+
+# From Paul Eggert (2006-04-25):
+# H. David Matthews and Mary Vincent's map
+# <a href="http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp">
+# "It's about TIME", _Canadian Geographic_ (September-October 1998)
+# </a> contains detailed boundaries for regions observing nonstandard
+# time and daylight saving time arrangements in Canada circa 1998.
+#
+# INMS, the Institute for National Measurement Standards in Ottawa, has <a
+# href="http://inms-ienm.nrc-cnrc.gc.ca/en/time_services/daylight_saving_e.php">
+# information about standard and daylight saving time zones in Canada.
+# </a> (updated periodically).
+# Its unofficial information is often taken from Matthews and Vincent.
+
+# From Paul Eggert (2006-06-27):
+# For now, assume all of DST-observing Canada will fall into line with the
+# new US DST rules,
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Canada 1918 only - Apr 14 2:00 1:00 D
+Rule Canada 1918 only - Oct 31 2:00 0 S
+Rule Canada 1942 only - Feb 9 2:00 1:00 W # War
+Rule Canada 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Canada 1945 only - Sep 30 2:00 0 S
+Rule Canada 1974 1986 - Apr lastSun 2:00 1:00 D
+Rule Canada 1974 2006 - Oct lastSun 2:00 0 S
+Rule Canada 1987 2006 - Apr Sun>=1 2:00 1:00 D
+Rule Canada 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule Canada 2007 max - Nov Sun>=1 2:00 0 S
+
+
+# Newfoundland and Labrador
+
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) write that Labrador should use NST/NDT,
+# but the only part of Labrador that follows the rules is the
+# southeast corner, including Port Hope Simpson and Mary's Harbour,
+# but excluding, say, Black Tickle.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule StJohns 1917 only - Apr 8 2:00 1:00 D
+Rule StJohns 1917 only - Sep 17 2:00 0 S
+# Whitman gives 1919 Apr 5 and 1920 Apr 5; go with Shanks & Pottenger.
+Rule StJohns 1919 only - May 5 23:00 1:00 D
+Rule StJohns 1919 only - Aug 12 23:00 0 S
+# For 1931-1935 Whitman gives Apr same date; go with Shanks & Pottenger.
+Rule StJohns 1920 1935 - May Sun>=1 23:00 1:00 D
+Rule StJohns 1920 1935 - Oct lastSun 23:00 0 S
+# For 1936-1941 Whitman gives May Sun>=8 and Oct Sun>=1; go with Shanks &
+# Pottenger.
+Rule StJohns 1936 1941 - May Mon>=9 0:00 1:00 D
+Rule StJohns 1936 1941 - Oct Mon>=2 0:00 0 S
+# Whitman gives the following transitions:
+# 1942 03-01/12-31, 1943 05-30/09-05, 1944 07-10/09-02, 1945 01-01/10-07
+# but go with Shanks & Pottenger and assume they used Canadian rules.
+# For 1946-9 Whitman gives May 5,4,9,1 - Oct 1,5,3,2, and for 1950 he gives
+# Apr 30 - Sep 24; go with Shanks & Pottenger.
+Rule StJohns 1946 1950 - May Sun>=8 2:00 1:00 D
+Rule StJohns 1946 1950 - Oct Sun>=2 2:00 0 S
+Rule StJohns 1951 1986 - Apr lastSun 2:00 1:00 D
+Rule StJohns 1951 1959 - Sep lastSun 2:00 0 S
+Rule StJohns 1960 1986 - Oct lastSun 2:00 0 S
+# From Paul Eggert (2000-10-02):
+# INMS (2000-09-12) says that, since 1988 at least, Newfoundland switches
+# at 00:01 local time. For now, assume it started in 1987.
+Rule StJohns 1987 only - Apr Sun>=1 0:01 1:00 D
+Rule StJohns 1987 2006 - Oct lastSun 0:01 0 S
+Rule StJohns 1988 only - Apr Sun>=1 0:01 2:00 DD
+Rule StJohns 1989 2006 - Apr Sun>=1 0:01 1:00 D
+Rule StJohns 2007 max - Mar Sun>=8 0:01 1:00 D
+Rule StJohns 2007 max - Nov Sun>=1 0:01 0 S
+#
+# St John's has an apostrophe, but Posix file names can't have apostrophes.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Johns -3:30:52 - LMT 1884
+ -3:30:52 StJohns N%sT 1918
+ -3:30:52 Canada N%sT 1919
+ -3:30:52 StJohns N%sT 1935 Mar 30
+ -3:30 StJohns N%sT 1942 May 11
+ -3:30 Canada N%sT 1946
+ -3:30 StJohns N%sT
+
+# most of east Labrador
+
+# The name `Happy Valley-Goose Bay' is too long; use `Goose Bay'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Goose_Bay -4:01:40 - LMT 1884 # Happy Valley-Goose Bay
+ -3:30:52 - NST 1918
+ -3:30:52 Canada N%sT 1919
+ -3:30:52 - NST 1935 Mar 30
+ -3:30 - NST 1936
+ -3:30 StJohns N%sT 1942 May 11
+ -3:30 Canada N%sT 1946
+ -3:30 StJohns N%sT 1966 Mar 15 2:00
+ -4:00 StJohns A%sT
+
+
+# west Labrador, Nova Scotia, Prince Edward I
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that since 1970 most of this region has been like
+# Halifax. Many locales did not observe peacetime DST until 1972;
+# Glace Bay, NS is the largest that we know of.
+# Shanks & Pottenger also write that Liverpool, NS was the only town
+# in Canada to observe DST in 1971 but not 1970; for now we'll assume
+# this is a typo.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Halifax 1916 only - Apr 1 0:00 1:00 D
+Rule Halifax 1916 only - Oct 1 0:00 0 S
+Rule Halifax 1920 only - May 9 0:00 1:00 D
+Rule Halifax 1920 only - Aug 29 0:00 0 S
+Rule Halifax 1921 only - May 6 0:00 1:00 D
+Rule Halifax 1921 1922 - Sep 5 0:00 0 S
+Rule Halifax 1922 only - Apr 30 0:00 1:00 D
+Rule Halifax 1923 1925 - May Sun>=1 0:00 1:00 D
+Rule Halifax 1923 only - Sep 4 0:00 0 S
+Rule Halifax 1924 only - Sep 15 0:00 0 S
+Rule Halifax 1925 only - Sep 28 0:00 0 S
+Rule Halifax 1926 only - May 16 0:00 1:00 D
+Rule Halifax 1926 only - Sep 13 0:00 0 S
+Rule Halifax 1927 only - May 1 0:00 1:00 D
+Rule Halifax 1927 only - Sep 26 0:00 0 S
+Rule Halifax 1928 1931 - May Sun>=8 0:00 1:00 D
+Rule Halifax 1928 only - Sep 9 0:00 0 S
+Rule Halifax 1929 only - Sep 3 0:00 0 S
+Rule Halifax 1930 only - Sep 15 0:00 0 S
+Rule Halifax 1931 1932 - Sep Mon>=24 0:00 0 S
+Rule Halifax 1932 only - May 1 0:00 1:00 D
+Rule Halifax 1933 only - Apr 30 0:00 1:00 D
+Rule Halifax 1933 only - Oct 2 0:00 0 S
+Rule Halifax 1934 only - May 20 0:00 1:00 D
+Rule Halifax 1934 only - Sep 16 0:00 0 S
+Rule Halifax 1935 only - Jun 2 0:00 1:00 D
+Rule Halifax 1935 only - Sep 30 0:00 0 S
+Rule Halifax 1936 only - Jun 1 0:00 1:00 D
+Rule Halifax 1936 only - Sep 14 0:00 0 S
+Rule Halifax 1937 1938 - May Sun>=1 0:00 1:00 D
+Rule Halifax 1937 1941 - Sep Mon>=24 0:00 0 S
+Rule Halifax 1939 only - May 28 0:00 1:00 D
+Rule Halifax 1940 1941 - May Sun>=1 0:00 1:00 D
+Rule Halifax 1946 1949 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1946 1949 - Sep lastSun 2:00 0 S
+Rule Halifax 1951 1954 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1951 1954 - Sep lastSun 2:00 0 S
+Rule Halifax 1956 1959 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1956 1959 - Sep lastSun 2:00 0 S
+Rule Halifax 1962 1973 - Apr lastSun 2:00 1:00 D
+Rule Halifax 1962 1973 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Halifax -4:14:24 - LMT 1902 Jun 15
+ -4:00 Halifax A%sT 1918
+ -4:00 Canada A%sT 1919
+ -4:00 Halifax A%sT 1942 Feb 9 2:00s
+ -4:00 Canada A%sT 1946
+ -4:00 Halifax A%sT 1974
+ -4:00 Canada A%sT
+Zone America/Glace_Bay -3:59:48 - LMT 1902 Jun 15
+ -4:00 Canada A%sT 1953
+ -4:00 Halifax A%sT 1954
+ -4:00 - AST 1972
+ -4:00 Halifax A%sT 1974
+ -4:00 Canada A%sT
+
+# New Brunswick
+
+# From Paul Eggert (2007-01-31):
+# The Time Definition Act <http://www.gnb.ca/0062/PDF-acts/t-06.pdf>
+# says they changed at 00:01 through 2006, and
+# <http://www.canlii.org/nb/laws/sta/t-6/20030127/whole.html> makes it
+# clear that this was the case since at least 1993.
+# For now, assume it started in 1993.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Moncton 1933 1935 - Jun Sun>=8 1:00 1:00 D
+Rule Moncton 1933 1935 - Sep Sun>=8 1:00 0 S
+Rule Moncton 1936 1938 - Jun Sun>=1 1:00 1:00 D
+Rule Moncton 1936 1938 - Sep Sun>=1 1:00 0 S
+Rule Moncton 1939 only - May 27 1:00 1:00 D
+Rule Moncton 1939 1941 - Sep Sat>=21 1:00 0 S
+Rule Moncton 1940 only - May 19 1:00 1:00 D
+Rule Moncton 1941 only - May 4 1:00 1:00 D
+Rule Moncton 1946 1972 - Apr lastSun 2:00 1:00 D
+Rule Moncton 1946 1956 - Sep lastSun 2:00 0 S
+Rule Moncton 1957 1972 - Oct lastSun 2:00 0 S
+Rule Moncton 1993 2006 - Apr Sun>=1 0:01 1:00 D
+Rule Moncton 1993 2006 - Oct lastSun 0:01 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Moncton -4:19:08 - LMT 1883 Dec 9
+ -5:00 - EST 1902 Jun 15
+ -4:00 Canada A%sT 1933
+ -4:00 Moncton A%sT 1942
+ -4:00 Canada A%sT 1946
+ -4:00 Moncton A%sT 1973
+ -4:00 Canada A%sT 1993
+ -4:00 Moncton A%sT 2007
+ -4:00 Canada A%sT
+
+# Quebec
+
+# From Paul Eggert (2006-07-09):
+# Shanks & Pottenger write that since 1970 most of Quebec has been
+# like Montreal.
+
+# From Paul Eggert (2006-06-27):
+# Matthews and Vincent (1998) also write that Quebec east of the -63
+# meridian is supposed to observe AST, but residents as far east as
+# Natashquan use EST/EDT, and residents east of Natashquan use AST.
+# In "Official time in Quebec" the Quebec department of justice writes in
+# http://www.justice.gouv.qc.ca/english/publications/generale/temps-regl-1-a.htm
+# that "The residents of the Municipality of the
+# Cote-Nord-du-Golfe-Saint-Laurent and the municipalities of Saint-Augustin,
+# Bonne-Esperance and Blanc-Sablon apply the Official Time Act as it is
+# written and use Atlantic standard time all year round. The same applies to
+# the residents of the Native facilities along the lower North Shore."
+# <http://www.assnat.qc.ca/eng/37legislature2/Projets-loi/Publics/06-a002.htm>
+# says this common practice was codified into law as of 2007.
+# For lack of better info, guess this practice began around 1970, contra to
+# Shanks & Pottenger who have this region observing AST/ADT.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Mont 1917 only - Mar 25 2:00 1:00 D
+Rule Mont 1917 only - Apr 24 0:00 0 S
+Rule Mont 1919 only - Mar 31 2:30 1:00 D
+Rule Mont 1919 only - Oct 25 2:30 0 S
+Rule Mont 1920 only - May 2 2:30 1:00 D
+Rule Mont 1920 1922 - Oct Sun>=1 2:30 0 S
+Rule Mont 1921 only - May 1 2:00 1:00 D
+Rule Mont 1922 only - Apr 30 2:00 1:00 D
+Rule Mont 1924 only - May 17 2:00 1:00 D
+Rule Mont 1924 1926 - Sep lastSun 2:30 0 S
+Rule Mont 1925 1926 - May Sun>=1 2:00 1:00 D
+# The 1927-to-1937 rules can be expressed more simply as
+# Rule Mont 1927 1937 - Apr lastSat 24:00 1:00 D
+# Rule Mont 1927 1937 - Sep lastSat 24:00 0 S
+# The rules below avoid use of 24:00
+# (which pre-1998 versions of zic cannot handle).
+Rule Mont 1927 only - May 1 0:00 1:00 D
+Rule Mont 1927 1932 - Sep lastSun 0:00 0 S
+Rule Mont 1928 1931 - Apr lastSun 0:00 1:00 D
+Rule Mont 1932 only - May 1 0:00 1:00 D
+Rule Mont 1933 1940 - Apr lastSun 0:00 1:00 D
+Rule Mont 1933 only - Oct 1 0:00 0 S
+Rule Mont 1934 1939 - Sep lastSun 0:00 0 S
+Rule Mont 1946 1973 - Apr lastSun 2:00 1:00 D
+Rule Mont 1945 1948 - Sep lastSun 2:00 0 S
+Rule Mont 1949 1950 - Oct lastSun 2:00 0 S
+Rule Mont 1951 1956 - Sep lastSun 2:00 0 S
+Rule Mont 1957 1973 - Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Blanc-Sablon -3:48:28 - LMT 1884
+ -4:00 Canada A%sT 1970
+ -4:00 - AST
+Zone America/Montreal -4:54:16 - LMT 1884
+ -5:00 Mont E%sT 1918
+ -5:00 Canada E%sT 1919
+ -5:00 Mont E%sT 1942 Feb 9 2:00s
+ -5:00 Canada E%sT 1946
+ -5:00 Mont E%sT 1974
+ -5:00 Canada E%sT
+
+
+# Ontario
+
+# From Paul Eggert (2006-07-09):
+# Shanks & Pottenger write that since 1970 most of Ontario has been like
+# Toronto.
+# Thunder Bay skipped DST in 1973.
+# Many smaller locales did not observe peacetime DST until 1974;
+# Nipigon (EST) and Rainy River (CST) are the largest that we know of.
+# Far west Ontario is like Winnipeg; far east Quebec is like Halifax.
+
+# From Mark Brader (2003-07-26):
+# [According to the Toronto Star] Orillia, Ontario, adopted DST
+# effective Saturday, 1912-06-22, 22:00; the article mentions that
+# Port Arthur (now part of Thunder Bay, Ontario) as well as Moose Jaw
+# have already done so. In Orillia DST was to run until Saturday,
+# 1912-08-31 (no time mentioned), but it was met with considerable
+# hostility from certain segments of the public, and was revoked after
+# only two weeks -- I copied it as Saturday, 1912-07-07, 22:00, but
+# presumably that should be -07-06. (1912-06-19, -07-12; also letters
+# earlier in June).
+#
+# Kenora, Ontario, was to abandon DST on 1914-06-01 (-05-21).
+
+# From Paul Eggert (1997-10-17):
+# Mark Brader writes that an article in the 1997-10-14 Toronto Star
+# says that Atikokan, Ontario currently does not observe DST,
+# but will vote on 11-10 whether to use EST/EDT.
+# He also writes that the
+# <a href="http://www.gov.on.ca/MBS/english/publications/statregs/conttext.html">
+# Ontario Time Act (1990, Chapter T.9)
+# </a>
+# says that Ontario east of 90W uses EST/EDT, and west of 90W uses CST/CDT.
+# Officially Atikokan is therefore on CST/CDT, and most likely this report
+# concerns a non-official time observed as a matter of local practice.
+#
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) write that Atikokan, Pickle Lake, and
+# New Osnaburgh observe CST all year, that Big Trout Lake observes
+# CST/CDT, and that Upsala and Shebandowan observe EST/EDT, all in
+# violation of the official Ontario rules.
+#
+# From Paul Eggert (2006-07-09):
+# Chris Walton (2006-07-06) mentioned an article by Stephanie MacLellan in the
+# 2005-07-21 Chronicle-Journal, which said:
+#
+# The clocks in Atikokan stay set on standard time year-round.
+# This means they spend about half the time on central time and
+# the other half on eastern time.
+#
+# For the most part, the system works, Mayor Dennis Brown said.
+#
+# "The majority of businesses in Atikokan deal more with Eastern
+# Canada, but there are some that deal with Western Canada," he
+# said. "I don't see any changes happening here."
+#
+# Walton also writes "Supposedly Pickle Lake and Mishkeegogamang
+# [New Osnaburgh] follow the same practice."
+
+# From Garry McKinnon (2006-07-14) via Chris Walton:
+# I chatted with a member of my board who has an outstanding memory
+# and a long history in Atikokan (and in the telecom industry) and he
+# can say for certain that Atikokan has been practicing the current
+# time keeping since 1952, at least.
+
+# From Paul Eggert (2006-07-17):
+# Shanks & Pottenger say that Atikokan has agreed with Rainy River
+# ever since standard time was introduced, but the information from
+# McKinnon sounds more authoritative. For now, assume that Atikokan
+# switched to EST immediately after WWII era daylight saving time
+# ended. This matches the old (less-populous) America/Coral_Harbour
+# entry since our cutoff date of 1970, so we can move
+# America/Coral_Harbour to the 'backward' file.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Toronto 1919 only - Mar 30 23:30 1:00 D
+Rule Toronto 1919 only - Oct 26 0:00 0 S
+Rule Toronto 1920 only - May 2 2:00 1:00 D
+Rule Toronto 1920 only - Sep 26 0:00 0 S
+Rule Toronto 1921 only - May 15 2:00 1:00 D
+Rule Toronto 1921 only - Sep 15 2:00 0 S
+Rule Toronto 1922 1923 - May Sun>=8 2:00 1:00 D
+# Shanks & Pottenger say 1923-09-19; assume it's a typo and that "-16"
+# was meant.
+Rule Toronto 1922 1926 - Sep Sun>=15 2:00 0 S
+Rule Toronto 1924 1927 - May Sun>=1 2:00 1:00 D
+# The 1927-to-1939 rules can be expressed more simply as
+# Rule Toronto 1927 1937 - Sep Sun>=25 2:00 0 S
+# Rule Toronto 1928 1937 - Apr Sun>=25 2:00 1:00 D
+# Rule Toronto 1938 1940 - Apr lastSun 2:00 1:00 D
+# Rule Toronto 1938 1939 - Sep lastSun 2:00 0 S
+# The rules below avoid use of Sun>=25
+# (which pre-2004 versions of zic cannot handle).
+Rule Toronto 1927 1932 - Sep lastSun 2:00 0 S
+Rule Toronto 1928 1931 - Apr lastSun 2:00 1:00 D
+Rule Toronto 1932 only - May 1 2:00 1:00 D
+Rule Toronto 1933 1940 - Apr lastSun 2:00 1:00 D
+Rule Toronto 1933 only - Oct 1 2:00 0 S
+Rule Toronto 1934 1939 - Sep lastSun 2:00 0 S
+Rule Toronto 1945 1946 - Sep lastSun 2:00 0 S
+Rule Toronto 1946 only - Apr lastSun 2:00 1:00 D
+Rule Toronto 1947 1949 - Apr lastSun 0:00 1:00 D
+Rule Toronto 1947 1948 - Sep lastSun 0:00 0 S
+Rule Toronto 1949 only - Nov lastSun 0:00 0 S
+Rule Toronto 1950 1973 - Apr lastSun 2:00 1:00 D
+Rule Toronto 1950 only - Nov lastSun 2:00 0 S
+Rule Toronto 1951 1956 - Sep lastSun 2:00 0 S
+# Shanks & Pottenger say Toronto ended DST a week early in 1971,
+# namely on 1971-10-24, but Mark Brader wrote (2003-05-31) that this
+# is wrong, and that he had confirmed it by checking the 1971-10-30
+# Toronto Star, which said that DST was ending 1971-10-31 as usual.
+Rule Toronto 1957 1973 - Oct lastSun 2:00 0 S
+
+# From Paul Eggert (2003-07-27):
+# Willett (1914-03) writes (p. 17) "In the Cities of Fort William, and
+# Port Arthur, Ontario, the principle of the Bill has been in
+# operation for the past three years, and in the City of Moose Jaw,
+# Saskatchewan, for one year."
+
+# From David Bryan via Tory Tronrud, Director/Curator,
+# Thunder Bay Museum (2003-11-12):
+# There is some suggestion, however, that, by-law or not, daylight
+# savings time was being practiced in Fort William and Port Arthur
+# before 1909.... [I]n 1910, the line between the Eastern and Central
+# Time Zones was permanently moved about two hundred miles west to
+# include the Thunder Bay area.... When Canada adopted daylight
+# savings time in 1916, Fort William and Port Arthur, having done so
+# already, did not change their clocks.... During the Second World
+# War,... [t]he cities agreed to implement DST during the summer
+# months for the remainder of the war years.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Toronto -5:17:32 - LMT 1895
+ -5:00 Canada E%sT 1919
+ -5:00 Toronto E%sT 1942 Feb 9 2:00s
+ -5:00 Canada E%sT 1946
+ -5:00 Toronto E%sT 1974
+ -5:00 Canada E%sT
+Zone America/Thunder_Bay -5:57:00 - LMT 1895
+ -6:00 - CST 1910
+ -5:00 - EST 1942
+ -5:00 Canada E%sT 1970
+ -5:00 Mont E%sT 1973
+ -5:00 - EST 1974
+ -5:00 Canada E%sT
+Zone America/Nipigon -5:53:04 - LMT 1895
+ -5:00 Canada E%sT 1940 Sep 29
+ -5:00 1:00 EDT 1942 Feb 9 2:00s
+ -5:00 Canada E%sT
+Zone America/Rainy_River -6:18:16 - LMT 1895
+ -6:00 Canada C%sT 1940 Sep 29
+ -6:00 1:00 CDT 1942 Feb 9 2:00s
+ -6:00 Canada C%sT
+Zone America/Atikokan -6:06:28 - LMT 1895
+ -6:00 Canada C%sT 1940 Sep 29
+ -6:00 1:00 CDT 1942 Feb 9 2:00s
+ -6:00 Canada C%sT 1945 Sep 30 2:00
+ -5:00 - EST
+
+
+# Manitoba
+
+# From Rob Douglas (2006-04-06):
+# the old Manitoba Time Act - as amended by Bill 2, assented to
+# March 27, 1987 ... said ...
+# "between two o'clock Central Standard Time in the morning of
+# the first Sunday of April of each year and two o'clock Central
+# Standard Time in the morning of the last Sunday of October next
+# following, one hour in advance of Central Standard Time."...
+# I believe that the English legislation [of the old time act] had =
+# been assented to (March 22, 1967)....
+# Also, as far as I can tell, there was no order-in-council varying
+# the time of Daylight Saving Time for 2005 and so the provisions of
+# the 1987 version would apply - the changeover was at 2:00 Central
+# Standard Time (i.e. not until 3:00 Central Daylight Time).
+
+# From Paul Eggert (2006-04-10):
+# Shanks & Pottenger say Manitoba switched at 02:00 (not 02:00s)
+# starting 1966. Since 02:00s is clearly correct for 1967 on, assume
+# it was also 02:00s in 1966.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Winn 1916 only - Apr 23 0:00 1:00 D
+Rule Winn 1916 only - Sep 17 0:00 0 S
+Rule Winn 1918 only - Apr 14 2:00 1:00 D
+Rule Winn 1918 only - Oct 31 2:00 0 S
+Rule Winn 1937 only - May 16 2:00 1:00 D
+Rule Winn 1937 only - Sep 26 2:00 0 S
+Rule Winn 1942 only - Feb 9 2:00 1:00 W # War
+Rule Winn 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Winn 1945 only - Sep lastSun 2:00 0 S
+Rule Winn 1946 only - May 12 2:00 1:00 D
+Rule Winn 1946 only - Oct 13 2:00 0 S
+Rule Winn 1947 1949 - Apr lastSun 2:00 1:00 D
+Rule Winn 1947 1949 - Sep lastSun 2:00 0 S
+Rule Winn 1950 only - May 1 2:00 1:00 D
+Rule Winn 1950 only - Sep 30 2:00 0 S
+Rule Winn 1951 1960 - Apr lastSun 2:00 1:00 D
+Rule Winn 1951 1958 - Sep lastSun 2:00 0 S
+Rule Winn 1959 only - Oct lastSun 2:00 0 S
+Rule Winn 1960 only - Sep lastSun 2:00 0 S
+Rule Winn 1963 only - Apr lastSun 2:00 1:00 D
+Rule Winn 1963 only - Sep 22 2:00 0 S
+Rule Winn 1966 1986 - Apr lastSun 2:00s 1:00 D
+Rule Winn 1966 2005 - Oct lastSun 2:00s 0 S
+Rule Winn 1987 2005 - Apr Sun>=1 2:00s 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Winnipeg -6:28:36 - LMT 1887 Jul 16
+ -6:00 Winn C%sT 2006
+ -6:00 Canada C%sT
+
+
+# Saskatchewan
+
+# From Mark Brader (2003-07-26):
+# The first actual adoption of DST in Canada was at the municipal
+# level. As the [Toronto] Star put it (1912-06-07), "While people
+# elsewhere have long been talking of legislation to save daylight,
+# the city of Moose Jaw [Saskatchewan] has acted on its own hook."
+# DST in Moose Jaw began on Saturday, 1912-06-01 (no time mentioned:
+# presumably late evening, as below), and would run until "the end of
+# the summer". The discrepancy between municipal time and railroad
+# time was noted.
+
+# From Paul Eggert (2003-07-27):
+# Willett (1914-03) notes that DST "has been in operation ... in the
+# City of Moose Jaw, Saskatchewan, for one year."
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that since 1970 this region has mostly been as Regina.
+# Some western towns (e.g. Swift Current) switched from MST/MDT to CST in 1972.
+# Other western towns (e.g. Lloydminster) are like Edmonton.
+# Matthews and Vincent (1998) write that Denare Beach and Creighton
+# are like Winnipeg, in violation of Saskatchewan law.
+
+# From W. Jones (1992-11-06):
+# The. . .below is based on information I got from our law library, the
+# provincial archives, and the provincial Community Services department.
+# A precise history would require digging through newspaper archives, and
+# since you didn't say what you wanted, I didn't bother.
+#
+# Saskatchewan is split by a time zone meridian (105W) and over the years
+# the boundary became pretty ragged as communities near it reevaluated
+# their affiliations in one direction or the other. In 1965 a provincial
+# referendum favoured legislating common time practices.
+#
+# On 15 April 1966 the Time Act (c. T-14, Revised Statutes of
+# Saskatchewan 1978) was proclaimed, and established that the eastern
+# part of Saskatchewan would use CST year round, that districts in
+# northwest Saskatchewan would by default follow CST but could opt to
+# follow Mountain Time rules (thus 1 hour difference in the winter and
+# zero in the summer), and that districts in southwest Saskatchewan would
+# by default follow MT but could opt to follow CST.
+#
+# It took a few years for the dust to settle (I know one story of a town
+# on one time zone having its school in another, such that a mom had to
+# serve her family lunch in two shifts), but presently it seems that only
+# a few towns on the border with Alberta (e.g. Lloydminster) follow MT
+# rules any more; all other districts appear to have used CST year round
+# since sometime in the 1960s.
+
+# From Chris Walton (2006-06-26):
+# The Saskatchewan time act which was last updated in 1996 is about 30 pages
+# long and rather painful to read.
+# http://www.qp.gov.sk.ca/documents/English/Statutes/Statutes/T14.pdf
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Regina 1918 only - Apr 14 2:00 1:00 D
+Rule Regina 1918 only - Oct 31 2:00 0 S
+Rule Regina 1930 1934 - May Sun>=1 0:00 1:00 D
+Rule Regina 1930 1934 - Oct Sun>=1 0:00 0 S
+Rule Regina 1937 1941 - Apr Sun>=8 0:00 1:00 D
+Rule Regina 1937 only - Oct Sun>=8 0:00 0 S
+Rule Regina 1938 only - Oct Sun>=1 0:00 0 S
+Rule Regina 1939 1941 - Oct Sun>=8 0:00 0 S
+Rule Regina 1942 only - Feb 9 2:00 1:00 W # War
+Rule Regina 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Regina 1945 only - Sep lastSun 2:00 0 S
+Rule Regina 1946 only - Apr Sun>=8 2:00 1:00 D
+Rule Regina 1946 only - Oct Sun>=8 2:00 0 S
+Rule Regina 1947 1957 - Apr lastSun 2:00 1:00 D
+Rule Regina 1947 1957 - Sep lastSun 2:00 0 S
+Rule Regina 1959 only - Apr lastSun 2:00 1:00 D
+Rule Regina 1959 only - Oct lastSun 2:00 0 S
+#
+Rule Swift 1957 only - Apr lastSun 2:00 1:00 D
+Rule Swift 1957 only - Oct lastSun 2:00 0 S
+Rule Swift 1959 1961 - Apr lastSun 2:00 1:00 D
+Rule Swift 1959 only - Oct lastSun 2:00 0 S
+Rule Swift 1960 1961 - Sep lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Regina -6:58:36 - LMT 1905 Sep
+ -7:00 Regina M%sT 1960 Apr lastSun 2:00
+ -6:00 - CST
+Zone America/Swift_Current -7:11:20 - LMT 1905 Sep
+ -7:00 Canada M%sT 1946 Apr lastSun 2:00
+ -7:00 Regina M%sT 1950
+ -7:00 Swift M%sT 1972 Apr lastSun 2:00
+ -6:00 - CST
+
+
+# Alberta
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Edm 1918 1919 - Apr Sun>=8 2:00 1:00 D
+Rule Edm 1918 only - Oct 31 2:00 0 S
+Rule Edm 1919 only - May 27 2:00 0 S
+Rule Edm 1920 1923 - Apr lastSun 2:00 1:00 D
+Rule Edm 1920 only - Oct lastSun 2:00 0 S
+Rule Edm 1921 1923 - Sep lastSun 2:00 0 S
+Rule Edm 1942 only - Feb 9 2:00 1:00 W # War
+Rule Edm 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Edm 1945 only - Sep lastSun 2:00 0 S
+Rule Edm 1947 only - Apr lastSun 2:00 1:00 D
+Rule Edm 1947 only - Sep lastSun 2:00 0 S
+Rule Edm 1967 only - Apr lastSun 2:00 1:00 D
+Rule Edm 1967 only - Oct lastSun 2:00 0 S
+Rule Edm 1969 only - Apr lastSun 2:00 1:00 D
+Rule Edm 1969 only - Oct lastSun 2:00 0 S
+Rule Edm 1972 1986 - Apr lastSun 2:00 1:00 D
+Rule Edm 1972 2006 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Edmonton -7:33:52 - LMT 1906 Sep
+ -7:00 Edm M%sT 1987
+ -7:00 Canada M%sT
+
+
+# British Columbia
+
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger write that since 1970 most of this region has
+# been like Vancouver.
+# Dawson Creek uses MST. Much of east BC is like Edmonton.
+# Matthews and Vincent (1998) write that Creston is like Dawson Creek.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Vanc 1918 only - Apr 14 2:00 1:00 D
+Rule Vanc 1918 only - Oct 31 2:00 0 S
+Rule Vanc 1942 only - Feb 9 2:00 1:00 W # War
+Rule Vanc 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule Vanc 1945 only - Sep 30 2:00 0 S
+Rule Vanc 1946 1986 - Apr lastSun 2:00 1:00 D
+Rule Vanc 1946 only - Oct 13 2:00 0 S
+Rule Vanc 1947 1961 - Sep lastSun 2:00 0 S
+Rule Vanc 1962 2006 - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Vancouver -8:12:28 - LMT 1884
+ -8:00 Vanc P%sT 1987
+ -8:00 Canada P%sT
+Zone America/Dawson_Creek -8:00:56 - LMT 1884
+ -8:00 Canada P%sT 1947
+ -8:00 Vanc P%sT 1972 Aug 30 2:00
+ -7:00 - MST
+
+
+# Northwest Territories, Nunavut, Yukon
+
+# From Paul Eggert (2006-03-22):
+# Dawson switched to PST in 1973. Inuvik switched to MST in 1979.
+# Mathew Englander (1996-10-07) gives the following refs:
+# * 1967. Paragraph 28(34)(g) of the Interpretation Act, S.C. 1967-68,
+# c. 7 defines Yukon standard time as UTC-9. This is still valid;
+# see Interpretation Act, R.S.C. 1985, c. I-21, s. 35(1).
+# * C.O. 1973/214 switched Yukon to PST on 1973-10-28 00:00.
+# * O.I.C. 1980/02 established DST.
+# * O.I.C. 1987/056 changed DST to Apr firstSun 2:00 to Oct lastSun 2:00.
+# Shanks & Pottenger say Yukon's 1973-10-28 switch was at 2:00; go
+# with Englander.
+# From Chris Walton (2006-06-26):
+# Here is a link to the old daylight saving portion of the interpretation
+# act which was last updated in 1987:
+# http://www.gov.yk.ca/legislation/regs/oic1987_056.pdf
+
+# From Rives McDow (1999-09-04):
+# Nunavut ... moved ... to incorporate the whole territory into one time zone.
+# <a href="http://www.nunatsiaq.com/nunavut/nvt90903_13.html">
+# Nunavut moves to single time zone Oct. 31
+# </a>
+#
+# From Antoine Leca (1999-09-06):
+# We then need to create a new timezone for the Kitikmeot region of Nunavut
+# to differentiate it from the Yellowknife region.
+
+# From Paul Eggert (1999-09-20):
+# <a href="http://www.nunavut.com/basicfacts/english/basicfacts_1territory.html">
+# Basic Facts: The New Territory
+# </a> (1999) reports that Pangnirtung operates on eastern time,
+# and that Coral Harbour does not observe DST. We don't know when
+# Pangnirtung switched to eastern time; we'll guess 1995.
+
+# From Rives McDow (1999-11-08):
+# On October 31, when the rest of Nunavut went to Central time,
+# Pangnirtung wobbled. Here is the result of their wobble:
+#
+# The following businesses and organizations in Pangnirtung use Central Time:
+#
+# First Air, Power Corp, Nunavut Construction, Health Center, RCMP,
+# Eastern Arctic National Parks, A & D Specialist
+#
+# The following businesses and organizations in Pangnirtung use Eastern Time:
+#
+# Hamlet office, All other businesses, Both schools, Airport operator
+#
+# This has made for an interesting situation there, which warranted the news.
+# No one there that I spoke with seems concerned, or has plans to
+# change the local methods of keeping time, as it evidently does not
+# really interfere with any activities or make things difficult locally.
+# They plan to celebrate New Year's turn-over twice, one hour apart,
+# so it appears that the situation will last at least that long.
+# The Nunavut Intergovernmental Affairs hopes that they will "come to
+# their senses", but the locals evidently don't see any problem with
+# the current state of affairs.
+
+# From Michaela Rodrigue, writing in the
+# <a href="http://www.nunatsiaq.com/archives/nunavut991130/nvt91119_17.html">
+# Nunatsiaq News (1999-11-19)</a>:
+# Clyde River, Pangnirtung and Sanikiluaq now operate with two time zones,
+# central - or Nunavut time - for government offices, and eastern time
+# for municipal offices and schools.... Igloolik [was similar but then]
+# made the switch to central time on Saturday, Nov. 6.
+
+# From Paul Eggert (2000-10-02):
+# Matthews and Vincent (1998) say the following, but we lack histories
+# for these potential new Zones.
+#
+# The Canadian Forces station at Alert uses Eastern Time while the
+# handful of residents at the Eureka weather station [in the Central
+# zone] skip daylight savings. Baffin Island, which is crossed by the
+# Central, Eastern and Atlantic Time zones only uses Eastern Time.
+# Gjoa Haven, Taloyoak and Pelly Bay all use Mountain instead of
+# Central Time and Southampton Island [in the Central zone] is not
+# required to use daylight savings.
+
+# From
+# <a href="http://www.nunatsiaq.com/archives/nunavut001130/nvt21110_02.html">
+# Nunavut now has two time zones
+# </a> (2000-11-10):
+# The Nunavut government would allow its employees in Kugluktuk and
+# Cambridge Bay to operate on central time year-round, putting them
+# one hour behind the rest of Nunavut for six months during the winter.
+# At the end of October the two communities had rebelled against
+# Nunavut's unified time zone, refusing to shift to eastern time with
+# the rest of the territory for the winter. Cambridge Bay remained on
+# central time, while Kugluktuk, even farther west, reverted to
+# mountain time, which they had used before the advent of Nunavut's
+# unified time zone in 1999.
+#
+# From Rives McDow (2001-01-20), quoting the Nunavut government:
+# The preceding decision came into effect at midnight, Saturday Nov 4, 2000.
+
+# From Paul Eggert (2000-12-04):
+# Let's just keep track of the official times for now.
+
+# From Rives McDow (2001-03-07):
+# The premier of Nunavut has issued a ministerial statement advising
+# that effective 2001-04-01, the territory of Nunavut will revert
+# back to three time zones (mountain, central, and eastern). Of the
+# cities in Nunavut, Coral Harbor is the only one that I know of that
+# has said it will not observe dst, staying on EST year round. I'm
+# checking for more info, and will get back to you if I come up with
+# more.
+# [Also see <http://www.nunatsiaq.com/nunavut/nvt10309_06.html> (2001-03-09).]
+
+# From Gwillim Law (2005-05-21):
+# According to maps at
+# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SWE.jpg
+# http://inms-ienm.nrc-cnrc.gc.ca/images/time_services/TZ01SSE.jpg
+# (both dated 2003), and
+# http://www.canadiangeographic.ca/Magazine/SO98/geomap.asp
+# (from a 1998 Canadian Geographic article), the de facto and de jure time
+# for Southampton Island (at the north end of Hudson Bay) is UTC-5 all year
+# round. Using Google, it's easy to find other websites that confirm this.
+# I wasn't able to find how far back this time regimen goes, but since it
+# predates the creation of Nunavut, it probably goes back many years....
+# The Inuktitut name of Coral Harbour is Sallit, but it's rarely used.
+#
+# From Paul Eggert (2005-07-26):
+# For lack of better information, assume that Southampton Island observed
+# daylight saving only during wartime.
+
+# From Chris Walton (2007-03-01):
+# ... the community of Resolute (located on Cornwallis Island in
+# Nunavut) moved from Central Time to Eastern Time last November.
+# Basically the community did not change its clocks at the end of
+# daylight saving....
+# http://www.nnsl.com/frames/newspapers/2006-11/nov13_06none.html
+
+# From Chris Walton (2007-03-14):
+# Today I phoned the "hamlet office" to find out what Resolute was doing with
+# its clocks.
+#
+# The individual that answered the phone confirmed that the clocks did not
+# move at the end of daylight saving on October 29/2006. He also told me that
+# the clocks did not move this past weekend (March 11/2007)....
+#
+# America/Resolute should use the "Canada" Rule up to October 29/2006.
+# After that it should be fixed on Eastern Standard Time until further notice.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule NT_YK 1918 only - Apr 14 2:00 1:00 D
+Rule NT_YK 1918 only - Oct 27 2:00 0 S
+Rule NT_YK 1919 only - May 25 2:00 1:00 D
+Rule NT_YK 1919 only - Nov 1 0:00 0 S
+Rule NT_YK 1942 only - Feb 9 2:00 1:00 W # War
+Rule NT_YK 1945 only - Aug 14 23:00u 1:00 P # Peace
+Rule NT_YK 1945 only - Sep 30 2:00 0 S
+Rule NT_YK 1965 only - Apr lastSun 0:00 2:00 DD
+Rule NT_YK 1965 only - Oct lastSun 2:00 0 S
+Rule NT_YK 1980 1986 - Apr lastSun 2:00 1:00 D
+Rule NT_YK 1980 2006 - Oct lastSun 2:00 0 S
+Rule NT_YK 1987 2006 - Apr Sun>=1 2:00 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# aka Panniqtuuq
+Zone America/Pangnirtung 0 - zzz 1921 # trading post est.
+ -4:00 NT_YK A%sT 1995 Apr Sun>=1 2:00
+ -5:00 Canada E%sT 1999 Oct 31 2:00
+ -6:00 Canada C%sT 2000 Oct 29 2:00
+ -5:00 Canada E%sT
+# formerly Frobisher Bay
+Zone America/Iqaluit 0 - zzz 1942 Aug # Frobisher Bay est.
+ -5:00 NT_YK E%sT 1999 Oct 31 2:00
+ -6:00 Canada C%sT 2000 Oct 29 2:00
+ -5:00 Canada E%sT
+# aka Qausuittuq
+Zone America/Resolute 0 - zzz 1947 Aug 31 # Resolute founded
+ -6:00 NT_YK C%sT 2000 Oct 29 2:00
+ -5:00 - EST 2001 Apr 1 3:00
+ -6:00 Canada C%sT 2006 Oct 29 2:00
+ -5:00 - EST
+# aka Kangiqiniq
+Zone America/Rankin_Inlet 0 - zzz 1957 # Rankin Inlet founded
+ -6:00 NT_YK C%sT 2000 Oct 29 2:00
+ -5:00 - EST 2001 Apr 1 3:00
+ -6:00 Canada C%sT
+# aka Iqaluktuuttiaq
+Zone America/Cambridge_Bay 0 - zzz 1920 # trading post est.?
+ -7:00 NT_YK M%sT 1999 Oct 31 2:00
+ -6:00 Canada C%sT 2000 Oct 29 2:00
+ -5:00 - EST 2000 Nov 5 0:00
+ -6:00 - CST 2001 Apr 1 3:00
+ -7:00 Canada M%sT
+Zone America/Yellowknife 0 - zzz 1935 # Yellowknife founded?
+ -7:00 NT_YK M%sT 1980
+ -7:00 Canada M%sT
+Zone America/Inuvik 0 - zzz 1953 # Inuvik founded
+ -8:00 NT_YK P%sT 1979 Apr lastSun 2:00
+ -7:00 NT_YK M%sT 1980
+ -7:00 Canada M%sT
+Zone America/Whitehorse -9:00:12 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1966 Jul 1 2:00
+ -8:00 NT_YK P%sT 1980
+ -8:00 Canada P%sT
+Zone America/Dawson -9:17:40 - LMT 1900 Aug 20
+ -9:00 NT_YK Y%sT 1973 Oct 28 0:00
+ -8:00 NT_YK P%sT 1980
+ -8:00 Canada P%sT
+
+
+###############################################################################
+
+# Mexico
+
+# From Paul Eggert (2001-03-05):
+# The Investigation and Analysis Service of the
+# Mexican Library of Congress (MLoC) has published a
+# <a href="http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/">
+# history of Mexican local time (in Spanish)
+# </a>.
+#
+# Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
+# (In all cases we go with the MLoC.)
+# S&P report that Baja was at -8:00 in 1922/1923.
+# S&P say the 1930 transition in Baja was 1930-11-16.
+# S&P report no DST during summer 1931.
+# S&P report a transition at 1932-03-30 23:00, not 1932-04-01.
+
+# From Gwillim Law (2001-02-20):
+# There are some other discrepancies between the Decrees page and the
+# tz database. I think they can best be explained by supposing that
+# the researchers who prepared the Decrees page failed to find some of
+# the relevant documents.
+
+# From Alan Perry (1996-02-15):
+# A guy from our Mexico subsidiary finally found the Presidential Decree
+# outlining the timezone changes in Mexico.
+#
+# ------------- Begin Forwarded Message -------------
+#
+# I finally got my hands on the Official Presidential Decree that sets up the
+# rules for the DST changes. The rules are:
+#
+# 1. The country is divided in 3 timezones:
+# - Baja California Norte (the Mexico/BajaNorte TZ)
+# - Baja California Sur, Nayarit, Sinaloa and Sonora (the Mexico/BajaSur TZ)
+# - The rest of the country (the Mexico/General TZ)
+#
+# 2. From the first Sunday in April at 2:00 AM to the last Sunday in October
+# at 2:00 AM, the times in each zone are as follows:
+# BajaNorte: GMT+7
+# BajaSur: GMT+6
+# General: GMT+5
+#
+# 3. The rest of the year, the times are as follows:
+# BajaNorte: GMT+8
+# BajaSur: GMT+7
+# General: GMT+6
+#
+# The Decree was published in Mexico's Official Newspaper on January 4th.
+#
+# -------------- End Forwarded Message --------------
+# From Paul Eggert (1996-06-12):
+# For an English translation of the decree, see
+# <a href="http://mexico-travel.com/extra/timezone_eng.html">
+# ``Diario Oficial: Time Zone Changeover'' (1996-01-04).
+# </a>
+
+# From Rives McDow (1998-10-08):
+# The State of Quintana Roo has reverted back to central STD and DST times
+# (i.e. UTC -0600 and -0500 as of 1998-08-02).
+
+# From Rives McDow (2000-01-10):
+# Effective April 4, 1999 at 2:00 AM local time, Sonora changed to the time
+# zone 5 hours from the International Date Line, and will not observe daylight
+# savings time so as to stay on the same time zone as the southern part of
+# Arizona year round.
+
+# From Jesper Norgaard, translating
+# <http://www.reforma.com/nacional/articulo/064327/> (2001-01-17):
+# In Oaxaca, the 55.000 teachers from the Section 22 of the National
+# Syndicate of Education Workers, refuse to apply daylight saving each
+# year, so that the more than 10,000 schools work at normal hour the
+# whole year.
+
+# From Gwillim Law (2001-01-19):
+# <http://www.reforma.com/negocios_y_dinero/articulo/064481/> ... says
+# (translated):...
+# January 17, 2000 - The Energy Secretary, Ernesto Martens, announced
+# that Summer Time will be reduced from seven to five months, starting
+# this year....
+# <http://www.publico.com.mx/scripts/texto3.asp?action=pagina&pag=21&pos=p&secc=naci&date=01/17/2001>
+# [translated], says "summer time will ... take effect on the first Sunday
+# in May, and end on the last Sunday of September.
+
+# From Arthur David Olson (2001-01-25):
+# The 2001-01-24 traditional Washington Post contained the page one
+# story "Timely Issue Divides Mexicans."...
+# http://www.washingtonpost.com/wp-dyn/articles/A37383-2001Jan23.html
+# ... Mexico City Mayor Lopez Obrador "...is threatening to keep
+# Mexico City and its 20 million residents on a different time than
+# the rest of the country..." In particular, Lopez Obrador would abolish
+# observation of Daylight Saving Time.
+
+# <a href="http://www.conae.gob.mx/ahorro/decretohorver2001.html#decre">
+# Official statute published by the Energy Department
+# </a> (2001-02-01) shows Baja and Chihauhua as still using US DST rules,
+# and Sonora with no DST. This was reported by Jesper Norgaard (2001-02-03).
+
+# From Paul Eggert (2001-03-03):
+#
+# <a href="http://www.latimes.com/news/nation/20010303/t000018766.html">
+# James F. Smith writes in today's LA Times
+# </a>
+# * Sonora will continue to observe standard time.
+# * Last week Mexico City's mayor Andres Manuel Lopez Obrador decreed that
+# the Federal District will not adopt DST.
+# * 4 of 16 district leaders announced they'll ignore the decree.
+# * The decree does not affect federal-controlled facilities including
+# the airport, banks, hospitals, and schools.
+#
+# For now we'll assume that the Federal District will bow to federal rules.
+
+# From Jesper Norgaard (2001-04-01):
+# I found some references to the Mexican application of daylight
+# saving, which modifies what I had already sent you, stating earlier
+# that a number of northern Mexican states would go on daylight
+# saving. The modification reverts this to only cover Baja California
+# (Norte), while all other states (except Sonora, who has no daylight
+# saving all year) will follow the original decree of president
+# Vicente Fox, starting daylight saving May 6, 2001 and ending
+# September 30, 2001.
+# References: "Diario de Monterrey" <www.diariodemonterrey.com/index.asp>
+# Palabra <http://palabra.infosel.com/010331/primera/ppri3101.pdf> (2001-03-31)
+
+# From Reuters (2001-09-04):
+# Mexico's Supreme Court on Tuesday declared that daylight savings was
+# unconstitutional in Mexico City, creating the possibility the
+# capital will be in a different time zone from the rest of the nation
+# next year.... The Supreme Court's ruling takes effect at 2:00
+# a.m. (0800 GMT) on Sept. 30, when Mexico is scheduled to revert to
+# standard time. "This is so residents of the Federal District are not
+# subject to unexpected time changes," a statement from the court said.
+
+# From Jesper Norgaard Welen (2002-03-12):
+# ... consulting my local grocery store(!) and my coworkers, they all insisted
+# that a new decision had been made to reinstate US style DST in Mexico....
+# http://www.conae.gob.mx/ahorro/horaver2001_m1_2002.html (2002-02-20)
+# confirms this. Sonora as usual is the only state where DST is not applied.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Mexico 1939 only - Feb 5 0:00 1:00 D
+Rule Mexico 1939 only - Jun 25 0:00 0 S
+Rule Mexico 1940 only - Dec 9 0:00 1:00 D
+Rule Mexico 1941 only - Apr 1 0:00 0 S
+Rule Mexico 1943 only - Dec 16 0:00 1:00 W # War
+Rule Mexico 1944 only - May 1 0:00 0 S
+Rule Mexico 1950 only - Feb 12 0:00 1:00 D
+Rule Mexico 1950 only - Jul 30 0:00 0 S
+Rule Mexico 1996 2000 - Apr Sun>=1 2:00 1:00 D
+Rule Mexico 1996 2000 - Oct lastSun 2:00 0 S
+Rule Mexico 2001 only - May Sun>=1 2:00 1:00 D
+Rule Mexico 2001 only - Sep lastSun 2:00 0 S
+Rule Mexico 2002 max - Apr Sun>=1 2:00 1:00 D
+Rule Mexico 2002 max - Oct lastSun 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+# Quintana Roo
+Zone America/Cancun -5:47:04 - LMT 1922 Jan 1 0:12:56
+ -6:00 - CST 1981 Dec 23
+ -5:00 Mexico E%sT 1998 Aug 2 2:00
+ -6:00 Mexico C%sT
+# Campeche, Yucatan
+Zone America/Merida -5:58:28 - LMT 1922 Jan 1 0:01:32
+ -6:00 - CST 1981 Dec 23
+ -5:00 - EST 1982 Dec 2
+ -6:00 Mexico C%sT
+# Coahuila, Durango, Nuevo Leon, Tamaulipas
+Zone America/Monterrey -6:41:16 - LMT 1921 Dec 31 23:18:44
+ -6:00 - CST 1988
+ -6:00 US C%sT 1989
+ -6:00 Mexico C%sT
+# Central Mexico
+Zone America/Mexico_City -6:36:36 - LMT 1922 Jan 1 0:23:24
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 Mexico C%sT 2001 Sep 30 02:00
+ -6:00 - CST 2002 Feb 20
+ -6:00 Mexico C%sT
+# Chihuahua
+Zone America/Chihuahua -7:04:20 - LMT 1921 Dec 31 23:55:40
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 - CST 1996
+ -6:00 Mexico C%sT 1998
+ -6:00 - CST 1998 Apr Sun>=1 3:00
+ -7:00 Mexico M%sT
+# Sonora
+Zone America/Hermosillo -7:23:52 - LMT 1921 Dec 31 23:36:08
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 - CST 1942 Apr 24
+ -7:00 - MST 1949 Jan 14
+ -8:00 - PST 1970
+ -7:00 Mexico M%sT 1999
+ -7:00 - MST
+# Baja California Sur, Nayarit, Sinaloa
+Zone America/Mazatlan -7:05:40 - LMT 1921 Dec 31 23:54:20
+ -7:00 - MST 1927 Jun 10 23:00
+ -6:00 - CST 1930 Nov 15
+ -7:00 - MST 1931 May 1 23:00
+ -6:00 - CST 1931 Oct
+ -7:00 - MST 1932 Apr 1
+ -6:00 - CST 1942 Apr 24
+ -7:00 - MST 1949 Jan 14
+ -8:00 - PST 1970
+ -7:00 Mexico M%sT
+# Baja California
+Zone America/Tijuana -7:48:04 - LMT 1922 Jan 1 0:11:56
+ -7:00 - MST 1924
+ -8:00 - PST 1927 Jun 10 23:00
+ -7:00 - MST 1930 Nov 15
+ -8:00 - PST 1931 Apr 1
+ -8:00 1:00 PDT 1931 Sep 30
+ -8:00 - PST 1942 Apr 24
+ -8:00 1:00 PWT 1945 Aug 14 23:00u
+ -8:00 1:00 PPT 1945 Nov 12 # Peace
+ -8:00 - PST 1948 Apr 5
+ -8:00 1:00 PDT 1949 Jan 14
+ -8:00 - PST 1954
+ -8:00 CA P%sT 1961
+ -8:00 - PST 1976
+ -8:00 US P%sT 1996
+ -8:00 Mexico P%sT 2001
+ -8:00 US P%sT 2002 Feb 20
+ -8:00 Mexico P%sT
+# From Paul Eggert (2006-03-22):
+# Formerly there was an America/Ensenada zone, which differed from
+# America/Tijuana only in that it did not observe DST from 1976
+# through 1995. This was as per Shanks (1999). But Shanks & Pottenger say
+# Ensenada did not observe DST from 1948 through 1975. Guy Harris reports
+# that the 1987 OAG says "Only Ensenada, Mexicale, San Felipe and
+# Tijuana observe DST," which agrees with Shanks & Pottenger but implies that
+# DST-observance was a town-by-town matter back then. This concerns
+# data after 1970 so most likely there should be at least one Zone
+# other than America/Tijuana for Baja, but it's not clear yet what its
+# name or contents should be.
+#
+# Revillagigedo Is
+# no information
+
+###############################################################################
+
+# Anguilla
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Anguilla -4:12:16 - LMT 1912 Mar 2
+ -4:00 - AST
+
+# Antigua and Barbuda
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Antigua -4:07:12 - LMT 1912 Mar 2
+ -5:00 - EST 1951
+ -4:00 - AST
+
+# Bahamas
+#
+# From Sue Williams (2006-12-07):
+# The Bahamas announced about a month ago that they plan to change their DST
+# rules to sync with the U.S. starting in 2007....
+# http://www.jonesbahamas.com/?c=45&a=10412
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Bahamas 1964 1975 - Oct lastSun 2:00 0 S
+Rule Bahamas 1964 1975 - Apr lastSun 2:00 1:00 D
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Nassau -5:09:24 - LMT 1912 Mar 2
+ -5:00 Bahamas E%sT 1976
+ -5:00 US E%sT
+
+# Barbados
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Barb 1977 only - Jun 12 2:00 1:00 D
+Rule Barb 1977 1978 - Oct Sun>=1 2:00 0 S
+Rule Barb 1978 1980 - Apr Sun>=15 2:00 1:00 D
+Rule Barb 1979 only - Sep 30 2:00 0 S
+Rule Barb 1980 only - Sep 25 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Barbados -3:58:28 - LMT 1924 # Bridgetown
+ -3:58:28 - BMT 1932 # Bridgetown Mean Time
+ -4:00 Barb A%sT
+
+# Belize
+# Whitman entirely disagrees with Shanks; go with Shanks & Pottenger.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Belize 1918 1942 - Oct Sun>=2 0:00 0:30 HD
+Rule Belize 1919 1943 - Feb Sun>=9 0:00 0 S
+Rule Belize 1973 only - Dec 5 0:00 1:00 D
+Rule Belize 1974 only - Feb 9 0:00 0 S
+Rule Belize 1982 only - Dec 18 0:00 1:00 D
+Rule Belize 1983 only - Feb 12 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Belize -5:52:48 - LMT 1912 Apr
+ -6:00 Belize C%sT
+
+# Bermuda
+
+# From Dan Jones, reporting in The Royal Gazette (2006-06-26):
+
+# Next year, however, clocks in the US will go forward on the second Sunday
+# in March, until the first Sunday in November. And, after the Time Zone
+# (Seasonal Variation) Bill 2006 was passed in the House of Assembly on
+# Friday, the same thing will happen in Bermuda.
+# http://www.theroyalgazette.com/apps/pbcs.dll/article?AID=/20060529/NEWS/105290135
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Bermuda -4:19:04 - LMT 1930 Jan 1 2:00 # Hamilton
+ -4:00 - AST 1974 Apr 28 2:00
+ -4:00 Bahamas A%sT 1976
+ -4:00 US A%sT
+
+# Cayman Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
+ -5:07:12 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 - EST
+
+# Costa Rica
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule CR 1979 1980 - Feb lastSun 0:00 1:00 D
+Rule CR 1979 1980 - Jun Sun>=1 0:00 0 S
+Rule CR 1991 1992 - Jan Sat>=15 0:00 1:00 D
+# IATA SSIM (1991-09) says the following was at 1:00;
+# go with Shanks & Pottenger.
+Rule CR 1991 only - Jul 1 0:00 0 S
+Rule CR 1992 only - Mar 15 0:00 0 S
+# There are too many San Joses elsewhere, so we'll use `Costa Rica'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Costa_Rica -5:36:20 - LMT 1890 # San Jose
+ -5:36:20 - SJMT 1921 Jan 15 # San Jose Mean Time
+ -6:00 CR C%sT
+# Coco
+# no information; probably like America/Costa_Rica
+
+# Cuba
+
+# From Arthur David Olson (1999-03-29):
+# The 1999-03-28 exhibition baseball game held in Havana, Cuba, between
+# the Cuban National Team and the Baltimore Orioles was carried live on
+# the Orioles Radio Network, including affiliate WTOP in Washington, DC.
+# During the game, play-by-play announcer Jim Hunter noted that
+# "We'll be losing two hours of sleep...Cuba switched to Daylight Saving
+# Time today." (The "two hour" remark referred to losing one hour of
+# sleep on 1999-03-28--when the announcers were in Cuba as it switched
+# to DST--and one more hour on 1999-04-04--when the announcers will have
+# returned to Baltimore, which switches on that date.)
+
+# From Evert van der Veer via Steffen Thorsen (2004-10-28):
+# Cuba is not going back to standard time this year.
+# From Paul Eggert (2006-03-22):
+# http://www.granma.cu/ingles/2004/septiembre/juev30/41medid-i.html
+# says that it's due to a problem at the Antonio Guiteras
+# thermoelectric plant, and says "This October there will be no return
+# to normal hours (after daylight saving time)".
+# For now, let's assume that it's a temporary measure.
+
+# From Carlos A. Carnero Delgado (2005-11-12):
+# This year (just like in 2004-2005) there's no change in time zone
+# adjustment in Cuba. We will stay in daylight saving time:
+# http://www.granma.cu/espanol/2005/noviembre/mier9/horario.html
+
+# From Jesper Norgaard Welen (2006-10-21):
+# An article in GRANMA INTERNACIONAL claims that Cuba will end
+# the 3 years of permanent DST next weekend, see
+# http://www.granma.cu/ingles/2006/octubre/lun16/43horario.html
+# "On Saturday night, October 28 going into Sunday, October 29, at 01:00,
+# watches should be set back one hour -- going back to 00:00 hours -- returning
+# to the normal schedule....
+
+# From Paul Eggert (2007-03-02):
+# http://www.granma.cubaweb.cu/english/news/art89.html, dated yesterday,
+# says Cuban clocks will advance at midnight on March 10.
+# For lack of better information, assume Cuba will use US rules,
+# except that it switches at midnight standard time as usual.
+#
+# From Steffen Thorsen (2007-10-25):
+# Carlos Alberto Fonseca Arauz informed me that Cuba will end DST one week
+# earlier - on the last Sunday of October, just like in 2006.
+#
+# He supplied these references:
+#
+# http://www.prensalatina.com.mx/article.asp?ID=%7B4CC32C1B-A9F7-42FB-8A07-8631AFC923AF%7D&language=ES
+# http://actualidad.terra.es/sociedad/articulo/cuba_llama_ahorrar_energia_cambio_1957044.htm
+#
+# From Alex Kryvenishev (2007-10-25):
+# Here is also article from Granma (Cuba):
+#
+# [Regira] el Horario Normal desde el [proximo] domingo 28 de octubre
+# http://www.granma.cubaweb.cu/2007/10/24/nacional/artic07.html
+#
+# http://www.worldtimezone.com/dst_news/dst_news_cuba03.html
+
+# From Arthur David Olson (2008-03-09):
+# I'm in Maryland which is now observing United States Eastern Daylight
+# Time. At 9:44 local time I used RealPlayer to listen to
+# <a href="http://media.enet.cu/radioreloj">
+# http://media.enet.cu/radioreloj
+# </a>, a Cuban information station, and heard
+# the time announced as "ocho cuarenta y cuatro" ("eight forty-four"),
+# indicating that Cuba is still on standard time.
+
+# From Steffen Thorsen (2008-03-12):
+# It seems that Cuba will start DST on Sunday, 2007-03-16...
+# It was announced yesterday, according to this source (in Spanish):
+# <a href="http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm">
+# http://www.nnc.cubaweb.cu/marzo-2008/cien-1-11-3-08.htm
+# </a>
+#
+# Some more background information is posted here:
+# <a href="http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html">
+# http://www.timeanddate.com/news/time/cuba-starts-dst-march-16.html
+# </a>
+#
+# The article also says that Cuba has been observing DST since 1963,
+# while Shanks (and tzdata) has 1965 as the first date (except in the
+# 1940's). Many other web pages in Cuba also claim that it has been
+# observed since 1963, but with the exception of 1970 - an exception
+# which is not present in tzdata/Shanks. So there is a chance we need to
+# change some historic records as well.
+#
+# One example:
+# <a href="http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm">
+# http://www.radiohc.cu/espanol/noticias/mar07/11mar/hor.htm
+# </a>
+
+# From Jesper Norgaard Welen (2008-03-13):
+# The Cuban time change has just been confirmed on the most authoritative
+# web site, the Granma. Please check out
+# <a href="http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html">
+# http://www.granma.cubaweb.cu/2008/03/13/nacional/artic10.html
+# </a>
+#
+# Basically as expected after Steffen Thorsens information, the change
+# will take place midnight between Saturday and Sunday.
+
+# From Arthur David Olson (2008-03-12):
+# Assume Sun>=15 (third Sunday) going forward.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Cuba 1928 only - Jun 10 0:00 1:00 D
+Rule Cuba 1928 only - Oct 10 0:00 0 S
+Rule Cuba 1940 1942 - Jun Sun>=1 0:00 1:00 D
+Rule Cuba 1940 1942 - Sep Sun>=1 0:00 0 S
+Rule Cuba 1945 1946 - Jun Sun>=1 0:00 1:00 D
+Rule Cuba 1945 1946 - Sep Sun>=1 0:00 0 S
+Rule Cuba 1965 only - Jun 1 0:00 1:00 D
+Rule Cuba 1965 only - Sep 30 0:00 0 S
+Rule Cuba 1966 only - May 29 0:00 1:00 D
+Rule Cuba 1966 only - Oct 2 0:00 0 S
+Rule Cuba 1967 only - Apr 8 0:00 1:00 D
+Rule Cuba 1967 1968 - Sep Sun>=8 0:00 0 S
+Rule Cuba 1968 only - Apr 14 0:00 1:00 D
+Rule Cuba 1969 1977 - Apr lastSun 0:00 1:00 D
+Rule Cuba 1969 1971 - Oct lastSun 0:00 0 S
+Rule Cuba 1972 1974 - Oct 8 0:00 0 S
+Rule Cuba 1975 1977 - Oct lastSun 0:00 0 S
+Rule Cuba 1978 only - May 7 0:00 1:00 D
+Rule Cuba 1978 1990 - Oct Sun>=8 0:00 0 S
+Rule Cuba 1979 1980 - Mar Sun>=15 0:00 1:00 D
+Rule Cuba 1981 1985 - May Sun>=5 0:00 1:00 D
+Rule Cuba 1986 1989 - Mar Sun>=14 0:00 1:00 D
+Rule Cuba 1990 1997 - Apr Sun>=1 0:00 1:00 D
+Rule Cuba 1991 1995 - Oct Sun>=8 0:00s 0 S
+Rule Cuba 1996 only - Oct 6 0:00s 0 S
+Rule Cuba 1997 only - Oct 12 0:00s 0 S
+Rule Cuba 1998 1999 - Mar lastSun 0:00s 1:00 D
+Rule Cuba 1998 2003 - Oct lastSun 0:00s 0 S
+Rule Cuba 2000 2006 - Apr Sun>=1 0:00s 1:00 D
+Rule Cuba 2006 max - Oct lastSun 0:00s 0 S
+Rule Cuba 2007 only - Mar Sun>=8 0:00s 1:00 D
+Rule Cuba 2008 max - Mar Sun>=15 0:00s 1:00 D
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Havana -5:29:28 - LMT 1890
+ -5:29:36 - HMT 1925 Jul 19 12:00 # Havana MT
+ -5:00 Cuba C%sT
+
+# Dominica
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Dominica -4:05:36 - LMT 1911 Jul 1 0:01 # Roseau
+ -4:00 - AST
+
+# Dominican Republic
+
+# From Steffen Thorsen (2000-10-30):
+# Enrique Morales reported to me that the Dominican Republic has changed the
+# time zone to Eastern Standard Time as of Sunday 29 at 2 am....
+# http://www.listin.com.do/antes/261000/republica/princi.html
+
+# From Paul Eggert (2000-12-04):
+# That URL (2000-10-26, in Spanish) says they planned to use US-style DST.
+
+# From Rives McDow (2000-12-01):
+# Dominican Republic changed its mind and presidential decree on Tuesday,
+# November 28, 2000, with a new decree. On Sunday, December 3 at 1:00 AM the
+# Dominican Republic will be reverting to 8 hours from the International Date
+# Line, and will not be using DST in the foreseeable future. The reason they
+# decided to use DST was to be in synch with Puerto Rico, who was also going
+# to implement DST. When Puerto Rico didn't implement DST, the president
+# decided to revert.
+
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule DR 1966 only - Oct 30 0:00 1:00 D
+Rule DR 1967 only - Feb 28 0:00 0 S
+Rule DR 1969 1973 - Oct lastSun 0:00 0:30 HD
+Rule DR 1970 only - Feb 21 0:00 0 S
+Rule DR 1971 only - Jan 20 0:00 0 S
+Rule DR 1972 1974 - Jan 21 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Santo_Domingo -4:39:36 - LMT 1890
+ -4:40 - SDMT 1933 Apr 1 12:00 # S. Dom. MT
+ -5:00 DR E%sT 1974 Oct 27
+ -4:00 - AST 2000 Oct 29 02:00
+ -5:00 US E%sT 2000 Dec 3 01:00
+ -4:00 - AST
+
+# El Salvador
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Salv 1987 1988 - May Sun>=1 0:00 1:00 D
+Rule Salv 1987 1988 - Sep lastSun 0:00 0 S
+# There are too many San Salvadors elsewhere, so use America/El_Salvador
+# instead of America/San_Salvador.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/El_Salvador -5:56:48 - LMT 1921 # San Salvador
+ -6:00 Salv C%sT
+
+# Grenada
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Grenada -4:07:00 - LMT 1911 Jul # St George's
+ -4:00 - AST
+
+# Guadeloupe
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guadeloupe -4:06:08 - LMT 1911 Jun 8 # Pointe a Pitre
+ -4:00 - AST
+# St Barthelemy
+Link America/Guadeloupe America/St_Barthelemy
+# St Martin (French part)
+Link America/Guadeloupe America/Marigot
+
+# Guatemala
+#
+# From Gwillim Law (2006-04-22), after a heads-up from Oscar van Vlijmen:
+# Diario Co Latino, at
+# http://www.diariocolatino.com/internacionales/detalles.asp?NewsID=8079,
+# says in an article dated 2006-04-19 that the Guatemalan government had
+# decided on that date to advance official time by 60 minutes, to lessen the
+# impact of the elevated cost of oil.... Daylight saving time will last from
+# 2006-04-29 24:00 (Guatemalan standard time) to 2006-09-30 (time unspecified).
+# From Paul Eggert (2006-06-22):
+# The Ministry of Energy and Mines, press release CP-15/2006
+# (2006-04-19), says DST ends at 24:00. See
+# <http://www.sieca.org.gt/Sitio_publico/Energeticos/Doc/Medidas/Cambio_Horario_Nac_190406.pdf>.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Guat 1973 only - Nov 25 0:00 1:00 D
+Rule Guat 1974 only - Feb 24 0:00 0 S
+Rule Guat 1983 only - May 21 0:00 1:00 D
+Rule Guat 1983 only - Sep 22 0:00 0 S
+Rule Guat 1991 only - Mar 23 0:00 1:00 D
+Rule Guat 1991 only - Sep 7 0:00 0 S
+Rule Guat 2006 only - Apr 30 0:00 1:00 D
+Rule Guat 2006 only - Oct 1 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guatemala -6:02:04 - LMT 1918 Oct 5
+ -6:00 Guat C%sT
+
+# Haiti
+# From Gwillim Law (2005-04-15):
+# Risto O. Nykanen wrote me that Haiti is now on DST.
+# I searched for confirmation, and I found a
+# <a href="http://www.haitianconsulate.org/time.doc"> press release
+# on the Web page of the Haitian Consulate in Chicago (2005-03-31),
+# </a>. Translated from French, it says:
+#
+# "The Prime Minister's Communication Office notifies the public in general
+# and the press in particular that, following a decision of the Interior
+# Ministry and the Territorial Collectivities [I suppose that means the
+# provinces], Haiti will move to Eastern Daylight Time in the night from next
+# Saturday the 2nd to Sunday the 3rd.
+#
+# "Consequently, the Prime Minister's Communication Office wishes to inform
+# the population that the country's clocks will be set forward one hour
+# starting at midnight. This provision will hold until the last Saturday in
+# October 2005.
+#
+# "Port-au-Prince, March 31, 2005"
+#
+# From Steffen Thorsen (2006-04-04):
+# I have been informed by users that Haiti observes DST this year like
+# last year, so the current "only" rule for 2005 might be changed to a
+# "max" rule or to last until 2006. (Who knows if they will observe DST
+# next year or if they will extend their DST like US/Canada next year).
+#
+# I have found this article about it (in French):
+# http://www.haitipressnetwork.com/news.cfm?articleID=7612
+#
+# The reason seems to be an energy crisis.
+
+# From Stephen Colebourne (2007-02-22):
+# Some IATA info: Haiti won't be having DST in 2007.
+
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Haiti 1983 only - May 8 0:00 1:00 D
+Rule Haiti 1984 1987 - Apr lastSun 0:00 1:00 D
+Rule Haiti 1983 1987 - Oct lastSun 0:00 0 S
+# Shanks & Pottenger say AT is 2:00, but IATA SSIM (1991/1997) says 1:00s.
+# Go with IATA.
+Rule Haiti 1988 1997 - Apr Sun>=1 1:00s 1:00 D
+Rule Haiti 1988 1997 - Oct lastSun 1:00s 0 S
+Rule Haiti 2005 2006 - Apr Sun>=1 0:00 1:00 D
+Rule Haiti 2005 2006 - Oct lastSun 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Port-au-Prince -4:49:20 - LMT 1890
+ -4:49 - PPMT 1917 Jan 24 12:00 # P-a-P MT
+ -5:00 Haiti E%sT
+
+# Honduras
+# Shanks & Pottenger say 1921 Jan 1; go with Whitman's more precise Apr 1.
+
+# From Paul Eggert (2006-05-05):
+# worldtimezone.com reports a 2006-05-02 Spanish-language AP article
+# saying Honduras will start using DST midnight Saturday, effective 4
+# months until September. La Tribuna reported today
+# <http://www.latribuna.hn/99299.html> that Manuel Zelaya, the president
+# of Honduras, refused to back down on this.
+
+# From Jesper Norgaard Welen (2006-08-08):
+# It seems that Honduras has returned from DST to standard time this Monday at
+# 00:00 hours (prolonging Sunday to 25 hours duration).
+# http://www.worldtimezone.com/dst_news/dst_news_honduras04.html
+
+# From Paul Eggert (2006-08-08):
+# Also see Diario El Heraldo, The country returns to standard time (2006-08-08)
+# <http://www.elheraldo.hn/nota.php?nid=54941&sec=12>.
+# It mentions executive decree 18-2006.
+
+# From Steffen Thorsen (2006-08-17):
+# Honduras will observe DST from 2007 to 2009, exact dates are not
+# published, I have located this authoritative source:
+# http://www.presidencia.gob.hn/noticia.aspx?nId=47
+
+# From Steffen Thorsen (2007-03-30):
+# http://www.laprensahn.com/pais_nota.php?id04962=7386
+# So it seems that Honduras will not enter DST this year....
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Hond 1987 1988 - May Sun>=1 0:00 1:00 D
+Rule Hond 1987 1988 - Sep lastSun 0:00 0 S
+Rule Hond 2006 only - May Sun>=1 0:00 1:00 D
+Rule Hond 2006 only - Aug Mon>=1 0:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Tegucigalpa -5:48:52 - LMT 1921 Apr
+ -6:00 Hond C%sT
+#
+# Great Swan I ceded by US to Honduras in 1972
+
+# Jamaica
+
+# From Bob Devine (1988-01-28):
+# Follows US rules.
+
+# From U. S. Naval Observatory (1989-01-19):
+# JAMAICA 5 H BEHIND UTC
+
+# From Shanks & Pottenger:
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Jamaica -5:07:12 - LMT 1890 # Kingston
+ -5:07:12 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 - EST 1974 Apr 28 2:00
+ -5:00 US E%sT 1984
+ -5:00 - EST
+
+# Martinique
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Martinique -4:04:20 - LMT 1890 # Fort-de-France
+ -4:04:20 - FFMT 1911 May # Fort-de-France MT
+ -4:00 - AST 1980 Apr 6
+ -4:00 1:00 ADT 1980 Sep 28
+ -4:00 - AST
+
+# Montserrat
+# From Paul Eggert (2006-03-22):
+# In 1995 volcanic eruptions forced evacuation of Plymouth, the capital.
+# world.gazetteer.com says Cork Hill is the most populous location now.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Montserrat -4:08:52 - LMT 1911 Jul 1 0:01 # Cork Hill
+ -4:00 - AST
+
+# Nicaragua
+#
+# This uses Shanks & Pottenger for times before 2005.
+#
+# From Steffen Thorsen (2005-04-12):
+# I've got reports from 8 different people that Nicaragua just started
+# DST on Sunday 2005-04-10, in order to save energy because of
+# expensive petroleum. The exact end date for DST is not yet
+# announced, only "September" but some sites also say "mid-September".
+# Some background information is available on the President's official site:
+# http://www.presidencia.gob.ni/Presidencia/Files_index/Secretaria/Notas%20de%20Prensa/Presidente/2005/ABRIL/Gobierno-de-nicaragua-adelanta-hora-oficial-06abril.htm
+# The Decree, no 23-2005 is available here:
+# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2005/Decreto%2023-2005%20Se%20adelanta%20en%20una%20hora%20en%20todo%20el%20territorio%20nacional%20apartir%20de%20las%2024horas%20del%2009%20de%20Abril.pdf
+#
+# From Paul Eggert (2005-05-01):
+# The decree doesn't say anything about daylight saving, but for now let's
+# assume that it is daylight saving....
+#
+# From Gwillim Law (2005-04-21):
+# The Associated Press story on the time change, which can be found at
+# http://www.lapalmainteractivo.com/guias/content/gen/ap/America_Latina/AMC_GEN_NICARAGUA_HORA.html
+# and elsewhere, says (fifth paragraph, translated from Spanish): "The last
+# time that a change of clocks was applied to save energy was in the year 2000
+# during the Arnoldo Aleman administration."...
+# The northamerica file says that Nicaragua has been on UTC-6 continuously
+# since December 1998. I wasn't able to find any details of Nicaraguan time
+# changes in 2000. Perhaps a note could be added to the northamerica file, to
+# the effect that we have indirect evidence that DST was observed in 2000.
+#
+# From Jesper Norgaard Welen (2005-11-02):
+# Nicaragua left DST the 2005-10-02 at 00:00 (local time).
+# http://www.presidencia.gob.ni/presidencia/files_index/secretaria/comunicados/2005/septiembre/26septiembre-cambio-hora.htm
+# (2005-09-26)
+#
+# From Jesper Norgaard Welen (2006-05-05):
+# http://www.elnuevodiario.com.ni/2006/05/01/nacionales/18410
+# (my informal translation)
+# By order of the president of the republic, Enrique Bolanos, Nicaragua
+# advanced by sixty minutes their official time, yesterday at 2 in the
+# morning, and will stay that way until 30.th. of september.
+#
+# From Jesper Norgaard Welen (2006-09-30):
+# http://www.presidencia.gob.ni/buscador_gaceta/BD/DECRETOS/2006/D-063-2006P-PRN-Cambio-Hora.pdf
+# My informal translation runs:
+# The natural sun time is restored in all the national territory, in that the
+# time is returned one hour at 01:00 am of October 1 of 2006.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Nic 1979 1980 - Mar Sun>=16 0:00 1:00 D
+Rule Nic 1979 1980 - Jun Mon>=23 0:00 0 S
+Rule Nic 2005 only - Apr 10 0:00 1:00 D
+Rule Nic 2005 only - Oct Sun>=1 0:00 0 S
+Rule Nic 2006 only - Apr 30 2:00 1:00 D
+Rule Nic 2006 only - Oct Sun>=1 1:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Managua -5:45:08 - LMT 1890
+ -5:45:12 - MMT 1934 Jun 23 # Managua Mean Time?
+ -6:00 - CST 1973 May
+ -5:00 - EST 1975 Feb 16
+ -6:00 Nic C%sT 1992 Jan 1 4:00
+ -5:00 - EST 1992 Sep 24
+ -6:00 - CST 1993
+ -5:00 - EST 1997
+ -6:00 Nic C%sT
+
+# Panama
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Panama -5:18:08 - LMT 1890
+ -5:19:36 - CMT 1908 Apr 22 # Colon Mean Time
+ -5:00 - EST
+
+# Puerto Rico
+# There are too many San Juans elsewhere, so we'll use `Puerto_Rico'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Puerto_Rico -4:24:25 - LMT 1899 Mar 28 12:00 # San Juan
+ -4:00 - AST 1942 May 3
+ -4:00 US A%sT 1946
+ -4:00 - AST
+
+# St Kitts-Nevis
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Kitts -4:10:52 - LMT 1912 Mar 2 # Basseterre
+ -4:00 - AST
+
+# St Lucia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Lucia -4:04:00 - LMT 1890 # Castries
+ -4:04:00 - CMT 1912 # Castries Mean Time
+ -4:00 - AST
+
+# St Pierre and Miquelon
+# There are too many St Pierres elsewhere, so we'll use `Miquelon'.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Miquelon -3:44:40 - LMT 1911 May 15 # St Pierre
+ -4:00 - AST 1980 May
+ -3:00 - PMST 1987 # Pierre & Miquelon Time
+ -3:00 Canada PM%sT
+
+# St Vincent and the Grenadines
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Vincent -4:04:56 - LMT 1890 # Kingstown
+ -4:04:56 - KMT 1912 # Kingstown Mean Time
+ -4:00 - AST
+
+# Turks and Caicos
+#
+# From Chris Dunn in
+# <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=415007>
+# (2007-03-15): In the Turks & Caicos Islands (America/Grand_Turk) the
+# daylight saving dates for time changes have been adjusted to match
+# the recent U.S. change of dates.
+#
+# From Brian Inglis (2007-04-28):
+# http://www.turksandcaicos.tc/calendar/index.htm [2007-04-26]
+# there is an entry for Nov 4 "Daylight Savings Time Ends 2007" and three
+# rows before that there is an out of date entry for Oct:
+# "Eastern Standard Times Begins 2007
+# Clocks are set back one hour at 2:00 a.m. local Daylight Saving Time"
+# indicating that the normal ET rules are followed.
+#
+# From Paul Eggert (2006-05-01):
+# Shanks & Pottenger say they use US DST rules, but IATA SSIM (1991/1998)
+# says they switch at midnight. Go with Shanks & Pottenger.
+#
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule TC 1979 1986 - Apr lastSun 2:00 1:00 D
+Rule TC 1979 2006 - Oct lastSun 2:00 0 S
+Rule TC 1987 2006 - Apr Sun>=1 2:00 1:00 D
+Rule TC 2007 max - Mar Sun>=8 2:00 1:00 D
+Rule TC 2007 max - Nov Sun>=1 2:00 0 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Grand_Turk -4:44:32 - LMT 1890
+ -5:07:12 - KMT 1912 Feb # Kingston Mean Time
+ -5:00 TC E%sT
+
+# British Virgin Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Tortola -4:18:28 - LMT 1911 Jul # Road Town
+ -4:00 - AST
+
+# Virgin Is
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/St_Thomas -4:19:44 - LMT 1911 Jul # Charlotte Amalie
+ -4:00 - AST
diff --git a/share/zoneinfo/pacificnew b/share/zoneinfo/pacificnew
new file mode 100644
index 0000000..667940b
--- /dev/null
+++ b/share/zoneinfo/pacificnew
@@ -0,0 +1,26 @@
+# @(#)pacificnew 8.1
+
+# From Arthur David Olson (1989-04-05):
+# On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
+# establishing "Pacific Presidential Election Time"; it was not acted on
+# by the Senate or signed into law by the President.
+# You might want to change the "PE" (Presidential Election) below to
+# "Q" (Quadrennial) to maintain three-character zone abbreviations.
+# If you're really conservative, you might want to change it to "D".
+# Avoid "L" (Leap Year), which won't be true in 2100.
+
+# If Presidential Election Time is ever established, replace "XXXX" below
+# with the year the law takes effect and uncomment the "##" lines.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+## Rule Twilite XXXX max - Apr Sun>=1 2:00 1:00 D
+## Rule Twilite XXXX max uspres Oct lastSun 2:00 1:00 PE
+## Rule Twilite XXXX max uspres Nov Sun>=7 2:00 0 S
+## Rule Twilite XXXX max nonpres Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+## Zone America/Los_Angeles-PET -8:00 US P%sT XXXX
+## -8:00 Twilite P%sT
+
+# For now...
+Link America/Los_Angeles US/Pacific-New ##
diff --git a/share/zoneinfo/southamerica b/share/zoneinfo/southamerica
new file mode 100644
index 0000000..e882637
--- /dev/null
+++ b/share/zoneinfo/southamerica
@@ -0,0 +1,1428 @@
+# @(#)southamerica 8.33
+# <pre>
+
+# This data is by no means authoritative; if you think you know better,
+# go ahead and edit the file (and please send any changes to
+# tz@elsie.nci.nih.gov for general use in the future).
+
+# From Paul Eggert (2006-03-22):
+# A good source for time zone historical data outside the U.S. is
+# Thomas G. Shanks and Rique Pottenger, The International Atlas (6th edition),
+# San Diego: ACS Publications, Inc. (2003).
+#
+# Gwillim Law writes that a good source
+# for recent time zone data is the International Air Transport
+# Association's Standard Schedules Information Manual (IATA SSIM),
+# published semiannually. Law sent in several helpful summaries
+# of the IATA's data after 1990.
+#
+# Except where otherwise noted, Shanks & Pottenger is the source for
+# entries through 1990, and IATA SSIM is the source for entries afterwards.
+#
+# Earlier editions of these tables used the North American style (e.g. ARST and
+# ARDT for Argentine Standard and Daylight Time), but the following quote
+# suggests that it's better to use European style (e.g. ART and ARST).
+# I suggest the use of _Summer time_ instead of the more cumbersome
+# _daylight-saving time_. _Summer time_ seems to be in general use
+# in Europe and South America.
+# -- E O Cutler, _New York Times_ (1937-02-14), quoted in
+# H L Mencken, _The American Language: Supplement I_ (1960), p 466
+#
+# Earlier editions of these tables also used the North American style
+# for time zones in Brazil, but this was incorrect, as Brazilians say
+# "summer time". Reinaldo Goulart, a Sao Paulo businessman active in
+# the railroad sector, writes (1999-07-06):
+# The subject of time zones is currently a matter of discussion/debate in
+# Brazil. Let's say that "the Brasilia time" is considered the
+# "official time" because Brasilia is the capital city.
+# The other three time zones are called "Brasilia time "minus one" or
+# "plus one" or "plus two". As far as I know there is no such
+# name/designation as "Eastern Time" or "Central Time".
+# So I invented the following (English-language) abbreviations for now.
+# Corrections are welcome!
+# std dst
+# -2:00 FNT FNST Fernando de Noronha
+# -3:00 BRT BRST Brasilia
+# -4:00 AMT AMST Amazon
+# -5:00 ACT ACST Acre
+
+###############################################################################
+
+###############################################################################
+
+# Argentina
+
+# From Bob Devine (1988-01-28):
+# Argentina: first Sunday in October to first Sunday in April since 1976.
+# Double Summer time from 1969 to 1974. Switches at midnight.
+
+# From U. S. Naval Observatory (1988-01-199):
+# ARGENTINA 3 H BEHIND UTC
+
+# From Hernan G. Otero (1995-06-26):
+# I am sending modifications to the Argentine time zone table...
+# AR was chosen because they are the ISO letters that represent Argentina.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Arg 1930 only - Dec 1 0:00 1:00 S
+Rule Arg 1931 only - Apr 1 0:00 0 -
+Rule Arg 1931 only - Oct 15 0:00 1:00 S
+Rule Arg 1932 1940 - Mar 1 0:00 0 -
+Rule Arg 1932 1939 - Nov 1 0:00 1:00 S
+Rule Arg 1940 only - Jul 1 0:00 1:00 S
+Rule Arg 1941 only - Jun 15 0:00 0 -
+Rule Arg 1941 only - Oct 15 0:00 1:00 S
+Rule Arg 1943 only - Aug 1 0:00 0 -
+Rule Arg 1943 only - Oct 15 0:00 1:00 S
+Rule Arg 1946 only - Mar 1 0:00 0 -
+Rule Arg 1946 only - Oct 1 0:00 1:00 S
+Rule Arg 1963 only - Oct 1 0:00 0 -
+Rule Arg 1963 only - Dec 15 0:00 1:00 S
+Rule Arg 1964 1966 - Mar 1 0:00 0 -
+Rule Arg 1964 1966 - Oct 15 0:00 1:00 S
+Rule Arg 1967 only - Apr 2 0:00 0 -
+Rule Arg 1967 1968 - Oct Sun>=1 0:00 1:00 S
+Rule Arg 1968 1969 - Apr Sun>=1 0:00 0 -
+Rule Arg 1974 only - Jan 23 0:00 1:00 S
+Rule Arg 1974 only - May 1 0:00 0 -
+Rule Arg 1988 only - Dec 1 0:00 1:00 S
+#
+# From Hernan G. Otero (1995-06-26):
+# These corrections were contributed by InterSoft Argentina S.A.,
+# obtaining the data from the:
+# Talleres de Hidrografia Naval Argentina
+# (Argentine Naval Hydrography Institute)
+Rule Arg 1989 1993 - Mar Sun>=1 0:00 0 -
+Rule Arg 1989 1992 - Oct Sun>=15 0:00 1:00 S
+#
+# From Hernan G. Otero (1995-06-26):
+# From this moment on, the law that mandated the daylight saving
+# time corrections was derogated and no more modifications
+# to the time zones (for daylight saving) are now made.
+#
+# From Rives McDow (2000-01-10):
+# On October 3, 1999, 0:00 local, Argentina implemented daylight savings time,
+# which did not result in the switch of a time zone, as they stayed 9 hours
+# from the International Date Line.
+Rule Arg 1999 only - Oct Sun>=1 0:00 1:00 S
+# From Paul Eggert (2007-12-28):
+# DST was set to expire on March 5, not March 3, but since it was converted
+# to standard time on March 3 it's more convenient for us to pretend that
+# it ended on March 3.
+Rule Arg 2000 only - Mar 3 0:00 0 -
+#
+# From Peter Gradelski via Steffen Thorsen (2000-03-01):
+# We just checked with our Sao Paulo office and they say the government of
+# Argentina decided not to become one of the countries that go on or off DST.
+# So Buenos Aires should be -3 hours from GMT at all times.
+#
+# From Fabian L. Arce Jofre (2000-04-04):
+# The law that claimed DST for Argentina was derogated by President Fernando
+# de la Rua on March 2, 2000, because it would make people spend more energy
+# in the winter time, rather than less. The change took effect on March 3.
+#
+# From Mariano Absatz (2001-06-06):
+# one of the major newspapers here in Argentina said that the 1999
+# Timezone Law (which never was effectively applied) will (would?) be
+# in effect.... The article is at
+# http://ar.clarin.com/diario/2001-06-06/e-01701.htm
+# ... The Law itself is "Ley No 25155", sanctioned on 1999-08-25, enacted
+# 1999-09-17, and published 1999-09-21. The official publication is at:
+# http://www.boletin.jus.gov.ar/BON/Primera/1999/09-Septiembre/21/PDF/BO21-09-99LEG.PDF
+# Regretfully, you have to subscribe (and pay) for the on-line version....
+#
+# (2001-06-12):
+# the timezone for Argentina will not change next Sunday.
+# Apparently it will do so on Sunday 24th....
+# http://ar.clarin.com/diario/2001-06-12/s-03501.htm
+#
+# (2001-06-25):
+# Last Friday (yes, the last working day before the date of the change), the
+# Senate annulled the 1999 law that introduced the changes later postponed.
+# http://www.clarin.com.ar/diario/2001-06-22/s-03601.htm
+# It remains the vote of the Deputies..., but it will be the same....
+# This kind of things had always been done this way in Argentina.
+# We are still -03:00 all year round in all of the country.
+#
+# From Steffen Thorsen (2007-12-21):
+# A user (Leonardo Chaim) reported that Argentina will adopt DST....
+# all of the country (all Zone-entries) are affected. News reports like
+# http://www.lanacion.com.ar/opinion/nota.asp?nota_id=973037 indicate
+# that Argentina will use DST next year as well, from October to
+# March, although exact rules are not given.
+#
+# From Jesper Norgaard Welen (2007-12-26)
+# The last hurdle of Argentina DST is over, the proposal was approved in
+# the lower chamber too (Deputados) with a vote 192 for and 2 against.
+# By the way thanks to Mariano Absatz and Daniel Mario Vega for the link to
+# the original scanned proposal, where the dates and the zero hours are
+# clear and unambiguous...This is the article about final approval:
+# <a href="http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996">
+# http://www.lanacion.com.ar/politica/nota.asp?nota_id=973996
+# </a>
+#
+# From Paul Eggert (2007-12-22):
+# For dates after mid-2008, the following rules are my guesses and
+# are quite possibly wrong, but are more likely than no DST at all.
+
+# From Alexander Krivenyshev (2008-09-05):
+# As per message from Carlos Alberto Fonseca Arauz (Nicaragua),
+# Argentina will start DST on Sunday October 19, 2008.
+#
+# <a href="http://www.worldtimezone.com/dst_news/dst_news_argentina03.html">
+# http://www.worldtimezone.com/dst_news/dst_news_argentina03.html
+# </a>
+# OR
+# <a href="http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)">
+# http://www.impulsobaires.com.ar/nota.php?id=57832 (in spanish)
+# </a>
+
+# From Rodrigo Severo (2008-10-06):
+# Here is some info available at a Gentoo bug related to TZ on Argentina's DST:
+# ...
+# ------- Comment #1 from [jmdocile] 2008-10-06 16:28 0000 -------
+# Hi, there is a problem with timezone-data-2008e and maybe with
+# timezone-data-2008f
+# Argentinian law [Number] 25.155 is no longer valid.
+# <a href="http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm">
+# http://www.infoleg.gov.ar/infolegInternet/anexos/60000-64999/60036/norma.htm
+# </a>
+# The new one is law [Number] 26.350
+# <a href="http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm">
+# http://www.infoleg.gov.ar/infolegInternet/anexos/135000-139999/136191/norma.htm
+# </a>
+# So there is no summer time in Argentina for now.
+
+# From Mariano Absatz (2008-10-20):
+# Decree 1693/2008 applies Law 26.350 for the summer 2008/2009 establishing DST in Argentina
+# From 2008-10-19 until 2009-03-15
+# <a href="http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01">
+# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=16102008&pi=3&pf=4&s=0&sec=01
+# </a>
+#
+# Decree 1705/2008 excepting 12 Provinces from applying DST in the summer 2008/2009:
+# Catamarca, La Rioja, Mendoza, Salta, San Juan, San Luis, La Pampa, Neuquen, Rio Negro, Chubut, Santa Cruz
+# and Tierra del Fuego
+# <a href="http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01">
+# http://www.boletinoficial.gov.ar/Bora.Portal/CustomControls/PdfContent.aspx?fp=17102008&pi=1&pf=1&s=0&sec=01
+# </a>
+#
+# Press release 235 dated Saturday October 18th, from the Government of the Province of Jujuy saying
+# it will not apply DST either (even when it was not included in Decree 1705/2008)
+# <a href="http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc">
+# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
+# </a>
+
+Rule Arg 2007 only - Dec 30 0:00 1:00 S
+Rule Arg 2008 max - Mar Sun>=15 0:00 0 -
+Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
+
+# From Mariano Absatz (2004-05-21):
+# Today it was officially published that the Province of Mendoza is changing
+# its timezone this winter... starting tomorrow night....
+# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040521-27158-normas.pdf
+# From Paul Eggert (2004-05-24):
+# It's Law No. 7,210. This change is due to a public power emergency, so for
+# now we'll assume it's for this year only.
+#
+# From Paul Eggert (2006-03-22):
+# <a href="http://www.spicasc.net/horvera.html">
+# Hora de verano para la Republica Argentina (2003-06-08)
+# </a> says that standard time in Argentina from 1894-10-31
+# to 1920-05-01 was -4:16:48.25. Go with this more-precise value
+# over Shanks & Pottenger.
+#
+# From Mariano Absatz (2004-06-05):
+# These media articles from a major newspaper mostly cover the current state:
+# http://www.lanacion.com.ar/04/05/27/de_604825.asp
+# http://www.lanacion.com.ar/04/05/28/de_605203.asp
+#
+# The following eight (8) provinces pulled clocks back to UTC-04:00 at
+# midnight Monday May 31st. (that is, the night between 05/31 and 06/01).
+# Apparently, all nine provinces would go back to UTC-03:00 at the same
+# time in October 17th.
+#
+# Catamarca, Chubut, La Rioja, San Juan, San Luis, Santa Cruz,
+# Tierra del Fuego, Tucuman.
+#
+# From Mariano Absatz (2004-06-14):
+# ... this weekend, the Province of Tucuman decided it'd go back to UTC-03:00
+# yesterday midnight (that is, at 24:00 Saturday 12th), since the people's
+# annoyance with the change is much higher than the power savings obtained....
+#
+# From Gwillim Law (2004-06-14):
+# http://www.lanacion.com.ar/04/06/10/de_609078.asp ...
+# "The time change in Tierra del Fuego was a conflicted decision from
+# the start. The government had decreed that the measure would take
+# effect on June 1, but a normative error forced the new time to begin
+# three days earlier, from a Saturday to a Sunday....
+# Our understanding was that the change was originally scheduled to take place
+# on June 1 at 00:00 in Chubut, Santa Cruz, Tierra del Fuego (and some other
+# provinces). Sunday was May 30, only two days earlier. So the article
+# contains a contradiction. I would give more credence to the Saturday/Sunday
+# date than the "three days earlier" phrase, and conclude that Tierra del
+# Fuego set its clocks back at 2004-05-30 00:00.
+#
+# From Steffen Thorsen (2004-10-05):
+# The previous law 7210 which changed the province of Mendoza's time zone
+# back in May have been modified slightly in a new law 7277, which set the
+# new end date to 2004-09-26 (original date was 2004-10-17).
+# http://www.gobernac.mendoza.gov.ar/boletin/pdf/20040924-27244-normas.pdf
+#
+# From Mariano Absatz (2004-10-05):
+# San Juan changed from UTC-03:00 to UTC-04:00 at midnight between
+# Sunday, May 30th and Monday, May 31st. It changed back to UTC-03:00
+# at midnight between Saturday, July 24th and Sunday, July 25th....
+# http://www.sanjuan.gov.ar/prensa/archivo/000329.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000426.html
+# http://www.sanjuan.gov.ar/prensa/archivo/000441.html
+
+# From Alex Krivenyshev (2008-01-17):
+# Here are articles that Argentina Province San Luis is planning to end DST
+# as earlier as upcoming Monday January 21, 2008 or February 2008:
+#
+# Provincia argentina retrasa reloj y marca diferencia con resto del pais
+# (Argentine Province delayed clock and mark difference with the rest of the
+# country)
+# <a href="http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel">
+# http://cl.invertia.com/noticias/noticia.aspx?idNoticia=200801171849_EFE_ET4373&idtel
+# </a>
+#
+# Es inminente que en San Luis atrasen una hora los relojes
+# (It is imminent in San Luis clocks one hour delay)
+# <a href="http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414">
+# http://www.lagaceta.com.ar/vernotae.asp?id_nota=253414
+# </a>
+#
+# <a href="http://www.worldtimezone.net/dst_news/dst_news_argentina02.html">
+# http://www.worldtimezone.net/dst_news/dst_news_argentina02.html
+# </a>
+
+# From Jesper Norgaard Welen (2008-01-18):
+# The page of the San Luis provincial government
+# <a href="http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812">
+# http://www.sanluis.gov.ar/notas.asp?idCanal=0&id=22812
+# </a>
+# confirms what Alex Krivenyshev has earlier sent to the tz
+# emailing list about that San Luis plans to return to standard
+# time much earlier than the rest of the country. It also
+# confirms that upon request the provinces San Juan and Mendoza
+# refused to follow San Luis in this change.
+#
+# The change is supposed to take place Monday the 21.st at 0:00
+# hours. As far as I understand it if this goes ahead, we need
+# a new timezone for San Luis (although there are also documented
+# independent changes in the southamerica file of San Luis in
+# 1990 and 1991 which has not been confirmed).
+
+# From Jesper Norgaard Welen (2008-01-25):
+# Unfortunately the below page has become defunct, about the San Luis
+# time change. Perhaps because it now is part of a group of pages "Most
+# important pages of 2008."
+#
+# You can use
+# <a href="http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834">
+# http://www.sanluis.gov.ar/notas.asp?idCanal=8141&id=22834
+# </a>
+# instead it seems. Or use "Buscador" from the main page of the San Luis
+# government, and fill in "huso" and click OK, and you will get 3 pages
+# from which the first one is identical to the above.
+
+# From Mariano Absatz (2008-01-28):
+# I can confirm that the Province of San Luis (and so far only that
+# province) decided to go back to UTC-3 effective midnight Jan 20th 2008
+# (that is, Monday 21st at 0:00 is the time the clocks were delayed back
+# 1 hour), and they intend to keep UTC-3 as their timezone all year round
+# (that is, unless they change their mind any minute now).
+#
+# So we'll have to add yet another city to 'southamerica' (I think San
+# Luis city is the mos populated city in the Province, so it'd be
+# America/Argentina/San_Luis... of course I can't remember if San Luis's
+# history of particular changes goes along with Mendoza or San Juan :-(
+# (I only remember not being able to collect hard facts about San Luis
+# back in 2004, when these provinces changed to UTC-4 for a few days, I
+# mailed them personally and never got an answer).
+
+# From Paul Eggert (2008-06-30):
+# Unless otherwise specified, data are from Shanks & Pottenger through 1992,
+# from the IATA otherwise. As noted below, Shanks & Pottenger say that
+# America/Cordoba split into 6 subregions during 1991/1992, one of which
+# was America/San_Luis, but we haven't verified this yet so for now we'll
+# keep America/Cordoba a single region rather than splitting it into the
+# other 5 subregions.
+
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Buenos Aires (BA), Capital Federal (CF),
+Zone America/Argentina/Buenos_Aires -3:53:48 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May # Cordoba Mean Time
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 Arg AR%sT
+#
+# Cordoba (CB), Santa Fe (SF), Entre Rios (ER), Corrientes (CN), Misiones (MN),
+# Chaco (CC), Formosa (FM), Santiago del Estero (SE)
+#
+# Shanks & Pottenger also make the following claims, which we haven't verified:
+# - Formosa switched to -3:00 on 1991-01-07.
+# - Misiones switched to -3:00 on 1990-12-29.
+# - Chaco switched to -3:00 on 1991-01-04.
+# - Santiago del Estero switched to -4:00 on 1991-04-01,
+# then to -3:00 on 1991-04-26.
+#
+Zone America/Argentina/Cordoba -4:16:48 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 Arg AR%sT
+#
+# Salta (SA), La Pampa (LP), Neuquen (NQ), Rio Negro (RN)
+Zone America/Argentina/Salta -4:21:40 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
+# Tucuman (TM)
+Zone America/Argentina/Tucuman -4:20:52 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 13
+ -3:00 Arg AR%sT
+#
+# La Rioja (LR)
+Zone America/Argentina/La_Rioja -4:27:24 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 1
+ -4:00 - WART 1991 May 7
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 20
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
+# San Juan (SJ)
+Zone America/Argentina/San_Juan -4:34:04 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 1
+ -4:00 - WART 1991 May 7
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 May 31
+ -4:00 - WART 2004 Jul 25
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
+# Jujuy (JY)
+Zone America/Argentina/Jujuy -4:21:12 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1990 Mar 4
+ -4:00 - WART 1990 Oct 28
+ -4:00 1:00 WARST 1991 Mar 17
+ -4:00 - WART 1991 Oct 6
+ -3:00 1:00 ARST 1992
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
+# Catamarca (CT), Chubut (CH)
+Zone America/Argentina/Catamarca -4:23:08 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1991 Mar 3
+ -4:00 - WART 1991 Oct 20
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 20
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
+# Mendoza (MZ)
+Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1990 Mar 4
+ -4:00 - WART 1990 Oct 15
+ -4:00 1:00 WARST 1991 Mar 1
+ -4:00 - WART 1991 Oct 15
+ -4:00 1:00 WARST 1992 Mar 1
+ -4:00 - WART 1992 Oct 18
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 May 23
+ -4:00 - WART 2004 Sep 26
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
+# San Luis (SL)
+Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1990
+ -3:00 1:00 ARST 1990 Mar 14
+ -4:00 - WART 1990 Oct 15
+ -4:00 1:00 WARST 1991 Mar 1
+ -4:00 - WART 1991 Jun 1
+ -3:00 - ART 1999 Oct 3
+ -4:00 1:00 WARST 2000 Mar 3
+ -3:00 - ART 2004 May 31
+ -4:00 - WART 2004 Jul 25
+ -3:00 Arg AR%sT 2008 Jan 21
+ -3:00 - ART
+#
+# Santa Cruz (SC)
+Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May # Cordoba Mean Time
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 Jun 1
+ -4:00 - WART 2004 Jun 20
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+#
+# Tierra del Fuego, Antartida e Islas del Atlantico Sur (TF)
+Zone America/Argentina/Ushuaia -4:33:12 - LMT 1894 Oct 31
+ -4:16:48 - CMT 1920 May # Cordoba Mean Time
+ -4:00 - ART 1930 Dec
+ -4:00 Arg AR%sT 1969 Oct 5
+ -3:00 Arg AR%sT 1999 Oct 3
+ -4:00 Arg AR%sT 2000 Mar 3
+ -3:00 - ART 2004 May 30
+ -4:00 - WART 2004 Jun 20
+ -3:00 Arg AR%sT 2008 Oct 18
+ -3:00 - ART
+
+# Aruba
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Aruba -4:40:24 - LMT 1912 Feb 12 # Oranjestad
+ -4:30 - ANT 1965 # Netherlands Antilles Time
+ -4:00 - AST
+
+# Bolivia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/La_Paz -4:32:36 - LMT 1890
+ -4:32:36 - CMT 1931 Oct 15 # Calamarca MT
+ -4:32:36 1:00 BOST 1932 Mar 21 # Bolivia ST
+ -4:00 - BOT # Bolivia Time
+
+# Brazil
+
+# From Paul Eggert (1993-11-18):
+# The mayor of Rio recently attempted to change the time zone rules
+# just in his city, in order to leave more summer time for the tourist trade.
+# The rule change lasted only part of the day;
+# the federal government refused to follow the city's rules, and business
+# was in a chaos, so the mayor backed down that afternoon.
+
+# From IATA SSIM (1996-02):
+# _Only_ the following states in BR1 observe DST: Rio Grande do Sul (RS),
+# Santa Catarina (SC), Parana (PR), Sao Paulo (SP), Rio de Janeiro (RJ),
+# Espirito Santo (ES), Minas Gerais (MG), Bahia (BA), Goias (GO),
+# Distrito Federal (DF), Tocantins (TO), Sergipe [SE] and Alagoas [AL].
+# [The last three states are new to this issue of the IATA SSIM.]
+
+# From Gwillim Law (1996-10-07):
+# Geography, history (Tocantins was part of Goias until 1989), and other
+# sources of time zone information lead me to believe that AL, SE, and TO were
+# always in BR1, and so the only change was whether or not they observed DST....
+# The earliest issue of the SSIM I have is 2/91. Each issue from then until
+# 9/95 says that DST is observed only in the ten states I quoted from 9/95,
+# along with Mato Grosso (MT) and Mato Grosso do Sul (MS), which are in BR2
+# (UTC-4).... The other two time zones given for Brazil are BR3, which is
+# UTC-5, no DST, and applies only in the state of Acre (AC); and BR4, which is
+# UTC-2, and applies to Fernando de Noronha (formerly FN, but I believe it's
+# become part of the state of Pernambuco). The boundary between BR1 and BR2
+# has never been clearly stated. They've simply been called East and West.
+# However, some conclusions can be drawn from another IATA manual: the Airline
+# Coding Directory, which lists close to 400 airports in Brazil. For each
+# airport it gives a time zone which is coded to the SSIM. From that
+# information, I'm led to conclude that the states of Amapa (AP), Ceara (CE),
+# Maranhao (MA), Paraiba (PR), Pernambuco (PE), Piaui (PI), and Rio Grande do
+# Norte (RN), and the eastern part of Para (PA) are all in BR1 without DST.
+
+# From Marcos Tadeu (1998-09-27):
+# <a href="http://pcdsh01.on.br/verao1.html">
+# Brazilian official page
+# </a>
+
+# From Jesper Norgaard (2000-11-03):
+# [For an official list of which regions in Brazil use which time zones, see:]
+# http://pcdsh01.on.br/Fusbr.htm
+# http://pcdsh01.on.br/Fusbrhv.htm
+
+# From Celso Doria via David Madeo (2002-10-09):
+# The reason for the delay this year has to do with elections in Brazil.
+#
+# Unlike in the United States, elections in Brazil are 100% computerized and
+# the results are known almost immediately. Yesterday, it was the first
+# round of the elections when 115 million Brazilians voted for President,
+# Governor, Senators, Federal Deputies, and State Deputies. Nobody is
+# counting (or re-counting) votes anymore and we know there will be a second
+# round for the Presidency and also for some Governors. The 2nd round will
+# take place on October 27th.
+#
+# The reason why the DST will only begin November 3rd is that the thousands
+# of electoral machines used cannot have their time changed, and since the
+# Constitution says the elections must begin at 8:00 AM and end at 5:00 PM,
+# the Government decided to postpone DST, instead of changing the Constitution
+# (maybe, for the next elections, it will be possible to change the clock)...
+
+# From Rodrigo Severo (2004-10-04):
+# It's just the biannual change made necessary by the much hyped, supposedly
+# modern Brazilian eletronic voting machines which, apparently, can't deal
+# with a time change between the first and the second rounds of the elections.
+
+# From Steffen Thorsen (2007-09-20):
+# Brazil will start DST on 2007-10-14 00:00 and end on 2008-02-17 00:00:
+# http://www.mme.gov.br/site/news/detail.do;jsessionid=BBA06811AFCAAC28F0285210913513DA?newsId=13975
+
+# From Paul Schulze (2008-06-24):
+# ...by law number 11.662 of April 24, 2008 (published in the "Diario
+# Oficial da Uniao"...) in Brazil there are changes in the timezones,
+# effective today (00:00am at June 24, 2008) as follows:
+#
+# a) The timezone UTC+5 is e[x]tinguished, with all the Acre state and the
+# part of the Amazonas state that had this timezone now being put to the
+# timezone UTC+4
+# b) The whole Para state now is put at timezone UTC+3, instead of just
+# part of it, as was before.
+#
+# This change follows a proposal of senator Tiao Viana of Acre state, that
+# proposed it due to concerns about open television channels displaying
+# programs inappropriate to youths in the states that had the timezone
+# UTC+5 too early in the night. In the occasion, some more corrections
+# were proposed, trying to unify the timezones of any given state. This
+# change modifies timezone rules defined in decree 2.784 of 18 June,
+# 1913.
+
+# From Rodrigo Severo (2008-06-24):
+# Just correcting the URL:
+# <a href="https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=3Ddo&secao=3D1&pagina=3D1&data=3D25/04/2008">
+# https://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=3Ddo&secao=3D1&pagina=3D1&data=3D25/04/2008
+# </a>
+#
+# As a result of the above Decree I believe the America/Rio_Branco
+# timezone shall be modified from UTC-5 to UTC-4 and a new timezone shall
+# be created to represent the the west side of the Para State. I
+# suggest this new timezone be called Santarem as the most
+# important/populated city in the affected area.
+#
+# This new timezone would be the same as the Rio_Branco timezone up to
+# the 2008/06/24 change which would be to UTC-3 instead of UTC-4.
+
+# From Alex Krivenyshev (2008-06-24):
+# This is a quick reference page for New and Old Brazil Time Zones map.
+# <a href="http://www.worldtimezone.com/brazil-time-new-old.php">
+# http://www.worldtimezone.com/brazil-time-new-old.php
+# </a>
+#
+# - 4 time zones replaced by 3 time zones-eliminating time zone UTC- 05
+# (state Acre and the part of the Amazonas will be UTC/GMT- 04) - western
+# part of Par state is moving to one timezone UTC- 03 (from UTC -04).
+
+# From Paul Eggert (2002-10-10):
+# The official decrees referenced below are mostly taken from
+# <a href="http://pcdsh01.on.br/DecHV.html">
+# Decretos sobre o Horario de Verao no Brasil
+# </a>.
+
+# From Steffen Thorsen (2008-08-29):
+# As announced by the government and many newspapers in Brazil late
+# yesterday, Brazil will start DST on 2008-10-19 (need to change rule) and
+# it will end on 2009-02-15 (current rule for Brazil is fine). Based on
+# past years experience with the elections, there was a good chance that
+# the start was postponed to November, but it did not happen this year.
+#
+# It has not yet been posted to http://pcdsh01.on.br/DecHV.html
+#
+# An official page about it:
+# <a href="http://www.mme.gov.br/site/news/detail.do?newsId=16722">
+# http://www.mme.gov.br/site/news/detail.do?newsId=16722
+# </a>
+# Note that this link does not always work directly, but must be accessed
+# by going to
+# <a href="http://www.mme.gov.br/first">
+# http://www.mme.gov.br/first
+# </a>
+#
+# One example link that works directly:
+# <a href="http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54">
+# http://jornale.com.br/index.php?option=com_content&task=view&id=13530&Itemid=54
+# (Portuguese)
+# </a>
+#
+# We have a written a short article about it as well:
+# <a href="http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html">
+# http://www.timeanddate.com/news/time/brazil-dst-2008-2009.html
+# </a>
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Decree <a href="http://pcdsh01.on.br/HV20466.htm">20,466</a> (1931-10-01)
+# Decree <a href="http://pcdsh01.on.br/HV21896.htm">21,896</a> (1932-01-10)
+Rule Brazil 1931 only - Oct 3 11:00 1:00 S
+Rule Brazil 1932 1933 - Apr 1 0:00 0 -
+Rule Brazil 1932 only - Oct 3 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV23195.htm">23,195</a> (1933-10-10)
+# revoked DST.
+# Decree <a href="http://pcdsh01.on.br/HV27496.htm">27,496</a> (1949-11-24)
+# Decree <a href="http://pcdsh01.on.br/HV27998.htm">27,998</a> (1950-04-13)
+Rule Brazil 1949 1952 - Dec 1 0:00 1:00 S
+Rule Brazil 1950 only - Apr 16 1:00 0 -
+Rule Brazil 1951 1952 - Apr 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV32308.htm">32,308</a> (1953-02-24)
+Rule Brazil 1953 only - Mar 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV34724.htm">34,724</a> (1953-11-30)
+# revoked DST.
+# Decree <a href="http://pcdsh01.on.br/HV52700.htm">52,700</a> (1963-10-18)
+# established DST from 1963-10-23 00:00 to 1964-02-29 00:00
+# in SP, RJ, GB, MG, ES, due to the prolongation of the drought.
+# Decree <a href="http://pcdsh01.on.br/HV53071.htm">53,071</a> (1963-12-03)
+# extended the above decree to all of the national territory on 12-09.
+Rule Brazil 1963 only - Dec 9 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV53604.htm">53,604</a> (1964-02-25)
+# extended summer time by one day to 1964-03-01 00:00 (start of school).
+Rule Brazil 1964 only - Mar 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV55639.htm">55,639</a> (1965-01-27)
+Rule Brazil 1965 only - Jan 31 0:00 1:00 S
+Rule Brazil 1965 only - Mar 31 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV57303.htm">57,303</a> (1965-11-22)
+Rule Brazil 1965 only - Dec 1 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV57843.htm">57,843</a> (1966-02-18)
+Rule Brazil 1966 1968 - Mar 1 0:00 0 -
+Rule Brazil 1966 1967 - Nov 1 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/HV63429.htm">63,429</a> (1968-10-15)
+# revoked DST.
+# Decree <a href="http://pcdsh01.on.br/HV91698.htm">91,698</a> (1985-09-27)
+Rule Brazil 1985 only - Nov 2 0:00 1:00 S
+# Decree 92,310 (1986-01-21)
+# Decree 92,463 (1986-03-13)
+Rule Brazil 1986 only - Mar 15 0:00 0 -
+# Decree 93,316 (1986-10-01)
+Rule Brazil 1986 only - Oct 25 0:00 1:00 S
+Rule Brazil 1987 only - Feb 14 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV94922.htm">94,922</a> (1987-09-22)
+Rule Brazil 1987 only - Oct 25 0:00 1:00 S
+Rule Brazil 1988 only - Feb 7 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV96676.htm">96,676</a> (1988-09-12)
+# except for the states of AC, AM, PA, RR, RO, and AP (then a territory)
+Rule Brazil 1988 only - Oct 16 0:00 1:00 S
+Rule Brazil 1989 only - Jan 29 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV98077.htm">98,077</a> (1989-08-21)
+# with the same exceptions
+Rule Brazil 1989 only - Oct 15 0:00 1:00 S
+Rule Brazil 1990 only - Feb 11 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV99530.htm">99,530</a> (1990-09-17)
+# adopted by RS, SC, PR, SP, RJ, ES, MG, GO, MS, DF.
+# Decree 99,629 (1990-10-19) adds BA, MT.
+Rule Brazil 1990 only - Oct 21 0:00 1:00 S
+Rule Brazil 1991 only - Feb 17 0:00 0 -
+# <a href="http://pcdsh01.on.br/HV1991.htm">Unnumbered decree</a> (1991-09-25)
+# adopted by RS, SC, PR, SP, RJ, ES, MG, BA, GO, MT, MS, DF.
+Rule Brazil 1991 only - Oct 20 0:00 1:00 S
+Rule Brazil 1992 only - Feb 9 0:00 0 -
+# <a href="http://pcdsh01.on.br/HV1992.htm">Unnumbered decree</a> (1992-10-16)
+# adopted by same states.
+Rule Brazil 1992 only - Oct 25 0:00 1:00 S
+Rule Brazil 1993 only - Jan 31 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV942.htm">942</a> (1993-09-28)
+# adopted by same states, plus AM.
+# Decree <a href="http://pcdsh01.on.br/HV1252.htm">1,252</a> (1994-09-22;
+# web page corrected 2004-01-07) adopted by same states, minus AM.
+# Decree <a href="http://pcdsh01.on.br/HV1636.htm">1,636</a> (1995-09-14)
+# adopted by same states, plus MT and TO.
+# Decree <a href="http://pcdsh01.on.br/HV1674.htm">1,674</a> (1995-10-13)
+# adds AL, SE.
+Rule Brazil 1993 1995 - Oct Sun>=11 0:00 1:00 S
+Rule Brazil 1994 1995 - Feb Sun>=15 0:00 0 -
+Rule Brazil 1996 only - Feb 11 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/HV2000.htm">2,000</a> (1996-09-04)
+# adopted by same states, minus AL, SE.
+Rule Brazil 1996 only - Oct 6 0:00 1:00 S
+Rule Brazil 1997 only - Feb 16 0:00 0 -
+# From Daniel C. Sobral (1998-02-12):
+# In 1997, the DS began on October 6. The stated reason was that
+# because international television networks ignored Brazil's policy on DS,
+# they bought the wrong times on satellite for coverage of Pope's visit.
+# This year, the ending date of DS was postponed to March 1
+# to help dealing with the shortages of electric power.
+#
+# Decree 2,317 (1997-09-04), adopted by same states.
+Rule Brazil 1997 only - Oct 6 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/figuras/HV2495.JPG">2,495</a>
+# (1998-02-10)
+Rule Brazil 1998 only - Mar 1 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/figuras/Hv98.jpg">2,780</a> (1998-09-11)
+# adopted by the same states as before.
+Rule Brazil 1998 only - Oct 11 0:00 1:00 S
+Rule Brazil 1999 only - Feb 21 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/figuras/HV3150.gif">3,150</a>
+# (1999-08-23) adopted by same states.
+# Decree <a href="http://pcdsh01.on.br/DecHV99.gif">3,188</a> (1999-09-30)
+# adds SE, AL, PB, PE, RN, CE, PI, MA and RR.
+Rule Brazil 1999 only - Oct 3 0:00 1:00 S
+Rule Brazil 2000 only - Feb 27 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/DEC3592.htm">3,592</a> (2000-09-06)
+# adopted by the same states as before.
+# Decree <a href="http://pcdsh01.on.br/Dec3630.jpg">3,630</a> (2000-10-13)
+# repeals DST in PE and RR, effective 2000-10-15 00:00.
+# Decree <a href="http://pcdsh01.on.br/Dec3632.jpg">3,632</a> (2000-10-17)
+# repeals DST in SE, AL, PB, RN, CE, PI and MA, effective 2000-10-22 00:00.
+# Decree <a href="http://pcdsh01.on.br/figuras/HV3916.gif">3,916</a>
+# (2001-09-13) reestablishes DST in AL, CE, MA, PB, PE, PI, RN, SE.
+Rule Brazil 2000 2001 - Oct Sun>=8 0:00 1:00 S
+Rule Brazil 2001 2006 - Feb Sun>=15 0:00 0 -
+# Decree 4,399 (2002-10-01) repeals DST in AL, CE, MA, PB, PE, PI, RN, SE.
+# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2002/D4399.htm">4,399</a>
+Rule Brazil 2002 only - Nov 3 0:00 1:00 S
+# Decree 4,844 (2003-09-24; corrected 2003-09-26) repeals DST in BA, MT, TO.
+# <a href="http://www.presidencia.gov.br/CCIVIL/decreto/2003/D4844.htm">4,844</a>
+Rule Brazil 2003 only - Oct 19 0:00 1:00 S
+# Decree 5,223 (2004-10-01) reestablishes DST in MT.
+# <a href="http://www.planalto.gov.br/ccivil_03/_Ato2004-2006/2004/Decreto/D5223.htm">5,223</a>
+Rule Brazil 2004 only - Nov 2 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/DecHV5539.gif">5,539</a> (2005-09-19),
+# adopted by the same states as before.
+Rule Brazil 2005 only - Oct 16 0:00 1:00 S
+# Decree <a href="http://pcdsh01.on.br/DecHV5920.gif">5,920</a> (2006-10-03),
+# adopted by the same states as before.
+Rule Brazil 2006 only - Nov 5 0:00 1:00 S
+Rule Brazil 2007 only - Feb 25 0:00 0 -
+# Decree <a href="http://pcdsh01.on.br/DecHV6212.gif">6,212</a> (2007-09-26),
+# adopted by the same states as before.
+Rule Brazil 2007 only - Oct Sun>=8 0:00 1:00 S
+# From Frederico A. C. Neves (2008-09-10):
+# Acording to this decree
+# <a href="http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm">
+# http://www.planalto.gov.br/ccivil_03/_Ato2007-2010/2008/Decreto/D6558.htm
+# </a>
+# [t]he DST period in Brazil now on will be from the 3rd Oct Sunday to the
+# 3rd Feb Sunday. There is an exception on the return date when this is
+# the Carnival Sunday then the return date will be the next Sunday...
+Rule Brazil 2008 max - Oct Sun>=15 0:00 1:00 S
+Rule Brazil 2008 2011 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2012 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2013 2014 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2015 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2016 2022 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2023 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2024 2025 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2026 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2027 2033 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2034 only - Feb Sun>=22 0:00 0 -
+Rule Brazil 2035 2036 - Feb Sun>=15 0:00 0 -
+Rule Brazil 2037 only - Feb Sun>=22 0:00 0 -
+# From Arthur David Olson (2008-09-29):
+# The next is wrong in some years but is better than nothing.
+Rule Brazil 2038 max - Feb Sun>=15 0:00 0 -
+
+# The latest ruleset listed above says that the following states observe DST:
+# DF, ES, GO, MG, MS, MT, PR, RJ, RS, SC, SP.
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+#
+# Fernando de Noronha (administratively part of PE)
+Zone America/Noronha -2:09:40 - LMT 1914
+ -2:00 Brazil FN%sT 1990 Sep 17
+ -2:00 - FNT 1999 Sep 30
+ -2:00 Brazil FN%sT 2000 Oct 15
+ -2:00 - FNT 2001 Sep 13
+ -2:00 Brazil FN%sT 2002 Oct 1
+ -2:00 - FNT
+# Other Atlantic islands have no permanent settlement.
+# These include Trindade and Martin Vaz (administratively part of ES),
+# Atol das Rocas (RN), and Penedos de Sao Pedro e Sao Paulo (PE).
+# Fernando de Noronha was a separate territory from 1942-09-02 to 1989-01-01;
+# it also included the Penedos.
+#
+# Amapa (AP), east Para (PA)
+# East Para includes Belem, Maraba, Serra Norte, and Sao Felix do Xingu.
+# The division between east and west Para is the river Xingu.
+# In the north a very small part from the river Javary (now Jari I guess,
+# the border with Amapa) to the Amazon, then to the Xingu.
+Zone America/Belem -3:13:56 - LMT 1914
+ -3:00 Brazil BR%sT 1988 Sep 12
+ -3:00 - BRT
+#
+# west Para (PA)
+# West Para includes Altamira, Oribidos, Prainha, Oriximina, and Santarem.
+Zone America/Santarem -3:38:48 - LMT 1914
+ -4:00 Brazil AM%sT 1988 Sep 12
+ -4:00 - AMT 2008 Jun 24 00:00
+ -3:00 - BRT
+#
+# Maranhao (MA), Piaui (PI), Ceara (CE), Rio Grande do Norte (RN),
+# Paraiba (PB)
+Zone America/Fortaleza -2:34:00 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1999 Sep 30
+ -3:00 Brazil BR%sT 2000 Oct 22
+ -3:00 - BRT 2001 Sep 13
+ -3:00 Brazil BR%sT 2002 Oct 1
+ -3:00 - BRT
+#
+# Pernambuco (PE) (except Atlantic islands)
+Zone America/Recife -2:19:36 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1999 Sep 30
+ -3:00 Brazil BR%sT 2000 Oct 15
+ -3:00 - BRT 2001 Sep 13
+ -3:00 Brazil BR%sT 2002 Oct 1
+ -3:00 - BRT
+#
+# Tocantins (TO)
+Zone America/Araguaina -3:12:48 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1995 Sep 14
+ -3:00 Brazil BR%sT 2003 Sep 24
+ -3:00 - BRT
+#
+# Alagoas (AL), Sergipe (SE)
+Zone America/Maceio -2:22:52 - LMT 1914
+ -3:00 Brazil BR%sT 1990 Sep 17
+ -3:00 - BRT 1995 Oct 13
+ -3:00 Brazil BR%sT 1996 Sep 4
+ -3:00 - BRT 1999 Sep 30
+ -3:00 Brazil BR%sT 2000 Oct 22
+ -3:00 - BRT 2001 Sep 13
+ -3:00 Brazil BR%sT 2002 Oct 1
+ -3:00 - BRT
+#
+# Bahia (BA)
+# There are too many Salvadors elsewhere, so use America/Bahia instead
+# of America/Salvador.
+Zone America/Bahia -2:34:04 - LMT 1914
+ -3:00 Brazil BR%sT 2003 Sep 24
+ -3:00 - BRT
+#
+# Goias (GO), Distrito Federal (DF), Minas Gerais (MG),
+# Espirito Santo (ES), Rio de Janeiro (RJ), Sao Paulo (SP), Parana (PR),
+# Santa Catarina (SC), Rio Grande do Sul (RS)
+Zone America/Sao_Paulo -3:06:28 - LMT 1914
+ -3:00 Brazil BR%sT 1963 Oct 23 00:00
+ -3:00 1:00 BRST 1964
+ -3:00 Brazil BR%sT
+#
+# Mato Grosso do Sul (MS)
+Zone America/Campo_Grande -3:38:28 - LMT 1914
+ -4:00 Brazil AM%sT
+#
+# Mato Grosso (MT)
+Zone America/Cuiaba -3:44:20 - LMT 1914
+ -4:00 Brazil AM%sT 2003 Sep 24
+ -4:00 - AMT 2004 Oct 1
+ -4:00 Brazil AM%sT
+#
+# Rondonia (RO)
+Zone America/Porto_Velho -4:15:36 - LMT 1914
+ -4:00 Brazil AM%sT 1988 Sep 12
+ -4:00 - AMT
+#
+# Roraima (RR)
+Zone America/Boa_Vista -4:02:40 - LMT 1914
+ -4:00 Brazil AM%sT 1988 Sep 12
+ -4:00 - AMT 1999 Sep 30
+ -4:00 Brazil AM%sT 2000 Oct 15
+ -4:00 - AMT
+#
+# east Amazonas (AM): Boca do Acre, Jutai, Manaus, Floriano Peixoto
+# The great circle line from Tabatinga to Porto Acre divides
+# east from west Amazonas.
+Zone America/Manaus -4:00:04 - LMT 1914
+ -4:00 Brazil AM%sT 1988 Sep 12
+ -4:00 - AMT 1993 Sep 28
+ -4:00 Brazil AM%sT 1994 Sep 22
+ -4:00 - AMT
+#
+# west Amazonas (AM): Atalaia do Norte, Boca do Maoco, Benjamin Constant,
+# Eirunepe, Envira, Ipixuna
+Zone America/Eirunepe -4:39:28 - LMT 1914
+ -5:00 Brazil AC%sT 1988 Sep 12
+ -5:00 - ACT 1993 Sep 28
+ -5:00 Brazil AC%sT 1994 Sep 22
+ -5:00 - ACT 2008 Jun 24 00:00
+ -4:00 - AMT
+#
+# Acre (AC)
+Zone America/Rio_Branco -4:31:12 - LMT 1914
+ -5:00 Brazil AC%sT 1988 Sep 12
+ -5:00 - ACT 2008 Jun 24 00:00
+ -4:00 - AMT
+
+# Chile
+
+# From Eduardo Krell (1995-10-19):
+# The law says to switch to DST at midnight [24:00] on the second SATURDAY
+# of October.... The law is the same for March and October.
+# (1998-09-29):
+# Because of the drought this year, the government decided to go into
+# DST earlier (saturday 9/26 at 24:00). This is a one-time change only ...
+# (unless there's another dry season next year, I guess).
+
+# From Julio I. Pacheco Troncoso (1999-03-18):
+# Because of the same drought, the government decided to end DST later,
+# on April 3, (one-time change).
+
+# From Oscar van Vlijmen (2006-10-08):
+# http://www.horaoficial.cl/cambio.htm
+
+# From Jesper Norgaard Welen (2006-10-08):
+# I think that there are some obvious mistakes in the suggested link
+# from Oscar van Vlijmen,... for instance entry 66 says that GMT-4
+# ended 1990-09-12 while entry 67 only begins GMT-3 at 1990-09-15
+# (they should have been 1990-09-15 and 1990-09-16 respectively), but
+# anyhow it clears up some doubts too.
+
+# From Paul Eggert (2006-12-27):
+# The following data for Chile and America/Santiago are from
+# <http://www.horaoficial.cl/horaof.htm> (2006-09-20), transcribed by
+# Jesper Norgaard Welen. The data for Pacific/Easter are from Shanks
+# & Pottenger, except with DST transitions after 1932 cloned from
+# America/Santiago. The pre-1980 Pacific/Easter data are dubious,
+# but we have no other source.
+
+# From German Poo-Caaman~o (2008-03-03):
+# Due to drought, Chile extends Daylight Time in three weeks. This
+# is one-time change (Saturday 3/29 at 24:00 for America/Santiago
+# and Saturday 3/29 at 22:00 for Pacific/Easter)
+# The Supreme Decree is located at
+# <a href="http://www.shoa.cl/servicios/supremo316.pdf">
+# http://www.shoa.cl/servicios/supremo316.pdf
+# </a>
+# and the instructions for 2008 are located in:
+# <a href="http://www.horaoficial.cl/cambio.htm">
+# http://www.horaoficial.cl/cambio.htm
+# </a>.
+
+# From Jose Miguel Garrido (2008-03-05):
+# ...
+# You could see the announces of the change on
+# <a href="http://www.shoa.cl/noticias/2008/04hora/hora.htm">
+# http://www.shoa.cl/noticias/2008/04hora/hora.htm
+# </a>.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Chile 1927 1932 - Sep 1 0:00 1:00 S
+Rule Chile 1928 1932 - Apr 1 0:00 0 -
+Rule Chile 1942 only - Jun 1 4:00u 0 -
+Rule Chile 1942 only - Aug 1 5:00u 1:00 S
+Rule Chile 1946 only - Jul 15 4:00u 1:00 S
+Rule Chile 1946 only - Sep 1 3:00u 0:00 -
+Rule Chile 1947 only - Apr 1 4:00u 0 -
+Rule Chile 1968 only - Nov 3 4:00u 1:00 S
+Rule Chile 1969 only - Mar 30 3:00u 0 -
+Rule Chile 1969 only - Nov 23 4:00u 1:00 S
+Rule Chile 1970 only - Mar 29 3:00u 0 -
+Rule Chile 1971 only - Mar 14 3:00u 0 -
+Rule Chile 1970 1972 - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1972 1986 - Mar Sun>=9 3:00u 0 -
+Rule Chile 1973 only - Sep 30 4:00u 1:00 S
+Rule Chile 1974 1987 - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1987 only - Apr 12 3:00u 0 -
+Rule Chile 1988 1989 - Mar Sun>=9 3:00u 0 -
+Rule Chile 1988 only - Oct Sun>=1 4:00u 1:00 S
+Rule Chile 1989 only - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1990 only - Mar 18 3:00u 0 -
+Rule Chile 1990 only - Sep 16 4:00u 1:00 S
+Rule Chile 1991 1996 - Mar Sun>=9 3:00u 0 -
+Rule Chile 1991 1997 - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 1997 only - Mar 30 3:00u 0 -
+Rule Chile 1998 only - Mar Sun>=9 3:00u 0 -
+Rule Chile 1998 only - Sep 27 4:00u 1:00 S
+Rule Chile 1999 only - Apr 4 3:00u 0 -
+Rule Chile 1999 max - Oct Sun>=9 4:00u 1:00 S
+Rule Chile 2000 2007 - Mar Sun>=9 3:00u 0 -
+# N.B.: the end of March 29 in Chile is March 30 in Universal time,
+# which is used below in specifying the transition.
+Rule Chile 2008 only - Mar 30 3:00u 0 -
+Rule Chile 2009 max - Mar Sun>=9 3:00u 0 -
+# IATA SSIM anomalies: (1992-02) says 1992-03-14;
+# (1996-09) says 1998-03-08. Ignore these.
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Santiago -4:42:46 - LMT 1890
+ -4:42:46 - SMT 1910 # Santiago Mean Time
+ -5:00 - CLT 1916 Jul 1 # Chile Time
+ -4:42:46 - SMT 1918 Sep 1 # Santiago Mean Time
+ -4:00 - CLT 1919 Jul 1 # Chile Time
+ -4:42:46 - SMT 1927 Sep 1 # Santiago Mean Time
+ -5:00 Chile CL%sT 1947 May 22 # Chile Time
+ -4:00 Chile CL%sT
+Zone Pacific/Easter -7:17:44 - LMT 1890
+ -7:17:28 - EMT 1932 Sep # Easter Mean Time
+ -7:00 Chile EAS%sT 1982 Mar 13 21:00 # Easter I Time
+ -6:00 Chile EAS%sT
+#
+# Sala y Gomez Island is like Pacific/Easter.
+# Other Chilean locations, including Juan Fernandez Is, San Ambrosio,
+# San Felix, and Antarctic bases, are like America/Santiago.
+
+# Colombia
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule CO 1992 only - May 3 0:00 1:00 S
+Rule CO 1993 only - Apr 4 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Bogota -4:56:20 - LMT 1884 Mar 13
+ -4:56:20 - BMT 1914 Nov 23 # Bogota Mean Time
+ -5:00 CO CO%sT # Colombia Time
+# Malpelo, Providencia, San Andres
+# no information; probably like America/Bogota
+
+# Curacao
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that The Bottom and Philipsburg have been at
+# -4:00 since standard time was introduced on 1912-03-02; and that
+# Kralendijk and Rincon used Kralendijk Mean Time (-4:33:08) from
+# 1912-02-02 to 1965-01-01. The former is dubious, since S&P also say
+# Saba Island has been like Curacao.
+# This all predates our 1970 cutoff, though.
+#
+# By July 2007 Curacao and St Maarten are planned to become
+# associated states within the Netherlands, much like Aruba;
+# Bonaire, Saba and St Eustatius would become directly part of the
+# Netherlands as Kingdom Islands. This won't affect their time zones
+# though, as far as we know.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Curacao -4:35:44 - LMT 1912 Feb 12 # Willemstad
+ -4:30 - ANT 1965 # Netherlands Antilles Time
+ -4:00 - AST
+
+# Ecuador
+#
+# From Paul Eggert (2007-03-04):
+# Apparently Ecuador had a failed experiment with DST in 1992.
+# <http://midena.gov.ec/content/view/1261/208/> (2007-02-27) and
+# <http://www.hoy.com.ec/NoticiaNue.asp?row_id=249856> (2006-11-06) both
+# talk about "hora Sixto". Leave this alone for now, as we have no data.
+#
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guayaquil -5:19:20 - LMT 1890
+ -5:14:00 - QMT 1931 # Quito Mean Time
+ -5:00 - ECT # Ecuador Time
+Zone Pacific/Galapagos -5:58:24 - LMT 1931 # Puerto Baquerizo Moreno
+ -5:00 - ECT 1986
+ -6:00 - GALT # Galapagos Time
+
+# Falklands
+
+# From Paul Eggert (2006-03-22):
+# Between 1990 and 2000 inclusive, Shanks & Pottenger and the IATA agree except
+# the IATA gives 1996-09-08. Go with Shanks & Pottenger.
+
+# From Falkland Islands Government Office, London (2001-01-22)
+# via Jesper Norgaard:
+# ... the clocks revert back to Local Mean Time at 2 am on Sunday 15
+# April 2001 and advance one hour to summer time at 2 am on Sunday 2
+# September. It is anticipated that the clocks will revert back at 2
+# am on Sunday 21 April 2002 and advance to summer time at 2 am on
+# Sunday 1 September.
+
+# From Rives McDow (2001-02-13):
+#
+# I have communicated several times with people there, and the last
+# time I had communications that was helpful was in 1998. Here is
+# what was said then:
+#
+# "The general rule was that Stanley used daylight saving and the Camp
+# did not. However for various reasons many people in the Camp have
+# started to use daylight saving (known locally as 'Stanley Time')
+# There is no rule as to who uses daylight saving - it is a matter of
+# personal choice and so it is impossible to draw a map showing who
+# uses it and who does not. Any list would be out of date as soon as
+# it was produced. This year daylight saving ended on April 18/19th
+# and started again on September 12/13th. I do not know what the rule
+# is, but can find out if you like. We do not change at the same time
+# as UK or Chile."
+#
+# I did have in my notes that the rule was "Second Saturday in Sep at
+# 0:00 until third Saturday in Apr at 0:00". I think that this does
+# not agree in some cases with Shanks; is this true?
+#
+# Also, there is no mention in the list that some areas in the
+# Falklands do not use DST. I have found in my communications there
+# that these areas are on the western half of East Falkland and all of
+# West Falkland. Stanley is the only place that consistently observes
+# DST. Again, as in other places in the world, the farmers don't like
+# it. West Falkland is almost entirely sheep farmers.
+#
+# I know one lady there that keeps a list of which farm keeps DST and
+# which doesn't each year. She runs a shop in Stanley, and says that
+# the list changes each year. She uses it to communicate to her
+# customers, catching them when they are home for lunch or dinner.
+
+# From Paul Eggert (2001-03-05):
+# For now, we'll just record the time in Stanley, since we have no
+# better info.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Falk 1937 1938 - Sep lastSun 0:00 1:00 S
+Rule Falk 1938 1942 - Mar Sun>=19 0:00 0 -
+Rule Falk 1939 only - Oct 1 0:00 1:00 S
+Rule Falk 1940 1942 - Sep lastSun 0:00 1:00 S
+Rule Falk 1943 only - Jan 1 0:00 0 -
+Rule Falk 1983 only - Sep lastSun 0:00 1:00 S
+Rule Falk 1984 1985 - Apr lastSun 0:00 0 -
+Rule Falk 1984 only - Sep 16 0:00 1:00 S
+Rule Falk 1985 2000 - Sep Sun>=9 0:00 1:00 S
+Rule Falk 1986 2000 - Apr Sun>=16 0:00 0 -
+Rule Falk 2001 max - Apr Sun>=15 2:00 0 -
+Rule Falk 2001 max - Sep Sun>=1 2:00 1:00 S
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/Stanley -3:51:24 - LMT 1890
+ -3:51:24 - SMT 1912 Mar 12 # Stanley Mean Time
+ -4:00 Falk FK%sT 1983 May # Falkland Is Time
+ -3:00 Falk FK%sT 1985 Sep 15
+ -4:00 Falk FK%sT
+
+# French Guiana
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Cayenne -3:29:20 - LMT 1911 Jul
+ -4:00 - GFT 1967 Oct # French Guiana Time
+ -3:00 - GFT
+
+# Guyana
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Guyana -3:52:40 - LMT 1915 Mar # Georgetown
+ -3:45 - GBGT 1966 May 26 # Br Guiana Time
+ -3:45 - GYT 1975 Jul 31 # Guyana Time
+ -3:00 - GYT 1991
+# IATA SSIM (1996-06) says -4:00. Assume a 1991 switch.
+ -4:00 - GYT
+
+# Paraguay
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger say that spring transitions are from 01:00 -> 02:00,
+# and autumn transitions are from 00:00 -> 23:00. Go with pre-1999
+# editions of Shanks, and with the IATA, who say transitions occur at 00:00.
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Para 1975 1988 - Oct 1 0:00 1:00 S
+Rule Para 1975 1978 - Mar 1 0:00 0 -
+Rule Para 1979 1991 - Apr 1 0:00 0 -
+Rule Para 1989 only - Oct 22 0:00 1:00 S
+Rule Para 1990 only - Oct 1 0:00 1:00 S
+Rule Para 1991 only - Oct 6 0:00 1:00 S
+Rule Para 1992 only - Mar 1 0:00 0 -
+Rule Para 1992 only - Oct 5 0:00 1:00 S
+Rule Para 1993 only - Mar 31 0:00 0 -
+Rule Para 1993 1995 - Oct 1 0:00 1:00 S
+Rule Para 1994 1995 - Feb lastSun 0:00 0 -
+Rule Para 1996 only - Mar 1 0:00 0 -
+# IATA SSIM (2000-02) says 1999-10-10; ignore this for now.
+# From Steffen Thorsen (2000-10-02):
+# I have three independent reports that Paraguay changed to DST this Sunday
+# (10-01).
+#
+# Translated by Gwillim Law (2001-02-27) from
+# <a href="http://www.diarionoticias.com.py/011000/nacional/naciona1.htm">
+# Noticias, a daily paper in Asuncion, Paraguay (2000-10-01)
+# </a>:
+# Starting at 0:00 today, the clock will be set forward 60 minutes, in
+# fulfillment of Decree No. 7,273 of the Executive Power.... The time change
+# system has been operating for several years. Formerly there was a separate
+# decree each year; the new law has the same effect, but permanently. Every
+# year, the time will change on the first Sunday of October; likewise, the
+# clock will be set back on the first Sunday of March.
+#
+Rule Para 1996 2001 - Oct Sun>=1 0:00 1:00 S
+# IATA SSIM (1997-09) says Mar 1; go with Shanks & Pottenger.
+Rule Para 1997 only - Feb lastSun 0:00 0 -
+# Shanks & Pottenger say 1999-02-28; IATA SSIM (1999-02) says 1999-02-27, but
+# (1999-09) reports no date; go with above sources and Gerd Knops (2001-02-27).
+Rule Para 1998 2001 - Mar Sun>=1 0:00 0 -
+# From Rives McDow (2002-02-28):
+# A decree was issued in Paraguay (no. 16350) on 2002-02-26 that changed the
+# dst method to be from the first Sunday in September to the first Sunday in
+# April.
+Rule Para 2002 2004 - Apr Sun>=1 0:00 0 -
+Rule Para 2002 2003 - Sep Sun>=1 0:00 1:00 S
+#
+# From Jesper Norgaard Welen (2005-01-02):
+# There are several sources that claim that Paraguay made
+# a timezone rule change in autumn 2004.
+# From Steffen Thorsen (2005-01-05):
+# Decree 1,867 (2004-03-05)
+# From Carlos Raul Perasso via Jesper Norgaard Welen (2006-10-13)
+# <http://www.presidencia.gov.py/decretos/D1867.pdf>
+Rule Para 2004 max - Oct Sun>=15 0:00 1:00 S
+Rule Para 2005 max - Mar Sun>=8 0:00 0 -
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Asuncion -3:50:40 - LMT 1890
+ -3:50:40 - AMT 1931 Oct 10 # Asuncion Mean Time
+ -4:00 - PYT 1972 Oct # Paraguay Time
+ -3:00 - PYT 1974 Apr
+ -4:00 Para PY%sT
+
+# Peru
+#
+# <a href="news:xrGmb.39935$gA1.13896113@news4.srv.hcvlny.cv.net">
+# From Evelyn C. Leeper via Mark Brader (2003-10-26):</a>
+# When we were in Peru in 1985-1986, they apparently switched over
+# sometime between December 29 and January 3 while we were on the Amazon.
+#
+# From Paul Eggert (2006-03-22):
+# Shanks & Pottenger don't have this transition. Assume 1986 was like 1987.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule Peru 1938 only - Jan 1 0:00 1:00 S
+Rule Peru 1938 only - Apr 1 0:00 0 -
+Rule Peru 1938 1939 - Sep lastSun 0:00 1:00 S
+Rule Peru 1939 1940 - Mar Sun>=24 0:00 0 -
+Rule Peru 1986 1987 - Jan 1 0:00 1:00 S
+Rule Peru 1986 1987 - Apr 1 0:00 0 -
+Rule Peru 1990 only - Jan 1 0:00 1:00 S
+Rule Peru 1990 only - Apr 1 0:00 0 -
+# IATA is ambiguous for 1993/1995; go with Shanks & Pottenger.
+Rule Peru 1994 only - Jan 1 0:00 1:00 S
+Rule Peru 1994 only - Apr 1 0:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Lima -5:08:12 - LMT 1890
+ -5:08:36 - LMT 1908 Jul 28 # Lima Mean Time?
+ -5:00 Peru PE%sT # Peru Time
+
+# South Georgia
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone Atlantic/South_Georgia -2:26:08 - LMT 1890 # Grytviken
+ -2:00 - GST # South Georgia Time
+
+# South Sandwich Is
+# uninhabited; scientific personnel have wintered
+
+# Suriname
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Paramaribo -3:40:40 - LMT 1911
+ -3:40:52 - PMT 1935 # Paramaribo Mean Time
+ -3:40:36 - PMT 1945 Oct # The capital moved?
+ -3:30 - NEGT 1975 Nov 20 # Dutch Guiana Time
+ -3:30 - SRT 1984 Oct # Suriname Time
+ -3:00 - SRT
+
+# Trinidad and Tobago
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Port_of_Spain -4:06:04 - LMT 1912 Mar 2
+ -4:00 - AST
+
+# Uruguay
+# From Paul Eggert (1993-11-18):
+# Uruguay wins the prize for the strangest peacetime manipulation of the rules.
+# From Shanks & Pottenger:
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+# Whitman gives 1923 Oct 1; go with Shanks & Pottenger.
+Rule Uruguay 1923 only - Oct 2 0:00 0:30 HS
+Rule Uruguay 1924 1926 - Apr 1 0:00 0 -
+Rule Uruguay 1924 1925 - Oct 1 0:00 0:30 HS
+Rule Uruguay 1933 1935 - Oct lastSun 0:00 0:30 HS
+# Shanks & Pottenger give 1935 Apr 1 0:00 & 1936 Mar 30 0:00; go with Whitman.
+Rule Uruguay 1934 1936 - Mar Sat>=25 23:30s 0 -
+Rule Uruguay 1936 only - Nov 1 0:00 0:30 HS
+Rule Uruguay 1937 1941 - Mar lastSun 0:00 0 -
+# Whitman gives 1937 Oct 3; go with Shanks & Pottenger.
+Rule Uruguay 1937 1940 - Oct lastSun 0:00 0:30 HS
+# Whitman gives 1941 Oct 24 - 1942 Mar 27, 1942 Dec 14 - 1943 Apr 13,
+# and 1943 Apr 13 ``to present time''; go with Shanks & Pottenger.
+Rule Uruguay 1941 only - Aug 1 0:00 0:30 HS
+Rule Uruguay 1942 only - Jan 1 0:00 0 -
+Rule Uruguay 1942 only - Dec 14 0:00 1:00 S
+Rule Uruguay 1943 only - Mar 14 0:00 0 -
+Rule Uruguay 1959 only - May 24 0:00 1:00 S
+Rule Uruguay 1959 only - Nov 15 0:00 0 -
+Rule Uruguay 1960 only - Jan 17 0:00 1:00 S
+Rule Uruguay 1960 only - Mar 6 0:00 0 -
+Rule Uruguay 1965 1967 - Apr Sun>=1 0:00 1:00 S
+Rule Uruguay 1965 only - Sep 26 0:00 0 -
+Rule Uruguay 1966 1967 - Oct 31 0:00 0 -
+Rule Uruguay 1968 1970 - May 27 0:00 0:30 HS
+Rule Uruguay 1968 1970 - Dec 2 0:00 0 -
+Rule Uruguay 1972 only - Apr 24 0:00 1:00 S
+Rule Uruguay 1972 only - Aug 15 0:00 0 -
+Rule Uruguay 1974 only - Mar 10 0:00 0:30 HS
+Rule Uruguay 1974 only - Dec 22 0:00 1:00 S
+Rule Uruguay 1976 only - Oct 1 0:00 0 -
+Rule Uruguay 1977 only - Dec 4 0:00 1:00 S
+Rule Uruguay 1978 only - Apr 1 0:00 0 -
+Rule Uruguay 1979 only - Oct 1 0:00 1:00 S
+Rule Uruguay 1980 only - May 1 0:00 0 -
+Rule Uruguay 1987 only - Dec 14 0:00 1:00 S
+Rule Uruguay 1988 only - Mar 14 0:00 0 -
+Rule Uruguay 1988 only - Dec 11 0:00 1:00 S
+Rule Uruguay 1989 only - Mar 12 0:00 0 -
+Rule Uruguay 1989 only - Oct 29 0:00 1:00 S
+# Shanks & Pottenger say no DST was observed in 1990/1 and 1991/2,
+# and that 1992/3's DST was from 10-25 to 03-01. Go with IATA.
+Rule Uruguay 1990 1992 - Mar Sun>=1 0:00 0 -
+Rule Uruguay 1990 1991 - Oct Sun>=21 0:00 1:00 S
+Rule Uruguay 1992 only - Oct 18 0:00 1:00 S
+Rule Uruguay 1993 only - Feb 28 0:00 0 -
+# From Eduardo Cota (2004-09-20):
+# The uruguayan government has decreed a change in the local time....
+# http://www.presidencia.gub.uy/decretos/2004091502.htm
+Rule Uruguay 2004 only - Sep 19 0:00 1:00 S
+# From Steffen Thorsen (2005-03-11):
+# Uruguay's DST was scheduled to end on Sunday, 2005-03-13, but in order to
+# save energy ... it was postponed two weeks....
+# http://www.presidencia.gub.uy/_Web/noticias/2005/03/2005031005.htm
+Rule Uruguay 2005 only - Mar 27 2:00 0 -
+# From Eduardo Cota (2005-09-27):
+# http://www.presidencia.gub.uy/_Web/decretos/2005/09/CM%20119_09%2009%202005_00001.PDF
+# This means that from 2005-10-09 at 02:00 local time, until 2006-03-12 at
+# 02:00 local time, official time in Uruguay will be at GMT -2.
+Rule Uruguay 2005 only - Oct 9 2:00 1:00 S
+Rule Uruguay 2006 only - Mar 12 2:00 0 -
+# From Jesper Norgaard Welen (2006-09-06):
+# http://www.presidencia.gub.uy/_web/decretos/2006/09/CM%20210_08%2006%202006_00001.PDF
+Rule Uruguay 2006 max - Oct Sun>=1 2:00 1:00 S
+Rule Uruguay 2007 max - Mar Sun>=8 2:00 0 -
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Montevideo -3:44:44 - LMT 1898 Jun 28
+ -3:44:44 - MMT 1920 May 1 # Montevideo MT
+ -3:30 Uruguay UY%sT 1942 Dec 14 # Uruguay Time
+ -3:00 Uruguay UY%sT
+
+# Venezuela
+#
+# From John Stainforth (2007-11-28):
+# ... the change for Venezuela originally expected for 2007-12-31 has
+# been brought forward to 2007-12-09. The official announcement was
+# published today in the "Gaceta Oficial de la Republica Bolivariana
+# de Venezuela, numero 38.819" (official document for all laws or
+# resolution publication)
+# http://www.globovision.com/news.php?nid=72208
+
+# Zone NAME GMTOFF RULES FORMAT [UNTIL]
+Zone America/Caracas -4:27:44 - LMT 1890
+ -4:27:40 - CMT 1912 Feb 12 # Caracas Mean Time?
+ -4:30 - VET 1965 # Venezuela Time
+ -4:00 - VET 2007 Dec 9 03:00
+ -4:30 - VET
diff --git a/share/zoneinfo/systemv b/share/zoneinfo/systemv
new file mode 100644
index 0000000..6cf9645
--- /dev/null
+++ b/share/zoneinfo/systemv
@@ -0,0 +1,36 @@
+# @(#)systemv 8.1
+
+# Old rules, should the need arise.
+# No attempt is made to handle Newfoundland, since it cannot be expressed
+# using the System V "TZ" scheme (half-hour offset), or anything outside
+# North America (no support for non-standard DST start/end dates), nor
+# the changes in the DST rules in the US after 1976 (which occurred after
+# the old rules were written).
+#
+# If you need the old rules, uncomment ## lines.
+# Compile this *without* leap second correction for true conformance.
+
+# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
+Rule SystemV min 1973 - Apr lastSun 2:00 1:00 D
+Rule SystemV min 1973 - Oct lastSun 2:00 0 S
+Rule SystemV 1974 only - Jan 6 2:00 1:00 D
+Rule SystemV 1974 only - Nov lastSun 2:00 0 S
+Rule SystemV 1975 only - Feb 23 2:00 1:00 D
+Rule SystemV 1975 only - Oct lastSun 2:00 0 S
+Rule SystemV 1976 max - Apr lastSun 2:00 1:00 D
+Rule SystemV 1976 max - Oct lastSun 2:00 0 S
+
+# Zone NAME GMTOFF RULES/SAVE FORMAT [UNTIL]
+## Zone SystemV/AST4ADT -4:00 SystemV A%sT
+## Zone SystemV/EST5EDT -5:00 SystemV E%sT
+## Zone SystemV/CST6CDT -6:00 SystemV C%sT
+## Zone SystemV/MST7MDT -7:00 SystemV M%sT
+## Zone SystemV/PST8PDT -8:00 SystemV P%sT
+## Zone SystemV/YST9YDT -9:00 SystemV Y%sT
+## Zone SystemV/AST4 -4:00 - AST
+## Zone SystemV/EST5 -5:00 - EST
+## Zone SystemV/CST6 -6:00 - CST
+## Zone SystemV/MST7 -7:00 - MST
+## Zone SystemV/PST8 -8:00 - PST
+## Zone SystemV/YST9 -9:00 - YST
+## Zone SystemV/HST10 -10:00 - HST
diff --git a/share/zoneinfo/yearistype.sh b/share/zoneinfo/yearistype.sh
new file mode 100755
index 0000000..66dbf89
--- /dev/null
+++ b/share/zoneinfo/yearistype.sh
@@ -0,0 +1,40 @@
+#! /bin/sh
+
+: 'This file is in the public domain, so clarified as of'
+: '2006-07-17 by Arthur David Olson.'
+
+: '@(#)yearistype.sh 8.2'
+
+case $#-$1 in
+ 2-|2-0*|2-*[!0-9]*)
+ echo "$0: wild year - $1" >&2
+ exit 1 ;;
+esac
+
+case $#-$2 in
+ 2-even)
+ case $1 in
+ *[24680]) exit 0 ;;
+ *) exit 1 ;;
+ esac ;;
+ 2-nonpres|2-nonuspres)
+ case $1 in
+ *[02468][048]|*[13579][26]) exit 1 ;;
+ *) exit 0 ;;
+ esac ;;
+ 2-odd)
+ case $1 in
+ *[13579]) exit 0 ;;
+ *) exit 1 ;;
+ esac ;;
+ 2-uspres)
+ case $1 in
+ *[02468][048]|*[13579][26]) exit 0 ;;
+ *) exit 1 ;;
+ esac ;;
+ 2-*)
+ echo "$0: wild type - $2" >&2 ;;
+esac
+
+echo "$0: usage is $0 year even|odd|uspres|nonpres|nonuspres" >&2
+exit 1
diff --git a/share/zoneinfo/zone.tab b/share/zoneinfo/zone.tab
new file mode 100644
index 0000000..41ae98a
--- /dev/null
+++ b/share/zoneinfo/zone.tab
@@ -0,0 +1,425 @@
+# @(#)zone.tab 8.21
+#
+# TZ zone descriptions
+#
+# From Paul Eggert (1996-08-05):
+#
+# This file contains a table with the following columns:
+# 1. ISO 3166 2-character country code. See /usr/share/misc/iso3166.
+# 2. Latitude and longitude of the zone's principal location
+# in ISO 6709 sign-degrees-minutes-seconds format,
+# either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS,
+# first latitude (+ is north), then longitude (+ is east).
+# 3. Zone name used in value of TZ environment variable.
+# 4. Comments; present if and only if the country has multiple rows.
+#
+# Columns are separated by a single tab.
+# The table is sorted first by country, then an order within the country that
+# (1) makes some geographical sense, and
+# (2) puts the most populous zones first, where that does not contradict (1).
+#
+# Lines beginning with `#' are comments.
+#
+#country-
+#code coordinates TZ comments
+AD +4230+00131 Europe/Andorra
+AE +2518+05518 Asia/Dubai
+AF +3431+06912 Asia/Kabul
+AG +1703-06148 America/Antigua
+AI +1812-06304 America/Anguilla
+AL +4120+01950 Europe/Tirane
+AM +4011+04430 Asia/Yerevan
+AN +1211-06900 America/Curacao
+AO -0848+01314 Africa/Luanda
+AQ -7750+16636 Antarctica/McMurdo McMurdo Station, Ross Island
+AQ -9000+00000 Antarctica/South_Pole Amundsen-Scott Station, South Pole
+AQ -6734-06808 Antarctica/Rothera Rothera Station, Adelaide Island
+AQ -6448-06406 Antarctica/Palmer Palmer Station, Anvers Island
+AQ -6736+06253 Antarctica/Mawson Mawson Station, Holme Bay
+AQ -6835+07758 Antarctica/Davis Davis Station, Vestfold Hills
+AQ -6617+11031 Antarctica/Casey Casey Station, Bailey Peninsula
+AQ -7824+10654 Antarctica/Vostok Vostok Station, S Magnetic Pole
+AQ -6640+14001 Antarctica/DumontDUrville Dumont-d'Urville Station, Terre Adelie
+AQ -690022+0393524 Antarctica/Syowa Syowa Station, E Ongul I
+AR -3436-05827 America/Argentina/Buenos_Aires Buenos Aires (BA, CF)
+AR -3124-06411 America/Argentina/Cordoba most locations (CB, CC, CN, ER, FM, MN, SE, SF)
+AR -2447-06525 America/Argentina/Salta (SA, LP, NQ, RN)
+AR -2411-06518 America/Argentina/Jujuy Jujuy (JY)
+AR -2649-06513 America/Argentina/Tucuman Tucuman (TM)
+AR -2828-06547 America/Argentina/Catamarca Catamarca (CT), Chubut (CH)
+AR -2926-06651 America/Argentina/La_Rioja La Rioja (LR)
+AR -3132-06831 America/Argentina/San_Juan San Juan (SJ)
+AR -3253-06849 America/Argentina/Mendoza Mendoza (MZ)
+AR -3319-06621 America/Argentina/San_Luis San Luis (SL)
+AR -5138-06913 America/Argentina/Rio_Gallegos Santa Cruz (SC)
+AR -5448-06818 America/Argentina/Ushuaia Tierra del Fuego (TF)
+AS -1416-17042 Pacific/Pago_Pago
+AT +4813+01620 Europe/Vienna
+AU -3133+15905 Australia/Lord_Howe Lord Howe Island
+AU -4253+14719 Australia/Hobart Tasmania - most locations
+AU -3956+14352 Australia/Currie Tasmania - King Island
+AU -3749+14458 Australia/Melbourne Victoria
+AU -3352+15113 Australia/Sydney New South Wales - most locations
+AU -3157+14127 Australia/Broken_Hill New South Wales - Yancowinna
+AU -2728+15302 Australia/Brisbane Queensland - most locations
+AU -2016+14900 Australia/Lindeman Queensland - Holiday Islands
+AU -3455+13835 Australia/Adelaide South Australia
+AU -1228+13050 Australia/Darwin Northern Territory
+AU -3157+11551 Australia/Perth Western Australia - most locations
+AU -3143+12852 Australia/Eucla Western Australia - Eucla area
+AW +1230-06958 America/Aruba
+AX +6006+01957 Europe/Mariehamn
+AZ +4023+04951 Asia/Baku
+BA +4352+01825 Europe/Sarajevo
+BB +1306-05937 America/Barbados
+BD +2343+09025 Asia/Dhaka
+BE +5050+00420 Europe/Brussels
+BF +1222-00131 Africa/Ouagadougou
+BG +4241+02319 Europe/Sofia
+BH +2623+05035 Asia/Bahrain
+BI -0323+02922 Africa/Bujumbura
+BJ +0629+00237 Africa/Porto-Novo
+BL +1753-06251 America/St_Barthelemy
+BM +3217-06446 Atlantic/Bermuda
+BN +0456+11455 Asia/Brunei
+BO -1630-06809 America/La_Paz
+BR -0351-03225 America/Noronha Atlantic islands
+BR -0127-04829 America/Belem Amapa, E Para
+BR -0343-03830 America/Fortaleza NE Brazil (MA, PI, CE, RN, PB)
+BR -0803-03454 America/Recife Pernambuco
+BR -0712-04812 America/Araguaina Tocantins
+BR -0940-03543 America/Maceio Alagoas, Sergipe
+BR -1259-03831 America/Bahia Bahia
+BR -2332-04637 America/Sao_Paulo S & SE Brazil (GO, DF, MG, ES, RJ, SP, PR, SC, RS)
+BR -2027-05437 America/Campo_Grande Mato Grosso do Sul
+BR -1535-05605 America/Cuiaba Mato Grosso
+BR -0226-05452 America/Santarem W Para
+BR -0846-06354 America/Porto_Velho Rondonia
+BR +0249-06040 America/Boa_Vista Roraima
+BR -0308-06001 America/Manaus E Amazonas
+BR -0640-06952 America/Eirunepe W Amazonas
+BR -0958-06748 America/Rio_Branco Acre
+BS +2505-07721 America/Nassau
+BT +2728+08939 Asia/Thimphu
+BW -2545+02555 Africa/Gaborone
+BY +5354+02734 Europe/Minsk
+BZ +1730-08812 America/Belize
+CA +4734-05243 America/St_Johns Newfoundland Time, including SE Labrador
+CA +4439-06336 America/Halifax Atlantic Time - Nova Scotia (most places), PEI
+CA +4612-05957 America/Glace_Bay Atlantic Time - Nova Scotia - places that did not observe DST 1966-1971
+CA +4606-06447 America/Moncton Atlantic Time - New Brunswick
+CA +5320-06025 America/Goose_Bay Atlantic Time - Labrador - most locations
+CA +5125-05707 America/Blanc-Sablon Atlantic Standard Time - Quebec - Lower North Shore
+CA +4531-07334 America/Montreal Eastern Time - Quebec - most locations
+CA +4339-07923 America/Toronto Eastern Time - Ontario - most locations
+CA +4901-08816 America/Nipigon Eastern Time - Ontario & Quebec - places that did not observe DST 1967-1973
+CA +4823-08915 America/Thunder_Bay Eastern Time - Thunder Bay, Ontario
+CA +6344-06828 America/Iqaluit Eastern Time - east Nunavut - most locations
+CA +6608-06544 America/Pangnirtung Eastern Time - Pangnirtung, Nunavut
+CA +744144-0944945 America/Resolute Eastern Time - Resolute, Nunavut
+CA +484531-0913718 America/Atikokan Eastern Standard Time - Atikokan, Ontario and Southampton I, Nunavut
+CA +624900-0920459 America/Rankin_Inlet Central Time - central Nunavut
+CA +4953-09709 America/Winnipeg Central Time - Manitoba & west Ontario
+CA +4843-09434 America/Rainy_River Central Time - Rainy River & Fort Frances, Ontario
+CA +5024-10439 America/Regina Central Standard Time - Saskatchewan - most locations
+CA +5017-10750 America/Swift_Current Central Standard Time - Saskatchewan - midwest
+CA +5333-11328 America/Edmonton Mountain Time - Alberta, east British Columbia & west Saskatchewan
+CA +690650-1050310 America/Cambridge_Bay Mountain Time - west Nunavut
+CA +6227-11421 America/Yellowknife Mountain Time - central Northwest Territories
+CA +682059-1334300 America/Inuvik Mountain Time - west Northwest Territories
+CA +5946-12014 America/Dawson_Creek Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia
+CA +4916-12307 America/Vancouver Pacific Time - west British Columbia
+CA +6043-13503 America/Whitehorse Pacific Time - south Yukon
+CA +6404-13925 America/Dawson Pacific Time - north Yukon
+CC -1210+09655 Indian/Cocos
+CD -0418+01518 Africa/Kinshasa west Dem. Rep. of Congo
+CD -1140+02728 Africa/Lubumbashi east Dem. Rep. of Congo
+CF +0422+01835 Africa/Bangui
+CG -0416+01517 Africa/Brazzaville
+CH +4723+00832 Europe/Zurich
+CI +0519-00402 Africa/Abidjan
+CK -2114-15946 Pacific/Rarotonga
+CL -3327-07040 America/Santiago most locations
+CL -2709-10926 Pacific/Easter Easter Island & Sala y Gomez
+CM +0403+00942 Africa/Douala
+CN +3114+12128 Asia/Shanghai east China - Beijing, Guangdong, Shanghai, etc.
+CN +4545+12641 Asia/Harbin Heilongjiang (except Mohe), Jilin
+CN +2934+10635 Asia/Chongqing central China - Sichuan, Yunnan, Guangxi, Shaanxi, Guizhou, etc.
+CN +4348+08735 Asia/Urumqi most of Tibet & Xinjiang
+CN +3929+07559 Asia/Kashgar west Tibet & Xinjiang
+CO +0436-07405 America/Bogota
+CR +0956-08405 America/Costa_Rica
+CU +2308-08222 America/Havana
+CV +1455-02331 Atlantic/Cape_Verde
+CX -1025+10543 Indian/Christmas
+CY +3510+03322 Asia/Nicosia
+CZ +5005+01426 Europe/Prague
+DE +5230+01322 Europe/Berlin
+DJ +1136+04309 Africa/Djibouti
+DK +5540+01235 Europe/Copenhagen
+DM +1518-06124 America/Dominica
+DO +1828-06954 America/Santo_Domingo
+DZ +3647+00303 Africa/Algiers
+EC -0210-07950 America/Guayaquil mainland
+EC -0054-08936 Pacific/Galapagos Galapagos Islands
+EE +5925+02445 Europe/Tallinn
+EG +3003+03115 Africa/Cairo
+EH +2709-01312 Africa/El_Aaiun
+ER +1520+03853 Africa/Asmara
+ES +4024-00341 Europe/Madrid mainland
+ES +3553-00519 Africa/Ceuta Ceuta & Melilla
+ES +2806-01524 Atlantic/Canary Canary Islands
+ET +0902+03842 Africa/Addis_Ababa
+FI +6010+02458 Europe/Helsinki
+FJ -1808+17825 Pacific/Fiji
+FK -5142-05751 Atlantic/Stanley
+FM +0725+15147 Pacific/Truk Truk (Chuuk) and Yap
+FM +0658+15813 Pacific/Ponape Ponape (Pohnpei)
+FM +0519+16259 Pacific/Kosrae Kosrae
+FO +6201-00646 Atlantic/Faroe
+FR +4852+00220 Europe/Paris
+GA +0023+00927 Africa/Libreville
+GB +513030-0000731 Europe/London
+GD +1203-06145 America/Grenada
+GE +4143+04449 Asia/Tbilisi
+GF +0456-05220 America/Cayenne
+GG +4927-00232 Europe/Guernsey
+GH +0533-00013 Africa/Accra
+GI +3608-00521 Europe/Gibraltar
+GL +6411-05144 America/Godthab most locations
+GL +7646-01840 America/Danmarkshavn east coast, north of Scoresbysund
+GL +7029-02158 America/Scoresbysund Scoresbysund / Ittoqqortoormiit
+GL +7634-06847 America/Thule Thule / Pituffik
+GM +1328-01639 Africa/Banjul
+GN +0931-01343 Africa/Conakry
+GP +1614-06132 America/Guadeloupe
+GQ +0345+00847 Africa/Malabo
+GR +3758+02343 Europe/Athens
+GS -5416-03632 Atlantic/South_Georgia
+GT +1438-09031 America/Guatemala
+GU +1328+14445 Pacific/Guam
+GW +1151-01535 Africa/Bissau
+GY +0648-05810 America/Guyana
+HK +2217+11409 Asia/Hong_Kong
+HN +1406-08713 America/Tegucigalpa
+HR +4548+01558 Europe/Zagreb
+HT +1832-07220 America/Port-au-Prince
+HU +4730+01905 Europe/Budapest
+ID -0610+10648 Asia/Jakarta Java & Sumatra
+ID -0002+10920 Asia/Pontianak west & central Borneo
+ID -0507+11924 Asia/Makassar east & south Borneo, Celebes, Bali, Nusa Tengarra, west Timor
+ID -0232+14042 Asia/Jayapura Irian Jaya & the Moluccas
+IE +5320-00615 Europe/Dublin
+IL +3146+03514 Asia/Jerusalem
+IM +5409-00428 Europe/Isle_of_Man
+IN +2232+08822 Asia/Kolkata
+IO -0720+07225 Indian/Chagos
+IQ +3321+04425 Asia/Baghdad
+IR +3540+05126 Asia/Tehran
+IS +6409-02151 Atlantic/Reykjavik
+IT +4154+01229 Europe/Rome
+JE +4912-00207 Europe/Jersey
+JM +1800-07648 America/Jamaica
+JO +3157+03556 Asia/Amman
+JP +353916+1394441 Asia/Tokyo
+KE -0117+03649 Africa/Nairobi
+KG +4254+07436 Asia/Bishkek
+KH +1133+10455 Asia/Phnom_Penh
+KI +0125+17300 Pacific/Tarawa Gilbert Islands
+KI -0308-17105 Pacific/Enderbury Phoenix Islands
+KI +0152-15720 Pacific/Kiritimati Line Islands
+KM -1141+04316 Indian/Comoro
+KN +1718-06243 America/St_Kitts
+KP +3901+12545 Asia/Pyongyang
+KR +3733+12658 Asia/Seoul
+KW +2920+04759 Asia/Kuwait
+KY +1918-08123 America/Cayman
+KZ +4315+07657 Asia/Almaty most locations
+KZ +4448+06528 Asia/Qyzylorda Qyzylorda (Kyzylorda, Kzyl-Orda)
+KZ +5017+05710 Asia/Aqtobe Aqtobe (Aktobe)
+KZ +4431+05016 Asia/Aqtau Atyrau (Atirau, Gur'yev), Mangghystau (Mankistau)
+KZ +5113+05121 Asia/Oral West Kazakhstan
+LA +1758+10236 Asia/Vientiane
+LB +3353+03530 Asia/Beirut
+LC +1401-06100 America/St_Lucia
+LI +4709+00931 Europe/Vaduz
+LK +0656+07951 Asia/Colombo
+LR +0618-01047 Africa/Monrovia
+LS -2928+02730 Africa/Maseru
+LT +5441+02519 Europe/Vilnius
+LU +4936+00609 Europe/Luxembourg
+LV +5657+02406 Europe/Riga
+LY +3254+01311 Africa/Tripoli
+MA +3339-00735 Africa/Casablanca
+MC +4342+00723 Europe/Monaco
+MD +4700+02850 Europe/Chisinau
+ME +4226+01916 Europe/Podgorica
+MF +1804-06305 America/Marigot
+MG -1855+04731 Indian/Antananarivo
+MH +0709+17112 Pacific/Majuro most locations
+MH +0905+16720 Pacific/Kwajalein Kwajalein
+MK +4159+02126 Europe/Skopje
+ML +1239-00800 Africa/Bamako
+MM +1647+09610 Asia/Rangoon
+MN +4755+10653 Asia/Ulaanbaatar most locations
+MN +4801+09139 Asia/Hovd Bayan-Olgiy, Govi-Altai, Hovd, Uvs, Zavkhan
+MN +4804+11430 Asia/Choibalsan Dornod, Sukhbaatar
+MO +2214+11335 Asia/Macau
+MP +1512+14545 Pacific/Saipan
+MQ +1436-06105 America/Martinique
+MR +1806-01557 Africa/Nouakchott
+MS +1643-06213 America/Montserrat
+MT +3554+01431 Europe/Malta
+MU -2010+05730 Indian/Mauritius
+MV +0410+07330 Indian/Maldives
+MW -1547+03500 Africa/Blantyre
+MX +1924-09909 America/Mexico_City Central Time - most locations
+MX +2105-08646 America/Cancun Central Time - Quintana Roo
+MX +2058-08937 America/Merida Central Time - Campeche, Yucatan
+MX +2540-10019 America/Monterrey Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas
+MX +2313-10625 America/Mazatlan Mountain Time - S Baja, Nayarit, Sinaloa
+MX +2838-10605 America/Chihuahua Mountain Time - Chihuahua
+MX +2904-11058 America/Hermosillo Mountain Standard Time - Sonora
+MX +3232-11701 America/Tijuana Pacific Time
+MY +0310+10142 Asia/Kuala_Lumpur peninsular Malaysia
+MY +0133+11020 Asia/Kuching Sabah & Sarawak
+MZ -2558+03235 Africa/Maputo
+NA -2234+01706 Africa/Windhoek
+NC -2216+16530 Pacific/Noumea
+NE +1331+00207 Africa/Niamey
+NF -2903+16758 Pacific/Norfolk
+NG +0627+00324 Africa/Lagos
+NI +1209-08617 America/Managua
+NL +5222+00454 Europe/Amsterdam
+NO +5955+01045 Europe/Oslo
+NP +2743+08519 Asia/Katmandu
+NR -0031+16655 Pacific/Nauru
+NU -1901-16955 Pacific/Niue
+NZ -3652+17446 Pacific/Auckland most locations
+NZ -4357-17633 Pacific/Chatham Chatham Islands
+OM +2336+05835 Asia/Muscat
+PA +0858-07932 America/Panama
+PE -1203-07703 America/Lima
+PF -1732-14934 Pacific/Tahiti Society Islands
+PF -0900-13930 Pacific/Marquesas Marquesas Islands
+PF -2308-13457 Pacific/Gambier Gambier Islands
+PG -0930+14710 Pacific/Port_Moresby
+PH +1435+12100 Asia/Manila
+PK +2452+06703 Asia/Karachi
+PL +5215+02100 Europe/Warsaw
+PM +4703-05620 America/Miquelon
+PN -2504-13005 Pacific/Pitcairn
+PR +182806-0660622 America/Puerto_Rico
+PS +3130+03428 Asia/Gaza
+PT +3843-00908 Europe/Lisbon mainland
+PT +3238-01654 Atlantic/Madeira Madeira Islands
+PT +3744-02540 Atlantic/Azores Azores
+PW +0720+13429 Pacific/Palau
+PY -2516-05740 America/Asuncion
+QA +2517+05132 Asia/Qatar
+RE -2052+05528 Indian/Reunion
+RO +4426+02606 Europe/Bucharest
+RS +4450+02030 Europe/Belgrade
+RU +5443+02030 Europe/Kaliningrad Moscow-01 - Kaliningrad
+RU +5545+03735 Europe/Moscow Moscow+00 - west Russia
+RU +4844+04425 Europe/Volgograd Moscow+00 - Caspian Sea
+RU +5312+05009 Europe/Samara Moscow+01 - Samara, Udmurtia
+RU +5651+06036 Asia/Yekaterinburg Moscow+02 - Urals
+RU +5500+07324 Asia/Omsk Moscow+03 - west Siberia
+RU +5502+08255 Asia/Novosibirsk Moscow+03 - Novosibirsk
+RU +5601+09250 Asia/Krasnoyarsk Moscow+04 - Yenisei River
+RU +5216+10420 Asia/Irkutsk Moscow+05 - Lake Baikal
+RU +6200+12940 Asia/Yakutsk Moscow+06 - Lena River
+RU +4310+13156 Asia/Vladivostok Moscow+07 - Amur River
+RU +4658+14242 Asia/Sakhalin Moscow+07 - Sakhalin Island
+RU +5934+15048 Asia/Magadan Moscow+08 - Magadan
+RU +5301+15839 Asia/Kamchatka Moscow+09 - Kamchatka
+RU +6445+17729 Asia/Anadyr Moscow+10 - Bering Sea
+RW -0157+03004 Africa/Kigali
+SA +2438+04643 Asia/Riyadh
+SB -0932+16012 Pacific/Guadalcanal
+SC -0440+05528 Indian/Mahe
+SD +1536+03232 Africa/Khartoum
+SE +5920+01803 Europe/Stockholm
+SG +0117+10351 Asia/Singapore
+SH -1555-00542 Atlantic/St_Helena
+SI +4603+01431 Europe/Ljubljana
+SJ +7800+01600 Arctic/Longyearbyen
+SK +4809+01707 Europe/Bratislava
+SL +0830-01315 Africa/Freetown
+SM +4355+01228 Europe/San_Marino
+SN +1440-01726 Africa/Dakar
+SO +0204+04522 Africa/Mogadishu
+SR +0550-05510 America/Paramaribo
+ST +0020+00644 Africa/Sao_Tome
+SV +1342-08912 America/El_Salvador
+SY +3330+03618 Asia/Damascus
+SZ -2618+03106 Africa/Mbabane
+TC +2128-07108 America/Grand_Turk
+TD +1207+01503 Africa/Ndjamena
+TF -492110+0701303 Indian/Kerguelen
+TG +0608+00113 Africa/Lome
+TH +1345+10031 Asia/Bangkok
+TJ +3835+06848 Asia/Dushanbe
+TK -0922-17114 Pacific/Fakaofo
+TL -0833+12535 Asia/Dili
+TM +3757+05823 Asia/Ashgabat
+TN +3648+01011 Africa/Tunis
+TO -2110+17510 Pacific/Tongatapu
+TR +4101+02858 Europe/Istanbul
+TT +1039-06131 America/Port_of_Spain
+TV -0831+17913 Pacific/Funafuti
+TW +2503+12130 Asia/Taipei
+TZ -0648+03917 Africa/Dar_es_Salaam
+UA +5026+03031 Europe/Kiev most locations
+UA +4837+02218 Europe/Uzhgorod Ruthenia
+UA +4750+03510 Europe/Zaporozhye Zaporozh'ye, E Lugansk / Zaporizhia, E Luhansk
+UA +4457+03406 Europe/Simferopol central Crimea
+UG +0019+03225 Africa/Kampala
+UM +1645-16931 Pacific/Johnston Johnston Atoll
+UM +2813-17722 Pacific/Midway Midway Islands
+UM +1917+16637 Pacific/Wake Wake Island
+US +404251-0740023 America/New_York Eastern Time
+US +421953-0830245 America/Detroit Eastern Time - Michigan - most locations
+US +381515-0854534 America/Kentucky/Louisville Eastern Time - Kentucky - Louisville area
+US +364947-0845057 America/Kentucky/Monticello Eastern Time - Kentucky - Wayne County
+US +394606-0860929 America/Indiana/Indianapolis Eastern Time - Indiana - most locations
+US +384038-0873143 America/Indiana/Vincennes Eastern Time - Indiana - Daviess, Dubois, Knox & Martin Counties
+US +410305-0863611 America/Indiana/Winamac Eastern Time - Indiana - Pulaski County
+US +382232-0862041 America/Indiana/Marengo Eastern Time - Indiana - Crawford County
+US +382931-0871643 America/Indiana/Petersburg Eastern Time - Indiana - Pike County
+US +384452-0850402 America/Indiana/Vevay Eastern Time - Indiana - Switzerland County
+US +415100-0873900 America/Chicago Central Time
+US +375711-0864541 America/Indiana/Tell_City Central Time - Indiana - Perry County
+US +411745-0863730 America/Indiana/Knox Central Time - Indiana - Starke County
+US +450628-0873651 America/Menominee Central Time - Michigan - Dickinson, Gogebic, Iron & Menominee Counties
+US +470659-1011757 America/North_Dakota/Center Central Time - North Dakota - Oliver County
+US +465042-1012439 America/North_Dakota/New_Salem Central Time - North Dakota - Morton County (except Mandan area)
+US +394421-1045903 America/Denver Mountain Time
+US +433649-1161209 America/Boise Mountain Time - south Idaho & east Oregon
+US +364708-1084111 America/Shiprock Mountain Time - Navajo
+US +332654-1120424 America/Phoenix Mountain Standard Time - Arizona
+US +340308-1181434 America/Los_Angeles Pacific Time
+US +611305-1495401 America/Anchorage Alaska Time
+US +581807-1342511 America/Juneau Alaska Time - Alaska panhandle
+US +593249-1394338 America/Yakutat Alaska Time - Alaska panhandle neck
+US +643004-1652423 America/Nome Alaska Time - west Alaska
+US +515248-1763929 America/Adak Aleutian Islands
+US +211825-1575130 Pacific/Honolulu Hawaii
+UY -3453-05611 America/Montevideo
+UZ +3940+06648 Asia/Samarkand west Uzbekistan
+UZ +4120+06918 Asia/Tashkent east Uzbekistan
+VA +4154+01227 Europe/Vatican
+VC +1309-06114 America/St_Vincent
+VE +1030-06656 America/Caracas
+VG +1827-06437 America/Tortola
+VI +1821-06456 America/St_Thomas
+VN +1045+10640 Asia/Ho_Chi_Minh
+VU -1740+16825 Pacific/Efate
+WF -1318-17610 Pacific/Wallis
+WS -1350-17144 Pacific/Apia
+YE +1245+04512 Asia/Aden
+YT -1247+04514 Indian/Mayotte
+ZA -2615+02800 Africa/Johannesburg
+ZM -1525+02817 Africa/Lusaka
+ZW -1750+03103 Africa/Harare
OpenPOWER on IntegriCloud